Built motion from commit d7b3a6a7.|2.6.10
authorsupport <support@xcally.com>
Tue, 17 May 2022 12:29:05 +0000 (12:29 +0000)
committersupport <support@xcally.com>
Tue, 17 May 2022 12:29:05 +0000 (12:29 +0000)
1237 files changed:
apidoc/api_project.js
apidoc/api_project.json
public/app/errors/404/i18n/et.json
public/app/errors/500/i18n/et.json
public/app/footer/i18n/et.json
public/app/forgot/i18n/et.json
public/app/header/i18n/et.json
public/app/login/i18n/et.json
public/app/main/apps/analytics/i18n/et.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/et.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/et.json
public/app/main/apps/contactmanager/i18n/et.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/it.json
public/app/main/apps/dashboards/i18n/sv.json
public/app/main/apps/fax/i18n/et.json
public/app/main/apps/help/i18n/et.json
public/app/main/apps/integrations/i18n/et.json
public/app/main/apps/jscripty/i18n/et.json
public/app/main/apps/mail/i18n/et.json
public/app/main/apps/marketplace/i18n/et.json
public/app/main/apps/motiondialer/i18n/et.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/openchannel/i18n/et.json
public/app/main/apps/plugins/i18n/et.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/sms/i18n/et.json
public/app/main/apps/staff/i18n/et.json
public/app/main/apps/tools/i18n/et.json
public/app/main/apps/video/i18n/et.json
public/app/main/apps/voice/i18n/et.json
public/app/main/apps/whatsapp/i18n/et.json
public/app/quick-panel/i18n/et.json
public/app/reset/i18n/et.json
public/index.html
public/scripts/app.231049c5.js [moved from public/scripts/app.e59f835e.js with 52% similarity]
public/styles/app.fabf8255.css [moved from public/styles/app.d45f5a7f.css with 97% similarity]
server/api/action/action.attributes.js
server/api/action/action.controller.js
server/api/action/action.model.js
server/api/action/action.rpc.js
server/api/action/index.js
server/api/analyticCustomReport/analyticCustomReport.attributes.js
server/api/analyticCustomReport/analyticCustomReport.controller.js
server/api/analyticCustomReport/analyticCustomReport.model.js
server/api/analyticCustomReport/analyticCustomReport.rpc.js
server/api/analyticCustomReport/index.js
server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
server/api/analyticDefaultReport/analyticDefaultReport.controller.js
server/api/analyticDefaultReport/analyticDefaultReport.model.js
server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
server/api/analyticDefaultReport/index.js
server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
server/api/analyticExtractedReport/analyticExtractedReport.controller.js
server/api/analyticExtractedReport/analyticExtractedReport.model.js
server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
server/api/analyticExtractedReport/index.js
server/api/analyticFieldReport/analyticFieldReport.attributes.js
server/api/analyticFieldReport/analyticFieldReport.controller.js
server/api/analyticFieldReport/analyticFieldReport.model.js
server/api/analyticFieldReport/analyticFieldReport.rpc.js
server/api/analyticFieldReport/index.js
server/api/analyticMetric/analyticMetric.attributes.js
server/api/analyticMetric/analyticMetric.controller.js
server/api/analyticMetric/analyticMetric.model.js
server/api/analyticMetric/analyticMetric.rpc.js
server/api/analyticMetric/index.js
server/api/analyticTreeReport/analyticTreeReport.attributes.js
server/api/analyticTreeReport/analyticTreeReport.controller.js
server/api/analyticTreeReport/analyticTreeReport.model.js
server/api/analyticTreeReport/analyticTreeReport.rpc.js
server/api/analyticTreeReport/index.js
server/api/attachment/attachment.attributes.js
server/api/attachment/attachment.controller.js
server/api/attachment/attachment.model.js
server/api/attachment/attachment.rpc.js
server/api/attachment/index.js
server/api/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/index.js
server/api/authGoogle/authGoogle.controller.js
server/api/authGoogle/index.js
server/api/authLocal/authLocal.controller.js
server/api/authLocal/index.js
server/api/automation/automation.attributes.js
server/api/automation/automation.controller.js
server/api/automation/automation.model.js
server/api/automation/automation.rpc.js
server/api/automation/index.js
server/api/campaign/campaign.attributes.js
server/api/campaign/campaign.controller.js
server/api/campaign/campaign.model.js
server/api/campaign/campaign.rpc.js
server/api/campaign/index.js
server/api/cannedAnswer/cannedAnswer.attributes.js
server/api/cannedAnswer/cannedAnswer.controller.js
server/api/cannedAnswer/cannedAnswer.model.js
server/api/cannedAnswer/cannedAnswer.rpc.js
server/api/cannedAnswer/index.js
server/api/cdr/cdr.attributes.js
server/api/cdr/cdr.controller.js
server/api/cdr/cdr.model.js
server/api/cdr/cdr.rpc.js
server/api/cdr/index.js
server/api/chatApplication/chatApplication.attributes.js
server/api/chatApplication/chatApplication.controller.js
server/api/chatApplication/chatApplication.model.js
server/api/chatApplication/chatApplication.rpc.js
server/api/chatApplication/index.js
server/api/chatGroup/chatGroup.attributes.js
server/api/chatGroup/chatGroup.controller.js
server/api/chatGroup/chatGroup.events.js
server/api/chatGroup/chatGroup.model.js
server/api/chatGroup/chatGroup.rpc.js
server/api/chatGroup/chatGroup.socket.js
server/api/chatGroup/index.js
server/api/chatInteraction/chatInteraction.attributes.js
server/api/chatInteraction/chatInteraction.controller.js
server/api/chatInteraction/chatInteraction.events.js
server/api/chatInteraction/chatInteraction.model.js
server/api/chatInteraction/chatInteraction.rpc.js
server/api/chatInteraction/chatInteraction.socket.js
server/api/chatInteraction/index.js
server/api/chatInternalMessage/chatInternalMessage.attributes.js
server/api/chatInternalMessage/chatInternalMessage.controller.js
server/api/chatInternalMessage/chatInternalMessage.events.js
server/api/chatInternalMessage/chatInternalMessage.model.js
server/api/chatInternalMessage/chatInternalMessage.rpc.js
server/api/chatInternalMessage/chatInternalMessage.socket.js
server/api/chatInternalMessage/index.js
server/api/chatMessage/chatMessage.attributes.js
server/api/chatMessage/chatMessage.controller.js
server/api/chatMessage/chatMessage.events.js
server/api/chatMessage/chatMessage.model.js
server/api/chatMessage/chatMessage.rpc.js
server/api/chatMessage/chatMessage.socket.js
server/api/chatMessage/index.js
server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
server/api/chatOfflineMessage/chatOfflineMessage.controller.js
server/api/chatOfflineMessage/chatOfflineMessage.events.js
server/api/chatOfflineMessage/chatOfflineMessage.model.js
server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
server/api/chatOfflineMessage/index.js
server/api/chatProactiveAction/chatProactiveAction.attributes.js
server/api/chatProactiveAction/chatProactiveAction.controller.js
server/api/chatProactiveAction/chatProactiveAction.model.js
server/api/chatProactiveAction/chatProactiveAction.rpc.js
server/api/chatProactiveAction/index.js
server/api/chatQueue/chatQueue.attributes.js
server/api/chatQueue/chatQueue.controller.js
server/api/chatQueue/chatQueue.events.js
server/api/chatQueue/chatQueue.model.js
server/api/chatQueue/chatQueue.rpc.js
server/api/chatQueue/chatQueue.socket.js
server/api/chatQueue/index.js
server/api/chatQueueReport/chatQueueReport.attributes.js
server/api/chatQueueReport/chatQueueReport.controller.js
server/api/chatQueueReport/chatQueueReport.model.js
server/api/chatQueueReport/chatQueueReport.rpc.js
server/api/chatQueueReport/index.js
server/api/chatTransferReport/chatTransferReport.attributes.js
server/api/chatTransferReport/chatTransferReport.controller.js
server/api/chatTransferReport/chatTransferReport.model.js
server/api/chatTransferReport/chatTransferReport.rpc.js
server/api/chatTransferReport/index.js
server/api/chatWebsite/chatWebsite.attributes.js
server/api/chatWebsite/chatWebsite.controller.js
server/api/chatWebsite/chatWebsite.events.js
server/api/chatWebsite/chatWebsite.model.js
server/api/chatWebsite/chatWebsite.rpc.js
server/api/chatWebsite/chatWebsite.socket.js
server/api/chatWebsite/index.js
server/api/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.js
server/api/cloudProvider/cloudProvider.rpc.js
server/api/cloudProvider/index.js
server/api/cmCompany/cmCompany.attributes.js
server/api/cmCompany/cmCompany.controller.js
server/api/cmCompany/cmCompany.model.js
server/api/cmCompany/cmCompany.rpc.js
server/api/cmCompany/index.js
server/api/cmContact/cmContact.attributes.js
server/api/cmContact/cmContact.controller.js
server/api/cmContact/cmContact.events.js
server/api/cmContact/cmContact.model.js
server/api/cmContact/cmContact.rpc.js
server/api/cmContact/cmContact.socket.js
server/api/cmContact/index.js
server/api/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/index.js
server/api/cmCustomField/cmCustomField.attributes.js
server/api/cmCustomField/cmCustomField.controller.js
server/api/cmCustomField/cmCustomField.model.js
server/api/cmCustomField/cmCustomField.rpc.js
server/api/cmCustomField/index.js
server/api/cmHopper/cmHopper.attributes.js
server/api/cmHopper/cmHopper.controller.js
server/api/cmHopper/cmHopper.model.js
server/api/cmHopper/cmHopper.rpc.js
server/api/cmHopper/index.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/index.js
server/api/cmHopperBlack/cmHopperBlack.attributes.js
server/api/cmHopperBlack/cmHopperBlack.controller.js
server/api/cmHopperBlack/cmHopperBlack.model.js
server/api/cmHopperBlack/cmHopperBlack.rpc.js
server/api/cmHopperBlack/index.js
server/api/cmHopperFinal/cmHopperFinal.attributes.js
server/api/cmHopperFinal/cmHopperFinal.controller.js
server/api/cmHopperFinal/cmHopperFinal.model.js
server/api/cmHopperFinal/cmHopperFinal.rpc.js
server/api/cmHopperFinal/index.js
server/api/cmHopperHistory/cmHopperHistory.attributes.js
server/api/cmHopperHistory/cmHopperHistory.controller.js
server/api/cmHopperHistory/cmHopperHistory.model.js
server/api/cmHopperHistory/cmHopperHistory.rpc.js
server/api/cmHopperHistory/index.js
server/api/cmList/cmList.attributes.js
server/api/cmList/cmList.controller.js
server/api/cmList/cmList.events.js
server/api/cmList/cmList.model.js
server/api/cmList/cmList.rpc.js
server/api/cmList/cmList.socket.js
server/api/cmList/index.js
server/api/condition/condition.attributes.js
server/api/condition/condition.controller.js
server/api/condition/condition.model.js
server/api/condition/condition.rpc.js
server/api/condition/index.js
server/api/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/index.js
server/api/dashboard/dashboard.attributes.js
server/api/dashboard/dashboard.controller.js
server/api/dashboard/dashboard.events.js
server/api/dashboard/dashboard.model.js
server/api/dashboard/dashboard.rpc.js
server/api/dashboard/dashboard.socket.js
server/api/dashboard/index.js
server/api/dashboardItem/dashboardItem.attributes.js
server/api/dashboardItem/dashboardItem.controller.js
server/api/dashboardItem/dashboardItem.events.js
server/api/dashboardItem/dashboardItem.model.js
server/api/dashboardItem/dashboardItem.rpc.js
server/api/dashboardItem/dashboardItem.socket.js
server/api/dashboardItem/index.js
server/api/disposition/disposition.attributes.js
server/api/disposition/disposition.controller.js
server/api/disposition/disposition.model.js
server/api/disposition/disposition.rpc.js
server/api/disposition/index.js
server/api/faxAccount/faxAccount.attributes.js
server/api/faxAccount/faxAccount.controller.js
server/api/faxAccount/faxAccount.events.js
server/api/faxAccount/faxAccount.model.js
server/api/faxAccount/faxAccount.rpc.js
server/api/faxAccount/faxAccount.socket.js
server/api/faxAccount/index.js
server/api/faxApplication/faxApplication.attributes.js
server/api/faxApplication/faxApplication.controller.js
server/api/faxApplication/faxApplication.model.js
server/api/faxApplication/faxApplication.rpc.js
server/api/faxApplication/index.js
server/api/faxInteraction/faxInteraction.attributes.js
server/api/faxInteraction/faxInteraction.controller.js
server/api/faxInteraction/faxInteraction.events.js
server/api/faxInteraction/faxInteraction.model.js
server/api/faxInteraction/faxInteraction.rpc.js
server/api/faxInteraction/faxInteraction.socket.js
server/api/faxInteraction/index.js
server/api/faxMessage/faxMessage.attributes.js
server/api/faxMessage/faxMessage.controller.js
server/api/faxMessage/faxMessage.events.js
server/api/faxMessage/faxMessage.model.js
server/api/faxMessage/faxMessage.rpc.js
server/api/faxMessage/faxMessage.socket.js
server/api/faxMessage/index.js
server/api/faxQueue/faxQueue.attributes.js
server/api/faxQueue/faxQueue.controller.js
server/api/faxQueue/faxQueue.events.js
server/api/faxQueue/faxQueue.model.js
server/api/faxQueue/faxQueue.rpc.js
server/api/faxQueue/faxQueue.socket.js
server/api/faxQueue/index.js
server/api/faxQueueReport/faxQueueReport.attributes.js
server/api/faxQueueReport/faxQueueReport.controller.js
server/api/faxQueueReport/faxQueueReport.model.js
server/api/faxQueueReport/faxQueueReport.rpc.js
server/api/faxQueueReport/index.js
server/api/faxTransferReport/faxTransferReport.attributes.js
server/api/faxTransferReport/faxTransferReport.controller.js
server/api/faxTransferReport/faxTransferReport.model.js
server/api/faxTransferReport/faxTransferReport.rpc.js
server/api/faxTransferReport/index.js
server/api/intDeskAccount/index.js
server/api/intDeskAccount/intDeskAccount.attributes.js
server/api/intDeskAccount/intDeskAccount.controller.js
server/api/intDeskAccount/intDeskAccount.model.js
server/api/intDeskAccount/intDeskAccount.rpc.js
server/api/intDeskConfiguration/index.js
server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
server/api/intDeskConfiguration/intDeskConfiguration.controller.js
server/api/intDeskConfiguration/intDeskConfiguration.model.js
server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
server/api/intDeskField/index.js
server/api/intDeskField/intDeskField.attributes.js
server/api/intDeskField/intDeskField.controller.js
server/api/intDeskField/intDeskField.model.js
server/api/intDeskField/intDeskField.rpc.js
server/api/intDynamics365Account/index.js
server/api/intDynamics365Account/intDynamics365Account.attributes.js
server/api/intDynamics365Account/intDynamics365Account.controller.js
server/api/intDynamics365Account/intDynamics365Account.model.js
server/api/intDynamics365Account/intDynamics365Account.rpc.js
server/api/intDynamics365Configuration/index.js
server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
server/api/intDynamics365Field/index.js
server/api/intDynamics365Field/intDynamics365Field.attributes.js
server/api/intDynamics365Field/intDynamics365Field.controller.js
server/api/intDynamics365Field/intDynamics365Field.model.js
server/api/intDynamics365Field/intDynamics365Field.rpc.js
server/api/intFreshdeskAccount/index.js
server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
server/api/intFreshdeskConfiguration/index.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
server/api/intFreshdeskField/index.js
server/api/intFreshdeskField/intFreshdeskField.attributes.js
server/api/intFreshdeskField/intFreshdeskField.controller.js
server/api/intFreshdeskField/intFreshdeskField.model.js
server/api/intFreshdeskField/intFreshdeskField.rpc.js
server/api/intFreshsalesAccount/index.js
server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
server/api/intFreshsalesConfiguration/index.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
server/api/intFreshsalesField/index.js
server/api/intFreshsalesField/intFreshsalesField.attributes.js
server/api/intFreshsalesField/intFreshsalesField.controller.js
server/api/intFreshsalesField/intFreshsalesField.model.js
server/api/intFreshsalesField/intFreshsalesField.rpc.js
server/api/intSalesforceAccount/index.js
server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
server/api/intSalesforceAccount/intSalesforceAccount.controller.js
server/api/intSalesforceAccount/intSalesforceAccount.model.js
server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
server/api/intSalesforceConfiguration/index.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
server/api/intSalesforceField/index.js
server/api/intSalesforceField/intSalesforceField.attributes.js
server/api/intSalesforceField/intSalesforceField.controller.js
server/api/intSalesforceField/intSalesforceField.model.js
server/api/intSalesforceField/intSalesforceField.rpc.js
server/api/intServicenowAccount/index.js
server/api/intServicenowAccount/intServicenowAccount.attributes.js
server/api/intServicenowAccount/intServicenowAccount.controller.js
server/api/intServicenowAccount/intServicenowAccount.model.js
server/api/intServicenowAccount/intServicenowAccount.rpc.js
server/api/intServicenowConfiguration/index.js
server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
server/api/intServicenowField/index.js
server/api/intServicenowField/intServicenowField.attributes.js
server/api/intServicenowField/intServicenowField.controller.js
server/api/intServicenowField/intServicenowField.model.js
server/api/intServicenowField/intServicenowField.rpc.js
server/api/intSugarcrmAccount/index.js
server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
server/api/intSugarcrmConfiguration/index.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
server/api/intSugarcrmField/index.js
server/api/intSugarcrmField/intSugarcrmField.attributes.js
server/api/intSugarcrmField/intSugarcrmField.controller.js
server/api/intSugarcrmField/intSugarcrmField.model.js
server/api/intSugarcrmField/intSugarcrmField.rpc.js
server/api/intVtigerAccount/index.js
server/api/intVtigerAccount/intVtigerAccount.attributes.js
server/api/intVtigerAccount/intVtigerAccount.controller.js
server/api/intVtigerAccount/intVtigerAccount.model.js
server/api/intVtigerAccount/intVtigerAccount.rpc.js
server/api/intVtigerConfiguration/index.js
server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
server/api/intVtigerField/index.js
server/api/intVtigerField/intVtigerField.attributes.js
server/api/intVtigerField/intVtigerField.controller.js
server/api/intVtigerField/intVtigerField.model.js
server/api/intVtigerField/intVtigerField.rpc.js
server/api/intZendeskAccount/index.js
server/api/intZendeskAccount/intZendeskAccount.attributes.js
server/api/intZendeskAccount/intZendeskAccount.controller.js
server/api/intZendeskAccount/intZendeskAccount.model.js
server/api/intZendeskAccount/intZendeskAccount.rpc.js
server/api/intZendeskConfiguration/index.js
server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
server/api/intZendeskField/index.js
server/api/intZendeskField/intZendeskField.attributes.js
server/api/intZendeskField/intZendeskField.controller.js
server/api/intZendeskField/intZendeskField.model.js
server/api/intZendeskField/intZendeskField.rpc.js
server/api/intZohoAccount/index.js
server/api/intZohoAccount/intZohoAccount.attributes.js
server/api/intZohoAccount/intZohoAccount.controller.js
server/api/intZohoAccount/intZohoAccount.model.js
server/api/intZohoAccount/intZohoAccount.rpc.js
server/api/intZohoConfiguration/index.js
server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
server/api/intZohoConfiguration/intZohoConfiguration.controller.js
server/api/intZohoConfiguration/intZohoConfiguration.model.js
server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
server/api/intZohoField/index.js
server/api/intZohoField/intZohoField.attributes.js
server/api/intZohoField/intZohoField.controller.js
server/api/intZohoField/intZohoField.model.js
server/api/intZohoField/intZohoField.rpc.js
server/api/integration/index.js
server/api/integration/integration.attributes.js
server/api/integration/integration.controller.js
server/api/integration/integration.model.js
server/api/integration/integration.rpc.js
server/api/integrationReport/index.js
server/api/integrationReport/integrationReport.attributes.js
server/api/integrationReport/integrationReport.controller.js
server/api/integrationReport/integrationReport.model.js
server/api/integrationReport/integrationReport.rpc.js
server/api/interval/index.js
server/api/interval/interval.attributes.js
server/api/interval/interval.controller.js
server/api/interval/interval.model.js
server/api/interval/interval.rpc.js
server/api/jira/index.js
server/api/jira/jira.controller.js
server/api/jscriptyAnswerReport/index.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
server/api/jscriptyProject/index.js
server/api/jscriptyProject/jscriptyProject.attributes.js
server/api/jscriptyProject/jscriptyProject.controller.js
server/api/jscriptyProject/jscriptyProject.model.js
server/api/jscriptyProject/jscriptyProject.rpc.js
server/api/jscriptyQuestionReport/index.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
server/api/jscriptySessionReport/index.js
server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
server/api/jscriptySessionReport/jscriptySessionReport.controller.js
server/api/jscriptySessionReport/jscriptySessionReport.model.js
server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
server/api/license/index.js
server/api/license/license.attributes.js
server/api/license/license.controller.js
server/api/license/license.model.js
server/api/license/license.rpc.js
server/api/mailAccount/index.js
server/api/mailAccount/mailAccount.attributes.js
server/api/mailAccount/mailAccount.controller.js
server/api/mailAccount/mailAccount.events.js
server/api/mailAccount/mailAccount.model.js
server/api/mailAccount/mailAccount.rpc.js
server/api/mailAccount/mailAccount.socket.js
server/api/mailApplication/index.js
server/api/mailApplication/mailApplication.attributes.js
server/api/mailApplication/mailApplication.controller.js
server/api/mailApplication/mailApplication.model.js
server/api/mailApplication/mailApplication.rpc.js
server/api/mailInteraction/index.js
server/api/mailInteraction/mailInteraction.attributes.js
server/api/mailInteraction/mailInteraction.controller.js
server/api/mailInteraction/mailInteraction.events.js
server/api/mailInteraction/mailInteraction.model.js
server/api/mailInteraction/mailInteraction.rpc.js
server/api/mailInteraction/mailInteraction.socket.js
server/api/mailMessage/index.js
server/api/mailMessage/mailMessage.attributes.js
server/api/mailMessage/mailMessage.controller.js
server/api/mailMessage/mailMessage.events.js
server/api/mailMessage/mailMessage.model.js
server/api/mailMessage/mailMessage.rpc.js
server/api/mailMessage/mailMessage.socket.js
server/api/mailQueue/index.js
server/api/mailQueue/mailQueue.attributes.js
server/api/mailQueue/mailQueue.controller.js
server/api/mailQueue/mailQueue.events.js
server/api/mailQueue/mailQueue.model.js
server/api/mailQueue/mailQueue.rpc.js
server/api/mailQueue/mailQueue.socket.js
server/api/mailQueueReport/index.js
server/api/mailQueueReport/mailQueueReport.attributes.js
server/api/mailQueueReport/mailQueueReport.controller.js
server/api/mailQueueReport/mailQueueReport.model.js
server/api/mailQueueReport/mailQueueReport.rpc.js
server/api/mailServerIn/index.js
server/api/mailServerIn/mailServerIn.attributes.js
server/api/mailServerIn/mailServerIn.model.js
server/api/mailServerIn/mailServerIn.rpc.js
server/api/mailServerOut/index.js
server/api/mailServerOut/mailServerOut.attributes.js
server/api/mailServerOut/mailServerOut.controller.js
server/api/mailServerOut/mailServerOut.model.js
server/api/mailServerOut/mailServerOut.rpc.js
server/api/mailSubstatus/index.js
server/api/mailSubstatus/mailSubstatus.attributes.js
server/api/mailSubstatus/mailSubstatus.controller.js
server/api/mailSubstatus/mailSubstatus.events.js
server/api/mailSubstatus/mailSubstatus.model.js
server/api/mailSubstatus/mailSubstatus.rpc.js
server/api/mailTransferReport/index.js
server/api/mailTransferReport/mailTransferReport.attributes.js
server/api/mailTransferReport/mailTransferReport.controller.js
server/api/mailTransferReport/mailTransferReport.model.js
server/api/mailTransferReport/mailTransferReport.rpc.js
server/api/memberReport/index.js
server/api/memberReport/memberReport.attributes.js
server/api/memberReport/memberReport.controller.js
server/api/memberReport/memberReport.model.js
server/api/memberReport/memberReport.rpc.js
server/api/migration/index.js
server/api/migration/migration.attributes.js
server/api/migration/migration.controller.js
server/api/migration/migration.model.js
server/api/migration/migration.rpc.js
server/api/network/index.js
server/api/network/network.attributes.js
server/api/network/network.controller.js
server/api/network/network.model.js
server/api/network/network.rpc.js
server/api/openchannelAccount/index.js
server/api/openchannelAccount/openchannelAccount.attributes.js
server/api/openchannelAccount/openchannelAccount.controller.js
server/api/openchannelAccount/openchannelAccount.events.js
server/api/openchannelAccount/openchannelAccount.model.js
server/api/openchannelAccount/openchannelAccount.rpc.js
server/api/openchannelAccount/openchannelAccount.socket.js
server/api/openchannelApplication/index.js
server/api/openchannelApplication/openchannelApplication.attributes.js
server/api/openchannelApplication/openchannelApplication.controller.js
server/api/openchannelApplication/openchannelApplication.model.js
server/api/openchannelApplication/openchannelApplication.rpc.js
server/api/openchannelInteraction/index.js
server/api/openchannelInteraction/openchannelInteraction.attributes.js
server/api/openchannelInteraction/openchannelInteraction.controller.js
server/api/openchannelInteraction/openchannelInteraction.events.js
server/api/openchannelInteraction/openchannelInteraction.model.js
server/api/openchannelInteraction/openchannelInteraction.rpc.js
server/api/openchannelInteraction/openchannelInteraction.socket.js
server/api/openchannelMessage/index.js
server/api/openchannelMessage/openchannelMessage.attributes.js
server/api/openchannelMessage/openchannelMessage.controller.js
server/api/openchannelMessage/openchannelMessage.events.js
server/api/openchannelMessage/openchannelMessage.model.js
server/api/openchannelMessage/openchannelMessage.rpc.js
server/api/openchannelMessage/openchannelMessage.socket.js
server/api/openchannelQueue/index.js
server/api/openchannelQueue/openchannelQueue.attributes.js
server/api/openchannelQueue/openchannelQueue.controller.js
server/api/openchannelQueue/openchannelQueue.events.js
server/api/openchannelQueue/openchannelQueue.model.js
server/api/openchannelQueue/openchannelQueue.rpc.js
server/api/openchannelQueue/openchannelQueue.socket.js
server/api/openchannelQueueReport/index.js
server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
server/api/openchannelQueueReport/openchannelQueueReport.controller.js
server/api/openchannelQueueReport/openchannelQueueReport.model.js
server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
server/api/openchannelTransferReport/index.js
server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
server/api/openchannelTransferReport/openchannelTransferReport.controller.js
server/api/openchannelTransferReport/openchannelTransferReport.model.js
server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
server/api/pause/index.js
server/api/pause/pause.attributes.js
server/api/pause/pause.controller.js
server/api/pause/pause.model.js
server/api/pause/pause.rpc.js
server/api/plugin/index.js
server/api/plugin/plugin.attributes.js
server/api/plugin/plugin.controller.js
server/api/plugin/plugin.events.js
server/api/plugin/plugin.model.js
server/api/plugin/plugin.rpc.js
server/api/plugin/plugin.socket.js
server/api/pm2/index.js
server/api/pm2/pm2.controller.js
server/api/realtime/index.js
server/api/realtime/realtime.controller.js
server/api/reportAgentPreview/index.js
server/api/reportAgentPreview/reportAgentPreview.attributes.js
server/api/reportAgentPreview/reportAgentPreview.model.js
server/api/reportAgentPreview/reportAgentPreview.rpc.js
server/api/rpc/index.js
server/api/rpc/rpc.controller.js
server/api/schedule/index.js
server/api/schedule/schedule.attributes.js
server/api/schedule/schedule.controller.js
server/api/schedule/schedule.model.js
server/api/schedule/schedule.rpc.js
server/api/screenRecording/index.js
server/api/screenRecording/screenRecording.attributes.js
server/api/screenRecording/screenRecording.controller.js
server/api/screenRecording/screenRecording.model.js
server/api/screenRecording/screenRecording.rpc.js
server/api/setting/index.js
server/api/setting/setting.attributes.js
server/api/setting/setting.controller.js
server/api/setting/setting.model.js
server/api/setting/setting.rpc.js
server/api/smsAccount/index.js
server/api/smsAccount/smsAccount.attributes.js
server/api/smsAccount/smsAccount.controller.js
server/api/smsAccount/smsAccount.events.js
server/api/smsAccount/smsAccount.model.js
server/api/smsAccount/smsAccount.rpc.js
server/api/smsAccount/smsAccount.socket.js
server/api/smsApplication/index.js
server/api/smsApplication/smsApplication.attributes.js
server/api/smsApplication/smsApplication.controller.js
server/api/smsApplication/smsApplication.model.js
server/api/smsApplication/smsApplication.rpc.js
server/api/smsInteraction/index.js
server/api/smsInteraction/smsInteraction.attributes.js
server/api/smsInteraction/smsInteraction.controller.js
server/api/smsInteraction/smsInteraction.events.js
server/api/smsInteraction/smsInteraction.model.js
server/api/smsInteraction/smsInteraction.rpc.js
server/api/smsInteraction/smsInteraction.socket.js
server/api/smsMessage/index.js
server/api/smsMessage/smsMessage.attributes.js
server/api/smsMessage/smsMessage.controller.js
server/api/smsMessage/smsMessage.events.js
server/api/smsMessage/smsMessage.model.js
server/api/smsMessage/smsMessage.rpc.js
server/api/smsMessage/smsMessage.socket.js
server/api/smsQueue/index.js
server/api/smsQueue/smsQueue.attributes.js
server/api/smsQueue/smsQueue.controller.js
server/api/smsQueue/smsQueue.events.js
server/api/smsQueue/smsQueue.model.js
server/api/smsQueue/smsQueue.rpc.js
server/api/smsQueue/smsQueue.socket.js
server/api/smsQueueReport/index.js
server/api/smsQueueReport/smsQueueReport.attributes.js
server/api/smsQueueReport/smsQueueReport.controller.js
server/api/smsQueueReport/smsQueueReport.model.js
server/api/smsQueueReport/smsQueueReport.rpc.js
server/api/smsTransferReport/index.js
server/api/smsTransferReport/smsTransferReport.attributes.js
server/api/smsTransferReport/smsTransferReport.controller.js
server/api/smsTransferReport/smsTransferReport.model.js
server/api/smsTransferReport/smsTransferReport.rpc.js
server/api/sound/index.js
server/api/sound/sound.attributes.js
server/api/sound/sound.controller.js
server/api/sound/sound.model.js
server/api/sound/sound.rpc.js
server/api/squareMessage/index.js
server/api/squareMessage/squareMessage.attributes.js
server/api/squareMessage/squareMessage.controller.js
server/api/squareMessage/squareMessage.model.js
server/api/squareMessage/squareMessage.rpc.js
server/api/squareOdbc/index.js
server/api/squareOdbc/squareOdbc.attributes.js
server/api/squareOdbc/squareOdbc.controller.js
server/api/squareOdbc/squareOdbc.model.js
server/api/squareOdbc/squareOdbc.rpc.js
server/api/squareProject/index.js
server/api/squareProject/squareProject.attributes.js
server/api/squareProject/squareProject.controller.js
server/api/squareProject/squareProject.events.js
server/api/squareProject/squareProject.model.js
server/api/squareProject/squareProject.rpc.js
server/api/squareProject/squareProject.socket.js
server/api/squareRecording/index.js
server/api/squareRecording/squareRecording.attributes.js
server/api/squareRecording/squareRecording.controller.js
server/api/squareRecording/squareRecording.model.js
server/api/squareRecording/squareRecording.rpc.js
server/api/squareReport/index.js
server/api/squareReport/squareReport.attributes.js
server/api/squareReport/squareReport.controller.js
server/api/squareReport/squareReport.model.js
server/api/squareReport/squareReport.rpc.js
server/api/squareReportDetail/index.js
server/api/squareReportDetail/squareReportDetail.attributes.js
server/api/squareReportDetail/squareReportDetail.controller.js
server/api/squareReportDetail/squareReportDetail.model.js
server/api/squareReportDetail/squareReportDetail.rpc.js
server/api/system/index.js
server/api/system/system.controller.js
server/api/tag/index.js
server/api/tag/tag.attributes.js
server/api/tag/tag.controller.js
server/api/tag/tag.model.js
server/api/tag/tag.rpc.js
server/api/team/index.js
server/api/team/team.attributes.js
server/api/team/team.controller.js
server/api/team/team.events.js
server/api/team/team.model.js
server/api/team/team.rpc.js
server/api/team/team.socket.js
server/api/teamVoicePrefix/teamVoicePrefix.attributes.js
server/api/teamVoicePrefix/teamVoicePrefix.model.js
server/api/teamVoiceQueue/index.js
server/api/teamVoiceQueue/teamVoiceQueue.attributes.js
server/api/teamVoiceQueue/teamVoiceQueue.model.js
server/api/teamVoiceQueue/teamVoiceQueue.rpc.js
server/api/template/index.js
server/api/template/template.attributes.js
server/api/template/template.controller.js
server/api/template/template.model.js
server/api/template/template.rpc.js
server/api/trigger/index.js
server/api/trigger/trigger.attributes.js
server/api/trigger/trigger.controller.js
server/api/trigger/trigger.model.js
server/api/trigger/trigger.rpc.js
server/api/trunk/index.js
server/api/trunk/trunk.attributes.js
server/api/trunk/trunk.controller.js
server/api/trunk/trunk.model.js
server/api/trunk/trunk.rpc.js
server/api/user-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.js
server/api/user/index.js
server/api/user/user.attributes.js
server/api/user/user.controller.js
server/api/user/user.events.js
server/api/user/user.model.js
server/api/user/user.rpc.js
server/api/user/user.socket.js
server/api/userChatQueue/index.js
server/api/userChatQueue/userChatQueue.attributes.js
server/api/userChatQueue/userChatQueue.model.js
server/api/userChatQueue/userChatQueue.rpc.js
server/api/userFaxQueue/index.js
server/api/userFaxQueue/userFaxQueue.attributes.js
server/api/userFaxQueue/userFaxQueue.model.js
server/api/userFaxQueue/userFaxQueue.rpc.js
server/api/userMailQueue/index.js
server/api/userMailQueue/userMailQueue.attributes.js
server/api/userMailQueue/userMailQueue.model.js
server/api/userMailQueue/userMailQueue.rpc.js
server/api/userNotification/index.js
server/api/userNotification/userNotification.attributes.js
server/api/userNotification/userNotification.controller.js
server/api/userNotification/userNotification.events.js
server/api/userNotification/userNotification.model.js
server/api/userNotification/userNotification.rpc.js
server/api/userNotification/userNotification.socket.js
server/api/userOpenchannelQueue/index.js
server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
server/api/userProfile/index.js
server/api/userProfile/userProfile.attributes.js
server/api/userProfile/userProfile.controller.js
server/api/userProfile/userProfile.events.js
server/api/userProfile/userProfile.model.js
server/api/userProfile/userProfile.rpc.js
server/api/userProfile/userProfile.socket.js
server/api/userProfileResource/index.js
server/api/userProfileResource/userProfileResource.attributes.js
server/api/userProfileResource/userProfileResource.controller.js
server/api/userProfileResource/userProfileResource.model.js
server/api/userProfileResource/userProfileResource.rpc.js
server/api/userProfileSection/index.js
server/api/userProfileSection/userProfileSection.attributes.js
server/api/userProfileSection/userProfileSection.controller.js
server/api/userProfileSection/userProfileSection.model.js
server/api/userProfileSection/userProfileSection.rpc.js
server/api/userSmsQueue/index.js
server/api/userSmsQueue/userSmsQueue.attributes.js
server/api/userSmsQueue/userSmsQueue.model.js
server/api/userSmsQueue/userSmsQueue.rpc.js
server/api/userVoicePrefix/userVoicePrefix.attributes.js
server/api/userVoicePrefix/userVoicePrefix.model.js
server/api/userVoiceQueue/index.js
server/api/userVoiceQueue/userVoiceQueue.attributes.js
server/api/userVoiceQueue/userVoiceQueue.model.js
server/api/userVoiceQueue/userVoiceQueue.rpc.js
server/api/userVoiceQueueRt/index.js
server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
server/api/userWhatsappQueue/index.js
server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
server/api/userWhatsappQueue/userWhatsappQueue.model.js
server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
server/api/variable/index.js
server/api/variable/variable.attributes.js
server/api/variable/variable.controller.js
server/api/variable/variable.model.js
server/api/variable/variable.rpc.js
server/api/version/index.js
server/api/version/version.controller.js
server/api/voiceAgentReport/index.js
server/api/voiceAgentReport/voiceAgentReport.attributes.js
server/api/voiceAgentReport/voiceAgentReport.controller.js
server/api/voiceAgentReport/voiceAgentReport.model.js
server/api/voiceAgentReport/voiceAgentReport.rpc.js
server/api/voiceCallReport/index.js
server/api/voiceCallReport/voiceCallReport.attributes.js
server/api/voiceCallReport/voiceCallReport.controller.js
server/api/voiceCallReport/voiceCallReport.model.js
server/api/voiceCallReport/voiceCallReport.rpc.js
server/api/voiceChanSpy/index.js
server/api/voiceChanSpy/voiceChanSpy.attributes.js
server/api/voiceChanSpy/voiceChanSpy.controller.js
server/api/voiceChanSpy/voiceChanSpy.model.js
server/api/voiceChanSpy/voiceChanSpy.rpc.js
server/api/voiceContext/index.js
server/api/voiceContext/voiceContext.attributes.js
server/api/voiceContext/voiceContext.controller.js
server/api/voiceContext/voiceContext.model.js
server/api/voiceContext/voiceContext.rpc.js
server/api/voiceDialReport/index.js
server/api/voiceDialReport/voiceDialReport.attributes.js
server/api/voiceDialReport/voiceDialReport.controller.js
server/api/voiceDialReport/voiceDialReport.model.js
server/api/voiceDialReport/voiceDialReport.rpc.js
server/api/voiceExtension/index.js
server/api/voiceExtension/voiceExtension.attributes.js
server/api/voiceExtension/voiceExtension.controller.js
server/api/voiceExtension/voiceExtension.events.js
server/api/voiceExtension/voiceExtension.model.js
server/api/voiceExtension/voiceExtension.rpc.js
server/api/voiceExtension/voiceExtension.socket.js
server/api/voiceMail/index.js
server/api/voiceMail/voiceMail.attributes.js
server/api/voiceMail/voiceMail.controller.js
server/api/voiceMail/voiceMail.model.js
server/api/voiceMail/voiceMail.rpc.js
server/api/voiceMailMessage/index.js
server/api/voiceMailMessage/voiceMailMessage.attributes.js
server/api/voiceMailMessage/voiceMailMessage.controller.js
server/api/voiceMailMessage/voiceMailMessage.model.js
server/api/voiceMailMessage/voiceMailMessage.rpc.js
server/api/voiceMusicOnHold/index.js
server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
server/api/voicePrefix/index.js
server/api/voicePrefix/voicePrefix.attributes.js
server/api/voicePrefix/voicePrefix.controller.js
server/api/voicePrefix/voicePrefix.events.js
server/api/voicePrefix/voicePrefix.model.js
server/api/voicePrefix/voicePrefix.rpc.js
server/api/voicePrefix/voicePrefix.socket.js
server/api/voiceQueue/index.js
server/api/voiceQueue/voiceQueue.attributes.js
server/api/voiceQueue/voiceQueue.controller.js
server/api/voiceQueue/voiceQueue.events.js
server/api/voiceQueue/voiceQueue.model.js
server/api/voiceQueue/voiceQueue.rpc.js
server/api/voiceQueue/voiceQueue.socket.js
server/api/voiceQueueReport/index.js
server/api/voiceQueueReport/voiceQueueReport.attributes.js
server/api/voiceQueueReport/voiceQueueReport.controller.js
server/api/voiceQueueReport/voiceQueueReport.events.js
server/api/voiceQueueReport/voiceQueueReport.model.js
server/api/voiceQueueReport/voiceQueueReport.rpc.js
server/api/voiceQueueReport/voiceQueueReport.socket.js
server/api/voiceQueuesLog/index.js
server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
server/api/voiceQueuesLog/voiceQueuesLog.controller.js
server/api/voiceQueuesLog/voiceQueuesLog.model.js
server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
server/api/voiceRecording/index.js
server/api/voiceRecording/voiceRecording.attributes.js
server/api/voiceRecording/voiceRecording.controller.js
server/api/voiceRecording/voiceRecording.model.js
server/api/voiceRecording/voiceRecording.rpc.js
server/api/voiceTransferReport/index.js
server/api/voiceTransferReport/voiceTransferReport.attributes.js
server/api/voiceTransferReport/voiceTransferReport.controller.js
server/api/voiceTransferReport/voiceTransferReport.model.js
server/api/voiceTransferReport/voiceTransferReport.rpc.js
server/api/webbar/index.js
server/api/webbar/webbar.controller.js
server/api/whatsappAccount/index.js
server/api/whatsappAccount/whatsappAccount.attributes.js
server/api/whatsappAccount/whatsappAccount.controller.js
server/api/whatsappAccount/whatsappAccount.events.js
server/api/whatsappAccount/whatsappAccount.model.js
server/api/whatsappAccount/whatsappAccount.rpc.js
server/api/whatsappAccount/whatsappAccount.socket.js
server/api/whatsappApplication/index.js
server/api/whatsappApplication/whatsappApplication.attributes.js
server/api/whatsappApplication/whatsappApplication.controller.js
server/api/whatsappApplication/whatsappApplication.model.js
server/api/whatsappApplication/whatsappApplication.rpc.js
server/api/whatsappInteraction/index.js
server/api/whatsappInteraction/whatsappInteraction.attributes.js
server/api/whatsappInteraction/whatsappInteraction.controller.js
server/api/whatsappInteraction/whatsappInteraction.events.js
server/api/whatsappInteraction/whatsappInteraction.model.js
server/api/whatsappInteraction/whatsappInteraction.rpc.js
server/api/whatsappInteraction/whatsappInteraction.socket.js
server/api/whatsappMessage/index.js
server/api/whatsappMessage/whatsappMessage.attributes.js
server/api/whatsappMessage/whatsappMessage.controller.js
server/api/whatsappMessage/whatsappMessage.events.js
server/api/whatsappMessage/whatsappMessage.model.js
server/api/whatsappMessage/whatsappMessage.rpc.js
server/api/whatsappMessage/whatsappMessage.socket.js
server/api/whatsappQueue/index.js
server/api/whatsappQueue/whatsappQueue.attributes.js
server/api/whatsappQueue/whatsappQueue.controller.js
server/api/whatsappQueue/whatsappQueue.events.js
server/api/whatsappQueue/whatsappQueue.model.js
server/api/whatsappQueue/whatsappQueue.rpc.js
server/api/whatsappQueue/whatsappQueue.socket.js
server/api/whatsappQueueReport/index.js
server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
server/api/whatsappQueueReport/whatsappQueueReport.controller.js
server/api/whatsappQueueReport/whatsappQueueReport.model.js
server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
server/api/whatsappTransferReport/index.js
server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
server/api/whatsappTransferReport/whatsappTransferReport.controller.js
server/api/whatsappTransferReport/whatsappTransferReport.model.js
server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
server/app.js
server/components/auth/service.js
server/components/contacts/index.js
server/components/contacts/sql-utils.js
server/components/encryptor/index.js
server/components/export/csv.js
server/components/export/pdf.js
server/components/export/xlsx.js
server/components/extensions/rewrite.js
server/components/import/cm/csv.js
server/components/import/cm/csv2.js
server/components/import/cm/csvUpdates.js
server/components/integrations/configuration.js
server/components/interaction/service.js
server/components/interaction/sql-utils.js
server/components/interaction/update-interaction.js
server/components/interaction/utils.js
server/components/license/service.js
server/components/parsers/advancedSearch.js
server/components/parsers/qs.js
server/components/realtime/agents.js
server/components/realtime/queues.js [new file with mode: 0644]
server/config/express.js
server/config/license/hardware.js
server/config/license/index.js
server/config/license/util.js
server/config/local.env.js
server/config/logger.js
server/config/pm2/config.js
server/config/pm2/index.js
server/config/schedule/chat.js
server/config/schedule/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js
server/errors/index.js
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js
server/services/agi/reply.js
server/services/agi/rpc/index.js
server/services/agi/scripts/aws/index.js
server/services/agi/scripts/aws/lex/index.js
server/services/agi/scripts/aws/lex/lib/api.js
server/services/agi/scripts/aws/polly/index.js
server/services/agi/scripts/aws/polly/lib/api.js
server/services/agi/scripts/google/asr/index.js
server/services/agi/scripts/google/asr/lib/api.js
server/services/agi/scripts/google/index.js
server/services/agi/scripts/index.js
server/services/agi/scripts/sestek/index.js
server/services/agi/scripts/sestek/nda/index.js
server/services/agi/scripts/tilde/asr/index.js
server/services/agi/scripts/tilde/asr/lib/api.js
server/services/agi/scripts/tilde/index.js
server/services/agi/server.js
server/services/agi/vertices.js
server/services/ami/acw/index.js
server/services/ami/ami.js
server/services/ami/client.js
server/services/ami/dialer/action.js
server/services/ami/dialer/agentComplete.js
server/services/ami/dialer/final.js
server/services/ami/dialer/hangup.js
server/services/ami/dialer/history.js
server/services/ami/dialer/index.js
server/services/ami/dialer/queueCallerAbandon.js
server/services/ami/fax/action.js
server/services/ami/fax/index.js
server/services/ami/fax/rpcDb.js
server/services/ami/fax/util/gs.js
server/services/ami/fax/util/util.js
server/services/ami/index.js
server/services/ami/model/agent.js
server/services/ami/model/campaign.js
server/services/ami/model/channel.js
server/services/ami/model/deskAccount.js
server/services/ami/model/dynamics365Account.js
server/services/ami/model/faxAccount.js
server/services/ami/model/freshdeskAccount.js
server/services/ami/model/freshsalesAccount.js
server/services/ami/model/queueReport.js
server/services/ami/model/salesforceAccount.js
server/services/ami/model/servicenowAccount.js
server/services/ami/model/sugarcrmAccount.js
server/services/ami/model/telephone.js
server/services/ami/model/template.js
server/services/ami/model/trigger.js
server/services/ami/model/trunk.js
server/services/ami/model/voiceExtension.js
server/services/ami/model/voiceQueue.js
server/services/ami/model/voiceQueueSummary.js [new file with mode: 0644]
server/services/ami/model/vtigerAccount.js
server/services/ami/model/zendeskAccount.js
server/services/ami/model/zohoAccount.js
server/services/ami/preview/action.js
server/services/ami/preview/index.js
server/services/ami/preview/rpcDb.js
server/services/ami/preview/util/util.js
server/services/ami/properties.js
server/services/ami/realtime/index.js
server/services/ami/realtime/utils.js [new file with mode: 0644]
server/services/ami/report/index.js
server/services/ami/report/userReport.js
server/services/ami/report/voiceAgentReport.js
server/services/ami/report/voiceCallReport.js
server/services/ami/report/voiceDialReport.js
server/services/ami/report/voiceQueueReport.js
server/services/ami/rpc/agentReportPreview.js
server/services/ami/rpc/attachment.js
server/services/ami/rpc/campaign.js
server/services/ami/rpc/cmContact.js
server/services/ami/rpc/cmHopper.js
server/services/ami/rpc/cmHopperAdditionalPhone.js
server/services/ami/rpc/cmHopperBlack.js
server/services/ami/rpc/cmHopperFinal.js
server/services/ami/rpc/cmHopperHistory.js
server/services/ami/rpc/faxAccount.js
server/services/ami/rpc/faxMessage.js
server/services/ami/rpc/integrations/desk.js
server/services/ami/rpc/integrations/dynamics365.js
server/services/ami/rpc/integrations/freshdesk.js
server/services/ami/rpc/integrations/freshsales.js
server/services/ami/rpc/integrations/salesforce.js
server/services/ami/rpc/integrations/servicenow.js
server/services/ami/rpc/integrations/sugarcrm.js
server/services/ami/rpc/integrations/vtiger.js
server/services/ami/rpc/integrations/zendesk.js
server/services/ami/rpc/integrations/zoho.js
server/services/ami/rpc/memberReport.js
server/services/ami/rpc/setting.js
server/services/ami/rpc/template.js
server/services/ami/rpc/trigger.js
server/services/ami/rpc/trunk.js
server/services/ami/rpc/user.js
server/services/ami/rpc/voiceAgentReport.js
server/services/ami/rpc/voiceCallReport.js
server/services/ami/rpc/voiceDialReport.js
server/services/ami/rpc/voiceExtension.js
server/services/ami/rpc/voiceQueue.js
server/services/ami/rpc/voiceQueueReport.js
server/services/ami/rpc/voiceQueueRt.js
server/services/ami/rpc/voiceRecording.js
server/services/ami/rpc/voiceTransferReport.js
server/services/ami/server/index.js
server/services/ami/trigger/cmContact/index.js
server/services/ami/trigger/index.js
server/services/ami/trigger/integration/desk.js
server/services/ami/trigger/integration/dynamics365.js
server/services/ami/trigger/integration/freshdesk.js
server/services/ami/trigger/integration/freshsales.js
server/services/ami/trigger/integration/index.js
server/services/ami/trigger/integration/salesforce.js
server/services/ami/trigger/integration/servicenow.js
server/services/ami/trigger/integration/sugarcrm.js
server/services/ami/trigger/integration/util.js
server/services/ami/trigger/integration/vtiger.js
server/services/ami/trigger/integration/zendesk.js
server/services/ami/trigger/integration/zoho.js
server/services/ami/trigger/script/index.js
server/services/ami/trigger/urlforward/index.js
server/services/email/client.js
server/services/email/index.js
server/services/email/lib/email.js
server/services/email/lib/imap.js
server/services/email/lib/smtp.js
server/services/email/lib/utils.js
server/services/email/model/mailAccount.js
server/services/email/realtime/index.js
server/services/email/rpc/mailAccount.js
server/services/email/rpc/setting.js
server/services/email/server/index.js
server/services/express/index.js
server/services/routing/client.js
server/services/routing/index.js
server/services/routing/lib/rule-engine.js
server/services/routing/mailRpc/index.js
server/services/routing/model/agent.js
server/services/routing/model/chatQueue.js
server/services/routing/model/faxQueue.js
server/services/routing/model/interval.js
server/services/routing/model/mailQueue.js
server/services/routing/model/openchannelQueue.js
server/services/routing/model/smsQueue.js
server/services/routing/model/whatsappQueue.js
server/services/routing/realtime/index.js
server/services/routing/rpc/chatInteraction.js
server/services/routing/rpc/chatMessage.js
server/services/routing/rpc/chatQueue.js
server/services/routing/rpc/chatQueueReport.js
server/services/routing/rpc/faxInteraction.js
server/services/routing/rpc/faxMessage.js
server/services/routing/rpc/faxQueue.js
server/services/routing/rpc/faxQueueReport.js
server/services/routing/rpc/interval.js
server/services/routing/rpc/mailInteraction.js
server/services/routing/rpc/mailMessage.js
server/services/routing/rpc/mailQueue.js
server/services/routing/rpc/mailQueueReport.js
server/services/routing/rpc/openchannelInteraction.js
server/services/routing/rpc/openchannelMessage.js
server/services/routing/rpc/openchannelQueue.js
server/services/routing/rpc/openchannelQueueReport.js
server/services/routing/rpc/smsInteraction.js
server/services/routing/rpc/smsMessage.js
server/services/routing/rpc/smsQueue.js
server/services/routing/rpc/smsQueueReport.js
server/services/routing/rpc/user.js
server/services/routing/rpc/whatsappInteraction.js
server/services/routing/rpc/whatsappMessage.js
server/services/routing/rpc/whatsappQueue.js
server/services/routing/rpc/whatsappQueueReport.js
server/services/routing/server/applications/agent.js
server/services/routing/server/applications/amazonlex.js
server/services/routing/server/applications/autoreply.js
server/services/routing/server/applications/close.js
server/services/routing/server/applications/dialogflow.js
server/services/routing/server/applications/dialogflowV2.js
server/services/routing/server/applications/gotoif.js
server/services/routing/server/applications/gotop.js
server/services/routing/server/applications/message.js
server/services/routing/server/applications/noop.js
server/services/routing/server/applications/queue.js
server/services/routing/server/applications/strategy/agent.js
server/services/routing/server/applications/strategy/beepall.js
server/services/routing/server/applications/strategy/index.js
server/services/routing/server/applications/strategy/rrmemory.js
server/services/routing/server/applications/strategy/util.js
server/services/routing/server/applications/system.js
server/services/routing/server/applications/tag.js
server/services/routing/server/applications/tvox.js
server/services/routing/server/applications/utils.js
server/services/routing/server/index.js
server/services/routing/server/interval.js
server/services/xdr/agents.controller.js
server/services/xdr/calls.controller.js
server/services/xdr/core.controller.js
server/services/xdr/dials.controller.js
server/services/xdr/index.js
server/services/xdr/members.controller.js
server/services/xdr/queues.controller.js
server/services/xdr/recordings.controller.js
server/services/xdr/transfers.controller.js
server/services/xdr/utils.js
server/utils/client-side-logger.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index d2321d2..0f8326e 100644 (file)
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T10:00:40.804Z",
+    "time": "2022-05-17T12:21:38.564Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 2c6ecad..2486fcf 100644 (file)
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-05-17T10:00:40.804Z",
+    "time": "2022-05-17T12:21:38.564Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index b061703..729f936 100644 (file)
@@ -1,8 +1,8 @@
 {
   "ERROR404": {
     "CODE": "404",
-    "MESSAGE": "Sorry but we couldn’t find the page you are looking for",
-    "SEARCH": "Search for anything",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Vabandame, otsitud lehekülge ei leitud",
+    "SEARCH": "Otsi mida tahes",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index b218b70..eb1d0e2 100644 (file)
@@ -1,11 +1,11 @@
 {
   "ERROR500": {
     "CODE": "500",
-    "MESSAGE": "Well, you broke the internet!",
-    "SUBMESSAGE": "Just kidding, looks like we have an internal issue, please try again in couple minutes",
-    "REPORT": "Report this problem",
-    "JIRA_MESSAGE": "Your request has been received and will be processed shortly.",
-    "JIRA_SUBMESSAGE": "Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.",
-    "GO_BACK": "Go back to dashboard"
+    "MESSAGE": "Nonii, oled interneti katki teinud!",
+    "SUBMESSAGE": "Teeme lihtsalt nalja, tundub, et meil on sisemine tõrge, palun proovi paari minuti pärast uuesti",
+    "REPORT": "Teata sellest probleemist",
+    "JIRA_MESSAGE": "Sinu päring on kohale toimetatud ja sellega tegeletakse peagi.",
+    "JIRA_SUBMESSAGE": "Vabandame ebamugavuste pärast. Küsimuste korral palun võta meiega kontakti.",
+    "GO_BACK": "Mine tagasi töölauale"
   }
 }
index 8a47415..ee6d003 100644 (file)
@@ -1,6 +1,6 @@
 {
   "FOOTER": {
-    "COOKIE_LAW": "We use cookies to give you the best experience. Read our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
+    "COOKIE_LAW": "Kasutame küpsiseid, et pakkuda Sulle parimat kogemust. Loe meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">cookie policy</a>.",
     "ERRORS": {}
   }
 }
index be7b81a..dc70b81 100644 (file)
@@ -1,15 +1,15 @@
 {
   "FORGOTPASSWORD": {
-    "TITLE": "Recover your password",
-    "EMAIL_ADRESS": "Email address",
-    "SEND_RESET_LINK": "SEND RESET LINK",
-    "GO_BACK": "Go back to login",
-    "LINK_SENT": "Link Sent",
-    "LINNK_SENT_MESSAGE": "An email containing a link to reset your password has been sent to your address!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Taasta oma parool",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "SEND_RESET_LINK": "SAADA LÄHTESTAMISE LINK",
+    "GO_BACK": "Mine tagasi sisse logima",
+    "LINK_SENT": "Link saadetud",
+    "LINNK_SENT_MESSAGE": "Sulle on saadetud e-kiri, mis sisaldab Sinu parooli lähtestamise linki!",
+    "PASSWORD_RESET_ERROR": "Parooli Lähtestamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat"
     }
   }
 }
index f78785b..1f1d597 100644 (file)
@@ -1,6 +1,6 @@
 {
   "HEADER": {
-    "NEWS": "Please visit our <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a> to discover the new cool features available on XCALLY.",
+    "NEWS": "Palun külasta meie <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki</a>, et avastada uusi ägedaid funktsioone, mida pakub XCALLY.",
     "ERRORS": {}
   }
 }
index e371b06..4eb3084 100644 (file)
@@ -1,26 +1,26 @@
 {
   "LOGIN": {
-    "TELEPHONES": "Telephones",
-    "SELECT": "Select",
-    "CANCEL": "Cancel",
-    "TITLE": "Log in to your account",
-    "EMAIL": "Email",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "REMEMBER_ME": "Remember Me",
-    "FORGOT_PASSWORD": "Forgot Password?",
-    "LOG_IN": "LOG IN",
-    "OR": "OR",
-    "WITH_GOOGLE": "Log in with Google",
-    "WITH_FACEBOOK": "Log in with Facebook",
-    "DONT_HAVE_ACCOUNT": "No account?",
-    "CREATE_ACCOUNT": "Create an account",
+    "TELEPHONES": "Telefonid",
+    "SELECT": "Vali",
+    "CANCEL": "Tühista",
+    "TITLE": "Logi sisse oma kontole",
+    "EMAIL": "E-post",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "REMEMBER_ME": "Pea mind meeles",
+    "FORGOT_PASSWORD": "Unustasid Parooli?",
+    "LOG_IN": "LOGI SISSE",
+    "OR": "VÕI",
+    "WITH_GOOGLE": "Logi sisse Google kontoga",
+    "WITH_FACEBOOK": "Logi sisse Facebooki kontoga",
+    "DONT_HAVE_ACCOUNT": "Konto puudub?",
+    "CREATE_ACCOUNT": "Loo konto",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field"
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli"
     },
-    "WITH_AD": "Logige sisse Active Directoryga"
+    "WITH_AD": "Logi sisse Active Directory kontoga"
   }
 }
index 6d01d84..8d3f3e2 100644 (file)
@@ -1,88 +1,88 @@
 {
   "ANALYTICS": {
-    "SEND_IF_EMPTY": "Send if empty",
-    "REPORTNAME": "Report Name",
-    "DELETE": "Delete",
-    "NAME": "Name",
-    "ANALYTICS": "Analytics",
-    "METRICS": "Metrics",
-    "ID": "Id",
-    "TABLE": "Table",
-    "DESCRIPTION": "Description",
-    "SEARCH_FOR_ANYONE": "Search",
-    "METRIC": "Metric",
+    "SEND_IF_EMPTY": "Saada tühjana",
+    "REPORTNAME": "Aruande Nimi",
+    "DELETE": "Kustuta",
+    "NAME": "Nimi",
+    "ANALYTICS": "Analüüs",
+    "METRICS": "Mõõdik",
+    "ID": "ID",
+    "TABLE": "Tabel",
+    "DESCRIPTION": "Kirjeldus",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "METRIC": "Mõõdik",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "METRIC_REQUIRED": "Mandatory field",
-      "COLUMN_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "CUSTOM_METRIC_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "METRIC_REQUIRED": "Kohustuslik väli",
+      "COLUMN_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOM_METRIC_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli"
     },
-    "NEW_METRIC": "New Metric",
-    "ADD_METRIC": "Add Metric",
-    "EDIT_METRIC": "Edit Metric",
-    "DELETE_METRIC": "Delete Metric",
-    "SAVE": "Save",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Extracted Reports",
-    "DATE_RANGE_FROM": "Date Range From",
-    "DATE_RANGE_TO": "Date Range To",
-    "GENERATED_AT": "Generated At",
-    "STATUS": "Status",
-    "OUTPUT": "Output",
-    "REPORTS": "Reports",
-    "SEARCH_FOR_FOLDER": "Search for folder",
-    "CREATED_AT": "Created At",
-    "NEW_REPORT": "New Report",
-    "ADD_REPORT": "Add Report",
-    "COPY_REPORT": "Copy Report",
-    "PREVIEW_REPORT": "Preview Report",
-    "RUN_REPORT": "Run Report",
-    "DOWNLOAD_JSON_REPORT": "Export Report JSON",
-    "EDIT_REPORT": "Edit Report",
-    "DELETE_REPORT": "Delete Report",
-    "CREATE": "Create Folder",
-    "RENAME": "Rename Folder",
-    "REMOVE": "Remove Folder",
-    "SELECT_NODE": "Select Folder",
-    "ERROR": "Error",
-    "QUERY_ERROR": "Query Error",
-    "MESSAGE": "Message",
-    "CLOSE": "Close",
-    "FORMAT": "Format",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FIELDS": "Fields",
-    "CONDITION": "Condition",
-    "OPERATOR": "Operator",
-    "GROUP": "Group",
-    "COLUMN": "Column",
-    "VALUE": "Value",
-    "PREVIEW": "Preview",
-    "LIMITED_RESULT": "*Limited Results",
-    "NO_DATA": "No data results",
-    "CONDITIONS": "Conditions",
-    "ALIAS": "Alias",
-    "FUNCTION": "Function",
-    "GROUP_BY": "Group By",
-    "ORDER_BY": "Order By",
-    "ADD_REPORTFIELD": "Add Field",
-    "EDIT_REPORTFIELD": "Edit Field",
-    "DELETE_REPORTFIELD": "Delete Field",
-    "METRIC_NAME": "Metric",
-    "NO_METRIC_FOUND": "No metric found",
-    "NO_AVAILABLE_INFO": "No available info",
-    "CUSTOM_METRIC": "Custom Metric",
-    "DELETE_EXTRACTEDREPORT": "Delete Extracted Report",
-    "EDIT_EXTRACTEDREPORT": "Edit Extracted Report",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download Extracted Report",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NEW_METRIC": "Uus Mõõdik",
+    "ADD_METRIC": "Lisa Mõõdik",
+    "EDIT_METRIC": "Redigeeri Mõõdikut",
+    "DELETE_METRIC": "Kustuta Mõõdik",
+    "SAVE": "Salvesta",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "TYPE": "Tüüp",
+    "EXTRACTEDREPORTS": "Ekstraktitud Aruanded",
+    "DATE_RANGE_FROM": "Kuupäevavahemik Alates",
+    "DATE_RANGE_TO": "Kuupäevavahemik Kuni",
+    "GENERATED_AT": "Loomisaeg",
+    "STATUS": "Staatus",
+    "OUTPUT": "Väljund",
+    "REPORTS": "Aruanded",
+    "SEARCH_FOR_FOLDER": "Otsi kausta",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_REPORT": "Uus Aruanne",
+    "ADD_REPORT": "Lisa Aruanne",
+    "COPY_REPORT": "Kopeeri Aruanne",
+    "PREVIEW_REPORT": "Kuva Aruande eelvaade",
+    "RUN_REPORT": "Käivita Aruanne",
+    "DOWNLOAD_JSON_REPORT": "Ekspordi Aruanne JSON",
+    "EDIT_REPORT": "Redigeeri Aruannet",
+    "DELETE_REPORT": "Kustuta Aruanne",
+    "CREATE": "Loo Kaust",
+    "RENAME": "Nimeta Kaust ümber",
+    "REMOVE": "Eemalda Kaust",
+    "SELECT_NODE": "Vali Kaust",
+    "ERROR": "Viga",
+    "QUERY_ERROR": "Päringu Tõrge",
+    "MESSAGE": "Sõnum",
+    "CLOSE": "Sule",
+    "FORMAT": "Vorming",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FIELDS": "Väljad",
+    "CONDITION": "Tingimus",
+    "OPERATOR": "Operaator",
+    "GROUP": "Rühm",
+    "COLUMN": "Veerg",
+    "VALUE": "Väärtus",
+    "PREVIEW": "Eelvaade",
+    "LIMITED_RESULT": "*Piiratud Tulemused",
+    "NO_DATA": "Andmete tulemid puuduvad",
+    "CONDITIONS": "Tingimused",
+    "ALIAS": "Pseudonüüm",
+    "FUNCTION": "Funktsioon",
+    "GROUP_BY": "Rühmita Vastavalt",
+    "ORDER_BY": "Telli Vastavalt",
+    "ADD_REPORTFIELD": "Lisa Väli",
+    "EDIT_REPORTFIELD": "Redigeeri Välja",
+    "DELETE_REPORTFIELD": "Kustuta Väli",
+    "METRIC_NAME": "Mõõdik",
+    "NO_METRIC_FOUND": "Mõõdikuid ei leitud",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "CUSTOM_METRIC": "Kohandatud Mõõdik",
+    "DELETE_EXTRACTEDREPORT": "Kustuta Ekstraktitud Aruanne",
+    "EDIT_EXTRACTEDREPORT": "Redigeeri Ekstraktitud Aruannet",
+    "DOWNLOAD_EXTRACTEDREPORT": "Laadi alla Ekstraktitud Aruanne",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
     "WEB_REPORT": "Veebiaruanne"
   }
index 4a4f088..90c2dff 100644 (file)
@@ -1,7 +1,7 @@
 {
   "ANALYTICS": {
     "SEND_IF_EMPTY": "Enviar se vazio",
-    "REPORTNAME": "Nome do relatório",
+    "REPORTNAME": "Nome do Relatório",
     "DELETE": "Excluir",
     "NAME": "Nome",
     "ANALYTICS": "Relatórios",
       "CUSTOM_METRIC_REQUIRED": "Campo obrigatório",
       "ALIAS_REQUIRED": "Campo obrigatório"
     },
-    "NEW_METRIC": "Nova métrica",
-    "ADD_METRIC": "Adicionar métrica",
-    "EDIT_METRIC": "Editar métrica",
-    "DELETE_METRIC": "Excluir métrica",
+    "NEW_METRIC": "Nova Métrica",
+    "ADD_METRIC": "Adicionar Métrica",
+    "EDIT_METRIC": "Editar Métrica",
+    "DELETE_METRIC": "Excluir Métrica",
     "SAVE": "Salvar",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar todos",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Todos",
+    "SELECT_NONE": "Selecione Nenhum",
     "TYPE": "Tipo",
-    "EXTRACTEDREPORTS": "Relatórios extraídos",
-    "DATE_RANGE_FROM": "Intervalo de datas de",
-    "DATE_RANGE_TO": "Intervalo de datas para",
+    "EXTRACTEDREPORTS": "Relatórios Extraídos",
+    "DATE_RANGE_FROM": "Intervalo de Datas de",
+    "DATE_RANGE_TO": "Intervalo de Datas para",
     "GENERATED_AT": "Gerado em",
     "STATUS": "Status",
     "OUTPUT": "Saída",
     "REPORTS": "Relatórios",
-    "SEARCH_FOR_FOLDER": "Procurar por pasta",
+    "SEARCH_FOR_FOLDER": "Procurar por Pasta",
     "CREATED_AT": "Criado em",
-    "NEW_REPORT": "Novo relatório",
-    "ADD_REPORT": "Adicionar relatório",
-    "COPY_REPORT": "Copiar relatório",
-    "PREVIEW_REPORT": "Relatório de pré-visualização",
-    "RUN_REPORT": "Executar relatório",
-    "DOWNLOAD_JSON_REPORT": "Exportar relatório JSON",
-    "EDIT_REPORT": "Editar relatório",
-    "DELETE_REPORT": "Excluir relatório",
-    "CREATE": "Criar pasta",
-    "RENAME": "Renomear pasta",
-    "REMOVE": "Remover pasta",
-    "SELECT_NODE": "Selecione a pasta",
+    "NEW_REPORT": "Novo Relatório",
+    "ADD_REPORT": "Adicionar Relatório",
+    "COPY_REPORT": "Copiar Relatório",
+    "PREVIEW_REPORT": "Pré-visualizar Relatório",
+    "RUN_REPORT": "Executar Relatório",
+    "DOWNLOAD_JSON_REPORT": "Exportar Relatório JSON",
+    "EDIT_REPORT": "Editar Relatório",
+    "DELETE_REPORT": "Excluir Relatório",
+    "CREATE": "Criar Pasta",
+    "RENAME": "Renomear Pasta",
+    "REMOVE": "Remover Pasta",
+    "SELECT_NODE": "Selecione a Pasta",
     "ERROR": "Erro",
-    "QUERY_ERROR": "Erro de consulta",
+    "QUERY_ERROR": "Erro de Consulta",
     "MESSAGE": "Mensagem",
     "CLOSE": "Fechar",
     "FORMAT": "Formato",
     "GROUP": "Grupo",
     "COLUMN": "Coluna",
     "VALUE": "Valor",
-    "PREVIEW": "Visualizar",
-    "LIMITED_RESULT": "* Resultados limitados",
+    "PREVIEW": "Pré-visualizar",
+    "LIMITED_RESULT": "*Resultados limitados",
     "NO_DATA": "Nenhum resultado de dados",
     "CONDITIONS": "Condições",
     "ALIAS": "Alias",
     "FUNCTION": "Função",
     "GROUP_BY": "Agrupar por",
     "ORDER_BY": "Ordenar por",
-    "ADD_REPORTFIELD": "Adicionar campo",
-    "EDIT_REPORTFIELD": "Editar campo",
-    "DELETE_REPORTFIELD": "Excluir campo",
-    "METRIC_NAME": "Nome métrica",
-    "NO_METRIC_FOUND": "Nenhuma métrica encontrada",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "CUSTOM_METRIC": "Métrica personalizada",
-    "DELETE_EXTRACTEDREPORT": "Excluir relatório extraído",
-    "EDIT_EXTRACTEDREPORT": "Editar relatório extraído",
-    "DOWNLOAD_EXTRACTEDREPORT": "Download do relatório extraído",
+    "ADD_REPORTFIELD": "Adicionar Campo",
+    "EDIT_REPORTFIELD": "Editar Campo",
+    "DELETE_REPORTFIELD": "Excluir Campo",
+    "METRIC_NAME": "Nome Métrica",
+    "NO_METRIC_FOUND": "Nenhuma Métrica Encontrada",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "CUSTOM_METRIC": "Métrica Personalizada",
+    "DELETE_EXTRACTEDREPORT": "Excluir Relatório Extraído",
+    "EDIT_EXTRACTEDREPORT": "Editar Relatório Extraído",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download do Relatório Extraído",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por página",
+    "ROWSPERPAGE": "Linhas por Página",
     "OF": "do",
-    "WEB_REPORT": "Relatório da web"
+    "WEB_REPORT": "Relatório Web"
   }
 }
index 8b74f11..2389db1 100644 (file)
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Account",
-    "ADDUSER_PROJECTS": "Add Users to Project",
-    "ADD_ODBC": "Add ODBC",
-    "ADD_PROJECT": "Add Project",
-    "ADD_VARIABLE": "Add Variable",
-    "AGENTS": "Agents",
+    "ACCOUNT_ID": "Konto",
+    "ADDUSER_PROJECTS": "Lisa Kasutajad Projekti",
+    "ADD_ODBC": "Lisa ODBC",
+    "ADD_PROJECT": "Lisa Projekt",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "AGENTS": "Agendid",
     "AGI": "AGI",
-    "ALL_USERS": "All Users",
-    "ANSWER": "Answer",
-    "APIKEY": "ApiKey",
-    "APPID": "App ID",
-    "APPLICATION": "Application",
-    "APPSECRET": "App Secret",
-    "ARGS": "Arguments",
-    "ATTACHMENT_NAME": "Attachment Name",
-    "ATTACHMENT_PATH": "Attachment Path",
-    "ATTACHMENT_TYPE": "Attachment Type",
+    "ALL_USERS": "Kõik Kasutajad",
+    "ANSWER": "Vastus",
+    "APIKEY": "API võti",
+    "APPID": "Rakenduse ID",
+    "Rakendus": "Avaldus",
+    "APPSECRET": "Rakenduse Saladus",
+    "ARGS": "Argumendid",
+    "ATTACHMENT_NAME": "Manuse Nimi",
+    "ATTACHMENT_PATH": "Manuse Tee",
+    "ATTACHMENT_TYPE": "Manuse Tüüp",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Heli kodeerimine",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Bot name",
-    "AWS_LEX_REGION": "Region",
-    "AWS_POLLY_REGION": "Region",
-    "AWS_POLLY_VOICE": "Voice",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
-    "AWS_TEXT_TYPE": "Text type",
-    "BACK": "Back",
+    "AWS_ACCESS_KEY_ID": "Pääsuvõtme ID",
+    "AWS_BOT_NAME": "Boti nimi",
+    "AWS_LEX_REGION": "Piirkond",
+    "AWS_POLLY_REGION": "Piirkond",
+    "AWS_POLLY_VOICE": "Hääl",
+    "AWS_SECRET_ACCESS_KEY": "Salajane Pääsuvõti",
+    "AWS_TEXT_TYPE": "Teksti tüüp",
+    "BACK": "Tagasi",
     "BCC": "BCC",
-    "BEEP": "Beep",
+    "BEEP": "Piiks",
     "BODY": "Keha",
-    "CALLBACK": "Callback",
-    "CALLBACK_PRIORITY": "Priority",
+    "CALLBACK": "Tagasihelistamine",
+    "CALLBACK_PRIORITY": "Prioriteet",
     "CALLYSQUARE": "Cally Square",
-    "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Choose Attachment",
-    "CLOSE": "Close",
-    "COMMAND": "Command",
+    "CC": "Koop",
+    "CHOOSE_ATTACHMENT": "Vali Manus",
+    "CLOSE": "Sule",
+    "COMMAND": "Käsk",
     "COMPUTEDVARIABLES": "Arvutatud muutujate skripti tee",
-    "CONDITION": "Condition",
-    "CONTEXT": "Context",
-    "COPY": "Copy",
-    "COPY_PROJECT": "Copy Project",
-    "CREATED_AT": "Created At",
+    "CONDITION": "Tingimus",
+    "CONTEXT": "Kontekst",
+    "COPY": "Koopia",
+    "COPY_PROJECT": "Kopeeri Projekt",
+    "CREATED_AT": "Loomisaeg",
     "CUSTOM_ACTION": "Kohandatud toiming",
     "CUSTOM_ACTION_DATA": "Kohandatud toimingu andmed",
-    "CUSTOM_APP": "Custom Application",
-    "DATABASE": "Database",
-    "DELAY": "delay [min]",
-    "DELETE": "Delete",
-    "DELETE_ODBC": "Delete ODBC",
-    "DELETE_PROJECT": "Delete Project",
-    "DELETE_SQUARERECORDING": "Delete Square Recording",
-    "DESCRIPTION": "Description",
-    "DIAL": "Dial",
-    "DIALOGFLOW": "Dialogflow",
-    "DIALOGFLOW_LANGUAGE": "Language",
-    "DIGIT": "Max Digits",
-    "DIGITS": "Digits",
-    "DOWNLOAD_SQUARERECORDING": "Download Square Recording",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
-    "DROP_TO_UPLOAD_MESSAGE": "You can also drop files here to upload. Only XML - Max. 5MB",
+    "CUSTOM_APP": "Kohandatud Rakendus",
+    "DATABASE": "Andmebaas",
+    "DELAY": "viivitus [min]",
+    "DELETE": "Kustuta",
+    "DELETE_ODBC": "Kustuta ODBC",
+    "DELETE_PROJECT": "Kustuta Projekt",
+    "DELETE_SQUARERECORDING": "Kustuta Ruutformaadis Salvestus",
+    "DESCRIPTION": "Kirjeldus",
+    "DIAL": "Helista",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DIALOGFLOW_LANGUAGE": "Keel",
+    "DIGIT": "Maks. Numbrimärke",
+    "DIGITS": "Number",
+    "DOWNLOAD_SQUARERECORDING": "Laadi alla Ruutformaadis Salvestus",
+    "DROP_TO_UPLOAD": "ÜLESLAADIMISEKS KUKUTA",
+    "DROP_TO_UPLOAD_MESSAGE": "Üleslaadimiseks saad failid samuti siia kukutada. Ainult XML - Maks. 5MB",
     "DSN": "DSN",
-    "EDIT": "Edit",
-    "EDIT_ODBC": "Edit ODBC",
-    "EDIT_PROJECT": "Edit Project",
-    "EDIT_SQUARERECORDING": "Edit Square Recording",
-    "EDIT_XML": "Edit XML",
-    "END": "End",
+    "EDIT": "Redigeeri",
+    "EDIT_ODBC": "Redigeeri ODBC",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "EDIT_SQUARERECORDING": "Redigeeri Ruutformaadis Salvestust",
+    "EDIT_XML": "Redigeeri XMLi",
+    "END": "Lõpeta",
     "ERRORS": {
-      "DSN_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
+      "DSN_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
       "URL_REQUIRED": "Kohustuslik väli"
     },
-    "ESCAPE_DIGITS": "Escape Digits",
+
+    "ESCAPE_DIGITS": "Väldi numbrimärke",
     "EXTEN": "Exten",
-    "EXTENSION": "Extension",
-    "EXT_DIAL": "External Dial",
-    "FILE": "Filename",
-    "FILENAME": "Filename",
+    "EXTENSION": "Laiendus",
+    "EXT_DIAL": "Väline Helistamine",
+    "FILE": "Faili nimi",
+    "FILENAME": "Faili nimi",
     "FILE_ID": "Audio",
     "FINALLY": "Finally",
-    "FINDBY": "Find By",
-    "GETDIGITS": "Get Digits",
-    "GETSECRETDIGITS": "Get Secret Digits",
-    "GOAL": "Goal",
-    "GOALNAME": "Goal Name",
+    "FINDBY": "Otsitav",
+    "GETDIGITS": "Hangi Numbrimärgid",
+    "GETSECRETDIGITS": "Hangi Salanumbrid",
+    "GOAL": "Eesmärk",
+    "GOALNAME": "Eesmärgi Nimi",
     "GOOGLEASR": "GoogleASR",
-    "GOOGLE_ASR_LANGUAGE": "Language",
+    "GOOGLE_ASR_LANGUAGE": "Keel",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
     "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Teksti tüüp",
-    "GOOGLE_TTS_LANGUAGE": "Language",
+    "GOOGLE_TTS_LANGUAGE": "Keel",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
-    "GO_TO_PROJECTS": "Go to projects",
-    "GRAMMAR": "Grammar",
-    "HANGUP": "Hangup",
+    "GO_TO_PROJECTS": "Mine projektide juurde",
+    "GRAMMAR": "Grammatika",
+    "HANGUP": "Lõpeta kõne",
     "HEADERS": "Päised",
     "HELP": {
-      "BCC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Näidis: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "Toetatavate tähemärkide maksimaalne arv on 200",
-      "TO": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "Saad lisada mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Hiddden Digits Number",
-    "HIDDENDIGITSPOS": "hidden Digits Position",
-    "ID": "Id",
-    "IMPORT": "Import",
-    "IMPORT_XML": "Import XML",
-    "INTERVAL_ID": "Interval",
-    "INTKEY": "Interrupt Key",
+    "HIDDENDIGITSNUM": "Peidetud Numbrimärkide Arv",
+    "HIDDENDIGITSPOS": "Peidetud Numbrimärkide Asukoht",
+    "ID": "ID",
+    "IMPORT": "Impordi",
+    "IMPORT_XML": "Impordi XML",
+    "INTERVAL_ID": "Intervall",
+    "INTKEY": "Katkestusklahv",
     "ISPEECHASR": "iSpeech ASR",
     "ISPEECHTTS": "iSpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Language",
-    "ISPEECH_TTS_LANGUAGE": "Language",
-    "KEY": "Key",
-    "LABEL": "Label",
+    "ISPEECH_ASR_LANGUAGE": "Keel",
+    "ISPEECH_TTS_LANGUAGE": "Keel",
+    "KEY": "Võti",
+    "LABEL": "Sedel",
     "LANGUAGECODE": "Keelekood",
-    "LASTNAME": "Last Name",
-    "LIST_ID": "List",
-    "LOGIN": "Login",
-    "LOGOUT": "Logout",
+    "LASTNAME": "Perekonnanimi",
+    "LIST_ID": "Loend",
+    "LOGIN": "Logi sissse",
+    "LOGOUT": "Logi välja",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
-    "MACRO": "Macro",
-    "MAILBOX": "Mailbox",
-    "MATH": "Math",
-    "MAXDIGIT": "Maximum Digits",
-    "MENU": "Menu",
+    "MACRO": "Makro",
+    "MAILBOX": "Postkast",
+    "MATH": "Matemaatika",
+    "MAXDIGIT": "Maks. numbrimärke",
+    "MENU": "Manüü",
     "METHOD": "Meetod",
-    "MINDIGIT": "Minimum Digits",
-    "MODEL": "Model",
+    "MINDIGIT": "Min. numbrimärke",
+    "MODEL": "Mudel",
     "MRCPRECOG": "MRCPRecog",
-    "MRCPSYNTH": "MRCPSünth",
-    "NAME": "Name",
+    "MRCPSYNTH": "MRCPSynth",
+    "NAME": "Nimi",
     "NDAACTIVITY_TYPE": "Tegevuse tüüp",
     "NDAGENERATE_AUDIO": "Loo helifail",
-    "NDASSISTANT_URL": "NDASSISTANT URL",
+    "NDASSISTANT_URL": "NDASSISTANTi URL",
     "NDAUTH_URL": "NDAUTHi URL",
-    "NEW": "New",
-    "NEW_ODBC": "New ODBC connection",
-    "NEW_PROJECT": "New Project",
-    "NEW_VARIABLE": "New Variable",
+    "NEW": "Uus",
+    "NEW_ODBC": "Uus ODBC ühendus",
+    "NEW_PROJECT": "Uus Projekt",
+    "NEW_VARIABLE": "Uus Muutuja",
     "NOOP": "NoOp",
-    "NOTES": "Notes",
-    "NO_AVAILABLE_INFO": "No available info",
+    "NOTES": "Märkmed",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Connection",
+    "ODBC_ID": "ODBC Ühendus",
     "OF": "of",
-    "OPEN": "Open",
-    "OPEN_NEW_WINDOW": "Open in a new window",
-    "OPEN_PROJECT": "Open Project",
-    "OPERATION": "Operation",
-    "OPTIONS": "Options",
-    "OPTS": "Options",
-    "OUTPUT": "Output",
-    "PAGE": "Page",
+    "OPEN": "Ava",
+    "OPEN_NEW_WINDOW": "Ava uues aknas",
+    "OPEN_PROJECT": "Ava Projekt",
+    "OPERATION": "Toiming",
+    "OPTIONS": "Suvandid",
+    "OPTS": "Suvandid",
+    "OUTPUT": "Väljund",
+    "PAGE": "Lehekülg",
     "PASSWORD": "Parool",
-    "PAUSE": "Pause",
-    "PAUSE_ID": "Pause type",
-    "PERMISSIONADD_PROJECTS": "Add Users to Project",
-    "PHONE": "Phone",
-    "PLAYBACK": "Playback",
-    "POSITION": "Position",
-    "PRIORITY": "Priority",
-    "PROJECT": "Project",
-    "PROJECTS": "Projects",
-    "PROJECT_ID": "Project",
-    "QUERY": "Query",
-    "QUEUE": "Queue",
-    "QUEUE_ID": "Queue",
+    "PAUSE": "Paus",
+    "PAUSE_ID": "Pausi tüüp",
+    "PERMISSIONADD_PROJECTS": "Lisa Kasutajad projekti",
+    "PHONE": "Telefon",
+    "PLAYBACK": "Taasesita",
+    "POSITION": "Positsioon",
+    "PRIORITY": "Prioriteet",
+    "PROJECT": "Projekt",
+    "PROJECTS": "Projektid",
+    "PROJECT_ID": "Projekt",
+    "QUERY": "Päring",
+    "QUEUE": "Järjekord",
+    "QUEUE_ID": "Järjekord",
     "RAWBODY": "Keha",
     "RAWHEADERS": "Päised",
-    "RECORD": "Record",
-    "RECORDINGFORMAT": "Recording Format",
-    "RESPONSE": "Response Timeout",
+    "RECORD": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestuse formaat",
+    "RESPONSE": "Reaktsiooniaja Aegumine",
     "RESTAPI": "Puhkuse API",
-    "RETRY": "Retries",
-    "ROWSPERPAGE": "Rows per page",
-    "SAVE": "Save",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
-    "SAYPHONETIC": "Say Phonetics",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECTED_USERS": "Selected Users",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "SENDFAX": "Send Fax",
-    "SENDMAIL": "Send Email",
-    "SENDSMS": "Send SMS",
+    "RETRY": "Korduskatsed",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "SAVE": "Salvesta",
+    "SAYDIGITS": "Ütle Numbrimärgid",
+    "SAYNUMBER": "Ütle Number",
+    "SAYPHONETIC": "Ütle Häälikud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "SENDFAX": "Saada Faks",
+    "SENDMAIL": "Saada E-kiri",
+    "SENDSMS": "Saada Sõnum",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
-    "SET": "Set",
+    "SET": "Hulk",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "Account",
-    "SMS_TEXT": "Text",
-    "SPEED": "Speed",
-    "SQUARERECORDINGS": "Recordings",
+    "SMS_ACCOUNT_ID": "Konto",
+    "SMS_TEXT": "Tekst",
+    "SPEED": "Kiirus",
+    "SQUARERECORDINGS": "Salvestused",
     "SSMLGENDER": "Sugu",
     "START": "Start",
-    "SUBJECT": "Subject",
-    "SUBPROJECT": "Sub Project",
-    "SYSTEM": "System",
-    "TELEPHONES": "Telephones",
-    "TEMPLATE_ID": "Template",
+    "SUBJECT": "Subjekt",
+    "SUBPROJECT": "Alamprojekt",
+    "SYSTEM": "Süsteem",
+    "TELEPHONES": "Telefonid",
+    "TEMPLATE_ID": "Mall",
     "TEST_ODBC": "Test ODBC",
-    "TEXT": "Text",
+    "TEXT": "Tekst",
     "TILDEASR": "Tilde ASR",
-    "TIMEOUT": "Timeout",
-    "TO": "To",
-    "TRUNK_NAME": "Trunk",
+    "TIMEOUT": "Aegumine",
+    "TO": "Kellele",
+    "TRUNK_NAME": "Magistraal",
     "TTS": "Google Text-To-Speech",
-    "UNIQUEID": "Unique ID",
-    "UNPAUSE": "End Pause",
-    "UPDATE_DESCRIPTION": "Update Description",
-    "UPDATE_INFO": "Update Info",
+    "UNIQUEID": "Unikaalne ID",
+    "UNPAUSE": "Lõpeta Paus",
+    "UPDATE_DESCRIPTION": "Uuenda Kirjeldust",
+    "UPDATE_INFO": "Uuenda Infot",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Kasutajanimi",
-    "USERS": "Users",
-    "VARIABLE_ID": "Variable",
-    "VARIABLE_VALUE": "Value",
-    "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variable Switch",
+    "USERS": "Kasutajad",
+    "VARIABLE_ID": "Muutuja",
+    "VARIABLE_VALUE": "Väärtus",
+    "VOICEMAIL": "Kõnepost",
+    "VSWITCH": "Muutuja Vahetus",
     "CLIENT_EMAIL": "Kliendi e-post",
-    "DIALOGFLOWV2": "DialoogivoogV2",
+    "DIALOGFLOWV2": "Dialoogivoog V2",
     "DIALOGFLOWV2_LANGUAGE": "Keel",
     "DIALOGFLOWV2_PROJECT_ID": "Projekti ID",
     "PRIVATE_KEY": "Privaatne võti",
index 65af7ca..43ccb77 100644 (file)
@@ -1,73 +1,73 @@
 {
   "CALLYSQUARE": {
     "ACCOUNT_ID": "Conta",
-    "ADDUSER_PROJECTS": "Adicionar usuários ao projeto",
+    "ADDUSER_PROJECTS": "Adicionar Usuários ao Projeto",
     "ADD_ODBC": "Adicionar ODBC",
     "ADD_PROJECT": "Adicionar Projeto",
     "ADD_VARIABLE": "Adicionar Variável",
     "AGENTS": "Agentes",
     "AGI": "AGI",
-    "ALL_USERS": "Todos os usuários",
+    "ALL_USERS": "Todos Usuários",
     "ANSWER": "Responda",
     "APIKEY": "Chave API",
-    "APPID": "ID do aplicativo",
+    "APPID": "ID do Aplicativo",
     "APPLICATION": "Aplicação",
-    "APPSECRET": "App Secret",
+    "APPSECRET": "Senha do Aplicativo",
     "ARGS": "Argumentos",
     "ATTACHMENT_NAME": "Nome do Anexo",
-    "ATTACHMENT_PATH": "Caminho de Anexos",
+    "ATTACHMENT_PATH": "Caminho do Anexo",
     "ATTACHMENT_TYPE": "Tipo de Anexo",
-    "AUDIO": "Audio",
-    "AUDIOENCODING": "Codificação de áudio",
+    "AUDIO": "Áudio",
+    "AUDIOENCODING": "Codificação de Áudio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
-    "AWS_BOT_NAME": "Nome BOT",
+    "AWS_ACCESS_KEY_ID": "ID Chave de Acesso",
+    "AWS_BOT_NAME": "Nome Bot",
     "AWS_LEX_REGION": "Região",
     "AWS_POLLY_REGION": "Região",
     "AWS_POLLY_VOICE": "Voz",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_SECRET_ACCESS_KEY": "Senha da Chave de Acesso",
     "AWS_TEXT_TYPE": "Tipo de texto",
     "BACK": "Voltar",
     "BCC": "BCC",
     "BEEP": "Beep",
-    "BODY": "Corpo",
+    "BODY": "Body",
     "CALLBACK": "Callback",
     "CALLBACK_PRIORITY": "Prioridade",
     "CALLYSQUARE": "Cally Square",
     "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Escolha o anexo",
+    "CHOOSE_ATTACHMENT": "Escolha o Anexo",
     "CLOSE": "Fechar",
     "COMMAND": "Comando",
     "COMPUTEDVARIABLES": "Caminho do script de variáveis computadas",
     "CONDITION": "Condição",
     "CONTEXT": "Contexto",
     "COPY": "Copiar",
-    "COPY_PROJECT": "Copiar projeto",
+    "COPY_PROJECT": "Copiar Projeto",
     "CREATED_AT": "Criado em",
     "CUSTOM_ACTION": "Ação Personalizada",
-    "CUSTOM_ACTION_DATA": "Dados de ação personalizada",
+    "CUSTOM_ACTION_DATA": "Dados de Ação Personalizada",
     "CUSTOM_APP": "Aplicativo Personalizado",
-    "DATABASE": "Base de dados",
+    "DATABASE": "Database",
     "DELAY": "delay [min]",
     "DELETE": "Excluir",
     "DELETE_ODBC": "Deletar ODBC",
     "DELETE_PROJECT": "Deletar Projeto",
-    "DELETE_SQUARERECORDING": "Excluir gravação",
+    "DELETE_SQUARERECORDING": "Excluir Gravação Cally Square",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
     "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
     "DIGIT": "Max Dígitos",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DOWNLOAD_SQUARERECORDING": "Download Gravação Cally Square",
+    "DROP_TO_UPLOAD": "SOLTAR AQUI PARA CARREGAR",
     "DROP_TO_UPLOAD_MESSAGE": "Você também pode soltar arquivos aqui para fazer o upload. Apenas XML - Máx. 5MB",
     "DSN": "DSN",
     "EDIT": "Editar",
     "EDIT_ODBC": "Editar ODBC",
     "EDIT_PROJECT": "Editar Projeto",
-    "EDIT_SQUARERECORDING": "Editar gravação",
+    "EDIT_SQUARERECORDING": "Editar Gravação Cally Square",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
     "ERRORS": {
       "PROJECT_REQUIRED": "Campo obrigatório",
       "URL_REQUIRED": "Campo obrigatório"
     },
-    "ESCAPE_DIGITS": "Dígitos de Escape",
+    "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Exten",
     "EXTENSION": "Extensão",
     "EXT_DIAL": "Discagem Externa",
     "FILE": "Nome do arquivo",
-    "FILENAME": "Nome do arquivo",
-    "FILE_ID": "Audio",
+    "FILENAME": "Nome do Arquivo",
+    "FILE_ID": "Áudio",
     "FINALLY": "Finalmente",
     "FINDBY": "Encontrar por",
     "GETDIGITS": "Obter dígitos",
-    "GETSECRETDIGITS": "Obter dígitos secretos",
+    "GETSECRETDIGITS": "Obter Dígitos Secretos",
     "GOAL": "Objetivo",
-    "GOALNAME": "Nome do objetivo",
+    "GOALNAME": "Nome do Objetivo",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Idioma",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Tipo de texto",
+    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Tipo de Texto",
     "GOOGLE_TTS_LANGUAGE": "Idioma",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "HANGUP": "Desligar",
     "HEADERS": "Cabeçalhos",
     "HELP": {
-      "BCC": "Você pode adicionar vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "Você pode adicionar vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)",
-      "DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
+      "BCC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)",
+      "DSN": "Exemplo: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
       "MAILBOX": "mailbox@context",
       "MAX_TEXT_TTS": "O número máximo de caracteres suportados é 200",
-      "TO": "Você pode adicionar vários endereços separados por vírgulas (por exemplo, john.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "Você pode adicionar vários endereços separados por vírgulas (exemplo: john.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Número de dígitos ocultos",
-    "HIDDENDIGITSPOS": "Posição dos Dígitos ocultos",
+    "HIDDENDIGITSNUM": "Número de Dígitos Ocultos",
+    "HIDDENDIGITSPOS": "Posição dos Dígitos Ocultos",
     "ID": "Id",
     "IMPORT": "Importar",
     "IMPORT_XML": "Importar XML",
     "ISPEECH_TTS_LANGUAGE": "Idioma",
     "KEY": "Key",
     "LABEL": "Label",
-    "LANGUAGECODE": "Código do idioma",
-    "LASTNAME": "Último nome",
+    "LANGUAGECODE": "Código do Idioma",
+    "LASTNAME": "Sobrenome",
     "LIST_ID": "Lista",
     "LOGIN": "Login",
     "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
-    "MAILBOX": "Caixa de correio",
+    "MAILBOX": "Caixa de Correio",
     "MATH": "Math",
     "MAXDIGIT": "Dígitos Máximos",
     "MENU": "Menu",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NAME": "Nome",
-    "NDAACTIVITY_TYPE": "Tipo de atividade",
-    "NDAGENERATE_AUDIO": "Gerar arquivo de áudio",
-    "NDASSISTANT_URL": "URL NDASSISTANT",
-    "NDAUTH_URL": "URL do NDAUTH",
+    "NDAACTIVITY_TYPE": "Tipo de Atividade",
+    "NDAGENERATE_AUDIO": "Gerar Arquivo de Áudio",
+    "NDASSISTANT_URL": "NDASSISTANT Url",
+    "NDAUTH_URL": "NNDAUTH Url",
     "NEW": "Novo",
     "NEW_ODBC": "Nova conexão ODBC",
-    "NEW_PROJECT": "Novo projeto",
+    "NEW_PROJECT": "Novo Projeto",
     "NEW_VARIABLE": "Nova Variável",
     "NOOP": "NoOp",
-    "NOTES": "Notas",
+    "NOTES": "Anotações",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NUMBER": "Número",
     "ODBC": "ODBC",
     "OF": "do",
     "OPEN": "Abrir",
     "OPEN_NEW_WINDOW": "Abra em uma nova janela",
-    "OPEN_PROJECT": "Projeto aberto",
+    "OPEN_PROJECT": "Projeto Aberto",
     "OPERATION": "Operação",
     "OPTIONS": "Opções",
     "OPTS": "Opções",
     "PASSWORD": "Senha",
     "PAUSE": "Pausa",
     "PAUSE_ID": "Tipo de pausa",
-    "PERMISSIONADD_PROJECTS": "Adicionar usuários ao projeto",
+    "PERMISSIONADD_PROJECTS": "Adicionar Usuários ao Projeto",
     "PHONE": "Telefone",
     "PLAYBACK": "Reprodução",
     "POSITION": "Posição",
     "RAWBODY": "Corpo",
     "RAWHEADERS": "Cabeçalhos",
     "RECORD": "Gravação",
-    "RECORDINGFORMAT": "Formato de gravação",
-    "RESPONSE": "Tempo limite de resposta",
+    "RECORDINGFORMAT": "Formato de Gravação",
+    "RESPONSE": "Tempo Limite de Resposta",
     "RESTAPI": "API Rest",
     "RETRY": "Repetições",
     "ROWSPERPAGE": "Linhas por página",
     "SAVE": "Salvar",
-    "SAYDIGITS": "Say Digits",
-    "SAYNUMBER": "Say number",
+    "SAYDIGITS": "Falar Dígitos",
+    "SAYNUMBER": "Falar Numero",
     "SAYPHONETIC": "Say Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
     "SELECTED_USERS": "Usuários Selecionados",
-    "SELECT_ALL": "Selecionar tudo",
-    "SELECT_NONE": "Selecione nenhum",
+    "SELECT_ALL": "Selecionar Tudo",
+    "SELECT_NONE": "Selecione Nenhum",
     "SENDFAX": "Enviar Fax",
     "SENDMAIL": "Enviar Email",
     "SENDSMS": "Enviar SMS",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Unique ID",
     "UNPAUSE": "Fim da Pausa",
-    "UPDATE_DESCRIPTION": "Atualizar descrição",
-    "UPDATE_INFO": "Informação de atualização",
+    "UPDATE_DESCRIPTION": "Atualizar Descrição",
+    "UPDATE_INFO": "Update Info",
     "URI": "URI",
     "URL": "URL",
-    "USERNAME": "Nome de usuário",
+    "USERNAME": "Nome de Usuário",
     "USERS": "Usuários",
     "VARIABLE_ID": "Variável",
     "VARIABLE_VALUE": "Valor",
-    "VOICEMAIL": "Correio de voz",
+    "VOICEMAIL": "Correio de Voz",
     "VSWITCH": "Variable Switch",
-    "CLIENT_EMAIL": "Email do cliente",
+    "CLIENT_EMAIL": "Email do Cliente",
     "DIALOGFLOWV2": "DialogflowV2",
-    "DIALOGFLOWV2_LANGUAGE": "Língua",
-    "DIALOGFLOWV2_PROJECT_ID": "ID do projeto",
-    "PRIVATE_KEY": "Chave privada",
+    "DIALOGFLOWV2_LANGUAGE": "Idioma",
+    "DIALOGFLOWV2_PROJECT_ID": "ID do Projeto",
+    "PRIVATE_KEY": "Chave Privada",
     "DIALTIMEZONE": "Fuso horário de discagem"
   }
 }
index 2f3b48e..5dc84d3 100644 (file)
 {
   "CHAT": {
-    "EDIT_AMAZONLEX": "Edit Amazon Lex",
+    "EDIT_AMAZONLEX": "Redigeeri Amazon Lexi",
     "AMAZONLEX": "Amazon Lex",
-    "ACCESSKEYID": "Access Key ID",
-    "SECRETACCESSKEY": "Secret Access Key",
-    "LEXREGION": "Region",
-    "BOTNAME": "Bot Name",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "ENABLECUSTOMERCHECKMARKS": "Enable customer delivered/read notifications",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "SYSTEMAVATAR": "System Avatar",
-    "SYSTEMALIAS": "System Alias",
-    "WELCOMEMESSAGE": "Welcome Message",
-    "LANGUAGE": "Language",
-    "EDIT_DIALOGFLOW": "Edit Dialogflow",
-    "DIALOGFLOW": "Dialogflow",
-    "BACKGROUNDCOLOR": "Background Color",
-    "MESSAGEFONTSIZE": "Message Font Size",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "CUSTOMERALIAS": "Customer Alias",
-    "SNIPPETSWIPEOUT": "Snippet swipe out",
-    "CUSTOMERAVATAR": "Customer Avatar",
-    "SHOWCUSTOMERAVATAR": "Show customer avatar",
-    "DEFAULTTITLE": "Default Title",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ALTERNATE": "Alternate",
-    "CENTERED": "Centered",
-    "POSITION": "Position",
-    "VERTICALPOSITION": "Vertical position",
-    "ALIGNMENT": "Alignment",
-    "VERTICALALIGNMENT": "Vertical alignment",
-    "BOTTOM_RIGHT": "Bottom right",
-    "RIGHT": "Right",
-    "LEFT": "Left",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "AGENTIDENTIFIER": "Identifier",
-    "WEBSITEALIAS": "Website Alias",
-    "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent Fullname",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "HIDEWHENOFFLINE": "Hide",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "TEXTCOLOR": "Text Color",
-    "FONTSIZE": "Font Size",
-    "WEBSCRIPT": "Web Script",
-    "CANNEDANSWERS": "Canned Answers",
-    "CHATCANNEDANSWERS": "Canned Answers",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_CHATCANNEDANSWER": "New Canned Answer",
-    "ADD_CHATCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit",
-    "DELETE_CHATCANNEDANSWER": "Delete",
-    "OFFLINEMESSAGESUBJECT": "Message subject",
-    "OFFLINEMESSAGEBODY": "Message body",
-    "FORMSUBMITSUCCESSMESSAGE": "Form submit success message",
-    "FORMSUBMITFAILUREMESSAGE": "Form submit failure message",
-    "PLACEHOLDERMESSAGE": "Message placeholder",
-    "NOTETITLE": "Note's title",
-    "CLOSINGQUESTION": "Closing question",
-    "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Show personal agent avatar",
-    "AGENTAVATAR": "Agent Avatar",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Go To Realtime Chat Queue",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "AGENTSADD_QUEUE": "Add Agent to Chat Queue",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "WRITING": "Writing",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Openchannel",
-    "FAX": "Fax",
-    "PAUSE": "Pause",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "UNPAUSE": "End Pause",
-    "AGENTADD_QUEUE": "Add Agent to Chat Queue",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NEW_CHATDISPOSITION": "New Chat Disposition",
-    "ENABLECUSTOMERATTACHMENT": "Enable Customer Attachments",
-    "OFFLINE_CHAT_BUTTON": "'Offline Chat' Button",
-    "OFFLINESTATUS": "Offline Status",
-    "NAME": "Name",
-    "CHATQUEUES": "Chat Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "KEY": "Key",
+    "ACCESSKEYID": "Pääsuvõtme ID",
+    "SECRETACCESSKEY": "Salajane Pääsuvõti",
+    "LEXREGION": "Piirkond",
+    "BOTNAME": "Boti Nimi",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "ENABLECUSTOMERCHECKMARKS": "Luba kliendi edastatud/loetud teated",
+    "TRANSFER": "Edasta",
+    "QUEUETRANSFER": "Ooteaja Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Ooteaja Edastamise lõpp",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise lõpp",
+    "SYSTEMAVATAR": "Süsteemi Avatar",
+    "SYSTEMALIAS": "Süsteemi Alias",
+    "WELCOMEMESSAGE": "Tervitussõnum",
+    "LANGUAGE": "Keel",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoogu",
+    "DIALOGFLOW": "Dialoogivoog",
+    "BACKGROUNDCOLOR": "Taustavärv",
+    "MESSAGEFONTSIZE": "Sõnumi Fondi Suurus",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "CUSTOMERALIAS": "Kliendi Alias",
+    "SNIPPETSWIPEOUT": "Väljavõtte nipsamine",
+    "CUSTOMERAVATAR": "Kleindi Avatar",
+    "SHOWCUSTOMERAVATAR": "Näita kliendi avatari",
+    "DEFAULTTITLE": "Vaiketiitel",
+    "MESSAGESALIGNMENT": "Sõnumite Joondus",
+    "ALTERNATE": "Alternatiiv",
+    "CENTERED": "Keskele",
+    "POSITION": "Paigutus",
+    "VERTICALPOSITION": "Vertikaalne Paigutus",
+    "ALIGNMENT": "Joondus",
+    "VERTICALALIGNMENT": "Vertikaalne Joondus",
+    "BOTTOM_RIGHT": "All paremal",
+    "RIGHT": "Paremal",
+    "LEFT": "Vasakul",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "AGENTIDENTIFIER": "Identifikaator",
+    "WEBSITEALIAS": "Veebileehe alias",
+    "AGENTALIAS": "Agendi Alias",
+    "AGENTFULLNAME": "Agendi Täisnimi",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "HIDEWHENOFFLINE": "Peida",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "TEXTCOLOR": "Teksti Värv",
+    "FONTSIZE": "Fondi Suurus",
+    "WEBSCRIPT": "Veebi skript",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "CHATCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole Saadaval",
+    "NEW_CHATCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_CHATCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri",
+    "DELETE_CHATCANNEDANSWER": "Kustuta",
+    "OFFLINEMESSAGESUBJECT": "Sõnumi teema",
+    "OFFLINEMESSAGEBODY": "Sõnumi sisu",
+    "FORMSUBMITSUCCESSMESSAGE": "Vormi edastamise õnnestumisteade",
+    "FORMSUBMITFAILUREMESSAGE": "Vormi edastamise ebaõnnestumisteade",
+    "PLACEHOLDERMESSAGE": "Sõnumi kohatäide",
+    "NOTETITLE": "Märkme pealkiri",
+    "CLOSINGQUESTION": "Lõpetav küsimus",
+    "TAGS": "Sildid",
+    "SHOWAGENTAVATAR": "Näita isiklikku agendi avatari",
+    "AGENTAVATAR": "Agendi Avatar",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_CHATQUEUE": "Mine Reaalajavestluse Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "AGENTSADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "WRITING": "Ootel",
+    "CHAT": "Vestlus",
+    "MAIL": "E-kiri",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Avatud kanal",
+    "FAX": "Faks",
+    "PAUSE": "Ootele",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Olek",
+    "LOGOUT": "Logi välja",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Vestluse Järjekorda",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NEW_CHATDISPOSITION": "Uue Vestluse Kasutaminene",
+    "ENABLECUSTOMERATTACHMENT": "Luba Kliendi Manused",
+    "OFFLINE_CHAT_BUTTON": "'Võrguühenduseta Vestluse' Nupp",
+    "OFFLINESTATUS": "Võrgust väljas staatus",
+    "NAME": "Nimi",
+    "CHATQUEUES": "Vestluse Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Ajalõpp",
+    "DESCRIPTION": "Kirjeldus",
+    "KEY": "Võti",
     "ALIAS": "Alias",
-    "VARIABLE": "Variable",
-    "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Edit Close",
-    "TIMEZONE": "Timezone",
-    "MESSAGE": "Message",
-    "ADVANCED": "Advanced",
-    "FORWARDTRANSCRIPT": "Forward Transcript",
-    "FORWARDTRANSCRIPTMESSAGE": "Forward Transcript Message",
-    "SKIPMESSAGEBUTTON": "Skip Message Button",
-    "EDIT_MESSAGE": "Edit Message",
-    "CONDITION_AGREEMENT": "Condition Agreement",
-    "NONE": "None",
-    "PRIORITY": "Priority",
-    "ONLINESTATUS": "Online Status",
-    "UNMANAGEDSTATUS": "Unmanaged Status",
-    "AUTOCLOSE": "Enable Autoclose",
-    "ENABLEUNMANAGEDNOTE": "Enable Unmanaged Message",
-    "UNMANAGEDMESSAGE": "Message",
-    "SKIPUNMANAGED": "Skip Message",
-    "SENDUNMANAGED": "Send Message",
-    "WEBSITESCRIPT": "Website Script",
-    "DELETE_OFFLINEMESSAGE": "Delete",
-    "OFFLINEMESSAGES": "Offline Messages",
-    "FORWARD_OFFLINE": "Forward Offline",
-    "SHOW_OFFLINEMESSAGE": "Show",
-    "FORWARD_OFFLINE_ADDRESS": "Forward Offline Address",
-    "CLOSINGFORM": "Closing Form",
-    "ENABLERATING": "Enable Rating",
-    "ENABLECUSTOMERWRITING": "Allow customer writing before agent accepting",
-    "ENABLEFEEDBACK": "Enable Feedback",
-    "RATINGTYPE": "Rating Type",
-    "CLOSINGMESSAGE": "Closing Message",
-    "CLOSINGMESSAGEBUTTON": "Closing Message Button",
-    "RATINGSTARSNUMBER": "Rating Stars Number",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
+    "VARIABLE": "Muutuja",
+    "INTERVAL": "Intervall",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "TIMEZONE": "Ajavöönd",
+    "MESSAGE": "Sõnum",
+    "ADVANCED": "Täpsem",
+    "FORWARDTRANSCRIPT": "Edasta Transkriptsioon",
+    "FORWARDTRANSCRIPTMESSAGE": "Edasta Transkriptsiooni Teade",
+    "SKIPMESSAGEBUTTON": "Eira Sõnumi Nuppu",
+    "EDIT_MESSAGE": "Redigeeri Sõnumit",
+    "CONDITION_AGREEMENT": "Tingimusleping",
+    "NONE": "Pole",
+    "PRIORITY": "Prioriteet",
+    "ONLINESTATUS": "Võrgusolek",
+    "UNMANAGEDSTATUS": "Haldamata Olek",
+    "AUTOCLOSE": "Luba Automaatne Sulgemine",
+    "ENABLEUNMANAGEDNOTE": "Luba Haldamata Sõnum",
+    "UNMANAGEDMESSAGE": "Sõnum",
+    "SKIPUNMANAGED": "Jäta vahele Sõnum",
+    "SENDUNMANAGED": "Saada Sõnum",
+    "WEBSITESCRIPT": "Veebilehe Skript",
+    "DELETE_OFFLINEMESSAGE": "Kustuta",
+    "OFFLINEMESSAGES": "Võrguühenduseta Sõnumid",
+    "FORWARD_OFFLINE": "Saada edasi Võrguühenduseta",
+    "SHOW_OFFLINEMESSAGE": "Näita",
+    "FORWARD_OFFLINE_ADDRESS": "Saada edasi Võrguühenduseta Aadress",
+    "CLOSINGFORM": "Sulgemise Vorm",
+    "ENABLERATING": "Luba Hindamine",
+    "ENABLECUSTOMERWRITING": "Luba kliendil kirjutamine enne agendi aktsepteerimist",
+    "ENABLEFEEDBACK": "Luba Tagasiside",
+    "RATINGTYPE": "Hinnangu Tüüp",
+    "CLOSINGMESSAGE": "Sulgemise Vorm",
+    "CLOSINGMESSAGEBUTTON": "Sulgemise Sõnumi Nupp",
+    "RATINGSTARSNUMBER": "Hinnangu Tähtede Arv",
+    "EDIT_GOTOIF": "Redigeeri GotoIfi",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Mandatory Field",
-      "SECRETACCESSKEY_REQUIRED": "Mandatory Field",
-      "ACCESSKEYID_REQUIRED": "Mandatory Field",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_REQUIRED": "Mandatory Field",
-      "AGENTALIAS_REQUIRED": "Mandatory Field",
-      "SYSTEMALIAS_REQUIRED": "Mandatory Field",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MESSAGEFONTSIZE_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_REQUIRED": "Mandatory Field",
-      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "CUSTOMERALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SYSTEMALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "NOTETITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "CLOSINGQUESTION_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "HEADER_OFFLINE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_REQUIRED": "Mandatory Field",
-      "SENDUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SKIPUNMANAGED_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WEBSITEALIAS_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
+      "BOTNAME_REQUIRED": "Kohustuslik Väli",
+      "SECRETACCESSKEY_REQUIRED": "Kohustuslik Väli",
+      "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_REQUIRED": "Kohustuslik väli",
+      "AGENTALIAS_REQUIRED": "Kohustuslik väli",
+      "SYSTEMALIAS_REQUIRED": "Kohustuslik väli",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MESSAGEFONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TAG_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_REQUIRED": "Kohustuslik väli",
+      "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema {{max}}",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "CUSTOMERALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SYSTEMALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "NOTETITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "HEADER_OFFLINE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "TEXT_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_REQUIRED": "Kohustuslik väli",
+      "SENDUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WEBSITEALIAS_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
       "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "EMAIL_MUST_BE_VALID": "Wrong format",
-      "ADDRESS_REQUIRED": "Mandatory Field",
-      "ADDRESS_MUST_VALID_URL": "Wrong format",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " The value must be greater than or equal to",
-      "WAITINGMESSAGE_REQUIRED": "Mandatory Field",
-      "WAITINGTITLE_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "WAITINGMESSAGE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "WAITINGTITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "EMAIL_MUST_BE_VALID": "Vale formaat",
+      "ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Väärtus peab olema suurem või võrdne",
+      "WAITINGMESSAGE_REQUIRED": "Kohustuslik väli",
+      "WAITINGTITLE_REQUIRED": "Kohustuslik väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "WAITINGMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "WAITINGTITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema{{max}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "VIDAOOAPIKEY_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "VIDAOOTOPIC_REQUIRED": "Kohustuslik väli",
       "EMAIL_ACCOUNT_REQUIRED": "Kohustuslik väli"
     },
-    "CM_FIELD": "Contact Manager Field",
-    "CHATPROACTIVEACTIONS": "Proactive Actions",
-    "NEW_CHATPROACTIVEACTION": "New Proactive Action",
-    "EDIT_CHATPROACTIVEACTION": "Edit Proactive Action",
-    "DELETE_CHATPROACTIVEACTION": "Delete Proactive Action",
-    "ADD_CHATPROACTIVEACTION": "Add Proactive Action",
-    "NO_CHATPROACTIVEACTION_AVAILABLE": "No Proactive Actions Available",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "No Offline Messages Available",
-    "MOUSEOVER": "Mouse Over",
-    "TIMEOUT": "Timeout",
-    "TYPE": "Type",
-    "SELECTOR": "Selector",
+    "CM_FIELD": "Kontakteeru Esindajaga väli",
+    "CHATPROACTIVEACTIONS": "Ennetavad Tegevused",
+    "NEW_CHATPROACTIVEACTION": "Uus Ennetav Tegevus",
+    "EDIT_CHATPROACTIVEACTION": "Redigeeri Ennetavat Tegevust",
+    "DELETE_CHATPROACTIVEACTION": "Kustuta Ennetav Tegevus",
+    "ADD_CHATPROACTIVEACTION": "Lisa Ennetav Tegevus",
+    "NO_CHATPROACTIVEACTION_AVAILABLE": "Ennetavaid Tegevusi pole Saadaval",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Võrguväliseid Sõnumeid pole Saadaval",
+    "MOUSEOVER": "Kursor Peal",
+    "TIMEOUT": "Aegumine",
+    "TYPE": "Tüüp",
+    "SELECTOR": "Selektor",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "GotoIf",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_GOTOIf": "Edit GotoIf",
-    "EDIT_NOOP": "Edit Noop",
-    "ADD_CHATQUEUE": "Add Chat Queue",
-    "EDIT_CHATQUEUE": "Edit Chat Queue",
-    "DELETE_CHATQUEUE": "Delete Chat Queue",
-    "SETTINGS": "Settings",
-    "SAVE": "Save",
-    "SCRIPT": "Script",
-    "TOKEN": "Token",
-    "CREATED_AT": "Created At",
-    "CHATWEBSITES": "Chat Websites",
-    "MOTIONADDRESS": "Website Domain",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "ADD_CHATWEBSITE": "Add Chat Website",
-    "EDIT_CHATWEBSITE": "Edit Chat Website",
-    "DELETE_CHATWEBSITE": "Delete Chat Website",
-    "LIST": "List",
-    "SNIPPET": "Snippet",
-    "FORMS": "Forms",
-    "UP": "Up",
-    "DOWN": "Down",
-    "COLLAPSE": "Collapse",
-    "PROACTIVEACTIONS": "Proactive Actions",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "FIDELITY": "Fidelity",
-    "APPEARANCE": "Appearance",
-    "MAINCOLOR": "Main Color",
-    "FOCUSCOLOR": "Focus Color",
-    "BUTTONCOLOR": "Button Color",
-    "HEADERSHAPE": "Header Shape",
-    "ANIMATION": "Animation",
-    "DEFAULT": "Default",
-    "WHITELABEL": "White Label",
+    "QUEUE": "Järjekord Queue",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_GOTOIf": "Redigeeri GotoIf",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "ADD_CHATQUEUE": "Lisa Vestluse Järjekord",
+    "EDIT_CHATQUEUE": "Redigeeri Vestluse Järjekorda",
+    "DELETE_CHATQUEUE": "Kustuta Vestluse Järjekord",
+    "SETTINGS": "Sätted",
+    "SAVE": "Salvesta",
+    "SCRIPT": "Skript",
+    "TOKEN": "Luba",
+    "CREATED_AT": "Loodud",
+    "CHATWEBSITES": "Vestluse Veebisaidid",
+    "MOTIONADDRESS": "Veebisaididomeen",
+    "MOTIONPROXY": "Puhvri või Liikumise domeen",
+    "ADD_CHATWEBSITE": "Lisa Vestluse Veebisait",
+    "EDIT_CHATWEBSITE": "Redigeeri Vestluse Veebisaiti",
+    "DELETE_CHATWEBSITE": "Kustuta Vestluse Veebisait",
+    "LIST": "Loend",
+    "SNIPPET": "Lõigend",
+    "FORMS": "Vormid",
+    "UP": "Üles",
+    "DOWN": "Alla",
+    "COLLAPSE": "Ahenda",
+    "PROACTIVEACTIONS": "Ennetavad Tegevused",
+    "DISPOSITIONS": "kasutaminesed",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "FIDELITY": "Kvaliteet",
+    "APPEARANCE": "Välimus",
+    "MAINCOLOR": "Põhivärv",
+    "FOCUSCOLOR": "Fookuse Värv",
+    "BUTTONCOLOR": "Nupu Värv",
+    "HEADERSHAPE": "Päise Kujund",
+    "ANIMATION": "Animatsioon",
+    "DEFAULT": "Vaikimisi",
+    "WHITELABEL": "Valge sedel",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcript",
-    "ENQUIRY_ENABLE": "Enquiry Enable",
-    "ENQUIRY_FORWARDING": "Enquiry Forwarding",
-    "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
-    "LABELS": "Labels",
-    "HEADER_ONLINE": "Online Header",
-    "ONLINE_MESSAGE": "Online Message",
-    "NAME_TITLE": "Name Input Label",
-    "USERNAME_PLACEHOLDER": "Username Input Placeholder",
-    "EMAIL_TITLE": "Email Input Label",
-    "EMAIL_PLACEHOLDER": "Email Input Placeholder",
-    "START_CHAT_BUTTON": "'Start Chat' Button",
-    "AGENTS_BUSY": "Busy Agents Message",
-    "HEADER_OFFLINE": "Offline Header",
-    "OFFLINE_MESSAGE": "Offline Message",
-    "MESSAGE_TITLE": "Message Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Enquiry Message Input Placeholder",
-    "ENQUIRY_BUTTON": "Enquiry Button Text",
-    "RATING_MESSAGE": "Rating Message",
-    "RATING_SEND": "Rating Send Button Text",
-    "RATING_SKIP": "Rating Skip Button Text",
-    "ONLINE": "Online",
-    "OFFLINE": "Offline",
-    "PROACTIVE": "Proactive",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "EMBEDDING": "Embedding",
-    "GENERAL": "General",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DOWNLOADTRANSCRIPT": "Laadi alla Transkriptsioon",
+    "ENQUIRY_ENABLE": "Päringu Lubamine",
+    "ENQUIRY_FORWARDING": "Päringu Edastamine",
+    "ENQUIRY_FORWARDING_ADDRESS": "Päringu Edastamise Aadress",
+    "LABELS": "Sildid",
+    "HEADER_ONLINE": "Võrguühendusega Päis",
+    "ONLINE_MESSAGE": "Võrguühendusega Sõnum",
+    "NAME_TITLE": "Nime Sisendi Sedel",
+    "USERNAME_PLACEHOLDER": "Kasutajanime Sisendi Kohatäide",
+    "EMAIL_TITLE": "E-kirja Sisendi Sedel",
+    "EMAIL_PLACEHOLDER": "E-kirja Sisendi Kohatäide",
+    "START_CHAT_BUTTON": "'Alusta Vestlust' Nupp",
+    "AGENTS_BUSY": "Hõivatud Agendi Sõnum",
+    "HEADER_OFFLINE": "Võrguühenduseta Päis",
+    "OFFLINE_MESSAGE": "Võrguühenduseta Sõnum",
+    "MESSAGE_TITLE": "Sõnumi Sedel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Päringu Sõnumi Sisendi Kohatäide",
+    "ENQUIRY_BUTTON": "Päringu Nupu Tekst",
+    "RATING_MESSAGE": "Hinnangu Sõnum",
+    "RATING_SEND": "Hinnangu Saada Nupu Tekst",
+    "RATING_SKIP": "Hinnangu Jäta vahele Nupu Tekst",
+    "ONLINE": "Võrguühendusega",
+    "OFFLINE": "Võrguühenduseta",
+    "PROACTIVE": "Ennetav",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka Tagasi",
+    "REJECTMETHOD": "Lükka Tagasi Meetod",
+    "REJECTURL": "Lükka Tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "EMBEDDING": "Manustamine",
+    "GENERAL": "Üldine",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "HELP": {
-      "VERTICALPOSITION": "Represents the distance in percentage from top",
-      "AGENTIDENTIFIER": "Represents the agent identifier within the chat session in the snippet",
-      "HIDEWHENOFFLINE": "Hides snippet when offline",
-      "KEY": "Website short name (5 char) shown on the Agent Tab",
-      "TOKEN": "Automatically generated token used in the Script",
-      "INTEVAL": "To be selected from the list of the available intervals",
-      "TIMEZONE": "Select one from the list (default=local timezone)",
-      "ENABLERATING": "Enable it if you want the web visitor can rate the interaction at the end",
-      "ENABLEFEEDBACK": "Enable it if you want the web visitor can send a feedback (up to 150 char) at the end",
-      "FORWARDTRANSCRIPT": "Enable it if you want the web visitor is asked to receive a chat transcript via email",
-      "AUTOCLOSE": "Enable it if you want chat sessions to be closed as Unmanaged if no agent is available. Learn more about it at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Enable it if you want the visitor is shown a message when all the agents are busy and the chat gets unmanaged",
-      "WEBSITEALIAS": "A prefix used to compose the agent name (prefix+Agent Id) shown to the web visitor during the chat session",
-      "ENABLECUSTOMERWRITING": " Enable it if you want the chat starts without waiting for an available agent (pay attention: if you enable it, your chats will never get unmanaged). Learn more at: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-      "MAPKEY": "The following Motion Contact Manager field:",
-      "FROMKEY": "Will be mapped in your Motion Chat Snippet as:",
-      "COPYSCRIPTTOCLIPBOARD": "Copy and paste the script text into your website",
-      "FORWARD_OFFLINE": "You can add multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate Contacts",
-      "INTERVAL": "Select one from the list",
-      "WELCOMEMESSAGE": "Leave empty if you don't want to send any welcome message",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud"
+      "VERTICALPOSITION": "Tähistab kaugust ülevalt protsentides",
+      "AGENTIDENTIFIER": "Tähistab agendi identifikaatorit vestluse sessiooni piires lõigendis",
+      "HIDEWHENOFFLINE": "Peidab lõigendi võrguühenduseta olekus",
+      "KEY": "Veebisaidi lühinimi (5 tähemärki), mida kuvatakse agendi vahelehel",
+      "TOKEN": "Automaatselt genereeritud luba, mida kasutatakse skriptis",
+      "INTEVAL": "Valitav saadaolevate intervallide loendist",
+      "TIMEZONE": "Vali loendist üks (vaikimisi=kohalik ajavöönd)",
+      "ENABLERATING": "Aktiveeri see, kui soovid, et veebi külastaja saaks suhtlust hinnata lõpus",
+      "ENABLEFEEDBACK": "Aktiveeri see, kui soovid, et veebi külastaja saaks tagasisidet saata (kuni 150 tähemärki) lõpus",
+      "FORWARDTRANSCRIPT": "Aktiveeri see, kui soovid, et veebi külastajale pakutakse vestluse transkriptsiooni saamist e-kirja teel",
+      "AUTOCLOSE": "Aktiveeri see, kui soovid vestluse sessioonide sulgemist haldamata, kui ühtegi agenti pole saadaval. Uuri selle kohta täpsemalt siin: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Aktiveeri see, kui soovid, et külastajale kuvatakse teadet, et kõik agendid on hõivatud ja vestlust ei hallata",
+      "WEBSITEALIAS": "Agendi nime koostamiseks kasutatav eesliide (eesliide+agent ID), mis kuvatakse veebi külastajale vestluse sessiooni jooksul",
+      "ENABLECUSTOMERWRITING": "Aktiveeri see, kui soovid, et vestlus algaks vaba agenti ootamata (pane tähele: kui aktiveerid selle, ei ole sinu vestlused enam kunagi haldamata). Uuri täpsemalt: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
+      "MAPKEY": "Järgmine liikumise kontakti halduri väli:",
+      "FROMKEY": "Vastendatakse sinu liikumise vestluse lõigendis kui:",
+      "COPYSCRIPTTOCLIPBOARD": "Kopeeri ja kleebi skripti tekst oma veebisaidile",
+      "FORWARD_OFFLINE": "saad lisada mitu aadressi komaga eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näide: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja kindlad märgid (._) on toetatud",
+      "LIST": "Kontakti halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "INTERVAL": "Vali loendist üks",
+      "WELCOMEMESSAGE": "Jäta tühjaks, kui sa ei soovi saata tervitussõnumit",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud"
     },
-    "ADDRESS": "Address",
-    "ONLINESTATE": "Online Status",
-    "OFFLINESTATE": "Offline Status",
-    "RATINGSTATE": "Rating State",
-    "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Offline Template",
-    "CHATDISPOSITIONS": "Chat Dispositions",
-    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositions available",
-    "ADD_CHATDISPOSITION": "Add Chat Disposition",
-    "DELETE": "Delete",
-    "EDIT_CHATDISPOSITION": "Edit Chat Disposition",
-    "DELETE_CHATDISPOSITION": "Delete Chat Disposition",
-    "ID": "Id",
-    "NEW_CHATQUEUE": "New Chat Queue",
-    "NEW_CHATWEBSITE": "New Chat Website",
-    "ROUNDED": "Rounded",
-    "SQUARED": "Squared",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "ADDRESS": "Aadress",
+    "ONLINESTATE": "Võrguühendusega Olek",
+    "OFFLINESTATE": "Võrguühenduseta Olek",
+    "RATINGSTATE": "Hindamise Staatus",
+    "ENQUIRY": "Päring",
+    "OFFLINETEMPLATE": "Võrguühenduseta Mall",
+    "CHATDISPOSITIONS": "Vestluse Kasutused",
+    "NO_CHATDISPOSITION_AVAILABLE": "Vestluse Kasutamised Pole Saadaval",
+    "ADD_CHATDISPOSITION": "Lisa Vestluse Kasutamine",
+    "DELETE": "Kustuta",
+    "EDIT_CHATDISPOSITION": "Redigeeri Vestluse Kasutamist",
+    "DELETE_CHATDISPOSITION": "Kustuta Vestluse Kasutamine",
+    "ID": "ID",
+    "NEW_CHATQUEUE": "Uus Vestluse Järjekord",
+    "NEW_CHATWEBSITE": "Uus Vestluse Veebisait",
+    "ROUNDED": "Ümargune",
+    "SQUARED": "Ruudukujuline",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "WEBSITE": "Website",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Alustamise aeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Avatud",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "WEBSITE": "Veebisait",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali Staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Add Team to Chat Queue",
-    "AGENTADD_CHATQUEUE": "Add Agent to Chat Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CREATEDAT": "Created At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECTED_WEBSITE": "Select a website",
+    "FILTERS": "Filtrid",
+    "TEAMADD_CHATQUEUE": "Lisa Tiim Vestluse Järjekorda",
+    "AGENTADD_CHATQUEUE": "Lisa agent Vestluse Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSEDAT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutamine",
+    "CREATEDAT": "Loomise aeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhlusi pole saadaval",
+    "SELECTED_WEBSITE": "Vali veebisait",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "SELECT_WEBSITE": "Select a website",
-    "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Go to Offline Messages",
-    "WAITINGTITLE": "Waiting Title",
-    "WAITINGMESSAGE": "Waiting Message",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "No Rating",
-    "DEFAULT_PAUSE": "Default pause",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "INTERACTIONS_CHATWEBSITE": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_CHATWEBSITE": "Add Agent to Chat Website",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "SELECT_WEBSITE": "Vali veebisait",
+    "INFO": "Teave",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Mine Võrguühenduseta Sõnumitesse",
+    "WAITINGTITLE": "Ootamise Pealkiri",
+    "WAITINGMESSAGE": "Ootamise Sõnum",
+    "RATING": "Hindamine",
+    "NO_RATINGVALUE": "Hindamine puudub",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "UNKNOWN": "Tundmatu",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "INTERACTIONS_CHATWEBSITE": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Uuenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_CHATWEBSITE": "Lisa Agent Vestluse Veebisaidile",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "ENABLESENDBUTTON": "Luba nupp Saada",
     "FEEDBACKTITLE": "Tagasiside pealkiri",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api võti",
     "OPEN_NEW_INTERACTION": "Avage uus suhtlus",
     "SUBJECT": "Teema",
     "ADD_NOTE": "Lisada märkus",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "NOTE": "Märge",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "NOTE": "Märkus",
     "VIDAOOMETADATA": "Vidaoo metaandmed",
     "VIDAOONOTE": "Vidaoo märkus",
     "VIDAOOTOPIC": "Vidaoo teema",
     "CHANNELID": "Kanali ID",
-    "EDIT_TVOX": "Muutke TVoxi",
+    "EDIT_TVOX": "Muuda TVoxi",
     "MOTIONTITLE": "Liikumise pealkiri",
     "MOTIONURL": "Liikumise URL",
     "MOTIONURLONANSWER": "Liikumise URL vastuses",
     "SERVICEID": "Teenuse ID",
     "SERVICENAME": "Teenuse nimi",
     "TVOX": "TVox",
-    "TVOXIP": "TVoxi IP -aadress",
+    "TVOXIP": "TVoxi IP-aadress",
     "TVOXLOGINURL": "TVox Logi sisse REST Url",
     "TVOXPASSWD": "TVoxi parool",
     "TVOXSESSIONURL": "TVoxi seansi REST Url",
-    "TVOXURL": "TVoxi IP -aadress",
+    "TVOXURL": "TVoxi IP-aadress",
     "TVOXUSERNAME": "TVoxi kasutajanimi",
     "LABELTEXT": "Sildi tekst",
     "TEXT_BUTTON_COLOR": "Teksti nupu värv"
index 2592ba3..494d629 100644 (file)
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Select tags",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "USERID": "Recall Agent ID",
-    "PRIORITY": "Priority",
-    "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Import Contacts",
-    "PREFIX": "Dial Prefix",
-    "VOICEQUEUEID": "VoiceQueue ID",
-    "CAMPAIGNID": "Campaign ID",
-    "STATE": "State",
-    "NAME": "Name",
-    "LISTS": "Lists",
-    "UNIQUEID": "Unique Id",
-    "STATUS": "Status",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MOTION_BULL": "Motion Bull",
+    "SELECT_TAG": "Vali sildid",
+    "CUSTOMER_JOURNEY": "Klienditeekond",
+    "USERID": "Kutsu tagasi Agendi ID",
+    "PRIORITY": "Prioriteet",
+    "MOTIONDIALER": "Liikumise Pull",
+    "IMPORT_CONTACTS": "Impordi Kontaktid",
+    "PREFIX": "Helistamise Eesliide",
+    "VOICEQUEUEID": "Hääljärjekorra ID",
+    "CAMPAIGNID": "Kampaania ID",
+    "STATE": "Olek",
+    "NAME": "Nimi",
+    "LISTS": "Loendid",
+    "UNIQUEID": "Unikaalne ID",
+    "STATUS": "Staatus",
+    "STARTTIME": "Algusaeg",
+    "ENDTIME": "Lõpuaeg",
+    "MOTION_BULL": "Liikumise Pull",
     "HOPPER": "Hopper",
-    "FINAL": "Hopper Final",
-    "HISTORY": "Hopper History",
-    "SCHEDULEDAT": "Scheduled At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_LIST": "Edit List",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_LIST": "Delete List",
-    "DELETE_HOPPER": "Delete Hopper",
-    "RELOAD": "Reload",
-    "NO_COMPANIES": "No Company",
-    "NO_AVAILABLE_ITEMS": "No Available Items",
-    "ADD": "Add",
+    "FINAL": "Hopperi Finaal",
+    "HISTORY": "Hopperi Ajalugu",
+    "SCHEDULEDAT": "Ajastatud",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_LIST": "Redigeeri loendit",
+    "EDIT_HOPPER": "Redigeeri Hopperit",
+    "DELETE_LIST": "Kustuta Loend",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "RELOAD": "Laadi uuesti",
+    "NO_COMPANIES": "Ettevõte puudub",
+    "NO_AVAILABLE_ITEMS": "Üksusi ei ole Saadaval",
+    "ADD": "Lisa",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "ALIAS_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "PHONEBAR_API": "Check the MotionBar is running and the remote control switch for the agent is turned on",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "ALIAS_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "PHONEBAR_API": "Kontrolli, et Liikumisriba töötaks ja kaugjuhtimislüliti agendi jaoks oleks sees",
       "ACTIONTYPE_REQUIRED": "Kohustuslik väli",
       "CLICKTOACTION_REQUIRED": "Kohustuslik väli"
     },
-    "DESCRIPTION": "Description",
-    "DISPOSITION": "Disposition",
-    "DISPOSITIONS": "Dispositions",
-    "VOICEDISPOSITIONS": "Voice Dispositions",
-    "NEW_VOICEDISPOSITION": "New Voice Disposition",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "ADD_LIST": "Add List",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "COMPANIES": "Companies",
-    "EDIT_COMPANY": "Edit Company",
-    "DELETE_COMPANY": "Delete Company",
-    "PHONE": "Phone",
-    "EMAIL": "Email",
-    "ADD_COMPANY": "Add Company",
-    "CONTACTS": "Contacts",
-    "NEW_LIST": "New List",
-    "FIRSTNAME": "First Name",
-    "LASTNAME": "Last Name",
-    "LIST": "List",
-    "COMPANY": "Company",
-    "ADD_CONTACT": "Add Contact",
-    "EDIT_CONTACT": "Edit Contact",
-    "MERGE_CONTACT": "Merge Contact",
-    "DUPLICATE_CONTACT": "Duplicate Contact",
-    "DELETE_CONTACT": "Delete Contact",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "DETAIL": "Detail",
-    "PERSONAL_INFO": "Personal Info",
-    "MOBILE": "Mobile",
-    "FAX": "Fax",
-    "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Show all fields",
-    "FEWER_FIELDS": "Show less fields",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "DELETE": "Delete",
-    "DELETE_ALL": "Delete All",
-    "CONTACTMANAGER": "Contacts Manager",
-    "ID": "Id",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CUSTOMFIELDS": "Custom Fields",
-    "NO_CUSTOMFIELD_AVAILABLE": "No Custom Fields available",
-    "ADD_TAG": "Add Tag",
-    "NO_TAG": "No Tags",
+    "DESCRIPTION": "Kirjeldus",
+    "DISPOSITION": "Kasutus",
+    "DISPOSITIONS": "Kasutused",
+    "VOICEDISPOSITIONS": "Hääle Kasutused",
+    "NEW_VOICEDISPOSITION": "Uus Hääle Kasutus",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "ADD_LIST": "Lisa Loendid",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "COMPANIES": "Ettevõtted",
+    "EDIT_COMPANY": "Redigeeri Ettevõtet",
+    "DELETE_COMPANY": "Kustuta Ettevõtted",
+    "PHONE": "Telefon",
+    "EMAIL": "E-post",
+    "ADD_COMPANY": "Lisa Ettevõte",
+    "CONTACTS": "Kontaktid",
+    "NEW_LIST": "Uus loend",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "LIST": "Loend",
+    "COMPANY": "Ettevõte",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "EDIT_CONTACT": "Muuda Kontakti",
+    "MERGE_CONTACT": "Koosta Kontakt",
+    "DUPLICATE_CONTACT": "Dubleeri Kontakti",
+    "DELETE_CONTACT": "Kustuta Kontakt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "DETAIL": "Üksikasi",
+    "PERSONAL_INFO": "Isiklik teave",
+    "MOBILE": "Mobiil",
+    "FAX": "Faks",
+    "TAGS": "Sildid",
+    "SHOW_ALL_FIELDS": "Näita kõik väljad",
+    "FEWER_FIELDS": "Näita vähem välju",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "DELETE": "Kustuta",
+    "DELETE_ALL": "Kustuta Kõik",
+    "CONTACTMANAGER": "Kontaktide Haldur",
+    "ID": "ID",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CUSTOMFIELDS": "Kohandatud Väljad",
+    "NO_CUSTOMFIELD_AVAILABLE": "Kohandatud Väljad pole saadaval",
+    "ADD_TAG": "Lisa Silt",
+    "NO_TAG": "Sildid Puuduvad",
     "ALIAS": "Alias",
-    "TYPE": "Type",
-    "VALUE": "Value",
-    "ADD_CUSTOMFIELD": "Add Custom Field",
-    "EDIT_CUSTOMFIELD": "Edit Custom Field",
-    "DELETE_CUSTOMFIELD": "Delete Custom Field",
-    "NEW_COMPANY": "New Company",
-    "NEW_CONTACT": "New Contact",
-    "NEW_TAG": "New Tag",
-    "UPLOAD_CONTACTS": "Upload Contacts",
-    "FINISH": "Finish",
-    "SUCCESS": "Success",
-    "FAILURE": "Failure",
-    "ALL_CONTACTS": "All Contacts",
-    "NEW_CUSTOMFIELD": "New Custom Field",
-    "NO_VOICEDISPOSITION_AVAILABLE": "No Voice Dispositions available",
-    "ADD_VOICEDISPOSITION": "Add Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "VAT": "VAT",
-    "COMPANYID": "Company ID",
-    "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Email Domain",
-    "ADDRESS": "Address",
-    "POSTAL_CODE": "Postal Code",
-    "SHIPMENTADDRESS": "Shipment Address",
-    "COPY_CONTACT": "Copy Contact",
-    "GOTOCONTACTS_LIST": "Show Contacts",
-    "GOTOCONTACTS_COMPANY": "Show Contacts",
-    "ADD_AGENT_TO_LIST": "Add Agent to List",
-    "AGENTADD_LIST": "Add Agents to List",
-    "NO_AVAILABLE_INFO": "No available info",
-    "NONE": "None",
-    "FULLNAME": "Full Name",
-    "CHECK_DUPLICATES": "Check Duplicates",
-    "DUPLICATES": "Duplicates",
-    "UPLOAD_CSV": "Upload CSV",
-    "TAG": "Tag",
-    "UPLOAD": "Upload",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "DATE_OF_BIRTH": "Birthdate",
-    "DATEOFBIRTH": "Birthdate",
-    "NOTES": "Notes",
-    "EXPORTCSVCONTACTS_LIST": "Export to CSV",
-    "GOTO_LIST": "Show Contacts",
-    "GOTO_COMPANY": "Show Contacts",
-    "REQUIRED": "Required",
-    "GLOBALCUSTOMFIELDS": "Global Custom Fields",
-    "NEW_GLOBALCUSTOMFIELD": "New Custom Fields",
-    "ADD_GLOBALCUSTOMFIELD": "Add Custom Field",
-    "EDIT_GLOBALCUSTOMFIELD": "Edit Custom Field",
-    "DELETE_GLOBALCUSTOMFIELD": "Delete Custom Field",
+    "TYPE": "Tüüp",
+    "VALUE": "Väärtus",
+    "ADD_CUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_CUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_CUSTOMFIELD": "Kustuta Kohandatud Väli",
+    "NEW_COMPANY": "Uus Ettevõte",
+    "NEW_CONTACT": "Uus Kontakt",
+    "NEW_TAG": "Uus Silt",
+    "UPLOAD_CONTACTS": "Laadi üles Kontaktid",
+    "FINISH": "Lõpp",
+    "SUCCESS": "Õnnestus",
+    "FAILURE": "Nurjus",
+    "ALL_CONTACTS": "Kõik Kontaktid",
+    "NEW_CUSTOMFIELD": "Uue Kliendi Väli",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Hääle Kasutused pole saadaval",
+    "ADD_VOICEDISPOSITION": "Lisa Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "VAT": "KM",
+    "COMPANYID": "Ettevõtte ID",
+    "WEBSITE": "Veebisait",
+    "EMAIL_DOMAIN": "E-posti Domeen",
+    "ADDRESS": "Aadress",
+    "POSTAL_CODE": "Postiindeks",
+    "SHIPMENTADDRESS": "Saadetise Aadress",
+    "COPY_CONTACT": "Kopeeri Kontakt",
+    "GOTOCONTACTS_LIST": "Kuva Kontaktid",
+    "GOTOCONTACTS_COMPANY": "Kuba Kontaktid",
+    "ADD_AGENT_TO_LIST": "Lisa Agent Loendisse",
+    "AGENTADD_LIST": "Lisa Agendid Loendisse",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NONE": "Ühtegi",
+    "FULLNAME": "Täisnimi",
+    "CHECK_DUPLICATES": "Kontrolli Dublikaate",
+    "DUPLICATES": "Dublikaadid",
+    "UPLOAD_CSV": "Laadi üles CSV",
+    "TAG": "Silt",
+    "UPLOAD": "Laadi üles",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "DATEOFBIRTH": "Sünnikuupäev",
+    "NOTES": "Märkmed",
+    "EXPORTCSVCONTACTS_LIST": "Ekspordi CSVsse",
+    "GOTO_LIST": "Kuva Kontaktid",
+    "GOTO_COMPANY": "Kuva Kontaktid",
+    "REQUIRED": "Nõutud",
+    "GLOBALCUSTOMFIELDS": "Üldised Kohandatud Väljad",
+    "NEW_GLOBALCUSTOMFIELD": "Uued Kohandatud Väljad",
+    "ADD_GLOBALCUSTOMFIELD": "Lisa Kohandatud Väli",
+    "EDIT_GLOBALCUSTOMFIELD": "Redigeeri Kohandatud Välja",
+    "DELETE_GLOBALCUSTOMFIELD": "Kustuta Kohandatud Väli",
     "JSCRIPTY": "Jscripty",
-    "SESSIONS": "Sessions",
+    "SESSIONS": "Sessioonid",
     "AGENT": "Agent",
-    "PROJECT": "Project",
-    "SELECT_LIST": "Select a list",
-    "SELECT_COMPANY": "Select a company",
-    "SELECT_TAGS": "Select one or more tags",
+    "PROJECT": "Projekt",
+    "SELECT_LIST": "Vali loend",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_TAGS": "Vali üks või enam silte",
     "HELP": {
-      "PHONEBAR_API_MESSAGE": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on",
-      "PHONEBAR_API": "To enable click-to-call, insert a phone number and check the remote control switch for the Agent is turned on"
+      "PHONEBAR_API_MESSAGE": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees",
+      "PHONEBAR_API": "Click-to-call aktiveerimiseks sisesta telefoninumber ja kontrolli, kas kaugjuhtimislüliti Agendi jaoks on sees"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu leheküljel",
     "OF": "of",
-    "SOCIAL": "Social",
-    "ROW": "Row",
-    "EXPORT_ERRORS": "Export Errors",
-    "UPLOAD_COMPLETED": "Upload Completed",
-    "STOP": "Stop",
-    "SELECT_FILE": "Select File",
+    "SOCIAL": "Sotsiaalne",
+    "ROW": "Rida",
+    "EXPORT_ERRORS": "Ekspordi Vead",
+    "UPLOAD_COMPLETED": "Üleslaadimine Lõpetatud",
+    "STOP": "Peata",
+    "SELECT_FILE": "Vali Fail",
     "ALL": "Kõik",
     "BILLINGINFORMATION": "Arveldusinfo",
     "COMPANY_FISCAL_TYPE": "Ettevõtte maksutüüp",
     "VATNUMBER_CF": "Codice Fiscale / käibemaks",
     "ACTIONTYPE": "Toimingu tüüp",
     "CLICKTOACTION": "Klõpsake toimimiseks",
-    "ADDITIONAL_PHONES": "Täiendavad telefonid",
-    "UPDATE_EXISTING_CONTACTS": "Värskendage olemasolevaid kontakte",
     "DIALTIMEZONE": "Vali ajavöönd",
-    "TIMEZONE": "Vali ajavöönd",
-    "MOVE_DOWN": "Liigu alla",
-    "MOVE_UP": "Üles liikuma"
+    "TIMEZONE": "Vali ajavöönd"
   }
 }
index b84d6b8..df501db 100644 (file)
@@ -1,25 +1,25 @@
 {
   "CONTACTMANAGER": {
-    "SELECT_TAG": "Selecione tags",
+    "SELECT_TAG": "Selecione Tags",
     "CUSTOMER_JOURNEY": "Jornada do Cliente",
-    "USERID": "Lembrar ID do agente",
+    "USERID": "Lembrar ID do Agente",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
     "IMPORT_CONTACTS": "Importar Contatos",
-    "PREFIX": "Prefixo de discagem",
-    "VOICEQUEUEID": "ID da Fila de Voz",
-    "CAMPAIGNID": "ID da campanha",
+    "PREFIX": "Prefixo de Discagem",
+    "VOICEQUEUEID": "ID Fila de Voz",
+    "CAMPAIGNID": "ID Campanha",
     "STATE": "Estado",
     "NAME": "Nome",
     "LISTS": "Listas",
-    "UNIQUEID": "ID unico",
+    "UNIQUEID": "ID Único",
     "STATUS": "Status",
     "STARTTIME": "Início",
     "ENDTIME": "Fim",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Funil",
-    "FINAL": "Final do funil",
-    "HISTORY": "História do funil",
+    "FINAL": "Final do Funil",
+    "HISTORY": "Histórico do Funil",
     "SCHEDULEDAT": "Agendado em",
     "SEARCH_FOR_ANYONE": "Procurar",
     "EDIT_LIST": "Editar Lista",
@@ -27,8 +27,8 @@
     "DELETE_LIST": "Excluir Lista",
     "DELETE_HOPPER": "Excluir Funil",
     "RELOAD": "Recarregar",
-    "NO_COMPANIES": "Nenhuma empresa",
-    "NO_AVAILABLE_ITEMS": "Nenhum item disponível",
+    "NO_COMPANIES": "Nenhuma Empresa",
+    "NO_AVAILABLE_ITEMS": "Nenhum Item Disponível",
     "ADD": "Adicionar",
     "ERRORS": {
       "NAME_REQUIRED": "Campo obrigatório",
       "CLICKTOACTION_REQUIRED": "Campo obrigatório"
     },
     "DESCRIPTION": "Descrição",
-    "DISPOSITION": "Descrição",
-    "DISPOSITIONS": "Descrição",
-    "VOICEDISPOSITIONS": "Disposições de voz",
-    "NEW_VOICEDISPOSITION": "Nova disposição de voz",
-    "CUSTOM_FIELDS": "Os campos personalizados",
+    "DISPOSITION": "Qualificação",
+    "DISPOSITIONS": "Qualificações",
+    "VOICEDISPOSITIONS": "Qualificações de Voz",
+    "NEW_VOICEDISPOSITION": "Nova Qualificação de Voz",
+    "CUSTOM_FIELDS": "Os Campos Personalizados",
     "ADD_LIST": "Adicionar Lista",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
-    "SELECT_ALL": "Selecionar todos",
+    "SELECT_ALL": "Selecionar Todos",
     "SELECT_NONE": "Selecionar Nenhum",
     "COMPANIES": "Empresas",
     "EDIT_COMPANY": "Editar Empresa",
     "MOBILE": "Celular",
     "FAX": "Fax",
     "TAGS": "Tags",
-    "SHOW_ALL_FIELDS": "Mostrar todos os campos",
-    "FEWER_FIELDS": "Mostrar menos campos",
+    "SHOW_ALL_FIELDS": "Mostrar Todos Campos",
+    "FEWER_FIELDS": "Reduzir Campos",
     "COUNTRY": "País",
     "CITY": "Cidade",
     "STREET": "Rua",
     "POSTALCODE": "CEP",
     "DELETE": "Excluir",
-    "DELETE_ALL": "Excluir tudo",
-    "CONTACTMANAGER": "Gerente de contatos",
+    "DELETE_ALL": "Excluir Tudo",
+    "CONTACTMANAGER": "Mailing",
     "ID": "Id",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "CUSTOMFIELDS": "Os campos personalizados",
-    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum campo personalizado disponível",
+    "CUSTOMFIELDS": "Campos Personalizados",
+    "NO_CUSTOMFIELD_AVAILABLE": "Nenhum Campo Personalizado Disponível",
     "ADD_TAG": "Adicionar Tag",
     "NO_TAG": "Sem Tags",
-    "ALIAS": "Apelido",
+    "ALIAS": "Alias",
     "TYPE": "Tipo",
     "VALUE": "Valor",
-    "ADD_CUSTOMFIELD": "Adicionar campo personalizado",
-    "EDIT_CUSTOMFIELD": "Editar campo personalizado",
-    "DELETE_CUSTOMFIELD": "Excluir campo personalizado",
+    "ADD_CUSTOMFIELD": "Adicionar Campo Personalizado",
+    "EDIT_CUSTOMFIELD": "Editar Campo Personalizado",
+    "DELETE_CUSTOMFIELD": "Excluir Campo Personalizado",
     "NEW_COMPANY": "Nova Empresa",
     "NEW_CONTACT": "Novo Contato",
     "NEW_TAG": "Nova Tag",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
     "ALL_CONTACTS": "Todos os Contatos",
-    "NEW_CUSTOMFIELD": "Novo campo personalizado",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma disposição de voz disponível",
-    "ADD_VOICEDISPOSITION": "Adicionar disposição de voz",
-    "EDIT_VOICEDISPOSITION": "Editar disposição de voz",
-    "DELETE_VOICEDISPOSITION": "Excluir disposição de voz",
+    "NEW_CUSTOMFIELD": "Novo campo Personalizado",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma Disposição de Voz Disponível",
+    "ADD_VOICEDISPOSITION": "Adicionar Disposição de Voz",
+    "EDIT_VOICEDISPOSITION": "Editar Disposição de Voz",
+    "DELETE_VOICEDISPOSITION": "Excluir Disposição de Voz",
     "VAT": "VAT",
     "COMPANYID": "ID Empresa",
     "WEBSITE": "Website",
-    "EMAIL_DOMAIN": "Domínio de email",
+    "EMAIL_DOMAIN": "Domínio de Email",
     "ADDRESS": "Endereço",
     "POSTAL_CODE": "CEP",
     "SHIPMENTADDRESS": "Endereço de Envio",
-    "COPY_CONTACT": "Copiar contato",
-    "GOTOCONTACTS_LIST": "Mostrar contatos",
-    "GOTOCONTACTS_COMPANY": "Mostrar contatos",
-    "ADD_AGENT_TO_LIST": "Adicionar agente à lista",
-    "AGENTADD_LIST": "Adicionar agentes à lista",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+    "COPY_CONTACT": "Copiar Contato",
+    "GOTOCONTACTS_LIST": "Ir para Lista de Contatos",
+    "GOTOCONTACTS_COMPANY": "Ir para Empresas",
+    "ADD_AGENT_TO_LIST": "Adicionar Agente à Lista",
+    "AGENTADD_LIST": "Adicionar Agentes à Lista",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
     "NONE": "Nenhum",
-    "FULLNAME": "Nome COmpleto",
-    "CHECK_DUPLICATES": "Verificar duplicados",
-    "DUPLICATES": "Duplicatas",
+    "FULLNAME": "Nome Completo",
+    "CHECK_DUPLICATES": "Verificar Duplicados",
+    "DUPLICATES": "Duplicados",
     "UPLOAD_CSV": "Envio CSV",
     "TAG": "Tag",
     "UPLOAD": "Envio",
-    "ALL_AGENTS": "Todos os agentes",
+    "ALL_AGENTS": "Todos os Agentes",
     "SELECTED_AGENTS": "Agentes Selecionados",
-    "DATE_OF_BIRTH": "Data de nascimento",
-    "DATEOFBIRTH": "Data de nascimento",
+    "DATE_OF_BIRTH": "Data de Nascimento",
+    "DATEOFBIRTH": "Data de Nascimento",
     "NOTES": "Notas",
     "EXPORTCSVCONTACTS_LIST": "Exportar para CSV",
-    "GOTO_LIST": "Mostrar contatos",
-    "GOTO_COMPANY": "Mostrar contatos",
-    "REQUIRED": "Requeridos",
-    "GLOBALCUSTOMFIELDS": "Campos personalizados globais",
-    "NEW_GLOBALCUSTOMFIELD": "Novos campos personalizados",
-    "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado",
-    "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado",
-    "DELETE_GLOBALCUSTOMFIELD": "Excluir campo personalizado",
+    "GOTO_LIST": "Ir para Listas",
+    "GOTO_COMPANY": "Ir para Empresas",
+    "REQUIRED": "Obrigatório",
+    "GLOBALCUSTOMFIELDS": "Campos Personalizados Globais",
+    "NEW_GLOBALCUSTOMFIELD": "Novo Campo Personalizado Global",
+    "ADD_GLOBALCUSTOMFIELD": "Adicionar Campo Personalizado Global",
+    "EDIT_GLOBALCUSTOMFIELD": "Editar Campo Personalizado Global",
+    "DELETE_GLOBALCUSTOMFIELD": "Excluir Campo Personalizado Global",
     "JSCRIPTY": "Jscripty",
     "SESSIONS": "Sessões",
     "AGENT": "Agente",
     "PROJECT": "Projeto",
-    "SELECT_LIST": "Selecione uma lista",
-    "SELECT_COMPANY": "Selecione uma empresa",
-    "SELECT_TAGS": "Selecione uma ou mais tags",
+    "SELECT_LIST": "Selecione Lista",
+    "SELECT_COMPANY": "Selecione Empresa",
+    "SELECT_TAGS": "Selecione uma ou mais Tags",
     "HELP": {
       "PHONEBAR_API_MESSAGE": "Para ativar o recurso clique para ligar, insira um número de telefone e verifique se a chave de controle remoto do agente está ativada",
       "PHONEBAR_API": "Para ativar o recurso clique para ligar, insira um número de telefone e verifique se a chave de controle remoto do agente está ativada"
     },
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por página",
+    "ROWSPERPAGE": "Linhas por Página",
     "OF": "do",
     "SOCIAL": "Social",
     "ROW": "Linha",
-    "EXPORT_ERRORS": "Exportar erros",
-    "UPLOAD_COMPLETED": "Upload concluído",
+    "EXPORT_ERRORS": "Exportar Erros",
+    "UPLOAD_COMPLETED": "Upload Concluído",
     "STOP": "Pare",
-    "SELECT_FILE": "Selecione o arquivo",
+    "SELECT_FILE": "Selecione o Arquivo",
     "ALL": "Tudo",
     "BILLINGINFORMATION": "Informações de pagamento",
-    "COMPANY_FISCAL_TYPE": "Tipo fiscal da empresa",
+    "COMPANY_FISCAL_TYPE": "Tipo Fiscal da Empresa",
     "CREATE": "Crio",
     "EUROPE": "Europa",
     "EXPIREDAY": "Dias de Vencimento",
index 3169c3f..34b7937 100644 (file)
       "TRANSFER_AGENT_EXECUTED": "Transfer to agent successfully executed",
       "TRANSFER_QUEUE_EXECUTED": "Transfer to queue successfully executed"
     },
-    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached"
+    "LIMIT_TABS_REACHED": "Maximum number of open tabs reached",
+    "WAITING_CALLS": "Waiting Calls",
+    "WAITING_INTERACTIONS": "Waiting Interactions"
   }
 }
index 0a5b7eb..739750c 100644 (file)
 {
   "DASHBOARDS": {
-    "DOWNLOAD": "Download",
-    "UNMANAGED_RATE": "Unmanaged Rate",
-    "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
-    "VOICE_WAITING": "WAITING",
-    "VOICE_WAITING_TEXT": "WAITING QUEUE CALLS",
-    "VOICE_TALKING": "TALKING",
-    "VOICE_TALKING_TEXT": "ACTIVE QUEUE CALLS",
-    "VOICE_ANSWERED": "ANSWERED",
-    "VOICE_ANSWERED_TEXT": "ANSWERED QUEUE CALLS",
-    "VOICE_ABANDONED": "ABANDONED",
-    "VOICE_ABANDONED_TEXT": "ABANDONED QUEUE CALLS",
-    "VOICE_TOTAL_OFFERED": "TOTAL OFFERED",
-    "VOICE_TOTAL_OFFERED_TEXT": "TOTAL QUEUE CALLS",
-    "TODAY_INTERACTIONS_STATS": "Interactions Daily Stats",
-    "VOICE_AVG_HOLD_TIME": "AVERAGE HOLD TIME",
-    "VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
-    "VOICE_AVG_TALK_TIME": "AVERAGE TALK TIME",
-    "VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
-    "VOICE_ANSWER_RATE": "ANSWER RATE",
-    "VOICE_ANSWER_RATE_TEXT": "QUEUE CALLS ANSWER RATE",
-    "VOICE_ABANDON_RATE": "ABANDON RATE",
-    "VOICE_ABANDON_RATE_TEXT": "QUEUE CALLS ABANDON RATE",
-    "VOICE_UNMANAGED": "UNMANAGED",
-    "VOICE_UNMANAGED_TEXT": "UNMANAGED QUEUE CALLS",
-    "OPENED_TEXT": "Opened Interactions",
-    "MANAGED": "Managed",
-    "MANAGED_TEXT": "Managed Interactions",
-    "ABANDONED": "Abandoned",
-    "ABANDONED_TEXT": "Abandoned Interactions",
-    "ABANDONED_RATE": "Abandoned Rate",
-    "ABANDONED_RATE_TEXT": "Interactions Abandon Rate",
-    "TOTAL_OFFERED": "Total Offered",
-    "TOTAL_OFFERED_TEXT": "Offered Interactions",
-    "AVG_HOLD_TIME_TEXT": "Interactions AVG Hold Time",
-    "MANAGED_RATE": "Managed Rate",
-    "MANAGED_RATE_TEXT": "Interactions Managed Rate ",
-    "AVG_MANAGED_TIME": "AVG Management Time",
-    "AVG_MANAGED_TIME_TEXT": "Interactions AVG Management Time",
-    "NO_DISPOSITION_SET": "No disposition set",
-    "AGENTS": "Agents",
-    "TRANSFER": "Transfer",
-    "NO_DATA_AVAILABLE": "No data available",
-    "CUSTOMER_JOURNEY": "Customer Journey",
-    "ME": "Me",
-    "CURRENTLY_IN_USE_BY": "Currently in use by",
-    "NOTAVAILABLE": "Not available",
-    "CLICKRELOAD": "New abandoned calls! Reload please",
-    "ASSIGNTO": "Assign to",
-    "SELECT_CAMPAIGN": "Select a Queue",
-    "FREE": "Free",
-    "RESERVED": "Reserved",
-    "QUEUECALLEREXITREASON": "Reason",
-    "QUEUECALLEREXITAT": "Dropped",
-    "LASTASSIGNEDTO": "Last Assigned To",
-    "ABANDONEDQUEUECALLS": "Abandoned Queue Calls",
-    "ABANDONAT": "Abandoned",
-    "QUEUE": "Queue",
-    "SELECT_SUBSTATUS": "Select Substatus",
-    "READ": "Read",
-    "UNREAD": "Unread",
-    "SELECT_READ_UNREAD": "Select Read/Unread",
-    "SELECT_AGENT": "Select Agent",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "FILTER_VOICE_QUEUES": "Filter Voice Queues",
-    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
-    "CHANNEL_QUEUE": "Queue",
-    "CHANNEL_FROM": "From",
-    "LOADING_INTERACTION": "We are loading the interaction...",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "DOWNLOAD": "Allalaadimine",
+    "UNMANAGED_RATE": "Haldamata Määr",
+    "UNMANAGED_RATE_TEXT": "Suhtluse Haldamata Määr",
+    "VOICE_WAITING": "OOTEL",
+    "VOICE_WAITING_TEXT": "OOTEJÄRJEKORRA KÕNED",
+    "VOICE_TALKING": "RÄÄKIMINE",
+    "VOICE_TALKING_TEXT": "AKTIIVSE JÄRJEKORRA KÕNED",
+    "VOICE_ANSWERED": "VASTATUD",
+    "VOICE_ANSWERED_TEXT": "VASTATUD JÄRJEKORRA KÕNED",
+    "VOICE_ABANDONED": "TAGASILÜKATUD",
+    "VOICE_ABANDONED_TEXT": "TAGASILÜKATUD JÄRJEKORRA KÕNED",
+    "VOICE_TOTAL_OFFERED": "KOKKU PAKUTUD",
+    "VOICE_TOTAL_OFFERED_TEXT": "JÄRJEKORRA KÕNED KOKKU",
+    "TODAY_INTERACTIONS_STATS": "Suhtluse Päeva Statistika",
+    "VOICE_AVG_HOLD_TIME": "KESKMINE OOTEAEG",
+    "VOICE_AVG_HOLD_TIME_TEXT": "JÄRJEKORRA KÕNEDE KESKMINE OOTEAEG",
+    "VOICE_AVG_TALK_TIME": "KESKMINE KÕNEAEG",
+    "VOICE_AVG_TALK_TIME_TEXT": "JÄRJEKORRA KÕNEDE RÄÄKIMISE AEG",
+    "VOICE_ANSWER_RATE": "VASTUSE MÄÄR",
+    "VOICE_ANSWER_RATE_TEXT": "JÄRJEKORRA KÕNEDE VASUSE MÄÄR",
+    "VOICE_ABANDON_RATE": "TAGASILÜKATUD MÄÄR",
+    "VOICE_ABANDON_RATE_TEXT": "JÄRJEKORRA KÕNEDE TAGASILÜKATUD MÄÄR",
+    "VOICE_UNMANAGED": "HALDAMATA",
+    "VOICE_UNMANAGED_TEXT": "HALDAMATA JÄRJEKORRA KÕNED",
+    "OPENED_TEXT": "Avatud Suhtlused",
+    "MANAGED": "Hallatud",
+    "MANAGED_TEXT": "Hallatud Suhtlused",
+    "ABANDONED": "Tagasilükatud",
+    "ABANDONED_TEXT": "Tagasilükatud Suhtlused",
+    "ABANDONED_RATE": "Tagasilükatud Määr",
+    "ABANDONED_RATE_TEXT": "Suhtluste Tagasilükatud Määr",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "TOTAL_OFFERED_TEXT": "Pakutud Suhtlused",
+    "AVG_HOLD_TIME_TEXT": "Suhtluse AVG Ooteaeg",
+    "MANAGED_RATE": "Hallatud Määr",
+    "MANAGED_RATE_TEXT": "Suhtluste Hallatud Määr",
+    "AVG_MANAGED_TIME": "AVG Haldusaeg",
+    "AVG_MANAGED_TIME_TEXT": "Suhtluste AVG Haldusaeg",
+    "NO_DISPOSITION_SET": "Kasutust pole määratud",
+    "AGENTS": "Agendid",
+    "TRANSFER": "Edastus",
+    "NO_DATA_AVAILABLE": "Andmed pole saadaval",
+    "CUSTOMER_JOURNEY": "Kliendi Teekond",
+    "ME": "Mina",
+    "CURRENTLY_IN_USE_BY": "Praegune kasutaja",
+    "NOTAVAILABLE": "Pole saadaval",
+    "CLICKRELOAD": "Uued tagasilükatud kõned! Palun laadi uuesti",
+    "ASSIGNTO": "Määra",
+    "SELECT_CAMPAIGN": "Vali Järjekord",
+    "FREE": "Vaba",
+    "RESERVED": "Reserveeritud",
+    "QUEUECALLEREXITREASON": "Põhjus",
+    "QUEUECALLEREXITAT": "Katkestatud",
+    "LASTASSIGNEDTO": "Viimati määratud",
+    "ABANDONEDQUEUECALLS": "Tagasilükatud Järjekorra Kõned",
+    "ABANDONAT": "Tagasilükatud",
+    "QUEUE": "Järjekord",
+    "SELECT_SUBSTATUS": "Vali Alamstaatus",
+    "READ": "Loetud",
+    "UNREAD": "Lugemata",
+    "SELECT_READ_UNREAD": "vali Loetud/Lugemata",
+    "SELECT_AGENT": "Vali Agent",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "FILTER_VOICE_QUEUES": "Filtreeri Hääle Järjekorrad",
+    "CHANNEL_WAITING_TEXT": "Ootel Järjekorra Suhtlused",
+    "CHANNEL_QUEUE": "Järjekord",
+    "CHANNEL_FROM": "Alates",
+    "LOADING_INTERACTION": "Laadime suhtlust...",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Mon",
-    "TUE": "Tue",
-    "WED": "Wed",
-    "THU": "Thu",
-    "FRI": "Fri",
-    "SAT": "Sat",
-    "SUN": "Sun",
-    "DELETE": "Delete",
-    "LAST_3_DAYS": "Last 3 Day",
-    "LAST_YEAR": "Last Year",
-    "THIS_YEAR": "This Year",
-    "LAST_MONTH": "Last Month",
-    "THIS_MONTH": "This Month",
-    "LAST_WEEK": "Last Week",
-    "THIS_WEEK": "This Week",
-    "YESTERDAY": "Yesterday",
-    "TODAY": "Today",
-    "SELECT_DATE": "Select Start Date",
-    "HOME": "Home",
-    "SET_AS": "Set As",
-    "PENDING": "Pending",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "TAGS": "Tags",
-    "SELECT_TAG": "Select Tag",
-    "TYPE": "Type",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "CALLERID": "Caller ID",
-    "END_AT": "End At",
-    "DURATION": "Duration",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "NOT_ASSIGNED": "Not Assigned",
-    "UNKNOWN": "Unknown",
-    "SELECT_USER": "Select User",
-    "LAST_MESSAGE": "Last message",
-    "USER": "User",
-    "RATING": "Rating",
-    "FEEDBACK": "Feedback",
-    "SUBJECT": "Subject",
-    "CUSTOMER_IP": "Customer IP",
-    "REFERER": "Referer",
-    "ACCOUNT": "Account",
-    "WEBSITE": "Website",
+    "DECEMBER": "Detsember",
+    "MON": "E",
+    "TUE": "T",
+    "WED": "K",
+    "THU": "N",
+    "FRI": "R",
+    "SAT": "L",
+    "SUN": "P",
+    "DELETE": "Kustuta",
+    "LAST_3_DAYS": "Viimased 3 Päeva",
+    "LAST_YEAR": "Viimane Aasta",
+    "THIS_YEAR": "See Aasta",
+    "LAST_MONTH": "Viimane Kuu",
+    "THIS_MONTH": "See Kuu",
+    "LAST_WEEK": "Viimane Nädal",
+    "THIS_WEEK": "See Nädal",
+    "YESTERDAY": "Eile",
+    "TODAY": "Täna",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "HOME": "Kodu",
+    "SET_AS": "Määra kui",
+    "PENDING": "Ootel",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta Salvestatud Vastuste otsimiseks tekst",
+    "TAGS": "Sildid",
+    "SELECT_TAG": "Vali Silt",
+    "TYPE": "Tüüp",
+    "SOURCE": "Lähtekoht",
+    "DESTINATION": "Sihtpunkt",
+    "CALLERID": "Helistaja ID",
+    "END_AT": "Lõpetamise aeg",
+    "DURATION": "Kestus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "FAX": "Faks",
+    "NOT_ASSIGNED": "Pole määratud",
+    "UNKNOWN": "Teadmata",
+    "SELECT_USER": "Vali Kasutaja",
+    "LAST_MESSAGE": "Viimane sõnum",
+    "USER": "Kasutaja",
+    "RATING": "Hinnang",
+    "FEEDBACK": "Tagasiside",
+    "SUBJECT": "Teema",
+    "CUSTOMER_IP": "Kliendi IP",
+    "REFERER": "Viitaja",
+    "ACCOUNT": "Konto",
+    "WEBSITE": "Veebisait",
     "AGENT": "Agent",
-    "CREATED_AT": "Created At",
-    "CLOSED_AT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "CONTACT": "Contact",
-    "INTERACTION": "Interaction",
-    "BROWSER_NAME": "Browser Name",
-    "BROWSER_VERSION": "Browser Version",
-    "OS_NAME": "Operating System Name",
-    "OS_VERSION": "Operating System Version",
-    "DEVICE_MODEL": "Device Model",
-    "DEVICE_VENDOR": "Device Vendor",
-    "DEVICE_TYPE": "Device Type",
-    "RECALLME": "Recall Me",
-    "DROP_RATE": "Drop Rate",
-    "DROPPED": "Dropped",
-    "DROPPED_TEXT": "Dropped Queue Calls",
-    "DETAIL": "Detail",
-    "MOTION_BULL": "Motion Bull",
-    "LIMITED": "Limited",
-    "LIMITED_TEXT": "IVR Campaigns Calls Originated/Limit",
-    "DASHBOARDS": "Dashboards",
-    "RECORDINGS": "Recordings",
-    "TODAY_MOTION_BULL_STATS": "Queue Campaigns Daily Stats",
-    "ORIGINATED": "Originated",
-    "ORIGINATED_TEXT": "Queue Calls Originated",
-    "UPDATE": "Update",
-    "MORE": "More",
-    "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Dispose",
-    "QUEUES": "Queues",
-    "DIALER_CALL": "Dialer Call",
-    "ELAPSED_TIME": "Elapsed Time",
-    "EDIT": "Edit",
-    "MERGE": "Merge",
-    "DUPLICATE": "Duplicate",
-    "UNIQUEID": "Uniqueid",
-    "CAMPAIGN": "Campaign",
-    "NONE": "None",
-    "NAME": "Name",
-    "ANSWER_MACHINE": "Answer Machine",
-    "INTERESTED": "Interested",
-    "NOT_INTERESTED": "Not Interested",
-    "PERSONAL_INFO": "Personal Info",
-    "SOLD": "Sold",
-    "SPECIAL": "Special",
-    "BLACKLIST": "Blacklist",
-    "RESCHEDULE": "Reschedule",
-    "FIRSTNAME": "Firstname",
-    "LASTNAME": "Lastname",
-    "MOBILE": "Mobile",
-    "DATE_OF_BIRTH": "Birthdate",
-    "COMPANY": "Company",
-    "TAG": "Tag",
-    "COUNTRY": "Country",
-    "CITY": "City",
-    "STREET": "Street",
-    "POSTALCODE": "Postal Code",
-    "CUSTOM_FIELDS": "Custom Fields",
-    "GENERAL": "General",
-    "VOICE": "Voice",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Daily Ivr Campaigns Stats",
-    "TODAY_INBOUND_STATS": "Inbound Queue Daily Stats",
-    "TODAY_OUTBOUND_STATS": "Outbound Daily Stats",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "INBOUND_ANSWERED": "Answered",
-    "OUTBOUND_ANSWERED": "Answered",
-    "AVG_HOLD_TIME": "Average Hold Time",
-    "INBOUND_ANSWER_RATE": "Answer Rate",
-    "OUTBOUND_ANSWER_RATE": "Answer Rate",
-    "ABANDON_RATE": "Abandon Rate",
-    "UNMANAGED": "Unmanaged",
-    "TOTAL": "Total",
-    "TOT_DURATION": "Total Duration",
-    "AVG_DURATION": "Average Duration",
+    "CREATED_AT": "Loomisaeg",
+    "CLOSED_AT": "Sulgemise aeg",
+    "DISPOSITION": "Kasutus",
+    "CONTACT": "Kontakt",
+    "INTERACTION": "Suhtlus",
+    "BROWSER_NAME": "Brauseri Nimi",
+    "BROWSER_VERSION": "Brauseri Versioon",
+    "OS_NAME": "Operatsioonisüsteemi Nimi",
+    "OS_VERSION": "Operatsioonisüsteemi Versioon",
+    "DEVICE_MODEL": "Seadme Mudel",
+    "DEVICE_VENDOR": "Seadme Tarnija",
+    "DEVICE_TYPE": "Seadme Tüüp",
+    "RECALLME": "Kutsu Mind tagasi",
+    "DROP_RATE": "Katkesta Määr",
+    "DROPPED": "Katkestatud",
+    "DROPPED_TEXT": "Katkestatud Järjekorra Kõned",
+    "DETAIL": "Üksikasi",
+    "MOTION_BULL": "Liikumise Pull",
+    "LIMITED": "Piiratud",
+    "LIMITED_TEXT": "IVR Kampaania Kõnede Päritolu/Piirang",
+    "DASHBOARDS": "Töölauad",
+    "RECORDINGS": "Salvestused",
+    "TODAY_MOTION_BULL_STATS": "Järjekorra Kampaania Päevane Stat.",
+    "ORIGINATED": "Päritolu",
+    "ORIGINATED_TEXT": "Järjekorra Kõnede Päritolu",
+    "UPDATE": "Värskendamine",
+    "MORE": "Rohkem",
+    "MOTIONDIALER": "Liikumise Pull",
+    "DISPOSE": "Likvideeri",
+    "QUEUES": "Järjekorrad",
+    "DIALER_CALL": "Numbrivalija Kõne",
+    "ELAPSED_TIME": "Kulunud Aeg",
+    "EDIT": "Redigeeri",
+    "MERGE": "Ühenda",
+    "DUPLICATE": "Dubleeri",
+    "UNIQUEID": "Kordumatu ID",
+    "CAMPAIGN": "Kampaania",
+    "NONE": "Ühtegi",
+    "NAME": "Nimi",
+    "ANSWER_MACHINE": "Automaatvastaja",
+    "INTERESTED": "Huvitatud",
+    "NOT_INTERESTED": "Pole Huvitatud",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "SOLD": "Müüdud",
+    "SPECIAL": "Muud",
+    "BLACKLIST": "Must nimekiri",
+    "RESCHEDULE": "Planeeri uuesti",
+    "FIRSTNAME": "Eesnimi",
+    "LASTNAME": "Perekonnanimi",
+    "MOBILE": "Mobiil",
+    "DATE_OF_BIRTH": "Sünnikuupäev",
+    "COMPANY": "Ettevõte",
+    "TAG": "Silt",
+    "COUNTRY": "Riik",
+    "CITY": "Linn",
+    "STREET": "Tänav",
+    "POSTALCODE": "Postiindeks",
+    "CUSTOM_FIELDS": "Kohandatud Väljad",
+    "GENERAL": "Üldine",
+    "VOICE": "Hääl",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Igapäevane IVR Kampaania Stat.",
+    "TODAY_INBOUND_STATS": "Siseneva Järjekorra Igapäevane Stat.",
+    "TODAY_OUTBOUND_STATS": "Väljuva Igapäevane Stat.",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
+    "INBOUND_ANSWERED": "Vastatud",
+    "OUTBOUND_ANSWERED": "Vastatud",
+    "AVG_HOLD_TIME": "Keskmine Ooteaeg",
+    "INBOUND_ANSWER_RATE": "Vastuse Määr",
+    "OUTBOUND_ANSWER_RATE": "Vastuse Määr",
+    "ABANDON_RATE": "Tagasilükkamise Määr",
+    "UNMANAGED": "Haldamata",
+    "TOTAL": "Kokku",
+    "TOT_DURATION": "Kestus Kokku",
+    "AVG_DURATION": "Keskmine Kestus",
     "HELP": {
-      "UNMANAGED_RATE": "The Unmanaged Rate of all the Interactions",
-      "WAITING": "The total number of Waiting Interactions",
-      "OPENED": "The total number of Active Interactions",
-      "MANAGED": "The total number of Completed Interactions",
-      "ABANDONED": "The total number of Abandoned Interactions",
-      "TOTAL_OFFERED": "The total number of Interactions (completed + abandoned)",
-      "AVG_HOLD_TIME": "The Average Interaction Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Interactions",
-      "AVG_MANAGED_TIME": "The Average Interaction Managed Time, namely the average time spent during conversation",
-      "MANAGED_RATE": "The Managed Rate of all the Interactions",
-      "ABANDONED_RATE": "The Abandon Rate of all the Interactions",
-      "UNMANAGED": "The total number of Unmanaged Interactions",
-      "VOICE_WAITING": "The total number of Waiting Queue Calls, for all the existing Queues",
-      "VOICE_TALKING": "The total number of Active Queue Calls, for all the existing Queues",
-      "VOICE_ANSWERED": "The total number of Completed Queue Calls, for all the existing Queues",
-      "VOICE_ABANDONED": "The total number of Abandoned Queue Calls, considering all the existing Queues. Note that the calls which are abandoned for timeout and joinempty will not be considered",
-      "VOICE_TOTAL_OFFERED": "The total number of Queue Calls (completed + abandoned). Note that the calls which enter in an IVR and not in a queue, will not be considered",
-      "VOICE_AVG_TALK_TIME": "The Average Queue Talk Time, namely the average time spent during conversation, for all the existing Queues",
-      "VOICE_AVG_HOLD_TIME": "The Average Queue Hold Time, namely the average time spent waiting for an agent to answer, for all the existing Queues",
-      "VOICE_ANSWER_RATE": "The Answer Rate of all the Queue Calls",
-      "VOICE_UNMANAGED": "The total number of Unmanaged Queue Calls, for all the existing Queues. It includes the calls which are abandoned for timeout, joinempty, leavewhenempty and exitwithkey (cfr. asterisk doc for more information)",
-      "ORIGINATED": "Total number of calls dialed in the queue campaigns",
-      "ORIGINATEDLIMITED": "IVR Campaigns Calls Originated/Limit",
-      "DROPPED": "The total number of Dropped Queue Calls, for all the existing Queues",
-      "DROP_RATE": "The Drop Rate of all the Queue Calls",
-      "OUTBOUND_ANSWERED": "The total number of Completed Outbound Calls",
-      "OUTBOUND_ANSWER_RATE": "The Answer Rate of all the Outbound Calls",
-      "ABANDON_RATE": "The Abandon Rate of all the Queue Calls",
-      "TOTAL": "The total number of Outbound Calls",
-      "TOT_DURATION": "The total duration of all the Outbound Calls",
-      "AVG_DURATION": "The average duration of all the Completed Outbound Calls",
+      "UNMANAGED_RATE": "Haldamata Määr kõikidest Suhtlustest",
+      "WAITING": "Ootel Suhtluste koguarv",
+      "OPENED": "Aktiivsete Suhtluste koguarv",
+      "MANAGED": "Lõpetatud Suhtluste koguarv",
+      "ABANDONED": "Tagasilükatud Suhtluste koguarv",
+      "TOTAL_OFFERED": "Suhtluste (lõpetatud + tagasilükatud) koguarv",
+      "AVG_HOLD_TIME": "Keskmine Suhtluse Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Suhtluste kohta",
+      "AVG_MANAGED_TIME": "Keskmine Hallatud Suhtluse Aeg, nimelt keskmine vestlusele kulunud aeg",
+      "MANAGED_RATE": "Haldamise Määr Kõikide Suhtluste kohta ",
+      "ABANDONED_RATE": "Tagasilükkamise Määr kõikide Suhtluste kohta",
+      "UNMANAGED": "Haldamata Suhtluste koguarv",
+      "VOICE_WAITING": "Ootejärjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_TALKING": "Aktiivsete Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWERED": "Lõpetatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ABANDONED": "Tagasilükatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. Pange tähele, et kõned mis on tagasi lükatud seoses vaheaja ja tühjalt liitumisega ei lähe arvesse",
+      "VOICE_TOTAL_OFFERED": "Järjekorra Kõnede (lõpetatud + tagasilükatud) koguarv. Pange tähele, et kõned, mis sisenevad IVRis, mitte järjekorras, ei lähe arvesse",
+      "VOICE_AVG_TALK_TIME": "Keskmine Järjekorra Kõneaeg, nimelt keskmine vestlustele kulunud aeg kõikide olemasolevate Järjekordade kohta",
+      "VOICE_AVG_HOLD_TIME": "Keskmine Järjekorra Ooteaeg, nimelt keskmine aeg, mis on kulunud agendi vastuse ootamisele, kõikide olemasolevate Järjekordade kohta",
+      "VOICE_ANSWER_RATE": "Vastamise Määr kõikide Järjekorra Kõnede kohta",
+      "VOICE_UNMANAGED": "Haldamata Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta. See sisaldab kõnesid, mida on tagasi lükatud seoses vaheaja, tühjalt liitumise, tühja korral lahkumise ja võtmega väljumisega (vt. täpsemalt asterisk doc)",
+      "ORIGINATED": "Kõnede koguarv, mis on valitud järjekorra kampaaniates",
+      "ORIGINATEDLIMITED": "IVR Kampaaniate Kõnede Päritolu/Piir",
+      "DROPPED": "Katkestatud Järjekorra Kõnede koguarv kõikide olemasolevate Järjekordade kohta",
+      "DROP_RATE": "Katkestuste Määr kõikide Järjekorra Kõnede kohta",
+      "OUTBOUND_ANSWERED": "Lõpetatud Väljuvate Kõnede koguarv",
+      "OUTBOUND_ANSWER_RATE": "Kõikide Väljuvate Kõnede Vastamise Määr",
+      "ABANDON_RATE": "Järjekorra Kõnede Tagasilükkamise Määr",
+      "TOTAL": "Väljuvate Kõnede koguarv",
+      "TOT_DURATION": "Väljuvate Kõnede kogukestus",
+      "AVG_DURATION": "Lõpetatud Väljuvate Kõnede keskmine kestus",
       "EXACT_MATCH_FILTER": "Täpse vaste otsimine",
       "LIKE_FILTER": "Otsige määratud mustrit",
-      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik dispositsioon lubatud"
+      "MANDATORY_DISPOSITION_ENABLED": "Selle konto jaoks on kohustuslik suhtlus lubatud"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
+      "FIRSTNAME_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik väli",
+      "AGENT_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
       "CAMPAIGN_REQUIRED": "Kohustuslik väli",
       "FAILED_INITIALIZATION": "Viga lähtestamisel"
     },
-    "NO_AVAILABLE_INFO": "No available info",
-    "WELCOME_TO_MOTION": "Welcome to Motion",
-    "WELCOME_MESSAGE": "Use the left sidebar to navigate through available sections",
-    "ADD": "Add",
-    "CONTACTMANAGER": "Contact Manager",
-    "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Edit contact",
-    "EMAIL": "Email",
-    "FULLNAME": "Fullname",
-    "LIST": "List",
-    "NEW_CONTACT": "New Contact",
-    "PHONE": "Phone",
-    "SAVE": "Save",
-    "INBOUND_WAITING_CALLS": "Inbound Waiting Calls",
-    "CONTACTS": "Contacts",
-    "MYCONTACTS": "My Contacts",
-    "ADD_CONTACT": "Add Contact",
-    "RELOAD": "Reload",
-    "WAITING_TEXT": "Waiting Interactions",
-    "TALKING_TEXT": "Active Queue Calls",
-    "INBOUND_ANSWERED_TEXT": "Answered Queue Calls",
-    "DROP_RATE_TEXT": "Queue Calls Drop Rate",
-    "AVG_TALK_TIME_TEXT": "Queue Calls Talk Time",
-    "INBOUND_ANSWER_RATE_TEXT": "Queue Calls Answer Rate",
-    "UNMANAGED_TEXT": "Unmanaged Interactions",
-    "TOTAL_TEXT": "Total Outbound Calls",
-    "OUTBOUND_ANSWERED_TEXT": "Outbound Answered Calls",
-    "TOT_DURATION_TEXT": "Outbound Calls Total Duration",
-    "AVG_DURATION_TEXT": "Outbound Calls Average Duration",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Outbound calls Answer Rate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "WELCOME_TO_MOTION": "Tere tulemust Liikumisse",
+    "WELCOME_MESSAGE": "Kasuta vasakut külgriba navigeerimiseks vabades sektsioonides",
+    "ADD": "Lisa",
+    "CONTACTMANAGER": "Kontakti Haldur",
+    "DASHBOARD": "Töölaud",
+    "EDIT_CONTACT": "Redigeeri kontakti",
+    "EMAIL": "E-post",
+    "FULLNAME": "Täisnimi",
+    "LIST": "Loend",
+    "NEW_CONTACT": "Uus Kontakt",
+    "PHONE": "Telefon",
+    "SAVE": "Salvesta",
+    "INBOUND_WAITING_CALLS": "Sisenevad Ootel Kõned",
+    "CONTACTS": "Kontaktid",
+    "MYCONTACTS": "Minu Kontaktid",
+    "ADD_CONTACT": "Lisa Kontakt",
+    "RELOAD": "Laadi uuesti",
+    "WAITING_TEXT": "Ootel Suhtlused",
+    "TALKING_TEXT": "Aktiivsed Järjekorra Kõned",
+    "INBOUND_ANSWERED_TEXT": "Vastatud Järjekorra Kõned",
+    "DROP_RATE_TEXT": "Järjekorra Kõnede Katkestamise Määr",
+    "AVG_TALK_TIME_TEXT": "Järjekorra Kõnede Kõneaeg",
+    "INBOUND_ANSWER_RATE_TEXT": "Järjekorra Kõnede Vastamise Määr",
+    "UNMANAGED_TEXT": "Haldamata Suhtlused",
+    "TOTAL_TEXT": "Väljuvad Kõned kokku",
+    "OUTBOUND_ANSWERED_TEXT": "Väljuvad Vastatud Kõned",
+    "TOT_DURATION_TEXT": "Väljuvate Kõnede Kogukestus",
+    "AVG_DURATION_TEXT": "Väljuvate Kõnede Keskmine Kestus",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Väljuvate Kõnedee Vastamise Määr",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridy lehekülje kohta",
     "OF": "of",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send a message",
-    "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Close and dispose",
-    "DISPOSITIONS": "Dispositions",
-    "CLOSE_WITHOUT_DISPOSE": "Close without dispose",
-    "ACCEPT": "Accept",
-    "REJECT": "Reject",
-    "CLOSED": "Closed",
-    "INFO": "Info",
-    "NOTE": "Note",
-    "ACCEPT_ELSEWHERE": "Accepted elsewhere",
-    "ATTENTION": "Attention",
-    "SOCIAL": "Social",
-    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-    "OPENED": "Opened",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "SELECT_ACCOUNT": "Select Account",
-    "SELECT_WEBSITE": "Select Website",
-    "ALL": "All",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "OPEN": "Open",
-    "SHOW": "Show",
-    "SHOW_DETAILS": "Show Details",
-    "HIDE_DETAILS": "Hide Details",
-    "EXTERNAL_URL": "External Link",
-    "NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-    "NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-    "NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-    "SELECT_DATE_RANGE": "Select Date Range",
-    "CLEAR": "Clear",
-    "CALL_NUMBER": "Call",
-    "TRANSFER_NUMBER": "Transfer",
-    "CALL_SAVED": "Call properly saved",
-    "CALL_DISPOSED": "Call properly disposed",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuta enter sõnumi saatmiseks",
+    "CONTACT_INFO": "Kontakti Teave",
+    "CLOSE_AND_DISPOSE": "Sule ja eemalda",
+    "DISPOSITIONS": "Kasutused",
+    "CLOSE_WITHOUT_DISPOSE": "Sule ilma eemaldamiseta",
+    "ACCEPT": "Aktsepteeri",
+    "REJECT": "Hülga",
+    "CLOSED": "Suletud",
+    "INFO": "Teave",
+    "NOTE": "Märge",
+    "ACCEPT_ELSEWHERE": "Aktsepteeritud mujal",
+    "ATTENTION": "Tähelepanu",
+    "SOCIAL": "Sotsiaalne",
+    "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Jscripty Projekte pole saadaval",
+    "OPENED": "Avatud",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "SELECT_WEBSITE": "Vali Veebisait",
+    "ALL": "Kõik",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "OPEN": "Ava",
+    "SHOW": "Kuba",
+    "SHOW_DETAILS": "Kuva Üksikasjad",
+    "HIDE_DETAILS": "Peida Üksikasjad",
+    "EXTERNAL_URL": "Väline Link",
+    "NO_MAIL_ACCOUNTS_AVAILABLE": "E-posti Kontosid pole saadaval",
+    "NO_FAX_ACCOUNTS_AVAILABLE": "Faksi Kontosid pole saadaval",
+    "NO_SMS_ACCOUNTS_AVAILABLE": "Sõnumi Kontosid pole saadaval",
+    "SELECT_DATE_RANGE": "Vali Kuupäevavahemik",
+    "CLEAR": "Tühjenda",
+    "CALL_NUMBER": "Helista",
+    "TRANSFER_NUMBER": "Edasta",
+    "CALL_SAVED": "Kõne õigesti salvestatud",
+    "CALL_DISPOSED": "Kõne õigesti eemaldatud",
     "ACCOUNTINGDOC": "Raamatupidamine",
     "ADD_PRODUCTPRICELIST": "LISA TOODE",
     "ADVANCED_SEARCH": "Täpsem otsing",
     "BALANCE": "TASAKAAL",
     "BY": "Kõrval",
     "CANCEL": "Tühista",
-    "CHAT_INTERACTIONS": "Vestluse interaktsioonid",
+    "CHAT_INTERACTIONS": "Vestluse suhtlused",
     "CHOOSE": "Valige",
     "CLONEPROFORMA": "Kloon",
     "COMPANIES": "Ettevõtted",
     "DOSSIERNOTES": "Märge",
     "DOSSIERS": "Toimikud",
     "DOSSIER_INFO": "Teave",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "DRAFT": "Mustand",
-    "DRAFT_SAVE_WARNING_MESSAGE": "Selle interaktsiooni jaoks on juba mustand salvestatud. Kas soovite selle kindlasti üle kirjutada?",
+    "DRAFT_SAVE_WARNING_MESSAGE": "Selle suhtluse jaoks on juba mustand salvestatud. Kas soovid selle kindlasti üle kirjutada?",
     "DRAFT_SAVE_WARNING_TITLE": "Kas kirjutada olemasolev mustand üle?",
     "ENABLED": "Lubatud",
     "ENDDATE": "Kehtivusaeg",
     "ENDING_VALUE": "Lõppväärtus",
     "ENDS_WITH": "Lõpeb koos",
     "EQUALS": "Võrdub",
-    "FAX_INTERACTIONS": "Faksi interaktsioonid",
+    "FAX_INTERACTIONS": "Faksi suhtlused",
     "FROM": "Alates",
     "GRAPHINVOICES": "Arve heitkoguste tabel",
-    "ID": "Id",
+    "ID": "ID",
     "INASSET": "Vara",
-    "INTERACTION_CLOSED": "Koostoime on korralikult suletud",
-    "INTERACTION_CLOSED_DISPOSED": "Koostoime on korralikult suletud ja hävitatud",
-    "INTERACTION_DISPOSED": "Koostoime on korralikult paigutatud",
+    "INTERACTION_CLOSED": "Suhtlus on korralikult suletud",
+    "INTERACTION_CLOSED_DISPOSED": "Suhtlus on korralikult suletud ja eemaldatud",
+    "INTERACTION_DISPOSED": "Suhtlus on korralikult eemaldatud",
     "INVOICE": "ARV",
     "INVOICEDETAILS": "ARVETE ÜKSIKASJAD",
     "INVOICEDISCOUNT": "Soodustus",
-    "INVOICEEMITED": "Välja antud",
+    "INVOICEEMITED": "Väljastatud",
     "INVOICEID": "Arve",
     "INVOICENAME": "Arve nimi",
     "INVOICENOPRODUCTAMOUNT": "Summa",
     "IS_BETWEEN": "On vahel",
     "IS_GREATER_THAN": "On suurem kui",
     "IS_GREATER_THAN_OR_EQUAL_TO": "On suurem või võrdne",
-    "IS_LESS_THAN": "On vähem kui",
+    "IS_LESS_THAN": "On väiksem kui",
     "IS_LESS_THAN_OR_EQUAL_TO": "On väiksem või võrdne",
     "IS_NOT_AMONG": "Ei kuulu",
     "IS_NOT_EQUAL": "Ei võrdu",
-    "MAIL_INTERACTIONS": "E-posti interaktsioonid",
+    "MAIL_INTERACTIONS": "E-posti suhtlused",
     "MANAGESALES": "Tellimused",
-    "MEET_ALL_CONDITIONS": "Täitke kõik tingimused",
-    "MEET_ANY_CONDITIONS": "Täitke vähemalt üks tingimus",
+    "MEET_ALL_CONDITIONS": "Täida kõik tingimused",
+    "MEET_ANY_CONDITIONS": "Täida vähemalt üks tingimus",
     "MOVEASSET": "VARA",
-    "MOVECREDITNOTE": "VÕI KREDIIDI MÄRKUS",
+    "MOVECREDITNOTE": "TEISALDA KREDIIDI MÄRKUS",
     "NETPRICE": "Hind",
     "NEW_COMPANY": "Uus",
     "NEW_CONDITION": "Uus tingimus",
     "NEW_DOSSIER": "Uus toimik",
     "NEXTINVOICE": "Järgmine arve",
     "NOTES": "Märge",
-    "NO_AVAILABLE_INTERACTION": "Pole saadaval interaktsiooni",
+    "NO_AVAILABLE_INTERACTION": "Suhtlus pole saadaval",
     "NO_PRODUCTINVOICE_AVAILABLE": "Pole toodet",
     "NO_PRODUCTPRICELIST_AVAILABLE": "Andmed puuduvad",
     "NO_PRODUCTPROFORMA_AVAILABLE": "Andmed puuduvad",
     "NUMBER": "Arv",
-    "OPENCHANNEL_INTERACTIONS": "Avage kanalite interaktsioonid",
+    "OPENCHANNEL_INTERACTIONS": "Avage kanalite suhtlused",
     "OPENDATE": "Avamiskuupäev",
     "ORDER": "Telli",
     "ORDERCLIENTCODE": "Kliendikood",
     "ORDERNOTES": "Märge",
     "ORDERSTATUS": "Osariik",
     "ORDER_INFO": "Telli",
-    "OVERWRITE": "Üle kirjutada",
+    "OVERWRITE": "Kirjuta üle",
     "PAIDANDEXPIRED": "Makse",
     "PAYED_AY": "Maksti edasi",
     "PAYMENT": "Makse",
     "QUOTATIONINVOICEID": "Arve ID",
     "QUOTATIONNAME": "Tsitaadi nimi",
     "QUOTATIONNOTES": "Hinnapakkumised",
-    "QUOTATIONPRODUCTNOTE": "Toote märkus",
+    "QUOTATIONPRODUCTNOTE": "Toote mƤrkus",
     "QUOTATIONPRODUCTTYPE": "Tüüp",
     "QUOTATIONPROFORMAID": "Proforma ID",
     "QUOTATIONQTY": "Kogus",
     "SAVE_AS_DRAFT": "Salvesta mustandina",
     "SCHEDULED_CALLS": "Ajastatud kõned",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_COMPANY": "Valige ettevõte",
-    "SELECT_FIELD": "Valige väli",
+    "SELECT_COMPANY": "Vali ettevõte",
+    "SELECT_FIELD": "Vali väli",
     "SELECT_OPERATOR": "Valige operaator",
-    "SELECT_PERIOD": "Valige vahemik",
-    "SELECT_PERIOD_CREATION": "Valige loomise kuupäev",
-    "SELECT_PERIOD_EXPIRE": "Valige aegumiskuupäev",
-    "SELECT_PERIOD_START": "Valige kuupäev",
-    "SELECT_PRODUCT": "Valige toode",
-    "SELECT_PRODUCTTYPE": "Valige tüüp",
-    "SELECT_QUEUE": "Valige järjekord",
-    "SELECT_WORKFLOW": "Valige Töövoog",
-    "SELECT_WORKFLOWSTEPS": "Valige Töövoo olek",
-    "SMS_INTERACTIONS": "SMS-i interaktsioonid",
+    "SELECT_PERIOD": "Vali vahemik",
+    "SELECT_PERIOD_CREATION": "Vali loomise kuupäev",
+    "SELECT_PERIOD_EXPIRE": "Vali aegumiskuupäev",
+    "SELECT_PERIOD_START": "Vali kuupäev",
+    "SELECT_PRODUCT": "Vali toode",
+    "SELECT_PRODUCTTYPE": "Vali tüüp",
+    "SELECT_QUEUE": "Vali järjekord",
+    "SELECT_WORKFLOW": "Vali Töövoog",
+    "SELECT_WORKFLOWSTEPS": "Vali Töövoo olek",
+    "SMS_INTERACTIONS": "Sõnumi suhtlused",
     "STARTDATE": "Arve kuupäev",
     "STARTING_DATE": "Alguskuupäev",
     "STARTING_VALUE": "Algväärtus",
     "VALUE_RANGE_CHECK": "Väärtus peab olema suurem kui",
     "VIDAOOSESSION": "Alusta videokõnet",
     "VISIBILITY": "Nähtavus",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPP_INTERACTIONS": "WhatsApi pistikühendused",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPP_INTERACTIONS": "WhatsAppi suhtlused",
     "WORKFLOW": "Valige Töövoog",
-    "YEARS": "Aastaid",
+    "YEARS": "Aastad",
     "LAST_UPDATED": "Viimati uuendatud",
     "MATCHING_FIELD": "Vastav väli",
     "MULTIPLE_CONTACTS_FOUND": "Numbri jaoks leiti mitu kontakti",
-    "SELECT": "Valige",
-    "SELECT_CONTACT": "Valige kontakt",
-    "WHICH_ONE_TO_USE": "Kumba soovite kasutada?",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Whatsappi konto pole saadaval",
+    "SELECT": "Vali",
+    "SELECT_CONTACT": "Vali kontakt",
+    "WHICH_ONE_TO_USE": "Kumba soovid kasutada?",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi konto pole saadaval",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Teie litsents on aegumas! Võtke ühendust oma administraatoriga",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Sinu litsents on aegumas! Võta ühendust oma administraatoriga",
     "CREATEDAT": "Loodud aadressil",
     "ELAPSED_ANSWERED": "Kulunud aeg kõne alustamisest",
     "ELAPSED_DISPOSED": "Kulunud aeg kõne lõppemisest",
-    "LOST_CONNECTION": "Võrguühendusprobleemide kogemine. Palun kontrollige oma Interneti-ühendust.",
+    "LOST_CONNECTION": "Võrguühendusprobleemide ilmnemine. Palun kontrolli oma internetiühendust.",
     "NO_RESULTS_AVAILABLE": "Tulemusi pole saadaval",
-    "AUTOCLOSE": "Pärast utiliseerimist sulgege kontaktikaart automaatselt",
+    "AUTOCLOSE": "Pärast eemaldamist sulgege kontaktikaart automaatselt",
     "AGENT_PRESENCE": "Agendi kohalolek",
-    "SELECT_TEAM": "Valige Meeskond",
+    "SELECT_TEAM": "Valige Tiim",
     "AVAILABLE": "Saadaval",
-    "CONFIRM": "Kinnitage",
+    "CONFIRM": "Kinnita",
     "FILTERS": "Filtrid",
     "FILTER_CHAT_WEBSITES": "Filtreeri vestluse veebisaite",
-    "FILTER_FAX_ACCOUNTS": "Faksikontode filtreerimine",
-    "FILTER_MAIL_ACCOUNTS": "Filtreerige meilikontosid",
-    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreerige avatud kanalite kontod",
-    "FILTER_SMS_ACCOUNTS": "Sms -kontode filtreerimine",
-    "FILTER_WHATSAPP_ACCOUNTS": "Filtreerige Whatsappi kontosid",
-    "SETFILTERS": "Määrake filtrid",
+    "FILTER_FAX_ACCOUNTS": "Filtreeri Faksikontod",
+    "FILTER_MAIL_ACCOUNTS": "Filtreeri meilikontod",
+    "FILTER_OPENCHANNEL_ACCOUNTS": "Filtreeri avatud kanalite kontod",
+    "FILTER_SMS_ACCOUNTS": "Filtreeri Sõnumikontod",
+    "FILTER_WHATSAPP_ACCOUNTS": "Filtreeri Whatsappi kontod",
+    "SETFILTERS": "Määra filtrid",
     "DIAL_TIMEZONE": "Vali ajavöönd",
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "SYSTEM_TIME": "Süsteemi aeg",
-    "CONTACT_NAME": "kontaktisiku nimi",
-    "CONTACT_PHONE": "Kontakt Telefon",
-    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
-    "SCHEDULED_TIME": "Planeeritud aeg",
-    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
+    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
+    "SCHEDULED_AT": "kavas kl",
+    "SYSTEM_TIME": "Süsteemi aeg"
   }
 }
index ceb8029..7478044 100644 (file)
     "CONTACT_PHONE": "Contatto telefonico",
     "RECALLME_CALL_REMINDER": "Ricordami di chiamare il promemoria",
     "SCHEDULED_TIME": "Orario pianificato",
-    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami"
+    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami",
+    "WAITING_CALLS": "Chiamate in attesa",
+    "WAITING_INTERACTIONS": "Interazioni in attesa"
   }
 }
index a7727f7..cdc4504 100644 (file)
     "TODAY": "I dag",
     "SELECT_DATE": "Välj Startdatum",
     "SELECT_DATE_RANGE": "Välj datumintervall",
-    "CLEAR": "Rensa",
+    "CLEAR": "Klar",
     "CALL_NUMBER": "Ring upp",
     "TRANSFER_NUMBER": "Överföra",
     "CALL_SAVED": "Ring korrekt sparad",
index 7e03440..fd6d9b8 100644 (file)
 {
   "FAX": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "CANNEDANSWERS": "Canned Answers",
-    "FAXCANNEDANSWERS": "Canned Answers",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_FAXCANNEDANSWER": "New Canned Answer",
-    "ADD_FAXCANNEDANSWER": "Add Canned Answer",
-    "EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "TAGS": "Tags",
-    "REPLY": "Reply",
-    "SEND": "Send",
-    "TO": "To",
-    "FROM": "From",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-    "EDIT_TRUNK": "Edit Trunk",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "EDIT_ACCOUNT": "Edit Fax Account",
-    "PARTIALPAUSE": "Partial Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "GOTO_FAXACCOUNT": "Go To Realtime Fax",
-    "ACCOUNTS": "Accounts",
-    "GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-    "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "PAUSE": "Pause",
-    "INFO": "Info",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "LOGOUT": "Logout",
-    "DEFAULT_PAUSE": "Default pause",
-    "AGENTADD_QUEUE": "Add Agent to Fax queue",
-    "AGENTSADD_QUEUE": "Add Agents to Fax queue",
-    "UNPAUSE": "End Pause",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "PRIORITY": "Priority",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "EDIT_FAXQUEUE": "Edit Fax Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOP": "Edit GotoP",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "EDIT_QUEUE": "Edit Fax Queue",
-    "EDIT_CLOSE": "Edit Close",
-    "QUEUE": "Queue",
+    "LOGIN_TIME": "Sisselogimise Aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "FAXCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Salvestatud Vastuseid pole saadaval",
+    "NEW_FAXCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_FAXCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CHATCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_CHATCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SPYINTERACTION": "Spioon",
+    "TAGS": "Sildid",
+    "REPLY": "Vasta",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "GOTOREALTIME_FAXQUEUE": "Mine Reaalaja Faksi Järjekorda",
+    "EDIT_TRUNK": "Redigeeri Magistraali",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "EDIT_ACCOUNT": "Redigeeri Faksi Kontot",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "GOTO_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "ACCOUNTS": "Kontod",
+    "GOTOREALTIME_FAXACCOUNT": "Mine Reaalaja Faksi juurde",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "PAUSE": "Paus",
+    "INFO": "Teave",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "LOGOUT": "Logi välja",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "AGENTADD_QUEUE": "Lisa Agent Faksi järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agendid Faksi järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "PRIORITY": "Prioriteet",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "EDIT_FAXQUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "EDIT_QUEUE": "Redigeeri Faksi Järjekorda",
+    "EDIT_CLOSE": "Redigeeri Sule",
+    "QUEUE": "Järjekord",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Notes",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "REALTIME": "Realtime",
-    "TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-    "AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-    "NAME": "Name",
-    "FAXQUEUES": "Fax Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "NOTES": "Märkmed",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutamine",
+    "REALTIME": "Reaalaeg",
+    "TEAMADD_FAXQUEUE": "Lisa Tiim Faksi Järjekorda",
+    "AGENTADD_FAXQUEUE": "Lisa Agent Faksi Järjekorda",
+    "NAME": "Nimi",
+    "FAXQUEUES": "Faksi Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "LOCALSTATIONID_REQUIRED": "Mandatory Field",
-      "MODEM_REQUIRED": "Mandatory Field",
-      "GATEWAY_REQUIRED": "Mandatory Field",
-      "FAXDETECT_REQUIRED": "Mandatory Field",
-      "T38TIMEOUT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "HEADERINFO_REQUIRED": "Mandatory Field",
-      "TRUNK_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Peaksite pausi oleku määrama, kui see on kohustuslik"
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale Formaat",
+      "LOCALSTATIONID_REQUIRED": "Kohustuslik Väli",
+      "MODEM_REQUIRED": "Kohustuslik Väli",
+      "GATEWAY_REQUIRED": "Kohustuslik Väli",
+      "FAXDETECT_REQUIRED": "Kohustuslik Väli",
+      "T38TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "HEADERINFO_REQUIRED": "Kohustuslik Väli",
+      "TRUNK_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pead pausi oleku määrama, kui see on kohustuslik"
     },
-    "STRATEGY": "Strategy",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_FAXQUEUE": "Add Fax Queue",
-    "DELETE_FAXQUEUE": "Delete Fax Queue",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_FAXACCOUNT": "Add Fax Account",
-    "EDIT_FAXACCOUNT": "Edit Fax Account",
-    "DELETE_FAXACCOUNT": "Delete Fax Account",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "TRUNK": "Trunk",
-    "LOCALSTATIONID": "Local Station Identifier",
+    "STRATEGY": "Strateegia",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_FAXQUEUE": "Lisa Faksi Järjekord",
+    "DELETE_FAXQUEUE": "Kustuta Faksi Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "FAXACCOUNTS": "Faksi Kontod",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_FAXACCOUNT": "Lisa Faksi Konto",
+    "EDIT_FAXACCOUNT": "Redigeeri Faksi Kontot",
+    "DELETE_FAXACCOUNT": "Kustuta Faksi Konto",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "TRUNK": "Magistraal",
+    "LOCALSTATIONID": "Kohaliku Jaama ID",
     "HELP": {
-      "LOCALSTATIONID": "Local Station Identifier (telephone number)",
-      "HEADERINFO": "Outbound Fax Header information",
-      "MODEM": "Modem Type (v17/v27/v29)",
-      "GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-      "FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-      "T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-      "ECM": "Error Connection Mode (ECM)",
-      "MINRATE": "Minimum transfer rate set before transmission",
-      "MAXRATE": "Maximum transfer rate set before transmission",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku dispositsiooni olek"
+      "LOCALSTATIONID": "Kohaliku Jaama ID (telefoninumber)",
+      "HEADERINFO": "Väljuva Faksi Päise teave",
+      "MODEM": "Modemi Tüüp (v17/v27/v29)",
+      "GATEWAY": "T.38 Faksi Portaal, valikulise faksi tegevuse aegumisega sekundite jooksul (jah/ei/[aegumine])",
+      "FAXDETECT": "Luba Faksi Tuvastamine valikulise aegumisega sekundite jooksul (jah/t38/cng/[aegumine]/ei)",
+      "T38TIMEOUT": "T.38 läbirääkimise jaoks kasutatud aegumine (miinimumväärtus=1000)",
+      "ECM": "Ühenduse Režiimi Viga (ECM)",
+      "MINRATE": "Minimaalne edastuse määr, mis on määratud enne edastamist",
+      "MAXRATE": "Maksimaalne edastuse määr, mis on määratud enne edastamist",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Peata kohustusliku kasutamise olek"
     },
-    "ADVANCED": "Advanced",
+    "ADVANCED": "Täpsem",
     "ECM": "ECM",
-    "MINRATE": "Min Rate",
-    "MAXRATE": "Max Rate",
+    "MINRATE": "Min Määr",
+    "MAXRATE": "Maks Määr",
     "MODEM": "Modem",
-    "GATEWAY": "Gateway",
-    "FAXDETECT": "Fax Detect",
-    "T38TIMEOUT": "T.38 Timeout",
-    "SIP": "Technology",
-    "HEADERINFO": "Header Info",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "FAX": "Fax",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Dispositions",
-    "NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-    "NEW_FAXDISPOSITION": "New Fax Disposition",
-    "ADD_FAXDISPOSITION": "Add Fax Disposition",
-    "EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-    "DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-    "NEW_FAXQUEUE": "New Fax Queue",
-    "NEW_FAXACCOUNT": "New Fax Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "GATEWAY": "Portaal",
+    "FAXDETECT": "Faksi Tuvastus",
+    "T38TIMEOUT": "T.38 Aegumine",
+    "SIP": "Tehnoloogia",
+    "HEADERINFO": "Päise Teave",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "FAX": "Faks",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "FAXDISPOSITIONS": "Faksi Kasutus",
+    "NO_FAXDISPOSITION_AVAILABLE": "Faksi Kasutused pole saadaval",
+    "NEW_FAXDISPOSITION": "Uus Faksi Kasutus",
+    "ADD_FAXDISPOSITION": "Lisa Faksi Kasutus",
+    "EDIT_FAXDISPOSITION": "Redigeeri Faksi Kasutus",
+    "DELETE_FAXDISPOSITION": "Kustuta Faksi Kasutus",
+    "NEW_FAXQUEUE": "Uus Faksi Järjekord",
+    "NEW_FAXACCOUNT": "Uus Faksi Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DELETE": "Delete",
-    "KEY": "Key",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select Status",
-    "ALL": "All",
-    "CLOSED": "Closed",
-    "OPENED": "Opened",
-    "SELECT_ACCOUNT": "Select Account",
-    "INTERACTIONS": "Interactions",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "UNKNOWN": "Unknown",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DELETE": "Kustuta",
+    "KEY": "Võti",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali Staatus",
+    "ALL": "Kõik",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "INTERACTIONS": "Suhtlused",
+    "CONTACT": "Kontact",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "UNKNOWN": "Teadmata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutuses",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutuses",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-post",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "INTERACTIONS_FAXACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_FAXACCOUNT": "Lisa Agent Faksi Kontole",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku dispositsiooni korral",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Peatage olek kohustusliku kasutamise korral",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli"
   }
index 4c1be43..b43fb9a 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
-    "ABOUT": "About",
-    "CONTACT_US": "Contact us",
-    "HELP": "Help",
-    "USEFUL_LINKS": "Useful links"
+    "ABOUT": "Kohta",
+    "CONTACT_US": "Võta meiega ühendust",
+    "HELP": "Abi",
+    "USEFUL_LINKS": "Kasulikud lingid"
   }
 }
index 0a98fe6..7444e6b 100644 (file)
@@ -1,54 +1,54 @@
 {
   "INTEGRATIONS": {
-    "ADVANCED": "Advanced",
-    "MODULE_SEARCH": "Module Search",
-    "MODULE_CREATE": "Module Create",
-    "INTEGRATIONS": "Integrations",
-    "ZENDESKACCOUNTS": "Zendesk Accounts",
-    "ID": "Id",
-    "NAME": "Name",
-    "USERNAME": "Username",
+    "ADVANCED": "Täpsem",
+    "MODULE_SEARCH": "Mooduli Otsing",
+    "MODULE_CREATE": "Mooduli Loomine",
+    "INTEGRATIONS": "Integreerimised",
+    "ZENDESKACCOUNTS": "Zendesk Kontod",
+    "ID": "ID",
+    "NAME": "Nimi",
+    "USERNAME": "Kasutajanimi",
     "URI": "URL",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-    "DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-    "NEW_ZENDESKACCOUNT": "New Zendesk Account",
-    "AUTHTYPE": "Authentication Type",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-    "DESCRIPTION": "Description",
-    "ADD_ZENDESKACCOUNT": "Add Zendesk Account",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "EDIT_ZENDESKACCOUNT": "Redigeeri Zendesk Kontot",
+    "DELETE_ZENDESKACCOUNT": "Kustuta Zendesk Konto",
+    "NEW_ZENDESKACCOUNT": "Uus Zendesk Konto",
+    "AUTHTYPE": "Autentimise Tüüp",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TOKEN": "Luba",
+    "MOTIONPROXYADDRESS": "Liikuv või Puhvri IP-aadress",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_ZENDESKACCOUNT": "Lisa Zendesk Konto",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "URI_REQUIRED": "Mandatory field",
-      "URI_MUST_VALID_URL": "Wrong format",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TOKEN_REQUIRED": "Mandatory field",
-      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-      "CLIENTID_REQUIRED": "Mandatory field",
-      "CLIENTSECRET_REQUIRED": "Mandatory field",
-      "SECURITYTOKEN_REQUIRED": "Mandatory field",
-      "APIKEY_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "VARIABLENAME_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "CONSUMERKEY_REQUIRED": "Mandatory field",
-      "CONSUMERSECRET_REQUIRED": "Mandatory field",
-      "TOKENSECRET_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "AUTHTOKEN_REQUIRED": "Mandatory field",
-      "VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-      "ACCESS_KEY_REQUIRED": "Mandatory field",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "URI_REQUIRED": "Kohustuslik väli",
+      "URI_MUST_VALID_URL": "Vale formaat",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "TOKEN_REQUIRED": "Kohustuslik väli",
+      "MOTIONPROXYADDRESS_MUST_VALID_URL": "Vale formaat",
+      "CLIENTID_REQUIRED": "Kohustuslik väli",
+      "CLIENTSECRET_REQUIRED": "Kohustuslik väli",
+      "SECURITYTOKEN_REQUIRED": "Kohustuslik väli",
+      "APIKEY_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "VARIABLENAME_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "CONSUMERKEY_REQUIRED": "Kohustuslik väli",
+      "CONSUMERSECRET_REQUIRED": "Kohustuslik väli",
+      "TOKENSECRET_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik väli",
+      "VTIGER_USER_NAME_REQUIRED": "Kohustuslik väli",
+      "ACCESS_KEY_REQUIRED": "Kohustuslik väli",
       "CODE_REQUIRED": "Kohustuslik väli",
       "EMAIL_REQUIRED": "Kohustuslik väli",
       "TENANTID_REQUIRED": "Kohustuslik väli",
       "MODULECREATE_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
-      "MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
+      "MOTIONPROXYADDRESS": "Liikuv (Puhvri) Address: see on nõutav, kui soovid täita pileti sisu Salvestuse URLiga. Sisesta aadress järgmises formaadis: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
       "CLIENTID": "Teie rakenduse konkreetne kliendi ID",
       "CLIENTSECRET": "Teie rakenduse konkreetne CLientSecret",
       "CODE": "Arendajakonsooli kaudu genereeritud konkreetne kood",
       "REFRESHTOKEN": "Automaatselt genereeritav värskendamisluba, mida kasutatakse aegunud juurdepääsumärkide värskendamiseks. Samuti genereeritakse pääsuluba automaatselt iga kord, kui api käivitatakse.",
       "TICKETTYPE": "Pileti tüüp",
-      "ZONE": "Valige domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
+      "ZONE": "Vali domeenipõhiste Zoho-kontode aktiveerimiseks oma geograafiline tsoon (USA, AU, EL, IN, CN)",
       "ADDITIONALSEARCHACCOUNT": "Täiendav välja nimi, mida kasutatakse kontol kliendi telefoninumbri otsimiseks",
       "ADDITIONALSEARCHCONTACT": "Täiendav välja nimi, mida kasutatakse kliendi telefoninumbri otsimiseks menüüst Kontaktid",
       "ADDITIONALSEARCHLEAD": "Potentsiaalsete klientide telefoninumbri otsimiseks kasutatav täiendav välja nimi",
-      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi",
-      "MODERN_AUTHENTICATION": "Lülitage sisse, et lubada kaasaegne autentimine"
+      "LEADID": "Välja ja juhtumi objektide linkimiseks kasutatav välja nimi"
     },
-    "ACCOUNT": "Account",
-    "ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-    "SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-    "SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-    "FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-    "NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-    "ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-    "DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-    "NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-    "NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-    "ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-    "DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-    "NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-    "ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-    "DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-    "NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-    "ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-    "DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-    "SALESFORCEACCOUNTS": "Salesforce Accounts",
-    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-    "DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-    "NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-    "ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-    "CLIENTID": "Client ID",
-    "CLIENTSECRET": "Client Secret",
-    "SECURITYTOKEN": "Security Token",
-    "SEARCH_FOR_ANYONE": "Search",
-    "APIKEY": "Api Key",
-    "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-    "DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-    "NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-    "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-    "DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-    "NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-    "CONFIGURATIONS": "Configurations",
-    "NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-    "NEW_CONFIGURATION": "New Configuration",
-    "ADD_CONFIGURATION": "Add Configuration",
-    "EDIT_CONFIGURATION": "Edit Configuration",
-    "DELETE_CONFIGURATION": "Delete Configuration",
-    "SUBJECTS": "Subjects",
-    "DESCRIPTIONS": "Descriptions",
-    "FIELDS": "Fields",
-    "TAGS": "Tags",
-    "TYPE": "Type",
-    "CONTENT": "Content",
-    "EDIT_SUBJECT": "Edit Subject",
-    "DELETE_SUBJECT": "Delete Subject",
-    "NEW_SUBJECT": "New Subject",
-    "ADD_SUBJECT": "Add Subject",
-    "EDIT_DESCRIPTION": "Edit Description",
-    "DELETE_DESCRIPTION": "Delete Description",
-    "NEW_DESCRIPTION": "New Description",
-    "ADD_DESCRIPTION": "Add Description",
-    "EDIT_FIELD": "Edit Field",
-    "DELETE_FIELD": "Delete Field",
-    "NEW_FIELD": "New Field",
-    "ADD_FIELD": "Add Field",
-    "ADD": "Add",
-    "VOICE": "Voice",
-    "MAIL": "Email",
-    "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "INBOUND_IN_QUEUE": "Inbound in Queue",
-    "OUTBOUND_CALL": "Outbound Call",
-    "VALUE": "Value",
-    "FIELD": "Field",
-    "KEY": "Key",
-    "CHANNEL": "Channel",
-    "DELETE": "Delete",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TEST_ZENDESKACCOUNT": "Test Zendesk Account",
-    "TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
-    "TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
-    "TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
-    "INTEGRATION_TAB": "Integration Tab",
-    "NEW_TAB": "New Tab",
-    "DESKACCOUNTS": "Desk Accounts",
-    "EDIT_DESKACCOUNT": "Edit Desk Account",
-    "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Delete Desk Account",
-    "CONSUMERKEY": "Consumer Key",
-    "CONSUMERSECRET": "Consumer Secret",
-    "TOKENSECRET": "Token Secret",
-    "ADD_DESKACCOUNT": "Add Desk Account",
-    "NEW_DESKACCOUNT": "New Desk Account",
-    "ADD_DESKCONFIGURATION": "Add Desk Configuration",
-    "NEW_DESKCONFIGURATION": "New Desk Configuration",
-    "DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-    "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-    "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-    "ADD_ZOHOACCOUNT": "Add Zoho Account",
-    "NEW_ZOHOACCOUNT": "New Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-    "NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-    "AUTHTOKEN": "Authorization Token",
+    "ACCOUNT": "Konto",
+    "ZENDESKCONFIGURATIONS": "Zendesk Konfiguratsioonid",
+    "SALESFORCECONFIGURATIONS": "Salesforce Konfiguratsioonid",
+    "SUGARCRMCONFIGURATIONS": "SugarCRM Konfiguratsioonid",
+    "FRESHDESKCONFIGURATIONS": "Freshdesk Konfiguratsioonid",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Zendesk Konfiguratsioonid pole saadaval",
+    "NEW_ZENDESKCONFIGURATION": "Uus Zendesk Konfiguratsioon",
+    "ADD_ZENDESKCONFIGURATION": "Lisa Zendesk Konfiguratsioon",
+    "EDIT_ZENDESKCONFIGURATION": "Redigeeri Zendesk Konfiguratsiooni",
+    "DELETE_ZENDESKCONFIGURATION": "Kustuta Zendesk Konfiguratsioon",
+    "NO_SALESFORCECONFIGURATION_AVAILABLE": "Salesforce Konfiguratsioonid pole saadaval",
+    "NEW_SALESFORCECONFIGURATION": "Uus Salesforce Konfiguratsioon",
+    "ADD_SALESFORCECONFIGURATION": "Lisa Salesforce Konfiguratsioon",
+    "EDIT_SALESFORCECONFIGURATION": "Redigeeri Salesforce Konfiguratsiooni",
+    "DELETE_SALESFORCECONFIGURATION": "Kustuta Salesforce Konfiguratsioon",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "SugarCRM Konfiguratsioonid pole saadaval",
+    "NEW_SUGARCRMCONFIGURATION": "Uus SugarCRM Konfiguratsioon",
+    "ADD_SUGARCRMCONFIGURATION": "Lisa SugarCRM Konfiguratsioon",
+    "EDIT_SUGARCRMCONFIGURATION": "Redigeeri SugarCRM Konfiguratsiooni",
+    "DELETE_SUGARCRMCONFIGURATION": "Kustuta SugarCRM Konfiguratsioon",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Freshdesk Konfiguratsioonid pole saadaval",
+    "NEW_FRESHDESKCONFIGURATION": "Uus Freshdesk Konfiguratsioon",
+    "ADD_FRESHDESKCONFIGURATION": "Lisa Freshdesk Konfiguratsioon",
+    "EDIT_FRESHDESKCONFIGURATION": "Redigeeri Freshdesk Konfiguratsiooni",
+    "DELETE_FRESHDESKCONFIGURATION": "Kustuta Freshdesk Konfiguratsioon",
+    "SALESFORCEACCOUNTS": "Salesforce Kontod",
+    "EDIT_SALESFORCEACCOUNT": "Redigeeri Salesforce Kontot",
+    "DELETE_SALESFORCEACCOUNT": "Kustuta Salesforce Konto",
+    "NEW_SALESFORCEACCOUNT": "Uus Salesforce Konto",
+    "ADD_SALESFORCEACCOUNT": "Lisa Salesforce Konto",
+    "CLIENTID": "Kliendi ID",
+    "CLIENTSECRET": "Kliendi Saladus",
+    "SECURITYTOKEN": "Turvalisuse Luba",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "APIKEY": "Api Võti",
+    "FRESHDESKACCOUNTS": "Freshdesk Kontod",
+    "EDIT_FRESHDESKACCOUNT": "Redigeeri Freshdesk Kontot",
+    "DELETE_FRESHDESKACCOUNT": "Kustuta Freshdesk Konto",
+    "NEW_FRESHDESKACCOUNT": "Uus Freshdesk Konto",
+    "ADD_FRESHDESKACCOUNT": "Lisa Freshdesk Konto",
+    "SUGARCRMACCOUNTS": "SugarCRM Kontod",
+    "EDIT_SUGARCRMACCOUNT": "Redigeeri SugarCRM Kontot",
+    "DELETE_SUGARCRMACCOUNT": "Kustuta SugarCRM Konto",
+    "NEW_SUGARCRMACCOUNT": "Uus SugarCRM Konto",
+    "ADD_SUGARCRMACCOUNT": "Lisa SugarCRM Konto",
+    "CONFIGURATIONS": "Konfiguratsioonid",
+    "NO_CONFIGURATION_AVAILABLE": "Konfiguratsioonid pole saadaval",
+    "NEW_CONFIGURATION": "Uus Konfiguratsioon",
+    "ADD_CONFIGURATION": "Lisa Konfiguratsioon",
+    "EDIT_CONFIGURATION": "Redigeeri Konfiguratsiooni",
+    "DELETE_CONFIGURATION": "Kustuta Konfiguratsioon",
+    "SUBJECTS": "Teemad",
+    "DESCRIPTIONS": "Kirjeldused",
+    "FIELDS": "Väljad",
+    "TAGS": "Sildid",
+    "TYPE": "Tüüp",
+    "CONTENT": "Sisu",
+    "EDIT_SUBJECT": "Redigeeri Teemat",
+    "DELETE_SUBJECT": "Kustuta Teema",
+    "NEW_SUBJECT": "Uus Teema",
+    "ADD_SUBJECT": "Lisa Teema",
+    "EDIT_DESCRIPTION": "Redigeeri Kirjeldust",
+    "DELETE_DESCRIPTION": "Kustuta Kirjeldus",
+    "NEW_DESCRIPTION": "Uus Kirjeldus",
+    "ADD_DESCRIPTION": "Lisa Kirjeldus",
+    "EDIT_FIELD": "Redigeeri Väli",
+    "DELETE_FIELD": "Kustuta Väli",
+    "NEW_FIELD": "Uus Väli",
+    "ADD_FIELD": "Lisa Väli",
+    "ADD": "Lisa",
+    "VOICE": "Hääl",
+    "MAIL": "E-post",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava Kanal",
+    "INBOUND_IN_QUEUE": "Sisenevad Järjekorras",
+    "OUTBOUND_CALL": "Väljuv Kõne",
+    "VALUE": "Väärtus",
+    "FIELD": "Väli",
+    "KEY": "Võti",
+    "CHANNEL": "Kanal",
+    "DELETE": "Kustuta",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TEST_ZENDESKACCOUNT": "Testi Zendesk Kontot",
+    "TEST_FRESHDESKACCOUNT": "Testi Freshdesk Kontot",
+    "TEST_SUGARCRMACCOUNT": "Testi SugerCRM Kontot",
+    "TEST_SALESFORCEACCOUNT": "Testi Salesforce Kontot",
+    "INTEGRATION_TAB": "Integratsiooni Vahekaart",
+    "NEW_TAB": "Uus Vahekaart",
+    "DESKACCOUNTS": "Desk Kontod",
+    "EDIT_DESKACCOUNT": "Redigeeri Desk Kontot",
+    "TEST_DESKACCOUNT": "Testi Desk Kontot",
+    "DELETE_DESKACCOUNT": "Kustuta Desk Konto",
+    "CONSUMERKEY": "Tarbija Võti",
+    "CONSUMERSECRET": "Tarbija Saladus",
+    "TOKENSECRET": "Loa Saladus",
+    "ADD_DESKACCOUNT": "Lisa Desk Konto",
+    "NEW_DESKACCOUNT": "Uus Desk Konto",
+    "ADD_DESKCONFIGURATION": "Lisa Desk Konfiguratsioon",
+    "NEW_DESKCONFIGURATION": "Uus Desk Konfiguratsioon",
+    "DELETE_DESKCONFIGURATION": "Kustuta Desk Konfiguratsioon",
+    "ZOHOACCOUNTS": "Zoho Kontod",
+    "EDIT_ZOHOACCOUNT": "Redigeeri Zoho Kontot",
+    "TEST_ZOHOACCOUNT": "Testi Zoho Kontot",
+    "DELETE_ZOHOACCOUNT": "Kustuta Zoho Konto",
+    "ADD_ZOHOACCOUNT": "Lisa Zoho Konto",
+    "NEW_ZOHOACCOUNT": "Uus Zoho Konto",
+    "ADD_ZOHOCONFIGURATION": "Lisa Zoho Konfiguratsioon",
+    "NEW_ZOHOCONFIGURATION": "Uus Zoho Konfiguratsioon",
+    "AUTHTOKEN": "Autoriseerimise Luba",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "DELETE_ZOHOCONFIGURATION": "Kustuta Zoho Konfiguratsioon",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "VTIGERACCOUNTS": "vTiger Accounts",
-    "VTIGER_USER_NAME": "vTiger User Name",
-    "MODULE_NAME": "vTiger Module Name",
-    "ACCESS_KEY": "vTiger Access Key",
-    "ADD_VTIGERACCOUNT": "Add new vTiger Account",
-    "EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-    "TEST_VTIGERACCOUNT": "Test vTiger Account",
-    "DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-    "NEW_VTIGERACCOUNT": "New vTiger Account",
-    "NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-    "DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-    "ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-    "ADD_DYNAMICS365ACCOUNT": "Lisage uus Dynamics365 konto",
-    "ADD_DYNAMICS365CONFIGURATION": "Lisage Dynamics365 konfiguratsioon",
-    "ADD_FRESHSALESACCOUNT": "Lisage värskenduste konto",
-    "ADD_FRESHSALESCONFIGURATION": "Lisage värskenduste konfiguratsioon",
-    "ADD_SERVICENOWACCOUNT": "Lisage uus ServiceNow konto",
-    "ADD_SERVICENOWCONFIGURATION": "Lisage teenuseNow konfiguratsioon",
+    "VTIGERACCOUNTS": "vTiger Kontod",
+    "VTIGER_USER_NAME": "vTiger Kasutajanimi",
+    "MODULE_NAME": "vTiger Mooduli Nimi",
+    "ACCESS_KEY": "vTiger Pääsuvõti",
+    "ADD_VTIGERACCOUNT": "Lisa Uus vTiger Konto",
+    "EDIT_VTIGERACCOUNT": "Redigeeri vTiger Kontot",
+    "TEST_VTIGERACCOUNT": "Testi vTiger Kontot",
+    "DELETE_VTIGERACCOUNT": "Kustuta vTiger Konto",
+    "NEW_VTIGERACCOUNT": "Uus vTiger Konto",
+    "NEW_VTIGERCONFIGURATION": "Loo vTiger Konfiguratsioon",
+    "DELETE_VTIGERCONFIGURATION": "Kustuta vTiger Konfiguratsioon",
+    "ADD_VTIGERCONFIGURATION": "Lisa vTiger Konfiguratsioon",
+    "ADD_DYNAMICS365ACCOUNT": "Lisa uus Dynamics365 konto",
+    "ADD_DYNAMICS365CONFIGURATION": "Lisa Dynamics365 konfiguratsioon",
+    "ADD_FRESHSALESACCOUNT": "Lisa värskenduste konto",
+    "ADD_FRESHSALESCONFIGURATION": "Lisa värskenduste konfiguratsioon",
+    "ADD_SERVICENOWACCOUNT": "Lisa uus ServiceNow konto",
+    "ADD_SERVICENOWCONFIGURATION": "Lisa teenuse Now konfiguratsioon",
     "CASE": "Juhtum",
     "CODE": "Arendaja konsooli kood",
-    "CONTACTS": "Võtke ühendust",
-    "DELETE_DYNAMICS365ACCOUNT": "Kustutage Dynamics365 konto",
-    "DELETE_DYNAMICS365CONFIGURATION": "Kustutage Dynamics365 konfiguratsioon",
+    "CONTACTS": "Võta ühendust",
+    "DELETE_DYNAMICS365ACCOUNT": "Kustuta Dynamics365 konto",
+    "DELETE_DYNAMICS365CONFIGURATION": "Kustuta Dynamics365 konfiguratsioon",
     "DELETE_FRESHSALESACCOUNT": "Kustuta värskenduste konto",
-    "DELETE_FRESHSALESCONFIGURATION": "Kustutage värskenduste konfiguratsioon",
+    "DELETE_FRESHSALESCONFIGURATION": "Kustuta värskenduste konfiguratsioon",
     "DELETE_SERVICENOWACCOUNT": "Kustuta ServiceNow konto",
-    "DELETE_SERVICENOWCONFIGURATION": "Kustutage teenuseNow konfiguratsioon",
+    "DELETE_SERVICENOWCONFIGURATION": "Kustuta ServiceNow konfiguratsioon",
     "DYNAMICS365ACCOUNTS": "Dynamics365 kontod",
-    "EDIT_DYNAMICS365ACCOUNT": "Muutke rakenduse Dynamics365 kontot",
-    "EDIT_FRESHSALESACCOUNT": "Redigeeri värskenduste kontot",
-    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri värskenduste konfiguratsiooni",
-    "EDIT_SERVICENOWACCOUNT": "Teenuse ServiceNow konto muutmine",
+    "EDIT_DYNAMICS365ACCOUNT": "Muuda rakenduse Dynamics365 kontot",
+    "EDIT_FRESHSALESACCOUNT": "Redigeeri Freshsales kontot",
+    "EDIT_FRESHSALESCONFIGURATION": "Redigeeri Freshsales konfiguratsiooni",
+    "EDIT_SERVICENOWACCOUNT": "Redigeeri ServiceNow kontot",
     "EMAIL": "E-post",
-    "FRESHSALESACCOUNTS": "Värske müügi kontod",
-    "LEADS": "Plii",
+    "FRESHSALESACCOUNTS": "Freshsales kontod",
+    "LEADS": "Vihjed",
     "MODULECREATE": "Mooduli loomine",
     "NEW_DYNAMICS365ACCOUNT": "Uus Dynamics365 konto",
-    "NEW_DYNAMICS365CONFIGURATION": "Looge Dynamics365 konfiguratsioon",
-    "NEW_FRESHSALESACCOUNT": "Uus värskete müügi konto",
-    "NEW_FRESHSALESCONFIGURATION": "Uus värskenduste konfiguratsioon",
+    "NEW_DYNAMICS365CONFIGURATION": "Loo Dynamics365 konfiguratsioon",
+    "NEW_FRESHSALESACCOUNT": "Uus Freshsales konto",
+    "NEW_FRESHSALESCONFIGURATION": "Uus Freshsales konfiguratsioon",
     "NEW_SERVICENOWACCOUNT": "Uus ServiceNow konto",
-    "NEW_SERVICENOWCONFIGURATION": "Looge teenuseNow konfiguratsioon",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Värske müügi konfiguratsioone pole saadaval",
+    "NEW_SERVICENOWCONFIGURATION": "Loo ServiceNow konfiguratsioon",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Freshsales konfiguratsioonid pole saadaval",
     "PHONECALL": "Telefonikõne",
-    "REFRESHTOKEN": "Värskenda luba (loodud)",
+    "REFRESHTOKEN": "Värskenda luba",
     "SERVICENOWACCOUNTS": "ServiceNow kontod",
     "TASK": "Ülesanne",
-    "TENANTID": "Üürniku ID",
-    "TEST_DYNAMICS365ACCOUNT": "Testige Dynamics365 kontot",
-    "TEST_FRESHSALESACCOUNT": "Testige värskenduste kontot",
-    "TEST_SERVICENOWACCOUNT": "Test ServiceNow konto testimine",
+    "TENANTID": "Rentniku ID",
+    "TEST_DYNAMICS365ACCOUNT": "Testi Dynamics365 kontot",
+    "TEST_FRESHSALESACCOUNT": "Testi Freshsales kontot",
+    "TEST_SERVICENOWACCOUNT": "Testi ServiceNow kontot",
     "TICKETTYPE": "Pileti tüüp",
     "ZONE": "Tsoon",
     "ADDITIONALSEARCHACCOUNT": "Täiendav otsingukonto",
     "ADDITIONALSEARCHCONTACT": "Täiendav otsingu kontakt",
-    "ADDITIONALSEARCHLEAD": "Täiendav otsingujuht",
-    "LEADID": "Plii ID",
-    "DYNAMIC365CONTACT": "Võtke ühendust",
-    "DYNAMIC365NOTHING": "Mitte midagi",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine",
-    "OPENNEWTAB": "Ava uus vaheleht"
+    "ADDITIONALSEARCHLEAD": "Täiendav otsinguvihje",
+    "LEADID": "Vihje ID"
   }
 }
index 054f558..0aa355b 100644 (file)
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Clone Project",
-    "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DESCRIPTION": "Description",
+    "CLONE_PROJECT": "Klooni Projekti",
+    "NAME": "Nimi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "DESCRIPTION": "Kirjeldus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format"
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat"
     },
-    "SAVE": "Save",
-    "PROJECTS": "Projects",
-    "ADD_PROJECT": "Add Project",
-    "EDIT_PROJECT": "Edit Project",
-    "DELETE_PROJECT": "Delete Project",
+    "SAVE": "Salvesta",
+    "PROJECTS": "Projektid",
+    "ADD_PROJECT": "Lisa Projekt",
+    "EDIT_PROJECT": "Redigeeri Projekti",
+    "DELETE_PROJECT": "Kustuta Projekt",
     "JSCRIPTY": "Jscripty",
-    "ID": "Id",
-    "PROJECT": "Project",
-    "CREATED_AT": "Created At",
-    "NEW_PROJECT": "New Project",
-    "EDIT": "Edit",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "BUILDER": "Builder",
-    "PREVIEW": "Preview",
-    "OPEN_CONTACT": "Open Contact",
+    "ID": "ID",
+    "PROJECT": "Projekt",
+    "CREATED_AT": "Loomisaeg",
+    "NEW_PROJECT": "Uus Projekt",
+    "EDIT": "Redigeeri",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "BUILDER": "Koostur",
+    "PREVIEW": "Eelvaade",
+    "OPEN_CONTACT": "Ava Kontakt",
     "HELP": {
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus peatage agendi paus automaatselt"
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENABLEUNCOMPLETESAVE": "Luba salvestada agendi sessiooni isegi siis, kui uuring pole lõpetatud",
+      "SENDUNPAUSEONSUBMIT": "Uuringu lõpus katkesta agendi paus automaatselt"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "JSCRIPTYSESSIONS": "Project Sessions",
-    "SESSIONS": "Sessions",
-    "STARTTIME": "Start Time",
-    "ENDTIME": "End Time",
-    "MEMBERNAME": "Member Name",
-    "CALLERIDNUM": "Caller Number",
-    "NO_SESSION_AVAILABLE": "No Sessions available",
-    "SESSION_RESULTS": "Session Results",
-    "SHOW_QUESTIONS_SESSION": "Show Session Results",
-    "ANSWERS": "Answers",
-    "NO_RESULTS_AVAILABLE": "No results available",
-    "TOTAL": "Total",
-    "ANSWER": "Answer",
-    "EXPORT_TO_CSV": "Export to CSV",
-    "NO_ANSWERS_AVAILABLE": "No answers available",
-    "DELETE_SESSION": "Delete Session",
-    "RESET_SESSION": "Reset Session",
-    "YES": "Yes",
-    "NO": "No",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-    "ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-    "ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-    "SUBMIT": "Submit",
-    "PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-    "COMPLETE": "Complete",
-    "SESSIONS_PROJECT": "Go to Sessions",
-    "SENDUNPAUSEONSUBMIT": "Peata esindaja saatmisel"
+    "JSCRIPTYSESSIONS": "Projekti Sessioonid",
+    "SESSIONS": "Sessioonid",
+    "STARTTIME": "Alguse Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "MEMBERNAME": "Liikme Nimi",
+    "CALLERIDNUM": "Helistaja Number",
+    "NO_SESSION_AVAILABLE": "Sessioonid pole saadaval",
+    "SESSION_RESULTS": "Sessiooni Tulemused",
+    "SHOW_QUESTIONS_SESSION": "Kuva Sessiooni Tulemusi",
+    "ANSWERS": "Vastused",
+    "NO_RESULTS_AVAILABLE": "Tulemused pole saadaval",
+    "TOTAL": "Kokku",
+    "ANSWER": "Vastus",
+    "EXPORT_TO_CSV": "Ekspordi CSVsse",
+    "NO_ANSWERS_AVAILABLE": "Vastused pole saadaval",
+    "DELETE_SESSION": "Kustuta Sessioon",
+    "RESET_SESSION": "Lähtesta Sessioon",
+    "YES": "Jah",
+    "NO": "Ei",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Kas soovid sessiooni lähtestada?",
+    "ALL_SURVEY_DATA_WILL_BE_LOST": "Kõik uuringu vastused lähevad kaotsi!",
+    "ENABLEUNCOMPLETESAVE": "Luba pooleliolev salvestamine",
+    "SUBMIT": "Esita",
+    "PROJECT_NOT_AVAILABLE": "Projekt pole saadaval. Palun võta ühendust administraatoriga",
+    "COMPLETE": "Vii lõpule",
+    "SESSIONS_PROJECT": "Mine Sessioonidesse",
+    "SENDUNPAUSEONSUBMIT": "Saada Käivita esitamisel"
   },
   "mwForm": {
     "form": {
-      "name": "Title",
-      "name.placeholder": "Form title",
-      "description": "Description"
+      "name": "Pealkiri",
+      "name.placeholder": "Vormi pealkiri",
+      "description": "Kirjeldus"
     },
     "buttons": {
-      "addPage": "Add page",
-      "moveDown": "Move down",
-      "moveUp": "Move up",
-      "removePage": "Remove page",
-      "remove": "Remove",
-      "addElement": "Add element",
-      "questionReady": "Ready",
-      "next": "Next",
-      "back": "Back",
-      "submit": "Submit",
-      "begin": "Begin",
-      "fold": "Fold",
-      "unfold": "Unfold",
-      "edit": "Edit",
-      "clone": "Clone",
-      "view": "View"
+      "addPage": "Lisa lehekülg",
+      "moveDown": "Liigu alla",
+      "moveUp": "Liigu üles",
+      "removePage": "Eemalda lehekülg",
+      "remove": "Eemalda",
+      "addElement": "Lisa element",
+      "questionReady": "Valmis",
+      "next": "Järgmine",
+      "back": "Tagasi",
+      "submit": "Esita",
+      "begin": "Alusta",
+      "fold": "Voldi",
+      "unfold": "Voldi lahti",
+      "edit": "Redigeeri",
+      "clone": "Klooni",
+      "view": "Vaata"
     },
     "page": {
       "tab": {
-        "heading": "Page {{page}} of {{allPages}}"
+        "heading": "Lehekülg {{lehekülg}} {{kõikidest Lehekülgedest}}"
       },
       "elements": {
-        "empty": "Empty page"
+        "empty": "Tühi lehekülg"
       },
-      "pageWithNameCheckbox": "named",
-      "name": "Page name"
+      "pageWithNameCheckbox": "nimetatud",
+      "name": "Lehekülje nimi"
     },
     "pageFlow": {
-      "afterPage": "After page {{page}}:",
-      "afterQuestionAnswer": "Go to page based on answer",
-      "goToPage": "Go to page {{page.number}}",
-      "goToNextPage": "Continue to next page",
-      "submitForm": "Submit form"
+      "afterPage": "Pärast lehekülge {{lehekülg}}:",
+      "afterQuestionAnswer": "Mine vastusel põhinevale leheküljele",
+      "goToPage": "Mine leheküljele {{lehekülje number}}",
+      "goToNextPage": "Jätke järgmisel leheküljel",
+      "submitForm": "Esita vorm"
     },
     "elements": {
-      "question": "Question",
-      "image": "Image",
-      "paragraph": "Paragraph"
+      "question": "Küsimus",
+      "image": "Pilt",
+      "paragraph": "Lõik"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Short text"
+          "name": "Lühike tekst"
         },
         "textarea": {
-          "name": "Long text"
+          "name": "Pikk tekst"
         },
         "radio": {
-          "name": "Radio"
+          "name": "Raadio"
         },
         "select": {
-          "name": "Select"
+          "name": "Vali"
         },
         "checkbox": {
-          "name": "Checkboxes"
+          "name": "Märkeruudud"
         },
         "grid": {
-          "name": "Grid"
+          "name": "Ruudustik"
         },
         "priority": {
-          "name": "Priority"
+          "name": "Prioriteet"
         },
         "division": {
-          "name": "Division"
+          "name": "Jaotus"
         },
         "number": {
           "name": "Number"
         },
         "date": {
-          "name": "Date"
+          "name": "Kuupäev"
         },
         "datetime": {
-          "name": "Datetime"
+          "name": "Kuupäev ja kellaaeg"
         },
         "time": {
-          "name": "Time"
+          "name": "Kellaaeg"
         },
         "email": {
-          "name": "Email"
+          "name": "E-post"
         },
         "range": {
-          "name": "Range"
+          "name": "Vahemik"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Question text",
-      "type": "Question type",
-      "required": "Required",
+      "text": "Küsimuse tekst",
+      "type": "Küsimuse tüüp",
+      "required": "Nõutud",
       "preview": {
-        "text": "Short answer text",
-        "textarea": "Long answer text",
-        "otherAnswer": "Other"
+        "text": "Lühivastuse tekst",
+        "textarea": "Pika vastuse tekst",
+        "otherAnswer": "Muu"
       },
       "division": {
-        "quantity": "Quantity",
-        "unit": "Unit label",
-        "assignedSumLabel": "Assigned",
-        "fromRequiredLabel": "from required"
+        "quantity": "Kogus",
+        "unit": "Ühiku sedel",
+        "assignedSumLabel": "Määratud",
+        "fromRequiredLabel": "alates nõutavast"
       },
       "priority": {
-        "sorted": "Sorted",
-        "available": "Available",
-        "clickToAddItem": "Click to add item"
+        "sorted": "Sorditud",
+        "available": "Saadaval",
+        "clickToAddItem": "Kliki üksuse lisamiseks"
       },
       "grid": {
-        "cellInputType": "Cell input type",
+        "cellInputType": "Lahtri sisendi tüüp",
         "cellInputTypes": {
-          "radio": "Radio",
-          "checkbox": "Checkbox",
-          "text": "Text",
+          "radio": "Raadio",
+          "checkbox": "Märkeruut",
+          "text": "Tekst",
           "number": "Number",
-          "date": "Date",
-          "time": "Time"
+          "date": "Kuupäev",
+          "time": "Kellaaeg"
         },
-        "rowLabel": "Row {{row}}",
-        "clickToAddRow": "Click to add row",
-        "columnLabel": "Column {{col}}",
-        "clickToAddColumn": "Click to add column"
+        "rowLabel": "Rida {{rida}}",
+        "clickToAddRow": "Kliki rea lisamiseks",
+        "columnLabel": "Veerg {{veerg}}",
+        "clickToAddColumn": "Kliki veeru lisamiseks"
       },
       "range": {
-        "from": "Range from",
-        "to": "to"
+        "from": "Vahemik alates",
+        "to": "kuni"
       },
       "number": {
         "min": "Min",
-        "max": "Max"
+        "max": "Maks"
       },
-      "orLabel": "or ",
-      "otherLabel": "Other: ",
-      "userAnswer": "User answer",
+      "orLabel": "või ",
+      "otherLabel": "Muu: ",
+      "userAnswer": "Kasutaja vastus",
       "buttons": {
-        "addOption": "Click to add option",
-        "addOther": "Add 'Other'"
+        "addOption": "Kliki valiku lisamiseks",
+        "addOther": "Lisa 'Muu'"
       }
     },
     "image": {
-      "selectImageButton": "Select image",
-      "caption": "Image caption"
+      "selectImageButton": "Vali pilt",
+      "caption": "Pildi pealdis"
     },
     "paragraph": {
-      "placeholder": "Enter paragraph text"
+      "placeholder": "Sisesta lõigu tekst"
     },
     "confirmationPage": {
-      "title": "Confirmation page",
-      "customMessage": "Custom confirmation message",
-      "defaultMessage": "Your response has been saved",
-      "errorMessage": "Error! Your response has not been saved",
-      "pendingMessage": "Your response is being saved"
+      "title": "Kinnituse lehekülg",
+      "customMessage": "Kohandatud kinnitussõnum",
+      "defaultMessage": "Sinu vastus on salvestatud",
+      "errorMessage": "Viga! Sinu vastust ei salvestatud",
+      "pendingMessage": "Sinu vastust salvestatakse"
     }
   }
 }
index 6a860d9..9c16790 100644 (file)
 {
   "MAIL": {
-    "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-    "DOWNLOAD": "Download",
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "SEND_AS": "Send as",
-    "NEW_MAILSUBSTATUS": "New Sub Status",
-    "ADD_MAILSUBSTATUS": "Add Sub Status",
-    "MAILSUBSTATUSES": "Email Sub Statuses",
-    "EDIT_MAILSUBSTATUS": "Edit",
-    "DELETE_MAILSUBSTATUS": "Delete",
-    "FONT_FAMILY": "Font Family",
-    "FONT_SIZE": "Font Size",
-    "MARK_AS_UNREAD": "Mark as unread",
-    "ACCEPTED": "Accepted",
-    "CANNEDANSWERS": "Canned Answers",
-    "MAILCANNEDANSWERS": "Canned Answers",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_MAILCANNEDANSWER": "New Canned Answer",
-    "ADD_MAILCANNEDANSWER": "Add Canned Answer",
-    "EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-    "DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-    "SHOW_ORIGINAL_MESSAGE": "Show original message",
-    "PENDING": "Pending",
-    "SEND_AS_PENDING": "Send as Pending",
-    "SEND_AND_CLOSE": "Send and Close",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SPYINTERACTION": "Spy",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Email queue",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "REALTIME": "Realtime",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "ACCOUNTS": "Accounts",
-    "FULLNAME": "Full Name",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGGED_IN": "Logged In",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "TOTAL": "Total",
-    "IN": "In",
-    "OUT": "Out",
-    "IMAP_STATUS": "IMAP Status",
-    "SMTP_STATUS": "SMTP Status",
-    "DISABLED": "Disabled",
-    "CONNECTED": "Connected",
-    "NEVER_VERIFIED": "Never Verified",
-    "ERROR": "Error",
-    "EDIT_ACCOUNT": "Edit Account",
-    "VERIFY_SMTP": "Verify SMTP",
-    "VERIFIED": "Verified",
-    "VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-    "GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-    "GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "SHOW_AUTOREPLY": "Show Auto Reply",
-    "SHOW_DETAILS": "Show details",
-    "HIDE_DETAILS": "Hide details",
-    "TO": "To",
-    "FROM": "From",
-    "DATE": "Date",
-    "CC": "Cc",
-    "REPLY": "Reply",
-    "REPLY_ALL": "Reply All",
-    "FORWARD": "Forward",
-    "SUBJECT": "Subject",
-    "BCC": "Bcc",
-    "SEND": "Send",
-    "ATTACHMENT": "Attachment",
-    "ATTACHMENTS": "Attachments",
-    "NAME": "Name",
-    "MAILQUEUES": "Email Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi aklla manusteta",
+    "DOWNLOAD": "Laadi alla",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "YOU_ARE_REGISTERED_AS_A": "Oled registreeritud kui",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Hääl",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "SEND_AS": "Saada kui",
+    "NEW_MAILSUBSTATUS": "Uus Alamolek",
+    "ADD_MAILSUBSTATUS": "Lisa Alamolek",
+    "MAILSUBSTATUSES": "E-posti Alamolekud",
+    "EDIT_MAILSUBSTATUS": "Redigeeri",
+    "DELETE_MAILSUBSTATUS": "Kustuta",
+    "FONT_FAMILY": "Fondipere",
+    "FONT_SIZE": "Fondi Suurus",
+    "MARK_AS_UNREAD": "Märgi kui lugemata",
+    "ACCEPTED": "Aktsepteeritud",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "MAILCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Salvestatud Vastused pole saadaval",
+    "NEW_MAILCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_MAILCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_MAILCANNEDANSWER": "Redigeeri Salvestatud Vastust",
+    "DELETE_MAILCANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "SHOW_ORIGINAL_MESSAGE": "Kuva originaalsõnum",
+    "PENDING": "Ootel",
+    "SEND_AS_PENDING": "Saada Ootel olekus",
+    "SEND_AND_CLOSE": "Saada ja Sule",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst Salvestatud Vastuse otsimiseks",
+    "SPYINTERACTION": "Spioon",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole võrgus",
+    "GOTOREALTIME_MAILQUEUE": "Mine Reaalaja Meili Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent E-maili järjekorda",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "SMS": "Sõnum",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "REALTIME": "Reaalaeg",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "ACCOUNTS": "Kontod",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGGED_IN": "Sisse Logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "TOTAL": "Kokku",
+    "IN": "Sees",
+    "OUT": "Väljas",
+    "IMAP_STATUS": "IMAP Staatus",
+    "SMTP_STATUS": "SMTP Staatus",
+    "DISABLED": "Mitteaktiivne",
+    "CONNECTED": "Ühendatud",
+    "NEVER_VERIFIED": "Pole kunagi Kinnitatud",
+    "ERROR": "Viga",
+    "EDIT_ACCOUNT": "Redigeeri Kontot",
+    "VERIFY_SMTP": "Kinnita SMTP",
+    "VERIFIED": "Kinnitatud",
+    "VERIFYSMTP_MAILACCOUNT": "Kinnita SMTP",
+    "GOTOREALTIME_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "GOTO_MAILACCOUNT": "Mine Reaalaja E-maili Kontole",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "AUTOREPLY": "Automaatvastus",
+    "SHOW_AUTOREPLY": "Kuva Automaatvastus",
+    "SHOW_DETAILS": "Kuva üksikasjad",
+    "HIDE_DETAILS": "Varja üksikasjad",
+    "TO": "Kellele",
+    "FROM": "Kellelt",
+    "DATE": "Kuupäev",
+    "CC": "Koopia",
+    "REPLY": "Vasta",
+    "REPLY_ALL": "Vasta Kõigile",
+    "FORWARD": "Saada edasi",
+    "SUBJECT": "Teema",
+    "BCC": "Salakoopia",
+    "SEND": "Saada",
+    "ATTACHMENT": "Manus",
+    "ATTACHMENTS": "Manused",
+    "NAME": "Nimi",
+    "MAILQUEUES": "E-maili Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_REQUIRED": "Mandatory Field",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-      "EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-      "HOST_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PORT_REQUIRED": "Mandatory Field",
-      "CONNTIMEOUT_REQUIRED": "Mandatory Field",
-      "AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "SERVICE_REQUIRED": "Mandatory Field",
-      "IMAP_HOST_REQUIRED": "Mandatory Field",
-      "IMAP_PORT_REQUIRED": "Mandatory Field",
-      "SMTP_HOST_REQUIRED": "Mandatory Field",
-      "SMTP_PORT_REQUIRED": "Mandatory Field",
-      "CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_REQUIRED": "Kohustuslik Väli",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_REQUIRED": "Kohustuslik Väli",
+      "EMAIL_ADDRESS_MUST_VALID": "Vale formaat",
+      "HOST_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PORT_REQUIRED": "Kohustuslik Väli",
+      "CONNTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AUTHTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "SERVICE_REQUIRED": "Kohustuslik Väli",
+      "IMAP_HOST_REQUIRED": "Kohustuslik Väli",
+      "IMAP_PORT_REQUIRED": "Kohustuslik Väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik Väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik Väli",
+      "CONFIRM_NOT_MATCH": "Sisestatud parool ei ühti",
+      "KEY_MAX_LENGTH": "Võtme maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "REPLY_TYPE_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_MAILQUEUE": "Add Email Queue",
-    "EDIT_MAILQUEUE": "Edit Email Queue",
-    "DELETE_MAILQUEUE": "Delete Email Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "SAVE": "Save",
-    "MAILACCOUNTS": "Email Accounts",
-    "EMAIL_ADDRESS": "Email Address",
-    "ADD_MAILACCOUNT": "Add Email Account",
-    "EDIT_MAILACCOUNT": "Edit Email Account",
-    "DELETE_MAILACCOUNT": "Delete Email Accounts",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "OTHERS": "Others",
-    "LIST": "List",
-    "TEMPLATE": "Template",
-    "FIDELITY": "Fidelity",
-    "SERVICE": "Service",
-    "CREATED_AT": "Created At",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "WHITELABEL": "White Label",
-    "SIGNATURE": "Signature",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_MAILQUEUE": "Lisa E-maili Järjekord",
+    "EDIT_MAILQUEUE": "Redigeeri E-maili Järjekorda",
+    "DELETE_MAILQUEUE": "Kustuta E-maili Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "SAVE": "Salvesta",
+    "MAILACCOUNTS": "E-maili Kontod",
+    "EMAIL_ADDRESS": "E-maili Aadress",
+    "ADD_MAILACCOUNT": "Lisa E-maili Konto",
+    "EDIT_MAILACCOUNT": "Redigeeri E-maili Konto",
+    "DELETE_MAILACCOUNT": "Kustuta E-maili Kontod",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaak",
+    "ACTIONS": "Tegevused",
+    "OTHERS": "Teised",
+    "LIST": "Loend",
+    "TEMPLATE": "Mall",
+    "FIDELITY": "Kvaliteet",
+    "SERVICE": "Teenus",
+    "CREATED_AT": "Loomisaeg",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetud",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "WHITELABEL": "Valge Sedel",
+    "SIGNATURE": "Allkiri",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Username",
+    "USERNAME": "Kasutajanimi",
     "PORT": "Port",
-    "MAILBOX": "Mailbox",
-    "FILTER": "Filter",
-    "CONNTIMEOUT": "Connection Timeout [sec]",
-    "AUTHTIMEOUT": "Authentication Timeout [sec]",
-    "DELETE": "Delete Email From Server",
+    "MAILBOX": "Postkast",
+    "FILTER": "Filtreerimine",
+    "CONNTIMEOUT": "Ühenduse Aegumine [sec]",
+    "AUTHTIMEOUT": "Autentimise Aegumine [sec]",
+    "DELETE": "Kustuta E-mail Serverist",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Polling",
+    "POLLING": "Küsitlemine",
     "SMTP": "SMTP",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "MAIL": "Email",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "PASSWORD": "Password",
-    "NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-    "ADD_MAILDISPOSITION": "Add Email Disposition",
-    "NEW_MAILDISPOSITION": "New Email Disposition",
-    "EDIT_MAILDISPOSITION": "Edit Email Disposition",
-    "DELETE_MAILDISPOSITION": "Delete Email Disposition",
-    "MAILDISPOSITIONS": "Email Dispositions",
-    "NEW_MAILQUEUE": "New Email Queue",
-    "NEW_MAILACCOUNT": "New Email Account",
-    "NO_AVAILABLE_INFO": "No availables info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "BACK": "Tagasi",
+    "MAIL": "E-mail",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "PASSWORD": "Parool",
+    "NO_MAILDISPOSITION_AVAILABLE": "E-maili Kasutusi pole saadaval",
+    "ADD_MAILDISPOSITION": "Lisa E-maili Kasutus",
+    "NEW_MAILDISPOSITION": "Uus E-maili Kasutus",
+    "EDIT_MAILDISPOSITION": "Redigeeri E-maili Kasutust",
+    "DELETE_MAILDISPOSITION": "Kustuta E-maili Kasutus",
+    "MAILDISPOSITIONS": "E-maili Kasutused",
+    "NEW_MAILQUEUE": "Uus E-maili Järjekord",
+    "NEW_MAILACCOUNT": "Uus E-maili Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "HELP": {
-      "FONT_FAMILY": "Default Font Family",
-      "FONT_SIZE": "Default Font Size",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "USERNAME": "Username used for authentication",
-      "PASSWORD": "Password used for authentication",
-      "SECURE": "If true, the connection will use TLS when connecting to server",
-      "MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+      "FONT_FAMILY": "Vaikimisi Fondipere",
+      "FONT_SIZE": "Vaikimisi Fondi Suurus",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "USERNAME": "Kasutajanimi autentimise jaoks",
+      "PASSWORD": "Parool autentimise jaoks",
+      "SECURE": "Kui tõene, kasutab ühendus TLSi serveriga ühendamisel",
+      "MARK_AS_UNREAD": "Luba/Keela agendil märkida suhtluse viimane lause kui lugemata",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
       "CLOUD_PROVIDER": "Autentimiseks kasutatakse pilvepakkujat"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-    "AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
+    "TEAMADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "AGENTADD_MAILQUEUE": "Lisa Tiim E-maili Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_CLOSE": "Edit Close",
-    "DISPOSITION": "Disposition",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "DISPOSITION": "Kasutamine",
     "GOTOIF": "GotoIf",
-    "EDIT_GOTOIF": "Edit GotoIf",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
+    "EDIT_GOTOIF": "Redigeeri GotoIf",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Tõene Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
     "GOTOP": "GotoP",
-    "EDIT_GOTOP": "Edit GotoP",
-    "PRIORITY": "Priority",
+    "EDIT_GOTOP": "Redigeeri GotoP",
+    "PRIORITY": "Prioriteet",
     "NOOP": "Noop",
-    "EDIT_NOOP": "Edit Noop",
-    "VALUE": "Value",
-    "QUEUE": "Queue",
-    "EDIT_QUEUE": "Edit Queue",
-    "INTERACTIONS": "Interactions",
-    "STARTEDAT": "Started At",
-    "CONTACT": "Contact",
-    "CLOSEDAT": "Closed At",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "ACTIVE": "Active",
-    "SECURE": "Secure",
-    "AUTHENTICATION": "Authentication",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "VALUE": "Väärtus",
+    "QUEUE": "Järjekord",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "INTERACTIONS": "Suhtlused",
+    "STARTEDAT": "Algusaeg",
+    "CONTACT": "Kontakt",
+    "CLOSEDAT": "Sulgemisaeg",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "ACTIVE": "Aktiivne",
+    "SECURE": "Turvaline",
+    "AUTHENTICATION": "Autentimine",
     "SMTP_HOST": "SMTP Host",
     "SMTP_PORT": "SMTP Port",
     "IMAP_HOST": "IMAP Host",
     "IMAP_PORT": "IMAP Port",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SELECT_STATUS": "Select Status",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select Account",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "KEY": "Key",
-    "SMTPSERVICE": "SMTP Service",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTSADD_QUEUE": "Add agents to Email Queue",
-    "INFO": "Info",
-    "INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
-    "ADVANCED": "Täpsemad",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SELECT_STATUS": "Vali Staatus",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "KEY": "Võti",
+    "SMTPSERVICE": "SMTP Teenus",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Pole saadaval",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTSADD_QUEUE": "Lisa agendid E-maili Järjekorda",
+    "INFO": "Teave",
+    "INTERACTIONS_MAILACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_MAILACCOUNT": "Lisa Agent E-maili Järjekorda",
+    "ADVANCED": "Täpsem",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "LASTMESSAGE": "Viimane teade",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "REPLY_TYPE": "Vasta tüüp",
+    "REPLY_TYPE": "Vastamise tüüp",
     "CLOUD_PROVIDER": "Pilvepakkuja",
     "CREDENTIALS": "Mandaat",
-    "CUSTOM": "Kohandatud",
-    "MODERN_AUTHENTICATION": "Kaasaegne autentimine"
+    "CUSTOM": "Kohandatud"
   }
 }
index e80fbe2..779913f 100644 (file)
@@ -1,51 +1,51 @@
 {
   "MARKETPLACE": {
-    "MARKETPLACE": "App Zone",
-    "PLUGINS": "Plugins",
-    "BACK": "Back",
-    "SEARCH_FOR_ANYONE": "Search",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select none",
-    "NAME": "Name",
-    "DESCRIPTION": "Description",
-    "ACTIVE": "Active",
-    "TYPE": "Type",
-    "ICON": "Icon",
-    "ADMINURL": "Admin url",
-    "AGENTURL": "Agent url",
-    "SCRIPTNAME": "Script name",
-    "SCRIPTPATH": "Script path",
-    "SIDEBAR": "Sidebar",
-    "VERSION": "Version",
-    "NO_AVAILABLE_INFO": "No available info",
-    "MORE": "More",
-    "INSTALL_PLUGIN": "Install plugin",
-    "EDIT_PLUGIN": "Edit plugin",
-    "STOP_PLUGIN": "Stop plugin",
-    "RESTART_PLUGIN": "Restart plugin",
-    "DOWNLOAD_PLUGIN": "Download plugin",
-    "UNINSTALL_PLUGIN": "Uninstall plugin",
-    "DELETE_PLUGIN": "Remove plugin",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DELETE": "Delete",
-    "SAVE": "Save",
-    "INSTALLING": "Installing",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop your file here to upload. Only ZIP - Max. 2MB",
-    "UPLOAD_PLUGIN": "Upload plugin",
-    "UPLOADING": "Uploading",
-    "CREATED_AT": "Created at",
-    "GENERAL": "General",
-    "SETTINGS": "Settings",
-    "EDITOR": "Editor",
+    "MARKETPLACE": "Rakenduse Tsoon",
+    "PLUGINS": "Lisandmoodulid",
+    "BACK": "Tagasi",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali kõik",
+    "SELECT_NONE": "Ära vali midagi",
+    "NAME": "Nimi",
+    "DESCRIPTION": "Kirjeldus",
+    "ACTIVE": "Aktiivne",
+    "TYPE": "Tüüp",
+    "ICON": "Ikoon",
+    "ADMINURL": "Admini url",
+    "AGENTURL": "Agendi url",
+    "SCRIPTNAME": "Skripti nimi",
+    "SCRIPTPATH": "Skripti tee",
+    "SIDEBAR": "Küljeriba",
+    "VERSION": "Versioon",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "MORE": "Rohkem",
+    "INSTALL_PLUGIN": "Installi lisandmoodul",
+    "EDIT_PLUGIN": "Redigeeri lisandmoodulit",
+    "STOP_PLUGIN": "Peata lisandmoodul",
+    "RESTART_PLUGIN": "Taaskäivita lisandmoodul",
+    "DOWNLOAD_PLUGIN": "Laadi alla lisandmoodul",
+    "UNINSTALL_PLUGIN": "Desinstalli lisandmoodul",
+    "DELETE_PLUGIN": "Eemalda lisandmoodul",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DELETE": "Kustuta",
+    "SAVE": "Salvesta",
+    "INSTALLING": "Installimine",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta oma fail üleslaadimiseks. Ainult ZIP - Maks. 2MB",
+    "UPLOAD_PLUGIN": "Laadi üles lisandmoodul",
+    "UPLOADING": "Üleslaadimine",
+    "CREATED_AT": "Loomisaeg",
+    "GENERAL": "Üldine",
+    "SETTINGS": "Sätted",
+    "EDITOR": "Redaktor",
     "ERRORS": {
-      "URL_REQUIRED": "Mandatory field"
+      "URL_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {},
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of"
   }
 }
index 96861de..db6abd5 100644 (file)
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "CUTDIGIT": "Cut Digits",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-    "CLONE_IVRCAMPAIGN": "Clone Campaign",
-    "CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "HOPPERWIDGET": "Summary",
-    "RESETLIST_IVRCAMPAIGN": "Reset Lists",
-    "RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Lists",
-    "SELECTALL": "Select All",
-    "UNSELECTALL": "Un-Select All",
-    "NO_AVAILABLE_INFO": "No available info",
-    "TIMEOUT": "Timeout",
-    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-    "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-    "CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Parital Pause",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "TIMER": "Timer",
-    "MOVE_HOPPERFINAL": "Restore contact",
-    "RESTORECONTACTS": "Restore Contacts",
-    "NO_SUCH_NUMBER": "No Such Number",
-    "DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "CUTDIGIT": "Lõika Numbrid",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Juhuslik Väljuva Helistaja ID Number",
+    "CLONE_IVRCAMPAIGN": "Klooni Kampaaniat",
+    "CLONE_QUEUECAMPAIGN": "Klooni Järjekorra Kampaaniat",
+    "ABANDONEDCALLS": "Tagasi lükatud Järjekorra Kõned",
+    "HOPPERWIDGET": "Kokkuvõte",
+    "RESETLIST_IVRCAMPAIGN": "Lähtesta Loendid",
+    "RESETLIST_QUEUECAMPAIGN": "Lähtesta Loendid",
+    "RESET": "Lähtesta",
+    "RESETLIST": "Lähtesta Loendid",
+    "SELECTALL": "Vali Kõik",
+    "UNSELECTALL": "Ära Vali Kõiki",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "TIMEOUT": "Aegumine",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projekti Eelvaade",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt Pärast Eelvaadet",
+    "RUNIFHANGUPAGENT": "Käivita Square Projekt Pärast, isegi kui agent katkestab kõne",
+    "CALLYSQUAREPROJECT2": "Cally Square Projekt Pärast Järjekorda",
+    "NO_AGENT_ONLINE": "Ühtegi Agenti pole Võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "TIMER": "Taimer",
+    "MOVE_HOPPERFINAL": "Taasta kontakt",
+    "RESTORECONTACTS": "Taasta Kontaktid",
+    "NO_SUCH_NUMBER": "Sellist numbrit pole olemas",
+    "DIALORDERBYSCHEDULEDAT": "Telli Planeeritud aja alusel",
     "ASC": "ASC",
     "DESC": "DESC",
-    "RECALLAGENT": "Recall Agent",
-    "DIALRECALLINQUEUE": "Recall In Queue",
-    "DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-    "RECALLME": "Recall Me",
-    "RECALLFAILEDTIMEOUT": "Recall Failed",
-    "PREVIEW_CAMPAIGN": "Preview Campaigns",
-    "PREVIEW_CAMPAIGNS": "Preview Campaigns",
-    "AMD": "Asterisk Answering Machine Detection (AMD)",
-    "AMDTOTALANALYSISTIME": "Total Analysis Time",
+    "RECALLAGENT": "Kutsu tagasi Agent",
+    "DIALRECALLINQUEUE": "Kutsu tagasi Järjekorda",
+    "DIALRECALLMETIMEOUT": "Kutsu tagasi Minu Aegumine [min]",
+    "RECALLME": "Kutsu tagasi Mind",
+    "RECALLFAILEDTIMEOUT": "Tagasikutsumine Nurjus",
+    "PREVIEW_CAMPAIGN": "Kuva Kampaania Eelvaade",
+    "PREVIEW_CAMPAIGNS": "Kuva Kampaaniate Eelvaade",
+    "AMD": "Asterisk Automaatvastaja Tuvastamine (AMD)",
+    "AMDTOTALANALYSISTIME": "Analüüsi Aeg Kokku",
     "AMDACTIVE": "AMD",
-    "AMDINITIALSILENCE": "Initial Silence",
-    "AMDGREETING": "Greeting",
-    "AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-    "AMDSILENCETHRESHOLD": "Silence Threshold",
-    "AMDMINWORDLENGTH": "Min Word Length",
-    "AMDBETWEENWORDSSILENCE": "Silence Between Words",
-    "AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-    "GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-    "GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-    "LOGOUT": "Logout",
-    "EDIT_CAMPAIGN": "Edit Campaign",
-    "LIMITED": "Limited",
-    "IVR_CAMPAIGNS": "IVR Campaigns",
+    "AMDINITIALSILENCE": "Esialgne Vaikus",
+    "AMDGREETING": "Tervitus",
+    "AMDAFTERGREETINGSILENCE": "Vaikus pärast Tervitust",
+    "AMDSILENCETHRESHOLD": "Vaikuse Lävi",
+    "AMDMINWORDLENGTH": "Min Sõna Pikkus",
+    "AMDBETWEENWORDSSILENCE": "Vaikus Sõnade Vahel",
+    "AMDMAXIMUMWORDLENGTH": "Maksimaalne Sõna Pikkus",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne Sõnade Arv",
+    "GOTO_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTOREALTIME_QUEUECAMPAIGN": "Mine Reaalaja Järjekorra Kampaaniatesse",
+    "GOTO_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "GOTOREALTIME_IVRCAMPAIGN": "Mine Reaalaja IVR Kampaaniatesse",
+    "LOGOUT": "Logi välja",
+    "EDIT_CAMPAIGN": "Redigeeri Kampaaniat",
+    "LIMITED": "Piiratud",
+    "IVR_CAMPAIGNS": "IVR Kampaaniad",
     "MOTIONDIALER": "Motion Bull",
-    "QUEUECAMPAIGNS": "Queue Campaigns",
-    "IVRCAMPAIGNS": "IVR Campaigns",
-    "MANAGED": "Managed",
-    "AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-    "HISTORY": "History",
-    "SCHEDULEDAT": "Scheduled At",
-    "HOPPERBLACKS": "Hopper Blacklist",
-    "NO_HOPPERBLACK_AVAILABLE": "No items available",
-    "HOPPERFINALS": "Hopper Final",
-    "NO_HOPPERFINAL_AVAILABLE": "No items available",
-    "HOPPERHISTORIES": "Call history",
-    "NO_HOPPERHISTORY_AVAILABLE": "No items available",
-    "DELETE_HOPPERHISTORY": "Delete",
-    "DELETE_HOPPERFINAL": "Delete",
-    "CONTACTID": "Contact ID",
-    "STARTTIME": "Start Time",
-    "RESPONSETIME": "Response Time",
-    "ENDTIME": "End Time",
-    "STATUS": "Status",
+    "QUEUECAMPAIGNS": "Järjekorra Kampaaniad",
+    "IVRCAMPAIGNS": "IVR Kampaaniad",
+    "MANAGED": "Hallatud",
+    "AVAILABLE_CONTACTS_FINISHED": "Vabad kontaktid lõpetatud",
+    "HISTORY": "Ajalugu",
+    "SCHEDULEDAT": "Planeeritud ajaks",
+    "HOPPERBLACKS": "Hopperi Must nimekiri",
+    "NO_HOPPERBLACK_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERFINALS": "Hopperi Finaal",
+    "NO_HOPPERFINAL_AVAILABLE": "Üksused pole saadaval",
+    "HOPPERHISTORIES": "Kõneajalugu",
+    "NO_HOPPERHISTORY_AVAILABLE": "Üksused pole saadaval",
+    "DELETE_HOPPERHISTORY": "Kustuta",
+    "DELETE_HOPPERFINAL": "Kustuta",
+    "CONTACTID": "Kontakti ID",
+    "STARTTIME": "Algusaeg",
+    "RESPONSETIME": "Vastamise Aeg",
+    "ENDTIME": "Lõpetamise Aeg",
+    "STATUS": "Staatus",
     "HOPPERS": "Hopper",
-    "NO_HOPPER_AVAILABLE": "No items available",
-    "EDIT_HOPPER": "Edit Hopper",
-    "DELETE_HOPPER": "Delete Hopper",
-    "FINAL": "Final",
-    "BLACKLIST": "Blacklist",
-    "NAME": "Name",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
+    "NO_HOPPER_AVAILABLE": "Üksused pole saadaval",
+    "EDIT_HOPPER": "Redigeeri Hopper",
+    "DELETE_HOPPER": "Kustuta Hopper",
+    "FINAL": "Finaal",
+    "BLACKLIST": "Must nimekiri",
+    "NAME": "Nimi",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
     "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "INTERVAL": "Time Interval",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "NEW_QUEUECAMPAIGN": "New Queue Campaign",
-    "ACTIVE": "Active",
-    "METHOD": "Method",
-    "POWERLEVEL": "Power Level",
-    "DROPRATE": "Drop Rate",
-    "AGENTBUSYFACTOR": "Agent Busy Factor",
-    "PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-    "PREDICTIVEINTERVAL": "Predictive Interval",
-    "ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-    "CAMPAIGN": "Campaign",
-    "MAXCONCURRENTCALLS": "Max Concurrent Calls",
-    "CONCURRENTCALLS": "Max Concurrent Calls",
-    "ORIGINATE": "Originate",
-    "ORIGINATECALLERIDNAME": "Caller ID Name",
-    "ORIGINATECALLERIDNUMBER": "Caller ID Number",
-    "ORIGINATETIMEOUT": "Originate Timeout",
-    "QUEUEOPTIONS": "Queue Options",
-    "QUEUETIMEOUT": "Queue Timeout",
-    "CALLYSQUAREPROJECT": "Cally Square Project",
-    "RETRYANDFREQUENCY": "Retry Settings",
-    "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max Retries",
-    "CONGESTION": "Congestion",
-    "CONGESTIONMAXRETRY": "Max Retries",
-    "CONGESTIONRETRYTIME": "Retry Time [min]",
-    "BUSYMAXRETRY": "Max Retries",
-    "BUSYRETRYTIME": "Retry Time [min]",
-    "NOANSWER": "No Answer",
-    "NOANSWERMAXRETRY": "Max Retries",
-    "NOANSWERRETRYTIME": "Retry Time [min]",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "ORIGINATED": "Originated",
-    "MESSAGE": "Message",
-    "DROPPED": "Dropped",
-    "CREATED_AT": "Created At",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "INTERVAL": "Aja Intervall",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "NEW_QUEUECAMPAIGN": "UUs Järjekorra Kampaania",
+    "ACTIVE": "Aktiivne",
+    "METHOD": "Meetod",
+    "POWERLEVEL": "Võimsuse Tase",
+    "DROPRATE": "Kukuta Määr",
+    "AGENTBUSYFACTOR": "Agendi Hõivatuse Faktor",
+    "PREDICTIVEOPTIMIZATION": "Ennustatav Optimeerimine",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Ennustatava Optimeerimise Protsent",
+    "PREDICTIVEINTERVAL": "Ennustatav Intervall",
+    "ADD_QUEUECAMPAIGN": "Lisa Järjekorra Kampaania",
+    "CAMPAIGN": "Kampaania",
+    "MAXCONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "CONCURRENTCALLS": "Maks Samaaegsed Kõned",
+    "ORIGINATE": "Päritolu",
+    "ORIGINATECALLERIDNAME": "Helistaja ID Number",
+    "ORIGINATECALLERIDNUMBER": "Helistaja ID Number",
+    "ORIGINATETIMEOUT": "Päritolu Aegumine",
+    "QUEUEOPTIONS": "Järjekorra Valikud",
+    "QUEUETIMEOUT": "Järjekorra Aegumine",
+    "CALLYSQUAREPROJECT": "Cally Square Projekt",
+    "RETRYANDFREQUENCY": "Katseta uuesti Sätteid",
+    "GLOBAL": "Üldine",
+    "GLOBALMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTION": "Ummik",
+    "CONGESTIONMAXRETRY": "Maks Uusi Katseid",
+    "CONGESTIONRETRYTIME": "Uue Katse Aeg [min]",
+    "BUSYMAXRETRY": "Maks Uusi Katseid",
+    "BUSYRETRYTIME": "Uue Katse Aeg [min]",
+    "NOANSWER": "Vastus puudub",
+    "NOANSWERMAXRETRY": "Maks Uusi Katseid",
+    "NOANSWERRETRYTIME": "Uue Katse Aeg [min]",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "ORIGINATED": "Päritolu",
+    "MESSAGE": "Sõnum",
+    "DROPPED": "Kukutatud",
+    "CREATED_AT": "Loomisaeg",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application."
+      "CUSTOM_APPLICATION": "(*) - Kohandatud Avaldus."
     },
     "ERRORS": {
-      "CUTDIGIT_REQUIRED": "Mandatory field",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_REQUIRED": "Mandatory field",
-      "INTERVAL_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "PREFIX_MUST_VALID_PATTERN": "Wrong format",
-      "NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-      "CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-      "BUSYMAXRETRY_REQUIRED": "Mandatory field",
-      "BUSYRETRYTIME_REQUIRED": "Mandatory field",
-      "NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-      "NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-      "QUEUETIMEOUT_REQUIRED": "Mandatory field",
-      "ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-      "GLOBALINTERVAL_REQUIRED": "Mandatory field",
-      "MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "CONCURRENTCALLS_REQUIRED": "Mandatory field",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+      "CUTDIGIT_REQUIRED": "Kohustuslik väli",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Kohustuslik väli",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "INTERVAL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "PREFIX_MUST_VALID_PATTERN": "Vale formaat",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Parool ei ühti",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "GLOBALMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "CONGESTIONRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "BUSYMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "BUSYRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "NOANSWERMAXRETRY_REQUIRED": "Kohustuslik väli",
+      "NOANSWERRETRYTIME_REQUIRED": "Kohustuslik väli",
+      "QUEUETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "ORIGINATETIMEOUT_REQUIRED": "Kohustuslik väli",
+      "GLOBALINTERVAL_REQUIRED": "Kohustuslik väli",
+      "MAXCONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "CONCURRENTCALLS_REQUIRED": "Kohustuslik väli",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
       "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli",
-      "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Helista lisa.telefon pärast min. peaks olema suurem või võrdne",
-      "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Kohustuslik väli"
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
     },
-    "GENERAL": "General",
-    "AGENTTIMEOUT": "Agent Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "AGENTTIMEOUT": "Agendi Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Uus Katse",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "HELP": {
-      "RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-      "TIMEOUT": "Number of seconds to ring agent in queue",
-      "CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-      "RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-      "CALLYSQUAREPROJECT2": "Selecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-      "DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-      "DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-      "DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-      "PRIORITY": "Priority in the list",
-      "AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-      "AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-      "AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-      "AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-      "AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-      "AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-      "AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-      "AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-      "CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-      "PREFIX": "Telephone prefix",
-      "ACTIVE": "Active",
-      "AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-      "MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-      "RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-      "WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-      "WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-      "JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-      "LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "METHOD": "Outbound dialer method",
-      "POWERLEVEL": "Number of contacts to call for any available agent",
-      "PREDICTIVEOPTIMIZATION": "A factor to optimize in the predictive algorithm",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Percentage based on the selected predictive optimization factor",
-      "PREDICTIVEINTERVAL": "Time interval (in minutes) considered by the predictive algorithm to calculate the amount of calls to generate to optimize the result",
-      "MAXCONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign (0=unlimited)",
-      "CONCURRENTCALLS": "Maximum number of concurrent calls that will be originated by the outbound dialer for this campaign",
-      "ORIGINATECALLERIDNAME": "Outgoing Caller Id Name",
-      "ORIGINATECALLERIDNUMBER": "Outgoing Caller Id Number",
-      "ORIGINATETIMEOUT": "Time (in seconds) for the outbound call to establish a connection, otherwise the status is set to No Answer ",
-      "QUEUETIMEOUT": "Time (in seconds) a call will wait in the queue before it is dropped (Min 1 and Max 999)",
-      "GLOBALMAXRETRY": "Maximum number of times a contact is called before considering it closed",
-      "CONGESTIONMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for congestion",
-      "CONGESTIONRETRYTIME": "Time in minutes before trying to call again a failed contact due to congestion",
-      "BUSYMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for busy",
-      "BUSYRETRYTIME": "Time in minutes before trying to call again a failed contact due to busy",
-      "NOANSWERMAXRETRY": "Maximum number of times a contact is called before considering it closed, when the call failed for no answer",
-      "NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
-      "GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Kui on suurem kui 0, genereerib see juhuslikult Väljuva Helistaja ID numbri vastavad viimased numbrimärgid",
+      "TIMEOUT": "Sekundite arv agendile järjekorras helistamiseks",
+      "CALLYSQUAREPROJECTPREVIEW": "Valides IVR projekti suunab helistaja kõne IVRi, kui agent vastab (IVR suunatakse agendile)",
+      "CALLYSQUAREPROJECTPREVIEW2": "Valides IVR projekti suunab helistaja kõne IVRi, kui klient katkestab kõne või pole kättesaadav (IVR suunatakse agendile)",
+      "RUNIFHANGUPAGENT": "Käivita Cally Square Projekt Pärast, isegi kui Agent katkestab kõne",
+      "CALLYSQUAREPROJECT2": "Valides IVR projekti suunab helistaja kõne IVRi pärast Järjekorda (kui Järjekord lõppeb aegumisega)",
+      "DIALORDERBYSCHEDULEDAT": "Hangi kontaktid hopperist (kasvav või kahanev).",
+      "DIALRECALLINQUEUE": "Ajasta kõne uuesti agentide jaoks Järjekorras",
+      "DIALRECALLMETIMEOUT": "Ajaintervall (minutites) Minu kehtivuse perioodi Tagasi kutsumiseks",
+      "PRIORITY": "Prioriteet loendis",
+      "AMDMAXIMUMWORDLENGTH": "Ühe häälütluse maksimaalne lubatud kestus",
+      "AMDMINWORDLENGTH": "Minimaalne Hääle kestus, mida arvestatakse sõnana",
+      "AMDSILENCETHRESHOLD": "Kui keskmine müratase näidises ei saavuta seda väärtust, skaalal 0 kuni 32767, siis loeme seda vaikuseks",
+      "AMDTOTALANALYSISTIME": "Maksimaalne algoritmile lubatud aeg otsustamaks, kas heli kuulub INIMESELE või MASINALE",
+      "AMDAFTERGREETINGSILENCE": "Vaikus pärast tervituse tuvastamist. Kui on ületatud, siis tulemuseks on INIMESE tuvastamine",
+      "AMDGREETING": "Maksimaalne tervituse pikkus.  Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDINITIALSILENCE": "Makimaalne vaikuse kestus enne tervitust. Kui on ületatud, siis tulemuseks on MASINA tuvastamine",
+      "AMDACTIVE": "Aktiveeri või desaktiveeri automaatvastaja tuvastuskatsed",
+      "AMDBETWEENWORDSSILENCE": "Minimaalne vaikuse kestus  pärast sõna, et hinnata heli, mis järgneb uue sõnana",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maksimaalne sõnade arv tervituses. Kui on SAAVUTATUD, siis tuvastatakse kui MASIN",
+      "CALLYSQUAREPROJECT": "Valides IVR projekti suunab helistaja kõne IVRi enne Järjekorda",
+      "PREFIX": "Telefoni eesliide",
+      "ACTIVE": "Aktiivne",
+      "AGENTTIMEOUT": "Kui kaua (sekundites), et helistada agendi seadmele",
+      "MAXLENGTH": "Maksimaalne helistajate arv, kes on Järjekorras ootele lubatud(0=piiramatu)",
+      "RETRY": "Kui kaua (sekundites) oodata enne helistamist järgmisele agendile Järjekorras, kui agendi ajalõpp on läbi saanud",
+      "WRAPUPTIME": "Kui kaua (sekundites) hoida agenti hõivatuna Järjekorras pärast kõne lõpetamist",
+      "WEIGHT": "Kasutatakse prioriteedi määramiseks, kui agent on seotud enam kui ühe järjekorraga",
+      "JOINWHENEMPTY": "Kui helistaja lisatakse järjekorda, kui ühtegi agenti pole saadaval",
+      "LEAVEWHENEMPTY": "Kui helistaja eemaldatakse järjekorrast, kui ühtegi agenti pole saadaval",
+      "ANNOUNCEFREQUENCY": "Kui sageli teatada helistaja positsiooni ja/või ooteaega järjekorras (0=keela)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituse sagedus (sobib, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Perioodiliste helistajale edastatavate teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui oled määranud teavituspositsiooniks 'limiit' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mille käivitab Pärast Kõnet Töö Suvand ",
+      "MEMBERDELAY": "Sisestab viivituse enne helistaja ja agendi ühendamist Järjekorras",
+      "MUSICONHOLD": "Määrab muusika klassi konkreetses järjekorras kasutamiseks",
+      "ANNOUNCETOAGENT": "Mängib ette teatise kõnele vastavale agendile (näiteks, et teda teavitada, millisest Järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis mängib ette perioodilised teatised juhuslikus järjekorras",
+      "ANNOUNCEHOLDTIME": "Mängib ette hinnangulise ooteaja koos perioodiliste teatistega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse määramaks, kas tuleb teatada helistaja Järjekorra positsioonist: Ei=mitte kungi; Jah=alati; Piirang=ainult siis, kui see jääb teate-positsiooni-piirangu poolt määratud piirangu raamesse",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teatamist agendile Järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Ette mängitavate perioodiliste teavituste komplekt (järjestatud)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi ooteaeg. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=\9cOlete nüüd järjekorras esimene. Määramata=teavitust pole",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=are”. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=kõnede ootamine. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Jooksev hinnanguline ooteaeg on. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=minutit. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=sekundit. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratletud Heli. Vaikimisi=Täname Teid kannatlikkuse eest. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, pannakse agent pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kellel ei õnnestu kõnele vastata. Kui lubatud, põhjustab agendi pausile panemist kõikides järjekordades, kuhu ta kuulub",
+      "RINGINUSE": "Kasutusel staatusega liikmetele kõnede saatmise vältimiseks/lubamiseks",
+      "TIMEOUTRESTART": "Kui jah, lähtestab see agendi jaoks vastamise lõpuaja, kui HÕIVATUD või UMMIKUS staatus saadakse kanalist",
+      "MONITORFORMAT": "Täpsustab faili formaadi salvestamisel kasutamiseks. Kui monitori formaat pole aktiivne, kõnesid ei salvestata",
+      "CONTEXT": "Lubab helistajal järjekorrast lahkuda vajutades üks kord DTMF numbrumärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püüab see numbrimärk sobituda täpsustatud konteksti, ja valimisplaani täitmine jätkub seal",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga ja järjekorrast lahkumist  (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah peale, seadistatakse mõned muutujad just enne helistaja ühendamist Järjekorra agendiga (täpsema info saamiseks vaata wiki docs:<a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">click here</a>)",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Suhtelise laienduse kontekst",
+      "METHOD": "Väljuva valija meetod",
+      "POWERLEVEL": "Kontaktide arv helistamiseks mistahes vaba agendi jaoks",
+      "PREDICTIVEOPTIMIZATION": "Tegur optimeerimiseks ennustavas algoritmis",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Protsendimäär, mis põhineb valitud ennustaval optimeerimise teguril",
+      "PREDICTIVEINTERVAL": "Aja intervall (minutites), mida ennustav algoritm kasutab arvutamakkõnede kogust tulemuse genereerimiseks ja optimeerimiseks",
+      "MAXCONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks (0=piiramatu)",
+      "CONCURRENTCALLS": "Maksimaalne samaaegsete kõnede arv, mis lähtuvad väljuvalt valijalt selle Kampaania jaoks ",
+      "ORIGINATECALLERIDNAME": "Väljuva Helistaja ID Nimi",
+      "ORIGINATECALLERIDNUMBER": "Väljuva Helistaja ID Nimi",
+      "ORIGINATETIMEOUT": "Aeg (sekundites) väljuva kõne jaoks ühenduse saamiseks, vastasel juhul määratakse staatuseks Vastamata",
+      "QUEUETIMEOUT": "Aeg (sekundites), mille jooksul kõne ootab järjekorras enne katkestamist (Min 1 and Maks 999)",
+      "GLOBALMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks",
+      "CONGESTIONMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus ummiku tõttu",
+      "CONGESTIONRETRYTIME": "Aeg minutites enne katset helistada uuesti ummiku tõttu nurjunud kontaktile",
+      "BUSYMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus hõivatuse tõttu",
+      "BUSYRETRYTIME": "Aeg minutites enne katset helistada uuesti hõivatuse tõttu nurjunud kontaktile",
+      "NOANSWERMAXRETRY": "Maksimaalne kontaktile helistamise kordade arv enne kui see loetakse suletuks, kui kõne nurjus vastamata kõne tõttu",
+      "NOANSWERRETRYTIME": "Aeg minutites enne katset helistada uuesti vastamata kõne tõttu nurjunud kontaktile",
+      "GLOBALINTERVAL": "Üldine aja intervall, mille jooksul on valijal lubatud kontaktidele helistada. Me keeldume vastutusest: ole selle faili muutmisel tähelepanelik, kuna võid sattuda vastuollu automaatvalijaga seotud valdkonna riiklike seaduste ja määrustega",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
       "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
       "PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
       "PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
-      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
-      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
+      "ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kƵne ei Ćµnnestunud loobuda",
+      "ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaƵnnestunud kontaktile loobumise tõttu",
       "AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
       "AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
       "DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
-      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
+      "DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõµnnestunud kontaktile",
       "MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
       "MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
       "NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
       "PREVIEW_RECALL_ME_REMINDER": "Kui see on lubatud, saadab süsteem agentile n minutit teatise (vastavalt üldseadetes määratud ajaintervallile) enne minu tagasikutsumise loomist",
       "TIMEZONE": "Määrake ajavöönd"
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCEDPREVIEW": "Advanced",
-    "ADVANCED": "Advanced",
-    "ADVANCE": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Muusika Ootel",
+    "ANNOUNCETOAGENT": "Teavitus Agendile",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCEDPREVIEW": "Täpsem",
+    "ADVANCED": "Täpsem",
+    "ADVANCE": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavituse Sadegdus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavituse Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavituse Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Limiit",
+    "REPORTHOLDTIMEAGENT": "Teata Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Oled järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'There are' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise Ooteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minutite Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Kõnejärgne Töö",
+    "AFTERCALLWORKDURATION": "Kõnejärgse Töö Kestus",
+    "RINGINUSE": "Kasutusel Helin",
+    "MEMBERDELAY": "Liikme Viivitus",
+    "TIMEOUTRESTART": "Lõpuaja Lähtestamine",
+    "MONITORFORMAT": "Salvestuse Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujaid",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sisenevad Protsessid",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sisenev Protsess",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sisenevat Protsessi",
+    "DELETE_INBOUNDROUTE": "Kustuta Sisenev Protsess",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljuvad Protsessid",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljuv Protsess",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljuvat Protsessi",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljuv Protsess",
+    "CUTDIGITS": "Lõika Numbrimärke",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Protsessid",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Protsess",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemist Protsessi",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Protsess",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepost",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-post",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Manusta",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-kirja Sisu",
+    "EMAILSUBJECT": "E-kirja Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kaust",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Suvandid",
     "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "ADD_CHANSPY": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonis",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "AGI",
-    "DIAL": "Dial",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "DIAL": "Valimine",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Väline Valimine",
+    "RINGGROUP": "Helista Grupile",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Kõnepost",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Lõpeta kõne",
+    "CUSTOM": "Kohandatus",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Resurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavita Tühistustest",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast@Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljuv Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ootemuusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not in use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sisenev Protsess",
+    "NEW_OUTBOUNDROUTE": "Uus Väljuv Protsess",
+    "NEW_INTERNALROUTE": "Uus Sisenev Protsess",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Häälestamist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Hangup",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise Aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühenduses)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muutunud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht vale",
+    "HANGUPCAUSE_38": "38 = Võrk vale",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendused pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Kättesaamatu",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Kättesaamatu",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Heliseb",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No registry",
-    "LOGGED_IN": "Logged in (SIP connected)",
-    "PAUSED": "Paused",
-    "DISPOSITION": "Disposition",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP ühendusega)",
+    "PAUSED": "Pausil",
+    "DISPOSITION": "Kasutamine",
+    "WAITING": "Ootamine",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "REDIRECT_TO_NUMBER": "Redirect to a number",
-    "REDIRECT_TO_AGENT": "Redirect to an agent",
-    "CLOSING": "Closing",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Avg Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "EDIT_QUEUECAMPAIGN": "Edit Campaign",
-    "LISTADD_QUEUECAMPAIGN": "Add List",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Add Blacklist",
-    "TEAMADD_QUEUECAMPAIGN": "Add Team",
-    "AGENTADD_QUEUECAMPAIGN": "Add Agent",
-    "DELETE_QUEUECAMPAIGN": "Delete Campaign",
-    "DELETE_IVRCAMPAIGN": "Delete Campaign",
-    "EDIT_IVRCAMPAIGN": "Edit Campaign",
-    "NEW_IVRCAMPAIGN": "New IVR Campaign",
-    "ADD_IVRCAMPAIGN": "Add IVR Campaign",
-    "LISTADD_IVRCAMPAIGN": "Add List",
-    "BLACKLISTADD_IVRCAMPAIGN": "Add Blacklist",
-    "ENABLED": "Enabled",
-    "READY": "Ready",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default Pause",
-    "AGENTADD_QUEUE": "Add Agent to queue campaign",
-    "AGENTSADD_QUEUE": "Add Agents to queue campaign",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_LISTS": "All Lists",
-    "SELECTED_LISTS": "Selected Lists",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "WAITING_FOR_AGENT": "Waiting for Agent",
-    "TOTAL_OFFERED": "Total Offered",
-    "RUNNING": "Running",
-    "TRUNK_IS_NOT_REACHABLE": "Trunk is Not Reachable",
-    "AGENTS_NOT_LOGGED": "Agent not logged",
-    "NOT_ACTIVE": "Not Active",
-    "IS_DISACTIVED": "Deactivated",
-    "BACKUPTRUNK": "Backup Trunk",
-    "GLOBALINTERVAL": "Global Interval",
-    "RESCHEDULED_CONTACTS": "Rescheduled contacts",
-    "INTERVAL_IS_OVERTIME": "Out of Interval",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Out of Interval (Global)",
-    "INTERVAL_IS_NULL": "Interval is Null",
-    "TIMEZONE_UNKNOW": "Timezone Unknow",
-    "INTERVAL_IS_EMPTY": "Interval is Empty",
-    "TOTAL_MANAGED": "Total Managed",
-    "OPEN": "Open",
-    "FRESH": "Fresh",
-    "CLOSED": "Closed",
-    "ALWAYS": "Always",
-    "NEVER": "Never",
-    "ONLY_IF_OPEN": "Only If Open",
-    "CHECKDUPLICATE": "Check Duplicate",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Katkestatud",
+    "UNMANAGED": "Haldamata",
+    "REDIRECT_TO_NUMBER": "Suuna numbrile",
+    "REDIRECT_TO_AGENT": "Suuna agendile",
+    "CLOSING": "Sulgemine",
+    "AVG_HOLD_TIME": "Avg Ooteage",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Tagasi lükatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse Nimi",
+    "ARGUMENTS": "Argumendid",
+    "EDIT_QUEUECAMPAIGN": "Redigeeri Kampaaniat",
+    "LISTADD_QUEUECAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Lisa Must nimekiri",
+    "TEAMADD_QUEUECAMPAIGN": "Lisa Tiim",
+    "AGENTADD_QUEUECAMPAIGN": "Lisa Agent",
+    "DELETE_QUEUECAMPAIGN": "Kustuta Kampaania",
+    "DELETE_IVRCAMPAIGN": "Kustuta Kampaania",
+    "EDIT_IVRCAMPAIGN": "Redigeeri Kampaaniat",
+    "NEW_IVRCAMPAIGN": "Uus IVR Kampaania",
+    "ADD_IVRCAMPAIGN": "Lisa IVR Kampaania",
+    "LISTADD_IVRCAMPAIGN": "Lisa Loend",
+    "BLACKLISTADD_IVRCAMPAIGN": "Lisa Must nimekiri",
+    "ENABLED": "Lubatud",
+    "READY": "Valmis",
+    "PAUSE": "Paus",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi Paus",
+    "AGENTADD_QUEUE": "Lisa Agent Järjekorra Kampaaniasse",
+    "AGENTSADD_QUEUE": "Lisa Agendid Järjekorra Kampaaniasse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_LISTS": "Kõik Nimekirjad",
+    "SELECTED_LISTS": "Valitud Nimekirjad",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "WAITING_FOR_AGENT": "Agendi Ootamine",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "RUNNING": "Jookseb",
+    "TRUNK_IS_NOT_REACHABLE": "Magistraal pole Kättesaadav",
+    "AGENTS_NOT_LOGGED": "Agent pole logitud",
+    "NOT_ACTIVE": "Pole Aktiivne",
+    "IS_DISACTIVED": "Deaktiveeritud",
+    "BACKUPTRUNK": "Varumagistraal",
+    "GLOBALINTERVAL": "Üldine Intervall",
+    "RESCHEDULED_CONTACTS": "Uuesti ajastatud kontaktid",
+    "INTERVAL_IS_OVERTIME": "Intervallist väljas",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Intervallist väljas (Üldine)",
+    "INTERVAL_IS_NULL": "Intervall on Null",
+    "TIMEZONE_UNKNOW": "Ajavöönd Teadmata",
+    "INTERVAL_IS_EMPTY": "Intervall on Tühi",
+    "TOTAL_MANAGED": "Kokku Hallatud",
+    "OPEN": "Avatud",
+    "FRESH": "Värske",
+    "CLOSED": "Suletud",
+    "ALWAYS": "Alati",
+    "NEVER": "Mitte kunagi",
+    "ONLY_IF_OPEN": "Ainult kui Avatud",
+    "CHECKDUPLICATE": "Kontrolli Duplikaati",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "SÕnum",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
     "ANSWERED_CALLS": "Vastatud kõnedele",
     "ANSWERING_MACHINE": "Automaatvastaja",
     "AVG_TALK_TIME": "Keskmine kõneaeg",
     "CURRENT_INTERVAL": "Praegune intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Andmete kogumine progressiivne",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
     "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
     "ONE_CALL_EVERY": "Üks kõne iga kord",
     "PREDICTIVEMAXTHRESHOLD": "Prognoositav maksimaalne lävi [%]",
     "PREDICTIVE_IS_RUNNING": "Ennustaja töötab",
     "PREVIOUS_INTERVAL": "Eelmine intervall",
     "RECALLINQUEUE": "Tagasikutsumine järjekorras",
-    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõnede värskendamine",
+    "REFRESH_SCHEDULED_CALLS": "Ajastatud kõµnede värskendamine",
     "SCHEDULED_CALLS": "Ajastatud kõned",
-    "SELECT_CAMPAIGN": "Valige kampaania",
-    "SELECT_DATE": "Valige kuupäev",
-    "SELECT_TYPE": "Valige Tüüp",
+    "SELECT_CAMPAIGN": "Vali kampaania",
+    "SELECT_DATE": "Vali kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
     "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Kuva ennustavat teavet",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "THRESHOLDS": "Künnised",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TOTAL_CALLS": "Kõnesid kokku",
-    "ABANDONEDMAXRETRY": "Max proovib uuesti",
+    "ABANDONEDMAXRETRY": "Maks uued katsed",
     "ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
-    "AGENTREJECT": "Agent Keeldu",
-    "AGENTREJECTMAXRETRY": "Max proovib uuesti",
+    "AGENTREJECT": "Agendi Keeldumine",
+    "AGENTREJECTMAXRETRY": "Maks uued katsed",
     "AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
-    "DROP": "Tilk",
-    "DROPMAXRETRY": "Max proovib uuesti",
+    "DROP": "Katkestamine",
+    "DROPMAXRETRY": "Maks uued katsed",
     "DROPRETRYTIME": "Uuesti proovimise aeg [min]",
-    "MACHINE": "Masin",
-    "MACHINEMAXRETRY": "Max proovib uuesti",
+    "MACHINE": "Seade",
+    "MACHINEMAXRETRY": "Maks uued katsed",
     "MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
     "NOSUCHNUMBER": "Sellist numbrit pole",
-    "NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
+    "NOSUCHNUMBERMAXRETRY": "Maks uued katsed",
     "NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]",
-    "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
-    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
-    "ADDITIONALPHONES": "Täiendavad telefonid",
-    "CALLADDITIONALPHONEAFTERMIN": "Helistage täiendavale telefonile pärast [min]",
+    "SECOND_LEVEL_DISPOSITION": "Teise taseme kasutamine",
+    "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme kasutamine",
     "PREVIEW_AUTO_RECALL_ME": "Automatiseerige Call Me kõned",
     "PREVIEW_RECALL_ME_REMINDER": "Tuleta mulle meelde"
   }
index 6f70beb..ee8630a 100644 (file)
@@ -1,21 +1,21 @@
 {
   "MOTIONDIALER": {
-    "LOGIN_TIME": "Tempo de login",
-    "PAUSE_TIME": "Tempo de pausa",
-    "CUTDIGIT": "Cut Digits",
+    "LOGIN_TIME": "Tempo de Login",
+    "PAUSE_TIME": "Tempo de Pausa",
+    "CUTDIGIT": "Cortar Dígitos",
     "RANDOMLASTDIGITCALLERIDNUMBER": "Número de Chamada de Saída Aleatória",
     "CLONE_IVRCAMPAIGN": "Clonar Campanha",
     "CLONE_QUEUECAMPAIGN": "Clonar Fila de Campanha",
     "ABANDONEDCALLS": "Chamadas Abandonadas em Filas",
-    "HOPPERWIDGET": "Resumo",
-    "RESETLIST_IVRCAMPAIGN": "Redefinir listas",
-    "RESETLIST_QUEUECAMPAIGN": "Redefinir listas",
-    "RESET": "Reset",
-    "RESETLIST": "Reset Listas",
-    "SELECTALL": "Selecionar tudo",
-    "UNSELECTALL": "Desmarque todos",
-    "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "TIMEOUT": "Tempo esgotado",
+    "HOPPERWIDGET": "Sumário",
+    "RESETLIST_IVRCAMPAIGN": "Redefinir Listas",
+    "RESETLIST_QUEUECAMPAIGN": "Redefinir Listas",
+    "RESET": "Redefinir",
+    "RESETLIST": "Redefinir Listas",
+    "SELECTALL": "Selecionar Tudo",
+    "UNSELECTALL": "Desmarcar Todos",
+    "NO_AVAILABLE_INFO": "Nenhuma Informação Disponível",
+    "TIMEOUT": "Tempo Esgotado",
     "CALLYSQUAREPROJECTPREVIEW": "Visualização do Projeto Cally Square",
     "CALLYSQUAREPROJECTPREVIEW2": "Pós Visualização do Projeto Cally Square",
     "RUNIFHANGUPAGENT": "Executar o Projeto Cally Square Depois mesmo que o agente desligue a chamada",
index 23ab65b..c07979f 100644 (file)
@@ -1,97 +1,97 @@
 {
   "OPENCHANNEL": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "ADVANCED": "Advanced",
-    "PROXY": "Proxy",
-    "TOKEN": "Token",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "DELETE": "Delete",
-    "CANNEDANSWERS": "Canned Answers",
-    "OPENCHANNELCANNEDANSWERS": "Canned Answers",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_OPENCHANNELCANNEDANSWER": "New Canned Answer",
-    "ADD_OPENCHANNELCANNEDANSWER": "Add Canned Answer",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Edit",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "TAGS": "Tags",
-    "SPYINTERACTION": "Spy",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Go To Realtime Open Channel Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "REALTIME": "Realtime",
-    "TEXT": "Text",
-    "TIMES": "Number of times per interaction",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "AUTOREPLY": "Auto Reply",
-    "NAME": "Name",
-    "OPENCHANNELQUEUES": "Open Channel Queues",
-    "SEARCH_FOR_ANYONE": "Search",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "ADVANCED": "Täpsem",
+    "PROXY": "Puhver",
+    "TOKEN": "Luba",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "DELETE": "Kustuta",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "OPENCHANNELCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_OPENCHANNELCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_OPENCHANNELCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Redigeeri",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raport URL",
+    "TAGS": "Sildid",
+    "SPYINTERACTION": "Spioon",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "Mine Reaalaja Avatud Kanali Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "REALTIME": "Reaalaeg",
+    "TEXT": "Tekst",
+    "TIMES": "Kordade arv suhtluse kohta",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastust",
+    "AUTOREPLY": "Automaatvastus",
+    "NAME": "Nimi",
+    "OPENCHANNELQUEUES": "Avatud Kanali Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsing",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "KEY_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "TEXT_REQUIRED": "The field text is required",
-      "NAME_REQUIRED": "Mandatory field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "REPLYURI_REQUIRED": "Mandatory field",
-      "REPLYURI_MUST_VALID_URL": "Wrong format",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "CONDITION_REQUIRED": "Mandatory field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory field",
-      "AGENT_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "DISPOSITION_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtus peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "TEXT_REQUIRED": "Välja tekst on kohustuslik",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "REPLYURI_REQUIRED": "Kohustuslik Väli",
+      "REPLYURI_MUST_VALID_URL": "Vale formaat",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "KEY_MAX_LENGTH": "Võti peab olema maksimaalse pikkusega, mis võrdub {{maks}}",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "BOTNAME_REQUIRED": "Boti nimi on kohustuslik",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
       "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
-    "STRATEGY": "Strategy",
+    "STRATEGY": "Strateegia",
     "AGENT": "Agent",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "VALUE": "Value",
-    "PRIORITY": "Priority",
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_OPENCHANNELQUEUE": "Add Open Channel Queue",
-    "EDIT_OPENCHANNELQUEUE": "Edit Open Channel Queue",
-    "DELETE_OPENCHANNELQUEUE": "Delete Open Channel Queue",
-    "PENALTY": "Penalty",
-    "TEAMADD_OPENCHANNELQUEUE": "Add Team To Open Channel Queue",
-    "AGENTADD_OPENCHANNELQUEUE": "Add Agent To Open Channel Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "OPENCHANNELACCOUNTS": "Open Channel Accounts",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_OPENCHANNELACCOUNT": "Add Open Channel Account",
-    "EDIT_OPENCHANNELACCOUNT": "Edit Open Channel Account",
-    "DELETE_OPENCHANNELACCOUNT": "Delete Open Channel Account",
+    "QUEUE": "Järjekord",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "VALUE": "Väärtus",
+    "PRIORITY": "Prioriteet",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_OPENCHANNELQUEUE": "Lisa Avatud Kanali Järjekord",
+    "EDIT_OPENCHANNELQUEUE": "Redigeeri Avatud Kanali Järjekorda",
+    "DELETE_OPENCHANNELQUEUE": "Kustuta Avatud Kanali Järjekord",
+    "PENALTY": "Trahv",
+    "TEAMADD_OPENCHANNELQUEUE": "Lisa Tiim Avatud Kanali Järjekorrale",
+    "AGENTADD_OPENCHANNELQUEUE": "Lisa Agent Avatud Kanali Järjekorrale",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "lvesta",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "OPENCHANNELACCOUNTS": "Avatud Kanali Kontod",
+    "MOTIONADDRESS": "Liikuv Aadress",
+    "ADD_OPENCHANNELACCOUNT": "Lisa Avatud Kanali Konto",
+    "EDIT_OPENCHANNELACCOUNT": "Redigeeri Avatud Kanali Kontot",
+    "DELETE_OPENCHANNELACCOUNT": "Kustuta Avatud Kanali Konto",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
-    "OPENCHANNEL": "Open Channel",
-    "ID": "Id",
-    "TIMEOUT": "Timeout",
-    "OPENCHANNELDISPOSITIONS": "Open Channel Dispositions",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "No Open Channel Dispositions available",
-    "NEW_OPENCHANNELDISPOSITION": "New Open Channel Disposition",
-    "ADD_OPENCHANNELDISPOSITION": "Add Open Channel Disposition",
-    "EDIT_OPENCHANNELDISPOSITION": "Edit Open Channel Disposition",
-    "DELETE_OPENCHANNELDISPOSITION": "Delete Open Channel Disposition",
-    "NEW_OPENCHANNELQUEUE": "New Open channel Queue",
-    "NEW_OPENCHANNELACCOUNT": "New Open channel Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "REPLYURI": "Reply URL",
-    "RECEIVEURI": "Receive URL",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "Veebihaagid",
+    "ACTIONS": "Tegevused",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Lükka tagasi",
+    "REJECTMETHOD": "Lükka tagasi Meetod",
+    "REJECTURL": "Lükka tagasi URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Meetod",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Midagi",
+    "BACK": "Tagasi",
+    "OPENCHANNEL": "Ava Kanal",
+    "ID": "ID",
+    "TIMEOUT": "Aegumine",
+    "OPENCHANNELDISPOSITIONS": "Avatud Kanali Kasutused",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Avatud Kanali Kasutused pole saadaval",
+    "NEW_OPENCHANNELDISPOSITION": "Uus Avatud Kanali Kasutus",
+    "ADD_OPENCHANNELDISPOSITION": "Lisa Avatud Kanali Kasutus",
+    "EDIT_OPENCHANNELDISPOSITION": "Redigeeri Avatud Kanali Kasutust",
+    "DELETE_OPENCHANNELDISPOSITION": "Kustuta Avatud Kanali Kasutus",
+    "NEW_OPENCHANNELQUEUE": "Uus Avatud Kanali Järjekord",
+    "NEW_OPENCHANNELACCOUNT": "Uus Avatud Kanali Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "REPLYURI": "Vastuse URL",
+    "RECEIVEURI": "Vastuvõtu URL",
     "HELP": {
-      "TOKEN": "Add this property as query string in your Web Service URL. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "RECEIVEURI": "Auto-generated API string to be used in order to receive messages inside your open channel from the external application (using POST method). Click the clipboard button to copy it ",
-      "REPLYURI": "The URL the open channel will call when sending or replying to a message. For more details see the doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager List used to associate contacts",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele."
+      "TOKEN": "Lisa see atribuut päringustringina oma Veebiteenuse URLi. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "RECEIVEURI": "Automaatselt genereeritud API string, mida kasutatakse sõnumite saamiseks Teie avatud kanalis välise rakenduse poolt (kasutades POST meetodit). Kliki Click the lõikelaua nuppu selle kopeerimiseks ",
+      "REPLYURI": "URL, kuhu avatud kanal helistab sõnumit saates või vastates sellele. Täpsemalt vaata doc <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">here</a>",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri Loend, mida kasutatakse kontaktide seostamiseks",
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele."
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
-    "STATUS": "Status",
-    "CLOSED": "Closed",
-    "OPENED": "Open",
-    "OPEN": "Open",
-    "ACCOUNT": "Account",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "ALL": "All",
-    "SELECT_STATUS": "Select a status",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
+    "STATUS": "Staatus",
+    "CLOSED": "Suletud",
+    "OPENED": "Avatud",
+    "OPEN": "Ava",
+    "ACCOUNT": "Konto",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "ALL": "Kõik",
+    "SELECT_STATUS": "Vali staatus",
     "FILTER": "Filter",
-    "FILTERS": "Filters",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "SELECT_ACCOUNT": "Select an account",
+    "FILTERS": "Filtrid",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "SELECT_ACCOUNT": "Vali konto",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sule",
     "INFO": "Info",
-    "KEY": "Key",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to Open Channel queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "SMS": "SMS",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to Open Channel queue",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_OPENCHANNELACCOUNT": "Add Agent to Openchannel Account",
-    "CANNED_ANSWER_SEARCH": "Enter a text to seach a Canned Answer",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answer were found",
-    "SEND": "Send",
-    "TO": "To",
-    "MAPKEY": "Map Key",
+    "KEY": "Võti",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agendid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Pausile",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent Avatud Kanali järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "SMS": "Sõnum",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid Avatud Kanali järjekorda",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_OPENCHANNELACCOUNT": "Lisa Agent Avatud Kanali Kontole",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MAPKEY": "Kaardi Võti",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "Dialoogivoog",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri Dialogflow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
index be8be0f..90c89fb 100644 (file)
@@ -1,6 +1,6 @@
 {
   "PLUGINS": {
-    "PLUGINS": "Plugins",
+    "PLUGINS": "Lisandmoodul",
     "ERRORS": {},
     "HELP": {}
   }
index 054b0d7..3fc4dff 100644 (file)
 {
   "SETTINGS": {
-    "MOTIONBARREMEMBERME": "Remember Me",
-    "CHATTIMEOUT": "Chat closing interaction timeout",
-    "VIRTUAL": "Chat",
-    "VOICE": "Voice",
-    "SESSIONS": "Sessions",
-    "ADDONS": "Add-ons",
-    "REPORT": "Report",
-    "SPLIT": "Split report",
-    "SPLITSIZECSV": "Split report size [CSV records]",
-    "SPLITSIZEPDF": "Split report size [PDF records]",
-    "SPLITSIZEXLSX": "Split report size [XLSX records]",
-    "ENABLEEMAILPREVIEW": "Enable Email Preview",
+    "MOTIONBARREMEMBERME": "Pea mind meeles",
+    "CHATTIMEOUT": "Vestluse sulgemine suhtluse aegumine",
+    "VIRTUAL": "Vestlus",
+    "VOICE": "Hääl",
+    "SESSIONS": "Sessioonid",
+    "ADDONS": "Lisandmoodul",
+    "REPORT": "Raport",
+    "SPLIT": "Poolita raportit",
+    "SPLITSIZECSV": "Poolita raporti suurust [CSV kirjed]",
+    "SPLITSIZEPDF": "Poolita raporti suurust [PDF kirjed]",
+    "SPLITSIZEXLSX": "Poolita raporti suurust [XLSX kirjed]",
+    "ENABLEEMAILPREVIEW": "Luba E-maili Eelvaade",
     "JAWS": "Jaws",
-    "MOTIONBAR": "Motionbar",
-    "MOTIONBARAUTOUPDATER": "Auto Updater",
-    "MOTIONBARAUTOUPDATERURL": "Auto Updater URL",
+    "MOTIONBAR": "Liikumisriba",
+    "MOTIONBARAUTOUPDATER": "Automaatne Värskendaja",
+    "MOTIONBARAUTOUPDATERURL": "Automaatse Värskendaja URL",
     "SMTP_SSL": "SMTP SSL",
-    "CALL_RECORDING_ENCRYPTION": "Voice Recording Encryption",
-    "TURNADDR": "TURN Address",
-    "TURN_USERNAME": "TURN Username",
-    "TURN_PASSWORD": "TURN Password",
+    "CALL_RECORDING_ENCRYPTION": "Häälsalvestuse Krüptimine",
+    "TURNADDR": "TURN Aadress",
+    "TURN_USERNAME": "TURN Kasutajanimi",
+    "TURN_PASSWORD": "TURN Parool",
     "WEBRTC": "WebRTC",
     "CALLYSQUARE": "Cally Square",
-    "ENABLED": "Enabled",
-    "DISABLED": "Disabled",
-    "UNLIMITED_CHANNELS": "Unlimited Channels",
-    "RELOAD": "Reload",
-    "VERIFY": "Verify",
-    "INTERFACE": "Interface",
-    "UPDATING": "Updating",
-    "REMOTE_VERSION": "Remote Version",
-    "NO_NEW_VERSION_AVAILABLE": "No new version available",
-    "TOP_N_PROCESSES": "Top {{value}} processes",
-    "SYSTEM": "System",
-    "FILE_SYSTEM": "File System",
-    "PROCESSES": "Processes",
-    "MOUNT_POINT": "Mount",
+    "ENABLED": "Lubatud",
+    "DISABLED": "Keelatud",
+    "UNLIMITED_CHANNELS": "Piiramatud Kanalid",
+    "RELOAD": "Laadi uuesti",
+    "VERIFY": "Kinnita",
+    "INTERFACE": "Liides",
+    "UPDATING": "Värskendamine",
+    "REMOTE_VERSION": "Kaugversioon",
+    "NO_NEW_VERSION_AVAILABLE": "Uut versiooni pole saadaval",
+    "TOP_N_PROCESSES": "Tipp {{väärtus}} protsess",
+    "SYSTEM": "Süsteem",
+    "FILE_SYSTEM": "Faili Süsteem",
+    "PROCESSES": "Protsess",
+    "MOUNT_POINT": "Ühenda",
     "AVG_LOAD": "AVG Load",
-    "TOTAL": "Total",
-    "USED": "Used",
-    "FREE": "Free",
-    "NAME": "Name",
-    "STATE": "State",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "MESSAGING": "Sms",
-    "FAX": "Fax",
-    "OPENCHANNEL": "Open Channel",
-    "AGENTS": "Agents",
-    "USERS": "Users",
-    "TELEPHONES": "Telephones",
-    "STAFF": "Staff",
-    "CHANNELS": "Channels",
-    "MODULES": "Modules",
-    "CM": "Contacts Manager",
-    "DIALER": "Dialer",
+    "TOTAL": "Totaalne",
+    "USED": "Kasutatud",
+    "FREE": "Vaba",
+    "NAME": "Nimi",
+    "STATE": "Olek",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "MESSAGING": "Sõnum",
+    "FAX": "Faks",
+    "OPENCHANNEL": "Avatud Kanal",
+    "AGENTS": "Agendid",
+    "USERS": "Kasutajad",
+    "TELEPHONES": "Telefonid",
+    "STAFF": "Personal",
+    "CHANNELS": "Kanalis",
+    "MODULES": "Moodulid",
+    "CM": "Kontaktide Haldur",
+    "DIALER": "Valija",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "Customization",
-    "UPDATE": "Update",
-    "OTHERS": "Others",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
+    "CUSTOM": "Kohandamine",
+    "UPDATE": "Värskenda",
+    "OTHERS": "Teised",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
     "SMTP": "SMTP",
-    "NETWORKS": "Networks",
-    "UPDATES": "Updates",
-    "LICENSE": "License",
-    "ID": "Id",
-    "MIN_INTERNAL": "Min Internal",
-    "MIN_MAILBOX": "Min Mailbox",
-    "INSTALLED_AT": "Installed At",
-    "SEARCH_FOR_ANYONE": "Search",
-    "EDIT_GENERAL": "Edit General",
-    "SECURE_PASSWORD": "Secure Password",
+    "NETWORKS": "Võrgud",
+    "UPDATES": "Värskendused",
+    "LICENSE": "Litsents",
+    "ID": "ID",
+    "MIN_INTERNAL": "Minm Sisemine",
+    "MIN_MAILBOX": "Min Postkast",
+    "INSTALLED_AT": "Installimise aeg",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "EDIT_GENERAL": "Redigeeri Üldine",
+    "SECURE_PASSWORD": "Kindlusta Parool",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Default Logo",
-    "DEFAULT_LOGIN_LOGO": "Default Login Logo",
-    "WHITELABEL": "White Label",
-    "DEFAULT_HEADER_WHITELABEL": "Default Header White Label",
-    "HEADER_WHITELABEL": "Header White Label",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMTP_SERVICE": "Service",
+    "DEFAULT_LOGO": "Vaikimisi Logo",
+    "DEFAULT_LOGIN_LOGO": "Vaikimisi Logini Logo",
+    "WHITELABEL": "Valge Sedel",
+    "DEFAULT_HEADER_WHITELABEL": "Vaikimisi Päis Valge Silt",
+    "HEADER_WHITELABEL": "Päis Valge Silt",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMTP_SERVICE": "Teenus",
     "SMTP_HOST": "Host",
-    "SMTP_USERNAME": "Username",
-    "DESCRIPTION": "Description",
-    "SMTP_PASSWORD": "Password",
+    "SMTP_USERNAME": "Kasutajanimi",
+    "DESCRIPTION": "Kirjeldus",
+    "SMTP_PASSWORD": "Parool",
     "SMTP_PORT": "Port",
-    "SMTP_SECURE": "Secure",
-    "TYPE": "Type",
-    "ADDRESS": "Address",
-    "NEW_NETWORK": "New Network",
-    "ADD_NETWORK": "Add Network",
+    "SMTP_SECURE": "Turvaline",
+    "TYPE": "Tüüp",
+    "ADDRESS": "Aadress",
+    "NEW_NETWORK": "Uus Võrk",
+    "ADD_NETWORK": "Lisa Võrk",
     "HELP": {
-      "ADDRESS": "External (public) ip address",
-      "LOCALNETADDRESS": "Local ip address/subnet",
-      "SMTP_SECURE": "If true, the connection to the server will use TLS",
-      "SMTP_USERNAME": "Username used for authentication",
-      "SMTP_PASSWORD": "Password used for authentication",
-      "EMAILADDRESS": "The message origin Email address (from)",
-      "SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-      "MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-      "DEFAULTSCREENRECORDINGPATH": "Sisestage Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
-      "LOGINMAILFREQUENCY": "Ärge unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
+      "ADDRESS": "Väline (avalik) IP-aadress",
+      "LOCALNETADDRESS": "Kohalik IP-aadress/alamvõrk",
+      "SMTP_SECURE": "Kui tõene, siis serveriga ühendus kasutab TLSi",
+      "SMTP_USERNAME": "Autentimiseks kasutatav Kasutajanimi",
+      "SMTP_PASSWORD": "Autentimiseks kasutatav Parool",
+      "EMAILADDRESS": "Sõnumi päritolu E-maili aadress (kellelt)",
+      "SECURITY_SUITE": "Lubab turvalist parooli formaati, kohustuslik parooli uuendamine pärast esimest sisselogimist ja parooli aegumist 90 päeva pärast",
+      "MOTIONBARREMEMBERME": "Luba/Keela Pea Mind Meeles funktsioon Motion Phonebar sees",
+      "DEFAULTSCREENRECORDINGPATH": "Sisesta Agent-arvutis ekraanisalvestusfailide salvestamise tee (jätke videokausta vaikeseade jaoks tühjaks)",
+      "LOGINMAILFREQUENCY": "Ära unustage EMAIL-teenust taaskäivitada iga kord, kui seda parameetrit muudetakse",
       "RTLSUPPORT": "Lubab araabia, pärsia ja heebrea keelte RTL-i toe",
       "PASSWORD": "Parool",
       "USERNAME": "Kasutajanimi",
       "ENFORCE_PASSWORD_HISTORY": "Lubab valideerimise varem kasutatud paroolidega",
       "PASSWORD_HISTORY_LIMIT": "Viimati kontrollimiseks kasutatud unikaalsete paroolide arv",
       "SEARCH_ON_ENTER_KEY": "Alustage otsimist alles pärast seda, kui agent vajutab sisestusklahvi",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas värskendus)",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Ajavahemik sekundites, mille järel interaktsioonid laaditakse uuesti (0 = reaalajas väskendus)",
       "PRIVACY_POLICY": "Tärniga asendatavate märkide arv (*) (0 = kõik märgid)",
       "CLIENT_SECRET": "Pärast konfiguratsiooni salvestamist pole saladus enam nähtav. Hoidke seda ohutult, kui soovite seda mujal kasutada.",
       "LIMIT_TABS": "Avatud on maksimaalne arv võimalikke interaktsioonikaarte",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Ajavahemik minutites, enne kui agendile saadetakse teatis, mis teavitab teda eelvaate tagasikutsumise tegemisest"
     },
     "ERRORS": {
-      "CHATTIMEOUT_REQUIRED": "Mandatory field",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-      "ADDRESS_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_REQUIRED": "Mandatory field",
-      "MIN_MAILBOX_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_REQUIRED": "Mandatory field",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "SMTP_USERNAME_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "SMTP_HOST_REQUIRED": "Mandatory field",
-      "SMTP_PORT_REQUIRED": "Mandatory field",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PAGE_TITLE_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PLAN_REQUIRED": "Mandatory field",
-      "LICENSE_REQUIRED": "Mandatory field",
+      "CHATTIMEOUT_REQUIRED": "Kohustuslik väli",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Vale formaat",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Kohustuslik väli",
+      "ADDRESS_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_REQUIRED": "Kohustuslik väli",
+      "MIN_MAILBOX_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HEADER_WHITELABEL_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_REQUIRED": "Kohustuslik väli",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ADDRESS_MUST_VALID_PATTERN": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "SMTP_USERNAME_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "SMTP_HOST_REQUIRED": "Kohustuslik väli",
+      "SMTP_PORT_REQUIRED": "Kohustuslik väli",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PAGE_TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PLAN_REQUIRED": "Kohustuslik väli",
+      "LICENSE_REQUIRED": "Kohustuslik väli",
       "ACCESSKEY_REQUIRED": "Kohustuslik väli",
       "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "ALLOWEDLOGINATTEMPTS_REQUIRED": "Kohustuslik väli",
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat",
-      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
+      "WRONG_FORMAT": "Vale formaat"
     },
-    "EDIT_NETWORK": "Edit Network",
-    "DELETE_NETWORK": "Delete Network",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "EXPIRATION_DATE": "Expiration Date",
-    "REQUEST_LICENSE": "Request License",
-    "EMAIL": "Email",
-    "SEND": "Send",
-    "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Month to month",
-    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
-    "USEFUL_COMMANDS": "Useful Commands",
-    "COMMAND": "Command",
-    "PM2_LIST": "List all processes",
-    "PM2_START": "Start a process by id or name",
-    "PM2_STOP": "Stop a process by id or name or insert 'all' to stop all the active processes",
-    "PM2_RESTART": "Restart a process by id or name",
-    "PM2_LOGS": "Stream all processes log files, unless a specific process id or name is provided",
-    "PASSWORD": "Password",
-    "NO_AVAILABLE_INFO": "No available info",
-    "STUNADDR": "STUN Address",
+    "EDIT_NETWORK": "Redigeeri Võrku",
+    "DELETE_NETWORK": "Kustuta Võrk",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära vali Ühtegi",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "REQUEST_LICENSE": "Päri Litsentsi",
+    "EMAIL": "E-mail",
+    "SEND": "Saada",
+    "PLAN": "Plaan",
+    "MONTH_TO_MONTH": "Kuust kuusse",
+    "MOTION_PROCESS_MANAGEMENT": "Liikumise Protsessi Haldus",
+    "USEFUL_COMMANDS": "Kasulikud Käsud",
+    "COMMAND": "Käsk",
+    "PM2_LIST": "Loenda kõik protsessid",
+    "PM2_START": "Alusta protsessi ID või nime järgi",
+    "PM2_STOP": "Lõpeta protsess ID või nime järgi või sisesta 'kõik', et peatada kõik aktiivsed protsessid",
+    "PM2_RESTART": "Värskenda protsessi ID või nime järgi",
+    "PM2_LOGS": "Voogesita kõik protsessid logifailid, kui ei ole esitatud kindlat ID-d või nime",
+    "PASSWORD": "Parool",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "STUNADDR": "STUN Aadress",
     "CHANGELOG": "Changelog",
-    "CURRENT_VERSION": "Current version",
-    "CUSTOMIZATIONS": "Customizations",
-    "LOCALNETADDRESS": "Localnet Address",
-    "NEW_VERSION": "New Version",
-    "TRIAL_VERSION": "Trial Version",
-    "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "New Token Detected",
-    "EXPIRATION_GRAY_PERIOD": "Gray Period Expiration",
-    "NEW_TOKEN": "New Token",
-    "PRICES": "Prices",
-    "UPDATE_LICENSE": "Update License",
-    "LOGOLOGIN": "Login Logo",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "GLOBAL": "Global",
-    "SMTP_AUTHENTICATION": "Authentication",
-    "LICENSE_REQUEST_SENT": "Thank you! The Licensing Team will check your account asap in order to approve your request: you will receive an email when the changes become effective. Please refer to license@xcally.com for further informations.",
-    "ACCOUNTNAME": "Account Name",
-    "EMAILADDRESS": "Email Address",
-    "EXPIRATION_REASON_MESSAGE_DISABLED": "Your license has been disabled.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system.",
-    "EXPIRATION_CHANGED_ADVISE": "Contact xCALLY Motion License Team sending both your old and your new uuid.",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email to",
-    "JIRA_ERROR_MESSAGE": "Error during license request. Please contact our license team at license@xcally.com with your request",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CURRENT_VERSION": "Jooksev versioon",
+    "CUSTOMIZATIONS": "Kohandamised",
+    "LOCALNETADDRESS": "Kohaliku võrgu Aadress",
+    "NEW_VERSION": "Uus Versioon",
+    "TRIAL_VERSION": "Prooviversioon",
+    "TOKEN": "Luba",
+    "NEW_TOKEN_DETECTED": "Uus Luba Tuvastatud",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NEW_TOKEN": "Uus Luba",
+    "PRICES": "Hinnad",
+    "UPDATE_LICENSE": "Värskenda Litsentsid",
+    "LOGOLOGIN": "Logini Logo",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "GLOBAL": "Üldine",
+    "SMTP_AUTHENTICATION": "Autentimine",
+    "LICENSE_REQUEST_SENT": "Täname! Litsentsimise Tiim kontrollib Teie kontot asap Teie päringu kinnitamiseks: saate e-kirja, kui muutused jõustuvad. Palun pöörduge edasise info saamiseks aadressile license@xcally.com.",
+    "ACCOUNTNAME": "Konto Nimi",
+    "EMAILADDRESS": "E-posti Aadress",
+    "EXPIRATION_REASON_MESSAGE_DISABLED": "Teie litsents on kehtetu.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Teie Seadme unikaalne ID on uuendatud seoses Teie süsteemi muudatustega.",
+    "EXPIRATION_CHANGED_ADVISE": "Võtke ühendust xCALLY Liikumise Litsentsimise Tiimiga, saates nii Teie vana kui ka uue UUID.",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-kiri kellele",
+    "JIRA_ERROR_MESSAGE": "Viga litsentsi päringu jooksul. Palun võtke oma päringu osas ühendust meie litsentsimise tiimiga aadressil license@xcally.com",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "PAGE_TITLE": "Page Title",
-    "DEFAULT_PAGE_TITLE": "Default Page Title",
-    "PERPETUAL": "Perpetual",
-    "SECURITY_SUITE": "Security Suite",
-    "ANNUALLY": "Annually",
-    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
-    "MESSAGESALIGNMENT": "Messages Alignment",
-    "ENTER_LICENSE": "Enter your license",
-    "UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
+    "PAGE_TITLE": "Lehekülje Pealkiri",
+    "DEFAULT_PAGE_TITLE": "Vaikimisi Lehekülje Pealkiri",
+    "PERPETUAL": "Lõpmatu",
+    "SECURITY_SUITE": "Turvapakett",
+    "ANNUALLY": "Iga-aastaselt",
+    "AGENTOMNIDESKTOPINTERFACE": "Agendi Omni Töölaua Liides",
+    "MESSAGESALIGNMENT": "Sõnumi Joondus",
+    "ENTER_LICENSE": "Sisesta oma litsents",
+    "UPDATE_LICENSE_MANUALLY": "Kas soovid oma litsentsi käsitsi uuendada?",
     "ACCESSKEY": "Juurdepääsukoodi ID",
     "ADD_CLOUDPROVIDER": "Lisada konto",
     "AI": "A.I. Tööriistad",
     "ALLOWEDLOGINATTEMPTS": "Enne kasutaja / esindaja lukustamist lubatakse sisselogimiskatsed",
     "APPZONE": "Rakendustsoon",
     "BLOCKDURATION": "Enne automaatse avamise ootamist on vaja minutit",
-    "BUCKET": "Ämber",
+    "BUCKET": "Salv",
     "DEFAULTSCREENRECORDINGPATH": "Ekraani salvestustee",
     "DEFAULT_FAVICON": "Vaikimisi Favicon",
     "DEFAULT_PREFERRED": "Eelistatud vaikimisi logo",
     "TRANSCRIBEREGION": "Transkribeeritav piirkond",
     "USERNAME": "Kasutajanimi",
     "VIDEO": "Video",
-    "WHATSAPP": "WhatsApp-pistik",
-    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooliajalugu",
-    "PASSWORD_HISTORY_LIMIT": "Parooliajaloo limiit",
-    "SEARCH_ON_ENTER_KEY": "Otsige sisestusklahvi",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse interaktsioonide uuesti laadimise ajalõpp",
-    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti interaktsioonide uuesti laadimise ajalõpp",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali interaktsioonide uuesti laadimise ajalõpp",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-interaktsioonide uuesti laadimise ajalõpp",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori interaktsioonide uuesti laadimise ajalõpp",
+    "WHATSAPP": "WhatsApp ühendus",
+    "ENFORCE_PASSWORD_HISTORY": "Jõusta parooli ajalugu",
+    "PASSWORD_HISTORY_LIMIT": "Parooli ajaloo limiit",
+    "SEARCH_ON_ENTER_KEY": "Otsi sisestusklahvi",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Vestluse suhtluste uuesti laadimise ajalõpp",
+    "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "E-posti suhtluste uuesti laadimise ajalõpp",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Avatud kanali suhtluste uuesti laadimise ajalõpp",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "SMS-suhtluste uuesti laadimise ajalõpp",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connectori suhtluste uuesti laadimise ajalõpp",
     "PRIVACY_POLICY_EMAIL": "E-posti aadresside privaatsuseeskirjad",
     "PRIVACY_POLICY_NAME": "Nimede privaatsuseeskirjad",
     "PRIVACY_POLICY_NUMBER": "Numbrite privaatsuseeskirjad",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne ülekande salvestamine",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Lõpeta häälkõne edastamise salvestamine",
     "AD_SSO_ENABLED": "Active Directory SSO lubatud",
     "APPLICATION_ID": "Rakenduse ID",
     "AUTHENTICATE": "Autentimine",
index 9d0b322..2645fe3 100644 (file)
 {
   "SMS": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "DOWNLOAD_INTERACTION": "Download",
-    "TRANSFER": "Transfer",
-    "QUEUETRANSFER": "Queue Transfer",
-    "QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "TAG": "Tag",
-    "EDIT_TAG": "Edit Tag",
-    "WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-    "NOTIFICATION": "Notification",
-    "NOTIFICATIONSOUND": "Sound",
-    "NOTIFICATIONSHAKE": "Shake",
-    "NOTIFICATIONTEMPLATE": "Template",
-    "SYSTEM": "System",
-    "EDIT_SYSTEM": "Edit System",
-    "COMMAND": "Command",
-    "VARIABLE": "Variable",
-    "AUTHID": "Auth ID",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "No Sms Disposition Available",
-    "CANNEDANSWERS": "Canned Answers",
-    "SMSCANNEDANSWERS": "Canned Answers",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-    "NEW_SMSCANNEDANSWER": "New Canned Answer",
-    "ADD_SMSCANNEDANSWER": "Add Canned Answer",
-    "EDIT_SMSCANNEDANSWER": "Edit",
-    "DELETE_SMSCANNEDANSWER": "Delete",
-    "DELIVERYREPORTURL": "Delivery Report URL",
-    "DELETE": "Delete",
-    "SENDERSTRING": "Sender String",
-    "DELIVERYREPORT": "Delivery Report",
-    "METHOD": "Method",
-    "ADD_NOTE": "Add note",
-    "NOTE": "Note",
-    "SPYINTERACTION": "Spy",
-    "AUTOREPLY": "Auto Reply",
-    "EDIT_AUTOREPLY": "Edit Auto Reply",
-    "TIMES": "Number of times per interaction",
-    "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Insert your text message here",
-    "CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-    "CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-    "SEND": "Send",
-    "TO": "To",
-    "MESSAGE": "Message",
-    "TAGS": "Tags",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Go To Realtime Sms Queue",
-    "PARTIALPAUSE": "Parital Pause",
-    "BUSY": "Busy",
-    "TIMER": "Timer",
-    "IDLE": "Idle",
-    "CAPACITY": "Capacity",
-    "PROXY": "Proxy",
-    "ADVANCED": "Advanced",
-    "MOTIONPROXY": "Proxy Or Motion Domain",
-    "REALTIME": "Realtime",
-    "KEY": "Key",
-    "NAME": "Name",
-    "SMSQUEUES": "SMS Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "STRATEGY": "Strategy",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "DOWNLOAD_INTERACTION": "Allalaadimine",
+    "TRANSFER": "Edastamine",
+    "QUEUETRANSFER": "Järjekorra Edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra Edastamise Aegumine",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "TAG": "Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "WAITFORTHEASSIGNEDAGENT": "Oota määratud agenti",
+    "NOTIFICATION": "Teatis",
+    "NOTIFICATIONSOUND": "Heli",
+    "NOTIFICATIONSHAKE": "Raputus",
+    "NOTIFICATIONTEMPLATE": "Mall",
+    "SYSTEM": "Süsteem",
+    "EDIT_SYSTEM": "Redigeeri Süsteemi",
+    "COMMAND": "Käsk",
+    "VARIABLE": "Muutuja",
+    "AUTHID": "Autentimise ID",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "SMS Kasutusi pole Saadaval",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "SMSCANNEDANSWERS": "Salvestatud Vastused",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Salvestatud Vastused Puuduvad",
+    "NEW_SMSCANNEDANSWER": "Uus Salvestatud Vastus",
+    "ADD_SMSCANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_SMSCANNEDANSWER": "Redigeeri",
+    "DELETE_SMSCANNEDANSWER": "Kustuta",
+    "DELIVERYREPORTURL": "Kohaletoimetamise Raporti URL",
+    "DELETE": "Kustuta",
+    "SENDERSTRING": "Saatja String",
+    "DELIVERYREPORT": "Kohaletoimetamise Raport",
+    "METHOD": "Meetod",
+    "ADD_NOTE": "Lisa märge",
+    "NOTE": "Märge",
+    "SPYINTERACTION": "Spioon",
+    "AUTOREPLY": "Automaatvastus",
+    "EDIT_AUTOREPLY": "Redigeeri Automaatvastus",
+    "TIMES": "Kordade arv suhtluse korda",
+    "TEXT": "Tekst",
+    "INSERT_MESSAGE_HERE": "Sisesta oma tekstisõnum siia",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud Vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst, et otsida Salvestatud Vastust",
+    "SEND": "Saada",
+    "TO": "Kellele",
+    "MESSAGE": "Sõnum",
+    "TAGS": "Sildid",
+    "NO_AGENT_ONLINE": "Agente pole Võrgus",
+    "GOTOREALTIME_SMSQUEUE": "Mine Reaalaja SMS Järjekorda",
+    "PARTIALPAUSE": "Osaline Paus",
+    "BUSY": "Hõivatud",
+    "TIMER": "Taimer",
+    "IDLE": "Jõude",
+    "CAPACITY": "Võimsus",
+    "PROXY": "Puhver",
+    "ADVANCED": "Täpsem",
+    "MOTIONPROXY": "Puhver või Liikumise Domeen",
+    "REALTIME": "Reaalaeg",
+    "KEY": "Võti",
+    "NAME": "Nimi",
+    "SMSQUEUES": "SMS Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "STRATEGY": "Strateegia",
     "ERRORS": {
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-      "TAG_REQUIRED": "Mandatory Field",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "COMMAND_REQUIRED": "Mandatory Field",
-      "AUTHID_REQUIRED": "Mandatory Field",
-      "TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TEXT_REQUIRED": "Mandatory Field",
-      "VALUE_REQUIRED": "Mandatory Field",
-      "SENDERSTRING_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Wrong format",
-      "METHOD_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_REQUIRED": "Mandatory Field",
-      "MOTIONPROXY_MUST_VALID_URL": "Wrong format",
-      "KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "KEY_REQUIRED": "Mandatory Field",
-      "NAME_REQUIRED": "Mandatory Field",
-      "AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-      "PHONE_REQUIRED": "Mandatory Field",
-      "SID_REQUIRED": "Mandatory Field",
-      "TOKEN_REQUIRED": "Mandatory Field",
-      "USERNAME_REQUIRED": "Mandatory Field",
-      "PASSWORD_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_REQUIRED": "Mandatory Field",
-      "MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-      "ACCEPTURL_MUST_VALID_URL": "Wrong format",
-      "TIMEOUT_REQUIRED": "Mandatory Field",
-      "REJECTURL_MUST_VALID_URL": "Wrong format",
-      "CLOSEURL_MUST_VALID_URL": "Wrong format",
-      "TYPE_REQUIRED": "Mandatory Field",
-      "LIST_REQUIRED": "Mandatory Field",
-      "PRIORITY_REQUIRED": "Mandatory Field",
-      "CONDITION_REQUIRED": "Mandatory Field",
-      "TRUEPRIORITY_REQUIRED": "Mandatory Field",
-      "FALSEPRIORITY_REQUIRED": "Mandatory Field",
-      "AGENT_REQUIRED": "Mandatory Field",
-      "QUEUE_REQUIRED": "Mandatory Field",
-      "DISPOSITION_REQUIRED": "Mandatory Field",
-      "ACCOUNTSID_REQUIRED": "Mandatory Field",
-      "AUTHTOKEN_REQUIRED": "Mandatory Field",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "TAG_REQUIRED": "Kohustuslik Väli",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "COMMAND_REQUIRED": "Kohustuslik Väli",
+      "AUTHID_REQUIRED": "Kohustuslik Väli",
+      "TEXT_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TEXT_REQUIRED": "Kohustuslik Väli",
+      "VALUE_REQUIRED": "Kohustuslik Väli",
+      "SENDERSTRING_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Vale formaat",
+      "METHOD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_REQUIRED": "Kohustuslik Väli",
+      "MOTIONPROXY_MUST_VALID_URL": "Vale formaat",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "KEY_REQUIRED": "Kohustuslik Väli",
+      "NAME_REQUIRED": "Kohustuslik Väli",
+      "AGENT_TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "PHONE_REQUIRED": "Kohustuslik Väli",
+      "SID_REQUIRED": "Kohustuslik Väli",
+      "TOKEN_REQUIRED": "Kohustuslik Väli",
+      "USERNAME_REQUIRED": "Kohustuslik Väli",
+      "PASSWORD_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_REQUIRED": "Kohustuslik Väli",
+      "MOTIONADDRESS_MUST_VALID_URL": "Vale formaat",
+      "ACCEPTURL_MUST_VALID_URL": "Vale formaat",
+      "TIMEOUT_REQUIRED": "Kohustuslik Väli",
+      "REJECTURL_MUST_VALID_URL": "Vale formaat",
+      "CLOSEURL_MUST_VALID_URL": "Vale formaat",
+      "TYPE_REQUIRED": "Kohustuslik Väli",
+      "LIST_REQUIRED": "Kohustuslik Väli",
+      "PRIORITY_REQUIRED": "Kohustuslik Väli",
+      "CONDITION_REQUIRED": "Kohustuslik Väli",
+      "TRUEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "FALSEPRIORITY_REQUIRED": "Kohustuslik Väli",
+      "AGENT_REQUIRED": "Kohustuslik Väli",
+      "QUEUE_REQUIRED": "Kohustuslik Väli",
+      "DISPOSITION_REQUIRED": "Kohustuslik Väli",
+      "ACCOUNTSID_REQUIRED": "Kohustuslik Väli",
+      "AUTHTOKEN_REQUIRED": "Kohustuslik Väli",
       "ACCESSKEYID_REQUIRED": "Juurdepääsukoodi ID on vajalik",
       "APIKEY_REQUIRED": "Kohustuslik väli",
       "BASEURL_REQUIRED": "Kohustuslik väli",
       "ACCOUNTID_REQUIRED": "Kohustuslik väli",
       "APPLICATIONID_REQUIRED": "Kohustuslik väli"
     },
-    "AGENT_TIMEOUT": "Agent Timeout",
-    "DESCRIPTION": "Description",
-    "ADD_SMSQUEUE": "Add SMS Queue",
-    "EDIT_SMSQUEUE": "Edit SMS Queue",
-    "DELETE_SMSQUEUE": "Delete SMS Queue",
-    "SETTINGS": "Settings",
-    "GENERAL": "General",
-    "CREATED_AT": "Created At",
-    "SAVE": "Save",
-    "SMSACCOUNTS": "SMS Accounts",
-    "TYPE": "Type",
-    "PHONE": "Phone",
+    "AGENT_TIMEOUT": "Agendi Aegumine",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_SMSQUEUE": "Lisa SMS Järjekord",
+    "EDIT_SMSQUEUE": "Redigeeri SMS Järjekorda",
+    "DELETE_SMSQUEUE": "Kustuta SMS Järjekord",
+    "SETTINGS": "Sätted",
+    "GENERAL": "Üldine",
+    "CREATED_AT": "Loomisaeg",
+    "SAVE": "Salvesta",
+    "SMSACCOUNTS": "SMS Kontod",
+    "TYPE": "Tüüp",
+    "PHONE": "Telefon",
     "SID": "SID",
-    "TOKEN": "Token",
-    "SMSTYPE": "SMS Type",
-    "USERNAME": "Username",
-    "PASSWORD": "Password",
-    "MOTIONADDRESS": "Motion Address",
-    "ADD_SMSACCOUNT": "Add SMS Account",
-    "EDIT_SMSACCOUNT": "Edit SMS Account",
-    "DELETE_SMSACCOUNT": "Delete SMS Account",
-    "LIST": "List",
-    "FIDELITY": "Fidelity",
+    "TOKEN": "Luba",
+    "SMSTYPE": "SMS Tüüp",
+    "USERNAME": "Kasutajanimi",
+    "PASSWORD": "Parool",
+    "MOTIONADDRESS": "Liikumise Aadress",
+    "ADD_SMSACCOUNT": "Lisa SMS Konto",
+    "EDIT_SMSACCOUNT": "Redigeeri SMS Kontot",
+    "DELETE_SMSACCOUNT": "Kustuta SMS Konto",
+    "LIST": "Loend",
+    "FIDELITY": "Kvaliteet",
     "API": "API",
-    "DISPOSITIONS": "Dispositions",
-    "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Actions",
-    "ACCEPT": "Accept",
-    "ACCEPTMETHOD": "Accept Method",
-    "ACCEPTURL": "Accept URL",
-    "REJECT": "Reject",
-    "REJECTMETHOD": "Reject Method",
-    "REJECTURL": "Reject URL",
-    "CLOSE": "Close",
-    "CLOSEMETHOD": "Close Method",
-    "CLOSEURL": "Close URL",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "BACK": "Back",
+    "DISPOSITIONS": "Kasutused",
+    "WEBHOOKS": "VeebiHaagid",
+    "ACTIONS": "Tegevused",
+    "ACCEPT": "Aktsepteeri",
+    "ACCEPTMETHOD": "Aktsepteeri Meetod",
+    "ACCEPTURL": "Aktsepteeri URL",
+    "REJECT": "Hülga",
+    "REJECTMETHOD": "Hülga Meetod",
+    "REJECTURL": "Hülga URL",
+    "CLOSE": "Sule",
+    "CLOSEMETHOD": "Sule Method",
+    "CLOSEURL": "Sule URL",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Midagi",
+    "BACK": "Tagasi",
     "SMS": "SMS",
-    "ID": "Id",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "SMSDISPOSITIONS": "SMS Dispositions",
-    "NO_SMSDISPOSITION_AVAILABLE": "No SMS Dispositions available",
-    "NEW_SMSDISPOSITION": "New SMS Disposition",
-    "ADD_SMSDISPOSITION": "Add SMS Disposition",
-    "EDIT_SMSDISPOSITION": "Edit SMS Disposition",
-    "DELETE_SMSDISPOSITION": "Delete SMS Disposition",
-    "NEW_SMSQUEUE": "New SMS Queue",
-    "NEW_SMSACCOUNT": "New SMS Account",
-    "NO_AVAILABLE_INFO": "No available info",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
+    "ID": "ID",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "SMSDISPOSITIONS": "SMS Kasutused",
+    "NO_SMSDISPOSITION_AVAILABLE": "SMS Kasutused pole saadaval",
+    "NEW_SMSDISPOSITION": "Uus SMS Kasutus",
+    "ADD_SMSDISPOSITION": "Lisa SMS Kasutus",
+    "EDIT_SMSDISPOSITION": "Redigeeri SMS Kasutus",
+    "DELETE_SMSDISPOSITION": "Kustuta SMS Kasutus",
+    "NEW_SMSQUEUE": "Uus SMS Järjekord",
+    "NEW_SMSACCOUNT": "Uus SMS Konto",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
     "HELP": {
-      "MOTIONPROXY": "The field must have the following format: <protocol>://<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "LIST": "Contact Manager list used to associate contacts",
-      "RECEIVEURL": "This is the auto-generated API string you need to use to receive the messages inside your account from your SMS provider (POST method must be used): click the clipboard button to copy it",
+      "MOTIONPROXY": "Väljal peab olema järgmine formaat: <protocol>://<ipaddress>[:<port>]. Näidis: https://X.Y.Z.W",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "LIST": "Kontakti Halduri loend, mida kasutatakse kontaktide seostamiseks",
+      "RECEIVEURL": "See on automaatselt genereeritud API string, mida kasutatakse sõnumite vastuvõtmiseks sinu Konto sees sinu SMS pakkujalt (kasutada tuleb POST meetodit): kliki lõikelaua nuppu selle kopeerimiseks",
       "DELIVERYREPORTURL": "This is the auto-generated API string you need to use to receive the delivery report of sent messages from your SMS provider (POST method must be used): click the clipboard button to copy it",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele sihtlustele"
     },
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu Lehekülje kohta",
     "OF": "of",
-    "TEAMADD_SMSQUEUE": "Add Team To SMS Queue",
-    "AGENTADD_SMSQUEUE": "Add Agent To SMS Queue",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "RECEIVEURL": "Receive URL",
-    "INTERACTION": "Interaction",
-    "INTERACTIONS": "Interactions",
-    "NO_INTERACTION_AVAILABLE": "No interactions available",
-    "CONTACT": "Contact",
-    "STARTEDAT": "Started At",
+    "TEAMADD_SMSQUEUE": "Lisa Tiim SMS Järjekorda",
+    "AGENTADD_SMSQUEUE": "Lisa Agent SMS Järjekorda",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "RECEIVEURL": "URL vastuvõtmine",
+    "INTERACTION": "Suhtlus",
+    "INTERACTIONS": "Suhtlused",
+    "NO_INTERACTION_AVAILABLE": "Suhtlused pole saadaval",
+    "CONTACT": "Kontakt",
+    "STARTEDAT": "Algusaeg",
     "AGENT": "Agent",
-    "CLOSEDAT": "Closed At",
-    "DISPOSITION": "Disposition",
-    "NOTES": "Notes",
+    "CLOSEDAT": "Sulgemisaeg",
+    "DISPOSITION": "Kasutus",
+    "NOTES": "Märkmed",
     "GOTO": "Goto",
     "GOTOIF": "Gotoif",
     "NOOP": "Noop",
-    "QUEUE": "Queue",
-    "TIMEOUT": "Timeout",
-    "VALUE": "Value",
-    "EDIT_AGENT": "Edit Agent",
-    "EDIT_GOTO": "Edit Goto",
-    "EDIT_NOOP": "Edit Noop",
-    "EDIT_GOTOIF": "Edit Gotoif",
-    "EDIT_QUEUE": "Edit Queue",
-    "CONDITION": "Condition",
-    "TRUEPRIORITY": "True Priority",
-    "FALSEPRIORITY": "False Priority",
-    "PRIORITY": "Priority",
+    "QUEUE": "Järjekord",
+    "TIMEOUT": "Aegumine",
+    "VALUE": "Väärtus",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "EDIT_GOTO": "Redigeeri Goto",
+    "EDIT_NOOP": "Redigeeri Noop",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "CONDITION": "Tingimus",
+    "TRUEPRIORITY": "Õige Prioriteet",
+    "FALSEPRIORITY": "Vale Prioriteet",
+    "PRIORITY": "Prioriteet",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Edit Gotop",
-    "EDIT_CLOSE": "Edit Close",
-    "FILTER": "Filter",
-    "SELECT_STATUS": "Select a status",
-    "ALL": "All",
-    "SELECT_ACCOUNT": "Select an account",
-    "OPENED": "Open",
-    "CLOSED": "Closed",
-    "STATUS": "Status",
-    "ACCOUNT": "Account",
-    "OPEN": "Open",
-    "INFO": "Info",
-    "ACCOUNTSID": "Account SID",
-    "AUTHTOKEN": "Auth Token",
-    "UNKNOWN": "Unknown",
-    "UNREGISTERED": "Unregistered",
-    "UNAVAILABLE": "Unavailable",
-    "NOT_INUSE": "Not in use",
-    "REACHABLE": "Reachable",
-    "IN_USE": "In use",
-    "AGENTS": "Agents",
-    "QUEUES": "Queues",
-    "FULLNAME": "Fullname",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "PAUSE": "Pause",
-    "LOGOUT": "Logout",
-    "AGENTADD_QUEUE": "Add agent to SMS queue",
-    "UNPAUSE": "End Pause",
-    "DEFAULT_PAUSE": "Default pause",
-    "LOGGED_IN": "Logged in",
-    "PAUSED": "Paused",
-    "READY": "Ready",
-    "WAITING": "Waiting",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
-    "MAIL": "Email",
-    "OPENCHANNEL": "Open channel",
-    "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Add agents to SMS queue",
-    "INTERACTIONS_SMSACCOUNT": "Go to Interactions",
-    "REFRESH_INTERACTIONS": "Refresh Interactions",
-    "DELETE_INTERACTION": "Delete Interaction",
-    "AGENTADD_SMSACCOUNT": "Add Agent to SMS Account",
+    "EDIT_GOTOP": "Redigeeri Gotop",
+    "EDIT_CLOSE": "Redigeeri Sulgemist",
+    "FILTER": "Filtreerimine",
+    "SELECT_STATUS": "Vali staatus",
+    "ALL": "Kõik",
+    "SELECT_ACCOUNT": "Vali Konto",
+    "OPENED": "Avatud",
+    "CLOSED": "Suletud",
+    "STATUS": "Staatus",
+    "ACCOUNT": "Konto",
+    "OPEN": "Ava",
+    "INFO": "Teave",
+    "ACCOUNTSID": "Konto SID",
+    "AUTHTOKEN": "Autentimisluba",
+    "UNKNOWN": "Teadmata",
+    "UNREGISTERED": "Registreerimata",
+    "UNAVAILABLE": "Kättesaamatu",
+    "NOT_INUSE": "Pole kasutusel",
+    "REACHABLE": "Kättesaadav",
+    "IN_USE": "Kasutusel",
+    "AGENTS": "Agentdid",
+    "QUEUES": "Järjekorrad",
+    "FULLNAME": "Täisnimi",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "PAUSE": "Paus",
+    "LOGOUT": "Logi välja",
+    "AGENTADD_QUEUE": "Lisa agent SMS Järjekorda",
+    "UNPAUSE": "Lõpeta Paus",
+    "DEFAULT_PAUSE": "Vaikimisi paus",
+    "LOGGED_IN": "Sisse logitud",
+    "PAUSED": "Pausil",
+    "READY": "Valmis",
+    "WAITING": "Ootel",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
+    "OPENCHANNEL": "Ava kanal",
+    "FAX": "Faks",
+    "AGENTSADD_QUEUE": "Lisa agendid SMS Järjekorda",
+    "INTERACTIONS_SMSACCOUNT": "Mine Suhtlustesse",
+    "REFRESH_INTERACTIONS": "Värskenda Suhtlusi",
+    "DELETE_INTERACTION": "Kustuta Suhtlus",
+    "AGENTADD_SMSACCOUNT": "Lisa Agent SMS Kontole",
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "AMAZONLEX": "AmazonLex",
     "APIKEY": "ApiKey",
     "BASEURL": "Baas-URL",
     "BOTNAME": "Boti nimi",
     "DIALOGFLOW": "DialogFlow",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadige alla ilma manuseta",
-    "DOWNLOAD_WITH_ATTACHMENT": "Laadige alla koos manusega",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Laadi alla ilma manuseta",
+    "DOWNLOAD_WITH_ATTACHMENT": "Laadi alla koos manusega",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane teade",
     "LEXREGION": "Piirkond",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "TEAMS_ASSOCIATION": "Võistkondade liit",
     "WELCOMEMESSAGE": "Tervitussõnum",
index 0d93402..75fb8d9 100644 (file)
 {
   "STAFF": {
-    "HOTDESK": "Hot desk",
-    "ENABLEVIDEORECORDING": "Enable Video Recording",
-    "OLD_PASSWORD": "Old Password",
-    "ENABLEJAWSINTEGRATION": "Enable Jaws Integration",
+    "HOTDESK": "Hostseade",
+    "ENABLEVIDEORECORDING": "Luba Videosalvestus",
+    "OLD_PASSWORD": "Vana Parool",
+    "ENABLEJAWSINTEGRATION": "Luba Jaws Integreerimine",
     "ALIAS": "Alias",
-    "NO_PASSWORD_CHANGE": "No Password Change",
-    "SECURITY_SUITE": "Security Suite",
-    "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
+    "NO_PASSWORD_CHANGE": "Parooli Muutmine puudub",
+    "SECURITY_SUITE": "Turvapakett",
+    "LAST_PASSWORD_RESET_AT": "Viimase Parooli Lähtestamise aeg",
     "SIP_WEBRTC": "Sip",
-    "SETTINGS_WEBRTC": "Settings",
+    "SETTINGS_WEBRTC": "Sätted",
     "WEBRTC": "WebRTC",
-    "DTLSCERTFILE": "TLS certificate",
-    "DTLSPRIVATEKEY": "TLS certificate's private key",
-    "CONTEXT": "Context",
-    "RINGINUSE": "Ring In Use",
-    "USERS": "Users",
-    "AGENTS": "Agents",
-    "TOGGLE_SIDENAV": "Toggle sidenav",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "MULTI_SELECT_TOGGLE": "multi select toggle",
-    "SELECT_ALL": "Select all",
-    "SELECT_NONE": "Select None",
-    "SELECTED": "Selected",
-    "DELETE_SELECTED": "Delete selected",
-    "EXPORT_SELECTED": "Export selected",
-    "ALL_USERS": "All users",
-    "ALL_AGENTS": "All agents",
-    "SORT": "sort",
-    "NAME": "Name",
-    "FULLNAME": "Full Name",
-    "A_TO_Z": "(A to Z)",
-    "Z_TO_A": "(Z to A)",
-    "MORE": "More",
-    "DELETE_USER": "Delete User",
-    "EDIT_USER": "Edit User",
-    "DELETE_AGENT": "Delete Agent",
-    "EDIT_AGENT": "Edit Agent",
-    "DELETE": "DELETE",
-    "SAVE": "SAVE",
-    "ADD_USER": "ADD USER",
-    "ADD_AGENT": "ADD AGENT",
-    "NO_RESULTS": "No results..",
-    "CLOSE_DIALOG": "Close dialog",
-    "NAME_REQUIRED": "Name (required)",
-    "USERNAME": "Username",
-    "SHOW_ALL_FIELDS": "Show All Fields",
-    "PHONE_NUMBER": "Phone number",
-    "EMAIL": "Email",
-    "PASSWORD": "Password",
+    "DTLSCERTFILE": "TLS sertifikaat",
+    "DTLSPRIVATEKEY": "TLS sertifikaatide privaatvõti",
+    "CONTEXT": "Kontekst",
+    "RINGINUSE": "Helistamine Kasutusel",
+    "USERS": "Kasutajad",
+    "AGENTS": "Agendid",
+    "TOGGLE_SIDENAV": "Ümberlüliti sidenav",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "MULTI_SELECT_TOGGLE": "mitme valikuga ümberlüliti",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "SELECTED": "Valitud",
+    "DELETE_SELECTED": "Kustuta valitud",
+    "EXPORT_SELECTED": "Ekspordi valitud",
+    "ALL_USERS": "Kõik kasutajad",
+    "ALL_AGENTS": "Kõik agendid",
+    "SORT": "sordi",
+    "NAME": "Nimi",
+    "FULLNAME": "Täisnimi",
+    "A_TO_Z": "(A-st Z-ni)",
+    "Z_TO_A": "(Z-st to A-ni)",
+    "MORE": "Rohkem",
+    "DELETE_USER": "Kustuta Kasutaja",
+    "EDIT_USER": "Redigeeri Kasutajat",
+    "DELETE_AGENT": "Kustuta Agent",
+    "EDIT_AGENT": "Redigeeri Agenti",
+    "DELETE": "KUSTUTA",
+    "SAVE": "SALVESTA",
+    "ADD_USER": "LISA KASUTAJA",
+    "ADD_AGENT": "LISA AGENT",
+    "NO_RESULTS": "Tulemused puuduvad..",
+    "CLOSE_DIALOG": "Sule dialoog",
+    "NAME_REQUIRED": "Nimi (nõutav)",
+    "USERNAME": "Kasutajanimi",
+    "SHOW_ALL_FIELDS": "Näita Kõik Väljad",
+    "PHONE_NUMBER": "Telefoninumber",
+    "EMAIL": "E-mail",
+    "PASSWORD": "Parool",
     "ERRORS": {
-      "ALLOWCODECS_REQUIRED": "Mandatory field",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "DTLSCERTFILE_REQUIRED": "Mandatory field",
-      "DTLSPRIVATEKEY_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "USERNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "ACCOUNTNAME_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_REQUIRED": "Mandatory field",
-      "MAILCAPACITY_REQUIRED": "Mandatory field",
-      "FAXCAPACITY_REQUIRED": "Mandatory field",
-      "SMSCAPACITY_REQUIRED": "Mandatory field",
-      "OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
-      "SIPEXPIRES_REQUIRED": "Mandatory field",
-      "SIPPORT_REQUIRED": "Mandatory field",
-      "UNCONDITIONALNUMBER_REQUIRED": "Mandatory field",
-      "NOREPLYNUMBER_REQUIRED": "Mandatory field",
-      "BUSYNUMBER_REQUIRED": "Mandatory field",
-      "USERNAME_MUST_VALID_PATTERN": "Wrong format {{regex}}",
-      "REMOTECONTROLPORT_REQUIRED": "Mandatory field",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AUTOANSWERDELAY_REQUIRED": "Mandatory field",
-      "MONITOREXTENSION_REQUIRED": "Mandatory field",
-      "SECURE_PASSWORD_PATTERN": "The password must be at least 8 characters long and have 1 lowercase character, 1 uppercase character, 1 number and 1 special character ~!?*@#$%^&-_=+[{]}.",
+      "ALLOWCODECS_REQUIRED": "Kohustuslik väli",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) Krüptimine",
+      "DTLSCERTFILE_REQUIRED": "Kohustuslik väli",
+      "DTLSPRIVATEKEY_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "USERNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "ACCOUNTNAME_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_REQUIRED": "Kohustuslik väli",
+      "MAILCAPACITY_REQUIRED": "Kohustuslik väli",
+      "FAXCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SMSCAPACITY_REQUIRED": "Kohustuslik väli",
+      "OPENCHANNELCAPACITY_REQUIRED": "Kohustuslik väli",
+      "SIPEXPIRES_REQUIRED": "Kohustuslik väli",
+      "SIPPORT_REQUIRED": "Kohustuslik väli",
+      "UNCONDITIONALNUMBER_REQUIRED": "Kohustuslik väli",
+      "NOREPLYNUMBER_REQUIRED": "Kohustuslik väli",
+      "BUSYNUMBER_REQUIRED": "Kohustuslik väli",
+      "USERNAME_MUST_VALID_PATTERN": "Vale formaat {{regex}}",
+      "REMOTECONTROLPORT_REQUIRED": "Kohustuslik väli",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AUTOANSWERDELAY_REQUIRED": "Kohustuslik väli",
+      "MONITOREXTENSION_REQUIRED": "Kohustuslik väli",
+      "SECURE_PASSWORD_PATTERN": "Parool peab koosnema vähemalt 8 tähemärgist ja sisaldama 1 väikest tähemärki, 1 suurt tähemärki, 1 numbrit ja 1 erimärki ~!?*@#$%^&-_=+[{]}.",
       "CONFIRM_REQUIRED": "Kohustuslik väli",
       "CRUDPERMISSIONS_REQUIRED": "Kohustuslik väli",
       "PASSWORD_OLDPASSWORD_MATCH": "Uus parool peab erinema eelmisest",
       "USERPROFILE_REQUIRED": "Kohustuslik väli",
       "WHATSAPPCAPACITY_REQUIRED": "Kohustuslik väli"
     },
-    "ACCOUNT": "Account",
-    "VOICE": "Voice",
-    "CREATED_AT": "Created At",
-    "ROLE": "Role",
-    "PERSONAL_INFO": "Personal Info",
-    "DESCRIPTION": "Description",
-    "CHANGE_AVATAR": "Change Avatar",
-    "GENERAL": "General",
-    "INTERNAL": "Internal",
+    "ACCOUNT": "Konto",
+    "VOICE": "Hääl",
+    "CREATED_AT": "Loomisaeg",
+    "ROLE": "Roll",
+    "PERSONAL_INFO": "Isiklik Teave",
+    "DESCRIPTION": "Kirjeldus",
+    "CHANGE_AVATAR": "Muuda Avatari",
+    "GENERAL": "Üldine",
+    "INTERNAL": "Sisemine",
     "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Allowed Codecs",
+    "ALLOWCODECS": "Lubatud Koodeks",
     "HELP": {
-      "LAST_PASSWORD_RESET_AT": "Last date and time the password has been changed. If Secure Suite General Setting is enabled, the password will expire after 90 days.",
-      "DTLSCERTFILE": "Link to the valid TLS certificate(.crt file). Default value: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Link to the certificate's private key(.key file). Default value: '/etc/pki/tls/private/motion.key'.",
-      "ALLOWCODECS": "Allowed Codecs in order of preference",
-      "TRANSPORT": "Set the default transports in order of preference",
-      "HOST": "How to find the client - IP or host name. If you want the phone to register itself, use the keyword dynamic instead of Host IP",
-      "NAT": "Changes the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore other settings and set nat=no",
-      "SIPEXPIRES": "Default: 160",
-      "SIPPORT": "Default: 5060",
-      "TYPE": "Determines the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above",
-      "CHATCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
-      "CALLGROUP": "The agent's callgroup",
-      "PICKUPGROUP": "The groups in which the agent can answer calls",
-      "USERNAME": "Only numbers, letters and specific characters (._) are supported",
-      "ENCRYPTION": "SRTP (Secure Realtime Protocol) Encryption",
-      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu „API võtmehaldur”",
+      "LAST_PASSWORD_RESET_AT": "Parooli muutmise viimane kuupäev ja kellaaeg. Kui Turvapaketti Üldine Säte on lubatud, aegub parool 90 päeva pärast.",
+      "DTLSCERTFILE": "Link kehtivale TLS sertifikaadile(.crt file). Vaikimisi väärtus: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Link sertifikaadi privaatvõtmele(.key file). Vaikimisi väärtus: '/etc/pki/tls/private/motion.key'.",
+      "ALLOWCODECS": "Lubatud Koodeks eelistusjärjekorras",
+      "TRANSPORT": "Seadista vaikimisi transport eelistusjärjekorras",
+      "HOST": "Kuidas leida klienti - IP või hosti nimi. Kui soovid, et telefon registreeriks ennast, kasuta võtmesõna dünaamikat Host IP asemel",
+      "NAT": "Muudab Asteriski käitumist kliendi jaokstilemüüri taga. Kui mõni komaga eraldatud valikutest on 'ei', Asterisk ignoreerib teisi sätteid ja seadistab nat=no",
+      "SIPEXPIRES": "Vaikimisi: 160",
+      "SIPPORT": "Vaikimisi: 5060",
+      "TYPE": "Määratleb SIP rolli asteriskis. Kasutaja: kasutatakse sissetuleva autentimiseks - Partner: väljuvate kõnede jaoks - Sõbrad: katab mõlemad ülaltoodud tunnused",
+      "CHATCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta (0=piiramatu)",
+      "MAILCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "FAXCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "SMSCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "OPENCHANNELCAPACITY": "Maksimaalne samaaegsete kanali suhtluste arv agendi kohta(0=piiramatu)",
+      "CALLGROUP": "Agendi kõnegrupp",
+      "PICKUPGROUP": "Grupp, milles agent saab kõnedele vastata",
+      "USERNAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "ENCRYPTION": "SRTP (Turvaline Reaalaja Protokoll) krüptimine",
+      "APIKEY": "Selle võtme haldamiseks kasutage tööriistaribal nuppu ā€˛API võtmehaldur”",
       "BLOCKED": "Juurdepääsu lukustamine / avamine",
       "CUSTOM_DASHBOARDS_PERMISSIONS": "Kohandatud juhtpaneelide õigusi hallatakse moodulis Tööriistad",
-      "DISABLED": "valige uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
+      "DISABLED": "Vali uuesti deaktiveerimiseks deaktiveerimine / tühistamine",
       "ENABLEAUTOMATICSCREENRECORDING": "Funktsioon on saadaval ainult häälkanalite jaoks",
       "SAVE_PERMISSIONS": "Kõik sektsioonid, mis sisaldavad ootel muudatusi, salvestatakse",
       "WHATSAPPCAPACITY": "Maksimaalne samaaegsete kanalite interaktsioonide arv agendi kohta (0 = piiramatu)",
       "WSS_PORT": "Vaikimisi: 8089",
       "AD_SSO_ENABLED": "Logige sisse oma Active Directory mandaatidega"
     },
-    "NEW_PASSWORD": "New Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "CHANGE_PASSWORD": "Change Password",
-    "CHANGEPASSWORD_AGENT": "Change Password",
-    "CHANGEPASSWORD_USER": "Change Password",
-    "CHANGEPASSWORD_TELEPHONE": "Change Password",
-    "LOGININPAUSE": "Login In Pause",
+    "NEW_PASSWORD": "Uus Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "CHANGE_PASSWORD": "Muuda Parooli",
+    "CHANGEPASSWORD_AGENT": "Muuda Parooli",
+    "CHANGEPASSWORD_USER": "Muuda Parooli",
+    "CHANGEPASSWORD_TELEPHONE": "Muuda Parooli",
+    "LOGININPAUSE": "Sisselogimine Pausis",
     "HOST": "Host",
     "NAT": "NAT",
     "CHANSPY": "ChanSpy",
-    "OTHER_CHANNELS": "Other Channels",
-    "CHATCAPACITY": "Chat Capacity",
-    "MAILCAPACITY": "Email Capacity",
-    "FAXCAPACITY": "Fax Capacity",
-    "SMSCAPACITY": "Sms Capacity",
-    "OPENCHANNELCAPACITY": "Open Channel Capacity",
-    "MOTIONBAR": "Motion Bar",
-    "SETTINGS": "Settings",
-    "AUTOANSWER": "Auto Answer",
-    "ENABLESETTINGS": "Enable Settings",
-    "CALL_FORWARDING": "Call Forwarding",
-    "UNCONDITIONAL": "Unconditional",
-    "UNCONDITIONALNUMBER": "Unconditional Number",
-    "NOREPLY": "No Reply",
-    "NOREPLYNUMBER": "No Reply Number",
-    "BUSY": "Busy",
-    "BUSYNUMBER": "Busy Number",
-    "REMOTE_CONTROL": "Remote Control",
-    "REMOTECONTROL": "Remote Control",
-    "REMOTECONTROLPORT": "Remote Control Port",
+    "OTHER_CHANNELS": "Teised Kanalid",
+    "CHATCAPACITY": "Vestluse Võimsus",
+    "MAILCAPACITY": "E-posti Maht",
+    "FAXCAPACITY": "Faksi Maht",
+    "SMSCAPACITY": "SMSi Maht",
+    "OPENCHANNELCAPACITY": "Avatud Kanali Maht",
+    "MOTIONBAR": "Liikumisriba",
+    "SETTINGS": "Sätted",
+    "AUTOANSWER": "Automaatvastus",
+    "ENABLESETTINGS": "Luba Sätted",
+    "CALL_FORWARDING": "Kõne Suunamine",
+    "UNCONDITIONAL": "Tingimusteta",
+    "UNCONDITIONALNUMBER": "Tingimusteta Number",
+    "NOREPLY": "Vastamine puudub",
+    "NOREPLYNUMBER": "Number, millele ei saa vastata",
+    "BUSY": "Hõivatud",
+    "BUSYNUMBER": "Hõivatud Number",
+    "REMOTE_CONTROL": "Kaugjuhtimine",
+    "REMOTECONTROL": "Kaugjuhtimine",
+    "REMOTECONTROLPORT": "Kaugjuhtimise Port",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP Expires [sec]",
+    "SIPEXPIRES": "SIP aegub [sek]",
     "SIPPORT": "SIP Port",
-    "PENALTY": "Penalty",
-    "ACCOUNTNAME": "Account Name",
-    "ADD_TELEPHONE": "Add Telephone",
-    "EDIT_TELEPHONE": "Edit Telephone",
-    "DELETE_TELEPHONE": "Delete Telephone",
-    "TEAMS": "Teams",
-    "DELETE_TEAM": "Delete Team",
-    "AGENTADD_TEAM": "Add Agents to Team",
-    "EDIT_TEAM": "Edit Team",
-    "TYPE": "Type",
-    "TELEPHONES": "Telephones",
-    "CALLERID": "Caller ID",
-    "ENABLERECORDING": "Enable Recording",
-    "STAFF": "Staff",
-    "ID": "Id",
-    "NEW_USER": "New User",
-    "NEW_AGENT": "New Agent",
-    "NEW_TELEPHONE": "New Telephone",
-    "NEW_TEAM": "New Team",
-    "ADD_TEAM": "Add Team",
-    "JOIN_QUEUE": "Join Queue",
-    "CAPACITY": "Capacity",
-    "AUTOINTERNAL": "Auto generate internal number",
-    "ADD_AGENT_TO_TEAM": "Add Agent to Team",
-    "TEAMADD_AGENT": "Add Agent to Team",
-    "NO_AVAILABLE_INFO": "No available info",
-    "PERMISSIONS": "Permissions",
-    "ADD_AGENT_TO_QUEUE": "Add Agent to Queue",
-    "ALL_MODULES_AVAILABLE": "All modules available",
-    "CALLGROUP": "Call Group",
-    "PICKUPGROUP": "Pickup Group",
-    "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Add Agent to Queue Campaigns",
-    "ADD_AGENT_TO_VOICE_QUEUES": "Add Agent to Voice Queues",
-    "ADD_AGENT_TO_CHAT_QUEUES": "Add Agent to Chat Queues",
-    "ADD_AGENT_TO_MAIL_QUEUES": "Add Agent to Email Queues",
-    "ADD_AGENT_TO_SMS_QUEUES": "Add Agent to SMS Queues",
-    "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Add Agent to Open Channel Queues",
-    "ADD_AGENT_TO_FAX_QUEUES": "Add Agent to Fax Queues",
-    "QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
-    "QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
-    "QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
-    "QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
-    "QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "SELECTED_AGENTS": "Selected Agents",
-    "ALL_QUEUE_CAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUE_CAMPAIGNS": "Selected Queue Campaigns",
-    "ALL_VOICE_QUEUES": "All Voice Queues",
-    "SELECTED_VOICE_QUEUES": "Selected Voice Queues",
-    "ALL_CHAT_QUEUES": "All Chat Queues",
-    "SELECTED_CHAT_QUEUES": "Selected Chat Queues",
-    "ALL_MAIL_QUEUES": "All Email Queues",
-    "SELECTED_MAIL_QUEUES": "Selected Email Queues",
-    "ALL_SMS_QUEUES": "All SMS Queues",
-    "SELECTED_SMS_QUEUES": "Selected SMS Queues",
-    "ALL_OPENCHANNEL_QUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNEL_QUEUES": "Selected Open Channel Queues",
-    "ALL_FAX_QUEUES": "All Fax Queues",
-    "SELECTED_FAX_QUEUES": "Selected Fax Queues",
-    "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Typology",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "PENALTY": "Trahv",
+    "ACCOUNTNAME": "Konto Nimi",
+    "ADD_TELEPHONE": "Lisa Telefon",
+    "EDIT_TELEPHONE": "Redigeeri Telefoni",
+    "DELETE_TELEPHONE": "Kustuta Telefon",
+    "TEAMS": "Tiimid",
+    "DELETE_TEAM": "Kustuta Tiim",
+    "AGENTADD_TEAM": "Lisa Agendid Tiimile",
+    "EDIT_TEAM": "Redigeeri Tiimi",
+    "TYPE": "Tüüp",
+    "TELEPHONES": "Telefonid",
+    "CALLERID": "Helistaja ID",
+    "ENABLERECORDING": "Luba Salvestamine",
+    "STAFF": "Personal",
+    "ID": "ID",
+    "NEW_USER": "Uus Kasutaja",
+    "NEW_AGENT": "Uus Agent",
+    "NEW_TELEPHONE": "Uus Telefon",
+    "NEW_TEAM": "Uus Tiim",
+    "ADD_TEAM": "Lisa Tiim",
+    "JOIN_QUEUE": "Liitu Järjekorraga",
+    "CAPACITY": "Maht",
+    "AUTOINTERNAL": "Genereeri automaatselt sisemine number",
+    "ADD_AGENT_TO_TEAM": "Lisa Agent Tiimi",
+    "TEAMADD_AGENT": "Lisa Agent Tiimi",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "PERMISSIONS": "Load",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "ALL_MODULES_AVAILABLE": "Kõik moodulid on saadaval",
+    "CALLGROUP": "Helistamise Grupp",
+    "PICKUPGROUP": "Vastuvõtu Grupp",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Lisa Agent Järjekorra Kampaaniasse",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Lisa Agent Hääle Järjekordadesse",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Lisa Agent Vestluse Järjekordadesse",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Lisa Agent E-maili Järjekordadesse",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Lisa Agent SMSi Järjekordadesse",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Lisa Agent Avatud Kanali Järjekordadesse",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Lisa Agent Faksi Järjekordadesse",
+    "QUEUEADD_USER_VOICE_INBOUND": "Lisa Kasutaja Hääle Järjekordadesse",
+    "QUEUEADD_USER_CHAT_INBOUND": "Lisa Kasutaja Vestluse Järjekordadesse",
+    "QUEUEADD_USER_MAIL_INBOUND": "Lisa Kasutaja E-maili Järjekordadesse",
+    "QUEUEADD_USER_SMS_INBOUND": "Lisa Kasutaja SMSi Järjekordadesse",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Lisa Kasutaja Avatud Kanali Järjekordadesse",
+    "QUEUEADD_USER_FAX_INBOUND": "Lisa Kasutaja Faksi Järjekordadesse",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Valitud Järjekorra Kampaaniad",
+    "ALL_QUEUES_VOICE_INBOUND": "Kõik Hääle Järjekorrad",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Valitud Hääle Järjekorrad",
+    "ALL_QUEUES_CHAT_INBOUND": "Kõik Vestluse  Järjekorrad",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Valitud Vestluse Järjekorrad",
+    "ALL_QUEUES_MAIL_INBOUND": "Kõik E-maili Järjekorrad",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Valitud E-maili Järjekorrad",
+    "ALL_QUEUES_SMS_INBOUND": "Kõik SMSi Järjekorrad",
+    "SELECTED_QUEUES_SMS_INBOUND": "Valitud SMSi Järjekorrad",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "vatud Kanali Järjekorrad",
+    "ALL_QUEUES_FAX_INBOUND": "Kõik Faksi Järjekorrad",
+    "SELECTED_QUEUES_FAX_INBOUND": "Valitud Faksi Järjekorrad",
+    "VOICEMAIL": "Kõnepost",
+    "SHOWWEBCONTROL": "Tüpoloogia",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "CALLFORWARDING": "Call Forwarding",
-    "DND": "Do not disturb during pause",
-    "UNANSWEREDCALLBADGE": "Show unanswered call badge",
-    "ENABLEDTMFTONE": "Enable Dtmf tones",
-    "AUTOANSWERDELAY": "Auto Answer Delay [s]",
-    "ENCRYPTION": "Encryption",
-    "CHANNELS": "Channels",
-    "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
-    "MONITOREXTENSION": "Record calls to user extension",
-    "EDITPERMISSIONS": "Editing Permissions",
-    "READANDEDIT": "Read, Edit",
-    "READANDEDITANDDELETE": "Read, Edit, Delete",
-    "GENERAL_PERMISSIONS": "General",
-    "ENABLEMESSENGER": "Enable Internal Messenger",
-    "OUTBOUNDPROXY": "Oubound Proxy",
-    "PHONE": "Phone",
-    "MOBILE": "Mobile",
-    "PREFIXREQUIRED": "Prefix Required",
-    "MANAGE_PERMISSIONS": "Manage Permissions",
-    "USERADD_VOICEQUEUES": "Add Voice Queue to User",
-    "ALL_VOICEQUEUES": "All Voice Queues",
-    "SELECTED_VOICEQUEUES": "Selected Voice Queues",
-    "USERADD_CHATQUEUES": "Add Chat Queue to User",
-    "ALL_CHATQUEUES": "All Chat Queues",
-    "SELECTED_CHATQUEUES": "Selected Email Queues",
-    "USERADD_MAILQUEUES": "Add Email Queue to User",
-    "ALL_MAILQUEUES": "All Email Queues",
-    "SELECTED_MAILQUEUES": "Selected Chat Queues",
-    "USERADD_SMSQUEUES": "Add SMS Queue to User",
-    "ALL_SMSQUEUES": "All SMS Queues",
-    "SELECTED_SMSQUEUES": "Selected SMS Queues",
-    "USERADD_FAXQUEUES": "Add Fax Queue to User",
-    "ALL_FAXQUEUES": "All Fax Queues",
-    "SELECTED_FAXQUEUES": "Selected Fax Queues",
-    "USERADD_OPENCHANNELQUEUES": "Add Open Channel Queue to User",
-    "ALL_OPENCHANNELQUEUES": "All Open Channel Queues",
-    "SELECTED_OPENCHANNELQUEUES": "Selected Open Channel Queues",
-    "USERADD_PROJECTS": "Add Cally Square Project to User",
-    "ALL_PROJECTS": "All Cally Square Projects",
-    "SELECTED_PROJECTS": "Selected Cally Square Projects",
-    "USERADD_CHATWEBSITES": "Add Chat Website to User",
-    "ALL_CHATWEBSITES": "All Chat Websites",
-    "SELECTED_CHATWEBSITES": "Selected Chat Websites",
-    "USERADD_QUEUECAMPAIGNS": "Add Queue Campaign to User",
-    "ALL_QUEUECAMPAIGNS": "All Queue Campaigns",
-    "SELECTED_QUEUECAMPAIGNS": "Selected Queue Campaigns",
-    "USERADD_MAILACCOUNTS": "Add Email Account to User",
-    "ALL_MAILACCOUNTS": "All Email Accounts",
-    "SELECTED_MAILACCOUNTS": "Selected Email Accounts",
-    "USERADD_FAXACCOUNTS": "Add Fax Account to User",
-    "ALL_FAXACCOUNTS": "All Fax Accounts",
-    "SELECTED_FAXACCOUNTS": "Selected Fax Accounts",
-    "USERADD_SMSACCOUNTS": "Add SMS Account to User",
-    "ALL_SMSACCOUNTS": "All SMS Accounts",
-    "SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
-    "USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
-    "ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
-    "SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
-    "ADD_USERPROFILE": "Lisage kasutaja profiil",
-    "ALL_WHATSAPP_QUEUES": "Kõik WhatsApi järjekorrad",
+    "CALLFORWARDING": "Kõne Suunamine",
+    "DND": "Ära tülita pausi jooksul",
+    "UNANSWEREDCALLBADGE": "Kuva vastamata kõnede märki",
+    "ENABLEDTMFTONE": "Luba Dtmf toonid",
+    "AUTOANSWERDELAY": "Automaatvastuse Viivitus [s]",
+    "ENCRYPTION": "Krüptimine",
+    "CHANNELS": "Kanalid",
+    "CHAT": "Vestlus",
+    "SMS": "SMS",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Lisa Kasutaja Järjekorra Kampaaniasse",
+    "MONITOREXTENSION": "Sakvesta kõne Kasutaja laiendusse",
+    "EDITPERMISSIONS": "Redigeerimise Luba",
+    "READANDEDIT": "Loe, Redigeeri",
+    "READANDEDITANDDELETE": "Loe, Redigeeri, Kustuta",
+    "GENERAL_PERMISSIONS": "Üldine",
+    "ENABLEMESSENGER": "Luba Sisemine Messenger",
+    "OUTBOUNDPROXY": "Väljuv Puhver",
+    "PHONE": "Telefon",
+    "MOBILE": "Mobiil",
+    "PREFIXREQUIRED": "Eesliide Nõutav",
+    "MANAGE_PERMISSIONS": "Halda Lubasid",
+    "USERADD_VOICEQUEUES": "Lisa Hääle Järjekord Kasutajale",
+    "ALL_VOICEQUEUES": "Kõik Hääle Järjekorrad",
+    "SELECTED_VOICEQUEUES": "Valitud Hääle Järjekorrad",
+    "USERADD_CHATQUEUES": "Lisa Vestluse Järjekord Kasutajale",
+    "ALL_CHATQUEUES": "Kõik Vestluse Järjekorrad",
+    "SELECTED_CHATQUEUES": "Valitud E-maili Järjekorrad",
+    "USERADD_MAILQUEUES": "Lisa E-maili Järjekord Kasutajale",
+    "ALL_MAILQUEUES": "Kõik E-maili Järjekorrad",
+    "SELECTED_MAILQUEUES": "Valitud Vestluse Järjekorrad",
+    "USERADD_SMSQUEUES": "Lisa SMS Järjekord Kasutajale",
+    "ALL_SMSQUEUES": "Kõik SMS Järjekorrad",
+    "SELECTED_SMSQUEUES": "Valitud SMS Järjekorrad",
+    "USERADD_FAXQUEUES": "Lisa Faksi Järjekord Kasutajale",
+    "ALL_FAXQUEUES": "Kõik Faksi Järjekorrad",
+    "SELECTED_FAXQUEUES": "Valitud Faksi Järjekorrad",
+    "USERADD_OPENCHANNELQUEUES": "Lisa Avatud Kanali Järjekord Kasutajale",
+    "ALL_OPENCHANNELQUEUES": "Kõik Avatud Kanali Järjekorrad",
+    "SELECTED_OPENCHANNELQUEUES": "Valitud Avatud Kanali Järjekorrad",
+    "USERADD_PROJECTS": "Lisa Cally Square Projekt Kasutajale",
+    "ALL_PROJECTS": "Kõik Cally Square Projektid",
+    "SELECTED_PROJECTS": "Valitud Cally Square Projektid",
+    "USERADD_CHATWEBSITES": "Lisa Vestluse Veebisait Kasutajale",
+    "ALL_CHATWEBSITES": "Kõik Vestluse Veebisaidid",
+    "SELECTED_CHATWEBSITES": "Valitud Vestluse Veebisaidid",
+    "USERADD_QUEUECAMPAIGNS": "Lisa Järjekorra Kampaania Kasutajale",
+    "ALL_QUEUECAMPAIGNS": "Kõik Järjekorra Kampaaniad",
+    "SELECTED_QUEUECAMPAIGNS": "Valitud Järjekorra Kampaaniad",
+    "USERADD_MAILACCOUNTS": "Lisa E-maili Konto Kasutajale",
+    "ALL_MAILACCOUNTS": "Kõik E-maili Kontod",
+    "SELECTED_MAILACCOUNTS": "Valitud E-maili Kontod",
+    "USERADD_FAXACCOUNTS": "Lisa Faksi Kontod Kasutajale",
+    "ALL_FAXACCOUNTS": "Kõik Faksi Kontod",
+    "SELECTED_FAXACCOUNTS": "Valitud Faksi Kontod",
+    "USERADD_SMSACCOUNTS": "Lisa SMS Konto Kasutajale",
+    "ALL_SMSACCOUNTS": "Kõik SMS Kontod",
+    "SELECTED_SMSACCOUNTS": "Valitud SMS Kontod",
+    "USERADD_OPENCHANNELACCOUNTS": "Lisa Avatud Kanali Konto Kasutajale",
+    "ALL_OPENCHANNELACCOUNTS": "Kõik Avatud Kanali Kontod",
+    "SELECTED_OPENCHANNELACCOUNTS": "Valitud Avatud Kanali Kontod",
+    "ADD_USERPROFILE": "Lisa kasutaja profiil",
+    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
     "ALL_WHATSAPPACCOUNTS": "Kõik WhatsApi kontod",
-    "ALL_WHATSAPPQUEUES": "Kõik Whataspi järjekorrad",
+    "ALL_WHATSAPPQUEUES": "Kõik Whataspi jäjekorrad",
     "APIKEY": "API-võti",
     "APIKEYMANAGER_USER": "API võtmehaldur",
     "BLOCKED": "Lukustatud",
     "CANCEL": "Tühista",
     "CLONE_USERPROFILE": "Kloonide kasutaja profiil",
-    "CLOSE": "Sulge",
-    "CONFIRM": "Kinnitage",
+    "CLOSE": "Sule",
+    "CONFIRM": "Kinnita",
     "CRUDPERMISSIONS": "Loa tüüp",
     "DELETE_PERMISSION": "Kustuta",
     "DELETE_USERPROFILE": "Kustuta kasutaja profiil",
     "ENABLEAUTOMATICSCREENRECORDING": "Luba automaatne ekraanil salvestamine",
     "ENABLESCREENRECORDINGBYAGENT": "Ekraani salvestamise lubamine agendi poolt",
     "ENABLEVIDEOECORDING": "Luba videosalvestus",
-    "GENERATE": "Genereerima",
+    "GENERATE": "Genereeri",
     "MANAGE_API_KEY": "API võtmehaldur",
     "MODULES": "Moodulid",
     "NEW_USERPROFILE": "Uus kasutajaprofiil",
     "PERMISSIONS_SECTION_SHOW": "Kuva jaotis kasutajale",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} õigused",
     "PERMISSIONS_SELECTED_RESOURCES": "Valitud ressursid",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Valige aruande tüüp",
-    "PERMISSIONS_SELECT_SECTION": "Valige jaotis",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Teil pole lubatud ressurssi luua",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Teil pole lubatud valitud sektsiooni juurde pääseda",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Vali aruande tüüp",
+    "PERMISSIONS_SELECT_SECTION": "Vali jaotis",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Pole lubatud ressurssi luua",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Pole lubatud valitud sektsiooni juurde pääseda",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Volitamata tegevus",
     "PERMISSIONS_WARNING_CLOSE": "Teil on salvestamata muudatusi. Kas soovite kindlasti väljuda salvestamata?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Kõik {{sectionName}} alajaotised ja nende ressursid lubatakse. Kas soovite kindlasti jätkata?",
-    "ADD_AGENT_TO_WHATSAPP_QUEUES": "Lisage agent WhatsApp'i järjekorda",
-    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsApp'i järjekorda",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsAppi järjekorda",
+    "QUEUEADD_USER_WHATSAPP_INBOUND": "Lisage kasutaja WhatsAppi järjekorda",
     "QUEUES_ASSOCIATION": "{{channel}} Järjekordade liit",
     "READ_PERMISSION": "Loe",
-    "REGENERATE": "Regenereerige",
+    "REGENERATE": "Regenereeri",
     "REMOVE": "Eemalda",
     "REPORT_TYPE": "Aruande tüüp",
     "SECTIONS": "Sektsioonid",
-    "SELECTED_WHATSAPP_QUEUES": "Valitud WhatsApi järjekorrad",
+    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "SELECTED_WHATSAPPACCOUNTS": "Valitud WhatsApi kontod",
     "SELECTED_WHATSAPPQUEUES": "Valitud WhatsApi järjekorrad",
     "SUMMARY": "Kokkuvõte",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
-    "USERADD_WHATSAPPACCOUNTS": "Lisage kasutajale WhatsApi konto",
-    "USERADD_WHATSAPPQUEUES": "Lisage kasutajale Whataspp Queue",
+    "TEAMS_ASSOCIATION": "Tiimidee liit",
+    "USERADD_WHATSAPPACCOUNTS": "Lisa kasutajale WhatsApi konto",
+    "USERADD_WHATSAPPQUEUES": "Lisa kasutajale WhatasApi Järjekord",
     "USERPROFILE": "Kasutajaprofiil",
     "USERPROFILES": "Kasutajaprofiilid",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPCAPACITY": "WhatsApp-pistiku maht",
-    "MASK_SENSITIVE_DATA": "Maski tundlikud andmed",
+    "WHATSAPP": "WhatsApp ühendus",
+    "WHATSAPPCAPACITY": "WhatsApp ühenduse maht",
+    "MASK_SENSITIVE_DATA": "Maskeeri tundlikud andmed",
     "WSS_PORT": "WSS-port",
     "ATTACHMENTS": "Manused",
     "CALLYSQUARE_RECORDINGS": "Cally Square salvestused",
-    "CONTACT_MANAGER_LISTS": "Kontaktihalduri loendid",
+    "CONTACT_MANAGER_LISTS": "Kontakti Halduri loendid",
     "DOWNLOADS": "Allalaadimised",
     "DOWNLOAD_PERMISSIONS": "Allalaadimisõigused",
     "JSCRIPTY_SESSIONS": "Jscripty seansid",
-    "OMNICHANNEL_INTERACTIONS": "Omikanalilised koostoimed",
+    "OMNICHANNEL_INTERACTIONS": "Mitme kanaliga suhtlused",
     "SCREEN_RECORDINGS": "Ekraanisalvestused",
     "VOICE_RECORDINGS": "Helisalvestised",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Eelvaatekõnede puhul ignoreerige agendi katkestuse olekut",
     "SELECT_RECALLME_CAMPAIGN": "Valige Meenuta mind kampaania",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Add Agent to Queue Campaigns",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Add Agent to Voice Queues",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
-    "ALL_QUEUES_VOICE_OUTBOUND": "All Queue Campaigns",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Selected Queue Campaigns",
-    "ALL_QUEUES_VOICE_INBOUND": "All Voice Queues",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Selected Voice Queues",
-    "ALL_QUEUES_CHAT_INBOUND": "All Chat Queues",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Selected Chat Queues",
-    "ALL_QUEUES_MAIL_INBOUND": "All Email Queues",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
-    "ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
-    "SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
-    "ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
-    "SELECTED_QUEUES_FAX_INBOUND": "Selected Fax Queues",
-    "ALL_QUEUES_WHATSAPP_INBOUND": "Kõik WhatsApi järjekorrad",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisage agent WhatsApp'i järjekorda",
-    "SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitud WhatsApi järjekorrad",
     "AD_SSO_ENABLED": "Active Directory SSO",
     "AUTHENTICATION": "Autentimine",
     "CLIENT_LOGS": "Kliendi logid",
     "CLIENT_LOGS_LOGLEVEL": "Logitase: {{logLevel}}",
     "CLIENT_LOGS_LOGLEVEL_SELECT": "Valige minimaalne logimise tase (raskusaste)",
     "CLIENT_LOGS_DISABLED_MSG": "Kliendilogid on teie kasutaja jaoks keelatud",
-    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud",
-    "AUTO_ANSWER": "Automaatne vastus",
-    "CHAT_AUTOANSWER": "Vestluse automaatne vastus",
-    "CHAT_AUTOANSWERDELAY": "Vestluse automaatse vastuse viivitus [s]",
-    "EMAIL_AUTOANSWER": "Meili automaatne vastus",
-    "EMAIL_AUTOANSWERDELAY": "Meili automaatse vastuse viivitus [s]",
-    "FAX_AUTOANSWER": "Faksi automaatne vastus",
-    "FAX_AUTOANSWERDELAY": "Faksi automaatvastuse viivitus [s]",
-    "OPENCHANNEL_AUTOANSWER": "Openchanneli automaatne vastus",
-    "OPENCHANNEL_AUTOANSWERDELAY": "Avatud kanali automaatvastuse viivitus [s]",
-    "SMS_AUTOANSWER": "Automaatne SMS-vastus",
-    "SMS_AUTOANSWERDELAY": "SMS-i automaatvastuse viivitus [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp automaatne vastus",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapi automaatvastuse viivitus [s]"
+    "CLIENT_LOGS_ENABLED_MSG": "Teie kasutaja jaoks on kliendilogid lubatud"
   }
 }
index 48b85d3..e2ccdbf 100644 (file)
 {
   "TOOLS": {
-    "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clone Trunk",
-    "DISPOSITIONS": "Dispositions",
-    "NEW_DISPOSITION": "New Disposition",
-    "ADD_DISPOSITION": "Add Disposition",
-    "EDIT_DISPOSITION": "Edit Disposition",
-    "DELETE_DISPOSITION": "Delete Disposition",
-    "RUN_SCHEDULE": "Run schedule",
-    "SENDIFEMPTY": "Send if empty",
-    "NEXTCONTACT": "Next",
-    "OUTBOUND_ROUTE": "Outbound Route",
-    "EDIT_DASHBOARDITEM": "Edit Dashboard Widget",
-    "FONTSIZE": "Font Size",
-    "CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+    "BOT": "Häälbot",
+    "CLONE_TRUNK": "Magistraali Kloonimine",
+    "DISPOSITIONS": "Kasutused",
+    "NEW_DISPOSITION": "Uud Kasutus",
+    "ADD_DISPOSITION": "Lisa Kasutus",
+    "EDIT_DISPOSITION": "Redigeeri Kasutust",
+    "DELETE_DISPOSITION": "Kustuta Kasutus",
+    "RUN_SCHEDULE": "Käivita graafik",
+    "SENDIFEMPTY": "Saada, kui on tühi",
+    "NEXTCONTACT": "Järgmine",
+    "OUTBOUND_ROUTE": "Väljuv Teekond",
+    "EDIT_DASHBOARDITEM": "Redigeeri Töölaua Vidinat",
+    "FONTSIZE": "Fonsi Suurus",
+    "CLONE_CUSTOMDASHBOARD": "Klooni Kohandatud Töölud",
     "LINK": "Link [https://]",
-    "BACKGROUND": "Background",
-    "FOREGROUND": "Foreground",
-    "NONE": "None",
-    "TOTAL": "Total",
-    "ABANDONED": "Abandoned",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
-    "ANSWERED": "Answered",
-    "UNMANAGED": "Unmanaged",
-    "CUSTOMTYPE": "Custom [path]",
-    "WEBREPORT": "Web Report",
-    "PIECHART": "Pie Chart",
-    "MULTIBARCHART": "Multibar Chart",
-    "MOVE_WIDGET": "Move Widget",
-    "USERADD_CUSTOMDASHBOARD": "Add User Permissions",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Go to preview dashboard",
-    "METRIC": "Metric",
-    "FILTERVOICEQUEUES": "Filter Voice Queues",
-    "SERIE1": "Serie 1",
-    "SERIE2": "Serie 2",
-    "SERIE3": "Serie 3",
-    "REFRESH": "Refresh [s]",
-    "FORMAT": "Format",
-    "PATH": "Absolute Path",
-    "ALL_USERS": "All Users",
-    "SELECTED_USERS": "Selected Users",
-    "ADD_WIDGET": "Add Widget",
-    "COLOR": "Color",
-    "FAX": "Fax",
-    "INTERACTION": "Interaction",
-    "MESSAGE": "Message",
+    "BACKGROUND": "Taust",
+    "FOREGROUND": "Esiplaan",
+    "NONE": "Pole ühtegi",
+    "TOTAL": "Kokku",
+    "ABANDONED": "Tagasilükatud",
+    "WAITING": "Ootel",
+    "TALKING": "Rääkimine",
+    "ANSWERED": "Vastatud",
+    "UNMANAGED": "Haldamata",
+    "CUSTOMTYPE": "Kohandatud [tee]",
+    "WEBREPORT": "Veebi Raport",
+    "PIECHART": "Sektordiagramm",
+    "MULTIBARCHART": "Tulpdiagramm",
+    "MOVE_WIDGET": "Liiguta Vidinat",
+    "USERADD_CUSTOMDASHBOARD": "Lisa Kasutaja Õigused",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "GOTO_CUSTOMDASHBOARD": "Mine eelvaate töölauale",
+    "METRIC": "Mõõdik",
+    "FILTERVOICEQUEUES": "Filtreeri Hääle Järjekorrad",
+    "SERIE1": "Seeria 1",
+    "SERIE2": "Seeria 2",
+    "SERIE3": "Seeria 3",
+    "REFRESH": "Värskenda [s]",
+    "FORMAT": "Formaat",
+    "PATH": "Absoluutne tee",
+    "ALL_USERS": "Kõik Kasutajad",
+    "SELECTED_USERS": "Valitud Kasutajad",
+    "ADD_WIDGET": "Lisa Vidin",
+    "COLOR": "Värv",
+    "FAX": "Faks",
+    "INTERACTION": "Suhtlus",
+    "MESSAGE": "Sõnum",
     "T38PT_UDPTL": "T38pt Udptl",
-    "CALL": "Call",
-    "NAME": "Name",
-    "TRUNKS": "Trunks",
-    "SEARCH_FOR_ANYONE": "Search",
+    "CALL": "Kõne",
+    "NAME": "Nimi",
+    "TRUNKS": "Magistraalid",
+    "SEARCH_FOR_ANYONE": "Otsi",
     "ERRORS": {
-      "NAME_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "TITLE_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "REFRESH_REQUIRED": "Mandatory field",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "FONTSIZE_REQUIRED": "Mandatory field",
-      "PATH_REQUIRED": "Mandatory field",
-      "FORMAT_REQUIRED": "Mandatory field",
-      "REPORT_REQUIRED": "Mandatory field",
-      "TYPE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "ACCOUNT_REQUIRED": "Mandatory field",
-      "FIELD_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "HOST_REQUIRED": "Mandatory field",
-      "DEFAULTUSER_REQUIRED": "Mandatory field",
-      "CALLERID_REQUIRED": "Mandatory field",
-      "KEY_REQUIRED": "Mandatory field",
-      "CONFIRM_NOT_MATCH": "The Passwords don't match",
-      "VALIDITYSTART_REQUIRED": "Mandatory field",
-      "VALIDITYEND_REQUIRED": "Mandatory field",
-      "MONTHDAY_REQUIRED": "Mandatory field",
-      "HOUR_REQUIRED": "Mandatory field",
-      "CONTENT_REQUIRED": "Mandatory field",
-      "URL_REQUIRED": "Mandatory field",
-      "URL_MUST_VALID_URL": "Wrong format",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "ARGUMENTS_REQUIRED": "Mandatory field",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "POLLING_INTERVAL_REQUIRED": "Mandatory field",
-      "TITLE_REQUIRED": "Mandatory field",
-      "EMAILADDRESS_REQUIRED": "Mandatory field",
-      "EVENTVARIABLES_REQUIRED": "Mandatory field",
-      "INTEGRATION_REQUIRED": "Mandatory field",
-      "LIST_REQUIRED": "Mandatory field",
-      "TEMPLATE_REQUIRED": "Mandatory field",
-      "AUTOCREATECONTACT_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "QUEUE_REQUIRED": "Mandatory field",
-      "TIME_RANGE_TO_REQUIRED": "Mandatory field",
-      "WEEK_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_DAYS_TO_REQUIRED": "Mandatory field",
-      "MONTH_TO_REQUIRED": "Mandatory field",
-      "TIME_RANGE_FROM_INVALID": "Wrong Format",
-      "TIME_RANGE_TO_INVALID": "Wrong Format",
-      "ACTION_REQUIRED": "Mandatory field",
-      "CONFIGURATION_REQUIRED": "Mandatory field",
-      "PROJECT_REQUIRED": "Mandatory field",
-      "LOCATION_REQUIRED": "Mandatory field",
-      "OUTPUT_REQUIRED": "Mandatory field",
-      "REPORTTYPE_REQUIRED": "Mandatory field",
-      "REPORTFOLDER_REQUIRED": "Mandatory field",
-      "REPORTSUBFOLDER_REQUIRED": "Mandatory field",
+      "NAME_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "TITLE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab võrduma {{maks}}",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "REFRESH_REQUIRED": "Kohustuslik väli",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "FONTSIZE_REQUIRED": "Kohustuslik väli",
+      "PATH_REQUIRED": "Kohustuslik väli",
+      "FORMAT_REQUIRED": "Kohustuslik väli",
+      "REPORT_REQUIRED": "Kohustuslik väli",
+      "TYPE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "ACCOUNT_REQUIRED": "Kohustuslik väli",
+      "FIELD_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "HOST_REQUIRED": "Kohustuslik väli",
+      "DEFAULTUSER_REQUIRED": "Kohustuslik väli",
+      "CALLERID_REQUIRED": "Kohustuslik väli",
+      "KEY_REQUIRED": "Kohustuslik väli",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "VALIDITYSTART_REQUIRED": "Kohustuslik väli",
+      "VALIDITYEND_REQUIRED": "Kohustuslik väli",
+      "MONTHDAY_REQUIRED": "Kohustuslik väli",
+      "HOUR_REQUIRED": "Kohustuslik väli",
+      "CONTENT_REQUIRED": "Kohustuslik väli",
+      "URL_REQUIRED": "Kohustuslik väli",
+      "URL_MUST_VALID_URL": "Vale formaat",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "ARGUMENTS_REQUIRED": "Kohustuslik väli",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "POLLING_INTERVAL_REQUIRED": "Kohustuslik väli",
+      "TITLE_REQUIRED": "Kohustuslik väli",
+      "EMAILADDRESS_REQUIRED": "Kohustuslik väli",
+      "EVENTVARIABLES_REQUIRED": "Kohustuslik väli",
+      "INTEGRATION_REQUIRED": "Kohustuslik väli",
+      "LIST_REQUIRED": "Kohustuslik väli",
+      "TEMPLATE_REQUIRED": "Kohustuslik väli",
+      "AUTOCREATECONTACT_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "QUEUE_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_TO_REQUIRED": "Kohustuslik väli",
+      "WEEK_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_DAYS_TO_REQUIRED": "Kohustuslik väli",
+      "MONTH_TO_REQUIRED": "Kohustuslik väli",
+      "TIME_RANGE_FROM_INVALID": "Vale formaat",
+      "TIME_RANGE_TO_INVALID": "Vale formaat",
+      "ACTION_REQUIRED": "Kohustuslik väli",
+      "CONFIGURATION_REQUIRED": "Kohustuslik väli",
+      "PROJECT_REQUIRED": "Kohustuslik väli",
+      "LOCATION_REQUIRED": "Kohustuslik väli",
+      "OUTPUT_REQUIRED": "Kohustuslik väli",
+      "REPORTTYPE_REQUIRED": "Kohustuslik väli",
+      "REPORTFOLDER_REQUIRED": "Kohustuslik väli",
+      "REPORTSUBFOLDER_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "INFO_REQUIRED": "Kohustuslik väli",
       "SCRIPT_REQUIRED": "Kohustuslik väli",
       "IGNOREDIALERCONTACTID_REQUIRED": "Ignoreeri helistaja kontakti ID väli on kohustuslik"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Default User",
-    "DESCRIPTION": "Description",
-    "ADD_TRUNK": "Add Trunk",
+    "SECRET": "Saladus",
+    "DEFAULTUSER": "Vaikimisi Kasutaja",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_TRUNK": "Lisa Magistraal",
     "HELP": {
-      "T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400",
-      "SECRET": "Authentication password",
-      "HOST": "The domain or host name",
-      "DEFAULTUSER": "Authentication username",
-      "CALLERID": "The Caller ID, in the format \"name\" <number>",
-      "REGISTRY": "The registry string, if required by provider, usually defaultuser:secret@host",
-      "FROMDOMAIN": "Set default From:domain in SIP messages when acting as a SIP ua (client). Some destinations may require mandatory identity name instead of only the IP address",
-      "FROMUSER": "How your provider knows you. This is which user to put instead of callerid when placing calls to peer (another SIP proxy). Valid only for type=peer.",
-      "OUTBOUNDPROXY": "IP_address or DNS SRV name (excluding the _sip._udp prefix): SRV name, hostname, or IP address of the outbound SIP Proxy. Send outbound signaling to this proxy, not directly to the devices. Valid only for type=peer.",
-      "PORT": "The SIP port number",
-      "CONTEXT": "The context for the trunk",
-      "TYPE": "Determine the SIP role within asterisk. User: used to authenticate incoming - Peer: for outgoing calls - Friend: covers both characteristics of the above.",
-      "DTMFMODE": "How DTMF (Dual-Tone Multi-Frequency) are sent. RFC2833: the default mode, the DTMF are sent with RTP but outside the audio stream. INBAND: The DTMF is sent in audio stream of the current conversation, becoming audible from the speakers. Requires a high CPU load. INFO: Although this method is very reliable, it is not supported by all PBX devices and many SIP Trunks.",
-      "NAT": "Change the behaviour of Asterisk for clients behind a firewall. If any of the comma-separated options is 'no', Asterisk will ignore any other settings and set nat=no.",
-      "QUALIFY": "Determine when the SIP is achievable",
-      "ALLOWCODECS": "Allowed codecs in order of preference",
-      "INSECURE": "Specify how to handle connections with peer, allowing insecure settings",
-      "CALL_LIMIT": "The limit number of the inbound and outbound concurrent calls",
-      "DIRECTMEDIA": "Asterisk by default tries to redirect the RTP media stream to go directly from the caller to the callee. Some devices do not support this (especially if one of them is behind a NAT). The default setting is YES. If you have all clients behind a NAT, or for some other reason want Asterisk to stay in the audio path, you may want to turn this off.",
-      "CALLCOUNTER": "Enable call counters on devices",
-      "ADD_PHONE_TO_URI": "Define if the provider requires ';user=phone' on URL",
-      "TRUST_REMOTE_PARTY_ID": "Define if Remote-Party-ID should be trusted",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Define if Remote-Party-ID should be sent (defaults is no)",
-      "ENCRYPTION": "Whether to offer SRTP encrypted media (and only SRTP encrypted media) on outgoing calls to a peer. Calls will fail with HANGUPCAUSE=58 if the peer does not support SRTP. Defaults value is No",
-      "TRANSPORT": "Set the default transports, in order of preference",
-      "OTHERFIELDS": "Other fields to add in the trunks conf files. Follow default asterisk format (key=value), each field on a single row",
-      "EMAILADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "EMAILBCCADDRESS": "Add one or multiple addresses separated by commas (e.g. john.doe@xcally.com, jane.miller@xcally.com)",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "EVENTVARIABLES": "If enabled, it adds all the event variables to the url (recommended value=No. Set to Yes only for evaluation purposes) ",
-      "BODY": "If not filled out, the default value will be sent",
+      "T38PT_UDPTL": "Es: jah,liiasus,maxdatagram=400",
+      "SECRET": "Autentimise parool",
+      "HOST": "Domeen või hosti nimi",
+      "DEFAULTUSER": "Autentimise kasutajanimi",
+      "CALLERID": "Helistaja ID, formaadis \"nimi\" <number>",
+      "REGISTRY": "Registri string, kui on teenusepakkuja poolt nõutav, reeglina vaikimisi kasutaja:secret@host",
+      "FROMDOMAIN": "Vaikimisi seatud Kellelt:domeen SIP sõnumites, tegutsedes kui SIP ua (klient). Mõned sihtkohad nõuavad kohustuslikku identiteedinime ainuüksi IP-aadressi asemel",
+      "FROMUSER": "Mille järgi sinu teenusepakkuja sind ära tunneb. How your provider knows you. See tähendab, millist kasutajat sisestada helistaja ID asemel kõnede paigutamisel partnerile (teine SIP puhver). Kehtib ainult tüüp=partner korral.",
+      "OUTBOUNDPROXY": "IP-address või DNS SRV nimi (välja arvatud _sip._udp prefix): SRV nimi, hostinimi, või väljuva SIP puhvri IP-aadress. Saada väljuv signaliseerimine sellele puhvrile, mitte otse seadmetele. Kehtib ainult tüüp=partner korral.",
+      "PORT": "SIP pordi number",
+      "CONTEXT": "Kontekst magistraali jaoks",
+      "TYPE": "Määra SIPi roll asteriskis. Kasutaja: kasutatakse sisenevate autentimiseks - Partner: väljuvatele kõnedele - Sõber: katab mõlemad plaltoodud tunnused.",
+      "DTMFMODE": "Kuidas DTMF (Multisageduslik kakstoonvalimine) saadetakse. RFC2833: vaikimisi režiim, DTMF saadetakse koos RTP-ga, kuid väljaspool helivoogu. INBAND: DTMF saadetakse jooksva vestluse helivoos, mis on kuuldav kõlaritest. Eeldab kõrget CPU laetuse taset. INFO: Ehkki tegemist on väga usaldusväärse meetodiga, ei ole see toetatud kõikide PBX seadmete poolt ja paljude SIP Magistraalide poolt.",
+      "NAT": "Muudab Asteriski käitumise kliendi jaoks tulemüüri taga. Kui mõni komadega eraldatud valikutest on 'ei', Asterisk ignoreerib mistahes muid sätteid ja seadistab nat=no.",
+      "QUALIFY": "Tuvasta, millal on SIP saavutatav",
+      "ALLOWCODECS": "Lubatud koodeks eelistusjärjekorras",
+      "INSECURE": "Täpsusta, kuidas käsitleda ühendusi partneritega, lubades ebaturvalisi sätteid",
+      "CALL_LIMIT": "Sissetulevate ja väljaminevate samaaegsete kõnede piitnumber",
+      "DIRECTMEDIA": "Asterisk proovib vaikimisi ümber suunata RTP meedium voo liikumist otse kutsujalt kutsutavale. Mõned seadmed seda ei toeta (eriti kui üks neist on NATi taga). Vaikimisi seadistus on JAH. Kui sul on kõik kliendid NATi taga, või soovid Asteriski püsimist audio teel mõnel muul põhjusel, siis on soovituslik see välja lülitada.",
+      "CALLCOUNTER": "Aktiveeri seadmetel kõnede loendur",
+      "ADD_PHONE_TO_URI": "Määra, kui teenusepakkuja nõuab ';kasutaja=telefon' URLil",
+      "TRUST_REMOTE_PARTY_ID": "Määra, kui Kaugosaleja ID-d peaks usaldama",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Määra, kui Kaugosaleja ID tuleb saata (vaikimisi on EI)",
+      "ENCRYPTION": "Kas pakkuda SRTP krüpteeritud meediumi (ja üksnes SRTP krüpteeritud meedium) väljuvatele kõnedele partneri jaoks. Kõned nurjuvad HANGUPCAUSE=58, kui partner ei toeta SRTP-d.  Vaikimisi väärtus on Ei",
+      "TRANSPORT": "Seadista vaikimisi transpordid, eelistusjärjekorras",
+      "OTHERFIELDS": "Muud väljad magistraali konf failides lisamiseks. Järgi vaikimisi asteriski formaati (võti=väärtus), iga väli eraldi real",
+      "EMAILADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "EMAILBCCADDRESS": "Lisa üks või mitu aadressi komadega eraldatult (näiteks john.doe@xcally.com, jane.miller@xcally.com)",
+      "NAME": "Ainult numbrid, tähed ja erimärgid (._) on toetatud",
+      "EVENTVARIABLES": "Kui aktiveeritud, lisab see kõik sündmuse muutujad URL-le (soovituslik väärtus=Ei. Määra Jah üksnes hindamise eesmärgil) ",
+      "BODY": "Kui ei ole täidetud, saadetakse vaikeväärtus",
       "HEADERS": "Märkus. Päiste jaotis peab olema RAW JSON-vormingus {\"võti\": \"väärtus\"}\nMärkus: kui seda ei täideta, saadetakse vaikeväärtus",
-      "INFO": "Sisestage pealkiri",
-      "SCRIPT": "Sisestage skript",
-      "SCRIPT_INFO": "Sisestage skripti kirjeldus",
-      "SCRIPT_TYPE": "Sisestage skripti tüpoloogia (nt curl, bash ...)",
-      "TIMEOUT": "Taotle sekundit sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
+      "INFO": "Sisesta pealkiri",
+      "SCRIPT": "Sisesta skript",
+      "SCRIPT_INFO": "Sisesta skripti kirjeldus",
+      "SCRIPT_TYPE": "Sisesta skripti tüpoloogia (nt curl, bash ...)",
+      "TIMEOUT": "Taotle sekundit. Väärtus peab olema vahemikus 1–10 ja vaikeväärtus 5.",
       "MANAGED": "Lõpetatud interaktsioonide koguarv",
       "OPENED": "Aktiivsete interaktsioonide koguarv"
     },
-    "EDIT_TRUNK": "Edit Trunk",
-    "DELETE_TRUNK": "Delete Trunk",
-    "CREATED_AT": "Created At",
-    "SETTINGS": "Settings",
-    "ADVANCED": "Advanced",
-    "OTHER": "Other",
-    "ACTIVE": "Active",
-    "CONTEXT": "Context",
-    "CALLERID": "Caller ID",
-    "TYPE": "Type",
-    "DTMFMODE": "DTMF Mode",
+    "EDIT_TRUNK": "Muuda Magistraali",
+    "DELETE_TRUNK": "Kustuta Magistraal",
+    "CREATED_AT": "Loomisaeg",
+    "SETTINGS": "Sätted",
+    "ADVANCED": "Täpsem",
+    "OTHER": "Muu",
+    "ACTIVE": "Aktiivne",
+    "CONTEXT": "Kontekst",
+    "CALLERID": "Helistaja ID",
+    "TYPE": "Tüüp",
+    "DTMFMODE": "DTMF Režiim",
     "NAT": "NAT",
-    "QUALIFY": "Qualify",
-    "ALLOWCODECS": "Allowed Codecs",
-    "INSECURE": "Insecure",
-    "REGISTRY": "Registry",
-    "DIRECTMEDIA": "Direct Media",
-    "CALLCOUNTER": "Call Counter",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From User",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Add Phone to URL",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Send Remote Party ID Header",
-    "ENCRYPTION": "Encryption",
+    "QUALIFY": "Kvalifitseerima",
+    "ALLOWCODECS": "Lubatud Koodeks",
+    "INSECURE": "Ebaturvaline",
+    "REGISTRY": "Register",
+    "DIRECTMEDIA": "Otsene Meedium",
+    "CALLCOUNTER": "Kõnede Loendur",
+    "FROMDOMAIN": "Domeenilt",
+    "FROMUSER": "Kasutajalt",
+    "OUTBOUNDPROXY": "Väljaminev Puhver",
+    "ADD_PHONE_TO_URI": "Lisa Telefon URLi",
+    "TRUST_REMOTE_PARTY_ID": "Usalda Kaugosaleja ID-d",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Saada Kaugosalejale ID  Päis",
+    "ENCRYPTION": "Krüpteerimine",
     "PORT": "Port",
     "TRANSPORT": "Transport",
-    "SAVE": "Save",
-    "VARIABLES": "Variables",
-    "ADD_VARIABLE": "Add Variable",
-    "EDIT_VARIABLE": "Edit Variable",
-    "DELETE_VARIABLE": "Delete Variable",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "TAGS": "Tags",
-    "ADD_TAG": "Add Tag",
-    "EDIT_TAG": "Edit Tag",
-    "DELETE_TAG": "Delete Tag",
-    "PAUSES": "Pauses",
-    "ADD_PAUSE": "Add Pause",
-    "EDIT_PAUSE": "Edit Pause",
-    "DELETE_PAUSE": "Delete Pause",
-    "CANNEDANSWERS": "Canned Answers",
-    "ADD_CANNEDANSWER": "Add Canned Answer",
-    "EDIT_CANNEDANSWER": "Edit Canned Answer",
-    "DELETE_CANNEDANSWER": "Delete Canned Answer",
-    "KEY": "Key",
-    "VALUE": "Value",
-    "SOUNDS": "Sounds",
-    "EDIT_SOUND": "Edit Sound",
-    "DELETE_SOUND": "Delete Sound",
-    "CANCEL": "Cancel",
-    "FINISH": "Finish",
-    "DROP_TO_UPLOAD": "Drop To Upload",
-    "UPLOADING": "Uploading",
-    "TRIGGERS": "Triggers",
-    "EDIT_TRIGGER": "Edit Trigger",
-    "DELETE_TRIGGER": "Delete Trigger",
-    "ADD_TRIGGER": "Add Trigger",
-    "DELETE": "Delete",
-    "AUTOMATIONS": "Automations",
-    "EDIT_AUTOMATION": "Edit Automation",
-    "DELETE_AUTOMATION": "Delete Automation",
-    "ADD_AUTOMATION": "Add Automation",
-    "INTERVALS": "Intervals",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_INTERVAL": "Delete Interval",
-    "ADD_INTERVAL": "Add Interval",
-    "TOOLS": "Tools",
-    "ID": "Id",
+    "SAVE": "Salvesta",
+    "VARIABLES": "Muutujad",
+    "ADD_VARIABLE": "Lisa Muutuja",
+    "EDIT_VARIABLE": "Redigeeri Muutuja",
+    "DELETE_VARIABLE": "Kustuta Muutuja",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "TAGS": "Sildid",
+    "ADD_TAG": "Lisa Silt",
+    "EDIT_TAG": "Redigeeri Silti",
+    "DELETE_TAG": "Kustuta Silt",
+    "PAUSES": "Pausile",
+    "ADD_PAUSE": "Lisa Paus",
+    "EDIT_PAUSE": "Redigeeri Pausi",
+    "DELETE_PAUSE": "Kustuta Paus",
+    "CANNEDANSWERS": "Salvestatud Vastused",
+    "ADD_CANNEDANSWER": "Lisa Salvestatud Vastus",
+    "EDIT_CANNEDANSWER": "Redigeeri Salvestatud Vastus",
+    "DELETE_CANNEDANSWER": "Kustuta Salvestatud Vastus",
+    "KEY": "Võti",
+    "VALUE": "Väärtus",
+    "SOUNDS": "Helid",
+    "EDIT_SOUND": "Redigeeri Heli",
+    "DELETE_SOUND": "Kustuta Heli",
+    "CANCEL": "Tühista",
+    "FINISH": "Lõpeta",
+    "DROP_TO_UPLOAD": "Kukuta Üleslaadimiseks",
+    "UPLOADING": "Üleslaadimine",
+    "TRIGGERS": "Käivitamised",
+    "EDIT_TRIGGER": "Redigeeri Käivitust",
+    "DELETE_TRIGGER": "Kustuta Käivitus",
+    "ADD_TRIGGER": "Lisa Käivitus",
+    "DELETE": "Kustuta",
+    "AUTOMATIONS": "Automaatika",
+    "EDIT_AUTOMATION": "Redigeeri Automaatikat",
+    "DELETE_AUTOMATION": "Kustuta Automaatika",
+    "ADD_AUTOMATION": "Lisa Automaatika",
+    "INTERVALS": "Intervallid",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_INTERVAL": "Kustuta Intervall",
+    "ADD_INTERVAL": "Lisa Intervall",
+    "TOOLS": "Tööriistad",
+    "ID": "ID",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Sound",
-    "UPLOAD_SOUND": "Tools",
-    "CHANNEL": "Channel",
-    "NEW_TRIGGER": "New Trigger",
-    "GENERAL": "General",
-    "STATUS": "Status",
-    "CONDITIONS&ACTIONS": "Conditions & Actions",
-    "ALLCONDITIONS": "Meet all these conditions:",
-    "ANYCONDITIONS": "Meet any of these conditions:",
-    "ACTIONS": "Actions:",
-    "NEW_AUTOMATION": "New Automation",
-    "TIMEOUT": "Timeout",
-    "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Calls Limit",
-    "OTHERFIELDS": "Other Fields",
-    "NEW_VARIABLE": "New Variable",
-    "NEW_TAG": "New Tag",
-    "NEW_PAUSE": "New Pause",
-    "NEW_CANNEDANSWER": "New Canned Answer",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "NEW_TRUNK": "New Trunk",
-    "FROM": "From",
-    "TO": "To",
-    "WEEKDAY": "Week Day",
-    "MONTHDAY": "Month Day",
-    "MONTH": "Month",
-    "ALWAYS": "Always",
-    "MON": "Monday",
-    "TUE": "Tuesday",
-    "WED": "Wednesday",
-    "THU": "Thursday",
-    "FRI": "Friday",
-    "SAT": "Saturday",
-    "SUN": "Sunday",
-    "JAN": "January",
-    "FEB": "February",
-    "MAR": "March",
-    "APR": "April",
-    "MAY": "May",
-    "JUN": "June",
-    "JUL": "July",
+    "DOWNLOAD_SOUND": "Laadi alla Heli",
+    "UPLOAD_SOUND": "Tööriistad",
+    "CHANNEL": "Kanal",
+    "NEW_TRIGGER": "Uus Käivitus",
+    "GENERAL": "Üldine",
+    "STATUS": "Staatus",
+    "CONDITIONS&ACTIONS": "Tingimused ja Tegevused",
+    "ALLCONDITIONS": "Täida kõik need tingimused:",
+    "ANYCONDITIONS": "Täida mistahes milline neist tingimustest:",
+    "ACTIONS": "Tegevused:",
+    "NEW_AUTOMATION": "Uus Automaatika",
+    "TIMEOUT": "Aegumine",
+    "PEERSTATUS": "Partneri Staatus",
+    "CALL_LIMIT": "Kõnede Limiit",
+    "OTHERFIELDS": "Muud Väljad",
+    "NEW_VARIABLE": "Uus Muutuja",
+    "NEW_TAG": "Uus Silt",
+    "NEW_PAUSE": "Uus Paus",
+    "NEW_CANNEDANSWER": "Uus Salvestatud Vastus",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "NEW_TRUNK": "Uus Magistraal",
+    "FROM": "Kellelt",
+    "TO": "Kellele",
+    "WEEKDAY": "Nädalapäev",
+    "MONTHDAY": "Kuupäev",
+    "MONTH": "Kuu",
+    "ALWAYS": "Alati",
+    "MON": "Esmaspäev",
+    "TUE": "Teisipäev",
+    "WED": "Kolmapäev",
+    "THU": "Neljapäev",
+    "FRI": "Reede",
+    "SAT": "Laupäev",
+    "SUN": "Pühapäev",
+    "JAN": "Jaanuar",
+    "FEB": "Veebruar",
+    "MAR": "Märts",
+    "APR": "Aprill",
+    "MAY": "Mai",
+    "JUN": "Juuni",
+    "JUL": "Juuli",
     "AUG": "August",
     "SEP": "September",
-    "OCT": "October",
+    "OCT": "Oktober",
     "NOV": "November",
-    "DEC": "December",
-    "PASSWORD": "Password",
-    "CUSTOMDASHBOARDS": "Custom Dashboards",
-    "NEW_CUSTOMDASHBOARD": "New Custom Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Add Custom Dashboard",
-    "EDIT_CUSTOMDASHBOARD": "Edit Custom Dashboard",
-    "DELETE_CUSTOMDASHBOARD": "Delete Custom Dashboard",
-    "SCHEDULER": "Scheduler",
-    "NEW_SCHEDULE": "New Schedule",
-    "ADD_SCHEDULE": "Add Schedule",
-    "EDIT_SCHEDULE": "Edit Schedule",
-    "DELETE_SCHEDULE": "Delete Schedule",
-    "SENDMAIL": "Send Email",
-    "CONFIGURATION": "Configuration",
-    "MAIL": "Email",
-    "REPORTTYPE": "Report Type",
-    "REPORT": "Report",
-    "OUTPUT": "Output",
-    "EXECUTEON": "Execute On",
-    "REPORTRANGE": "Report Range",
-    "VALIDITYSTART": "Start Time",
-    "VALIDITYEND": "End Time",
-    "EXECUTEEVERY": "Execute every",
-    "ACCOUNT": "Account",
-    "EMAILADDRESS": "Email Address",
-    "EMAILCCADDRESS": "Cc",
-    "EMAILBCCADDRESS": "Bcc",
-    "CURRENTDAY": "Current Day",
-    "DAILY": "Daily",
-    "WEEKLY": "Weekly",
-    "MONTHLY": "Monthly",
-    "PREVIOUS_DAY": "Previous Day",
-    "LAST_SEVEN_DAYS": "Last Seven Days",
-    "LAST_THIRTY_DAYS": "Last Thirthy Days",
-    "LAST_MONTH": "Last Month",
-    "WEEKDAYS": "Week Days",
-    "HOUR": "Hour",
-    "DEFAULT": "Default",
+    "DEC": "Detsember",
+    "PASSWORD": "Parool",
+    "CUSTOMDASHBOARDS": "Kohandatud Töölaud",
+    "NEW_CUSTOMDASHBOARD": "Uus Kohandatud Töölaud",
+    "ADD_CUSTOMDASHBOARD": "Lisa Kohandatud Töölaud",
+    "EDIT_CUSTOMDASHBOARD": "Redigeeri Kohandatud Töölauda",
+    "DELETE_CUSTOMDASHBOARD": "Kustuta Kohandatud Töölaud",
+    "SCHEDULER": "Plaanija",
+    "NEW_SCHEDULE": "Uus Plaanija",
+    "ADD_SCHEDULE": "Lisa Plaanija",
+    "EDIT_SCHEDULE": "Redigeeri Plaanijat",
+    "DELETE_SCHEDULE": "Kustuta Plaanija",
+    "SENDMAIL": "Saada E-mail",
+    "CONFIGURATION": "Konfiguratsioon",
+    "MAIL": "E-mail",
+    "REPORTTYPE": "Rapordi Tüüp",
+    "REPORT": "Raport",
+    "OUTPUT": "Väljund",
+    "EXECUTEON": "Käivita",
+    "REPORTRANGE": "Rapordi Vahemik",
+    "VALIDITYSTART": "Alguse Aeg",
+    "VALIDITYEND": "Lõpu Aeg",
+    "EXECUTEEVERY": "Täida iga",
+    "ACCOUNT": "Konto",
+    "EMAILADDRESS": "E-maili aadress",
+    "EMAILCCADDRESS": "Koopia",
+    "EMAILBCCADDRESS": "Salakoopia",
+    "CURRENTDAY": "Jooksev Päev",
+    "DAILY": "Igapäevane",
+    "WEEKLY": "Iganädalane",
+    "MONTHLY": "Igakuine",
+    "PREVIOUS_DAY": "Eemine päev",
+    "LAST_SEVEN_DAYS": "Viimased Seitse Päev",
+    "LAST_THIRTY_DAYS": "Viimased Kolmkümmend Päeva",
+    "LAST_MONTH": "Viimane Kuu",
+    "WEEKDAYS": "Nädalapäevad",
+    "HOUR": "Tund",
+    "DEFAULT": "Vaikimisi",
     "CSV": "CSV",
     "PDF": "PDF",
-    "15MIN": "15 minutes",
-    "30MIN": "30 minutes",
-    "1H": "1 hour",
-    "VOICE": "Voice",
-    "CHAT": "Chat",
+    "15MIN": "15 minutit",
+    "30MIN": "30 minutit",
+    "1H": "1 tund",
+    "VOICE": "Hääl",
+    "CHAT": "Vestlus",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "TEMPLATES": "Templates",
-    "EDIT_TEMPLATE": "Edit Template",
-    "DELETE_TEMPLATE": "Delete Template",
-    "NEW_TEMPLATE": "New Template",
-    "ADD_TEMPLATE": "Add Template",
-    "CONTENT": "Content",
-    "FIELD": "Field",
-    "NO_ANYCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ALLCONDITION_AVAILABLE": "No Conditions available",
-    "NO_ACTION_AVAILABLE": "No Actions available",
-    "ACTION": "Action",
-    "EDIT_ANYCONDITION": "Edit Condition",
-    "DELETE_ANYCONDITION": "Delete Condition",
-    "NEW_ANYCONDITION": "New Condition",
-    "ADD_ANYCONDITION": "Add Condition",
-    "EDIT_ALLCONDITION": "Edit Condition",
-    "DELETE_ALLCONDITION": "Delete Condition",
-    "NEW_ALLCONDITION": "New Condition",
-    "ADD_ALLCONDITION": "Add Condition",
-    "EDIT_ACTION": "Edit Action",
-    "DELETE_ACTION": "Delete Action",
-    "NEW_ACTION": "New Action",
-    "ADD_ACTION": "Add Action",
-    "QUEUE": "Queue",
-    "CALL_STATUS": "Call Status",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "EQUALS": "Equals",
-    "NOT_EQUALS": "Not Equals",
-    "CONTACT_MANAGER": "Contacts Manager",
-    "INTEGRATIONS": "Integrations",
-    "MOTIONBAR": "Motion Bar",
+    "OPENCHANNEL": "Ava Kanal",
+    "TEMPLATES": "Mallid",
+    "EDIT_TEMPLATE": "Redigeeri Malli",
+    "DELETE_TEMPLATE": "Kustuta Mall",
+    "NEW_TEMPLATE": "Uus Mall",
+    "ADD_TEMPLATE": "Lisa Mall",
+    "CONTENT": "Sisu",
+    "FIELD": "Väli",
+    "NO_ANYCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ALLCONDITION_AVAILABLE": "Tingimusi pole saadaval",
+    "NO_ACTION_AVAILABLE": "Tegevusi pole saadaval",
+    "ACTION": "Tegevus",
+    "EDIT_ANYCONDITION": "Redigeeri Tingimust",
+    "DELETE_ANYCONDITION": "Kustuta Tingimus",
+    "NEW_ANYCONDITION": "Uus Tingimus",
+    "ADD_ANYCONDITION": "Lisa Tingimus",
+    "EDIT_ALLCONDITION": "Redigeeri Tingimust",
+    "DELETE_ALLCONDITION": "Kustuta Tingimus",
+    "NEW_ALLCONDITION": "Uus Tingimus",
+    "ADD_ALLCONDITION": "Lisa Tingimus",
+    "EDIT_ACTION": "Redigeeri Tegevust",
+    "DELETE_ACTION": "Kustuta Tegevus",
+    "NEW_ACTION": "Uus Tegevus",
+    "ADD_ACTION": "Lisa Tegevus",
+    "QUEUE": "Järjekord",
+    "CALL_STATUS": "Kõne Staatus",
+    "OUTBOUNDROUTE": "Väljaminev Tee",
+    "EQUALS": "Võrduvad",
+    "NOT_EQUALS": "Ei Võrdu",
+    "CONTACT_MANAGER": "Kontaktide Haldur",
+    "INTEGRATIONS": "Integratsioonid",
+    "MOTIONBAR": "Liikumisriba",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL Forward",
-    "WEB_POPUP": "Web Popup",
-    "LIST": "List",
-    "INTEGRATION": "Integration",
-    "TEMPLATE": "Template",
+    "URL_FORWARD": "URL Edastamine",
+    "WEB_POPUP": "Veebi Hüpik",
+    "LIST": "Loend",
+    "INTEGRATION": "Integratsioon",
+    "TEMPLATE": "Mall",
     "URL": "URL",
-    "APPLICATION": "Application",
+    "APPLICATION": "Rakendus",
     "ARGUMENTS": "Arguments",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "NEW_INTERVAL": "New Interval",
-    "OPERATOR": "Operator",
-    "NO_INTERVALS_AVAILABLE": "No intervals available",
-    "YES": "Yes",
-    "NO": "No",
-    "SUBJECT": "Subject",
-    "NO_AVAILABLE_INFO": "No available info",
-    "BROWSER": "Browser",
-    "INTERVAL": "Interval",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "NEW_INTERVAL": "Uus Intervall",
+    "OPERATOR": "Operaator",
+    "NO_INTERVALS_AVAILABLE": "Intervallid pole saadaval",
+    "YES": "Jah",
+    "NO": "Ei",
+    "SUBJECT": "Teema",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "BROWSER": "Brauser",
+    "INTERVAL": "Intervall",
     "INFO": "Info",
-    "TIME_RANGE": "Time Range",
-    "WEEK_DAYS": "Week Days",
-    "MONTH_DAYS": "Month Days",
-    "MONTHS": "Months",
-    "DROP_TO_UPLOAD_MESSAGE": "Drop audio files here to upload. Only MP3, WAV, GSM - Max. 15MB",
-    "POLLING_INTERVAL": "Polling Interval (seconds)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "New Dashboard Widget",
-    "COUNTER": "Counter",
+    "TIME_RANGE": "Ajavahemik",
+    "WEEK_DAYS": "Nädalapäevad",
+    "MONTH_DAYS": "Kuupäevad",
+    "MONTHS": "Kuud",
+    "DROP_TO_UPLOAD_MESSAGE": "Kukuta audiofailid siia üleslaadimiseks. Ainulty MP3, WAV, GSM - Maks. 15MB",
+    "POLLING_INTERVAL": "Küsitlemise Intervall (sekundid)",
+    "DASHBOARD": "Töölaud",
+    "NEW_DASHBOARDITEM": "Uus Töölaua Vidin",
+    "COUNTER": "Loendur",
     "IFRAME": "IFrame",
-    "CLOCK": "Clock",
-    "ADD_DASHBOARDITEM": "Add Dashboard Widget",
-    "EDIT_WIDGET": "Edit Widget",
-    "DELETE_WIDGET": "Delete Widget",
-    "FLIP_WIDGET": "Flip Widget",
-    "TITLE": "Title",
-    "UPDATE": "Update",
-    "LAYOUT": "Layout",
-    "BACKGROUND_COLOR": "Background Color",
-    "FOREGROUND_COLOR": "Foreground Color",
-    "FOREGROUND_TITLE_COLOR": "Foreground Title Color",
-    "THEME": "Theme",
-    "LIGHT": "Light",
-    "DARK": "Dark",
-    "TIMEZONE": "TimeZone",
-    "DIGITAL_FORMAT": "Digital Date Format",
-    "TOOLS_QUERY": "Query",
-    "SELECT": "Select",
-    "WHERE": "Where",
-    "BACK": "Back",
-    "PROJECT": "Project",
-    "GOTOREALTIME_TRUNK": "Go To Realtime Trunk",
-    "GOTO_TRUNK": "Go To Trunk",
+    "CLOCK": "Kell",
+    "ADD_DASHBOARDITEM": "Lisa Töölaua Vidin",
+    "EDIT_WIDGET": "Redigeeri Vidinat",
+    "DELETE_WIDGET": "Kustuta Vidin",
+    "FLIP_WIDGET": "Pööra Vidinat",
+    "TITLE": "Pealkiri",
+    "UPDATE": "Uuenda",
+    "LAYOUT": "Paigutus",
+    "BACKGROUND_COLOR": "Taustavärv",
+    "FOREGROUND_COLOR": "Esiplaani Värv",
+    "FOREGROUND_TITLE_COLOR": "Esiplaani Pealkirja Värv",
+    "THEME": "Teema",
+    "LIGHT": "Hele",
+    "DARK": "Tume",
+    "TIMEZONE": "Ajavöönd",
+    "DIGITAL_FORMAT": "Numbriline Kuupäeva Formaat",
+    "TOOLS_QUERY": "Päring",
+    "SELECT": "Vali",
+    "WHERE": "Kus",
+    "BACK": "Tagasi",
+    "PROJECT": "Projekt",
+    "GOTOREALTIME_TRUNK": "Mine Reaalaja Magistraali",
+    "GOTO_TRUNK": "Mine Magistraali",
     "CRON": "Cron",
-    "MINUTES": "Minutes",
-    "HOURLY": "Hourly",
-    "YEARLY": "Yearly",
-    "EVERY": "Every",
-    "MINUTE": "Minute",
-    "ON_SECOND": "On second",
-    "HOUR_ON_MINUTE": "Hour on minute",
-    "AND_SECOND": "And second",
+    "MINUTES": "Minutid",
+    "HOURLY": "Igatunnine",
+    "YEARLY": "Iga-aastane",
+    "EVERY": "Iga",
+    "MINUTE": "Minut",
+    "ON_SECOND": "Teisel",
+    "HOUR_ON_MINUTE": "Tund minutil",
+    "AND_SECOND": "Ja teine",
     "DAY_AT": "Day at",
-    "START_TIME": "Start Time",
+    "START_TIME": "Algusaeg",
     "ON_THE": "On the",
     "OF_EVERY": "Of every",
     "MONTH_AT": "Month at",
     "AT": "At",
-    "LAST": "Last",
-    "LASTUNIT": "Unit",
-    "MAILACCOUNT": "Email Account",
+    "LAST": "Eelmine",
+    "LASTUNIT": "Üksus",
+    "MAILACCOUNT": "E-maili Konto",
     "OF": "of",
-    "PAST_THE_HOUR": "Past the hour",
-    "DAY": "Day",
-    "WEEK": "Week",
-    "YEAR": "Year",
+    "PAST_THE_HOUR": "Üle täistunni",
+    "DAY": "Päev",
+    "WEEK": "Nädal",
+    "YEAR": "Aasta",
     "ON": "On",
-    "PAI": "P-Asserted-Identity",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
-    "EVENTVARIABLES": "Event Variables",
-    "AUTOCREATECONTACT": "Create contact automatically",
-    "LOCATION": "Location",
-    "NEW_TAB": "New Tab",
-    "NEW_WINDOW": "New Window",
-    "WINDOWWIDTH": "Window Width(px)",
-    "WINDOWHEIGHT": "Window Height(px)",
-    "BODY": "Body",
-    "REPORTFOLDER": "Report Folder",
-    "REPORTSUBFOLDER": "Report Subfolder",
+    "PAI": "P-Tõendatud-Identiteet",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
+    "EVENTVARIABLES": "Sündmuse Muutujad",
+    "AUTOCREATECONTACT": "Loo kontakt automaatselt",
+    "LOCATION": "Asukoht",
+    "NEW_TAB": "Uus Vahekaart",
+    "NEW_WINDOW": "Uus Aken",
+    "WINDOWWIDTH": "Akna Laius(px)",
+    "WINDOWHEIGHT": "kna Kõrgus(px)",
+    "BODY": "Sisu",
+    "REPORTFOLDER": "Rapordi Kaust",
+    "REPORTSUBFOLDER": "Rapordi Alamkaust",
     "AGENT": "Agent",
     "HEADERS": "Päised",
     "MOTION_TAB": "Uus esindaja juhtpaneeli vahekaart",
     "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Tüüp",
     "VIDEOSUPPORT": "Video tugi",
-    "WHATSAPP": "WhatsApp-pistik",
+    "WHATSAPP": "WhatsApp-ühendus",
     "AUTOCREATE_FIELD": "Automaatne välja loomine",
-    "GLOBALS": "Globaalid",
+    "GLOBALS": "Üldised",
     "SEARCH_FIELDS": "Otsinguväljad",
     "STANDARD": "Standard",
-    "MOTION_BAR": "Motion Bar",
+    "MOTION_BAR": "Liikumisriba",
     "ALL": "Kõik",
-    "ALL_DISPOSITIONS": "Kõik dispositsioonid",
-    "FIRST_LEVEL_DISPOSITION": "Esimese taseme käsutus",
+    "ALL_DISPOSITIONS": "Kõik kasutused",
+    "FIRST_LEVEL_DISPOSITION": "Esimese taseme kasutus",
     "LEVEL": "Tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "SELECT_LEVEL": "Valige tase",
     "TITLEFONTSIZE": "Fondi pealkirja suurus",
-    "ADD_CONTACTITEMTYPE": "Lisama",
-    "CONTACTITEMTYPE": "Kontaktüksuste tüübid",
-    "NEW_CONTACTITEMTYPE": "Uus kontaktüksuse tüüp",
-    "ORDER_BY": "Telli",
-    "RGBBACKGROUNDCOLOR": "RGB taustavärv",
     "EMAIL": "E -post",
     "FILTERCHATWEBSITES": "Filtreeri vestluse veebisaite",
     "FILTEREMAILACCOUNTS": "E -posti kontode filtreerimine",
     "OPENED_TEXT": "Avatud interaktsioonid",
     "IGNOREDIALERCONTACTID": "Ignoreeri helistaja kontakti ID",
     "MAIL_SUBSTATUS": "Meili alamolek",
-    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum",
-    "DELETE_CONTACTITEMTYPE": "Kustuta kontaktiüksuse tüüp",
-    "EDIT_CONTACTITEMTYPE": "Redigeerige kontaktiüksuse tüüpi",
-    "ORDER_BY_NUMERIC": "Järjestus välja järgi peab olema numbriline!"
+    "OFFLINE_MESSAGE": "Võrguühenduseta sõnum"
   }
 }
index 116fbad..3b220a5 100644 (file)
     "CLOSEDAT": "Salvestage lõpuaeg",
     "CREATEDAT": "Loodud kell",
     "DELETE": "Kustuta",
-    "DELETE_SCREENRECORDING": "Kustutage ekraanisalvestus",
-    "DOWNLOAD_SCREENRECORDING": "Laadige alla ekraanisalvestus",
+    "DELETE_SCREENRECORDING": "Kustuta ekraanisalvestus",
+    "DOWNLOAD_SCREENRECORDING": "Laadi alla ekraanisalvestus",
     "DURATION": "Kestus",
     "EDIT_SCREENRECORDING": "Hinda ekraani salvestust",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "FORMAT": "Vorming",
-    "ID": "Id",
-    "INTERACTIONID": "Koostoime ID",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
+    "ID": "ID",
+    "INTERACTIONID": "Suhtluse ID",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
     "NO_RATING": "Hinnang puudub",
-    "OF": "kohta",
-    "PAGE": "Leht",
+    "OF": "of",
+    "PAGE": "Lehekülg",
     "PLAY_SCREENRECORDING": "Esita ekraanisalvestus",
-    "PROPERTIES": "Omadused",
+    "PROPERTIES": "Atribuudid",
     "RATING": "Hinnang",
-    "RECORDENDTIME": "Salvestage lõpuaeg",
-    "RECORDSTARTTIME": "Salvestage algusaeg",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECORDENDTIME": "Salvesta lõpuaeg",
+    "RECORDSTARTTIME": "Salvesta algusaeg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDINGS": "Ekraanisalvestused",
     "SEARCH_FOR_ANYONE": "Otsing",
-    "STARTEDAT": "Salvestage algusaeg",
+    "STARTEDAT": "Salvesta algusaeg",
     "UPDATEDAT": "Viimane uuendus",
     "VIDEO": "Video",
     "WRONG_EXTENSION": "Failis on vale laiend"
index e8fc04a..fe28adb 100644 (file)
 {
   "VOICE": {
-    "LOGIN_TIME": "Login time",
-    "PAUSE_TIME": "Pause time",
-    "ABANDONEDCALLS": "Abandoned Queue Calls",
-    "WAITING_FOR_AGENTS": "Waiting for agents",
-    "ACTIVE": "Active",
-    "NO_AGENT_ONLINE": "No Agent Online",
-    "PARTIALPAUSE": "Partial Pause",
-    "STATUS": "Status",
-    "TIMER": "Timer",
-    "ALL": "All",
-    "IDLE": "Idle",
-    "EDIT_TRUNK": "Edit Trunk",
-    "GOTO_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "GOTOREALTIME_VOICEQUEUE": "Go To Realtime Voice Queues",
-    "NAME": "Name",
-    "LOGOUT": "Logout",
-    "VOICEQUEUES": "Voice Queues",
-    "SEARCH_FOR_ANYONE": "Search",
-    "BACK": "Back",
-    "SELECTED": "Selected",
-    "SELECT_ALL": "Select All",
-    "SELECT_NONE": "Select None",
-    "DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-    "EDIT_VOICEQUEUE": "Edit Voice Queue",
-    "DELETE_VOICEQUEUE": "Delete Voice Queue",
-    "MOHSOUNDS": "Moh Sounds",
-    "STRATEGY": "Strategy",
-    "DESCRIPTION": "Description",
-    "ADD_VOICEQUEUE": "Add Voice Queue",
-    "CREATED_AT": "Created At",
-    "CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
-    "APPLICATIONS_LIST": "Applications List",
+    "LOGIN_TIME": "Sisselogimise aeg",
+    "PAUSE_TIME": "Pausi aeg",
+    "ABANDONEDCALLS": "Tagasilükatud Järjekorra Kõned",
+    "WAITING_FOR_AGENTS": "Agendi ootel",
+    "ACTIVE": "Aktiivne",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "PARTIALPAUSE": "Osaline Paus",
+    "STATUS": "Staatus",
+    "TIMER": "Taimer",
+    "ALL": "Kõik",
+    "IDLE": "Jõude",
+    "EDIT_TRUNK": "Redigeeri Magistraal",
+    "GOTO_VOICEQUEUE": "Mine Reaalaja Hääle Järjekorda",
+    "GOTOREALTIME_VOICEQUEUE": "Mine Reaalaja Hääle Järjekordadesse",
+    "NAME": "Nimi",
+    "LOGOUT": "Logi välja",
+    "VOICEQUEUES": "Hääle Järjekorrad",
+    "SEARCH_FOR_ANYONE": "Otsi",
+    "BACK": "Tagasi",
+    "SELECTED": "Valitud",
+    "SELECT_ALL": "Vali Kõik",
+    "SELECT_NONE": "Ära Vali Ühtegi",
+    "DELETE_VOICEDISPOSITION": "Kustuta Hääle Kasutus",
+    "EDIT_VOICEDISPOSITION": "Redigeeri Hääle Kasutust",
+    "EDIT_VOICEQUEUE": "Redigeeri Hääle Järjekorda",
+    "DELETE_VOICEQUEUE": "Kustuta Hääle Järjekord",
+    "MOHSOUNDS": "Moh Helid",
+    "STRATEGY": "Strateegia",
+    "DESCRIPTION": "Kirjeldus",
+    "ADD_VOICEQUEUE": "Lisa Hääle Järjekord",
+    "CREATED_AT": "Loomisaeg",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Ei saa esitada gsm või wav49 audiofaile",
+    "APPLICATIONS_LIST": "Rakenduste Loend",
     "LEGEND": {
-      "CUSTOM_APPLICATION": "(*) - Custom application"
+      "CUSTOM_APPLICATION": "(*) - Kohandatud rakendus"
     },
     "ERRORS": {
-      "TRUNK_REQUIRED": "Mandatory field",
-      "VARIABLE_REQUIRED": "Mandatory field",
-      "NAME_REQUIRED": "Mandatory field",
-      "APPLICATION_NAME_REQUIRED": "Mandatory field",
-      "TIMEOUT_REQUIRED": "Mandatory field",
-      "PHONENUMBER_REQUIRED": "Mandatory field",
-      "CONTEXT_REQUIRED": "Mandatory field",
-      "DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-      "FULLNAME_REQUIRED": "Mandatory field",
-      "EMAIL_REQUIRED": "Mandatory field",
-      "EMAIL_MUST_VALID": "Wrong format",
-      "MAILBOX_REQUIRED": "Mandatory field",
-      "PASSWORD_REQUIRED": "Mandatory field",
+      "TRUNK_REQUIRED": "Kohustuslik väli",
+      "VARIABLE_REQUIRED": "Kohustuslik väli",
+      "NAME_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_NAME_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_REQUIRED": "Kohustuslik väli",
+      "PHONENUMBER_REQUIRED": "Kohustuslik väli",
+      "CONTEXT_REQUIRED": "Kohustuslik väli",
+      "DESTINATIONPATTERN_REQUIRED": "Kohustuslik väli",
+      "FULLNAME_REQUIRED": "Kohustuslik väli",
+      "EMAIL_REQUIRED": "Kohustuslik väli",
+      "EMAIL_MUST_VALID": "Vale formaat",
+      "MAILBOX_REQUIRED": "Kohustuslik väli",
+      "PASSWORD_REQUIRED": "Kohustuslik väli",
       "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "TIMEZONE_REQUIRED": "Mandatory field",
-      "PREFIX_REQUIRED": "Mandatory field",
-      "OPTIONS_REQUIRED": "Mandatory field",
-      "AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-      "PHONE_REQUIRED": "Mandatory field",
-      "VALUE_REQUIRED": "Mandatory field",
-      "EXTENSION_REQUIRED": "Mandatory field",
-      "PRIORITY_REQUIRED": "Mandatory field",
-      "APPLICATION_REQUIRED": "Mandatory field",
-      "OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-      "NAME_MUST_VALID_PATTERN": "Wrong format",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-      "CALLER_ID_MUST_VALID_PATTERN": "Wrong format",
+      "TIMEZONE_REQUIRED": "Kohustuslik väli",
+      "PREFIX_REQUIRED": "Kohustuslik väli",
+      "OPTIONS_REQUIRED": "Kohustuslik väli",
+      "AFTERCALLWORKDURATION_REQUIRED": "Kohustuslik väli",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Kohustuslik väli",
+      "PHONE_REQUIRED": "Kohustuslik väli",
+      "VALUE_REQUIRED": "Kohustuslik väli",
+      "EXTENSION_REQUIRED": "Kohustuslik väli",
+      "PRIORITY_REQUIRED": "Kohustuslik väli",
+      "APPLICATION_REQUIRED": "Kohustuslik väli",
+      "OUTBOUNDROUTE_REQUIRED": "Kohustuslik väli",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+      "NAME_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Vale formaat",
+      "CALLER_ID_MUST_VALID_PATTERN": "Vale formaat",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "PROJECT_REQUIRED": "Kohustuslik väli",
-      "PENALTY_REQUIRED": "Peate määrama karistuse väärtuse"
+      "PENALTY_REQUIRED": "Tuleb määrata karistuse väärtus"
     },
-    "GENERAL": "General",
-    "TIMEOUT": "Timeout",
-    "MAXLENGTH": "Maximum Length",
-    "RETRY": "Retry",
-    "WRAPUPTIME": "Wrapup Time",
-    "WEIGHT": "Weight",
-    "JOINWHENEMPTY": "Join when empty",
-    "LEAVEWHENEMPTY": "Leave when empty",
+    "GENERAL": "Üldine",
+    "TIMEOUT": "Aegumine",
+    "MAXLENGTH": "Maksimaalne Pikkus",
+    "RETRY": "Proovi uuesti",
+    "WRAPUPTIME": "Lõpetamise Aeg",
+    "WEIGHT": "Kaal",
+    "JOINWHENEMPTY": "Ühine, kui on tühi",
+    "LEAVEWHENEMPTY": "Lahku, kui on tühi",
     "HELP": {
-      "TIMEOUT": "How many seconds to ring a device",
-      "MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-      "RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-      "WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-      "WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-      "JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-      "LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-      "ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-      "MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-      "PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-      "ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-      "AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-      "MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-      "MUSICONHOLD": "Sets the music class to use for a particular queue",
-      "ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-      "RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-      "ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-      "ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-      "REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-      "PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-      "HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-      "YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-      "THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-      "WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-      "MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-      "MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-      "SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-      "THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-      "AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-      "AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-      "RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-      "TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-      "CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-      "SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-      "SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-      "SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-      "RECORDING": "Enable call recording",
-      "VOICEMAIL_CONTEXT": "The context of the relative extension",
-      "NAME": "Only numbers, letters and specific characters (._) are supported",
-      "CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-      "CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
+      "TIMEOUT": "Mitu sekundit seadmele helistamiseks",
+      "MAXLENGTH": "Järjekorras ootamiseks lubatud maksimaalne helistajate arv: null tähendab piiramatu",
+      "RETRY": "Aeg sekundites ootamiseks, enne teisele agendile helistamist järjekorras, kui vaheaeg on läbi saanud",
+      "WRAPUPTIME": "Aeg sekundites, et hoida järjekorra osaline kättesaamatuna pärast kõne lõpetamist",
+      "WEIGHT": "Järjekorra kaal, et määrata prioriteet, kui liikmed on seotud mitmete järjekordadega",
+      "JOINWHENEMPTY": "Kasutatakse, et kontrollida, kas helistaja on edastatud järjekorda, kui kättesaadavaid liikmeid pole",
+      "LEAVEWHENEMPTY": "Kasutatakse, et kontrollida, kas helistajad on suunatud järjekorrast lahkuma, kui kõnele vastamiseks kättesaadavaid liikmeid pole",
+      "ANNOUNCEFREQUENCY": "Kui sageli teavitada helistaja positsiooni ja/või hinnangulist ooteaega järjekorras(null blokeerimiseks)",
+      "MINANNOUNCEFREQUENCY": "Minimaalne teavituste sagedus (kasulik, kui helistaja positsioon muutub sageli)",
+      "PERIODICANNOUNCEFREQUENCY": "Helistaja perioodiliste teavituste sagedus",
+      "ANNOUNCEPOSITIONLIMIT": "Kasutatakse, kui teavituse positsiooni on määratud, kui 'piir' või 'rohkem'",
+      "AFTERCALLWORKDURATION": "Pausi pikkus, mida käivitab Kõnele Järgnev Töö valik",
+      "MEMBERDELAY": "Sisestab viivituse enne kui helistaja ja agent ühendust saavad järjekorras",
+      "MUSICONHOLD": "Seadistab muusika klassi kindla järjekorra puhul kasutamiseks",
+      "ANNOUNCETOAGENT": "Esita teavitus agendile, kes vastab kõnele (reeglina, et teavitada teda, millisest järjekorrast helistaja tuleb)",
+      "RANDOMPERIODICANNOUNCE": "Kui jah, siis esitatakse määratud perioodilised teavitused juhuslikult",
+      "ANNOUNCEHOLDTIME": "Esitab hinnangulise ooteaja koos perioodiliste teavitustega (Jah/Ei/Üks kord)",
+      "ANNOUNCECALLERPOSITION": "Kasutatakse, et määrata, kas helistaja positsioonist järjekorras tuleb teada anda: Ei=mitte kunagi; Jah=alati; Piir=ainult kui see on piiri raames, mis on määratud teavituse-positsiooni-piiriga; Rohkem= ainult kui see on väljaspool väärtust, mis on määratud teavituse-positsiooni-piiriga",
+      "REPORTHOLDTIMEAGENT": "Lubab helistaja ooteaja teavitamist agendile järjekorras enne ühendamist",
+      "PERIODICANNOUNCE": "Perioodiliste teavituste kompleks esitamiseks (järjekorras)",
+      "HOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOoteaeg”. Määramata=teavitust pole",
+      "YOUARENEXTANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cOled nüüd järjekorras esimene”. Määramata=teavitust pole.",
+      "THEREAREANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cThere are”. Määramata=teavitust pole",
+      "WAITINGCALLSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9ckõneootel”. Määramata=teavitust pole",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cJooksev hinnanguline ooteaeg on”. Määramata=teavitust pole",
+      "MINUTESANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutit”. Määramata=teavitust pole",
+      "MINUTEANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cminutit”. Määramata=teavitust pole",
+      "SECONDSANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9csekundit”. Määramata=teavitust pole",
+      "THANKYOUANNOUNCE": "Vali Tööriistades määratud Heli. Vaikimisi=ā€\9cTäname Teid kannatlikkuse eest”. Määramata=teavitust pole",
+      "AFTERCALLWORK": "Kui lubatud, määratakse agent Pausile pärast kõne lõpetamist",
+      "AUTOPAUSE": "Lubab/keelab automaatse pausi agentidele, kelle kõnele vastamine nurjub. Kui lubatud, siis pannakse agent pausile kõikides järjekordades, kuhu ta kuulub.",
+      "RINGINUSE": "Vältimaks/lubamaks kõnede saatmist liikmetele, kelle staatus on Kasutusel",
+      "TIMEOUTRESTART": "Kui jah, lähtestab agendi vastamise augumist, kui HÕIVATUD või UMMIKU staatus kanalist saadakse",
+      "CONTEXT": "Lubab helistajal väljuda järjekorrast vajutades üks kord DTMF numbrimärki. Kui kontekst on täpsustatud ja helistaja sisestab numbri, püütakse seda numbrit sobitada täpsustatud kontekstiga, ning valimisplaani täitmine jätkub sealt",
+      "SETINTERFACEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs)",
+      "SETQUEUEVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga ja järjekorrast lahkumist (täpsema info saamiseks vata wiki docs",
+      "SETQUEUEENTRYVARIABLES": "Kui on seadistatud jah, seadistatakse mõned muutujad just enne helistaja ühendamist järjekorra agendiga (täpsema info saamiseks vata wiki docs",
+      "RECORDING": "Luba kõne salvestamine",
+      "VOICEMAIL_CONTEXT": "Seotud laienduse kontekst",
+      "NAME": "ja erimärgid (._) on toetatud",
+      "CALLERIDALL": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "CALLER_ID": "Toetatud formaat: \"HelistajaID\" &lt;number&gt;",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausil olek, et seadistada kohustusliku kasutuse aega",
       "SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)",
       "MONITORFORMAT": "Määrab salvestusfaili vormingu. Kui see on seatud passiivseks, siis kõnesid ei salvestata",
       "SAVE_ROUTES": "Marsruuti on muudetud. Ärge unustage salvestada, kui te ei soovi oma muudatusi kaotada."
     },
-    "MUSICONHOLD": "Music On Hold",
-    "ANNOUNCETOAGENT": "Announce To Agent",
-    "ANNOUNCEMENTS": "Announcements",
-    "ADVANCED": "Advanced",
-    "ANNOUNCEFREQUENCY": "Announce Frequency",
-    "MINANNOUNCEFREQUENCY": "Minimum Announce Frequency",
-    "PERIODICANNOUNCEFREQUENCY": "Periodic Announce Frequency",
-    "RANDOMPERIODICANNOUNCE": "Random Periodic Announce",
-    "ANNOUNCEHOLDTIME": "Announce Hold Time",
-    "ANNOUNCECALLERPOSITION": "Announce Caller Position",
-    "ANNOUNCEPOSITIONLIMIT": "Announce Position Limit",
-    "REPORTHOLDTIMEAGENT": "Report Agent Hold Time",
-    "PERIODICANNOUNCE": "Periodic Announce",
-    "HOLDTIMEANNOUNCE": "Hold Time Announce",
-    "YOUARENEXTANNOUNCE": "'You are next' Announce",
-    "THEREAREANNOUNCE": "'There are' Announce",
-    "WAITINGCALLSANNOUNCE": "Waiting Calls Announce",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Estimated Hold Time Announce",
-    "MINUTESANNOUNCE": "Minutes Announce",
-    "MINUTEANNOUNCE": "Minute Announce",
-    "SECONDSANNOUNCE": "Seconds Announce",
-    "THANKYOUANNOUNCE": "'Thank You' Announce",
-    "AUTOPAUSE": "Auto Pause",
-    "AFTERCALLWORK": "After Call Work",
-    "AFTERCALLWORKDURATION": "After Call Work Duration",
-    "RINGINUSE": "Ring In Use",
-    "MEMBERDELAY": "Member Delay",
-    "TIMEOUTRESTART": "Timeout Restart",
-    "MONITORFORMAT": "Recording Format",
-    "SETINTERFACEVARIABLES": "Set Interface Variables",
-    "SETQUEUEVARIABLES": "Set Queue Variables",
-    "SETQUEUEENTRYVARIABLES": "Set Queue Entry Variables",
-    "VARIABLE": "Variable",
-    "CONTEXT": "Context",
-    "SAVE": "Save",
-    "SETTINGS": "Settings",
-    "INBOUNDROUTES": "Inbound Routes",
-    "PHONENUMBER": "Phone Number",
-    "ADD_INBOUNDROUTE": "Add Inbound Route",
-    "EDIT_INBOUNDROUTE": "Edit Inbound Route",
-    "DELETE_INBOUNDROUTE": "Delete Inbound Route",
-    "ACTIONS": "Actions",
-    "OUTBOUNDROUTES": "Outbound Routes",
-    "DESTINATIONPATTERN": "Destination Pattern",
-    "ADD_OUTBOUNDROUTE": "Add Outbound Route",
-    "EDIT_OUTBOUNDROUTE": "Edit Outbound Route",
-    "DELETE_OUTBOUNDROUTE": "Delete Outbound Route",
-    "CUTDIGITS": "Cut Digits",
-    "RECORDING": "Recording",
-    "RECORDINGFORMAT": "Recording format",
-    "INTERNALROUTES": "Internal Routes",
-    "ADD_INTERNALROUTE": "Add Internal Route",
-    "EDIT_INTERNALROUTE": "Edit Internal Route",
-    "DELETE_INTERNALROUTE": "Delete Internal Route",
-    "CONTEXTS": "Contexts",
-    "ADD_CONTEXT": "Add Context",
-    "EDIT_CONTEXT": "Edit Context",
-    "DELETE_CONTEXT": "Delete Context",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Add Voicemail",
-    "EDIT_VOICEMAIL": "Edit Voicemail",
-    "DELETE_VOICEMAIL": "Delete Voicemail",
-    "FULLNAME": "Full Name",
-    "EMAIL": "Email",
-    "MAILBOX": "Mailbox",
-    "PASSWORD": "Password",
-    "CONFIRM_PASSWORD": "Confirm Password",
-    "TIMEZONE": "Timezone",
-    "ATTACH": "Attach",
-    "ENVELOPE": "Envelope",
-    "DELETE": "Delete",
-    "EMAILBODY": "Email Body",
-    "EMAILSUBJECT": "Email Subject",
-    "MAXSECONDS": "Max Seconds",
-    "MAXMESSAGES": "Max Messages",
-    "MESSAGES": "Messages",
-    "SORT": "Sort",
-    "ADD_MUSICONHOLD": "Add Music On Hold",
-    "MUSICONHOLDS": "Music On Hold",
-    "EDIT_MUSICONHOLD": "Edit Music On Hold",
-    "DELETE_MUSICONHOLD": "Delete Music On Hold",
-    "DIRECTORY": "Directory",
-    "AUDIOFILES": "Audio Files",
-    "RECORDINGS": "Recordings",
+    "MUSICONHOLD": "Muusika Ooteajal",
+    "ANNOUNCETOAGENT": "Teavita Agenti",
+    "ANNOUNCEMENTS": "Teavitused",
+    "ADVANCED": "Täpsem",
+    "ANNOUNCEFREQUENCY": "Teavituse Sagedus",
+    "MINANNOUNCEFREQUENCY": "Minimaalne Teavituse Sagedus",
+    "PERIODICANNOUNCEFREQUENCY": "Perioodiline Teavitamise Sagedus",
+    "RANDOMPERIODICANNOUNCE": "Juhuslik Perioodiline Teavitus",
+    "ANNOUNCEHOLDTIME": "Teavita Ooteaeg",
+    "ANNOUNCECALLERPOSITION": "Teavita Helistaja Positsioon",
+    "ANNOUNCEPOSITIONLIMIT": "Teavita Positsiooni Piir",
+    "REPORTHOLDTIMEAGENT": "Anna teada Agendi Ooteaeg",
+    "PERIODICANNOUNCE": "Perioodiline Teavitus",
+    "HOLDTIMEANNOUNCE": "Ooteaja Teavitus",
+    "YOUARENEXTANNOUNCE": "'Olete järgmine' Teavitus",
+    "THEREAREANNOUNCE": "'Seal on' Teavitus",
+    "WAITINGCALLSANNOUNCE": "Ootel Kõnede Teavitus",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Hinnangulise OOteaja Teavitus",
+    "MINUTESANNOUNCE": "Minutite Teavitus",
+    "MINUTEANNOUNCE": "Minuti Teavitus",
+    "SECONDSANNOUNCE": "Sekundite Teavitus",
+    "THANKYOUANNOUNCE": "'Täname Teid' Teavitus",
+    "AUTOPAUSE": "Automaatne Paus",
+    "AFTERCALLWORK": "Tööjärgne Kõne",
+    "AFTERCALLWORKDURATION": "Tööjärgse Kõne Kestus",
+    "RINGINUSE": "Helin Kasutusel",
+    "MEMBERDELAY": "Osalise Viivitus",
+    "TIMEOUTRESTART": "Aegumise Lähtestamine",
+    "MONITORFORMAT": "Salvestamise Formaat",
+    "SETINTERFACEVARIABLES": "Seadista Liidese Muutujad",
+    "SETQUEUEVARIABLES": "Seadista Järjekorra Muutujad",
+    "SETQUEUEENTRYVARIABLES": "Seadista Järjekorra Kirje Muutujad",
+    "VARIABLE": "Muutuja",
+    "CONTEXT": "Kontekst",
+    "SAVE": "Salvesta",
+    "SETTINGS": "Sätted",
+    "INBOUNDROUTES": "Sissetulevad Teed",
+    "PHONENUMBER": "Telefoninumber",
+    "ADD_INBOUNDROUTE": "Lisa Sissetulev Tee",
+    "EDIT_INBOUNDROUTE": "Redigeeri Sissetulev Tee",
+    "DELETE_INBOUNDROUTE": "Kustuta Sissetulev Tee",
+    "ACTIONS": "Tegevused",
+    "OUTBOUNDROUTES": "Väljaminevad Teed",
+    "DESTINATIONPATTERN": "Sihtkoha Muster",
+    "ADD_OUTBOUNDROUTE": "Lisa Väljaminev Tee",
+    "EDIT_OUTBOUNDROUTE": "Redigeeri Väljaminev Tee",
+    "DELETE_OUTBOUNDROUTE": "Kustuta Väljaminev Tee",
+    "CUTDIGITS": "Eemalda Numbrid",
+    "RECORDING": "Salvestamine",
+    "RECORDINGFORMAT": "Salvestamise formaat",
+    "INTERNALROUTES": "Sisemised Teed",
+    "ADD_INTERNALROUTE": "Lisa Sisemine Tee",
+    "EDIT_INTERNALROUTE": "Redigeeri Sisemine Tee",
+    "DELETE_INTERNALROUTE": "Kustuta Sisemine Tee",
+    "CONTEXTS": "Kontekstid",
+    "ADD_CONTEXT": "Lisa Kontekst",
+    "EDIT_CONTEXT": "Redigeeri Konteksti",
+    "DELETE_CONTEXT": "Kustuta Kontekst",
+    "VOICEMAILS": "Kõnepostid",
+    "ADD_VOICEMAIL": "Lisa Kõnepost",
+    "EDIT_VOICEMAIL": "Redigeeri Kõneposti",
+    "DELETE_VOICEMAIL": "Kustuta Kõnepost",
+    "FULLNAME": "Täisnimi",
+    "EMAIL": "E-mail",
+    "MAILBOX": "Postkast",
+    "PASSWORD": "Parool",
+    "CONFIRM_PASSWORD": "Kinnita Parool",
+    "TIMEZONE": "Ajavöönd",
+    "ATTACH": "Lisa",
+    "ENVELOPE": "Ümbrik",
+    "DELETE": "Kustuta",
+    "EMAILBODY": "E-maili Sisu",
+    "EMAILSUBJECT": "E-maili Teema",
+    "MAXSECONDS": "Maks Sekundeid",
+    "MAXMESSAGES": "Maks Sõnumeid",
+    "MESSAGES": "Sõnumid",
+    "SORT": "Sordi",
+    "ADD_MUSICONHOLD": "Lisa Ootemuusika",
+    "MUSICONHOLDS": "Ootemuusika",
+    "EDIT_MUSICONHOLD": "Redigeeri Ootemuusikat",
+    "DELETE_MUSICONHOLD": "Kustuta Ootemuusika",
+    "DIRECTORY": "Kataloog",
+    "AUDIOFILES": "Audiofailid",
+    "RECORDINGS": "Salvestused",
     "CHANSPY": "ChanSpy",
-    "PREFIX": "Prefix",
-    "OPTIONS": "Options",
-    "AUTH": "Auth",
-    "ADD_CHANSPY": "Add ChanSpy",
-    "EDIT_CHANSPY": "Edit ChanSpy",
-    "DELETE_CHANSPY": "Delete ChanSpy",
-    "AGENTS": "Agents",
-    "TELEPHONES": "Telephones",
-    "QUEUES": "Queues",
-    "QUEUE_CALLS": "Queue Calls",
-    "QUEUE_PARAMETERS": "Queue Parameters",
-    "ABANDONED_CALLS": "Abandoned Calls",
-    "OUTBOUND_CALLS": "Outbound Calls",
+    "PREFIX": "Eesliide",
+    "OPTIONS": "Valikud",
+    "AUTH": "Autentimine",
+    "ADD_CHANSPY": "Lisa ChanSpy",
+    "EDIT_CHANSPY": "Redigeeri ChanSpy",
+    "DELETE_CHANSPY": "Kustuta ChanSpy",
+    "AGENTS": "Agendid",
+    "TELEPHONES": "Telefonid",
+    "QUEUES": "Järjekorrad",
+    "QUEUE_CALLS": "Järjekorra Kõned",
+    "QUEUE_PARAMETERS": "Järjekorra Parameetrid",
+    "ABANDONED_CALLS": "Tagasilükatud Kõned",
+    "OUTBOUND_CALLS": "Väljuvad Kõned",
     "AGI": "Agi",
-    "DIAL": "Dial",
+    "DIAL": "Valimine",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Internal Dial",
-    "EXTERNALDIAL": "External Dial",
-    "RINGGROUP": "Ring Group",
-    "PLAYBACK": "Playback",
-    "QUEUE": "Queue",
-    "SET": "Set",
-    "VOICEMAIL": "Voicemail",
+    "INTERNALDIAL": "Sisemine Valimine",
+    "EXTERNALDIAL": "Välimine Valimine",
+    "RINGGROUP": "Helistamise Grupp",
+    "PLAYBACK": "Taasesitus",
+    "QUEUE": "Järjekord",
+    "SET": "Määra",
+    "VOICEMAIL": "Häälkõne",
     "GOTO": "GoTo",
-    "HANGUP": "Hangup",
-    "CUSTOM": "Custom",
-    "PROJECT": "Cally-Square Project",
-    "TECHNOLOGY/RESOURCE": "Technology/Resource",
+    "HANGUP": "Katkestamine",
+    "CUSTOM": "Kohandatud",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Tehnoloogia/Ressurss",
     "URL": "URL",
-    "EDIT_APP": "Edit Application",
-    "EDIT_INTERVAL": "Edit Interval",
-    "DELETE_APP": "Delete Application",
-    "INTERVALS": "Intervals",
-    "USER": "User",
-    "TRUNK": "Trunk",
-    "PHONE": "Phone",
-    "AUDIO_FILES": "Audio Files",
-    "ANNOUNCE_OVERRIDES": "Announce Overrides",
-    "MACRO": "Macro",
+    "EDIT_APP": "Redigeeri Rakendust",
+    "EDIT_INTERVAL": "Redigeeri Intervalli",
+    "DELETE_APP": "Kustuta Rakendus",
+    "INTERVALS": "Intervallid",
+    "USER": "Kasutaja",
+    "TRUNK": "Magistraal",
+    "PHONE": "Telefon",
+    "AUDIO_FILES": "Audiofailid",
+    "ANNOUNCE_OVERRIDES": "Teavituse Tühistamine",
+    "MACRO": "Makro",
     "GOSUB": "GoSub",
-    "RULE": "Rule",
-    "POSITION": "Position",
-    "ANSWER": "Answer",
-    "VALUE": "Value",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Extension",
-    "PRIORITY": "Priority",
-    "HANGUP_CAUSE": "Hangup Cause",
-    "OUTBOUNDDIAL": "Outbound Dial",
-    "CALLER_ID": "Caller ID",
-    "NO_MESSAGE_AVAILABLE": "No messages available",
-    "NO_SOUND_AVAILABLE": "No sounds available",
-    "VOICERECORDINGS": "Voice Recordings",
+    "RULE": "Reegel",
+    "POSITION": "Positsioon",
+    "ANSWER": "Vastus",
+    "VALUE": "Väärtus",
+    "MAILBOX@CONTEXT": "Postkast ja Kontekst",
+    "EXTENSION": "Laiendus",
+    "PRIORITY": "Prioriteet",
+    "HANGUP_CAUSE": "Katkestamise Põhjus",
+    "OUTBOUNDDIAL": "Väljaminev Valimine",
+    "CALLER_ID": "Helistaja ID",
+    "NO_MESSAGE_AVAILABLE": "Sõnumeid pole saadaval",
+    "NO_SOUND_AVAILABLE": "Helisid pole saadaval",
+    "VOICERECORDINGS": "Häälsalvestused",
     "CHANSPIES": "ChanSpy",
-    "VOICE": "Voice",
-    "REALTIME": "Realtime",
-    "ID": "Id",
-    "VOICEMAIL_CONTEXT": "Context",
-    "NO_MOHSOUND_AVAILABLE": "No Music On Hold available",
-    "FILE": "File",
-    "ADD_MOHSOUND": "Add Music On Hold sound",
-    "DOWNLOAD_MOHSOUND": "Download Music On Hold sound",
-    "DELETE_MOHSOUND": "Delete Music On Hold sound",
-    "UNIQUEID": "Unique ID",
+    "VOICE": "Hääl",
+    "REALTIME": "Reaalaeg",
+    "ID": "ID",
+    "VOICEMAIL_CONTEXT": "Kontekst",
+    "NO_MOHSOUND_AVAILABLE": "Ooteaja Muusika pole saadaval",
+    "FILE": "Fail",
+    "ADD_MOHSOUND": "Lisa Ootemuusika heli",
+    "DOWNLOAD_MOHSOUND": "Laadi alla Ootemuusika heli",
+    "DELETE_MOHSOUND": "Kustuta Ootemuusika heli",
+    "UNIQUEID": "Unikaalne ID",
     "AGENT": "Agent",
-    "TYPE": "Type",
-    "RATING": "Rating",
+    "TYPE": "Tüüp",
+    "RATING": "Hinnang",
     "AUDIO": "Audio",
-    "DATE": "Date",
-    "NEW_VOICEQUEUE": "New Voice Queue",
-    "NEW_INBOUNDROUTE": "New Inbound Route",
-    "NEW_OUTBOUNDROUTE": "New Outbound Route",
-    "NEW_INTERNALROUTE": "New Internal Route",
-    "NEW_CONTEXT": "New Context",
-    "NEW_VOICEMAIL": "New Voicemail",
-    "NEW_MUSICONHOLD": "New Music On Hold",
-    "NEW_CHANSPY": "New ChanSpy",
-    "PENALTY": "Penalty",
-    "ADD_TEAM_TO_VOICEQUEUE": "Add Team to Voice Queue",
-    "ADD_AGENT_TO_VOICEQUEUE": "Add Agent to Voice Queue",
-    "EDIT_DIAL": "Edit Dial",
-    "EDIT_AGI": "Edit AGI",
-    "EDIT_INTERNALDIAL": "Edit Internal Dial",
-    "EDIT_EXTERNALDIAL": "Edit External Dial",
-    "EDIT_RINGGROUP": "Edit Ring Group",
-    "EDIT_PLAYBACK": "Edit Playback",
-    "EDIT_QUEUE": "Edit Queue",
-    "EDIT_SET": "Edit Set",
-    "EDIT_GOTO": "Edit GoTo",
-    "EDIT_HANGUP": "Edit Hangup",
-    "EDIT_CUSTOM": "Edit Custom",
-    "DURATION": "Duration",
-    "RECEIVED_AT": "Received At",
-    "YES": "Yes",
-    "NO": "No",
-    "HANGUPCAUSE_1": "1 = Unallocated number",
-    "HANGUPCAUSE_16": "16 = Normal call clearing",
-    "HANGUPCAUSE_17": "17 = User busy",
-    "HANGUPCAUSE_18": "18 = No user responding (telehone device not connected)",
-    "HANGUPCAUSE_21": "21 = Call rejected",
-    "HANGUPCAUSE_22": "22 = Number changed",
-    "HANGUPCAUSE_27": "27 = Destination out of order",
-    "HANGUPCAUSE_38": "38 = Network out of order",
-    "HANGUPCAUSE_41": "41 = Temporary failure",
-    "RANDOM": "Random",
-    "ALPHABETICAL": "Alphabetical",
-    "NO_APPS_AVAILABLE": "No applications available",
-    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
-    "DELETE_VOICERECORDING": "Delete Voice Recording",
-    "INTERNAL": "Internal",
-    "PHONE_STATE": "Phone State",
-    "PHONE_STATUS": "Phone Status",
-    "TRUNK_STATUS": "Trunk Status",
-    "REGISTERED": "Registered",
-    "UNREGISTERED": "Unregistered",
-    "LAGGED": "Lagged",
-    "REACHABLE": "Reachable",
-    "UNREACHABLE": "Unreachable",
-    "UNKNOWN": "Unknown",
-    "NOT_INUSE": "Not In Use",
-    "INUSE": "In Use",
-    "BUSY": "Busy",
-    "INVALID": "Invalid",
-    "UNAVAILABLE": "Unavailable",
-    "RINGING": "Ringing",
-    "ONHOLD": "On Hold",
-    "RING": "Ring",
-    "UP": "Up",
+    "DATE": "Kuupäev",
+    "NEW_VOICEQUEUE": "Uus Hääle Järjekord",
+    "NEW_INBOUNDROUTE": "Uus Sissetulev Tee",
+    "NEW_OUTBOUNDROUTE": "Uus Väljaminev Tee",
+    "NEW_INTERNALROUTE": "Uus Sisemine Tee",
+    "NEW_CONTEXT": "Uus Kontekst",
+    "NEW_VOICEMAIL": "Uus Kõnepost",
+    "NEW_MUSICONHOLD": "Uus Ootemuusika",
+    "NEW_CHANSPY": "Uus ChanSpy",
+    "PENALTY": "Trahv",
+    "ADD_TEAM_TO_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "ADD_AGENT_TO_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "EDIT_DIAL": "Redigeeri Valimist",
+    "EDIT_AGI": "Redigeeri AGI",
+    "EDIT_INTERNALDIAL": "Redigeeri Sisemist Valimist",
+    "EDIT_EXTERNALDIAL": "Redigeeri Välimist Valimist",
+    "EDIT_RINGGROUP": "Redigeeri Helistamise Gruppi",
+    "EDIT_PLAYBACK": "Redigeeri Taasesitust",
+    "EDIT_QUEUE": "Redigeeri Järjekorda",
+    "EDIT_SET": "Redigeeri Määramist",
+    "EDIT_GOTO": "Redigeeri GoTo",
+    "EDIT_HANGUP": "Redigeeri Katkestamist",
+    "EDIT_CUSTOM": "Redigeeri Kohandatud",
+    "DURATION": "Kestus",
+    "RECEIVED_AT": "Kättesaamise aeg",
+    "YES": "Jah",
+    "NO": "Ei",
+    "HANGUPCAUSE_1": "1 = Määramata number",
+    "HANGUPCAUSE_16": "16 = Normaalne kõne puhastamine",
+    "HANGUPCAUSE_17": "17 = Kasutaja hõivatud",
+    "HANGUPCAUSE_18": "18 = Kasutaja ei vasta (telefoniseade pole ühendatud)",
+    "HANGUPCAUSE_21": "21 = Kõne tagasilükatud",
+    "HANGUPCAUSE_22": "22 = Number muudetud",
+    "HANGUPCAUSE_27": "27 = Sihtkoht ei toimi",
+    "HANGUPCAUSE_38": "38 = Võrk ei toimi",
+    "HANGUPCAUSE_41": "41 = Ajutine nurjumine",
+    "RANDOM": "Juhuslik",
+    "ALPHABETICAL": "Tähestikuline",
+    "NO_APPS_AVAILABLE": "Rakendusi pole saadaval",
+    "DOWNLOAD_VOICERECORDING": "Laadi alla Häälsalvestus",
+    "DELETE_VOICERECORDING": "Kustuta Häälsalvestus",
+    "INTERNAL": "Sisemine",
+    "PHONE_STATE": "Telefoni Olek",
+    "PHONE_STATUS": "Telefoni Staatus",
+    "TRUNK_STATUS": "Magistraali Staatus",
+    "REGISTERED": "Registreeritud",
+    "UNREGISTERED": "Registreerimata",
+    "LAGGED": "Viivitatud",
+    "REACHABLE": "Kättesaadav",
+    "UNREACHABLE": "Pole kättesaadav",
+    "UNKNOWN": "Teadmata",
+    "NOT_INUSE": "Pole Kasutusel",
+    "INUSE": "Kasutusel",
+    "BUSY": "Hõivatud",
+    "INVALID": "Kehtetu",
+    "UNAVAILABLE": "Pole kättesaadav",
+    "RINGING": "Heliseb",
+    "ONHOLD": "Ootel",
+    "RING": "Helista",
+    "UP": "Üles",
     "INFO": "Info",
-    "TRUNKS": "Trunks",
-    "REGISTRY": "Registry",
-    "NO_REGISTRY": "No Registry",
-    "LOGGED_IN": "Logged In (SIP Connected)",
-    "PAUSED": "Paused",
-    "WAITING": "Waiting",
-    "TALKING": "Talking",
+    "TRUNKS": "Magistraalid",
+    "REGISTRY": "Register",
+    "NO_REGISTRY": "Register puudub",
+    "LOGGED_IN": "Sisse logitud (SIP Ühendusega)",
+    "PAUSED": "Pausil",
+    "WAITING": "OOtel",
+    "TALKING": "Rääkimine",
     "DID": "DID",
-    "CALLER": "Caller",
-    "TOTAL": "Total",
-    "ANSWERED": "Answered",
-    "ABANDONED": "Abandoned",
-    "UNMANAGED": "Unmanaged",
-    "AVG_HOLD_TIME": "Avg Hold Time",
-    "AVG_DURATION": "Av Duration",
-    "AVG_BILLABLE": "Avg Billable",
-    "SOURCE": "Source",
-    "DESTINATION": "Destination",
-    "REJECTED": "Rejected",
-    "FAILED": "Failed",
-    "CALLED": "Called",
-    "CONNECTED": "Connected",
-    "NO_RATING": "No rating",
-    "EDIT_VOICERECORDING": "Edit Voice Recording",
-    "APPLICATION_NAME": "Application Name",
-    "ARGUMENTS": "Arguments",
-    "NO_AVAILABLE_INFO": "No Available Info",
-    "ADD_AGENT_TO_QUEUE": "Add Agent To Queue",
-    "DEFAULT_PAUSE": "DEFAULT PAUSE",
-    "PAUSE": "Pause",
-    "UNPAUSE": "End Pause",
-    "REDIRECT_TO_NUMBER": "Redirect To Number",
-    "REDIRECT_TO_AGENT": "Redirect To Agent",
-    "AGENTADD_VOICEQUEUE": "Add Agent To Voice Queue",
-    "APPLICATION": "Application",
-    "FILES": "Files",
-    "FORMAT": "Format",
-    "MODE": "Mode",
-    "RECORD": "Record",
-    "TEAMADD_VOICEQUEUE": "Add Team To Voice Queue",
-    "NEW_MOHSOUND": "New Music On Hold sound",
-    "DOWNLOAD_MESSAGE": "Download",
-    "DELETE_MESSAGE": "Delete",
-    "QUEUE_PARAMS": "Queue Parameters",
-    "TOTAL_OFFERED": "Total Offered",
-    "READY": "Ready",
-    "AGENTADD_QUEUE": "Add Agent To Voice Queue",
-    "AGENTSADD_QUEUE": "Add Agents To Voice Queue",
-    "ALL_TEAMS": "All Teams",
-    "SELECTED_TEAMS": "Selected Teams",
-    "ALL_AGENTS": "All Agents",
-    "SELECTED_AGENTS": "Selected Agents",
-    "CLOSING": "Closing",
-    "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Waiting For Agents",
-    "EDIT_OUTBOUNDDIAL": "Edit Outbound Dial",
-    "ACCOUNTNAME": "Account Name",
-    "PAGE": "Page",
-    "ROWSPERPAGE": "Rows per page",
+    "CALLER": "Helistaja",
+    "TOTAL": "Kokku",
+    "ANSWERED": "Vastatud",
+    "ABANDONED": "Tagasi lükatud",
+    "UNMANAGED": "Haldamata",
+    "AVG_HOLD_TIME": "Avg Ooteaeg",
+    "AVG_DURATION": "Avg Kestus",
+    "AVG_BILLABLE": "Avg Arveldatav",
+    "SOURCE": "Allikas",
+    "DESTINATION": "Sihtkoht",
+    "REJECTED": "Katkestatud",
+    "FAILED": "Nurjunud",
+    "CALLED": "Helistatud",
+    "CONNECTED": "Ühendatud",
+    "NO_RATING": "Hinnang puudub",
+    "EDIT_VOICERECORDING": "Redigeeri Häälsalvestust",
+    "APPLICATION_NAME": "Rakenduse nimi",
+    "ARGUMENTS": "Argumendid",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "ADD_AGENT_TO_QUEUE": "Lisa Agent Järjekorda",
+    "DEFAULT_PAUSE": "VAIKIMISI PAUS",
+    "PAUSE": "Pausile",
+    "UNPAUSE": "Lõpeta Paus",
+    "REDIRECT_TO_NUMBER": "Suuna ümber Numbrile",
+    "REDIRECT_TO_AGENT": "Suuna ümber Agendile",
+    "AGENTADD_VOICEQUEUE": "Lisa Agent Hääle Järjekorda",
+    "APPLICATION": "Rakendus",
+    "FILES": "Failid",
+    "FORMAT": "Formaat",
+    "MODE": "Režiim",
+    "RECORD": "Kirje",
+    "TEAMADD_VOICEQUEUE": "Lisa Tiim Hääle Järjekorda",
+    "NEW_MOHSOUND": "Uus Ootemuusika heli",
+    "DOWNLOAD_MESSAGE": "Allalaadimine",
+    "DELETE_MESSAGE": "Kustuta",
+    "QUEUE_PARAMS": "Järjekorra Parameetrid",
+    "TOTAL_OFFERED": "Kokku Pakutud",
+    "READY": "Valmis",
+    "AGENTADD_QUEUE": "Lisa Agent Hääle Järjekorda",
+    "AGENTSADD_QUEUE": "Lisa Agents Hääle Järjekorda",
+    "ALL_TEAMS": "Kõik Tiimid",
+    "SELECTED_TEAMS": "Valitud Tiimid",
+    "ALL_AGENTS": "Kõik Agendid",
+    "SELECTED_AGENTS": "Valitud Agendid",
+    "CLOSING": "Sulgemine",
+    "TAGS": "Sildid",
+    "WAITING_FOR_AGENT": "Agentide Ootamine",
+    "EDIT_OUTBOUNDDIAL": "Redigeeri Väljuvat Valimist",
+    "ACCOUNTNAME": "Konto Nimi",
+    "PAGE": "Lehekülg",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "OF": "of",
-    "DISPOSITION": "Disposition",
-    "CHAT": "Chat",
-    "MAIL": "Email",
+    "DISPOSITION": "Kasutus",
+    "CHAT": "Vestlus",
+    "MAIL": "E-mail",
     "SMS": "SMS",
-    "OPENCHANNEL": "Open Channel",
-    "FAX": "Fax",
-    "CLEAR": "Clear",
-    "CALLS": "Calls",
-    "STARTEDAT": "Started At",
-    "ENDEDAT": "Ended At",
-    "TAG": "Tag",
-    "DETAILS": "Details",
-    "BILLABLESECONDS": "Billable seconds",
-    "ANSWEREDAT": "Answered At",
-    "NOTE": "Note",
-    "CLOSE": "Close",
-    "SELECT_DATE": "Select Start Date",
-    "SELECT_TYPE": "Select Type",
-    "VOICEPREFIXES": "Out Prefixes",
-    "NEW_VOICEPREFIX": "New Prefix",
-    "ADD_VOICEPREFIX": "Add Prefix",
-    "EDIT_VOICEPREFIX": "Edit Prefix",
-    "AGENTADD_VOICEPREFIX": "Add Agent to Prefix",
-    "DELETE_VOICEPREFIX": "Delete Prefix",
-    "OUTBOUNDROUTE": "Outbound Route",
-    "CALLERIDALL": "Caller Id",
+    "OPENCHANNEL": "Avatud Kanal",
+    "FAX": "Faks",
+    "CLEAR": "Puhasta",
+    "CALLS": "Kõned",
+    "STARTEDAT": "Algusaeg",
+    "ENDEDAT": "Lõpu aeg",
+    "TAG": "Silt",
+    "DETAILS": "Üksikasjad",
+    "BILLABLESECONDS": "Tasustatavad sekundid",
+    "ANSWEREDAT": "Vastamise aeg",
+    "NOTE": "Märge",
+    "CLOSE": "Sule",
+    "SELECT_DATE": "Vali Alguse Kuupäev",
+    "SELECT_TYPE": "Vali Tüüp",
+    "VOICEPREFIXES": "Välised Eesliited",
+    "NEW_VOICEPREFIX": "Uus Eesliide",
+    "ADD_VOICEPREFIX": "Lisa Eesliide",
+    "EDIT_VOICEPREFIX": "Redigeeri Eesliidet",
+    "AGENTADD_VOICEPREFIX": "Lisa Agent Eesliitele",
+    "DELETE_VOICEPREFIX": "Kustuta Eesliidet",
+    "OUTBOUNDROUTE": "Väljuv Tee",
+    "CALLERIDALL": "Helistaja ID",
     "CANT_DOWNLOAD_THIS_FILE": "Seda faili ei saa alla laadida",
     "DIALER": "Helistaja",
-    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadige ärakiri alla",
+    "DOWNLOADTRANSCRIBE_VOICERECORDING": "Laadi alla transkriptsiooni häälsalvestus",
     "FAILUREREASON": "Rikke põhjus",
     "FILE_NOT_FOUND": "Faili ei leitud",
     "INBOUND": "Sissetulev",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku dispositsiooni pausi olek",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kohustusliku kasutamise pausi olek",
     "OUTBOUND": "Väljaminev",
-    "RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivitage transkriptsioon ja meeleolu",
-    "RUNTRANSCRIBE_VOICERECORDING": "Käivitage transkriptsioon",
+    "RUNSENTIMENT_VOICERECORDING": "Käivita Arvamus",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Käivita transkriptsioon ja häälsalvestus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Käivita transkriptsioon",
     "SCREENRECORDING": "Halda ekraanisalvestust",
-    "SENTIMENT": "Tunne",
-    "SENTIMENTANALYSIS": "Sentimentide analüüs",
-    "SENTIMENT_MIXED": "Segatud",
+    "SENTIMENT": "Arvamus",
+    "SENTIMENTANALYSIS": "Arvamuste analüüs",
+    "SENTIMENT_MIXED": "Kombineeritud",
     "SENTIMENT_NEGATIVE": "Negatiivne",
     "SENTIMENT_NEUTRAL": "Neutraalne",
     "SENTIMENT_POSITIVE": "Positiivne",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMS_ASSOCIATION": "iimide liit",
     "TEXT": "Tekst",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-    "TRANSCRIBE": "Transkribeerida",
+    "TRANSCRIBE": "Transkribeeri",
     "TRANSCRIBESTATUS_COMPLETED": "Lõpetatud",
-    "TRANSCRIBESTATUS_FAILED": "Ebaõnnestus",
+    "TRANSCRIBESTATUS_FAILED": "Nurjunud",
     "TRANSCRIBESTATUS_IN_PROGRESS": "Pooleli",
     "TRANSCRIBESTATUS_NEW": "Uus",
-    "TRANSCRIPT": "Ärakiri",
-    "TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
+    "TRANSCRIPT": "Transkriptsioon",
+    "TRANSCRIPTANALYSIS": "Transkriptsioon ja analüüs",
     "WRONG_EXTENSION": "Failis on vale laiend",
     "SERVICELEVEL": "Teenuse tase",
     "SECOND_LEVEL_DISPOSITION": "Teise taseme korraldus",
     "THIRD_LEVEL_DISPOSITION": "Kolmanda taseme korraldus",
     "TEAMADD_VOICEPREFIX": "Lisa meeskond eesliidesse",
-    "ALIAS": "Teise nimega",
-    "MAXCAPACITY": "Maksimaalne mahutavus",
-    "WORKING": "Töötab"
+    "ALIAS": "Teise nimega"
   }
 }
index 7c8316a..e8c6282 100644 (file)
@@ -3,8 +3,8 @@
     "ERRORS": {
       "ACCESSKEYID_REQUIRED": "Kohustuslik väli",
       "ACCOUNTSID_REQUIRED": "Kohustuslik väli",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "AGENTTRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "AGENT_REQUIRED": "Kohustuslik väli",
       "AGENT_TIMEOUT_REQUIRED": "Kohustuslik väli",
@@ -14,9 +14,9 @@
       "CONDITION_REQUIRED": "Kohustuslik väli",
       "DESCRIPTION_REQUIRED": "Kohustuslik väli",
       "DISPOSITION_REQUIRED": "Kohustuslik väli",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "FALSEPRIORITY_REQUIRED": "Kohustuslik väli",
-      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "KEY_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "KEY_REQUIRED": "Kohustuslik väli",
       "LANGUAGE_REQUIRED": "Kohustuslik väli",
       "LEXREGION_REQUIRED": "Kohustuslik väli",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
       "NAME_REQUIRED": "Kohustuslik väli",
       "PHONE_REQUIRED": "Kohustuslik väli",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "PRIORITY_REQUIRED": "Kohustuslik väli",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Kohustuslik väli",
       "QUEUE_REQUIRED": "Kohustuslik väli",
       "SECRETACCESSKEY_REQUIRED": "Kohustuslik väli",
       "TAG_REQUIRED": "Kohustuslik väli",
       "TEXT_REQUIRED": "Kohustuslik väli",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "TIMEOUT_REQUIRED": "Kohustuslik väli",
       "TIMES_REQUIRED": "Kohustuslik väli",
       "TOKEN_REQUIRED": "Kohustuslik väli",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
       "TRUEPRIORITY_REQUIRED": "Kohustuslik väli",
       "TYPE_REQUIRED": "Kohustuslik väli",
       "VALUE_REQUIRED": "Kohustuslik väli",
       "VARIABLE_REQUIRED": "Kohustuslik väli",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne kui",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne kui",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Kohustuslik väli",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{max}}",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Väärtuse maksimaalne pikkus peab olema võrdne {{maks}}",
       "WELCOMEMESSAGE_REQUIRED": "Kohustuslik väli",
       "CLIENTEMAIL_REQUIRED": "Kohustuslik väli",
       "PRIVATEKEY_REQUIRED": "Kohustuslik väli",
-      "PROJECTID_REQUIRED": "Kohustuslik väli",
-      "BASEURL_REQUIRED": "Kohustuslik väli"
+      "PROJECTID_REQUIRED": "Kohustuslik väli"
     },
     "HELP": {
       "LIST": "Kontaktide halduri loend, mida kasutatakse kontaktide seostamiseks",
-      "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
-      "MOTIONPROXY": "Välja peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
-      "NAME": "Toetatud on ainult numbrid, tähed ja kindlad märgid (._)",
-      "RECEIVEURL": "See on automaatselt loodud API string, mida peate kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Connectori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
-      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele interaktsioonidele"
+      "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+      "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
+      "MOTIONPROXY": "Väljal peab olema järgmine vorming: <protokoll>: // <aadressiaadress> [: <port>]. Näide: https: //X.Y.Z.W",
+      "NAME": "Toetatud on ainult numbrid, tähed ja erimärgid (._)",
+      "RECEIVEURL": "See on automaatselt loodud API string, mida peab kasutama oma kontol olevate sõnumite vastuvõtmiseks oma WhatsApp Konnektori pakkujalt (tuleb kasutada POST-meetodit): selle kopeerimiseks klõpsake lõikelaua nuppu",
+      "WELCOMEMESSAGE": "See on esimene vastussõnum, mis saadetakse uutele suhtlustele"
     },
     "ACCESSKEYID": "Juurdepääsukoodi ID",
     "ACCOUNTSID": "Konto SID",
     "ACTIONS": "Tegevused",
-    "ADD_NOTE": "Lisada märkus",
-    "ADD_WHATSAPPACCOUNT": "Lisama",
-    "ADD_WHATSAPPCANNEDANSWER": "Lisage konserveeritud vastus",
-    "ADD_WHATSAPPDISPOSITION": "Lisage WhatsApp Disposition",
-    "ADD_WHATSAPPQUEUE": "Lisage järjekord WhatsApp",
+    "ADD_NOTE": "Lisa märkus",
+    "ADD_WHATSAPPACCOUNT": "Lisa",
+    "ADD_WHATSAPPCANNEDANSWER": "Lisa salvestatud vastus",
+    "ADD_WHATSAPPDISPOSITION": "Lisa WhatsAppi Kasutus",
+    "ADD_WHATSAPPQUEUE": "Lisa WhatsAppi järjekord",
     "ADVANCED": "Täpsemad",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTADD_WHATSAPPACCOUNT": "Lisage agent WhatsApi kontole",
-    "AGENTADD_WHATSAPPQUEUE": "Lisage agent WhatsApp'i järjekorda",
-    "AGENTS": "Agentid",
-    "AGENTSADD_QUEUE": "Lisage esindajad WhatsApi järjekorda",
-    "AGENTTRANSFER": "Agent Transfer",
-    "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-    "AGENT_TIMEOUT": "Agent aegumine",
+    "AGENTADD_QUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTADD_WHATSAPPACCOUNT": "Lisa agent WhatsAppi kontole",
+    "AGENTADD_WHATSAPPQUEUE": "Lisa agent WhatsAppi järjekorda",
+    "AGENTS": "Agendid",
+    "AGENTSADD_QUEUE": "Lisa esindajad WhatsAppi järjekorda",
+    "AGENTTRANSFER": "Agendi Edastamine",
+    "AGENTTRANSFERTIMEOUT": "Agendi Edastamise Aegumine",
+    "AGENT_TIMEOUT": "Agendi aegumine",
     "ALL": "Kõik",
     "ALL_AGENTS": "Kõik esindajad",
-    "ALL_TEAMS": "Kõik võistkonnad",
+    "ALL_TEAMS": "Kõik tiimid",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Autentimismärk",
+    "AUTHTOKEN": "Autentimisluba",
     "AUTOREPLY": "Automaatne vastus",
     "BACK": "tagasi",
     "BOTNAME": "Boti nimi",
     "BUSY": "Hõivatud",
-    "CANNEDANSWERS": "Konserveeritud vastused",
-    "CANNED_ANSWER_NOT_FOUND": "Konserveeritud vastuseid ei leitud",
-    "CANNED_ANSWER_SEARCH": "Sisestage tekst konserveeritud vastusest otsimiseks",
+    "CANNEDANSWERS": "Salvestatud vastused",
+    "CANNED_ANSWER_NOT_FOUND": "Salvestatud vastuseid ei leitud",
+    "CANNED_ANSWER_SEARCH": "Sisesta tekst salvestatud vastusest otsimiseks",
     "CAPACITY": "Maht",
-    "CLOSE": "Sulge",
+    "CLOSE": "Sule",
     "CLOSED": "Suletud",
     "CLOSEMETHOD": "Sule meetod",
-    "CLOSEURL": "Sulge URL",
+    "CLOSEURL": "Suge URL",
     "COMMAND": "Käsk",
     "CONDITION": "Seisund",
     "CONTACT": "Võtke ühendust",
-    "CREATED_AT": "Loodud kell",
+    "CREATED_AT": "Loomisaeg",
     "DEFAULT_PAUSE": "Vaikimisi paus",
     "DELETE": "Kustuta",
-    "DELETE_INTERACTION": "Kustuta interaktsioon",
+    "DELETE_INTERACTION": "Kustuta suhtlus",
     "DELETE_SELECTED": "Kustuta valitud",
-    "DELETE_WHATSAPPACCOUNT": "Kustutage WhatsApi konto",
+    "DELETE_WHATSAPPACCOUNT": "Kustuta WhatsAppi konto",
     "DELETE_WHATSAPPCANNEDANSWER": "Kustutatud",
-    "DELETE_WHATSAPPDISPOSITION": "Kustutage WhatsApp Disposition",
-    "DELETE_WHATSAPPQUEUE": "Kustutage WhatsApp Queue",
+    "DELETE_WHATSAPPDISPOSITION": "Kustuta WhatsAppi Kasutus",
+    "DELETE_WHATSAPPQUEUE": "Kustuta WhatsAppi Järjekord",
     "DESCRIPTION": "Kirjeldus",
-    "DIALOGFLOW": "DialogFlow",
-    "DISPOSITION": "Dispositsioon",
-    "DISPOSITIONS": "Dispositsioonid",
-    "DOWNLOAD_INTERACTION": "Lae alla",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadige alla ilma manusteta",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Laadige alla koos manustega",
-    "EDIT_AGENT": "Redigeeri esindajat",
+    "DIALOGFLOW": "Dialoogivoog",
+    "DISPOSITION": "Kasutused",
+    "DISPOSITIONS": "Kasutused",
+    "DOWNLOAD_INTERACTION": "Laadi alla",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Laadi alla ilma manusteta",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Laadi alla koos manustega",
+    "EDIT_AGENT": "Redigeeri agenti",
     "EDIT_AMAZONLEX": "Redigeeri Lexi konfiguratsiooni",
     "EDIT_AUTOREPLY": "Redigeeri automaatvastust",
-    "EDIT_CLOSE": "Redigeerimine Sulge",
-    "EDIT_DIALOGFLOW": "Redigeeri DialogFlow konfiguratsiooni",
-    "EDIT_GOTOIF": "Redigeeri Gotoifi",
+    "EDIT_CLOSE": "Redigeerimine Sulgemine",
+    "EDIT_DIALOGFLOW": "Redigeeri Dialoogivoo konfiguratsiooni",
+    "EDIT_GOTOIF": "Redigeeri Gotoif",
     "EDIT_GOTOP": "Redigeeri Gotopit",
-    "EDIT_NOOP": "Redigeeri Noopi",
+    "EDIT_NOOP": "Redigeeri Noop",
     "EDIT_QUEUE": "Redigeeri järjekorda",
     "EDIT_SYSTEM": "Redigeeri süsteemi",
     "EDIT_TAG": "Redigeeri silti",
-    "EDIT_WHATSAPPACCOUNT": "Muutke WhatsApi kontot",
+    "EDIT_WHATSAPPACCOUNT": "Muuda WhatsAppi kontot",
     "EDIT_WHATSAPPCANNEDANSWER": "Redigeeri",
-    "EDIT_WHATSAPPDISPOSITION": "Muutke WhatsApi dispositsiooni",
-    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsApi järjekorda",
+    "EDIT_WHATSAPPDISPOSITION": "Muuda WhatsAppi kasutust",
+    "EDIT_WHATSAPPQUEUE": "Redigeeri WhatsAppi järjekorda",
     "FALSEPRIORITY": "Vale prioriteet",
     "GENERAL": "Kindral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Gotop",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Minge reaalajas WhatsApi järjekorda",
-    "GO_TO_WHATSAPPACCOUNTS": "Minge kontole",
-    "ID": "Id",
-    "IDLE": "Tühikäik",
-    "INSERT_MESSAGE_HERE": "Sisestage sõnum siia",
-    "INTERACTIONS": "Koostoimed",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Minge jaotisse Interaktsioonid",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Mine reaalajas WhatsAppi järjekorda",
+    "GO_TO_WHATSAPPACCOUNTS": "Mine kontole",
+    "ID": "ID",
+    "IDLE": "Jõude",
+    "INSERT_MESSAGE_HERE": "Sisesta sõnum siia",
+    "INTERACTIONS": "Suhtlused",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Mine jaotisse Suhtlused",
     "KEY": "Võti",
     "LANGUAGE": "Keel",
     "LASTMESSAGE": "Viimane sõnum",
     "LOGGED_IN": "Sisse logitud (SIP ühendatud)",
     "LOGIN_TIME": "Sisselogimise aeg",
     "LOGOUT": "Logi välja",
-    "MANDATORYDISPOSITION": "Kohustuslik käsutamine",
-    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik käsutamine on lubatud",
+    "MANDATORYDISPOSITION": "Kohustuslik kasutamine",
+    "MANDATORYDISPOSITIONPAUSEID": "Kasutamise peatamine, kui kohustuslik kasutamine on lubatud",
     "MORE": "Veel",
     "MOTIONPROXY": "Puhverserver või liikumisdomeen",
     "MULTI_SELECT_TOGGLE": "Mitme valiku lülitamine",
     "NAME": "Nimi",
-    "NEW_WHATSAPPACCOUNT": "Uus WhatsApi konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Uus vastus WhatsAppile",
-    "NEW_WHATSAPPDISPOSITION": "Uus seade WhatsApp",
-    "NEW_WHATSAPPQUEUE": "Uus WhatsApi järjekord",
+    "NEW_WHATSAPPACCOUNT": "Uus WhatsAppi konto",
+    "NEW_WHATSAPPCANNEDANSWER": "Uus WhatsAppi salvestatud vastus",
+    "NEW_WHATSAPPDISPOSITION": "Uus WhatsAppi kasutus",
+    "NEW_WHATSAPPQUEUE": "Uus WhatsAppi järjekord",
     "NOOP": "Noop",
     "NOTE": "Märge",
     "NOTIFICATION": "Teatamine",
-    "NOTIFICATIONSHAKE": "Raputama",
+    "NOTIFICATIONSHAKE": "Raputus",
     "NOTIFICATIONSOUND": "Heli",
     "NOTIFICATIONTEMPLATE": "Mall",
-    "NO_AGENT_ONLINE": "Pole esindajat võrgus",
-    "NO_AVAILABLE_INFO": "Pole saadaval teavet",
-    "NO_INTERACTION_AVAILABLE": "Ühtegi interaktsiooni pole saadaval",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsApi konserveeritud vastuseid pole saadaval",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsApi dispositsioonid pole saadaval",
-    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsApi kontosid pole saadaval",
-    "OF": "kohta",
+    "NO_AGENT_ONLINE": "Agente pole võrgus",
+    "NO_AVAILABLE_INFO": "Teave pole saadaval",
+    "NO_INTERACTION_AVAILABLE": "Ühtegi suhtlust pole saadaval",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "WhatsAppi salvestatud vastuseid pole saadaval",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "WhatsAppi kasutused pole saadaval",
+    "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "WhatsAppi kontosid pole saadaval",
+    "OF": "of",
     "OPENED": "Avatud",
     "PAGE": "Leht",
     "PARTIALPAUSE": "Osaline paus",
     "PROXY": "Puhverserver",
     "QUEUE": "Järjekord",
     "QUEUES": "Järjekorrad",
-    "QUEUETRANSFER": "Järjekorra ülekandmine",
-    "QUEUETRANSFERTIMEOUT": "Järjekorra ülekandmise ajalõpp",
+    "QUEUETRANSFER": "Järjekorra edastamine",
+    "QUEUETRANSFERTIMEOUT": "Järjekorra edastamise aegumine",
     "READY": "Valmis",
     "REALTIME": "Reaalajas",
-    "RECEIVEURL": "Saate URL-i",
-    "REFRESH_INTERACTIONS": "Värskenda interaktsioone",
-    "REMOTE": "Kaugjuhtimispult",
-    "ROWSPERPAGE": "Ridasid lehel",
+    "RECEIVEURL": "URL-i vastuvõtmine",
+    "REFRESH_INTERACTIONS": "Värskenda suhtlusi",
+    "REMOTE": "Kaugjuhtimine",
+    "ROWSPERPAGE": "Ridu lehekülje kohta",
     "SAVE": "Salvesta",
     "SCREENRECORDING": "Halda ekraanisalvestust",
     "SEARCH_FOR_ANYONE": "Otsing",
     "SECRETACCESSKEY": "Juurdepääsu võtme saladus",
     "SELECTED": "Valitud",
-    "SELECTED_AGENTS": "Valitud esindajad",
-    "SELECTED_TEAMS": "Valitud meeskonnad",
+    "SELECTED_AGENTS": "Valitud agendid",
+    "SELECTED_TEAMS": "Valitud tiimid",
     "SELECT_ALL": "Vali kõik",
-    "SELECT_NONE": "Valige ükski",
+    "SELECT_NONE": "Ärge valige ühtegi",
     "SEND": "Saada",
-    "SETTINGS": "Seadistused",
-    "SPYINTERACTION": "Spioonide interaktsioon",
-    "STARTEDAT": "Alustati kell",
+    "SETTINGS": "Sätted",
+    "SPYINTERACTION": "Spiooni suhtlus",
+    "STARTEDAT": "Alustatud kell",
     "START_SCREENRECORDING": "Alusta ekraani salvestamist",
     "STATUS": "Olek",
     "STOP_SCREENRECORDING": "Peata ekraanil salvestamine",
     "SYSTEM": "Süsteem",
     "TAG": "Silt",
     "TAGS": "Sildid",
-    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsApp'i järjekorda",
-    "TEAMS_ASSOCIATION": "Võistkondade liit",
+    "TEAMADD_WHATSAPPQUEUE": "Lisage meeskond WhatsAppi järjekorda",
+    "TEAMS_ASSOCIATION": "Tiimide liit",
     "TEXT": "Tekst",
     "TIMEOUT": "Aeg maha",
     "TIMER": "Taimer",
     "TIMES": "Ajad",
-    "TO": "Et",
+    "TO": "Kellele",
     "TOKEN": "Märk",
     "TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
     "TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
     "TRANSFER": "Ülekanne",
-    "TRUEPRIORITY": "Tõeline prioriteet",
+    "TRUEPRIORITY": "Tõene prioriteet",
     "TYPE": "Tüüp",
     "UNPAUSE": "Lõpeta paus",
     "VALUE": "Väärtus",
-    "VARIABLE": "Muutuv",
-    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud esindajat",
-    "WAITING": "Ootan",
-    "WELCOMEMESSAGE": "Tervitussõnum",
-    "WHATSAPP": "WhatsApp-pistik",
-    "WHATSAPPACCOUNTS": "WhatsApi kontod",
-    "WHATSAPPCANNEDANSWERS": "WhatsApi konserveeritud vastused",
-    "WHATSAPPDISPOSITIONS": "WhatsApi dispositsioonid",
-    "WHATSAPPQUEUES": "WhatsApi järjekorrad",
-    "CLIENTEMAIL": "Kliendi e-post",
+    "VARIABLE": "Muutuja",
+    "WAITFORTHEASSIGNEDAGENT": "Oodake määratud agenti",
+    "WAITING": "Ootamine",
+    "WELCOMEMESSAGE": "Tervitussõµnum",
+    "WHATSAPP": "WhatsApp-ühendus",
+    "WHATSAPPACCOUNTS": "WhatsAppi kontod",
+    "WHATSAPPCANNEDANSWERS": "WhatsAppi salvestatud vastused",
+    "WHATSAPPDISPOSITIONS": "WhatsAppi kasutused",
+    "WHATSAPPQUEUES": "WhatsAppi järjekorrad",
+    "CLIENTEMAIL": "Kliendi e-mail",
     "DIALOGFLOWV2": "Dialoogivoog V2",
     "EDIT_DIALOGFLOWV2": "Redigeerimise dialoogivoog V2",
     "PRIVATEKEY": "Privaatne võti",
-    "PROJECTID": "Projekti ID",
-    "BASEURL": "Baas-URL",
-    "DELIVERYREPORTURL": "Edastamisaruande URL"
+    "PROJECTID": "Projekti ID"
   }
 }
index fd2a755..f98da63 100644 (file)
@@ -1,73 +1,73 @@
 {
   "QUICKPANEL": {
-    "EXPIRATION_GRAY_PERIOD": "Expiration Gray Period",
-    "NO_AVAILABLE_GROUPS": "No Available Groups",
-    "SAVE": "Save",
+    "EXPIRATION_GRAY_PERIOD": "Halli Perioodi Aegumine",
+    "NO_AVAILABLE_GROUPS": "Vabu Gruppe pole",
+    "SAVE": "Salvesta",
     "INFO": "Info",
-    "NEW_CHATGROUP": "New Group",
-    "NAME": "Name",
-    "MEMBERS": "Members",
-    "ENABLE_WRITING": "Enable Writing",
-    "GROUPS": "Groups",
-    "YOU": "You + {{participants}}",
-    "NEW_INTERNAL_MESSAGE": "New internal message",
-    "DELETE": "Delete",
-    "SEARCH": "Search",
-    "USERS": "Users",
-    "TODAY": "TODAY",
-    "MONDAY": "Monday",
-    "TUESDAY": "Tuesday",
-    "WEDNESDAY": "Wednesday",
-    "THURSDAY": "Thursday",
-    "FRIDAY": "Friday",
-    "SATURDAY": "Saturday",
-    "SUNDAY": "Sunday",
-    "JANUARY": "January",
-    "FEBRUARY": "February",
-    "MARCH": "March",
-    "APRIL": "April",
-    "MAY": "May",
-    "JUNE": "June",
-    "JULY": "July",
+    "NEW_CHATGROUP": "Uus Grupp",
+    "NAME": "Nimi",
+    "MEMBERS": "Liikmed",
+    "ENABLE_WRITING": "Luba Kirjutamine",
+    "GROUPS": "Gruppid",
+    "YOU": "Teie + {{osalejad}}",
+    "NEW_INTERNAL_MESSAGE": "Uus sisemine sõnum",
+    "DELETE": "Kustuta",
+    "SEARCH": "Otsi",
+    "USERS": "Kasutajad",
+    "TODAY": "TÄNA",
+    "MONDAY": "Esmaspäev",
+    "TUESDAY": "Teisipäev",
+    "WEDNESDAY": "Kolmapäev",
+    "THURSDAY": "Neljapäev",
+    "FRIDAY": "Reede",
+    "SATURDAY": "Laupäev",
+    "SUNDAY": "Pühapäev",
+    "JANUARY": "Jaanuar",
+    "FEBRUARY": "Veebruar",
+    "MARCH": "Märts",
+    "APRIL": "Aprill",
+    "MAY": "Mai",
+    "JUNE": "Juuni",
+    "JULY": "Juuli",
     "AUGUST": "August",
     "SEPTEMBER": "September",
-    "OCTOBER": "October",
+    "OCTOBER": "Oktoober",
     "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "CHAT": "CHAT",
-    "ACTIVITY": "ACTIVITY",
-    "FRIENDS": "Friends",
-    "APP_SERVERS": "Application Servers",
-    "USER_STATS": "User Stats",
-    "EVENTS": "Events",
-    "NOTES": "Notes",
-    "QUICK_SETTINGS": "Quick Settings",
-    "NOTIFICATIONS": "Notifications",
-    "CLOUD_SYNC": "Cloud Sync",
+    "DECEMBER": "Detsember",
+    "CHAT": "VESTLUS",
+    "ACTIVITY": "TEGEVUS",
+    "FRIENDS": "Sõbrad",
+    "APP_SERVERS": "Rakenduse Serverid",
+    "USER_STATS": "Kasutaja Stat",
+    "EVENTS": "Sündmused",
+    "NOTES": "Märkmed",
+    "QUICK_SETTINGS": "Kiirsätted",
+    "NOTIFICATIONS": "Teatised",
+    "CLOUD_SYNC": "Pilve Sünk",
     "RETRO_THRUSTERS": "Retro Thrusters",
-    "RECENT": "Recent",
-    "START_NEW_CHAT": "Start New Chat",
-    "BACK": "Back",
-    "CALL": "Call",
-    "MORE": "More",
-    "SEND_MESSAGE": "Send message",
-    "REPLY_PLACEHOLDER": "Type and hit enter to send message",
-    "CONTACT_XCALLY_MOTION_SUPPORT": "Contact xCALLY Motion Support",
-    "EXPIRATION_DATE": "Expiration Date",
-    "EXPIRATION_REASON": "Expiration Reason",
-    "LICENSE": "License",
-    "NEW_TOKEN": "New Token",
-    "OLD_TOKEN": "Old Token",
-    "SEND_EMAIL_TO": "Send Email To",
-    "TOKEN": "Token",
-    "EXPIRATION_REASON_MESSAGE": "Your license has expired or your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "GRAY_PERIOD_EXPIRATION": "Gray Period Expiration",
-    "EXPIRATION_REASON_MESSAGE_GRAY": "Your license has expired or has been disabled. Contact xCALLY Motion Support Team.",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Your machine unique id has been updated due to a change to your system. Contact xCALLY Motion Support Team sending both your old and your new uuid.",
-    "MESSENGER_DISABLED": "The internal messaging is disabled for this agent!",
-    "WARNING": "Warning",
+    "RECENT": "Hiljutine",
+    "START_NEW_CHAT": "Alusta Uut Vestlust",
+    "BACK": "Tagasi",
+    "CALL": "Helista",
+    "MORE": "Rohkem",
+    "SEND_MESSAGE": "Saada sõnum",
+    "REPLY_PLACEHOLDER": "Tipi ja vajuata enter sõnumi saatmiseks",
+    "CONTACT_XCALLY_MOTION_SUPPORT": "Võta ühendust xCALLY Liikumise Toega",
+    "EXPIRATION_DATE": "Aegumiskuupäev",
+    "EXPIRATION_REASON": "Aegumise Põhjus",
+    "LICENSE": "Litsents",
+    "NEW_TOKEN": "Uus Luba",
+    "OLD_TOKEN": "Vana Luba",
+    "SEND_EMAIL_TO": "Saada E-mail Kellele",
+    "TOKEN": "Luba",
+    "EXPIRATION_REASON_MESSAGE": "Sinu litsents on aegunud või sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "GRAY_PERIOD_EXPIRATION": "Halli Perioodi Aegumine",
+    "EXPIRATION_REASON_MESSAGE_GRAY": "Sinu litsents on aegunud või on desaktiveeritud. Võta ühendust xCALLY Liikumise Toe Tiimiga.",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Sinu seadme unikaalne ID on värskendatud sinu süsteemi muudatuse tõttu. Võta ühendust xCALLY Liikumise Toe Tiimiga, saates nii oma uue kui vana UUID.",
+    "MESSENGER_DISABLED": "Sisemine sõnumi saatmine on selle agendi jaoks desaktiveeritud!",
+    "WARNING": "Hoiatus",
     "ERRORS": {
-      "NAME_REQUIRED": "Mandatory Field"
+      "NAME_REQUIRED": "Kohustuslik Väli"
     }
   }
 }
index c3cf8da..c0ce982 100644 (file)
@@ -1,20 +1,20 @@
 {
   "RESETPASSWORD": {
-    "TITLE": "Reset your password",
-    "EMAIL_ADRESS": "Email address",
-    "PASSWORD": "Password",
-    "PASSWORD_CONFIRM": "Password (Confirm)",
-    "UPDATE_PASSWORD": "RESET MY PASSWORD",
-    "GO_BACK": "Go back to login",
-    "PASSWORD_RESET": "Password Reset",
-    "PASSWORD_RESET_MESSAGE": "Your password has been correctly reset, you can now login!",
-    "PASSWORD_RESET_ERROR": "Password Reset Error",
+    "TITLE": "Uuendage oma parooli",
+    "EMAIL_ADRESS": "E-posti aadress",
+    "PASSWORD": "Parool",
+    "PASSWORD_CONFIRM": "Parool (Kinnita)",
+    "UPDATE_PASSWORD": "UUENDA MINU PAROOLI",
+    "GO_BACK": "Mine tagasi sisselogimise lehele",
+    "PASSWORD_RESET": "Parooli Uuendamine",
+    "PASSWORD_RESET_MESSAGE": "Sinu parool on nõuetekohaselt uuendatud, saad nüüd sisse logida!",
+    "PASSWORD_RESET_ERROR": "Parooli Uuendamise Viga",
     "ERRORS": {
-      "EMAIL_REQUIRED": "Email field is required",
-      "EMAIL_MUST_VALID": "Email must be a valid e-mail address",
-      "PASSWORD_REQUIRED": "Password field is required",
-      "CONFIRM_NOT_MATCH": "The passwords don't match",
-      "SECURE_PASSWORD_PATTERN": "Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}."
+      "EMAIL_REQUIRED": "E-posti väli on kohustuslik",
+      "EMAIL_MUST_VALID": "E-posti aadress peab olema kehtiv",
+      "PASSWORD_REQUIRED": "Parooli väli on kohustuslik",
+      "CONFIRM_NOT_MATCH": "Paroolid ei ühti",
+      "SECURE_PASSWORD_PATTERN": "Peab sisaldama vähemalt 8 tähemärki, millest vähemalt 1 väike täht, 1 suur täht, 1 numbrimärk ja 1 erimärk ~!?*@#$%^&-_=+[{]}."
     }
   }
 }
index 409792b..3dad53a 100644 (file)
@@ -16,7 +16,7 @@
 
   <link rel="stylesheet" href="styles/vendor.57a94b79.css">
 
-  <link rel="stylesheet" href="styles/app.d45f5a7f.css">
+  <link rel="stylesheet" href="styles/app.fabf8255.css">
 
   <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -66,7 +66,7 @@
   <script src="assets/plugins/angular-material-form-builder/dist/angular-material-form-builder.min.js"></script>
   <!-- ANGULAR-MATERIAL-FORM-BUILDER -->
 
-  <script src="scripts/app.e59f835e.js"></script>
+  <script src="scripts/app.231049c5.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 52%
rename from public/scripts/app.e59f835e.js
rename to public/scripts/app.231049c5.js
index b7fc113..bac7b2f 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",controller:"QueuesChatRealtimeController as vm",templateUrl:"app/main/apps/chat/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",controller:"QueuesFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",controller:"QueuesMailRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",controller:"QueuesMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",controller:"QueuesOpenchannelRealtimeController as vm",templateUrl:"app/main/apps/openchannel/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",controller:"QueuesSmsRealtimeController as vm",templateUrl:"app/main/apps/sms/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",controller:"QueuesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",controller:"QueuesWhatsappRealtimeController as vm",templateUrl:"app/main/apps/whatsapp/views/realtime/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var n={checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n="unknown";n=o(e)?"pause":o(e,!0)?"*pause":function(e){if("idle"!==e.voiceStatus&&e.voicePause)return!(e.voiceStatus="pause");return _.every([e.chatStatus,e.faxStatus,e.mailStatus,e.openchannelStatus,e.smsStatus,e.voiceStatus,e.whatsappStatus],r)}(e)?"idle":"busy";return n},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE")));return n},getUserUpdateEventOrigin:function(e){var n="call";e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause");return n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateBusyCounter:s,updateQueue:function(e,n,t,a){var i=t.paused;!1===e.online?(t.online=!1,n.loggedInDb-=1,t.paused?(t.paused=!1,n.paused-=1):n.available-=1):t.online?!e[a+"Pause"]||t.paused||o(e,!0)?!e[a+"Pause"]&&t.paused?(t.paused=!1,t.talking||t.busy||(n.paused-=1,n.available+=1)):e[a+"Pause"]&&t.paused&&(t.talking||t.busy||(n.busy-=1,i||(n.paused+=1))):(t.paused=!0,t.talking||t.busy||(i||(n.paused+=1),0<n.available&&(n.available-=1))):(t.online=!0,n.loggedInDb+=1,n.available+=1);s(n)},updateVoiceQueue:function(e,n){e.loggedIn===e.available&&0<e.waiting&&(e.available-=e.waiting);var t=e.loggedIn-e.available-e.talking-e.waiting-n.paused;t<0?(n.paused-=Math.abs(t),n.waitingOrTalking=!0):0<t&&n.waitingOrTalking&&(n.paused+=1,delete n.waitingOrTalking);_.merge(n,_.pick(e,"inbound"===n.type?a:i)),"outbound"===n.type&&_.isNil(e.startPredictive)&&(n.startPredictive=void 0);s(n)}},a=["loggedIn","available","waiting","talking","paused"],i=["loggedIn","available","waiting","talking","pTalking","originated","message","dialActive","dialMethod","Trunk","paused","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"];function s(e){var n=_.filter(e.agents,["busy",!0]).length,t=e.loggedInDb-e.available-e.paused-e.talking-e.waiting;t<0&&(t=0),e.busy=t<n?n:t}function o(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function r(e){if(_.isNil(e))return!0;return _.includes(["idle","unknown","unavailable","ringing"],e)}return n}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATQUEUE",g.chatQueue=angular.copy(l),g.chatQueues=r,g.newChatQueue=!1,g.chatQueue||(g.chatQueue={strategy:"beepall",timeout:10},g.title="CHAT.NEW_CHATQUEUE",g.newChatQueue=!0),g.addNewChatQueue=function(){g.errors=[],d.chatQueue.save(g.chatQueue).$promise.then(function(e){g.chatQueues.unshift(e.toJSON()),o.success({title:"ChatQueue properly created",msg:g.chatQueue.name?g.chatQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatQueue=function(){g.errors=[],d.chatQueue.update({id:g.chatQueue.id},g.chatQueue).$promise.then(function(e){var n=_.find(g.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatQueue properly saved!",msg:g.chatQueue.name?g.chatQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatQueue.delete({id:g.chatQueue.id}).$promise.then(function(){_.remove(g.chatQueues,{id:g.chatQueue.id}),o.success({title:"ChatQueue properly deleted!",msg:(g.chatQueue.name||"chatQueue")+" has been deleted!"}),v(g.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatQueues","chatQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("CHAT.CHATQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("chat_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userChatQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userChatQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.ChatQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"chat")})}),e.$on("$destroy",function(){r.removeAllListeners("chat_queue:save"),r.removeAllListeners("userChatQueue:remove"),r.removeAllListeners("userChatQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.chat").controller("QueuesChatRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXQUEUE",g.faxQueue=angular.copy(l),g.faxQueues=r,g.newFaxQueue=!1,g.faxQueue||(g.faxQueue={strategy:"beepall",timeout:10},g.title="FAX.NEW_FAXQUEUE",g.newFaxQueue=!0),g.addNewFaxQueue=function(){g.errors=[],d.faxQueue.save(g.faxQueue).$promise.then(function(e){g.faxQueues.unshift(e.toJSON()),o.success({title:"FaxQueue properly created",msg:g.faxQueue.name?g.faxQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxQueue=function(){g.errors=[],d.faxQueue.update({id:g.faxQueue.id},g.faxQueue).$promise.then(function(e){var n=_.find(g.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxQueue properly saved!",msg:g.faxQueue.name?g.faxQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxQueue.delete({id:g.faxQueue.id}).$promise.then(function(){_.remove(g.faxQueues,{id:g.faxQueue.id}),o.success({title:"FaxQueue properly deleted!",msg:(g.faxQueue.name||"faxQueue")+" has been deleted!"}),v(g.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxQueues","faxQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("FAX.FAXQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("fax_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userFaxQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userFaxQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.FaxQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"fax")})}),e.$on("$destroy",function(){r.removeAllListeners("fax_queue:save"),r.removeAllListeners("userFaxQueue:remove"),r.removeAllListeners("userFaxQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.fax").controller("QueuesFaxRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILQUEUE",g.mailQueue=angular.copy(l),g.mailQueues=r,g.newMailQueue=!1,g.mailQueue||(g.mailQueue={strategy:"beepall",timeout:10},g.title="MAIL.NEW_MAILQUEUE",g.newMailQueue=!0),g.addNewMailQueue=function(){g.errors=[],d.mailQueue.save(g.mailQueue).$promise.then(function(e){g.mailQueues.unshift(e.toJSON()),o.success({title:"MailQueue properly created",msg:g.mailQueue.name?g.mailQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailQueue=function(){g.errors=[],d.mailQueue.update({id:g.mailQueue.id},g.mailQueue).$promise.then(function(e){var n=_.find(g.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailQueue properly saved!",msg:g.mailQueue.name?g.mailQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailQueue.delete({id:g.mailQueue.id}).$promise.then(function(){_.remove(g.mailQueues,{id:g.mailQueue.id}),o.success({title:"MailQueue properly deleted!",msg:(g.mailQueue.name||"mailQueue")+" has been deleted!"}),v(g.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailQueues","mailQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("MAIL.MAILQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("mail_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userMailQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userMailQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.MailQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"mail")})}),e.$on("$destroy",function(){r.removeAllListeners("mail_queue:save"),r.removeAllListeners("userMailQueue:remove"),r.removeAllListeners("userMailQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.mail").controller("QueuesMailRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},u.showPredictiveQueueCampaignInfo=function(e,n){t.show({controller:"PredictiveQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueueRt:save",function(e){var n=_.find(u.queues.rows,["id",e.MotionDialerQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueueRt:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.motiondialer").controller("QueuesMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t){this.queueCampaign=t,this.addMinutes=function(e,n){return moment(e).add("m",n).format("HH:mm:ss")},this.setFormatTime=function(e){return moment(e).format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$interval","queueCampaign"],angular.module("app.motiondialer").controller("PredictiveQueueCampaignDialogController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",g.openchannelQueue=angular.copy(l),g.openchannelQueues=r,g.newOpenchannelQueue=!1,g.openchannelQueue||(g.openchannelQueue={strategy:"beepall",timeout:10},g.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",g.newOpenchannelQueue=!0),g.addNewOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.save(g.openchannelQueue).$promise.then(function(e){g.openchannelQueues.unshift(e.toJSON()),o.success({title:"OpenchannelQueue properly created",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelQueue=function(){g.errors=[],d.openchannelQueue.update({id:g.openchannelQueue.id},g.openchannelQueue).$promise.then(function(e){var n=_.find(g.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelQueue properly saved!",msg:g.openchannelQueue.name?g.openchannelQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelQueue.delete({id:g.openchannelQueue.id}).$promise.then(function(){_.remove(g.openchannelQueues,{id:g.openchannelQueue.id}),o.success({title:"OpenchannelQueue properly deleted!",msg:(g.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),v(g.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelQueues","openchannelQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("OPENCHANNEL.OPENCHANNELQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("openchannel_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userOpenchannelQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userOpenchannelQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.OpenchannelQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"openchannel")})}),e.$on("$destroy",function(){r.removeAllListeners("openchannel_queue:save"),r.removeAllListeners("userOpenchannelQueue:remove"),r.removeAllListeners("userOpenchannelQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.openchannel").controller("QueuesOpenchannelRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("SMS.SMSQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("sms_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userSmsQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userSmsQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.SmsQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"sms")})}),e.$on("$destroy",function(){r.removeAllListeners("sms_queue:save"),r.removeAllListeners("userSmsQueue:remove"),r.removeAllListeners("userSmsQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.sms").controller("QueuesSmsRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSQUEUE",g.smsQueue=angular.copy(l),g.smsQueues=r,g.newSmsQueue=!1,g.smsQueue||(g.smsQueue={strategy:"beepall",timeout:10},g.title="SMS.NEW_SMSQUEUE",g.newSmsQueue=!0),g.addNewSmsQueue=function(){g.errors=[],d.smsQueue.save(g.smsQueue).$promise.then(function(e){g.smsQueues.unshift(e.toJSON()),o.success({title:"SmsQueue properly created",msg:g.smsQueue.name?g.smsQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsQueue=function(){g.errors=[],d.smsQueue.update({id:g.smsQueue.id},g.smsQueue).$promise.then(function(e){var n=_.find(g.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsQueue properly saved!",msg:g.smsQueue.name?g.smsQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsQueue.delete({id:g.smsQueue.id}).$promise.then(function(){_.remove(g.smsQueues,{id:g.smsQueue.id}),o.success({title:"SmsQueue properly deleted!",msg:(g.smsQueue.name||"smsQueue")+" has been deleted!"}),v(g.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsQueues","smsQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.channelStatusOut,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","helperClasses"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","helperClasses","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("VOICE.VOICEQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:u.queues.rows,realtime:!0,crudPermissions:u.crudPermissions}})},r.onWithoutApply("voice_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&m.updateVoiceQueue(e,n)}),r.on("userVoiceQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userVoiceQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.VoiceQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:agentconnect",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);if(n){if(!t.agentconnected)return;t.queue?n.talking=!0:n.busy=!0,m.updateBusyCounter(e)}})}),r.on("user:agentcomplete",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&(n.talking?n.talking=!1:n.busy&&(n.busy=!1),m.updateBusyCounter(e))})}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"voice")})}),e.$on("$destroy",function(){r.removeAllListeners("voice_queue:save"),r.removeAllListeners("userVoiceQueue:remove"),r.removeAllListeners("userVoiceQueue:save"),r.removeAllListeners("user:agentconnect"),r.removeAllListeners("user:agentcomplete"),r.removeAllListeners("user:update"),p&&n.cancel(p)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.voice").controller("QueuesVoiceRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.status,m.stateClass=r.state,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","helperClasses","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.status,u.stateClass=r.state,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","helperClasses","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEQUEUE",g.voiceQueue=angular.copy(l),g.voiceQueues=r,g.newVoiceQueue=!1,g.voiceQueue||(g.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},g.title="VOICE.NEW_VOICEQUEUE",g.newVoiceQueue=!0),g.addNewVoiceQueue=function(){g.errors=[],d.voiceQueue.save(g.voiceQueue).$promise.then(function(e){g.voiceQueues.unshift(e.toJSON()),o.success({title:"VoiceQueue properly created",msg:g.voiceQueue.name?g.voiceQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceQueue=function(){g.errors=[],d.voiceQueue.update({id:g.voiceQueue.id},g.voiceQueue).$promise.then(function(e){var n=_.find(g.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceQueue properly saved!",msg:g.voiceQueue.name?g.voiceQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.voiceQueue.id}).$promise.then(function(){_.remove(g.voiceQueues,{id:g.voiceQueue.id}),o.success({title:"VoiceQueue properly deleted!",msg:(g.voiceQueue.name||"voiceQueue")+" has been deleted!"}),v(g.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceQueues","voiceQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c,m){var u=this,p=["loggedIn","available","waiting","paused"],g=n(function(){},999);u.currentUser=c.getCurrentUser(),u.queues=s,u.userProfileSection=d&&1==d.count?d.rows[0]:null,u.crudPermissions=c.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={id:c.isUser()?u.currentUser.id:void 0,section:c.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,page:1},u.getQueues=function(){u.query.offset=(u.query.page-1)*u.query.limit,o.realtime.getQueues(u.query).$promise.then(function(e){u.queues=e}).catch(function(e){l.error({title:i.instant("WHATSAPP.WHATSAPPQUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},u.editQueue=function(e,n){t.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,license:null,setting:null,crudPermissions:u.crudPermissions}})},u.addAgent=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:u.queues.rows,realtime:!1,crudPermissions:u.crudPermissions}})},r.on("whatsapp_queue:save",function(e){var n=_.find(u.queues.rows,["id",e.id]);n&&_.merge(n,_.pick(e,p))}),r.on("userWhatsappQueue:save",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(n.loggedInDb++,n.agents.push({id:e.UserId}))}),r.on("userWhatsappQueue:remove",function(e){var n=_.find(u.queues.rows,["id",e.WhatsappQueueId]);n&&(0<n.loggedInDb&&n.loggedInDb--,_.remove(n.agents,["id",e.UserId]))}),r.on("user:update",function(t){u.queues.rows.forEach(function(e){var n=_.find(e.agents,["id",t.id]);n&&m.updateQueue(t,e,n,"whatsapp")})}),e.$on("$destroy",function(){r.removeAllListeners("whatsapp_queue:save"),r.removeAllListeners("userWhatsappQueue:remove"),r.removeAllListeners("userWhatsappQueue:save"),r.removeAllListeners("user:update"),g&&n.cancel(g)})}e.$inject=["$scope","$mdDialog","$document","$interval","$translate","queues","api","socket","toasty","userProfileSection","Auth","realtimeManager"],angular.module("app.whatsapp").controller("QueuesWhatsappRealtimeController",e)}(),function(){"use strict";angular.module("app.auth").factory("helperClasses",function(){return{status:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"},state:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},channelStatus:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},channelStatusOut:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"}}})}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPQUEUE",g.whatsappQueue=angular.copy(l),g.whatsappQueues=r,g.newWhatsappQueue=!1,g.whatsappQueue||(g.whatsappQueue={strategy:"beepall",timeout:10},g.title="WHATSAPP.NEW_WHATSAPPQUEUE",g.newWhatsappQueue=!0),g.addNewWhatsappQueue=function(){g.errors=[],d.whatsappQueue.save(g.whatsappQueue).$promise.then(function(e){g.whatsappQueues.unshift(e.toJSON()),o.success({title:"WhatsappQueue properly created",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappQueue=function(){g.errors=[],d.whatsappQueue.update({id:g.whatsappQueue.id},g.whatsappQueue).$promise.then(function(e){var n=_.find(g.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappQueue properly saved!",msg:g.whatsappQueue.name?g.whatsappQueue.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappQueue=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappQueue.delete({id:g.whatsappQueue.id}).$promise.then(function(){_.remove(g.whatsappQueues,{id:g.whatsappQueue.id}),o.success({title:"WhatsappQueue properly deleted!",msg:(g.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),v(g.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappQueues","whatsappQueue","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,$)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(){I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"}function $(e){e&&e.permissions&&(I.currentUser.permissions=e.permissions,F())}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){P()?c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}}):alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userNotification:recalc:"+I.user.id),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="CHAT.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n        <th md-column>{{ \'CHAT.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'CHAT.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'CHAT.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="CHAT.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="CHAT.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n        <th md-column>{{ \'FAX.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'FAX.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'FAX.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="FAX.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="FAX.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n        <th md-column>{{ \'MAIL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MAIL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MAIL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MAIL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MAIL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} Info</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.setFormatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.addMinutes(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                                    <td md-cell>Dropped Calls Timeout</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                                </tr>\n                                <tr md-row>\n                                    <td md-cell>Dropped Calls Caller Exit</td>\n                                    <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                                    </td>\n                                </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n\n\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TALKING\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.BUSY\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.WAITING\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.ORIGINATED_TEXT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.MESSAGE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb - queue.available - queue.paused - queue.talking - queue.waiting\n               }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+queue.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{queue.dialActive ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{queue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="MOTIONDIALER.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if="queue.dialMethod == \'predictive\'">\n                <md-button ng-click="vm.showPredictiveQueueCampaignInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n                  Show Predictive Info\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="MOTIONDIALER.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="OPENCHANNEL.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'OPENCHANNEL.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="OPENCHANNEL.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="OPENCHANNEL.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="SMS.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n        <th md-column>{{ \'SMS.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'SMS.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'SMS.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="SMS.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="SMS.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n        <th md-column>{{ \'VOICE.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'VOICE.TALKING\' | translate }}</th>\n        <th md-column>{{ \'VOICE.BUSY\' | translate }}</th>\n        <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.busy }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="VOICE.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="VOICE.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="WHATSAPP.QUEUES">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.LOGGED_IN\' | translate }}</th>\n        <th md-column>{{ \'DASHBOARDS.AVAILABLE\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.PAUSED\' | translate }}</th>\n        <th md-column>{{ \'WHATSAPP.WAITING\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues.count > 0">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n        <td md-cell>{{queue.name}}</td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.editQueue($event, queue)" translate="WHATSAPP.EDIT_QUEUE">\n                  Edit Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.addAgent($event, queue)" translate="WHATSAPP.AGENTSADD_QUEUE">\n                  Add Agents to queue\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
+!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),function(){"use strict";angular.module("app.core",["ngAnimate","ngAria","ngCookies","ngMessages","ngResource","ngSanitize","ngMaterial","pascalprecht.translate","ui.router","ui.router.state.events","gridster","ds.clock","angucomplete-alt"])}(),function(){"use strict";function e(e,n){e.state("app.errors_error-404",{url:"/errors/error-404",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-404":{templateUrl:"app/errors/404/error-404.html",controller:"Error404Controller as vm"}},params:{status:404,statusText:"",data:{},config:{}},bodyClass:"error-404"}),n.addPart("app/errors/404")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-404",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.errors_error-500",{url:"/errors/error-500",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.errors_error-500":{templateUrl:"app/errors/500/error-500.html",controller:"Error500Controller as vm"}},params:{status:500,statusText:"",data:{},config:{}},bodyClass:"error-500"}),n.addPart("app/errors/500")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.errors.error-500",[]).config(e)}(),function(){"use strict";angular.module("app.errors",["app.errors.error-404","app.errors.error-500"])}(),function(){"use strict";function e(e){e.addPart("app/footer")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.footer",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.forgot",{url:"/forgot",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.forgot":{templateUrl:"app/forgot/forgot.html",controller:"ForgotPasswordController as vm"}},bodyClass:"forgot"}),n.addPart("app/forgot")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.forgot",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/header")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.header",[]).config(e)}(),function(){"use strict";angular.module("motion",["angular-toasty","app.core","app.auth","app.navigation","app.toolbar","app.quick-panel","app.header","app.footer","app.realtime","app.dashboards","app.staff","app.contactmanager","app.voice","app.chat","app.mail","app.sms","app.openchannel","app.fax","app.tools","app.callysquare","app.analytics","app.integrations","app.settings","app.motiondialer","app.help","app.jscripty","app.marketplace","app.plugins","app.video","app.whatsapp","app.login","app.forgot","app.reset","app.errors","app.user-setting","app.client-side-logging"])}(),function(){"use strict";function e(e,n){e.state("app.login",{url:"/login?token&userId",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.login":{templateUrl:"app/login/login.html",controller:"LoginController as vm"}},bodyClass:"login"}),n.addPart("app/login")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.login",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.analytics",{abstract:!0,url:"/analytics"}).state("app.analytics.metrics",{url:"/metrics",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/metrics/metrics.html",controller:"MetricsController as vm"}},resolve:{metrics:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticMetric@get",{fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Metrics",fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1201})}]},authenticate:!0,permissionId:1201,bodyClass:"analytics"}).state("app.analytics.extractedReports",{url:"/extractedReports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/extractedReports/extractedReports.html",controller:"ExtractedReportsController as vm"}},resolve:{extractedReports:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("analyticExtractedReport@get",{fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ExtractedReports",fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1202})}]},authenticate:!0,permissionId:1202,bodyClass:"analytics"}),n.addPart("app/main/apps/analytics")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.analytics",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.analytics.reports"]).config(e)}(),function(){"use strict";function e(e){e.state("app.analytics.reports",{url:"/reports",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/reports.html",controller:"ReportsController as vm"}},resolve:{treeReports:["apiResolver",function(e){return e.resolve("analyticTreeReport@get",{fields:"id,tree",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"}).state("app.analytics.reports.edit",{url:"/:id?tab",views:{"content@app":{templateUrl:"app/main/apps/analytics/views/reports/edit/view.html",controller:"ReportController as vm"}},resolve:{report:["apiResolver","$stateParams","$q","describeTable",function(e,n,a,i){var s;return e.resolve("analyticCustomReport@get",{fields:"createdAt,updatedAt,id,name,description,table,conditions,joins",id:n.id}).then(function(e){var n=[];if((s=e).joins)try{s.joins=JSON.parse(s.joins);for(var t=0;t<s.joins.length;t+=1)n.push(i.getColumns(s.joins[t].foreignTable))}catch(e){console.log(e)}return a.all(n)}).then(function(e){for(var n=0;n<e.length;n+=1)s.joins[n].foreignTableFields=_.difference(_.keys(e[n]),["$promise","$resolved"]);return s})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1203})}]},authenticate:!0,permissionId:1203,bodyClass:"analytics"})}e.$inject=["$stateProvider"],angular.module("app.analytics.reports",["ngJsTree"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.callysquare",{abstract:!0,url:"/callysquare"}).state("app.callysquare.odbcs",{url:"/odbcs",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/odbcs/odbcs.html",controller:"OdbcsController as vm"}},resolve:{odbcs:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1101})}]},authenticate:!0,permissionId:1101,bodyClass:"callysquare"}).state("app.callysquare.squareRecordings",{url:"/squareRecordings",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",controller:"SquareRecordingsController as vm"}},resolve:{squareRecordings:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareRecording@get",{fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareRecordings",fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadCallySquareRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1102})}]},authenticate:!0,permissionId:1102,bodyClass:"callysquare"}),n.addPart("app/main/apps/callysquare")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.callysquare",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.callysquare.projects"]).config(e)}(),function(){"use strict";function e(e){e.state("app.callysquare.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/projects.html",controller:"ProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name,description,notes",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"}).state("app.callysquare.projects.edit",{url:"/:id",views:{"content@app":{templateUrl:"app/main/apps/callysquare/views/projects/edit/view.html",controller:"ProjectController as vm"}},params:{crudPermissions:void 0},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("squareProject@get",{id:n.id})}],users:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,role",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Users",mergeResources:!0,fields:"id,fullname,role",sort:"name",nolimit:!0})}],trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",sort:"name",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",type:"inbound",fields:"id,name",sort:"name",nolimit:!0})}],sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"id,name",sort:"name",nolimit:!0})}],variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"id,name",sort:"name",nolimit:!0})}],databases:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareOdbc@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ODBC",fields:"id,name",sort:"name",nolimit:!0})}],projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("squareProject@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SquareProjects",fields:"id,name",sort:"name",nolimit:!0})}],contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"id,name",sort:"name",nolimit:!0})}],intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"id,name,IntervalId",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"id,name,IntervalId",sort:"name",nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"name",nolimit:!0})}],templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"id,name",sort:"name",nolimit:!0})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"name",nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"name",nolimit:!0})}],pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"id,name",sort:"name",nolimit:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1103})}]},authenticate:!0,permissionId:1103,bodyClass:"callysquare"})}e.$inject=["$stateProvider"],angular.module("app.callysquare.projects",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.chat",{abstract:!0,url:"/chat"}).state("app.chat.chatQueues",{url:"/chatQueues",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/chatQueues.html",controller:"ChatQueuesController as vm"}},resolve:{chatQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatQueues.edit",{url:"/:id?tab",params:{chatQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatQueues/edit/view.html",controller:"ChatQueueController as vm"}},resolve:{chatQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("chatQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:501,bodyClass:"chat"}).state("app.chat.chatWebsites",{url:"/chatWebsites",views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/chatWebsites.html",controller:"ChatWebsitesController as vm"}},resolve:{chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}).state("app.chat.chatWebsites.edit",{url:"/:id?tab",params:{chatWebsite:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/chat/views/chatWebsites/edit/view.html",controller:"ChatWebsiteController as vm"}},resolve:{chatWebsite:["apiResolver","$stateParams",function(e,n){return e.resolve("chatWebsite@get",{fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:502})}]},authenticate:!0,permissionId:502,bodyClass:"chat"}),n.addPart("app/main/apps/chat")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.chat",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.chat.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.chat.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/chat/views/realtime/realtime.html",controller:"ChatRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:510})}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.agents",{url:"/agents",params:{channel:"chat"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:510}).state("app.chat.realtime.queues",{url:"/queues",params:{channel:"chat"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"ChatQueues":void 0,channel:"chat",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:501})}]},authenticate:!0,permissionId:510})}e.$inject=["$stateProvider"],angular.module("app.chat.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.contactmanager",{abstract:!0,url:"/contactmanager"}).state("app.contactmanager.lists",{url:"/lists",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/lists.html",controller:"ListsController as vm"}},resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadContactManagerLists",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.lists.edit",{url:"/:id?tab",params:{list:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/lists/edit/view.html",controller:"ListController as vm"}},resolve:{list:["apiResolver","$stateParams",function(e,n){return e.resolve("cmList@get",{fields:"createdAt,updatedAt,id,name,description,dialPrefix",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:301})}]},authenticate:!0,permissionId:301,bodyClass:"contactmanager"}).state("app.contactmanager.companies",{url:"/companies",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/companies.html",controller:"CompaniesController as vm"}},resolve:{companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.companies.edit",{url:"/:id?tab",params:{company:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/companies/edit/view.html",controller:"CompanyController as vm"}},resolve:{company:["apiResolver","$stateParams",function(e,n){return e.resolve("cmCompany@get",{fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:302})}]},authenticate:!0,permissionId:302,bodyClass:"contactmanager"}).state("app.contactmanager.globalCustomFields",{url:"/globalCustomFields",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",controller:"GlobalCustomFieldsController as vm"}},resolve:{globalCustomFields:["apiResolver","Auth",function(e,n){return e.resolve("cmCustomField@get",{fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:304})}]},authenticate:!0,permissionId:304,bodyClass:"contactmanager"}),n.addPart("app/main/apps/contactmanager")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.contactmanager",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.contactmanager.contacts"]).config(e)}(),function(){"use strict";function e(e){e.state("app.contactmanager.contacts",{url:"/contacts?ListId&CompanyId",views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/contacts.html",controller:"ContactsController as vm"}},resolve:{contacts:["apiResolver","Auth","$stateParams",function(e,n,t){return n.hasRole("admin")?e.resolve("cmContact@get",_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t)):e.resolve("userProfile@getResources",_.merge({id:n.getCurrentUser().userProfileId,section:"Contacts",includeAll:!0,sort:"-updatedAt",limit:10,offset:0},t))}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],listsMap:["lists",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies",fields:"id,name",sort:"name",nolimit:!0})}],companiesMap:["companies",function(e){for(var n={},t=0;t<e.rows.length;t++)n[e.rows[t].id]=e.rows[t].name;return n}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"id,name",sort:"name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"id,name",sort:"name",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"}).state("app.contactmanager.contacts.edit",{url:"/:id?tab",params:{crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/contactmanager/views/contacts/edit/view.html",controller:"ContactController as vm"}},resolve:{contact:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@get",{id:n.id}).then(function(e){return e.dateOfBirth&&(e.dateOfBirth=new Date(e.dateOfBirth)),e}).catch(function(e){console.error(e)})}],hoppers:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHoppers",{id:n.id,fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,offset:0})}],finals:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperFinals",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-updatedAt",limit:10,offset:0})}],histories:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getHopperHistories",{id:n.id,fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,offset:0})}],jscriptySessions:["apiResolver","$stateParams",function(e,n){return e.resolve("cmContact@getJscriptySessions",{id:n.id,fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,offset:0})}],companies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmCompany@get"):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Companies"})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",sort:"-updatedAt",nolimit:!0})}],customFields:["apiResolver","contact",function(e,n){return n.ListId?e.resolve("cmList@getCustomFields",{id:n.ListId}):null}],tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{sort:"name"}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:303})}]},authenticate:!0,permissionId:303,bodyClass:"contactmanager"})}e.$inject=["$stateProvider"],angular.module("app.contactmanager.contacts",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.dashboards",{abstract:!0,url:"/dashboards"}),n.addPart("app/main/apps/dashboards")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.dashboards",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.dashboards.general","app.dashboards.custom"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.custom",{url:"/custom/:id",views:{"content@app":{templateUrl:"app/main/apps/dashboards/views/custom/custom.html",controller:"DashboardCustomController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("voiceQueue@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"VoiceQueues",mergeResources:!0,fields:"id,name",channel:"voice",nolimit:!0})).then(function(e){return t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:100})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.custom",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general",{url:"/general",views:{"content@app":{templateProvider:["$stateParams","$templateFactory","Auth","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),t.isAgent()?n.fromUrl("app/main/apps/dashboards/views/general/agent/agent.general.html",e):n.fromUrl("app/main/apps/dashboards/views/general/user/user.general.html",e)}],controllerProvider:["Auth",function(e){return e.isAgent()?"AgentDashboardGeneralController as vm":"UserDashboardGeneralController as vm"}]}},resolve:{globalUserLists:["apiResolver","Auth",function(e,n){return e.resolve("user@getLists",{id:n.getCurrentUser().id,sort:"name",nolimit:!0})}],globalLists:["apiResolver",function(e){return e.resolve("cmList@get",{sort:"name",nolimit:!0})}],globalTags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0})}],globalCompanies:["apiResolver",function(e){return e.resolve("cmCompany@get",{sort:"name",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general",["ngMaterialDateRangePicker","app.dashboards.general.user"]).config(e)}(),function(){"use strict";function e(e){e.state("app.dashboards.general.voice",{url:"/voice",data:{selectedTab:0},views:{voice:{templateUrl:"app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",controller:"UserVoiceDashboardGeneralController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],inboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"inbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"id,name",type:"inbound",channel:"voice",nolimit:!0})}],outbound:["apiResolver",function(e){return e.resolve("rpc@getOutbound")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.dialer",{url:"/dialer",data:{selectedTab:1},views:{dialer:{templateUrl:"app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",controller:"UserVoiceDashboardDialerController as vm"}},resolve:{rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}],outboundQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"id,name",type:"outbound",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"id,name",type:"outbound",channel:"voice",nolimit:!0})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.chat",{url:"/chat",data:{selectedTab:2},views:{chat:{templateUrl:"app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",controller:"UserChatDashboardGeneralController as vm"}},resolve:{chatInteractions:["apiResolver",function(e){return e.resolve("chatInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,ChatWebsiteId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],chatWebsites:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("chatWebsite@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChatWebsites",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.mail",{url:"/mail",data:{selectedTab:3},views:{mail:{templateUrl:"app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",controller:"UserMailDashboardGeneralController as vm"}},resolve:{mailInteractions:["apiResolver",function(e){return e.resolve("mailInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,MailAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.sms",{url:"/sms",data:{selectedTab:4},views:{sms:{templateUrl:"app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",controller:"UserSmsDashboardGeneralController as vm"}},resolve:{smsInteractions:["apiResolver",function(e){return e.resolve("smsInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,SmsAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.openchannel",{url:"/openchannel",data:{selectedTab:5},views:{openchannel:{templateUrl:"app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",controller:"UserOpenchannelDashboardGeneralController as vm"}},resolve:{openchannelInteractions:["apiResolver",function(e){return e.resolve("openchannelInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,OpenchannelAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.fax",{url:"/fax",data:{selectedTab:6},views:{fax:{templateUrl:"app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",controller:"UserFaxDashboardGeneralController as vm"}},resolve:{faxInteractions:["apiResolver",function(e){return e.resolve("faxInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,FaxAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"}).state("app.dashboards.general.whatsapp",{url:"/whatsapp",data:{selectedTab:7},views:{whatsapp:{templateUrl:"app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",controller:"UserWhatsappDashboardGeneralController as vm"}},resolve:{whatsappInteractions:["apiResolver",function(e){return e.resolve("whatsappInteraction@get",{fields:"id,closed,createdAt,closedAt,disposition,read1stAt,UserId,WhatsappAccountId",createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}],whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"id,name",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"id,name",sort:"-updatedAt",nolimit:!0})}]},authenticate:!0,bodyClass:"dashboards"})}e.$inject=["$stateProvider"],angular.module("app.dashboards.general.user",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.fax",{abstract:!0,url:"/fax"}).state("app.fax.faxQueues",{url:"/faxQueues",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/faxQueues.html",controller:"FaxQueuesController as vm"}},resolve:{faxQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxQueues.edit",{url:"/:id?tab",params:{faxQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxQueues/edit/view.html",controller:"FaxQueueController as vm"}},resolve:{faxQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("faxQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:901,bodyClass:"fax"}).state("app.fax.faxAccounts",{url:"/faxAccounts",views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/faxAccounts.html",controller:"FaxAccountsController as vm"}},resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}).state("app.fax.faxAccounts.edit",{url:"/:id?tab",params:{faxAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/fax/views/faxAccounts/edit/view.html",controller:"FaxAccountController as vm"}},resolve:{faxAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("faxAccount@get",{fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}]},authenticate:!0,permissionId:902,bodyClass:"fax"}),n.addPart("app/main/apps/fax")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.fax",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.fax.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.fax.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/fax/views/realtime/realtime.html",controller:"FaxRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:910})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.agents",{url:"/agents",params:{channel:"fax"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.trunks",{url:"/trunks",controller:"TrunksFaxRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.queues",{url:"/queues",params:{channel:"fax"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"FaxQueues":void 0,channel:"fax",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:901})}]},authenticate:!0,permissionId:910}).state("app.fax.realtime.accounts",{url:"/accounts",controller:"FaxAccountsRealtimeController as vm",templateUrl:"app/main/apps/fax/views/realtime/accounts/view.html",resolve:{faxAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("faxAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FaxAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:902})}],rpcFaxAccounts:["apiResolver",function(e){return e.resolve("rpc@getFaxAccounts")}]},authenticate:!0,permissionId:910})}e.$inject=["$stateProvider"],angular.module("app.fax.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.help",{abstract:!0,url:"/help"}),n.addPart("app/main/apps/help")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.help",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.help.about"]).config(e)}(),function(){"use strict";function e(e){e.state("app.help.about",{url:"/about",views:{"content@app":{templateUrl:"app/main/apps/help/views/about/about.html",controller:"AboutController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1600,bodyClass:"help"})}e.$inject=["$stateProvider"],angular.module("app.help.about",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.integrations",{abstract:!0,url:"/integrations"}).state("app.integrations.zendeskAccounts",{url:"/zendeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",controller:"ZendeskAccountsController as vm"}},resolve:{zendeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZendeskAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.zendeskAccounts.edit",{url:"/:id?tab",params:{zendeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/view.html",controller:"ZendeskAccountController as vm"}},resolve:{zendeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZendeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1301})}]},authenticate:!0,permissionId:1301,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts",{url:"/salesforceAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",controller:"SalesforceAccountsController as vm"}},resolve:{salesforceAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SalesforceAccounts",fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.salesforceAccounts.edit",{url:"/:id?tab",params:{salesforceAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/view.html",controller:"SalesforceAccountController as vm"}},resolve:{salesforceAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSalesforceAccount@get",{fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1302})}]},authenticate:!0,permissionId:1302,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts",{url:"/freshdeskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",controller:"FreshdeskAccountsController as vm"}},resolve:{freshdeskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshdeskAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.freshdeskAccounts.edit",{url:"/:id?tab",params:{freshdeskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",controller:"FreshdeskAccountController as vm"}},resolve:{freshdeskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshdeskAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1303})}]},authenticate:!0,permissionId:1303,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts",{url:"/sugarcrmAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",controller:"SugarcrmAccountsController as vm"}},resolve:{sugarcrmAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SugarcrmAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.sugarcrmAccounts.edit",{url:"/:id?tab",params:{sugarcrmAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",controller:"SugarcrmAccountController as vm"}},resolve:{sugarcrmAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intSugarcrmAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1305})}]},authenticate:!0,permissionId:1305,bodyClass:"integrations"}).state("app.integrations.deskAccounts",{url:"/deskAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/deskAccounts.html",controller:"DeskAccountsController as vm"}},resolve:{deskAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"DeskAccounts",fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.deskAccounts.edit",{url:"/:id?tab",params:{deskAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/view.html",controller:"DeskAccountController as vm"}},resolve:{deskAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intDeskAccount@get",{fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1306})}]},authenticate:!0,permissionId:1306,bodyClass:"integrations"}).state("app.integrations.zohoAccounts",{url:"/zohoAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",controller:"ZohoAccountsController as vm"}},resolve:{zohoAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ZohoAccounts",fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.zohoAccounts.edit",{url:"/:id?tab",params:{zohoAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/view.html",controller:"ZohoAccountController as vm"}},resolve:{zohoAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intZohoAccount@get",{fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1307})}]},authenticate:!0,permissionId:1307,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts",{url:"/vtigerAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",controller:"VtigerAccountsController as vm"}},resolve:{vtigerAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VtigerAccounts",fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.vtigerAccounts.edit",{url:"/:id?tab",params:{vtigerAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/view.html",controller:"VtigerAccountController as vm"}},resolve:{vtigerAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intVtigerAccount@get",{fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1308})}]},authenticate:!0,permissionId:1308,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts",{url:"/dynamics365Accounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",controller:"Dynamics365AccountsController as vm"}},resolve:{dynamics365Accounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dynamics365Accounts",fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.dynamics365Accounts.edit",{url:"/:id?tab",params:{dynamics365Account:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",controller:"Dynamics365AccountController as vm"}},resolve:{dynamics365Account:["apiResolver","$stateParams",function(e,n){return e.resolve("intDynamics365Account@get",{fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1309})}]},authenticate:!0,permissionId:1309,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts",{url:"/servicenowAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",controller:"ServicenowAccountsController as vm"}},resolve:{servicenowAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ServicenowAccounts",fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.servicenowAccounts.edit",{url:"/:id?tab",params:{servicenowAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/view.html",controller:"ServicenowAccountController as vm"}},resolve:{servicenowAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intServicenowAccount@get",{fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1310})}]},authenticate:!0,permissionId:1310,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts",{url:"/freshsalesAccounts",views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",controller:"FreshsalesAccountsController as vm"}},resolve:{freshsalesAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"FreshsalesAccounts",fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}).state("app.integrations.freshsalesAccounts.edit",{url:"/:id?tab",params:{freshsalesAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",controller:"FreshsalesAccountController as vm"}},resolve:{freshsalesAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("intFreshsalesAccount@get",{fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1304})}]},authenticate:!0,permissionId:1304,bodyClass:"integrations"}),n.addPart("app/main/apps/integrations")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.integrations",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.jscripty",{abstract:!0,url:"/jscripty"}).state("app.jscripty.projects",{url:"/projects",views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/projects.html",controller:"JscriptyProjectsController as vm"}},resolve:{projects:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Projects",fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}).state("app.jscripty.projects.edit",{url:"/:id?tab",params:{project:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/jscripty/views/projects/edit/view.html",controller:"JscriptyProjectController as vm"}},resolve:{project:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptyProject@get",{fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadJscriptySessions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1701})}]},authenticate:!0,permissionId:1701,bodyClass:"jscripty"}),n.addPart("app/main/apps/jscripty")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.jscripty",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.mail",{abstract:!0,url:"/mail"}).state("app.mail.mailQueues",{url:"/mailQueues",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/mailQueues.html",controller:"MailQueuesController as vm"}},resolve:{mailQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailQueues.edit",{url:"/:id?tab",params:{mailQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailQueues/edit/view.html",controller:"MailQueueController as vm"}},resolve:{mailQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("mailQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:601,bodyClass:"mail"}).state("app.mail.mailAccounts",{url:"/mailAccounts",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/mailAccounts.html",controller:"MailAccountsController as vm"}},resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailAccounts.edit",{url:"/:id?tab",params:{mailAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailAccounts/edit/view.html",controller:"MailAccountController as vm"}},resolve:{mailAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}]},authenticate:!0,permissionId:602,bodyClass:"mail"}).state("app.mail.mailSubtatuses",{url:"/mailSubtatuses",views:{"content@app":{templateUrl:"app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",controller:"MailSubstatusesController as vm"}},resolve:{mailSubtatuses:["apiResolver",function(e){return e.resolve("mailSubstatus@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:603})}]},authenticate:!0,permissionId:603,bodyClass:"mail"}),n.addPart("app/main/apps/mail")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.mail",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.mail.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.mail.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/mail/views/realtime/realtime.html",controller:"MailRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:610})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.agents",{url:"/agents",params:{channel:"mail"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.queues",{url:"/queues",params:{channel:"mail"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"MailQueues":void 0,channel:"mail",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:601})}]},authenticate:!0,permissionId:610}).state("app.mail.realtime.accounts",{url:"/accounts",controller:"MailAccountsRealtimeController as vm",templateUrl:"app/main/apps/mail/views/realtime/accounts/view.html",resolve:{mailAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("mailAccount@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MailAccounts",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:602})}],rpcMailAccounts:["apiResolver",function(e){return e.resolve("rpc@getMailAccounts")}]},authenticate:!0,permissionId:610})}e.$inject=["$stateProvider"],angular.module("app.mail.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.marketplace",{abstract:!0,url:"/marketplace"}).state("app.marketplace.plugins",{url:"/plugins",views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/plugins.html",controller:"MarketplacePluginsController as vm"}},resolve:{plugins:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Plugins",fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}).state("app.marketplace.plugins.edit",{url:"/:id?tab",params:{plugin:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/marketplace/views/plugins/edit/view.html",controller:"MarketplacePluginController as vm"}},resolve:{plugin:["apiResolver","$stateParams",function(e,n){return e.resolve("plugin@get",{fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1801})}]},authenticate:!0,permissionId:1801,bodyClass:"marketplace"}),n.addPart("app/main/apps/marketplace")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.marketplace",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.motiondialer",{abstract:!0,url:"/motiondialer"}).state("app.motiondialer.queueCampaigns",{url:"/queueCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",controller:"QueueCampaignsController as vm"}},resolve:{queueCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.queueCampaigns.edit",{url:"/:id?tab",params:{queueCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",controller:"QueueCampaignController as vm"}},resolve:{queueCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1501,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns",{url:"/ivrCampaigns",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",controller:"IvrCampaignsController as vm"}},resolve:{ivrCampaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}).state("app.motiondialer.ivrCampaigns.edit",{url:"/:id?tab",params:{ivrCampaign:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",controller:"IvrCampaignController as vm"}},resolve:{ivrCampaign:["apiResolver","$stateParams",function(e,n){return e.resolve("campaign@get",{fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}]},authenticate:!0,permissionId:1502,bodyClass:"motiondialer"}),n.addPart("app/main/apps/motiondialer")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.motiondialer",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.motiondialer.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.motiondialer.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/motiondialer/views/realtime/realtime.html",controller:"MotionDialerRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1510})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"outbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"outbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"QueueCampaigns":void 0,channel:"voice",type:"outbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1501})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:1510}).state("app.motiondialer.realtime.ivr_campaigns",{url:"/ivr_campaigns",controller:"IvrCampaignsMotionDialerRealtimeController as vm",templateUrl:"app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",resolve:{campaigns:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("campaign@get",{sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"IvrCampaigns",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1502})}],rpcCampaigns:["apiResolver",function(e){return e.resolve("rpc@getCampaigns")}]},authenticate:!0,permissionId:1510})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.openchannel",{abstract:!0,url:"/openchannel"}).state("app.openchannel.openchannelQueues",{url:"/openchannelQueues",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",controller:"OpenchannelQueuesController as vm"}},resolve:{openchannelQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelQueues.edit",{url:"/:id?tab",params:{openchannelQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/view.html",controller:"OpenchannelQueueController as vm"}},resolve:{openchannelQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:801,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts",{url:"/openchannelAccounts",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",controller:"OpenchannelAccountsController as vm"}},resolve:{openchannelAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OpenchannelAccounts",fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}).state("app.openchannel.openchannelAccounts.edit",{url:"/:id?tab",params:{openchannelAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",controller:"OpenchannelAccountController as vm"}},resolve:{openchannelAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("openchannelAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadAttachments,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:802})}]},authenticate:!0,permissionId:802,bodyClass:"openchannel"}),n.addPart("app/main/apps/openchannel")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.openchannel",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.openchannel.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.openchannel.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/openchannel/views/realtime/realtime.html",controller:"OpenchannelRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:810})}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.agents",{url:"/agents",params:{channel:"openchannel"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:810}).state("app.openchannel.realtime.queues",{url:"/queues",params:{channel:"openchannel"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"OpenchannelQueues":void 0,channel:"openchannel",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:801})}]},authenticate:!0,permissionId:810})}e.$inject=["$stateProvider"],angular.module("app.openchannel.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.plugins",{abstract:!0,url:"/plugins"}),n.addPart("app/main/apps/plugins")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.plugins",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.plugins.plugin"]).config(e)}(),function(){"use strict";function e(e){e.state("app.plugins.plugin",{url:"/plugin/:id",views:{"content@app":{templateUrl:"app/main/apps/plugins/views/plugin/plugin.html",controller:"PluginController as vm"}},resolve:{},authenticate:!0,bodyClass:"plugins"})}e.$inject=["$stateProvider"],angular.module("app.plugins.plugin",[]).config(e)}(),function(){"use strict";angular.module("app.realtime",[])}(),function(){"use strict";function e(e,n){e.state("app.settings",{abstract:!0,url:"/settings"}).state("app.settings.generals",{url:"/generals",views:{"content@app":{templateUrl:"app/main/apps/settings/views/generals/generals.html",controller:"GeneralsController as vm"}},resolve:{generals:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,min_internal,securePassword,callRecordingEncryption,chatTimeout,phoneBarAutoUpdater,defaultScreenRecordingPath,phoneBarAutoUpdaterUrl,enableEmailPreview,split,splitSizeCsv,splitSizePdf,splitSizeXlsx,searchOnEnterKey,messagesAlignment,phoneBarRememberMeEnabled,rtlSupport,allowedLoginAttempts,blockDuration,loginMailFrequency,language,bucket,transcribe,transcribeRegion,transcribeAccountId,sentiment,sentimentRegion,sentimentAccountId,googleSsoEnabled,enforcePasswordHistory,passwordHistoryLimit,enablePrivacyPolicyEmail,privacyPolicyEmail,enablePrivacyPolicyName,privacyPolicyName,enablePrivacyPolicyNumber,privacyPolicyNumber,chatInteractionsReloadTimeout,mailInteractionsReloadTimeout,openchannelInteractionsReloadTimeout,smsInteractionsReloadTimeout,whatsappInteractionsReloadTimeout,stopRecordingOnTransfer,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.smtps",{url:"/smtps",views:{"content@app":{templateUrl:"app/main/apps/settings/views/smtps/smtps.html",controller:"SmtpController as vm"}},resolve:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.networks",{url:"/networks",views:{"content@app":{templateUrl:"app/main/apps/settings/views/networks/networks.html",controller:"NetworksController as vm"}},resolve:{networks:["apiResolver",function(e){return e.resolve("network@get",{fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.customizations",{url:"/customizations",views:{"content@app":{templateUrl:"app/main/apps/settings/views/customizations/customizations.html",controller:"CustomizationsController as vm"}},resolve:{customizations:["apiResolver",function(e){return e.resolve("setting@get",{fields:"createdAt,updatedAt,id,defaultLogo,defaultLoginLogo,defaultFavicon,defaultHeaderWhiteLabel,headerWhiteLabel,defaultPageTitle,pageTitle,defaultPreferred",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}).state("app.settings.cloudProviders",{url:"/cloudProviders",views:{"content@app":{templateUrl:"app/main/apps/settings/views/cloudProviders/cloudProviders.html",controller:"CloudProvidersController as vm"}},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.settings",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.settings.updates","app.settings.license","app.settings.system"]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.license",{url:"/license",views:{"content@app":{templateUrl:"app/main/apps/settings/views/license/license.html",controller:"LicenseController as vm"}},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.license",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.system",{url:"/system?tab",views:{"content@app":{templateUrl:"app/main/apps/settings/views/system/system.html",controller:"SystemController as vm"}},resolve:{system:["apiResolver",function(e){return e.resolve("system@get")}],processes:["apiResolver",function(e){return e.resolve("pm2@get")}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.system",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.settings.updates",{url:"/updates",views:{"content@app":{templateUrl:"app/main/apps/settings/views/updates/updates.html",controller:"UpdatesController as vm"}},resolve:{version:["apiResolver",function(e){return e.resolve("version@get",{latest:!0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1400})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"})}e.$inject=["$stateProvider"],angular.module("app.settings.updates",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.sms",{abstract:!0,url:"/sms"}).state("app.sms.smsQueues",{url:"/smsQueues",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/smsQueues.html",controller:"SmsQueuesController as vm"}},resolve:{smsQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsQueues.edit",{url:"/:id?tab",params:{smsQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsQueues/edit/view.html",controller:"SmsQueueController as vm"}},resolve:{smsQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("smsQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:701,bodyClass:"sms"}).state("app.sms.smsAccounts",{url:"/smsAccounts",views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/smsAccounts.html",controller:"SmsAccountsController as vm"}},resolve:{smsAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"SmsAccounts",fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}).state("app.sms.smsAccounts.edit",{url:"/:id?tab",params:{smsAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/sms/views/smsAccounts/edit/view.html",controller:"SmsAccountController as vm"}},resolve:{smsAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("smsAccount@get",{fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:702})}]},authenticate:!0,permissionId:702,bodyClass:"sms"}),n.addPart("app/main/apps/sms")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.sms",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.sms.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.sms.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/sms/views/realtime/realtime.html",controller:"SmsRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:710})}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.agents",{url:"/agents",params:{channel:"sms"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:710}).state("app.sms.realtime.queues",{url:"/queues",params:{channel:"sms"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"SmsQueues":void 0,channel:"sms",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:701})}]},authenticate:!0,permissionId:710})}e.$inject=["$stateProvider"],angular.module("app.sms.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.staff",{abstract:!0,url:"/staff"}).state("app.staff.users",{url:"/users",views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/users.html",controller:"UsersController as vm"}},resolve:{users:["apiResolver",function(e){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.users.edit",{url:"/:id?tab",params:{user:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/users/edit/view.html",controller:"UserController as vm"}},resolve:{user:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:201})}]},authenticate:!0,permissionId:201,bodyClass:"staff"}).state("app.staff.agents",{url:"/agents",views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/agents.html",controller:"AgentsController as vm"}},resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.agents.edit",{url:"/:id?tab",params:{agent:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/agents/edit/view.html",controller:"AgentController as vm"}},resolve:{agent:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}]},authenticate:!0,permissionId:202,bodyClass:"staff"}).state("app.staff.telephones",{url:"/telephones",views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/telephones.html",controller:"TelephonesController as vm"}},resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.telephones.edit",{url:"/:id?tab",params:{telephone:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/telephones/edit/view.html",controller:"TelephoneController as vm"}},resolve:{telephone:["apiResolver","$stateParams",function(e,n){return e.resolve("user@get",{fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}]},authenticate:!0,permissionId:203,bodyClass:"staff"}).state("app.staff.teams",{url:"/teams",views:{"content@app":{templateUrl:"app/main/apps/staff/views/teams/teams.html",controller:"TeamsController as vm"}},resolve:{teams:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("team@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Teams",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:204})}]},authenticate:!0,permissionId:204,bodyClass:"staff"}).state("app.staff.userProfiles",{url:"/userProfiles",views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/userProfiles.html",controller:"UserProfilesController as vm"}},resolve:{userProfiles:["apiResolver",function(e){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}).state("app.staff.userProfiles.edit",{url:"/:id?tab",params:{userProfile:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/staff/views/userProfiles/edit/view.html",controller:"UserProfileController as vm"}},resolve:{userProfile:["apiResolver","$stateParams",function(e,n){return e.resolve("userProfile@get",{fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:205})}]},authenticate:!0,permissionId:205,bodyClass:"staff"}),n.addPart("app/main/apps/staff")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.staff",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.tools",{abstract:!0,url:"/tools"}).state("app.tools.cannedAnswers",{url:"/cannedAnswers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",controller:"CannedAnswersController as vm"}},resolve:{cannedAnswers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cannedAnswer@get",{fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CannedAnswers",fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1001})}]},authenticate:!0,permissionId:1001,bodyClass:"tools"}).state("app.tools.customDashboards",{url:"/customDashboards",views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/customDashboards.html",controller:"CustomDashboardsController as vm"}},resolve:{customDashboards:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"CustomDashboards",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.customDashboards.edit",{url:"/:id?tab",params:{customDashboard:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/customDashboards/edit/view.html",controller:"CustomDashboardController as vm"}},resolve:{customDashboard:["apiResolver","$stateParams",function(e,n){return e.resolve("dashboard@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1003})}]},authenticate:!0,permissionId:1003,bodyClass:"tools"}).state("app.tools.intervals",{url:"/intervals",views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/intervals.html",controller:"IntervalsController as vm"}},resolve:{intervals:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Intervals",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.intervals.edit",{url:"/:id?tab",params:{interval:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/intervals/edit/view.html",controller:"IntervalController as vm"}},resolve:{interval:["apiResolver","$stateParams",function(e,n){return e.resolve("interval@get",{fields:"createdAt,updatedAt,id,name,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1004})}]},authenticate:!0,permissionId:1004,bodyClass:"tools"}).state("app.tools.pauses",{url:"/pauses",views:{"content@app":{templateUrl:"app/main/apps/tools/views/pauses/pauses.html",controller:"PausesController as vm"}},resolve:{pauses:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("pause@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Pauses",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1005})}]},authenticate:!0,permissionId:1005,bodyClass:"tools"}).state("app.tools.schedules",{url:"/schedules",views:{"content@app":{templateUrl:"app/main/apps/tools/views/schedules/schedules.html",controller:"SchedulesController as vm"}},resolve:{schedules:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("schedule@get",{fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Scheduler",fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1006})}]},authenticate:!0,permissionId:1006,bodyClass:"tools"}).state("app.tools.sounds",{url:"/sounds",views:{"content@app":{templateUrl:"app/main/apps/tools/views/sounds/sounds.html",controller:"SoundsController as vm"}},resolve:{sounds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("sound@get",{fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Sounds",fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1007})}]},authenticate:!0,permissionId:1007,bodyClass:"tools"}).state("app.tools.tags",{url:"/tags",views:{"content@app":{templateUrl:"app/main/apps/tools/views/tags/tags.html",controller:"TagsController as vm"}},resolve:{tags:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("tag@get",{fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Tags",fields:"createdAt,updatedAt,id,name,description,color",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1008})}]},authenticate:!0,permissionId:1008,bodyClass:"tools"}).state("app.tools.templates",{url:"/templates",views:{"content@app":{templateUrl:"app/main/apps/tools/views/templates/templates.html",controller:"TemplatesController as vm"}},resolve:{templates:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("template@get",{fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Templates",fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1009})}]},authenticate:!0,permissionId:1009,bodyClass:"tools"}).state("app.tools.trunks",{url:"/trunks",views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/trunks.html",controller:"TrunksController as vm"}},resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.trunks.edit",{url:"/:id?tab",params:{trunk:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/trunks/edit/view.html",controller:"TrunkController as vm"}},resolve:{trunk:["apiResolver","$stateParams",function(e,n){return e.resolve("trunk@get",{fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}]},authenticate:!0,permissionId:1011,bodyClass:"tools"}).state("app.tools.variables",{url:"/variables",views:{"content@app":{templateUrl:"app/main/apps/tools/views/variables/variables.html",controller:"VariablesController as vm"}},resolve:{variables:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("variable@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Variables",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1012})}]},authenticate:!0,permissionId:1012,bodyClass:"tools"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1013})}]},authenticate:!0,permissionId:1013,bodyClass:"tools"}),n.addPart("app/main/apps/tools")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.tools",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.tools.dispositions","app.tools.triggers"]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.dispositions",{url:"/dispositions",views:{"content@app":{templateUrl:"app/main/apps/tools/views/dispositions/dispositions.html",controller:"DispositionsController as vm"}},resolve:{dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1002})}]},authenticate:!0,permissionId:1002,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.dispositions",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.tools.triggers",{url:"/triggers",views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/triggers.html",controller:"TriggersController as vm"}},resolve:{triggers:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Triggers",fields:"createdAt,updatedAt,id,name,channel,status,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"}).state("app.tools.triggers.edit",{url:"/:id?tab",params:{trigger:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/tools/views/triggers/edit/view.html",controller:"TriggerController as vm"}},resolve:{trigger:["apiResolver","$stateParams",function(e,n){return e.resolve("trigger@get",{fields:"createdAt,updatedAt,id,name,channel,status,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1010})}]},authenticate:!0,permissionId:1010,bodyClass:"tools"})}e.$inject=["$stateProvider"],angular.module("app.tools.triggers",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.video",{abstract:!0,url:"/video"}).state("app.video.screenRecordings",{url:"/screenRecordings",views:{"content@app":{templateUrl:"app/main/apps/video/views/screenRecordings/screenRecordings.html",controller:"ScreenRecordingsController as vm"}},resolve:{screenRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("screenRecording@get",{fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ScreenRecordings",fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:t.firstLastDayMonth(),includeAll:"true",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadScreenRecordings",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2001})}]},authenticate:!0,permissionId:2001,bodyClass:"video"}),n.addPart("app/main/apps/video")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.video",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter"]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.inboundRoutes",{url:"/inboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",controller:"InboundRoutesController as vm"}},resolve:{inboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InboundRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"}).state("app.voice.inboundRoutes.edit",{url:"/:id?tab",params:{inboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/inboundRoutes/edit/view.html",controller:"InboundRouteController as vm"}},resolve:{inboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:402})}]},authenticate:!0,permissionId:402,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.inboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.internalRoutes",{url:"/internalRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/internalRoutes.html",controller:"InternalRoutesController as vm"}},resolve:{internalRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"InternalRoutes",fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"}).state("app.voice.internalRoutes.edit",{url:"/:id?tab",params:{internalRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/internalRoutes/edit/view.html",controller:"InternalRouteController as vm"}},resolve:{internalRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:404})}]},authenticate:!0,permissionId:404,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.internalRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.outboundRoutes",{url:"/outboundRoutes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",controller:"OutboundRoutesController as vm"}},resolve:{outboundRoutes:["apiResolver","Auth",function(e,n){return n.isAdmin()?e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"OutboundRoutes",fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"}).state("app.voice.outboundRoutes.edit",{url:"/:id?tab",params:{outboundRoute:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/outboundRoutes/edit/view.html",controller:"OutboundRouteController as vm"}},resolve:{outboundRoute:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceExtension@get",{fields:"id,appdata,type,exten,context,recordingFormat,cutdigits,description,alias,createdAt,updatedAt",id:n.id})}],contexts:["apiResolver",function(e){return e.resolve("voiceContext@get",{fields:"id,name",sort:"name"})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:403})}]},authenticate:!0,permissionId:403,bodyClass:"voice"})}e.$inject=["$stateProvider"],angular.module("app.voice.outboundRoutes",[]).config(e)}(),function(){"use strict";function e(e){e.state("app.voice.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/voice/views/realtime/realtime.html",controller:"VoiceRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:411})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.agents",{url:"/agents",params:{channel:"voice",direction:"inbound"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.telephones",{url:"/telephones",controller:"TelephonesVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/telephones/view.html",resolve:{telephones:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Telephones",fields:"id,fullname,userpic,internal",role:"telephone",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:203})}],rpcTelephones:["apiResolver",function(e){return e.resolve("rpc@getTelephones")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.trunks",{url:"/trunks",controller:"TrunksVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/trunks/view.html",resolve:{trunks:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("trunk@get",{fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Trunks",fields:"id,name",active:!0,sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:1011})}],rpcTrunks:["apiResolver",function(e){return e.resolve("rpc@getTrunks")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queues",{url:"/queues",params:{channel:"voice",direction:"inbound"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"VoiceQueues":void 0,channel:"voice",type:"inbound",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_calls",{url:"/queue_calls",controller:"QueueCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_calls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcVoiceQueuesChannels:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueuesChannels")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.abandonedcalls",{url:"/abandonedcalls",controller:"AbandonedCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/abandonedcalls/view.html",resolve:{agents:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("user@get",{fields:"id,name,role,context",role:"agent",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Agents",fields:"id,name,role,context",role:"agent",nolimit:!0})}],queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",sort:"-updatedAt",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],dispositions:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("disposition@get",{fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Dispositions",fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.queue_params",{url:"/queue_params",controller:"QueueParamsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/queue_params/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}],rpcQueues:["apiResolver",function(e){return e.resolve("rpc@getVoiceQueues")}]},authenticate:!0,permissionId:411}).state("app.voice.realtime.outbound_calls",{url:"/outbound_calls",controller:"OutboundCallsVoiceRealtimeController as vm",templateUrl:"app/main/apps/voice/views/realtime/outbound_calls/view.html",resolve:{rpcCalls:["apiResolver",function(e){return e.resolve("rpc@getOutboundChannels")}]},authenticate:!0,permissionId:411})}e.$inject=["$stateProvider"],angular.module("app.voice.realtime",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.voice",{abstract:!0,url:"/voice"}).state("app.voice.voiceQueues",{url:"/voiceQueues",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/voiceQueues.html",controller:"VoiceQueuesController as vm"}},resolve:{voiceQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceQueues",fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.voiceQueues.edit",{url:"/:id?tab",params:{voiceQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceQueues/edit/view.html",controller:"VoiceQueueController as vm"}},resolve:{voiceQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceQueue@get",{fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:401})}]},authenticate:!0,permissionId:401,bodyClass:"voice"}).state("app.voice.contexts",{url:"/contexts",views:{"content@app":{templateUrl:"app/main/apps/voice/views/contexts/contexts.html",controller:"ContextsController as vm"}},resolve:{contexts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceContext@get",{fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Contexts",fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:405})}]},authenticate:!0,permissionId:405,bodyClass:"voice"}).state("app.voice.voicemails",{url:"/voicemails",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/voicemails.html",controller:"VoicemailsController as vm"}},resolve:{voicemails:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Voicemails",fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.voicemails.edit",{url:"/:id?tab",params:{voicemail:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicemails/edit/view.html",controller:"VoicemailController as vm"}},resolve:{voicemail:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMail@get",{fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:406})}]},authenticate:!0,permissionId:406,bodyClass:"voice"}).state("app.voice.musiconholds",{url:"/musiconholds",views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/musiconholds.html",controller:"MusicOnHoldsController as vm"}},resolve:{musiconholds:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"MusicOnHolds",fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.musiconholds.edit",{url:"/:id?tab",params:{musiconhold:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/musiconholds/edit/view.html",controller:"MusicOnHoldController as vm"}},resolve:{musiconhold:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceMusicOnHold@get",{fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:407})}]},authenticate:!0,permissionId:407,bodyClass:"voice"}).state("app.voice.voiceRecordings",{url:"/voiceRecordings",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",controller:"VoiceRecordingsController as vm"}},resolve:{voiceRecordings:["apiResolver","Auth","msUtils",function(e,n,t){return n.hasRole("admin")?e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoiceRecordings",fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:t.firstLastDayMonth(),limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.voiceRecordings.edit",{url:"/:id?tab",params:{voiceRecording:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/voice/views/voiceRecordings/edit/view.html",controller:"VoiceRecordingController as vm"}},resolve:{voiceRecording:["apiResolver","$stateParams",function(e,n){return e.resolve("voiceRecording@get",{fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadVoiceRecordings,privacyEnabled",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:408})}]},authenticate:!0,permissionId:408,bodyClass:"voice"}).state("app.voice.chanSpies",{url:"/chanSpies",views:{"content@app":{templateUrl:"app/main/apps/voice/views/chanSpies/chanSpies.html",controller:"ChanSpiesController as vm"}},resolve:{chanSpies:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voiceChanSpy@get",{fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ChanSpies",fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:409})}]},authenticate:!0,permissionId:409,bodyClass:"voice"}).state("app.voice.voicePrefixes",{url:"/voicePrefixes",views:{"content@app":{templateUrl:"app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",controller:"VoicePrefixesController as vm"}},resolve:{voicePrefixes:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("voicePrefix@get",{fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"VoicePrefixes",fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:410})}]},authenticate:!0,permissionId:410,bodyClass:"voice"}),n.addPart("app/main/apps/voice")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.voice",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.voice.inboundRoutes","app.voice.outboundRoutes","app.voice.internalRoutes","app.voice.realtime"]).config(e)}(),function(){"use strict";function e(e){e.state("app.whatsapp.realtime",{url:"/realtime",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/realtime/realtime.html",controller:"WhatsappRealtimeController as vm"}},resolve:{userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2110})}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.agents",{url:"/agents",params:{channel:"whatsapp"},controller:"AgentsRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/agents/view.html",resolve:{pauses:["apiResolver",function(e){return e.resolve("pause@get",{nolimit:!0})}],agents:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getAgents",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",sort:"fullname",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:202})}],utcOffset:["settingsManager",function(e){return e.getUTCOffset()}]},authenticate:!0,permissionId:2110}).state("app.whatsapp.realtime.queues",{url:"/queues",params:{channel:"whatsapp"},controller:"QueuesRealtimeController as vm",templateUrl:"app/main/apps/realtime/views/queues/view.html",resolve:{queues:["apiResolver","Auth",function(e,n){return e.resolve("realtime@getQueues",{id:n.isUser()?n.getCurrentUser().userProfileId:void 0,section:n.isUser()?"WhatsappQueues":void 0,channel:"whatsapp",sort:"name",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2110})}e.$inject=["$stateProvider"],angular.module("app.whatsapp.realtime",[]).config(e)}(),function(){"use strict";function e(e,n,t,a){e.state("app.whatsapp",{abstract:!0,url:"/whatsapp"}).state("app.whatsapp.whatsappQueues",{url:"/whatsappQueues",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",controller:"WhatsappQueuesController as vm"}},resolve:{whatsappQueues:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappQueues",fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappQueues.edit",{url:"/:id?tab",params:{whatsappQueue:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",controller:"WhatsappQueueController as vm"}},resolve:{whatsappQueue:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappQueue@get",{fields:"createdAt,updatedAt,id,name,strategy,timeout,description",id:n.id})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2101})}]},authenticate:!0,permissionId:2101,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts",{url:"/whatsappAccounts",views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",controller:"WhatsappAccountsController as vm"}},resolve:{whatsappAccounts:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"WhatsappAccounts",fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description",sort:"-updatedAt",limit:10,offset:0})}],userProfile:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?null:e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}).state("app.whatsapp.whatsappAccounts.edit",{url:"/:id?tab",params:{whatsappAccount:void 0,crudPermissions:void 0},views:{"content@app":{templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",controller:"WhatsappAccountController as vm"}},resolve:{whatsappAccount:["apiResolver","$stateParams",function(e,n){return e.resolve("whatsappAccount@get",{fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",id:n.id})}],userProfile:["apiResolver","Auth",function(e,n){return n.isAdmin()?null:e.resolve("userProfile@get",{fields:"id,name,crudPermissions,downloadOmnichannelInteractions",id:n.getCurrentUser().userProfileId})}],userProfileSection:["apiResolver","Auth",function(e,n){return e.resolve("userProfileSection@get",{fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:n.getCurrentUser().userProfileId,sectionId:2102})}]},authenticate:!0,permissionId:2102,bodyClass:"whatsapp"}),n.addPart("app/main/apps/whatsapp")}e.$inject=["$stateProvider","$translatePartialLoaderProvider","msApiProvider","msNavigationServiceProvider"],angular.module("app.whatsapp",["ngCsv","ngPassword","md.data.table","flow","mdColorPicker","ckeditor","ng-sortable","ngAria","ngAnimate","mdPickers","mwFormBuilder","mwFormViewer","mwFormUtils","ngclipboard","angular-cron-jobs","ngEmbed","angularMaterialFormBuilder","material.components.expansionPanels","chart.js","angular.filter","app.whatsapp.realtime"]).config(e)}(),function(){"use strict";angular.module("app.navigation",[]).config(function(){})}(),function(){"use strict";function e(e,n){e.addPart("app/quick-panel")}e.$inject=["$translatePartialLoaderProvider","msApiProvider"],angular.module("app.quick-panel",[]).config(e)}(),function(){"use strict";function e(e,n){e.state("app.reset",{url:"/reset/:token",views:{"main@":{templateUrl:"app/core/layouts/content-only.html",controller:"MainController as vm"},"content@app.reset":{templateUrl:"app/reset/reset.html",controller:"ResetPasswordController as vm"}},bodyClass:"reset"}),n.addPart("app/reset")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],angular.module("app.reset",[]).config(e)}(),function(){"use strict";function e(e){e.addPart("app/toolbar")}e.$inject=["$translatePartialLoaderProvider"],angular.module("app.toolbar",[]).config(e)}(),function(){"use strict";angular.module("app.user-setting",[])}(),function(){"use strict";function e(e){e.interceptors.push("authInterceptor")}e.$inject=["$httpProvider"],angular.module("app.auth").config(e)}(),function(){"use strict";function e(e){e.onBefore({to:function(e){return!0===e.authenticate}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;return n.isLoggedIn()?n.retrieveUser().catch(function(){return t.target("app.login",void 0,{reload:!0})}):t.target("app.login",void 0,{reload:!0})}),e.onStart({to:function(e){return"app.login"!==e.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("agent")&&"app.dashboards.general"!=a.name)return t.target("app.dashboards.general",{redirect:!1},{reload:!0})}),e.onFinish({to:function(e){return"app.help"===e.parent.name}},function(e){var n=e.router.stateService;if("app.help"===e.$to().parent.name){var t=e.injector().get("settingsManager"),a=t?t.get():null;if(!a||!a.viewHelpSection)return n.target("app.dashboards.general",{redirect:!1},{reload:!0})}}),e.onFinish({to:function(e){return e.permissionId}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService,a=e.$to();if(n.hasRole("user")){if(!n.hasPermission(a.permissionId))return t.target("app.dashboards.general",{redirect:!1},{reload:!0});var i=e.params().id?Number(e.params().id):void 0;if(i)return n.hasResourcePermission(a.permissionId,i).catch(function(){return t.target(a.parent.name,{redirect:!1},{reload:!0})})}}),e.onFinish({to:function(e){return"app.dashboards.general"===e.parent.name}},function(e){var n=e.injector().get("Auth"),t=e.router.stateService;e.$to();if(n.hasRole("user")&&!n.hasPermission(100))return t.target("app.dashboards.general",{redirect:!1},{reload:!0})})}e.$inject=["$transitions"],angular.module("app.auth").run(e)}(),function(){"use strict";function e(a,e,o,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a(!1);else{var t=_.filter(n,function(e){return e.enabled});a(_.some(t,["category",i]))}}).catch(function(e){n(e)})})},hasModulesPermissions:function(s){return o(function(a,n){var i={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.userProfileId}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(_.isEmpty(n))a({});else{var t=_(n).filter(function(e){return e.enabled&&_.includes(s,e.category)}).uniqBy(function(e){return e.category}).map(function(e){return e.category}).value();t.forEach(function(e){i[e]=!0}),a(i)}}).catch(function(e){n(e)})})},hasRole:function(e){return!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.userProfileId,sectionId:e}).$promise.then(function(e){var n=e.rows[0];if(n.autoAssociation)return a();var t=l.getActiveItem().node;return t.permissions&&!1===t.permissions.association?a():r.userProfileResource.get({sectionId:n.id,nolimit:!0}).$promise.then(function(e){var n=e.rows;_.some(n,["resourceId",s])?a():i()})}).catch(function(e){i("Error retrieving user profile permissions",e)})})},hasSectionPermissions:function(a){return o(function(e,n){var t={};return E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{readOnly:!1,canEdit:!0,canDelete:!0}:e?{readOnly:!(!_.includes(e,"r")||1!==e.length),canEdit:!!_.includes(e,"e"),canDelete:!!_.includes(e,"d")}:{readOnly:!0,canEdit:!1,canDelete:!1}},queueLogin:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,resolve:{telephones:["apiResolver",function(e){return e.resolve("user@get",{fields:"id,fullname,name,internal",role:"telephone",nolimit:!0})}]}})}).then(function(e){return h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(a){return o(function(n,t){var e={online:a,lastLoginAt:a?moment().format("YYYY-MM-DD HH:mm:ss"):void 0};r.user.update({id:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(e){var a=[];return o(function(n,t){return e||n(a),r.userProfile.getSections({id:e}).$promise.then(function(e){for(var n=0;n<e.length;n++){var t=e[n];a.push(t.sectionId),t.subsections&&(a=_.concat(a,t.subsections))}return a}).then(function(e){n(e)}).catch(function(e){t("Error retrieving user profile permissions",e)})})}function E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}e.$inject=["$mdDialog","$cookies","$q","$window","$document","api","msNavigationService","settingsManager","jscookie"],angular.module("app.auth").factory("Auth",e)}(),function(){"use strict";function e(n,e){this.telephones=e,this.closeDialog=function(e){n.hide(e)},e.count&&(this.name=e.rows[0].name)}e.$inject=["$mdDialog","telephones"],angular.module("app.auth").controller("HotDeskDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s;return{request:function(e){var n=t.get("motion.token");return e.headers=e.headers||{},i.isSameOrigin(e.url)&&n&&(e.headers.Authorization="Bearer "+n),e},responseError:function(e){switch(e.status){case 401:t.remove("motion.token"),(s||(s=a.get("$state"))).go("app.login")}return n.reject(e)}}}e.$inject=["$rootScope","$q","$cookies","$injector","Util"],angular.module("app.auth").factory("authInterceptor",e)}(),function(){"use strict";function e(n){var t={safeCb:function(e){return angular.isFunction(e)?e:angular.noop},urlParse:function(e){var n=document.createElement("a");return n.href=e,""===n.host&&(n.href=n.href),n},isSameOrigin:function(i,e){return i=t.urlParse(i),(e=(e=e&&[].concat(e)||[]).map(t.urlParse)).push(n.location),1<=(e=e.filter(function(e){var n=i.hostname===e.hostname,t=i.protocol===e.protocol,a=i.port===e.port||""===e.port&&("80"===i.port||"443"===i.port);return n&&t&&a})).length}};return t}e.$inject=["$window"],angular.module("app.auth").factory("Util",e)}(),function(){"use strict";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),function(){"use strict";angular.module("app.core").provider("motionConfig",function(){var t={disableCustomScrollbars:!1,disableMdInkRippleOnMobile:!0,disableCustomScrollbarsOnMobile:!0};this.config=function(e){t=angular.extend({},t,e)},this.$get=function(){var e={getConfig:function(e){if(angular.isUndefined(t[e]))return!1;return t[e]},setConfig:function(e,n){t[e]=n}};return e}})}(),function(){"use strict";function e(e,n,t){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","motionConfigProvider"],angular.module("app.core").config(e)}(),function(){"use strict";function e(e,n,t){(n.generate(),t.getConfig("disableMdInkRippleOnMobile")&&e.isMobile())&&angular.element("body").attr("md-no-ink",!0);e.isMobile()&&angular.element("html").addClass("is-mobile");var a=e.detectBrowser();if(a){var i=a.browser+" "+a.version+" "+a.os;angular.element("html").addClass(i)}}e.$inject=["msUtils","motionGenerator","motionConfig"],angular.module("app.core").run(e)}(),function(){"use strict";function e(n,e,t,a,i,s){var l=this;function o(){var e=_.filter(l.searchOptions.conditions,["disabled",!1]),o=[],r="";if(_(e).groupBy("name").forEach(function(e){var n=e[0],t=1<e.length,a=n.query.column;if(t){var i=_(e).groupBy(function(e){return e.query.operator}).mapValues(function(e){return _.chain(e).map(function(e){return e.query.value}).flattenDeep().value()}).value(),s=[];_.keys(i).forEach(function(e){var n=i[e],t=e;_.includes(["$between","$in","$notIn"],e)?t+="["+n+"]":n.forEach(function(e){t+="["+e+"]"}),s.push(t)}),r+=a+":="+s.join(":=")}else r=a+":="+n.query.operator+"["+n.query.value+"]";o.push(r)}),0!==o.length){var n="["+l.searchOptions.matchType+"]";return n+=o.join("||")}}function r(){var e=n.localStorage.getItem("motion2."+s+":"+l.currentUser.id);return e?JSON.parse(e):{}}function d(e){n.localStorage.setItem("motion2."+s+":"+l.currentUser.id,JSON.stringify(e))}function c(){if(s){var e=r();e.advancedSearch=_.omit(l.searchOptions,"fields"),d(e)}}function m(){return!!r().advancedSearch}l.currentUser=t.getCurrentUser(),l.searchOptions={matchType:"$and",conditions:[],fields:i},l.toolbarColor=a,l.onInit=function(){if(s){var e=r();e.hasOwnProperty("advancedSearch")&&(l.searchOptions=_.merge(l.searchOptions,e.advancedSearch))}},l.applyFilter=function(){c(),e.hide({apply:!0,value:o()})},l.clearConditions=function(){l.searchOptions.conditions=[],function(){if(s){var e=r();delete e.advancedSearch,e.query&&delete e.query.search,d(e)}}()},l.minimize=function(){c(),e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})},l.close=function(){e.hide({apply:!m(),value:o()||m()?!_.isEmpty(l.searchOptions.conditions):void 0})}}e.$inject=["$window","$mdDialog","Auth","color","fields","storagePath"],angular.module("app.core").controller("AdvancedSearchController",e)}(),function(){"use strict";function e(a){return{restrict:"A",link:function(e,n,t){e.$watch(t.focusOn,function(e){a(function(){e?n[0].focus():n[0].blur()})})}}}e.$inject=["$timeout"],angular.module("app.core").directive("focusOn",e)}(),function(){"use strict";function e(o,l,d){return{restrict:"E",compile:function(e,n){var s;return n.code||(s=e.html(),e.empty()),function(t,a,r){r.code&&(s=t.$eval(r.code));var i=t.$eval(r.shouldInterpolate);l.when(s).then(function(e){if(e){i&&(e=d(e)(t));var n=angular.element('<pre><code class="highlight" ng-non-bindable></code></pre>');a.append(n),o(function(){!function(e,n){var t=n.find("code"),a=e.split("\n"),i=(a=a.filter(function(e){return e.trim().length}))[0].match(/^\s*/)[0],s=new RegExp("^"+i);a=a.map(function(e){return e.replace(s,"").replace(/\s+$/,"")});var o=hljs.highlight(r.language||r.lang,a.join("\n"),!0);o.value=o.value.replace(/=<span class="hljs-value">""<\/span>/gi,"").replace("<head>","").replace("<head/>",""),t.append(o.value).addClass("highlight")}(e,n)},34,!1)}})}}}}e.$inject=["$timeout","$q","$interpolate"],angular.module("app.core").directive("hljs",e)}(),function(){"use strict";function e(n,a,e,t){var o=this;function i(){var a=o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators),i=o.selectedField.options&&!_.isEmpty(o.selectedField.options.excludedOperators);o.availableOperators=_.filter(o.operators,function(n){var e=!n.applyTo||_.includes(n.applyTo,o.selectedField.type);n.isExtra=a&&_.some(o.selectedField.options.extraOperators,function(e){return e===n.type});var t=_.includes(n.excludeFrom,o.selectedField.type)||i&&_.includes(o.selectedField.options.excludedOperators,n.type);if((e||n.isExtra)&&!t)return n})}function s(n){return e[n.model][n.action](n.params).$promise.then(function(e){return e.rows}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:n.model.toUpperCase()+"."+n.action.toUpperCase(),msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function r(){!o.value||_.isArray(o.value)&&_.isEmpty(o.value)?o.isValidCondition=!1:o.selectedOperator?o.selectedOperator&&"$between"===o.selectedOperator.type?o.isValidCondition=!(!o.endRangeValue||!o.isValidRange):o.isValidCondition=!0:o.isValidCondition=!1}function l(){"number"===o.selectedField.type?_.isNumber(o.endRangeValue)?o.isValidRange=Number(o.endRangeValue)>Number(o.value):o.isValidRange=!0:"date"===o.selectedField.type&&(o.maxDateRange=moment(o.endRangeValue).subtract(1,"day"),o.isValidRange=!0),r()}function d(){var e=m();o.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(o.options.conditions,"style");o.options.conditions.splice(n,1,e),p(),o.pendingCondition.style=null,o.pendingCondition=void 0}function m(){return{name:o.selectedField.name,operator:n.instant("DASHBOARDS."+o.selectedOperator.translate),value:o.value,endValue:o.endRangeValue,displayValue:u(o.value),displayEndValue:u(o.endRangeValue),query:{column:o.selectedField.column,operator:o.selectedOperator.type,value:function(){var e,n=o.value,t=o.endRangeValue;switch(o.selectedField.type){case"date":var a=moment(n).utcOffset(0,!0).format("YYYY-MM-DD");if("$between"===o.selectedOperator.type){var i=moment(t).utcOffset(0,!0).format("YYYY-MM-DD");e=[a,i]}else e=a;break;case"number":e="$between"===o.selectedOperator.type?[n,t]:n;break;case"multiselect":var s=o.selectedField.options.field||"name";e=_.map(n,s);break;case"select":e=n.id;break;case"autocomplete":e=o.selectedOperator.isExtra?n:n.id;break;default:e=n}return e}()},disabled:!1}}function u(e){var n;if(e){switch(o.selectedField.type){case"date":n=moment(e).format("YYYY-MM-DD");break;case"multiselect":var t=_.map(e,function(e){return e.name});n="$eq"===o.selectedOperator.type?t.join(" or "):t.join(" and ");break;case"select":n=e.name;break;case"autocomplete":n=o.selectedOperator.isExtra?e:e.displayValue;break;default:n=e}return n}}function p(){o.value=null,o.endRangeValue=null,o.minDateRange=null,o.maxDateRange=null,o.isValidCondition=!1}o.operators=o.availableOperators=[{type:"$eq",symbol:"=",translate:"EQUALS",excludeFrom:["multiselect"]},{type:"$ne",symbol:"≠",translate:"IS_NOT_EQUAL",excludeFrom:["multiselect"]},{type:"$in",symbol:"∈",translate:"IS_AMONG",applyTo:["multiselect"]},{type:"$notIn",symbol:"∉",translate:"IS_NOT_AMONG",applyTo:["multiselect"]},{type:"$substring",symbol:"⊃",translate:"CONTAINS",applyTo:["text"]},{type:"$startsWith",symbol:"a..",translate:"STARTS_WITH",applyTo:["text"]},{type:"$endsWith",symbol:"..a",translate:"ENDS_WITH",applyTo:["text"]},{type:"$lt",symbol:"<",translate:"IS_LESS_THAN",applyTo:["date","number"]},{type:"$gt",symbol:">",translate:"IS_GREATER_THAN",applyTo:["date","number"]},{type:"$lte",symbol:"≤",translate:"IS_LESS_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$gte",symbol:"≥",translate:"IS_GREATER_THAN_OR_EQUAL_TO",applyTo:["date","number"]},{type:"$between",symbol:"≬",translate:"IS_BETWEEN",applyTo:["date","number"]}],o.addCondition=d,o.editCondition=function(e){o.pendingCondition=e,o.pendingCondition.style="md-amber-200-bg",o.selectedField=_.find(o.options.fields,["name",o.pendingCondition.name]),i(),o.selectedOperator=_.find(o.availableOperators,["type",o.pendingCondition.query.operator]),"date"===o.selectedField.type&&"string"==typeof o.pendingCondition.value?(o.value=new Date(o.pendingCondition.value),o.minDateRange=moment(o.value).add(1,"day"),o.endRangeValue=o.pendingCondition.endValue?new Date(o.pendingCondition.endValue):void 0):(o.value=o.pendingCondition.value,o.endRangeValue=o.pendingCondition.endValue);o.isValidRange=!0,o.isValidCondition=!0},o.updateCondition=c,o.cancelUpdateCondition=function(){o.pendingCondition.style=null,o.pendingCondition=void 0},o.setConditionStatus=function(e){e.style=e.disabled?void 0:"chip-disabled",e.disabled=!e.disabled},o.removeCondition=function(){_.isEmpty(o.options.conditions)&&o.clearFilter()},o.getValues=function(){return o.selectedField.options.routes&&Array.isArray(o.selectedField.options.routes)?(e=angular.copy(o.selectedField.options.routes).map(function(e){return s(e)}),a.all(e).then(function(e){o.selectedField.values=_.flatten(e)})):o.selectedField.options.route?function(){var e=angular.copy(o.selectedField.options.route);if("autocomplete"===o.selectedField.type)for(var n=0;n<Object.keys(e.params).length;n++){var t=Object.keys(e.params)[n];"@autocomplete"===e.params[t]&&(e.params[t]=o.searchText,e.params.autocomplete=!0)}return a.resolve().then(function(){if(!o.selectedField.values||!0===e.params.autocomplete)return s(e)}).then(function(e){return e&&(o.selectedField.values=e),"autocomplete"===o.selectedField.type?function(e){var n=[];o.searchText&&(n=e.filter(function(e){e.displayValue="";for(var n=0;n<o.selectedField.options.searchFields.length;n++){var t=o.selectedField.options.searchFields[n],a=e[t]||"";e.displayValue+=a+" "}return _.trimEnd(e.displayValue),e.displayValue.toLowerCase().includes(o.searchText.toLowerCase())}));return n}(o.selectedField.values):o.selectedField.values})}():(o.selectedField.values.forEach(function(e){e.translate&&(e.name=n.instant(e.translate))}),o.selectedField.values);var e},o.onFieldChange=function(){o.value=void 0,o.endRangeValue=void 0,o.searchText=void 0,o.isValidCondition=!1,i(),o.autoSelectOperator=1===o.availableOperators.length,o.autoSelectOperator||(o.selectedOperator=void 0)},o.onOperatorChange=function(e){o.isValidRange=!0,o.selectedOperator&&(e?e.applyTo?0<_.difference(o.selectedOperator.applyTo,e.applyTo).length&&(o.value=null):o.selectedOperator.applyTo&&(o.value=null):o.value||(o.value=null),"between"!=o.selectedOperator.type&&(o.endRangeValue=null),o.selectedField.options&&!_.isEmpty(o.selectedField.options.extraOperators)&&(o.selectedOperator.isExtra=_.some(o.selectedField.options.extraOperators,function(e){return e===o.selectedOperator.type})));r()},o.onValueChange=function(){o.selectedOperator&&"$between"===o.selectedOperator.type?"number"===o.selectedField.type?l():"date"===o.selectedField.type&&(o.minDateRange=moment(o.value).add(1,"day"),r()):r()},o.checkRange=l,o.handleKeyboardAction=function(){o.pendingCondition?c():d()}}e.$inject=["$translate","$q","api","toasty"],angular.module("app.core").directive("msAdvancedSearch",function(){return{restrict:"E",scope:{options:"=",clearFilter:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-advanced-search/ms-advanced-search.html"}})}(),function(){"use strict";angular.module("app.core").directive("msCard",function(){return{restrict:"E",scope:{templatePath:"=template",card:"=ngModel",vm:"=viewModel"},template:'<div class="ms-card-content-wrapper" ng-include="templatePath" onload="cardTemplateLoaded()"></div>',compile:function(e){return e.addClass("ms-card"),function(e,n){e.cardTemplateLoaded=function(){e.$emit("msCard::cardTemplateLoaded",n)}}}}})}(),function(){"use strict";angular.module("app.core").directive("msChipColor",function(){return{restrict:"A",link:function(e,i,n){n.$observe("msChipColor",function(e){var n=i.parent().parent();if(n.hasClass("md-background-bg md-hue-3")||n.addClass("md-background-bg md-hue-3"),_.isEmpty(e)){var t=n[0].className.split(" "),a=t.indexOf("md-hue-3");t.length=a+1,n[0].className=t.join(" ")}else n.addClass(e)})}}})}(),function(){"use strict";angular.module("app.core").directive("msClickToCall",function(){return{restrict:"E",scope:{type:"=",disabled:"=",target:"=",prefix:"=",license:"="},controller:["$scope","$rootScope","$http","$translate","$document","$mdDialog","Auth","toasty","api",function(t,n,a,i,s,o,e,r,l){function d(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/originate/"+c(e));case 2:return n.$broadcast("webrtc::call",{target:c(e)})}}function c(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function m(e){return a.get(e).success(function(){r.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(e){r.error({title:"PhoneBar API Error",msg:i.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}t.currentUser=e.getCurrentUser(),t.privacy=t.currentUser.privacyEnabled,t.showMenu=function(){return t.target&&t.target.indexOf("@")<0&&t.target!=t.currentUser.internal&&t.target!=t.currentUser.name&&(0==t.currentUser.showWebBar&&t.currentUser.phoneBarRemoteControl||2==t.currentUser.showWebBar&&t.license.webrtc)&&!t.disabled},t.call=function(e){return 2!==t.currentUser.showWebBar?(n=e,l.user.getVoicePrefixes({id:t.currentUser.id}).$promise.then(function(e){if(e.count)return o.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!0,locals:{prefixes:e,required:t.currentUser.phoneBarPrefixRequired}})}).then(function(e){t.currentUser.phoneBarPrefixRequired?e&&-1!==e&&d(e+n):e&&-1!==e?d(e+n):e||d(n)})):d(e);var n},t.transfer=function(e){switch(t.currentUser.showWebBar){case 0:return m("http://127.0.0.1:"+(t.currentUser.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+c(e));case 2:n.$broadcast("webrtc::transfer",{target:c(e)})}}}],templateUrl:"app/core/directives/ms-click-to-call/ms-click-to-call.html"}})}(),function(){"use strict";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),function(){"use strict";function e(i){return{require:"ngModel",priority:1,link:function(e,n,t,a){a.$formatters.push(i.formatter),a.$parsers.push(i.parser)}}}e.$inject=["msDatepickerFixConfig"],angular.module("app.core").provider("msDatepickerFixConfig",function(){var n={formatter:function(e){return e?""===e?e:new Date(e):""},parser:function(e){return e?moment(e).add(moment(e).utcOffset(),"m").toDate():""}};this.config=function(e){n=angular.extend({},n,e)},this.$get=function(){return n}}).directive("msDatepickerFix",e)}(),function(){"use strict";function e(s){return{restrict:"E",scope:{id:"=",model:"=",element:"=",title:"=",path:"="},replace:!0,link:function(n,e){var t=!1,a={};a.id=n.id,_.isNil(n.path)||(a.path=n.path);var i=document.createElement(n.element);i.setAttribute("preload","none"),i.setAttribute("controls","true"),"audio"===n.element&&i.setAttribute("style","width: 265px;"),"video"===n.element&&i.setAttribute("style","max-width: 500px;"),i.setAttribute("title",n.title),i.setAttribute("src"," "),i.onplay=function(e){t||(t=!0,e.preventDefault(),s[n.model].download(a).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});i.setAttribute("type",e.type),i.setAttribute("src",URL.createObjectURL(t)),i.play()}).catch(function(e){console.error(e)}))},e.append(i)}}}e.$inject=["api"],angular.module("app.core").directive("msDialogRecording",e)}(),function(){"use strict";function e(i){return{restrict:"A",link:function(t,a){a.bind("click",function(e){var n=i('<div layout="row" class="spinner-overlay" layout-sm="column" layout-align="center center" aria-label="wait"><md-progress-circular md-mode="indeterminate"></md-progress-circular></div>')(t);a.closest("md-dialog").prepend(n)})}}}e.$inject=["$compile"],angular.module("app.core").directive("msDialogSpinner",e)}(),function(){"use strict";function e(){var o=this;function a(e,n,t,a){var i=[];if(0<=t)i.push(e[t]),n.push(e[t]),e.splice(t,1);else{for(var s=0;s<e.length;s++)void 0!==e[s].isValid&&e[s].isValid&&n.push(e[s]);for(s=e.length-1;0<=s;s--)e[s].isValid&&e.splice(s,1);i=n}o.options.transferCallback&&o.options.transferCallback(i,a)}o.canTransfer=function(e,n,t){if(void 0!==e.isValid&&e.isValid)return t?a(n.selectedItems,n.items,n.selectedItems.indexOf(e),t):a(n.items,n.selectedItems,n.items.indexOf(e),t)},o.transfer=a,o.getLine=function(e,n){var t="";if(_.isNil(n))return t;{if(_.isArray(n)){for(var a=0;a<n.length;a++)t+=" "+(e[n[a]]?e[n[a]]:"");return t}return e[n]?e[n]:""}}}angular.module("app.core").directive("msDualMultiselect",function(){return{restrict:"E",scope:{options:"=",readOnly:"=",addDisabled:"<"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html"}})}(),function(){"use strict";function e(a){return{restrict:"E",replace:!0,scope:{onReply:"&",ngModel:"=",ctrlMethods:"=",pickerPosition:"=",search:"=",recentEmojis:"=",placeholder:"="},template:'<textarea class="emojionearea"></textarea>',link:function(t,e){var n=e.emojioneArea({pickerPosition:t.pickerPosition,search:t.search,recentEmojis:t.recentEmojis,placeholder:a.instant(t.placeholder||"Type a message"),attributes:{spellcheck:!0},events:{keyup:function(e,n){t.ngModel=this.getText(),t.onReply({event:n,body:this.getText()})},emojibtn_click:function(){t.ngModel=this.getText()}}});t.ngModel&&n[0].emojioneArea.setText(t.ngModel),t.internalControl=t.ctrlMethods||{},t.internalControl.setText=function(e){n[0].emojioneArea.setText(e)},t.internalControl.getText=function(){return n[0].emojioneArea.getText()},t.$watch("ngModel",function(e){e||n[0].emojioneArea.setText("")})}}}e.$inject=["$translate"],angular.module("app.core").directive("msEmojiArea",e)}(),function(){"use strict";angular.module("app.core").directive("msFontFamily",function(){return{restrict:"E",scope:{ngModel:"="},controller:["$scope",function(e){e.fonts=[{option:"Arial",value:"Arial,Helvetica,sans-serif"},{option:"Century Gothic",value:"Century Gothic,Futura,Didact Gothic,san-serif"},{option:"Calibri",value:"Calibri, Verdana, Geneva, sans-serif"},{option:"Comic Sans MS",value:"Comic Sans MS,cursive"},{option:"Courier New",value:"Courier New,Courier,monospace"},{option:"Georgia",value:"Georgia,serif"},{option:"Lucida Sans Unicode",value:"Lucida Sans Unicode,Lucida Grande,sans-serif"},{option:"Tahoma",value:"Tahoma,Geneva,sans-serif"},{option:"Times New Roman",value:"Times New Roman,Times,serif"},{option:"Trebuchet MS",value:"Trebuchet MS,Helvetica,sans-serif"},{option:"Verdana",value:"Verdana,Geneva,sans-serif"}]}],templateUrl:"app/core/directives/ms-font-family/ms-font-family.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsFormWizardController",function(){var n=this;function e(){return n.forms.length}function t(){return 0===n.selectedIndex}function a(){return n.selectedIndex===e()-1}n.forms=[],n.selectedIndex=0,n.registerForm=function(e){n.forms.push(e)},n.previousStep=function(){if(t())return;n.selectedIndex--},n.nextStep=function(){if(a())return;n.selectedIndex++},n.firstStep=function(){n.selectedIndex=0},n.lastStep=function(){n.selectedIndex=e()-1},n.totalSteps=e,n.isFirstStep=t,n.isLastStep=a,n.currentStepInvalid=function(){return angular.isDefined(n.forms[n.selectedIndex])&&n.forms[n.selectedIndex].$invalid},n.previousStepInvalid=function(){return 0<n.selectedIndex&&angular.isDefined(n.forms[n.selectedIndex-1])&&n.forms[n.selectedIndex-1].$invalid},n.formsIncomplete=function(){for(var e=0;e<n.forms.length;e++)if(n.forms[e].$invalid)return!0;return!1},n.resetForm=function(){for(var e=n.selectedIndex=0;e<n.forms.length;e++)n.forms[e].$setPristine(),n.forms[e].$setUntouched()}}).directive("msFormWizard",function(){return{restrict:"E",scope:!0,controller:"MsFormWizardController as msWizard",compile:function(e){return e.addClass("ms-form-wizard"),function(){}}}}).directive("msFormWizardForm",function(){return{restrict:"A",require:["form","^msFormWizard"],compile:function(e){return e.addClass("ms-form-wizard-form"),function(e,n,t,a){var i=a[0],s=a[1];s.registerForm(i)}}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{onClose:"&"},transclude:!0,templateUrl:"app/core/directives/ms-info-bar/ms-info-bar.html",link:function(e,n){var t=i.find("ms-info-bar-active"),a="ms-info-bar-active";t.addClass(a),e.removeInfoBar=function(){t.removeClass(a),n.remove(),e.onClose&&e.onClose(),e.$destroy()}}}}e.$inject=["$document"],angular.module("app.core").directive("msInfoBar",e)}(),function(){"use strict";function e(r,a,l,e){var d=this,n={columnCount:5,respectItemOrder:!1,reLayoutDebounce:400,responsive:{md:3,sm:2,xs:1}},t=!0;function i(){t&&e.cancel(t),t=e(function(){!function(){d.containerPos=d.container[0].getBoundingClientRect(),function(){d.columnCount=d.options.columnCount,l("gt-md")?d.columnCount=d.options.columnCount:l("md")?d.columnCount=d.columnCount>d.options.responsive.md?d.options.responsive.md:d.columnCount:l("sm")?d.columnCount=d.columnCount>d.options.responsive.sm?d.options.responsive.sm:d.columnCount:d.columnCount=d.options.responsive.xs;d.columnWidth=d.containerPos.width/d.columnCount}(),r.$broadcast("msMasonry:relayoutStarted"),d.items=d.container.find("ms-masonry-item");for(var e=Array.apply(null,new Array(d.columnCount)).map(function(){return 0}),n=0;n<d.items.length;n++){var t,a,i,s,o=d.items[n];(o=angular.element(o)).scope()&&o.scope().$broadcast("msMasonryItem:startReLayout"),o.css({width:d.columnWidth}),d.options.respectItemOrder?(i=n%d.columnCount,s=e[i]):(s=Math.min.apply(Math,e),i=e.indexOf(s)),e[i]=s+o[0].getBoundingClientRect().height,t=Math.round(i*d.columnWidth),a=s,o.css({transform:"translate3d("+t+"px,"+a+"px,0px)"}),o.addClass("placed"),o.scope()&&o.scope().$broadcast("msMasonryItem:finishReLayout")}}(),r.$broadcast("msMasonry:relayoutFinished")},d.options.reLayoutDebounce)}d.options=null,d.container=[],d.containerPos="",d.columnWidth="",d.items=[],d.reLayout=i,d.initialize=function(){d.options=d.options?angular.extend(n,d.options):n,r.$watch(function(){return d.container.width()},function(e,n){e!==n&&i()})},d.waitImagesLoaded=function(e,n){if("undefined"!=typeof imagesLoaded){var t=a.imagesLoaded(e);t.on("done",function(){n()})}else n()},r.$on("msMasonry:relayout",function(){i()})}function n(o){return{restrict:"AEC",controller:"msMasonryController",compile:function(i,s){return{pre:function(e,n,t,a){a.options=angular.fromJson(s.options||"{}"),a.container=i},post:function(e,n,t,a){o(function(){a.initialize()})}}}}}e.$inject=["$scope","$window","$mdMedia","$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("msMasonryController",e).directive("msMasonry",n).directive("msMasonryItem",function(){return{restrict:"AEC",require:"^msMasonry",priority:1,link:function(e,n,t,a){a.waitImagesLoaded(n,function(){a.reLayout()}),e.$on("msMasonryItem:finishReLayout",function(){e.$watch(function(){return n.height()},function(e,n){e!==n&&a.reLayout()})}),n.on("$destroy",function(){a.reLayout()})}}})}(),function(){"use strict";function e(t,e,a,i){var s=this;function o(e,n){s.selectedPalette=e,s.selectedHues=n}function r(){o(!(s.selectedColor={palette:"",hue:"",class:""}),!1),d()}function l(e,n){s.selectedColor={palette:e,hue:n,class:"md-"+e+"-"+n+"-bg",bgColorValue:i.rgba(s.palettes[e][n].value),fgColorValue:i.rgba(s.palettes[e][n].contrast)},"obj"!==s.msModelType||angular.equals(s.selectedColor,s.modelCtrl.$viewValue)||d(),o(e,s.palettes[e]),t.$selectedColor=s.selectedColor}function d(){"class"===s.msModelType?s.modelCtrl.$setViewValue(s.selectedColor.class):"obj"===s.msModelType&&s.modelCtrl.$setViewValue(s.selectedColor)}s.palettes=e,s.selectedPalette=!1,s.selectedHues=!1,t.$selectedColor={},s.activateHueSelection=o,s.selectColor=function(e,n){l(e,n),d(),a.hide()},s.removeColor=r,t.$watch("ngModel",function(){if(!s.modelCtrl.$viewValue||""===s.modelCtrl.$viewValue)return void r();var e,n;if("class"===s.msModelType){var t=s.modelCtrl.$viewValue.split("-");n=5<=t.length?(e=t[1]+"-"+t[2],t[3]):(e=t[1],t[2])}else"obj"===s.msModelType&&(e=s.modelCtrl.$viewValue.palette,n=s.modelCtrl.$viewValue.hue||500);l(e,n)})}e.$inject=["$scope","$mdColorPalette","$mdMenu","motionGenerator"],angular.module("app.core").controller("msMaterialColorPickerController",e).directive("msMaterialColorPicker",function(){return{require:["msMaterialColorPicker","ngModel"],restrict:"E",scope:{ngModel:"=",msModelType:"@?"},controller:"msMaterialColorPickerController as vm",transclude:!0,templateUrl:"app/core/directives/ms-material-color-picker/ms-material-color-picker.html",link:function(e,n,t,a,i){var s=a[0];s.modelCtrl=a[1],s.msModelType=e.msModelType||"class",i(e,function(e){(e=e.filter(function(e,n){return 1===n.nodeType})).length&&n.find("ms-color-picker-button").replaceWith(e)})}}})}(),function(){"use strict";function e(p,g,v){return{restrict:"A",link:function(e,n,t){var a="true"===t.msNavIsFolded,i=!1,s=angular.element(p[0].body),o=angular.element('<div id="ms-nav-fold-open-overlay"></div>'),r=angular.element('<div id="ms-nav-fold-close-overlay"></div>'),l=n.parent();function d(){s.addClass("ms-nav-folded"),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function c(e){angular.isDefined(e)&&e.preventDefault(),s.addClass("ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),l.find(o).remove(),l.parent().append(r),r.on("mouseenter touchstart",function(e){m(e),i=!1})}function m(e){angular.isDefined(e)&&e.preventDefault(),g.$broadcast("msNav::forceCollapse"),n.scrollTop(0),s.removeClass("ms-nav-folded-open"),l.parent().find(r).remove(),l.append(o),o.on("mouseenter touchstart",function(e){c(e),i=!0})}function u(){s.removeClass("ms-nav-folded ms-nav-folded-open"),g.$broadcast("msNav::expandMatchingToggles"),n.off("mouseenter mouseleave")}v.setFoldable(e,n,a),a?d():u(),e.toggleFold=function(){(a=!a)?d():u()},e.openFolded=c,e.closeFolded=m,e.isNavFoldedOpen=function(){return i},e.$on("$destroy",function(){o.off("mouseenter touchstart"),r.off("mouseenter touchstart"),n.off("mouseenter mouseleave")})}}}function n(t,a,i){return{restrict:"E",scope:{},controller:"MsNavController",compile:function(e){return e.addClass("ms-nav"),function(e){t.$broadcast("msNav::expandMatchingToggles");var n=t.$on("$stateChangeSuccess",function(){t.$broadcast("msNav::expandMatchingToggles"),a.when("navigation").then(function(e){e.close(),i.isNavFoldedOpen()&&i.closeFolded()})});e.$on("$destroy",function(){n()})}}}}function t(m,u,p,g){return{restrict:"A",require:"^msNav",scope:!0,compile:function(e,n){return e.addClass("ms-nav-toggle"),angular.isUndefined(n.collapsed)&&(n.collapsed=!0),e.attr("collapsed",n.collapsed),function(a,i,e,t){var s={expanded:"expanded",expandAnimation:"expand-animation",collapseAnimation:"collapse-animation"},n=i.find("a"),o=[],r=/\(.*\)/g;function l(){return"true"===i.attr("collapsed")}function d(){var e=u.defer();if(!l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!1);var n=angular.element(i.find("ms-nav-toggle-items")[0]);n.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var t=n[0].offsetHeight;return n.css({position:"",visibility:"",display:"",height:""}),a.$evalAsync(function(){p.animate(n,{display:"block",height:"0px"},{height:t+"px"},s.expandAnimation).then(function(){n.addClass(s.expanded),n.css({height:""}),e.resolve({success:!0})})}),e.promise}function c(){var e=u.defer();if(l())return e.reject({error:!0}),e.promise;i.attr("collapsed",!0);var n=angular.element(i.find("ms-nav-toggle-items")[0]),t=n[0].offsetHeight;return a.$evalAsync(function(){p.animate(n,{height:t+"px"},{height:"0px"},s.collapseAnimation).then(function(){n.removeClass(s.expanded),n.css({display:"",height:""}),e.resolve({success:!0})})}),e.promise}angular.forEach(n,function(e){var n=angular.element(e).attr("ui-sref");angular.isUndefined(n)||(n=n.replace(r,""),o.push(n))}),t.setToggleItem(i,a),i.children(".ms-nav-button").on("click",function(){if(t.isDisabled())return;t.disable(),l()?(t.clearLockedItems(),a.$emit("msNav::pushToLockedList"),m.$broadcast("msNav::collapse"),d().then(function(){t.enable()})):a.$broadcast("msNav::forceCollapse")}),a.$on("$destroy",function(){i.children(".ms-nav-button").off("click")}),a.$on("msNav::collapse",function(){var e=t.getLockedItems(),n=!1;angular.forEach(e,function(e){angular.equals(e.scope,a)&&(n=!0)}),n||c().then(function(){t.enable()})}),a.$on("msNav::forceCollapse",function(){c().then(function(){t.enable()})}),a.$on("msNav::expandMatchingToggles",function(){var n=g.current.name,t=!1;angular.forEach(o,function(e){n===e&&(t=!0)}),t?d():c()}),a.$on("msNav::pushToLockedList",function(){t.setLockedItem(i,a)})}}}}e.$inject=["$document","$rootScope","msNavFoldService"],n.$inject=["$rootScope","$mdComponentRegistry","msNavFoldService"],t.$inject=["$rootScope","$q","$animate","$state"],angular.module("app.core").factory("msNavFoldService",function(){var t={};return{setFoldable:function(e,n){t={scope:e,element:n}},isNavFoldedOpen:function(){return t.scope.isNavFoldedOpen()},toggleFold:function(){t.scope.toggleFold()},openFolded:function(){t.scope.openFolded()},closeFolded:function(){t.scope.closeFolded()}}}).directive("msNavIsFolded",e).controller("MsNavController",function(){var e=this,n=!1,t=[],a=[];e.isDisabled=function(){return n},e.enable=function(){n=!1},e.disable=function(){n=!0},e.setToggleItem=function(e,n){t.push({element:e,scope:n})},e.getLockedItems=function(){return a},e.setLockedItem=function(e,n){a.push({element:e,scope:n})},e.clearLockedItems=function(){a=[]}}).directive("msNav",n).directive("msNavTitle",function(){return{restrict:"A",compile:function(e){return e.addClass("ms-nav-title"),function(){}}}}).directive("msNavButton",function(){return{restrict:"AE",compile:function(e){return e.addClass("ms-nav-button"),function(){}}}}).directive("msNavToggle",t)}(),function(){"use strict";function e(e,n){e.root?this.navigation=n.getNavigation(e.root):this.navigation=n.getNavigation(),this.toggleHorizontalMobileMenu=function(){angular.element("body").toggleClass("ms-navigation-horizontal-mobile-menu-active")},n.sort()}function n(c,m,u,p){return{restrict:"E",scope:{folded:"=",root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/vertical.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation"),function(e,n){var t=angular.element("body"),a=angular.element('<div id="ms-navigation-fold-expander"></div>'),i=angular.element('<div id="ms-navigation-fold-collapser"></div>'),s=u("navigation");function o(e){if(p.setFolded(e),e)c.$broadcast("msNavigation::collapse"),t.addClass("ms-navigation-folded"),r();else{var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.removeClass("ms-navigation-folded ms-navigation-folded-open"),i.remove()}}function r(){n.parent().append(a),m(function(){a.on("mouseenter touchstart",l)})}function l(e){e&&e.preventDefault(),p.setFoldedOpen(!0);var n=p.getActiveItem();n&&n.scope.$emit("msNavigation::stateMatched"),t.addClass("ms-navigation-folded-open"),a.remove(),t.find("#main").append(i),i.on("mouseenter touchstart",d)}function d(e){e&&e.preventDefault(),p.setFoldedOpen(!1),c.$broadcast("msNavigation::collapse"),t.removeClass("ms-navigation-folded-open"),i.remove(),r()}p.setNavigationScope(e),function(){null===p.getFolded()&&p.setFolded(e.folded);p.getFolded()&&(m(function(){c.$broadcast("msNavigation::collapse")}),t.addClass("ms-navigation-folded"),r())}(),e.$watch(function(){return s.isLockedOpen()},function(e,n){if(!angular.isUndefined(e)&&!angular.equals(e,n)&&p.getFolded())if(e)c.$broadcast("msNavigation::collapse");else{var t=p.getActiveItem();t&&t.scope.$emit("msNavigation::stateMatched")}}),e.$watch("folded",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||o(e)}),e.toggleFolded=function(){o(!p.getFolded())},e.$on("$stateChangeStart",function(){s.close()}),e.$on("$destroy",function(){i.off("mouseenter touchstart"),a.off("mouseenter touchstart")})}}}}function t(t,e,a,i,n,s){var o=this;o.element=e,o.node=t.node,o.hasChildren=void 0,o.collapsed=void 0,o.collapsable=void 0,o.group=void 0,o.animateHeightClass="animate-height",o.toggleCollapsed=function(){o.collapsed?o.expand():o.collapse()},o.collapse=function(){var e=o.element.children("ul"),n=e[0].offsetHeight;t.$evalAsync(function(){o.collapsed=!0,o.element.addClass("collapsing"),i.animate(e,{display:"block",height:n+"px"},{height:"0px"},o.animateHeightClass).then(function(){e.css({display:"",height:""}),o.element.removeClass("collapsing")}),t.$broadcast("msNavigation::collapse")})},o.expand=function(){var e=o.element.children("ul");e.css({position:"absolute",visibility:"hidden",display:"block",height:"auto"});var n=e[0].offsetHeight;e.css({position:"",visibility:"",display:"",height:""}),t.$evalAsync(function(){o.collapsed=!1,o.element.addClass("expanding"),i.animate(e,{display:"block",height:"0px"},{height:n+"px"},o.animateHeightClass).then(function(){e.css({height:""}),o.element.removeClass("expanding")}),a.$broadcast("msNavigation::collapse",o.node._path)})},o.getClass=function(){return o.node.class},o.isHidden=function(){if(angular.isDefined(o.node.hidden)&&angular.isFunction(o.node.hidden))return o.node.hidden();return!1},function(){o.hasChildren=0<o.node.children.length,o.group=!(!angular.isDefined(o.node.group)||!0!==o.node.group),!o.hasChildren||o.group?o.collapsable=!1:o.collapsable=!(!angular.isUndefined(o.node.collapsable)&&"boolean"==typeof o.node.collapsable&&!0!==o.node.collapsable);o.collapsable?o.collapsed=!(!angular.isUndefined(o.node.collapsed)&&"boolean"==typeof o.node.collapsed&&!0!==o.node.collapsed):o.collapsed=!1;if(o.node.state===n.current.name||n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched"),s.setActiveItem(o.node,t)}t.$on("msNavigation::stateMatched",function(){o.collapsable&&o.collapsed&&t.$evalAsync(function(){o.collapsed=!1})}),t.$on("msNavigation::collapse",function(e,n){if(!o.collapsed&&o.collapsable)if(angular.isUndefined(n))o.collapse();else{var t=n.split("."),a=[],i=s.getActiveItem();if(i&&(a=i.node._path.split(".")),-1<t.indexOf(o.node._id))return;if(-1<a.indexOf(o.node._id))return;o.collapse()}}),t.$on("$stateChangeSuccess",function(){if(o.node.state===n.current.name){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;s.setActiveItem(o.node,t),a.$broadcast("msNavigation::collapse",o.node._path)}if(n.includes(o.node.state)){if(angular.isDefined(o.node.stateParams)&&angular.isDefined(n.params)&&!angular.equals(o.node.stateParams,n.params))return;t.$emit("msNavigation::stateMatched")}})}()}function a(n){return{restrict:"E",scope:{root:"@"},controller:"MsNavigationController as vm",templateUrl:"app/core/directives/ms-navigation/templates/horizontal.html",transclude:!0,compile:function(e){return e.addClass("ms-navigation-horizontal"),function(e){n.setNavigationScope(e)}}}}function i(t,e,n,a,i){var s=this;s.element=e,s.node=t.node,s.hasChildren=void 0,s.group=void 0,s.getClass=function(){return s.node.class},function(){if(s.isActive=!1,s.hasChildren=0<s.node.children.length,s.group=!(!angular.isDefined(s.node.group)||!0!==s.node.group),s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;t.$emit("msNavigation::stateMatched"),i.setActiveItem(s.node,t)}t.$on("msNavigation::stateMatched",function(){s.hasChildren&&t.$evalAsync(function(){s.isActive=!0})}),t.$on("msNavigation::clearActive",function(){if(s.hasChildren){var e=[],n=i.getActiveItem();n&&(e=n.node._path.split(".")),-1<e.indexOf(s.node._id)?t.$evalAsync(function(){s.isActive=!0}):t.$evalAsync(function(){s.isActive=!1})}}),t.$on("$stateChangeSuccess",function(){if(s.node.state===a.current.name||a.includes(s.node.state)){if(angular.isDefined(s.node.stateParams)&&angular.isDefined(a.params)&&!angular.equals(s.node.stateParams,a.params))return;i.setActiveItem(s.node,t),n.$broadcast("msNavigation::clearActive")}})}()}function s(i){return{restrict:"A",require:"^msNavigationHorizontalNode",compile:function(e){return e.addClass("ms-navigation-horizontal-item"),function(e,n,t,a){n.on("click",function(){if(!a.hasChildren||i("gt-md"))return;n.toggleClass("expanded")}),e.$on("$destroy",function(){n.off("click")})}}}}e.$inject=["$scope","msNavigationService"],n.$inject=["$rootScope","$timeout","$mdSidenav","msNavigationService"],t.$inject=["$scope","$element","$rootScope","$animate","$state","msNavigationService"],a.$inject=["msNavigationService"],i.$inject=["$scope","$element","$rootScope","$state","msNavigationService"],s.$inject=["$mdMedia"],angular.module("app.core").provider("msNavigationService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function d(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=u(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=u(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function c(e){if(angular.isString(e)){for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1}r.error("path must be a string (eg. `dashboard.project`)")}function m(e){e||(e=l).sort(a);for(var n=0;n<e.length;n++){var t=e[n].children;1<t.length&&t.sort(a),0<t.length&&m(t)}}function a(e,n){return parseInt(e.weight)-parseInt(n.weight)}function u(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=d,this.deleteItem=c,this.sortByWeight=m,this.$get=function(){var t=null,n=null,a=null,i=null,e={saveItem:d,deleteItem:c,sort:m,clearNavigation:function(){l=[],n&&(n.vm.navigation=l)},setActiveItem:function(e,n){t={node:e,scope:n}},getActiveItem:function(){return t},getNavigation:s,getFlatNavigation:o,setNavigationScope:function(e){n=e},setFolded:function(e){a=e},getFolded:function(){return a},setFoldedOpen:function(e){i=e},getFoldedOpen:function(){return i},toggleFolded:function(){n.toggleFolded()},getSectionId:function(n,t){var e=o(),a=_.find(e,function(e){return t?e.route===n&&e.title.toLowerCase()===t.toLowerCase():e.route===n});return a?a.id:0}};return e;function s(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}function o(e){var n=s(e);return function e(n){var t=[];for(var a=0;a<n.length;a++){var i=angular.copy(n[a]);i.children=[],t.push(i),0<n[a].children.length&&(t=t.concat(e(n[a].children)))}return t}(n)}}}).controller("MsNavigationController",e).directive("msNavigation",n).controller("MsNavigationNodeController",t).directive("msNavigationNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationNode"},controller:"MsNavigationNodeController as vm",compile:function(e){return e.addClass("ms-navigation-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationItem",function(){return{restrict:"A",require:"^msNavigationNode",compile:function(e){return e.addClass("ms-navigation-item"),function(e,n,t,a){a.collapsable&&n.on("click",a.toggleCollapsed),e.$on("$destroy",function(){n.off("click")})}}}}).directive("msNavigationHorizontal",a).controller("MsNavigationHorizontalNodeController",i).directive("msNavigationHorizontalNode",function(){return{restrict:"A",bindToController:{node:"=msNavigationHorizontalNode"},controller:"MsNavigationHorizontalNodeController as vm",compile:function(e){return e.addClass("ms-navigation-horizontal-node"),function(e,n,t,a){n.addClass(a.getClass()),a.group&&n.addClass("group")}}}}).directive("msNavigationHorizontalItem",s)}(),function(){"use strict";function e(p,t,g,e,a,i,n,u,s,o,v,h,f,b,r,A,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(l){var d,c,m;return E.initDeviceInProgress=!0,navigator.mediaDevices.getUserMedia({audio:!0}).then(function(e){return E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/silence.ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}),e.getTracks().forEach(function(e){e.stop()}),navigator.mediaDevices.enumerateDevices()}).then(function(e){var n=_.filter(e,function(e){return"audioinput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<n.length){var t=_.find(e,function(e){return"default"===e.deviceId&&"audioinput"===e.kind});if(m=_.find(n,function(e){return e.groupId===t.groupId}),E.conf.microphoneId&&!l){var a=_.find(n,function(e){return e.deviceId===E.conf.microphoneId});a&&(m=a)}E.conf.microphoneId=m.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_MICROPHONE_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,x("microphone",!1);var i=_.filter(e,function(e){return"audiooutput"===e.kind&&"default"!==e.deviceId&&"communications"!==e.deviceId});if(0<i.length){var s=_.find(e,function(e){return"default"===e.deviceId&&"audiooutput"===e.kind});if(c=d=_.find(i,function(e){return e.groupId===s.groupId}),E.conf.speakerId&&!l){var o=_.find(i,function(e){return e.deviceId===E.conf.speakerId});o&&(c=o)}if(E.conf.speakerId=c.deviceId,E.conf.ringingId&&!l){var r=_.find(i,function(e){return e.deviceId===E.conf.ringingId});r&&(d=r)}E.conf.ringingId=d.deviceId}else v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_SPEAKER_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"});return x("speaker",!1)}).then(function(){return x("ringing",!1)}).then(function(){if(jabra)return jabra.init().then(function(){return E.isJabraInitialized=!0,jabra.getInstallInfo()}).then(function(){return jabra.getUserDeviceMediaExt()}).then(function(e){m&&c&&d&&e&&_.includes([m.groupId,c.groupId,d.groupId],e.deviceInfo.browserGroupId)&&(y.info("Jabra library correctly initialized and device correctly installed"),E.isJabraEnabled=!0,jabra.onHook(),jabra.addEventListener("acceptcall",function(e){var n=_.last(E.sessions);n?"incoming"===n.direction&&n.isInProgress()?E.answer(n):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("microphone",!0)}.bind(this)),jabra.addEventListener("flash",function(){E.jabraSession.localHold?E.unhold(E.jabraSession):E.hold(E.jabraSession)}.bind(this)),jabra.addEventListener("endcall",function(){o(function(e){for(var n=null,t=0;t<E.sessions.length;t++)_.has(E.sessions[t],"localHold")&&E.sessions[t].localHold||(n=E.sessions[t]);e(n)}).then(function(e){null!==e&&E.terminate(e)})}.bind(this)))}).catch(function(e){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.error("Unable to init media devices",e),"NotFoundError"===e.name&&v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}).finally(function(){E.initDeviceInProgress=!1,S(),DetectRTC.load(function(){E.conf.hasMicrophone=DetectRTC.hasMicrophone,E.conf.hasSpeakers="Chrome"!==DetectRTC.browser.name&&"Edge"!==DetectRTC.browser.name&&"Opera"!==DetectRTC.browser.name||DetectRTC.hasSpeakers,E.conf.isWebRTCSupported=DetectRTC.isWebRTCSupported,E.conf.osName=DetectRTC.osName,E.conf.osVersion=DetectRTC.osVersion,E.conf.browserName=DetectRTC.browser.name,E.conf.browserVersion=DetectRTC.browser.version,E.conf.license&&E.conf.isWebRTCSupported&&E.conf.hasMicrophone&&E.conf.hasSpeakers&&"https"===E.conf.protocol&&("chrome"===E.conf.browserName.toLowerCase()||"opera"===E.conf.browserName.toLowerCase()||"safari"===E.conf.browserName.toLowerCase())?E.register||E.ua.start():E.conf.license||v.warning({title:u.instant("TOOLBAR.WARNING"),msg:u.instant("TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"),clickToClose:!0,showClose:!0,shake:!1,timeout:!1,position:"bottom-right"})}.bind(this))})}function S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.debug("addCall -> target, inbound, fullname",e,n,t),E.calls.unshift({target:e,fullname:t||e,inbound:n,time:moment().format("HH:mm")}),50<E.calls.length&&E.calls.pop()}function I(e){y.debug("answer -> session",e._request),e.notification&&(e.notification.close(),e.notification=null),E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0,e.answer(E.sessionConf),E.isJabraEnabled&&(jabra.offHook(),E.jabraSession=e)}function O(e,n){y.debug("terminate -> session",e._request),e.notification&&(e.notification.close(),e.notification=null);var t={};if(n?t.status_code=n:e.isEstablished()||(t.status_code=603),e.terminate(t),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var a=_.last(E.sessions);a.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=a):jabra.offHook()}}function C(t){return y.debug("getVoiceChannels -> session",t._request),h.rpc.getVoiceChannels().$promise.then(function(e){var n=_.find(e.rows,function(e){return e.sipcalllinkedid===t.call_id?e:e.sipcalluniqueid===t.call_id?e:null});n&&(t.monitor=n.monitor,t.uniqueid=n.uniqueid,t.monitors=n.monitors)})}function w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(e,n){switch(e){case"ringing":E.soundPlayer.muted=E.conf.ringingMute,E.conf.ringingId&&E.soundPlayer.setSinkId(E.conf.ringingId).then(function(){E.soundPlayer.volume=E.conf.ringingVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.ringingId)});break;case"speaker":E.remotePlayer.muted=E.conf.speakerMute,E.conf.speakerId&&E.remotePlayer.setSinkId(E.conf.speakerId).then(function(){E.remotePlayer.volume=E.conf.speakerVolume}).then(function(){n&&S()}).catch(function(e){y.info(e.message,E.conf.speakerId)});break;case"microphone":for(var t=0;t<E.sessions.length;t+=1)E.conf.microphoneMute?E.sessions[t].mute():E.sessions[t].unmute();jabra&&E.isJabraEnabled&&(E.conf.microphoneMute?jabra.mute():jabra.unmute()),n&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(n){return h.user.getVoicePrefixes({id:E.conf.id}).$promise.then(function(e){if(e.count)return a.show({controller:"PrefixDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/prefix/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{prefixes:e,required:E.conf.phoneBarPrefixRequired}})}).then(function(e){if(E.conf.phoneBarPrefixRequired){if(e&&-1!==e)return e+n}else{if(e&&-1!==e)return e+n;if(!e)return n}})}function P(){if(E.isInConference){var e=E.sessions[0].connection.getReceivers()[0],n=E.sessions[1].connection.getReceivers()[0],t=new MediaStream;t.addTrack(e.track),t.addTrack(n.track);var a=document.getElementById("remote-audio");a.srcObject=t;var i=a.play();void 0!==i&&i.then(function(){}).catch(function(e){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}E.currentUser=b.getCurrentUser(),E.direction="right",E.selectedMode="md-scale",E.target="",E.showDialpad=!1,E.soundPlayer=document.getElementById(E.conf.soundPlayerId),E.remotePlayer=document.getElementById(E.conf.remotePlayerId),E.soundPlayer.volume=1,E.sessionConf={mediaConstraints:{audio:!0,video:!1},pcConfig:{iceServers:[]}},E.sessions=[],E.calls=[],E.callbackQueue=[],E.canGoInConference=!1,E.isInConference=!1,E.currentConferenceSessions=[],E.ua=new JsSIP.UA({sockets:[new JsSIP.WebSocketInterface("wss://"+E.conf.host+":"+E.conf.wssPort+"/ws")],uri:new JsSIP.URI("sip",E.conf.name,E.conf.host,5060,null,null).toString(),authorization_user:E.conf.name,ha1:E.conf.ha1,realm:E.conf.realm,user_agent:E.conf.ua,session_timers_refresh_method:"invite",register_expires:E.conf.phoneBarExpires||60,register:!0}),E.conf=_.merge(c.webrtc,E.conf),E.initDeviceInProgress=!1,E.isJabraEnabled=!1,E.isJabraInitialized=!1,E.jabraSession=null,E.jabraClicked=!1,E.buttonClicked=!1,E.originateInProgress=!1,t.bind("keyup",function(e){switch(e.keyCode){case 27:g(function(){E.showDialpad=!1})}}),E.$onInit=function(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!0))};var e=[h.network.get({type:"turn",nolimit:!0}).$promise,h.network.get({type:"stun",nolimit:!0}).$promise];o.all(e).then(function(e){var n=e[0].rows,t=e[1].rows,a=[],i=[];t.forEach(function(e){i.push("stun:"+e.value)}),a.push({urls:i}),n.forEach(function(e){var n={urls:"turn:"+e.value};e.username&&(n.username=e.username),e.password&&(n.credential=e.password),a.push(n)}),E.sessionConf.pcConfig={iceServers:a}}),this.ua.on("registered",function(){this.registered=!0}.bind(this)),this.ua.on("unregistered",function(){this.registered=!1}.bind(this)),this.ua.on("newRTCSession",function(e){y.debug("onNewRTCSession -> data",e);var n,t,a,i,s,o=e.session,r=!0,l="",d=0;switch(e.originator){case"local":o.outgoing=!0,o.name=e.request.ruri.user,o.user=e.request.ruri.user,T(o.user,!1),t=e.request.extraHeaders,a="X-callback-url",s=_.find(t,function(e){return _.startsWith(e,a)}),n=!!s&&_.trim(s.replace(a,"").replace(i||":","")),E.isJabraEnabled&&(E.jabraSession&&jabra.resume(),E.jabraSession=o,jabra.offHook());break;case"remote":var c=b.getCurrentUser();c.voicePause&&c.phoneBarDnd&&(r=!1);var m=e.request.getHeader("Call-Type")||"";if(c.ignorePauseForPreviewCalls&&"PREVIEW"===m&&(r=!0),E.originateInProgress&&(r=!1),r&&(o.incoming=!0,o.name=e.request.from.display_name,o.user=e.request.from.uri.user,l=e.request.getHeader("X-Answer-Mode")||"",d=e.request.getHeader("X-Answer-After")||0,function(n){y.debug("getNotification -> session",n._request);var e=n.name?n.name+" <"+n.user+">":n.user;E.currentUser.privacyEnabled&&(e=A.mask(e)),f.create("Incoming call from: ",e,null,function(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,n);var t=!1;switch(n.originator){case"local":this.conf.ringingMute||(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/incoming-call.ogg"),t=!0);break;case"remote":this.putOtherCallsOnHold(e),this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/outgoing-call.ogg"),t=!0}E.originateInProgress&&(E.originateInProgress=!1),t&&(this.soundPlayer.loop="loop",this.soundPlayer.play().catch(function(e){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,n);var t=document.getElementById("div_session_"+e.id.substr(0,32));t&&$(t).scope().$broadcast("timer-start"),e.confirmed=!0,"remote"===n.originator&&e.connection&&(e.connection.onaddstream=w.bind(this),_.head(e.connection.getRemoteStreams())&&(this.remotePlayer.srcObject=_.head(e.connection.getRemoteStreams()),this.remotePlayer.play())),this.soundPlayer.pause(),this.soundPlayer.loop=null,this.putOtherCallsOnHold(e),e.autoAnswer&&(this.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/beep.ogg"),this.soundPlayer.play().catch(function(e){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),E.buttonClicked=!0),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}0===E.sessions.length&&E.currentUser.voicePause&&h.user.pause({id:E.currentUser.id,type:_.startsWith(E.currentUser.pauseType,"#")?E.currentUser.pauseType.substring(1):E.currentUser.pauseType}).$promise.catch(function(e){v.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})}),E.conf.microphoneMute=!1,E.initDevice("microphone",!0)}.bind(this,o)),o.on("failed",function(e,n){if(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),E.originateInProgress&&(E.originateInProgress=!1),_.remove(this.sessions,{id:e.id}),2!==E.sessions.length&&(E.canGoInConference=!1),E.isJabraEnabled)if(0===E.sessions.length)e.localHold&&jabra.resume(),jabra.onHook(),E.jabraSession=null;else{var t=_.last(E.sessions);t.localHold?(jabra.onHook(),jabra.hold(),E.jabraSession=t):jabra.offHook()}}.bind(this,o)),o.on("icecandidate",function(e,n){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.debug("originateHook -> payload",e);var n=e.callNumber,t=e.callerId,a=e.callbackUrl;E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var i=n.replace(/ /g,"");if(i=(i=i.replace(/\(/g,"")).replace(/\)/g,"")){var s=angular.copy(E.sessionConf);s.extraHeaders=[],t&&s.extraHeaders.push("X-CID: "+t),a&&s.extraHeaders.push("X-callback-url: "+a),E.originateInProgress=!0,E.ua.call(i,s)}}.bind(this)),r.on("webbar:hangup",function(e){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.hold(a)}}.bind(this)),r.on("webbar:unhold",function(e){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.error("sessionId required")}.bind(this)),r.on("webbar:stopmonitors",function(e){if(e.agentId===E.currentUser.id){var n=_.find(E.sessions,["uniqueid",e.uniqueid]);if(!n)return;n.monitors.forEach(function(e){e.status="pause"}),n.monitor=!1}}.bind(this))}.bind(this),E.type=function(e,n){var t=e;switch(E.target||(E.target=""),n&&(E.target+=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)),e){case"*":t="asterisk";break;case"#":t="pound"}E.conf.enableDtmfTone&&(E.soundPlayer.setAttribute("src","assets/ms-phonebar/sounds/dialpad/"+t+".ogg"),E.soundPlayer.play().catch(function(e){y.error(e.message)}));for(var a=0;a<E.sessions.length;a+=1)E.sessions[a].isEstablished()&&!E.sessions[a].isOnHold().local&&E.sessions[a].sendDTMF(e)},E.call=function(){if(E.target&&E.target!==E.conf.name&&E.target!==E.conf.internal){E.conf.microphoneId?E.sessionConf.mediaConstraints.audio={deviceId:E.conf.microphoneId}:E.sessionConf.mediaConstraints.audio=!0;var e=E.target.replace(/ /g,"");return D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);var e=a.prompt().title("Transfer").textContent("Type the target").placeholder("Target").ariaLabel("Target").ok("Transfer").cancel("Cancel");a.show(e).then(function(e){return D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),a.show({controller:"RecordDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/record/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:E.sessions}})},E.unhold=function(e){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),E.unhold(e)},E.typeWrapper=function(e){switch(e.key.toLowerCase()){case"0":case"1":case"2":case"3":case"4":case"5":case"6":case"7":case"8":case"9":case"*":case"#":E.type(e.key);break;case"enter":E.call()}},E.toggleDialpad=function(){E.showDialpad=!E.showDialpad},E.referAttended=function(e){y.debug("referAttended -> session",e._request),a.show({controller:"ReferAttendedDialogController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/referAttended/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{session:e,sessions:_.reject(E.sessions,{id:e.id}),isJabraEnabled:E.isJabraEnabled}})},E.closeDialpad=function(){E.showDialpad=!1},E.initDevice=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),1<E.sessions.length)for(var n=0;n<E.sessions.length;n+=1)E.sessions[n].id===e.id||E.sessions[n].isOnHold().remote||E.sessions[n].hold({useUpdate:!1})},E.targetChanged=function(e){e?/^(\w|\.|\+|#|\*|\(|\)|\s|-)*$/.test(e)?(E.target=e,p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target)):E.target?p.$broadcast("angucomplete-alt:changeInput","ms-target-wrap",E.target):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},E.start3WayConf=function(){E.isInConference=!0,E.canGoInConference=!1,E.currentConferenceSessions.push(E.sessions[0].id),E.currentConferenceSessions.push(E.sessions[1].id);var e=new AudioContext,n=E.sessions[0].connection.getSenders()[0],t=E.sessions[0].connection.getReceivers()[0];t.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},1e3)},!1),E.sessions[0].unhold({useUpdate:!1}),E.sessions[1].unhold({useUpdate:!1}),t.track.enabled=!0,i.track.enabled=!0;var s=new MediaStream,o=e.createMediaStreamDestination();o=(e=new AudioContext).createMediaStreamDestination();var r=e.createMediaStreamSource(new MediaStream([i.track]));r.connect(o),(r=e.createMediaStreamSource(new MediaStream([n.track]))).connect(o),n.replaceTrack(o.stream.getTracks()[0]).then(function(){}),o=e.createMediaStreamDestination(),(r=e.createMediaStreamSource(new MediaStream([t.track]))).connect(o),(r=e.createMediaStreamSource(new MediaStream([a.track]))).connect(o),a.replaceTrack(o.stream.getTracks()[0]).then(function(){s.addTrack(t.track),s.addTrack(i.track);var e=document.getElementById("remote-audio");e.srcObject=s;var n=e.play();void 0!==n&&n.then(function(){}).catch(function(e){y.error(e)})})},E.patchConference=P,p.$on("webrtc::settings",function(e){a.show({controller:"SettingsController",controllerAs:"vm",templateUrl:"assets/ms-phonebar/settings/settings.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{devices:function(){return navigator.mediaDevices.enumerateDevices()}},locals:{conf:E.conf,activeSessions:E.sessions}}).then(function(e){e&&(E.conf=e,E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!1)))})}),p.$on("webrtc::logout",function(){E.ua.stop(),jabra&&E.isJabraInitialized&&jabra.shutdown(),navigator.mediaDevices.ondevicechange=function(){}}),p.$on("webrtc::call",function(e,n){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.debug("onRemoteTransfer -> evt, data",e,n),n.target)for(var t=0;t<E.sessions.length;t+=1)if(E.sessions[t].isEstablished()&&!E.sessions[t].isOnHold().local)return D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.debug("$destroy event fired"),r.removeAllListeners("webbar:originate"),r.removeAllListeners("webbar:hangup"),r.removeAllListeners("webbar:answer"),r.removeAllListeners("webbar:hold"),r.removeAllListeners("webbar:unhold"),r.removeAllListeners("webbar:transfer"),r.removeAllListeners("webbar:stopmonitors")})}e.$inject=["$scope","$document","$timeout","$interval","$mdDialog","$mdToast","$window","$translate","$http","$q","toasty","api","motNotification","Auth","socket","privacyManager","ClientSideLoggingService"],angular.module("app.core").controller("MsPhonebarController",e).directive("msPhonebar",function(){return{restrict:"E",scope:{conf:"=",sessions:"=",registered:"="},require:"msPhonebar",controller:"MsPhonebarController",controllerAs:"vm_pb",bindToController:!0,templateUrl:"assets/ms-phonebar/ms-phonebar.html"}})}(),function(){"use strict";function e(n,e,t){var a=this;a.prefixes=e,a.required=t,a.closeDialog=function(e){n.hide(e)},a.keyPress=function(e){13===e.keyCode&&this.call()},a.call=function(){n.hide(a.prefix)}}e.$inject=["$mdDialog","prefixes","required"],angular.module("app.core").controller("PrefixDialogController",e)}(),function(){"use strict";function e(i){return{restrict:"C",controller:["$scope","$element",function(e,n){function t(){n.css("display","inline"),i(a,1e3)}function a(){n.css("display","none"),i(t,1e3)}t()}],replace:!0}}function n(n,i,s,e,t){var o=this;function a(n,e){console.log("startMonitor");var t=i.defer(),a=(e||n.filename.replace(/^.*[\\\/]/,"")).split(".")[0];return s.rpc.startMonitor({uniqueid:o.session.uniqueid,filename:a,format:"wav"}).$promise.then(function(e){n.filename=a+".wav",n.mixmonitorid=e.mixmonitorid,n.status="rec",o.session.monitor=!0,t.resolve(n)}).catch(function(e){t.reject(e)}),t.promise}o.title="Record",o.sessions=e,o.session=t,o.closeDialog=function(){n.hide()},o.addRecording=function(){var e=n.prompt({skipHide:!0}).title("Start new recording").textContent("Type the file name.").placeholder("File name").ariaLabel("File name").initialValue(function(){function e(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return e()+e()+"-"+e()+"-"+e()+"-"+e()+"-"+e()+e()+e()}()).ok("Start").cancel("Cancel");n.show(e).then(function(e){return a({},e)}).then(function(e){o.session.monitors.push(e)})},o.stop=function(n){return console.log("stopMonitor"),s.rpc.stopMonitor({uniqueid:o.session.uniqueid,mixmonitorid:n.mixmonitorid}).$promise.then(function(e){n.status="pause",o.session.monitor=_.includes(o.session.monitors,{status:"rec"})}).catch(function(e){console.error(e)})},o.start=a}e.$inject=["$timeout"],n.$inject=["$mdDialog","$q","api","sessions","session"],angular.module("app.core").directive("msBlink",e).controller("RecordDialogController",n)}(),function(){"use strict";function e(n,s,a,i,e){var o=this;function r(e,n,t,a,i){return console.debug("onTransferCallback -> session, textContent, position, delay",e,n,t,a),function(){s.show(s.simple().textContent(n).position(t).hideDelay(a)),e.terminate(),jabra&&i&&jabra.onHook(),l()}}function l(e){n.hide(e)}o.title="Refer Attended",o.sessions=a,o.session=i,o.isJabraEnabled=e,o.sessionTarget=null,a.length&&(o.target=a[0].user),o.closeDialog=l,o.transfer=function(){var e,n,t=_.find(a,function(e){if(e.user===o.target)return e});n=t.outgoing?(e=t,o.session):(e=o.session,t);n.refer(e.user,{replaces:e,eventHandlers:{requestSucceeded:r(i,"requestSucceeded","top right",3e3,o.isJabraEnabled),requestFailed:r(i,"requestFailed","top right",3e3,o.isJabraEnabled)}})}}e.$inject=["$mdDialog","$mdToast","sessions","session","isJabraEnabled"],angular.module("app.core").controller("ReferAttendedDialogController",e)}(),function(){"use strict";function e(e,s,n,t){var a=this;function i(e,n,t){var a;if(s[t]){if(a=_.find(e,function(e){return e.deviceId===s[t]}))return a.deviceId;var i=_.findIndex(e,function(e){return e.kind===n});if(0<=i)return e[i].deviceId}else(a=_.find(e,function(e){return e.kind===n}))&&(s[t]=a.deviceId);return s[t]||null}_.remove(n,function(e){return"audioinput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)||"audiooutput"===e.kind&&("default"===e.deviceId||"communications"===e.deviceId)}),s.ringingId=i(n,"audiooutput","ringingId"),s.speakerId=i(n,"audiooutput","speakerId"),s.microphoneId=i(n,"audioinput","microphoneId"),s.ringingVolume=s.ringingVolume||.5,s.speakerVolume=s.speakerVolume||.5,s.microphoneVolume=s.microphoneVolume||1,s.ringingMute=s.ringingMute||!1,s.speakerMute=s.speakerMute||!1,s.microphoneMute=s.microphoneMute||!1,a.conf=angular.copy(s),a.devices=n,a.activeSessions=t,a.saveSettings=function(){e.hide(a.conf)},a.closeDialog=function(){e.hide()},a.isCompatibleBrowser=function(){return"chrome"===a.conf.browserName.toLowerCase()||"opera"===a.conf.browserName.toLowerCase()||"safari"===a.conf.browserName.toLowerCase()}}e.$inject=["$mdDialog","conf","devices","activeSessions"],angular.module("app.toolbar").controller("SettingsController",e)}(),function(){"use strict";function e(e,t,a){var i=this;function s(e,n,t){r(e).then(function(){n&&!1!==t&&i.search()})}function o(e){var n=e.key;i.pickerModels[n].dateStart?!0===e.useFromToKeys?i.query[n]={from:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),to:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]={$gte:moment(i.pickerModels[n].dateStart).utcOffset(0,!0).format(),$lte:moment(i.pickerModels[n].dateEnd).utcOffset(0,!0).add(23,"hours").add(59,"minutes").add(59,"seconds").format()}:i.query[n]=void 0,i.search()}function r(e){var n=e.key,t={param:i.query[n],resources:e.options,placeholder:e.placeholder,ngValue:e.ngValue};return a.setPlaceholder(t).then(function(e){i.placeholders[n]=e})}i.pickerModels={},i.placeholders={},i.localizationMap=t.localizationMap,i.onMultiselectInit=function(e){r(e)},i.onDateRangeInit=function(e){var n=e.key;i.query[n]?i.pickerModels[n]=t.setSelectedDate(i.query[n]):i.pickerModels[n]={dateStart:null}},i.onMultiselectSelection=s,i.onDateRangeSelection=o,i.clearDate=function(e){var n=e.key;i.pickerModels[n]={dateStart:null},delete i.query[n],i.search()},i.clearSelection=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=!1===e.clearAll?[_.head(e.options)[t]]:[],r(e).then(function(){i.search()})},i.selectAll=function(e){var n=e.key,t=e.ngValue||"id";i.query[n]=_.map(e.options,t),r(e).then(function(){i.search()})},e.$on("ms-quick-filter:update",function(e,t){t.filters.forEach(function(e){var n=_.find(i.filters,["name",e]);if(n)switch(n.type){case"date":o(n);break;case"multiselect":s(n,!0,t.update);break;case"select":i.search()}})})}e.$inject=["$scope","dateRangeManager","quickFilterManager"],angular.module("app.core").directive("msQuickFilter",function(){return{restrict:"E",scope:{query:"=",filters:"=",search:"&"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-quick-filter/ms-quick-filter.html"}})}(),function(){"use strict";angular.module("app.core").directive("msRandomClass",function(){return{restrict:"A",scope:{msRandomClass:"="},link:function(e,n){var t=e.msRandomClass[Math.floor(Math.random()*e.msRandomClass.length)];n.addClass(t)}}})}(),function(){"use strict";function e(i){return{restrict:"E",scope:{id:"=",model:"=",download:"="},replace:!0,link:function(n,e){var t=!1,a=document.createElement("audio");n.download||a.setAttribute("controlsList","nodownload"),a.setAttribute("preload","none"),a.setAttribute("controls",""),a.setAttribute("style","width: 265px;"),a.setAttribute("src"," "),a.onplay=function(e){t||(t=!0,e.preventDefault(),i[n.model||"voiceRecording"].download({id:n.id}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type});a.setAttribute("type",e.type),a.setAttribute("src",URL.createObjectURL(t)),a.play()}).catch(function(e){console.error(e)}))},e.append(a)}}}e.$inject=["api"],angular.module("app.core").directive("msRecording",e)}(),function(){"use strict";angular.module("app.core").directive("msResponsiveTable",function(){return{restrict:"A",link:function(e,n){var t=angular.element('<div class="ms-responsive-table-wrapper"></div>');n.after(t),t.append(n)}}})}(),function(){"use strict";function e(n,i,s,e){var o=this;function t(){angular.isArray(o.onSearch)?a(o.onSearch):o.onResultClick?(o.resultsLoading=!0,n.$parent.$eval("vm.search(query)",{query:o.query.filter}).then(function(e){a(e)}).catch(function(){a([])}).finally(function(){o.resultsLoading=!1})):o.onSearch()}function a(e){o.expanded&&(void 0===e||angular.isArray(e)||null===e)&&(o.selectedResultIndex=0,o.results=e)}function r(){o.expanded=!0,o.displayOn=!0,n.expand()}function l(e){!1!==e&&(o.query.filter=void 0,o.onResultClick?a(null):t()),o.expanded=!1,n.collapse()}function d(e){o.onResultClick&&o.onResultClick({item:e}),l()}function c(){var e=i.find(".ms-search-bar-results"),n=angular.element(e.find(".result")[o.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;o.ignoreMouseEvents=!0,s.cancel(o.mouseEventIgnoreTimeout),o.mouseEventIgnoreTimeout=s(function(){o.ignoreMouseEvents=!1},250),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}}o.queryOptions={debounce:o.debounce||0},o.searchOnEnterKey=e.get().searchOnEnterKey||!1,o.resultsLoading=!1,o.results=null,o.selectedResultIndex=0,o.ignoreMouseEvents=!1,o.expandBar=r,o.collapseBar=l,o.blurCollapse=function(){if(!o.collapseOnBlur)return;l()},o.onKeyDown=function(e){var n=e.keyCode;-1<[27,38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:if(!o.onResultClick)return t();if(!o.results)return;d(o.results[o.selectedResultIndex]);break;case 27:l();break;case 38:0<=o.selectedResultIndex-1&&(o.selectedResultIndex--,c());break;case 40:if(!o.results)return;o.selectedResultIndex+1<o.results.length&&(o.selectedResultIndex++,c())}},o.absorbEvent=function(e){e.preventDefault()},o.handleMouseenter=function(e){if(o.ignoreMouseEvents)return;o.selectedResultIndex=e},o.handleResultClick=d,n.$watch("vm.displayOn",function(e){angular.isUndefined(e)||(!0!==e||o.expanded?e||!1===o.expanded||l(!1):r())}),n.$watch("vm.query.filter",function(e,n){if(!angular.isUndefined(e)&&0!==e.length&&!angular.equals(e,n)&&!1!==o.displayOn){if(o.expanded){if(!0===o.searchOnEnterKey&&!o.onResultClick)return;if(o.minChars&&o.minChars>e.length)return}else r();t()}})}function n(a){return{restrict:"E",scope:{query:"=?",debounce:"=?",direction:"@",iconColor:"@",onSearch:"&",onResultClick:"&?",onExpand:"&?",onCollapse:"&?",collapseOnBlur:"<?",minChars:"<?",displayOn:"=?"},controller:e,controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-search-bar/ms-search-bar.html",compile:function(e){return e.addClass("ms-search-bar"),{post:function(n,t){n.collapse=function(){if(t.removeClass("expanded"),"down"===n.vm.direction){t.removeClass("down");var e=t.closest("md-toolbar");e&&e.removeClass("h-128")}a.find("body").removeClass("ms-search-bar-expanded")},n.expand=function(){if(t.addClass("expanded"),"down"===n.vm.direction){t.addClass("down");var e=t.closest("md-toolbar");e&&e.addClass("h-128")}a.find("body").addClass("ms-search-bar-expanded")}}}}}}e.$inject=["$scope","$element","$timeout","settingsManager"],n.$inject=["$document"],angular.module("app.core").controller("MsSearchBarController",e).directive("msSearchBar",n)}(),function(){"use strict";function e(e,t,i,o,r,l){var d=this;d.query="",d.queryOptions={debounce:300},d.resultsLoading=!1,d.selectedResultIndex=0,d.ignoreMouseEvents=!1,d.mobileBarActive=!1,d.results=null,d.shortcuts=[],d.sortableOptions={ghostClass:"ghost",forceFallback:!0,fallbackClass:"dragging",onSort:function(){d.saveShortcuts()}},d.populateResults=function(){for(var e=[],n=l.getFlatNavigation(),t=r.defer(),a=0;a<n.length;a++)n[a].uisref&&e.push(n[a]);if(d.query){e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(d.query)))return!0});for(var i=0;i<e.length;i++){e[i].hasShortcut=!1;for(var s=0;s<d.shortcuts.length;s++)if(d.shortcuts[s]._id===e[i]._id){e[i].hasShortcut=!0;break}}}else 0<d.shortcuts.length&&(e=d.shortcuts);return d.selectedResultIndex=0,o(function(){t.resolve(e)},250),t.promise},d.loadShortcuts=function(){var e=r.defer(),n=angular.fromJson(t.get("motion.shortcuts"));angular.isUndefined(n)&&(n=[{title:"Agents",icon:"icon-account-multiple",state:"app.staff.agents",weight:5,children:[],uisref:"app.staff.agents",hasShortcut:!0},{title:"License",icon:"icon-cog",state:"app.settings.license",weight:10,children:[],uisref:"app.settings.license",hasShortcut:!0}],t.put("motion.shortcuts",angular.toJson(n)));return e.resolve(n),e.promise},d.saveShortcuts=function(){var e=r.defer();return t.put("motion.shortcuts",angular.toJson(d.shortcuts)),o(function(){e.resolve({success:!0})},250),e.promise},d.addShortcut=function(e){e.hasShortcut=!0,d.shortcuts.push(e),d.saveShortcuts()},d.removeShortcut=function(e){e.hasShortcut=!1;for(var n=0;n<d.shortcuts.length;n++)d.shortcuts[n]._id===e._id&&(d.shortcuts.splice(n,1),d.query||(0===d.shortcuts.length?d.results=null:n>=d.shortcuts.length&&(d.selectedResultIndex=d.shortcuts.length-1)));d.saveShortcuts()},d.handleResultClick=function(e){e.hasShortcut?d.removeShortcut(e):d.addShortcut(e)},d.absorbEvent=function(e){e.preventDefault()},d.handleKeydown=function(e){var n=e.keyCode;-1<[38,40].indexOf(n)&&e.preventDefault();switch(n){case 13:d.handleResultClick(d.results[d.selectedResultIndex]);break;case 38:0<=d.selectedResultIndex-1&&(d.selectedResultIndex--,d.ensureSelectedResultIsVisible());break;case 40:d.selectedResultIndex+1<d.results.length&&(d.selectedResultIndex++,d.ensureSelectedResultIsVisible())}},d.handleMouseenter=function(e){if(d.ignoreMouseEvents)return;d.selectedResultIndex=e},d.temporarilyIgnoreMouseEvents=function(){d.ignoreMouseEvents=!0,o.cancel(d.mouseEventIgnoreTimeout),d.mouseEventIgnoreTimeout=o(function(){d.ignoreMouseEvents=!1},250)},d.ensureSelectedResultIsVisible=function(){var e=i.find("#ms-shortcut-add-menu").find(".results"),n=angular.element(e.find(".result")[d.selectedResultIndex]);if(e&&n){var t=n.position().top-8,a=n.position().top+n.outerHeight()+8;d.temporarilyIgnoreMouseEvents(),e.scrollTop()>t&&e.scrollTop(t),a>e.height()+e.scrollTop()&&e.scrollTop(a-e.height())}},d.toggleMobileBar=function(){d.mobileBarActive=!d.mobileBarActive},d.loadShortcuts().then(function(e){d.shortcuts=e,0<d.shortcuts.length&&(d.results=e)}),e.$watch("MsShortcuts.query",function(e,n){angular.isUndefined(e)||angular.equals(e,n)||(d.resultsLoading=!0,d.populateResults().then(function(e){d.results=e},function(){d.results=[]}).finally(function(){d.resultsLoading=!1}))})}e.$inject=["$scope","$cookies","$document","$timeout","$q","msNavigationService"],angular.module("app.core").controller("MsShortcutsController",e).directive("msShortcuts",function(){return{restrict:"E",scope:{},require:"msShortcuts",controller:"MsShortcutsController as MsShortcuts",bindToController:{},templateUrl:"app/core/directives/ms-shortcuts/ms-shortcuts.html",compile:function(e){return e.addClass("ms-shortcuts"),function(e,n){}}}})}(),function(){"use strict";angular.module("app.core").directive("msSidenavHelper",function(){return{restrict:"A",require:"^mdSidenav",link:function(e,n,t,a){e.$watch(function(){return a.isOpen()&&!a.isLockedOpen()},function(e){angular.isUndefined(e)||(n.parent().toggleClass("full-height",e),angular.element("html").toggleClass("sidenav-open",e))})}}})}(),function(){"use strict";function e(a){return{restrict:"E",link:function(e,n){var t=e.$on("msSplashScreen::remove",function(){a.leave(n).then(function(){t(),e=n=null})})}}}e.$inject=["$animate"],angular.module("app.core").directive("msSplashScreen",e)}(),function(){"use strict";function e(e){var i=this;function n(){i.setCurrentStep(1)}function t(e){return o(e)?i.steps[e-1].scope.optionalStep:null}function a(e){return o(e)?!!i.steps[e-1].scope.hideStep:null}function s(e){return o(e)?!!t(e)||i.steps[e-1].form.$valid:null}function o(e){return!(angular.isUndefined(e)||e<1||e>i.steps.length)}i.mainForm=void 0,i.orientation="horizontal",i.steps=[],i.currentStep=void 0,i.currentStepNumber=1,i.setOrientation=function(e){i.orientation=e||"horizontal"},i.registerMainForm=function(e){i.mainForm=e},i.registerStep=function(e,n,t){var a={element:e,scope:n,form:t,stepNumber:n.step||i.steps.length+1,stepTitle:n.stepTitle,stepTitleTranslate:n.stepTitleTranslate};return i.steps.push(a),i.steps.sort(function(e,n){return e.stepNumber-n.stepNumber}),a},i.setupSteps=function(){i.setCurrentStep(i.currentStepNumber)},i.resetForm=function(){e(function(){for(var e=0;e<i.steps.length;e++)i.steps[e].form.$setPristine(),i.steps[e].form.$setUntouched();i.mainForm.$setPristine(),i.mainForm.$setUntouched(),n()})},i.setCurrentStep=function(e){if(!o(e))return;if(i.currentStepNumber=e,"horizontal"===i.orientation){for(var n=0;n<i.steps.length;n++)i.steps[n].element.hide();i.steps[i.currentStepNumber-1].element.show()}else if("vertical"===i.orientation){for(var t=0;t<i.steps.length;t++)i.steps[t].element.find(".ms-stepper-step-content").hide();i.steps[i.currentStepNumber-1].element.find(".ms-stepper-step-content").show()}},i.gotoStep=function(e){if(a(e))return;i.setCurrentStep(e)},i.gotoPreviousStep=function(){for(var e=i.currentStepNumber-1,n=e;1<=n;n--)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoNextStep=function(){for(var e=i.currentStepNumber+1,n=e;n<=i.steps.length;n++)if(!a(n)){e=n;break}i.setCurrentStep(e)},i.gotoFirstStep=n,i.gotoLastStep=function(){i.setCurrentStep(i.steps.length)},i.isFirstStep=function(){return 1===i.currentStepNumber},i.isLastStep=function(){return i.currentStepNumber===i.steps.length},i.isStepCurrent=function(e){return o(e)?i.currentStepNumber===e:null},i.isStepDisabled=function(e){if(!o(e))return null;for(var n=!1,t=1;t<e;t++)if(!s(t)){n=!0;break}return n},i.isStepOptional=t,i.isStepHidden=a,i.filterHiddenStep=function(e){return!a(e.stepNumber)},i.isStepValid=s,i.isStepNumberValid=o,i.isFormValid=function(){return i.mainForm.$valid}}function n(o){return{restrict:"A",scope:{},require:["form","msVerticalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/vertical.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];o(function(){s.setOrientation("vertical"),s.registerMainForm(i),s.setupSteps()})}}}}e.$inject=["$timeout"],n.$inject=["$timeout"],angular.module("app.core").controller("MsStepperController",e).directive("msHorizontalStepper",function(){return{restrict:"A",scope:{},require:["form","msHorizontalStepper"],priority:1001,controller:"MsStepperController as MsStepper",bindToController:{model:"=ngModel"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/horizontal/horizontal.html",compile:function(e){return e.addClass("ms-stepper"),function(e,n,t,a){var i=a[0],s=a[1];s.setOrientation("horizontal"),s.registerMainForm(i),s.setupSteps()}}}}).directive("msHorizontalStepperStep",function(){return{restrict:"E",require:["form","^msHorizontalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),s.registerStep(n,e,i),n.hide()}}}}).directive("msVerticalStepper",n).directive("msVerticalStepperStep",function(){return{restrict:"E",require:["form","^msVerticalStepper"],priority:1e3,scope:{step:"=?",stepTitle:"=?",stepTitleTranslate:"=?",optionalStep:"=?",hideStep:"=?"},transclude:!0,templateUrl:"app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",compile:function(e){return e.addClass("ms-stepper-step"),function(e,n,t,a){var i=a[0],s=a[1];e.optionalStep=angular.isDefined(t.optionalStep),e.stepInfo=s.registerStep(n,e,i),e.MsStepper=s,n.find(".ms-stepper-step-content").hide()}}}})}(),function(){"use strict";function e(e){return{restrict:"E",scope:{},transclude:!0,controller:"MsTabScrollController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-tab-scroll/ms-tab-scroll.html",compile:function(e){return e.addClass("ms-tab-scroll"),function(e,n){}}}}e.$inject=["$document"],angular.module("app.core").controller("MsTabScrollController",function(){function n(){var e=document.getElementById("bar-container"),n=document.getElementById("tab-container");return n.scrollWidth>e.scrollWidth&&0==e.scrollLeft&&0==n.scrollLeft?"right":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft>=n.scrollWidth?"left":n.scrollWidth>e.scrollWidth&&n.scrollLeft>e.scrollLeft&&e.scrollWidth+n.scrollLeft<n.scrollWidth?"both":"none"}this.onTabScroll=function(e){"left"==e?$("#tab-container").stop().animate({scrollLeft:"-=400"},1e3):$("#tab-container").stop().animate({scrollLeft:"+=400"},1e3)},this.canScroll=function(e){switch(n()){case"both":return!0;case"left":return"left"==e;case"right":return"right"==e;case"none":default:return!1}}}).directive("msTabScroll",e)}(),function(){"use strict";function e(m,u){return{scope:!0,require:"^msTimeline",compile:function(e){return e.addClass("ms-timeline-item").addClass("hidden"),function(e,t,n,a){var i=72,s=!1,o=!1,r=a.getScrollEl();!function(){t.find("ms-card")?e.$on("msCard::cardTemplateLoaded",function(e,n){var t=angular.element(n[0]);d(t).then(function(){m(function(){s=!0})})}):d(t).then(function(){m(function(){s=!0})});r.on("scroll",c),c()}();var l=e.$watch(function(){return s&&o},function(e,n){angular.equals(e,n)||e&&(t.removeClass("hidden").addClass("animate"),l())},!0);function d(e){var n=u.defer(),t=e.find("img");return 0<t.length?t.on("load",function(){n.resolve("Image is loaded")}):n.resolve("No images"),n.promise}function c(){r.scrollTop()+r.height()>t.position().top+i&&(m(function(){o=!0}),r.off("scroll",c))}}}}}e.$inject=["$timeout","$q"],angular.module("app.core").controller("MsTimelineController",function(){var n=this;n.scrollEl=void 0,n.setScrollEl=function(e){n.scrollEl=e},n.getScrollEl=function(){return n.scrollEl}}).directive("msTimeline",function(){return{scope:{msTimeline:"=?",loadMore:"&?msTimelineLoadMore"},controller:"MsTimelineController",compile:function(e){return e.addClass("ms-timeline"),function(e,n,t,a){var i=angular.element('<div class="ms-timeline-loader md-accent-bg md-whiteframe-4dp"><span class="spinner"></span></div>');n.append(i);var s={scrollEl:"#content"};s=angular.extend(s,e.msTimeline,{});var o=angular.element(s.scrollEl);a.setScrollEl(o);var r=144;function l(){o.scrollTop()+o.height()+r>i.position().top&&(i.addClass("show"),c(),e.loadMore&&e.loadMore().then(function(){i.removeClass("show"),d()},function(){i.remove()}))}function d(){o.on("scroll",l)}function c(){o.off("scroll",l)}d(),e.$on("$destroy",function(){c()})}}}}).directive("msTimelineItem",e)}(),function(){"use strict";function e(e,n,t,a,i){var r=this;function s(){!function(){r.millis=l().diff(moment(r.startingTime));var e=moment.duration(r.millis),n=e.seconds(),t=e.minutes(),a=e.hours(),i=e.days(),s=e.months(),o=e.years();r.seconds=n<10?"0"+n:n,r.minutes=t<10?"0"+t:t,r.hours=a<10?"0"+a:a,r.days=i<10?"0"+i:i,r.months=s<10?"0"+s:s,r.years=o<10?"0"+o:o,r.timer=0<r.days?r.days+"d ":r.hours+":"+r.minutes+":"+r.seconds}(),r.timeoutId=setTimeout(function(){s(),e.$digest()},r.interval)}function l(e){var n=(e||moment()).utcOffset(r.utcOffset).format("YYYY-MM-DD HH:mm:ss");return moment(n)}function o(){t.resolve().then(function(){return null===r.utcOffset||void 0===r.utcOffset?i.getUTCOffset():r.utcOffset}).then(function(e){return r.utcOffset=e,l()}).catch(function(e){throw e}).then(function(e){var n=r.startTime?moment(r.startTime):void 0;r.startTime?n.isAfter(e,"hour")||n.isBefore(e,"hour")?r.startingTime=l(n):r.startingTime=n:r.startingTime=e,s()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.getDate",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}o(),e.$watch("vm.startTime",function(e,n){angular.isUndefined(e)||0!==e.length&&(angular.equals(e,n)||o())}),e.$on("timer-start",function(){r.startTime=void 0,o()}),n.bind("$destroy",function(){r.timeoutId&&clearTimeout(r.timeoutId)})}e.$inject=["$scope","$element","$q","toasty","settingsManager"],angular.module("app.core").directive("timer",function(){return{restrict:"EA",replace:!1,scope:{startTime:"=?",interval:"=?",utcOffset:"=?"},template:"<span ng-cloak>{{ vm.timer }}</span>",compile:function(){return{pre:function(e,n,t){e.interval=t.interval||1e3}}},controller:e,controllerAs:"vm",bindToController:!0}})}(),function(){"use strict";angular.module("app.core").directive("msTimezone",function(){return{restrict:"E",scope:{ngModel:"=",ngChange:"&"},controller:["$scope",function(e){e.timezone=[{name:"Europe/Andorra",utcOffset:60,offsetStr:"+01:00",countries:["AD"]},{name:"Asia/Dubai",utcOffset:240,offsetStr:"+04:00",countries:["AE","OM"]},{name:"Asia/Kabul",utcOffset:270,offsetStr:"+04:30",countries:["AF"]},{name:"Europe/Tirane",utcOffset:60,offsetStr:"+01:00",countries:["AL"]},{name:"Asia/Yerevan",utcOffset:240,offsetStr:"+04:00",countries:["AM"]},{name:"Antarctica/Rothera",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Palmer",utcOffset:-180,offsetStr:"-03:00",countries:["AQ"]},{name:"Antarctica/Mawson",utcOffset:300,offsetStr:"+05:00",countries:["AQ"]},{name:"Antarctica/Davis",utcOffset:420,offsetStr:"+07:00",countries:["AQ"]},{name:"Antarctica/Casey",utcOffset:480,offsetStr:"+08:00",countries:["AQ"]},{name:"Antarctica/Vostok",utcOffset:360,offsetStr:"+06:00",countries:["AQ"]},{name:"Antarctica/DumontDUrville",utcOffset:600,offsetStr:"+10:00",countries:["AQ"]},{name:"Antarctica/Syowa",utcOffset:180,offsetStr:"+03:00",countries:["AQ"]},{name:"Antarctica/Troll",utcOffset:0,offsetStr:"+00:00",countries:["AQ"]},{name:"America/Argentina/Buenos_Aires",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Cordoba",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Salta",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Jujuy",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Tucuman",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Catamarca",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/La_Rioja",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Juan",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Mendoza",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/San_Luis",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Rio_Gallegos",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"America/Argentina/Ushuaia",utcOffset:-180,offsetStr:"-03:00",countries:["AR"]},{name:"Pacific/Pago_Pago",utcOffset:-660,offsetStr:"-11:00",countries:["AS","UM"]},{name:"Europe/Vienna",utcOffset:60,offsetStr:"+01:00",countries:["AT"]},{name:"Australia/Lord_Howe",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Antarctica/Macquarie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Hobart",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Currie",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Melbourne",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Sydney",utcOffset:660,offsetStr:"+11:00",countries:["AU"]},{name:"Australia/Broken_Hill",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Brisbane",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Lindeman",utcOffset:600,offsetStr:"+10:00",countries:["AU"]},{name:"Australia/Adelaide",utcOffset:630,offsetStr:"+10:30",countries:["AU"]},{name:"Australia/Darwin",utcOffset:570,offsetStr:"+09:30",countries:["AU"]},{name:"Australia/Perth",utcOffset:480,offsetStr:"+08:00",countries:["AU"]},{name:"Australia/Eucla",utcOffset:525,offsetStr:"+08:45",countries:["AU"]},{name:"Asia/Baku",utcOffset:240,offsetStr:"+04:00",countries:["AZ"]},{name:"America/Barbados",utcOffset:-240,offsetStr:"-04:00",countries:["BB"]},{name:"Asia/Dhaka",utcOffset:360,offsetStr:"+06:00",countries:["BD"]},{name:"Europe/Brussels",utcOffset:60,offsetStr:"+01:00",countries:["BE"]},{name:"Europe/Sofia",utcOffset:120,offsetStr:"+02:00",countries:["BG"]},{name:"Atlantic/Bermuda",utcOffset:-240,offsetStr:"-04:00",countries:["BM"]},{name:"Asia/Brunei",utcOffset:480,offsetStr:"+08:00",countries:["BN"]},{name:"America/La_Paz",utcOffset:-240,offsetStr:"-04:00",countries:["BO"]},{name:"America/Noronha",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Belem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Fortaleza",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Recife",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Araguaina",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Maceio",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Bahia",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Sao_Paulo",utcOffset:-120,offsetStr:"-02:00",countries:["BR"]},{name:"America/Campo_Grande",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Cuiaba",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Santarem",utcOffset:-180,offsetStr:"-03:00",countries:["BR"]},{name:"America/Porto_Velho",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Boa_Vista",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Manaus",utcOffset:-240,offsetStr:"-04:00",countries:["BR"]},{name:"America/Eirunepe",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Rio_Branco",utcOffset:-300,offsetStr:"-05:00",countries:["BR"]},{name:"America/Nassau",utcOffset:-300,offsetStr:"-05:00",countries:["BS"]},{name:"Asia/Thimphu",utcOffset:360,offsetStr:"+06:00",countries:["BT"]},{name:"Europe/Minsk",utcOffset:180,offsetStr:"+03:00",countries:["BY"]},{name:"America/Belize",utcOffset:-360,offsetStr:"-06:00",countries:["BZ"]},{name:"America/St_Johns",utcOffset:-210,offsetStr:"-03:30",countries:["CA"]},{name:"America/Halifax",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Glace_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Moncton",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Goose_Bay",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Blanc-Sablon",utcOffset:-240,offsetStr:"-04:00",countries:["CA"]},{name:"America/Toronto",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Nipigon",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Thunder_Bay",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Iqaluit",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Pangnirtung",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Resolute",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Atikokan",utcOffset:-300,offsetStr:"-05:00",countries:["CA"]},{name:"America/Rankin_Inlet",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Winnipeg",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Rainy_River",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Regina",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Swift_Current",utcOffset:-360,offsetStr:"-06:00",countries:["CA"]},{name:"America/Edmonton",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Cambridge_Bay",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Yellowknife",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Inuvik",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Creston",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Dawson_Creek",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Fort_Nelson",utcOffset:-420,offsetStr:"-07:00",countries:["CA"]},{name:"America/Vancouver",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Whitehorse",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"America/Dawson",utcOffset:-480,offsetStr:"-08:00",countries:["CA"]},{name:"Indian/Cocos",utcOffset:390,offsetStr:"+06:30",countries:["CC"]},{name:"Europe/Zurich",utcOffset:60,offsetStr:"+01:00",countries:["CH","DE","LI"]},{name:"Africa/Abidjan",utcOffset:0,offsetStr:"+00:00",countries:["CI","BF","GM","GN","ML","MR","SH","SL","SN","ST","TG"]},{name:"Pacific/Rarotonga",utcOffset:-600,offsetStr:"-10:00",countries:["CK"]},{name:"America/Santiago",utcOffset:-180,offsetStr:"-03:00",countries:["CL"]},{name:"Pacific/Easter",utcOffset:-300,offsetStr:"-05:00",countries:["CL"]},{name:"Asia/Shanghai",utcOffset:480,offsetStr:"+08:00",countries:["CN"]},{name:"Asia/Urumqi",utcOffset:360,offsetStr:"+06:00",countries:["CN"]},{name:"America/Bogota",utcOffset:-300,offsetStr:"-05:00",countries:["CO"]},{name:"America/Costa_Rica",utcOffset:-360,offsetStr:"-06:00",countries:["CR"]},{name:"America/Havana",utcOffset:-300,offsetStr:"-05:00",countries:["CU"]},{name:"Atlantic/Cape_Verde",utcOffset:-60,offsetStr:"-01:00",countries:["CV"]},{name:"America/Curacao",utcOffset:-240,offsetStr:"-04:00",countries:["CW","AW","BQ","SX"]},{name:"Indian/Christmas",utcOffset:420,offsetStr:"+07:00",countries:["CX"]},{name:"Asia/Nicosia",utcOffset:120,offsetStr:"+02:00",countries:["CY"]},{name:"Europe/Prague",utcOffset:60,offsetStr:"+01:00",countries:["CZ","SK"]},{name:"Europe/Berlin",utcOffset:60,offsetStr:"+01:00",countries:["DE"]},{name:"Europe/Copenhagen",utcOffset:60,offsetStr:"+01:00",countries:["DK"]},{name:"America/Santo_Domingo",utcOffset:-240,offsetStr:"-04:00",countries:["DO"]},{name:"Africa/Algiers",utcOffset:60,offsetStr:"+01:00",countries:["DZ"]},{name:"America/Guayaquil",utcOffset:-300,offsetStr:"-05:00",countries:["EC"]},{name:"Pacific/Galapagos",utcOffset:-360,offsetStr:"-06:00",countries:["EC"]},{name:"Europe/Tallinn",utcOffset:120,offsetStr:"+02:00",countries:["EE"]},{name:"Africa/Cairo",utcOffset:120,offsetStr:"+02:00",countries:["EG"]},{name:"Africa/El_Aaiun",utcOffset:0,offsetStr:"+00:00",countries:["EH"]},{name:"Europe/Madrid",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Africa/Ceuta",utcOffset:60,offsetStr:"+01:00",countries:["ES"]},{name:"Atlantic/Canary",utcOffset:0,offsetStr:"+00:00",countries:["ES"]},{name:"Europe/Helsinki",utcOffset:120,offsetStr:"+02:00",countries:["FI","AX"]},{name:"Pacific/Fiji",utcOffset:720,offsetStr:"+12:00",countries:["FJ"]},{name:"Atlantic/Stanley",utcOffset:-180,offsetStr:"-03:00",countries:["FK"]},{name:"Pacific/Chuuk",utcOffset:600,offsetStr:"+10:00",countries:["FM"]},{name:"Pacific/Pohnpei",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Pacific/Kosrae",utcOffset:660,offsetStr:"+11:00",countries:["FM"]},{name:"Atlantic/Faroe",utcOffset:0,offsetStr:"+00:00",countries:["FO"]},{name:"Europe/Paris",utcOffset:60,offsetStr:"+01:00",countries:["FR"]},{name:"Europe/London",utcOffset:0,offsetStr:"+00:00",countries:["GB","GG","IM","JE"]},{name:"Asia/Tbilisi",utcOffset:240,offsetStr:"+04:00",countries:["GE"]},{name:"America/Cayenne",utcOffset:-180,offsetStr:"-03:00",countries:["GF"]},{name:"Africa/Accra",utcOffset:0,offsetStr:"+00:00",countries:["GH"]},{name:"Europe/Gibraltar",utcOffset:60,offsetStr:"+01:00",countries:["GI"]},{name:"America/Godthab",utcOffset:-180,offsetStr:"-03:00",countries:["GL"]},{name:"America/Danmarkshavn",utcOffset:0,offsetStr:"+00:00",countries:["GL"]},{name:"America/Scoresbysund",utcOffset:-60,offsetStr:"-01:00",countries:["GL"]},{name:"America/Thule",utcOffset:-240,offsetStr:"-04:00",countries:["GL"]},{name:"Europe/Athens",utcOffset:120,offsetStr:"+02:00",countries:["GR"]},{name:"Atlantic/South_Georgia",utcOffset:-120,offsetStr:"-02:00",countries:["GS"]},{name:"America/Guatemala",utcOffset:-360,offsetStr:"-06:00",countries:["GT"]},{name:"Pacific/Guam",utcOffset:600,offsetStr:"+10:00",countries:["GU","MP"]},{name:"Africa/Bissau",utcOffset:0,offsetStr:"+00:00",countries:["GW"]},{name:"America/Guyana",utcOffset:-240,offsetStr:"-04:00",countries:["GY"]},{name:"Asia/Hong_Kong",utcOffset:480,offsetStr:"+08:00",countries:["HK"]},{name:"America/Tegucigalpa",utcOffset:-360,offsetStr:"-06:00",countries:["HN"]},{name:"America/Port-au-Prince",utcOffset:-300,offsetStr:"-05:00",countries:["HT"]},{name:"Europe/Budapest",utcOffset:60,offsetStr:"+01:00",countries:["HU"]},{name:"Asia/Jakarta",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Pontianak",utcOffset:420,offsetStr:"+07:00",countries:["ID"]},{name:"Asia/Makassar",utcOffset:480,offsetStr:"+08:00",countries:["ID"]},{name:"Asia/Jayapura",utcOffset:540,offsetStr:"+09:00",countries:["ID"]},{name:"Europe/Dublin",utcOffset:0,offsetStr:"+00:00",countries:["IE"]},{name:"Asia/Jerusalem",utcOffset:120,offsetStr:"+02:00",countries:["IL"]},{name:"Asia/Kolkata",utcOffset:330,offsetStr:"+05:30",countries:["IN"]},{name:"Indian/Chagos",utcOffset:360,offsetStr:"+06:00",countries:["IO"]},{name:"Asia/Baghdad",utcOffset:180,offsetStr:"+03:00",countries:["IQ"]},{name:"Asia/Tehran",utcOffset:210,offsetStr:"+03:30",countries:["IR"]},{name:"Atlantic/Reykjavik",utcOffset:0,offsetStr:"+00:00",countries:["IS"]},{name:"Europe/Rome",utcOffset:60,offsetStr:"+01:00",countries:["IT","SM","VA"]},{name:"America/Jamaica",utcOffset:-300,offsetStr:"-05:00",countries:["JM"]},{name:"Asia/Amman",utcOffset:120,offsetStr:"+02:00",countries:["JO"]},{name:"Asia/Tokyo",utcOffset:540,offsetStr:"+09:00",countries:["JP"]},{name:"Africa/Nairobi",utcOffset:180,offsetStr:"+03:00",countries:["KE","DJ","ER","ET","KM","MG","SO","TZ","UG","YT"]},{name:"Asia/Bishkek",utcOffset:360,offsetStr:"+06:00",countries:["KG"]},{name:"Pacific/Tarawa",utcOffset:720,offsetStr:"+12:00",countries:["KI"]},{name:"Pacific/Enderbury",utcOffset:780,offsetStr:"+13:00",countries:["KI"]},{name:"Pacific/Kiritimati",utcOffset:840,offsetStr:"+14:00",countries:["KI"]},{name:"Asia/Pyongyang",utcOffset:510,offsetStr:"+08:30",countries:["KP"]},{name:"Asia/Seoul",utcOffset:540,offsetStr:"+09:00",countries:["KR"]},{name:"America/Cayman",utcOffset:-300,offsetStr:"-05:00",countries:["KY"]},{name:"Asia/Almaty",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Qyzylorda",utcOffset:360,offsetStr:"+06:00",countries:["KZ"]},{name:"Asia/Aqtobe",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Aqtau",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Oral",utcOffset:300,offsetStr:"+05:00",countries:["KZ"]},{name:"Asia/Beirut",utcOffset:120,offsetStr:"+02:00",countries:["LB"]},{name:"Asia/Colombo",utcOffset:330,offsetStr:"+05:30",countries:["LK"]},{name:"Africa/Monrovia",utcOffset:0,offsetStr:"+00:00",countries:["LR"]},{name:"Europe/Vilnius",utcOffset:120,offsetStr:"+02:00",countries:["LT"]},{name:"Europe/Luxembourg",utcOffset:60,offsetStr:"+01:00",countries:["LU"]},{name:"Europe/Riga",utcOffset:120,offsetStr:"+02:00",countries:["LV"]},{name:"Africa/Tripoli",utcOffset:120,offsetStr:"+02:00",countries:["LY"]},{name:"Africa/Casablanca",utcOffset:0,offsetStr:"+00:00",countries:["MA"]},{name:"Europe/Monaco",utcOffset:60,offsetStr:"+01:00",countries:["MC"]},{name:"Europe/Chisinau",utcOffset:120,offsetStr:"+02:00",countries:["MD"]},{name:"Pacific/Majuro",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Pacific/Kwajalein",utcOffset:720,offsetStr:"+12:00",countries:["MH"]},{name:"Asia/Rangoon",utcOffset:390,offsetStr:"+06:30",countries:["MM"]},{name:"Asia/Ulaanbaatar",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Hovd",utcOffset:420,offsetStr:"+07:00",countries:["MN"]},{name:"Asia/Choibalsan",utcOffset:480,offsetStr:"+08:00",countries:["MN"]},{name:"Asia/Macau",utcOffset:480,offsetStr:"+08:00",countries:["MO"]},{name:"America/Martinique",utcOffset:-240,offsetStr:"-04:00",countries:["MQ"]},{name:"Europe/Malta",utcOffset:60,offsetStr:"+01:00",countries:["MT"]},{name:"Indian/Mauritius",utcOffset:240,offsetStr:"+04:00",countries:["MU"]},{name:"Indian/Maldives",utcOffset:300,offsetStr:"+05:00",countries:["MV"]},{name:"America/Mexico_City",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Cancun",utcOffset:-300,offsetStr:"-05:00",countries:["MX"]},{name:"America/Merida",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Monterrey",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Matamoros",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"America/Mazatlan",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Chihuahua",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Ojinaga",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Hermosillo",utcOffset:-420,offsetStr:"-07:00",countries:["MX"]},{name:"America/Tijuana",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Santa_Isabel",utcOffset:-480,offsetStr:"-08:00",countries:["MX"]},{name:"America/Bahia_Banderas",utcOffset:-360,offsetStr:"-06:00",countries:["MX"]},{name:"Asia/Kuala_Lumpur",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Asia/Kuching",utcOffset:480,offsetStr:"+08:00",countries:["MY"]},{name:"Africa/Maputo",utcOffset:120,offsetStr:"+02:00",countries:["MZ","BI","BW","CD","MW","RW","ZM","ZW"]},{name:"Africa/Windhoek",utcOffset:120,offsetStr:"+02:00",countries:["NA"]},{name:"Pacific/Noumea",utcOffset:660,offsetStr:"+11:00",countries:["NC"]},{name:"Pacific/Norfolk",utcOffset:660,offsetStr:"+11:00",countries:["NF"]},{name:"Africa/Lagos",utcOffset:60,offsetStr:"+01:00",countries:["NG","AO","BJ","CD","CF","CG","CM","GA","GQ","NE"]},{name:"America/Managua",utcOffset:-360,offsetStr:"-06:00",countries:["NI"]},{name:"Europe/Amsterdam",utcOffset:60,offsetStr:"+01:00",countries:["NL"]},{name:"Europe/Oslo",utcOffset:60,offsetStr:"+01:00",countries:["NO","SJ"]},{name:"Asia/Kathmandu",utcOffset:345,offsetStr:"+05:45",countries:["NP"]},{name:"Pacific/Nauru",utcOffset:720,offsetStr:"+12:00",countries:["NR"]},{name:"Pacific/Niue",utcOffset:-660,offsetStr:"-11:00",countries:["NU"]},{name:"Pacific/Auckland",utcOffset:780,offsetStr:"+13:00",countries:["NZ","AQ"]},{name:"Pacific/Chatham",utcOffset:825,offsetStr:"+13:45",countries:["NZ"]},{name:"America/Panama",utcOffset:-300,offsetStr:"-05:00",countries:["PA"]},{name:"America/Lima",utcOffset:-300,offsetStr:"-05:00",countries:["PE"]},{name:"Pacific/Tahiti",utcOffset:-600,offsetStr:"-10:00",countries:["PF"]},{name:"Pacific/Marquesas",utcOffset:-570,offsetStr:"-09:30",countries:["PF"]},{name:"Pacific/Gambier",utcOffset:-540,offsetStr:"-09:00",countries:["PF"]},{name:"Pacific/Port_Moresby",utcOffset:600,offsetStr:"+10:00",countries:["PG"]},{name:"Pacific/Bougainville",utcOffset:660,offsetStr:"+11:00",countries:["PG"]},{name:"Asia/Manila",utcOffset:480,offsetStr:"+08:00",countries:["PH"]},{name:"Asia/Karachi",utcOffset:300,offsetStr:"+05:00",countries:["PK"]},{name:"Europe/Warsaw",utcOffset:60,offsetStr:"+01:00",countries:["PL"]},{name:"America/Miquelon",utcOffset:-180,offsetStr:"-03:00",countries:["PM"]},{name:"Pacific/Pitcairn",utcOffset:-480,offsetStr:"-08:00",countries:["PN"]},{name:"America/Puerto_Rico",utcOffset:-240,offsetStr:"-04:00",countries:["PR"]},{name:"Asia/Gaza",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Asia/Hebron",utcOffset:120,offsetStr:"+02:00",countries:["PS"]},{name:"Europe/Lisbon",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Madeira",utcOffset:0,offsetStr:"+00:00",countries:["PT"]},{name:"Atlantic/Azores",utcOffset:-60,offsetStr:"-01:00",countries:["PT"]},{name:"Pacific/Palau",utcOffset:540,offsetStr:"+09:00",countries:["PW"]},{name:"America/Asuncion",utcOffset:-180,offsetStr:"-03:00",countries:["PY"]},{name:"Asia/Qatar",utcOffset:180,offsetStr:"+03:00",countries:["QA","BH"]},{name:"Indian/Reunion",utcOffset:240,offsetStr:"+04:00",countries:["RE","TF"]},{name:"Europe/Bucharest",utcOffset:120,offsetStr:"+02:00",countries:["RO"]},{name:"Europe/Belgrade",utcOffset:60,offsetStr:"+01:00",countries:["RS","BA","HR","ME","MK","SI"]},{name:"Europe/Kaliningrad",utcOffset:120,offsetStr:"+02:00",countries:["RU"]},{name:"Europe/Moscow",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Simferopol",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Volgograd",utcOffset:180,offsetStr:"+03:00",countries:["RU"]},{name:"Europe/Samara",utcOffset:240,offsetStr:"+04:00",countries:["RU"]},{name:"Asia/Yekaterinburg",utcOffset:300,offsetStr:"+05:00",countries:["RU"]},{name:"Asia/Omsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novosibirsk",utcOffset:360,offsetStr:"+06:00",countries:["RU"]},{name:"Asia/Novokuznetsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Krasnoyarsk",utcOffset:420,offsetStr:"+07:00",countries:["RU"]},{name:"Asia/Irkutsk",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Chita",utcOffset:480,offsetStr:"+08:00",countries:["RU"]},{name:"Asia/Yakutsk",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Khandyga",utcOffset:540,offsetStr:"+09:00",countries:["RU"]},{name:"Asia/Vladivostok",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Sakhalin",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Ust-Nera",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Magadan",utcOffset:600,offsetStr:"+10:00",countries:["RU"]},{name:"Asia/Srednekolymsk",utcOffset:660,offsetStr:"+11:00",countries:["RU"]},{name:"Asia/Kamchatka",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Anadyr",utcOffset:720,offsetStr:"+12:00",countries:["RU"]},{name:"Asia/Riyadh",utcOffset:180,offsetStr:"+03:00",countries:["SA","KW","YE"]},{name:"Pacific/Guadalcanal",utcOffset:660,offsetStr:"+11:00",countries:["SB"]},{name:"Indian/Mahe",utcOffset:240,offsetStr:"+04:00",countries:["SC"]},{name:"Africa/Khartoum",utcOffset:180,offsetStr:"+03:00",countries:["SD","SS"]},{name:"Europe/Stockholm",utcOffset:60,offsetStr:"+01:00",countries:["SE"]},{name:"Asia/Singapore",utcOffset:480,offsetStr:"+08:00",countries:["SG"]},{name:"America/Paramaribo",utcOffset:-180,offsetStr:"-03:00",countries:["SR"]},{name:"America/El_Salvador",utcOffset:-360,offsetStr:"-06:00",countries:["SV"]},{name:"Asia/Damascus",utcOffset:120,offsetStr:"+02:00",countries:["SY"]},{name:"America/Grand_Turk",utcOffset:-240,offsetStr:"-04:00",countries:["TC"]},{name:"Africa/Ndjamena",utcOffset:60,offsetStr:"+01:00",countries:["TD"]},{name:"Indian/Kerguelen",utcOffset:300,offsetStr:"+05:00",countries:["TF"]},{name:"Asia/Bangkok",utcOffset:420,offsetStr:"+07:00",countries:["TH","KH","LA","VN"]},{name:"Asia/Dushanbe",utcOffset:300,offsetStr:"+05:00",countries:["TJ"]},{name:"Pacific/Fakaofo",utcOffset:780,offsetStr:"+13:00",countries:["TK"]},{name:"Asia/Dili",utcOffset:540,offsetStr:"+09:00",countries:["TL"]},{name:"Asia/Ashgabat",utcOffset:300,offsetStr:"+05:00",countries:["TM"]},{name:"Africa/Tunis",utcOffset:60,offsetStr:"+01:00",countries:["TN"]},{name:"Pacific/Tongatapu",utcOffset:780,offsetStr:"+13:00",countries:["TO"]},{name:"Europe/Istanbul",utcOffset:120,offsetStr:"+02:00",countries:["TR"]},{name:"America/Port_of_Spain",utcOffset:-240,offsetStr:"-04:00",countries:["TT","AG","AI","BL","DM","GD","GP","KN","LC","MF","MS","VC","VG","VI"]},{name:"Pacific/Funafuti",utcOffset:720,offsetStr:"+12:00",countries:["TV"]},{name:"Asia/Taipei",utcOffset:480,offsetStr:"+08:00",countries:["TW"]},{name:"Europe/Kiev",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Uzhgorod",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Europe/Zaporozhye",utcOffset:120,offsetStr:"+02:00",countries:["UA"]},{name:"Pacific/Wake",utcOffset:720,offsetStr:"+12:00",countries:["UM"]},{name:"America/New_York",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Detroit",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Louisville",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Kentucky/Monticello",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Indianapolis",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vincennes",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Winamac",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Marengo",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Petersburg",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Indiana/Vevay",utcOffset:-300,offsetStr:"-05:00",countries:["US"]},{name:"America/Chicago",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Tell_City",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Indiana/Knox",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Menominee",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Center",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/New_Salem",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/North_Dakota/Beulah",utcOffset:-360,offsetStr:"-06:00",countries:["US"]},{name:"America/Denver",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Boise",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Phoenix",utcOffset:-420,offsetStr:"-07:00",countries:["US"]},{name:"America/Los_Angeles",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Metlakatla",utcOffset:-480,offsetStr:"-08:00",countries:["US"]},{name:"America/Anchorage",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Juneau",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Sitka",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Yakutat",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Nome",utcOffset:-540,offsetStr:"-09:00",countries:["US"]},{name:"America/Adak",utcOffset:-600,offsetStr:"-10:00",countries:["US"]},{name:"Pacific/Honolulu",utcOffset:-600,offsetStr:"-10:00",countries:["US","UM"]},{name:"America/Montevideo",utcOffset:-180,offsetStr:"-03:00",countries:["UY"]},{name:"Asia/Samarkand",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"Asia/Tashkent",utcOffset:300,offsetStr:"+05:00",countries:["UZ"]},{name:"America/Caracas",utcOffset:-270,offsetStr:"-04:30",countries:["VE"]},{name:"Asia/Ho_Chi_Minh",utcOffset:420,offsetStr:"+07:00",countries:["VN"]},{name:"Pacific/Efate",utcOffset:660,offsetStr:"+11:00",countries:["VU"]},{name:"Pacific/Wallis",utcOffset:720,offsetStr:"+12:00",countries:["WF"]},{name:"Pacific/Apia",utcOffset:840,offsetStr:"+14:00",countries:["WS"]},{name:"Africa/Johannesburg",utcOffset:120,offsetStr:"+02:00",countries:["ZA","LS","SZ"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var i=this;i.filter=[],i.filtered=!1,i.fontSize=20,i.label="",i.getCount=function(e){var n=0;if(e){i.fontSize=e.attrs[r]&&e.attrs[r].value?parseInt(e.attrs[r].value)-parseInt(e.attrs[r].value)%2:20;var t=e.attrs.find(function(e){return"attrChannel"===e.name});if(t||e.attrs.push({name:"attrChannel",value:"voice"}),"voice"!==e.attrs[l].value?"talking"===e.attrs[s].value?i.label="Opened":"answered"===e.attrs[s].value?i.label="Managed":i.label=e.attrs[s].value:i.label=e.attrs[s].value,e.attrs[l].value.toLowerCase().includes("voice")){e.attrs[o].value&&e.attrs[o].value.length?(i.filtered=!0,i.filter=_.intersection(e.voiceQueuesSelected,e.attrs[o].value)):(i.filtered=!1,i.filter=e.voiceQueuesSelected);for(var a=0;a<e.voiceQueues.rows.length;a+=1)_.includes(i.filter,e.voiceQueues.rows[a].id)&&(n+=e.voiceQueues.rows[a][e.attrs[s].value]?parseInt(e.voiceQueues.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("chat")){e.attrs[g].value&&e.attrs[g].value.length?(i.filtered=!0,i.filter=_.intersection(e.chatWebsitesSelected,e.attrs[g].value)):(i.filtered=!1,i.filter=e.chatWebsitesSelected);for(var a=0;a<e.chatWebsites.rows.length;a+=1)_.includes(i.filter,e.chatWebsites.rows[a].id)&&(n+=e.chatWebsites.rows[a][e.attrs[s].value]?parseInt(e.chatWebsites.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("fax")){e.attrs[c].value&&e.attrs[c].value.length?(i.filtered=!0,i.filter=_.intersection(e.faxAccountsSelected,e.attrs[c].value)):(i.filtered=!1,i.filter=e.faxAccountsSelected);for(var a=0;a<e.faxAccounts.rows.length;a+=1)_.includes(i.filter,e.faxAccounts.rows[a].id)&&(n+=e.faxAccounts.rows[a][e.attrs[s].value]?parseInt(e.faxAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("mail")){e.attrs[d].value&&e.attrs[d].value.length?(i.filtered=!0,i.filter=_.intersection(e.mailAccountsSelected,e.attrs[d].value)):(i.filtered=!1,i.filter=e.mailAccountsSelected);for(var a=0;a<e.mailAccounts.rows.length;a+=1)_.includes(i.filter,e.mailAccounts.rows[a].id)&&(n+=e.mailAccounts.rows[a][e.attrs[s].value]?parseInt(e.mailAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("openchannel")){e.attrs[u].value&&e.attrs[u].value.length?(i.filtered=!0,i.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[u].value)):(i.filtered=!1,i.filter=e.openchannelAccountsSelected);for(var a=0;a<e.openchannelAccounts.rows.length;a+=1)_.includes(i.filter,e.openchannelAccounts.rows[a].id)&&(n+=e.openchannelAccounts.rows[a][e.attrs[s].value]?parseInt(e.openchannelAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("whatsapp")){e.attrs[p].value&&e.attrs[p].value.length?(i.filtered=!0,i.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[p].value)):(i.filtered=!1,i.filter=e.whatsappAccountsSelected);for(var a=0;a<e.whatsappAccounts.rows.length;a+=1)_.includes(i.filter,e.whatsappAccounts.rows[a].id)&&(n+=e.whatsappAccounts.rows[a][e.attrs[s].value]?parseInt(e.whatsappAccounts.rows[a][e.attrs[s].value]):0)}else if(e.attrs[l].value.toLowerCase().includes("sms")){e.attrs[m].value&&e.attrs[m].value.length?(i.filtered=!0,i.filter=_.intersection(e.smsAccountsSelected,e.attrs[m].value)):(i.filtered=!1,i.filter=e.smsAccountsSelected);for(var a=0;a<e.smsAccounts.rows.length;a+=1)_.includes(i.filter,e.smsAccounts.rows[a].id)&&(n+=e.smsAccounts.rows[a][e.attrs[s].value]?parseInt(e.smsAccounts.rows[a][e.attrs[s].value]):0)}}return n};var s=0,o=1,r=2,l=3,d=4,c=5,m=6,u=7,p=8,g=9})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.multiBarChart={labels:["QUEUE_NAME"],series:["TOTAL"],data:[[50]],options:{responsive:!0,legend:{display:!0,fontColor:"#2196f3"},scales:{xAxes:[{gridLines:{display:!0},ticks:{fontColor:"#2196f3",stepSize:1,beginAtZero:!0}}],yAxes:[{gridLines:{display:!1},ticks:{fontColor:"#2196f3"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.multiBarChart.options.scales.yAxes[t].ticks.fontColor=e.foreground}(e))}}e.$inject=["$translate","socket"],angular.module("app.core").controller("MsWidgetEngineMultibarChartController",e)}(),function(){"use strict";function e(s){var o=this;o.filter=[],o.filtered=!1,o.properties=[],o.pieChart={labels:["ANSWERED"],data:[30],options:{responsive:!0,legend:{display:!0}}},o.getPieChart=function(e){e&&(e.attrs&&function(e){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(o.filtered=!0,o.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(o.filtered=!1,o.filter=e.voiceQueuesSelected)}if(o.pieChart.labels.length>o.properties.length){var n=o.pieChart.labels.length-o.properties.length;o.pieChart.labels.splice(0,n),o.pieChart.data.splice(0,n)}for(var t=0,a=0;t<o.properties.length;t+=1){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default:for(var i=0;i<e.voiceQueues.rows.length;i+=1)_.includes(o.filter,e.voiceQueues.rows[i].id)&&(a+=e.voiceQueues.rows[i][o.properties[t]]?parseInt(e.voiceQueues.rows[i][o.properties[t]]):0)}o.pieChart.data[t]=a,a=0}}(e),e.foreground&&(n=e,o.pieChart.options.legend.fontColor=n.foreground));var n}}e.$inject=["$translate"],angular.module("app.core").controller("MsWidgetEnginePieChartController",e)}(),function(){"use strict";function e(e,t,a,i){var s=this;function n(e){s.results=e||{count:0,rows:[]}}function o(){s.query.offset=(s.query.page-1)*s.query.limit,s.promise=i[s.reportRoute].run(s.query,n).$promise}s.countDown=0,s.refresh=0,s.title="",s.columns=[],s.results={rows:[],count:0},s.query={limit:10,page:1,startDate:moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),endDate:moment().endOf("day").format("YYYY-MM-DD HH:mm:ss"),output:"web"},s.onInit=function e(n){n&&n.attrs&&(n.attrs[0]&&n.attrs[0].value&&(s.query.id=n.attrs[0].value,i.analyticFieldReport.get({fields:"field,alias",nolimit:!0,DefaultReportId:"default"===n.attrs[0].type?n.attrs[0].value:void 0,CustomReportId:"custom"===n.attrs[0].type?n.attrs[0].value:void 0}).$promise.then(function(e){switch(e&&e.rows&&(s.columns=e.rows),n.attrs[0].type){case"default":s.reportRoute="analyticDefaultReport";break;case"custom":s.reportRoute="analyticCustomReport"}return i[s.reportRoute].get({id:n.attrs[0].value,fields:"id,name"}).$promise}).then(function(e){e&&e.name&&(s.title=e.name),o()}).catch(function(e){console.log(e)})),n.attrs[1]&&n.attrs[1].value&&(s.refresh=parseInt(n.attrs[1].value),!_.isNaN(s.refresh)&&0<s.refresh?(s.countDown=parseInt(n.attrs[1].value),s.interval=a(function(){s.countDown-=1},1e3,0),s.timeout=t(function(){s.interval&&a.cancel(s.interval),e(n)},1e3*s.refresh)):(s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout))))},s.getResults=o,s.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},e.$on("$destroy",function(){s.interval&&a.cancel(s.interval),s.timeout&&t.cancel(s.timeout)})}e.$inject=["$scope","$timeout","$interval","api"],angular.module("app.core").controller("MsWidgetEngineWebReportController",e)}(),function(){"use strict";function e(e,n){this.getTrustedURL=function(e){return n.trustAsResourceUrl(e)}}function n(e){return{restrict:"E",scope:{config:"=?",onEdit:"&?",onDelete:"&?"},require:"msWidgetEngine",controller:"MsWidgetEngineController",controllerAs:"vm",bindToController:!0,templateUrl:"app/core/directives/ms-widget-engine/ms-widget-engine.html"}}e.$inject=["$mdDialog","$sce"],n.$inject=["$document"],angular.module("app.core").controller("MsWidgetEngineController",e).directive("msWidgetEngine",n)}(),function(){"use strict";function e(e,n){var t=this;t.flipped=!1,t.flip=function(){if(!angular.isDefined(e.flippable)||!0!==e.flippable)return;t.flipped=!t.flipped,n.toggleClass("flipped",t.flipped)}}e.$inject=["$scope","$element"],angular.module("app.core").controller("MsWidgetController",e).directive("msWidget",function(){return{restrict:"E",scope:{flippable:"=?"},controller:"MsWidgetController",transclude:!0,compile:function(e){return e.addClass("ms-widget"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)})}}}}).directive("msWidgetFront",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-front"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}}).directive("msWidgetBack",function(){return{restrict:"E",require:"^msWidget",transclude:!0,compile:function(e){return e.addClass("ms-widget-back"),function(e,n,t,a,i){i(function(e){n.empty(),n.append(e)}),e.flipWidget=a.flip}}}})}(),function(){"use strict";function e(s,n,o,r){return{restrict:"A",require:"?ngModel",link:function(t,a,e,i){o.isAdmin()||o.isTelephone()||(""!==e.privacy||o.getCurrentUser().privacyEnabled)&&!1!==t.$eval(e.privacy)&&(i?(i.$formatters.push(function(e){if(!e)return e;var n=r.mask(e);return i.$setViewValue(n),i.$render(),i.$viewValue}),i.$parsers.push(function(){return i.$modelValue}),a[0].disabled=!0):n(function(){s(a.contents())(t);var e=a.text();if(e){var n=r.mask(e);a.text(n)}}))}}}e.$inject=["$compile","$timeout","Auth","privacyManager"],angular.module("app.core").directive("privacy",e)}(),function(){"use strict";function e(d,c,t,h){function f(e,n){return"motion2.home."+e+":"+n}function b(e){return _.capitalize(e)+("chat"===e?"Website":"Account")+"Id"}function A(e){return"chat"===e?"Website":"Account"}function E(e,n,t){var a=f(n,t);h.set(a,e)}return{addAccount:function(r,e){var l=e.accounts,d=e.accountId,c=e.filters,m=e.query,u=e.userId,n="get"+_.capitalize(r)+("chat"===r?"Websites":"Accounts"),p=b(r),g=A(r),v=l.rows.length===m[p].length;return t.user[n]({id:u,nolimit:!0}).$promise.then(function(e){var n,t,a,i,s;if(l.rows=e.rows,l.count=e.count,_.find(c,["name",g]).options=l.rows,v){var o=(t=d,a=f(n=r,u),i=b(n),(s=h.get(a)).query&&s.query[i]&&s.query[i].push(t),s);o&&E(o,r,u),m[p].push(d)}return v})},removeAccount:function(t,e){var n=e.accounts,a=e.accountId,i=e.filters,s=e.query,o=e.userId,r=b(t),l=s[r].includes(a);return c.resolve().then(function(){var e=function(e,n,t){var a=f(e,n),i=b(e),s=h.get(a);if(s.query&&s.query[i]){var o=s.query[i].indexOf(t);-1<o&&s.query[i].splice(o,1)}return s}(t,o,a);e||(e=s),s[r]=e.query[r],_.remove(n.rows,function(e){return e.id===a}),n.count=n.rows.length,_.find(i,function(e){var n=A(t);return e.name===n}).options=n.rows,1===n.count&&(e.query[r]=[n.rows[0].id],s[r]=[n.rows[0].id]),E(e,t,o)}).then(function(){var e=A(t);d.$broadcast("ms-quick-filter:update",{filters:[e],update:l})})}}}e.$inject=["$rootScope","$q","api","localStorageManager"],angular.module("app.core").factory("agentAccountAssociationManager",e)}(),function(){"use strict";function e(o,r,i,l,d){var e={get:function(s,a){return o(function(n,t){0===a.offset&&(s=void 0);var e=_.merge({},a);i.cmContact.getJourney(e).$promise.then(function(e){var a,n=_(e.rows).uniqBy(function(e){return e.channel}).map("channel").value();return(a=n,o(function(e,n){var t=a.map(function(n){if("voice"!==n){var e="get"+_.startCase(n)+("chat"===n?"Websites":"Accounts");return i.user[e]({id:l.getCurrentUser().id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){c[n]=e.rows})}});return o.all(t).then(function(){e()}).catch(function(e){n(e)})})).then(function(){return e.rows.forEach(function(e){var n;e.canOpen=function(e){switch(e.channel){case"chat":return!!c.chat&&_.some(c.chat,["id",e.ChatWebsiteId]);case"fax":return!!c.fax&&_.some(c.fax,["id",e.FaxAccountId]);case"mail":return!!c.mail&&_.some(c.mail,["id",e.MailAccountId]);case"openchannel":return!!c.openchannel&&_.some(c.openchannel,["id",e.OpenchannelAccountId]);case"sms":return!!c.sms&&_.some(c.sms,["id",e.SmsAccountId]);case"voice":return!0;case"whatsapp":return!!c.whatsapp&&_.some(c.whatsapp,["id",e.WhatsappAccountId]);default:return!1}}(e),e.dispositionsValues=(n=e).disposition?"("+_.compact([n.disposition,n.secondDisposition,n.thirdDisposition]).join(" - ")+")":"("+r.instant("DASHBOARDS.NO_DISPOSITION_SET")+")",e.style=function(e){switch(e.channel){case"chat":return{color:"green-A700",icon:"icon-hangouts"};case"fax":return{color:"blue-grey-A200",icon:"icon-deskphone"};case"mail":return{color:"teal",icon:"icon-email"};case"openchannel":return{color:"amber-A200",icon:"icon-google-earth"};case"sms":return{color:"orange",icon:"icon-message-text"};case"voice":return{color:"blue-A700",icon:"icon-phone"};case"whatsapp":return{color:"lime-A700",icon:"icon-whatsapp"}}}(e)}),a=s,i=e,o(function(e,n){try{var t={journey:a?_.union(a,i.rows):i.rows};t.loadMore=0<i.count-t.journey.length,e(t)}catch(e){n(e)}});var a,i})}).then(function(e){n(e)}).catch(function(e){d.error({title:r.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:r.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),t(e)})})},getQuery:function(){return{range:{from:moment().subtract(3,"M").startOf("month").format("YYYY-MM-DD HH:mm:ss"),to:moment().endOf("month").format("YYYY-MM-DD HH:mm:ss")},limit:10,offset:0}},getQuickFilters:function(){return[{name:"Channel",key:"channel",type:"select",label:"INTEGRATIONS.CHANNEL",customOptions:[{value:void 0,translate:"DASHBOARDS.ALL"},{value:"voice",translate:"DASHBOARDS.VOICE"},{value:"chat",translate:"DASHBOARDS.CHAT"},{value:"mail",translate:"DASHBOARDS.MAIL"},{value:"sms",translate:"DASHBOARDS.SMS"},{value:"fax",translate:"DASHBOARDS.FAX"},{value:"openchannel",translate:"DASHBOARDS.OPENCHANNEL"},{value:"whatsapp",translate:"DASHBOARDS.WHATSAPP"}]},{name:"Start Date",key:"range",type:"date",label:"DASHBOARDS.SELECT_DATE",useFromToKeys:!0}]}},c={};return e}e.$inject=["$q","$translate","api","Auth","toasty"],angular.module("app.core").factory("customerJourneyManager",e)}(),function(){"use strict";function e(p,e){var g={localizationMap:e,setSelectedDate:function(e){var n=e.$gte?new Date(moment.utc(e.$gte).format("YYYY-MM-DD")):new Date(moment.utc(e.from).format("YYYY-MM-DD")),t=e.$lte?new Date(moment.utc(e.$lte).format("YYYY-MM-DD")):new Date(moment.utc(e.to).format("YYYY-MM-DD")),a={dateStart:new Date(n.getFullYear(),n.getMonth(),n.getDate()),dateEnd:new Date(t.getFullYear(),t.getMonth(),t.getDate())};return a.selectedTemplateName=(i=a,moment(i.dateStart).isSame(i.dateEnd)?(u=i,moment().startOf("day").isSame(u.dateStart)?g.localizationMap.Today:(m=i,moment().subtract(1,"days").startOf("day").isSame(m.dateStart)?g.localizationMap.Yesterday:p("date")(i.dateStart,"dd MMM yyyy"))):(c=i,moment().startOf("isoWeek").isSame(c.dateStart,"day")&&moment().endOf("isoWeek").isSame(c.dateEnd,"day")?g.localizationMap["This Week"]:(d=i,moment().subtract(1,"weeks").startOf("isoWeek").isSame(d.dateStart,"day")&&moment().subtract(1,"weeks").endOf("isoWeek").isSame(d.dateEnd,"day")?g.localizationMap["Last Week"]:(l=i,moment().startOf("month").isSame(l.dateStart,"day")&&moment().endOf("month").isSame(l.dateEnd,"day")?g.localizationMap["This Month"]:(r=i,moment().subtract(1,"months").startOf("month").isSame(r.dateStart,"day")&&moment().subtract(1,"months").endOf("month").isSame(r.dateEnd,"day")?g.localizationMap["Last Month"]:(o=i,moment().startOf("year").isSame(o.dateStart,"day")&&moment().endOf("year").isSame(o.dateEnd,"day")?g.localizationMap["This Year"]:(s=i,moment().subtract(1,"years").startOf("year").isSame(s.dateStart,"day")&&moment().subtract(1,"years").endOf("year").isSame(s.dateEnd,"day")?g.localizationMap["Last Year"]:p("date")(i.dateStart,"dd"+(i.dateStart.getMonth()!==i.dateEnd.getMonth()||i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" MMM":"")+(i.dateStart.getFullYear()!==i.dateEnd.getFullYear()?" yyyy":""))+" - "+p("date")(i.dateEnd,"dd MMM yyyy")))))))),a;var i,s,o,r,l,d,c,m,u}};return g}e.$inject=["$filter","dateFilterLocalizationFactory"],angular.module("app.core").factory("dateRangeManager",e)}(),function(){"use strict";function e(t,a,n,i,s){var o={},r={},l={},d={};function c(){r=i.getCurrentUser();var e=n.localStorage.getItem("motion2.home:"+r.id);if(l=e?JSON.parse(e).currentSidebarTab:"dashboard",d=n.localStorage.getItem("motion2.home."+l+":"+r.id)){var a=JSON.parse(d);a.drafts?r.privacyEnabled&&Object.keys(a.drafts).forEach(function(e){var n=a.drafts[e].title,t=n.split(/-(.+)/)[1].trim();a.drafts[e].title=n.replace(t,s.mask(t))}):a.drafts={},d=a}else d={drafts:{}};return d.drafts}function m(){_.isEmpty(o.drafts)?delete d.drafts:d.drafts=o.drafts,n.localStorage.setItem("motion2.home."+l+":"+r.id,JSON.stringify(d))}return o.init=function(){o.drafts=c()},o.getByInteraction=function(n){return o.drafts=c(),_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n})},o.removeByInteraction=function(n){o.drafts=c();var e=_.find(_.values(o.drafts),function(e){return e.interaction&&e.interaction.id===n});e&&(delete o.drafts[e.id],m())},o.add=function(e){o.drafts=c();var n=a.instant("DASHBOARDS.UNTITLED");e.contact?n=e.contact.firstName||e.contact.email:_.isEmpty(e.message.subject)||(n=e.message.subject);var t={type:"draft",title:e.account.key+" - "+n,channel:e.channel,content:e.message,account:e.account,interaction:e.interaction,id:_.random(1e10),openedAt:new Date,saved:!1};o.drafts[t.id]=t,m()},o.update=function(e){o.drafts=c();var n=o.drafts[e.id];n&&(n.content=e.message,o.drafts[e.id]=n,m())},o.open=function(e){o.drafts=c();var n=o.drafts[e];n&&t.$broadcast("open"+_.startCase(l)+"Draft",n)},o.remove=function(e){o.drafts=c(),o.drafts[e]&&(delete o.drafts[e],m())},o}e.$inject=["$rootScope","$translate","$window","Auth","privacyManager"],angular.module("app.core").factory("draftManager",e)}(),function(){"use strict";function e(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",e)}(),function(){"use strict";function e(o,i){function r(e,n){var t=i.localStorage.getItem(e),a=t?JSON.parse(t):{};return n?a[n]:a}function s(e,n){return i.localStorage.setItem(e,JSON.stringify(n))}return{get:r,parseInteractionsKey:function(e,n,t,a){var i="motion2.home."+e+":"+t,s=_.capitalize(e)+("chat"===e?"Website":"Account")+"Id";return o.resolve().then(function(){var e=r(i,"query");return e?((n=_.merge(n,e)).sort&&0<=n.sort.indexOf("lastMessage")&&(n=_.omit(n,"sort")),n.includeAll=!0):n.createdAt={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},1===a.length?n[s]=[a[0].id]:0===a.length&&(n[s]=[]),n}).catch(function(e){throw e})},set:s,update:function(e,n,t){var a=r(e);t?a[t]=n:a=n;return s(e,a)}}}e.$inject=["$q","$window"],angular.module("app.core").factory("localStorageManager",e)}(),function(){"use strict";function e(i){function s(e,n){var t=i.get(),a=0;if(t)switch(n){case"email":a=t.privacyPolicyEmail;break;case"number":a=t.privacyPolicyNumber;break;default:a=t.privacyPolicyName}return _.isNil(a)?e:0===a||a>e.length?e.replace(/./g,"*"):e.substring(0,e.length-a).padEnd(e.length,"*")}function o(e){return _.startsWith(e,"<")&&_.endsWith(e,">")&&(e=e.substring(1,e.length-1)),/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e)}function r(e){if(_.startsWith(e,"<")&&_.endsWith(e,">")){var n=!0;e=e.substring(1,e.length-1)}var t=e.split("@")[0],a=e.split("@")[1],i="";return n&&(i+="<"),i+=s(t,"email"),i+="@",i+=s(a,"email"),n&&(i+=">"),i}return{mask:function n(e){t=e,e=t.replace(/\s\s+/g," ").trim();var t;{if(o(e))return r(e);if(/^[+]?[0-9|.|\-|\s]*$/.test(e))return s(e,"number");var a=[],i=e.split(" ");return 1===i.length?s(e):(i.forEach(function(e){a.push(n(e))}),a.join(" "))}}}}e.$inject=["settingsManager"],angular.module("app.core").factory("privacyManager",e)}(),function(){"use strict";function e(n,i){return{setPlaceholder:function(a){var e;return n(function(n){try{if(_.isEmpty(a.resources))e=i.instant("DASHBOARDS.NONE");else if(_.isEmpty(a.param))e=a.placeholder?i.instant(a.placeholder):i.instant("DASHBOARDS.CHOOSE");else if(a.param.length===a.resources.length)e=i.instant("DASHBOARDS.ALL");else{var t=a.ngValue||"id";e=_(a.resources).filter(function(e){return _.includes(a.param,e[t])}).map("name").value().join(", ")}n(e)}catch(e){n(null)}})}}}e.$inject=["$q","$translate"],angular.module("app.core").factory("quickFilterManager",e)}(),function(){"use strict";function e(t,e){var s=["available","loggedIn","paused","waiting"],o=["busy","inUse","invalid","loggedInDb","notInUse","onHold","ringing","ringInUse","talking","unavailable","unknown"],r=["pTalking","originated","message","dialActive","dialMethod","Trunk","startPredictive","startProgressive","erlangCalls","erlangCallToSecond","erlangAbandonmentRate","erlangBusyFactor","dialPredictiveInterval","dialPredictiveIntervalMaxThreshold","dialPredictiveIntervalMinThreshold","predictiveIntervalAvailable","predictiveIntervalTotalCalls","predictiveIntervalAnsweredCalls","predictiveIntervalDroppedCallsTimeout","predictiveIntervalDroppedCallsCallersExit","predictiveIntervalAvgHoldtime","predictiveIntervalAvgTalktime"],n=["idle","unknown","unavailable","ringing"];function a(e,n){var t=[e.chatPause,e.faxPause,e.mailPause,e.openchannelPause,e.smsPause,e.voicePause,e.whatsappPause];if(!n)return _.every(t);var a=_.filter(t);return 0<a.length&&a.length<t.length}function i(e){return!!_.isNil(e)||_.includes(n,e)}return{checkEveryChannelPauseStatus:function(n){e.getChannels().forEach(function(e){n[e+"Pause"]&&"idle"===n[e+"Status"]&&(n[e+"Status"]="pause")})},getAgentStatus:function(e){var n;return a(e)?"pause":a(e,!0)?"*pause":("idle"!==(n=e).voiceStatus&&n.voicePause?n.voiceStatus="pause":!_.every([n.chatStatus,n.faxStatus,n.mailStatus,n.openchannelStatus,n.smsStatus,n.voiceStatus,n.whatsappStatus],i))?"busy":"idle"},getAgentStatusDisplayValue:function(e){var n=e.globalStatus;return"pause"===e.globalStatus?n=e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"):"*pause"===e.globalStatus&&(n="*"+(e.pauseType||t.instant("VOICE.DEFAULT_PAUSE"))),n},getUserUpdateEventOrigin:function(e){var n="call";return e.lastLoginAt?n="login":!1===e.online?n="logout":e.pauseType&&(n="pause"),n},sortAgentsByStatus:function(e,t){return e.sort(function(e,n){return e.globalStatus===n.globalStatus?"pause"===e.globalStatus?"DESC"===t?(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?1:-1:(e.pauseType||"")<(n.pauseType||"")||e.fullname.toLowerCase()>n.fullname.toLowerCase()?-1:1:"DESC"===t?e.fullname.toLowerCase()<n.fullname.toLowerCase()?1:-1:e.fullname.toLowerCase()<n.fullname.toLowerCase()?-1:1:"DESC"===t?e.globalStatus<n.globalStatus?1:-1:e.globalStatus<n.globalStatus?-1:1})},updateQueue:function(e,n){var t=!!n.type,a=s;"inbound"===n.type?a=a.concat(o):"outbound"===n.type&&(a=a.concat(r));var i=_.pick(e,a);_.merge(n,i),t&&0<n.ringing&&n.available<n.loggedIn&&(n.available+=n.ringing)},INCOMING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-incoming",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},OUTGOING_CALL_STATUS_STYLES:{ring:"blue-300-fg icon-phone-outgoing",up:"green-300-fg icon-phone-in-talk",hangup:"red-300-fg icon-phone-hangup"},STATES_STYLES:{unknown:"grey-fg icon-phone-hangup",not_inuse:"green-300-fg icon-phone-hangup",inuse:"red-300-fg icon-phone-in-talk",busy:"red-300-fg icon-phone-locked",invalid:"grey-fg icon-phone-hangup",unavailable:"grey-fg icon-phone-hangup",ringing:"blue-300-fg icon-phone-incoming",ringinuse:"blue-300-fg icon-phone-incoming",onhold:"blue-300-fg icon-phone-paused"},STATUS_STYLES:{registered:"green-300-fg icon-checkbox-marked-circle",unregistered:"red-300-fg icon-close-circle",lagged:"red-300-fg icon-close-circle",reachable:"green-300-fg icon-checkbox-marked-circle",unreachable:"red-300-fg icon-close-circle",unknown:"grey-fg icon-minus-circle"}}}e.$inject=["$translate","msUtils"],angular.module("app.core").factory("realtimeManager",e)}(),function(){"use strict";function e(e,n){var t={get:function(){return a},getUTCOffset:function(){return null===i?n.setting.getDate().$promise.then(function(e){return i=e.offset}):e.resolve(i)},set:function(e){e&&(a=e.toJSON())}},a={},i=null;return t}e.$inject=["$q","api"],angular.module("app.core").factory("settingsManager",e)}(),function(){"use strict";function e(c,m){function u(e,n,t){if(_.isEmpty(n))return t;for(var a=0;a<n.length;a++){var i=n[a].key,s=_.find(e,function(e){return e[i]===n[a].value});s&&(_.some(t,["id",s.id])||(s.canSelect=!1,t.push(s)))}return t}return{getResources:function(a,i,s,o,r,l,d){return c(function(t,n){o||(o={}),d||(d="get"),a[s][d](o).$promise.then(function(e){var t=e.rows;if("admin"===i.role)return t;var n=m.getSectionId(s,l);return a.userProfileSection.get({userProfileId:i.userProfileId,sectionId:n}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?t:a.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(t,{id:e.resourceId})});return u(t,r,n)}):c.resolve().then(function(){return e=s,_.includes(["voiceContext"],e)?(o.defaultEntry=1,a[s][d](o).$promise.then(function(e){return e.rows})):[];var e}).then(function(e){return u(t,r,e)})})}).then(function(e){var n={rows:_.orderBy(e,[o.sort]),count:e.length};t(n)}).catch(function(e){n(e)})})}}}e.$inject=["$q","msNavigationService"],angular.module("app.core").factory("userProfileManager",e)}(),function(){"use strict";angular.module("app.core").filter("altDate",function(){return function(e){var n=Date.now()-new Date(e);return n<36e5?moment(e).fromNow():n<864e5?moment(e).format("HH:mm"):n<6048e5?moment(e).format("dddd"):moment(e).calendar()}})}(),function(){"use strict";function e(n){return function(e){return n.trustAsHtml(e)}}e.$inject=["$sce"],angular.module("app.core").filter("toTrusted",e).filter("htmlToPlaintext",function(){return function(e){return String(e).replace(/<[^>]+>/gm,"")}}).filter("nospace",function(){return function(e){return e?e.replace(/ /g,""):""}}).filter("humanizeDoc",function(){return function(e){if(e)return"directive"===e.type?e.name.replace(/([A-Z])/g,function(e){return"-"+e.toLowerCase()}):e.label||e.name}})}(),function(){"use strict";angular.module("app.core").filter("capitalize",function(){return function(e){return e?_.capitalize(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByIds",function(){return function(e,n){if(0===e.length||!n)return e;if(0===n.length)return[];for(var t=[],a=0;a<e.length;a++){for(var i=e[a],s=!1,o=0;o<n.length;o++){var r=n[o];if(i.id===r){s=!0;break}}s&&t.push(i)}return t}})}(),function(){"use strict";angular.module("app.core").filter("filterByPropIds",function(){return function(e,n,t){if(0===e.length||!t||0===t.length)return e;for(var a=[],i=0;i<e.length;i++){for(var s=e[i],o=!1,r=0;r<t.length;r++){var l=t[r];if(-1<s[n].indexOf(l)){o=!0;break}}o&&a.push(s)}return a}})}(),function(){"use strict";angular.module("app.core").filter("getOptionByValue",function(){return function(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});return a?a[t]:""}})}(),function(){"use strict";angular.module("app.core").filter("orderByDate",function(){return function(e){var n=[];return angular.forEach(e,function(e){n.push(e)}),n.sort(function(e,n){return e.hasOwnProperty("openedAt")&&n.hasOwnProperty("openedAt")?e.openedAt>n.openedAt?1:-1:1}),n}})}(),function(){"use strict";angular.module("app.core").filter("secToTime",function(){return function(e){e&&(e=e.toString().replace(",",""));var n=Math.floor(e/86400),t=e%86400,a=new Date(1e3*t).toISOString().substring(11,19);return a.replace(/^(\d+)/,function(e){return(""+(Number(e)+24*n)).padStart(2,"0")})}})}(),function(){"use strict";angular.module("app.core").filter("snakecase",function(){return function(e){return e?_.snakeCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("startcase",function(){return function(e){return e?_.startCase(e):""}})}(),function(){"use strict";angular.module("app.core").filter("filterByTags",function(){return function(e,t){if(0===e.length||0===t.length)return e;var a=[];return e.forEach(function(e){var n=t.every(function(n){var t=!1;return e.tags.forEach(function(e){e.name!==n.name||(t=!0)}),t});n&&a.push(e)}),a}}).filter("filterSingleByTags",function(){return function(e,n){if(0!==e.length&&0!==n.length){if(e.length<n.length)return[];var t=[],a=n.every(function(n){var t=!1;return e.forEach(function(e){e.name!==n.name||(t=!0)}),t});return a&&t.push(e),t}}})}(),function(){"use strict";angular.module("app.core").filter("toInteger",function(){return function(e){if(e&&"string"==typeof e)return parseInt(e)}})}(),function(){"use strict";function m(e,n,t,a){this.id=Math.random().toString(36).substring(2,15)+Math.random().toString(36).substring(2,15),this.title=e,this.body=n,this.accept=t,this.reject=a,this.close=i}function u(){return/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor)}function i(){var t=this;navigator.serviceWorker.ready.then(function(e){e.getNotifications().then(function(e){var n=_.find(e,function(e){return e.data.id===t.id});n&&n.close()})})}angular.module("app.dashboards").provider("motNotification",function(){return{$get:[function(){var d,t,c=[];"serviceWorker"in navigator&&u()?navigator.serviceWorker.register("notification.js").then(function(e){(d=e).update(),d.installing?t=d.installing:d.waiting?t=d.waiting:d.active&&(t=d.active)}).catch(function(e){console.error("Service worker registration failed",e)}):console.error("Service Worker is not supported");return navigator.serviceWorker.addEventListener("message",function(e){if(e.source===t){var n=_.find(c,{id:e.data.id});if(n)switch(e.data.action){case"accept":n.accept&&n.accept();break;case"reject":n.reject&&n.reject()}}}),{create:function(e,i,s,o,r,l){return new Promise(function(t,n){var a;u()&&(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)?(a=new m(e||"MyTitle",i||"MyBody",o,r),c.push(a),a?window.Notification.requestPermission().then(function(e){if("granted"===e)return d.showNotification(a.title,{body:a.body,requireInteraction:!0,icon:s||"assets/images/business/queueCampaigns.jpg",data:{id:a.id},actions:[{action:"accept",title:"Accept"},{action:"reject",title:"Reject"}]})}).then(function(e){if(l){for(var n=0;n<c.length;n++)c[n].close();t()}else t(a)}).catch(function(e){n(e)}):n(new Error("Notification creating error"))):t()})}}}]}})}(),function(){"use strict";function e(l,d,c){return{resolve:function(e,n){var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return d.error("apiResolver.resolve requires correct action parameter (ResourceName@methodName)"),!1;var o=l.defer(),r=function(e){for(var n=e.split("."),t=c,a=0;a<n.length;a++){if(angular.isUndefined(t[n[a]])){d.error('Resource part "'+n[a]+'" is not defined!'),t=!1;break}t=t[n[a]]}return t||!1}(a);r?r[i](s,function(e){o.resolve(e)},function(e){o.reject(e)}):(d.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!'));return o.promise}}}e.$inject=["$q","$log","api"],angular.module("app.core").factory("apiResolver",e)}(),function(){"use strict";function e(e){return{showLoadingIndicator:function(){e.loadingProgress=!0},hideLoadingIndicator:function(){e.loadingProgress=!1}}}e.$inject=["$rootScope"],angular.module("app.core").factory("LoadingIndicatorService",e)}(),function(){"use strict";angular.module("app.core").provider("msApi",function(){var t=angular.injector(["ng"]).get("$log"),a="",v=[];function n(e){a=e}function i(){return a}function s(e,n){angular.isString(e)?angular.isArray(n)?v[e]={url:a+(n[0]||""),paramDefaults:n[1]||[],actions:n[2]||[],options:n[3]||{}}:t.error('"resource" must be an array and it must follow $resource definition'):t.error('"path" must be a string (eg. `dashboard.project`)')}this.setBaseUrl=n,this.getBaseUrl=i,this.getApiObject=function(){return v},this.register=s,this.$get=["$log","$q","$resource","$rootScope",function(m,u,p,g){var e={setBaseUrl:n,getBaseUrl:i,register:s,resolve:function(e,n){g.$broadcast("msApi::resolveStart");var t=e.split("@"),a=t[0],i=t[1],s=n||{};if(!a||!i)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var o=u.defer(),r=v[a];if(r){var l=p(r.url,r.paramDefaults,r.actions,r.options);l[i](s,function(e){o.resolve(e),g.$broadcast("msApi::resolveSuccess")},function(e){o.reject(e),g.$broadcast("msApi::resolveError")})}else m.error('Resource "'+a+'" is not defined in the api service!'),o.reject('Resource "'+a+'" is not defined in the api service!');return o.promise},request:function(e,n,t,a){g.$broadcast("msApi::requestStart");var i=e.split("@"),s=i[0],o=i[1],r=n||{};if(!s||!o)return m.error("msApi.resolve requires correct action parameter (resourceName@methodName)"),!1;var l=u.defer(),d=v[s];if(d){var c=p(d.url,d.paramDefaults,d.actions,d.options);c[o](r,function(e){g.$broadcast("msApi::requestSuccess"),l.resolve(e),angular.isDefined(t)&&angular.isFunction(t)&&t(e)},function(e){g.$broadcast("msApi::requestError"),l.reject(e),angular.isDefined(a)&&angular.isFunction(a)&&a(e)})}else m.error('Resource "'+s+'" is not defined in the api service!'),l.reject('Resource "'+s+'" is not defined in the api service!');return l.promise}};return e}]})}(),function(){"use strict";function e(l){var e=new MobileDetect(l.navigator.userAgent),d=null;return{exists:function(e,n){return-1<n.indexOf(e)},detectBrowser:function(){if(d)return d;var e=[{string:l.navigator.userAgent,subString:"Edge",versionSearch:"Edge",identity:"Edge"},{string:l.navigator.userAgent,subString:"Chrome",identity:"Chrome"},{string:l.navigator.userAgent,subString:"OmniWeb",versionSearch:"OmniWeb/",identity:"OmniWeb"},{string:l.navigator.vendor,subString:"Apple",versionSearch:"Version",identity:"Safari"},{prop:l.opera,identity:"Opera"},{string:l.navigator.vendor,subString:"iCab",identity:"iCab"},{string:l.navigator.vendor,subString:"KDE",identity:"Konqueror"},{string:l.navigator.userAgent,subString:"Firefox",identity:"Firefox"},{string:l.navigator.vendor,subString:"Camino",identity:"Camino"},{string:l.navigator.userAgent,subString:"Netscape",identity:"Netscape"},{string:l.navigator.userAgent,subString:"MSIE",identity:"Explorer",versionSearch:"MSIE"},{string:l.navigator.userAgent,subString:"Trident/7",identity:"Explorer",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Gecko",identity:"Mozilla",versionSearch:"rv"},{string:l.navigator.userAgent,subString:"Mozilla",identity:"Netscape",versionSearch:"Mozilla"}],n=[{string:l.navigator.platform,subString:"Win",identity:"Windows"},{string:l.navigator.platform,subString:"Mac",identity:"Mac"},{string:l.navigator.platform,subString:"Linux",identity:"Linux"},{string:l.navigator.platform,subString:"iPhone",identity:"iPhone"},{string:l.navigator.platform,subString:"iPod",identity:"iPod"},{string:l.navigator.platform,subString:"iPad",identity:"iPad"},{string:l.navigator.platform,subString:"Android",identity:"Android"}],i="";function t(e){for(var n=0;n<e.length;n++){var t=e[n].string,a=e[n].prop;if(i=e[n].versionSearch||e[n].identity,t){if(-1!==t.indexOf(e[n].subString))return e[n].identity}else if(a)return e[n].identity}}function a(e){var n=e.indexOf(i);if(-1!==n)return parseInt(e.substring(n+i.length+1))}var s=t(e)||"unknown-browser",o=a(l.navigator.userAgent)||a(l.navigator.appVersion)||"unknown-version",r=t(n)||"unknown-os";return s=s.toLowerCase(),o=s+"-"+o,r=r.toLowerCase(),d={browser:s,version:o,os:r}},getChannels:function(){return["chat","fax","mail","openchannel","sms","voice","whatsapp"]},guidGenerator:function(){var e=function(){return(65536*(1+Math.random())||0).toString(16).substring(1)};return e()+e()+e()+e()+e()+e()},isMobile:function(){return e.mobile()},toggleInArray:function(e,n){-1===n.indexOf(e)?n.push(e):n.splice(n.indexOf(e),1)},firstLastDayMonth:function(){return{$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}e.$inject=["$window"],angular.module("app.core").factory("msUtils",e)}(),function(){"use strict";function e(e,n){var t=this;t.themes=n.themes,t.layoutModes=[{label:"Boxed",value:"boxed"},{label:"Wide",value:"wide"}],t.layoutStyles=[{label:"Vertical Navigation",value:"verticalNavigation",figure:"/assets/images/theme-options/vertical-nav.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar",value:"verticalNavigationFullwidthToolbar",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar.jpg"},{label:"Vertical Navigation with Fullwidth Toolbar 2",value:"verticalNavigationFullwidthToolbar2",figure:"/assets/images/theme-options/vertical-nav-with-full-toolbar-2.jpg"},{label:"Horizontal Navigation",value:"horizontalNavigation",figure:"/assets/images/theme-options/horizontal-nav.jpg"},{label:"Content with Toolbar",value:"contentWithToolbar",figure:"/assets/images/theme-options/content-with-toolbar.jpg"},{label:"Content Only",value:"contentOnly",figure:"/assets/images/theme-options/content-only.jpg"}],t.layoutMode="wide",t.layoutStyle=e.get("motion.layoutStyle")||"verticalNavigation",t.setActiveTheme=function(e){n.setActiveTheme(e)},t.getActiveTheme=function(){return n.themes.active},t.updateLayoutMode=function(){angular.element("body").toggleClass("boxed","boxed"===t.layoutMode)},t.updateLayoutStyle=function(){e.put("motion.layoutStyle",t.layoutStyle),location.reload()}}function n(n){return{restrict:"E",scope:{},controller:"MsThemeOptionsController as vm",templateUrl:"app/core/theme-options/theme-options.html",compile:function(e){return e.addClass("ms-theme-options"),function(e){e.toggleOptionsSidenav=function(){n("motion-theme-options").toggle()}}}}}e.$inject=["$cookies","motionTheming"],n.$inject=["$mdSidenav"],angular.module("app.core").controller("MsThemeOptionsController",e).directive("msThemeOptions",n)}(),function(){"use strict";function e(i,a,s){var o={};return{generate:function(){var e=angular.copy(s.getRegisteredThemes()),a=angular.copy(s.getRegisteredPalettes());angular.forEach(e,function(t){o[t.name]={},angular.forEach(t.colors,function(e,n){o[t.name][n]={name:e.name,levels:{default:{color:l(a[e.name][e.hues.default].value),contrast1:l(a[e.name][e.hues.default].contrast,1),contrast2:l(a[e.name][e.hues.default].contrast,2),contrast3:l(a[e.name][e.hues.default].contrast,3),contrast4:l(a[e.name][e.hues.default].contrast,4)},hue1:{color:l(a[e.name][e.hues["hue-1"]].value),contrast1:l(a[e.name][e.hues["hue-1"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-1"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-1"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-1"]].contrast,4)},hue2:{color:l(a[e.name][e.hues["hue-2"]].value),contrast1:l(a[e.name][e.hues["hue-2"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-2"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-2"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-2"]].contrast,4)},hue3:{color:l(a[e.name][e.hues["hue-3"]].value),contrast1:l(a[e.name][e.hues["hue-3"]].contrast,1),contrast2:l(a[e.name][e.hues["hue-3"]].contrast,2),contrast3:l(a[e.name][e.hues["hue-3"]].contrast,3),contrast4:l(a[e.name][e.hues["hue-3"]].contrast,4)}}}})}),function(e){var n=angular.copy(e);angular.forEach(n,function(t){angular.forEach(t,function(e,n){t[n]=e.levels,t[n].color=e.levels.default.color,t[n].contrast1=e.levels.default.contrast1,t[n].contrast2=e.levels.default.contrast2,t[n].contrast3=e.levels.default.contrast3,t[n].contrast4=e.levels.default.contrast4,delete t[n].default})}),s.setThemesList(n);var t=i.get("motion.selectedTheme");t?s.setActiveTheme(t):s.setActiveTheme("default")}(o);var r={};angular.forEach(o,function(e,n){var t,a,i,s,o;(r={})["@themeName"]=n,angular.forEach(e,function(e,a){angular.forEach(e.levels,function(e,t){angular.forEach(e,function(e,n){r["@"+a+d(t)+d(n)]=e})})}),t=r,a=new RegExp(Object.keys(t).join("|"),"gi"),i='/* Content hack because they wont fix */\n/* https://github.com/angular/material/pull/8067 */\n[md-theme="@themeName"] md-content.md-hue-1,\nmd-content.md-@themeName-theme.md-hue-1 {\n    color: @backgroundHue1Contrast1;\n    background-color: @backgroundHue1Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-2,\nmd-content.md-@themeName-theme.md-hue-2 {\n    color: @backgroundHue2Contrast1;\n    background-color: @backgroundHue2Color;\n}\n\n[md-theme="@themeName"] md-content.md-hue-3,\n md-content.md-@themeName-theme.md-hue-3 {\n    color: @backgroundHue3Contrast1;\n    background-color: @backgroundHue3Color;\n}\n\n/* Text Colors */\n[md-theme="@themeName"] a {\n    color: @accentDefaultColor;\n}\n\n[md-theme="@themeName"] .secondary-text,\n[md-theme="@themeName"] .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .hint-text,\n[md-theme="@themeName"] .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .fade-text,\n[md-theme="@themeName"] .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Primary */\n[md-theme="@themeName"] .md-primary-bg {\n    background-color: @primaryDefaultColor;\n    color: @primaryDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg .secondary-text,\n[md-theme="@themeName"] .md-primary-bg .icon {\n    color: @primaryDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg .hint-text,\n[md-theme="@themeName"] .md-primary-bg .disabled-text {\n    color: @primaryDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg .fade-text,\n[md-theme="@themeName"] .md-primary-bg .divider {\n    color: @primaryDefaultContrast4;\n}\n\n/* Primary, Hue-1 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 {\n    background-color: @primaryHue1Color;\n    color: @primaryHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .icon {\n    color: @primaryHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .disabled-text {\n    color: @primaryHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-1 .divider {\n    color: @primaryHue1Contrast4;\n}\n\n/* Primary, Hue-2 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 {\n    background-color: @primaryHue2Color;\n    color: @primaryHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .icon {\n    color: @primaryHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .disabled-text {\n    color: @primaryHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-2 .divider {\n    color: @primaryHue2Contrast4;\n}\n\n/* Primary, Hue-3 */\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 {\n    background-color: @primaryHue3Color;\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .icon {\n    color: @primaryHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .disabled-text {\n    color: @primaryHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-primary-bg.md-hue-3 .divider {\n    color: @primaryHue3Contrast4;\n}\n\n/* Primary foreground */\n[md-theme="@themeName"] .md-primary-fg {\n    color: @primaryDefaultColor !important;\n}\n\n/* Primary foreground, Hue-1 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-1 {\n    color: @primaryHue1Color !important;\n}\n\n/* Primary foreground, Hue-2 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-2 {\n    color: @primaryHue2Color !important;\n}\n\n/* Primary foreground, Hue-3 */\n[md-theme="@themeName"] .md-primary-fg.md-hue-3 {\n    color: @primaryHue3Color !important;\n}\n\n/* Accent */\n[md-theme="@themeName"] .md-accent-bg {\n    background-color: @accentDefaultColor;\n    color: @accentDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg .secondary-text,\n[md-theme="@themeName"] .md-accent-bg .icon {\n    color: @accentDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg .hint-text,\n[md-theme="@themeName"] .md-accent-bg .disabled-text {\n    color: @accentDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg .fade-text,\n[md-theme="@themeName"] .md-accent-bg .divider {\n    color: @accentDefaultContrast4;\n}\n\n/* Accent, Hue-1 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 {\n    background-color: @accentHue1Color;\n    color: @accentHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .icon {\n    color: @accentHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .disabled-text {\n    color: @accentHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-1 .divider {\n    color: @accentHue1Contrast4;\n}\n\n/* Accent, Hue-2 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 {\n    background-color: @accentHue2Color;\n    color: @accentHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .icon {\n    color: @accentHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .disabled-text {\n    color: @accentHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-2 .divider {\n    color: @accentHue2Contrast4;\n}\n\n/* Accent, Hue-3 */\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 {\n    background-color: @accentHue3Color;\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .icon {\n    color: @accentHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .disabled-text {\n    color: @accentHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-accent-bg.md-hue-3 .divider {\n    color: @accentHue3Contrast4;\n}\n\n/* Accent foreground */\n[md-theme="@themeName"] .md-accent-fg {\n    color: @accentDefaultColor !important;\n}\n\n/* Accent foreground, Hue-1 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-1 {\n    color: @accentHue1Color !important;\n}\n\n/* Accent foreground, Hue-2 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-2 {\n    color: @accentHue2Color !important;\n}\n\n/* Accent foreground, Hue-3 */\n[md-theme="@themeName"] .md-accent-fg.md-hue-3 {\n    color: @accentHue3Color !important;\n}\n\n/* Warn */\n[md-theme="@themeName"] .md-warn-bg {\n    background-color: @warnDefaultColor;\n    color: @warnDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg .secondary-text,\n[md-theme="@themeName"] .md-warn-bg .icon {\n    color: @warnDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg .hint-text,\n[md-theme="@themeName"] .md-warn-bg .disabled-text {\n    color: @warnDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg .fade-text,\n[md-theme="@themeName"] .md-warn-bg .divider {\n    color: @warnDefaultContrast4;\n}\n\n/* Warn, Hue-1 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 {\n    background-color: @warnHue1Color;\n    color: @warnHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .icon {\n    color: @warnHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .disabled-text {\n    color: @warnHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-1 .divider {\n    color: @warnHue1Contrast4;\n}\n\n/* Warn, Hue-2 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 {\n    background-color: @warnHue2Color;\n    color: @warnHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .icon {\n    color: @warnHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .disabled-text {\n    color: @warnHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-2 .divider {\n    color: @warnHue2Contrast4;\n}\n\n/* Warn, Hue-3 */\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 {\n    background-color: @warnHue3Color;\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .icon {\n    color: @warnHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .disabled-text {\n    color: @warnHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-warn-bg.md-hue-3 .divider {\n    color: @warnHue3Contrast4;\n}\n\n/* Warn foreground */\n[md-theme="@themeName"] .md-warn-fg {\n    color: @warnDefaultColor !important;\n}\n\n/* Warn foreground, Hue-1 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-1 {\n    color: @warnHue1Color !important;\n}\n\n/* Warn foreground, Hue-2 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-2 {\n    color: @warnHue2Color !important;\n}\n\n/* Warn foreground, Hue-3 */\n[md-theme="@themeName"] .md-warn-fg.md-hue-3 {\n    color: @warnHue3Color !important;\n}\n\n/* Background */\n[md-theme="@themeName"] .md-background-bg {\n    background-color: @backgroundDefaultColor;\n    color: @backgroundDefaultContrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg .secondary-text,\n[md-theme="@themeName"] .md-background-bg .icon {\n    color: @backgroundDefaultContrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg .hint-text,\n[md-theme="@themeName"] .md-background-bg .disabled-text {\n    color: @backgroundDefaultContrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg .fade-text,\n[md-theme="@themeName"] .md-background-bg .divider {\n    color: @backgroundDefaultContrast4;\n}\n\n/* Background, Hue-1 */\n[md-theme="@themeName"] .md-background-bg.md-hue-1 {\n    background-color: @backgroundHue1Color;\n    color: @backgroundHue1Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .icon {\n    color: @backgroundHue1Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .disabled-text {\n    color: @backgroundHue1Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-1 .divider {\n    color: @backgroundHue1Contrast4;\n}\n\n/* Background, Hue-2 */\n[md-theme="@themeName"] .md-background-bg.md-hue-2 {\n    background-color: @backgroundHue2Color;\n    color: @backgroundHue2Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .icon {\n    color: @backgroundHue2Contrast2;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .disabled-text {\n    color: @backgroundHue2Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-2 .divider {\n    color: @backgroundHue2Contrast4;\n}\n\n/* Background, Hue-3 */\n[md-theme="@themeName"] .md-background-bg.md-hue-3 {\n    background-color: @backgroundHue3Color;\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .secondary-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .icon {\n    color: @backgroundHue3Contrast1;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .hint-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .disabled-text {\n    color: @backgroundHue3Contrast3;\n}\n\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .fade-text,\n[md-theme="@themeName"] .md-background-bg.md-hue-3 .divider {\n    color: @backgroundHue3Contrast4;\n}\n\n/* Background foreground */\n[md-theme="@themeName"] .md-background-fg {\n    color: @backgroundDefaultColor !important;\n}\n\n/* Background foreground, Hue-1 */\n[md-theme="@themeName"] .md-background-fg.md-hue-1 {\n    color: @backgroundHue1Color !important;\n}\n\n/* Background foreground, Hue-2 */\n[md-theme="@themeName"] .md-background-fg.md-hue-2 {\n    color: @backgroundHue2Color !important;\n}\n\n/* Background foreground, Hue-3 */\n[md-theme="@themeName"] .md-background-fg.md-hue-3 {\n    color: @backgroundHue3Color !important;\n}'.replace(a,function(e){return t[e]}),s=angular.element("head"),(o=angular.element('<style type="text/css"></style>')).html(i),s.append(o)})},rgba:l};function l(e,n){var t=n||!1;return 4===e.length&&255===e[0]&&255===e[1]&&255===e[2]&&e.splice(3,4),t&&(e=function(e,n){var t={white:{1:"1",2:"0.7",3:"0.3",4:"0.12"},black:{1:"0.87",2:"0.54",3:"0.26",4:"0.12"}};255===e[0]&&255===e[1]&&255===e[2]?e[3]=t.white[n]:0===e[0]&&0===e[1]&&0===e[2]&&(e[3]=t.black[n]);return e}(e,t)),3===e.length?"rgb("+e.join(",")+")":4===e.length?"rgba("+e.join(",")+")":void a.error("Invalid number of arguments supplied in the color array: "+e.length+"\nThe array must have 3 or 4 colors.")}function d(e){return e.charAt(0).toUpperCase()+e.slice(1)}}e.$inject=["$cookies","$log","motionTheming"],angular.module("app.core").factory("motionGenerator",e)}(),function(){"use strict";angular.module("app.core").constant("motionPalettes",[{name:"motion-blue",options:{50:"#ebf1fa",100:"#c2d4ef",200:"#9ab8e5",300:"#78a0dc",400:"#5688d3",500:"#3470ca",600:"#2e62b1",700:"#275498",800:"#21467e",900:"#1a3865",A100:"#c2d4ef",A200:"#9ab8e5",A400:"#5688d3",A700:"#275498",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}},{name:"motion-paleblue",options:{50:"#ececee",100:"#c5c6cb",200:"#9ea1a9",300:"#7d818c",400:"#5c616f",500:"#3c4252",600:"#353a48",700:"#2d323e",800:"#262933",900:"#1e2129",A100:"#c5c6cb",A200:"#9ea1a9",A400:"#5c616f",A700:"#2d323e",contrastDefaultColor:"light",contrastDarkColors:"50 100 200 A100",contrastStrongLightColors:"300 400"}}])}(),function(){"use strict";angular.module("app.core").constant("motionThemes",{default:{primary:{name:"motion-paleblue",hues:{default:"700","hue-1":"500","hue-2":"600","hue-3":"400"}},accent:{name:"light-blue",hues:{default:"600","hue-1":"400","hue-2":"700","hue-3":"A100"}},warn:{name:"red"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},pinkTheme:{primary:{name:"blue-grey",hues:{default:"800","hue-1":"600","hue-2":"400","hue-3":"A100"}},accent:{name:"pink",hues:{default:"400","hue-1":"300","hue-2":"600","hue-3":"A100"}},warn:{name:"blue"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}},tealTheme:{primary:{name:"motion-blue",hues:{default:"900","hue-1":"600","hue-2":"500","hue-3":"A100"}},accent:{name:"teal",hues:{default:"500","hue-1":"400","hue-2":"600","hue-3":"A100"}},warn:{name:"deep-orange"},background:{name:"grey",hues:{default:"A100","hue-1":"A100","hue-2":"100","hue-3":"300"}}}})}(),function(){"use strict";function e(t,e,n){var a;angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.getObject("motion.customTheme");i&&(n.custom=i),t.alwaysWatchTheme(!0),angular.forEach(e,function(e){t.definePalette(e.name,e.options)}),angular.forEach(n,function(e,n){t.theme(n).primaryPalette(e.primary.name,e.primary.hues).accentPalette(e.accent.name,e.accent.hues).warnPalette(e.warn.name,e.warn.hues).backgroundPalette(e.background.name,e.background.hues)})}e.$inject=["$mdThemingProvider","motionPalettes","motionThemes"],angular.module("app.core").config(e)}(),function(){"use strict";function e(n,t,e){var a={getRegisteredPalettes:function(){return e.PALETTES},getRegisteredThemes:function(){return e.THEMES},setActiveTheme:function(e){if(angular.isUndefined(a.themes.list[e]))return angular.isUndefined(a.themes.list.default)?void t.error('You must have at least one theme named "default"'):(t.warn('The theme "'+e+'" does not exist! Falling back to the "default" theme.'),a.themes.active.name="default",a.themes.active.theme=a.themes.list.default,void n.put("motion.selectedTheme",a.themes.active.name));a.themes.active.name=e,a.themes.active.theme=a.themes.list[e],n.put("motion.selectedTheme",e)},setThemesList:function(e){a.themes.list=e},themes:{list:{},active:{name:"",theme:{}}}};return a}e.$inject=["$cookies","$log","$mdTheming"],angular.module("app.core").service("motionTheming",e)}(),function(){"use strict";function e(n,s,o,r){this.search=function(n){for(var e=[],t=r.getFlatNavigation(),a=o.defer(),i=0;i<t.length;i+=1)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return s(function(){a.resolve(e)},1e3),a.promise},this.searchResultClick=function(e){e.uisref&&(e.stateParams?n.go(e.state,e.stateParams):n.go(e.state))}}e.$inject=["$state","$timeout","$q","msNavigationService"],angular.module("app.errors.error-404").controller("Error404Controller",e)}(),function(){"use strict";function e(e,n){var t=this;t.code="",t.send=!1,t.error=e.params,t.sendReport=function(){n.post("/api/jira",t.error).then(function(e){t.send=!0,e.data&&(t.code=e.data.id)},function(e){t.send=!1})}}e.$inject=["$state","$http"],angular.module("app.errors.error-500").controller("Error500Controller",e)}(),function(){"use strict";function e(e,n,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],angular.module("app.footer").controller("FooterController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.form={},s.forgotPassword=function(){return i.auth.forgot(s.form).$promise.then(function(){n.success({title:t.instant("FORGOTPASSWORD.LINK_SENT"),msg:t.instant("FORGOTPASSWORD.LINNK_SENT_MESSAGE")})}).catch(function(e){e&&n.error({title:t.instant("FORGOTPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},s.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general")}}e.$inject=["Auth","toasty","$translate","$state","api"],angular.module("app.forgot").controller("ForgotPasswordController",e)}(),function(){"use strict";function e(e,n){var t=this;t.currentUser=e.getCurrentUser(),t.newsAlertHide=n.get("motion.newsAlertHide:"+t.currentUser.id)||!1,t.newsAlertOnClose=function(){n.put("motion.newsAlertHide:"+t.currentUser.id,!0)}}e.$inject=["Auth","$cookies"],angular.module("app.header").controller("HeaderController",e)}(),function(){"use strict";function e(e,o){var r={getResourcesByRole:function(e,n,t,a,i,s){return o.getResources(r,e,n,t,a,i,s)}};return r.baseUrl="api/",r.auth=e(r.baseUrl+"auth/local",{},{local:{method:"post",url:r.baseUrl+"auth/local"},forgot:{method:"post",url:r.baseUrl+"auth/local/forgot"},reset:{method:"post",url:r.baseUrl+"auth/local/reset/:token",params:{token:"@token"}},user:{method:"get",url:r.baseUrl+"auth/local/user/:token",params:{token:"@token"}},google:{method:"post",url:r.baseUrl+"auth/google"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),r.jira=e(r.baseUrl+"jira"),r.rpc=e(r.baseUrl+"rpc",{},{startMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/mixmonitor",params:{uniqueid:"@uniqueid"}},stopMonitor:{method:"get",url:r.baseUrl+"rpc/voice/channels/:uniqueid/stopmixmonitor",params:{uniqueid:"@uniqueid"}},getVoiceChannels:{method:"get",url:r.baseUrl+"rpc/voice/channels"},getVoiceQueues:{method:"get",url:r.baseUrl+"rpc/voice/queues"},getChatQueues:{method:"get",url:r.baseUrl+"rpc/chat/queues"},getMailQueues:{method:"get",url:r.baseUrl+"rpc/mail/queues"},getSmsQueues:{method:"get",url:r.baseUrl+"rpc/sms/queues"},getWhatsappQueues:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues"},getOpenchannelQueues:{method:"get",url:r.baseUrl+"rpc/openchannel/queues"},getFaxQueues:{method:"get",url:r.baseUrl+"rpc/fax/queues"},getVoiceQueuesPreview:{method:"get",url:r.baseUrl+"rpc/voice/queues/preview/:id"},getVoiceQueuesChannels:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels"},getVoiceQueuesChannel:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid"},getVoiceQueuesChannelHangup:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/hangup"},getVoiceQueuesChannelRedirect:{method:"get",url:r.baseUrl+"rpc/voice/queues/channels/:uniqueid/redirect/:exten"},getOutbound:{method:"get",url:r.baseUrl+"rpc/outbound"},getOutboundChannels:{method:"get",url:r.baseUrl+"rpc/outbound/channels"},getAgents:{method:"get",url:r.baseUrl+"rpc/agents"},setAgentCapacity:{method:"put",url:r.baseUrl+"rpc/agents/:id/capacity",params:{id:"@id"}},getTelephones:{method:"get",url:r.baseUrl+"rpc/telephones"},getTrunks:{method:"get",url:r.baseUrl+"rpc/trunks"},getCampaigns:{method:"get",url:r.baseUrl+"rpc/campaigns"},getMailAccounts:{method:"get",url:r.baseUrl+"rpc/mail/accounts"},getFaxAccounts:{method:"get",url:r.baseUrl+"rpc/fax/accounts"},getChatQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/chat/queues/waitinginteractions"},getMailQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/mail/queues/waitinginteractions"},getOpenchannelQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/waitinginteractions"},getOpenchannelQueuesIdWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/openchannel/queues/:id/waitinginteractions"},getSmsQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/sms/queues/waitinginteractions"},getFaxQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/fax/queues/waitinginteractions"},getWhatsappQueuesWaitingInteractions:{method:"get",url:r.baseUrl+"rpc/whatsapp/queues/waitinginteractions"},mailQueueNotify:{method:"post",url:r.baseUrl+"rpc/mail/queues/:id/notify",params:{id:"@id"}},chatQueueNotify:{method:"post",url:r.baseUrl+"rpc/chat/queues/:id/notify",params:{id:"@id"}},faxQueueNotify:{method:"post",url:r.baseUrl+"rpc/fax/queues/:id/notify",params:{id:"@id"}},smsQueueNotify:{method:"post",url:r.baseUrl+"rpc/sms/queues/:id/notify",params:{id:"@id"}},openchannelQueueNotify:{method:"post",url:r.baseUrl+"rpc/openchannel/queues/:id/notify",params:{id:"@id"}},agentNotify:{method:"post",url:r.baseUrl+"rpc/agents/:id/notify",params:{id:"@id"}}}),r.version=e(r.baseUrl+"version",{},{fetch:{method:"get",url:r.baseUrl+"version/fetch"},reset:{method:"get",url:r.baseUrl+"version/reset"},pull:{method:"get",url:r.baseUrl+"version/pull"},restart:{method:"get",url:r.baseUrl+"version/restart"},migrations:{method:"get",url:r.baseUrl+"version/migrations"}}),r.system=e(r.baseUrl+"system",{},{killProcess:{method:"get",url:r.baseUrl+"system/process/:pid/kill",params:{pid:"@pid"}}}),r.pm2=e(r.baseUrl+"pm2/:id",{id:"@id"},{update:{method:"put",isArray:!0}}),r.user=e(r.baseUrl+"users/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"users/describe"},clone:{method:"post",url:r.baseUrl+"users/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/contacts"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"users/create_many"},changePassword:{isArray:!1,method:"put",url:r.baseUrl+"users/:id/password"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/queues"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/avatar"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/avatar"},getOpenTabs:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/open_tabs"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/contacts"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues"},getVoiceQueuesRt:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/queues_rt"},getGroups:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/groups"},getRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/recordings"},getScreenRecordings:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/screen_recordings"},getChatInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat/interactions"},getOpenchannelInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel/interactions"},getMailInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail/interactions"},getSmsInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms/interactions"},getFaxInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax/interactions"},getWhatsappInteractions:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp/interactions"},login:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/login"},logout:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/logout"},pause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/pause"},unpause:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/unpause"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/teams"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/lists"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/agents"},addChatInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_interactions"},removeChatInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_interactions"},addMailInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_interactions"},removeMailInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_interactions"},addFaxInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_interactions"},removeFaxInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_interactions"},addSmsInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_interactions"},removeSmsInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_interactions"},addOpenchannelInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_interactions"},removeOpenchannelInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_interactions"},addWhatsappInteractions:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_interactions"},removeWhatsappInteractions:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_interactions"},getVoicePrefixes:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/prefixes"},getFaxAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/fax_accounts"},addFaxAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/fax_accounts"},removeFaxAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/fax_accounts"},getMailAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/mail_accounts"},addMailAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/mail_accounts"},removeMailAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/mail_accounts"},getOpenchannelAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/openchannel_accounts"},addOpenchannelAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/openchannel_accounts"},removeOpenchannelAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/openchannel_accounts"},getSmsAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/sms_accounts"},addSmsAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/sms_accounts"},removeSmsAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/sms_accounts"},getChatWebsites:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/chat_websites"},addChatWebsites:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/chat_websites"},removeChatWebsites:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/chat_websites"},getWhatsappAccounts:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/whatsapp_accounts"},addWhatsappAccounts:{isArray:!0,method:"post",url:r.baseUrl+"users/:id/whatsapp_accounts"},removeWhatsappAccounts:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/whatsapp_accounts"},getScheduledCalls:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/scheduled_calls"},getApiKey:{isArray:!1,method:"get",url:r.baseUrl+"users/:id/api_key"},createApiKey:{isArray:!1,method:"post",url:r.baseUrl+"users/:id/api_key"},removeApiKey:{isArray:!1,method:"delete",url:r.baseUrl+"users/:id/api_key"},whoami:{isArray:!1,method:"get",url:r.baseUrl+"users/whoami"},getPresence:{isArray:!1,method:"get",url:r.baseUrl+"users/presence"}}),r.voiceChanSpy=e(r.baseUrl+"voice/chanspy/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/chanspy/describe"},clone:{method:"post",url:r.baseUrl+"voice/chanspy/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceContext=e(r.baseUrl+"voice/contexts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/contexts/describe"},clone:{method:"post",url:r.baseUrl+"voice/contexts/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceExtension=e(r.baseUrl+"voice/extensions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/extensions/describe"},clone:{method:"post",url:r.baseUrl+"voice/extensions/:id/clone",params:{includeAll:"@includeAll"}},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"voice/extensions/:id/applications"}}),r.voiceMusicOnHold=e(r.baseUrl+"voice/mohs/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mohs/describe"},clone:{method:"post",url:r.baseUrl+"voice/mohs/:id/clone",params:{includeAll:"@includeAll"}},addSound:{isArray:!1,method:"post",url:r.baseUrl+"voice/mohs/:id/sounds"},removeSound:{isArray:!1,method:"delete",url:r.baseUrl+"voice/mohs/:id/sounds/:id2"},getSounds:{isArray:!1,method:"get",url:r.baseUrl+"voice/mohs/:id/sounds"}}),r.voiceQueue=e(r.baseUrl+"voice/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/hopper_black"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/users"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/members"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"voice/queues/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"voice/queues/:id/blacklists"}}),r.voiceRecording=e(r.baseUrl+"voice/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/recordings/describe"},clone:{method:"post",url:r.baseUrl+"voice/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},downloads:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/downloads"},runTranscribe:{isArray:!1,method:"post",url:r.baseUrl+"voice/recordings/:id/transcribe"},downloadTranscribe:{isArray:!1,method:"get",url:r.baseUrl+"voice/recordings/:id/transcribe",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.screenRecording=e(r.baseUrl+"screen/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"screen/recordings/describe"},clone:{method:"post",url:r.baseUrl+"screen/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"screen/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceMail=e(r.baseUrl+"voice/mails/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/:id/clone",params:{includeAll:"@includeAll"}},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/:id/messages"}}),r.voiceMailMessage=e(r.baseUrl+"voice/mails/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/mails/messages/describe"},clone:{method:"post",url:r.baseUrl+"voice/mails/messages/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"voice/mails/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.voiceCallReport=e(r.baseUrl+"voice/calls/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/calls/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/calls/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceDialReport=e(r.baseUrl+"voice/dials/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/dials/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/dials/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceAgentReport=e(r.baseUrl+"voice/agents/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/agents/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/agents/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueueReport=e(r.baseUrl+"voice/queues/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/queues/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/queues/reports/:id/clone",params:{includeAll:"@includeAll"}},getVoiceQueuesReport:{isArray:!1,method:"get",url:r.baseUrl+"voice/queues/reports/index"}}),r.memberReport=e(r.baseUrl+"members/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"members/reports/describe"},clone:{method:"post",url:r.baseUrl+"members/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.trunk=e(r.baseUrl+"trunks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"trunks/describe"},clone:{method:"post",url:r.baseUrl+"trunks/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceTransferReport=e(r.baseUrl+"voice/transfers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/transfers/reports/describe"},clone:{method:"post",url:r.baseUrl+"voice/transfers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailServerOut=e(r.baseUrl+"mail/out_servers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/out_servers/describe"},clone:{method:"post",url:r.baseUrl+"mail/out_servers/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailAccount=e(r.baseUrl+"mail/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/accounts/describe"},clone:{method:"post",url:r.baseUrl+"mail/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/canned_answers"},getImap:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/in_servers"},addImap:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/in_servers"},removeImap:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/in_servers"},getSmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/out_servers"},addSmtp:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/out_servers"},removeSmtp:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/out_servers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/applications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"mail/accounts/:id/send"},verifySmtp:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/verify"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/accounts/:id/users"}}),r.mailQueue=e(r.baseUrl+"mail/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/queues/describe"},clone:{method:"post",url:r.baseUrl+"mail/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"mail/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"mail/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"mail/queues/:id/users"}}),r.mailSubstatus=e(r.baseUrl+"mail/substatuses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/substatuses/describe"},clone:{method:"post",url:r.baseUrl+"mail/substatuses/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailInteraction=e(r.baseUrl+"mail/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/interactions/describe"},clone:{method:"post",url:r.baseUrl+"mail/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"mail/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"mail/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailMessage=e(r.baseUrl+"mail/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/messages/describe"},clone:{method:"post",url:r.baseUrl+"mail/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"mail/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"mail/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.mailApplication=e(r.baseUrl+"mail/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/applications/describe"},clone:{method:"post",url:r.baseUrl+"mail/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.mailQueueReport=e(r.baseUrl+"mail/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.dashboard=e(r.baseUrl+"dashboards/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/:id/clone",params:{includeAll:"@includeAll"}},addItem:{isArray:!1,method:"post",url:r.baseUrl+"dashboards/:id/items"},getItems:{isArray:!1,method:"get",url:r.baseUrl+"dashboards/:id/items"}}),r.dashboardItem=e(r.baseUrl+"dashboards/items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dashboards/items/describe"},clone:{method:"post",url:r.baseUrl+"dashboards/items/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxAccount=e(r.baseUrl+"fax/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/accounts/describe"},clone:{method:"post",url:r.baseUrl+"fax/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/canned_answers"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/interactions"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/applications"},addAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/addaccountapplications"},updateAccountApplications:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/updateaccountapplications"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/messages"},send:{isArray:!1,method:"post",url:r.baseUrl+"fax/accounts/:id/send"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/accounts/:id/users"}}),r.faxApplication=e(r.baseUrl+"fax/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/applications/describe"},clone:{method:"post",url:r.baseUrl+"fax/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxInteraction=e(r.baseUrl+"fax/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/interactions/describe"},clone:{method:"post",url:r.baseUrl+"fax/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"fax/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"fax/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxMessage=e(r.baseUrl+"fax/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/messages/describe"},clone:{method:"post",url:r.baseUrl+"fax/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"fax/messages/:id/reject"},download:{isArray:!1,method:"get",url:r.baseUrl+"fax/messages/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.faxQueue=e(r.baseUrl+"fax/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/queues/describe"},clone:{method:"post",url:r.baseUrl+"fax/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"fax/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"fax/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"fax/queues/:id/users"}}),r.faxQueueReport=e(r.baseUrl+"fax/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsAccount=e(r.baseUrl+"sms/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/accounts/describe"},clone:{method:"post",url:r.baseUrl+"sms/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/interactions"},send:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/send"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/accounts/:id/status"},statusGet:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/status"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/accounts/:id/users"}}),r.smsApplication=e(r.baseUrl+"sms/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/applications/describe"},clone:{method:"post",url:r.baseUrl+"sms/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsInteraction=e(r.baseUrl+"sms/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/interactions/describe"},clone:{method:"post",url:r.baseUrl+"sms/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"sms/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"sms/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"sms/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.smsMessage=e(r.baseUrl+"sms/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/messages/describe"},clone:{method:"post",url:r.baseUrl+"sms/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"sms/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"sms/messages/:id/status"}}),r.smsQueue=e(r.baseUrl+"sms/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/queues/describe"},clone:{method:"post",url:r.baseUrl+"sms/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"sms/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"sms/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"sms/queues/:id/users"}}),r.openchannelAccount=e(r.baseUrl+"openchannel/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/accounts/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/canned_answers"},notify:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/notify"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/applications"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/interactions"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/accounts/:id/users"},send:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/accounts/:id/send"}}),r.openchannelApplication=e(r.baseUrl+"openchannel/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/applications/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelInteraction=e(r.baseUrl+"openchannel/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/interactions/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"openchannel/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.openchannelMessage=e(r.baseUrl+"openchannel/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/messages/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"openchannel/messages/:id/reject"}}),r.openchannelQueue=e(r.baseUrl+"openchannel/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/queues/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"openchannel/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"openchannel/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"openchannel/queues/:id/users"}}),r.chatWebsite=e(r.baseUrl+"chat/websites/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/websites/describe"},clone:{method:"post",url:r.baseUrl+"chat/websites/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/canned_answers"},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/logo"},addAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/avatar"},addCustomerAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/customer_avatar"},addSystemAvatar:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/system_avatar"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/logo"},getAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/avatar"},getCustomerAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/customer_avatar"},getSystemAvatar:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/system_avatar"},notify:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/notify"},offline:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/offline"},addInteraction:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/interactions"},getInteractions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/interactions"},getSnippet:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/snippet"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/applications"},addProactiveActions:{isArray:!1,method:"post",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getProactiveActions:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/proactive_actions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/fields"},getOfflineMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/offline_messages"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/websites/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/websites/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/websites/:id/users"}}),r.openchannelQueueReport=e(r.baseUrl+"openchannel/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatApplication=e(r.baseUrl+"chat/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/applications/describe"},clone:{method:"post",url:r.baseUrl+"chat/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInteraction=e(r.baseUrl+"chat/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/interactions/describe"},clone:{method:"post",url:r.baseUrl+"chat/interactions/:id/clone",params:{includeAll:"@includeAll"}},createVidaooSession:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/vidaoo"},customUpdate:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/custom_update"},abandon:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/abandon"},attachmentUpload:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/attachment_upload"},attachmentDownload:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/attachment_download"},close:{isArray:!1,method:"put",url:r.baseUrl+"chat/interactions/:id/close"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/messages"},getMyMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/my_messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"chat/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"chat/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"chat/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.chatMessage=e(r.baseUrl+"chat/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"chat/messages/:id/reject"}}),r.chatOfflineMessage=e(r.baseUrl+"chat/offline_messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/offline_messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/offline_messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueue=e(r.baseUrl+"chat/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/queues/describe"},clone:{method:"post",url:r.baseUrl+"chat/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"chat/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"chat/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"chat/queues/:id/users"}}),r.chatGroup=e(r.baseUrl+"chat/groups/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/groups/describe"},clone:{method:"post",url:r.baseUrl+"chat/groups/:id/clone",params:{includeAll:"@includeAll"}},getUnread:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/unread"},addMembers:{isArray:!0,method:"post",url:r.baseUrl+"chat/groups/:id/members"},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/members"},removeMembers:{isArray:!1,method:"delete",url:r.baseUrl+"chat/groups/:id/members"},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"chat/groups/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"chat/groups/:id/messages"}}),r.chatProactiveAction=e(r.baseUrl+"chat/proactive_actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/proactive_actions/describe"},clone:{method:"post",url:r.baseUrl+"chat/proactive_actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCompany=e(r.baseUrl+"cm/companies/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/companies/describe"},clone:{method:"post",url:r.baseUrl+"cm/companies/:id/clone",params:{includeAll:"@includeAll"}},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/companies/:id/contacts"},getContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/companies/:id/contacts"}}),r.cmContact=e(r.baseUrl+"cm/contacts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/contacts/describe"},clone:{method:"post",url:r.baseUrl+"cm/contacts/:id/clone",params:{includeAll:"@includeAll"}},merge:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/merge"},bulkCreate:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/create_many"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/tags"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/hopper_finals"},getJscriptySessions:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/jscripty_sessions"},uploadCsv:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/csv"},upload:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload"},import:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/upload/:id"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/:id"},getJourney:{isArray:!1,method:"get",url:r.baseUrl+"cm/contacts/:id/journey"}}),r.cmHopper=e(r.baseUrl+"cm/hopper/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper/:id/clone",params:{includeAll:"@includeAll"}},getPreview:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/preview"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),r.cmHopperBlack=e(r.baseUrl+"cm/hopper_black/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_black/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_black/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperFinal=e(r.baseUrl+"cm/hopper_final/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_final/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_final/:id/clone",params:{includeAll:"@includeAll"}},countContactsQueueCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/voice/queue/countAttributes/:id"},countContactsIvrCampaignHopperFinal:{isArray:!0,method:"get",url:r.baseUrl+"cm/hopper_final/campaign/countAttributes/:id"},moveContactsQueueCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/queue/moveContacts/:id"},moveContactsIvrCampaignHopperFinal:{isArray:!0,method:"post",url:r.baseUrl+"cm/hopper_final/voice/campaign/moveContacts/:id"},checkContactHopper:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper_final/checkContactHopper"}}),r.cmHopperHistory=e(r.baseUrl+"cm/hopper_history/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/hopper_history/describe"},clone:{method:"post",url:r.baseUrl+"cm/hopper_history/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmCustomField=e(r.baseUrl+"cm/custom_fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/custom_fields/describe"},clone:{method:"post",url:r.baseUrl+"cm/custom_fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.action=e(r.baseUrl+"actions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"actions/describe"},clone:{method:"post",url:r.baseUrl+"actions/:id/clone",params:{includeAll:"@includeAll"}}}),r.automation=e(r.baseUrl+"automations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"automations/describe"},clone:{method:"post",url:r.baseUrl+"automations/:id/clone",params:{includeAll:"@includeAll"}},addConditions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/conditions"},getConditions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/conditions"},addActions:{isArray:!1,method:"post",url:r.baseUrl+"automations/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"automations/:id/actions"}}),r.cannedAnswer=e(r.baseUrl+"canned_answers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"canned_answers/describe"},clone:{method:"post",url:r.baseUrl+"canned_answers/:id/clone",params:{includeAll:"@includeAll"}}}),r.disposition=e(r.baseUrl+"dispositions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"dispositions/describe"},clone:{method:"post",url:r.baseUrl+"dispositions/:id/clone",params:{includeAll:"@includeAll"}}}),r.condition=e(r.baseUrl+"conditions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"conditions/describe"},clone:{method:"post",url:r.baseUrl+"conditions/:id/clone",params:{includeAll:"@includeAll"}}}),r.interval=e(r.baseUrl+"intervals/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"intervals/describe"},clone:{method:"post",url:r.baseUrl+"intervals/:id/clone",params:{includeAll:"@includeAll"}},addInterval:{isArray:!1,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals"},getIntervals:{isArray:!1,method:"get",url:r.baseUrl+"intervals/:id/sub_intervals"},addIntervals:{isArray:!0,method:"post",url:r.baseUrl+"intervals/:id/sub_intervals/create_many"}}),r.pause=e(r.baseUrl+"pauses/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"pauses/describe"},clone:{method:"post",url:r.baseUrl+"pauses/:id/clone",params:{includeAll:"@includeAll"}}}),r.cdr=e(r.baseUrl+"cdr/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cdr/describe"},clone:{method:"post",url:r.baseUrl+"cdr/:id/clone",params:{includeAll:"@includeAll"}}}),r.voiceQueuesLog=e(r.baseUrl+"voiceQueuesLog/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voiceQueuesLog/describe"},clone:{method:"post",url:r.baseUrl+"voiceQueuesLog/:id/clone",params:{includeAll:"@includeAll"}}}),r.schedule=e(r.baseUrl+"schedules/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"schedules/describe"},clone:{method:"post",url:r.baseUrl+"schedules/:id/clone",params:{includeAll:"@includeAll"}},run:{isArray:!1,method:"get",url:r.baseUrl+"schedules/:id/run"}}),r.sound=e(r.baseUrl+"sounds/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sounds/describe"},clone:{method:"post",url:r.baseUrl+"sounds/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"sounds/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},delete:{isArray:!1,method:"delete",url:r.baseUrl+"sounds/:id"}}),r.tag=e(r.baseUrl+"tags/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"tags/describe"},clone:{method:"post",url:r.baseUrl+"tags/:id/clone",params:{includeAll:"@includeAll"}}}),r.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/:id/clone",params:{includeAll:"@includeAll"}}}),r.template=e(r.baseUrl+"templates/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"templates/describe"},clone:{method:"post",url:r.baseUrl+"templates/:id/clone",params:{includeAll:"@includeAll"}}}),r.trigger=e(r.baseUrl+"triggers/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"triggers/describe"},clone:{method:"post",url:r.baseUrl+"triggers/:id/clone",params:{includeAll:"@includeAll"}},addAllCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/all_conditions"},addAnyCondition:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/any_conditions"},getAllConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/all_conditions"},getAnyConditions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/any_conditions"},addAction:{isArray:!1,method:"post",url:r.baseUrl+"triggers/:id/actions"},getActions:{isArray:!1,method:"get",url:r.baseUrl+"triggers/:id/actions"}}),r.variable=e(r.baseUrl+"variables/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"variables/describe"},clone:{method:"post",url:r.baseUrl+"variables/:id/clone",params:{includeAll:"@includeAll"}}}),r.integration=e(r.baseUrl+"integrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.integrationReport=e(r.baseUrl+"integrations/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/reports/describe"},clone:{method:"post",url:r.baseUrl+"integrations/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticCustomReport=e(r.baseUrl+"analytics/custom_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/custom_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/custom_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/custom_reports/:id/query"}}),r.analyticDefaultReport=e(r.baseUrl+"analytics/default_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/default_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/default_reports/:id/clone",params:{includeAll:"@includeAll"}},preview:{isArray:!0,method:"get",url:r.baseUrl+"analytics/default_reports/:id/preview"},run:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/run"},query:{isArray:!1,method:"get",url:r.baseUrl+"analytics/default_reports/:id/query"}}),r.analyticExtractedReport=e(r.baseUrl+"analytics/extracted_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/extracted_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/extracted_reports/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"analytics/extracted_reports/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.analyticMetric=e(r.baseUrl+"analytics/metrics/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/metrics/describe"},clone:{method:"post",url:r.baseUrl+"analytics/metrics/:id/clone",params:{includeAll:"@includeAll"}}}),r.analyticFieldReport=e(r.baseUrl+"analytics/field_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/field_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/field_reports/:id/clone",params:{includeAll:"@includeAll"}},bulkCreate:{method:"post",url:r.baseUrl+"analytics/field_reports/create_many",isArray:!0},bulkDestroy:{method:"delete",url:r.baseUrl+"analytics/field_reports/destroy_many",isArray:!0},addFields:{isArray:!0,method:"post",url:r.baseUrl+"analytics/field_reports/:id/create_many"}}),r.analyticTreeReport=e(r.baseUrl+"analytics/tree_reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"analytics/tree_reports/describe"},clone:{method:"post",url:r.baseUrl+"analytics/tree_reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSalesforceAccount=e(r.baseUrl+"integrations/salesforce/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/salesforce/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/accounts/:id/fields"}}),r.intSalesforceConfiguration=e(r.baseUrl+"integrations/salesforce/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/salesforce/configurations/:id/descriptions"}}),r.intSalesforceField=e(r.baseUrl+"integrations/salesforce/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/salesforce/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/salesforce/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intSugarcrmAccount=e(r.baseUrl+"integrations/sugarcrm/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/accounts/:id/fields"}}),r.intSugarcrmConfiguration=e(r.baseUrl+"integrations/sugarcrm/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/sugarcrm/configurations/:id/descriptions"}}),r.intSugarcrmField=e(r.baseUrl+"integrations/sugarcrm/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/sugarcrm/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/sugarcrm/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDeskAccount=e(r.baseUrl+"integrations/desk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/desk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/accounts/:id/fields"}}),r.intDeskConfiguration=e(r.baseUrl+"integrations/desk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/desk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/desk/configurations/:id/tags"}}),r.intDeskField=e(r.baseUrl+"integrations/desk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/desk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/desk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZohoAccount=e(r.baseUrl+"integrations/zoho/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zoho/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/accounts/:id/fields"}}),r.intZohoConfiguration=e(r.baseUrl+"integrations/zoho/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zoho/configurations/:id/descriptions"}}),r.intZohoField=e(r.baseUrl+"integrations/zoho/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zoho/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zoho/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intZendeskAccount=e(r.baseUrl+"integrations/zendesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/zendesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/accounts/:id/fields"}}),r.intZendeskConfiguration=e(r.baseUrl+"integrations/zendesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/zendesk/configurations/:id/tags"}}),r.intZendeskField=e(r.baseUrl+"integrations/zendesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/zendesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/zendesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshdeskAccount=e(r.baseUrl+"integrations/freshdesk/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshdesk/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/accounts/:id/fields"}}),r.intFreshdeskConfiguration=e(r.baseUrl+"integrations/freshdesk/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/descriptions"},getTags:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"},setTags:{isArray:!0,method:"post",url:r.baseUrl+"integrations/freshdesk/configurations/:id/tags"}}),r.intFreshdeskField=e(r.baseUrl+"integrations/freshdesk/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshdesk/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshdesk/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intVtigerAccount=e(r.baseUrl+"integrations/vtiger/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/vtiger/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/accounts/:id/fields"}}),r.intVtigerConfiguration=e(r.baseUrl+"integrations/vtiger/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/vtiger/configurations/:id/descriptions"}}),r.intVtigerField=e(r.baseUrl+"integrations/vtiger/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/vtiger/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/vtiger/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intServicenowAccount=e(r.baseUrl+"integrations/servicenow/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/servicenow/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/accounts/:id/fields"}}),r.intServicenowConfiguration=e(r.baseUrl+"integrations/servicenow/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/servicenow/configurations/:id/descriptions"}}),r.intServicenowField=e(r.baseUrl+"integrations/servicenow/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/servicenow/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/servicenow/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intDynamics365Account=e(r.baseUrl+"integrations/dynamics365/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/dynamics365/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/accounts/:id/fields"}}),r.intDynamics365Configuration=e(r.baseUrl+"integrations/dynamics365/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/configurations/:id/clone",params:{includeAll:"@includeAll"}},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/fields"},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/dynamics365/configurations/:id/descriptions"}}),r.intDynamics365Field=e(r.baseUrl+"integrations/dynamics365/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/dynamics365/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/dynamics365/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.intFreshsalesAccount=e(r.baseUrl+"integrations/freshsales/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/accounts/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/clone",params:{includeAll:"@includeAll"}},getConfigurations:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},addConfiguration:{isArray:!1,method:"post",url:r.baseUrl+"integrations/freshsales/accounts/:id/configurations"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/accounts/:id/fields"}}),r.intFreshsalesConfiguration=e(r.baseUrl+"integrations/freshsales/configurations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/configurations/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/configurations/:id/clone",params:{includeAll:"@includeAll"}},getSubjects:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/subjects"},getDescriptions:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/descriptions"},getFields:{isArray:!1,method:"get",url:r.baseUrl+"integrations/freshsales/configurations/:id/fields"}}),r.intFreshsalesField=e(r.baseUrl+"integrations/freshsales/fields/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"integrations/freshsales/fields/describe"},clone:{method:"post",url:r.baseUrl+"integrations/freshsales/fields/:id/clone",params:{includeAll:"@includeAll"}}}),r.network=e(r.baseUrl+"networks/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"networks/describe"},clone:{method:"post",url:r.baseUrl+"networks/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatQueueReport=e(r.baseUrl+"chat/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatInternalMessage=e(r.baseUrl+"chat/internal/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/internal/messages/describe"},clone:{method:"post",url:r.baseUrl+"chat/internal/messages/:id/clone",params:{includeAll:"@includeAll"}},getUsers:{isArray:!1,method:"get",url:r.baseUrl+"chat/internal/messages/users"}}),r.jscriptyAnswerReport=e(r.baseUrl+"jscripty/answers/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/answers/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/answers/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyQuestionReport=e(r.baseUrl+"jscripty/questions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/questions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/questions/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptySessionReport=e(r.baseUrl+"jscripty/sessions/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/sessions/reports/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/sessions/reports/:id/clone",params:{includeAll:"@includeAll"}},getQuestions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/sessions/reports/:id/questions"}}),r.smsQueueReport=e(r.baseUrl+"sms/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReport=e(r.baseUrl+"square/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareReportDetail=e(r.baseUrl+"square/details/reports/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/details/reports/describe"},clone:{method:"post",url:r.baseUrl+"square/details/reports/:id/clone",params:{includeAll:"@includeAll"}}}),r.jscriptyProject=e(r.baseUrl+"jscripty/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"jscripty/projects/describe"},clone:{method:"post",url:r.baseUrl+"jscripty/projects/:id/clone",params:{includeAll:"@includeAll"}},getSessions:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/sessions"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/answers"},getSummary:{isArray:!1,method:"get",url:r.baseUrl+"jscripty/projects/:id/summary",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.setting=e(r.baseUrl+"settings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"settings/describe"},clone:{method:"post",url:r.baseUrl+"settings/:id/clone",params:{includeAll:"@includeAll"}},addLogo:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo"},addLogoLogin:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/logo_login"},getLogo:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo"},getLogoLogin:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/logo_login"},gdpr:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/gdpr"},addPreferred:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/preferred"},getPreferred:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/preferred"},addFavicon:{isArray:!1,method:"post",url:r.baseUrl+"settings/:id/favicon"},getFavicon:{isArray:!1,method:"get",url:r.baseUrl+"settings/:id/favicon"},getDate:{isArray:!1,method:"get",url:r.baseUrl+"settings/now"}}),r.squareOdbc=e(r.baseUrl+"square/odbc/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/odbc/describe"},clone:{method:"post",url:r.baseUrl+"square/odbc/:id/clone",params:{includeAll:"@includeAll"}},test:{isArray:!1,method:"get",url:r.baseUrl+"square/odbc/:id/test"}}),r.squareProject=e(r.baseUrl+"square/projects/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/projects/describe"},clone:{method:"post",url:r.baseUrl+"square/projects/:id/clone",params:{includeAll:"@includeAll"}}}),r.squareRecording=e(r.baseUrl+"square/recordings/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/recordings/describe"},clone:{method:"post",url:r.baseUrl+"square/recordings/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"square/recordings/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.squareMessage=e(r.baseUrl+"square/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"square/messages/describe"},clone:{method:"post",url:r.baseUrl+"square/messages/:id/clone",params:{includeAll:"@includeAll"}}}),r.team=e(r.baseUrl+"teams/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"teams/describe"},clone:{method:"post",url:r.baseUrl+"teams/:id/clone",params:{includeAll:"@includeAll"}},getQueues:{isArray:!0,method:"get",url:r.baseUrl+"teams/:id/queues"},addQueues:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/queues"},removeQueues:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/queues"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"teams/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"teams/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"teams/:id/users"}}),r.license=e(r.baseUrl+"license/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"license/describe"},clone:{method:"post",url:r.baseUrl+"license/:id/clone",params:{includeAll:"@includeAll"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.campaign=e(r.baseUrl+"campaigns/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"campaigns/describe"},clone:{method:"post",url:r.baseUrl+"campaigns/:id/clone",params:{includeAll:"@includeAll"}},getHoppers:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hoppers"},getHopperHistories:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_histories"},getHopperFinals:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_finals"},getHopperBlacks:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/hopper_black"},getLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/lists"},addLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/lists"},removeLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/lists"},getBlackLists:{isArray:!1,method:"get",url:r.baseUrl+"campaigns/:id/blacklists"},addBlackLists:{isArray:!0,method:"post",url:r.baseUrl+"campaigns/:id/blacklists"},removeBlackLists:{isArray:!0,method:"delete",url:r.baseUrl+"campaigns/:id/blacklists"}}),r.migration=e(r.baseUrl+"migrations/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"migrations/describe"},clone:{method:"post",url:r.baseUrl+"migrations/:id/clone",params:{includeAll:"@includeAll"}}}),r.attachment=e(r.baseUrl+"attachments/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"attachments/describe"},clone:{method:"post",url:r.baseUrl+"attachments/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"attachments/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.plugin=e(r.baseUrl+"plugins/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"plugins/describe"},clone:{method:"post",url:r.baseUrl+"plugins/:id/clone",params:{includeAll:"@includeAll"}},download:{isArray:!1,method:"get",url:r.baseUrl+"plugins/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},upload:{isArray:!1,method:"post",url:r.baseUrl+"plugins/"},delete:{isArray:!1,method:"delete",url:r.baseUrl+"plugins/:id"},webhookGet:{isArray:!1,method:"get",url:r.baseUrl+"plugins/webhook"},webhookPost:{isArray:!1,method:"post",url:r.baseUrl+"plugins/webhook"}}),r.mailTransferReport=e(r.baseUrl+"mail/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"mail/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"mail/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.chatTransferReport=e(r.baseUrl+"chat/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"chat/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"chat/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.faxTransferReport=e(r.baseUrl+"fax/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"fax/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"fax/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.openchannelTransferReport=e(r.baseUrl+"openchannel/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"openchannel/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"openchannel/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.smsTransferReport=e(r.baseUrl+"sms/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"sms/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"sms/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmList=e(r.baseUrl+"cm/lists/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm/lists/describe"},clone:{method:"post",url:r.baseUrl+"cm/lists/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/dispositions"},addContacts:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/contacts"},getContacts:{isArray:!0,method:"get",url:r.baseUrl+"cm/lists/:id/contacts"},getContactsCsv:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/contacts/csv",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}},addCustomField:{isArray:!1,method:"post",url:r.baseUrl+"cm/lists/:id/fields"},getCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/fields"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_fields"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"cm/lists/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"cm/lists/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/:id/users"}}),r.voicePrefix=e(r.baseUrl+"voice/prefixes/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"voice/prefixes/describe"},clone:{method:"post",url:r.baseUrl+"voice/prefixes/:id/clone",params:{includeAll:"@includeAll"}},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/users"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"voice/prefixes/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"voice/prefixes/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"voice/prefixes/:id/teams"}}),r.userProfile=e(r.baseUrl+"userProfiles/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfiles/describe"},clone:{method:"post",url:r.baseUrl+"userProfiles/:id/clone",params:{includeAll:"@includeAll"}},addSections:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/sections"},removeSections:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/sections"},getSections:{isArray:!0,method:"get",url:r.baseUrl+"userProfiles/:id/sections"},addResources:{isArray:!0,method:"post",url:r.baseUrl+"userProfiles/:id/resources"},removeResources:{isArray:!1,method:"delete",url:r.baseUrl+"userProfiles/:id/resources"},getResources:{isArray:!1,method:"get",url:r.baseUrl+"userProfiles/:id/resources"}}),r.userProfileSection=e(r.baseUrl+"userProfile/sections/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/sections/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/sections/:id/clone",params:{includeAll:"@includeAll"}}}),r.userProfileResource=e(r.baseUrl+"userProfile/resources/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userProfile/resources/describe"},clone:{method:"post",url:r.baseUrl+"userProfile/resources/:id/clone",params:{includeAll:"@includeAll"}}}),r.userNotification=e(r.baseUrl+"userNotifications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"userNotifications/describe"},clone:{method:"post",url:r.baseUrl+"userNotifications/:id/clone",params:{includeAll:"@includeAll"}},sendUserNotification:{isArray:!1,method:"post",url:r.baseUrl+"userNotifications/"}}),r.whatsappAccount=e(r.baseUrl+"whatsapp/accounts/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/accounts/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/accounts/:id/clone",params:{includeAll:"@includeAll"}},addDisposition:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},getDispositions:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},removeDispositions:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/dispositions"},addAnswer:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},getAnswers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},removeAnswers:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/canned_answers"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/accounts/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/users"},addApplications:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/applications"},getApplications:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/accounts/:id/applications"},notify:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/notify"},send:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/accounts/:id/send"}}),r.whatsappApplication=e(r.baseUrl+"whatsapp/applications/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/applications/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/applications/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappInteraction=e(r.baseUrl+"whatsapp/interactions/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/interactions/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/interactions/:id/clone",params:{includeAll:"@includeAll"}},addMessage:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/messages"},getMessages:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/messages"},addTags:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/interactions/:id/tags"},removeTags:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/interactions/:id/tags"},download:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/interactions/:id/download",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),r.whatsappMessage=e(r.baseUrl+"whatsapp/messages/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/messages/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/messages/:id/clone",params:{includeAll:"@includeAll"}},accept:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/accept"},reject:{isArray:!1,method:"put",url:r.baseUrl+"whatsapp/messages/:id/reject"},status:{isArray:!1,method:"post",url:r.baseUrl+"whatsapp/messages/:id/status"}}),r.whatsappQueueReport=e(r.baseUrl+"whatsapp/reports/queue/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/queue/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/queue/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappTransferReport=e(r.baseUrl+"whatsapp/reports/transfer/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/reports/transfer/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/reports/transfer/:id/clone",params:{includeAll:"@includeAll"}}}),r.whatsappQueue=e(r.baseUrl+"whatsapp/queues/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"whatsapp/queues/describe"},clone:{method:"post",url:r.baseUrl+"whatsapp/queues/:id/clone",params:{includeAll:"@includeAll"}},getMembers:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/members"},getTeams:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/teams"},addTeams:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/teams"},removeTeams:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/teams"},addAgents:{isArray:!0,method:"post",url:r.baseUrl+"whatsapp/queues/:id/users"},removeAgents:{isArray:!1,method:"delete",url:r.baseUrl+"whatsapp/queues/:id/users"},getAgents:{isArray:!1,method:"get",url:r.baseUrl+"whatsapp/queues/:id/users"}}),r.cloudProvider=e(r.baseUrl+"cloudProviders/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cloudProviders/describe"},clone:{method:"post",url:r.baseUrl+"cloudProviders/:id/clone",params:{includeAll:"@includeAll"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),r.realtime=e(r.baseUrl+"realtime",{},{getAgents:{isArray:!1,method:"get",url:r.baseUrl+"realtime/agents"},getQueues:{isArray:!1,method:"get",url:r.baseUrl+"realtime/queues"}}),r.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),r}e.$inject=["$resource","userProfileManager"],angular.module("motion").factory("api",e)}(),function(){"use strict";function e(e,n){n.setConfig({position:"top-right",sound:!1,html:!0,theme:"material"}),e.useLoader("$translatePartialLoader",{urlTemplate:"{part}/i18n/{lang}.json"}),e.preferredLanguage("en"),e.fallbackLanguage("en"),e.useSanitizeValueStrategy(null)}e.$inject=["$translateProvider","toastyConfigProvider"],angular.module("motion").config(e)}(),function(){"use strict";angular.module("motion")}(),function(){"use strict";function e(e,n,t,a){var i=this;i.themes=e.themes,i.direction="ltr";var s=t.get("motion.language");s&&(n.use(s),0<=["ar","fa","he"].indexOf(s)&&a.setting.get({id:1}).$promise.then(function(e){e&&e.rtlSupport&&(i.direction="rtl")}).catch(function(e){e&&toasty.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})}))}e.$inject=["motionTheming","$translate","$cookies","api"],angular.module("motion").controller("IndexController",e)}(),function(){"use strict";function e(a,i){return function(e){var n=new Date,t=new Date(e);return t.getDate()===n.getDate()&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?a("date")(t.getTime(),"shortTime"):t.getDate()===n.getDate()-1&&t.getMonth()===n.getMonth()&&t.getFullYear()===n.getFullYear()?i.instant("DASHBOARDS.YESTERDAY")+" "+a("date")(t.getTime(),"shortTime"):a("date")(t.getTime(),"MMM d, y h:mm a")}}function n(e){return{Today:e.instant("DASHBOARDS.TODAY"),Yesterday:e.instant("DASHBOARDS.YESTERDAY"),"This Week":e.instant("DASHBOARDS.THIS_WEEK"),"Last Week":e.instant("DASHBOARDS.LAST_WEEK"),"This Month":e.instant("DASHBOARDS.THIS_MONTH"),"Last Month":e.instant("DASHBOARDS.LAST_MONTH"),"This Year":e.instant("DASHBOARDS.THIS_YEAR"),"Last Year":e.instant("DASHBOARDS.LAST_YEAR"),January:e.instant("DASHBOARDS.JANUARY"),February:e.instant("DASHBOARDS.FEBRUARY"),March:e.instant("DASHBOARDS.MARCH"),April:e.instant("DASHBOARDS.APRIL"),May:e.instant("DASHBOARDS.MAY"),June:e.instant("DASHBOARDS.JUNE"),July:e.instant("DASHBOARDS.JULY"),August:e.instant("DASHBOARDS.AUGUST"),September:e.instant("DASHBOARDS.SEPTEMBER"),October:e.instant("DASHBOARDS.OCTOBER"),November:e.instant("DASHBOARDS.NOVEMBER"),December:e.instant("DASHBOARDS.DECEMBER"),Mon:e.instant("DASHBOARDS.MON"),Tue:e.instant("DASHBOARDS.TUE"),Wed:e.instant("DASHBOARDS.WED"),Thu:e.instant("DASHBOARDS.THU"),Fri:e.instant("DASHBOARDS.FRI"),Sat:e.instant("DASHBOARDS.SAT"),Sun:e.instant("DASHBOARDS.SUN")}}e.$inject=["$filter","$translate"],n.$inject=["$translate"],angular.module("motion").filter("limitObjectFromTo",function(){return function(e,n,t){var a,i={},s=0;for(a in e)if(t<=s&&(i[a]=e[a]),++s===t+n)break;return i}}).filter("formatdate",e).factory("IndexFactory",function(){var e=[{value:"jan"},{value:"feb"},{value:"mar"},{value:"apr"},{value:"may"},{value:"jun"},{value:"jul"},{value:"aug"},{value:"sep"},{value:"oct"},{value:"nov"},{value:"dec"}],n=[{value:"1"},{value:"2"},{value:"3"},{value:"4"},{value:"5"},{value:"6"},{value:"7"},{value:"8"},{value:"9"},{value:"10"},{value:"11"},{value:"12"}],t=[{value:"mon"},{value:"tue"},{value:"wed"},{value:"thu"},{value:"fri"},{value:"sat"},{value:"sun"}],a=[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31];return{getMonthName:function(){return e},getMonthNumber:function(){return n},getDaysOfWeek:function(){return t},getDaysOfMonth:function(){return a}}}).factory("dateFilterLocalizationFactory",n).factory("jscookie",function(){return Cookies}).factory("Sequence",function(){return{enqueue:function(e){this.tail=this.tail?this.tail.finally(e):e()}}})}(),function(){"use strict";function e(e,n,t){var a;t.html5Mode(!0),n.otherwise("/dashboards/general"),angular.injector(["ngCookies"]).invoke(["$cookies",function(e){a=e}]);var i=a.get("motion.layoutStyle")||"verticalNavigation",s={verticalNavigation:{main:"app/core/layouts/vertical-navigation.html",toolbar:"app/toolbar/layouts/vertical-navigation/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html",header:"app/header/layouts/vertical-navigation/header.html",footer:"app/footer/layouts/vertical-navigation/footer.html"},verticalNavigationFullwidthToolbar:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation/navigation.html"},verticalNavigationFullwidthToolbar2:{main:"app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",toolbar:"app/toolbar/layouts/vertical-navigation-fullwidth-toolbar-2/toolbar.html",navigation:"app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html"},horizontalNavigation:{main:"app/core/layouts/horizontal-navigation.html",toolbar:"app/toolbar/layouts/horizontal-navigation/toolbar.html",navigation:"app/navigation/layouts/horizontal-navigation/navigation.html"},contentOnly:{main:"app/core/layouts/content-only.html",toolbar:"",navigation:""},contentWithToolbar:{main:"app/core/layouts/content-with-toolbar.html",toolbar:"app/toolbar/layouts/content-with-toolbar/toolbar.html",navigation:""}};e.state("app",{abstract:!0,views:{"main@":{templateUrl:s[i].main,controller:"MainController as vm"},"toolbar@app":{templateUrl:s[i].toolbar,controller:"ToolbarController as vm"},"navigation@app":{templateUrl:s[i].navigation,controller:"NavigationController as vm"},"quickPanel@app":{templateUrl:"app/quick-panel/quick-panel.html",controller:"QuickPanelController as vm"},"header@app":{templateUrl:s[i].header,controller:"HeaderController as vm"},"footer@app":{templateUrl:s[i].footer,controller:"FooterController as vm"}},resolve:{license:["apiResolver",function(e){return e.resolve("license@get")}],setting:["apiResolver","settingsManager",function(e,n){return e.resolve("setting@get",{id:1}).then(function(e){return n.set(e),e})}]}})}e.$inject=["$stateProvider","$urlRouterProvider","$locationProvider"],angular.module("motion").config(e)}(),function(){"use strict";function e(e,n){e.onStart({},n.showLoadingIndicator),e.onFinish({},n.hideLoadingIndicator)}e.$inject=["$transitions","LoadingIndicatorService"],angular.module("motion").run(e)}(),function(){"use strict";function e(a,e){var i,o={};function s(){a.$broadcast("socket:connect"),i&&i.connected||(i=io({query:e.getCurrentUser()?"id="+e.getCurrentUser().id:void 0,transports:["websocket","polling"]})).once("disconnect",n)}function n(e){i.once("connect",s),"logout"===e?i.removeAllListeners():a.$broadcast("socket:disconnect"),i&&i.connected&&i.disconnect()}function r(e,n,t){o[e]||(o[e]=[]),o[e].push({wrapper:n,fn:t})}return{connect:s,disconnect:n,getListeners:function(e){return e?o[e]:o},on:function(e,n){n=n||angular.noop,i||s();var t=function(){var e=arguments;a.$applyAsync(function(){n.apply(i,e)})};r(e,t,n),i.on(e,t)},onWithoutApply:function(e,n){n=n||angular.noop,i||s();var t=function(){n.apply(i,arguments)};r(e,t,n),i.on(e,t)},emit:function(e,n,t){t=t||angular.noop,i||s(),i.emit(e,n,function(){var e=arguments;a.$applyAsync(function(){t.apply(i,e)})})},removeAllListeners:function(e){var n;i||s(),i.removeAllListeners(e),n=e,_.isEmpty(o[n])||delete o[n]},removeListener:function(e,n){i||s();var t=function(e,n){var t=o[e];if(!_.isEmpty(t))for(var a=0;a<t.length;a++){var i=t[a];if(i.fn===n){var s=i.wrapper;return t.splice(a,1),s}}}(e,n);i.removeListener(e,t)}}}e.$inject=["$rootScope","Auth"],angular.module("motion").factory("socket",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r){var l=this;l.progresslogin=!1,l.googleSsoEnabled=!1,l.adSsoEnabled=!1,l.login=function(){return l.progresslogin=!0,l.message="",s.login(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.loginOauth=function(e){l.message="",t.location.href=s.loginSSO(e)},l.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(l.form).then(function(){return n.go("app.dashboards.general")}).catch(function(e){l.message=e.data?e.data.message:e.message}).finally(function(){l.progresslogin=!1})},l.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.token),i.user.get({id:n.params.userId}).$promise.then(function(e){e&&(s.setCurrentUser(e),n.go("app.dashboards.general"))}).finally(function(){l.progresslogin=!1});s.isLoggedIn()&&n.go("app.dashboards.general")}l.googleSsoEnabled=o.googleSsoEnabled,l.adSsoEnabled=o.adSsoEnabled},l.onInit()}e.$inject=["$state","$window","$cookies","$timeout","api","Auth","setting","jscookie"],angular.module("app.login").controller("LoginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_EXTRACTEDREPORT",g.extractedReport=angular.copy(l),g.extractedReports=r,g.newExtractedReport=!1,g.extractedReport||(g.extractedReport={},g.title="ANALYTICS.NEW_EXTRACTEDREPORT",g.newExtractedReport=!0),g.addNewExtractedReport=function(){g.errors=[],d.analyticExtractedReport.save(g.extractedReport).$promise.then(function(e){g.extractedReports.unshift(e.toJSON()),o.success({title:"ExtractedReport properly created",msg:g.extractedReport.name?g.extractedReport.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveExtractedReport=function(){g.errors=[],d.analyticExtractedReport.update({id:g.extractedReport.id},g.extractedReport).$promise.then(function(e){var n=_.find(g.extractedReports,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ExtractedReport properly saved!",msg:g.extractedReport.name?g.extractedReport.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteExtractedReport=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The extractedReport will be deleted.").ariaLabel("Delete ExtractedReport").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticExtractedReport.delete({id:g.extractedReport.id}).$promise.then(function(){_.remove(g.extractedReports,{id:g.extractedReport.id}),o.success({title:"ExtractedReport properly deleted!",msg:(g.extractedReport.name||"extractedReport")+" has been deleted!"}),v(g.extractedReport)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticExtractedReport.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","extractedReports","extractedReport","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditExtractedReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.extractedReports=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="extractedReports",f.listOrder="",f.listOrderAsc=null,f.selectedExtractedReports=[],f.query={fields:"createdAt,updatedAt,id,name,basename,savename,type,startDate,endDate,status,output,reportId,reportType",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{extractedReport:e,extractedReports:f.extractedReports.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.analyticExtractedReport.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.savename;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticExtractedReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("extractedReport")+"?").htmlContent("<b>"+(e.name||"extractedReport")+"</b> will be deleted.").ariaLabel("delete extractedReport").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getExtractedReports=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticExtractedReport.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ExtractedReports",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditExtractedReport=function(e,n){i.show({controller:"CreateOrEditExtractedReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/extractedReports/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{extractedReport:n,extractedReports:f.extractedReports.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteExtractedReport=y,f.exportSelectedExtractedReports=function(){var e=angular.copy(f.selectedExtractedReports);return f.selectedExtractedReports=[],e},f.deleteSelectedExtractedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected extractedReports?").htmlContent("<b>"+f.selectedExtractedReports.length+" selected</b> will be deleted.").ariaLabel("delete ExtractedReports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedExtractedReports.forEach(function(e){y(e)}),f.selectedExtractedReports=[]})},f.deselectExtractedReports=function(){f.selectedExtractedReports=[]},f.selectAllExtractedReports=function(){f.selectedExtractedReports=f.extractedReports.rows};var b=!0,A=1;function E(e){f.extractedReports=e||{count:0,rows:[]}}function y(e){m.analyticExtractedReport.delete({id:e.id}).$promise.then(function(){_.remove(f.extractedReports.rows,{id:e.id}),f.extractedReports.count-=1,f.extractedReports.rows.length||f.getExtractedReports(),p.success({title:_.startCase("ExtractedReport")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticExtractedReport"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticExtractedReport",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getExtractedReports())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","extractedReports","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("ExtractedReportsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="ANALYTICS.EDIT_METRIC",g.metric=angular.copy(l),g.metrics=r,g.newMetric=!1,g.metric||(g.metric={table:"report_agent"},g.title="ANALYTICS.NEW_METRIC",g.newMetric=!0),g.addNewMetric=function(){g.errors=[],d.analyticMetric.save(g.metric).$promise.then(function(e){g.metrics.unshift(e.toJSON()),o.success({title:"Metric properly created",msg:g.metric.name?g.metric.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMetric=function(){g.errors=[],d.analyticMetric.update({id:g.metric.id},g.metric).$promise.then(function(e){var n=_.find(g.metrics,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Metric properly saved!",msg:g.metric.name?g.metric.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMetric=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The metric will be deleted.").ariaLabel("Delete Metric").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.analyticMetric.delete({id:g.metric.id}).$promise.then(function(){_.remove(g.metrics,{id:g.metric.id}),o.success({title:"Metric properly deleted!",msg:(g.metric.name||"metric")+" has been deleted!"}),v(g.metric)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.analyticMetric.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticMetric.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","metrics","metric","api","Auth","license","setting","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditMetricDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.metrics=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="metrics",f.listOrder="",f.listOrderAsc=null,f.selectedMetrics=[],f.query={fields:"createdAt,updatedAt,id,name,table,metric,description",sort:"-updatedAt",limit:10,page:1},f.arraytable=_.keyBy([{option:"Agent Report",value:"'report_agent'"},{option:"Call Report",value:"'report_call'"},{option:"CDR",value:"'cdr'"},{option:"Chat Website",value:"'chat_websites'"},{option:"Chat Interaction",value:"'chat_interactions'"},{option:"Chat Messages",value:"'chat_messages'"},{option:"Chat Offline Messages",value:"'chat_offline_messages'"},{option:"Chat Queues",value:"'chat_queues'"},{option:"Chat Report Queue",value:"'report_chat_queue'"},{option:"Chat Report Transfer",value:"'report_chat_transfer'"},{option:"Companies",value:"'cm_companies'"},{option:"Call transfer report",value:"'report_call_transfer'"},{option:"Contacts",value:"'cm_contacts'"},{option:"CSquare Report",value:"'report_square'"},{option:"CSquare Details Report",value:"'report_square_details'"},{option:"Dial Report",value:"'report_dial'"},{option:"Dialer Hopper Processing",value:"'cm_hopper'"},{option:"Dialer Hopper Logs",value:"'cm_hopper_history'"},{option:"Dialer Hopper Final",value:"'cm_hopper_final'"},{option:"Email Account",value:"'mail_accounts'"},{option:"Email Interaction",value:"'mail_interactions'"},{option:"Email Messages",value:"'mail_messages'"},{option:"Email Queues",value:"'mail_queues'"},{option:"Email Report Queue",value:"'report_mail_queue'"},{option:"Email Report Transfer",value:"'report_mail_transfer'"},{option:"Fax Account",value:"'fax_accounts'"},{option:"Fax Interaction",value:"'fax_interactions'"},{option:"Fax Messages",value:"'fax_messages'"},{option:"Fax Queues",value:"'fax_queues'"},{option:"Fax Report Queue",value:"'report_fax_queue'"},{option:"Fax Report Transfer",value:"'report_fax_transfer'"},{option:"Jscripty Sessions",value:"'report_jscripty_sessions'"},{option:"Jscripty Questions",value:"'report_jscripty_questions'"},{option:"Jscripty Answers",value:"'report_jscripty_answers'"},{option:"Lists",value:"'cm_lists'"},{option:"Member Report",value:"'report_member'"},{option:"Openchannel Account",value:"'openchannel_accounts'"},{option:"Openchannel Interaction",value:"'openchannel_interactions'"},{option:"Openchannel Messages",value:"'openchannel_messages'"},{option:"Openchannel Queues",value:"'openchannel_queues'"},{option:"Openchannel Report Queue",value:"'report_openchannel_queue'"},{option:"Openchannel Report Transfer",value:"'report_openchannel_transfer'"},{option:"Queue Report",value:"'report_queue'"},{option:"SMS Account",value:"'sms_accounts'"},{option:"SMS Interaction",value:"'sms_interactions'"},{option:"SMS Messages",value:"'sms_messages'"},{option:"SMS Queues",value:"'sms_queues'"},{option:"SMS Report Queue",value:"'report_sms_queue'"},{option:"SMS Report Transfer",value:"'report_sms_transfer'"},{option:"Users",value:"'users'"},{option:"Voice Recordings",value:"'voice_recordings'"},{option:"Whatsapp Account",value:"'whatsapp_accounts'"},{option:"Whatsapp Interaction",value:"'whatsapp_interactions'"},{option:"Whatsapp Messages",value:"'whatsapp_messages'"},{option:"Whatsapp Queues",value:"'whatsapp_queues'"},{option:"Whatsapp Report Queue",value:"'report_whatsapp_queue'"},{option:"Whatsapp Report Transfer",value:"'report_whatsapp_transfer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{metric:e,metrics:f.metrics.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("metric")+"?").htmlContent("<b>"+(e.name||"metric")+"</b> will be deleted.").ariaLabel("delete metric").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMetrics=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.analyticMetric.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Metrics",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMetric=function(e,n){i.show({controller:"CreateOrEditMetricDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/metrics/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{metric:n,metrics:f.metrics.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMetric=y,f.exportSelectedMetrics=function(){var e=angular.copy(f.selectedMetrics);return f.selectedMetrics=[],e},f.deleteSelectedMetrics=function(e){var n=i.confirm().title("Are you sure want to delete the selected metrics?").htmlContent("<b>"+f.selectedMetrics.length+" selected</b> will be deleted.").ariaLabel("delete Metrics").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMetrics.forEach(function(e){y(e)}),f.selectedMetrics=[]})},f.deselectMetrics=function(){f.selectedMetrics=[]},f.selectAllMetrics=function(){f.selectedMetrics=f.metrics.rows};var b=!0,A=1;function E(e){f.metrics=e||{count:0,rows:[]}}function y(e){m.analyticMetric.delete({id:e.id}).$promise.then(function(){_.remove(f.metrics.rows,{id:e.id}),f.metrics.count-=1,f.metrics.rows.length||f.getMetrics(),p.success({title:_.startCase("Metric")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEanalyticMetric"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEanalyticMetric",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMetrics())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","metrics","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.analytics").controller("MetricsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o){var r=this;function l(){n.hide()}r.errors=[],r.report=angular.copy(t),r.report.name+="-copy",r.treeCustomData=o,r.treeCustomConfig={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},r.treeCustomEvents={select_node:function(e,n){r.currentNode=n.node}},r.copyReport=function(){var t;r.errors=[],i.analyticCustomReport.save({name:r.report.name,description:r.report.description,table:r.report.table,conditions:r.report.conditions,joins:r.report.joins,parent:r.currentNode.id}).$promise.then(function(e){t=e,a.success({title:"Report properly copied!",msg:r.report.name?r.report.name+" has been copied!":""});var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=r.report.id,i.analyticFieldReport.get(n).$promise}).then(function(e){var e=_.map(e.rows,function(e){return _.extend({},e,{CustomReportId:t.id})});return i.analyticFieldReport.bulkCreate(e).$promise}).then(function(){a.success({title:"Fields copied!",msg:"Fields has been copied!"}),l()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:COPYREPORT",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","treeCustomData"],angular.module("app.analytics").controller("CopyReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){n.hide()}c.errors=[],c.joinTables=[],c.title="ANALYTICS.EDIT_REPORT",c.crudPermissions=d,c.report=angular.copy(i),c.reports=a,c.newReport=!1,c.tables=l.getMap(),c.joinTypes=[{key:"join",value:"Join"},{key:"left_join",value:"Left Join"},{key:"right_join",value:"Right Join"},{key:"cross_join",value:"Cross Join"}],c.report||(c.report={name:"",table:"report_agent",description:"",parent:r.id},c.title="ANALYTICS.NEW_REPORT",c.newReport=!0),c.addNewReport=function(){c.errors=[],c.report.joins=_.map(c.joinTables||[],function(e){return{parentKey:e.parentKey,foreignTable:e.name,foreignKey:e.foreignKey,type:e.type.toLowerCase()}}),c.report.joins=JSON.stringify(c.report.joins),s[o].save(c.report).$promise.then(function(e){c.reports.unshift(e),t.success({title:"Report properly created",msg:c.report.name?c.report.name+" has been created!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.save"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveReport=function(){c.errors=[],s[o].update({id:c.report.id},c.report).$promise.then(function(e){var n=_.find(c.reports,{id:e.id});n&&_.merge(n,e),t.success({title:"Report properly saved!",msg:c.report.name?c.report.name+" has been saved!":""}),m()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticReport.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteReport=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The report will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){s[o].delete({id:c.report.id}).$promise.then(function(){_.remove(c.reports,{id:c.report.id}),t.success({title:"Report properly deleted!",msg:c.report.name?c.report.name+" has been deleted!":""}),m()}).catch(function(e){c.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReport.delete"}]})},function(){})},c.closeDialog=m,c.selectedTableChange=function(e){e&&(delete c.selectedItem,c.joinTables.push(e))},c.removeJoin=function(e){c.joinTables.splice(e,1)},c.getFields=function(n,t,e){var a=_.find(c.tables,{name:e});a&&a.api&&s[a.api].describe().$promise.then(function(e){n[t]=_.difference(_.keys(e),["$promise","$resolved"])}).catch(function(e){console.error(e)})}}e.$inject=["$location","$mdDialog","toasty","reports","report","api","apiName","currentNode","describeTable","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportDialogController",e)}(),function(){"use strict";function e(i,s,o,e){var r=this;r.report={},r.conditions=e.getConditions,r.init=function(e,n){r.report=e,r.report.condition=angular.fromJson(e.conditions)||{group:{operator:"AND",rules:[]}},r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1};for(var t=0;t<r.report.condition.group.rules.length;t++)if(r.report.condition.group.rules[t].field){var a=r.report.condition.group.rules[t].field.split(".");1===a.length&&(r.report.condition.group.rules[t].field=r.report.table+"."+r.report.condition.group.rules[t].field)}s.getColumns(r.report.table).then(function(e){r.columns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt"])}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.addCondition=function(e){e.unshift({condition:"=",field:"",value:""})},r.addGroup=function(e){e.push({group:{operator:"AND",rules:[]}})},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the item?").htmlContent("The item will be deleted.").ariaLabel("delete item").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){e.splice(n,1)},function(){console.log("CANCEL")})},r.isValueByCondition=function(e){return!_.includes(["IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"],e)}}e.$inject=["$mdDialog","describeTable","toasty","sqlUtil"],angular.module("app.analytics").controller("ReportConditionsController",e)}(),function(){"use strict";function e(a){var i={report_call_transfer:"voiceTransferReport",cm_companies:"cmCompany",cm_contacts:"cmContact",cm_hopper:"cmHopper",cm_hopper_final:"cmHopperFinal",cm_hopper_history:"cmHopperHistory",cm_lists:"cmList",chat_websites:"chatWebsite",chat_queues:"chatQueue",chat_interactions:"chatInteraction",chat_messages:"chatMessage",chat_offline_messages:"chatOfflineMessage",report_chat_queue:"chatQueueReport",report_chat_transfer:"chatTransferReport",mail_accounts:"mailAccount",mail_queues:"mailQueue",mail_interactions:"mailInteraction",mail_messages:"mailMessage",report_mail_queue:"mailQueueReport",report_mail_transfer:"mailTransferReport",openchannel_accounts:"openchannelAccount",openchannel_queues:"openchannelQueue",openchannel_interactions:"openchannelInteraction",openchannel_messages:"openchannelMessage",report_openchannel_queue:"openchannelQueueReport",report_openchannel_transfer:"openchannelTransferReport",sms_accounts:"smsAccount",sms_queues:"smsQueue",sms_interactions:"smsInteraction",sms_messages:"smsMessage",report_sms_queue:"smsQueueReport",report_sms_transfer:"smsTransferReport",fax_accounts:"faxAccount",fax_queues:"faxQueue",fax_interactions:"faxInteraction",fax_messages:"faxMessage",report_fax_transfer:"faxTransferReport",report_fax_queue:"faxQueueReport",report_call:"voiceCallReport",report_agent:"voiceAgentReport",report_square:"squareReport",report_member:"memberReport",report_queue:"voiceQueueReport",report_square_details:"squareReportDetail",report_dial:"voiceDialReport",report_jscripty_sessions:"jscriptySessionReport",report_jscripty_questions:"jscriptyQuestionReport",report_jscripty_answers:"jscriptyAnswerReport",users:"user",voice_recordings:"voiceRecording",cdr:"cdr",whatsapp_accounts:"whatsappAccount",whatsapp_queues:"whatsappQueue",whatsapp_interactions:"whatsappInteraction",whatsapp_messages:"whatsappMessage",report_whatsapp_queue:"whatsappQueueReport",report_whatsapp_transfer:"whatsappTransferReport"};return{getMap:function(){var t=[];return _.forIn(i,function(e,n){t.push({name:n,api:e})}),t},getColumns:function(e){var n=i[e],t={};return"cm_contacts"===e&&(t.analytics=!0),a[n].describe(t).$promise}}}e.$inject=["api"],angular.module("app.analytics").factory("describeTable",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;(u.errors=[],u.title="Edit Report Field",u.report=i,u.reportField=angular.copy(o),u.reportFields=s,u.metrics=r,u.columns=l,u.sqlUtil=d,u.newReportField=!1,u.crudPermissions=m,u.reportField)?(u.reportField.type=u.reportField.custom?"custom":u.reportField.MetricId?"metric":"column",u.reportField.field&&!u.reportField.custom&&_.isNil(u.reportField.MetricId)&&1===u.reportField.field.split(".").length&&(u.reportField.field=u.report.table+"."+u.reportField.field)):(u.reportField={type:"column",function:null,format:null,groupBy:!1,orderBy:null},u.title="New Report Field",u.newReportField=!0);function p(){t.hide()}u.addNewReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,u.reportField.CustomReportId=u.report.id,c.analyticFieldReport.save(u.reportField).$promise.then(function(e){u.reportFields.push(e),a.success({title:"Report field properly created",msg:u.reportField.field?u.reportField.field+" has been created!":u.reportField.type+" has been created!"}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.save"}]})},u.saveReportField=function(){u.errors=[],u.reportField.custom="custom"===u.reportField.type,u.reportField.MetricId="metric"===u.reportField.type?u.reportField.MetricId:null,c.analyticFieldReport.update({id:u.reportField.id},u.reportField).$promise.then(function(e){var n=_.find(u.reportFields,{id:e.id});n&&_.merge(n,e),a.success({title:"Report Field properly saved!",msg:u.reportField.field?u.reportField.field+" has been saved!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticFieldReport.update"}]})},u.deleteReportField=function(e){u.errors=[];var n=t.confirm().title("Are you sure?").content("The field will be deleted.").ariaLabel("Delete Report").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){c.analyticFieldReport.delete({id:u.reportField.id}).$promise.then(function(){_.remove(u.reportFields,{id:u.reportField.id}),a.success({title:"Report Field properly deleted!",msg:u.reportField.field?u.reportField.field+" has been deleted!":""}),p()}).catch(function(e){u.errors=e.data.errors||[{message:e.toString(),type:"api.analyticReportField.delete"}]})},function(){})},u.closeDialog=p}e.$inject=["$scope","$location","$mdDialog","toasty","report","reportFields","reportField","metrics","columns","sqlUtil","api","crudPermissions"],angular.module("app.analytics").controller("CreateOrEditReportFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;c.report={},c.reportFields={count:0,rows:[]},c.functions=_.keyBy(l.getFunctions,"value"),c.formats=_.keyBy(l.getFormats,"value"),c.groupBy=_.keyBy(l.getGroupBy,"value"),c.orderBy=_.keyBy(l.getOrderBy,"value"),c.selectedReportFields=[],c.query={fields:"createdAt,updatedAt,id,field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0},c.sortableTable={animation:100,onSort:function(e){o.analyticFieldReport.addFields({id:c.report.id},e.models).$promise.then(function(e){c.reportFields.rows=e}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDFIELDS"})})}},c.init=function(e,n){c.report=e,c.query.CustomReportId=c.report.id,c.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},c.sortableTable.disabled=!c.crudPermissions.canEdit,r.getColumns(c.report.table).then(function(e){return c.columns=_.difference(_.keys(e),["$promise","$resolved"]),o.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise}).then(function(e){c.metrics=e.rows}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.getReportFields()},c.deleteConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>"+e.field+"</b> will be deleted.").ariaLabel("delete field").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(e)},function(){console.log("CANCEL")})},c.success=u,c.getReportFields=function(){c.promise=o.analyticFieldReport.get(c.query,u).$promise},c.createOrEditReportField=function(e,n){a.show({controller:"CreateOrEditReportFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/edit/field/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:c.report,reportField:n,reportFields:c.reportFields.rows,metrics:c.metrics,columns:c.columns,setting:null,crudPermissions:c.crudPermissions}})},c.deleteReportField=p,c.deleteSelectedReportFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+c.selectedReportFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){c.selectedReportFields.forEach(function(e){p(e)}),c.selectedReportFields=[]})},c.getMetricName=function(e){var n=_.find(c.metrics,{id:e});return n?n.name:d.instant("ANALYTICS.NO_METRIC_FOUND")},c.getMetricValue=function(e){var n=_.find(c.metrics,{id:e});return n?n.metric:d.instant("ANALYTICS.NO_METRIC_FOUND")};var m=!0;function u(e){c.reportFields=e||{count:0,rows:[]}}function p(e){o.analyticFieldReport.delete({id:e.id}).$promise.then(function(){c.selectedReportFields=[],_.remove(c.reportFields.rows,{id:e.id}),c.reportFields.count-=1,c.reportFields.rows.length||c.getReportFields(),s.success({title:"Field deleted!",msg:e.field?e.field+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}n.$watch("vm_rf.query.filter",function(e,n){m?t(function(){m=!1}):c.getReportFields()})}e.$inject=["$cookies","$scope","$timeout","$mdDialog","$document","toasty","api","describeTable","sqlUtil","$translate"],angular.module("app.analytics").controller("ReportFieldsController",e)}(),function(){"use strict";angular.module("app.analytics").factory("sqlUtil",function(){return{getFunctions:[{value:"SUM",option:function(e){return"SUM ("+e+")"}},{value:"COUNT",option:function(e){return"COUNT ("+e+")"}},{value:"COUNT DISTINCT",option:function(e){return"COUNT (DISTINCT "+e+")"}},{value:"MAX",option:function(e){return"MAX ("+e+")"}},{value:"MIN",option:function(e){return"MIN ("+e+")"}},{value:"AVG",option:function(e){return"AVG ("+e+")"}},{value:"GROUP_CONCAT",option:function(e){return"GROUP_CONCAT ("+e+")"}},{value:"GROUP_CONCAT ASC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" ASC)"}},{value:"GROUP_CONCAT DESC",option:function(e){return"GROUP_CONCAT ("+e+" ORDER BY "+e+" DESC)"}}],getFormats:[{value:"SEC_TO_TIME",option:function(e){return"SEC_TO_TIME ("+e+")"}},{value:"DATE",option:function(e){return"DATE ("+e+")"}},{value:"HOUR",option:function(e){return"HOUR ("+e+")"}},{value:"ROUND",option:function(e){return"ROUND ("+e+")"}},{value:"UNIX_TIMESTAMP",option:function(e){return"UNIX_TIMESTAMP ("+e+")"}}],getGroupBy:[{value:!1,option:function(){return"No"}},{value:!0,option:function(e){return"GROUP BY "+e}}],getOrderBy:[{value:"ASC",option:function(e){return"ORDER BY "+e+" ASC"}},{value:"DESC",option:function(e){return"ORDER BY "+e+" DESC"}}],getConditions:["=","!=","<","<=",">",">=","LIKE","NOT LIKE","IS NULL","IS NOT NULL","IS EMPTY","IS NOT EMPTY"]}})}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(e){return _.isArray(e)}o.report=a||{},o.userProfileSection=s&&1==s.count?s.rows[0]:null,o.crudPermissions=i.parseCrudPermissions(o.userProfileSection?o.userProfileSection.crudPermissions:null),o.selectedTab=e.params.tab||0,o.gotoReports=function(){e.go("app.analytics.reports",{},{reload:"app.analytics.reports"})},o.saveReport=function(){o.report.conditions=angular.toJson(o.report.condition),t.analyticCustomReport.update({id:o.report.id},_.omit(o.report,"joins")).$promise.then(function(){n.success({title:"Report updated!",msg:o.report.name?o.report.name+" has been updated!":""})}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETreport",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.previewReport=function(){o.columns=[],o.rows=[],o.error=!1,t.analyticFieldReport.get({fields:"field,alias",nolimit:!0,CustomReportId:o.report.id}).$promise.then(function(e){return o.columns=e?e.rows:[],t.analyticCustomReport.preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.queryReport=function(){return o.queryResult="Loading...",t.analyticCustomReport.query({id:o.report.id}).$promise.then(function(e){o.queryResult=e.sql}).catch(function(e){o.queryResult="",console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},n.error(o.error)})},o.mapArray=function(e,n){if(r(e))return _.map(e,n).join(",");return""},o.isArray=r,o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$state","toasty","api","report","Auth","userProfileSection"],angular.module("app.analytics").controller("ReportController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.errors=[],o.report=angular.copy(a),o.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n},o.closeDialog=function(){n.hide()},function(){o.columns=[],o.rows=[],o.error=!1;var e={fields:"field,alias",nolimit:!0};e["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=o.report.id,o.promise=i.analyticFieldReport.get(e).$promise.then(function(e){return o.columns=e?e.rows:[],i[s].preview({id:o.report.id}).$promise}).then(function(e){o.rows=e}).catch(function(e){console.log(e),o.error={title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:analyticFieldReport",msg:e.data?e.data.message:e.toString(),sql:e.data&&e.data.parent?e.data.parent.sql:"NO QUERY"},t.error(o.error)})}()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName"],angular.module("app.analytics").controller("PreviewReportDialogController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.reports={count:0,rows:[]},p.userProfile=r,p.userProfileSection=l&&1==l.count?l.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.selectedReports=[],p.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},p.apiName=null,p.currentPath="",p.customTree=!0,p.editstate=function(e,n){s.go("app.analytics.reports.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.copydialog=function(e,n){i.show({controller:"CopyReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/copy/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,treeCustomData:p.treeCustomInstance.jstree(!0).get_json("#")}}).finally(function(){})},p.previewdialog=function(e,n){i.show({controller:"PreviewReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/preview/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName}})},p.rundialog=function(e,n){i.show({controller:"RunReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/dialog.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{report:e,apiName:p.apiName,currentPath:p.currentPath}})},p.downloadfile=function(a,e){var i;d.analyticMetric.get({fields:"id,name,metric,table",nolimit:!0}).$promise.then(function(e){i=_.keyBy(e.rows,"id");var n={fields:"field,alias,function,format,groupBy,orderBy,custom,MetricId",nolimit:!0};return n["analyticCustomReport"===p.apiName?"CustomReportId":"DefaultReportId"]=a.id,d.analyticFieldReport.get(n).$promise}).then(function(e){for(var n=0;n<e.rows.length;n+=1)e.rows[n].MetricId&&(e.rows[n].field=i[e.rows[n].MetricId].metric,e.rows[n].custom=!0),delete e.rows[n].MetricId;var t=o.document.createElement("a");t.href="data:text/json;charset=utf-8,"+o.encodeURIComponent(angular.toJson({name:a.name,description:a.description,table:a.table,conditions:a.conditions,joins:a.joins,fields:e.rows})),t.download=a.name+".json",t.target="_self",t.click(),m.success({title:"Report downloaded!",msg:a.name?a.name+" has been downloaded!":""})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},p.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the report?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete report").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){b(e)},function(){console.log("CANCEL")})},p.success=h,p.getReports=f,p.createOrEditReport=function(e,n){i.show({controller:"CreateOrEditReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/create/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{report:n,reports:p.reports.rows,apiName:p.apiName,currentNode:p.currentNode,setting:null,crudPermissions:p.crudPermissions}})},p.importReport=function(e,n,t){if("application/json"===e.file.type){var a=new FileReader;a.onload=function(e){console.log(e.target.result);try{var t=atob(e.target.result.split(",")[1]);t=angular.fromJson(t),d.analyticCustomReport.save({name:t.name,description:t.description,table:t.table,conditions:t.conditions,joins:t.joins,parent:p.currentNode.id}).$promise.then(function(n){p.reports.rows.unshift(n),m.success({title:"Report saved!",msg:n.name?n.name+" has been saved!":""});var e=_.map(t.fields,function(e){return _.extend({},e,{CustomReportId:n.id})});return d.analyticFieldReport.bulkCreate(e).$promise}).then(function(e){m.success({title:"Fields saved!",msg:"Fields has been saved!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETanalyticReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}catch(e){console.error(e),m.error({title:"Decode File Error",msg:e.toString()})}},a.readAsDataURL(e.file)}else m.error({title:"Format Error",msg:"Please use only json files"})},p.deleteReport=b,p.exportSelectedReports=function(){var e=angular.copy(p.selectedReports);return p.selectedReports=[],e},p.deleteSelectedReports=function(e){var n=i.confirm().title("Are you sure want to delete the selected reports?").htmlContent("<b>"+p.selectedReports.length+" selected</b> will be deleted.").ariaLabel("delete Reports").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){p.selectedReports.forEach(function(e){b(e)}),p.selectedReports=[]})},p.deselectReports=function(){p.selectedReports=[]},p.selectAllReports=function(){p.selectedReports=p.reports.rows},p.treeDefaultData=c.rows[0]?angular.fromJson(c.rows[0].tree):[],p.treeCustomData=c.rows[1]?angular.fromJson(c.rows[1].tree):[],p.treeDefaultConfig=S(!1),p.treeCustomConfig=S(!0),p.treeDefaultEvents=T(!1),p.treeCustomEvents=T(!0);var g=!0,v=1;function h(e){p.reports=e||{count:0,rows:[]}}function f(){if(p.query.offset=(p.query.page-1)*p.query.limit,p.apiName)if("admin"===p.currentUser.role||p.userProfileSection.autoAssociation)p.promise=d[p.apiName].get(p.query,h).$promise;else{var a=[];p.promise=d[p.apiName].get(p.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:p.userProfileSection.id,type:"analyticDefaultReport"===p.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),h({count:t.length,rows:t})}return h(null)}):h(null)})}}function b(e){p.apiName&&d[p.apiName].delete({id:e.id}).$promise.then(function(){_.remove(p.reports.rows,{id:e.id}),p.reports.count-=1,p.reports.rows.length||p.getReports(),m.success({title:"Report deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.analyticreport.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.analyticreport.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function A(e,n){p.treeDefaultInstance.jstree(!0).deselect_all(),p.treeDefaultInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!0,p.currentPath=p.treeCustomInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticCustomReport",p.query.parent=n.node.id,f()}function E(e,n){p.treeCustomInstance.jstree(!0).deselect_all(),p.treeCustomInstance.jstree(!0).close_all(),p.currentNode=n.node,p.currentNode.custom=!1,p.currentPath=p.treeDefaultInstance.jstree(!0).get_path(p.currentNode).join("/ "),p.apiName="analyticDefaultReport",p.query.parent=n.node.id,f()}function y(e,n){var t,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),m.success({title:"Node Updated",msg:n.node.text?n.node.text+" has been updated!":"Node has been updated!"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEanalyticTreeReport",msg:e.data?JSON.stringify(e.data):e.toString()})})}function S(e){return{core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:e?["contextmenu","dnd","search","state","wholerow"]:["search","state","wholerow"],contextmenu:{items:function(t){var e={};return p.crudPermissions.canEdit&&_.assign(e,{create:{label:n.instant("ANALYTICS.CREATE"),action:function(){t=p.treeCustomInstance.jstree(!0).create_node(t),p.treeCustomInstance.jstree(!0).edit(t)}},rename:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.RENAME"),action:function(){p.treeCustomInstance.jstree(!0).edit(t)}}}),p.crudPermissions.canDelete&&_.assign(e,{remove:{_disabled:"#"===t.parent,label:n.instant("ANALYTICS.REMOVE"),action:function(){var e=i.confirm().title("Are you sure want to delete the node?").htmlContent("<b>"+(t.text?t.text:"Node")+"</b> and its subnode will be deleted.").ariaLabel("delete node").ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n=p.treeCustomInstance.jstree(!0).get_parent(t);n=p.treeCustomInstance.jstree(!0).get_node(n),p.treeCustomInstance.jstree(!0).delete_node(t),e=[t.id].concat(t.children_d||[]),d.analyticCustomReport.get({parent:e.join(","),fields:"id,name"}).$promise.then(function(e){e&&e.rows&&e.rows.forEach(function(e){b(e)})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEreportsByParents",msg:e.data?JSON.stringify(e.data):e.toString()})}),p.treeCustomInstance.jstree(!0).select_node(n)})}}}),e}}}}function T(e){return e?{create_node:y,rename_node:y,move_node:y,delete_node:y,select_node:A}:{select_node:E}}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getReports())}),e.$watch("vm.search",function(e,n){p.treeDefaultInstance&&p.treeDefaultInstance.jstree(!0).search(e),p.treeCustomInstance&&p.treeCustomInstance.jstree(!0).search(e)})}e.$inject=["$scope","$timeout","$document","$mdDialog","$state","$window","$translate","userProfile","userProfileSection","api","treeReports","toasty","Auth"],angular.module("app.analytics").controller("ReportsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r){var l=this;function d(){l.export={id:l.report.id,name:l.report.name,startDate:new Date(moment().startOf("day")),endDate:new Date(moment().endOf("day")),output:"xlsx",fullPath:r?r+"/"+l.report.name:l.report.name}}function c(){t.hide()}l.errors=[],l.report=angular.copy(n),l.export={},l.runReport=function(n){l.errors=[],l.exportDate=_.assign({},l.export,{startDate:moment(l.export.startDate).format("YYYY-MM-DD HH:mm:ss"),endDate:moment(l.export.endDate).format("YYYY-MM-DD HH:mm:ss")}),i[s].run(l.exportDate).$promise.then(function(e){"web"===l.export.output?t.show({controller:"WebReportDialogController",controllerAs:"vm",templateUrl:"app/main/apps/analytics/views/reports/run/web/dialog.html",parent:angular.element(o.body),targetEvent:n,skipHide:!0,locals:{apiName:s,exportDate:l.exportDate,results:e},resolve:{columns:["apiResolver",function(e){var n={fields:"field,alias",nolimit:!0};return n["analyticCustomReport"===s?"CustomReportId":"DefaultReportId"]=l.report.id,e.resolve("analyticFieldReport@get",n)}]}}):(a.success({title:"Report properly run!",msg:l.report.name?l.report.name+" has been run!":""}),c())}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.closeDialog=c,(l.refreshDate=d)()}e.$inject=["$location","$mdDialog","toasty","report","api","apiName","$document","currentPath"],angular.module("app.analytics").controller("RunReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;function l(e){r.results=e||{count:0,rows:[]}}r.errors=[],r.columns=a?a.rows:[],r.results=i||{rows:[],count:0},r.query={limit:10,page:1},r.closeDialog=function(){e.hide()},r.getResults=function(){o.offset=(r.query.page-1)*r.query.limit,o.limit=r.query.limit,r.promise=t[s].run(o,l).$promise},r.valueReplacer=function(e,n){moment(n,"YYYY-MM-DDTHH:mm:ssZ",!0).isValid()&&(n=moment(n,"").format("YYYY-MM-DD HH:mm:ss"));return n}}e.$inject=["$mdDialog","toasty","api","columns","results","apiName","exportDate"],angular.module("app.analytics").controller("WebReportDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_ODBC",g.odbc=angular.copy(l),g.odbcs=r,g.newOdbc=!1,g.odbc||(g.odbc={},g.title="CALLYSQUARE.NEW_ODBC",g.newOdbc=!0),g.addNewOdbc=function(){g.errors=[],d.squareOdbc.save(g.odbc).$promise.then(function(e){g.odbcs.unshift(e.toJSON()),o.success({title:"Odbc properly created",msg:g.odbc.name?g.odbc.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOdbc=function(){g.errors=[],d.squareOdbc.update({id:g.odbc.id},g.odbc).$promise.then(function(e){var n=_.find(g.odbcs,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Odbc properly saved!",msg:g.odbc.name?g.odbc.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOdbc=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The odbc will be deleted.").ariaLabel("Delete Odbc").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareOdbc.delete({id:g.odbc.id}).$promise.then(function(){_.remove(g.odbcs,{id:g.odbc.id}),o.success({title:"Odbc properly deleted!",msg:(g.odbc.name||"odbc")+" has been deleted!"}),v(g.odbc)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareOdbc.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareOdbc.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","odbcs","odbc","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditOdbcDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.odbcs=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="odbcs",f.listOrder="",f.listOrderAsc=null,f.selectedODBC=[],f.query={fields:"createdAt,updatedAt,id,name,dsn,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{odbc:e,odbcs:f.odbcs.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.testtestOdbc=function(e,n){return m.squareOdbc.test({id:e.id}).$promise.then(function(){p.success({title:"Square ODBC properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"Square ODBC properly tested",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("odbc")+"?").htmlContent("<b>"+(e.name||"odbc")+"</b> will be deleted.").ariaLabel("delete odbc").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getODBC=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareOdbc.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ODBC",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOdbc=function(e,n){i.show({controller:"CreateOrEditOdbcDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/odbcs/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{odbc:n,odbcs:f.odbcs.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOdbc=y,f.exportSelectedODBC=function(){var e=angular.copy(f.selectedODBC);return f.selectedODBC=[],e},f.deleteSelectedODBC=function(e){var n=i.confirm().title("Are you sure want to delete the selected odbcs?").htmlContent("<b>"+f.selectedODBC.length+" selected</b> will be deleted.").ariaLabel("delete Odbcs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedODBC.forEach(function(e){y(e)}),f.selectedODBC=[]})},f.deselectODBC=function(){f.selectedODBC=[]},f.selectAllODBC=function(){f.selectedODBC=f.odbcs.rows};var b=!0,A=1;function E(e){f.odbcs=e||{count:0,rows:[]}}function y(e){m.squareOdbc.delete({id:e.id}).$promise.then(function(){_.remove(f.odbcs.rows,{id:e.id}),f.odbcs.count-=1,f.odbcs.rows.length||f.getODBC(),p.success({title:_.startCase("Odbc")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareOdbc"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareOdbc",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getODBC())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","odbcs","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("OdbcsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.errors=[],c.title="CALLYSQUARE.EDIT_PROJECT",c.crudPermissions=d,c.project=angular.copy(o),c.newWindow=!0,c.projects=s,c.newProject=!1,c.openFromEditor=l,c.project||(c.project={name:"",description:""},c.title="CALLYSQUARE.NEW_PROJECT",c.newProject=!0),c.addNewProject=function(){c.errors=[],r.squareProject.save(c.project).$promise.then(function(e){c.projects.unshift(e),i.success({title:"Project properly created",msg:c.project.name?c.project.name+" has been created!":""}),m(e),c.openFromEditor&&(c.newWindow?t.open("/callysquare/projects/"+e.id,"_blank"):a.go("app.callysquare.projects.edit",{id:e.id}))}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveProject=function(){c.errors=[],r.squareProject.update({id:c.project.id},c.project).$promise.then(function(e){var n=_.find(c.projects,{id:e.id});n&&_.merge(n,e),i.success({title:"Project properly saved!",msg:c.project.name?c.project.name+" has been saved!":""}),m(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteProject=function(){c.errors=[];var e=n.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(event);n.show(e).then(function(){r.squareProject.delete({id:c.project.id}).$promise.then(function(){_.remove(c.projects,{id:c.project.id}),i.success({title:"Project properly deleted!",msg:c.project.name?c.project.name+" has been deleted!":""}),m(c.project)}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.delete"}]})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$window","$state","Auth","toasty","projects","project","api","openFromEditor","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareProjectDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T,I,O,C,w,R,x,N,D){var P=this,L={playback:["file_id"],answer:["timeout"],menu:["file_id","digit","response","retry"],getdigits:["file_id","variable_id","mindigit","maxdigit","retry"],getsecretdigits:["file_id","variable_id","mindigit","maxdigit","hiddendigitsnum","retry"],vswitch:["variable_id"],database:["odbc_id","query"],ext_dial:["trunk_name","phone","timeout"],set:["variable_id"],math:["variable_id"],gotoc:["context","extension","priority"],system:["command"],agi:["command"],gotoif:["condition"],saydigits:["digits"],saynumber:["number"],sayphonetic:["text"],record:["file","timeout"],goal:["goalname"],dial:["sip_id","timeout"],queue:["queue_id","timeout"],callback:["list_id","name","phone","delay"],gotoiftime:["interval_id"],voicemail:["mailbox"],subproject:["project_id"],sendSMS:["sms_account_id","to","sms_text"],sendMail:["account_id","to"],sendFax:["account_id","to","attachment_path"],google_cloud_tts:["apiKey","google_cloud_tts_text_type","text"],tts:["text"],ispeechtts:["text","key","speed"],ispeechasr:["key","timeout"],custom_app:["application"],googleasr:["key","timeout"],awspolly:["aws_access_key_id","aws_secret_access_key","text","aws_text_type"],lumenvoxtts:["text"],sestektts:["text"],lumenvoxasr:["grammar"],sestekasr:["grammar"],tildeasr:["appid","appsecret","uri"],login:["findBy"],pause:["findBy","pause_id"],unpause:["findBy"],logout:["findBy"],dialogflow:["key","text","dialogflow_language"],awslex:["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],sesteknda:["text","ndauth_url","username","password","ndassistant_url"],restapi:["url","method"],mrcpsynth:["text"],mrcprecog:["grammar"],dialogflowV2:["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"]},k={queue:["file_id"],database:["variable_id"],pause:["pause_id"]},M={sendMail:["to","cc","bcc"],voicemail:["mailbox"]};function U(e,n,t,a){return _.map(e,function(e){return{value:e[n],option:e[t],group:a?e[a]:void 0,canSelect:void 0===e.canSelect||e.canSelect}})}function F(){var e=Number(_.find(P.attributes,{name:"sip_id"}).value);if(!_.some(d,{id:e})&&0<e)return t.user.get({id:e,fields:"id,fullname,role"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,d.push(n),P.values.sip_id=U(d,"id","fullname","role")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_USER",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sip_id=U(d,"id","fullname","role")}function $(){var e=Number(_.find(P.attributes,{name:"list_id"}).value);if(!_.some(E,{id:e})&&0<e)return t.cmList.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,E.push(n),P.values.list_id=U(E,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_LIST",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.list_id=U(E,"id","name")}function q(){var e=Number(_.find(P.attributes,{name:"trunk_id"}).value);if(!_.some(c,{id:e})&&0<e)return t.trunk.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,c.push(n),P.values.trunk_id=U(c,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_id=U(c,"id","name")}function G(){var e=_.find(P.attributes,{name:"trunk_name"}).value;if(!_.some(c,{name:e})&&e)return t.trunk.get({name:e,fields:"id,name"}).$promise.then(function(e){if(0<e.count&&0<e.rows.length){var n=e.rows[0];n.canSelect=!1,c.push(n),P.values.trunk_name=U(c,"name","name")}}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TRUNK",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.trunk_name=U(c,"name","name")}function H(){var e=Number(_.find(P.attributes,{name:"queue_id"}).value);if(!_.some(m,{id:e})&&0<e)return t.voiceQueue.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,m.push(n),P.values.queue_id=U(m,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_QUEUE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.queue_id=U(m,"id","name")}function V(){var e=Number(_.find(P.attributes,{name:"file_id"}).value);if(!_.some(u,{id:e})&&0<e)return t.sound.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,u.push(n),P.values.file_id=U(u,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SOUND",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.file_id=U(u,"id","name")}function B(){var e=Number(_.find(P.attributes,{name:"variable_id"}).value);if(!_.some(p,{id:e})&&0<e)return t.variable.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,p.push(n),P.values.variable_id=U(p,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_VARIABLE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.variable_id=U(p,"id","name")}function Q(){var e=Number(_.find(P.attributes,{name:"odbc_id"}).value);if(!_.some(g,{id:e})&&0<e)return t.squareOdbc.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,g.push(n),P.values.odbc_id=U(g,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_ODBC",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.odbc_id=U(g,"id","name")}function W(){var e=Number(_.find(P.attributes,{name:"project_id"}).value);if(!_.some(v,{id:e})&&0<e)return t.squareProject.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,v.push(n),P.values.project_id=U(v,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PROJECT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.project_id=U(v,"id","name")}function j(){var e=Number(_.find(P.attributes,{name:"context"}).value);if(!_.some(h,{id:e})&&0<e)return t.voiceContext.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,h.push(n),P.values.context=U(h,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_CONTEXT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.context=U(h,"id","name")}function Y(){var e=Number(_.find(P.attributes,{name:"interval_id"}).value);if(!_.some(f,{id:e})&&0<e)return t.interval.get({id:e,fields:"id,name,IntervalId"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,f.push(n),P.values.interval_id=U(f,"id","name","IntervalId")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_INTERVAL",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.interval_id=U(f,"id","name","IntervalId")}function z(){var e=Number(_.find(P.attributes,{name:"account_id"}).value);if(!_.some(b,{id:e})&&0<e)return t.mailAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,b.push(n),P.values.account_id=U(b,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_MAIL_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.account_id=U(b,"id","name")}function J(){var e=Number(_.find(P.attributes,{name:"sms_account_id"}).value);if(!_.some(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_SMS_ACCOUNT",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.sms_account_id=U(O,"id","name")}function K(){var e=Number(_.find(P.attributes,{name:"template_id"}).value);if(!_.some(A,{id:e})&&0<e)return t.template.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,A.push(n),P.values.template_id=U(A,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_TEMPLATE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.template_id=U(A,"id","name")}function X(){var e=Number(_.find(P.attributes,{name:"pause_id"}).value);if(!_.some(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"id","name")}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_PAUSE",msg:e.data?JSON.stringify(e.data.message):e.toString()})});P.values.pause_id=U(C,"id","name")}P.cellName=y.tagName,P.attributes=_.map(y.attributes,function(e){return{name:e.name,value:e.value,defaultValue:k[P.cellName]&&_.includes(k[P.cellName],e.name),required:L[P.cellName]&&_.includes(L[P.cellName],e.name),help:M[P.cellName]&&_.includes(M[P.cellName],e.name)}}),P.values={authMethod:[{value:"noauth",option:"NO AUTH"},{value:"hmac",option:"HMAC"}],answer:[{value:"yes",option:"Yes"},{value:"no",option:"No"}],ndagenerate_audio:[{value:1,option:"Yes"},{value:0,option:"No"}],ndaactivity_type:[{value:"message",option:"Message"},{value:"conversationUpdate",option:"Conversation Update"},{value:"contactRelationUpdate",option:"Contact Relation Update"},{value:"endOfConversation",option:"End of Conversation"}],hiddendigitspos:[{value:"first",option:"First"},{value:"last",option:"Last"}],recordingFormat:[{value:"wav",option:"Wav"},{value:"gsm",option:"Gsm"}],intkey:[{value:"#",option:"#"},{value:"*",option:"*"}],beep:[{value:"BEEP",option:"Yes"},{value:"NOBEEP",option:"No"}],model:e,ispeech_asr_language:i,ispeech_tts_language:o,languageCode:r,ssmlGender:[{value:"FEMALE",option:"Female"},{value:"MALE",option:"Male"}],google_tts_language:l,google_asr_language:s,google_cloud_tts_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],aws_polly_region:I,aws_polly_voice:T,aws_text_type:[{value:"text",option:"Text"},{value:"ssml",option:"SSML"}],callback_priority:[{option:"Highest",value:4},{option:"High",value:3},{option:"Medium",value:2},{option:"Low",value:1},{option:"Lowest",value:0}],findBy:[{value:"internal",option:"Internal"},{value:"phone",option:"Phone"},{value:"mobile",option:"Mobile"}],dialogflow_language:w,dialogflowV2_language:R,aws_lex_region:x,method:[{value:"GET",option:"GET"},{value:"POST",option:"POST"},{value:"PUT",option:"PUT"},{value:"DELETE",option:"DELETE"}]},P.crudPermissions=D,P.onInit=function(){N.hasRole("admin")?(e={sip_id:U(d,"id","fullname","role"),trunk_name:U(c,"name","name"),trunk_id:U(c,"id","name"),queue_id:U(m,"id","name"),file_id:U(u,"id","name"),variable_id:U(p,"id","name"),odbc_id:U(g,"id","name"),project_id:U(v,"id","name"),context:U(h,"id","name"),interval_id:(t=f,a="id",i="name",s="IntervalId",o=_.filter(t,function(e){return null===e[s]}),r=[],_.forEach(o,function(n){r.push({value:n[a],option:n[i]});var e=_.filter(t,function(e){return e[s]===n.id});_.forEach(e,function(e){r.push({value:e[a],option:" - "+e[i]})})}),r),account_id:U(b,"id","name"),template_id:U(A,"id","name"),list_id:U(E,"id","name"),sms_account_id:U(O,"id","name"),pause_id:U(C,"id","name")},n=_.merge(P.values,e),P.values=n):function(){for(var e=["sip_id","trunk_name","trunk_id","queue_id","file_id","variable_id","odbc_id","project_id","context","interval_id","account_id","template_id","list_id","sms_account_id","pause_id"],n=0;n<P.attributes.length;n++)if(_.includes(e,P.attributes[n].name))switch(P.attributes[n].name){case"sip_id":F();break;case"trunk_name":G();break;case"trunk_id":q();break;case"queue_id":H();break;case"file_id":V();break;case"variable_id":B();break;case"odbc_id":Q();break;case"project_id":W();break;case"context":j();break;case"interval_id":Y();break;case"account_id":z();break;case"template_id":K();break;case"list_id":$();break;case"sms_account_id":J();break;case"pause_id":X()}}();var e,n,t,a,i,s,o,r},P.closeDialog=function(e){e&&S(P.attributes),n.hide()},P.getMap=U}e.$inject=["$mdDialog","api","toasty","ispeechAsrModel","ispeechAsrLanguage","googleAsrLanguage","ispeechTtsLanguage","googleCloudTtslanguageCode","googleTtsLanguage","users","trunks","queues","sounds","variables","databases","projects","contexts","intervals","mailAccounts","templates","lists","cell","saveCallback","awsPollyVoice","awsPollyRegion","smsAccounts","pauses","dialogFlowLanguage","dialogFlowV2Language","awsLexRegion","Auth","crudPermissions"],angular.module("app.callysquare").controller("MxGraphDialogController",e)}(),function(){"use strict";angular.module("app.callysquare").directive("stringToNumber",function(){return{require:"ngModel",link:function(e,n,t,a){a.$parsers.push(function(e){return""+e}),a.$formatters.push(function(e){return parseFloat(e)})}}})}(),function(){"use strict";angular.module("app.callysquare").factory("ispeechAsrModel",function(){return[{value:"0",option:"Default"},{value:"date",option:"Date"},{value:"usmoney",option:"US Money"},{value:"numbersto9",option:"Numbers to 9"},{value:"numbersto99",option:"Numbers to 99"},{value:"numbersto999",option:"Numbers to 999"},{value:"time",option:"Time"},{value:"phonenumber",option:"Phone number"},{value:"streets",option:"Streets"},{value:"citystate",option:"US City/States"}]}).factory("ispeechAsrLanguage",function(){return[{value:"en-US",option:"English (US)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (UK)"},{value:"en-AU",option:"English (Australia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-MX",option:"Spanish (Mexico)"},{value:"it-IT",option:"Italian (Italy) / Finnish (Finland)"},{value:"fr-FR",option:"German (Germany)"},{value:"fr-CA",option:"French (Canada)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ca-ES",option:"Catalan (Catalan)"},{value:"zh-TW",option:"Chinese (Taiwan)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"ko-KR",option:"Korean (Korea)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"zh-CN",option:"Chinese (China)"},{value:"zh-HK",option:"Chinese (Hong Kong)"}]}).factory("ispeechTtsLanguage",function(){return[{value:"usenglishfemale",option:"US English Female"},{value:"usenglishmale",option:"US English Male"},{value:"ukenglishfemale",option:"UK English Female"},{value:"ukenglishmale",option:"UK English Male"},{value:"auenglishfemale",option:"Australian English"},{value:"usspanishfemale",option:"US Spanish Female"},{value:"usspanishmale",option:"US Spanish Male"},{value:"chchinesefemale",option:"Chinese Female"},{value:"chchinesemale",option:"Chinese Male"},{value:"hkchinesefemale",option:"Hong Kong Cantonese Female"},{value:"twchinesefemale",option:"Taiwan Chinese Female"},{value:"jpjapanesefemale",option:"Japanese Female"},{value:"jpjapanesemale",option:"Japanese Male"},{value:"krkoreanfemale",option:"Korean Female"},{value:"krkoreanmale",option:"Korean Male"},{value:"caenglishfemale",option:"Canadian English Female"},{value:"huhungarianfemale",option:"Hungarian Female"},{value:"brportuguesefemale",option:"Brazilian Portuguese Female"},{value:"eurportuguesefemale",option:"European Portuguese Female"},{value:"eurportuguesemale",option:"European Portuguese Male"},{value:"eurspanishfemale",option:"European Spanish Female"},{value:"eurspanishmale",option:"European Spanish Male"},{value:"eurcatalanfemale",option:"European Catalan Female"},{value:"eurczechfemale",option:"European Czech Female"},{value:"eurdanishfemale",option:"European Danish Female"},{value:"eurfinnishfemale",option:"European Finnish Female"},{value:"eurfrenchfemale",option:"European French Female"},{value:"eurfrenchmale",option:"European French Male"},{value:"eurnorwegianfemale",option:"European Norwegian Female"},{value:"eurdutchfemale",option:"European Dutch Female"},{value:"eurpolishfemale",option:"European Polish Female"},{value:"euritalianfemale",option:"European Italian Female"},{value:"euritalianmale",option:"European Italian Male"},{value:"eurturkishfemale",option:"European Turkish Female"},{value:"eurturkishmale",option:"European Turkish Male"},{value:"eurgermanfemale",option:"European German Female"},{value:"eurgermanmale",option:"European German Male"},{value:"rurussianfemale",option:"Russian Female"},{value:"rurussianmale",option:"Russian Male"},{value:"swswedishfemale",option:"Swedish Female"},{value:"cafrenchfemale",option:"Canadian French Female"},{value:"cafrenchmale",option:"Canadian French Male"}]}).factory("googleCloudTtslanguageCode",function(){return[{value:"af-ZA",option:"Afrikaans (South Africa)"},{value:"ar-XA",option:"Arabic"},{value:"bn-IN",option:"Bengali (India)"},{value:"bg-BG",option:"Bulgarian (Bulgaria)"},{value:"ca-ES",option:"Catalan (Spain)"},{value:"yue-HK",option:"Chinese (Hong Kong)"},{value:"cs-CZ",option:"Czech (Czech Republic)"},{value:"da-DK",option:"Danish (Denmark)"},{value:"nl-BE",option:"Dutch (Belgium)"},{value:"nl-NL",option:"Dutch (Netherlands)"},{value:"en-AU",option:"English (Australian)"},{value:"en-IN",option:"English (India)"},{value:"en-GB",option:"English (UK)"},{value:"en-US",option:"English (US)"},{value:"fi-FI",option:"Finnish (Finland)"},{value:"fil-PH",option:"Filipino (Philippines)"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"French (France)"},{value:"de-DE",option:"German (Germany)"},{value:"el-GR",option:"Greek (Greece)"},{value:"gu-IN",option:"Gujarati (India)"},{value:"hi-IN",option:"Hindi (India)"},{value:"hu-HU",option:"Hungarian (Hungary)"},{value:"is-IS",option:"Icelandic (Iceland)"},{value:"id-ID",option:"Indonesian (Indonesia)"},{value:"it-IT",option:"Italian (Italy)"},{value:"ja-JP",option:"Japanese (Japan)"},{value:"kn-IN",option:"Kannada (India)"},{value:"ko-KR",option:"Korean (South Korea)"},{value:"lv-LV",option:"Latvian (Latvia)"},{value:"ms-MY",option:"Malay (Malaysia)"},{value:"ml-IN",option:"Malayalam (India)"},{value:"cmn-CN",option:"Mandarin Chinese"},{value:"nb-NO",option:"Norwegian (Norway)"},{value:"pl-PL",option:"Polish (Poland)"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ro-RO",option:"Romanian (Romania)"},{value:"ru-RU",option:"Russian (Russia)"},{value:"sr-RS",option:"Serbian (Cyrillic)"},{value:"sk-SK",option:"Slovak (Slovakia)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"es-US",option:"Spanish (US)"},{value:"sv-SE",option:"Swedish (Sweden)"},{value:"ta-IN",option:"Tamil (India)"},{value:"te-IN",option:"Telugu (India)\t"},{value:"th-TH",option:"Thai (Thailand)"},{value:"tr-TR",option:"Turkish (Turkey)"},{value:"uk-UA",option:"Ukrainian (Ukraine)"},{value:"vi-VN",option:"Vietnamese (Vietnam)"}]}).factory("googleTtsLanguage",function(){return[{value:"af",option:"Afrikaans"},{value:"sq",option:"Albanian"},{value:"am",option:"Amharic"},{value:"ar",option:"Arabic"},{value:"hy",option:"Armenian"},{value:"az",option:"Azerbaijani"},{value:"eu",option:"Basque"},{value:"be",option:"Belarusian"},{value:"bn",option:"Bengali"},{value:"bh",option:"Bihari"},{value:"bs",option:"Bosnian"},{value:"br",option:"Breton"},{value:"bg",option:"Bulgarian"},{value:"km",option:"Cambodian"},{value:"ca",option:"Catalan"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"co",option:"Corsican"},{value:"hr",option:"Croatian"},{value:"cs",option:"Czech"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"eo",option:"Esperanto"},{value:"et",option:"Estonian"},{value:"fo",option:"Faroese"},{value:"tl",option:"Filipino"},{value:"fi",option:"Finnish"},{value:"fr",option:"French"},{value:"fy",option:"Frisian"},{value:"gl",option:"Galician"},{value:"ka",option:"Georgian"},{value:"de",option:"German"},{value:"el",option:"Greek"},{value:"gn",option:"Guarani"},{value:"gu",option:"Gujarati"},{value:"xx-hacker",option:"Hacker"},{value:"ha",option:"Hausa"},{value:"iw",option:"Hebrew"},{value:"hi",option:"Hindi"},{value:"hu",option:"Hungarian"},{value:"is",option:"Icelandic"},{value:"id",option:"Indonesian"},{value:"ia",option:"Interlingua"},{value:"ga",option:"Irish"},{value:"it",option:"Italian"},{value:"jw",option:"Javanese"},{value:"ja",option:"Japanese"},{value:"kn",option:"Kannada"},{value:"kk",option:"Kazakh"},{value:"rw",option:"Kinyarwanda"},{value:"rn",option:"Kirundi"},{value:"xx-klingon",option:"Klingon"},{value:"ku",option:"Kurdish"},{value:"ko",option:"Korean"},{value:"ky",option:"Kyrgyz"},{value:"lo",option:"Laothian"},{value:"la",option:"Latin"},{value:"lv",option:"Latvian"},{value:"ln",option:"Lingala"},{value:"lt",option:"Lithuanian"},{value:"mk",option:"Macedonian"},{value:"mg",option:"Malagasy"},{value:"ml",option:"Malayalam"},{value:"mt",option:"Maltese"},{value:"mi",option:"Maori"},{value:"mr",option:"Marathi"},{value:"mo",option:"Moldavian"},{value:"mn",option:"Mongolian"},{value:"sr-ME",option:"Montenegrin"},{value:"ne",option:"Nepali"},{value:"no",option:"Norwegian"},{value:"nn",option:"Norwegian (Nynorsk)"},{value:"oc",option:"Occitan"},{value:"or",option:"Oriya"},{value:"om",option:"Oromo"},{value:"ps",option:"Pashto"},{value:"fa",option:"Persian"},{value:"xx-pirate",option:"Pirate"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"pa",option:"Punjabi"},{value:"qu",option:"Quechua"},{value:"ro",option:"Romanian"},{value:"rm",option:"Romansh"},{value:"ru",option:"Russian"},{value:"gd",option:"Scots Gaelic"},{value:"sr",option:"Serbian"},{value:"sh",option:"Serbo-Croatian"},{value:"st",option:"Sesotho"},{value:"sn",option:"Shona"},{value:"sd",option:"Sindhi"},{value:"si",option:"Sinhalese"},{value:"sk",option:"Slovak"},{value:"sl",option:"Slovenian"},{value:"so",option:"Somali"},{value:"es",option:"Spanish"},{value:"su",option:"Sundanese"},{value:"sw",option:"Swahili"},{value:"sv",option:"Swedish"},{value:"tg",option:"Tajik"},{value:"ta",option:"Tamil"},{value:"tt",option:"Tatar"},{value:"te",option:"Telugu"},{value:"th",option:"Thai"},{value:"ti",option:"Tigrinya"},{value:"to",option:"Tonga"},{value:"tr",option:"Turkish"},{value:"tk",option:"Turkmen"},{value:"tw",option:"Twi"},{value:"ug",option:"Uighur"},{value:"uk",option:"Ukrainian"},{value:"ur",option:"Urdu"},{value:"uz",option:"Uzbek"},{value:"vi",option:"Vietnamese"},{value:"cy",option:"Welsh"},{value:"xh",option:"Xhosa"},{value:"yi",option:"Yiddish"},{value:"yo",option:"Yoruba"},{value:"zu",option:"Zulu"}]}).factory("googleAsrLanguage",function(){return[{option:"Afrikaans (South Africa)",value:"af-ZA"},{option:"Albanian (Albania)",value:"sq-AL"},{option:"Amharic (Ethiopia)",value:"am-ET"},{option:"Arabic (Algeria)",value:"ar-DZ"},{option:"Arabic (Bahrain)",value:"ar-BH"},{option:"Arabic (Egypt)",value:"ar-EG"},{option:"Arabic (Iraq)",value:"ar-IQ"},{option:"Arabic (Israel)",value:"ar-IL"},{option:"Arabic (Jordan)",value:"ar-JO"},{option:"Arabic (Kuwait)",value:"ar-KW"},{option:"Arabic (Lebanon)",value:"ar-LB"},{option:"Arabic (Morocco)",value:"ar-MA"},{option:"Arabic (Oman)",value:"ar-OM"},{option:"Arabic (Qatar)",value:"ar-QA"},{option:"Arabic (Saudi Arabia)",value:"ar-SA"},{option:"Arabic (State of Palestine)",value:"ar-PS"},{option:"Arabic (Tunisia)",value:"ar-TN"},{option:"Arabic (United Arab Emirates)",value:"ar-AE"},{option:"Arabic (Yemen)",value:"ar-YE"},{option:"Armenian (Armenia)",value:"hy-AM"},{option:"Azerbaijani (Azerbaijan)",value:"az-AZ"},{option:"Basque (Spain)",value:"eu-ES"},{option:"Bengali (Bangladesh)",value:"bn-BD"},{option:"Bengali (India)",value:"bn-IN"},{option:"Bosnian (Bosnia and Herzegovina)",value:"bs-BA"},{option:"Bulgarian (Bulgaria)",value:"bg-BG"},{option:"Burmese (Myanmar)",value:"my-MM"},{option:"Catalan (Spain)",value:"ca-ES"},{option:"Chinese, Cantonese (Traditional Hong Kong)",value:"yue-Hant-HK"},{option:"Chinese, Mandarin (Simplified, China)",value:"cmn-Hans-CN"},{option:"Croatian (Croatia)",value:"hr-HR"},{option:"Czech (Czech Republic)",value:"cs-CZ"},{option:"Danish (Denmark)",value:"da-DK"},{option:"Dutch (Belgium)",value:"nl-BE"},{option:"Dutch (Netherlands)",value:"nl-NL"},{option:"English (Australia)",value:"en-AU"},{option:"English (Canada)",value:"en-CA"},{option:"English (Ghana)",value:"en-GH"},{option:"English (Hong Kong)",value:"en-HK"},{option:"English (India)",value:"en-IN"},{option:"English (Ireland)",value:"en-IE"},{option:"English (Kenya)",value:"en-KE"},{option:"English (New Zealand)",value:"en-NZ"},{option:"English (Nigeria)",value:"en-NG"},{option:"English (Pakistan)",value:"en-PK"},{option:"English (Philippines)",value:"en-PH"},{option:"English (Singapore)",value:"en-SG"},{option:"English (South Africa)",value:"en-ZA"},{option:"English (Tanzania)",value:"en-TZ"},{option:"English (United Kingdom)",value:"en-GB"},{option:"English (United States)",value:"en-US"},{option:"Estonian (Estonia)",value:"et-EE"},{option:"Filipino (Philippines)",value:"fil-PH"},{option:"Finnish (Finland)",value:"fi-FI"},{option:"French (Belgium)",value:"fr-BE"},{option:"French (Canada)",value:"fr-CA"},{option:"French (France)",value:"fr-FR"},{option:"French (Switzerland)",value:"fr-CH"},{option:"Galician (Spain)",value:"gl-ES"},{option:"Georgian (Georgia)",value:"ka-GE"},{option:"German (Austria)",value:"de-AT"},{option:"German (Germany)",value:"de-DE"},{option:"German (Switzerland)",value:"de-CH"},{option:"Greek (Greece)",value:"el-GR"},{option:"Gujarati (India)",value:"gu-IN"},{option:"Hebrew (Israel)",value:"iw-IL"},{option:"Hindi (India)",value:"hi-IN"},{option:"Hungarian (Hungary)",value:"hu-HU"},{option:"Icelandic (Iceland)",value:"is-IS"},{option:"Indonesian (Indonesia)",value:"id-ID"},{option:"Italian (Italy)",value:"it-IT"},{option:"Italian (Switzerland)",value:"it-CH"},{option:"Japanese (Japan)",value:"ja-JP"},{option:"Javanese (Indonesia)",value:"jv-ID"},{option:"Kannada (India)",value:"kn-IN"},{option:"Kazakh (Kazakhstan)",value:"kk-KZ"},{option:"Khmer (Cambodia)",value:"km-KH"},{option:"Korean (South Korea)",value:"ko-KR"},{option:"Lao (Laos)",value:"lo-LA"},{option:"Latvian (Latvia)",value:"lv-LV"},{option:"Lithuanian (Lithuania)",value:"lt-LT"},{option:"Macedonian (North Macedonia)",value:"mk-MK"},{option:"Malay (Malaysia)",value:"ms-MY"},{option:"Malayalam (India)",value:"ml-IN"},{option:"Marathi (India)",value:"mr-IN"},{option:"Mongolian (Mongolia)",value:"mn-MN"},{option:"Nepali (Nepal)",value:"ne-NP"},{option:"Norwegian Bokmål (Norway)",value:"no-NO"},{option:"Persian (Iran)",value:"fa-IR"},{option:"Polish (Poland)",value:"pl-PL"},{option:"Portuguese (Brazil)",value:"pt-BR"},{option:"Portuguese (Portugal)",value:"pt-PT"},{option:"Punjabi (Gurmukhi India)",value:"pa-Guru-IN"},{option:"Romanian (Romania)",value:"ro-RO"},{option:"Russian (Russia)",value:"ru-RU"},{option:"Serbian (Serbia)",value:"sr-RS"},{option:"Sinhala (Sri Lanka)",value:"si-LK"},{option:"Slovak (Slovakia)",value:"sk-SK"},{option:"Slovenian (Slovenia)",value:"sl-SI"},{option:"Spanish (Argentina)",value:"es-AR"},{option:"Spanish (Bolivia)",value:"es-BO"},{option:"Spanish (Chile)",value:"es-CL"},{option:"Spanish (Colombia)",value:"es-CO"},{option:"Spanish (Costa Rica)",value:"es-CR"},{option:"Spanish (Dominican Republic)",value:"es-DO"},{option:"Spanish (Ecuador)",value:"es-EC"},{option:"Spanish (El Salvador)",value:"es-SV"},{option:"Spanish (Guatemala)",value:"es-GT"},{option:"Spanish (Honduras)",value:"es-HN"},{option:"Spanish (Mexico)",value:"es-MX"},{option:"Spanish (Nicaragua)",value:"es-NI"},{option:"Spanish (Panama)",value:"es-PA"},{option:"Spanish (Paraguay)",value:"es-PY"},{option:"Spanish (Peru)",value:"es-PE"},{option:"Spanish (Puerto Rico)",value:"es-PR"},{option:"Spanish (Spain)",value:"es-ES"},{option:"Spanish (United States)",value:"es-US"},{option:"Spanish (Uruguay)",value:"es-UY"},{option:"Spanish (Venezuela)",value:"es-VE"},{option:"Sundanese (Indonesia)",value:"su-ID"},{option:"Swahili (Kenya)",value:"sw-KE"},{option:"Swahili (Tanzania)",value:"sw-TZ"},{option:"Swedish (Sweden)",value:"sv-SE"},{option:"Tamil (India)",value:"ta-IN"},{option:"Tamil (Malaysia)",value:"ta-MY"},{option:"Tamil (Singapore)",value:"ta-SG"},{option:"Tamil (Sri Lanka)",value:"ta-LK"},{option:"Telugu (India)",value:"te-IN"},{option:"Thai (Thailand)",value:"th-TH"},{option:"Turkish (Turkey)",value:"tr-TR"},{option:"Ukrainian (Ukraine)",value:"uk-UA"},{option:"Urdu (India)",value:"ur-IN"},{option:"Urdu (Pakistan)",value:"ur-PK"},{option:"Uzbek (Uzbekistan)",value:"uz-UZ"},{option:"Vietnamese (Vietnam)",value:"vi-VN"},{option:"Zulu (South Africa)",value:"zu-ZA"}]}).factory("awsPollyVoice",function(){return[{value:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , Female)"}]}).factory("awsPollyRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-east-2",option:"US East (Ohio)"},{value:"us-west-1",option:"US West (N. California)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"ca-central-1",option:"Canada (Central)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"eu-central-1",option:"EU (Frankfurt)"},{value:"eu-west-2",option:"EU (London)"},{value:"eu-west-3",option:"EU (Paris)"},{value:"ap-southeast-1",option:"Asia Pacific (Singapore)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"},{value:"ap-northeast-2",option:"Asia Pacific (Seoul)"},{value:"ap-northeast-1",option:"Asia Pacific (Tokyo)"},{value:"ap-south-1",option:"Asia Pacific (Mumbai)"},{value:"sa-east-1",option:"South America (São Paulo)"}]}).factory("awsLexRegion",function(){return[{value:"us-east-1",option:"US East (N. Virginia)"},{value:"us-west-2",option:"US West (Oregon)"},{value:"eu-west-1",option:"EU (Ireland)"},{value:"ap-southeast-2",option:"Asia Pacific (Sydney)"}]}).factory("dialogFlowLanguage",function(){return[{value:"da",option:"Danish"},{value:"en",option:"English"},{value:"de",option:"German"},{value:"it",option:"Italian"},{value:"es",option:"Spanish"},{value:"fr",option:"French"},{value:"id",option:"Indonesian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean (South Korea)"},{value:"nl",option:"Dutch"},{value:"no",option:"Norwegian"},{value:"pt",option:"Portuguese (European)"},{value:"pt-br",option:"Portuguese (Nrazilian)"},{value:"ru",option:"Russian"},{value:"sv",option:"Swedish"},{value:"th",option:"Thai"},{value:"uk",option:"Ukrainian"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-HK",option:"Chinese (Hong Kong)"},{value:"zh-TW",option:"Chinese (Traditional)"}]}).factory("dialogFlowV2Language",function(){return[{value:"zh-HK",option:"Chinese (Cantonese)"},{value:"zh-CN",option:"Chinese (Simplified)"},{value:"zh-TW",option:"Chinese (Traditional)"},{value:"da",option:"Danish"},{value:"nl",option:"Dutch"},{value:"en",option:"English"},{value:"en-AU",option:"English (Australia)"},{value:"en-CA",option:"English (Canada)"},{value:"en-GB",option:"English (Great Britain)"},{value:"en-IN",option:"English (India)"},{value:"en-US",option:"English (US)"},{value:"fr",option:"French"},{value:"fr-CA",option:"French (Canada)"},{value:"fr-FR",option:"France (France)"},{value:"de",option:"German"},{value:"hi",option:"Hindi"},{value:"id",option:"Indonesian"},{value:"it",option:"Italian"},{value:"ja",option:"Japanese"},{value:"ko",option:"Korean"},{value:"no",option:"Norwegian"},{value:"pl",option:"Polish"},{value:"pt-BR",option:"Portuguese (Brazil)"},{value:"pt-PT",option:"Portuguese (Portugal)"},{value:"ru",option:"Russian"},{value:"es",option:"Spanish"},{value:"es-419",option:"Spanish (Latin America)"},{value:"es-ES",option:"Spanish (Spain)"},{value:"sw",option:"Swedish"},{value:"th",option:"Thai"},{value:"tr",option:"Turkish"},{value:"uk",option:"Ukrainian"}]})}(),function(){"use strict";function e(n,e,t,a){var i=this;i.project={preproduction:t},i.closeDialog=function(e){e?(a(i.project.preproduction),n.hide(i.project.preproduction)):n.hide()}}e.$inject=["$mdDialog","toasty","currentXML","saveCallback"],angular.module("app.callysquare").controller("MxGraphEditXMLController",e)}(),function(){"use strict";function e(n,t){var a=this;function i(e){e?(t(e),n.hide(e)):n.hide()}a.errors=[],a.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:5242880,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},a.ngFlow={flow:{}},a.dropping=!1,a.closeDialog=i,a.fileAdded=function(e){a.errors=[];_.includes(["xml"],e.getExtension())||a.errors.push({message:"The extension "+e.getExtension()+" is not supported!"});5242880<e.size&&a.errors.push({message:"The file is too big. The max allowed size is 5MB"});if(!a.errors.length){var n=new FileReader;n.onload=function(e){i(e.target.result)},n.readAsText(e.file)}}}e.$inject=["$mdDialog","saveCallback"],angular.module("app.callysquare").controller("MxGraphImportXMLController",e)}(),function(){"use strict";function e(n,t,e,a){var i=this;i.project=_.clone(e),i.closeDialog=function(){n.hide()},i.save=function(){i.errors=[],a.squareProject.update({id:i.project.id},{notes:i.project.notes,description:i.project.description}).$promise.then(function(e){t.success({title:"Project updated!",msg:i.project.name?i.project.name+" has been updated!":""}),n.hide(e)}).catch(function(e){console.error(e),i.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.update"}]})}}e.$inject=["$mdDialog","toasty","project","api"],angular.module("app.callysquare").controller("MxGraphUpdateInfoController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.projects=t,s.id="",s.newWindow=!0,s.closeDialog=function(e){s.errors=[],e?(n.hide(),s.newWindow?a.open("/callysquare/projects/"+s.id,"_blank"):i.go("app.callysquare.projects.edit",{id:s.id})):n.hide()}}e.$inject=["$mdDialog","toasty","projects","$window","$state"],angular.module("app.callysquare").controller("MxGraphOpenProjectController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o){var r=this;r.project=angular.copy(e),r.project.name+="_new",r.project.preproduction=a,r.newWindow=!0,r.closeDialog=function(){n.hide()},r.save=function(){delete r.project.id,i.squareProject.save(r.project).$promise.then(function(e){t.success({title:"Project properly created",msg:r.project.name?r.project.name+" has been created!":""}),n.hide(e),r.newWindow?s.open("/callysquare/projects/"+e.id,"_blank"):o.go("app.callysquare.projects.edit",{id:e.id})}).catch(function(e){console.error(e),r.errors=e.data.errors||[{message:e.toString(),type:"api.squareProject.save"}]})}}e.$inject=["$mdDialog","toasty","project","currentXML","api","$window","$state"],angular.module("app.callysquare").controller("MxGraphSaveProjectAsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S,T){var I=this;I.currentUser=T.getCurrentUser(),I.project=n||{},I.userProfileSection=S&&1==S.count?S.rows[0]:null,I.crudPermissions=T.parseCrudPermissions(I.userProfileSection?I.userProfileSection.crudPermissions:null),I.onInit=function(){new EditorUi(I,new Editor,document.getElementById("geEditor")).openString(I.project.preproduction,I.project.name,I.project)},I.saveOrPublishProject=function(e,n){var t={preproduction:e};n&&(t.production=e);r.squareProject.update({id:I.project.id},t).$promise.then(function(e){o.success({title:"Project "+(n?"published":"saved")+"!",msg:I.project.name?I.project.name+" has been "+(n?"published":"saved")+"!":""}),I.project.preproduction=e.preproduction}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsquareProject",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.openDialog=function(e,n){a.show({controller:"MxGraphDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{users:l.rows||[],trunks:d.rows||[],queues:c.rows||[],sounds:m.rows||[],variables:u.rows||[],databases:p.rows||[],contexts:g.rows||[],projects:v.rows||[],intervals:h.rows||[],mailAccounts:f.rows||[],smsAccounts:E.rows||[],pauses:y.rows||[],templates:b.rows||[],lists:A.rows||[],cell:e,saveCallback:n,crudPermissions:I.crudPermissions}})},I.newProject=function(e){a.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:e,projects:v.rows,openFromEditor:!0,license:null,setting:null,crudPermissions:I.crudPermissions}})},I.openProject=function(){a.show({controller:"MxGraphOpenProjectController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/open/open.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{projects:v.rows||[]}})},I.saveProjectAs=function(e){a.show({controller:"MxGraphSaveProjectAsController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{project:I.project,currentXML:e}}).then(function(e){e&&v.rows.push(e)})},I.newVariable=function(n){return i(function(a,n){return r.userProfileSection.get({userProfileId:I.currentUser.userProfileId,sectionId:1012}).$promise.then(function(e){var n=e.rows?e.rows[0]:null,t=T.parseCrudPermissions(n?n.crudPermissions:null);a(t)}).catch(function(e){n(e)})}).then(function(e){e.canEdit?a.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{variable:n,variables:u.rows,license:null,setting:null,crudPermissions:e}}):o.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE")})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:NEW_VARIABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})},I.updateInfo=function(e){a.show({controller:"MxGraphUpdateInfoController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/info/info.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:I.project}}).then(function(e){e&&_.merge(I.project,e)})},I.editXML=function(e,n){a.show({controller:"MxGraphEditXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/edit/edit.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{currentXML:e,saveCallback:n}}).then(function(e){e&&(I.project.preproduction=e)})},I.importXML=function(e){a.show({controller:"MxGraphImportXMLController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/edit/import/import.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{saveCallback:e}}).then(function(e){e&&(I.project.preproduction=e)})},I.gotoProjects=function(){e.go("app.callysquare.projects",{},{reload:"app.callysquare.projects"})}}e.$inject=["$state","$document","$mdDialog","$q","$translate","toasty","api","project","users","trunks","queues","sounds","variables","databases","contexts","projects","intervals","mailAccounts","templates","lists","smsAccounts","pauses","userProfileSection","Auth"],angular.module("app.callysquare").controller("ProjectController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.projects=a||{count:0,rows:[]},p.userProfile=i,p.userProfileSection=s&&1==s.count?s.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.listOrder="",p.listOrderAsc=null,p.selectedProjects=[],p.query={fields:"id,name,description,notes",sort:"-updatedAt",limit:10,page:1},p.editstate=function(e,n){t.go("app.callysquare.projects.edit",{id:e.id,crudPermissions:p.crudPermissions})},p.deleteconfirm=function(e,n){var t=l.confirm().title("Are you sure want to delete the project?").htmlContent("<b>"+e.name+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");l.show(t).then(function(){f(e)},function(){console.log("CANCEL")})},p.success=h,p.getProjects=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=o.squareProject.get(p.query,h).$promise:(p.query.id=p.userProfile.id,p.query.section="SquareProjects",p.promise=o.userProfile.getResources(p.query,h).$promise)},p.createOrEditProject=function(e,n){l.show({controller:"CreateOrEditSquareProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/projects/create/dialog.html",parent:angular.element(d.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:p.projects.rows,openFromEditor:null,setting:null,crudPermissions:p.crudPermissions}})},p.deleteProject=f,p.exportSelectedProjects=function(){var e=angular.copy(p.selectedProjects);return p.selectedProjects=[],e},p.deleteSelectedProjects=function(e){var n=l.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+p.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");l.show(n).then(function(){p.selectedProjects.forEach(function(e){f(e)}),p.selectedProjects=[]})},p.deselectProjects=function(){p.selectedProjects=[]},p.selectAllProjects=function(){p.selectedProjects=p.projects.rows};var g=!0,v=1;function h(e){p.projects=e||{count:0,rows:[]}}function f(e){o.squareProject.delete({id:e.id}).$promise.then(function(){_.remove(p.projects.rows,{id:e.id}),p.projects.count-=1,p.projects.rows.length||p.getProjects(),m.success({title:"Project deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.project.delete"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.project.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){g?c(function(){g=!1}):(n||(v=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=v),p.getProjects())})}e.$inject=["$scope","$state","$mdSidenav","projects","userProfile","userProfileSection","api","msUtils","$mdDialog","$document","$timeout","toasty","Auth"],angular.module("app.callysquare").controller("ProjectsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CALLYSQUARE.EDIT_SQUARERECORDING",g.squareRecording=angular.copy(l),g.squareRecordings=r,g.newSquareRecording=!1,g.squareRecording||(g.squareRecording={},g.title="CALLYSQUARE.NEW_SQUARERECORDING",g.newSquareRecording=!0),g.addNewSquareRecording=function(){g.errors=[],d.squareRecording.save(g.squareRecording).$promise.then(function(e){g.squareRecordings.unshift(e.toJSON()),o.success({title:"SquareRecording properly created",msg:g.squareRecording.name?g.squareRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSquareRecording=function(){g.errors=[],d.squareRecording.update({id:g.squareRecording.id},g.squareRecording).$promise.then(function(e){var n=_.find(g.squareRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SquareRecording properly saved!",msg:g.squareRecording.name?g.squareRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSquareRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The squareRecording will be deleted.").ariaLabel("Delete SquareRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.squareRecording.delete({id:g.squareRecording.id}).$promise.then(function(){_.remove(g.squareRecordings,{id:g.squareRecording.id}),o.success({title:"SquareRecording properly deleted!",msg:(g.squareRecording.name||"squareRecording")+" has been deleted!"}),v(g.squareRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.squareRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","squareRecordings","squareRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.callysquare").controller("CreateOrEditSquareRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.squareRecordings=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="squareRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedSquareRecordings=[],f.query={fields:"createdAt,updatedAt,id,filename,projectName,uniqueid,callerid,extension,audio,savePath,format",sort:"-createdAt",limit:10,page:1},f.downloadfile2=function(s,e){return m.squareRecording.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+s.format;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.squareRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("squareRecording")+"?").htmlContent("<b>"+(e.name||"squareRecording")+"</b> will be deleted.").ariaLabel("delete squareRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSquareRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.squareRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SquareRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSquareRecording=function(e,n){i.show({controller:"CreateOrEditSquareRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/callysquare/views/squareRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{squareRecording:n,squareRecordings:f.squareRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSquareRecording=y,f.exportSelectedSquareRecordings=function(){var e=angular.copy(f.selectedSquareRecordings);return f.selectedSquareRecordings=[],e},f.deleteSelectedSquareRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected squareRecordings?").htmlContent("<b>"+f.selectedSquareRecordings.length+" selected</b> will be deleted.").ariaLabel("delete SquareRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSquareRecordings.forEach(function(e){y(e)}),f.selectedSquareRecordings=[]})},f.deselectSquareRecordings=function(){f.selectedSquareRecordings=[]},f.selectAllSquareRecordings=function(){f.selectedSquareRecordings=f.squareRecordings.rows};var b=!0,A=1;function E(e){f.squareRecordings=e||{count:0,rows:[]}}function y(e){m.squareRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.squareRecordings.rows,{id:e.id}),f.squareRecordings.count-=1,f.squareRecordings.rows.length||f.getSquareRecordings(),p.success({title:_.startCase("SquareRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsquareRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsquareRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSquareRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","squareRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.callysquare").controller("SquareRecordingsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatQueues",f.listOrder="",f.listOrderAsc=null,f.selectedChatQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"chat",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatQueues.edit",{id:e.id,chatQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:f.chatQueues?f.chatQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatQueue")+"?").htmlContent("<b>"+(e.name||"chatQueue")+"</b> will be deleted.").ariaLabel("delete chatQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.chat.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.chat.realtime.queues",{})}},f.success=E,f.getChatQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatQueue=function(e,n){i.show({controller:"CreateOrEditChatQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatQueue:n,chatQueues:f.chatQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteChatQueue=y,f.exportSelectedChatQueues=function(){var e=angular.copy(f.selectedChatQueues);return f.selectedChatQueues=[],e},f.deleteSelectedChatQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatQueues?").htmlContent("<b>"+f.selectedChatQueues.length+" selected</b> will be deleted.").ariaLabel("delete ChatQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatQueues.forEach(function(e){y(e)}),f.selectedChatQueues=[]})},f.deselectChatQueues=function(){f.selectedChatQueues=[]},f.selectAllChatQueues=function(){f.selectedChatQueues=f.chatQueues.rows};var b=!0,A=1;function E(e){f.chatQueues=e||{count:0,rows:[]}}function y(e){m.chatQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.chatQueues.rows,{id:e.id}),f.chatQueues.count-=1,f.chatQueues.rows.length||f.getChatQueues(),p.success({title:_.startCase("ChatQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatQueuesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="CHAT.EDIT_CHATQUEUE",r.chatQueue=angular.copy(n),r.chatQueues=e,r.newChatQueue=!1,r.chatQueue||(r.chatQueue={strategy:"beepall",timeout:10},r.title="CHAT.NEW_CHATQUEUE",r.newChatQueue=!0),r.addNewChatQueue=function(){r.errors=[],i.chatQueue.save(r.chatQueue).$promise.then(function(e){r.chatQueues.unshift(e.toJSON()),a.success({title:"ChatQueue properly created",msg:r.chatQueue.name?r.chatQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveChatQueue=function(){r.errors=[],i.chatQueue.update({id:r.chatQueue.id},r.chatQueue).$promise.then(function(e){var n=_.find(r.chatQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"ChatQueue properly saved!",msg:r.chatQueue.name?r.chatQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteChatQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The chatQueue will be deleted.").ariaLabel("Delete ChatQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.chatQueue.delete({id:r.chatQueue.id}).$promise.then(function(){_.remove(r.chatQueues,{id:r.chatQueue.id}),a.success({title:"ChatQueue properly deleted!",msg:(r.chatQueue.name||"chatQueue")+" has been deleted!"}),l(r.chatQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.chatQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","chatQueues","chatQueue","api","Auth","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getAgents({id:c.chatQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatQueue?"penalty "+e.UserChatQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addAgents({id:c.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","chatQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatQueue.getTeams({id:l.chatQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.chatQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("CHAT.ALL_TEAMS"),labelSelected:t.instant("CHAT.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.removeTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatQueue.addTeams({id:l.chatQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","chatQueue","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.chatQueue=c||e.params.chatQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"ChatQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"ChatQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatQueue:e,chatQueues:u.chatQueues?u.chatQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoChatQueues=function(){e.go("app.chat.chatQueues",{},{reload:"app.chat.chatQueues"})},u.saveChatQueue=function(){r.chatQueue.update({id:u.chatQueue.id},u.chatQueue).$promise.then(function(){l.success({title:"ChatQueue updated!",msg:u.chatQueue.name?u.chatQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatQueue","userProfileSection"],angular.module("app.chat").controller("ChatQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chatWebsites=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chatWebsites",f.listOrder="",f.listOrderAsc=null,f.selectedChatWebsites=[],f.query={fields:"createdAt,updatedAt,id,token,agentIdentifier,customerAlias,messageFontSize,name,key,address,remote,ListId,fidelity,timeout,agentAlias,closingQuestion,formSubmitSuccessMessage,formSubmitFailureMessage,color,color_focus,color_button,textColor,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,messagesAlignment,defaultTitle,animation,defaultWhiteLabel,whiteLabel,defaultLogo,conditionAgreement,autoclose,enableUnmanagedNote,unmanagedMessage,skipUnmanaged,sendUnmanaged,enableCustomerWriting,waitingTitle,waitingMessage,closingMessage,noteTitle,placeholderMessage,skipMessageButton,enableRating,ratingType,ratingStarsNumber,enableFeedback,feedbackTitle,forwardTranscript,forwardTranscriptMessage,closingMessageButton,download_transcript,enableCustomerAttachment,enableSendButton,enableCustomerCheckmarks,systemAlias,enquiry_enable,enquiry_forwarding,enquiry_forwarding_address,name_title,username_placeholder,email_title,email_placeholder,header_online,hideWhenOffline,header_offline,start_chat_button,offline_chat_button,offlineMessageSubject,offlineMessageBody,offline_message,message_title,enquiry_message_placeholder,enquiry_button,rating_message,rating_send,rating_skip,onlineForm,offlineForm,mapKey,mapKeyOffline,forwardOffline,MailAccountId,openNewInteraction,forwardOfflineAddress,subjectOffline,IntervalId,timezone,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout,vidaooEscalation,vidaooApiKey,vidaooTopic,vidaooNote,vidaooMetadata",sort:"-updatedAt",limit:10,page:1},f.arrayagentIdentifier=_.keyBy([{option:"WebsiteAlias",value:"'website_alias'"},{option:"AgentAlias",value:"'agent_alias'"},{option:"AgentFullname",value:"'agent_fullname'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayheader_shape=_.keyBy([{option:"Rounded",value:"'rounded'"},{option:"Squared",value:"'squared'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayalignment=_.keyBy([{option:"bottom_right",value:"'bottom_right'"},{option:"right",value:"'right'"},{option:"left",value:"'left'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymessagesAlignment=_.keyBy([{option:"alternate",value:"'alternate'"},{option:"centered",value:"'centered'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayratingType=_.keyBy([{option:"Star",value:"'star'"},{option:"Thumb",value:"'thumb'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,chatWebsite:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:10})},f.offlinemessagesgoto=function(e,n){t.go("app.chat.chatWebsites.edit",{id:e.id,tab:11})},f.agentadddialog=function(e,n){i.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:f.chatWebsites?f.chatWebsites.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chatWebsite")+"?").htmlContent("<b>"+(e.name||"chatWebsite")+"</b> will be deleted.").ariaLabel("delete chatWebsite").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChatWebsites=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.chatWebsite.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChatWebsites",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditChatWebsite=function(e,n){i.show({controller:"CreateOrEditChatWebsiteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:n,chatWebsites:f.chatWebsites.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteChatWebsite=y,f.exportSelectedChatWebsites=function(){var e=angular.copy(f.selectedChatWebsites);return f.selectedChatWebsites=[],e},f.deleteSelectedChatWebsites=function(e){var n=i.confirm().title("Are you sure want to delete the selected chatWebsites?").htmlContent("<b>"+f.selectedChatWebsites.length+" selected</b> will be deleted.").ariaLabel("delete ChatWebsites").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChatWebsites.forEach(function(e){y(e)}),f.selectedChatWebsites=[]})},f.deselectChatWebsites=function(){f.selectedChatWebsites=[]},f.selectAllChatWebsites=function(){f.selectedChatWebsites=f.chatWebsites.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.lists,{id:Number(f.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.lists,{id:Number(f.chatWebsite.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.chatWebsite&&(t=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.chatWebsite&&(a=_.find(f.interval,{id:Number(f.chatWebsite.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.chatWebsites=e||{count:0,rows:[]}}function y(e){m.chatWebsite.delete({id:e.id}).$promise.then(function(){_.remove(f.chatWebsites.rows,{id:e.id}),f.chatWebsites.count-=1,f.chatWebsites.rows.length||f.getChatWebsites(),p.success({title:_.startCase("ChatWebsite")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChatWebsites())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chatWebsites","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.chat").controller("ChatWebsitesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATWEBSITE",g.chatWebsite=angular.copy(l),g.chatWebsites=r,g.newChatWebsite=!1,g.chatWebsite||(g.chatWebsite={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),header_shape:"rounded",alignment:"bottom_right",verticalAlignment:30,labelText:"CHAT",messagesAlignment:"alternate",IntervalId:"null",timezone:"null",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300,vidaooTopic:"Generated by XCALLY Motion",vidaooNote:"Meeting generated for interaction #{{interaction.id}} by {{agent.name}}"},g.title="CHAT.NEW_CHATWEBSITE",g.newChatWebsite=!0),n.params.id&&(g.chatWebsite.ChatWebsiteId=n.params.id),g.addNewChatWebsite=function(){g.errors=[],d.chatWebsite.save(g.chatWebsite).$promise.then(function(e){g.chatWebsites.unshift(e.toJSON()),o.success({title:"ChatWebsite properly created",msg:g.chatWebsite.name?g.chatWebsite.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatWebsite=function(){g.errors=[],d.chatWebsite.update({id:g.chatWebsite.id},g.chatWebsite).$promise.then(function(e){var n=_.find(g.chatWebsites,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatWebsite properly saved!",msg:g.chatWebsite.name?g.chatWebsite.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatWebsite=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatWebsite will be deleted.").ariaLabel("Delete ChatWebsite").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatWebsite.delete({id:g.chatWebsite.id}).$promise.then(function(){_.remove(g.chatWebsites,{id:g.chatWebsite.id}),o.success({title:"ChatWebsite properly deleted!",msg:(g.chatWebsite.name||"chatWebsite")+" has been deleted!"}),v(g.chatWebsite)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatWebsite.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.lists,{id:Number(g.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.lists,{id:Number(g.chatWebsite.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.chatWebsite&&(t=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.chatWebsite&&(a=_.find(g.interval,{id:Number(g.chatWebsite.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatWebsites","chatWebsite","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatWebsiteDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsiteApp:t,chatWebsite:r.chatWebsite,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.chatWebsiteApps.rows[n]=e:r.chatWebsiteApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.chatWebsiteApps.rows.length;t++,0){var a=r.chatWebsiteApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.chatWebsite.context,a.exten=r.chatWebsite.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.chatWebsite.addApplications({id:r.chatWebsite.id},_.sortBy(n,"priority")).$promise.then(function(e){r.chatWebsiteApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.chatWebsiteApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.chatWebsite={},r.chatWebsiteApps={count:0,rows:[]},r.selectedChatWebsiteApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"ChatQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"chatQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:501}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",role:"agent",sort:"name",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"tvox",appType:"tvox",type:"tvox",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"serviceid",name:"serviceid",type:"text",param:0},{title:"channelid",name:"channelid",type:"text",param:1},{title:"tvoxurl",name:"tvoxurl",type:"text",param:2},{title:"tvoxloginurl",name:"tvoxloginurl",type:"text",param:3},{title:"tvoxsessionurl",name:"tvoxsessionurl",type:"text",param:4},{title:"tvoxusername",name:"tvoxusername",type:"text",param:5},{title:"tvoxpasswd",name:"tvoxpasswd",type:"password",param:6},{title:"motionurlonring",name:"motionurlonring",type:"text",param:7},{title:"motionurlonanswer",name:"motionurlonanswer",type:"text",param:8},{title:"motiontitle",name:"motiontitle",type:"text",param:9},{title:"motionurl",name:"motionurl",type:"text",param:10}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.chatWebsite=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getChatWebsiteApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.chatWebsiteApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getChatWebsiteApps=function(){r.promise=o.chatWebsite.getApplications(r.query,t).$promise},r.editChatWebsiteApp=n,r.editInterval=function(e,n){if(r.chatWebsiteApps.rows.length){var t=r.chatWebsiteApps.rows[n]?r.chatWebsiteApps.rows[n]:r.chatWebsiteApps.rows[0];i.show({controller:"EditChatWebsiteAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteChatWebsiteApp=function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedChatWebsiteApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedChatWebsiteApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedChatWebsiteApps.forEach(function(e){_.remove(r.chatWebsiteApps.rows,{id:e.id})}),r.selectedChatWebsiteApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.chatWebsite.getAgents({id:c.chatWebsite.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserChatWebsite?"penalty "+e.UserChatWebsite.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.chatWebsite=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.removeAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.chatWebsite.addAgents({id:c.chatWebsite.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CHAT.ALL_AGENTS"),labelSelected:r.instant("CHAT.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","chatWebsite","chatWebsites","realtime","$translate","Auth","crudPermissions"],angular.module("app.chat").controller("ChatWebsiteagentaddController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsiteagentAvatarController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditChatWebsiteAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("chat")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.chatQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:501}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptagDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="CHAT.EDIT_"+(a.appType||a.app).toUpperCase(),l.tvox=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tvox.appdata)switch(l.tvox.appType?l.tvox.appType.toLowerCase():l.tvox.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tvox.appdata.split(",");l.tvox.key=d[0],l.tvox.language=d[1],l.tvox.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tvox.appdata.split(",");l.tvox.projectId=d[0],l.tvox.clientEmail=d[1],l.tvox.privateKey=d[2],l.tvox.language=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tvox.appdata.split(",");l.tvox.accesskeyid=d[0],l.tvox.secretaccesskey=d[1],l.tvox.lexregion=d[2],l.tvox.botname=d[3],l.tvox.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tvox.appdata.split(",");l.tvox.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tvox.text=d.slice(1,d.length).join(",");break;case"message":l.tvox.text=l.tvox.appdata;break;case"set":l.tvox.name=l.tvox.appdata.split("=")[0],l.tvox.value=l.tvox.appdata.split("=")[1];break;case"agi":l.tvox.project=l.tvox.appdata;break;default:var c=l.tvox.appdata.split(",");l.tvox.serviceid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.tvox.channelid=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.tvox.tvoxurl=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.tvox.tvoxloginurl=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.tvox.tvoxsessionurl=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10),l.tvox.tvoxusername=_.isEmpty(c[5])?c[5]:isNaN(c[5])?c[5]:parseInt(c[5],10),l.tvox.tvoxpasswd=_.isEmpty(c[6])?c[6]:isNaN(c[6])?c[6]:parseInt(c[6],10),l.tvox.motionurlonring=_.isEmpty(c[7])?c[7]:isNaN(c[7])?c[7]:parseInt(c[7],10),l.tvox.motionurlonanswer=_.isEmpty(c[8])?c[8]:isNaN(c[8])?c[8]:parseInt(c[8],10),l.tvox.motiontitle=_.isEmpty(c[9])?c[9]:isNaN(c[9])?c[9]:parseInt(c[9],10),l.tvox.motionurl=_.isEmpty(c[10])?c[10]:isNaN(c[10])?c[10]:parseInt(c[10],10)}function m(e){n.hide(e)}l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outbounddial"===l.tvox.appType.toLowerCase()&&(l.tvox.prefix=l.tvox.phone?l.tvox.phone.split("$")[0]:void 0,l.tvox.callerId=l.tvox.callerID?"CALLERID(all)="+l.tvox.callerID:void 0),l.saveChatWebsiteApp=function(){l.errors=[];var e=[];l.tvox.type&&"outbound"===l.tvox.type.toLowerCase()&&"outboundDial"===l.tvox.appType&&(l.tvox.phone=i.cutdigits?(l.tvox.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tvox.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tvox.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tvox.options+="U(xcally-mixmonitor-context)"):l.tvox.options=l.tvox.options.replace("U(xcally-mixmonitor-context)",""));if(l.tvox.appType&&"custom"===l.tvox.appType);else switch((l.tvox.app||l.tvox.appType).toLowerCase()){case"set":l.tvox.appdata=l.tvox.name+"="+l.tvox.value;break;case"custom":break;default:e[0]=l.tvox.serviceid,e[1]=l.tvox.channelid,e[2]=l.tvox.tvoxurl,e[3]=l.tvox.tvoxloginurl,e[4]=l.tvox.tvoxsessionurl,e[5]=l.tvox.tvoxusername,e[6]=l.tvox.tvoxpasswd,e[7]=l.tvox.motionurlonring,e[8]=l.tvox.motionurlonanswer,e[9]=l.tvox.motiontitle,e[10]=l.tvox.motionurl,l.tvox.appdata=e.join(",")}m(l.tvox)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","chatWebsiteApp","chatWebsite","api","Auth","crudPermissions"],angular.module("app.chat").controller("EditChatWebsiteApptvoxDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteChatCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteChatCannedAnswers.rows,{id:e.id}),m.chatWebsiteChatCannedAnswers.count-=1,m.chatWebsiteChatCannedAnswers.rows.length||p(),l.success({title:"ChatCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteChatCannedAnswers={count:0,rows:[]},m.selectedChatWebsiteChatCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatCannedAnswer #")+e.id||"chatCannedAnswer")+"</b> will be deleted.").ariaLabel("delete chatCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteChatCannedAnswers=p,m.createOrEditChatWebsiteChatCannedAnswer=function(e,n){o.show({controller:"CreateOrEditChatCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatCannedAnswer:n,chatCannedAnswers:m.chatWebsiteChatCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteChatCannedAnswers=function(){var e=angular.copy(m.selectedChatWebsiteChatCannedAnswers);return m.selectedChatWebsiteChatCannedAnswers=[],e},m.deleteChatWebsiteChatCannedAnswer=g,m.deleteSelectedChatWebsiteChatCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected chatCannedAnswers?").htmlContent("<b>"+m.selectedChatWebsiteChatCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete chatCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteChatCannedAnswers.forEach(function(e){g(e)}),m.selectedChatWebsiteChatCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteChatCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATCANNEDANSWER",g.chatCannedAnswer=angular.copy(l),g.chatCannedAnswers=r,g.newChatCannedAnswer=!1,g.chatCannedAnswer||(g.chatCannedAnswer={},g.title="CHAT.NEW_CHATCANNEDANSWER",g.newChatCannedAnswer=!0),n.params.id&&(g.chatCannedAnswer.ChatWebsiteId=n.params.id),g.addNewChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.chatCannedAnswer).$promise.then(function(e){g.chatCannedAnswers.unshift(e.toJSON()),o.success({title:"ChatCannedAnswer properly created",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.chatCannedAnswer.id},g.chatCannedAnswer).$promise.then(function(e){var n=_.find(g.chatCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatCannedAnswer properly saved!",msg:g.chatCannedAnswer.name?g.chatCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatCannedAnswer will be deleted.").ariaLabel("Delete ChatCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.chatCannedAnswer.id}).$promise.then(function(){_.remove(g.chatCannedAnswers,{id:g.chatCannedAnswer.id}),o.success({title:"ChatCannedAnswer properly deleted!",msg:(g.chatCannedAnswer.name||"chatCannedAnswer")+" has been deleted!"}),v(g.chatCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chatCannedAnswers","chatCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.chatWebsite.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.chatWebsite=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.chatWebsite.id,field:"ChatWebsiteId",route:"chatWebsite"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.chat").controller("ChatWebsiteDispositionsController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.offlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"},{type:"upload",name:"Upload",icon:"icon-upload"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.offlineForm)&&(i.chatWebsite.offlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.offlineForm.items[n-1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n-1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey--:i.chatWebsite.offlineForm.fromKey===n-1&&i.chatWebsite.offlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.offlineForm.items.length-1){var t=i.chatWebsite.offlineForm.items[n+1];i.chatWebsite.offlineForm.items[n]=t,i.chatWebsite.offlineForm.items[n+1]=angular.copy(e),i.chatWebsite.offlineForm.fromKey===n?i.chatWebsite.offlineForm.fromKey++:i.chatWebsite.offlineForm.fromKey===n+1&&i.chatWebsite.offlineForm.fromKey--}},i.add=function(e){i.chatWebsite.offlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.offlineForm.items.splice(e,1)})},i.card_type="offline",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteofflineFormController",e)}(),function(){"use strict";function e(t,e,a){var i=this;i.chatWebsite={},i.onlineForm={},i.buttons=[{type:"label",name:"Label",icon:"icon-label"},{type:"chooseFromList",name:"Select",icon:"icon-playlist-plus"},{type:"input",name:"Input",icon:"icon-keyboard"},{type:"textarea",name:"Textarea",icon:"icon-format-text"},{type:"multipleChoices",name:"Radio Buttons",icon:"icon-radiobox-marked"},{type:"checkboxes",name:"Checkboxes",icon:"icon-checkbox-multiple-marked-outline"},{type:"agreement",name:"Agreement",icon:"icon-checkbox-marked-outline"}],i.init=function(e){i.fields=[],i.customFields=[],i.uselessFields=["id","createdAt","updatedAt","ListId","CompanyId","$promise","$resolved"],i.chatWebsite=e,_.isEmpty(i.chatWebsite.onlineForm)&&(i.chatWebsite.onlineForm={items:[],fromKey:null});a.cmList.getCustomFields({id:i.chatWebsite.ListId}).$promise.then(function(e){for(var n=0;n<e.rows.length;n++)i.customFields.push({key:"cf_"+e.rows[n].id,value:e.rows[n].alias});return a.cmContact.describe().$promise}).then(function(e){for(var n=_.keys(e),t=0;t<n.length;t++)_.includes(i.uselessFields,n[t])||_.startsWith(n[t],"cf_")||i.fields.unshift({key:n[t],value:n[t]});return a.variable.get().$promise}).then(function(e){return i.variables=e.rows,a.mailAccount.get({fields:"id,name",raw:!0}).$promise.then(function(e){i.email_accounts=e.rows})}).catch(function(e){console.error(e)})},i.up=function(e,n){if(0!==n){var t=i.chatWebsite.onlineForm.items[n-1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n-1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey--:i.chatWebsite.onlineForm.fromKey===n-1&&i.chatWebsite.onlineForm.fromKey++}},i.down=function(e,n){if(n!==i.chatWebsite.onlineForm.items.length-1){var t=i.chatWebsite.onlineForm.items[n+1];i.chatWebsite.onlineForm.items[n]=t,i.chatWebsite.onlineForm.items[n+1]=angular.copy(e),i.chatWebsite.onlineForm.fromKey===n?i.chatWebsite.onlineForm.fromKey++:i.chatWebsite.onlineForm.fromKey===n+1&&i.chatWebsite.onlineForm.fromKey--}},i.add=function(e){i.chatWebsite.onlineForm.items.push({type:e,cmField:null,variable:null})},i.remove=function(e){var n=t.confirm().title("The component will be deleted.").textContent("Are you sure?").ariaLabel("Lucky day").ok("Ok").cancel("Cancel");t.show(n).then(function(){i.chatWebsite.onlineForm.fromKey===e&&(i.chatWebsite.onlineForm.fromKey=null),i.chatWebsite.onlineForm.items.splice(e,1),i.chatWebsite.onlineForm.items.length||(i.chatWebsite.onlineForm.fromKey=null)})},i.card_type="online",i.email_accounts=[]}e.$inject=["$mdDialog","$document","api"],angular.module("app.chat").controller("ChatWebsiteonlineFormController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/customer_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitecustomerAvatarController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(e){d.chatInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteInteractions.rows,{id:e.id}),m.chatWebsiteInteractions.count-=1,m.chatWebsiteInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteInteractions={count:0,rows:[]},m.selectedChatWebsiteInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.chatInteractionDownload=function(s,e,n){return d.chatInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="chat-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatWebsite.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getChatWebsiteInteractions=g,m.createOrEditChatWebsiteInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,interaction:n,interactions:m.chatWebsiteInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spychatInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"chat",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"chat.chatWebsites"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||ChatWebsiteId:=$eq["+m.chatWebsite.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedChatWebsiteInteractions=function(){var e=angular.copy(m.selectedChatWebsiteInteractions);return m.selectedChatWebsiteInteractions=[],e},m.deleteChatWebsiteInteraction=v,m.deleteSelectedChatWebsiteInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedChatWebsiteInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteInteractions.forEach(function(e){v(e)}),m.selectedChatWebsiteInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteInteractionsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/logo".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitelogoController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteOfflineMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getOfflineMessages(m.query,u).$promise}function g(e){d.chatOfflineMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteOfflineMessages.rows,{id:e.id}),m.chatWebsiteOfflineMessages.count-=1,m.chatWebsiteOfflineMessages.rows.length||p(),l.success({title:"OfflineMessage deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteOfflineMessages={count:0,rows:[]},m.selectedChatWebsiteOfflineMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,attachments,Contact.firstName,ContactId,ChatWebsiteId",sort:"-createdAt",limit:10,page:1},m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the offlineMessage?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("offlineMessage #")+e.id||"offlineMessage")+"</b> will be deleted.").ariaLabel("delete offlineMessage").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteOfflineMessages=p,m.createOrEditChatWebsiteOfflineMessage=function(e,n){o.show({controller:"CreateOrEditOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,offlineMessage:n,offlineMessages:m.chatWebsiteOfflineMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showOfflineMessageChatWebsiteOfflineMessage=function(e,t){o.show({controller:"ShowOfflineMessageOfflineMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{message:["apiResolver","$stateParams",function(e,n){return e.resolve("chatOfflineMessage@get",{fields:"id,body",id:t.id})}],attachments:["apiResolver","$stateParams",function(e,n){return e.resolve("attachment@get",{fields:"id,name",ChatOfflineMessageId:t.id})}]}})},m.exportSelectedChatWebsiteOfflineMessages=function(){var e=angular.copy(m.selectedChatWebsiteOfflineMessages);return m.selectedChatWebsiteOfflineMessages=[],e},m.deleteChatWebsiteOfflineMessage=g,m.deleteSelectedChatWebsiteOfflineMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected offlineMessages?").htmlContent("<b>"+m.selectedChatWebsiteOfflineMessages.length+" selected</b> will be deleted.").ariaLabel("delete offlineMessages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteOfflineMessages.forEach(function(e){g(e)}),m.selectedChatWebsiteOfflineMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteOfflineMessagesController",e)}(),function(){"use strict";function e(n,e,t,a,i){var s=this;s.title="CHAT.OFFLINE_MESSAGE",s.message=a,s.attachments=i.rows,s.closeDialog=function(e){n.hide(e)},s.download=function(i){return e.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.isHtml=_.isNil(s.message.body.match(/\s?<!doctype html>|(<html\b[^>]*>|<body\b[^>]*>|<x-[^>]+>)+/i))}e.$inject=["$mdDialog","api","toasty","message","attachments"],angular.module("app.chat").controller("ShowOfflineMessageOfflineMessageDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.chatWebsiteProactiveActions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatWebsite.getProactiveActions(m.query,u).$promise}function g(e){d.chatProactiveAction.delete({id:e.id}).$promise.then(function(){_.remove(m.chatWebsiteProactiveActions.rows,{id:e.id}),m.chatWebsiteProactiveActions.count-=1,m.chatWebsiteProactiveActions.rows.length||p(),l.success({title:"ChatProactiveAction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETchatWebsite"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.chatWebsite={},m.chatWebsiteProactiveActions={count:0,rows:[]},m.selectedChatWebsiteProactiveActions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,name,type,selector,timeout",limit:10,page:1},m.arraytype=_.keyBy([{option:"MouseOver",value:"'mouseOver'"},{option:"Timeout",value:"'timeout'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n,t){m.chatWebsite=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.ChatWebsiteId=m.chatWebsite.id,m.query.id=m.chatWebsite.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the chatProactiveAction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("chatProactiveAction #")+e.id||"chatProactiveAction")+"</b> will be deleted.").ariaLabel("delete chatProactiveAction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getChatWebsiteProactiveActions=p,m.createOrEditChatWebsiteChatProactiveAction=function(e,n){o.show({controller:"CreateOrEditChatProactiveActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{chatWebsite:m.chatWebsite,chatProactiveAction:n,proactive:m.chatWebsiteProactiveActions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedChatWebsiteProactiveActions=function(){var e=angular.copy(m.selectedChatWebsiteProactiveActions);return m.selectedChatWebsiteProactiveActions=[],e},m.deleteChatWebsiteChatProactiveAction=g,m.deleteSelectedChatWebsiteProactiveActions=function(e){var n=o.confirm().title("Are you sure want to delete the selected proactive?").htmlContent("<b>"+m.selectedChatWebsiteProactiveActions.length+" selected</b> will be deleted.").ariaLabel("delete proactive").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedChatWebsiteProactiveActions.forEach(function(e){g(e)}),m.selectedChatWebsiteProactiveActions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.chat").controller("ChatWebsiteProactiveActionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CHAT.EDIT_CHATPROACTIVEACTION",g.chatProactiveAction=angular.copy(l),g.proactive=r,g.newChatProactiveAction=!1,g.chatProactiveAction||(g.chatProactiveAction={type:"mouseOver"},g.title="CHAT.NEW_CHATPROACTIVEACTION",g.newChatProactiveAction=!0),n.params.id&&(g.chatProactiveAction.ChatWebsiteId=n.params.id),g.addNewChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.save(g.chatProactiveAction).$promise.then(function(e){g.proactive.unshift(e.toJSON()),o.success({title:"ChatProactiveAction properly created",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveChatProactiveAction=function(){g.errors=[],d.chatProactiveAction.update({id:g.chatProactiveAction.id},g.chatProactiveAction).$promise.then(function(e){var n=_.find(g.proactive,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ChatProactiveAction properly saved!",msg:g.chatProactiveAction.name?g.chatProactiveAction.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteChatProactiveAction=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chatProactiveAction will be deleted.").ariaLabel("Delete ChatProactiveAction").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.chatProactiveAction.delete({id:g.chatProactiveAction.id}).$promise.then(function(){_.remove(g.proactive,{id:g.chatProactiveAction.id}),o.success({title:"ChatProactiveAction properly deleted!",msg:(g.chatProactiveAction.name||"chatProactiveAction")+" has been deleted!"}),v(g.chatProactiveAction)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.chatProactiveAction.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatProactiveAction.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","proactive","chatProactiveAction","api","Auth","license","setting","crudPermissions"],angular.module("app.chat").controller("CreateOrEditChatProactiveActionDialogController",e)}(),function(){"use strict";function e(e){var n=this;n.chatWebsite={},n.init=function(e){n.chatWebsite=e,n.start="\n\x3c!-- START Motion Chat Script --\x3e",n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>',n.end="\n\x3c!-- START Motion Chat Script --\x3e"},n.info={},e.$watch("vm_ac.chatWebsite.remote",function(e){n.script='\n    <script src="'+n.chatWebsite.remote+"/api/chat/websites/"+n.chatWebsite.id+"/snippet?token="+n.chatWebsite.token+'"><\/script>'})}e.$inject=["$scope"],angular.module("app.chat").controller("ChatWebsiteScriptController",e)}(),function(){"use strict";function e(e,a){var i=this;i.chatWebsite={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.chatWebsite.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.chatWebsite.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.chatWebsite=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="/api/chat/websites/:id/system_avatar".replace(":id",i.chatWebsite.id),i.chatWebsite.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.chat").controller("ChatWebsitesystemAvatarController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.chatWebsite=c||e.params.chatWebsite||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"ChatWebsiteagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{chatWebsite:e,chatWebsites:p.chatWebsites?p.chatWebsites.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoChatWebsites=function(){e.go("app.chat.chatWebsites",{},{reload:"app.chat.chatWebsites"})},p.saveChatWebsite=function(){r.chatWebsite.update({id:p.chatWebsite.id},p.chatWebsite).$promise.then(function(){l.success({title:"ChatWebsite updated!",msg:p.chatWebsite.name?p.chatWebsite.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.lists,{id:Number(p.chatWebsite.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.lists,{id:Number(p.chatWebsite.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){p.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.interval,{id:e.resourceId})}),t=null;if(p.chatWebsite&&(t=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.interval,{id:t.id});a.canSelect=!1,n.push(a)}p.interval=n})}else{var t=[],a=null;p.chatWebsite&&(a=_.find(p.interval,{id:Number(p.chatWebsite.IntervalId)}));for(var i=0;i<p.interval.length;i++)a&&p.interval[i].id===a.id&&(p.interval[i].canSelect=!1,t.push(p.interval[i]));p.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","chatWebsite","userProfile","userProfileSection"],angular.module("app.chat").controller("ChatWebsiteController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.chat.realtime.agents":this.selectedTab=0;break;case"app.chat.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.chat.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.chat.realtime.agents");break;case 1:t.go("app.chat.realtime.queues");break;default:t.go("app.chat.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.chat").controller("ChatRealtimeController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.companies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="companies",f.listOrder="",f.listOrderAsc=null,f.selectedCompanies=[],f.query={fields:"createdAt,updatedAt,id,name,phone,vat,fax,companyId,type,website,emailDomain,email,description,sStreet,sPostalCode,sCity,sCountry,street,postalCode,city,country",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.companies.edit",{id:e.id,company:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("company")+"?").htmlContent("<b>"+(e.name||"company")+"</b> will be deleted.").ariaLabel("delete company").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCompanies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCompany.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Companies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCompany=function(e,n){i.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{company:n,companies:f.companies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCompany=y,f.exportSelectedCompanies=function(){var e=angular.copy(f.selectedCompanies);return f.selectedCompanies=[],e},f.deleteSelectedCompanies=function(e){var n=i.confirm().title("Are you sure want to delete the selected companies?").htmlContent("<b>"+f.selectedCompanies.length+" selected</b> will be deleted.").ariaLabel("delete Companys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCompanies.forEach(function(e){y(e)}),f.selectedCompanies=[]})},f.deselectCompanies=function(){f.selectedCompanies=[]},f.selectAllCompanies=function(){f.selectedCompanies=f.companies.rows};var b=!0,A=1;function E(e){f.companies=e||{count:0,rows:[]}}function y(e){m.cmCompany.delete({id:e.id}).$promise.then(function(){_.remove(f.companies.rows,{id:e.id}),f.companies.count-=1,f.companies.rows.length||f.getCompanies(),p.success({title:_.startCase("Company")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCompany"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCompany",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCompanies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","companies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("CompaniesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_COMPANY",g.company=angular.copy(l),g.companies=r,g.newCompany=!1,g.company||(g.company={},g.title="CONTACTMANAGER.NEW_COMPANY",g.newCompany=!0),g.addNewCompany=function(){g.errors=[],d.cmCompany.save(g.company).$promise.then(function(e){g.companies.unshift(e.toJSON()),o.success({title:"Company properly created",msg:g.company.name?g.company.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCompany=function(){g.errors=[],d.cmCompany.update({id:g.company.id},g.company).$promise.then(function(e){var n=_.find(g.companies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Company properly saved!",msg:g.company.name?g.company.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCompany=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The company will be deleted.").ariaLabel("Delete Company").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmCompany.delete({id:g.company.id}).$promise.then(function(){_.remove(g.companies,{id:g.company.id}),o.success({title:"Company properly deleted!",msg:(g.company.name||"company")+" has been deleted!"}),v(g.company)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCompany.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCompany.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","companies","company","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCompanyDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.company=c||a.params.company||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{CompanyId:t.id}):l.info({title:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:i.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{CompanyId:t.id})}},u.alert=l.info,u.gotoCompanies=function(){a.go("app.contactmanager.companies",{},{reload:"app.contactmanager.companies"})},u.saveCompany=function(){r.cmCompany.update({id:u.company.id},u.company).$promise.then(function(){l.success({title:"Company updated!",msg:u.company.name?u.company.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmCompany",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","company","userProfileSection"],angular.module("app.contactmanager").controller("CompanyController",e)}(),function(){"use strict";function e(n,i,t,a,e,s,o,r,l,d,c,m,u,p,g,v,h,f,b){var A=this;A.currentUser=f.getCurrentUser(),A.license=b,A.userProfile=r,A.userProfileSection=l&&1==l.count?l.rows[0]:null,A.crudPermissions=f.parseCrudPermissions(A.userProfileSection?A.userProfileSection.crudPermissions:null);var E=60,y=1024*E*1024;A.ngFlowOptions={target:"api/cm/contacts/upload",singleFile:!0,maxChunkRetries:1,chunkSize:y,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},A.contacts=c||{count:0,rows:[]},A.options={hidden:!1,hover:!1,isOpen:!1},A.table="cm_contacts",A.selectedContacts=[],A.lists=m||{rows:[],count:0},A.companies=p||{rows:[],count:0},A.tags=v||{rows:[],count:0},A.listsMap=u,A.companiesMap=g,A.selectedTags=[],A.selectedList=null,A.selectedCompany=null,A.query=_.merge({includeAll:!0,sort:"-updatedAt",limit:10,offset:0,page:1},e),A.editdialog=function(e,n){a.go("app.contactmanager.contacts.edit",{id:e.id,crudPermissions:A.crudPermissions})},A.deleteconfirm=function(e,n){var t=s.confirm().title("Are you sure want to delete the contact?").htmlContent("<b>"+(e.firstName||e.email||e.phone||"Contact")+"</b> will be deleted.").ariaLabel("delete contact").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){O(e)})},A.success=I,A.getContacts=function(){A.query.offset=(A.query.page-1)*A.query.limit,f.hasRole("admin")?A.promise=d.cmContact.get(A.query,I).$promise:(A.query.id=A.userProfile.id,A.query.ListId=A.query.ListId?A.query.ListId:_.map(A.lists.rows,"id"),A.query.CompanyId=A.query.CompanyId?A.query.CompanyId:_(A.companies.rows).filter({canSelect:void 0}).map("id").value(),A.query.section="Contacts",A.promise=d.userProfile.getResources(A.query,I).$promise)},A.getAssignedCompanies=function(){if(!f.hasRole("admin")){var e=_(A.contacts.rows).map(function(e){return{id:e.CompanyId}}).uniqBy("id").filter(function(e){return e.id&&0<e.id}).pullAllBy(A.companies.rows,"id").value();if(!_.isEmpty(e)){var n=[];e.forEach(function(e){n.push(d.cmCompany.get({id:e.id,fields:"id,name"}).$promise)}),o.all(n).then(function(e){e.forEach(function(e){var n=e.toJSON();n.canSelect=!1,A.companies.rows.push(n);var t={};t[n.id]=n.name,A.companiesMap=_.assignIn(A.companiesMap,t)})}).catch(function(e){h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}},A.mergeContact=function(e,n){s.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.duplicateContact=function(e,n){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name",nolimit:!0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"Lists",fields:"id,name",nolimit:!0})}]},locals:{contacts:A.contacts.rows}})},A.createOrEditContact=function(e,n){n&&n.dateOfBirth&&(n.dateOfBirth=new Date(n.dateOfBirth));s.show({controller:"CreateOrEditContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ListId:A.query.ListId||a.params.ListId,CompanyId:A.query.CompanyId||a.params.CompanyId,contact:n,contacts:A.contacts.rows,companies:A.companies,lists:A.lists,setting:null,crudPermissions:A.crudPermissions}})},A.deleteContact=O,A.exportSelectedContacts=function(){var e=angular.copy(A.selectedContacts);return A.selectedContacts=[],e},A.deleteSelectedContacts=function(e){var n=s.confirm().title("Are you sure want to delete the selected contacts?").htmlContent("<b>"+A.selectedContacts.length+" selected</b> will be deleted.").ariaLabel("delete Contacts").targetEvent(e).ok("OK").cancel("CANCEL");s.show(n).then(function(){A.selectedContacts.forEach(function(e){O(e)}),A.selectedContacts=[]})},A.deselectContacts=function(){A.selectedContacts=[]},A.selectAllContacts=function(){A.selectedContacts=A.contacts.rows},A.createTag=function(e){var n=s.prompt().title("What would you name your tag?").placeholder("Tag name").ariaLabel("Tag name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.tag.save({name:e});h.error({title:"Error creating tag!",msg:"Invalid tag name."})}).then(function(e){e&&(A.tags.rows.push(e),h.success({title:"Tag properly created!",msg:e.tag?e.name+" has been created!":""}))})},A.createList=function(e){var n=s.prompt().title("What would you name your list?").placeholder("List name").ariaLabel("List name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmList.save({name:e});h.error({title:"Error creating list!",msg:"Invalid list name."})}).then(function(e){e&&(A.lists.rows.push(e),h.success({title:"List properly created!",msg:e.name?e.name+" has been created!":""}))})},A.createCompany=function(e){var n=s.prompt().title("What would you name your company?").placeholder("Company name").ariaLabel("Company name").targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(function(e){if(e)return d.cmCompany.save({name:e});h.error({title:"Error creating company!",msg:"Invalid company name."})}).then(function(e){e&&(A.companies.rows.push(e),h.success({title:"Company properly created!",msg:e.name?e.name+" has been created!":""}))})},A.importContacts=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/import.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.html",parent:angular.element(i.body),clickOutsideToClose:!1,locals:{lists:m,companies:p,file:a.file,fields:a.fields,license:A.license}}).then(function(){A.getContacts()}).catch(function(e){console.error()})},A.hasPermission=function(){return f.hasPermission(303)||f.hasRole("admin")},A.fileAdded=function(e){var n=["csv"];if(!_.includes(n,e.getExtension()))return h.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>y)return h.error({title:"File too big",msg:"The max allowed size is "+E+"MB"}),!1;return!0},a.params.ListId&&(A.selectedList=a.params.ListId),a.params.CompanyId&&(A.selectedCompany=a.params.CompanyId),n.$watch("vm.options.isOpen",function(e){e?t(function(){n.tooltipVisible=A.options.isOpen},600):n.tooltipVisible=A.options.isOpen});var S=!0,T=1;function I(e){A.contacts=e||{count:0,rows:[]}}function O(e){d.cmContact.delete({id:e.id}).$promise.then(function(){_.remove(A.contacts.rows,{id:e.id}),A.contacts.count-=1,A.contacts.rows.length||A.getContacts(),h.success({title:"Contact deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){A.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}];for(var n=0;n<e.data.errors.length;n++)h.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else h.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}n.$watch("vm.query.filter",function(e,n){S?t(function(){S=!1}):(n||(T=A.query.page),e!==n&&(A.query.page=1),e||(A.query.page=T),A.getContacts())},!0),n.$watch("vm.selectedList",function(e,n){e!==n&&(A.query.ListId=A.selectedList||void 0,A.getContacts())}),n.$watch("vm.selectedCompany",function(e,n){e!==n&&(A.query.CompanyId=A.selectedCompany||void 0,A.getContacts())}),n.$watch("vm.selectedTags",function(e,n){(e.length||n.length)&&A.getContacts()})}e.$inject=["$scope","$document","$timeout","$state","$stateParams","$mdDialog","$q","userProfile","userProfileSection","api","contacts","lists","listsMap","companies","companiesMap","tags","toasty","Auth","license"],angular.module("app.contactmanager").controller("ContactsController",e)}(),function(){"use strict";function e(t,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contacts.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteContact=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The contact will be deleted.").ariaLabel("Delete Contact").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.success({title:"Contact properly created",msg:o.contact.name?o.contact.name+" has been created!":""}),r()})}).catch(function(e){console.error(e),o.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}]})},o.closeDialog=r}e.$inject=["$mdDialog","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("DuplicateContactDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="CONTACTMANAGER.EDIT_HOPPER",d.hopper=angular.copy(o),d.hoppers=s,d.newHopper=!1,d.crudPermissions=l,d.hopper||(d.hopper={},d.title="CONTACTMANAGER.NEW_HOPPER",d.newHopper=!0),d.saveHopper=function(){d.errors=[],r.cmHopper.update({id:d.hopper.id},d.hopper).$promise.then(function(e){var n=_.find(d.hoppers,{id:e.id});n&&_.merge(n,e),i.success({title:"Hopper properly saved!",msg:d.hopper.name?d.hopper.name+" has been saved!":""}),c(e)}).catch(function(e){console.error(e),d.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}]})},d.getDateFromString=function(e){return null===e?void 0:new Date(e)},d.closeDialog=c}e.$inject=["$scope","$state","$location","$mdDialog","toasty","hoppers","hopper","api","crudPermissions"],angular.module("app.contactmanager.contacts").controller("EditHopperDialogController",e)}(),function(){"use strict";function e(a,t,e,i,s,n,o,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y){var S=this;function T(n){return function(e){S[n]=e||{count:0,rows:[]}}}function I(){S.queryHopper.offset=(S.queryHopper.page-1)*S.queryHopper.limit,S.queryHopper.id=S.contact.id,S.promise=r.cmContact.getHoppers(S.queryHopper,T("hoppers")).$promise}function O(){S.queryFinal.offset=(S.queryFinal.page-1)*S.queryFinal.limit,S.queryFinal.id=S.contact.id,S.promise=r.cmContact.getHopperFinals(S.queryFinal,T("finals")).$promise}function C(){S.queryHistory.offset=(S.queryHistory.page-1)*S.queryHistory.limit,S.queryHistory.id=S.contact.id,S.promise=r.cmContact.getHopperHistories(S.queryHistory,T("histories")).$promise}function w(e){S.journeyIsLoading=!0;var n=_.merge(S.journeyOptions,{id:S.contact.id,offset:e||0});return y.get(S.journey,n).then(function(e){S.journey=e.journey,S.canLoadMoreJourney=e.loadMore}).finally(function(){S.journeyIsLoading=!1})}S.currentUser=A.getCurrentUser(),S.license=b,S.journey=[],S.contact=l||{},S.hoppers=d||{rows:[],count:0},S.finals=c||{rows:[],count:0},S.histories=m||{rows:[],count:0},S.companies=p||{rows:[],count:0},S.lists=g||{rows:[],count:0},S.customFields=v||{rows:[],count:0},S.tags=h||{rows:[],count:0},S.jscriptySessions=f||{rows:[],count:0},S.journeyOptions=y.getQuery(),S.quickFilters=y.getQuickFilters(),S.journeyTimelineOptions={scrollEl:"#journey-content"},S.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),S.userProfileSection=E&&1==E.count?E.rows[0]:null,S.crudPermissions=A.parseCrudPermissions(S.userProfileSection?S.userProfileSection.crudPermissions:null),S.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),S.queryHopper={fields:"id,phone,scheduledat,priority,recallme,VoiceQueueId,CampaignId,UserId",sort:"-updatedAt",limit:10,page:1},S.queryFinal={fields:"id,uniqueid,calleridnum,statedesc,starttime,disposition",sort:"-id",limit:10,page:1},S.queryHistory={fields:"id,uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-id",limit:10,page:1},S.queryJscriptySession={fields:"id,starttime,endtime,membername,projectname",sort:"-starttime",limit:10,page:1},S.selectedTab=e.params.tab||0,S.onInit=function(){A.hasRole("admin")||(function(){if(!_.some(S.companies.rows,{id:S.contact.CompanyId}))r.cmCompany.get({id:S.contact.CompanyId,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,S.companies.rows.push(n)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"GET_COMPANY",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}(),function(){var e=_.map(S.contact.Tags,function(e){return{id:e.id,name:e.name}});if(!_.isEmpty(e))for(var n=0;n<e.length;n++)_.some(S.tags.rows,{id:e.id})||(e[n].canSelect=!1,S.tags.rows.push(e[n]))}());return r.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){S.users=e||{count:0,rows:[]},S.usersMap=_.mapValues(_.keyBy(S.users.rows,"id"),"fullname"),S.Tags=_.map(S.contact.Tags,"id");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){s.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,resolve:{lists:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("cmList@get",{fields:"id,name"}):e.resolve("userProfile@getResources",{id:S.currentUser.userProfileId,section:"Lists",fields:"id,name"})}]},locals:{contacts:u.rows,contact:l}})},S.saveContact=function(){r.cmContact.update({id:S.contact.id},S.contact).$promise.then(function(){o.success({title:"Contact updated!",msg:S.contact.name?S.contact.name+" has been updated!":""})}).then(function(){return r.cmContact.setTags({id:S.contact.id,ids:S.Tags}).$promise}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$promise}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEcontact",msg:e.data?JSON.stringify(e.data):e.toString()})})},S.editCompany=function(e,n){var t=_.find(S.companies.rows,{id:n});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{companies:[],license:null,setting:null,crudPermissions:!1===t.canSelect?{readOnly:!0,canEdit:!1,canDelete:!1}:r.userProfileSection.get({userProfileId:S.currentUser.userProfileId,sectionId:302}).$promise.then(function(e){var n=e.rows?e.rows[0]:null;return A.parseCrudPermissions(n?n.crudPermissions:null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"API:GET_COMPANY_SECTION",msg:e.data?JSON.stringify(e.data):e.toString()})})},resolve:{company:["apiResolver",function(e){return e.resolve("cmCompany@get",{id:n})}]}})},S.onSelectList=function(e){if(S.contact.ListId){var n=s.confirm().title("You are selecting the list number: "+S.contact.ListId).textContent("Warning! You won't select a different list for the contact "+S.contact.firstName||S.contact.lastName||S.contact.id).targetEvent(e).ok("Ok").cancel("Cancel");return s.show(n).then(S.onSelectListSuccess).catch(function(){S.contact.ListId=null})}},S.onSelectListSuccess=function(){return r.cmList.getCustomFields({id:S.contact.ListId}).$promise.then(function(e){S.customFields=e||{rows:[],count:0}}).catch(function(e){console.error(e)})},S.getDateFromString=function(e){return null===e?void 0:new Date(e)},S.getHoppers=I,S.getFinals=O,S.getHistories=C,S.getJscriptySessions=function(){S.queryJscriptySession.offset=(S.queryJscriptySession.page-1)*S.queryJscriptySession.limit,S.queryJscriptySession.id=S.contact.id,S.promise=r.cmContact.getJscriptySessions(S.queryJscriptySession,T("jscriptySessions")).$promise},S.deleteconfirm=function(n,e){var t=s.confirm().title("Are you sure want to delete the agent?").htmlContent("<b>"+(n.phone||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(e).ok("OK").cancel("CANCEL");s.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(S.hoppers.rows,{id:e.id}),S.hoppers.count--,S.hoppers.rows.length||S.getHoppers(),o.success({title:"Hopper deleted!",msg:e.phone?e.phone+" has been deleted!":""})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEhopper",msg:e.data?JSON.stringify(e.data):e.toString()})})},function(){console.log("CANCEL")})},S.editHopper=function(e,n){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$watch("vm.queryHopper.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHopper.page),e!==n&&(S.queryHopper.page=1),e||(S.queryHopper.page=x),I())}),a.$watch("vm.queryFinal.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryFinal.page),e!==n&&(S.queryFinal.page=1),e||(S.queryFinal.page=x),O())}),a.$watch("vm.queryHistory.filter",function(e,n){R?t(function(){R=!1}):(n||(x=S.queryHistory.page),e!==n&&(S.queryHistory.page=1),e||(S.queryHistory.page=x),C())})}e.$inject=["$scope","$timeout","$state","$document","$mdDialog","$q","toasty","api","contact","hoppers","finals","histories","contacts","companies","lists","customFields","tags","jscriptySessions","license","Auth","userProfileSection","customerJourneyManager"],angular.module("app.contactmanager.contacts").controller("ContactController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"firstName",required:!0},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.import({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;g.processing=!1,g.stopping=!0,g.license=p,g.pid=0,g.result={finish:!1,rows:0,affectedRows:0,failedRows:0,duplicatedRows:0,errors:[]},g.contactFields=[{key:"id",required:!0},{key:"firstName",required:!1},{key:"lastName",required:!1},{key:"phone",required:!0},{key:"mobile",required:!1},{key:"email",required:!1},{key:"dateOfBirth",required:!1},{key:"country",required:!1},{key:"city",required:!1},{key:"street",required:!1},{key:"postalCode",required:!1},{key:"fax",required:!1}],g.motionBullFields=[{key:"UserId",required:!1},{key:"scheduledat",required:!1},{key:"priority",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,required:!1})}),g.binding={},g.duplicate=[],g.lists=s||{rows:[],count:0},g.companies=o||{rows:[],count:0},g.customFields={rows:[],count:0},g.fields=u||[],g.closeDialog=function(){d.removeAllListeners("contact:import:"+v),n.hide()},g.onChangeList=function(){return l.cmList.getCustomFields({id:g.ListId}).$promise.then(function(e){g.customFields=e}).catch(function(e){console.error(e)})},g.uploadCsv=function(){g.processing=moment(),l.cmContact.importUpdates({id:m.filename,binding:g.binding,ListId:g.ListId,CompanyId:g.CompanyId,duplicates:g.duplicates,socket_timestamp:v}).$promise.then(function(e){g.stopping=!1,e&&e.pid&&(g.pid=e.pid)}).catch(function(e){g.processing=!1,r.error({title:"Import process failed!",msg:"Please retry with a new file"})})},g.getHeaderErrors=function(){var e=u;return e.push("contact_import_error"),e},g.getArrayErrors=function(){for(var e=[],n=0;n<g.result.errors.length;n+=1){var t=g.result.errors[n].row;t.contact_import_error=g.result.errors[n].message,e.push(t)}return e},g.stopUpload=function(){if(g.stopping=!0,g.pid)return l.system.killProcess({pid:g.pid}).$promise.then(function(e){r.success({title:"CSV import process stopped!",msg:"Import has been stopped!"})}).catch(function(e){r.error({title:"CSV stop import process failed!",msg:"pid is unknown"})})};var v=moment().unix();d.on("contact:import:"+v,function(t){i(function(){if(g.result.rows=t.rows,t.errors)for(var e=0;e<t.errors.length;e++)g.result.errors.push(t.errors[e]);if(t.finish){g.result.finish=!0,g.result.affectedRows=t.affectedRows,g.result.failedRows=g.result.errors.length;var n=g.result.rows-g.result.affectedRows-g.result.errors.length;n&&0<n&&(g.duplicates.length?g.result.duplicatedRows=n:g.result.failedRows+=n),g.result.elapsed=moment().diff(g.processing,"seconds")}})}),c.$on("$destroy",function(){d.removeAllListeners("contact:import:"+v)})}e.$inject=["$cookies","$mdDialog","$interval","$q","$timeout","lists","companies","toasty","api","socket","$scope","file","fields","license"],angular.module("app.tools").controller("ImportContactsUpdatesDialogController",e)}(),function(){"use strict";function e(i,e,s,n,o,t,r){var a=this;a.errors=[],a.title="CONTACTMANAGER.MERGE_CONTACT",a.contact=angular.copy(n),a.lists=t||[],a.change=function(){a.searchTerm?r.cmContact.get({fields:"id,firstName,lastName,phone,email",filter:a.searchTerm,ListId:n.ListId}).$promise.then(function(e){a.contacts=e.rows}).catch(function(e){console.error(e)}):a.contacts=[]},a.showConfirm=function(e,n,t){var a=i.confirm({skipHide:!0}).title("Would you like to merge your contacs?").textContent("All unfilled values of the contact #"+t.id+" will be overwritten by the fields of the contact #"+n.id+".").targetEvent(e).ok("Ok").cancel("Cancel");i.show(a).then(function(){return r.cmContact.merge({to:t.id,from:n.id}).$promise}).then(function(e){i.hide({new:e,to:t,from:n}),_.remove(o,{id:t.id}),_.remove(o,{id:n.id}),o.unshift(e)}).then(function(){s.success({title:"Contact properly merged!"})}).catch(function(e){e&&e.status&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:MERGE_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})})},a.closeDialog=function(){i.hide()}}e.$inject=["$mdDialog","$scope","toasty","contact","contacts","lists","api"],angular.module("app.tools").controller("MergeContactDialogController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.globalCustomFieldForm.$pristine=!1}},g.globalCustomField=l,g.globalCustomFields=r,g.newGlobalCustomField=!1,g.globalCustomField||(g.globalCustomField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_GLOBALCUSTOMFIELD",g.newGlobalCustomField=!0),a.$watch("vm.globalCustomField.type",function(e,n){if(e!==n)switch(e){case"text":g.globalCustomField.values="";break;case"select":g.globalCustomField.values=[]}}),g.addNewGlobalCustomField=function(){g.errors=[],d.cmCustomField.save(g.globalCustomField).$promise.then(function(e){g.globalCustomFields.unshift(e.toJSON()),o.success({title:"GlobalCustomField properly created",msg:g.globalCustomField.name?g.globalCustomField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGlobalCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.globalCustomField.id},g.globalCustomField).$promise.then(function(e){var n=_.find(g.globalCustomFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"GlobalCustomField properly saved!",msg:g.globalCustomField.name?g.globalCustomField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGlobalCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The globalCustomField will be deleted.").ariaLabel("Delete GlobalCustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.globalCustomField.id}).$promise.then(function(){_.remove(g.globalCustomFields,{id:g.globalCustomField.id}),o.success({title:"GlobalCustomField properly deleted!",msg:(g.globalCustomField.name||"globalCustomField")+" has been deleted!"}),v(g.globalCustomField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.globalCustomFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.globalCustomFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.globalCustomFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","globalCustomFields","globalCustomField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditGlobalCustomFieldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.globalCustomFields=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="globalCustomFields",f.listOrder="",f.listOrderAsc=null,f.selectedGlobalCustomFields=[],f.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",sort:"-updatedAt",ListId:"null",limit:10,page:1},f.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{globalCustomField:e,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("globalCustomField")+"?").htmlContent("<b>"+(e.name||"globalCustomField")+"</b> will be deleted.").ariaLabel("delete globalCustomField").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getGlobalCustomFields=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmCustomField.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="GlobalCustomFields",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditGlobalCustomField=function(e,n){i.show({controller:"CreateOrEditGlobalCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{globalCustomField:n,globalCustomFields:f.globalCustomFields.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteGlobalCustomField=y,f.exportSelectedGlobalCustomFields=function(){var e=angular.copy(f.selectedGlobalCustomFields);return f.selectedGlobalCustomFields=[],e},f.deleteSelectedGlobalCustomFields=function(e){var n=i.confirm().title("Are you sure want to delete the selected globalCustomFields?").htmlContent("<b>"+f.selectedGlobalCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete GlobalCustomFields").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedGlobalCustomFields.forEach(function(e){y(e)}),f.selectedGlobalCustomFields=[]})},f.deselectGlobalCustomFields=function(){f.selectedGlobalCustomFields=[]},f.selectAllGlobalCustomFields=function(){f.selectedGlobalCustomFields=f.globalCustomFields.rows};var b=!0,A=1;function E(e){f.globalCustomFields=e||{count:0,rows:[]}}function y(e){m.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(f.globalCustomFields.rows,{id:e.id}),f.globalCustomFields.count-=1,f.globalCustomFields.rows.length||f.getGlobalCustomFields(),p.success({title:_.startCase("GlobalCustomField")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmCustomField"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmCustomField",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getGlobalCustomFields())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","globalCustomFields","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("GlobalCustomFieldsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_LIST",g.list=angular.copy(l),g.lists=r,g.newList=!1,g.list||(g.list={},g.title="CONTACTMANAGER.NEW_LIST",g.newList=!0),g.addNewList=function(){g.errors=[],d.cmList.save(g.list).$promise.then(function(e){g.lists.unshift(e.toJSON()),o.success({title:"List properly created",msg:g.list.name?g.list.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveList=function(){g.errors=[],d.cmList.update({id:g.list.id},g.list).$promise.then(function(e){var n=_.find(g.lists,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"List properly saved!",msg:g.list.name?g.list.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteList=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The list will be deleted.").ariaLabel("Delete List").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmList.delete({id:g.list.id}).$promise.then(function(){_.remove(g.lists,{id:g.list.id}),o.success({title:"List properly deleted!",msg:(g.list.name||"list")+" has been deleted!"}),v(g.list)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmList.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","lists","list","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditListDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.cmList.getAgents({id:c.list.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserList?"penalty "+e.UserList.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.list=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.cmList.removeAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.cmList.addAgents({id:c.list.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("CONTACTMANAGER.ALL_AGENTS"),labelSelected:r.instant("CONTACTMANAGER.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","list","lists","realtime","$translate","Auth","crudPermissions"],angular.module("app.contactmanager").controller("ListagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.listCustomFields=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.cmList.getCustomFields(m.query,u).$promise}function g(e){d.cmCustomField.delete({id:e.id}).$promise.then(function(){_.remove(m.listCustomFields.rows,{id:e.id}),m.listCustomFields.count-=1,m.listCustomFields.rows.length||p(),l.success({title:"CustomField deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcmList"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.list={},m.listCustomFields={count:0,rows:[]},m.selectedListCustomFields=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,alias,type,values,required,clickToAction,actionType",limit:10,page:1},m.arraytype=_.keyBy([{option:"Text",value:"'text'"},{option:"Select",value:"'select'"},{option:"Number",value:"'number'"},{option:"Switch",value:"'switch'"},{option:"Datetime",value:"'datetime'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.arrayactionType=_.keyBy([{option:"Voice",value:"'voice'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.list=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the customField?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("customField #")+e.id||"customField")+"</b> will be deleted.").ariaLabel("delete customField").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getListCustomFields=p,m.createOrEditListCustomField=function(e,n){o.show({controller:"CreateOrEditCustomFieldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:m.list,customField:n,customFields:m.listCustomFields.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedListCustomFields=function(){var e=angular.copy(m.selectedListCustomFields);return m.selectedListCustomFields=[],e},m.deleteListCustomField=g,m.deleteSelectedListCustomFields=function(e){var n=o.confirm().title("Are you sure want to delete the selected customFields?").htmlContent("<b>"+m.selectedListCustomFields.length+" selected</b> will be deleted.").ariaLabel("delete customFields").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedListCustomFields.forEach(function(e){g(e)}),m.selectedListCustomFields=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.contactmanager").controller("ListCustomFieldsController",e)}(),function(){"use strict";function e(a,e,n,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){t.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="CONTACTMANAGER.EDIT_CUSTOMFIELD",g.sortable={animation:800,sort:!0,onSort:function(e){a.customFieldForm.$pristine=!1}},g.customField=l,g.customFields=r,g.newCustomField=!1,g.customField||(g.customField={type:"text",actionType:"voice"},g.title="CONTACTMANAGER.NEW_CUSTOMFIELD",g.newCustomField=!0),e.params.id&&(g.customField.ListId=e.params.id),a.$watch("vm.customField.type",function(e,n){if(e!==n)switch(e){case"text":g.customField.values="";break;case"select":g.customField.values=[]}}),g.addNewCustomField=function(){g.errors=[],d.cmList.addCustomField({id:e.params.id},g.customField).$promise.then(function(e){g.customFields.unshift(e.toJSON()),o.success({title:"CustomField properly created",msg:g.customField.name?g.customField.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomField=function(){g.errors=[],d.cmCustomField.update({id:g.customField.id},g.customField).$promise.then(function(e){var n=_.find(g.customFields,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomField properly saved!",msg:g.customField.name?g.customField.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomField=function(e){g.errors=[];var n=t.confirm().title("Are you sure?").content("The customField will be deleted.").ariaLabel("Delete CustomField").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){d.cmCustomField.delete({id:g.customField.id}).$promise.then(function(){_.remove(g.customFields,{id:g.customField.id}),o.success({title:"CustomField properly deleted!",msg:(g.customField.name||"customField")+" has been deleted!"}),v(g.customField)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmCustomField.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmCustomField.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.addItem=function(e){e.push({value:"New Item"}),a.customFieldForm.$pristine=!1},g.removeItem=function(e,n){e.splice(n,1),a.customFieldForm.$pristine=!1},g.removeItems=function(e){for(var n=e.length,t=0;t<n;t++)e.splice(0,1);a.customFieldForm.$pristine=!1},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customFields","customField","api","Auth","license","setting","crudPermissions"],angular.module("app.contactmanager").controller("CreateOrEditCustomFieldDialogController",e)}(),function(){"use strict";function e(a,e,t,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.list=c||a.params.list||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=a.params.tab||0,u.gotogoto=function(t,e){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},u.agentadddialog=function(e,n){t.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:u.lists?u.lists.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoLists=function(){a.go("app.contactmanager.lists",{},{reload:"app.contactmanager.lists"})},u.saveList=function(){r.cmList.update({id:u.list.id},u.list).$promise.then(function(){l.success({title:"List updated!",msg:u.list.name?u.list.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","list","userProfileSection"],angular.module("app.contactmanager").controller("ListController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.cmList.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.list=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.ListId=m.list.id,m.query.id=m.list.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.list.id,field:"ListId",route:"cmList"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.contactmanager").controller("ListDispositionsController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.lists=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="lists",f.listOrder="",f.listOrderAsc=null,f.selectedLists=[],f.query={fields:"createdAt,updatedAt,id,name,description,dialPrefix",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){a.go("app.contactmanager.lists.edit",{id:e.id,list:e,crudPermissions:f.crudPermissions})},f.gotocontactsgoto=function(t,e){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:303}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?a.go("app.contactmanager.contacts",{ListId:t.id}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});a.go("app.contactmanager.contacts",{ListId:t.id})}},f.exportcsvcontactsexport=function(i,e){return m.cmList.getContactsCsv({id:i.id,nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","exportContacts_"+i.id+".csv"),a.click()}else p.info({title:"EXPORT",msg:"The list is empty"})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcmList",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.agentadddialog=function(e,n){i.show({controller:"ListagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{list:e,lists:f.lists?f.lists.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("list")+"?").htmlContent("<b>"+(e.name||"list")+"</b> will be deleted.").ariaLabel("delete list").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getLists=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cmList.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Lists",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditList=function(e,n){i.show({controller:"CreateOrEditListDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/lists/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{list:n,lists:f.lists.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteList=y,f.exportSelectedLists=function(){var e=angular.copy(f.selectedLists);return f.selectedLists=[],e},f.deleteSelectedLists=function(e){var n=i.confirm().title("Are you sure want to delete the selected lists?").htmlContent("<b>"+f.selectedLists.length+" selected</b> will be deleted.").ariaLabel("delete Lists").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedLists.forEach(function(e){y(e)}),f.selectedLists=[]})},f.deselectLists=function(){f.selectedLists=[]},f.selectAllLists=function(){f.selectedLists=f.lists.rows};var b=!0,A=1;function E(e){f.lists=e||{count:0,rows:[]}}function y(e){m.cmList.delete({id:e.id}).$promise.then(function(){_.remove(f.lists.rows,{id:e.id}),f.lists.count-=1,f.lists.rows.length||f.getLists(),p.success({title:_.startCase("List")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcmList"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcmList",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getLists())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","lists","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.contactmanager").controller("ListsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.customDashboard.id}).$promise}).then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",e.rows[n].voiceQueues=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.user.id,online:!0,capacity:{mail:0,fax:0,sms:0,whatsapp:0,openchannel:0,chat:0},interaction:{mail:[],fax:[],sms:[],whatsapp:[],openchannel:[],chat:[]}};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(n,t){var e,a,i={type:"contact",title:n?(e=n,a="",e&&(e.firstName||e.lastName?(e.firstName&&(a+=e.firstName+" "),e.lastName&&(a+=e.lastName)):e.phone&&(a=e.phone)),a=y.user.privacyEnabled?A.mask(a):a):c.instant("DASHBOARDS.NEW_CONTACT"),icon:"icon-account-circle",color:"red",contact:n,calls:t?[t]:[],autoCreate:t?t.autoCreate:0};if(t&&(t.answertime||(t.answertime=t.agentconnectAt),(t.agentcompleteAt||t.endtime)&&U(t)),n){var s=_.find(y.tabs,function(e){return e.contact&&e.contact.id?"contact"===e.type&&e.contact&&e.contact.id==n.id:"contact"===e.type&&e.contact&&e.contact.phone==n.phone});if(s){if(t)return l.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){(e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime),s.calls)?_.find(s.calls,function(e){return e.uniqueid===t.uniqueid})||s.calls.push(t):s.calls=[t];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(e={type:"interaction",title:n?n.toUpperCase():"openchannel",icon:function(e){switch(e){case"chat":return"icon-hangouts";case"mail":return"icon-email";case"sms":return"icon-message-text";case"openchannel":return"icon-google-earth";case"fax":return"icon-deskphone";case"whatsapp":return"icon-whatsapp";default:return"icon-hangouts"}}(n),color:function(e){switch(e){case"chat":return"green-A700";case"mail":return"teal";case"sms":return"orange";case"openchannel":return"amber-A200";case"fax":return"blue-grey-A200";case"whatsapp":return"lime-A700";default:return"grey"}}(n),channel:n,interaction:t,isDraft:t.isDraft||!1})}function N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"../../../../../../../assets/images/avatars/customer.png",body:(e=t).queue?"Queue: "+e.queue:"",focusOnclick:!0,closeOnClick:!0},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.debug("onVoiceChannelRemove ->  key, tab, tab.calls",e,a,a.calls);var i=_.findIndex(a.calls,function(e){return e.uniqueid===t});i<0&&0<=(i=_.findIndex(a.calls,function(e){return e.uniqueid===n.linkedid}))&&(t=n.linkedid),0<=i&&!a.calls[i].disposedAt?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.confirm().title("interaction"===e.type?"Do you want to close the interaction?":"Are you sure want to close the "+e.type+"?").textContent("interaction"===e.type?"":"The "+e.type+" has been modified. Closing will lose all changes!").ariaLabel("Close Contact").ok("interaction"===e.type?"YES":"OK").cancel("interaction"===e.type?"NO":"CANCEL");{if(!e.saved){var a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({uniqueid:e});t.removeAllListeners("trigger:contactmanager"),t.removeAllListeners("trigger:jscripty"),t.removeAllListeners("trigger:browser:url"),t.removeAllListeners("trigger:browser:popup"),t.removeAllListeners("notification:save"),t.removeAllListeners("notification:remove"),t.removeAllListeners("voice_queue_channel:remove"),t.removeAllListeners("voice_outbound_channel:remove")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({type:"bot",title:t+" <"+a+">",icon:"fas fa-robot",color:"pink",data:{uniqueid:n.uniqueid}})})}),t.on("trigger:browser:url",function(e){if(e&&e.uri)if(e.uri=_.replace(e.uri,"&lt%3B",""),e.uri=_.replace(e.uri,"=&gt%3B=",""),e.uriLocation)switch(e.uriLocation){case"0":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentDashboardGeneralController",e)}(),function(){"use strict";angular.module("app.dashboards").provider("desktopNotification",function(){var f={autoClose:!0,duration:5,showOnPageHidden:!1};return{config:function(e){for(var n in e)f.hasOwnProperty(n)&&null!=e[n]&&(f[n]=e[n])},$get:["$q","$timeout","$window","PERMISSIONS",function(e,u,n,p){var g=n.Notification||n.mozNotification||n.webkitNotification;return{isSupported:v,currentPermission:h,requestPermission:function(){if(!v())return e.reject("Notification API not supported");var t=e.defer();Promise.resolve(g.requestPermission)==g.requestPermission?g.requestPermission().then(function(e){p.GRANTED===e?t.resolve(e):t.reject(e)}):g.requestPermission(function(e,n){p.GRANTED===e?t.resolve(e):t.reject(e)});return t.promise},show:function(e,n){if(n=n||{},!v()||(t=e,a=n,i=angular.isString(t),s=!a.onClick||angular.isFunction(a.onClick),!i||!s)||function(e){if(e||f.showOnPageHidden)return!(window.document.hidden||window.document.mozHidden||window.document.webkitHidden)}(n.showOnPageHidden)||h()!==p.GRANTED)return;var t,a,i,s;var o=new g(e,n),r=n.duration||f.duration,l=void 0===n.autoClose?f.autoClose:n.autoClose;o.onclick=function(){n.onClick&&n.onClick(),n.focusOnclick&&window.focus(),n.closeOnClick&&o.close()},l&&(d=o,c=r,m=1e3*c,u(d.close.bind(d),m,!1));var d,c,m;return o},permissions:{default:p.DEFAULT,granted:p.GRANTED,denied:p.DENIED}};function v(){return!(void 0===g)}function h(){return(g||{}).permission}}]}}).provider("msNavigationAgentService",function(){var r=angular.injector(["ng"]).get("$log"),l=[];function n(e,n){if(angular.isString(e)){for(var t=e.split("."),a=t[t.length-1],i=function(e){var n=l;if(1===e.length)return n;e.pop();for(var t=0;t<e.length;t++){for(var a=e[t],i=!0,s=0;s<n.length;s++)if(n[s]._id===a){n=n[s].children,i=!1;break}if(i){var o={_id:a,_path:e.join("."),title:a,weight:1,children:[]};n.push(o),n=o.children}}return n}(t),s=!1,o=0;o<i.length;o++)if(i[o]._id===a){s=i[o];break}s?(angular.extend(s,n),s.uisref=d(s)):(n.children=[],!angular.isUndefined(n.weight)&&angular.isNumber(n.weight)||(n.weight=1),n._id=a,n._path=e,n.uisref=d(n),i.push(n))}else r.error("path must be a string (eg. `dashboard.project`)")}function d(e){var n="";return angular.isDefined(e.state)&&(n=e.state,angular.isDefined(e.stateParams)&&angular.isObject(e.stateParams)&&(n=n+"("+angular.toJson(e.stateParams)+")")),n}this.saveItem=n,this.deleteItem=function(e){if(!angular.isString(e))return void r.error("path must be a string (eg. `dashboard.project`)");for(var n=l,t=e.split("."),a=0;a<t.length;a++)for(var i=t[a],s=0;s<n.length;s++)if(n[s]._id===i){if(n[s]._path===e)return n.splice(s,1),!0;n=n[s].children;break}return!1},this.$get=function(){var e={saveItem:n,getNavigation:function(e){if(e){for(var n=0;n<l.length;n++)if(l[n]._id===e)return[l[n]];return null}return l}};return e}}).constant("PERMISSIONS",{DEFAULT:"default",GRANTED:"granted",DENIED:"denied"})}(),function(){"use strict";function e(t){var a=this;a.setting={},a.messages={count:0,rows:[]},a.showInteraction=!1,a.init=function(e,n){{if(a.setting=n,a.tab=e,a.tab.saved=!0,a.tab&&a.tab.data&&a.tab.data.uniqueid)return t.squareMessage.get({uniqueid:a.tab.data.uniqueid}).$promise.then(function(e){a.messages=e}).finally(function(){a.showInteraction=!0});a.showInteraction=!0}},a.getMessagesAlignment=function(e){switch(a.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}}}e.$inject=["api"],angular.module("app.dashboards").controller("AgentGeneralBotController",e)}(),function(){"use strict";function e(a,d,c,t,m,i,u,p,s,o,e,r,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},g.journey=[],g.queryHopper={fields:"id,phone,scheduledat",sort:"-updatedAt",limit:10,page:1},g.queryFinal={fields:"uniqueid,calleridnum,statedesc,starttime,disposition,secondDisposition,thirdDisposition",sort:"-updatedAt",limit:10,page:1},g.queryHistory={fields:"uniqueid,calleridnum,statedesc,scheduledat,starttime,endtime",sort:"-updatedAt",limit:10,page:1},g.hoppers={rows:[],count:0},g.finals={rows:[],count:0},g.histories={rows:[],count:0},g.journeyOptions=r.getQuery(),g.quickFilters=r.getQuickFilters(),g.addNewContact=h,g.saveContact=function(){g.errors=[],u.cmContact.update({id:g.contact.id},g.contact).$promise.then(function(e){var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,m.$parent.vm.updateLocalStorage(),u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).then(function(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$promise.then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly updated!",msg:g.contact.name?g.contact.name+" has been updated!":""})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.getCustomFields=function(e){return u.cmList.getCustomFields({id:e}).$promise.then(function(e){g.tab.customFields=e}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"LIST:GETCustomFields",msg:e.data?JSON.stringify(e.data):e.toString()})})},g.call=m.$parent.vm.call,g.disposeCall=function(e,i){if(g.newContact)return void p.error({title:"ATTENTION",msg:"Please save the contact before disposing!"});d.show({controller:"DisposeCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",parent:angular.element(c.body),targetEvent:i,clickOutsideToClose:!i.mandatoryDisposition,escapeToClose:!i.mandatoryDisposition,resolve:{globalDispositions:["apiResolver",function(e){return e.resolve("disposition@get",{MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0})}]},onRemoving:function(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{dispositions:g.tab.dispositions,contact:g.contact,call:i,availableCalls:g.tab.calls.length,autoClose:m.$parent.vm.autoClose}}).then(function(e){var n=e[0];for(var t in m.$parent.vm.autoClose=e[1],n&&("BLACKLIST"===n?p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_DISPOSED")+" "+n}):"RECALLME"===n||"RESCHEDULE"===n||p.success({title:o.instant("DASHBOARDS.INFO"),msg:o.instant("DASHBOARDS.CALL_SAVED")})),m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(t)){var a=m.$parent.$parent.$parent.vm.tabs[t];_.remove(a.calls,function(e){return e.uniqueid===i.uniqueid})}0===g.tab.calls.length&&m.$parent.vm.autoClose&&m.$parent.vm.removeTab(g.tab),m.$parent.vm.updateLocalStorage()})},g.checkCallStatus=function(n){return g.checkingCallStatus=!0,u.voiceCallReport.get({uniqueid:n.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(n.disposedAt=_.first(e.rows).endtime)}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"VOICE_CALL_REPORT:GET",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){g.checkingCallStatus=!1})},g.duplicateContact=function(e){d.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}})},g.mergeContact=function(e){d.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(c.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:g.contact.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:s.getCurrentUser().id,fields:"id,name"})}]},locals:{contacts:[]}}).then(function(e){if(e){for(var n in m.$parent.$parent.$parent.vm.tabs)if(m.$parent.$parent.$parent.vm.tabs.hasOwnProperty(n)){var t=m.$parent.$parent.$parent.vm.tabs[n];t&&t.contact&&(e.from&&e.from.id&&e.from.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t),e.to&&e.to.id&&e.to.id===t.contact.id&&m.$parent.$parent.$parent.vm.removeTab(t))}e.new&&m.$parent.$parent.$parent.vm.addContactTab(e.new)}})},g.getDateFromString=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.error(e)}try{m.$parent.$parent.$parent.vm.addTab({type:"jscripty",title:e.name,icon:"icon-script",color:"grey",project:e,contact:g.contact})}catch(e){p.error({title:"ERROR OPENING JSCRIPTY PROJECT",msg:"The project cannot be started"+JSON.stringify(e)})}},g.getHoppers=b,g.getFinals=A,g.getHistories=E,g.getJscriptyProjects=function(){if(g.jscriptyProjects)return;return g.loadingJscriptyProjects=!0,u.jscriptyProject.get({fields:"createdAt,updatedAt,id,name,description,createdAt,formData,enableUncompleteSave",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.jscriptyProjects=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant("JSCRIPTY.JSCRIPTY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.JSCRIPTY_GET_ERROR")})}).finally(function(){g.loadingJscriptyProjects=!1})},g.getAccounts=function(n){if(g[n+"Accounts"])return;var e="get"+_.startCase(n)+"Accounts";return g.loadingAccounts=!0,u.user[e]({id:g.user.id,attributes:["id","name"],nolimit:!0}).$promise.then(function(e){g[n+"Accounts"]=e||{count:0,rows:[]}}).catch(function(){p.error({title:o.instant(n.toUpperCase()+"."+n.toUpperCase()+"ACCOUNTS"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.ACCOUNTS_GET_ERROR",{channel:o.instant("DASHBOARDS."+n.toUpperCase())})})}).finally(function(){g.loadingAccounts=!1})},g.composeInteraction=function(e,o,r,n){var l=o.toLowerCase();d.show({controller:"Compose"+o+"InteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/"+o.toLowerCase()+"/dialog.html",parent:angular.element(c.body),clickOutsideToClose:!1,locals:{account:r,message:{to:"mail"==l?n:n.split(",")},type:"new",interaction:{Contact:g.contact}},fullscreen:!0}).then(function(s){if(!s||_.isNil(s.message)||!s.message.savedAsDraft)return u[l+"Account"].send({id:r.id},s).$promise.then(function(e){if("Mail"===o){var n=e;if(n&&n.Messages&&n.Messages.length){if(s.attachments&&s.attachments.length)for(var t=0;t<s.attachments.length;t+=1)u.attachment.update({id:s.attachments[t].id},{MailMessageId:_.head(n.Messages).id});if(p.success({title:"Message properly sent!",msg:"Message has been sent!"}),n.closed){n.disposition=null;var a=!r.mandatoryDisposition,i=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause;d.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(c.body),onRemoving:function(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},clickOutsideToClose:a,escapeToClose:a,locals:{user:g.user,channel:"mail",interaction:n}})}else m.$parent.vm.addInteractionTab("mail",n)}}else p.success({title:"Message properly sent!",msg:"Message has been sent!"}),m.$parent.vm.addInteractionTab(l,e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"fax"===l?p.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.toUpperCase()+"ACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var e={type:"draft",channel:"mail",account:r,contact:g.contact,id:g.tab.id,openedAt:new Date,saved:!1,title:r.key+" - Untitled",content:s.message},n=a.localStorage.getItem("motion2.home.mail:"+g.user.id);if(n){var t=JSON.parse(n);t.drafts||(t.drafts={}),n=t}else n={drafts:{}};n.drafts[g.tab.id]=e,a.localStorage.setItem("motion2.home.mail:"+g.user.id,JSON.stringify(n))})},g.init=function(n,e){return g.tab=n,m.$watchGroup(["vm.detailForm.$pristine","vm.customFieldsForm.$pristine"],function(e){g.tab.saved=e[0]&&e[1]}),g.license=e,g.contact=g.tab.contact,g.newContact=!1,g.currentTab=0,u.user.get({fields:"id,fullname",nolimit:!0}).$promise.then(function(e){g.users=e||{count:0,rows:[]},g.usersMap=_.mapValues(_.keyBy(g.users.rows,"id"),"fullname")}).then(function(){for(var e=[],n=0;n<g.tab.calls.length;n++){var t=g.tab.calls[n];e.push(u.voiceCallReport.get({uniqueid:t.uniqueid}).$promise.then(function(e){e&&0<e.rows.length&&(t.disposedAt=_.first(e.rows).endtime)}))}return i.all(e)}).then(function(){return u.user.getLists({id:g.user.id,nolimit:!0}).$promise}).then(function(e){if(g.lists=e||{count:0,rows:[]},g.contact&&g.contact.ListId){if(g.list=_.find(g.lists.rows,{id:g.contact.ListId}),g.list)return;return u.cmList.get({id:g.contact.ListId}).$promise.then(function(e){e&&(g.list=e,g.lists.rows=_.unionBy(g.lists.rows,[g.list]))})}}).then(function(){if(g.contact&&g.contact.id){var e={id:g.contact.id,ListId:g.contact.ListId,limit:1,offset:0,sort:"-updatedAt"};return u.cmContact.get(e).$promise.then(function(e){return g.contact=e,g.tab.contact=e,u.user.addContacts({id:g.user.id,ids:[g.contact.id]})}).then(function(){if(g.contact.ListId)return u.disposition.get({ListId:g.contact.ListId,nolimit:!0}).$promise.then(function(e){return g.tab.dispositions=e,u.cmList.getCustomFields({id:g.contact.ListId,nolimit:!0}).$promise}).then(function(e){g.tab.customFields=e})}).then(function(){try{g.tab.companies=m.$parent.$parent.$parent.vm.globalCompanies,g.tab.tags=m.$parent.$parent.$parent.vm.globalTags,g.tab.autoCreate=0}catch(e){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).then(function(){return u.cmContact.getTags({id:g.contact.id}).$promise.then(function(e){g.tab.Tags=_.map(e.rows,"id")})})}return g.newContact=!0,n.autoCreate?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(g.contact.dateOfBirth))})},g.hasPermission=function(e){return s.hasPermission(e)},g.openInteraction=function(e){try{return m.$parent.$parent.$parent.vm.addInteractionTab(e.channel,e)}catch(e){p.error({title:o.instant("CONTACTMANAGER.CUSTOMER_JOURNEY"),msg:o.instant("CONTACTMANAGER.NOTIFICATIONS.INTERACTION_OPEN_ERROR")})}},g.getCustomerJourney=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){g.errors=[],u.cmContact.save(g.contact).$promise.then(function(e){g.contact.id=e.id,g.newContact=!1;var n=e.firstName||e.phone;return g.tab.title=g.user.privacyEnabled?l.mask(n):n,g.tab.contact=g.contact,u.user.addContacts({id:s.getCurrentUser().id,ids:[e.id]})}).then(function(){g.detailForm.$pristine=!0,g.customFieldsForm.$pristine=!0,p.success({title:"Contact properly created",msg:g.contact.firstName?g.contact.firstName+" has been created!":""})}).then(function(){return u.cmContact.setTags({id:g.contact.id,ids:g.tab.Tags}).$promise}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}function f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){g.contact&&g.contact.id&&(g.queryHopper.ContactId=g.contact.id,g.queryHopper.offset=(g.queryHopper.page-1)*g.queryHopper.limit,g.promise=u.cmHopper.get(g.queryHopper,f("hoppers")).$promise)}function A(){g.contact&&g.contact.id&&(g.queryFinal.ContactId=g.contact.id,g.queryFinal.offset=(g.queryFinal.page-1)*g.queryFinal.limit,g.promise=u.cmHopperFinal.get(g.queryFinal,f("finals")).$promise)}function E(){g.contact&&g.contact.id&&(g.queryHistory.ContactId=g.contact.id,g.queryHistory.offset=(g.queryHistory.page-1)*g.queryHistory.limit,g.promise=u.cmHopperHistory.get(g.queryHistory,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(e){g.journeyIsLoading=!0;var n=_.merge(g.journeyOptions,{id:g.contact.id,offset:e||0});return r.get(g.journey,n).then(function(e){g.journey=e.journey,g.canLoadMoreJourney=e.loadMore}).finally(function(){g.journeyIsLoading=!1})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentGeneralContactController",e)}(),function(){"use strict";function e(n,t,i,s,o,e,a,r,l,d,c,m,u,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,dispositionat:moment(),amd:"amd"===e,fax:"fax"===e,blacklist:"blacklist"===e,recallme:"recallme"===e,UserId:"recallme"===e?d.getCurrentUser().id:null,OwnerId:d.getCurrentUser().id}}function E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.hasBlackLists=!0)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.contact.id}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICECALLREPORT",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.voiceRecording.get({uniqueid:v.call.uniqueid}).$promise.then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)o.voiceRecording.update({id:e.rows[n].id,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null}).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEVOICERECORDING",msg:e.data?JSON.stringify(e.data):e.toString()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERFINAL",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.cmHopperHistory.update(A()).$promise.catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECMHOPPERHISTORY",msg:e.data?JSON.stringify(e.data):e.toString()})}));if(_.isNil(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]&&function(e){if(e)o.voiceQueue.getBlackLists({id:e,type:"outbound",fields:"id"}).$promise.then(function(e){var n=[];if(e&&0<e.count){for(var t=0;t<e.rows.length;t+=1){var a=angular.copy(v.contact);delete a.id,a.ListId=e.rows[t].id,n.push(o.cmContact.save(a).$promise)}return i.all(n)}s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.NOTAVAILABLE")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATEBLACKLIST",msg:e.data?JSON.stringify(e.data):e.toString()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],angular.module("app.staff").controller("DisposeCallDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.call=l,u.contact=r,u.hopper={minDate:new Date,dateTime:new Date},u.closeDialog=function(){a.cancel()},u.saveDialog=function(){return u.disable=!0,o.cmHopper.save({phone:u.contact.phone,UserId:c?d.getCurrentUser().id:null,ContactId:u.contact.id,ListId:u.contact.ListId,VoiceQueueId:Number(u.call["xmd-voicequeueid"]),scheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),priority:3,recallme:c,OwnerId:d.getCurrentUser().id}).$promise.then(function(){o.cmHopperFinal.update({id:u.call.uniqueid,rescheduled:!0,rescheduledat:moment(u.hopper.dateTime).format("YYYY-MM-DD HH:mm:ss"),recallme:c}).$promise}).then(function(){s.success({title:m.instant("DASHBOARDS.INFO"),msg:m.instant("DASHBOARDS.CALL_DISPOSED")+" "+(c?m.instant("DASHBOARDS.RECALLME"):m.instant("DASHBOARDS.RESCHEDULE"))}),a.hide()}).catch(function(e){a.cancel(e)}).finally(function(){u.disable=!1})}}e.$inject=["$scope","$state","$location","$mdDialog","$timeout","toasty","api","contact","call","Auth","recallme","$translate"],angular.module("app.staff").controller("RescheduleCallDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s){var o=this;o.callNumber=i,o.page=1,o.onInit=function(){n.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){o.lists=_.chain(e.rows).keyBy("id").mapValues("name").value(),n.cmCustomField.get({fields:"id,alias",nolimit:!0}).$promise.then(function(e){o.customFields=e.rows,o.contacts=_.map(t,function(t){return Object.keys(t).forEach(function(e){if(Number(t[e])===Number(o.callNumber))if(e.startsWith("cf_")){var n=_.find(o.customFields,["id",Number(_.trimStart(e,"cf_"))]);t.matchingField=n?n.alias:a.instant("DASHBOARDS.UNKNOWN")}else t.matchingField=e}),t})})}).then(function(){o.paginatedContacts=_.chunk(t,4)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmList.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectContact=function(){e.hide(o.selectedContact)}}e.$inject=["$mdDialog","$translate","api","contacts","callNumber","toasty"],angular.module("app.dashboards").controller("ContactSelectionController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeAbandonedController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.bull.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"outbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedBullController",e)}(),function(){"use strict";function e(n,e,t){var a=this;a.dispositions=e,a.call=t,a.note=a.call.note||void 0,a.onDispositionChange=function(e){switch(e){case"first":a.selectedDisposition=a.firstLevelDisposition,a.anySecondLevelDisposition=_.some(a.dispositions,["ParentId",a.firstLevelDisposition.id]),a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.anyThirdLevelDisposition=!1;break;case"second":a.selectedDisposition=a.secondLevelDisposition,a.anyThirdLevelDisposition=_.some(a.dispositions,["ParentId",a.secondLevelDisposition.id]);break;case"third":a.selectedDisposition=a.thirdLevelDisposition}},a.clearDispositionSelection=function(e){"second"===e?(a.secondLevelDisposition=void 0,a.thirdLevelDisposition=void 0,a.selectedDisposition=a.firstLevelDisposition):"third"===e&&(a.thirdLevelDisposition=void 0,a.selectedDisposition=a.secondLevelDisposition)},a.saveDisposition=function(){a.call.note=a.note;var e={firstLevel:a.firstLevelDisposition?a.firstLevelDisposition.name:void 0,secondLevel:a.secondLevelDisposition?a.secondLevelDisposition.name:void 0,thirdLevel:a.thirdLevelDisposition?a.thirdLevelDisposition.name:void 0,note:a.note?a.note:void 0};n.hide(e)},a.closeDialog=function(){n.cancel()}}e.$inject=["$mdDialog","dispositions","call"],angular.module("app.dashboards").controller("DisposeAbandonedCallDialogController",e)}(),function(){"use strict";function e(e,n,a,i,t,s,o,r,l,d){var c=this;function m(){return o.disposition.get({fields:"createdAt,updatedAt,id,name,level,ParentId",sort:"name",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise.then(function(e){return c.dispositions=e?e.rows:[],o.user.getQueues({id:r.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise}).then(function(e){c.queues=e||{count:0,rows:[]},c.queuesMap=_.mapValues(_.keyBy(c.queues.rows,"name"),"name"),c.defaultQueues=c.queues.rows?_.map(c.queues.rows,"name").join(","):void 0}).then(function(){c.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:c.currentUser.name,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:c.queues.rows,ngValue:"name",clearAll:!1}]}).catch(function(e){console.log(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id);if(e)(e=JSON.parse(e)).query&&(c.query=_.merge(e.query,c.query));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};c.query.createdAt=n}c.isSearchBarVisible=!!c.query.filter,u()})}function u(){c.query.queue=c.query.queue||c.defaultQueues.split(","),c.query.offset=(c.query.page-1)*c.query.limit;var e={query:c.query};t.localStorage.setItem("motion2.home.abandoned.voice.calls:"+c.currentUser.id,JSON.stringify(e)),c.promise=o.voiceQueueReport.getVoiceQueuesReport(c.query,p).$promise}function p(e){c.abandonedCalls=e||{count:0,rows:[]},c.refresh=!0}c.showTooltip=!1,c.refresh=!0,c.disable=[],c.dispositions={count:0,rows:[]},c.currentUser=r.getCurrentUser(),c.queues={},c.abandonedCalls={count:0,rows:[]},c.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},c.getAbandonedCalls=u,c.refreshAbandonedCalls=function(){c.showTooltip=!1,u()},c.onInit=m,c.reserved=function(e){e&&(c.disable[e.id]=!0,o.voiceQueueReport.update({id:e.id,lastAssignedTo:e.assigned?c.currentUser.name:null,assigned:e.assigned}).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[e.id]=!1,e.lastAssignedTo=e.assigned?c.currentUser.name:null}))},c.dispose=function(t){a.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(i.body),targetEvent:t,locals:{dispositions:c.dispositions,call:t}}).then(function(e){if(e){c.disable[t.id]=!0;var n={id:t.id,lastAssignedTo:t.assigned?c.currentUser.name:null,assigned:t.assigned,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)}).finally(function(){c.disable[t.id]=!1,t.disposition=e.firstLevel,t.secondDisposition=e.secondLevel,t.thirdDisposition=e.thirdLevel})}})},c.call=e.$parent.$parent.$parent.$parent.vm.call,c.transfer=e.$parent.$parent.$parent.$parent.vm.transfer,c.webcall=e.$parent.$parent.$parent.$parent.vm.webcall,c.webtransfer=e.$parent.$parent.$parent.$parent.vm.webtransfer,l.onWithoutApply("voiceQueueReport:save",function(e){c.queuesMap&&"inbound"===e.type&&c.queuesMap[e.queue]&&(c.showTooltip=!0)}),l.onWithoutApply("voiceQueueReport:update",function(e){if(e){var n=_.findIndex(c.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(c.abandonedCalls.rows[n],e)}}),m(),e.$on("$destroy",function(){l.removeAllListeners("voiceQueueReport:save"),l.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeAbandonedVoiceController",e)}(),function(){"use strict";function e(n,a,t,e,i){var s=this;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}s.user=t.getCurrentUser(),s.license={},s.plugin={},s.setting={},s.sidebar="dashboard",s.draftManager=i,s.navigation=e.getNavigation(),s.addContactTab=n.$parent.vm.addContactTab,s.addInteractionTab=n.$parent.vm.addInteractionTab,s.init=function(e,n){s.license=e,s.setting=n;var t=a.localStorage.getItem("motion2.home:"+s.user.id);if(t){try{t=JSON.parse(t),s.sidebar=t.currentSidebarTab?t.currentSidebarTab:"dashboard"}catch(e){console.error(e),s.sidebar="dashboard"}"mail"===s.sidebar&&s.draftManager.init()}},s.changeSidebarTab=function(e){s.sidebar=e.view,"plugin"===s.sidebar&&(s.plugin=e.stateParams,s.pluginId=e.id,n.$broadcast("pluginUpdated",{plugin:s.plugin}));a.localStorage.setItem("motion2.home:"+s.user.id,JSON.stringify({currentSidebarTab:e.view}))},s.hasPermission=function(e){return t.hasPermission(e)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),n.$watch("vm_home.sidebar",function(e,n){"mail"===e?s.draftManager.init():s.draftManager.drafts={}})}e.$inject=["$scope","$window","Auth","msNavigationAgentService","draftManager"],angular.module("app.dashboards").controller("AgentGeneralHomeController",e)}(),function(){"use strict";function e(t,n,i,s,a,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.chatInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,ChatWebsiteId:[]},g.sectionColor="green-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getChatWebsites({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.chatAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Website",key:"ChatWebsiteId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.chatAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Customer Ip",column:"customerIp",type:"text",options:{excludedOperators:["$eq","$ne","$startsWith","$endsWith"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Website",column:"ChatWebsiteId",type:"multiselect",options:{route:{model:"user",action:"getChatWebsites",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("chat",g.query,g.user.id,g.chatAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("chatInteraction:save",O),d.on("chatInteraction:update",O),d.on("chatInteractionTags:save",C),d.on("chatMessage:save",w),d.on("chatMessage:update",w),d.on("user_has_chat_interactions:save",T),d.on("user_has_chat_interactions:remove",I),d.on("userChatWebsite:save",f),d.on("userChatWebsite:remove",b),0<g.setting.chatInteractionsReloadTimeout&&R()})},g.success=E,g.getChatInteractions=y,g.showChatInteraction=function(e,n){t.$parent.vm.addInteractionTab("chat",n)},g.downloadChatInteraction=function(e,s,n){r.chatInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="chat-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadChatInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"chat",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getChatWebsiteLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.chat"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.chat");function h(e){return{accounts:g.chatAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.addAccount("chat",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.ChatWebsiteId);u.removeAccount("chat",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.chatInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<g.chatInteractions.rows.length;n+=1)S(g.chatInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=a.localStorage.getItem("motion2.home.chat:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,a.localStorage.setItem("motion2.home.chat:"+g.user.id,JSON.stringify(n)),g.promise=r.chatInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.chatInteractions.rows=_.orderBy(g.chatInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.chatInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.chatInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.chatInteractions.rows,{id:e.ChatInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.chatInteractionsReloadTimeout)}t.$on("$destroy",function(){d.removeAllListeners("chatMessage:save"),d.removeAllListeners("chatMessage:update"),d.removeAllListeners("chatInteraction:save"),d.removeAllListeners("chatInteractionTags:save"),d.removeAllListeners("chatInteraction:update"),d.removeAllListeners("user_has_chat_interactions:save"),d.removeAllListeners("user_has_chat_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeChatController",e)}(),function(){"use strict";function e(t,n,e,a,i,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,o.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,i.localStorage.setItem("motion2.home.contacts:"+l.currentUser.id,JSON.stringify(t)),l.promise=o.cmContact.get(l.query,d).$promise}l.currentUser=s.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){a.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){a.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e){return o.cmContact.get({id:e}).$promise.then(function(e){n.$parent.vm.addContactTab(e)})},l.call=n.$parent.vm.call,l.onInit=function(){o.user.getLists({id:l.currentUser.id,fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),o.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=i.localStorage.getItem("motion2.home.contacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.log(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){a.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.contacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","$window","Auth","api","toasty"],angular.module("app.dashboards").controller("AgentHomeContactsController",e)}(),function(){"use strict";function e(e,n){var t=n(function(){},999);e.$on("$destroy",function(){t&&(n.cancel(t),t=null)})}e.$inject=["$scope","$interval"],angular.module("app.dashboards").controller("AgentHomeDashboardController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"outbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"outbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.rpc.getVoiceQueues().$promise.then(function(e){return c.rpcVoiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,{type:"outbound",queuecallerleaveAt:null}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardBullController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcChatQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.chatQueuesTotal=e.count?e.count:0,c.chatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.chatQueues,function(e,n){c.rpcChatQueues[n]&&(c.chatQueues[n].waiting=c.rpcChatQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.chatQueues={},c.chatQueuesTotal=0,c.rpcChatQueues={},c.paginatedInteractions=[],c.deleteChatQueuesWaitingInteractions=[],c.rpcChatQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"chat",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getChatQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.chatQueues[e.id]&&c.rpcChatQueues[e.id]&&(_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onSaveChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]=_.pick(e,m))},c.onUpdateChatQueue=function(e){_.isNil(e)||(c.rpcChatQueues[e.id]&&_.merge(c.rpcChatQueues[e.id],_.pick(e,m)),c.chatQueues[e.id]&&_.merge(c.chatQueues[e.id],_.pick(e,m)))},c.onRemoveChatQueue=function(e){_.isNil(e)||(delete c.rpcChatQueues[e.id],delete c.chatQueues[e.id])},c.onSaveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onRemoveUserChatQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getChatQueues()},c.onSaveChatQueueChannel=function(e){c.chatQueues[e.queue_id]&&(c.rpcChatQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveChatQueueChannel=function(e){delete c.rpcChatQueuesWaitingInteractions[e.id],u&&c.deleteChatQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("chat_queue:save",c.onSaveQueue),l.onWithoutApply("chatQueue:save",c.onSaveChatQueue),l.onWithoutApply("chatQueue:update",c.onUpdateChatQueue),l.onWithoutApply("chatQueue:remove",c.onRemoveChatQueue),l.onWithoutApply("userChatQueue:save",c.onSaveUserChatQueue),l.onWithoutApply("userChatQueue:remove",c.onRemoveUserChatQueue),l.onWithoutApply("chat_queue_waiting_interaction:save",c.onSaveChatQueueChannel),l.onWithoutApply("chat_queue_waiting_interaction:remove",c.onRemoveChatQueueChannel),o.rpc.getChatQueues().$promise.then(function(e){c.rpcChatQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"chat"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getChatQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcChatQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteChatQueuesWaitingInteractions.length;e+=1)delete c.rpcChatQueuesWaitingInteractions[c.deleteChatQueuesWaitingInteractions[e]];u=!1,c.deleteChatQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getChatQueues())}),e.$on("$destroy",function(){l.removeAllListeners("chat_queue:save"),l.removeAllListeners("chatQueue:save"),l.removeAllListeners("chatQueue:update"),l.removeAllListeners("chatQueue:remove"),l.removeAllListeners("userChatQueue:save"),l.removeAllListeners("userChatQueue:remove"),l.removeAllListeners("chat_queue_waiting_interaction:save"),l.removeAllListeners("chat_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelChatController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcFaxQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.faxQueuesTotal=e.count?e.count:0,c.faxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.faxQueues,function(e,n){c.rpcFaxQueues[n]&&(c.faxQueues[n].waiting=c.rpcFaxQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.faxQueues={},c.faxQueuesTotal=0,c.rpcFaxQueues={},c.paginatedInteractions=[],c.deleteFaxQueuesWaitingInteractions=[],c.rpcFaxQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"fax",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getFaxQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.faxQueues[e.id]&&c.rpcFaxQueues[e.id]&&(_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onSaveFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]=_.pick(e,m))},c.onUpdateFaxQueue=function(e){_.isNil(e)||(c.rpcFaxQueues[e.id]&&_.merge(c.rpcFaxQueues[e.id],_.pick(e,m)),c.faxQueues[e.id]&&_.merge(c.faxQueues[e.id],_.pick(e,m)))},c.onRemoveFaxQueue=function(e){_.isNil(e)||(delete c.rpcFaxQueues[e.id],delete c.faxQueues[e.id])},c.onSaveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onRemoveUserFaxQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getFaxQueues()},c.onSaveFaxQueueChannel=function(e){c.faxQueues[e.queue_id]&&(c.rpcFaxQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveFaxQueueChannel=function(e){delete c.rpcFaxQueuesWaitingInteractions[e.id],u&&c.deleteFaxQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("fax_queue:save",c.onSaveQueue),l.onWithoutApply("faxQueue:save",c.onSaveFaxQueue),l.onWithoutApply("faxQueue:update",c.onUpdateFaxQueue),l.onWithoutApply("faxQueue:remove",c.onRemoveFaxQueue),l.onWithoutApply("userFaxQueue:save",c.onSaveUserFaxQueue),l.onWithoutApply("userFaxQueue:remove",c.onRemoveUserFaxQueue),l.onWithoutApply("fax_queue_waiting_interaction:save",c.onSaveFaxQueueChannel),l.onWithoutApply("fax_queue_waiting_interaction:remove",c.onRemoveFaxQueueChannel),o.rpc.getFaxQueues().$promise.then(function(e){c.rpcFaxQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"fax"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getFaxQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcFaxQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteFaxQueuesWaitingInteractions.length;e+=1)delete c.rpcFaxQueuesWaitingInteractions[c.deleteFaxQueuesWaitingInteractions[e]];u=!1,c.deleteFaxQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getFaxQueues())}),e.$on("$destroy",function(){l.removeAllListeners("fax_queue:save"),l.removeAllListeners("faxQueue:save"),l.removeAllListeners("faxQueue:update"),l.removeAllListeners("faxQueue:remove"),l.removeAllListeners("userFaxQueue:save"),l.removeAllListeners("userFaxQueue:remove"),l.removeAllListeners("fax_queue_waiting_interaction:save"),l.removeAllListeners("fax_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelFaxController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcMailQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.mailQueuesTotal=e.count?e.count:0,c.mailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.mailQueues,function(e,n){c.rpcMailQueues[n]&&(c.mailQueues[n].waiting=c.rpcMailQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.mailQueues={},c.mailQueuesTotal=0,c.rpcMailQueues={},c.paginatedInteractions=[],c.deleteMailQueuesWaitingInteractions=[],c.rpcMailQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"mail",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getMailQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.mailQueues[e.id]&&c.rpcMailQueues[e.id]&&(_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onSaveMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]=_.pick(e,m))},c.onUpdateMailQueue=function(e){_.isNil(e)||(c.rpcMailQueues[e.id]&&_.merge(c.rpcMailQueues[e.id],_.pick(e,m)),c.mailQueues[e.id]&&_.merge(c.mailQueues[e.id],_.pick(e,m)))},c.onRemoveMailQueue=function(e){_.isNil(e)||(delete c.rpcMailQueues[e.id],delete c.mailQueues[e.id])},c.onSaveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onRemoveUserMailQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getMailQueues()},c.onSaveMailQueueChannel=function(e){c.mailQueues[e.queue_id]&&(c.rpcMailQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveMailQueueChannel=function(e){delete c.rpcMailQueuesWaitingInteractions[e.id],u&&c.deleteMailQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("mail_queue:save",c.onSaveQueue),l.onWithoutApply("mailQueue:save",c.onSaveMailQueue),l.onWithoutApply("mailQueue:update",c.onUpdateMailQueue),l.onWithoutApply("mailQueue:remove",c.onRemoveMailQueue),l.onWithoutApply("userMailQueue:save",c.onSaveUserMailQueue),l.onWithoutApply("userMailQueue:remove",c.onRemoveUserMailQueue),l.onWithoutApply("mail_queue_waiting_interaction:save",c.onSaveMailQueueChannel),l.onWithoutApply("mail_queue_waiting_interaction:remove",c.onRemoveMailQueueChannel),o.rpc.getMailQueues().$promise.then(function(e){c.rpcMailQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"mail"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getMailQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcMailQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteMailQueuesWaitingInteractions.length;e+=1)delete c.rpcMailQueuesWaitingInteractions[c.deleteMailQueuesWaitingInteractions[e]];u=!1,c.deleteMailQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getMailQueues())}),e.$on("$destroy",function(){l.removeAllListeners("mail_queue:save"),l.removeAllListeners("mailQueue:save"),l.removeAllListeners("mailQueue:update"),l.removeAllListeners("mailQueue:remove"),l.removeAllListeners("userMailQueue:save"),l.removeAllListeners("userMailQueue:remove"),l.removeAllListeners("mail_queue_waiting_interaction:save"),l.removeAllListeners("mail_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelMailController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcOpenchannelQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.openchannelQueuesTotal=e.count?e.count:0,c.openchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.openchannelQueues,function(e,n){c.rpcOpenchannelQueues[n]&&(c.openchannelQueues[n].waiting=c.rpcOpenchannelQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.openchannelQueues={},c.openchannelQueuesTotal=0,c.rpcOpenchannelQueues={},c.paginatedInteractions=[],c.deleteOpenchannelQueuesWaitingInteractions=[],c.rpcOpenchannelQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"openchannel",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getOpenchannelQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.openchannelQueues[e.id]&&c.rpcOpenchannelQueues[e.id]&&(_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onSaveOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]=_.pick(e,m))},c.onUpdateOpenchannelQueue=function(e){_.isNil(e)||(c.rpcOpenchannelQueues[e.id]&&_.merge(c.rpcOpenchannelQueues[e.id],_.pick(e,m)),c.openchannelQueues[e.id]&&_.merge(c.openchannelQueues[e.id],_.pick(e,m)))},c.onRemoveOpenchannelQueue=function(e){_.isNil(e)||(delete c.rpcOpenchannelQueues[e.id],delete c.openchannelQueues[e.id])},c.onSaveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onRemoveUserOpenchannelQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getOpenchannelQueues()},c.onSaveOpenchannelQueueChannel=function(e){c.openchannelQueues[e.queue_id]&&(c.rpcOpenchannelQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveOpenchannelQueueChannel=function(e){delete c.rpcOpenchannelQueuesWaitingInteractions[e.id],u&&c.deleteOpenchannelQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("openchannel_queue:save",c.onSaveQueue),l.onWithoutApply("openchannelQueue:save",c.onSaveOpenchannelQueue),l.onWithoutApply("openchannelQueue:update",c.onUpdateOpenchannelQueue),l.onWithoutApply("openchannelQueue:remove",c.onRemoveOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:save",c.onSaveUserOpenchannelQueue),l.onWithoutApply("userOpenchannelQueue:remove",c.onRemoveUserOpenchannelQueue),l.onWithoutApply("openchannel_queue_waiting_interaction:save",c.onSaveOpenchannelQueueChannel),l.onWithoutApply("openchannel_queue_waiting_interaction:remove",c.onRemoveOpenchannelQueueChannel),o.rpc.getOpenchannelQueues().$promise.then(function(e){c.rpcOpenchannelQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"openchannel"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getOpenchannelQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcOpenchannelQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteOpenchannelQueuesWaitingInteractions.length;e+=1)delete c.rpcOpenchannelQueuesWaitingInteractions[c.deleteOpenchannelQueuesWaitingInteractions[e]];u=!1,c.deleteOpenchannelQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getOpenchannelQueues())}),e.$on("$destroy",function(){l.removeAllListeners("openchannel_queue:save"),l.removeAllListeners("openchannelQueue:save"),l.removeAllListeners("openchannelQueue:update"),l.removeAllListeners("openchannelQueue:remove"),l.removeAllListeners("userOpenchannelQueue:save"),l.removeAllListeners("userOpenchannelQueue:remove"),l.removeAllListeners("openchannel_queue_waiting_interaction:save"),l.removeAllListeners("openchannel_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelOpenchannelController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcSmsQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.smsQueuesTotal=e.count?e.count:0,c.smsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.smsQueues,function(e,n){c.rpcSmsQueues[n]&&(c.smsQueues[n].waiting=c.rpcSmsQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.smsQueues={},c.smsQueuesTotal=0,c.rpcSmsQueues={},c.paginatedInteractions=[],c.deleteSmsQueuesWaitingInteractions=[],c.rpcSmsQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"sms",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getSmsQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.smsQueues[e.id]&&c.rpcSmsQueues[e.id]&&(_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onSaveSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]=_.pick(e,m))},c.onUpdateSmsQueue=function(e){_.isNil(e)||(c.rpcSmsQueues[e.id]&&_.merge(c.rpcSmsQueues[e.id],_.pick(e,m)),c.smsQueues[e.id]&&_.merge(c.smsQueues[e.id],_.pick(e,m)))},c.onRemoveSmsQueue=function(e){_.isNil(e)||(delete c.rpcSmsQueues[e.id],delete c.smsQueues[e.id])},c.onSaveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onRemoveUserSmsQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getSmsQueues()},c.onSaveSmsQueueChannel=function(e){c.smsQueues[e.queue_id]&&(c.rpcSmsQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveSmsQueueChannel=function(e){delete c.rpcSmsQueuesWaitingInteractions[e.id],u&&c.deleteSmsQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("sms_queue:save",c.onSaveQueue),l.onWithoutApply("smsQueue:save",c.onSaveSmsQueue),l.onWithoutApply("smsQueue:update",c.onUpdateSmsQueue),l.onWithoutApply("smsQueue:remove",c.onRemoveSmsQueue),l.onWithoutApply("userSmsQueue:save",c.onSaveUserSmsQueue),l.onWithoutApply("userSmsQueue:remove",c.onRemoveUserSmsQueue),l.onWithoutApply("sms_queue_waiting_interaction:save",c.onSaveSmsQueueChannel),l.onWithoutApply("sms_queue_waiting_interaction:remove",c.onRemoveSmsQueueChannel),o.rpc.getSmsQueues().$promise.then(function(e){c.rpcSmsQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"sms"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getSmsQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcSmsQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteSmsQueuesWaitingInteractions.length;e+=1)delete c.rpcSmsQueuesWaitingInteractions[c.deleteSmsQueuesWaitingInteractions[e]];u=!1,c.deleteSmsQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getSmsQueues())}),e.$on("$destroy",function(){l.removeAllListeners("sms_queue:save"),l.removeAllListeners("smsQueue:save"),l.removeAllListeners("smsQueue:update"),l.removeAllListeners("smsQueue:remove"),l.removeAllListeners("userSmsQueue:save"),l.removeAllListeners("userSmsQueue:remove"),l.removeAllListeners("sms_queue_waiting_interaction:save"),l.removeAllListeners("sms_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelSmsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["type","waiting","dialMethod","dialActive"];function u(e){c.voiceQueuesTotal=e.count?e.count:0,c.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.voiceQueues,function(e,n){c.rpcVoiceQueues[n]&&(c.voiceQueues[n].waiting=c.rpcVoiceQueues[n].waiting||0)})}c.voiceQueues={},c.voiceQueuesTotal=0,c.rpcVoiceQueues={},c.getVoiceQueues={},c.rpcVoiceQueuesChannels={},c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.load=!0,c.query={id:r.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",type:"inbound",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=u,c.getVoiceQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,u).$promise},c.getSize=function(e){return _.size(e)},c.onSaveQueue=function(e){c.voiceQueues[e.id]&&c.rpcVoiceQueues[e.id]&&(c.rpcVoiceQueues[e.id]=e,_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onSaveChannel=function(e){"inbound"===e.type&&(e.queuecallerleaveAt?(delete c.rpcVoiceQueuesChannels[e.uniqueid],c.load&&c.deleteVoiceQueuesChannels.push(e.uniqueid)):(c.rpcVoiceQueuesChannels[e.uniqueid]=e,c.load&&(c.addVoiceQueuesChannels[e.uniqueid]=e)))},c.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getVoiceQueues()},c.onSaveVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]=_.pick(e,m))},c.onUpdateVoiceQueue=function(e){_.isNil(e)||(c.rpcVoiceQueues[e.id]&&_.merge(c.rpcVoiceQueues[e.id],_.pick(e,m)),c.voiceQueues[e.id]&&_.merge(c.voiceQueues[e.id],_.pick(e,m)))},c.onRemoveVoiceQueue=function(e){_.isNil(e)||(delete c.rpcVoiceQueues[e.id],delete c.voiceQueues[e.id])},l.onWithoutApply("voice_queue:save",c.onSaveQueue),l.onWithoutApply("voice_queue_channel:save",c.onSaveChannel),l.onWithoutApply("userVoiceQueue:save",c.onUserVoiceQueue),l.onWithoutApply("userVoiceQueue:remove",c.onUserVoiceQueue),l.onWithoutApply("voiceQueue:save",c.onSaveVoiceQueue),l.onWithoutApply("voiceQueue:remove",c.onRemoveVoiceQueue),l.onWithoutApply("voiceQueue:update",c.onUpdateVoiceQueue),o.user.getQueues(c.query).$promise.then(function(e){return c.myQueues=e,o.rpc.getVoiceQueues().$promise}).then(function(e){for(var n=e.rows,t=_.keyBy(n,"id"),a=0;a<c.myQueues.count;a++){var i=c.myQueues.rows[a];c.rpcVoiceQueues[i.id]=t[i.id]}return o.rpc.getVoiceQueuesChannels().$promise}).then(function(e){c.rpcVoiceQueuesChannels=e?_.keyBy(e.rows?_.filter(e.rows,function(e){return!("inbound"!==e.type||e.queuecallerleaveAt||!_.find(c.myQueues.rows,{name:e.queue}))}):[],"uniqueid"):{}}).catch(function(e){console.error(e)}).finally(function(){_.merge(c.rpcVoiceQueuesChannels,c.addVoiceQueuesChannels);for(var e=0;e<c.deleteVoiceQueuesChannels.length;e+=1)delete c.rpcVoiceQueuesChannels[c.deleteVoiceQueuesChannels[e]];c.load=!1,c.addVoiceQueuesChannels={},c.deleteVoiceQueuesChannels=[],c.getVoiceQueues()});var p=!0,g=1;e.$watch("vm_dc.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getVoiceQueues())}),e.$on("$destroy",function(){l.removeAllListeners("voice_queue:save"),l.removeAllListeners("voice_queue_channel:save"),l.removeAllListeners("userVoiceQueue:save"),l.removeAllListeners("userVoiceQueue:remove"),l.removeAllListeners("voiceQueue:save"),l.removeAllListeners("voiceQueue:update"),l.removeAllListeners("voiceQueue:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardVoiceController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["id","name","mapAgentsId","waiting"],u=!0;function p(){var e=(c.queryChannels.page-1)*c.queryChannels.limit;c.paginatedInteractions=_.orderBy(c.rpcWhatsappQueuesWaitingInteractions,["joinAt"],["desc"]),c.interactions=_.drop(c.paginatedInteractions,e).slice(0,c.queryChannels.limit)}function g(e){c.whatsappQueuesTotal=e.count?e.count:0,c.whatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{},_.forIn(c.whatsappQueues,function(e,n){c.rpcWhatsappQueues[n]&&(c.whatsappQueues[n].waiting=c.rpcWhatsappQueues[n].waiting||0)})}function v(){c.query.offset=(c.query.page-1)*c.query.limit,c.promise=o.user.getQueues(c.query,g).$promise}c.whatsappQueues={},c.whatsappQueuesTotal=0,c.rpcWhatsappQueues={},c.paginatedInteractions=[],c.deleteWhatsappQueuesWaitingInteractions=[],c.rpcWhatsappQueuesWaitingInteractions={},c.query={id:r.getCurrentUser().id,channel:"whatsapp",fields:"id,name,mapAgentsId,waiting",limit:10,page:1},c.queryChannels={limit:10,page:1},c.success=g,c.getWhatsappQueues=v,c.getSize=function(e){return _.size(e)},c.getColorByChannel=function(e){switch(e){case"chat":return"green-A700-bg";case"mail":return"teal-bg";case"sms":return"orange-bg";case"whatsapp":return"lime-A700-bg";case"openchannel":return"amber-A200-bg";case"fax":return"blue-grey-A200-bg";default:return"white-bg"}},c.paginate=p,c.onSaveQueue=function(e){c.whatsappQueues[e.id]&&c.rpcWhatsappQueues[e.id]&&(_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onSaveWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]=_.pick(e,m))},c.onUpdateWhatsappQueue=function(e){_.isNil(e)||(c.rpcWhatsappQueues[e.id]&&_.merge(c.rpcWhatsappQueues[e.id],_.pick(e,m)),c.whatsappQueues[e.id]&&_.merge(c.whatsappQueues[e.id],_.pick(e,m)))},c.onRemoveWhatsappQueue=function(e){_.isNil(e)||(delete c.rpcWhatsappQueues[e.id],delete c.whatsappQueues[e.id])},c.onSaveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onRemoveUserWhatsappQueue=function(e){_.toInteger(e.UserId)===r.getCurrentUser().id&&c.getWhatsappQueues()},c.onSaveWhatsappQueueChannel=function(e){c.whatsappQueues[e.queue_id]&&(c.rpcWhatsappQueuesWaitingInteractions[e.id]=e,p())},c.onRemoveWhatsappQueueChannel=function(e){delete c.rpcWhatsappQueuesWaitingInteractions[e.id],u&&c.deleteWhatsappQueuesWaitingInteractions.push(e.id);p()},l.onWithoutApply("whatsapp_queue:save",c.onSaveQueue),l.onWithoutApply("whatsappQueue:save",c.onSaveWhatsappQueue),l.onWithoutApply("whatsappQueue:update",c.onUpdateWhatsappQueue),l.onWithoutApply("whatsappQueue:remove",c.onRemoveWhatsappQueue),l.onWithoutApply("userWhatsappQueue:save",c.onSaveUserWhatsappQueue),l.onWithoutApply("userWhatsappQueue:remove",c.onRemoveUserWhatsappQueue),l.onWithoutApply("whatsapp_queue_waiting_interaction:save",c.onSaveWhatsappQueueChannel),l.onWithoutApply("whatsapp_queue_waiting_interaction:remove",c.onRemoveWhatsappQueueChannel),o.rpc.getWhatsappQueues().$promise.then(function(e){c.rpcWhatsappQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}).then(function(e){return o.user.getQueues({id:r.getCurrentUser().id,channel:"whatsapp"}).$promise}).then(function(e){return c.myQueues=e.rows,o.rpc.getWhatsappQueuesWaitingInteractions().$promise}).then(function(e){var n=_.filter(e.rows,function(e){return _.find(c.myQueues,{id:e.queue_id})});e.rows=n,e.count=n.length,_.merge(c.rpcWhatsappQueuesWaitingInteractions,e?_.keyBy(e.rows?e.rows:[],"id"):{})}).catch(function(e){console.error(e)}).finally(function(){for(var e=0;e<c.deleteWhatsappQueuesWaitingInteractions.length;e+=1)delete c.rpcWhatsappQueuesWaitingInteractions[c.deleteWhatsappQueuesWaitingInteractions[e]];u=!1,c.deleteWhatsappQueuesWaitingInteractions=[],v(),p()});var h=!0,f=1;e.$watch("vm_dc.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=f),c.getWhatsappQueues())}),e.$on("$destroy",function(){l.removeAllListeners("whatsapp_queue:save"),l.removeAllListeners("whatsappQueue:save"),l.removeAllListeners("whatsappQueue:update"),l.removeAllListeners("whatsappQueue:remove"),l.removeAllListeners("userWhatsappQueue:save"),l.removeAllListeners("userWhatsappQueue:remove"),l.removeAllListeners("whatsapp_queue_waiting_interaction:save"),l.removeAllListeners("whatsapp_queue_waiting_interaction:remove")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","Auth","socket","toasty"],angular.module("app.dashboards").controller("AgentHomeDashboardMultiChannelWhatsappController",e)}(),function(){"use strict";function e(a,t,i,s,o,n,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.faxInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,FaxAccountId:[]},g.sectionColor="blue-grey",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getFaxAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.faxAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"FaxAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.faxAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"FaxAccountId",type:"multiselect",options:{route:{model:"user",action:"getFaxAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("fax",g.query,g.user.id,g.faxAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("faxInteraction:save",O),d.on("faxInteraction:update",O),d.on("faxInteractionTags:save",C),d.on("faxMessage:save",w),d.on("faxMessage:update",w),d.on("user_has_fax_interactions:save",T),d.on("user_has_fax_interactions:remove",I),d.on("userFaxAccount:save",f),d.on("userFaxAccount:remove",b)})},g.success=E,g.getFaxInteractions=y,g.showFaxInteraction=function(e,n){a.$parent.vm.addInteractionTab("fax",n)},g.downloadFaxInteraction=function(e,s,n){r.faxInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="fax-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadFaxInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"fax",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?n.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return n.instant("DASHBOARDS.NOT_ASSIGNED")},g.getFaxAccountLabel=function(e){if(e.Account)return e.Account.key;return n.instant("DASHBOARDS.UNKNOWN")},g.composeFaxInteraction=function(e,t){i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.faxAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.fax"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.fax");function h(e){return{accounts:g.faxAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.addAccount("fax",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.FaxAccountId);u.removeAccount("fax",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.faxInteractionsReloadTimeout&&function(e){e&&g.interactionsInterval&&t.cancel(g.interactionsInterval);g.interactionsInterval=t(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.faxInteractionsReloadTimeout)}(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.faxInteractions=e||{count:0,rows:[]};for(var n=0;n<g.faxInteractions.rows.length;n+=1)S(g.faxInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=o.localStorage.getItem("motion2.home.fax:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,o.localStorage.setItem("motion2.home.fax:"+g.user.id,JSON.stringify(n)),g.promise=r.faxInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.faxInteractions.rows=_.orderBy(g.faxInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else y(g.query.page)}}function C(e){if(e){var n=_.find(g.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.faxInteractions.rows,{id:e.FaxInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}a.$on("$destroy",function(){d.removeAllListeners("faxMessage:save"),d.removeAllListeners("faxMessage:update"),d.removeAllListeners("faxInteraction:save"),d.removeAllListeners("faxInteractionTags:save"),d.removeAllListeners("faxInteraction:update"),d.removeAllListeners("user_has_fax_interactions:save"),d.removeAllListeners("user_has_fax_interactions:remove"),g.interactionsInterval&&t.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeFaxController",e)}(),function(){"use strict";function e(o,n,r,l,m,t,e,d,a,i,c,u,s,p,g){var v=this;v.user=a.getCurrentUser(),v.license={},v.setting={},v.tags={count:0,rows:[]},v.mailInteractions={count:0,rows:[]},v.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,MailAccountId:[]},v.sectionColor="teal",v.onInit=function(e,n){return v.license=e,v.setting=n,d.user.getMailAccounts({id:v.user.id,nolimit:!0}).$promise.then(function(e){return v.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){v.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){v.subStatuses=e||{count:0,rows:[]}}).then(function(){v.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:v.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Account",key:"MailAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:v.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:v.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:v.tags.rows,placeholder:"DASHBOARDS.TAGS"}],v.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"MailAccountId",type:"multiselect",options:{route:{model:"user",action:"getMailAccounts",params:{id:v.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:E("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:E("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:E("third")}}]}}).catch(function(e){h.error(e)}).finally(function(){s.parseInteractionsKey("mail",v.query,v.user.id,v.mailAccounts.rows).then(function(){v.isSearchBarVisible=!(v.query.search||!v.query.filter),S(v.query.page)}),i.on("mailInteraction:save",w),i.on("mailInteraction:update",w),i.on("mailInteractionTags:save",R),i.on("mailMessage:save",x),i.on("mailMessage:update",x),i.on("user_has_mail_interactions:save",O),i.on("user_has_mail_interactions:remove",C),i.on("userMailAccount:save",b),i.on("userMailAccount:remove",A),0<v.setting.mailInteractionsReloadTimeout&&N()})},v.success=y,v.getMailInteractions=S,v.showMailInteraction=T,v.downloadMailInteraction=function(e,s,n){d.mailInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mail-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadMailInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.disposeInteraction=function(e,n){var t=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause,a=!n.Account.mandatoryDisposition;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){v.user&&n.Account.mandatoryDisposition&&!t&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},locals:{user:v.user,channel:"mail",interaction:n}})},v.getContactLabel=I,v.getAgentLabel=function(e){if(e.UserId)return e.UserId===v.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},v.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},v.composeMailInteraction=function(e,s){r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.id},i).$promise.then(function(e){if(e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={channel:"mail",account:s,message:e.message,contact:e.contact};u.add(n)}})},v.openAdvancedSearch=function(){r.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{color:v.sectionColor,fields:v.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){v.isSearchBarVisible=!(e.value||!v.query.filter),e.apply&&(v.query.search=e.value,S())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var h=g.getLogger("agent.general.mail");function f(e){return{accounts:v.mailAccounts,accountId:e,filters:v.quickFilters,query:v.query,userId:v.user.id}}function b(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.addAccount("mail",n).then(function(e){e&&S()}).catch(function(e){h.error(e)})}}function A(e){if(e.UserId===v.user.id){var n=f(e.MailAccountId);p.removeAccount("mail",n).catch(function(e){h.error(e)})}}function E(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(v.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function y(e){!v.reloadingInteractions&&0<v.setting.mailInteractionsReloadTimeout&&N(!0),v.searchInProgress=!1,v.reloadingInteractions=!1,v.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<v.mailInteractions.rows.length;n+=1)I(v.mailInteractions.rows[n])}function S(e){v.searchInProgress=!0,e||(v.query.page=1),(void 0===v.query.closed||null===v.query.closed||v.query.closed)&&delete v.query.substatus,v.query.offset=(v.query.page-1)*v.query.limit;var n=m.localStorage.getItem("motion2.home.mail:"+v.user.id);(n=n?JSON.parse(n):{}).query=v.query,m.localStorage.setItem("motion2.home.mail:"+v.user.id,JSON.stringify(n)),v.promise=d.mailInteraction.get(v.query,y).$promise}function T(e,n){o.$parent.vm.addInteractionTab("mail",n)}function I(e){_.isEmpty(e.to)||!e.Account||_.includes(e.to,e.Account.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:e.contactInfo=e.to.split("<").pop().split(">")[0],"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function O(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function C(e){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function w(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),v.query.sort){var t=_.startsWith(v.query.sort,"-")?"desc":"asc";v.mailInteractions.rows=_.orderBy(v.mailInteractions.rows,_.trimStart(v.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===v.setting.mailInteractionsReloadTimeout&&S(v.query.page)}}function R(e){if(e){var n=_.find(v.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function x(e){if(e&&!e.secret){var n=_.find(v.mailInteractions.rows,{id:e.MailInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function N(e){e&&v.interactionsInterval&&n.cancel(v.interactionsInterval),v.interactionsInterval=n(function(){v.reloadingInteractions=!0,v.searchInProgress||S()},1e3*v.setting.mailInteractionsReloadTimeout)}o.$on("openMailDraft",function(e,s){s.interaction?(s.interaction.isDraft=!0,T(null,s.interaction)):r.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(l.body),clickOutsideToClose:!1,locals:{account:s.account,message:s.content,type:"draft",interaction:{}},fullscreen:!0}).then(function(e){if(e){if(!e.message||!e.message.savedAsDraft){var i=e;return d.mailAccount.send({id:s.account.id},i).$promise.then(function(e){if(u.remove(s.id),e&&e.Messages&&e.Messages.length){if(i.attachments&&i.attachments.length)for(var n=0;n<i.attachments.length;n+=1)d.attachment.update({id:i.attachments[n].id},{MailMessageId:_.head(e.Messages).id});if(c.success({title:"Message properly sent!",msg:"Message has been sent!"}),e.closed){e.disposition=null;var t=!s.account.mandatoryDisposition,a=v.user.voicePause||v.user.chatPause||v.user.mailPause||v.user.openchannelPause||v.user.faxPause;r.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(l.body),onRemoving:function(){v.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:v.user.id}).$promise.catch(function(e){h.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:v.user,channel:"mail",interaction:e}})}else o.$parent.vm.addInteractionTab("mail",e)}}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"MAILACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}var n={id:s.id,channel:"mail",account:e.account,message:e.message};u.update(n)}})}),v.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},v.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){i.removeAllListeners("mailMessage:save"),i.removeAllListeners("mailMessage:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteractionTags:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("user_has_mail_interactions:save"),i.removeAllListeners("user_has_mail_interactions:remove"),v.interactionsInterval&&n.cancel(v.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","draftManager","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeMailController",e)}(),function(){"use strict";function e(t,a,e,i,n,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.contacts=e||{count:0,rows:[]}}function c(e,n){l.searchInProgress=!0,s.cmContact.describe({id:l.query.ListId}).$promise.then(function(e){return _(e.toJSON()).omit("UserId").values().map(function(e){return function(e){var n={name:_.startCase(e.displayName),column:e.columnName,options:{}};if(e.custom)switch(e.custom.type){case"text":n.type="text";break;case"select":n.type="multiselect",n.values=_.map(JSON.parse(e.custom.values),function(e,n){return{id:n,name:e.value,value:e.value}}),n.options.field="name";break;case"switch":n.type="select",n.values=[{id:1,translate:"DASHBOARDS.ENABLED"},{id:0,translate:"DASHBOARDS.DISABLED"}],n.options.excludedOperators=["$ne"];break;case"number":n.type="number";break;case"datetime":n.type="date"}else switch(e.columnName){case"dateOfBirth":n.type="date";break;case"CompanyId":n.name="Company",n.type="autocomplete",n.options.route={model:"cmCompany",action:"get",params:{fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;case"ListId":n.name="List",n.type="autocomplete",n.options.route={model:"user",action:"getLists",params:{id:l.currentUser.id,fields:"id,name",nolimit:!0}},n.options.searchFields=["name"],n.options.excludedOperators=["$ne"];break;default:_.includes(e.type.toLowerCase(),"int")?n.type="number":_.includes(e.type.toLowerCase(),"date")?n.type="date":n.type="text"}return n}(e)}).value()}).then(function(e){l.advancedSearch.fields=e;var n=_.findIndex(e,function(e){return _.startsWith(e.column,"cf_")})||e.length-1;n<0&&(n=e.length),l.advancedSearch.fields.splice(n,0,{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"DESCRIBE_CM_CONTACTS",msg:e.data?JSON.stringify(e.data.message):e.toString()})}),e||(l.query.page=1),l.query.offset=(l.query.page-1)*l.query.limit;var t=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);(t=t?JSON.parse(t):{}).query=l.query,o.localStorage.setItem("motion2.home.mycontacts:"+l.currentUser.id,JSON.stringify(t)),l.query.search&&(l.advancedQuery=_.omit(l.query,"id")),l.promise=l.query.search?s.cmContact.get(l.advancedQuery,d).$promise:s.user.getContacts(l.query,d).$promise}l.currentUser=n.getCurrentUser(),l.lists={},l.contacts={count:0,rows:[]},l.tags={count:0,rows:[]},l.query={includeAll:!0,id:l.currentUser.id,sort:"-updatedAt",limit:10,page:1},l.advancedSearch={fields:[]},l.sectionColor="red",l.getContacts=c,l.refreshContacts=function(){c()},l.mergeContact=function(e,n){i.show({controller:"MergeContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/merge/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.duplicateContact=function(e,n){i.show({controller:"DuplicateContactDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{contact:["apiResolver",function(e){return e.resolve("cmContact@get",{id:n.id})}],lists:["apiResolver",function(e){return e.resolve("user@getLists",{id:l.currentUser.id,fields:"id,name"})}]},locals:{contacts:l.contacts.rows}})},l.openContact=function(e,n){a.$parent.vm.addContactTab(n)},l.call=a.$parent.vm.call,l.onInit=function(){s.cmList.get({fields:"id,name,dialPrefix",sort:"name",nolimit:!0}).$promise.then(function(e){return l.lists=e||{count:0,rows:[]},l.listsMap=_.keyBy(l.lists.rows,"id"),s.tag.get({sort:"name"}).$promise}).then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"List",key:"ListId",type:"multiselect",label:"CONTACTMANAGER.SELECT_LIST",options:l.lists.rows,clearAll:!1},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:l.tags.rows,placeholder:"DASHBOARDS.TAGS"}]}).catch(function(e){console.error(e)}).finally(function(){var e=o.localStorage.getItem("motion2.home.mycontacts:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query),_.isEmpty(l.lists.rows)?l.query.ListId=[]:_.isEmpty(l.query.ListId)&&(l.query.ListId=_(l.lists.rows).map("id").take().value()))}catch(e){console.error(e)}else l.query.ListId=_.map(l.lists.rows,"id");l.isSearchBarVisible=!(l.query.search||!l.query.filter),c()})},l.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{color:l.sectionColor,fields:l.advancedSearch.fields,storagePath:"home.mycontacts"},fullscreen:!0}).then(function(e){l.isSearchBarVisible=!(e.value||!l.query.filter),e.apply&&(l.query.search=e.value?e.value+="||User:=$eq["+l.currentUser.id+"]":e.value,c())}).catch(function(e){r.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}}e.$inject=["$document","$scope","$timeout","$mdDialog","Auth","api","$window","toasty"],angular.module("app.dashboards").controller("AgentHomeMyContactsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.openchannelInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,OpenchannelAccountId:[]},g.sectionColor="amber",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getOpenchannelAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.openchannelAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"OpenchannelAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.openchannelAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"OpenchannelAccountId",type:"multiselect",options:{route:{model:"user",action:"getOpenchannelAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("openchannel",g.query,g.user.id,g.openchannelAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("openchannelInteraction:save",O),d.on("openchannelInteraction:update",O),d.on("openchannelInteractionTags:save",C),d.on("openchannelMessage:save",w),d.on("openchannelMessage:update",w),d.on("user_has_openchannel_interactions:save",T),d.on("user_has_openchannel_interactions:remove",I),d.on("userOpenchannelAccount:save",f),d.on("userOpenchannelAccount:remove",b),0<g.setting.openchannelInteractionsReloadTimeout&&R()})},g.success=E,g.getOpenchannelInteractions=y,g.showOpenchannelInteraction=function(e,n){a.$parent.vm.addInteractionTab("openchannel",n)},g.downloadOpenchannelInteraction=function(e,s,n){r.openchannelInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="openchannel-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadOpenchannelInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"openchannel",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getOpenchannelAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeOpenchannelInteraction=function(e,t){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.openchannelAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("openchannel",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"OPENCHANNELACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.openchannel"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.openchannel");function h(e){return{accounts:g.openchannelAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.addAccount("openchannel",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.OpenchannelAccountId);u.removeAccount("openchannel",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.openchannelInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<g.openchannelInteractions.rows.length;n+=1)S(g.openchannelInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.openchannel:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.openchannel:"+g.user.id,JSON.stringify(n)),g.promise=r.openchannelInteraction.get(g.query,E).$promise}function S(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.openchannelInteractions.rows=_.orderBy(g.openchannelInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.openchannelInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.openchannelInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("openchannelMessage:save"),d.removeAllListeners("openchannelMessage:update"),d.removeAllListeners("openchannelInteraction:save"),d.removeAllListeners("openchannelInteractionTags:save"),d.removeAllListeners("openchannelInteraction:update"),d.removeAllListeners("user_has_openchannel_interactions:save"),d.removeAllListeners("user_has_openchannel_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeOpenchannelController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e,n,t){d.license=e,d.setting=n,d.plugin=t}d.currentUser=o.getCurrentUser(),d.plugin={},d.onInit=c,d.getTrustedURL=function(){return s.trustAsResourceUrl(d.plugin.agentUrl)},c(),n.$on("pluginUpdated",function(e,n){d.plugin=n.plugin})}e.$inject=["$document","$scope","$timeout","$mdDialog","$stateParams","$sce","Auth","api","$window"],angular.module("app.dashboards").controller("AgentHomePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(){d.agentsQuery.offset=(d.agentsQuery.page-1)*d.agentsQuery.limit,l.update("motion2.home.presence.agents:"+d.currentUser.id,d.agentsQuery,"query"),i.user.getPresence(d.agentsQuery).$promise.then(function(e){d.agents={count:e.count,rows:_.filter(e.rows,function(e){return e.id!==d.currentUser.id})}}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function m(){d.queuesQuery.offset=(d.queuesQuery.page-1)*d.queuesQuery.limit,l.update("motion2.home.presence.queues:"+d.currentUser.id,d.queuesQuery,"query"),i.voiceQueue.get(d.queuesQuery).$promise.then(function(e){return d.voiceQueues=e||{rows:[],count:0},i.rpc.getVoiceQueuesChannels().$promise.then(function(e){e.rows.forEach(function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);n&&(n.calls||(n.calls=[]),n.calls.push(e))})})}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")})})}function u(e){return 0===d.selectedTab?e:"xcallyQueueExtension"+e}function p(e,n,t,a){var i=_.find(d.agents.rows,["id",e]);i&&(i.status=!1===n?"offline":a?"pause":"unavailable"===t?t:_.includes(["idle","unknown","ringing",null,void 0],t)?"online":"busy")}function g(e){e.id!==d.currentUser.id&&p(e.id,e.online,e.voiceStatus,e.voicePause)}d.currentUser=s.getCurrentUser(),d.agents={count:0,rows:[]},d.agentsQuery={fields:"id,name,internal,online",role:"agent",sort:"name",limit:10,page:1},d.queuesQuery={fields:"id,name",type:"inbound",sort:"name",limit:10,page:1},d.onAgentsTabSelection=function(){if(d.agentsQuery.filter||d.agentsQuery.teams||d.agentsQuery.queues)return;_.merge(d.agentsQuery,l.get("motion2.home.presence.agents:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.agentsQuery.filter,a.all([a(function(n,e){i.team.get({fields:"id,name",sort:"name",nolimit:!0}).$promise.then(function(e){d.teams=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("STAFF.TEAMS"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})}),a(function(n,e){i.voiceQueue.get({fields:"id,name",type:"inbound",sort:"name",nolimit:!0}).$promise.then(function(e){d.queues=e||{rows:[],count:0},n()}).catch(function(){r.error({title:t.instant("VOICE.VOICEQUEUES"),msg:t.instant("CONTACTMANAGER.NOTIFICATIONS.NO_DATA_ERROR")}),e()})})]).then(function(){d.quickFilters=[{name:"Team",key:"teams",type:"multiselect",label:"DASHBOARDS.SELECT_TEAM",options:d.teams.rows},{name:"Queue",key:"queues",type:"multiselect",label:"DASHBOARDS.SELECT_QUEUE",options:d.queues.rows}],c()}).catch(function(){r.error({title:t.instant("DASHBOARDS.AGENT_PRESENCE"),msg:t.instant("DASHBOARDS.ERRORS.FAILED_INITIALIZATION")})})},d.onQueuesTabSelection=function(){if(d.queuesQuery.filter)return;_.merge(d.queuesQuery,l.get("motion2.home.presence.queues:"+d.currentUser.id,"query")),d.isSearchBarVisible=!!d.queuesQuery.filter,m()},d.getAgents=c,d.getVoiceQueues=m,d.originateCall=function(e){n.$broadcast("webrtc::call",{target:u(e)})},d.transferCall=function(e){n.$broadcast("webrtc::transfer",{target:u(e)})},o.on("user:presence",function(e){if(e.id===d.currentUser.id)return;p(e.id,e.online,e.voiceStatus,e.voicePause)}),o.on("user:update",g),o.on("voice_queue_presence:save",function(e){if(!d.voiceQueues&&d.voiceQueues.rows)return;var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;n.calls||(n.calls=[]);if(_.some(n.calls,["uniqueid",e.uniqueid]))return;n.calls.push(e)}),o.on("voice_queue_presence:remove",function(e){var n=_.find(d.voiceQueues.rows,["name",e.name]);if(!n)return;_.remove(n.calls,["uniqueid",e.uniqueid])}),e.$on("$destroy",function(){o.removeListener("user:update",g),o.removeAllListeners("user:presence"),o.removeAllListeners("voice_queue_presence:save"),o.removeAllListeners("voice_queue_presence:remove")})}e.$inject=["$scope","$rootScope","$translate","$q","api","Auth","socket","toasty","localStorageManager"],angular.module("app.dashboards").controller("AgentHomePresenceController",e)}(),function(){"use strict";function e(e,t,n,a,o,i){var s=this;function r(e){s.searchInProgress=!1,s.voiceRecordings=e||{count:0,rows:[]}}function l(){s.searchInProgress=!0,s.query.offset=(s.query.page-1)*s.query.limit;var e={query:s.query};t.localStorage.setItem("motion2.home.recordings:"+s.currentUser.id,JSON.stringify(e)),s.promise=a.voiceRecording.get(s.query,r).$promise}s.currentUser=i.getCurrentUser(),s.voiceRecordings={},s.table="voiceRecordings",s.query={UserId:s.currentUser.id,fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,rating,audio,transcribeStatus,UserId",sort:"-updatedAt",limit:10,page:1,type:null},s.downloadfile=function(i,e){return a.voiceRecording.download({id:i.id,exists:!0}).$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download",i.uniqueid+i.format),a.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.downloadtranscribe=function(s,e){return a.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.success=r,s.getVoiceRecordings=l,s.onInit=function(){s.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}];var e=t.localStorage.getItem("motion2.home.recordings:"+s.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(s.query=_.merge(s.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};s.query.createdAt=n}s.isSearchBarVisible=!!s.query.filter,l()}}e.$inject=["$scope","$window","$timeout","api","toasty","Auth"],angular.module("app.dashboards").controller("AgentHomeRecordingsController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,r,n){var l=this;function d(e){l.searchInProgress=!1,l.scheduledCalls=e||{count:0,rows:[]}}l.currentUser=n.getCurrentUser(),l.priorities=["Lowest","Low","Medium","High","Highest"],l.crudPermissions={readOnly:!1,canEdit:!0,canDelete:!0},l.scheduledCalls={},l.query={id:l.currentUser.id,fields:"id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone",sort:"scheduledat",limit:10,page:1},l.queueCampaigns={rows:[],count:0},l.success=d,l.getScheduledCalls=function(){l.searchInProgress=!0,l.query.id=l.currentUser.id,l.query.includeAll=!0,l.query.offset=(l.query.page-1)*l.query.limit,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";var e={query:l.query};t.localStorage.setItem("motion2.home.scheduled:"+l.currentUser.id,JSON.stringify(e)),l.promise=r.user.getScheduledCalls(l.query,d).$promise},l.onInit=function(){r.user.getQueues({id:n.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){l.queueCampaigns=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"scheduledat",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Campaigns",key:"VoiceQueueId",type:"multiselect",label:"MOTIONDIALER.SELECT_CAMPAIGN",options:l.queueCampaigns.rows}]}).catch(function(e){console.error(e)}).finally(function(){var e=t.localStorage.getItem("motion2.home.scheduled:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.omit(e.query,["filter"]))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.scheduledat=n}l.getScheduledCalls()})},l.isDateBeforeToday=function(e){return moment(e).isBefore(moment())},l.createOrEditQueueCampaignHopper=function(e,n){i.show({controller:"CreateOrEditHopperVoiceQueueIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:null,hopper:n,hoppers:l.scheduledCalls.rows,license:null,setting:null,crudPermissions:l.crudPermissions}})},l.deleteConfirm=function(n,e){var t=i.confirm().title("Are you sure want to delete the scheduled call?").htmlContent("<b>Scheduled call</b> will be deleted.").ariaLabel("delete scheduled call").targetEvent(e).ok("OK").cancel("CANCEL");i.show(t).then(function(){var e;e=n,r.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(l.scheduledCalls.rows,{id:e.id}),l.scheduledCalls.count-=1,l.scheduledCalls.rows.length||l.getScheduledCalls(),o.success({title:"Scheduled call deleted!",msg:e.name?"Scheduled call has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE_HOPPER"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETE_HOPPER",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})};var c=!0,m=1;e.$watch("vm.query.filter",function(e,n){c?a(function(){c=!1}):(n||(m=l.query.page),e!==n&&(l.query.page=1),e||(l.query.page=m),l.getScheduledCalls())})}e.$inject=["$scope","$window","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.dashboards").controller("AgentHomeScheduledCallsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.smsInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,SmsAccountId:[]},g.sectionColor="orange",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getSmsAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.smsAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"SmsAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.smsAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"SmsAccountId",type:"multiselect",options:{route:{model:"user",action:"getSmsAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("sms",g.query,g.user.id,g.smsAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("smsInteraction:save",O),d.on("smsInteraction:update",O),d.on("smsInteractionTags:save",C),d.on("smsMessage:save",w),d.on("smsMessage:update",w),d.on("user_has_sms_interactions:save",T),d.on("user_has_sms_interactions:remove",I),d.on("userSmsAccount:save",f),d.on("userSmsAccount:remove",b),0<g.setting.smsInteractionsReloadTimeout&&R()})},g.success=E,g.getSmsInteractions=y,g.showSmsInteraction=function(e,n){a.$parent.vm.addInteractionTab("sms",n)},g.downloadSmsInteraction=function(e,s,n){r.smsInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="sms-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadSmsInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"sms",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getSmsAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeSmsInteraction=function(e,t){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.smsAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("sms",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SMSACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.sms"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.sms");function h(e){return{accounts:g.smsAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.addAccount("sms",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.SmsAccountId);u.removeAccount("sms",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.smsInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<g.smsInteractions.rows.length;n+=1)S(g.smsInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.sms:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.sms:"+g.user.id,JSON.stringify(n)),g.promise=r.smsInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.smsInteractions.rows=_.orderBy(g.smsInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.smsInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.smsInteractions.rows,{id:e.SmsInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.smsInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("smsMessage:save"),d.removeAllListeners("smsMessage:update"),d.removeAllListeners("smsInteraction:save"),d.removeAllListeners("smsInteractionTags:save"),d.removeAllListeners("smsInteraction:update"),d.removeAllListeners("user_has_sms_interactions:save"),d.removeAllListeners("user_has_sms_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeSmsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r){var l=this;function d(e){l.searchInProgress=!1,l.voiceCalls=e||{count:0,rows:[]}}function c(){l.searchInProgress=!0,l.query.offset=(l.query.page-1)*l.query.limit;var e={query:l.query};s.localStorage.setItem("motion2.home.voice:"+l.currentUser.id,JSON.stringify(e)),l.promise=a.voiceCallReport.get(l.query,d).$promise}l.currentUser=e.getCurrentUser(),l.voiceCalls={},l.table="voiceCalls",l.query={UserId:l.currentUser.id,fields:"id,type,uniqueid,tag,starttime,endtime,source,destination,userDisposition,userSecondDisposition,userThirdDisposition,note,duration,billableseconds,answertime",sort:"-updatedAt",limit:10,page:1,type:null},l.success=d,l.getVoiceCalls=c,l.onInit=function(){return a.tag.get({sort:"name"}).$promise.then(function(e){l.tags=e||{count:0,rows:[]}}).then(function(){l.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Type",key:"type",type:"select",label:"VOICE.SELECT_TYPE",customOptions:[{value:"internal",translate:"VOICE.INTERNAL"},{value:"inbound",translate:"VOICE.INBOUND"},{value:"outbound",translate:"VOICE.OUTBOUND"},{value:"dialer",translate:"VOICE.DIALER"},{value:null,translate:"VOICE.ALL"}]}]}).catch(function(e){i.error({title:"Init error",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}),l.tags={count:0,rows:[]}}).finally(function(){var e=s.localStorage.getItem("motion2.home.voice:"+l.currentUser.id);if(e)try{(e=JSON.parse(e)).query&&(l.query=_.merge(l.query,e.query))}catch(e){console.error(e)}else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};l.query.createdAt=n}l.isSearchBarVisible=!!l.query.filter,c()})},l.showDetails=function(e){n.show({controller:"AgentHomeVoiceDetailsController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,locals:{call:e}})}}e.$inject=["$mdDialog","$document","api","toasty","Auth","$window","$scope","$timeout"],angular.module("app.dashboards").controller("AgentHomeVoiceController",e)}(),function(){"use strict";function e(e,n){this.call=n,this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","call"],angular.module("app.dashboards").controller("AgentHomeVoiceDetailsController",e)}(),function(){"use strict";function e(a,n,i,s,t,o,e,r,l,d,c,m,u,p){var g=this;g.user=l.getCurrentUser(),g.license={},g.setting={},g.tags={count:0,rows:[]},g.whatsappInteractions={count:0,rows:[]},g.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null,WhatsappAccountId:[]},g.sectionColor="lime-A700",g.onInit=function(e,n){return g.license=e,g.setting=n,r.user.getWhatsappAccounts({id:g.user.id,nolimit:!0}).$promise.then(function(e){return g.whatsappAccounts=e||{count:0,rows:[]},r.tag.get({sort:"name"}).$promise}).then(function(e){g.tags=e||{count:0,rows:[]}}).then(function(){g.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Account",key:"WhatsappAccountId",type:"multiselect",label:"DASHBOARDS.SELECT_ACCOUNT",options:g.whatsappAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:g.user.id,translate:"DASHBOARDS.ME"},{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:g.tags.rows,placeholder:"DASHBOARDS.TAGS"}],g.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Account",column:"WhatsappAccountId",type:"multiselect",options:{route:{model:"user",action:"getWhatsappAccounts",params:{id:g.user.id,nolimit:!0}}}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:A("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:A("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:A("third")}}]}}).catch(function(e){v.error(e)}).finally(function(){m.parseInteractionsKey("whatsapp",g.query,g.user.id,g.whatsappAccounts.rows).then(function(){g.isSearchBarVisible=!(g.query.search||!g.query.filter),y(g.query.page)}),d.on("whatsappInteraction:save",O),d.on("whatsappInteraction:update",O),d.on("whatsappInteractionTags:save",C),d.on("whatsappMessage:save",w),d.on("whatsappMessage:update",w),d.on("user_has_whatsapp_interactions:save",T),d.on("user_has_whatsapp_interactions:remove",I),d.on("userWhatsappAccount:save",f),d.on("userWhatsappAccount:remove",b),0<g.setting.whatsappInteractionsReloadTimeout&&R()})},g.success=E,g.getWhatsappInteractions=y,g.showWhatsappInteraction=function(e,n){a.$parent.vm.addInteractionTab("whatsapp",n)},g.downloadWhatsappInteraction=function(e,s,n){r.whatsappInteraction.download({id:s.id,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="whatsapp-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"downloadWhatsappInteraction",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.disposeInteraction=function(e,n){var t=g.user.voicePause||g.user.chatPause||g.user.mailPause||g.user.openchannelPause||g.user.faxPause,a=!n.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(s.body),clickOutsideToClose:a,escapeToClose:a,onRemoving:function(){g.user&&n.Account.mandatoryDisposition&&!t&&r.user.unpause({id:g.user.id}).$promise.catch(function(e){v.error(e)})},locals:{user:g.user,channel:"whatsapp",interaction:n}})},g.getContactLabel=S,g.getAgentLabel=function(e){if(e.UserId)return e.UserId===g.user.id?o.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return o.instant("DASHBOARDS.NOT_ASSIGNED")},g.getWhatsappAccountLabel=function(e){if(e.Account)return e.Account.key;return o.instant("DASHBOARDS.UNKNOWN")},g.composeWhatsappInteraction=function(e,t){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{account:t,message:{},type:"new",interaction:{}},fullscreen:!0}).then(function(e){if(e){var n=e;return r.whatsappAccount.send({id:t.id},n).$promise.then(function(e){c.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("whatsapp",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"WHATSAPPACCOUNT:SEND",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}})},g.openAdvancedSearch=function(){i.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(s.body),clickOutsideToClose:!1,locals:{color:g.sectionColor,fields:g.advancedSearch.fields,storagePath:"home.whatsapp"},fullscreen:!0}).then(function(e){g.isSearchBarVisible=!(e.value||!g.query.filter),e.apply&&(g.query.search=e.value,y())}).catch(function(e){c.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})};var v=p.getLogger("agent.general.whatsapp");function h(e){return{accounts:g.whatsappAccounts,accountId:e,filters:g.quickFilters,query:g.query,userId:g.user.id}}function f(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.addAccount("whatsapp",n).then(function(e){e&&y()}).catch(function(e){v.error(e)})}}function b(e){if(e.UserId===g.user.id){var n=h(e.WhatsappAccountId);u.removeAccount("whatsapp",n).catch(function(e){v.error(e)})}}function A(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(g.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function E(e){!g.reloadingInteractions&&0<g.setting.whatsappInteractionsReloadTimeout&&R(!0),g.searchInProgress=!1,g.reloadingInteractions=!1,g.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<g.whatsappInteractions.rows.length;n+=1)S(g.whatsappInteractions.rows[n])}function y(e){g.searchInProgress=!0,e||(g.query.page=1),g.query.offset=(g.query.page-1)*g.query.limit;var n=t.localStorage.getItem("motion2.home.whatsapp:"+g.user.id);(n=n?JSON.parse(n):{}).query=g.query,t.localStorage.setItem("motion2.home.whatsapp:"+g.user.id,JSON.stringify(n)),g.promise=r.whatsappInteraction.get(g.query,E).$promise}function S(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function T(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function I(e){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function O(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),g.query.sort){var t=_.startsWith(g.query.sort,"-")?"desc":"asc";g.whatsappInteractions.rows=_.orderBy(g.whatsappInteractions.rows,_.trimStart(g.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===g.setting.whatsappInteractionsReloadTimeout&&y(g.query.page)}}function C(e){if(e){var n=_.find(g.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function w(e){if(e&&!e.secret){var n=_.find(g.whatsappInteractions.rows,{id:e.WhatsappInteractionId});if(n){var t=_.find(n.Messages,{id:e.id});t?_.merge(t,_.pick(e,_.keys(t))):(_.isNil(n.Messages)&&(n.Messages={count:0}),e.read||(n.Messages.count+=1))}}}function R(e){e&&g.interactionsInterval&&n.cancel(g.interactionsInterval),g.interactionsInterval=n(function(){g.reloadingInteractions=!0,g.searchInProgress||y()},1e3*g.setting.whatsappInteractionsReloadTimeout)}a.$on("$destroy",function(){d.removeAllListeners("whatsappMessage:save"),d.removeAllListeners("whatsappMessage:update"),d.removeAllListeners("whatsappInteraction:save"),d.removeAllListeners("whatsappInteractionTags:save"),d.removeAllListeners("whatsappInteraction:update"),d.removeAllListeners("user_has_whatsapp_interactions:save"),d.removeAllListeners("user_has_whatsapp_interactions:remove"),g.interactionsInterval&&n.cancel(g.interactionsInterval)})}e.$inject=["$scope","$interval","$mdDialog","$document","$window","$translate","$q","api","Auth","socket","toasty","localStorageManager","agentAccountAssociationManager","ClientSideLoggingService"],angular.module("app.dashboards").controller("AgentHomeWhatsappController",e)}(),function(){"use strict";function e(e,n){var t=this;t.setting={},t.messages={count:0,rows:[]},t.showInteraction=!1,t.init=function(e,n){t.setting=n,t.tab=e,t.tab.saved=!0},t.getTrustedURL=function(){return n.trustAsResourceUrl(t.tab.src)}}e.$inject=["$scope","$sce"],angular.module("app.dashboards").controller("AgentGeneralIframeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this,f=25,b=1024*f*1024;function A(){var e=h.user.voicePause||h.user.chatPause||h.user.mailPause||h.user.openchannelPause||h.user.faxPause,n=!h.tab.interaction.Account.mandatoryDisposition;i.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(t.body),clickOutsideToClose:n,escapeToClose:n,onRemoving:function(){h.user&&h.interaction.Account.mandatoryDisposition&&!e&&l.user.unpause({id:h.user.id}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},locals:{user:h.user,channel:h.tab.channel,interaction:h.tab.interaction}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)})}function E(e,n){h.tab.message=n,i.show({controller:"ComposeMailInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:h.tab.message,type:e,interaction:h.interaction},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){if(e)if(e.message&&e.message.savedAsDraft)h.draft?p.update({id:h.draft.id,channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}):p.add({channel:"mail",account:h.account,message:e.message,contact:h.contact,interaction:h.interaction}),h.draft=p.getByInteraction(h.tab.interaction.id);else{var n=e;n&&S(n),n.Interaction&&h.interaction&&h.interaction.id&&(n.Interaction.id=h.interaction.id,l.mailInteraction.update(n.Interaction).$promise.then(function(e){e&&e.closed?(h.tab.saved=!0,h.interaction.closed=!0,A()):null!==n.Interaction.substatus&&(h.tab.saved=!0,h.tab.interaction.substatus=n.Interaction.substatus,a.$parent.$parent.$parent.vm.closeTab(h.tab))}).catch(function(e){d.error(e.data?e.data.message:e.toString())}))}}).finally(function(){h.tab.isDraft=!1})}function y(){"mail"!==h.tab.channel&&n(function(){var e=angular.element(t.find("md-content[name*='interaction-content-"+h.tab.id+"']"));e&&e[0]&&(e[0].scrollTop=e[0].scrollHeight)},0)}function S(i){if(i)return i["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]=h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"],i[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,i.UserId=h.user.id,i.ContactId=h.interaction.ContactId,i.direction="out",i.secret=Boolean(h.tab.spy||i.secret),l[h.tab.channel+"Message"].save(i).$promise.then(function(e){if(e&&e.id&&!_.isEmpty(i.attachments)){for(var n=[],t=0;t<i.attachments.length;t++){var a=i.attachments[t];a.MailMessageId?n.push(l.attachment.clone({id:a.id},{name:a.name,basename:a.basename,type:a.type,MailMessageId:e.id}).$promise):n.push(l.attachment.update({id:a.id},{MailMessageId:e.id}).$promise)}return s.all(n)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SENDMESSAGE",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){"mail"===h.tab.channel&&i.isDraft&&(p.removeByInteraction(h.interaction.id),h.draft=null),h.tab.areaText="",y()})}function T(e){switch(h.tab.channel){case"mail":h.draft.content.originalMessage=e?_.find(h.interaction.Messages,["id",e]):h.interaction.Messages[h.interaction.Messages.length-1],E(h.draft.type,h.draft.content)}}function I(e){h.journeyIsLoading=!0;var n=_.merge(h.journeyOptions,{id:h.contact.id,offset:e||0});return g.get(h.journey,n).then(function(e){h.journey=e.journey,h.canLoadMoreJourney=e.loadMore}).finally(function(){h.journeyIsLoading=!1})}h.showFooter=!1,h.BTNLoadMore=0,h.showInteraction=!1,h.user=c.getCurrentUser(),h.detectBrowser=u.detectBrowser(),h.journey=[],h.acceptedMessages=[],h.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:b,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},h.ngFlow={flow:{}},h.selectedMailShowDetails={},h.selectedMailShowSystemMessage={},h.setting={},h.ctrlMethods={},h.embedOptions={fontSmiley:!0,sanitizeHtml:!0,emoji:!0,link:!0,linkTarget:"_blank"},h.journeyOptions=g.getQuery(),h.quickFilters=g.getQuickFilters(),h.init=function(e,n){h.tab=e,h.tab.saved=!0,h.tab.badges=0,h.setting=n||{},h.tab&&h.tab.channel&&h.tab.interaction&&(h.interaction=h.tab.interaction,l[h.tab.channel+"Interaction"].get({id:h.tab.interaction.id,includeAll:!0}).$promise.then(function(e){return e&&(h.interaction=e,h.tab.interaction=e),h.tab.saved=h.interaction.closed,h.queryMessage={id:h.interaction.id,includeAll:!0},"mail"===h.tab.channel?(h.queryMessage.sort="-id",h.queryMessage.offset=0,h.queryMessage.limit=3,h.queryMessage.inlineCss=!0):(h.queryMessage.sort="id",h.queryMessage.nolimit=!0),l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise}).then(function(e){return e&&(h.BTNLoadMore=e.count-h.queryMessage.limit),h.messages=e||{count:0,rows:[]},l["chat"===h.tab.channel?"chatWebsite":h.tab.channel+"Account"].get({id:h.interaction["chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId"]}).$promise}).then(function(e){if(h.account=e,h.tab.title=h.account.key||h.account.name,h.interaction.ContactId)return l.cmContact.get({id:h.interaction.ContactId}).$promise}).then(function(e){return e&&(h.contact=e),h.showInteraction=!0,h.contact?h.tab.title+=" - "+(h.user.privacyEnabled?v.mask(h.contact.firstName):h.contact.firstName):h.tab.title+=" - "+r.instant(h.tab.channel.toUpperCase()+".UNKNOWN"),l.user.get({fields:"id,fullname",nolimit:!0}).$promise}).then(function(e){h.users=e||{count:0,rows:[]},h.usersMap=_.mapValues(_.keyBy(h.users.rows,"id"),"fullname")}).then(function(){if(h.tab.channel&&h.interaction)return l.user["add"+_.upperFirst(h.tab.channel)+"Interactions"]({id:h.user.id,ids:[h.interaction.id]})}).then(function(){return l.mailSubstatus.get({sort:"name",nolimit:!0}).$promise}).then(function(e){h.subStatuses=e||{count:0,rows:[]}}).catch(function(){h.showInteraction=!0}).finally(function(){h.contact&&I(),function(){switch(h.user.role){case"admin":return h.downloadPermissions={attachments:!0,interactions:!0};case"agent":return h.downloadPermissions={attachments:h.user.downloadAttachments,interactions:h.user.downloadOmnichannelInteractions};case"user":l.userProfile.get({id:h.user.userProfileId,fields:"downloadAttachments,downloadOmnichannelInteractions"}).$promise.then(function(e){h.downloadPermissions={attachments:e.downloadAttachments,interactions:e.downloadOmnichannelInteractions}}).catch(function(){h.downloadPermissions={attachments:!1,interactions:!1}})}}(),function(){if(!h.tab.spy&&!h.interaction.closed){var t=[];if(h.messages.rows.forEach(function(e){if("in"===e.direction&&!e.read){var n=0===t.length;t.push(l[h.tab.channel+"Message"].accept({id:e.id,UserId:h.user.id,manual:n}).$promise),h.acceptedMessages.push(e.id)}}),"mail"===h.tab.channel){var e=_(h.interaction.Messages).filter({read:!1,direction:"in"}).differenceBy(h.messages.rows,"id").value();e.forEach(function(e){t.push(l.mailMessage.accept({id:e.id,UserId:h.user.id}).$promise),h.acceptedMessages.push(e.id)})}s.all(t)}}(),y(),m.on(h.tab.channel+"Message:save",h.onMessageSave),m.on(h.tab.channel+"Message:update",h.onMessageSave),m.on(h.tab.channel+"Interaction:save",h.onInteractionSave),m.on(h.tab.channel+"Interaction:update",h.onInteractionSave),m.on("user_has_"+h.tab.channel+"_interactions:save",h.onInteractionOpen),m.on("user_has_"+h.tab.channel+"_interactions:remove",h.onInteractionClose),h.tab.areaText=h.tab.areaText?h.tab.areaText:"",h.showFooter=!0,"mail"===h.tab.channel&&(h.draft=p.getByInteraction(h.tab.interaction.id),h.tab.isDraft&&(h.tab.interaction.closed?(p.removeByInteraction(h.tab.interaction.id),h.draft=null):T()))}))},h.getLabelByMessage=function(e){var n="loading...";if(e)return"in"===e.direction?e.Contact?e.Contact.firstName||"Anonymous":n:e.UserId?h.usersMap?h.usersMap[e.UserId]:n:"System"},h.openContact=function(e,n){try{h.tab&&!h.tab.spy&&a.$parent.$parent.$parent.vm.addContactTab(n||h.contact)}catch(e){d.error({title:"ERROR OPEN CONTACT",msg:"Unable to open the contact"})}},h.openInteraction=function(e){try{if(e.MailAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("mail",e);if(e.ChatWebsiteId)return a.$parent.$parent.$parent.vm.addInteractionTab("chat",e);if(e.SmsAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("sms",e);if(e.WhatsappAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("whatsapp",e);if(e.OpenchannelAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("openchannel",e);if(e.FaxAccountId)return a.$parent.$parent.$parent.vm.addInteractionTab("fax",e)}catch(e){d.error({title:"ERROR OPEN INTERACTION",msg:"Customer Journey can't open the interaction"})}},h.disposeInteraction=A,h.tagInteraction=function(){i.show({controller:"TagInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!0,skipHide:Boolean(h.tab.spy),resolve:{tags:["apiResolver",function(e){return e.resolve("tag@get",{sort:"name",nolimit:!0,fields:"id,name,color"})}]},locals:{channel:h.tab.channel,interaction:h.tab.interaction}})},h.composeMailInteraction=function(n,e){if(e.inReplyTo){var t=_.find(h.messages.rows,{messageId:e.inReplyTo});if(!t)return l.mailMessage.get({messageId:e.inReplyTo}).$promise.then(function(e){E(n,e&&e.count?e.rows[0]:void 0)}).catch(function(e){d.error(e.data?e.data.message:e.toString()),E(n,void 0)});E(n,t)}else E(n,e)},h.composeFaxInteraction=function(e){var n={to:[]};n.to.push(h.contact.fax),i.show({controller:"ComposeFaxInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0}).then(function(e){return l.faxAccount.send({id:h.account.id},e).$promise.then(function(e){d.success({title:"Message properly sent!",msg:"Message has been sent!"}),a.$parent.vm.addInteractionTab("fax",e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:"FAX:SEND",msg:e.data?JSON.stringify(e.data):e.message||e.toString()})})})},h.composeSmsInteraction=function(e,n){i.show({controller:"ComposeSmsInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeWhatsappInteraction=function(e,n){i.show({controller:"ComposeWhatsappInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeChatInteraction=function(e,n){i.show({controller:"ComposeChatInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.composeOpenchannelInteraction=function(e,n){i.show({controller:"ComposeOpenchannelInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,message:n,type:e},fullscreen:!0,skipHide:Boolean(h.tab.spy)}).then(function(e){e&&S(e)})},h.transferLastMessage=function(){if(h.interaction){var e=_.findLast(h.messages.rows,function(e){return"in"===e.direction});e?i.show({controller:"TransferMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",parent:angular.element(t.body),clickOutsideToClose:!1,locals:{account:h.account,interaction:h.interaction,message:e,channel:h.tab.channel},resolve:{agents:["apiResolver",function(e){var n={fields:"id,name",$id:{ne:h.user.id},role:"agent",online:!0,sort:"name",nolimit:!0};return n[h.tab.channel+"Pause"]=!1,e.resolve("user@get",n)}],queues:["apiResolver",function(e){return e.resolve(h.tab.channel+"Queue@get",{fields:"id,name",sort:"name",nolimit:!0})}]}}).then(function(e){h.tab.saved=Boolean(e),e&&a.$parent.$parent.$parent.vm.closeTab(h.tab)}):d.error({title:"Invalid transfer",msg:"Message not found!"})}},h.downloadMessage=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Message"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=h.tab.channel+"-message"+s.id+".eml";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.downloadMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.downloadInteraction=function(s,e){h.tab.channel&&s.id&&l[h.tab.channel+"Interaction"].download({id:s.id,attachments:e}).$promise.then(function(e){var n=[e.buffer],t=h.tab.channel+"-interaction"+s.id+".zip",a=new Blob(n,{type:e.type}),i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.inteactionMessage.get",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},h.openDraft=T,h.createVidaooSession=function(e){var n={id:e.id,account:e.Account,contact:e.Contact};return l.chatInteraction.createVidaooSession(n).$promise.then(function(){d.success({title:"Start Video Call",msg:"Session properly created."})}).catch(function(){d.error({title:"Start Video Call",msg:"Unable to create session!"})})},h.reply=function(e,n){if(e&&13===e.keyCode&&e.shiftKey)return;if(e&&13!==e.keyCode)return;if(""===n.trim())return;S(function(e){var n={},t="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";n[t]=h.interaction[t].toString(),n[_.capitalize(h.tab.channel)+"InteractionId"]=h.interaction.id,("sms"===h.tab.channel||"whatsapp"===h.tab.channel)&&(n.phone=h.interaction.phone);e&&(n.UserId=h.user.id,n.ContactId=h.interaction.ContactId,n.body=e);return n}(n.trim()))},h.upload=function(){h.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},h.ngFlow.flow.upload()},h.fileAdded=function(e){if(e.size>b)return d.error({title:"File too big",msg:"The max allowed size is "+f+"MB"}),!1;return!0},h.fileSuccess=function(e,n){var t=JSON.parse(n),a=t.name;"chat"===h.tab.channel&&(a='<a href="'+(h.account.remote?h.account.remote:o.protocol()+"://"+o.host())+"/api/chat/interactions/"+h.interaction.id+"/attachment_download?attachId="+t.id+"&token="+h.account.token+'" target="_self">'+t.name+"</a>");S({body:a,AttachmentId:t.id})},h.onMessageSave=function(e){if(e&&h.interaction.id!=e[_.capitalize(h.tab.channel)+"InteractionId"])return;var n=!1;h.messages?n=_.find(h.messages.rows,{id:e.id}):h.messages={rows:[],count:0};n?_.merge(n,e):("mail"===h.tab.channel?h.messages.rows.unshift(e):h.messages.rows.push(e),y())},h.onInteractionSave=function(e){if(e&&h.interaction.id!==e.id)return;e.closed&&(h.tab.saved=!0);_.merge(h.interaction,e)},h.searchTextChange=function(n){var t=s.defer(),a=[],e={},i="chat"===h.tab.channel?"ChatWebsiteId":_.capitalize(h.tab.channel)+"AccountId";return e.filter=n,e[i]=h.account.id,l.cannedAnswer.get(e).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},h.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:h.user,account:h.account,interaction:h.interaction,contact:h.interaction&&h.interaction.Contact?h.interaction.Contact:{}};""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=e(t),h.ctrlMethods.setText(h.tab.areaText)}catch(e){""!==h.tab.areaText&&(h.tab.areaText+=" "),h.tab.areaText+=n.value,h.ctrlMethods.setText(h.tab.areaText)}h.selectedItem=null,h.changeDisplayCannedAnswerInputValue()}},h.getMessagesAlignment=function(e){if(e.secret&&h.user.id!=e.UserId)return"in";switch(h.setting.messagesAlignment){case"left":return"in"==e.direction?e.direction:"out-left-aligned";case"right":return"in"==e.direction?"in-right-aligned":e.direction;default:return e.direction}},h.displayCannedAnswerInput=!1,h.changeDisplayCannedAnswerInputValue=function(){h.displayCannedAnswerInput=!h.displayCannedAnswerInput},h.setAs=function(e){h.tab.channel&&h.interaction&&h.interaction.id&&l[h.tab.channel+"Interaction"].update({id:h.interaction.id,substatus:e}).$promise.catch(function(e){d.error(e.data?e.data.message:e.toString())})},h.markAsUnread=function(){if(h.tab.channel&&h.interaction&&h.interaction.id)if(h.acceptedMessages.length)for(var e=0;e<h.acceptedMessages.length;e+=1)l[h.tab.channel+"Message"].update({id:h.acceptedMessages[e],read:!1,UserId:null});else for(var n=0;n<h.messages.rows.length;n+=1)if("in"===h.messages.rows[n].direction){h.messages.rows[n].UserId===h.user.id?l[h.tab.channel+"Message"].update({id:h.messages.rows[n].id,read:!1,UserId:null}):d.error({title:"You can't mark as unread",msg:"You are not the owner of the last message!"});break}h.tab.saved=!0,a.$parent.$parent.$parent.vm.closeTab(h.tab)},h.getAttachments=function(n){return l.attachment.get({MailMessageId:n.id}).$promise.then(function(e){e&&e.rows&&(n.attachments=e.rows)}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.getAttachment=function(i){return l.attachment.download({id:i.id}).$promise.then(function(e){if(e){var n=new Blob([e.buffer],{type:e.type}),t=document.createElement("a"),a=window.URL.createObjectURL(n);t.href=a,t.target="_self",t.download=i.name,document.body.appendChild(t),t.click(),setTimeout(function(){document.body.removeChild(t),window.URL.revokeObjectURL(a)},100)}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"ATTACHMENTS:GET",msg:e.data?JSON.stringify(e.data):e.toString()})})},h.htmlToPlaintext=function(e){return e?String(e).replace(/<[^>]+>/gm,""):""},h.onInteractionOpen=function(e){var n;h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&(h.interaction.Users&&(n=_.find(h.interaction.Users,{id:e.UserId})),n||h.interaction.Users.push({id:e.UserId}))},h.onInteractionClose=function(e){h.interaction.id==e[_.upperFirst(h.tab.channel)+"InteractionId"]&&h.interaction.Users&&_.remove(h.interaction.Users,{id:e.UserId})},h.getCustomerJourney=I,h.loadNextPage=function(){var t=s.defer();if(h.queryMessage)return h.queryMessage.offset=h.messages.rows.length,l[h.tab.channel+"Interaction"].getMessages(h.queryMessage).$promise.then(function(e){for(var n=0;n<e.rows.length;n+=1)h.messages.rows.push(e.rows[n]),h.interaction.closed||"in"!==e.rows[n].direction||e.rows[n].read||(l[h.tab.channel+"Message"].accept({id:e.rows[n].id,UserId:h.user.id}),h.acceptedMessages.push(e.rows[n].id));return 0<e.rows.length&&(h.BTNLoadMore=h.BTNLoadMore-e.rows.length),t.resolve(e)}).catch(function(e){return t.reject(e)});return t.reject()},h.interactionTimelineOptions={scrollEl:"#interaction-content"},h.loadMoreJourney=function(){return s(function(e){var n=h.journey.length;return e(I(n))})},h.journeyTimelineOptions={scrollEl:"#journey-content"},a.$on("$destroy",function(){m.removeAllListeners(h.tab.channel+"Message:save"),m.removeAllListeners(h.tab.channel+"Message:update"),m.removeAllListeners(h.tab.channel+"Interaction:save"),m.removeAllListeners(h.tab.channel+"Interaction:update"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:save"),m.removeAllListeners("user_has_"+h.tab.channel+"_interactions:remove")})}function n(a){return{scope:{ngBindHtmlUnsafe:"="},template:"<div ng-bind-html='trustedHtml'></div>",link:function(t){t.updateView=function(){var e,n=_.replace(t.ngBindHtmlUnsafe,'<div id="xm-mail-content"','<a style="cursor:pointer" class="toggle-details md-accent-color" onclick="document.getElementById(\''+(e="xm-mail-content-"+Math.floor(9999*Math.random()+1))+"').style.display='block'; this.parentNode.removeChild(this)\">See More</a><div id=\""+e+'" style="display:none"');t.trustedHtml=a.trustAsHtml(n)},t.$watch("ngBindHtmlUnsafe",function(e){t.updateView(e)})}}}e.$inject=["$cookies","$timeout","$document","$scope","$mdDialog","$q","$location","$translate","api","toasty","Auth","socket","msUtils","draftManager","customerJourneyManager","privacyManager"],n.$inject=["$sce"],angular.module("app.dashboards").directive("ngBindHtmlUnsafe",n).controller("AgentGeneralInteractionController",e)}(),function(){"use strict";angular.module("app.dashboards").factory("Emojis",function(){return{watchEmbedData:!1,sanitizeHtml:!1,fontSmiley:!1,emoji:!0,link:!0,linkTarget:"_blank",pdf:{embed:!0},image:{embed:!0},audio:{embed:!0},basicVideo:!1,gdevAuth:"xxxxxxxx",video:{embed:!1,width:null,height:null,ytTheme:"dark",details:!1,thumbnailQuality:"medium",autoPlay:!0},twitchtvEmbed:!0,dailymotionEmbed:!0,tedEmbed:!0,dotsubEmbed:!0,liveleakEmbed:!0,ustreamEmbed:!0,soundCloudEmbed:!0,soundCloudOptions:{height:160,themeColor:"f50000",autoPlay:!1,hideRelated:!1,showComments:!0,showUser:!0,showReposts:!1,visual:!1,download:!1},spotifyEmbed:!0,tweetEmbed:!0,tweetOptions:{maxWidth:550,hideMedia:!1,hideThread:!1,align:"none",lang:"en"},code:{highlight:!0,lineNumbers:!1},codepenEmbed:!0,codepenHeight:300,jsfiddleEmbed:!0,jsfiddleHeight:300,jsbinEmbed:!0,jsbinHeight:300,plunkerEmbed:!0,githubgistEmbed:!0,ideoneEmbed:!0,ideoneHeight:300}})}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,ChatAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeChatInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this,m=25,u=1024*m*1024;c.separatorKeys=[a.KEY_CODE.ENTER,a.KEY_CODE.COMMA,a.KEY_CODE.TAB],c.message={from:i.localstationid,to:_.isNil(s.to)||_.isEmpty(s.to)?[]:s.to,attachments:[]},c.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:u,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},c.ngFlow={flow:{}},c.send=function(e){1===c.message.attachments.length?c.message.to.length?(s.draft=void 0,t.hide({from:c.message.from,to:c.message.to,attach:c.message.attachments.length,attachments:c.message.attachments})):l.error("To is mandatory"):l.error("Attachment is mandatory")},c.upload=function(){c.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},c.ngFlow.flow.upload()},c.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,c.message.attachments.push(n)}catch(e){console.error(e)}},c.fileAdded=function(e){var n=["pdf","tif"];if(!_.includes(n,e.getExtension()))return l.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extensions: "+n.join()}),!1;if(e.size>u)return l.error({title:"File too big",msg:"The max allowed size is "+m+"MB"}),!1;return!0},c.getContact=function(e){var n="";e.firstName&&e.firstName!==e.fax&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.fax&&(n+=e.lastName+" ");return n+="<"+e.fax+">"},c.contactSearch=function(e){return i&&i.ListId?r.cmContact.get({ListId:i.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,fax"}).$promise.then(function(e){return e.rows}):[]},c.transformContact=function(e){var n=e;if(_.isObject(e))return e.fax;if(t=n,!/[&\/\\#,()$~%.'":;*?<>{}\s\\|a-zA-Z\pS!òàùè…_§°çéì-]/.test(t))return n;var t;return l.error("Fax "+n+" is not valid"),null},c.closeDialog=function(){s.draft=c.message,t.cancel()}}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q"],angular.module("app.dashboards").controller("ComposeFaxInteractionDialogController",e)}(),function(){"use strict";function e(n,e,i,t,a,s,o,r,l,d,c,m,u,p){var g=this,v=25,h=1024*v*1024;g.currentUser=m.getCurrentUser(),g.secret="note"===r,g.hiddenCC=!0,g.hiddenBCC=!0,g.verifySmtp=!0,g.errors=[],g.separatorKeys=[t.KEY_CODE.ENTER,t.KEY_CODE.COMMA,t.KEY_CODE.TAB],g.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,MailAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},g.selectedItemChange=function(n){if(n&&n.value&&g.ckEditorInstance)try{var e=_.template(n.value),t={user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}};g.ckEditorInstance.insertHtml(e(t))}catch(e){console.error(e),g.ckEditorInstance.insertHtml(n.value)}document.getElementById("html-area").focus(),g.selectedItem=null},g.onReadyEditor=function(e){try{g.ckEditorInstance=CKEDITOR.instances["html-area"]}catch(e){console.error("Unable to get Html Editor instance",e)}},_.templateSettings.interpolate=/{{([\s\S]+?)}}/g,g.fromTemplate=_.template("{{ name }} <{{ email }}>"),g.replyTemplate=_.template("On {{ date }}, at {{ time }}, {{ from }} wrote:"),g.forwardTemplate=_.template("Begin forwarded message:<br><br><strong>From:</strong> {{ from }}<br><strong>Subject:</strong> {{ subject }}<br><strong>Date:</strong> {{ date }}, at {{ time }}<br><strong>To:</strong> {{ to }}"),g.message={from:g.fromTemplate({name:s.name,email:s.email||s.Smtp.user}),to:[],cc:[],bcc:[],body:S(),type:r,attachments:[],showLastMessage:!0},g.draft=null,g.ckeditor={skin:"office2013",startupFocus:!0,language:"en",allowedContent:!0,extraPlugins:"font,colorbutton,autogrow,autoembed,autocorrect,googlethisterm,pastebase64",toolbarGroups:[{name:"styles",groups:["styles"]},{name:"clipboard",groups:["undo"]},{name:"colors",groups:["colors"]},{name:"basicstyles",groups:["basicstyles"]},{name:"paragraph",groups:["list","indent","align"]}],autoGrow_onStartup:!0,autoGrow_minHeight:g.secret?160:300,autoGrow_maxHeight:e.innerHeight-400,autocorrect_enabled:!0,disableNativeSpellChecker:!1,enterMode:CKEDITOR.ENTER_BR,font_defaultLabel:s.fontFamily?s.fontFamily.split(",")[0]:"Arial",fontSize_defaultLabel:s.fontSize||"12",removePlugins:"magicline"};for(var f=[],b=8;b<=72;b++)f.push(b+"/"+b+"pt");g.ckeditor.fontSize_sizes=f.join(";"),g.ngFlowOptions={target:"api/attachments",singleFile:!0,maxChunkRetries:1,chunkSize:h,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},g.ngFlow={flow:{}},g.reply=function(e){angular.isDefined(o)&&(g.message.type="reply",g.message.to="in"===o.direction?o.from.split(","):o.to.split(","),g.message.subject=_.startsWith(o.subject,"Re:")?o.subject:"Re: "+o.subject,g.message.inReplyTo=o.messageId,g.message.body=S(),g.message.attachments=[],e&&o.cc&&(g.hiddenCC=!1,g.message.cc=o.cc.split(",")),g.message.showLastMessage=!1)},g.newMail=function(){angular.isDefined(o)&&(g.message.type="new",g.message.to=o.to?o.to.split(","):[])},g.forward=function(){if(angular.isDefined(o)){if(g.message.type="forward",g.message.subject=_.startsWith(o.subject,"Fwd:")?o.subject:"Fwd: "+o.subject,g.message.body=S(),o.Attachments&&o.Attachments.length)for(var e=0;e<o.Attachments.length;e++)g.message.attachments.push(o.Attachments[e]);g.message.showLastMessage=!1}},g.editDraft=function(){g.isDraft=!0,angular.isDefined(o)&&(o.savedAsDraft=!1,g.message=angular.copy(o),_.isEmpty(g.message.cc)||(g.hiddenCC=!1),_.isEmpty(g.message.bcc)||(g.hiddenBCC=!1))},g.send=function(e,n,t){if(!A&&g.message.to&&g.message.body)if(g.message.to.length)if(_.isEmpty(g.message.subject)){var a=i.confirm({skipHide:!0}).title("Warning").textContent("This message has no subject. Are you sure you want to send it?").ariaLabel("Warning").targetEvent(e).ok("Send Anyway").cancel("Cancel");i.show(a).then(function(){E(n,t)})}else E(n,t);else d.error("To is mandatory");A=!1},g.note=function(){g.type="note",g.secret=!0,g.message.body='<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt"><p></p></div>'},g.addNote=function(){g.message.body&&i.hide({secret:!0,body:g.message.body,attach:g.message.attachments.length,attachments:g.message.attachments})},g.upload=function(e){g.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+n.get("motion.token")},g.ngFlow.flow.upload()},g.fileSuccess=function(e,n){try{(n=JSON.parse(n)).size=e.size,g.message.attachments.push(n)}catch(e){console.error(e)}},g.removeAttachment=function(e){g.message.attachments=_.reject(g.message.attachments,{id:e.id}),e.MailMessageId||l.attachment.delete({id:e.id}).$promise.catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.attachment.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.fileAdded=function(e){if(e.size>h)return d.error({title:"File too big",msg:"The max allowed size is "+v+"MB"}),!1;return!0},g.getContact=function(e){var n="";e.firstName&&e.firstName!==e.email&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.email&&(n+=e.lastName+" ");return n+="<"+e.email+">"},g.contactSearch=function(e){return s&&s.ListId?l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,email"}).$promise.then(function(e){return e.rows}):[]},g.transformContact=function(e,n){if(_.isObject(e))return(g.contact=e).email;if(_.isString(e)){if(y(e))return g.contact={email:e},e;for(var t=e.split(","),a=0;a<t.length;a+=1)y(t[a])?_.isArray(n)&&_.indexOf(n,t[a])<0&&n.push(t[a]):d.error("Email "+t[a]+" is not valid");return g.contact={email:e.split(",")[0]},null}return d.error("Email field is not valid"),null},g.saveDraft=function(){g.message.savedAsDraft=!0,g.draft=p.getByInteraction(u.id);var e={account:s,message:g.message,contact:g.contact,interaction:u};if(g.draft&&!g.isDraft){var n=i.confirm({skipHide:!0}).title(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_TITLE")).content(a.instant("DASHBOARDS.DRAFT_SAVE_WARNING_MESSAGE")).ariaLabel("Save draft").ok(a.instant("DASHBOARDS.OVERWRITE")).cancel(a.instant("DASHBOARDS.CANCEL"));i.show(n).then(function(){i.hide(e)})}else i.hide(e)},g.closeDialog=function(){i.cancel()},g.loadLastMessage=function(){g.message.body+=T(g.message.type)};var A=!(g.keyPress=function(e){13===e.keyCode&&(A=!0)});switch(r){case"reply":g.reply(!1);break;case"replyAll":g.reply(!0);break;case"forward":g.forward();break;case"draft":g.editDraft();break;case"new":g.newMail();break;case"note":g.note()}function E(e,n){var t={from:g.message.from,to:g.message.to.join(","),cc:g.message.cc.join(","),bcc:g.message.bcc.join(","),subject:g.message.subject,body:g.message.showLastMessage?g.message.body:g.message.body+T(g.message.type),inReplyTo:g.message.inReplyTo,attach:g.message.attachments.length,attachments:g.message.attachments,Interaction:{lastMsgDirection:"out",substatus:n},isDraft:g.isDraft};t.html='<div id="xm-mail-content">'+_.replace(t.body,'<div id="xm-mail-content"',"<div")+"</div>",e&&(t.Interaction.closed=!0),i.hide(t)}function y(e){return/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/.test(e)}function S(){return'<div style="font-family:'+s.fontFamily+";font-size:"+s.fontSize+'pt">'+function(){if(_.isNil(s.template))return"";try{return _.template(s.template)({user:g.currentUser,account:s,interaction:u,contact:u&&u.Contact?u.Contact:{}})}catch(e){return console.error(e),""}}()+"</div>"}function T(e){var n='<div id="xm-mail-content"><blockquote type="cite">';switch(e){case"reply":case"replyAll":n+=g.replyTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||""});break;case"forward":n+=g.forwardTemplate({date:moment(o.createdAt).format("D MMM YYYY")||"",time:moment(o.createdAt).format("HH:mm")||"",from:_.escape(o.from)||"",to:_.escape(o.to)||"",subject:_.escape(o.subject)||""})}var t,a,i=g.message.showLastMessage&&o.originalMessage||g.isDraft?o.originalMessage.body:o.body;return n+="<br><br>",n+=(t=i?_.replace(i,'<div id="xm-mail-content"',"<div"):"",(a=t.match(/\<body[^>]*\>([^]*)\<\/body/m))?a[1]:t),n+="</blockquote></div>",e?n:""}l.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){g.subStatuses=e||{count:0,rows:[]}}).catch(function(e){console.error(e)}),g.secret||l.mailAccount.verifySmtp({id:s.id}).$promise.catch(function(e){g.verifySmtp=!1,g.errors.push({message:e.data,type:e.status}),g.errors.push({message:"You can't reply or send an email. Please contact the administrator!",type:"500"})})}e.$inject=["$cookies","$window","$mdDialog","$mdConstant","$translate","account","message","type","api","toasty","$q","Auth","interaction","draftManager"],angular.module("app.dashboards").controller("ComposeMailInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,OpenchannelAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e[s.mapKey]&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e[s.mapKey]&&(n+=e.lastName+" ");return n+="<"+e[s.mapKey]+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId){var n="firstName,lastName,phone,mobile";return s.mapKey&&(n+=","+s.mapKey),l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:n}).$promise.then(function(e){return e.rows})}return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e[s.mapKey];return n},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeOpenchannelInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,SmsAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeSmsInteractionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;switch(p.currentUser=u.getCurrentUser(),p.errors=[],p.separatorKeys=[i.KEY_CODE.ENTER,i.KEY_CODE.COMMA,i.KEY_CODE.TAB],p.searchTextChange=function(n){var t=c.defer(),a=[];return l.cannedAnswer.get({filter:n,WhatsappAccountId:s.id}).$promise.then(function(e){return a=_.concat(a,e.rows),l.cannedAnswer.get({filter:n}).$promise}).then(function(e){a=_.concat(a,_.filter(e.rows,function(e){return!(e.MailAccountId||e.FaxAccountId||e.SmsAccountId||e.WhatsappAccountId||e.OpenchannelAccountId||e.ChatWebsiteId)})),t.resolve(a)}).catch(function(e){t.reject(e)}),t.promise},p.selectedItemChange=function(n){if(n){try{_.templateSettings.interpolate=/{{([\s\S]+?)}}/g;var e=_.template(n.value),t={user:p.currentUser,account:s};p.message.body+=""===p.message.body.trim()?e(t):" "+e(t),p.ctrlMethods.setText(p.message.body)}catch(e){p.message.body+=""===p.message.body.trim()?n.value:" "+n.value,p.ctrlMethods.setText(p.message.body)}p.selectedItem=null}},p.note=function(){p.secret=!0},p.addNote=function(){p.message.body&&a.hide({secret:!0,body:p.message.body})},p.ctrlMethods={},p.message={from:s.phone,to:_.isNil(o.to)||_.isEmpty(o.to)?[]:o.to,body:""},p.send=function(e){p.message.to&&p.message.body&&(p.message.to.length?(n=p.message.body,a.hide({to:p.message.to.join(","),body:n})):d.error("To is mandatory"));var n},p.getContact=function(e){var n="";e.firstName&&e.firstName!==e.mobile&&(n+=e.firstName+" ");e.lastName&&e.lastName!==e.mobile&&(n+=e.lastName+" ");return n+="<"+e.mobile+">"},p.closeDialog=function(){a.cancel()},p.contactSearch=function(e){if(s&&s.ListId)return l.cmContact.get({ListId:s.ListId,nolimit:!0,filter:e,fields:"firstName,lastName,mobile"}).$promise.then(function(e){return e.rows});return[]},p.transformContact=function(e){var n=e;if(_.isObject(n))return e.mobile;if(t=n,/^(\+|\d)[0-9]{7,16}$/.test(t))return n;var t;return d.error("Mobile "+n+" is not valid"),null},r){case"note":p.note()}}e.$inject=["$cookies","$timeout","$window","$mdDialog","$mdConstant","account","message","type","api","toasty","$q","$translate","Auth"],angular.module("app.dashboards").controller("ComposeWhatsappInteractionDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.errors=[],r.dispositions=[],r.interaction=angular.copy(e),r.interaction.disposition||(r.interaction.disposition=null),r.channel=i,r.apiRoute=r.channel+"Interaction",r.apiAccountRoute=r.channel+("chat"===r.channel?"Website":"Account"),r.accountProperty=_.capitalize(r.channel)+("chat"===r.channel?"Website":"Account")+"Id",r.firstLevelDisposition=null,r.mandatoryDisposition=!1,r.mandatoryDispositionPause="",r.wasUserInPause=s.voicePause||s.chatPause||s.mailPause||s.openchannelPause||s.faxPause,r.onInit=function(){var n=[],t={fields:"id,name,level,ParentId",sort:"name",nolimit:!0};t[r.accountProperty]=e[r.accountProperty],a[r.apiAccountRoute].get({id:e[r.accountProperty]}).$promise.then(function(e){return r.mandatoryDisposition=e.mandatoryDisposition,r.mandatoryDisposition&&(r.mandatoryDispositionPause=e.mandatoryDispositionPause.name),a.disposition.get(t).$promise}).then(function(e){return e.rows.length&&(n=_.concat(n,e.rows)),a.disposition.get({MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",WhatsappAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",ListId:"null",nolimit:!0}).$promise}).then(function(e){e.rows.length&&(n=_.concat(n,e.rows))}).catch(function(e){console.error(e)}).finally(function(){r.dispositions=_.orderBy(n,["name"],["asc"]),r.mandatoryDisposition&&!r.wasUserInPause&&a.user.pause({id:s.id,type:r.mandatoryDispositionPause||"DEFAULT PAUSE"}).$promise.then(function(e){}).catch(function(e){console.error(e)})})},r.onDispositionChange=function(e){"first"===e?(r.anySecondLevelDisposition=!!r.firstLevelDisposition&&_.some(r.dispositions,["ParentId",r.firstLevelDisposition.id]),r.firstLevelDisposition||(r.secondLevelDisposition=void 0)):"second"===e&&(r.anyThirdLevelDisposition=_.some(r.dispositions,["ParentId",r.secondLevelDisposition.id]))},r.clearDispositionSelection=function(e){"second"===e?(r.secondLevelDisposition=void 0,r.thirdLevelDisposition=void 0):"third"===e&&(r.thirdLevelDisposition=void 0)},r.saveDisposition=function(){r.errors=[],r.interaction.UserId=s.id,r.interaction.closed=!0,r.interaction.closeReason="agent",r.interaction.disposition=r.firstLevelDisposition?r.firstLevelDisposition.name:null,r.interaction.secondDisposition=r.secondLevelDisposition?r.secondLevelDisposition.name:void 0,r.interaction.thirdDisposition=r.thirdLevelDisposition?r.thirdLevelDisposition.name:void 0,a[r.apiRoute]?a[r.apiRoute].update(_.pick(r.interaction,["MailAccountId","FaxAccountId","SmsAccountId","WhatsappAccountId","ChatWebsiteId","OpenchannelAccountId","closed","closeReason","disposition","secondDisposition","thirdDisposition","id","note","UserId"])).$promise.then(function(e){r.interaction=e,"mail"===r.channel&&o.removeByInteraction(r.interaction.id),t.success({title:"Interaction properly closed!",msg:"Interaction has been closed!"})}).then(function(){l(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})}):l(!1)},r.closeDialog=l}e.$inject=["$mdDialog","toasty","api","interaction","channel","user","draftManager"],angular.module("app.dashboards").controller("DisposeInteractionDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s){var o=this;function r(e){n.hide(e)}o.errors=[],o.tags=s,o.interaction=angular.copy(a),o.interaction.Tags=_.map(o.interaction.Tags,function(e){return{id:e.id,name:e.name,color:e.color}}),o.channel=i,o.autocompleteRequireMatch=!0,o.saveTag=function(){{if(o.errors=[],e[o.apiRoute])return e[o.apiRoute].addTags({id:o.interaction.id,ids:_.map(o.interaction.Tags,"id")}).$promise.then(function(){t.success({title:"Interaction properly tagged!",msg:"Interaction has been tagged!"}),a.Tags=o.interaction.Tags,r(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})});r(!1)}},o.closeDialog=r,o.apiRoute=o.channel+"Interaction"}e.$inject=["$mdDialog","toasty","api","interaction","channel","tags"],angular.module("app.dashboards").controller("TagInteractionDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d){var c=this;function m(e){n.hide(e)}c.channel=s.toLowerCase(),c.message=o,c.account=r,c.agents=l,c.queues=d,c.transfer={id:0,type:c.account.queueTransfer?"queue":"agent"},c.onTransfer=function(){m(!0),e(function(){var e="agent"===c.transfer.type?"agentNotify":c.channel+"QueueNotify";return a.rpc[e]({id:c.transfer.id,messageId:c.message.id,channel:c.channel}).$promise.then(function(){i.success({title:t.instant("DASHBOARDS.INFO"),msg:"queue"===c.transfer.type?t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_QUEUE_EXECUTED"):t.instant("DASHBOARDS.NOTIFICATIONS.TRANSFER_AGENT_EXECUTED")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.rpc.notify"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.rpc.notify",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},5e3)},c.closeDialog=m}e.$inject=["$mdDialog","$timeout","$translate","api","toasty","channel","message","account","agents","queues"],angular.module("app.dashboards").controller("TransferMessageDialogController",e)}(),function(){"use strict";function e(i,m,s,e,u,o,r,t,n,a,l){var p=this;function d(){try{i.$parent.$parent.$parent.vm.updateLocalStorage()}catch(e){o.error({title:"ERROR UPDATE LOCAL TABS",msg:"Error updating locally stored tabs"})}}function c(t,e){var n,a,l=[],d=[],c=r.getCurrentUser();(n=c,a=m.defer(),p.project.sendUnpauseOnSubmit?u.user.unpause({id:n.id}).$promise.then(function(e){a.resolve()}).catch(function(e){console.log("err"),a.resolve()}):a.resolve(),a.promise).then(function(){return u.jscriptySessionReport.save({starttime:p.starttime,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,VoiceQueueId:p.call&&p.call["xmd-voicequeueid"]?p.call["xmd-voicequeueid"]:void 0,ProjectId:p.project&&p.project.id?p.project.id:void 0,projectname:p.project&&p.project.name?p.project.name:void 0,ContactId:p.contact&&p.contact.id?p.contact.id:void 0,completed:e}).$promise}).then(function(e){if(e)for(var n=p.getResponseSheetHeaders(),t=p.getResponseSheetRow(),a=p.getQuestionWithResponseList(),i=0;i<n.length;i+=1)if(!_.isEmpty(String(t[i]))){try{l.push(u.jscriptyQuestionReport.save({question:n[i],answer:"date"===a[i].type?moment(String(t[i])).format("YYYY-MM-DD"):"time"===a[i].type?moment(String(t[i])).format("HH:mm"):String(t[i]),questionId:a[i].id,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert question",e)}for(var s=String(t[i]).split(";"),o=0;o<s.length;o+=1){var r=s[o].trim();try{d.push(u.jscriptyAnswerReport.save({question:n[i],questionId:a[i].id,answer:"date"===a[i].type?moment(r).format("YYYY-MM-DD"):"time"===a[i].type?moment(r).format("HH:mm"):r,membername:p.call&&p.call.membername?p.call.membername:c.name,calleridname:p.call&&p.call.calleridname?p.call.calleridname:void 0,calleridnum:p.call&&p.call.calleridnum?p.call.calleridnum:void 0,queue:p.call&&p.call.queue?p.call.queue:void 0,uniqueid:p.call&&p.call.uniqueid?p.call.uniqueid:void 0,SessionId:e.id,ProjectId:p.project.id,projectname:p.project.name}))}catch(e){console.error("Unable to convert answer",e)}}}return m.all(l).then(function(){return m.all(d).then(function(){return e})})}).then(function(e){e?t.resolve(!0):t.reject()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.contact.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contact.save",msg:e.data?JSON.stringify(e.data.message):e.toString()});t.reject()})}p.formViewer={},p.showResetButton=!0,p.showIncompleteSubmitButton=!1,p.detectBrowser=l.detectBrowser(),p.onSubmit=function(e,n){var t=m.defer();if(n){var a=s.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("YES").cancel("NO");s.show(a).then(function(){c(t,!1)},function(){t.resolve()})}else c(t,!0);return t.promise.then(function(e){e&&(o.success({title:"Session saved",msg:"Your survey session has been properly saved!"}),function(e){try{i.$parent.$parent.$parent.vm.removeTab(e)}catch(e){o.error({title:"ERROR REMOVE TAB",msg:"Error while removing tab"})}}(p.tab))}).catch(function(e){o.error({title:"Session save error",msg:"There has been an error while trying to save your survey session!"})})},p.openContact=function(e,n){try{i.$parent.$parent.$parent.vm.addContactTab(n)}catch(e){o.error({title:"ERROR OPEN CONTACT",msg:"Jscripty can't open the contact"})}},p.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0},p.getResponseSheet=function(){return e.getResponseSheet(p.project.formData,p.project.responseData,!1)},p.getResponseSheetRow=function(){return e.getResponseSheetRow(p.project.formData,p.project.responseData)},p.getResponseSheetHeaders=function(){return e.getResponseSheetHeaders(p.project.formData,!1)},p.getQuestionWithResponseList=function(){return e.getQuestionWithResponseList(p.project.formData,p.project.responseData)},p.init=function(e){p.tab=e,p.tab&&(p.call=p.tab.call,p.starttime=p.tab.openedAt,p.contact=p.tab.contact,p.project=p.tab.project,p.project&&(_.isObjectLike(p.project.formData)?p.project.formData=p.project.formData:p.isJsonString(p.project.formData)?p.project.formData=JSON.parse(p.project.formData):p.project.formData=void 0,p.project.responseData=p.project.responseData||{},void 0!==p.project.currentPage&&a(function(){n.$broadcast("mwForm.pageEvents.changePage",{page:p.project.currentPage})}),i.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&(p.project.currentPage=n.currentPage.number-1,d(),p.project.enableUncompleteSave&&(1<=n.currentPage.number&&n.currentPage.number<p.project.formData.pages.length?p.showIncompleteSubmitButton=!0:p.showIncompleteSubmitButton=!1),p.project.formData&&p.project.formData.pages))for(var t=0,a=p.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&p.project.formData.pages[t].elements)for(var i=0,s=p.project.formData.pages[t].elements.length;i<s;i++)"question"===p.project.formData.pages[t].elements[i].type&&p.project.formData.pages[t].elements[i].question&&delete p.project.responseData[p.project.formData.pages[t].elements[i].question.id]})))},p.resetViewer=function(e){if(p.formViewer.reset){var n=s.confirm().title(t.instant("JSCRIPTY.DO_YOU_WANT_TO_RESET_SESSION")).content(t.instant("JSCRIPTY.ALL_SURVEY_DATA_WILL_BE_LOST")).textContent("").ariaLabel("survey").targetEvent(e).ok(t.instant("JSCRIPTY.YES")).cancel(t.instant("JSCRIPTY.NO"));s.show(n).then(function(){p.showIncompleteSubmitButton=!1,p.project.currentPage=void 0,d(),p.formViewer.reset()})}}}e.$inject=["$scope","$q","$mdDialog","mwFormResponseUtils","api","toasty","Auth","$translate","$rootScope","$timeout","msUtils"],angular.module("app.dashboards").controller("AgentGeneralJscriptyController",e)}(),function(){"use strict";function e(t,a,e,n,i){var s=this;function o(){return function(e){if(404===e.status)a.info({title:t.instant("DASHBOARDS.ATTENTION"),msg:t.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}s.notification=e,s.user=i.getCurrentUser(),s.accept=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].accept({id:s.notification.id,UserId:s.user.id,manual:!0}).$promise.then(function(e){a.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(o());a.error({title:"API:ERROR",msg:"API accept message not found: "+s.notification.channel+"Message"})}},s.reject=function(e){{if(n[s.notification.channel+"Message"])return n[s.notification.channel+"Message"].reject({id:s.notification.id,UserId:s.user.id}).$promise.then(function(e){a.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(o());a.error({title:"API:ERROR",msg:"API reject message not found: "+s.notification.channel+"Message"})}}}e.$inject=["$translate","toasty","notification","api","Auth"],angular.module("app.dashboards").controller("NotificationController",e)}(),function(){"use strict";angular.module("app.dashboards").controller("AgentGeneralPopupController",function(){var n=this;n.init=function(e){n.tab=e,n.tab&&(n.tab.saved=!0,n.html=n.tab.html)}})}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&"abandoned"===e.disposition?(i.inbound.abandoned+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&!e.UserId&&e.disposition?(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)):e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.chatWebsites,{id:_.toNumber(e.ChatWebsiteId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.chatWebsites=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateChatInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("chatInteraction:save",i.onSaveChatInteraction),n.on("chatInteraction:update",i.onUpdateChatInteraction),function(){if(0<Object.keys(i.chatWebsites).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("chatInteraction:save"),n.removeAllListeners("chatInteraction:update")})}e.$inject=["$scope","socket","chatInteractions","chatWebsites"],angular.module("app.dashboards").controller("UserChatDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){var l=this;function d(){s({queues:l.outboundQueues,rpcQueues:l.rpcQueues}).then(function(e){l.inbound=e})}function c(){o({rpcCampaigns:l.rpcCampaigns}).then(function(e){l.ivr=e})}l.outboundQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},l.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},l.rpcCampaigns=r?_.keyBy(r.rows?r.rows:[],"id"):{},l.ivr={originated:0,limitCalls:0},l.inbound={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0},l.onSaveQueue=function(e){l.outboundQueues[e.id]&&l.rpcQueues[e.id]&&(l.rpcQueues[e.id]=e)},l.onSaveCampaign=function(e){l.rpcCampaigns[e.id]&&(l.rpcCampaigns[e.id]=e)},t.onWithoutApply("voice_queue:save",l.onSaveQueue),l.interval=n(function(){d(),c()},999),t.onWithoutApply("campaign:save",l.onSaveCampaign),d(),c(),e.$on("$destroy",function(){t.removeListener("voice_queue:save",l.onSaveQueue),t.removeAllListeners("campaign:save"),l.interval&&n.cancel(l.interval)})}e.$inject=["$scope","$interval","socket","outboundQueues","rpcQueues","initializeRealtimeQueue","initializeRealtimeCampaign","rpcCampaigns"],angular.module("app.dashboards").controller("UserVoiceDashboardDialerController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.faxAccounts,{id:_.toNumber(e.FaxAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.faxAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateFaxInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("faxInteraction:save",i.onSaveFaxInteraction),n.on("faxInteraction:update",i.onUpdateFaxInteraction),function(){if(0<Object.keys(i.faxAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("faxInteraction:save"),n.removeAllListeners("faxInteraction:update")})}e.$inject=["$scope","socket","faxInteractions","faxAccounts"],angular.module("app.dashboards").controller("UserFaxDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.mailAccounts,{id:_.toNumber(e.MailAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.mailAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateMailInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("mailInteraction:save",i.onSaveMailInteraction),n.on("mailInteraction:update",i.onUpdateMailInteraction),function(){if(0<Object.keys(i.mailAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("mailInteraction:save"),n.removeAllListeners("mailInteraction:update")})}e.$inject=["$scope","socket","mailInteractions","mailAccounts"],angular.module("app.dashboards").controller("UserMailDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.openchannelAccounts,{id:_.toNumber(e.OpenchannelAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.openchannelAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateOpenchannelInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("openchannelInteraction:save",i.onSaveOpenchannelInteraction),n.on("openchannelInteraction:update",i.onUpdateOpenchannelInteraction),function(){if(0<Object.keys(i.openchannelAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("openchannelInteraction:save"),n.removeAllListeners("openchannelInteraction:update")})}e.$inject=["$scope","socket","openchannelInteractions","openchannelAccounts"],angular.module("app.dashboards").controller("UserOpenchannelDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.smsAccounts,{id:_.toNumber(e.SmsAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.smsAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateSmsInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("smsInteraction:save",i.onSaveSmsInteraction),n.on("smsInteraction:update",i.onUpdateSmsInteraction),function(){if(0<Object.keys(i.smsAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("smsInteraction:save"),n.removeAllListeners("smsInteraction:update")})}e.$inject=["$scope","socket","smsInteractions","smsAccounts"],angular.module("app.dashboards").controller("UserSmsDashboardGeneralController",e)}(),function(){"use strict";function e(t){var i=[],s=function(){var t=i[0],a={waiting:0,talking:0,pTalking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0,originated:0,outboundDropCallsDayCallersExit:0,outboundDropCallsDayTimeout:0};_.forIn(t.queues,function(e,n){t.rpcQueues[n]&&(a.waiting+=t.rpcQueues[n].waiting||0,a.talking+=(t.rpcQueues[n].talking||0)+(t.rpcQueues[n].pTalking||0),a.answered+=t.rpcQueues[n].answered||0,a.abandoned+=t.rpcQueues[n].abandoned||0,a.sumHoldTime+=t.rpcQueues[n].sumHoldTime||0,a.sumBillable+=t.rpcQueues[n].sumBillable||0,a.total+=t.rpcQueues[n].total||0,a.originated+=t.rpcQueues[n].originated||0,a.outboundDropCallsDayCallersExit+=t.rpcQueues[n].outboundDropCallsDayCallersExit||0,a.outboundDropCallsDayTimeout+=t.rpcQueues[n].outboundDropCallsDayTimeout||0)});var e=a.total-a.answered-a.abandoned;a.unmanaged=0<e?e:0,a.avgHoldTime=Math.round(0<a.total?a.sumHoldTime/a.total:0),a.avgHoldTime=new Date(1e3*a.avgHoldTime).toISOString().substr(11,8),a.avgTalkTime=Math.round(0<a.answered?a.sumBillable/a.answered:0),a.avgTalkTime=new Date(1e3*a.avgTalkTime).toISOString().substr(11,8),a.answerRate=Math.round((0<a.total?a.answered/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.abandonRate=Math.round((0<a.total?a.abandoned/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundDropRate=Math.round((0<a.total?a.outboundDropCallsDayTimeout/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundAbandonRate=Math.round((0<a.total?a.outboundDropCallsDayCallersExit/a.total*100:0)*Math.pow(10,1))/Math.pow(10,1),a.outboundanswerRate=0<100-a.outboundDropRate-a.outboundAbandonRate&&a.total?100-a.outboundDropRate-a.outboundAbandonRate:0,i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({queues:e.queues,rpcQueues:e.rpcQueues,defer:n}),1===i.length&&s(),n.promise}}function n(t){var i=[],s=function(){var t=i[0],a={originated:0,limitCalls:0};_.forIn(t.rpcCampaigns,function(e,n){t.rpcCampaigns[n]&&(a.originated+=t.rpcCampaigns[n].originated||0,a.limitCalls+=t.rpcCampaigns[n].limitCalls||0)}),i.shift(),t.defer.resolve(a),0<i.length&&s()};return function(e){var n=t.defer();return i.push({rpcCampaigns:e.rpcCampaigns,defer:n}),1===i.length&&s(),n.promise}}function t(t,a,e){var i=this;i.license=e,i.onInit=function(){if(i.hasDashboardPermissions=!a.hasRole("user")||a.hasPermission(101),i.hasDashboardPermissions){var e=t.current.name;switch(e){case"app.dashboards.general":n=[],i.license.voice&&n.push("app.dashboards.general.voice"),i.license.dialer&&n.push("app.dashboards.general.dialer"),i.license.chat&&n.push("app.dashboards.general.chat"),i.license.mail&&n.push("app.dashboards.general.mail"),i.license.messaging&&n.push("app.dashboards.general.sms"),i.license.openchannel&&n.push("app.dashboards.general.openchannel"),i.license.fax&&n.push("app.dashboards.general.fax"),i.license.whatsapp&&n.push("app.dashboards.general.whatsapp"),0<n.length&&t.go(_.first(n));break;case"app.dashboards.general.voice":i.selectedTab=0;break;case"app.dashboards.general.dialer":i.selectedTab=1;break;case"app.dashboards.general.chat":i.selectedTab=2;break;case"app.dashboards.general.mail":i.selectedTab=3;break;case"app.dashboards.general.sms":i.selectedTab=4;break;case"app.dashboards.general.openchannel":i.selectedTab=5;break;case"app.dashboards.general.fax":i.selectedTab=6;break;case"app.dashboards.general.whatsapp":i.selectedTab=7}}var n}}e.$inject=["$q"],n.$inject=["$q"],t.$inject=["$state","Auth","license"],angular.module("app.dashboards").factory("initializeRealtimeQueue",e).factory("initializeRealtimeCampaign",n).controller("UserDashboardGeneralController",t)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;function r(){s({queues:o.inboundQueues,rpcQueues:o.rpcQueues}).then(function(e){o.inbound=e})}o.inboundQueues=t?_.keyBy(t.rows?t.rows:[],"id"):{},o.rpcQueues=a?_.keyBy(a.rows?a.rows:[],"id"):{},o.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},o.outbound=i||{answered:0,sumBillable:0,sumDuration:0,sumHoldTime:0,total:0},o.onSaveQueue=function(e){o.inboundQueues[e.id]&&o.rpcQueues[e.id]&&(o.rpcQueues[e.id]=e,r())},o.onSaveOutbound=function(e){o.outbound=e},n.on("voice_queue:save",o.onSaveQueue),n.on("voice_outbound:save",o.onSaveOutbound),r(),e.$on("$destroy",function(){n.removeListener("voice_queue:save",o.onSaveQueue),n.removeAllListeners("voice_outbound:save")})}e.$inject=["$scope","socket","inboundQueues","rpcQueues","outbound","initializeRealtimeQueue"],angular.module("app.dashboards").controller("UserVoiceDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a){var i=this,s=[];function o(e,n){e.closed||e.UserId||!n||(i.inbound.waiting+=1),e.closed||!e.UserId||_.includes(s,e.id)||(i.inbound.talking+=1,s.push(e.id),!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),e.closed&&e.UserId&&(i.inbound.sumBillable+=moment(e.closedAt).diff(moment(e.read1stAt),i.config.unit),i.inbound.sumHoldTime+=moment(e.read1stAt).diff(moment(e.createdAt),i.config.unit),i.inbound.answered+=1,!n&&i.inbound.talking&&(i.inbound.talking-=1)),e.closed&&!e.UserId&&(i.inbound.unmanaged+=1,!n&&i.inbound.waiting&&(i.inbound.waiting-=1)),n&&(i.inbound.total+=1)}function r(){i.inbound.abandonRate=Math.round((i.inbound.abandoned+i.inbound.unmanaged)/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.answerRate=Math.round(i.inbound.answered/(i.inbound.total-i.inbound.talking-i.inbound.waiting)*100,-2),i.inbound.avgHoldTime=moment.duration(Math.round(i.inbound.sumHoldTime/i.inbound.answered),i.config.unit).format(i.config.format,i.config),i.inbound.avgTalkTime=moment.duration(Math.round(i.inbound.sumBillable/i.inbound.answered),i.config.unit).format(i.config.format,i.config)}function l(e){return!!_.some(i.whatsappAccounts,{id:_.toNumber(e.WhatsappAccountId)})}function d(e){var n=moment().utcOffset(0,!0).startOf("day"),t=moment().utcOffset(0,!0).endOf("day");return moment(e).utcOffset(0,!0).isBetween(n,t)}i.config={format:"hh:mm:ss",unit:"seconds",trim:!1},i.inbound={waiting:0,talking:0,answered:0,abandoned:0,unmanaged:0,sumHoldTime:0,sumBillable:0,total:0,avgHoldTime:"00:00:00",avgTalkTime:"00:00:00",answerRate:0,abandonRate:0},i.whatsappAccounts=a?_.keyBy(a.rows?a.rows:[],"id"):{},i.onSaveWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!0),r())},i.onUpdateWhatsappInteraction=function(e){l(e)&&d(e.createdAt)&&(o(e,!1),r())},n.on("whatsappInteraction:save",i.onSaveWhatsappInteraction),n.on("whatsappInteraction:update",i.onUpdateWhatsappInteraction),function(){if(0<Object.keys(i.whatsappAccounts).length)for(var e=0;e<t.rows.length;e+=1)if(l(t.rows[e])){var n=t.rows[e];o(n,!0),r()}}(),e.$on("$destroy",function(){n.removeAllListeners("whatsappInteraction:save"),n.removeAllListeners("whatsappInteraction:update")})}e.$inject=["$scope","socket","whatsappInteractions","whatsappAccounts"],angular.module("app.dashboards").controller("UserWhatsappDashboardGeneralController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="FAX.EDIT_FAXACCOUNT",g.faxAccount=angular.copy(l),g.faxAccounts=r,g.newFaxAccount=!1,g.faxAccount||(g.faxAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="FAX.NEW_FAXACCOUNT",g.newFaxAccount=!0),n.params.id&&(g.faxAccount.FaxAccountId=n.params.id),g.addNewFaxAccount=function(){g.errors=[],d.faxAccount.addAccountApplications(g.faxAccount).$promise.then(function(e){g.faxAccounts.unshift(e.toJSON()),o.success({title:"FaxAccount properly created",msg:g.faxAccount.name?g.faxAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFaxAccount=function(){g.errors=[],d.faxAccount.updateAccountApplications(g.faxAccount).$promise.then(function(e){var n=_.find(g.faxAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FaxAccount properly saved!",msg:g.faxAccount.name?g.faxAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFaxAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The faxAccount will be deleted.").ariaLabel("Delete FaxAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.faxAccount.delete({id:g.faxAccount.id}).$promise.then(function(){_.remove(g.faxAccounts,{id:g.faxAccount.id}),o.success({title:"FaxAccount properly deleted!",msg:(g.faxAccount.name||"faxAccount")+" has been deleted!"}),v(g.faxAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.faxAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.trunks,{id:Number(g.faxAccount.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.faxAccount&&(t=_.find(g.lists,{id:Number(g.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.faxAccount&&(a=_.find(g.lists,{id:Number(g.faxAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","faxAccounts","faxAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccountApp:t,faxAccount:r.faxAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.faxAccountApps.rows[n]=e:r.faxAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.faxAccountApps.rows.length;t++,0){var a=r.faxAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.faxAccount.context,a.exten=r.faxAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.faxAccount.addApplications({id:r.faxAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.faxAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.faxAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.faxAccount={},r.faxAccountApps={count:0,rows:[]},r.selectedFaxAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"FaxQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"faxQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:901}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.faxAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getFaxAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.faxAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getFaxAccountApps=function(){r.promise=o.faxAccount.getApplications(r.query,t).$promise},r.editFaxAccountApp=n,r.editInterval=function(e,n){if(r.faxAccountApps.rows.length){var t=r.faxAccountApps.rows[n]?r.faxAccountApps.rows[n]:r.faxAccountApps.rows[0];i.show({controller:"EditFaxAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteFaxAccountApp=function(e){_.remove(r.faxAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedFaxAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedFaxAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedFaxAccountApps.forEach(function(e){_.remove(r.faxAccountApps.rows,{id:e.id})}),r.selectedFaxAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.fax").controller("FaxAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxAccount.getAgents({id:c.faxAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxAccount?"penalty "+e.UserFaxAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.removeAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxAccount.addAgents({id:c.faxAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxAccount","faxAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditFaxAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("fax")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.faxQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:901}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="FAX.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveFaxAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","faxAccountApp","faxAccount","api","Auth","crudPermissions"],angular.module("app.fax").controller("EditFaxAccountApptagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.faxAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.faxAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.FaxAccountId=m.faxAccount.id,m.query.id=m.faxAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.faxAccount.id,field:"FaxAccountId",route:"faxAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.fax").controller("FaxAccountDispositionsController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(e){d.faxInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.faxAccountInteractions.rows,{id:e.id}),m.faxAccountInteractions.count-=1,m.faxAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.faxAccount={},m.faxAccountInteractions={count:0,rows:[]},m.selectedFaxAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.faxAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.FaxAccountId=m.faxAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.faxInteractionDownload=function(s,e,n){return d.faxInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="fax-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getFaxAccountInteractions=g,m.createOrEditFaxAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:m.faxAccount,interaction:n,interactions:m.faxAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyfaxInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"fax",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"fax.faxAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||FaxAccountId:=$eq["+m.faxAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedFaxAccountInteractions=function(){var e=angular.copy(m.selectedFaxAccountInteractions);return m.selectedFaxAccountInteractions=[],e},m.deleteFaxAccountInteraction=v,m.deleteSelectedFaxAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedFaxAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedFaxAccountInteractions.forEach(function(e){v(e)}),m.selectedFaxAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.fax").controller("FaxAccountInteractionsController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=n,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=e.protocol()+"://"+e.host(),p.faxAccount=c||t.params.faxAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=t.params.tab||0,p.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},p.agentadddialog=function(e,n){a.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:p.faxAccounts?p.faxAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoFaxAccounts=function(){t.go("app.fax.faxAccounts",{},{reload:"app.fax.faxAccounts"})},p.saveFaxAccount=function(){r.faxAccount.updateAccountApplications(p.faxAccount).$promise.then(function(){l.success({title:"FaxAccount updated!",msg:p.faxAccount.name?p.faxAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.trunks,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.trunks,{id:t.id});a.canSelect=!1,n.push(a)}p.trunks=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.trunks,{id:Number(p.faxAccount.TrunkId)}));for(var i=0;i<p.trunks.length;i++)a&&p.trunks[i].id===a.id&&(p.trunks[i].canSelect=!1,t.push(p.trunks[i]));p.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.faxAccount&&(t=_.find(p.lists,{id:Number(p.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.faxAccount&&(a=_.find(p.lists,{id:Number(p.faxAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxAccount","userProfile","userProfileSection"],angular.module("app.fax").controller("FaxAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFaxAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,headerinfo,TrunkId,localstationid,ListId,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,ecm,minrate,maxrate,modem,gateway,faxdetect,t38timeout,tech,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arrayecm=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayminrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymaxrate=_.keyBy([{option:"2400",value:"'2400'"},{option:"4800",value:"'4800'"},{option:"7200",value:"'7200'"},{option:"9600",value:"'9600'"},{option:"12000",value:"'12000'"},{option:"14400",value:"'14400'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytech=_.keyBy([{option:"SIP",value:"'SIP'"},{option:"IAX",value:"'IAX'"},{option:"DADHI",value:"'DADHI'"},{option:"KHOMP",value:"'KHOMP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,faxAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.fax.faxAccounts.edit",{id:e.id,tab:5})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.accounts",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.accounts",{})}},f.agentadddialog=function(e,n){i.show({controller:"FaxAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxAccount:e,faxAccounts:f.faxAccounts?f.faxAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxAccount")+"?").htmlContent("<b>"+(e.name||"faxAccount")+"</b> will be deleted.").ariaLabel("delete faxAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFaxAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxAccount=function(e,n){i.show({controller:"CreateOrEditFaxAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxAccount:n,faxAccounts:f.faxAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFaxAccount=y,f.exportSelectedFaxAccounts=function(){var e=angular.copy(f.selectedFaxAccounts);return f.selectedFaxAccounts=[],e},f.deleteSelectedFaxAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxAccounts?").htmlContent("<b>"+f.selectedFaxAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FaxAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxAccounts.forEach(function(e){y(e)}),f.selectedFaxAccounts=[]})},f.deselectFaxAccounts=function(){f.selectedFaxAccounts=[]},f.selectAllFaxAccounts=function(){f.selectedFaxAccounts=f.faxAccounts.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.faxAccounts.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.faxAccount&&(t=_.find(f.lists,{id:Number(f.faxAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.faxAccount&&(a=_.find(f.lists,{id:Number(f.faxAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.faxAccounts=e||{count:0,rows:[]}}function y(e){m.faxAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.faxAccounts.rows,{id:e.id}),f.faxAccounts.count-=1,f.faxAccounts.rows.length||f.getFaxAccounts(),p.success({title:_.startCase("FaxAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="FAX.EDIT_FAXQUEUE",r.faxQueue=angular.copy(n),r.faxQueues=e,r.newFaxQueue=!1,r.faxQueue||(r.faxQueue={strategy:"beepall",timeout:10},r.title="FAX.NEW_FAXQUEUE",r.newFaxQueue=!0),r.addNewFaxQueue=function(){r.errors=[],i.faxQueue.save(r.faxQueue).$promise.then(function(e){r.faxQueues.unshift(e.toJSON()),a.success({title:"FaxQueue properly created",msg:r.faxQueue.name?r.faxQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveFaxQueue=function(){r.errors=[],i.faxQueue.update({id:r.faxQueue.id},r.faxQueue).$promise.then(function(e){var n=_.find(r.faxQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"FaxQueue properly saved!",msg:r.faxQueue.name?r.faxQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteFaxQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The faxQueue will be deleted.").ariaLabel("Delete FaxQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.faxQueue.delete({id:r.faxQueue.id}).$promise.then(function(){_.remove(r.faxQueues,{id:r.faxQueue.id}),a.success({title:"FaxQueue properly deleted!",msg:(r.faxQueue.name||"faxQueue")+" has been deleted!"}),l(r.faxQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.faxQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.faxQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","faxQueues","faxQueue","api","Auth","crudPermissions"],angular.module("app.fax").controller("CreateOrEditFaxQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getAgents({id:c.faxQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserFaxQueue?"penalty "+e.UserFaxQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.faxQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addAgents({id:c.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("FAX.ALL_AGENTS"),labelSelected:r.instant("FAX.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","faxQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.faxQueue.getTeams({id:l.faxQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.faxQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("FAX.ALL_TEAMS"),labelSelected:t.instant("FAX.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.removeTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.faxQueue.addTeams({id:l.faxQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","faxQueue","$translate","Auth","crudPermissions"],angular.module("app.fax").controller("FaxQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.faxQueue=c||e.params.faxQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:u.faxQueues?u.faxQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoFaxQueues=function(){e.go("app.fax.faxQueues",{},{reload:"app.fax.faxQueues"})},u.saveFaxQueue=function(){r.faxQueue.update({id:u.faxQueue.id},u.faxQueue).$promise.then(function(){l.success({title:"FaxQueue updated!",msg:u.faxQueue.name?u.faxQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","faxQueue","userProfileSection"],angular.module("app.fax").controller("FaxQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.faxQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="faxQueues",f.listOrder="",f.listOrderAsc=null,f.selectedFaxQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"fax",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.fax.faxQueues.edit",{id:e.id,faxQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"FaxQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"FaxQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{faxQueue:e,faxQueues:f.faxQueues?f.faxQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("faxQueue")+"?").htmlContent("<b>"+(e.name||"faxQueue")+"</b> will be deleted.").ariaLabel("delete faxQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:910}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.fax.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.fax.realtime.queues",{})}},f.success=E,f.getFaxQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.faxQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FaxQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFaxQueue=function(e,n){i.show({controller:"CreateOrEditFaxQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/fax/views/faxQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{faxQueue:n,faxQueues:f.faxQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteFaxQueue=y,f.exportSelectedFaxQueues=function(){var e=angular.copy(f.selectedFaxQueues);return f.selectedFaxQueues=[],e},f.deleteSelectedFaxQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected faxQueues?").htmlContent("<b>"+f.selectedFaxQueues.length+" selected</b> will be deleted.").ariaLabel("delete FaxQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFaxQueues.forEach(function(e){y(e)}),f.selectedFaxQueues=[]})},f.deselectFaxQueues=function(){f.selectedFaxQueues=[]},f.selectAllFaxQueues=function(){f.selectedFaxQueues=f.faxQueues.rows};var b=!0,A=1;function E(e){f.faxQueues=e||{count:0,rows:[]}}function y(e){m.faxQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.faxQueues.rows,{id:e.id}),f.faxQueues.count-=1,f.faxQueues.rows.length||f.getFaxQueues(),p.success({title:_.startCase("FaxQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEfaxQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEfaxQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFaxQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","faxQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.fax").controller("FaxQueuesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.faxAccounts,function(e,n){p.rpcFaxAccounts[n]&&_.merge(e,p.rpcFaxAccounts[n])}),_.forIn(p.faxAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.faxAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.faxAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.faxAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcFaxAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getFaxAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.faxAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="FaxAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.faxAccounts[e.id]&&_.merge(p.faxAccounts[e.id],e)},p.onFaxMessageSave=function(e){p.faxAccounts[e.FaxAccountId]&&("in"==e.direction?(p.faxAccounts[e.FaxAccountId].in+=1,p.faxAccounts[e.FaxAccountId].lastIn=e.createdAt):(p.faxAccounts[e.FaxAccountId].out+=1,p.faxAccounts[e.FaxAccountId].lastOut=e.createdAt))},p.goToFaxAccount=function(e,n){i.go("app.fax.faxAccounts.edit",{id:n.id,faxAccount:n})},p.order=[],_.forIn(p.faxAccounts,function(e,n){p.order.push(e.id)}),o.on("faxAccount:save",p.onSave),o.on("faxAccount:update",p.onSave),o.on("faxMessage:save",p.onFaxMessageSave);var v=!0,h=1;function f(e){if(p.faxAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getFaxAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("faxAccount:save"),o.removeAllListeners("faxAccount:update"),o.removeAllListeners("faxMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","faxAccounts","rpcFaxAccounts","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("FaxAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.fax.realtime.agents":this.selectedTab=0;break;case"app.fax.realtime.trunks":this.selectedTab=1;break;case"app.fax.realtime.queues":this.selectedTab=2;break;case"app.fax.realtime.accounts":this.selectedTab=3;break;default:this.selectedTab=0,t.go("app.fax.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.fax.realtime.agents");break;case 1:t.go("app.fax.realtime.trunks");break;case 2:t.go("app.fax.realtime.queues");break;case 3:t.go("app.fax.realtime.accounts");break;default:t.go("app.fax.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.fax").controller("FaxRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.fax").controller("TrunksFaxRealtimeController",e)}(),function(){"use strict";function e(e,n){this.info=e,this.license=n}e.$inject=["info","license"],angular.module("app.help.about").controller("AboutController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKACCOUNT",g.deskAccount=angular.copy(l),g.deskAccounts=r,g.newDeskAccount=!1,g.deskAccount||(g.deskAccount={type:"integrationTab",authType:"basic",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_DESKACCOUNT",g.newDeskAccount=!0),g.addNewDeskAccount=function(){g.errors=[],d.intDeskAccount.save(g.deskAccount).$promise.then(function(e){g.deskAccounts.unshift(e.toJSON()),o.success({title:"DeskAccount properly created",msg:g.deskAccount.name?g.deskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskAccount=function(){g.errors=[],d.intDeskAccount.update({id:g.deskAccount.id},g.deskAccount).$promise.then(function(e){var n=_.find(g.deskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskAccount properly saved!",msg:g.deskAccount.name?g.deskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskAccount will be deleted.").ariaLabel("Delete DeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskAccount.delete({id:g.deskAccount.id}).$promise.then(function(){_.remove(g.deskAccounts,{id:g.deskAccount.id}),o.success({title:"DeskAccount properly deleted!",msg:(g.deskAccount.name||"deskAccount")+" has been deleted!"}),v(g.deskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","deskAccounts","deskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.deskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="deskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedDeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,remoteUri,authType,username,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Basic",value:"'basic'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.deskAccounts.edit",{id:e.id,deskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intDeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"DeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"DeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("deskAccount")+"?").htmlContent("<b>"+(e.name||"deskAccount")+"</b> will be deleted.").ariaLabel("delete deskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getDeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intDeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="DeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditDeskAccount=function(e,n){i.show({controller:"CreateOrEditDeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskAccount:n,deskAccounts:f.deskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteDeskAccount=y,f.exportSelectedDeskAccounts=function(){var e=angular.copy(f.selectedDeskAccounts);return f.selectedDeskAccounts=[],e},f.deleteSelectedDeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected deskAccounts?").htmlContent("<b>"+f.selectedDeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete DeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedDeskAccounts.forEach(function(e){y(e)}),f.selectedDeskAccounts=[]})},f.deselectDeskAccounts=function(){f.selectedDeskAccounts=[]},f.selectAllDeskAccounts=function(){f.selectedDeskAccounts=f.deskAccounts.rows};var b=!0,A=1;function E(e){f.deskAccounts=e||{count:0,rows:[]}}function y(e){m.intDeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.deskAccounts.rows,{id:e.id}),f.deskAccounts.count-=1,f.deskAccounts.rows.length||f.getDeskAccounts(),p.success({title:_.startCase("DeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getDeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","deskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("DeskAccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.deskAccount={},o.deskConfiguration={},o.configurations=[],o.selectedDeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.deskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDeskAccount.getConfigurations({id:o.deskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDeskConfiguration=function(e){o.deskConfiguration=o.configurations[e],o.selectedDeskConfiguration=e,i.intDeskConfiguration.getSubjects({id:o.deskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDeskConfiguration.getDescriptions({id:o.deskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDeskConfiguration.getFields({id:o.deskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intDeskConfiguration.getTags({id:o.deskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDeskConfiguration=function(e,n){a.show({controller:"CreateOrEditDeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{deskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDeskConfiguration(0)})},o.deleteDeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the deskConfiguration?").htmlContent("<b>"+(n.name||"deskConfiguration")+"</b> will be deleted.").ariaLabel("delete deskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"DeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intDeskConfiguration.setTags({id:o.deskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.deskConfiguration,account:o.deskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("DeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DESKCONFIGURATION",g.deskConfiguration=angular.copy(l),g.configurations=r,g.newDeskConfiguration=!1,g.deskConfiguration||(g.deskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_DESKCONFIGURATION",g.newDeskConfiguration=!0),g.addNewDeskConfiguration=function(){g.errors=[],d.intDeskAccount.addConfiguration({id:n.params.id},g.deskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"DeskConfiguration properly created",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDeskConfiguration=function(){g.errors=[],d.intDeskConfiguration.update({id:g.deskConfiguration.id},g.deskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"DeskConfiguration properly saved!",msg:g.deskConfiguration.name?g.deskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The deskConfiguration will be deleted.").ariaLabel("Delete DeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDeskConfiguration.delete({id:g.deskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.deskConfiguration.id}),o.success({title:"DeskConfiguration properly deleted!",msg:(g.deskConfiguration.name||"deskConfiguration")+" has been deleted!"}),v(g.deskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","deskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.deskAccount=c||e.params.deskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoDeskAccounts=function(){e.go("app.integrations.deskAccounts",{},{reload:"app.integrations.deskAccounts"})},u.saveDeskAccount=function(){r.intDeskAccount.update({id:u.deskAccount.id},u.deskAccount).$promise.then(function(){l.success({title:"DeskAccount updated!",msg:u.deskAccount.name?u.deskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","deskAccount","userProfileSection"],angular.module("app.integrations").controller("DeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.deleteDynamics365Account=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Account will be deleted.").ariaLabel("Delete Dynamics365Account").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Account.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Account.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("dynamics365Account")+"?").htmlContent("<b>"+(e.name||"dynamics365Account")+"</b> will be deleted.").ariaLabel("delete dynamics365Account").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.createOrEditDynamics365Account=function(e,n){i.show({controller:"CreateOrEditDynamics365AccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Account:n,dynamics365Accounts:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.success({title:_.startCase("Dynamics365Account")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintDynamics365Account",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("Dynamics365AccountsController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intDynamics365Field.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.dynamics365Account={},o.dynamics365Configuration={},o.configurations=[],o.selectedDynamics365Configuration=-1,o.crudPermissions,o.init=function(e,n){o.dynamics365Account=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intDynamics365Account.getConfigurations({id:o.dynamics365Account.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getDynamics365Configuration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getDynamics365Configuration=function(e){o.advancedForm&&o.advancedForm.$setPristine();o.dynamics365Configuration=o.configurations[e],o.selectedDynamics365Configuration=e,i.intDynamics365Configuration.getSubjects({id:o.dynamics365Configuration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intDynamics365Configuration.getDescriptions({id:o.dynamics365Configuration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intDynamics365Configuration.getFields({id:o.dynamics365Configuration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditDynamics365Configuration=function(e,n){a.show({controller:"CreateOrEditDynamics365ConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{dynamics365Configuration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getDynamics365Configuration(0)})},o.deleteDynamics365Configuration=function(e,n){var t=a.confirm().title("Are you sure want to delete the dynamics365Configuration?").htmlContent("<b>"+(n.name||"dynamics365Configuration")+"</b> will be deleted.").ariaLabel("delete dynamics365Configuration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intDynamics365Configuration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"Dynamics365Configuration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getDynamics365Configuration(0)})},function(){console.log("CANCEL")})},o.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditDynamics365AccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.dynamics365Configuration,account:o.dynamics365Account,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("Dynamics365AccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_DYNAMICS365CONFIGURATION",g.dynamics365Configuration=angular.copy(l),g.configurations=r,g.newDynamics365Configuration=!1,g.dynamics365Configuration||(g.dynamics365Configuration={channel:"voice",type:"inbound",ticketType:"incident"},g.title="INTEGRATIONS.NEW_DYNAMICS365CONFIGURATION",g.newDynamics365Configuration=!0),g.addNewDynamics365Configuration=function(){g.errors=[],d.intDynamics365Account.addConfiguration({id:n.params.id},g.dynamics365Configuration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"Dynamics365Configuration properly created",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDynamics365Configuration=function(){g.errors=[],d.intDynamics365Configuration.update({id:g.dynamics365Configuration.id},g.dynamics365Configuration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Configuration properly saved!",msg:g.dynamics365Configuration.name?g.dynamics365Configuration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDynamics365Configuration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dynamics365Configuration will be deleted.").ariaLabel("Delete Dynamics365Configuration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intDynamics365Configuration.delete({id:g.dynamics365Configuration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.dynamics365Configuration.id}),o.success({title:"Dynamics365Configuration properly deleted!",msg:(g.dynamics365Configuration.name||"dynamics365Configuration")+" has been deleted!"}),v(g.dynamics365Configuration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intDynamics365Configuration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","dynamics365Configuration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365ConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intDynamics365Field.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intDynamics365Field.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intDynamics365Account.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditDynamics365AccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.dynamics365Account.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintDynamics365Account",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","dynamics365Account","cloudProviders","userProfileSection"],angular.module("app.integrations").controller("Dynamics365AccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKACCOUNT",g.freshdeskAccount=angular.copy(l),g.freshdeskAccounts=r,g.newFreshdeskAccount=!1,g.freshdeskAccount||(g.freshdeskAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHDESKACCOUNT",g.newFreshdeskAccount=!0),g.addNewFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.save(g.freshdeskAccount).$promise.then(function(e){g.freshdeskAccounts.unshift(e.toJSON()),o.success({title:"FreshdeskAccount properly created",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskAccount=function(){g.errors=[],d.intFreshdeskAccount.update({id:g.freshdeskAccount.id},g.freshdeskAccount).$promise.then(function(e){var n=_.find(g.freshdeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskAccount properly saved!",msg:g.freshdeskAccount.name?g.freshdeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskAccount will be deleted.").ariaLabel("Delete FreshdeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskAccount.delete({id:g.freshdeskAccount.id}).$promise.then(function(){_.remove(g.freshdeskAccounts,{id:g.freshdeskAccount.id}),o.success({title:"FreshdeskAccount properly deleted!",msg:(g.freshdeskAccount.name||"freshdeskAccount")+" has been deleted!"}),v(g.freshdeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshdeskAccounts","freshdeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshdeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshdeskAccount={},o.freshdeskConfiguration={},o.configurations=[],o.selectedFreshdeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshdeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshdeskAccount.getConfigurations({id:o.freshdeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshdeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshdeskConfiguration=function(e){o.freshdeskConfiguration=o.configurations[e],o.selectedFreshdeskConfiguration=e,i.intFreshdeskConfiguration.getSubjects({id:o.freshdeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshdeskConfiguration.getDescriptions({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshdeskConfiguration.getFields({id:o.freshdeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intFreshdeskConfiguration.getTags({id:o.freshdeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshdeskConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshdeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshdeskConfiguration(0)})},o.deleteFreshdeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshdeskConfiguration?").htmlContent("<b>"+(n.name||"freshdeskConfiguration")+"</b> will be deleted.").ariaLabel("delete freshdeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshdeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshdeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshdeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intFreshdeskConfiguration.setTags({id:o.freshdeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshdeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshdeskConfiguration,account:o.freshdeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshdeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHDESKCONFIGURATION",g.freshdeskConfiguration=angular.copy(l),g.configurations=r,g.newFreshdeskConfiguration=!1,g.freshdeskConfiguration||(g.freshdeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHDESKCONFIGURATION",g.newFreshdeskConfiguration=!0),g.addNewFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskAccount.addConfiguration({id:n.params.id},g.freshdeskConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshdeskConfiguration properly created",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshdeskConfiguration=function(){g.errors=[],d.intFreshdeskConfiguration.update({id:g.freshdeskConfiguration.id},g.freshdeskConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshdeskConfiguration properly saved!",msg:g.freshdeskConfiguration.name?g.freshdeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshdeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshdeskConfiguration will be deleted.").ariaLabel("Delete FreshdeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshdeskConfiguration.delete({id:g.freshdeskConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshdeskConfiguration.id}),o.success({title:"FreshdeskConfiguration properly deleted!",msg:(g.freshdeskConfiguration.name||"freshdeskConfiguration")+" has been deleted!"}),v(g.freshdeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshdeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshdeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshdeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshdeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshdeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshdeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshdeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshdeskAccount=c||e.params.freshdeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshdeskAccounts=function(){e.go("app.integrations.freshdeskAccounts",{},{reload:"app.integrations.freshdeskAccounts"})},u.saveFreshdeskAccount=function(){r.intFreshdeskAccount.update({id:u.freshdeskAccount.id},u.freshdeskAccount).$promise.then(function(){l.success({title:"FreshdeskAccount updated!",msg:u.freshdeskAccount.name?u.freshdeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshdeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshdeskAccount","userProfileSection"],angular.module("app.integrations").controller("FreshdeskAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshdeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshdeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshdeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshdeskAccounts.edit",{id:e.id,freshdeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshdeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshdeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshdeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshdeskAccount")+"?").htmlContent("<b>"+(e.name||"freshdeskAccount")+"</b> will be deleted.").ariaLabel("delete freshdeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshdeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshdeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshdeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshdeskAccount=function(e,n){i.show({controller:"CreateOrEditFreshdeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshdeskAccount:n,freshdeskAccounts:f.freshdeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshdeskAccount=y,f.exportSelectedFreshdeskAccounts=function(){var e=angular.copy(f.selectedFreshdeskAccounts);return f.selectedFreshdeskAccounts=[],e},f.deleteSelectedFreshdeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshdeskAccounts?").htmlContent("<b>"+f.selectedFreshdeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshdeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshdeskAccounts.forEach(function(e){y(e)}),f.selectedFreshdeskAccounts=[]})},f.deselectFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=[]},f.selectAllFreshdeskAccounts=function(){f.selectedFreshdeskAccounts=f.freshdeskAccounts.rows};var b=!0,A=1;function E(e){f.freshdeskAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshdeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshdeskAccounts.rows,{id:e.id}),f.freshdeskAccounts.count-=1,f.freshdeskAccounts.rows.length||f.getFreshdeskAccounts(),p.success({title:_.startCase("FreshdeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshdeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshdeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshdeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshdeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshdeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESACCOUNT",g.freshsalesAccount=angular.copy(l),g.freshsalesAccounts=r,g.newFreshsalesAccount=!1,g.freshsalesAccount||(g.freshsalesAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_FRESHSALESACCOUNT",g.newFreshsalesAccount=!0),g.addNewFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.save(g.freshsalesAccount).$promise.then(function(e){g.freshsalesAccounts.unshift(e.toJSON()),o.success({title:"FreshsalesAccount properly created",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesAccount=function(){g.errors=[],d.intFreshsalesAccount.update({id:g.freshsalesAccount.id},g.freshsalesAccount).$promise.then(function(e){var n=_.find(g.freshsalesAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesAccount properly saved!",msg:g.freshsalesAccount.name?g.freshsalesAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesAccount will be deleted.").ariaLabel("Delete FreshsalesAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesAccount.delete({id:g.freshsalesAccount.id}).$promise.then(function(){_.remove(g.freshsalesAccounts,{id:g.freshsalesAccount.id}),o.success({title:"FreshsalesAccount properly deleted!",msg:(g.freshsalesAccount.name||"freshsalesAccount")+" has been deleted!"}),v(g.freshsalesAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","freshsalesAccounts","freshsalesAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intFreshsalesField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.freshsalesAccount={},o.freshsalesConfiguration={},o.configurations=[],o.selectedFreshsalesConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.freshsalesAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intFreshsalesAccount.getConfigurations({id:o.freshsalesAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getFreshsalesConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getFreshsalesConfiguration=function(e){o.freshsalesConfiguration=o.configurations[e],o.selectedFreshsalesConfiguration=e,i.intFreshsalesConfiguration.getSubjects({id:o.freshsalesConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intFreshsalesConfiguration.getDescriptions({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intFreshsalesConfiguration.getFields({id:o.freshsalesConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditFreshsalesConfiguration=function(e,n){a.show({controller:"CreateOrEditFreshsalesConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getFreshsalesConfiguration(0)})},o.deleteFreshsalesConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the freshsalesConfiguration?").htmlContent("<b>"+(n.name||"freshsalesConfiguration")+"</b> will be deleted.").ariaLabel("delete freshsalesConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intFreshsalesConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"FreshsalesConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getFreshsalesConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditFreshsalesAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.freshsalesConfiguration,account:o.freshsalesAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("FreshsalesAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_FRESHSALESCONFIGURATION",g.freshsalesConfiguration=angular.copy(l),g.configurations=r,g.newFreshsalesConfiguration=!1,g.freshsalesConfiguration||(g.freshsalesConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_FRESHSALESCONFIGURATION",g.newFreshsalesConfiguration=!0),g.addNewFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesAccount.addConfiguration({id:n.params.id},g.freshsalesConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"FreshsalesConfiguration properly created",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveFreshsalesConfiguration=function(){g.errors=[],d.intFreshsalesConfiguration.update({id:g.freshsalesConfiguration.id},g.freshsalesConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"FreshsalesConfiguration properly saved!",msg:g.freshsalesConfiguration.name?g.freshsalesConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteFreshsalesConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The freshsalesConfiguration will be deleted.").ariaLabel("Delete FreshsalesConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intFreshsalesConfiguration.delete({id:g.freshsalesConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.freshsalesConfiguration.id}),o.success({title:"FreshsalesConfiguration properly deleted!",msg:(g.freshsalesConfiguration.name||"freshsalesConfiguration")+" has been deleted!"}),v(g.freshsalesConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intFreshsalesConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intFreshsalesConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","freshsalesConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intFreshsalesField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intFreshsalesField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intFreshsalesAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditFreshsalesAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.freshsalesAccount=c||e.params.freshsalesAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoFreshsalesAccounts=function(){e.go("app.integrations.freshsalesAccounts",{},{reload:"app.integrations.freshsalesAccounts"})},u.saveFreshsalesAccount=function(){r.intFreshsalesAccount.update({id:u.freshsalesAccount.id},u.freshsalesAccount).$promise.then(function(){l.success({title:"FreshsalesAccount updated!",msg:u.freshsalesAccount.name?u.freshsalesAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintFreshsalesAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","freshsalesAccount","userProfileSection"],angular.module("app.integrations").controller("FreshsalesAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.freshsalesAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="freshsalesAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedFreshsalesAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,apiKey,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.freshsalesAccounts.edit",{id:e.id,freshsalesAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intFreshsalesAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"FreshsalesAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"FreshsalesAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("freshsalesAccount")+"?").htmlContent("<b>"+(e.name||"freshsalesAccount")+"</b> will be deleted.").ariaLabel("delete freshsalesAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getFreshsalesAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intFreshsalesAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="FreshsalesAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditFreshsalesAccount=function(e,n){i.show({controller:"CreateOrEditFreshsalesAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{freshsalesAccount:n,freshsalesAccounts:f.freshsalesAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteFreshsalesAccount=y,f.exportSelectedFreshsalesAccounts=function(){var e=angular.copy(f.selectedFreshsalesAccounts);return f.selectedFreshsalesAccounts=[],e},f.deleteSelectedFreshsalesAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected freshsalesAccounts?").htmlContent("<b>"+f.selectedFreshsalesAccounts.length+" selected</b> will be deleted.").ariaLabel("delete FreshsalesAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedFreshsalesAccounts.forEach(function(e){y(e)}),f.selectedFreshsalesAccounts=[]})},f.deselectFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=[]},f.selectAllFreshsalesAccounts=function(){f.selectedFreshsalesAccounts=f.freshsalesAccounts.rows};var b=!0,A=1;function E(e){f.freshsalesAccounts=e||{count:0,rows:[]}}function y(e){m.intFreshsalesAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.freshsalesAccounts.rows,{id:e.id}),f.freshsalesAccounts.count-=1,f.freshsalesAccounts.rows.length||f.getFreshsalesAccounts(),p.success({title:_.startCase("FreshsalesAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintFreshsalesAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintFreshsalesAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getFreshsalesAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","freshsalesAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("FreshsalesAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCEACCOUNT",g.salesforceAccount=angular.copy(l),g.salesforceAccounts=r,g.newSalesforceAccount=!1,g.salesforceAccount||(g.salesforceAccount={type:"integrationTab",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SALESFORCEACCOUNT",g.newSalesforceAccount=!0),g.addNewSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.save(g.salesforceAccount).$promise.then(function(e){g.salesforceAccounts.unshift(e.toJSON()),o.success({title:"SalesforceAccount properly created",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceAccount=function(){g.errors=[],d.intSalesforceAccount.update({id:g.salesforceAccount.id},g.salesforceAccount).$promise.then(function(e){var n=_.find(g.salesforceAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceAccount properly saved!",msg:g.salesforceAccount.name?g.salesforceAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceAccount will be deleted.").ariaLabel("Delete SalesforceAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceAccount.delete({id:g.salesforceAccount.id}).$promise.then(function(){_.remove(g.salesforceAccounts,{id:g.salesforceAccount.id}),o.success({title:"SalesforceAccount properly deleted!",msg:(g.salesforceAccount.name||"salesforceAccount")+" has been deleted!"}),v(g.salesforceAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","salesforceAccounts","salesforceAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function n(){return"Case"===o.salesforceConfiguration.ticketType&&("lead"===o.salesforceConfiguration.moduleCreate||_.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch))}function r(){return _.includes(["lead","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function l(){return _.includes(["contact","contact_lead","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function d(){return _.includes(["account","account_contact_lead"],o.salesforceConfiguration.moduleSearch)}function c(){return i.intSalesforceConfiguration.update({id:o.salesforceConfiguration.id},o.salesforceConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function m(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function u(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(e){i.intSalesforceField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.salesforceAccount={},o.salesforceConfiguration={},o.configurations=[],o.selectedSalesforceConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.salesforceAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSalesforceAccount.getConfigurations({id:o.salesforceAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSalesforceConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSalesforceConfiguration=function(e){o.salesforceConfiguration=o.configurations[e],o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),o.selectedSalesforceConfiguration=e,i.intSalesforceConfiguration.getSubjects({id:o.salesforceConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSalesforceConfiguration.getDescriptions({id:o.salesforceConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSalesforceConfiguration.getFields({id:o.salesforceConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSalesforceConfiguration=function(e,n){a.show({controller:"CreateOrEditSalesforceConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSalesforceConfiguration(0)})},o.deleteSalesforceConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the salesforceConfiguration?").htmlContent("<b>"+(n.name||"salesforceConfiguration")+"</b> will be deleted.").ariaLabel("delete salesforceConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSalesforceConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SalesforceConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSalesforceConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){o.salesforceConfiguration.isLead=n(),o.salesforceConfiguration.isLeadSearch=r(),o.salesforceConfiguration.isContactSearch=l(),o.salesforceConfiguration.isAccountSearch=d(),c()},o.salesforceConfiguration.isLead=!1,o.salesforceConfiguration.isLeadSearch=!1,o.salesforceConfiguration.isContactSearch=!1,o.salesforceConfiguration.isAccountSearch=!1,o.checkIsLead=n,o.checkIsLeadSearch=r,o.checkIsContactSearch=l,o.checkIsAccountSearch=d,o.saveSalesforceConfiguration=c,o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){m(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){m(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){u(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){u(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSalesforceAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.salesforceConfiguration,account:o.salesforceAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){p(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){p(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SalesforceAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SALESFORCECONFIGURATION",g.salesforceConfiguration=angular.copy(l),g.configurations=r,g.newSalesforceConfiguration=!1,g.salesforceConfiguration||(g.salesforceConfiguration={channel:"voice",type:"inbound",ticketType:"Task"},g.title="INTEGRATIONS.NEW_SALESFORCECONFIGURATION",g.newSalesforceConfiguration=!0),g.addNewSalesforceConfiguration=function(){g.errors=[],d.intSalesforceAccount.addConfiguration({id:n.params.id},g.salesforceConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SalesforceConfiguration properly created",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSalesforceConfiguration=function(){g.errors=[],d.intSalesforceConfiguration.update({id:g.salesforceConfiguration.id},g.salesforceConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SalesforceConfiguration properly saved!",msg:g.salesforceConfiguration.name?g.salesforceConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSalesforceConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The salesforceConfiguration will be deleted.").ariaLabel("Delete SalesforceConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSalesforceConfiguration.delete({id:g.salesforceConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.salesforceConfiguration.id}),o.success({title:"SalesforceConfiguration properly deleted!",msg:(g.salesforceConfiguration.name||"salesforceConfiguration")+" has been deleted!"}),v(g.salesforceConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSalesforceConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSalesforceConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","salesforceConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSalesforceField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSalesforceField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSalesforceAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSalesforceAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.salesforceAccount=c||e.params.salesforceAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSalesforceAccounts=function(){e.go("app.integrations.salesforceAccounts",{},{reload:"app.integrations.salesforceAccounts"})},u.saveSalesforceAccount=function(){r.intSalesforceAccount.update({id:u.salesforceAccount.id},u.salesforceAccount).$promise.then(function(){l.success({title:"SalesforceAccount updated!",msg:u.salesforceAccount.name?u.salesforceAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSalesforceAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","salesforceAccount","userProfileSection"],angular.module("app.integrations").controller("SalesforceAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.salesforceAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="salesforceAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSalesforceAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,password,clientId,clientSecret,securityToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.salesforceAccounts.edit",{id:e.id,salesforceAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSalesforceAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SalesforceAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SalesforceAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("salesforceAccount")+"?").htmlContent("<b>"+(e.name||"salesforceAccount")+"</b> will be deleted.").ariaLabel("delete salesforceAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSalesforceAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSalesforceAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SalesforceAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSalesforceAccount=function(e,n){i.show({controller:"CreateOrEditSalesforceAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{salesforceAccount:n,salesforceAccounts:f.salesforceAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSalesforceAccount=y,f.exportSelectedSalesforceAccounts=function(){var e=angular.copy(f.selectedSalesforceAccounts);return f.selectedSalesforceAccounts=[],e},f.deleteSelectedSalesforceAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected salesforceAccounts?").htmlContent("<b>"+f.selectedSalesforceAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SalesforceAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSalesforceAccounts.forEach(function(e){y(e)}),f.selectedSalesforceAccounts=[]})},f.deselectSalesforceAccounts=function(){f.selectedSalesforceAccounts=[]},f.selectAllSalesforceAccounts=function(){f.selectedSalesforceAccounts=f.salesforceAccounts.rows};var b=!0,A=1;function E(e){f.salesforceAccounts=e||{count:0,rows:[]}}function y(e){m.intSalesforceAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.salesforceAccounts.rows,{id:e.id}),f.salesforceAccounts.count-=1,f.salesforceAccounts.rows.length||f.getSalesforceAccounts(),p.success({title:_.startCase("SalesforceAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSalesforceAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSalesforceAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSalesforceAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","salesforceAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SalesforceAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWACCOUNT",g.servicenowAccount=angular.copy(l),g.servicenowAccounts=r,g.newServicenowAccount=!1,g.servicenowAccount||(g.servicenowAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SERVICENOWACCOUNT",g.newServicenowAccount=!0),g.addNewServicenowAccount=function(){g.errors=[],d.intServicenowAccount.save(g.servicenowAccount).$promise.then(function(e){g.servicenowAccounts.unshift(e.toJSON()),o.success({title:"ServicenowAccount properly created",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowAccount=function(){g.errors=[],d.intServicenowAccount.update({id:g.servicenowAccount.id},g.servicenowAccount).$promise.then(function(e){var n=_.find(g.servicenowAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowAccount properly saved!",msg:g.servicenowAccount.name?g.servicenowAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowAccount will be deleted.").ariaLabel("Delete ServicenowAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowAccount.delete({id:g.servicenowAccount.id}).$promise.then(function(){_.remove(g.servicenowAccounts,{id:g.servicenowAccount.id}),o.success({title:"ServicenowAccount properly deleted!",msg:(g.servicenowAccount.name||"servicenowAccount")+" has been deleted!"}),v(g.servicenowAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","servicenowAccounts","servicenowAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intServicenowField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.servicenowAccount={},o.servicenowConfiguration={},o.configurations=[],o.selectedServicenowConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.servicenowAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intServicenowAccount.getConfigurations({id:o.servicenowAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getServicenowConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getServicenowConfiguration=function(e){o.servicenowConfiguration=o.configurations[e],o.selectedServicenowConfiguration=e,i.intServicenowConfiguration.getSubjects({id:o.servicenowConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intServicenowConfiguration.getDescriptions({id:o.servicenowConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intServicenowConfiguration.getFields({id:o.servicenowConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditServicenowConfiguration=function(e,n){a.show({controller:"CreateOrEditServicenowConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getServicenowConfiguration(0)})},o.deleteServicenowConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the servicenowConfiguration?").htmlContent("<b>"+(n.name||"servicenowConfiguration")+"</b> will be deleted.").ariaLabel("delete servicenowConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intServicenowConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ServicenowConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getServicenowConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditServicenowAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.servicenowConfiguration,account:o.servicenowAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ServicenowAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SERVICENOWCONFIGURATION",g.servicenowConfiguration=angular.copy(l),g.configurations=r,g.newServicenowConfiguration=!1,g.servicenowConfiguration||(g.servicenowConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SERVICENOWCONFIGURATION",g.newServicenowConfiguration=!0),g.addNewServicenowConfiguration=function(){g.errors=[],d.intServicenowAccount.addConfiguration({id:n.params.id},g.servicenowConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ServicenowConfiguration properly created",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveServicenowConfiguration=function(){g.errors=[],d.intServicenowConfiguration.update({id:g.servicenowConfiguration.id},g.servicenowConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ServicenowConfiguration properly saved!",msg:g.servicenowConfiguration.name?g.servicenowConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteServicenowConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The servicenowConfiguration will be deleted.").ariaLabel("Delete ServicenowConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intServicenowConfiguration.delete({id:g.servicenowConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.servicenowConfiguration.id}),o.success({title:"ServicenowConfiguration properly deleted!",msg:(g.servicenowConfiguration.name||"servicenowConfiguration")+" has been deleted!"}),v(g.servicenowConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intServicenowConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intServicenowConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","servicenowConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intServicenowField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intServicenowField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intServicenowAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditServicenowAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.servicenowAccount=c||e.params.servicenowAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoServicenowAccounts=function(){e.go("app.integrations.servicenowAccounts",{},{reload:"app.integrations.servicenowAccounts"})},u.saveServicenowAccount=function(){r.intServicenowAccount.update({id:u.servicenowAccount.id},u.servicenowAccount).$promise.then(function(){l.success({title:"ServicenowAccount updated!",msg:u.servicenowAccount.name?u.servicenowAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintServicenowAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","servicenowAccount","userProfileSection"],angular.module("app.integrations").controller("ServicenowAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.servicenowAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="servicenowAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedServicenowAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,password,email,remoteUri,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.servicenowAccounts.edit",{id:e.id,servicenowAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intServicenowAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ServicenowAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ServicenowAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("servicenowAccount")+"?").htmlContent("<b>"+(e.name||"servicenowAccount")+"</b> will be deleted.").ariaLabel("delete servicenowAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getServicenowAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intServicenowAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ServicenowAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditServicenowAccount=function(e,n){i.show({controller:"CreateOrEditServicenowAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{servicenowAccount:n,servicenowAccounts:f.servicenowAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteServicenowAccount=y,f.exportSelectedServicenowAccounts=function(){var e=angular.copy(f.selectedServicenowAccounts);return f.selectedServicenowAccounts=[],e},f.deleteSelectedServicenowAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected servicenowAccounts?").htmlContent("<b>"+f.selectedServicenowAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ServicenowAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedServicenowAccounts.forEach(function(e){y(e)}),f.selectedServicenowAccounts=[]})},f.deselectServicenowAccounts=function(){f.selectedServicenowAccounts=[]},f.selectAllServicenowAccounts=function(){f.selectedServicenowAccounts=f.servicenowAccounts.rows};var b=!0,A=1;function E(e){f.servicenowAccounts=e||{count:0,rows:[]}}function y(e){m.intServicenowAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.servicenowAccounts.rows,{id:e.id}),f.servicenowAccounts.count-=1,f.servicenowAccounts.rows.length||f.getServicenowAccounts(),p.success({title:_.startCase("ServicenowAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintServicenowAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintServicenowAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getServicenowAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","servicenowAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ServicenowAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMACCOUNT",g.sugarcrmAccount=angular.copy(l),g.sugarcrmAccounts=r,g.newSugarcrmAccount=!1,g.sugarcrmAccount||(g.sugarcrmAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_SUGARCRMACCOUNT",g.newSugarcrmAccount=!0),g.addNewSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.save(g.sugarcrmAccount).$promise.then(function(e){g.sugarcrmAccounts.unshift(e.toJSON()),o.success({title:"SugarcrmAccount properly created",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmAccount=function(){g.errors=[],d.intSugarcrmAccount.update({id:g.sugarcrmAccount.id},g.sugarcrmAccount).$promise.then(function(e){var n=_.find(g.sugarcrmAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmAccount properly saved!",msg:g.sugarcrmAccount.name?g.sugarcrmAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmAccount will be deleted.").ariaLabel("Delete SugarcrmAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmAccount.delete({id:g.sugarcrmAccount.id}).$promise.then(function(){_.remove(g.sugarcrmAccounts,{id:g.sugarcrmAccount.id}),o.success({title:"SugarcrmAccount properly deleted!",msg:(g.sugarcrmAccount.name||"sugarcrmAccount")+" has been deleted!"}),v(g.sugarcrmAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sugarcrmAccounts","sugarcrmAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intSugarcrmField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.sugarcrmAccount={},o.sugarcrmConfiguration={},o.configurations=[],o.selectedSugarcrmConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.sugarcrmAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intSugarcrmAccount.getConfigurations({id:o.sugarcrmAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getSugarcrmConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getSugarcrmConfiguration=function(e){o.sugarcrmConfiguration=o.configurations[e],o.selectedSugarcrmConfiguration=e,i.intSugarcrmConfiguration.getSubjects({id:o.sugarcrmConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intSugarcrmConfiguration.getDescriptions({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intSugarcrmConfiguration.getFields({id:o.sugarcrmConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditSugarcrmConfiguration=function(e,n){a.show({controller:"CreateOrEditSugarcrmConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getSugarcrmConfiguration(0)})},o.deleteSugarcrmConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the sugarcrmConfiguration?").htmlContent("<b>"+(n.name||"sugarcrmConfiguration")+"</b> will be deleted.").ariaLabel("delete sugarcrmConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intSugarcrmConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"SugarcrmConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getSugarcrmConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditSugarcrmAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.sugarcrmConfiguration,account:o.sugarcrmAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("SugarcrmAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_SUGARCRMCONFIGURATION",g.sugarcrmConfiguration=angular.copy(l),g.configurations=r,g.newSugarcrmConfiguration=!1,g.sugarcrmConfiguration||(g.sugarcrmConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_SUGARCRMCONFIGURATION",g.newSugarcrmConfiguration=!0),g.addNewSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmAccount.addConfiguration({id:n.params.id},g.sugarcrmConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"SugarcrmConfiguration properly created",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSugarcrmConfiguration=function(){g.errors=[],d.intSugarcrmConfiguration.update({id:g.sugarcrmConfiguration.id},g.sugarcrmConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SugarcrmConfiguration properly saved!",msg:g.sugarcrmConfiguration.name?g.sugarcrmConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSugarcrmConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sugarcrmConfiguration will be deleted.").ariaLabel("Delete SugarcrmConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intSugarcrmConfiguration.delete({id:g.sugarcrmConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.sugarcrmConfiguration.id}),o.success({title:"SugarcrmConfiguration properly deleted!",msg:(g.sugarcrmConfiguration.name||"sugarcrmConfiguration")+" has been deleted!"}),v(g.sugarcrmConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intSugarcrmConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intSugarcrmConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","sugarcrmConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intSugarcrmField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intSugarcrmField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intSugarcrmAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditSugarcrmAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.sugarcrmAccount=c||e.params.sugarcrmAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoSugarcrmAccounts=function(){e.go("app.integrations.sugarcrmAccounts",{},{reload:"app.integrations.sugarcrmAccounts"})},u.saveSugarcrmAccount=function(){r.intSugarcrmAccount.update({id:u.sugarcrmAccount.id},u.sugarcrmAccount).$promise.then(function(){l.success({title:"SugarcrmAccount updated!",msg:u.sugarcrmAccount.name?u.sugarcrmAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintSugarcrmAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","sugarcrmAccount","userProfileSection"],angular.module("app.integrations").controller("SugarcrmAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sugarcrmAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sugarcrmAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSugarcrmAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,username,remoteUri,password,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.sugarcrmAccounts.edit",{id:e.id,sugarcrmAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intSugarcrmAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"SugarcrmAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"SugarcrmAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sugarcrmAccount")+"?").htmlContent("<b>"+(e.name||"sugarcrmAccount")+"</b> will be deleted.").ariaLabel("delete sugarcrmAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSugarcrmAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intSugarcrmAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SugarcrmAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSugarcrmAccount=function(e,n){i.show({controller:"CreateOrEditSugarcrmAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sugarcrmAccount:n,sugarcrmAccounts:f.sugarcrmAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSugarcrmAccount=y,f.exportSelectedSugarcrmAccounts=function(){var e=angular.copy(f.selectedSugarcrmAccounts);return f.selectedSugarcrmAccounts=[],e},f.deleteSelectedSugarcrmAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected sugarcrmAccounts?").htmlContent("<b>"+f.selectedSugarcrmAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SugarcrmAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSugarcrmAccounts.forEach(function(e){y(e)}),f.selectedSugarcrmAccounts=[]})},f.deselectSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=[]},f.selectAllSugarcrmAccounts=function(){f.selectedSugarcrmAccounts=f.sugarcrmAccounts.rows};var b=!0,A=1;function E(e){f.sugarcrmAccounts=e||{count:0,rows:[]}}function y(e){m.intSugarcrmAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.sugarcrmAccounts.rows,{id:e.id}),f.sugarcrmAccounts.count-=1,f.sugarcrmAccounts.rows.length||f.getSugarcrmAccounts(),p.success({title:_.startCase("SugarcrmAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintSugarcrmAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintSugarcrmAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSugarcrmAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sugarcrmAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("SugarcrmAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERACCOUNT",g.vtigerAccount=angular.copy(l),g.vtigerAccounts=r,g.newVtigerAccount=!1,g.vtigerAccount||(g.vtigerAccount={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_VTIGERACCOUNT",g.newVtigerAccount=!0),g.addNewVtigerAccount=function(){g.errors=[],d.intVtigerAccount.save(g.vtigerAccount).$promise.then(function(e){g.vtigerAccounts.unshift(e.toJSON()),o.success({title:"VtigerAccount properly created",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerAccount=function(){g.errors=[],d.intVtigerAccount.update({id:g.vtigerAccount.id},g.vtigerAccount).$promise.then(function(e){var n=_.find(g.vtigerAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerAccount properly saved!",msg:g.vtigerAccount.name?g.vtigerAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerAccount will be deleted.").ariaLabel("Delete VtigerAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerAccount.delete({id:g.vtigerAccount.id}).$promise.then(function(){_.remove(g.vtigerAccounts,{id:g.vtigerAccount.id}),o.success({title:"VtigerAccount properly deleted!",msg:(g.vtigerAccount.name||"vtigerAccount")+" has been deleted!"}),v(g.vtigerAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","vtigerAccounts","vtigerAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intVtigerField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.vtigerAccount={},o.vtigerConfiguration={},o.configurations=[],o.selectedVtigerConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.vtigerAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intVtigerAccount.getConfigurations({id:o.vtigerAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getVtigerConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getVtigerConfiguration=function(e){o.vtigerConfiguration=o.configurations[e],o.selectedVtigerConfiguration=e,i.intVtigerConfiguration.getSubjects({id:o.vtigerConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intVtigerConfiguration.getDescriptions({id:o.vtigerConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intVtigerConfiguration.getFields({id:o.vtigerConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditVtigerConfiguration=function(e,n){a.show({controller:"CreateOrEditVtigerConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getVtigerConfiguration(0)})},o.deleteVtigerConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the vtigerConfiguration?").htmlContent("<b>"+(n.name||"vtigerConfiguration")+"</b> will be deleted.").ariaLabel("delete vtigerConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intVtigerConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"VtigerConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getVtigerConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditVtigerAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.vtigerConfiguration,account:o.vtigerAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("VtigerAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_VTIGERCONFIGURATION",g.vtigerConfiguration=angular.copy(l),g.configurations=r,g.newVtigerConfiguration=!1,g.vtigerConfiguration||(g.vtigerConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_VTIGERCONFIGURATION",g.newVtigerConfiguration=!0),g.addNewVtigerConfiguration=function(){g.errors=[],d.intVtigerAccount.addConfiguration({id:n.params.id},g.vtigerConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"VtigerConfiguration properly created",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVtigerConfiguration=function(){g.errors=[],d.intVtigerConfiguration.update({id:g.vtigerConfiguration.id},g.vtigerConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VtigerConfiguration properly saved!",msg:g.vtigerConfiguration.name?g.vtigerConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVtigerConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The vtigerConfiguration will be deleted.").ariaLabel("Delete VtigerConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intVtigerConfiguration.delete({id:g.vtigerConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.vtigerConfiguration.id}),o.success({title:"VtigerConfiguration properly deleted!",msg:(g.vtigerConfiguration.name||"vtigerConfiguration")+" has been deleted!"}),v(g.vtigerConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intVtigerConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intVtigerConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","vtigerConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intVtigerField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intVtigerField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intVtigerAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditVtigerAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.vtigerAccount=c||e.params.vtigerAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVtigerAccounts=function(){e.go("app.integrations.vtigerAccounts",{},{reload:"app.integrations.vtigerAccounts"})},u.saveVtigerAccount=function(){r.intVtigerAccount.update({id:u.vtigerAccount.id},u.vtigerAccount).$promise.then(function(){l.success({title:"VtigerAccount updated!",msg:u.vtigerAccount.name?u.vtigerAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintVtigerAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","vtigerAccount","userProfileSection"],angular.module("app.integrations").controller("VtigerAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.vtigerAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="vtigerAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedVtigerAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,description,username,accessKey,remoteUri,serverUrl",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.integrations.vtigerAccounts.edit",{id:e.id,vtigerAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intVtigerAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"VtigerAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"VtigerAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("vtigerAccount")+"?").htmlContent("<b>"+(e.name||"vtigerAccount")+"</b> will be deleted.").ariaLabel("delete vtigerAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVtigerAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intVtigerAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VtigerAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVtigerAccount=function(e,n){i.show({controller:"CreateOrEditVtigerAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{vtigerAccount:n,vtigerAccounts:f.vtigerAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVtigerAccount=y,f.exportSelectedVtigerAccounts=function(){var e=angular.copy(f.selectedVtigerAccounts);return f.selectedVtigerAccounts=[],e},f.deleteSelectedVtigerAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected vtigerAccounts?").htmlContent("<b>"+f.selectedVtigerAccounts.length+" selected</b> will be deleted.").ariaLabel("delete VtigerAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVtigerAccounts.forEach(function(e){y(e)}),f.selectedVtigerAccounts=[]})},f.deselectVtigerAccounts=function(){f.selectedVtigerAccounts=[]},f.selectAllVtigerAccounts=function(){f.selectedVtigerAccounts=f.vtigerAccounts.rows};var b=!0,A=1;function E(e){f.vtigerAccounts=e||{count:0,rows:[]}}function y(e){m.intVtigerAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.vtigerAccounts.rows,{id:e.id}),f.vtigerAccounts.count-=1,f.vtigerAccounts.rows.length||f.getVtigerAccounts(),p.success({title:_.startCase("VtigerAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintVtigerAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintVtigerAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVtigerAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","vtigerAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("VtigerAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKACCOUNT",g.zendeskAccount=angular.copy(l),g.zendeskAccounts=r,g.newZendeskAccount=!1,g.zendeskAccount||(g.zendeskAccount={type:"integrationTab",authType:"password",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZENDESKACCOUNT",g.newZendeskAccount=!0),g.addNewZendeskAccount=function(){g.errors=[],d.intZendeskAccount.save(g.zendeskAccount).$promise.then(function(e){g.zendeskAccounts.unshift(e.toJSON()),o.success({title:"ZendeskAccount properly created",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskAccount=function(){g.errors=[],d.intZendeskAccount.update({id:g.zendeskAccount.id},g.zendeskAccount).$promise.then(function(e){var n=_.find(g.zendeskAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskAccount properly saved!",msg:g.zendeskAccount.name?g.zendeskAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskAccount will be deleted.").ariaLabel("Delete ZendeskAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskAccount.delete({id:g.zendeskAccount.id}).$promise.then(function(){_.remove(g.zendeskAccounts,{id:g.zendeskAccount.id}),o.success({title:"ZendeskAccount properly deleted!",msg:(g.zendeskAccount.name||"zendeskAccount")+" has been deleted!"}),v(g.zendeskAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskAccounts","zendeskAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZendeskField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZendeskField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZendeskAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zendeskAccount=c||e.params.zendeskAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZendeskAccounts=function(){e.go("app.integrations.zendeskAccounts",{},{reload:"app.integrations.zendeskAccounts"})},u.saveZendeskAccount=function(){r.intZendeskAccount.update({id:u.zendeskAccount.id},u.zendeskAccount).$promise.then(function(){l.success({title:"ZendeskAccount updated!",msg:u.zendeskAccount.name?u.zendeskAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZendeskAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zendeskAccount","userProfileSection"],angular.module("app.integrations").controller("ZendeskAccountController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZendeskField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zendeskAccount={},o.zendeskConfiguration={},o.zendeskConfigurations=[],o.selectedZendeskConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zendeskAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZendeskAccount.getConfigurations({id:o.zendeskAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.zendeskConfigurations=e.rows?e.rows:[],o.zendeskConfigurations.length&&o.getZendeskConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZendeskConfiguration=function(e){o.zendeskConfiguration=o.zendeskConfigurations[e],o.selectedZendeskConfiguration=e,i.intZendeskConfiguration.getSubjects({id:o.zendeskConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZendeskConfiguration.getDescriptions({id:o.zendeskConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZendeskConfiguration.getFields({id:o.zendeskConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})}),i.intZendeskConfiguration.getTags({id:o.zendeskConfiguration.id}).$promise.then(function(e){o.selectedTags=e.rows?_.map(e.rows,"id"):[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZendeskConfiguration=function(e,n){a.show({controller:"CreateOrEditZendeskConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskConfiguration:n,zendeskConfigurations:o.zendeskConfigurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZendeskConfiguration(0)})},o.deleteZendeskConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zendeskConfiguration?").htmlContent("<b>"+(n.name||"zendeskConfiguration")+"</b> will be deleted.").ariaLabel("delete zendeskConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZendeskConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.zendeskConfigurations,{id:n.id}),s.success({title:"ZendeskConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZendeskConfiguration(0)})},function(){console.log("CANCEL")})},o.selectedTags=[],o.selectTagsChanged=function(e){i.intZendeskConfiguration.setTags({id:o.zendeskConfiguration.id,ids:o.selectedTags}).$promise.then(function(){s.success({title:"Tags set!",msg:"Tags has been set!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ADDTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})},i.tag.get({nolimit:!0,sort:"name"}).$promise.then(function(e){o.tags=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZendeskAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zendeskConfiguration,account:o.zendeskAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZendeskAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZENDESKCONFIGURATION",g.zendeskConfiguration=angular.copy(l),g.zendeskConfigurations=r,g.newZendeskConfiguration=!1,g.zendeskConfiguration||(g.zendeskConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZENDESKCONFIGURATION",g.newZendeskConfiguration=!0),g.addNewZendeskConfiguration=function(){g.errors=[],d.intZendeskAccount.addConfiguration({id:n.params.id},g.zendeskConfiguration).$promise.then(function(e){g.zendeskConfigurations.unshift(e.toJSON()),o.success({title:"ZendeskConfiguration properly created",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZendeskConfiguration=function(){g.errors=[],d.intZendeskConfiguration.update({id:g.zendeskConfiguration.id},g.zendeskConfiguration).$promise.then(function(e){var n=_.find(g.zendeskConfigurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZendeskConfiguration properly saved!",msg:g.zendeskConfiguration.name?g.zendeskConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZendeskConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zendeskConfiguration will be deleted.").ariaLabel("Delete ZendeskConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZendeskConfiguration.delete({id:g.zendeskConfiguration.id}).$promise.then(function(){_.remove(g.zendeskConfigurations,{id:g.zendeskConfiguration.id}),o.success({title:"ZendeskConfiguration properly deleted!",msg:(g.zendeskConfiguration.name||"zendeskConfiguration")+" has been deleted!"}),v(g.zendeskConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZendeskConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZendeskConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zendeskConfigurations","zendeskConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZendeskConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zendeskAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zendeskAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZendeskAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,type,username,remoteUri,authType,password,token,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Integration_Tab",value:"'integrationTab'"},{option:"New_Tab",value:"'newTab'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayauthType=_.keyBy([{option:"Password",value:"'password'"},{option:"Token",value:"'token'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zendeskAccounts.edit",{id:e.id,zendeskAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZendeskAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZendeskAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZendeskAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zendeskAccount")+"?").htmlContent("<b>"+(e.name||"zendeskAccount")+"</b> will be deleted.").ariaLabel("delete zendeskAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZendeskAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZendeskAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZendeskAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZendeskAccount=function(e,n){i.show({controller:"CreateOrEditZendeskAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zendeskAccount:n,zendeskAccounts:f.zendeskAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZendeskAccount=y,f.exportSelectedZendeskAccounts=function(){var e=angular.copy(f.selectedZendeskAccounts);return f.selectedZendeskAccounts=[],e},f.deleteSelectedZendeskAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zendeskAccounts?").htmlContent("<b>"+f.selectedZendeskAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZendeskAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZendeskAccounts.forEach(function(e){y(e)}),f.selectedZendeskAccounts=[]})},f.deselectZendeskAccounts=function(){f.selectedZendeskAccounts=[]},f.selectAllZendeskAccounts=function(){f.selectedZendeskAccounts=f.zendeskAccounts.rows};var b=!0,A=1;function E(e){f.zendeskAccounts=e||{count:0,rows:[]}}function y(e){m.intZendeskAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zendeskAccounts.rows,{id:e.id}),f.zendeskAccounts.count-=1,f.zendeskAccounts.rows.length||f.getZendeskAccounts(),p.success({title:_.startCase("ZendeskAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZendeskAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZendeskAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZendeskAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zendeskAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZendeskAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOACCOUNT",g.zohoAccount=angular.copy(l),g.zohoAccounts=r,g.newZohoAccount=!1,g.zohoAccount||(g.zohoAccount={host:"zoho.com",zone:"EU",serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():"")},g.title="INTEGRATIONS.NEW_ZOHOACCOUNT",g.newZohoAccount=!0),g.addNewZohoAccount=function(){g.errors=[],d.intZohoAccount.save(g.zohoAccount).$promise.then(function(e){g.zohoAccounts.unshift(e.toJSON()),o.success({title:"ZohoAccount properly created",msg:g.zohoAccount.name?g.zohoAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoAccount=function(){g.errors=[],d.intZohoAccount.update({id:g.zohoAccount.id},g.zohoAccount).$promise.then(function(e){var n=_.find(g.zohoAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoAccount properly saved!",msg:g.zohoAccount.name?g.zohoAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoAccount will be deleted.").ariaLabel("Delete ZohoAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoAccount.delete({id:g.zohoAccount.id}).$promise.then(function(){_.remove(g.zohoAccounts,{id:g.zohoAccount.id}),o.success({title:"ZohoAccount properly deleted!",msg:(g.zohoAccount.name||"zohoAccount")+" has been deleted!"}),v(g.zohoAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","zohoAccounts","zohoAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountDialogController",e)}(),function(){"use strict";function e(a,t,i,s,e){var o=this;function r(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.subjects,{id:e.id}),s.success({title:"Subject deleted!",msg:"Subject has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function l(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.descriptions,{id:e.id}),s.success({title:"Description deleted!",msg:"Description has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}function d(e){i.intZohoField.delete({id:e.id}).$promise.then(function(){_.remove(o.fields,{id:e.id}),s.success({title:"Field deleted!",msg:"Field has been deleted!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})}o.currentUser=e.getCurrentUser(),o.zohoAccount={},o.zohoConfiguration={},o.configurations=[],o.selectedZohoConfiguration=-1,o.crudPermissions,o.init=function(e,n){o.zohoAccount=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.intZohoAccount.getConfigurations({id:o.zohoAccount.id,sort:"-updatedAt"}).$promise.then(function(e){return o.configurations=e.rows?e.rows:[],o.configurations.length&&o.getZohoConfiguration(0),i.variable.get({nolimit:!0,sort:"name"}).$promise}).then(function(e){o.variables=e.rows?e.rows:[],o.variablesById=_.keyBy(o.variables,"id")}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETCONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.getZohoConfiguration=function(e){o.zohoConfiguration=o.configurations[e],o.selectedZohoConfiguration=e,i.intZohoConfiguration.getSubjects({id:o.zohoConfiguration.id}).$promise.then(function(e){return o.subjects=e.rows?e.rows:[],i.intZohoConfiguration.getDescriptions({id:o.zohoConfiguration.id}).$promise}).then(function(e){return o.descriptions=e.rows?e.rows:[],i.intZohoConfiguration.getFields({id:o.zohoConfiguration.id}).$promise}).then(function(e){o.fields=e.rows?e.rows:[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETConfigurations",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.createOrEditZohoConfiguration=function(e,n){a.show({controller:"CreateOrEditZohoConfigurationDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoConfiguration:n,configurations:o.configurations,license:null,setting:null,crudPermissions:o.crudPermissions}}).finally(function(){o.getZohoConfiguration(0)})},o.deleteZohoConfiguration=function(e,n){var t=a.confirm().title("Are you sure want to delete the zohoConfiguration?").htmlContent("<b>"+(n.name||"zohoConfiguration")+"</b> will be deleted.").ariaLabel("delete zohoConfiguration").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){i.intZohoConfiguration.delete({id:n.id}).$promise.then(function(){_.remove(o.configurations,{id:n.id}),s.success({title:"ZohoConfiguration deleted!",msg:n.name?n.name+" has been deleted!":""})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETECONFIGURATION",msg:e.data?JSON.stringify(e.data):e.toString()})}).finally(function(){o.getZohoConfiguration(0)})},function(){console.log("CANCEL")})},o.selectChangedAdvanced=function(){i.intZohoConfiguration.update({id:o.zohoConfiguration.id},o.zohoConfiguration).$promise.then(function(){s.success({title:"Module updated!",msg:"Module has been updated!"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATECONFIGURATIONFIELD",msg:e.data?JSON.stringify(e.data):e.toString()})})},o.selectedSubjects=[],o.createOrEditSubject=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"subject",item:n,items:o.subjects,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteSubjectConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the subject?").htmlContent("<b>Subject</b> will be deleted.").ariaLabel("delete subject").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){r(n)},function(){console.log("CANCEL")})},o.deleteSelectedSubjects=function(e){var n=a.confirm().title("Are you sure want to delete the selected subjects?").htmlContent("<b>"+o.selectedSubjects.length+" selected</b> will be deleted.").ariaLabel("delete subjects").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedSubjects.forEach(function(e){r(e)}),o.selectedSubjects=[]})},o.selectedDescriptions=[],o.createOrEditDescription=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"description",item:n,items:o.descriptions,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteDescriptionConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the description?").htmlContent("<b>Description</b> will be deleted.").ariaLabel("delete description").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){l(n)},function(){console.log("CANCEL")})},o.deleteSelectedDescriptions=function(e){var n=a.confirm().title("Are you sure want to delete the selected descriptions?").htmlContent("<b>"+o.selectedDescriptions.length+" selected</b> will be deleted.").ariaLabel("delete descriptions").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedDescriptions.forEach(function(e){l(e)}),o.selectedDescriptions=[]})},o.selectedFields=[],o.createOrEditField=function(e,n){a.show({controller:"CreateOrEditZohoAccountItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{type:"field",item:n,items:o.fields,configuration:o.zohoConfiguration,account:o.zohoAccount,license:null,setting:null,crudPermissions:o.crudPermissions}})},o.deleteFieldConfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the field?").htmlContent("<b>Field</b> will be deleted.").ariaLabel("delete field").targetEvent(e).ok("OK").cancel("CANCEL");a.show(t).then(function(){d(n)},function(){console.log("CANCEL")})},o.deleteSelectedFields=function(e){var n=a.confirm().title("Are you sure want to delete the selected fields?").htmlContent("<b>"+o.selectedFields.length+" selected</b> will be deleted.").ariaLabel("delete fields").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){o.selectedFields.forEach(function(e){d(e)}),o.selectedFields=[]})}}e.$inject=["$mdDialog","$document","api","toasty","Auth"],angular.module("app.integrations").controller("ZohoAccountConfigurationsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="INTEGRATIONS.EDIT_ZOHOCONFIGURATION",g.zohoConfiguration=angular.copy(l),g.configurations=r,g.newZohoConfiguration=!1,g.zohoConfiguration||(g.zohoConfiguration={channel:"voice",type:"inbound"},g.title="INTEGRATIONS.NEW_ZOHOCONFIGURATION",g.newZohoConfiguration=!0),g.addNewZohoConfiguration=function(){g.errors=[],d.intZohoAccount.addConfiguration({id:n.params.id},g.zohoConfiguration).$promise.then(function(e){g.configurations.unshift(e.toJSON()),o.success({title:"ZohoConfiguration properly created",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveZohoConfiguration=function(){g.errors=[],d.intZohoConfiguration.update({id:g.zohoConfiguration.id},g.zohoConfiguration).$promise.then(function(e){var n=_.find(g.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"ZohoConfiguration properly saved!",msg:g.zohoConfiguration.name?g.zohoConfiguration.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteZohoConfiguration=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The zohoConfiguration will be deleted.").ariaLabel("Delete ZohoConfiguration").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.intZohoConfiguration.delete({id:g.zohoConfiguration.id}).$promise.then(function(){_.remove(g.configurations,{id:g.zohoConfiguration.id}),o.success({title:"ZohoConfiguration properly deleted!",msg:(g.zohoConfiguration.name||"zohoConfiguration")+" has been deleted!"}),v(g.zohoConfiguration)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.intZohoConfiguration.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.intZohoConfiguration.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","configurations","zohoConfiguration","api","Auth","license","setting","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoConfigurationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){a.hide()}p.currentUser=m.getCurrentUser(),p.errors=[],p.title="INTEGRATIONS.EDIT_"+_.toUpper(d),p.item=angular.copy(r),p.items=o,p.type=d,p.crudPermissions=u,p.newItem=!1,p.item||(p.item={type:"string"},p.item[_.capitalize(d)+"Id"]=s.id,p.title="INTEGRATIONS.NEW_"+_.toUpper(d),p.newItem=!0),p.addNewItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.save(p.item).$promise.then(function(e){p.items.unshift(e),i.success({title:_.capitalize(d)+" properly created",msg:_.capitalize(d)+" has been created!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.save"}]})},p.saveItem=function(){p.errors=[],p.customField&&(p.item.idField=p.customField.id,p.item.nameField=p.customField.name,p.item.customField=p.customField.custom);c.intZohoField.update({id:p.item.id},p.item).$promise.then(function(e){var n=_.find(p.items,{id:e.id});n&&_.merge(n,e),i.success({title:_.capitalize(d)+" properly saved!",msg:_.capitalize(d)+" has been saved!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.intItem.update"}]})},p.deleteItem=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The "+d+" will be deleted.").ariaLabel("Delete "+_.capitalize(d)).ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){c.intZohoField.delete({id:p.item.id}).$promise.then(function(){_.remove(p.items,{id:p.item.id}),i.success({title:_.capitalize(d)+" properly deleted!",msg:_.capitalize(d)+" has been deleted!"}),g()}).catch(function(e){console.error(e),p.errors=e.data.errors||[{message:e.toString(),type:"api.item.delete"}]})},function(){})},p.getSelectedVariable=function(){return void 0!==p.item.variableName?p.item.variableName:"Please select a variable"},p.closeDialog=g,c.variable.get({nolimit:!0}).$promise.then(function(e){return p.variables=e.rows?e.rows:[],c.voiceAgentReport.describe().$promise}).then(function(e){return p.voiceAgentReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceAgentReportColumns.push("recordingURL"),c.voiceDialReport.describe().$promise}).then(function(e){p.voiceDialReportColumns=_.difference(_.keys(e),["$promise","$resolved","createdAt","updatedAt","sourceid"]),p.voiceDialReportColumns.push("recordingURL")}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETVARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.intZohoAccount.getFields({id:l.id,ticketType:s.ticketType?s.ticketType:void 0}).$promise.then(function(e){p.accountConnected=!0,p.fields=e.rows?e.rows:[],p.item.idField&&(p.customField=_.find(p.fields,{id:p.item.idField}))}).catch(function(e){p.accountConnected=!1,console.error(e)})}e.$inject=["$scope","$state","$location","$mdDialog","toasty","configuration","items","item","account","type","api","Auth","crudPermissions"],angular.module("app.integrations").controller("CreateOrEditZohoAccountItemDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.zohoAccount=c||e.params.zohoAccount||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoZohoAccounts=function(){e.go("app.integrations.zohoAccounts",{},{reload:"app.integrations.zohoAccounts"})},u.saveZohoAccount=function(){r.intZohoAccount.update({id:u.zohoAccount.id},u.zohoAccount).$promise.then(function(){l.success({title:"ZohoAccount updated!",msg:u.zohoAccount.name?u.zohoAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETintZohoAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","zohoAccount","userProfileSection"],angular.module("app.integrations").controller("ZohoAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.zohoAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="zohoAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedZohoAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,host,zone,clientId,clientSecret,code,refreshToken,serverUrl,description",sort:"-updatedAt",limit:10,page:1},f.arrayhost=_.keyBy([{option:"zoho.com",value:"'zoho.com'"},{option:"zoho.eu",value:"'zoho.eu'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayzone=_.keyBy([{option:"US",value:"'US'"},{option:"AU",value:"'AU'"},{option:"EU",value:"'EU'"},{option:"IN",value:"'IN'"},{option:"CN",value:"'CN'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.integrations.zohoAccounts.edit",{id:e.id,zohoAccount:e,crudPermissions:f.crudPermissions})},f.testtestintegrationaccount=function(e,n){return m.intZohoAccount.getFields({id:e.id,test:!0}).$promise.then(function(){p.success({title:"ZohoAccount properly tested",msg:"Connection succeded!"})}).catch(function(e){p.error({title:"ZohoAccount properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("zohoAccount")+"?").htmlContent("<b>"+(e.name||"zohoAccount")+"</b> will be deleted.").ariaLabel("delete zohoAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getZohoAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.intZohoAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ZohoAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditZohoAccount=function(e,n){i.show({controller:"CreateOrEditZohoAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/integrations/views/zohoAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{zohoAccount:n,zohoAccounts:f.zohoAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteZohoAccount=y,f.exportSelectedZohoAccounts=function(){var e=angular.copy(f.selectedZohoAccounts);return f.selectedZohoAccounts=[],e},f.deleteSelectedZohoAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected zohoAccounts?").htmlContent("<b>"+f.selectedZohoAccounts.length+" selected</b> will be deleted.").ariaLabel("delete ZohoAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedZohoAccounts.forEach(function(e){y(e)}),f.selectedZohoAccounts=[]})},f.deselectZohoAccounts=function(){f.selectedZohoAccounts=[]},f.selectAllZohoAccounts=function(){f.selectedZohoAccounts=f.zohoAccounts.rows};var b=!0,A=1;function E(e){f.zohoAccounts=e||{count:0,rows:[]}}function y(e){m.intZohoAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.zohoAccounts.rows,{id:e.id}),f.zohoAccounts.count-=1,f.zohoAccounts.rows.length||f.getZohoAccounts(),p.success({title:_.startCase("ZohoAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintZohoAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEintZohoAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getZohoAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","zohoAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.integrations").controller("ZohoAccountsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="JSCRIPTY.EDIT_PROJECT",g.project=angular.copy(l),g.projects=r,g.newProject=!1,g.project||(g.project={enableUncompleteSave:!0,sendUnpauseOnSubmit:!0},g.title="JSCRIPTY.NEW_PROJECT",g.newProject=!0),g.addNewProject=function(){g.errors=[],d.jscriptyProject.save(g.project).$promise.then(function(e){g.projects.unshift(e.toJSON()),o.success({title:"Project properly created",msg:g.project.name?g.project.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveProject=function(){g.errors=[],d.jscriptyProject.update({id:g.project.id},g.project).$promise.then(function(e){var n=_.find(g.projects,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Project properly saved!",msg:g.project.name?g.project.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteProject=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The project will be deleted.").ariaLabel("Delete Project").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.jscriptyProject.delete({id:g.project.id}).$promise.then(function(){_.remove(g.projects,{id:g.project.id}),o.success({title:"Project properly deleted!",msg:(g.project.name||"project")+" has been deleted!"}),v(g.project)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","projects","project","api","Auth","license","setting","crudPermissions"],angular.module("app.jscripty").controller("CreateOrEditProjectDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o){var r=this;r.currentUser=i.getCurrentUser(),r.project={},r.localizationMap=o;var l=new Date;r.pickerModel={dateStart:new Date(l.getFullYear(),l.getMonth(),1),dateEnd:new Date(l.getFullYear(),l.getMonth()+1,0),selectedTemplate:"TM"},r.init=function(e,n){r.project=e,r.userProfile=n,r.getAnswers()},r.getSummary=function(){return a.jscriptyProject.getSummary({id:r.project.id,startTime:{$gte:r.pickerModel.dateStart,$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").format()},nolimit:!0}).$promise.then(function(e){if(void 0!==e.length){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","jscriptyProjectSummary_"+r.project.id+".csv"),a.click()}else s.info({title:"EXPORT",msg:"No answers available"})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.getSummary",msg:e.data?JSON.stringify(e.data):e.toString()})})},r.getAnswers=function(){return r.hasIdAnswers=!1,a.jscriptyProject.getAnswers({id:r.project.id,sort:"-createdAt,questionId",createdAt:{$gte:moment(r.pickerModel.dateStart).add(0,"hours").add(0,"minutes").add(0,"seconds").utcOffset(0,!0).format(),$lte:moment(r.pickerModel.dateEnd).add(23,"hours").add(59,"minutes").add(59,"seconds").utcOffset(0,!0).format()},nolimit:!0}).$promise.then(function(e){if(e&&e.rows&&e.hasOwnProperty("count")){r.answers={};for(var n=0,t=e.count;n<t;n++)e.rows[n].questionId&&(r.hasIdAnswers=!0,r.answers.hasOwnProperty(e.rows[n].questionId)||(r.answers[e.rows[n].questionId]={question:e.rows[n].question,answers:{},sum:0}),""===e.rows[n].answer&&(e.rows[n].answer="NO_ANSWER"),r.answers[e.rows[n].questionId].answers[e.rows[n].answer]?r.answers[e.rows[n].questionId].answers[e.rows[n].answer]+=1:r.answers[e.rows[n].questionId].answers[e.rows[n].answer]=1,r.answers[e.rows[n].questionId].sum+=1)}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETANSWERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$mdDialog","$document","$window","api","Auth","toasty","dateFilterLocalizationFactory"],angular.module("app.jscripty").controller("ProjectAnswersController",e)}(),function(){"use strict";angular.module("app.jscripty").controller("ProjectBuilderController",function(){var n=this;n.project={},n.optionsBuilder={questionTypes:["text","textarea","radio","checkbox","select","number","date","time","email","range","url"],elementTypes:["question","paragraph"]},n.init=function(e){n.project=e,_.isObjectLike(e.formData)?n.project.formData=e.formData:n.isJsonString(e.formData)?n.project.formData=JSON.parse(e.formData):n.project.formData={}},n.isJsonString=function(e){if(_.isNil(e))return!1;try{JSON.parse(e)}catch(e){return!1}return!0}})}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newProject=!0,r.project=angular.copy(i),r.projects=s,r.title=o.instant("JSCRIPTY.CLONE_PROJECT"),i&&i.name&&(r.title+=": "+i.name),r.cloneProject=function(){return e.jscriptyProject.clone({id:i.id},r.project).$promise.then(function(e){r.projects.unshift(e.toJSON()),a.success({title:"Project properly cloned",msg:r.project.name?r.project.name+" has been cloned!":""}),t.go("app.jscripty.projects.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.jscriptyProject.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.jscriptyProject.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","project","projects","$translate"],angular.module("app.jscripty").controller("ProjectcloneController",e)}(),function(){"use strict";function e(a,i,n){var o=this;o.project={},o.responseData={},o.formViewer={},o.init=function(e){o.project=e,n.$on("mwForm.pageEvents.pageCurrentChanged",function(e,n){if(n.currentPage&&o.project.formData&&o.project.formData.pages)for(var t=0,a=o.project.formData.pages.length;t<a;t++)if(n.currentPage.number<t+1&&o.project.formData.pages[t].elements)for(var i=0,s=o.project.formData.pages[t].elements.length;i<s;i++)"question"===o.project.formData.pages[t].elements[i].type&&o.project.formData.pages[t].elements[i].question&&delete o.responseData[o.project.formData.pages[t].elements[i].question.id]})},o.onSubmit=function(e){var n=a.defer(),t=i.confirm().title("Would you like to save your survey?").textContent("").ariaLabel("survey").targetEvent(e).ok("SAVE").cancel("CANCEL");return i.show(t).then(function(){n.resolve(!0)},function(){n.reject()}),n.promise},o.resetViewer=function(){o.formViewer.reset&&o.formViewer.reset()}}e.$inject=["$q","$mdDialog","$scope"],angular.module("app.jscripty").controller("ProjectViewerController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.projectSessions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.jscriptyProject.getSessions(m.query,u).$promise}function g(e){d.jscriptySessionReport.delete({id:e.id}).$promise.then(function(){_.remove(m.projectSessions.rows,{id:e.id}),m.projectSessions.count-=1,m.projectSessions.rows.length||p(),l.success({title:"Session deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.project={},m.projectSessions={count:0,rows:[]},m.selectedProjectSessions=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,starttime,endtime,membername,calleridnum,completed",sort:"-starttime",limit:10,page:1},m.init=function(e,n,t){m.project=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.id=m.project.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the session?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("session #")+e.id||"session")+"</b> will be deleted.").ariaLabel("delete session").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getProjectSessions=p,m.createOrEditProjectSession=function(e,n){o.show({controller:"CreateOrEditSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:m.project,session:n,sessions:m.projectSessions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.showQuestionsProjectSession=function(e,t){o.show({controller:"ShowQuestionsSessionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,resolve:{questions:["apiResolver","$stateParams",function(e,n){return e.resolve("jscriptySessionReport@getQuestions",{fields:"question,answer",sort:"id",id:t.id})}]},locals:{project:m.project,session:t}})},m.exportSelectedProjectSessions=function(){var e=angular.copy(m.selectedProjectSessions);return m.selectedProjectSessions=[],e},m.deleteProjectSession=g,m.deleteSelectedProjectSessions=function(e){var n=o.confirm().title("Are you sure want to delete the selected sessions?").htmlContent("<b>"+m.selectedProjectSessions.length+" selected</b> will be deleted.").ariaLabel("delete sessions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedProjectSessions.forEach(function(e){g(e)}),m.selectedProjectSessions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.jscripty").controller("ProjectSessionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){this.title="JSCRIPTY.SESSION_RESULTS",this.session=s,this.questions=o,this.project=r,this.closeDialog=function(e){a.hide(e)}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","session","questions","project","api"],angular.module("app.jscripty").controller("ShowQuestionsSessionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.project=c||e.params.project||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.clonedialog=function(e,n){t.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:p.projects?p.projects.rows:[],crudPermissions:p.crudPermissions}})},p.alert=l.info,p.gotoProjects=function(){e.go("app.jscripty.projects",{},{reload:"app.jscripty.projects"})},p.saveProject=function(){r.jscriptyProject.update({id:p.project.id},p.project).$promise.then(function(){l.success({title:"Project updated!",msg:p.project.name?p.project.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETjscriptyProject",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","project","userProfile","userProfileSection"],angular.module("app.jscripty").controller("JscriptyProjectController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.projects=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="projects",f.listOrder="",f.listOrderAsc=null,f.selectedProjects=[],f.query={fields:"createdAt,updatedAt,id,name,enableUncompleteSave,sendUnpauseOnSubmit,description,formData",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,project:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"ProjectcloneController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{project:e,projects:f.projects?f.projects.rows:[],crudPermissions:f.crudPermissions}})},f.sessionsgoto=function(e,n){t.go("app.jscripty.projects.edit",{id:e.id,tab:3})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("project")+"?").htmlContent("<b>"+(e.name||"project")+"</b> will be deleted.").ariaLabel("delete project").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getProjects=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.jscriptyProject.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Projects",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditProject=function(e,n){i.show({controller:"CreateOrEditProjectDialogController",controllerAs:"vm",templateUrl:"app/main/apps/jscripty/views/projects/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{project:n,projects:f.projects.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteProject=y,f.exportSelectedProjects=function(){var e=angular.copy(f.selectedProjects);return f.selectedProjects=[],e},f.deleteSelectedProjects=function(e){var n=i.confirm().title("Are you sure want to delete the selected projects?").htmlContent("<b>"+f.selectedProjects.length+" selected</b> will be deleted.").ariaLabel("delete Projects").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedProjects.forEach(function(e){y(e)}),f.selectedProjects=[]})},f.deselectProjects=function(){f.selectedProjects=[]},f.selectAllProjects=function(){f.selectedProjects=f.projects.rows};var b=!0,A=1;function E(e){f.projects=e||{count:0,rows:[]}}function y(e){m.jscriptyProject.delete({id:e.id}).$promise.then(function(){_.remove(f.projects.rows,{id:e.id}),f.projects.count-=1,f.projects.rows.length||f.getProjects(),p.success({title:_.startCase("Project")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEjscriptyProject"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEjscriptyProject",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getProjects())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","projects","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.jscripty").controller("JscriptyProjectsController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.mailAccount.update({id:g.mailAccount.id},g.mailAccount).$promise.then(function(e){var n=_.find(g.mailAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),v(g.mailAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.lists=e.rows}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],angular.module("app.mail").controller("CreateOrEditMailAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccountApp:t,mailAccount:r.mailAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.mailAccountApps.rows[n]=e:r.mailAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.mailAccountApps.rows.length;t++,0){var a=r.mailAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.mailAccount.context,a.exten=r.mailAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.mailAccount.addApplications({id:r.mailAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.mailAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.mailAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.mailAccount={},r.mailAccountApps={count:0,rows:[]},r.selectedMailAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"MailQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"mailQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:601}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Reply_Type",name:"replyType",type:"select",defaultValue:"1",values:[{option:"Reply",value:"0"},{option:"Reply All",value:"1"}],required:!0,param:1},{title:"Text",name:"text",type:"html",required:!0,param:2}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.mailAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getMailAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.mailAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getMailAccountApps=function(){r.promise=o.mailAccount.getApplications(r.query,t).$promise},r.editMailAccountApp=n,r.editInterval=function(e,n){if(r.mailAccountApps.rows.length){var t=r.mailAccountApps.rows[n]?r.mailAccountApps.rows[n]:r.mailAccountApps.rows[0];i.show({controller:"EditMailAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteMailAccountApp=function(e){_.remove(r.mailAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedMailAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedMailAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedMailAccountApps.forEach(function(e){_.remove(r.mailAccountApps.rows,{id:e.id})}),r.selectedMailAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.mail").controller("MailAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailAccount.getAgents({id:c.mailAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailAccount?"penalty "+e.UserMailAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.removeAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailAccount.addAgents({id:c.mailAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailAccount","mailAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.agent.text=d.slice(2,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.autoreply.text=d.slice(2,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.replyType=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.autoreply.text=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.autoreply.times=1,l.autoreply.replyType=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.replyType,e[2]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.close.text=d.slice(2,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotoif.text=d.slice(2,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.gotop.text=d.slice(2,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditMailAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.noop.text=d.slice(2,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.queue.text=d.slice(2,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("mail")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.mailQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:601}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.system.text=d.slice(2,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="MAIL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.replyType=isNaN(d[1])?d[1]:parseInt(d[1],10),l.tag.text=d.slice(2,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveMailAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","mailAccountApp","mailAccount","api","Auth","crudPermissions"],angular.module("app.mail").controller("EditMailAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,(void 0===m.query.closed||null===m.query.closed||m.query.closed)&&delete m.query.substatus,m.promise=d.mailInteraction.get(m.query,p).$promise}function v(e){d.mailInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountInteractions.rows,{id:e.id}),m.mailAccountInteractions.count-=1,m.mailAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){_.isEmpty(e.to)||_.includes(e.to,m.mailAccount.email)?e.contactInfo=e.Contact?e.Contact.email:void 0:(e.contactName=e.to.split(" <")[0],e.contactInfo=e.to.split("<").pop().split(">")[0]),"Unknown"===e.contactName&&(e.contactName=i.instant("MAIL.UNKNOWN"))}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountInteractions={count:0,rows:[]},m.selectedMailAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"plainBody",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Substatus",column:"substatus",type:"multiselect",options:{field:"name",route:{model:"mailSubstatus",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise.then(function(e){m.subStatuses=e||{count:0,rows:[]}})}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Substatus",key:"substatus",type:"select",label:"DASHBOARDS.SELECT_SUBSTATUS",options:m.subStatuses.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NONE"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name",ngIf:"closed === 0"},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.mailInteractionDownload=function(s,e,n){return d.mailInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="mail-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getMailAccountInteractions=g,m.createOrEditMailAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,interaction:n,interactions:m.mailAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spymailInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"mail",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"mail.mailAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||MailAccountId:=$eq["+m.mailAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedMailAccountInteractions=function(){var e=angular.copy(m.selectedMailAccountInteractions);return m.selectedMailAccountInteractions=[],e},m.deleteMailAccountInteraction=v,m.deleteSelectedMailAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedMailAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountInteractions.forEach(function(e){v(e)}),m.selectedMailAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.mailAccountMailCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.mailAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.mailAccountMailCannedAnswers.rows,{id:e.id}),m.mailAccountMailCannedAnswers.count-=1,m.mailAccountMailCannedAnswers.rows.length||p(),l.success({title:"MailCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETmailAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.mailAccount={},m.mailAccountMailCannedAnswers={count:0,rows:[]},m.selectedMailAccountMailCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.mailAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mailCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mailCannedAnswer #")+e.id||"mailCannedAnswer")+"</b> will be deleted.").ariaLabel("delete mailCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getMailAccountMailCannedAnswers=p,m.createOrEditMailAccountMailCannedAnswer=function(e,n){o.show({controller:"CreateOrEditMailCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:m.mailAccount,mailCannedAnswer:n,mailCannedAnswers:m.mailAccountMailCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMailAccountMailCannedAnswers=function(){var e=angular.copy(m.selectedMailAccountMailCannedAnswers);return m.selectedMailAccountMailCannedAnswers=[],e},m.deleteMailAccountMailCannedAnswer=g,m.deleteSelectedMailAccountMailCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected mailCannedAnswers?").htmlContent("<b>"+m.selectedMailAccountMailCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete mailCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMailAccountMailCannedAnswers.forEach(function(e){g(e)}),m.selectedMailAccountMailCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.mail").controller("MailAccountMailCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILCANNEDANSWER",g.mailCannedAnswer=angular.copy(l),g.mailCannedAnswers=r,g.newMailCannedAnswer=!1,g.mailCannedAnswer||(g.mailCannedAnswer={},g.title="MAIL.NEW_MAILCANNEDANSWER",g.newMailCannedAnswer=!0),n.params.id&&(g.mailCannedAnswer.MailAccountId=n.params.id),g.addNewMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.mailCannedAnswer).$promise.then(function(e){g.mailCannedAnswers.unshift(e.toJSON()),o.success({title:"MailCannedAnswer properly created",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.mailCannedAnswer.id},g.mailCannedAnswer).$promise.then(function(e){var n=_.find(g.mailCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailCannedAnswer properly saved!",msg:g.mailCannedAnswer.name?g.mailCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailCannedAnswer will be deleted.").ariaLabel("Delete MailCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.mailCannedAnswer.id}).$promise.then(function(){_.remove(g.mailCannedAnswers,{id:g.mailCannedAnswer.id}),o.success({title:"MailCannedAnswer properly deleted!",msg:(g.mailCannedAnswer.name||"mailCannedAnswer")+" has been deleted!"}),v(g.mailCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailCannedAnswers","mailCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.mailAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.mailAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.MailAccountId=m.mailAccount.id,m.query.id=m.mailAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.mailAccount.id,field:"MailAccountId",route:"mailAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.mail").controller("MailAccountDispositionsController",e)}(),function(){"use strict";function e(t,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},f.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.lists=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=e.rows}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailAccount"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,Imap.service,Imap.host,Imap.port,Imap.tls,Imap.authentication,Imap.user,Imap.password,Imap.mailbox,Imap.connTimeout,Imap.authTimeout,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,cauthentication,cuser,cpassword,fontFamily,fontSize,template,markAsUnread,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=function(e,n){a.show({controller:"MailAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailAccount:e,mailAccounts:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","mailAccounts","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="MAIL.EDIT_MAILQUEUE",r.mailQueue=angular.copy(n),r.mailQueues=e,r.newMailQueue=!1,r.mailQueue||(r.mailQueue={strategy:"beepall",timeout:10},r.title="MAIL.NEW_MAILQUEUE",r.newMailQueue=!0),r.addNewMailQueue=function(){r.errors=[],i.mailQueue.save(r.mailQueue).$promise.then(function(e){r.mailQueues.unshift(e.toJSON()),a.success({title:"MailQueue properly created",msg:r.mailQueue.name?r.mailQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveMailQueue=function(){r.errors=[],i.mailQueue.update({id:r.mailQueue.id},r.mailQueue).$promise.then(function(e){var n=_.find(r.mailQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"MailQueue properly saved!",msg:r.mailQueue.name?r.mailQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteMailQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The mailQueue will be deleted.").ariaLabel("Delete MailQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.mailQueue.delete({id:r.mailQueue.id}).$promise.then(function(){_.remove(r.mailQueues,{id:r.mailQueue.id}),a.success({title:"MailQueue properly deleted!",msg:(r.mailQueue.name||"mailQueue")+" has been deleted!"}),l(r.mailQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.mailQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","mailQueues","mailQueue","api","Auth","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getAgents({id:c.mailQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserMailQueue?"penalty "+e.UserMailQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.mailQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addAgents({id:c.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("MAIL.ALL_AGENTS"),labelSelected:r.instant("MAIL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","mailQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.mailQueue.getTeams({id:l.mailQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.mailQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MAIL.ALL_TEAMS"),labelSelected:t.instant("MAIL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.removeTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.mailQueue.addTeams({id:l.mailQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","mailQueue","$translate","Auth","crudPermissions"],angular.module("app.mail").controller("MailQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.mailQueue=c||e.params.mailQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:u.mailQueues?u.mailQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoMailQueues=function(){e.go("app.mail.mailQueues",{},{reload:"app.mail.mailQueues"})},u.saveMailQueue=function(){r.mailQueue.update({id:u.mailQueue.id},u.mailQueue).$promise.then(function(){l.success({title:"MailQueue updated!",msg:u.mailQueue.name?u.mailQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","mailQueue","userProfileSection"],angular.module("app.mail").controller("MailQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailQueues",f.listOrder="",f.listOrderAsc=null,f.selectedMailQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"mail",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.mail.mailQueues.edit",{id:e.id,mailQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"MailQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"MailQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailQueue:e,mailQueues:f.mailQueues?f.mailQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailQueue")+"?").htmlContent("<b>"+(e.name||"mailQueue")+"</b> will be deleted.").ariaLabel("delete mailQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.mail.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.mail.realtime.queues",{})}},f.success=E,f.getMailQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailQueue=function(e,n){i.show({controller:"CreateOrEditMailQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailQueue:n,mailQueues:f.mailQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteMailQueue=y,f.exportSelectedMailQueues=function(){var e=angular.copy(f.selectedMailQueues);return f.selectedMailQueues=[],e},f.deleteSelectedMailQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailQueues?").htmlContent("<b>"+f.selectedMailQueues.length+" selected</b> will be deleted.").ariaLabel("delete MailQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailQueues.forEach(function(e){y(e)}),f.selectedMailQueues=[]})},f.deselectMailQueues=function(){f.selectedMailQueues=[]},f.selectAllMailQueues=function(){f.selectedMailQueues=f.mailQueues.rows};var b=!0,A=1;function E(e){f.mailQueues=e||{count:0,rows:[]}}function y(e){m.mailQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.mailQueues.rows,{id:e.id}),f.mailQueues.count-=1,f.mailQueues.rows.length||f.getMailQueues(),p.success({title:_.startCase("MailQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MAIL.EDIT_MAILSUBSTATUS",g.mailSubstatus=angular.copy(l),g.mailSubtatuses=r,g.newMailSubstatus=!1,g.mailSubstatus||(g.mailSubstatus={},g.title="MAIL.NEW_MAILSUBSTATUS",g.newMailSubstatus=!0),g.addNewMailSubstatus=function(){g.errors=[],d.mailSubstatus.save(g.mailSubstatus).$promise.then(function(e){g.mailSubtatuses.unshift(e.toJSON()),o.success({title:"MailSubstatus properly created",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailSubstatus=function(){g.errors=[],d.mailSubstatus.update({id:g.mailSubstatus.id},g.mailSubstatus).$promise.then(function(e){var n=_.find(g.mailSubtatuses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MailSubstatus properly saved!",msg:g.mailSubstatus.name?g.mailSubstatus.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailSubstatus=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mailSubstatus will be deleted.").ariaLabel("Delete MailSubstatus").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.mailSubstatus.delete({id:g.mailSubstatus.id}).$promise.then(function(){_.remove(g.mailSubtatuses,{id:g.mailSubstatus.id}),o.success({title:"MailSubstatus properly deleted!",msg:(g.mailSubstatus.name||"mailSubstatus")+" has been deleted!"}),v(g.mailSubstatus)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.mailSubstatus.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.mailSubstatus.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mailSubtatuses","mailSubstatus","api","Auth","license","setting","crudPermissions"],angular.module("app.mail").controller("CreateOrEditMailSubstatusDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.mailSubtatuses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="mailSubtatuses",f.listOrder="",f.listOrderAsc=null,f.selectedMailSubstatuses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{mailSubstatus:e,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("mailSubstatus")+"?").htmlContent("<b>"+(e.name||"mailSubstatus")+"</b> will be deleted.").ariaLabel("delete mailSubstatus").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMailSubstatuses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.mailSubstatus.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MailSubstatuses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMailSubstatus=function(e,n){i.show({controller:"CreateOrEditMailSubstatusDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailSubtatuses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailSubstatus:n,mailSubtatuses:f.mailSubtatuses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMailSubstatus=y,f.exportSelectedMailSubstatuses=function(){var e=angular.copy(f.selectedMailSubstatuses);return f.selectedMailSubstatuses=[],e},f.deleteSelectedMailSubstatuses=function(e){var n=i.confirm().title("Are you sure want to delete the selected mailSubtatuses?").htmlContent("<b>"+f.selectedMailSubstatuses.length+" selected</b> will be deleted.").ariaLabel("delete MailSubstatuss").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMailSubstatuses.forEach(function(e){y(e)}),f.selectedMailSubstatuses=[]})},f.deselectMailSubstatuses=function(){f.selectedMailSubstatuses=[]},f.selectAllMailSubstatuses=function(){f.selectedMailSubstatuses=f.mailSubtatuses.rows};var b=!0,A=1;function E(e){f.mailSubtatuses=e||{count:0,rows:[]}}function y(e){m.mailSubstatus.delete({id:e.id}).$promise.then(function(){_.remove(f.mailSubtatuses.rows,{id:e.id}),f.mailSubtatuses.count-=1,f.mailSubtatuses.rows.length||f.getMailSubstatuses(),p.success({title:_.startCase("MailSubstatus")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEmailSubstatus"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEmailSubstatus",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMailSubstatuses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","mailSubtatuses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.mail").controller("MailSubstatusesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u){var p=this;function g(){_.forIn(p.mailAccounts,function(e,n){p.rpcMailAccounts[n]&&_.merge(e,p.rpcMailAccounts[n])}),_.forIn(p.mailAccounts,function(n,e){var t={id:e,sort:"-id",direction:"in",limit:1,offset:0,$gte:"createdAt,"+moment().startOf("day").format("YYYY-MM-DD HH:mm:ss"),fields:"id,createdAt"};s.mailAccount.getMessages(t).$promise.then(function(e){return e&&(n.in=e.count||0,n.lastIn=e.rows&&e.rows.length?e.rows[0].createdAt:void 0),t.direction="out",s.mailAccount.getMessages(t).$promise}).then(function(e){e&&(n.out=e.count||0,n.lastOut=e.rows&&e.rows.length?e.rows[0].createdAt:void 0)}).catch(function(e){console.log(e)})})}p.currentUser=u.getCurrentUser(),p.count=l&&l.count?l.count:0,p.mailAccounts=l?_.keyBy(l.rows?l.rows:[],"id"):{},p.rpcMailAccounts=d?_.keyBy(d.rows?d.rows:[],"id"):{},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.query={sort:"-name",limit:10,page:1},p.success=f,p.$onInit=g,p.getMailAccounts=function(){p.query.offset=(p.query.page-1)*p.query.limit,u.hasRole("admin")?p.promise=s.mailAccount.get(p.query,f).$promise:(p.query.id=p.userProfile.id,p.query.section="MailAccounts",p.promise=s.userProfile.getResources(p.query,f).$promise)},p.onSave=function(e){p.mailAccounts[e.id]&&_.merge(p.mailAccounts[e.id],e)},p.onMailMessageSave=function(e){p.mailAccounts[e.MailAccountId]&&("in"==e.direction?(p.mailAccounts[e.MailAccountId].in+=1,p.mailAccounts[e.MailAccountId].lastIn=e.createdAt):(p.mailAccounts[e.MailAccountId].out+=1,p.mailAccounts[e.MailAccountId].lastOut=e.createdAt))},p.goToMailAccount=function(e,n){i.go("app.mail.mailAccounts.edit",{id:n.id,mailAccount:n})},p.verifySmtp=function(e,n){{if(n&&n.id)return s.mailAccount.verifySmtp({id:n.id}).$promise.then(function(){r.success({title:"Smtp properly verified",msg:"Connection succeded!"})}).catch(function(e){r.error({title:"Smtp properly verified",msg:e.data?JSON.stringify(e.data):e.toString()})});r.error({title:"Smtp properly verified",msg:"Smpt id unknown"})}},p.order=[],_.forIn(p.mailAccounts,function(e,n){p.order.push(e.id)}),o.on("mailAccount:save",p.onSave),o.on("mailAccount:update",p.onSave),o.on("mailMessage:save",p.onMailMessageSave);var v=!0,h=1;function f(e){if(p.mailAccounts=e?_.keyBy(e.rows?e.rows:[],"id"):{},e.rows){p.order=[];for(var n=0;n<e.rows.length;n++)p.order.push(e.rows[n].id)}g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=h),p.getMailAccounts())}),e.$on("$destroy",function(){o.removeAllListeners("mailAccount:save"),o.removeAllListeners("mailAccount:update"),o.removeAllListeners("mailMessage:save")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$state","api","socket","toasty","mailAccounts","rpcMailAccounts","userProfile","userProfileSection","Auth"],angular.module("app.mail").controller("MailAccountsRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.mail.realtime.agents":this.selectedTab=0;break;case"app.mail.realtime.queues":this.selectedTab=1;break;case"app.mail.realtime.accounts":this.selectedTab=2;break;default:this.selectedTab=0,t.go("app.mail.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.mail.realtime.agents");break;case 1:t.go("app.mail.realtime.queues");break;case 2:t.go("app.mail.realtime.accounts");break;default:t.go("app.mail.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.mail").controller("MailRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MARKETPLACE.EDIT_PLUGIN",g.plugin=angular.copy(l),g.plugins=r,g.newPlugin=!1,g.plugin||(g.plugin={},g.title="MARKETPLACE.NEW_PLUGIN",g.newPlugin=!0),g.addNewPlugin=function(){g.errors=[],d.plugin.save(g.plugin).$promise.then(function(e){g.plugins.unshift(e.toJSON()),o.success({title:"Plugin properly created",msg:g.plugin.name?g.plugin.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePlugin=function(){g.errors=[],d.plugin.update({id:g.plugin.id},g.plugin).$promise.then(function(e){var n=_.find(g.plugins,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Plugin properly saved!",msg:g.plugin.name?g.plugin.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePlugin=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The plugin will be deleted.").ariaLabel("Delete Plugin").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.plugin.delete({id:g.plugin.id}).$promise.then(function(){_.remove(g.plugins,{id:g.plugin.id}),o.success({title:"Plugin properly deleted!",msg:(g.plugin.name||"plugin")+" has been deleted!"}),v(g.plugin)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","plugins","plugin","api","Auth","license","setting","crudPermissions"],angular.module("app.marketplace").controller("CreateOrEditPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.plugin=c||e.params.plugin||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoPlugins=function(){e.go("app.marketplace.plugins",{},{reload:"app.marketplace.plugins"})},u.savePlugin=function(){r.plugin.update({id:u.plugin.id},u.plugin).$promise.then(function(){l.success({title:"Plugin updated!",msg:u.plugin.name?u.plugin.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETplugin",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","plugin","userProfileSection"],angular.module("app.marketplace").controller("MarketplacePluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.plugins=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="plugins",f.listOrder="",f.listOrderAsc=null,f.selectedPlugins=[],f.query={fields:"createdAt,updatedAt,id,name,type,active,description,icon,sidebar,path,adminUrl,agentUrl,scriptName,scriptPath,version",sort:"-updatedAt",limit:10,page:1},f.installing=!1,f.arraysidebar=_.keyBy([{option:"Always",value:"'always'"},{option:"Admin Only",value:"'adminOnly'"},{option:"Agent Only",value:"'agentOnly'"},{option:"Never",value:"'never'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.installplugin=function(e){{if("script"!==e.type)return e.active=!0,m.plugin.update({id:e.id},e).$promise.then(function(){p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});f.installing=!0,m.pm2.save({name:e.scriptName,script:e.path+"/"+e.scriptPath}).$promise.then(function(){return e.active=!0,m.plugin.update({id:e.id},e).$promise}).then(function(){f.installing=!1,p.success({title:"Plugin installed!",msg:e.name?e.name+" has been installed!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.save"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.save",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}},f.editstate=function(e,n){t.go("app.marketplace.plugins.edit",{id:e.id,plugin:e,crudPermissions:f.crudPermissions})},f.stopplugin=function(e,n){var t=i.confirm().title("Are you sure want to stop the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be stoppped.").ariaLabel("stop plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"stopped"}).$promise.then(function(){p.success({title:"Process stopped!",msg:"Attached pm2 process successfully stopped"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.restartplugin=function(e,n){var t=i.confirm().title("Are you sure want to restart the plugin attached process?").htmlContent("<b>"+(e.name||"plugin")+"</b> attached process will be restarted.").ariaLabel("restart plugin process").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){var t;t=e,m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.update({id:n.pm_id,status:"online"}).$promise.then(function(){p.success({title:"Process restarted!",msg:"Attached pm2 process successfully restarted"})})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.pm2.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){console.log("CANCEL")})},f.downloadfile2=function(s,e){return m.plugin.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.name.replace(" ","_").toLowerCase()+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.uninstallplugin=function(e,n){var t=i.confirm().title("Are you sure want to uninstall the plugin?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be uninstalled.").ariaLabel("uninstall plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){!function(t){"script"===t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)throw new Error("Failed to retrieve pm2 processes");var n=_.find(e.rows,{name:t.scriptName});if(!n)throw new Error("No corresponding process found");m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pm2.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});t.active=!1,m.plugin.update({id:t.id},t).$promise.then(function(){p.success({title:"Plugin uninstalled!",msg:t.name?t.name+" has been uninstalled!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"api.plugin.update"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.plugin.update",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}(e)},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("plugin")+"?").htmlContent("<b>"+(e.name||"plugin")+"</b> will be deleted.").ariaLabel("delete plugin").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPlugins=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.plugin.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Plugins",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPlugin=function(e,n){i.show({controller:"CreateOrEditPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugin:n,plugins:f.plugins.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePlugin=y,f.exportSelectedPlugins=function(){var e=angular.copy(f.selectedPlugins);return f.selectedPlugins=[],e},f.deleteSelectedPlugins=function(e){var n=i.confirm().title("Are you sure want to delete the selected plugins?").htmlContent("<b>"+f.selectedPlugins.length+" selected</b> will be deleted.").ariaLabel("delete Plugins").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPlugins.forEach(function(e){y(e)}),f.selectedPlugins=[]})},f.deselectPlugins=function(){f.selectedPlugins=[]},f.selectAllPlugins=function(){f.selectedPlugins=f.plugins.rows},f.uploadPlugin=function(e){i.show({controller:"UploadPluginDialogController",controllerAs:"vm",templateUrl:"app/main/apps/marketplace/views/plugins/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{plugins:f.plugins.rows}})};var b=!0,A=1;function E(e){f.plugins=e||{count:0,rows:[]}}function y(t){t.active&&"script"==t.type&&m.pm2.get().$promise.then(function(e){if(!e||!e.rows)return p.error({title:"Plugin not deleted!",msg:"Failed to retrieve pm2 processes"});var n=_.find(e.rows,{name:t.scriptName});n?m.pm2.delete({id:n.pm_id,name:t.scriptName}).$promise:console.log("No '%s' process found",t.scriptName)}).catch(function(e){return p.error({title:"PM2 process not found!",msg:"Failed to delete the attached pm2 process"})}),m.plugin.delete({id:t.id}).$promise.then(function(){_.remove(f.plugins.rows,{id:t.id}),f.plugins.count-=1,f.plugins.rows.length||f.getPlugins(),p.success({title:_.startCase("Plugin")+" deleted!",msg:t.name?t.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEplugin"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEplugin",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPlugins())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","plugins","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.marketplace").controller("MarketplacePluginsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=4,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="MARKETPLACE.UPLOAD_PLUGIN",o.plugins=a,o.uploadPlugins=[],o.uploadState="none",o.plugin={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/plugins"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["zip"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.plugin={id:e.uniqueIdentifier,file:e},o.uploadPlugins.unshift(o.plugin),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.plugins.unshift(JSON.parse(e)),angular.forEach(o.uploadPlugins,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the plugin"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.plugin.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","plugins","api","Auth"],angular.module("app.marketplace").controller("UploadPluginDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},v.deleteHopper=function(e){v.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_IVRCAMPAIGN",g.ivrCampaign=angular.copy(l),g.ivrCampaigns=r,g.newIvrCampaign=!1,g.ivrCampaign||(g.ivrCampaign={active:!0,type:"ivr",dialCheckDuplicateType:"always",dialCutDigit:0,limitCalls:30,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3},g.title="MOTIONDIALER.NEW_IVRCAMPAIGN",g.newIvrCampaign=!0),g.addNewIvrCampaign=function(){g.errors=[],d.campaign.save(g.ivrCampaign).$promise.then(function(e){g.ivrCampaigns.unshift(e.toJSON()),o.success({title:"IvrCampaign properly created",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveIvrCampaign=function(){g.errors=[],d.campaign.update({id:g.ivrCampaign.id},g.ivrCampaign).$promise.then(function(e){var n=_.find(g.ivrCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"IvrCampaign properly saved!",msg:g.ivrCampaign.name?g.ivrCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteIvrCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The ivrCampaign will be deleted.").ariaLabel("Delete IvrCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.campaign.delete({id:g.ivrCampaign.id}).$promise.then(function(){_.remove(g.ivrCampaigns,{id:g.ivrCampaign.id}),o.success({title:"IvrCampaign properly deleted!",msg:(g.ivrCampaign.name||"ivrCampaign")+" has been deleted!"}),v(g.ivrCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})});g.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.trunks=n})}else g.trunks=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.projects=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.projects,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.projects,{id:t.id});a.canSelect=!1,n.push(a)}g.projects=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.projects,{id:Number(g.ivrCampaign.SquareProjectId)}));for(var i=0;i<g.projects.length;i++)a&&g.projects[i].id===a.id&&(g.projects[i].canSelect=!1,t.push(g.projects[i]));g.projects=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.ivrCampaign&&(t=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.ivrCampaign&&(a=_.find(g.interval,{id:Number(g.ivrCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","ivrCampaigns","ivrCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditIvrCampaignDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newIvrCampaign=!0,r.ivrCampaign=angular.copy(i),r.ivrCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_IVRCAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneIvrCampaign=function(){return e.campaign.clone({id:i.id},r.ivrCampaign).$promise.then(function(e){r.ivrCampaigns.unshift(e.toJSON()),a.success({title:"IvrCampaign properly cloned",msg:r.ivrCampaign.name?r.ivrCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.campaign.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.campaign.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","ivrCampaign","ivrCampaigns","$translate"],angular.module("app.motiondialer").controller("IvrCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperBlacks.rows,{id:e.id}),m.ivrCampaignHopperBlacks.count-=1,m.ivrCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperBlacks={count:0,rows:[]},m.selectedIvrCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperBlacks=p,m.createOrEditIvrCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperBlack:n,hopperBlacks:m.ivrCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperBlacks=function(){var e=angular.copy(m.selectedIvrCampaignHopperBlacks);return m.selectedIvrCampaignHopperBlacks=[],e},m.deleteIvrCampaignHopperBlack=g,m.deleteSelectedIvrCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedIvrCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperFinals.rows,{id:e.id}),m.ivrCampaignHopperFinals.count-=1,m.ivrCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.ivrCampaign={},m.ivrCampaignHopperFinals={count:0,rows:[]},m.selectedIvrCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperFinals=p,m.createOrEditIvrCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperFinal:n,hopperFinals:m.ivrCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperFinals=function(){var e=angular.copy(m.selectedIvrCampaignHopperFinals);return m.selectedIvrCampaignHopperFinals=[],e},m.deleteIvrCampaignHopperFinal=g,m.deleteSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedIvrCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperFinals=[]})},m.moveIvrCampaignHopperFinal=v,m.moveContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsIvrCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsIvrCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsIvrCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedIvrCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedIvrCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHopperHistories.rows,{id:e.id}),m.ivrCampaignHopperHistories.count-=1,m.ivrCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHopperHistories={count:0,rows:[]},m.selectedIvrCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHopperHistories=p,m.createOrEditIvrCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopperHistory:n,hopperHistories:m.ivrCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIvrCampaignHopperHistories=function(){var e=angular.copy(m.selectedIvrCampaignHopperHistories);return m.selectedIvrCampaignHopperHistories=[],e},m.deleteIvrCampaignHopperHistory=g,m.deleteSelectedIvrCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedIvrCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedIvrCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.ivrCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.campaign.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.ivrCampaignHoppers.rows,{id:e.id}),m.ivrCampaignHoppers.count-=1,m.ivrCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETcampaign"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.ivrCampaign={},m.ivrCampaignHoppers={count:0,rows:[]},m.selectedIvrCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.ivrCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.CampaignId=m.ivrCampaign.id,m.query.id=m.ivrCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIvrCampaignHoppers=p,m.createOrEditIvrCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:m.ivrCampaign,hopper:n,hoppers:m.ivrCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"IvrCampaign"}})},m.exportSelectedIvrCampaignHoppers=function(){var e=angular.copy(m.selectedIvrCampaignHoppers);return m.selectedIvrCampaignHoppers=[],e},m.deleteIvrCampaignHopper=g,m.deleteSelectedIvrCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedIvrCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIvrCampaignHoppers.forEach(function(e){g(e)}),m.selectedIvrCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})});m.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),m.agents=n})}else m.agents=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("IvrCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.CampaignId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.campaign.get({raw:!1,id:a.CampaignId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})});g.agents.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.agents=n})}else g.agents=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperCampaignIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.ivrCampaign={},i.init=function(n){i.ivrCampaign=n,t.cmHopper.get({limit:0,CampaignId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,CampaignId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,CampaignId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("IvrCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.ivrCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.ivrCampaign=n,d.crudPermissions=l,d.apiRoute="campaign",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.ivrCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","ivrCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("IvrCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return i.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","ivrCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("IvrCampaignresetlistController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.ivrCampaign=c||t.params.ivrCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:u.ivrCampaigns?u.ivrCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.resetlistdialog=function(n,t){r.campaign.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.ivrCampaign.id,n=a.rows[0],t=n.id,r.campaign.removeLists({id:e,ids:t}).$promise.then(function(){return r.campaign.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:ivrCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"IvrCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{ivrCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},u.alert=l.info,u.gotoIvrCampaigns=function(){t.go("app.motiondialer.ivrCampaigns",{},{reload:"app.motiondialer.ivrCampaigns"})},u.saveIvrCampaign=function(){r.campaign.update({id:u.ivrCampaign.id},u.ivrCampaign).$promise.then(function(){l.success({title:"IvrCampaign updated!",msg:u.ivrCampaign.name?u.ivrCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcampaign",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})});u.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.trunks=n})}else u.trunks=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.projects,{id:Number(u.ivrCampaign.SquareProjectId)}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.ivrCampaign&&(t=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.ivrCampaign&&(a=_.find(u.interval,{id:Number(u.ivrCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","ivrCampaign","userProfileSection"],angular.module("app.motiondialer").controller("IvrCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.ivrCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="ivrCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedIvrCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,active,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,SquareProjectId,limitCalls,description,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,dialOrderByScheduledAt,dialGlobalInterval,dialTimezone,dialPrefix,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength",type:"ivr",sort:"-updatedAt",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.ivrCampaigns.edit",{id:e.id,ivrCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"IvrCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"IvrCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"IvrCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{ivrCampaign:e,ivrCampaigns:f.ivrCampaigns?f.ivrCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("ivrCampaign")+"?").htmlContent("<b>"+(e.name||"ivrCampaign")+"</b> will be deleted.").ariaLabel("delete ivrCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.ivr_campaigns",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.ivr_campaigns",{})}},f.success=E,f.getIvrCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.campaign.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="IvrCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditIvrCampaign=function(e,n){i.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:f.ivrCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteIvrCampaign=y,f.exportSelectedIvrCampaigns=function(){var e=angular.copy(f.selectedIvrCampaigns);return f.selectedIvrCampaigns=[],e},f.deleteSelectedIvrCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected ivrCampaigns?").htmlContent("<b>"+f.selectedIvrCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete IvrCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIvrCampaigns.forEach(function(e){y(e)}),f.selectedIvrCampaigns=[]})},f.deselectIvrCampaigns=function(){f.selectedIvrCampaigns=[]},f.selectAllIvrCampaigns=function(){f.selectedIvrCampaigns=f.ivrCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name",table:"true"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})});f.trunks.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.trunks=n})}else f.trunks=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.projects=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.projects,{id:e.resourceId})}),a=null;a=[],f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),f.projects=t})}else{var t=[],a=[];f.ivrCampaigns.rows.forEach(function(e){var n=_.find(f.projects,{id:Number(e.SquareProjectId)});a.push(n)});for(var i=0;i<f.projects.length;i++){_.some(a,{id:f.projects[i].id})&&(f.projects[i].canSelect=!1,t.push(f.projects[i]))}f.projects=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.ivrCampaign&&(t=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.ivrCampaign&&(a=_.find(f.interval,{id:Number(f.ivrCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.ivrCampaigns=e||{count:0,rows:[]}}function y(e){m.campaign.delete({id:e.id}).$promise.then(function(){_.remove(f.ivrCampaigns.rows,{id:e.id}),f.ivrCampaigns.count-=1,f.ivrCampaigns.rows.length||f.getIvrCampaigns(),p.success({title:_.startCase("IvrCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcampaign"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcampaign",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIvrCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","ivrCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("IvrCampaignsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_QUEUECAMPAIGN",g.queueCampaign=angular.copy(l),g.queueCampaigns=r,g.newQueueCampaign=!1,g.queueCampaign||(g.queueCampaign={dialActive:!0,type:"outbound",dialCheckDuplicateType:"always",dialCutDigit:0,autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no",dialOrderByScheduledAt:"ASC",dialGlobalInterval:"07:00-22:00,*,*,*",dialAMDInitialSilence:2500,dialAMDGreeting:1500,dialAMDAfterGreetingSilence:800,dialAMDTotalAnalysisTime:5e3,dialAMDMinWordLength:100,dialAMDBetweenWordsSilence:50,dialAMDMaximumNumberOfWords:3,dialAMDSilenceThreshold:256,dialAMDMaximumWordLength:5e3,dialMethod:"progressive",dialPowerLevel:1,dialPredictiveOptimization:"dropRate",dialPredictiveOptimizationPercentage:3,dialPredictiveInterval:10,dialLimitQueue:0,dialRandomLastDigitCallerIdNumber:0,dialOriginateTimeout:30,dialQueueOptions:"tTxX",dialQueueTimeout:3,strategy:"rrmemory",timeout:3,retry:3,weight:1,dialGlobalMaxRetry:4,dialCongestionMaxRetry:3,dialCongestionRetryFrequency:150,dialBusyMaxRetry:3,dialBusyRetryFrequency:150,dialNoAnswerMaxRetry:3,dialNoAnswerRetryFrequency:150,dialNoSuchNumberMaxRetry:3,dialNoSuchNumberRetryFrequency:150,dialDropMaxRetry:3,dialDropRetryFrequency:150,dialAbandonedMaxRetry:3,dialAbandonedRetryFrequency:150,dialMachineMaxRetry:3,dialMachineRetryFrequency:150,dialAgentRejectMaxRetry:3,dialAgentRejectRetryFrequency:150,callAdditionalPhoneAfterMin:3,dialPredictiveIntervalMaxThreshold:20,dialPredictiveIntervalMinThreshold:10},g.title="MOTIONDIALER.NEW_QUEUECAMPAIGN",g.newQueueCampaign=!0),g.addNewQueueCampaign=function(){g.errors=[],d.voiceQueue.save(g.queueCampaign).$promise.then(function(e){g.queueCampaigns.unshift(e.toJSON()),o.success({title:"QueueCampaign properly created",msg:g.queueCampaign.name?g.queueCampaign.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveQueueCampaign=function(){g.errors=[],d.voiceQueue.update({id:g.queueCampaign.id},g.queueCampaign).$promise.then(function(e){var n=_.find(g.queueCampaigns,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"QueueCampaign properly saved!",msg:g.queueCampaign.name?g.queueCampaign.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteQueueCampaign=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The queueCampaign will be deleted.").ariaLabel("Delete QueueCampaign").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceQueue.delete({id:g.queueCampaign.id}).$promise.then(function(){_.remove(g.queueCampaigns,{id:g.queueCampaign.id}),o.success({title:"QueueCampaign properly deleted!",msg:(g.queueCampaign.name||"queueCampaign")+" has been deleted!"}),v(g.queueCampaign)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.trunks=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.trunks,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.trunks,{id:t.id});a.canSelect=!1,n.push(a)}g.trunks=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.trunks,{id:Number(g.queueCampaign.TrunkId)}));for(var i=0;i<g.trunks.length;i++)a&&g.trunks[i].id===a.id&&(g.trunks[i].canSelect=!1,t.push(g.trunks[i]));g.trunks=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){g.interval=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.interval,{id:e.resourceId})}),t=null;if(g.queueCampaign&&(t=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.interval,{id:t.id});a.canSelect=!1,n.push(a)}g.interval=n})}else{var t=[],a=null;g.queueCampaign&&(a=_.find(g.interval,{id:Number(g.queueCampaign.IntervalId)}));for(var i=0;i<g.interval.length;i++)a&&g.interval[i].id===a.id&&(g.interval[i].canSelect=!1,t.push(g.interval[i]));g.interval=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","queueCampaigns","queueCampaign","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditQueueCampaignDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.queueCampaign.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.queueCampaign=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.queueCampaign.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("MOTIONDIALER.ALL_AGENTS"),labelSelected:s.instant("MOTIONDIALER.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","queueCampaigns","realtime","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getBlackLists",d.addApi="addBlackLists",d.removeApi="removeBlackLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignblacklistaddController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newQueueCampaign=!0,r.queueCampaign=angular.copy(i),r.queueCampaigns=s,r.title=o.instant("MOTIONDIALER.CLONE_QUEUECAMPAIGN"),i&&i.name&&(r.title+=": "+i.name),r.cloneQueueCampaign=function(){return e.voiceQueue.clone({id:i.id},r.queueCampaign).$promise.then(function(e){r.queueCampaigns.unshift(e.toJSON()),a.success({title:"QueueCampaign properly cloned",msg:r.queueCampaign.name?r.queueCampaign.name+" has been cloned!":""}),t.go("app.motiondialer.queueCampaigns.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","queueCampaign","queueCampaigns","$translate"],angular.module("app.motiondialer").controller("QueueCampaigncloneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperBlacks=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperBlacks(m.query,u).$promise}function g(e){d.hopperBlack.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperBlacks.rows,{id:e.id}),m.queueCampaignHopperBlacks.count-=1,m.queueCampaignHopperBlacks.rows.length||p(),l.success({title:"HopperBlack deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperBlacks={count:0,rows:[]},m.selectedQueueCampaignHopperBlacks=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,ContactId,phone",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperBlack?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperBlack #")+e.id||"hopperBlack")+"</b> will be deleted.").ariaLabel("delete hopperBlack").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperBlacks=p,m.createOrEditQueueCampaignHopperBlack=function(e,n){o.show({controller:"CreateOrEditHopperBlackDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperBlacks/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperBlack:n,hopperBlacks:m.queueCampaignHopperBlacks.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperBlacks=function(){var e=angular.copy(m.selectedQueueCampaignHopperBlacks);return m.selectedQueueCampaignHopperBlacks=[],e},m.deleteQueueCampaignHopperBlack=g,m.deleteSelectedQueueCampaignHopperBlacks=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperBlacks?").htmlContent("<b>"+m.selectedQueueCampaignHopperBlacks.length+" selected</b> will be deleted.").ariaLabel("delete hopperBlacks").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperBlacks.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperBlacks=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperBlacksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperFinals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperFinals(m.query,u).$promise}function g(e){d.hopperFinal.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperFinals.rows,{id:e.id}),m.queueCampaignHopperFinals.count-=1,m.queueCampaignHopperFinals.rows.length||p(),l.success({title:"HopperFinal deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function v(a){d.cmHopperFinal.checkContactHopper(a).$promise.then(function(e){l.info({title:"The contact is in the hopper",msg:"Contact ID "+e.ContactId})}).catch(function(e){var n,t;"Not Found"===e.data?d.cmHopper.save((n=a,t={},t.phone=n.calleridnum,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=0,t.countcongestionretry=0,t.countnoanswerretry=0,t.countglobal=0,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=n.deleted?null:n.UserId,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.priority=n.recallme?3:2,t.recallme=!!n.recallme,t)).$promise.then(function(e){var n,t;l.info({title:"Restored Contact",msg:"Contact ID "+e.ContactId}),e.ContactId&&d.cmHopperHistory.save(((t={}).calleridnum=(n=a).calleridnum,t.calleridname=n.calleridname,t.scheduledat=moment().format("YYYY-MM-DD HH:mm:ss"),t.countbusyretry=n.countbusyretry,t.countcongestionretry=n.countcongestionretry,t.countnoanswerretry=n.countnoanswerretry,t.countglobal=n.countglobal,t.ContactId=n.ContactId,t.ListId=n.ListId,t.UserId=c.getCurrentUser().id,t.VoiceQueueId=n.VoiceQueueId,t.CampaignId=n.CampaignId,t.editedat=moment().format("YYYY-MM-DD HH:mm:ss"),t.edited=!0,t.state=25,t.statedesc="Restored",t.campaign=n.campaign,t.campaigntype=n.VoiceQueueId?"queue":"ivr",t))}).catch(function(e){_.isNil(e.data)||"Validation error"!==e.data.message?l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()}):l.info({title:"The contact is in the hopper",msg:"Contact ID "+a.ContactId})}):l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.contacts={},m.queueCampaign={},m.queueCampaignHopperFinals={count:0,rows:[]},m.selectedQueueCampaignHopperFinals=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,countglobal,scheduledat,starttime,responsetime,endtime,disposition,secondDisposition,thirdDisposition,ListId,UserId,VoiceQueueId,CampaignId,recallme,deleted,campaign",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperFinal?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperFinal #")+e.id||"hopperFinal")+"</b> will be deleted.").ariaLabel("delete hopperFinal").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperFinals=p,m.createOrEditQueueCampaignHopperFinal=function(e,n){o.show({controller:"CreateOrEditHopperFinalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperFinals/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperFinal:n,hopperFinals:m.queueCampaignHopperFinals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperFinals=function(){var e=angular.copy(m.selectedQueueCampaignHopperFinals);return m.selectedQueueCampaignHopperFinals=[],e},m.deleteQueueCampaignHopperFinal=g,m.deleteSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperFinals?").htmlContent("<b>"+m.selectedQueueCampaignHopperFinals.length+" selected</b> will be deleted.").ariaLabel("delete hopperFinals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperFinals=[]})},m.moveQueueCampaignHopperFinal=v,m.moveContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.moveContactsQueueCampaignHopperFinal({id:m.query.id,state:e}).$promise.then(function(e){_.isNil(e)&&_.isNil(e[0])?l.info({title:"Restored Contacts",msg:"0"}):l.info({title:"Restored Contacts",msg:JSON.stringify(e[0].affectedRows)})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.countContactsQueueCampaignHopperFinal=function(e){d.cmHopperFinal.countContactsQueueCampaignHopperFinal({id:e}).$promise.then(function(e){_.merge(m.contacts,e[0])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},m.moveConfirm=function(e,n){var t=o.confirm().title("Are you sure want to restore the contact?").htmlContent("<b>Contact</b> will be restored.").ariaLabel("Restore Contact").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.moveSelectedQueueCampaignHopperFinals=function(e){var n=o.confirm().title("Are you sure want to restore the selected contacts?").htmlContent("<b> Contacts selected</b> will be restored.").ariaLabel("Restore Contacts").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperFinals.forEach(function(e){v(e)}),m.selectedQueueCampaignHopperFinals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperFinalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHopperHistories=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHopperHistories(m.query,u).$promise}function g(e){d.hopperHistory.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHopperHistories.rows,{id:e.id}),m.queueCampaignHopperHistories.count-=1,m.queueCampaignHopperHistories.rows.length||p(),l.success({title:"HopperHistory deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHopperHistories={count:0,rows:[]},m.selectedQueueCampaignHopperHistories=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,uniqueid,ContactId,calleridnum,calleridname,statedesc,scheduledat,starttime,responsetime,endtime",sort:"-id",limit:10,page:1},m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopperHistory?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopperHistory #")+e.id||"hopperHistory")+"</b> will be deleted.").ariaLabel("delete hopperHistory").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHopperHistories=p,m.createOrEditQueueCampaignHopperHistory=function(e,n){o.show({controller:"CreateOrEditHopperHistoryDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/hopperHistories/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopperHistory:n,hopperHistories:m.queueCampaignHopperHistories.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedQueueCampaignHopperHistories=function(){var e=angular.copy(m.selectedQueueCampaignHopperHistories);return m.selectedQueueCampaignHopperHistories=[],e},m.deleteQueueCampaignHopperHistory=g,m.deleteSelectedQueueCampaignHopperHistories=function(e){var n=o.confirm().title("Are you sure want to delete the selected hopperHistories?").htmlContent("<b>"+m.selectedQueueCampaignHopperHistories.length+" selected</b> will be deleted.").ariaLabel("delete hopperHistories").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHopperHistories.forEach(function(e){g(e)}),m.selectedQueueCampaignHopperHistories=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHopperHistoriesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.queueCampaignHoppers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceQueue.getHoppers(m.query,u).$promise}function g(e){d.cmHopper.delete({id:e.id}).$promise.then(function(){_.remove(m.queueCampaignHoppers.rows,{id:e.id}),m.queueCampaignHoppers.count-=1,m.queueCampaignHoppers.rows.length||p(),l.success({title:"Hopper deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.queueCampaign={},m.queueCampaignHoppers={count:0,rows:[]},m.selectedQueueCampaignHoppers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,ContactId,phone,countcongestionretry,countbusyretry,countnoanswerretry,countnosuchnumberretry,countdropretry,countabandonedretry,countmachineretry,countagentrejectretry,scheduledat,priority,recallme,UserId",sort:"-updatedAt",limit:10,page:1},m.arraypriority=_.keyBy([{option:"Highest",value:"'4'"},{option:"High",value:"'3'"},{option:"Medium",value:"'2'"},{option:"Low",value:"'1'"},{option:"Lowest",value:"'0'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),m.init=function(e,n){m.queueCampaign=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceQueueId=m.queueCampaign.id,m.query.id=m.queueCampaign.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the hopper?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("hopper #")+e.id||"hopper")+"</b> will be deleted.").ariaLabel("delete hopper").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getQueueCampaignHoppers=p,m.createOrEditQueueCampaignHopper=function(e,n){o.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:m.queueCampaign,hopper:n,hoppers:m.queueCampaignHoppers.rows,license:null,setting:null,crudPermissions:m.crudPermissions,from:"QueueCampaign"}})},m.exportSelectedQueueCampaignHoppers=function(){var e=angular.copy(m.selectedQueueCampaignHoppers);return m.selectedQueueCampaignHoppers=[],e},m.deleteQueueCampaignHopper=g,m.deleteSelectedQueueCampaignHoppers=function(e){var n=o.confirm().title("Are you sure want to delete the selected hoppers?").htmlContent("<b>"+m.selectedQueueCampaignHoppers.length+" selected</b> will be deleted.").ariaLabel("delete hoppers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedQueueCampaignHoppers.forEach(function(e){g(e)}),m.selectedQueueCampaignHoppers=[]})},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){m.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.agents,{id:e.resourceId})}),t=null;if(m.queueCampaign&&(t=_.find(m.agents,{id:Number(m.queueCampaign.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.agents,{id:t.id});a.canSelect=!1,n.push(a)}m.agents=n})}else{var t=[],a=null;m.queueCampaign&&(a=_.find(m.agents,{id:Number(m.queueCampaign.UserId)}));for(var i=0;i<m.agents.length;i++)a&&m.agents[i].id===a.id&&(m.agents[i].canSelect=!1,t.push(m.agents[i]));m.agents=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.motiondialer").controller("QueueCampaignHoppersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="MOTIONDIALER.EDIT_HOPPER",g.hopper=angular.copy(l),g.hoppers=r,g.newHopper=!1,g.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),g.hopper||(g.hopper={},g.title="MOTIONDIALER.NEW_HOPPER",g.newHopper=!0),n.params.id&&(g.hopper.VoiceQueueId=n.params.id),g.addNewHopper=function(){g.errors=[],d.cmHopper.save(g.hopper).$promise.then(function(e){g.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:g.hopper.name?g.hopper.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveHopper=function(){var t,a,i,s;g.errors=[],g.hopper.UserId=g.hopper.recallme?g.hopper.UserId:null,g.hopper.OwnerId=c.getCurrentUser().id,g.hopper.dialTimezone=g.contact.dialTimezone,d.cmHopper.get({id:g.hopper.id,attributes:["scheduledat"]}).$promise.then(function(e){t=_.isNil(e)||_.isEmpty(e)?moment().format("YYYY-MM-DD HH:mm:ss"):e.scheduledat}).finally(function(){d.cmHopper.update({id:g.hopper.id},_.omit(g.hopper,["VoiceQueueId","CampaignId","ContactId","ListId"])).$promise.then(function(e){a=e,d.cmContact.get({id:a.ContactId,attributes:["firstName","lastName"]}).$promise.then(function(e){_.isNil(e)||_.isNil(e.firstName)||(i=e.firstName,_.isNil(e.lastName)||(i+=" "+e.lastName))}).catch(function(){i=void 0}).finally(function(){d.voiceQueue.get({raw:!1,id:a.VoiceQueueId,attributes:["name"]}).$promise.then(function(e){s=e.name}).catch(function(e){s=void 0}).finally(function(){d.cmHopperHistory.save({state:24,statedesc:"Edited",scheduledat:t,calleridnum:a.phone,calleridname:i,campaigntype:a.VoiceQueueId?"queue":"ivr",campaign:s,editedat:moment().format("YYYY-MM-DD HH:mm:ss"),edited:!0,ListId:a.ListId,UserId:c.getCurrentUser().id,VoiceQueueId:a.VoiceQueueId,CampaignId:a.CampaignId,ContactId:a.ContactId,callback:a.callback,callbackuniqueid:a.callbackuniqueid,countbusyretry:a.countbusyretry,countcongestionretry:a.countcongestionretry,countglobal:a.countglobal,countnoanswerretry:a.countnoanswerretry,followuptime:a.followuptime,recallme:a.recallme}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});var n=_.find(g.hoppers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Hopper properly saved!",msg:g.hopper.name?g.hopper.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})})},g.deleteHopper=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The hopper will be deleted.").ariaLabel("Delete Hopper").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cmHopper.delete({id:g.hopper.id}).$promise.then(function(){_.remove(g.hoppers,{id:g.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(g.hopper.name||"hopper")+" has been deleted!"}),v(g.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cmHopper.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cmHopper.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),g.closeDialog=v,c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){g.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.agents,{id:e.resourceId})}),t=null;if(g.hopper&&(t=_.find(g.agents,{id:Number(g.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.agents,{id:t.id});a.canSelect=!1,n.push(a)}g.agents=n})}else{var t=[],a=null;g.hopper&&(a=_.find(g.agents,{id:Number(g.hopper.UserId)}));for(var i=0;i<g.agents.length;i++)a&&g.agents[i].id===a.id&&(g.agents[i].canSelect=!1,t.push(g.agents[i]));g.agents=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions"],angular.module("app.motiondialer").controller("CreateOrEditHopperVoiceQueueIdDialogController",e)}(),function(){"use strict";function e(t,a){var i=this;i.queueCampaign={},i.init=function(n){i.queueCampaign=n,t.cmHopper.get({limit:0,VoiceQueueId:n.id}).$promise.then(function(e){return i.total=e.count||0,t.cmHopper.get({limit:0,VoiceQueueId:n.id,active:!1,countbusyretry:0,countcongestionretry:0,countnoanswerretry:0,countnosuchnumberretry:0,countdropretry:0,countabandonedretry:0,countmachineretry:0,countagentrejectretry:0}).$promise}).then(function(e){return i.fresh=e.count||0,t.cmHopperFinal.get({limit:0,VoiceQueueId:n.id}).$promise}).then(function(e){i.closed=e.count||0}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETTAGS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["api","toasty"],angular.module("app.motiondialer").controller("QueueCampaignHopperStatisticsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(){return a(function(t,n){return a(function(n,t){return s.cmList.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return d.items=e.rows?e.rows:[],r.hasRole("admin")?e:d.section?d.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:d.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return d.allowedItems=_.map(n,function(e){return _.find(d.items,{id:r.hasRole("admin")||d.section.autoAssociation?e.id:e.resourceId})}),d.startingAllowedItems=angular.copy(d.allowedItems),d.items.forEach(function(e){var n=_.find(d.allowedItems,{id:e.id});"admin"===d.currentUser.role?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s[d.apiRoute][d.getApi]({id:d.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];d.selectedItems=_.map(n,function(e){return _.find(d.items,{id:e.id})}),d.startingSelectedItems=angular.copy(d.selectedItems),d.dualMultiselectOptions.selectedItems=d.selectedItems,d.dualMultiselectOptions.items=_.differenceBy(d.allowedItems,d.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}d.currentUser=r.getCurrentUser(),d.queueCampaign=n,d.crudPermissions=l,d.apiRoute="voiceQueue",d.getApi="getLists",d.addApi="addLists",d.removeApi="removeLists",d.items=[],d.allowedItems=[],d.selectedItems=[],d.startingAllowedItems=[],d.startingSelectedItems=[],d.pendingChanges=!1,d.loading=!1,d.dualMultiselectOptions={allowedItems:[],selectedItems:[],showSelectAndDeselectAll:!1,orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("MOTIONDIALER.ALL_LISTS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_LISTS"),transferCallback:function(e,n){var t=_.xorBy(d.startingSelectedItems,d.selectedItems,"id");d.pendingChanges=!_.isEmpty(t)}},d.onInit=function(){return r.hasRole("admin")?c().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:d.currentUser.userProfileId,name:"Lists"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return d.section=e,c()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETLISTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},d.saveLists=function(){d.loading=!0;var e=_.differenceBy(d.startingSelectedItems,d.selectedItems,"id"),n=_.differenceBy(d.selectedItems,d.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.removeApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s[d.apiRoute][d.addApi]({id:d.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){d.pendingChanges=!1,d.startingAllowedItems=angular.copy(d.allowedItems),d.startingSelectedItems=angular.copy(d.selectedItems),i.success({title:"SUCCESS",msg:"Lists association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})}).finally(function(){d.loading=!1});var t},d.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","$timeout","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignlistaddController",e)}(),function(){"use strict";function e(e,n,a,i,s,t,o,r){var l=this;function d(){n.hide()}function c(e,n){var t=n.id;o.enqueue(function(){return i.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return i.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){a.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}l.selected=[],l.items=t||[],l.loading=!1,l.closeDialog=d,l.exists=function(e,n){return-1<n.indexOf(e)},l.toggle=function(e,n){var t=n.indexOf(e);-1<t?n.splice(t,1):n.push(e)},l.isIndeterminate=function(){return 0!==l.selected.length&&l.selected.length!==l.items.length},l.isChecked=function(){return l.selected.length===l.items.length},l.toggleAll=function(){l.selected.length===l.items.length?l.selected=[]:(0===l.selected.length||0<l.selected.length)&&(l.selected=l.items.slice(0))},l.listSelected=function(){l.loading=!0,r(function(e,n){for(var t=0;t<l.selected.length;t+=1)c(s.id,l.selected[t]);var a;a=e,o.enqueue(function(){return a()})}).finally(function(){l.loading=!1,d()})}}e.$inject=["$scope","$mdDialog","toasty","api","queueCampaign","listsCampaign","Sequence","$q"],angular.module("app.motiondialer").controller("QueueCampaignresetlistController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.queueCampaign.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.queueCampaign=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("MOTIONDIALER.ALL_TEAMS"),labelSelected:t.instant("MOTIONDIALER.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.queueCampaign.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.queueCampaign.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","queueCampaign","$translate","Auth","crudPermissions"],angular.module("app.motiondialer").controller("QueueCampaignteamaddController",e)}(),function(){"use strict";function e(t,e,i,s,a,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.queueCampaign=c||t.params.queueCampaign||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:u.queueCampaigns?u.queueCampaigns.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.resetlistdialog=function(n,t){r.voiceQueue.getLists({id:n.id,fields:"id,name",nolimit:!0}).$promise.then(function(a){if(_.isNil(a.rows)||_.isEmpty(a.rows))l.info({title:"Campaign Without Lists"});else if(1===a.rows.length){var e=i.confirm().title("Are you sure want to reset the list "+a.rows[0].name+" ?").htmlContent("<b>"+a.rows[0].name+"</b> will be reset.").ariaLabel("Reset List").targetEvent(t).ok("OK").cancel("CANCEL");i.show(e).then(function(){var e,n,t;e=u.queueCampaign.id,n=a.rows[0],t=n.id,r.voiceQueue.removeLists({id:e,ids:t}).$promise.then(function(){return r.voiceQueue.addLists({id:e,ids:t,dialCheckDuplicateType:"never"}).$promise}).then(function(){l.success({title:"Reset Succesfull",msg:"List "+n.name+" has been reset"})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:queueCampaign.REMOVELIST",msg:e.status?JSON.stringify(e.data):e.toString()})})})}else i.show({controller:"QueueCampaignresetlistController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!1,locals:{queueCampaign:n,listsCampaign:a?a.rows:[]}})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:RESETLIST",msg:e.status?JSON.stringify(e.data):e.toString()})})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):l.info({title:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:a.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},u.alert=l.info,u.gotoQueueCampaigns=function(){t.go("app.motiondialer.queueCampaigns",{},{reload:"app.motiondialer.queueCampaigns"})},u.saveQueueCampaign=function(){r.voiceQueue.update({id:u.queueCampaign.id},u.queueCampaign).$promise.then(function(){l.success({title:"QueueCampaign updated!",msg:u.queueCampaign.name?u.queueCampaign.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.musiconholds,{name:u.queueCampaign.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.trunks=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.trunks,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.trunks,{id:t.id});a.canSelect=!1,n.push(a)}u.trunks=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.trunks,{id:Number(u.queueCampaign.TrunkId)}));for(var i=0;i<u.trunks.length;i++)a&&u.trunks[i].id===a.id&&(u.trunks[i].canSelect=!1,t.push(u.trunks[i]));u.trunks=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.squareProject.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1103}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.projects,{name:u.queueCampaign.dialQueueProject})),t&&!_.some(n,["id",t.id])){var a=_.find(u.projects,{id:t.id});a.canSelect=!1,n.push(a)}u.projects=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.projects,{name:u.queueCampaign.dialQueueProject}));for(var i=0;i<u.projects.length;i++)a&&u.projects[i].id===a.id&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){u.interval=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.interval,{id:e.resourceId})}),t=null;if(u.queueCampaign&&(t=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(u.interval,{id:t.id});a.canSelect=!1,n.push(a)}u.interval=n})}else{var t=[],a=null;u.queueCampaign&&(a=_.find(u.interval,{id:Number(u.queueCampaign.IntervalId)}));for(var i=0;i<u.interval.length;i++)a&&u.interval[i].id===a.id&&(u.interval[i].canSelect=!1,t.push(u.interval[i]));u.interval=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","queueCampaign","userProfileSection"],angular.module("app.motiondialer").controller("QueueCampaignController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.queueCampaigns=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="queueCampaigns",f.listOrder="",f.listOrderAsc=null,f.selectedQueueCampaigns=[],f.query={fields:"createdAt,updatedAt,id,name,dialActive,TrunkId,TrunkBackupId,type,IntervalId,dialCheckDuplicateType,dialCutDigit,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,dialOrderByScheduledAt,dialRecallMeTimeout,dialRecallInQueue,dialGlobalInterval,dialTimezone,dialAMDActive,dialAMDInitialSilence,dialAMDGreeting,dialAMDAfterGreetingSilence,dialAMDTotalAnalysisTime,dialAMDMinWordLength,dialAMDBetweenWordsSilence,dialAMDMaximumNumberOfWords,dialAMDSilenceThreshold,dialAMDMaximumWordLength,dialMethod,dialPowerLevel,dialPredictiveOptimization,dialPredictiveOptimizationPercentage,dialPredictiveInterval,dialLimitQueue,dialOriginateCallerIdName,dialOriginateCallerIdNumber,dialRandomLastDigitCallerIdNumber,dialOriginateTimeout,dialPrefix,dialQueueOptions,dialQueueTimeout,strategy,timeout,retry,wrapuptime,weight,musiconhold,dialQueueProject,dialQueueProject2,dialAgiAfterHangupAgent,dialGlobalMaxRetry,dialCongestionMaxRetry,dialCongestionRetryFrequency,dialBusyMaxRetry,dialBusyRetryFrequency,dialNoAnswerMaxRetry,dialNoAnswerRetryFrequency,dialNoSuchNumberMaxRetry,dialNoSuchNumberRetryFrequency,dialDropMaxRetry,dialDropRetryFrequency,dialAbandonedMaxRetry,dialAbandonedRetryFrequency,dialMachineMaxRetry,dialMachineRetryFrequency,dialAgentRejectMaxRetry,dialAgentRejectRetryFrequency,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe",type:"outbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraydialCheckDuplicateType=_.keyBy([{option:"ALWAYS",value:"'always'"},{option:"NEVER",value:"'never'"},{option:"ONLY_IF_OPEN",value:"'onlyIfOpen'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialOrderByScheduledAt=_.keyBy([{option:"DESC",value:"'DESC'"},{option:"ASC",value:"'ASC'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialMethod=_.keyBy([{option:"Progressive",value:"'progressive'"},{option:"PowerDialing",value:"'power'"},{option:"Predictive",value:"'predictive'"},{option:"Preview",value:"'preview'"},{option:"BookedProgressive",value:"'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydialPredictiveOptimization=_.keyBy([{option:"AgentBusyFactor",value:"'agentBusyFactor'"},{option:"DropRate",value:"'dropRate'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraystrategy=_.keyBy([{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Round Robin",value:"'roundrobin'",ngIf:"vm.queueCampaign.dialMethod === 'booked'"},{option:"Least Recent",value:"'leastrecent'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Fewest Calls",value:"'fewestcalls'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Random",value:"'random'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Linear",value:"'linear'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"},{option:"Weight Random",value:"'wrandom'",ngIf:"vm.queueCampaign.dialMethod !== 'booked'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.motiondialer.queueCampaigns.edit",{id:e.id,queueCampaign:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"QueueCampaigncloneController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.listadddialog=function(e,n){i.show({controller:"QueueCampaignlistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.blacklistadddialog=function(e,n){i.show({controller:"QueueCampaignblacklistaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.teamadddialog=function(e,n){i.show({controller:"QueueCampaignteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"QueueCampaignagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{queueCampaign:e,queueCampaigns:f.queueCampaigns?f.queueCampaigns.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("queueCampaign")+"?").htmlContent("<b>"+(e.name||"queueCampaign")+"</b> will be deleted.").ariaLabel("delete queueCampaign").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:1510}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.motiondialer.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.motiondialer.realtime.queues",{})}},f.success=E,f.getQueueCampaigns=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="QueueCampaigns",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditQueueCampaign=function(e,n){i.show({controller:"CreateOrEditQueueCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n,queueCampaigns:f.queueCampaigns.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteQueueCampaign=y,f.exportSelectedQueueCampaigns=function(){var e=angular.copy(f.selectedQueueCampaigns);return f.selectedQueueCampaigns=[],e},f.deleteSelectedQueueCampaigns=function(e){var n=i.confirm().title("Are you sure want to delete the selected queueCampaigns?").htmlContent("<b>"+f.selectedQueueCampaigns.length+" selected</b> will be deleted.").ariaLabel("delete QueueCampaigns").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedQueueCampaigns.forEach(function(e){y(e)}),f.selectedQueueCampaigns=[]})},f.deselectQueueCampaigns=function(){f.selectedQueueCampaigns=[]},f.selectAllQueueCampaigns=function(){f.selectedQueueCampaigns=f.queueCampaigns.rows},g.hasRole("admin")?m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TRUNKS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.trunk.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.trunks=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1011}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(f.trunks,{id:e.resourceId})}),a=null;a=[],f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(f.trunks,{id:e.id});n.canSelect=!1,t.push(n)}}),f.trunks=t})}else{var t=[],a=[];f.queueCampaigns.rows.forEach(function(e){var n=_.find(f.trunks,{id:Number(e.TrunkId)});a.push(n)});for(var i=0;i<f.trunks.length;i++){_.some(a,{id:f.trunks[i].id})&&(f.trunks[i].canSelect=!1,t.push(f.trunks[i]))}f.trunks=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunks",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVAL",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.interval.get({fields:"id,name",sort:"name",IntervalId:"null"}).$promise.then(function(e){f.interval=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.interval,{id:e.resourceId})}),t=null;if(f.queueCampaign&&(t=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.interval,{id:t.id});a.canSelect=!1,n.push(a)}f.interval=n})}else{var t=[],a=null;f.queueCampaign&&(a=_.find(f.interval,{id:Number(f.queueCampaign.IntervalId)}));for(var i=0;i<f.interval.length;i++)a&&f.interval[i].id===a.id&&(f.interval[i].canSelect=!1,t.push(f.interval[i]));f.interval=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.queueCampaigns=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.queueCampaigns.rows,{id:e.id}),f.queueCampaigns.count-=1,f.queueCampaigns.rows.length||f.getQueueCampaigns(),p.success({title:_.startCase("QueueCampaign")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getQueueCampaigns())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","queueCampaigns","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.motiondialer").controller("QueueCampaignsController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition",type:"outbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"outbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.bull.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"QueueCampaigns",channel:"voice",type:"outbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.motiondialer").controller("AbandonedCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o,r,l,d,c,m){var u=this,p=["name","active","limitCalls","message","originated","IntervalId","SquareProjectId","Trunk","TrunkId","ivrAnswerCallsDay","dialQueueProject","ivrTotalCallsDays","description"];function g(){_.forIn(u.campaigns,function(e,n){u.rpcCampaigns[n]&&_.merge(e,_.pick(u.rpcCampaigns[n],p))})}u.currentUser=m.getCurrentUser(),u.count=o.count,u.campaigns=o?_.keyBy(o.rows?o.rows:[],"id"):{},u.rpcCampaigns=s?_.keyBy(s.rows?s.rows:[],"id"):{},u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.query={sort:"-updatedAt",limit:10,page:1},u.success=f,u.getCampaigns=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=r.campaign.get(u.query,f).$promise:(u.query.id=u.userProfile.id,u.query.section="IvrCampaigns",u.promise=r.userProfile.getResources(u.query,f).$promise)},u.onSave=function(e){u.campaigns[e.id]&&(_.merge(u.campaigns[e.id],_.pick(e,p)),_.merge(u.rpcCampaigns[e.id],_.pick(e,p)))},u.$onInit=g,u.createOrEditIvrCampaign=function(e,n){a.show({controller:"CreateOrEditIvrCampaignDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{ivrCampaign:n,ivrCampaigns:_.values(u.campaigns),license:null,setting:null,crudPermissions:u.crudPermissions}})},l.onWithoutApply("campaign:save",u.onSave),u.interval=n(function(){},999);var v=!0,h=1;function f(e){u.count=e.count,u.campaigns=e?_.keyBy(e.rows?e.rows:[],"id"):{},g()}e.$watch("vm.query.filter",function(e,n){v?t(function(){v=!1}):(n||(h=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=h),u.getCampaigns())}),e.$on("$destroy",function(){l.removeAllListeners("campaign:save"),u.interval&&n.cancel(u.interval)})}e.$inject=["$scope","$timeout","$mdDialog","$document","$interval","rpcCampaigns","campaigns","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("IvrCampaignsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"outbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"outbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","realtimeManager","toasty","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueCallsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","sumHoldTime","sumDuration","sumBillable","outboundNoAnswerCallsDay","outboundBusyCallsDay","outboundCongestionCallsDay","outboundNoSuchCallsDay","outboundUnknownCallsDay","outboundDropCallsDayTimeout","outboundDropCallsDayCallersExit","outboundBlacklistCallsDay","outboundOriginateFailureCallsDay","outboundAnswerAgiCallsDay","outboundReCallsDay","outboundRejectCallsDay"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"outbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="QueueCampaigns",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.motiondialer").controller("QueueParamsMotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.motiondialer.realtime.agents":this.selectedTab=0;break;case"app.motiondialer.realtime.queues":this.selectedTab=1;break;case"app.motiondialer.realtime.queue_calls":this.selectedTab=2;break;case"app.motiondialer.realtime.abandonedcalls":this.selectedTab=3;break;case"app.motiondialer.realtime.queue_params":this.selectedTab=4;break;case"app.motiondialer.realtime.ivr_campaigns":this.selectedTab=5;break;default:this.selectedTab=0,t.go("app.motiondialer.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.motiondialer.realtime.agents");break;case 1:t.go("app.motiondialer.realtime.queues");break;case 2:t.go("app.motiondialer.realtime.queue_calls");break;case 3:t.go("app.motiondialer.realtime.abandonedcalls");break;case 4:t.go("app.motiondialer.realtime.queue_params");break;case 5:t.go("app.motiondialer.realtime.ivr_campaigns");break;default:t.go("app.motiondialer.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.motiondialer").controller("MotionDialerRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT",g.openchannelAccount=angular.copy(l),g.openchannelAccounts=r,g.newOpenchannelAccount=!1,g.openchannelAccount||(g.openchannelAccount={waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="OPENCHANNEL.NEW_OPENCHANNELACCOUNT",g.newOpenchannelAccount=!0),n.params.id&&(g.openchannelAccount.OpenchannelAccountId=n.params.id),g.addNewOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.save(g.openchannelAccount).$promise.then(function(e){g.openchannelAccounts.unshift(e.toJSON()),o.success({title:"OpenchannelAccount properly created",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelAccount=function(){g.errors=[],d.openchannelAccount.update({id:g.openchannelAccount.id},g.openchannelAccount).$promise.then(function(e){var n=_.find(g.openchannelAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelAccount properly saved!",msg:g.openchannelAccount.name?g.openchannelAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelAccount will be deleted.").ariaLabel("Delete OpenchannelAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.openchannelAccount.delete({id:g.openchannelAccount.id}).$promise.then(function(){_.remove(g.openchannelAccounts,{id:g.openchannelAccount.id}),o.success({title:"OpenchannelAccount properly deleted!",msg:(g.openchannelAccount.name||"openchannelAccount")+" has been deleted!"}),v(g.openchannelAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.openchannelAccount&&(t=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.openchannelAccount&&(a=_.find(g.lists,{id:Number(g.openchannelAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelAccounts","openchannelAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccountApp:t,openchannelAccount:r.openchannelAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.openchannelAccountApps.rows[n]=e:r.openchannelAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.openchannelAccountApps.rows.length;t++,0){var a=r.openchannelAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.openchannelAccount.context,a.exten=r.openchannelAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.openchannelAccount.addApplications({id:r.openchannelAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.openchannelAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.openchannelAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.openchannelAccount={},r.openchannelAccountApps={count:0,rows:[]},r.selectedOpenchannelAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]},{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"OpenchannelQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"openchannelQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:801}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,defaultValue:300,required:!0,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",role:"agent",nolimit:!0},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.openchannelAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getOpenchannelAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.openchannelAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getOpenchannelAccountApps=function(){r.promise=o.openchannelAccount.getApplications(r.query,t).$promise},r.editOpenchannelAccountApp=n,r.editInterval=function(e,n){if(r.openchannelAccountApps.rows.length){var t=r.openchannelAccountApps.rows[n]?r.openchannelAccountApps.rows[n]:r.openchannelAccountApps.rows[0];i.show({controller:"EditOpenchannelAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteOpenchannelAccountApp=function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedOpenchannelAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedOpenchannelAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedOpenchannelAccountApps.forEach(function(e){_.remove(r.openchannelAccountApps.rows,{id:e.id})}),r.selectedOpenchannelAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelAccount.getAgents({id:c.openchannelAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelAccount?"penalty "+e.UserOpenchannelAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.removeAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelAccount.addAgents({id:c.openchannelAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelAccount","openchannelAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditOpenchannelAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("openChannel")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.openchannelQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:801}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="OPENCHANNEL.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveOpenchannelAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","openchannelAccountApp","openchannelAccount","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("EditOpenchannelAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(e){d.openchannelInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountInteractions.rows,{id:e.id}),m.openchannelAccountInteractions.count-=1,m.openchannelAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountInteractions={count:0,rows:[]},m.selectedOpenchannelAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.openchannelInteractionDownload=function(s,e,n){return d.openchannelInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="openchannel-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getOpenchannelAccountInteractions=g,m.createOrEditOpenchannelAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,interaction:n,interactions:m.openchannelAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spyopenchannelInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"openchannel",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"openchannel.openchannelAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||OpenchannelAccountId:=$eq["+m.openchannelAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedOpenchannelAccountInteractions=function(){var e=angular.copy(m.selectedOpenchannelAccountInteractions);return m.selectedOpenchannelAccountInteractions=[],e},m.deleteOpenchannelAccountInteraction=v,m.deleteSelectedOpenchannelAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedOpenchannelAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountInteractions.forEach(function(e){v(e)}),m.selectedOpenchannelAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.openchannelAccountOpenchannelCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.openchannelAccountOpenchannelCannedAnswers.rows,{id:e.id}),m.openchannelAccountOpenchannelCannedAnswers.count-=1,m.openchannelAccountOpenchannelCannedAnswers.rows.length||p(),l.success({title:"OpenchannelCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.openchannelAccount={},m.openchannelAccountOpenchannelCannedAnswers={count:0,rows:[]},m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.openchannelAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the openchannelCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("openchannelCannedAnswer #")+e.id||"openchannelCannedAnswer")+"</b> will be deleted.").ariaLabel("delete openchannelCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getOpenchannelAccountOpenchannelCannedAnswers=p,m.createOrEditOpenchannelAccountOpenchannelCannedAnswer=function(e,n){o.show({controller:"CreateOrEditOpenchannelCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:m.openchannelAccount,openchannelCannedAnswer:n,openchannelCannedAnswers:m.openchannelAccountOpenchannelCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedOpenchannelAccountOpenchannelCannedAnswers=function(){var e=angular.copy(m.selectedOpenchannelAccountOpenchannelCannedAnswers);return m.selectedOpenchannelAccountOpenchannelCannedAnswers=[],e},m.deleteOpenchannelAccountOpenchannelCannedAnswer=g,m.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected openchannelCannedAnswers?").htmlContent("<b>"+m.selectedOpenchannelAccountOpenchannelCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete openchannelCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedOpenchannelAccountOpenchannelCannedAnswers.forEach(function(e){g(e)}),m.selectedOpenchannelAccountOpenchannelCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountOpenchannelCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER",g.openchannelCannedAnswer=angular.copy(l),g.openchannelCannedAnswers=r,g.newOpenchannelCannedAnswer=!1,g.openchannelCannedAnswer||(g.openchannelCannedAnswer={},g.title="OPENCHANNEL.NEW_OPENCHANNELCANNEDANSWER",g.newOpenchannelCannedAnswer=!0),n.params.id&&(g.openchannelCannedAnswer.OpenchannelAccountId=n.params.id),g.addNewOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.openchannelCannedAnswer).$promise.then(function(e){g.openchannelCannedAnswers.unshift(e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly created",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveOpenchannelCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.openchannelCannedAnswer.id},g.openchannelCannedAnswer).$promise.then(function(e){var n=_.find(g.openchannelCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"OpenchannelCannedAnswer properly saved!",msg:g.openchannelCannedAnswer.name?g.openchannelCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteOpenchannelCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The openchannelCannedAnswer will be deleted.").ariaLabel("Delete OpenchannelCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.openchannelCannedAnswer.id}).$promise.then(function(){_.remove(g.openchannelCannedAnswers,{id:g.openchannelCannedAnswer.id}),o.success({title:"OpenchannelCannedAnswer properly deleted!",msg:(g.openchannelCannedAnswer.name||"openchannelCannedAnswer")+" has been deleted!"}),v(g.openchannelCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","openchannelCannedAnswers","openchannelCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.openchannelAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.openchannelAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.OpenchannelAccountId=m.openchannelAccount.id,m.query.id=m.openchannelAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.openchannelAccount.id,field:"OpenchannelAccountId",route:"openchannelAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.openchannel").controller("OpenchannelAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.openchannelAccount=c||e.params.openchannelAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:p.openchannelAccounts?p.openchannelAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoOpenchannelAccounts=function(){e.go("app.openchannel.openchannelAccounts",{},{reload:"app.openchannel.openchannelAccounts"})},p.saveOpenchannelAccount=function(){r.openchannelAccount.update({id:p.openchannelAccount.id},p.openchannelAccount).$promise.then(function(){l.success({title:"OpenchannelAccount updated!",msg:p.openchannelAccount.name?p.openchannelAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.openchannelAccount&&(t=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.openchannelAccount&&(a=_.find(p.lists,{id:Number(p.openchannelAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),r.cmContact.describe({id:p.openchannelAccount.ListId}).$promise.then(function(e){p.fields=[];e=_.values(e.toJSON());for(var n=["id","createdAt","updatedAt","deletedAt","scheduledat","ListId","CompanyId"],t=0;t<e.length;t++)_.includes(n,e[t].columnName)||p.fields.push(e[t])}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelAccount","userProfile","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,replyUri,ListId,waitForTheAssignedAgent,mapKey,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUri,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,openchannelAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.openchannel.openchannelAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelAccount:e,openchannelAccounts:f.openchannelAccounts?f.openchannelAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelAccount")+"?").htmlContent("<b>"+(e.name||"openchannelAccount")+"</b> will be deleted.").ariaLabel("delete openchannelAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getOpenchannelAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelAccount=function(e,n){i.show({controller:"CreateOrEditOpenchannelAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelAccount:n,openchannelAccounts:f.openchannelAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelAccount=y,f.exportSelectedOpenchannelAccounts=function(){var e=angular.copy(f.selectedOpenchannelAccounts);return f.selectedOpenchannelAccounts=[],e},f.deleteSelectedOpenchannelAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelAccounts?").htmlContent("<b>"+f.selectedOpenchannelAccounts.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelAccounts.forEach(function(e){y(e)}),f.selectedOpenchannelAccounts=[]})},f.deselectOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=[]},f.selectAllOpenchannelAccounts=function(){f.selectedOpenchannelAccounts=f.openchannelAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.openchannelAccount&&(t=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.openchannelAccount&&(a=_.find(f.lists,{id:Number(f.openchannelAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.openchannelAccounts=e||{count:0,rows:[]}}function y(e){m.openchannelAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelAccounts.rows,{id:e.id}),f.openchannelAccounts.count-=1,f.openchannelAccounts.rows.length||f.getOpenchannelAccounts(),p.success({title:_.startCase("OpenchannelAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="OPENCHANNEL.EDIT_OPENCHANNELQUEUE",r.openchannelQueue=angular.copy(n),r.openchannelQueues=e,r.newOpenchannelQueue=!1,r.openchannelQueue||(r.openchannelQueue={strategy:"beepall",timeout:10},r.title="OPENCHANNEL.NEW_OPENCHANNELQUEUE",r.newOpenchannelQueue=!0),r.addNewOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.save(r.openchannelQueue).$promise.then(function(e){r.openchannelQueues.unshift(e.toJSON()),a.success({title:"OpenchannelQueue properly created",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveOpenchannelQueue=function(){r.errors=[],i.openchannelQueue.update({id:r.openchannelQueue.id},r.openchannelQueue).$promise.then(function(e){var n=_.find(r.openchannelQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"OpenchannelQueue properly saved!",msg:r.openchannelQueue.name?r.openchannelQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteOpenchannelQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The openchannelQueue will be deleted.").ariaLabel("Delete OpenchannelQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.openchannelQueue.delete({id:r.openchannelQueue.id}).$promise.then(function(){_.remove(r.openchannelQueues,{id:r.openchannelQueue.id}),a.success({title:"OpenchannelQueue properly deleted!",msg:(r.openchannelQueue.name||"openchannelQueue")+" has been deleted!"}),l(r.openchannelQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","openchannelQueues","openchannelQueue","api","Auth","crudPermissions"],angular.module("app.openchannel").controller("CreateOrEditOpenchannelQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getAgents({id:c.openchannelQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserOpenchannelQueue?"penalty "+e.UserOpenchannelQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.openchannelQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addAgents({id:c.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("OPENCHANNEL.ALL_AGENTS"),labelSelected:r.instant("OPENCHANNEL.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","openchannelQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.openchannelQueue.getTeams({id:l.openchannelQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.openchannelQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("OPENCHANNEL.ALL_TEAMS"),labelSelected:t.instant("OPENCHANNEL.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.removeTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.openchannelQueue.addTeams({id:l.openchannelQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","openchannelQueue","$translate","Auth","crudPermissions"],angular.module("app.openchannel").controller("OpenchannelQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.openchannelQueue=c||e.params.openchannelQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:u.openchannelQueues?u.openchannelQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoOpenchannelQueues=function(){e.go("app.openchannel.openchannelQueues",{},{reload:"app.openchannel.openchannelQueues"})},u.saveOpenchannelQueue=function(){r.openchannelQueue.update({id:u.openchannelQueue.id},u.openchannelQueue).$promise.then(function(){l.success({title:"OpenchannelQueue updated!",msg:u.openchannelQueue.name?u.openchannelQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","openchannelQueue","userProfileSection"],angular.module("app.openchannel").controller("OpenchannelQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.openchannelQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="openchannelQueues",f.listOrder="",f.listOrderAsc=null,f.selectedOpenchannelQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"openchannel",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.openchannel.openchannelQueues.edit",{id:e.id,openchannelQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"OpenchannelQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"OpenchannelQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{openchannelQueue:e,openchannelQueues:f.openchannelQueues?f.openchannelQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("openchannelQueue")+"?").htmlContent("<b>"+(e.name||"openchannelQueue")+"</b> will be deleted.").ariaLabel("delete openchannelQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:810}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.openchannel.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.openchannel.realtime.queues",{})}},f.success=E,f.getOpenchannelQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.openchannelQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="OpenchannelQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditOpenchannelQueue=function(e,n){i.show({controller:"CreateOrEditOpenchannelQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{openchannelQueue:n,openchannelQueues:f.openchannelQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteOpenchannelQueue=y,f.exportSelectedOpenchannelQueues=function(){var e=angular.copy(f.selectedOpenchannelQueues);return f.selectedOpenchannelQueues=[],e},f.deleteSelectedOpenchannelQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected openchannelQueues?").htmlContent("<b>"+f.selectedOpenchannelQueues.length+" selected</b> will be deleted.").ariaLabel("delete OpenchannelQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedOpenchannelQueues.forEach(function(e){y(e)}),f.selectedOpenchannelQueues=[]})},f.deselectOpenchannelQueues=function(){f.selectedOpenchannelQueues=[]},f.selectAllOpenchannelQueues=function(){f.selectedOpenchannelQueues=f.openchannelQueues.rows};var b=!0,A=1;function E(e){f.openchannelQueues=e||{count:0,rows:[]}}function y(e){m.openchannelQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.openchannelQueues.rows,{id:e.id}),f.openchannelQueues.count-=1,f.openchannelQueues.rows.length||f.getOpenchannelQueues(),p.success({title:_.startCase("OpenchannelQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEopenchannelQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEopenchannelQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getOpenchannelQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","openchannelQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.openchannel").controller("OpenchannelQueuesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.openchannel.realtime.agents":this.selectedTab=0;break;case"app.openchannel.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.openchannel.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.openchannel.realtime.agents");break;case 1:t.go("app.openchannel.realtime.queues");break;default:t.go("app.openchannel.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.openchannel").controller("OpenchannelRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.currentUser=s.getCurrentUser(),o.plugin={},o.getTrustedURL=function(){return t.trustAsResourceUrl(o.plugin.adminUrl)},a.plugin.get({id:e.params.id}).$promise.then(function(e){if(e)return o.plugin=e,a.plugin.get({id:o.plugin.id}).$promise}).catch(function(e){o.plugin=void 0})}e.$inject=["$state","$scope","$sce","api","socket","Auth"],angular.module("app.plugins.plugin").controller("PluginController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this,b=t(function(){},999);function A(){f.agents.rows.forEach(function(e){e.globalStatusDisplayValue=v.getAgentStatusDisplayValue(e)})}function E(){return f.query.offset=(f.query.page-1)*f.query.limit,d.realtime.getAgents(f.query).$promise.then(function(e){f.agents=e,A()}).catch(function(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.status?JSON.stringify(e.data):e.toString()})})}function y(e,n){if(n)return f.agents.count>f.agents.rows.length?E():(a=n,i=_.remove(f.agents.rows,["id",a]),void(f.agents.count-=i.length));if(f.query.sort.includes("globalStatus")&&(!f.query.globalStatusFilter||"busy"===f.query.globalStatusFilter)){var t="-"===f.query.sort[0]?"DESC":"ASC";if(!1===e)return E();if(!0===e)f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t);else{if(f.agents.count>f.agents.rows.length)return E();f.agents.rows=v.sortAgentsByStatus(f.agents.rows,t)}}var a,i}function S(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&E()}}function T(e){if(0!==f.query.globalQueueFilter.length){var n=e[_.capitalize(f.channel)+"QueueId"];f.query.globalQueueFilter.includes(n)&&y(!1,e.UserId)}}f.currentUser=p.getCurrentUser(),f.channel=n.params.channel,f.queueType=n.params.direction,f.agents=r,f.pauses=l||{count:0,rows:[]},f.license=g,f.userProfileSection=u&&1==u.count?u.rows[0]:null,f.crudPermissions=p.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.utcOffset=h,f.query={fields:"id,name,fullname,role,userpic,internal,online,voicePause,openchannelPause,faxPause,chatPause,smsPause,whatsappPause,mailPause,pauseType,lastPauseAt,lastLoginAt,lastPauseAt,chatCapacity,mailCapacity,openchannelCapacity,faxCapacity,smsCapacity,whatsappCapacity,screenrecording,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording",limit:10,page:1,sort:"fullname",globalStatusFilter:null,pauseTypeFilter:null,globalQueueFilter:[],channel:f.channel},f.getAgents=E,f.logout=function(e){return d.user.logout({id:e.id,device:"realtime",agent_id:e.id,agent_name:e.name}).$promise.then(function(){m.success({title:"Agent logout",msg:e.fullname+"  properly logout"})}).catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.LOGOUT"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.addQueue=function(e,n){a.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,channel:f.channel,direction:f.queueType,crudPermissions:f.crudPermissions}})},f.pause=function(e,n){return d.user.pause({id:e.id,type:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.PAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.unpause=function(e){return d.user.unpause({id:e.id}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.UNPAUSE"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.manageScreenRecording=function(e,n){return d.user.update({id:e.id},{screenrecording:n}).$promise.catch(function(e){m.error({title:e.status?"API:"+e.status+" - "+e.statusText:o.instant("VOICE.SCREENRECORDING"),msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.clearQueuesSelection=function(){f.query.globalQueueFilter=[]},f.selectAllQueues=function(){f.query.globalQueueFilter=f.queues.rows.map(function(e){return e.id})},f.getQueuesByChannel=function(){if(f.queues&&0<f.queues.count)return;var e={type:f.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=f.channel+"Queue";return d.getResourcesByRole(f.currentUser,n,e,null).then(function(e){f.queues=e}).catch(function(e){m.error({title:o.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.on("user:save",function(e){var n=_.find(f.agents.rows,["id",e.id]);n&&(_.merge(n,e),n.globalStatus=v.getAgentStatus(n),v.checkEveryChannelPauseStatus(n),n.globalStatusDisplayValue=v.getAgentStatusDisplayValue(n))}),c.on("user:update",function(e){var n=v.getUserUpdateEventOrigin(e);try{switch(n){case"login":!function(e){var n=!1;f.query.globalStatusFilter?e.loginInPause&&"pause"===f.query.globalStatusFilter?n=!0:e.loginInPause||"idle"!==f.query.globalStatusFilter||(n=!0):n=!0;if(n)E()}(e);break;case"logout":!function(e){if(0===f.agents.count)return;var n=_.find(f.agents.rows,["id",e.id]);{if(!n)return E();y(!1,n.id)}}(e);break;case"pause":t=e,(a=_.find(f.agents.rows,["id",t.id]))?(_.merge(a,t),a.globalStatus=v.getAgentStatus(a),v.checkEveryChannelPauseStatus(a),f.query.globalStatusFilter&&a.globalStatus!==f.query.globalStatusFilter?y(!1,a.id):a.globalStatusDisplayValue=v.getAgentStatusDisplayValue(a)):E()}}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}var t,a}),c.on("user:agentconnect",function(e){try{var n=_.find(f.agents.rows,["id",e.id]);y(!0),e.agentconnected?n?(_.merge(n,_.pick(e,["queue","destconnectedlinenum","routealias"])),y()):y(!1):"busy"!==f.query.globalStatusFilter||n||E()}catch(e){m.error({title:o.instant("VOICE.AGENTS"),msg:e.toString()})}}),c.on("user:agentcomplete",function(e){if("ATTENDED"===e.transfer)return;var n=_.find(f.agents.rows,["id",e.id]);n&&(delete n.queue,delete n.destconnectedlinenum,delete n.routealias,"busy"===f.query.globalStatusFilter?y(!1,e.id):y())}),c.on("userVoiceQueue:save",S),c.on("userVoiceQueue:remove",T),c.on("userChatQueue:save",S),c.on("userChatQueue:remove",T),c.on("userSmsQueue:save",S),c.on("userSmsQueue:remove",T),c.on("userMailQueue:save",S),c.on("userMailQueue:remove",T),c.on("userFaxQueue:save",S),c.on("userFaxQueue:remove",T),c.on("userOpenchannelQueue:save",S),c.on("userOpenchannelQueue:remove",T),c.on("userWhatsappQueue:save",S),c.on("userWhatsappQueue:remove",T),A(),e.$on("$destroy",function(){c.removeAllListeners("user:save"),c.removeAllListeners("user:update"),c.removeAllListeners("user:agentconnect"),c.removeAllListeners("user:agentcomplete"),c.removeAllListeners("userVoiceQueue:save"),c.removeAllListeners("userVoiceQueue:remove"),c.removeAllListeners("userChatQueue:save"),c.removeAllListeners("userChatQueue:remove"),c.removeAllListeners("userSmsQueue:save"),c.removeAllListeners("userSmsQueue:remove"),c.removeAllListeners("userMailQueue:save"),c.removeAllListeners("userMailQueue:remove"),c.removeAllListeners("userFaxQueue:save"),c.removeAllListeners("userFaxQueue:remove"),c.removeAllListeners("userOpenchannelQueue:save"),c.removeAllListeners("userOpenchannelQueue:remove"),c.removeAllListeners("userWhatsappQueue:save"),c.removeAllListeners("userWhatsappQueue:remove"),b&&t.cancel(b)})}e.$inject=["$scope","$state","$interval","$mdDialog","$document","$q","$translate","agents","pauses","api","socket","toasty","userProfileSection","Auth","license","realtimeManager","utcOffset"],angular.module("app.realtime").controller("AgentsRealtimeController",e)}(),function(){"use strict";function e(i,s,e,n,t,a,o,r,l,d,c,m,u){var p=this,g=e(function(){},999),v=u&&1==u.count?u.rows[0].crudPermissions:null,h=t.params.direction,f="outbound"===h?"QueueCampaigns":_.startCase(p.channel)+"Queues";function b(e){var n=_.find(p.queues.rows,["id",e.id]);n&&(n=l.updateQueue(e,n))}p.currentUser=r.getCurrentUser(),p.channel=t.params.channel,p.queues=m,p.crudPermissions=r.parseCrudPermissions(v),p.query={id:r.isUser()?p.currentUser.id:void 0,section:r.isUser()?f:void 0,channel:p.channel,type:h,sort:"name",limit:10,page:1},p.onInit=function(){var e,n;d.on(p.channel+"_queue:save",b),p.headersTemplate=(e="default.html","voice"===p.channel&&(e=h+".html"),"app/main/apps/realtime/views/queues/templates/headers/"+e),p.rowsTemplate=(n="default.html","voice"===p.channel&&(n=h+".html"),"app/main/apps/realtime/views/queues/templates/rows/"+n),"voice"===p.channel&&p.queues.rows.forEach(function(e){0<e.ringing&&e.available<e.loggedIn&&(e.available+=e.ringing)})},p.getQueues=function(){return p.query.offset=(p.query.page-1)*p.query.limit,o.realtime.getQueues(p.query).$promise.then(function(e){p.queues=e}).catch(function(e){c.error({title:a.instant("DASHBOARDS.QUEUES"),msg:e.status?JSON.stringify(e.data):e.toString()})})},p.editQueue=function(e,n){var t={crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:"CreateOrEdit"+_.startCase(p.channel)+"QueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.addOrRemoveAgents=function(e,n){var t={realtime:"voice"===p.channel,crudPermissions:p.crudPermissions};t[p.channel+"Queue"]=n,t[p.channel+"Queues"]=p.queues.rows;var a={controller:_.startCase(p.channel)+"QueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/"+p.channel+"/views/"+p.channel+"Queues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:t};return s.show(a)},p.showPredictiveInfo=function(e,n){var t={controller:"PredictiveInfoDialogController",controllerAs:"vm",templateUrl:"app/main/apps/realtime/views/queues/predictive/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{queueCampaign:n}};return s.show(t)},n.$on("$destroy",function(){d.removeAllListeners(p.channel+"_queue:save"),g&&e.cancel(g)})}e.$inject=["$document","$mdDialog","$interval","$scope","$state","$translate","api","Auth","realtimeManager","socket","toasty","queues","userProfileSection"],angular.module("app.realtime").controller("QueuesRealtimeController",e)}(),function(){"use strict";function e(e,n){this.queueCampaign=n,this.formatTime=function(e,n){var t=moment(e);return n&&t.add(n,"minutes"),t.format("HH:mm:ss")},this.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","queueCampaign"],angular.module("app.realtime").controller("PredictiveInfoDialogController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});var h=!0,f=1;e.$watch("vm.query.filter",function(e,n){h?i(function(){h=!1}):(n||(f=p.query.page),e!==n&&(p.query.page=1),e||(p.query.page=f),p.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];for(var n=0;n<e.data.errors.length;n+=1)t.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_CUSTOMIZATION",g.customization=angular.copy(l),g.customizations=r,g.newCustomization=!1,g.customization||(g.customization={},g.title="SETTINGS.NEW_CUSTOMIZATION",g.newCustomization=!0),g.addNewCustomization=function(){g.errors=[],d.setting.save(g.customization).$promise.then(function(e){g.customizations.unshift(e.toJSON()),o.success({title:"Customization properly created",msg:g.customization.name?g.customization.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomization=function(){g.errors=[],d.setting.update({id:g.customization.id},g.customization).$promise.then(function(e){var n=_.find(g.customizations,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Customization properly saved!",msg:g.customization.name?g.customization.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomization=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customization will be deleted.").ariaLabel("Delete Customization").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.customization.id}).$promise.then(function(){_.remove(g.customizations,{id:g.customization.id}),o.success({title:"Customization properly deleted!",msg:(g.customization.name||"customization")+" has been deleted!"}),v(g.customization)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customizations","customization","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditCustomizationDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.customizations=e,s.customization={},s.customizations&&s.customizations.rows&&s.customizations.rows.length&&(s.customization=s.customizations.rows[0]),s.saveCustomization=function(){s.customization.id?n.setting.update({id:s.customization.id},s.customization).$promise.then(function(){t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.customization).$promise.then(function(e){_.merge(s.customization,e),t.success({title:"Customization updated!",msg:s.customization.name?s.customization.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["customizations","api","toasty","license","Auth"],angular.module("app.settings").controller("CustomizationsController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg","ico"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/favicon".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationfaviconController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogoController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/logo_login".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationlogologinController",e)}(),function(){"use strict";function e(e,a){var i=this;i.customization={},i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.customization.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.customization.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e){i.customization=angular.copy(e),i.ngFlowOptions.target="/api/settings/1/preferred".replace(":id",i.customization.id),i.customization.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.settings").controller("CustomizationpreferredController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SETTINGS.EDIT_GENERAL",g.general=angular.copy(l),g.generals=r,g.newGeneral=!1,g.general||(g.general={min_internal:1e3,chatTimeout:30,phoneBarAutoUpdater:!0,phoneBarAutoUpdaterUrl:"https://www.xcally.com/bar/phonebar/autoupdater.xml",splitSizeCsv:5e3,splitSizePdf:1e3,splitSizeXlsx:5e3,messagesAlignment:"alternate",phoneBarRememberMeEnabled:!0,allowedLoginAttempts:5,blockDuration:10,loginMailFrequency:10,enforcePasswordHistory:!0,passwordHistoryLimit:3},g.title="SETTINGS.NEW_GENERAL",g.newGeneral=!0),g.addNewGeneral=function(){g.errors=[],d.setting.save(g.general).$promise.then(function(e){g.generals.unshift(e.toJSON()),o.success({title:"General properly created",msg:g.general.name?g.general.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveGeneral=function(){g.errors=[],d.setting.update({id:g.general.id},g.general).$promise.then(function(e){var n=_.find(g.generals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"General properly saved!",msg:g.general.name?g.general.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteGeneral=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The general will be deleted.").ariaLabel("Delete General").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.setting.delete({id:g.general.id}).$promise.then(function(){_.remove(g.generals,{id:g.general.id}),o.success({title:"General properly deleted!",msg:(g.general.name||"general")+" has been deleted!"}),v(g.general)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.setting.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.setting.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.cloudProviders=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","generals","general","api","Auth","license","setting","crudPermissions"],angular.module("app.settings").controller("CreateOrEditGeneralDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.currentUser=i.getCurrentUser(),s.license=a,s.generals=e,s.general={},s.generals&&s.generals.rows&&s.generals.rows.length&&(s.general=s.generals.rows[0]),_.isNil(s.general.privacyPolicyEmail)||(s.general.enablePrivacyPolicyEmail=!0),_.isNil(s.general.privacyPolicyName)||(s.general.enablePrivacyPolicyName=!0),_.isNil(s.general.privacyPolicyNumber)||(s.general.enablePrivacyPolicyNumber=!0),n.cloudProvider.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){s.cloudProviders=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CLOUDPROVIDERS",msg:e.data?JSON.stringify(e.data):e.toString()})}),s.saveGeneral=function(){s.general.enablePrivacyPolicyEmail||(s.general.privacyPolicyEmail=null),s.general.enablePrivacyPolicyNumber||(s.general.privacyPolicyNumber=null),s.general.enablePrivacyPolicyName||(s.general.privacyPolicyName=null),s.general.id?n.setting.update({id:s.general.id},s.general).$promise.then(function(){t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})}):n.setting.save(s.general).$promise.then(function(e){_.merge(s.general,e),t.success({title:"General updated!",msg:s.general.name?s.general.name+" has been updated!":""})}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsetting",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.onPrivacyPolicyChange=function(e){switch(e){case"email":s.general.enablePrivacyPolicyEmail&&!s.general.privacyPolicyEmail&&(s.general.privacyPolicyEmail=0);break;case"name":s.general.enablePrivacyPolicyName&&!s.general.privacyPolicyName&&(s.general.privacyPolicyName=0);break;case"number":s.general.enablePrivacyPolicyNumber&&!s.general.privacyPolicyNumber&&(s.general.privacyPolicyNumber=0)}}}e.$inject=["generals","api","toasty","license","Auth"],angular.module("app.settings").controller("GeneralsController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.channels=[{name:"voice",icon:"icon-phone"},{name:"chat",icon:"icon-hangouts"},{name:"mail",icon:"icon-email"},{name:"messaging",icon:"icon-message-text"},{name:"fax",icon:"icon-deskphone"},{name:"openchannel",icon:"icon-google-earth"},{name:"whatsapp",icon:"icon-whatsapp"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.addons=[{name:"webrtc",icon:"icon-server-plus"},{name:"jaws",icon:"icon-fish"},{name:"custom",icon:"icon-table-edit"},{name:"screenrecording",icon:"icon-video"},{name:"ai",icon:"icon-text-to-speech"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.requestLicense=function(e){t.show({controller:"RequestLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/request/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i,channels:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.updateLicense=function(e){t.show({controller:"UpdateLicenseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/license/update/dialog.html",parent:angular.element(n.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:i}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$promise.then(function(e){var n=[e.buffer],t=new Blob(n,{type:e.type}),a=window.document.createElement("a");a.setAttribute("href",URL.createObjectURL(t)),a.setAttribute("download","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],angular.module("app.settings.license").controller("LicenseController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(){e.hide()}m.errors=[],m.user=d.getCurrentUser(),m.license=angular.copy(t),m.channels=a,m.modules=i,m.addons=s,m.sessions=o,m.others=r,m.license.name=m.user.fullname,m.license.email=m.user.email,m.sendRequest=function(){for(var e in m.errors=[],m.table="||FIELD||OLD||NEW||\n",m.license)m.license.hasOwnProperty(e)&&!_.includes(["$promise","$resolved"],e)&&(t[e]===m.license[e]?m.table+="|"+e+"|"+(void 0!==t[e]?t[e]:"")+"|"+m.license[e]+"|\n":m.table+="|"+e+"|{color:red}"+(void 0!==t[e]?t[e]:"")+"{color}|*"+m.license[e]+"*|\n");l.jira.save({key:"MOTLICENSE",summary:"Motion License Request",description:m.table,issuetype:"License Request"}).$promise.then(function(e){n.success({title:"Request sent!",msg:c.instant("SETTINGS.LICENSE_REQUEST_SENT"),timeout:15e3}),u()}).catch(function(e){console.error(e),m.errors=[{message:c.instant("SETTINGS.JIRA_ERROR_MESSAGE"),type:"api.jira"}]})},m.closeDialog=u}e.$inject=["$mdDialog","toasty","license","channels","modules","addons","sessions","others","api","Auth","$translate"],angular.module("app.settings.license").controller("RequestLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.errors=[],s.license=angular.copy(t),s.licenseKey,s.updateLicense=function(){return a.license.update({id:1,key:s.licenseKey}).$promise.then(function(e){e&&(e.demo?n.error({title:"License update failed!",msg:"Invalid license key"}):n.success({title:"License properly updated!",msg:"The license has been updated!"}))}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UPDATElicense",msg:e.data?JSON.stringify(e.data):e.toString()})})},s.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","toasty","license","api","$translate"],angular.module("app.settings.license").controller("UpdateLicenseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;function g(e){a.hide(e)}p.currentUser=c.getCurrentUser(),p.errors=[],p.setting=u,p.license=m,p.hasModulePermissions={},p.passwordPattern=p.setting&&p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.title="SETTINGS.EDIT_NETWORK",p.network=angular.copy(l),p.networks=r,p.newNetwork=!1,p.network||(p.network={type:"localnet"},p.title="SETTINGS.NEW_NETWORK",p.newNetwork=!0),p.addNewNetwork=function(){p.errors=[],d.network.save(p.network).$promise.then(function(e){p.networks.unshift(e.toJSON()),o.success({title:"Network properly created",msg:p.network.name?p.network.name+" has been created!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveNetwork=function(){p.errors=[],d.network.update({id:p.network.id},p.network).$promise.then(function(e){var n=_.find(p.networks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Network properly saved!",msg:p.network.name?p.network.name+" has been saved!":""}),g(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteNetwork=function(e){p.errors=[];var n=a.confirm().title("Are you sure?").content("The network will be deleted.").ariaLabel("Delete Network").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.network.delete({id:p.network.id}).$promise.then(function(){_.remove(p.networks,{id:p.network.id}),o.success({title:"Network properly deleted!",msg:(p.network.name||"network")+" has been deleted!"}),g(p.network)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.network.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.network.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.getDateFromString=function(e){return null===e?void 0:new Date(e)},p.closeDialog=g}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","networks","network","api","Auth","license","setting"],angular.module("app.settings").controller("CreateOrEditNetworkDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g){var v=this;v.license=p,v.setting=g,v.currentUser=u.getCurrentUser(),v.networks=l||{count:0,rows:[]},v.table="networks",v.listOrder="",v.listOrderAsc=null,v.selectedNetworks=[],v.query={fields:"createdAt,updatedAt,id,type,value,username,password",sort:"-updatedAt",limit:10,page:1},v.arraytype=_.keyBy([{option:"LocalNET",value:"'localnet'"},{option:"ExternIP",value:"'externip'"},{option:"Turn",value:"'turn'"},{option:"Stun",value:"'stun'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),v.editdialog=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{network:e,networks:v.networks.rows,license:v.license,setting:null,crudPermissions:v.crudPermissions}})},v.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("network")+"?").htmlContent("<b>"+(e.name||"network")+"</b> will be deleted.").ariaLabel("delete network").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},v.success=b,v.getNetworks=function(){v.query.offset=(v.query.page-1)*v.query.limit,u.hasRole("admin")?v.promise=d.network.get(v.query,b).$promise:(v.query.id=v.userProfile.id,v.query.section="Networks",v.promise=d.userProfile.getResources(v.query,b).$promise)},v.createOrEditNetwork=function(e,n){i.show({controller:"CreateOrEditNetworkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/networks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{network:n,networks:v.networks.rows,license:v.license,setting:v.setting,crudPermissions:v.crudPermissions}})},v.deleteNetwork=A,v.exportSelectedNetworks=function(){var e=angular.copy(v.selectedNetworks);return v.selectedNetworks=[],e},v.deleteSelectedNetworks=function(e){var n=i.confirm().title("Are you sure want to delete the selected networks?").htmlContent("<b>"+v.selectedNetworks.length+" selected</b> will be deleted.").ariaLabel("delete Networks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){v.selectedNetworks.forEach(function(e){A(e)}),v.selectedNetworks=[]})},v.deselectNetworks=function(){v.selectedNetworks=[]},v.selectAllNetworks=function(){v.selectedNetworks=v.networks.rows};var h=!0,f=1;function b(e){v.networks=e||{count:0,rows:[]}}function A(e){d.network.delete({id:e.id}).$promise.then(function(){_.remove(v.networks.rows,{id:e.id}),v.networks.count-=1,v.networks.rows.length||v.getNetworks(),m.success({title:_.startCase("Network")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEnetwork"}];for(var n=0;n<e.data.errors.length;n++)m.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else m.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEnetwork",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){h?o(function(){h=!1}):(n||(f=v.query.page),e!==n&&(v.query.page=1),e||(v.query.page=f),v.getNetworks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","networks","api","msUtils","toasty","Auth","license","setting"],angular.module("app.settings").controller("NetworksController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],angular.module("app.settings").controller("SmtpController",e)}(),function(){"use strict";function e(e,i,s,n,t,a,o,r){var l,d=this;d.system=t||{},d.processes=a?a.rows:[],d.processLimit=7,d.selectedTab=n.params.tab||0,d.getInfo=function(){return r.system.get().$promise.then(function(e){_.merge(d.system,e)}).catch(d.cancelInterval)},d.getProcesses=function(){return r.pm2.get().$promise.then(function(e){_.merge(d.processes,e?e.rows:[])}).catch(d.cancelInterval)},d.cancelInterval=function(e){i.cancel(l)},d.updateProcess=function(e,n,t){var a=s.confirm().title("Would you like to change the status of the process #"+n+"?").textContent("The status will be changed to: "+t.toUpperCase()).ariaLabel("Lucky day").targetEvent(e).ok("Ok").cancel("Cancel");s.show(a).then(function(){return r.pm2.update({id:n,status:t})}).then(function(){i(d.getProcesses,1e3,1)}).then(function(){o.success({title:"Process updated!",msg:"Status properly changed to: "+t})})},l=i(d.getInfo,5e3),e.$on("$destroy",function(){d.cancelInterval()})}e.$inject=["$scope","$interval","$mdDialog","$state","system","processes","toasty","api"],angular.module("app.settings.system").controller("SystemController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;s.title="SETTINGS.UPDATE",s.progress=0,s.updating=!0,s.output="Waiting...",s.success=!0,s.interval=n(function(){s.progress<90&&(s.progress+=1)},1e3),s.closeDialog=function(){e.hide()},s.reload=function(){t.location.reload()},s.stopInterval=function(){angular.isDefined(s.interval)&&(n.cancel(s.interval),s.interval=void 0);s.progress=100,s.updating=!1},i.version.fetch().$promise.then(function(e){return s.output=e.output+"...",i.version.reset().$promise}).then(function(e){return s.output=e.output+"...",i.version.pull().$promise}).then(function(e){return s.output=e.output+"...",i.version.migrations().$promise}).then(function(e){return s.output=e.output+"...",i.version.restart().$promise}).then(function(e){s.output="Waiting to restart motion...",a(function(){s.stopInterval()},3e4)}).catch(function(e){s.success=!1,s.stopInterval(),s.output=JSON.stringify(e)})}e.$inject=["$mdDialog","$interval","$window","$timeout","api"],angular.module("app.settings").controller("UpdateDialogController",e)}(),function(){"use strict";function e(t,e,a,n,i){this.version=n||{},this.updateConfirm=function(e){var n=t.confirm().title("Would you like to update your system?").htmlContent('The system request time for the update should be below 1 minute.<br><br>Do you agree the terms of this <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">End User License Agreement<a>?').ariaLabel("").targetEvent(e).clickOutsideToClose(!0).parent(angular.element(a.body)).ok("I agree").cancel("Disagree");t.show(n).then(function(){t.show({controller:"UpdateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/updates/update/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!1})})}}e.$inject=["$mdDialog","$interval","$document","version","toasty"],angular.module("app.settings").controller("UpdatesController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.sms.realtime.agents":this.selectedTab=0;break;case"app.sms.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.sms.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.sms.realtime.agents");break;case 1:t.go("app.sms.realtime.queues");break;default:t.go("app.sms.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.sms").controller("SmsRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSACCOUNT",g.smsAccount=angular.copy(l),g.smsAccounts=r,g.newSmsAccount=!1,g.smsAccount||(g.smsAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.title="SMS.NEW_SMSACCOUNT",g.newSmsAccount=!0),n.params.id&&(g.smsAccount.SmsAccountId=n.params.id),g.addNewSmsAccount=function(){g.errors=[],d.smsAccount.save(g.smsAccount).$promise.then(function(e){g.smsAccounts.unshift(e.toJSON()),o.success({title:"SmsAccount properly created",msg:g.smsAccount.name?g.smsAccount.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsAccount=function(){g.errors=[],d.smsAccount.update({id:g.smsAccount.id},g.smsAccount).$promise.then(function(e){var n=_.find(g.smsAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsAccount properly saved!",msg:g.smsAccount.name?g.smsAccount.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsAccount will be deleted.").ariaLabel("Delete SmsAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.smsAccount.delete({id:g.smsAccount.id}).$promise.then(function(){_.remove(g.smsAccounts,{id:g.smsAccount.id}),o.success({title:"SmsAccount properly deleted!",msg:(g.smsAccount.name||"smsAccount")+" has been deleted!"}),v(g.smsAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.smsAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.smsAccount&&(t=_.find(g.lists,{id:Number(g.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.smsAccount&&(a=_.find(g.lists,{id:Number(g.smsAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsAccounts","smsAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccountApp:t,smsAccount:r.smsAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.smsAccountApps.rows[n]=e:r.smsAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.smsAccountApps.rows.length;t++,0){var a=r.smsAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.smsAccount.context,a.exten=r.smsAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.smsAccount.addApplications({id:r.smsAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.smsAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.smsAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.smsAccount={},r.smsAccountApps={count:0,rows:[]},r.selectedSmsAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"SmsQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"smsQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:701}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.smsAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getSmsAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.smsAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getSmsAccountApps=function(){r.promise=o.smsAccount.getApplications(r.query,t).$promise},r.editSmsAccountApp=n,r.editInterval=function(e,n){if(r.smsAccountApps.rows.length){var t=r.smsAccountApps.rows[n]?r.smsAccountApps.rows[n]:r.smsAccountApps.rows[0];i.show({controller:"EditSmsAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteSmsAccountApp=function(e){_.remove(r.smsAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedSmsAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedSmsAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedSmsAccountApps.forEach(function(e){_.remove(r.smsAccountApps.rows,{id:e.id})}),r.selectedSmsAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.sms").controller("SmsAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsAccount.getAgents({id:c.smsAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsAccount?"penalty "+e.UserSmsAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.removeAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsAccount.addAgents({id:c.smsAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsAccount","smsAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditSmsAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("sms")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.smsQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="SMS.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveSmsAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","smsAccountApp","smsAccount","api","Auth","crudPermissions"],angular.module("app.sms").controller("EditSmsAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(e){d.smsInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountInteractions.rows,{id:e.id}),m.smsAccountInteractions.count-=1,m.smsAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountInteractions={count:0,rows:[]},m.selectedSmsAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.smsInteractionDownload=function(s,e,n){return d.smsInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="sms-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getSmsAccountInteractions=g,m.createOrEditSmsAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,interaction:n,interactions:m.smsAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spysmsInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"sms",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"sms.smsAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||SmsAccountId:=$eq["+m.smsAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedSmsAccountInteractions=function(){var e=angular.copy(m.selectedSmsAccountInteractions);return m.selectedSmsAccountInteractions=[],e},m.deleteSmsAccountInteraction=v,m.deleteSelectedSmsAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedSmsAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountInteractions.forEach(function(e){v(e)}),m.selectedSmsAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.smsAccountSmsCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.smsAccountSmsCannedAnswers.rows,{id:e.id}),m.smsAccountSmsCannedAnswers.count-=1,m.smsAccountSmsCannedAnswers.rows.length||p(),l.success({title:"SmsCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.smsAccount={},m.smsAccountSmsCannedAnswers={count:0,rows:[]},m.selectedSmsAccountSmsCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.smsAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the smsCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("smsCannedAnswer #")+e.id||"smsCannedAnswer")+"</b> will be deleted.").ariaLabel("delete smsCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getSmsAccountSmsCannedAnswers=p,m.createOrEditSmsAccountSmsCannedAnswer=function(e,n){o.show({controller:"CreateOrEditSmsCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:m.smsAccount,smsCannedAnswer:n,smsCannedAnswers:m.smsAccountSmsCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedSmsAccountSmsCannedAnswers=function(){var e=angular.copy(m.selectedSmsAccountSmsCannedAnswers);return m.selectedSmsAccountSmsCannedAnswers=[],e},m.deleteSmsAccountSmsCannedAnswer=g,m.deleteSelectedSmsAccountSmsCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected smsCannedAnswers?").htmlContent("<b>"+m.selectedSmsAccountSmsCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete smsCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedSmsAccountSmsCannedAnswers.forEach(function(e){g(e)}),m.selectedSmsAccountSmsCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.sms").controller("SmsAccountSmsCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="SMS.EDIT_SMSCANNEDANSWER",g.smsCannedAnswer=angular.copy(l),g.smsCannedAnswers=r,g.newSmsCannedAnswer=!1,g.smsCannedAnswer||(g.smsCannedAnswer={},g.title="SMS.NEW_SMSCANNEDANSWER",g.newSmsCannedAnswer=!0),n.params.id&&(g.smsCannedAnswer.SmsAccountId=n.params.id),g.addNewSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.smsCannedAnswer).$promise.then(function(e){g.smsCannedAnswers.unshift(e.toJSON()),o.success({title:"SmsCannedAnswer properly created",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSmsCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.smsCannedAnswer.id},g.smsCannedAnswer).$promise.then(function(e){var n=_.find(g.smsCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"SmsCannedAnswer properly saved!",msg:g.smsCannedAnswer.name?g.smsCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSmsCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The smsCannedAnswer will be deleted.").ariaLabel("Delete SmsCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.smsCannedAnswer.id}).$promise.then(function(){_.remove(g.smsCannedAnswers,{id:g.smsCannedAnswer.id}),o.success({title:"SmsCannedAnswer properly deleted!",msg:(g.smsCannedAnswer.name||"smsCannedAnswer")+" has been deleted!"}),v(g.smsCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","smsCannedAnswers","smsCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.smsAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.smsAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.SmsAccountId=m.smsAccount.id,m.query.id=m.smsAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.smsAccount.id,field:"SmsAccountId",route:"smsAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.sms").controller("SmsAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.smsAccount=c||e.params.smsAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.agentadddialog=function(e,n){t.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:p.smsAccounts?p.smsAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoSmsAccounts=function(){e.go("app.sms.smsAccounts",{},{reload:"app.sms.smsAccounts"})},p.saveSmsAccount=function(){r.smsAccount.update({id:p.smsAccount.id},p.smsAccount).$promise.then(function(){l.success({title:"SmsAccount updated!",msg:p.smsAccount.name?p.smsAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.smsAccount&&(t=_.find(p.lists,{id:Number(p.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.smsAccount&&(a=_.find(p.lists,{id:Number(p.smsAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsAccount","userProfile","userProfileSection"],angular.module("app.sms").controller("SmsAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedSmsAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,token,remote,ListId,type,phone,accountSid,authId,authToken,smsMethod,username,password,baseUrl,apiKey,accountId,applicationId,senderString,deliveryReport,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,description,receiveUrl,deliveryReportUrl,notificationSound,notificationShake,notificationTemplate,queueTransfer,queueTransferTimeout,agentTransfer,agentTransferTimeout",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Skebby",value:"'skebby'"},{option:"Connectel",value:"'connectel'"},{option:"ClickSend",value:"'clicksend'"},{option:"Plivo",value:"'plivo'"},{option:"Infobip",value:"'infobip'"},{option:"Clickatell",value:"'clickatell'"},{option:"Bandwidth",value:"'bandwidth'"},{option:"CSCTelecom",value:"'csc'"},{option:"Intelepeer",value:"'intelepeer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysmsMethod=_.keyBy([{option:"Basic",value:"'SI'"},{option:"Classic",value:"'TI'"},{option:"Classic+",value:"'GP'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,smsAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.sms.smsAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"SmsAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsAccount:e,smsAccounts:f.smsAccounts?f.smsAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsAccount")+"?").htmlContent("<b>"+(e.name||"smsAccount")+"</b> will be deleted.").ariaLabel("delete smsAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSmsAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsAccount=function(e,n){i.show({controller:"CreateOrEditSmsAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsAccount:n,smsAccounts:f.smsAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSmsAccount=y,f.exportSelectedSmsAccounts=function(){var e=angular.copy(f.selectedSmsAccounts);return f.selectedSmsAccounts=[],e},f.deleteSelectedSmsAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsAccounts?").htmlContent("<b>"+f.selectedSmsAccounts.length+" selected</b> will be deleted.").ariaLabel("delete SmsAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsAccounts.forEach(function(e){y(e)}),f.selectedSmsAccounts=[]})},f.deselectSmsAccounts=function(){f.selectedSmsAccounts=[]},f.selectAllSmsAccounts=function(){f.selectedSmsAccounts=f.smsAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.smsAccount&&(t=_.find(f.lists,{id:Number(f.smsAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.smsAccount&&(a=_.find(f.lists,{id:Number(f.smsAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.smsAccounts=e||{count:0,rows:[]}}function y(e){m.smsAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.smsAccounts.rows,{id:e.id}),f.smsAccounts.count-=1,f.smsAccounts.rows.length||f.getSmsAccounts(),p.success({title:_.startCase("SmsAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="SMS.EDIT_SMSQUEUE",r.smsQueue=angular.copy(n),r.smsQueues=e,r.newSmsQueue=!1,r.smsQueue||(r.smsQueue={strategy:"beepall",timeout:10},r.title="SMS.NEW_SMSQUEUE",r.newSmsQueue=!0),r.addNewSmsQueue=function(){r.errors=[],i.smsQueue.save(r.smsQueue).$promise.then(function(e){r.smsQueues.unshift(e.toJSON()),a.success({title:"SmsQueue properly created",msg:r.smsQueue.name?r.smsQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveSmsQueue=function(){r.errors=[],i.smsQueue.update({id:r.smsQueue.id},r.smsQueue).$promise.then(function(e){var n=_.find(r.smsQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"SmsQueue properly saved!",msg:r.smsQueue.name?r.smsQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteSmsQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The smsQueue will be deleted.").ariaLabel("Delete SmsQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.smsQueue.delete({id:r.smsQueue.id}).$promise.then(function(){_.remove(r.smsQueues,{id:r.smsQueue.id}),a.success({title:"SmsQueue properly deleted!",msg:(r.smsQueue.name||"smsQueue")+" has been deleted!"}),l(r.smsQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.smsQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.smsQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","smsQueues","smsQueue","api","Auth","crudPermissions"],angular.module("app.sms").controller("CreateOrEditSmsQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getAgents({id:c.smsQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserSmsQueue?"penalty "+e.UserSmsQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.smsQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addAgents({id:c.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("SMS.ALL_AGENTS"),labelSelected:r.instant("SMS.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","smsQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.smsQueue.getTeams({id:l.smsQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.smsQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("SMS.ALL_TEAMS"),labelSelected:t.instant("SMS.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.removeTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.smsQueue.addTeams({id:l.smsQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","smsQueue","$translate","Auth","crudPermissions"],angular.module("app.sms").controller("SmsQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.smsQueue=c||e.params.smsQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:u.smsQueues?u.smsQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoSmsQueues=function(){e.go("app.sms.smsQueues",{},{reload:"app.sms.smsQueues"})},u.saveSmsQueue=function(){r.smsQueue.update({id:u.smsQueue.id},u.smsQueue).$promise.then(function(){l.success({title:"SmsQueue updated!",msg:u.smsQueue.name?u.smsQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","smsQueue","userProfileSection"],angular.module("app.sms").controller("SmsQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.smsQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="smsQueues",f.listOrder="",f.listOrderAsc=null,f.selectedSmsQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"sms",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.sms.smsQueues.edit",{id:e.id,smsQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"SmsQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"SmsQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{smsQueue:e,smsQueues:f.smsQueues?f.smsQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("smsQueue")+"?").htmlContent("<b>"+(e.name||"smsQueue")+"</b> will be deleted.").ariaLabel("delete smsQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:710}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.sms.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.sms.realtime.queues",{})}},f.success=E,f.getSmsQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.smsQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="SmsQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSmsQueue=function(e,n){i.show({controller:"CreateOrEditSmsQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/sms/views/smsQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{smsQueue:n,smsQueues:f.smsQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteSmsQueue=y,f.exportSelectedSmsQueues=function(){var e=angular.copy(f.selectedSmsQueues);return f.selectedSmsQueues=[],e},f.deleteSelectedSmsQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected smsQueues?").htmlContent("<b>"+f.selectedSmsQueues.length+" selected</b> will be deleted.").ariaLabel("delete SmsQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSmsQueues.forEach(function(e){y(e)}),f.selectedSmsQueues=[]})},f.deselectSmsQueues=function(){f.selectedSmsQueues=[]},f.selectAllSmsQueues=function(){f.selectedSmsQueues=f.smsQueues.rows};var b=!0,A=1;function E(e){f.smsQueues=e||{count:0,rows:[]}}function y(e){m.smsQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.smsQueues.rows,{id:e.id}),f.smsQueues.count-=1,f.smsQueues.rows.length||f.getSmsQueues(),p.success({title:_.startCase("SmsQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsmsQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsmsQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSmsQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","smsQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.sms").controller("SmsQueuesController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.getAgents(),d.success({title:_.startCase("Agent")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.query={fields:"createdAt,updatedAt,id,role,fullname,name,alias,showWebBar,email,phone,mobile,userpic,password,hotdesk,autointernal,internal,loginInPause,description,dtlscertfile,dtlsprivatekey,wssPort,voicemail,transport,host,nat,type,allow,callerid,context,callgroup,pickupgroup,chanspy,videosupport,extensionMonitor,chatCapacity,mailCapacity,smsCapacity,openchannelCapacity,faxCapacity,whatsappCapacity,phoneBarEnableSettings,phoneBarAutoAnswer,phoneBarAutoAnswerDelay,phoneBarRingInUse,phoneBarEnableRecording,phoneBarEnableDtmfTone,phoneBarDnd,phoneBarUnansweredCallBadge,phoneBarEnableJaws,phoneBarOutboundProxy,phoneBarUnconditional,phoneBarUnconditionalNumber,phoneBarRemoteControl,phoneBarRemoteControlPort,phoneBarExpires,phoneBarListenPort,permissions,allowmessenger,phoneBarPrefixRequired,passwordResetAt,disabled,blocked,phoneBarEnableScreenRecordingByAgent,phoneBarEnableAutomaticScreenRecording,privacyEnabled,downloadAttachments,downloadOmnichannelInteractions,downloadVoiceRecordings,selectRecallMeCampaign,ignorePauseForPreviewCalls,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.teamadddialog=function(e,n){a.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("agent")+"?").htmlContent("<b>"+(e.name||"agent")+"</b> will be deleted.").ariaLabel("delete agent").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){f(e)})},g.success=v,g.getAgents=h,g.createOrEditAgent=function(e,n){a.show({controller:"CreateOrEditAgentDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{agent:n,agents:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.agent={role:"agent",showWebBar:"0",autointernal:!0,wssPort:8089,type:"friend",context:"from-sip",phoneBarRemoteControl:!0,phoneBarRemoteControlPort:9888,allowmessenger:!0,downloadAttachments:!0,downloadOmnichannelInteractions:!0,downloadVoiceRecordings:!0},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditAgentDialogController",e)}(),function(){"use strict";function e(e,a){var i=this;i.agent={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.agent.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.agent.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.agent=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.agent.id+"/avatar",i.agent.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Agentchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.agent=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.agent.id,newPassword:r.password};r.currentUser.id==r.agent.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Agent password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.agent.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.agent.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.agentForm.password.$setValidity("oldPasswordMatch",!1):t.agentForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","agent","setting","Auth"],angular.module("app.staff").controller("AgentchangepasswordController",e)}(),function(){"use strict";function e(e,n,i,t,s){var o=this;o.agent={},o.navigation=t.getNavigation(),o.crudPermissions,o.init=function(e,n){o.agent=e,o.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1}},o.onChange=function(n,t){if((t||n).enabled){if(t)t.enabled=!0,o.agent.permissions.push(t.id);else for(var e=0;e<n.children.length;e++)n.children[e].enabled=!0,o.agent.permissions.push(n.children[e].id);n.enabled=!0,o.agent.permissions.push(n.id)}else if(t)t.enabled=!1,_.remove(o.agent.permissions,function(e){return t.id===e}),_.filter(n.children,{enabled:!1}).length===n.children.length&&(n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e}));else{n.enabled=!1,_.remove(o.agent.permissions,function(e){return n.id===e});for(var a=0;a<n.children.length;a++)n.children[a].enabled=!1,_.remove(o.agent.permissions,function(e){return n.children[a].id===e})}return i.user.update({id:o.agent.id,permissions:_.uniq(o.agent.permissions)}).$promise.then(function(){s.success({title:"agent updated!",msg:o.agent.name?o.agent.name+" has been updated!":""})}).catch(function(e){console.error(e)})}}e.$inject=["$document","$mdDialog","api","msNavigationAgentService","toasty"],angular.module("app.staff").controller("AgentPermissionsController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d[c.apiName].get({fields:"id,name,strategy,type",channel:c.channel,type:"voice"===c.channel?c.direction:void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.user.getQueues({id:c.agent.id,fields:"id,name,strategy,type,penalty",nolimit:!0,type:"voice"===c.channel?c.direction:void 0,channel:c.channel}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return"voice"===c.channel&&(n.penalty=void 0!==n&&void 0!==e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"penalty 0"),n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.agent=n,c.crudPermissions=r,c.penalty=0,c.channel=t,c.direction=i,c.apiName=c.channel+"Queue",c.title=s.instant("STAFF.ADD_AGENT_TO_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"type",line3:"voice"===c.channel?"penalty":"",labelAll:s.instant("STAFF.ALL_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),labelSelected:s.instant("STAFF.SELECTED_"+("outbound"===c.direction?"QUEUE_CAMPAIGNS":c.channel.toUpperCase()+"_QUEUES")),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}},c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){var e;switch(c.channel){case"voice":switch(c.direction){case"inbound":e="VoiceQueues";break;case"outbound":e="QueueCampaigns"}break;case"chat":e="ChatQueues";break;case"mail":e="MailQueues";break;case"sms":e="SmsQueues";break;case"openchannel":e="OpenchannelQueues";break;case"fax":e="FaxQueues"}d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:e}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveQueues=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.user.removeQueues({id:c.agent.id,ids:_.map(t,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else if("voice"===c.channel){for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.user.addQueues({id:c.agent.id,ids:_.map(o,"id"),channel:c.channel,penalty:_.trim(s,"penalty ")}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}else d.user.addQueues({id:c.agent.id,ids:_.map(r,"id"),channel:c.channel}).$promise.then(function(){e()}).catch(function(e){n(e)})});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Queues association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:QUEUES_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","channel","direction","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentQueueAddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.user.getTeams({id:l.agent.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.agent=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("STAFF.ALL_TEAMS"),labelSelected:t.instant("STAFF.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.user.removeTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.user.addTeams({id:l.agent.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","agent","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("AgentteamaddController",e)}(),function(){"use strict";function e(e,n,i,s,t,a,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.queueaddchannel=function(e,n,t,a){i.show({controller:"AgentQueueAddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",parent:angular.element(s.body),targetEvent:t,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.teamadddialog=function(e,n){i.show({controller:"AgentteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){i.show({controller:"AgentchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{agent:e,setting:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","agent","userProfileSection"],angular.module("app.staff").controller("AgentController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TEAM",g.team=angular.copy(l),g.teams=r,g.newTeam=!1,g.team||(g.team={},g.title="STAFF.NEW_TEAM",g.newTeam=!0),g.addNewTeam=function(){g.errors=[],d.team.save(g.team).$promise.then(function(e){g.teams.unshift(e.toJSON()),o.success({title:"Team properly created",msg:g.team.name?g.team.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTeam=function(){g.errors=[],d.team.update({id:g.team.id},g.team).$promise.then(function(e){var n=_.find(g.teams,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Team properly saved!",msg:g.team.name?g.team.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTeam=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The team will be deleted.").ariaLabel("Delete Team").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.team.delete({id:g.team.id}).$promise.then(function(){_.remove(g.teams,{id:g.team.id}),o.success({title:"Team properly deleted!",msg:(g.team.name||"team")+" has been deleted!"}),v(g.team)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.team.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.team.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","teams","team","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTeamDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.team.getAgents({id:c.team.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserTeam?"penalty "+e.UserTeam.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.team=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.team.removeAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.team.addAgents({id:c.team.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("STAFF.ALL_AGENTS"),labelSelected:r.instant("STAFF.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","team","teams","realtime","$translate","Auth","crudPermissions"],angular.module("app.staff").controller("TeamagentaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.teams=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="teams",f.listOrder="",f.listOrderAsc=null,f.selectedTeams=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"TeamagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{team:e,teams:f.teams?f.teams.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("team")+"?").htmlContent("<b>"+(e.name||"team")+"</b> will be deleted.").ariaLabel("delete team").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTeams=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.team.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Teams",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTeam=function(e,n){i.show({controller:"CreateOrEditTeamDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/teams/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{team:n,teams:f.teams.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTeam=y,f.exportSelectedTeams=function(){var e=angular.copy(f.selectedTeams);return f.selectedTeams=[],e},f.deleteSelectedTeams=function(e){var n=i.confirm().title("Are you sure want to delete the selected teams?").htmlContent("<b>"+f.selectedTeams.length+" selected</b> will be deleted.").ariaLabel("delete Teams").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTeams.forEach(function(e){y(e)}),f.selectedTeams=[]})},f.deselectTeams=function(){f.selectedTeams=[]},f.selectAllTeams=function(){f.selectedTeams=f.teams.rows};var b=!0,A=1;function E(e){f.teams=e||{count:0,rows:[]}}function y(e){m.team.delete({id:e.id}).$promise.then(function(){_.remove(f.teams.rows,{id:e.id}),f.teams.count-=1,f.teams.rows.length||f.getTeams(),p.success({title:_.startCase("Team")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEteam"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEteam",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTeams())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","teams","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TeamsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_TELEPHONE",g.telephone=angular.copy(l),g.telephones=r,g.newTelephone=!1,g.telephone||(g.telephone={role:"telephone",autointernal:!0,context:"from-sip"},g.title="STAFF.NEW_TELEPHONE",g.newTelephone=!0),g.addNewTelephone=function(){g.errors=[],d.user.save(g.telephone).$promise.then(function(e){g.telephones.unshift(e.toJSON()),o.success({title:"Telephone properly created",msg:g.telephone.name?g.telephone.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTelephone=function(){g.errors=[],d.user.update({id:g.telephone.id},g.telephone).$promise.then(function(e){var n=_.find(g.telephones,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Telephone properly saved!",msg:g.telephone.name?g.telephone.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTelephone=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The telephone will be deleted.").ariaLabel("Delete Telephone").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.user.delete({id:g.telephone.id}).$promise.then(function(){_.remove(g.telephones,{id:g.telephone.id}),o.success({title:"Telephone properly deleted!",msg:(g.telephone.name||"telephone")+" has been deleted!"}),v(g.telephone)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","telephones","telephone","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditTelephoneDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.telephone=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.telephone.id,newPassword:r.password};r.currentUser.id==r.telephone.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"Telephone password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.telephone.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.telephone.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.telephoneForm.password.$setValidity("oldPasswordMatch",!1):t.telephoneForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","telephone","setting","Auth"],angular.module("app.staff").controller("TelephonechangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.telephone=c||e.params.telephone||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.changepassworddialog=function(e,n){t.show({controller:"TelephonechangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{telephone:e,setting:o,telephones:u.telephones?u.telephones.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTelephones=function(){e.go("app.staff.telephones",{},{reload:"app.staff.telephones"})},u.saveTelephone=function(){r.user.update({id:u.telephone.id},u.telephone).$promise.then(function(){l.success({title:"Telephone updated!",msg:u.telephone.name?u.telephone.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.telephone&&(t=_.find(u.contexts,{name:u.telephone.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","telephone","userProfileSection"],angular.module("app.staff").controller("TelephoneController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.telephones=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="telephones",f.listOrder="",f.listOrderAsc=null,f.selectedTelephones=[],f.query={fields:"createdAt,updatedAt,id,role,fullname,name,email,password,description,autointernal,internal,voicemail,transport,nat,allow,callerid,context,callgroup,pickupgroup,videosupport,encryption,phone,mobile",role:"telephone",sort:"-updatedAt",limit:10,page:1},f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.staff.telephones.edit",{id:e.id,telephone:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("telephone")+"?").htmlContent("<b>"+(e.name||"telephone")+"</b> will be deleted.").ariaLabel("delete telephone").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTelephones=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.user.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Telephones",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTelephone=function(e,n){i.show({controller:"CreateOrEditTelephoneDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/telephones/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{telephone:n,telephones:f.telephones.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTelephone=y,f.exportSelectedTelephones=function(){var e=angular.copy(f.selectedTelephones);return f.selectedTelephones=[],e},f.deleteSelectedTelephones=function(e){var n=i.confirm().title("Are you sure want to delete the selected telephones?").htmlContent("<b>"+f.selectedTelephones.length+" selected</b> will be deleted.").ariaLabel("delete Telephones").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTelephones.forEach(function(e){y(e)}),f.selectedTelephones=[]})},f.deselectTelephones=function(){f.selectedTelephones=[]},f.selectAllTelephones=function(){f.selectedTelephones=f.telephones.rows};var b=!0,A=1;function E(e){f.telephones=e||{count:0,rows:[]}}function y(e){m.user.delete({id:e.id}).$promise.then(function(){_.remove(f.telephones.rows,{id:e.id}),f.telephones.count-=1,f.telephones.rows.length||f.getTelephones(),p.success({title:_.startCase("Telephone")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTelephones())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","telephones","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("TelephonesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="STAFF.EDIT_USERPROFILE",g.userProfile=angular.copy(l),g.userProfiles=r,g.newUserProfile=!1,g.userProfile||(g.userProfile={crudPermissions:["r"],downloadAttachments:!0,downloadCallySquareRecordings:!0,downloadContactManagerLists:!0,downloadJscriptySessions:!0,downloadOmnichannelInteractions:!0,downloadScreenRecordings:!0,downloadVoiceRecordings:!0},g.title="STAFF.NEW_USERPROFILE",g.newUserProfile=!0),g.addNewUserProfile=function(){g.errors=[],d.userProfile.save(g.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(s.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),g.userProfiles.unshift(e.toJSON()),o.success({title:"UserProfile properly created",msg:g.userProfile.name?g.userProfile.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveUserProfile=function(){g.errors=[],d.userProfile.update({id:g.userProfile.id},g.userProfile).$promise.then(function(e){var n=_.find(g.userProfiles,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"UserProfile properly saved!",msg:g.userProfile.name?g.userProfile.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteUserProfile=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The userProfile will be deleted.").ariaLabel("Delete UserProfile").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.userProfile.delete({id:g.userProfile.id}).$promise.then(function(){_.remove(g.userProfiles,{id:g.userProfile.id}),o.success({title:"UserProfile properly deleted!",msg:(g.userProfile.name||"userProfile")+" has been deleted!"}),v(g.userProfile)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","userProfiles","userProfile","api","Auth","license","setting","crudPermissions"],angular.module("app.staff").controller("CreateOrEditUserProfileDialogController",e)}(),function(){"use strict";function e(n,a,i,e,t,s,o){var r=this;function l(e){n.hide(e)}r.newUserProfile=!0,r.userProfile=angular.copy(t),r.userProfiles=s,r.title=o.instant("STAFF.CLONE_USERPROFILE"),t&&t.name&&(r.title+=": "+t.name),r.cloneUserProfile=function(){return e.userProfile.clone({id:t.id},r.userProfile).$promise.then(function(e){var n,t;t=[],(n=e).crudPermissions.forEach(function(e){var n;switch(e){case"r":n="READ_PERMISSION";break;case"e":n="EDIT_PERMISSION";break;case"d":n="DELETE_PERMISSION"}t.push(o.instant("STAFF."+n))}),n.selectedcrudPermissions=t.join(", "),r.userProfiles.unshift(e.toJSON()),i.success({title:"UserProfile properly cloned",msg:r.userProfile.name?r.userProfile.name+" has been cloned!":""}),a.go("app.staff.userProfiles.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.userProfile.clone"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.userProfile.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","userProfile","userProfiles","$translate"],angular.module("app.staff").controller("UserProfilecloneController",e)}(),function(){"use strict";function e(t,o,r,l,d,e,n,c){var m=this;function u(e,n){switch(e.allResourcesEnabled="full"===n,n){case"full":return _.find(m.statusList,["tag","full"]);case"partial":return _.find(m.statusList,["tag","partial"]);case"disabled":return _.find(m.statusList,["tag","disabled"]);case"unlicensed":return _.find(m.statusList,["tag","unlicensed"]);case"unknown":default:return _.find(m.statusList,["tag","unknown"])}}function p(e){return l(function(n,t){var o,a;void 0!==e.channel&&_.includes(e.route,"Queue")?(a=e,l(function(n,t){var e=void 0!==a.channel&&"bull"===a.channel?"outbound":"inbound";return d[a.route].get({fields:"id,name,strategy,type",channel:"bull"===a.channel?"voice":a.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})).then(function(e){n(e)}).catch(function(e){t(e)}):(o=e,l(function(a,n){switch(o.route){case"voiceExtension":var e;switch(o.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}break;case"interval":var t=!0;break;case"disposition":var i=!0;break;case"user":var s;switch(o.title){case"Agents":s="agent";break;case"Telephones":s="telephone";break;case"Users":s="user"}}if("Reports"===o.title){if(!o.reportType)return d.analyticDefaultReport.get({nolimit:!0}).$promise.then(function(t){d.analyticCustomReport.get({nolimit:!0}).$promise.then(function(e){var n=_.union(t.rows,e.rows);a({count:n.length,rows:n.rows})})}).catch(function(e){n(e)});switch(o.reportType){case"default":o.route="analyticDefaultReport";break;case"custom":o.route="analyticCustomReport"}}return d[o.route].get({role:s||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:t?"null":void 0,MailAccountId:i?"null":void 0,FaxAccountId:i?"null":void 0,SmsAccountId:i?"null":void 0,OpenchannelAccountId:i?"null":void 0,ChatWebsiteId:i?"null":void 0,WhatsappAccountId:i?"null":void 0,ListId:i?"null":void 0,nolimit:!0}).$promise.then(function(e){a(e)}).catch(function(e){n(e)})})).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(e,n,t){var a=e&&0<e.length?e[0]:null;if(!a)return t;var i,s,o=_.find(n,["sectionId",a.id]);return o?(n=_.remove(n,["sectionId",a.id]),(i=a,s=o.id,l(function(n,t){d.userProfileResource.get({sectionId:s}).$promise.then(function(n){return p(i).then(function(e){return _.differenceBy(n.rows,e.rows,"id")})}).then(function(e){_.isEmpty(e)?n():t()}).catch(function(e){t(e)})})).then(function(){return t="full",g(e.shift(),n,t)}).catch(function(e){return l.reject(e)})):void 0}function a(a){var t="Marketplace"===a.title?"AppZone":a.title;m.license?void 0===a.permissions||a.permissions.association?void 0===a.license||m.license[a.license]?d.userProfileSection.get({userProfileId:m.userProfile.id,category:t}).$promise.then(function(e){var n=e&&e.rows&&0<e.rows.length?e.rows:[];if("Dashboards"===a.title)return _.isEmpty(n)?"disabled":n[0].autoAssociation?"full":d.userProfileResource.get({sectionId:n[0].id,resourceId:101}).$promise.then(function(e){return(e&&e.rows?e.rows[0]:null)?"full":"partial"});var t=_.filter(a.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e});return n.length!==t.length?0===n.length?"disabled":"partial":_.every(n,["autoAssociation",!0])?"full":g(_.filter(t,function(e){return void 0===e.permissions||e.permissions.association?e:void 0}),n,"partial")}).then(function(e){a.status=u(a,e)}).catch(function(e){var n=e?"unknown":"partial";a.status=u(a,n),e&&c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GETRESOURCES("+t.toUpperCase()+")",msg:e.status?JSON.stringify(e.data):e.toString()})}):a.status=u(a,"unlicensed"):d.userProfileSection.get({userProfileId:m.userProfile.id,sectionId:a.id}).$promise.then(function(e){var n=(e&&1===e.rows.length?e.rows[0]:null)?"full":"disabled";a.status=u(a,n)}):a.status=u(a,"unknown")}m.userProfile={},m.license={},m.navigation=e.getNavigation(),m.modules=m.navigation[0].children,m.statusList=[{id:0,name:"Fully Enabled",color:"green-A700-bg",info:"All resources enabled",tag:"full"},{id:1,name:"Partially Enabled",color:"orange-A700-bg",info:"Some resources enabled",tag:"partial"},{id:2,name:"Disabled",color:"grey-A400-bg",info:"No resources enabled",tag:"disabled"},{id:3,name:"Unlicensed",color:"red-A700-bg",info:"Module not included in the license",tag:"unlicensed"},{id:4,name:"Unknown",color:"grey-A700-bg",info:"Unknown status",tag:"unknown"}],m.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],m.init=function(e,n){m.userProfile=e,m.license=n},m.onChangeEnableAllResources=function(n){var e=void 0!==n.permissions&&!n.permissions.association,a="Marketplace"===n.title?"AppZone":n.title;if("Fully Enabled"!==n.status.name){var i=[];if(e)return i.push({category:a,sectionId:n.id,name:a,enabled:!0,crudPermissions:"red"}),d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})});var t=o.confirm({skipHide:!0}).title("Warning").textContent(r.instant("STAFF.PERMISSIONS_WARNING_ENABLE_ALL",{sectionName:r.instant(n.translate)})).ariaLabel("Warning").ok(r.instant("STAFF.CONFIRM")).cancel(r.instant("STAFF.CANCEL"));o.show(t).then(function(){switch(a){case"Dashboards":_.map(m.dashboardSections,function(e){i.push({category:a,sectionId:e.id,name:e.title,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})});break;default:_.map(n.children,function(e){var n=!(void 0===e.permissions||!e.permissions.hidden);if(!n){var t=e.title;switch(a){case"CallySquare":t="Projects"===t?"SquareProjects":t}i.push({category:a,sectionId:e.id,name:t,enabled:!0,autoAssociation:!0,crudPermissions:_.map(m.userProfile.crudPermissions).join("")})}})}return d.userProfile.addSections({id:m.userProfile.id},i).$promise.then(function(){n.status=u(n,"full"),c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})})}).catch(function(e){e?c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()}):n.status=u(n,n.status.tag)})}else if("Fully Enabled"===n.status.name){n.status=u(n,"disabled");var s=[];switch(a){case"Settings":case"Help":s=[n.id];break;case"Dashboards":s=_.map(m.dashboardSections,function(e){return e.id});break;default:s=_.map(n.children,function(e){return e.id})}return d.userProfile.removeSections({id:m.userProfile.id,ids:s}).$promise.then(function(){c.success({title:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_TITLE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name}),msg:r.instant("STAFF.NOTIFICATIONS.PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE",{sectionName:r.instant(n.translate),userProfileName:m.userProfile.name})})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.REMOVESECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})}},m.manageResources=function(e,n){o.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!1,locals:{userProfile:m.userProfile,userProfiles:[],section:e}}).then(function(){a(e)})},m.checkSectionResources=a}e.$inject=["$document","$mdDialog","$translate","$q","api","msNavigationService","Auth","toasty"],angular.module("app.staff").controller("UserProfilePermissionsController",e)}(),function(){"use strict";function e(n,t,i,o,r,e,a,l,s,d){var c=this;function m(){var a=void 0!==c.selectedSection.pending&&c.selectedSection.pending;return i(function(t,n){r.userProfileSection.get({userProfileId:c.userProfile.id,sectionId:c.selectedSection.id}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;a||(c.selectedSection.enabled=!!n&&!!n.enabled,c.selectedSection.autoAssociation=!!n&&!!n.autoAssociation,c.selectedSection.crudPermissions=v(n?n.crudPermissions:c.userProfile.crudPermissions)),t(n)}).catch(function(e){n(e)})})}function u(){return i(function(n,t){c.loadedSection?r.userProfileResource.get({sectionId:c.loadedSection.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)}):n(null)})}function p(){return i(function(n,t){void 0!==c.selectedSection.channel&&_.includes(c.selectedSection.route,"Queue")?i(function(n,t){var e=void 0!==c.selectedSection.channel&&"bull"===c.selectedSection.channel?"outbound":"inbound";return r[c.selectedSection.route].get({fields:"id,name,strategy,type",channel:"bull"===c.selectedSection.channel?"voice":c.selectedSection.channel,type:e,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){n(e)}).catch(function(e){t(e)}):i(function(n,t){var e,a;if("voiceExtension"===c.selectedSection.route)switch(c.selectedSection.title){case"InboundRoutes":e="inbound";break;case"OutboundRoutes":e="outbound";break;case"InternalRoutes":e="internal"}if("user"===c.selectedSection.route)switch(c.selectedSection.title){case"Agents":a="agent";break;case"Telephones":a="telephone";break;case"Users":a="user"}if("interval"===c.selectedSection.route)var i=!0;if("disposition"===c.selectedSection.route)var s=!0;if("Reports"===c.selectedSection.title&&(c.selectedSection.route="default"===c.selectedSection.reportType?"analyticDefaultReport":"analyticCustomReport"),"Dashboards"!==c.selectedSection.title)return r[c.selectedSection.route].get({role:a||void 0,type:e||void 0,VoiceExtensionId:e?"null":void 0,IntervalId:i?"null":void 0,MailAccountId:s?"null":void 0,FaxAccountId:s?"null":void 0,SmsAccountId:s?"null":void 0,OpenchannelAccountId:s?"null":void 0,ChatWebsiteId:s?"null":void 0,WhatsappAccountId:s?"null":void 0,ListId:s?"null":void 0,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)});n({count:1,rows:[{id:101,name:l.instant("DASHBOARDS.GENERAL")}]})}).then(function(e){n(e)}).catch(function(e){t(e)})})}function g(){var i=void 0!==c.selectedSection.pending&&c.selectedSection.pending,s=[];return u().then(function(e){var n;return s=e&&e.rows?e.rows:[],"Reports"===c.selectedSection.title&&(c.associatedReports=c.associatedReports?c.associatedReports:s,n=c.associatedReports,s=_.filter(n,{type:"default"===c.selectedSection.reportType?"DefaultReports":"CustomReports"})),void 0===c.selectedSection.permissions||c.selectedSection.permissions.association?p():{rows:[]}}).then(function(e){c.items=e.rows?_.map(e.rows,function(e){var n,t;return"Reports"===c.selectedSection.title&&(e.fullPath=(n=e.parent,t=c.treeStructure[0].text,t=function e(n,t,a){if(!a||_.isEmpty(a.children))return n;var a=_.find(a.children,function(e){return _.includes(t,e.id)?e:void 0});return n+=a?"/"+a.text:"",e(n,t,a)}(t,n,c.treeStructure[0])).replace(" ","_")),e.isValid=!0,e}):[],i||(c.selectedSection.selectedItems=_.map(s,function(e){return _.find(c.items,{id:e.resourceId})}));var n,t=_.differenceBy(c.selectedSection.selectedItems,c.items,"id");switch(_.isEmpty(t)||(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,t,"id")),c.selectedSection.title){case"Contexts":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"MusicOnHolds":c.selectedSection.selectedItems=_.filter(c.items,function(e){return e.defaultEntry?(e.isValid=!1,e):void 0!==_.find(s,{resourceId:e.id})?(e.isValid=!0,e):void 0});break;case"Reports":var a=(n=c.allReportsSelected,_.filter(n,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")}));c.selectedSection.selectedItems=b(c.selectedSection.selectedItems),c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,a,"id")}c.dualMultiselectOptions.selectedItems=c.selectedSection.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.items,c.dualMultiselectOptions.selectedItems,"id")}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})}function v(e){return e&&(c.selectedSection.allowEdit=!!_.includes(e,"e"),c.selectedSection.allowDelete=!!_.includes(e,"d")),function(){var e=["r"];if(c.selectedSection.allowEdit)e.push("e");else{var n=_.indexOf(e,["e"]);0<n&&c.selectedSection.crudPermissions.replace("e","")}if(c.selectedSection.allowDelete)e.push("d");else{var n=_.indexOf(e,["d"]);0<n&&c.selectedSection.crudPermissions.replace("d","")}return e}()}function h(e){var n=_.findIndex(c.subsections,function(e){return e.id==c.selectedSection.id});c.subsections[n].pending=e,f()}function f(){return c.pendingChanges=_.some(c.subsections,["pending",!0])}function b(e){return _.remove(e,function(e){return _.startsWith(e.parent,"default"===c.selectedSection.reportType?"motion":"custom")})}function A(){_.isEmpty(c.selectedSection.selectedItems)?c.allReportsSelected=_.remove(c.allReportsSelected,function(e){return e.type===("default"===c.selectedSection.reportType?"CustomReports":"DefaultReports")}):c.selectedSection.selectedItems.forEach(function(e){_.some(c.allReportsSelected,{id:e.id,parent:e.parent})||c.allReportsSelected.push(e)})}c.userProfile=e,c.penalty=0,c.section=angular.copy(d),c.title=l.instant("STAFF.PERMISSIONS_SECTION_TITLE",{sectionName:l.instant(c.section.translate)}),c.items=[],c.selectedItems=[],c.subsections=_.filter(c.section.children,function(e){return void 0!==e.permissions&&e.permissions.hidden?void 0:e}),c.dashboardSections=[{title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",id:100}],c.dashboardItems=[],"Dashboards"===c.section.title&&(c.dashboardItems=c.subsections,c.subsections=c.dashboardSections),c.selectedSection=null,c.loadedSection=null,c.allReportsSelected=[],c.closeDialog=function(e){if(c.pendingChanges){var n=t.confirm({skipHide:!0}).title("Warning").textContent(l.instant("STAFF.PERMISSIONS_WARNING_CLOSE")).ariaLabel("Warning").targetEvent(e).ok(l.instant("STAFF.CLOSE")).cancel(l.instant("STAFF.CANCEL"));t.show(n).then(function(){t.hide()})}else t.hide()},c.onChangeSection=function(){return m().then(function(e){if(c.loadedSection=e,"Reports"===c.selectedSection.title)return i(function(n,t){r.analyticTreeReport.get({}).$promise.then(function(e){c.treeReports=e.rows||[],n(c.treeReports)}).catch(function(e){t(e)})}).then(function(){if(!c.selectedSection.reportType)return u().then(function(e){c.allReportsSelected=e?_.map(e.rows,function(e){return{id:e.resourceId,name:e.name,type:e.type}}):[]})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREE_REPORT_STRUCTURE",msg:e.data?JSON.stringify(e.data):e.toString()})});g()}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET"+c.selectedSection.title.toUpperCase(),msg:e.status?JSON.stringify(e.data):e.toString()})})},c.onChangeVisibility=function(){c.selectedSection.enabled=!c.selectedSection.enabled,h(!0)},c.onChangeAutoAssociation=function(){if(!c.selectedSection.autoAssociation){for(var e=[],n=0;n<c.dualMultiselectOptions.items.length;n++)e.push(c.dualMultiselectOptions.items[n]),c.dualMultiselectOptions.selectedItems.push(c.dualMultiselectOptions.items[n]);c.dualMultiselectOptions.items=[],c.dualMultiselectOptions.transferCallback(e,!1)}h(!0)},c.onChangeReportType=function(){c.treeStructure="default"===c.selectedSection.reportType?c.treeReports[0]?angular.fromJson(c.treeReports[0].tree):[]:c.treeReports[1]?angular.fromJson(c.treeReports[1].tree):[],c.selectedSection.selectedItems&&(c.allReportsSelected=b(c.allReportsSelected),A());g()},c.setPermission=function(e){"edit"===e?c.selectedSection.allowEdit=!c.selectedSection.allowEdit:"delete"===e&&(c.selectedSection.allowDelete=!c.selectedSection.allowDelete);c.selectedSection.crudPermissions=v(),h(!0)},c.saveSection=function(){var a="Marketplace"===c.section.title?"AppZone":c.section.title,e=_(c.subsections).filter({pending:!0}).map(function(e){var n="CallySquare"===a&&"Projects"===e.title?"SquareProjects":e.title,t="Reports"===n?c.allReportsSelected:e.selectedItems;return"Integrations"===a&&(e.autoAssociation=!0),{category:a,sectionId:e.id,name:n,enabled:e.enabled,autoAssociation:e.autoAssociation,crudPermissions:_.map(e.crudPermissions).join(""),Resources:_.map(t,function(e){return{name:e.name,resourceId:e.id,type:function(e,n){if("Reports"!==e)return e;{if(n.parent){var t=_.startsWith(n.parent,"motion")?"Default":"Custom";return t+e}return n.type}}(n,e)}})}}).value();return r.userProfile.addSections({id:c.userProfile.id},e).$promise.then(function(){c.subsections.forEach(function(e){e.pending=void 0}),c.associatedReports=null,f(),"Reports"!==c.selectedSection.title||c.selectedSection.reportType||n.userProfileForm.$setPristine(),o.success({title:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_TITLE",{sectionName:l.instant(a.translate)}),msg:l.instant("STAFF.NOTIFICATIONS.PERMISSIONS_SAVED_SUCCESS_MESSAGE")})}).then(function(){return m().then(function(e){c.loadedSection=e})}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:USERPROFILE.ADDSECTIONS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",line4:"fullPath",labelAll:l.instant("STAFF.PERMISSIONS_ALL_RESOURCES"),labelSelected:l.instant("STAFF.PERMISSIONS_SELECTED_RESOURCES"),transferCallback:function(e,n){h(!0),n?(c.selectedSection.selectedItems=_.pullAllBy(c.selectedSection.selectedItems,e,"id"),c.selectedSection.autoAssociation=!1):c.selectedSection.selectedItems=_.unionBy(c.selectedSection.selectedItems,e,"id"),"Reports"===c.selectedSection.title&&A()}}}e.$inject=["$scope","$mdDialog","$q","toasty","api","userProfile","userProfiles","$translate","Auth","section"],angular.module("app.staff").controller("UserProfilepermissionsmanageController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.userProfile=c||e.params.userProfile||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.permissionsmanagedialog=function(e,n){t.show({controller:"UserProfilepermissionsmanageController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.clonedialog=function(e,n){t.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:u.userProfiles?u.userProfiles.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoUserProfiles=function(){e.go("app.staff.userProfiles",{},{reload:"app.staff.userProfiles"})},u.saveUserProfile=function(){r.userProfile.update({id:u.userProfile.id},u.userProfile).$promise.then(function(){l.success({title:"UserProfile updated!",msg:u.userProfile.name?u.userProfile.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuserProfile",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","userProfile","userProfileSection"],angular.module("app.staff").controller("UserProfileController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.userProfiles=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="userProfiles",f.listOrder="",f.listOrderAsc=null,f.selectedUserProfiles=[],f.query={fields:"createdAt,updatedAt,id,name,description,crudPermissions,privacyEnabled,downloadAttachments,downloadCallySquareRecordings,downloadContactManagerLists,downloadJscriptySessions,downloadOmnichannelInteractions,downloadScreenRecordings,downloadVoiceRecordings",sort:"-updatedAt",limit:10,page:1},f.arraycrudPermissions=_.keyBy([{option:"Read_permission",value:"'r'",disabled:!0},{option:"Edit_permission",value:"'e'"},{option:"Delete_permission",value:"'d'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.userProfiles&&0<f.userProfiles.count&&f.userProfiles.rows.forEach(function(e){var n=[];e.crudPermissions.forEach(function(e){n.push(f.arraycrudPermissions[e].option)});var t=[];n.forEach(function(e){t.push(r.instant("STAFF."+e.toUpperCase()))}),e.selectedcrudPermissions=t.join(", ")}),f.editstate=function(e,n){t.go("app.staff.userProfiles.edit",{id:e.id,userProfile:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"UserProfilecloneController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{userProfile:e,userProfiles:f.userProfiles?f.userProfiles.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("userProfile")+"?").htmlContent("<b>"+(e.name||"userProfile")+"</b> will be deleted.").ariaLabel("delete userProfile").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getUserProfiles=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.userProfile.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="UserProfiles",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditUserProfile=function(e,n){i.show({controller:"CreateOrEditUserProfileDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/userProfiles/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{userProfile:n,userProfiles:f.userProfiles.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteUserProfile=y,f.exportSelectedUserProfiles=function(){var e=angular.copy(f.selectedUserProfiles);return f.selectedUserProfiles=[],e},f.deleteSelectedUserProfiles=function(e){var n=i.confirm().title("Are you sure want to delete the selected userProfiles?").htmlContent("<b>"+f.selectedUserProfiles.length+" selected</b> will be deleted.").ariaLabel("delete UserProfiles").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedUserProfiles.forEach(function(e){y(e)}),f.selectedUserProfiles=[]})},f.deselectUserProfiles=function(){f.selectedUserProfiles=[]},f.selectAllUserProfiles=function(){f.selectedUserProfiles=f.userProfiles.rows};var b=!0,A=1;function E(e){f.userProfiles=e||{count:0,rows:[]}}function y(e){m.userProfile.delete({id:e.id}).$promise.then(function(){_.remove(f.userProfiles.rows,{id:e.id}),f.userProfiles.count-=1,f.userProfiles.rows.length||f.getUserProfiles(),p.success({title:_.startCase("UserProfile")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuserProfile"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuserProfile",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getUserProfiles())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","userProfiles","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.staff").controller("UserProfilesController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],angular.module("app.staff").controller("CreateOrEditUserDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.currentUser=i.getCurrentUser(),s.errors=[],s.user=a,s.generateApiKey=function(){s.errors=[],t.user.createApiKey({id:s.user.id}).$promise.then(function(e){s.user.apiKey=e.api_key||"N/A",n.success({title:"User API key updated!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.createApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.createApiKey"}]})},s.removeApiKey=function(){s.errors=[],t.user.removeApiKey({id:s.user.id}).$promise.then(function(){s.user.apiKey="N/A",n.success({title:"User API key removed!"}),o()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.removeApiKey",msg:e.data?JSON.stringify(e.data.message):e.toString()}),s.errors=e.data.errors||[{message:e.toString(),type:"api.user.removeApiKey"}]})},s.closeDialog=o}e.$inject=["$mdDialog","toasty","api","user","Auth"],angular.module("app.staff").controller("UserapikeymanagerController",e)}(),function(){"use strict";function e(e,a){var i=this;i.user={},i.crudPermissions,i.ngFlowOptions={singleFile:!0,maxChunkRetries:1,chunkSize:8388608,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0},i.ngFlow={flow:{}},i.dropping=!1,i.fileAdded=function(e){var n=["png","jpg"];if(!_.includes(n,e.getExtension()))return a.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(8388608<e.size)return a.error({title:"File too big",msg:"The max allowed size is 8MB"}),!1;var t={id:e.uniqueIdentifier,file:e,type:"uploading"};return i.user.images.unshift(t),!0},i.upload=function(){i.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},i.ngFlow.flow.upload()},i.fileSuccess=function(a,e){angular.forEach(i.user.images,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result},n.type="image"}})},i.init=function(e,n){i.user=angular.copy(e),i.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},i.ngFlowOptions.target="api/users/"+i.user.id+"/avatar",i.user.images=[]}}e.$inject=["$cookies","toasty"],angular.module("app.staff").controller("Userchange_avatarController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.currentUser=o.getCurrentUser(),r.errors=[],r.setting=s,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.user=i,r.password="",r.oldPassword="",r.savePassword=function(){r.errors=[];var e={id:r.user.id,newPassword:r.password};r.currentUser.id==r.user.id&&(e.oldPassword=r.oldPassword);a.user.changePassword(e).$promise.then(function(){n.success({title:"User password properly updated!"}),l()}).catch(function(e){n.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()}),r.errors=e.data.errors||[{message:e.toString(),type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.userForm.password.$setValidity("oldPasswordMatch",!1):t.userForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","toasty","api","user","setting","Auth"],angular.module("app.staff").controller("UserchangepasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.apikeymanagerdialog=function(e,n){t.show({controller:"UserapikeymanagerController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.changepassworddialog=function(e,n){t.show({controller:"UserchangepasswordController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/edit/changepassword/changepassword.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{user:e,setting:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_APIKEY",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.query={fields:"createdAt,updatedAt,role,userProfileId,id,fullname,name,email,phone,mobile,userpic,password,description,autointernal,internal,transport,nat,allow,context,callgroup,pickupgroup,passwordResetAt,apiKey,videosupport,disabled,blocked,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.confirm().title("Are you sure want to delete the "+_.startCase("user")+"?").htmlContent("<b>"+(e.name||"user")+"</b> will be deleted.").ariaLabel("delete user").targetEvent(n).ok("OK").cancel("CANCEL");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.success({title:_.startCase("User")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEuser"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEuser",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("UsersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.cannedAnswers=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="cannedAnswers",f.listOrder="",f.listOrderAsc=null,f.selectedCannedAnswers=[],f.query={fields:"createdAt,updatedAt,id,key,value,description",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{cannedAnswer:e,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("cannedAnswer")+"?").htmlContent("<b>"+(e.name||"cannedAnswer")+"</b> will be deleted.").ariaLabel("delete cannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCannedAnswers=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.cannedAnswer.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CannedAnswers",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCannedAnswer=function(e,n){i.show({controller:"CreateOrEditCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/cannedAnswers/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{cannedAnswer:n,cannedAnswers:f.cannedAnswers.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCannedAnswer=y,f.exportSelectedCannedAnswers=function(){var e=angular.copy(f.selectedCannedAnswers);return f.selectedCannedAnswers=[],e},f.deleteSelectedCannedAnswers=function(e){var n=i.confirm().title("Are you sure want to delete the selected cannedAnswers?").htmlContent("<b>"+f.selectedCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete CannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCannedAnswers.forEach(function(e){y(e)}),f.selectedCannedAnswers=[]})},f.deselectCannedAnswers=function(){f.selectedCannedAnswers=[]},f.selectAllCannedAnswers=function(){f.selectedCannedAnswers=f.cannedAnswers.rows};var b=!0,A=1;function E(e){f.cannedAnswers=e||{count:0,rows:[]}}function y(e){m.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(f.cannedAnswers.rows,{id:e.id}),f.cannedAnswers.count-=1,f.cannedAnswers.rows.length||f.getCannedAnswers(),p.success({title:_.startCase("CannedAnswer")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcannedAnswer"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcannedAnswer",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCannedAnswers())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","cannedAnswers","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CANNEDANSWER",g.cannedAnswer=angular.copy(l),g.cannedAnswers=r,g.newCannedAnswer=!1,g.cannedAnswer||(g.cannedAnswer={},g.title="TOOLS.NEW_CANNEDANSWER",g.newCannedAnswer=!0),g.addNewCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.cannedAnswer).$promise.then(function(e){g.cannedAnswers.unshift(e.toJSON()),o.success({title:"CannedAnswer properly created",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.cannedAnswer.id},g.cannedAnswer).$promise.then(function(e){var n=_.find(g.cannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CannedAnswer properly saved!",msg:g.cannedAnswer.name?g.cannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The cannedAnswer will be deleted.").ariaLabel("Delete CannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.cannedAnswer.id}).$promise.then(function(){_.remove(g.cannedAnswers,{id:g.cannedAnswer.id}),o.success({title:"CannedAnswer properly deleted!",msg:(g.cannedAnswer.name||"cannedAnswer")+" has been deleted!"}),v(g.cannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","cannedAnswers","cannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcontactItemType"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEcontactItemType",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.contactItemType.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_CUSTOMDASHBOARD",g.customDashboard=angular.copy(l),g.customDashboards=r,g.newCustomDashboard=!1,g.customDashboard||(g.customDashboard={},g.title="TOOLS.NEW_CUSTOMDASHBOARD",g.newCustomDashboard=!0),g.addNewCustomDashboard=function(){g.errors=[],d.dashboard.save(g.customDashboard).$promise.then(function(e){g.customDashboards.unshift(e.toJSON()),o.success({title:"CustomDashboard properly created",msg:g.customDashboard.name?g.customDashboard.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveCustomDashboard=function(){g.errors=[],d.dashboard.update({id:g.customDashboard.id},g.customDashboard).$promise.then(function(e){var n=_.find(g.customDashboards,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"CustomDashboard properly saved!",msg:g.customDashboard.name?g.customDashboard.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteCustomDashboard=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The customDashboard will be deleted.").ariaLabel("Delete CustomDashboard").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboard.delete({id:g.customDashboard.id}).$promise.then(function(){_.remove(g.customDashboards,{id:g.customDashboard.id}),o.success({title:"CustomDashboard properly deleted!",msg:(g.customDashboard.name||"customDashboard")+" has been deleted!"}),v(g.customDashboard)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","customDashboards","customDashboard","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditCustomDashboardDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.customDashboards=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="customDashboards",f.listOrder="",f.listOrderAsc=null,f.selectedCustomDashboards=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.customDashboards.edit",{id:e.id,customDashboard:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:f.customDashboards?f.customDashboards.rows:[],crudPermissions:f.crudPermissions}})},f.gotodashboardgoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("customDashboard")+"?").htmlContent("<b>"+(e.name||"customDashboard")+"</b> will be deleted.").ariaLabel("delete customDashboard").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getCustomDashboards=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.dashboard.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="CustomDashboards",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditCustomDashboard=function(e,n){i.show({controller:"CreateOrEditCustomDashboardDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{customDashboard:n,customDashboards:f.customDashboards.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteCustomDashboard=y,f.exportSelectedCustomDashboards=function(){var e=angular.copy(f.selectedCustomDashboards);return f.selectedCustomDashboards=[],e},f.deleteSelectedCustomDashboards=function(e){var n=i.confirm().title("Are you sure want to delete the selected customDashboards?").htmlContent("<b>"+f.selectedCustomDashboards.length+" selected</b> will be deleted.").ariaLabel("delete CustomDashboards").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedCustomDashboards.forEach(function(e){y(e)}),f.selectedCustomDashboards=[]})},f.deselectCustomDashboards=function(){f.selectedCustomDashboards=[]},f.selectAllCustomDashboards=function(){f.selectedCustomDashboards=f.customDashboards.rows};var b=!0,A=1;function E(e){f.customDashboards=e||{count:0,rows:[]}}function y(e){m.dashboard.delete({id:e.id}).$promise.then(function(){_.remove(f.customDashboards.rows,{id:e.id}),f.customDashboards.count-=1,f.customDashboards.rows.length||f.getCustomDashboards(),p.success({title:_.startCase("CustomDashboard")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdashboard"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getCustomDashboards())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","customDashboards","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("CustomDashboardsController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newCustomDashboard=!0,r.customDashboard=angular.copy(i),r.customDashboards=s,r.title=o.instant("TOOLS.CLONE_CUSTOMDASHBOARD"),i&&i.name&&(r.title+=": "+i.name),r.cloneCustomDashboard=function(){return e.dashboard.clone({id:i.id,includeAll:!0},r.customDashboard).$promise.then(function(e){r.customDashboards.unshift(e.toJSON()),a.success({title:"CustomDashboard properly cloned",msg:r.customDashboard.name?r.customDashboard.name+" has been cloned!":""}),t.go("app.tools.customDashboards.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.dashboard.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboard.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","customDashboard","customDashboards","$translate"],angular.module("app.tools").controller("CustomDashboardcloneController",e)}(),function(){"use strict";function e(t,a,i,s,o){var r=this;r.customDashboard={};var l=[];function d(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.init=function(e,n){return r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:d},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:d},r.customDashboard.widgets=[],l.push(i(function(e){e(r.voiceQueues=o.rpc.getVoiceQueues({fields:"id,name"}))})),l.push(i(function(n){o.chatWebsite.get({fields:"id,name"}).$promise.then(function(e){r.chatWebsites=e||{count:0,rows:[]},n(r.chatWebsites)})})),l.push(i(function(n){o.faxAccount.get({fields:"id,name"}).$promise.then(function(e){r.faxAccounts=e||{count:0,rows:[]},n(r.faxAccounts)})})),l.push(i(function(n){o.mailAccount.get({fields:"id,name"}).$promise.then(function(e){r.mailAccounts=e||{count:0,rows:[]},n(r.mailAccounts)})})),l.push(i(function(n){o.openchannelAccount.get({fields:"id,name"}).$promise.then(function(e){r.openchannelAccounts=e||{count:0,rows:[]},n(r.openchannelAccounts)})})),l.push(i(function(n){o.whatsappAccount.get({fields:"id,name"}).$promise.then(function(e){r.whatsappAccounts=e||{count:0,rows:[]},n(r.whatsappAccounts)})})),l.push(i(function(n){o.smsAccount.get({fields:"id,name"}).$promise.then(function(e){r.smsAccounts=e||{count:0,rows:[]},n(r.smsAccounts)})})),i.all(l).then(function(){return o.dashboard.getItems({id:e.id}).$promise.then(function(e){if(e&&e.count&&e.rows)for(var n=0;n<e.rows.length;n+=1)e.rows[n].voiceQueues=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),e.rows[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+e.rows[n].type+"/ms-widget-engine."+e.rows[n].type+".html",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.createOrEditWidget=function(e){if(e&&e.attrs)for(var n=0;n<e.attrs.length;n+=1)"attrReport"===e.attrs[n].name&&(e.reportType=e.attrs[n].type),e[e.attrs[n].name]=e.attrs[n].value;t.show({controller:"CreateOrEditDashboardItemDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",parent:angular.element(a.body),clickOutsideToClose:!0,locals:{dashboarditem:e,dashboard:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.deleteWidget=function(n){var e=t.confirm().title("Would you like to delete "+n.title+"?").textContent("").ariaLabel("Delete Widget").ok("YES").cancel("NO");t.show(e).then(function(){return o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.success({title:"Widget deleted!",msg:n.name?n.name+" has been deleted!":"Widget has been deleted!"})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","toasty","api"],angular.module("app.tools").controller("CustomDashboardItemsController",e)}(),function(){"use strict";function e(n,e,t,a,o,i,s,r,l,d,c,m,u,p){var g=this;g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_DASHBOARDITEM",g.dashboarditem=angular.copy(l),g.dashboard=r,g.newDashboardItem=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.dashboarditem?"web-report"==g.dashboarditem.type&&(g.apiName="custom"===g.dashboarditem.reportType?"analyticCustomReport":"analyticDefaultReport",d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:g.dashboarditem.attrReport}),g.dashboarditem.report=g.currentReport.name,g.query.parent=g.currentReport.parent})):(g.dashboarditem={type:"counter",attrChannel:"voice",titleFontSize:12,attrUrl:"https://",attrHourFormat:"HH:mm:ss",attrTimezone:"0.00",attrMetric:"total",attrSerie1:"total",attrSerie2:"null",attrSerie3:"null",attrRefresh:10,attrFontSize:20,foreground:"#2196f3",background:"#ffffff"},g.title="TOOLS.NEW_DASHBOARDITEM",g.newDashboardItem=!0),g.addNewDashboardItem=function(){g.errors=[],d.dashboard.addItem({id:e.params.id},g.dashboarditem).$promise.then(function(e){g.dashboard.unshift(e.toJSON()),s.success({title:"DashboardItem properly created",msg:g.dashboarditem.name?g.dashboarditem.name+" has been created!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.save"}];for(var n=0;n<e.data.errors.length;n+=1)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveDashboardItem=function(){g.errors=[],d.dashboardItem.update({id:g.dashboarditem.id},g.dashboarditem).$promise.then(function(e){var n=_.find(g.dashboard,{id:e.id});n&&_.merge(n,e.toJSON()),s.success({title:"DashboardItem properly saved!",msg:g.dashboarditem.name?g.dashboarditem.name+" has been saved!":""}),I(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.update"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteDashboardItem=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The dashboarditem will be deleted.").ariaLabel("Delete DashboardItem").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.dashboardItem.delete({id:g.dashboarditem.id}).$promise.then(function(){_.remove(g.dashboard,{id:g.dashboarditem.id}),s.success({title:"DashboardItem properly deleted!",msg:(g.dashboarditem.name||"dashboarditem")+" has been deleted!"}),I(g.dashboarditem)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.dashboardItem.delete"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.dashboardItem.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=S,g.selectReport=function(){if(g.dashboarditem.report=g.selectedReport[0].name,g.dashboarditem.attrReport=g.selectedReport[0].id,g.dashboarditem.reportType=g.currentNode.custom?"custom":"default",!g.newDashboardItem){var e={name:"attrReport",type:g.dashboarditem.reportType,value:g.selectedReport[0].id};g.dashboarditem.attrs.splice(_.findIndex(g.dashboarditem.attrs,1,e))}n.dashboarditemForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){s.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=f(!1),g.treeCustomEvents=f(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=I,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],h=null;function f(e){return e?{loaded:E,select_node:b}:{loaded:y,select_node:A}}function b(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,S()}function A(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,S()}function E(){if(!g.newDashboardItem&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(!g.newDashboardItem&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);A(0,{node:e,selected:e.id})}}function S(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,T).$promise;else{if(!g.userProfileSection)return T(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,T).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),T({count:t.length,rows:t})}return T(null)}):T(null)}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function T(e){g.reports=e||{count:0,rows:[]},g.newDashboardItem||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function I(e){a.hide(e)}c.hasRole("admin")?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){g.voiceQueues=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){h=e.rows||[]}).then(function(){for(var e=[],n=0;n<v.length;n++)e.push(d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:v[n].id}).$promise);return o.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<v.length;a++){var i=_.find(n,["sectionId",v[a].id]);if(i)if(i.autoAssociation){var s=[];h.forEach(function(e){e.type===v[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise)}return o.all(t)}).then(function(e){var n=[],t=null;g.dashboarditem&&(t=_.find(h,{id:Number(g.dashboarditem.attrVoiceQueues)}));for(var a=0;a<e.length;a++){(e[a].rows||[]).forEach(function(e){n.push(e)})}t&&!_.some(n,["resourceId",t.id])&&h.forEach(function(e){e.id===t.id&&(e.canSelect=!1,n.push(e))}),g.voiceQueues=n}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueues",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:902}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:702}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:802}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:502}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dashboard","dashboarditem","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditDashboardItemDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.customDashboard=c||t.params.customDashboard||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.clonedialog=function(e,n){a.show({controller:"CustomDashboardcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/customDashboards/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{customDashboard:e,customDashboards:u.customDashboards?u.customDashboards.rows:[],crudPermissions:u.crudPermissions}})},u.gotogoto=function(e,n){t.go("app.dashboards.custom",{id:e.id})},u.alert=l.info,u.gotoCustomDashboards=function(){t.go("app.tools.customDashboards",{},{reload:"app.tools.customDashboards"})},u.saveCustomDashboard=function(){r.dashboard.update({id:u.customDashboard.id},u.customDashboard).$promise.then(function(){l.success({title:"CustomDashboard updated!",msg:u.customDashboard.name?u.customDashboard.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETdashboard",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","customDashboard","userProfileSection"],angular.module("app.tools").controller("CustomDashboardController",e)}(),function(){"use strict";function e(a,i,o,r,e,l,d,n,t,s,c){var m=this;if(m.currentUser=n.getCurrentUser(),m.disposition=angular.copy(e),m.setting=c,m.license=s,m.crudPermissions=t,m.newDisposition=!1,m.errors=[],m.disposition||(m.disposition={level:"first"},m.newDisposition=!0),l){var u=l.field;m.disposition[u]=l.id}function p(){return o(function(t,n){d.disposition.get({fields:"id,name,level,ParentId",sort:"id",nolimit:"true"}).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})}function g(e){"first"===e.level?m.firstLevelDisposition=e:(m.anySecondLevelDisposition=!0,m.secondLevelDisposition=e,m.firstLevelDisposition=_.find(m.dispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition||p().then(function(){m.firstLevelDisposition=_.find(m.allDispositions,["id",m.secondLevelDisposition.ParentId]),m.firstLevelDisposition.canSelect=!1,m.dispositions.push(m.firstLevelDisposition)}))}function v(e){a.hide(e)}m.onInit=function(){var e={fields:"id,name,level,ParentId",id:l?l.id:void 0,section:"user"===m.currentUser.role?"Dispositions":void 0,MailAccountId:l?void 0:"null",FaxAccountId:l?void 0:"null",SmsAccountId:l?void 0:"null",OpenchannelAccountId:l?void 0:"null",ChatWebsiteId:l?void 0:"null",WhatsappAccountId:l?void 0:"null",ListId:l?void 0:"null",sort:"id",nolimit:"true"},n="get",t="disposition";l?(n="getDispositions",t=l.route):"user"===m.currentUser.role&&(n="getResources",t="userProfile",e.id=m.currentUser.userProfileId);(a=t,i=n,s=e,o(function(t,n){d[a][i](s).$promise.then(function(e){var n=e.rows||[];return t(n)}).catch(function(e){n(e)})})).then(function(e){m.dispositions=angular.copy(e),m.newDisposition||function(){if("first"===m.disposition.level)return;if(m.parentDisposition=_.find(m.dispositions,["id",m.disposition.ParentId]),!m.parentDisposition)return p().then(function(e){m.allDispositions=e;for(var n=0;n<m.allDispositions.length;n++){var t=m.allDispositions[n];if(t.id===m.disposition.ParentId){g(t),t.canSelect=!1,m.dispositions.push(t);break}}});g(m.parentDisposition)}()}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:["api",t,n].join(":"),msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})});var a,i,s},m.onFirstLevelSelection=function(){m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=_.some(m.dispositions,function(e){return e.ParentId===m.firstLevelDisposition.id&&e.id!=m.disposition.id})},m.addNewDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.save(m.disposition).$promise.then(function(e){m.dispositions.unshift(e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_CREATED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.save"}];for(var n=0;n<e.data.errors.length;n+=1)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveDisposition=function(){m.errors=[],m.secondLevelDisposition?(m.disposition.ParentId=m.secondLevelDisposition.id,m.disposition.level="third"):m.firstLevelDisposition&&(m.disposition.ParentId=m.firstLevelDisposition.id,m.disposition.level="second");d.disposition.update({id:m.disposition.id},m.disposition).$promise.then(function(e){var n=_.find(m.dispositions,{id:e.id});n&&_.merge(n,e.toJSON()),r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_SAVED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.update"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteDisposition=function(e){m.errors=[];var n=_.some(m.dispositions,["ParentId",m.disposition.id]),t=a.confirm({skipHide:!0}).title(i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(i.instant("TOOLS.NOTIFICATIONS."+(n?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:m.disposition.name})).ariaLabel("Delete disposition").ok(i.instant("TOOLS.DELETE")).cancel(i.instant("TOOLS.CANCEL")).targetEvent(e);a.show(t).then(function(){d.disposition.delete({id:m.disposition.id}).$promise.then(function(){r.success({title:i.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")}),v(!0)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.disposition.delete"}];for(var n=0;n<e.data.errors.length;n++)r.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.disposition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},m.clearSelection=function(e){"first"===e?(m.firstLevelDisposition=void 0,m.secondLevelDisposition=void 0,m.anySecondLevelDisposition=!1):m.secondLevelDisposition=void 0},m.closeDialog=v}e.$inject=["$mdDialog","$translate","$q","toasty","disposition","model","api","Auth","crudPermissions","license","setting"],angular.module("app.tools").controller("CreateOrEditDispositionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v){var h=this;function f(e){h.dispositions=e||{count:0,rows:[]}}function b(){h.query.offset=(h.query.page-1)*h.query.limit,p.isAdmin()?h.promise=m.disposition.get(h.query,f).$promise:(h.query.id=h.userProfile.id,h.query.section="Dispositions",h.promise=m.userProfile.getResources(h.query,f).$promise)}function A(e){m.disposition.delete({id:e.id}).$promise.then(function(){b(),u.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){h.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)u.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else u.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}h.license=g,h.setting=v,h.currentUser=p.getCurrentUser(),h.dispositions=l||{count:0,rows:[]},h.userProfile=d,h.userProfileSection=c&&1==c.count?c.rows[0]:null,h.crudPermissions=p.parseCrudPermissions(h.userProfileSection?h.userProfileSection.crudPermissions:null),h.selectedDispositions=[],h.levels={first:"1st",second:"2nd",third:"3rd"},h.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",MailAccountId:"null",FaxAccountId:"null",SmsAccountId:"null",OpenchannelAccountId:"null",ChatWebsiteId:"null",WhatsappAccountId:"null",ListId:"null",limit:10,page:1},h.deleteconfirm=function(e,n){var t=_.some(h.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){A(e)})},h.success=f,h.getDispositions=b,h.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:null,license:h.license,setting:h.setting,crudPermissions:h.crudPermissions}}).then(function(e){!0===e&&b()})},h.deleteDisposition=A,h.exportSelectedDispositions=function(){var e=angular.copy(h.selectedDispositions);return h.selectedDispositions=[],e},h.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:h.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){h.selectedDispositions.forEach(function(e){A(e)}),h.selectedDispositions=[]})},h.deselectDispositions=function(){h.selectedDispositions=[]},h.selectAllDispositions=function(){h.selectedDispositions=h.dispositions.rows};var E=!0,y=1;e.$watch("vm.query.filter",function(e,n){E?o(function(){E=!1}):(n||(y=h.query.page),e!==n&&(h.query.page=1),e||(h.query.page=y),b())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dispositions","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("DispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditAppintervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.intervalIntervals=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.interval.getIntervals(m.query,u).$promise}function g(e){d.interval.delete({id:e.id}).$promise.then(function(){_.remove(m.intervalIntervals.rows,{id:e.id}),m.intervalIntervals.count-=1,m.intervalIntervals.rows.length||p(),l.success({title:"Interval deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETinterval"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.interval={},m.intervalIntervals={count:0,rows:[]},m.selectedIntervalIntervals=[],m.crudPermissions,m.sortableTable={animation:100,onSort:function(e){d.interval.addIntervals({id:m.interval.id},e.models).$promise.then(function(e){m.intervalIntervals.rows=e}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:SORTABLETABLE",msg:e.data?JSON.stringify(e.data):e.toString()})})}},m.query={fields:"createdAt,updatedAt,id,name,interval",nolimit:"true",limit:10,page:1},m.init=function(e,n){m.interval=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.sortableTable.disabled=!m.crudPermissions.canEdit,m.query.id=m.interval.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interval?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interval #")+e.id||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getIntervalIntervals=p,m.createOrEditIntervalInterval=function(e,n){o.show({controller:"EditAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:m.interval,interval:n,intervals:m.intervalIntervals.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedIntervalIntervals=function(){var e=angular.copy(m.selectedIntervalIntervals);return m.selectedIntervalIntervals=[],e},m.deleteIntervalInterval=g,m.deleteSelectedIntervalIntervals=function(e){var n=o.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+m.selectedIntervalIntervals.length+" selected</b> will be deleted.").ariaLabel("delete intervals").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedIntervalIntervals.forEach(function(e){g(e)}),m.selectedIntervalIntervals=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("IntervalIntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_INTERVAL",g.interval=angular.copy(l),g.intervals=r,g.newInterval=!1,g.interval||(g.interval={},g.title="TOOLS.NEW_INTERVAL",g.newInterval=!0),g.addNewInterval=function(){g.errors=[],d.interval.save(g.interval).$promise.then(function(e){g.intervals.unshift(e.toJSON()),o.success({title:"Interval properly created",msg:g.interval.name?g.interval.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveInterval=function(){g.errors=[],d.interval.update({id:g.interval.id},g.interval).$promise.then(function(e){var n=_.find(g.intervals,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Interval properly saved!",msg:g.interval.name?g.interval.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteInterval=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The interval will be deleted.").ariaLabel("Delete Interval").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.interval.delete({id:g.interval.id}).$promise.then(function(){_.remove(g.intervals,{id:g.interval.id}),o.success({title:"Interval properly deleted!",msg:(g.interval.name||"interval")+" has been deleted!"}),v(g.interval)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.interval.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.interval.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","intervals","interval","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.interval=c||e.params.interval||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoIntervals=function(){e.go("app.tools.intervals",{},{reload:"app.tools.intervals"})},u.saveInterval=function(){r.interval.update({id:u.interval.id},u.interval).$promise.then(function(){l.success({title:"Interval updated!",msg:u.interval.name?u.interval.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETinterval",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","interval","userProfileSection"],angular.module("app.tools").controller("IntervalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.intervals=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="intervals",f.listOrder="",f.listOrderAsc=null,f.selectedIntervals=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",IntervalId:"null",limit:10,page:1},f.editstate=function(e,n){t.go("app.tools.intervals.edit",{id:e.id,interval:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("interval")+"?").htmlContent("<b>"+(e.name||"interval")+"</b> will be deleted.").ariaLabel("delete interval").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getIntervals=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.interval.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Intervals",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditInterval=function(e,n){i.show({controller:"CreateOrEditIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/intervals/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:n,intervals:f.intervals.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteInterval=y,f.exportSelectedIntervals=function(){var e=angular.copy(f.selectedIntervals);return f.selectedIntervals=[],e},f.deleteSelectedIntervals=function(e){var n=i.confirm().title("Are you sure want to delete the selected intervals?").htmlContent("<b>"+f.selectedIntervals.length+" selected</b> will be deleted.").ariaLabel("delete Intervals").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedIntervals.forEach(function(e){y(e)}),f.selectedIntervals=[]})},f.deselectIntervals=function(){f.selectedIntervals=[]},f.selectAllIntervals=function(){f.selectedIntervals=f.intervals.rows};var b=!0,A=1;function E(e){f.intervals=e||{count:0,rows:[]}}function y(e){m.interval.delete({id:e.id}).$promise.then(function(){_.remove(f.intervals.rows,{id:e.id}),f.intervals.count-=1,f.intervals.rows.length||f.getIntervals(),p.success({title:_.startCase("Interval")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEinterval"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEinterval",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getIntervals())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","intervals","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("IntervalsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_PAUSE",g.pause=angular.copy(l),g.pauses=r,g.newPause=!1,g.pause||(g.pause={},g.title="TOOLS.NEW_PAUSE",g.newPause=!0),g.addNewPause=function(){g.errors=[],d.pause.save(g.pause).$promise.then(function(e){g.pauses.unshift(e.toJSON()),o.success({title:"Pause properly created",msg:g.pause.name?g.pause.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savePause=function(){g.errors=[],d.pause.update({id:g.pause.id},g.pause).$promise.then(function(e){var n=_.find(g.pauses,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Pause properly saved!",msg:g.pause.name?g.pause.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletePause=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The pause will be deleted.").ariaLabel("Delete Pause").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.pause.delete({id:g.pause.id}).$promise.then(function(){_.remove(g.pauses,{id:g.pause.id}),o.success({title:"Pause properly deleted!",msg:(g.pause.name||"pause")+" has been deleted!"}),v(g.pause)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.pause.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.pause.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","pauses","pause","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditPauseDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.pauses=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="pauses",f.listOrder="",f.listOrderAsc=null,f.selectedPauses=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{pause:e,pauses:f.pauses.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("pause")+"?").htmlContent("<b>"+(e.name||"pause")+"</b> will be deleted.").ariaLabel("delete pause").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getPauses=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.pause.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Pauses",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditPause=function(e,n){i.show({controller:"CreateOrEditPauseDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/pauses/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{pause:n,pauses:f.pauses.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletePause=y,f.exportSelectedPauses=function(){var e=angular.copy(f.selectedPauses);return f.selectedPauses=[],e},f.deleteSelectedPauses=function(e){var n=i.confirm().title("Are you sure want to delete the selected pauses?").htmlContent("<b>"+f.selectedPauses.length+" selected</b> will be deleted.").ariaLabel("delete Pauses").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedPauses.forEach(function(e){y(e)}),f.selectedPauses=[]})},f.deselectPauses=function(){f.selectedPauses=[]},f.selectAllPauses=function(){f.selectedPauses=f.pauses.rows};var b=!0,A=1;function E(e){f.pauses=e||{count:0,rows:[]}}function y(e){m.pause.delete({id:e.id}).$promise.then(function(){_.remove(f.pauses.rows,{id:e.id}),f.pauses.count-=1,f.pauses.rows.length||f.getPauses(),p.success({title:_.startCase("Pause")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEpause"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEpause",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getPauses())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","pauses","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("PausesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;if(g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SCHEDULE",g.schedule=angular.copy(l),g.schedules=r,g.newSchedule=!1,g.selectedReport=[],g.query={fields:"createdAt,updatedAt,id,name,description,table,parent,conditions,joins",limit:10,page:1,sort:"-updatedAt"},g.schedule){g.apiName=g.schedule.DefaultReportId?"analyticDefaultReport":"analyticCustomReport";var v=g.schedule.DefaultReportId?g.schedule.DefaultReportId:g.schedule.CustomReportId;d[g.apiName].get({fields:"id,name,parent"}).$promise.then(function(e){g.currentReport=_.find(e.rows,{id:v}),g.schedule.report=g.currentReport.name,g.query.parent=g.currentReport.parent})}else g.schedule={output:"xlsx",active:!0,startAt:new Date,endAt:new Date(Date.now()+2592e6),cron:"0 0 * * *",subtractNumber:1,subtractUnit:"days",sendMail:!1,sendIfEmpty:!0},g.title="TOOLS.NEW_SCHEDULE",g.newSchedule=!0;function h(e){return e?{loaded:A,select_node:f}:{loaded:E,select_node:b}}function f(e,n){g.treeDefaultInstance.jstree(!0).deselect_all(),g.treeDefaultInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!0,g.currentPath=g.treeCustomInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticCustomReport",g.query.parent=n.node.id,y()}function b(e,n){g.treeCustomInstance.jstree(!0).deselect_all(),g.treeCustomInstance.jstree(!0).close_all(),g.currentNode=n.node,g.currentNode.custom=!1,g.currentPath=g.treeDefaultInstance.jstree(!0).get_path(g.currentNode).join("/ "),g.apiName="analyticDefaultReport",g.query.parent=n.node.id,y()}function A(){if(!g.newSchedule&&"analyticCustomReport"===g.apiName){var e=g.treeCustomInstance.jstree(!0).get_node(g.query.parent);f(0,{node:e,selected:e.id})}}function E(){if(!g.newSchedule&&"analyticDefaultReport"===g.apiName){var e=g.treeDefaultInstance.jstree(!0).get_node(g.query.parent);b(0,{node:e,selected:e.id})}}function y(){if(g.query.offset=(g.query.page-1)*g.query.limit,g.apiName)if("admin"===g.currentUser.role)g.promise=d[g.apiName].get(g.query,S).$promise;else{if(!g.userProfileSection)return S(null);if(g.userProfileSection.autoAssociation)g.promise=d[g.apiName].get(g.query,S).$promise;else{var a=[];g.promise=d[g.apiName].get(g.query).$promise.then(function(e){return 0<(a=e&&e.rows?e.rows:[]).length?d.userProfileResource.get({sectionId:g.userProfileSection.id,type:"analyticDefaultReport"===g.apiName?"DefaultReports":"CustomReports"}).$promise.then(function(e){var n=e&&e.rows?e.rows:[];if(0<n.length){var t=[];return a.forEach(function(e){_.find(n,["resourceId",e.id])&&t.push(e)}),S({count:t.length,rows:t})}return S(null)}):S(null)}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_REPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}}function S(e){g.reports=e||{count:0,rows:[]},g.newSchedule||g.selectedReport.push(_.find(g.reports.rows,{id:g.currentReport.id}))}function T(e){a.hide(e)}g.addNewSchedule=function(){g.errors=[],d.schedule.save(g.schedule).$promise.then(function(e){g.schedules.unshift(e.toJSON()),o.success({title:"Schedule properly created",msg:g.schedule.name?g.schedule.name+" has been created!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSchedule=function(){g.errors=[],d.schedule.update({id:g.schedule.id},g.schedule).$promise.then(function(e){var n=_.find(g.schedules,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Schedule properly saved!",msg:g.schedule.name?g.schedule.name+" has been saved!":""}),T(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSchedule=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The schedule will be deleted.").ariaLabel("Delete Schedule").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.schedule.delete({id:g.schedule.id}).$promise.then(function(){_.remove(g.schedules,{id:g.schedule.id}),o.success({title:"Schedule properly deleted!",msg:(g.schedule.name||"schedule")+" has been deleted!"}),T(g.schedule)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.schedule.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.schedule.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.getReports=y,g.selectReport=function(){g.schedule.report=g.selectedReport[0].name,g.currentNode.custom?(g.schedule.CustomReportId=g.selectedReport[0].id,delete g.schedule.DefaultReportId):(g.schedule.DefaultReportId=g.selectedReport[0].id,delete g.schedule.CustomReportId);e.scheduleForm.report.$setDirty(),a.hide()},g.closeReportDialog=function(){a.hide()},g.searchReport=function(){g.treeDefaultData=g.treeReports[0]?angular.fromJson(g.treeReports[0].tree):[],g.treeCustomData=g.treeReports[1]?angular.fromJson(g.treeReports[1].tree):[],g.treeConfig=(n={core:{multiple:!1,animation:!0,error:function(e){console.error("treeCtrl: error from js tree - "+angular.toJson(e))},check_callback:!0,worker:!0},version:1,plugins:["wholerow"]},"admin"!==g.currentUser.role?d.userProfileSection.get({fields:"id,name,enabled,includeAll,autoAssociation,crudPermissions",userProfileId:g.currentUser.userProfileId,sectionId:1203}).$promise.then(function(e){return g.userProfileSection=e&&1==e.count?e.rows[0]:null,n}).catch(function(e){o.error({title:"ERROR",msg:e.message})}):n),g.treeDefaultEvents=h(!1),g.treeCustomEvents=h(!0),a.show({controller:function(){return g},controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",autoWrap:!0,skipHide:!0});var n},g.closeDialog=T,d.analyticTreeReport.get({}).$promise.then(function(e){g.treeReports=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.mailAccounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.mailAccounts,{id:e.resourceId})}),t=null;if(g.schedule&&(t=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccounts=n})}else{var t=[],a=null;g.schedule&&(a=_.find(g.mailAccounts,{id:Number(g.schedule.MailAccountId)}));for(var i=0;i<g.mailAccounts.length;i++)a&&g.mailAccounts[i].id===a.id&&(g.mailAccounts[i].canSelect=!1,t.push(g.mailAccounts[i]));g.mailAccounts=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","schedules","schedule","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditScheduleDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.schedules=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="schedules",f.listOrder="",f.listOrderAsc=null,f.selectedScheduler=[],f.query={fields:"createdAt,updatedAt,id,name,CustomReportId,DefaultReportId,output,active,startAt,endAt,cron,subtractNumber,subtractUnit,sendMail,MailAccountId,email,cc,bcc,sendIfEmpty,description",sort:"-updatedAt",limit:10,page:1},f.arrayoutput=_.keyBy([{option:"CSV",value:"'csv'"},{option:"PDF",value:"'pdf'"},{option:"Excel",value:"'xlsx'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysubtractUnit=_.keyBy([{option:"Minutes",value:"'minutes'"},{option:"Hours",value:"'hours'"},{option:"Days",value:"'days'"},{option:"Weeks",value:"'weeks'"},{option:"Months",value:"'months'"},{option:"Quarters",value:"'quarters'"},{option:"Years",value:"'years'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{schedule:e,schedules:f.schedules.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.runconfirm=function(e,n){var t=i.confirm().title("Are you sure want to run the schedule?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be run.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){return m.schedule.run({id:e.id}).$promise},function(){console.log("CANCEL")})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("schedule")+"?").htmlContent("<b>"+(e.name||"schedule")+"</b> will be deleted.").ariaLabel("delete schedule").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScheduler=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.schedule.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Scheduler",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSchedule=function(e,n){i.show({controller:"CreateOrEditScheduleDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/schedules/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{schedule:n,schedules:f.schedules.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSchedule=y,f.exportSelectedScheduler=function(){var e=angular.copy(f.selectedScheduler);return f.selectedScheduler=[],e},f.deleteSelectedScheduler=function(e){var n=i.confirm().title("Are you sure want to delete the selected schedules?").htmlContent("<b>"+f.selectedScheduler.length+" selected</b> will be deleted.").ariaLabel("delete Schedules").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedScheduler.forEach(function(e){y(e)}),f.selectedScheduler=[]})},f.deselectScheduler=function(){f.selectedScheduler=[]},f.selectAllScheduler=function(){f.selectedScheduler=f.schedules.rows},m.analyticTreeReport.get({}).$promise.then(function(e){f.treeReports=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TREEREPORTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.mailAccount.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.mailAccounts=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:602}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.mailAccounts,{id:e.resourceId})}),t=null;if(f.schedule&&(t=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.mailAccounts,{id:t.id});a.canSelect=!1,n.push(a)}f.mailAccounts=n})}else{var t=[],a=null;f.schedule&&(a=_.find(f.mailAccounts,{id:Number(f.schedule.MailAccountId)}));for(var i=0;i<f.mailAccounts.length;i++)a&&f.mailAccounts[i].id===a.id&&(f.mailAccounts[i].canSelect=!1,t.push(f.mailAccounts[i]));f.mailAccounts=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccounts",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.schedules=e||{count:0,rows:[]}}function y(e){m.schedule.delete({id:e.id}).$promise.then(function(){_.remove(f.schedules.rows,{id:e.id}),f.schedules.count-=1,f.schedules.rows.length||f.getScheduler(),p.success({title:_.startCase("Schedule")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEschedule"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEschedule",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScheduler())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","schedules","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SchedulesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_SOUND",g.sound=angular.copy(l),g.sounds=r,g.newSound=!1,g.sound||(g.sound={},g.title="TOOLS.NEW_SOUND",g.newSound=!0),g.addNewSound=function(){g.errors=[],d.sound.save(g.sound).$promise.then(function(e){g.sounds.unshift(e.toJSON()),o.success({title:"Sound properly created",msg:g.sound.name?g.sound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveSound=function(){g.errors=[],d.sound.update({id:g.sound.id},g.sound).$promise.then(function(e){var n=_.find(g.sounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Sound properly saved!",msg:g.sound.name?g.sound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The sound will be deleted.").ariaLabel("Delete Sound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.sound.delete({id:g.sound.id}).$promise.then(function(){_.remove(g.sounds,{id:g.sound.id}),o.success({title:"Sound properly deleted!",msg:(g.sound.name||"sound")+" has been deleted!"}),v(g.sound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.sound.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","sounds","sound","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.sounds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="sounds",f.listOrder="",f.listOrderAsc=null,f.selectedSounds=[],f.query={fields:"createdAt,updatedAt,id,save_name,converted_format,name,audio,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{sound:e,sounds:f.sounds.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.downloadfile2=function(s,e){return m.sound.download({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.sound.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("sound")+"?").htmlContent("<b>"+(e.name||"sound")+"</b> will be deleted.").ariaLabel("delete sound").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getSounds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.sound.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Sounds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditSound=function(e,n){i.show({controller:"CreateOrEditSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sound:n,sounds:f.sounds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteSound=y,f.exportSelectedSounds=function(){var e=angular.copy(f.selectedSounds);return f.selectedSounds=[],e},f.deleteSelectedSounds=function(e){var n=i.confirm().title("Are you sure want to delete the selected sounds?").htmlContent("<b>"+f.selectedSounds.length+" selected</b> will be deleted.").ariaLabel("delete Sounds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedSounds.forEach(function(e){y(e)}),f.selectedSounds=[]})},f.deselectSounds=function(){f.selectedSounds=[]},f.selectAllSounds=function(){f.selectedSounds=f.sounds.rows},f.uploadSound=function(e){i.show({controller:"UploadSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/sounds/upload/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{sounds:f.sounds.rows}})};var b=!0,A=1;function E(e){f.sounds=e||{count:0,rows:[]}}function y(e){m.sound.delete({id:e.id}).$promise.then(function(){_.remove(f.sounds.rows,{id:e.id}),f.sounds.count-=1,f.sounds.rows.length||f.getSounds(),p.success({title:_.startCase("Sound")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEsound"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEsound",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getSounds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","sounds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("SoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this,r=15,l=1024*r*1024;o.currentUser=s.getCurrentUser(),o.errors=[],o.title="TOOLS.UPLOAD_SOUND",o.sounds=a,o.uploadSounds=[],o.uploadState="none",o.sound={},o.ngFlowOptions={maxChunkRetries:1,chunkSize:l,simultaneousUploads:1,testChunks:!1,progressCallbacksInterval:1e3,allowDuplicateUploads:!0,target:"api/sounds"},o.ngFlow={flow:{}},o.dropping=!1,o.fileAdded=function(e){var n=["wav","mp3","gsm"];if(!_.includes(n,e.getExtension()))return t.error({title:"Invalid extension: "+e.getExtension(),msg:"Supported extension: "+n.join()}),!1;if(e.size>l)return t.error({title:"File too big",msg:"The max allowed size is "+r+"MB"}),!1;return o.sound={id:e.uniqueIdentifier,file:e},o.uploadSounds.unshift(o.sound),!0},o.upload=function(){o.uploadState="uploading",o.ngFlow.flow.opts.headers={"X-Requested-With":"XMLHttpRequest",Authorization:"Bearer "+e.get("motion.token")},o.ngFlow.flow.opts.query={role:o.currentUser.role,userProfileId:o.currentUser.userProfileId},o.ngFlow.flow.upload()},o.fileSuccess=function(a,e){o.sounds.unshift(JSON.parse(e)),angular.forEach(o.uploadSounds,function(n,e){if(n.id===a.uniqueIdentifier){var t=new FileReader;t.readAsDataURL(n.file.file),t.onload=function(e){n.url=e.target.result}}})},o.uploadError=function(e,n){o.ngFlow.flow.cancel(),t.error({title:"Upload error",msg:"Cannot upload the sound"}),o.uploadState="failed"},o.uploadComplete=function(){"failed"!==o.uploadState&&(o.uploadState="completed",t.success({title:"Upload completed",msg:o.sound.file.name+" uploaded successfully"}))},o.closeDialog=function(){n.hide()}}e.$inject=["$cookies","$mdDialog","toasty","sounds","api","Auth"],angular.module("app.tools").controller("UploadSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TAG",g.tag=angular.copy(l),g.tags=r,g.newTag=!1,g.tag||(g.tag={},g.title="TOOLS.NEW_TAG",g.newTag=!0),g.addNewTag=function(){g.errors=[],d.tag.save(g.tag).$promise.then(function(e){g.tags.unshift(e.toJSON()),o.success({title:"Tag properly created",msg:g.tag.name?g.tag.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTag=function(){g.errors=[],d.tag.update({id:g.tag.id},g.tag).$promise.then(function(e){var n=_.find(g.tags,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Tag properly saved!",msg:g.tag.name?g.tag.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTag=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The tag will be deleted.").ariaLabel("Delete Tag").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.tag.delete({id:g.tag.id}).$promise.then(function(){_.remove(g.tags,{id:g.tag.id}),o.success({title:"Tag properly deleted!",msg:(g.tag.name||"tag")+" has been deleted!"}),v(g.tag)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.tag.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.tag.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","tags","tag","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTagDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.tags=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="tags",f.listOrder="",f.listOrderAsc=null,f.selectedTags=[],f.query={fields:"createdAt,updatedAt,id,name,description,color",sort:"name,-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{tag:e,tags:f.tags.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("tag")+"?").htmlContent("<b>"+(e.name||"tag")+"</b> will be deleted.").ariaLabel("delete tag").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTags=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.tag.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Tags",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTag=function(e,n){i.show({controller:"CreateOrEditTagDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/tags/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{tag:n,tags:f.tags.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTag=y,f.exportSelectedTags=function(){var e=angular.copy(f.selectedTags);return f.selectedTags=[],e},f.deleteSelectedTags=function(e){var n=i.confirm().title("Are you sure want to delete the selected tags?").htmlContent("<b>"+f.selectedTags.length+" selected</b> will be deleted.").ariaLabel("delete Tags").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTags.forEach(function(e){y(e)}),f.selectedTags=[]})},f.deselectTags=function(){f.selectedTags=[]},f.selectAllTags=function(){f.selectedTags=f.tags.rows};var b=!0,A=1;function E(e){f.tags=e||{count:0,rows:[]}}function y(e){m.tag.delete({id:e.id}).$promise.then(function(){_.remove(f.tags.rows,{id:e.id}),f.tags.count-=1,f.tags.rows.length||f.getTags(),p.success({title:_.startCase("Tag")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtag"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtag",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTags())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","tags","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TagsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TEMPLATE",g.template=angular.copy(l),g.templates=r,g.newTemplate=!1,g.template||(g.template={},g.title="TOOLS.NEW_TEMPLATE",g.newTemplate=!0),g.addNewTemplate=function(){g.errors=[],d.template.save(g.template).$promise.then(function(e){g.templates.unshift(e.toJSON()),o.success({title:"Template properly created",msg:g.template.name?g.template.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTemplate=function(){g.errors=[],d.template.update({id:g.template.id},g.template).$promise.then(function(e){var n=_.find(g.templates,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Template properly saved!",msg:g.template.name?g.template.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTemplate=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The template will be deleted.").ariaLabel("Delete Template").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.template.delete({id:g.template.id}).$promise.then(function(){_.remove(g.templates,{id:g.template.id}),o.success({title:"Template properly deleted!",msg:(g.template.name||"template")+" has been deleted!"}),v(g.template)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.template.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.template.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","templates","template","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTemplateDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.templates=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="templates",f.listOrder="",f.listOrderAsc=null,f.selectedTemplates=[],f.query={fields:"createdAt,updatedAt,id,name,html,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{template:e,templates:f.templates.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("template")+"?").htmlContent("<b>"+(e.name||"template")+"</b> will be deleted.").ariaLabel("delete template").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTemplates=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.template.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Templates",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTemplate=function(e,n){i.show({controller:"CreateOrEditTemplateDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/templates/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{template:n,templates:f.templates.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTemplate=y,f.exportSelectedTemplates=function(){var e=angular.copy(f.selectedTemplates);return f.selectedTemplates=[],e},f.deleteSelectedTemplates=function(e){var n=i.confirm().title("Are you sure want to delete the selected templates?").htmlContent("<b>"+f.selectedTemplates.length+" selected</b> will be deleted.").ariaLabel("delete Templates").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTemplates.forEach(function(e){y(e)}),f.selectedTemplates=[]})},f.deselectTemplates=function(){f.selectedTemplates=[]},f.selectAllTemplates=function(){f.selectedTemplates=f.templates.rows};var b=!0,A=1;function E(e){f.templates=e||{count:0,rows:[]}}function y(e){m.template.delete({id:e.id}).$promise.then(function(){_.remove(f.templates.rows,{id:e.id}),f.templates.count-=1,f.templates.rows.length||f.getTemplates(),p.success({title:_.startCase("Template")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtemplate"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtemplate",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTemplates())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","templates","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TemplatesController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r,l,d){var c=this;function m(e){t.hide(e)}c.currentUser=o.getCurrentUser(),c.trigger=angular.copy(n),c.triggers=angular.copy(e),c.setting=l,c.license=r,c.crudPermissions=d,c.newTrigger=!1,c.errors=[],c.trigger||(c.trigger={channel:"voice"},c.newTrigger=!0),c.addNewTrigger=function(){c.errors=[],s.trigger.save(c.trigger).$promise.then(function(e){c.triggers.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_CREATED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.saveTrigger=function(){c.errors=[],s.trigger.update({id:c.trigger.id},c.trigger).$promise.then(function(){c.triggers=_.map(c.triggers,function(e){return e.id===c.trigger.id?c.trigger:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.deleteTrigger=function(e){c.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:c.trigger.name})).ariaLabel("Delete trigger").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.trigger.delete({id:c.trigger.id}).$promise.then(function(){c.triggers=_.filter(c.triggers,function(e){return e.id!==c.trigger.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")}),m(c.triggers)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){c.errors=e.data.errors||[{message:e.toString(),type:"api.trigger.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trigger.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},c.closeDialog=m}e.$inject=["$mdDialog","$translate","toasty","triggers","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTriggerDialogController",e)}(),function(){"use strict";function e(e,a,n,i,t,s,o,r){var l=this;function d(){_.some(l.triggerActions.rows,["action","contactManager"])&&(l.lists||(r.isAdmin()?o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.lists=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.lists,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),l.lists=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("contactManager"===e.action){var n=_.find(l.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.lists.length;i++)_.some(a,{id:l.lists[i].id})&&(l.lists[i].canSelect=!1,t.push(l.lists[i]));l.lists=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","integration"])&&_(l.triggerActions.rows).map(function(e){return"integration"===e.action?e.data1:void 0}).compact().uniq().value().forEach(function(e){var n=e+"Accounts";if(!l[n]){var t="int"+_.startCase(e)+"Account";o[t.replace(/\s+/g,"")].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l[n]=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+n.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}}),_.some(l.triggerActions.rows,function(e){return _.includes(["motionbar","browser"],e.action)})&&(l.templates||(r.isAdmin()?o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){l.templates=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.templates,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),l.templates=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(l.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<l.templates.length;i++)_.some(a,{id:l.templates[i].id})&&(l.templates[i].canSelect=!1,t.push(l.templates[i]));l.templates=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(l.triggerActions.rows,["action","jscripty"])&&(l.projects||(r.isAdmin()?o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.projects=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(l.projects,{id:e.resourceId})}),a=null;a=[],l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(l.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),l.projects=t})}else{var t=[],a=[];l.triggerActions.rows.forEach(function(e){if("jscripty"===e.action){var n=_.find(l.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<l.projects.length;i++)_.some(a,{id:l.projects[i].id})&&(l.projects[i].canSelect=!1,t.push(l.projects[i]));l.projects=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})})))}function c(e){l.triggerActions=e||{count:0,rows:[]},d()}function m(){l.query.offset=(l.query.page-1)*l.query.limit,l.promise=o.trigger.getActions(l.query,c).$promise}function u(e,n){o.action.delete({id:e.id}).$promise.then(function(){m(),n&&s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)s.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}l.currentUser=r.getCurrentUser(),l.trigger={},l.triggerActions={count:0,rows:[]},l.selectedTriggerActions=[],l.query={fields:"id,action,contact,data1,data2,data3,data4,data5,data6,data7,createdAt,updatedAt",limit:10,page:1},l.integrationTypes={zendesk:"Zendesk",salesforce:"Salesforce",sugarcrm:"SugarCRM",freshdesk:"Freshdesk",desk:"Desk",zoho:"Zoho",vtiger:"vTiger",dynamics365:"Dynamics365",servicenow:"ServiceNow",freshsales:"Freshsales"},l.motionBarOptions={0:"Popup",1:"CTI URL",2:"Windows App"},l.onInit=function(e,n){l.trigger=e,l.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},l.query.ActionId=l.trigger.id,l.query.id=l.trigger.id,m()},l.success=c,l.getTriggerActions=m,l.createOrEditTriggerAction=function(e,n){i.show({controller:"CreateOrEditActionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:l.trigger,action:n,actions:l.triggerActions.rows,license:null,setting:null,crudPermissions:l.crudPermissions}}).then(function(e){e&&(l.triggerActions={count:e.length,rows:e},d())})},l.exportSelectedTriggerActions=function(){var e=angular.copy(l.selectedTriggerActions);return l.selectedTriggerActions=[],e},l.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){u(e,!0)})},l.deleteSelectedTriggerActions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETE_MESSAGE",{total:l.selectedTriggerActions.length})).ariaLabel("Delete actions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){l.selectedTriggerActions.forEach(function(e){u(e)}),l.selectedTriggerActions=[],s.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerActionsController",e)}(),function(){"use strict";function e(n,t,a,i,e,s,o,r,l,d,c,m){var u=this;function p(){return new Promise(function(n,t){l.hasSectionsPermissions([1301,1302,1303,1304,1305,1306,1307,1308,1309,1310]).then(function(e){u.hasSectionPermissions=_.merge(u.hasSectionPermissions,e),n(u.hasSectionPermissions)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SECTIONS_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()}),t()})})}function g(){r.cmList.getCustomFields({id:u.action.data1,ListId:u.action.data1}).$promise.then(function(e){u.listFields=_.filter(e.rows,["type","text"]),u.listFields.forEach(function(e){e.columnName="cf_"+e.id})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LIST_CUSTOM_FIELDS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function v(){l.isAdmin()?r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.template.get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.templates=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1009}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.templates,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.templates,{id:e.id});n.canSelect=!1,t.push(n)}}),u.templates=t})}else{var t=[],a=[];u.actions.forEach(function(e){if(_.includes(["motionbar","browser"],e.action)){var n=_.find(u.templates,{id:Number(e.data2)});a.push(n)}});for(var i=0;i<u.templates.length;i++){_.some(a,{id:u.templates[i].id})&&(u.templates[i].canSelect=!1,t.push(u.templates[i]))}u.templates=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEMPLATES",msg:e.data?JSON.stringify(e.data):e.toString()})})}function h(){switch(u.action.action){case"contactManager":u.lists||(l.isAdmin()?r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.lists,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.lists,{id:e.id});n.canSelect=!1,t.push(n)}}),u.lists=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("contactManager"===e.action){var n=_.find(u.lists,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.lists.length;i++)_.some(a,{id:u.lists[i].id})&&(u.lists[i].canSelect=!1,t.push(u.lists[i]));u.lists=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})})),u.contactFields||r.cmContact.describe({}).$promise.then(function(e){u.contactFields=[],u.customFields=[];for(var n=_.values(e.toJSON()),t=0;t<n.length;t++)_.includes(u.allowedStandardFields,n[t].columnName)?u.contactFields.push(n[t]):_.startsWith(n[t].columnName,"cf_")&&"text"===n[t].custom.type&&u.customFields.push(n[t])}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DESCRIBE_CM_CONTACT",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.data3=u.action.data3?u.action.data3.split(","):["phone"],"1"!==u.action.data2||u.action.data4||(u.action.data4="phone");break;case"jscripty":u.projects||(l.isAdmin()?r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PROJECTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.jscriptyProject.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.projects=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1701}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.projects,{id:e.resourceId})}),a=null;a=[],u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.projects,{id:e.id});n.canSelect=!1,t.push(n)}}),u.projects=t})}else{var t=[],a=[];u.actions.forEach(function(e){if("jscripty"===e.action){var n=_.find(u.projects,{id:Number(e.data1)});a.push(n)}});for(var i=0;i<u.projects.length;i++)_.some(a,{id:u.projects[i].id})&&(u.projects[i].canSelect=!1,t.push(u.projects[i]));u.projects=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETprojects",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"urlForward":u.action.data5||(u.action.data5=5)}}function f(){u.editAccount||(u.action.data2=void 0,u.action.data3=void 0),u.action.isIntegrationDisabled=!u.newAction&&!function(){switch(u.action.data1){case"zendesk":return u.hasSectionPermissions[1301];case"salesforce":return u.hasSectionPermissions[1302];case"sugarcrm":return u.hasSectionPermissions[1305];case"freshdesk":return u.hasSectionPermissions[1303];case"desk":return u.hasSectionPermissions[1306];case"zoho":return u.hasSectionPermissions[1307];case"vtiger":return u.hasSectionPermissions[1308];case"dynamics365":return u.hasSectionPermissions[1309];case"servicenow":return u.hasSectionPermissions[1310];case"freshsales":return u.hasSectionPermissions[1304]}}();var e="int"+_.capitalize(u.action.data1)+"Account";r[e].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u.accounts=e.rows||[],u.editAccount=!1}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function b(){u.action.data3=u.action.data3?u.action.data3:void 0;var e="int"+_.capitalize(u.action.data1)+"Configuration";r[e].get({fields:"id,name,AccountId",sort:"id",nolimit:"true"}).$promise.then(function(e){u.configurations=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.action.data1.toUpperCase()+"CONFIGURATIONS",msg:e.data?JSON.stringify(e.data):e.toString()})})}function A(){var e=angular.copy(u.action);return _.isArray(e.data3)&&(e.data3=u.action.data3.join(",")),e}function E(e){t.hide(e)}u.currentUser=l.getCurrentUser(),void 0!==s&&"urlForward"===s.action&&s.data5&&(s.data5=parseInt(s.data5)),u.action=angular.copy(s),u.actions=angular.copy(e),u.setting=c,u.license=d,u.crudPermissions=m,u.newAction=!1,u.errors=[],u.trigger=angular.copy(o),u.action?function(){switch(u.editAccount=!0,u.action.action){case"integration":return new Promise(function(e){e(p())}).then(function(){return u.editAccount||(u.action.data2=void 0,u.action.data3=void 0,h()),f()}).then(function(){return b()});case"motionbar":case"browser":v()}u.editAccount=!1}():(u.action={},u.newAction=!0),u.action.ActionId=n.params.id||void 0,u.allowedStandardFields=["phone","mobile","fax"],u.addNewAction=function(){u.errors=[];var e=A();r.trigger.addAction({id:n.params.id},e).$promise.then(function(e){u.actions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_CREATED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.saveAction=function(){u.errors=[];var n=A();r.action.update({id:n.id},n).$promise.then(function(){u.actions=_.map(u.actions,function(e){return e.id===n.id?n:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_SAVED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},u.deleteAction=function(e){u.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETE_TITLE")).ariaLabel("Delete action").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.action.delete({id:u.action.id}).$promise.then(function(){u.actions=_.filter(u.actions,function(e){return e.id!==u.action.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.ACTION_DELETED_SUCCESS_TITLE")}),E(u.actions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"api.action.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.action.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},u.onActionInit=function(){l.hasModulePermissions("Integrations").then(function(e){u.hasIntegrationsPermissions=e}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MODULE_PERMISSIONS",msg:e.data?JSON.stringify(e.data):e.toString()})}),u.action.action&&h()},u.onIntegrationInit=p,u.onSearchFieldsInit=function(){u.newAction||g()},u.onActionSelection=function(){u.newAction&&(u.action.data1=void 0,u.action.data2=void 0,u.action.data3=void 0,u.action.data4=void 0,u.action.data5="urlForward"===u.action.action?5:void 0,h())},u.onIntegrationSelection=f,u.onListSelection=function(){g()},u.onTypeSelection=function(){"0"!==u.action.data1||u.templates?(u.action.data2=void 0,u.action.data4="1"===u.action.data1?0:void 0):v()},u.onAutocreateSelection=function(){"0"===u.action.data2&&(u.action.data4=void 0);u.action.data4||"1"!==u.action.data2||(u.action.data4="phone")},u.onIntegrationAccountSelection=b,u.closeDialog=E,u.onActionLocationChange=function(){u.editAccount||(u.action.data5=void 0,u.action.data6=void 0)}}e.$inject=["$state","$mdDialog","$translate","toasty","actions","action","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditActionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.allConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.allConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.allConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.triggerAllConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.allConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.allConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAllConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.allConditions={count:0,rows:[]},u.selectedAllConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAllId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAllConditions=r,u.createOrEditAllCondition=function(e,n){i.show({controller:"CreateOrEditAllConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,allCondition:n,allConditions:u.allConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.allConditions={count:e.length,rows:e},s())})},u.exportSelectedAllConditions=function(){var e=angular.copy(u.selectedAllConditions);return u.selectedAllConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteSelectedAllConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAllConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAllConditions.forEach(function(e){p(e)}),u.selectedAllConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAllConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.allCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.allConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.allConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.allCondition=angular.copy(s),p.allConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAllCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.allCondition?g():(p.allCondition={operator:"equals"},p.newAllCondition=!0),p.allCondition.TriggerAllId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.allCondition.value=void 0,g()},p.addNewAllCondition=function(){p.errors=[],d.trigger.addAllCondition({id:e.params.id},p.allCondition).$promise.then(function(e){p.allConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAllCondition=function(){p.errors=[],d.condition.update({id:p.allCondition.id},p.allCondition).$promise.then(function(){p.allConditions=_.map(p.allConditions,function(e){return e.id===p.allCondition.id?p.allCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAllCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.allCondition.id}).$promise.then(function(){p.allConditions=_.filter(p.allConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.allConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","allConditions","allCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAllConditionDialogController",e)}(),function(){"use strict";function e(e,l,a,n,i,t,d,c,m){var u=this;function s(){var o,r;"voice"===u.trigger.channel?(_.some(u.anyConditions.rows,["field","queue"])&&(u.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,m.isAdmin()?c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){u.queues=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(c.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),u.queues=t}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","routeId"])&&(u.outboundRoutes||(m.isAdmin()?c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){u.outboundRoutes=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.outboundRoutes,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),u.outboundRoutes=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("routeId"===e.field){var n=_.find(u.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<u.outboundRoutes.length;i++)_.some(a,{id:u.outboundRoutes[i].id})&&(u.outboundRoutes[i].canSelect=!1,t.push(u.outboundRoutes[i]));u.outboundRoutes=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}))),_.some(u.anyConditions.rows,["field","agent"])&&(u.agents||(m.isAdmin()?c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){u.agents=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u.agents,{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),u.agents=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("agent"===e.field){var n=_.find(u.agents,{name:e.value});a.push(n)}});for(var i=0;i<u.agents.length;i++)_.some(a,{id:u.agents[i].id})&&(u.agents[i].canSelect=!1,t.push(u.agents[i]));u.agents=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})})))):("mail"===u.trigger.channel&&c.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.mailSubstatuses=e.rows||[]}).catch(function(){d.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})}),function(){var e,s=u.trigger.channel+("chat"===u.trigger.channel?"Websites":"Accounts"),n=u.trigger.channel+("chat"===u.trigger.channel?"Website":"Account");switch(u.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}m.isAdmin()?c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):c[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){u[s]=e.rows||[]}).then(function(){return c.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return c.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(u[s],{id:e.resourceId})}),a=null;a=[],u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(u[s],{id:e.id});n.canSelect=!1,t.push(n)}}),u[s]=t})}else{var t=[],a=[];u.anyConditions.rows.forEach(function(e){if("account"===e.field){var n=_.find(u[s],{id:Number(e.value)});a.push(n)}});for(var i=0;i<u[s].length;i++)_.some(a,{id:u[s][i].id})&&(u[s][i].canSelect=!1,t.push(u[s][i]));u[s]=t}}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+u.trigger.channel.toUpperCase()+u.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}())}function o(e){u.anyConditions=e||{count:0,rows:[]},s()}function r(){u.query.offset=(u.query.page-1)*u.query.limit,u.promise=c.trigger.getAnyConditions(u.query,o).$promise}function p(e,n){c.condition.delete({id:e.id}).$promise.then(function(){r(),n&&d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){u.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETtrigger"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}u.currentUser=m.getCurrentUser(),u.trigger={},u.anyConditions={count:0,rows:[]},u.selectedAnyConditions=[],u.query={fields:"id,field,operator,value,createdAt,updatedAt",limit:10,page:1},u.fields={queue:"Queue",lastevent:"Call_Status",routeId:"OutboundRoute",agent:"Agent",account:"Account",interaction:"Interaction",message:"Message",mailSubstatus:"Mail_Substatus",offlineMessage:"Offline_Message"},u.callStatuses={abandoned:"Abandon",timeout:"Timeout",complete:"Hangup",rejected:"Reject",called:"Ring",connect:"Answer",nosuchnumber:"NoSuchNumber",busy:"Busy",noanswer:"NoAnswer",congestion:"Congestion",agentreject:"AgentReject",amd:"AMD"},u.messageStatuses={in:"Incoming",out:"Outgoing",accept:"Accepted",reject:"Rejected"},u.onInit=function(e,n){u.trigger=e,u.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},u.query.TriggerAnyId=u.trigger.id,u.query.id=u.trigger.id,r()},u.success=o,u.getAnyConditions=r,u.createOrEditAnyCondition=function(e,n){i.show({controller:"CreateOrEditAnyConditionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:u.trigger,anyCondition:n,anyConditions:u.anyConditions.rows,license:null,setting:null,crudPermissions:u.crudPermissions}}).then(function(e){e&&(u.anyConditions={count:e.length,rows:e},s())})},u.exportSelectedAnyConditions=function(){var e=angular.copy(u.selectedAnyConditions);return u.selectedAnyConditions=[],e},u.deleteConfirm=function(e,n){var t=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").targetEvent(n).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(t).then(function(){p(e,!0)})},u.deleteAnyCondition=p,u.deleteSelectedAnyConditions=function(e){var n=i.confirm().title(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_TITLE")).content(a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETE_MESSAGE",{total:u.selectedAnyConditions.length})).ariaLabel("Delete conditions").targetEvent(e).ok("OK").cancel(a.instant("TOOLS.CANCEL"));i.show(n).then(function(){u.selectedAnyConditions.forEach(function(e){p(e)}),u.selectedAnyConditions=[],d.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITIONS_DELETED_SUCCESS_TITLE")})})}}e.$inject=["$scope","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.tools").controller("TriggerAnyConditionsController",e)}(),function(){"use strict";function e(e,t,l,a,i,n,s,o,d,c,r,m,u){var p=this;function g(){switch(p.anyCondition.field){case"queue":p.queues||(o=[{id:401,type:"inbound"},{id:1501,type:"outbound"}],r=null,c.isAdmin()?d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){p.queues=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VOICEQUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){r=e.rows||[]}).then(function(){for(var e=[],n=0;n<o.length;n++)e.push(d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:o[n].id}).$promise);return l.all(e)}).then(function(e){for(var n=_.map(e,function(e){return e&&e.rows?e.rows[0]:null}),t=[],a=0;a<o.length;a++){var i=_.find(n,["sectionId",o[a].id]);if(i)if(i.autoAssociation){var s=[];r.forEach(function(e){e.type===o[a].type&&s.push(e)}),t.push({rows:s,count:s.length})}else t.push(d.userProfileResource.get({sectionId:i.id}).$promise.then(function(e){return{count:e.count,rows:_.map(e.rows,function(e){return e.id=e.resourceId,delete e.resourceId,e})}}))}return l.all(t)}).then(function(e){var t=[],a=[];p.anyConditions.forEach(function(e){if("queue"===e.field){var n=_.find(r,{name:e.value});a.push(n)}});for(var n=0;n<e.length;n++)(e[n].rows||[]).forEach(function(e){t.push(e)});_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(r,{id:e.id});n.canSelect=!1,t.push(n)}}),p.queues=t}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"routeId":p.outboundRoutes||(c.isAdmin()?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){p.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.outboundRoutes,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.outboundRoutes,{id:e.id});n.canSelect=!1,t.push(n)}}),p.outboundRoutes=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("routeId"===e.field){var n=_.find(p.outboundRoutes,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.outboundRoutes.length;i++)_.some(a,{id:p.outboundRoutes[i].id})&&(p.outboundRoutes[i].canSelect=!1,t.push(p.outboundRoutes[i]));p.outboundRoutes=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"agent":p.agents||(c.isAdmin()?d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.user.get({fields:"id,name,fullname",sort:"name",role:"agent",nolimit:"true"}).$promise.then(function(e){p.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.agents,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.agents,{id:e.id});n.canSelect=!1,t.push(n)}}),p.agents=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("agent"===e.field){var n=_.find(p.agents,{name:e.value});a.push(n)}});for(var i=0;i<p.agents.length;i++)_.some(a,{id:p.agents[i].id})&&(p.agents[i].canSelect=!1,t.push(p.agents[i]));p.agents=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}));break;case"account":!function(){var e,n=p.trigger.channel+("chat"===p.trigger.channel?"Website":"Account");switch(p.trigger.channel){case"chat":e=502;break;case"fax":e=902;break;case"mail":e=602;break;case"openchannel":e=802;break;case"sms":e=702;break;case"whatsapp":e=2102}c.isAdmin()?d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d[n].get({fields:"id,name",sort:"id",nolimit:"true"}).$promise.then(function(e){p.accounts=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:e}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var t=_.map(e.rows,function(e){return _.find(p.accounts,{id:e.resourceId})}),a=null;a=[],p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}}),_.isEmpty(a)||a.forEach(function(e){if(!_.some(t,["id",e.id])){var n=_.find(p.accounts,{id:e.id});n.canSelect=!1,t.push(n)}}),p.accounts=t})}else{var t=[],a=[];p.anyConditions.forEach(function(e){if("account"===e.field){var n=_.find(p.accounts,{id:Number(e.value)});a.push(n)}});for(var i=0;i<p.accounts.length;i++)_.some(a,{id:p.accounts[i].id})&&(p.accounts[i].canSelect=!1,t.push(p.accounts[i]));p.accounts=t}}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_"+p.trigger.channel.toUpperCase()+p.trigger.channel=="chat"?"WEBSITES":"ACCOUNTS",msg:e.data?JSON.stringify(e.data):e.toString()})})}();break;case"mailSubstatus":d.mailSubstatus.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){p.mailSubstatuses=e.rows||[]}).catch(function(){i.error({title:a.instant("MAIL.SUBSTATUSES"),msg:a.instant("MAIL.NOTIFICATIONS.SUBSTATUSES_GET_ERROR")})})}var o,r}function v(e){t.hide(e)}p.currentUser=c.getCurrentUser(),p.anyCondition=angular.copy(s),p.anyConditions=angular.copy(n),p.setting=m,p.license=r,p.crudPermissions=u,p.hasModulePermissions={},p.newAnyCondition=!1,p.errors=[],p.trigger=angular.copy(o),p.anyCondition?g():(p.anyCondition={operator:"equals"},p.newAnyCondition=!0),p.anyCondition.TriggerAnyId=e.params.id||void 0,p.callStatuses=[{name:"Abandon",value:"abandoned"},{name:"Timeout",value:"timeout"},{name:"Hangup",value:"complete"},{name:"Reject",value:"rejected"},{name:"Ring",value:"called"},{name:"Answer",value:"connect"},{name:"NoSuchNumber",value:"nosuchnumber"},{name:"Busy",value:"busy"},{name:"NoAnswer",value:"noanswer"},{name:"Congestion",value:"congestion"},{name:"AgentReject",value:"agentreject"},{name:"AMD",value:"amd"}],p.onFieldSelection=function(){p.anyCondition.value=void 0,g()},p.addNewAnyCondition=function(){p.errors=[],d.trigger.addAnyCondition({id:e.params.id},p.anyCondition).$promise.then(function(e){p.anyConditions.unshift(e.toJSON()),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_CREATED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.saveAnyCondition=function(){p.errors=[],d.condition.update({id:p.anyCondition.id},p.anyCondition).$promise.then(function(){p.anyConditions=_.map(p.anyConditions,function(e){return e.id===p.anyCondition.id?p.anyCondition:e}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_SAVED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},p.deleteAnyCondition=function(e){p.errors=[];var n=t.confirm({skipHide:!0}).title(a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETE_TITLE")).ariaLabel("Delete condition").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){d.condition.delete({id:p.anyCondition.id}).$promise.then(function(){p.anyConditions=_.filter(p.anyConditions,function(e){return e.id!==p.allCondition.id}),i.success({title:a.instant("TOOLS.NOTIFICATIONS.CONDITION_DELETED_SUCCESS_TITLE")}),v(p.anyConditions)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"api.condition.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.condition.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},p.closeDialog=v}e.$inject=["$state","$mdDialog","$q","$translate","toasty","anyConditions","anyCondition","trigger","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditAnyConditionDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;d.currentUser=o.getCurrentUser(),d.license=t,d.setting=a,d.trigger=r||e.params.trigger||{},d.selectedTab=e.params.tab||0,e.params.crudPermissions?d.crudPermissions=e.params.crudPermissions:(d.userProfileSection=l&&1==l.count?l.rows[0]:null,d.crudPermissions=o.parseCrudPermissions(d.userProfileSection?d.userProfileSection.crudPermissions:null)),d.gotoTriggers=function(){e.go("app.tools.triggers",{},{reload:"app.tools.triggers"})},d.saveTrigger=function(){i.trigger.update({id:d.trigger.id},d.trigger).$promise.then(function(){s.success({title:n.instant("TOOLS.NOTIFICATIONS.TRIGGER_SAVED_SUCCESS_TITLE")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrigger",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$translate","license","setting","api","toasty","Auth","trigger","userProfileSection"],angular.module("app.tools").controller("TriggerController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){n.go("app.tools.triggers.edit",{id:e.id,trigger:e,crudPermissions:g.crudPermissions})}function h(e){g.triggers=e||{count:0,rows:[]}}function f(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.trigger.get(g.query,h).$promise:(g.query.id=g.userProfile.id,g.query.section="Triggers",g.promise=d.userProfile.getResources(g.query,h).$promise)}function b(e,n){d.trigger.delete({id:e.id}).$promise.then(function(){f(),n&&c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrigger"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrigger",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.triggers=o||{count:0,rows:[]},g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedTriggers=[],g.query={fields:"id,name,channel,status,description,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},g.goToEditState=v,g.createOrEditTrigger=function(e,n){if(g.crudPermissions.readOnly||g.crudPermissions.canDelete&&!g.crudPermissions.canEdit)return void v(n);a.show({controller:"CreateOrEditTriggerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/triggers/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{trigger:n,triggers:g.triggers.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}}).then(function(e){e&&(g.triggers={count:e.length,rows:e})})},g.success=h,g.getTriggers=f,g.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGER_DELETE_MESSAGE",{name:e.name})).ariaLabel("Delete trigger").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){b(e,!0)})},g.exportSelectedTriggers=function(){var e=angular.copy(g.selectedTriggers);return g.selectedTriggers=[],e},g.deleteSelectedTriggers=function(e){var n=a.confirm().title(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_TITLE")).content(s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETE_MESSAGE",{total:g.selectedTriggers.length})).ariaLabel("Delete triggers").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedTriggers.forEach(function(e){b(e)}),g.selectedTriggers=[],c.success({title:s.instant("TOOLS.NOTIFICATIONS.TRIGGERS_DELETED_SUCCESS_TITLE")})})},g.deselectTriggers=function(){g.selectedTriggers=[]},g.selectAllTriggers=function(){g.selectedTriggers=g.triggers.rows};var A=!0,E=1;e.$watch("vm.query.filter",function(e,n){A?i(function(){A=!1}):(n||(E=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=E),f())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","triggers","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.tools").controller("TriggersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_TRUNK",g.trunk=angular.copy(l),g.trunks=r,g.newTrunk=!1,g.trunk||(g.trunk={active:!0,type:"friend",dtmfmode:"rfc2833",qualify:"yes",t38pt_udptl:"no"},g.title="TOOLS.NEW_TRUNK",g.newTrunk=!0),g.addNewTrunk=function(){g.errors=[],d.trunk.save(g.trunk).$promise.then(function(e){g.trunks.unshift(e.toJSON()),o.success({title:"Trunk properly created",msg:g.trunk.name?g.trunk.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveTrunk=function(){g.errors=[],d.trunk.update({id:g.trunk.id},g.trunk).$promise.then(function(e){var n=_.find(g.trunks,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Trunk properly saved!",msg:g.trunk.name?g.trunk.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteTrunk=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The trunk will be deleted.").ariaLabel("Delete Trunk").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.trunk.delete({id:g.trunk.id}).$promise.then(function(){_.remove(g.trunks,{id:g.trunk.id}),o.success({title:"Trunk properly deleted!",msg:(g.trunk.name||"trunk")+" has been deleted!"}),v(g.trunk)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","trunks","trunk","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditTrunkDialogController",e)}(),function(){"use strict";function e(n,t,a,e,i,s,o){var r=this;function l(e){n.hide(e)}r.newTrunk=!0,r.trunk=angular.copy(i),r.trunks=s,r.title=o.instant("TOOLS.CLONE_TRUNK"),i&&i.name&&(r.title+=": "+i.name),r.cloneTrunk=function(){return e.trunk.clone({id:i.id},r.trunk).$promise.then(function(e){r.trunks.unshift(e.toJSON()),a.success({title:"Trunk properly cloned",msg:r.trunk.name?r.trunk.name+" has been cloned!":""}),t.go("app.tools.trunks.edit",{id:e.id}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.trunk.clone"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.trunk.clone",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.closeDialog=l}e.$inject=["$mdDialog","$state","toasty","api","trunk","trunks","$translate"],angular.module("app.tools").controller("TrunkcloneController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.trunk=c||t.params.trunk||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},u.clonedialog=function(e,n){a.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:u.trunks?u.trunks.rows:[],crudPermissions:u.crudPermissions}})},u.alert=l.info,u.gotoTrunks=function(){t.go("app.tools.trunks",{},{reload:"app.tools.trunks"})},u.saveTrunk=function(){r.trunk.update({id:u.trunk.id},u.trunk).$promise.then(function(){l.success({title:"Trunk updated!",msg:u.trunk.name?u.trunk.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtrunk",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.trunk&&(t=_.find(u.contexts,{name:u.trunk.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","trunk","userProfileSection"],angular.module("app.tools").controller("TrunkController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.trunks=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="trunks",f.listOrder="",f.listOrderAsc=null,f.selectedTrunks=[],f.query={fields:"createdAt,updatedAt,id,name,active,host,secret,defaultuser,context,callerid,type,dtmfmode,nat,qualify,allow,insecure,call_limit,registry,description,directmedia,callcounter,fromdomain,fromuser,outboundproxy,usereqphone,trustrpid,sendrpid,encryption,port,transport,t38pt_udptl,videosupport,otherFields",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Friend",value:"'friend'"},{option:"User",value:"'user'"},{option:"Peer",value:"'peer'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydtmfmode=_.keyBy([{option:"rfc2833",value:"'rfc2833'"},{option:"info",value:"'info'"},{option:"shortinfo",value:"'shortinfo'"},{option:"inband",value:"'inband'"},{option:"auto",value:"'auto'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraynat=_.keyBy([{option:"force_rport",value:"'force_rport'"},{option:"comedia",value:"'comedia'"},{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"never",value:"'never'"},{option:"route",value:"'route'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayqualify=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayallow=_.keyBy([{option:"ulaw",value:"'ulaw'"},{option:"alaw",value:"'alaw'"},{option:"gsm",value:"'gsm'"},{option:"g723",value:"'g723'"},{option:"g726",value:"'g726'"},{option:"g722",value:"'g722'"},{option:"g729",value:"'g729'"},{option:"ilbc",value:"'ilbc'"},{option:"opus",value:"'opus'"},{option:"h264",value:"'h264'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayinsecure=_.keyBy([{option:"port",value:"'port'"},{option:"invite",value:"'invite'"},{option:"very",value:"'very'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydirectmedia=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"nonat",value:"'nonat'"},{option:"update",value:"'update'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraycallcounter=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayusereqphone=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytrustrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysendrpid=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"},{option:"pai",value:"'pai'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayencryption=_.keyBy([{option:"yes",value:"'yes'"},{option:"no",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytransport=_.keyBy([{option:"udp",value:"'udp'"},{option:"tcp",value:"'tcp'"},{option:"ws",value:"'ws'"},{option:"wss",value:"'wss'"},{option:"tls",value:"'tls'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.tools.trunks.edit",{id:e.id,trunk:e,crudPermissions:f.crudPermissions})},f.clonedialog=function(e,n){i.show({controller:"TrunkcloneController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/edit/clone/clone.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{trunk:e,trunks:f.trunks?f.trunks.rows:[],crudPermissions:f.crudPermissions}})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.trunks",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.trunks",{})}},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("trunk")+"?").htmlContent("<b>"+(e.name||"trunk")+"</b> will be deleted.").ariaLabel("delete trunk").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getTrunks=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.trunk.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Trunks",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditTrunk=function(e,n){i.show({controller:"CreateOrEditTrunkDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/trunks/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{trunk:n,trunks:f.trunks.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteTrunk=y,f.exportSelectedTrunks=function(){var e=angular.copy(f.selectedTrunks);return f.selectedTrunks=[],e},f.deleteSelectedTrunks=function(e){var n=i.confirm().title("Are you sure want to delete the selected trunks?").htmlContent("<b>"+f.selectedTrunks.length+" selected</b> will be deleted.").ariaLabel("delete Trunks").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedTrunks.forEach(function(e){y(e)}),f.selectedTrunks=[]})},f.deselectTrunks=function(){f.selectedTrunks=[]},f.selectAllTrunks=function(){f.selectedTrunks=f.trunks.rows};var b=!0,A=1;function E(e){f.trunks=e||{count:0,rows:[]}}function y(e){m.trunk.delete({id:e.id}).$promise.then(function(){_.remove(f.trunks.rows,{id:e.id}),f.trunks.count-=1,f.trunks.rows.length||f.getTrunks(),p.success({title:_.startCase("Trunk")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEtrunk"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEtrunk",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getTrunks())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","trunks","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("TrunksController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="TOOLS.EDIT_VARIABLE",g.variable=angular.copy(l),g.variables=r,g.newVariable=!1,g.variable||(g.variable={},g.title="TOOLS.NEW_VARIABLE",g.newVariable=!0),g.addNewVariable=function(){g.errors=[],d.variable.save(g.variable).$promise.then(function(e){g.variables.unshift(e.toJSON()),o.success({title:"Variable properly created",msg:g.variable.name?g.variable.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVariable=function(){g.errors=[],d.variable.update({id:g.variable.id},g.variable).$promise.then(function(e){var n=_.find(g.variables,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Variable properly saved!",msg:g.variable.name?g.variable.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVariable=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The variable will be deleted.").ariaLabel("Delete Variable").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.variable.delete({id:g.variable.id}).$promise.then(function(){_.remove(g.variables,{id:g.variable.id}),o.success({title:"Variable properly deleted!",msg:(g.variable.name||"variable")+" has been deleted!"}),v(g.variable)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.variable.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.variable.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","variables","variable","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditVariableDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.variables=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="variables",f.listOrder="",f.listOrderAsc=null,f.selectedVariables=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{variable:e,variables:f.variables.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("variable")+"?").htmlContent("<b>"+(e.name||"variable")+"</b> will be deleted.").ariaLabel("delete variable").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVariables=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.variable.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Variables",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVariable=function(e,n){i.show({controller:"CreateOrEditVariableDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/variables/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{variable:n,variables:f.variables.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVariable=y,f.exportSelectedVariables=function(){var e=angular.copy(f.selectedVariables);return f.selectedVariables=[],e},f.deleteSelectedVariables=function(e){var n=i.confirm().title("Are you sure want to delete the selected variables?").htmlContent("<b>"+f.selectedVariables.length+" selected</b> will be deleted.").ariaLabel("delete Variables").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVariables.forEach(function(e){y(e)}),f.selectedVariables=[]})},f.deselectVariables=function(){f.selectedVariables=[]},f.selectAllVariables=function(){f.selectedVariables=f.variables.rows};var b=!0,A=1;function E(e){f.variables=e||{count:0,rows:[]}}function y(e){m.variable.delete({id:e.id}).$promise.then(function(){_.remove(f.variables.rows,{id:e.id}),f.variables.count-=1,f.variables.rows.length||f.getVariables(),p.success({title:_.startCase("Variable")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvariable"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvariable",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVariables())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","variables","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("VariablesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VIDEO.EDIT_SCREENRECORDING",g.screenRecording=angular.copy(l),g.screenRecordings=r,g.newscreenRecording=!1,g.screenRecording||(g.screenRecording={},g.title="VIDEO.NEW_SCREENRECORDING",g.newscreenRecording=!0),g.addNewscreenRecording=function(){g.errors=[],d.screenRecording.save(g.screenRecording).$promise.then(function(e){g.screenRecordings.unshift(e.toJSON()),o.success({title:"screenRecording properly created",msg:g.screenRecording.name?g.screenRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savescreenRecording=function(){g.errors=[],d.screenRecording.update({id:g.screenRecording.id},g.screenRecording).$promise.then(function(e){var n=_.find(g.screenRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"screenRecording properly saved!",msg:g.screenRecording.name?g.screenRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletescreenRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The screenRecording will be deleted.").ariaLabel("Delete screenRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.screenRecording.delete({id:g.screenRecording.id}).$promise.then(function(){_.remove(g.screenRecordings,{id:g.screenRecording.id}),o.success({title:"screenRecording properly deleted!",msg:(g.screenRecording.name||"screenRecording")+" has been deleted!"}),v(g.screenRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.screenRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,d.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){g.users=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","screenRecordings","screenRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.video").controller("CreateOrEditscreenRecordingDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c,m=this;if(m.loading=!1,m.recording=Object.assign({},i),m.route="screenRecording",m.element=l,m.actionOptions=Object.assign({},s),m.path=r,m.label=o,m.app="video",m.model="screenRecording",console.log("TCL: vm.path",m.path),console.log("TCL: vm.recording[vm.path]",m.recording[m.path]),m.filename=-1<m.recording[m.path].indexOf("/")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("/")+1):-1<m.recording[m.path].indexOf("\\")?m.recording[m.path].substring(m.recording[m.path].lastIndexOf("\\")+1):m.recording[m.path],m.format=!1,_.isNil(m.recording.format)&&(m.recording.format=m.filename.slice(m.filename.lastIndexOf("."))),(".wav"===m.recording.format&&"audio"===m.element||".mp4"===m.recording.format&&"video"===m.element)&&(m.format=!0),m.found=!0,m.format&&(c=d.defer(),a.screenRecording.download({id:m.recording.id,path:String(m.path)}).$promise.then(function(e){m.format=!0,m.found=!0,c.resolve()}).catch(function(e){console.log("err"),m.format=!1,m.found=!1,c.resolve()}),c.promise),!_.isNil(s.properties)&&s.properties){if(m.properties=Object.assign({},i),Object.keys(i).forEach(function(e){String(e[0].toUpperCase())===String(e[0])&&delete m.properties[e]}),m.propertiesDefault={},!_.isNil(s.propertiesList)&&0<s.propertiesList.length){m.propertiesDefault=Object.assign({},i);var u=s.propertiesList,p=Object.keys(i),g=!0;p.forEach(function(n){g=!0,u.forEach(function(e){String(n)===String(e)&&(g=!1)}),g&&delete m.propertiesDefault[n]}),m.properties=m.propertiesDefault}if(!_.isNil(s.extraData)&&0<s.extraData.length){m.propertiesExtra={};for(var v=s.extraData,h=0;h<v.length;h++)for(var f=v[h].values,b=v[h].model,A=0;A<f.length;A++)m.propertiesExtra[f[A].text]=i[b][f[A].key];m.properties=Object.assign({},m.propertiesDefault,m.propertiesExtra)}}m.closeDialog=function(){n.hide()}}e.$inject=["$scope","$mdDialog","toasty","api","recording","actionOptions","label","varPath","elementTag","$q"],angular.module("app.video").controller("screenRecordingplayController",e)}(),function(){"use strict";function e(e,n,t,a,r,l,i,o,s,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.screenRecordings=s||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="screenRecordings",f.listOrder="",f.listOrderAsc=null,f.selectedScreenRecordings=[],f.query={fields:"createdAt,updatedAt,id,interactionid,channel,format,value,rating,UserId,duration,startedAt,closedAt",createdAt:"@msUtils.firstLastDayMonth()",includeAll:"true",sort:"-updatedAt",limit:10,page:1},f.query.createdAt=u.firstLastDayMonth(),f.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],f.playrecording=function(e,n,t,a,i){var s={route:"screenRecording",name:"screenRecordings",model:"screenRecording",singular:"screenRecording"},a=String(a),o=String(t);console.log("TCL:  path",String(t)),r.show({controller:"screenRecordingplayController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/partialViews/play.html",parent:angular.element(l.body),targetEvent:n,clickOutsideToClose:!0,locals:{recording:e,recordings:f.screenRecordings.rows,license:f.license,setting:null,item:s,actionOptions:{upperTitle:!1,lowerTitle:!0,properties:!0,propertiesIcon:"icon-video",propertiesList:["format","interactionid","duration","startedAt","closedAt","createdAt"],extraData:[{model:"User",values:[{key:"name",text:"agentname"}]}]},label:a,varPath:o,elementTag:String(i)}})},f.downloadfile2=function(e,n){var t=!1,a=_.isNil(e.format)?e.value.substring(e.value.lastIndexOf(".")):e.format;t=".mp4"===a;var s=-1<e.value.lastIndexOf("/")?e.value.substring(e.value.lastIndexOf("/")+1):-1<e.value.lastIndexOf("\\")?e.value.substring(e.value.lastIndexOf("\\")+1):e.value;return m.screenRecording.download({id:e.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:o.instant("VIDEO.CANT_DOWNLOAD_THIS_FILE"),msg:o.instant("VIDEO.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.screenRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},f.deleteconfirm=function(e,n){var t=r.confirm().title("Are you sure want to delete the "+_.startCase("screenRecording")+"?").htmlContent("<b>"+(e.name||"screenRecording")+"</b> will be deleted.").ariaLabel("delete screenRecording").targetEvent(n).ok("OK").cancel("CANCEL");r.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getScreenRecordings=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.screenRecording.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ScreenRecordings",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditscreenRecording=function(e,n){r.show({controller:"CreateOrEditscreenRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/video/views/screenRecordings/create/dialog.html",parent:angular.element(l.body),targetEvent:e,clickOutsideToClose:!0,locals:{screenRecording:n,screenRecordings:f.screenRecordings.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletescreenRecording=y,f.exportSelectedScreenRecordings=function(){var e=angular.copy(f.selectedScreenRecordings);return f.selectedScreenRecordings=[],e},f.deleteSelectedScreenRecordings=function(e){var n=r.confirm().title("Are you sure want to delete the selected screenRecordings?").htmlContent("<b>"+f.selectedScreenRecordings.length+" selected</b> will be deleted.").ariaLabel("delete screenRecordings").targetEvent(e).ok("OK").cancel("CANCEL");r.show(n).then(function(){f.selectedScreenRecordings.forEach(function(e){y(e)}),f.selectedScreenRecordings=[]})},f.deselectScreenRecordings=function(){f.selectedScreenRecordings=[]},f.selectAllScreenRecordings=function(){f.selectedScreenRecordings=f.screenRecordings.rows},f.convertDuration=function(e){var n=Math.floor(e/1e3%60),t=Math.floor(e/6e4%60),a=Math.floor(e/36e5%24),i=a<10?"0"+String(a):String(a),s=t<10?"0"+String(t):String(t),o=n<10?"0"+String(n):String(n);return i+":"+s+":"+o},m.user.get({fields:"id,name,fullname",sort:"name",nolimit:"true"}).$promise.then(function(e){f.users=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERS",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.screenRecordings=e||{count:0,rows:[]}}function y(e){m.screenRecording.delete({id:e.id}).$promise.then(function(){_.remove(f.screenRecordings.rows,{id:e.id}),f.screenRecordings.count-=1,f.screenRecordings.rows.length||f.getScreenRecordings(),p.success({title:_.startCase("screenRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEscreenRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEscreenRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getScreenRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","screenRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.video").controller("ScreenRecordingsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l){var d=this;function c(e){return _.isEmpty(e)||isNaN(e)?e:parseInt(e,10)}function m(e){switch(e){case"sound":if(!d.application.appdata)return;return[{key:"save_name",value:d.application.appdata.split("/").pop()}];case"squareProject":if(!d.application.project)return;return[{key:"name",value:d.application.project.split(",")[1]}];case"tag":if(!d.application.tag)return;return[{key:"name",value:d.application.tag}];case"trunk":if(!d.application.trunk)return;return[{key:"name",value:d.application.trunk}];case"user":if(!d.application.user&&!d.application.users)return;return d.application.user?[{key:"name",value:d.application.user.split("/")[1]}]:_.map(d.application.users,function(e){return{key:"name",value:e.split("/")[1]}});case"variable":if(!d.application.name)return;return[{key:"name",value:d.application.name}];case"voiceContext":if(!d.application.context)return;return[{key:"name",value:d.application.context}];case"voiceMail":if(!d.application.voiceMail)return;return[{key:"mailbox",value:d.application.voiceMail.split("@")[0]}];case"voiceQueue":if(!d.application.queue)return;return[{key:"name",value:d.application.queue}]}}function u(){o.getResourcesByRole(d.currentUser,"trunk",{fields:"id,name",sort:"name",nolimit:"true"},m("trunk")).then(function(e){d.trunks=e}).catch(function(){s.error({title:i.instant("TOOLS.TRUNKS"),msg:i.instant("VOICE.NOTIFICATIONS.TRUNKS_GET_ERROR")})})}function p(){o.getResourcesByRole(d.currentUser,"sound",{fields:"id,name,save_name",sort:"name",nolimit:"true"},m("sound")).then(function(e){d.sounds=e}).catch(function(){s.error({title:i.instant("TOOLS.SOUNDS"),msg:i.instant("VOICE.NOTIFICATIONS.SOUNDS_GET_ERROR")})})}function g(){var e={fields:"id,name,role",sort:"name",nolimit:"true"},n=m("user"),t=[o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"agent"}),n,"Agents"),o.getResourcesByRole(d.currentUser,"user",_.merge(e,{role:"telephone"}),n,"Telephones")];a.all(t).then(function(e){var n=_(e).flatMap(function(e){return e.rows}).orderBy([function(e){return e.name.toLowerCase()}]).value();d.users={rows:n,count:n.length}}).catch(function(){s.error({title:i.instant("STAFF.USERS"),msg:i.instant("VOICE.NOTIFICATIONS.USERS_GET_ERROR")})})}function v(){(d.application.appdata||"custom"===d.application.appType)&&e.hide(d.application),e.hide()}d.currentUser=r.getCurrentUser(),d.application=angular.copy(n),d.crudPermissions=l,d.errors=[],d.init=function(){d.application.appdata&&function(){var e=[];switch(d.application.appType){case"agi":d.application.project=d.application.appdata;break;case"dial":e=d.application.appdata.split(","),d.application.tech=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"externalDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"goTo":e=d.application.appdata.split(","),d.application.context=c(e[0]),d.application.extension=c(e[1]),d.application.priority=c(e[2]);break;case"internalDial":e=d.application.appdata.split(","),d.application.user=c(e[0]),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"outboundDial":e=d.application.appdata.split(","),d.application.trunk=e[0].split("/")[1],d.application.phone=e[0].split("/")[2],d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]),d.application.prefix=d.application.phone?d.application.phone.split("$")[0]:void 0,d.application.callerId=d.application.callerID?"CALLERID(all)="+d.application.callerID:void 0;break;case"playback":e=d.application.appdata.split(","),d.application.appdata=c(e[0]),d.application.options=c(e[1]);break;case"queue":e=d.application.appdata.split(","),d.application.queue=c(e[0]),d.application.options=c(e[1]),d.application.URL=c(e[2]),d.application.sound=c(e[3]),d.application.timeout=c(e[4]),d.application.agi=c(e[5]),d.application.macro=c(e[6]),d.application.gosub=c(e[7]),d.application.rule=c(e[8]),d.application.position=c(e[9]);break;case"ringGroup":e=d.application.appdata.split(","),d.application.users=e[0].split("&"),d.application.timeout=c(e[1]),d.application.options=c(e[2]),d.application.url=c(e[3]);break;case"set":e=d.application.appdata.split("="),d.application.name=e[0],d.application.value=e[1];break;case"voicemail":e=d.application.appdata.split(","),d.application.voiceMail=c(e[0]),d.application.options=c(e[1])}}();switch(d.application.appType){case"agi":o.getResourcesByRole(d.currentUser,"squareProject",{fields:"id,name",sort:"name",nolimit:"true"},m("squareProject")).then(function(e){d.projects=e}).catch(function(){s.error({title:i.instant("CALLYSQUARE.CALLYSQUARE")+" "+i.instant("CALLYSQUARE.PROJECTS"),msg:i.instant("VOICE.NOTIFICATIONS.CALLYSQUARE_PROJECTS_GET_ERROR")})});break;case"externalDial":u();break;case"goTo":o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:"true"},m("voiceContext")).then(function(e){d.contexts=e}).catch(function(){s.error({title:i.instant("VOICE.CONTEXTS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});break;case"internalDial":g();break;case"outboundDial":o.getResourcesByRole(d.currentUser,"tag",{fields:"id,name",sort:"name",nolimit:"true"},m("tag")).then(function(e){d.tags=e}).catch(function(){s.error({title:i.instant("TOOLS.TAGS"),msg:i.instant("VOICE.NOTIFICATIONS.TAGS_GET_ERROR")})}),u();break;case"playback":p();break;case"queue":p(),o.getResourcesByRole(d.currentUser,"voiceQueue",{type:"inbound",fields:"id,name,type",sort:"name",nolimit:"true"},m("voiceQueue")).then(function(e){d.queues=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEQUEUES"),msg:i.instant("VOICE.NOTIFICATIONS.QUEUES_GET_ERROR")})});break;case"ringGroup":g();break;case"set":o.getResourcesByRole(d.currentUser,"variable",{fields:"id,name",sort:"name",nolimit:"true"},m("variable")).then(function(e){d.variables=e}).catch(function(){s.error({title:i.instant("TOOLS.VARIABLES"),msg:i.instant("VOICE.NOTIFICATIONS.VARIABLES_GET_ERROR")})});break;case"voicemail":o.getResourcesByRole(d.currentUser,"voiceMail",{fields:"id,mailbox",sort:"mailbox",nolimit:"true"},m("voiceMail")).then(function(e){d.voiceMails=e}).catch(function(){s.error({title:i.instant("VOICE.VOICEMAILS"),msg:i.instant("VOICE.NOTIFICATIONS.VOICEMAILS_GET_ERROR")})})}},d.saveRoutingApp=function(){d.errors=[],function(){var e=[];switch(d.application.appType){case"agi":d.application.appdata=d.application.project;break;case"dial":e[0]=d.application.tech,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"externalDial":e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"goTo":e[0]=d.application.context,e[1]=d.application.extension,e[2]=d.application.priority,d.application.appdata=e.join(",");break;case"internalDial":e[0]=d.application.user,e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"outboundDial":d.application.phone=t.cutdigits?(d.application.prefix||"")+"${EXTEN:"+t.cutdigits+"}":(d.application.prefix||"")+"${EXTEN}","none"===t.recordingFormat?d.application.options=d.application.options.replace("U(xcally-mixmonitor-context)",""):d.application.options.indexOf("U(xcally-mixmonitor-context)")<0&&(d.application.options+="U(xcally-mixmonitor-context)"),e[0]=["SIP",d.application.trunk,d.application.phone].join("/"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"playback":e[0]=d.application.appdata,e[1]=d.application.options,d.application.appdata=e.join(",");break;case"queue":e[0]=d.application.queue,e[1]=d.application.options,e[2]=d.application.URL,e[3]=d.application.sound,e[4]=d.application.timeout,e[5]=d.application.agi,e[6]=d.application.macro,e[7]=d.application.gosub,e[8]=d.application.rule,e[9]=d.application.position,d.application.appdata=e.join(",");break;case"ringGroup":e[0]=d.application.users.join("&"),e[1]=d.application.timeout,e[2]=d.application.options,e[3]=d.application.url,d.application.appdata=e.join(",");break;case"set":e[0]=d.application.name,e[1]=d.application.value,d.application.appdata=e.join("=");break;case"voicemail":e[0]=d.application.voiceMail,e[1]=d.application.options,d.application.appdata=e.join(",")}}(),v()},d.closeDialog=v}e.$inject=["$mdDialog","$q","$translate","toasty","application","route","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditRoutingAppDialogController",e)}(),function(){"use strict";function e(n,t,e,a,i,s,o,r,l){var d=this;function c(){var e=[{key:"name",value:d.interval.IntervalId}];s.getResourcesByRole(d.currentUser,"interval",{fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0},e).then(function(e){d.intervals=e}).catch(function(){i.error({title:t.instant("TOOLS.INTERVALS"),msg:t.instant("VOICE.NOTIFICATIONS.INTERVALS_GET_ERROR")})})}function m(e){n.hide(e)}d.currentUser=o.getCurrentUser(),d.interval=angular.copy(e),d.intervals=a||{rows:[],count:0},d.types=["always","custom","list"],d.crudPermissions=r,d.errors=[],d.daysOfWeek=l.getDaysOfWeek(),d.monthNumber=l.getMonthNumber(),d.monthName=l.getMonthName(),d.daysOfMonth=l.getDaysOfMonth(),d.initialize=function(){if("*,*,*,*"===d.interval.interval)return d.type=d.interval.IntervalId&&d.interval.application?"list":"always",void("list"===d.type&&c());d.type="custom";var e=d.interval.interval.split(","),n=e[0],t=e[1],a=e[2],i=e[3];if("*"!==n){var s,o=n.split("-")[0],r=n.split("-")[1];(s=new Date).setHours(Number(o.split(":")[0])),s.setMinutes(Number(o.split(":")[1])),d.timeRangeFrom=s,(s=new Date).setHours(Number(r.split(":")[0])),s.setMinutes(Number(r.split(":")[1])),d.timeRangeTo=s}"*"!==t&&(d.dayOfWeekFrom=t.split("-")[0],d.dayOfWeekTo=t.split("-")[1]);"*"!==a&&(d.monthDayFrom=a.split("-")[0],d.monthDayTo=a.split("-")[1]);"*"!==i&&(d.monthFrom=i.split("-")[0],d.monthTo=i.split("-")[1])},d.onTypeChange=function(){"list"===d.type&&0===d.intervals.count&&c()},d.saveInterval=function(){d.errors=[],d.interval.interval=function(){if(["always","list"].includes(d.type))return"*,*,*,*";var e=[];if("*"!==d.timeRangeFrom&&d.timeRangeFrom&&d.timeRangeTo){var n=(d.timeRangeFrom.getHours()<10?"0":"")+d.timeRangeFrom.getHours()+":"+(d.timeRangeFrom.getMinutes()<10?"0":"")+d.timeRangeFrom.getMinutes(),t=(d.timeRangeTo.getHours()<10?"0":"")+d.timeRangeTo.getHours()+":"+(d.timeRangeTo.getMinutes()<10?"0":"")+d.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return d.dayOfWeekFrom?d.dayOfWeekTo?e.push(d.dayOfWeekFrom+"-"+d.dayOfWeekTo):e.push(d.dayOfWeekFrom):e.push("*"),d.monthDayFrom?d.monthDayTo?e.push(d.monthDayFrom+"-"+d.monthDayTo):e.push(d.monthDayFrom):e.push("*"),d.monthFrom?d.monthTo?e.push(d.monthFrom+"-"+d.monthTo):e.push(d.monthFrom):e.push("*"),e.join()}(),"list"!==d.type&&(d.interval.IntervalId=null);m(d.interval)},d.closeDialog=m}e.$inject=["$mdDialog","$translate","interval","intervals","toasty","api","Auth","crudPermissions","IndexFactory"],angular.module("app.voice").controller("EditRoutingIntervalDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.chanSpies=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="chanSpies",f.listOrder="",f.listOrderAsc=null,f.selectedChanSpies=[],f.query={fields:"createdAt,updatedAt,id,name,prefix,options,auth,password,record,recordingFormat,description",sort:"-updatedAt",limit:10,page:1},f.arrayoptions=_.keyBy([{option:"b: Only spy on channels involved in a bridged call.",value:"'b'"},{option:"B: Instead of whispering on a single channel barge in on both channels involved in the call.",value:"'B'"},{option:"E: Exit when the spied-on channel hangs up.",value:"'E'"},{option:"o: Only listen to audio coming from this channel.",value:"'o'"},{option:"q: Don't play a beep when beginning to spy on a channel, or speak the selected channel name.",value:"'q'"},{option:"s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.",value:"'s'"},{option:"S: Stop when no more channels are left to spy on.",value:"'S'"},{option:"w: Enable whisper mode, so the spying channel can talk to the spied-on channel.",value:"'w'"},{option:"W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.",value:"'W'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrecordingFormat=_.keyBy([{option:"wav",value:"'wav'"},{option:"gsm",value:"'gsm'"},{option:"wav49",value:"'WAV'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editdialog=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{chanSpy:e,chanSpies:f.chanSpies.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("chanSpy")+"?").htmlContent("<b>"+(e.name||"chanSpy")+"</b> will be deleted.").ariaLabel("delete chanSpy").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getChanSpies=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceChanSpy.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ChanSpies",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditchanSpy=function(e,n){i.show({controller:"CreateOrEditchanSpyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/chanSpies/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{chanSpy:n,chanSpies:f.chanSpies.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletechanSpy=y,f.exportSelectedChanSpies=function(){var e=angular.copy(f.selectedChanSpies);return f.selectedChanSpies=[],e},f.deleteSelectedChanSpies=function(e){var n=i.confirm().title("Are you sure want to delete the selected chanSpies?").htmlContent("<b>"+f.selectedChanSpies.length+" selected</b> will be deleted.").ariaLabel("delete chanSpys").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedChanSpies.forEach(function(e){y(e)}),f.selectedChanSpies=[]})},f.deselectChanSpies=function(){f.selectedChanSpies=[]},f.selectAllChanSpies=function(){f.selectedChanSpies=f.chanSpies.rows};var b=!0,A=1;function E(e){f.chanSpies=e||{count:0,rows:[]}}function y(e){m.voiceChanSpy.delete({id:e.id}).$promise.then(function(){_.remove(f.chanSpies.rows,{id:e.id}),f.chanSpies.count-=1,f.chanSpies.rows.length||f.getChanSpies(),p.success({title:_.startCase("chanSpy")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceChanSpy"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceChanSpy",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getChanSpies())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","chanSpies","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ChanSpiesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CHANSPY",g.chanSpy=angular.copy(l),g.chanSpies=r,g.newchanSpy=!1,g.chanSpy||(g.chanSpy={recordingFormat:"wav"},g.title="VOICE.NEW_CHANSPY",g.newchanSpy=!0),g.addNewchanSpy=function(){g.errors=[],d.voiceChanSpy.save(g.chanSpy).$promise.then(function(e){g.chanSpies.unshift(e.toJSON()),o.success({title:"chanSpy properly created",msg:g.chanSpy.name?g.chanSpy.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savechanSpy=function(){g.errors=[],d.voiceChanSpy.update({id:g.chanSpy.id},g.chanSpy).$promise.then(function(e){var n=_.find(g.chanSpies,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"chanSpy properly saved!",msg:g.chanSpy.name?g.chanSpy.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletechanSpy=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The chanSpy will be deleted.").ariaLabel("Delete chanSpy").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceChanSpy.delete({id:g.chanSpy.id}).$promise.then(function(){_.remove(g.chanSpies,{id:g.chanSpy.id}),o.success({title:"chanSpy properly deleted!",msg:(g.chanSpy.name||"chanSpy")+" has been deleted!"}),v(g.chanSpy)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceChanSpy.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceChanSpy.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","chanSpies","chanSpy","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditchanSpyDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contexts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="contexts",f.listOrder="",f.listOrderAsc=null,f.selectedContexts=[],f.query={fields:"createdAt,updatedAt,id,name,description",sort:"-updatedAt",defaultEntry:"false",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{context:e,contexts:f.contexts.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("context")+"?").htmlContent("<b>"+(e.name||"context")+"</b> will be deleted.").ariaLabel("delete context").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContexts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceContext.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Contexts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContext=function(e,n){i.show({controller:"CreateOrEditContextDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/contexts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{context:n,contexts:f.contexts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContext=y,f.exportSelectedContexts=function(){var e=angular.copy(f.selectedContexts);return f.selectedContexts=[],e},f.deleteSelectedContexts=function(e){var n=i.confirm().title("Are you sure want to delete the selected contexts?").htmlContent("<b>"+f.selectedContexts.length+" selected</b> will be deleted.").ariaLabel("delete Contexts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContexts.forEach(function(e){y(e)}),f.selectedContexts=[]})},f.deselectContexts=function(){f.selectedContexts=[]},f.selectAllContexts=function(){f.selectedContexts=f.contexts.rows};var b=!0,A=1;function E(e){f.contexts=e||{count:0,rows:[]}}function y(e){m.voiceContext.delete({id:e.id}).$promise.then(function(){_.remove(f.contexts.rows,{id:e.id}),f.contexts.count-=1,f.contexts.rows.length||f.getContexts(),p.success({title:_.startCase("Context")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceContext"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceContext",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getContexts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contexts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("ContextsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_CONTEXT",g.context=angular.copy(l),g.contexts=r,g.newContext=!1,g.context||(g.context={},g.title="VOICE.NEW_CONTEXT",g.newContext=!0),g.addNewContext=function(){g.errors=[],d.voiceContext.save(g.context).$promise.then(function(e){g.contexts.unshift(e.toJSON()),o.success({title:"Context properly created",msg:g.context.name?g.context.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContext=function(){g.errors=[],d.voiceContext.update({id:g.context.id},g.context).$promise.then(function(e){var n=_.find(g.contexts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Context properly saved!",msg:g.context.name?g.context.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContext=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The context will be deleted.").ariaLabel("Delete Context").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceContext.delete({id:g.context.id}).$promise.then(function(){_.remove(g.contexts,{id:g.context.id}),o.success({title:"Context properly deleted!",msg:(g.context.name||"context")+" has been deleted!"}),v(g.context)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceContext.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceContext.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","contexts","context","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditContextDialogController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.inboundRoute=angular.copy(s),d.inboundRoutes=n,d.newInboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.inboundRoute||(d.inboundRoute={appdata:"Inbound Call",type:"inbound",context:"from-voip-provider"},d.newInboundRoute=!0);e=[{key:"name",value:d.inboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newinboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.inboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInboundRoute=function(){d.errors=[],o.voiceExtension.save(d.inboundRoute).$promise.then(function(e){c(e.id).then(function(){d.inboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.inboundRoute.id},d.inboundRoute).$promise.then(function(e){var n=_.find(d.inboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.inboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.inboundRoute.exten})).ariaLabel("Delete inbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.inboundRoute.id}).$promise.then(function(){_.remove(d.inboundRoutes,{id:d.inboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.inboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","inboundRoutes","inboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.inboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.inboundRoute=l||e.params.inboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.inboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Inbound",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Inbound",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Inbound",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Inbound",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Inbound",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Inbound",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Inbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.inboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInboundRoutes=function(){e.go("app.voice.inboundRoutes",{},{reload:"app.voice.inboundRoutes"})},m.saveInboundRoute=function(){o.voiceExtension.update({id:m.inboundRoute.id},m.inboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.inboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","inboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.inboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.inboundRoutes.rows,{id:e.id}),g.inboundRoutes.count-=1,g.inboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.inboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"inbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.inboundRoutes.edit",{id:e.id,inboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInboundRoute=function(e,n){a.show({controller:"CreateOrEditInboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/inboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{inboundRoute:n,inboundRoutes:g.inboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInboundRoutes=function(){var e=angular.copy(g.selectedInboundRoutes);return g.selectedInboundRoutes=[],e},g.deleteSelectedInboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInboundRoutes.forEach(function(e){f(e)}),g.selectedInboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","inboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InboundRoutesController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.internalRoute=angular.copy(s),d.internalRoutes=n,d.newInternalRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.internalRoute||(d.internalRoute={appdata:"Internal Call",type:"internal",context:"from-sip"},d.newInternalRoute=!0);e=[{key:"name",value:d.internalRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newInternalRoute)return;var e={sort:"priority",VoiceExtensionId:d.internalRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewInternalRoute=function(){d.errors=[],o.voiceExtension.save(d.internalRoute).$promise.then(function(e){c(e.id).then(function(){d.internalRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveInternalRoute=function(){d.errors=[],o.voiceExtension.update({id:d.internalRoute.id},d.internalRoute).$promise.then(function(e){var n=_.find(d.internalRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.internalRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteInternalRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.internalRoute.exten})).ariaLabel("Delete internal route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.internalRoute.id}).$promise.then(function(){_.remove(d.internalRoutes,{id:d.internalRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.internalRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","internalRoutes","internalRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditInternalRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.internalRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.internalRoute=l||e.params.internalRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.internalRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"AGI",appAlias:"CallySquare",appType:"agi",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"Dial",appType:"dial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"internalDial",context:"from-sip",type:"Internal",options:"xX",interval:"*,*,*,*"},{app:"Dial",appType:"externalDial",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Dial",appType:"ringGroup",context:"from-sip",type:"Internal",interval:"*,*,*,*",options:"xX"},{app:"Playback",appType:"playback",context:"from-sip",type:"Internal",interval:"*,*,*,*",answer:!0},{app:"Queue",appType:"queue",context:"from-sip",type:"Internal",options:"xX",appdata:",xX,,,300,,,,,",interval:"*,*,*,*",answer:!0},{app:"Set",appType:"set",context:"from-sip",type:"Internal",separator:"=",interval:"*,*,*,*"},{app:"Voicemail",appType:"voicemail",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"goto",appType:"goTo",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:"hangup",appType:"hangup",context:"from-sip",type:"Internal",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Internal",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.internalRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoInternalRoutes=function(){e.go("app.voice.internalRoutes",{},{reload:"app.voice.internalRoutes"})},m.saveInternalRoute=function(){o.voiceExtension.update({id:m.internalRoute.id},m.internalRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.internalRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","internalRoute","contexts","userProfileSection"],angular.module("app.voice").controller("InternalRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.internalRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="InternalRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.internalRoutes.rows,{id:e.id}),g.internalRoutes.count-=1,g.internalRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.internalRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedInternalRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"internal",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.internalRoutes.edit",{id:e.id,internalRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditInternalRoute=function(e,n){a.show({controller:"CreateOrEditInternalRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/internalRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{internalRoute:n,internalRoutes:g.internalRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getInternalRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedInternalRoutes=function(){var e=angular.copy(g.selectedInternalRoutes);return g.selectedInternalRoutes=[],e},g.deleteSelectedInternalRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedInternalRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedInternalRoutes.forEach(function(e){f(e)}),g.selectedInternalRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","internalRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("InternalRoutesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MUSICONHOLD",g.musiconhold=angular.copy(l),g.musiconholds=r,g.newMusicOnHold=!1,g.musiconhold||(g.musiconhold={mode:"files"},g.title="VOICE.NEW_MUSICONHOLD",g.newMusicOnHold=!0),g.addNewMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.save(g.musiconhold).$promise.then(function(e){g.musiconholds.unshift(e.toJSON()),o.success({title:"MusicOnHold properly created",msg:g.musiconhold.name?g.musiconhold.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMusicOnHold=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.musiconhold.id},g.musiconhold).$promise.then(function(e){var n=_.find(g.musiconholds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MusicOnHold properly saved!",msg:g.musiconhold.name?g.musiconhold.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMusicOnHold=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The musiconhold will be deleted.").ariaLabel("Delete MusicOnHold").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.musiconhold.id}).$promise.then(function(){_.remove(g.musiconholds,{id:g.musiconhold.id}),o.success({title:"MusicOnHold properly deleted!",msg:(g.musiconhold.name||"musiconhold")+" has been deleted!"}),v(g.musiconhold)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","musiconholds","musiconhold","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMusicOnHoldDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.musiconholdMohSounds=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMusicOnHold.getSounds(m.query,u).$promise}function g(e){d.voiceMusicOnHold.removeSound({id:t.params.id,id2:e.id}).$promise.then(function(){_.remove(m.musiconholdMohSounds.rows,{id:e.id}),m.musiconholdMohSounds.count-=1,m.musiconholdMohSounds.rows.length||p(),l.success({title:"MohSound deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.musiconhold={},m.musiconholdMohSounds={count:0,rows:[]},m.selectedMusicOnHoldMohSounds=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,save_name,converted_format,audio",limit:10,page:1},m.init=function(e,n){m.musiconhold=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.VoiceMusicOnHoldId=m.musiconhold.id,m.query.id=m.musiconhold.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the mohSound?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("mohSound #")+e.id||"mohSound")+"</b> will be deleted.").ariaLabel("delete mohSound").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMusicOnHoldDownload=function(s,e,n){return d.sound.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="mohSound"+s.id,a=new Blob(n,{type:e.type});t=s.converted_format?s.save_name+"."+s.converted_format:s.save_name;var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getMusicOnHoldMohSounds=p,m.createOrEditMusicOnHoldMohSound=function(e,n){o.show({controller:"CreateOrEditMohSoundDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:m.musiconhold,mohSound:n,mohSounds:m.musiconholdMohSounds.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedMusicOnHoldMohSounds=function(){var e=angular.copy(m.selectedMusicOnHoldMohSounds);return m.selectedMusicOnHoldMohSounds=[],e},m.deleteMusicOnHoldMohSound=g,m.deleteSelectedMusicOnHoldMohSounds=function(e){var n=o.confirm().title("Are you sure want to delete the selected mohSounds?").htmlContent("<b>"+m.selectedMusicOnHoldMohSounds.length+" selected</b> will be deleted.").ariaLabel("delete mohSounds").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedMusicOnHoldMohSounds.forEach(function(e){g(e)}),m.selectedMusicOnHoldMohSounds=[]})},c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){m.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.sounds,{id:e.resourceId})}),t=null;if(m.musiconhold&&(t=_.find(m.sounds,{id:Number(m.musiconhold.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(m.sounds,{id:t.id});a.canSelect=!1,n.push(a)}m.sounds=n})}else{var t=[],a=null;m.musiconhold&&(a=_.find(m.sounds,{id:Number(m.musiconhold.id)}));for(var i=0;i<m.sounds.length;i++)a&&m.sounds[i].id===a.id&&(m.sounds[i].canSelect=!1,t.push(m.sounds[i]));m.sounds=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("MusicOnHoldMohSoundsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_MOHSOUND",g.mohSound=angular.copy(l),g.mohSounds=r,g.newMohSound=!1,g.mohSound||(g.mohSound={},g.title="VOICE.NEW_MOHSOUND",g.newMohSound=!0),n.params.id&&(g.mohSound.VoiceMusicOnHoldId=n.params.id),g.addNewMohSound=function(){g.errors=[],d.voiceMusicOnHold.addSound({id:n.params.id},g.mohSound).$promise.then(function(e){g.mohSounds.unshift(e.toJSON()),o.success({title:"MohSound properly created",msg:g.mohSound.name?g.mohSound.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMohSound=function(){g.errors=[],d.voiceMusicOnHold.update({id:g.mohSound.id},g.mohSound).$promise.then(function(e){var n=_.find(g.mohSounds,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"MohSound properly saved!",msg:g.mohSound.name?g.mohSound.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMohSound=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The mohSound will be deleted.").ariaLabel("Delete MohSound").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMusicOnHold.delete({id:g.mohSound.id}).$promise.then(function(){_.remove(g.mohSounds,{id:g.mohSound.id}),o.success({title:"MohSound properly deleted!",msg:(g.mohSound.name||"mohSound")+" has been deleted!"}),v(g.mohSound)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMusicOnHold.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMusicOnHold.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.sound.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.sounds=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.sounds,{id:e.resourceId})}),t=null;if(g.mohSound&&(t=_.find(g.sounds,{id:Number(g.mohSound.id)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.sounds,{id:t.id});a.canSelect=!1,n.push(a)}g.sounds=n})}else{var t=[],a=null;g.mohSound&&(a=_.find(g.sounds,{id:Number(g.mohSound.id)}));for(var i=0;i<g.sounds.length;i++)a&&g.sounds[i].id===a.id&&(g.sounds[i].canSelect=!1,t.push(g.sounds[i]));g.sounds=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","mohSounds","mohSound","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditMohSoundDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.musiconhold=c||e.params.musiconhold||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoMusicOnHolds=function(){e.go("app.voice.musiconholds",{},{reload:"app.voice.musiconholds"})},u.saveMusicOnHold=function(){r.voiceMusicOnHold.update({id:u.musiconhold.id},u.musiconhold).$promise.then(function(){l.success({title:"MusicOnHold updated!",msg:u.musiconhold.name?u.musiconhold.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","musiconhold","userProfileSection"],angular.module("app.voice").controller("MusicOnHoldController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.musiconholds=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="musiconholds",f.listOrder="",f.listOrderAsc=null,f.selectedMusicOnHolds=[],f.query={fields:"createdAt,updatedAt,id,name,mode,directory,application,format,sort",defaultEntry:"false",limit:10,page:1},f.arraymode=_.keyBy([{option:"Files",value:"'files'"},{option:"Custom",value:"'custom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysort=_.keyBy([{option:"Random",value:"'random'"},{option:"Alphabetical",value:"'alpha'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.musiconholds.edit",{id:e.id,musiconhold:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("musiconhold")+"?").htmlContent("<b>"+(e.name||"musiconhold")+"</b> will be deleted.").ariaLabel("delete musiconhold").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getMusicOnHolds=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMusicOnHold.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="MusicOnHolds",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditMusicOnHold=function(e,n){i.show({controller:"CreateOrEditMusicOnHoldDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/musiconholds/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{musiconhold:n,musiconholds:f.musiconholds.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteMusicOnHold=y,f.exportSelectedMusicOnHolds=function(){var e=angular.copy(f.selectedMusicOnHolds);return f.selectedMusicOnHolds=[],e},f.deleteSelectedMusicOnHolds=function(e){var n=i.confirm().title("Are you sure want to delete the selected musiconholds?").htmlContent("<b>"+f.selectedMusicOnHolds.length+" selected</b> will be deleted.").ariaLabel("delete MusicOnHolds").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedMusicOnHolds.forEach(function(e){y(e)}),f.selectedMusicOnHolds=[]})},f.deselectMusicOnHolds=function(){f.selectedMusicOnHolds=[]},f.selectAllMusicOnHolds=function(){f.selectedMusicOnHolds=f.musiconholds.rows};var b=!0,A=1;function E(e){f.musiconholds=e||{count:0,rows:[]}}function y(e){m.voiceMusicOnHold.delete({id:e.id}).$promise.then(function(){_.remove(f.musiconholds.rows,{id:e.id}),f.musiconholds.count-=1,f.musiconholds.rows.length||f.getMusicOnHolds(),p.success({title:_.startCase("MusicOnHold")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMusicOnHold"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMusicOnHold",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getMusicOnHolds())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","musiconholds","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("MusicOnHoldsController",e)}(),function(){"use strict";function e(t,e,a,i,n,s,o,r,l){var d=this;function c(t){return e(function(e,n){o.voiceExtension.addApplications({id:t},d.applications?d.applications.rows:[]).$promise.then(function(){e()}).catch(function(e){n(e)})})}function m(e){t.hide(e)}d.currentUser=r.getCurrentUser(),d.crudPermissions=l,d.outboundRoute=angular.copy(s),d.outboundRoutes=n,d.newOutboundRoute=!1,d.hasModulePermissions={},d.errors=[],d.initialize=function(){d.outboundRoute||(d.outboundRoute={appdata:"Outbound Call",type:"outbound",context:"from-sip",recordingFormat:"none"},d.newOutboundRoute=!0);e=[{key:"name",value:d.outboundRoute.context}],o.getResourcesByRole(d.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){d.contexts=e}).catch(function(){i.error({title:a.instant("VOICE.CONTEXTS"),msg:a.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},d.getRouting=function(){if(d.newOutboundRoute)return;var e={sort:"priority",VoiceExtensionId:d.outboundRoute.id,isApp:!0,nolimit:!0};o.voiceExtension.get(e).$promise.then(function(e){d.applications=e||{count:0,rows:[]}})},d.addNewOutboundRoute=function(){d.errors=[],o.voiceExtension.save(d.outboundRoute).$promise.then(function(e){c(e.id).then(function(){d.outboundRoutes.unshift(e.toJSON()),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_CREATED_SUCCESS_TITLE")}),m(e)})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.save"}];for(var n=0;n<e.data.errors.length;n+=1)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.saveOutboundRoute=function(){d.errors=[],o.voiceExtension.update({id:d.outboundRoute.id},d.outboundRoute).$promise.then(function(e){var n=_.find(d.outboundRoutes,{id:e.id});if(n&&_.merge(n,e.toJSON()),d.applications)return c(d.outboundRoute.id)}).then(function(){i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")}),m(s)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.update"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.deleteOutboundRoute=function(e){d.errors=[];var n=t.confirm().title(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:d.outboundRoute.exten})).ariaLabel("Delete outbound route").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){o.voiceExtension.delete({id:d.outboundRoute.id}).$promise.then(function(){_.remove(d.outboundRoutes,{id:d.outboundRoute.id}),i.success({title:a.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")}),m(d.outboundRoute)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){d.errors=e.data.errors||[{message:e.toString(),type:"api.voiceExtension.delete"}];for(var n=0;n<e.data.errors.length;n++)i.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceExtension.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})})},d.closeDialog=m}e.$inject=["$mdDialog","$q","$translate","toasty","outboundRoutes","outboundRoute","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditOutboundRouteDialogController",e)}(),function(){"use strict";function e(e,i,a,n,s,o,r,t,l,d,c){var m=this;function u(e,n){1===m.applications.rows.length&&1===n&&(n=0);var t=m.applications.rows[n];i.show({controller:"EditRoutingAppDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/dialog.html",parent:angular.element(a.body),targetEvent:e,locals:{application:t,route:m.outboundRoute,crudPermissions:m.crudPermissions}}).then(function(e){e?(m.applications.rows[n].appdata===e.appdata&&"custom"!==e.appType||p(),m.applications.rows[n]=e):t.id||m.applications.rows.splice(n,1)}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}function p(){m.pendingChanges=!0}m.currentUser=t.getCurrentUser(),m.outboundRoute=l||e.params.outboundRoute||{},m.contexts=d,m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=t.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={sort:"priority",VoiceExtensionId:m.outboundRoute.id,isApp:!0,nolimit:!0},m.apps=[{app:"Dial",appType:"outboundDial",context:"from-sip",type:"Outbound",options:"xX",interval:"*,*,*,*"},{app:null,appType:"custom",type:"Outbound",interval:"*,*,*,*"}],m.sortableAppsOptions={group:{name:"apps",pull:"clone",put:!1},animation:100,sort:!1},m.sortableRoutingOptions={group:{name:"apps",put:!0},animation:100,disabled:!m.crudPermissions.canEdit,onAdd:function(e){u(e,e.newIndex)},onUpdate:function(){p()}},m.selectedApplications=[],m.onInit=function(){if(t.isAdmin())return;e=[{key:"name",value:m.outboundRoute.context}],o.getResourcesByRole(m.currentUser,"voiceContext",{fields:"id,name",sort:"name",nolimit:!0},e).then(function(e){m.contexts=e}).catch(function(){r.error({title:s.instant("VOICE.CONTEXTS"),msg:s.instant("VOICE.NOTIFICATIONS.VOICE_CONTEXTS_GET_ERROR")})});var e},m.onActionsTabSelection=function(){m.applications||o.voiceExtension.get(m.query).$promise.then(function(e){m.applications=e||{count:0,rows:[]}})},m.gotoOutboundRoutes=function(){e.go("app.voice.outboundRoutes",{},{reload:"app.voice.outboundRoutes"})},m.saveOutboundRoute=function(){o.voiceExtension.update({id:m.outboundRoute.id},m.outboundRoute).$promise.then(function(){n(function(n,t){if(!m.applications)return n();o.voiceExtension.addApplications({id:m.outboundRoute.id},m.applications.rows).$promise.then(function(e){m.applications.rows=e.rows,n()}).catch(function(e){t(e)})}).then(function(){m.pendingChanges=!1,r.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_SAVED_SUCCESS_TITLE")})})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceExtension",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.editApplication=u,m.editInterval=function(e,n){var t=m.applications.rows[n];i.show({controller:"EditRoutingIntervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/routing/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:void 0,crudPermissions:m.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,p())})},m.deleteApplication=function(e,n,t){var a=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATION_DELETE_MESSAGE",{name:e.app})).ariaLabel("Delete application").targetEvent(t).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(a).then(function(){m.applications.rows.splice(n,1),p()})},m.deleteSelectedApplications=function(e){var n=i.confirm().title(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.ROUTING_APPLICATIONS_DELETE_MESSAGE",{total:m.selectedApplications.length})).ariaLabel("Delete applications").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedApplications.forEach(function(e){_.remove(m.applications.rows,{id:e.id})}),m.selectedApplications=[],p()})}}e.$inject=["$state","$mdDialog","$document","$q","$translate","api","toasty","Auth","outboundRoute","contexts","userProfileSection"],angular.module("app.voice").controller("OutboundRouteController",e)}(),function(){"use strict";function e(e,n,a,t,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){g.outboundRoutes=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.isAdmin()?g.promise=d.voiceExtension.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="OutboundRoutes",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){d.voiceExtension.delete({id:e.id}).$promise.then(function(){_.remove(g.outboundRoutes.rows,{id:e.id}),g.outboundRoutes.count-=1,g.outboundRoutes.rows.length||h(),c.success({title:s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceExtension"}];for(var n=0;n<e.data.errors.length;n++)c.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceExtension",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.outboundRoutes=o,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=m.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedOutboundRoutes=[],g.query={fields:"id,appdata,type,exten,context,description,alias,createdAt,updatedAt",type:"outbound",sort:"-updatedAt",VoiceExtensionId:"null",limit:10,page:1},g.editRoute=function(e){n.go("app.voice.outboundRoutes.edit",{id:e.id,outboundRoute:e,crudPermissions:g.crudPermissions})},g.createOrEditOutboundRoute=function(e,n){a.show({controller:"CreateOrEditOutboundRouteDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/outboundRoutes/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{outboundRoute:n,outboundRoutes:g.outboundRoutes.rows,crudPermissions:g.crudPermissions}})},g.success=v,g.getOutboundRoutes=h,g.deleteConfirm=function(e,n){var t=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSION_DELETE_MESSAGE",{name:e.exten})).ariaLabel("Delete extension").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.exportSelectedOutboundRoutes=function(){var e=angular.copy(g.selectedOutboundRoutes);return g.selectedOutboundRoutes=[],e},g.deleteSelectedOutboundRoutes=function(e){var n=a.confirm().title(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_TITLE")).content(s.instant("VOICE.NOTIFICATIONS.EXTENSIONS_DELETE_MESSAGE",{total:g.selectedOutboundRoutes.length})).ariaLabel("Delete extensions").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedOutboundRoutes.forEach(function(e){f(e)}),g.selectedOutboundRoutes=[]})};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?i(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","$translate","outboundRoutes","userProfile","userProfileSection","api","toasty","Auth","license","setting"],angular.module("app.voice").controller("OutboundRoutesController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){return[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Agent",key:"lastAssignedTo",type:"select",label:"DASHBOARDS.SELECT_AGENT",options:g.agents.rows,customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}],ngValue:"name"},{name:"Campaign",key:"queue",type:"multiselect",label:"DASHBOARDS.SELECT_CAMPAIGN",options:g.queues.rows,ngValue:"name"}]}function h(){return g.refresh=!1,0===g.queues.count?f(null):(g.query.queue=1===g.queues.count?g.queues.rows[0].name:g.query.queue,void 0===g.query.queue&&(g.query.queue=_.map(g.queues.rows,"name")),_.isEmpty(g.query.queue)?f(null):(g.query.offset=(g.query.page-1)*g.query.limit,i.localStorage.setItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id,JSON.stringify({query:_.omit(g.query,"queue")})),void(g.promise=o.voiceQueueReport.getVoiceQueuesReport(g.query,f).$promise)))}function f(e){g.abandonedCalls=e||{count:0,rows:[]},!1,g.refresh=!0}g.currentUser=d.getCurrentUser(),g.agents=u||[],g.dispositions=p.rows,g.abandonedCalls={count:0,rows:[]},g.showTooltip=!1,g.refresh=!0,g.userProfile=r,g.userProfileSection=l&&1==l.count?l.rows[0]:null,g.crudPermissions=d.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.query={fields:"id,type,calleridnum,calleridname,queue,queuecallerabandonAt,queuecallerexitAt,queuecallerexitreason,assigned,lastAssignedTo,updatedAt,disposition,secondDisposition,thirdDisposition,note",type:"inbound",queuecallerexitreason:"TIMEOUT,ABANDONED",sort:"-updatedAt",limit:10,page:1},g.getAbandonedCalls=h,g.refreshAbandonedCalls=function(){g.showTooltip=!1,h()},g.assignTo=function(e,n){e&&o.voiceQueueReport.update({id:e.id,lastAssignedTo:n?n.name:null,assigned:!!n}).$promise.catch(function(e){console.log(e)})},g.dispose=function(t){n.show({controller:"DisposeAbandonedCallDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",parent:angular.element(a.body),targetEvent:t,locals:{dispositions:g.dispositions,call:t}}).then(function(e){if(e){var n={id:t.id,disposition:e.firstLevel||null,secondDisposition:e.secondLevel||null,thirdDisposition:e.thirdLevel||null,note:e.note||null};o.voiceQueueReport.update(n).$promise.catch(function(e){console.log(e)})}})},g.onSaveVoiceQueueReport=function(e){e&&g.queuesMap&&"inbound"===queue.type&&g.queuesMap[e.queue]&&(g.showTooltip=!0)},g.onUpdateVoiceQueueReport=function(e){if(e){var n=_.findIndex(g.abandonedCalls.rows,["id",e.id]);0<=n&&_.merge(g.abandonedCalls.rows[n],e)}},c.onWithoutApply("voiceQueueReport:save",g.onSaveVoiceQueueReport),c.on("voiceQueueReport:update",g.onUpdateVoiceQueueReport),function(){var e=i.localStorage.getItem("motion2.realtime.abandoned.voice.abandonedCalls:"+g.currentUser.id);if(e)(e=JSON.parse(e))&&e.query&&(g.query=_.merge(e.query,_.omit(g.query,["sort","limit","page"])),g.query=_.omit(g.query,"filter"));else{var n={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()};g.query.createdAt=n}d.hasRole("admin")?o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name",channel:"voice",type:"inbound",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()}):o.userProfile.getResources({id:g.currentUser.userProfileId,section:"VoiceQueues",channel:"voice",type:"inbound",sort:"-updatedAt",nolimit:!0}).$promise.then(function(e){g.queues=e||{count:0,rows:[]},g.queuesMap=_.mapValues(_.keyBy(g.queues.rows,"name"),"name")}).catch(function(e){console.error(e)}).finally(function(){g.quickFilters=v(),h()})}();var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?t(function(){b=!1}):(n||(A=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=A),h())}),e.$on("$destroy",function(){c.removeAllListeners("voiceQueueReport:save"),c.removeAllListeners("voiceQueueReport:update")})}e.$inject=["$scope","$timeout","$mdDialog","$document","$window","$translate","api","userProfile","userProfileSection","Auth","socket","toasty","agents","dispositions"],angular.module("app.voice").controller("AbandonedCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;o.calls=i||{rows:[],count:0},o.query={limit:10,page:1},o.channelStatus=s.OUTGOING_CALL_STATUS_STYLES,o.onSave=function(e){var n=_.find(o.calls.rows,{channel:e.channel});e.channelstatedesc=e.dialstatus?"up":"ring",n?_.merge(n,e):e.channel&&o.calls.rows.push(e)},o.onRemove=function(e){var n=_.findIndex(o.calls.rows,{channel:e.channel});0<=n&&(o.calls.rows[n].status="hangup");t(function(){o.calls.rows.splice(n,1)},5e3)},a.on("voice_outbound_channel:save",o.onSave),a.on("voice_outbound_channel:remove",o.onRemove),e.$on("$destroy",function(){a.removeAllListeners("voice_outbound_channel:save"),a.removeAllListeners("voice_outbound_channel:remove")})}e.$inject=["$scope","$timeout","api","socket","rpcCalls","realtimeManager"],angular.module("app.voice").controller("OutboundCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,a,o,t,i,s,r,l,d,c,m,u){var p=this;p.currentUser=u.getCurrentUser(),p.queues=t?_.keyBy(t.rows?t.rows:[],"name"):{},p.rpcVoiceQueuesChannelsTmp=i?_.keyBy(i.rows?_.filter(i.rows,{type:"inbound"}):[],"uniqueid"):{},p.rpcVoiceQueuesChannels={},p.userProfile=c,p.userProfileSection=m&&1==m.count?m.rows[0]:null,p.crudPermissions=u.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.queryChannels={limit:10,page:1},p.getAvailableAgents=function(){p.availableAgents=null,s.rpc.getAgents().$promise.then(function(e){for(var n=[],t=e?e.rows:[],a=_.filter(t,{online:!0,voicePause:!1,voiceStatus:"idle"}),i=0;i<a.length;i++){var s=_.find(o.rows,["id",a[i].id]);s&&n.push(s)}p.availableAgents=n}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.getSize=function(e){return _.size(e)},p.$onInit=function(){_.forIn(p.rpcVoiceQueuesChannelsTmp,function(e,n){_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[n]=e)})},p.onSave=function(e){"inbound"===e.type&&_.find(p.queues,{name:e.name})&&(p.rpcVoiceQueuesChannels[e.uniqueid]=e)},p.onRemove=function(e){p.rpcVoiceQueuesChannels[e.uniqueid]&&delete p.rpcVoiceQueuesChannels[e.uniqueid]},p.hangup=function(n){return s.rpc.getVoiceQueuesChannelHangup({uniqueid:n}).$promise.then(function(e){d.success({title:"Channel "+n+" properly hangup!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToAgent=function(n,e,t){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e,context:t}).$promise.then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},p.redirectToNumber=function(e,n){var t=a.prompt().title("Which number do you want transfer the call to?").placeholder("Number").targetEvent(e).ok("Ok").cancel("Cancel");return a.show(t).then(function(e){return s.rpc.getVoiceQueuesChannelRedirect({uniqueid:n,exten:e}).$promise}).then(function(e){d.success({title:"Channel "+n+" properly redirect!",msg:e.message||""})}).catch(function(e){e&&d.error({title:e.status+" - "+e.statusText,msg:JSON.stringify(e.data)||e.message.join(" ")})})},r.on("voice_queue_channel:save",p.onSave),r.on("voice_queue_channel:remove",p.onRemove),e.$on("$destroy",function(){r.removeAllListeners("voice_queue_channel:save"),r.removeAllListeners("voice_queue_channel:remove")})}e.$inject=["$scope","$timeout","$mdDialog","agents","queues","rpcVoiceQueuesChannels","api","socket","realtimeManager","toasty","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueCallsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d){var c=this,m=["total","answered","unmanaged","abandoned","sumHoldTime","sumDuration","sumBillable"];function u(){_.forIn(c.queues,function(e,n){c.rpcQueues[n]&&_.merge(e,_.pick(c.rpcQueues[n],m))})}c.count=a.count,c.queues=a?_.keyBy(a.rows?a.rows:[],"id"):{},c.rpcQueues=i?_.keyBy(i.rows?i.rows:[],"id"):{},c.userProfile=r,c.userProfileSection=l&&1==l.count?l.rows[0]:null,c.crudPermissions=d.parseCrudPermissions(c.userProfileSection?c.userProfileSection.crudPermissions:null),d.hasRole("admin")?c.query={type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1}:c.query={id:d.getCurrentUser().id,channel:"voice",type:"inbound",fields:"id,name",sort:"-updatedAt",limit:10,page:1},c.success=v,c.getQueues=function(){c.query.offset=(c.query.page-1)*c.query.limit,d.hasRole("admin")?c.promise=s.voiceQueue.get(c.query,v).$promise:(c.query.id=c.userProfile.id,c.query.section="VoiceQueues",c.promise=s.userProfile.getResources(c.query,v).$promise)},c.onSave=function(e){c.queues[e.id]&&_.merge(c.queues[e.id],_.pick(e,m))},c.$onInit=u,o.onWithoutApply("voice_queue:save",c.onSave),c.interval=n(function(){},999);var p=!0,g=1;function v(e){c.count=e.count,c.queues=e?_.keyBy(e.rows?e.rows:[],"id"):{},u()}e.$watch("vm.query.filter",function(e,n){p?t(function(){p=!1}):(n||(g=c.query.page),e!==n&&(c.query.page=1),e||(c.query.page=g),c.getQueues())}),e.$on("$destroy",function(){o.removeAllListeners("voice_queue:save"),c.interval&&n.cancel(c.interval)})}e.$inject=["$scope","$timeout","$interval","queues","rpcQueues","api","socket","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("QueueParamsVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n){var a=this;switch(a.selectedTab=0,t.current.name){case"app.voice.realtime.agents":a.selectedTab=0;break;case"app.voice.realtime.telephones":a.selectedTab=1;break;case"app.voice.realtime.trunks":a.selectedTab=2;break;case"app.voice.realtime.queues":a.selectedTab=3;break;case"app.voice.realtime.queue_calls":a.selectedTab=4;break;case"app.voice.realtime.abandonedcalls":a.selectedTab=5;break;case"app.voice.realtime.queue_params":a.selectedTab=6;break;case"app.voice.realtime.outbound_calls":a.selectedTab=7;break;default:a.selectedTab=0,t.go("app.voice.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.voice.realtime.agents");break;case 1:t.go("app.voice.realtime.telephones");break;case 2:t.go("app.voice.realtime.trunks");break;case 3:t.go("app.voice.realtime.queues");break;case 4:t.go("app.voice.realtime.queue_calls");break;case 5:t.go("app.voice.realtime.abandonedcalls");break;case 6:t.go("app.voice.realtime.queue_params");break;case 7:t.go("app.voice.realtime.outbound_calls");break;default:t.go("app.voice.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.voice").controller("VoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c){var m=this,u=["fullname","internal","state","status"];function p(){_.forIn(m.telephones,function(e,n){m.rpcTelephones[n]&&_.merge(e,_.pick(m.rpcTelephones[n],u))})}m.count=a.count,m.attributes=["fullname","internal","state","status","address"],m.telephones=a?_.keyBy(a.rows?a.rows:[],"id"):{},m.rpcTelephones=i?_.keyBy(i.rows?i.rows:[],"id"):{},m.userProfile=l,m.userProfileSection=d&&1==d.count?d.rows[0]:null,m.crudPermissions=c.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.query={fields:"id,fullname,internal",role:"telephone",sort:"-updatedAt",limit:10,page:1},m.statusClass=r.STATUS_STYLES,m.stateClass=r.STATES_STYLES,m.success=h,m.$onInit=p,m.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},m.getTelephones=function(){m.query.offset=(m.query.page-1)*m.query.limit,c.hasRole("admin")?m.promise=s.user.get(m.query,h).$promise:(m.query.id=m.userProfile.id,m.query.section="Telephones",m.promise=s.userProfile.getResources(m.query,h).$promise)},m.onSave=function(e){m.telephones[e.id]&&_.merge(m.telephones[e.id],_.pick(e,u))},o.on("telephone:save",m.onSave);var g=!0,v=1;function h(e){m.telephones=e?_.keyBy(e.rows?e.rows:[],"id"):{},p()}e.$watch("vm.query.filter",function(e,n){g?t(function(){g=!1}):(n||(v=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=v),m.getTelephones())}),e.$on("$destroy",function(){o.removeAllListeners("telephone:save")})}e.$inject=["$scope","$timeout","$mdDialog","telephones","rpcTelephones","api","socket","realtimeManager","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TelephonesVoiceRealtimeController",e)}(),function(){"use strict";function e(e,t,n,a,i,s,o,r,l,d,c,m){var u=this,p=["status","stateRegistry","registry","host","port","internal","state","status"];function g(){for(var e,n=0;n<u.trunks.length;n+=1)0<=(e=_.findIndex(u.rpcTrunks,["id",u.trunks[n].id]))&&_.merge(u.trunks[n],_.pick(u.rpcTrunks[e],p))}function v(e,n,t){0<=n&&_.merge(e[n],_.pick(t,p))}u.currentUser=m.getCurrentUser(),u.count=a.count,u.trunks=a?a.rows:[],u.rpcTrunks=i&&i.rows?i.rows:[],u.query={fields:"id,name",active:!0,sort:"-updatedAt",limit:10,page:1},u.statusClass=r.STATUS_STYLES,u.stateClass=r.STATES_STYLES,u.userProfile=d,u.userProfileSection=c&&1==c.count?c.rows[0]:null,u.crudPermissions=m.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.success=b,u.$onInit=g,u.showInfo=function(e){n.show(n.alert().clickOutsideToClose(!0).title("Legend").htmlContent("<div>TODO legend status + state</div>").ok("Ok").targetEvent(e))},u.getTrunks=function(){u.query.offset=(u.query.page-1)*u.query.limit,m.hasRole("admin")?u.promise=s.trunk.get(u.query,b).$promise:(u.query.id=u.userProfile.id,u.query.section="Trunks",u.promise=s.userProfile.getResources(u.query,b).$promise)},u.goToTrunk=function(e,n){l.go("app.tools.trunks.edit",{id:n.id})},u.onSave=function(e){var n=_.findIndex(u.trunks,["id",e.id]),t=_.findIndex(u.rpcTrunks,["id",e.id]);v(u.trunks,n,e),v(u.rpcTrunks,t,e)},o.on("trunk:save",u.onSave);var h=!0,f=1;function b(e){u.count=e.count,u.trunks=e&&e.rows?e.rows:[],g()}e.$watch("vm.query.filter",function(e,n){h?t(function(){h=!1}):(n||(f=u.query.page),e!==n&&(u.query.page=1),e||(u.query.page=f),u.getTrunks())}),e.$on("$destroy",function(){o.removeAllListeners("trunk:save")})}e.$inject=["$scope","$timeout","$mdDialog","trunks","rpcTrunks","api","socket","realtimeManager","$state","userProfile","userProfileSection","Auth"],angular.module("app.voice").controller("TrunksVoiceRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEMAIL",g.voicemail=angular.copy(l),g.voicemails=r,g.newVoicemail=!1,g.voicemail||(g.voicemail={attach:"no"},g.title="VOICE.NEW_VOICEMAIL",g.newVoicemail=!0),g.addNewVoicemail=function(){g.errors=[],d.voiceMail.save(g.voicemail).$promise.then(function(e){g.voicemails.unshift(e.toJSON()),o.success({title:"Voicemail properly created",msg:g.voicemail.name?g.voicemail.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoicemail=function(){g.errors=[],d.voiceMail.update({id:g.voicemail.id},g.voicemail).$promise.then(function(e){var n=_.find(g.voicemails,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Voicemail properly saved!",msg:g.voicemail.name?g.voicemail.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoicemail=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicemail will be deleted.").ariaLabel("Delete Voicemail").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceMail.delete({id:g.voicemail.id}).$promise.then(function(){_.remove(g.voicemails,{id:g.voicemail.id}),o.success({title:"Voicemail properly deleted!",msg:(g.voicemail.name||"voicemail")+" has been deleted!"}),v(g.voicemail)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceMail.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicemails","voicemail","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoicemailDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.voicemailMessages=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.voiceMail.getMessages(m.query,u).$promise}function g(e){d.voiceMailMessage.delete({id:e.id}).$promise.then(function(){_.remove(m.voicemailMessages.rows,{id:e.id}),m.voicemailMessages.count-=1,m.voicemailMessages.rows.length||p(),l.success({title:"Message deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.voicemail={},m.voicemailMessages={count:0,rows:[]},m.selectedVoicemailMessages=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,callerid,duration,audio,stamp,msg_id",sort:"-stamp",limit:10,page:1},m.init=function(e,n){m.voicemail=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.id=m.voicemail.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the message?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("message #")+e.id||"message")+"</b> will be deleted.").ariaLabel("delete message").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.voiceMailMessageDownload=function(s,e,n){return d.voiceMailMessage.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="message"+s.id,a=new Blob(n,{type:e.type});t=s.msg_id+".wav";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceMail.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=u,m.getVoicemailMessages=p,m.createOrEditVoicemailMessage=function(e,n){o.show({controller:"CreateOrEditMessageDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/edit/messages/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:m.voicemail,message:n,messages:m.voicemailMessages.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedVoicemailMessages=function(){var e=angular.copy(m.selectedVoicemailMessages);return m.selectedVoicemailMessages=[],e},m.deleteVoicemailMessage=g,m.deleteSelectedVoicemailMessages=function(e){var n=o.confirm().title("Are you sure want to delete the selected messages?").htmlContent("<b>"+m.selectedVoicemailMessages.length+" selected</b> will be deleted.").ariaLabel("delete messages").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedVoicemailMessages.forEach(function(e){g(e)}),m.selectedVoicemailMessages=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.voice").controller("VoicemailMessagesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.voicemail=c||e.params.voicemail||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.alert=l.info,u.gotoVoicemails=function(){e.go("app.voice.voicemails",{},{reload:"app.voice.voicemails"})},u.saveVoicemail=function(){r.voiceMail.update({id:u.voicemail.id},u.voicemail).$promise.then(function(){l.success({title:"Voicemail updated!",msg:u.voicemail.name?u.voicemail.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceMail",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){u.contexts=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.contexts,{id:e.resourceId})}),t=null;if(u.voicemail&&(t=_.find(u.contexts,{name:u.voicemail.context})),t&&!_.some(n,["id",t.id])){var a=_.find(u.contexts,{id:t.id});a.canSelect=!1,n.push(a)}u.contexts=n}):r.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){u.contexts=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETcontexts",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voicemail","userProfileSection"],angular.module("app.voice").controller("VoicemailController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicemails=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicemails",f.listOrder="",f.listOrderAsc=null,f.selectedVoicemails=[],f.query={fields:"createdAt,updatedAt,id,customer_id,fullname,email,password,mailbox,context,tz,attach,envelope,delete,emailbody,emailsubject,maxsecs,maxmsg",sort:"-updatedAt",limit:10,page:1},f.arrayattach=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayenvelope=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraydelete=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voicemails.edit",{id:e.id,voicemail:e,crudPermissions:f.crudPermissions})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicemail")+"?").htmlContent("<b>"+(e.name||"voicemail")+"</b> will be deleted.").ariaLabel("delete voicemail").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicemails=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceMail.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="Voicemails",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoicemail=function(e,n){i.show({controller:"CreateOrEditVoicemailDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicemails/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicemail:n,voicemails:f.voicemails.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteVoicemail=y,f.exportSelectedVoicemails=function(){var e=angular.copy(f.selectedVoicemails);return f.selectedVoicemails=[],e},f.deleteSelectedVoicemails=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicemails?").htmlContent("<b>"+f.selectedVoicemails.length+" selected</b> will be deleted.").ariaLabel("delete Voicemails").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicemails.forEach(function(e){y(e)}),f.selectedVoicemails=[]})},f.deselectVoicemails=function(){f.selectedVoicemails=[]},f.selectAllVoicemails=function(){f.selectedVoicemails=f.voicemails.rows};var b=!0,A=1;function E(e){f.voicemails=e||{count:0,rows:[]}}function y(e){m.voiceMail.delete({id:e.id}).$promise.then(function(){_.remove(f.voicemails.rows,{id:e.id}),f.voicemails.count-=1,f.voicemails.rows.length||f.getVoicemails(),p.success({title:_.startCase("Voicemail")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceMail"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceMail",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicemails())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicemails","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicemailsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICEPREFIX",g.voicePrefix=angular.copy(l),g.voicePrefixes=r,g.newvoicePrefix=!1,g.voicePrefix||(g.voicePrefix={},g.title="VOICE.NEW_VOICEPREFIX",g.newvoicePrefix=!0),g.addNewvoicePrefix=function(){g.errors=[],d.voicePrefix.save(g.voicePrefix).$promise.then(function(e){g.voicePrefixes.unshift(e.toJSON()),o.success({title:"voicePrefix properly created",msg:g.voicePrefix.name?g.voicePrefix.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.savevoicePrefix=function(){g.errors=[],d.voicePrefix.update({id:g.voicePrefix.id},g.voicePrefix).$promise.then(function(e){var n=_.find(g.voicePrefixes,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"voicePrefix properly saved!",msg:g.voicePrefix.name?g.voicePrefix.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deletevoicePrefix=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voicePrefix will be deleted.").ariaLabel("Delete voicePrefix").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voicePrefix.delete({id:g.voicePrefix.id}).$promise.then(function(){_.remove(g.voicePrefixes,{id:g.voicePrefix.id}),o.success({title:"voicePrefix properly deleted!",msg:(g.voicePrefix.name||"voicePrefix")+" has been deleted!"}),v(g.voicePrefix)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voicePrefix.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voicePrefix.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v,c.hasRole("admin")?d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){g.outboundRoutes=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.outboundRoutes,{id:e.resourceId})}),t=null;if(g.voicePrefix&&(t=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}g.outboundRoutes=n})}else{var t=[],a=null;g.voicePrefix&&(a=_.find(g.outboundRoutes,{id:Number(g.voicePrefix.VoiceExtensionId)}));for(var i=0;i<g.outboundRoutes.length;i++)a&&g.outboundRoutes[i].id===a.id&&(g.outboundRoutes[i].canSelect=!1,t.push(g.outboundRoutes[i]));g.outboundRoutes=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voicePrefixes","voicePrefix","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditvoicePrefixDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getAgents({id:c.voicePrefix.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UservoicePrefix?"penalty "+e.UservoicePrefix.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.voicePrefix=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addAgents({id:c.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("VOICE.ALL_AGENTS"),labelSelected:r.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","voicePrefixes","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.voicePrefix.getTeams({id:l.voicePrefix.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voicePrefix=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.removeTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.voicePrefix.addTeams({id:l.voicePrefix.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voicePrefix","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("voicePrefixteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voicePrefixes=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voicePrefixes",f.listOrder="",f.listOrderAsc=null,f.selectedVoicePrefixes=[],f.query={fields:"createdAt,updatedAt,id,name,VoiceExtensionId,callerIdAll,description",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:null,crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"voicePrefixagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.teamadddialog=function(e,n){i.show({controller:"voicePrefixteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voicePrefix:e,voicePrefixes:f.voicePrefixes?f.voicePrefixes.rows:[],crudPermissions:f.crudPermissions}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voicePrefix")+"?").htmlContent("<b>"+(e.name||"voicePrefix")+"</b> will be deleted.").ariaLabel("delete voicePrefix").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getVoicePrefixes=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voicePrefix.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoicePrefixes",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditvoicePrefix=function(e,n){i.show({controller:"CreateOrEditvoicePrefixDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voicePrefixes/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voicePrefix:n,voicePrefixes:f.voicePrefixes.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deletevoicePrefix=y,f.exportSelectedVoicePrefixes=function(){var e=angular.copy(f.selectedVoicePrefixes);return f.selectedVoicePrefixes=[],e},f.deleteSelectedVoicePrefixes=function(e){var n=i.confirm().title("Are you sure want to delete the selected voicePrefixes?").htmlContent("<b>"+f.selectedVoicePrefixes.length+" selected</b> will be deleted.").ariaLabel("delete voicePrefixs").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoicePrefixes.forEach(function(e){y(e)}),f.selectedVoicePrefixes=[]})},f.deselectVoicePrefixes=function(){f.selectedVoicePrefixes=[]},f.selectAllVoicePrefixes=function(){f.selectedVoicePrefixes=f.voicePrefixes.rows},g.hasRole("admin")?m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OUTBOUNDROUTES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.voiceExtension.get({fields:"id,exten",type:"outbound",VoiceExtensionId:"null",nolimit:"true"}).$promise.then(function(e){f.outboundRoutes=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:403}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.outboundRoutes,{id:e.resourceId})}),t=null;if(f.voicePrefix&&(t=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.outboundRoutes,{id:t.id});a.canSelect=!1,n.push(a)}f.outboundRoutes=n})}else{var t=[],a=null;f.voicePrefix&&(a=_.find(f.outboundRoutes,{id:Number(f.voicePrefix.VoiceExtensionId)}));for(var i=0;i<f.outboundRoutes.length;i++)a&&f.outboundRoutes[i].id===a.id&&(f.outboundRoutes[i].canSelect=!1,t.push(f.outboundRoutes[i]));f.outboundRoutes=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GEToutboundRoutes",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.voicePrefixes=e||{count:0,rows:[]}}function y(e){m.voicePrefix.delete({id:e.id}).$promise.then(function(){_.remove(f.voicePrefixes.rows,{id:e.id}),f.voicePrefixes.count-=1,f.voicePrefixes.rows.length||f.getVoicePrefixes(),p.success({title:_.startCase("voicePrefix")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoicePrefix"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoicePrefix",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoicePrefixes())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voicePrefixes","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoicePrefixesController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="VOICE.EDIT_VOICEQUEUE",r.voiceQueue=angular.copy(n),r.voiceQueues=e,r.newVoiceQueue=!1,r.voiceQueue||(r.voiceQueue={type:"inbound",strategy:"ringall",timeout:15,retry:2,random_periodic_announce:"no",announce_holdtime:"no",announce_position:"no",reportholdtime:"no",autopause:"no",ringinuse:"no",timeoutrestart:"no",setinterfacevar:"no",setqueuevar:"no",setqueueentryvar:"no"},r.title="VOICE.NEW_VOICEQUEUE",r.newVoiceQueue=!0),r.addNewVoiceQueue=function(){r.errors=[],i.voiceQueue.save(r.voiceQueue).$promise.then(function(e){r.voiceQueues.unshift(e.toJSON()),a.success({title:"VoiceQueue properly created",msg:r.voiceQueue.name?r.voiceQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveVoiceQueue=function(){r.errors=[],i.voiceQueue.update({id:r.voiceQueue.id},r.voiceQueue).$promise.then(function(e){var n=_.find(r.voiceQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"VoiceQueue properly saved!",msg:r.voiceQueue.name?r.voiceQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteVoiceQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The voiceQueue will be deleted.").ariaLabel("Delete VoiceQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.voiceQueue.delete({id:r.voiceQueue.id}).$promise.then(function(){_.remove(r.voiceQueues,{id:r.voiceQueue.id}),a.success({title:"VoiceQueue properly deleted!",msg:(r.voiceQueue.name||"voiceQueue")+" has been deleted!"}),l(r.voiceQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.voiceQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","voiceQueues","voiceQueue","api","Auth","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceQueueDialogController",e)}(),function(){"use strict";function e(e,l,a,d,n,t,i,s,o,r){var c=this;function m(){return l(function(t,n){return l(function(n,t){return d.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],o.hasRole("admin")?e:c.section?c.section.autoAssociation?e:l(function(n,t){return d.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:o.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),l(function(n,t){return d.voiceQueue.getAgents({id:c.voiceQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserVoiceQueue?"penalty "+e.UserVoiceQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=o.getCurrentUser(),c.voiceQueue=n,c.crudPermissions=r,c.penalty=0,c.realtime=i,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return o.hasRole("admin")?m().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):l(function(t,n){d.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceWith(c.selectedItems,c.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,l(function(e,n){_.isEmpty(t)?e():d.voiceQueue.removeAgents({id:c.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return r=n,l(function(e,n){if(_.isEmpty(r))e();else{for(var t=[],a=_.groupBy(r,"penalty"),i=0;i<Object.keys(a).length;i++){var s=Object.keys(a)[i],o=_.filter(r,["penalty",s]);t.push(d.voiceQueue.addAgents({id:c.voiceQueue.id,ids:_.map(o,"id"),penalty:_.trim(s,"penalty "),realtime:c.realtime||!1}).$promise)}l.all(t).then(function(){e()}).catch(function(e){n(e)})}});var r}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),a.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"penalty",labelAll:s.instant("VOICE.ALL_AGENTS"),labelSelected:s.instant("VOICE.SELECTED_AGENTS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+c.penalty});var t=_.xorWith(c.startingSelectedItems,c.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","voiceQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueagentaddController",e)}(),function(){"use strict";function e(e,i,a,s,n,t,o,r){var l=this;function d(){return i(function(t,n){return i(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:i(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),i(function(n,t){return s.voiceQueue.getTeams({id:l.voiceQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.voiceQueue=n,l.crudPermissions=r,l.penalty=0,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"penalty",labelAll:t.instant("VOICE.ALL_TEAMS"),labelSelected:t.instant("VOICE.SELECTED_TEAMS"),transferCallback:function(e,n){n?e.forEach(function(e){e.penalty=void 0}):e.forEach(function(e){e.penalty="penalty "+l.penalty});var t=_.xorWith(l.startingSelectedItems,l.selectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):i(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceWith(l.selectedItems,l.startingSelectedItems,function(e,n){return e.id===n.id&&e.penalty===n.penalty});return(t=e,i(function(e,n){_.isEmpty(t)?e():s.voiceQueue.removeTeams({id:l.voiceQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return a=n,i(function(e,n){if(!_.isEmpty(a)){var t=_.map(a,function(e){return{id:e.id,penalty:_.trim(e.penalty,"penalty ")}});return s.voiceQueue.addTeams({id:l.voiceQueue.id,teams:t}).$promise.then(function(){e()}).catch(function(e){n(e)})}e()});var a}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),a.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","voiceQueue","$translate","Auth","crudPermissions"],angular.module("app.voice").controller("VoiceQueueteamaddController",e)}(),function(){"use strict";function e(t,e,a,i,s,n,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=n,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=e.protocol()+"://"+e.host(),u.voiceQueue=c||t.params.voiceQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=t.params.tab||0,u.teamadddialog=function(e,n){a.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){a.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(i.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:u.voiceQueues?u.voiceQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.gotogoto=function(e,n){{if(!d.hasRole("admin"))return r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):l.info({title:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:s.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},u.alert=l.info,u.gotoVoiceQueues=function(){t.go("app.voice.voiceQueues",{},{reload:"app.voice.voiceQueues"})},u.saveVoiceQueue=function(){r.voiceQueue.update({id:u.voiceQueue.id},u.voiceQueue).$promise.then(function(){l.success({title:"VoiceQueue updated!",msg:u.voiceQueue.name?u.voiceQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MUSICONHOLDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true"}).$promise.then(function(e){u.musiconholds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:407}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.musiconholds,{id:e.resourceId})}),t=null;if(u.voiceQueue&&(t=_.find(u.musiconholds,{name:u.voiceQueue.musiconhold})),t&&!_.some(n,["id",t.id])){var a=_.find(u.musiconholds,{id:t.id});a.canSelect=!1,n.push(a)}u.musiconholds=n}):r.voiceMusicOnHold.get({fields:"id,name",nolimit:"true",defaultEntry:1}).$promise.then(function(e){u.musiconholds=e.rows||[]})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmusiconholds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SOUNDS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.sound.get({fields:"id,name,save_name",sort:"name",nolimit:"true"}).$promise.then(function(e){u.sounds=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1007}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.sounds,{id:e.resourceId})});u.sounds.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.sounds=n})}else u.sounds=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsounds",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){u.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:u.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(u.pauses,{id:e.resourceId})});u.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),u.pauses=n})}else u.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceQueue","userProfileSection"],angular.module("app.voice").controller("VoiceQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.voiceQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="voiceQueues",f.listOrder="",f.listOrderAsc=null,f.selectedVoiceQueues=[],f.query={fields:"createdAt,updatedAt,id,name,type,strategy,timeout,maxlen,retry,wrapuptime,weight,joinempty,leavewhenempty,musiconhold,announce,description,periodic_announce,queue_reporthold,queue_youarenext,queue_thereare,queue_callswaiting,queue_holdtime,queue_minutes,queue_minute,queue_seconds,queue_thankyou,announce_frequency,min_announce_frequency,periodic_announce_frequency,random_periodic_announce,announce_holdtime,announce_position,announce_position_limit,reportholdtime,acw,acwTimeout,autopause,ringinuse,memberdelay,timeoutrestart,monitor_format,context,setinterfacevar,setqueuevar,setqueueentryvar,servicelevel,mandatoryDisposition,mandatoryDispositionPauseId",type:"inbound",sort:"-updatedAt",channel:"voice",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Ringall",value:"'ringall'"},{option:"Round Robin Memory",value:"'rrmemory'"},{option:"Least Recent",value:"'leastrecent'"},{option:"Fewest Calls",value:"'fewestcalls'"},{option:"Random",value:"'random'"},{option:"Linear",value:"'linear'"},{option:"Weight Random",value:"'wrandom'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayjoinempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayleavewhenempty=_.keyBy([{option:"no",value:"'no'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'no'"},{option:"yes",value:"'yes'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'yes'"},{option:"strict",value:"'strict'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'strict'"},{option:"loose",value:"'loose'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'loose'"},{option:"paused",value:"'paused'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'paused'"},{option:"penalty",value:"'penalty'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'penalty'"},{option:"inuse",value:"'inuse'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'inuse'"},{option:"ringing",value:"'ringing'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'ringing'"},{option:"unavailable",value:"'unavailable'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unavailable'"},{option:"invalid",value:"'invalid'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'invalid'"},{option:"unknown",value:"'unknown'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'unknown'"},{option:"wrapup",value:"'wrapup'",disabled:"vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === 'wrapup'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayrandom_periodic_announce=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_holdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Once",value:"'once'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayannounce_position=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Limit",value:"'limit'"},{option:"More",value:"'more'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayreportholdtime=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayautopause=_.keyBy([{option:"Yes",value:"'all'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arrayringinuse=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraytimeoutrestart=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraymonitor_format=_.keyBy([{option:"Inactive",value:"''"},{option:"wav",value:"'wav'"},{option:"wav49",value:"'wav49'"},{option:"gsm",value:"'gsm'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetinterfacevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueuevar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.arraysetqueueentryvar=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.voice.voiceQueues.edit",{id:e.id,voiceQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"VoiceQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"VoiceQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{voiceQueue:e,voiceQueues:f.voiceQueues?f.voiceQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceQueue")+"?").htmlContent("<b>"+(e.name||"voiceQueue")+"</b> will be deleted.").ariaLabel("delete voiceQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:411}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.voice.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.voice.realtime.queues",{})}},f.success=E,f.getVoiceQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.voiceQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="VoiceQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditVoiceQueue=function(e,n){i.show({controller:"CreateOrEditVoiceQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceQueue:n,voiceQueues:f.voiceQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteVoiceQueue=y,f.exportSelectedVoiceQueues=function(){var e=angular.copy(f.selectedVoiceQueues);return f.selectedVoiceQueues=[],e},f.deleteSelectedVoiceQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceQueues?").htmlContent("<b>"+f.selectedVoiceQueues.length+" selected</b> will be deleted.").ariaLabel("delete VoiceQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedVoiceQueues.forEach(function(e){y(e)}),f.selectedVoiceQueues=[]})},f.deselectVoiceQueues=function(){f.selectedVoiceQueues=[]},f.selectAllVoiceQueues=function(){f.selectedVoiceQueues=f.voiceQueues.rows};var b=!0,A=1;function E(e){f.voiceQueues=e||{count:0,rows:[]}}function y(e){m.voiceQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.voiceQueues.rows,{id:e.id}),f.voiceQueues.count-=1,f.voiceQueues.rows.length||f.getVoiceQueues(),p.success({title:_.startCase("VoiceQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getVoiceQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.voice").controller("VoiceQueuesController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="VOICE.EDIT_VOICERECORDING",g.voiceRecording=angular.copy(l),g.voiceRecordings=r,g.newVoiceRecording=!1,g.voiceRecording||(g.voiceRecording={},g.title="VOICE.NEW_VOICERECORDING",g.newVoiceRecording=!0),g.addNewVoiceRecording=function(){g.errors=[],d.voiceRecording.save(g.voiceRecording).$promise.then(function(e){g.voiceRecordings.unshift(e.toJSON()),o.success({title:"VoiceRecording properly created",msg:g.voiceRecording.name?g.voiceRecording.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveVoiceRecording=function(){g.errors=[],d.voiceRecording.update({id:g.voiceRecording.id},g.voiceRecording).$promise.then(function(e){var n=_.find(g.voiceRecordings,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"VoiceRecording properly saved!",msg:g.voiceRecording.name?g.voiceRecording.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteVoiceRecording=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The voiceRecording will be deleted.").ariaLabel("Delete VoiceRecording").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.voiceRecording.delete({id:g.voiceRecording.id}).$promise.then(function(){_.remove(g.voiceRecordings,{id:g.voiceRecording.id}),o.success({title:"VoiceRecording properly deleted!",msg:(g.voiceRecording.name||"voiceRecording")+" has been deleted!"}),v(g.voiceRecording)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.voiceRecording.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","voiceRecordings","voiceRecording","api","Auth","license","setting","crudPermissions"],angular.module("app.voice").controller("CreateOrEditVoiceRecordingDialogController",e)}(),function(){"use strict";function e(e,n){var t=this;t.voiceRecording={},t.init=function(e){t.voiceRecording=e}}e.$inject=["api","toasty"],angular.module("app.voice").controller("VoiceRecordingSentimentStatisticsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.voiceRecording=c||e.params.voiceRecording||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.alert=l.info,p.gotoVoiceRecordings=function(){e.go("app.voice.voiceRecordings",{},{reload:"app.voice.voiceRecordings"})},p.saveVoiceRecording=function(){r.voiceRecording.update({id:p.voiceRecording.id},p.voiceRecording).$promise.then(function(){l.success({title:"VoiceRecording updated!",msg:p.voiceRecording.name?p.voiceRecording.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvoiceRecording",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","voiceRecording","userProfile","userProfileSection"],angular.module("app.voice").controller("VoiceRecordingController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,l,r,d,c,m,u,p,g,v,h,f){var b=this;function A(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!1}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBE_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function E(n,e){return m.voiceRecording.runTranscribe({id:n.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING")+" succeded!"}),n.transcribeStatus=e.transcribeStatus}).catch(function(e){p.error({title:l.instant("VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}function y(e,n){return m.voiceRecording.runTranscribe({id:e.id,runSentiment:!0}).$promise.then(function(e){p.success({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING")+" succeded!"})}).catch(function(e){p.error({title:l.instant("VOICE.RUNSENTIMENT_VOICERECORDING"),msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})}b.license=v,b.setting=h,b.currentUser=g.getCurrentUser(),b.voiceRecordings=r||{count:0,rows:[]},b.userProfile=d,b.userProfileSection=c&&1==c.count?c.rows[0]:null,b.crudPermissions=g.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="voiceRecordings",b.listOrder="",b.listOrderAsc=null,b.selectedVoiceRecordings=[],b.query={fields:"createdAt,updatedAt,id,format,value,type,uniqueid,calleridnum,exten,connectedlinenum,queue,membername,rating,audio,userDisposition,userSecondDisposition,userThirdDisposition,transcribeStatus,fileText,failureReason,sentiment,sPositive,sNegative,sNeutral,sMixed",sort:"-createdAt",createdAt:"@msUtils.firstLastDayMonth()",limit:10,page:1},b.query.createdAt=u.firstLastDayMonth(),b.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE_RANGE"}],b.editstate=function(e,n){t.go("app.voice.voiceRecordings.edit",{id:e.id,voiceRecording:e,crudPermissions:b.crudPermissions})},b.runtranscriberuntranscribesentiment=A,b.runtranscribesentimentruntranscribesentiment=E,b.runsentimentruntranscribesentiment=y,b.downloadtranscribefile2=function(s,e){var t=!1,n=_.isNil(s.format)?s.value.substring(s.value.lastIndexOf(".")):s.format;t=".mp4"===n;-1<s.value.lastIndexOf("/")?s.value.substring(s.value.lastIndexOf("/")+1):-1<s.value.lastIndexOf("\\")?s.value.substring(s.value.lastIndexOf("\\")+1):s.value;return m.voiceRecording.downloadTranscribe({id:s.id}).$promise.then(function(e){var n=[e.buffer],t="download",a=new Blob(n,{type:e.type});t=s.uniqueid+".txt";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.downloadfile2=function(r,e){var t=!1,n=_.isNil(r.format)?r.value.substring(r.value.lastIndexOf(".")):r.format;t=".mp4"===n;-1<r.value.lastIndexOf("/")?r.value.substring(r.value.lastIndexOf("/")+1):-1<r.value.lastIndexOf("\\")?r.value.substring(r.value.lastIndexOf("\\")+1):r.value;return m.voiceRecording.download({id:r.id}).$promise.then(function(e){var n,t,a=[e.buffer],i="download",s=new Blob(a,{type:e.type});n=r.value,t=-1<n.lastIndexOf("/")?n.substring(n.lastIndexOf("/")+1):-1<n.lastIndexOf("\\")?n.substring(n.lastIndexOf("\\")+1):n,i=(t=t.substring(0,t.lastIndexOf(".")))+r.format;var o=window.document.createElement("a");o.setAttribute("href",URL.createObjectURL(s)),o.setAttribute("download",i),document.body.appendChild(o),o.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else"404"===String(e.status)&&!1===t?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.WRONG_EXTENSION")}):"404"===String(e.status)?p.info({title:l.instant("VOICE.CANT_DOWNLOAD_THIS_FILE"),msg:l.instant("VOICE.FILE_NOT_FOUND")}):p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceRecording.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},b.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("voiceRecording")+"?").htmlContent("<b>"+(e.name||"voiceRecording")+"</b> will be deleted.").ariaLabel("delete voiceRecording").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){O(e)},function(){console.log("CANCEL")})},b.success=I,b.getVoiceRecordings=function(){b.query.offset=(b.query.page-1)*b.query.limit,g.hasRole("admin")?b.promise=m.voiceRecording.get(b.query,I).$promise:(b.query.id=b.userProfile.id,b.query.section="VoiceRecordings",b.promise=m.userProfile.getResources(b.query,I).$promise)},b.createOrEditVoiceRecording=function(e,n){i.show({controller:"CreateOrEditVoiceRecordingDialogController",controllerAs:"vm",templateUrl:"app/main/apps/voice/views/voiceRecordings/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{voiceRecording:n,voiceRecordings:b.voiceRecordings.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteVoiceRecording=O,b.exportSelectedVoiceRecordings=function(){var e=angular.copy(b.selectedVoiceRecordings);b.selectedVoiceRecordings=[],b.userProfile.privacyEnabled&&_.forEach(e,function(e){e.calleridnum=f.mask(e.calleridnum),e.exten=f.mask(e.exten),e.connectedlinenum=f.mask(e.connectedlinenum),e.membername=f.mask(e.membername)});return e},b.deleteSelectedVoiceRecordings=function(e){var n=i.confirm().title("Are you sure want to delete the selected voiceRecordings?").htmlContent("<b>"+b.selectedVoiceRecordings.length+" selected</b> will be deleted.").ariaLabel("delete VoiceRecordings").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedVoiceRecordings.forEach(function(e){O(e)}),b.selectedVoiceRecordings=[]})},b.deselectVoiceRecordings=function(){b.selectedVoiceRecordings=[]},b.selectAllVoiceRecordings=function(){b.selectedVoiceRecordings=b.voiceRecordings.rows},b.runtranscribeSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){A(e,n)}),b.selectedVoiceRecordings=[]},b.runtranscribesentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){E(e,n)}),b.selectedVoiceRecordings=[]},b.runsentimentSelectedVoiceRecordings=function(n){b.selectedVoiceRecordings.forEach(function(e){y(e,n)}),b.selectedVoiceRecordings=[]};var S=!0,T=1;function I(e){b.voiceRecordings=e||{count:0,rows:[]}}function O(e){m.voiceRecording.delete({id:e.id}).$promise.then(function(){_.remove(b.voiceRecordings.rows,{id:e.id}),b.voiceRecordings.count-=1,b.voiceRecordings.rows.length||b.getVoiceRecordings(),p.success({title:_.startCase("VoiceRecording")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEvoiceRecording"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEvoiceRecording",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){S?o(function(){S=!1}):(n||(T=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=T),b.getVoiceRecordings())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","voiceRecordings","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting","privacyManager"],angular.module("app.voice").controller("VoiceRecordingsController",e)}(),function(){"use strict";function e(e,t,n){switch(this.selectedTab=0,t.current.name){case"app.whatsapp.realtime.agents":this.selectedTab=0;break;case"app.whatsapp.realtime.queues":this.selectedTab=1;break;default:this.selectedTab=0,t.go("app.whatsapp.realtime.agents")}e.$watch("vm.selectedTab",function(e,n){if(e!==n)switch(e){case 0:t.go("app.whatsapp.realtime.agents");break;case 1:t.go("app.whatsapp.realtime.queues");break;default:t.go("app.whatsapp.realtime.agents")}})}e.$inject=["$scope","$state","socket"],angular.module("app.whatsapp").controller("WhatsappRealtimeController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(){"twilio"===g.whatsappAccount.type&&(g.whatsappAccount.baseUrl=null)}function h(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPACCOUNT",g.whatsappAccount=angular.copy(l),g.whatsappAccounts=r,g.newWhatsappAccount=!1,g.whatsappAccount||(g.whatsappAccount={remote:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),type:"twilio",notificationSound:!0,queueTransferTimeout:300,waitForTheAssignedAgent:10,agentTransferTimeout:300},g.title="WHATSAPP.NEW_WHATSAPPACCOUNT",g.newWhatsappAccount=!0),n.params.id&&(g.whatsappAccount.WhatsappAccountId=n.params.id),g.addNewWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.save(g.whatsappAccount).$promise.then(function(e){g.whatsappAccounts.unshift(e.toJSON()),o.success({title:"WhatsappAccount properly created",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappAccount=function(){g.errors=[],v(),d.whatsappAccount.update({id:g.whatsappAccount.id},g.whatsappAccount).$promise.then(function(e){var n=_.find(g.whatsappAccounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappAccount properly saved!",msg:g.whatsappAccount.name?g.whatsappAccount.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappAccount=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappAccount will be deleted.").ariaLabel("Delete WhatsappAccount").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.whatsappAccount.delete({id:g.whatsappAccount.id}).$promise.then(function(){_.remove(g.whatsappAccounts,{id:g.whatsappAccount.id}),o.success({title:"WhatsappAccount properly deleted!",msg:(g.whatsappAccount.name||"whatsappAccount")+" has been deleted!"}),h(g.whatsappAccount)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappAccount.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=h,c.hasRole("admin")?d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.lists=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.lists,{id:e.resourceId})}),t=null;if(g.whatsappAccount&&(t=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.lists,{id:t.id});a.canSelect=!1,n.push(a)}g.lists=n})}else{var t=[],a=null;g.whatsappAccount&&(a=_.find(g.lists,{id:Number(g.whatsappAccount.ListId)}));for(var i=0;i<g.lists.length;i++)a&&g.lists[i].id===a.id&&(g.lists[i].canSelect=!1,t.push(g.lists[i]));g.lists=t}}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){g.pauses=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return d.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(g.pauses,{id:e.resourceId})});g.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),g.pauses=n})}else g.pauses=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappAccounts","whatsappAccount","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappAccountDialogController",e)}(),function(){"use strict";function e(o,i,a,s,e){var r=this;function n(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountApp"+(t.appType||t.app).toLowerCase()+"DialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/"+(t.appType||t.app).toLowerCase()+"/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccountApp:t,whatsappAccount:r.whatsappAccount,crudPermissions:r.crudPermissions}}).then(function(e){e&&(e.id?r.whatsappAccountApps.rows[n]=e:r.whatsappAccountApps.rows.splice(n,0,e),l())}).catch(function(e){e&&s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:EDITMODALSHOW",msg:e.data?JSON.stringify(e.data):e.toString()})})}}function l(){for(var e=1,n=[],t=0;t<r.whatsappAccountApps.rows.length;t++,0){var a=r.whatsappAccountApps.rows[t],i=[],s=[];a.intervals="*,*,*,*"!==a.interval?[a.interval]:a.IntervalId?_.map(_.filter(r.intervals.rows,{IntervalId:a.IntervalId}),"interval"):[],a.context=r.whatsappAccount.context,a.exten=r.whatsappAccount.exten,a.type&&(a.type=a.type.toLowerCase()),a.priority=i.length?_.last(i).priority+1:e,e=(s.length?_.last(s).priority:a.priority)+1,n=_.concat(n,i,[a],s)}o.whatsappAccount.addApplications({id:r.whatsappAccount.id},_.sortBy(n,"priority")).$promise.then(function(e){r.whatsappAccountApps.rows=e.rows}).catch(function(e){console.error(e)})}function t(e){r.whatsappAccountApps=e||{count:0,rows:[]}}r.currentUser=e.getCurrentUser(),r.whatsappAccount={},r.whatsappAccountApps={count:0,rows:[]},r.selectedWhatsappAccountApps=[],r.crudPermissions,r.query={sort:"priority"},r.apps=_.reject(_.sortBy([{app:"Interval",appType:"interval",types:["always","custom","list"],fields:[],isApp:!1},{app:"noop",appType:"noop",type:"noop",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,fields:[{title:"Value",name:"value",type:"text",param:0}]},{app:"system",appType:"system",type:"system",icon:"icon-apps",interval:"*,*,*,*",required:!0,isApp:!0,extraApi:[{name:"variables",field:{name:"variable",key:"name"},route:"variable",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1012}}],fields:[{title:"Command",name:"command",type:"text",required:!0,param:0},{title:"Variable",name:"variable",type:"apiselect",values:"variables",value:"variable.name",option:"variable.name",defaultValues:[{value:"''",option:"None"}],defaultValue:"''",param:1}]},{app:"gotop",appType:"gotop",type:"goto",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Priority",name:"priority",type:"number",required:!0,min:0,param:0}]},{app:"gotoif",appType:"gotoif",type:"gotoif",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Condition",name:"condition",type:"text",required:!0,param:0},{title:"truepriority",name:"truepriority",type:"number",min:1,required:!0,param:1},{title:"falsepriority",name:"falsepriority",type:"number",min:1,required:!0,param:2}]},{app:"queue",appType:"queue",foreignKey:"WhatsappQueueId",type:"queue",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"queues",field:{name:"queue",key:"name"},route:"whatsappQueue",filters:{fields:"id,name,type",sort:"name",nolimit:!0},permissions:{section:2102}}],fields:[{title:"Queue",name:"queue",type:"apiselect",values:"queues",value:"queue.name",option:"queue.name",defaultValue:300,required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:300,param:1}]},{app:"agent",appType:"agent",type:"agent",foreignKey:"UserId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"agents",field:{name:"agent",key:"name"},route:"user",filters:{fields:"id,name",sort:"name",nolimit:!0,role:"agent"},permissions:{section:202}}],fields:[{title:"Agent",name:"agent",type:"apiselect",values:"agents",value:"agent.name",option:"agent.name",required:!0,param:0},{title:"Timeout",name:"timeout",type:"number",max:2147483,min:0,required:!0,defaultValue:30,param:1}]},{app:"autoreply",appType:"autoreply",type:"autoreply",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"times",name:"times",type:"select",defaultValue:"1",values:[{option:"One Time",value:"2"},{option:"Always",value:"0"},{option:"First Message",value:"1"}],required:!0,param:0},{title:"Text",name:"text",type:"textarea",required:!0,param:1}]},{app:"close",appType:"close",type:"close",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Disposition",name:"disposition",type:"text",required:!0,param:0}]},{app:"tag",appType:"tag",type:"tag",foreignKey:"TagId",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,extraApi:[{name:"tags",field:{name:"tag",key:"name"},route:"tag",filters:{fields:"id,name",sort:"name",nolimit:!0},permissions:{section:1008}}],fields:[{title:"Tag",name:"tag",type:"apiselect",values:"tags",value:"tag.name",option:"tag.name",required:!0,param:0}]},{app:"dialogflow",appType:"dialogflow",type:"dialogflow",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"Key",name:"key",type:"text",required:!0,param:0},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{option:"Danish",value:"'da'"},{option:"English",value:"'en'"},{option:"German",value:"'de'"},{option:"Italian",value:"'it'"},{option:"Spanish",value:"'es'"},{option:"French",value:"'fr'"},{option:"Indonesian",value:"'id'"},{option:"Japanese",value:"'ja'"},{option:"Korean (South Korea)",value:"'ko'"},{option:"Dutch",value:"'nl'"},{option:"Norwegian",value:"'no'"},{option:"Portuguese (European)",value:"'pt'"},{option:"Portuguese (Nrazilian)",value:"'pt-br'"},{option:"Russian",value:"'ru'"},{option:"Swedish",value:"'sv'"},{option:"Thai",value:"'th'"},{option:"Ukrainian",value:"'uk'"},{option:"Chinese (Simplified)",value:"'zh-CN'"},{option:"Chinese (Hong Kong)",value:"'zh-HK'"},{option:"Chinese (Traditional)",value:"'zh-TW'"}],required:!0,param:1},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:2,help:!0}]},{app:"dialogflowV2",appType:"dialogflowv2",type:"dialogflowv2",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"ProjectID",name:"projectId",type:"text",required:!0,param:0},{title:"ClientEmail",name:"clientEmail",type:"text",required:!0,param:1},{title:"PrivateKey",name:"privateKey",type:"textarea",required:!0,param:2},{title:"language",name:"language",type:"select",defaultValue:"'en'",values:[{value:"'zh-HK'",option:"Chinese (Cantonese)"},{value:"'zh-CN'",option:"Chinese (Simplified)"},{value:"'zh-TW'",option:"Chinese (Traditional)"},{value:"'da'",option:"Danish"},{value:"'nl'",option:"Dutch"},{value:"'en'",option:"English"},{value:"'en-AU'",option:"English (Australia)"},{value:"'en-CA'",option:"English (Canada)"},{value:"'en-GB'",option:"English (Great Britain)"},{value:"'en-IN'",option:"English (India)"},{value:"'en-US'",option:"English (US)"},{value:"'fr'",option:"French"},{value:"'fr-CA'",option:"French (Canada)"},{value:"'fr-FR'",option:"'France (France)"},{value:"'de'",option:"German"},{value:"'hi'",option:"Hindi"},{value:"'id'",option:"Indonesian"},{value:"'it'",option:"Italian"},{value:"'ja'",option:"Japanese"},{value:"'ko'",option:"Korean"},{value:"'no'",option:"Norwegian"},{value:"'pl'",option:"Polish"},{value:"'pt-BR'",option:"Portuguese (Brazil)"},{value:"'pt-PT'",option:"Portuguese (Portugal)"},{value:"'ru'",option:"Russian"},{value:"'es'",option:"Spanish"},{value:"'es-419'",option:"Spanish (Latin America)"},{value:"'es-ES'",option:"Spanish (Spain)"},{value:"'sw'",option:"Swedish"},{value:"'th'",option:"Thai"},{value:"'tr'",option:"Turkish"},{value:"'uk'",option:"Ukrainian"}],required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,param:4,help:!0}]},{app:"amazonlex",appType:"amazonlex",type:"amazonlex",icon:"icon-apps",interval:"*,*,*,*",isApp:!0,fields:[{title:"accesskeyid",name:"accesskeyid",type:"text",required:!0,param:0},{title:"secretaccesskey",name:"secretaccesskey",type:"text",required:!0,param:1},{title:"lexregion",name:"lexregion",type:"select",defaultValue:"'us-east-1'",values:[{option:"US East (N. Virginia)",value:"'us-east-1'"},{option:"US West (Oregon)",value:"'us-west-2'"},{option:"EU (Ireland)",value:"'eu-west-1'"},{option:"Asia Pacific (Sydney)",value:"'ap-southeast-2'"}],required:!0,param:2},{title:"botname",name:"botname",type:"text",required:!0,param:3},{title:"welcomemessage",name:"welcomemessage",type:"textarea",maxlength:255,required:!1,param:4,help:!0}]}],["app"]),{isApp:!1}),r.list={group:{name:"opt1",pull:"clone"},animation:100,sort:!1},r.applications={group:{name:"opt2",put:"opt1"},animation:100,onAdd:function(e){n(e,e.newIndex)},onSort:function(e){l()}},r.init=function(e,n){r.whatsappAccount=e,r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.applications.disabled=!r.crudPermissions.canEdit,r.query.id=e.id,r.query.isApp=!0,r.query.nolimit=!0,r.getWhatsappAccountApps(),r.getIntervals()},r.deleteConfirm=function(e,n,t){var a=i.confirm().title("Are you sure want to delete the application?").htmlContent("<b>"+e.app+"</b> will be deleted.").ariaLabel("delete application").targetEvent(t).ok("OK").cancel("CANCEL");i.show(a).then(function(){r.whatsappAccountApps.rows.splice(n,1),l()},function(){console.log("CANCEL")})},r.getWhatsappAccountApps=function(){r.promise=o.whatsappAccount.getApplications(r.query,t).$promise},r.editWhatsappAccountApp=n,r.editInterval=function(e,n){if(r.whatsappAccountApps.rows.length){var t=r.whatsappAccountApps.rows[n]?r.whatsappAccountApps.rows[n]:r.whatsappAccountApps.rows[0];i.show({controller:"EditWhatsappAccountAppintervalDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",parent:angular.element(a.body),targetEvent:e,clickOutsideToClose:!0,locals:{interval:{interval:t.interval,IntervalId:t.IntervalId,application:!0},intervals:[],crudPermissions:r.crudPermissions}}).then(function(e){e&&(t.interval=e.interval||"*,*,*,*",t.IntervalId=e.IntervalId||null,l())})}},r.deleteWhatsappAccountApp=function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id}),l(),s.success({title:"App deleted!",msg:e.app?e.app+" has been deleted!":""})},r.deleteSelectedWhatsappAccountApps=function(e){var n=i.confirm().title("Are you sure want to delete the selected applications?").htmlContent("<b>"+r.selectedWhatsappAccountApps.length+" selected</b> will be deleted.").ariaLabel("delete applications").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){r.selectedWhatsappAccountApps.forEach(function(e){_.remove(r.whatsappAccountApps.rows,{id:e.id})}),r.selectedWhatsappAccountApps=[],l()})},r.rewriteRouting=l,r.getIntervals=function(){return o.interval.get({fields:"id,interval,IntervalId"}).$promise.then(function(e){r.intervals=e}).catch(function(e){console.error(e)})}}e.$inject=["api","$mdDialog","$document","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountActionsController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappAccount.getAgents({id:c.whatsappAccount.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappAccount?"penalty "+e.UserWhatsappAccount.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappAccount=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.removeAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappAccount.addAgents({id:c.whatsappAccount.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappAccount","whatsappAccounts","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappAccountagentaddController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.agent=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.agent.appdata)switch(l.agent.appType?l.agent.appType.toLowerCase():l.agent.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.agent.appdata.split(",");l.agent.key=d[0],l.agent.language=d[1],l.agent.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.agent.appdata.split(",");l.agent.projectId=d[0],l.agent.clientEmail=d[1],l.agent.privateKey=d[2],l.agent.language=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.agent.appdata.split(",");l.agent.accesskeyid=d[0],l.agent.secretaccesskey=d[1],l.agent.lexregion=d[2],l.agent.botname=d[3],l.agent.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.agent.appdata.split(",");l.agent.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.agent.text=d.slice(1,d.length).join(",");break;case"message":l.agent.text=l.agent.appdata;break;case"set":l.agent.name=l.agent.appdata.split("=")[0],l.agent.value=l.agent.appdata.split("=")[1];break;case"agi":l.agent.project=l.agent.appdata;break;default:var c=l.agent.appdata.split(",");l.agent.agent=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.agent.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.agent.timeout=30;function m(e){n.hide(e)}l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outbounddial"===l.agent.appType.toLowerCase()&&(l.agent.prefix=l.agent.phone?l.agent.phone.split("$")[0]:void 0,l.agent.callerId=l.agent.callerID?"CALLERID(all)="+l.agent.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.agent.type&&"outbound"===l.agent.type.toLowerCase()&&"outboundDial"===l.agent.appType&&(l.agent.phone=i.cutdigits?(l.agent.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.agent.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.agent.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.agent.options+="U(xcally-mixmonitor-context)"):l.agent.options=l.agent.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.agents,{name:l.agent.agent});n&&(l.agent.UserId=n.id);if(l.agent.appType&&"custom"===l.agent.appType);else switch((l.agent.app||l.agent.appType).toLowerCase()){case"set":l.agent.appdata=l.agent.name+"="+l.agent.value;break;case"custom":break;default:e[0]=l.agent.agent,e[1]=l.agent.timeout,l.agent.appdata=e.join(",")}m(l.agent)},l.closeDialog=m,o.hasRole("admin")?s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.user.get({fields:"id,name",sort:"name",nolimit:"true",role:"agent"}).$promise.then(function(e){l.agents=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:202}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.agents,{id:e.resourceId})}),t=null;if(l.agent&&(t=_.find(l.agents,{name:l.agent.agent})),t&&!_.some(n,["id",t.id])){var a=_.find(l.agents,{id:t.id});a.canSelect=!1,n.push(a)}l.agents=n})}else{var t=[],a=null;l.agent&&(a=_.find(l.agents,{name:l.agent.agent}));for(var i=0;i<l.agents.length;i++)a&&l.agents[i].id===a.id&&(l.agents[i].canSelect=!1,t.push(l.agents[i]));l.agents=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETagents",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppagentDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.amazonlex=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.amazonlex.appdata)switch(l.amazonlex.appType?l.amazonlex.appType.toLowerCase():l.amazonlex.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.amazonlex.appdata.split(",");l.amazonlex.key=d[0],l.amazonlex.language=d[1],l.amazonlex.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.amazonlex.appdata.split(",");l.amazonlex.projectId=d[0],l.amazonlex.clientEmail=d[1],l.amazonlex.privateKey=d[2],l.amazonlex.language=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=d[0],l.amazonlex.secretaccesskey=d[1],l.amazonlex.lexregion=d[2],l.amazonlex.botname=d[3],l.amazonlex.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.amazonlex.appdata.split(",");l.amazonlex.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.amazonlex.text=d.slice(1,d.length).join(",");break;case"message":l.amazonlex.text=l.amazonlex.appdata;break;case"set":l.amazonlex.name=l.amazonlex.appdata.split("=")[0],l.amazonlex.value=l.amazonlex.appdata.split("=")[1];break;case"agi":l.amazonlex.project=l.amazonlex.appdata;break;default:var c=l.amazonlex.appdata.split(",");l.amazonlex.accesskeyid=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.amazonlex.secretaccesskey=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.amazonlex.lexregion=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.amazonlex.botname=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.amazonlex.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.amazonlex.lexregion="us-east-1";function m(e){n.hide(e)}l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outbounddial"===l.amazonlex.appType.toLowerCase()&&(l.amazonlex.prefix=l.amazonlex.phone?l.amazonlex.phone.split("$")[0]:void 0,l.amazonlex.callerId=l.amazonlex.callerID?"CALLERID(all)="+l.amazonlex.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.amazonlex.type&&"outbound"===l.amazonlex.type.toLowerCase()&&"outboundDial"===l.amazonlex.appType&&(l.amazonlex.phone=i.cutdigits?(l.amazonlex.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.amazonlex.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.amazonlex.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.amazonlex.options+="U(xcally-mixmonitor-context)"):l.amazonlex.options=l.amazonlex.options.replace("U(xcally-mixmonitor-context)",""));if(l.amazonlex.appType&&"custom"===l.amazonlex.appType);else switch((l.amazonlex.app||l.amazonlex.appType).toLowerCase()){case"set":l.amazonlex.appdata=l.amazonlex.name+"="+l.amazonlex.value;break;case"custom":break;default:e[0]=l.amazonlex.accesskeyid,e[1]=l.amazonlex.secretaccesskey,e[2]=l.amazonlex.lexregion,e[3]=l.amazonlex.botname,e[4]=l.amazonlex.welcomemessage,l.amazonlex.appdata=e.join(",")}m(l.amazonlex)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppamazonlexDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.autoreply=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.autoreply.appdata)switch(l.autoreply.appType?l.autoreply.appType.toLowerCase():l.autoreply.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.autoreply.appdata.split(",");l.autoreply.key=d[0],l.autoreply.language=d[1],l.autoreply.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.autoreply.appdata.split(",");l.autoreply.projectId=d[0],l.autoreply.clientEmail=d[1],l.autoreply.privateKey=d[2],l.autoreply.language=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.autoreply.appdata.split(",");l.autoreply.accesskeyid=d[0],l.autoreply.secretaccesskey=d[1],l.autoreply.lexregion=d[2],l.autoreply.botname=d[3],l.autoreply.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.autoreply.appdata.split(",");l.autoreply.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.autoreply.text=d.slice(1,d.length).join(",");break;case"message":l.autoreply.text=l.autoreply.appdata;break;case"set":l.autoreply.name=l.autoreply.appdata.split("=")[0],l.autoreply.value=l.autoreply.appdata.split("=")[1];break;case"agi":l.autoreply.project=l.autoreply.appdata;break;default:var c=l.autoreply.appdata.split(",");l.autoreply.times=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.autoreply.text=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.autoreply.times=1;function m(e){n.hide(e)}l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outbounddial"===l.autoreply.appType.toLowerCase()&&(l.autoreply.prefix=l.autoreply.phone?l.autoreply.phone.split("$")[0]:void 0,l.autoreply.callerId=l.autoreply.callerID?"CALLERID(all)="+l.autoreply.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.autoreply.type&&"outbound"===l.autoreply.type.toLowerCase()&&"outboundDial"===l.autoreply.appType&&(l.autoreply.phone=i.cutdigits?(l.autoreply.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.autoreply.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.autoreply.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.autoreply.options+="U(xcally-mixmonitor-context)"):l.autoreply.options=l.autoreply.options.replace("U(xcally-mixmonitor-context)",""));if(l.autoreply.appType&&"custom"===l.autoreply.appType);else switch((l.autoreply.app||l.autoreply.appType).toLowerCase()){case"set":l.autoreply.appdata=l.autoreply.name+"="+l.autoreply.value;break;case"custom":break;default:e[0]=l.autoreply.times,e[1]=l.autoreply.text,l.autoreply.appdata=e.join(",")}m(l.autoreply)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppautoreplyDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.close=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.close.appdata)switch(l.close.appType?l.close.appType.toLowerCase():l.close.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.close.appdata.split(",");l.close.key=d[0],l.close.language=d[1],l.close.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.close.appdata.split(",");l.close.projectId=d[0],l.close.clientEmail=d[1],l.close.privateKey=d[2],l.close.language=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.close.appdata.split(",");l.close.accesskeyid=d[0],l.close.secretaccesskey=d[1],l.close.lexregion=d[2],l.close.botname=d[3],l.close.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.close.appdata.split(",");l.close.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.close.text=d.slice(1,d.length).join(",");break;case"message":l.close.text=l.close.appdata;break;case"set":l.close.name=l.close.appdata.split("=")[0],l.close.value=l.close.appdata.split("=")[1];break;case"agi":l.close.project=l.close.appdata;break;default:var c=l.close.appdata.split(",");l.close.disposition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outbounddial"===l.close.appType.toLowerCase()&&(l.close.prefix=l.close.phone?l.close.phone.split("$")[0]:void 0,l.close.callerId=l.close.callerID?"CALLERID(all)="+l.close.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.close.type&&"outbound"===l.close.type.toLowerCase()&&"outboundDial"===l.close.appType&&(l.close.phone=i.cutdigits?(l.close.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.close.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.close.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.close.options+="U(xcally-mixmonitor-context)"):l.close.options=l.close.options.replace("U(xcally-mixmonitor-context)",""));if(l.close.appType&&"custom"===l.close.appType);else switch((l.close.app||l.close.appType).toLowerCase()){case"set":l.close.appdata=l.close.name+"="+l.close.value;break;case"custom":break;default:e[0]=l.close.disposition,l.close.appdata=e.join(",")}m(l.close)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppcloseDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflow=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflow.appdata)switch(l.dialogflow.appType?l.dialogflow.appType.toLowerCase():l.dialogflow.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflow.appdata.split(",");l.dialogflow.key=d[0],l.dialogflow.language=d[1],l.dialogflow.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflow.appdata.split(",");l.dialogflow.projectId=d[0],l.dialogflow.clientEmail=d[1],l.dialogflow.privateKey=d[2],l.dialogflow.language=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflow.appdata.split(",");l.dialogflow.accesskeyid=d[0],l.dialogflow.secretaccesskey=d[1],l.dialogflow.lexregion=d[2],l.dialogflow.botname=d[3],l.dialogflow.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflow.appdata.split(",");l.dialogflow.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflow.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflow.text=l.dialogflow.appdata;break;case"set":l.dialogflow.name=l.dialogflow.appdata.split("=")[0],l.dialogflow.value=l.dialogflow.appdata.split("=")[1];break;case"agi":l.dialogflow.project=l.dialogflow.appdata;break;default:var c=l.dialogflow.appdata.split(",");l.dialogflow.key=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflow.language=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflow.welcomemessage=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}else l.dialogflow.language="en";function m(e){n.hide(e)}l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outbounddial"===l.dialogflow.appType.toLowerCase()&&(l.dialogflow.prefix=l.dialogflow.phone?l.dialogflow.phone.split("$")[0]:void 0,l.dialogflow.callerId=l.dialogflow.callerID?"CALLERID(all)="+l.dialogflow.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflow.type&&"outbound"===l.dialogflow.type.toLowerCase()&&"outboundDial"===l.dialogflow.appType&&(l.dialogflow.phone=i.cutdigits?(l.dialogflow.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflow.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflow.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflow.options+="U(xcally-mixmonitor-context)"):l.dialogflow.options=l.dialogflow.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflow.appType&&"custom"===l.dialogflow.appType);else switch((l.dialogflow.app||l.dialogflow.appType).toLowerCase()){case"set":l.dialogflow.appdata=l.dialogflow.name+"="+l.dialogflow.value;break;case"custom":break;default:e[0]=l.dialogflow.key,e[1]=l.dialogflow.language,e[2]=l.dialogflow.welcomemessage,l.dialogflow.appdata=e.join(",")}m(l.dialogflow)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.dialogflowv2=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.dialogflowv2.appdata)switch(l.dialogflowv2.appType?l.dialogflowv2.appType.toLowerCase():l.dialogflowv2.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.key=d[0],l.dialogflowv2.language=d[1],l.dialogflowv2.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=d[0],l.dialogflowv2.clientEmail=d[1],l.dialogflowv2.privateKey=d[2],l.dialogflowv2.language=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.accesskeyid=d[0],l.dialogflowv2.secretaccesskey=d[1],l.dialogflowv2.lexregion=d[2],l.dialogflowv2.botname=d[3],l.dialogflowv2.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.dialogflowv2.appdata.split(",");l.dialogflowv2.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.dialogflowv2.text=d.slice(1,d.length).join(",");break;case"message":l.dialogflowv2.text=l.dialogflowv2.appdata;break;case"set":l.dialogflowv2.name=l.dialogflowv2.appdata.split("=")[0],l.dialogflowv2.value=l.dialogflowv2.appdata.split("=")[1];break;case"agi":l.dialogflowv2.project=l.dialogflowv2.appdata;break;default:var c=l.dialogflowv2.appdata.split(",");l.dialogflowv2.projectId=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.dialogflowv2.clientEmail=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.dialogflowv2.privateKey=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10),l.dialogflowv2.language=_.isEmpty(c[3])?c[3]:isNaN(c[3])?c[3]:parseInt(c[3],10),l.dialogflowv2.welcomemessage=_.isEmpty(c[4])?c[4]:isNaN(c[4])?c[4]:parseInt(c[4],10)}else l.dialogflowv2.language="en";function m(e){n.hide(e)}l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outbounddial"===l.dialogflowv2.appType.toLowerCase()&&(l.dialogflowv2.prefix=l.dialogflowv2.phone?l.dialogflowv2.phone.split("$")[0]:void 0,l.dialogflowv2.callerId=l.dialogflowv2.callerID?"CALLERID(all)="+l.dialogflowv2.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.dialogflowv2.type&&"outbound"===l.dialogflowv2.type.toLowerCase()&&"outboundDial"===l.dialogflowv2.appType&&(l.dialogflowv2.phone=i.cutdigits?(l.dialogflowv2.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.dialogflowv2.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.dialogflowv2.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.dialogflowv2.options+="U(xcally-mixmonitor-context)"):l.dialogflowv2.options=l.dialogflowv2.options.replace("U(xcally-mixmonitor-context)",""));if(l.dialogflowv2.appType&&"custom"===l.dialogflowv2.appType);else switch((l.dialogflowv2.app||l.dialogflowv2.appType).toLowerCase()){case"set":l.dialogflowv2.appdata=l.dialogflowv2.name+"="+l.dialogflowv2.value;break;case"custom":break;default:e[0]=l.dialogflowv2.projectId,e[1]=l.dialogflowv2.clientEmail,e[2]=l.dialogflowv2.privateKey,e[3]=l.dialogflowv2.language,e[4]=l.dialogflowv2.welcomemessage,l.dialogflowv2.appdata=e.join(",")}m(l.dialogflowv2)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppdialogflowv2DialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotoif=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotoif.appdata)switch(l.gotoif.appType?l.gotoif.appType.toLowerCase():l.gotoif.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotoif.appdata.split(",");l.gotoif.key=d[0],l.gotoif.language=d[1],l.gotoif.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotoif.appdata.split(",");l.gotoif.projectId=d[0],l.gotoif.clientEmail=d[1],l.gotoif.privateKey=d[2],l.gotoif.language=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotoif.appdata.split(",");l.gotoif.accesskeyid=d[0],l.gotoif.secretaccesskey=d[1],l.gotoif.lexregion=d[2],l.gotoif.botname=d[3],l.gotoif.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotoif.appdata.split(",");l.gotoif.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotoif.text=d.slice(1,d.length).join(",");break;case"message":l.gotoif.text=l.gotoif.appdata;break;case"set":l.gotoif.name=l.gotoif.appdata.split("=")[0],l.gotoif.value=l.gotoif.appdata.split("=")[1];break;case"agi":l.gotoif.project=l.gotoif.appdata;break;default:var c=l.gotoif.appdata.split(",");l.gotoif.condition=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.gotoif.truepriority=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10),l.gotoif.falsepriority=_.isEmpty(c[2])?c[2]:isNaN(c[2])?c[2]:parseInt(c[2],10)}function m(e){n.hide(e)}l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outbounddial"===l.gotoif.appType.toLowerCase()&&(l.gotoif.prefix=l.gotoif.phone?l.gotoif.phone.split("$")[0]:void 0,l.gotoif.callerId=l.gotoif.callerID?"CALLERID(all)="+l.gotoif.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotoif.type&&"outbound"===l.gotoif.type.toLowerCase()&&"outboundDial"===l.gotoif.appType&&(l.gotoif.phone=i.cutdigits?(l.gotoif.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotoif.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotoif.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotoif.options+="U(xcally-mixmonitor-context)"):l.gotoif.options=l.gotoif.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotoif.appType&&"custom"===l.gotoif.appType);else switch((l.gotoif.app||l.gotoif.appType).toLowerCase()){case"set":l.gotoif.appdata=l.gotoif.name+"="+l.gotoif.value;break;case"custom":break;default:e[0]=l.gotoif.condition,e[1]=l.gotoif.truepriority,e[2]=l.gotoif.falsepriority,l.gotoif.appdata=e.join(",")}m(l.gotoif)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotoifDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.gotop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.gotop.appdata)switch(l.gotop.appType?l.gotop.appType.toLowerCase():l.gotop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.gotop.appdata.split(",");l.gotop.key=d[0],l.gotop.language=d[1],l.gotop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.gotop.appdata.split(",");l.gotop.projectId=d[0],l.gotop.clientEmail=d[1],l.gotop.privateKey=d[2],l.gotop.language=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.gotop.appdata.split(",");l.gotop.accesskeyid=d[0],l.gotop.secretaccesskey=d[1],l.gotop.lexregion=d[2],l.gotop.botname=d[3],l.gotop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.gotop.appdata.split(",");l.gotop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.gotop.text=d.slice(1,d.length).join(",");break;case"message":l.gotop.text=l.gotop.appdata;break;case"set":l.gotop.name=l.gotop.appdata.split("=")[0],l.gotop.value=l.gotop.appdata.split("=")[1];break;case"agi":l.gotop.project=l.gotop.appdata;break;default:var c=l.gotop.appdata.split(",");l.gotop.priority=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outbounddial"===l.gotop.appType.toLowerCase()&&(l.gotop.prefix=l.gotop.phone?l.gotop.phone.split("$")[0]:void 0,l.gotop.callerId=l.gotop.callerID?"CALLERID(all)="+l.gotop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.gotop.type&&"outbound"===l.gotop.type.toLowerCase()&&"outboundDial"===l.gotop.appType&&(l.gotop.phone=i.cutdigits?(l.gotop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.gotop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.gotop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.gotop.options+="U(xcally-mixmonitor-context)"):l.gotop.options=l.gotop.options.replace("U(xcally-mixmonitor-context)",""));if(l.gotop.appType&&"custom"===l.gotop.appType);else switch((l.gotop.app||l.gotop.appType).toLowerCase()){case"set":l.gotop.appdata=l.gotop.name+"="+l.gotop.value;break;case"custom":break;default:e[0]=l.gotop.priority,l.gotop.appdata=e.join(",")}m(l.gotop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppgotopDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;if(c.currentUser=l.getCurrentUser(),c.errors=[],c.title="TOOLS.EDIT_INTERVAL",c.interval=angular.copy(i),c.intervals=s,c.newInterval=!1,c.types=["always","custom","list"],c.crudPermissions=d,c.daysOfWeek=a.getDaysOfWeek(),c.monthNumber=a.getMonthNumber(),c.monthName=a.getMonthName(),c.daysOfMonth=a.getDaysOfMonth(),c.interval)if("*,*,*,*"!==c.interval.interval){c.type="custom";var m=c.interval.interval.split(","),u=m[0],p=m[1],g=m[2],v=m[3];if("*"!==u){var h,f=u.split("-")[0],b=u.split("-")[1];(h=new Date).setHours(Number(f.split(":")[0])),h.setMinutes(Number(f.split(":")[1])),c.timeRangeFrom=h,(h=new Date).setHours(Number(b.split(":")[0])),h.setMinutes(Number(b.split(":")[1])),c.timeRangeTo=h}"*"!==p&&(c.dayOfWeekFrom=p.split("-")[0],c.dayOfWeekTo=p.split("-")[1]),"*"!==g&&(c.monthDayFrom=g.split("-")[0],c.monthDayTo=g.split("-")[1]),"*"!==v&&(c.monthFrom=v.split("-")[0],c.monthTo=v.split("-")[1])}else c.type="always";else c.interval={interval:"*,*,*,*"},c.type="always",c.title="TOOLS.NEW_INTERVAL",c.newInterval=!0;function A(){switch(c.type){case"always":case"list":return"*,*,*,*";case"custom":var e=[];if("*"!==c.timeRangeFrom&&c.timeRangeFrom&&c.timeRangeTo){var n=(c.timeRangeFrom.getHours()<10?"0":"")+c.timeRangeFrom.getHours()+":"+(c.timeRangeFrom.getMinutes()<10?"0":"")+c.timeRangeFrom.getMinutes(),t=(c.timeRangeTo.getHours()<10?"0":"")+c.timeRangeTo.getHours()+":"+(c.timeRangeTo.getMinutes()<10?"0":"")+c.timeRangeTo.getMinutes();e.push(n+"-"+t)}else e.push("*");return c.dayOfWeekFrom?c.dayOfWeekTo?e.push(c.dayOfWeekFrom+"-"+c.dayOfWeekTo):e.push(c.dayOfWeekFrom):e.push("*"),c.monthDayFrom?c.monthDayTo?e.push(c.monthDayFrom+"-"+c.monthDayTo):e.push(c.monthDayFrom):e.push("*"),c.monthFrom?c.monthTo?e.push(c.monthFrom+"-"+c.monthTo):e.push(c.monthFrom):e.push("*"),e.join()}}function E(e){n.hide(e)}e.params.id&&!c.interval.application&&(c.interval.IntervalId=e.params.id),c.interval.IntervalId&&c.interval.application&&(c.type="list"),c.addNewInterval=function(){c.errors=[],c.interval.interval=A(),r.interval.save(c.interval).$promise.then(function(e){c.intervals.push(e),o.success({title:"Interval properly created",msg:c.interval.name?c.interval.name+" has been created!":""}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.save"}]})},c.saveInterval=function(){c.errors=[],c.interval.interval=A(),c.interval.application?("list"!==c.type&&(c.interval.IntervalId=null),E(c.interval)):r.interval.update({id:c.interval.id},c.interval).$promise.then(function(e){var n=_.find(c.intervals,{id:e.id});n&&_.merge(n,e),o.success({title:"Interval properly saved!",msg:"Interval has been saved!"}),E()}).catch(function(e){console.error(e),c.errors=e.data.errors||[{message:e.toString(),type:"api.interval.update"}]})},c.closeDialog=E,c.interval.application&&(l.hasRole("admin")?r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.interval.get({fields:"id,name,interval,IntervalId",IntervalId:"null",nolimit:!0}).$promise.then(function(e){c.intervals=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:c.currentUser.userProfileId,sectionId:1004}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=e&&e.rows?e.rows:[],t=[],a=null;c.interval&&(a=_.find(c.intervals,{name:c.interval.IntervalId})),a&&!_.some(n,["resourceId",a.id])&&c.intervals.forEach(function(e){e.id===a.id&&(e.canSelect=!1,t.push(e))}),c.intervals=t})}else c.intervals=[]}).catch(function(e){o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_INTERVALS",msg:e.data?JSON.stringify(e.data):e.toString()})}))}e.$inject=["$state","$mdDialog","$mdToast","IndexFactory","interval","intervals","toasty","api","Auth","crudPermissions"],angular.module("app.voice").controller("EditWhatsappAccountAppintervalDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.noop=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.noop.appdata)switch(l.noop.appType?l.noop.appType.toLowerCase():l.noop.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.noop.appdata.split(",");l.noop.key=d[0],l.noop.language=d[1],l.noop.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.noop.appdata.split(",");l.noop.projectId=d[0],l.noop.clientEmail=d[1],l.noop.privateKey=d[2],l.noop.language=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.noop.appdata.split(",");l.noop.accesskeyid=d[0],l.noop.secretaccesskey=d[1],l.noop.lexregion=d[2],l.noop.botname=d[3],l.noop.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.noop.appdata.split(",");l.noop.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.noop.text=d.slice(1,d.length).join(",");break;case"message":l.noop.text=l.noop.appdata;break;case"set":l.noop.name=l.noop.appdata.split("=")[0],l.noop.value=l.noop.appdata.split("=")[1];break;case"agi":l.noop.project=l.noop.appdata;break;default:var c=l.noop.appdata.split(",");l.noop.value=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outbounddial"===l.noop.appType.toLowerCase()&&(l.noop.prefix=l.noop.phone?l.noop.phone.split("$")[0]:void 0,l.noop.callerId=l.noop.callerID?"CALLERID(all)="+l.noop.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.noop.type&&"outbound"===l.noop.type.toLowerCase()&&"outboundDial"===l.noop.appType&&(l.noop.phone=i.cutdigits?(l.noop.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.noop.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.noop.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.noop.options+="U(xcally-mixmonitor-context)"):l.noop.options=l.noop.options.replace("U(xcally-mixmonitor-context)",""));if(l.noop.appType&&"custom"===l.noop.appType);else switch((l.noop.app||l.noop.appType).toLowerCase()){case"set":l.noop.appdata=l.noop.name+"="+l.noop.value;break;case"custom":break;default:e[0]=l.noop.value,l.noop.appdata=e.join(",")}m(l.noop)},l.closeDialog=m}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppnoopDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.queue=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.queue.appdata)switch(l.queue.appType?l.queue.appType.toLowerCase():l.queue.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.queue.appdata.split(",");l.queue.key=d[0],l.queue.language=d[1],l.queue.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.queue.appdata.split(",");l.queue.projectId=d[0],l.queue.clientEmail=d[1],l.queue.privateKey=d[2],l.queue.language=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.queue.appdata.split(",");l.queue.accesskeyid=d[0],l.queue.secretaccesskey=d[1],l.queue.lexregion=d[2],l.queue.botname=d[3],l.queue.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.queue.appdata.split(",");l.queue.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.queue.text=d.slice(1,d.length).join(",");break;case"message":l.queue.text=l.queue.appdata;break;case"set":l.queue.name=l.queue.appdata.split("=")[0],l.queue.value=l.queue.appdata.split("=")[1];break;case"agi":l.queue.project=l.queue.appdata;break;default:var c=l.queue.appdata.split(",");l.queue.queue=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.queue.timeout=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.queue.queue=300,l.queue.timeout=300;function m(e){n.hide(e)}l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outbounddial"===l.queue.appType.toLowerCase()&&(l.queue.prefix=l.queue.phone?l.queue.phone.split("$")[0]:void 0,l.queue.callerId=l.queue.callerID?"CALLERID(all)="+l.queue.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.queue.type&&"outbound"===l.queue.type.toLowerCase()&&"outboundDial"===l.queue.appType&&(l.queue.phone=i.cutdigits?(l.queue.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.queue.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.queue.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.queue.options+="U(xcally-mixmonitor-context)"):l.queue.options=l.queue.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.queues,{name:l.queue.queue});n&&(l.queue[_.capitalize("whatsapp")+"QueueId"]=n.id);if(l.queue.appType&&"custom"===l.queue.appType);else switch((l.queue.app||l.queue.appType).toLowerCase()){case"set":l.queue.appdata=l.queue.name+"="+l.queue.value;break;case"custom":break;default:e[0]=l.queue.queue,e[1]=l.queue.timeout,l.queue.appdata=e.join(",")}m(l.queue)},l.closeDialog=m,o.hasRole("admin")?s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_QUEUES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.whatsappQueue.get({fields:"id,name,type",sort:"name",nolimit:"true"}).$promise.then(function(e){l.queues=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:2102}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.queues,{id:e.resourceId})}),t=null;if(l.queue&&(t=_.find(l.queues,{name:l.queue.queue})),t&&!_.some(n,["id",t.id])){var a=_.find(l.queues,{id:t.id});a.canSelect=!1,n.push(a)}l.queues=n})}else{var t=[],a=null;l.queue&&(a=_.find(l.queues,{name:l.queue.queue}));for(var i=0;i<l.queues.length;i++)a&&l.queues[i].id===a.id&&(l.queues[i].canSelect=!1,t.push(l.queues[i]));l.queues=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETqueues",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppqueueDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.system=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.system.appdata)switch(l.system.appType?l.system.appType.toLowerCase():l.system.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.system.appdata.split(",");l.system.key=d[0],l.system.language=d[1],l.system.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.system.appdata.split(",");l.system.projectId=d[0],l.system.clientEmail=d[1],l.system.privateKey=d[2],l.system.language=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.system.appdata.split(",");l.system.accesskeyid=d[0],l.system.secretaccesskey=d[1],l.system.lexregion=d[2],l.system.botname=d[3],l.system.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.system.appdata.split(",");l.system.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.system.text=d.slice(1,d.length).join(",");break;case"message":l.system.text=l.system.appdata;break;case"set":l.system.name=l.system.appdata.split("=")[0],l.system.value=l.system.appdata.split("=")[1];break;case"agi":l.system.project=l.system.appdata;break;default:var c=l.system.appdata.split(",");l.system.command=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10),l.system.variable=_.isEmpty(c[1])?c[1]:isNaN(c[1])?c[1]:parseInt(c[1],10)}else l.system.variable="";function m(e){n.hide(e)}l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outbounddial"===l.system.appType.toLowerCase()&&(l.system.prefix=l.system.phone?l.system.phone.split("$")[0]:void 0,l.system.callerId=l.system.callerID?"CALLERID(all)="+l.system.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.system.type&&"outbound"===l.system.type.toLowerCase()&&"outboundDial"===l.system.appType&&(l.system.phone=i.cutdigits?(l.system.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.system.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.system.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.system.options+="U(xcally-mixmonitor-context)"):l.system.options=l.system.options.replace("U(xcally-mixmonitor-context)",""));if(l.system.appType&&"custom"===l.system.appType);else switch((l.system.app||l.system.appType).toLowerCase()){case"set":l.system.appdata=l.system.name+"="+l.system.value;break;case"custom":break;default:e[0]=l.system.command,e[1]=l.system.variable,l.system.appdata=e.join(",")}m(l.system)},l.closeDialog=m,o.hasRole("admin")?s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_VARIABLES",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.variable.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.variables=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1012}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.variables,{id:e.resourceId})}),t=null;if(l.system&&(t=_.find(l.variables,{name:l.system.variable})),t&&!_.some(n,["id",t.id])){var a=_.find(l.variables,{id:t.id});a.canSelect=!1,n.push(a)}l.variables=n})}else{var t=[],a=null;l.system&&(a=_.find(l.variables,{name:l.system.variable}));for(var i=0;i<l.variables.length;i++)a&&l.variables[i].id===a.id&&(l.variables[i].canSelect=!1,t.push(l.variables[i]));l.variables=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETvariables",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountAppsystemDialogController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r){var l=this;if(l.currentUser=o.getCurrentUser(),l.errors=[],l.title="WHATSAPP.EDIT_"+(a.appType||a.app).toUpperCase(),l.tag=angular.copy(a),l.crudPermissions=r,l.hasModulePermissions={},l.tag.appdata)switch(l.tag.appType?l.tag.appType.toLowerCase():l.tag.app.toLowerCase()){case"custom":break;case"dialogflow":var d=l.tag.appdata.split(",");l.tag.key=d[0],l.tag.language=d[1],l.tag.welcomemessage=d.slice(2,d.length).join(",");break;case"dialogflowv2":d=l.tag.appdata.split(",");l.tag.projectId=d[0],l.tag.clientEmail=d[1],l.tag.privateKey=d[2],l.tag.language=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"amazonlex":d=l.tag.appdata.split(",");l.tag.accesskeyid=d[0],l.tag.secretaccesskey=d[1],l.tag.lexregion=d[2],l.tag.botname=d[3],l.tag.welcomemessage=d.slice(4,d.length).join(",");break;case"autoreply":d=l.tag.appdata.split(",");l.tag.times=isNaN(d[0])?d[0]:parseInt(d[0],10),l.tag.text=d.slice(1,d.length).join(",");break;case"message":l.tag.text=l.tag.appdata;break;case"set":l.tag.name=l.tag.appdata.split("=")[0],l.tag.value=l.tag.appdata.split("=")[1];break;case"agi":l.tag.project=l.tag.appdata;break;default:var c=l.tag.appdata.split(",");l.tag.tag=_.isEmpty(c[0])?c[0]:isNaN(c[0])?c[0]:parseInt(c[0],10)}function m(e){n.hide(e)}l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outbounddial"===l.tag.appType.toLowerCase()&&(l.tag.prefix=l.tag.phone?l.tag.phone.split("$")[0]:void 0,l.tag.callerId=l.tag.callerID?"CALLERID(all)="+l.tag.callerID:void 0),l.saveWhatsappAccountApp=function(){l.errors=[];var e=[];l.tag.type&&"outbound"===l.tag.type.toLowerCase()&&"outboundDial"===l.tag.appType&&(l.tag.phone=i.cutdigits?(l.tag.prefix||"")+"${EXTEN:"+i.cutdigits+"}":(l.tag.prefix||"")+"${EXTEN}","none"!==i.recordingFormat?l.tag.options.indexOf("U(xcally-mixmonitor-context)")<0&&(l.tag.options+="U(xcally-mixmonitor-context)"):l.tag.options=l.tag.options.replace("U(xcally-mixmonitor-context)",""));var n=_.find(l.tags,{name:l.tag.tag});n&&(l.tag.TagId=n.id);if(l.tag.appType&&"custom"===l.tag.appType);else switch((l.tag.app||l.tag.appType).toLowerCase()){case"set":l.tag.appdata=l.tag.name+"="+l.tag.value;break;case"custom":break;default:e[0]=l.tag.tag,l.tag.appdata=e.join(",")}m(l.tag)},l.closeDialog=m,o.hasRole("admin")?s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TAGS",msg:e.data?JSON.stringify(e.data):e.toString()})}):s.tag.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){l.tags=e.rows||[]}).then(function(){return s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,sectionId:1008}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return s.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(l.tags,{id:e.resourceId})}),t=null;if(l.tag&&(t=_.find(l.tags,{name:l.tag.tag})),t&&!_.some(n,["id",t.id])){var a=_.find(l.tags,{id:t.id});a.canSelect=!1,n.push(a)}l.tags=n})}else{var t=[],a=null;l.tag&&(a=_.find(l.tags,{name:l.tag.tag}));for(var i=0;i<l.tags.length;i++)a&&l.tags[i].id===a.id&&(l.tags[i].canSelect=!1,t.push(l.tags[i]));l.tags=t}}).catch(function(e){t.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETtags",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$mdDialog","$q","toasty","whatsappAccountApp","whatsappAccount","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("EditWhatsappAccountApptagDialogController",e)}(),function(){"use strict";function e(e,a,n,t,i,s,o,r,l,d,c){var m=this;function u(e){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(e){d.whatsappInteraction.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountInteractions.rows,{id:e.id}),m.whatsappAccountInteractions.count-=1,m.whatsappAccountInteractions.rows.length||g(),l.success({title:"Interaction deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}function h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(e){return e.UserId?e.UserId===m.currentUser.id?i.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">":i.instant("DASHBOARDS.NOT_ASSIGNED")}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountInteractions={count:0,rows:[]},m.selectedWhatsappAccountInteractions=[],m.crudPermissions,m.query={read:"null",closed:"null",sort:"-createdAt",includeAll:"true",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.advancedSearch={fields:[{name:"Id",column:"id",type:"number"},{name:"Contact",column:"Contact",type:"autocomplete",options:{searchFields:["firstName","lastName","email"],route:{model:"cmContact",action:"get",params:{fields:"id,firstName,lastName,email",Contact:"@autocomplete",nolimit:!0}},extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Subject",column:"subject",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Body",column:"body",type:"text",options:{excludedOperators:["$eq","$ne"]}},{name:"Status",column:"closed",type:"select",values:[{id:0,translate:"DASHBOARDS.OPENED"},{id:1,translate:"DASHBOARDS.CLOSED"}],options:{excludedOperators:["$ne"]}},{name:"Agent",column:"User",type:"autocomplete",options:{table:"i",route:{model:"user",action:"get",params:{role:"agent",fields:"id,name,fullname",nolimit:!0}},searchFields:["fullname","name"],extraOperators:["$substring"],excludedOperators:["$ne"]}},{name:"Tags",column:"Tag",type:"multiselect",options:{route:{model:"tag",action:"get",params:{nolimit:!0}},excludedOperators:["$notIn"]}},{name:"Start Date",column:"createdAt",type:"date",options:{excludedOperators:["$ne"]}},{name:"Read",column:"unreadMessages",type:"select",values:[{id:1,translate:"DASHBOARDS.READ"},{id:0,translate:"DASHBOARDS.UNREAD"}],options:{excludedOperators:["$ne"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},d.tag.get({sort:"name"}).$promise.then(function(e){m.tags=e||{count:0,rows:[]}}).then(function(){m.quickFilters=[{name:"Start Date",key:"createdAt",type:"date",label:"DASHBOARDS.SELECT_DATE"},{name:"Messages",key:"read",type:"select",label:"DASHBOARDS.SELECT_READ_UNREAD",customOptions:[{value:0,translate:"DASHBOARDS.UNREAD"},{value:1,translate:"DASHBOARDS.READ"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Status",key:"closed",type:"select",label:"DASHBOARDS.SELECT_STATUS",customOptions:[{value:0,translate:"DASHBOARDS.OPENED"},{value:1,translate:"DASHBOARDS.CLOSED"},{value:null,translate:"DASHBOARDS.ALL"}]},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:"null",translate:"DASHBOARDS.NOT_ASSIGNED"},{value:void 0,translate:"DASHBOARDS.ALL"}]},{name:"Tag",key:"tag",type:"multiselect",label:"DASHBOARDS.SELECT_TAG",options:m.tags.rows,placeholder:"DASHBOARDS.TAGS"}]})},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the interaction?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("interaction #")+e.id||"interaction")+"</b> will be deleted.").ariaLabel("delete interaction").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){v(e)},function(){console.log("CANCEL")})},m.whatsappInteractionDownload=function(s,e,n){return d.whatsappInteraction.download({id:s.id,exists:!0,attachments:n}).$promise.then(function(e){var n=[e.buffer],t="interaction"+s.id,a=new Blob(n,{type:e.type});t="whatsapp-interaction"+s.id+".zip";var i=window.document.createElement("a");i.setAttribute("href",URL.createObjectURL(a)),i.setAttribute("download",t),document.body.appendChild(i),i.click()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.success=p,m.getWhatsappAccountInteractions=g,m.createOrEditWhatsappAccountInteraction=function(e,n){o.show({controller:"CreateOrEditInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/interactions/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,interaction:n,interactions:m.whatsappAccountInteractions.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.spywhatsappInteraction=function(e,t){o.show({controller:"AgentGeneralInteractionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,onShowing:function(e,n){e.vm.init({id:1,channel:"whatsapp",interaction:t,spy:!0},a.$parent.vm.setting)}})},m.openAdvancedSearch=function(){o.show({controller:"AdvancedSearchController",controllerAs:"vm",templateUrl:"app/core/dialogs/advanced-search/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!1,locals:{fields:m.advancedSearch.fields,color:void 0,storagePath:"whatsapp.whatsappAccounts"},fullscreen:!0}).then(function(e){if(m.isSearchBarVisible=!(e.value||!m.query.filter),e.apply){var n="";n+="||WhatsappAccountId:=$eq["+m.whatsappAccount.id+"]",m.query.search=e.value?e.value+=n:e.value,g()}}).catch(function(e){l.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.exportSelectedWhatsappAccountInteractions=function(){var e=angular.copy(m.selectedWhatsappAccountInteractions);return m.selectedWhatsappAccountInteractions=[],e},m.deleteWhatsappAccountInteraction=v,m.deleteSelectedWhatsappAccountInteractions=function(e){var n=o.confirm().title("Are you sure want to delete the selected interactions?").htmlContent("<b>"+m.selectedWhatsappAccountInteractions.length+" selected</b> will be deleted.").ariaLabel("delete interactions").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountInteractions.forEach(function(e){v(e)}),m.selectedWhatsappAccountInteractions=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountInteractionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u){var p=this;p.currentUser=d.getCurrentUser(),p.license=s,p.setting=o,p.passwordPattern=p.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",p.location=n.protocol()+"://"+n.host(),p.whatsappAccount=c||e.params.whatsappAccount||{},p.userProfile=m,p.userProfileSection=u&&1==u.count?u.rows[0]:null,p.crudPermissions=d.parseCrudPermissions(p.userProfileSection?p.userProfileSection.crudPermissions:null),p.hasModulePermissions={},p.selectedTab=e.params.tab||0,p.baseUrl=[{name:"US Production",url:"https://us1.whatsapp.api.sinch.com"},{name:"EU Production",url:"https://eu1.whatsapp.api.sinch.com"}],p.agentadddialog=function(e,n){t.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:p.whatsappAccounts?p.whatsappAccounts.rows:[],crudPermissions:p.crudPermissions,realtime:!1}})},p.alert=l.info,p.gotoWhatsappAccounts=function(){e.go("app.whatsapp.whatsappAccounts",{},{reload:"app.whatsapp.whatsappAccounts"})},p.saveWhatsappAccount=function(){"twilio"===p.whatsappAccount.type&&(p.whatsappAccount.baseUrl=null);r.whatsappAccount.update({id:p.whatsappAccount.id},p.whatsappAccount).$promise.then(function(){l.success({title:"WhatsappAccount updated!",msg:p.whatsappAccount.name?p.whatsappAccount.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.hasRole("admin")?r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){p.lists=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.lists,{id:e.resourceId})}),t=null;if(p.whatsappAccount&&(t=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(p.lists,{id:t.id});a.canSelect=!1,n.push(a)}p.lists=n})}else{var t=[],a=null;p.whatsappAccount&&(a=_.find(p.lists,{id:Number(p.whatsappAccount.ListId)}));for(var i=0;i<p.lists.length;i++)a&&p.lists[i].id===a.id&&(p.lists[i].canSelect=!1,t.push(p.lists[i]));p.lists=t}}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),d.hasRole("admin")?r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):r.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){p.pauses=e.rows||[]}).then(function(){return r.userProfileSection.get({userProfileId:p.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return r.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(p.pauses,{id:e.resourceId})});p.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),p.pauses=n})}else p.pauses=[]}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})})}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappAccount","userProfile","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappAccountController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.whatsappAccountWhatsappCannedAnswers=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappAccount.getAnswers(m.query,u).$promise}function g(e){d.cannedAnswer.delete({id:e.id}).$promise.then(function(){_.remove(m.whatsappAccountWhatsappCannedAnswers.rows,{id:e.id}),m.whatsappAccountWhatsappCannedAnswers.count-=1,m.whatsappAccountWhatsappCannedAnswers.rows.length||p(),l.success({title:"WhatsappCannedAnswer deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:GETwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)l.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.whatsappAccount={},m.whatsappAccountWhatsappCannedAnswers={count:0,rows:[]},m.selectedWhatsappAccountWhatsappCannedAnswers=[],m.crudPermissions,m.query={fields:"createdAt,updatedAt,id,key,value,description",limit:10,page:1},m.init=function(e,n,t){m.whatsappAccount=e,m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.userProfile=t,m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=o.confirm().title("Are you sure want to delete the whatsappCannedAnswer?").htmlContent("<b>"+(e.name||e.id&&_.upperFirst("whatsappCannedAnswer #")+e.id||"whatsappCannedAnswer")+"</b> will be deleted.").ariaLabel("delete whatsappCannedAnswer").targetEvent(n).ok("OK").cancel("CANCEL");o.show(t).then(function(){g(e)},function(){console.log("CANCEL")})},m.success=u,m.getWhatsappAccountWhatsappCannedAnswers=p,m.createOrEditWhatsappAccountWhatsappCannedAnswer=function(e,n){o.show({controller:"CreateOrEditWhatsappCannedAnswerDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:m.whatsappAccount,whatsappCannedAnswer:n,whatsappCannedAnswers:m.whatsappAccountWhatsappCannedAnswers.rows,license:null,setting:null,crudPermissions:m.crudPermissions}})},m.exportSelectedWhatsappAccountWhatsappCannedAnswers=function(){var e=angular.copy(m.selectedWhatsappAccountWhatsappCannedAnswers);return m.selectedWhatsappAccountWhatsappCannedAnswers=[],e},m.deleteWhatsappAccountWhatsappCannedAnswer=g,m.deleteSelectedWhatsappAccountWhatsappCannedAnswers=function(e){var n=o.confirm().title("Are you sure want to delete the selected whatsappCannedAnswers?").htmlContent("<b>"+m.selectedWhatsappAccountWhatsappCannedAnswers.length+" selected</b> will be deleted.").ariaLabel("delete whatsappCannedAnswers").targetEvent(e).ok("OK").cancel("CANCEL");o.show(n).then(function(){m.selectedWhatsappAccountWhatsappCannedAnswers.forEach(function(e){g(e)}),m.selectedWhatsappAccountWhatsappCannedAnswers=[]})}}e.$inject=["$cookies","$scope","$state","$q","$translate","$timeout","$mdDialog","$document","toasty","api","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountWhatsappCannedAnswersController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p){var g=this;function v(e){a.hide(e)}g.currentUser=c.getCurrentUser(),g.errors=[],g.setting=u,g.license=m,g.crudPermissions=p,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.title="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER",g.whatsappCannedAnswer=angular.copy(l),g.whatsappCannedAnswers=r,g.newWhatsappCannedAnswer=!1,g.whatsappCannedAnswer||(g.whatsappCannedAnswer={},g.title="WHATSAPP.NEW_WHATSAPPCANNEDANSWER",g.newWhatsappCannedAnswer=!0),n.params.id&&(g.whatsappCannedAnswer.WhatsappAccountId=n.params.id),g.addNewWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.save(g.whatsappCannedAnswer).$promise.then(function(e){g.whatsappCannedAnswers.unshift(e.toJSON()),o.success({title:"WhatsappCannedAnswer properly created",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been created!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.save"}];for(var n=0;n<e.data.errors.length;n+=1)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveWhatsappCannedAnswer=function(){g.errors=[],d.cannedAnswer.update({id:g.whatsappCannedAnswer.id},g.whatsappCannedAnswer).$promise.then(function(e){var n=_.find(g.whatsappCannedAnswers,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"WhatsappCannedAnswer properly saved!",msg:g.whatsappCannedAnswer.name?g.whatsappCannedAnswer.name+" has been saved!":""}),v(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.update"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteWhatsappCannedAnswer=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The whatsappCannedAnswer will be deleted.").ariaLabel("Delete WhatsappCannedAnswer").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.cannedAnswer.delete({id:g.whatsappCannedAnswer.id}).$promise.then(function(){_.remove(g.whatsappCannedAnswers,{id:g.whatsappCannedAnswer.id}),o.success({title:"WhatsappCannedAnswer properly deleted!",msg:(g.whatsappCannedAnswer.name||"whatsappCannedAnswer")+" has been deleted!"}),v(g.whatsappCannedAnswer)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.cannedAnswer.delete"}];for(var n=0;n<e.data.errors.length;n++)o.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else o.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.cannedAnswer.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.getDateFromString=function(e){return null===e?void 0:new Date(e)},g.closeDialog=v}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","whatsappCannedAnswers","whatsappCannedAnswer","api","Auth","license","setting","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappCannedAnswerDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c){var m=this;function u(e){m.dispositions=e||{count:0,rows:[]}}function p(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=l.whatsappAccount.getDispositions(m.query,u).$promise}function g(e){l.disposition.delete({id:e.id}).$promise.then(function(){p(),d.success({title:r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEdisposition"}];for(var n=0;n<e.data.errors.length;n++)d.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEdisposition",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}m.currentUser=c.getCurrentUser(),m.dispositions={count:0,rows:[]},m.selectedDispositions=[],m.crudPermissions,m.levels={first:"1st",second:"2nd",third:"3rd"},m.query={fields:"id,level,name,description,ParentId,createdAt,updatedAt",sort:"-updatedAt",limit:10,page:1},m.init=function(e,n){m.whatsappAccount=e||{},m.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},m.query.WhatsappAccountId=m.whatsappAccount.id,m.query.id=m.whatsappAccount.id,p()},m.deleteConfirm=function(e,n){var t=_.some(m.dispositions.rows,["ParentId",e.id]),a=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITION_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS."+(t?"DISPOSITION_DELETE_MESSAGE_CHILDREN":"DISPOSITION_DELETE_MESSAGE"),{name:e.name})).ariaLabel("Delete disposition").targetEvent(n).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(a).then(function(){g(e)})},m.success=u,m.getDispositions=p,m.createOrEditDisposition=function(e,n){i.show({controller:"CreateOrEditDispositionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/dispositions/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{disposition:n,model:{id:m.whatsappAccount.id,field:"WhatsappAccountId",route:"whatsappAccount"},license:null,setting:null,crudPermissions:m.crudPermissions}}).then(function(e){e&&p()})},m.deleteDisposition=g,m.exportSelectedDispositions=function(){var e=angular.copy(m.selectedDispositions);return m.selectedDispositions=[],e},m.deleteSelectedDispositions=function(e){var n=i.confirm().title(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_TITLE")).content(r.instant("TOOLS.NOTIFICATIONS.DISPOSITIONS_DELETE_MESSAGE",{total:m.selectedDispositions.length})).ariaLabel("Delete dispositions").targetEvent(e).ok("OK").cancel(r.instant("TOOLS.CANCEL"));i.show(n).then(function(){m.selectedDispositions.forEach(function(e){g(e)}),m.selectedDispositions=[]})},m.deselectDispositions=function(){m.selectedDispositions=[]},m.selectAllDispositions=function(){m.selectedDispositions=m.dispositions.rows};var v=!0,h=1;e.$watch("vm_dc.query.filter",function(e,n){v?o(function(){v=!1}):(n||(h=m.query.page),e!==n&&(m.query.page=1),e||(m.query.page=h),p())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","api","toasty","Auth"],angular.module("app.whatsapp").controller("WhatsappAccountDispositionsController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappAccounts=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappAccounts",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappAccounts=[],f.query={fields:"createdAt,updatedAt,id,name,key,ListId,remote,token,type,accountSid,authToken,phone,receiveUrl,deliveryReportUrl,notificationShake,notificationSound,notificationTemplate,queueTransfer,queueTransferTimeout,waitForTheAssignedAgent,mandatoryDisposition,mandatoryDispositionPauseId,agentTransfer,agentTransferTimeout,description,baseUrl",sort:"-updatedAt",limit:10,page:1},f.arraytype=_.keyBy([{option:"Twilio",value:"'twilio'"},{option:"Sinch",value:"'sinch'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,whatsappAccount:e,crudPermissions:f.crudPermissions})},f.interactionsgoto=function(e,n){t.go("app.whatsapp.whatsappAccounts.edit",{id:e.id,tab:5})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappAccountagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappAccount:e,whatsappAccounts:f.whatsappAccounts?f.whatsappAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappAccount")+"?").htmlContent("<b>"+(e.name||"whatsappAccount")+"</b> will be deleted.").ariaLabel("delete whatsappAccount").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getWhatsappAccounts=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappAccount.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappAccounts",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappAccount=function(e,n){i.show({controller:"CreateOrEditWhatsappAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappAccount:n,whatsappAccounts:f.whatsappAccounts.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteWhatsappAccount=y,f.exportSelectedWhatsappAccounts=function(){var e=angular.copy(f.selectedWhatsappAccounts);return f.selectedWhatsappAccounts=[],e},f.deleteSelectedWhatsappAccounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappAccounts?").htmlContent("<b>"+f.selectedWhatsappAccounts.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappAccounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappAccounts.forEach(function(e){y(e)}),f.selectedWhatsappAccounts=[]})},f.deselectWhatsappAccounts=function(){f.selectedWhatsappAccounts=[]},f.selectAllWhatsappAccounts=function(){f.selectedWhatsappAccounts=f.whatsappAccounts.rows},g.hasRole("admin")?m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_LISTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.cmList.get({fields:"id,name",sort:"name"}).$promise.then(function(e){f.lists=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:301}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.lists,{id:e.resourceId})}),t=null;if(f.whatsappAccount&&(t=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)})),t&&!_.some(n,["id",t.id])){var a=_.find(f.lists,{id:t.id});a.canSelect=!1,n.push(a)}f.lists=n})}else{var t=[],a=null;f.whatsappAccount&&(a=_.find(f.lists,{id:Number(f.whatsappAccount.ListId)}));for(var i=0;i<f.lists.length;i++)a&&f.lists[i].id===a.id&&(f.lists[i].canSelect=!1,t.push(f.lists[i]));f.lists=t}}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETlists",msg:e.data?JSON.stringify(e.data):e.toString()})}),g.hasRole("admin")?m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_PAUSES",msg:e.data?JSON.stringify(e.data):e.toString()})}):m.pause.get({fields:"name,id",sort:"name",nolimit:"true"}).$promise.then(function(e){f.pauses=e.rows||[]}).then(function(){return m.userProfileSection.get({userProfileId:f.currentUser.userProfileId,sectionId:1005}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n){if(!n.autoAssociation)return m.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(f.pauses,{id:e.resourceId})});f.pauses.forEach(function(e){_.some(n,["id",e.id])||(e.canSelect=!1),n.push(e)}),f.pauses=n})}else f.pauses=[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETpauses",msg:e.data?JSON.stringify(e.data):e.toString()})});var b=!0,A=1;function E(e){f.whatsappAccounts=e||{count:0,rows:[]}}function y(e){m.whatsappAccount.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappAccounts.rows,{id:e.id}),f.whatsappAccounts.count-=1,f.whatsappAccounts.rows.length||f.getWhatsappAccounts(),p.success({title:_.startCase("WhatsappAccount")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappAccount"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappAccounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappAccounts","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappAccountsController",e)}(),function(){"use strict";function e(t,a,e,n,i,s,o){var r=this;function l(e){t.hide(e)}r.currentUser=s.getCurrentUser(),r.errors=[],r.crudPermissions=o,r.hasModulePermissions={},r.title="WHATSAPP.EDIT_WHATSAPPQUEUE",r.whatsappQueue=angular.copy(n),r.whatsappQueues=e,r.newWhatsappQueue=!1,r.whatsappQueue||(r.whatsappQueue={strategy:"beepall",timeout:10},r.title="WHATSAPP.NEW_WHATSAPPQUEUE",r.newWhatsappQueue=!0),r.addNewWhatsappQueue=function(){r.errors=[],i.whatsappQueue.save(r.whatsappQueue).$promise.then(function(e){r.whatsappQueues.unshift(e.toJSON()),a.success({title:"WhatsappQueue properly created",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been created!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.save"}];for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.saveWhatsappQueue=function(){r.errors=[],i.whatsappQueue.update({id:r.whatsappQueue.id},r.whatsappQueue).$promise.then(function(e){var n=_.find(r.whatsappQueues,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"WhatsappQueue properly saved!",msg:r.whatsappQueue.name?r.whatsappQueue.name+" has been saved!":""}),l(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.update"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.deleteWhatsappQueue=function(e){r.errors=[];var n=t.confirm().title("Are you sure?").content("The whatsappQueue will be deleted.").ariaLabel("Delete WhatsappQueue").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){i.whatsappQueue.delete({id:r.whatsappQueue.id}).$promise.then(function(){_.remove(r.whatsappQueues,{id:r.whatsappQueue.id}),a.success({title:"WhatsappQueue properly deleted!",msg:(r.whatsappQueue.name||"whatsappQueue")+" has been deleted!"}),l(r.whatsappQueue)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){r.errors=e.data.errors||[{message:e.toString(),type:"api.whatsappQueue.delete"}];for(var n=0;n<e.data.errors.length;n++)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.whatsappQueue.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},r.closeDialog=l}e.$inject=["$mdDialog","toasty","whatsappQueues","whatsappQueue","api","Auth","crudPermissions"],angular.module("app.whatsapp").controller("CreateOrEditWhatsappQueueDialogController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r,l,d){var c=this;function m(){return a(function(t,n){return a(function(n,t){return s.user.get({fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return c.items=e.rows?e.rows:[],l.hasRole("admin")?e:c.section?c.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:c.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return c.allowedItems=_.map(n,function(e){return _.find(c.items,{id:l.hasRole("admin")||c.section.autoAssociation?e.id:e.resourceId})}),c.startingAllowedItems=angular.copy(c.allowedItems),c.items.forEach(function(e){var n=_.find(c.allowedItems,{id:e.id});l.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getAgents({id:c.whatsappQueue.id,fields:"id,name,internal,fullname",nolimit:!0,role:"agent"}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];c.selectedItems=_.map(n,function(e){var n=_.find(c.items,{id:e.id});return n.penalty=e.UserWhatsappQueue?"penalty "+e.UserWhatsappQueue.penalty:"",n.internal=e.hasOwnProperty("internal")?"<"+e.internal+">":"",n}),c.startingSelectedItems=angular.copy(c.selectedItems),c.dualMultiselectOptions.selectedItems=c.selectedItems,c.dualMultiselectOptions.items=_.differenceBy(c.allowedItems,c.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}c.currentUser=l.getCurrentUser(),c.whatsappQueue=n,c.crudPermissions=d,c.realtime=o,c.items=[],c.allowedItems=[],c.selectedItems=[],c.startingAllowedItems=[],c.startingSelectedItems=[],c.pendingChanges=!1,c.onInit=function(){return l.hasRole("admin")?m().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:c.currentUser.userProfileId,name:"Agents"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return c.section=e,m()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_AGENTS",msg:e.status?JSON.stringify(e.data):e.toString()})})},c.saveAgents=function(){var e=_.differenceBy(c.startingSelectedItems,c.selectedItems,"id"),n=_.differenceBy(c.selectedItems,c.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addAgents({id:c.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){c.pendingChanges=!1,c.startingAllowedItems=angular.copy(c.allowedItems),c.startingSelectedItems=angular.copy(c.selectedItems),i.success({title:"SUCCESS",msg:"Agents association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},c.closeDialog=function(){e.hide()},c.dualMultiselectOptions={items:[],selectedItems:[],orderBy:"name",line1:"fullname",line2:["name","internal"],line3:"",labelAll:r.instant("WHATSAPP.ALL_AGENTS"),labelSelected:r.instant("WHATSAPP.SELECTED_AGENTS"),transferCallback:function(e,n){var t=_.xorBy(c.startingSelectedItems,c.selectedItems,"id");c.pendingChanges=!_.isEmpty(t)}}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","whatsappQueues","realtime","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueagentaddController",e)}(),function(){"use strict";function e(e,a,i,s,n,t,o,r){var l=this;function d(){return a(function(t,n){return a(function(n,t){return s.team.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}).then(function(e){return l.items=e.rows?e.rows:[],o.hasRole("admin")?e:l.section?l.section.autoAssociation?e:a(function(n,t){return s.userProfileResource.get({sectionId:l.section.id,nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})}):null}).then(function(e){var n=e&&e.rows?e.rows:[];return l.allowedItems=_.map(n,function(e){return _.find(l.items,{id:o.hasRole("admin")||l.section.autoAssociation?e.id:e.resourceId})}),l.items.forEach(function(e){var n=_.find(l.allowedItems,{id:e.id});o.hasRole("admin")?e.isValid=!0:e.isValid=void 0!==n}),a(function(n,t){return s.whatsappQueue.getTeams({id:l.whatsappQueue.id,fields:"id,name",nolimit:!0}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}).then(function(e){var n=e&&e.rows?e.rows:[];l.selectedItems=_.map(n,function(e){var n=_.find(l.items,{id:e.id});return n.penalty=e.TeamVoiceQueue?"penalty "+e.TeamVoiceQueue.penalty:"",n}),l.startingSelectedItems=angular.copy(l.selectedItems),l.dualMultiselectOptions.selectedItems=l.selectedItems,l.dualMultiselectOptions.items=_.differenceBy(l.allowedItems,l.dualMultiselectOptions.selectedItems,"id"),t()}).catch(function(e){n(e)})})}l.currentUser=o.getCurrentUser(),l.whatsappQueue=n,l.crudPermissions=r,l.items=[],l.allowedItems=[],l.selectedItems=[],l.startingAllowedItems=[],l.startingSelectedItems=[],l.pendingChanges=!1,l.dualMultiselectOptions={allowedItems:[],selectedItems:[],orderBy:"name",line1:"name",line2:"",line3:"",labelAll:t.instant("WHATSAPP.ALL_TEAMS"),labelSelected:t.instant("WHATSAPP.SELECTED_TEAMS"),transferCallback:function(e,n){var t=_.xorBy(l.startingSelectedItems,l.selectedItems,"id");l.pendingChanges=!_.isEmpty(t)}},l.onInit=function(){return o.hasRole("admin")?d().catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})}):a(function(t,n){s.userProfileSection.get({userProfileId:l.currentUser.userProfileId,name:"Teams"}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;t(n)}).catch(function(e){n(e)})}).then(function(e){return l.section=e,d()}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_TEAMS",msg:e.status?JSON.stringify(e.data):e.toString()})})},l.saveTeams=function(){var e=_.differenceBy(l.startingSelectedItems,l.selectedItems,"id"),n=_.differenceBy(l.selectedItems,l.startingSelectedItems,"id");return(t=e,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.removeTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})})).then(function(){return t=n,a(function(e,n){_.isEmpty(t)?e():s.whatsappQueue.addTeams({id:l.whatsappQueue.id,ids:_.map(t,"id")}).$promise.then(function(){e()}).catch(function(e){n(e)})});var t}).then(function(){l.pendingChanges=!1,l.startingAllowedItems=angular.copy(l.allowedItems),l.startingSelectedItems=angular.copy(l.selectedItems),i.success({title:"SUCCESS",msg:"Teams association has been updated!"})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:LISTS_ASSOCIATION",msg:e.status?JSON.stringify(e.data):e.toString()})});var t},l.closeDialog=function(){e.hide()}}e.$inject=["$mdDialog","$q","toasty","api","whatsappQueue","$translate","Auth","crudPermissions"],angular.module("app.whatsapp").controller("WhatsappQueueteamaddController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m){var u=this;u.currentUser=d.getCurrentUser(),u.license=s,u.setting=o,u.passwordPattern=u.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",u.location=n.protocol()+"://"+n.host(),u.whatsappQueue=c||e.params.whatsappQueue||{},u.userProfileSection=m&&1==m.count?m.rows[0]:null,u.crudPermissions=d.parseCrudPermissions(u.userProfileSection?u.userProfileSection.crudPermissions:null),u.hasModulePermissions={},u.selectedTab=e.params.tab||0,u.teamadddialog=function(e,n){t.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions}})},u.agentadddialog=function(e,n){t.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(a.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:u.whatsappQueues?u.whatsappQueues.rows:[],crudPermissions:u.crudPermissions,realtime:!1}})},u.alert=l.info,u.gotoWhatsappQueues=function(){e.go("app.whatsapp.whatsappQueues",{},{reload:"app.whatsapp.whatsappQueues"})},u.saveWhatsappQueue=function(){r.whatsappQueue.update({id:u.whatsappQueue.id},u.whatsappQueue).$promise.then(function(){l.success({title:"WhatsappQueue updated!",msg:u.whatsappQueue.name?u.whatsappQueue.name+" has been updated!":""})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappQueue",msg:e.data?JSON.stringify(e.data):e.toString()})})}}e.$inject=["$state","$location","$mdDialog","$document","$translate","license","setting","api","toasty","Auth","whatsappQueue","userProfileSection"],angular.module("app.whatsapp").controller("WhatsappQueueController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.whatsappQueues=l||{count:0,rows:[]},f.userProfile=d,f.userProfileSection=c&&1==c.count?c.rows[0]:null,f.crudPermissions=g.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.table="whatsappQueues",f.listOrder="",f.listOrderAsc=null,f.selectedWhatsappQueues=[],f.query={fields:"createdAt,updatedAt,id,name,strategy,timeout,description",sort:"-updatedAt",channel:"whatsapp",limit:10,page:1},f.arraystrategy=_.keyBy([{option:"Beepall",value:"'beepall'"},{option:"RR Memory",value:"'rrmemory'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),f.editstate=function(e,n){t.go("app.whatsapp.whatsappQueues.edit",{id:e.id,whatsappQueue:e,crudPermissions:f.crudPermissions})},f.teamadddialog=function(e,n){i.show({controller:"WhatsappQueueteamaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions}})},f.agentadddialog=function(e,n){i.show({controller:"WhatsappQueueagentaddController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{whatsappQueue:e,whatsappQueues:f.whatsappQueues?f.whatsappQueues.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.deleteconfirm=function(e,n){var t=i.confirm().title("Are you sure want to delete the "+_.startCase("whatsappQueue")+"?").htmlContent("<b>"+(e.name||"whatsappQueue")+"</b> will be deleted.").ariaLabel("delete whatsappQueue").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.gotorealtimegoto=function(e,n){{if(!g.hasRole("admin"))return m.userProfileSection.get({userProfileId:g.getCurrentUser().userProfileId,sectionId:2110}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;n&&n.enabled?t.go("app.whatsapp.realtime.queues",{}):p.info({title:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:r.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})});t.go("app.whatsapp.realtime.queues",{})}},f.success=E,f.getWhatsappQueues=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.whatsappQueue.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="WhatsappQueues",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditWhatsappQueue=function(e,n){i.show({controller:"CreateOrEditWhatsappQueueDialogController",controllerAs:"vm",templateUrl:"app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{whatsappQueue:n,whatsappQueues:f.whatsappQueues.rows,crudPermissions:f.crudPermissions}})},f.deleteWhatsappQueue=y,f.exportSelectedWhatsappQueues=function(){var e=angular.copy(f.selectedWhatsappQueues);return f.selectedWhatsappQueues=[],e},f.deleteSelectedWhatsappQueues=function(e){var n=i.confirm().title("Are you sure want to delete the selected whatsappQueues?").htmlContent("<b>"+f.selectedWhatsappQueues.length+" selected</b> will be deleted.").ariaLabel("delete WhatsappQueues").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedWhatsappQueues.forEach(function(e){y(e)}),f.selectedWhatsappQueues=[]})},f.deselectWhatsappQueues=function(){f.selectedWhatsappQueues=[]},f.selectAllWhatsappQueues=function(){f.selectedWhatsappQueues=f.whatsappQueues.rows};var b=!0,A=1;function E(e){f.whatsappQueues=e||{count:0,rows:[]}}function y(e){m.whatsappQueue.delete({id:e.id}).$promise.then(function(){_.remove(f.whatsappQueues.rows,{id:e.id}),f.whatsappQueues.count-=1,f.whatsappQueues.rows.length||f.getWhatsappQueues(),p.success({title:_.startCase("WhatsappQueue")+" deleted!",msg:e.name?e.name+" has been deleted!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){f.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEwhatsappQueue"}];for(var n=0;n<e.data.errors.length;n++)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DELETEwhatsappQueue",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}e.$watch("vm.query.filter",function(e,n){b?o(function(){b=!1}):(n||(A=f.query.page),e!==n&&(f.query.page=1),e||(f.query.page=A),f.getWhatsappQueues())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","whatsappQueues","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.whatsapp").controller("WhatsappQueuesController",e)}(),function(){"use strict";function e(n,t,e,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.saveItem("apps.home.plugin_"+e,{id:e,title:n.name,translate:n.name,state:"plugin_"+n.id,stateParams:n,view:"plugin",icon:n.icon,weight:12,hidden:function(){return!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.plugin.get({active:!0}).$promise.then(function(e){var n=0;if(e.count){var t=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"agentOnly"!=e.sidebar});if(0<t.length){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.staff.users",{id:201,title:"Users",route:"user",translate:"STAFF.USERS",state:"app.staff.users",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.userProfiles",{id:205,title:"UserProfiles",route:"userProfile",translate:"STAFF.USERPROFILES",state:"app.staff.userProfiles",permissions:{hidden:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.globalCustomFields",{id:304,title:"GlobalCustomFields",route:"cmCustomField",translate:"CONTACTMANAGER.GLOBALCUSTOMFIELDS",state:"app.contactmanager.globalCustomFields",permissions:{association:!1},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceRecordings",{id:408,title:"VoiceRecordings",route:"voiceRecording",translate:"VOICE.VOICERECORDINGS",state:"app.voice.voiceRecordings",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.realtime",{id:411,title:"Realtime",route:"",translate:"VOICE.REALTIME",state:"app.voice.realtime",permissions:{association:!1,crud:!1},weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.realtime",{id:510,title:"Realtime",route:"",translate:"CHAT.REALTIME",state:"app.chat.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailSubtatuses",{id:603,title:"MailSubstatuses",route:"mailSubstatus",channel:"mail",translate:"MAIL.MAILSUBSTATUSES",state:"app.mail.mailSubtatuses",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.realtime",{id:610,title:"Realtime",route:"",translate:"MAIL.REALTIME",state:"app.mail.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.realtime",{id:710,title:"Realtime",route:"",translate:"SMS.REALTIME",state:"app.sms.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.realtime",{id:810,title:"Realtime",route:"",translate:"OPENCHANNEL.REALTIME",state:"app.openchannel.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.realtime",{id:910,title:"Realtime",route:"",translate:"FAX.REALTIME",state:"app.fax.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.squareRecordings",{id:1102,title:"SquareRecordings",route:"squareRecording",translate:"CALLYSQUARE.SQUARERECORDINGS",state:"app.callysquare.squareRecordings",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.extractedReports",{id:1202,title:"ExtractedReports",route:"analyticExtractedReport",translate:"ANALYTICS.EXTRACTEDREPORTS",state:"app.analytics.extractedReports",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zendeskAccounts",{id:1301,title:"ZendeskAccounts",route:"intZendeskAccount",translate:"INTEGRATIONS.ZENDESKACCOUNTS",state:"app.integrations.zendeskAccounts",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.salesforceAccounts",{id:1302,title:"SalesforceAccounts",route:"intSalesforceAccount",translate:"INTEGRATIONS.SALESFORCEACCOUNTS",state:"app.integrations.salesforceAccounts",permissions:{association:!1,loading:!0},weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshdeskAccounts",{id:1303,title:"FreshdeskAccounts",route:"intFreshdeskAccount",translate:"INTEGRATIONS.FRESHDESKACCOUNTS",state:"app.integrations.freshdeskAccounts",permissions:{association:!1,loading:!0},weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.sugarcrmAccounts",{id:1305,title:"SugarcrmAccounts",route:"intSugarcrmAccount",translate:"INTEGRATIONS.SUGARCRMACCOUNTS",state:"app.integrations.sugarcrmAccounts",permissions:{association:!1,loading:!0},weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.deskAccounts",{id:1306,title:"DeskAccounts",route:"intDeskAccount",translate:"INTEGRATIONS.DESKACCOUNTS",state:"app.integrations.deskAccounts",permissions:{association:!1,loading:!0},weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.zohoAccounts",{id:1307,title:"ZohoAccounts",route:"intZohoAccount",translate:"INTEGRATIONS.ZOHOACCOUNTS",state:"app.integrations.zohoAccounts",permissions:{association:!1,loading:!0},weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.vtigerAccounts",{id:1308,title:"VtigerAccounts",route:"intVtigerAccount",translate:"INTEGRATIONS.VTIGERACCOUNTS",state:"app.integrations.vtigerAccounts",permissions:{association:!1,loading:!0},weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.dynamics365Accounts",{id:1309,title:"Dynamics365Accounts",route:"intDynamics365Account",translate:"INTEGRATIONS.DYNAMICS365ACCOUNTS",state:"app.integrations.dynamics365Accounts",permissions:{association:!1,loading:!0},weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.servicenowAccounts",{id:1310,title:"ServicenowAccounts",route:"intServicenowAccount",translate:"INTEGRATIONS.SERVICENOWACCOUNTS",state:"app.integrations.servicenowAccounts",permissions:{association:!1,loading:!0},weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations.freshsalesAccounts",{id:1304,title:"FreshsalesAccounts",route:"intFreshsalesAccount",translate:"INTEGRATIONS.FRESHSALESACCOUNTS",state:"app.integrations.freshsalesAccounts",permissions:{association:!1,loading:!0},weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.realtime",{id:1510,title:"Realtime",route:"",translate:"MOTIONDIALER.REALTIME",state:"app.motiondialer.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.video.screenRecordings",{id:2001,title:"ScreenRecordings",route:"screenRecording",translate:"VIDEO.SCREENRECORDINGS",state:"app.video.screenRecordings",permissions:{association:!1,loading:!0},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.realtime",{id:2110,title:"Realtime",route:"",translate:"WHATSAPP.REALTIME",state:"app.whatsapp.realtime",permissions:{association:!1,crud:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.saveItem("apps.home.dashboard",{id:101,title:"Dashboard",translate:"DASHBOARDS.DASHBOARD",state:"dashboard",view:"dashboard",icon:"icon-tile-four",iconClass:"cyan-500-fg",weight:1,hidden:function(){return!r.hasPermission(101)}}),i.saveItem("apps.home.agentPresence",{id:115,title:"AgentPresence",translate:"DASHBOARDS.AGENT_PRESENCE",state:"agentPresence",view:"agentPresence",icon:"icon-webcam",iconClass:"xenialab-violet-light-fg",weight:2,hidden:function(){return!r.hasPermission(115)}}),i.saveItem("apps.home.contacts",{id:102,title:"Contacts",translate:"DASHBOARDS.CONTACTS",state:"contacts",view:"contacts",icon:"icon-account-circle",iconClass:"red-fg",weight:3,hidden:function(){return!l.cm||!r.hasPermission(102)}}),i.saveItem("apps.home.mycontacts",{id:103,title:"Contacts",translate:"DASHBOARDS.MYCONTACTS",state:"mycontacts",view:"mycontacts",icon:"icon-account-multiple",iconClass:"red-fg",weight:4,hidden:function(){return!l.cm||!r.hasPermission(103)}}),i.saveItem("apps.home.scheduled",{id:113,title:"Scheduled Calls",translate:"DASHBOARDS.SCHEDULED_CALLS",state:"scheduled",view:"scheduled",icon:"icon-calendar-clock",iconClass:"blue-grey-fg",weight:5,hidden:function(){return!l.dialer||!r.hasPermission(113)}}),i.saveItem("apps.home.voice",{id:110,title:"Voice",translate:"DASHBOARDS.VOICE",state:"voice",view:"voice",icon:"icon-phone",iconClass:"blue-A700-fg",weight:6,hidden:function(){return!l.voice||!r.hasPermission(110)}}),i.saveItem("apps.home.abandoned",{id:111,title:"Abandoned",translate:"DASHBOARDS.ABANDONED",state:"abandoned",view:"abandoned",icon:"icon-phone-missed",iconClass:"blue-fg",weight:7,hidden:function(){return!l.voice||!r.hasPermission(111)}}),i.saveItem("apps.home.recordings",{id:104,title:"Recordings",translate:"DASHBOARDS.RECORDINGS",state:"recordings",view:"recordings",icon:"icon-audiobook",iconClass:"indigo-A100-fg",weight:8,hidden:function(){return!l.voice||!r.hasPermission(104)}}),i.saveItem("apps.home.chat",{id:105,title:"Chat",translate:"DASHBOARDS.CHAT",state:"chat",view:"chat",icon:"icon-hangouts",iconClass:"green-A700-fg",weight:9,hidden:function(){return!l.chat||!r.hasPermission(105)}}),i.saveItem("apps.home.mail",{id:106,title:"Mail",translate:"DASHBOARDS.MAIL",state:"mail",view:"mail",icon:"icon-email",iconClass:"teal-fg",weight:10,hidden:function(){return!l.mail||!r.hasPermission(106)}}),i.saveItem("apps.home.sms",{id:107,title:"Sms",translate:"DASHBOARDS.SMS",state:"sms",view:"sms",icon:"icon-message-text",iconClass:"orange-fg",weight:11,hidden:function(){return!l.messaging||!r.hasPermission(107)}}),i.saveItem("apps.home.openchannel",{id:108,title:"Openchannel",translate:"DASHBOARDS.OPENCHANNEL",state:"openchannel",view:"openchannel",icon:"icon-google-earth",iconClass:"amber-fg",weight:12,hidden:function(){return!l.openchannel||!r.hasPermission(108)}}),i.saveItem("apps.home.fax",{id:109,title:"Fax",translate:"DASHBOARDS.FAX",state:"fax",view:"fax",icon:"icon-deskphone",iconClass:"blue-grey-A200-fg",weight:13,hidden:function(){return!l.fax||!r.hasPermission(109)}}),i.saveItem("apps.home.whatsapp",{id:114,title:"Whatsapp",translate:"DASHBOARDS.WHATSAPP",state:"whatsapp",view:"whatsapp",icon:"icon-whatsapp",iconClass:"lime-A700-fg",weight:14,hidden:function(){return!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],angular.module("motion").controller("MainController",e)}(),function(){"use strict";function e(e,n,t,a,o,r){var i=this;function s(e){if(e&&e.id){var n=99999+e.id;o.saveItem("apps.dashboards.custom_"+n,{id:n,title:e.name||"NONAME",state:"app.dashboards.custom",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}})}}function l(e){if(e&&e.id&&"never"!=e.sidebar)if(e.active){if("always"==e.sidebar||"adminOnly"==e.sidebar){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1900)&&!r.hasRole("admin")}});var n=88888+e.id;o.saveItem("apps.plugins.plugin_"+n,{id:n,title:e.name||"NONAME",state:"app.plugins.plugin",stateParams:e,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(n)&&!r.hasRole("admin")}}),o.sort()}}else{n=88888+e.id;t=1900,a=n,i=o.getNavigation(),(s=_.find(i[0].children,{id:t}))&&_.some(s.children,{id:a})&&("always"==e.sidebar||"adminOnly"==e.sidebar)&&(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}var t,a,i,s}function d(e){var n=o.getNavigation(),t=_.find(n[0].children,{id:e});return!!(t&&0<t.children.length)}i.bodyEl=angular.element("body"),i.setting=t,i.$onInit=function(){i.folded="true"===n.get("motion.folded")||!1},i.toggleMsNavigationFolded=function(){i.folded=!i.folded,n.put("motion.folded",i.folded)},i.getLogo=function(){return i.setting.defaultHeaderWhiteLabel?"xCALLY Motion":i.setting.headerWhiteLabel},a.on("dashboard:save",s),a.on("dashboard:update",s),a.on("dashboard:remove",function(e){if(e&&e.id){var n=99999+e.id;o.deleteItem("apps.dashboards.custom_"+n)}}),a.on("plugin:save",l),a.on("plugin:update",l),a.on("plugin:remove",function(e){if(e&&e.id&&"never"!=e.sidebar){var n=88888+e.id;"always"!=e.sidebar&&"adminOnly"!=e.sidebar||(o.deleteItem("apps.plugins.plugin_"+n),d(1900)||o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",weight:17,hidden:function(){return!0}}))}}),e.$on("$stateChangeSuccess",function(){i.bodyEl.removeClass("ms-navigation-horizontal-mobile-menu-active")})}e.$inject=["$scope","$cookies","setting","socket","msNavigationService","Auth"],angular.module("app.navigation").controller("NavigationController",e)}(),function(){"use strict";function e(e,a,i,n,t,s,o,r){var l=this;function d(t){o.isSupported()?o.requestPermission().then(function(){var e,n;n={autoClose:!0,duration:10,showOnPageHidden:!0,icon:"api/users/"+(e=t).FromId+"/avatar",body:e.body||"",focusOnclick:!0,closeOnClick:!0},o.show(a.instant("QUICKPANEL.NEW_INTERNAL_MESSAGE"),n)},function(e){console.error("Please enable browser notifications!",e)}):console.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}l.date=moment().format(),l.currentUser=n.getCurrentUser(),l.license=r,l.unreadTotalMessages=0,l.unreadTotalGroupMessages=0,l.userIsNotPhonebar=function(){return"admin"===l.currentUser.role||"user"===l.currentUser.role||"agent"===l.currentUser.role&&0!==l.currentUser.showWebBar},l.onMessageSave=function(e){e.ToId===l.currentUser.id&&e.FromId!==l.currentUser.id&&!e.read&&e.ChatGroupId&&(l.unreadTotalGroupMessages++,d(e));e.ToId!==l.currentUser.id||e.ChatGroupId||(l.unreadTotalMessages+=1,d(e))},l.onMessageUpdate=function(e){e.ToId===l.currentUser.id&&e.read&&0<l.unreadTotalMessages&&!e.ChatGroupId&&(l.unreadTotalMessages-=1);e.ToId==l.currentUser.id&&e.FromId!==l.currentUser.id&&e.ChatGroupId&&e.read&&0<l.unreadTotalGroupMessages&&l.unreadTotalGroupMessages--},t.on("chatInternalMessage:save",l.onMessageSave),t.on("chatInternalMessage:update",l.onMessageUpdate),s.chatInternalMessage.get({fields:"FromId",ToId:l.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){return e&&e.count&&(l.unreadTotalMessages=e.count),s.user.getGroups({id:l.currentUser.id}).$promise}).then(function(e){for(var n=[],t=e.rows,a=0;a<t.length;a++)n.push(s.chatGroup.getUnread({id:t[a].id}).$promise);return i.all(n)}).then(function(e){for(var n=0;n<e.length;n++)l.unreadTotalGroupMessages+=e[n].count}).catch(function(e){console.error(e)}),e.$on("$destroy",function(){t.removeAllListeners("chatInternalMessage:save"),t.removeAllListeners("chatInternalMessage:update")})}e.$inject=["$scope","$translate","$q","Auth","socket","api","desktopNotification","license"],angular.module("app.quick-panel").controller("QuickPanelController",e)}(),function(){"use strict";function e(n,e,t,a,i,s,o,r,l,d,c){var m=this;function u(){if(!m.hasMoreMessages||m.isLoading)return t.resolve();m.user.messages.length;return function(){m.isLoading=!0;var e={sort:"-createdAt",FromId:m.currentUser.id+","+m.user.id,ToId:m.currentUser.id+","+m.user.id,ChatGroupId:"null",limit:50,offset:m.user.messages.length};return r.chatInternalMessage.get(e).$promise.then(function(e){m.user.messages=m.user.messages.concat(e.rows),m.hasMoreMessages=e.count>m.user.messages.length;for(var n=0;n<m.user.messages.length;n+=1)!1===m.user.messages[n].read&&m.user.messages[n].ToId===m.currentUser.id&&r.chatInternalMessage.update({id:m.user.messages[n].id,read:!0})}).finally(function(){m.isLoading=!1})}()}function p(e){var n=angular.element("#chat-dialog");s(function(){n.animate({scrollTop:0},e)},0)}function g(e){return _.isNil(e)?"":e.replace(/[^\w.+#*\-]+/g,"")}function v(e){return n.get(e).success(function(){c.success({title:"Successful call",msg:"Call properly handled!"})}).error(function(){c.error({title:"PhoneBar API Error",msg:o.instant("CONTACTMANAGER.ERRORS.PHONEBAR_API")})})}m.currentUser=l.getCurrentUser(),m.user=void 0,m.users={count:0,rows:[]},m.standardDate=moment(0).format("YYYY-MM-DD HH:mm:ss"),m.unreadMessages={},m.replyMessage="",m.disabled=!1,m.defaultAvatar="assets/images/avatars/profile.png",m.init=function(e){m.license=e,t.all([r.chatInternalMessage.get({fields:"FromId",ToId:m.currentUser.id,read:!1,nolimit:!0,ChatGroupId:"null"}).$promise.then(function(e){m.unreadMessages=_.countBy(e.rows,"FromId")}).catch(function(e){throw e}),r.chatInternalMessage.getUsers().$promise.then(function(e){m.users=e}).catch(function(e){throw e})]).catch(function(e){c.error({msg:e.data?e.data.message:e.message||e})})},m.reply=function(){if(m.disabled=!0,""===m.replyMessage)return void(m.disabled=!1);var e={FromId:m.currentUser.id,ToId:m.user.id,body:m.replyMessage,read:!1};m.replyMessage="",r.chatInternalMessage.save(e).$promise.then(function(e){m.user.messages.unshift(e),m.user.lastMessageAt=e.createdAt,m.user.lastMessage=e}).finally(function(){p(400),m.disabled=!1})},m.webcall=function(e){a.$broadcast("webrtc::call",{target:g(e)})},m.call=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/originate/"+g(e))},m.transfer=function(e){return v("http://127.0.0.1:"+(m.user.phoneBarRemoteControlPort||"9888")+"/api/transfer?number="+g(e))},m.openChat=function(e){return m.user=angular.copy(e),m.isMessengerAllowed=!1,"agent"!==m.user.role||m.user.allowmessenger?(p(0),m.isMessengerAllowed=!0,m.hasMoreMessages=!0,u()):void c.warning({title:o.instant("QUICKPANEL.WARNING"),msg:o.instant("QUICKPANEL.MESSENGER_DISABLED")})},m.closeChat=function(){m.user=void 0,m.hasMoreMessages=!0},m.scrollToTopOfChat=p,d.on("chatInternalMessage:save",function(e){if(e.ToId===m.currentUser.id&&!e.ChatGroupId){m.user&&m.user.id===e.FromId?(m.user.messages.unshift(e),p(0),r.chatInternalMessage.update({id:e.id,read:!0})):m.unreadMessages[e.FromId]=m.unreadMessages[e.FromId]?m.unreadMessages[e.FromId]+1:1;var n=_.find(m.users.rows,{id:e.FromId});n&&(n.lastMessageAt=e.createdAt,n.lastMessage=e)}}),d.on("chatInternalMessage:update",function(e){if((e.FromId===m.currentUser.id||e.ToId===m.currentUser.id)&&!e.ChatGroupId){if(m.user){var n=_.find(m.user.messages,{id:e.id});n&&_.merge(n,e)}var t=_.find(m.users.rows,{id:m.currentUser.id===e.FromId?e.ToId:e.FromId});t&&t.lastMessage&&_.merge(t.lastMessage,e),e.ToId===m.currentUser.id&&e.read&&0<m.unreadMessages[e.FromId]&&(m.unreadMessages[e.FromId]-=1)}}),d.on("user:update",function(e){var n=_.find(m.users.rows,{id:e.id});n&&(_.isNil(e.online)||n.online===e.online||(n.online=e.online),_.isNil(e.allowmessenger)||n.allowmessenger===e.allowmessenger||(n.allowmessenger=e.allowmessenger))}),e("quick-panel").onClose(function(){m.user=void 0}),m.loadMoreMessages=u,m.timelineOptions={scrollEl:"#chat-dialog"},i.$on("$destroy",function(){d.removeAllListeners("chatInternalMessage:save"),d.removeAllListeners("chatInternalMessage:update"),d.removeAllListeners("user:update")})}e.$inject=["$http","$mdSidenav","$q","$rootScope","$scope","$timeout","$translate","api","Auth","socket","toasty"],angular.module("app.quick-panel").controller("ChatInternalController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l){var d=this;function c(e){a.hide(e)}d.errors=[],d.title="QUICKPANEL.EDIT_CHATGROUP",d.group=angular.copy(r),d.currentUser=o.getCurrentUser(),d.members=l,d.newChatGroup=!0,d.group||(d.group={write:!0,members:[]},d.title="QUICKPANEL.NEW_CHATGROUP"),d.saveChatGroup=function(){var t;return d.errors=[],s.chatGroup.save({name:d.group.name,write:d.group.write}).$promise.then(function(e){var n=_.map(d.group.members,"id");return n.unshift(d.currentUser.id),t=e,s.chatGroup.addMembers({id:t.id,ids:n}).$promise}).then(function(){i.success({title:"Group properly saved!",msg:t.name+" has been saved!"}),c(t)}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatQueue.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},d.closeDialog=c,d.querySearch=function(e){return e?d.members.rows.filter((n=e,t=angular.lowercase(n),function(e){var n=e.name.toLowerCase();return-1!=n.indexOf(t)})):[];var n,t}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","group","members"],angular.module("app.quick-panel").controller("CreateOrEditChatGroupDialogController",e)}(),function(){"use strict";function e(e,t,a,s,n,o,i,r,l,d){var c=this;function m(){delete c.group}function u(e){var n=angular.element("#chat-group-dialog");a(function(){n.animate({scrollTop:n[0].scrollHeight},e)},0)}c.currentUser=i.getCurrentUser(),c.unreadGroupMessages={},c.groups={},c.participants,c.group,c.init=function(e){return c.license=e,r.user.getGroups({id:c.currentUser.id}).$promise.then(function(e){for(var n=0,t=[];n<e.rows.length;n++)e.rows[n].unreadGroupMessages=0,c.groups[e.rows[n].id]=e.rows[n],t.push(r.chatGroup.getUnread({id:e.rows[n].id}).$promise);return o.all(t)}).then(function(e){for(var n=0;n<e.length;n++)c.groups[e[n].id].unreadGroupMessages+=e[n].count}).catch(function(e){console.error(e)})},c.back=m,c.addGroup=function(e,n){s.show({controller:"CreateOrEditChatGroupDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{group:e,me:c.currentUser,license:null,setting:null},resolve:{members:function(){return i.hasRole("admin")?r.user.get({role:"agent"}).$promise:r.userProfile.getResources({id:i.getCurrentUser().userProfileId,section:"Agents",role:"agent"}).$promise}}}).then(function(e){e&&(c.groups[e.id]=e)}).catch(function(e){e&&console.error(e.message)})},c.deleteGroup=function(e,n){var t=s.confirm().title("Are you sure want to delete the selected group?").htmlContent("Group <b>"+e.name+"</b> will be deleted.").ariaLabel("delete Group").targetEvent(n).ok("OK").cancel("CANCEL");s.show(t).then(function(){return r.chatGroup.delete({id:e.id}).$promise}).then(function(){delete c.groups[e.id],d.success({title:"Group properly deleted!",msg:e.name+" has been deleted!"})}).catch(function(e){e&&d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.chatGroup.delete",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},c.groupsToArray=function(){return _.values(c.groups)},c.showMessageInfo=function(e,i){s.show({controller:"ShowMessageInfoDialogController",controllerAs:"vm",templateUrl:"app/quick-panel/tabs/groups/info/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{message:i},resolve:{data:function(){var a={messages:[]};return r.chatInternalMessage.get({ChatInternalMessageId:i.id}).$promise.then(function(e){var n=[];a.messages=e.rows,a.messages.unshift(i);for(var t=0;t<a.messages.length;t++)n.push(r.user.get({id:a.messages[t].ToId,fields:"id,name,fullname,userpic"}).$promise);return o.all(n)}).then(function(e){return a.users=e,a}).catch(function(e){e&&console.error(e)})}}}).then(function(){}).catch(function(e){e&&console.error(e.message)})},c.toggleChat=function(n){c.group={id:n.id,write:n.write,messages:{}},r.chatGroup.getMembers({id:n.id,fields:"id,name,fullname"}).$promise.then(function(e){return c.group.membersByKeys=_.keyBy(e.rows,"id"),c.group.members=_.differenceBy(e.rows,[{id:c.currentUser.id}],"id"),c.participants=_.map(c.group.members,"fullname").join(", "),r.chatGroup.getMessages({id:n.id,nolimit:!0}).$promise}).then(function(e){for(var n,t=0,a=[];t<e.count;t++)e.rows[t].ToId===c.currentUser.id&&(n=e.rows[t],c.group.messages[n.id]=n,e.rows[t].ToId!=c.currentUser.id||e.rows[t].FromId===c.currentUser.id||n.read||a.push(r.chatInternalMessage.update({id:n.id,read:!0})));return o.all(a)}).then(function(){u(400)}).catch(function(e){console.error(e.message)})},c.reply=function(){if(!c.replyMessage)return;var t={id:c.group.id,FromId:c.currentUser.id,ToId:c.currentUser.id,body:c.replyMessage,read:!0},a=[];c.replyMessage="",r.chatGroup.addMessage(t).$promise.then(function(e){t.read=!1,t.ChatInternalMessageId=e.id;for(var n=0;n<c.group.members.length;n++)c.group.members[n].id!==c.currentUser.id&&(t.ToId=c.group.members[n].id,a.push(r.chatGroup.addMessage(angular.copy(t)).$promise));return o.all(a)}).catch(function(e){console.log(e)})},l.on("chatInternalMessage:save",function(n){if(!c.group&&n.ToId===c.currentUser.id&&n.FromId!==c.currentUser.id&&!n.read&&n.ChatGroupId){var e=c.groups[n.ChatGroupId];if(!e)return r.chatGroup.get({id:n.ChatGroupId}).$promise.then(function(e){e.unreadGroupMessages=1,c.groups[e.id]=e});e.unreadGroupMessages||(e.unreadGroupMessages=0),e.unreadGroupMessages++}c.group&&n.ChatGroupId===c.group.id&&n.ToId===c.currentUser.id&&r.chatInternalMessage.update({id:n.id,read:!0}).$promise.then(function(){var e;e=n,c.group.messages[e.id]=e,u(400)})}),l.on("chatInternalMessage:update",function(e){e.ToId==c.currentUser.id&&e.FromId!==c.currentUser.id&&e.ChatGroupId&&e.read&&(0<c.groups[e.ChatGroupId].unreadGroupMessages&&c.groups[e.ChatGroupId].unreadGroupMessages--,c.group.messages[e.id]&&(c.group.messages[e.id].read=!0))}),l.on("chatGroup:remove",function(e){c.groups[e.id]&&delete c.groups[e.id]}),n("quick-panel").onClose(m),e.$on("$destroy",function(){l.removeAllListeners("chatInternalMessage:save"),l.removeAllListeners("chatInternalMessage:update"),l.removeAllListeners("chatGroup:remove")})}e.$inject=["$scope","$document","$timeout","$mdDialog","$mdSidenav","$q","Auth","api","socket","toasty"],angular.module("app.quick-panel").controller("ChatGroupController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r){this.data=r,this.title="QUICKPANEL.INFO",this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","Auth","data"],angular.module("app.quick-panel").controller("ShowMessageInfoDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i,s){var o=this;o.form={token:s.token},o.setting={},o.resetPassword=function(){return i.auth.reset(o.form).$promise.then(function(){n.success({title:t.instant("RESETPASSWORD.PASSWORD_RESET"),msg:t.instant("RESETPASSWORD.PASSWORD_RESET_MESSAGE")}),a.go("app.login")}).catch(function(e){e&&n.error({title:t.instant("RESETPASSWORD.PASSWORD_RESET_ERROR"),msg:e.data?e.data.message||e.message||e:e.message||e})})},o.onInit=function(){e.isLoggedIn()&&a.go("app.dashboards.general");return i.setting.gdpr({id:1}).$promise.then(function(e){o.setting=e,o.passwordPattern=o.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:""}).catch(function(e){e&&n.error({title:"Error",msg:e.data?e.data.message||e.message||e:e.message||e})})}}e.$inject=["Auth","toasty","$translate","$state","api","$stateParams"],angular.module("app.reset").controller("ResetPasswordController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",e)}(),function(){"use strict";function e(t,e,n,a,i,s,o){var r=this;function l(){e.hide()}r.errors=[],r.user=i,r.setting=s,r.reset=o,r.passwordPattern=r.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",r.savePassword=function(){r.errors=[],a.user.changePassword({id:r.user.id},{oldPassword:r.oldPassword,newPassword:r.password}).$promise.then(function(){n.show(n.simple().textContent("Your password properly updated").position("top right").hideDelay(5e3)),l()}).catch(function(e){console.error(e),r.errors=e.data.errors&&e.data.errors.length?e.data.errors:[{message:e.data.message||"Authorization error",type:"api.user.changePassword"}]})},r.closeDialog=l,t.$watch("vm.password",function(e,n){_.isNil(r.oldPassword)||(e===r.oldPassword?t.changePasswordForm.password.$setValidity("oldPasswordMatch",!1):t.changePasswordForm.password.$setValidity("oldPasswordMatch",!0))})}e.$inject=["$scope","$mdDialog","$mdToast","api","user","setting","reset"],angular.module("app.toolbar").controller("ChangePasswordController",e)}(),function(){"use strict";function e(e,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length)for(var n=0;n<e.data.errors.length;n+=1)a.error({title:e.data.errors[n].type,msg:e.data.errors[n].message});else a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(n,t,s,a,o,e,i,r,l,d,c,m,u,p,g,v,h,f,b,A,E,y,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.userStatusOptions=[{title:"Online",icon:"icon-checkbox-marked-circle",color:"#4CAF50"},{title:"Away",icon:"icon-clock",color:"#FFC107"},{title:"Do not Disturb",icon:"icon-minus-circle",color:"#F44336"},{title:"Invisible",icon:"icon-checkbox-blank-circle-outline",color:"#BDBDBD"},{title:"Offline",icon:"icon-checkbox-blank-circle-outline",color:"#616161"}],I.languages={ar:{title:"Arabic",translation:"TOOLBAR.ARABIC",code:"ar",flag:"ar"},cs:{title:"Czech",translation:"TOOLBAR.CZECH",code:"cs",flag:"cs"},da:{title:"Danish",translation:"TOOLBAR.DANISH",code:"da",flag:"da"},de:{title:"German",translation:"TOOLBAR.GERMAN",code:"de",flag:"de"},en:{title:"English",translation:"TOOLBAR.ENGLISH",code:"en",flag:"us"},es:{title:"Spanish",translation:"TOOLBAR.SPANISH",code:"es",flag:"es"},et:{title:"Estonian",translation:"TOOLBAR.ESTONIAN",code:"et",flag:"et"},fa:{title:"Persian",translation:"TOOLBAR.PERSIAN",code:"fa",flag:"fa"},fi:{title:"Finnish",translation:"TOOLBAR.FINNISH",code:"fi",flag:"fi"},fr:{title:"French",translation:"TOOLBAR.FRENCH",code:"fr",flag:"fr"},he:{title:"Hebrew",translation:"TOOLBAR.HEBREW",code:"he",flag:"he"},hi:{title:"Hindi",translation:"TOOLBAR.HINDI",code:"hi",flag:"hi"},hu:{title:"Hungarian",translation:"TOOLBAR.HUNGARIAN",code:"hu",flag:"hu"},id:{title:"Indonesian",translation:"TOOLBAR.INDONESIAN",code:"id",flag:"id"},it:{title:"Italian",translation:"TOOLBAR.ITALIAN",code:"it",flag:"it"},ja:{title:"Japanese",translation:"TOOLBAR.JAPANESE",code:"ja",flag:"ja"},ko:{title:"Korean",translation:"TOOLBAR.KOREAN",code:"ko",flag:"ko"},lv:{title:"Latvian",translation:"TOOLBAR.LATVIAN",code:"lv",flag:"lv"},nl:{title:"Dutch",translation:"TOOLBAR.DUTCH",code:"nl",flag:"nl"},no:{title:"Norwegian",translation:"TOOLBAR.NORWEGIAN",code:"no",flag:"no"},pl:{title:"Polish",translation:"TOOLBAR.POLISH",code:"pl",flag:"pl"},"pt-BR":{title:"Brazilian",translation:"TOOLBAR.BRAZILIAN",code:"pt-BR",flag:"pt-BR"},"pt-PT":{title:"Portuguese",translation:"TOOLBAR.PORTUGUESE",code:"pt-PT",flag:"pt-PT"},ru:{title:"Russian",translation:"TOOLBAR.RUSSIAN",code:"ru",flag:"ru"},sv:{title:"Swedish",translation:"TOOLBAR.SWEDISH",code:"sv",flag:"sv"},tr:{title:"Turkish",translation:"TOOLBAR.TURKISH",code:"tr",flag:"tr"},"zh-CN":{title:"ChineseSimplified",translation:"TOOLBAR.CHINESESIMPLIFIED",code:"zh-CN",flag:"zh-CN"},"zh-TW":{title:"ChineseTraditional",translation:"TOOLBAR.CHINESETRADITIONAL",code:"zh-TW",flag:"zh-TW"}},I.isWebRTCBarRegistered=!1;var O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(e,n){c.show({controller:"ChangePasswordController",controllerAs:"vm",templateUrl:"app/toolbar/changepassword/changepassword.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!n,escapeToClose:!n,locals:{user:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(!0)}).then(function(){t.$broadcast("webrtc::logout"),c.show(c.alert().parent(angular.element(m.body)).clickOutsideToClose(!1).escapeToClose(!1).title(r.instant("TOOLBAR.WARNING")).textContent(r.instant("TOOLBAR.USER_FORCE_LOGOUT",{ip:e.ip})).ok("OK")).then(function(){return a.go("app.login")})}).catch(function(e){C.error(e)})}function U(e){var n=e;if(I.currentUser.id===n.recipient){var t=r.instant("TOOLBAR.NOTIFICATION_TITLE",{sender:n.sender}),a=n.description?r.instant("TOOLBAR.NOTIFICATION_TITLE_RECIPIENT",{recipient:n.description}):null;p.wait({title:a?t+" "+a:t,msg:n.content,clickToClose:!1,timeout:!1,sound:n.beep,html:!0})}}function F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.languages.hasOwnProperty(e.code)){return void l.show({template:'<md-toast id="language-message" layout="column" layout-align="center start"><div class="md-toast-content">Motion supports multiple translations through angular-translate module, but currently we do not support the selected language. If you want to help us, send us a message.</div></md-toast>',hideDelay:7e3,position:"top right",parent:"#content"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.indexOf(e.code)?p.info({title:r.instant("TOOLBAR.CHANGE_LANGUAGE_TITLE"),msg:r.instant("TOOLBAR.CHANGE_LANGUAGE_MESSAGE")}):n.$parent.$parent.vm.direction="ltr"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.search=function(n){for(var e=[],t=g.getFlatNavigation(),a=s.defer(),i=0;i<t.length;i++)t[i].uisref&&e.push(t[i]);n&&(e=e.filter(function(e){if(-1<angular.lowercase(e.title).search(angular.lowercase(n)))return!0}));return o(function(){a.resolve(e)},1e3),a.promise},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=c.confirm({title:r.instant("TOOLBAR.WARNING")+"!",htmlContent:"<span>"+r.instant("TOOLBAR.SOMEONE_LOGGED_YOU_OUT")+"</span><br><span>"+r.instant("TOOLBAR.SESSION_TIMEOUT")+"</span>",ariaLabel:r.instant("TOOLBAR.WARNING")+"!",ok:r.instant("TOOLBAR.STAY_LOGGED"),cancel:r.instant("TOOLBAR.LOGOUT"),onComplete:function(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(I.isWebRTCBarRegistered&&2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.currentUser.privacyEnabled?y.mask(e.calleridnum):e.calleridnum;p.info({title:"WebRTC Popup",msg:"<div>            <span>Call from: "+n+"</span><br>            <span>Queue: "+e.queue+"</span><br>            <span>Extra: "+(e.variables.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.user.id,type:n}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:PAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.unpause=function(){return f.user.unpause({id:I.user.id}).$promise.catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:UNPAUSEUSER",msg:e.status?JSON.stringify(e.data):e.toString()})})},I.preview=function(n){return I.disable=!0,f.cmHopper.getPreview().$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?p.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"}):D(e,!1,n)}).catch(function(e){if(404===e.status)p.info({title:"PREVIEW",msg:"CONTACT NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){I.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)p.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(P()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.pauses=e.rows?e.rows:[]}).catch(function(e){p.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETPAUSES",msg:e.status?JSON.stringify(e.data):e.toString()})}),"LOCAL_LOGIN"==v.getAuthenticationType()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(null,!0):moment().add(15,"day").isAfter(n)&&p.warning({title:r.instant("TOOLBAR.WARNING")+"!",msg:r.instant("TOOLBAR.PASSWORD_EXPIRE_REMAINING_DAYS")+": "+Math.ceil(n.diff(moment(),"days",!0)),timeout:2e4})}else k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.unreadTotalMessages=e.rows.length}),n.$on("$destroy",function(){h.removeAllListeners("user:called"),h.removeAllListeners("user:update"),h.removeAllListeners("chatInternalMessage:save"),h.removeAllListeners("chatInternalMessage:update"),h.removeAllListeners("userVoiceQueue:save"),h.removeAllListeners("voiceQueue:save"),h.removeAllListeners("userVoiceQueue:remove"),h.removeAllListeners("voiceQueue:remove"),h.removeAllListeners("voiceQueue:update"),h.removeAllListeners("user:forcelogout"),h.removeAllListeners("userNotification:send"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=null)})}e.$inject=["$scope","$rootScope","$q","$state","$timeout","$location","$mdSidenav","$translate","$mdToast","$window","$mdDialog","$document","$cookies","toasty","msNavigationService","Auth","socket","api","license","setting","$interval","privacyManager","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",e)}();var urlParams=function(e){var n=new Object,t=e.lastIndexOf("?");if(0<t)for(var a=e.substring(t+1).split("&"),i=0;i<a.length;i++)0<(t=a[i].indexOf("="))&&(n[a[i].substring(0,t)]=a[i].substring(t+1));return n}(window.location.href),t0=new Date,MAX_REQUEST_SIZE=10485760,MAX_WIDTH=12e3,MAX_HEIGHT=12e3,EXPORT_URL="http://exp.draw.io/ImageExport2/export",SHARE_HOST="http://localhost:3000",SAVE_URL="api/square/projects/",VARIABLE_URL="/api/variables",STENCIL_PATH="/assets/plugins/square/stencils",SHAPES_PATH="/assets/plugins/square/shapes",IMAGE_PATH="/assets/plugins/square/images",STYLE_PATH="/assets/plugins/square/styles",CSS_PATH="/assets/plugins/square/styles",OPEN_FORM="api/square/projects/open",TEMPLATE_PATH="/assets/plugins/square/templates",RESOURCES_PATH="/assets/plugins/square/resources",RESOURCE_BASE=RESOURCES_PATH+"/grapheditor",CRUD_PERMISSIONS={readOnly:!1,canEdit:!1,canDelete:!1},tapAndHoldStartsConnection=!0,showConnectorImg=!0,mxLoadResources=!1,mxLanguages=["it","fr","ko","es","sv","ru","de","ja","zh-CN","zh-TW","nl","fi","da","pt-BR","pt-PT","no","hi","tr","fa"],mxLanguage="en",match=document.cookie.match(new RegExp("(^| )motion.language=([^;]+)"));match&&mxLanguages.includes(match[2])&&(mxLanguage=match[2]);var mxBasePath="assets/plugins/mxgraph",mxClient={VERSION:"2.0.0.0",IS_IE:0<=navigator.userAgent.indexOf("MSIE"),IS_IE6:0<=navigator.userAgent.indexOf("MSIE 6"),IS_QUIRKS:0<=navigator.userAgent.indexOf("MSIE")&&(null==document.documentMode||5==document.documentMode),VML_PREFIX:"v",OFFICE_PREFIX:"o",IS_NS:0<=navigator.userAgent.indexOf("Mozilla/")&&navigator.userAgent.indexOf("MSIE")<0,IS_OP:0<=navigator.userAgent.indexOf("Opera/"),IS_OT:navigator.userAgent.indexOf("Presto/2.4.")<0&&navigator.userAgent.indexOf("Presto/2.3.")<0&&navigator.userAgent.indexOf("Presto/2.2.")<0&&navigator.userAgent.indexOf("Presto/2.1.")<0&&navigator.userAgent.indexOf("Presto/2.0.")<0&&navigator.userAgent.indexOf("Presto/1.")<0,IS_SF:0<=navigator.userAgent.indexOf("AppleWebKit/")&&navigator.userAgent.indexOf("Chrome/")<0,IS_GC:0<=navigator.userAgent.indexOf("Chrome/"),IS_MT:0<=navigator.userAgent.indexOf("Firefox/")&&navigator.userAgent.indexOf("Firefox/1.")<0&&navigator.userAgent.indexOf("Firefox/2.")<0||0<=navigator.userAgent.indexOf("Iceweasel/")&&navigator.userAgent.indexOf("Iceweasel/1.")<0&&navigator.userAgent.indexOf("Iceweasel/2.")<0||0<=navigator.userAgent.indexOf("SeaMonkey/")&&navigator.userAgent.indexOf("SeaMonkey/1.")<0||0<=navigator.userAgent.indexOf("Iceape/")&&navigator.userAgent.indexOf("Iceape/1.")<0,IS_SVG:0<=navigator.userAgent.indexOf("Firefox/")||0<=navigator.userAgent.indexOf("Iceweasel/")||0<=navigator.userAgent.indexOf("Seamonkey/")||0<=navigator.userAgent.indexOf("Iceape/")||0<=navigator.userAgent.indexOf("Galeon/")||0<=navigator.userAgent.indexOf("Epiphany/")||0<=navigator.userAgent.indexOf("AppleWebKit/")||0<=navigator.userAgent.indexOf("Gecko/")||0<=navigator.userAgent.indexOf("Opera/"),NO_FO:0<=navigator.userAgent.indexOf("Firefox/1.")||0<=navigator.userAgent.indexOf("Iceweasel/1.")||0<=navigator.userAgent.indexOf("Firefox/2.")||0<=navigator.userAgent.indexOf("Iceweasel/2.")||0<=navigator.userAgent.indexOf("SeaMonkey/1.")||0<=navigator.userAgent.indexOf("Iceape/1.")||0<=navigator.userAgent.indexOf("Camino/1.")||0<=navigator.userAgent.indexOf("Epiphany/2.")||0<=navigator.userAgent.indexOf("Opera/")||0<=navigator.userAgent.indexOf("MSIE")||0<=navigator.userAgent.indexOf("Mozilla/2."),IS_VML:"MICROSOFT INTERNET EXPLORER"==navigator.appName.toUpperCase(),IS_MAC:0<navigator.userAgent.toUpperCase().indexOf("MACINTOSH"),IS_TOUCH:0<navigator.userAgent.toUpperCase().indexOf("IPAD")||0<navigator.userAgent.toUpperCase().indexOf("IPOD")||0<navigator.userAgent.toUpperCase().indexOf("IPHONE")||0<navigator.userAgent.toUpperCase().indexOf("ANDROID"),IS_LOCAL:document.location.href.indexOf("http://")<0&&document.location.href.indexOf("https://")<0,isBrowserSupported:function(){return mxClient.IS_VML||mxClient.IS_SVG},link:function(e,n,t){if(t=t||document,mxClient.IS_IE6)t.write('<link rel="'+e+'" href="'+n+'" charset="ISO-8859-1" type="text/css"/>');else{var a=t.createElement("link");a.setAttribute("rel",e),a.setAttribute("href",n),a.setAttribute("charset","ISO-8859-1"),a.setAttribute("type","text/css"),t.getElementsByTagName("head")[0].appendChild(a)}},include:function(e){document.write('<script src="'+e+'"><\/script>')},dispose:function(){for(var e=0;e<mxEvent.objects.length;e++)null!=mxEvent.objects[e].mxListenerList&&mxEvent.removeAllListeners(mxEvent.objects[e])}};if(mxClient.IS_OP&&mxClient.IS_OT?mxClient.CSS_PREFIX="O":mxClient.IS_SF||mxClient.IS_GC?mxClient.CSS_PREFIX="Webkit":mxClient.IS_MT?mxClient.CSS_PREFIX="Moz":mxClient.IS_IE&&9<=document.documentMode&&(mxClient.CSS_PREFIX="ms"),void 0===mxLoadResources&&(mxLoadResources=!0),"undefined"==typeof mxResourceExtension&&(mxResourceExtension=".txt"),"undefined"==typeof mxLoadStylesheets&&(mxLoadStylesheets=!0),void 0!==mxBasePath&&0<mxBasePath.length?("/"==mxBasePath.substring(mxBasePath.length-1)&&(mxBasePath=mxBasePath.substring(0,mxBasePath.length-1)),mxClient.basePath=mxBasePath):mxClient.basePath=".","undefined"!=typeof mxImageBasePath&&0<mxImageBasePath.length?("/"==mxImageBasePath.substring(mxImageBasePath.length-1)&&(mxImageBasePath=mxImageBasePath.substring(0,mxImageBasePath.length-1)),mxClient.imageBasePath=mxImageBasePath):mxClient.imageBasePath=mxClient.basePath+"/images",mxClient.language=void 0!==mxLanguage?mxLanguage:mxClient.IS_IE?navigator.userLanguage:navigator.language,mxClient.defaultLanguage="undefined"!=typeof mxDefaultLanguage?mxDefaultLanguage:"en",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/common.css"),void 0!==mxLanguages&&(mxClient.languages=mxLanguages),mxClient.IS_IE){if(9<=document.documentMode)mxClient.IS_VML=!1,mxClient.IS_SVG=!0;else{8==document.documentMode?(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml","#default#VML"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office","#default#VML")):(document.namespaces.add(mxClient.VML_PREFIX,"urn:schemas-microsoft-com:vml"),document.namespaces.add(mxClient.OFFICE_PREFIX,"urn:schemas-microsoft-com:office:office"));var ss=document.createStyleSheet();ss.cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxLoadStylesheets&&mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css")}window.attachEvent("onunload",mxClient.dispose)}var mxLog={consoleName:"Console",TRACE:!1,DEBUG:!0,WARN:!0,buffer:"",init:function(){if(null==mxLog.window&&null!=document.body){var e=mxLog.consoleName+" - mxGraph "+mxClient.VERSION,n=document.createElement("table");n.setAttribute("width","100%"),n.setAttribute("height","100%");var t=document.createElement("tbody"),a=document.createElement("tr"),i=document.createElement("td");if(i.style.verticalAlign="top",mxLog.textarea=document.createElement("textarea"),mxLog.textarea.setAttribute("readOnly","true"),mxLog.textarea.style.height="100%",mxLog.textarea.style.resize="none",mxLog.textarea.value=mxLog.buffer,mxLog.textarea.style.width=mxClient.IS_NS&&"BackCompat"!=document.compatMode?"99%":"100%",i.appendChild(mxLog.textarea),a.appendChild(i),t.appendChild(a),a=document.createElement("tr"),mxLog.td=document.createElement("td"),mxLog.td.style.verticalAlign="top",mxLog.td.setAttribute("height","30px"),a.appendChild(mxLog.td),t.appendChild(a),n.appendChild(t),mxLog.addButton("Info",function(e){mxLog.info()}),mxLog.addButton("DOM",function(e){e=mxUtils.getInnerHtml(document.body),mxLog.debug(e)}),mxLog.addButton("Trace",function(e){mxLog.TRACE=!mxLog.TRACE,mxLog.TRACE?mxLog.debug("Tracing enabled"):mxLog.debug("Tracing disabled")}),mxLog.addButton("Copy",function(e){try{mxUtils.copy(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Show",function(e){try{mxUtils.popup(mxLog.textarea.value)}catch(e){mxUtils.alert(e)}}),mxLog.addButton("Clear",function(e){mxLog.textarea.value=""}),a=t=0,a="number"==typeof window.innerWidth?(t=window.innerHeight,window.innerWidth):(t=document.documentElement.clientHeight||document.body.clientHeight,document.body.clientWidth),mxLog.window=new mxWindow(e,n,Math.max(0,a-320),Math.max(0,t-210),300,160),mxLog.window.setMaximizable(!0),mxLog.window.setScrollable(!1),mxLog.window.setResizable(!0),mxLog.window.setClosable(!0),mxLog.window.destroyOnClose=!1,(mxClient.IS_NS||mxClient.IS_IE)&&!mxClient.IS_GC&&!mxClient.IS_SF&&"BackCompat"!=document.compatMode){var s=mxLog.window.getElement();e=function(e,n){mxLog.textarea.style.height=Math.max(0,s.offsetHeight-70)+"px"};mxLog.window.addListener(mxEvent.RESIZE_END,e),mxLog.window.addListener(mxEvent.MAXIMIZE,e),mxLog.window.addListener(mxEvent.NORMALIZE,e),mxLog.textarea.style.height="92px"}}},info:function(){mxLog.writeln(mxUtils.toString(navigator))},addButton:function(e,n){var t=document.createElement("button");mxUtils.write(t,e),mxEvent.addListener(t,"click",n),mxLog.td.appendChild(t)},isVisible:function(){return null!=mxLog.window&&mxLog.window.isVisible()},show:function(){mxLog.setVisible(!0)},setVisible:function(e){null==mxLog.window&&mxLog.init(),null!=mxLog.window&&mxLog.window.setVisible(e)},enter:function(e){if(mxLog.TRACE)return mxLog.writeln("Entering "+e),(new Date).getTime()},leave:function(e,n){if(mxLog.TRACE){var t=0!=n?" ("+((new Date).getTime()-n)+" ms)":"";mxLog.writeln("Leaving "+e+t)}},debug:function(){mxLog.DEBUG&&mxLog.writeln.apply(this,arguments)},warn:function(){mxLog.WARN&&mxLog.writeln.apply(this,arguments)},write:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");null!=mxLog.textarea?(mxLog.textarea.value+=e,0<=navigator.userAgent.indexOf("Presto/2.5")&&(mxLog.textarea.style.visibility="hidden",mxLog.textarea.style.visibility="visible"),mxLog.textarea.scrollTop=mxLog.textarea.scrollHeight):mxLog.buffer+=e},writeln:function(){for(var e="",n=0;n<arguments.length;n++)e+=arguments[n],n<arguments.length-1&&(e+=" ");mxLog.write(e+"\n")}},mxObjectIdentity={FIELD_NAME:"mxObjectId",counter:0,get:function(e){if("object"==typeof e&&null==e[mxObjectIdentity.FIELD_NAME]){var n=mxUtils.getFunctionName(e.constructor);e[mxObjectIdentity.FIELD_NAME]=n+"#"+mxObjectIdentity.counter++}return e[mxObjectIdentity.FIELD_NAME]},clear:function(e){"object"==typeof e&&delete e[mxObjectIdentity.FIELD_NAME]}};function mxDictionary(){this.clear()}mxDictionary.prototype.map=null,mxDictionary.prototype.clear=function(){this.map={}},mxDictionary.prototype.get=function(e){return e=mxObjectIdentity.get(e),this.map[e]},mxDictionary.prototype.put=function(e,n){var t=mxObjectIdentity.get(e),a=this.map[t];return this.map[t]=n,a},mxDictionary.prototype.remove=function(e){e=mxObjectIdentity.get(e);var n=this.map[e];return delete this.map[e],n},mxDictionary.prototype.getKeys=function(){var e,n=[];for(e in this.map)n.push(e);return n},mxDictionary.prototype.getValues=function(){var e,n=[];for(e in this.map)n.push(this.map[e]);return n},mxDictionary.prototype.visit=function(e){for(var n in this.map)e(n,this.map[n])};var mxResources={resources:[],extension:mxResourceExtension,resourcesEncoded:!1,loadDefaultBundle:!0,loadSpecialBundle:!0,isLanguageSupported:function(e){return null==mxClient.languages||0<=mxUtils.indexOf(mxClient.languages,e)},getDefaultBundle:function(e,n){return mxResources.loadDefaultBundle||!mxResources.isLanguageSupported(n)?e+mxResources.extension:null},getSpecialBundle:function(e,n){if(null==mxClient.languages||!this.isLanguageSupported(n)){var t=n.indexOf("-");0<t&&(n=n.substring(0,t))}return mxResources.loadSpecialBundle&&mxResources.isLanguageSupported(n)&&n!=mxClient.defaultLanguage?e+"_"+n+mxResources.extension:null},add:function(e,n){if((n=null!=n?n:mxClient.language)!=mxConstants.NONE){var t=mxResources.getDefaultBundle(e,n);if(null!=t)try{var a=mxUtils.load(t);a.isReady()&&mxResources.parse(a.getText())}catch(e){}if(null!=(t=mxResources.getSpecialBundle(e,n)))try{(a=mxUtils.load(t)).isReady()&&mxResources.parse(a.getText())}catch(e){}}},parse:function(e){if(null!=e){e=e.split("\n");for(var n=0;n<e.length;n++)if("#"!=e[n].charAt(0)){var t=e[n].indexOf("=");if(0<t){var a=e[n].substring(0,t),i=e[n].length;13==e[n].charCodeAt(i-1)&&i--,t=e[n].substring(t+1,i),this.resourcesEncoded?(t=t.replace(/\\(?=u[a-fA-F\d]{4})/g,"%"),mxResources.resources[a]=unescape(t)):mxResources.resources[a]=t}}}},get:function(e,n,t){if(null==(e=mxResources.resources[e])&&(e=t),null!=e&&null!=n){t=[];for(var a=null,i=0;i<e.length;i++){var s=e.charAt(i);"{"==s?a="":null!=a&&"}"==s?(0<=(a=parseInt(a)-1)&&a<n.length&&t.push(n[a]),a=null):null!=a?a+=s:t.push(s)}e=t.join("")}return e}};function mxPoint(e,n){this.x=null!=e?e:0,this.y=null!=n?n:0}function mxRectangle(e,n,t,a){mxPoint.call(this,e,n),this.width=null!=t?t:0,this.height=null!=a?a:0}mxPoint.prototype.x=null,mxPoint.prototype.y=null,mxPoint.prototype.equals=function(e){return e.x==this.x&&e.y==this.y},mxPoint.prototype.clone=function(){return mxUtils.clone(this)},mxRectangle.prototype=new mxPoint,mxRectangle.prototype.constructor=mxRectangle,mxRectangle.prototype.width=null,mxRectangle.prototype.height=null,mxRectangle.prototype.setRect=function(e,n,t,a){this.x=e,this.y=n,this.width=t,this.height=a},mxRectangle.prototype.getCenterX=function(){return this.x+this.width/2},mxRectangle.prototype.getCenterY=function(){return this.y+this.height/2},mxRectangle.prototype.add=function(e){if(null!=e){var n=Math.min(this.x,e.x),t=Math.min(this.y,e.y),a=Math.max(this.x+this.width,e.x+e.width);e=Math.max(this.y+this.height,e.y+e.height),this.x=n,this.y=t,this.width=a-n,this.height=e-t}},mxRectangle.prototype.grow=function(e){this.x-=e,this.y-=e,this.width+=2*e,this.height+=2*e},mxRectangle.prototype.getPoint=function(){return new mxPoint(this.x,this.y)},mxRectangle.prototype.equals=function(e){return e.x==this.x&&e.y==this.y&&e.width==this.width&&e.height==this.height};var mxEffects={animateChanges:function(l,d,c){var m=0,u=function(){for(var e=!1,n=0;n<d.length;n++){var t=d[n];if(t instanceof mxGeometryChange||t instanceof mxTerminalChange||t instanceof mxValueChange||t instanceof mxChildChange||t instanceof mxStyleChange){var a=l.getView().getState(t.cell||t.child,!1);if(null!=a)if(e=!0,t.constructor!=mxGeometryChange||l.model.isEdge(t.cell))mxUtils.setOpacity(a.shape.node,100*m/10);else{var i=l.getView().scale,s=(t.geometry.x-t.previous.x)*i,o=(t.geometry.y-t.previous.y)*i,r=(t.geometry.width-t.previous.width)*i;i=(t.geometry.height-t.previous.height)*i;0==m?(a.x-=s,a.y-=o,a.width-=r,a.height-=i):(a.x+=s/10,a.y+=o/10,a.width+=r/10,a.height+=i/10),l.cellRenderer.redraw(a),mxEffects.cascadeOpacity(l,t.cell,100*m/10)}}}m<10&&e?(m++,window.setTimeout(u,p)):null!=c&&c()},p=30;u()},cascadeOpacity:function(e,n,t){for(var a=e.model.getChildCount(n),i=0;i<a;i++){var s=e.model.getChildAt(n,i),o=e.getView().getState(s);null!=o&&(mxUtils.setOpacity(o.shape.node,t),mxEffects.cascadeOpacity(e,s,t))}if(null!=(n=e.model.getEdges(n)))for(i=0;i<n.length;i++)null!=(a=e.getView().getState(n[i]))&&mxUtils.setOpacity(a.shape.node,t)},fadeOut:function(e,n,t,a,i,s){a=a||40,i=i||30;var o=n||100;if(mxUtils.setOpacity(e,o),s||null==s){var r=function(){o=Math.max(o-a,0),mxUtils.setOpacity(e,o),0<o?window.setTimeout(r,i):(e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e))};window.setTimeout(r,i)}else e.style.visibility="hidden",t&&e.parentNode&&e.parentNode.removeChild(e)}},mxUtils={errorResource:"none"!=mxClient.language?"error":"",closeResource:"none"!=mxClient.language?"close":"",errorImage:mxClient.imageBasePath+"/error.gif",removeCursors:function(e){if(null!=e.style&&(e.style.cursor=""),null!=(e=e.childNodes))for(var n=e.length,t=0;t<n;t+=1)mxUtils.removeCursors(e[t])},getCurrentStyle:mxClient.IS_IE?function(e){return null!=e?e.currentStyle:null}:function(e){return null!=e?window.getComputedStyle(e,""):null},hasScrollbars:function(e){return null!=(e=mxUtils.getCurrentStyle(e))&&("scroll"==e.overflow||"auto"==e.overflow)},bind:function(e,n){return function(){return n.apply(e,arguments)}},eval:function(a){var b=null;if(0<=a.indexOf("function"))try{eval("var _mxJavaScriptExpression="+a),b=_mxJavaScriptExpression,_mxJavaScriptExpression=null}catch(e){mxLog.warn(e.message+" while evaluating "+a)}else try{b=eval(a)}catch(e){mxLog.warn(e.message+" while evaluating "+a)}return b},findNode:function(e,n,t){var a=e.getAttribute(n);if(null!=a&&a==t)return e;for(e=e.firstChild;null!=e;){if(null!=(a=mxUtils.findNode(e,n,t)))return a;e=e.nextSibling}return null},findNodeByAttribute:9<=document.documentMode?function(e,n,t){var a=null;if(null!=e)if(e.nodeType==mxConstants.NODETYPE_ELEMENT&&e.getAttribute(n)==t)a=e;else for(e=e.firstChild;null!=e&&null==a;)a=mxUtils.findNodeByAttribute(e,n,t),e=e.nextSibling;return a}:mxClient.IS_IE?function(e,n,t){return null==e?null:e.ownerDocument.selectSingleNode("//*[@"+n+"='"+t+"']")}:function(e,n,t){return null==e?null:e.ownerDocument.evaluate("//*[@"+n+"='"+t+"']",e.ownerDocument,null,XPathResult.ANY_TYPE,null).iterateNext()},getFunctionName:function(e){var n=null;if(null!=e)if(null!=e.name)n=e.name;else{for(e=e.toString(),n=9;" "==e.charAt(n);)n++;var t=e.indexOf("(",n);n=e.substring(n,t)}return n},indexOf:function(e,n){if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n)return t;return-1},remove:function(e,n){var t=null;if("object"==typeof n)for(var a=mxUtils.indexOf(n,e);0<=a;)n.splice(a,1),t=e,a=mxUtils.indexOf(n,e);for(var i in n)n[i]==e&&(delete n[i],t=e);return t},isNode:function(e,n,t,a){return!(null==e||isNaN(e.nodeType)||null!=n&&e.nodeName.toLowerCase()!=n.toLowerCase())&&(null==t||e.getAttribute(t)==a)},getChildNodes:function(e,n){n=n||mxConstants.NODETYPE_ELEMENT;for(var t=[],a=e.firstChild;null!=a;)a.nodeType==n&&t.push(a),a=a.nextSibling;return t},createXmlDocument:function(){var e=null;return document.implementation&&document.implementation.createDocument?e=document.implementation.createDocument("","",null):window.ActiveXObject&&(e=new ActiveXObject("Microsoft.XMLDOM")),e},parseXml:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){var n=mxUtils.createXmlDocument();return n.async="false",n.loadXML(e),n}:function(e){return(new DOMParser).parseFromString(e,"text/xml")},clearSelection:document.selection?function(){document.selection.empty()}:window.getSelection?function(){window.getSelection().removeAllRanges()}:void 0,getPrettyXml:function(e,n,t){var a=[];if(null!=e)if(n=n||"  ",t=t||"",e.nodeType==mxConstants.NODETYPE_TEXT)a.push(e.nodeValue);else{a.push(t+"<"+e.nodeName);var i=e.attributes;if(null!=i)for(var s=0;s<i.length;s++){var o=mxUtils.htmlEntities(i[s].nodeValue);a.push(" "+i[s].nodeName+'="'+o+'"')}if(null!=(i=e.firstChild)){for(a.push(">\n");null!=i;)a.push(mxUtils.getPrettyXml(i,n,t+n)),i=i.nextSibling;a.push(t+"</"+e.nodeName+">\n")}else a.push("/>\n")}return a.join("")},removeWhitespace:function(e,n){for(var t=n?e.previousSibling:e.nextSibling;null!=t&&t.nodeType==mxConstants.NODETYPE_TEXT;){var a=n?t.previousSibling:t.nextSibling,i=mxUtils.getTextContent(t);0==mxUtils.trim(i).length&&t.parentNode.removeChild(t),t=a}},htmlEntities:function(e,n){return e=(e=(e=(e=(e=(e||"").replace(/&/g,"&amp;")).replace(/"/g,"&quot;")).replace(/\'/g,"&#39;")).replace(/</g,"&lt;")).replace(/>/g,"&gt;"),(null==n||n)&&(e=e.replace(/\n/g,"&#xa;")),e},isVml:function(e){return null!=e&&"urn:schemas-microsoft-com:vml"==e.tagUrn},getXml:function(e,n){var t="";return null!=e&&(t=null==(t=e.xml)?e.innerHTML?e.innerHTML:(new XMLSerializer).serializeToString(e):t.replace(/\r\n\t[\t]*/g,"").replace(/>\r\n/g,">").replace(/\r\n/g,"\n")),t.replace(/\n/g,n||"&#xa;")},getTextContent:function(e){var n="";return null!=e&&(null!=e.firstChild&&(e=e.firstChild),n=e.nodeValue||""),n},getInnerHtml:mxClient.IS_IE?function(e){return null!=e?e.innerHTML:""}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},getOuterHtml:mxClient.IS_IE?function(e){if(null==e)return"";if(null!=e.outerHTML)return e.outerHTML;var n=[];n.push("<"+e.nodeName);var t=e.attributes;if(null!=t)for(var a=0;a<t.length;a++){var i=t[a].nodeValue;null!=i&&0<i.length&&(n.push(" "),n.push(t[a].nodeName),n.push('="'),n.push(i),n.push('"'))}return 0==e.innerHTML.length?n.push("/>"):(n.push(">"),n.push(e.innerHTML),n.push("</"+e.nodeName+">")),n.join("")}:function(e){return null!=e?(new XMLSerializer).serializeToString(e):""},write:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&e.appendChild(t),t},writeln:function(e,n){var t=e.ownerDocument.createTextNode(n);return null!=e&&(e.appendChild(t),e.appendChild(document.createElement("br"))),t},br:function(e,n){n=n||1;for(var t=null,a=0;a<n;a++)null!=e&&(t=e.ownerDocument.createElement("br"),e.appendChild(t));return t},button:function(e,n,t){return t=(t=null!=t?t:document).createElement("button"),mxUtils.write(t,e),mxEvent.addListener(t,"click",function(e){n(e)}),t},para:function(e,n){var t=document.createElement("p");return mxUtils.write(t,n),null!=e&&e.appendChild(t),t},addTransparentBackgroundFilter:function(e){e.style.filter+="progid:DXImageTransform.Microsoft.AlphaImageLoader(src='"+mxClient.imageBasePath+"/transparent.gif', sizingMethod='scale')"},linkAction:function(e,n,t,a,i){return mxUtils.link(e,n,function(){t.execute(a)},i)},linkInvoke:function(e,n,t,a,i,s){return mxUtils.link(e,n,function(){t[a](i)},s)},link:function(e,n,t,a){var i=document.createElement("span");return i.style.color="blue",i.style.textDecoration="underline",i.style.cursor="pointer",null!=a&&(i.style.paddingLeft=a+"px"),mxEvent.addListener(i,"click",t),mxUtils.write(i,n),null!=e&&e.appendChild(i),i},fit:function(e){var n=parseInt(e.offsetLeft),t=parseInt(e.offsetWidth),a=document.body,i=document.documentElement,s=(a.scrollLeft||i.scrollLeft)+(a.clientWidth||i.clientWidth);s<n+t&&(e.style.left=Math.max(a.scrollLeft||i.scrollLeft,s-t)+"px"),n=parseInt(e.offsetTop),t=parseInt(e.offsetHeight),(s=(a.scrollTop||i.scrollTop)+Math.max(a.clientHeight||0,i.clientHeight))<n+t&&(e.style.top=Math.max(a.scrollTop||i.scrollTop,s-t)+"px")},open:function(e){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return mxUtils.alert("Permission to read file denied."),""}var n=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);return n.initWithPath(e),n.exists()?((e=Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream)).init(n,1,4,null),(n=Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream)).init(e),n.read(n.available())):(mxUtils.alert("File not found."),"")}return e=(n=new ActiveXObject("Scripting.FileSystemObject").OpenTextFile(e,1)).readAll(),n.close(),e},save:function(e,n){if(mxClient.IS_NS){try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect")}catch(e){return void mxUtils.alert("Permission to write file denied.")}var t=Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile);t.initWithPath(e),t.exists()||t.create(0,420);var a=Components.classes["@mozilla.org/network/file-output-stream;1"].createInstance(Components.interfaces.nsIFileOutputStream);a.init(t,34,4,null),a.write(n,n.length),a.flush(),a.close()}else(t=new ActiveXObject("Scripting.FileSystemObject").CreateTextFile(e,!0)).Write(n),t.Close()},saveAs:function(e){var n=document.createElement("iframe");n.setAttribute("src",""),n.style.visibility="hidden",document.body.appendChild(n);try{if(mxClient.IS_NS){var t=n.contentDocument;t.open(),t.write(e),t.close();try{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"),n.focus(),saveDocument(t)}catch(e){mxUtils.alert("Permission to save document denied.")}}else(t=n.contentWindow.document).write(e),t.execCommand("SaveAs",!1,document.location)}finally{document.body.removeChild(n)}},copy:function(e){if(window.clipboardData)window.clipboardData.setData("Text",e);else{netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");var n=Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);if(n){var t=Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);if(t){t.addDataFlavor("text/unicode");var a=Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);a.data=e,t.setTransferData("text/unicode",a,2*e.length),n.setData(t,null,Components.interfaces.nsIClipboard.kGlobalClipboard)}}}},load:function(e){return(e=new mxXmlRequest(e,null,"GET",!1)).send(),e},get:function(e,n,t){return new mxXmlRequest(e,null,"GET").send(n,t)},post:function(e,n,t,a){return new mxXmlRequest(e,n).send(t,a)},submit:function(e,n,t,a){return new mxXmlRequest(e,n).simulate(t,a)},loadInto:function(e,n,t){mxClient.IS_IE?n.onreadystatechange=function(){4==n.readyState&&t()}:n.addEventListener("load",t,!1),n.load(e)},getValue:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t),e},getNumber:function(e,n,t){return null==(e=null!=e?e[n]:null)&&(e=t||0),Number(e)},getColor:function(e,n,t){return null==(e=null!=e?e[n]:null)?e=t:e==mxConstants.NONE&&(e=null),e},clone:function(e,n,t){t=null!=t&&t;var a=null;if(null!=e&&"function"==typeof e.constructor){var i;a=new e.constructor;for(i in e)i!=mxObjectIdentity.FIELD_NAME&&(null==n||mxUtils.indexOf(n,i)<0)&&(a[i]=t||"object"!=typeof e[i]?e[i]:mxUtils.clone(e[i]))}return a},equalPoints:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t=0;t<e.length;t++)if(e[t]==n[t]||null!=e[t]&&!e[t].equals(n[t]))return!1;return!0},equalEntries:function(e,n){if(null==e&&null!=n||null!=e&&null==n||null!=e&&null!=n&&e.length!=n.length)return!1;if(null!=e&&null!=n)for(var t in e)if(e[t]!=n[t])return!1;return!0},extend:function(e,n){var t=function(){};t.prototype=n.prototype,e.prototype=new t,e.prototype.constructor=e},toString:function(e){var n,t="";for(n in e)try{if(null==e[n])t+=n+" = [null]\n";else if("function"==typeof e[n])t+=n+" => [Function]\n";else if("object"==typeof e[n])t=t+(n+" => [")+mxUtils.getFunctionName(e[n].constructor)+"]\n";else t+=n+" = "+e[n]+"\n"}catch(e){t+=n+"="+e.message}return t},toRadians:function(e){return Math.PI*e/180},arcToCurves:function(e,n,t,a,i,s,o,r,l){if(r-=e,l-=n,0===t||0===a)return h;t=Math.abs(t),a=Math.abs(a);var d=-r/2,c=-l/2,m=Math.cos(i*Math.PI/180);i=m*d+(h=Math.sin(i*Math.PI/180))*c;d=-1*h*d+m*c;r=m*(c=(s=1<(v=(c=i*i)/(g=t*t)+(p=d*d)/(A=a*a))?(t*=Math.sqrt(v),a*=Math.sqrt(v),0):(v=1,s===o&&(v=-1),v*Math.sqrt((g*A-g*p-A*c)/(g*p+A*c))))*t*d/a)-h*(p=-1*s*a*i/t)+r/2,l=h*c+m*p+l/2,s=0<=(g=Math.atan2((d-p)/a,(i-c)/t)-Math.atan2(0,1))?g:2*Math.PI+g,i=0<=(g=Math.atan2((-d-p)/a,(-i-c)/t)-Math.atan2((d-p)/a,(i-c)/t))?g:2*Math.PI+g,0==o&&0<i?i-=2*Math.PI:0!=o&&i<0&&(i+=2*Math.PI),o=2*i/Math.PI,i/=o=Math.ceil(o<0?-1*o:o),d=8/3*Math.sin(i/4)*Math.sin(i/4)/Math.sin(i/2),c=m*t,m*=a,t*=h,a*=h;for(var u=Math.cos(s),p=-d*(c*(b=Math.sin(s))+a*u),g=-d*(t*b-m*u),v=A=0,h=[],f=0;f<o;++f){s+=i;var b,A=c*(u=Math.cos(s))-a*(b=Math.sin(s))+r,E=(v=t*u+m*b+l,-d*(c*b+a*u));u=-d*(t*b-m*u);h[b=6*f]=Number(p+e),h[b+1]=Number(g+n),h[b+2]=Number(A-E+e),h[b+3]=Number(v-u+n),h[b+4]=Number(A+e),h[b+5]=Number(v+n),p=A+E,g=v+u}return h},getBoundingBox:function(e,n){var t=null;if(null!=e&&null!=n&&0!=n){var a=mxUtils.toRadians(n),i=(t=Math.cos(a),Math.sin(a)),s=new mxPoint(e.x+e.width/2,e.y+e.height/2),o=new mxPoint(e.x,e.y),r=new mxPoint((a=new mxPoint(e.x+e.width,e.y)).x,e.y+e.height),l=new mxPoint(e.x,r.y);o=mxUtils.getRotatedPoint(o,t,i,s),a=mxUtils.getRotatedPoint(a,t,i,s),r=mxUtils.getRotatedPoint(r,t,i,s),l=mxUtils.getRotatedPoint(l,t,i,s);(t=new mxRectangle(o.x,o.y,0,0)).add(new mxRectangle(a.x,a.y,0,0)),t.add(new mxRectangle(r.x,r.y,0,0)),t.add(new mxRectangle(l.x,l.y,0,0))}return t},getRotatedPoint:function(e,n,t,a){a=null!=a?a:new mxPoint;var i=e.x-a.x;return new mxPoint(i*n-(e=e.y-a.y)*t+a.x,e*n+i*t+a.y)},getPortConstraints:function(e,n,t,a){return null==(e=mxUtils.getValue(e.style,mxConstants.STYLE_PORT_CONSTRAINT,null))?a:(a=e.toString(),e=mxConstants.DIRECTION_MASK_NONE,0<=a.indexOf(mxConstants.DIRECTION_NORTH)&&(e|=mxConstants.DIRECTION_MASK_NORTH),0<=a.indexOf(mxConstants.DIRECTION_WEST)&&(e|=mxConstants.DIRECTION_MASK_WEST),0<=a.indexOf(mxConstants.DIRECTION_SOUTH)&&(e|=mxConstants.DIRECTION_MASK_SOUTH),0<=a.indexOf(mxConstants.DIRECTION_EAST)&&(e|=mxConstants.DIRECTION_MASK_EAST),e)},reversePortConstraints:function(e){return(e&mxConstants.DIRECTION_MASK_WEST)<<3|(e&mxConstants.DIRECTION_MASK_NORTH)<<1|(e&mxConstants.DIRECTION_MASK_SOUTH)>>1|(e&mxConstants.DIRECTION_MASK_EAST)>>3},findNearestSegment:function(e,n,t){var a=-1;if(0<e.absolutePoints.length)for(var i=e.absolutePoints[0],s=null,o=1;o<e.absolutePoints.length;o++){var r=e.absolutePoints[o];i=mxUtils.ptSegDistSq(i.x,i.y,r.x,r.y,n,t);(null==s||i<s)&&(s=i,a=o-1),i=r}return a},rectangleIntersectsSegment:function(e,n,t){var a=e.y,i=e.x,s=a+e.height,o=i+e.width;e=n.x;var r=t.x;if(n.x>t.x&&(e=t.x,r=n.x),o<r&&(r=o),e<i&&(e=i),r<e)return!1;i=n.y,o=t.y;var l=t.x-n.x;return 1e-7<Math.abs(l)&&(i=(t=(t.y-n.y)/l)*e+(n=n.y-t*n.x),o=t*r+n),o<i&&(n=o,o=i,i=n),s<o&&(o=s),i<a&&(i=a),!(o<i)},contains:function(e,n,t){return e.x<=n&&e.x+e.width>=n&&e.y<=t&&e.y+e.height>=t},intersects:function(e,n){var t=e.width,a=e.height,i=n.width,s=n.height;if(i<=0||s<=0||t<=0||a<=0)return!1;var o=e.x,r=e.y,l=n.x,d=n.y;s+=d,t+=o,a+=r;return((i=i+l)<l||o<i)&&(s<d||r<s)&&(t<o||l<t)&&(a<r||d<a)},intersectsHotspot:function(e,n,t,a,i,s){if(i=null!=i?i:0,s=null!=s?s:0,0<(a=null!=a?a:1)){var o=e.getCenterX(),r=e.getCenterY(),l=e.width,d=e.height,c=mxUtils.getValue(e.style,mxConstants.STYLE_STARTSIZE)*e.view.scale;return 0<c&&(mxUtils.getValue(e.style,mxConstants.STYLE_HORIZONTAL,!0)?(r=e.y+c/2,d=c):(o=e.x+c/2,l=c)),l=Math.max(i,l*a),d=Math.max(i,d*a),0<s&&(l=Math.min(l,s),d=Math.min(d,s)),a=new mxRectangle(o-l/2,r-d/2,l,d),0!=(o=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(i=Math.cos(-o),s=Math.sin(-o),o=new mxPoint(e.getCenterX(),e.getCenterY()),n=(e=mxUtils.getRotatedPoint(new mxPoint(n,t),i,s,o)).x,t=e.y),mxUtils.contains(a,n,t)}return!0},getOffset:function(e,n){var t=0,a=0;if(null!=n&&n){var i=document.body,s=document.documentElement;t=t+(i.scrollLeft||s.scrollLeft),a=a+(i.scrollTop||s.scrollTop)}for(;e.offsetParent;)t+=e.offsetLeft,a+=e.offsetTop,e=e.offsetParent;return new mxPoint(t,a)},getScrollOrigin:function(e){for(var n=document.body,t=document.documentElement,a=new mxPoint(n.scrollLeft||t.scrollLeft,n.scrollTop||t.scrollTop);null!=e&&e!=n&&e!=t;)!isNaN(e.scrollLeft)&&!isNaN(e.scrollTop)&&(a.x+=e.scrollLeft,a.y+=e.scrollTop),e=e.parentNode;return a},convertPoint:function(e,n,t){var a=mxUtils.getScrollOrigin(e);return(e=mxUtils.getOffset(e)).x-=a.x,e.y-=a.y,new mxPoint(n-e.x,t-e.y)},ltrim:function(e,n){return e.replace(RegExp("^["+(n||"\\s")+"]+","g"),"")},rtrim:function(e,n){return e.replace(RegExp("["+(n||"\\s")+"]+$","g"),"")},trim:function(e,n){return mxUtils.ltrim(mxUtils.rtrim(e,n),n)},isNumeric:function(e){return null!=e&&(null==e.length||0<e.length&&e.indexOf("0x")<0&&e.indexOf("0X")<0)&&!isNaN(e)},mod:function(e,n){return(e%n+n)%n},intersection:function(e,n,t,a,i,s,o,r){var l=(r-s)*(t-e)-(o-i)*(a-n);return o=((o-i)*(n-s)-(r-s)*(e-i))/l,i=((t-e)*(n-s)-(a-n)*(e-i))/l,0<=o&&o<=1&&0<=i&&i<=1?new mxPoint(e+o*(t-e),n+o*(a-n)):null},ptSegDistSq:function(e,n,t,a,i,s){return t=(i-=e)*(t-=e)+(s-=n)*(a-=n)<=0?0:(e=(i=t-i)*t+(s=a-s)*a)<=0?0:e*e/(t*t+a*a),(i=i*i+s*s-t)<0&&(i=0),i},relativeCcw:function(e,n,t,a,i,s){return 0==(e=(i-=e)*(a-=n)-(s-=n)*(t-=e))&&(0<(e=i*t+s*a)&&((e=(i-t)*t+(s-a)*a)<0&&(e=0))),e<0?-1:0<e?1:0},animateChanges:function(e,n){mxEffects.animateChanges.apply(this,arguments)},cascadeOpacity:function(e,n,t){mxEffects.cascadeOpacity.apply(this,arguments)},fadeOut:function(e,n,t,a,i,s){mxEffects.fadeOut.apply(this,arguments)},setOpacity:function(e,n){mxUtils.isVml(e)?e.style.filter=100<=n?null:"alpha(opacity="+n/5+")":mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?e.style.filter=100<=n?null:"alpha(opacity="+n+")":e.style.opacity=n/100},createImage:function(e){var n=null;return mxClient.IS_IE6&&"CSS1Compat"!=document.compatMode?((n=document.createElement(mxClient.VML_PREFIX+":image")).setAttribute("src",e),n.style.borderStyle="none"):((n=document.createElement("img")).setAttribute("src",e),n.setAttribute("border","0")),n},sortCells:function(e,i){i=null==i||i;var s=new mxDictionary;return e.sort(function(e,n){var t=s.get(e);null==t&&(t=mxCellPath.create(e).split(mxCellPath.PATH_SEPARATOR),s.put(e,t));var a=s.get(n);return null==a&&(a=mxCellPath.create(n).split(mxCellPath.PATH_SEPARATOR),s.put(n,a)),0==(t=mxCellPath.compare(t,a))?0:0<t==i?1:-1}),e},getStylename:function(e){return null!=e&&(e=e.split(";")[0]).indexOf("=")<0?e:""},getStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)e[t].indexOf("=")<0&&n.push(e[t])}return n},indexOfStylename:function(e,n){if(null!=e&&null!=n)for(var t=e.split(";"),a=0,i=0;i<t.length;i++){if(t[i]==n)return a;a+=t[i].length+1}return-1},addStylename:function(e,n){return mxUtils.indexOfStylename(e,n)<0&&(null==e?e="":0<e.length&&";"!=e.charAt(e.length-1)&&(e+=";"),e+=n),e},removeStylename:function(e,n){var t=[];if(null!=e)for(var a=e.split(";"),i=0;i<a.length;i++)a[i]!=n&&t.push(a[i]);return t.join(";")},removeAllStylenames:function(e){var n=[];if(null!=e){e=e.split(";");for(var t=0;t<e.length;t++)0<=e[t].indexOf("=")&&n.push(e[t])}return n.join(";")},setCellStyles:function(e,n,t,a){if(null!=n&&0<n.length){e.beginUpdate();try{for(var i=0;i<n.length;i++)if(null!=n[i]){var s=mxUtils.setStyle(e.getStyle(n[i]),t,a);e.setStyle(n[i],s)}}finally{e.endUpdate()}}},setStyle:function(e,n,t){var a=null!=t&&(void 0===t.length||0<t.length);if(null==e||0==e.length)a&&(e=n+"="+t);else{var i=e.indexOf(n+"=");i<0?a&&(a=";"==e.charAt(e.length-1)?"":";",e=e+a+n+"="+t):(n=a?n+"="+t:"",t=e.indexOf(";",i),a||t++,e=e.substring(0,i)+n+(i<t?e.substring(t):""))}return e},setCellStyleFlags:function(e,n,t,a,i){if(null!=n&&0<n.length){e.beginUpdate();try{for(var s=0;s<n.length;s++)if(null!=n[s]){var o=mxUtils.setStyleFlag(e.getStyle(n[s]),t,a,i);e.setStyle(n[s],o)}}finally{e.endUpdate()}}},setStyleFlag:function(e,n,t,a){if(null==e||0==e.length)e=a||null==a?n+"="+t:n+"=0";else{var i=e.indexOf(n+"=");if(i<0)i=";"==e.charAt(e.length-1)?"":";",e=a||null==a?e+i+n+"="+t:e+i+n+"=0";else{var s=e.indexOf(";",i),o="";o=s<0?e.substring(i+n.length+1):e.substring(i+n.length+1,s),o=null==a?parseInt(o)^t:a?parseInt(o)|t:parseInt(o)&~t;e=e.substring(0,i)+n+"="+o+(0<=s?e.substring(s):"")}}return e},getAlignmentAsPoint:function(e,n){var t=0,a=0;return e==mxConstants.ALIGN_CENTER?t=-.5:e==mxConstants.ALIGN_RIGHT&&(t=-1),n==mxConstants.ALIGN_MIDDLE?a=-.5:n==mxConstants.ALIGN_BOTTOM&&(a=-1),new mxPoint(t,a)},getSizeForString:function(e,n,t){n=null!=n?n:mxConstants.DEFAULT_FONTSIZE,t=null!=t?t:mxConstants.DEFAULT_FONTFAMILY;var a=document.createElement("div");return a.style.fontFamily=t,a.style.fontSize=Math.round(n)+"px",a.style.lineHeight=Math.round(n*mxConstants.LINE_HEIGHT)+"px",a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,document.body.appendChild(a),e=new mxRectangle(0,0,a.offsetWidth,a.offsetHeight),document.body.removeChild(a),e},getViewXml:function(e,n,t,a,i){a=null!=a?a:0,i=null!=i?i:0,n=null!=n?n:1,null==t&&(t=[e.getModel().getRoot()]);var s=e.getView(),o=null,r=s.isEventsEnabled();s.setEventsEnabled(!1);var l=s.drawPane,d=s.overlayPane;e.dialect==mxConstants.DIALECT_SVG?(s.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),s.canvas.appendChild(s.drawPane),s.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g")):(s.drawPane=s.drawPane.cloneNode(!1),s.canvas.appendChild(s.drawPane),s.overlayPane=s.overlayPane.cloneNode(!1)),s.canvas.appendChild(s.overlayPane);var c=s.getTranslate();s.translate=new mxPoint(a,i),n=new mxTemporaryCellStates(e.getView(),n,t);try{o=(new mxCodec).encode(e.getView())}finally{n.destroy(),s.translate=c,s.canvas.removeChild(s.drawPane),s.canvas.removeChild(s.overlayPane),s.drawPane=l,s.overlayPane=d,s.setEventsEnabled(r)}return o},getScaleForPageCount:function(e,n,t,a){if(e<1)return 1;a=null!=a?a:0;var i=(t=null!=t?t:mxConstants.PAGE_FORMAT_A4_PORTRAIT).width-2*a;t=t.height-2*a,a=n.getGraphBounds().clone(),n=n.getView().getScale(),a.width/=n,a.height/=n,t=(n=a.width)/a.height/(i/t),a=Math.sqrt(e);var s=Math.sqrt(t);if(t=a*s,a/=s,t<1&&e<a){var o=a/e;a=e,t/=o}for(a<1&&e<t&&(o=t/e,t=e,a/=o),o=Math.ceil(t)*Math.ceil(a),s=0;e<o;){o=Math.floor(t)/t;var r=Math.floor(a)/a;if(1==o&&(o=Math.floor(t-1)/t),1==r&&(r=Math.floor(a-1)/a),t*=o=r<o?o:r,a*=o,o=Math.ceil(t)*Math.ceil(a),10<++s)break}return i*t/n*.99999},show:function(e,n,t,a){if(t=null!=t?t:0,a=null!=a?a:0,null==n?n=window.open().document:n.open(),t=-(i=e.getGraphBounds()).x+t,a=-i.y+a,mxClient.IS_IE){for(var i="<html><head>",s=document.getElementsByTagName("base"),o=0;o<s.length;o++)i+=s[o].outerHTML;for(i+="<style>",o=0;o<document.styleSheets.length;o++)try{i+=document.styleSheets(o).cssText}catch(e){}i+="</style></head>",i+="<body>",i+=e.container.innerHTML,i+="</body>",i+="<html>",n.writeln(i),n.close(),null!=(e=n.body.getElementsByTagName("DIV")[0])&&(e.style.position="absolute",e.style.left=t+"px",e.style.top=a+"px")}else{for(n.writeln("<html"),n.writeln("<head>"),s=document.getElementsByTagName("base"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("link"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(s=document.getElementsByTagName("style"),o=0;o<s.length;o++)n.writeln(mxUtils.getOuterHtml(s[o]));for(n.writeln("</head>"),n.writeln("</html>"),n.close(),null==n.body&&n.documentElement.appendChild(n.createElement("body")),n.body.style.overflow="auto",e=e.container.firstChild;null!=e;)o=e.cloneNode(!0),n.body.appendChild(o),e=e.nextSibling;null!=(e=n.getElementsByTagName("g")[0])&&(e.setAttribute("transform","translate("+t+","+a+")"),(t=e.ownerSVGElement).setAttribute("width",i.width+Math.max(i.x,0)+3),t.setAttribute("height",i.height+Math.max(i.y,0)+3))}return mxUtils.removeCursors(n.body),n},printScreen:function(e){var n=window.open();mxUtils.show(e,n.document),e=function(){n.focus(),n.print(),n.close()},mxClient.IS_GC?n.setTimeout(e,500):e()},popup:function(e,n){if(n){var t=document.createElement("div");t.style.overflow="scroll",t.style.width="636px",t.style.height="460px";var a=document.createElement("pre");a.innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.appendChild(a),(t=new mxWindow("Popup Window",t,document.body.clientWidth/2-320,(document.body.clientHeight||document.documentElement.clientHeight)/2-240,640,480,!1,!0)).setClosable(!0),t.setVisible(!0)}else mxClient.IS_NS?((t=window.open()).document.writeln("<pre>"+mxUtils.htmlEntities(e)+"</pre"),t.document.close()):((a=(t=window.open()).document.createElement("pre")).innerHTML=mxUtils.htmlEntities(e,!1).replace(/\n/g,"<br>").replace(/ /g,"&nbsp;"),t.document.body.appendChild(a))},alert:function(e){alert(e)},prompt:function(e,n){return prompt(e,n)},confirm:function(e){return confirm(e)},error:function(e,n,t,a){var i=document.createElement("div");i.style.padding="20px";var s=document.createElement("img");s.setAttribute("src",a||mxUtils.errorImage),s.setAttribute("valign","bottom"),s.style.verticalAlign="middle",i.appendChild(s),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),i.appendChild(document.createTextNode(" ")),mxUtils.write(i,e),e=document.body.clientWidth,a=document.body.clientHeight||document.documentElement.clientHeight;var o=new mxWindow(mxResources.get(mxUtils.errorResource)||mxUtils.errorResource,i,(e-n)/2,a/4,n,null,!1,!0);return t&&(mxUtils.br(i),n=document.createElement("p"),t=document.createElement("button"),mxClient.IS_IE?t.style.cssText="float:right":t.setAttribute("style","float:right"),mxEvent.addListener(t,"click",function(e){o.destroy()}),mxUtils.write(t,mxResources.get(mxUtils.closeResource)||mxUtils.closeResource),n.appendChild(t),i.appendChild(n),mxUtils.br(i),o.setClosable(!0)),o.setVisible(!0),o},makeDraggable:function(e,n,t,i,a,s,o,r,l,d){return(e=new mxDragSource(e,t)).dragOffset=new mxPoint(null!=a?a:0,null!=s?s:mxConstants.TOOLTIP_VERTICAL_OFFSET),e.autoscroll=o,e.setGuidesEnabled(!1),null!=l&&(e.highlightDropTargets=l),null!=d&&(e.getDropTarget=d),e.getGraphForEvent=function(e){return"function"==typeof n?n(e):n},null!=i&&(e.createDragElement=function(){return i.cloneNode(!0)},r&&(e.createPreviewElement=function(e){var n=i.cloneNode(!0),t=parseInt(n.style.width),a=parseInt(n.style.height);return n.style.width=Math.round(t*e.view.scale)+"px",n.style.height=Math.round(a*e.view.scale)+"px",n})),e}},mxConstants={DEFAULT_HOTSPOT:.3,MIN_HOTSPOT_SIZE:8,MAX_HOTSPOT_SIZE:0,RENDERING_HINT_EXACT:"exact",RENDERING_HINT_FASTER:"faster",RENDERING_HINT_FASTEST:"fastest",DIALECT_SVG:"svg",DIALECT_VML:"vml",DIALECT_MIXEDHTML:"mixedHtml",DIALECT_PREFERHTML:"preferHtml",DIALECT_STRICTHTML:"strictHtml",NS_SVG:"http://www.w3.org/2000/svg",NS_XHTML:"http://www.w3.org/1999/xhtml",NS_XLINK:"http://www.w3.org/1999/xlink",SHADOWCOLOR:"gray",SHADOW_OFFSET_X:2,SHADOW_OFFSET_Y:3,SHADOW_OPACITY:1,NODETYPE_ELEMENT:1,NODETYPE_ATTRIBUTE:2,NODETYPE_TEXT:3,NODETYPE_CDATA:4,NODETYPE_ENTITY_REFERENCE:5,NODETYPE_ENTITY:6,NODETYPE_PROCESSING_INSTRUCTION:7,NODETYPE_COMMENT:8,NODETYPE_DOCUMENT:9,NODETYPE_DOCUMENTTYPE:10,NODETYPE_DOCUMENT_FRAGMENT:11,NODETYPE_NOTATION:12,TOOLTIP_VERTICAL_OFFSET:16,DEFAULT_VALID_COLOR:"#00FF00",DEFAULT_INVALID_COLOR:"#FF0000",HIGHLIGHT_STROKEWIDTH:3,CURSOR_MOVABLE_VERTEX:"move",CURSOR_MOVABLE_EDGE:"move",CURSOR_LABEL_HANDLE:"default",CURSOR_BEND_HANDLE:"pointer",CURSOR_CONNECT:"pointer",HIGHLIGHT_COLOR:"#00FF00",CONNECT_TARGET_COLOR:"#0000FF",INVALID_CONNECT_TARGET_COLOR:"#FF0000",DROP_TARGET_COLOR:"#0000FF",VALID_COLOR:"#00FF00",INVALID_COLOR:"#FF0000",EDGE_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_COLOR:"#00FF00",VERTEX_SELECTION_STROKEWIDTH:1,EDGE_SELECTION_STROKEWIDTH:1,VERTEX_SELECTION_DASHED:!0,EDGE_SELECTION_DASHED:!0,GUIDE_COLOR:"#FF0000",GUIDE_STROKEWIDTH:1,OUTLINE_COLOR:"#0099FF",OUTLINE_STROKEWIDTH:mxClient.IS_IE?2:3,HANDLE_SIZE:7,LABEL_HANDLE_SIZE:4,HANDLE_FILLCOLOR:"#00FF00",HANDLE_STROKECOLOR:"black",LABEL_HANDLE_FILLCOLOR:"yellow",CONNECT_HANDLE_FILLCOLOR:"#0000FF",LOCKED_HANDLE_FILLCOLOR:"#FF0000",OUTLINE_HANDLE_FILLCOLOR:"#00FFFF",OUTLINE_HANDLE_STROKECOLOR:"#0033FF",DEFAULT_FONTFAMILY:"Arial,Helvetica",DEFAULT_FONTSIZE:11,LINE_HEIGHT:1.2,DEFAULT_FONTSTYLE:0,DEFAULT_STARTSIZE:40,DEFAULT_MARKERSIZE:6,DEFAULT_IMAGESIZE:24,ENTITY_SEGMENT:30,RECTANGLE_ROUNDING_FACTOR:.15,LINE_ARCSIZE:20,ARROW_SPACING:10,ARROW_WIDTH:30,ARROW_SIZE:30,PAGE_FORMAT_A4_PORTRAIT:new mxRectangle(0,0,826,1169),PAGE_FORMAT_A4_LANDSCAPE:new mxRectangle(0,0,1169,826),PAGE_FORMAT_LETTER_PORTRAIT:new mxRectangle(0,0,850,1100),PAGE_FORMAT_LETTER_LANDSCAPE:new mxRectangle(0,0,1100,850),NONE:"none",STYLE_PERIMETER:"perimeter",STYLE_SOURCE_PORT:"sourcePort",STYLE_TARGET_PORT:"targetPort",STYLE_PORT_CONSTRAINT:"portConstraint",STYLE_OPACITY:"opacity",STYLE_TEXT_OPACITY:"textOpacity",STYLE_OVERFLOW:"overflow",STYLE_ORTHOGONAL:"orthogonal",STYLE_EXIT_X:"exitX",STYLE_EXIT_Y:"exitY",STYLE_EXIT_PERIMETER:"exitPerimeter",STYLE_ENTRY_X:"entryX",STYLE_ENTRY_Y:"entryY",STYLE_ENTRY_PERIMETER:"entryPerimeter",STYLE_WHITE_SPACE:"whiteSpace",STYLE_ROTATION:"rotation",STYLE_FILLCOLOR:"fillColor",STYLE_SWIMLANE_FILLCOLOR:"swimlaneFillColor",STYLE_GRADIENTCOLOR:"gradientColor",STYLE_GRADIENT_DIRECTION:"gradientDirection",STYLE_STROKECOLOR:"strokeColor",STYLE_SEPARATORCOLOR:"separatorColor",STYLE_STROKEWIDTH:"strokeWidth",STYLE_ALIGN:"align",STYLE_VERTICAL_ALIGN:"verticalAlign",STYLE_LABEL_POSITION:"labelPosition",STYLE_VERTICAL_LABEL_POSITION:"verticalLabelPosition",STYLE_IMAGE_ASPECT:"imageAspect",STYLE_IMAGE_ALIGN:"imageAlign",STYLE_IMAGE_VERTICAL_ALIGN:"imageVerticalAlign",STYLE_GLASS:"glass",STYLE_IMAGE:"image",STYLE_IMAGE_WIDTH:"imageWidth",STYLE_IMAGE_HEIGHT:"imageHeight",STYLE_IMAGE_BACKGROUND:"imageBackground",STYLE_IMAGE_BORDER:"imageBorder",STYLE_FLIPH:"flipH",STYLE_FLIPV:"flipV",STYLE_NOLABEL:"noLabel",STYLE_NOEDGESTYLE:"noEdgeStyle",STYLE_LABEL_BACKGROUNDCOLOR:"labelBackgroundColor",STYLE_LABEL_BORDERCOLOR:"labelBorderColor",STYLE_LABEL_PADDING:"labelPadding",STYLE_INDICATOR_SHAPE:"indicatorShape",STYLE_INDICATOR_IMAGE:"indicatorImage",STYLE_INDICATOR_COLOR:"indicatorColor",STYLE_INDICATOR_STROKECOLOR:"indicatorStrokeColor",STYLE_INDICATOR_GRADIENTCOLOR:"indicatorGradientColor",STYLE_INDICATOR_SPACING:"indicatorSpacing",STYLE_INDICATOR_WIDTH:"indicatorWidth",STYLE_INDICATOR_HEIGHT:"indicatorHeight",STYLE_INDICATOR_DIRECTION:"indicatorDirection",STYLE_SHADOW:"shadow",STYLE_SEGMENT:"segment",STYLE_ENDARROW:"endArrow",STYLE_STARTARROW:"startArrow",STYLE_ENDSIZE:"endSize",STYLE_STARTSIZE:"startSize",STYLE_SWIMLANE_LINE:"swimlaneLine",STYLE_ENDFILL:"endFill",STYLE_STARTFILL:"startFill",STYLE_DASHED:"dashed",STYLE_DASH_PATTERN:"dashPattern",STYLE_ROUNDED:"rounded",STYLE_CURVED:"curved",STYLE_ARCSIZE:"arcSize",STYLE_SMOOTH:"smooth",STYLE_SOURCE_PERIMETER_SPACING:"sourcePerimeterSpacing",STYLE_TARGET_PERIMETER_SPACING:"targetPerimeterSpacing",STYLE_PERIMETER_SPACING:"perimeterSpacing",STYLE_SPACING:"spacing",STYLE_SPACING_TOP:"spacingTop",STYLE_SPACING_LEFT:"spacingLeft",STYLE_SPACING_BOTTOM:"spacingBottom",STYLE_SPACING_RIGHT:"spacingRight",STYLE_HORIZONTAL:"horizontal",STYLE_DIRECTION:"direction",STYLE_ELBOW:"elbow",STYLE_FONTCOLOR:"fontColor",STYLE_FONTFAMILY:"fontFamily",STYLE_FONTSIZE:"fontSize",STYLE_FONTSTYLE:"fontStyle",STYLE_AUTOSIZE:"autosize",STYLE_FOLDABLE:"foldable",STYLE_EDITABLE:"editable",STYLE_BENDABLE:"bendable",STYLE_MOVABLE:"movable",STYLE_RESIZABLE:"resizable",STYLE_CLONEABLE:"cloneable",STYLE_DELETABLE:"deletable",STYLE_SHAPE:"shape",STYLE_EDGE:"edgeStyle",STYLE_LOOP:"loopStyle",STYLE_ROUTING_CENTER_X:"routingCenterX",STYLE_ROUTING_CENTER_Y:"routingCenterY",FONT_BOLD:1,FONT_ITALIC:2,FONT_UNDERLINE:4,FONT_SHADOW:8,SHAPE_RECTANGLE:"rectangle",SHAPE_ELLIPSE:"ellipse",SHAPE_DOUBLE_ELLIPSE:"doubleEllipse",SHAPE_RHOMBUS:"rhombus",SHAPE_LINE:"line",SHAPE_IMAGE:"image",SHAPE_ARROW:"arrow",SHAPE_LABEL:"label",SHAPE_CYLINDER:"cylinder",SHAPE_SWIMLANE:"swimlane",SHAPE_CONNECTOR:"connector",SHAPE_ACTOR:"actor",SHAPE_CLOUD:"cloud",SHAPE_TRIANGLE:"triangle",SHAPE_HEXAGON:"hexagon",ARROW_CLASSIC:"classic",ARROW_BLOCK:"block",ARROW_OPEN:"open",ARROW_OVAL:"oval",ARROW_DIAMOND:"diamond",ARROW_DIAMOND_THIN:"diamondThin",ALIGN_LEFT:"left",ALIGN_CENTER:"center",ALIGN_RIGHT:"right",ALIGN_TOP:"top",ALIGN_MIDDLE:"middle",ALIGN_BOTTOM:"bottom",DIRECTION_NORTH:"north",DIRECTION_SOUTH:"south",DIRECTION_EAST:"east",DIRECTION_WEST:"west",DIRECTION_MASK_NONE:0,DIRECTION_MASK_WEST:1,DIRECTION_MASK_NORTH:2,DIRECTION_MASK_SOUTH:4,DIRECTION_MASK_EAST:8,DIRECTION_MASK_ALL:15,ELBOW_VERTICAL:"vertical",ELBOW_HORIZONTAL:"horizontal",EDGESTYLE_ELBOW:"elbowEdgeStyle",EDGESTYLE_ENTITY_RELATION:"entityRelationEdgeStyle",EDGESTYLE_LOOP:"loopEdgeStyle",EDGESTYLE_SIDETOSIDE:"sideToSideEdgeStyle",EDGESTYLE_TOPTOBOTTOM:"topToBottomEdgeStyle",EDGESTYLE_ORTHOGONAL:"orthogonalEdgeStyle",EDGESTYLE_SEGMENT:"segmentEdgeStyle",PERIMETER_ELLIPSE:"ellipsePerimeter",PERIMETER_RECTANGLE:"rectanglePerimeter",PERIMETER_RHOMBUS:"rhombusPerimeter",PERIMETER_TRIANGLE:"trianglePerimeter"};function mxEventObject(e){this.name=e,this.properties=[];for(var n=1;n<arguments.length;n+=2)null!=arguments[n+1]&&(this.properties[arguments[n]]=arguments[n+1])}function mxMouseEvent(e,n){this.evt=e,this.state=n}function mxEventSource(e){this.setEventSource(e)}mxEventObject.prototype.name=null,mxEventObject.prototype.properties=null,mxEventObject.prototype.consumed=!1,mxEventObject.prototype.getName=function(){return this.name},mxEventObject.prototype.getProperties=function(){return this.properties},mxEventObject.prototype.getProperty=function(e){return this.properties[e]},mxEventObject.prototype.isConsumed=function(){return this.consumed},mxEventObject.prototype.consume=function(){this.consumed=!0},mxMouseEvent.prototype.consumed=!1,mxMouseEvent.prototype.evt=null,mxMouseEvent.prototype.graphX=null,mxMouseEvent.prototype.graphY=null,mxMouseEvent.prototype.state=null,mxMouseEvent.prototype.getEvent=function(){return this.evt},mxMouseEvent.prototype.getSource=function(){return mxEvent.getSource(this.evt)},mxMouseEvent.prototype.isSource=function(e){if(null!=e)for(var n=this.getSource();null!=n;){if(n==e.node)return!0;n=n.parentNode}return!1},mxMouseEvent.prototype.getX=function(){return mxEvent.getClientX(this.getEvent())},mxMouseEvent.prototype.getY=function(){return mxEvent.getClientY(this.getEvent())},mxMouseEvent.prototype.getGraphX=function(){return this.graphX},mxMouseEvent.prototype.getGraphY=function(){return this.graphY},mxMouseEvent.prototype.getState=function(){return this.state},mxMouseEvent.prototype.getCell=function(){var e=this.getState();return null!=e?e.cell:null},mxMouseEvent.prototype.isPopupTrigger=function(){return mxEvent.isPopupTrigger(this.getEvent())},mxMouseEvent.prototype.isConsumed=function(){return this.consumed},mxMouseEvent.prototype.consume=function(e){(null==e||e)&&this.evt.preventDefault&&this.evt.preventDefault(),this.evt.returnValue=!1,this.consumed=!0},mxEventSource.prototype.eventListeners=null,mxEventSource.prototype.eventsEnabled=!0,mxEventSource.prototype.eventSource=null,mxEventSource.prototype.isEventsEnabled=function(){return this.eventsEnabled},mxEventSource.prototype.setEventsEnabled=function(e){this.eventsEnabled=e},mxEventSource.prototype.getEventSource=function(){return this.eventSource},mxEventSource.prototype.setEventSource=function(e){this.eventSource=e},mxEventSource.prototype.addListener=function(e,n){null==this.eventListeners&&(this.eventListeners=[]),this.eventListeners.push(e),this.eventListeners.push(n)},mxEventSource.prototype.removeListener=function(e){if(null!=this.eventListeners)for(var n=0;n<this.eventListeners.length;)this.eventListeners[n+1]==e?this.eventListeners.splice(n,2):n+=2},mxEventSource.prototype.fireEvent=function(e,n){if(null!=this.eventListeners&&this.isEventsEnabled()){null==e&&(e=new mxEventObject),null==n&&(n=this.getEventSource()),null==n&&(n=this);for(var t=[n,e],a=0;a<this.eventListeners.length;a+=2){var i=this.eventListeners[a];(null==i||i==e.getName())&&this.eventListeners[a+1].apply(this,t)}}};var mxEvent={objects:[],addListener:function(){var a=function(e,n,t){null==e.mxListenerList&&(e.mxListenerList=[],mxEvent.objects.push(e)),e.mxListenerList.push({name:n,f:t})};return window.addEventListener?function(e,n,t){e.addEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.attachEvent("on"+n,t),a(e,n,t)}}(),removeListener:function(){var a=function(e,n,t){if(null!=e.mxListenerList){n=e.mxListenerList.length;for(var a=0;a<n;a++)if(e.mxListenerList[a].f==t){e.mxListenerList.splice(a,1);break}0==e.mxListenerList.length&&(e.mxListenerList=null)}};return window.removeEventListener?function(e,n,t){e.removeEventListener(n,t,!1),a(e,n,t)}:function(e,n,t){e.detachEvent("on"+n,t),a(e,n,t)}}(),removeAllListeners:function(e){var n=e.mxListenerList;if(null!=n)for(;0<n.length;){var t=n[0];mxEvent.removeListener(e,t.name,t.f)}},addGestureListeners:function(e,n,t,a){null!=n&&mxEvent.addListener(e,"mousedown",n),null!=t&&mxEvent.addListener(e,"mousemove",t),null!=a&&mxEvent.addListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.addListener(e,"touchstart",n),null!=t&&mxEvent.addListener(e,"touchmove",t),null!=a&&mxEvent.addListener(e,"touchend",a))},removeGestureListeners:function(e,n,t,a){null!=n&&mxEvent.removeListener(e,"mousedown",n),null!=t&&mxEvent.removeListener(e,"mousemove",t),null!=a&&mxEvent.removeListener(e,"mouseup",a),mxClient.IS_TOUCH&&(null!=n&&mxEvent.removeListener(e,"touchstart",n),null!=t&&mxEvent.removeListener(e,"touchmove",t),null!=a&&mxEvent.removeListener(e,"touchend",a))},redirectMouseEvents:function(e,t,n,a,i,s,o){var r=function(e){return"function"==typeof n?n(e):n};mxEvent.addGestureListeners(e,function(e){null!=a?a(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,r(e)))},function(e){null!=i?i(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,r(e)))},function(e){null!=s?s(e):mxEvent.isConsumed(e)||t.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,r(e)))}),mxEvent.addListener(e,"dblclick",function(e){if(null!=o)o(e);else if(!mxEvent.isConsumed(e)){var n=r(e);t.dblClick(e,null!=n?n.cell:null)}})},release:function(e){if(null!=e&&(mxEvent.removeAllListeners(e),null!=(e=e.childNodes)))for(var n=e.length,t=0;t<n;t+=1)mxEvent.release(e[t])},addMouseWheelListener:function(t){if(null!=t){var e=function(e){null==e&&(e=window.event);var n=0;0!=(n=!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC?e.wheelDelta/120:-e.detail/2)&&t(e,0<n)};mxClient.IS_NS?mxEvent.addListener(window,mxClient.IS_SF||mxClient.IS_GC?"mousewheel":"DOMMouseScroll",e):mxEvent.addListener(document,"mousewheel",e)}},disableContextMenu:mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?function(e){mxEvent.addListener(e,"contextmenu",function(){return!1})}:function(e){e.setAttribute("oncontextmenu","return false;")},getSource:function(e){return null!=e.srcElement?e.srcElement:e.target},isConsumed:function(e){return null!=e.isConsumed&&e.isConsumed},isLeftMouseButton:function(e){return e.button==(mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?1:0)},isRightMouseButton:function(e){return 2==e.button},isPopupTrigger:function(e){return mxEvent.isRightMouseButton(e)||mxEvent.isShiftDown(e)&&!mxEvent.isControlDown(e)},isShiftDown:function(e){return null!=e&&e.shiftKey},isAltDown:function(e){return null!=e&&e.altKey},isControlDown:function(e){return null!=e&&e.ctrlKey},isMetaDown:function(e){return null!=e&&e.metaKey},getMainEvent:function(e){return"touchstart"!=e.type&&"touchmove"!=e.type||null==e.touches||null==e.touches[0]?"touchend"==e.type&&null!=e.changedTouches&&null!=e.changedTouches[0]&&(e=e.changedTouches[0]):e=e.touches[0],e},getClientX:function(e){return mxEvent.getMainEvent(e).clientX},getClientY:function(e){return mxEvent.getMainEvent(e).clientY},consume:function(e,n,t){t=null==t||t,(null==n||n)&&(e.preventDefault?(t&&e.stopPropagation(),e.preventDefault()):t&&(e.cancelBubble=!0)),e.isConsumed=!0,e.returnValue=!1},LABEL_HANDLE:-1,ROTATION_HANDLE:-2,MOUSE_DOWN:"mouseDown",MOUSE_MOVE:"mouseMove",MOUSE_UP:"mouseUp",ACTIVATE:"activate",RESIZE_START:"resizeStart",RESIZE:"resize",RESIZE_END:"resizeEnd",MOVE_START:"moveStart",MOVE:"move",MOVE_END:"moveEnd",PAN_START:"panStart",PAN:"pan",PAN_END:"panEnd",MINIMIZE:"minimize",NORMALIZE:"normalize",MAXIMIZE:"maximize",HIDE:"hide",SHOW:"show",CLOSE:"close",DESTROY:"destroy",REFRESH:"refresh",SIZE:"size",SELECT:"select",FIRED:"fired",GET:"get",RECEIVE:"receive",CONNECT:"connect",DISCONNECT:"disconnect",SUSPEND:"suspend",RESUME:"resume",MARK:"mark",SESSION:"session",ROOT:"root",POST:"post",OPEN:"open",SAVE:"save",BEFORE_ADD_VERTEX:"beforeAddVertex",ADD_VERTEX:"addVertex",AFTER_ADD_VERTEX:"afterAddVertex",DONE:"done",EXECUTE:"execute",EXECUTED:"executed",BEGIN_UPDATE:"beginUpdate",START_EDIT:"startEdit",END_UPDATE:"endUpdate",END_EDIT:"endEdit",BEFORE_UNDO:"beforeUndo",UNDO:"undo",REDO:"redo",CHANGE:"change",NOTIFY:"notify",LAYOUT_CELLS:"layoutCells",CLICK:"click",SCALE:"scale",TRANSLATE:"translate",SCALE_AND_TRANSLATE:"scaleAndTranslate",UP:"up",DOWN:"down",ADD:"add",REMOVE:"remove",CLEAR:"clear",ADD_CELLS:"addCells",CELLS_ADDED:"cellsAdded",MOVE_CELLS:"moveCells",CELLS_MOVED:"cellsMoved",RESIZE_CELLS:"resizeCells",CELLS_RESIZED:"cellsResized",TOGGLE_CELLS:"toggleCells",CELLS_TOGGLED:"cellsToggled",ORDER_CELLS:"orderCells",CELLS_ORDERED:"cellsOrdered",REMOVE_CELLS:"removeCells",CELLS_REMOVED:"cellsRemoved",GROUP_CELLS:"groupCells",UNGROUP_CELLS:"ungroupCells",REMOVE_CELLS_FROM_PARENT:"removeCellsFromParent",FOLD_CELLS:"foldCells",CELLS_FOLDED:"cellsFolded",ALIGN_CELLS:"alignCells",LABEL_CHANGED:"labelChanged",CONNECT_CELL:"connectCell",CELL_CONNECTED:"cellConnected",SPLIT_EDGE:"splitEdge",FLIP_EDGE:"flipEdge",START_EDITING:"startEditing",ADD_OVERLAY:"addOverlay",REMOVE_OVERLAY:"removeOverlay",UPDATE_CELL_SIZE:"updateCellSize",ESCAPE:"escape",CLICK:"click",DOUBLE_CLICK:"doubleClick",START:"start",RESET:"reset"};function mxXmlRequest(e,n,t,a,i,s){this.url=e,this.params=n,this.method=t||"POST",this.async=null==a||a,this.username=i,this.password=s}mxXmlRequest.prototype.url=null,mxXmlRequest.prototype.params=null,mxXmlRequest.prototype.method=null,mxXmlRequest.prototype.async=null,mxXmlRequest.prototype.binary=!1,mxXmlRequest.prototype.username=null,mxXmlRequest.prototype.password=null,mxXmlRequest.prototype.request=null,mxXmlRequest.prototype.isBinary=function(){return this.binary},mxXmlRequest.prototype.setBinary=function(e){this.binary=e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.isReady=function(){return 4==this.request.readyState},mxXmlRequest.prototype.getDocumentElement=function(){var e=this.getXml();return null!=e?e.documentElement:null},mxXmlRequest.prototype.getXml=function(){var e=this.request.responseXML;return(9<=document.documentMode||null==e||null==e.documentElement)&&(e=mxUtils.parseXml(this.request.responseText)),e},mxXmlRequest.prototype.getText=function(){return this.request.responseText},mxXmlRequest.prototype.getStatus=function(){return this.request.status},mxXmlRequest.prototype.create=window.XMLHttpRequest?function(){var e=new XMLHttpRequest;return this.isBinary()&&e.overrideMimeType&&e.overrideMimeType("text/plain; charset=x-user-defined"),e}:"undefined"!=typeof ActiveXObject?function(){return new ActiveXObject("Microsoft.XMLHTTP")}:void 0,mxXmlRequest.prototype.send=function(e,n){this.request=this.create(),null!=this.request&&(null!=e&&(this.request.onreadystatechange=mxUtils.bind(this,function(){this.isReady()&&(e(this),this.onreadystatechaange=null)})),this.request.open(this.method,this.url,this.async,this.username,this.password),this.setRequestHeaders(this.request,this.params),this.request.send(this.params))},mxXmlRequest.prototype.setRequestHeaders=function(e,n){null!=n&&e.setRequestHeader("Content-Type","application/x-www-form-urlencoded")},mxXmlRequest.prototype.simulate=function(e,n){var t=null;(e=e||document)==document&&(t=window.onbeforeunload,window.onbeforeunload=null);var a=e.createElement("form");a.setAttribute("method",this.method),a.setAttribute("action",this.url),null!=n&&a.setAttribute("target",n),a.style.display="none",a.style.visibility="hidden";for(var i=0<this.params.indexOf("&")?this.params.split("&"):this.params.split(),s=0;s<i.length;s++){if(0<(o=i[s].indexOf("="))){var o,r=i[s].substring(0,o),l=i[s].substring(o+1);(o=e.createElement("textarea")).setAttribute("name",r),l=l.replace(/\n/g,"&#xa;"),r=e.createTextNode(l),o.appendChild(r),a.appendChild(o)}}e.body.appendChild(a),a.submit(),e.body.removeChild(a),null!=t&&(window.onbeforeunload=t)};var mxClipboard={STEPSIZE:10,insertCount:1,cells:null,isEmpty:function(){return null==mxClipboard.cells},cut:function(e,n){return n=mxClipboard.copy(e,n),mxClipboard.insertCount=0,mxClipboard.removeCells(e,n),n},removeCells:function(e,n){e.removeCells(n)},copy:function(e,n){n=n||e.getSelectionCells();var t=e.getExportableCells(n);return mxClipboard.insertCount=1,mxClipboard.cells=e.cloneCells(t),t},paste:function(e){if(null!=mxClipboard.cells){var n=e.getImportableCells(mxClipboard.cells),t=mxClipboard.insertCount*mxClipboard.STEPSIZE,a=e.getDefaultParent();n=e.importCells(n,t,t,a);mxClipboard.insertCount++,e.setSelectionCells(n)}}};function mxWindow(e,n,t,a,i,s,o,r,l,d){null!=n&&(o=null==o||o,this.content=n,this.init(t,a,i,s,d),this.installMaximizeHandler(),this.installMinimizeHandler(),this.installCloseHandler(),this.setMinimizable(o),this.setTitle(e),(null==r||r)&&this.installMoveHandler(),null!=l&&null!=l.parentNode?l.parentNode.replaceChild(this.div,l):document.body.appendChild(this.div))}function mxForm(e){this.table=document.createElement("table"),this.table.className=e,this.body=document.createElement("tbody"),this.table.appendChild(this.body)}function mxImage(e,n,t){this.src=e,this.width=n,this.height=t}function mxDivResizer(e,n){if("div"==e.nodeName.toLowerCase()){null==n&&(n=window),this.div=e;var t=mxUtils.getCurrentStyle(e);null!=t&&(this.resizeWidth="auto"==t.width,this.resizeHeight="auto"==t.height),mxEvent.addListener(n,"resize",mxUtils.bind(this,function(e){this.handlingResize||(this.handlingResize=!0,this.resize(),this.handlingResize=!1)})),this.resize()}}function mxDragSource(e,n){this.element=e,this.dropHandler=n,mxEvent.addGestureListeners(e,mxUtils.bind(this,this.mouseDown))}function mxToolbar(e){this.container=e}function mxSession(n,e,t,a){this.model=n,this.urlInit=e,this.urlPoll=t,this.urlNotify=a,null!=n&&(this.codec=new mxCodec,this.codec.lookup=function(e){return n.getCell(e)}),n.addListener(mxEvent.NOTIFY,mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");(null!=t&&this.debug||this.connected&&!this.suspended)&&this.notify("<edit>"+this.encodeChanges(t.changes,t.undone)+"</edit>")}))}function mxUndoableEdit(e,n){this.source=e,this.changes=[],this.significant=null==n||n}function mxUndoManager(e){this.size=null!=e?e:100,this.clear()}mxWindow.prototype=new mxEventSource,mxWindow.prototype.constructor=mxWindow,mxWindow.prototype.closeImage=mxClient.imageBasePath+"/close.gif",mxWindow.prototype.minimizeImage=mxClient.imageBasePath+"/minimize.gif",mxWindow.prototype.normalizeImage=mxClient.imageBasePath+"/normalize.gif",mxWindow.prototype.maximizeImage=mxClient.imageBasePath+"/maximize.gif",mxWindow.prototype.resizeImage=mxClient.imageBasePath+"/resize.gif",mxWindow.prototype.visible=!1,mxWindow.prototype.content=!1,mxWindow.prototype.minimumSize=new mxRectangle(0,0,50,40),mxWindow.prototype.title=!1,mxWindow.prototype.content=!1,mxWindow.prototype.destroyOnClose=!0,mxWindow.prototype.init=function(e,n,t,a,i){i=null!=i?i:"mxWindow",this.div=document.createElement("div"),this.div.className=i,this.div.style.left=e+"px",this.div.style.top=n+"px",this.table=document.createElement("table"),this.table.className=i,null!=t&&(mxClient.IS_IE||(this.div.style.width=t+"px"),this.table.style.width=t+"px"),null!=a&&(mxClient.IS_IE||(this.div.style.height=a+"px"),this.table.style.height=a+"px"),e=document.createElement("tbody"),n=document.createElement("tr"),this.title=document.createElement("td"),this.title.className=i+"Title",n.appendChild(this.title),e.appendChild(n),n=document.createElement("tr"),this.td=document.createElement("td"),this.td.className=i+"Pane",this.contentWrapper=document.createElement("div"),this.contentWrapper.className=i+"Pane",this.contentWrapper.style.width="100%",this.contentWrapper.appendChild(this.content),(mxClient.IS_IE||"DIV"!=this.content.nodeName.toUpperCase())&&(this.contentWrapper.style.height="100%"),this.td.appendChild(this.contentWrapper),n.appendChild(this.td),e.appendChild(n),this.table.appendChild(e),this.div.appendChild(this.table),i=mxUtils.bind(this,function(e){this.activate()}),mxEvent.addListener(this.title,"mousedown",i),mxEvent.addListener(this.table,"mousedown",i),mxClient.IS_TOUCH&&(mxEvent.addListener(this.title,"touchstart",i),mxEvent.addListener(this.table,"touchstart",i)),this.hide()},mxWindow.prototype.setTitle=function(e){for(var n=this.title.firstChild;null!=n;){var t=n.nextSibling;n.nodeType==mxConstants.NODETYPE_TEXT&&n.parentNode.removeChild(n),n=t}mxUtils.write(this.title,e||"")},mxWindow.prototype.setScrollable=function(e){navigator.userAgent.indexOf("Presto/2.5")<0&&(this.contentWrapper.style.overflow=e?"auto":"hidden")},mxWindow.prototype.activate=function(){if(mxWindow.activeWindow!=this){var e=null!=(e=mxUtils.getCurrentStyle(this.getElement()))?e.zIndex:3;if(mxWindow.activeWindow){var n=mxWindow.activeWindow.getElement();null!=n&&null!=n.style&&(n.style.zIndex=e)}n=mxWindow.activeWindow,this.getElement().style.zIndex=parseInt(e)+1,(mxWindow.activeWindow=this).fireEvent(new mxEventObject(mxEvent.ACTIVATE,"previousWindow",n))}},mxWindow.prototype.getElement=function(){return this.div},mxWindow.prototype.fit=function(){mxUtils.fit(this.div)},mxWindow.prototype.isResizable=function(){return null!=this.resize&&"none"!=this.resize.style.display},mxWindow.prototype.setResizable=function(e){e?null==this.resize?(this.resize=document.createElement("img"),this.resize.style.position="absolute",this.resize.style.bottom="2px",this.resize.style.right="2px",this.resize.setAttribute("src",mxClient.imageBasePath+"/resize.gif"),this.resize.style.cursor="nw-resize",mxEvent.addGestureListeners(this.resize,mxUtils.bind(this,function(e){this.activate();var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.div.offsetWidth,o=this.div.offsetHeight,n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setSize(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.RESIZE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.RESIZE_START,"event",e)),mxEvent.consume(e)}),null,null),this.div.appendChild(this.resize)):this.resize.style.display="inline":null!=this.resize&&(this.resize.style.display="none")},mxWindow.prototype.setSize=function(e,n){e=Math.max(this.minimumSize.width,e),n=Math.max(this.minimumSize.height,n),mxClient.IS_IE||(this.div.style.width=e+"px",this.div.style.height=n+"px"),this.table.style.width=e+"px",this.table.style.height=n+"px",mxClient.IS_IE||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")},mxWindow.prototype.setMinimizable=function(e){this.minimize.style.display=e?"":"none"},mxWindow.prototype.getMinimumSize=function(){return new mxRectangle(0,0,0,this.title.offsetHeight)},mxWindow.prototype.installMinimizeHandler=function(){this.minimize=document.createElement("img"),this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("align","right"),this.minimize.setAttribute("title","Minimize"),this.minimize.style.cursor="pointer",this.minimize.style.marginRight="1px",this.minimize.style.display="none",this.title.appendChild(this.minimize);var t=!1,a=null,i=null,e=mxUtils.bind(this,function(e){if(this.activate(),t)t=!1,this.minimize.setAttribute("src",this.minimizeImage),this.minimize.setAttribute("title","Minimize"),this.contentWrapper.style.display="",this.maximize.style.display=a,mxClient.IS_IE||(this.div.style.height=i),this.table.style.height=i,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{t=!0,this.minimize.setAttribute("src",this.normalizeImage),this.minimize.setAttribute("title","Normalize"),this.contentWrapper.style.display="none",a=this.maximize.style.display,this.maximize.style.display="none",i=this.table.style.height;var n=this.getMinimumSize();0<n.height&&(mxClient.IS_IE||(this.div.style.height=n.height+"px"),this.table.style.height=n.height+"px"),0<n.width&&(mxClient.IS_IE||(this.div.style.width=n.width+"px"),this.table.style.width=n.width+"px"),null!=this.resize&&(this.resize.style.visibility="hidden"),this.fireEvent(new mxEventObject(mxEvent.MINIMIZE,"event",e))}mxEvent.consume(e)});mxEvent.addListener(this.minimize,"mousedown",e),mxClient.IS_TOUCH&&mxEvent.addListener(this.minimize,"touchstart",e)},mxWindow.prototype.setMaximizable=function(e){this.maximize.style.display=e?"":"none"},mxWindow.prototype.installMaximizeHandler=function(){this.maximize=document.createElement("img"),this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("align","right"),this.maximize.setAttribute("title","Maximize"),this.maximize.style.cursor="default",this.maximize.style.marginLeft="1px",this.maximize.style.cursor="pointer",this.maximize.style.display="none",this.title.appendChild(this.maximize);var t=!1,a=null,i=null,s=null,o=null,e=mxUtils.bind(this,function(e){if(this.activate(),"none"!=this.maximize.style.display){if(t)t=!1,this.maximize.setAttribute("src",this.maximizeImage),this.maximize.setAttribute("title","Maximize"),this.contentWrapper.style.display="",this.minimize.style.visibility="",this.div.style.left=a+"px",this.div.style.top=i+"px",mxClient.IS_IE||(this.div.style.height=s,this.div.style.width=o,"auto"!=(n=mxUtils.getCurrentStyle(this.contentWrapper)).overflow&&null==this.resize)||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.table.style.height=s,this.table.style.width=o,null!=this.resize&&(this.resize.style.visibility=""),this.fireEvent(new mxEventObject(mxEvent.NORMALIZE,"event",e));else{if(t=!0,this.maximize.setAttribute("src",this.normalizeImage),this.maximize.setAttribute("title","Normalize"),this.contentWrapper.style.display="",this.minimize.style.visibility="hidden",a=parseInt(this.div.style.left),i=parseInt(this.div.style.top),s=this.table.style.height,o=this.table.style.width,this.div.style.left="0px",this.div.style.top="0px",mxClient.IS_IE||(this.div.style.height=document.body.clientHeight-2+"px",this.div.style.width=document.body.clientWidth-2+"px"),this.table.style.width=document.body.clientWidth-2+"px",this.table.style.height=document.body.clientHeight-2+"px",null!=this.resize&&(this.resize.style.visibility="hidden"),!mxClient.IS_IE){var n=mxUtils.getCurrentStyle(this.contentWrapper);"auto"!=n.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px")}this.fireEvent(new mxEventObject(mxEvent.MAXIMIZE,"event",e))}mxEvent.consume(e)}});mxEvent.addGestureListeners(this.maximize,e),mxEvent.addListener(this.title,"dblclick",e)},mxWindow.prototype.installMoveHandler=function(){this.title.style.cursor="move",mxEvent.addGestureListeners(this.title,mxUtils.bind(this,function(e){var a=mxEvent.getClientX(e),i=mxEvent.getClientY(e),s=this.getX(),o=this.getY(),n=mxUtils.bind(this,function(e){var n=mxEvent.getClientX(e)-a,t=mxEvent.getClientY(e)-i;this.setLocation(s+n,o+t),this.fireEvent(new mxEventObject(mxEvent.MOVE,"event",e)),mxEvent.consume(e)}),t=mxUtils.bind(this,function(e){mxEvent.removeGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_END,"event",e)),mxEvent.consume(e)});mxEvent.addGestureListeners(document,null,n,t),this.fireEvent(new mxEventObject(mxEvent.MOVE_START,"event",e)),mxEvent.consume(e)}))},mxWindow.prototype.setLocation=function(e,n){this.div.style.left=e+"px",this.div.style.top=n+"px"},mxWindow.prototype.getX=function(){return parseInt(this.div.style.left)},mxWindow.prototype.getY=function(){return parseInt(this.div.style.top)},mxWindow.prototype.installCloseHandler=function(){this.closeImg=document.createElement("img"),this.closeImg.setAttribute("src",this.closeImage),this.closeImg.setAttribute("align","right"),this.closeImg.setAttribute("title","Close"),this.closeImg.style.marginLeft="2px",this.closeImg.style.cursor="pointer",this.closeImg.style.display="none",this.title.insertBefore(this.closeImg,this.title.firstChild),mxEvent.addGestureListeners(this.closeImg,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.CLOSE,"event",e)),this.destroyOnClose?this.destroy():this.setVisible(!1),mxEvent.consume(e)}))},mxWindow.prototype.setImage=function(e){this.image=document.createElement("img"),this.image.setAttribute("src",e),this.image.setAttribute("align","left"),this.image.style.marginRight="4px",this.image.style.marginLeft="0px",this.image.style.marginTop="-2px",this.title.insertBefore(this.image,this.title.firstChild)},mxWindow.prototype.setClosable=function(e){this.closeImg.style.display=e?"":"none"},mxWindow.prototype.isVisible=function(){return null!=this.div&&"hidden"!=this.div.style.visibility},mxWindow.prototype.setVisible=function(e){null!=this.div&&this.isVisible()!=e&&(e?this.show():this.hide())},mxWindow.prototype.show=function(){this.div.style.visibility="",this.activate();var e=mxUtils.getCurrentStyle(this.contentWrapper);mxClient.IS_IE||"auto"!=e.overflow&&null==this.resize||(this.contentWrapper.style.height=this.div.offsetHeight-this.title.offsetHeight-2+"px"),this.fireEvent(new mxEventObject(mxEvent.SHOW))},mxWindow.prototype.hide=function(){this.div.style.visibility="hidden",this.fireEvent(new mxEventObject(mxEvent.HIDE))},mxWindow.prototype.destroy=function(){this.fireEvent(new mxEventObject(mxEvent.DESTROY)),null!=this.div&&(mxEvent.release(this.div),this.div.parentNode.removeChild(this.div),this.div=null),this.contentWrapper=this.content=this.title=null},mxForm.prototype.table=null,mxForm.prototype.body=!1,mxForm.prototype.getTable=function(){return this.table},mxForm.prototype.addButtons=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");t.appendChild(a);a=document.createElement("td");var i=document.createElement("button");mxUtils.write(i,mxResources.get("ok")||"OK"),a.appendChild(i),mxEvent.addListener(i,"click",function(){e()}),i=document.createElement("button"),mxUtils.write(i,mxResources.get("cancel")||"Cancel"),a.appendChild(i),mxEvent.addListener(i,"click",function(){n()}),t.appendChild(a),this.body.appendChild(t)},mxForm.prototype.addText=function(e,n){var t=document.createElement("input");return t.setAttribute("type","text"),t.value=n,this.addField(e,t)},mxForm.prototype.addCheckbox=function(e,n){var t=document.createElement("input");return t.setAttribute("type","checkbox"),this.addField(e,t),n&&(t.checked=!0),t},mxForm.prototype.addTextarea=function(e,n,t){var a=document.createElement("textarea");return mxClient.IS_NS&&t--,a.setAttribute("rows",t||2),a.value=n,this.addField(e,a)},mxForm.prototype.addCombo=function(e,n,t){var a=document.createElement("select");return null!=t&&a.setAttribute("size",t),n&&a.setAttribute("multiple","true"),this.addField(e,a)},mxForm.prototype.addOption=function(e,n,t,a){var i=document.createElement("option");mxUtils.writeln(i,n),i.setAttribute("value",t),a&&i.setAttribute("selected",a),e.appendChild(i)},mxForm.prototype.addField=function(e,n){var t=document.createElement("tr"),a=document.createElement("td");return mxUtils.write(a,e),t.appendChild(a),(a=document.createElement("td")).appendChild(n),t.appendChild(a),this.body.appendChild(t),n},mxImage.prototype.src=null,mxImage.prototype.width=null,mxImage.prototype.height=null,mxDivResizer.prototype.resizeWidth=!0,mxDivResizer.prototype.resizeHeight=!0,mxDivResizer.prototype.handlingResize=!1,mxDivResizer.prototype.resize=function(){var e=this.getDocumentWidth(),n=this.getDocumentHeight(),t=parseInt(this.div.style.left),a=parseInt(this.div.style.right),i=parseInt(this.div.style.top),s=parseInt(this.div.style.bottom);this.resizeWidth&&!isNaN(t)&&!isNaN(a)&&0<=t&&0<=a&&0<e-a-t&&(this.div.style.width=e-a-t+"px"),this.resizeHeight&&!isNaN(i)&&!isNaN(s)&&0<=i&&0<=s&&0<n-i-s&&(this.div.style.height=n-i-s+"px")},mxDivResizer.prototype.getDocumentWidth=function(){return document.body.clientWidth},mxDivResizer.prototype.getDocumentHeight=function(){return document.body.clientHeight},mxDragSource.prototype.element=null,mxDragSource.prototype.dropHandler=null,mxDragSource.prototype.dragOffset=null,mxDragSource.prototype.dragElement=null,mxDragSource.prototype.previewElement=null,mxDragSource.prototype.enabled=!0,mxDragSource.prototype.currentGraph=null,mxDragSource.prototype.currentDropTarget=null,mxDragSource.prototype.currentPoint=null,mxDragSource.prototype.currentGuide=null,mxDragSource.prototype.currentHighlight=null,mxDragSource.prototype.autoscroll=!0,mxDragSource.prototype.guidesEnabled=!0,mxDragSource.prototype.gridEnabled=!0,mxDragSource.prototype.highlightDropTargets=!0,mxDragSource.prototype.dragElementZIndex=100,mxDragSource.prototype.dragElementOpacity=70,mxDragSource.prototype.isEnabled=function(){return this.enabled},mxDragSource.prototype.setEnabled=function(e){this.enabled=e},mxDragSource.prototype.isGuidesEnabled=function(){return this.guidesEnabled},mxDragSource.prototype.setGuidesEnabled=function(e){this.guidesEnabled=e},mxDragSource.prototype.isGridEnabled=function(){return this.gridEnabled},mxDragSource.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxDragSource.prototype.getGraphForEvent=function(e){return null},mxDragSource.prototype.getDropTarget=function(e,n,t){return e.getCellAt(n,t)},mxDragSource.prototype.createDragElement=function(e){return this.element.cloneNode(!0)},mxDragSource.prototype.createPreviewElement=function(e){return null},mxDragSource.prototype.mouseDown=function(e){this.enabled&&!mxEvent.isConsumed(e)&&null==this.mouseMoveHandler&&(this.startDrag(e),this.mouseMoveHandler=mxUtils.bind(this,this.mouseMove),this.mouseUpHandler=mxUtils.bind(this,this.mouseUp),mxEvent.addGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),mxEvent.consume(e,!0,!1))},mxDragSource.prototype.startDrag=function(e){this.dragElement=this.createDragElement(e),this.dragElement.style.position="absolute",this.dragElement.style.zIndex=this.dragElementZIndex,mxUtils.setOpacity(this.dragElement,this.dragElementOpacity)},mxDragSource.prototype.stopDrag=function(e){null!=this.dragElement&&(null!=this.dragElement.parentNode&&this.dragElement.parentNode.removeChild(this.dragElement),this.dragElement=null)},mxDragSource.prototype.graphContainsEvent=function(e,n){var t=mxEvent.getClientX(n),a=mxEvent.getClientY(n),i=mxUtils.getOffset(e.container),s=mxUtils.getScrollOrigin();return t>=i.x-s.x&&a>=i.y-s.y&&t<=i.x-s.x+e.container.offsetWidth&&a<=i.y-s.y+e.container.offsetHeight},mxDragSource.prototype.mouseMove=function(e){if(null!=(n=this.getGraphForEvent(e))&&!this.graphContainsEvent(n,e)&&(n=null),n!=this.currentGraph&&(null!=this.currentGraph&&this.dragExit(this.currentGraph),this.currentGraph=n,null!=this.currentGraph&&this.dragEnter(this.currentGraph)),null!=this.currentGraph&&this.dragOver(this.currentGraph,e),null==this.dragElement||null!=this.previewElement&&"visible"==this.previewElement.style.visibility)null!=this.dragElement&&(this.dragElement.style.visibility="hidden");else{var n=mxEvent.getClientX(e),t=mxEvent.getClientY(e);null==this.dragElement.parentNode&&document.body.appendChild(this.dragElement),this.dragElement.style.visibility="visible",null!=this.dragOffset&&(n+=this.dragOffset.x,t+=this.dragOffset.y),n+=document.body.scrollLeft||document.documentElement.scrollLeft,t+=document.body.scrollTop||document.documentElement.scrollTop,this.dragElement.style.left=n+"px",this.dragElement.style.top=t+"px"}mxEvent.consume(e)},mxDragSource.prototype.mouseUp=function(e){if(null!=this.currentGraph){if(null!=this.currentPoint&&(null==this.previewElement||"hidden"!=this.previewElement.style.visibility)){var n=this.currentGraph.view.scale,t=this.currentGraph.view.translate;this.drop(this.currentGraph,e,this.currentDropTarget,this.currentPoint.x/n-t.x,this.currentPoint.y/n-t.y)}this.dragExit(this.currentGraph)}this.stopDrag(e),mxEvent.removeGestureListeners(document,null,this.mouseMoveHandler,this.mouseUpHandler),this.currentGraph=this.mouseUpHandler=this.mouseMoveHandler=null,mxEvent.consume(e)},mxDragSource.prototype.dragEnter=function(e){e.isMouseDown=!0,this.previewElement=this.createPreviewElement(e),this.isGuidesEnabled()&&null!=this.previewElement&&(this.currentGuide=new mxGuide(e,e.graphHandler.getGuideStates())),this.highlightDropTargets&&(this.currentHighlight=new mxCellHighlight(e,mxConstants.DROP_TARGET_COLOR))},mxDragSource.prototype.dragExit=function(e){this.currentPoint=this.currentDropTarget=null,e.isMouseDown=!1,null!=this.previewElement&&(null!=this.previewElement.parentNode&&this.previewElement.parentNode.removeChild(this.previewElement),this.previewElement=null),null!=this.currentGuide&&(this.currentGuide.destroy(),this.currentGuide=null),null!=this.currentHighlight&&(this.currentHighlight.destroy(),this.currentHighlight=null)},mxDragSource.prototype.dragOver=function(e,n){var t=mxUtils.getOffset(e.container),a=mxUtils.getScrollOrigin(e.container),i=mxEvent.getClientX(n)-t.x+a.x;t=mxEvent.getClientY(n)-t.y+a.y;if(e.autoScroll&&(null==this.autoscroll||this.autoscroll)&&e.scrollPointToVisible(i,t,e.autoExtend),null!=this.currentHighlight&&e.isDropEnabled()&&(this.currentDropTarget=this.getDropTarget(e,i,t),a=e.getView().getState(this.currentDropTarget),this.currentHighlight.highlight(a)),null!=this.previewElement){null==this.previewElement.parentNode&&(e.container.appendChild(this.previewElement),this.previewElement.style.zIndex="3",this.previewElement.style.position="absolute");a=this.isGridEnabled()&&e.isGridEnabledEvent(n);var s=!0;if(null!=this.currentGuide&&this.currentGuide.isEnabledForEvent(n))s=new mxRectangle(0,0,s=parseInt(this.previewElement.style.width),o=parseInt(this.previewElement.style.height)),t=new mxPoint(i,t),t=this.currentGuide.move(s,t,a),s=!1,i=t.x,t=t.y;else if(a){a=e.view.scale;var o=e.view.translate,r=e.gridSize/2;i=(e.snap(i/a-o.x-r)+o.x)*a,t=(e.snap(t/a-o.y-r)+o.y)*a}null!=this.currentGuide&&s&&this.currentGuide.hide(),null!=this.previewOffset&&(i+=this.previewOffset.x,t+=this.previewOffset.y),this.previewElement.style.left=Math.round(i)+"px",this.previewElement.style.top=Math.round(t)+"px",this.previewElement.style.visibility="visible"}this.currentPoint=new mxPoint(i,t)},mxDragSource.prototype.drop=function(e,n,t,a,i){this.dropHandler(e,n,t,a,i),e.container.focus()},mxToolbar.prototype=new mxEventSource,mxToolbar.prototype.constructor=mxToolbar,mxToolbar.prototype.container=null,mxToolbar.prototype.enabled=!0,mxToolbar.prototype.noReset=!1,mxToolbar.prototype.updateDefaultMode=!0,mxToolbar.prototype.addItem=function(e,n,t,a,i,s){var o=document.createElement(null!=n?"img":"button"),r=i||(null!=s?"mxToolbarMode":"mxToolbarItem");return o.className=r,o.setAttribute("src",n),null!=e&&(null!=n?o.setAttribute("title",e):mxUtils.write(o,e)),this.container.appendChild(o),null!=t&&(mxEvent.addListener(o,"click",t),mxClient.IS_TOUCH&&mxEvent.addListener(o,"touchend",t)),e=mxUtils.bind(this,function(e){null!=a?o.setAttribute("src",n):o.style.backgroundColor=""}),mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){if(null!=a?o.setAttribute("src",a):o.style.backgroundColor="gray",null!=s){null==this.menu&&(this.menu=new mxPopupMenu,this.menu.init());var n=this.currentImg;this.menu.isMenuShowing()&&this.menu.hideMenu(),n!=o&&(this.currentImg=o,this.menu.factoryMethod=s,n=new mxPoint(o.offsetLeft,o.offsetTop+o.offsetHeight),this.menu.popup(n.x,n.y,null,e),this.menu.isMenuShowing()&&(o.className=r+"Selected",this.menu.hideMenu=function(){mxPopupMenu.prototype.hideMenu.apply(this),o.className=r,this.currentImg=null}))}}),null,e),mxEvent.addListener(o,"mouseout",e),o},mxToolbar.prototype.addCombo=function(e){var n=document.createElement("div");n.style.display="inline",n.className="mxToolbarComboContainer";var t=document.createElement("select");return t.className=e||"mxToolbarCombo",n.appendChild(t),this.container.appendChild(n),t},mxToolbar.prototype.addActionCombo=function(e,n){var t=document.createElement("select");return t.className=n||"mxToolbarCombo",this.addOption(t,e,null),mxEvent.addListener(t,"change",function(e){var n=t.options[t.selectedIndex];t.selectedIndex=0,null!=n.funct&&n.funct(e)}),this.container.appendChild(t),t},mxToolbar.prototype.addOption=function(e,n,t){var a=document.createElement("option");return mxUtils.writeln(a,n),"function"==typeof t?a.funct=t:a.setAttribute("value",t),e.appendChild(a),a},mxToolbar.prototype.addSwitchMode=function(e,n,t,a,i){var s=document.createElement("img");return s.initialClassName=i||"mxToolbarMode",s.className=s.initialClassName,s.setAttribute("src",n),s.altIcon=a,null!=e&&s.setAttribute("title",e),mxEvent.addListener(s,"click",mxUtils.bind(this,function(e){null!=(e=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",e)):this.selectedMode.className=this.selectedMode.initialClassName,this.updateDefaultMode&&(this.defaultMode=s),null!=(e=(this.selectedMode=s).altIcon)?(s.altIcon=s.getAttribute("src"),s.setAttribute("src",e)):s.className=s.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT)),t()})),this.container.appendChild(s),null==this.defaultMode&&(this.defaultMode=s,this.selectMode(s),t()),s},mxToolbar.prototype.addMode=function(e,n,t,a,i,s){s=null==s||s;var o=document.createElement(null!=n?"img":"button");return o.initialClassName=i||"mxToolbarMode",o.className=o.initialClassName,o.setAttribute("src",n),o.altIcon=a,null!=e&&o.setAttribute("title",e),this.enabled&&s&&(mxEvent.addListener(o,"click",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!1})),mxEvent.addListener(o,"dblclick",mxUtils.bind(this,function(e){this.selectMode(o,t),this.noReset=!0})),null==this.defaultMode&&(this.defaultMode=o,this.defaultFunction=t,this.selectMode(o,t))),this.container.appendChild(o),o},mxToolbar.prototype.selectMode=function(e,n){if(this.selectedMode!=e){if(null!=this.selectedMode){var t=this.selectedMode.altIcon;null!=t?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName}this.selectedMode=e,null!=(t=this.selectedMode.altIcon)?(this.selectedMode.altIcon=this.selectedMode.getAttribute("src"),this.selectedMode.setAttribute("src",t)):this.selectedMode.className=this.selectedMode.initialClassName+"Selected",this.fireEvent(new mxEventObject(mxEvent.SELECT,"function",n))}},mxToolbar.prototype.resetMode=function(e){(e||!this.noReset)&&this.selectedMode!=this.defaultMode&&this.selectMode(this.defaultMode,this.defaultFunction)},mxToolbar.prototype.addSeparator=function(e){return this.addItem(null,e,null)},mxToolbar.prototype.addBreak=function(){mxUtils.br(this.container)},mxToolbar.prototype.addLine=function(){var e=document.createElement("hr");e.style.marginRight="6px",e.setAttribute("size","1"),this.container.appendChild(e)},mxToolbar.prototype.destroy=function(){mxEvent.release(this.container),this.selectedMode=this.defaultFunction=this.defaultMode=this.container=null,null!=this.menu&&this.menu.destroy()},mxSession.prototype=new mxEventSource,mxSession.prototype.constructor=mxSession,mxSession.prototype.model=null,mxSession.prototype.urlInit=null,mxSession.prototype.urlPoll=null,mxSession.prototype.urlNotify=null,mxSession.prototype.codec=null,mxSession.prototype.linefeed="&#xa;",mxSession.prototype.escapePostData=!0,mxSession.prototype.significantRemoteChanges=!0,mxSession.prototype.sent=0,mxSession.prototype.received=0,mxSession.prototype.debug=!1,mxSession.prototype.connected=!1,mxSession.prototype.suspended=!1,mxSession.prototype.polling=!1,mxSession.prototype.start=function(){this.debug?(this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT))):this.connected||this.get(this.urlInit,mxUtils.bind(this,function(e){this.connected=!0,this.fireEvent(new mxEventObject(mxEvent.CONNECT)),this.poll()}))},mxSession.prototype.suspend=function(){this.connected&&!this.suspended&&(this.suspended=!0,this.fireEvent(new mxEventObject(mxEvent.SUSPEND)))},mxSession.prototype.resume=function(e,n,t){this.connected&&this.suspended&&(this.suspended=!1,this.fireEvent(new mxEventObject(mxEvent.RESUME)),this.polling||this.poll())},mxSession.prototype.stop=function(e){this.connected&&(this.connected=!1),this.fireEvent(new mxEventObject(mxEvent.DISCONNECT,"reason",e))},mxSession.prototype.poll=function(){this.connected&&!this.suspended&&null!=this.urlPoll?(this.polling=!0,this.get(this.urlPoll,mxUtils.bind(this,function(){this.poll()}))):this.polling=!1},mxSession.prototype.notify=function(e,n,t){null!=e&&0<e.length&&(null!=this.urlNotify&&(this.debug?(mxLog.show(),mxLog.debug("mxSession.notify: "+this.urlNotify+" xml="+e)):(e="<message><delta>"+e+"</delta></message>",this.escapePostData&&(e=encodeURIComponent(e)),mxUtils.post(this.urlNotify,"xml="+e,n,t))),this.sent+=e.length,this.fireEvent(new mxEventObject(mxEvent.NOTIFY,"url",this.urlNotify,"xml",e)))},mxSession.prototype.get=function(t,a,n){if(void 0!==mxUtils){var i=mxUtils.bind(this,function(e){null!=n?n(e):this.stop(e)});mxUtils.get(t,mxUtils.bind(this,function(e){if(void 0!==mxUtils)if(e.isReady()&&404!=e.getStatus()){if(this.received+=e.getText().length,this.fireEvent(new mxEventObject(mxEvent.GET,"url",t,"request",e)),this.isValidResponse(e)){if(0<e.getText().length){var n=e.getDocumentElement();null==n?i("Invalid response: "+e.getText()):this.receive(n)}null!=a&&a(e)}}else i("Response not ready")}),function(e){i("Transmission error")})}},mxSession.prototype.isValidResponse=function(e){return e.getText().indexOf("<?php")<0},mxSession.prototype.encodeChanges=function(e,n){for(var t="",a=n?-1:1,i=n?e.length-1:0;0<=i&&i<e.length;i+=a){var s=this.codec.encode(e[i]);t=t+mxUtils.getXml(s,this.linefeed)}return t},mxSession.prototype.receive=function(e){if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){var n=e.getAttribute("namespace");for(null!=n&&(this.model.prefix=n+"-"),n=e.firstChild;null!=n;){var t=n.nodeName.toLowerCase();"state"==t?this.processState(n):"delta"==t&&this.processDelta(n),n=n.nextSibling}this.fireEvent(new mxEventObject(mxEvent.RECEIVE,"node",e))}},mxSession.prototype.processState=function(e){new mxCodec(e.ownerDocument).decode(e.firstChild,this.model)},mxSession.prototype.processDelta=function(e){for(e=e.firstChild;null!=e;)"edit"==e.nodeName&&this.processEdit(e),e=e.nextSibling},mxSession.prototype.processEdit=function(e){if(0<(e=this.decodeChanges(e)).length){var n=this.createUndoableEdit(e);this.model.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",e)),this.model.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",n)),this.fireEvent(new mxEventObject(mxEvent.FIRED,"edit",n))}},mxSession.prototype.createUndoableEdit=function(e){var n=new mxUndoableEdit(this.model,this.significantRemoteChanges);return n.changes=e,n.notify=function(){n.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",n,"changes",n.changes)),n.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",n,"changes",n.changes))},n},mxSession.prototype.decodeChanges=function(e){this.codec.document=e.ownerDocument;var n=[];for(e=e.firstChild;null!=e;){var t=this.decodeChange(e);null!=t&&n.push(t),e=e.nextSibling}return n},mxSession.prototype.decodeChange=function(e){var n=null;return e.nodeType==mxConstants.NODETYPE_ELEMENT&&(null!=(n="mxRootChange"==e.nodeName?new mxCodec(e.ownerDocument).decode(e):this.codec.decode(e))&&(n.model=this.model,n.execute(),"mxChildChange"==e.nodeName&&null==n.parent&&this.cellRemoved(n.child))),n},mxSession.prototype.cellRemoved=function(e,n){this.codec.putObject(e.getId(),e);for(var t=this.model.getChildCount(e),a=0;a<t;a++)this.cellRemoved(this.model.getChildAt(e,a))},mxUndoableEdit.prototype.source=null,mxUndoableEdit.prototype.changes=null,mxUndoableEdit.prototype.significant=null,mxUndoableEdit.prototype.undone=!1,mxUndoableEdit.prototype.redone=!1,mxUndoableEdit.prototype.isEmpty=function(){return 0==this.changes.length},mxUndoableEdit.prototype.isSignificant=function(){return this.significant},mxUndoableEdit.prototype.add=function(e){this.changes.push(e)},mxUndoableEdit.prototype.notify=function(){},mxUndoableEdit.prototype.die=function(){},mxUndoableEdit.prototype.undo=function(){if(!this.undone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length-1;0<=e;e--){var n=this.changes[e];null!=n.execute?n.execute():null!=n.undo&&n.undo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",n))}this.undone=!0,this.redone=!1,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoableEdit.prototype.redo=function(){if(!this.redone){this.source.fireEvent(new mxEventObject(mxEvent.START_EDIT));for(var e=this.changes.length,n=0;n<e;n++){var t=this.changes[n];null!=t.execute?t.execute():null!=t.redo&&t.redo(),this.source.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",t))}this.undone=!1,this.redone=!0,this.source.fireEvent(new mxEventObject(mxEvent.END_EDIT))}this.notify()},mxUndoManager.prototype=new mxEventSource,mxUndoManager.prototype.constructor=mxUndoManager,mxUndoManager.prototype.size=null,mxUndoManager.prototype.history=null,mxUndoManager.prototype.indexOfNextAdd=0,mxUndoManager.prototype.isEmpty=function(){return 0==this.history.length},mxUndoManager.prototype.clear=function(){this.history=[],this.indexOfNextAdd=0,this.fireEvent(new mxEventObject(mxEvent.CLEAR))},mxUndoManager.prototype.canUndo=function(){return 0<this.indexOfNextAdd},mxUndoManager.prototype.undo=function(){for(;0<this.indexOfNextAdd;){var e=this.history[--this.indexOfNextAdd];if(e.undo(),e.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e));break}}},mxUndoManager.prototype.canRedo=function(){return this.indexOfNextAdd<this.history.length},mxUndoManager.prototype.redo=function(){for(var e=this.history.length;this.indexOfNextAdd<e;){var n=this.history[this.indexOfNextAdd++];if(n.redo(),n.isSignificant()){this.fireEvent(new mxEventObject(mxEvent.REDO,"edit",n));break}}},mxUndoManager.prototype.undoableEditHappened=function(e){this.trim(),0<this.size&&this.size==this.history.length&&this.history.shift(),this.history.push(e),this.indexOfNextAdd=this.history.length,this.fireEvent(new mxEventObject(mxEvent.ADD,"edit",e))},mxUndoManager.prototype.trim=function(){if(this.history.length>this.indexOfNextAdd)for(var e=this.history.splice(this.indexOfNextAdd,this.history.length-this.indexOfNextAdd),n=0;n<e.length;n++)e[n].die()};var mxUrlConverter=function(e){var t=!0,a=null,i=null;return{isEnabled:function(){return t},setEnabled:function(e){t=e},getBaseUrl:function(){return a},setBaseUrl:function(e){a=e},getBaseDomain:function(){return a},setBaseDomain:function(e){a=e},isRelativeUrl:function(e){return"http://"!=e.substring(0,7)&&"https://"!=e.substring(0,8)&&"data:image"!=e.substring(0,10)},convert:function(e){if(t&&this.isRelativeUrl(e)){if(null==a){i=location.protocol+"//"+location.host;var n=(a=i+location.pathname).lastIndexOf("/");0<n&&(a=a.substring(0,n+1))}e="/"==e.charAt(0)?i+e:a+e}return e}}};function mxPanningManager(s){this.thread=null,this.active=!1,this.dy=this.dx=this.t0y=this.t0x=this.tdy=this.tdx=0,this.scrollbars=!1,this.scrollTop=this.scrollLeft=0,this.mouseListener={mouseDown:function(e,n){},mouseMove:function(e,n){},mouseUp:mxUtils.bind(this,function(e,n){this.active&&this.stop()})},s.addMouseListener(this.mouseListener),mxEvent.addListener(document,"mouseup",mxUtils.bind(this,function(){this.active&&this.stop()}));var o=mxUtils.bind(this,function(){return this.scrollbars=mxUtils.hasScrollbars(s.container),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,window.setInterval(mxUtils.bind(this,function(){if(this.tdx-=this.dx,this.tdy-=this.dy,this.scrollbars){var e=-s.container.scrollLeft-Math.ceil(this.dx),n=-s.container.scrollTop-Math.ceil(this.dy);s.panGraph(e,n),s.panDx=this.scrollLeft-s.container.scrollLeft,s.panDy=this.scrollTop-s.container.scrollTop,s.fireEvent(new mxEventObject(mxEvent.PAN))}else s.panGraph(this.getDx(),this.getDy())}),this.delay)});this.isActive=function(){return active},this.getDx=function(){return Math.round(this.tdx)},this.getDy=function(){return Math.round(this.tdy)},this.start=function(){this.t0x=s.view.translate.x,this.t0y=s.view.translate.y,this.active=!0},this.panTo=function(e,n,t,a){this.active||this.start(),this.scrollLeft=s.container.scrollLeft,this.scrollTop=s.container.scrollTop,a=null!=a?a:0;var i=s.container;this.dx=e+(null!=t?t:0)-i.scrollLeft-i.clientWidth,this.dx<0&&Math.abs(this.dx)<this.border?this.dx=this.border+this.dx:this.dx=this.handleMouseOut?Math.max(this.dx,0):0,0==this.dx&&(this.dx=e-i.scrollLeft,this.dx=0<this.dx&&this.dx<this.border?this.dx-this.border:this.handleMouseOut?Math.min(0,this.dx):0),this.dy=n+a-i.scrollTop-i.clientHeight,this.dy<0&&Math.abs(this.dy)<this.border?this.dy=this.border+this.dy:this.dy=this.handleMouseOut?Math.max(this.dy,0):0,0==this.dy&&(this.dy=n-i.scrollTop,this.dy=0<this.dy&&this.dy<this.border?this.dy-this.border:this.handleMouseOut?Math.min(0,this.dy):0),0!=this.dx||0!=this.dy?(this.dx*=this.damper,this.dy*=this.damper,null==this.thread&&(this.thread=o())):null!=this.thread&&(window.clearInterval(this.thread),this.thread=null)},this.stop=function(){if(this.active)if(this.active=!1,null!=this.thread&&(window.clearInterval(this.thread),this.thread=null),this.tdy=this.tdx=0,this.scrollbars)s.panDx=0,s.panDy=0,s.fireEvent(new mxEventObject(mxEvent.PAN));else{var e=s.panDx,n=s.panDy;0==e&&0==n||(s.panGraph(0,0),s.view.setTranslate(this.t0x+e/s.view.scale,this.t0y+n/s.view.scale))}},this.destroy=function(){s.removeMouseListener(this.mouseListener)}}function mxPopupMenu(e){null!=(this.factoryMethod=e)&&this.init()}function mxAutoSaveManager(e){this.changeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.graphModelChanged(n.getProperty("edit").changes)}),this.setGraph(e)}function mxAnimation(e){this.delay=null!=e?e:20}function mxMorphing(e,n,t,a){mxAnimation.call(this,a),this.graph=e,this.steps=null!=n?n:6,this.ease=null!=t?t:1.5}function mxImageBundle(e){this.images=[],this.alt=null!=e&&e}function mxImageExport(){}function mxAbstractCanvas2D(){this.converter=this.createUrlConverter(),this.reset()}function mxXmlCanvas2D(e){mxAbstractCanvas2D.call(this),this.root=e,this.writeDefaults()}function mxSvgCanvas2D(e,n){mxAbstractCanvas2D.call(this),this.root=e,this.gradients=[],this.defs=null,this.styleEnabled=null!=n&&n;var t=null;if(e.ownerDocument!=document)for(t=e;null!=t&&"svg"!=t.nodeName;)t=t.parentNode;null!=t&&(0<t.getElementsByTagName("defs").length&&(this.defs=t.getElementsByTagName("defs")[0]),null==this.defs&&(this.defs=this.createElement("defs"),null!=t.firstChild?t.insertBefore(this.defs,t.firstChild):t.appendChild(this.defs)),this.styleEnabled&&this.defs.appendChild(this.createStyle()))}mxPanningManager.prototype.damper=1/6,mxPanningManager.prototype.delay=10,mxPanningManager.prototype.handleMouseOut=!0,mxPanningManager.prototype.border=0,mxPopupMenu.prototype=new mxEventSource,mxPopupMenu.prototype.constructor=mxPopupMenu,mxPopupMenu.prototype.submenuImage=mxClient.imageBasePath+"/submenu.gif",mxPopupMenu.prototype.zIndex=10006,mxPopupMenu.prototype.factoryMethod=null,mxPopupMenu.prototype.useLeftButtonForPopup=!1,mxPopupMenu.prototype.enabled=!0,mxPopupMenu.prototype.itemCount=0,mxPopupMenu.prototype.autoExpand=!1,mxPopupMenu.prototype.smartSeparators=!1,mxPopupMenu.prototype.labels=!0,mxPopupMenu.prototype.init=function(){this.table=document.createElement("table"),this.table.className="mxPopupMenu",this.tbody=document.createElement("tbody"),this.table.appendChild(this.tbody),this.div=document.createElement("div"),this.div.className="mxPopupMenu",this.div.style.display="inline",this.div.style.zIndex=this.zIndex,this.div.appendChild(this.table),mxEvent.disableContextMenu(this.div)},mxPopupMenu.prototype.isEnabled=function(){return this.enabled},mxPopupMenu.prototype.setEnabled=function(e){this.enabled=e},mxPopupMenu.prototype.isPopupTrigger=function(e){return e.isPopupTrigger()||this.useLeftButtonForPopup&&mxEvent.isLeftMouseButton(e.getEvent())},mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){a=a||this,this.itemCount++,a.willAddSeparator&&(a.containsItems&&this.addSeparator(a,!0),a.willAddSeparator=!1),a.containsItems=!0;var o=document.createElement("tr");o.className="mxPopupMenuItem";var r=document.createElement("td");return r.className="mxPopupMenuIcon",null!=n?((i=document.createElement("img")).src=n,r.appendChild(i)):null!=i&&((n=document.createElement("div")).className=i,r.appendChild(n)),o.appendChild(r),this.labels&&((r=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),mxUtils.write(r,e),r.align="left",o.appendChild(r),(e=document.createElement("td")).className="mxPopupMenuItem"+(null==s||s?"":" disabled"),e.style.paddingRight="6px",e.style.textAlign="right",o.appendChild(e),null==a.div&&this.createSubmenu(a)),a.tbody.appendChild(o),(null==s||s)&&(mxEvent.addGestureListeners(o,mxUtils.bind(this,function(e){this.eventReceiver=o,a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),mxEvent.consume(e)}),mxUtils.bind(this,function(e){a.activeRow!=o&&a.activeRow!=a&&(null!=a.activeRow&&null!=a.activeRow.div.parentNode&&this.hideSubmenu(a),this.autoExpand&&null!=o.div&&(this.showSubmenu(a,o),a.activeRow=o)),o.className="mxPopupMenuItemHover"}),mxUtils.bind(this,function(e){this.eventReceiver==o&&(a.activeRow!=o&&this.hideMenu(),null!=t&&t(e)),this.eventReceiver=null,mxEvent.consume(e)})),mxEvent.addListener(o,"mouseout",mxUtils.bind(this,function(e){o.className="mxPopupMenuItem"}))),o},mxPopupMenu.prototype.createSubmenu=function(e){e.table=document.createElement("table"),e.table.className="mxPopupMenu",e.tbody=document.createElement("tbody"),e.table.appendChild(e.tbody),e.div=document.createElement("div"),e.div.className="mxPopupMenu",e.div.style.position="absolute",e.div.style.display="inline",e.div.style.zIndex=this.zIndex,e.div.appendChild(e.table);var n=document.createElement("img");n.setAttribute("src",this.submenuImage),td=e.firstChild.nextSibling.nextSibling,td.appendChild(n)},mxPopupMenu.prototype.showSubmenu=function(e,n){if(null!=n.div){n.div.style.left=e.div.offsetLeft+n.offsetLeft+n.offsetWidth-1+"px",n.div.style.top=e.div.offsetTop+n.offsetTop+"px",document.body.appendChild(n.div);var t=parseInt(n.div.offsetLeft),a=parseInt(n.div.offsetWidth),i=document.body,s=document.documentElement;t+a>(i.scrollLeft||s.scrollLeft)+(i.clientWidth||s.clientWidth)&&(n.div.style.left=e.div.offsetLeft-a+(mxClient.IS_IE?6:-6)+"px"),mxUtils.fit(n.div)}},mxPopupMenu.prototype.addSeparator=function(e,n){if(e=e||this,this.smartSeparators&&!n)e.willAddSeparator=!0;else if(null!=e.tbody){e.willAddSeparator=!1;var t=document.createElement("tr"),a=document.createElement("td");a.className="mxPopupMenuIcon",a.style.padding="0 0 0 0px",t.appendChild(a),(a=document.createElement("td")).style.padding="0 0 0 0px",a.setAttribute("colSpan","2");var i=document.createElement("hr");i.setAttribute("size","1"),a.appendChild(i),t.appendChild(a),e.tbody.appendChild(t)}},mxPopupMenu.prototype.popup=function(e,n,t,a){if(null!=this.div&&null!=this.tbody&&null!=this.factoryMethod){for(this.div.style.left=e+"px",this.div.style.top=n+"px";null!=this.tbody.firstChild;)mxEvent.release(this.tbody.firstChild),this.tbody.removeChild(this.tbody.firstChild);this.itemCount=0,this.factoryMethod(this,t,a),0<this.itemCount&&(this.showMenu(),this.fireEvent(new mxEventObject(mxEvent.SHOW)))}},mxPopupMenu.prototype.isMenuShowing=function(){return null!=this.div&&this.div.parentNode==document.body},mxPopupMenu.prototype.showMenu=function(){9<=document.documentMode&&(this.div.style.filter="none"),document.body.appendChild(this.div),mxUtils.fit(this.div)},mxPopupMenu.prototype.hideMenu=function(){null!=this.div&&(null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.hideSubmenu(this),this.containsItems=!1)},mxPopupMenu.prototype.hideSubmenu=function(e){null!=e.activeRow&&(this.hideSubmenu(e.activeRow),null!=e.activeRow.div.parentNode&&e.activeRow.div.parentNode.removeChild(e.activeRow.div),e.activeRow=null)},mxPopupMenu.prototype.destroy=function(){null!=this.div&&(mxEvent.release(this.div),null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null)},mxAutoSaveManager.prototype=new mxEventSource,mxAutoSaveManager.prototype.constructor=mxAutoSaveManager,mxAutoSaveManager.prototype.graph=null,mxAutoSaveManager.prototype.autoSaveDelay=10,mxAutoSaveManager.prototype.autoSaveThrottle=2,mxAutoSaveManager.prototype.autoSaveThreshold=5,mxAutoSaveManager.prototype.ignoredChanges=0,mxAutoSaveManager.prototype.lastSnapshot=0,mxAutoSaveManager.prototype.enabled=!0,mxAutoSaveManager.prototype.changeHandler=null,mxAutoSaveManager.prototype.isEnabled=function(){return this.enabled},mxAutoSaveManager.prototype.setEnabled=function(e){this.enabled=e},mxAutoSaveManager.prototype.setGraph=function(e){null!=this.graph&&this.graph.getModel().removeListener(this.changeHandler),this.graph=e,null!=this.graph&&this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler)},mxAutoSaveManager.prototype.save=function(){},mxAutoSaveManager.prototype.graphModelChanged=function(e){(e=((new Date).getTime()-this.lastSnapshot)/1e3)>this.autoSaveDelay||this.ignoredChanges>=this.autoSaveThreshold&&e>this.autoSaveThrottle?(this.save(),this.reset()):this.ignoredChanges++},mxAutoSaveManager.prototype.reset=function(){this.lastSnapshot=(new Date).getTime(),this.ignoredChanges=0},mxAutoSaveManager.prototype.destroy=function(){this.setGraph(null)},mxAnimation.prototype=new mxEventSource,mxAnimation.prototype.constructor=mxAnimation,mxAnimation.prototype.delay=null,mxAnimation.prototype.thread=null,mxAnimation.prototype.startAnimation=function(){null==this.thread&&(this.thread=window.setInterval(mxUtils.bind(this,this.updateAnimation),this.delay))},mxAnimation.prototype.updateAnimation=function(){this.fireEvent(new mxEventObject(mxEvent.EXECUTE))},mxAnimation.prototype.stopAnimation=function(){null!=this.thread&&(window.clearInterval(this.thread),this.thread=null,this.fireEvent(new mxEventObject(mxEvent.DONE)))},mxMorphing.prototype=new mxAnimation,mxMorphing.prototype.constructor=mxMorphing,mxMorphing.prototype.graph=null,mxMorphing.prototype.steps=null,mxMorphing.prototype.step=0,mxMorphing.prototype.ease=null,mxMorphing.prototype.cells=null,mxMorphing.prototype.updateAnimation=function(){var e=new mxCellStatePreview(this.graph);if(null!=this.cells)for(var n=0;n<this.cells.length;n++)this.animateCell(cells[n],e,!1);else this.animateCell(this.graph.getModel().getRoot(),e,!0);this.show(e),(e.isEmpty()||this.step++>=this.steps)&&this.stopAnimation()},mxMorphing.prototype.show=function(e){e.show()},mxMorphing.prototype.animateCell=function(e,n,t){var a=this.graph.getView().getState(e),i=null;if(null!=a&&(i=this.getDelta(a),this.graph.getModel().isVertex(e)&&(0!=i.x||0!=i.y))){var s=this.graph.view.getTranslate(),o=this.graph.view.getScale();i.x+=s.x*o,i.y+=s.y*o,n.moveState(a,-i.x/this.ease,-i.y/this.ease)}if(t&&!this.stopRecursion(a,i))for(a=this.graph.getModel().getChildCount(e),i=0;i<a;i++)this.animateCell(this.graph.getModel().getChildAt(e,i),n,t)},mxMorphing.prototype.stopRecursion=function(e,n){return null!=n&&(0!=n.x||0!=n.y)},mxMorphing.prototype.getDelta=function(e){var n=this.getOriginForCell(e.cell),t=this.graph.getView().getTranslate(),a=this.graph.getView().getScale();return e=new mxPoint(e.x/a-t.x,e.y/a-t.y),new mxPoint((n.x-e.x)*a,(n.y-e.y)*a)},mxMorphing.prototype.getOriginForCell=function(e){var n=null;return null!=e&&(n=this.getOriginForCell(this.graph.getModel().getParent(e)),null!=(e=this.graph.getCellGeometry(e))&&(n.x+=e.x,n.y+=e.y)),null==n&&(n=new mxPoint(-(n=this.graph.view.getTranslate()).x,-n.y)),n},mxImageBundle.prototype.images=null,mxImageBundle.prototype.images=null,mxImageBundle.prototype.putImage=function(e,n,t){this.images[e]={value:n,fallback:t}},mxImageBundle.prototype.getImage=function(e){var n=null;return null!=e&&(null!=(e=this.images[e])&&(n=this.alt?e.fallback:e.value)),n},mxImageExport.prototype.includeOverlays=!1,mxImageExport.prototype.drawState=function(e,n){null!=e&&(this.visitStatesRecursive(e,n,this.drawCellState),this.includeOverlays&&this.visitStatesRecursive(e,n,this.drawOverlays))},mxImageExport.prototype.visitStatesRecursive=function(e,n,t){if(null!=e){t(e,n);for(var a=e.view.graph,i=a.model.getChildCount(e.cell),s=0;s<i;s++){var o=a.view.getState(a.model.getChildAt(e.cell,s));this.visitStatesRecursive(o,n,t)}}},mxImageExport.prototype.drawCellState=function(e,n){e.shape instanceof mxShape&&(n.save(),e.shape.paint(n),n.restore()),null!=e.text&&(n.save(),e.text.paint(n),n.restore())},mxImageExport.prototype.drawOverlays=function(e,t){null!=e.overlays&&e.overlays.visit(function(e,n){n instanceof mxShape&&n.paint(t)})},mxAbstractCanvas2D.prototype.state=null,mxAbstractCanvas2D.prototype.states=null,mxAbstractCanvas2D.prototype.path=null,mxAbstractCanvas2D.prototype.rotateHtml=!0,mxAbstractCanvas2D.prototype.lastX=0,mxAbstractCanvas2D.prototype.lastY=0,mxAbstractCanvas2D.prototype.moveOp="M",mxAbstractCanvas2D.prototype.lineOp="L",mxAbstractCanvas2D.prototype.quadOp="Q",mxAbstractCanvas2D.prototype.curveOp="C",mxAbstractCanvas2D.prototype.closeOp="Z",mxAbstractCanvas2D.prototype.pointerEvents=!1,mxAbstractCanvas2D.prototype.createUrlConverter=function(){return new mxUrlConverter},mxAbstractCanvas2D.prototype.reset=function(){this.state=this.createState(),this.states=[]},mxAbstractCanvas2D.prototype.createState=function(){return{dx:0,dy:0,scale:1,alpha:1,fillColor:null,fillAlpha:1,gradientColor:null,gradientAlpha:1,gradientDirection:null,strokeColor:null,strokeWidth:1,dashed:!1,dashPattern:"3 3",lineCap:"flat",lineJoin:"miter",miterLimit:10,fontColor:"#000000",fontBackgroundColor:null,fontBorderColor:null,fontSize:mxConstants.DEFAULT_FONTSIZE,fontFamily:mxConstants.DEFAULT_FONTFAMILY,fontStyle:0,shadow:!1,shadowColor:mxConstants.SHADOWCOLOR,shadowAlpha:mxConstants.SHADOW_OPACITY,shadowDx:mxConstants.SHADOW_OFFSET_X,shadowDy:mxConstants.SHADOW_OFFSET_Y,rotation:0,rotationCx:0,rotationCy:0}},mxAbstractCanvas2D.prototype.format=function(e){return Math.round(parseFloat(e))},mxAbstractCanvas2D.prototype.addOp=function(){if(null!=this.path&&(this.path.push(arguments[0]),2<arguments.length))for(var e=this.state,n=2;n<arguments.length;n+=2)this.lastX=arguments[n-1],this.lastY=arguments[n],this.path.push(this.format((this.lastX+e.dx)*e.scale)),this.path.push(this.format((this.lastY+e.dy)*e.scale))},mxAbstractCanvas2D.prototype.rotatePoint=function(e,n,t,a,i){return t*=Math.PI/180,mxUtils.getRotatedPoint(new mxPoint(e,n),Math.cos(t),Math.sin(t),new mxPoint(a,i))},mxAbstractCanvas2D.prototype.save=function(){this.states.push(this.state),this.state=mxUtils.clone(this.state)},mxAbstractCanvas2D.prototype.restore=function(){this.state=this.states.pop()},mxAbstractCanvas2D.prototype.scale=function(e){this.state.scale*=e,this.state.strokeWidth*=e},mxAbstractCanvas2D.prototype.translate=function(e,n){this.state.dx+=e,this.state.dy+=n},mxAbstractCanvas2D.prototype.setAlpha=function(e){this.state.alpha=e},mxAbstractCanvas2D.prototype.setFillColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fillColor=e,this.state.gradientColor=null},mxAbstractCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){(t=this.state).fillColor=e,t.fillAlpha=null!=r?r:1,t.gradientColor=n,t.gradientAlpha=null!=l?l:1,t.gradientDirection=o},mxAbstractCanvas2D.prototype.setStrokeColor=function(e){e==mxConstants.NONE&&(e=null),this.state.strokeColor=e},mxAbstractCanvas2D.prototype.setStrokeWidth=function(e){this.state.strokeWidth=e},mxAbstractCanvas2D.prototype.setDashed=function(e){this.state.dashed=e},mxAbstractCanvas2D.prototype.setDashPattern=function(e){this.state.dashPattern=e},mxAbstractCanvas2D.prototype.setLineCap=function(e){this.state.lineCap=e},mxAbstractCanvas2D.prototype.setLineJoin=function(e){this.state.lineJoin=e},mxAbstractCanvas2D.prototype.setMiterLimit=function(e){this.state.miterLimit=e},mxAbstractCanvas2D.prototype.setFontColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontColor=e},mxAbstractCanvas2D.prototype.setFontBackgroundColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBackgroundColor=e},mxAbstractCanvas2D.prototype.setFontBorderColor=function(e){e==mxConstants.NONE&&(e=null),this.state.fontBorderColor=e},mxAbstractCanvas2D.prototype.setFontSize=function(e){this.state.fontSize=e},mxAbstractCanvas2D.prototype.setFontFamily=function(e){this.state.fontFamily=e},mxAbstractCanvas2D.prototype.setFontStyle=function(e){null==e&&(e=0),this.state.fontStyle=e},mxAbstractCanvas2D.prototype.setShadow=function(e){this.state.shadow=e},mxAbstractCanvas2D.prototype.setShadowColor=function(e){e==mxConstants.NONE&&(e=null),this.state.shadowColor=e},mxAbstractCanvas2D.prototype.setShadowAlpha=function(e){this.state.shadowAlpha=e},mxAbstractCanvas2D.prototype.setShadowOffset=function(e,n){this.state.shadowDx=e,this.state.shadowDy=n},mxAbstractCanvas2D.prototype.begin=function(){this.lastY=this.lastX=0,this.path=[]},mxAbstractCanvas2D.prototype.moveTo=function(e,n){this.addOp(this.moveOp,e,n)},mxAbstractCanvas2D.prototype.lineTo=function(e,n){this.addOp(this.lineOp,e,n)},mxAbstractCanvas2D.prototype.quadTo=function(e,n,t,a){this.addOp(this.quadOp,e,n,t,a)},mxAbstractCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){this.addOp(this.curveOp,e,n,t,a,i,s)},mxAbstractCanvas2D.prototype.arcTo=function(e,n,t,a,i,s,o){for(e=mxUtils.arcToCurves(this.lastX,this.lastY,e,n,t,a,i,s,o),n=0;n<e.length;n+=6)this.curveTo(e[n],e[n+1],e[n+2],e[n+3],e[n+4],e[n+5])},mxAbstractCanvas2D.prototype.close=function(e,n,t,a,i,s){this.addOp(this.closeOp)},mxAbstractCanvas2D.prototype.end=function(){},mxUtils.extend(mxXmlCanvas2D,mxAbstractCanvas2D),mxXmlCanvas2D.prototype.textEnabled=!0,mxXmlCanvas2D.prototype.compressed=!0,mxXmlCanvas2D.prototype.writeDefaults=function(){var e;(e=this.createElement("fontfamily")).setAttribute("family",mxConstants.DEFAULT_FONTFAMILY),this.root.appendChild(e),(e=this.createElement("fontsize")).setAttribute("size",mxConstants.DEFAULT_FONTSIZE),this.root.appendChild(e),(e=this.createElement("shadowcolor")).setAttribute("color",mxConstants.SHADOWCOLOR),this.root.appendChild(e),(e=this.createElement("shadowalpha")).setAttribute("alpha",mxConstants.SHADOW_OPACITY),this.root.appendChild(e),(e=this.createElement("shadowoffset")).setAttribute("dx",mxConstants.SHADOW_OFFSET_X),e.setAttribute("dy",mxConstants.SHADOW_OFFSET_Y),this.root.appendChild(e)},mxXmlCanvas2D.prototype.format=function(e){return parseFloat(parseFloat(e).toFixed(2))},mxXmlCanvas2D.prototype.createElement=function(e){return this.root.ownerDocument.createElement(e)},mxXmlCanvas2D.prototype.save=function(){this.compressed&&mxAbstractCanvas2D.prototype.save.apply(this,arguments),this.root.appendChild(this.createElement("save"))},mxXmlCanvas2D.prototype.restore=function(){this.compressed&&mxAbstractCanvas2D.prototype.restore.apply(this,arguments),this.root.appendChild(this.createElement("restore"))},mxXmlCanvas2D.prototype.scale=function(e){if(this.compressed){if(this.state.scale==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("scale");n.setAttribute("scale",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.translate=function(e,n){var t=this.createElement("translate");t.setAttribute("dx",this.format(e)),t.setAttribute("dy",this.format(n)),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rotate=function(e,n,t,a,i){var s=this.createElement("rotate");(0!=e||n||t)&&(s.setAttribute("theta",this.format(e)),s.setAttribute("flipH",n?"1":"0"),s.setAttribute("flipV",t?"1":"0"),s.setAttribute("cx",this.format(a)),s.setAttribute("cy",this.format(i)),this.root.appendChild(s))},mxXmlCanvas2D.prototype.setAlpha=function(e){if(this.compressed){if(this.state.alpha==e)return;mxAbstractCanvas2D.prototype.setAlpha.apply(this,arguments)}var n=this.createElement("alpha");n.setAttribute("alpha",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFillColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fillColor==e)return;mxAbstractCanvas2D.prototype.setFillColor.apply(this,arguments)}var n=this.createElement("fillcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setGradient=function(e,n,t,a,i,s,o,r,l){if(null!=e&&null!=n){mxAbstractCanvas2D.prototype.setGradient.apply(this,arguments);var d=this.createElement("gradient");d.setAttribute("c1",e),d.setAttribute("c2",n),d.setAttribute("x",this.format(t)),d.setAttribute("y",this.format(a)),d.setAttribute("w",this.format(i)),d.setAttribute("h",this.format(s)),null!=o&&d.setAttribute("direction",o),null!=r&&d.setAttribute("alpha1",r),null!=l&&d.setAttribute("alpha2",l),this.root.appendChild(d)}},mxXmlCanvas2D.prototype.setStrokeColor=function(e){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.strokeColor==e)return;mxAbstractCanvas2D.prototype.setStrokeColor.apply(this,arguments)}var n=this.createElement("strokecolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setStrokeWidth=function(e){if(this.compressed){if(this.state.strokeWidth==e)return;mxAbstractCanvas2D.prototype.setStrokeWidth.apply(this,arguments)}var n=this.createElement("strokewidth");n.setAttribute("width",this.format(e)),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashed=function(e){if(this.compressed){if(this.state.dashed==e)return;mxAbstractCanvas2D.prototype.setDashed.apply(this,arguments)}var n=this.createElement("dashed");n.setAttribute("dashed",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setDashPattern=function(e){if(this.compressed){if(this.state.dashPattern==e)return;mxAbstractCanvas2D.prototype.setDashPattern.apply(this,arguments)}var n=this.createElement("dashpattern");n.setAttribute("pattern",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineCap=function(e){if(this.compressed){if(this.state.lineCap==e)return;mxAbstractCanvas2D.prototype.setLineCap.apply(this,arguments)}var n=this.createElement("linecap");n.setAttribute("cap",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setLineJoin=function(e){if(this.compressed){if(this.state.lineJoin==e)return;mxAbstractCanvas2D.prototype.setLineJoin.apply(this,arguments)}var n=this.createElement("linejoin");n.setAttribute("join",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setMiterLimit=function(e){if(this.compressed){if(this.state.miterLimit==e)return;mxAbstractCanvas2D.prototype.setMiterLimit.apply(this,arguments)}var n=this.createElement("miterlimit");n.setAttribute("limit",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setFontColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontColor==e)return;mxAbstractCanvas2D.prototype.setFontColor.apply(this,arguments)}var n=this.createElement("fontcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBackgroundColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBackgroundColor==e)return;mxAbstractCanvas2D.prototype.setFontBackgroundColor.apply(this,arguments)}var n=this.createElement("fontbackgroundcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontBorderColor=function(e){if(this.textEnabled){if(e==mxConstants.NONE&&(e=null),this.compressed){if(this.state.fontBorderColor==e)return;mxAbstractCanvas2D.prototype.setFontBorderColor.apply(this,arguments)}var n=this.createElement("fontbordercolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontSize=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontSize==e)return;mxAbstractCanvas2D.prototype.setFontSize.apply(this,arguments)}var n=this.createElement("fontsize");n.setAttribute("size",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontFamily=function(e){if(this.textEnabled){if(this.compressed){if(this.state.fontFamily==e)return;mxAbstractCanvas2D.prototype.setFontFamily.apply(this,arguments)}var n=this.createElement("fontfamily");n.setAttribute("family",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setFontStyle=function(e){if(this.textEnabled){if(null==e&&(e=0),this.compressed){if(this.state.fontStyle==e)return;mxAbstractCanvas2D.prototype.setFontStyle.apply(this,arguments)}var n=this.createElement("fontstyle");n.setAttribute("style",e),this.root.appendChild(n)}},mxXmlCanvas2D.prototype.setShadow=function(e){if(this.compressed){if(this.state.shadow==e)return;mxAbstractCanvas2D.prototype.setShadow.apply(this,arguments)}var n=this.createElement("shadow");n.setAttribute("enabled",e?"1":"0"),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowColor=function(e){if(this.compressed){if(e==mxConstants.NONE&&(e=null),this.state.shadowColor==e)return;mxAbstractCanvas2D.prototype.setShadowColor.apply(this,arguments)}var n=this.createElement("shadowcolor");n.setAttribute("color",null!=e?e:mxConstants.NONE),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowAlpha=function(e){if(this.compressed){if(this.state.shadowAlpha==e)return;mxAbstractCanvas2D.prototype.setShadowAlpha.apply(this,arguments)}var n=this.createElement("shadowalpha");n.setAttribute("alpha",e),this.root.appendChild(n)},mxXmlCanvas2D.prototype.setShadowOffset=function(e,n){if(this.compressed){if(this.state.shadowDx==e&&this.state.shadowDy==n)return;mxAbstractCanvas2D.prototype.setShadowOffset.apply(this,arguments)}var t=this.createElement("shadowoffset");t.setAttribute("dx",e),t.setAttribute("dy",n),this.root.appendChild(t)},mxXmlCanvas2D.prototype.rect=function(e,n,t,a){var i=this.createElement("rect");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){var o=this.createElement("roundrect");o.setAttribute("x",this.format(e)),o.setAttribute("y",this.format(n)),o.setAttribute("w",this.format(t)),o.setAttribute("h",this.format(a)),o.setAttribute("dx",this.format(i)),o.setAttribute("dy",this.format(s)),this.root.appendChild(o)},mxXmlCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.createElement("ellipse");i.setAttribute("x",this.format(e)),i.setAttribute("y",this.format(n)),i.setAttribute("w",this.format(t)),i.setAttribute("h",this.format(a)),this.root.appendChild(i)},mxXmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i);var l=this.createElement("image");l.setAttribute("x",this.format(e)),l.setAttribute("y",this.format(n)),l.setAttribute("w",this.format(t)),l.setAttribute("h",this.format(a)),l.setAttribute("src",i),l.setAttribute("aspect",s?"1":"0"),l.setAttribute("flipH",o?"1":"0"),l.setAttribute("flipV",r?"1":"0"),this.root.appendChild(l)},mxXmlCanvas2D.prototype.begin=function(){this.root.appendChild(this.createElement("begin")),this.lastY=this.lastX=0},mxXmlCanvas2D.prototype.moveTo=function(e,n){var t=this.createElement("move");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.lineTo=function(e,n){var t=this.createElement("line");t.setAttribute("x",this.format(e)),t.setAttribute("y",this.format(n)),this.root.appendChild(t),this.lastX=e,this.lastY=n},mxXmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.createElement("quad");i.setAttribute("x1",this.format(e)),i.setAttribute("y1",this.format(n)),i.setAttribute("x2",this.format(t)),i.setAttribute("y2",this.format(a)),this.root.appendChild(i),this.lastX=t,this.lastY=a},mxXmlCanvas2D.prototype.curveTo=function(e,n,t,a,i,s){var o=this.createElement("curve");o.setAttribute("x1",this.format(e)),o.setAttribute("y1",this.format(n)),o.setAttribute("x2",this.format(t)),o.setAttribute("y2",this.format(a)),o.setAttribute("x3",this.format(i)),o.setAttribute("y3",this.format(s)),this.root.appendChild(o),this.lastX=i,this.lastY=s},mxXmlCanvas2D.prototype.close=function(){this.root.appendChild(this.createElement("close"))},mxXmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){mxUtils.isNode(i)&&(i=mxUtils.getOuterHtml(i));var u=this.createElement("text");u.setAttribute("x",this.format(e)),u.setAttribute("y",this.format(n)),u.setAttribute("w",this.format(t)),u.setAttribute("h",this.format(a)),u.setAttribute("str",i),null!=s&&u.setAttribute("align",s),null!=o&&u.setAttribute("valign",o),u.setAttribute("wrap",r?"1":"0"),null==l&&(l=""),u.setAttribute("format",l),null!=d&&u.setAttribute("fill",d?"1":"0"),null!=c&&u.setAttribute("clip",c?"1":"0"),null!=m&&u.setAttribute("rotation",m),this.root.appendChild(u)}},mxXmlCanvas2D.prototype.stroke=function(){this.root.appendChild(this.createElement("stroke"))},mxXmlCanvas2D.prototype.fill=function(){this.root.appendChild(this.createElement("fill"))},mxXmlCanvas2D.prototype.fillAndStroke=function(){this.root.appendChild(this.createElement("fillstroke"))},mxUtils.extend(mxSvgCanvas2D,mxAbstractCanvas2D),mxSvgCanvas2D.prototype.node=null,mxSvgCanvas2D.prototype.matchHtmlAlignment=!0,mxSvgCanvas2D.prototype.textEnabled=!0,mxSvgCanvas2D.prototype.foEnabled=!0,mxSvgCanvas2D.prototype.strokeTolerance=0,mxSvgCanvas2D.prototype.refCount=0,mxSvgCanvas2D.prototype.blockImagePointerEvents=!1,mxSvgCanvas2D.prototype.reset=function(){mxAbstractCanvas2D.prototype.reset.apply(this,arguments),this.gradients=[]},mxSvgCanvas2D.prototype.createStyle=function(e){return(e=this.createElement("style")).setAttribute("type","text/css"),mxUtils.write(e,"svg{font-family:"+mxConstants.DEFAULT_FONTFAMILY+";font-size:"+mxConstants.DEFAULT_FONTSIZE+";fill:none;stroke-miterlimit:10}"),e},mxSvgCanvas2D.prototype.createElement=function(e,n){if(null!=this.root.ownerDocument.createElementNS)return this.root.ownerDocument.createElementNS(n||mxConstants.NS_SVG,e);var t=this.root.ownerDocument.createElement(e);return null!=n&&t.setAttribute("xmlns",n),t},mxSvgCanvas2D.prototype.createGradientId=function(e,n,t,a,i){return"#"==e.charAt(0)&&(e=e.substring(1)),"#"==n.charAt(0)&&(n=n.substring(1)),e=e.toLowerCase()+"-"+t,n=n.toLowerCase()+"-"+a,(t=null)==i||i==mxConstants.DIRECTION_SOUTH?t="s":i==mxConstants.DIRECTION_EAST?t="e":(a=e,e=n,n=a,i==mxConstants.DIRECTION_NORTH?t="s":i==mxConstants.DIRECTION_WEST&&(t="e")),"mx-gradient-"+e+"-"+n+"-"+t},mxSvgCanvas2D.prototype.getSvgGradient=function(e,n,t,a,i){var s=this.createGradientId(e,n,t,a,i),o=this.gradients[s];if(null==o){var r=this.root.ownerSVGElement,l=0,d=s+"-"+l;if(null!=r)for(o=r.ownerDocument.getElementById(d);null!=o&&o.ownerSVGElement!=r;)d=s+"-"+l++,o=r.ownerDocument.getElementById(d);else d="id"+ ++this.refCount;null==o&&((o=this.createSvgGradient(e,n,t,a,i)).setAttribute("id",d),null!=this.defs?this.defs.appendChild(o):r.appendChild(o)),this.gradients[s]=o}return o.getAttribute("id")},mxSvgCanvas2D.prototype.createSvgGradient=function(e,n,t,a,i){var s=this.createElement("linearGradient");return s.setAttribute("x1","0%"),s.setAttribute("y1","0%"),s.setAttribute("x2","0%"),s.setAttribute("y2","0%"),null==i||i==mxConstants.DIRECTION_SOUTH?s.setAttribute("y2","100%"):i==mxConstants.DIRECTION_EAST?s.setAttribute("x2","100%"):i==mxConstants.DIRECTION_NORTH?s.setAttribute("y1","100%"):i==mxConstants.DIRECTION_WEST&&s.setAttribute("x1","100%"),t=t<1?";stop-opacity:"+t:"",(i=this.createElement("stop")).setAttribute("offset","0%"),i.setAttribute("style","stop-color:"+e+t),s.appendChild(i),t=a<1?";stop-opacity:"+a:"",(i=this.createElement("stop")).setAttribute("offset","100%"),i.setAttribute("style","stop-color:"+n+t),s.appendChild(i),s},mxSvgCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("path"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.setAttribute("d",this.path.join(" "))}e&&null!=a.fillColor?this.updateFill():this.styleEnabled||("ellipse"!=t.nodeName||!mxClient.IS_NS||mxClient.IS_GC||mxClient.IS_SF?t.setAttribute("fill","none"):t.setAttribute("fill","transparent"),e=!1),n&&null!=a.strokeColor?this.updateStroke():this.styleEnabled||t.setAttribute("stroke","none"),null!=a.transform&&0<a.transform.length&&t.setAttribute("transform",a.transform),a.shadow&&this.root.appendChild(this.createShadow(t)),0<this.strokeTolerance&&!e&&this.root.appendChild(this.createTolerance(t)),this.pointerEvents&&("path"!=t.nodeName||this.path[this.path.length-1]==this.closeOp)&&t.setAttribute("pointer-events","all"),this.root.appendChild(t)}},mxSvgCanvas2D.prototype.updateFill=function(){var e=this.state;e.alpha<1&&this.node.setAttribute("fill-opacity",e.alpha),null!=e.fillColor&&(null!=e.gradientColor?(e=this.getSvgGradient(e.fillColor,e.gradientColor,e.fillAlpha,e.gradientAlpha,e.gradientDirection),this.node.setAttribute("fill","url(#"+e+")")):this.node.setAttribute("fill",e.fillColor.toLowerCase()))},mxSvgCanvas2D.prototype.updateStroke=function(){var e=this.state;this.node.setAttribute("stroke",e.strokeColor.toLowerCase()),e.alpha<1&&this.node.setAttribute("stroke-opacity",e.alpha);var n=Math.max(1,this.format(e.strokeWidth*e.scale));1!=n&&this.node.setAttribute("stroke-width",n),"path"==this.node.nodeName&&this.updateStrokeAttributes(),e.dashed&&this.node.setAttribute("stroke-dasharray",this.createDashPattern(n))},mxSvgCanvas2D.prototype.updateStrokeAttributes=function(){var e=this.state;if(null!=e.lineJoin&&"miter"!=e.lineJoin&&this.node.setAttribute("stroke-linejoin",e.lineJoin),null!=e.lineCap){var n=e.lineCap;"flat"==n&&(n="butt"),"butt"!=n&&this.node.setAttribute("stroke-linecap",n)}null!=e.miterLimit&&(!this.styleEnabled||10!=e.miterLimit)&&this.node.setAttribute("stroke-miterlimit",e.miterLimit)},mxSvgCanvas2D.prototype.createDashPattern=function(e){var n=this.state.dashPattern.split(" "),t=[];if(0<n.length)for(var a=0;a<n.length;a++)t[a]=Number(n[a])*e;return t.join(" ")},mxSvgCanvas2D.prototype.createTolerance=function(e){e=e.cloneNode(!0);var n=parseFloat(e.getAttribute("stroke-width")||1)+this.strokeTolerance;return e.setAttribute("pointer-events","stroke"),e.setAttribute("visibility","hidden"),e.removeAttribute("stroke-dasharray"),e.setAttribute("stroke-width",n),e.setAttribute("fill","none"),e.setAttribute("stroke",mxClient.IS_OP?"none":"white"),e},mxSvgCanvas2D.prototype.createShadow=function(e){e=e.cloneNode(!0);var n=this.state;return"none"!=e.getAttribute("fill")&&e.setAttribute("fill",n.shadowColor),"none"!=e.getAttribute("stroke")&&e.setAttribute("stroke",n.shadowColor),e.setAttribute("transform","translate("+this.format(n.shadowDx*n.scale)+","+this.format(n.shadowDy*n.scale)+")"+(n.transform||"")),e.setAttribute("opacity",n.shadowAlpha),e},mxSvgCanvas2D.prototype.rotate=function(e,n,t,a,i){if(0!=e||n||t){var s=this.state;if(a+=s.dx,i+=s.dy,a*=s.scale,i*=s.scale,s.transform=s.transform||"",n&&t)e+=180;else if(n^t){var o=n?a:0,r=n?-1:1,l=t?i:0,d=t?-1:1;s.transform+="translate("+this.format(o)+","+this.format(l)+")scale("+this.format(r)+","+this.format(d)+")translate("+this.format(-o)+","+this.format(-l)+")"}(n?!t:t)&&(e*=-1),0!=e&&(s.transform+="rotate("+this.format(e)+","+this.format(a)+","+this.format(i)+")"),s.rotation+=e,s.rotationCx=a,s.rotationCy=i}},mxSvgCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=this.createElement("path")},mxSvgCanvas2D.prototype.rect=function(e,n,t,a){var i=this.state,s=this.createElement("rect");s.setAttribute("x",this.format((e+i.dx)*i.scale)),s.setAttribute("y",this.format((n+i.dy)*i.scale)),s.setAttribute("width",this.format(t*i.scale)),s.setAttribute("height",this.format(a*i.scale)),this.node=s},mxSvgCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.rect(e,n,t,a),0<i&&this.node.setAttribute("rx",this.format(i*this.state.scale)),0<s&&this.node.setAttribute("ry",this.format(s*this.state.scale))},mxSvgCanvas2D.prototype.ellipse=function(e,n,t,a){var i=this.state,s=this.createElement("ellipse");s.setAttribute("cx",Math.round((e+t/2+i.dx)*i.scale)),s.setAttribute("cy",Math.round((n+a/2+i.dy)*i.scale)),s.setAttribute("rx",t/2*i.scale),s.setAttribute("ry",a/2*i.scale),this.node=s},mxSvgCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){i=this.converter.convert(i),s=null==s||s,o=null!=o&&o,r=null!=r&&r;var l=this.state;e+=l.dx,n+=l.dy;var d=this.createElement("image");if(d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),null==d.setAttributeNS?d.setAttribute("xlink:href",i):d.setAttributeNS(mxConstants.NS_XLINK,"href",i),s||d.setAttribute("preserveAspectRatio","none"),l.alpha<1&&d.setAttribute("opacity",l.alpha),i=this.state.transform||"",o||r){var c=s=1,m=0,u=0;o&&(s=-1,m=-t-2*e),r&&(c=-1,u=-a-2*n),i+="scale("+s+","+c+")translate("+m+","+u+")"}0<i.length&&d.setAttribute("transform",i),this.root.appendChild(d),this.blockImagePointerEvents&&(d.setAttribute("style","pointer-events:none"),(d=this.createElement("rect")).setAttribute("visibility","hidden"),d.setAttribute("pointer-events","fill"),d.setAttribute("x",this.format(e*l.scale)),d.setAttribute("y",this.format(n*l.scale)),d.setAttribute("width",this.format(t*l.scale)),d.setAttribute("height",this.format(a*l.scale)),this.root.appendChild(d))},mxSvgCanvas2D.prototype.createDiv=function(e,n,t,a,i){return t=this.state,a="display:inline-block;font-size:"+Math.round(t.fontSize)+"px;font-family:"+t.fontFamily+";color:"+t.fontColor+";line-height:"+Math.round(t.fontSize*mxConstants.LINE_HEIGHT)+"px;"+a,(t.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(a+="font-weight:bold;"),(t.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(a+="font-style:italic;"),(t.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(a+="font-decoration:underline;"),n==mxConstants.ALIGN_CENTER?a+="text-align:center;":n==mxConstants.ALIGN_RIGHT&&(a+="text-align:right;"),n="",null!=t.fontBackgroundColor&&(n+="background-color:"+t.fontBackgroundColor+";"),null!=t.fontBorderColor&&(n+="border:1px solid "+t.fontBorderColor+";"),mxUtils.isNode(e)||((t=document.createElement("textarea")).innerHTML=e.replace(/&lt;/g,"&amp;lt;").replace(/&gt;/g,"&amp;gt;").replace(/</g,"&lt;").replace(/>/g,"&gt;"),e=t.value,i?a+=n:0<n.length&&(e='<div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;'+n+'">'+e+"</div>")),!mxClient.IS_IE&&document.createElementNS?((i=document.createElementNS("http://www.w3.org/1999/xhtml","div")).setAttribute("style",a),mxUtils.isNode(e)?this.root.ownerDocument!=document?i.appendChild(e.cloneNode(!0)):i.appendChild(e):i.innerHTML=e,i):(mxUtils.isNode(e)&&this.root.ownerDocument!=document&&(e=e.outerHTML),e=e.replace(/<br>/g,"<br />").replace(/<hr>/g,"<hr />"),mxUtils.parseXml('<div xmlns="http://www.w3.org/1999/xhtml" style="'+a+'">'+e+"</div>").documentElement)},mxSvgCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){m=null!=m?m:0;var u=this.state;if(e+=u.dx,n+=u.dy,this.foEnabled&&"html"==l){var p="vertical-align:top;";if(c?(p+="overflow:hidden;",0<a&&(p+="max-height:"+Math.round(a)+"px;"),0<t&&(p+="width:"+Math.round(t)+"px;")):d&&(p+="width:"+Math.round(t)+"px;",0<a&&(p+="max-height:"+Math.round(a)+"px;")),r?(!c&&0<t&&(p+="width:"+Math.round(t)+"px;"),p+="white-space:normal;"):p+="white-space:nowrap;",r=this.createElement("g"),u.alpha<1&&r.setAttribute("opacity",u.alpha),(l=this.createElement("foreignObject")).setAttribute("pointer-events","all"),null!=(p=this.createDiv(i,s,o,p,d))){r.appendChild(l),this.root.appendChild(r);var g=0;if(mxClient.IS_IE&&!mxClient.IS_SVG){var v=document.createElement("div");v.style.cssText=p.getAttribute("style"),v.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",v.style.visibility="hidden",v.innerHTML=mxUtils.isNode(i)?i.outerHTML:i,document.body.appendChild(v),g=v.offsetWidth,a=mxClient.IS_QUIRKS&&0<a&&c?Math.min(a,v.offsetHeight+2):v.offsetHeight,v.parentNode.removeChild(v),l.appendChild(p)}else this.root.ownerDocument!=document?(p.style.visibility="hidden",document.body.appendChild(p),g=p.offsetWidth,a=p.offsetHeight,l.appendChild(p),p.style.visibility=""):(l.appendChild(p),g=p.offsetWidth,a=p.offsetHeight);t=d?Math.max(t,g):g,u.alpha<1&&r.setAttribute("opacity",u.alpha),d=i=0,s==mxConstants.ALIGN_CENTER?i-=t/2:s==mxConstants.ALIGN_RIGHT&&(i-=t),e+=i,o==mxConstants.ALIGN_MIDDLE?d-=a/2:o==mxConstants.ALIGN_BOTTOM&&(d-=a),n+=d,s=1!=u.scale?"scale("+u.scale+")":"",0!=u.rotation&&this.rotateHtml?(s+="rotate("+u.rotation+","+t/2+","+a/2+")",e=(n=this.rotatePoint((e+t/2)*u.scale,(n+a/2)*u.scale,u.rotation,u.rotationCx,u.rotationCy)).x-t*u.scale/2,n=n.y-a*u.scale/2):(e*=u.scale,n*=u.scale),0!=m&&(s+="rotate("+m+","+-i+","+-d+")"),r.setAttribute("transform","translate("+Math.round(e)+","+Math.round(n)+")"+s),l.setAttribute("width",Math.round(Math.max(1,t))),l.setAttribute("height",Math.round(Math.max(1,a)))}}else this.plainText(e,n,t,a,i,s,o,r,d,c,m)}},mxSvgCanvas2D.prototype.createClip=function(e,n,t,a){for(var i="mx-clip-"+(e=Math.round(e))+"-"+(n=Math.round(n))+"-"+(t=Math.round(t))+"-"+(a=Math.round(a)),s=0,o=i+"-"+s;null!=document.getElementById(o);)o=i+"-"+ ++s;return clip=this.createElement("clipPath"),clip.setAttribute("id",o),(i=this.createElement("rect")).setAttribute("x",e),i.setAttribute("y",n),i.setAttribute("width",t),i.setAttribute("height",a),clip.appendChild(i),clip},mxSvgCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c){c=null!=c?c:0,r=this.state;var m=Math.round(r.fontSize),u=this.createElement("g"),p=r.transform||"";if(0!=c&&(p+="rotate("+c+","+this.format(e*r.scale)+","+this.format(n*r.scale)+")"),d&&0<t&&0<a){var g=e;c=n,s==mxConstants.ALIGN_CENTER?g-=t/2:s==mxConstants.ALIGN_RIGHT&&(g-=t),o==mxConstants.ALIGN_MIDDLE?c-=a/2:o==mxConstants.ALIGN_BOTTOM&&(c-=a),c=this.createClip(g*r.scale-2,c*r.scale-2,t*r.scale+4,a*r.scale+4),null!=this.defs?this.defs.appendChild(c):this.root.appendChild(c),u.setAttribute("clip-path","url(#"+c.getAttribute("id")+")")}this.updateFont(u,s),"start"!=(c=s==mxConstants.ALIGN_RIGHT?"end":s==mxConstants.ALIGN_CENTER?"middle":"start")&&u.setAttribute("text-anchor",c),(!this.styleEnabled||m!=mxConstants.DEFAULT_FONTSIZE)&&u.setAttribute("font-size",Math.round(m*r.scale)+"px"),0<p.length&&u.setAttribute("transform",p),r.alpha<1&&u.setAttribute("opacity",r.alpha);p=i.split("\n"),g=Math.round(m*mxConstants.LINE_HEIGHT);var v=m+(p.length-1)*g;for(c=n+m-1,o==mxConstants.ALIGN_MIDDLE?c-=(a=(this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)/2)+1:o==mxConstants.ALIGN_BOTTOM&&(c-=(a=this.matchHtmlAlignment&&d&&0<a?Math.min(v,a):v)+2),a=0;a<p.length;a++)0<p[a].length&&0<mxUtils.trim(p[a]).length&&((d=this.createElement("text")).setAttribute("x",this.format(e*r.scale)),d.setAttribute("y",this.format(c*r.scale)),mxUtils.write(d,p[a]),u.appendChild(d)),c+=g;this.root.appendChild(u),this.addTextBackground(u,i,e,n,t,v,s,o,l)},mxSvgCanvas2D.prototype.updateFont=function(e){var n=this.state;e.setAttribute("fill",n.fontColor),(!this.styleEnabled||n.fontFamily!=mxConstants.DEFAULT_FONTFAMILY)&&e.setAttribute("font-family",n.fontFamily),(n.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&e.setAttribute("font-weight","bold"),(n.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&e.setAttribute("font-style","italic"),(n.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&e.setAttribute("text-decoration","underline")},mxSvgCanvas2D.prototype.addTextBackground=function(e,n,t,a,i,s,o,r,l){var d=this.state;if(null!=d.fontBackgroundColor||null!=d.fontBorderColor){var c=null;null!=(c=l?(o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,a*d.scale,(i-2)*d.scale,(s+2)*d.scale)):null!=e.getBBox&&this.root.ownerDocument==document?(c=e.getBBox(),n=mxClient.IS_IE&&mxClient.IS_SVG,new mxRectangle(c.x,c.y+(n?0:1),c.width,c.height+(n?1:0))):((c=document.createElement("div")).style.lineHeight=Math.round(d.fontSize*mxConstants.LINE_HEIGHT)+"px",c.style.fontSize=Math.round(d.fontSize)+"px",c.style.fontFamily=d.fontFamily,c.style.whiteSpace="nowrap",c.style.position="absolute",c.style.visibility="hidden",c.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",c.style.zoom="1",(d.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(c.style.fontWeight="bold"),(d.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(c.style.fontStyle="italic"),n=mxUtils.htmlEntities(n,!1),c.innerHTML=n.replace(/\n/g,"<br/>"),document.body.appendChild(c),i=c.offsetWidth,s=c.offsetHeight,c.parentNode.removeChild(c),o==mxConstants.ALIGN_CENTER?t-=i/2:o==mxConstants.ALIGN_RIGHT&&(t-=i),r==mxConstants.ALIGN_MIDDLE?a-=s/2:r==mxConstants.ALIGN_BOTTOM&&(a-=s),new mxRectangle((t+1)*d.scale,(a+2)*d.scale,i*d.scale,(s+1)*d.scale)))&&((n=this.createElement("rect")).setAttribute("fill",d.fontBackgroundColor||"none"),n.setAttribute("stroke",d.fontBorderColor||"none"),n.setAttribute("x",Math.floor(c.x-1)),n.setAttribute("y",Math.floor(c.y-1)),n.setAttribute("width",Math.ceil(c.width+2)),n.setAttribute("height",Math.ceil(c.height)),d=null!=d.fontBorderColor?Math.max(1,this.format(d.scale)):0,n.setAttribute("stroke-width",d),this.root.ownerDocument==document&&1==mxUtils.mod(d,2)&&n.setAttribute("transform","translate(0.5, 0.5)"),e.insertBefore(n,e.firstChild))}},mxSvgCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxSvgCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxSvgCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)};var mxVmlCanvas2D=function(e){mxAbstractCanvas2D.call(this),this.root=e};function mxGuide(e,n){this.graph=e,this.setStates(n)}function mxStencil(e){this.desc=e,this.parseDescription(),this.parseConstraints()}function mxShape(e){this.stencil=e,this.strokewidth=1,this.rotation=0,this.opacity=100,this.flipV=this.flipH=!1}mxUtils.extend(mxVmlCanvas2D,mxAbstractCanvas2D),mxVmlCanvas2D.prototype.node=null,mxVmlCanvas2D.prototype.textEnabled=!0,mxVmlCanvas2D.prototype.moveOp="m",mxVmlCanvas2D.prototype.lineOp="l",mxVmlCanvas2D.prototype.curveOp="c",mxVmlCanvas2D.prototype.closeOp="x",mxVmlCanvas2D.prototype.rotatedHtmlBackground="",mxVmlCanvas2D.prototype.vmlScale=1,mxVmlCanvas2D.prototype.addNode=function(e,n){var t=this.node,a=this.state;if(null!=t){if("shape"==t.nodeName){if(!(null!=this.path&&0<this.path.length))return;t.path=this.path.join(" ")+" e",t.style.width=this.root.style.width,t.style.height=this.root.style.height,t.coordsize=parseInt(t.style.width)+" "+parseInt(t.style.height)}t.strokeweight=this.format(Math.max(1,a.strokeWidth*a.scale/this.vmlScale))+"px",a.shadow&&this.root.appendChild(this.createShadow(t,e&&null!=a.fillColor,n&&null!=a.strokeColor)),n&&null!=a.strokeColor?(t.stroked="true",t.strokecolor=a.strokeColor):t.stroked="false",t.appendChild(this.createStroke()),e&&null!=a.fillColor?t.appendChild(this.createFill()):!this.pointerEvents||"shape"==t.nodeName&&this.path[this.path.length-1]!=this.closeOp?t.filled="false":t.appendChild(this.createTransparentFill()),this.root.appendChild(t)}},mxVmlCanvas2D.prototype.createTransparentFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.src=mxClient.imageBasePath+"/transparent.gif",e.type="tile",e},mxVmlCanvas2D.prototype.createFill=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":fill");if(n.color=e.fillColor,null!=e.gradientColor){n.type="gradient",n.method="none",n.color2=e.gradientColor;var t=180-e.rotation;t=e.gradientDirection==mxConstants.DIRECTION_WEST?t-(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_EAST?t+(90+("x"==this.root.style.flip?180:0)):e.gradientDirection==mxConstants.DIRECTION_NORTH?t-(180+("y"==this.root.style.flip?-180:0)):t+("y"==this.root.style.flip?-180:0);"x"!=this.root.style.flip&&"y"!=this.root.style.flip||(t*=-1),n.angle=mxUtils.mod(t,360),n.opacity=100*e.alpha*e.fillAlpha+"%",n.setAttribute(mxClient.OFFICE_PREFIX+":opacity2",100*e.alpha*e.gradientAlpha+"%")}else e.alpha<1&&(n.opacity=100*e.alpha+"%");return n},mxVmlCanvas2D.prototype.createStroke=function(){var e=this.state,n=document.createElement(mxClient.VML_PREFIX+":stroke");return n.endcap=e.lineCap||"flat",n.joinstyle=e.lineJoin||"miter",n.miterlimit=e.miterLimit||"10",e.alpha<1&&(n.opacity=100*e.alpha+"%"),e.dashed&&(n.dashstyle=this.getVmlDashStyle()),n},mxVmlCanvas2D.prototype.getVmlDashStyle=function(){var e="dash";if(null!=this.state.dashPattern){var n=this.state.dashPattern.split(" ");0<n.length&&1==n[0]&&(e="0 2")}return e},mxVmlCanvas2D.prototype.createShadow=function(e,n,t){var a=this.state,i=-a.rotation*(Math.PI/180),s=Math.cos(i),o=(i=Math.sin(i),a.shadowDx*a.scale),r=a.shadowDy*a.scale;"x"==this.root.style.flip?o*=-1:"y"==this.root.style.flip&&(r*=-1);var l=e.cloneNode(!0);return l.style.marginLeft=Math.round(o*s-r*i)+"px",l.style.marginTop=Math.round(o*i+r*s)+"px",8==document.documentMode&&(l.strokeweight=e.strokeweight,"shape"==e.nodeName&&(l.path=this.path.join(" ")+" e",l.style.width=this.root.style.width,l.style.height=this.root.style.height,l.coordsize=parseInt(e.style.width)+" "+parseInt(e.style.height))),t?(l.strokecolor=a.shadowColor,l.appendChild(this.createShadowStroke())):l.stroked="false",n?l.appendChild(this.createShadowFill()):l.filled="false",l},mxVmlCanvas2D.prototype.createShadowFill=function(){var e=document.createElement(mxClient.VML_PREFIX+":fill");return e.color=this.state.shadowColor,e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.createShadowStroke=function(){var e=this.createStroke();return e.opacity=100*this.state.alpha*this.state.shadowAlpha+"%",e},mxVmlCanvas2D.prototype.rotate=function(e,n,t,a,i){n&&t?e+=180:n?this.root.style.flip="x":t&&(this.root.style.flip="y"),(n?!t:t)&&(e*=-1),this.root.style.rotation=e,this.state.rotation+=e,this.state.rotationCx=a,this.state.rotationCy=i},mxVmlCanvas2D.prototype.begin=function(){mxAbstractCanvas2D.prototype.begin.apply(this,arguments),this.node=document.createElement(mxClient.VML_PREFIX+":shape"),this.node.style.position="absolute"},mxVmlCanvas2D.prototype.quadTo=function(e,n,t,a){var i=this.state,s=(this.lastX+i.dx)*i.scale,o=(this.lastY+i.dy)*i.scale;e=(e+i.dx)*i.scale;o+=2/3*((n=(n+i.dy)*i.scale)-o);var r=(t=(t+i.dx)*i.scale)+2/3*(e-t);n=(a=(a+i.dy)*i.scale)+2/3*(n-a),this.path.push("c "+this.format(s+2/3*(e-s))+" "+this.format(o)+" "+this.format(r)+" "+this.format(n)+" "+this.format(t)+" "+this.format(a)),this.lastX=t/i.scale-i.dx,this.lastY=a/i.scale-i.dy},mxVmlCanvas2D.prototype.createRect=function(e,n,t,a,i){var s=this.state;return(e=document.createElement(e)).style.position="absolute",e.style.left=this.format((n+s.dx)*s.scale)+"px",e.style.top=this.format((t+s.dy)*s.scale)+"px",e.style.width=this.format(a*s.scale)+"px",e.style.height=this.format(i*s.scale)+"px",e},mxVmlCanvas2D.prototype.rect=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)},mxVmlCanvas2D.prototype.roundrect=function(e,n,t,a,i,s){this.node=this.createRect(mxClient.VML_PREFIX+":roundrect",e,n,t,a),this.node.setAttribute("arcsize",Math.max(100*i/t,100*s/a)+"%")},mxVmlCanvas2D.prototype.ellipse=function(e,n,t,a){this.node=this.createRect(mxClient.VML_PREFIX+":oval",e,n,t,a)},mxVmlCanvas2D.prototype.image=function(e,n,t,a,i,s,o,r){var l=null;s?((l=this.createRect(mxClient.VML_PREFIX+":rect",e,n,t,a)).stroked="false",(e=document.createElement(mxClient.VML_PREFIX+":fill")).aspect=s?"atmost":"ignore",e.rotate="true",e.type="frame",e.src=i,l.appendChild(e)):(l=this.createRect(mxClient.VML_PREFIX+":image",e,n,t,a)).src=i,o&&r?l.style.rotation="180":o?l.style.flip="x":r&&(l.style.flip="y"),this.state.alpha<1&&(l.style.filter+="alpha(opacity="+100*this.state.alpha+")"),this.root.appendChild(l)},mxVmlCanvas2D.prototype.createDiv=function(e,n,t,a){t=document.createElement("div");var i=this.state,s="";return null!=i.fontBackgroundColor&&(s+="background-color:"+i.fontBackgroundColor+";"),null!=i.fontBorderColor&&(s+="border:1px solid "+i.fontBorderColor+";"),mxUtils.isNode(e)?t.appendChild(e):0<s.length&&!a?((a=document.createElement("div")).style.cssText=s,a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",a.innerHTML=e,t.appendChild(a)):(t.style.cssText=s,t.innerHTML=e),(e=t.style).fontSize=Math.round(i.fontSize/this.vmlScale)+"px",e.fontFamily=i.fontFamily,e.color=i.fontColor,e.verticalAlign="top",e.textAlign=n||"left",e.lineHeight=Math.round(i.fontSize*mxConstants.LINE_HEIGHT/this.vmlScale)+"px",(i.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(e.fontWeight="bold"),(i.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(e.fontStyle="italic"),(i.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(e.fontDecoration="underline"),t},mxVmlCanvas2D.prototype.text=function(e,n,t,a,i,s,o,r,l,d,c,m){if(this.textEnabled&&null!=i){var u=this.state;if("html"==l){null!=u.rotation&&(e=(n=this.rotatePoint(e,n,u.rotation,u.rotationCx,u.rotationCy)).x,n=n.y),8==document.documentMode?(e+=u.dx,n+=u.dy):(e*=u.scale,n*=u.scale),(l=8==document.documentMode?document.createElement(mxClient.VML_PREFIX+":group"):document.createElement("div")).style.position="absolute",l.style.display="inline",l.style.left=this.format(e)+"px",l.style.top=this.format(n)+"px",l.style.zoom=u.scale;var p=document.createElement("div");p.style.position="relative",p.style.display="inline";var g=(v=mxUtils.getAlignmentAsPoint(s,o)).x,v=v.y;if(i=this.createDiv(i,s,o,d),s=document.createElement("div"),r?(!c&&0<t&&(i.style.width=Math.round(t)+"px"),i.style.whiteSpace="normal"):i.style.whiteSpace="nowrap",r=u.rotation+(m||0),this.rotateHtml&&0!=r?(s.style.display="inline",s.style.zoom="1",s.appendChild(i),8==document.documentMode&&"DIV"!=this.root.nodeName?(p.appendChild(s),l.appendChild(p)):l.appendChild(s)):8==document.documentMode?(p.appendChild(i),l.appendChild(p)):(i.style.display="inline",l.appendChild(i)),"DIV"!=this.root.nodeName?((m=document.createElement(mxClient.VML_PREFIX+":rect")).stroked="false",m.filled="false",m.appendChild(l),this.root.appendChild(m)):this.root.appendChild(l),c?(i.style.overflow="hidden",0<t&&(i.style.width=Math.round(t)+"px"),0<a&&8==document.documentMode&&(i.style.maxHeight=Math.round(a)+"px")):d&&(i.style.width=t+"px",0<a&&(i.style.maxHeight=Math.round(a)+"px")),this.rotateHtml&&0!=r){t=r*(Math.PI/180),r=parseFloat(parseFloat(Math.cos(t)).toFixed(8)),m=parseFloat(parseFloat(Math.sin(-t)).toFixed(8)),(t%=2*Math.PI)<0&&(t+=2*Math.PI),(t%=Math.PI)>Math.PI/2&&(t=Math.PI-t),o=Math.cos(t);var h=Math.sin(t);8==document.documentMode&&(i.style.display="inline-block",s.style.display="inline-block",p.style.display="inline-block"),i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&(c||d)&&a<p&&(p=a,i.style.height=p+"px"),c=((a=p)-a*o+t*-h)/2-m*t*(g+.5)+r*a*(v+.5),d=(t-t*o+a*-h)/2+r*t*(g+.5)+m*a*(v+.5),"group"==l.nodeName&&"DIV"==this.root.nodeName?((g=document.createElement("div")).style.display="inline-block",g.style.position="absolute",g.style.left=this.format(e+(d-t/2)*u.scale)+"px",g.style.top=this.format(n+(c-a/2)*u.scale)+"px",l.parentNode.appendChild(g),g.appendChild(l)):(u=8==document.documentMode?1:u.scale,l.style.left=this.format(e+(d-t/2)*u)+"px",l.style.top=this.format(n+(c-a/2)*u)+"px"),s.style.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+r+", M12="+m+", M21="+-m+", M22="+r+", sizingMethod='auto expand')",s.style.backgroundColor=this.rotatedHtmlBackground,this.state.alpha<1&&(s.style.filter+="alpha(opacity="+100*this.state.alpha+")"),i.style.visibility="",s.appendChild(i)}else 8!=document.documentMode?(i.style.verticalAlign="top",this.state.alpha<1&&(l.style.filter="alpha(opacity="+100*this.state.alpha+")"),u=i.parentNode,i.style.visibility="hidden",document.body.appendChild(i),t=i.offsetWidth,p=i.offsetHeight,mxClient.IS_QUIRKS&&c&&a<p&&(p=a,i.style.height=p+"px"),a=p,i.style.visibility="",u.appendChild(i),l.style.left=this.format(e+t*g*this.state.scale)+"px",l.style.top=this.format(n+a*v*this.state.scale)+"px"):(this.state.alpha<1&&(i.style.filter="alpha(opacity="+100*this.state.alpha+")"),p.style.left=100*g+"%",p.style.top=100*v+"%")}else this.plainText(e,n,t,a,mxUtils.htmlEntities(i,!1),s,o,r,l,d,c,m)}},mxVmlCanvas2D.prototype.plainText=function(e,n,t,a,i,s,o,r,l,d,c,m){e=(e+(a=this.state).dx)*a.scale,n=(n+a.dy)*a.scale,(t=document.createElement(mxClient.VML_PREFIX+":shape")).style.width="1px",t.style.height="1px",t.stroked="false",(d=document.createElement(mxClient.VML_PREFIX+":fill")).color=a.fontColor,d.opacity=100*a.alpha+"%",t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":path")).textpathok="true",d.v="m "+this.format(0)+" "+this.format(0)+" l "+this.format(1)+" "+this.format(0),t.appendChild(d),(d=document.createElement(mxClient.VML_PREFIX+":textpath")).style.cssText="v-text-align:"+s,d.style.align=s,d.style.fontFamily=a.fontFamily,d.string=i,d.on="true",s=Math.round(a.fontSize*a.scale/this.vmlScale),d.style.fontSize=s+"px",(a.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD&&(d.style.fontWeight="bold"),(a.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC&&(d.style.fontStyle="italic"),(a.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE&&(d.style.textDecoration="underline"),a=s+((i=i.split("\n")).length-1)*s*mxConstants.LINE_HEIGHT,s=i=0,o==mxConstants.ALIGN_BOTTOM?s=-a/2:o!=mxConstants.ALIGN_MIDDLE&&(s=a/2),null!=m&&(o=(t.style.rotation=m)*(Math.PI/180),i=Math.sin(o)*s,s*=Math.cos(o)),t.appendChild(d),t.style.left=this.format(e-i)+"px",t.style.top=this.format(n+s)+"px",this.root.appendChild(t)},mxVmlCanvas2D.prototype.stroke=function(){this.addNode(!1,!0)},mxVmlCanvas2D.prototype.fill=function(){this.addNode(!0,!1)},mxVmlCanvas2D.prototype.fillAndStroke=function(){this.addNode(!0,!0)},mxGuide.prototype.graph=null,mxGuide.prototype.states=null,mxGuide.prototype.horizontal=!0,mxGuide.prototype.vertical=!0,mxGuide.prototype.guideX=null,mxGuide.prototype.guideY=null,mxGuide.prototype.setStates=function(e){this.states=e},mxGuide.prototype.isEnabledForEvent=function(e){return!0},mxGuide.prototype.getGuideTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxGuide.prototype.createGuideShape=function(e){return(e=new mxPolyline([],mxConstants.GUIDE_COLOR,mxConstants.GUIDE_STROKEWIDTH)).isDashed=!0,e},mxGuide.prototype.move=function(a,e,n){if(null!=this.states&&(this.horizontal||this.vertical)&&null!=a&&null!=e){var t=this.graph.getView().translate,i=this.graph.getView().scale,s=e.x,o=e.y,r=!1,l=!1,d=f=this.getGuideTolerance(),c=f;(f=a.clone()).x+=e.x,f.y+=e.y;var m=f.x,u=f.x+f.width,p=f.getCenterX(),g=f.y,v=f.y+f.height,h=f.getCenterY();e=function(e){e+=this.graph.panDx;var n=!1;if(Math.abs(e-p)<d?(s=e-a.getCenterX(),d=Math.abs(e-p),n=!0):Math.abs(e-m)<d?(s=e-a.x,d=Math.abs(e-m),n=!0):Math.abs(e-u)<d&&(s=e-a.x-a.width,d=Math.abs(e-u),n=!0),n){null==this.guideX&&(this.guideX=this.createGuideShape(!0),this.guideX.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideX.pointerEvents=!1,this.guideX.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDx,this.guideX.points=[new mxPoint(e,-this.graph.panDy),new mxPoint(e,t.scrollHeight-3-this.graph.panDy)]}r=r||n};for(var f=function(e){e+=this.graph.panDy;var n=!1;if(Math.abs(e-h)<c?(o=e-a.getCenterY(),c=Math.abs(e-h),n=!0):Math.abs(e-g)<c?(o=e-a.y,c=Math.abs(e-g),n=!0):Math.abs(e-v)<c&&(o=e-a.y-a.height,c=Math.abs(e-v),n=!0),n){null==this.guideY&&(this.guideY=this.createGuideShape(!1),this.guideY.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.guideY.pointerEvents=!1,this.guideY.init(this.graph.getView().getOverlayPane()));var t=this.graph.container;e-=this.graph.panDy,this.guideY.points=[new mxPoint(-this.graph.panDx,e),new mxPoint(t.scrollWidth-3-this.graph.panDx,e)]}l=l||n},b=0;b<this.states.length;b++){var A=this.states[b];null!=A&&(this.horizontal&&(e.call(this,A.getCenterX()),e.call(this,A.x),e.call(this,A.x+A.width)),this.vertical&&(f.call(this,A.getCenterY()),f.call(this,A.y),f.call(this,A.y+A.height)))}r||null==this.guideX?null!=this.guideX&&(this.guideX.node.style.visibility="visible",this.guideX.redraw()):this.guideX.node.style.visibility="hidden",l||null==this.guideY?null!=this.guideY&&(this.guideY.node.style.visibility="visible",this.guideY.redraw()):this.guideY.node.style.visibility="hidden",n&&(r||(n=a.x-(this.graph.snap(a.x/i-t.x)+t.x)*i,s=this.graph.snap(s/i)*i-n),l||(t=a.y-(this.graph.snap(a.y/i-t.y)+t.y)*i,o=this.graph.snap(o/i)*i-t)),e=new mxPoint(s,o)}return e},mxGuide.prototype.hide=function(){null!=this.guideX&&(this.guideX.node.style.visibility="hidden"),null!=this.guideY&&(this.guideY.node.style.visibility="hidden")},mxGuide.prototype.destroy=function(){null!=this.guideX&&(this.guideX.destroy(),this.guideX=null),null!=this.guideY&&(this.guideY.destroy(),this.guideY=null)},mxStencil.defaultLocalized=!1,mxStencil.prototype.desc=null,mxStencil.prototype.constraints=null,mxStencil.prototype.aspect=null,mxStencil.prototype.w0=null,mxStencil.prototype.h0=null,mxStencil.prototype.bgNode=null,mxStencil.prototype.fgNode=null,mxStencil.prototype.strokewidth=null,mxStencil.prototype.parseDescription=function(){this.fgNode=this.desc.getElementsByTagName("foreground")[0],this.bgNode=this.desc.getElementsByTagName("background")[0],this.w0=Number(this.desc.getAttribute("w")||100),this.h0=Number(this.desc.getAttribute("h")||100);var e=this.desc.getAttribute("aspect");this.aspect=null!=e?e:"variable",e=this.desc.getAttribute("strokewidth"),this.strokewidth=null!=e?e:"1"},mxStencil.prototype.parseConstraints=function(){var e=this.desc.getElementsByTagName("connections")[0];if(null!=e&&(null!=(e=mxUtils.getChildNodes(e))&&0<e.length)){this.constraints=[];for(var n=0;n<e.length;n++)this.constraints.push(this.parseConstraint(e[n]))}},mxStencil.prototype.parseConstraint=function(e){var n=Number(e.getAttribute("x")),t=Number(e.getAttribute("y"));return e="1"==e.getAttribute("perimeter"),new mxConnectionConstraint(new mxPoint(n,t),e)},mxStencil.prototype.evaluateTextAttribute=function(e,n,t){return n=this.evaluateAttribute(e,n,t),e=e.getAttribute("localized"),(mxStencil.defaultLocalized&&null==e||"1"==e)&&(n=mxResources.get(n)),n},mxStencil.prototype.evaluateAttribute=function(e,n,t){return null==(n=e.getAttribute(n))&&(null!=(e=mxUtils.getTextContent(e))&&("function"==typeof(e=mxUtils.eval(e))&&(n=e(t)))),n},mxStencil.prototype.drawShape=function(e,n,t,a,i,s){this.drawChildren(e,n,t,a,i,s,this.bgNode,!1),this.drawChildren(e,n,t,a,i,s,this.fgNode,!0)},mxStencil.prototype.drawChildren=function(e,n,t,a,i,s,o,r){if(null!=o){var l=mxUtils.getValue(n.style,mxConstants.STYLE_DIRECTION,null);for(t=this.computeAspect(n.style,t,a,i,s,l),a=Math.min(t.width,t.height),a="inherit"==this.strokewidth?Number(mxUtils.getNumber(n.style,mxConstants.STYLE_STROKEWIDTH,1)):Number(this.strokewidth)*a,e.setStrokeWidth(a),o=o.firstChild;null!=o;)o.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,o,t,r),o=o.nextSibling}},mxStencil.prototype.computeAspect=function(e,n,t,a,i,s){e=n,n=a/this.w0;var o=i/this.h0;if(s="north"==s||"south"==s){o=a/this.h0,n=i/this.w0;var r=(a-i)/2;e+=r,t-=r}return"fixed"==this.aspect&&(n=o=Math.min(n,o),s?(e+=(i-this.w0*n)/2,t+=(a-this.h0*o)/2):(e+=(a-this.w0*n)/2,t+=(i-this.h0*o)/2)),new mxRectangle(e,t,n,o)},mxStencil.prototype.drawNode=function(e,n,t,a,i){var s=t.nodeName,o=a.x,r=a.y,l=a.width,d=a.height,c=Math.min(l,d);if("save"==s)e.save();else if("restore"==s)e.restore();else if("path"==s)for(e.begin(),t=t.firstChild;null!=t;)t.nodeType==mxConstants.NODETYPE_ELEMENT&&this.drawNode(e,n,t,a,i),t=t.nextSibling;else if("close"==s)e.close();else if("move"==s)e.moveTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("line"==s)e.lineTo(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("quad"==s)e.quadTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d);else if("curve"==s)e.curveTo(o+Number(t.getAttribute("x1"))*l,r+Number(t.getAttribute("y1"))*d,o+Number(t.getAttribute("x2"))*l,r+Number(t.getAttribute("y2"))*d,o+Number(t.getAttribute("x3"))*l,r+Number(t.getAttribute("y3"))*d);else if("arc"==s)e.arcTo(Number(t.getAttribute("rx"))*l,Number(t.getAttribute("ry"))*d,Number(t.getAttribute("x-axis-rotation")),Number(t.getAttribute("large-arc-flag")),Number(t.getAttribute("sweep-flag")),o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d);else if("rect"==s)e.rect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("roundrect"==s)0==(n=t.getAttribute("arcsize"))&&(n=100*mxConstants.RECTANGLE_ROUNDING_FACTOR),c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,n=Number(n)/100,n=Math.min(c*n,a*n),e.roundrect(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,c,a,n,n);else if("ellipse"==s)e.ellipse(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d);else if("image"==s)n=this.evaluateAttribute(t,"src",n),e.image(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,Number(t.getAttribute("w"))*l,Number(t.getAttribute("h"))*d,n,!1,"1"==t.getAttribute("flipH"),"1"==t.getAttribute("flipV"));else if("text"==s){if(c=this.evaluateTextAttribute(t,"str",n),a="1"==t.getAttribute("vertical")?-90:0,"0"==t.getAttribute("align-shape")){var m=n.rotation,u=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPH,0);n=1==mxUtils.getValue(n.style,mxConstants.STYLE_FLIPV,0),a=u&&n?a-m:u||n?a+m:a-m}a-=t.getAttribute("rotation"),e.text(o+Number(t.getAttribute("x"))*l,r+Number(t.getAttribute("y"))*d,0,0,c,t.getAttribute("align")||"left",t.getAttribute("valign")||"top",!1,"",!1,!1,a)}else if("include-shape"==s)null!=(m=mxStencilRegistry.getStencil(t.getAttribute("name")))&&(o+=Number(t.getAttribute("x"))*l,r+=Number(t.getAttribute("y"))*d,c=Number(t.getAttribute("w"))*l,a=Number(t.getAttribute("h"))*d,m.drawShape(e,n,o,r,c,a));else if("fillstroke"==s)e.fillAndStroke();else if("fill"==s)e.fill();else if("stroke"==s)e.stroke();else if("strokewidth"==s)e.setStrokeWidth(Number(t.getAttribute("width"))*c);else if("dashed"==s)e.setDashed("1"==t.getAttribute("dashed"));else if("dashpattern"==s){if(null!=(t=t.getAttribute("pattern"))){for(t=t.split(" "),l=[],d=0;d<t.length;d++)0<t[d].length&&l.push(Number(t[d])*c);t=l.join(" "),e.setDashPattern(t)}}else"strokecolor"==s?e.setStrokeColor(t.getAttribute("color")):"linecap"==s?e.setLineCap(t.getAttribute("cap")):"linejoin"==s?e.setLineJoin(t.getAttribute("join")):"miterlimit"==s?e.setMiterLimit(Number(t.getAttribute("limit"))):"fillcolor"==s?e.setFillColor(t.getAttribute("color")):"alpha"==s?e.setAlpha(t.getAttribute("alpha")):"fontcolor"==s?e.setFontColor(t.getAttribute("color")):"fontstyle"==s?e.setFontStyle(t.getAttribute("style")):"fontfamily"==s?e.setFontFamily(t.getAttribute("family")):"fontsize"==s&&e.setFontSize(Number(t.getAttribute("size"))*c);i&&("fillstroke"==s||"fill"==s||"stroke"==s)&&e.setShadow(!1)},mxShape.prototype.dialect=null,mxShape.prototype.scale=1,mxShape.prototype.bounds=null,mxShape.prototype.points=null,mxShape.prototype.node=null,mxShape.prototype.style=null,mxShape.prototype.style=null,mxShape.prototype.boundingBox=null,mxShape.prototype.stencil=null,mxShape.prototype.svgStrokeTolerance=6,mxShape.prototype.pointerEvents=!0,mxShape.prototype.stencilPointerEvents=!1,mxShape.prototype.vmlScale=1,mxShape.prototype.init=function(e){null==this.node&&(this.node=this.create(e),null!=e&&e.appendChild(this.node))},mxShape.prototype.isParseVml=function(){return!0},mxShape.prototype.isHtmlAllowed=function(){return!1},mxShape.prototype.getSvgScreenOffset=function(){return 1==mxUtils.mod(Math.max(1,Math.round(this.strokewidth*this.scale)),2)?.5:0},mxShape.prototype.create=function(e){return null!=e.ownerSVGElement?this.createSvg(e):8==document.documentMode||this.dialect==mxConstants.DIALECT_SVG||this.dialect!=mxConstants.DIALECT_VML&&this.isHtmlAllowed()?this.createHtml(e):this.createVml(e)},mxShape.prototype.createSvg=function(){return document.createElementNS(mxConstants.NS_SVG,"g")},mxShape.prototype.createVml=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e},mxShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxShape.prototype.reconfigure=function(){this.redraw()},mxShape.prototype.redraw=function(){this.updateBoundsFromPoints(),this.checkBounds()?(this.node.style.visibility="","DIV"==this.node.nodeName&&this.isHtmlAllowed()?this.redrawHtmlShape():this.redrawShape(),this.updateBoundingBox()):(this.node.style.visibility="hidden",this.boundingBox=null)},mxShape.prototype.updateBoundsFromPoints=function(){var e=this.points;if(null!=e&&0<e.length&&null!=e[0]){this.bounds=new mxRectangle(Number(e[0].x),Number(e[0].y),1,1);for(var n=1;n<this.points.length;n++)null!=e[n]&&this.bounds.add(new mxRectangle(Number(e[n].x),Number(e[n].y),1,1))}},mxShape.prototype.checkBounds=function(){return null!=this.bounds&&!isNaN(this.bounds.x)&&!isNaN(this.bounds.y)&&!isNaN(this.bounds.width)&&!isNaN(this.bounds.height)&&0<this.bounds.width&&0<this.bounds.height},mxShape.prototype.createVmlGroup=function(){var e=document.createElement(mxClient.VML_PREFIX+":group");return e.style.position="absolute",e.style.width=this.node.style.width,e.style.height=this.node.style.height,e},mxShape.prototype.redrawShape=function(){var e=this.createCanvas();for(e.pointerEvents=this.pointerEvents;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);this.paint(e),this.node!=e.root&&this.node.insertAdjacentHTML("beforeend",e.root.outerHTML),"DIV"==this.node.nodeName&&8==document.documentMode&&(this.node.style.filter="",(null==this.stencil||!this.stencilPointerEvents)&&mxUtils.addTransparentBackgroundFilter(this.node)),this.destroyCanvas(e)},mxShape.prototype.createCanvas=function(){var e=null,n=null;if(null!=this.node.ownerSVGElement)(e=new mxSvgCanvas2D(this.node,!1)).strokeTolerance=this.svgStrokeTolerance,e.blockImagePointerEvents=mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC,0!=(n=this.getSvgScreenOffset())?this.node.setAttribute("transform","translate("+n+","+n+")"):this.node.removeAttribute("transform");else{this.updateVmlContainer();var t=Math.max(1,Math.round(this.bounds.width)),a=Math.max(1,Math.round(this.bounds.height));n=8==document.documentMode&&this.isParseVml()?this.createVmlGroup():this.node,e=new mxVmlCanvas2D(n,!1);""!=n.tagUrn&&(n.coordsize=t*this.vmlScale+","+a*this.vmlScale,e.scale(this.vmlScale),e.vmlScale=this.vmlScale),n=this.scale,e.translate(-Math.round(this.bounds.x/n),-Math.round(this.bounds.y/n))}return e},mxShape.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px";var e=Math.max(1,Math.round(this.bounds.width)),n=Math.max(1,Math.round(this.bounds.height));this.node.style.width=e+"px",this.node.style.height=n+"px",this.node.style.overflow="visible"},mxShape.prototype.destroyCanvas=function(e){if(e instanceof mxSvgCanvas2D){for(var n in e.gradients){var t=e.gradients[n];t.mxRefCount=(t.mxRefCount||0)+1}this.releaseSvgGradients(this.oldGradients),this.oldGradients=e.gradients}},mxShape.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n,s=this.bounds.height/n;if(this.isPaintBoundsInverted()){t=t+(o=(i-s)/2),a=a-o;var o=i;i=s,s=o}if(this.updateTransform(e,t,a,i,s),this.configureCanvas(e,t,a,i,s),null!=this.stencil)this.paintStencilShape(e,t,a,i,s);else if(e.setStrokeWidth(this.strokewidth),null!=this.points){for(t=[],a=0;a<this.points.length;a++)t.push(new mxPoint(this.points[a].x/n,this.points[a].y/n));this.paintEdgeShape(e,t)}else this.paintVertexShape(e,t,a,i,s)},mxShape.prototype.configureCanvas=function(e,n,t,a,i){var s=null;null!=this.style&&(s=this.style.dashPattern),e.setAlpha(this.opacity/100),null!=this.isShadow&&e.setShadow(this.isShadow),null!=this.isDashed&&e.setDashed(this.isDashed),null!=s&&e.setDashPattern(s),null!=this.gradient?(n=this.getGradientBounds(e,n,t,a,i),e.setGradient(this.fill,this.gradient,n.x,n.y,n.width,n.height,this.gradientDirection)):e.setFillColor(this.fill),e.setStrokeColor(this.stroke)},mxShape.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,i)},mxShape.prototype.updateTransform=function(e,n,t,a,i){e.scale(this.scale),e.rotate(this.getShapeRotation(),this.flipH,this.flipV,n+a/2,t+i/2)},mxShape.prototype.paintStencilShape=function(e,n,t,a,i){this.stencilPointerEvents&&(this.dialect==mxConstants.DIALECT_SVG?this.addTransparentBackgroundRectangle(this.node,n,t,a,i):8!=document.documentMode&&this.setTransparentBackgroundImage(this.node)),this.stencil.drawShape(e,this,n,t,a,i)},mxShape.prototype.paintVertexShape=function(e,n,t,a,i){this.paintBackground(e,n,t,a,i),e.setShadow(!1),this.paintForeground(e,n,t,a,i)},mxShape.prototype.paintBackground=function(e,n,t,a,i){},mxShape.prototype.paintForeground=function(e,n,t,a,i){},mxShape.prototype.paintEdgeShape=function(e,n){},mxShape.prototype.getArcSize=function(e,n){var t=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;return Math.min(e*t,n*t)},mxShape.prototype.paintGlassEffect=function(e,n,t,a,i,s){var o=Math.ceil(this.strokewidth/2);e.setGradient("#ffffff","#ffffff",n,t,a,.6*i,"south",.9,.1),e.begin(),s+=2*o,this.isRounded?(e.moveTo(n-o+s,t-o),e.quadTo(n-o,t-o,n-o,t-o+s),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o+s),e.quadTo(n+a+o,t-o,n+a+o-s,t-o)):(e.moveTo(n-o,t-o),e.lineTo(n-o,t+.4*i),e.quadTo(n+.5*a,t+.7*i,n+a+o,t+.4*i),e.lineTo(n+a+o,t-o)),e.close(),e.fill()},mxShape.prototype.apply=function(e){this.state=e,this.style=e.style,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_FILLCOLOR,this.fill),this.gradient=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENTCOLOR,this.gradient),this.gradientDirection=mxUtils.getValue(this.style,mxConstants.STYLE_GRADIENT_DIRECTION,this.gradientDirection),this.opacity=mxUtils.getValue(this.style,mxConstants.STYLE_OPACITY,this.opacity),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_STROKECOLOR,this.stroke),this.strokewidth=mxUtils.getNumber(this.style,mxConstants.STYLE_STROKEWIDTH,this.strokewidth),this.spacing=mxUtils.getValue(this.style,mxConstants.STYLE_SPACING,this.spacing),this.startSize=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,this.startSize),this.endSize=mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,this.endSize),this.startArrow=mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,this.startArrow),this.endArrow=mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,this.endArrow),this.rotation=mxUtils.getValue(this.style,mxConstants.STYLE_ROTATION,this.rotation),this.direction=mxUtils.getValue(this.style,mxConstants.STYLE_DIRECTION,this.direction),this.flipH=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPH,0),this.flipV=1==mxUtils.getValue(this.style,mxConstants.STYLE_FLIPV,0),null!=this.stencil&&(this.flipH=1==mxUtils.getValue(this.style,"stencilFlipH",0)||this.flipH,this.flipV=1==mxUtils.getValue(this.style,"stencilFlipV",0)||this.flipV),"north"!=this.direction&&"south"!=this.direction||(e=this.flipH,this.flipH=this.flipV,this.flipV=e),this.isShadow=1==mxUtils.getValue(this.style,mxConstants.STYLE_SHADOW,this.isShadow),this.isDashed=1==mxUtils.getValue(this.style,mxConstants.STYLE_DASHED,this.isDashed),this.isRounded=1==mxUtils.getValue(this.style,mxConstants.STYLE_ROUNDED,this.isRounded),this.glass=1==mxUtils.getValue(this.style,mxConstants.STYLE_GLASS,this.glass),"none"==this.fill&&(this.fill=null),"none"==this.gradient&&(this.gradient=null),"none"==this.stroke&&(this.stroke=null))},mxShape.prototype.setCursor=function(e){null==e&&(e=""),this.cursor=e,null!=this.node&&(this.node.style.cursor=e)},mxShape.prototype.getCursor=function(){return this.cursor},mxShape.prototype.updateBoundingBox=function(){if(null!=this.bounds){var e=this.createBoundingBox();if(null!=e){this.augmentBoundingBox(e);var n=this.getShapeRotation();0!=n&&(e=mxUtils.getBoundingBox(e,n)),e.x=Math.floor(e.x),e.y=Math.floor(e.y),e.width=Math.ceil(e.width),e.height=Math.ceil(e.height)}this.boundingBox=e}},mxShape.prototype.createBoundingBox=function(){var e=this.bounds.clone();if(this.isPaintBoundsInverted()){var n=(e.width-e.height)/2;e.x+=n,e.y-=n,n=e.width,e.width=e.height,e.height=n}return e},mxShape.prototype.augmentBoundingBox=function(e){this.isShadow&&(e.width+=Math.ceil(mxConstants.SHADOW_OFFSET_X*this.scale),e.height+=Math.ceil(mxConstants.SHADOW_OFFSET_Y*this.scale));var n=Math.ceil(this.strokewidth*this.scale);e.grow(Math.ceil(n/2))},mxShape.prototype.isPaintBoundsInverted=function(){return null==this.stencil&&("north"==this.direction||"south"==this.direction)},mxShape.prototype.getRotation=function(){return null!=this.rotation?this.rotation:0},mxShape.prototype.getTextRotation=function(){var e=this.getRotation();return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxShape.prototype.getShapeRotation=function(){var e=this.getRotation();return null!=this.direction&&("north"==this.direction?e+=270:"west"==this.direction?e+=180:"south"==this.direction&&(e+=90)),e},mxShape.prototype.addTransparentBackgroundRectangle=function(e,n,t,a,i){(e=document.createElementNS(mxConstants.NS_SVG,"rect")).setAttribute("x",n),e.setAttribute("y",t),e.setAttribute("width",a),e.setAttribute("height",i),e.setAttribute("fill","none"),e.setAttribute("stroke","none"),e.setAttribute("pointer-events","all"),this.node.appendChild(e)},mxShape.prototype.setTransparentBackgroundImage=function(e){e.style.backgroundImage="url('"+mxClient.imageBasePath+"/transparent.gif')"},mxShape.prototype.releaseSvgGradients=function(e){if(null!=e)for(var n in e){var t=e[n];t.mxRefCount=(t.mxRefCount||0)-1,0==t.mxRefCount&&null!=t.parentNode&&t.parentNode.removeChild(t)}},mxShape.prototype.destroy=function(){null!=this.node&&(mxEvent.release(this.node),null!=this.node.parentNode&&this.node.parentNode.removeChild(this.node),this.node=null),this.releaseSvgGradients(this.oldGradients),this.oldGradients=null};var mxStencilRegistry={stencils:[],addStencil:function(e,n){mxStencilRegistry.stencils[e]=n},getStencil:function(e){return mxStencilRegistry.stencils[e]}},mxMarker={markers:[],addMarker:function(e,n){mxMarker.markers[e]=n},createMarker:function(e,n,t,a,i,s,o,r,l,d){var c=mxMarker.markers[t];return null!=c?c(e,n,t,a,i,s,o,r,l,d):null}};function mxActor(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxCloud(e,n,t,a){mxActor.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRectangleShape(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxDoubleEllipse(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxRhombus(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxPolyline(e,n,t){mxShape.call(this),this.points=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxArrow(e,n,t,a,i,s,o){mxShape.call(this),this.points=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1,this.arrowWidth=null!=i?i:mxConstants.ARROW_WIDTH,this.spacing=null!=s?s:mxConstants.ARROW_SPACING,this.endSize=null!=o?o:mxConstants.ARROW_SIZE}function mxText(e,n,t,a,i,s,o,r,l,d,c,m,u,p,g,v,h,f,b,A){mxShape.call(this),this.value=e,this.bounds=n,this.color=null!=i?i:"black",this.align=null!=t?t:"",this.valign=null!=a?a:"",this.family=null!=s?s:mxConstants.DEFAULT_FONTFAMILY,this.size=null!=o?o:mxConstants.DEFAULT_FONTSIZE,this.fontStyle=null!=r?r:mxConstants.DEFAULT_FONTSTYLE,this.spacing=parseInt(l||2),this.spacingTop=this.spacing+parseInt(d||0),this.spacingRight=this.spacing+parseInt(c||0),this.spacingBottom=this.spacing+parseInt(m||0),this.spacingLeft=this.spacing+parseInt(u||0),this.horizontal=null==p||p,this.background=g,this.border=v,this.wrap=null!=h&&h,this.clipped=null!=f&&f,this.overflow=null!=b?b:"visible",this.labelPadding=null!=A?A:0,this.rotation=0}function mxTriangle(){mxActor.call(this)}function mxHexagon(){mxActor.call(this)}function mxLine(e,n,t){mxShape.call(this),this.bounds=e,this.stroke=n,this.strokewidth=null!=t?t:1}function mxImageShape(e,n,t,a,i){mxShape.call(this),this.bounds=e,this.image=n,this.fill=t,this.stroke=a,this.strokewidth=null!=i?i:1,this.shadow=!1}function mxLabel(e,n,t,a){mxRectangleShape.call(this,e,n,t,a)}function mxCylinder(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxConnector(e,n,t){mxPolyline.call(this,e,n,t)}function mxSwimlane(e,n,t,a){mxShape.call(this),this.bounds=e,this.fill=n,this.stroke=t,this.strokewidth=null!=a?a:1}function mxGraphLayout(e){this.graph=e}function mxStackLayout(e,n,t,a,i,s){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=null!=t?t:0,this.x0=null!=a?a:0,this.y0=null!=i?i:0,this.border=null!=s?s:0}function mxPartitionLayout(e,n,t,a){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.spacing=t||0,this.border=a||0}function mxCompactTreeLayout(e,n,t){mxGraphLayout.call(this,e),this.horizontal=null==n||n,this.invert=null!=t&&t}function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxFastOrganicLayout(e){mxGraphLayout.call(this,e)}function mxCircleLayout(e,n){mxGraphLayout.call(this,e),this.radius=null!=n?n:100}function mxParallelEdgeLayout(e){mxGraphLayout.call(this,e)}function mxCompositeLayout(e,n,t){mxGraphLayout.call(this,e),this.layouts=n,this.master=t}function mxEdgeLabelLayout(e,n){mxGraphLayout.call(this,e)}function mxGraphAbstractHierarchyCell(){this.x=[],this.y=[],this.temp=[]}function mxGraphHierarchyNode(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.cell=e}function mxGraphHierarchyEdge(e){mxGraphAbstractHierarchyCell.apply(this,arguments),this.edges=e}function mxGraphHierarchyModel(e,n,t,a,i){for(e.getGraph(),this.tightenToSource=i,this.roots=t,this.parent=a,this.vertexMapper={},this.edgeMapper={},this.maxRank=0,t=[],null==n&&(n=this.graph.getChildVertices(a)),this.maxRank=this.SOURCESCANSTARTRANK,this.createInternalCells(e,n,t),a=0;a<n.length;a++){i=t[a].connectsAsSource;for(var s=0;s<i.length;s++){var o=i[s];if(null!=(r=o.edges)&&0<r.length){var r=r[0],l=e.getVisibleTerminal(r,!1);l=mxCellPath.create(l),l=this.vertexMapper[l];t[a]==l&&(l=e.getVisibleTerminal(r,!0),l=mxCellPath.create(l),l=this.vertexMapper[l]),null!=l&&t[a]!=l&&(0==(o.target=l).connectsAsTarget.length&&(l.connectsAsTarget=[]),mxUtils.indexOf(l.connectsAsTarget,o)<0&&l.connectsAsTarget.push(o))}}t[a].temp[0]=1}}function mxHierarchicalLayoutStage(){}function mxMedianHybridCrossingReduction(e){this.layout=e}function MedianCellSorter(){}function mxMinimumCycleRemover(e){this.layout=e}function mxCoordinateAssignment(e,n,t,a,i,s){this.layout=e,this.intraCellSpacing=n,this.interRankCellSpacing=t,this.orientation=a,this.initialX=i,this.parallelEdgeSpacing=s}!function(){function e(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,r=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=r,o=t!=mxConstants.ARROW_CLASSIC?1:.75,a.x+=-i*o-n,a.y+=-s*o-r,function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i-s/2,c.y-s+i/2),t==mxConstants.ARROW_CLASSIC&&e.lineTo(c.x-3*i/4,c.y-3*s/4),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.close(),d?e.fillAndStroke():e.stroke()}}function n(e,n,t,a,i,s,o,r,l,d){r=t==mxConstants.ARROW_DIAMOND?.7071:.9862,n=i*l*r,r*=s*l,i*=o+l,s*=o+l;var c=a.clone();c.x-=n,c.y-=r,a.x+=-i-n,a.y+=-s-r;var m=t==mxConstants.ARROW_DIAMOND?2:3.4;return function(){e.begin(),e.moveTo(c.x,c.y),e.lineTo(c.x-i/2-s/m,c.y+i/m-s/2),e.lineTo(c.x-i,c.y-s),e.lineTo(c.x-i/2+s/m,c.y-s/2-i/m),e.close(),d?e.fillAndStroke():e.stroke()}}mxMarker.addMarker("classic",e),mxMarker.addMarker("block",e),mxMarker.addMarker("open",function(e,n,t,a,i,s,o,r,l,d){n=1.118*i*l,t=1.118*s*l,i*=o+l,s*=o+l;var c=a.clone();return c.x-=n,c.y-=t,a.x+=2*-n,a.y+=2*-t,function(){e.begin(),e.moveTo(c.x-i-s/2,c.y-s+i/2),e.lineTo(c.x,c.y),e.lineTo(c.x+s/2-i,c.y-s-i/2),e.stroke()}}),mxMarker.addMarker("oval",function(e,n,t,a,i,s,o,r,l,d){var c=o/2,m=a.clone();return a.x-=i*c,a.y-=s*c,function(){e.ellipse(m.x-c,m.y-c,o,o),d?e.fillAndStroke():e.stroke()}}),mxMarker.addMarker("diamond",n),mxMarker.addMarker("diamondThin",n)}(),mxUtils.extend(mxActor,mxShape),mxActor.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i),e.fillAndStroke()},mxActor.prototype.redrawPath=function(e,n,t,a,i){n=a/3,e.moveTo(0,i),e.curveTo(0,3*i/5,0,2*i/5,a/2,2*i/5),e.curveTo(a/2-n,2*i/5,a/2-n,0,a/2,0),e.curveTo(a/2+n,0,a/2+n,2*i/5,a/2,2*i/5),e.curveTo(a,2*i/5,a,3*i/5,a,i),e.close()},mxUtils.extend(mxCloud,mxActor),mxCloud.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,.25*i),e.curveTo(.05*a,.25*i,0,.5*i,.16*a,.55*i),e.curveTo(0,.66*i,.18*a,.9*i,.31*a,.8*i),e.curveTo(.4*a,i,.7*a,i,.8*a,.8*i),e.curveTo(a,.8*i,a,.6*i,.875*a,.5*i),e.curveTo(a,.3*i,.8*a,.1*i,.625*a,.2*i),e.curveTo(.5*a,.05*i,.3*a,.05*i,.25*a,.25*i),e.close()},mxUtils.extend(mxRectangleShape,mxShape),mxRectangleShape.prototype.isHtmlAllowed=function(){return!this.isRounded&&!this.glass&&0==this.rotation},mxRectangleShape.prototype.paintBackground=function(e,n,t,a,i){if(this.isRounded){var s=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100;s=Math.min(a*s,i*s);e.roundrect(n,t,a,i,s,s)}else e.rect(n,t,a,i);e.fillAndStroke()},mxRectangleShape.prototype.paintForeground=function(e,n,t,a,i){this.glass&&this.paintGlassEffect(e,n,t,a,i,this.getArcSize(a+this.strokewidth,i+this.strokewidth))},mxRectangleShape.prototype.redrawHtmlShape=function(){this.updateHtmlBounds(this.node),this.updateHtmlFilters(this.node),this.updateHtmlColors(this.node)},mxRectangleShape.prototype.updateHtmlBounds=function(e){var n=9<=document.documentMode?0:Math.ceil(this.strokewidth*this.scale);e.style.borderWidth=Math.max(1,n)+"px",e.style.overflow="hidden",e.style.left=Math.round(this.bounds.x-n/2)+"px",e.style.top=Math.round(this.bounds.y-n/2)+"px","CSS1Compat"==document.compatMode&&(n=-n),e.style.width=Math.round(Math.max(0,this.bounds.width+n))+"px",e.style.height=Math.round(Math.max(0,this.bounds.height+n))+"px"},mxRectangleShape.prototype.updateHtmlColors=function(e){var n=this.stroke;null!=n&&n!=mxConstants.NONE?(e.style.borderColor=n,this.isDashed?e.style.borderStyle="dashed":0<this.strokewidth&&(e.style.borderStyle="solid"),e.style.borderWidth=Math.max(1,Math.ceil(this.strokewidth*this.scale))+"px"):e.style.borderWidth="0px",null!=(n=this.fill)&&n!=mxConstants.NONE?(e.style.backgroundColor=n,e.style.backgroundImage="none"):this.pointerEvents?e.style.backgroundColor="transparent":8==document.documentMode?mxUtils.addTransparentBackgroundFilter(e):this.setTransparentBackgroundImage(e)},mxRectangleShape.prototype.updateHtmlFilters=function(e){var n="";if(this.opacity<100&&(n+="alpha(opacity="+this.opacity+")"),this.isShadow&&(n+="progid:DXImageTransform.Microsoft.dropShadow (OffX='"+Math.round(mxConstants.SHADOW_OFFSET_X*this.scale)+"', OffY='"+Math.round(mxConstants.SHADOW_OFFSET_Y*this.scale)+"', Color='"+mxConstants.SHADOWCOLOR+"')"),this.gradient){var t=this.fill,a=this.gradient,i="0",s={east:0,south:1,west:2,north:3},o=null!=this.direction?s[this.direction]:0;null!=this.gradientDirection&&(o=mxUtils.mod(o+s[this.gradientDirection]-1,4)),1==o?(i="1",s=t,t=a,a=s):2==o?(s=t,t=a,a=s):3==o&&(i="1"),n+="progid:DXImageTransform.Microsoft.gradient(startColorStr='"+t+"', endColorStr='"+a+"', gradientType='"+i+"')"}e.style.filter=n},mxUtils.extend(mxEllipse,mxShape),mxEllipse.prototype.paintVertexShape=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxUtils.extend(mxDoubleEllipse,mxShape),mxDoubleEllipse.prototype.vmlScale=10,mxDoubleEllipse.prototype.paintBackground=function(e,n,t,a,i){e.ellipse(n,t,a,i),e.fillAndStroke()},mxDoubleEllipse.prototype.paintForeground=function(e,n,t,a,i){var s=Math.min(4,Math.min(a/5,i/5));i-=2*s,0<(a-=2*s)&&0<i&&e.ellipse(n+s,t+s,a,i),e.stroke()},mxUtils.extend(mxRhombus,mxShape),mxRhombus.prototype.paintVertexShape=function(e,n,t,a,i){var s=a/2,o=i/2;e.begin(),e.moveTo(n+s,t),e.lineTo(n+a,t+o),e.lineTo(n+s,t+i),e.lineTo(n,t+o),e.close(),e.fillAndStroke()},mxUtils.extend(mxPolyline,mxShape),mxPolyline.prototype.getRotation=function(){return 0},mxPolyline.prototype.paintEdgeShape=function(e,n){this.paintLine(e,n,this.isRounded)},mxPolyline.prototype.paintLine=function(e,n,t){var a=mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,mxConstants.LINE_ARCSIZE)/2,i=n[0],s=n[n.length-1];e.begin(),e.moveTo(i.x,i.y);for(var o=1;o<n.length-1;o++){var r=n[o],l=i.x-r.x;i=i.y-r.y;if(t&&o<n.length-1&&(0!=l||0!=i)){var d=Math.sqrt(l*l+i*i);l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d;e.lineTo(r.x+l,r.y+i),l=(i=n[o+1]).x-r.x,i=i.y-r.y,d=Math.max(1,Math.sqrt(l*l+i*i)),l=l*Math.min(a,d/2)/d,i=i*Math.min(a,d/2)/d,l=r.x+l,i=r.y+i,e.quadTo(r.x,r.y,l,i),r=new mxPoint(l,i)}else e.lineTo(r.x,r.y);i=r}e.lineTo(s.x,s.y),e.stroke()},mxUtils.extend(mxArrow,mxShape),mxArrow.prototype.paintEdgeShape=function(e,n){var t=mxConstants.ARROW_SPACING,a=mxConstants.ARROW_WIDTH,i=mxConstants.ARROW_SIZE,s=n[0],o=n[n.length-1],r=o.x-s.x,l=o.y-s.y,d=(c=Math.sqrt(r*r+l*l))-2*t-i,c=(r=r/c,a*(l=l/c)/3),m=(a=-a*r/3,(i=s.x-c/2+t*r)+c),u=(s=s.y-a/2+t*l)+a,p=m+d*r,g=p+c,v=(d=u+d*l)+a,h=g-3*c,f=v-3*a;e.begin(),e.moveTo(i,s),e.lineTo(m,u),e.lineTo(p,d),e.lineTo(g,v),e.lineTo(o.x-t*r,o.y-t*l),e.lineTo(h,f),e.lineTo(h+c,f+a),e.close(),e.fillAndStroke()},mxUtils.extend(mxText,mxShape),mxText.prototype.baseSpacingTop=0,mxText.prototype.baseSpacingBottom=0,mxText.prototype.baseSpacingLeft=0,mxText.prototype.baseSpacingRight=0,mxText.prototype.replaceLinefeeds=!0,mxText.prototype.verticalTextRotation=-90,mxText.prototype.ignoreClippedStringSize=!0,mxText.prototype.ignoreStringSize=!1,mxText.prototype.isParseVml=function(){return!1},mxText.prototype.isHtmlAllowed=function(){return 8!=document.documentMode},mxText.prototype.getSvgScreenOffset=function(){return 0},mxText.prototype.checkBounds=function(){return!(null==this.bounds||isNaN(this.bounds.x)||isNaN(this.bounds.y)||isNaN(this.bounds.width)||isNaN(this.bounds.height))},mxText.prototype.updateBoundingBox=function(){var e=this.node;8==document.documentMode&&null!=e.firstChild&&(null!=(e=e.firstChild).firstChild&&(e=e.firstChild)),this.boundingBox=this.bounds.clone();var n=this.getTextRotation();if(this.ignoreStringSize||null==e||"fill"==this.overflow||this.clipped&&this.ignoreClippedStringSize)this.boundingBox.x+=this.margin.x*this.boundingBox.width,this.boundingBox.y+=this.margin.y*this.boundingBox.height;else{var t=null,a=null;if(null!=e.ownerSVGElement)if(null!=e.firstChild&&null!=e.firstChild.firstChild&&"foreignObject"==e.firstChild.firstChild.nodeName)e=e.firstChild.firstChild,t=this.wrap?this.bounds.width:parseInt(e.getAttribute("width"))*this.scale,a=parseInt(e.getAttribute("height"))*this.scale;else{if(0==(n=e.getBBox()).width&&0==n.height)return;this.boundingBox=new mxRectangle(n.x,n.y,n.width,n.height),n=0}else a=this.state.view.textDiv,a=null!=this.offsetWidth&&null!=this.offsetHeight?(t=this.wrap?this.bounds.width:this.offsetWidth*this.scale,this.offsetHeight*this.scale):null!=a?(this.updateFont(a),this.updateSize(a),mxUtils.isNode(this.value)?a.innerHTML=this.value.outerHTML:(t=this.replaceLinefeeds?this.value.replace(/\n/g,"<br/>"):this.value,a.innerHTML=t),t=this.wrap?this.bounds.width:a.offsetWidth*this.scale,a.offsetHeight*this.scale):(t=this.wrap?this.bounds.width:e.offsetWidth*this.scale,e.offsetHeight*this.scale);null!=t&&null!=a&&(this.boundingBox=new mxRectangle(this.bounds.x+this.margin.x*t,this.bounds.y+this.margin.y*a,t,a))}null!=this.boundingBox&&(0!=n&&(n=mxUtils.getBoundingBox(this.boundingBox,n),this.boundingBox.x=n.x,this.boundingBox.y=n.y,mxClient.IS_QUIRKS||(this.boundingBox.width=n.width,this.boundingBox.height=n.height)),this.boundingBox.x=Math.floor(this.boundingBox.x),this.boundingBox.y=Math.floor(this.boundingBox.y),this.boundingBox.width=Math.ceil(this.boundingBox.width),this.boundingBox.height=Math.ceil(this.boundingBox.height))},mxText.prototype.getShapeRotation=function(){return 0},mxText.prototype.getTextRotation=function(){return null!=this.state&&null!=this.state.shape?this.state.shape.getTextRotation():0},mxText.prototype.isPaintBoundsInverted=function(){return!this.horizontal&&null!=this.state&&this.state.view.graph.model.isVertex(this.state.cell)},mxText.prototype.configureCanvas=function(e,n,t,a,i){mxShape.prototype.configureCanvas.apply(this,arguments),e.setFontColor(this.color),e.setFontBackgroundColor(this.background),e.setFontBorderColor(this.border),e.setFontFamily(this.family),e.setFontSize(this.size),e.setFontStyle(this.fontStyle)},mxText.prototype.updateVmlContainer=function(){this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width="1px",this.node.style.height="1px",this.node.style.overflow="visible"},mxText.prototype.paint=function(e){var n=this.scale,t=this.bounds.x/n,a=this.bounds.y/n,i=this.bounds.width/n;n=this.bounds.height/n;this.updateTransform(e,t,a,i,n),this.configureCanvas(e,t,a,i,n);var s=mxUtils.isNode(this.value)||this.dialect==mxConstants.DIALECT_STRICTHTML,o=s||e instanceof mxVmlCanvas2D?"html":"",r=this.value;!s&&"html"==o&&(r=mxUtils.htmlEntities(r,!1)),r=!mxUtils.isNode(this.value)&&this.replaceLinefeeds&&"html"==o?r.replace(/\n/g,"<br/>"):r,e.text(t,a,i,n,r,this.align,this.valign,this.wrap,o,"fill"==this.overflow,this.clipped,this.getTextRotation())},mxText.prototype.redrawHtmlShape=function(){var e=this.node.style;e.opacity=this.opacity<1?this.opacity:"",e.overflow="",e.width="",e.height="",this.updateFont(this.node),this.updateSize(this.node),this.updateValue(),this.offsetHeight=this.offsetWidth=null,null!=mxClient.CSS_PREFIX?this.updateHtmlTransform():this.updateHtmlFilter()},mxText.prototype.updateHtmlTransform=function(){var e=this.getTextRotation(),n=this.node.style,t=this.margin.x,a=this.margin.y;0!=e?(n[mxClient.CSS_PREFIX+"TransformOrigin"]=100*-t+"% "+100*-a+"%",n[mxClient.CSS_PREFIX+"Transform"]="translate("+100*t+"%,"+100*a+"%)scale("+this.scale+") rotate("+e+"deg)"):(n[mxClient.CSS_PREFIX+"TransformOrigin"]="0% 0%",n[mxClient.CSS_PREFIX+"Transform"]="scale("+this.scale+")translate("+100*t+"%,"+100*a+"%)"),n.left=Math.round(this.bounds.x)+"px",n.top=Math.round(this.bounds.y)+"px"},mxText.prototype.updateHtmlFilter=function(){var e=this.node.style,n=this.margin.x,t=this.margin.y,a=this.scale;e.filter="";var i=0,s=0;if(null!=(r=null!=this.state?this.state.view.textDiv:null)){if(r.style.overflow="",r.style.height="",r.style.width="",this.updateFont(r),this.updateSize(r),mxUtils.isNode(this.value))r.innerHTML=this.value.outerHTML;else{var o=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(o=mxUtils.htmlEntities(o,!1)),o=this.replaceLinefeeds?o.replace(/\n/g,"<br/>"):o,r.innerHTML=o}i=r.offsetWidth+2,s=r.offsetHeight+2}else i=this.node.offsetWidth,s=this.node.offsetHeight+1;this.offsetWidth=i,this.offsetHeight=s,r=this.bounds.width/a,o=this.bounds.height/a,mxClient.IS_QUIRKS&&(this.clipped||"fill"==this.overflow)&&0<o?(o=Math.min(o,s),e.height=Math.round(o+1)+"px"):o=s,"fill"!=this.overflow&&(mxClient.IS_QUIRKS&&(this.clipped||this.wrap)&&0<r?(r=Math.min(r,i),e.width=Math.round(r)+"px"):r=i);o*=a;var r=r*a,l=(i=this.getTextRotation()*(Math.PI/180),s=parseFloat(parseFloat(Math.cos(i)).toFixed(8)),parseFloat(parseFloat(Math.sin(-i)).toFixed(8)));(i=i%(2*Math.PI))<0&&(i+=2*Math.PI),(i%=Math.PI)>Math.PI/2&&(i=Math.PI-i);var d=Math.cos(i),c=Math.sin(-i),m=(o-o*d+r*c)/2+l*(n=r*-(n+.5))-s*(t=o*-(t+.5));0!=i&&(e.filter="progid:DXImageTransform.Microsoft.Matrix(M11="+s+", M12="+l+", M21="+-l+", M22="+s+", sizingMethod='auto expand')"),e.zoom=a,e.left=Math.round(this.bounds.x+((r-r*d+o*c)/2-s*n-l*t)-r/2)+"px",e.top=Math.round(this.bounds.y+m-o/2)+"px"},mxText.prototype.updateValue=function(){if(mxUtils.isNode(this.value))this.node.innerHTML="",this.node.appendChild(this.value);else{var e=this.value;this.dialect!=mxConstants.DIALECT_STRICTHTML&&(e=mxUtils.htmlEntities(e,!1));e=this.replaceLinefeeds?e.replace(/\n/g,"<br/>"):e;var n=null!=this.background&&this.background!=mxConstants.NONE?this.background:null,t=null!=this.border&&this.border!=mxConstants.NONE?this.border:null;if(null!=n||null!=t)if("fill"==this.overflow)null!=n&&(this.node.style.backgroundColor=n),null!=t&&(this.node.style.border="1px solid "+t);else{var a="";null!=n&&(a+="background-color:"+n+";"),null!=t&&(a+="border:1px solid "+t+";"),e='<div style="zoom:1;'+a+"display:inline-block;_display:inline;padding-bottom:1px;padding-right:1px;line-height:"+this.node.style.lineHeight+'">'+e+"</div>",this.node.style.lineHeight=""}this.node.innerHTML=e}},mxText.prototype.updateFont=function(e){(e=e.style).lineHeight=Math.round(this.size*mxConstants.LINE_HEIGHT)+"px",e.fontSize=Math.round(this.size)+"px",e.fontFamily=this.family,e.verticalAlign="top",e.color=this.color,e.fontWeight=(this.fontStyle&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD?"bold":"",e.fontStyle=(this.fontStyle&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC?"italic":"",e.fontDecoration=(this.fontStyle&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE?"underline":"",e.textAlign=this.align==mxConstants.ALIGN_CENTER?"center":this.align==mxConstants.ALIGN_RIGHT?"right":"left"},mxText.prototype.updateSize=function(e){var n=Math.round(this.bounds.width/this.scale),t=Math.round(this.bounds.height/this.scale);e=e.style,this.clipped?(e.overflow="hidden",0<t&&(e.maxHeight=t+"px"),0<n&&(e.width=n+"px")):"fill"==this.overflow&&(e.width=n+"px",0<t&&(e.maxHeight=t+"px")),this.wrap?(!this.clipped&&0<n&&(e.width=n+"px"),e.whiteSpace="normal"):e.whiteSpace="nowrap"},mxText.prototype.updateMargin=function(){this.margin=mxUtils.getAlignmentAsPoint(this.align,this.valign)},mxText.prototype.getSpacing=function(){return new mxPoint(this.align==mxConstants.ALIGN_CENTER?(this.spacingLeft-this.spacingRight)/2:this.align==mxConstants.ALIGN_RIGHT?-this.spacingRight-this.baseSpacingRight:this.spacingLeft+this.baseSpacingLeft,this.valign==mxConstants.ALIGN_MIDDLE?(this.spacingTop-this.spacingBottom)/2:this.valign==mxConstants.ALIGN_BOTTOM?-this.spacingBottom-this.baseSpacingBottom:this.spacingTop+this.baseSpacingTop)},mxUtils.extend(mxTriangle,mxActor),mxTriangle.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(0,0),e.lineTo(a,.5*i),e.lineTo(0,i),e.close()},mxUtils.extend(mxHexagon,mxActor),mxHexagon.prototype.redrawPath=function(e,n,t,a,i){e.moveTo(.25*a,0),e.lineTo(.75*a,0),e.lineTo(a,.5*i),e.lineTo(.75*a,i),e.lineTo(.25*a,i),e.lineTo(0,.5*i),e.close()},mxUtils.extend(mxLine,mxShape),mxLine.prototype.paintVertexShape=function(e,n,t,a,i){t+=i/2,e.begin(),e.moveTo(n,t),e.lineTo(n+a,t),e.stroke()},mxUtils.extend(mxImageShape,mxRectangleShape),mxImageShape.prototype.preserveImageAspect=!0,mxImageShape.prototype.getSvgScreenOffset=function(){return mxClient.IS_IE?0:.5},mxImageShape.prototype.apply=function(e){mxShape.prototype.apply.apply(this,arguments),this.gradient=this.stroke=this.fill=null,null!=this.style&&(this.fill=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND),this.stroke=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER),this.preserveImageAspect=1==mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_ASPECT,1),this.flipH=this.flipH||1==mxUtils.getValue(this.style,"imageFlipH",0),this.flipV=this.flipV||1==mxUtils.getValue(this.style,"imageFlipV",0))},mxImageShape.prototype.isHtmlAllowed=function(){return!this.preserveImageAspect},mxImageShape.prototype.createHtml=function(){var e=document.createElement("div");return e.style.position="absolute",e},mxImageShape.prototype.paintVertexShape=function(e,n,t,a,i){if(null!=this.image){var s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BACKGROUND,null),o=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_BORDER,null);null==s&&null==o||(e.setFillColor(s),e.setStrokeColor(o),e.rect(n,t,a,i),e.fillAndStroke()),e.image(n,t,a,i,this.image,this.preserveImageAspect,!1,!1)}else mxRectangleShape.prototype.paintBackground.apply(this,arguments)},mxImageShape.prototype.redrawHtmlShape=function(){if(this.node.style.left=Math.round(this.bounds.x)+"px",this.node.style.top=Math.round(this.bounds.y)+"px",this.node.style.width=Math.max(0,Math.round(this.bounds.width))+"px",this.node.style.height=Math.max(0,Math.round(this.bounds.height))+"px",this.node.style.backgroundColor=this.fill||"",this.node.style.borderColor=this.stroke||"",this.node.innerHTML="",null!=this.image){var e=document.createElement(mxClient.IS_IE6||null==mxClient.CSS_PREFIX&&0!=this.rotation?mxClient.VML_PREFIX+":image":"img");e.style.position="absolute",e.src=this.image;var n=this.opacity<100?"alpha(opacity="+this.opacity+")":"";this.node.style.filter=n,this.flipH&&this.flipV?n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2)":this.flipH?n+="progid:DXImageTransform.Microsoft.BasicImage(mirror=1)":this.flipV&&(n+="progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"),e.style.filter!=n&&(e.style.filter=n),"image"==e.nodeName?e.style.rotation=this.rotation:e.style[mxClient.CSS_PREFIX+"Transform"]="rotate("+this.rotation+"deg)",e.style.width=this.node.style.width,e.style.height=this.node.style.height,this.node.style.backgroundImage="",this.node.appendChild(e)}else this.setTransparentBackgroundImage(this.node)},mxUtils.extend(mxLabel,mxRectangleShape),mxLabel.prototype.imageSize=mxConstants.DEFAULT_IMAGESIZE,mxLabel.prototype.spacing=2,mxLabel.prototype.indicatorSize=10,mxLabel.prototype.indicatorSpacing=2,mxLabel.prototype.init=function(e){mxShape.prototype.init.apply(this,arguments),null!=this.indicatorColor&&null!=this.indicatorShape&&(this.indicator=new this.indicatorShape,this.indicator.dialect=this.dialect,this.indicator.bounds=this.bounds,this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection,this.indicator.init(this.node))},mxLabel.prototype.redraw=function(){null!=this.indicator&&(this.indicator.fill=this.indicatorColor,this.indicator.stroke=this.indicatorColor,this.indicator.gradient=this.indicatorGradientColor,this.indicator.direction=this.indicatorDirection),mxShape.prototype.redraw.apply(this,arguments)},mxLabel.prototype.isHtmlAllowed=function(){return mxRectangleShape.prototype.isHtmlAllowed.apply(this,arguments)&&null==this.indicatorColor&&null==this.indicatorShape},mxLabel.prototype.paintForeground=function(e,n,t,a,i){this.paintImage(e,n,t,a,i),this.paintIndicator(e,n,t,a,i),mxRectangleShape.prototype.paintForeground.apply(this,arguments)},mxLabel.prototype.paintImage=function(e,n,t,a,i){null!=this.image&&(n=this.getImageBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.image,!1,!1,!1))},mxLabel.prototype.getImageBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_WIDTH,mxConstants.DEFAULT_IMAGESIZE),r=mxUtils.getNumber(this.style,mxConstants.STYLE_IMAGE_HEIGHT,mxConstants.DEFAULT_IMAGESIZE),l=mxUtils.getNumber(this.style,mxConstants.STYLE_SPACING,this.spacing)+5;return new mxRectangle(e=i==mxConstants.ALIGN_CENTER?e+(t-o)/2:i==mxConstants.ALIGN_RIGHT?e+(t-o-l):e+l,n=s==mxConstants.ALIGN_TOP?n+l:s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):n+(a-r)/2,o,r)},mxLabel.prototype.paintIndicator=function(e,n,t,a,i){null!=this.indicator?(this.indicator.bounds=this.getIndicatorBounds(n,t,a,i),this.indicator.paint(e)):null!=this.indicatorImage&&(n=this.getIndicatorBounds(n,t,a,i),e.image(n.x,n.y,n.width,n.height,this.indicatorImage,!1,!1,!1))},mxLabel.prototype.getIndicatorBounds=function(e,n,t,a){var i=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_ALIGN,mxConstants.ALIGN_LEFT),s=mxUtils.getValue(this.style,mxConstants.STYLE_IMAGE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),o=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_WIDTH,this.indicatorSize),r=mxUtils.getNumber(this.style,mxConstants.STYLE_INDICATOR_HEIGHT,this.indicatorSize),l=this.spacing+5;return new mxRectangle(e=i==mxConstants.ALIGN_RIGHT?e+(t-o-l):i==mxConstants.ALIGN_CENTER?e+(t-o)/2:e+l,n=s==mxConstants.ALIGN_BOTTOM?n+(a-r-l):s==mxConstants.ALIGN_TOP?n+l:n+(a-r)/2,o,r)},mxLabel.prototype.redrawHtmlShape=function(){for(mxRectangleShape.prototype.redrawHtmlShape.apply(this,arguments);this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);if(null!=this.image){var e=document.createElement("img");e.style.position="relative",e.setAttribute("border","0");var n=this.getImageBounds(this.bounds.x,this.bounds.y,this.bounds.width,this.bounds.height);n.x-=this.bounds.x,n.y-=this.bounds.y,e.style.left=Math.round(n.x)+"px",e.style.top=Math.round(n.y)+"px",e.style.width=Math.round(n.width)+"px",e.style.height=Math.round(n.height)+"px",e.src=this.image,this.node.appendChild(e)}},mxUtils.extend(mxCylinder,mxShape),mxCylinder.prototype.maxHeight=40,mxCylinder.prototype.svgStrokeTolerance=0,mxCylinder.prototype.paintVertexShape=function(e,n,t,a,i){e.translate(n,t),e.begin(),this.redrawPath(e,n,t,a,i,!1),e.fillAndStroke(),e.setShadow(!1),e.begin(),this.redrawPath(e,n,t,a,i,!0),e.stroke()},mxCylinder.prototype.redrawPath=function(e,n,t,a,i,s){n=Math.min(this.maxHeight,Math.round(i/5)),(s&&null!=this.fill||!s&&null==this.fill)&&(e.moveTo(0,n),e.curveTo(0,2*n,a,2*n,a,n),s||(e.stroke(),e.begin())),s||(e.moveTo(0,n),e.curveTo(0,-n/3,a,-n/3,a,n),e.lineTo(a,i-n),e.curveTo(a,i+n/3,0,i+n/3,0,i-n),e.close())},mxUtils.extend(mxConnector,mxPolyline),mxConnector.prototype.paintEdgeShape=function(e,n){var t=this.createMarker(e,n,!0),a=this.createMarker(e,n,!1);null==this.style||1!=this.style[mxConstants.STYLE_CURVED]?this.paintLine(e,n,this.isRounded):this.paintCurvedLine(e,n),e.setFillColor(this.stroke),e.setShadow(!1),e.setDashed(!1),null!=t&&t(),null!=a&&a()},mxConnector.prototype.paintCurvedLine=function(e,n){e.begin();var t=n[0],a=n.length;for(e.moveTo(t.x,t.y),t=1;t<a-2;t++){var i=n[t],s=n[t+1];e.quadTo(i.x,i.y,(i.x+s.x)/2,(i.y+s.y)/2)}i=n[a-2],s=n[a-1],e.quadTo(i.x,i.y,s.x,s.y),e.stroke()},mxConnector.prototype.createMarker=function(e,n,t){var a=n.length,i=t?n[1]:n[a-2],s=(a=(n=t?n[0]:n[a-1]).x-i.x,n.y-i.y),o=(i=a/(o=Math.max(1,Math.sqrt(a*a+s*s))),a=s/o,s=mxUtils.getNumber(this.style,t?mxConstants.STYLE_STARTSIZE:mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE),mxUtils.getValue(this.style,t?mxConstants.STYLE_STARTARROW:mxConstants.STYLE_ENDARROW));return mxMarker.createMarker(e,this,o,n,i,a,s,t,this.strokewidth,0!=this.style[t?mxConstants.STYLE_STARTFILL:mxConstants.STYLE_ENDFILL])},mxConnector.prototype.augmentBoundingBox=function(e){mxShape.prototype.augmentBoundingBox.apply(this,arguments);var n=0;mxUtils.getValue(this.style,mxConstants.STYLE_STARTARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=mxUtils.getNumber(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_MARKERSIZE)+1),mxUtils.getValue(this.style,mxConstants.STYLE_ENDARROW,mxConstants.NONE)!=mxConstants.NONE&&(n=Math.max(n,mxUtils.getNumber(this.style,mxConstants.STYLE_ENDSIZE,mxConstants.DEFAULT_MARKERSIZE))+1),e.grow(Math.ceil(n*this.scale))},mxUtils.extend(mxSwimlane,mxShape),mxSwimlane.prototype.imageSize=16,mxSwimlane.prototype.getGradientBounds=function(e,n,t,a,i){return new mxRectangle(n,t,a,Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)))},mxSwimlane.prototype.getRotation=function(){var e=mxShape.prototype.getRotation.apply(this,arguments);return 1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)&&(e+=mxText.prototype.verticalTextRotation),e},mxSwimlane.prototype.getTextRotation=function(){return this.getRotation()},mxSwimlane.prototype.isPaintBoundsInverted=function(){return mxShape.prototype.isPaintBoundsInverted.apply(this,arguments)||1!=mxUtils.getValue(this.style,mxConstants.STYLE_HORIZONTAL,1)},mxSwimlane.prototype.getArcSize=function(e,n,t){return 3*t*(mxUtils.getValue(this.style,mxConstants.STYLE_ARCSIZE,100*mxConstants.RECTANGLE_ROUNDING_FACTOR)/100)},mxSwimlane.prototype.paintVertexShape=function(e,n,t,a,i){var s=Math.min(i,mxUtils.getValue(this.style,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),o=mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_FILLCOLOR,mxConstants.NONE),r=1==mxUtils.getValue(this.style,mxConstants.STYLE_SWIMLANE_LINE,1),l=0;e.translate(n,t),this.isRounded?(l=this.getArcSize(a,i,s),this.paintRoundedSwimlane(e,n,t,a,i,s,l,o,r)):this.paintSwimlane(e,n,t,a,i,s,o,r),o=mxUtils.getValue(this.style,mxConstants.STYLE_SEPARATORCOLOR,mxConstants.NONE),this.paintSeparator(e,a,s,i,o),null!=this.image&&(i=this.getImageBounds(n,s,a,i),e.image(i.x-n,i.y-t,i.width,i.height,this.image,!1,!1,!1)),this.glass&&(e.setShadow(!1),this.paintGlassEffect(e,0,0,a,s,l))},mxSwimlane.prototype.paintSwimlane=function(e,n,t,a,i,s,o,r){o!=mxConstants.NONE&&(e.save(),e.setFillColor(o),e.rect(0,0,a,i),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(0,s),e.lineTo(0,0),e.lineTo(a,0),e.lineTo(a,s),r&&e.close(),e.fillAndStroke(),s<i&&o==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i),e.lineTo(a,i),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintRoundedSwimlane=function(e,n,t,a,i,s,o,r,l){r!=mxConstants.NONE&&(e.save(),e.setFillColor(r),e.roundrect(0,0,a,i,o,o),e.fillAndStroke(),e.restore(),e.setShadow(!1)),e.begin(),e.moveTo(a,s),e.lineTo(a,o),e.quadTo(a,0,a-Math.min(a/2,o),0),e.lineTo(Math.min(a/2,o),0),e.quadTo(0,0,0,o),e.lineTo(0,s),l&&e.close(),e.fillAndStroke(),s<i&&r==mxConstants.NONE&&(e.pointerEvents=!1,e.begin(),e.moveTo(0,s),e.lineTo(0,i-o),e.quadTo(0,i,Math.min(a/2,o),i),e.lineTo(a-Math.min(a/2,o),i),e.quadTo(a,i,a,i-o),e.lineTo(a,s),e.stroke())},mxSwimlane.prototype.paintSeparator=function(e,n,t,a,i){i!=mxConstants.NONE&&(e.setStrokeColor(i),e.setDashed(!0),e.begin(),e.moveTo(n,t),e.lineTo(n,a),e.stroke(),e.setDashed(!1))},mxSwimlane.prototype.getImageBounds=function(e,n,t,a){return new mxRectangle(e+t-this.imageSize,n,this.imageSize,this.imageSize)},mxGraphLayout.prototype.graph=null,mxGraphLayout.prototype.useBoundingBox=!0,mxGraphLayout.prototype.parent=null,mxGraphLayout.prototype.moveCell=function(e,n,t){},mxGraphLayout.prototype.execute=function(e){},mxGraphLayout.prototype.getGraph=function(){return this.graph},mxGraphLayout.prototype.getConstraint=function(e,n,t,a){return null!=(n=null!=(t=this.graph.view.getState(n))?t.style:this.graph.getCellStyle(n))?n[e]:null},mxGraphLayout.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.graph.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.graph.model.getEdgeAt(e,s),r=this.graph.model.getTerminal(o,!0)==e;n&&!r||(r=this.graph.view.getVisibleTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraphLayout.prototype.isVertexMovable=function(e){return this.graph.isCellMovable(e)},mxGraphLayout.prototype.isVertexIgnored=function(e){return!this.graph.getModel().isVertex(e)||!this.graph.isCellVisible(e)},mxGraphLayout.prototype.isEdgeIgnored=function(e){var n=this.graph.getModel();return!n.isEdge(e)||!this.graph.isCellVisible(e)||null==n.getTerminal(e,!0)||null==n.getTerminal(e,!1)},mxGraphLayout.prototype.setEdgeStyleEnabled=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_NOEDGESTYLE,n?"0":"1",[e])},mxGraphLayout.prototype.setOrthogonalEdge=function(e,n){this.graph.setCellStyles(mxConstants.STYLE_ORTHOGONAL,n?"1":"0",[e])},mxGraphLayout.prototype.getParentOffset=function(e){var n=new mxPoint;if(null!=e&&e!=this.parent){var t=this.graph.getModel();if(t.isAncestor(this.parent,e))for(var a=t.getGeometry(e);e!=this.parent;)n.x+=a.x,n.y+=a.y,e=t.getParent(e),a=t.getGeometry(e)}return n},mxGraphLayout.prototype.setEdgePoints=function(e,n){if(null!=e){var t=this.graph.model,a=t.getGeometry(e);if(null==a?(a=new mxGeometry).setRelative(!0):a=a.clone(),null!=this.parent&&null!=n)for(var i=t.getParent(e),s=(i=this.getParentOffset(i),0);s<n.length;s++)n[s].x-=i.x,n[s].y-=i.y;a.points=n,t.setGeometry(e,a)}},mxGraphLayout.prototype.setVertexLocation=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e),s=null;if(null!=i){if(s=new mxRectangle(n,t,i.width,i.height),this.useBoundingBox){var o=this.graph.getView().getState(e);if(null!=o&&null!=o.text&&null!=o.text.boundingBox){var r=this.graph.getView().scale,l=o.text.boundingBox;o.text.boundingBox.x<o.x&&(n+=(o.x-l.x)/r,s.width=l.width),o.text.boundingBox.y<o.y&&(t+=(o.y-l.y)/r,s.height=l.height)}}null!=this.parent&&(null!=(o=a.getParent(e))&&o!=this.parent&&(n-=(o=this.getParentOffset(o)).x,t-=o.y)),i.x==n&&i.y==t||((i=i.clone()).x=n,i.y=t,a.setGeometry(e,i))}return s},mxGraphLayout.prototype.getVertexBounds=function(e){var n=this.graph.getModel().getGeometry(e);if(this.useBoundingBox&&(null!=(r=this.graph.getView().getState(e))&&null!=r.text&&null!=r.text.boundingBox)){var t=this.graph.getView().scale,a=r.text.boundingBox,i=Math.max(r.x-a.x,0)/t,s=Math.max(r.y-a.y,0)/t,o=Math.max(a.x+a.width-(r.x+r.width),0)/t,r=Math.max(a.y+a.height-(r.y+r.height),0)/t;n=new mxRectangle(n.x-i,n.y-s,n.width+i+o,n.height+s+r)}return null!=this.parent&&(e=this.graph.getModel().getParent(e),n=n.clone(),null!=e&&e!=this.parent&&(e=this.getParentOffset(e),n.x+=e.x,n.y+=e.y)),new mxRectangle(n.x,n.y,n.width,n.height)},mxGraphLayout.prototype.arrangeGroups=function(e,n){this.graph.getModel().beginUpdate();try{for(var t=e.length-1;0<=t;t--){var a=e[t],i=this.graph.getChildVertices(a),s=this.graph.getBoundingBoxFromGeometry(i),o=this.graph.getCellGeometry(a),r=0,l=0;if(this.graph.isSwimlane(a)){var d=this.graph.getStartSize(a);r=d.width,l=d.height}null!=s&&null!=o&&((o=o.clone()).x=o.x+s.x-n-r,o.y=o.y+s.y-n-l,o.width=s.width+2*n+r,o.height=s.height+2*n+l,this.graph.getModel().setGeometry(a,o),this.graph.moveCells(i,n+r-s.x,n+l-s.y))}}finally{this.graph.getModel().endUpdate()}},mxStackLayout.prototype=new mxGraphLayout,mxStackLayout.prototype.constructor=mxStackLayout,mxStackLayout.prototype.horizontal=null,mxStackLayout.prototype.spacing=null,mxStackLayout.prototype.x0=null,mxStackLayout.prototype.y0=null,mxStackLayout.prototype.border=0,mxStackLayout.prototype.keepFirstLocation=!1,mxStackLayout.prototype.fill=!1,mxStackLayout.prototype.resizeParent=!1,mxStackLayout.prototype.resizeLast=!1,mxStackLayout.prototype.wrap=null,mxStackLayout.prototype.isHorizontal=function(){return this.horizontal},mxStackLayout.prototype.moveCell=function(e,n,t){var a=this.graph.getModel(),i=a.getParent(e),s=this.isHorizontal();if(null!=e&&null!=i){var o=0,r=0,l=a.getChildCount(i);for(n=s?n:t,null!=(o=this.graph.getView().getState(i))&&(n-=s?o.x:o.y),o=0;o<l;o++)if((t=a.getChildAt(i,o))!=e&&null!=(t=a.getGeometry(t))){if(t=s?t.x+t.width/2:t.y+t.height/2,r<n&&n<t)break;r=t}s=i.getIndex(e),s=Math.max(0,o-(s<o?1:0)),a.add(i,e,s)}},mxStackLayout.prototype.getParentSize=function(e){var n=this.graph.getModel(),t=n.getGeometry(e);return null!=this.graph.container&&(null==t&&n.isLayer(e)||e==this.graph.getView().currentRoot)&&(t=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),t},mxStackLayout.prototype.execute=function(e){if(null!=e){var n=this.isHorizontal(),t=this.graph.getModel(),a=this.getParentSize(e),i=0;null!=a&&(i=n?a.height:a.width);i=i-(2*this.spacing+2*this.border);var s=this.x0+this.border,o=this.y0+this.border;if(this.graph.isSwimlane(e)){var r=this.graph.getCellStyle(e),l=mxUtils.getValue(r,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE);n==(r=mxUtils.getValue(r,mxConstants.STYLE_HORIZONTAL,!0))&&(i-=l),n?o+=l:s+=l}t.beginUpdate();try{l=0,r=null;for(var d=t.getChildCount(e),c=0;c<d;c++){var m=t.getChildAt(e,c);if(!this.isVertexIgnored(m)&&this.isVertexMovable(m)){var u=t.getGeometry(m);null!=u&&(u=u.clone(),null!=this.wrap&&null!=r&&(n&&r.x+r.width+u.width+2*this.spacing>this.wrap||!n&&r.y+r.height+u.height+2*this.spacing>this.wrap)&&(r=null,n?o+=l+this.spacing:s+=l+this.spacing,l=0),l=Math.max(l,n?u.height:u.width),null!=r?n?u.x=r.x+r.width+this.spacing:u.y=r.y+r.height+this.spacing:this.keepFirstLocation||(n?u.x=s:u.y=o),n?u.y=o:u.x=s,this.fill&&0<i&&(n?u.height=i:u.width=i),t.setGeometry(m,u),r=u)}}this.resizeParent&&null!=a&&null!=r&&!this.graph.isCellCollapsed(e)?(a=a.clone(),n?a.width=r.x+r.width+this.spacing:a.height=r.y+r.height+this.spacing,t.setGeometry(e,a)):this.resizeLast&&null!=a&&null!=r&&(n?r.width=a.width-r.x-this.spacing:r.height=a.height-r.y-this.spacing)}finally{t.endUpdate()}}},mxPartitionLayout.prototype=new mxGraphLayout,mxPartitionLayout.prototype.constructor=mxPartitionLayout,mxPartitionLayout.prototype.horizontal=null,mxPartitionLayout.prototype.spacing=null,mxPartitionLayout.prototype.border=null,mxPartitionLayout.prototype.resizeVertices=!0,mxPartitionLayout.prototype.isHorizontal=function(){return this.horizontal},mxPartitionLayout.prototype.moveCell=function(e,n,t){var a=(t=this.graph.getModel()).getParent(e);if(null!=e&&null!=a){var i=0,s=0,o=t.getChildCount(a);for(i=0;i<o;i++){var r=t.getChildAt(a,i);if(null!=(r=this.getVertexBounds(r))){if(r=r.x+r.width/2,s<n&&n<r)break;s=r}}n=a.getIndex(e),n=Math.max(0,i-(n<i?1:0)),t.add(a,e,n)}},mxPartitionLayout.prototype.execute=function(e){var n=this.isHorizontal(),t=this.graph.getModel(),a=t.getGeometry(e);if(null!=this.graph.container&&(null==a&&t.isLayer(e)||e==this.graph.getView().currentRoot)&&(a=new mxRectangle(0,0,this.graph.container.offsetWidth-1,this.graph.container.offsetHeight-1)),null!=a){for(var i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);!this.isVertexIgnored(r)&&this.isVertexMovable(r)&&i.push(r)}if(0<(s=i.length)){var l=this.border,d=this.border,c=(c=n?a.height:a.width)-2*this.border;if(e=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle,c-=n?e.height:e.width,l+=e.width,d+=e.height,e=this.border+(s-1)*this.spacing,0<(a=n?(a.width-l-e)/s:(a.height-d-e)/s)){t.beginUpdate();try{for(o=0;o<s;o++){r=i[o];var m=t.getGeometry(r);null!=m&&((m=m.clone()).x=l,m.y=d,n?(this.resizeVertices&&(m.width=a,m.height=c),l+=a+this.spacing):(this.resizeVertices&&(m.height=a,m.width=c),d+=a+this.spacing),t.setGeometry(r,m))}}finally{t.endUpdate()}}}}},mxCompactTreeLayout.prototype=new mxGraphLayout,mxCompactTreeLayout.prototype.constructor=mxCompactTreeLayout,mxCompactTreeLayout.prototype.horizontal=null,mxCompactTreeLayout.prototype.invert=null,mxCompactTreeLayout.prototype.resizeParent=!0,mxCompactTreeLayout.prototype.groupPadding=10,mxCompactTreeLayout.prototype.parentsChanged=null,mxCompactTreeLayout.prototype.moveTree=!1,mxCompactTreeLayout.prototype.levelDistance=10,mxCompactTreeLayout.prototype.nodeDistance=20,mxCompactTreeLayout.prototype.resetEdges=!0,mxCompactTreeLayout.prototype.prefHozEdgeSep=5,mxCompactTreeLayout.prototype.prefVertEdgeOff=4,mxCompactTreeLayout.prototype.minEdgeJetty=8,mxCompactTreeLayout.prototype.channelBuffer=4,mxCompactTreeLayout.prototype.edgeRouting=!0,mxCompactTreeLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxCompactTreeLayout.prototype.isHorizontal=function(){return this.horizontal},mxCompactTreeLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.getModel();if(null==n)if(0<this.graph.getEdges(e,t.getParent(e),this.invert,!this.invert,!1).length)n=e;else{if(0<(o=this.graph.findTreeRoots(e,!0,this.invert)).length)for(var a=0;a<o.length;a++)if(!this.isVertexIgnored(o[a])&&0<this.graph.getEdges(o[a],null,this.invert,!this.invert,!1).length){n=o[a];break}}if(null!=n){this.parentsChanged=this.resizeParent?{}:null,t.beginUpdate();try{var i=this.dfs(n,e);if(null!=i){this.layout(i);var s=this.graph.gridSize,o=s;if(!this.moveTree){var r=this.getVertexBounds(n);null!=r&&(s=r.x,o=r.y)}if((r=null)!=(r=this.isHorizontal()?this.horizontalLayout(i,s,o):this.verticalLayout(i,null,s,o))){var l=a=0;r.x<0&&(a=Math.abs(s-r.x)),r.y<0&&(l=Math.abs(o-r.y)),(0!=a||0!=l)&&this.moveNode(i,a,l),this.resizeParent&&this.adjustParents(),this.edgeRouting&&this.localEdgeProcessing(i)}}}finally{t.endUpdate()}}},mxCompactTreeLayout.prototype.moveNode=function(e,n,t){for(e.x+=n,e.y+=t,this.apply(e),e=e.child;null!=e;)this.moveNode(e,n,t),e=e.next},mxCompactTreeLayout.prototype.dfs=function(e,n,t){t=null!=t?t:[];var a=mxCellPath.create(e),i=null;if(null!=e&&null==t[a]&&!this.isVertexIgnored(e)){t[a]=e;i=this.createNode(e),a=this.graph.getModel();var s=null;e=this.graph.getEdges(e,n,this.invert,!this.invert,!1,!0);for(var o=this.graph.getView(),r=0;r<e.length;r++){var l=e[r];if(!this.isEdgeIgnored(l)){this.resetEdges&&this.setEdgePoints(l,null),this.edgeRouting&&(this.setEdgeStyleEnabled(l,!1),this.setEdgePoints(l,null));var d;l=null!=(d=o.getState(l))?d.getVisibleTerminal(this.invert):o.getVisibleTerminal(l,this.invert);null!=(d=this.dfs(l,n,t))&&null!=a.getGeometry(l)&&(null==s?i.child=d:s.next=d,s=d)}}}return i},mxCompactTreeLayout.prototype.layout=function(e){if(null!=e){for(var n=e.child;null!=n;)this.layout(n),n=n.next;null!=e.child?this.attachParent(e,this.join(e)):this.layoutLeaf(e)}},mxCompactTreeLayout.prototype.horizontalLayout=function(e,n,t,a){if(e.x+=n+e.offsetX,e.y+=t+e.offsetY,a=this.apply(e,a),null!=(n=e.child)){a=this.horizontalLayout(n,e.x,e.y,a),t=e.y+n.offsetY;for(var i=n.next;null!=i;)a=this.horizontalLayout(i,e.x+n.offsetX,t,a),t+=i.offsetY,i=i.next}return a},mxCompactTreeLayout.prototype.verticalLayout=function(e,n,t,a,i){if(e.x+=t+e.offsetY,e.y+=a+e.offsetX,i=this.apply(e,i),null!=(n=e.child))for(i=this.verticalLayout(n,e,e.x,e.y,i),t=e.x+n.offsetY,a=n.next;null!=a;)i=this.verticalLayout(a,e,t,e.y+n.offsetX,i),t+=a.offsetY,a=a.next;return i},mxCompactTreeLayout.prototype.attachParent=function(e,n){var t=this.nodeDistance+this.levelDistance,a=(n-e.width)/2-this.nodeDistance,i=a+e.width+2*this.nodeDistance-n;e.child.offsetX=t+e.height,e.child.offsetY=i,e.contour.upperHead=this.createLine(e.height,0,this.createLine(t,i,e.contour.upperHead)),e.contour.lowerHead=this.createLine(e.height,0,this.createLine(t,a,e.contour.lowerHead))},mxCompactTreeLayout.prototype.layoutLeaf=function(e){var n=2*this.nodeDistance;e.contour.upperTail=this.createLine(e.height+n,0),e.contour.upperHead=e.contour.upperTail,e.contour.lowerTail=this.createLine(0,-e.width-n),e.contour.lowerHead=this.createLine(e.height+n,0,e.contour.lowerTail)},mxCompactTreeLayout.prototype.join=function(e){var n=2*this.nodeDistance,t=e.child;e.contour=t.contour;var a=t.width+n,i=a;for(t=t.next;null!=t;){var s=this.merge(e.contour,t.contour);t.offsetY=s+a,t.offsetX=0,i+=s+(a=t.width+n),t=t.next}return i},mxCompactTreeLayout.prototype.merge=function(e,n){for(var t=0,a=0,i=0,s=e.lowerHead,o=n.upperHead;null!=o&&null!=s;){var r=this.offset(t,a,o.dx,o.dy,s.dx,s.dy);a=a+r,i=i+r;t+o.dx<=s.dx?(t+=o.dx,a+=o.dy,o=o.next):(t-=s.dx,a-=s.dy,s=s.next)}return null!=o?(t=this.bridge(e.upperTail,0,0,o,t,a),e.upperTail=null!=t.next?n.upperTail:t,e.lowerTail=n.lowerTail):null==(t=this.bridge(n.lowerTail,t,a,s,0,0)).next&&(e.lowerTail=t),e.lowerHead=n.lowerHead,i},mxCompactTreeLayout.prototype.offset=function(e,n,t,a,i,s){var o;return i<=e||e+t<=0?0:0<(o=0<i*a-t*s?e<0?e*a/t-n:0<e?e*s/i-n:-n:i<e+t?s-(n+(i-e)*a/t):e+t<i?(t+e)*s/i-(n+a):s-(n+a))?o:0},mxCompactTreeLayout.prototype.bridge=function(e,n,t,a,i,s){return n=i+a.dx-n,i=i=0,0==a.dx?i=a.dy:(i=n*a.dy,i/=a.dx),n=this.createLine(n,i,a.next),e.next=this.createLine(0,s+a.dy-i-t,n),n},mxCompactTreeLayout.prototype.createNode=function(e){var n={};return n.cell=e,n.x=0,n.y=0,n.width=0,n.height=0,null!=(e=this.getVertexBounds(e))&&(this.isHorizontal()?(n.width=e.height,n.height=e.width):(n.width=e.width,n.height=e.height)),n.offsetX=0,n.offsetY=0,n.contour={},n},mxCompactTreeLayout.prototype.apply=function(e,n){var t=this.graph.getModel(),a=e.cell,i=t.getGeometry(a);return null!=a&&null!=i&&(this.isVertexMovable(a)&&(i=this.setVertexLocation(a,e.x,e.y),this.resizeParent&&(t=t.getParent(a),a=mxCellPath.create(t),null==this.parentsChanged[a]&&(this.parentsChanged[a]=t))),n=null==n?new mxRectangle(i.x,i.y,i.width,i.height):new mxRectangle(Math.min(n.x,i.x),Math.min(n.y,i.y),Math.max(n.x+n.width,i.x+i.width),Math.max(n.y+n.height,i.y+i.height))),n},mxCompactTreeLayout.prototype.createLine=function(e,n,t){var a={};return a.dx=e,a.dy=n,a.next=t,a},mxCompactTreeLayout.prototype.adjustParents=function(){var e,n=[];for(e in this.parentsChanged)n.push(this.parentsChanged[e]);this.arrangeGroups(mxUtils.sortCells(n,!0),this.groupPadding)},mxCompactTreeLayout.prototype.localEdgeProcessing=function(e){for(this.processNodeOutgoing(e),e=e.child;null!=e;)this.localEdgeProcessing(e),e=e.next},mxCompactTreeLayout.prototype.processNodeOutgoing=function(e){for(var n=e.child,t=e.cell,a=0,i=[];null!=n;){a++;var s=n.x;this.horizontal&&(s=n.y),i.push(new WeightedCellSorter(n,s)),n=n.next}i.sort(WeightedCellSorter.prototype.compare),(s=e.width)>(o=(a+1)*this.prefHozEdgeSep)+2*this.prefHozEdgeSep&&(s-=2*this.prefHozEdgeSep),n=(e=s/a)/2,s>o+2*this.prefHozEdgeSep&&(n+=this.prefHozEdgeSep);s=this.minEdgeJetty-this.prefVertEdgeOff;for(var o=0,r=this.getVertexBounds(t),l=0;l<i.length;l++){for(var d=i[l].cell.cell,c=this.getVertexBounds(d),m=(d=this.graph.getEdgesBetween(t,d,!1),[]),u=0,p=0,g=0;g<d.length;g++)this.horizontal?(u=r.x+r.width,p=r.y+n,m.push(new mxPoint(u,p)),u=r.x+r.width+s,m.push(new mxPoint(u,p)),p=c.y+c.height/2):(u=r.x+n,p=r.y+r.height,m.push(new mxPoint(u,p)),p=r.y+r.height+s,m.push(new mxPoint(u,p)),u=c.x+c.width/2),m.push(new mxPoint(u,p)),this.setEdgePoints(d[g],m);l<a/2?s+=this.prefVertEdgeOff:a/2<l&&(s-=this.prefVertEdgeOff),n+=e,o=Math.max(o,s)}},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?1:n.weightedValue<e.weightedValue?-1:n.nudge?1:-1:0},mxFastOrganicLayout.prototype=new mxGraphLayout,mxFastOrganicLayout.prototype.constructor=mxFastOrganicLayout,mxFastOrganicLayout.prototype.useInputOrigin=!0,mxFastOrganicLayout.prototype.resetEdges=!0,mxFastOrganicLayout.prototype.disableEdgeStyle=!0,mxFastOrganicLayout.prototype.forceConstant=50,mxFastOrganicLayout.prototype.forceConstantSquared=0,mxFastOrganicLayout.prototype.minDistanceLimit=2,mxFastOrganicLayout.prototype.maxDistanceLimit=500,mxFastOrganicLayout.prototype.minDistanceLimitSquared=4,mxFastOrganicLayout.prototype.initialTemp=200,mxFastOrganicLayout.prototype.temperature=0,mxFastOrganicLayout.prototype.maxIterations=0,mxFastOrganicLayout.prototype.iteration=0,mxFastOrganicLayout.prototype.allowedToRun=!0,mxFastOrganicLayout.prototype.isVertexIgnored=function(e){return mxGraphLayout.prototype.isVertexIgnored.apply(this,arguments)||0==this.graph.getConnections(e).length},mxFastOrganicLayout.prototype.execute=function(e){var n=this.graph.getModel();this.vertexArray=[];for(var t=this.graph.getChildVertices(e),a=0;a<t.length;a++)this.isVertexIgnored(t[a])||this.vertexArray.push(t[a]);var i=this.useInputOrigin?this.graph.view.getBounds(this.vertexArray):null,s=this.vertexArray.length;for(this.indices=[],this.dispX=[],this.dispY=[],this.cellLocation=[],this.isMoveable=[],this.neighbours=[],this.radius=[],this.radiusSquared=[],this.forceConstant<.001&&(this.forceConstant=.001),this.forceConstantSquared=this.forceConstant*this.forceConstant,a=0;a<this.vertexArray.length;a++){var o=this.vertexArray[a];this.cellLocation[a]=[];var r=mxCellPath.create(o);this.indices[r]=a;var l=this.getVertexBounds(o),d=l.width,c=l.height,m=l.x,u=l.y;this.cellLocation[a][0]=m+d/2,this.cellLocation[a][1]=u+c/2,this.radius[a]=Math.min(d,c),this.radiusSquared[a]=this.radius[a]*this.radius[a]}n.beginUpdate();try{for(a=0;a<s;a++){this.dispX[a]=0,this.dispY[a]=0,this.isMoveable[a]=this.isVertexMovable(this.vertexArray[a]);var p=this.graph.getConnections(this.vertexArray[a],e);t=this.graph.getOpposites(p,this.vertexArray[a]);for(this.neighbours[a]=[],d=0;d<t.length;d++){this.resetEdges&&this.graph.resetEdge(p[d]),this.disableEdgeStyle&&this.setEdgeStyleEnabled(p[d],!1);r=mxCellPath.create(t[d]);var g=this.indices[r];this.neighbours[a][d]=null!=g?g:a}}for(this.temperature=this.initialTemp,0==this.maxIterations&&(this.maxIterations=20*Math.sqrt(s)),this.iteration=0;this.iteration<this.maxIterations;this.iteration++){if(!this.allowedToRun)return;this.calcRepulsion(),this.calcAttraction(),this.calcPositions(),this.reduceTemperature()}for(e=t=null,a=0;a<this.vertexArray.length;a++)o=this.vertexArray[a],this.isVertexMovable(o)&&(null!=(l=this.getVertexBounds(o))&&(this.cellLocation[a][0]-=l.width/2,this.cellLocation[a][1]-=l.height/2,m=this.graph.snap(this.cellLocation[a][0]),u=this.graph.snap(this.cellLocation[a][1]),this.setVertexLocation(o,m,u),t=null==t?m:Math.min(t,m),e=null==e?u:Math.min(e,u)));a=1-(t||0),o=1-(e||0),null!=i&&(a+=i.x,o+=i.y),this.graph.moveCells(this.vertexArray,a,o)}finally{n.endUpdate()}},mxFastOrganicLayout.prototype.calcPositions=function(){for(var e=0;e<this.vertexArray.length;e++)if(this.isMoveable[e]){(t=Math.sqrt(this.dispX[e]*this.dispX[e]+this.dispY[e]*this.dispY[e]))<.001&&(t=.001);var n=this.dispX[e]/t*Math.min(t,this.temperature),t=this.dispY[e]/t*Math.min(t,this.temperature);this.dispX[e]=0,this.dispY[e]=0,this.cellLocation[e][0]+=n,this.cellLocation[e][1]+=t}},mxFastOrganicLayout.prototype.calcAttraction=function(){for(var e=0;e<this.vertexArray.length;e++)for(var n=0;n<this.neighbours[e].length;n++){var t=this.neighbours[e][n];if(e!=t&&this.isMoveable[e]&&this.isMoveable[t]){(a=(s=this.cellLocation[e][0]-this.cellLocation[t][0])*s+(o=this.cellLocation[e][1]-this.cellLocation[t][1])*o-this.radiusSquared[e]-this.radiusSquared[t])<this.minDistanceLimitSquared&&(a=this.minDistanceLimitSquared);var a,i=Math.sqrt(a),s=s/i*(a=a/this.forceConstant),o=o/i*a;this.dispX[e]-=s,this.dispY[e]-=o,this.dispX[t]+=s,this.dispY[t]+=o}}},mxFastOrganicLayout.prototype.calcRepulsion=function(){for(var e=this.vertexArray.length,n=0;n<e;n++)for(var t=n;t<e;t++){if(!this.allowedToRun)return;if(t!=n&&this.isMoveable[n]&&this.isMoveable[t]){var a=this.cellLocation[n][0]-this.cellLocation[t][0],i=this.cellLocation[n][1]-this.cellLocation[t][1];0==a&&(a=.01+Math.random()),0==i&&(i=.01+Math.random());var s=Math.sqrt(a*a+i*i),o=s-this.radius[n]-this.radius[t];o>this.maxDistanceLimit||(o<this.minDistanceLimit&&(o=this.minDistanceLimit),a=a/s*(o=this.forceConstantSquared/o),i=i/s*o,this.dispX[n]+=a,this.dispY[n]+=i,this.dispX[t]-=a,this.dispY[t]-=i)}}},mxFastOrganicLayout.prototype.reduceTemperature=function(){this.temperature=this.initialTemp*(1-this.iteration/this.maxIterations)},mxCircleLayout.prototype=new mxGraphLayout,mxCircleLayout.prototype.constructor=mxCircleLayout,mxCircleLayout.prototype.radius=null,mxCircleLayout.prototype.moveCircle=!1,mxCircleLayout.prototype.x0=0,mxCircleLayout.prototype.y0=0,mxCircleLayout.prototype.resetEdges=!0,mxCircleLayout.prototype.disableEdgeStyle=!0,mxCircleLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0,a=null,i=null,s=[],o=n.getChildCount(e),r=0;r<o;r++){var l=n.getChildAt(e,r);if(this.isVertexIgnored(l))this.isEdgeIgnored(l)||(this.resetEdges&&this.graph.resetEdge(l),this.disableEdgeStyle&&this.setEdgeStyleEnabled(l,!1));else{s.push(l);var d=this.getVertexBounds(l);a=null==a?d.y:Math.min(a,d.y),i=null==i?d.x:Math.min(i,d.x),t=Math.max(t,Math.max(d.width,d.height))}}var c=this.getRadius(s.length,t);this.moveCircle&&(i=this.x0,a=this.y0),this.circle(s,c,i,a)}finally{n.endUpdate()}},mxCircleLayout.prototype.getRadius=function(e,n){return Math.max(e*n/Math.PI,this.radius)},mxCircleLayout.prototype.circle=function(e,n,t,a){for(var i=e.length,s=2*Math.PI/i,o=0;o<i;o++)this.isVertexMovable(e[o])&&this.setVertexLocation(e[o],t+n+n*Math.sin(o*s),a+n+n*Math.cos(o*s))},mxParallelEdgeLayout.prototype=new mxGraphLayout,mxParallelEdgeLayout.prototype.constructor=mxParallelEdgeLayout,mxParallelEdgeLayout.prototype.spacing=20,mxParallelEdgeLayout.prototype.execute=function(e){e=this.findParallels(e),this.graph.model.beginUpdate();try{for(var n in e){var t=e[n];1<t.length&&this.layout(t)}}finally{this.graph.model.endUpdate()}},mxParallelEdgeLayout.prototype.findParallels=function(e){for(var n=this.graph.getModel(),t=[],a=n.getChildCount(e),i=0;i<a;i++){var s=n.getChildAt(e,i);if(!this.isEdgeIgnored(s)){var o=this.getEdgeId(s);null!=o&&(null==t[o]&&(t[o]=[]),t[o].push(s))}}return t},mxParallelEdgeLayout.prototype.getEdgeId=function(e){var n=this.graph.getView(),t=n.getState(e),a=null!=t?t.getVisibleTerminal(!0):n.getVisibleTerminal(e,!0);return e=null!=t?t.getVisibleTerminal(!1):n.getVisibleTerminal(e,!1),null!=a&&null!=e?(a=mxCellPath.create(a),(e=mxCellPath.create(e))<a?e+"-"+a:a+"-"+e):null},mxParallelEdgeLayout.prototype.layout=function(e){var n=e[0];if((o=(t=this.graph.getModel()).getGeometry(t.getTerminal(n,!0)))==(s=t.getGeometry(t.getTerminal(n,!1)))){n=o.x+o.width+this.spacing;for(var t=o.y+o.height/2,a=0;a<e.length;a++)this.route(e[a],n,t),n+=this.spacing}else if(null!=o&&null!=s){n=o.x+o.width/2,t=o.y+o.height/2,a=s.x+s.width/2-n;var i=s.y+s.height/2-t,s=Math.sqrt(a*a+i*i),o=i*this.spacing/s;for(s=a*this.spacing/s,n=n+a/2+o*(e.length-1)/2,t=t+i/2-s*(e.length-1)/2,a=0;a<e.length;a++)this.route(e[a],n,t),n-=o,t+=s}},mxParallelEdgeLayout.prototype.route=function(e,n,t){this.graph.isCellMovable(e)&&this.setEdgePoints(e,[new mxPoint(n,t)])},mxCompositeLayout.prototype=new mxGraphLayout,mxCompositeLayout.prototype.constructor=mxCompositeLayout,mxCompositeLayout.prototype.layouts=null,mxCompositeLayout.prototype.master=null,mxCompositeLayout.prototype.moveCell=function(e,n,t){null!=this.master?this.master.move.apply(this.master,arguments):this.layouts[0].move.apply(this.layouts[0],arguments)},mxCompositeLayout.prototype.execute=function(e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<this.layouts.length;t++)this.layouts[t].execute.apply(this.layouts[t],arguments)}finally{n.endUpdate()}},mxEdgeLabelLayout.prototype=new mxGraphLayout,mxEdgeLabelLayout.prototype.constructor=mxEdgeLabelLayout,mxEdgeLabelLayout.prototype.execute=function(e){for(var n=this.graph.view,t=this.graph.getModel(),a=[],i=[],s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o),l=n.getState(r);null!=l&&(this.isVertexIgnored(r)?this.isEdgeIgnored(r)||a.push(l):i.push(l))}this.placeLabels(i,a)},mxEdgeLabelLayout.prototype.placeLabels=function(e,n){var t=this.graph.getModel();t.beginUpdate();try{for(var a=0;a<n.length;a++){var i=n[a];if(null!=i&&null!=i.text&&null!=i.text.boundingBox)for(var s=0;s<e.length;s++){var o=e[s];null!=o&&this.avoid(i,o)}}}finally{t.endUpdate()}},mxEdgeLabelLayout.prototype.avoid=function(e,n){var t=this.graph.getModel(),a=e.text.boundingBox;if(mxUtils.intersects(a,n)){var i=-a.y-a.height+n.y,s=-a.y+n.y+n.height;i=Math.abs(i)<Math.abs(s)?i:s,s=-a.x-a.width+n.x,a=-a.x+n.x+n.width,a=Math.abs(s)<Math.abs(a)?s:a;Math.abs(a)<Math.abs(i)?i=0:a=0,null!=(s=t.getGeometry(e.cell))&&(null!=(s=s.clone()).offset?(s.offset.x+=a,s.offset.y+=i):s.offset=new mxPoint(a,i),t.setGeometry(e.cell,s))}},mxGraphAbstractHierarchyCell.prototype.maxRank=-1,mxGraphAbstractHierarchyCell.prototype.minRank=-1,mxGraphAbstractHierarchyCell.prototype.x=null,mxGraphAbstractHierarchyCell.prototype.y=null,mxGraphAbstractHierarchyCell.prototype.width=0,mxGraphAbstractHierarchyCell.prototype.height=0,mxGraphAbstractHierarchyCell.prototype.nextLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.previousLayerConnectedCells=null,mxGraphAbstractHierarchyCell.prototype.temp=null,mxGraphAbstractHierarchyCell.prototype.getNextLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.getPreviousLayerConnectedCells=function(e){return null},mxGraphAbstractHierarchyCell.prototype.isEdge=function(){return!1},mxGraphAbstractHierarchyCell.prototype.isVertex=function(){return!1},mxGraphAbstractHierarchyCell.prototype.getGeneralPurposeVariable=function(e){return null},mxGraphAbstractHierarchyCell.prototype.setGeneralPurposeVariable=function(e,n){return null},mxGraphAbstractHierarchyCell.prototype.setX=function(e,n){this.isVertex()?this.x[0]=n:this.isEdge()&&(this.x[e-this.minRank-1]=n)},mxGraphAbstractHierarchyCell.prototype.getX=function(e){return this.isVertex()?this.x[0]:this.isEdge()?this.x[e-this.minRank-1]:0},mxGraphAbstractHierarchyCell.prototype.setY=function(e,n){this.isVertex()?this.y[0]=n:this.isEdge()&&(this.y[e-this.minRank-1]=n)},mxGraphHierarchyNode.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyNode.prototype.constructor=mxGraphHierarchyNode,mxGraphHierarchyNode.prototype.cell=null,mxGraphHierarchyNode.prototype.connectsAsTarget=[],mxGraphHierarchyNode.prototype.connectsAsSource=[],mxGraphHierarchyNode.prototype.hashCode=!1,mxGraphHierarchyNode.prototype.getRankValue=function(e){return this.maxRank},mxGraphHierarchyNode.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[],this.nextLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsTarget.length;n++){var t=this.connectsAsTarget[n];-1==t.maxRank||t.maxRank==e+1?this.nextLayerConnectedCells[0].push(t.source):this.nextLayerConnectedCells[0].push(t)}}return this.nextLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[],this.previousLayerConnectedCells[0]=[];for(var n=0;n<this.connectsAsSource.length;n++){var t=this.connectsAsSource[n];-1==t.minRank||t.minRank==e-1?this.previousLayerConnectedCells[0].push(t.target):this.previousLayerConnectedCells[0].push(t)}}return this.previousLayerConnectedCells[0]},mxGraphHierarchyNode.prototype.isVertex=function(){return!0},mxGraphHierarchyNode.prototype.getGeneralPurposeVariable=function(e){return this.temp[0]},mxGraphHierarchyNode.prototype.setGeneralPurposeVariable=function(e,n){this.temp[0]=n},mxGraphHierarchyNode.prototype.isAncestor=function(e){if(null!=e&&null!=this.hashCode&&null!=e.hashCode&&this.hashCode.length<e.hashCode.length){if(this.hashCode==e.hashCode)return!0;if(null==this.hashCode||null==this.hashCode)return!1;for(var n=0;n<this.hashCode.length;n++)if(this.hashCode[n]!=e.hashCode[n])return!1;return!0}return!1},mxGraphHierarchyNode.prototype.getCoreCell=function(){return this.cell},mxGraphHierarchyEdge.prototype=new mxGraphAbstractHierarchyCell,mxGraphHierarchyEdge.prototype.constructor=mxGraphHierarchyEdge,mxGraphHierarchyEdge.prototype.edges=null,mxGraphHierarchyEdge.prototype.source=null,mxGraphHierarchyEdge.prototype.target=null,mxGraphHierarchyEdge.prototype.isReversed=!1,mxGraphHierarchyEdge.prototype.invert=function(e){e=this.source,this.source=this.target,this.target=e,this.isReversed=!this.isReversed},mxGraphHierarchyEdge.prototype.getNextLayerConnectedCells=function(e){if(null==this.nextLayerConnectedCells){this.nextLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.nextLayerConnectedCells[n]=[],n==this.temp.length-1?this.nextLayerConnectedCells[n].push(this.source):this.nextLayerConnectedCells[n].push(this)}return this.nextLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.getPreviousLayerConnectedCells=function(e){if(null==this.previousLayerConnectedCells){this.previousLayerConnectedCells=[];for(var n=0;n<this.temp.length;n++)this.previousLayerConnectedCells[n]=[],0==n?this.previousLayerConnectedCells[n].push(this.target):this.previousLayerConnectedCells[n].push(this)}return this.previousLayerConnectedCells[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.isEdge=function(){return!0},mxGraphHierarchyEdge.prototype.getGeneralPurposeVariable=function(e){return this.temp[e-this.minRank-1]},mxGraphHierarchyEdge.prototype.setGeneralPurposeVariable=function(e,n){this.temp[e-this.minRank-1]=n},mxGraphHierarchyEdge.prototype.getCoreCell=function(){return null!=this.edges&&0<this.edges.length?this.edges[0]:null},mxGraphHierarchyModel.prototype.maxRank=null,mxGraphHierarchyModel.prototype.vertexMapper=null,mxGraphHierarchyModel.prototype.edgeMapper=null,mxGraphHierarchyModel.prototype.ranks=null,mxGraphHierarchyModel.prototype.roots=null,mxGraphHierarchyModel.prototype.parent=null,mxGraphHierarchyModel.prototype.dfsCount=0,mxGraphHierarchyModel.prototype.SOURCESCANSTARTRANK=1e8,mxGraphHierarchyModel.prototype.tightenToSource=!1,mxGraphHierarchyModel.prototype.createInternalCells=function(e,n,t){for(var a=e.getGraph(),i=0;i<n.length;i++){t[i]=new mxGraphHierarchyNode(n[i]);var s=mxCellPath.create(n[i]);this.vertexMapper[s]=t[i],s=e.getEdges(n[i]),t[i].connectsAsSource=[];for(var o=0;o<s.length;o++){if((d=e.getVisibleTerminal(s[o],!1))!=n[i]&&d!=n[i]&&e.graph.model.isVertex(d)&&!e.isVertexIgnored(d)){var r=e.getEdgesBetween(n[i],d,!1),l=e.getEdgesBetween(n[i],d,!0),d=mxCellPath.create(r[0]);if(null!=r&&0<r.length&&null==this.edgeMapper[d]&&2*l.length>=r.length){l=new mxGraphHierarchyEdge(r);for(var c=0;c<r.length;c++){var m=r[c];d=mxCellPath.create(m);this.edgeMapper[d]=l,a.resetEdge(m),e.disableEdgeStyle&&(e.setEdgeStyleEnabled(m,!1),e.setOrthogonalEdge(m,!0))}l.source=t[i],mxUtils.indexOf(t[i].connectsAsSource,l)<0&&t[i].connectsAsSource.push(l)}}}t[i].temp[0]=0}},mxGraphHierarchyModel.prototype.initialRank=function(){var e=[];if(null!=this.roots)for(var n=0;n<this.roots.length;n++){var t=mxCellPath.create(this.roots[n]);null!=(t=this.vertexMapper[t])&&e.push(t)}for(var a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]=-1;for(var i=e.slice();0<e.length;){var s,o;s=(t=e[0]).connectsAsTarget,o=t.connectsAsSource;var r=!0,l=this.SOURCESCANSTARTRANK;for(n=0;n<s.length;n++){var d=s[n];if(5270620!=d.temp[0]){r=!1;break}d=d.source,l=Math.min(l,d.temp[0]-1)}if(r){if(t.temp[0]=l,this.maxRank=Math.min(this.maxRank,l),null!=o)for(n=0;n<o.length;n++)(d=o[n]).temp[0]=5270620,-1==(d=d.target).temp[0]&&(e.push(d),d.temp[0]=-2);e.shift()}else if(n=e.shift(),e.push(t),n==t&&1==e.length)break}for(a in this.vertexMapper)(t=this.vertexMapper[a]).temp[0]-=this.maxRank;for(n=0;n<i.length;n++)for(e=0,s=(t=i[n]).connectsAsSource,a=0;a<s.length;a++)d=(d=s[a]).target,t.temp[0]=Math.max(e,d.temp[0]+1),e=t.temp[0];this.maxRank=this.SOURCESCANSTARTRANK-this.maxRank},mxGraphHierarchyModel.prototype.fixRanks=function(){var s=[];this.ranks=[];for(var e=0;e<this.maxRank+1;e++)s[e]=[],this.ranks[e]=s[e];var n=null;if(null!=this.roots){var t=this.roots;for(n=[],e=0;e<t.length;e++){var a=mxCellPath.create(t[e]);n[e]=this.vertexMapper[a]}}this.visit(function(e,n,t,a,i){if(0==i&&n.maxRank<0&&n.minRank<0&&(s[n.temp[0]].push(n),n.maxRank=n.temp[0],n.minRank=n.temp[0],n.temp[0]=s[n.maxRank].length-1),null!=e&&null!=t&&1<e.maxRank-n.maxRank)for(t.maxRank=e.maxRank,t.minRank=n.maxRank,t.temp=[],t.x=[],t.y=[],e=t.minRank+1;e<t.maxRank;e++)s[e].push(t),t.setGeneralPurposeVariable(e,s[e].length-1)},n,!1,null)},mxGraphHierarchyModel.prototype.visit=function(e,n,t,a){if(null!=n){for(var i=0;i<n.length;i++){var s=n[i];null!=s&&(null==a&&(a={}),t?(s.hashCode=[],s.hashCode[0]=this.dfsCount,s.hashCode[1]=i,this.extendedDfs(null,s,null,e,a,s.hashCode,i,0)):this.dfs(null,s,null,e,a,0))}this.dfsCount++}},mxGraphHierarchyModel.prototype.dfs=function(e,n,t,a,i,s){if(null!=n){var o=mxCellPath.create(n.cell);if(null==i[o])for(a(e,i[o]=n,t,s,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.dfs(n,o.target,o,a,i,s+1);else a(e,n,t,s,1)}},mxGraphHierarchyModel.prototype.extendedDfs=function(e,n,t,a,i,s,o,r){if(null!=n)if(null==e||null!=n.hashCode&&n.hashCode[0]==e.hashCode[0]||(s=e.hashCode.length+1,n.hashCode=e.hashCode.slice(),n.hashCode[s-1]=o),null==i[o=mxCellPath.create(n.cell)])for(a(e,i[o]=n,t,r,0),e=n.connectsAsSource.slice(),t=0;t<e.length;t++)o=e[t],this.extendedDfs(n,o.target,o,a,i,n.hashCode,t,r+1);else a(e,n,t,r,1)},mxHierarchicalLayoutStage.prototype.execute=function(e){},mxMedianHybridCrossingReduction.prototype=new mxHierarchicalLayoutStage,mxMedianHybridCrossingReduction.prototype.constructor=mxMedianHybridCrossingReduction,mxMedianHybridCrossingReduction.prototype.layout=null,mxMedianHybridCrossingReduction.prototype.maxIterations=24,mxMedianHybridCrossingReduction.prototype.nestedBestRanks=null,mxMedianHybridCrossingReduction.prototype.currentBestCrossings=0,mxMedianHybridCrossingReduction.prototype.iterationsWithoutImprovement=0,mxMedianHybridCrossingReduction.prototype.maxNoImprovementIterations=2,mxMedianHybridCrossingReduction.prototype.execute=function(e){e=this.layout.getModel(),this.nestedBestRanks=[];for(var n=0;n<e.ranks.length;n++)this.nestedBestRanks[n]=e.ranks[n].slice();var t=0,a=this.calculateCrossings(e);for(n=0;n<this.maxIterations&&t<this.maxNoImprovementIterations;n++){this.weightedMedian(n,e),this.transpose(n,e);var i=this.calculateCrossings(e);if(i<a)for(a=i,i=t=0;i<this.nestedBestRanks.length;i++)for(var s=e.ranks[i],o=0;o<s.length;o++){var r=s[o];this.nestedBestRanks[i][r.getGeneralPurposeVariable(i)]=r}else for(t++,i=0;i<this.nestedBestRanks.length;i++)for(s=e.ranks[i],o=0;o<s.length;o++)(r=s[o]).setGeneralPurposeVariable(i,o);if(0==a)break}for(t=[],a=[],n=0;n<e.maxRank+1;n++)a[n]=[],t[n]=a[n];for(n=0;n<this.nestedBestRanks.length;n++)for(i=0;i<this.nestedBestRanks[n].length;i++)a[n].push(this.nestedBestRanks[n][i]);e.ranks=t},mxMedianHybridCrossingReduction.prototype.calculateCrossings=function(e){for(var n=e.ranks.length,t=0,a=1;a<n;a++)t+=this.calculateRankCrossing(a,e);return t},mxMedianHybridCrossingReduction.prototype.calculateRankCrossing=function(e,n){for(var t=0,a=n.ranks[e],i=a.length,s=n.ranks[e-1].length,o=[],r=0;r<i;r++)o[r]=[];for(r=0;r<a.length;r++)for(var l=(c=a[r]).getGeneralPurposeVariable(e),d=c.getPreviousLayerConnectedCells(e),c=0;c<d.length;c++){var m=d[c].getGeneralPurposeVariable(e-1);o[l][m]=201207}for(r=0;r<i;r++)for(c=0;c<s;c++)if(201207==o[r][c]){for(a=r+1;a<i;a++)for(l=0;l<c;l++)201207==o[a][l]&&t++;for(a=0;a<r;a++)for(l=c+1;l<s;l++)201207==o[a][l]&&t++}return t/2},mxMedianHybridCrossingReduction.prototype.transpose=function(e,n){for(var t=!0,a=0;t&&a++<10;)for(var i=1==e%2&&1==a%2,s=(t=!1,0);s<n.ranks.length;s++){for(var o=n.ranks[s],r=[],l=0;l<o.length;l++){(b=(f=o[l]).getGeneralPurposeVariable(s))<0&&(b=l),r[b]=f}var d=b=f=null,c=null,m=null,u=null,p=null,g=null,v=null,h=null;for(l=0;l<o.length-1;l++){if(0==l){for(var f=(v=r[l]).getNextLayerConnectedCells(s),b=v.getPreviousLayerConnectedCells(s),A=(m=[],u=[],0);A<f.length;A++)m[A]=f[A].getGeneralPurposeVariable(s+1);for(A=0;A<b.length;A++)u[A]=b[A].getGeneralPurposeVariable(s-1)}else f=d,b=c,m=p,u=g,v=h;for(d=(h=r[l+1]).getNextLayerConnectedCells(s),c=h.getPreviousLayerConnectedCells(s),p=[],g=[],A=0;A<d.length;A++)p[A]=d[A].getGeneralPurposeVariable(s+1);for(A=0;A<c.length;A++)g[A]=c[A].getGeneralPurposeVariable(s-1);var E=0,y=0;for(A=0;A<m.length;A++)for(var S=0;S<p.length;S++)m[A]>p[S]&&E++,m[A]<p[S]&&y++;for(A=0;A<u.length;A++)for(S=0;S<g.length;S++)u[A]>g[S]&&E++,u[A]<g[S]&&y++;(y<E||y==E&&i)&&(d=v.getGeneralPurposeVariable(s),v.setGeneralPurposeVariable(s,h.getGeneralPurposeVariable(s)),h.setGeneralPurposeVariable(s,d),d=f,c=b,p=m,g=u,h=v,i||(t=!0))}}},mxMedianHybridCrossingReduction.prototype.weightedMedian=function(e,n){var t=0==e%2;if(t)for(var a=n.maxRank-1;0<=a;a--)this.medianRank(a,t);else for(a=1;a<n.maxRank;a++)this.medianRank(a,t)},mxMedianHybridCrossingReduction.prototype.medianRank=function(e,n){for(var t=this.nestedBestRanks[e].length,a=[],i=[],s=0;s<t;s++){var o,r,l=this.nestedBestRanks[e][s],d=new MedianCellSorter;d.cell=l,r=n?e+1:e-1,null!=(o=n?l.getNextLayerConnectedCells(e):l.getPreviousLayerConnectedCells(e))&&0!=o.length?(d.medianValue=this.medianValue(o,r),a.push(d)):i[l.getGeneralPurposeVariable(e)]=!0}for(a.sort(MedianCellSorter.prototype.compare),s=0;s<t;s++)null==i[s]&&(l=a.shift().cell).setGeneralPurposeVariable(e,s)},mxMedianHybridCrossingReduction.prototype.medianValue=function(e,n){for(var t=[],a=0,i=0;i<e.length;i++){var s=e[i];t[a++]=s.getGeneralPurposeVariable(n)}return t.sort(function(e,n){return e-n}),1==a%2?t[Math.floor(a/2)]:2==a?(t[0]+t[1])/2:(s=t[(i=a/2)-1]-t[0],a=t[a-1]-t[i],(t[i-1]*a+t[i]*s)/(s+a))},MedianCellSorter.prototype.medianValue=0,MedianCellSorter.prototype.cell=!1,MedianCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.medianValue>e.medianValue?-1:n.medianValue<e.medianValue?1:0:0},mxMinimumCycleRemover.prototype=new mxHierarchicalLayoutStage,mxMinimumCycleRemover.prototype.constructor=mxMinimumCycleRemover,mxMinimumCycleRemover.prototype.layout=null,mxMinimumCycleRemover.prototype.execute=function(e){var n=this.layout.getModel(),s={},o=mxUtils.clone(n.vertexMapper,null,!0),t=null;if(null!=n.roots){var a=n.roots;t=[];for(e=0;e<a.length;e++){var i=mxCellPath.create(a[e]);t[e]=n.vertexMapper[i]}}if(n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget),n.connectsAsSource.push(t)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},t,!0,null),t=null,0<o.lenth&&(t=mxUtils.clone(o,null,!0)),e=mxUtils.clone(s,null,!0),n.visit(function(e,n,t,a,i){n.isAncestor(e)&&(t.invert(),mxUtils.remove(t,e.connectsAsSource),n.connectsAsSource.push(t),e.connectsAsTarget.push(t),mxUtils.remove(t,n.connectsAsTarget)),e=mxCellPath.create(n.cell),s[e]=n,delete o[e]},o,!0,e),a=this.layout.getGraph(),null!=t&&0<t.length)for(n=n.roots,e=0;e<t.length;e++)i=t[e].cell,0==a.getIncomingEdges(i).length&&n.push(i)};var mxHierarchicalEdgeStyle={ORTHOGONAL:1,POLYLINE:2,STRAIGHT:3,CURVE:4};function WeightedCellSorter(e,n){this.cell=e,this.weightedValue=n}function mxHierarchicalLayout(e,n,t){mxGraphLayout.call(this,e),this.orientation=null!=n?n:mxConstants.DIRECTION_NORTH,this.deterministic=null==t||t}function mxGraphModel(e){this.currentEdit=this.createUndoableEdit(),null!=e?this.setRoot(e):this.clear()}function mxRootChange(e,n){this.model=e,this.previous=this.root=n}function mxChildChange(e,n,t,a){this.model=e,this.previous=this.parent=n,this.child=t,this.previousIndex=this.index=a}function mxTerminalChange(e,n,t,a){this.model=e,this.cell=n,this.previous=this.terminal=t,this.source=a}function mxValueChange(e,n,t){this.model=e,this.cell=n,this.previous=this.value=t}function mxStyleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.style=t}function mxGeometryChange(e,n,t){this.model=e,this.cell=n,this.previous=this.geometry=t}function mxCollapseChange(e,n,t){this.model=e,this.cell=n,this.previous=this.collapsed=t}function mxVisibleChange(e,n,t){this.model=e,this.cell=n,this.previous=this.visible=t}function mxCellAttributeChange(e,n,t){this.cell=e,this.attribute=n,this.previous=this.value=t}function mxCell(e,n,t){this.value=e,this.setGeometry(n),this.setStyle(t),null!=this.onInit&&this.onInit()}function mxGeometry(e,n,t,a){mxRectangle.call(this,e,n,t,a)}mxCoordinateAssignment.prototype=new mxHierarchicalLayoutStage,mxCoordinateAssignment.prototype.constructor=mxCoordinateAssignment,mxCoordinateAssignment.prototype.layout=null,mxCoordinateAssignment.prototype.intraCellSpacing=30,mxCoordinateAssignment.prototype.interRankCellSpacing=100,mxCoordinateAssignment.prototype.parallelEdgeSpacing=10,mxCoordinateAssignment.prototype.maxIterations=8,mxCoordinateAssignment.prototype.prefHozEdgeSep=5,mxCoordinateAssignment.prototype.prefVertEdgeOff=2,mxCoordinateAssignment.prototype.minEdgeJetty=12,mxCoordinateAssignment.prototype.channelBuffer=4,mxCoordinateAssignment.prototype.jettyPositions=null,mxCoordinateAssignment.prototype.orientation=mxConstants.DIRECTION_NORTH,mxCoordinateAssignment.prototype.initialX=null,mxCoordinateAssignment.prototype.limitX=null,mxCoordinateAssignment.prototype.currentXDelta=null,mxCoordinateAssignment.prototype.widestRank=null,mxCoordinateAssignment.prototype.rankTopY=null,mxCoordinateAssignment.prototype.rankBottomY=null,mxCoordinateAssignment.prototype.widestRankValue=null,mxCoordinateAssignment.prototype.rankWidths=null,mxCoordinateAssignment.prototype.rankY=null,mxCoordinateAssignment.prototype.fineTuning=!0,mxCoordinateAssignment.prototype.edgeStyle=mxHierarchicalEdgeStyle.POLYLINE,mxCoordinateAssignment.prototype.nextLayerConnectedCache=null,mxCoordinateAssignment.prototype.previousLayerConnectedCache=null,mxCoordinateAssignment.prototype.groupPadding=10,mxCoordinateAssignment.prototype.printStatus=function(){var e=this.layout.getModel();mxLog.show(),mxLog.writeln("======Coord assignment debug=======");for(var n=0;n<e.ranks.length;n++){mxLog.write("Rank ",n," : ");for(var t=e.ranks[n],a=0;a<t.length;a++)mxLog.write(t[a].getGeneralPurposeVariable(n),"  ");mxLog.writeln()}mxLog.writeln("====================================")},mxCoordinateAssignment.prototype.execute=function(e){this.jettyPositions=[],e=this.layout.getModel(),this.currentXDelta=0,this.initialCoords(this.layout.getGraph(),e),this.fineTuning&&this.minNode(e);var n=1e8;if(this.fineTuning)for(var t=0;t<this.maxIterations;t++){if(0!=t&&(this.medianPos(t,e),this.minNode(e)),this.currentXDelta<n){for(var a=0;a<e.ranks.length;a++)for(var i=e.ranks[a],s=0;s<i.length;s++){var o=i[s];o.setX(a,o.getGeneralPurposeVariable(a))}n=this.currentXDelta}else for(a=0;a<e.ranks.length;a++)for(i=e.ranks[a],s=0;s<i.length;s++)(o=i[s]).setGeneralPurposeVariable(a,o.getX(a));this.minPath(this.layout.getGraph(),e),this.currentXDelta=0}this.setCellLocations(this.layout.getGraph(),e)},mxCoordinateAssignment.prototype.minNode=function(e){for(var n=[],t=[],a=[],i=0;i<=e.maxRank;i++){a[i]=e.ranks[i];for(var s=0;s<a[i].length;s++){var o=a[i][s];(r=new WeightedCellSorter(o,i)).rankIndex=s,r.visited=!0,n.push(r),t[o=mxCellPath.create(o.getCoreCell())]=r}}for(e=10*n.length,s=0;0<n.length&&s<=e;){i=(r=n.shift()).cell;var r,l=r.weightedValue,d=parseInt(r.rankIndex),c=(o=i.getNextLayerConnectedCells(l),i.getPreviousLayerConnectedCells(l)),m=o.length,u=c.length,p=this.medianXValue(o,l+1),g=this.medianXValue(c,l-1),v=m+u,h=i.getGeneralPurposeVariable(l),f=h;if(0<v&&(f=(p*m+g*u)/v),m=!1,f<h-1?0==d?(i.setGeneralPurposeVariable(l,f),m=!0):(h=(h=(d=a[l][d-1]).getGeneralPurposeVariable(l))+d.width/2+this.intraCellSpacing+i.width/2)<f?(i.setGeneralPurposeVariable(l,f),m=!0):h<i.getGeneralPurposeVariable(l)-1&&(i.setGeneralPurposeVariable(l,h),m=!0):h+1<f&&(d==a[l].length-1?(i.setGeneralPurposeVariable(l,f),m=!0):f<(h=(h=(d=a[l][d+1]).getGeneralPurposeVariable(l))-d.width/2-this.intraCellSpacing-i.width/2)?(i.setGeneralPurposeVariable(l,f),m=!0):h>i.getGeneralPurposeVariable(l)+1&&(i.setGeneralPurposeVariable(l,h),m=!0)),m){for(i=0;i<o.length;i++)l=o[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l));for(i=0;i<c.length;i++)l=c[i],null!=(l=t[l=mxCellPath.create(l.getCoreCell())])&&0==l.visited&&(l.visited=!0,n.push(l))}r.visited=!1,s++}},mxCoordinateAssignment.prototype.medianPos=function(e,n){if(0==e%2)for(var t=n.maxRank;0<t;t--)this.rankMedianPosition(t-1,n,t);else for(t=0;t<n.maxRank-1;t++)this.rankMedianPosition(t+1,n,t)},mxCoordinateAssignment.prototype.rankMedianPosition=function(e,n,t){n=n.ranks[e];for(var a=[],i=[],s=0;s<n.length;s++){var o=n[s];a[s]=new WeightedCellSorter,a[s].cell=o,a[s].rankIndex=s;var r=mxCellPath.create(o.getCoreCell());i[r]=a[s];var l=null;l=t<e?o.getPreviousLayerConnectedCells(e):o.getNextLayerConnectedCells(e);a[s].weightedValue=this.calculatedWeightedValue(o,l)}for(a.sort(WeightedCellSorter.prototype.compare),s=0;s<a.length;s++){r=0,o=a[s].cell,r=0,null!=(l=t<e?o.getPreviousLayerConnectedCells(e).slice():o.getNextLayerConnectedCells(e).slice())&&(r=0<(r=l.length)?this.medianXValue(l,t):o.getGeneralPurposeVariable(e));for(var d=0,c=(l=-1e8,a[s].rankIndex-1);0<=c;){var m;if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var u=m.cell;m.visited?(l=u.getGeneralPurposeVariable(e)+u.width/2+this.intraCellSpacing+d+o.width/2,c=-1):(d+=u.width+this.intraCellSpacing,c--)}}for(d=0,u=1e8,c=a[s].rankIndex+1;c<a.length;)if(null!=(m=i[m=mxCellPath.create(n[c].getCoreCell())])){var p=m.cell;m.visited?(u=p.getGeneralPurposeVariable(e)-p.width/2-this.intraCellSpacing-d-o.width/2,c=a.length):(d+=p.width+this.intraCellSpacing,c++)}l<=r&&r<=u?o.setGeneralPurposeVariable(e,r):r<l?(o.setGeneralPurposeVariable(e,l),this.currentXDelta+=l-r):u<r&&(o.setGeneralPurposeVariable(e,u),this.currentXDelta+=r-u),a[s].visited=!0}},mxCoordinateAssignment.prototype.calculatedWeightedValue=function(e,n){for(var t=0,a=0;a<n.length;a++){var i=n[a];e.isVertex()&&i.isVertex()?t++:t=e.isEdge()&&i.isEdge()?t+8:t+2}return t},mxCoordinateAssignment.prototype.medianXValue=function(e,n){if(0==e.length)return 0;for(var t=[],a=0;a<e.length;a++)t[a]=e[a].getGeneralPurposeVariable(n);return t.sort(function(e,n){return e-n}),1==e.length%2?t[Math.floor(e.length/2)]:(t[(a=e.length/2)-1]+t[a])/2},mxCoordinateAssignment.prototype.initialCoords=function(e,n){this.calculateWidestRank(e,n);for(var t=this.widestRank;0<=t;t--)t<n.maxRank&&this.rankCoordinates(t,e,n);for(t=this.widestRank+1;t<=n.maxRank;t++)0<t&&this.rankCoordinates(t,e,n)},mxCoordinateAssignment.prototype.rankCoordinates=function(e,n,t){n=t.ranks[e],t=0;for(var a=this.initialX+(this.widestRankValue-this.rankWidths[e])/2,i=!1,s=0;s<n.length;s++){var o=n[s];if(o.isVertex()){var r=this.layout.getVertexBounds(o.cell);null!=r?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(o.width=r.width,o.height=r.height):(o.width=r.height,o.height=r.width):i=!0,t=Math.max(t,o.height)}else o.isEdge()&&(r=1,null!=o.edges?r=o.edges.length:mxLog.warn("edge.edges is null"),o.width=(r-1)*this.parallelEdgeSpacing);a+=o.width/2,o.setX(e,a),o.setGeneralPurposeVariable(e,a),a+=o.width/2,a+=this.intraCellSpacing}1==i&&mxLog.warn("At least one cell has no bounds")},mxCoordinateAssignment.prototype.calculateWidestRank=function(e,n){var t=-this.interRankCellSpacing,a=0;this.rankWidths=[],this.rankY=[];for(var i=n.maxRank;0<=i;i--){for(var s=0,o=n.ranks[i],r=this.initialX,l=!1,d=0;d<o.length;d++){var c=o[d];if(c.isVertex()){var m=this.layout.getVertexBounds(c.cell);null!=m?this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(c.width=m.width,c.height=m.height):(c.width=m.height,c.height=m.width):l=!0,s=Math.max(s,c.height)}else c.isEdge()&&(m=1,null!=c.edges?m=c.edges.length:mxLog.warn("edge.edges is null"),c.width=(m-1)*this.parallelEdgeSpacing);r+=c.width/2,c.setX(i,r),c.setGeneralPurposeVariable(i,r),r+=c.width/2,(r+=this.intraCellSpacing)>this.widestRankValue&&(this.widestRankValue=r,this.widestRank=i),this.rankWidths[i]=r}for(1==l&&mxLog.warn("At least one cell has no bounds"),this.rankY[i]=t,r=s/2+a/2+this.interRankCellSpacing,a=s,t=this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_WEST?t+r:t-r,d=0;d<o.length;d++)o[d].setY(i,t)}},mxCoordinateAssignment.prototype.minPath=function(e,n){var t,a=n.edgeMapper;for(t in a){var i=a[t];if(!(i.maxRank-i.minRank-1<1)){for(var s=i.getGeneralPurposeVariable(i.minRank+1),o=!0,r=0,l=i.minRank+2;l<i.maxRank;l++){s!=(d=i.getGeneralPurposeVariable(l))?(o=!1,s=d):r++}if(!o){o=s=0;var d=[],c=[],m=i.getGeneralPurposeVariable(i.minRank+1);for(l=i.minRank+1;l<i.maxRank-1;l++){var u=i.getX(l+1);m==u?(d[l-i.minRank-1]=m,s++):this.repositionValid(n,i,l+1,m)?(d[l-i.minRank-1]=m,s++):m=d[l-i.minRank-1]=u}for(m=i.getX(l),l=i.maxRank-1;l>i.minRank+1;l--)m==(u=i.getX(l-1))?(c[l-i.minRank-2]=m,o++):this.repositionValid(n,i,l-1,m)?(c[l-i.minRank-2]=m,o++):(c[l-i.minRank-2]=i.getX(l-1),m=u);if(r<o||r<s)if(s<=o)for(l=i.maxRank-2;l>i.minRank;l--)i.setX(l,c[l-i.minRank-1]);else if(o<s)for(l=i.minRank+2;l<i.maxRank;l++)i.setX(l,d[l-i.minRank-2])}}}},mxCoordinateAssignment.prototype.repositionValid=function(e,n,t,a){e=e.ranks[t];for(var i=-1,s=0;s<e.length;s++)if(n==e[s]){i=s;break}if(i<0)return!1;if(a<(s=n.getGeneralPurposeVariable(t))){if(0==i)return!0;if(!((t=(t=(e=e[i-1]).getGeneralPurposeVariable(t))+e.width/2+this.intraCellSpacing+n.width/2)<=a))return!1}else if(s<a){if(i==e.length-1)return!0;if(!(a<=(t=(t=(e=e[i+1]).getGeneralPurposeVariable(t))-e.width/2-this.intraCellSpacing-n.width/2)))return!1}return!0},mxCoordinateAssignment.prototype.setCellLocations=function(e,n){this.rankTopY=[],this.rankBottomY=[];for(var t=0;t<n.ranks.length;t++)this.rankTopY[t]=Number.MAX_VALUE,this.rankBottomY[t]=0;t=null,this.layout.resizeParent&&(t={});var a,i=n.edgeMapper,s=n.vertexMapper;for(a in s){var o=s[a];if(this.setVertexLocation(o),this.layout.resizeParent){o=e.model.getParent(o.cell);var r=mxCellPath.create(o);null==t[r]&&(t[r]=o)}}for(a in this.layout.resizeParent&&null!=t&&this.adjustParents(t),(this.edgeStyle==mxHierarchicalEdgeStyle.ORTHOGONAL||this.edgeStyle==mxHierarchicalEdgeStyle.POLYLINE||this.edgeStyle==mxHierarchicalEdgeStyle.CURVE)&&this.localEdgeProcessing(n),i)this.setEdgePosition(i[a])},mxCoordinateAssignment.prototype.adjustParents=function(e){var n,t=[];for(n in e)t.push(e[n]);this.layout.arrangeGroups(mxUtils.sortCells(t,!0),this.groupPadding)},mxCoordinateAssignment.prototype.localEdgeProcessing=function(e){for(var n=0;n<e.ranks.length;n++)for(var t=e.ranks[n],a=0;a<t.length;a++){var i=t[a];if(i.isVertex())for(var s=i.getPreviousLayerConnectedCells(n),o=n-1,r=0;r<2;r++){if(-1<o&&o<e.ranks.length&&null!=s&&0<s.length){for(var l=[],d=0;d<s.length;d++){var c=new WeightedCellSorter(s[d],s[d].getX(o));l.push(c)}l.sort(WeightedCellSorter.prototype.compare);var m=(c=i.x[0]-i.width/2)+i.width,u=s=0;for(o=[],d=0;d<l.length;d++){var p,g=l[d].cell;if(g.isVertex()){p=0==r?i.connectsAsSource:i.connectsAsTarget;for(var v=0;v<p.length;v++)p[v].source!=g&&p[v].target!=g||(s+=p[v].edges.length,u++,o.push(p[v]))}else s+=g.edges.length,u++,o.push(g)}for(i.width>(s+1)*this.prefHozEdgeSep+2*this.prefHozEdgeSep&&(c+=this.prefHozEdgeSep,m-=this.prefHozEdgeSep),c+=(l=(m-c)/s)/2,m=this.minEdgeJetty-this.prefVertEdgeOff,d=u=0;d<o.length;d++){for(g=o[d].edges.length,v=mxCellPath.create(o[d].edges[0]),null==(p=this.jettyPositions[v])&&(p=[],this.jettyPositions[v]=p),d<s/2?m+=this.prefVertEdgeOff:s/2<d&&(m-=this.prefVertEdgeOff),v=0;v<g;v++)p[4*v+2*r]=c,c+=l,p[4*v+2*r+1]=m;u=Math.max(u,m)}}s=i.getNextLayerConnectedCells(n),o=n+1}}},mxCoordinateAssignment.prototype.setEdgePosition=function(e){var n=0;if(101207!=e.temp[0]){var t=e.maxRank,a=e.minRank;t==a&&(t=e.source.maxRank,a=e.target.minRank);for(var i=0,s=mxCellPath.create(e.edges[0]),o=(s=this.jettyPositions[s],e.isReversed?e.target.cell:e.source.cell),r=this.layout.graph,l=0;l<e.edges.length;l++){var d=e.edges[l],c=this.layout.getVisibleTerminal(d,!0),m=r.model.getTerminal(d,!0),u=[],p=e.isReversed;if(c!=o&&(p=!p),null!=s){var g=p?2:0,v=p?this.rankTopY[a]:this.rankBottomY[t],h=s[4*i+1+g];p&&(h=-h),v+=h,g=s[4*i+g],m=r.model.getTerminal(d,!0),this.layout.isPort(m)&&r.model.getParent(m)==c&&(g=null!=(g=r.view.getState(m))?g.x:c.geometry.x+e.source.width*m.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(g,v)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v+h))):(u.push(new mxPoint(v,g)),this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v+h,g)))}for(g=e.x.length-1,v=h=-1,c=e.maxRank-1,p&&(g=0,h=e.x.length,v=1,c=e.minRank+1);e.maxRank!=e.minRank&&g!=h;g+=v){m=e.x[g]+n;var f=(this.rankTopY[c]+this.rankBottomY[c+1])/2,b=(this.rankTopY[c-1]+this.rankBottomY[c])/2;if(p){var A=f;f=b,b=A}this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(u.push(new mxPoint(m,f)),u.push(new mxPoint(m,b))):(u.push(new mxPoint(f,m)),u.push(new mxPoint(b,m))),this.limitX=Math.max(this.limitX,m),c+=v}null!=s&&(g=p?2:0,v=p?this.rankBottomY[t]:this.rankTopY[a],h=s[4*i+3-g],p&&(h=-h),v-=h,g=s[4*i+2-g],p=r.model.getTerminal(d,!1),c=this.layout.getVisibleTerminal(d,!1),this.layout.isPort(p)&&r.model.getParent(p)==c&&(g=null!=(g=r.view.getState(p))?g.x:c.geometry.x+e.target.width*p.geometry.x),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(g,v-h)),u.push(new mxPoint(g,v))):(this.edgeStyle==mxHierarchicalEdgeStyle.CURVE&&u.push(new mxPoint(v-h,g)),u.push(new mxPoint(v,g)))),e.isReversed&&this.processReversedEdge(e,d),this.layout.setEdgePoints(d,u),n=0==n?this.parallelEdgeSpacing:0<n?-n:-n+this.parallelEdgeSpacing,i++}e.temp[0]=101207}},mxCoordinateAssignment.prototype.setVertexLocation=function(e){var n=e.cell,t=e.x[0]-e.width/2,a=e.y[0]-e.height/2;this.rankTopY[e.minRank]=Math.min(this.rankTopY[e.minRank],a),this.rankBottomY[e.minRank]=Math.max(this.rankBottomY[e.minRank],a+e.height),this.orientation==mxConstants.DIRECTION_NORTH||this.orientation==mxConstants.DIRECTION_SOUTH?this.layout.setVertexLocation(n,t,a):this.layout.setVertexLocation(n,a,t),this.limitX=Math.max(this.limitX,t+e.width)},mxCoordinateAssignment.prototype.processReversedEdge=function(e,n){},WeightedCellSorter.prototype.weightedValue=0,WeightedCellSorter.prototype.nudge=!1,WeightedCellSorter.prototype.visited=!1,WeightedCellSorter.prototype.rankIndex=null,WeightedCellSorter.prototype.cell=null,WeightedCellSorter.prototype.compare=function(e,n){return null!=e&&null!=n?n.weightedValue>e.weightedValue?-1:n.weightedValue<e.weightedValue?1:n.nudge?-1:1:0},mxHierarchicalLayout.prototype=new mxGraphLayout,mxHierarchicalLayout.prototype.constructor=mxHierarchicalLayout,mxHierarchicalLayout.prototype.roots=null,mxHierarchicalLayout.prototype.resizeParent=!1,mxHierarchicalLayout.prototype.moveParent=!1,mxHierarchicalLayout.prototype.parentBorder=0,mxHierarchicalLayout.prototype.intraCellSpacing=30,mxHierarchicalLayout.prototype.interRankCellSpacing=100,mxHierarchicalLayout.prototype.interHierarchySpacing=60,mxHierarchicalLayout.prototype.parallelEdgeSpacing=10,mxHierarchicalLayout.prototype.orientation=mxConstants.DIRECTION_NORTH,mxHierarchicalLayout.prototype.fineTuning=!0,mxHierarchicalLayout.prototype.tightenToSource=!0,mxHierarchicalLayout.prototype.disableEdgeStyle=!0,mxHierarchicalLayout.prototype.traverseAncestors=!0,mxHierarchicalLayout.prototype.model=null,mxHierarchicalLayout.prototype.edgesCache=null,mxHierarchicalLayout.prototype.getModel=function(){return this.model},mxHierarchicalLayout.prototype.execute=function(e,n){this.parent=e;var t=this.graph.model;if(this.edgesCache={},null!=n||null!=e){if(null!=n&&null!=e){for(var a=[],i=0;i<n.length;i++)t.isAncestor(e,n[i])&&a.push(n[i]);this.roots=a}else this.roots=n;t.beginUpdate();try{this.run(e),this.resizeParent&&!this.graph.isCellCollapsed(e)&&this.graph.updateGroupBounds([e],this.parentBorder,this.moveParent)}finally{t.endUpdate()}}},mxHierarchicalLayout.prototype.findRoots=function(e,n){var t=[];if(null!=e&&null!=n){var a,i=this.graph.model,s=null,o=-1e5;for(a in n){var r=n[a];if(i.isVertex(r)&&this.graph.isCellVisible(r)){for(var l=this.getEdges(r),d=0,c=0,m=0;m<l.length;m++)this.getVisibleTerminal(l[m],!0)==r?d++:c++;0==c&&0<d&&t.push(r),o<(l=d-c)&&(o=l,s=r)}}0==t.length&&null!=s&&t.push(s)}return t},mxHierarchicalLayout.prototype.getEdges=function(e){var n=mxCellPath.create(e);if(null!=this.edgesCache[n])return this.edgesCache[n];for(var t=this.graph.model,a=[],i=this.graph.isCellCollapsed(e),s=t.getChildCount(e),o=0;o<s;o++){var r=t.getChildAt(e,o);this.isPort(r)?a=a.concat(t.getEdges(r,!0,!0)):!i&&this.graph.isCellVisible(r)||(a=a.concat(t.getEdges(r,!0,!0)))}for(a=a.concat(t.getEdges(e,!0,!0)),t=[],o=0;o<a.length;o++)((i=this.getVisibleTerminal(a[o],!0))==(s=this.getVisibleTerminal(a[o],!1))||i!=s&&(s==e&&(null==this.parent||this.graph.isValidAncestor(i,this.parent,this.traverseAncestors))||i==e&&(null==this.parent||this.graph.isValidAncestor(s,this.parent,this.traverseAncestors))))&&t.push(a[o]);return this.edgesCache[n]=t},mxHierarchicalLayout.prototype.getVisibleTerminal=function(e,n){var t=null!=(t=this.graph.view.getState(e))?t.getVisibleTerminal(n):this.graph.view.getVisibleTerminal(e,n);return this.isPort(t)&&(t=this.graph.model.getParent(t)),t},mxHierarchicalLayout.prototype.run=function(e){var n=[],t=[];if(null==this.roots&&null!=e){var a={};this.filterDescendants(e,a),this.roots=[];var i,s=!0;for(i in a)if(null!=a[i]){s=!1;break}for(;!s;){var o=this.findRoots(e,a);for(s=0;s<o.length;s++){var r=[];n.push(r),this.traverse(o[s],!0,null,t,r,n,a)}for(s=0;s<o.length;s++)this.roots.push(o[s]);for(i in s=!0,a)if(null!=a[i]){s=!1;break}}}else for(s=0;s<roots.length;s++)r=[],n.push(r),traverse(roots.get(s),!0,null,t,r,n,null);for(s=t=0;s<n.length;s++){for(i in a=[],r=n[s])a.push(r[i]);this.model=new mxGraphHierarchyModel(this,a,this.roots,e,this.tightenToSource),this.cycleStage(e),this.layeringStage(),this.crossingStage(e),t=this.placementStage(t,e)}},mxHierarchicalLayout.prototype.filterDescendants=function(e,n){var t=this.graph.model;if(t.isVertex(e)&&e!=this.parent&&this.graph.isCellVisible(e)&&(n[mxCellPath.create(e)]=e),this.traverseAncestors||e==this.parent&&this.graph.isCellVisible(e))for(var a=t.getChildCount(e),i=0;i<a;i++){var s=t.getChildAt(e,i);this.isPort(s)||this.filterDescendants(s,n)}},mxHierarchicalLayout.prototype.isPort=function(e){return!!e.geometry.relative},mxHierarchicalLayout.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=this.getVisibleTerminal(a[s],!0),r=this.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxHierarchicalLayout.prototype.traverse=function(e,n,t,a,i,s,o){if(null!=e&&null!=a){var r=mxCellPath.create(e);if(null!=a[r]||null!=o&&null==o[r]){if(null==i[r])for(t=0;t<s.length;t++)if(null!=(e=s[t])[r]){for(l in i)e[l]=i[l];return s.pop(),e}}else{null==i[r]&&(i[r]=e),null==a[r]&&(a[r]=e),delete o[r];var l=this.getEdges(e);for(t=0;t<l.length;t++)r=this.getVisibleTerminal(l[t],!0)==e,(!n||r)&&(r=this.getVisibleTerminal(l[t],!r),i=this.traverse(r,n,l[t],a,i,s,o))}}return i},mxHierarchicalLayout.prototype.cycleStage=function(e){new mxMinimumCycleRemover(this).execute(e)},mxHierarchicalLayout.prototype.layeringStage=function(){this.model.initialRank(),this.model.fixRanks()},mxHierarchicalLayout.prototype.crossingStage=function(e){new mxMedianHybridCrossingReduction(this).execute(e)},mxHierarchicalLayout.prototype.placementStage=function(e,n){var t=new mxCoordinateAssignment(this,this.intraCellSpacing,this.interRankCellSpacing,this.orientation,e,this.parallelEdgeSpacing);return t.fineTuning=this.fineTuning,t.execute(n),t.limitX+this.interHierarchySpacing},mxGraphModel.prototype=new mxEventSource,mxGraphModel.prototype.constructor=mxGraphModel,mxGraphModel.prototype.root=null,mxGraphModel.prototype.cells=null,mxGraphModel.prototype.maintainEdgeParent=!0,mxGraphModel.prototype.createIds=!0,mxGraphModel.prototype.prefix="",mxGraphModel.prototype.postfix="",mxGraphModel.prototype.nextId=0,mxGraphModel.prototype.currentEdit=null,mxGraphModel.prototype.updateLevel=0,mxGraphModel.prototype.endingUpdate=!1,mxGraphModel.prototype.clear=function(){this.setRoot(this.createRoot())},mxGraphModel.prototype.isCreateIds=function(){return this.createIds},mxGraphModel.prototype.setCreateIds=function(e){this.createIds=e},mxGraphModel.prototype.createRoot=function(){var e=new mxCell;return e.insert(new mxCell),e},mxGraphModel.prototype.getCell=function(e){return null!=this.cells?this.cells[e]:null},mxGraphModel.prototype.filterCells=function(e,n){var t=null;if(null!=e){t=[];for(var a=0;a<e.length;a++)n(e[a])&&t.push(e[a])}return t},mxGraphModel.prototype.getDescendants=function(e){return this.filterDescendants(null,e)},mxGraphModel.prototype.filterDescendants=function(e,n){var t=[];n=n||this.getRoot(),(null==e||e(n))&&t.push(n);for(var a=this.getChildCount(n),i=0;i<a;i++){var s=this.getChildAt(n,i);t=t.concat(this.filterDescendants(e,s))}return t},mxGraphModel.prototype.getRoot=function(e){var n=e||this.root;if(null!=e)for(;null!=e;)n=e,e=this.getParent(e);return n},mxGraphModel.prototype.setRoot=function(e){return this.execute(new mxRootChange(this,e)),e},mxGraphModel.prototype.rootChanged=function(e){var n=this.root;return this.root=e,this.nextId=0,this.cells=null,this.cellAdded(e),n},mxGraphModel.prototype.isRoot=function(e){return null!=e&&this.root==e},mxGraphModel.prototype.isLayer=function(e){return this.isRoot(this.getParent(e))},mxGraphModel.prototype.isAncestor=function(e,n){for(;null!=n&&n!=e;)n=this.getParent(n);return n==e},mxGraphModel.prototype.contains=function(e){return this.isAncestor(this.root,e)},mxGraphModel.prototype.getParent=function(e){return null!=e?e.getParent():null},mxGraphModel.prototype.add=function(e,n,t){if(n!=e&&null!=e&&null!=n){null==t&&(t=this.getChildCount(e));var a=e!=this.getParent(n);this.execute(new mxChildChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParents(n)}return n},mxGraphModel.prototype.cellAdded=function(e){if(null!=e){if(null==e.getId()&&this.createIds&&e.setId(this.createId(e)),null!=e.getId())if((n=this.getCell(e.getId()))!=e){for(;null!=n;)e.setId(this.createId(e)),n=this.getCell(e.getId());null==this.cells&&(this.cells={}),this.cells[e.getId()]=e}mxUtils.isNumeric(e.getId())&&(this.nextId=Math.max(this.nextId,e.getId()));for(var n=this.getChildCount(e),t=0;t<n;t++)this.cellAdded(this.getChildAt(e,t))}},mxGraphModel.prototype.createId=function(e){return e=this.nextId,this.nextId++,this.prefix+e+this.postfix},mxGraphModel.prototype.updateEdgeParents=function(e,n){n=n||this.getRoot(e);for(var t=this.getChildCount(e),a=0;a<t;a++){var i=this.getChildAt(e,a);this.updateEdgeParents(i,n)}for(i=this.getEdgeCount(e),t=[],a=0;a<i;a++)t.push(this.getEdgeAt(e,a));for(a=0;a<t.length;a++)i=t[a],this.isAncestor(n,i)&&this.updateEdgeParent(i,n)},mxGraphModel.prototype.updateEdgeParent=function(e,n){for(var t=this.getTerminal(e,!0),a=this.getTerminal(e,!1),i=null;null!=t&&!this.isEdge(t)&&null!=t.geometry&&t.geometry.relative;)t=this.getParent(t);for(;null!=a&&!this.isEdge(a)&&null!=a.geometry&&a.geometry.relative;)a=this.getParent(a);if(this.isAncestor(n,t)&&this.isAncestor(n,a)&&(null!=(i=t==a?this.getParent(t):this.getNearestCommonAncestor(t,a))&&(this.getParent(i)!=this.root||this.isAncestor(i,e))&&this.getParent(e)!=i)){if(null!=(t=this.getGeometry(e))){var s=this.getOrigin(this.getParent(e)),o=this.getOrigin(i);a=o.x-s.x,s=o.y-s.y;(t=t.clone()).translate(-a,-s),this.setGeometry(e,t)}this.add(i,e,this.getChildCount(i))}},mxGraphModel.prototype.getOrigin=function(e){var n=null;return null!=e?(n=this.getOrigin(this.getParent(e)),this.isEdge(e)||null!=(e=this.getGeometry(e))&&(n.x+=e.x,n.y+=e.y)):n=new mxPoint,n},mxGraphModel.prototype.getNearestCommonAncestor=function(e,n){if(null!=e&&null!=n&&(null!=(s=mxCellPath.create(n))&&0<s.length)){var t=e,a=mxCellPath.create(t);if(s.length<a.length){t=n;var i=a,s=(a=s,i)}for(;null!=t;){if(i=this.getParent(t),0==s.indexOf(a+mxCellPath.PATH_SEPARATOR)&&null!=i)return t;a=mxCellPath.getParentPath(a),t=i}}return null},mxGraphModel.prototype.remove=function(e){return e==this.root?this.setRoot(null):null!=this.getParent(e)&&this.execute(new mxChildChange(this,null,e)),e},mxGraphModel.prototype.cellRemoved=function(e){if(null!=e&&null!=this.cells){for(var n=this.getChildCount(e)-1;0<=n;n--)this.cellRemoved(this.getChildAt(e,n));null!=this.cells&&null!=e.getId()&&delete this.cells[e.getId()]}},mxGraphModel.prototype.parentForCellChanged=function(e,n,t){var a=this.getParent(e);return null!=n?(n!=a||a.getIndex(e)!=t)&&n.insert(e,t):null!=a&&(t=a.getIndex(e),a.remove(t)),this.contains(a)||null==n?null==n&&this.cellRemoved(e):this.cellAdded(e),a},mxGraphModel.prototype.getChildCount=function(e){return null!=e?e.getChildCount():0},mxGraphModel.prototype.getChildAt=function(e,n){return null!=e?e.getChildAt(n):null},mxGraphModel.prototype.getChildren=function(e){return null!=e?e.children:null},mxGraphModel.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraphModel.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraphModel.prototype.getChildCells=function(e,n,t){n=null!=n&&n,t=null!=t&&t;for(var a=this.getChildCount(e),i=[],s=0;s<a;s++){var o=this.getChildAt(e,s);(!t&&!n||t&&this.isEdge(o)||n&&this.isVertex(o))&&i.push(o)}return i},mxGraphModel.prototype.getTerminal=function(e,n){return null!=e?e.getTerminal(n):null},mxGraphModel.prototype.setTerminal=function(e,n,t){var a=n!=this.getTerminal(e,t);return this.execute(new mxTerminalChange(this,e,n,t)),this.maintainEdgeParent&&a&&this.updateEdgeParent(e,this.getRoot()),n},mxGraphModel.prototype.setTerminals=function(e,n,t){this.beginUpdate();try{this.setTerminal(e,n,!0),this.setTerminal(e,t,!1)}finally{this.endUpdate()}},mxGraphModel.prototype.terminalForCellChanged=function(e,n,t){var a=this.getTerminal(e,t);return null!=n?n.insertEdge(e,t):null!=a&&a.removeEdge(e,t),a},mxGraphModel.prototype.getEdgeCount=function(e){return null!=e?e.getEdgeCount():0},mxGraphModel.prototype.getEdgeAt=function(e,n){return null!=e?e.getEdgeAt(n):null},mxGraphModel.prototype.getDirectedEdgeCount=function(e,n,t){for(var a=0,i=this.getEdgeCount(e),s=0;s<i;s++){var o=this.getEdgeAt(e,s);o!=t&&this.getTerminal(o,n)==e&&a++}return a},mxGraphModel.prototype.getConnections=function(e){return this.getEdges(e,!0,!0,!1)},mxGraphModel.prototype.getIncomingEdges=function(e){return this.getEdges(e,!0,!1,!1)},mxGraphModel.prototype.getOutgoingEdges=function(e){return this.getEdges(e,!1,!0,!1)},mxGraphModel.prototype.getEdges=function(e,n,t,a){n=null==n||n,t=null==t||t,a=null==a||a;for(var i=this.getEdgeCount(e),s=[],o=0;o<i;o++){var r=this.getEdgeAt(e,o),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(a&&l==d||l!=d&&(n&&d==e||t&&l==e))&&s.push(r)}return s},mxGraphModel.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;var a=this.getEdgeCount(e),i=this.getEdgeCount(n),s=e,o=a;for(i<a&&(o=i,s=n),a=[],i=0;i<o;i++){var r=this.getEdgeAt(s,i),l=this.getTerminal(r,!0),d=this.getTerminal(r,!1);(l==e&&d==n||!t&&(d==e&&l==n))&&a.push(r)}return a},mxGraphModel.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[];if(null!=e)for(var s=0;s<e.length;s++){var o=this.getTerminal(e[s],!0),r=this.getTerminal(e[s],!1);o==n&&null!=r&&r!=n&&a?i.push(r):r==n&&null!=o&&o!=n&&t&&i.push(o)}return i},mxGraphModel.prototype.getTopmostCells=function(e){for(var n=[],t=0;t<e.length;t++){for(var a=e[t],i=!0,s=this.getParent(a);null!=s;){if(0<=mxUtils.indexOf(e,s)){i=!1;break}s=this.getParent(s)}i&&n.push(a)}return n},mxGraphModel.prototype.isVertex=function(e){return null!=e&&e.isVertex()},mxGraphModel.prototype.isEdge=function(e){return null!=e&&e.isEdge()},mxGraphModel.prototype.isConnectable=function(e){return null!=e&&e.isConnectable()},mxGraphModel.prototype.getValue=function(e){return null!=e?e.getValue():null},mxGraphModel.prototype.setValue=function(e,n){return this.execute(new mxValueChange(this,e,n)),n},mxGraphModel.prototype.valueForCellChanged=function(e,n){return e.valueChanged(n)},mxGraphModel.prototype.getGeometry=function(e,n){return null!=e?e.getGeometry():null},mxGraphModel.prototype.setGeometry=function(e,n){return n!=this.getGeometry(e)&&this.execute(new mxGeometryChange(this,e,n)),n},mxGraphModel.prototype.geometryForCellChanged=function(e,n){var t=this.getGeometry(e);return e.setGeometry(n),t},mxGraphModel.prototype.getStyle=function(e){return null!=e?e.getStyle():null},mxGraphModel.prototype.setStyle=function(e,n){return n!=this.getStyle(e)&&this.execute(new mxStyleChange(this,e,n)),n},mxGraphModel.prototype.styleForCellChanged=function(e,n){var t=this.getStyle(e);return e.setStyle(n),t},mxGraphModel.prototype.isCollapsed=function(e){return null!=e&&e.isCollapsed()},mxGraphModel.prototype.setCollapsed=function(e,n){return n!=this.isCollapsed(e)&&this.execute(new mxCollapseChange(this,e,n)),n},mxGraphModel.prototype.collapsedStateForCellChanged=function(e,n){var t=this.isCollapsed(e);return e.setCollapsed(n),t},mxGraphModel.prototype.isVisible=function(e){return null!=e&&e.isVisible()},mxGraphModel.prototype.setVisible=function(e,n){return n!=this.isVisible(e)&&this.execute(new mxVisibleChange(this,e,n)),n},mxGraphModel.prototype.visibleStateForCellChanged=function(e,n){var t=this.isVisible(e);return e.setVisible(n),t},mxGraphModel.prototype.execute=function(e){e.execute(),this.beginUpdate(),this.currentEdit.add(e),this.fireEvent(new mxEventObject(mxEvent.EXECUTE,"change",e)),this.fireEvent(new mxEventObject(mxEvent.EXECUTED,"change",e)),this.endUpdate()},mxGraphModel.prototype.beginUpdate=function(){this.updateLevel++,this.fireEvent(new mxEventObject(mxEvent.BEGIN_UPDATE)),1==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.START_EDIT))},mxGraphModel.prototype.endUpdate=function(){if(this.updateLevel--,0==this.updateLevel&&this.fireEvent(new mxEventObject(mxEvent.END_EDIT)),!this.endingUpdate){this.endingUpdate=0==this.updateLevel,this.fireEvent(new mxEventObject(mxEvent.END_UPDATE,"edit",this.currentEdit));try{if(this.endingUpdate&&!this.currentEdit.isEmpty()){this.fireEvent(new mxEventObject(mxEvent.BEFORE_UNDO,"edit",this.currentEdit));var e=this.currentEdit;this.currentEdit=this.createUndoableEdit(),e.notify(),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",e))}}finally{this.endingUpdate=!1}}},mxGraphModel.prototype.createUndoableEdit=function(){var e=new mxUndoableEdit(this,!0);return e.notify=function(){e.source.fireEvent(new mxEventObject(mxEvent.CHANGE,"edit",e,"changes",e.changes)),e.source.fireEvent(new mxEventObject(mxEvent.NOTIFY,"edit",e,"changes",e.changes))},e},mxGraphModel.prototype.mergeChildren=function(e,n,t){t=null==t||t,this.beginUpdate();try{var a={};for(var i in this.mergeChildrenImpl(e,n,t,a),a){var s=a[i],o=this.getTerminal(s,!0);null!=o&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!0)),null!=(o=this.getTerminal(s,!1))&&(o=a[mxCellPath.create(o)],this.setTerminal(s,o,!1))}}finally{this.endUpdate()}},mxGraphModel.prototype.mergeChildrenImpl=function(e,n,t,a){this.beginUpdate();try{for(var i=e.getChildCount(),s=0;s<i;s++){var o=e.getChildAt(s);if("function"==typeof o.getId){var r=o.getId(),l=null==r||this.isEdge(o)&&t?null:this.getCell(r);if(null==l){var d=o.clone();d.setId(r),d.setTerminal(o.getTerminal(!0),!0),d.setTerminal(o.getTerminal(!1),!1),l=n.insert(d),this.cellAdded(l)}a[mxCellPath.create(o)]=l,this.mergeChildrenImpl(o,l,t,a)}}}finally{this.endUpdate()}},mxGraphModel.prototype.getParents=function(e){var n=[];if(null!=e)for(var t={},a=0;a<e.length;a++){var i=this.getParent(e[a]);if(null!=i){var s=mxCellPath.create(i);null==t[s]&&(t[s]=i,n.push(i))}}return n},mxGraphModel.prototype.cloneCell=function(e){return null!=e?this.cloneCells([e],!0)[0]:null},mxGraphModel.prototype.cloneCells=function(e,n){for(var t={},a=[],i=0;i<e.length;i++)null!=e[i]?a.push(this.cloneCellImpl(e[i],t,n)):a.push(null);for(i=0;i<a.length;i++)null!=a[i]&&this.restoreClone(a[i],e[i],t);return a},mxGraphModel.prototype.cloneCellImpl=function(e,n,t){var a=this.cellCloned(e);if(n[mxObjectIdentity.get(e)]=a,t){t=this.getChildCount(e);for(var i=0;i<t;i++){var s=this.cloneCellImpl(this.getChildAt(e,i),n,!0);a.insert(s)}}return a},mxGraphModel.prototype.cellCloned=function(e){return e.clone()},mxGraphModel.prototype.restoreClone=function(e,n,t){null!=(a=this.getTerminal(n,!0))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!0)),null!=(a=this.getTerminal(n,!1))&&(null!=(a=t[mxObjectIdentity.get(a)])&&a.insertEdge(e,!1));for(var a=this.getChildCount(e),i=0;i<a;i++)this.restoreClone(this.getChildAt(e,i),this.getChildAt(n,i),t)},mxRootChange.prototype.execute=function(){this.root=this.previous,this.previous=this.model.rootChanged(this.previous)},mxChildChange.prototype.execute=function(){var e=this.model.getParent(this.child),n=null!=e?e.getIndex(this.child):0;null==this.previous&&this.connect(this.child,!1),e=this.model.parentForCellChanged(this.child,this.previous,this.previousIndex),null!=this.previous&&this.connect(this.child,!0),this.parent=this.previous,this.previous=e,this.index=this.previousIndex,this.previousIndex=n},mxChildChange.prototype.connect=function(e,n){n=null==n||n;var t=e.getTerminal(!0),a=e.getTerminal(!1);for(null!=t&&(n?this.model.terminalForCellChanged(e,t,!0):this.model.terminalForCellChanged(e,null,!0)),null!=a&&(n?this.model.terminalForCellChanged(e,a,!1):this.model.terminalForCellChanged(e,null,!1)),e.setTerminal(t,!0),e.setTerminal(a,!1),t=this.model.getChildCount(e),a=0;a<t;a++)this.connect(this.model.getChildAt(e,a),n)},mxTerminalChange.prototype.execute=function(){this.terminal=this.previous,this.previous=this.model.terminalForCellChanged(this.cell,this.previous,this.source)},mxValueChange.prototype.execute=function(){this.value=this.previous,this.previous=this.model.valueForCellChanged(this.cell,this.previous)},mxStyleChange.prototype.execute=function(){this.style=this.previous,this.previous=this.model.styleForCellChanged(this.cell,this.previous)},mxGeometryChange.prototype.execute=function(){this.geometry=this.previous,this.previous=this.model.geometryForCellChanged(this.cell,this.previous)},mxCollapseChange.prototype.execute=function(){this.collapsed=this.previous,this.previous=this.model.collapsedStateForCellChanged(this.cell,this.previous)},mxVisibleChange.prototype.execute=function(){this.visible=this.previous,this.previous=this.model.visibleStateForCellChanged(this.cell,this.previous)},mxCellAttributeChange.prototype.execute=function(){var e=this.cell.getAttribute(this.attribute);null==this.previous?this.cell.value.removeAttribute(this.attribute):this.cell.setAttribute(this.attribute,this.previous),this.previous=e},mxCell.prototype.id=null,mxCell.prototype.value=null,mxCell.prototype.geometry=null,mxCell.prototype.style=null,mxCell.prototype.vertex=!1,mxCell.prototype.edge=!1,mxCell.prototype.connectable=!0,mxCell.prototype.visible=!0,mxCell.prototype.collapsed=!1,mxCell.prototype.parent=null,mxCell.prototype.source=null,mxCell.prototype.target=null,mxCell.prototype.children=null,mxCell.prototype.edges=null,mxCell.prototype.mxTransient="id value parent source target children edges".split(" "),mxCell.prototype.getId=function(){return this.id},mxCell.prototype.setId=function(e){this.id=e},mxCell.prototype.getValue=function(){return this.value},mxCell.prototype.setValue=function(e){this.value=e},mxCell.prototype.valueChanged=function(e){var n=this.getValue();return this.setValue(e),n},mxCell.prototype.getGeometry=function(){return this.geometry},mxCell.prototype.setGeometry=function(e){this.geometry=e},mxCell.prototype.getStyle=function(){return this.style},mxCell.prototype.setStyle=function(e){this.style=e},mxCell.prototype.isVertex=function(){return this.vertex},mxCell.prototype.setVertex=function(e){this.vertex=e},mxCell.prototype.isEdge=function(){return this.edge},mxCell.prototype.setEdge=function(e){this.edge=e},mxCell.prototype.isConnectable=function(){return this.connectable},mxCell.prototype.setConnectable=function(e){this.connectable=e},mxCell.prototype.isVisible=function(){return this.visible},mxCell.prototype.setVisible=function(e){this.visible=e},mxCell.prototype.isCollapsed=function(){return this.collapsed},mxCell.prototype.setCollapsed=function(e){this.collapsed=e},mxCell.prototype.getParent=function(){return this.parent},mxCell.prototype.setParent=function(e){this.parent=e},mxCell.prototype.getTerminal=function(e){return e?this.source:this.target},mxCell.prototype.setTerminal=function(e,n){return n?this.source=e:this.target=e,e},mxCell.prototype.getChildCount=function(){return null==this.children?0:this.children.length},mxCell.prototype.getIndex=function(e){return mxUtils.indexOf(this.children,e)},mxCell.prototype.getChildAt=function(e){return null==this.children?null:this.children[e]},mxCell.prototype.insert=function(e,n){return null!=e&&(null==n&&(n=this.getChildCount(),e.getParent()==this&&n--),e.removeFromParent(),e.setParent(this),null==this.children?(this.children=[],this.children.push(e)):this.children.splice(n,0,e)),e},mxCell.prototype.remove=function(e){var n=null;return null!=this.children&&0<=e&&(null!=(n=this.getChildAt(e))&&(this.children.splice(e,1),n.setParent(null))),n},mxCell.prototype.removeFromParent=function(){if(null!=this.parent){var e=this.parent.getIndex(this);this.parent.remove(e)}},mxCell.prototype.getEdgeCount=function(){return null==this.edges?0:this.edges.length},mxCell.prototype.getEdgeIndex=function(e){return mxUtils.indexOf(this.edges,e)},mxCell.prototype.getEdgeAt=function(e){return null==this.edges?null:this.edges[e]},mxCell.prototype.insertEdge=function(e,n){return null!=e&&(e.removeFromTerminal(n),e.setTerminal(this,n),null==this.edges||e.getTerminal(!n)!=this||mxUtils.indexOf(this.edges,e)<0)&&(null==this.edges&&(this.edges=[]),this.edges.push(e)),e},mxCell.prototype.removeEdge=function(e,n){if(null!=e){if(e.getTerminal(!n)!=this&&null!=this.edges){var t=this.getEdgeIndex(e);0<=t&&this.edges.splice(t,1)}e.setTerminal(null,n)}return e},mxCell.prototype.removeFromTerminal=function(e){var n=this.getTerminal(e);null!=n&&n.removeEdge(this,e)},mxCell.prototype.getAttribute=function(e,n){var t=this.getValue();return(null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT?t.getAttribute(e):null)||n},mxCell.prototype.setAttribute=function(e,n){var t=this.getValue();null!=t&&t.nodeType==mxConstants.NODETYPE_ELEMENT&&t.setAttribute(e,n)},mxCell.prototype.clone=function(){var e=mxUtils.clone(this,this.mxTransient);return e.setValue(this.cloneValue()),e},mxCell.prototype.cloneValue=function(){var e=this.getValue();return null!=e&&("function"==typeof e.clone?e=e.clone():isNaN(e.nodeType)||(e=e.cloneNode(!0))),e},mxGeometry.prototype=new mxRectangle,mxGeometry.prototype.constructor=mxGeometry,mxGeometry.prototype.TRANSLATE_CONTROL_POINTS=!0,mxGeometry.prototype.alternateBounds=null,mxGeometry.prototype.sourcePoint=null,mxGeometry.prototype.targetPoint=null,mxGeometry.prototype.points=null,mxGeometry.prototype.offset=null,mxGeometry.prototype.relative=!1,mxGeometry.prototype.swap=function(){if(null!=this.alternateBounds){var e=new mxRectangle(this.x,this.y,this.width,this.height);this.x=this.alternateBounds.x,this.y=this.alternateBounds.y,this.width=this.alternateBounds.width,this.height=this.alternateBounds.height,this.alternateBounds=e}},mxGeometry.prototype.getTerminalPoint=function(e){return e?this.sourcePoint:this.targetPoint},mxGeometry.prototype.setTerminalPoint=function(e,n){return n?this.sourcePoint=e:this.targetPoint=e,e},mxGeometry.prototype.translate=function(e,n){if(this.clone(),this.relative||(this.x+=e,this.y+=n),null!=this.sourcePoint&&(this.sourcePoint.x+=e,this.sourcePoint.y+=n),null!=this.targetPoint&&(this.targetPoint.x+=e,this.targetPoint.y+=n),this.TRANSLATE_CONTROL_POINTS&&null!=this.points)for(var t=this.points.length,a=0;a<t;a++){var i=this.points[a];null!=i&&(i.x+=e,i.y+=n)}};var mxCellPath={PATH_SEPARATOR:".",create:function(e){var n="";if(null!=e)for(var t=e.getParent();null!=t;)n=t.getIndex(e)+mxCellPath.PATH_SEPARATOR+n,t=(e=t).getParent();return 1<(e=n.length)&&(n=n.substring(0,e-1)),n},getParentPath:function(e){if(null!=e){var n=e.lastIndexOf(mxCellPath.PATH_SEPARATOR);if(0<=n)return e.substring(0,n);if(0<e.length)return""}return null},resolve:function(e,n){var t=e;if(null!=n)for(var a=n.split(mxCellPath.PATH_SEPARATOR),i=0;i<a.length;i++)t=t.getChildAt(parseInt(a[i]));return t},compare:function(e,n){for(var t=Math.min(e.length,n.length),a=0,i=0;i<t;i++)if(e[i]!=n[i]){a=0==e[i].length||0==n[i].length?e[i]==n[i]?0:e[i]>n[i]?1:-1:(t=parseInt(e[i]))==(i=parseInt(n[i]))?0:i<t?1:-1;break}return 0==a&&((t=e.length)!=(i=n.length)&&(a=i<t?1:-1)),a}},mxPerimeter={RectanglePerimeter:function(e,n,t,a){n=e.getCenterX();var i=e.getCenterY(),s=Math.atan2(t.y-i,t.x-n),o=new mxPoint(0,0),r=Math.PI,l=Math.PI/2-s,d=Math.atan2(e.height,e.width);return s<-r+d||r-d<s?(o.x=e.x,o.y=i-e.width*Math.tan(s)/2):s<-d?(o.y=e.y,o.x=n-e.height*Math.tan(l)/2):s<d?(o.x=e.x+e.width,o.y=i+e.width*Math.tan(s)/2):(o.y=e.y+e.height,o.x=n+e.height*Math.tan(l)/2),a&&(t.x>=e.x&&t.x<=e.x+e.width?o.x=t.x:t.y>=e.y&&t.y<=e.y+e.height&&(o.y=t.y),t.x<e.x?o.x=e.x:t.x>e.x+e.width&&(o.x=e.x+e.width),t.y<e.y?o.y=e.y:t.y>e.y+e.height&&(o.y=e.y+e.height)),o},EllipsePerimeter:function(e,n,t,a){var i=e.x,s=e.y,o=e.width/2,r=e.height/2,l=i+o,d=s+r;n=t.x,t=t.y;var c=parseInt(n-l),m=parseInt(t-d);if(0==c&&0!=m)return new mxPoint(l,d+r*m/Math.abs(m));if(0==c&&0==m)return new mxPoint(n,t);if(a){if(s<=t&&t<=s+e.height)return e=t-d,e=Math.sqrt(o*o*(1-e*e/(r*r)))||0,n<=i&&(e=-e),new mxPoint(l+e,t);if(i<=n&&n<=i+e.width)return e=n-l,e=Math.sqrt(r*r*(1-e*e/(o*o)))||0,t<=s&&(e=-e),new mxPoint(n,d+e)}return d-=(i=m/c)*l,l=i*(o=(-(e=-2*l*(s=o*o*i*i+r*r))+(r=Math.sqrt(e*e-4*s*(o*o*i*i*l*l+r*r*l*l-o*o*r*r))))/(2*s))+d,d=i*(r=(-e-r)/(2*s))+d,i=Math.sqrt(Math.pow(o-n,2)+Math.pow(l-t,2)),n=Math.sqrt(Math.pow(r-n,2)+Math.pow(d-t,2)),s=t=0,s=i<n?(t=o,l):(t=r,d),new mxPoint(t,s)},RhombusPerimeter:function(e,n,t,a){n=e.x;var i=e.y,s=e.width,o=n+s/2,r=i+(e=e.height)/2,l=t.x;if(t=t.y,o==l)return new mxPoint(o,t<r?i:i+e);if(r==t)return new mxPoint(l<o?n:n+s,r);var d=o,c=r;return a&&(n<=l&&l<=n+s?d=l:i<=t&&t<=i+e&&(c=t)),l<o?t<r?mxUtils.intersection(l,t,d,c,o,i,n,r):mxUtils.intersection(l,t,d,c,o,i+e,n,r):t<r?mxUtils.intersection(l,t,d,c,o,i,n+s,r):mxUtils.intersection(l,t,d,c,o,i+e,n+s,r)},TrianglePerimeter:function(e,n,t,a){var i=(n=null!=n?n.style[mxConstants.STYLE_DIRECTION]:null)==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_SOUTH,s=e.x,o=e.y,r=e.width,l=s+r/2,d=o+(e=e.height)/2,c=new mxPoint(s,o),m=new mxPoint(s+r,d),u=new mxPoint(s,o+e);n==mxConstants.DIRECTION_NORTH?(c=u,m=new mxPoint(l,o),u=new mxPoint(s+r,o+e)):n==mxConstants.DIRECTION_SOUTH?(m=new mxPoint(l,o+e),u=new mxPoint(s+r,o)):n==mxConstants.DIRECTION_WEST&&(c=new mxPoint(s+r,o),m=new mxPoint(s,d),u=new mxPoint(s+r,o+e));var p=t.x-l,g=t.y-d,v=(p=i?Math.atan2(p,g):Math.atan2(g,p),i?Math.atan2(r,e):Math.atan2(e,r));g=!1,g=n==mxConstants.DIRECTION_NORTH||n==mxConstants.DIRECTION_WEST?-v<p&&p<v:p<-Math.PI+v||p>Math.PI-v,v=null;return null==(v=g?a&&(i&&t.x>=c.x&&t.x<=u.x||!i&&t.y>=c.y&&t.y<=u.y)?i?new mxPoint(t.x,c.y):new mxPoint(c.x,t.y):n==mxConstants.DIRECTION_NORTH?new mxPoint(s+r/2+e*Math.tan(p)/2,o+e):n==mxConstants.DIRECTION_SOUTH?new mxPoint(s+r/2-e*Math.tan(p)/2,o):n==mxConstants.DIRECTION_WEST?new mxPoint(s+r,o+e/2+r*Math.tan(p)/2):new mxPoint(s,o+e/2-r*Math.tan(p)/2):(a&&(a=new mxPoint(l,d),t.y>=o&&t.y<=o+e?(a.x=i?l:n==mxConstants.DIRECTION_WEST?s+r:s,a.y=t.y):t.x>=s&&t.x<=s+r&&(a.x=t.x,a.y=i?n==mxConstants.DIRECTION_NORTH?o+e:o:d),l=a.x,d=a.y),i&&t.x<=s+r/2||!i&&t.y<=o+e/2?mxUtils.intersection(t.x,t.y,l,d,c.x,c.y,m.x,m.y):mxUtils.intersection(t.x,t.y,l,d,m.x,m.y,u.x,u.y)))&&(v=new mxPoint(l,d)),v}};function mxPrintPreview(e,n,t,a,i,s,o,r,l){this.graph=e,this.scale=null!=n?n:1/e.pageScale,this.border=null!=a?a:0,this.pageFormat=null!=t?t:e.pageFormat,this.title=null!=r?r:"Printer-friendly version",this.x0=null!=i?i:0,this.y0=null!=s?s:0,this.borderColor=o,this.pageSelector=null==l||l}function mxStylesheet(){this.styles={},this.putDefaultVertexStyle(this.createDefaultVertexStyle()),this.putDefaultEdgeStyle(this.createDefaultEdgeStyle())}function mxCellState(e,n,t){this.view=e,this.cell=n,this.style=t,this.origin=new mxPoint,this.absoluteOffset=new mxPoint}function mxGraphSelectionModel(e){this.graph=e,this.cells=[]}function mxSelectionChange(e,n,t){this.selectionModel=e,this.added=null!=n?n.slice():null,this.removed=null!=t?t.slice():null}function mxCellEditor(e){this.graph=e}function mxCellRenderer(){}mxPrintPreview.prototype.graph=null,mxPrintPreview.prototype.pageFormat=null,mxPrintPreview.prototype.scale=null,mxPrintPreview.prototype.border=0,mxPrintPreview.prototype.x0=0,mxPrintPreview.prototype.y0=0,mxPrintPreview.prototype.autoOrigin=!0,mxPrintPreview.prototype.printOverlays=!1,mxPrintPreview.prototype.borderColor=null,mxPrintPreview.prototype.title=null,mxPrintPreview.prototype.pageSelector=null,mxPrintPreview.prototype.wnd=null,mxPrintPreview.prototype.pageCount=0,mxPrintPreview.prototype.getWindow=function(){return this.wnd},mxPrintPreview.prototype.getDoctype=function(){var e="";return 8==document.documentMode&&(e='<meta http-equiv="X-UA-Compatible" content="IE=8">'),e},mxPrintPreview.prototype.open=function(e){var n=this.graph.cellRenderer.initializeOverlay,t=null;try{if(this.printOverlays&&(this.graph.cellRenderer.initializeOverlay=function(e,n){n.init(e.view.getDrawPane())}),null==this.wnd){this.wnd=window.open();var a=this.wnd.document,i=this.getDoctype();null!=i&&0<i.length&&a.writeln(i),a.writeln("<html>"),a.writeln("<head>"),this.writeHead(a,e),a.writeln("</head>"),a.writeln('<body class="mxPage">'),mxClient.link("stylesheet",mxClient.basePath+"/css/common.css",a),mxClient.IS_VML&&(a.namespaces.add("v","urn:schemas-microsoft-com:vml"),a.namespaces.add("o","urn:schemas-microsoft-com:office:office"),a.createStyleSheet().cssText="v\\:*{behavior:url(#default#VML)}o\\:*{behavior:url(#default#VML)}",mxClient.link("stylesheet",mxClient.basePath+"/css/explorer.css",a));var s=this.graph.getGraphBounds().clone(),o=this.graph.getView().getScale(),r=o/this.scale,l=this.graph.getView().getTranslate();this.autoOrigin||(this.x0=-l.x*this.scale,this.y0=-l.y*this.scale,s.width+=s.x,s.height+=s.y,s.x=0,this.border=s.y=0),s.width/=r,s.height/=r;var d=this.pageFormat.width-2*this.border,c=this.pageFormat.height-2*this.border,m=Math.max(1,Math.ceil((s.width+this.x0)/d)),u=Math.max(1,Math.ceil((s.height+this.y0)/c));this.pageCount=m*u;var p=mxUtils.bind(this,function(){if(this.pageSelector&&(1<u||1<m)){var e=this.createPageSelector(u,m);if(a.body.appendChild(e),mxClient.IS_IE){e.style.position="absolute";var n=function(){e.style.top=a.body.scrollTop+10+"px"};mxEvent.addListener(this.wnd,"scroll",function(e){n()}),mxEvent.addListener(this.wnd,"resize",function(e){n()})}}});if(e=function(e,n){if(null!=this.borderColor&&(e.style.borderColor=this.borderColor,e.style.borderStyle="solid",e.style.borderWidth="1px"),e.style.background="white",n&&(e.style.pageBreakAfter="always"),mxClient.IS_IE?(a.writeln(e.outerHTML),e.parentNode.removeChild(e)):(e.parentNode.removeChild(e),a.body.appendChild(e)),n){var t=a.createElement("hr");t.className="mxPageBreak",a.body.appendChild(t)}},null!=(f=this.getCoverPages(this.pageFormat.width,this.pageFormat.height)))for(var g=0;g<f.length;g++)e(f[g],!0);var v=this.getAppendices(this.pageFormat.width,this.pageFormat.height);for(g=0;g<u;g++)for(var h=g*c/this.scale-this.y0/this.scale+(s.y-l.y*o)/o,f=0;f<m;f++){if(null==this.wnd)return null;var b=f*d/this.scale-this.x0/this.scale+(s.x-l.x*o)/o,A=g*m+f+1;(t=this.renderPage(this.pageFormat.width,this.pageFormat.height,mxUtils.bind(this,function(e){this.addGraphFragment(-b,-h,this.scale,A,e)}))).setAttribute("id","mxPage-"+A),e(t,null!=v||g<u-1||f<m-1)}if(null!=v)for(g=0;g<v.length;g++)e(v[g],g<v.length);a.writeln("</body>"),a.writeln("</html>"),a.close(),p(),mxEvent.release(a.body)}this.wnd.focus()}catch(e){null!=t&&null!=t.parentNode&&t.parentNode.removeChild(t)}finally{this.graph.cellRenderer.initializeOverlay=n}return this.wnd},mxPrintPreview.prototype.writeHead=function(e,n){null!=this.title&&e.writeln("<title>"+this.title+"</title>"),e.writeln('<style type="text/css">'),e.writeln("@media print {"),e.writeln("  table.mxPageSelector { display: none; }"),e.writeln("  hr.mxPageBreak { display: none; }"),e.writeln("}"),e.writeln("@media screen {"),e.writeln("  table.mxPageSelector { position: fixed; right: 10px; top: 10px;font-family: Arial; font-size:10pt; border: solid 1px darkgray;background: white; border-collapse:collapse; }"),e.writeln("  table.mxPageSelector td { border: solid 1px gray; padding:4px; }"),e.writeln("  body.mxPage { background: gray; }"),e.writeln("}"),null!=n&&e.writeln(n),e.writeln("</style>")},mxPrintPreview.prototype.createPageSelector=function(e,n){var t=this.wnd.document,a=t.createElement("table");a.className="mxPageSelector",a.setAttribute("border","0");for(var i=t.createElement("tbody"),s=0;s<e;s++){for(var o=t.createElement("tr"),r=0;r<n;r++){var l=s*n+r+1,d=t.createElement("td");if(!mxClient.IS_NS||mxClient.IS_SF||mxClient.IS_GC){var c=t.createElement("a");c.setAttribute("href","#mxPage-"+l),mxUtils.write(c,l,t),d.appendChild(c)}else mxUtils.write(d,l,t);o.appendChild(d)}i.appendChild(o)}return a.appendChild(i),a},mxPrintPreview.prototype.renderPage=function(e,n,t){var a=document.createElement("div");try{a.style.width=e+"px",a.style.height=n+"px",a.style.overflow="hidden",a.style.pageBreakInside="avoid",a.style.position="relative";var i=document.createElement("div");i.style.top=this.border+"px",i.style.left=this.border+"px",i.style.width=e-2*this.border+"px",i.style.height=n-2*this.border+"px",i.style.overflow="hidden",this.graph.dialect==mxConstants.DIALECT_VML&&(i.style.position="absolute"),a.appendChild(i),document.body.appendChild(a),t(i)}catch(e){throw a.parentNode.removeChild(a),e}return a},mxPrintPreview.prototype.addGraphFragment=function(e,n,t,a,i){a=this.graph.getView();var s=this.graph.container;this.graph.container=i;var o=a.getCanvas(),r=a.getBackgroundPane(),l=a.getDrawPane(),d=a.getOverlayPane();this.graph.dialect==mxConstants.DIALECT_SVG?a.createSvg():this.graph.dialect==mxConstants.DIALECT_VML?a.createVml():a.createHtml();var c=a.isEventsEnabled();a.setEventsEnabled(!1);var m=this.graph.isEnabled();this.graph.setEnabled(!1);var u=a.getTranslate();a.translate=new mxPoint(e,n),e=null;try{var p=[this.graph.getModel().getRoot()];e=new mxTemporaryCellStates(a,t,p)}finally{if(mxClient.IS_IE)a.overlayPane.innerHTML="";else for(t=i.firstChild;null!=t;)p=t.nextSibling,"svg"==(n=t.nodeName.toLowerCase())?(t.setAttribute("width",parseInt(i.style.width)),t.setAttribute("height",parseInt(i.style.height))):"default"!=t.style.cursor&&"table"!=n&&t.parentNode.removeChild(t),t=p;a.overlayPane.parentNode.removeChild(a.overlayPane),this.graph.setEnabled(m),this.graph.container=s,a.canvas=o,a.backgroundPane=r,a.drawPane=l,a.overlayPane=d,a.translate=u,e.destroy(),a.setEventsEnabled(c)}},mxPrintPreview.prototype.getCoverPages=function(){return null},mxPrintPreview.prototype.getAppendices=function(){return null},mxPrintPreview.prototype.print=function(){var e=this.open();null!=e&&e.print()},mxPrintPreview.prototype.close=function(){null!=this.wnd&&(this.wnd.close(),this.wnd=null)},mxStylesheet.prototype.createDefaultVertexStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_RECTANGLE,e[mxConstants.STYLE_PERIMETER]=mxPerimeter.RectanglePerimeter,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_FILLCOLOR]="#C3D9FF",e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#774400",e},mxStylesheet.prototype.createDefaultEdgeStyle=function(){var e={};return e[mxConstants.STYLE_SHAPE]=mxConstants.SHAPE_CONNECTOR,e[mxConstants.STYLE_ENDARROW]=mxConstants.ARROW_CLASSIC,e[mxConstants.STYLE_VERTICAL_ALIGN]=mxConstants.ALIGN_MIDDLE,e[mxConstants.STYLE_ALIGN]=mxConstants.ALIGN_CENTER,e[mxConstants.STYLE_STROKECOLOR]="#6482B9",e[mxConstants.STYLE_FONTCOLOR]="#446299",e},mxStylesheet.prototype.putDefaultVertexStyle=function(e){this.putCellStyle("defaultVertex",e)},mxStylesheet.prototype.putDefaultEdgeStyle=function(e){this.putCellStyle("defaultEdge",e)},mxStylesheet.prototype.getDefaultVertexStyle=function(){return this.styles.defaultVertex},mxStylesheet.prototype.getDefaultEdgeStyle=function(){return this.styles.defaultEdge},mxStylesheet.prototype.putCellStyle=function(e,n){this.styles[e]=n},mxStylesheet.prototype.getCellStyle=function(e,n){var t=n;if(null!=e&&0<e.length)for(var a=e.split(";"),i=(t=null!=t&&";"!=e.charAt(0)?mxUtils.clone(t):{},0);i<a.length;i++){var s=(o=a[i]).indexOf("=");if(0<=s){var o,r=o.substring(0,s);(o=o.substring(s+1))==mxConstants.NONE?delete t[r]:mxUtils.isNumeric(o)?t[r]=parseFloat(o):t[r]=o}else if(null!=(o=this.styles[o]))for(r in o)t[r]=o[r]}return t},mxCellState.prototype=new mxRectangle,mxCellState.prototype.constructor=mxCellState,mxCellState.prototype.view=null,mxCellState.prototype.cell=null,mxCellState.prototype.style=null,mxCellState.prototype.invalid=!0,mxCellState.prototype.invalidOrder=!1,mxCellState.prototype.orderChanged=!1,mxCellState.prototype.origin=null,mxCellState.prototype.absolutePoints=null,mxCellState.prototype.absoluteOffset=null,mxCellState.prototype.visibleSourceState=null,mxCellState.prototype.visibleTargetState=null,mxCellState.prototype.terminalDistance=0,mxCellState.prototype.length=0,mxCellState.prototype.segments=null,mxCellState.prototype.shape=null,mxCellState.prototype.text=null,mxCellState.prototype.getPerimeterBounds=function(e,n){if(e=e||0,n=null!=n?n:new mxRectangle(this.x,this.y,this.width,this.height),null!=this.shape&&null!=this.shape.stencil){var t=this.shape.stencil.computeAspect(this.style,n.x,n.y,n.width,n.height);n.x=t.x,n.y=t.y,n.width=this.shape.stencil.w0*t.width,n.height=this.shape.stencil.h0*t.height}return 0!=e&&n.grow(e),n},mxCellState.prototype.setAbsoluteTerminalPoint=function(e,n){n?(null==this.absolutePoints&&(this.absolutePoints=[]),0==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[0]=e):null==this.absolutePoints?(this.absolutePoints=[],this.absolutePoints.push(null),this.absolutePoints.push(e)):1==this.absolutePoints.length?this.absolutePoints.push(e):this.absolutePoints[this.absolutePoints.length-1]=e},mxCellState.prototype.setCursor=function(e){null!=this.shape&&this.shape.setCursor(e),null!=this.text&&this.text.setCursor(e)},mxCellState.prototype.getVisibleTerminal=function(e){return null!=(e=this.getVisibleTerminalState(e))?e.cell:null},mxCellState.prototype.getVisibleTerminalState=function(e){return e?this.visibleSourceState:this.visibleTargetState},mxCellState.prototype.setVisibleTerminalState=function(e,n){n?this.visibleSourceState=e:this.visibleTargetState=e},mxCellState.prototype.destroy=function(){this.view.graph.cellRenderer.destroy(this)},mxCellState.prototype.clone=function(){var e=new mxCellState(this.view,this.cell,this.style);if(null!=this.absolutePoints){e.absolutePoints=[];for(var n=0;n<this.absolutePoints.length;n++)e.absolutePoints[n]=this.absolutePoints[n].clone()}return null!=this.origin&&(e.origin=this.origin.clone()),null!=this.absoluteOffset&&(e.absoluteOffset=this.absoluteOffset.clone()),null!=this.boundingBox&&(e.boundingBox=this.boundingBox.clone()),e.terminalDistance=this.terminalDistance,e.segments=this.segments,e.length=this.length,e.x=this.x,e.y=this.y,e.width=this.width,e.height=this.height,e},mxGraphSelectionModel.prototype=new mxEventSource,mxGraphSelectionModel.prototype.constructor=mxGraphSelectionModel,mxGraphSelectionModel.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphSelectionModel.prototype.updatingSelectionResource="none"!=mxClient.language?"updatingSelection":"",mxGraphSelectionModel.prototype.graph=null,mxGraphSelectionModel.prototype.singleSelection=!1,mxGraphSelectionModel.prototype.isSingleSelection=function(){return this.singleSelection},mxGraphSelectionModel.prototype.setSingleSelection=function(e){this.singleSelection=e},mxGraphSelectionModel.prototype.isSelected=function(e){return null!=e&&0<=mxUtils.indexOf(this.cells,e)},mxGraphSelectionModel.prototype.isEmpty=function(){return 0==this.cells.length},mxGraphSelectionModel.prototype.clear=function(){this.changeSelection(null,this.cells)},mxGraphSelectionModel.prototype.setCell=function(e){null!=e&&this.setCells([e])},mxGraphSelectionModel.prototype.setCells=function(e){if(null!=e){this.singleSelection&&(e=[this.getFirstSelectableCell(e)]);for(var n=[],t=0;t<e.length;t++)this.graph.isCellSelectable(e[t])&&n.push(e[t]);this.changeSelection(n,this.cells)}},mxGraphSelectionModel.prototype.getFirstSelectableCell=function(e){if(null!=e)for(var n=0;n<e.length;n++)if(this.graph.isCellSelectable(e[n]))return e[n];return null},mxGraphSelectionModel.prototype.addCell=function(e){null!=e&&this.addCells([e])},mxGraphSelectionModel.prototype.addCells=function(e){if(null!=e){var n=null;this.singleSelection&&(n=this.cells,e=[this.getFirstSelectableCell(e)]);for(var t=[],a=0;a<e.length;a++)!this.isSelected(e[a])&&this.graph.isCellSelectable(e[a])&&t.push(e[a]);this.changeSelection(t,n)}},mxGraphSelectionModel.prototype.removeCell=function(e){null!=e&&this.removeCells([e])},mxGraphSelectionModel.prototype.removeCells=function(e){if(null!=e){for(var n=[],t=0;t<e.length;t++)this.isSelected(e[t])&&n.push(e[t]);this.changeSelection(null,n)}},mxGraphSelectionModel.prototype.changeSelection=function(e,n){if(null!=e&&0<e.length&&null!=e[0]||null!=n&&0<n.length&&null!=n[0]){var t=new mxSelectionChange(this,e,n);t.execute();var a=new mxUndoableEdit(this,!1);a.add(t),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",a))}},mxGraphSelectionModel.prototype.cellAdded=function(e){null!=e&&!this.isSelected(e)&&this.cells.push(e)},mxGraphSelectionModel.prototype.cellRemoved=function(e){null!=e&&(0<=(e=mxUtils.indexOf(this.cells,e))&&this.cells.splice(e,1))},mxSelectionChange.prototype.execute=function(){var e=mxLog.enter("mxSelectionChange.execute");if(window.status=mxResources.get(this.selectionModel.updatingSelectionResource)||this.selectionModel.updatingSelectionResource,null!=this.removed)for(var n=0;n<this.removed.length;n++)this.selectionModel.cellRemoved(this.removed[n]);if(null!=this.added)for(n=0;n<this.added.length;n++)this.selectionModel.cellAdded(this.added[n]);n=this.added,this.added=this.removed,this.removed=n,window.status=mxResources.get(this.selectionModel.doneResource)||this.selectionModel.doneResource,mxLog.leave("mxSelectionChange.execute",e),this.selectionModel.fireEvent(new mxEventObject(mxEvent.CHANGE,"added",this.added,"removed",this.removed))},mxCellEditor.prototype.graph=null,mxCellEditor.prototype.textarea=null,mxCellEditor.prototype.editingCell=null,mxCellEditor.prototype.trigger=null,mxCellEditor.prototype.modified=!1,mxCellEditor.prototype.autoSize=!0,mxCellEditor.prototype.emptyLabelText="",mxCellEditor.prototype.textNode="",mxCellEditor.prototype.init=function(){this.textarea=document.createElement("textarea"),this.textarea.className="mxCellEditor",this.textarea.style.position="absolute",this.textarea.style.overflow="visible",this.textarea.setAttribute("cols","20"),this.textarea.setAttribute("rows","4"),mxClient.IS_NS&&(this.textarea.style.resize="none"),mxEvent.addListener(this.textarea,"blur",mxUtils.bind(this,function(e){this.focusLost()})),mxEvent.addListener(this.textarea,"keydown",mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(113==e.keyCode||this.graph.isEnterStopsCellEditing()&&13==e.keyCode&&!mxEvent.isControlDown(e)&&!mxEvent.isShiftDown(e)?(this.graph.stopEditing(!1),mxEvent.consume(e)):27==e.keyCode?(this.graph.stopEditing(!0),mxEvent.consume(e)):(this.clearOnChange&&(this.clearOnChange=!1,this.textarea.value=""),this.setModified(!0)))})),mxEvent.addListener(this.textarea,"keypress",mxUtils.bind(this,function(e){this.autoSize&&!mxEvent.isConsumed(e)&&setTimeout(mxUtils.bind(this,function(){this.resize()}),0)}))},mxCellEditor.prototype.resize=function(){if(null!=this.textDiv){var e=this.graph.getView().getState(this.editingCell),n=this.graph.isLabelClipped(e.cell),t=this.graph.isWrapping(e.cell);if(this.graph.getModel().isEdge(e.cell))this.bounds.x=e.absoluteOffset.x,this.bounds.y=e.absoluteOffset.y,this.bounds.width=0,this.bounds.height=0;else if(null!=this.bounds){this.bounds.x=e.x,this.bounds.y=e.y,this.bounds.width=e.width,this.bounds.height=e.height,(a=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?this.bounds.x-=e.width:a==mxConstants.ALIGN_RIGHT&&(this.bounds.x+=e.width),(a=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?this.bounds.y-=e.height:a==mxConstants.ALIGN_BOTTOM&&(this.bounds.y+=e.height)}"\n"!=(a=this.textarea.value).charAt(a.length-1)&&""!=a||(a+="&nbsp;"),a=mxUtils.htmlEntities(a,!1),t?(this.textDiv.style.whiteSpace="normal",this.textDiv.style.width=this.bounds.width+"px"):a=a.replace(/ /g,"&nbsp;"),a=a.replace(/\n/g,"<br/>"),this.textDiv.innerHTML=a;var a=this.textDiv.offsetWidth+30,i=this.textDiv.offsetHeight+16;a=Math.max(a,40),i=Math.max(i,20);n&&(a=Math.min(this.bounds.width-4,a),i=Math.min(this.bounds.height,i));var s=null!=e.text?e.text.margin:null;null==s&&(s=mxUtils.getValue(e.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER),e=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE),s=mxUtils.getAlignmentAsPoint(s,e)),null!=s&&(!n&&t||(this.textarea.style.left=Math.max(0,Math.round(this.bounds.x-s.x*this.bounds.width+s.x*a)-3)+"px"),this.textarea.style.top=Math.max(0,Math.round(this.bounds.y-s.y*this.bounds.height+s.y*i)+4)+"px"),!n&&t||(this.textarea.style.width=a+"px"),this.textarea.style.height=i+"px"}},mxCellEditor.prototype.isModified=function(){return this.modified},mxCellEditor.prototype.setModified=function(e){this.modified=e},mxCellEditor.prototype.focusLost=function(){this.stopEditing(!this.graph.isInvokesStopCellEditing())},mxCellEditor.prototype.startEditing=function(e,n){null==this.textarea&&this.init(),this.stopEditing(!0);var t=this.graph.getView().getState(e);if(null!=t){this.editingCell=e,this.trigger=n,(this.textNode=null)!=t.text&&this.isHideLabel(t)&&(this.textNode=t.text.node,this.textNode.style.visibility="hidden");var a=this.graph.getView().scale,i=(a=mxUtils.getValue(t.style,mxConstants.STYLE_FONTSIZE,mxConstants.DEFAULT_FONTSIZE)*a,mxUtils.getValue(t.style,mxConstants.STYLE_FONTFAMILY,mxConstants.DEFAULT_FONTFAMILY)),s=mxUtils.getValue(t.style,mxConstants.STYLE_FONTCOLOR,"black"),o=mxUtils.getValue(t.style,mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT),r=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_BOLD)==mxConstants.FONT_BOLD,l=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_ITALIC)==mxConstants.FONT_ITALIC,d=(mxUtils.getValue(t.style,mxConstants.STYLE_FONTSTYLE,0)&mxConstants.FONT_UNDERLINE)==mxConstants.FONT_UNDERLINE;this.textarea.style.fontSize=Math.round(a)+"px",this.textarea.style.lineHeight=Math.round(a*mxConstants.LINE_HEIGHT)+"px",this.textarea.style.fontFamily=i,this.textarea.style.textAlign=o,this.textarea.style.color=s,this.textarea.style.fontWeight=r?"bold":"normal",this.textarea.style.fontStyle=l?"italic":"",this.textarea.style.textDecoration=d?"underline":"",this.textarea.style.overflow="auto",this.textarea.style.outline="none",this.bounds=a=this.getEditorBounds(t),this.textarea.style.left=a.x+"px",this.textarea.style.top=a.y+"px",this.textarea.style.width=a.width+"px",this.textarea.style.height=a.height+"px",this.textarea.style.zIndex=5,null==(t=this.getInitialValue(t,n))||0==t.length?(t=this.getEmptyLabelText(),this.clearOnChange=!0):this.clearOnChange=!1,this.setModified(!1),this.textarea.value=t,this.graph.container.appendChild(this.textarea),"none"!=this.textarea.style.display&&(this.autoSize&&(this.textDiv=this.createTextDiv(),document.body.appendChild(this.textDiv),this.resize()),this.textarea.focus(),this.textarea.select())}},mxCellEditor.prototype.createTextDiv=function(){var e=document.createElement("div"),n=e.style;return n.position="absolute",n.whiteSpace="nowrap",n.visibility="hidden",n.display=mxClient.IS_QUIRKS?"inline":"inline-block",n.zoom="1",n.verticalAlign="top",n.lineHeight=this.textarea.style.lineHeight,n.fontSize=this.textarea.style.fontSize,n.fontFamily=this.textarea.style.fontFamily,n.fontWeight=this.textarea.style.fontWeight,n.textAlign=this.textarea.style.textAlign,n.fontStyle=this.textarea.style.fontStyle,n.textDecoration=this.textarea.style.textDecoration,e},mxCellEditor.prototype.stopEditing=function(e){null!=this.editingCell&&(null!=this.textNode&&(this.textNode.style.visibility="visible",this.textNode=null),!e&&this.isModified()&&this.graph.labelChanged(this.editingCell,this.getCurrentValue(),this.trigger),null!=this.textDiv&&(document.body.removeChild(this.textDiv),this.textDiv=null),this.bounds=this.trigger=this.editingCell=null,this.textarea.blur(),this.textarea.parentNode.removeChild(this.textarea))},mxCellEditor.prototype.getInitialValue=function(e,n){return this.graph.getEditingValue(e.cell,n)},mxCellEditor.prototype.getCurrentValue=function(){return this.textarea.value.replace(/\r/g,"")},mxCellEditor.prototype.isHideLabel=function(e){return!0},mxCellEditor.prototype.getMinimumSize=function(e){var n=this.graph.getView().scale;return new mxRectangle(0,0,null==e.text?30:e.text.size*n+20,"left"==this.textarea.style.textAlign?120:40)},mxCellEditor.prototype.getEditorBounds=function(e){var n=this.graph.getModel().isEdge(e.cell),t=this.graph.getView().scale,a=(i=this.getMinimumSize(e)).width,i=i.height,s=parseInt(e.style[mxConstants.STYLE_SPACING]||2)*t,o=parseInt(e.style[mxConstants.STYLE_SPACING_TOP]||0)*t+s,r=parseInt(e.style[mxConstants.STYLE_SPACING_RIGHT]||0)*t+s,l=parseInt(e.style[mxConstants.STYLE_SPACING_BOTTOM]||0)*t+s;t=parseInt(e.style[mxConstants.STYLE_SPACING_LEFT]||0)*t+s,r=new mxRectangle(e.x,e.y,Math.max(a,e.width-t-r),Math.max(i,e.height-o-l));return n?(r.x=e.absoluteOffset.x,r.y=e.absoluteOffset.y,null!=e.text&&null!=e.text.boundingBox&&(0<e.text.boundingBox.x&&(r.x=e.text.boundingBox.x),0<e.text.boundingBox.y&&(r.y=e.text.boundingBox.y))):null!=e.text&&null!=e.text.boundingBox&&(r.x=Math.min(r.x,e.text.boundingBox.x),r.y=Math.min(r.y,e.text.boundingBox.y)),r.x+=t,r.y+=o,null!=e.text&&null!=e.text.boundingBox&&(n?(r.width=Math.max(a,e.text.boundingBox.width),r.height=Math.max(i,e.text.boundingBox.height)):(r.width=Math.max(r.width,e.text.boundingBox.width),r.height=Math.max(r.height,e.text.boundingBox.height))),this.graph.getModel().isVertex(e.cell)&&((n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER))==mxConstants.ALIGN_LEFT?r.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(r.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?r.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(r.y+=e.height)),r},mxCellEditor.prototype.getEmptyLabelText=function(e){return this.emptyLabelText},mxCellEditor.prototype.getEditingCell=function(){return this.editingCell},mxCellEditor.prototype.destroy=function(){null!=this.textarea&&(mxEvent.release(this.textarea),null!=this.textarea.parentNode&&this.textarea.parentNode.removeChild(this.textarea),this.textarea=null)},mxCellRenderer.prototype.defaultEdgeShape=mxConnector,mxCellRenderer.prototype.defaultVertexShape=mxRectangleShape,mxCellRenderer.prototype.defaultTextShape=mxText,mxCellRenderer.prototype.legacyControlPosition=!0,mxCellRenderer.prototype.defaultShapes={},mxCellRenderer.registerShape=function(e,n){mxCellRenderer.prototype.defaultShapes[e]=n},mxCellRenderer.registerShape(mxConstants.SHAPE_RECTANGLE,mxRectangleShape),mxCellRenderer.registerShape(mxConstants.SHAPE_ELLIPSE,mxEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_RHOMBUS,mxRhombus),mxCellRenderer.registerShape(mxConstants.SHAPE_CYLINDER,mxCylinder),mxCellRenderer.registerShape(mxConstants.SHAPE_CONNECTOR,mxConnector),mxCellRenderer.registerShape(mxConstants.SHAPE_ACTOR,mxActor),mxCellRenderer.registerShape(mxConstants.SHAPE_TRIANGLE,mxTriangle),mxCellRenderer.registerShape(mxConstants.SHAPE_HEXAGON,mxHexagon),mxCellRenderer.registerShape(mxConstants.SHAPE_CLOUD,mxCloud),mxCellRenderer.registerShape(mxConstants.SHAPE_LINE,mxLine),mxCellRenderer.registerShape(mxConstants.SHAPE_ARROW,mxArrow),mxCellRenderer.registerShape(mxConstants.SHAPE_DOUBLE_ELLIPSE,mxDoubleEllipse),mxCellRenderer.registerShape(mxConstants.SHAPE_SWIMLANE,mxSwimlane),mxCellRenderer.registerShape(mxConstants.SHAPE_IMAGE,mxImageShape),mxCellRenderer.registerShape(mxConstants.SHAPE_LABEL,mxLabel),mxCellRenderer.prototype.initialize=function(e,n){var t=e.view.graph.getModel();null!=e.view.graph.container&&null==e.shape&&e.cell!=e.view.currentRoot&&(t.isVertex(e.cell)||t.isEdge(e.cell))&&(this.createShape(e),null==e.shape||null!=n&&!n||(this.initializeShape(e),e.view.graph.ordered||t.isEdge(e.cell)?e.invalidOrder=!0:e.view.graph.keepEdgesInForeground&&null!=this.firstEdge&&(this.firstEdge.parentNode==e.shape.node.parentNode?this.insertState(e,this.firstEdge):this.firstEdge=null),e.shape.scale=e.view.scale,this.createCellOverlays(e),this.installListeners(e)))},mxCellRenderer.prototype.initializeShape=function(e){e.shape.init(e.view.getDrawPane())},mxCellRenderer.prototype.getPreviousStateInContainer=function(e,n){for(var t=null,a=e.view.graph,i=a.getModel(),s=e.cell,o=i.getParent(s);null!=o&&null==t;)t=this.findPreviousStateInContainer(a,o,s,n),s=o,o=i.getParent(s);return t},mxCellRenderer.prototype.findPreviousStateInContainer=function(e,n,t,a){var i=null,s=e.getModel();for(t=null!=t?n.getIndex(t)-1:s.getChildCount(n)-1;0<=t&&null==i;t--)i=this.findPreviousStateInContainer(e,s.getChildAt(n,t),null,a);return null!=i||(null==(i=e.view.getState(n))||null!=i.shape&&null!=i.shape.node&&i.shape.node.parentNode==a)||(i=null),i},mxCellRenderer.prototype.order=function(e){var n=e.shape.node.parentNode,t=this.getPreviousStateInContainer(e,n),a=n.firstChild;null!=t&&(a=t.shape.node,null!=t.text&&null!=t.text.node&&t.text.node.parentNode==n&&(a=t.text.node),a=a.nextSibling),this.insertState(e,a)},mxCellRenderer.prototype.orderEdge=function(e){var n=(t=e.view).graph.getModel();if(t.graph.keepEdgesInForeground)null!=this.firstEdge&&null!=this.firstEdge.parentNode&&this.firstEdge.parentNode==e.shape.node.parentNode||(this.firstEdge=e.shape.node);else if(t.graph.keepEdgesInBackground){var t,a=e.shape.node,i=a.parentNode;n=n.getParent(e.cell);null!=(i=null!=(t=t.getState(n))&&null!=t.shape&&null!=t.shape.node?t.shape.node.nextSibling:i.firstChild)&&i!=a&&this.insertState(e,i)}},mxCellRenderer.prototype.insertState=function(e,n){e.shape.node.parentNode.insertBefore(e.shape.node,n),null!=e.text&&null!=e.text.node&&e.text.node.parentNode==e.shape.node.parentNode&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling)},mxCellRenderer.prototype.createShape=function(e){if(null!=e.style){var n=mxStencilRegistry.getStencil(e.style[mxConstants.STYLE_SHAPE]);null!=n?e.shape=new mxShape(n):(n=this.getShapeConstructor(e),e.shape=new n),e.shape.points=e.absolutePoints,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.dialect=e.view.graph.dialect,this.configureShape(e)}},mxCellRenderer.prototype.getShape=function(e){return null!=e?mxCellRenderer.prototype.defaultShapes[e]:null},mxCellRenderer.prototype.getShapeConstructor=function(e){var n=this.getShape(e.style[mxConstants.STYLE_SHAPE]);return null==n&&(n=e.view.graph.getModel().isEdge(e.cell)?this.defaultEdgeShape:this.defaultVertexShape),n},mxCellRenderer.prototype.configureShape=function(e){e.shape.apply(e),e.shape.image=e.view.graph.getImage(e),e.shape.indicatorShape=this.getShape(e.view.graph.getIndicatorShape(e)),e.shape.indicatorColor=e.view.graph.getIndicatorColor(e),e.shape.indicatorGradientColor=e.view.graph.getIndicatorGradientColor(e),e.shape.indicatorDirection=e.style[mxConstants.STYLE_INDICATOR_DIRECTION],e.shape.indicatorImage=e.view.graph.getIndicatorImage(e),this.postConfigureShape(e)},mxCellRenderer.prototype.postConfigureShape=function(e){null!=e.shape&&(this.resolveColor(e,"indicatorColor",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"indicatorGradientColor",mxConstants.STYLE_GRADIENTCOLOR),this.resolveColor(e,"fill",mxConstants.STYLE_FILLCOLOR),this.resolveColor(e,"stroke",mxConstants.STYLE_STROKECOLOR),this.resolveColor(e,"gradient",mxConstants.STYLE_GRADIENTCOLOR))},mxCellRenderer.prototype.resolveColor=function(e,n,t){var a=e.shape[n],i=e.view.graph,s=null;"inherit"==a?s=i.model.getParent(e.cell):"swimlane"==a?(s=null!=i.model.getTerminal(e.cell,!1)?i.model.getTerminal(e.cell,!1):e.cell,s=i.getSwimlane(s),t=i.swimlaneIndicatorColorAttribute):"indicated"==a&&(e.shape[n]=e.shape.indicatorColor),null!=s&&(a=i.getView().getState(s),(e.shape[n]=null)!=a&&(e.shape[n]=null!=a.shape&&"indicatorColor"!=n?a.shape[n]:a.style[t]))},mxCellRenderer.prototype.getLabelValue=function(e){return e.view.graph.getLabel(e.cell)},mxCellRenderer.prototype.createLabel=function(t,e){var a=t.view.graph;if(a.getModel().isEdge(t.cell),0<t.style[mxConstants.STYLE_FONTSIZE]||null==t.style[mxConstants.STYLE_FONTSIZE]){var n=a.isHtmlLabel(t.cell)||null!=e&&mxUtils.isNode(e);t.text=new this.defaultTextShape(e,new mxRectangle,t.style[mxConstants.STYLE_ALIGN]||mxConstants.ALIGN_CENTER,a.getVerticalAlign(t),t.style[mxConstants.STYLE_FONTCOLOR],t.style[mxConstants.STYLE_FONTFAMILY],t.style[mxConstants.STYLE_FONTSIZE],t.style[mxConstants.STYLE_FONTSTYLE],t.style[mxConstants.STYLE_SPACING],t.style[mxConstants.STYLE_SPACING_TOP],t.style[mxConstants.STYLE_SPACING_RIGHT],t.style[mxConstants.STYLE_SPACING_BOTTOM],t.style[mxConstants.STYLE_SPACING_LEFT],t.style[mxConstants.STYLE_HORIZONTAL],t.style[mxConstants.STYLE_LABEL_BACKGROUNDCOLOR],t.style[mxConstants.STYLE_LABEL_BORDERCOLOR],a.isWrapping(t.cell)&&a.isHtmlLabel(t.cell),a.isLabelClipped(t.cell),t.style[mxConstants.STYLE_OVERFLOW],t.style[mxConstants.STYLE_LABEL_PADDING]),t.text.opacity=mxUtils.getValue(t.style,mxConstants.STYLE_TEXT_OPACITY,100),t.text.dialect=n?mxConstants.DIALECT_STRICTHTML:t.view.graph.dialect,t.text.state=t,this.initializeLabel(t);var i=!1,s=function(e){var n=t;return(mxClient.IS_TOUCH||i)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n};mxEvent.addGestureListeners(t.text.node,mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,t)),i=a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName)}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,s(e)))}),mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,s(e))),i=!1)})),mxEvent.addListener(t.text.node,"dblclick",mxUtils.bind(this,function(e){this.isLabelEvent(t,e)&&(a.dblClick(e,t.cell),mxEvent.consume(e))}))}},mxCellRenderer.prototype.initializeLabel=function(e){var n=e.view.graph;e.text.dialect!=mxConstants.DIALECT_SVG&&(mxClient.IS_SVG&&mxClient.NO_FO?e.text.init(n.container):mxUtils.isVml(e.view.getDrawPane())&&(null!=e.shape.label?e.text.init(e.shape.label):e.text.init(e.shape.node))),null==e.text.node&&(e.text.init(e.view.getDrawPane()),null!=e.shape&&null!=e.text&&e.shape.node.parentNode.insertBefore(e.text.node,e.shape.node.nextSibling))},mxCellRenderer.prototype.createCellOverlays=function(e){var n=e.view.graph.getCellOverlays(e.cell),t=null;if(null!=n){t=new mxDictionary;for(var a=0;a<n.length;a++){var i=null!=e.overlays?e.overlays.remove(n[a]):null;null==i&&((i=new mxImageShape(new mxRectangle,n[a].image.src)).dialect=e.view.graph.dialect,i.preserveImageAspect=!1,i.overlay=n[a],this.initializeOverlay(e,i),this.installCellOverlayListeners(e,n[a],i),null!=n[a].cursor&&(i.node.style.cursor=n[a].cursor)),t.put(n[a],i)}}null!=e.overlays&&e.overlays.visit(function(e,n){n.destroy()}),e.overlays=t},mxCellRenderer.prototype.initializeOverlay=function(e,n){n.init(e.view.getOverlayPane())},mxCellRenderer.prototype.installCellOverlayListeners=function(n,t,e){var a=n.view.graph;mxEvent.addListener(e.node,"click",function(e){a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))}),mxEvent.addGestureListeners(e.node,function(e){mxEvent.consume(e)},function(e){a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),mxClient.IS_TOUCH&&mxEvent.addListener(e.node,"touchend",function(e){t.fireEvent(new mxEventObject(mxEvent.CLICK,"event",e,"cell",n.cell))})},mxCellRenderer.prototype.createControl=function(t){var a=t.view.graph,e=a.getFoldingImage(t);if(a.foldingEnabled&&null!=e){if(null==t.control){var n=new mxRectangle(0,0,e.width,e.height);t.control=new mxImageShape(n,e.src),t.control.preserveImageAspect=!1,t.control.dialect=a.dialect,this.initControl(t,t.control,!0,function(e){if(a.isEnabled()){var n=!a.isCellCollapsed(t.cell);a.foldCells(n,!1,[t.cell]),mxEvent.consume(e)}})}}else null!=t.control&&(t.control.destroy(),t.control=null)},mxCellRenderer.prototype.initControl=function(n,e,t,a){var i=n.view.graph;return i.isHtmlLabel(n.cell)&&mxClient.NO_FO&&i.dialect==mxConstants.DIALECT_SVG?(e.dialect=mxConstants.DIALECT_PREFERHTML,e.init(i.container),e.node.style.zIndex=1):e.init(n.view.getOverlayPane()),e=e.innerNode||e.node,a&&(i.isEnabled()&&(e.style.cursor="pointer"),mxEvent.addListener(e,"click",a)),t&&mxEvent.addGestureListeners(e,function(e){i.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,n)),mxEvent.consume(e)},function(e){i.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,n))}),e},mxCellRenderer.prototype.isShapeEvent=function(e,n){return!0},mxCellRenderer.prototype.isLabelEvent=function(e,n){return!0},mxCellRenderer.prototype.installListeners=function(t){var a=t.view.graph,n=function(e){var n=t;return(a.dialect!=mxConstants.DIALECT_SVG&&"IMG"==mxEvent.getSource(e).nodeName||mxClient.IS_TOUCH)&&(n=mxEvent.getClientX(e),e=mxEvent.getClientY(e),e=mxUtils.convertPoint(a.container,n,e),n=a.view.getState(a.getCellAt(e.x,e.y))),n},i=!1;mxEvent.addListener(t.shape.node,"gesturestart",mxUtils.bind(this,function(e){a.lastTouchTime=0,i=!0,mxEvent.consume(e)})),mxEvent.addGestureListeners(t.shape.node,mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t)):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}),mxUtils.bind(this,function(e){this.isShapeEvent(t,e)&&!i?a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:n(e))):i&&mxEvent.consume(e)}));var s=mxClient.IS_TOUCH?"gestureend":"dblclick";mxEvent.addListener(t.shape.node,s,mxUtils.bind(this,function(e){i=!1,"gestureend"==s?(a.lastTouchTime=0,a.gestureEnabled&&(a.handleGesture(t,e),mxEvent.consume(e))):this.isShapeEvent(t,e)&&(a.dblClick(e,null!=t.shape&&mxEvent.getSource(e)==t.shape.content?null:t.cell),mxEvent.consume(e))}))},mxCellRenderer.prototype.redrawLabel=function(e,n){var t=this.getLabelValue(e);if(null==e.text&&null!=t&&(mxUtils.isNode(t)||0<t.length)?this.createLabel(e,t):null==e.text||null!=t&&0!=t.length||(e.text.destroy(),e.text=null),null!=e.text){var a=(i=e.view.graph).isWrapping(e.cell),i=i.isLabelClipped(e.cell),s=this.getLabelBounds(e);!n&&e.text.value==t&&e.text.isWrapping==a&&e.text.isClipping==i&&e.text.scale==e.view.scale&&e.text.bounds.equals(s)||(e.text.value=t,e.text.bounds=s,e.text.scale=this.getTextScale(e),e.text.isWrapping=a,e.text.isClipping=i,e.text.redraw())}},mxCellRenderer.prototype.getTextScale=function(e){return e.view.scale},mxCellRenderer.prototype.getLabelBounds=function(e){var n=e.view.graph,t=e.view.scale,a=n.getModel().isEdge(e.cell),i=new mxRectangle(e.absoluteOffset.x,e.absoluteOffset.y);return e.text.updateMargin(),a?(a=e.text.getSpacing(),i.x+=a.x*t,i.y+=a.y*t,null!=(n=n.getCellGeometry(e.cell))&&(i.width=Math.max(0,e.text.margin.x*n.width*t-e.text.spacingLeft*t-e.text.spacingRight*t),i.height=Math.max(0,e.text.margin.y*n.height*t-e.text.spacingTop*t-e.text.spacingBottom*t))):(e.text.isPaintBoundsInverted()&&(a=i.x,i.x=i.y,i.y=a),i.x+=e.x,i.y+=e.y,i.width=Math.max(1,e.width),i.height=Math.max(1,e.height),n.isSwimlane(e.cell)&&(0<(n=n.getStartSize(e.cell)).width?(a=Math.min(i.width,n.width*t),e.shape.flipH&&(i.x+=i.width-a),i.width=a):0<n.height&&(a=Math.min(i.height,n.height*t),e.shape.flipV&&(i.y+=i.height-a),i.height=a)),this.rotateLabelBounds(e,i)),i},mxCellRenderer.prototype.rotateLabelBounds=function(e,n){if(e.text.isPaintBoundsInverted()){var t=(e.width-e.height)/2;n.x+=t,n.y-=t,t=n.width,n.width=n.height,n.height=t}if(n.x-=e.text.margin.x*n.width,n.y-=e.text.margin.y*n.height,"fill"!=e.style[mxConstants.STYLE_OVERFLOW]){t=e.view.scale;var a=e.text.getSpacing();n.x+=a.x*t,n.y+=a.y*t,n.width=Math.max(0,n.width-e.text.spacingLeft*t-e.text.spacingRight*t),n.height=Math.max(0,n.height-e.text.spacingTop*t-e.text.spacingBottom*t)}var i=e.text.getTextRotation();0!=i&&null!=e&&e.view.graph.model.isVertex(e.cell)&&(t=e.getCenterX(),a=e.getCenterY(),n.x!=t||n.y!=a)&&(i*=Math.PI/180,pt=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(i),Math.sin(i),new mxPoint(t,a)),n.x=pt.x,n.y=pt.y)},mxCellRenderer.prototype.redrawCellOverlays=function(s,o){if(this.createCellOverlays(s),null!=s.overlays){var r=mxUtils.mod(mxUtils.getValue(s.style,mxConstants.STYLE_ROTATION,0),90),e=mxUtils.toRadians(r),l=Math.cos(e),d=Math.sin(e);s.overlays.visit(function(e,n){var t=n.overlay.getBounds(s);if(!s.view.graph.getModel().isEdge(s.cell)&&null!=s.shape&&0!=r){var a=t.getCenterX(),i=t.getCenterY();a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),l,d,new mxPoint(s.getCenterX(),s.getCenterY()))).x,i=i.y;t.x=Math.round(a-t.width/2),t.y=Math.round(i-t.height/2)}!o&&null!=n.bounds&&n.scale==s.view.scale&&n.bounds.equals(t)||(n.bounds=t,n.scale=s.view.scale,n.redraw())})}},mxCellRenderer.prototype.redrawControl=function(e,n){if(null!=e.control){var t=this.getControlBounds(e),a=this.legacyControlPosition?mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0):e.shape.getTextRotation(),i=e.view.scale;!n&&e.control.scale==i&&e.control.bounds.equals(t)&&e.control.rotation==a||(e.control.rotation=a,e.control.bounds=t,e.control.scale=i,e.control.redraw())}},mxCellRenderer.prototype.getControlBounds=function(e){if(null==e.control)return null;var n=e.control.scale,t=e.control.bounds.width/n,a=(n=e.control.bounds.height/n,e.view.scale),i=e.getCenterX(),s=e.getCenterY();if(!e.view.graph.getModel().isEdge(e.cell)&&(i=e.x+t*a,s=e.y+n*a,null!=e.shape)){var o=e.shape.getShapeRotation();if(this.legacyControlPosition)o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0);else if(e.shape.isPaintBoundsInverted()){var r=(e.width-e.height)/2;i=i+r,s=s-r}0!=o&&(r=mxUtils.toRadians(o),o=Math.cos(r),r=Math.sin(r),i=(s=mxUtils.getRotatedPoint(new mxPoint(i,s),o,r,new mxPoint(e.getCenterX(),e.getCenterY()))).x,s=s.y)}return e.view.graph.getModel().isEdge(e.cell),new mxRectangle(Math.round(i-t/2*a),Math.round(s-n/2*a),Math.round(t*a),Math.round(n*a))},mxCellRenderer.prototype.redraw=function(e,n,t){if(null!=e.shape){var a=!1;e.view.graph.getModel().isEdge(e.cell),reconfigure=null!=n&&n,this.createControl(e),(e.orderChanged||e.invalidOrder)&&(e.view.graph.ordered?this.order(e):this.orderEdge(e)),!e.orderChanged&&mxUtils.equalEntries(e.shape.style,e.style)||(this.configureShape(e),n=!0),delete e.invalidOrder,delete e.orderChanged,!n&&null!=e.shape.bounds&&e.shape.scale==e.view.scale&&e.shape.bounds.equals(e)&&mxUtils.equalPoints(e.shape.points,e.absolutePoints)||(a=!0,e.shape.points=null!=e.absolutePoints?e.absolutePoints.slice():null,e.shape.bounds=new mxRectangle(e.x,e.y,e.width,e.height),e.shape.scale=e.view.scale,null==t||t?e.shape.redraw():e.shape.updateBoundingBox()),(null==t||t)&&(this.redrawLabel(e,a),this.redrawCellOverlays(e,a),this.redrawControl(e,a))}},mxCellRenderer.prototype.destroy=function(e){null!=e.shape&&(null!=e.text&&(e.text.destroy(),e.text=null),null!=e.overlays&&(e.overlays.visit(function(e,n){n.destroy()}),e.overlays=null),null!=e.control&&(e.control.destroy(),e.control=null),e.shape.destroy(),e.shape=null)};var mxEdgeStyle={EntityRelation:function(e,n,t,a,i){var s=e.view,o=s.graph;a=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,mxConstants.ENTITY_SEGMENT)*s.scale;var r=(d=e.absolutePoints)[0],l=d[d.length-1],d=!1;if(null!=r)(n=new mxCellState).x=r.x,n.y=r.y;else{if(null==n)return;var c=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_NONE);c!=mxConstants.DIRECTION_MASK_NONE?d=c==mxConstants.DIRECTION_MASK_WEST:(r=o.getCellGeometry(n.cell)).relative?d=r.x<=.5:null!=t&&(d=t.x+t.width<n.x)}r=!0,null!=l?((t=new mxCellState).x=l.x,t.y=l.y):null!=t&&((c=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_NONE))!=mxConstants.DIRECTION_MASK_NONE?r=c==mxConstants.DIRECTION_MASK_WEST:(e=o.getCellGeometry(t.cell)).relative?r=e.x<=.5:null!=n&&(r=n.x+n.width<t.x)),null!=n&&null!=t&&(e=d?n.x:n.x+n.width,n=s.getRoutingCenterY(n),o=r?t.x:t.x+t.width,t=s.getRoutingCenterY(t),s=new mxPoint(e+(d?-a:a),n),l=new mxPoint(o+(r?-a:a),t),d==r?(a=d?Math.min(e,o)-a:Math.max(e,o)+a,i.push(new mxPoint(a,n)),i.push(new mxPoint(a,t))):(s.x<l.x==d?(a=n+(t-n)/2,i.push(s),i.push(new mxPoint(s.x,a)),i.push(new mxPoint(l.x,a))):i.push(s),i.push(l)))},Loop:function(e,n,t,a,i){if(null!=n){var s=(t=e.view).graph;null!=(a=null!=a&&0<a.length?a[0]:null)&&(a=t.transformControlPoint(e,a),mxUtils.contains(n,a.x,a.y)&&(a=null));var o=0,r=0,l=0,d=0;s=mxUtils.getValue(e.style,mxConstants.STYLE_SEGMENT,s.gridSize)*t.scale;(e=mxUtils.getValue(e.style,mxConstants.STYLE_DIRECTION,mxConstants.DIRECTION_WEST))==mxConstants.DIRECTION_NORTH||e==mxConstants.DIRECTION_SOUTH?(o=t.getRoutingCenterX(n),r=s):(l=t.getRoutingCenterY(n),d=s),null==a||a.x<n.x||a.x>n.x+n.width?null!=a?(o=a.x,d=Math.max(Math.abs(l-a.y),d)):e==mxConstants.DIRECTION_NORTH?l=n.y-2*r:e==mxConstants.DIRECTION_SOUTH?l=n.y+n.height+2*r:o=e==mxConstants.DIRECTION_EAST?n.x-2*d:n.x+n.width+2*d:null!=a&&(o=t.getRoutingCenterX(n),r=Math.max(Math.abs(o-a.x),d),l=a.y,d=0),i.push(new mxPoint(o-r,l-d)),i.push(new mxPoint(o+r,l+d))}},ElbowConnector:function(e,n,t,a,i){var s=null!=a&&0<a.length?a[0]:null,o=!1,r=!1;if(null!=n&&null!=t)if(null!=s){var l=Math.min(n.x,t.x),d=Math.max(n.x+n.width,t.x+t.width),c=(r=Math.min(n.y,t.y),Math.max(n.y+n.height,t.y+t.height));o=(s=e.view.transformControlPoint(e,s)).y<r||s.y>c,r=s.x<l||s.x>d}else(o=(l=Math.max(n.x,t.x))==(d=Math.min(n.x+n.width,t.x+t.width)))||(r=(r=Math.max(n.y,t.y))==(c=Math.min(n.y+n.height,t.y+t.height)));r||!o&&e.style[mxConstants.STYLE_ELBOW]!=mxConstants.ELBOW_VERTICAL?mxEdgeStyle.SideToSide(e,n,t,a,i):mxEdgeStyle.TopToBottom(e,n,t,a,i)},SideToSide:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(e=Math.max(n.x,t.x),o=Math.min(n.x+n.width,t.x+t.width),e=null!=a?a.x:o+(e-o)/2,o=s.getRoutingCenterY(n),s=s.getRoutingCenterY(t),null!=a&&(a.y>=n.y&&a.y<=n.y+n.height&&(o=a.y),a.y>=t.y&&a.y<=t.y+t.height&&(s=a.y)),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),!mxUtils.contains(t,e,s)&&!mxUtils.contains(n,e,s)&&i.push(new mxPoint(e,s)),1==i.length&&(null!=a?!mxUtils.contains(t,e,a.y)&&!mxUtils.contains(n,e,a.y)&&i.push(new mxPoint(e,a.y)):(s=Math.max(n.y,t.y),n=Math.min(n.y+n.height,t.y+t.height),i.push(new mxPoint(e,s+(n-s)/2)))))},TopToBottom:function(e,n,t,a,i){var s=e.view;a=null!=a&&0<a.length?a[0]:null;var o=(r=e.absolutePoints)[0],r=r[r.length-1];null!=a&&(a=s.transformControlPoint(e,a)),null!=o&&((n=new mxCellState).x=o.x,n.y=o.y),null!=r&&((t=new mxCellState).x=r.x,t.y=r.y),null!=n&&null!=t&&(o=Math.max(n.y,t.y),r=Math.min(n.y+n.height,t.y+t.height),e=s.getRoutingCenterX(n),null!=a&&a.x>=n.x&&a.x<=n.x+n.width&&(e=a.x),o=null!=a?a.y:r+(o-r)/2,!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),e=null!=a&&a.x>=t.x&&a.x<=t.x+t.width?a.x:s.getRoutingCenterX(t),!mxUtils.contains(t,e,o)&&!mxUtils.contains(n,e,o)&&i.push(new mxPoint(e,o)),1==i.length&&(null!=a&&1==i.length?!mxUtils.contains(t,a.x,o)&&!mxUtils.contains(n,a.x,o)&&i.push(new mxPoint(a.x,o)):(s=Math.max(n.x,t.x),n=Math.min(n.x+n.width,t.x+t.width),i.push(new mxPoint(s+(n-s)/2,o)))))},SegmentConnector:function(e,n,t,a,i){var s=e.absolutePoints,o=!0,r=null,l=s[0];null==l&&null!=n?l=new mxPoint(e.view.getRoutingCenterX(n),e.view.getRoutingCenterY(n)):null!=l&&(l=l.clone());var d=s.length-1;if(null!=a&&0<a.length){r=e.view.transformControlPoint(e,a[0]);for(var c=n,m=s[0],u=!1,p=!1,g=(u=r,a.length),v=0;v<2;v++){var h=null!=m&&m.x==u.x,f=null!=m&&m.y==u.y,b=null!=c&&u.y>=c.y&&u.y<=c.y+c.height;c=null!=c&&u.x>=c.x&&u.x<=c.x+c.width,u=f||null==m&&b,p=h||null==m&&c;if(null!=m&&!f&&!h&&(b||c)){o=!b;break}if(p||u){o=u,1==v&&(o=0==a.length%2?u:p);break}c=t,m=s[d],u=e.view.transformControlPoint(e,a[g-1])}for(o&&(null!=s[0]&&s[0].y!=r.y||null==s[0]&&null!=n&&(r.y<n.y||r.y>n.y+n.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[0]&&s[0].x!=r.x||null==s[0]&&null!=n&&(r.x<n.x||r.x>n.x+n.width))&&i.push(new mxPoint(r.x,l.y)),o?l.y=r.y:l.x=r.x,v=0;v<a.length;v++)o=!o,r=e.view.transformControlPoint(e,a[v]),o?l.y=r.y:l.x=r.x,i.push(l.clone())}else r=l,o=!0;if(null==(l=s[d])&&null!=t&&(l=new mxPoint(e.view.getRoutingCenterX(t),e.view.getRoutingCenterY(t))),o&&(null!=s[d]&&s[d].y!=r.y||null==s[d]&&null!=t&&(r.y<t.y||r.y>t.y+t.height))?i.push(new mxPoint(l.x,r.y)):!o&&(null!=s[d]&&s[d].x!=r.x||null==s[d]&&null!=t&&(r.x<t.x||r.x>t.x+t.width))&&i.push(new mxPoint(r.x,l.y)),null==s[0]&&null!=n)for(;1<i.length&&mxUtils.contains(n,i[1].x,i[1].y);)i=i.splice(1,1);if(null==s[d]&&null!=t)for(;1<i.length&&mxUtils.contains(t,i[i.length-1].x,i[i.length-1].y);)i=i.splice(i.length-1,1)},orthBuffer:10,dirVectors:[[-1,0],[0,-1],[1,0],[0,1],[-1,0],[0,-1],[1,0]],wayPoints1:[[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0],[0,0]],routePatterns:[[[513,2308,2081,2562],[513,1090,514,2184,2114,2561],[513,1090,514,2564,2184,2562],[513,2308,2561,1090,514,2568,2308]],[[514,1057,513,2308,2081,2562],[514,2184,2114,2561],[514,2184,2562,1057,513,2564,2184],[514,1057,513,2568,2308,2561]],[[1090,514,1057,513,2308,2081,2562],[2114,2561],[1090,2562,1057,513,2564,2184],[1090,514,1057,513,2308,2561,2568]],[[2081,2562],[1057,513,1090,514,2184,2114,2561],[1057,513,1090,514,2184,2562,2564],[1057,2561,1090,514,2568,2308]]],inlineRoutePatterns:[[null,[2114,2568],null,null],[null,[514,2081,2114,2568],null,null],[null,[2114,2561],null,null],[[2081,2562],[1057,2114,2568],[2184,2562],null]],vertexSeperations:[],limits:[[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]],LEFT_MASK:32,TOP_MASK:64,RIGHT_MASK:128,BOTTOM_MASK:256,LEFT:1,TOP:2,RIGHT:4,BOTTOM:8,SIDE_MASK:480,CENTER_MASK:512,SOURCE_MASK:1024,TARGET_MASK:2048,VERTEX_MASK:3072,OrthConnector:function(e,n,t,a,i){var s=e.view.graph,o=null!=n&&s.getModel().isEdge(n.cell);s=null!=t&&s.getModel().isEdge(t.cell);if(null!=a&&0<a.length||o||s)mxEdgeStyle.SegmentConnector(e,n,t,a,i);else{var r=(a=e.absolutePoints)[0],l=a[a.length-1];a=null!=n?n.x:r.x;o=null!=n?n.y:r.y;var d=null!=n?n.width:1,c=null!=n?n.height:1,m=null!=t?t.x:l.x,u=null!=t?t.y:l.y,p=null!=t?t.width:1,g=null!=t?t.height:1,v=(s=e.view.scale*mxEdgeStyle.orthBuffer,[mxConstants.DIRECTION_MASK_ALL,mxConstants.DIRECTION_MASK_ALL]);for(null!=n&&(v[0]=mxUtils.getPortConstraints(n,e,!0,mxConstants.DIRECTION_MASK_ALL)),null!=t&&(v[1]=mxUtils.getPortConstraints(t,e,!1,mxConstants.DIRECTION_MASK_ALL)),e=[0,0],a=[[a,o,d,c],[m,u,p,g]],d=0;d<2;d++)mxEdgeStyle.limits[d][1]=a[d][0]-s,mxEdgeStyle.limits[d][2]=a[d][1]-s,mxEdgeStyle.limits[d][4]=a[d][0]+a[d][2]+s,mxEdgeStyle.limits[d][8]=a[d][1]+a[d][3]+s;for(d=a[0][0]+a[0][2]/2-(a[1][0]+a[1][2]/2),c=a[0][1]+a[0][3]/2-(a[1][1]+a[1][3]/2),d<(o=0)?o=c<0?2:1:c<=0&&(o=3,0==d&&(o=2)),(c=null)!=n&&(c=r),n=[[.5,.5],[.5,.5]],d=0;d<2;d++)null!=c&&(n[d][0]=(c.x-a[d][0])/a[d][2],n[d][0]<.01?e[d]=mxConstants.DIRECTION_MASK_WEST:.99<n[d][0]&&(e[d]=mxConstants.DIRECTION_MASK_EAST),n[d][1]=(c.y-a[d][1])/a[d][3],n[d][1]<.01?e[d]=mxConstants.DIRECTION_MASK_NORTH:.99<n[d][1]&&(e[d]=mxConstants.DIRECTION_MASK_SOUTH)),(c=null)!=t&&(c=l);for(d=a[0][1]-(a[1][1]+a[1][3]),c=a[0][0]-(a[1][0]+a[1][2]),m=a[1][1]-(a[0][1]+a[0][3]),u=a[1][0]-(a[0][0]+a[0][2]),mxEdgeStyle.vertexSeperations[1]=Math.max(c-2*s,0),mxEdgeStyle.vertexSeperations[2]=Math.max(d-2*s,0),mxEdgeStyle.vertexSeperations[4]=Math.max(m-2*s,0),mxEdgeStyle.vertexSeperations[3]=Math.max(u-2*s,0),t=[],l=[],(r=[])[0]=u<=c?mxConstants.DIRECTION_MASK_WEST:mxConstants.DIRECTION_MASK_EAST,l[0]=m<=d?mxConstants.DIRECTION_MASK_NORTH:mxConstants.DIRECTION_MASK_SOUTH,r[1]=mxUtils.reversePortConstraints(r[0]),l[1]=mxUtils.reversePortConstraints(l[0]),c=u<=c?c:u,m=m<=d?d:m,p=!(u=[[0,0],[0,0]]),d=0;d<2;d++)0==e[d]&&(0==(r[d]&v[d])&&(r[d]=mxUtils.reversePortConstraints(r[d])),0==(l[d]&v[d])&&(l[d]=mxUtils.reversePortConstraints(l[d])),u[d][0]=l[d],u[d][1]=r[d]);for(2*s<m&&2*s<c&&(0<(r[0]&v[0])&&0<(l[1]&v[1])?(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=l[1],u[1][1]=r[1],p=!0):0<(l[0]&v[0])&&0<(r[1]&v[1])&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=r[1],u[1][1]=l[1],p=!0)),2*s<m&&!p&&(u[0][0]=l[0],u[0][1]=r[0],u[1][0]=l[1],u[1][1]=r[1],p=!0),2*s<c&&!p&&(u[0][0]=r[0],u[0][1]=l[0],u[1][0]=r[1],u[1][1]=l[1]),d=0;d<2;d++)0==e[d]&&(0==(u[d][0]&v[d])&&(u[d][0]=u[d][1]),t[d]=u[d][0]&v[d],t[d]|=(u[d][1]&v[d])<<8,t[d]|=(u[1-d][d]&v[d])<<16,t[d]|=(u[1-d][1-d]&v[d])<<24,0==(15&t[d])&&(t[d]<<=8),0==(3840&t[d])&&(t[d]=15&t[d]|t[d]>>8),0==(983040&t[d])&&(t[d]=65535&t[d]|(251658240&t[d])>>8),e[d]=15&t[d],v[d]==mxConstants.DIRECTION_MASK_WEST||v[d]==mxConstants.DIRECTION_MASK_NORTH||v[d]==mxConstants.DIRECTION_MASK_EAST||v[d]==mxConstants.DIRECTION_MASK_SOUTH)&&(e[d]=v[d]);switch(d=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0],v=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(d-=o)<1&&(d+=4),(v-=o)<1&&(v+=4),v=mxEdgeStyle.routePatterns[d-1][v-1],mxEdgeStyle.wayPoints1[0][0]=a[0][0],mxEdgeStyle.wayPoints1[0][1]=a[0][1],e[0]){case mxConstants.DIRECTION_MASK_WEST:mxEdgeStyle.wayPoints1[0][0]-=s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_SOUTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]+=a[0][3]+s;break;case mxConstants.DIRECTION_MASK_EAST:mxEdgeStyle.wayPoints1[0][0]+=a[0][2]+s,mxEdgeStyle.wayPoints1[0][1]+=n[0][1]*a[0][3];break;case mxConstants.DIRECTION_MASK_NORTH:mxEdgeStyle.wayPoints1[0][0]+=n[0][0]*a[0][2],mxEdgeStyle.wayPoints1[0][1]-=s}for(r=t=(s=0)<(e[0]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1,d=l=0;d<v.length;d++){g=(l=15&v[d])==mxConstants.DIRECTION_MASK_EAST?3:l,4<(g+=o)&&(g-=4),c=mxEdgeStyle.dirVectors[g-1],(l=0<g%2?0:1)!=t&&(s++,mxEdgeStyle.wayPoints1[s][0]=mxEdgeStyle.wayPoints1[s-1][0],mxEdgeStyle.wayPoints1[s][1]=mxEdgeStyle.wayPoints1[s-1][1]);var h=0<(v[d]&mxEdgeStyle.TARGET_MASK);p=0<(v[d]&mxEdgeStyle.SOURCE_MASK);15<(m=(m=(v[d]&mxEdgeStyle.SIDE_MASK)>>5)<<o)&&(m>>=4),u=0<(v[d]&mxEdgeStyle.CENTER_MASK),(p||h)&&m<9?(g=0,p=p?0:1,g=u&&0==l?a[p][0]+n[p][0]*a[p][2]:u?a[p][1]+n[p][1]*a[p][3]:mxEdgeStyle.limits[p][m],0==l?0<(m=(g-mxEdgeStyle.wayPoints1[s][0])*c[0])&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*m):0<(m=(g-mxEdgeStyle.wayPoints1[s][1])*c[1])&&(mxEdgeStyle.wayPoints1[s][1]+=c[1]*m)):u&&(mxEdgeStyle.wayPoints1[s][0]+=c[0]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2),mxEdgeStyle.wayPoints1[s][1]+=c[1]*Math.abs(mxEdgeStyle.vertexSeperations[g]/2)),0<s&&mxEdgeStyle.wayPoints1[s][l]==mxEdgeStyle.wayPoints1[s-1][l]?s--:t=l}for(d=0;d<=s&&(d!=s||((0<(e[1]&(mxConstants.DIRECTION_MASK_EAST|mxConstants.DIRECTION_MASK_WEST))?0:1)==r?0:1)==(s+1)%2);d++)i.push(new mxPoint(mxEdgeStyle.wayPoints1[d][0],mxEdgeStyle.wayPoints1[d][1]))}},getRoutePattern:function(e,n,t,a){var i=e[0]==mxConstants.DIRECTION_MASK_EAST?3:e[0];return e=e[1]==mxConstants.DIRECTION_MASK_EAST?3:e[1],(i-=n)<1&&(i+=4),(e-=n)<1&&(e+=4),n=routePatterns[i-1][e-1],0!=t&&0!=a||null!=inlineRoutePatterns[i-1][e-1]&&(n=inlineRoutePatterns[i-1][e-1]),n}},mxStyleRegistry={values:[],putValue:function(e,n){mxStyleRegistry.values[e]=n},getValue:function(e){return mxStyleRegistry.values[e]},getName:function(e){for(var n in mxStyleRegistry.values)if(mxStyleRegistry.values[n]==e)return n;return null}};function mxGraphView(e){this.graph=e,this.translate=new mxPoint,this.graphBounds=new mxRectangle,this.states=new mxDictionary}function mxCurrentRootChange(e,n){if(this.view=e,this.previous=this.root=n,this.isUp=null==n,!this.isUp)for(var t=this.view.currentRoot,a=this.view.graph.getModel();null!=t;){if(t==n){this.isUp=!0;break}t=a.getParent(t)}}function mxGraph(e,n,t,a){this.mouseListeners=null,this.renderHint=t,this.dialect=mxClient.IS_SVG?mxConstants.DIALECT_SVG:t==mxConstants.RENDERING_HINT_EXACT&&mxClient.IS_VML?mxConstants.DIALECT_VML:t==mxConstants.RENDERING_HINT_FASTEST?mxConstants.DIALECT_STRICTHTML:t==mxConstants.RENDERING_HINT_FASTER?mxConstants.DIALECT_PREFERHTML:mxConstants.DIALECT_MIXEDHTML,this.model=null!=n?n:new mxGraphModel,this.multiplicities=[],this.imageBundles=[],this.cellRenderer=this.createCellRenderer(),this.setSelectionModel(this.createSelectionModel()),this.setStylesheet(null!=a?a:this.createStylesheet()),this.view=this.createGraphView(),this.graphModelChangeListener=mxUtils.bind(this,function(e,n){this.graphModelChanged(n.getProperty("edit").changes)}),this.model.addListener(mxEvent.CHANGE,this.graphModelChangeListener),this.createHandlers(),null!=e&&this.init(e),this.view.revalidate()}function mxCellOverlay(e,n,t,a,i,s){this.image=e,this.tooltip=n,this.align=null!=t?t:this.align,this.verticalAlign=null!=a?a:this.verticalAlign,this.offset=null!=i?i:new mxPoint,this.cursor=null!=s?s:"help"}function mxOutline(e,n){this.source=e,null!=n&&this.init(n)}function mxMultiplicity(e,n,t,a,i,s,o,r,l,d){this.source=e,this.type=n,this.attr=t,this.value=a,this.min=null!=i?i:0,this.max=null!=s?s:"n",this.validNeighbors=o,this.countError=mxResources.get(r)||r,this.typeError=mxResources.get(l)||l,this.validNeighborsAllowed=null==d||d}function mxLayoutManager(e){this.undoHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.beforeUndo(n.getProperty("edit"))}),this.moveHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsMoved(n.getProperty("cells"),n.getProperty("event"))}),this.setGraph(e)}function mxSpaceManager(e,n,t,a){this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.foldHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.shiftRightwards=null==n||n,this.shiftDownwards=null==t||t,this.extendParents=null==a||a,this.setGraph(e)}function mxSwimlaneManager(e,n,t,a){this.horizontal=null==n||n,this.addEnabled=null==t||t,this.resizeEnabled=null==a||a,this.addHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isAddEnabled()&&this.cellsAdded(n.getProperty("cells"))}),this.resizeHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.isResizeEnabled()&&this.cellsResized(n.getProperty("cells"))}),this.setGraph(e)}function mxTemporaryCellStates(e,n,t){if(this.view=e,n=null!=n?n:1,this.oldBounds=e.getGraphBounds(),this.oldStates=e.getStates(),this.oldScale=e.getScale(),e.setStates(new mxDictionary),e.setScale(n),null!=t){n=e.createState(new mxCell);for(var a=0;a<t.length;a++)e.validateBounds(n,t[a]);var i=null;for(a=0;a<t.length;a++){var s=e.validatePoints(n,t[a]);null==i?i=s:i.add(s)}null==i&&(i=new mxRectangle),e.setGraphBounds(i)}}function mxCellStatePreview(e){this.graph=e,this.deltas={}}function mxConnectionConstraint(e,n){this.point=e,this.perimeter=null==n||n}function mxGraphHandler(e){this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.updatePreviewShape()}),this.graph.addListener(mxEvent.PAN,this.panHandler)}function mxPanningHandler(e,n){null!=e&&(this.graph=e,this.factoryMethod=n,this.graph.addMouseListener(this),this.init())}function mxCellMarker(e,n,t,a){mxEventSource.call(this),null!=e&&(this.graph=e,this.validColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.invalidColor=null!=n?t:mxConstants.DEFAULT_INVALID_COLOR,this.hotspot=null!=a?a:mxConstants.DEFAULT_HOTSPOT,this.highlight=new mxCellHighlight(e))}function mxSelectionCellsHandler(e){mxEventSource.call(this),this.graph=e,this.handlers=new mxDictionary,this.graph.addMouseListener(this),this.refreshHandler=mxUtils.bind(this,function(e,n){this.isEnabled()&&this.refresh()}),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE,this.refreshHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.refreshHandler),this.graph.getView().addListener(mxEvent.DOWN,this.refreshHandler),this.graph.getView().addListener(mxEvent.UP,this.refreshHandler)}function mxConnectionHandler(e,n){mxEventSource.call(this),null!=e&&(this.graph=e,this.factoryMethod=n,this.init())}function mxConstraintHandler(e){this.graph=e}function mxRubberband(e){null!=e&&(this.graph=e,this.graph.addMouseListener(this),this.panHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.addListener(mxEvent.PAN,this.panHandler),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxVertexHandler(e){null!=e&&(this.state=e,this.init())}function mxEdgeHandler(e){null!=e&&(this.state=e,this.init())}function mxElbowEdgeHandler(e){mxEdgeHandler.call(this,e)}function mxEdgeSegmentHandler(e){mxEdgeHandler.call(this,e)}function mxKeyHandler(e,n){null!=e&&(this.graph=e,this.target=n||document.documentElement,this.normalKeys=[],this.shiftKeys=[],this.controlKeys=[],this.controlShiftKeys=[],mxEvent.addListener(this.target,"keydown",mxUtils.bind(this,function(e){this.keyDown(e)})),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}function mxTooltipHandler(e,n){null!=e&&(this.graph=e,this.delay=n||500,this.graph.addMouseListener(this))}function mxCellTracker(e,n,t){mxCellMarker.call(this,e,n),this.graph.addMouseListener(this),null!=t&&(this.getCell=t),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()}))}function mxCellHighlight(e,n,t,a){null!=e&&(this.graph=e,this.highlightColor=null!=n?n:mxConstants.DEFAULT_VALID_COLOR,this.strokeWidth=null!=t?t:mxConstants.HIGHLIGHT_STROKEWIDTH,this.dashed=null!=a&&a,this.repaintHandler=mxUtils.bind(this,function(){this.repaint()}),this.graph.getView().addListener(mxEvent.SCALE,this.repaintHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.repaintHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.repaintHandler),this.graph.getModel().addListener(mxEvent.CHANGE,this.repaintHandler),this.resetHandler=mxUtils.bind(this,function(){this.hide()}),this.graph.getView().addListener(mxEvent.DOWN,this.resetHandler),this.graph.getView().addListener(mxEvent.UP,this.resetHandler))}function mxDefaultKeyHandler(n){if(null!=n){this.editor=n,this.handler=new mxKeyHandler(n.graph);var t=this.handler.escape;this.handler.escape=function(e){t.apply(this,arguments),n.hideProperties(),n.fireEvent(new mxEventObject(mxEvent.ESCAPE,"event",e))}}}function mxDefaultPopupMenu(e){this.config=e}function mxDefaultToolbar(e,n){this.editor=n,null!=e&&null!=n&&this.init(e)}function mxEditor(e){this.actions=[],this.addActions(),null!=document.body&&(this.cycleAttributeValues=[],this.popupHandler=new mxDefaultPopupMenu,this.undoManager=new mxUndoManager,this.graph=this.createGraph(),this.toolbar=this.createToolbar(),this.keyHandler=new mxDefaultKeyHandler(this),this.configure(e),this.graph.swimlaneIndicatorColorAttribute=this.cycleAttributeName,!mxClient.IS_LOCAL&&null!=this.urlInit&&(this.session=this.createSession()),null!=this.onInit&&this.onInit(),mxClient.IS_IE&&mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})))}mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ELBOW,mxEdgeStyle.ElbowConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ENTITY_RELATION,mxEdgeStyle.EntityRelation),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_LOOP,mxEdgeStyle.Loop),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SIDETOSIDE,mxEdgeStyle.SideToSide),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_TOPTOBOTTOM,mxEdgeStyle.TopToBottom),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_ORTHOGONAL,mxEdgeStyle.OrthConnector),mxStyleRegistry.putValue(mxConstants.EDGESTYLE_SEGMENT,mxEdgeStyle.SegmentConnector),mxStyleRegistry.putValue(mxConstants.PERIMETER_ELLIPSE,mxPerimeter.EllipsePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RECTANGLE,mxPerimeter.RectanglePerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_RHOMBUS,mxPerimeter.RhombusPerimeter),mxStyleRegistry.putValue(mxConstants.PERIMETER_TRIANGLE,mxPerimeter.TrianglePerimeter),mxGraphView.prototype=new mxEventSource,mxGraphView.prototype.constructor=mxGraphView,mxGraphView.prototype.EMPTY_POINT=new mxPoint,mxGraphView.prototype.doneResource="none"!=mxClient.language?"done":"",mxGraphView.prototype.updatingDocumentResource="none"!=mxClient.language?"updatingDocument":"",mxGraphView.prototype.allowEval=!1,mxGraphView.prototype.captureDocumentGesture=!0,mxGraphView.prototype.optimizeVmlReflows=!0,mxGraphView.prototype.rendering=!0,mxGraphView.prototype.graph=null,mxGraphView.prototype.currentRoot=null,mxGraphView.prototype.graphBounds=null,mxGraphView.prototype.scale=1,mxGraphView.prototype.translate=null,mxGraphView.prototype.updateStyle=!1,mxGraphView.prototype.getGraphBounds=function(){return this.graphBounds},mxGraphView.prototype.setGraphBounds=function(e){this.graphBounds=e},mxGraphView.prototype.getBounds=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.getState(e[a]);null!=i&&(null==n?n=new mxRectangle(i.x,i.y,i.width,i.height):n.add(i))}return n},mxGraphView.prototype.setCurrentRoot=function(e){if(this.currentRoot!=e){var n=new mxCurrentRootChange(this,e);n.execute();var t=new mxUndoableEdit(this,!1);t.add(n),this.fireEvent(new mxEventObject(mxEvent.UNDO,"edit",t)),this.graph.sizeDidChange()}return e},mxGraphView.prototype.scaleAndTranslate=function(e,n,t){var a=this.scale,i=new mxPoint(this.translate.x,this.translate.y);this.scale==e&&this.translate.x==n&&this.translate.y==t||(this.scale=e,this.translate.x=n,this.translate.y=t,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE_AND_TRANSLATE,"scale",e,"previousScale",a,"translate",this.translate,"previousTranslate",i))},mxGraphView.prototype.getScale=function(){return this.scale},mxGraphView.prototype.setScale=function(e){var n=this.scale;this.scale!=e&&(this.scale=e,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.SCALE,"scale",e,"previousScale",n))},mxGraphView.prototype.getTranslate=function(){return this.translate},mxGraphView.prototype.setTranslate=function(e,n){var t=new mxPoint(this.translate.x,this.translate.y);this.translate.x==e&&this.translate.y==n||(this.translate.x=e,this.translate.y=n,this.isEventsEnabled()&&(this.revalidate(),this.graph.sizeDidChange())),this.fireEvent(new mxEventObject(mxEvent.TRANSLATE,"translate",this.translate,"previousTranslate",t))},mxGraphView.prototype.refresh=function(){null!=this.currentRoot&&this.clear(),this.revalidate()},mxGraphView.prototype.revalidate=function(){this.invalidate(),this.validate()},mxGraphView.prototype.clear=function(e,n,t){var a=this.graph.getModel();if(e=e||a.getRoot(),n=null!=n&&n,t=null==t||t,this.removeState(e),t&&(n||e!=this.currentRoot)){t=a.getChildCount(e);for(var i=0;i<t;i++)this.clear(a.getChildAt(e,i),n)}else this.invalidate(e)},mxGraphView.prototype.invalidate=function(e,n,t,a){var i=this.graph.getModel();if(e=e||i.getRoot(),n=null==n||n,t=null==t||t,a=null!=a&&a,null!=(o=this.getState(e))&&(o.invalid=!0,a&&(o.orderChanged=!0)),n)for(var s=i.getChildCount(e),o=0;o<s;o++){var r=i.getChildAt(e,o);this.invalidate(r,n,t,a)}if(t)for(a=i.getEdgeCount(e),o=0;o<a;o++)this.invalidate(i.getEdgeAt(e,o),n,t)},mxGraphView.prototype.validate=function(e){var n=mxLog.enter("mxGraphView.validate");window.status=mxResources.get(this.updatingDocumentResource)||this.updatingDocumentResource;var t=null;if(this.optimizeVmlReflows&&null!=this.canvas&&null==this.textDiv&&(8==document.documentMode||mxClient.IS_QUIRKS)){t=this.canvas.style.display,this.canvas.style.display="none";var a=document.createElement("div");a.style.position="absolute",a.style.whiteSpace="nowrap",a.style.visibility="hidden",a.style.display=mxClient.IS_QUIRKS?"inline":"inline-block",a.style.zoom="1",document.body.appendChild(a),this.textDiv=a}e=e||(null!=this.currentRoot?this.currentRoot:this.graph.getModel().getRoot()),this.validateBounds(null,e),null==(e=this.validatePoints(null,e))&&(e=new mxRectangle),this.setGraphBounds(e),this.validateBackground(),null!=t&&(this.canvas.style.display=t,document.body.removeChild(this.textDiv),this.textDiv=null),window.status=mxResources.get(this.doneResource)||this.doneResource,mxLog.leave("mxGraphView.validate",n)},mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,"white","black")},mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);this.graph.pageVisible?(n=this.getBackgroundPageBounds(),null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=this.graph.dialect,this.backgroundPageShape.init(this.backgroundPane),this.backgroundPageShape.redraw(),mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=this.scale,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw())):null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.graph.pageFormat,n=this.scale*this.graph.pageScale;return new mxRectangle(this.scale*this.translate.x,this.scale*this.translate.y,e.width*n,e.height*n)},mxGraphView.prototype.redrawBackgroundImage=function(e,n){e.scale=this.scale,e.bounds.x=this.scale*this.translate.x,e.bounds.y=this.scale*this.translate.y,e.bounds.width=this.scale*n.width,e.bounds.height=this.scale*n.height,e.redraw()},mxGraphView.prototype.validateBounds=function(e,n){var t=this.graph.getModel(),a=this.getState(n,!0);if(null!=a&&a.invalid){if(this.graph.isCellVisible(n)){if(n!=this.currentRoot&&null!=e)if(a.absoluteOffset.x=0,a.absoluteOffset.y=0,a.origin.x=e.origin.x,a.origin.y=e.origin.y,null!=(s=this.graph.getCellGeometry(n))){if(!t.isEdge(n)){var i=s.offset||this.EMPTY_POINT;s.relative?(a.origin.x+=s.x*e.width/this.scale+i.x,a.origin.y+=s.y*e.height/this.scale+i.y):(a.absoluteOffset.x=this.scale*i.x,a.absoluteOffset.y=this.scale*i.y,a.origin.x+=s.x,a.origin.y+=s.y)}if(a.x=this.scale*(this.translate.x+a.origin.x),a.y=this.scale*(this.translate.y+a.origin.y),a.width=this.scale*s.width,a.height=this.scale*s.height,t.isVertex(n)){if(s.relative&&0!=(i=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"))){var s=Math.cos(i),o=(i=Math.sin(i),new mxPoint(a.getCenterX(),a.getCenterY())),r=new mxPoint(e.getCenterX(),e.getCenterY());s=mxUtils.getRotatedPoint(o,s,i,r);a.x=s.x-a.width/2,a.y=s.y-a.height/2}this.updateVertexLabelOffset(a)}}}else this.removeState(n);null!=(i=this.graph.getChildOffsetForCell(n))&&(a.origin.x+=i.x,a.origin.y+=i.y)}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),i=0;i<s;i++)o=t.getChildAt(n,i),this.validateBounds(a,o)},mxGraphView.prototype.updateVertexLabelOffset=function(e){var n=mxUtils.getValue(e.style,mxConstants.STYLE_LABEL_POSITION,mxConstants.ALIGN_CENTER);n==mxConstants.ALIGN_LEFT?e.absoluteOffset.x-=e.width:n==mxConstants.ALIGN_RIGHT&&(e.absoluteOffset.x+=e.width),(n=mxUtils.getValue(e.style,mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.ALIGN_MIDDLE))==mxConstants.ALIGN_TOP?e.absoluteOffset.y-=e.height:n==mxConstants.ALIGN_BOTTOM&&(e.absoluteOffset.y+=e.height)},mxGraphView.prototype.validatePoints=function(e,n){var t=this.graph.getModel(),a=this.getState(n),i=null;if(null!=a){if(a.invalid){var s=this.graph.getCellGeometry(n);if(null!=s&&t.isEdge(n)){var o=this.getState(this.getVisibleTerminal(n,!0));if(a.setVisibleTerminalState(o,!0),null!=o&&t.isEdge(o.cell)&&!t.isAncestor(o.cell,n)){var r=this.getState(t.getParent(o.cell));this.validatePoints(r,o.cell)}var l=this.getState(this.getVisibleTerminal(n,!1));a.setVisibleTerminalState(l,!1),null!=l&&t.isEdge(l.cell)&&!t.isAncestor(l.cell,n)&&(r=this.getState(t.getParent(l.cell)),this.validatePoints(r,l.cell)),this.updateFixedTerminalPoints(a,o,l),this.updatePoints(a,s.points,o,l),this.updateFloatingTerminalPoints(a,o,l),this.updateEdgeBounds(a),this.updateEdgeLabelOffset(a)}else null!=s&&s.relative&&null!=e&&t.isEdge(e.cell)&&(null!=(s=this.getPoint(e,s))&&(a.x=s.x,a.y=s.y,s.x=s.x/this.scale-this.translate.x,s.y=s.y/this.scale-this.translate.y,a.origin=s,this.childMoved(e,a)));a.invalid=!1,n!=this.currentRoot&&this.graph.cellRenderer.redraw(a,!1,this.isRendering())}(t.isEdge(n)||t.isVertex(n))&&(null!=a.shape&&null!=a.shape.boundingBox&&(i=a.shape.boundingBox.clone()),null!=a.text&&!this.graph.isLabelClipped(a.cell)&&null!=a.text.boundingBox&&(null!=i?i.add(a.text.boundingBox):i=a.text.boundingBox.clone()))}if(null!=a&&(!this.graph.isCellCollapsed(n)||n==this.currentRoot))for(s=t.getChildCount(n),o=0;o<s;o++)r=t.getChildAt(n,o),null!=(r=this.validatePoints(a,r))&&(null==i?i=r:i.add(r));return i},mxGraphView.prototype.childMoved=function(e,n){var t=n.cell;if(!this.graph.isCellCollapsed(t)||t==this.currentRoot)for(var a=this.graph.getModel(),i=a.getChildCount(t),s=0;s<i;s++)this.validateBounds(n,a.getChildAt(t,s))},mxGraphView.prototype.updateFixedTerminalPoints=function(e,n,t){this.updateFixedTerminalPoint(e,n,!0,this.graph.getConnectionConstraint(e,n,!0)),this.updateFixedTerminalPoint(e,t,!1,this.graph.getConnectionConstraint(e,t,!1))},mxGraphView.prototype.updateFixedTerminalPoint=function(e,n,t,a){var i=null;if(null!=a&&(i=this.graph.getConnectionPoint(n,a)),null==i&&null==n){n=this.scale,a=this.translate;var s=e.origin;null!=(i=this.graph.getCellGeometry(e.cell).getTerminalPoint(t))&&(i=new mxPoint(n*(a.x+i.x+s.x),n*(a.y+i.y+s.y)))}e.setAbsoluteTerminalPoint(i,t)},mxGraphView.prototype.updatePoints=function(e,n,t,a){if(null!=e){var i=[];i.push(e.absolutePoints[0]);var s=this.getEdgeStyle(e,n,t,a);if(null!=s)s(e,t=this.getTerminalPort(e,t,!0),a=this.getTerminalPort(e,a,!1),n,i);else if(null!=n)for(s=0;s<n.length;s++)null!=n[s]&&(a=mxUtils.clone(n[s]),i.push(this.transformControlPoint(e,a)));n=e.absolutePoints,i.push(n[n.length-1]),e.absolutePoints=i}},mxGraphView.prototype.transformControlPoint=function(e,n){var t=e.origin;return new mxPoint(this.scale*(n.x+this.translate.x+t.x),this.scale*(n.y+this.translate.y+t.y))},mxGraphView.prototype.getEdgeStyle=function(e,n,t,a){return"string"==typeof(e=null!=t&&t==a?mxUtils.getValue(e.style,mxConstants.STYLE_LOOP,this.graph.defaultLoopStyle):mxUtils.getValue(e.style,mxConstants.STYLE_NOEDGESTYLE,!1)?null:e.style[mxConstants.STYLE_EDGE])&&(null==(n=mxStyleRegistry.getValue(e))&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n),"function"==typeof e?e:null},mxGraphView.prototype.updateFloatingTerminalPoints=function(e,n,t){var a=e.absolutePoints,i=a[0];null==a[a.length-1]&&null!=t&&this.updateFloatingTerminalPoint(e,t,n,!1),null==i&&null!=n&&this.updateFloatingTerminalPoint(e,n,t,!0)},mxGraphView.prototype.updateFloatingTerminalPoint=function(e,n,t,a){n=this.getTerminalPort(e,n,a);var i=this.getNextPoint(e,t,a),s=this.graph.isOrthogonal(e);t=mxUtils.toRadians(Number(n.style[mxConstants.STYLE_ROTATION]||"0"));var o=new mxPoint(n.getCenterX(),n.getCenterY());if(0!=t){var r=Math.cos(-t),l=Math.sin(-t);i=mxUtils.getRotatedPoint(i,r,l,o)}r=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0),r+=parseFloat(e.style[a?mxConstants.STYLE_SOURCE_PERIMETER_SPACING:mxConstants.STYLE_TARGET_PERIMETER_SPACING]||0),n=this.getPerimeterPoint(n,i,0==t&&s,r),0!=t&&(r=Math.cos(t),l=Math.sin(t),n=mxUtils.getRotatedPoint(n,r,l,o)),e.setAbsoluteTerminalPoint(n,a)},mxGraphView.prototype.getTerminalPort=function(e,n,t){return null!=(e=mxUtils.getValue(e.style,t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT))&&(null!=(e=this.getState(this.graph.getModel().getCell(e)))&&(n=e)),n},mxGraphView.prototype.getPerimeterPoint=function(e,n,t,a){var i=null;if(null!=e){var s=this.getPerimeterFunction(e);null!=s&&null!=n&&(0<(a=this.getPerimeterBounds(e,a)).width||0<a.height)&&(i=s(a,e,n,t)),null==i&&(i=this.getPoint(e))}return i},mxGraphView.prototype.getRoutingCenterX=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_X])||0;return e.getCenterX()+n*e.width},mxGraphView.prototype.getRoutingCenterY=function(e){var n=null!=e.style&&parseFloat(e.style[mxConstants.STYLE_ROUTING_CENTER_Y])||0;return e.getCenterY()+n*e.height},mxGraphView.prototype.getPerimeterBounds=function(e,n){return n=null!=n?n:0,null!=e&&(n+=parseFloat(e.style[mxConstants.STYLE_PERIMETER_SPACING]||0)),e.getPerimeterBounds(n*this.scale)},mxGraphView.prototype.getPerimeterFunction=function(e){if("string"==typeof(e=e.style[mxConstants.STYLE_PERIMETER])){var n=mxStyleRegistry.getValue(e);null==n&&this.isAllowEval()&&(n=mxUtils.eval(e)),e=n}return"function"==typeof e?e:null},mxGraphView.prototype.getNextPoint=function(e,n,t){var a=null;return null!=(e=e.absolutePoints)&&(t||2<e.length||null==n)&&(a=e.length,a=e[t?Math.min(1,a-1):Math.max(0,a-2)]),null==a&&null!=n&&(a=new mxPoint(n.getCenterX(),n.getCenterY())),a},mxGraphView.prototype.getVisibleTerminal=function(e,n){for(var t=this.graph.getModel(),a=t.getTerminal(e,n),i=a;null!=a&&a!=this.currentRoot;)this.graph.isCellVisible(i)&&!this.graph.isCellCollapsed(a)||(i=a),a=t.getParent(a);return t.getParent(i)==t.getRoot()&&(i=null),i},mxGraphView.prototype.updateEdgeBounds=function(e){var n=e.absolutePoints;if(e.length=0,null!=n&&0<n.length){var t=n[0],a=n[n.length-1];if(null==t||null==a)e.cell!=this.currentRoot&&this.clear(e.cell,!0);else{if(t.x!=a.x||t.y!=a.y){var i=a.x-t.x,s=a.y-t.y;e.terminalDistance=Math.sqrt(i*i+s*s)}else e.terminalDistance=0;a=0;var o=[];if(null!=(s=t)){t=s.x;for(var r=s.y,l=t,d=r,c=1;c<n.length;c++){var m=n[c];null!=m&&(i=s.x-m.x,s=s.y-m.y,i=Math.sqrt(i*i+s*s),o.push(i),a+=i,s=m,t=Math.min(s.x,t),r=Math.min(s.y,r),l=Math.max(s.x,l),d=Math.max(s.y,d))}e.length=a,e.segments=o,e.x=t,e.y=r,e.width=Math.max(1,l-t),e.height=Math.max(1,d-r)}}}},mxGraphView.prototype.getPoint=function(e,n){var t=e.getCenterX(),a=e.getCenterY();if(null==e.segments||null!=n&&!n.relative)null!=n&&(null!=(d=n.offset)&&(t+=d.x,a+=d.y));else{for(var i=e.absolutePoints.length,s=(.5+(null!=n?n.x/2:0))*e.length,o=e.segments[0],r=0,l=1;r+o<s&&l<i-1;)r+=o,o=e.segments[l++];if(i=0==o?0:(s-r)/o,s=e.absolutePoints[l-1],l=e.absolutePoints[l],null!=s&&null!=l){if(r=t=a=0,null!=n){a=n.y;var d=n.offset;null!=d&&(t=d.x,r=d.y)}d=l.x-s.x,l=l.y-s.y,t=s.x+d*i+((0==o?0:l/o)*a+t)*this.scale,a=s.y+l*i-((0==o?0:d/o)*a-r)*this.scale}}return new mxPoint(t,a)},mxGraphView.prototype.getRelativePoint=function(e,n,t){if(null!=(i=this.graph.getModel().getGeometry(e.cell))){var a=e.absolutePoints.length;if(i.relative&&1<a){for(var i=e.length,s=e.segments,o=e.absolutePoints[0],r=e.absolutePoints[1],l=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t),d=0,c=0,m=0,u=2;u<a;u++)c+=s[u-2],r=e.absolutePoints[u],(o=mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t))<=l&&(l=o,d=u-1,m=c),o=r;return a=s[d],o=e.absolutePoints[d],l=(r=e.absolutePoints[d+1]).x,s=r.y,s=(l=(e=o.x-l)-(l=n-l))*e+(s=(d=o.y-s)-(s=t-s))*d,a<(e=Math.sqrt(s<=0?0:s*s/(e*e+d*d)))&&(e=a),a=Math.sqrt(mxUtils.ptSegDistSq(o.x,o.y,r.x,r.y,n,t)),-1==mxUtils.relativeCcw(o.x,o.y,r.x,r.y,n,t)&&(a=-a),new mxPoint((i/2-m-e)/i*-2,a/this.scale)}}return new mxPoint},mxGraphView.prototype.updateEdgeLabelOffset=function(e){var n=e.absolutePoints;if(e.absoluteOffset.x=e.getCenterX(),e.absoluteOffset.y=e.getCenterY(),null!=n&&0<n.length&&null!=e.segments)if((i=this.graph.getCellGeometry(e.cell)).relative){null!=(t=this.getPoint(e,i))&&(e.absoluteOffset=t)}else{var t=n[0],a=n[n.length-1];if(null!=t&&null!=a){n=a.x-t.x;var i,s=a.y-t.y,o=a=0;null!=(i=i.offset)&&(a=i.x,o=i.y),i=t.y+s/2+o*this.scale,e.absoluteOffset.x=t.x+n/2+a*this.scale,e.absoluteOffset.y=i}}},mxGraphView.prototype.getState=function(e,n){n=n||!1;var t=null;return null!=e&&(t=this.states.get(e),this.graph.isCellVisible(e)&&(null==t&&n&&this.graph.isCellVisible(e)?(t=this.createState(e),this.states.put(e,t)):n&&null!=t&&this.updateStyle&&(t.style=this.graph.getCellStyle(e)))),t},mxGraphView.prototype.isRendering=function(){return this.rendering},mxGraphView.prototype.setRendering=function(e){this.rendering=e},mxGraphView.prototype.isAllowEval=function(){return this.allowEval},mxGraphView.prototype.setAllowEval=function(e){this.allowEval=e},mxGraphView.prototype.getStates=function(){return this.states},mxGraphView.prototype.setStates=function(e){this.states=e},mxGraphView.prototype.getCellStates=function(e){if(null==e)return this.states;for(var n=[],t=0;t<e.length;t++){var a=this.getState(e[t]);null!=a&&n.push(a)}return n},mxGraphView.prototype.removeState=function(e){var n=null;return null!=e&&(null!=(n=this.states.remove(e))&&(this.graph.cellRenderer.destroy(n),n.destroy())),n},mxGraphView.prototype.createState=function(e){var n=this.graph.getCellStyle(e);return e=new mxCellState(this,e,n),this.graph.cellRenderer.initialize(e,this.isRendering()),e},mxGraphView.prototype.getCanvas=function(){return this.canvas},mxGraphView.prototype.getBackgroundPane=function(){return this.backgroundPane},mxGraphView.prototype.getDrawPane=function(){return this.drawPane},mxGraphView.prototype.getOverlayPane=function(){return this.overlayPane},mxGraphView.prototype.isContainerEvent=function(e){return(e=mxEvent.getSource(e))==this.graph.container||e.parentNode==this.backgroundPane||null!=e.parentNode&&e.parentNode.parentNode==this.backgroundPane||e==this.canvas.parentNode||e==this.canvas||e==this.backgroundPane||e==this.drawPane||e==this.overlayPane},mxGraphView.prototype.isScrollEvent=function(e){var n=mxUtils.getOffset(this.graph.container);e=new mxPoint(e.clientX-n.x,e.clientY-n.y);n=this.graph.container.offsetWidth;var t=this.graph.container.clientWidth;return t<n&&e.x>t+2&&e.x<=n||(n=this.graph.container.offsetHeight,(t=this.graph.container.clientHeight)<n&&e.y>t+2&&e.y<=n)},mxGraphView.prototype.init=function(){this.installListeners();var e=this.graph;e.dialect==mxConstants.DIALECT_SVG?this.createSvg():e.dialect==mxConstants.DIALECT_VML?this.createVml():this.createHtml()},mxGraphView.prototype.installListeners=function(){var a=this.graph,i=a.container;if(null!=i){mxEvent.addGestureListeners(i,mxUtils.bind(this,function(e){mxClient.IS_TOUCH&&a.isEditing()&&a.stopEditing(!a.isInvokesStopCellEditing()),this.isContainerEvent(e)&&(!mxClient.IS_IE&&!mxClient.IS_GC&&!mxClient.IS_OP&&!mxClient.IS_SF||!this.isScrollEvent(e))&&a.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.isContainerEvent(e)&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))})),mxEvent.addListener(i,"dblclick",mxUtils.bind(this,function(e){a.dblClick(e)}));a.addMouseListener({mouseDown:function(e,n){a.panningHandler.hideMenu()},mouseMove:function(){},mouseUp:function(){}}),this.moveHandler=mxUtils.bind(this,function(e){var n,t;null!=a.tooltipHandler&&a.tooltipHandler.isHideOnHover()&&a.tooltipHandler.hide(),this.captureDocumentGesture&&a.isMouseDown&&!mxEvent.isConsumed(e)&&a.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,(n=e,t=null,mxClient.IS_TOUCH&&(t=mxEvent.getClientX(n),n=mxEvent.getClientY(n),n=mxUtils.convertPoint(i,t,n),t=a.view.getState(a.getCellAt(n.x,n.y))),t)))}),this.endHandler=mxUtils.bind(this,function(e){this.captureDocumentGesture&&a.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}),mxEvent.addGestureListeners(document,null,this.moveHandler,this.endHandler)}},mxGraphView.prototype.createHtml=function(){var e=this.graph.container;null!=e&&(this.canvas=this.createHtmlPane("100%","100%"),this.backgroundPane=this.createHtmlPane("1px","1px"),this.drawPane=this.createHtmlPane("1px","1px"),this.overlayPane=this.createHtmlPane("1px","1px"),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas),mxClient.IS_QUIRKS&&(e=mxUtils.bind(this,function(e){e=this.getGraphBounds(),this.updateHtmlCanvasSize(e.x+e.width+this.graph.border,e.y+e.height+this.graph.border)}),mxEvent.addListener(window,"resize",e)))},mxGraphView.prototype.updateHtmlCanvasSize=function(e,n){if(null!=this.graph.container){var t=this.graph.container.offsetHeight;this.canvas.style.width=this.graph.container.offsetWidth<e?e+"px":"100%",this.canvas.style.height=t<n?n+"px":"100%"}},mxGraphView.prototype.createHtmlPane=function(e,n){var t=document.createElement("DIV");return null!=e&&null!=n?(t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e,t.style.height=n):t.style.position="relative",t},mxGraphView.prototype.createVml=function(){var e=this.graph.container;if(null!=e){var n=e.offsetWidth,t=e.offsetHeight;this.canvas=this.createVmlPane(n,t),this.backgroundPane=this.createVmlPane(n,t),this.drawPane=this.createVmlPane(n,t),this.overlayPane=this.createVmlPane(n,t),this.canvas.appendChild(this.backgroundPane),this.canvas.appendChild(this.drawPane),this.canvas.appendChild(this.overlayPane),e.appendChild(this.canvas)}},mxGraphView.prototype.createVmlPane=function(e,n){var t=document.createElement(mxClient.VML_PREFIX+":group");return t.style.position="absolute",t.style.left="0px",t.style.top="0px",t.style.width=e+"px",t.style.height=n+"px",t.setAttribute("coordsize",e+","+n),t.setAttribute("coordorigin","0,0"),t},mxGraphView.prototype.createSvg=function(){var e=this.graph.container;this.canvas=document.createElementNS(mxConstants.NS_SVG,"g"),this.backgroundPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.backgroundPane),this.drawPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.drawPane),this.overlayPane=document.createElementNS(mxConstants.NS_SVG,"g"),this.canvas.appendChild(this.overlayPane);var n=document.createElementNS(mxConstants.NS_SVG,"svg");n.style.width="100%",n.style.height="100%",n.style.display="block",n.appendChild(this.canvas),null!=e&&(e.appendChild(n),"static"==mxUtils.getCurrentStyle(e).position&&(e.style.position="relative"))},mxGraphView.prototype.destroy=function(){var e=null!=this.canvas?this.canvas.ownerSVGElement:null;null==e&&(e=this.canvas),null!=e&&null!=e.parentNode&&(this.clear(this.currentRoot,!0),mxEvent.removeGestureListeners(document,null,this.moveHandler,this.endHandler),mxEvent.release(this.graph.container),e.parentNode.removeChild(e),this.overlayPane=this.drawPane=this.backgroundPane=this.canvas=this.endHandler=this.moveHandler=null)},mxCurrentRootChange.prototype.execute=function(){var e=this.view.currentRoot;this.view.currentRoot=this.previous,this.previous=e,null!=(e=this.view.graph.getTranslateForRoot(this.view.currentRoot))&&(this.view.translate=new mxPoint(-e.x,-e.y)),this.view.fireEvent(new mxEventObject(this.isUp?mxEvent.UP:mxEvent.DOWN,"root",this.view.currentRoot,"previous",this.previous)),this.isUp?(this.view.clear(this.view.currentRoot,!0),this.view.validate()):this.view.refresh(),this.isUp=!this.isUp},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/graph"),mxGraph.prototype=new mxEventSource,mxGraph.prototype.constructor=mxGraph,mxGraph.prototype.EMPTY_ARRAY=[],mxGraph.prototype.mouseListeners=null,mxGraph.prototype.isMouseDown=!1,mxGraph.prototype.model=null,mxGraph.prototype.view=null,mxGraph.prototype.stylesheet=null,mxGraph.prototype.selectionModel=null,mxGraph.prototype.cellEditor=null,mxGraph.prototype.cellRenderer=null,mxGraph.prototype.multiplicities=null,mxGraph.prototype.renderHint=null,mxGraph.prototype.dialect=null,mxGraph.prototype.gridSize=10,mxGraph.prototype.gridEnabled=!0,mxGraph.prototype.portsEnabled=!0,mxGraph.prototype.doubleTapEnabled=!0,mxGraph.prototype.doubleTapTimeout=700,mxGraph.prototype.doubleTapTolerance=25,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchY=0,mxGraph.prototype.lastTouchTime=0,mxGraph.prototype.gestureEnabled=!0,mxGraph.prototype.tolerance=4,mxGraph.prototype.defaultOverlap=.5,mxGraph.prototype.defaultParent=null,mxGraph.prototype.alternateEdgeStyle=null,mxGraph.prototype.backgroundImage=null,mxGraph.prototype.pageVisible=!1,mxGraph.prototype.pageBreaksVisible=!1,mxGraph.prototype.pageBreakColor="gray",mxGraph.prototype.pageBreakDashed=!0,mxGraph.prototype.minPageBreakDist=20,mxGraph.prototype.preferPageSize=!1,mxGraph.prototype.pageFormat=mxConstants.PAGE_FORMAT_A4_PORTRAIT,mxGraph.prototype.pageScale=1.5,mxGraph.prototype.enabled=!0,mxGraph.prototype.escapeEnabled=!0,mxGraph.prototype.invokesStopCellEditing=!0,mxGraph.prototype.enterStopsCellEditing=!1,mxGraph.prototype.useScrollbarsForPanning=!0,mxGraph.prototype.exportEnabled=!0,mxGraph.prototype.importEnabled=!0,mxGraph.prototype.cellsLocked=!1,mxGraph.prototype.cellsCloneable=!0,mxGraph.prototype.foldingEnabled=!0,mxGraph.prototype.cellsEditable=!0,mxGraph.prototype.cellsDeletable=!0,mxGraph.prototype.cellsMovable=!0,mxGraph.prototype.edgeLabelsMovable=!0,mxGraph.prototype.vertexLabelsMovable=!1,mxGraph.prototype.dropEnabled=!1,mxGraph.prototype.splitEnabled=!0,mxGraph.prototype.cellsResizable=!0,mxGraph.prototype.cellsBendable=!0,mxGraph.prototype.cellsSelectable=!0,mxGraph.prototype.cellsDisconnectable=!0,mxGraph.prototype.autoSizeCells=!1,mxGraph.prototype.autoScroll=!0,mxGraph.prototype.timerAutoScroll=!1,mxGraph.prototype.allowAutoPanning=!1,mxGraph.prototype.ignoreScrollbars=!1,mxGraph.prototype.autoExtend=!0,mxGraph.prototype.maximumGraphBounds=null,mxGraph.prototype.minimumGraphSize=null,mxGraph.prototype.minimumContainerSize=null,mxGraph.prototype.maximumContainerSize=null,mxGraph.prototype.resizeContainer=!1,mxGraph.prototype.border=0,mxGraph.prototype.ordered=!0,mxGraph.prototype.keepEdgesInForeground=!1,mxGraph.prototype.keepEdgesInBackground=!0,mxGraph.prototype.allowNegativeCoordinates=!0,mxGraph.prototype.constrainChildren=!0,mxGraph.prototype.extendParents=!0,mxGraph.prototype.extendParentsOnAdd=!0,mxGraph.prototype.collapseToPreferredSize=!0,mxGraph.prototype.zoomFactor=1.2,mxGraph.prototype.keepSelectionVisibleOnZoom=!1,mxGraph.prototype.centerZoom=!0,mxGraph.prototype.resetViewOnRootChange=!0,mxGraph.prototype.resetEdgesOnResize=!1,mxGraph.prototype.resetEdgesOnMove=!1,mxGraph.prototype.resetEdgesOnConnect=!0,mxGraph.prototype.allowLoops=!1,mxGraph.prototype.defaultLoopStyle=mxEdgeStyle.Loop,mxGraph.prototype.multigraph=!0,mxGraph.prototype.connectableEdges=!1,mxGraph.prototype.allowDanglingEdges=!0,mxGraph.prototype.cloneInvalidEdges=!1,mxGraph.prototype.disconnectOnMove=!0,mxGraph.prototype.labelsVisible=!0,mxGraph.prototype.htmlLabels=!1,mxGraph.prototype.swimlaneSelectionEnabled=!0,mxGraph.prototype.swimlaneNesting=!0,mxGraph.prototype.swimlaneIndicatorColorAttribute=mxConstants.STYLE_FILLCOLOR,mxGraph.prototype.imageBundles=null,mxGraph.prototype.minFitScale=.1,mxGraph.prototype.maxFitScale=8,mxGraph.prototype.panDx=0,mxGraph.prototype.panDy=0,mxGraph.prototype.collapsedImage=new mxImage(mxClient.imageBasePath+"/collapsed.gif",9,9),mxGraph.prototype.expandedImage=new mxImage(mxClient.imageBasePath+"/expanded.gif",9,9),mxGraph.prototype.warningImage=new mxImage("/assets/plugins/mxgraph/images/warning.gif",16,16),mxGraph.prototype.alreadyConnectedResource="none"!=mxClient.language?"alreadyConnected":"",mxGraph.prototype.containsValidationErrorsResource="none"!=mxClient.language?"containsValidationErrors":"",mxGraph.prototype.collapseExpandResource="none"!=mxClient.language?"collapse-expand":"",mxGraph.prototype.init=function(e){this.container=e,this.cellEditor=this.createCellEditor(),this.view.init(),this.sizeDidChange(),mxClient.IS_IE&&(mxEvent.addListener(window,"unload",mxUtils.bind(this,function(){this.destroy()})),mxEvent.addListener(e,"selectstart",mxUtils.bind(this,function(){return this.isEditing()}))),8==document.documentMode&&e.insertAdjacentHTML("beforeend",'<v:group style="DISPLAY: none;"></v:group>')},mxGraph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxGraph.prototype.createSelectionModel=function(){return new mxGraphSelectionModel(this)},mxGraph.prototype.createStylesheet=function(){return new mxStylesheet},mxGraph.prototype.createGraphView=function(){return new mxGraphView(this)},mxGraph.prototype.createCellRenderer=function(){return new mxCellRenderer},mxGraph.prototype.createCellEditor=function(){return new mxCellEditor(this)},mxGraph.prototype.getModel=function(){return this.model},mxGraph.prototype.getView=function(){return this.view},mxGraph.prototype.getStylesheet=function(){return this.stylesheet},mxGraph.prototype.setStylesheet=function(e){this.stylesheet=e},mxGraph.prototype.getSelectionModel=function(){return this.selectionModel},mxGraph.prototype.setSelectionModel=function(e){this.selectionModel=e},mxGraph.prototype.getSelectionCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a.constructor!=mxRootChange){var i=null;a instanceof mxChildChange&&null==a.previous?i=a.child:null!=a.cell&&a.cell instanceof mxCell&&(i=a.cell),null!=i&&mxUtils.indexOf(n,i)<0&&n.push(i)}}return this.getModel().getTopmostCells(n)},mxGraph.prototype.graphModelChanged=function(e){for(var n=0;n<e.length;n++)this.processChange(e[n]);this.removeSelectionCells(this.getRemovedCellsForChanges(e)),this.view.validate(),this.sizeDidChange()},mxGraph.prototype.getRemovedCellsForChanges=function(e){for(var n=[],t=0;t<e.length;t++){var a=e[t];if(a instanceof mxRootChange)break;a instanceof mxChildChange?null!=a.previous&&null==a.parent&&(n=n.concat(this.model.getDescendants(a.child))):a instanceof mxVisibleChange&&(n=n.concat(this.model.getDescendants(a.cell)))}return n},mxGraph.prototype.processChange=function(e){if(e instanceof mxRootChange)this.clearSelection(),this.removeStateForCell(e.previous),this.resetViewOnRootChange&&(this.view.scale=1,this.view.translate.x=0,this.view.translate.y=0),this.fireEvent(new mxEventObject(mxEvent.ROOT));else if(e instanceof mxChildChange){var n=this.model.getParent(e.child);null!=n?this.view.invalidate(e.child,!0,!1,null!=e.previous):(this.removeStateForCell(e.child),this.view.currentRoot==e.child&&this.home()),n!=e.previous&&(null!=n&&this.view.invalidate(n,!1,!1),null!=e.previous&&this.view.invalidate(e.previous,!1,!1))}else e instanceof mxTerminalChange||e instanceof mxGeometryChange?this.view.invalidate(e.cell):e instanceof mxValueChange?this.view.invalidate(e.cell,!1,!1):e instanceof mxStyleChange?(this.view.invalidate(e.cell,!0,!0,!1),this.view.removeState(e.cell)):null!=e.cell&&e.cell instanceof mxCell&&this.removeStateForCell(e.cell)},mxGraph.prototype.removeStateForCell=function(e){for(var n=this.model.getChildCount(e),t=0;t<n;t++)this.removeStateForCell(this.model.getChildAt(e,t));this.view.removeState(e)},mxGraph.prototype.addCellOverlay=function(e,n){null==e.overlays&&(e.overlays=[]),e.overlays.push(n);var t=this.view.getState(e);return null!=t&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.ADD_OVERLAY,"cell",e,"overlay",n)),n},mxGraph.prototype.getCellOverlays=function(e){return e.overlays},mxGraph.prototype.removeCellOverlay=function(e,n){if(null==n)this.removeCellOverlays(e);else{var t=mxUtils.indexOf(e.overlays,n);0<=t?(e.overlays.splice(t,1),0==e.overlays.length&&(e.overlays=null),null!=(t=this.view.getState(e))&&this.cellRenderer.redraw(t),this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n))):n=null}return n},mxGraph.prototype.removeCellOverlays=function(e){var n=e.overlays;if(null!=n){e.overlays=null;var t=this.view.getState(e);for(null!=t&&this.cellRenderer.redraw(t),t=0;t<n.length;t++)this.fireEvent(new mxEventObject(mxEvent.REMOVE_OVERLAY,"cell",e,"overlay",n[t]))}return n},mxGraph.prototype.clearCellOverlays=function(e){e=null!=e?e:this.model.getRoot(),this.removeCellOverlays(e);for(var n=this.model.getChildCount(e),t=0;t<n;t++){var a=this.model.getChildAt(e,t);this.clearCellOverlays(a)}},mxGraph.prototype.setCellWarning=function(t,e,n,a){return null!=e&&0<e.length?(e=new mxCellOverlay(n=null!=n?n:this.warningImage,"<font color=red>"+e+"</font>"),a&&e.addListener(mxEvent.CLICK,mxUtils.bind(this,function(e,n){this.isEnabled()&&this.setSelectionCell(t)})),this.addCellOverlay(t,e)):(this.removeCellOverlays(t),null)},mxGraph.prototype.startEditing=function(e){this.startEditingAtCell(null,e)},mxGraph.prototype.startEditingAtCell=function(e,n){null==e&&(null!=(e=this.getSelectionCell())&&!this.isCellEditable(e)&&(e=null)),null!=e&&(this.fireEvent(new mxEventObject(mxEvent.START_EDITING,"cell",e,"event",n)),this.cellEditor.startEditing(e,n))},mxGraph.prototype.getEditingValue=function(e,n){return this.convertValueToString(e)},mxGraph.prototype.stopEditing=function(e){this.cellEditor.stopEditing(e)},mxGraph.prototype.labelChanged=function(e,n,t){this.model.beginUpdate();try{this.cellLabelChanged(e,n,this.isAutoSizeCell(e)),this.fireEvent(new mxEventObject(mxEvent.LABEL_CHANGED,"cell",e,"value",n,"event",t))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellLabelChanged=function(e,n,t){this.model.beginUpdate();try{this.model.setValue(e,n),t&&this.cellSizeUpdated(e,!1)}finally{this.model.endUpdate()}},mxGraph.prototype.escape=function(e){this.stopEditing(!0),this.connectionHandler.reset(),this.graphHandler.reset(),e=this.getSelectionCells();for(var n=0;n<e.length;n++){var t=this.view.getState(e[n]);null!=t&&null!=t.handler&&t.handler.reset()}},mxGraph.prototype.click=function(e){var n=e.getEvent(),t=e.getCell(),a=new mxEventObject(mxEvent.CLICK,"event",n,"cell",t);e.isConsumed()&&a.consume(),this.fireEvent(a),this.isEnabled()&&!mxEvent.isConsumed(n)&&!a.isConsumed()&&(null!=t?this.selectCellForEvent(t,n):(t=null,this.isSwimlaneSelectionEnabled()&&(t=this.getSwimlaneAt(e.getGraphX(),e.getGraphY())),null!=t?this.selectCellForEvent(t,n):this.isToggleEvent(n)||this.clearSelection()))},mxGraph.prototype.dblClick=function(e,n){var t=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",n);this.fireEvent(t),this.isEnabled()&&!mxEvent.isConsumed(e)&&!t.isConsumed()&&null!=n&&this.isCellEditable(n)&&this.startEditingAtCell(n,e)},mxGraph.prototype.scrollPointToVisible=function(e,n,t,a){if(this.timerAutoScroll||!this.ignoreScrollbars&&!mxUtils.hasScrollbars(this.container))this.allowAutoPanning&&!this.panningHandler.active&&(null==this.panningManager&&(this.panningManager=this.createPanningManager()),this.panningManager.panTo(e+this.panDx,n+this.panDy));else{var i=this.container;if(a=null!=a?a:20,e>=i.scrollLeft&&n>=i.scrollTop&&e<=i.scrollLeft+i.clientWidth&&n<=i.scrollTop+i.clientHeight){var s=i.scrollLeft+i.clientWidth-e;if(s<a){if(e=i.scrollLeft,i.scrollLeft+=a-s,t&&e==i.scrollLeft){if(this.dialect==mxConstants.DIALECT_SVG){e=this.view.getDrawPane().ownerSVGElement;var o=this.container.scrollWidth+a-s}else o=Math.max(i.clientWidth,i.scrollWidth)+a-s,e=this.view.getCanvas();e.style.width=o+"px",i.scrollLeft+=a-s}}else(s=e-i.scrollLeft)<a&&(i.scrollLeft-=a-s);(s=i.scrollTop+i.clientHeight-n)<a?(e=i.scrollTop,i.scrollTop+=a-s,e==i.scrollTop&&t&&(this.dialect==mxConstants.DIALECT_SVG?(e=this.view.getDrawPane().ownerSVGElement,n=this.container.scrollHeight+a-s):(n=Math.max(i.clientHeight,i.scrollHeight)+a-s,e=this.view.getCanvas()),e.style.height=n+"px",i.scrollTop+=a-s)):(s=n-i.scrollTop)<a&&(i.scrollTop-=a-s)}}},mxGraph.prototype.createPanningManager=function(){return new mxPanningManager(this)},mxGraph.prototype.getBorderSizes=function(){function e(e){var n=0;n="thin"==e?2:"medium"==e?4:"thick"==e?6:parseInt(e);return isNaN(n)&&(n=0),n}var n=mxUtils.getCurrentStyle(this.container),t=new mxRectangle;return t.x=e(n.borderLeftWidth)+parseInt(n.paddingLeft||0),t.y=e(n.borderTopWidth)+parseInt(n.paddingTop||0),t.width=e(n.borderRightWidth)+parseInt(n.paddingRight||0),t.height=e(n.borderBottomWidth)+parseInt(n.paddingBottom||0),t},mxGraph.prototype.getPreferredPageSize=function(e,n,t){e=this.view.scale;var a=this.view.translate,i=this.pageFormat,s=e*this.pageScale;i=new mxRectangle(0,0,i.width*s,i.height*s);return n=this.pageBreaksVisible?Math.ceil(n/i.width):1,t=this.pageBreaksVisible?Math.ceil(t/i.height):1,new mxRectangle(0,0,n*i.width+2+a.x/e,t*i.height+2+a.y/e)},mxGraph.prototype.sizeDidChange=function(){var e=this.getGraphBounds();if(null!=this.container){var n=this.getBorder(),t=Math.max(0,e.x+e.width+1+n);n=Math.max(0,e.y+e.height+1+n);if(null!=this.minimumContainerSize&&(t=Math.max(t,this.minimumContainerSize.width),n=Math.max(n,this.minimumContainerSize.height)),this.resizeContainer&&this.doResizeContainer(t,n),this.preferPageSize||!mxClient.IS_IE&&this.pageVisible){var a=this.getPreferredPageSize(e,t,n);null!=a&&(t=a.width,n=a.height)}null!=this.minimumGraphSize&&(t=Math.max(t,this.minimumGraphSize.width*this.view.scale),n=Math.max(n,this.minimumGraphSize.height*this.view.scale)),t=Math.ceil(t-1),n=Math.ceil(n-1),this.dialect==mxConstants.DIALECT_SVG?((a=this.view.getDrawPane().ownerSVGElement).style.minWidth=Math.max(1,t)+"px",a.style.minHeight=Math.max(1,n)+"px",a.style.width="100%",a.style.height="100%"):mxClient.IS_QUIRKS?this.view.updateHtmlCanvasSize(Math.max(1,t),Math.max(1,n)):(this.view.canvas.style.minWidth=Math.max(1,t)+"px",this.view.canvas.style.minHeight=Math.max(1,n)+"px"),this.updatePageBreaks(this.pageBreaksVisible,t-1,n-1)}this.fireEvent(new mxEventObject(mxEvent.SIZE,"bounds",e))},mxGraph.prototype.doResizeContainer=function(e,n){if(mxClient.IS_IE)if(mxClient.IS_QUIRKS){var t=this.getBorderSizes();e+=Math.max(2,t.x+t.width+1),n+=Math.max(2,t.y+t.height+1)}else 9<=document.documentMode?(e+=3,n+=5):(e+=1,n+=1);else n+=1;null!=this.maximumContainerSize&&(e=Math.min(this.maximumContainerSize.width,e),n=Math.min(this.maximumContainerSize.height,n)),this.container.style.width=Math.ceil(e)+"px",this.container.style.height=Math.ceil(n)+"px"},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale;i=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o);if(e=e&&Math.min(i.width,i.height)>this.minPageBreakDist,i.x=mxUtils.mod(i.x,i.width),i.y=mxUtils.mod(i.y,i.height),s=e?Math.ceil((n-i.x)/i.width):0,e=e?Math.ceil((t-i.y)/i.height):0,null==this.horizontalPageBreaks&&0<s&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(o=0;o<=s;o++){var r=[new mxPoint(i.x+o*i.width,1),new mxPoint(i.x+o*i.width,t)];null!=this.horizontalPageBreaks[o]?(this.horizontalPageBreaks[o].scale=1,this.horizontalPageBreaks[o].points=r,this.horizontalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,this.scale)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.horizontalPageBreaks[o]=r)}for(o=s;o<this.horizontalPageBreaks.length;o++)this.horizontalPageBreaks[o].destroy();this.horizontalPageBreaks.splice(s,this.horizontalPageBreaks.length-s)}if(null==this.verticalPageBreaks&&0<e&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(o=0;o<=e;o++)r=[new mxPoint(1,i.y+o*i.height),new mxPoint(n,i.y+o*i.height)],null!=this.verticalPageBreaks[o]?(this.verticalPageBreaks[o].scale=1,this.verticalPageBreaks[o].points=r,this.verticalPageBreaks[o].redraw()):((r=new mxPolyline(r,this.pageBreakColor,a)).dialect=this.dialect,r.isDashed=this.pageBreakDashed,r.scale=a,r.init(this.view.backgroundPane),r.redraw(),this.verticalPageBreaks[o]=r);for(o=e;o<this.verticalPageBreaks.length;o++)this.verticalPageBreaks[o].destroy();this.verticalPageBreaks.splice(e,this.verticalPageBreaks.length-e)}},mxGraph.prototype.getCellStyle=function(e){var n=this.model.getStyle(e),t=null;t=this.model.isEdge(e)?this.stylesheet.getDefaultEdgeStyle():this.stylesheet.getDefaultVertexStyle();return null!=n&&(t=this.postProcessCellStyle(this.stylesheet.getCellStyle(n,t))),null==t&&(t=mxGraph.prototype.EMPTY_ARRAY),t},mxGraph.prototype.postProcessCellStyle=function(e){if(null!=e){var n=e[mxConstants.STYLE_IMAGE],t=this.getImageFromBundles(n);null!=t?e[mxConstants.STYLE_IMAGE]=t:t=n,null!=t&&"data:image/"==t.substring(0,11)&&(0<(n=t.indexOf(","))&&(t=t.substring(0,n)+";base64,"+t.substring(n+1)),e[mxConstants.STYLE_IMAGE]=t)}return e},mxGraph.prototype.setCellStyle=function(e,n){if(null!=(n=n||this.getSelectionCells())){this.model.beginUpdate();try{for(var t=0;t<n.length;t++)this.model.setStyle(n[t],e)}finally{this.model.endUpdate()}}},mxGraph.prototype.toggleCellStyle=function(e,n,t){t=t||this.getSelectionCell(),this.toggleCellStyles(e,n,[t])},mxGraph.prototype.toggleCellStyles=function(e,n,t){var a;(n=null!=n&&n,null!=(t=t||this.getSelectionCells())&&0<t.length)&&(null!=(a=null!=(a=this.view.getState(t[0]))?a.style:this.getCellStyle(t[0]))&&(n=mxUtils.getValue(a,e,n)?0:1,this.setCellStyles(e,n,t)))},mxGraph.prototype.setCellStyles=function(e,n,t){t=t||this.getSelectionCells(),mxUtils.setCellStyles(this.model,t,e,n)},mxGraph.prototype.toggleCellStyleFlags=function(e,n,t){this.setCellStyleFlags(e,n,null,t)},mxGraph.prototype.setCellStyleFlags=function(e,n,t,a){if(null!=(a=a||this.getSelectionCells())&&0<a.length){var i;if(null==t)null!=(i=null!=(i=this.view.getState(a[0]))?i.style:this.getCellStyle(a[0]))&&(t=(parseInt(i[e]||0)&n)!=n);mxUtils.setCellStyleFlags(this.model,a,e,n,t)}},mxGraph.prototype.alignCells=function(e,n,t){if(null==n&&(n=this.getSelectionCells()),null!=n&&1<n.length){if(null==t)for(var a=0;a<n.length;a++){var i=this.getCellGeometry(n[a]);if(null!=i&&!this.model.isEdge(n[a]))if(null==t){if(e==mxConstants.ALIGN_CENTER){t=i.x+i.width/2;break}if(e==mxConstants.ALIGN_RIGHT)t=i.x+i.width;else if(e==mxConstants.ALIGN_TOP)t=i.y;else{if(e==mxConstants.ALIGN_MIDDLE){t=i.y+i.height/2;break}t=e==mxConstants.ALIGN_BOTTOM?i.y+i.height:i.x}}else t=e==mxConstants.ALIGN_RIGHT?Math.max(t,i.x+i.width):e==mxConstants.ALIGN_TOP?Math.min(t,i.y):e==mxConstants.ALIGN_BOTTOM?Math.max(t,i.y+i.height):Math.min(t,i.x)}if(null!=t){this.model.beginUpdate();try{for(a=0;a<n.length;a++)null!=(i=this.getCellGeometry(n[a]))&&!this.model.isEdge(n[a])&&(i=i.clone(),e==mxConstants.ALIGN_CENTER?i.x=t-i.width/2:e==mxConstants.ALIGN_RIGHT?i.x=t-i.width:e==mxConstants.ALIGN_TOP?i.y=t:e==mxConstants.ALIGN_MIDDLE?i.y=t-i.height/2:e==mxConstants.ALIGN_BOTTOM?i.y=t-i.height:i.x=t,this.model.setGeometry(n[a],i));this.fireEvent(new mxEventObject(mxEvent.ALIGN_CELLS,"align",e,"cells",n))}finally{this.model.endUpdate()}}}return n},mxGraph.prototype.flipEdge=function(e){if(null!=e&&null!=this.alternateEdgeStyle){this.model.beginUpdate();try{var n=this.model.getStyle(e);null==n||0==n.length?this.model.setStyle(e,this.alternateEdgeStyle):this.model.setStyle(e,null),this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.FLIP_EDGE,"edge",e))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.addImageBundle=function(e){this.imageBundles.push(e)},mxGraph.prototype.removeImageBundle=function(e){for(var n=[],t=0;t<this.imageBundles.length;t++)this.imageBundles[t]!=e&&n.push(this.imageBundles[t]);this.imageBundles=n},mxGraph.prototype.getImageFromBundles=function(e){if(null!=e)for(var n=0;n<this.imageBundles.length;n++){var t=this.imageBundles[n].getImage(e);if(null!=t)return t}return null},mxGraph.prototype.orderCells=function(e,n){null==n&&(n=mxUtils.sortCells(this.getSelectionCells(),!0)),this.model.beginUpdate();try{this.cellsOrdered(n,e),this.fireEvent(new mxEventObject(mxEvent.ORDER_CELLS,"back",e,"cells",n))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsOrdered=function(e,n){if(null!=e){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=this.model.getParent(e[t]);n?this.model.add(a,e[t],t):this.model.add(a,e[t],this.model.getChildCount(a)-1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ORDERED,"back",n,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.groupCells=function(e,n,t){null==t&&(t=mxUtils.sortCells(this.getSelectionCells(),!0)),t=this.getCellsForGroup(t),null==e&&(e=this.createGroupCell(t));var a=this.getBoundsForGroup(e,t,n);if(0<t.length&&null!=a){var i=this.model.getParent(e);null==i&&(i=this.model.getParent(t[0])),this.model.beginUpdate();try{null==this.getCellGeometry(e)&&this.model.setGeometry(e,new mxGeometry);var s=this.model.getChildCount(i);this.cellsAdded([e],i,s,null,null,!1),s=this.model.getChildCount(e),this.cellsAdded(t,e,s,null,null,!1,!1),this.cellsMoved(t,-a.x,-a.y,!1,!0),this.cellsResized([e],[a]),this.fireEvent(new mxEventObject(mxEvent.GROUP_CELLS,"group",e,"border",n,"cells",t))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.getCellsForGroup=function(e){var n=[];if(null!=e&&0<e.length){var t=this.model.getParent(e[0]);n.push(e[0]);for(var a=1;a<e.length;a++)this.model.getParent(e[a])==t&&n.push(e[a])}return n},mxGraph.prototype.getBoundsForGroup=function(e,n,t){return null!=(n=this.getBoundingBoxFromGeometry(n))&&(this.isSwimlane(e)&&(e=this.getStartSize(e),n.x-=e.width,n.y-=e.height,n.width+=e.width,n.height+=e.height),n.x-=t,n.y-=t,n.width+=2*t,n.height+=2*t),n},mxGraph.prototype.createGroupCell=function(e){return(e=new mxCell("")).setVertex(!0),e.setConnectable(!1),e},mxGraph.prototype.ungroupCells=function(e){var n=[];if(null==e){e=this.getSelectionCells();for(var t=[],a=0;a<e.length;a++)0<this.model.getChildCount(e[a])&&t.push(e[a]);e=t}if(null!=e&&0<e.length){this.model.beginUpdate();try{for(a=0;a<e.length;a++){if(null!=(i=this.model.getChildren(e[a]))&&0<i.length){var i=i.slice(),s=this.model.getParent(e[a]),o=this.model.getChildCount(s);this.cellsAdded(i,s,o,null,null,!0),n=n.concat(i)}}this.cellsRemoved(this.addAllEdges(e)),this.fireEvent(new mxEventObject(mxEvent.UNGROUP_CELLS,"cells",e))}finally{this.model.endUpdate()}}return n},mxGraph.prototype.removeCellsFromParent=function(e){null==e&&(e=this.getSelectionCells()),this.model.beginUpdate();try{var n=this.getDefaultParent(),t=this.model.getChildCount(n);this.cellsAdded(e,n,t,null,null,!0),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS_FROM_PARENT,"cells",e))}finally{this.model.endUpdate()}return e},mxGraph.prototype.updateGroupBounds=function(e,n,t){null==e&&(e=this.getSelectionCells()),n=null!=n?n:0,t=null!=t&&t,this.model.beginUpdate();try{for(var a=0;a<e.length;a++){if(null!=(r=this.getCellGeometry(e[a]))){var i=this.getChildCells(e[a]);if(null!=i&&0<i.length){var s=this.getBoundingBoxFromGeometry(i);if(0<s.width&&0<s.height){var o=this.isSwimlane(e[a])?this.getStartSize(e[a]):new mxRectangle,r=r.clone();t&&(r.x+=s.x-o.width-n,r.y+=s.y-o.height-n),r.width=s.width+o.width+2*n,r.height=s.height+o.height+2*n,this.model.setGeometry(e[a],r),this.moveCells(i,-s.x+o.width+n,-s.y+o.height+n)}}}}}finally{this.model.endUpdate()}return e},mxGraph.prototype.cloneCells=function(e,n){n=null==n||n;var t=null;if(null!=e){for(var a={},i=(t=[],0);i<e.length;i++){a[s=mxCellPath.create(e[i])]=e[i],t.push(e[i])}if(0<t.length){var s=this.view.scale,o=this.view.translate;for(t=this.model.cloneCells(e,!0),i=0;i<e.length;i++)if(!n&&this.model.isEdge(t[i])&&null!=this.getEdgeValidationError(t[i],this.model.getTerminal(t[i],!0),this.model.getTerminal(t[i],!1)))t[i]=null;else{var r=this.model.getGeometry(t[i]);if(null!=r){var l=this.view.getState(e[i]),d=this.view.getState(this.model.getParent(e[i]));if(null!=l&&null!=d){var c=d.origin.x;d=d.origin.y;if(this.model.isEdge(t[i])){l=l.absolutePoints;for(var m=this.model.getTerminal(e[i],!0),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);for(null==m&&r.setTerminalPoint(new mxPoint(l[0].x/s-o.x,l[0].y/s-o.y),!0),m=this.model.getTerminal(e[i],!1),u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);if(null==m&&(m=l.length-1,r.setTerminalPoint(new mxPoint(l[m].x/s-o.x,l[m].y/s-o.y),!1)),null!=(r=r.points))for(l=0;l<r.length;l++)r[l].x+=c,r[l].y+=d}else r.x+=c,r.y+=d}}}}else t=[]}return t},mxGraph.prototype.insertVertex=function(e,n,t,a,i,s,o,r,l){return n=this.createVertex(e,n,t,a,i,s,o,r,l),this.addCell(n,e)},mxGraph.prototype.createVertex=function(e,n,t,a,i,s,o,r,l){return(e=new mxGeometry(a,i,s,o)).relative=null!=l&&l,(t=new mxCell(t,e,r)).setId(n),t.setVertex(!0),t.setConnectable(!0),t},mxGraph.prototype.insertEdge=function(e,n,t,a,i,s){return n=this.createEdge(e,n,t,a,i,s),this.addEdge(n,e,a,i)},mxGraph.prototype.createEdge=function(e,n,t,a,i,s){return(e=new mxCell(t,new mxGeometry,s)).setId(n),e.setEdge(!0),e.geometry.relative=!0,e},mxGraph.prototype.addEdge=function(e,n,t,a,i){return this.addCell(e,n,i,t,a)},mxGraph.prototype.addCell=function(e,n,t,a,i){return this.addCells([e],n,t,a,i)[0]},mxGraph.prototype.addCells=function(e,n,t,a,i){null==n&&(n=this.getDefaultParent()),null==t&&(t=this.model.getChildCount(n)),this.model.beginUpdate();try{this.cellsAdded(e,n,t,a,i,!1,!0),this.fireEvent(new mxEventObject(mxEvent.ADD_CELLS,"cells",e,"parent",n,"index",t,"source",a,"target",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsAdded=function(e,n,t,a,i,s,o){if(null!=e&&null!=n&&null!=t){this.model.beginUpdate();try{for(var r=null!=(d=s?this.view.getState(n):null)?d.origin:null,l=new mxPoint(0,0),d=0;d<e.length;d++)if(null==e[d])t--;else{var c=this.model.getParent(e[d]);if(null!=r&&e[d]!=n&&n!=c){var m=this.view.getState(c),u=null!=m?m.origin:l;if(null!=(p=this.model.getGeometry(e[d]))){var p,g=u.x-r.x,v=u.y-r.y;(p=p.clone()).translate(g,v),!p.relative&&this.model.isVertex(e[d])&&!this.isAllowNegativeCoordinates()&&(p.x=Math.max(0,p.x),p.y=Math.max(0,p.y)),this.model.setGeometry(e[d],p)}}n==c&&t+d>this.model.getChildCount(n)&&t--,this.model.add(n,e[d],t+d),this.isExtendParentsOnAdd()&&this.isExtendParent(e[d])&&this.extendParent(e[d]),(null==o||o)&&this.constrainChild(e[d]),null!=a&&this.cellConnected(e[d],a,!0),null!=i&&this.cellConnected(e[d],i,!1)}this.fireEvent(new mxEventObject(mxEvent.CELLS_ADDED,"cells",e,"parent",n,"index",t,"source",a,"target",i,"absolute",s))}finally{this.model.endUpdate()}}},mxGraph.prototype.removeCells=function(e,n){n=null==n||n,null==e&&(e=this.getDeletableCells(this.getSelectionCells())),n&&(e=this.getDeletableCells(this.addAllEdges(e))),this.model.beginUpdate();try{this.cellsRemoved(e),this.fireEvent(new mxEventObject(mxEvent.REMOVE_CELLS,"cells",e,"includeEdges",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsRemoved=function(e){if(null!=e&&0<e.length){var n=this.view.scale,t=this.view.translate;this.model.beginUpdate();try{for(var a={},i=0;i<e.length;i++){var s=mxCellPath.create(e[i]);a[s]=e[i]}for(i=0;i<e.length;i++){for(var o=this.getConnections(e[i]),r=0;r<o.length;r++)if(null==a[s=mxCellPath.create(o[r])]){if(null!=(d=this.model.getGeometry(o[r]))){var l=this.view.getState(o[r]);if(null!=l){var d=d.clone(),c=l.getVisibleTerminal(!0)==e[i],m=l.absolutePoints,u=c?0:m.length-1;d.setTerminalPoint(new mxPoint(m[u].x/n-t.x,m[u].y/n-t.y),c),this.model.setTerminal(o[r],null,c),this.model.setGeometry(o[r],d)}}}this.model.remove(e[i])}this.fireEvent(new mxEventObject(mxEvent.CELLS_REMOVED,"cells",e))}finally{this.model.endUpdate()}}},mxGraph.prototype.splitEdge=function(e,n,t,a,i){a=a||0,i=i||0,null==t&&(t=this.cloneCells([e])[0]);var s=this.model.getParent(e),o=this.model.getTerminal(e,!0);this.model.beginUpdate();try{this.cellsMoved(n,a,i,!1,!1),this.cellsAdded(n,s,this.model.getChildCount(s),null,null,!0),this.cellsAdded([t],s,this.model.getChildCount(s),o,n[0],!1),this.cellConnected(e,n[0],!0),this.fireEvent(new mxEventObject(mxEvent.SPLIT_EDGE,"edge",e,"cells",n,"newEdge",t,"dx",a,"dy",i))}finally{this.model.endUpdate()}return t},mxGraph.prototype.toggleCells=function(e,n,t){null==n&&(n=this.getSelectionCells()),t&&(n=this.addAllEdges(n)),this.model.beginUpdate();try{this.cellsToggled(n,e),this.fireEvent(new mxEventObject(mxEvent.TOGGLE_CELLS,"show",e,"cells",n,"includeEdges",t))}finally{this.model.endUpdate()}return n},mxGraph.prototype.cellsToggled=function(e,n){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++)this.model.setVisible(e[t],n)}finally{this.model.endUpdate()}}},mxGraph.prototype.foldCells=function(e,n,t,a){n=null!=n&&n,null==t&&(t=this.getFoldableCells(this.getSelectionCells(),e)),this.stopEditing(!1),this.model.beginUpdate();try{this.cellsFolded(t,e,n,a),this.fireEvent(new mxEventObject(mxEvent.FOLD_CELLS,"collapse",e,"recurse",n,"cells",t))}finally{this.model.endUpdate()}return t},mxGraph.prototype.cellsFolded=function(e,n,t,a){if(null!=e&&0<e.length){this.model.beginUpdate();try{for(var i=0;i<e.length;i++)if((!a||this.isCellFoldable(e[i],n))&&n!=this.isCellCollapsed(e[i])&&(this.model.setCollapsed(e[i],n),this.swapBounds(e[i],n),this.isExtendParent(e[i])&&this.extendParent(e[i]),t)){var s=this.model.getChildren(e[i]);this.foldCells(s,n,t)}this.fireEvent(new mxEventObject(mxEvent.CELLS_FOLDED,"cells",e,"collapse",n,"recurse",t))}finally{this.model.endUpdate()}}},mxGraph.prototype.swapBounds=function(e,n){if(null!=e){var t=this.model.getGeometry(e);null!=t&&(t=t.clone(),this.updateAlternateBounds(e,t,n),t.swap(),this.model.setGeometry(e,t))}},mxGraph.prototype.updateAlternateBounds=function(e,n,t){if(null!=e&&null!=n){if(t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e),null==n.alternateBounds){var a=n;this.collapseToPreferredSize&&(null!=(e=this.getPreferredSizeForCell(e))&&(a=e,0<(e=mxUtils.getValue(t,mxConstants.STYLE_STARTSIZE))&&(a.height=Math.max(a.height,e)))),n.alternateBounds=new mxRectangle(0,0,a.width,a.height)}if(null!=n.alternateBounds){n.alternateBounds.x=n.x,n.alternateBounds.y=n.y;var i=mxUtils.toRadians(t[mxConstants.STYLE_ROTATION]||"0");0!=i&&(e=n.alternateBounds.getCenterX()-n.getCenterX(),t=n.alternateBounds.getCenterY()-n.getCenterY(),a=Math.cos(i),i=Math.sin(i),n.alternateBounds.x+=a*e-i*t-e,n.alternateBounds.y+=i*e+a*t-t)}}},mxGraph.prototype.addAllEdges=function(e){var n=e.slice();return n.concat(this.getAllEdges(e))},mxGraph.prototype.getAllEdges=function(e){var n=[];if(null!=e)for(var t=0;t<e.length;t++){for(var a=this.model.getEdgeCount(e[t]),i=0;i<a;i++)n.push(this.model.getEdgeAt(e[t],i));a=this.model.getChildren(e[t]),n=n.concat(this.getAllEdges(a))}return n},mxGraph.prototype.updateCellSize=function(e,n){n=null!=n&&n,this.model.beginUpdate();try{this.cellSizeUpdated(e,n),this.fireEvent(new mxEventObject(mxEvent.UPDATE_CELL_SIZE,"cell",e,"ignoreChildren",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellSizeUpdated=function(e,n){if(null!=e){this.model.beginUpdate();try{var t=this.getPreferredSizeForCell(e),a=this.model.getGeometry(e);if(null!=t&&null!=a){var i=this.isCellCollapsed(e);a=a.clone();if(this.isSwimlane(e)){var s=this.view.getState(e),o=null!=s?s.style:this.getCellStyle(e),r=this.model.getStyle(e);null==r&&(r=""),mxUtils.getValue(o,mxConstants.STYLE_HORIZONTAL,!0)?(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.height+8),i&&(a.height=t.height+8),a.width=t.width):(r=mxUtils.setStyle(r,mxConstants.STYLE_STARTSIZE,t.width+8),i&&(a.width=t.width+8),a.height=t.height),this.model.setStyle(e,r)}else a.width=t.width,a.height=t.height;if(!n&&!i){var l=this.view.getBounds(this.model.getChildren(e));if(null!=l){var d=this.view.translate,c=this.view.scale,m=(l.y+l.height)/c-a.y-d.y;a.width=Math.max(a.width,(l.x+l.width)/c-a.x-d.x),a.height=Math.max(a.height,m)}}this.cellsResized([e],[a])}}finally{this.model.endUpdate()}}},mxGraph.prototype.getPreferredSizeForCell=function(e){var n=null;if(null!=e){var t=this.view.getState(e),a=null!=t?t.style:this.getCellStyle(e);if(null!=a&&!this.model.isEdge(e)){var i=a[mxConstants.STYLE_FONTSIZE]||mxConstants.DEFAULT_FONTSIZE,s=0;n=0;null==this.getImage(t)&&null==a[mxConstants.STYLE_IMAGE]||a[mxConstants.STYLE_SHAPE]!=mxConstants.SHAPE_LABEL||(a[mxConstants.STYLE_VERTICAL_ALIGN]==mxConstants.ALIGN_MIDDLE&&(s+=parseFloat(a[mxConstants.STYLE_IMAGE_WIDTH])||mxLabel.prototype.imageSize),a[mxConstants.STYLE_ALIGN]!=mxConstants.ALIGN_CENTER&&(n+=parseFloat(a[mxConstants.STYLE_IMAGE_HEIGHT])||mxLabel.prototype.imageSize)),s+=2*(a[mxConstants.STYLE_SPACING]||0),s+=a[mxConstants.STYLE_SPACING_LEFT]||0,s+=a[mxConstants.STYLE_SPACING_RIGHT]||0,n+=2*(a[mxConstants.STYLE_SPACING]||0),n+=a[mxConstants.STYLE_SPACING_TOP]||0,n+=a[mxConstants.STYLE_SPACING_BOTTOM]||0,null!=(t=this.getFoldingImage(t))&&(s+=t.width+8),n=null!=(t=this.getLabel(e))&&0<t.length?(this.isHtmlLabel(e)||(t=t.replace(/\n/g,"<br>")),e=(i=mxUtils.getSizeForString(t,i,a[mxConstants.STYLE_FONTFAMILY])).width+s,n=i.height+n,mxUtils.getValue(a,mxConstants.STYLE_HORIZONTAL,!0)||(a=n,n=e,e=a),this.gridEnabled&&(e=this.snap(e+this.gridSize/2),n=this.snap(n+this.gridSize/2)),new mxRectangle(0,0,e,n)):new mxRectangle(0,0,a=4*this.gridSize,a)}}return n},mxGraph.prototype.handleGesture=function(e,n){if(.2<Math.abs(1-n.scale)){var t=this.view.scale,a=this.view.translate,i=e.width*n.scale,s=e.height*n.scale,o=e.y-(s-e.height)/2;t=new mxRectangle(this.snap((e.x-(i-e.width)/2)/t)-a.x,this.snap(o/t)-a.y,this.snap(i/t),this.snap(s/t));this.resizeCell(e.cell,t)}},mxGraph.prototype.resizeCell=function(e,n){return this.resizeCells([e],[n])[0]},mxGraph.prototype.resizeCells=function(e,n){this.model.beginUpdate();try{this.cellsResized(e,n),this.fireEvent(new mxEventObject(mxEvent.RESIZE_CELLS,"cells",e,"bounds",n))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellsResized=function(e,n){if(null!=e&&null!=n&&e.length==n.length){this.model.beginUpdate();try{for(var t=0;t<e.length;t++){var a=n[t],i=this.model.getGeometry(e[t]);if(null!=i&&(i.x!=a.x||i.y!=a.y||i.width!=a.width||i.height!=a.height)){if((i=i.clone()).relative){var s=i.offset;null!=s&&(s.x+=a.x-i.x,s.y+=a.y-i.y)}else i.x=a.x,i.y=a.y;i.width=a.width,i.height=a.height,!i.relative&&this.model.isVertex(e[t])&&!this.isAllowNegativeCoordinates()&&(i.x=Math.max(0,i.x),i.y=Math.max(0,i.y)),this.model.setGeometry(e[t],i),this.isExtendParent(e[t])&&this.extendParent(e[t])}}this.resetEdgesOnResize&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_RESIZED,"cells",e,"bounds",n))}finally{this.model.endUpdate()}}},mxGraph.prototype.extendParent=function(e){if(null!=e){var n=this.model.getParent(e),t=this.model.getGeometry(n);null!=n&&null!=t&&!this.isCellCollapsed(n)&&(null!=(e=this.model.getGeometry(e))&&(t.width<e.x+e.width||t.height<e.y+e.height))&&((t=t.clone()).width=Math.max(t.width,e.x+e.width),t.height=Math.max(t.height,e.y+e.height),this.cellsResized([n],[t]))}},mxGraph.prototype.importCells=function(e,n,t,a,i){return this.moveCells(e,n,t,!0,a,i)},mxGraph.prototype.moveCells=function(e,n,t,a,i,s){if(n=null!=n?n:0,t=null!=t?t:0,a=null!=a&&a,null!=e&&(0!=n||0!=t||a||null!=i)){this.model.beginUpdate();try{a&&(e=this.cloneCells(e,this.isCloneInvalidEdges()),null==i&&(i=this.getDefaultParent()));var o=this.isAllowNegativeCoordinates();if(null!=i&&this.setAllowNegativeCoordinates(!0),this.cellsMoved(e,n,t,!a&&this.isDisconnectOnMove()&&this.isAllowDanglingEdges(),null==i),this.setAllowNegativeCoordinates(o),null!=i){var r=this.model.getChildCount(i);this.cellsAdded(e,i,r,null,null,!0)}this.fireEvent(new mxEventObject(mxEvent.MOVE_CELLS,"cells",e,"dx",n,"dy",t,"clone",a,"target",i,"event",s))}finally{this.model.endUpdate()}}return e},mxGraph.prototype.cellsMoved=function(e,n,t,a,i){if(null!=e&&(0!=n||0!=t)){this.model.beginUpdate();try{a&&this.disconnectGraph(e);for(var s=0;s<e.length;s++)this.translateCell(e[s],n,t),i&&this.constrainChild(e[s]);this.resetEdgesOnMove&&this.resetEdges(e),this.fireEvent(new mxEventObject(mxEvent.CELLS_MOVED,"cells",e,"dx",t,"dy",t,"disconnect",a))}finally{this.model.endUpdate()}}},mxGraph.prototype.translateCell=function(e,n,t){var a=this.model.getGeometry(e);null!=a&&((a=a.clone()).translate(n,t),!a.relative&&this.model.isVertex(e)&&!this.isAllowNegativeCoordinates()&&(a.x=Math.max(0,a.x),a.y=Math.max(0,a.y)),a.relative&&!this.model.isEdge(e)&&(null==a.offset?a.offset=new mxPoint(n,t):(a.offset.x+=n,a.offset.y+=t)),this.model.setGeometry(e,a))},mxGraph.prototype.getCellContainmentArea=function(e){if(null!=e&&!this.model.isEdge(e)){var n=this.model.getParent(e);if(n==this.getDefaultParent()||n==this.getCurrentRoot())return this.getMaximumGraphBounds();if(null!=n&&n!=this.getDefaultParent())if(null!=(i=this.model.getGeometry(n))){var t=e=0,a=i.width,i=i.height;return this.isSwimlane(n)&&(e=(n=this.getStartSize(n)).width,a-=n.width,t=n.height,i-=n.height),new mxRectangle(e,t,a,i)}}return null},mxGraph.prototype.getMaximumGraphBounds=function(){return this.maximumGraphBounds},mxGraph.prototype.constrainChild=function(e){if(null!=e){var n=this.model.getGeometry(e),t=this.isConstrainChild(e)?this.getCellContainmentArea(e):this.getMaximumGraphBounds();null!=n&&null!=t&&!n.relative&&(n.x<t.x||n.y<t.y||t.width<n.x+n.width||t.height<n.y+n.height)&&(e=this.getOverlap(e),0<t.width&&(n.x=Math.min(n.x,t.x+t.width-(1-e)*n.width)),0<t.height&&(n.y=Math.min(n.y,t.y+t.height-(1-e)*n.height)),n.x=Math.max(n.x,t.x-n.width*e),n.y=Math.max(n.y,t.y-n.height*e))}},mxGraph.prototype.resetEdges=function(e){if(null!=e){for(var n={},t=0;t<e.length;t++){var a=mxCellPath.create(e[t]);n[a]=e[t]}this.model.beginUpdate();try{for(t=0;t<e.length;t++){var i=this.model.getEdges(e[t]);if(null!=i)for(a=0;a<i.length;a++){var s=this.view.getState(i[a]),o=null!=s?s.getVisibleTerminal(!0):this.view.getVisibleTerminal(i[a],!0),r=null!=s?s.getVisibleTerminal(!1):this.view.getVisibleTerminal(i[a],!1),l=mxCellPath.create(o),d=mxCellPath.create(r);(null==n[l]||null==n[d])&&this.resetEdge(i[a])}this.resetEdges(this.model.getChildren(e[t]))}}finally{this.model.endUpdate()}}},mxGraph.prototype.resetEdge=function(e){var n=this.model.getGeometry(e);return null!=n&&null!=n.points&&0<n.points.length&&((n=n.clone()).points=[],this.model.setGeometry(e,n)),e},mxGraph.prototype.getAllConnectionConstraints=function(e,n){return null!=e&&null!=e.shape&&null!=e.shape.stencil?e.shape.stencil.constraints:null},mxGraph.prototype.getConnectionConstraint=function(e,n,t){n=null;var a=e.style[t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X];if(null!=a){var i=e.style[t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y];null!=i&&(n=new mxPoint(parseFloat(a),parseFloat(i)))}return a=!1,null!=n&&(a=mxUtils.getValue(e.style,t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,!0)),new mxConnectionConstraint(n,a)},mxGraph.prototype.setConnectionConstraint=function(e,n,t,a){if(null!=a){this.model.beginUpdate();try{null==a||null==a.point?(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,null,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e])):null!=a.point&&(this.setCellStyles(t?mxConstants.STYLE_EXIT_X:mxConstants.STYLE_ENTRY_X,a.point.x,[e]),this.setCellStyles(t?mxConstants.STYLE_EXIT_Y:mxConstants.STYLE_ENTRY_Y,a.point.y,[e]),a.perimeter?this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,null,[e]):this.setCellStyles(t?mxConstants.STYLE_EXIT_PERIMETER:mxConstants.STYLE_ENTRY_PERIMETER,"0",[e]))}finally{this.model.endUpdate()}}},mxGraph.prototype.getConnectionPoint=function(e,n){var t=null;if(null!=e){var a=this.view.getPerimeterBounds(e),i=new mxPoint(a.getCenterX(),a.getCenterY()),s=e.style[mxConstants.STYLE_DIRECTION],o=0;if(null!=s&&("north"==s?o+=270:"west"==s?o+=180:"south"==s&&(o+=90),"north"==s||"south"==s)){a.x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var r=a.width;a.width=a.height,a.height=r}if(null!=n.point){var l=t=1,d=0,c=0;if(this.getModel().isVertex(e.cell)){var m=e.style[mxConstants.STYLE_FLIPH],u=e.style[mxConstants.STYLE_FLIPV];null!=e.shape.stencil&&(m=1==mxUtils.getValue(e.style,"stencilFlipH",0)||m,u=1==mxUtils.getValue(e.style,"stencilFlipV",0)||u),"north"!=s&&"south"!=s||(r=m,m=u,u=r),m&&(t=-1,d=-a.width),u&&(l=-1,c=-a.height)}t=new mxPoint(a.x+n.point.x*a.width*t-d,a.y+n.point.y*a.height*l-c)}s=e.style[mxConstants.STYLE_ROTATION]||0,n.perimeter?(0!=o&&null!=t&&(r=a=0,90==o?r=1:180==o?a=-1:270==s&&(r=-1),t=mxUtils.getRotatedPoint(t,a,r,i)),null!=t&&n.perimeter&&(t=this.view.getPerimeterPoint(e,t,!1))):s+=o,0!=s&&null!=t&&(o=mxUtils.toRadians(s),a=Math.cos(o),r=Math.sin(o),t=mxUtils.getRotatedPoint(t,a,r,i))}return t},mxGraph.prototype.connectCell=function(e,n,t,a){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.cellConnected(e,n,t,a),this.fireEvent(new mxEventObject(mxEvent.CONNECT_CELL,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}return e},mxGraph.prototype.cellConnected=function(e,n,t,a){if(null!=e){this.model.beginUpdate();try{var i=this.model.getTerminal(e,t);this.setConnectionConstraint(e,n,t,a),this.isPortsEnabled()&&(a=null,this.isPort(n)&&(a=n.getId(),n=this.getTerminalForPort(n,t)),this.setCellStyles(t?mxConstants.STYLE_SOURCE_PORT:mxConstants.STYLE_TARGET_PORT,a,[e])),this.model.setTerminal(e,n,t),this.resetEdgesOnConnect&&this.resetEdge(e),this.fireEvent(new mxEventObject(mxEvent.CELL_CONNECTED,"edge",e,"terminal",n,"source",t,"previous",i))}finally{this.model.endUpdate()}}},mxGraph.prototype.disconnectGraph=function(e){if(null!=e){this.model.beginUpdate();try{for(var n=this.view.scale,t=this.view.translate,a={},i=0;i<e.length;i++){a[mxCellPath.create(e[i])]=e[i]}for(i=0;i<e.length;i++)if(this.model.isEdge(e[i])){if(null!=(r=this.model.getGeometry(e[i]))){var s=this.view.getState(e[i]),o=this.view.getState(this.model.getParent(e[i]));if(null!=s&&null!=o){var r=r.clone(),l=-o.origin.x,d=-o.origin.y,c=s.absolutePoints,m=this.model.getTerminal(e[i],!0);if(null!=m&&this.isCellDisconnectable(e[i],m,!0)){for(var u=mxCellPath.create(m);null!=m&&null==a[u];)m=this.model.getParent(m),u=mxCellPath.create(m);null==m&&(r.setTerminalPoint(new mxPoint(c[0].x/n-t.x+l,c[0].y/n-t.y+d),!0),this.model.setTerminal(e[i],null,!0))}var p=this.model.getTerminal(e[i],!1);if(null!=p&&this.isCellDisconnectable(e[i],p,!1)){for(var g=mxCellPath.create(p);null!=p&&null==a[g];)p=this.model.getParent(p),g=mxCellPath.create(p);if(null==p){var v=c.length-1;r.setTerminalPoint(new mxPoint(c[v].x/n-t.x+l,c[v].y/n-t.y+d),!1),this.model.setTerminal(e[i],null,!1)}}this.model.setGeometry(e[i],r)}}}}finally{this.model.endUpdate()}}},mxGraph.prototype.getCurrentRoot=function(){return this.view.currentRoot},mxGraph.prototype.getTranslateForRoot=function(e){return null},mxGraph.prototype.isPort=function(e){return!1},mxGraph.prototype.getTerminalForPort=function(e,n){return this.model.getParent(e)},mxGraph.prototype.getChildOffsetForCell=function(e){return null},mxGraph.prototype.enterGroup=function(e){null!=(e=e||this.getSelectionCell())&&this.isValidRoot(e)&&(this.view.setCurrentRoot(e),this.clearSelection())},mxGraph.prototype.exitGroup=function(){var e=this.model.getRoot(),n=this.getCurrentRoot();if(null!=n){for(var t=this.model.getParent(n);t!=e&&!this.isValidRoot(t)&&this.model.getParent(t)!=e;)t=this.model.getParent(t);t==e||this.model.getParent(t)==e?this.view.setCurrentRoot(null):this.view.setCurrentRoot(t),null!=this.view.getState(n)&&this.setSelectionCell(n)}},mxGraph.prototype.home=function(){var e=this.getCurrentRoot();null!=e&&(this.view.setCurrentRoot(null),null!=this.view.getState(e)&&this.setSelectionCell(e))},mxGraph.prototype.isValidRoot=function(e){return null!=e},mxGraph.prototype.getGraphBounds=function(){return this.view.getGraphBounds()},mxGraph.prototype.getCellBounds=function(e,n,t){var a=[e];if(n&&(a=a.concat(this.model.getEdges(e))),a=this.view.getBounds(a),t){t=this.model.getChildCount(e);for(var i=0;i<t;i++){var s=this.getCellBounds(this.model.getChildAt(e,i),n,!0);null!=a?a.add(s):a=s}}return a},mxGraph.prototype.getBoundingBoxFromGeometry=function(e,n){n=null!=n&&n;var t=null;if(null!=e)for(var a=0;a<e.length;a++)if(n||this.model.isVertex(e[a])){var i=this.getCellGeometry(e[a]);if(null!=i){var s=i.points;if(null!=s&&0<s.length){for(var o=new mxRectangle(s[0].x,s[0].y,0,0),r=function(e){null!=e&&o.add(new mxRectangle(e.x,e.y,0,0))},l=1;l<s.length;l++)r(s[l]);r(i.getTerminalPoint(!0)),r(i.getTerminalPoint(!1))}null==t?t=new mxRectangle(i.x,i.y,i.width,i.height):t.add(i)}}return t},mxGraph.prototype.refresh=function(e){this.view.clear(e,null==e),this.view.validate(),this.sizeDidChange(),this.fireEvent(new mxEventObject(mxEvent.REFRESH))},mxGraph.prototype.snap=function(e){return this.gridEnabled&&(e=Math.round(e/this.gridSize)*this.gridSize),e},mxGraph.prototype.panGraph=function(e,n){if(this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container))this.container.scrollLeft=-e,this.container.scrollTop=-n;else{var t=this.view.getCanvas();if(this.dialect==mxConstants.DIALECT_SVG)if(0==e&&0==n){if(mxClient.IS_IE?t.setAttribute("transform","translate("+e+","+n+")"):t.removeAttribute("transform"),null!=this.shiftPreview1){for(var a=this.shiftPreview1.firstChild;null!=a;){var i=a.nextSibling;this.container.appendChild(a),a=i}for(this.shiftPreview1.parentNode.removeChild(this.shiftPreview1),this.shiftPreview1=null,this.container.appendChild(t.parentNode),a=this.shiftPreview2.firstChild;null!=a;)i=a.nextSibling,this.container.appendChild(a),a=i;this.shiftPreview2.parentNode.removeChild(this.shiftPreview2),this.shiftPreview2=null}}else{if(t.setAttribute("transform","translate("+e+","+n+")"),null==this.shiftPreview1){this.shiftPreview1=document.createElement("div"),this.shiftPreview1.style.position="absolute",this.shiftPreview1.style.overflow="visible",this.shiftPreview2=document.createElement("div"),this.shiftPreview2.style.position="absolute",this.shiftPreview2.style.overflow="visible";var s=this.shiftPreview1;for(a=this.container.firstChild;null!=a;)i=a.nextSibling,a!=t.parentNode?s.appendChild(a):s=this.shiftPreview2,a=i;this.container.insertBefore(this.shiftPreview1,t.parentNode),this.container.appendChild(this.shiftPreview2)}this.shiftPreview1.style.left=e+"px",this.shiftPreview1.style.top=n+"px",this.shiftPreview2.style.left=e+"px",this.shiftPreview2.style.top=n+"px"}else t.style.left=e+"px",t.style.top=n+"px";this.panDx=e,this.panDy=n,this.fireEvent(new mxEventObject(mxEvent.PAN))}},mxGraph.prototype.zoomIn=function(){this.zoom(this.zoomFactor)},mxGraph.prototype.zoomOut=function(){this.zoom(1/this.zoomFactor)},mxGraph.prototype.zoomActual=function(){1==this.view.scale?this.view.setTranslate(0,0):(this.view.translate.x=0,this.view.translate.y=0,this.view.setScale(1))},mxGraph.prototype.zoomTo=function(e,n){this.zoom(e/this.view.scale,n)},mxGraph.prototype.zoom=function(e,n){n=null!=n?n:this.centerZoom;var t=this.view.scale*e,a=this.view.getState(this.getSelectionCell());if(this.keepSelectionVisibleOnZoom&&null!=a)a=new mxRectangle(a.x*e,a.y*e,a.width*e,a.height*e),this.view.scale=t,this.scrollRectToVisible(a)||(this.view.revalidate(),this.view.setScale(t));else if(n&&!mxUtils.hasScrollbars(this.container)){a=this.container.offsetWidth;var i=this.container.offsetHeight;if(1<e){var s=(e-1)/(2*t);a=a*-s,i=i*-s}else a*=s=(1/e-1)/(2*this.view.scale),i*=s;this.view.scaleAndTranslate(t,this.view.translate.x+a,this.view.translate.y+i)}else this.view.setScale(t),mxUtils.hasScrollbars(this.container)&&(i=a=0,n&&(a=this.container.offsetWidth*(e-1)/2,i=this.container.offsetHeight*(e-1)/2),this.container.scrollLeft=Math.round(this.container.scrollLeft*e+a),this.container.scrollTop=Math.round(this.container.scrollTop*e+i))},mxGraph.prototype.zoomToRect=function(e){var n=this.container.clientWidth/e.width/(this.container.clientHeight/e.height);e.x=Math.max(0,e.x),e.y=Math.max(0,e.y);var t=Math.min(this.container.scrollWidth,e.x+e.width),a=Math.min(this.container.scrollHeight,e.y+e.height);e.width=t-e.x,e.height=a-e.y,n<1?(t=((n=e.height/n)-e.height)/2,e.height=n,n=Math.min(e.y,t),e.y-=n,a=Math.min(this.container.scrollHeight,e.y+e.height),e.height=a-e.y):(t=((n*=e.width)-e.width)/2,e.width=n,n=Math.min(e.x,t),e.x-=n,t=Math.min(this.container.scrollWidth,e.x+e.width),e.width=t-e.x),n=this.container.clientWidth/e.width,t=this.view.scale*n,mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),this.container.scrollLeft=Math.round(e.x*n),this.container.scrollTop=Math.round(e.y*n)):this.view.scaleAndTranslate(t,this.view.translate.x-e.x/this.view.scale,this.view.translate.y-e.y/this.view.scale)},mxGraph.prototype.fit=function(e,n){if(null!=this.container){e=null!=e?e:0,n=null!=n&&n;var t=this.container.clientWidth,a=this.container.clientHeight,i=this.view.getGraphBounds();n&&null!=i.x&&null!=i.y&&(i.width+=i.x,i.height+=i.y,i.x=0,i.y=0);var s=this.view.scale,o=i.width/s,r=i.height/s;null!=this.backgroundImage&&(o=Math.max(o,this.backgroundImage.width-i.x/s),r=Math.max(r,this.backgroundImage.height-i.y/s));var l=n?e:2*e;t=Math.floor(100*Math.min(t/(o+l),a/(r+l)))/100;null!=this.minFitScale&&(t=Math.max(t,this.minFitScale)),null!=this.maxFitScale&&(t=Math.min(t,this.maxFitScale)),n?this.view.scale!=t&&this.view.setScale(t):mxUtils.hasScrollbars(this.container)?(this.view.setScale(t),null!=i.x&&(this.container.scrollLeft=Math.round(i.x/s)*t-e-Math.max(0,(this.container.clientWidth-o*t)/2)),null!=i.y&&(this.container.scrollTop=Math.round(i.y/s)*t-e-Math.max(0,(this.container.clientHeight-r*t)/2))):this.view.scaleAndTranslate(t,null!=i.x?Math.floor(this.view.translate.x-i.x/s+e+1):e,null!=i.y?Math.floor(this.view.translate.y-i.y/s+e+1):e)}return this.view.scale},mxGraph.prototype.scrollCellToVisible=function(e,n){var t=-this.view.translate.x,a=-this.view.translate.y,i=this.view.getState(e);null!=i&&(t=new mxRectangle(t+i.x,a+i.y,i.width,i.height),n&&null!=this.container&&(a=this.container.clientWidth,i=this.container.clientHeight,t.x=t.getCenterX()-a/2,t.width=a,t.y=t.getCenterY()-i/2,t.height=i),this.scrollRectToVisible(t)&&this.view.setTranslate(this.view.translate.x,this.view.translate.y))},mxGraph.prototype.scrollRectToVisible=function(e){var n=!1;if(null!=e){var t=this.container.offsetWidth,a=this.container.offsetHeight,i=Math.min(t,e.width),s=Math.min(a,e.height);if(mxUtils.hasScrollbars(this.container)){t=this.container,e.x+=this.view.translate.x,e.y+=this.view.translate.y;var o=t.scrollLeft-e.x;a=Math.max(o-t.scrollLeft,0);0<o?t.scrollLeft-=o+2:0<(o=e.x+i-t.scrollLeft-t.clientWidth)&&(t.scrollLeft+=o+2),i=t.scrollTop-e.y,o=Math.max(0,i-t.scrollTop),0<i?t.scrollTop-=i+2:0<(i=e.y+s-t.scrollTop-t.clientHeight)&&(t.scrollTop+=i+2),!this.useScrollbarsForPanning&&(0!=a||0!=o)&&this.view.setTranslate(a,o)}else{o=-this.view.translate.x;var r=-this.view.translate.y,l=this.view.scale;e.x+i>o+t&&(this.view.translate.x-=(e.x+i-t-o)/l,n=!0),e.y+s>r+a&&(this.view.translate.y-=(e.y+s-a-r)/l,n=!0),e.x<o&&(this.view.translate.x+=(o-e.x)/l,n=!0),e.y<r&&(this.view.translate.y+=(r-e.y)/l,n=!0),n&&(this.view.refresh(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.refresh())}}return n},mxGraph.prototype.getCellGeometry=function(e){return this.model.getGeometry(e)},mxGraph.prototype.isCellVisible=function(e){return this.model.isVisible(e)},mxGraph.prototype.isCellCollapsed=function(e){return this.model.isCollapsed(e)},mxGraph.prototype.isCellConnectable=function(e){return this.model.isConnectable(e)},mxGraph.prototype.isOrthogonal=function(e){var n=e.style[mxConstants.STYLE_ORTHOGONAL];return null!=n?n:(e=this.view.getEdgeStyle(e))==mxEdgeStyle.SegmentConnector||e==mxEdgeStyle.ElbowConnector||e==mxEdgeStyle.SideToSide||e==mxEdgeStyle.TopToBottom||e==mxEdgeStyle.EntityRelation||e==mxEdgeStyle.OrthConnector},mxGraph.prototype.isLoop=function(e){var n=e.getVisibleTerminalState(!0);return e=e.getVisibleTerminalState(!1),null!=n&&n==e},mxGraph.prototype.isCloneEvent=function(e){return mxEvent.isControlDown(e)},mxGraph.prototype.isToggleEvent=function(e){return mxClient.IS_MAC?mxEvent.isMetaDown(e):mxEvent.isControlDown(e)},mxGraph.prototype.isGridEnabledEvent=function(e){return null!=e&&!mxEvent.isAltDown(e)},mxGraph.prototype.isConstrainedEvent=function(e){return mxEvent.isShiftDown(e)},mxGraph.prototype.isForceMarqueeEvent=function(e){return mxEvent.isAltDown(e)},mxGraph.prototype.validationAlert=function(e){mxUtils.alert(e)},mxGraph.prototype.isEdgeValid=function(e,n,t){return null==this.getEdgeValidationError(e,n,t)},mxGraph.prototype.getEdgeValidationError=function(e,n,t){if(null!=e&&!this.isAllowDanglingEdges()&&(null==n||null==t))return"";if(null!=e&&null==this.model.getTerminal(e,!0)&&null==this.model.getTerminal(e,!1))return null;if(!this.allowLoops&&n==t&&null!=n||!this.isValidConnection(n,t))return"";if(null==n||null==t)return this.allowDanglingEdges?null:"";var a="";this.multigraph||(1<(i=this.model.getEdgesBetween(n,t,!0)).length||1==i.length&&i[0]!=e)&&(a+=(mxResources.get(this.alreadyConnectedResource)||this.alreadyConnectedResource)+"\n");var i=this.model.getDirectedEdgeCount(n,!0,e),s=this.model.getDirectedEdgeCount(t,!1,e);if(null!=this.multiplicities)for(var o=0;o<this.multiplicities.length;o++){var r=this.multiplicities[o].check(this,e,n,t,i,s);null!=r&&(a+=r)}return null!=(r=this.validateEdge(e,n,t))&&(a+=r),0<a.length?a:null},mxGraph.prototype.validateEdge=function(e,n,t){return null},mxGraph.prototype.validateGraph=function(e,n){e=null!=e?e:this.model.getRoot(),n=null!=n?n:{};for(var t=!0,a=this.model.getChildCount(e),i=0;i<a;i++){var s=this.model.getChildAt(e,i),o=n;this.isValidRoot(s)&&(o={}),null!=(o=this.validateGraph(s,o))?this.setCellWarning(s,o.replace(/\n/g,"<br>")):this.setCellWarning(s,null),t=t&&null==o}return a="",this.isCellCollapsed(e)&&!t&&(a+=(mxResources.get(this.containsValidationErrorsResource)||this.containsValidationErrorsResource)+"\n"),a=this.model.isEdge(e)?a+(this.getEdgeValidationError(e,this.model.getTerminal(e,!0),this.model.getTerminal(e,!1))||""):a+(this.getCellValidationError(e)||""),null!=(i=this.validateCell(e,n))&&(a+=i),null==this.model.getParent(e)&&this.view.validate(),0<a.length||!t?a:null},mxGraph.prototype.getCellValidationError=function(e){var n=this.model.getDirectedEdgeCount(e,!0),t=this.model.getDirectedEdgeCount(e,!1);e=this.model.getValue(e);var a="";if(null!=this.multiplicities)for(var i=0;i<this.multiplicities.length;i++){var s=this.multiplicities[i];s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<n||1==s.min&&0==n||1==s.max&&1<n)?a+=s.countError+"\n":!s.source&&mxUtils.isNode(e,s.type,s.attr,s.value)&&(0==s.max&&0<t||1==s.min&&0==t||1==s.max&&1<t)&&(a+=s.countError+"\n")}return 0<a.length?a:null},mxGraph.prototype.validateCell=function(e,n){return null},mxGraph.prototype.getBackgroundImage=function(){return this.backgroundImage},mxGraph.prototype.setBackgroundImage=function(e){this.backgroundImage=e},mxGraph.prototype.getFoldingImage=function(e){if(null!=e&&this.foldingEnabled&&!this.getModel().isEdge(e.cell)){var n=this.isCellCollapsed(e.cell);if(this.isCellFoldable(e.cell,!n))return n?this.collapsedImage:this.expandedImage}return null},mxGraph.prototype.convertValueToString=function(e){if(null!=(e=this.model.getValue(e))){if(mxUtils.isNode(e))return e.nodeName;if("function"==typeof e.toString)return e.toString()}return""},mxGraph.prototype.getLabel=function(e){var n="";if(this.labelsVisible&&null!=e){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);mxUtils.getValue(t,mxConstants.STYLE_NOLABEL,!1)||(n=this.convertValueToString(e))}return n},mxGraph.prototype.isHtmlLabel=function(e){return this.isHtmlLabels()},mxGraph.prototype.isHtmlLabels=function(){return this.htmlLabels},mxGraph.prototype.setHtmlLabels=function(e){this.htmlLabels=e},mxGraph.prototype.isWrapping=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"wrap"==e[mxConstants.STYLE_WHITE_SPACE]},mxGraph.prototype.isLabelClipped=function(e){var n=this.view.getState(e);return null!=(e=null!=n?n.style:this.getCellStyle(e))&&"hidden"==e[mxConstants.STYLE_OVERFLOW]},mxGraph.prototype.getTooltip=function(e,t,n,a){var i=null;return null!=e&&(null==e.control||t!=e.control.node&&t.parentNode!=e.control.node||(i=this.collapseExpandResource,i=mxResources.get(i)||i),null==i&&null!=e.overlays&&e.overlays.visit(function(e,n){null!=i||t!=n.node&&t.parentNode!=n.node||(i=n.overlay.toString())}),null==i&&(null!=(n=this.selectionCellsHandler.getHandler(e.cell))&&"function"==typeof n.getTooltipForNode&&(i=n.getTooltipForNode(t))),null==i&&(i=this.getTooltipForCell(e.cell))),i},mxGraph.prototype.getTooltipForCell=function(e){return null!=e&&null!=e.getTooltip?e.getTooltip():this.convertValueToString(e)},mxGraph.prototype.getCursorForCell=function(e){return null},mxGraph.prototype.getStartSize=function(e){var n=new mxRectangle,t=this.view.getState(e);return null!=(e=null!=t?t.style:this.getCellStyle(e))&&(t=parseInt(mxUtils.getValue(e,mxConstants.STYLE_STARTSIZE,mxConstants.DEFAULT_STARTSIZE)),mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,!0)?n.height=t:n.width=t),n},mxGraph.prototype.getImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_IMAGE]:null},mxGraph.prototype.getVerticalAlign=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_VERTICAL_ALIGN]||mxConstants.ALIGN_MIDDLE:null},mxGraph.prototype.getIndicatorColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_COLOR]:null},mxGraph.prototype.getIndicatorGradientColor=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_GRADIENTCOLOR]:null},mxGraph.prototype.getIndicatorShape=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_SHAPE]:null},mxGraph.prototype.getIndicatorImage=function(e){return null!=e&&null!=e.style?e.style[mxConstants.STYLE_INDICATOR_IMAGE]:null},mxGraph.prototype.getBorder=function(){return this.border},mxGraph.prototype.setBorder=function(e){this.border=e},mxGraph.prototype.isSwimlane=function(e){var n;if(null!=e&&this.model.getParent(e)!=this.model.getRoot()&&(null!=(n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e))&&!this.model.isEdge(e)))return n[mxConstants.STYLE_SHAPE]==mxConstants.SHAPE_SWIMLANE;return!1},mxGraph.prototype.isResizeContainer=function(){return this.resizeContainer},mxGraph.prototype.setResizeContainer=function(e){this.resizeContainer=e},mxGraph.prototype.isEnabled=function(){return this.enabled},mxGraph.prototype.setEnabled=function(e){this.enabled=e},mxGraph.prototype.isEscapeEnabled=function(){return this.escapeEnabled},mxGraph.prototype.setEscapeEnabled=function(e){this.escapeEnabled=e},mxGraph.prototype.isInvokesStopCellEditing=function(){return this.invokesStopCellEditing},mxGraph.prototype.setInvokesStopCellEditing=function(e){this.invokesStopCellEditing=e},mxGraph.prototype.isEnterStopsCellEditing=function(){return this.enterStopsCellEditing},mxGraph.prototype.setEnterStopsCellEditing=function(e){this.enterStopsCellEditing=e},mxGraph.prototype.isCellLocked=function(e){var n=this.model.getGeometry(e);return this.isCellsLocked()||null!=n&&this.model.isVertex(e)&&n.relative},mxGraph.prototype.isCellsLocked=function(){return this.cellsLocked},mxGraph.prototype.setCellsLocked=function(e){this.cellsLocked=e},mxGraph.prototype.getCloneableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellCloneable(e)}))},mxGraph.prototype.isCellCloneable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsCloneable()&&0!=e[mxConstants.STYLE_CLONEABLE]},mxGraph.prototype.isCellsCloneable=function(){return this.cellsCloneable},mxGraph.prototype.setCellsCloneable=function(e){this.cellsCloneable=e},mxGraph.prototype.getExportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canExportCell(e)}))},mxGraph.prototype.canExportCell=function(e){return this.exportEnabled},mxGraph.prototype.getImportableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.canImportCell(e)}))},mxGraph.prototype.canImportCell=function(e){return this.importEnabled},mxGraph.prototype.isCellSelectable=function(e){return this.isCellsSelectable()},mxGraph.prototype.isCellsSelectable=function(){return this.cellsSelectable},mxGraph.prototype.setCellsSelectable=function(e){this.cellsSelectable=e},mxGraph.prototype.getDeletableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellDeletable(e)}))},mxGraph.prototype.isCellDeletable=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isCellsDeletable()&&0!=e[mxConstants.STYLE_DELETABLE]},mxGraph.prototype.isCellsDeletable=function(){return this.cellsDeletable},mxGraph.prototype.setCellsDeletable=function(e){this.cellsDeletable=e},mxGraph.prototype.isLabelMovable=function(e){return!this.isCellLocked(e)&&(this.model.isEdge(e)&&this.edgeLabelsMovable||this.model.isVertex(e)&&this.vertexLabelsMovable)},mxGraph.prototype.getMovableCells=function(e){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellMovable(e)}))},mxGraph.prototype.isCellMovable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsMovable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_MOVABLE]},mxGraph.prototype.isCellsMovable=function(){return this.cellsMovable},mxGraph.prototype.setCellsMovable=function(e){this.cellsMovable=e},mxGraph.prototype.isGridEnabled=function(){return this.gridEnabled},mxGraph.prototype.setGridEnabled=function(e){this.gridEnabled=e},mxGraph.prototype.isPortsEnabled=function(){return this.portsEnabled},mxGraph.prototype.setPortsEnabled=function(e){this.portsEnabled=e},mxGraph.prototype.getGridSize=function(){return this.gridSize},mxGraph.prototype.setGridSize=function(e){this.gridSize=e},mxGraph.prototype.getTolerance=function(){return this.tolerance},mxGraph.prototype.setTolerance=function(e){this.tolerance=e},mxGraph.prototype.isVertexLabelsMovable=function(){return this.vertexLabelsMovable},mxGraph.prototype.setVertexLabelsMovable=function(e){this.vertexLabelsMovable=e},mxGraph.prototype.isEdgeLabelsMovable=function(){return this.edgeLabelsMovable},mxGraph.prototype.setEdgeLabelsMovable=function(e){this.edgeLabelsMovable=e},mxGraph.prototype.isSwimlaneNesting=function(){return this.swimlaneNesting},mxGraph.prototype.setSwimlaneNesting=function(e){this.swimlaneNesting=e},mxGraph.prototype.isSwimlaneSelectionEnabled=function(){return this.swimlaneSelectionEnabled},mxGraph.prototype.setSwimlaneSelectionEnabled=function(e){this.swimlaneSelectionEnabled=e},mxGraph.prototype.isMultigraph=function(){return this.multigraph},mxGraph.prototype.setMultigraph=function(e){this.multigraph=e},mxGraph.prototype.isAllowLoops=function(){return this.allowLoops},mxGraph.prototype.setAllowDanglingEdges=function(e){this.allowDanglingEdges=e},mxGraph.prototype.isAllowDanglingEdges=function(){return this.allowDanglingEdges},mxGraph.prototype.setConnectableEdges=function(e){this.connectableEdges=e},mxGraph.prototype.isConnectableEdges=function(){return this.connectableEdges},mxGraph.prototype.setCloneInvalidEdges=function(e){this.cloneInvalidEdges=e},mxGraph.prototype.isCloneInvalidEdges=function(){return this.cloneInvalidEdges},mxGraph.prototype.setAllowLoops=function(e){this.allowLoops=e},mxGraph.prototype.isDisconnectOnMove=function(){return this.disconnectOnMove},mxGraph.prototype.setDisconnectOnMove=function(e){this.disconnectOnMove=e},mxGraph.prototype.isDropEnabled=function(){return this.dropEnabled},mxGraph.prototype.setDropEnabled=function(e){this.dropEnabled=e},mxGraph.prototype.isSplitEnabled=function(){return this.splitEnabled},mxGraph.prototype.setSplitEnabled=function(e){this.splitEnabled=e},mxGraph.prototype.isCellResizable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsResizable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_RESIZABLE]},mxGraph.prototype.isCellsResizable=function(){return this.cellsResizable},mxGraph.prototype.setCellsResizable=function(e){this.cellsResizable=e},mxGraph.prototype.isTerminalPointMovable=function(e,n){return!0},mxGraph.prototype.isCellBendable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsBendable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_BENDABLE]},mxGraph.prototype.isCellsBendable=function(){return this.cellsBendable},mxGraph.prototype.setCellsBendable=function(e){this.cellsBendable=e},mxGraph.prototype.isCellEditable=function(e){var n=null!=(n=this.view.getState(e))?n.style:this.getCellStyle(e);return this.isCellsEditable()&&!this.isCellLocked(e)&&0!=n[mxConstants.STYLE_EDITABLE]},mxGraph.prototype.isCellsEditable=function(){return this.cellsEditable},mxGraph.prototype.setCellsEditable=function(e){this.cellsEditable=e},mxGraph.prototype.isCellDisconnectable=function(e,n,t){return this.isCellsDisconnectable()&&!this.isCellLocked(e)},mxGraph.prototype.isCellsDisconnectable=function(){return this.cellsDisconnectable},mxGraph.prototype.setCellsDisconnectable=function(e){this.cellsDisconnectable=e},mxGraph.prototype.isValidSource=function(e){return null==e&&this.allowDanglingEdges||null!=e&&(!this.model.isEdge(e)||this.connectableEdges)&&this.isCellConnectable(e)},mxGraph.prototype.isValidTarget=function(e){return this.isValidSource(e)},mxGraph.prototype.isValidConnection=function(e,n){return this.isValidSource(e)&&this.isValidTarget(n)},mxGraph.prototype.setConnectable=function(e){this.connectionHandler.setEnabled(e)},mxGraph.prototype.isConnectable=function(e){return this.connectionHandler.isEnabled()},mxGraph.prototype.setTooltips=function(e){this.tooltipHandler.setEnabled(e)},mxGraph.prototype.setPanning=function(e){this.panningHandler.panningEnabled=e},mxGraph.prototype.isEditing=function(e){if(null==this.cellEditor)return!1;var n=this.cellEditor.getEditingCell();return null==e?null!=n:e==n},mxGraph.prototype.isAutoSizeCell=function(e){var n=this.view.getState(e);return e=null!=n?n.style:this.getCellStyle(e),this.isAutoSizeCells()||1==e[mxConstants.STYLE_AUTOSIZE]},mxGraph.prototype.isAutoSizeCells=function(){return this.autoSizeCells},mxGraph.prototype.setAutoSizeCells=function(e){this.autoSizeCells=e},mxGraph.prototype.isExtendParent=function(e){return!this.getModel().isEdge(e)&&this.isExtendParents()},mxGraph.prototype.isExtendParents=function(){return this.extendParents},mxGraph.prototype.setExtendParents=function(e){this.extendParents=e},mxGraph.prototype.isExtendParentsOnAdd=function(){return this.extendParentsOnAdd},mxGraph.prototype.setExtendParentsOnAdd=function(e){this.extendParentsOnAdd=e},mxGraph.prototype.isConstrainChild=function(e){return this.isConstrainChildren()&&!this.getModel().isEdge(this.getModel().getParent(e))},mxGraph.prototype.isConstrainChildren=function(){return this.constrainChildren},mxGraph.prototype.setConstrainChildren=function(e){this.constrainChildren=e},mxGraph.prototype.isAllowNegativeCoordinates=function(){return this.allowNegativeCoordinates},mxGraph.prototype.setAllowNegativeCoordinates=function(e){this.allowNegativeCoordinates=e},mxGraph.prototype.getOverlap=function(e){return this.isAllowOverlapParent(e)?this.defaultOverlap:0},mxGraph.prototype.isAllowOverlapParent=function(e){return!1},mxGraph.prototype.getFoldableCells=function(e,n){return this.model.filterCells(e,mxUtils.bind(this,function(e){return this.isCellFoldable(e,n)}))},mxGraph.prototype.isCellFoldable=function(e,n){var t=null!=(t=this.view.getState(e))?t.style:this.getCellStyle(e);return 0<this.model.getChildCount(e)&&0!=t[mxConstants.STYLE_FOLDABLE]},mxGraph.prototype.isValidDropTarget=function(e,n,t){return null!=e&&(this.isSplitEnabled()&&this.isSplitTarget(e,n,t)||!this.model.isEdge(e)&&(this.isSwimlane(e)||0<this.model.getChildCount(e)&&!this.isCellCollapsed(e)))},mxGraph.prototype.isSplitTarget=function(e,n,t){return!(!this.model.isEdge(e)||null==n||1!=n.length||!this.isCellConnectable(n[0])||null!=this.getEdgeValidationError(e,this.model.getTerminal(e,!0),n[0]))&&(t=this.model.getTerminal(e,!0),e=this.model.getTerminal(e,!1),!this.model.isAncestor(n[0],t)&&!this.model.isAncestor(n[0],e))},mxGraph.prototype.getDropTarget=function(e,n,t){if(!this.isSwimlaneNesting())for(var a=0;a<e.length;a++)if(this.isSwimlane(e[a]))return null;if((a=mxUtils.convertPoint(this.container,mxEvent.getClientX(n),mxEvent.getClientY(n))).x-=this.panDx,a.y-=this.panDy,a=this.getSwimlaneAt(a.x,a.y),null==t)t=a;else if(null!=a){for(var i=this.model.getParent(a);null!=i&&this.isSwimlane(i)&&i!=t;)i=this.model.getParent(i);i==t&&(t=a)}for(;null!=t&&!this.isValidDropTarget(t,e,n)&&!this.model.isLayer(t);)t=this.model.getParent(t);return!this.model.isLayer(t)&&mxUtils.indexOf(e,t)<0?t:null},mxGraph.prototype.getDefaultParent=function(){var e=this.defaultParent;return null==e&&(null==(e=this.getCurrentRoot())&&(e=this.model.getRoot(),e=this.model.getChildAt(e,0))),e},mxGraph.prototype.setDefaultParent=function(e){this.defaultParent=e},mxGraph.prototype.getSwimlane=function(e){for(;null!=e&&!this.isSwimlane(e);)e=this.model.getParent(e);return e},mxGraph.prototype.getSwimlaneAt=function(e,n,t){if(null!=(t=t||this.getDefaultParent()))for(var a=this.model.getChildCount(t),i=0;i<a;i++){var s=this.model.getChildAt(t,i),o=this.getSwimlaneAt(e,n,s);if(null!=o)return o;if(this.isSwimlane(s)&&(o=this.view.getState(s),this.intersects(o,e,n)))return s}return null},mxGraph.prototype.getCellAt=function(e,n,t,a,i){if(a=null==a||a,i=null==i||i,null!=(t=null!=t?t:this.getDefaultParent()))for(var s=this.model.getChildCount(t)-1;0<=s;s--){var o=this.model.getChildAt(t,s),r=this.getCellAt(e,n,o,a,i);if(null!=r)return r;if(this.isCellVisible(o)&&(i&&this.model.isEdge(o)||a&&this.model.isVertex(o))&&(r=this.view.getState(o),this.intersects(r,e,n)))return o}return null},mxGraph.prototype.intersects=function(e,n,t){if(null!=e){var a=e.absolutePoints;if(null!=a){e=this.tolerance*this.tolerance;for(var i=a[0],s=1;s<a.length;s++){var o=a[s];if(mxUtils.ptSegDistSq(i.x,i.y,o.x,o.y,n,t)<=e)return!0;i=o}}else if(0!=(i=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))&&(a=Math.cos(-i),i=Math.sin(-i),s=new mxPoint(e.getCenterX(),e.getCenterY()),n=(i=mxUtils.getRotatedPoint(new mxPoint(n,t),a,i,s)).x,t=i.y),mxUtils.contains(e,n,t))return!0}return!1},mxGraph.prototype.hitsSwimlaneContent=function(e,n,t){var a=this.getView().getState(e);if(e=this.getStartSize(e),null!=a){var i=this.getView().getScale();if(n-=a.x,t-=a.y,0<e.width&&0<n&&n>e.width*i||0<e.height&&0<t&&t>e.height*i)return!0}return!1},mxGraph.prototype.getChildVertices=function(e){return this.getChildCells(e,!0,!1)},mxGraph.prototype.getChildEdges=function(e){return this.getChildCells(e,!1,!0)},mxGraph.prototype.getChildCells=function(e,n,t){for(e=null!=e?e:this.getDefaultParent(),e=this.model.getChildCells(e,null!=n&&n,null!=t&&t),n=[],t=0;t<e.length;t++)this.isCellVisible(e[t])&&n.push(e[t]);return n},mxGraph.prototype.getConnections=function(e,n){return this.getEdges(e,n,!0,!0,!1)},mxGraph.prototype.getIncomingEdges=function(e,n){return this.getEdges(e,n,!0,!1,!1)},mxGraph.prototype.getOutgoingEdges=function(e,n){return this.getEdges(e,n,!1,!0,!1)},mxGraph.prototype.getEdges=function(e,n,t,a,i,s){t=null==t||t,a=null==a||a,i=null==i||i,s=null!=s&&s;for(var o=[],r=this.isCellCollapsed(e),l=this.model.getChildCount(e),d=0;d<l;d++){var c=this.model.getChildAt(e,d);!r&&this.isCellVisible(c)||(o=o.concat(this.model.getEdges(c,t,a)))}for(o=o.concat(this.model.getEdges(e,t,a)),r=[],d=0;d<o.length;d++)l=null!=(c=this.view.getState(o[d]))?c.getVisibleTerminal(!0):this.view.getVisibleTerminal(o[d],!0),c=null!=c?c.getVisibleTerminal(!1):this.view.getVisibleTerminal(o[d],!1),(i&&l==c||l!=c&&(t&&c==e&&(null==n||this.isValidAncestor(l,n,s))||a&&l==e&&(null==n||this.isValidAncestor(c,n,s))))&&r.push(o[d]);return r},mxGraph.prototype.isValidAncestor=function(e,n,t){return t?this.model.isAncestor(n,e):this.model.getParent(e)==n},mxGraph.prototype.getOpposites=function(e,n,t,a){t=null==t||t,a=null==a||a;var i=[],s={};if(null!=e)for(var o=0;o<e.length;o++){var r=null!=(l=this.view.getState(e[o]))?l.getVisibleTerminal(!0):this.view.getVisibleTerminal(e[o],!0),l=null!=l?l.getVisibleTerminal(!1):this.view.getVisibleTerminal(e[o],!1);if(r==n&&null!=l&&l!=n&&a){var d=mxCellPath.create(l);null==s[d]&&(s[d]=l,i.push(l))}else l==n&&null!=r&&r!=n&&t&&(null==s[d=mxCellPath.create(r)]&&(s[d]=r,i.push(r)))}return i},mxGraph.prototype.getEdgesBetween=function(e,n,t){t=null!=t&&t;for(var a=this.getEdges(e),i=[],s=0;s<a.length;s++){var o=null!=(r=this.view.getState(a[s]))?r.getVisibleTerminal(!0):this.view.getVisibleTerminal(a[s],!0),r=null!=r?r.getVisibleTerminal(!1):this.view.getVisibleTerminal(a[s],!1);(o==e&&r==n||!t&&o==n&&r==e)&&i.push(a[s])}return i},mxGraph.prototype.getPointForEvent=function(e,n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a=this.view.scale,i=this.view.translate,s=0!=n?this.gridSize/2:0;return t.x=this.snap(t.x/a-i.x-s),t.y=this.snap(t.y/a-i.y-s),t},mxGraph.prototype.getCells=function(e,n,t,a,i,s){if(s=null!=s?s:[],0<t||0<a){var o=e+t,r=n+a;if(null!=(i=i||this.getDefaultParent()))for(var l=this.model.getChildCount(i),d=0;d<l;d++){var c=this.model.getChildAt(i,d),m=this.view.getState(c);if(this.isCellVisible(c)&&null!=m){var u=m;0!=(m=mxUtils.getValue(m.style,mxConstants.STYLE_ROTATION)||0)&&(u=mxUtils.getBoundingBox(u,m)),u.x>=e&&u.y+u.height<=r&&u.y>=n&&u.x+u.width<=o?s.push(c):this.getCells(e,n,t,a,c,s)}}}return s},mxGraph.prototype.getCellsBeyond=function(e,n,t,a,i){var s=[];if((a||i)&&(null==t&&(t=this.getDefaultParent()),null!=t))for(var o=this.model.getChildCount(t),r=0;r<o;r++){var l=this.model.getChildAt(t,r),d=this.view.getState(l);this.isCellVisible(l)&&null!=d&&(!a||d.x>=e)&&(!i||d.y>=n)&&s.push(l)}return s},mxGraph.prototype.findTreeRoots=function(e,n,t){n=null!=n&&n,t=null!=t&&t;var a=[];if(null!=e){for(var i=this.getModel(),s=i.getChildCount(e),o=null,r=0,l=0;l<s;l++){var d=i.getChildAt(e,l);if(this.model.isVertex(d)&&this.isCellVisible(d)){for(var c=this.getConnections(d,n?e:null),m=0,u=0,p=0;p<c.length;p++)this.view.getVisibleTerminal(c[p],!0)==d?m++:u++;(t&&0==m&&0<u||!t&&0==u&&0<m)&&a.push(d),r<(c=t?u-m:m-u)&&(r=c,o=d)}}0==a.length&&null!=o&&a.push(o)}return a},mxGraph.prototype.traverse=function(e,n,t,a,i){if(null!=t&&null!=e){n=null==n||n,i=i||[];var s=mxCellPath.create(e);if(null==i[s]&&(null==(a=t(i[s]=e,a))||a)&&0<(a=this.model.getEdgeCount(e)))for(s=0;s<a;s++){var o=this.model.getEdgeAt(e,s),r=this.model.getTerminal(o,!0)==e;n&&!r||(r=this.model.getTerminal(o,!r),this.traverse(r,n,t,o,i))}}},mxGraph.prototype.isCellSelected=function(e){return this.getSelectionModel().isSelected(e)},mxGraph.prototype.isSelectionEmpty=function(){return this.getSelectionModel().isEmpty()},mxGraph.prototype.clearSelection=function(){return this.getSelectionModel().clear()},mxGraph.prototype.getSelectionCount=function(){return this.getSelectionModel().cells.length},mxGraph.prototype.getSelectionCell=function(){return this.getSelectionModel().cells[0]},mxGraph.prototype.getSelectionCells=function(){return this.getSelectionModel().cells.slice()},mxGraph.prototype.setSelectionCell=function(e){this.getSelectionModel().setCell(e)},mxGraph.prototype.setSelectionCells=function(e){this.getSelectionModel().setCells(e)},mxGraph.prototype.addSelectionCell=function(e){this.getSelectionModel().addCell(e)},mxGraph.prototype.addSelectionCells=function(e){this.getSelectionModel().addCells(e)},mxGraph.prototype.removeSelectionCell=function(e){this.getSelectionModel().removeCell(e)},mxGraph.prototype.removeSelectionCells=function(e){this.getSelectionModel().removeCells(e)},mxGraph.prototype.selectRegion=function(e,n){var t=this.getCells(e.x,e.y,e.width,e.height);return this.selectCellsForEvent(t,n),t},mxGraph.prototype.selectNextCell=function(){this.selectCell(!0)},mxGraph.prototype.selectPreviousCell=function(){this.selectCell()},mxGraph.prototype.selectParentCell=function(){this.selectCell(!1,!0)},mxGraph.prototype.selectChildCell=function(){this.selectCell(!1,!1,!0)},mxGraph.prototype.selectCell=function(e,n,t){var a=0<(i=this.selectionModel).cells.length?i.cells[0]:null;1<i.cells.length&&i.clear();var i=null!=a?this.model.getParent(a):this.getDefaultParent(),s=this.model.getChildCount(i);null==a&&0<s?(e=this.model.getChildAt(i,0),this.setSelectionCell(e)):null!=a&&!n||null==this.view.getState(i)||null==this.model.getGeometry(i)?null!=a&&t?0<this.model.getChildCount(a)&&(e=this.model.getChildAt(a,0),this.setSelectionCell(e)):0<s&&(n=i.getIndex(a),e=e?(n++,this.model.getChildAt(i,n%s)):(n--,this.model.getChildAt(i,n<0?s-1:n)),this.setSelectionCell(e)):this.getCurrentRoot()!=i&&this.setSelectionCell(i)},mxGraph.prototype.selectAll=function(e){e=e||this.getDefaultParent(),null!=(e=this.model.getChildren(e))&&this.setSelectionCells(e)},mxGraph.prototype.selectVertices=function(e){this.selectCells(!0,!1,e)},mxGraph.prototype.selectEdges=function(e){this.selectCells(!1,!0,e)},mxGraph.prototype.selectCells=function(n,t,e){e=e||this.getDefaultParent();var a=mxUtils.bind(this,function(e){return null!=this.view.getState(e)&&0==this.model.getChildCount(e)&&(this.model.isVertex(e)&&n||this.model.isEdge(e)&&t)});e=this.model.filterDescendants(a,e),this.setSelectionCells(e)},mxGraph.prototype.selectCellForEvent=function(e,n){var t=this.isCellSelected(e);this.isToggleEvent(n)?t?this.removeSelectionCell(e):this.addSelectionCell(e):(!t||1!=this.getSelectionCount())&&this.setSelectionCell(e)},mxGraph.prototype.selectCellsForEvent=function(e,n){this.isToggleEvent(n)?this.addSelectionCells(e):this.setSelectionCells(e)},mxGraph.prototype.createHandler=function(e){var n=null;return null!=e&&(n=this.model.isEdge(e.cell)?(n=this.view.getEdgeStyle(e),this.isLoop(e)||n==mxEdgeStyle.ElbowConnector||n==mxEdgeStyle.SideToSide||n==mxEdgeStyle.TopToBottom?new mxElbowEdgeHandler(e):n==mxEdgeStyle.SegmentConnector||n==mxEdgeStyle.OrthConnector?new mxEdgeSegmentHandler(e):new mxEdgeHandler(e)):new mxVertexHandler(e)),n},mxGraph.prototype.addMouseListener=function(e){null==this.mouseListeners&&(this.mouseListeners=[]),this.mouseListeners.push(e)},mxGraph.prototype.removeMouseListener=function(e){if(null!=this.mouseListeners)for(var n=0;n<this.mouseListeners.length;n++)if(this.mouseListeners[n]==e){this.mouseListeners.splice(n,1);break}},mxGraph.prototype.updateMouseEvent=function(e){if(null==e.graphX||null==e.graphY){var n=mxUtils.convertPoint(this.container,e.getX(),e.getY());e.graphX=n.x-this.panDx,e.graphY=n.y-this.panDy}},mxGraph.prototype.fireMouseEvent=function(e,n,t){if(null==t&&(t=this),this.updateMouseEvent(n),e==mxEvent.MOUSE_DOWN&&(this.isMouseDown=!0),mxClient.IS_TOUCH&&this.doubleTapEnabled&&e==mxEvent.MOUSE_DOWN){var a=(new Date).getTime();a-this.lastTouchTime<this.doubleTapTimeout&&Math.abs(this.lastTouchX-n.getX())<this.doubleTapTolerance&&Math.abs(this.lastTouchY-n.getY())<this.doubleTapTolerance?(this.lastTouchTime=0,this.dblClick(n.getEvent(),n.getCell()),n.getEvent().cancelBubble=!0):(this.lastTouchX=n.getX(),this.lastTouchY=n.getY(),this.lastTouchTime=a)}if(a=2!=n.getEvent().detail,mxClient.IS_IE&&"CSS1Compat"==document.compatMode&&((null!=this.lastMouseX&&Math.abs(this.lastMouseX-n.getX())>this.doubleTapTolerance||null!=this.lastMouseY&&Math.abs(this.lastMouseY-n.getY())>this.doubleTapTolerance)&&(a=!0),e==mxEvent.MOUSE_UP&&(this.lastMouseX=n.getX(),this.lastMouseY=n.getY())),(e!=mxEvent.MOUSE_UP||this.isMouseDown)&&a){if(e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1),!this.isEditing()&&(mxClient.IS_OP||mxClient.IS_SF||mxClient.IS_GC||mxClient.IS_IE&&mxClient.IS_SVG||n.getEvent().target!=this.container)){if(e==mxEvent.MOUSE_MOVE&&this.isMouseDown&&this.autoScroll&&this.scrollPointToVisible(n.getGraphX(),n.getGraphY(),this.autoExtend),null!=this.mouseListeners)for(t=[t,n],n.getEvent().returnValue=!0,a=0;a<this.mouseListeners.length;a++){var i=this.mouseListeners[a];e==mxEvent.MOUSE_DOWN?i.mouseDown.apply(i,t):e==mxEvent.MOUSE_MOVE?i.mouseMove.apply(i,t):e==mxEvent.MOUSE_UP&&i.mouseUp.apply(i,t)}e==mxEvent.MOUSE_UP&&this.click(n)}}else e==mxEvent.MOUSE_UP&&(this.isMouseDown=!1)},mxGraph.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tooltipHandler&&this.tooltipHandler.destroy(),null!=this.selectionCellsHandler&&this.selectionCellsHandler.destroy(),null!=this.panningHandler&&this.panningHandler.destroy(),null!=this.connectionHandler&&this.connectionHandler.destroy(),null!=this.graphHandler&&this.graphHandler.destroy(),null!=this.cellEditor&&this.cellEditor.destroy(),null!=this.view&&this.view.destroy(),null!=this.model&&null!=this.graphModelChangeListener&&(this.model.removeListener(this.graphModelChangeListener),this.graphModelChangeListener=null),this.container=null)},mxCellOverlay.prototype=new mxEventSource,mxCellOverlay.prototype.constructor=mxCellOverlay,mxCellOverlay.prototype.image=null,mxCellOverlay.prototype.tooltip=null,mxCellOverlay.prototype.align=mxConstants.ALIGN_RIGHT,mxCellOverlay.prototype.verticalAlign=mxConstants.ALIGN_BOTTOM,mxCellOverlay.prototype.offset=null,mxCellOverlay.prototype.cursor=null,mxCellOverlay.prototype.defaultOverlap=.5,mxCellOverlay.prototype.getBounds=function(e){var n=e.view.graph.getModel().isEdge(e.cell),t=e.view.scale,a=null,i=this.image.width,s=this.image.height;return n?a=1==(n=e.absolutePoints).length%2?n[Math.floor(n.length/2)]:(e=n[(a=n.length/2)-1],n=n[a],new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2)):((a=new mxPoint).x=this.align==mxConstants.ALIGN_LEFT?e.x:this.align==mxConstants.ALIGN_CENTER?e.x+e.width/2:e.x+e.width,a.y=this.verticalAlign==mxConstants.ALIGN_TOP?e.y:this.verticalAlign==mxConstants.ALIGN_MIDDLE?e.y+e.height/2:e.y+e.height),new mxRectangle(Math.round(a.x-(i*this.defaultOverlap-this.offset.x)*t),Math.round(a.y-(s*this.defaultOverlap-this.offset.y)*t),i*t,s*t)},mxCellOverlay.prototype.toString=function(){return this.tooltip},mxOutline.prototype.source=null,mxOutline.prototype.outline=null,mxOutline.prototype.graphRenderHint=mxConstants.RENDERING_HINT_FASTER,mxOutline.prototype.enabled=!0,mxOutline.prototype.showViewport=!0,mxOutline.prototype.border=10,mxOutline.prototype.sizerSize=8,mxOutline.prototype.updateOnPan=!1,mxOutline.prototype.sizerImage=null,mxOutline.prototype.suspended=!1,mxOutline.prototype.init=function(e){this.outline=new mxGraph(e,this.source.getModel(),this.graphRenderHint,this.source.getStylesheet()),this.outline.foldingEnabled=!1,this.outline.autoScroll=!1;var n=this.outline.graphModelChanged;this.outline.graphModelChanged=mxUtils.bind(this,function(e){!this.suspended&&null!=this.outline&&n.apply(this.outline,arguments)}),mxClient.IS_SVG&&((e=this.outline.getView().getCanvas().parentNode).setAttribute("shape-rendering","optimizeSpeed"),e.setAttribute("image-rendering","optimizeSpeed")),this.outline.labelsVisible=!1,this.outline.setEnabled(!1),this.updateHandler=mxUtils.bind(this,function(e,n){!this.suspended&&!this.active&&this.update()}),this.source.getModel().addListener(mxEvent.CHANGE,this.updateHandler),this.outline.addMouseListener(this),(e=this.source.getView()).addListener(mxEvent.SCALE,this.updateHandler),e.addListener(mxEvent.TRANSLATE,this.updateHandler),e.addListener(mxEvent.SCALE_AND_TRANSLATE,this.updateHandler),e.addListener(mxEvent.DOWN,this.updateHandler),e.addListener(mxEvent.UP,this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.panHandler=mxUtils.bind(this,function(e){this.updateOnPan&&this.updateHandler.apply(this,arguments)}),this.source.addListener(mxEvent.PAN,this.panHandler),this.refreshHandler=mxUtils.bind(this,function(e){this.outline.setStylesheet(this.source.getStylesheet()),this.outline.refresh()}),this.source.addListener(mxEvent.REFRESH,this.refreshHandler),this.bounds=new mxRectangle(0,0,0,0),this.selectionBorder=new mxRectangleShape(this.bounds,null,mxConstants.OUTLINE_COLOR,mxConstants.OUTLINE_STROKEWIDTH),this.selectionBorder.dialect=this.outline.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.init(this.outline.getView().getOverlayPane()),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.outline),this.selectionBorder.node.style.background="",this.sizer=this.createSizer(),this.sizer.init(this.outline.getView().getOverlayPane()),this.enabled&&(this.sizer.node.style.cursor="pointer"),mxEvent.addListener(this.sizer.node,mxClient.IS_TOUCH?"touchstart":"mousedown",mxUtils.bind(this,function(e){this.outline.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))})),this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display,this.selectionBorder.node.style.cursor="move",this.update(!1)},mxOutline.prototype.isEnabled=function(){return this.enabled},mxOutline.prototype.setEnabled=function(e){this.enabled=e},mxOutline.prototype.setZoomEnabled=function(e){this.sizer.node.style.visibility=e?"visible":"hidden"},mxOutline.prototype.refresh=function(){this.update(!0)},mxOutline.prototype.createSizer=function(){var e=null!=this.sizerImage?new mxImageShape(new mxRectangle(0,0,this.sizerImage.width,this.sizerImage.height),this.sizerImage.src):new mxRectangleShape(new mxRectangle(0,0,this.sizerSize,this.sizerSize),mxConstants.OUTLINE_HANDLE_FILLCOLOR,mxConstants.OUTLINE_HANDLE_STROKECOLOR);return e.dialect=this.outline.dialect,e},mxOutline.prototype.getSourceContainerSize=function(){return new mxRectangle(0,0,this.source.container.scrollWidth,this.source.container.scrollHeight)},mxOutline.prototype.getOutlineOffset=function(e){return null},mxOutline.prototype.update=function(e){if(null!=this.source){var n=this.source.view.scale,t=new mxRectangle((t=this.source.getGraphBounds()).x/n+this.source.panDx,t.y/n+this.source.panDy,t.width/n,t.height/n),a=new mxRectangle(0,0,this.source.container.clientWidth/n,this.source.container.clientHeight/n);(s=t.clone()).add(a);var i=this.getSourceContainerSize(),s=(a=Math.max(i.width/n,s.width),n=Math.max(i.height/n,s.height),Math.max(0,this.outline.container.clientWidth-this.border));i=Math.max(0,this.outline.container.clientHeight-this.border);if(0<(s=Math.min(s/a,i/n))){this.outline.getView().scale!=s&&(this.outline.getView().scale=s,e=!0),(a=this.outline.getView()).currentRoot!=this.source.getView().currentRoot&&a.setCurrentRoot(this.source.getView().currentRoot);i=(n=this.source.view.translate).x+this.source.panDx;var o=n.y+this.source.panDy;null!=(s=this.getOutlineOffset(s))&&(i+=s.x,o+=s.y),t.x<0&&(i-=t.x),t.y<0&&(o-=t.y),a.translate.x==i&&a.translate.y==o||(a.translate.x=i,a.translate.y=o,e=!0);t=a.translate,i=(s=this.source.getView().scale)/a.scale,o=1/a.scale;var r=this.source.container;this.bounds=new mxRectangle((t.x-n.x-this.source.panDx)/o,(t.y-n.y-this.source.panDy)/o,r.clientWidth/i,r.clientHeight/i),this.bounds.x+=this.source.container.scrollLeft*a.scale/s,this.bounds.y+=this.source.container.scrollTop*a.scale/s,(t=this.selectionBorder.bounds).x==this.bounds.x&&t.y==this.bounds.y&&t.width==this.bounds.width&&t.height==this.bounds.height||(this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()),t=this.sizer.bounds,a=new mxRectangle(this.bounds.x+this.bounds.width-t.width/2,this.bounds.y+this.bounds.height-t.height/2,t.width,t.height),t.x==a.x&&t.y==a.y&&t.width==a.width&&t.height==a.height||(this.sizer.bounds=a,"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw()),e&&this.outline.view.revalidate()}}},mxOutline.prototype.mouseDown=function(e,n){this.enabled&&this.showViewport&&(this.zoom=n.isSource(this.sizer),this.startX=n.getX(),this.startY=n.getY(),this.active=!0,this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)?(this.dx0=this.source.container.scrollLeft,this.dy0=this.source.container.scrollTop):this.dy0=this.dx0=0),n.consume()},mxOutline.prototype.mouseMove=function(e,n){if(this.active){this.selectionBorder.node.style.display=this.showViewport?"":"none",this.sizer.node.style.display=this.selectionBorder.node.style.display;var t=n.getX()-this.startX,a=n.getY()-this.startY,i=null;if(this.zoom)a=t/((i=this.source.container).clientWidth/i.clientHeight),i=new mxRectangle(this.bounds.x,this.bounds.y,Math.max(1,this.bounds.width+t),Math.max(1,this.bounds.height+a)),this.selectionBorder.bounds=i,this.selectionBorder.redraw();else{var s=this.outline.getView().scale;i=new mxRectangle(this.bounds.x+t,this.bounds.y+a,this.bounds.width,this.bounds.height);this.selectionBorder.bounds=i,this.selectionBorder.redraw(),t=t/s*this.source.getView().scale,a=a/s*this.source.getView().scale,this.source.panGraph(-t-this.dx0,-a-this.dy0)}t=this.sizer.bounds,this.sizer.bounds=new mxRectangle(i.x+i.width-t.width/2,i.y+i.height-t.height/2,t.width,t.height),"hidden"!=this.sizer.node.style.visibility&&this.sizer.redraw(),n.consume()}},mxOutline.prototype.mouseUp=function(e,n){if(this.active){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(0<Math.abs(t)||0<Math.abs(a)){if(this.zoom){a=this.selectionBorder.bounds.width;var i=this.source.getView().scale;this.source.zoomTo(i-t*i/a,!1)}else this.source.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.source.container)||(this.source.panGraph(0,0),t/=this.outline.getView().scale,a/=this.outline.getView().scale,i=this.source.getView().translate,this.source.getView().setTranslate(i.x-t,i.y-a));this.update(),n.consume()}this.index=null,this.active=!1}},mxOutline.prototype.destroy=function(){null!=this.source&&(this.source.removeListener(this.panHandler),this.source.removeListener(this.refreshHandler),this.source.getModel().removeListener(this.updateHandler),this.source.getView().removeListener(this.updateHandler),mxEvent.addListener(this.source.container,"scroll",this.updateHandler),this.source=null),null!=this.outline&&(this.outline.removeMouseListener(this),this.outline.destroy(),this.outline=null),null!=this.selectionBorder&&(this.selectionBorder.destroy(),this.selectionBorder=null),null!=this.sizer&&(this.sizer.destroy(),this.sizer=null)},mxMultiplicity.prototype.type=null,mxMultiplicity.prototype.attr=null,mxMultiplicity.prototype.value=null,mxMultiplicity.prototype.source=null,mxMultiplicity.prototype.min=null,mxMultiplicity.prototype.max=null,mxMultiplicity.prototype.validNeighbors=null,mxMultiplicity.prototype.validNeighborsAllowed=!0,mxMultiplicity.prototype.countError=null,mxMultiplicity.prototype.typeError=null,mxMultiplicity.prototype.check=function(e,n,t,a,i,s){var o="";return(this.source&&this.checkTerminal(e,t,n)||!this.source&&this.checkTerminal(e,a,n))&&(null!=this.countError&&(this.source&&(0==this.max||i>=this.max)||!this.source&&(0==this.max||s>=this.max))&&(o+=this.countError+"\n"),null!=this.validNeighbors&&null!=this.typeError&&0<this.validNeighbors.length&&(this.checkNeighbors(e,n,t,a)||(o+=this.typeError+"\n"))),0<o.length?o:null},mxMultiplicity.prototype.checkNeighbors=function(e,n,t,a){n=e.model.getValue(t),a=e.model.getValue(a),t=!this.validNeighborsAllowed;for(var i=this.validNeighbors,s=0;s<i.length;s++){if(this.source&&this.checkType(e,a,i[s])){t=this.validNeighborsAllowed;break}if(!this.source&&this.checkType(e,n,i[s])){t=this.validNeighborsAllowed;break}}return t},mxMultiplicity.prototype.checkTerminal=function(e,n,t){return n=e.model.getValue(n),this.checkType(e,n,this.type,this.attr,this.value)},mxMultiplicity.prototype.checkType=function(e,n,t,a,i){return null!=n&&(isNaN(n.nodeType)?n==t:mxUtils.isNode(n,t,a,i))},mxLayoutManager.prototype=new mxEventSource,mxLayoutManager.prototype.constructor=mxLayoutManager,mxLayoutManager.prototype.graph=null,mxLayoutManager.prototype.bubbling=!0,mxLayoutManager.prototype.enabled=!0,mxLayoutManager.prototype.updateHandler=null,mxLayoutManager.prototype.moveHandler=null,mxLayoutManager.prototype.isEnabled=function(){return this.enabled},mxLayoutManager.prototype.setEnabled=function(e){this.enabled=e},mxLayoutManager.prototype.isBubbling=function(){return this.bubbling},mxLayoutManager.prototype.setBubbling=function(e){this.bubbling=e},mxLayoutManager.prototype.getGraph=function(){return this.graph},mxLayoutManager.prototype.setGraph=function(e){if(null!=this.graph){var n=this.graph.getModel();n.removeListener(this.undoHandler),this.graph.removeListener(this.moveHandler)}this.graph=e,null!=this.graph&&((n=this.graph.getModel()).addListener(mxEvent.BEFORE_UNDO,this.undoHandler),this.graph.addListener(mxEvent.MOVE_CELLS,this.moveHandler))},mxLayoutManager.prototype.getLayout=function(e){return null},mxLayoutManager.prototype.beforeUndo=function(e){e=this.getCellsForChanges(e.changes);var n=this.getGraph().getModel();if(this.isBubbling())for(var t=n.getParents(e);0<t.length;)e=e.concat(t),t=n.getParents(t);this.layoutCells(mxUtils.sortCells(e,!1))},mxLayoutManager.prototype.cellsMoved=function(e,n){if(null!=e&&null!=n)for(var t=mxUtils.convertPoint(this.getGraph().container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.getGraph().getModel(),i=0;i<e.length;i++){var s=this.getLayout(a.getParent(e[i]));null!=s&&s.moveCell(e[i],t.x,t.y)}},mxLayoutManager.prototype.getCellsForChanges=function(e){for(var n=[],t={},a=0;a<e.length;a++){if((i=e[a])instanceof mxRootChange)return[];for(var i=this.getCellsForChange(i),s=0;s<i.length;s++)if(null!=i[s]){var o=mxCellPath.create(i[s]);null==t[o]&&(t[o]=i[s],n.push(i[s]))}}return n},mxLayoutManager.prototype.getCellsForChange=function(e){var n=this.getGraph().getModel();return e instanceof mxChildChange?[e.child,e.previous,n.getParent(e.child)]:e instanceof mxTerminalChange||e instanceof mxGeometryChange?[e.cell,n.getParent(e.cell)]:[]},mxLayoutManager.prototype.layoutCells=function(e){if(0<e.length){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=null,a=0;a<e.length;a++)e[a]!=n.getRoot()&&e[a]!=t&&(t=e[a],this.executeLayout(this.getLayout(t),t));this.fireEvent(new mxEventObject(mxEvent.LAYOUT_CELLS,"cells",e))}finally{n.endUpdate()}}},mxLayoutManager.prototype.executeLayout=function(e,n){null!=e&&null!=n&&e.execute(n)},mxLayoutManager.prototype.destroy=function(){this.setGraph(null)},mxSpaceManager.prototype=new mxEventSource,mxSpaceManager.prototype.constructor=mxSpaceManager,mxSpaceManager.prototype.graph=null,mxSpaceManager.prototype.enabled=!0,mxSpaceManager.prototype.shiftRightwards=!0,mxSpaceManager.prototype.shiftDownwards=!0,mxSpaceManager.prototype.extendParents=!0,mxSpaceManager.prototype.resizeHandler=null,mxSpaceManager.prototype.foldHandler=null,mxSpaceManager.prototype.isCellIgnored=function(e){return!this.getGraph().getModel().isVertex(e)},mxSpaceManager.prototype.isCellShiftable=function(e){return this.getGraph().getModel().isVertex(e)&&this.getGraph().isCellMovable(e)},mxSpaceManager.prototype.isEnabled=function(){return this.enabled},mxSpaceManager.prototype.setEnabled=function(e){this.enabled=e},mxSpaceManager.prototype.isShiftRightwards=function(){return this.shiftRightwards},mxSpaceManager.prototype.setShiftRightwards=function(e){this.shiftRightwards=e},mxSpaceManager.prototype.isShiftDownwards=function(){return this.shiftDownwards},mxSpaceManager.prototype.setShiftDownwards=function(e){this.shiftDownwards=e},mxSpaceManager.prototype.isExtendParents=function(){return this.extendParents},mxSpaceManager.prototype.setExtendParents=function(e){this.extendParents=e},mxSpaceManager.prototype.getGraph=function(){return this.graph},mxSpaceManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.resizeHandler),this.graph.removeListener(this.foldHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.RESIZE_CELLS,this.resizeHandler),this.graph.addListener(mxEvent.FOLD_CELLS,this.foldHandler))},mxSpaceManager.prototype.cellsResized=function(e){if(null!=e){var n=this.graph.getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isCellIgnored(e[t])){this.cellResized(e[t]);break}}finally{n.endUpdate()}}},mxSpaceManager.prototype.cellResized=function(e){var n=this.getGraph(),t=n.getView(),a=n.getModel(),i=t.getState(e),s=t.getState(a.getParent(e));if(null!=i&&null!=s){var o=this.getCellsToShift(i),r=a.getGeometry(e);if(null!=o&&null!=r){var l=t.translate,d=t.scale,c=(t=i.x-s.origin.x-l.x*d,s=i.y-s.origin.y-l.y*d,l=i.x+i.width,i.y+i.height),m=i.width-r.width*d+t-r.x*d,u=i.height-r.height*d+s-r.y*d,p=1-r.width*d/i.width;i=1-r.height*d/i.height;a.beginUpdate();try{for(r=0;r<o.length;r++)o[r]!=e&&this.isCellShiftable(o[r])&&this.shiftCell(o[r],m,u,t,s,l,c,p,i,this.isExtendParents()&&n.isExtendParent(o[r]))}finally{a.endUpdate()}}}},mxSpaceManager.prototype.shiftCell=function(e,n,t,a,i,s,o,r,l,d){var c=(a=this.getGraph()).getView().getState(e);if(null!=c){var m=a.getModel();if(null!=(p=m.getGeometry(e))){m.beginUpdate();try{if(this.isShiftRightwards())if(c.x>=s)(p=p.clone()).translate(-n,0);else{var u=Math.max(0,c.x-x0);(p=p.clone()).translate(-r*u,0)}if(this.isShiftDownwards())if(c.y>=o)(p=p.clone()).translate(0,-t);else{var p,g=Math.max(0,c.y-i);(p=p.clone()).translate(0,-l*g)}p!=m.getGeometry(e)&&(m.setGeometry(e,p),d&&a.extendParent(e))}finally{m.endUpdate()}}}},mxSpaceManager.prototype.getCellsToShift=function(e){var n=this.getGraph(),t=n.getModel().getParent(e.cell),a=this.isShiftDownwards(),i=this.isShiftRightwards();return n.getCellsBeyond(e.x+(a?0:e.width),e.y+(a&&i?0:e.height),t,i,a)},mxSpaceManager.prototype.destroy=function(){this.setGraph(null)},mxSwimlaneManager.prototype=new mxEventSource,mxSwimlaneManager.prototype.constructor=mxSwimlaneManager,mxSwimlaneManager.prototype.graph=null,mxSwimlaneManager.prototype.enabled=!0,mxSwimlaneManager.prototype.horizontal=!0,mxSwimlaneManager.prototype.addEnabled=!0,mxSwimlaneManager.prototype.resizeEnabled=!0,mxSwimlaneManager.prototype.addHandler=null,mxSwimlaneManager.prototype.resizeHandler=null,mxSwimlaneManager.prototype.isEnabled=function(){return this.enabled},mxSwimlaneManager.prototype.setEnabled=function(e){this.enabled=e},mxSwimlaneManager.prototype.isHorizontal=function(){return this.horizontal},mxSwimlaneManager.prototype.setHorizontal=function(e){this.horizontal=e},mxSwimlaneManager.prototype.isAddEnabled=function(){return this.addEnabled},mxSwimlaneManager.prototype.setAddEnabled=function(e){this.addEnabled=e},mxSwimlaneManager.prototype.isResizeEnabled=function(){return this.resizeEnabled},mxSwimlaneManager.prototype.setResizeEnabled=function(e){this.resizeEnabled=e},mxSwimlaneManager.prototype.getGraph=function(){return this.graph},mxSwimlaneManager.prototype.setGraph=function(e){null!=this.graph&&(this.graph.removeListener(this.addHandler),this.graph.removeListener(this.resizeHandler)),this.graph=e,null!=this.graph&&(this.graph.addListener(mxEvent.ADD_CELLS,this.addHandler),this.graph.addListener(mxEvent.CELLS_RESIZED,this.resizeHandler))},mxSwimlaneManager.prototype.isSwimlaneIgnored=function(e){return!this.getGraph().isSwimlane(e)},mxSwimlaneManager.prototype.isCellHorizontal=function(e){if(this.graph.isSwimlane(e)){var n=this.graph.view.getState(e);return e=null!=n?n.style:this.graph.getCellStyle(e),1==mxUtils.getValue(e,mxConstants.STYLE_HORIZONTAL,1)}return!this.isHorizontal()},mxSwimlaneManager.prototype.cellsAdded=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)this.isSwimlaneIgnored(e[t])||this.swimlaneAdded(e[t])}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.swimlaneAdded=function(e){for(var n=this.getGraph().getModel(),t=n.getParent(e),a=n.getChildCount(t),i=null,s=0;s<a;s++){var o=n.getChildAt(t,s);if(o!=e&&!this.isSwimlaneIgnored(o)&&null!=(i=n.getGeometry(o)))break}null!=i&&this.resizeSwimlane(e,i.width,i.height)},mxSwimlaneManager.prototype.cellsResized=function(e){if(null!=e){var n=this.getGraph().getModel();n.beginUpdate();try{for(var t=0;t<e.length;t++)if(!this.isSwimlaneIgnored(e[t])){var a=n.getGeometry(e[t]);if(null!=a){for(var i=new mxRectangle(0,0,a.width,a.height),s=o=e[t];null!=s;){var o=s,r=(s=n.getParent(s),this.graph.isSwimlane(s)?this.graph.getStartSize(s):new mxRectangle);i.width+=r.width,i.height+=r.height}this.resizeSwimlane(o,i.width,i.height)}}}finally{n.endUpdate()}}},mxSwimlaneManager.prototype.resizeSwimlane=function(e,n,t){var a=this.getGraph().getModel();a.beginUpdate();try{if(!this.isSwimlaneIgnored(e))if(null!=(r=a.getGeometry(e))){var i=this.isCellHorizontal(e);(i&&r.height!=t||!i&&r.width!=n)&&(r=r.clone(),i?r.height=t:r.width=n,a.setGeometry(e,r))}var s=this.graph.isSwimlane(e)?this.graph.getStartSize(e):new mxRectangle;n-=s.width,t-=s.height;for(var o=a.getChildCount(e),r=0;r<o;r++){var l=a.getChildAt(e,r);this.resizeSwimlane(l,n,t)}}finally{a.endUpdate()}},mxSwimlaneManager.prototype.destroy=function(){this.setGraph(null)},mxTemporaryCellStates.prototype.view=null,mxTemporaryCellStates.prototype.oldStates=null,mxTemporaryCellStates.prototype.oldBounds=null,mxTemporaryCellStates.prototype.oldScale=null,mxTemporaryCellStates.prototype.destroy=function(){this.view.setScale(this.oldScale),this.view.setStates(this.oldStates),this.view.setGraphBounds(this.oldBounds)},mxCellStatePreview.prototype.graph=null,mxCellStatePreview.prototype.deltas=null,mxCellStatePreview.prototype.count=0,mxCellStatePreview.prototype.isEmpty=function(){return 0==this.count},mxCellStatePreview.prototype.moveState=function(e,n,t,a,i){a=null==a||a,i=null==i||i;var s=mxCellPath.create(e.cell),o=this.deltas[s];return null==o?(o=new mxPoint(n,t),this.deltas[s]=o,this.count++):a?(o.X+=n,o.Y+=t):(o.X=n,o.Y=t),i&&this.addEdges(e),o},mxCellStatePreview.prototype.show=function(e){var n,t=this.graph.getModel(),a=t.getRoot();for(n in this.deltas){var i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n];i=this.graph.view.getState(t.getParent(i));this.translateState(i,s,o.x,o.y)}for(n in this.deltas)i=mxCellPath.resolve(a,n),s=this.graph.view.getState(i),o=this.deltas[n],i=this.graph.view.getState(t.getParent(i)),this.revalidateState(i,s,o.x,o.y,e)},mxCellStatePreview.prototype.translateState=function(e,n,t,a){if(null!=n){var i=this.graph.getModel();if(i.isVertex(n.cell)){n.invalid=!0,this.graph.view.validateBounds(e,n.cell),e=i.getGeometry(n.cell);var s=mxCellPath.create(n.cell);0==t&&0==a||null==e||e.relative&&null==this.deltas[s]||(n.x+=t,n.y+=a)}for(e=i.getChildCount(n.cell),s=0;s<e;s++)this.translateState(n,this.graph.view.getState(i.getChildAt(n.cell,s)),t,a)}},mxCellStatePreview.prototype.revalidateState=function(e,n,t,a,i){if(null!=n){n.invalid=!0,this.graph.view.validatePoints(e,n.cell);var s=mxCellPath.create(n.cell),o=this.graph.getModel(),r=this.graph.getCellGeometry(n.cell);for(0==t&&0==a||null==r||!r.relative||!o.isVertex(n.cell)||null!=e&&!o.isVertex(e.cell)&&null==this.deltas[s]||(n.x+=t,n.y+=a,this.graph.cellRenderer.redraw(n)),null!=i&&i(n),e=o.getChildCount(n.cell),s=0;s<e;s++)this.revalidateState(n,this.graph.view.getState(o.getChildAt(n.cell,s)),t,a,i)}},mxCellStatePreview.prototype.addEdges=function(e){for(var n=this.graph.getModel(),t=n.getEdgeCount(e.cell),a=0;a<t;a++){var i=this.graph.view.getState(n.getEdgeAt(e.cell,a));null!=i&&this.moveState(i,0,0)}},mxConnectionConstraint.prototype.point=null,mxConnectionConstraint.prototype.perimeter=null,mxGraphHandler.prototype.graph=null,mxGraphHandler.prototype.maxCells=mxClient.IS_IE?20:50,mxGraphHandler.prototype.enabled=!0,mxGraphHandler.prototype.highlightEnabled=!0,mxGraphHandler.prototype.cloneEnabled=!0,mxGraphHandler.prototype.moveEnabled=!0,mxGraphHandler.prototype.guidesEnabled=!1,mxGraphHandler.prototype.guide=null,mxGraphHandler.prototype.currentDx=null,mxGraphHandler.prototype.currentDy=null,mxGraphHandler.prototype.updateCursor=!0,mxGraphHandler.prototype.selectEnabled=!0,mxGraphHandler.prototype.removeCellsFromParent=!0,mxGraphHandler.prototype.connectOnDrop=!1,mxGraphHandler.prototype.scrollOnMove=!0,mxGraphHandler.prototype.minimumSize=6,mxGraphHandler.prototype.previewColor="black",mxGraphHandler.prototype.htmlPreview=!1,mxGraphHandler.prototype.shape=null,mxGraphHandler.prototype.scaleGrid=!1,mxGraphHandler.prototype.rotationEnabled=!0,mxGraphHandler.prototype.isEnabled=function(){return this.enabled},mxGraphHandler.prototype.setEnabled=function(e){this.enabled=e},mxGraphHandler.prototype.isCloneEnabled=function(){return this.cloneEnabled},mxGraphHandler.prototype.setCloneEnabled=function(e){this.cloneEnabled=e},mxGraphHandler.prototype.isMoveEnabled=function(){return this.moveEnabled},mxGraphHandler.prototype.setMoveEnabled=function(e){this.moveEnabled=e},mxGraphHandler.prototype.isSelectEnabled=function(){return this.selectEnabled},mxGraphHandler.prototype.setSelectEnabled=function(e){this.selectEnabled=e},mxGraphHandler.prototype.isRemoveCellsFromParent=function(){return this.removeCellsFromParent},mxGraphHandler.prototype.setRemoveCellsFromParent=function(e){this.removeCellsFromParent=e},mxGraphHandler.prototype.getInitialCellForEvent=function(e){return e.getCell()},mxGraphHandler.prototype.isDelayedSelection=function(e){return this.graph.isCellSelected(e)},mxGraphHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&null!=n.getState()){var t=this.getInitialCellForEvent(n);if(this.cell=null,this.delayedSelection=this.isDelayedSelection(t),this.isSelectEnabled()&&!this.delayedSelection&&this.graph.selectCellForEvent(t,n.getEvent()),this.isMoveEnabled()){var a=this.graph.model,i=a.getGeometry(t);this.graph.isCellMovable(t)&&(!a.isEdge(t)||1<this.graph.getSelectionCount()||null!=i.points&&0<i.points.length||null==a.getTerminal(t,!0)||null==a.getTerminal(t,!1)||this.graph.allowDanglingEdges||this.graph.isCloneEvent(n.getEvent())&&this.graph.isCellsCloneable())&&this.start(t,n.getX(),n.getY()),this.cellWasClicked=!0,!mxClient.IS_SF&&!mxClient.IS_GC||"SELECT"!=n.getSource().nodeName?n.consume():mxClient.IS_SF&&"SELECT"==n.getSource().nodeName&&(this.cellWasClicked=!1,this.first=null)}}},mxGraphHandler.prototype.getGuideStates=function(){var e=this.graph.getDefaultParent(),n=this.graph.getModel(),t=mxUtils.bind(this,function(e){return null!=this.graph.view.getState(e)&&n.isVertex(e)&&null!=n.getGeometry(e)&&!n.getGeometry(e).relative});return this.graph.view.getCellStates(n.filterDescendants(t,e))},mxGraphHandler.prototype.getCells=function(e){return!this.delayedSelection&&this.graph.isCellMovable(e)?[e]:this.graph.getMovableCells(this.graph.getSelectionCells())},mxGraphHandler.prototype.getPreviewBounds=function(e){return null!=(e=this.getBoundingBox(e))&&(e.grow(-1,-1),e.width<this.minimumSize&&(e.x-=(this.minimumSize-e.width)/2,e.width=this.minimumSize),e.height<this.minimumSize&&(e.y-=(this.minimumSize-e.height)/2,e.height=this.minimumSize)),e},mxGraphHandler.prototype.getBoundingBox=function(e){var n=null;if(null!=e&&0<e.length)for(var t=this.graph.getModel(),a=0;a<e.length;a++)if(t.isVertex(e[a])||t.isEdge(e[a])){var i=this.graph.view.getState(e[a]);if(null!=i){var s=i;t.isVertex(e[a])&&null!=i.shape&&null!=i.shape.boundingBox&&(s=i.shape.boundingBox),null==n?n=new mxRectangle(s.x,s.y,s.width,s.height):n.add(s)}}return n},mxGraphHandler.prototype.createPreviewShape=function(e){return(e=new mxRectangleShape(e,null,this.previewColor)).isDashed=!0,this.htmlPreview?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.pointerEvents=!1),e},mxGraphHandler.prototype.start=function(e,n,t){this.cell=e,this.first=mxUtils.convertPoint(this.graph.container,n,t),this.cells=this.getCells(this.cell),this.bounds=this.graph.getView().getBounds(this.cells),this.pBounds=this.getPreviewBounds(this.cells),this.guidesEnabled&&(this.guide=new mxGuide(this.graph,this.getGuideStates()))},mxGraphHandler.prototype.useGuidesForEvent=function(e){return null==this.guide||this.guide.isEnabledForEvent(e.getEvent())},mxGraphHandler.prototype.snap=function(e){var n=this.scaleGrid?this.graph.view.scale:1;return e.x=this.graph.snap(e.x/n)*n,e.y=this.graph.snap(e.y/n)*n,e},mxGraphHandler.prototype.mouseMove=function(e,n){var t=this.graph;if(!n.isConsumed()&&t.isMouseDown&&null!=this.cell&&null!=this.first&&null!=this.bounds){var a=(s=mxUtils.convertPoint(t.container,n.getX(),n.getY())).x-this.first.x,i=s.y-this.first.y,s=t.tolerance;if(null!=this.shape||Math.abs(a)>s||Math.abs(i)>s){null==this.highlight&&(this.highlight=new mxCellHighlight(this.graph,mxConstants.DROP_TARGET_COLOR,3)),null==this.shape&&(this.shape=this.createPreviewShape(this.bounds));var o=t.isGridEnabledEvent(n.getEvent());s=!0;if(null!=this.guide&&this.useGuidesForEvent(n))s=!1,a=(i=this.guide.move(this.bounds,new mxPoint(a,i),o)).x,i=i.y;else if(o){var r=t.getView().translate,l=t.getView().scale;o=this.bounds.x-(t.snap(this.bounds.x/l-r.x)+r.x)*l,r=this.bounds.y-(t.snap(this.bounds.y/l-r.y)+r.y)*l,a=(i=this.snap(new mxPoint(a,i))).x-o,i=i.y-r}for(null!=this.guide&&s&&this.guide.hide(),t.isConstrainedEvent(n.getEvent())&&(Math.abs(a)>Math.abs(i)?i=0:a=0),this.currentDx=a,this.currentDy=i,this.updatePreviewShape(),s=null,i=n.getCell(),t.isDropEnabled()&&this.highlightEnabled&&(s=t.getDropTarget(this.cells,n.getEvent(),i)),o=s,r=t.getModel();null!=o&&o!=this.cells[0];)o=r.getParent(o);l=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled();var d=!1;null==(a=t.getView().getState(s))||null!=o||r.getParent(this.cell)==s&&!l?(this.target=null,this.connectOnDrop&&null!=i&&1==this.cells.length&&t.getModel().isVertex(i)&&t.isCellConnectable(i)&&(null!=(a=t.getView().getState(i))&&(t=null==t.getEdgeValidationError(null,this.cell,i)?mxConstants.VALID_COLOR:mxConstants.INVALID_CONNECT_TARGET_COLOR,this.setHighlightColor(t),d=!0))):(this.target!=s&&(this.target=s,this.setHighlightColor(mxConstants.DROP_TARGET_COLOR)),d=!0),null!=a&&d?this.highlight.highlight(a):this.highlight.hide()}n.consume(),mxEvent.consume(n.getEvent())}else!this.isMoveEnabled()&&!this.isCloneEnabled()||!this.updateCursor||n.isConsumed()||null==n.getState()||t.isMouseDown||(null==(a=t.getCursorForCell(n.getCell()))&&t.isEnabled()&&t.isCellMovable(n.getCell())&&(a=t.getModel().isEdge(n.getCell())?mxConstants.CURSOR_MOVABLE_EDGE:mxConstants.CURSOR_MOVABLE_VERTEX),n.getState().setCursor(a),n.consume())},mxGraphHandler.prototype.updatePreviewShape=function(){null!=this.shape&&(this.shape.bounds=new mxRectangle(Math.round(this.pBounds.x+this.currentDx-this.graph.panDx),Math.round(this.pBounds.y+this.currentDy-this.graph.panDy),this.pBounds.width,this.pBounds.height),this.shape.redraw())},mxGraphHandler.prototype.setHighlightColor=function(e){null!=this.highlight&&this.highlight.setHighlightColor(e)},mxGraphHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()){var t=this.graph;if(null!=this.cell&&null!=this.first&&null!=this.shape&&null!=this.currentDx&&null!=this.currentDy){var a=t.getView().scale,i=t.isCloneEvent(n.getEvent())&&t.isCellsCloneable()&&this.isCloneEnabled(),s=this.currentDx/a,o=(a=this.currentDy/a,n.getCell());this.connectOnDrop&&null==this.target&&null!=o&&t.getModel().isVertex(o)&&t.isCellConnectable(o)&&t.isEdgeValid(null,this.cell,o)?t.connectionHandler.connect(this.cell,o,n.getEvent()):(o=this.target,t.isSplitEnabled()&&t.isSplitTarget(o,this.cells,n.getEvent())?t.splitEdge(o,this.cells,null,s,a):this.moveCells(this.cells,s,a,i,this.target,n.getEvent()))}else this.isSelectEnabled()&&this.delayedSelection&&null!=this.cell&&this.selectDelayed(n)}this.cellWasClicked&&n.consume(),this.reset()},mxGraphHandler.prototype.selectDelayed=function(e){this.graph.selectCellForEvent(this.cell,e.getEvent())},mxGraphHandler.prototype.reset=function(){this.destroyShapes(),this.delayedSelection=this.cellWasClicked=!1,this.target=this.cell=this.first=this.guides=this.currentDy=this.currentDx=null},mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){if(this.graph.getModel().isVertex(e)){if(e=this.graph.getView().getState(e),t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(t),mxEvent.getClientY(t)),0!=(a=mxUtils.toRadians(mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION)||0))){n=Math.cos(-a);var a=Math.sin(-a),i=new mxPoint(e.getCenterX(),e.getCenterY());t=mxUtils.getRotatedPoint(t,n,a,i)}return null!=e&&!mxUtils.contains(e,t.x,t.y)}return!1},mxGraphHandler.prototype.moveCells=function(e,n,t,a,i,s){a&&(e=this.graph.getCloneableCells(e)),null==i&&this.isRemoveCellsFromParent()&&this.shouldRemoveCellsFromParent(this.graph.getModel().getParent(this.cell),e,s)&&(i=this.graph.getDefaultParent()),e=this.graph.moveCells(e,n-this.graph.panDx/this.graph.view.scale,t-this.graph.panDy/this.graph.view.scale,a,i,s),this.isSelectEnabled()&&this.scrollOnMove&&this.graph.scrollCellToVisible(e[0]),a&&this.graph.setSelectionCells(e)},mxGraphHandler.prototype.destroyShapes=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.guide&&(this.guide.destroy(),this.guide=null),null!=this.highlight&&(this.highlight.destroy(),this.highlight=null)},mxGraphHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.destroyShapes()},mxPanningHandler.prototype=new mxPopupMenu,mxPanningHandler.prototype.constructor=mxPanningHandler,mxPanningHandler.prototype.graph=null,mxPanningHandler.prototype.triggerX=null,mxPanningHandler.prototype.triggerY=null,mxPanningHandler.prototype.usePopupTrigger=!0,mxPanningHandler.prototype.useLeftButtonForPanning=!1,mxPanningHandler.prototype.selectOnPopup=!0,mxPanningHandler.prototype.clearSelectionOnBackground=!0,mxPanningHandler.prototype.ignoreCell=!1,mxPanningHandler.prototype.previewEnabled=!0,mxPanningHandler.prototype.useGrid=!1,mxPanningHandler.prototype.panningEnabled=!0,mxPanningHandler.prototype.isPanningEnabled=function(){return this.panningEnabled},mxPanningHandler.prototype.setPanningEnabled=function(e){this.panningEnabled=e},mxPanningHandler.prototype.init=function(){mxPopupMenu.prototype.init.apply(this),mxEvent.addListener(this.div,mxClient.IS_TOUCH?"touchmove":"mousemove",mxUtils.bind(this,function(e){this.graph.tooltipHandler.hide()}))},mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())&&mxEvent.isLeftMouseButton(n)||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)},mxPanningHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()){this.hideMenu(),this.dx0=-this.graph.container.scrollLeft,this.dy0=-this.graph.container.scrollTop;var t=mxUtils.convertPoint(this.graph.container,n.getX(),n.getY());this.triggerX=t.x,this.triggerY=t.y,this.popupTrigger=this.isPopupTrigger(n),this.panningTrigger=this.isPanningEnabled()&&this.isPanningTrigger(n),this.startX=n.getX(),this.startY=n.getY(),this.panningTrigger&&this.consumePanningTrigger(n)}},mxPanningHandler.prototype.consumePanningTrigger=function(e){e.consume()},mxPanningHandler.prototype.mouseMove=function(e,n){var t=n.getX()-this.startX,a=n.getY()-this.startY;if(this.active)this.previewEnabled&&(this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a)),this.graph.panGraph(t+this.dx0,a+this.dy0)),this.fireEvent(new mxEventObject(mxEvent.PAN,"event",n)),n.consume();else if(this.panningTrigger){var i=this.active;this.active=Math.abs(t)>this.graph.tolerance||Math.abs(a)>this.graph.tolerance,!i&&this.active&&this.fireEvent(new mxEventObject(mxEvent.PAN_START,"event",n))}},mxPanningHandler.prototype.mouseUp=function(e,n){var t=Math.abs(n.getX()-this.startX),a=Math.abs(n.getY()-this.startY);if(this.active){if(!this.graph.useScrollbarsForPanning||!mxUtils.hasScrollbars(this.graph.container)){t=n.getX()-this.startX,a=n.getY()-this.startY,this.useGrid&&(t=this.graph.snap(t),a=this.graph.snap(a));var i=this.graph.getView().scale,s=this.graph.getView().translate;this.graph.panGraph(0,0),this.panGraph(s.x+t/i,s.y+a/i)}this.active=!1,this.fireEvent(new mxEventObject(mxEvent.PAN_END,"event",n)),n.consume()}else this.popupTrigger&&t<this.graph.tolerance&&a<this.graph.tolerance&&(t=this.getCellForPopupEvent(n),this.graph.isEnabled()&&this.selectOnPopup&&null!=t&&!this.graph.isCellSelected(t)?this.graph.setSelectionCell(t):this.clearSelectionOnBackground&&null==t&&this.graph.clearSelection(),this.graph.tooltipHandler.hide(),a=mxUtils.getScrollOrigin(),a=new mxPoint(n.getX()+a.x,n.getY()+a.y),this.popup(a.x+1,a.y+1,t,n.getEvent()),n.consume());this.popupTrigger=this.panningTrigger=!1},mxPanningHandler.prototype.getCellForPopupEvent=function(e){return e.getCell()},mxPanningHandler.prototype.panGraph=function(e,n){this.graph.getView().setTranslate(e,n)},mxPanningHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxPopupMenu.prototype.destroy.apply(this)},mxUtils.extend(mxCellMarker,mxEventSource),mxCellMarker.prototype.graph=null,mxCellMarker.prototype.enabled=!0,mxCellMarker.prototype.hotspot=mxConstants.DEFAULT_HOTSPOT,mxCellMarker.prototype.hotspotEnabled=!1,mxCellMarker.prototype.validColor=null,mxCellMarker.prototype.invalidColor=null,mxCellMarker.prototype.currentColor=null,mxCellMarker.prototype.validState=null,mxCellMarker.prototype.markedState=null,mxCellMarker.prototype.setEnabled=function(e){this.enabled=e},mxCellMarker.prototype.isEnabled=function(){return this.enabled},mxCellMarker.prototype.setHotspot=function(e){this.hotspot=e},mxCellMarker.prototype.getHotspot=function(){return this.hotspot},mxCellMarker.prototype.setHotspotEnabled=function(e){this.hotspotEnabled=e},mxCellMarker.prototype.isHotspotEnabled=function(){return this.hotspotEnabled},mxCellMarker.prototype.hasValidState=function(){return null!=this.validState},mxCellMarker.prototype.getValidState=function(){return this.validState},mxCellMarker.prototype.getMarkedState=function(){return this.markedState},mxCellMarker.prototype.reset=function(){(this.validState=null)!=this.markedState&&(this.markedState=null,this.unmark())},mxCellMarker.prototype.process=function(e){var n=null;if(this.isEnabled()){var t=null!=(n=this.getState(e))&&this.isValidState(n);e=this.getMarkerColor(e.getEvent(),n,t),this.validState=t?n:null,n==this.markedState&&e==this.currentColor||(this.currentColor=e,null!=n&&null!=this.currentColor?(this.markedState=n,this.mark()):null!=this.markedState&&(this.markedState=null,this.unmark()))}return n},mxCellMarker.prototype.markCell=function(e,n){var t=this.graph.getView().getState(e);null!=t&&(this.currentColor=null!=n?n:this.validColor,this.markedState=t,this.mark())},mxCellMarker.prototype.mark=function(){this.highlight.setHighlightColor(this.currentColor),this.highlight.highlight(this.markedState),this.fireEvent(new mxEventObject(mxEvent.MARK,"state",this.markedState))},mxCellMarker.prototype.unmark=function(){this.mark()},mxCellMarker.prototype.isValidState=function(e){return!0},mxCellMarker.prototype.getMarkerColor=function(e,n,t){return t?this.validColor:this.invalidColor},mxCellMarker.prototype.getState=function(e){var n=this.graph.getView();return cell=this.getCell(e),null!=(n=this.getStateToMark(n.getState(cell)))&&this.intersects(n,e)?n:null},mxCellMarker.prototype.getCell=function(e){return e.getCell()},mxCellMarker.prototype.getStateToMark=function(e){return e},mxCellMarker.prototype.intersects=function(e,n){return!this.hotspotEnabled||mxUtils.intersectsHotspot(e,n.getGraphX(),n.getGraphY(),this.hotspot,mxConstants.MIN_HOTSPOT_SIZE,mxConstants.MAX_HOTSPOT_SIZE)},mxCellMarker.prototype.destroy=function(){this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),this.highlight.destroy()},mxUtils.extend(mxSelectionCellsHandler,mxEventSource),mxSelectionCellsHandler.prototype.graph=null,mxSelectionCellsHandler.prototype.enabled=!0,mxSelectionCellsHandler.prototype.refreshHandler=null,mxSelectionCellsHandler.prototype.maxHandlers=100,mxSelectionCellsHandler.prototype.handlers=null,mxSelectionCellsHandler.prototype.isEnabled=function(){return this.enabled},mxSelectionCellsHandler.prototype.setEnabled=function(e){this.enabled=e},mxSelectionCellsHandler.prototype.getHandler=function(e){return this.handlers.get(e)},mxSelectionCellsHandler.prototype.reset=function(){this.handlers.visit(function(e,n){n.reset.apply(n)})},mxSelectionCellsHandler.prototype.refresh=function(){var e=this.handlers;this.handlers=new mxDictionary;for(var n=this.graph.getSelectionCells(),t=0;t<n.length;t++){var a=this.graph.view.getState(n[t]);if(null!=a){var i=e.remove(n[t]);null!=i&&(i.state!=a?(i.destroy(),i=null):i.redraw()),null==i&&(i=this.graph.createHandler(a),this.fireEvent(new mxEventObject(mxEvent.ADD,"state",a))),null!=i&&this.handlers.put(n[t],i)}}e.visit(mxUtils.bind(this,function(e,n){this.fireEvent(new mxEventObject(mxEvent.REMOVE,"state",n.state)),n.destroy()}))},mxSelectionCellsHandler.prototype.mouseDown=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseDown.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseMove=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseMove.apply(n,t)})}},mxSelectionCellsHandler.prototype.mouseUp=function(e,n){if(this.graph.isEnabled()&&this.isEnabled()){var t=[e,n];this.handlers.visit(function(e,n){n.mouseUp.apply(n,t)})}},mxSelectionCellsHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.refreshHandler&&(this.graph.getSelectionModel().removeListener(this.refreshHandler),this.graph.getModel().removeListener(this.refreshHandler),this.graph.getView().removeListener(this.refreshHandler),this.refreshHandler=null)},mxUtils.extend(mxConnectionHandler,mxEventSource),mxConnectionHandler.prototype.graph=null,mxConnectionHandler.prototype.factoryMethod=!0,mxConnectionHandler.prototype.moveIconFront=!1,mxConnectionHandler.prototype.moveIconBack=!1,mxConnectionHandler.prototype.connectImage=null,mxConnectionHandler.prototype.targetConnectImage=!1,mxConnectionHandler.prototype.enabled=!0,mxConnectionHandler.prototype.select=!0,mxConnectionHandler.prototype.createTarget=!1;mxConnectionHandler.prototype.marker=null,mxConnectionHandler.prototype.constraintHandler=null,mxConnectionHandler.prototype.error=null,mxConnectionHandler.prototype.waypointsEnabled=!1,mxConnectionHandler.prototype.tapAndHoldEnabled=!0,mxConnectionHandler.prototype.tapAndHoldDelay=500,mxConnectionHandler.prototype.tapAndHoldInProgress=!1,mxConnectionHandler.prototype.tapAndHoldValid=!1,mxConnectionHandler.prototype.tapAndHoldTolerance=4,mxConnectionHandler.prototype.initialTouchX=0,mxConnectionHandler.prototype.initialTouchY=0,mxConnectionHandler.prototype.ignoreMouseDown=!1,mxConnectionHandler.prototype.first=null,mxConnectionHandler.prototype.connectIconOffset=new mxPoint(0,mxConstants.TOOLTIP_VERTICAL_OFFSET),mxConnectionHandler.prototype.edgeState=null,mxConnectionHandler.prototype.changeHandler=null,mxConnectionHandler.prototype.drillHandler=null,mxConnectionHandler.prototype.mouseDownCounter=0,mxConnectionHandler.prototype.movePreviewAway=mxClient.IS_VML,mxConnectionHandler.prototype.isEnabled=function(){return this.enabled},mxConnectionHandler.prototype.setEnabled=function(e){this.enabled=e},mxConnectionHandler.prototype.isCreateTarget=function(){return this.createTarget},mxConnectionHandler.prototype.setCreateTarget=function(e){this.createTarget=e},mxConnectionHandler.prototype.createShape=function(){var e=new mxPolyline([],mxConstants.INVALID_COLOR);if(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=!0,this.graph.dialect==mxConstants.DIALECT_SVG)e.node.setAttribute("pointer-events","none");else{var n=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(e.node,this.graph,n)}return e},mxConnectionHandler.prototype.init=function(){this.graph.addMouseListener(this),this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.changeHandler=mxUtils.bind(this,function(e){null!=this.iconState&&(this.iconState=this.graph.getView().getState(this.iconState.cell)),null!=this.iconState?this.redrawIcons(this.icons,this.iconState):(this.destroyIcons(this.icons),this.previous=null),this.constraintHandler.reset()}),this.graph.getModel().addListener(mxEvent.CHANGE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE,this.changeHandler),this.graph.getView().addListener(mxEvent.TRANSLATE,this.changeHandler),this.graph.getView().addListener(mxEvent.SCALE_AND_TRANSLATE,this.changeHandler),this.drillHandler=mxUtils.bind(this,function(e){this.destroyIcons(this.icons)}),this.graph.addListener(mxEvent.START_EDITING,this.drillHandler),this.graph.getView().addListener(mxEvent.DOWN,this.drillHandler),this.graph.getView().addListener(mxEvent.UP,this.drillHandler)},mxConnectionHandler.prototype.isConnectableCell=function(e){return!0},mxConnectionHandler.prototype.createMarker=function(){var a=new mxCellMarker(this.graph);return a.hotspotEnabled=!0,a.getCell=mxUtils.bind(this,function(e,n){return n=mxCellMarker.prototype.getCell.apply(a,arguments),this.error=null,this.isConnectableCell(n)?(null!=n?this.isConnecting()?null!=this.previous&&(this.error=this.validateConnection(this.previous.cell,n),null!=this.error&&0==this.error.length&&(n=null,this.isCreateTarget()&&(this.error=null))):this.isValidSource(n)||(n=null):this.isConnecting()&&!this.isCreateTarget()&&!this.graph.allowDanglingEdges&&(this.error=""),n):null}),a.isValidState=mxUtils.bind(this,function(e){return this.isConnecting()?null==this.error:mxCellMarker.prototype.isValidState.apply(a,arguments)}),a.getMarkerColor=mxUtils.bind(this,function(e,n,t){return null==this.connectImage||this.isConnecting()?mxCellMarker.prototype.getMarkerColor.apply(a,arguments):null}),a.intersects=mxUtils.bind(this,function(e,n){return!(null==this.connectImage&&!this.isConnecting())||mxCellMarker.prototype.intersects.apply(a,arguments)}),a},mxConnectionHandler.prototype.start=function(e,n,t,a){this.previous=e,this.first=new mxPoint(n,t),this.edgeState=null!=a?a:this.createEdgeState(null),this.marker.currentColor=this.marker.validColor,this.marker.markedState=e,this.marker.mark(),this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous))},mxConnectionHandler.prototype.isConnecting=function(){return null!=this.first&&null!=this.shape},mxConnectionHandler.prototype.isValidSource=function(e){return this.graph.isValidSource(e)},mxConnectionHandler.prototype.isValidTarget=function(e){return!0},mxConnectionHandler.prototype.validateConnection=function(e,n){return this.isValidTarget(n)?this.graph.getEdgeValidationError(null,e,n):""},mxConnectionHandler.prototype.getConnectImage=function(e){return this.connectImage},mxConnectionHandler.prototype.isMoveIconToFrontForState=function(e){return null!=e.text&&e.text.node.parentNode==this.graph.container||this.moveIconFront},mxConnectionHandler.prototype.createIcons=function(e){if(null==(i=this.getConnectImage(e))||null==e)return null;this.iconState=e;var n=[],t=new mxImageShape(new mxRectangle(0,0,i.width,i.height),i.src,null,null,0);t.preserveImageAspect=!1,this.isMoveIconToFrontForState(e)?(t.dialect=mxConstants.DIALECT_STRICTHTML,t.init(this.graph.container)):(t.dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.moveIconBack&&null!=t.node.previousSibling&&t.node.parentNode.insertBefore(t.node,t.node.parentNode.firstChild)),t.node.style.cursor=mxConstants.CURSOR_CONNECT;var a=mxUtils.bind(this,function(){return null!=this.currentState?this.currentState:e}),i=mxUtils.bind(this,function(e){mxEvent.isConsumed(e)||(this.icon=t,this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,a())))});return mxEvent.redirectMouseEvents(t.node,this.graph,a,i),n.push(t),this.redrawIcons(n,this.iconState),n},mxConnectionHandler.prototype.redrawIcons=function(e,n){if(null!=e&&null!=e[0]&&null!=n){var t=this.getIconPosition(e[0],n);e[0].bounds.x=t.x,e[0].bounds.y=t.y,e[0].redraw()}},mxConnectionHandler.prototype.getIconPosition=function(e,n){var t=this.graph.getView().scale,a=n.getCenterX(),i=n.getCenterY();if(this.graph.isSwimlane(n.cell)){a=0!=(s=this.graph.getStartSize(n.cell)).width?n.x+s.width*t/2:a,i=0!=s.height?n.y+s.height*t/2:i;if(0!=(s=mxUtils.toRadians(mxUtils.getValue(n.style,mxConstants.STYLE_ROTATION)||0))){t=Math.cos(s);var s=Math.sin(s),o=new mxPoint(n.getCenterX(),n.getCenterY());a=(i=mxUtils.getRotatedPoint(new mxPoint(a,i),t,s,o)).x,i=i.y}}return new mxPoint(a-e.bounds.width/2,i-e.bounds.height/2)},mxConnectionHandler.prototype.destroyIcons=function(e){if(null!=e){this.iconState=null;for(var n=0;n<e.length;n++)e[n].destroy()}},mxConnectionHandler.prototype.isStartEvent=function(e){return!this.graph.isForceMarqueeEvent(e.getEvent())&&(null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint||null!=this.previous&&null==this.error&&(null==this.icons||null!=this.icons&&null!=this.icon))},mxConnectionHandler.prototype.mouseDown=function(e,n){if(this.mouseDownCounter++,this.isEnabled()&&this.graph.isEnabled()&&!n.isConsumed()&&!this.isConnecting()&&this.isStartEvent(n)){if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint?(this.sourceConstraint=this.constraintHandler.currentConstraint,this.previous=this.constraintHandler.currentFocus,this.first=this.constraintHandler.currentPoint.clone()):this.first=new mxPoint(n.getGraphX(),n.getGraphY()),this.edgeState=this.createEdgeState(n),this.mouseDownCounter=1,this.waypointsEnabled&&null==this.shape&&(this.waypoints=null,this.shape=this.createShape()),null==this.previous&&null!=this.edgeState){var t=this.graph.getPointForEvent(n.getEvent());this.edgeState.cell.geometry.setTerminalPoint(t,!0)}this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)),n.consume()}else if(mxClient.IS_TOUCH&&this.tapAndHoldEnabled&&!this.tapAndHoldInProgress&&this.isEnabled()&&this.graph.isEnabled()&&!this.isConnecting()){this.tapAndHoldInProgress=!0,this.initialTouchX=n.getX(),this.initialTouchY=n.getY();var a=this.graph.view.getState(this.marker.getCell(n));this.tapAndHoldThread&&window.clearTimeout(this.tapAndHoldThread),this.tapAndHoldThread=window.setTimeout(mxUtils.bind(this,function(){this.tapAndHoldValid&&this.tapAndHold(n,a),this.tapAndHoldValid=this.tapAndHoldInProgress=!1}),this.tapAndHoldDelay),this.tapAndHoldValid=!0}this.selectedIcon=this.icon,this.icon=null},mxConnectionHandler.prototype.tapAndHold=function(e,n){null!=n&&(this.marker.currentColor=this.marker.validColor,this.marker.markedState=n,this.marker.mark(),this.first=new mxPoint(e.getGraphX(),e.getGraphY()),this.edgeState=this.createEdgeState(e),this.previous=n,this.fireEvent(new mxEventObject(mxEvent.START,"state",this.previous)))},mxConnectionHandler.prototype.isImmediateConnectSource=function(e){return!this.graph.isCellMovable(e.cell)},mxConnectionHandler.prototype.createEdgeState=function(e){return null},mxConnectionHandler.prototype.updateCurrentState=function(e){var n=this.marker.process(e);this.constraintHandler.update(e,null==this.first),this.currentState=n},mxConnectionHandler.prototype.convertWaypoint=function(e){var n=this.graph.getView().getScale(),t=this.graph.getView().getTranslate();e.x=e.x/n-t.x,e.y=e.y/n-t.y},mxConnectionHandler.prototype.mouseMove=function(e,n){if(this.tapAndHoldValid&&(this.tapAndHoldValid=Math.abs(this.initialTouchX-n.getX())<this.tapAndHoldTolerance&&Math.abs(this.initialTouchY-n.getY())<this.tapAndHoldTolerance),n.isConsumed()||!this.ignoreMouseDown&&null==this.first&&this.graph.isMouseDown)this.constraintHandler.reset();else{if(!this.isEnabled()&&null!=this.currentState&&(this.destroyIcons(this.icons),this.currentState=null),(null!=this.first||this.isEnabled()&&this.graph.isEnabled())&&this.updateCurrentState(n),null!=this.first){var t=this.graph.getView().scale,a=null,i=t=new mxPoint(this.graph.snap(n.getGraphX()/t)*t,this.graph.snap(n.getGraphY()/t)*t);null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentPoint&&(a=this.constraintHandler.currentConstraint,i=this.constraintHandler.currentPoint.clone());var s=this.first;if(null!=this.selectedIcon){var o=this.selectedIcon.bounds.width,r=this.selectedIcon.bounds.height;null!=this.currentState&&this.targetConnectImage?(o=this.getIconPosition(this.selectedIcon,this.currentState),this.selectedIcon.bounds.x=o.x,this.selectedIcon.bounds.y=o.y):(o=new mxRectangle(n.getGraphX()+this.connectIconOffset.x,n.getGraphY()+this.connectIconOffset.y,o,r),this.selectedIcon.bounds=o),this.selectedIcon.redraw()}if(null!=this.edgeState){if(this.edgeState.absolutePoints=[null,null!=this.currentState?null:i],this.graph.view.updateFixedTerminalPoint(this.edgeState,this.previous,!0,this.sourceConstraint),null!=this.currentState&&(null==a&&(a=this.graph.getConnectionConstraint(this.edgeState,this.previous,!1)),this.edgeState.setAbsoluteTerminalPoint(null,!1),this.graph.view.updateFixedTerminalPoint(this.edgeState,this.currentState,!1,a)),(s=null)!=this.waypoints)for(s=[],i=0;i<this.waypoints.length;i++)a=this.waypoints[i].clone(),this.convertWaypoint(a),s[i]=a;this.graph.view.updatePoints(this.edgeState,s,this.previous,this.currentState),this.graph.view.updateFloatingTerminalPoints(this.edgeState,this.previous,this.currentState),i=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-1],s=this.edgeState.absolutePoints[0]}else null!=this.currentState&&null==this.constraintHandler.currentConstraint&&(null!=(o=this.getTargetPerimeterPoint(this.currentState,n))&&(i=o)),null==this.sourceConstraint&&null!=this.previous&&(null!=(o=this.getSourcePerimeterPoint(this.previous,null!=this.waypoints&&0<this.waypoints.length?this.waypoints[0]:i,n))&&(s=o));if(null==this.currentState&&this.movePreviewAway){if(o=s,null!=this.edgeState&&2<this.edgeState.absolutePoints.length&&(null!=(a=this.edgeState.absolutePoints[this.edgeState.absolutePoints.length-2])&&(o=a)),a=i.x-o.x,o=i.y-o.y,0==(r=Math.sqrt(a*a+o*o)))return;i.x-=4*a/r,i.y-=4*o/r}null==this.shape&&(a=Math.abs(t.x-this.first.x),o=Math.abs(t.y-this.first.y),a>this.graph.tolerance||o>this.graph.tolerance)&&(this.shape=this.createShape(),this.updateCurrentState(n)),null!=this.shape&&(null!=this.edgeState?this.shape.points=this.edgeState.absolutePoints:(t=[s],null!=this.waypoints&&(t=t.concat(this.waypoints)),t.push(i),this.shape.points=t),this.drawPreview()),mxEvent.consume(n.getEvent()),n.consume()}else this.isEnabled()&&this.graph.isEnabled()?this.previous!=this.currentState&&null==this.edgeState?(this.destroyIcons(this.icons),(this.icons=null)!=this.currentState&&null==this.error&&(this.icons=this.createIcons(this.currentState),null==this.icons&&(this.currentState.setCursor(mxConstants.CURSOR_CONNECT),n.consume())),this.previous=this.currentState):this.previous==this.currentState&&null!=this.currentState&&null==this.icons&&!this.graph.isMouseDown&&n.consume():this.constraintHandler.reset();if(null!=this.constraintHandler.currentConstraint&&this.marker.reset(),!this.graph.isMouseDown&&null!=this.currentState&&null!=this.icons){for(t=!1,s=n.getSource(),i=0;i<this.icons.length&&!t;i++)t=s==this.icons[i].node||s.parentNode==this.icons[i].node;t||this.updateIcons(this.currentState,this.icons,n)}}},mxConnectionHandler.prototype.getTargetPerimeterPoint=function(e,n){var t=null,a=(i=e.view).getPerimeterFunction(e);if(null!=a){var i,s=null!=this.waypoints&&0<this.waypoints.length?this.waypoints[this.waypoints.length-1]:new mxPoint(this.previous.getCenterX(),this.previous.getCenterY());null!=(i=a(i.getPerimeterBounds(e),this.edgeState,s,!1))&&(t=i)}else t=new mxPoint(e.getCenterX(),e.getCenterY());return t},mxConnectionHandler.prototype.getSourcePerimeterPoint=function(e,n,t){t=null;var a=e.view,i=a.getPerimeterFunction(e),s=new mxPoint(e.getCenterX(),e.getCenterY());if(null!=i){var o=mxUtils.getValue(e.style,mxConstants.STYLE_ROTATION,0),r=-o*(Math.PI/180);0!=o&&(n=mxUtils.getRotatedPoint(new mxPoint(n.x,n.y),Math.cos(r),Math.sin(r),s)),null!=(e=i(a.getPerimeterBounds(e),e,n,!1))&&(0!=o&&(e=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),Math.cos(-r),Math.sin(-r),s)),t=e)}else t=s;return t},mxConnectionHandler.prototype.updateIcons=function(e,n,t){},mxConnectionHandler.prototype.isStopEvent=function(e){return null!=e.getState()},mxConnectionHandler.prototype.addWaypointForEvent=function(e){var n=mxUtils.convertPoint(this.graph.container,e.getX(),e.getY()),t=Math.abs(n.x-this.first.x);n=Math.abs(n.y-this.first.y);(null!=this.waypoints||1<this.mouseDownCounter&&(t>this.graph.tolerance||n>this.graph.tolerance))&&(null==this.waypoints&&(this.waypoints=[]),t=this.graph.view.scale,n=new mxPoint(this.graph.snap(e.getGraphX()/t)*t,this.graph.snap(e.getGraphY()/t)*t),this.waypoints.push(n))},mxConnectionHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&this.isConnecting()){if(this.waypointsEnabled&&!this.isStopEvent(n))return this.addWaypointForEvent(n),void n.consume();if(null==this.error){var t=null!=this.previous?this.previous.cell:null,a=null;null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),this.connect(t,a,n.getEvent(),n.getCell())}else null!=this.previous&&null!=this.marker.validState&&this.previous.cell==this.marker.validState.cell&&this.graph.selectCellForEvent(this.marker.source,evt),0<this.error.length&&this.graph.validationAlert(this.error);this.destroyIcons(this.icons),n.consume()}null!=this.first&&this.reset(),this.tapAndHoldValid=this.tapAndHoldInProgress=!1},mxConnectionHandler.prototype.reset=function(){null!=this.shape&&(this.shape.destroy(),this.shape=null),this.destroyIcons(this.icons),this.icons=null,this.marker.reset(),this.constraintHandler.reset(),this.sourceConstraint=this.error=this.previous=this.edgeState=this.selectedIcon=null,this.mouseDownCounter=0,this.icon=this.first=null,this.fireEvent(new mxEventObject(mxEvent.RESET))},mxConnectionHandler.prototype.drawPreview=function(){var e=null==this.error;this.shape.strokewidth=this.getEdgeWidth(e),e=this.getEdgeColor(e),this.shape.stroke=e,this.shape.redraw()},mxConnectionHandler.prototype.getEdgeColor=function(e){return e?mxConstants.VALID_COLOR:mxConstants.INVALID_COLOR},mxConnectionHandler.prototype.getEdgeWidth=function(e){return e?3:1},mxConnectionHandler.prototype.connect=function(e,n,t,a){if(null!=n||this.isCreateTarget()||this.graph.allowDanglingEdges){var i=this.graph.getModel(),s=null;i.beginUpdate();try{if(null!=e&&null==n&&this.isCreateTarget()&&null!=(n=this.createTargetVertex(t,e))){if(null!=(a=this.graph.getDropTarget([n],t,a))&&this.graph.getModel().isEdge(a))a=this.graph.getDefaultParent();else{var o=this.graph.getView().getState(a);if(null!=o){var r=i.getGeometry(n);r.x-=o.origin.x,r.y-=o.origin.y}}this.graph.addCell(n,a)}var l=this.graph.getDefaultParent();if(null!=e&&null!=n&&i.getParent(e)==i.getParent(n)&&i.getParent(i.getParent(e))!=i.getRoot()&&(l=i.getParent(e),null!=e.geometry&&e.geometry.relative&&null!=n.geometry&&n.geometry.relative&&(l=i.getParent(l))),r=o=null,null!=this.edgeState&&(o=this.edgeState.cell.value,r=this.edgeState.cell.style),null!=(s=this.insertEdge(l,null,o,e,n,r))){this.graph.setConnectionConstraint(s,e,!0,this.sourceConstraint),this.graph.setConnectionConstraint(s,n,!1,this.constraintHandler.currentConstraint),null!=this.edgeState&&i.setGeometry(s,this.edgeState.cell.geometry);var d=i.getGeometry(s);if(null==d&&((d=new mxGeometry).relative=!0,i.setGeometry(s,d)),null!=this.waypoints&&0<this.waypoints.length){var c=this.graph.view.scale,m=this.graph.view.translate;for(d.points=[],e=0;e<this.waypoints.length;e++){var u=this.waypoints[e];d.points.push(new mxPoint(u.x/c-m.x,u.y/c-m.y))}}null==n&&((u=this.graph.getPointForEvent(t,!1)).x-=this.graph.panDx/this.graph.view.scale,u.y-=this.graph.panDy/this.graph.view.scale,d.setTerminalPoint(u,!1)),this.fireEvent(new mxEventObject(mxEvent.CONNECT,"cell",s,"event",t,"target",a))}}catch(e){mxLog.show(),mxLog.debug(e.message)}finally{i.endUpdate()}this.select&&this.selectCells(s,n)}},mxConnectionHandler.prototype.selectCells=function(e,n){this.graph.setSelectionCell(e)},mxConnectionHandler.prototype.insertEdge=function(e,n,t,a,i,s){return null==this.factoryMethod?this.graph.insertEdge(e,n,t,a,i,s):(n=this.createEdge(t,a,i,s),this.graph.addEdge(n,e,a,i))},mxConnectionHandler.prototype.createTargetVertex=function(e,n){for(var t=this.graph.getCellGeometry(n);null!=t&&t.relative;)n=this.graph.getModel().getParent(n),t=this.graph.getCellGeometry(n);var a=this.graph.cloneCells([n])[0];if(null!=(t=this.graph.getModel().getGeometry(a))){var i=this.graph.getPointForEvent(e);if(t.x=this.graph.snap(i.x-t.width/2)-this.graph.panDx/this.graph.view.scale,t.y=this.graph.snap(i.y-t.height/2)-this.graph.panDy/this.graph.view.scale,null!=this.first){var s=this.graph.view.getState(n);if(null!=s){var o=this.getAlignmentTolerance();Math.abs(this.graph.snap(this.first.x)-this.graph.snap(i.x))<=o?t.x=s.x:Math.abs(this.graph.snap(this.first.y)-this.graph.snap(i.y))<=o&&(t.y=s.y)}}}return a},mxConnectionHandler.prototype.getAlignmentTolerance=function(){return this.graph.isGridEnabled()?this.graph.gridSize:this.graph.tolerance},mxConnectionHandler.prototype.createEdge=function(e,n,t,a){var i=null;return null!=this.factoryMethod&&(i=this.factoryMethod(n,t,a)),null==i&&((i=new mxCell(e||"")).setEdge(!0),i.setStyle(a),(e=new mxGeometry).relative=!0,i.setGeometry(e)),i},mxConnectionHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.changeHandler&&(this.graph.getModel().removeListener(this.changeHandler),this.graph.getView().removeListener(this.changeHandler),this.changeHandler=null),null!=this.drillHandler&&(this.graph.removeListener(this.drillHandler),this.graph.getView().removeListener(this.drillHandler),this.drillHandler=null)},mxConstraintHandler.prototype.pointImage=new mxImage(mxClient.imageBasePath+"/point.gif",5,5),mxConstraintHandler.prototype.graph=null,mxConstraintHandler.prototype.enabled=!0,mxConstraintHandler.prototype.highlightColor=mxConstants.DEFAULT_VALID_COLOR,mxConstraintHandler.prototype.isEnabled=function(){return this.enabled},mxConstraintHandler.prototype.setEnabled=function(e){this.enabled=e},mxConstraintHandler.prototype.reset=function(){if(null!=this.focusIcons){for(var e=0;e<this.focusIcons.length;e++)this.focusIcons[e].destroy();this.focusIcons=null}null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),this.focusPoints=this.currentFocus=this.currentPoint=this.currentFocusArea=this.currentConstraint=null},mxConstraintHandler.prototype.getTolerance=function(){return this.graph.getTolerance()},mxConstraintHandler.prototype.getImageForConstraint=function(e,n,t){return this.pointImage},mxConstraintHandler.prototype.isEventIgnored=function(e,n){return!1},mxConstraintHandler.prototype.update=function(e,n){if(this.isEnabled()&&!this.isEventIgnored(e)){var t=this.getTolerance(),a=new mxRectangle(e.getGraphX()-t,e.getGraphY()-t,2*t,2*t),i=null!=e.getCell()&&this.graph.isCellConnectable(e.getCell());if((null==this.currentFocusArea||!mxUtils.intersects(this.currentFocusArea,a)||null!=e.getState()&&null!=this.currentFocus&&i)&&(this.currentFocusArea=null,e.getState()!=this.currentFocus))if(this.currentFocus=null,this.constraints=null!=e.getState()&&i?this.graph.getAllConnectionConstraints(e.getState(),n):null,null!=this.constraints){if(this.currentFocus=e.getState(),this.currentFocusArea=new mxRectangle(e.getState().x,e.getState().y,e.getState().width,e.getState().height),null!=this.focusIcons){for(i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}for(this.focusIcons=[],this.focusPoints=[],i=0;i<this.constraints.length;i++){var s,o=this.graph.getConnectionPoint(e.getState(),this.constraints[i]),r=(s=this.getImageForConstraint(e.getState(),this.constraints[i],o)).src;(s=new mxImageShape(s=new mxRectangle(o.x-s.width/2,o.y-s.height/2,s.width,s.height),r)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,s.preserveImageAspect=!1,s.init(this.graph.getView().getOverlayPane()),null!=s.node.previousSibling&&s.node.parentNode.insertBefore(s.node,s.node.parentNode.firstChild),r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),s.redraw(),mxEvent.redirectMouseEvents(s.node,this.graph,r),this.currentFocusArea.add(s.bounds),this.focusIcons.push(s),this.focusPoints.push(o)}this.currentFocusArea.grow(t)}else if(null!=this.focusIcons){for(null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null),i=0;i<this.focusIcons.length;i++)this.focusIcons[i].destroy();this.focusPoints=this.focusIcons=null}if(this.currentPoint=this.currentConstraint=null,null!=this.focusIcons&&null!=this.constraints&&(null==e.getState()||this.currentFocus==e.getState()))for(i=0;i<this.focusIcons.length;i++)if(mxUtils.intersects(this.focusIcons[i].bounds,a)){this.currentConstraint=this.constraints[i],this.currentPoint=this.focusPoints[i],(t=this.focusIcons[i].bounds.clone()).grow(mxClient.IS_IE?3:2),mxClient.IS_IE&&(t.width-=1,t.height-=1),null==this.focusHighlight?((t=new mxRectangleShape(t,null,this.highlightColor,3)).dialect=this.graph.dialect==mxConstants.DIALECT_SVG?mxConstants.DIALECT_SVG:mxConstants.DIALECT_VML,t.init(this.graph.getView().getOverlayPane()),this.focusHighlight=t,r=mxUtils.bind(this,function(){return null!=this.currentFocus?this.currentFocus:e.getState()}),mxEvent.redirectMouseEvents(t.node,this.graph,r)):(this.focusHighlight.bounds=t,this.focusHighlight.redraw());break}null==this.currentConstraint&&null!=this.focusHighlight&&(this.focusHighlight.destroy(),this.focusHighlight=null)}},mxConstraintHandler.prototype.destroy=function(){this.reset()},mxRubberband.prototype.defaultOpacity=20,mxRubberband.prototype.enabled=!0,mxRubberband.prototype.div=null,mxRubberband.prototype.sharedDiv=null,mxRubberband.prototype.currentX=0,mxRubberband.prototype.currentY=0,mxRubberband.prototype.isEnabled=function(){return this.enabled},mxRubberband.prototype.setEnabled=function(e){this.enabled=e},mxRubberband.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.isEnabled()&&this.graph.isEnabled()&&(this.graph.isForceMarqueeEvent(n.getEvent())||null==n.getState())){var t=mxUtils.getOffset(this.graph.container),a=mxUtils.getScrollOrigin(this.graph.container);if(a.x-=t.x,a.y-=t.y,this.start(n.getX()+a.x,n.getY()+a.y),mxClient.IS_NS&&!mxClient.IS_SF&&!mxClient.IS_GC){var i=this.graph.container,s=function(e){e=new mxMouseEvent(e);var n=mxUtils.convertPoint(i,e.getX(),e.getY());return e.graphX=n.x,e.graphY=n.y,e};this.dragHandler=mxUtils.bind(this,function(e){this.mouseMove(this.graph,s(e))}),this.dropHandler=mxUtils.bind(this,function(e){this.mouseUp(this.graph,s(e))}),mxEvent.addListener(document,"mousemove",this.dragHandler),mxEvent.addListener(document,"mouseup",this.dropHandler)}n.consume(!1)}},mxRubberband.prototype.start=function(e,n){this.first=new mxPoint(e,n)},mxRubberband.prototype.mouseMove=function(e,n){if(!n.isConsumed()&&null!=this.first){var t=mxUtils.getScrollOrigin(this.graph.container),a=mxUtils.getOffset(this.graph.container);t.x-=a.x,t.y-=a.y;a=n.getX()+t.x,t=n.getY()+t.y;var i=this.first.x-a,s=this.first.y-t,o=this.graph.tolerance;(null!=this.div||Math.abs(i)>o||Math.abs(s)>o)&&(null==this.div&&(this.div=this.createShape()),mxUtils.clearSelection(),this.update(a,t),n.consume())}},mxRubberband.prototype.createShape=function(){return null==this.sharedDiv&&(this.sharedDiv=document.createElement("div"),this.sharedDiv.className="mxRubberband",mxUtils.setOpacity(this.sharedDiv,this.defaultOpacity)),this.graph.container.appendChild(this.sharedDiv),this.sharedDiv},mxRubberband.prototype.mouseUp=function(e,n){var t=null!=this.div;this.reset(),t&&(t=new mxRectangle(this.x,this.y,this.width,this.height),this.graph.selectRegion(t,n.getEvent()),n.consume())},mxRubberband.prototype.reset=function(){null!=this.div&&this.div.parentNode.removeChild(this.div),null!=this.dragHandler&&(mxEvent.removeListener(document,"mousemove",this.dragHandler),this.dragHandler=null),null!=this.dropHandler&&(mxEvent.removeListener(document,"mouseup",this.dropHandler),this.dropHandler=null),this.currentY=this.currentX=0,this.div=this.first=null},mxRubberband.prototype.update=function(e,n){this.currentX=e,this.currentY=n,this.repaint()},mxRubberband.prototype.repaint=function(){if(null!=this.div){var e=this.currentX-this.graph.panDx,n=this.currentY-this.graph.panDy;this.x=Math.min(this.first.x,e),this.y=Math.min(this.first.y,n),this.width=Math.max(this.first.x,e)-this.x,this.height=Math.max(this.first.y,n)-this.y,e=mxClient.IS_VML?this.graph.panDy:0,this.div.style.left=this.x+(mxClient.IS_VML?this.graph.panDx:0)+"px",this.div.style.top=this.y+e+"px",this.div.style.width=Math.max(1,this.width)+"px",this.div.style.height=Math.max(1,this.height)+"px"}},mxRubberband.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),this.graph.removeListener(this.panHandler),this.reset(),null!=this.sharedDiv&&(this.sharedDiv=null))},mxVertexHandler.prototype.graph=null,mxVertexHandler.prototype.state=null,mxVertexHandler.prototype.singleSizer=!1,mxVertexHandler.prototype.index=null,mxVertexHandler.prototype.allowHandleBoundsCheck=!0,mxVertexHandler.prototype.handleImage=null,mxVertexHandler.prototype.tolerance=0,mxVertexHandler.prototype.rotationEnabled=!1,mxVertexHandler.prototype.rotationRaster=!0,mxVertexHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.selectionBorder=this.createSelectionShape(this.bounds),this.selectionBorder.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.selectionBorder.pointerEvents=!1,this.selectionBorder.init(this.graph.getView().getOverlayPane()),this.graph.isCellMovable(this.state.cell)&&(this.selectionBorder.node.style.cursor=mxConstants.CURSOR_MOVABLE_VERTEX),mxEvent.redirectMouseEvents(this.selectionBorder.node,this.graph,this.state),mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells){var e=this.graph.isCellResizable(this.state.cell);if(this.sizers=[],e||this.graph.isLabelMovable(this.state.cell)&&2<=this.state.width&&2<=this.state.height){var n=0;e&&(this.singleSizer||(this.sizers.push(this.createSizer("nw-resize",n++)),this.sizers.push(this.createSizer("n-resize",n++)),this.sizers.push(this.createSizer("ne-resize",n++)),this.sizers.push(this.createSizer("w-resize",n++)),this.sizers.push(this.createSizer("e-resize",n++)),this.sizers.push(this.createSizer("sw-resize",n++)),this.sizers.push(this.createSizer("s-resize",n++))),this.sizers.push(this.createSizer("se-resize",n++))),null!=(e=this.graph.model.getGeometry(this.state.cell))&&!e.relative&&!this.graph.isSwimlane(this.state.cell)&&this.graph.isLabelMovable(this.state.cell)&&(this.labelShape=this.createSizer(mxConstants.CURSOR_LABEL_HANDLE,mxEvent.LABEL_HANDLE,mxConstants.LABEL_HANDLE_SIZE,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}else this.graph.isCellMovable(this.state.cell)&&!this.graph.isCellResizable(this.state.cell)&&this.state.width<2&&this.state.height<2&&(this.labelShape=this.createSizer(mxConstants.CURSOR_MOVABLE_VERTEX,null,null,mxConstants.LABEL_HANDLE_FILLCOLOR),this.sizers.push(this.labelShape))}this.rotationEnabled&&(mxGraphHandler.prototype.maxCells<=0||this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells)&&(this.rotationShape=this.createSizer("pointer",mxEvent.ROTATION_HANDLE,mxConstants.HANDLE_SIZE+3,mxConstants.HANDLE_FILLCOLOR),this.sizers.push(this.rotationShape)),this.redraw()},mxVertexHandler.prototype.getSelectionBounds=function(e){return new mxRectangle(Math.round(e.x),Math.round(e.y),Math.round(e.width),Math.round(e.height))},mxVertexHandler.prototype.createSelectionShape=function(e){return(e=new mxRectangleShape(e,null,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxVertexHandler.prototype.getSelectionColor=function(){return mxConstants.VERTEX_SELECTION_COLOR},mxVertexHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.VERTEX_SELECTION_STROKEWIDTH},mxVertexHandler.prototype.isSelectionDashed=function(){return mxConstants.VERTEX_SELECTION_DASHED},mxVertexHandler.prototype.createSizer=function(e,n,t,a){return t=new mxRectangle(0,0,t=t||mxConstants.HANDLE_SIZE,t),(a=this.createSizerShape(t,n,a)).isHtmlAllowed()&&null!=this.state.text&&this.state.text.node.parentNode==this.graph.container?(a.bounds.height-=1,a.bounds.width-=1,a.dialect=mxConstants.DIALECT_STRICTHTML,a.init(this.graph.container)):(a.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,a.init(this.graph.getView().getOverlayPane())),mxEvent.redirectMouseEvents(a.node,this.graph,this.state),this.graph.isEnabled()&&(a.node.style.cursor=e),this.isSizerVisible(n)||(a.node.style.visibility="hidden"),a},mxVertexHandler.prototype.isSizerVisible=function(e){return!0},mxVertexHandler.prototype.createSizerShape=function(e,n,t){return null!=this.handleImage?(e.width=this.handleImage.width,e.height=this.handleImage.height,new mxImageShape(e,this.handleImage.src)):n==mxEvent.ROTATION_HANDLE?new mxEllipse(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR):new mxRectangleShape(e,t||mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR)},mxVertexHandler.prototype.moveSizerTo=function(e,n,t){null!=e&&(e.bounds.x=Math.round(n-e.bounds.width/2),e.bounds.y=Math.round(t-e.bounds.height/2),e.redraw())},mxVertexHandler.prototype.getHandleForEvent=function(e){if(e.isSource(this.rotationShape))return mxEvent.ROTATION_HANDLE;if(e.isSource(this.labelShape))return mxEvent.LABEL_HANDLE;if(null!=this.sizers)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.sizers.length;t++)if(e.isSource(this.sizers[t])||null!=n&&mxUtils.intersects(this.sizers[t].bounds,n))return t;return null},mxVertexHandler.prototype.mouseDown=function(e,n){if(!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(0<this.tolerance||n.getState()==this.state)){var t=this.getHandleForEvent(n);null!=t&&(this.start(n.getX(),n.getY(),t),n.consume())}},mxVertexHandler.prototype.start=function(e,n,t){e=mxUtils.convertPoint(this.graph.container,e,n),this.startX=e.x,this.startY=e.y,this.index=t,this.selectionBorder.node.style.display=t==mxEvent.ROTATION_HANDLE?"inline":"none",this.preview=this.createSelectionShape(this.bounds),mxClient.IS_SVG&&0!=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")||null==this.state.text||this.state.text.node.parentNode!=this.graph.container?(this.preview.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,this.preview.init(this.graph.view.getOverlayPane())):(this.preview.dialect=mxConstants.DIALECT_STRICTHTML,this.preview.init(this.graph.container))},mxVertexHandler.prototype.mouseMove=function(e,n){if(n.isConsumed()||null==this.index)null!=this.getHandleForEvent(n)&&n.consume(!1);else{var t=new mxPoint(n.getGraphX(),n.getGraphY()),a=this.graph.isGridEnabledEvent(n.getEvent()),i=this.graph.getView().scale;if(this.index==mxEvent.LABEL_HANDLE)a&&(t.x=this.graph.snap(t.x/i)*i,t.y=this.graph.snap(t.y/i)*i),this.moveSizerTo(this.sizers[this.sizers.length-1],t.x,t.y);else if(this.index==mxEvent.ROTATION_HANDLE){var s=this.state.x+this.state.width/2-t.x,o=this.state.y+this.state.height/2-t.y;this.currentAlpha=0!=s?180*Math.atan(o/s)/Math.PI+90:o<0?180:0,0<s&&(this.currentAlpha-=180),this.rotationRaster&&(s=t.x-this.state.getCenterX(),o=t.y-this.state.getCenterY(),s=Math.abs(Math.sqrt(s*s+o*o)-this.state.height/2-20),s=Math.max(1,5*Math.min(3,Math.max(0,Math.round(80/Math.abs(s))))),this.currentAlpha=Math.round(this.currentAlpha/s)*s),this.selectionBorder.rotation=this.currentAlpha,this.selectionBorder.redraw()}else{var r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),l=Math.cos(-r),d=Math.sin(-r),c=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),m=(s=t.x-this.startX,o=t.y-this.startY,t=this.graph.view.translate,d*s+l*o);s=l*s-d*o;this.bounds=this.union(this.selectionBounds,s,m,this.index,a,i,t),l=Math.cos(r),c=(d=Math.sin(r))*(s=(o=new mxPoint(this.bounds.getCenterX(),this.bounds.getCenterY())).x-c.x)+l*(o=o.y-c.y)-o,this.bounds.x+=l*s-d*o-s,this.bounds.y+=c,this.drawPreview()}n.consume()}},mxVertexHandler.prototype.mouseUp=function(e,n){if(!n.isConsumed()&&null!=this.index&&null!=this.state){var t=new mxPoint(n.getGraphX(),n.getGraphY());this.graph.getModel().beginUpdate();try{if(this.index==mxEvent.ROTATION_HANDLE)null!=this.currentAlpha&&this.rotateCell(this.state.cell,this.currentAlpha-(this.state.style[mxConstants.STYLE_ROTATION]||0));else{var a=this.graph.isGridEnabledEvent(n.getEvent()),i=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),s=Math.cos(-i),o=Math.sin(-i),r=(t=o*(r=t.x-this.startX)+s*(l=t.y-this.startY),s*r-o*l),l=t,d=this.graph.view.scale;this.resizeCell(this.state.cell,r/d,l/d,this.index,a)}}finally{this.graph.getModel().endUpdate()}this.reset(),n.consume()}},mxVertexHandler.prototype.rotateCell=function(e,n){var t=this.graph.getModel();if(t.isVertex(e)){if(null!=(s=e==this.state?this.state:this.graph.view.getState(e))&&this.graph.setCellStyles(mxConstants.STYLE_ROTATION,(s.style[mxConstants.STYLE_ROTATION]||0)+n,[e]),this.state.cell!=e&&(null!=(s=this.graph.getCellGeometry(e))&&!s.relative))if(0!=n){var a=this.graph.getModel().getParent(e),i=this.graph.getCellGeometry(a);if(!s.relative&&null!=i){var s,o=mxUtils.toRadians(n),r=(a=Math.cos(o),o=Math.sin(o),new mxPoint(s.getCenterX(),s.getCenterY()));i=new mxPoint(i.width/2,i.height/2),a=mxUtils.getRotatedPoint(r,a,o,i);(s=s.clone()).x=a.x-s.width/2,s.y=a.y-s.height/2,t.setGeometry(e,s)}}else(s=s.clone()).x+=dx,s.y+=dy,t.setGeometry(e,s);for(s=t.getChildCount(e),a=0;a<s;a++)this.rotateCell(t.getChildAt(e,a),n)}},mxVertexHandler.prototype.reset=function(){this.index=this.currentAlpha=null,null!=this.preview&&(this.preview.destroy(),this.preview=null),null!=this.selectionBorder&&(this.selectionBorder.node.style.display="inline",this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.selectionBounds.x,this.selectionBounds.y,this.selectionBounds.width,this.selectionBounds.height),this.drawPreview())},mxVertexHandler.prototype.resizeCell=function(e,n,t,a,i){var s=this.graph.model.getGeometry(e);if(null!=s)if(a==mxEvent.LABEL_HANDLE)a=this.graph.view.scale,n=(this.labelShape.bounds.getCenterX()-this.startX)/a,t=(this.labelShape.bounds.getCenterY()-this.startY)/a,null==(s=s.clone()).offset?s.offset=new mxPoint(n,t):(s.offset.x+=n,s.offset.y+=t),this.graph.model.setGeometry(e,s);else{if(a=this.union(s,n,t,a,i,1,new mxPoint(0,0)),0!=(r=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"))){n=a.getCenterX()-s.getCenterX(),t=a.getCenterY()-s.getCenterY(),i=Math.cos(r);var o=Math.sin(r),r=i*n-o*t-n;n=o*n+i*t-t,t=a.x-s.x;var l=a.y-s.y,d=i*t-o*l;i=o*t+i*l,a.x+=r,a.y+=n,this.graph.isCellCollapsed(e)||0==r&&0==n||(t=s.x-a.x+d,l=s.y-a.y+i,this.moveChildren(e,t,l))}this.graph.resizeCell(e,a)}},mxVertexHandler.prototype.moveChildren=function(e,n,t){for(var a=this.graph.getModel(),i=a.getChildCount(e),s=0;s<i;s++){var o=a.getChildAt(e,s);if(a.isVertex(o)){var r=this.graph.getCellGeometry(o);null!=r&&!r.relative&&((r=r.clone()).x+=n,r.y+=t,a.setGeometry(o,r))}}},mxVertexHandler.prototype.union=function(e,n,t,a,i,s,o){if(this.singleSizer){o=e.x+e.width+n;var r=e.y+e.height+t;return i&&(o=this.graph.snap(o/s)*s,r=this.graph.snap(r/s)*s),(s=new mxRectangle(e.x,e.y,0,0)).add(new mxRectangle(o,r,0,0)),s}var l=(r=e.x-o.x*s)+e.width,d=e.y-o.y*s;return e=d+e.height,4<a?(e+=t,i&&(e=this.graph.snap(e/s)*s)):a<3&&(d+=t,i&&(d=this.graph.snap(d/s)*s)),0==a||3==a||5==a?(r+=n,i&&(r=this.graph.snap(r/s)*s)):2!=a&&4!=a&&7!=a||(l+=n,i&&(l=this.graph.snap(l/s)*s)),e-=d,(i=l-r)<0&&(r+=i,i=Math.abs(i)),e<0&&(d+=e,e=Math.abs(e)),new mxRectangle(r+o.x*s,d+o.y*s,i,e)},mxVertexHandler.prototype.redraw=function(){this.selectionBounds=this.getSelectionBounds(this.state),this.bounds=new mxRectangle(this.state.x,this.state.y,this.state.width,this.state.height);var e=this.state;if(null!=this.sizers){var n=e.x+e.width,t=e.y+e.height;if(this.singleSizer)this.moveSizerTo(this.sizers[0],n,t);else{var a=e.x+e.width/2,i=e.y+e.height/2;if(1<this.sizers.length){var s=mxUtils.toRadians(e.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),r=(s=Math.sin(s),new mxPoint(e.getCenterX(),e.getCenterY())),l=mxUtils.getRotatedPoint(new mxPoint(e.x,e.y),o,s,r);this.moveSizerTo(this.sizers[0],l.x,l.y),l.x=a,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[1],l.x,l.y),l.x=n,l.y=e.y,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[2],l.x,l.y),l.x=e.x,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[3],l.x,l.y),l.x=n,l.y=i,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[4],l.x,l.y),l.x=e.x,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[5],l.x,l.y),l.x=a,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[6],l.x,l.y),l.x=n,l.y=t,l=mxUtils.getRotatedPoint(l,o,s,r),this.moveSizerTo(this.sizers[7],l.x,l.y),this.moveSizerTo(this.sizers[8],a+e.absoluteOffset.x,i+e.absoluteOffset.y)}else 2<=this.state.width&&2<=this.state.height?this.moveSizerTo(this.sizers[0],a+e.absoluteOffset.x,i+e.absoluteOffset.y):this.moveSizerTo(this.sizers[0],e.x,e.y)}}null!=this.rotationShape&&(s=mxUtils.toRadians(this.state.style[mxConstants.STYLE_ROTATION]||"0"),o=Math.cos(s),s=Math.sin(s),r=new mxPoint(this.state.getCenterX(),this.state.getCenterY()),l=mxUtils.getRotatedPoint(new mxPoint(e.x+e.width/2,e.y-16),o,s,r),this.moveSizerTo(this.rotationShape,l.x,l.y)),this.selectionBorder.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.drawPreview()},mxVertexHandler.prototype.drawPreview=function(){null!=this.preview&&(this.preview.bounds=this.bounds,this.preview.node.parentNode==this.graph.container&&(this.preview.bounds.width=Math.max(0,this.preview.bounds.width-1),this.preview.bounds.height=Math.max(0,this.preview.bounds.height-1)),this.preview.rotation=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0"),this.preview.redraw()),this.selectionBorder.bounds=this.bounds,this.selectionBorder.redraw()},mxVertexHandler.prototype.destroy=function(){if(null!=this.preview&&(this.preview.destroy(),this.preview=null),this.selectionBorder.destroy(),this.labelShape=this.selectionBorder=null,null!=this.sizers)for(var e=0;e<this.sizers.length;e++)this.sizers[e].destroy(),this.sizers[e]=null},mxEdgeHandler.prototype.graph=null,mxEdgeHandler.prototype.state=null,mxEdgeHandler.prototype.marker=null,mxEdgeHandler.prototype.constraintHandler=null,mxEdgeHandler.prototype.error=null,mxEdgeHandler.prototype.shape=null,mxEdgeHandler.prototype.bends=null,mxEdgeHandler.prototype.labelShape=null,mxEdgeHandler.prototype.cloneEnabled=!0,mxEdgeHandler.prototype.addEnabled=!1,mxEdgeHandler.prototype.removeEnabled=!1,mxEdgeHandler.prototype.preferHtml=!1,mxEdgeHandler.prototype.allowHandleBoundsCheck=!0,mxEdgeHandler.prototype.snapToTerminals=!1,mxEdgeHandler.prototype.handleImage=null,mxEdgeHandler.prototype.tolerance=0,mxEdgeHandler.prototype.init=function(){if(this.graph=this.state.view.graph,this.marker=this.createMarker(),this.constraintHandler=new mxConstraintHandler(this.graph),this.points=[],this.abspoints=this.getSelectionPoints(this.state),this.shape=this.createSelectionShape(this.abspoints),this.shape.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,this.shape.init(this.graph.getView().getOverlayPane()),this.shape.svgStrokeTolerance=0,this.shape.node.style.cursor=mxConstants.CURSOR_MOVABLE_EDGE,mxEvent.addListener(this.shape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e,this.state.cell)})),mxEvent.addGestureListeners(this.shape.node,mxUtils.bind(this,function(e){this.addEnabled&&this.isAddPointEvent(e)?this.addPoint(this.state,e):this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e,this.state))}),mxUtils.bind(this,function(e){var n=this.state.cell;if(null!=this.index){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.graph.getCellAt(t.x,t.y);this.graph.isSwimlane(n)&&this.graph.hitsSwimlaneContent(n,t.x,t.y)&&(n=null)}this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e,this.graph.getView().getState(n)))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e,this.state))})),this.preferHtml=null!=this.state.text&&this.state.text.node.parentNode==this.graph.container,!this.preferHtml){var e=this.state.getVisibleTerminalState(!0);null!=e&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container),this.preferHtml||null!=(e=this.state.getVisibleTerminalState(!1))&&(this.preferHtml=null!=e.text&&e.text.node.parentNode==this.graph.container)}(this.graph.getSelectionCount()<mxGraphHandler.prototype.maxCells||mxGraphHandler.prototype.maxCells<=0)&&(this.bends=this.createBends()),this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape=new mxRectangleShape(new mxRectangle,mxConstants.LABEL_HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR),this.labelShape.pointerEvents=!1,this.initBend(this.labelShape),this.labelShape.node.style.cursor=mxConstants.CURSOR_LABEL_HANDLE,mxEvent.redirectMouseEvents(this.labelShape.node,this.graph,this.state),this.redraw()},mxEdgeHandler.prototype.isAddPointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.isRemovePointEvent=function(e){return mxEvent.isShiftDown(e)},mxEdgeHandler.prototype.getSelectionPoints=function(e){return e.absolutePoints},mxEdgeHandler.prototype.createSelectionShape=function(e){return(e=new mxPolyline(e,this.getSelectionColor())).strokewidth=this.getSelectionStrokeWidth(),e.isDashed=this.isSelectionDashed(),e},mxEdgeHandler.prototype.getSelectionColor=function(){return mxConstants.EDGE_SELECTION_COLOR},mxEdgeHandler.prototype.getSelectionStrokeWidth=function(){return mxConstants.EDGE_SELECTION_STROKEWIDTH},mxEdgeHandler.prototype.isSelectionDashed=function(){return mxConstants.EDGE_SELECTION_DASHED},mxEdgeHandler.prototype.isConnectableCell=function(e){return!0},mxEdgeHandler.prototype.createMarker=function(){var e=new mxCellMarker(this.graph),a=this;return e.getCell=function(e){var n=mxCellMarker.prototype.getCell.apply(this,arguments);if(!a.isConnectableCell(n))return null;var t=a.graph.getModel();return(n==a.state.cell||null!=n&&!a.graph.connectableEdges&&t.isEdge(n))&&(n=null),n},e.isValidState=function(e){var n=a.graph.getModel();n=null!=(n=a.graph.view.getTerminalPort(e,a.graph.view.getState(n.getTerminal(a.state.cell,!a.isSource)),!a.isSource))?n.cell:null;return a.error=a.validateConnection(a.isSource?e.cell:n,a.isSource?n:e.cell),null==a.error},e},mxEdgeHandler.prototype.validateConnection=function(e,n){return this.graph.getEdgeValidationError(this.state.cell,e,n)},mxEdgeHandler.prototype.createBends=function(){for(var e=this.state.cell,n=[],t=0;t<this.abspoints.length;t++)if(this.isHandleVisible(t)){var a=t==this.abspoints.length-1;if((a=0==t||a)||this.graph.isCellBendable(e)){var i=this.createHandleShape(t);if(this.initBend(i),mxClient.IS_TOUCH&&i.node.setAttribute("pointer-events","none"),this.isHandleEnabled(t))if(mxClient.IS_TOUCH){var s=mxUtils.bind(this,function(e){return e=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),this.graph.view.getState(this.graph.getCellAt(e.x,e.y))});mxEvent.redirectMouseEvents(i.node,this.graph,s)}else i.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(i.node,this.graph,this.state);n.push(i),a||(this.points.push(new mxPoint(0,0)),i.node.style.visibility="hidden")}}return n},mxEdgeHandler.prototype.isHandleEnabled=function(e){return!0},mxEdgeHandler.prototype.isHandleVisible=function(e){return!0},mxEdgeHandler.prototype.createHandleShape=function(e){return null!=this.handleImage?new mxImageShape(new mxRectangle(0,0,this.handleImage.width,this.handleImage.height),this.handleImage.src):(e=mxConstants.HANDLE_SIZE,this.preferHtml&&(e-=1),new mxRectangleShape(new mxRectangle(0,0,e,e),mxConstants.HANDLE_FILLCOLOR,mxConstants.HANDLE_STROKECOLOR))},mxEdgeHandler.prototype.initBend=function(e){this.preferHtml?(e.dialect=mxConstants.DIALECT_STRICTHTML,e.init(this.graph.container)):(e.dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_MIXEDHTML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()))},mxEdgeHandler.prototype.getHandleForEvent=function(e){if(null!=this.bends)for(var n=this.tolerance,t=(n=this.allowHandleBoundsCheck&&(mxClient.IS_IE||0<n)?new mxRectangle(e.getGraphX()-n,e.getGraphY()-n,2*n,2*n):null,0);t<this.bends.length;t++)if((e.isSource(this.bends[t])||null!=n&&mxUtils.intersects(this.bends[t].bounds,n))&&"hidden"!=this.bends[t].node.style.visibility)return t;return!(e.isSource(this.labelShape)&&"hidden"!=this.labelShape.node.style.visibility||e.isSource(this.state.text))||(mxClient.IS_SF||mxClient.IS_GC)&&"SELECT"==e.getSource().nodeName?null:mxEvent.LABEL_HANDLE},mxEdgeHandler.prototype.mouseDown=function(e,n){var t=null;null!=(t=this.getHandleForEvent(n))&&!n.isConsumed()&&this.graph.isEnabled()&&!this.graph.isForceMarqueeEvent(n.getEvent())&&(this.removeEnabled&&this.isRemovePointEvent(n.getEvent())?this.removePoint(this.state,t):(t!=mxEvent.LABEL_HANDLE||this.graph.isLabelMovable(n.getCell()))&&this.start(n.getX(),n.getY(),t),n.consume())},mxEdgeHandler.prototype.start=function(e,n,t){this.startX=e,this.startY=n,this.isSource=null!=this.bends&&0==t,this.isTarget=null!=this.bends&&t==this.bends.length-1,this.isLabel=t==mxEvent.LABEL_HANDLE,this.isSource||this.isTarget?(e=this.state.cell,(null==(n=this.graph.model.getTerminal(e,this.isSource))&&this.graph.isTerminalPointMovable(e,this.isSource)||null!=n&&this.graph.isCellDisconnectable(e,n,this.isSource))&&(this.index=t)):this.index=t},mxEdgeHandler.prototype.clonePreviewState=function(e,n){return this.state.clone()},mxEdgeHandler.prototype.getSnapToTerminalTolerance=function(){return this.graph.gridSize*this.graph.view.scale/2},mxEdgeHandler.prototype.getPointForEvent=function(e){var t=new mxPoint(e.getGraphX(),e.getGraphY()),a=this.getSnapToTerminalTolerance(),n=this.graph.getView(),i=!1,s=!1;if(this.snapToTerminals&&0<a){var o=function(e){if(null!=e){var n=e.x;Math.abs(t.x-n)<a&&(t.x=n,i=!0),e=e.y,Math.abs(t.y-e)<a&&(t.y=e,s=!0)}},r=function(e){null!=e&&o.call(this,new mxPoint(n.getRoutingCenterX(e),n.getRoutingCenterY(e)))};if(r.call(this,this.state.getVisibleTerminalState(!0)),r.call(this,this.state.getVisibleTerminalState(!1)),null!=this.abspoints)for(r=0;r<this.abspoints;r++)r!=this.index&&o.call(this,this.abspoints[r])}return this.graph.isGridEnabledEvent(e.getEvent())&&(e=n.scale,r=n.translate,i||(t.x=(this.graph.snap(t.x/e-r.x)+r.x)*e),s||(t.y=(this.graph.snap(t.y/e-r.y)+r.y)*e)),t},mxEdgeHandler.prototype.getPreviewTerminalState=function(e){this.constraintHandler.update(e,this.isSource),this.marker.process(e),e=this.marker.getValidState();var n=null;return null!=this.constraintHandler.currentFocus&&null!=this.constraintHandler.currentConstraint&&this.marker.reset(),null!=e?n=e:null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(n=this.constraintHandler.currentFocus),n},mxEdgeHandler.prototype.getPreviewPoints=function(e){var n=null!=(n=this.graph.getCellGeometry(this.state.cell)).points?n.points.slice():null;return this.isSource||this.isTarget?this.graph.resetEdgesOnConnect&&(n=null):(this.convertPoint(e,!1),null==n?n=[e]:n[this.index-1]=e),n},mxEdgeHandler.prototype.updatePreviewState=function(e,n,t){var a=this.isSource?t:this.state.getVisibleTerminalState(!0),i=this.isTarget?t:this.state.getVisibleTerminalState(!1),s=this.graph.getConnectionConstraint(e,a,!0),o=this.graph.getConnectionConstraint(e,i,!1),r=this.constraintHandler.currentConstraint;null==r&&(r=new mxConnectionConstraint),this.isSource?s=r:this.isTarget&&(o=r),(!this.isSource||null!=a)&&e.view.updateFixedTerminalPoint(e,a,!0,s),(!this.isTarget||null!=i)&&e.view.updateFixedTerminalPoint(e,i,!1,o),(this.isSource||this.isTarget)&&null==t&&(e.setAbsoluteTerminalPoint(n,this.isSource),null==this.marker.getMarkedState()&&(this.error=this.graph.allowDanglingEdges?null:"")),e.view.updatePoints(e,this.points,a,i),e.view.updateFloatingTerminalPoints(e,a,i)},mxEdgeHandler.prototype.mouseMove=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.getPointForEvent(n);if(this.isLabel)this.label.x=t.x,this.label.y=t.y;else{this.points=this.getPreviewPoints(t);var a=this.isSource||this.isTarget?this.getPreviewTerminalState(n):null,i=this.clonePreviewState(t,null!=a?a.cell:null);this.updatePreviewState(i,t,a),this.setPreviewColor(null==this.error?this.marker.validColor:this.marker.invalidColor),this.abspoints=i.absolutePoints,this.active=!0}this.drawPreview(),mxEvent.consume(n.getEvent()),n.consume()}else mxClient.IS_IE&&null!=this.getHandleForEvent(n)&&n.consume(!1)},mxEdgeHandler.prototype.mouseUp=function(e,n){if(null!=this.index&&null!=this.marker){var t=this.state.cell;if(n.getX()!=this.startX||n.getY()!=this.startY)if(null!=this.error)0<this.error.length&&this.graph.validationAlert(this.error);else if(this.isLabel)this.moveLabel(this.state,this.label.x,this.label.y);else if(this.isSource||this.isTarget){var a=null;if(null!=this.constraintHandler.currentConstraint&&null!=this.constraintHandler.currentFocus&&(a=this.constraintHandler.currentFocus.cell),null==a&&this.marker.hasValidState()&&(a=this.marker.validState.cell),null!=a)t=this.connect(t,a,this.isSource,this.graph.isCloneEvent(n.getEvent())&&this.cloneEnabled&&this.graph.isCellsCloneable(),n);else if(this.graph.isAllowDanglingEdges()){(a=this.abspoints[this.isSource?0:this.abspoints.length-1]).x=a.x/this.graph.view.scale-this.graph.view.translate.x,a.y=a.y/this.graph.view.scale-this.graph.view.translate.y;var i=this.graph.getView().getState(this.graph.getModel().getParent(t));null!=i&&(a.x-=i.origin.x,a.y-=i.origin.y),a.x-=this.graph.panDx/this.graph.view.scale,a.y-=this.graph.panDy/this.graph.view.scale,this.changeTerminalPoint(t,a,this.isSource)}}else this.active?this.changePoints(t,this.points):(this.graph.getView().invalidate(this.state.cell),this.graph.getView().revalidate(this.state.cell));null!=this.marker&&(this.reset(),t!=this.state.cell&&this.graph.setSelectionCell(t)),n.consume()}},mxEdgeHandler.prototype.reset=function(){this.points=this.label=this.index=this.error=null,this.isTarget=this.isSource=this.isLabel=this.active=!1,this.marker.reset(),this.constraintHandler.reset(),this.setPreviewColor(mxConstants.EDGE_SELECTION_COLOR),this.redraw()},mxEdgeHandler.prototype.setPreviewColor=function(e){null!=this.shape&&(this.shape.stroke=e)},mxEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate();return n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x),e.y=Math.round(e.y/t-a.y),null!=(t=this.graph.getView().getState(this.graph.getModel().getParent(this.state.cell)))&&(e.x-=t.origin.x,e.y-=t.origin.y),e},mxEdgeHandler.prototype.moveLabel=function(e,n,t){var a=this.graph.getModel();if(null!=(i=a.getGeometry(e.cell))){var i=i.clone(),s=this.graph.getView().getRelativePoint(e,n,t);i.x=s.x,i.y=s.y;var o=this.graph.getView().scale;i.offset=new mxPoint(0,0),s=this.graph.view.getPoint(e,i),i.offset=new mxPoint((n-s.x)/o,(t-s.y)/o),a.setGeometry(e.cell,i)}},mxEdgeHandler.prototype.connect=function(e,n,t,a,i){var s=(i=this.graph.getModel()).getParent(e);i.beginUpdate();try{if(a){var o=e.clone();i.add(s,o,i.getChildCount(s));var r=i.getTerminal(e,!t);this.graph.connectCell(o,r,!t),e=o}var l=this.constraintHandler.currentConstraint;null==l&&(l=new mxConnectionConstraint),this.graph.connectCell(e,n,t,l)}finally{i.endUpdate()}return e},mxEdgeHandler.prototype.changeTerminalPoint=function(e,n,t){var a=this.graph.getModel(),i=a.getGeometry(e);if(null!=i){a.beginUpdate();try{(i=i.clone()).setTerminalPoint(n,t),a.setGeometry(e,i),this.graph.connectCell(e,null,t,new mxConnectionConstraint)}finally{a.endUpdate()}}},mxEdgeHandler.prototype.changePoints=function(e,n){var t=this.graph.getModel(),a=t.getGeometry(e);null!=a&&((a=a.clone()).points=n,t.setGeometry(e,a))},mxEdgeHandler.prototype.addPoint=function(e,n){var t=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(n),mxEvent.getClientY(n)),a=this.graph.isGridEnabledEvent(n);this.convertPoint(t,a),this.addPointAt(e,t.x,t.y),mxEvent.consume(n)},mxEdgeHandler.prototype.addPointAt=function(e,n,t){var a=this.graph.getCellGeometry(e.cell);if(n=new mxPoint(n,t),null!=a){a=a.clone(),t=this.graph.view.translate;var i=this.graph.view.scale;t=mxUtils.findNearestSegment(e,(n.x+t.x)*i,(n.y+t.y)*i),null==a.points?a.points=[n]:a.points.splice(t,0,n),this.graph.getModel().setGeometry(e.cell,a),this.destroy(),this.init()}},mxEdgeHandler.prototype.removePoint=function(e,n){if(0<n&&n<this.abspoints.length-1){var t=this.graph.getCellGeometry(this.state.cell);null!=t&&null!=t.points&&((t=t.clone()).points.splice(n-1,1),this.graph.getModel().setGeometry(e.cell,t),this.destroy(),this.init())}},mxEdgeHandler.prototype.getHandleFillColor=function(e){e=0==e;var n=this.state.cell,t=this.graph.getModel().getTerminal(n,e),a=mxConstants.HANDLE_FILLCOLOR;return null!=t&&!this.graph.isCellDisconnectable(n,t,e)||null==t&&!this.graph.isTerminalPointMovable(n,e)?a=mxConstants.LOCKED_HANDLE_FILLCOLOR:null!=t&&this.graph.isCellDisconnectable(n,t,e)&&(a=mxConstants.CONNECT_HANDLE_FILLCOLOR),a},mxEdgeHandler.prototype.redraw=function(){this.abspoints=this.state.absolutePoints.slice();var e=this.state.cell,n=mxConstants.LABEL_HANDLE_SIZE;if(this.label=new mxPoint(this.state.absoluteOffset.x,this.state.absoluteOffset.y),this.labelShape.bounds=new mxRectangle(Math.round(this.label.x-n/2),Math.round(this.label.y-n/2),n,n),this.labelShape.redraw(),null!=(n=this.graph.getLabel(e))&&0<n.length&&this.graph.isLabelMovable(e)?this.labelShape.node.style.visibility="visible":this.labelShape.node.style.visibility="hidden",null!=this.bends&&0<this.bends.length){var t=this.abspoints.length-1,a=(e=this.abspoints[0],this.abspoints[0].y);n=this.bends[0].bounds;this.bends[0].bounds=new mxRectangle(Math.round(this.abspoints[0].x-n.width/2),Math.round(a-n.height/2),n.width,n.height),this.bends[0].fill=this.getHandleFillColor(0),this.bends[0].redraw();a=this.abspoints[t];var i=this.abspoints[t].x,s=(t=this.abspoints[t].y,this.bends.length-1);n=this.bends[s].bounds;this.bends[s].bounds=new mxRectangle(Math.round(i-n.width/2),Math.round(t-n.height/2),n.width,n.height),this.bends[s].fill=this.getHandleFillColor(s),this.bends[s].redraw(),this.redrawInnerBends(e,a)}this.drawPreview()},mxEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=this.graph.getModel().getGeometry(this.state.cell).points;if(null!=t){null==this.points&&(this.points=[]);for(var a=1;a<this.bends.length-1;a++)if(null!=this.bends[a])if(null!=this.abspoints[a]){var i=this.abspoints[a].x,s=this.abspoints[a].y,o=this.bends[a].bounds;this.bends[a].node.style.visibility="visible",this.bends[a].bounds=new mxRectangle(Math.round(i-o.width/2),Math.round(s-o.height/2),o.width,o.height),this.bends[a].redraw(),this.points[a-1]=t[a-1]}else this.bends[a].destroy(),this.bends[a]=null}},mxEdgeHandler.prototype.drawPreview=function(){if(this.isLabel){var e=mxConstants.LABEL_HANDLE_SIZE;e=new mxRectangle(Math.round(this.label.x-e/2),Math.round(this.label.y-e/2),e,e);this.labelShape.bounds=e,this.labelShape.redraw()}else this.shape.points=this.abspoints,this.shape.redraw()},mxEdgeHandler.prototype.destroy=function(){if(null!=this.marker&&(this.marker.destroy(),this.marker=null),null!=this.shape&&(this.shape.destroy(),this.shape=null),null!=this.labelShape&&(this.labelShape.destroy(),this.labelShape=null),null!=this.constraintHandler&&(this.constraintHandler.destroy(),this.constraintHandler=null),null!=this.bends)for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null)},mxUtils.extend(mxElbowEdgeHandler,mxEdgeHandler),mxElbowEdgeHandler.prototype=new mxEdgeHandler,mxElbowEdgeHandler.prototype.constructor=mxElbowEdgeHandler,mxElbowEdgeHandler.prototype.flipEnabled=!0,mxElbowEdgeHandler.prototype.doubleClickOrientationResource="none"!=mxClient.language?"doubleClickOrientation":"",mxElbowEdgeHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);return this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e.push(this.createVirtualBend()),this.points.push(new mxPoint(0,0)),n=this.createHandleShape(2),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxElbowEdgeHandler.prototype.createVirtualBend=function(){var e=this.createHandleShape();this.initBend(e);var n=this.getCursorForBend();return e.node.style.cursor=n,n=mxUtils.bind(this,function(e){!mxEvent.isConsumed(e)&&this.flipEnabled&&(this.graph.flipEdge(this.state.cell,e),mxEvent.consume(e))}),mxEvent.redirectMouseEvents(e.node,this.graph,this.state,null,null,null,n),this.graph.isCellBendable(this.state.cell)||(e.node.style.display="none"),e},mxElbowEdgeHandler.prototype.getCursorForBend=function(){return this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.TopToBottom||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_TOPTOBOTTOM||(this.state.style[mxConstants.STYLE_EDGE]==mxEdgeStyle.ElbowConnector||this.state.style[mxConstants.STYLE_EDGE]==mxConstants.EDGESTYLE_ELBOW)&&this.state.style[mxConstants.STYLE_ELBOW]==mxConstants.ELBOW_VERTICAL?"row-resize":"col-resize"},mxElbowEdgeHandler.prototype.getTooltipForNode=function(e){var n=null;return null==this.bends||null==this.bends[1]||e!=this.bends[1].node&&e.parentNode!=this.bends[1].node||(n=this.doubleClickOrientationResource,n=mxResources.get(n)||n),n},mxElbowEdgeHandler.prototype.convertPoint=function(e,n){var t=this.graph.getView().getScale(),a=this.graph.getView().getTranslate(),i=this.state.origin;n&&(e.x=this.graph.snap(e.x),e.y=this.graph.snap(e.y)),e.x=Math.round(e.x/t-a.x-i.x),e.y=Math.round(e.y/t-a.y-i.y)},mxElbowEdgeHandler.prototype.redrawInnerBends=function(e,n){var t=null==(t=null!=(t=this.graph.getModel().getGeometry(this.state.cell).points)?t[0]:null)?new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2):new mxPoint(this.graph.getView().scale*(t.x+this.graph.getView().translate.x+this.state.origin.x),this.graph.getView().scale*(t.y+this.graph.getView().translate.y+this.state.origin.y)),a=(i=this.bends[1].bounds).width,i=i.height;null==this.handleImage&&(i=a=mxConstants.HANDLE_SIZE);var s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i);null==this.handleImage&&"hidden"!=this.labelShape.node.style.visibility&&mxUtils.intersects(s,this.labelShape.bounds)&&(a+=3,i+=3,s=new mxRectangle(Math.round(t.x-a/2),Math.round(t.y-i/2),a,i)),this.bends[1].bounds=s,this.bends[1].redraw()},mxUtils.extend(mxEdgeSegmentHandler,mxEdgeHandler),mxEdgeSegmentHandler.prototype=new mxElbowEdgeHandler,mxEdgeSegmentHandler.prototype.constructor=mxEdgeSegmentHandler,mxEdgeSegmentHandler.prototype.getPreviewPoints=function(e){if(this.isSource||this.isTarget)return mxElbowEdgeHandler.prototype.getPreviewPoints.apply(this,arguments);this.convertPoint(e,!1);var n=this.state.absolutePoints,t=n[0].clone();this.convertPoint(t,!1);for(var a=[],i=1;i<n.length;i++){var s=n[i].clone();this.convertPoint(s,!1),i==this.index&&(t.x==s.x?(t.x=e.x,s.x=e.x):(t.y=e.y,s.y=e.y)),i<n.length-1&&a.push(s),t=s}if(1==a.length){if(t=this.state.view,i=this.state.getVisibleTerminalState(!0),null!=(s=this.state.getVisibleTerminalState(!1))&null!=i){var o=this.state.origin.x,r=this.state.origin.y;mxUtils.contains(s,a[0].x+o,a[0].y+r)?n[1].y==n[2].y?a[0].y=t.getRoutingCenterY(i)-r:a[0].x=t.getRoutingCenterX(i)-o:mxUtils.contains(i,a[0].x+o,a[0].y+r)&&(n[1].y==n[0].y?a[0].y=t.getRoutingCenterY(s)-r:a[0].x=t.getRoutingCenterX(s)-o)}}else 0==a.length&&(a=[e]);return a},mxEdgeSegmentHandler.prototype.createBends=function(){var e=[],n=this.createHandleShape(0);this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none");var t=this.state.absolutePoints;if(this.graph.isCellBendable(this.state.cell)){null==this.points&&(this.points=[]);for(var a=0;a<t.length-1;a++)n=this.createVirtualBend(),e.push(n),n.node.style.cursor=0==t[a].x-t[a+1].x?"col-resize":"row-resize",this.points.push(new mxPoint(0,0)),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none")}return n=this.createHandleShape(t.length),this.initBend(n),n.node.style.cursor=mxConstants.CURSOR_BEND_HANDLE,mxEvent.redirectMouseEvents(n.node,this.graph,this.state),e.push(n),mxClient.IS_TOUCH&&n.node.setAttribute("pointer-events","none"),e},mxEdgeSegmentHandler.prototype.redraw=function(){this.refresh(),mxEdgeHandler.prototype.redraw.apply(this,arguments)},mxEdgeSegmentHandler.prototype.refresh=function(){if(null!=this.bends){for(var e=0;e<this.bends.length;e++)null!=this.bends[e]&&(this.bends[e].destroy(),this.bends[e]=null);this.bends=this.createBends()}},mxEdgeSegmentHandler.prototype.redrawInnerBends=function(e,n){if(this.graph.isCellBendable(this.state.cell)){var t=mxConstants.HANDLE_SIZE,a=this.state.absolutePoints;if(null!=a&&1<a.length)for(var i=0;i<this.state.absolutePoints.length-1;i++)if(null!=this.bends[i+1]){e=a[i],n=a[i+1];var s=new mxPoint(e.x+(n.x-e.x)/2,e.y+(n.y-e.y)/2);this.bends[i+1].bounds=new mxRectangle(Math.round(s.x-t/2),Math.round(s.y-t/2),t,t),this.bends[i+1].redraw()}}},mxEdgeSegmentHandler.prototype.changePoints=function(e,n){n=[];var t=this.abspoints;if(1<t.length)for(var a=t[0],i=t[1],s=2;s<t.length;s++){var o=t[s];Math.round(a.x)==Math.round(i.x)&&Math.round(i.x)==Math.round(o.x)||Math.round(a.y)==Math.round(i.y)&&Math.round(i.y)==Math.round(o.y)||(i=(a=i).clone(),this.convertPoint(i,!1),n.push(i)),i=o}mxElbowEdgeHandler.prototype.changePoints.apply(this,arguments)},mxKeyHandler.prototype.graph=null,mxKeyHandler.prototype.target=null,mxKeyHandler.prototype.normalKeys=null,mxKeyHandler.prototype.shiftKeys=null,mxKeyHandler.prototype.controlKeys=null,mxKeyHandler.prototype.controlShiftKeys=null,mxKeyHandler.prototype.enabled=!0,mxKeyHandler.prototype.isEnabled=function(){return this.enabled},mxKeyHandler.prototype.setEnabled=function(e){this.enabled=e},mxKeyHandler.prototype.bindKey=function(e,n){this.normalKeys[e]=n},mxKeyHandler.prototype.bindShiftKey=function(e,n){this.shiftKeys[e]=n},mxKeyHandler.prototype.bindControlKey=function(e,n){this.controlKeys[e]=n},mxKeyHandler.prototype.bindControlShiftKey=function(e,n){this.controlShiftKeys[e]=n},mxKeyHandler.prototype.isControlDown=function(e){return mxEvent.isControlDown(e)},mxKeyHandler.prototype.getFunction=function(e){return null!=e?this.isControlDown(e)?mxEvent.isShiftDown(e)?this.controlShiftKeys[e.keyCode]:this.controlKeys[e.keyCode]:mxEvent.isShiftDown(e)?this.shiftKeys[e.keyCode]:this.normalKeys[e.keyCode]:null},mxKeyHandler.prototype.isGraphEvent=function(e){if((e=mxEvent.getSource(e))==this.target||e.parentNode==this.target||null!=this.graph.cellEditor&&e==this.graph.cellEditor.textarea)return!0;for(;null!=e;){if(e==this.graph.container)return!0;e=e.parentNode}return!1},mxKeyHandler.prototype.keyDown=function(e){if(this.graph.isEnabled()&&!mxEvent.isConsumed(e)&&this.isGraphEvent(e)&&this.isEnabled())if(27==e.keyCode)this.escape(e);else if(!this.graph.isEditing()){var n=this.getFunction(e);null!=n&&(n(e),mxEvent.consume(e))}},mxKeyHandler.prototype.escape=function(e){this.graph.isEscapeEnabled()&&this.graph.escape(e)},mxKeyHandler.prototype.destroy=function(){this.target=null},mxTooltipHandler.prototype.zIndex=10005,mxTooltipHandler.prototype.graph=null,mxTooltipHandler.prototype.delay=null,mxTooltipHandler.prototype.hideOnHover=!1,mxTooltipHandler.prototype.enabled=!0,mxTooltipHandler.prototype.isEnabled=function(){return this.enabled},mxTooltipHandler.prototype.setEnabled=function(e){this.enabled=e},mxTooltipHandler.prototype.isHideOnHover=function(){return this.hideOnHover},mxTooltipHandler.prototype.setHideOnHover=function(e){this.hideOnHover=e},mxTooltipHandler.prototype.init=function(){null!=document.body&&(this.div=document.createElement("div"),this.div.className="mxTooltip",this.div.style.visibility="hidden",this.div.style.zIndex=this.zIndex,document.body.appendChild(this.div),mxEvent.addListener(this.div,"mousedown",mxUtils.bind(this,function(e){this.hideTooltip()})))},mxTooltipHandler.prototype.mouseDown=function(e,n){this.reset(n,!1),this.hideTooltip()},mxTooltipHandler.prototype.mouseMove=function(e,n){n.getX()==this.lastX&&n.getY()==this.lastY||(this.reset(n,!0),(this.isHideOnHover()||n.getState()!=this.state||n.getSource()!=this.node&&(!this.stateSource||null!=n.getState()&&this.stateSource==(n.isSource(n.getState().shape)||!n.isSource(n.getState().text))))&&this.hideTooltip()),this.lastX=n.getX(),this.lastY=n.getY()},mxTooltipHandler.prototype.mouseUp=function(e,n){this.reset(n,!0),this.hideTooltip()},mxTooltipHandler.prototype.resetTimer=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null)},mxTooltipHandler.prototype.reset=function(e,n){if(this.resetTimer(),n&&this.isEnabled()&&null!=e.getState()&&(null==this.div||"hidden"==this.div.style.visibility)){var t=e.getState(),a=e.getSource(),i=e.getX(),s=e.getY(),o=e.isSource(t.shape)||e.isSource(t.text);this.thread=window.setTimeout(mxUtils.bind(this,function(){if(!this.graph.isEditing()&&!this.graph.panningHandler.isMenuShowing()){var e=this.graph.getTooltip(t,a,i,s);this.show(e,i,s),this.state=t,this.node=a,this.stateSource=o}}),this.delay)}},mxTooltipHandler.prototype.hide=function(){this.resetTimer(),this.hideTooltip()},mxTooltipHandler.prototype.hideTooltip=function(){null!=this.div&&(this.div.style.visibility="hidden")},mxTooltipHandler.prototype.show=function(e,n,t){if(null!=e&&0<e.length){null==this.div&&this.init();var a=mxUtils.getScrollOrigin();this.div.style.left=n+a.x+"px",this.div.style.top=t+mxConstants.TOOLTIP_VERTICAL_OFFSET+a.y+"px",mxUtils.isNode(e)?(this.div.innerHTML="",this.div.appendChild(e)):this.div.innerHTML=e.replace(/\n/g,"<br>"),this.div.style.visibility="",mxUtils.fit(this.div)}},mxTooltipHandler.prototype.destroy=function(){this.graph.removeMouseListener(this),mxEvent.release(this.div),null!=this.div&&null!=this.div.parentNode&&this.div.parentNode.removeChild(this.div),this.div=null},mxUtils.extend(mxCellTracker,mxCellMarker),mxCellTracker.prototype.mouseDown=function(e,n){},mxCellTracker.prototype.mouseMove=function(e,n){this.isEnabled()&&this.process(n)},mxCellTracker.prototype.mouseUp=function(e,n){this.reset()},mxCellTracker.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,this.graph.removeMouseListener(this),mxCellMarker.prototype.destroy.apply(this))},mxCellHighlight.prototype.keepOnTop=!1,mxCellHighlight.prototype.graph=!0,mxCellHighlight.prototype.state=null,mxCellHighlight.prototype.spacing=2,mxCellHighlight.prototype.resetHandler=null,mxCellHighlight.prototype.setHighlightColor=function(e){this.highlightColor=e,null!=this.shape&&(this.shape.stroke=e)},mxCellHighlight.prototype.drawHighlight=function(){this.shape=this.createShape(),this.repaint(),!this.keepOnTop&&this.shape.node.parentNode.firstChild!=this.shape.node&&this.shape.node.parentNode.insertBefore(this.shape.node,this.shape.node.parentNode.firstChild)},mxCellHighlight.prototype.createShape=function(){var e=null;return(e=this.graph.model.isEdge(this.state.cell)?new mxPolyline(this.state.absolutePoints,this.highlightColor,this.strokeWidth):new mxRectangleShape(new mxRectangle,null,this.highlightColor,this.strokeWidth)).dialect=this.graph.dialect!=mxConstants.DIALECT_SVG?mxConstants.DIALECT_VML:mxConstants.DIALECT_SVG,e.init(this.graph.getView().getOverlayPane()),mxEvent.redirectMouseEvents(e.node,this.graph,this.state),e.svgStrokeTolerance=0,e.pointerEvents=!1,e.isDashed=this.dashed,e},mxCellHighlight.prototype.repaint=function(){if(null!=this.state&&null!=this.shape){var e=0;this.graph.model.isEdge(this.state.cell)?this.shape.points=this.state.absolutePoints:(this.shape.bounds=new mxRectangle(this.state.x-this.spacing,this.state.y-this.spacing,this.state.width+2*this.spacing,this.state.height+2*this.spacing),e=Number(this.state.style[mxConstants.STYLE_ROTATION]||"0")),null!=this.state.shape&&this.shape.setCursor(this.state.shape.getCursor()),0!=e&&(this.shape.rotation=e),this.shape.redraw()}},mxCellHighlight.prototype.hide=function(){this.highlight(null)},mxCellHighlight.prototype.highlight=function(e){this.state!=e&&(null!=this.shape&&(this.shape.destroy(),this.shape=null),this.state=e,null!=this.state&&this.drawHighlight())},mxCellHighlight.prototype.destroy=function(){this.graph.getView().removeListener(this.repaintHandler),this.graph.getModel().removeListener(this.repaintHandler),this.graph.getView().removeListener(this.resetHandler),this.graph.getModel().removeListener(this.resetHandler),null!=this.shape&&(this.shape.destroy(),this.shape=null)},mxDefaultKeyHandler.prototype.editor=null,mxDefaultKeyHandler.prototype.handler=null,mxDefaultKeyHandler.prototype.bindAction=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(n)});t?this.handler.bindControlKey(e,a):this.handler.bindKey(e,a)},mxDefaultKeyHandler.prototype.destroy=function(){this.handler.destroy(),this.handler=null},mxDefaultPopupMenu.prototype.imageBasePath=null,mxDefaultPopupMenu.prototype.config=null,mxDefaultPopupMenu.prototype.createMenu=function(e,n,t,a){if(null!=this.config){var i=this.createConditions(e,t,a);this.addItems(e,n,t,a,i,this.config.firstChild,null)}},mxDefaultPopupMenu.prototype.addItems=function(e,n,t,a,i,s,o){for(var r=!1;null!=s;){if("add"==s.nodeName){if(null==(l=s.getAttribute("if"))||i[l]){var l=s.getAttribute("as"),d=(l=mxResources.get(l)||l,mxUtils.eval(mxUtils.getTextContent(s))),c=s.getAttribute("action"),m=s.getAttribute("icon"),u=s.getAttribute("iconCls");r&&(n.addSeparator(o),r=!1),null!=m&&this.imageBasePath&&(m=this.imageBasePath+m),l=this.addAction(n,e,l,m,d,c,t,o,u),this.addItems(e,n,t,a,i,s.firstChild,l)}}else"separator"==s.nodeName&&(r=!0);s=s.nextSibling}},mxDefaultPopupMenu.prototype.addAction=function(e,n,t,a,i,s,o,r,l){return e.addItem(t,a,function(e){"function"==typeof i&&i.call(n,n,o,e),null!=s&&n.execute(s,o,e)},r,l)},mxDefaultPopupMenu.prototype.createConditions=function(e,n,t){var a=e.graph.getModel(),i=a.getChildCount(n),s=[];for(s.nocell=null==n,s.ncells=1<e.graph.getSelectionCount(),s.notRoot=a.getRoot()!=a.getParent(e.graph.getDefaultParent()),s.cell=null!=n,a=null!=n&&1==e.graph.getSelectionCount(),s.nonEmpty=a&&0<i,s.expandable=a&&e.graph.isCellFoldable(n,!1),s.collapsable=a&&e.graph.isCellFoldable(n,!0),s.validRoot=a&&e.graph.isValidRoot(n),s.emptyValidRoot=s.validRoot&&0==i,s.swimlane=a&&e.graph.isSwimlane(n),i=this.config.getElementsByTagName("condition"),a=0;a<i.length;a++){var o=mxUtils.eval(mxUtils.getTextContent(i[a])),r=i[a].getAttribute("name");null!=r&&"function"==typeof o&&(s[r]=o(e,n,t))}return s},mxDefaultToolbar.prototype.editor=null,mxDefaultToolbar.prototype.toolbar=null,mxDefaultToolbar.prototype.resetHandler=null,mxDefaultToolbar.prototype.spacing=4,mxDefaultToolbar.prototype.connectOnDrop=!1,mxDefaultToolbar.prototype.init=function(e){null!=e&&(this.toolbar=new mxToolbar(e),this.toolbar.addListener(mxEvent.SELECT,mxUtils.bind(this,function(e,n){var t=n.getProperty("function");this.editor.insertFunction=null!=t?mxUtils.bind(this,function(){t.apply(this,arguments),this.toolbar.resetMode()}):null})),this.resetHandler=mxUtils.bind(this,function(){null!=this.toolbar&&this.toolbar.resetMode(!0)}),this.editor.graph.addListener(mxEvent.DOUBLE_CLICK,this.resetHandler),this.editor.addListener(mxEvent.ESCAPE,this.resetHandler))},mxDefaultToolbar.prototype.addItem=function(e,n,t,a){var i=mxUtils.bind(this,function(){null!=t&&0<t.length&&this.editor.execute(t)});return this.toolbar.addItem(e,n,i,a)},mxDefaultToolbar.prototype.addSeparator=function(e){e=e||mxClient.imageBasePath+"/separator.gif",this.toolbar.addSeparator(e)},mxDefaultToolbar.prototype.addCombo=function(){return this.toolbar.addCombo()},mxDefaultToolbar.prototype.addActionCombo=function(e){return this.toolbar.addActionCombo(e)},mxDefaultToolbar.prototype.addActionOption=function(e,n,t){var a=mxUtils.bind(this,function(){this.editor.execute(t)});this.addOption(e,n,a)},mxDefaultToolbar.prototype.addOption=function(e,n,t){return this.toolbar.addOption(e,n,t)},mxDefaultToolbar.prototype.addMode=function(e,n,t,a,i){var s=mxUtils.bind(this,function(){this.editor.setMode(t),null!=i&&i(this.editor)});return this.toolbar.addSwitchMode(e,n,s,a)},mxDefaultToolbar.prototype.addPrototype=function(e,n,t,a,i,s){var o=function(){return"function"==typeof t?t():null!=t?t.clone():null},r=mxUtils.bind(this,function(e,n){"function"==typeof i?i(this.editor,o(),e,n):this.drop(o(),e,n),this.toolbar.resetMode(),mxEvent.consume(e)});return e=this.toolbar.addMode(e,n,r,a,null,s),this.installDropHandler(e,function(e,n,t){r(n,t)}),e},mxDefaultToolbar.prototype.drop=function(e,n,t){var a=this.editor.graph,i=a.getModel();if(null!=t&&!i.isEdge(t)&&this.connectOnDrop&&a.isCellConnectable(t))this.connect(e,n,t);else{for(;null!=t&&!a.isValidDropTarget(t,[e],n);)t=i.getParent(t);this.insert(e,n,t)}},mxDefaultToolbar.prototype.insert=function(e,n,t){var a=this.editor.graph;if(a.canImportCell(e)){var i=mxEvent.getClientX(n),s=mxEvent.getClientY(n);i=mxUtils.convertPoint(a.container,i,s);return a.isSplitEnabled()&&a.isSplitTarget(t,[e],n)?a.splitEdge(t,[e],null,i.x,i.y):this.editor.addVertex(t,e,i.x,i.y)}return null},mxDefaultToolbar.prototype.connect=function(e,n,t){var a=(n=this.editor.graph).getModel();if(null!=t&&n.isCellConnectable(e)&&n.isEdgeValid(null,t,e)){var i=null;a.beginUpdate();try{var s=a.getGeometry(t),o=a.getGeometry(e).clone();o.x=s.x+(s.width-o.width)/2,o.y=s.y+(s.height-o.height)/2;var r=this.spacing*n.gridSize,l=20*a.getDirectedEdgeCount(t,!0);this.editor.horizontalFlow?o.x+=(o.width+s.width)/2+r+l:o.y+=(o.height+s.height)/2+r+l,e.setGeometry(o);var d=a.getParent(t);if(n.addCell(e,d),n.constrainChild(e),i=this.editor.createEdge(t,e),null==a.getGeometry(i)){var c=new mxGeometry;c.relative=!0,a.setGeometry(i,c)}n.addEdge(i,d,t,e)}finally{a.endUpdate()}n.setSelectionCells([e,i]),n.scrollCellToVisible(e)}},mxDefaultToolbar.prototype.installDropHandler=function(n,t){var a=document.createElement("img");a.setAttribute("src",n.getAttribute("src"));var i=mxUtils.bind(this,function(e){a.style.width=2*n.offsetWidth+"px",a.style.height=2*n.offsetHeight+"px",mxUtils.makeDraggable(n,this.editor.graph,t,a),mxEvent.removeListener(a,"load",i)});mxClient.IS_IE?i():mxEvent.addListener(a,"load",i)},mxDefaultToolbar.prototype.destroy=function(){null!=this.resetHandler&&(this.editor.graph.removeListener("dblclick",this.resetHandler),this.editor.removeListener("escape",this.resetHandler),this.resetHandler=null),null!=this.toolbar&&(this.toolbar.destroy(),this.toolbar=null)},mxLoadResources&&mxResources.add(mxClient.basePath+"/resources/editor"),mxEditor.prototype=new mxEventSource,mxEditor.prototype.constructor=mxEditor,mxEditor.prototype.askZoomResource="none"!=mxClient.language?"askZoom":"",mxEditor.prototype.lastSavedResource="none"!=mxClient.language?"lastSaved":"",mxEditor.prototype.currentFileResource="none"!=mxClient.language?"currentFile":"",mxEditor.prototype.propertiesResource="none"!=mxClient.language?"properties":"",mxEditor.prototype.tasksResource="none"!=mxClient.language?"tasks":"",mxEditor.prototype.helpResource="none"!=mxClient.language?"help":"",mxEditor.prototype.outlineResource="none"!=mxClient.language?"outline":"",mxEditor.prototype.outline=null,mxEditor.prototype.graph=null,mxEditor.prototype.graphRenderHint=null,mxEditor.prototype.toolbar=null,mxEditor.prototype.session=null,mxEditor.prototype.status=null,mxEditor.prototype.popupHandler=null,mxEditor.prototype.undoManager=null,mxEditor.prototype.keyHandler=null,mxEditor.prototype.actions=null,mxEditor.prototype.dblClickAction="edit",mxEditor.prototype.swimlaneRequired=!1,mxEditor.prototype.disableContextMenu=!0,mxEditor.prototype.insertFunction=null,mxEditor.prototype.forcedInserting=!1,mxEditor.prototype.templates=null,mxEditor.prototype.defaultEdge=null,mxEditor.prototype.defaultEdgeStyle=null,mxEditor.prototype.defaultGroup=null,mxEditor.prototype.groupBorderSize=null,mxEditor.prototype.filename=null,mxEditor.prototype.linefeed="&#xa;",mxEditor.prototype.postParameterName="xml",mxEditor.prototype.escapePostData=!0,mxEditor.prototype.urlPost=null,mxEditor.prototype.urlImage=null,mxEditor.prototype.urlInit=null,mxEditor.prototype.urlNotify=null,mxEditor.prototype.urlPoll=null,mxEditor.prototype.horizontalFlow=!1,mxEditor.prototype.layoutDiagram=!1,mxEditor.prototype.swimlaneSpacing=0,mxEditor.prototype.maintainSwimlanes=!1,mxEditor.prototype.layoutSwimlanes=!1,mxEditor.prototype.cycleAttributeValues=null,mxEditor.prototype.cycleAttributeIndex=0,mxEditor.prototype.cycleAttributeName="fillColor",mxEditor.prototype.tasks=null,mxEditor.prototype.tasksWindowImage=null,mxEditor.prototype.tasksTop=20,mxEditor.prototype.help=null,mxEditor.prototype.helpWindowImage=null,mxEditor.prototype.urlHelp=null,mxEditor.prototype.helpWidth=300,mxEditor.prototype.helpHeight=260,mxEditor.prototype.propertiesWidth=240,mxEditor.prototype.propertiesHeight=null,mxEditor.prototype.movePropertiesDialog=!1,mxEditor.prototype.validating=!1,mxEditor.prototype.modified=!1,mxEditor.prototype.isModified=function(){return this.modified},mxEditor.prototype.setModified=function(e){this.modified=e},mxEditor.prototype.addActions=function(){this.addAction("save",function(e){e.save()}),this.addAction("print",function(e){new mxPrintPreview(e.graph,1).open()}),this.addAction("show",function(e){mxUtils.show(e.graph,null,10,10)}),this.addAction("exportImage",function(e){var n=e.getUrlImage();if(null==n||mxClient.IS_LOCAL)e.execute("show");else{var t=mxUtils.getViewXml(e.graph,1);t=mxUtils.getXml(t,"\n");mxUtils.submit(n,e.postParameterName+"="+encodeURIComponent(t),document,"_blank")}}),this.addAction("refresh",function(e){e.graph.refresh()}),this.addAction("cut",function(e){e.graph.isEnabled()&&mxClipboard.cut(e.graph)}),this.addAction("copy",function(e){e.graph.isEnabled()&&mxClipboard.copy(e.graph)}),this.addAction("paste",function(e){e.graph.isEnabled()&&mxClipboard.paste(e.graph)}),this.addAction("delete",function(e){e.graph.isEnabled()&&e.graph.removeCells()}),this.addAction("group",function(e){e.graph.isEnabled()&&e.graph.setSelectionCell(e.groupCells())}),this.addAction("ungroup",function(e){e.graph.isEnabled()&&e.graph.setSelectionCells(e.graph.ungroupCells())}),this.addAction("removeFromParent",function(e){e.graph.isEnabled()&&e.graph.removeCellsFromParent()}),this.addAction("undo",function(e){e.graph.isEnabled()&&e.undo()}),this.addAction("redo",function(e){e.graph.isEnabled()&&e.redo()}),this.addAction("zoomIn",function(e){e.graph.zoomIn()}),this.addAction("zoomOut",function(e){e.graph.zoomOut()}),this.addAction("actualSize",function(e){e.graph.zoomActual()}),this.addAction("fit",function(e){e.graph.fit()}),this.addAction("showProperties",function(e,n){e.showProperties(n)}),this.addAction("selectAll",function(e){e.graph.isEnabled()&&e.graph.selectAll()}),this.addAction("selectNone",function(e){e.graph.isEnabled()&&e.graph.clearSelection()}),this.addAction("selectVertices",function(e){e.graph.isEnabled()&&e.graph.selectVertices()}),this.addAction("selectEdges",function(e){e.graph.isEnabled()&&e.graph.selectEdges()}),this.addAction("edit",function(e,n){e.graph.isEnabled()&&e.graph.isCellEditable(n)&&e.graph.startEditingAtCell(n)}),this.addAction("toBack",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!0)}),this.addAction("toFront",function(e,n){e.graph.isEnabled()&&e.graph.orderCells(!1)}),this.addAction("enterGroup",function(e,n){e.graph.enterGroup(n)}),this.addAction("exitGroup",function(e){e.graph.exitGroup()}),this.addAction("home",function(e){e.graph.home()}),this.addAction("selectPrevious",function(e){e.graph.isEnabled()&&e.graph.selectPreviousCell()}),this.addAction("selectNext",function(e){e.graph.isEnabled()&&e.graph.selectNextCell()}),this.addAction("selectParent",function(e){e.graph.isEnabled()&&e.graph.selectParentCell()}),this.addAction("selectChild",function(e){e.graph.isEnabled()&&e.graph.selectChildCell()}),this.addAction("collapse",function(e){e.graph.isEnabled()&&e.graph.foldCells(!0)}),this.addAction("collapseAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!0,!1,n)}}),this.addAction("expand",function(e){e.graph.isEnabled()&&e.graph.foldCells(!1)}),this.addAction("expandAll",function(e){if(e.graph.isEnabled()){var n=e.graph.getChildVertices();e.graph.foldCells(!1,!1,n)}}),this.addAction("bold",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_BOLD)}),this.addAction("italic",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_ITALIC)}),this.addAction("underline",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_UNDERLINE)}),this.addAction("shadow",function(e){e.graph.isEnabled()&&e.graph.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,mxConstants.FONT_SHADOW)}),this.addAction("alignCellsLeft",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_LEFT)}),this.addAction("alignCellsCenter",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_CENTER)}),this.addAction("alignCellsRight",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_RIGHT)}),this.addAction("alignCellsTop",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_TOP)}),this.addAction("alignCellsMiddle",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_MIDDLE)}),this.addAction("alignCellsBottom",function(e){e.graph.isEnabled()&&e.graph.alignCells(mxConstants.ALIGN_BOTTOM)}),this.addAction("alignFontLeft",function(e){e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_LEFT)}),this.addAction("alignFontCenter",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_CENTER)}),this.addAction("alignFontRight",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_ALIGN,mxConstants.ALIGN_RIGHT)}),this.addAction("alignFontTop",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_TOP)}),this.addAction("alignFontMiddle",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_MIDDLE)}),this.addAction("alignFontBottom",function(e){e.graph.isEnabled()&&e.graph.setCellStyles(mxConstants.STYLE_VERTICAL_ALIGN,mxConstants.ALIGN_BOTTOM)}),this.addAction("zoom",function(e){var n=100*e.graph.getView().scale;n=parseFloat(mxUtils.prompt(mxResources.get(e.askZoomResource)||e.askZoomResource,n))/100;isNaN(n)||e.graph.getView().setScale(n)}),this.addAction("toggleTasks",function(e){null!=e.tasks?e.tasks.setVisible(!e.tasks.isVisible()):e.showTasks()}),this.addAction("toggleHelp",function(e){null!=e.help?e.help.setVisible(!e.help.isVisible()):e.showHelp()}),this.addAction("toggleOutline",function(e){null==e.outline?e.showOutline():e.outline.setVisible(!e.outline.isVisible())}),this.addAction("toggleConsole",function(e){mxLog.setVisible(!mxLog.isVisible())})},mxEditor.prototype.createSession=function(){var e=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.SESSION,"session",e))});return this.connect(this.urlInit,this.urlPoll,this.urlNotify,e)},mxEditor.prototype.configure=function(e){null!=e&&(new mxCodec(e.ownerDocument).decode(e,this),this.resetHistory())},mxEditor.prototype.resetFirstTime=function(){document.cookie="mxgraph=seen; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/"},mxEditor.prototype.resetHistory=function(){this.lastSnapshot=(new Date).getTime(),this.undoManager.clear(),this.ignoredChanges=0,this.setModified(!1)},mxEditor.prototype.addAction=function(e,n){this.actions[e]=n},mxEditor.prototype.execute=function(n,e,t){var a=this.actions[n];if(null!=a)try{var i=arguments;i[0]=this,a.apply(this,i)}catch(e){throw mxUtils.error("Cannot execute "+n+": "+e.message,280,!0),e}else mxUtils.error("Cannot find action "+n,280,!0)},mxEditor.prototype.addTemplate=function(e,n){this.templates[e]=n},mxEditor.prototype.getTemplate=function(e){return this.templates[e]},mxEditor.prototype.createGraph=function(){var e=new mxGraph(null,null,this.graphRenderHint);return e.setTooltips(!0),e.setPanning(!0),this.installDblClickHandler(e),this.installUndoHandler(e),this.installDrillHandler(e),this.installChangeHandler(e),this.installInsertHandler(e),e.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){return this.createPopupMenu(e,n,t)}),e.connectionHandler.factoryMethod=mxUtils.bind(this,function(e,n){return this.createEdge(e,n)}),this.createSwimlaneManager(e),this.createLayoutManager(e),e},mxEditor.prototype.createSwimlaneManager=function(e){return(e=new mxSwimlaneManager(e,!1)).isHorizontal=mxUtils.bind(this,function(){return this.horizontalFlow}),e.isEnabled=mxUtils.bind(this,function(){return this.maintainSwimlanes}),e},mxEditor.prototype.createLayoutManager=function(a){var e=new mxLayoutManager(a),i=this;return e.getLayout=function(e){var n=null,t=i.graph.getModel();return null!=t.getParent(e)&&(i.layoutSwimlanes&&a.isSwimlane(e)?(null==i.swimlaneLayout&&(i.swimlaneLayout=i.createSwimlaneLayout()),n=i.swimlaneLayout):i.layoutDiagram&&(a.isValidRoot(e)||null==t.getParent(t.getParent(e)))&&(null==i.diagramLayout&&(i.diagramLayout=i.createDiagramLayout()),n=i.diagramLayout)),n},e},mxEditor.prototype.setGraphContainer=function(e){null==this.graph.container&&(this.graph.init(e),this.rubberband=new mxRubberband(this.graph),this.disableContextMenu&&mxEvent.disableContextMenu(e),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.installDblClickHandler=function(a){a.addListener(mxEvent.DOUBLE_CLICK,mxUtils.bind(this,function(e,n){var t=n.getProperty("cell");null!=t&&a.isEnabled()&&null!=this.dblClickAction&&(this.execute(this.dblClickAction,t),n.consume())}))},mxEditor.prototype.installUndoHandler=function(a){var e=mxUtils.bind(this,function(e,n){var t=n.getProperty("edit");this.undoManager.undoableEditHappened(t)});a.getModel().addListener(mxEvent.UNDO,e),a.getView().addListener(mxEvent.UNDO,e),e=function(e,n){var t=n.getProperty("edit").changes;a.setSelectionCells(a.getSelectionCellsForChanges(t))},this.undoManager.addListener(mxEvent.UNDO,e),this.undoManager.addListener(mxEvent.REDO,e)},mxEditor.prototype.installDrillHandler=function(e){var n=mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.ROOT))});e.getView().addListener(mxEvent.DOWN,n),e.getView().addListener(mxEvent.UP,n)},mxEditor.prototype.installChangeHandler=function(s){var e=mxUtils.bind(this,function(e,n){this.setModified(!0),1==this.validating&&s.validateGraph();for(var t=n.getProperty("edit").changes,a=0;a<t.length;a++){var i=t[a];if(i instanceof mxRootChange||i instanceof mxValueChange&&i.cell==this.graph.model.root||i instanceof mxCellAttributeChange&&i.cell==this.graph.model.root){this.fireEvent(new mxEventObject(mxEvent.ROOT));break}}});s.getModel().addListener(mxEvent.CHANGE,e)},mxEditor.prototype.installInsertHandler=function(e){var t=this;e.addMouseListener({mouseDown:function(e,n){null==t.insertFunction||n.isPopupTrigger()||!t.forcedInserting&&null!=n.getState()||(t.graph.clearSelection(),t.insertFunction(n.getEvent(),n.getCell()),this.isActive=!0,n.consume())},mouseMove:function(e,n){this.isActive&&n.consume()},mouseUp:function(e,n){this.isActive&&(this.isActive=!1,n.consume())}})},mxEditor.prototype.createDiagramLayout=function(){var e=this.graph.gridSize,n=new mxStackLayout(this.graph,!this.horizontalFlow,this.swimlaneSpacing,2*e,2*e);return n.isVertexIgnored=function(e){return!n.graph.isSwimlane(e)},n},mxEditor.prototype.createSwimlaneLayout=function(){return new mxCompactTreeLayout(this.graph,this.horizontalFlow)},mxEditor.prototype.createToolbar=function(){return new mxDefaultToolbar(null,this)},mxEditor.prototype.setToolbarContainer=function(e){this.toolbar.init(e),mxClient.IS_QUIRKS&&new mxDivResizer(e)},mxEditor.prototype.setStatusContainer=function(e){null==this.status&&(this.status=e,this.addListener(mxEvent.SAVE,mxUtils.bind(this,function(){var e=(new Date).toLocaleString();this.setStatus((mxResources.get(this.lastSavedResource)||this.lastSavedResource)+": "+e)})),this.addListener(mxEvent.OPEN,mxUtils.bind(this,function(){this.setStatus((mxResources.get(this.currentFileResource)||this.currentFileResource)+": "+this.filename)})),mxClient.IS_QUIRKS&&new mxDivResizer(e))},mxEditor.prototype.setStatus=function(e){null!=this.status&&null!=e&&(this.status.innerHTML=e)},mxEditor.prototype.setTitleContainer=function(n){this.addListener(mxEvent.ROOT,mxUtils.bind(this,function(e){n.innerHTML=this.getTitle()})),mxClient.IS_QUIRKS&&new mxDivResizer(n)},mxEditor.prototype.treeLayout=function(e,n){null!=e&&new mxCompactTreeLayout(this.graph,n).execute(e)},mxEditor.prototype.getTitle=function(){for(var e="",n=this.graph,t=n.getCurrentRoot();null!=t&&null!=n.getModel().getParent(n.getModel().getParent(t));)n.isValidRoot(t)&&(e=" > "+n.convertValueToString(t)+e),t=n.getModel().getParent(t);return this.getRootTitle()+e},mxEditor.prototype.getRootTitle=function(){var e=this.graph.getModel().getRoot();return this.graph.convertValueToString(e)},mxEditor.prototype.undo=function(){this.undoManager.undo()},mxEditor.prototype.redo=function(){this.undoManager.redo()},mxEditor.prototype.groupCells=function(){var e=null!=this.groupBorderSize?this.groupBorderSize:this.graph.gridSize;return this.graph.groupCells(this.createGroup(),e)},mxEditor.prototype.createGroup=function(){return this.graph.getModel().cloneCell(this.defaultGroup)},mxEditor.prototype.open=function(e){if(null!=e){var n=mxUtils.load(e).getXml();this.readGraphModel(n.documentElement),this.filename=e,this.fireEvent(new mxEventObject(mxEvent.OPEN,"filename",e))}},mxEditor.prototype.readGraphModel=function(e){new mxCodec(e.ownerDocument).decode(e,this.graph.getModel()),this.resetHistory()},mxEditor.prototype.save=function(e,n){if(null!=(e=e||this.getUrlPost())&&0<e.length){var t=this.writeGraphModel(n);this.postDiagram(e,t),this.setModified(!1)}this.fireEvent(new mxEventObject(mxEvent.SAVE,"url",e))},mxEditor.prototype.postDiagram=function(n,t){this.escapePostData&&(t=encodeURIComponent(t)),mxUtils.post(n,this.postParameterName+"="+t,mxUtils.bind(this,function(e){this.fireEvent(new mxEventObject(mxEvent.POST,"request",e,"url",n,"data",t))}))},mxEditor.prototype.writeGraphModel=function(e){e=null!=e?e:this.linefeed;var n=(new mxCodec).encode(this.graph.getModel());return mxUtils.getXml(n,e)},mxEditor.prototype.getUrlPost=function(){return this.urlPost},mxEditor.prototype.getUrlImage=function(){return this.urlImage},mxEditor.prototype.connect=function(e,n,t,a){var i=null;return mxClient.IS_LOCAL||((i=new mxSession(this.graph.getModel(),e,n,t)).addListener(mxEvent.RECEIVE,mxUtils.bind(this,function(e,n){null!=n.getProperty("node").getAttribute("namespace")&&this.resetHistory()})),i.addListener(mxEvent.DISCONNECT,a),i.addListener(mxEvent.CONNECT,a),i.addListener(mxEvent.NOTIFY,a),i.addListener(mxEvent.GET,a),i.start()),i},mxEditor.prototype.swapStyles=function(e,n){var t=this.graph.getStylesheet().styles[n];this.graph.getView().getStylesheet().putCellStyle(n,this.graph.getStylesheet().styles[e]),this.graph.getStylesheet().putCellStyle(e,t),this.graph.refresh()},mxEditor.prototype.showProperties=function(e){if(null==(e=e||this.graph.getSelectionCell())&&(null==(e=this.graph.getCurrentRoot())&&(e=this.graph.getModel().getRoot())),null!=e){this.graph.stopEditing(!0);var n=(t=mxUtils.getOffset(this.graph.container)).x+10,t=t.y;if(null==this.properties||this.movePropertiesDialog){var a=this.graph.getCellBounds(e);null!=a&&(n+=a.x+Math.min(200,a.width),t+=a.y)}else n=this.properties.getX(),t=this.properties.getY();this.hideProperties(),null!=(e=this.createProperties(e))&&(this.properties=new mxWindow(mxResources.get(this.propertiesResource)||this.propertiesResource,e,n,t,this.propertiesWidth,this.propertiesHeight,!1),this.properties.setVisible(!0))}},mxEditor.prototype.isPropertiesVisible=function(){return null!=this.properties},mxEditor.prototype.createProperties=function(t){var a=this.graph.getModel(),e=a.getValue(t);if(mxUtils.isNode(e)){var n=new mxForm("properties");n.addText("ID",t.getId()).setAttribute("readonly","true");var i=null,s=null,o=null,r=null,l=null;a.isVertex(t)&&(null!=(i=a.getGeometry(t))&&(s=n.addText("top",i.y),o=n.addText("left",i.x),r=n.addText("width",i.width),l=n.addText("height",i.height)));var d=a.getStyle(t),c=n.addText("Style",d||""),m=e.attributes,u=[];for(e=0;e<m.length;e++)u[e]=n.addTextarea(m[e].nodeName,m[e].nodeValue,"label"==m[e].nodeName?4:2);return e=mxUtils.bind(this,function(){this.hideProperties(),a.beginUpdate();try{null!=i&&((i=i.clone()).x=parseFloat(o.value),i.y=parseFloat(s.value),i.width=parseFloat(r.value),i.height=parseFloat(l.value),a.setGeometry(t,i)),0<c.value.length?a.setStyle(t,c.value):a.setStyle(t,null);for(var e=0;e<m.length;e++){var n=new mxCellAttributeChange(t,m[e].nodeName,u[e].value);a.execute(n)}this.graph.isAutoSizeCell(t)&&this.graph.updateCellSize(t)}finally{a.endUpdate()}}),d=mxUtils.bind(this,function(){this.hideProperties()}),n.addButtons(e,d),n.table}return null},mxEditor.prototype.hideProperties=function(){null!=this.properties&&(this.properties.destroy(),this.properties=null)},mxEditor.prototype.showTasks=function(){if(null==this.tasks){var n=document.createElement("div");n.style.padding="4px",n.style.paddingLeft="20px";var e=document.body.clientWidth;(e=new mxWindow(mxResources.get(this.tasksResource)||this.tasksResource,n,e-220,this.tasksTop,200)).setClosable(!0),e.destroyOnClose=!1;var t=mxUtils.bind(this,function(e){mxEvent.release(n),n.innerHTML="",this.createTasks(n)});this.graph.getModel().addListener(mxEvent.CHANGE,t),this.graph.getSelectionModel().addListener(mxEvent.CHANGE,t),this.graph.addListener(mxEvent.ROOT,t),null!=this.tasksWindowImage&&e.setImage(this.tasksWindowImage),this.tasks=e,this.createTasks(n)}this.tasks.setVisible(!0)},mxEditor.prototype.refreshTasks=function(e){null!=this.tasks&&(e=this.tasks.content,mxEvent.release(e),e.innerHTML="",this.createTasks(e))},mxEditor.prototype.createTasks=function(e){},mxEditor.prototype.showHelp=function(e){if(null==this.help){var n=document.createElement("iframe");n.setAttribute("src",mxResources.get("urlHelp")||this.urlHelp),n.setAttribute("height","100%"),n.setAttribute("width","100%"),n.setAttribute("frameBorder","0"),n.style.backgroundColor="white",e=document.body.clientWidth;var t=document.body.clientHeight||document.documentElement.clientHeight,a=new mxWindow(mxResources.get(this.helpResource)||this.helpResource,n,(e-this.helpWidth)/2,(t-this.helpHeight)/3,this.helpWidth,this.helpHeight);a.setMaximizable(!0),a.setClosable(!0),a.destroyOnClose=!1,a.setResizable(!0),null!=this.helpWindowImage&&a.setImage(this.helpWindowImage),mxClient.IS_NS&&(e=function(e){n.setAttribute("height",a.div.offsetHeight-26+"px")},a.addListener(mxEvent.RESIZE_END,e),a.addListener(mxEvent.MAXIMIZE,e),a.addListener(mxEvent.NORMALIZE,e),a.addListener(mxEvent.SHOW,e)),this.help=a}this.help.setVisible(!0)},mxEditor.prototype.showOutline=function(){if(null==this.outline){var e=document.createElement("div");e.style.overflow="hidden",e.style.width="100%",e.style.height="100%",e.style.background="white",e.style.cursor="move";var n=new mxWindow(mxResources.get(this.outlineResource)||this.outlineResource,e,600,480,200,200,!1),t=new mxOutline(this.graph,e);n.setClosable(!0),n.setResizable(!0),n.destroyOnClose=!1,n.addListener(mxEvent.RESIZE_END,function(){t.update()}),this.outline=n,this.outline.outline=t}this.outline.setVisible(!0),this.outline.outline.update(!0)},mxEditor.prototype.setMode=function(e){"select"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!1)):"connect"==e?(this.graph.panningHandler.useLeftButtonForPanning=!1,this.graph.setConnectable(!0)):"pan"==e&&(this.graph.panningHandler.useLeftButtonForPanning=!0,this.graph.setConnectable(!1))},mxEditor.prototype.createPopupMenu=function(e,n,t){this.popupHandler.createMenu(this,e,n,t)},mxEditor.prototype.createEdge=function(e,n){var t=null;if(null!=this.defaultEdge)t=this.graph.getModel().cloneCell(this.defaultEdge);else{(t=new mxCell("")).setEdge(!0);var a=new mxGeometry;a.relative=!0,t.setGeometry(a)}return null!=(a=this.getEdgeStyle())&&t.setStyle(a),t},mxEditor.prototype.getEdgeStyle=function(){return this.defaultEdgeStyle},mxEditor.prototype.consumeCycleAttribute=function(e){return null!=this.cycleAttributeValues&&0<this.cycleAttributeValues.length&&this.graph.isSwimlane(e)?this.cycleAttributeValues[this.cycleAttributeIndex++%this.cycleAttributeValues.length]:null},mxEditor.prototype.cycleAttribute=function(e){if(null!=this.cycleAttributeName){var n=this.consumeCycleAttribute(e);null!=n&&e.setStyle(e.getStyle()+";"+this.cycleAttributeName+"="+n)}},mxEditor.prototype.addVertex=function(e,n,t,a){for(var i=this.graph.getModel();null!=e&&!this.graph.isValidDropTarget(e);)e=i.getParent(e);e=null!=e?e:this.graph.getSwimlaneAt(t,a);var s=this.graph.getView().scale,o=i.getGeometry(n),r=i.getGeometry(e);if(this.graph.isSwimlane(n)&&!this.graph.swimlaneNesting)e=null;else{if(null==e&&this.swimlaneRequired)return null;if(null!=e&&null!=r){var l=this.graph.getView().getState(e);if(null!=l){if(t-=l.origin.x*s,a-=l.origin.y*s,this.graph.isConstrainedMoving){r=o.width;var d=o.height,c=l.x+l.width;c<t+r&&(t-=t+r-c),(c=l.y+l.height)<a+d&&(a-=a+d-c)}}else null!=r&&(t-=r.x*s,a-=r.y*s)}}(o=o.clone()).x=this.graph.snap(t/s-this.graph.getView().translate.x-this.graph.gridSize/2),o.y=this.graph.snap(a/s-this.graph.getView().translate.y-this.graph.gridSize/2),n.setGeometry(o),null==e&&(e=this.graph.getDefaultParent()),this.cycleAttribute(n),this.fireEvent(new mxEventObject(mxEvent.BEFORE_ADD_VERTEX,"vertex",n,"parent",e)),i.beginUpdate();try{null!=(n=this.graph.addCell(n,e))&&(this.graph.constrainChild(n),this.fireEvent(new mxEventObject(mxEvent.ADD_VERTEX,"vertex",n)))}finally{i.endUpdate()}return null!=n&&(this.graph.setSelectionCell(n),this.graph.scrollCellToVisible(n),this.fireEvent(new mxEventObject(mxEvent.AFTER_ADD_VERTEX,"vertex",n))),n},mxEditor.prototype.destroy=function(){this.destroyed||(this.destroyed=!0,null!=this.tasks&&this.tasks.destroy(),null!=this.outline&&this.outline.destroy(),null!=this.properties&&this.properties.destroy(),null!=this.keyHandler&&this.keyHandler.destroy(),null!=this.rubberband&&this.rubberband.destroy(),null!=this.toolbar&&this.toolbar.destroy(),null!=this.graph&&this.graph.destroy(),this.templates=this.status=null)};var mxCodecRegistry={codecs:[],aliases:[],register:function(e){if(null!=e){var n=e.getName();mxCodecRegistry.codecs[n]=e;var t=mxUtils.getFunctionName(e.template.constructor);t!=n&&mxCodecRegistry.addAlias(t,n)}return e},addAlias:function(e,n){mxCodecRegistry.aliases[e]=n},getCodec:function(e){var n=null;if(null!=e){n=mxUtils.getFunctionName(e);var t=mxCodecRegistry.aliases[n];if(null!=t&&(n=t),null==(n=mxCodecRegistry.codecs[n]))try{n=new mxObjectCodec(new e),mxCodecRegistry.register(n)}catch(e){}}return n}};function mxCodec(e){this.document=e||mxUtils.createXmlDocument(),this.objects=[]}function mxObjectCodec(e,n,t,a){for(var i in this.template=e,this.exclude=null!=n?n:[],this.idrefs=null!=t?t:[],this.mapping=null!=a?a:[],this.reverse={},this.mapping)this.reverse[this.mapping[i]]=i}mxCodec.prototype.document=null,mxCodec.prototype.objects=null,mxCodec.prototype.encodeDefaults=!1,mxCodec.prototype.putObject=function(e,n){return this.objects[e]=n},mxCodec.prototype.getObject=function(e){var n=null;return null!=e&&(null==(n=this.objects[e])&&(null==(n=this.lookup(e))&&(null!=(e=this.getElementById(e))&&(n=this.decode(e))))),n},mxCodec.prototype.lookup=function(e){return null},mxCodec.prototype.getElementById=function(e,n){return mxUtils.findNodeByAttribute(this.document.documentElement,null!=n?n:"id",e)},mxCodec.prototype.getId=function(e){var n=null;return null!=e&&(null==(n=this.reference(e))&&e instanceof mxCell&&(null==(n=e.getId())&&(0==(n=mxCellPath.create(e)).length&&(n="root")))),n},mxCodec.prototype.reference=function(e){return null},mxCodec.prototype.encode=function(e){var n=null;if(null!=e&&null!=e.constructor){var t=mxCodecRegistry.getCodec(e.constructor);null!=t?n=t.encode(this,e):mxUtils.isNode(e)?n=mxClient.IS_IE?e.cloneNode(!0):this.document.importNode(e,!0):mxLog.warn("mxCodec.encode: No codec for "+mxUtils.getFunctionName(e.constructor))}return n},mxCodec.prototype.decode=function(a,b){var c=null;if(null!=a&&a.nodeType==mxConstants.NODETYPE_ELEMENT){var d=null;try{d=eval(a.nodeName)}catch(e){}try{var f=mxCodecRegistry.getCodec(d);null!=f?c=f.decode(this,a,b):(c=a.cloneNode(!0),c.removeAttribute("as"))}catch(e){mxLog.debug("Cannot decode "+a.nodeName+": "+e.message)}}return c},mxCodec.prototype.encodeCell=function(e,n,t){if(n.appendChild(this.encode(e)),null==t||t){t=e.getChildCount();for(var a=0;a<t;a++)this.encodeCell(e.getChildAt(a),n)}},mxCodec.prototype.isCellCodec=function(e){return null!=e&&"function"==typeof e.isCellCodec&&e.isCellCodec()},mxCodec.prototype.decodeCell=function(e,n){n=null==n||n;var t=null;if(null!=e&&e.nodeType==mxConstants.NODETYPE_ELEMENT){if(t=mxCodecRegistry.getCodec(e.nodeName),!this.isCellCodec(t))for(var a=e.firstChild;null!=a&&!this.isCellCodec(t);)t=mxCodecRegistry.getCodec(a.nodeName),a=a.nextSibling;this.isCellCodec(t)||(t=mxCodecRegistry.getCodec(mxCell)),t=t.decode(this,e),n&&this.insertIntoGraph(t)}return t},mxCodec.prototype.insertIntoGraph=function(e){var n=e.parent,t=e.getTerminal(!0),a=e.getTerminal(!1);e.setTerminal(null,!1),e.setTerminal(null,!0),(e.parent=null)!=n&&n.insert(e),null!=t&&t.insertEdge(e,!0),null!=a&&a.insertEdge(e,!1)},mxCodec.prototype.setAttribute=function(e,n,t){null!=n&&null!=t&&e.setAttribute(n,t)},mxObjectCodec.prototype.template=null,mxObjectCodec.prototype.exclude=null,mxObjectCodec.prototype.idrefs=null,mxObjectCodec.prototype.mapping=null,mxObjectCodec.prototype.reverse=null,mxObjectCodec.prototype.getName=function(){return mxUtils.getFunctionName(this.template.constructor)},mxObjectCodec.prototype.cloneTemplate=function(){return new this.template.constructor},mxObjectCodec.prototype.getFieldName=function(e){if(null!=e){var n=this.reverse[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.getAttributeName=function(e){if(null!=e){var n=this.mapping[e];null!=n&&(e=n)}return e},mxObjectCodec.prototype.isExcluded=function(e,n,t,a){return n==mxObjectIdentity.FIELD_NAME||0<=mxUtils.indexOf(this.exclude,n)},mxObjectCodec.prototype.isReference=function(e,n,t,a){return 0<=mxUtils.indexOf(this.idrefs,n)},mxObjectCodec.prototype.encode=function(e,n){var t=e.document.createElement(this.getName());return n=this.beforeEncode(e,n,t),this.encodeObject(e,n,t),this.afterEncode(e,n,t)},mxObjectCodec.prototype.encodeObject=function(e,n,t){for(var a in e.setAttribute(t,"id",e.getId(n)),n){var i=a,s=n[i];null!=s&&!this.isExcluded(n,i,s,!0)&&(mxUtils.isNumeric(i)&&(i=null),this.encodeValue(e,n,i,s,t))}},mxObjectCodec.prototype.encodeValue=function(e,n,t,a,i){if(null!=a){if(this.isReference(n,t,a,!0)){var s=e.getId(a);if(null==s)return void mxLog.warn("mxObjectCodec.encode: No ID for "+this.getName()+"."+t+"="+a);a=s}s=this.template[t],(null==t||e.encodeDefaults||s!=a)&&(t=this.getAttributeName(t),this.writeAttribute(e,n,t,a,i))}},mxObjectCodec.prototype.writeAttribute=function(e,n,t,a,i){"object"!=typeof a?this.writePrimitiveAttribute(e,n,t,a,i):this.writeComplexAttribute(e,n,t,a,i)},mxObjectCodec.prototype.writePrimitiveAttribute=function(e,n,t,a,i){a=this.convertValueToXml(a),null==t?(n=e.document.createElement("add"),"function"==typeof a?n.appendChild(e.document.createTextNode(a)):e.setAttribute(n,"value",a),i.appendChild(n)):"function"!=typeof a&&e.setAttribute(i,t,a)},mxObjectCodec.prototype.writeComplexAttribute=function(e,n,t,a,i){null!=(e=e.encode(a))?(null!=t&&e.setAttribute("as",t),i.appendChild(e)):mxLog.warn("mxObjectCodec.encode: No node for "+this.getName()+"."+t+": "+a)},mxObjectCodec.prototype.convertValueToXml=function(e){return void 0!==e.length||1!=e&&0!=e||(e=1==e?"1":"0"),e},mxObjectCodec.prototype.convertValueFromXml=function(e){return mxUtils.isNumeric(e)&&(e=parseFloat(e)),e},mxObjectCodec.prototype.beforeEncode=function(e,n,t){return n},mxObjectCodec.prototype.afterEncode=function(e,n,t){return t},mxObjectCodec.prototype.decode=function(e,n,t){var a=n.getAttribute("id"),i=e.objects[a];return null==i&&(i=t||this.cloneTemplate(),null!=a&&e.putObject(a,i)),n=this.beforeDecode(e,n,i),this.decodeNode(e,n,i),this.afterDecode(e,n,i)},mxObjectCodec.prototype.decodeNode=function(e,n,t){null!=n&&(this.decodeAttributes(e,n,t),this.decodeChildren(e,n,t))},mxObjectCodec.prototype.decodeAttributes=function(e,n,t){if(null!=(n=n.attributes))for(var a=0;a<n.length;a++)this.decodeAttribute(e,n[a],t)},mxObjectCodec.prototype.decodeAttribute=function(e,n,t){var a=n.nodeName;if("as"!=a&&"id"!=a){n="value"==a?n.nodeValue:this.convertValueFromXml(n.nodeValue);var i=this.getFieldName(a);if(this.isReference(t,i,n,!1)){if(null==(e=e.getObject(n)))return void mxLog.warn("mxObjectCodec.decode: No object for "+this.getName()+"."+a+"="+n);n=e}this.isExcluded(t,a,n,!1)||(t[a]=n)}},mxObjectCodec.prototype.decodeChildren=function(e,n,t){for(n=n.firstChild;null!=n;){var a=n.nextSibling;n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t)&&this.decodeChild(e,n,t),n=a}},mxObjectCodec.prototype.decodeChild=function(e,n,t){var a=this.getFieldName(n.getAttribute("as"));if(null==a||!this.isExcluded(t,a,n,!1)){var i=this.getFieldTemplate(t,a,n),s=null;"add"==n.nodeName?null==(s=n.getAttribute("value"))&&(s=mxUtils.eval(mxUtils.getTextContent(n))):s=e.decode(n,i),this.addObjectValue(t,a,s,i)}},mxObjectCodec.prototype.getFieldTemplate=function(e,n,t){return(e=e[n])instanceof Array&&0<e.length&&(e=null),e},mxObjectCodec.prototype.addObjectValue=function(e,n,t,a){null!=t&&t!=a&&(null!=n&&0<n.length?e[n]=t:e.push(t))},mxObjectCodec.prototype.processInclude=function(e,n,t){if("include"!=n.nodeName)return!1;if(null!=(n=n.getAttribute("name")))try{var a=mxUtils.load(n).getDocumentElement();null!=a&&e.decode(a,t)}catch(e){}return!0},mxObjectCodec.prototype.beforeDecode=function(e,n,t){return n},mxObjectCodec.prototype.afterDecode=function(e,n,t){return t},mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxCell,["children","edges","overlays","mxTransient"],["parent","source","target"]);return e.isCellCodec=function(){return!0},e.isExcluded=function(e,n,t,a){return mxObjectCodec.prototype.isExcluded.apply(this,arguments)||a&&"value"==n&&t.nodeType==mxConstants.NODETYPE_ELEMENT},e.afterEncode=function(e,n,t){if(null!=n.value&&n.value.nodeType==mxConstants.NODETYPE_ELEMENT){var a=t;(t=mxClient.IS_IE?n.value.cloneNode(!0):e.document.importNode(n.value,!0)).appendChild(a),e=a.getAttribute("id"),t.setAttribute("id",e),a.removeAttribute("id")}return t},e.beforeDecode=function(e,n,t){var a=n,i=this.getName();if(n.nodeName!=i?(null!=(a=n.getElementsByTagName(i)[0])&&a.parentNode==n?(mxUtils.removeWhitespace(a,!0),mxUtils.removeWhitespace(a,!1),a.parentNode.removeChild(a)):a=null,t.value=n.cloneNode(!0),null!=(n=t.value.getAttribute("id"))&&(t.setId(n),t.value.removeAttribute("id"))):t.setId(n.getAttribute("id")),null!=a)for(n=0;n<this.idrefs.length;n++){i=this.idrefs[n];var s=a.getAttribute(i);if(null!=s){a.removeAttribute(i);var o=e.objects[s]||e.lookup(s);null==o&&(null!=(s=e.getElementById(s))&&(o=(mxCodecRegistry.codecs[s.nodeName]||this).decode(e,s))),t[i]=o}}return a},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphModel);return e.encodeObject=function(e,n,t){var a=e.document.createElement("root");e.encodeCell(n.getRoot(),a),t.appendChild(a)},e.decodeChild=function(e,n,t){"root"==n.nodeName?this.decodeRoot(e,n,t):mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeRoot=function(e,n,t){var a=null;for(n=n.firstChild;null!=n;){var i=e.decodeCell(n);null!=i&&null==i.getParent()&&(a=i),n=n.nextSibling}null!=a&&t.setRoot(a)},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxRootChange,["model","previous","root"]);return e.afterEncode=function(e,n,t){return e.encodeCell(n.root,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.root=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;)t=a.nextSibling,e.decodeCell(a),a.parentNode.removeChild(a),a=t}return n},e.afterDecode=function(e,n,t){return t.previous=t.root,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxChildChange,["model","child","previousIndex"],["parent","previous"]);return e.isReference=function(e,n,t,a){return!("child"!=n||null==e.previous&&a)||0<=mxUtils.indexOf(this.idrefs,n)},e.afterEncode=function(e,n,t){return this.isReference(n,"child",n.child,!0)?t.setAttribute("child",e.getId(n.child)):e.encodeCell(n.child,t),t},e.beforeDecode=function(e,n,t){if(null!=n.firstChild&&n.firstChild.nodeType==mxConstants.NODETYPE_ELEMENT){var a=(n=n.cloneNode(!0)).firstChild;for(t.child=e.decodeCell(a,!1),t=a.nextSibling,a.parentNode.removeChild(a),a=t;null!=a;){if(t=a.nextSibling,a.nodeType==mxConstants.NODETYPE_ELEMENT){var i=a.getAttribute("id");null==e.lookup(i)&&e.decodeCell(a)}a.parentNode.removeChild(a),a=t}}else a=n.getAttribute("child"),t.child=e.getObject(a);return n},e.afterDecode=function(e,n,t){return t.child.parent=t.previous,t.previous=t.parent,t.previousIndex=t.index,t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxTerminalChange,["model","previous"],["cell","terminal"]);return e.afterDecode=function(e,n,t){return t.previous=t.terminal,t},e}());var mxGenericChangeCodec=function(e,a){var n=new mxObjectCodec(e,["model","previous"],["cell"]);return n.afterDecode=function(e,n,t){return mxUtils.isNode(t.cell)&&(t.cell=e.decodeCell(t.cell,!1)),t.previous=t[a],t},n};mxCodecRegistry.register(mxGenericChangeCodec(new mxValueChange,"value")),mxCodecRegistry.register(mxGenericChangeCodec(new mxStyleChange,"style")),mxCodecRegistry.register(mxGenericChangeCodec(new mxGeometryChange,"geometry")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCollapseChange,"collapsed")),mxCodecRegistry.register(mxGenericChangeCodec(new mxVisibleChange,"visible")),mxCodecRegistry.register(mxGenericChangeCodec(new mxCellAttributeChange,"value")),mxCodecRegistry.register(new mxObjectCodec(new mxGraph,"graphListeners eventListeners view container cellRenderer editor selection".split(" "))),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxGraphView);return e.encode=function(e,n){return this.encodeCell(e,n,n.graph.getModel().getRoot())},e.encodeCell=function(e,n,t){var a=n.graph.getModel(),i=n.getState(t),s=a.getParent(t);if(null==s||null!=i){var o=a.getChildCount(t),r=n.graph.getCellGeometry(t),l=null;if(s==a.getRoot()?l="layer":null==s?l="graph":a.isEdge(t)?l="edge":0<o&&null!=r?l="group":a.isVertex(t)&&(l="vertex"),null!=l){var d=e.document.createElement(l);if(null!=n.graph.getLabel(t)&&(d.setAttribute("label",n.graph.getLabel(t)),n.graph.isHtmlLabel(t)&&d.setAttribute("html",!0)),null==s){var c=n.getGraphBounds();null!=c&&(d.setAttribute("x",Math.round(c.x)),d.setAttribute("y",Math.round(c.y)),d.setAttribute("width",Math.round(c.width)),d.setAttribute("height",Math.round(c.height))),d.setAttribute("scale",n.scale)}else if(null!=i&&null!=r){for(c in i.style)"function"==typeof(s=i.style[c])&&"object"==typeof s&&(s=mxStyleRegistry.getName(s)),null!=s&&"function"!=typeof s&&"object"!=typeof s&&d.setAttribute(c,s);if(null!=(s=i.absolutePoints)&&0<s.length){for(r=Math.round(s[0].x)+","+Math.round(s[0].y),c=1;c<s.length;c++)r+=" "+Math.round(s[c].x)+","+Math.round(s[c].y);d.setAttribute("points",r)}else d.setAttribute("x",Math.round(i.x)),d.setAttribute("y",Math.round(i.y)),d.setAttribute("width",Math.round(i.width)),d.setAttribute("height",Math.round(i.height));null!=(c=i.absoluteOffset)&&(0!=c.x&&d.setAttribute("dx",Math.round(c.x)),0!=c.y&&d.setAttribute("dy",Math.round(c.y)))}for(c=0;c<o;c++)null!=(i=this.encodeCell(e,n,a.getChildAt(t,c)))&&d.appendChild(i)}}return d},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxStylesheet);return e.encode=function(e,n){var t,a=e.document.createElement(this.getName());for(t in n.styles){var i=n.styles[t],s=e.document.createElement("add");if(null!=t){for(var o in s.setAttribute("as",t),i){var r=this.getStringValue(o,i[o]);if(null!=r){var l=e.document.createElement("add");l.setAttribute("value",r),l.setAttribute("as",o),s.appendChild(l)}}0<s.childNodes.length&&a.appendChild(s)}}return a},e.getStringValue=function(e,n){var t=typeof n;return"function"==t?n=mxStyleRegistry.getName(style[j]):"object"==t&&(n=null),n},e.decode=function(e,n,t){t=t||new this.template.constructor;var a=n.getAttribute("id");for(null!=a&&(e.objects[a]=t),n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName&&null!=(a=n.getAttribute("as"))){var i=n.getAttribute("extend"),s=null!=i?mxUtils.clone(t.styles[i]):null;for(null==s&&(null!=i&&mxLog.warn("mxStylesheetCodec.decode: stylesheet "+i+" not found to extend"),s={}),i=n.firstChild;null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT){var o=i.getAttribute("as");if("add"==i.nodeName){var r=mxUtils.getTextContent(i),l=null;null!=r&&0<r.length?l=mxUtils.eval(r):(l=i.getAttribute("value"),mxUtils.isNumeric(l)&&(l=parseFloat(l))),null!=l&&(s[o]=l)}else"remove"==i.nodeName&&delete s[o]}i=i.nextSibling}t.putCellStyle(a,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultKeyHandler);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t)for(n=n.firstChild;null!=n;){if(!this.processInclude(e,n,t)&&"add"==n.nodeName){var a=n.getAttribute("as"),i=n.getAttribute("action"),s=n.getAttribute("control");t.bindAction(a,i,s)}n=n.nextSibling}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultToolbar);return e.encode=function(e,n){return null},e.decode=function(e,n,t){if(null!=t){var a=t.editor;for(n=n.firstChild;null!=n;){if(n.nodeType==mxConstants.NODETYPE_ELEMENT&&!this.processInclude(e,n,t))if("separator"==n.nodeName)t.addSeparator();else if("br"==n.nodeName)t.toolbar.addBreak();else if("hr"==n.nodeName)t.toolbar.addLine();else if("add"==n.nodeName){var i=n.getAttribute("as"),s=(i=mxResources.get(i)||i,n.getAttribute("icon")),o=n.getAttribute("pressedIcon"),r=n.getAttribute("action"),l=n.getAttribute("mode"),d=n.getAttribute("template"),c="0"!=n.getAttribute("toggle"),m=mxUtils.getTextContent(n),u=null;if(null!=r)u=t.addItem(i,s,r,o);else if(null!=l){var p=mxUtils.eval(m);u=t.addMode(i,s,l,o,p)}else if(null!=d||null!=m&&0<m.length)u=a.templates[d],d=n.getAttribute("style"),null!=u&&null!=d&&(u=u.clone()).setStyle(d),(d=null)!=m&&0<m.length&&(d=mxUtils.eval(m)),u=t.addPrototype(i,s,u,o,d,c);else if(0<(o=mxUtils.getChildNodes(n)).length)if(null==s)for(d=t.addActionCombo(i),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(d,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),c=c.getAttribute("action"),t.addActionOption(d,s,c));else{var g=null,v=t.addPrototype(i,s,function(){if(null==(e=a.templates[g.value]))return mxLog.warn("Template "+e+" not found"),null;var e=e.clone(),n=g.options[g.selectedIndex].cellStyle;return null!=n&&e.setStyle(n),e},null,null,c);g=t.addCombo();for(mxEvent.addListener(g,"change",function(){t.toolbar.selectMode(v,function(e){return e=mxUtils.convertPoint(a.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e)),a.addVertex(null,p(),e.x,e.y)}),t.toolbar.noReset=!1}),i=0;i<o.length;i++)"separator"==(c=o[i]).nodeName?t.addOption(g,"---"):"add"==c.nodeName&&(s=c.getAttribute("as"),m=c.getAttribute("template"),t.addOption(g,s,m||d).cellStyle=c.getAttribute("style"))}null!=u&&(null!=(d=n.getAttribute("id"))&&0<d.length&&u.setAttribute("id",d))}n=n.nextSibling}}return t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxDefaultPopupMenu);return e.encode=function(e,n){return null},e.decode=function(e,n,t){var a=n.getElementsByTagName("include")[0];return null!=a?this.processInclude(e,a,t):null!=t&&(t.config=n),t},e}()),mxCodecRegistry.register(function(){var e=new mxObjectCodec(new mxEditor,"modified lastSnapshot ignoredChanges undoManager graphContainer toolbarContainer".split(" "));return e.afterDecode=function(e,n,t){return null!=(e=n.getAttribute("defaultEdge"))&&(n.removeAttribute("defaultEdge"),t.defaultEdge=t.templates[e]),null!=(e=n.getAttribute("defaultGroup"))&&(n.removeAttribute("defaultGroup"),t.defaultGroup=t.templates[e]),t},e.decodeChild=function(e,n,t){if("Array"==n.nodeName){if("templates"==n.getAttribute("as"))return void this.decodeTemplates(e,n,t)}else if("ui"==n.nodeName)return void this.decodeUi(e,n,t);mxObjectCodec.prototype.decodeChild.apply(this,arguments)},e.decodeUi=function(e,n,t){for(e=n.firstChild;null!=e;){if("add"==e.nodeName){n=e.getAttribute("as");var a=e.getAttribute("element"),i=e.getAttribute("style"),s=null;if(null!=a)null!=(s=document.getElementById(a))&&null!=i&&(s.style.cssText+=";"+i);else{a=parseInt(e.getAttribute("x"));var o=parseInt(e.getAttribute("y")),r=e.getAttribute("width"),l=e.getAttribute("height");(s=document.createElement("div")).style.cssText=i,new mxWindow(mxResources.get(n)||n,s,a,o,r,l,!1,!0).setVisible(!0)}"graph"==n?t.setGraphContainer(s):"toolbar"==n?t.setToolbarContainer(s):"title"==n?t.setTitleContainer(s):"status"==n?t.setStatusContainer(s):"map"==n&&t.setMapContainer(s)}else"resource"==e.nodeName?mxResources.add(e.getAttribute("basename")):"stylesheet"==e.nodeName&&mxClient.link("stylesheet",e.getAttribute("name"));e=e.nextSibling}},e.decodeTemplates=function(e,n,t){null==t.templates&&(t.templates=[]),n=mxUtils.getChildNodes(n);for(var a=0;a<n.length;a++){for(var i=n[a].getAttribute("as"),s=n[a].firstChild;null!=s&&1!=s.nodeType;)s=s.nextSibling;null!=s&&(t.templates[i]=e.decodeCell(s))}},e}()),EditorUi=function(e,n,t){this.projectDesignController=e,this.editor=n||new Editor,this.container=t||document.body;var a=n.graph,i=this;CRUD_PERMISSIONS=this.projectDesignController.crudPermissions;var s=mxUtils.bind(this,function(e){return null==e&&(e=window.event),!!this.isEditingEnabled()&&a.isEditing()});this.container.style.overflow="hidden",(new Image).src=mxPopupMenu.prototype.submenuImage,null!=mxConnectionHandler.prototype.connectImage&&((new Image).src=mxConnectionHandler.prototype.connectImage.src),this.actions=new Actions(this),this.menus=new Menus(this),this.createDivs(),this.refresh(),this.createUi(),this.container==document.body&&(this.menubarContainer.onselectstart=s,this.menubarContainer.onmousedown=s,this.toolbarContainer.onselectstart=s,this.toolbarContainer.onmousedown=s,this.diagramContainer.onselectstart=s,this.diagramContainer.onmousedown=s,this.sidebarContainer.onselectstart=s,this.sidebarContainer.onmousedown=s,this.footerContainer.onselectstart=s,this.footerContainer.onmousedown=s),mxClient.IS_IE&&(void 0===document.documentMode||document.documentMode<9)?(mxEvent.addListener(this.diagramContainer,"contextmenu",s),mxEvent.addListener(this.sidebarContainer,"contextmenu",s)):(this.diagramContainer.oncontextmenu=s,this.sidebarContainer.oncontextmenu=s),a.init(this.diagramContainer),a.refresh(),a.setEnabled(this.isEditingEnabled()),a.container.setAttribute("tabindex","0"),a.container.style.cursor="default",a.container.style.backgroundImage="url("+n.gridImage+")",a.container.style.backgroundPosition="-1px -1px",a.container.focus();var o=a.fireMouseEvent;a.fireMouseEvent=function(e,n,t){e==mxEvent.MOUSE_DOWN&&this.container.focus(),o.apply(this,arguments)},this.createMultiplicities(a.multiplicities,["start","finally","end"],[[1,1],[1,1],[0,0]],[[0,0],[0,0],[1,"n"]]),this.createMultiplicities(a.multiplicities,["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[[1,1],[0,0],[0,1],[0,1],[0,1],[1,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["login","pause","unpause","logout"],[[1,2],[1,2],[1,2],[1,2]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["set","math"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["background","playback","menu","saydigits","saynumber","sayphonetic","google_cloud_tts","tts","ispeechtts","awspolly","getdigits","getsecretdigits","lumenvoxtts","sestektts","mrcpsynth"],[[1,"n"],[1,1],[1,"n"],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,"n"],[1,"n"],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["record"],[[1,1]],[[1,"n"]]),this.createMultiplicities(a.multiplicities,["database","ispeechasr","sendSMS","sendMail","sendFax","googleasr","lumenvoxasr","tildeasr","dialogflow","dialogflowV2","awslex","sesteknda","sestekasr","restapi","mrcprecog"],[[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1],[1,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["gotoc","gotoif","gotoiftime","vswitch"],[[0,0],[1,2],[1,2],[1,"n"]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["queuelog","goal"],[[1,1],[1,1]],[[1,"n"],[1,"n"]]),this.createMultiplicities(a.multiplicities,["noop","system","agi","subproject","custom_app"],[[1,1],[1,1],[0,1],[0,1],[0,1]],[[1,"n"],[1,"n"],[1,"n"],[1,"n"],[1,"n"]]),a.dblClick=function(e,t){var n=new mxEventObject(mxEvent.DOUBLE_CLICK,"event",e,"cell",t);this.fireEvent(n),mxEvent.isConsumed(e)||n.isConsumed()||(this.getModel().isEdge(t)?0<=["background","gotoif","gotoiftime","menu","getdigits","getsecretdigits","vswitch","login","pause","unpause","logout"].indexOf(t.source.value.tagName)&&this.startEditingAtCell(t):this.getModel().isVertex(t)&&i.projectDesignController.openDialog(t.getValue(),function(e){for(var n=0;n<e.length;n+=1)t.setAttribute(e[n].name,e[n].value);a.refresh(t)}),n.consume())},a.panningHandler.autoExpand=!0,a.panningHandler.factoryMethod=mxUtils.bind(this,function(e,n,t){this.isEditingEnabled()&&this.menus.createPopupMenu(e,n,t)}),n.outline.init(this.outlineContainer),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){a.panningHandler.hideMenu()})),mxClient.IS_TOUCH&&(mxEvent.addListener(a.container,"gesturechange",mxUtils.bind(this,function(e){a.view.getDrawPane().setAttribute("transform","scale("+e.scale+")"),a.view.getOverlayPane().style.visibility="hidden"})),mxEvent.addListener(a.container,"gestureend",mxUtils.bind(this,function(e){a.view.getDrawPane().removeAttribute("transform"),a.zoomToCenter=!0,a.zoom(e.scale),a.view.getOverlayPane().style.visibility="visible"})));var r=this.isEditingEnabled()?this.createKeyHandler(n):null;this.getKeyHandler=function(){return r},mxEvent.addListener(window,"resize",mxUtils.bind(this,function(){this.refresh(),a.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.init(),this.open(),this.refresh()},EditorUi.prototype.splitSize=mxClient.IS_TOUCH?16:8,EditorUi.prototype.menubarHeight=33,EditorUi.prototype.toolbarHeight=36,EditorUi.prototype.footerHeight=0,EditorUi.prototype.hsplitPosition=204,EditorUi.prototype.vsplitPosition=190,EditorUi.prototype.init=function(){this.addUndoListener(),this.addSelectionListener();var e=this.actions.get("paste"),n=function(){e.setEnabled(!mxClipboard.isEmpty())},t=mxClipboard.cut;mxClipboard.cut=function(){t.apply(this,arguments),n()};var a=mxClipboard.copy;mxClipboard.copy=function(){a.apply(this,arguments),n()}},EditorUi.prototype.isEditingEnabled=function(){return!!CRUD_PERMISSIONS.canEdit},EditorUi.prototype.exportXML=function(e){var n=window.document.createElement("a");n.href="data:attachment/text;charset=utf-8,"+encodeURIComponent(e),n.download=this.editor.filename+".xml",n.target="_self",n.click()},EditorUi.prototype.open=function(){try{null!=window.opener&&null!=window.opener.openFile&&window.opener.openFile.setConsumer(mxUtils.bind(this,function(e,n){try{var t=mxUtils.parseXml(e);this.editor.setGraphXml(t.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}}))}catch(e){}},EditorUi.prototype.openString=function(e,n,t){try{var a=mxUtils.parseXml(e);this.editor.setGraphXml(a.documentElement),this.editor.modified=!1,this.editor.undoManager.clear(),null!=n&&(this.editor.filename=n),null!=t&&(this.editor.data=t)}catch(e){mxUtils.alert(mxResources.get("invalidOrMissingFile")+": "+e.message)}},EditorUi.prototype.validate=function(e,n){for(var t=this.editor.graph,a=(e=null!=e?e:t.model.getRoot(),n=null!=n?n:{},!0),i=t.model.getChildCount(e),s=0;s<i;s++){var o=t.model.getChildAt(e,s),r=n;t.isValidRoot(o)&&(r={}),null!=(r=this.validate(o,r))?t.setCellWarning(o,r.replace(/\n/g,"<br>")):t.setCellWarning(o,null),a=a&&null==r}if(i="",t.model.isVertex(e))switch(e.value.nodeName){case"start":i=this.validateBlock("start")?"":"Only one Start block is allowed\n";break;case"finally":i=this.validateBlock("finally")?"":"Only one Finally block is allowed\n";break;case"playback":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n";break;case"answer":i=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"menu":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("digit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("response")?"":mxResources.get("invalidTimeout")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"getsecretdigits":i=0<e.value.getAttribute("file_id")?"":mxResources.get("noAudioSelected")+"\n",i+=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n",i+=0<e.value.getAttribute("mindigit")?"":mxResources.get("wrongMinDigit")+"\n",i+=0<e.value.getAttribute("maxdigit")?"":mxResources.get("wrongMaxDigit")+"\n",i+=0<=e.value.getAttribute("hiddendigitsnum")?"":mxResources.get("wrongHiddenDigitsnum")+"\n",i+=0<=e.value.getAttribute("retry")?"":mxResources.get("invalidRetry")+"\n";break;case"vswitch":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"database":i=0<e.value.getAttribute("odbc_id")?"":mxResources.get("noDatabaseSelected")+"\n",i+=""!==e.value.getAttribute("query")?"":mxResources.get("missingQuery")+"\n";break;case"set":case"math":i=0<e.value.getAttribute("variable_id")?"":mxResources.get("noVariableSelected")+"\n";break;case"gotoc":i=""!==e.value.getAttribute("context")?"":mxResources.get("noContextSelected")+"\n",i+=""!==e.value.getAttribute("extension")?"":mxResources.get("noExtensionSelected")+"\n",i+=1<=e.value.getAttribute("priority")?"":mxResources.get("invalidPriority")+"\n";break;case"system":case"agi":i=""!==e.value.getAttribute("command")?"":mxResources.get("noCommandSelected")+"\n";break;case"gotoif":i=""!==e.value.getAttribute("condition")?"":mxResources.get("noConditionSelected")+"\n";break;case"saydigits":i=""!==e.value.getAttribute("digits")?"":mxResources.get("noDigitsSelected")+"\n";break;case"saynumber":i=""!==e.value.getAttribute("number")?"":mxResources.get("noNumberSelected")+"\n";break;case"sayphonetic":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"record":i=""!==e.value.getAttribute("file")?"":mxResources.get("noFileSelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"goal":i=""!==e.value.getAttribute("goalname")?"":mxResources.get("noGoalSelected")+"\n";break;case"ext_dial":i="-1"!==e.value.getAttribute("trunk_name")?"":mxResources.get("noTrunkSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"dial":i=0<e.value.getAttribute("sip_id")?"":mxResources.get("noIdentifierSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"queue":i="-1"!==e.value.getAttribute("queue_id")?"":mxResources.get("noQueueSelected")+"\n",i+=0<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"callback":i="-1"!==e.value.getAttribute("list_id")?"":mxResources.get("noListSelected")+"\n",i+=""!==e.value.getAttribute("name")?"":mxResources.get("noFirstNameSelected")+"\n",i+=""!==e.value.getAttribute("phone")?"":mxResources.get("noPhoneSelected")+"\n",i+=""!==e.value.getAttribute("delay")?"":mxResources.get("invalidDelay")+"\n";break;case"gotoiftime":i=0<e.value.getAttribute("interval_id")?"":mxResources.get("noIntervalSelected")+"\n";break;case"voicemail":i=""!==e.value.getAttribute("mailbox")?"":mxResources.get("noBoxNumberSelected")+"\n";break;case"subproject":i=0<e.value.getAttribute("project_id")?"":mxResources.get("noProjectSelected")+"\n";break;case"sendSMS":i=0<e.value.getAttribute("sms_account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("sms_text")?"":mxResources.get("noTextSelected")+"\n";break;case"sendMail":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n";break;case"sendFax":i=0<e.value.getAttribute("account_id")?"":mxResources.get("noAccountSelected")+"\n",i+=""!==e.value.getAttribute("to")?"":mxResources.get("noRecipientSelected")+"\n",i+=""!==e.value.getAttribute("attachment_path")?"":mxResources.get("noAttachmentSelected")+"\n";break;case"google_cloud_tts":i=""!==e.value.getAttribute("apiKey")?"":mxResources.get("noApiKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"tts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"awspolly":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"awslex":i=""!==e.value.getAttribute("aws_bot_name")?"":mxResources.get("noNameSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("aws_access_key_id")?"":mxResources.get("noAccessKeySelected")+"\n",i+=""!==e.value.getAttribute("aws_secret_access_key")?"":mxResources.get("noSecretAccessKeySelected")+"\n";break;case"ispeechtts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-10<=e.value.getAttribute("speed")&&e.value.getAttribute("speed")<=10?"":mxResources.get("invalidSpeed")+"\n";break;case"lumenvoxtts":case"sestektts":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"lumenvoxasr":case"sestekasr":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"ispeechasr":case"googleasr":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=-1<=e.value.getAttribute("timeout")?"":mxResources.get("invalidTimeout")+"\n";break;case"tildeasr":i=""!==e.value.getAttribute("appid")?"":mxResources.get("noAppIdInserted")+"\n",i+=""!==e.value.getAttribute("appsecret")?"":mxResources.get("noAppSecretInserted")+"\n",i+=""!==e.value.getAttribute("uri")?"":mxResources.get("noUrlInserted")+"\n";break;case"custom_app":i=""!==e.value.getAttribute("application")?"":mxResources.get("noApplicationSelected")+"\n";break;case"login":case"pause":case"unpause":case"logout":i=""!==e.value.getAttribute("findBy")?"":mxResources.get("noFindBySelected")+"\n";break;case"sesteknda":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("ndauth_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("ndassistant_url")?"":mxResources.get("noUrlInserted")+"\n",i+=""!==e.value.getAttribute("username")?"":mxResources.get("noUsernameSelected")+"\n",i+=""!==e.value.getAttribute("password")?"":mxResources.get("noPasswordSelected")+"\n";break;case"restapi":i=""!==e.value.getAttribute("url")?"":mxResources.get("noUrlSelected")+"\n",i+=""!==e.value.getAttribute("method")?"":mxResources.get("noMethodSelected")+"\n";case"mrcpsynth":i=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n";break;case"mrcprecog":i=""!==e.value.getAttribute("grammar")?"":mxResources.get("noGrammarSelected")+"\n";break;case"dialogflow":i=""!==e.value.getAttribute("key")?"":mxResources.get("noKeySelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n",i+=""!==e.value.getAttribute("dialogflow_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n";break;case"dialogflowV2":i=""!==e.value.getAttribute("dialogflowV2_project_id")?"":mxResources.get("noDialogflowProjectSelected")+"\n",i+=""!==e.value.getAttribute("client_email")?"":mxResources.get("noClientEmailSelected")+"\n",i+=""!==e.value.getAttribute("private_key")?"":mxResources.get("noPrivateKeySelected")+"\n",i+=""!==e.value.getAttribute("dialogflowV2_language")?"":mxResources.get("noDialogflowLanguageSelected")+"\n",i+=""!==e.value.getAttribute("text")?"":mxResources.get("noTextSelected")+"\n"}if(t.model.isEdge(e))switch(t.model.getCell(e.source.getId()).value.nodeName){case"background":case"menu":if(void 0!==e.getValue()){var l=/^[0-9]+$|^[-]{1}$|^[i]{1}$|^[t]{1}$|^[*]{1}$|^[#]{1}$/;String(e.getValue()).split(",").forEach(function(e){i+=l.test(e)?"":mxResources.get("numberOrAll")+"\n"})}else i=i+mxResources.get("numberOrAll")+"\n";break;case"getsecretdigits":case"getdigits":if(void 0!==e.getValue())i+=(l=/^(x|i|-)$/).test(String(e.getValue()))?"":mxResources.get("numberOrInvalidOrDefault")+"\n";else i=i+mxResources.get("numberOrInvalidOrDefault")+"\n";break;case"gotoif":case"gotoiftime":if(void 0!==e.getValue())i+=(l=/^(true){1}$|^(false){1}$/).test(String(e.getValue()))?"":mxResources.get("trueOrFalse")+"\n";else i=i+mxResources.get("trueOrFalse")+"\n";break;case"login":case"pause":case"unpause":case"logout":if(void 0!==e.getValue())i+=(l=/^(success){1}$|^(failure){1}$/).test(String(e.getValue()))?"":mxResources.get("successOrFailure")+"\n";else i=i+mxResources.get("successOrFailure")+"\n"}return t.isCellCollapsed(e)&&!a&&(i+=(mxResources.get(t.containsValidationErrorsResource)||t.containsValidationErrorsResource)+"\n"),i=t.model.isEdge(e)?i+(t.getEdgeValidationError(e,t.model.getTerminal(e,!0),t.model.getTerminal(e,!1))||""):i+(t.getCellValidationError(e)||""),null!=(s=t.validateCell(e,n))&&(i+=s),null==t.model.getParent(e)&&t.view.validate(),0<i.length||!a?i:null},EditorUi.prototype.validateBlock=function(n){var t=this.editor.graph,e=t.getDefaultParent(),a=0;return e.children.forEach(function(e){t.model.isVertex(e)&&e.value.nodeName==n&&a++}),!(1<a)},EditorUi.prototype.getUrl=function(e){var n=null!=e?e:window.location.pathname,t=0<n.indexOf("?")?1:0;for(var a in urlParams)n+=0==t?"?":"&",n+=a+"="+urlParams[a],t++;return n},EditorUi.prototype.addUndoListener=function(){var e=this.actions.get("undo"),n=this.actions.get("redo"),t=this.editor.undoManager,a=function(){e.setEnabled(t.canUndo()),n.setEnabled(t.canRedo())};t.addListener(mxEvent.ADD,a),t.addListener(mxEvent.UNDO,a),t.addListener(mxEvent.REDO,a),t.addListener(mxEvent.CLEAR,a),a()},EditorUi.prototype.addSelectionListener=function(){var e=mxUtils.bind(this,function(){var e=this.editor.graph,n=!e.isSelectionEmpty(),t=!1,a=!1,i=e.getSelectionCells();if(null!=i)for(var s=0;s<i.length;s++){var o=i[s];if(e.getModel().isEdge(o)&&(a=!0),e.getModel().isVertex(o)&&(t=!0),a&&t)break}var r=["cut","copy","delete","duplicate","bold","italic","style","underline","toFront","toBack","dashed","rounded","shadow","tilt","autosize"];for(s=0;s<r.length;s++)this.actions.get(r[s]).setEnabled(n);this.actions.get("curved").setEnabled(a),this.actions.get("rotation").setEnabled(t),this.actions.get("wordWrap").setEnabled(t),this.actions.get("group").setEnabled(1<e.getSelectionCount()),this.actions.get("ungroup").setEnabled(1==e.getSelectionCount()&&0<e.getModel().getChildCount(e.getSelectionCell()));var l=t&&1==e.getSelectionCount();this.actions.get("removeFromGroup").setEnabled(l&&e.getModel().isVertex(e.getModel().getParent(e.getSelectionCell())));var d=["fontFamily","fontSize","alignment","position","text","format","arrange","linewidth","spacing"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(n);d=["line","lineend","linestart"];for(s=0;s<d.length;s++)this.menus.get(d[s]).setEnabled(a);this.actions.get("setAsDefaultEdge").setEnabled(a),this.menus.get("align").setEnabled(1<e.getSelectionCount()),this.menus.get("direction").setEnabled(t||a&&e.isLoop(e.view.getState(e.getSelectionCell()))),this.menus.get("navigation").setEnabled(e.foldingEnabled&&(null!=e.view.currentRoot||1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell()))),this.actions.get("home").setEnabled(null!=e.view.currentRoot),this.actions.get("exitGroup").setEnabled(null!=e.view.currentRoot);var c=1==e.getSelectionCount()&&e.isValidRoot(e.getSelectionCell());this.actions.get("enterGroup").setEnabled(c),this.actions.get("expand").setEnabled(c),this.actions.get("collapse").setEnabled(c),this.actions.get("editLink").setEnabled(1==e.getSelectionCount()),this.actions.get("openLink").setEnabled(1==e.getSelectionCount()&&null!=e.getLinkForCell(e.getSelectionCell()))});this.editor.graph.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},EditorUi.prototype.refresh=function(){var e=mxClient.IS_IE&&(null==document.documentMode||5==document.documentMode),n=this.container.clientWidth+390,t=this.container.clientHeight+190;this.container==document.body&&(n=document.body.clientWidth||document.documentElement.clientWidth,t=e&&document.body.clientHeight||document.documentElement.clientHeight);var a=Math.max(0,Math.min(this.hsplitPosition,n-this.splitSize-20)),i=Math.max(0,Math.min(this.vsplitPosition,t-this.menubarHeight-this.toolbarHeight-this.splitSize-1));this.menubarContainer.style.height=this.menubarHeight+"px",this.toolbarContainer.style.top=this.menubarHeight+"px",this.toolbarContainer.style.height=this.toolbarHeight+"px";var s=this.menubarHeight+this.toolbarHeight;if(mxClient.IS_QUIRKS||(s+=1),this.sidebarContainer.style.top=s+"px",this.sidebarContainer.style.width=a+"px",this.outlineContainer.style.width=a+"px",this.outlineContainer.style.height=i+"px",this.diagramContainer.style.left=this.isEditingEnabled()?a+this.splitSize+"px":"0px",this.diagramContainer.style.top=this.sidebarContainer.style.top,this.hsplit.style.top=this.sidebarContainer.style.top,this.hsplit.style.bottom=this.outlineContainer.style.bottom,this.hsplit.style.left=a+"px",this.vsplit.style.width=this.sidebarContainer.style.width,this.vsplit.style.bottom=i+this.footerHeight+"px",e){this.menubarContainer.style.width=n+"px",this.toolbarContainer.style.width=this.menubarContainer.style.width;var o=t-i-this.splitSize-this.menubarHeight-this.toolbarHeight;this.sidebarContainer.style.height=o+"px",this.diagramContainer.style.width=n-a-this.splitSize+"px";var r=t-this.menubarHeight-this.toolbarHeight;this.diagramContainer.style.height=r+"px",this.hsplit.style.height=r+"px"}else this.sidebarContainer.style.bottom=i+this.splitSize+"px",this.diagramContainer.style.bottom=this.outlineContainer.style.bottom},EditorUi.prototype.createDivs=function(){this.menubarContainer=this.createDiv("geMenubarContainer"),this.toolbarContainer=this.createDiv("geToolbarContainer"),this.sidebarContainer=this.createDiv("geSidebarContainer"),this.outlineContainer=this.createDiv("geOutlineContainer"),this.diagramContainer=this.createDiv("geDiagramContainer"),this.footerContainer=this.createDiv("geFooterContainer"),this.hsplit=this.createDiv("geHsplit"),this.vsplit=this.createDiv("geVsplit"),this.menubarContainer.style.top="0px",this.menubarContainer.style.left="0px",this.menubarContainer.style.right="0px",this.toolbarContainer.style.left="0px",this.toolbarContainer.style.right="0px",this.sidebarContainer.style.left="0px",this.outlineContainer.style.bottom="0px",this.outlineContainer.style.left="0px",this.diagramContainer.style.overflow="scroll",this.diagramContainer.style.right="0px",this.footerContainer.style.left="0px",this.footerContainer.style.right="0px",this.footerContainer.style.bottom="0px",this.vsplit.style.left="0px",this.vsplit.style.height=this.splitSize+"px",this.hsplit.style.width=this.splitSize+"px"},EditorUi.prototype.createUi=function(){this.menubar=this.menus.createMenubar(this.createDiv("geMenubar")),this.menubarContainer.appendChild(this.menubar.container),this.toolbar=this.createToolbar(this.createDiv("geToolbar")),this.toolbarContainer.appendChild(this.toolbar.container),this.sidebar=this.createSidebar(this.sidebarContainer),this.footerContainer.appendChild(this.createFooter()),this.statusContainer=this.createStatusContainer(),this.editor.addListener("statusChanged",mxUtils.bind(this,function(){this.setStatusText(this.editor.getStatus())})),this.setStatusText(this.editor.getStatus()),this.menubar.container.appendChild(this.statusContainer),this.isEditingEnabled()&&(this.container.appendChild(this.sidebarContainer),this.container.appendChild(this.hsplit),this.container.appendChild(this.vsplit)),this.container.appendChild(this.diagramContainer),this.container.appendChild(this.menubarContainer),this.container.appendChild(this.toolbarContainer),this.container.appendChild(this.outlineContainer),this.container.appendChild(this.footerContainer),this.addSplitHandler(this.hsplit,!0,0,mxUtils.bind(this,function(e){this.hsplitPosition=e,this.refresh(),this.editor.graph.sizeDidChange(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()})),this.addSplitHandler(this.vsplit,!1,this.footerHeight,mxUtils.bind(this,function(e){this.vsplitPosition=e,this.refresh(),this.editor.outline.update(!1),this.editor.outline.outline.sizeDidChange()}))},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.createStatusContainer=function(){var e=document.createElement("a");return e.className="geItem geStatus",e},EditorUi.prototype.setStatusText=function(e){this.statusContainer.innerHTML=e},EditorUi.prototype.createToolbar=function(e){return new Toolbar(this,e)},EditorUi.prototype.createSidebar=function(e){return new Sidebar(this,e)},EditorUi.prototype.createFooter=function(){return this.createDiv("geFooter")},EditorUi.prototype.createDiv=function(e){var n=document.createElement("div");return n.className=e,n},EditorUi.prototype.createHeader=function(e){return document.createElement(e)},EditorUi.prototype.createForm=function(e){var n=document.createElement("form");return n.className=e,n},EditorUi.prototype.addSplitHandler=function(n,t,a,i){var s=null,o=null;function r(e){if(null!=s){var n=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e));i(Math.max(0,o+(t?n.x-s.x:s.y-n.y)-a)),mxEvent.consume(e)}}function e(e){r(e),o=s=null}mxEvent.addGestureListeners(n,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e)),o=parseInt(t?n.style.left:n.style.bottom),mxEvent.consume(e)}),mxEvent.addListener(document,"mousemove",r),mxEvent.addListener(document,"touchmove",r),mxEvent.addListener(document,"mouseup",e),mxEvent.addListener(document,"touchend",e)},EditorUi.prototype.executeLayout=function(e,n,t){var a=this.editor.graph,i=a.getSelectionCell();n=null!=this.animate?this.animate:n,a.getModel().beginUpdate();try{e.execute(a.getDefaultParent(),i)}catch(e){throw e}finally{if(n&&navigator.userAgent.indexOf("Camino")<0){var s=new mxMorphing(a);s.addListener(mxEvent.DONE,mxUtils.bind(this,function(){a.getModel().endUpdate()})),s.startAnimation()}else a.getModel().endUpdate()}},EditorUi.prototype.createKeyHandler=function(e){var a=this.editor.graph,o=new mxKeyHandler(a);function n(e){if(!a.isSelectionEmpty()){var n=0,t=0;37==e?n=-1:38==e?t=-1:39==e?n=1:40==e&&(t=1),a.moveCells(a.getSelectionCells(),n,t),a.scrollCellToVisible(a.getSelectionCell())}}o.isControlDown=function(e){return mxEvent.isControlDown(e)||mxClient.IS_MAC&&e.metaKey};var t=mxUtils.bind(this,function(e,n,t,a){var i=this.actions.get(t);if(null!=i){var s=function(){i.enabled&&i.funct()};n?a?o.bindControlShiftKey(e,s):o.bindControlKey(e,s):a?o.bindShiftKey(e,s):o.bindKey(e,s)}});return o.enter=function(){},o.bindKey(8,function(){a.foldCells(!0)}),o.bindKey(13,function(){a.foldCells(!1)}),o.bindKey(33,function(){a.exitGroup()}),o.bindKey(34,function(){a.enterGroup()}),o.bindKey(36,function(){a.home()}),o.bindKey(35,function(){a.refresh()}),o.bindKey(37,function(){n(37)}),o.bindKey(38,function(){n(38)}),o.bindKey(39,function(){n(39)}),o.bindKey(40,function(){n(40)}),o.bindKey(113,function(){a.startEditingAtCell()}),t(46,!1,"delete"),t(82,!0,"tilt"),t(83,!0,"save"),t(83,!0,"saveAs",!0),t(107,!1,"zoomIn"),t(109,!1,"zoomOut"),t(65,!0,"selectAll"),t(86,!0,"selectVertices",!0),t(69,!0,"selectEdges",!0),t(69,!0,"export"),t(66,!0,"toBack"),t(70,!0,"toFront"),t(68,!0,"duplicate"),t(90,!0,"undo"),t(89,!0,"redo"),t(88,!0,"cut"),t(67,!0,"copy"),t(81,!0,"connect"),t(86,!0,"paste"),t(71,!0,"group"),t(71,!0,"grid",!0),t(85,!0,"ungroup"),t(112,!1,"about"),t(80,!0,"publish",!0),o},EditorUi.prototype.createMultiplicities=function(e,n,t,a){for(var i=0;i<n.length;i++)e.push(new mxMultiplicity(!0,n[i],null,null,t[i][0],t[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+t[i][0]+mxResources.get("outgoingedge"),null)),e.push(new mxMultiplicity(!1,n[i],null,null,a[i][0],a[i][1],null,mxResources.get(n[i])+mxResources.get("musthave")+a[i][0]+mxResources.get("incomingedge"),null))};var useLocalStorage=(mxClient.IS_TOUCH||"local"==urlParams.storage)&&"undefined"!=typeof localStorage,fileSupport=null!=window.File&&null!=window.FileReader&&null!=window.FileList,touchStyle=mxClient.IS_TOUCH||"1"==urlParams.touch,counter=0;try{for(var op=window;null!=op.opener&&!isNaN(op.opener.counter);)op=op.opener;null!=op&&(op.counter++,counter=op.counter)}catch(e){}function Sidebar(e,n){this.editorUi=e,this.container=n,this.palettes=new Object,this.taglist=new Object,this.showTooltips=!0,this.graph=new Graph(document.createElement("div"),null,null,this.editorUi.editor.graph.getStylesheet()),this.graph.resetViewOnRootChange=!1,this.graph.foldingEnabled=!1,this.graph.setConnectable(!1),this.graph.autoScroll=!1,this.graph.setTooltips(!1),this.graph.setEnabled(!1),this.graph.container.style.visibility="hidden",this.graph.container.style.position="absolute",this.graph.container.style.overflow="hidden",this.graph.container.style.height="1px",this.graph.container.style.width="1px",mxClient.IS_IE||mxClient.IS_IE11||(this.graph.container.style.display="none"),document.body.appendChild(this.graph.container),this.pointerUpHandler=mxUtils.bind(this,function(){this.showTooltips=!0}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerup":"mouseup",this.pointerUpHandler),this.pointerDownHandler=mxUtils.bind(this,function(){this.showTooltips=!1,this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerdown":"mousedown",this.pointerDownHandler),this.pointerMoveHandler=mxUtils.bind(this,function(e){for(var n=mxEvent.getSource(e);null!=n;){if(n==this.currentElt)return;n=n.parentNode}this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointermove":"mousemove",this.pointerMoveHandler),this.pointerOutHandler=mxUtils.bind(this,function(e){null==e.toElement&&null==e.relatedTarget&&this.hideTooltip()}),mxEvent.addListener(document,mxClient.IS_POINTER?"pointerout":"mouseout",this.pointerOutHandler),mxEvent.addListener(n,"scroll",mxUtils.bind(this,function(){this.showTooltips=!0})),this.init(),mxClient.IS_SVG||((new Image).src=IMAGE_PATH+"/tooltip.png")}function Actions(e){this.editorUi=e,this.actions=new Object,this.init()}function Action(e,n,t,a,i){mxEventSource.call(this),this.label=e,this.funct=n,this.enabled=null==t||t,this.iconCls=a,this.shortcut=i}function Menubar(e,n){this.editorUi=e,this.container=n,mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function Menu(e,n){mxEventSource.call(this),this.funct=e,this.enabled=null==n||n}function Toolbar(e,n){this.editorUi=e,this.container=n,this.init(),mxEvent.addGestureListeners(document,mxUtils.bind(this,function(e){this.hideMenu()}))}function createCheckbox(e){var n=document.createElement("input");return n.setAttribute("type","checkbox"),e&&n.setAttribute("checked",!0),n}function createDropdownFromApi(e,t,a,i,n,s,o,r){var l=new XMLHttpRequest;l.open("GET",e,!1),l.setRequestHeader("Authorization","Bearer "+n.editor.data.token),l.send(null);var d=[];200===l.status&&(d=JSON.parse(l.response));var c=document.createElement("select"),m=document.createElement("option");return m.text="-- None --",m.value="-1",c.appendChild(m),d.rows.forEach(function(n){r&&n[a]==r||((m=document.createElement("option")).text=n[a],s&&o?(m.value=o,s.forEach(function(e){m.value=m.value.replace("%"+e+"%",n[e])}),m.selected=m.value==t):(m.value=n[i],m.selected=n[i]==t),c.appendChild(m))}),c.className="form-control select2",c}function createDropdownWithOptgroupFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");d.text="-- None --",d.value="-1",l.appendChild(d);var c=_.groupBy(r.rows,s);for(var m in c)if(c.hasOwnProperty(m)){var u=document.createElement("optgroup");u.label=_.capitalize(m),c[m].forEach(function(e){(d=document.createElement("option")).text=e[t],d.value=e[a],d.selected=e[a]==n,u.appendChild(d)}),l.appendChild(u)}return l.className="form-control select2",l}function createGroupedDropdownFromApi(e,n,t,a,i,s){var o=new XMLHttpRequest;o.open("GET",e,!1),o.setRequestHeader("Authorization","Bearer "+i.editor.data.token),o.send(null);var r=[];200===o.status&&(r=JSON.parse(o.response));var l=document.createElement("select"),d=document.createElement("option");return d.text="-- None --",d.value="0",l.appendChild(d),r.rows.forEach(function(e){(d=document.createElement("option")).className="select-group-father",d.text=e[t].toUpperCase(),d.value=e[a],d.selected=e[a]==n,l.appendChild(d),e[s].forEach(function(e){(d=document.createElement("option")).className="select-group-son",d.text="-"+_.capitalize(e[t]),d.value=e[a],d.selected=e[a]==n,l.appendChild(d)})}),l.className="form-control select2",l}function createDropdownFromArray(e,n){var t=document.createElement("select");for(var a in e){var i=document.createElement("option");i.text=e[a],i.value=a,(0<n||""!=n)&&(i.selected=n===a),t.appendChild(i)}return t.className="form-control select2",t}function createDropdownFromTigerDialList(e){var n=document.createElement("select"),t=[],a=new XMLHttpRequest;try{if(a.open("POST","/api/rest/list/list",!1),a.send(JSON.stringify({page:1,size:6e5})),200===a.status){var i=JSON.parse(a.response);if(0<i.status){var s=i.response.RMI.rows;for(var o in s)t[s[o].id]=s[o].name}}}catch(e){console.log(e)}for(var r in t){var l=document.createElement("option");l.text=t[r],l.value=r,(0<e||""!=e)&&(l.selected=e===r),n.appendChild(l)}return n.className="form-control select2",n}function Dialog(e,n,t,a,i,s,o){var r=0;mxClient.IS_IE&&9!=document.documentMode&&(r=60),t+=r,a+=r;Math.max(0,Math.round((document.body.scrollWidth-t)/2)),Math.max(0,Math.round((Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)-a)/3));var l=e.createDiv("geDialog");l.className="modal fade in center",l.style.display="block",l.style.paddingRight="12px";var d=e.createDiv("geModalDialog");d.className="modal-dialog",d.appendChild(n),l.appendChild(d),null==this.bg&&(this.bg=e.createDiv("background"),this.bg.className="modal-backdrop fade in",mxClient.IS_QUIRKS&&new mxDivResizer(this.bg)),i&&document.body.appendChild(this.bg),document.body.appendChild(l),this.onDialogClose=o,this.container=l}function ImportDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("import")+" XML");var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-12"),d=document.createElement("textarea");d.style.width="100%",d.style.height="374px";var c=document.createElement("input");c.type="file",c.setAttribute("accept","text/xml"),c.addEventListener("change",function(e){var n=e.target.files[0];if(console.log(n),n)if("text/xml"===n.type){var t=new FileReader;t.onload=function(e){var n=e.target.result;mxUtils.write(d,n)},t.readAsText(n)}else alert("Failed to load format file");else alert("Failed to load file")},!1),l.appendChild(c),l.appendChild(d),r.appendChild(l),a.appendChild(r);var m=mxUtils.button(mxResources.get("import"),mxUtils.bind(this,function(e){var n=mxUtils.parseXml(d.value);t.editor.setGraphXml(n.documentElement),t.hideDialog()}));m.className="btn blue";var u=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});u.className="btn default",i.appendChild(m),i.appendChild(u),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function AboutDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("about")+" Cally Square");var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=document.createElement("img");r.style.border="0px",r.setAttribute("width","176"),r.setAttribute("width","151"),r.setAttribute("src",IMAGE_PATH+"/logo.png"),a.appendChild(r),mxUtils.br(a),mxUtils.write(a,"Powered by Xenialab "+mxClient.VERSION),mxUtils.br(a);var l=document.createElement("a");l.setAttribute("href","http://www.callysquare.com/"),l.setAttribute("target","_blank"),mxUtils.write(l,"www.callysquare.com"),a.appendChild(l),mxUtils.br(a),mxUtils.br(a);var d=mxUtils.button(mxResources.get("close"),function(){e.hideDialog()});d.className="btn default",i.appendChild(d),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function SaveDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("saveAs"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_copy"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("save"),function(){e.saveAs(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function NewDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("new"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.editor.getOrCreateFilename(),l=e.createDiv("row"),d=e.createDiv("col-md-4"),c=e.createDiv("col-md-8"),m=document.createElement("label");m.className="control-label pull-right",mxUtils.write(m,mxResources.get("name")),d.appendChild(m);var u=document.createElement("input");u.setAttribute("value",r+"_new"),u.setAttribute("id","_name"),u.className="form-control",c.appendChild(u),l.appendChild(d),l.appendChild(c),a.appendChild(l);var p=mxUtils.button(mxResources.get("new"),function(){e.new(u.value),e.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function DescriptionDialog(e){console.log(e.editor.data);var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("description"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="description",d=e.editor.data.description||"",c=e.createDiv("form-group"),m=document.createElement("label");m.className="col-sm-4 control-label",mxUtils.write(m,mxResources.get(l)),c.appendChild(m);var u=document.createElement("input");u.setAttribute("value",d),u.className="form-control",u.setAttribute("id","_description");var p=e.createDiv("col-sm-8");p.appendChild(u),c.appendChild(p),r.appendChild(c),a.appendChild(r);var g=mxUtils.button(mxResources.get("update"),function(){e.description(u.value),e.hideDialog()});g.className="btn blue";var v=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});v.className="btn default",i.appendChild(g),i.appendChild(v),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function VariableDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("variable"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("form-horizontal form-row-seperated"),l="name",d="_"+l,c="variable name",m=e.createDiv("form-group"),u=document.createElement("label");u.className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var p=document.createElement("input");p.setAttribute("value",c),p.className="form-control",p.setAttribute("id",d);var g=e.createDiv("col-sm-8");g.appendChild(p),m.appendChild(g),r.appendChild(m),d="_"+(l="description"),c="variable description",m=e.createDiv("form-group last"),(u=document.createElement("label")).className="col-sm-4 control-label",mxUtils.write(u,mxResources.get(l)),m.appendChild(u);var v=document.createElement("input");v.setAttribute("value",c),v.className="form-control",v.setAttribute("id",d),(g=e.createDiv("col-sm-8")).appendChild(v),m.appendChild(g),r.appendChild(m),a.appendChild(r);var h=mxUtils.button(mxResources.get("new"),function(){e.variable(p.value,v.value),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function OpenDialog(e){var n=e.createDiv("modal-content"),t=e.createDiv("modal-header"),a=e.createDiv("modal-body"),i=e.createDiv("modal-footer"),s=e.createHeader("h4");mxUtils.write(s,mxResources.get("open"));var o=mxUtils.button("",function(){e.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=e.createDiv("row"),l=e.createDiv("col-md-4"),d=e.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=new XMLHttpRequest;m.open("GET","/api/square/projects",!1),m.setRequestHeader("Authorization","Bearer "+e.editor.data.token),m.send(null);var u=[];200===m.status&&(u=JSON.parse(m.response));for(var p=document.createElement("select"),g=0;g<u.length;g++){var v=document.createElement("option");v.text=u[g].name,v.value=u[g].id,p.appendChild(v)}p.className="form-control",d.appendChild(p),r.appendChild(l),r.appendChild(d),a.appendChild(r);var h=mxUtils.button(mxResources.get("open"),function(){console.log(p),console.log(p.value),window.open("square/project/"+p.value,"_blank"),e.hideDialog()});h.className="btn blue";var f=mxUtils.button(mxResources.get("cancel"),function(){e.hideDialog()});f.className="btn default",i.appendChild(h),i.appendChild(f),n.appendChild(t),n.appendChild(a),n.appendChild(i),this.container=n}function RenameDialog(t){var e=t.createDiv("modal-content"),n=t.createDiv("modal-header"),a=t.createDiv("modal-body"),i=t.createDiv("modal-footer"),s=t.createHeader("h4");mxUtils.write(s,mxResources.get("rename"));var o=mxUtils.button("",function(){t.hideDialog()});o.className="close",n.appendChild(o),n.appendChild(s);var r=t.createDiv("row"),l=t.createDiv("col-md-4"),d=t.createDiv("col-md-8"),c=document.createElement("label");c.className="control-label pull-right",mxUtils.write(c,mxResources.get("name")),l.appendChild(c);var m=t.editor.filename,u=document.createElement("input");u.setAttribute("value",m),u.className="form-control",d.appendChild(u),r.appendChild(l),r.appendChild(d),a.appendChild(r);var p=mxUtils.button(mxResources.get("save"),function(){var n=new XMLHttpRequest;n.open("PUT",SAVE_URL+t.editor.data.id,!0),n.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),n.setRequestHeader("Authorization","Bearer "+t.editor.data.token),n.send("name="+u.value),n.onload=function(e){200===n.status?(t.editor.setStatus("Project successfully renamed"),t.editor.filename=u.value):(console.log(n.response),t.editor.setStatus(JSON.parse(n.response).errors[0].message))},n.onerror=function(e){mxUtils.alert(n.statusText)},t.hideDialog()});p.className="btn blue";var g=mxUtils.button(mxResources.get("cancel"),function(){t.hideDialog()});g.className="btn default",i.appendChild(p),i.appendChild(g),e.appendChild(n),e.appendChild(a),e.appendChild(i),this.container=e}function EditFileDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("edit"));var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("row"),l=n.createDiv("col-md-12"),d=document.createElement("textarea");if(d.style.width="100%",d.style.height="374px",d.value=mxUtils.getPrettyXml(n.editor.getGraphXml()),fileSupport){d.addEventListener("dragover",function(e){e.stopPropagation(),e.preventDefault()},!1),d.addEventListener("drop",function(e){if(e.stopPropagation(),e.preventDefault(),0<e.dataTransfer.files.length){var n=e.dataTransfer.files[0],t=new FileReader;t.onload=function(e){d.value=e.target.result},t.readAsText(n)}},!1)}l.appendChild(d),r.appendChild(l),a.appendChild(r);var c=mxUtils.button(mxResources.get("save"),function(){var e=mxUtils.parseXml(d.value);n.editor.setGraphXml(e.documentElement),n.hideDialog()});c.className="btn blue";var m=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});m.className="btn default",i.appendChild(c),i.appendChild(m),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function ExportDialog(n){var e=n.createDiv("modal-content"),t=n.createDiv("modal-header"),a=n.createDiv("modal-body form"),i=n.createDiv("modal-footer"),s=n.createHeader("h4");mxUtils.write(s,mxResources.get("export")+" XML");var o=mxUtils.button("",function(){n.hideDialog()});o.className="close",t.appendChild(o),t.appendChild(s);var r=n.createDiv("form-horizontal form-row-seperated"),l=n.createDiv("form-group last"),d=document.createElement("label");d.className="col-sm-4 control-label",mxUtils.write(d,mxResources.get("filename"));var c=document.createElement("input");c.setAttribute("value",n.editor.getOrCreateFilename()),c.className="form-control";var m=n.createDiv("col-sm-8");m.appendChild(c),l.appendChild(d),l.appendChild(m),r.appendChild(l),a.appendChild(r);var u=mxUtils.button(mxResources.get("export"),mxUtils.bind(this,function(e){n.save(!1);encodeURIComponent(mxUtils.getXml(n.editor.getGraphXml()));new mxXmlRequest(SAVE_URL+n.editor.data.id+"/download","filename="+c.value,"GET").simulate(document,"_blank"),n.hideDialog()}));u.className="btn blue";var p=mxUtils.button(mxResources.get("cancel"),function(){n.hideDialog()});p.className="btn default",i.appendChild(u),i.appendChild(p),e.appendChild(t),e.appendChild(a),e.appendChild(i),this.container=e}function GeneralDialog(i,s){console.log("general");var o=i.editor.graph,e=i.createDiv("md-dialog"),n=i.createDiv("md-toolbar"),t=i.createDiv("md-dialog-content"),a=i.createDiv("md-dialog-actions"),r=i.createHeader("h4");mxUtils.write(r,mxResources.get("edit")+" "+mxResources.get(s.value.nodeName));var l=mxUtils.button("",function(){i.hideDialog()});l.className="close",n.appendChild(l),n.appendChild(r);for(var d=s.value.attributes.length,c=i.createDiv("form-horizontal form-row-seperated"),m=0;m<d;m++){var u,p=s.value.attributes[m].name,g="_"+p,v=s.value.attributes[m].value,h=i.createDiv(m==d-1?"form-group last":"form-group"),f=document.createElement("label");switch(f.className="col-sm-4 control-label",mxUtils.write(f,mxResources.get(p)),h.appendChild(f),p){case"sip_id":u=createDropdownWithOptgroupFromApi("/api/users/all",v,"fullname","id",i,"role");break;case"queue_id":u=createDropdownFromApi("/api/voice/queues",v,"name","name",i);break;case"trunk_name":u=createDropdownFromApi("/api/trunks",v,"name","name",i);break;case"variable_id":u=createDropdownFromApi("/api/variables",v,"name","id",i);break;case"account_id":u="sendMail"==s.value.nodeName?createDropdownFromApi("/api/mail/servers/out",v,"username","id",i):createDropdownFromApi("/api/sms/accounts",v,"name","id",i);break;case"template_id":u=createDropdownFromApi("/api/templates",v,"name","id",i);break;case"context":u=createDropdownFromApi("/api/voice/contexts",v,"name","name",i);break;case"mailbox":u=createDropdownFromApi("/api/voice/voicemails",v,"mailbox","id",i,["mailbox","context"],"%mailbox%@%context%");break;case"model":u=createDropdownFromArray(ISPEECHASRMODEL,v);break;case"ispeech_asr_language":u=createDropdownFromArray(ISPEECHASRLANG,v);break;case"beep":u=createDropdownFromArray(ISPEECHBEEP,v);break;case"hiddendigitspos":u=createDropdownFromArray(SECRETDIGITSPOS,v);break;case"ispeech_tts_language":u=createDropdownFromArray(ISPEECHLANG,v);break;case"google_tts_language":u=createDropdownFromArray(GOOGLETTSLANG,v);break;case"intKey":u=createDropdownFromArray(ASRINTKEYS,v);break;case"recordingFormat":u=createDropdownFromArray(RECORDINGFORMAT,v);break;case"answer":u=createDropdownFromArray(BOOLSELECT,v);break;case"list_id":u=createDropdownFromTigerDialList(v);break;case"interval_id":u=createGroupedDropdownFromApi("/api/intervals",v,"name","id",i,"SubIntervals");break;case"project_id":u=createDropdownFromApi("/api/square/projects",v,"name","id",i,null,null,i.editor.getOrCreateFilename());break;case"odbc_id":u=createDropdownFromApi("/api/square/odbc",v,"name","id",i);break;case"file_id":u=createDropdownFromApi("/api/sounds",v,"display_name","id",i);break;case"timeout":case"digit":case"mindigit":case"maxdigit":case"response":case"retry":case"speed":(u=document.createElement("input")).setAttribute("type","number"),u.setAttribute("min",0),u.setAttribute("max",1e3),u.setAttribute("value",v),u.className="form-control";break;case"text":case"key":case"query":case"condition":case"command":case"body":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control";break;case"sms_text":(u=document.createElement("textarea")).innerHTML=v,u.className="form-control",u.setAttribute("maxlength","160");break;default:(u=document.createElement("input")).setAttribute("value",v),u.className="form-control"}u.setAttribute("id",g);var b=i.createDiv("col-sm-8");if(b.appendChild(u),mxResources.get("help_"+p)){var A=i.createDiv("p");A.className="help-block",mxUtils.write(A,mxResources.get("help_"+p)),b.appendChild(A)}h.appendChild(b),c.appendChild(h)}t.appendChild(c);var E=mxUtils.button(mxResources.get("save"),mxUtils.bind(this,function(e){for(var n=0;n<s.value.attributes.length;n++){var t="_"+s.value.attributes[n].name,a=s.value.attributes[n].name;s.setAttribute(a,document.getElementById(t).value)}o.refresh(s),i.hideDialog()}));E.className="btn blue";var y=mxUtils.button(mxResources.get("cancel"),function(){i.hideDialog()});y.className="btn default",a.appendChild(E),a.appendChild(y),e.appendChild(n),e.appendChild(t),e.appendChild(a),this.container=e}Editor=function(){mxEventSource.call(this),this.init(),this.initStencilRegistry(),this.graph=new Graph,this.outline=new mxOutline(this.graph),this.outline.updateOnPan=!0,this.undoManager=this.createUndoManager(),this.status="",this.filename=null,this.getOrCreateFilename=function(){return this.filename||mxResources.get("drawing",[counter])+".xml"},this.getFilename=function(){return this.filename},this.setStatus=function(e){this.status=e,this.fireEvent(new mxEventObject("statusChanged"))},this.getStatus=function(){return this.status},this.modified=!1,this.graphChangeListener=function(){this.modified=!0},this.graph.getModel().addListener(mxEvent.CHANGE,mxUtils.bind(this,function(){this.graphChangeListener.apply(this,arguments)})),window.onbeforeunload=mxUtils.bind(this,function(){if(this.modified)return mxResources.get("allChangesLost")}),this.graph.resetViewOnRootChange=!1,this.graph.scrollbars=!0,this.graph.background=null},mxUtils.extend(Editor,mxEventSource),Editor.prototype.gridImage=IMAGE_PATH+"/grid.gif",Editor.prototype.transparentImage=IMAGE_PATH+"/transparent.gif",Editor.prototype.setGraphXml=function(e){var n=new mxCodec(e.ownerDocument);if("mxGraphModel"==e.nodeName){this.graph.view.scale=Number(e.getAttribute("scale")||1),this.graph.gridEnabled="0"!=e.getAttribute("grid"),this.graph.graphHandler.guidesEnabled="0"!=e.getAttribute("guides"),this.graph.setTooltips("0"!=e.getAttribute("tooltips")),this.graph.setConnectable("0"!=e.getAttribute("connect")),this.graph.foldingEnabled="0"!=e.getAttribute("fold"),this.graph.scrollbars="0"!=e.getAttribute("scrollbars"),this.graph.scrollbars||(this.graph.container.scrollLeft=0,this.graph.container.scrollTop=0,this.graph.view.translate.x=Number(e.getAttribute("dx")||0),this.graph.view.translate.y=Number(e.getAttribute("dy")||0)),this.graph.pageVisible="1"==e.getAttribute("page"),this.graph.pageBreaksVisible=this.graph.pageVisible,this.graph.preferPageSize=this.graph.pageBreaksVisible;var t=e.getAttribute("pageScale");this.graph.pageScale=null!=t?t:1.5;var a=e.getAttribute("pageWidth"),i=e.getAttribute("pageHeight");null!=a&&null!=i&&(this.graph.pageFormat=new mxRectangle(0,0,parseFloat(a),parseFloat(i)),this.outline.outline.pageFormat=this.graph.pageFormat);var s=e.getAttribute("background");null!=s&&0<s.length&&(this.graph.background=s),n.decode(e,this.graph.getModel()),this.updateGraphComponents()}},Editor.prototype.getGraphXml=function(){var e=new mxCodec(mxUtils.createXmlDocument()).encode(this.graph.getModel());return 0==this.graph.view.translate.x&&0==this.graph.view.translate.y||(e.setAttribute("dx",Math.round(100*this.graph.view.translate.x)/100),e.setAttribute("dy",Math.round(100*this.graph.view.translate.y)/100)),1!=this.graph.view.scale&&e.setAttribute("scale",Math.round(1e3*this.graph.view.scale)/1e3),e.setAttribute("grid",this.graph.isGridEnabled()?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("guides",this.graph.graphHandler.guidesEnabled?"1":"0"),e.setAttribute("tooltips",this.graph.tooltipHandler.isEnabled()?"1":"0"),e.setAttribute("connect",this.graph.connectionHandler.isEnabled()?"1":"0"),e.setAttribute("fold",this.graph.foldingEnabled?"1":"0"),e.setAttribute("page",this.graph.pageVisible?"1":"0"),e.setAttribute("pageScale",this.graph.pageScale),e.setAttribute("pageWidth",this.graph.pageFormat.width),e.setAttribute("pageHeight",this.graph.pageFormat.height),this.graph.scrollbars||e.setAttribute("scrollbars","0"),null!=this.graph.background&&e.setAttribute("background",this.graph.background),e},Editor.prototype.updateGraphComponents=function(){var e=this.graph,n=this.outline;if(null!=e.container&&null!=n.outline.container){null!=e.background?"none"==e.background?e.container.style.backgroundColor="transparent":(null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.fill=e.background,e.view.backgroundPageShape.reconfigure()),e.container.style.backgroundColor=e.background):e.container.style.backgroundColor="",e.pageVisible?(e.container.style.backgroundColor="#ebebeb",e.container.style.borderStyle="solid",e.container.style.borderColor="#e5e5e5",e.container.style.borderTopWidth="1px",e.container.style.borderLeftWidth="1px",e.container.style.borderRightWidth="0px",e.container.style.borderBottomWidth="0px"):e.container.style.border="",n.outline.container.style.backgroundColor=e.container.style.backgroundColor,n.outline.pageVisible==e.pageVisible&&n.outline.pageScale==e.pageScale||(n.outline.pageScale=e.pageScale,n.outline.pageVisible=e.pageVisible,n.outline.view.validate()),e.scrollbars&&"hidden"==e.container.style.overflow&&!touchStyle?e.container.style.overflow="auto":e.scrollbars&&!touchStyle||(e.container.style.overflow="hidden");var t=mxClient.IS_IE&&9<=document.documentMode?"url("+this.transparentImage+")":"none";e.container.style.backgroundImage=!e.pageVisible&&e.isGridEnabled()?"url("+this.gridImage+")":t,null!=e.view.backgroundPageShape&&(e.view.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+this.gridImage+")":"none")}},Editor.prototype.init=function(){mxClient.IS_IE6&&mxClient.link("stylesheet",CSS_PATH+"/grapheditor-ie6.css"),mxResources.loadDefaultBundle=!1,mxResources.add(RESOURCE_BASE),mxConstants.DEFAULT_HOTSPOT=.3;var e=mxConnectionHandler.prototype.createMarker;mxConnectionHandler.prototype.createMarker=function(){var t=e.apply(this,arguments);return t.intersects=mxUtils.bind(this,function(e,n){return!!this.isConnecting()||mxCellMarker.prototype.intersects.apply(t,arguments)}),t},mxConstants.SHADOWCOLOR="#d0d0d0",mxConstants.HANDLE_FILLCOLOR="#99ccff",mxConstants.HANDLE_STROKECOLOR="#0088cf",mxConstants.VERTEX_SELECTION_COLOR="#00a8ff",mxConstants.OUTLINE_COLOR="#00a8ff",mxConstants.OUTLINE_HANDLE_FILLCOLOR="#99ccff",mxConstants.OUTLINE_HANDLE_STROKECOLOR="#00a8ff",mxConstants.CONNECT_HANDLE_FILLCOLOR="#cee7ff",mxConstants.EDGE_SELECTION_COLOR="#00a8ff",mxConstants.DEFAULT_VALID_COLOR="#00a8ff",mxConstants.LABEL_HANDLE_FILLCOLOR="#cee7ff",mxConstants.GUIDE_COLOR="#0088cf",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,mxRubberband.prototype.defaultOpacity=30,mxGraphView.prototype.createBackgroundPageShape=function(e){return new mxRectangleShape(e,this.graph.background||"white","#cacaca")},mxGraphView.prototype.getBackgroundPageBounds=function(){var e=this.getGraphBounds(),n=0<e.width?e.x/this.scale-this.translate.x:0,t=0<e.height?e.y/this.scale-this.translate.y:0,a=e.width/this.scale,i=e.height/this.scale,s=this.graph.pageFormat,o=this.graph.pageScale,r=s.width*o,l=s.height*o,d=Math.floor(Math.min(0,n)/r),c=Math.floor(Math.min(0,t)/l),m=Math.ceil(Math.max(1,n+a)/r)-d,u=Math.ceil(Math.max(1,t+i)/l)-c;return new mxRectangle(this.scale*(this.translate.x+d*r),this.scale*(this.translate.y+c*l),this.scale*m*r,this.scale*u*l)};var t=mxGraph.prototype.panGraph;mxGraph.prototype.panGraph=function(e,n){t.apply(this,arguments),this.dialect==mxConstants.DIALECT_SVG||null==this.view.backgroundPageShape||this.useScrollbarsForPanning&&mxUtils.hasScrollbars(this.container)||(this.view.backgroundPageShape.node.style.marginLeft=e+"px",this.view.backgroundPageShape.node.style.marginTop=n+"px")};var a=this;mxGraphView.prototype.validateBackground=function(){var e=this.graph.getBackgroundImage();if(null!=e){if(null==this.backgroundImage||this.backgroundImage.image!=e.src){null!=this.backgroundImage&&this.backgroundImage.destroy();var n=new mxRectangle(0,0,1,1);this.backgroundImage=new mxImageShape(n,e.src),this.backgroundImage.dialect=this.graph.dialect,this.backgroundImage.init(this.backgroundPane),this.backgroundImage.redraw()}this.redrawBackgroundImage(this.backgroundImage,e)}else null!=this.backgroundImage&&(this.backgroundImage.destroy(),this.backgroundImage=null);if(this.graph.pageVisible){n=this.getBackgroundPageBounds();null==this.backgroundPageShape?(this.backgroundPageShape=this.createBackgroundPageShape(n),this.backgroundPageShape.scale=1,this.backgroundPageShape.isShadow=!0,this.backgroundPageShape.dialect=mxConstants.DIALECT_STRICTHTML,this.backgroundPageShape.init(this.graph.container),this.graph.container.firstChild.style.position="absolute",this.graph.container.insertBefore(this.backgroundPageShape.node,this.graph.container.firstChild),this.backgroundPageShape.redraw(),this.backgroundPageShape.node.className="geBackgroundPage",this.backgroundPageShape.node.style.backgroundPosition="-1px -1px",mxEvent.addListener(this.backgroundPageShape.node,"dblclick",mxUtils.bind(this,function(e){this.graph.dblClick(e)})),mxEvent.addGestureListeners(this.backgroundPageShape.node,mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_DOWN,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){null!=this.graph.tooltipHandler&&this.graph.tooltipHandler.isHideOnHover()&&this.graph.tooltipHandler.hide(),this.graph.isMouseDown&&!mxEvent.isConsumed(e)&&this.graph.fireMouseEvent(mxEvent.MOUSE_MOVE,new mxMouseEvent(e))}),mxUtils.bind(this,function(e){this.graph.fireMouseEvent(mxEvent.MOUSE_UP,new mxMouseEvent(e))}))):(this.backgroundPageShape.scale=1,this.backgroundPageShape.bounds=n,this.backgroundPageShape.redraw()),this.backgroundPageShape.node.style.backgroundImage=this.graph.isGridEnabled()?"url("+a.gridImage+")":"none"}else null!=this.backgroundPageShape&&(this.backgroundPageShape.destroy(),this.backgroundPageShape=null)},mxGraph.prototype.updatePageBreaks=function(e,n,t){var a=this.view.scale,i=this.view.translate,s=this.pageFormat,o=a*this.pageScale,r=this.view.getBackgroundPageBounds();n=r.width,t=r.height;var l=new mxRectangle(a*i.x,a*i.y,s.width*o,s.height*o),d=(e=e&&Math.min(l.width,l.height)>this.minPageBreakDist)?Math.ceil(n/l.width)-1:0,c=e?Math.ceil(t/l.height)-1:0,m=r.x+n,u=r.y+t;if(null==this.horizontalPageBreaks&&0<d&&(this.horizontalPageBreaks=[]),null!=this.horizontalPageBreaks){for(var p=0;p<=d;p++){var g=[new mxPoint(r.x+(p+1)*l.width,r.y),new mxPoint(r.x+(p+1)*l.width,u)];if(null!=this.horizontalPageBreaks[p])this.horizontalPageBreaks[p].scale=1,this.horizontalPageBreaks[p].points=g,this.horizontalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,this.scale)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.horizontalPageBreaks[p]=v}for(p=d;p<this.horizontalPageBreaks.length;p++)this.horizontalPageBreaks[p].destroy();this.horizontalPageBreaks.splice(d,this.horizontalPageBreaks.length-d)}if(null==this.verticalPageBreaks&&0<c&&(this.verticalPageBreaks=[]),null!=this.verticalPageBreaks){for(p=0;p<=c;p++){var v;g=[new mxPoint(r.x,r.y+(p+1)*l.height),new mxPoint(m,r.y+(p+1)*l.height)];if(null!=this.verticalPageBreaks[p])this.verticalPageBreaks[p].scale=1,this.verticalPageBreaks[p].points=g,this.verticalPageBreaks[p].redraw();else(v=new mxPolyline(g,this.pageBreakColor,a)).dialect=this.dialect,v.isDashed=this.pageBreakDashed,v.addPipe=!1,v.scale=a,v.init(this.view.backgroundPane),v.redraw(),this.verticalPageBreaks[p]=v}for(p=c;p<this.verticalPageBreaks.length;p++)this.verticalPageBreaks[p].destroy();this.verticalPageBreaks.splice(c,this.verticalPageBreaks.length-c)}},mxEdgeHandler.prototype.snapToTerminals=!0,mxGraphHandler.prototype.guidesEnabled=!0;var s=mxGraphHandler.prototype.shouldRemoveCellsFromParent;mxGraphHandler.prototype.shouldRemoveCellsFromParent=function(e,n,t){for(var a=0;a<n.length;a++)if(this.graph.getModel().isVertex(n[a])){var i=this.graph.getCellGeometry(n[a]);if(null!=i&&i.relative)return!1}return s.apply(this,arguments)},mxGuide.prototype.isEnabledForEvent=function(e){return!mxEvent.isAltDown(e)};var r=mxPopupMenu.prototype.addItem;mxPopupMenu.prototype.addItem=function(e,n,t,a,i,s){var o=r.apply(this,arguments);return null==s||s||mxEvent.addListener(o,"mousedown",function(e){mxEvent.consume(e)}),o};var o=mxGraphHandler.prototype.getInitialCellForEvent;mxGraphHandler.prototype.getInitialCellForEvent=function(e){var n=this.graph.getModel(),t=n.getParent(this.graph.getSelectionCell()),a=o.apply(this,arguments),i=n.getParent(a);if(null==t||t!=a&&t!=i)for(;!this.graph.isCellSelected(a)&&!this.graph.isCellSelected(i)&&n.isVertex(i)&&!this.graph.isValidRoot(i);)a=i,i=this.graph.getModel().getParent(a);return a};var l=mxGraphHandler.prototype.isDelayedSelection;mxGraphHandler.prototype.isDelayedSelection=function(e){var n=l.apply(this,arguments),t=this.graph.getModel(),a=t.getParent(this.graph.getSelectionCell()),i=t.getParent(e);return(null==a||a!=e&&a!=i)&&(this.graph.isCellSelected(e)||!t.isVertex(i)||this.graph.isValidRoot(i)||(n=!0)),n},mxGraphHandler.prototype.selectDelayed=function(e){var n=e.getCell();null==n&&(n=this.cell);for(var t=this.graph.getModel(),a=t.getParent(n);this.graph.isCellSelected(n)&&t.isVertex(a)&&!this.graph.isValidRoot(a);)n=a,a=t.getParent(n);this.graph.selectCellForEvent(n,e.getEvent())},mxPanningHandler.prototype.getCellForPopupEvent=function(e){for(var n=e.getCell(),t=this.graph.getModel(),a=t.getParent(n);t.isVertex(a)&&!this.graph.isValidRoot(a);)this.graph.isCellSelected(a)&&(n=a),a=t.getParent(a);return n}},Editor.prototype.createUndoManager=function(){var s=this.graph,t=new mxUndoManager,e=function(e,n){t.undoableEditHappened(n.getProperty("edit"))};s.getModel().addListener(mxEvent.UNDO,e),s.getView().addListener(mxEvent.UNDO,e);var n=function(e,n){for(var t=s.getSelectionCellsForChanges(n.getProperty("edit").changes),a=[],i=1;i<t.length;i++)null!=s.view.getState(t[i])&&a.push(t[i]);s.setSelectionCells(a)};return t.addListener(mxEvent.UNDO,n),t.addListener(mxEvent.REDO,n),t},Editor.prototype.initStencilRegistry=function(){mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/general.xml")},mxStencilRegistry.libraries={},mxStencilRegistry.packages=[],mxStencilRegistry.getStencil=function(e){var n=mxStencilRegistry.stencils[e];if(null==n){var t=mxStencilRegistry.getBasenameForStencil(e);if(null!=t){var a=mxStencilRegistry.libraries[t];if(null!=a){if(null==mxStencilRegistry.packages[t]){mxStencilRegistry.packages[t]=1;for(var i=0;i<a.length;i++){var s=a[i];if(".xml"==s.toLowerCase().substring(s.length-4,s.length))mxStencilRegistry.loadStencilSet(s,null);else if(".js"==s.toLowerCase().substring(s.length-3,s.length)){var o=mxUtils.load(s);null!=o&&eval.call(window,o.getText())}}}}else mxStencilRegistry.loadStencilSet(STENCIL_PATH+"/"+t+".xml",null);n=mxStencilRegistry.stencils[e]}}return n},mxStencilRegistry.getBasenameForStencil=function(e){var n=e.split("."),t=null;if(0<n.length&&"mxgraph"==n[0]){t=n[1];for(var a=2;a<n.length-1;a++)t+="/"+n[a]}return t},mxStencilRegistry.loadStencilSet=function(e,n,t){t=null!=t&&t;var a=mxStencilRegistry.packages[e];if(t||null==a){var i=!1;null==a&&(a=mxUtils.load(e).getXml(),mxStencilRegistry.packages[e]=a,i=!0),mxStencilRegistry.parseStencilSet(a,n,i)}},mxStencilRegistry.parseStencilSet=function(e,n,t){t=null==t||t;var a=e.documentElement,i=a.firstChild,s="",o=a.getAttribute("name");for(null!=o&&(s=o+".");null!=i;){if(i.nodeType==mxConstants.NODETYPE_ELEMENT&&null!=(o=i.getAttribute("name"))){s=s.toLowerCase();var r=o.replace(/ /g,"_");if(t&&mxStencilRegistry.addStencil(s+r.toLowerCase(),new mxStencil(i)),null!=n){var l=i.getAttribute("w"),d=i.getAttribute("h");n(s,r,o,l=null==l?80:parseInt(l,10),d=null==d?80:parseInt(d,10))}}i=i.nextSibling}},OpenFile=function(e){this.producer=null,this.consumer=null,this.done=e},OpenFile.prototype.setConsumer=function(e){this.consumer=e,this.execute()},OpenFile.prototype.setData=function(e,n){this.data=e,this.filename=n,this.execute()},OpenFile.prototype.error=function(e){this.cancel(),mxUtils.alert(e)},OpenFile.prototype.execute=function(){null!=this.consumer&&null!=this.data&&(this.consumer(this.data,this.filename),this.cancel())},OpenFile.prototype.cancel=function(){null!=this.done&&this.done()},Sidebar.prototype.init=function(){var e=STENCIL_PATH;this.addSearchPalette(!0),this.addImagePalette("entry",mxResources.get("entry"),e+"/entry/","_128x128.png",["start","finally","end"],[mxResources.get("start"),mxResources.get("finally"),mxResources.get("end")]),this.addImagePalette("call_management",mxResources.get("call_management"),e+"/call_management/","_128x128.png",["answer","hangup","dial","ext_dial","queue","voicemail","callback"],[mxResources.get("answer"),mxResources.get("hangup"),mxResources.get("dial"),mxResources.get("ext_dial"),mxResources.get("queue"),mxResources.get("voicemail"),mxResources.get("callback")]),this.addImagePalette("agent_management",mxResources.get("agent_management"),e+"/agent_management/","_128x128.png",["login","pause","unpause","logout"],[mxResources.get("login"),mxResources.get("pause"),mxResources.get("unpause"),mxResources.get("logout")]),this.addImagePalette("variable",mxResources.get("variable"),e+"/variable/","_128x128.png",["set","math"],[mxResources.get("set"),mxResources.get("math")]),this.addImagePalette("playback",mxResources.get("playback"),e+"/playback/","_128x128.png",["playback","menu","saydigits","saynumber","sayphonetic","getdigits","getsecretdigits"],[mxResources.get("playback"),mxResources.get("menu"),mxResources.get("saydigits"),mxResources.get("saynumber"),mxResources.get("sayphonetic"),mxResources.get("getdigits"),mxResources.get("getsecretdigits")]),this.addImagePalette("recording",mxResources.get("recording"),e+"/recording/","_128x128.png",["record"],[mxResources.get("record")]),this.addImagePalette("tts","TTS",e+"/tts/","_128x128.png",["google_cloud_tts","tts","ispeechtts","awspolly","lumenvoxtts","sestektts","mrcpsynth"],["Google Cloud TTS","GoogleTTS","ISpeechTTS","AWSPolly","LumenvoxTTS","SestekTTS","MRCPSynth"]),this.addImagePalette("asr","ASR",e+"/asr/","_128x128.png",["googleasr","ispeechasr","lumenvoxasr","tildeasr","sestekasr","mrcprecog"],["GoogleASR","ISpeechASR","LumenvoxASR","TildeASR","SestekASR","MRCPRecog"]),this.addImagePalette("integrationServer",mxResources.get("integrationServer"),e+"/integration_server/","_128x128.png",["database","sendMail","sendSMS","dialogflow","dialogflowV2","awslex","sesteknda","restapi"],[mxResources.get("database"),mxResources.get("sendMail"),mxResources.get("sendSMS"),"Dialogflow","DialogflowV2","AWSLex","SestekNDA","RestAPI"]),this.addImagePalette("callflow",mxResources.get("callflow"),e+"/callflow/","_128x128.png",["gotoc","gotoif","gotoiftime","vswitch"],[mxResources.get("gotoc"),mxResources.get("gotoif"),mxResources.get("gotoiftime"),mxResources.get("vswitch")]),this.addImagePalette("stats",mxResources.get("stats"),e+"/stats/","_128x128.png",["goal"],[mxResources.get("goal")]),this.addImagePalette("general",mxResources.get("general"),e+"/general/","_128x128.png",["noop","system","agi","subproject","custom_app"],[mxResources.get("noop"),mxResources.get("system"),mxResources.get("agi"),mxResources.get("subproject"),mxResources.get("custom_app")])},Sidebar.prototype.collapsedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozNUQyRTJFNjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozNUQyRTJFNzZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MEUxNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MEUyNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhSMj6lrwAjcC1GyahV+dcZJgeIIFgA7":IMAGE_PATH+"/collapsed.gif",Sidebar.prototype.expandedImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhDQANAIABAJmZmf///yH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxREY3NzBERjZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxREY3NzBFMDZGNUYxMUU1QjZEOThCNDYxMDQ2MzNCQiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjFERjc3MERENkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjFERjc3MERFNkY1RjExRTVCNkQ5OEI0NjEwNDYzM0JCIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAQAsAAAAAA0ADQAAAhGMj6nL3QAjVHIu6azbvPtWAAA7":IMAGE_PATH+"/expanded.gif",Sidebar.prototype.tooltipImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAbCAMAAAB7jU7LAAAACVBMVEX///+ZmZn///9Y2COLAAAAA3RSTlP//wDXyg1BAAAAOElEQVR42mXQMQ4AMAgDsWv//+iutcJmIQSk+9dJpVKpVCqVSqVSqZTdncWzF8/NeP7FkxWenPEDOnUBiL3jWx0AAAAASUVORK5CYII=":IMAGE_PATH+"/tooltip.png",Sidebar.prototype.searchImage=mxClient.IS_SVG?"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAYAAABWdVznAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAEaSURBVHjabNGxS5VxFIfxz71XaWuQUJCG/gCHhgTD9VpEETg4aMOlQRp0EoezObgcd220KQiXmpretTAHQRBdojlQEJyukPdt+b1ywfvAGc7wnHP4nlZd1yKijQW8xzNc4Su+ZOYfQ3T6/f4YNvEJYzjELXp4VVXVz263+7cR2niBxAFeZ2YPi3iHR/gYERPDwhpOsd6sz8x/mfkNG3iOlWFhFj8y89J9KvzGXER0GuEaD42mgwHqUtoljbcRsTBCeINpfM/MgZLKPpaxFxGbOCqDXmILN7hoJrTKH+axhxmcYRxP0MIDnOBDZv5q1XUNIuJxifJp+UNV7t7BFM6xeic0RMQ4Bpl5W/ol7GISx/eEUUTECrbx+f8A8xhiZht9zsgAAAAASUVORK5CYII=":IMAGE_PATH+"/search.png",Sidebar.prototype.enableTooltips=!0,Sidebar.prototype.tooltipBorder=16,Sidebar.prototype.tooltipDelay=300,Sidebar.prototype.dropTargetDelay=200,Sidebar.prototype.thumbWidth=36,Sidebar.prototype.thumbHeight=36,Sidebar.prototype.thumbPadding=5<=document.documentMode?0:1,Sidebar.prototype.thumbBorder=2,Sidebar.prototype.sidebarTitleSize=9,Sidebar.prototype.sidebarTitles=!1,Sidebar.prototype.tooltipTitles=!0,Sidebar.prototype.maxTooltipWidth=400,Sidebar.prototype.maxTooltipHeight=400,Sidebar.prototype.addStencilsToIndex=!0,Sidebar.prototype.defaultImageWidth=80,Sidebar.prototype.defaultImageHeight=80,Sidebar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Sidebar.prototype.showTooltip=function(c,m,u,p,g,v){if(this.enableTooltips&&this.showTooltips&&this.currentElt!=c){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null);var e=mxUtils.bind(this,function(){null==this.tooltip&&(this.tooltip=document.createElement("div"),this.tooltip.className="geSidebarTooltip",this.tooltip.style.zIndex=mxPopupMenu.prototype.zIndex-1,document.body.appendChild(this.tooltip),this.graph2=new Graph(this.tooltip,null,null,this.editorUi.editor.graph.getStylesheet()),this.graph2.resetViewOnRootChange=!1,this.graph2.foldingEnabled=!1,this.graph2.gridEnabled=!1,this.graph2.autoScroll=!1,this.graph2.setTooltips(!1),this.graph2.setConnectable(!1),this.graph2.setEnabled(!1),mxClient.IS_SVG||(this.graph2.view.canvas.style.position="relative"),this.tooltipImage=mxUtils.createImage(this.tooltipImage),this.tooltipImage.className="geSidebarTooltipImage",this.tooltipImage.style.zIndex=mxPopupMenu.prototype.zIndex-1,this.tooltipImage.style.position="absolute",this.tooltipImage.style.width="14px",this.tooltipImage.style.height="27px",document.body.appendChild(this.tooltipImage)),this.graph2.model.clear(),this.graph2.view.setTranslate(this.tooltipBorder,this.tooltipBorder),u>this.maxTooltipWidth||p>this.maxTooltipHeight?this.graph2.view.scale=Math.round(100*Math.min(this.maxTooltipWidth/u,this.maxTooltipHeight/p))/100:this.graph2.view.scale=1,this.tooltip.style.display="block",this.graph2.labelsVisible=null==v||v,this.graph2.addCells(m);var e=this.graph2.getGraphBounds(),n=e.width+2*this.tooltipBorder+4,t=e.height+2*this.tooltipBorder;if(mxClient.IS_QUIRKS?(t+=4,this.tooltip.style.overflow="hidden"):this.tooltip.style.overflow="visible",this.tooltipImage.style.visibility="visible",this.tooltip.style.width=n+"px",this.tooltipTitles&&null!=g&&0<g.length){null==this.tooltipTitle?(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.style.borderTop="1px solid gray",this.tooltipTitle.style.textAlign="center",this.tooltipTitle.style.width="100%",this.tooltipTitle.style.overflow="hidden",mxClient.IS_SVG||(this.tooltipTitle.style.position="absolute"),this.tooltipTitle.style.paddingTop="6px",this.tooltip.appendChild(this.tooltipTitle)):this.tooltipTitle.innerHTML="",this.tooltipTitle.style.display="",mxUtils.write(this.tooltipTitle,g);var a=this.tooltipTitle.offsetHeight+10;t+=a,mxClient.IS_SVG?this.tooltipTitle.style.marginTop=2-a+"px":(t-=6,this.tooltipTitle.style.top=t-a+"px")}else null!=this.tooltipTitle&&null!=this.tooltipTitle.parentNode&&(this.tooltipTitle.style.display="none");this.tooltip.style.height=t+"px";var i=-Math.round(e.x-this.tooltipBorder),s=-Math.round(e.y-this.tooltipBorder),o=document.body,r=document.documentElement,l=(o.clientHeight||r.clientHeight,document.getElementById("vertical-navigation").offsetWidth+this.container.clientWidth),d=Math.max(0,this.getOffset(c).top-this.container.scrollTop-t/2+16);mxClient.IS_SVG?0!=i||0!=s?this.graph2.view.canvas.setAttribute("transform","translate("+i+","+s+")"):this.graph2.view.canvas.removeAttribute("transform"):(this.graph2.view.drawPane.style.left=i+"px",this.graph2.view.drawPane.style.top=s+"px"),this.tooltip.style.position="absolute",this.tooltip.style.left=l+"px",this.tooltip.style.top=d+"px",this.tooltipImage.style.left=l-13+"px",this.tooltipImage.style.top=d+t/2-13+"px"});null!=this.tooltip&&"none"!=this.tooltip.style.display?e():this.thread=window.setTimeout(e,this.tooltipDelay),this.currentElt=c}},Sidebar.prototype.hideTooltip=function(){null!=this.thread&&(window.clearTimeout(this.thread),this.thread=null),null!=this.tooltip&&(this.tooltip.style.display="none",this.tooltipImage.style.visibility="hidden",this.currentElt=null)},Sidebar.prototype.addEntry=function(e,n){if(null!=this.taglist&&null!=e&&0<e.length)for(var t=e.toLowerCase().replace(/[\/\,\(\)]/g," ").split(" "),a=0;a<t.length;a++)if(t[a]=t[a].replace(/\.*\d*$/,""),1<t[a].length){var i=this.taglist[t[a]];null==i&&(i={entries:[],dict:new mxDictionary},this.taglist[t[a]]=i),null==i.dict.get(n)&&(i.dict.put(n,n),i.entries.push(n))}return n},Sidebar.prototype.searchEntries=function(e,n,t,a,i){if(null!=this.taglist&&null!=e){for(var s=e.toLowerCase().split(" "),o=new mxDictionary,r=(t+1)*n,l=[],d=0,c=0;c<s.length;c++)if(0<s[c].length){var m=this.taglist[s[c]],u=new mxDictionary;if(null!=m){var p=m.entries;l=[];for(var g=0;g<p.length;g++){m=p[g];if(0==d==(null==o.get(m))&&(u.put(m,m),l.push(m),c==s.length-1&&l.length==r))return void a(l.slice(t*n,r),r,!0)}}else l=[];o=u,d++}var v=l.length;a(l.slice(t*n,(t+1)*n),v,!1)}else a([])},Sidebar.prototype.filterTags=function(e){if(null==e)return null;for(var n=e.split(" "),t=[],a={},i=0;i<n.length;i++)null==a[n[i]]&&(a[n[i]]="1",t.push(n[i]));return t.join(" ")},Sidebar.prototype.cloneCell=function(e,n){var t=e.clone();return null!=n&&(t.value=n),t},Sidebar.prototype.addSearchPalette=function(e){var n=document.createElement("div");n.style.visibility="hidden",this.container.appendChild(n);var r=document.createElement("div");r.className="geSidebar",r.style.boxSizing="border-box",r.style.overflow="hidden",r.style.width="100%",r.style.padding="8px",r.style.paddingTop="14px",r.style.paddingBottom="0px",e||(r.style.display="none");var t=document.createElement("div");t.style.whiteSpace="nowrap",t.style.textOverflow="clip",t.style.paddingBottom="8px",t.style.cursor="default";var a=document.createElement("input");a.setAttribute("placeholder",mxResources.get("searchShapes")),a.setAttribute("type","text"),a.style.fontSize="12px",a.style.overflow="hidden",a.style.boxSizing="border-box",a.style.border="solid 1px #d5d5d5",a.style.borderRadius="4px",a.style.width="100%",a.style.outline="none",a.style.padding="6px",t.appendChild(a);var i,s=document.createElement("img");s.setAttribute("src",Sidebar.prototype.searchImage),s.setAttribute("title",mxResources.get("search")),s.style.position="relative",s.style.left="-18px",mxClient.IS_QUIRKS?(a.style.height="28px",s.style.top="-4px"):s.style.top="2px",s.style.background="url('"+this.editorUi.editor.transparentImage+"')",t.appendChild(s),r.appendChild(t);var l=document.createElement("center"),d=mxUtils.button(mxResources.get("moreResults"),function(){i()});d.style.display="none",d.style.lineHeight="normal",d.style.marginTop="4px",d.style.marginBottom="8px",l.style.paddingTop="4px",l.style.paddingBottom="8px",l.appendChild(d),r.appendChild(l);var c="",m=!1,u=!1,p=0,g=new Object,v=12,h=mxUtils.bind(this,function(){m=!1,this.currentSearch=null;for(var e=r.firstChild;null!=e;){var n=e.nextSibling;e!=t&&e!=l&&e.parentNode.removeChild(e),e=n}});i=mxUtils.bind(this,function(){if(v=4*Math.max(1,Math.floor(this.container.clientWidth/(this.thumbWidth+10))),this.hideTooltip(),""!=a.value){if(null!=l.parentNode&&(c!=a.value&&(h(),c=a.value,g=new Object,u=!1,p=0),!m&&!u)){d.setAttribute("disabled","true"),d.style.display="",d.style.cursor="wait",d.innerHTML=mxResources.get("loading")+"...",m=!0;var o=new Object;this.currentSearch=o,this.searchEntries(c,v,p,mxUtils.bind(this,function(e,n,t){if(this.currentSearch==o){e=null!=e?e:[],m=!1,p++,l.parentNode.removeChild(l);for(var a=0;a<e.length;a++){var i=e[a]();null==g[i.innerHTML]&&(g[i.innerHTML]="1",r.appendChild(e[a]()))}if(t?(d.removeAttribute("disabled"),d.innerHTML=mxResources.get("moreResults")):(d.innerHTML=mxResources.get("reset"),d.style.display="none",u=!0),d.style.cursor="",0==e.length&&1==p){var s=document.createElement("div");s.className="geTitle",s.style.backgroundColor="transparent",s.style.borderColor="transparent",s.style.color="gray",s.style.padding="0px",s.style.margin="0px 8px 0px 8px",s.style.paddingTop="6px",s.style.textAlign="center",s.style.cursor="default",mxUtils.write(s,mxResources.get("noResultsFor",[c])),r.appendChild(s)}r.appendChild(l)}}),mxUtils.bind(this,function(){d.style.cursor=""}))}}else h(),a.value="",c="",g=new Object,d.style.display="none",u=!1,a.focus()}),mxEvent.addListener(a,"keydown",mxUtils.bind(this,function(e){13==e.keyCode&&i()})),mxEvent.addListener(a,"focus",function(){a.style.paddingRight="",s.style.display="none"}),mxEvent.addListener(a,"blur",function(){a.style.paddingRight="20px",s.style.display=""}),a.style.paddingRight="20px",mxEvent.addListener(a,"keyup",mxUtils.bind(this,function(e){""==a.value?(u=!0,d.style.display="none"):a.value!=c?(d.style.display="none",u=!1):m||(d.style.display=u?"none":"")})),mxEvent.addListener(a,"mousedown",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0}),mxEvent.addListener(a,"selectstart",function(e){e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0});var o=document.createElement("div");o.appendChild(r),this.container.appendChild(o),this.palettes.search=[n,o]},Sidebar.prototype.createTitle=function(e){var n=document.createElement("a");return n.setAttribute("href","javascript:void(0);"),n.setAttribute("title",mxResources.get("sidebarTooltip")),n.className="geTitle",mxUtils.write(n,e),n},Sidebar.prototype.createThumb=function(e,n,t,a,i,s,o,r,l){this.graph.labelsVisible=null==s||s;var d=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,this.graph.view.scaleAndTranslate(1,0,0),this.graph.addCells(e);var c=this.graph.getGraphBounds(),m=Math.floor(100*Math.min((n-2*this.thumbBorder)/c.width,(t-2*this.thumbBorder)/c.height))/100;this.graph.view.scaleAndTranslate(m,Math.floor((n-c.width*m)/2/m-c.x),Math.floor((t-c.height*m)/2/m-c.y));var u=null;if(this.graph.dialect!=mxConstants.DIALECT_SVG||mxClient.NO_FO?(u=this.graph.container.cloneNode(!1)).innerHTML=this.graph.container.innerHTML:u=this.graph.view.getCanvas().ownerSVGElement.cloneNode(!0),this.graph.getModel().clear(),mxClient.NO_FO=d,mxClient.IS_IE6&&(a.style.backgroundImage="url("+this.editorUi.editor.transparentImage+")"),u.style.position="relative",u.style.overflow="hidden",u.style.cursor="move",u.style.left=this.thumbBorder+"px",u.style.top=this.thumbBorder+"px",u.style.width=n+"px",u.style.height=t+"px",u.style.visibility="",u.style.minWidth="",u.style.minHeight="",a.appendChild(u),this.sidebarTitles&&null!=i&&0!=o){var p=mxClient.IS_QUIRKS?2*this.thumbPadding+2:0;a.style.height=this.thumbHeight+p+this.sidebarTitleSize+8+"px";var g=document.createElement("div");g.style.fontSize=this.sidebarTitleSize+"px",g.style.color="#303030",g.style.textAlign="center",g.style.whiteSpace="nowrap",mxClient.IS_IE&&(g.style.height=this.sidebarTitleSize+12+"px"),g.style.paddingTop="4px",mxUtils.write(g,i),a.appendChild(g)}return c},Sidebar.prototype.createItem=function(n,t,a,e,i,s,o){var r=document.createElement("a");r.setAttribute("href","javascript:void(0);"),r.className="geItem",r.style.overflow="hidden";var l=mxClient.IS_QUIRKS?8+2*this.thumbPadding:2*this.thumbBorder;r.style.width=this.thumbWidth+l+"px",r.style.height=this.thumbHeight+l+"px",r.style.padding=this.thumbPadding+"px",mxEvent.addListener(r,"click",function(e){mxEvent.consume(e)}),this.createThumb(n,this.thumbWidth,this.thumbHeight,r,t,a,e,i,s);var d=new mxRectangle(0,0,i,s);if(1<n.length||n[0].vertex){var c=this.createDragSource(r,this.createDropHandler(n,!0,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n),c.isGuidesEnabled=mxUtils.bind(this,function(){return this.editorUi.editor.graph.graphHandler.guidesEnabled})}else if(null!=n[0]&&n[0].edge){c=this.createDragSource(r,this.createDropHandler(n,!1,o,d),this.createDragPreview(i,s),n,d);this.addClickHandler(r,c,n)}return mxClient.IS_IOS||mxEvent.addGestureListeners(r,null,mxUtils.bind(this,function(e){this.showTooltip(r,n,d.width,d.height,t,a)})),r},Sidebar.prototype.createDropHandler=function(g,v,h,f){return h=null==h||h,mxUtils.bind(this,function(e,n,t,a,i){if(e.isEnabled()){if(0<(g=e.getImportableCells(g)).length){e.stopEditing();var s=null!=t&&e.isValidDropTarget(t,g,n),o=null;if(null==t||s||(t=null),!e.isCellLocked(t||e.getDefaultParent())){e.model.beginUpdate();try{if(a=Math.round(a),i=Math.round(i),v&&e.isSplitTarget(t,g,n)){var r=e.cloneCells(g);e.splitEdge(t,r,null,a-f.width/2,i-f.height/2),o=r}else 0<g.length&&(o=e.importCells(g,a,i,t));if(null!=e.layoutManager){var l=e.layoutManager.getLayout(t);if(null!=l)for(var d=e.view.scale,c=e.view.translate,m=(a+c.x)*d,u=(i+c.y)*d,p=0;p<o.length;p++)l.moveCell(o[p],m,u)}h&&e.fireEvent(new mxEventObject("cellsInserted","cells",o))}finally{e.model.endUpdate()}null!=o&&0<o.length&&(e.scrollCellToVisible(o[0]),e.setSelectionCells(o))}}mxEvent.consume(n)}})},Sidebar.prototype.createDragPreview=function(e,n){var t=document.createElement("div");return t.style.border="1px dashed black",t.style.width=e+"px",t.style.height=n+"px",t},Sidebar.prototype.createDragSource=function(e,n,t){var a=mxUtils.makeDraggable(e,this.editorUi.editor.graph,n,t,0,0,this.editorUi.editor.graph.autoscroll,!0,!0);return a.getDropTarget=function(e,n,t){var a=mxDragSource.prototype.getDropTarget.apply(this,arguments);return e.isValidRoot(a)||(a=null),a},a},Sidebar.prototype.addClickHandler=function(e,a){var i=this.editorUi.editor.graph,s=null;mxEvent.addGestureListeners(e,function(e){s=new mxPoint(mxEvent.getClientX(e),mxEvent.getClientY(e))});var o=a.mouseUp;a.mouseUp=function(e){if(!mxEvent.isPopupTrigger(e)&&null==this.currentGraph&&null!=s){var n=i.tolerance;if(Math.abs(s.x-mxEvent.getClientX(e))<=n&&Math.abs(s.y-mxEvent.getClientY(e))<=n){var t=i.getGridSize();a.drop(i,e,null,t,t)}}o.apply(this,arguments),s=null}},Sidebar.prototype.createVertexTemplateEntry=function(e,n,t,a,i,s,o,r){return r=null!=r&&0<r.length?r:i.toLowerCase(),this.addEntry(r,mxUtils.bind(this,function(){return this.createVertexTemplate(e,n,t,a,i,s,o)}))},Sidebar.prototype.createXmlDocument=function(e,n,t,a){var i=mxUtils.createXmlDocument().createElement(e);return i.setAttribute("label",n),t.forEach(function(e,n){i.setAttribute(e,a[n]?a[n]:"")}),i},Sidebar.prototype.createVertexTemplate=function(e,n,t,a,i,s,o,r){var l=[],d=[];switch(a){case"answer":l=["timeout"],d=["0"];break;case"start":l=["answer"],d=["yes"];break;case"googleasr":l=["key","google_asr_language","timeout","intKey","beep"],d=["","it-IT","10","#","BEEP"];break;case"tildeasr":l=["uri","appid","appsecret","timeout","intKey","beep"],d=["wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE","","","10","#","BEEP"];break;case"ispeechasr":l=["key","model","ispeech_asr_language","timeout","intKey","beep"],d=["","","it-IT","10","#","BEEP"];break;case"playback":l=["file_id","opts"],d=["0"];break;case"background":l=["file_id","response","digit"],d=["0","5","1"];break;case"menu":l=["file_id","response","digit","retry","variable_id"],d=["0","5","1","1","0"];break;case"getdigits":l=["file_id","response","mindigit","maxdigit","retry","variable_id"],d=["0","5","1","10","1","0"];break;case"getsecretdigits":l=["file_id","response","mindigit","maxdigit","retry","hiddendigitsnum","hiddendigitspos","variable_id"],d=["0","5","1","10","1","0","first","0"];break;case"custom_app":l=["application","options"],d=["",""];break;case"set":l=["variable_id","variable_value"],d=["0",""];break;case"database":l=["odbc_id","query","variable_id"],d=["0","",""];break;case"noop":l=["output"],d=[];break;case"gotoc":l=["context","extension","priority"],d=["","","1"];break;case"system":l=["variable_id","command"],d=[];break;case"agi":l=["command","args"],d=[];break;case"gotoif":l=["condition"],d=[];break;case"gotoiftime":l=["interval_id"],d=["0"];break;case"vswitch":l=["variable_id"],d=["0"];break;case"saydigits":l=["digits","escape_digits"],d=["","#"];break;case"saynumber":l=["number","escape_digits"],d=["","#"];break;case"sayphonetic":l=["text","escape_digits"],d=["","#"];break;case"record":l=["file","recordingFormat","timeout","escape_digits"],d=["","wav","-1","#"];break;case"dial":l=["sip_id","timeout","opts","url"],d=["0","60"];break;case"ext_dial":l=["phone","trunk_name","timeout","opts","url"],d=["","-1","60"];break;case"google_cloud_tts":l=["apiKey","google_cloud_tts_text_type","text","languageCode","ssmlGender"],d=["","text","","en-US","FEMALE"];break;case"tts":l=["text","google_tts_language"],d=["","it"];break;case"ispeechtts":l=["text","key","ispeech_tts_language","speed","intKey"],d=["","","euritalianfemale","0","#"];break;case"lumenvoxtts":case"sestektts":l=["text","options"],d=["",""];break;case"lumenvoxasr":l=["grammar","options"],d=["",""];break;case"sestekasr":l=["grammar","options"],d=["/usr/local/unimrcp/data/grammar.xml",""];break;case"awspolly":l=["aws_access_key_id","aws_secret_access_key","aws_polly_region","aws_polly_voice","text","aws_text_type"],d=["","","eu-west-1","Amy","","text"];break;case"awslex":l=["aws_access_key_id","aws_secret_access_key","aws_lex_region","aws_bot_name","text"],d=["","","eu-west-1","",""];break;case"queue":l=["queue_id","opts","url","file_id","timeout","agi","macro","gosub","position"],d=["-1","xX","","","300"];break;case"voicemail":l=["mailbox","options"],d=["",""];break;case"subproject":l=["project_id"],d=["0"];break;case"math":l=["operation","variable_id"],d=["","0"];break;case"queuelog":l=["queuename","agent","queue_event","data1","data2","data3","data4","data5"],d=[];break;case"goal":l=["goalname"],d=[];break;case"callback":l=["name","lastName","phone","dialTimezone","list_id","delay","callback_priority"],d=["{CALLERID(name)}","","{CALLERID(num)}","","-1","5","2"];break;case"sendSMS":l=["sms_account_id","to","sms_text"],d=["0"];break;case"sendMail":l=["account_id","to","cc","bcc","subject","text"],d=["0"];break;case"sendFax":l=["account_id","to","choose_attachment","attachment_name","attachment_type","attachment_path"],d=["0"];break;case"login":case"unpause":case"logout":l=["findBy"],d=["internal"];break;case"pause":l=["findBy","pause_id"],d=["internal",""];break;case"dialogflow":l=["key","text","dialogflow_language"],d=["","","it"];break;case"sesteknda":l=["ndauth_url","username","password","ndassistant_url","text","project","ndagenerate_audio","custom_action","custom_action_data","ndaactivity_type"],d=["","","","","","",1,"","","message"];break;case"restapi":l=["url","method","timeout","computedVariables","rawHeaders","rawBody","variable_id"],d=["","GET","5","","","",""];break;case"mrcpsynth":l=["text","options"],d=["",""];break;case"mrcprecog":l=["grammar","options"],d=["",""];break;case"dialogflowV2":l=["dialogflowV2_project_id","client_email","private_key","dialogflowV2_language","text"],d=["","","","en",""];break;default:l=[],d=[]}var c=[new mxCell(this.createXmlDocument(a,i,l,d),new mxGeometry(0,0,n,t),e)];return c[0].vertex=!0,this.createVertexTemplateFromCells(c,n,t,i,s,o,r)},Sidebar.prototype.createVertexTemplateFromCells=function(e,n,t,a,i,s,o){return this.createItem(e,a,i,s,n,t,o)},Sidebar.prototype.createEdgeTemplate=function(e,n,t,a,i,s,o){var r=new mxCell(null!=a?a:"",new mxGeometry(0,0,n,t),e);return r.geometry.setTerminalPoint(new mxPoint(0,t),!0),r.geometry.setTerminalPoint(new mxPoint(n,0),!1),r.geometry.relative=!0,r.edge=!0,this.createEdgeTemplateFromCells([r],n,t,i,s,o)},Sidebar.prototype.createEdgeTemplateFromCells=function(e,n,t,a,i,s){return this.createItem(e,a,i,!0,n,t,s)},Sidebar.prototype.addPaletteFunctions=function(e,n,t,a){this.addPalette(e,n,t,mxUtils.bind(this,function(e){for(var n=0;n<a.length;n++)e.appendChild(a[n](e))}))},Sidebar.prototype.addPalette=function(e,n,t,a){var i=this.createTitle(n);this.container.appendChild(i);var s=document.createElement("div");s.className="geSidebar",mxClient.IS_POINTER&&(s.style.touchAction="none"),mxEvent.addListener(s,"mousemove",mxUtils.bind(this,function(e){mxEvent.getSource(e)==s?s.setAttribute("title",mxResources.get("sidebarTooltip")):s.removeAttribute("title")})),t?(a(s),a=null):s.style.display="none",this.addFoldingHandler(i,s,a);var o=document.createElement("div");return o.appendChild(s),this.container.appendChild(o),null!=e&&(this.palettes[e]=[i,o]),s},Sidebar.prototype.addFoldingHandler=function(t,a,i){var s=!1;(!mxClient.IS_IE||8<=document.documentMode)&&(t.style.backgroundImage="none"==a.style.display?"url('"+this.collapsedImage+"')":"url('"+this.expandedImage+"')"),t.style.backgroundRepeat="no-repeat",t.style.backgroundPosition="0% 50%",mxEvent.addListener(t,"click",mxUtils.bind(this,function(e){if("none"==a.style.display){if(s)a.style.display="block";else if(s=!0,null!=i){t.style.cursor="wait";var n=t.innerHTML;t.innerHTML=mxResources.get("loading")+"...",window.setTimeout(function(){var e=mxClient.NO_FO;mxClient.NO_FO=Editor.prototype.originalNoForeignObject,i(a),mxClient.NO_FO=e,a.style.display="block",t.style.cursor="",t.innerHTML=n},0)}else a.style.display="block";t.style.backgroundImage="url('"+this.expandedImage+"')"}else t.style.backgroundImage="url('"+this.collapsedImage+"')",a.style.display="none";mxEvent.consume(e)}))},Sidebar.prototype.addImagePalette=function(e,n,s,o,r,t,a){for(var l=[],d=0;d<r.length;d++)mxUtils.bind(this,function(e,n,t){if(null==t){var a=e.lastIndexOf("/"),i=e.lastIndexOf(".");t=e.substring(0<=a?a+1:0,0<=i?i:e.length).replace(/[-_]/g," ")}l.push(this.createVertexTemplateEntry("image;html=1;image="+s+e+o,this.defaultImageWidth,this.defaultImageHeight,r[d],n,!1,!0,this.filterTags(t)))})(r[d],null!=t?t[d]:null,null!=a?a[r[d]]:null);this.addPaletteFunctions(e,n,!1,l)},"undefined"!=typeof html4&&(html4.ATTRIBS["a::target"]=0),mxConstants.SHADOW_OPACITY=.25,mxConstants.SHADOWCOLOR="#000000",mxConstants.VML_SHADOWCOLOR="#d0d0d0",mxGraph.prototype.pageBreakColor="#c0c0c0",mxGraph.prototype.pageScale=1,function(){try{if(null!=navigator&&null!=navigator.language){var e=navigator.language.toLowerCase();mxGraph.prototype.pageFormat="en-us"===e||"en-ca"===e||"es-mx"===e?mxConstants.PAGE_FORMAT_LETTER_PORTRAIT:mxConstants.PAGE_FORMAT_A4_PORTRAIT}}catch(e){}}(),mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,mxGraphModel.prototype.ignoreRelativeEdgeParent=!1,mxGraphView.prototype.gridImage=mxClient.IS_SVG?"data:image/gif;base64,R0lGODlhCgAKAJEAAAAAAP///8zMzP///yH5BAEAAAMALAAAAAAKAAoAAAIJ1I6py+0Po2wFADs=":IMAGE_PATH+"/grid.gif",mxGraphView.prototype.gridSteps=4,mxGraphView.prototype.minGridSize=4,mxGraphView.prototype.gridColor="#e0e0e0",mxSvgCanvas2D.prototype.foAltText="[Not supported by viewer]",Graph=function(e,n,t,a){mxGraph.call(this,e,n,t,a),this.setConnectable(!0),this.setDropEnabled(!1),this.setPanning(!0),this.setTooltips(!mxClient.IS_TOUCH),this.setAllowLoops(!1),this.setMultigraph(!1),this.allowAutoPanning=!0,this.resetEdgesOnConnect=!1,this.constrainChildren=!1,this.connectionHandler.targetConnectImage=!0,this.setAllowDanglingEdges(!1),this.connectionHandler.setCreateTarget(!1),this.connectionHandler.isValidSource=function(){return mxConnectionHandler.prototype.isValidSource.apply(this,arguments)&&"2"!=urlParams.connect},this.alternateEdgeStyle="vertical",null==a&&this.loadStylesheet();var i=new mxRubberband(this);this.getRubberband=function(){return i},this.panningHandler.addListener(mxEvent.PAN_START,mxUtils.bind(this,function(){this.container.style.cursor="pointer"})),this.panningHandler.addListener(mxEvent.PAN_END,mxUtils.bind(this,function(){this.container.style.cursor="default"})),this.isHtmlLabel=function(e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);return"1"==t.html||"wrap"==t.whiteSpace},this.cellRenderer.getLabelValue=function(e){var n=mxCellRenderer.prototype.getLabelValue.apply(this,arguments);return"wrap"==e.style.whiteSpace&&1!=e.style.html&&(n=mxUtils.htmlEntities(n,!1)),n},this.isCellLocked=function(e){return!1},this.connectionHandler.tapAndHoldTolerance=16;var s=this.connectionHandler.tapAndHold;this.connectionHandler.tapAndHold=function(e,n){null==n?this.graph.panningHandler.active||(i.start(e.getGraphX(),e.getGraphY()),this.graph.panningHandler.panningTrigger=!1):tapAndHoldStartsConnection?s.apply(this,arguments):this.graph.isCellSelected(n.cell)&&1<this.graph.getSelectionCount()&&this.graph.removeSelectionCell(n.cell)},touchStyle&&this.initTouch()},mxUtils.extend(Graph,mxGraph),Graph.prototype.minFitScale=null,Graph.prototype.maxFitScale=null,Graph.prototype.loadStylesheet=function(){var e=mxUtils.load(STYLE_PATH+"/default.xml").getDocumentElement();new mxCodec(e.ownerDocument).decode(e,this.getStylesheet())},Graph.prototype.flipEdge=function(e){if(null!=e){var n=this.view.getState(e),t=null!=n?n.style:this.getCellStyle(e);if(null!=t){var a=mxUtils.getValue(t,mxConstants.STYLE_ELBOW,mxConstants.ELBOW_HORIZONTAL)==mxConstants.ELBOW_HORIZONTAL?mxConstants.ELBOW_VERTICAL:mxConstants.ELBOW_HORIZONTAL;this.setCellStyles(mxConstants.STYLE_ELBOW,a,[e])}}},Graph.prototype.setDefaultEdge=function(e){if(null!=e&&this.getModel().isEdge(e)){var n=this.getModel().cloneCells([e])[0];null!=n.geometry&&(n.geometry.points=null);var t=n.getStyle();t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_ENTRY_Y,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_X,null),t=mxUtils.setStyle(t,mxConstants.STYLE_EXIT_Y,null),n.setStyle(t),this.connectionHandler.createEdgeState=function(e){return this.graph.view.createState(n)},this.connectionHandler.factoryMethod=function(){return this.graph.cloneCells([n])[0]}}},Graph.prototype.isCellFoldable=function(e){return this.foldingEnabled&&this.isSwimlane(e)},Graph.prototype.isValidRoot=function(e){return this.isSwimlane(e)},Graph.prototype.createGroupCell=function(){var e=mxGraph.prototype.createGroupCell.apply(this,arguments);return e.setStyle("group"),e},Graph.prototype.getTooltipForCell=function(e){var n="";return this.getModel().isVertex(e)?n+=mxResources.get("description_"+e.value.nodeName)||"":this.getModel().isEdge(e)&&(n=mxGraph.prototype.getTooltipForCell.apply(this,arguments)),n},Graph.prototype.convertValueToString=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("label"):mxGraph.prototype.convertValueToString.apply(this,arguments)},Graph.prototype.cellLabelChanged=function(e,n,t){if(null!=e.value&&"object"==typeof e.value){var a=e.value.cloneNode(!0);a.setAttribute("label",n),n=a}mxGraph.prototype.cellLabelChanged.apply(this,arguments)},Graph.prototype.setLinkForCell=function(e,n){var t=null;null!=e.value&&"object"==typeof e.value?t=e.value.cloneNode(!0):(t=mxUtils.createXmlDocument().createElement("UserObject")).setAttribute("label",e.value);null!=n&&0<n.length?t.setAttribute("link",n):t.removeAttribute("link"),this.model.setValue(e,t)},Graph.prototype.getLinkForCell=function(e){return null!=e.value&&"object"==typeof e.value?e.value.getAttribute("link"):null},Graph.prototype.initTouch=function(){this.connectionHandler.marker.isEnabled=function(){return null!=this.graph.connectionHandler.first},this.addListener(mxEvent.START_EDITING,function(e,n){this.panningHandler.hideMenu()});var s=!1,o=null;this.updateMouseEvent=function(e){if(mxGraph.prototype.updateMouseEvent.apply(this,arguments),null==e.getState()){var n=this.getCellAt(e.graphX,e.graphY);this.getModel().isEdge(n)&&(e.state=this.view.getState(n),null!=e.state&&null!=e.state.shape&&(this.container.style.cursor=e.state.shape.node.style.cursor))}null==e.getState()&&(this.container.style.cursor="default")},this.fireMouseEvent=function(e,n,t){if(e==mxEvent.MOUSE_DOWN)this.panningHandler.isMenuShowing()?(s=!1,o=null):(o=n.getCell(),s=null!=o?this.isCellSelected(o):this.isSelectionEmpty());else if(e==mxEvent.MOUSE_UP){if(s&&!this.isEditing()){if(!this.panningHandler.isMenuShowing()){var a=mxEvent.getClientX(n.getEvent()),i=mxEvent.getClientY(n.getEvent());this.panningHandler.popup(a+16,i,o,n.getEvent())}return s=!1,o=null,void n.consume()}s=!1,o=null}mxGraph.prototype.fireMouseEvent.apply(this,arguments),e==mxEvent.MOUSE_MOVE&&n.isConsumed()&&(s=!1,o=null)}},function(){if(mxVertexHandler.prototype.rotationEnabled=!0,mxText.prototype.baseSpacingTop=5,mxText.prototype.baseSpacingBottom=1,touchStyle){mxConstants.HANDLE_SIZE=16,mxConstants.LABEL_HANDLE_SIZE=7,mxClient.IS_TOUCH&&(mxVertexHandler.prototype.tolerance=4,mxEdgeHandler.prototype.tolerance=6,Graph.prototype.tolerance=14,Graph.prototype.gridSize=20,mxPanningHandler.prototype.selectOnPopup=!1,mxPanningHandler.prototype.useLeftButtonForPanning=!0,mxPanningHandler.prototype.isPanningTrigger=function(e){var n=e.getEvent();return this.useLeftButtonForPanning&&(this.ignoreCell||null==e.getState())||mxEvent.isControlDown(n)&&mxEvent.isShiftDown(n)||this.usePopupTrigger&&mxEvent.isPopupTrigger(n)});var t=mxGraphHandler.prototype.mouseDown;mxGraphHandler.prototype.mouseDown=function(e,n){t.apply(this,arguments),this.graph.isCellSelected(n.getCell())&&1<this.graph.getSelectionCount()&&(this.delayedSelection=!1)},Graph.prototype.createHandlers=function(e){this.tooltipHandler=new mxTooltipHandler(this),this.tooltipHandler.setEnabled(!1),this.selectionCellsHandler=new mxSelectionCellsHandler(this),this.panningHandler=new mxPanningHandler(this),this.panningHandler.panningEnabled=!1,this.connectionHandler=new mxConnectionHandler(this),this.connectionHandler.setEnabled(!1),this.graphHandler=new mxGraphHandler(this)},mxConnectionHandler.prototype.selectCells=function(e,n){touchStyle&&null!=n?this.graph.setSelectionCell(n):this.graph.setSelectionCell(e)};var a=mxGraph.prototype.dblClick;Graph.prototype.dblClick=function(e,n){if(null==n){var t=mxUtils.convertPoint(this.container,mxEvent.getClientX(e),mxEvent.getClientY(e));n=this.getCellAt(t.x,t.y)}a.call(this,e,n)};var e=new mxImage(IMAGE_PATH+"/touch-handle.png",16,16);mxVertexHandler.prototype.handleImage=e,mxEdgeHandler.prototype.handleImage=e,mxOutline.prototype.sizerImage=e,(new Image).src=e.src;var n=IMAGE_PATH+"/touch-connector.png",i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(this.connectorImg=mxUtils.createImage(n),this.connectorImg.style.cursor="pointer",this.connectorImg.style.width="29px",this.connectorImg.style.height="29px",this.connectorImg.style.position="absolute",mxClient.IS_TOUCH||(this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state)),this.connectorImg.style.padding="2px",mxEvent.addGestureListeners(this.connectorImg,mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};var s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+4+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};var o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)},(new Image).src=n}else{var r=new mxImage(IMAGE_PATH+"/connector.png",15,15);if(mxConnectionHandler.prototype.connectImage=r,(new Image).src=r.src,"2"==urlParams.connect){r=new mxImage(IMAGE_PATH+"/connector.png",15,15),i=mxVertexHandler.prototype.init;mxVertexHandler.prototype.init=function(){i.apply(this,arguments),showConnectorImg&&this.graph.connectionHandler.isEnabled()&&this.graph.isCellConnectable(this.state.cell)&&!this.graph.isValidRoot(this.state.cell)&&1==this.graph.getSelectionCount()&&(mxClient.IS_IE&&!mxClient.IS_SVG?(this.connectorImg=document.createElement("div"),this.connectorImg.style.backgroundImage="url("+r.src+")",this.connectorImg.style.backgroundPosition="center",this.connectorImg.style.backgroundRepeat="no-repeat",this.connectorImg.style.width=r.width+4+"px",this.connectorImg.style.height=r.height+4+"px",this.connectorImg.style.display=mxClient.IS_QUIRKS?"inline":"inline-block"):(this.connectorImg=mxUtils.createImage(r.src),this.connectorImg.style.width=r.width+"px",this.connectorImg.style.height=r.height+"px"),this.connectorImg.style.cursor="pointer",this.connectorImg.style.position="absolute",this.connectorImg.setAttribute("title",mxResources.get("connect")),mxEvent.redirectMouseEvents(this.connectorImg,this.graph,this.state),this.connectorImg.style.padding="2px",mxEvent.addListener(this.connectorImg,"mousedown",mxUtils.bind(this,function(e){this.graph.panningHandler.hideMenu();var n=mxUtils.convertPoint(this.graph.container,mxEvent.getClientX(e),mxEvent.getClientY(e));this.graph.connectionHandler.start(this.state,n.x,n.y),this.graph.isMouseDown=!0,mxEvent.consume(e)})),this.graph.container.appendChild(this.connectorImg)),this.redrawTools()};s=mxVertexHandler.prototype.redraw;mxVertexHandler.prototype.redraw=function(){s.apply(this),this.redrawTools()},mxVertexHandler.prototype.redrawTools=function(){null!=this.state&&null!=this.connectorImg&&(mxVertexHandler.prototype.singleSizer?(this.connectorImg.style.left=this.state.x+this.state.width-this.connectorImg.offsetWidth/2+"px",this.connectorImg.style.top=this.state.y-this.connectorImg.offsetHeight/2+"px"):(this.connectorImg.style.left=this.state.x+this.state.width+mxConstants.HANDLE_SIZE/2+2+"px",this.connectorImg.style.top=this.state.y+(this.state.height-this.connectorImg.offsetHeight)/2+"px"))};o=mxVertexHandler.prototype.destroy;mxVertexHandler.prototype.destroy=function(e,n){o.apply(this,arguments),null!=this.connectorImg&&(this.connectorImg.parentNode.removeChild(this.connectorImg),this.connectorImg=null)}}}}(),Actions.prototype.init=function(){var n=this.editorUi,l=n.editor,d=l.graph;this.addAction("new",function(){n.projectDesignController.newProject()},CRUD_PERMISSIONS.canEdit),this.addAction("open",function(){n.projectDesignController.openProject()},CRUD_PERMISSIONS.canEdit),this.addAction("save",function(){n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml())),n.editor.modified=!1},CRUD_PERMISSIONS.canEdit,null,"Ctrl+S"),this.addAction("saveAs",function(){n.projectDesignController.saveProjectAs(mxUtils.getPrettyXml(l.getGraphXml()))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+S"),this.addAction("publish",function(){n.editor.setStatus(""),null===n.validate()?(n.projectDesignController.saveOrPublishProject(mxUtils.getPrettyXml(l.getGraphXml()),!0),n.editor.modified=!1):(n.editor.setStatus("...Error publishing! Please check the project and try again!"),setTimeout(function(){n.editor.setStatus("")},3e3))},CRUD_PERMISSIONS.canEdit,null,"Ctrl+Shift+P"),this.addAction("variable",function(){n.projectDesignController.newVariable()},CRUD_PERMISSIONS.canEdit),this.addAction("import",function(){n.projectDesignController.importXML(function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("export",function(){n.exportXML(mxUtils.getPrettyXml(l.getGraphXml()))},null,null,"Ctrl+E"),this.addAction("editFile",function(){n.projectDesignController.editXML(mxUtils.getPrettyXml(l.getGraphXml()),function(e){l.setGraphXml(mxUtils.parseXml(e).documentElement)})},CRUD_PERMISSIONS.canEdit),this.addAction("print",function(){mxUtils.printScreen(d)},null,"sprite-print","Ctrl+P"),this.addAction("preview",function(){mxUtils.show(d,null,10,10)}),this.addAction("undo",function(){l.undoManager.undo()},null,"sprite-undo","Ctrl+Z"),this.addAction("redo",function(){l.undoManager.redo()},null,"sprite-redo","Ctrl+Y"),this.addAction("cut",function(){mxClipboard.cut(d)},null,"sprite-cut","Ctrl+X"),this.addAction("copy",function(){mxClipboard.copy(d)},null,"sprite-copy","Ctrl+C"),this.addAction("paste",function(){mxClipboard.paste(d)},!1,"sprite-paste","Ctrl+V"),this.addAction("delete",function(){d.removeCells()},null,null,"Delete"),this.addAction("duplicate",function(){var e=d.gridSize;d.setSelectionCells(d.moveCells(d.getSelectionCells(),e,e,!0))},null,null,"Ctrl+D"),this.addAction("selectVertices",function(){d.selectVertices()},null,null,"Ctrl+Shift+V"),this.addAction("selectEdges",function(){d.selectEdges()},null,null,"Ctrl+Shift+E"),this.addAction("selectAll",function(){d.selectAll()},null,null,"Ctrl+A"),this.addAction("home",function(){d.home()},null,null,"Home"),this.addAction("exitGroup",function(){d.exitGroup()},null,null,"Page Up"),this.addAction("enterGroup",function(){d.enterGroup()},null,null,"Page Down"),this.addAction("expand",function(){d.foldCells(!1)},null,null,"Enter"),this.addAction("collapse",function(){d.foldCells(!0)},null,null,"Backspace"),this.addAction("toFront",function(){d.orderCells(!1)},null,null,"Ctrl+F"),this.addAction("toBack",function(){d.orderCells(!0)},null,null,"Ctrl+B"),this.addAction("group",function(){d.setSelectionCell(d.groupCells(null,0))},null,null,"Ctrl+G"),this.addAction("ungroup",function(){d.setSelectionCells(d.ungroupCells())},null,null,"Ctrl+U"),this.addAction("removeFromGroup",function(){d.removeCellsFromParent()}),this.addAction("editLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null==n&&(n=""),null!=(n=mxUtils.prompt(mxResources.get("enterValue"),n))&&d.setLinkForCell(e,n)}),this.addAction("openLink",function(){var e=d.getSelectionCell(),n=d.getLinkForCell(e);null!=n&&window.open(n)}),this.addAction("autosize",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];d.getModel().getChildCount(t)?d.updateGroupBounds([t],20):d.updateCellSize(t)}}finally{d.getModel().endUpdate()}}}),this.addAction("wordWrap",function(){var e=d.getView().getState(d.getSelectionCell()),n="wrap";null!=e&&"wrap"==e.style[mxConstants.STYLE_WHITE_SPACE]&&(n=null),d.setCellStyles(mxConstants.STYLE_WHITE_SPACE,n)}),this.addAction("rotation",function(){var e="0",n=d.getView().getState(d.getSelectionCell());null!=n&&(e=n.style[mxConstants.STYLE_ROTATION]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("rotation")+" 0-360)",e))&&d.setCellStyles(mxConstants.STYLE_ROTATION,e)}),this.addAction("tilt",function(){var e=d.getSelectionCells();if(null!=e){d.getModel().beginUpdate();try{for(var n=0;n<e.length;n++){var t=e[n];if(d.getModel().isVertex(t)&&0==d.getModel().getChildCount(t)){var a=d.getCellGeometry(t);if(null!=a){(a=a.clone()).x+=a.width/2-a.height/2,a.y+=a.height/2-a.width/2;var i=a.width;a.width=a.height,a.height=i,d.getModel().setGeometry(t,a);var s=d.view.getState(t);if(null!=s){var o=s.style[mxConstants.STYLE_DIRECTION]||"east";"east"==o?o="south":"south"==o?o="west":"west"==o?o="north":"north"==o&&(o="east"),d.setCellStyles(mxConstants.STYLE_DIRECTION,o,[t])}}}}}finally{d.getModel().endUpdate()}}},null,null,"Ctrl+R"),this.addAction("actualSize",function(){d.zoomTo(1)}),this.addAction("zoomIn",function(){d.zoomIn()},null,null,"Add"),this.addAction("zoomOut",function(){d.zoomOut()},null,null,"Subtract"),this.addAction("fitWindow",function(){d.fit()}),this.addAction("fitPage",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=d.container.clientHeight-20,i=Math.floor(100*Math.min(t/e.width/n,a/e.height/n))/100;d.zoomTo(i),d.container.scrollLeft=Math.round(d.view.translate.x*i-Math.max(10,(d.container.clientWidth-e.width*n*i)/2)),d.container.scrollTop=Math.round(d.view.translate.y*i-Math.max(10,(d.container.clientHeight-e.height*n*i)/2))})),this.addAction("fitPageWidth",mxUtils.bind(this,function(){d.pageVisible||this.get("pageView").funct();var e=d.pageFormat,n=d.pageScale,t=d.container.clientWidth-20,a=Math.floor(100*t/e.width/n)/100;d.zoomTo(a),d.container.scrollLeft=Math.round(d.view.translate.x*a-Math.max(10,(d.container.clientWidth-e.width*n*a)/2)),d.container.scrollTop=Math.round(d.view.translate.y*a-Math.max(10,(d.container.clientHeight-e.height*n*a)/2))})),this.put("customZoom",new Action(mxResources.get("custom"),function(){var e=mxUtils.prompt(mxResources.get("enterValue")+" (%)",parseInt(100*d.getView().getScale()));null!=e&&0<e.length&&!isNaN(parseInt(e))&&d.zoomTo(parseInt(e)/100)}));var e=null;(e=this.addAction("grid",function(){d.setGridEnabled(!d.isGridEnabled()),l.updateGraphComponents()},null,null,"Ctrl+Shift+G")).setToggleAction(!0),e.setSelectedCallback(function(){return d.isGridEnabled()}),(e=this.addAction("guides",function(){d.graphHandler.guidesEnabled=!d.graphHandler.guidesEnabled})).setToggleAction(!0),e.setSelectedCallback(function(){return d.graphHandler.guidesEnabled}),(e=this.addAction("tooltips",function(){d.tooltipHandler.setEnabled(!d.tooltipHandler.isEnabled())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.tooltipHandler.isEnabled()}),(e=this.addAction("navigation",function(){d.foldingEnabled=!d.foldingEnabled,d.view.revalidate()})).setToggleAction(!0),e.setSelectedCallback(function(){return d.foldingEnabled}),(e=this.addAction("scrollbars",function(){if(d.scrollbars=!d.scrollbars,l.updateGraphComponents(),d.scrollbars){var e=d.view.translate.x,n=d.view.translate.y;d.view.translate.x=0,d.view.translate.y=0,d.sizeDidChange(),d.container.scrollLeft-=Math.round(e*d.view.scale),d.container.scrollTop-=Math.round(n*d.view.scale)}else{var t=d.view.translate;d.view.setTranslate(t.x-d.container.scrollLeft/d.view.scale,t.y-d.container.scrollTop/d.view.scale),d.container.scrollLeft=0,d.container.scrollTop=0,d.sizeDidChange()}},!mxClient.IS_TOUCH)).setToggleAction(!0),e.setSelectedCallback(function(){return"auto"==d.container.style.overflow}),(e=this.addAction("pageView",mxUtils.bind(this,function(){d.pageVisible=!d.pageVisible,d.pageBreaksVisible=d.pageVisible,d.preferPageSize=d.pageBreaksVisible,d.view.validate(),d.sizeDidChange(),l.updateGraphComponents(),l.outline.update(),mxUtils.hasScrollbars(d.container)&&(d.pageVisible?(d.container.scrollLeft-=20,d.container.scrollTop-=20):(d.container.scrollLeft+=20,d.container.scrollTop+=20))}))).setToggleAction(!0),e.setSelectedCallback(function(){return d.pageVisible}),(e=this.addAction("connect",function(){d.setConnectable(!d.connectionHandler.isEnabled())},null,null,"Ctrl+Q")).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isEnabled()}),(e=this.addAction("copyConnect",function(){d.connectionHandler.setCreateTarget(!d.connectionHandler.isCreateTarget())})).setToggleAction(!0),e.setSelectedCallback(function(){return d.connectionHandler.isCreateTarget()}),this.addAction("help",function(){window.open("https://wiki.xcallymotion.com/display/XMV/Cally+Square")}),this.put("about",new Action(mxResources.get("about")+" Cally Square",function(){window.open("http://callysquare.com/")},null,null,null));var t=mxUtils.bind(this,function(e,n){this.addAction(e,function(){d.toggleCellStyleFlags(mxConstants.STYLE_FONTSTYLE,n)})});t("bold",mxConstants.FONT_BOLD),t("italic",mxConstants.FONT_ITALIC),t("underline",mxConstants.FONT_UNDERLINE),this.addAction("shadow",function(){d.toggleCellStyles(mxConstants.STYLE_SHADOW)}),this.addAction("dashed",function(){d.toggleCellStyles(mxConstants.STYLE_DASHED)}),this.addAction("rounded",function(){d.toggleCellStyles(mxConstants.STYLE_ROUNDED)}),this.addAction("curved",function(){d.toggleCellStyles(mxConstants.STYLE_CURVED)}),this.addAction("style",function(){var e=d.getSelectionCells();if(null!=e&&0<e.length){var n=d.getModel(),t=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("style")+")",n.getStyle(e[0])||"");null!=t&&d.setCellStyle(t,e)}}),this.addAction("setAsDefaultEdge",function(){d.setDefaultEdge(d.getSelectionCell())}),this.addAction("addWaypoint",function(){var e=d.getSelectionCell();if(null!=e&&d.getModel().isEdge(e)){var n=l.graph.selectionCellsHandler.getHandler(e);if(n instanceof mxEdgeHandler){var t=d.view.translate,a=d.view.scale,i=t.x,s=t.y,o=d.getModel().getParent(e),r=d.getCellGeometry(o);d.getModel().isVertex(o)&&null!=r&&(i+=r.x,s+=r.y),n.addPointAt(n.state,d.panningHandler.triggerX/a-i,d.panningHandler.triggerY/a-s)}}}),this.addAction("removeWaypoint",function(){var e=n.actions.get("removeWaypoint");null!=e.handler&&e.handler.removePoint(e.handler.state,e.index)}),this.addAction("image",function(){var e="",n=d.getView().getState(d.getSelectionCell());if(null!=n&&(e=n.style[mxConstants.STYLE_IMAGE]||e),null!=(e=mxUtils.prompt(mxResources.get("enterValue")+" ("+mxResources.get("url")+")",e))&&0<e.length){var t=new Image;t.onload=function(){!function(e,n,t){var a=null,i=d.getSelectionCells();d.getModel().beginUpdate();try{if(0==i.length){var s=d.getGridSize();a=i=[d.insertVertex(d.getDefaultParent(),null,"",s,s,n,t)]}if(d.setCellStyles(mxConstants.STYLE_IMAGE,e,i),d.setCellStyles(mxConstants.STYLE_SHAPE,"image",i),1==d.getSelectionCount()&&null!=n&&null!=t){var o=i[0],r=d.getModel().getGeometry(o);null!=r&&((r=r.clone()).width=n,r.height=t,d.getModel().setGeometry(o,r))}}finally{d.getModel().endUpdate()}null!=a&&(d.setSelectionCells(a),d.scrollCellToVisible(a[0]))}(e,t.width,t.height)},t.onerror=function(){mxUtils.alert(mxResources.get("fileNotFound"))},t.src=e}})},Actions.prototype.addAction=function(e,n,t,a,i){return this.put(e,new Action(mxResources.get(e),n,t,a,i))},Actions.prototype.put=function(e,n){return this.actions[e]=n},Actions.prototype.get=function(e){return this.actions[e]},mxUtils.extend(Action,mxEventSource),Action.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Action.prototype.setToggleAction=function(e){this.toggleAction=e},Action.prototype.setSelectedCallback=function(e){this.selectedCallback=e},Action.prototype.isSelected=function(){return this.selectedCallback()},Menus=function(e){this.editorUi=e,this.menus=new Object,this.init(),(new Image).src=IMAGE_PATH+"/checkmark.gif"},Menus.prototype.init=function(){var i=this.editorUi.editor.graph;this.put("fontFamily",new Menu(mxUtils.bind(this,function(e,n){for(var t=["Helvetica","Verdana","Times New Roman","Garamond","Comic Sans MS","Courier New","Georgia","Lucida Console","Tahoma"],a=0;a<t.length;a++){this.styleChange(e,t[a],[mxConstants.STYLE_FONTFAMILY],[t[a]],null,n).firstChild.nextSibling.style.fontFamily=t[a]}e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"",mxConstants.DEFAULT_FONTFAMILY,mxConstants.STYLE_FONTFAMILY,n)}))),this.put("fontSize",new Menu(mxUtils.bind(this,function(e,n){for(var t=[6,8,9,10,11,12,14,18,24,36,48,72],a=0;a<t.length;a++)this.styleChange(e,t[a],[mxConstants.STYLE_FONTSIZE],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(pt)","12",mxConstants.STYLE_FONTSIZE,n)}))),this.put("linewidth",new Menu(mxUtils.bind(this,function(e,n){for(var t=[1,2,3,4,8,12,16,24],a=0;a<t.length;a++)this.styleChange(e,t[a]+"px",[mxConstants.STYLE_STROKEWIDTH],[t[a]],null,n);e.addSeparator(n),this.promptChange(e,mxResources.get("custom"),"(px)","1",mxConstants.STYLE_STROKEWIDTH,n)}))),this.put("line",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("straight"),[mxConstants.STYLE_EDGE],[null],null,n),this.styleChange(e,mxResources.get("entityRelation"),[mxConstants.STYLE_EDGE],["entityRelationEdgeStyle"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("horizontal"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","horizontal"],null,n),this.styleChange(e,mxResources.get("vertical"),[mxConstants.STYLE_EDGE,mxConstants.STYLE_ELBOW],["elbowEdgeStyle","vertical"],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("manual"),[mxConstants.STYLE_EDGE],["segmentEdgeStyle"],null,n),this.styleChange(e,mxResources.get("automatic"),[mxConstants.STYLE_EDGE],["orthogonalEdgeStyle"],null,n)}))),this.put("lineend",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_ENDARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_ENDARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("endFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_ENDSIZE,n)}))),this.put("linestart",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("classic"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_CLASSIC],null,n),this.styleChange(e,mxResources.get("openArrow"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OPEN],null,n),this.styleChange(e,mxResources.get("block"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_BLOCK],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("oval"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_OVAL],null,n),this.styleChange(e,mxResources.get("diamond"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND],null,n),this.styleChange(e,mxResources.get("diamondThin"),[mxConstants.STYLE_STARTARROW],[mxConstants.ARROW_DIAMOND_THIN],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("none"),[mxConstants.STYLE_STARTARROW],[mxConstants.NONE],null,n),e.addSeparator(n),e.addItem(mxResources.get("transparent"),null,function(){i.toggleCellStyles("startFill",!0)},n,null,!0),e.addSeparator(n),this.promptChange(e,mxResources.get("size"),"(px)",mxConstants.DEFAULT_MARKERSIZE,mxConstants.STYLE_STARTSIZE,n)}))),this.put("spacing",new Menu(mxUtils.bind(this,function(e,n){var t=this.editorUi.actions.get("shadow").enabled,a=this.get("line").enabled;(t||e.showDisabled)&&(this.promptChange(e,mxResources.get("top"),"(px)","0",mxConstants.STYLE_SPACING_TOP,n,t),this.promptChange(e,mxResources.get("right"),"(px)","0",mxConstants.STYLE_SPACING_RIGHT,n,t),this.promptChange(e,mxResources.get("bottom"),"(px)","0",mxConstants.STYLE_SPACING_BOTTOM,n,t),this.promptChange(e,mxResources.get("left"),"(px)","0",mxConstants.STYLE_SPACING_LEFT,n,t),e.addSeparator(n),this.promptChange(e,mxResources.get("global"),"(px)","0",mxConstants.STYLE_SPACING,n,t),this.promptChange(e,mxResources.get("perimeter"),"(px)","0",mxConstants.STYLE_PERIMETER_SPACING,n,t)),(a||e.showDisabled)&&(e.addSeparator(n),this.promptChange(e,mxResources.get("sourceSpacing"),"(px)","0",mxConstants.STYLE_SOURCE_PERIMETER_SPACING,n,a),this.promptChange(e,mxResources.get("targetSpacing"),"(px)","0",mxConstants.STYLE_TARGET_PERIMETER_SPACING,n,a))}))),this.put("format",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItem(e,"style",n)}))),this.put("text",new Menu(mxUtils.bind(this,function(e,n){var t=this.get("text").enabled;e.addSeparator(n),this.addSubmenu("fontFamily",e,n),this.addSubmenu("fontSize",e,n),this.addMenuItems(e,["-","bold","italic","underline","-"],n),this.addSubmenu("alignment",e,n),this.addMenuItem(e,"wordWrap",n),e.addSeparator(n),this.promptChange(e,mxResources.get("textOpacity"),"(%)","100",mxConstants.STYLE_TEXT_OPACITY,n,t),e.addItem(mxResources.get("hide"),null,function(){i.toggleCellStyles(mxConstants.STYLE_NOLABEL,!1)},n,null,t)}))),this.put("alignment",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("leftAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("rightAlign"),[mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("topAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottomAlign"),[mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM],null,n),e.addSeparator(n),this.addSubmenu("position",e,n),this.addSubmenu("spacing",e,n),e.addSeparator(n);var t=this.get("text").enabled;e.addItem(mxResources.get("vertical"),null,function(){i.toggleCellStyles(mxConstants.STYLE_HORIZONTAL,!0)},n,null,t)}))),this.put("position",new Menu(mxUtils.bind(this,function(e,n){this.styleChange(e,mxResources.get("left"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_LEFT,mxConstants.ALIGN_RIGHT],null,n),this.styleChange(e,mxResources.get("center"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_CENTER,mxConstants.ALIGN_CENTER],null,n),this.styleChange(e,mxResources.get("right"),[mxConstants.STYLE_LABEL_POSITION,mxConstants.STYLE_ALIGN],[mxConstants.ALIGN_RIGHT,mxConstants.ALIGN_LEFT],null,n),e.addSeparator(n),this.styleChange(e,mxResources.get("top"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_TOP,mxConstants.ALIGN_BOTTOM],null,n),this.styleChange(e,mxResources.get("middle"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_MIDDLE,mxConstants.ALIGN_MIDDLE],null,n),this.styleChange(e,mxResources.get("bottom"),[mxConstants.STYLE_VERTICAL_LABEL_POSITION,mxConstants.STYLE_VERTICAL_ALIGN],[mxConstants.ALIGN_BOTTOM,mxConstants.ALIGN_TOP],null,n)}))),this.put("direction",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("flipH"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPH,!1)},n),e.addItem(mxResources.get("flipV"),null,function(){i.toggleCellStyles(mxConstants.STYLE_FLIPV,!1)},n),this.addMenuItems(e,["-","tilt","rotation"],n)}))),this.put("align",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("leftAlign"),null,function(){i.alignCells(mxConstants.ALIGN_LEFT)},n),e.addItem(mxResources.get("center"),null,function(){i.alignCells(mxConstants.ALIGN_CENTER)},n),e.addItem(mxResources.get("rightAlign"),null,function(){i.alignCells(mxConstants.ALIGN_RIGHT)},n),e.addSeparator(n),e.addItem(mxResources.get("topAlign"),null,function(){i.alignCells(mxConstants.ALIGN_TOP)},n),e.addItem(mxResources.get("middle"),null,function(){i.alignCells(mxConstants.ALIGN_MIDDLE)},n),e.addItem(mxResources.get("bottomAlign"),null,function(){i.alignCells(mxConstants.ALIGN_BOTTOM)},n)}))),this.put("layout",new Menu(mxUtils.bind(this,function(e,n){e.addItem(mxResources.get("horizontalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_WEST);this.editorUi.executeLayout(e,!0,!0)}),n),e.addItem(mxResources.get("verticalFlow"),null,mxUtils.bind(this,function(){var e=new mxHierarchicalLayout(i,mxConstants.DIRECTION_NORTH);this.editorUi.executeLayout(e,!0,!0)}),n)}))),this.put("navigation",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["home","-","exitGroup","enterGroup","-","expand","collapse"],n)}))),this.put("arrange",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["toFront","toBack","-"],n),this.addSubmenu("layout",e,n),e.addSeparator(n),this.addMenuItems(e,["-","group","ungroup","removeFromGroup"],n)}))),this.put("view",new Menu(mxUtils.bind(this,function(n,t){this.addMenuItems(n,["actualSize"],t),n.addSeparator();for(var e=[.25,.5,.75,1,2,4],a=0;a<e.length;a++)!function(e){n.addItem(100*e+"%",null,function(){i.zoomTo(e)},t)}(e[a]);this.addMenuItems(n,["-","zoomIn","zoomOut","-","fitWindow","customZoom","-","fitPage","fitPageWidth"],t)}))),this.put("file",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["new","open","-","save","saveAs","publish","-","variable","-","import","export","-","editFile","description","-","print"],n)}))),this.put("edit",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["undo","redo","-","cut","copy","paste","delete","-","duplicate","-","selectVertices","selectEdges","selectAll"])}))),this.put("help",new Menu(mxUtils.bind(this,function(e,n){this.addMenuItems(e,["help","-","about"])})))},Menus.prototype.put=function(e,n){this.menus[e]=n},Menus.prototype.get=function(e){return this.menus[e]},Menus.prototype.addSubmenu=function(e,n,t){var a=this.get(e).enabled;if(n.showDisabled||a){var i=n.addItem(mxResources.get(e),null,null,t,null,a);this.addMenu(e,n,i)}},Menus.prototype.addMenu=function(e,n,t){var a=this.get(e);null!=a&&(n.showDisabled||a.enabled)&&this.get(e).execute(n,t)},Menus.prototype.styleChange=function(e,n,t,a,i,s){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph;e.getModel().beginUpdate();try{for(var n=0;n<t.length;n++)e.setCellStyles(t[n],a[n])}finally{e.getModel().endUpdate()}}),s,i)},Menus.prototype.promptChange=function(e,n,a,i,s,t,o){return e.addItem(n,null,mxUtils.bind(this,function(){var e=this.editorUi.editor.graph,n=i,t=e.getView().getState(e.getSelectionCell());null!=t&&(n=t.style[s]||n),null!=(n=mxUtils.prompt(mxResources.get("enterValue")+(0<a.length?" "+a:""),n))&&0<n.length&&e.setCellStyles(s,n)}),t,null,o)},Menus.prototype.addMenuItem=function(e,n,t){var a=this.editorUi.actions.get(n);if(null==a||!e.showDisabled&&!a.enabled)return null;var i=e.addItem(a.label,null,a.funct,t,null,a.enabled);return a.toggleAction&&a.isSelected()&&this.addCheckmark(i),this.addShortcut(i,a),i},Menus.prototype.addShortcut=function(e,n){if(null!=n.shortcut){var t=e.firstChild.nextSibling.nextSibling,a=document.createElement("span");a.style.color="gray",mxUtils.write(a,n.shortcut),t.appendChild(a)}},Menus.prototype.addCheckmark=function(e){var n=e.firstChild.nextSibling;n.style.backgroundImage="url("+IMAGE_PATH+"/checkmark.gif)",n.style.backgroundRepeat="no-repeat",n.style.backgroundPosition="2px 50%"},Menus.prototype.addMenuItems=function(e,n,t){for(var a=0;a<n.length;a++)"-"==n[a]?e.addSeparator(t):this.addMenuItem(e,n[a],t)},Menus.prototype.createPopupMenu=function(e,n,t){var a=this.editorUi.editor.graph;if(e.smartSeparators=!0,a.isSelectionEmpty()?this.addMenuItems(e,["undo","redo","-","paste","-"]):(this.addMenuItems(e,["delete","-","cut","copy","-","duplicate"]),1==a.getSelectionCount()&&a.getModel().isEdge(a.getSelectionCell())&&this.addMenuItems(e,["setAsDefaultEdge"]),e.addSeparator()),0<a.getSelectionCount()){if(this.addMenuItems(e,["toFront","toBack","-"]),a.getModel().isEdge(a.getSelectionCell())){var i=!1;if(null!=(n=a.getSelectionCell())&&a.getModel().isEdge(n)){var s=a.selectionCellsHandler.getHandler(n);if(s instanceof mxEdgeHandler&&null!=s.bends&&2<s.bends.length){var o=s.getHandleForEvent(new mxMouseEvent(t)),r=this.editorUi.actions.get("removeWaypoint");r.handler=s,i=0<(r.index=o)&&o<s.bends.length}}this.addMenuItems(e,["-",i?"removeWaypoint":"addWaypoint"])}else 1<a.getSelectionCount()&&(e.addSeparator(),this.addMenuItems(e,["group"]));if(e.addSeparator(),1==a.getSelectionCount())null!=a.getLinkForCell(a.getSelectionCell())&&this.addMenuItems(e,["openLink"])}else this.addMenuItems(e,["-","selectVertices","selectEdges","-","selectAll"])},Menus.prototype.createMenubar=function(e){var n=new Menubar(this.editorUi,e),t=[];t=CRUD_PERMISSIONS.canEdit?["file","edit","view","format","text","arrange","help"]:["file","view","help"];for(var a=0;a<t.length;a++)n.addMenu(mxResources.get(t[a]),this.get(t[a]).funct);return n},Menubar.prototype.hideMenu=function(){null!=this.currentMenu&&this.currentMenu.hideMenu()},Menubar.prototype.addMenu=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geItem",mxUtils.write(t,e),this.addMenuHandler(t,n),this.container.appendChild(t),t},Menubar.prototype.getOffset=function(e){return{left:(e=e.getBoundingClientRect()).left+window.scrollX,top:e.top+window.scrollY}},Menubar.prototype.addMenuHandler=function(i,s){if(null!=s){var o=!0,n=mxUtils.bind(this,function(e){if(o&&null==i.enabled||i.enabled){this.editorUi.editor.graph.panningHandler.hideMenu();var n=new mxPopupMenu(s);n.div.className+=" geMenubarMenu",n.smartSeparators=!0,n.showDisabled=!0,n.autoExpand=!0,n.hideMenu=mxUtils.bind(this,function(){mxPopupMenu.prototype.hideMenu.apply(n,arguments),n.destroy(),this.currentMenu=null,this.currentElt=null});var t=this.getOffset(i).left,a=this.getOffset(i).top+i.offsetHeight;n.popup(t,a,null,e),this.currentMenu=n,this.currentElt=i}o=!0,mxEvent.consume(e)});mxEvent.addListener(i,"mousemove",mxUtils.bind(this,function(e){null!=this.currentMenu&&this.currentElt!=i&&(this.hideMenu(),n(e))})),mxEvent.addListener(i,"mousedown",mxUtils.bind(this,function(){o=this.currentElt!=i})),mxEvent.addListener(i,"click",n)}},mxUtils.extend(Menu,mxEventSource),Menu.prototype.setEnabled=function(e){this.enabled!=e&&(this.enabled=e,this.fireEvent(new mxEventObject("stateChanged")))},Menu.prototype.execute=function(e,n){this.funct(e,n)},Toolbar.prototype.init=function(){CRUD_PERMISSIONS.canEdit?this.addItems(["save","publish","-","print","undo","redo","-","copy","cut","paste","delete","-","duplicate","-","actualSize","zoomIn","zoomOut","-"]):this.addItems(["print","actualSize","zoomIn","zoomOut","-"])},Toolbar.prototype.hideMenu=function(){null!=this.currentMenu&&(this.currentMenu.hideMenu(),this.currentMenu.destroy(),this.currentMenu=null)},Toolbar.prototype.addMenu=function(e,n,t,a){var i=this.editorUi.menus.get(a),s=this.addMenuFunction(e,n,t,i.funct);return i.addListener("stateChanged",function(){s.setEnabled(i.enabled)}),s},Toolbar.prototype.addMenuFunction=function(e,n,t,a){var i=t?this.createLabel(e):this.createButton(e);return this.initElement(i,n),this.addMenuHandler(i,t,a),this.container.appendChild(i),i},Toolbar.prototype.addSeparator=function(){var e=document.createElement("div");return e.className="geSeparator",this.container.appendChild(e),e},Toolbar.prototype.addItems=function(e){for(var n=0;n<e.length;n++){var t=e[n];"-"==t?this.addSeparator():this.addItem("geSprite-"+t.toLowerCase(),t)}},Toolbar.prototype.addItem=function(e,n){var t=this.editorUi.actions.get(n),a=null;return null!=t&&((a=this.addButton(e,t.label,t.funct)).setEnabled(t.enabled),t.addListener("stateChanged",function(){a.setEnabled(t.enabled)})),a},Toolbar.prototype.addButton=function(e,n,t){var a=this.createButton(e);return this.initElement(a,n),this.addClickHandler(a,t),this.container.appendChild(a),a},Toolbar.prototype.addSelectionHandler=function(t){var a=this.editorUi.editor.graph,e=function(){for(var e=!a.isSelectionEmpty(),n=0;n<t.length;n++)t[n].setEnabled(e)};a.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.addEdgeSelectionHandler=function(a){var i=this.editorUi.editor.graph,e=function(){var e=!1;if(!i.isSelectionEmpty())for(var n=i.getSelectionCells(),t=0;t<n.length;t++)if(i.getModel().isEdge(n[t])){e=!0;break}for(t=0;t<a.length;t++)a[t].setEnabled(e)};i.getSelectionModel().addListener(mxEvent.CHANGE,e),e()},Toolbar.prototype.initElement=function(e,n){e.setAttribute("tabindex","0"),null!=n&&e.setAttribute("title",n),this.addEnabledState(e)},Toolbar.prototype.addEnabledState=function(n){var t=n.className;n.setEnabled=function(e){n.enabled=e,n.className=e?t:t+" geDisabled"},n.setEnabled(!0)},Toolbar.prototype.addClickHandler=function(n,t){null!=t&&mxEvent.addListener(n,"click",function(e){n.enabled&&t(e),mxEvent.consume(e)})},Toolbar.prototype.createButton=function(e){var n=document.createElement("a");n.setAttribute("href","javascript:void(0);"),n.className="geButton";var t=document.createElement("div");return t.className="geSprite "+e,n.appendChild(t),n},Toolbar.prototype.createLabel=function(e,n){var t=document.createElement("a");return t.setAttribute("href","javascript:void(0);"),t.className="geLabel",mxUtils.write(t,e),t},Toolbar.prototype.addMenuHandler=function(n,t,a,i){if(null!=a){var s=this.editorUi.editor.graph,o=null;mxEvent.addListener(n,"click",mxUtils.bind(this,function(e){(null==n.enabled||n.enabled)&&(s.panningHandler.hideMenu(),(o=new mxPopupMenu(a)).div.className+=" geToolbarMenu",o.showDisabled=i,o.labels=t,o.autoExpand=!0,o.popup(n.offsetLeft,n.offsetTop+n.offsetHeight+34,null,e),this.currentMenu=o),mxEvent.consume(e)}))}},Dialog.prototype.close=function(){null!=this.onDialogClose&&(this.onDialogClose(),this.onDialogClose=null),this.container.parentNode.removeChild(this.container),this.bg.parentNode.removeChild(this.bg)},angular.module("motion").run(["$templateCache",function(e){"use strict";e.put("app/auth/services/hotdesk/dialog.html",'<md-dialog aria-label="Telephone">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="LOGIN.TELEPHONES">Telephones</span>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-select ng-model="vm.name" placeholder="Select a telephone">\n        <md-option value="{{telephone.name}}" ng-repeat="telephone in vm.telephones.rows">{{telephone.fullname}}</md-option>\n      </md-select>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.closeDialog(vm.name)" class="send-button md-accent md-raised" aria-label="call" ng-disabled="!vm.name">\n        <span translate="LOGIN.SELECT">SELECT</span>\n      </md-button>\n      \x3c!-- <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n                <span translate="LOGIN.CANCEL">Cancel</span>\n            </md-button> --\x3e\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/dialogs/advanced-search/dialog.html",'<md-dialog class="advanced-search-dialog" aria-label="Advanced search" flex="70" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="advanced-search-dialog-header" ng-class="{{ \'vm.toolbarColor\' }} + \'-bg\'">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="DASHBOARDS.ADVANCED_SEARCH"></span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.minimize()">\n            <md-icon class="no-margin" md-font-icon="icon-window-minimize" aria-label="Minimize dialog"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.close()">\n            <md-icon class="no-margin" md-font-icon="icon-window-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <ms-advanced-search options="vm.searchOptions" clear-filter="vm.clearConditions()"></ms-advanced-search>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button class="md-primary md-raised" aria-label="Clear" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.CLEAR" translate-attr-aria-label="DASHBOARDS.CLEAR" ng-click="vm.clearConditions()"></md-button>\n      <md-button class="md-primary md-accent md-raised" aria-label="Apply" ng-disabled="vm.searchOptions.conditions.length === 0" translate="DASHBOARDS.APPLY" translate-attr-aria-label="DASHBOARDS.APPLY" ng-click="vm.applyFilter()"></md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-advanced-search/ms-advanced-search.html",'<div layout="column" class="advanced-search-container" flex>\n  <div layout-margin>\n    <md-radio-group ng-model="vm.options.matchType" class="md-primary" layout="row">\n      <md-radio-button value="$and" class="md-primary">{{ \'DASHBOARDS.MEET_ALL_CONDITIONS\' | translate }}\n      </md-radio-button>\n      <md-radio-button value="$or">{{ \'DASHBOARDS.MEET_ANY_CONDITIONS\' | translate }}</md-radio-button>\n    </md-radio-group>\n  </div>\n\n  \x3c!-- ACTIVE CONDITIONS --\x3e\n  <div layout="row" ng-if="vm.options.conditions.length > 0" class="advanced-search-conditions">\n    <md-list>\n      <md-list-item>\n        <md-chips ng-model="vm.options.conditions" class="advanced-search-chips" readonly="true" md-removable="true" md-on-remove="vm.removeCondition()">\n          <md-chip-template ms-chip-color="{{ $chip.style }}">\n            <md-menu md-offset="50 0" ng-class="{\'no-click\': vm.pendingCondition}">\n              <span>\n                <p class="filter-text">{{ $chip.name }}</p>\n                <em ng-show="$chip.operator" class="text-lowercase">{{ $chip.operator }}</em>\n                <strong>{{ $chip.displayValue }}</strong>\n                <em ng-show="$chip.displayEndValue" class="text-lowercase">{{ \'DASHBOARDS.AND\' | translate }}</em>\n                <strong>{{ $chip.displayEndValue }}</strong>\n              </span>\n              <md-menu-content width=2 class="md-dense">\n                <md-menu-item ng-hide="$chip.disabled">\n                  <md-button ng-click="vm.editCondition($chip)">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.setConditionStatus($chip)">\n                    {{ $chip.disabled ? \'Enable\' : \'Disable\' }}\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </md-chip-template>\n          <button type="button" md-chip-remove class="md-primary remove-filter">\n            <md-icon md-font-icon="icon-cancel" aria-label="Remove Filter"></md-icon>\n          </button>\n        </md-chips>\n      </md-list-item>\n    </md-list>\n  </div>\n\n  \x3c!-- FILTERS --\x3e\n  <div layout="row">\n    <div layout="row" class="advanced-search-bar" layout-margin flex>\n      \x3c!-- FIELD --\x3e\n      <md-input-container flex="35">\n        <md-icon md-font-icon="icon-filter-variant"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedField" ng-change="vm.onFieldChange()" placeholder="{{ \'DASHBOARDS.SELECT_FIELD\' | translate }}" aria-label="Field">\n          <md-option ng-value="field" ng-repeat="field in vm.options.fields">{{ field.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- OPERATOR --\x3e\n      <md-input-container flex="30">\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.selectedOperator" ng-change="vm.onOperatorChange(oldValue)" ng-focus="oldValue=vm.selectedOperator" md-selected-text="vm.selectedOperator ? (\'DASHBOARDS.\' + vm.selectedOperator.translate | translate) : (\'DASHBOARDS.SELECT_OPERATOR\' | translate)" ng-disabled="!vm.selectedField" aria-label="Operator">\n          <md-option ng-value="operator" ng-repeat="operator in vm.availableOperators" ng-selected="vm.autoSelectOperator">\n            <div layout="row" class="operators-list">\n              <span class="operator-symbol">\n                {{ operator.symbol }}\n              </span>\n              <span>\n                {{ \'DASHBOARDS.\' + operator.translate | translate }}\n              </span>\n            </div>\n          </md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TEXT INPUT --\x3e\n      <md-input-container ng-if="!vm.selectedField.type || vm.selectedField.type === \'text\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n      \x3c!-- NUMERIC INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'number\'" flex layout="row" layout-margin class="no-margin">\n        <md-input-container class="no-errors" flex>\n          <md-icon md-font-icon="icon-numeric"></md-icon>\n          <input type="number" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" min="0" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_VALUE\' : \'DASHBOARDS.VALUE\' | translate }}">\n        </md-input-container>\n        <md-input-container class="no-errors" ng-if="vm.selectedOperator.type === \'$between\'" ng-class="{\'md-input-invalid\': !vm.isValidRange}" flex>\n          <md-icon md-font-icon=" icon-numeric">\n          </md-icon>\n          <input class="md-input" type="number" aria-label="Value" ng-model="vm.endRangeValue" ng-change="vm.checkRange()" ng-disabled="!vm.value" min="vm.value" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.ENDING_VALUE\' | translate }}">\n          <div ng-if="!vm.isValidRange" class="md-input-message-animation md-input-messages-animation">\n            {{ (\'DASHBOARDS.VALUE_RANGE_CHECK\' | translate) + \' \' + vm.value }}\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- SELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'select\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- MULTISELECT --\x3e\n      <md-input-container ng-if="vm.selectedField.type === \'multiselect\'" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-select class="font-size-12" multiple ng-model="vm.value" md-on-open="vm.getValues()" ng-change="vm.onValueChange()" ng-model-options="{trackBy: \'$value.id\'}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}" aria-label="Value">\n          <md-option ng-value="item" ng-repeat="item in vm.selectedField.values">{{item.name}}\n          </md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- DATE INPUT --\x3e\n      <div ng-if="vm.selectedField.type === \'date\'" flex layout="row">\n        <mdp-date-picker mdp-open-on-click ng-model="vm.value" ng-change="vm.onValueChange()" mdp-max-date="vm.maxDateRange" mdp-placeholder="{{ vm.selectedOperator.type === \'$between\' ? \'DASHBOARDS.STARTING_DATE\' : \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n        <mdp-date-picker mdp-open-on-click ng-if="vm.selectedOperator.type === \'$between\'" ng-change="vm.checkRange()" ng-model="vm.endRangeValue" mdp-min-date="vm.minDateRange" mdp-disabled="!vm.value" mdp-placeholder="{{ \'DASHBOARDS.ENDING_DATE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n        </mdp-date-picker>\n      </div>\n      \x3c!-- AUTOCOMPLETE --\x3e\n      <div layout="row" layout-align="start start" ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type != \'$substring\'" class=" autocomplete-input" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <md-autocomplete md-selected-item="vm.value" md-selected-item-change="vm.onValueChange()" md-items="item in vm.getValues()" md-search-text="vm.searchText" md-item-text="item.displayValue" md-min-length="4" md-no-cache="true" md-floating-label="{{ \'DASHBOARDS.VALUE\' | translate }}" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" flex>\n          <md-item-template>\n            <span md-highlight-text="vm.searchText" md-highlight-flags="i">{{item.displayValue}}</span>\n          </md-item-template>\n        </md-autocomplete>\n      </div>\n      <md-input-container ng-if="vm.selectedField.type === \'autocomplete\' && vm.selectedOperator.type === \'$substring\'" class="no-errors" flex>\n        <md-icon md-font-icon="icon-format-text"></md-icon>\n        <input type="text" aria-label="Value" ng-model="vm.value" ng-change="vm.onValueChange()" ng-disabled="!vm.selectedField" ng-keydown="$event.keyCode == 13 && vm.isValidCondition && vm.handleKeyboardAction()" placeholder="{{ \'DASHBOARDS.VALUE\' | translate }}">\n      </md-input-container>\n    </div>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="!vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Add filter" ng-click="vm.addCondition()" translate-attr-aria-label="DASHBOARDS.ADD">\n      <md-icon md-font-icon="icon-plus"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini mt-20" ng-if="vm.pendingCondition" ng-disabled="!vm.isValidCondition" aria-label="Update filter" ng-click="vm.updateCondition()" translate-attr-aria-label="DASHBOARDS.UPDATE">\n      <md-icon md-font-icon="icon-check"></md-icon>\n    </md-button>\n    <md-button class="md-fab md-mini md-primary mt-20" ng-if="vm.pendingCondition" aria-label="Cancel filter update" ng-click="vm.cancelUpdateCondition()" translate-attr-aria-label="DASHBOARDS.CANCEL">\n      <md-icon md-font-icon="icon-close"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-1/template-1.html",'<div class="template-1">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-10/template-10.html",'<div class="template-10 p-16">\n  <div class="pb-16" layout="row" layout-align="space-between center">\n    <div class="info">\n      <div class="title secondary-text" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h2" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="media ml-16">\n      <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n    </div>\n  </div>\n\n  <div class="text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-2/template-2.html",'<div class="template-2">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="text p-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-3/template-3.html",'<div class="template-3 p-16 teal-bg white-fg" layout="row" layout-align="space-between">\n  <div layout="column" layout-align="space-between">\n    <div class="info">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h3 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n    </div>\n\n    <div class="cta">\n      <md-button class="m-0">{{card.cta}}</md-button>\n    </div>\n  </div>\n\n  <div class="media pl-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-4/template-4.html",'<div class="template-4">\n  <div class="info white-fg ph-16 pv-24">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-5/template-5.html",'<div class="template-5 p-16" layout="row" layout-align="space-between start">\n  <div class="info">\n    <div class="title secondary-text" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="event h2" ng-if="card.event">\n      {{card.event}}\n    </div>\n  </div>\n\n  <div class="media ml-16">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-6/template-6.html",'<div class="template-6">\n  <div class="content pv-24 ph-16">\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="title h2" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="text pt-8" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-7/template-7.html",'<div class="template-7" layout="row" layout-align="space-between">\n  <div class="info" layout="column" layout-align="space-between" layout-fill flex>\n    <div class="p-16">\n      <div class="title h1" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle h4 secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n      <div class="text h4 pt-8" ng-if="card.text">\n        {{card.text}}\n      </div>\n    </div>\n\n    <div>\n      <md-divider></md-divider>\n      <div class="p-8" layout="row">\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n        <md-icon md-font-icon="icon-star-outline" class="mh-5"></md-icon>\n      </div>\n    </div>\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-8/template-8.html",'<div class="template-8">\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="content pv-24 ph-16">\n    <div class="title h1" ng-if="card.title">\n      {{card.title}}\n    </div>\n\n    <div class="subtitle secondary-text" ng-if="card.subtitle">\n      {{card.subtitle}}\n    </div>\n\n    <div class="buttons pt-16">\n      <md-button class="m-0">{{card.button1}}</md-button>\n      <md-button class="m-0 md-accent">{{card.button2}}</md-button>\n    </div>\n\n    <div class="text pt-16" ng-if="card.text">\n      {{card.text}}\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-card/templates/template-9/template-9.html",'<div class="template-9">\n  <div class="header p-16" layout="row" layout-align="start center">\n    <div ng-if="card.avatar">\n      <img class="avatar mr-16" ng-src="{{card.avatar.src}}" alt="{{card.avatar.alt}}">\n    </div>\n\n    <div class="info">\n      <div class="title" ng-if="card.title">\n        {{card.title}}\n      </div>\n\n      <div class="subtitle secondary-text" ng-if="card.subtitle">\n        {{card.subtitle}}\n      </div>\n\n    </div>\n  </div>\n\n  <div class="text ph-16 pb-16" ng-if="card.text">\n    {{card.text}}\n  </div>\n\n  <div class="media">\n    <img class="image" ng-src="{{card.media.image.src}}" alt="{{card.media.image.alt}}" ng-show="card.media.image">\n  </div>\n\n  <div class="buttons m-8">\n    <md-button class="md-icon-button mr-16" aria-label="Favorite">\n      <md-icon md-font-icon="icon-heart-outline" class="s24"></md-icon>\n    </md-button>\n    <md-button class="md-icon-button" aria-label="Share">\n      <md-icon md-font-icon="icon-share" class="s24"></md-icon>\n    </md-button>\n  </div>\n\n</div>'),e.put("app/core/directives/ms-click-to-call/ms-click-to-call.html",'<section ng-if="type !== \'button\'">\n  <span ng-if="!showMenu()" privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n  <md-menu ng-if="showMenu()">\n    <a aria-label="Target" ng-click="$mdOpenMenu($event)">\n      <span ng-if="prefix" privacy="{{ privacy }}" ng-cloak>{{prefix}}-</span>\n      <span privacy="{{ privacy }}" ng-cloak>{{target}}</span>\n    </a>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>\n<section ng-if="type === \'button\'">\n  <md-button ng-if="!showMenu()" ng-disabled="true" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" aria-label="NEW CALL">\n    <md-icon md-font-icon="icon-phone"></md-icon>\n  </md-button>\n  <md-menu ng-if="showMenu()">\n    <md-button class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW CALL" ng-click="$mdOpenMenu($event)" aria-label="NEW CALL">\n      <md-icon md-font-icon="icon-phone"></md-icon>\n    </md-button>\n    <md-menu-content width="2">\n      <md-menu-item>\n        <md-button ng-click="call(prefix ? prefix + target : target)">\n          {{\'DASHBOARDS.CALL_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n      <md-menu-item>\n        <md-button ng-click="transfer(target)">\n          {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} (<span privacy="{{ privacy }}" ng-cloak>{{prefix ? prefix + \'-\' + target : target}}</span>)\n        </md-button>\n      </md-menu-item>\n    </md-menu-content>\n  </md-menu>\n</section>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),e.put("app/core/directives/ms-dual-multiselect/ms-dual-multiselect.html",'<div ng-cloak layout-gt-sm="row" layout="column">\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="query" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || vm.addDisabled}" ng-disabled="vm.readOnly || vm.addDisabled" ng-repeat="item in availableItems = (vm.options.items | filter: query) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, false)">\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-icon ng-hide="vm.readOnly && !vm.addDisabled" ng-class="{\'add-disabled\': vm.addDisabled}" md-font-icon="icon-arrow-right-bold" aria-label="swap">\n          </md-icon>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <span class="h4" flex>{{vm.options.labelAll || \'All Items\'}} ({{availableItems.length}})</span>\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" ng-class="{\'add-disabled\': vm.addDisabled}" ng-disabled="vm.addDisabled" md-font-icon="icon-chevron-double-right" aria-label="swap" ng-click="vm.transfer(vm.options.items, vm.options.selectedItems, -1, false)"></md-icon>\n    </div>\n  </div>\n\n  <div flex="10" layout="row" layout-align="center center">\n    <md-icon md-font-icon="icon-swap-horizontal" aria-label="swap"></md-icon>\n  </div>\n\n  <div flex-gt-sm="50" flex="45">\n    <md-input-container class="md-icon-float md-block margin-0">\n      <md-icon md-font-icon="icon-magnify" aria-label="swap"></md-icon>\n      <input ng-model="selectedQuery" type="text" placeholder="{{ \'STAFF.PERMISSIONS_PLACEHOLDER_SEARCH\' | translate }}">\n    </md-input-container>\n    <md-content class="border h-300">\n      <md-list class="md-dense no-padding" layout-fill layout-align="center center">\n        <md-list-item class="md-3-line" ng-class="{\'read-only-mode\': vm.readOnly || !item.isValid}" ng-disabled="vm.readOnly" ng-repeat="item in associatedItems = (vm.options.selectedItems | filter: selectedQuery) | orderBy: vm.options.orderBy" ng-click="vm.canTransfer(item, vm.options, true)">\n          <md-icon ng-class="{\'hidden\': vm.readOnly || !item.isValid}" md-font-icon="icon-arrow-left-bold" aria-label="swap"></md-icon>\n          <div class="md-list-item-text" layout="column">\n            <h3 ng-if="vm.options.line1">{{vm.getLine(item, vm.options.line1)}}</h3>\n            <h4 ng-if="vm.options.line2">{{vm.getLine(item, vm.options.line2)}}</h4>\n            <p ng-if="vm.options.line3">{{vm.getLine(item, vm.options.line3)}}</p>\n            <p class="ms-dual-multiselect-line-xs" ng-if="vm.options.line4">{{vm.getLine(item, vm.options.line4)}}\n            </p>\n          </div>\n          <md-divider></md-divider>\n        </md-list-item>\n      </md-list>\n    </md-content>\n    <div class="margin-10" layout="row">\n      <md-icon ng-hide="vm.options.showSelectAndDeselectAll === false || vm.readOnly" md-font-icon="icon-chevron-double-left" aria-label="swap" ng-click="vm.transfer(vm.options.selectedItems, vm.options.items, -1, true)"></md-icon>\n      <span class="h4 text-right" flex>{{vm.options.labelSelected || \'Selected Items\'}}\n        ({{associatedItems.length}})</span>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-font-family/ms-font-family.html",'<md-select ng-model="ngModel" class="no-margin">\n  <md-option ng-repeat="font in fonts" ng-value="font.value"><span ng-style="{\'font-family\': font.value}">{{font.option}}</span>\n  </md-option>\n</md-select>'),e.put("app/core/directives/ms-info-bar/ms-info-bar.html",'<div id="ms-info-bar" layout="row" layout-align="start center" flex>\n  <div id="ms-info-bar-message" ng-transclude flex></div>\n  <md-button id="ms-info-bar-close" class="md-icon-button" aria-label="Close" ng-click="removeInfoBar()">\n    <md-icon md-font-icon="icon-close s20"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-material-color-picker/ms-material-color-picker.html",'<md-menu md-position-mode="target-right target">\n\n  <div ng-click="$mdOpenMenu($event)">\n    <ms-color-picker-button>\n      <md-button aria-label="Row Color" md-menu-origin ng-click="$mdOpenMenu($event)" ng-class="vm.selectedColor.class">\n\n        <span ng-show="vm.selectedColor.palette">\n          {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n        </span>\n        <span ng-show="!vm.selectedColor.palette">\n          Select Color\n        </span>\n      </md-button>\n    </ms-color-picker-button>\n  </div>\n\n  <md-menu-content class="ms-material-color-picker-menu-content" layout-column>\n\n    <header ng-class="vm.selectedColor.class || \'md-accent-bg\'" class="md-whiteframe-4dp" layout="row" layout-align="space-between center">\n      <md-button md-prevent-menu-close ng-click="vm.activateHueSelection(false,false)" class="md-icon-button" ng-class="{\'hidden\':!vm.selectedPalette}" aria-label="Palette">\n        <md-icon md-font-icon="icon-arrow-left" class="s20"></md-icon>\n      </md-button>\n\n      <span ng-if="vm.selectedColor.palette">\n        {{vm.selectedColor.palette}} {{vm.selectedColor.hue}}\n      </span>\n\n      <span ng-if="!vm.selectedColor.palette">\n        Select Color\n      </span>\n\n      <md-button class="remove-color-button md-icon-button" ng-click="vm.removeColor()" aria-label="Remove Color">\n        <md-icon md-font-icon="icon-delete" class="s20"></md-icon>\n      </md-button>\n    </header>\n\n    <div class="colors">\n      <div ng-show="!vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+palette+\'-500-bg\'" ng-repeat="(palette, hues) in vm.palettes" ng-click="vm.activateHueSelection(palette,hues)" layout="row" layout-align="start end" md-prevent-menu-close md-ink-ripple>\n          <span class="label">\n            {{palette}}\n          </span>\n        </div>\n      </div>\n\n      <div ng-show="vm.selectedPalette" layout="row" layout-wrap>\n        <div class="color" ng-class="\'md-\'+vm.selectedPalette+\'-\'+hue+\'-bg\'" ng-repeat="(hue, values) in vm.selectedHues" ng-click="vm.selectColor(vm.selectedPalette,hue)" layout="row" layout-align="start end" md-ink-ripple>\n          <span class="label">\n            {{hue}}\n          </span>\n          <i ng-if="vm.selectedPalette == vm.selectedColor.palette && hue == vm.selectedColor.hue" class="s16 icon-check">\n          </i>\n        </div>\n      </div>\n\n    </div>\n\n  </md-menu-content>\n</md-menu>'),e.put("app/core/directives/ms-navigation/templates/horizontal.html",'<div class="navigation-toggle" hide-gt-sm>\n  <md-button class="md-icon-button" ng-click="vm.toggleHorizontalMobileMenu()" aria-label="Toggle Mobile Navigation">\n    <md-icon md-font-icon="icon-menu"></md-icon>\n  </md-button>\n</div>\n\n<ul class="horizontal">\n  <li ng-repeat="node in vm.navigation" ms-navigation-horizontal-node="node" ng-class="{\'has-children\': vm.hasChildren}" ng-include="\'navigation-horizontal-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested horizontal navigation template --\x3e\n<script type="text/ng-template" id="navigation-horizontal-nested.html">\n\n  <div ms-navigation-horizontal-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-horizontal-button" ng-if="!node.uisref && node.title"\n             ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-horizontal-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg"\n           ng-class="{\'active md-accent-bg md-accent-fg\': vm.isActive}"\n           ng-if="node.uisref && node.title">\n            <i class="icon s18 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg" style="background: {{node.badge.color}}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s18 arrow" ng-if="vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-horizontal-node="node"\n            ng-class="{\'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-horizontal-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("app/core/directives/ms-navigation/templates/vertical.html",'<ul>\n  <li ng-repeat="node in vm.navigation" ms-navigation-node="node" ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}" ng-include="\'navigation-nested.html\'"></li>\n</ul>\n\n\x3c!-- Nested navigation template --\x3e\n<script type="text/ng-template" id="navigation-nested.html">\n\n  <div id="{{ node.id }}" ms-navigation-item layout="row" ng-if="!vm.isHidden()">\n\n        <div class="ms-navigation-button" ng-if="!node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </div>\n\n        <a class="ms-navigation-button" ui-sref="{{node.uisref}}" ui-sref-active="active md-accent-bg" ng-if="node.uisref && node.title">\n            <i class="icon s16 {{node.icon}}" ng-if="node.icon"></i>\n            <span class="title" translate="{{node.translate}}" flex>{{node.title}}</span>\n            <span class="badge white-fg margin-right-20" ng-style="{\'background\': node.badge.color}" ng-if="node.badge">{{node.badge.content}}</span>\n            <i class="icon-chevron-right s16 arrow" ng-if="vm.collapsable && vm.hasChildren"></i>\n        </a>\n\n    </div>\n\n    <ul ng-if="vm.hasChildren && !vm.isHidden()">\n        <li ng-repeat="node in node.children" ms-navigation-node="node"\n            ng-class="{\'collapsed\': vm.collapsed, \'has-children\': vm.hasChildren}"\n            ng-include="\'navigation-nested.html\'"></li>\n    </ul>\n\n<\/script>\n\x3c!-- / Nested navigation template --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-dialpad.html",'\x3c!-- Dialpad --\x3e\n<md-content ng-if="vm_pb.showDialpad" class="num-pad" layout="column">\n  <section layout="row" layout-align="start center">\n    <span><img class="num-pad-logo" layout-padding src="/api/settings/1/logo" alt="logo" /></span>\n    <span class="md-subhead">Dialpad</span>\n    <div layout="row" layout-align="end center" flex>\n      <md-button class="md-icon-button" ng-click="vm_pb.closeDialpad()">\n        <md-icon md-font-icon="icon-close"></md-icon>\n      </md-button>\n    </div>\n  </section>\n  <md-divider></md-divider>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 1, l: []}, {n: 2, l: [\'a\', \'b\', \'c\']}, {n: 3, l: [\'d\', \'e\', \'f\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 4, l: [\'g\', \'h\', \'i\']}, {n: 5, l: [\'j\', \'k\', \'l\']}, {n: 6, l: [\'m\', \'n\', \'o\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: 7, l: [\'p\', \'q\', \'r\', \'s\']}, {n: 8, l: [\'t\', \'u\', \'v\']}, {n: 9, l: [\'w\', \'x\', \'y\', \'z\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n  </section>\n  <section layout="row">\n    <div class="span4" ng-repeat="item in ::[{n: \'*\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: 0, l: [\'+\']}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num">\n        <div class="txt">\n          {{item.n}} <span class="small">\n            <p>\n              <span ng-repeat="l in ::item.l">{{l | uppercase}}</span>\n            </p>\n          </span>\n        </div>\n      </div>\n    </div>\n    <div class="span4" ng-repeat="item in ::[{n: \'#\', l: []}]" ng-click="vm_pb.type(item.n, true)">\n      <div class="num" layout="column" layout-align="center center">\n        <div class="txt" layout="column" layout-align="center center">\n          {{item.n}}\n        </div>\n      </div>\n    </div>\n  </section>\n</md-content>\n\x3c!-- Dialpad --\x3e\n\n\x3c!-- Input&Media Area --\x3e\n<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="center center">\n    \x3c!-- START Ringing Tone--\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Ringing" ng-click="vm_pb.conf.ringingMute = !vm_pb.conf.ringingMute; vm_pb.initDevice(\'ringing\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.ringingMute ? \'icon-bell-off\' : \'icon-bell-ring\'}}" class="icon s14" ng-class="vm_pb.conf.ringingMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.RINGING">Ringing</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Ringing Tone --\x3e\n\n    \x3c!-- START Speaker --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Speaker" ng-click="vm_pb.conf.speakerMute = !vm_pb.conf.speakerMute; vm_pb.initDevice(\'speaker\', true)" ng-disabled="!vm_pb.registered">\n      <md-icon md-font-icon="{{vm_pb.conf.speakerMute ? \'icon-volume-off\' : \'icon-volume\'}}" class="icon s14" ng-class="vm_pb.conf.speakerMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.SPEAKER">Speaker</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Speaker --\x3e\n\n    \x3c!-- START Microphone --\x3e\n    <md-button ng-disabled="(!vm_pb.registered || vm_pb.sessions.length==0)?true:false" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Microphone" ng-click="vm_pb.conf.microphoneMute = !vm_pb.conf.microphoneMute; vm_pb.initDevice(\'microphone\', true)">\n      <md-icon md-font-icon="{{vm_pb.conf.microphoneMute ? \'icon-microphone-off\' : \'icon-microphone\'}}" class="icon s14" ng-class="vm_pb.conf.microphoneMute ? \'red-fg\' : \'grey-fg\'">\n        <md-tooltip><span translate="TOOLBAR.MICROPHONE">Microphone</span></md-tooltip>\n      </md-icon>\n    </md-button>\n    \x3c!-- END Microphone --\x3e\n\n    \x3c!-- START Registered --\x3e\n    <span>\n      <span class="quantity-indicator md-red-500-bg" ng-class="vm_pb.registered ? \'md-green-500-bg\' : \'md-red-500-bg\'"></span>\n      <md-tooltip><span>{{vm_pb.conf.license ? (vm_pb.registered ? \'TOOLBAR.REGISTERED\' : \'TOOLBAR.NOT_REGISTERED\') : \'TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD\' | translate}}\n          <timer ng-if="vm_pb.registered"></timer>\n        </span>\n      </md-tooltip>\n    </span>\n    \x3c!-- END Registered --\x3e\n  </div>\n  <div layout="column" layout-align="center start">\n    <div layout="row" layout-align="start center">\n      \x3c!-- START Target --\x3e\n      <angucomplete-alt id="ms-target-wrap" pause="10" local-data="vm_pb.calls" search-fields="target" title-field="target" minlength="0" input-class="input-number" disable-input="!vm_pb.registered" match-class="highlight" template-url="assets/ms-phonebar/ms-phonebar-input.html" input-changed="vm_pb.targetChanged" selected-object="vm_pb.targetSelected" clear-selected="true" ng-keypress="vm_pb.typeWrapper($event)" focus-first="true" disable-autocomplete="vm_pb.currentUser.privacyEnabled"></angucomplete-alt>\n      \x3c!-- END Target --\x3e\n\n      \x3c!-- Auto Answer --\x3e\n      <div ng-if="vm_pb.conf.autoAnswer" class="red-fg" style="padding-left: 10px;">\n        <span class="font-size-20">A<span class="font-size-16">A</span></span>\n      </div>\n      \x3c!-- Auto Answer --\x3e\n\n      <md-button class="md-fab md-mini white-bg width-30 height-30" aria-label="Dialpad" ng-click="vm_pb.toggleDialpad()" ng-disabled="!vm_pb.registered">\n        <md-icon md-font-icon="icon-apps" class="icon grey-fg s16"></md-icon>\n      </md-button>\n      <md-button ng-if="vm_pb.target" class="md-fab md-mini white-bg width-25 height-25" aria-label="Call" style="margin-left: 0px;" ng-click="vm_pb.call()">\n        <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n\x3c!-- Input&Media Area --\x3e\n\n\x3c!-- START 3WC --\x3e\n<md-button ng-if="vm_pb.canGoInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="3Way" ng-click="vm_pb.start3WayConf();  $event.stopPropagation();">\n  <md-icon md-font-icon="icon-account-multiple-plus" class="icon orange-fg s14"></md-icon>\n  <md-tooltip><span translate="TOOLBAR.CONFERENCE">Conference</span></md-tooltip>\n</md-button>\n\x3c!-- END 3Way --\x3e\n\n\n<div class="toolbar-separator"></div>\n\n\x3c!-- Sessions Area --\x3e\n<div class="sessions" layout="row" layout-align="start center" flex>\n  <div layout="row" layout-align="center center" ng-if="!vm_pb.conf.license">\n    <md-icon md-font-icon="icon-account-alert" class="icon s36 red-fg"></md-icon>\n    <span layout-margin translate="TOOLBAR.WEBRTC_LICENSE_NOT_ENABELD"></span>\n  </div>\n\n  <div id="{{\'div_session_\'+session.id.substr(0,32)}}" ng-repeat="session in vm_pb.sessions" class="session" layout="row" ng-click="(vm_pb.sessions.length > 1) && vm_pb.selectSession(session)">\n    <md-button ng-if="vm_pb.conf.recording && session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Record" ng-click="vm_pb.record(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-radiobox-marked" class="icon s14" ng-class="session.monitor ? \'red-fg\' : \'grey-fg\'"></md-icon>\n    </md-button>\n    <div layout="column" layout-align="center start">\n      <span class="session-info">\n        <span ng-if="session.user == session.name" privacy ng-cloak>{{session.user}}</span>\n        <span ng-if="session.user != session.name" privacy ng-cloak>{{session.name}}</span> <span ng-if="session.user != session.name" privacy ng-cloak>{{session.user}}</span>\n      </span>\n      <span class="session-info" layout="row" layout="start center">\n        <timer></timer>\n      </span>\n    </div>\n\n    \x3c!-- START Answer --\x3e\n    <md-button ng-if="session.incoming && !session.confirmed" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Anser" ng-click="vm_pb.answer(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone" class="icon green-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Answer --\x3e\n\n    \x3c!-- START Hangup --\x3e\n    <md-button class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Terminate" ng-click="vm_pb.terminate(session); $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-hangup" class="icon red-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hangup --\x3e\n\n    \x3c!-- START Hold/Unhold --\x3e\n    <md-button ng-if="session.confirmed && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Hold" ng-click="(session.localHold ? vm_pb.unhold(session) : vm_pb.hold(session)); $event.stopPropagation();">\n      <md-icon md-font-icon="{{session.localHold ? \'icon-play\' : \'icon-pause\'}}" class="icon grey-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Hold/Unhold --\x3e\n\n    \x3c!-- START Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length == 1 && !vm_pb.isInConference" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer" ng-click="vm_pb.refer(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END transfer --\x3e\n\n    \x3c!-- START Attended Transfer --\x3e\n    <md-button ng-if="session.confirmed && !session.localHold && vm_pb.sessions.length>1" class="md-fab md-mini white-bg width-25 height-25 margin-5" aria-label="Refer Attended" ng-click="vm_pb.referAttended(session);  $event.stopPropagation();">\n      <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s12"></md-icon>\n    </md-button>\n    \x3c!-- END Attended Transfer --\x3e\n  </div>\n</div>\n\x3c!-- Sessions Area --\x3e'),e.put("assets/ms-phonebar/ms-phonebar-input.html",'<div class="angucomplete-holder" ng-class="{\'angucomplete-dropdown-visible\': showDropdown}">\n  <input id="ms-target" ng-model="searchStr" ng-disabled="disableInput" type="text" placeholder="{{placeholder}}" ng-focus="onFocusHandler()" class="{{inputClass}}" ng-focus="resetHideResults()" ng-blur="hideResults($event)" autocapitalize="off" autocorrect="off" autocomplete="off" ng-change="inputChangeHandler(searchStr)" />\n  <div class="angucomplete-dropdown" ng-show="showDropdown && !(!searching && (!results || results.length == 0))">\n    <div class="angucomplete-row" ng-repeat="result in results" ng-click="selectResult(result)" ng-mouseenter="hoverRow($index)" ng-class="{\'angucomplete-selected-row\': $index == currentIndex}">\n      <div layout="row" layout-align="start center">\n        <md-icon md-font-icon="{{result.originalObject.inbound ? \'icon-arrow-bottom-left\' : \'icon-arrow-top-right\'}}" class="icon no-margin s22"></md-icon>\n        <span style="margin-left: 8px;">({{result.originalObject.time}}) - <span class="angucomplete-title" ng-if="matchClass" ng-bind-html="result.title" privacy ng-cloak></span></span>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("assets/ms-phonebar/ms-phonebar.html",'<div layout="row" layout-align="start center" flex>\n  \x3c!-- Audio stream --\x3e\n  <audio id="local-audio" autoplay hidden=true></audio>\n  <audio id="remote-audio" autoplay hidden=true></audio>\n  \x3c!-- Audio stream --\x3e\n\n  \x3c!-- WebRtc PhoneBar --\x3e\n  <div class="phonebar-container" ng-include="\'assets/ms-phonebar/ms-phonebar-dialpad.html\'" layout="row" layout-align="start center" flex></div>\n  \x3c!-- WebRtc PhoneBar --\x3e\n</div>'),e.put("assets/ms-phonebar/prefix/dialog.html",'<md-dialog aria-label="Prefix">\n  <form ng-cloak ng-keypress="vm.keyPress($event)">\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.PREFIXES">Prefixes</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog(-1)">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-radio-group ng-model="vm.prefix">\n        <md-radio-button ng-repeat="prefix in vm.prefixes.rows" value="{{prefix.prefix}}" class="md-primary">{{prefix.name}}</md-radio-button>\n        <md-radio-button ng-if="!vm.required" ng-value="null" class="md-primary">no prefix</md-radio-button>\n      </md-radio-group>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.call()" class="send-button md-accent md-raised" aria-label="call" md-autofocus ng-disabled="!vm.prefix && vm.required">\n        <span translate="TOOLBAR.CALL">CALL</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog(-1)" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/record/dialog.html",'<md-dialog aria-label="Recording" ng-init="vm.onInit()">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.RECORDING">Recording</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding">\n            <md-icon class="no-margin" md-font-icon="icon-plus" aria-label="Add" ng-click="vm.addRecording()"></md-icon>\n          </md-button>\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-table-container>\n      <table md-table layout-padding>\n        <thead md-head>\n          <tr md-row>\n            <th md-column><span translate="TOOLBAR.FILENAME">File name</span></th>\n            <th md-column><span translate="TOOLBAR.STATUS">Status</span></th>\n            <th md-column><span translate="TOOLBAR.ACTIONS">Actions</span></th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm.session.monitors.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="TOOLBAR.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="monitor in vm.session.monitors">\n            <td md-cell>{{monitor.filename}}</td>\n            <td md-cell class="no-padding">\n              <md-icon md-font-icon="icon-radiobox-marked" class="icon s16" ng-class="(monitor.status == \'rec\') ? \'red-fg ms-blink\' : \'grey-fg\'"></md-icon>\n            </td>\n            <td md-cell class="no-padding">\n              <md-button class="md-fab md-mini white-bg width-35 height-35 margin-5" aria-label="Record" ng-click="(monitor.status == \'rec\') ? vm.stop(monitor) : vm.start(monitor)">\n'+"                <md-icon md-font-icon=\"{{monitor.status == 'rec' ? 'icon-stop' : 'icon-play'}}\" class=\"icon s16\" ng-class=\"monitor.status == 'rec' ? 'grey-fg' : 'red-fg'\"></md-icon>\n              </md-button>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n  </form>\n</md-dialog>"),e.put("assets/ms-phonebar/referAttended/dialog.html",'<md-dialog aria-label="Transfer">\n  <form ng-cloak>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div flex>\n          <span class="title" translate="TOOLBAR.ATTENDED_TRANSFER">Transfer</span>\n        </div>\n        <div layout="row" layout-align="end center">\n          <md-button class="md-icon-button no-margin no-padding" ng-click="vm.closeDialog()">\n            <md-icon class="no-margin" md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <label translate="TOOLBAR.TARGET">Target</label>\n      <md-input-container class="md-block">\n        <md-select ng-model="vm.target">\n          <md-option ng-repeat="session in vm.sessions" ng-value="session.user">\n            {{ session.name }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row">\n      <md-button ng-click="vm.transfer()" class="send-button md-accent md-raised" aria-label="transfer" ng-disabled="!vm.target && !vm.sessionId">\n        <span translate="TOOLBAR.TRANSFER">TRANSFER</span>\n      </md-button>\n      <md-button ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="cancel">\n        <span translate="TOOLBAR.CANCEL">Cancel</span>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("assets/ms-phonebar/settings/settings.html",'<md-dialog class="md-phonebar-dialog" aria-label="{{vm.name}}">\n  <form name="settingsForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="TOOLBAR.SETTINGS">Settings</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content class="no-padding">\n      <md-tabs md-no-pagination md-stretch-tabs="always">\n        <md-tab label="{{ \'TOOLBAR.PROFILE\' | translate}}">\n          <md-content layout-padding layout="column">\n            <span><span translate="TOOLBAR.FULLNAME">Fullname</span>: {{vm.conf.fullname}}</span>\n            <span><span translate="TOOLBAR.NAME">Name</span>: {{vm.conf.name}}</span>\n            <span><span translate="TOOLBAR.INTERNAL">Internal</span>: {{vm.conf.internal}}</span>\n            <span><span translate="TOOLBAR.BROWSER">Browser</span>: {{vm.conf.browserName}} {{vm.conf.browserVersion}}</span>\n            <span><span translate="TOOLBAR.OS">OS</span>: {{vm.conf.osName}} {{vm.conf.osVersion}}</span>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.SERVICES\' | translate}}">\n          <md-content layout-padding>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.conf.autoAnswer" aria-label="Auto Answer">\n                <span translate="TOOLBAR.AUTOANSWER">Auto Answer</span>\n                <span>{{ vm.conf.autoAnswerDelay }} [s]</span>\n              </md-switch>\n            </md-input-container>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.AUDIO\' | translate}}">\n          <md-content layout-padding>\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.RINGINGDEVICE">Ringing Device</label>\n                <md-select name="ringingDevice" ng-model="vm.conf.ringingId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'ringingDevice\'].$error" ng-show="settingsForm[\'ringingDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-model="vm.conf.ringingMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.ringingVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audiooutput\' }).length">\n                <label translate="TOOLBAR.SPEAKERDEVICE">Speaker Device</label>\n                <md-select name="speakerDevice" ng-model="vm.conf.speakerId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audiooutput\' }">{{ device.label || (\'Speaker \' + ($index + 1)) }}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'speakerDevice\'].$error" ng-show="settingsForm[\'speakerDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div layout="row" layout-align="space-between cetner">\n                <md-switch ng-model="vm.conf.speakerMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n\n                <md-slider-container flex="80">\n                  <md-slider flex step="0.1" min="0" max="1" ng-model="vm.conf.speakerVolume" aria-label="volume"></md-slider>\n                </md-slider-container>\n              </div>\n            </div>\n\n            <div class="border brad-5" layout-margin>\n              <md-input-container class="md-block" ng-if="(vm.devices | filter: { kind: \'audioinput\' }).length">\n                <label translate="TOOLBAR.MICROPHONEDEVICE">Microphone Device</label>\n                <md-select name="microphoneDevice" ng-model="vm.conf.microphoneId" required>\n                  <md-option ng-value="device.deviceId" ng-repeat="device in vm.devices | filter: { kind: \'audioinput\' }">{{ device.label || (\'Microphone \' + ($index + 1))}}</md-option>\n                </md-select>\n                <div ng-messages="settingsForm[\'microphoneDevice\'].$error" ng-show="settingsForm[\'microphoneDevice\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLBAR.ERRORS.FIELD_REQUIRED">Field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n              <div layout="row" layout-align="space-between center">\n                <md-switch ng-disabled="vm.activeSessions.length==0" ng-model="vm.conf.microphoneMute" aria-label="Mute">\n                  Mute\n                </md-switch>\n              </div>\n            </div>\n          </md-content>\n        </md-tab>\n        <md-tab label="{{ \'TOOLBAR.REQUIREMENTS\' | translate}}">\n          <md-content layout-padding>\n            <md-list>\n              <md-list-item>\n                <h3 translate="TOOLBAR.LICENSE">License</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.license ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.license ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.BROWSER_COMPATIBILITY">Browser Compatibility</h3>\n                <md-icon class="md-secondary" ng-class="vm.isCompatibleBrowser() ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.isCompatibleBrowser() ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.HTTPS">HTTPS</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.protocol === \'https\' ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.protocol === \'https\' ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.WEBRTCSUPPORT">WebRTC Support</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.isWebRTCSupported ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.isWebRTCSupported ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.MICROPHONE">Microphone</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasMicrophone ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasMicrophone ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n              <md-list-item>\n                <h3 translate="TOOLBAR.SPEAKER">Speaker</h3>\n                <md-icon class="md-secondary" ng-class="vm.conf.hasSpeakers ? \'green-fg\' : \'red-fg\'" md-font-icon="{{vm.conf.hasSpeakers ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n              </md-list-item>\n            </md-list>\n          </md-content>\n        </md-tab>\n      </md-tabs>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSettings()" class="send-button md-accent md-raised" ng-disabled="settingsForm.$invalid || settingsForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/core/directives/ms-quick-filter/ms-quick-filter.html",'<div ng-cloak layout="row" class="quick-filter-container" flex>\n  <div ng-repeat="filter in vm.filters" ng-if="filter.ngIf ? $eval(\'vm.query.\' + filter.ngIf) : true" layout="column" class="padding-horizontal-16">\n    <span class="font-size-10" translate="{{ filter.label }}" />\n    <md-select ng-if="filter.type === \'select\'" class="font-size-12 no-margin" ng-model="vm.query[filter.key]" ng-change="vm.search()" aria-label="Filter {{ filter.name }}">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id">\n        {{ option.name }}</md-option>\n      <md-option ng-repeat="option in filter.customOptions" ng-value="option.value" translate="{{ option.translate }}">\n      </md-option>\n    </md-select>\n\n    <md-select ng-if="filter.type === \'multiselect\'" multiple class="font-size-12 no-margin" ng-init="vm.onMultiselectInit(filter)" ng-model="vm.query[filter.key]" ng-disabled="filter.options.length === 0" ng-change="vm.onMultiselectSelection(filter, isOpen)" md-selected-text="vm.placeholders[filter.key]" aria-label="Filter {{ filter.name }}" md-on-open="isOpen = true" md-on-close="isOpen = false">\n      <md-option ng-repeat="option in filter.options" ng-value="filter.ngValue ? option[filter.ngValue] : option.id" ng-disabled="filter.clearAll === false && vm.query[filter.key].length === 1 && vm.query[filter.key][0] === (filter.ngValue ? option[filter.ngValue] : option.id)">\n        {{ option.name }}</md-option>\n      <md-button ng-if="vm.query[filter.key].length &lt; filter.options.length" ng-click="vm.selectAll(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-button ng-if="vm.query[filter.key].length === filter.options.length" ng-click="vm.clearSelection(filter)" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n\n    <div ng-if="filter.type === \'date\'" layout="row" layout-align="center center">\n      <md-date-range ng-init="vm.onDateRangeInit(filter)" localization-map="vm.localizationMap" ng-model="vm.pickerModels[filter.key]" auto-confirm="true" show-template="true" md-on-select="vm.onDateRangeSelection(filter)" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}">\n      </md-date-range>\n      <md-button ng-if="vm.pickerModels[filter.key].dateStart" ng-click="vm.clearDate(filter)" class="md-icon-button no-margin no-padding width-20 height-20" aria-label="Clear date filter">\n        <md-icon md-font-icon="icon-close" class="quick-filter-date-clear-button s16"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-search-bar/ms-search-bar.html",'<div flex layout="row" layout-align="start center">\n  <label>\n    <md-button class="ms-search-bar-expander md-icon-button" aria-label="Expand Search Bar" ng-click="vm.expandBar()" ng-if="!vm.resultsLoading || !vm.expanded" ng-class="{\'ms-search-button-expanded\': vm.expanded }">\n      <md-icon id="ms-search-bar-icon" md-font-icon="icon-magnify" class="s24" ng-class="{\'{{ vm.iconColor }}\': vm.iconColor && !vm.expanded }"></md-icon>\n    </md-button>\n    <div class="ms-search-bar-loader" layout="row" layout-align="center center" ng-if="vm.resultsLoading && vm.expanded">\n      <md-progress-circular class="md-accent" md-diameter="32" md-mode="indeterminate"></md-progress-circular>\n    </div>\n  </label>\n  <input ng-if="vm.expanded" focus-on="vm.expanded" type="text" placeholder="{{ \'TOOLBAR.SEARCH\' | translate }}" flex ng-model="vm.query.filter" ng-model-options="vm.queryOptions" ng-blur="vm.blurCollapse()" ng-keydown="vm.onKeyDown($event)" />\n  <md-button class="ms-search-bar-collapser md-icon-button" ng-click="vm.collapseBar()" aria-label="Collapse Search Bar">\n    <md-icon md-font-icon="icon-close" class="icon s24"></md-icon>\n  </md-button>\n  <div class="ms-search-bar-results" ng-if="vm.results">\n    <div class="no-results" ng-if="vm.results.length === 0">{{ \'DASHBOARDS.NO_RESULTS_AVAILABLE\' | translate }}</div>\n    <div class="result" ng-repeat="result in vm.results" ng-click="vm.handleResultClick(result)" ng-mouseenter="vm.handleMouseEnter($index)" ng-mousedown="vm.absorbEvent($event)" ng-class="{\'selected\': $index == vm.selectedResultIndex}" md-ink-ripple>\n      <div layout="row" layout-align="start center">\n        <div class="icon-container" layout="row" layout-align="center center">\n          <i ng-if="result.icon" class="icon {{ result.icon }}"></i>\n          <div ng-if="!result.icon" class="square md-accent-bg"></div>\n        </div>\n        <div>\n          <div class="title">{{ result.title }}</div>\n          <div class="description" ng-if="result.description">{{ result.description }}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/core/directives/ms-shortcuts/ms-shortcuts.html",'<div class="shortcuts-container" layout="row" layout-align="space-between center" flex ng-class="{\'mobile-bar-active\': MsShortcuts.mobileBarActive}">\n\n  <div class="flex-noshrink" layout="row" layout-align="start center" flex>\n    <div class="shortcuts hide show-gt-xs" layout="row" layout-align="start center" ng-if="MsShortcuts.shortcuts.length > 0" ng-sortable="MsShortcuts.sortableOptions">\n      <div ng-repeat="shortcut in MsShortcuts.shortcuts" layout="row" layout-align="center center">\n        <md-button class="md-icon-button shortcut" aria-label="{{shortcut.title}}" ui-sref="{{shortcut.uisref}}">\n          <md-icon ng-if="shortcut.icon" md-font-icon="{{shortcut.icon}}" class="icon s24"></md-icon>\n          <div ng-if="!shortcut.icon" class="first-letter">{{shortcut.title.charAt(0)}}</div>\n          <md-tooltip md-direction="bottom">{{shortcut.title}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n\n    \x3c!-- <md-menu md-offset="8 56" class="shortcut-menu hide show-gt-xs">\n            <md-button class="md-icon-button add-shortcut-button" aria-label="Add shortcut"\n                       ng-click="$mdOpenMenu($event)">\n                <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24"></md-icon>\n                <md-tooltip md-direction="bottom">Click to add/remove shortcut</md-tooltip>\n            </md-button>\n\n            <md-menu-content>\n                <div id="ms-shortcut-add-menu">\n                    <div class="shortcut-search" layout="row" layout-align="start center">\n                        <div class="search-icon" layout="row" layout-align="center center"\n                             ng-if="!MsShortcuts.resultsLoading">\n                            <md-icon md-menu-align-target md-font-icon="icon-magnify" class="icon s24"></md-icon>\n                        </div>\n                        <div class="shortcut-loader" layout="row" layout-align="center center"\n                             ng-if="MsShortcuts.resultsLoading">\n                            <md-progress-circular class="md-accent" md-diameter="20" md-mode="indeterminate">\n                            </md-progress-circular>\n                        </div>\n\n                        <input type="text" placeholder="Search" flex\n                               ng-model="MsShortcuts.query"\n                               ng-model-options="MsShortcuts.queryOptions"\n                               ng-keydown="MsShortcuts.handleKeydown($event)">\n                    </div>\n\n                    <div class="results" ng-if="MsShortcuts.results" >\n                        <div class="no-results" ng-if="MsShortcuts.results.length === 0">No Results!</div>\n\n                        <div class="result" ng-repeat="result in MsShortcuts.results"\n                             ng-click="MsShortcuts.handleResultClick(result)"\n                             ng-mouseenter="MsShortcuts.handleMouseenter($index)"\n                             ng-mousedown="MsShortcuts.absorbEvent($event)"\n                             ng-class="{\'selected\': $index == MsShortcuts.selectedResultIndex}"\n                             md-prevent-menu-close="md-prevent-menu-close"\n                             md-ink-ripple>\n                            <div layout="row" layout-align="start space-between">\n                                <div layout="row" layout-align="start center" flex>\n                                    <div class="icon icon-container" layout="row" layout-align="center center">\n                                        <i ng-if="result.icon" class="{{result.icon}}"></i>\n                                        <div ng-if="!result.icon" class="square md-accent-bg"></div>\n                                    </div>\n                                    <div>\n                                        <div class="title">{{result.title}}</div>\n                                    </div>\n                                </div>\n                                <md-icon md-font-icon="icon-pin" class="icon s18"\n                                         ng-class="{\'fade-text\': !result.hasShortcut}"></md-icon>\n                            </div>\n                        </div>\n                    </div>\n                </div>\n            </md-menu-content>\n        </md-menu> --\x3e\n  </div>\n\n  <md-button class="md-icon-button toggle-mobile-menu hide-gt-xs" aria-label="Add shortcut" ng-click="MsShortcuts.toggleMobileBar()">\n    <md-icon md-menu-origin md-font-icon="icon-star" class="icon amber-600-fg s24" ng-hide="MsShortcuts.mobileBarActive"></md-icon>\n    <md-icon md-menu-origin md-font-icon="icon-close" class="icon s24" ng-hide="!MsShortcuts.mobileBarActive"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/horizontal/horizontal.html",'<div class="ms-stepper-horizontal">\n  <div class="ms-stepper-navigation-wrapper">\n    <div class="ms-stepper-navigation" layout="row" layout-align="center center">\n      <md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(step.stepNumber), \'valid\': MsStepper.isStepValid(step.stepNumber), \'disabled\': MsStepper.isStepDisabled(step.stepNumber), \'optional\': MsStepper.isStepOptional(step.stepNumber)}" ng-click="MsStepper.gotoStep(step.stepNumber)" ng-disabled="MsStepper.isStepDisabled(step.stepNumber)" ng-repeat="step in MsStepper.steps | filter:MsStepper.filterHiddenStep" layout="row" layout-align="start center">\n\n        <div class="step md-accent-bg" layout="row" layout-align="center center">\n          <span ng-if="!MsStepper.isStepValid(step.stepNumber) || MsStepper.isStepOptional(step.stepNumber)">\n            {{$index + 1}}\n          </span>\n          <span ng-if="MsStepper.isStepValid(step.stepNumber) && !MsStepper.isStepOptional(step.stepNumber)">\n            <i class="icon icon-check s18"></i>\n          </span>\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="title" translate="{{step.stepTitleTranslate}}">{{step.stepTitle}}</div>\n          <div class="subtitle" ng-if="MsStepper.isStepOptional(step.stepNumber)">Optional</div>\n        </div>\n      </md-button>\n    </div>\n  </div>\n\n  <div class="ms-stepper-steps" ng-transclude></div>\n\n  <div class="ms-stepper-controls" layout="row" layout-align="center center">\n    <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n      Back\n    </md-button>\n\n    <div class="ms-stepper-dots">\n      <span ng-repeat="step in MsStepper.steps" ng-hide="MsStepper.isStepHidden(step.stepNumber)" ng-class="{\'selected md-accent-bg\':MsStepper.currentStepNumber === $index + 1}">\n      </span>\n    </div>\n\n    <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n      Next\n    </md-button>\n\n    <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n      Submit\n    </md-button>\n  </div>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/step/vertical-step.html",'<md-button class="ms-stepper-navigation-item" ng-class="{\'current\': MsStepper.isStepCurrent(stepInfo.stepNumber), \'valid\': MsStepper.isStepValid(stepInfo.stepNumber), \'disabled\': MsStepper.isStepDisabled(stepInfo.stepNumber), \'optional\': MsStepper.isStepOptional(stepInfo.stepNumber)}" ng-click="MsStepper.gotoStep(stepInfo.stepNumber)" ng-disabled="MsStepper.isStepDisabled(stepInfo.stepNumber)" ng-hide="MsStepper.isStepHidden(stepInfo.stepNumber)" aria-label="Stepper navigation button" layout="row" layout-align="start center">\n\n  <div class="step" layout="row" layout-align="center center">\n    <span ng-if="!MsStepper.isStepValid(stepInfo.stepNumber) || MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-checkbox-blank-circle-outline s18 md-accent-fg"></i>\n    </span>\n    <span ng-if="MsStepper.isStepValid(stepInfo.stepNumber) && !MsStepper.isStepOptional(stepInfo.stepNumber)">\n      <i class="icon icon-check-circle s18 md-accent-fg"></i>\n    </span>\n  </div>\n\n  <div layout="column" layout-align="start start">\n    <div class="title" ng-if="stepInfo.stepTitleTranslate">{{stepInfo.stepTitleTranslate | translate }}</div>\n    <div class="title" ng-if="!stepInfo.stepTitleTranslate">{{stepInfo.stepTitle}}</div>\n    <div class="subtitle" ng-if="MsStepper.isStepOptional(stepInfo.stepNumber)">Optional</div>\n  </div>\n</md-button>\n\n<div class="ms-stepper-step-content" ng-transclude></div>\n\n<div class="ms-stepper-controls" layout="row" layout-align="start center" ng-show="MsStepper.isStepCurrent(stepInfo.stepNumber)">\n  <md-button class="md-accent md-raised" ng-disabled="MsStepper.isFirstStep()" ng-click="MsStepper.gotoPreviousStep()">\n    Back\n  </md-button>\n\n  <md-button class="md-accent md-raised" ng-if="!MsStepper.isLastStep()" ng-disabled="!MsStepper.isStepValid(MsStepper.currentStepNumber)" ng-click="MsStepper.gotoNextStep()">\n    Next\n  </md-button>\n\n  <md-button type="submit" class="md-accent md-raised" ng-click="MsStepper.resetForm()" ng-if="MsStepper.isLastStep()" ng-disabled="!MsStepper.isFormValid()">\n    Submit\n  </md-button>\n</div>'),e.put("app/core/directives/ms-stepper/templates/vertical/vertical.html",'<div class="ms-stepper-vertical">\n  <div class="ms-stepper-vertical-line"></div>\n  <div class="ms-stepper-steps" ng-transclude></div>\n</div>'),e.put("app/core/directives/ms-tab-scroll/ms-tab-scroll.html",'<div layout="row">\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'left\')" ng-if="vm.canScroll(\'left\') == true">\n    <md-icon md-font-icon="icon-chevron-left" class="icon s26"></md-icon>\n  </md-button>\n  <div id="bar-container" layout="row" class="bar-container">\n    <div ng-transclude id="tab-container" layout="row" layout-align="start center" class="scroll-container">\n    </div>\n  </div>\n  <md-button class="md-icon-button md-mini width-25 no-margin scroll-arrow" ng-click="vm.onTabScroll(\'right\')" ng-if="vm.canScroll(\'right\') == true">\n    <md-icon md-font-icon="icon-chevron-right" class="icon s26"></md-icon>\n  </md-button>\n</div>'),e.put("app/core/directives/ms-timezone/ms-timezone.html",'<md-select ng-model="ngModel" class="no-margin" ng-change="ngChange()">\n  <md-option ng-value="null">NONE</md-option>\n  <md-option ng-repeat="t in timezone | orderBy:\'utcOffset\'" value="{{t.name}}">{{t.name}} ({{t.offsetStr}})</md-option>\n</md-select>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-counter/ms-widget-engine.counter.html",'<div class="pt-8 pb-32" layout="column" layout-align="center center" layout-fill ng-controller="MsWidgetEngineCounterController as vm">\n  <div ng-class="\'font-size-\' + (vm.fontSize * 3)" ng-style="{\'color\': widget.foreground}">\n    {{ vm.getCount(widget) }}\n  </div>\n  <div ng-class="\'font-size-\' + vm.fontSize" ng-style="{\'color\': widget.foreground}">{{ \'TOOLS.\' +  vm.label | uppercase | translate }}<span ng-if="vm.filtered">*</span></div>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-multibar-chart/ms-widget-engine.multibar-chart.html",'<div ng-controller="MsWidgetEngineMultibarChartController as vm" ng-init="vm.getMultiBarChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getMultiBarChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="bar" class="chart-horizontal-bar" chart-data="vm.multiBarChart.data" chart-options="vm.multiBarChart.options" chart-series="vm.multiBarChart.series" chart-labels="vm.multiBarChart.labels">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-pie-chart/ms-widget-engine.pie-chart.html",'<div ng-controller="MsWidgetEnginePieChartController as vm" ng-init="vm.getPieChart(widget)" layout="column" layout-fill>\n\n  <span ng-show="false">{{ vm.getPieChart(widget)}}</span>\n\n  <canvas style="overflow:scroll" id="pie" class="chart-pie" chart-data="vm.pieChart.data" chart-labels="vm.pieChart.labels" chart-options="vm.pieChart.options">\n  </canvas>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine-web-report/ms-widget-engine.web-report.html",'<div ng-controller="MsWidgetEngineWebReportController as vm" ng-init="vm.onInit(widget)">\n  <dl ng-if="vm.error">\n    <dt class="text-bold">Query Error</dt>\n    <dd>{{vm.error.sql}}</dd>\n    <dt>Message</dt>\n    <dd>{{vm.error.msg}}</dd>\n  </dl>\n  <md-toolbar class="md-table-toolbar md-default">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{vm.title}}</span>\n      <div flex></div>\n      <md-button class="md-icon-button" ng-click="vm.onInit(widget)" aria-label="refresh">\n        <md-icon md-font-icon="icon-refresh"></md-icon>\n      </md-button>\n      <span ng-if="vm.refresh && vm.countDown" class="md-subhead blue-fg">{{vm.countDown}}</span>\n    </div>\n  </md-toolbar>\n  <md-table-container ng-if="!vm.error">\n    <table md-table md-progress="vm.promise">\n      <thead md-head>\n        <tr md-row>\n          <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-repeat="row in vm.results.rows">\n          <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n        </tr>\n        <tr md-row ng-if="!vm.results.rows.length">\n          <td md-cell colspan="{{vm.columns.length}}">\n            <div layout="row" layout-align="center center">\n              <span>No Data</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n</div>'),e.put("app/core/directives/ms-widget-engine/ms-widget-engine.html",'<div gridster="vm.config">\n  <ul>\n    <li gridster-item="widget" ng-repeat="widget in vm.config.widgets">\n      <md-card layout-fill>\n        <md-toolbar class="height-40" ng-style="{\'background-color\': widget.background, \'color\': widget.foreground }">\n          <div class="md-toolbar-tools height-40 no-margin" layout="row" layout-align="start center">\n            <a ng-href="{{widget.link ? widget.link : \'javascript:void(0)\'}}" ng-style="{\'color\': widget.foreground, \'font-size\': (widget.titleFontSize || 12) }" class="text-truncate" flex>\n              {{ widget.title || \'No Title\' }}\n            </a>\n            <md-button ng-if="!vm.config.preview" class="draggable md-icon-button width-30 no-margin no-padding" aria-label="Move">\n              <md-tooltip><span translate="TOOLS.MOVE_WIDGET">Move</span></md-tooltip>\n              <md-icon md-font-icon="icon-cursor-move" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n            </md-button>\n            <md-menu ng-if="!vm.config.preview">\n              <md-button ng-click="$mdOpenMenu($event)" class="md-icon-button width-30 no-margin no-padding" aria-label="More">\n                <md-icon md-font-icon="icon-dots-vertical" class="s20" ng-style="{\'color\': widget.foreground}"></md-icon>\n              </md-button>\n              <md-menu-content>\n                <md-menu-item>\n                  <md-button ng-click="vm.onEdit({widget: widget})" translate="TOOLS.EDIT_WIDGET">Edit\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.onDelete({widget: widget})" translate="TOOLS.DELETE_WIDGET">\n                    Delete</md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n\n          </div>\n        </md-toolbar>\n        <md-card-content class="resizable" layout="column" layout-align="center center" flex ng-style="{\'background-color\': widget.background, \'color\': widget.foreground}">\n          <div ng-switch="widget.type" layout-fill>\n            <iframe ng-switch-when="iframe|custom" ng-switch-when-separator="|" ng-src="{{vm.getTrustedURL(widget.attrs[0].value)}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n            <ds-widget-clock ng-class="\'font-size-\' + (widget.attrs[2].value || 12)" ng-switch-when="clock" digital-format="widget.attrs[0].value" gmt-offset="widget.attrs[1].value" data-show-digital show-gmt-info></ds-widget-clock>\n            <div ng-switch-default layout-fill>\n              <div ng-include="widget.templateUrl" layout-fill></div>\n            </div>\n          </div>\n        </md-card-content>\n      </md-card>\n    </li>\n  </ul>\n</div>'),e.put("app/core/layouts/content-only.html",'<div id="layout-content-only" class="template-layout" layout="column" flex>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n</div>'),e.put("app/core/layouts/content-with-toolbar.html",'<div id="layout-content-with-toolbar" class="template-layout" layout="column" flex>\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n  <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n</div>'),e.put("app/core/layouts/horizontal-navigation.html",'<div id="layout-horizontal-navigation" class="template-layout" layout="column" flex>\n\n  <div id="toolbar-navigation-container" class="md-whiteframe-1dp" layout="column" layout-align="space-between start">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n    <div id="horizontal-navigation" ui-view="navigation" layout="row" layout-align="start end" flex></div>\n  </div>\n\n  <div id="content-container" flex layout="column">\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar-2.html",'<div id="layout-vertical-navigation-fullwidth-toolbar-2" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation-fullwidth-toolbar.html",'<div id="layout-vertical-navigation-fullwidth-toolbar" class="template-layout" layout="column" flex>\n\n  <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp md-accent" ui-view="toolbar"></md-toolbar>\n\n  <div id="main-container" layout="row" flex>\n    <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n    </div>\n\n    <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n  </div>\n\n\n</div>'),e.put("app/core/layouts/vertical-navigation.html",'<div id="header" ui-view="header"></div>\n\n<div id="layout-vertical-navigation" class="template-layout" layout="row" flex>\n\n  <md-sidenav id="vertical-navigation" class="md-primary-bg" md-is-locked-open="$mdMedia(\'gt-sm\')" md-component-id="navigation" ui-view="navigation" ng-if="!vm.isAgent()"></md-sidenav>\n\n  <div id="content-container" flex layout="column">\n    <md-toolbar id="toolbar" class="md-menu-toolbar md-whiteframe-1dp" ui-view="toolbar"></md-toolbar>\n\n    <md-content id="content" class="md-hue-2" ui-view="content" flex></md-content>\n  </div>\n\n  <md-sidenav id="quick-panel" class="md-sidenav-right md-whiteframe-4dp" md-component-id="quick-panel" ui-view="quickPanel"></md-sidenav>\n\n</div>\n\n<div id="footer" ui-view="footer"></div>'),e.put("app/core/theme-options/theme-options.html",'<div class="ms-theme-options-button md-primary-bg" ng-click="toggleOptionsSidenav()">\n  <md-icon md-font-icon="icon-cog" class="white-text"></md-icon>\n</div>\n\n<md-sidenav md-component-id="motion-theme-options" class="md-sidenav-right">\n\n  <div class="ms-theme-options-list" layout="column">\n    <div class="theme-option layout-options">\n      <div class="option-title">Layout Style:</div>\n      <md-radio-group layout="row" layout-align="start start" layout-wrap ng-model="vm.layoutStyle" ng-change="vm.updateLayoutStyle()">\n        <md-radio-button ng-repeat="layoutStyle in vm.layoutStyles" ng-value="layoutStyle.value">\n          <div layout="column" layout-align="center center">\n            <img ng-src="{{layoutStyle.figure}}">\n            <span class="text-center font-size-12 mt-8">{{layoutStyle.label}}</span>\n          </div>\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option">\n      <div class="option-title">Layout Mode:</div>\n      <md-radio-group layout="row" layout-align="start center" ng-model="vm.layoutMode" ng-change="vm.updateLayoutMode()">\n        <md-radio-button ng-repeat="layoutMode in vm.layoutModes" ng-value="layoutMode.value">\n          {{layoutMode.label}}\n        </md-radio-button>\n      </md-radio-group>\n    </div>\n\n    <md-divider></md-divider>\n\n    <div class="theme-option color-palettes">\n      <div class="option-title">Color Palette:</div>\n      <div layout="row" layout-align="start start" layout-wrap>\n        <md-button ng-repeat="(themeName, theme) in vm.themes.list" class="md-raised theme-button" layout="row" layout-align="center center" aria-label="{{themeName}}" ng-click="vm.setActiveTheme(themeName)" ng-style="{\'background-color\': theme.primary.color,\'border-color\': theme.accent.color,\'color\': theme.primary.contrast1}" ng-class="{active: vm.getActiveTheme().name === themeName}">\n          <md-icon ng-style="{\'color\': theme.primary.contrast1}" md-font-icon="icon-palette" class="icon s32"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n</md-sidenav>'),e.put("app/errors/404/error-404.html",'<div id="error-404" layout="column" layout-align="center center">\n  <div class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR404.CODE">404</div>\n\n    <div class="message" translate="ERROR404.MESSAGE">Sorry but we couldn’t find the page you are looking for</div>\n    <ms-search-bar on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300">Search for anything</ms-search-bar>\n\n    \x3c!-- <div class="search md-whiteframe-1dp" layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-magnify" class="icon s24"></md-icon>\n            <input ng-model="vm.search" type="text" placeholder="Search for anything" translate translate-attr-placeholder="ERROR404.SEARCH" flex>\n        </div> --\x3e\n\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR404.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/errors/500/error-500.html",'<div id="error-500" layout="column" layout-align="center center">\n  <div ng-if="!vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code" translate="ERROR500.CODE">500</div>\n    <div class="message" translate="ERROR500.MESSAGE">Well, you broke the internet!</div>\n    <div class="sub-message" translate="ERROR500.SUBMESSAGE">Just kidding, looks like we have an internal issue, please try again in couple minutes\n    </div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n    <md-button class="md-raised md-warn" ng-click="vm.sendReport()" translate="ERROR500.REPORT">Report this problem</md-button>\n  </div>\n  <pre ng-if="!vm.send">\n  {{vm.error}}\n  </pre>\n  <div ng-if="vm.send" class="content" layout="column" layout-align="center center">\n    <div class="error-code">#{{vm.code}}</div>\n    <div class="message" translate="ERROR500.JIRA_MESSAGE">Your request has been received and will be processed shortly.</div>\n    <div class="sub-message" translate="ERROR500.JIRA_SUBMESSAGE">Sorry for the inconvenience. If you have any questions or concerns, please do not hesitate to contact us.</div>\n    <a class="md-button md-raised md-primary back-link" href="/" translate="ERROR500.GO_BACK">Go back to dashboard</a>\n  </div>\n</div>'),e.put("app/footer/layouts/vertical-navigation/footer.html",'<div layout="row" layout-align="start center">\n  <ms-info-bar ng-if="!vm.cookieAlertHide" on-close="vm.cookieAlertOnClose()" class="grey-100-bg">\n    <div layout="row" layout-align="start center">\n      <span translate="FOOTER.COOKIE_LAW" flex class="text-center grey-600-fg"></span>\n    </div>\n  </ms-info-bar>\n</div>'),e.put("app/forgot/forgot.html",'<div id="forgot-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="forgot-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="forgot-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="FORGOTPASSWORD.TITLE">Recover your password</div>\n\n      <form name="forgotPasswordForm" novalidate>\n        <md-input-container class="md-block" md-no-float>\n          <input type="email" name="email" ng-model="vm.form.email" placeholder="Email address" translate translate-attr-placeholder="FORGOTPASSWORD.EMAIL_ADRESS" ng-pattern="/^.+@.+\\..+$/" required>\n          <div ng-messages="forgotPasswordForm.email.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="FORGOTPASSWORD.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.forgotPassword()" class="md-raised md-accent submit-button" aria-label="RESET MY PASSWORD" ng-disabled="forgotPasswordForm.$invalid || forgotPasswordForm.$pristine" translate="FORGOTPASSWORD.SEND_RESET_LINK" translate-attr-aria-label="FORGOTPASSWORD.SEND_RESET_LINK">\n          SEND RESET LINK\n        </md-button>\n      </form>\n\n      <div class="login" layout="row" layout-align="center center">\n        <a class="link" ui-sref="app.login" translate="FORGOTPASSWORD.GO_BACK">Go back to login</a>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/header/layouts/vertical-navigation/header.html",'\x3c!-- <div layout="row" layout-align="start center">\n    <ms-info-bar ng-if="vm.currentUser.role == \'admin\' && !vm.newsAlertHide" on-close="vm.newsAlertOnClose()" class="green-600-bg white-fg">\n        <div layout="row" layout-align="start center">\n            <md-icon md-font-icon="icon-message-text-outline" class="icon margin-right-10 s20"></md-icon>\n            <div flex hide-xs translate="HEADER.NEWS"></div>\n        </div>\n    </ms-info-bar>\n</div> --\x3e'),e.put("app/login/login.html",'<div id="login" class="flex-scrollable" layout="column">\n  <div id="login-form-wrapper" layout="column" layout-align="center center">\n    <div id="login-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n      \x3c!-- <img src="assets/images/logos/login.png" alt="motion_logo_login" /> --\x3e\n\n      <div class="md-subhead padding-top-45" translate="LOGIN.TITLE">Log in to your account</div>\n\n      <form name="loginForm" novalidate ng-if="!vm.progressLogin">\n        <md-input-container class="md-block" md-no-float>\n          <input type="input" name="name" ng-model="vm.form.name" autofocus aria-label="username" translate translate-attr-placeholder="LOGIN.USERNAME" required>\n          <div ng-messages="loginForm.name.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" aria-label="password" translate translate-attr-placeholder="LOGIN.PASSWORD" required>\n          <div ng-messages="loginForm.password.$error" role="alert" multiple>\n            <div ng-message="required">\n              <span translate="LOGIN.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <div class="remember-forgot-password" layout="row" layout-xs="column" layout-align="end center">\n          \x3c!-- <md-checkbox class="remember-me" ng-model="data.cb1" aria-label="Remember Me">\n                        <span translate="LOGIN.REMEMBER_ME">Remember Me</span>\n                    </md-checkbox> --\x3e\n          <a ui-sref="app.forgot" class="forgot-password md-accent-color" style="cursor:pointer;" translate="LOGIN.FORGOT_PASSWORD">Forgot Password?</a>\n        </div>\n\n        <b layout="row" layout-align="center center" class="md-padding" ng-if="vm.message">\n          <font color="red">{{vm.message}}</font>\n        </b>\n        <md-button type="submit" ng-click="vm.login()" class="md-raised md-accent submit-button" aria-label="LOGIN" translate="LOGIN.LOG_IN" translate-attr-aria-label="LOGIN.LOG_IN">\n          LOG IN\n        </md-button>\n      </form>\n\n      <md-progress-circular ng-if="vm.progressLogin" md-diameter="96"></md-progress-circular>\n\n      <div ng-if="vm.googleSsoEnabled || vm.adSsoEnabled" class="separator">\n        <span class="text" translate="LOGIN.OR">OR</span>\n      </div>\n\n      <md-button ng-if="vm.googleSsoEnabled" ng-click="vm.loginOauth(\'google\')" class="md-raised google">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fab fa-google" class="s16"></md-icon>\n            <span translate="LOGIN.WITH_GOOGLE">Log in with Google</span>\n          </span>\n        </div>\n      </md-button>\n\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</span>\n          </span>\n        </div>\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/analytics/views/extractedReports/create/dialog.html",'<md-dialog class="extractedReport-dialog" aria-label="New ExtractedReport">\n  <form name="extractedReportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.REPORTNAME">ReportName</label>\n        <input type="" name="name" ng-model="vm.extractedReport.name" ng-required="true" autofocus>\n\n        <div ng-messages="extractedReportForm[\'name\'].$error" ng-show="extractedReportForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.REPORTNAME_REQUIRED">ReportName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="basename" ng-model="vm.extractedReport.basename" ng-required="true">\n\n        <div ng-messages="extractedReportForm[\'basename\'].$error" ng-show="extractedReportForm[\'basename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newExtractedReport" ng-click="vm.saveExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid || extractedReportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newExtractedReport" ng-click="vm.addNewExtractedReport()" class="send-button md-accent md-raised" ng-disabled="extractedReportForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_EXTRACTEDREPORT" translate-attr-aria-label="ANALYTICS.ADD_EXTRACTEDREPORT">\n          ADD EXTRACTEDREPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newExtractedReport" ng-click="vm.deleteExtractedReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/extractedReports/extractedReports.html",'<div id="extractedReports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.EXTRACTEDREPORTS">ExtractedReports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedExtractedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedExtractedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-extractedReports-count">\n          <span>{{vm.selectedExtractedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllExtractedReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectExtractedReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedExtractedReports" csv-label="true" filename="extractedReports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedExtractedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- EXTRACTEDREPORT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedExtractedReports" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getExtractedReports">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.REPORTNAME\' | translate }}</th>\n                <th md-column md-order-by="basename">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'ANALYTICS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="startDate">{{ \'ANALYTICS.DATE_RANGE_FROM\' | translate }}</th>\n                <th md-column md-order-by="endDate">{{ \'ANALYTICS.DATE_RANGE_TO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'ANALYTICS.GENERATED_AT\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'ANALYTICS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="output">{{ \'ANALYTICS.OUTPUT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.extractedReports.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="extractedReport" md-select-id="id" ng-repeat="extractedReport in vm.extractedReports.rows">\n                <td md-cell ng-if="extractedReport.userpic"><img class="avatar" alt="{{extractedReport.name}}" ng-src="api/users/{{extractedReport.id}}/avatar" /></td>\n                <td md-cell ng-if="!extractedReport.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{extractedReport.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="id ">{{extractedReport.id}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="name ">{{extractedReport.name}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="basename ">{{extractedReport.basename}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="type ">{{extractedReport.type}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="startDate ">{{extractedReport.startDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="endDate ">{{extractedReport.endDate | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="createdAt ">{{extractedReport.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="status ">{{extractedReport.status}}</td>\n                <td ng-click="vm.createOrEditExtractedReport($event, extractedReport)" md-cell class="output ">{{extractedReport.output}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(extractedReport, $event    )" translate="ANALYTICS.EDIT_EXTRACTEDREPORT">\n                          Edit ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="extractedReport.status == \'Completed\'">\n\n                        <md-button ng-click="vm.downloadfile2(extractedReport, $event  , \'analytics/extracted_reports\'   )" translate="ANALYTICS.DOWNLOAD_EXTRACTEDREPORT">\n                          Download ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(extractedReport, $event    )" translate="ANALYTICS.DELETE_EXTRACTEDREPORT">\n                          Delete ExtractedReport\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.extractedReports.count}}" md-on-paginate="vm.getExtractedReports" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / EXTRACTEDREPORT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/metrics/create/dialog.html",'<md-dialog class="metric-dialog" aria-label="New Metric">\n  <form name="metricForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.metric.name" ng-required="true" autofocus>\n\n        <div ng-messages="metricForm[\'name\'].$error" ng-show="metricForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select name="table" ng-model="vm.metric.table" required>\n          <md-option ng-value="\'report_agent\'">Agent Report</md-option>\n          <md-option ng-value="\'report_call\'">Call Report</md-option>\n          <md-option ng-value="\'cdr\'">CDR</md-option>\n          <md-option ng-value="\'chat_websites\'">Chat Website</md-option>\n          <md-option ng-value="\'chat_interactions\'">Chat Interaction</md-option>\n          <md-option ng-value="\'chat_messages\'">Chat Messages</md-option>\n          <md-option ng-value="\'chat_offline_messages\'">Chat Offline Messages</md-option>\n          <md-option ng-value="\'chat_queues\'">Chat Queues</md-option>\n          <md-option ng-value="\'report_chat_queue\'">Chat Report Queue</md-option>\n          <md-option ng-value="\'report_chat_transfer\'">Chat Report Transfer</md-option>\n          <md-option ng-value="\'cm_companies\'">Companies</md-option>\n          <md-option ng-value="\'report_call_transfer\'">Call transfer report</md-option>\n          <md-option ng-value="\'cm_contacts\'">Contacts</md-option>\n          <md-option ng-value="\'report_square\'">CSquare Report</md-option>\n          <md-option ng-value="\'report_square_details\'">CSquare Details Report</md-option>\n          <md-option ng-value="\'report_dial\'">Dial Report</md-option>\n          <md-option ng-value="\'cm_hopper\'">Dialer Hopper Processing</md-option>\n          <md-option ng-value="\'cm_hopper_history\'">Dialer Hopper Logs</md-option>\n          <md-option ng-value="\'cm_hopper_final\'">Dialer Hopper Final</md-option>\n          <md-option ng-value="\'mail_accounts\'">Email Account</md-option>\n          <md-option ng-value="\'mail_interactions\'">Email Interaction</md-option>\n          <md-option ng-value="\'mail_messages\'">Email Messages</md-option>\n          <md-option ng-value="\'mail_queues\'">Email Queues</md-option>\n          <md-option ng-value="\'report_mail_queue\'">Email Report Queue</md-option>\n          <md-option ng-value="\'report_mail_transfer\'">Email Report Transfer</md-option>\n          <md-option ng-value="\'fax_accounts\'">Fax Account</md-option>\n          <md-option ng-value="\'fax_interactions\'">Fax Interaction</md-option>\n          <md-option ng-value="\'fax_messages\'">Fax Messages</md-option>\n          <md-option ng-value="\'fax_queues\'">Fax Queues</md-option>\n          <md-option ng-value="\'report_fax_queue\'">Fax Report Queue</md-option>\n          <md-option ng-value="\'report_fax_transfer\'">Fax Report Transfer</md-option>\n          <md-option ng-value="\'report_jscripty_sessions\'">Jscripty Sessions</md-option>\n          <md-option ng-value="\'report_jscripty_questions\'">Jscripty Questions</md-option>\n          <md-option ng-value="\'report_jscripty_answers\'">Jscripty Answers</md-option>\n          <md-option ng-value="\'cm_lists\'">Lists</md-option>\n          <md-option ng-value="\'report_member\'">Member Report</md-option>\n          <md-option ng-value="\'openchannel_accounts\'">Openchannel Account</md-option>\n          <md-option ng-value="\'openchannel_interactions\'">Openchannel Interaction</md-option>\n          <md-option ng-value="\'openchannel_messages\'">Openchannel Messages</md-option>\n          <md-option ng-value="\'openchannel_queues\'">Openchannel Queues</md-option>\n          <md-option ng-value="\'report_openchannel_queue\'">Openchannel Report Queue</md-option>\n          <md-option ng-value="\'report_openchannel_transfer\'">Openchannel Report Transfer</md-option>\n          <md-option ng-value="\'report_queue\'">Queue Report</md-option>\n          <md-option ng-value="\'sms_accounts\'">SMS Account</md-option>\n          <md-option ng-value="\'sms_interactions\'">SMS Interaction</md-option>\n          <md-option ng-value="\'sms_messages\'">SMS Messages</md-option>\n          <md-option ng-value="\'sms_queues\'">SMS Queues</md-option>\n          <md-option ng-value="\'report_sms_queue\'">SMS Report Queue</md-option>\n          <md-option ng-value="\'report_sms_transfer\'">SMS Report Transfer</md-option>\n          <md-option ng-value="\'users\'">Users</md-option>\n          <md-option ng-value="\'voice_recordings\'">Voice Recordings</md-option>\n          <md-option ng-value="\'whatsapp_accounts\'">Whatsapp Account</md-option>\n          <md-option ng-value="\'whatsapp_interactions\'">Whatsapp Interaction</md-option>\n          <md-option ng-value="\'whatsapp_messages\'">Whatsapp Messages</md-option>\n          <md-option ng-value="\'whatsapp_queues\'">Whatsapp Queues</md-option>\n          <md-option ng-value="\'report_whatsapp_queue\'">Whatsapp Report Queue</md-option>\n          <md-option ng-value="\'report_whatsapp_transfer\'">Whatsapp Report Transfer</md-option>\n        </md-select>\n        <div ng-messages="metricForm[\'table\'].$error" ng-show="metricForm[\'table\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.METRIC">Metric</label>\n        <input type="text" name="metric" ng-model="vm.metric.metric" ng-required="true">\n\n        <div ng-messages="metricForm[\'metric\'].$error" ng-show="metricForm[\'metric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.metric.description">\n\n        <div ng-messages="metricForm[\'description\'].$error" ng-show="metricForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMetric" ng-click="vm.saveMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid || metricForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMetric" ng-click="vm.addNewMetric()" class="send-button md-accent md-raised" ng-disabled="metricForm.$invalid" aria-label="ADD" translate="ANALYTICS.ADD_METRIC" translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n          ADD METRIC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMetric" ng-click="vm.deleteMetric($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/metrics/metrics.html",'<div id="metrics" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.METRICS">Metrics</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMetrics.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMetrics =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-metrics-count">\n          <span>{{vm.selectedMetrics.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMetrics()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMetrics()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMetrics" csv-label="true" filename="metrics.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMetrics($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- METRIC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMetrics" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMetrics">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'ANALYTICS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n                <th md-column md-order-by="table">{{ \'ANALYTICS.TABLE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.metrics.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="metric" md-select-id="id" ng-repeat="metric in vm.metrics.rows">\n                <td md-cell ng-if="metric.userpic"><img class="avatar" alt="{{metric.name}}" ng-src="api/users/{{metric.id}}/avatar" /></td>\n                <td md-cell ng-if="!metric.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{metric.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="id ">{{metric.id}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="name ">{{metric.name}}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="table ">{{ vm.arraytable[metric.table].option }}</td>\n                <td ng-click="vm.createOrEditMetric($event, metric)" md-cell class="description ">{{metric.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(metric, $event    )" translate="ANALYTICS.EDIT_METRIC">\n                          Edit Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(metric, $event    )" translate="ANALYTICS.DELETE_METRIC">\n                          Delete Metric\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.metrics.count}}" md-on-paginate="vm.getMetrics" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / METRIC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD METRIC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-metric-button" ng-click="vm.createOrEditMetric($event)" aria-label="add metric" translate translate-attr-aria-label="ANALYTICS.ADD_METRIC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD METRIC BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/copy/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.COPY_REPORT">Copy Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="ANALYTICS.SELECT_NODE">Select Node</label>\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.copyReport()" class="send-button md-accent md-raised" ng-disabled="!vm.currentNode" aria-label="COPY" translate="ANALYTICS.COPY_REPORT" translate-attr-aria-label="ANALYTICS.COPY_REPORT">\n          COPY REPORT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/create/dialog.html",'<md-dialog class="report-dialog" aria-label="New Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.report.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newReport">\n        <label translate="ANALYTICS.TABLE">Table</label>\n        <md-select ng-model="vm.report.table" required>\n          <md-option ng-repeat="table in vm.tables | orderBy:\'name\'" ng-value="table.name">{{table.name}}</md-option>\n        </md-select>\n        <div ng-messages="reportForm.table.$error" ng-show="reportForm.table.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TABLE_REQUIRED">Table field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.report.description">\n        <div ng-messages="reportForm.description.$error" ng-show="reportForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-autocomplete ng-if="vm.newReport" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="table in vm.tables | filter:vm.searchText" md-item-text="table.name" md-min-length="0" md-selected-item-change="vm.selectedTableChange(table)" placeholder="Select the table to Join">\n        <md-item-template>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{table.name}}</span>\n        </md-item-template>\n        <md-not-found>\n          No states matching "{{vm.searchText}}" were found.\n        </md-not-found>\n      </md-autocomplete>\n\n      <md-card ng-if="vm.newReport" md-theme="default" md-theme-watch ng-repeat="table in vm.joinTables">\n        <md-card-title>\n          <md-card-title-text layout="row">\n            <div layout="row" flex="50">\n              <span class="md-subhead">{{table.name}}</span>\n            </div>\n            <div layout="row" layout-align="end center" flex>\n              <md-button class="md-icon-button" ng-click="vm.removeJoin($index)">\n                <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n              </md-button>\n            </div>\n          </md-card-title-text>\n        </md-card-title>\n        <md-card-content>\n          <md-select ng-model="table.parentKey" placeholder="Select the parent key" ng-init="table.parentFields = []; vm.getFields(table, \'parentFields\', vm.report.table)" required>\n            <md-option ng-repeat="field in table.parentFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.foreignKey" placeholder="Select the foreign key" ng-init="table.foreignFields = []; vm.getFields(table, \'foreignFields\', table.name)" required>\n            <md-option ng-repeat="field in table.foreignFields" ng-value="field">{{field}}</md-option>\n          </md-select>\n          <md-select ng-model="table.type" placeholder="Select join type" required>\n            <md-option ng-repeat="join in vm.joinTypes" ng-value="join.key">{{join.value}}</md-option>\n          </md-select>\n        </md-card-content>\n      </md-card>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReport" ng-click="vm.saveReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReport" ng-click="vm.addNewReport()" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid || reportForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORT" translate-attr-aria-label="ANALYTICS.ADD_REPORT">\n          ADD REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReport" ng-click="vm.deleteReport($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/condition/group.html",'<md-card class="padding-horizontal-15 padding-top-15">\n  <div layout="row" ng-if="vm_rc.crudPermissions.canEdit">\n    <md-input-container class="md-block" flex>\n      <label translate="ANALYTICS.OPERATOR">Operator</label>\n      <md-select ng-model="group.operator" required>\n        <md-option value="AND">AND</md-option>\n        <md-option value="OR">OR</md-option>\n      </md-select>\n      <div ng-messages="conditionsForm.operator.$error" ng-show="conditionsForm.operator.$touched" role="alert">\n        <div ng-message="required">\n          <span translate="ANALYTICS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n        </div>\n      </div>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addCondition(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.CONDITION\' | translate}}\n      </md-button>\n    </md-input-container>\n    <md-input-container class="md-block">\n      <md-button class="md-raised md-accent" ng-click="vm_rc.addGroup(group.rules)">\n        <md-icon md-font-icon="icon-plus"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n    <div flex></div>\n    <md-input-container class="md-block" ng-if="parent">\n      <md-button class="md-raised md-warn" ng-click="vm_rc.deleteConfirm(parent, index, $event)">\n        <md-icon md-font-icon="icon-delete"></md-icon> {{\'ANALYTICS.GROUP\' | translate}}\n      </md-button>\n    </md-input-container>\n  </div>\n  <div layout="column" ng-repeat="rule in group.rules track by $index">\n    <div layout="row" ng-if="!rule.group">\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.COLUMN">COLUMN</label>\n        <md-select name="field" ng-model="rule.field" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-optgroup label="{{vm_rc.report.table}}">\n            <md-option ng-repeat="column in vm_rc.columns" value="{{vm_rc.report.table}}.{{column}}">{{column}}</md-option>\n          </md-optgroup>\n          <md-optgroup ng-if="vm_rc.report.joins" ng-repeat="join in vm_rc.report.joins" label="{{join.foreignTable}}">\n            <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="conditionsForm.field.$error" ng-show="conditionsForm.field.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" flex>\n        <label translate="ANALYTICS.CONDITION">CONDITION</label>\n        <md-select name="condition" ng-model="rule.condition" ng-disabled="!vm_rc.crudPermissions.canEdit" required>\n          <md-option ng-repeat="condition in vm_rc.conditions" ng-value="condition">{{condition}}</md-option>\n        </md-select>\n        <div ng-messages="conditionsForm.condition.$error" ng-show="conditionsForm.condition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm_rc.isValueByCondition(rule.condition)" class="md-block" flex>\n        <label translate="ANALYTICS.VALUE">VALUE</label>\n        <input type="text" name="value" ng-model="rule.value" ng-disabled="!vm_rc.crudPermissions.canEdit" required md-autofocus>\n        <div ng-messages="conditionsForm.value.$error" ng-show="conditionsForm.value.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm_rc.crudPermissions.canEdit" flex>\n        <md-button class="md-fab md-mini md-warn" aria-label="Delete row" ng-click="vm_rc.deleteConfirm(group.rules, $index, $event)">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </md-input-container>\n    </div>\n    <div ng-if="rule.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="parent=group.rules;index=$index;group=rule.group"></div>\n  </div>\n</md-card>'),e.put("app/main/apps/analytics/views/reports/edit/field/dialog.html",'<md-dialog class="reportField-dialog" aria-label="New Report Field">\n  <form name="reportFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <pre></pre>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.reportField.type" ng-change="vm.reportField.field = undefined" required>\n          <md-option value="column">Select a column</md-option>\n          <md-option value="metric">Select an existing metric</md-option>\n          <md-option value="custom">Write a custom metric</md-option>\n        </md-select>\n        <div ng-messages="reportForm.type.$error" ng-show="reportForm.type.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-switch on="vm.reportField.type">\n        <md-input-container class="md-block" ng-switch-when="column">\n          <label translate="ANALYTICS.COLUMN">Column Name</label>\n          <md-select name="column" ng-model="vm.reportField.field" required>\n            <md-optgroup label="{{vm.report.table}}">\n              <md-option ng-repeat="column in vm.columns" value="{{vm.report.table}}.{{column}}">{{column}}</md-option>\n              \x3c!-- <md-option ng-repeat="column in vm.columns" ng-value="">{{column}}</md-option> --\x3e\n            </md-optgroup>\n            <md-optgroup ng-if="vm.report.joins" ng-repeat="join in vm.report.joins" label="{{join.foreignTable}}">\n              <md-option ng-repeat="field in join.foreignTableFields" value="{{join.foreignTable}}.{{field}}">{{field}}</md-option>\n            </md-optgroup>\n          </md-select>\n          <div ng-messages="reportForm.column.$error" ng-show="reportForm.column.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.COLUMN_REQUIRED">Column field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="metric">\n          <label translate="ANALYTICS.METRIC_NAME">Metric Name</label>\n          <md-select name="metric" ng-model="vm.reportField.MetricId" required>\n            <md-option ng-repeat="metric in vm.metrics" ng-value="metric.id">{{metric.name}}</md-option>\n          </md-select>\n          <div ng-messages="reportForm.metric.$error" ng-show="reportForm.metric.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" ng-switch-when="custom">\n          <label translate="ANALYTICS.CUSTOM_METRIC">Custom Metric</label>\n          <input type="text" name="field" ng-model="vm.reportField.field" required md-autofocus>\n          <div ng-messages="reportFieldForm.field.$error" ng-show="reportFieldForm.field.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="ANALYTICS.ERRORS.CUSTOM_METRIC_REQUIRED">Custom Metric field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.reportField.alias" ng-required="vm.reportField.type === \'custom\' || vm.reportField.type === \'metric\'">\n        <div ng-messages="reportFieldForm.alias.$error" ng-show="reportFieldForm.alias.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FUNCTION">Function</label>\n        <md-select name="function" ng-model="vm.reportField.function">\n          <md-option ng-value="null">No Function</md-option>\n          <md-option ng-repeat="function in vm.sqlUtil.getFunctions" ng-value="function.value">{{function.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.reportField.type !== \'metric\'">\n        <label translate="ANALYTICS.FORMAT">Format</label>\n        <md-select name="format" ng-model="vm.reportField.format">\n          <md-option ng-value="null">No Format</md-option>\n          <md-option ng-repeat="format in vm.sqlUtil.getFormats" ng-value="format.value">{{format.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.GROUP_BY">Group By</label>\n        <md-select name="groupBy" ng-model="vm.reportField.groupBy">\n          <md-option ng-repeat="gb in vm.sqlUtil.getGroupBy" ng-value="gb.value">{{gb.value ? \'Yes\' : \'No\'}}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.ORDER_BY">Order By</label>\n        <md-select name="orderBy" ng-model="vm.reportField.orderBy">\n          <md-option ng-value="null">No Order</md-option>\n          <md-option ng-repeat="ob in vm.sqlUtil.getOrderBy" ng-value="ob.value">{{ob.value}}</md-option>\n        </md-select>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newReportField" ng-click="vm.saveReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="SAVE" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newReportField" ng-click="vm.addNewReportField()" class="send-button md-accent md-raised" ng-disabled="reportFieldForm.$invalid || reportFieldForm.$pristine" aria-label="ADD" translate="ANALYTICS.ADD_REPORTFIELD" translate-attr-aria-label="ANALYTICS.ADD_REPORTFIELD">\n          ADD REPORT FIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newReportField" ng-click="vm.deleteReportField($event)" aria-label="DELETE" translate translate-attr-aria-label="ANALYTICS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/edit/view.html",'<div id="analytics-report" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-reports-button md-icon-button" aria-label="Go to reports" ng-click="vm.gotoReports()" translate translate-attr-aria-label="ANALYTICS.GO_TO_ANALYTICSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="report-image" hide-xs>\n          <img ng-src="assets/images/business/reports.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.report.id}} {{vm.report.name}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="ANALYTICS.CREATED_AT"></span> <span>{{vm.report.createdAt | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span>{{vm.report.description}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveReport()" ng-disabled="generalForm.$pristine && conditionsForm.$pristine" class="send-button md-accent md-raised" translate="ANALYTICS.SAVE" translate-attr-aria-label="ANALYTICS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="ANALYTICS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.NAME">Name</label>\n                <input type="text" name="name" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.name" required md-autofocus>\n                <div ng-messages="generalForm.name.$error" ng-show="generalForm.name.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="ANALYTICS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-disabled="!vm.crudPermissions.canEdit" ng-model="vm.report.description">\n                <div ng-messages="generalForm.description.$error" ng-show="generalForm.description.$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="ANALYTICS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.FIELDS">FIELDS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container fields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportFieldsController as vm_rf" ng-init="vm_rf.init(vm.report, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <div layout="row" layout-align="start center">\n                    <div layout="column" layout-align="start start">\n                      <div class="md-subhead" translate="ANALYTICS.FIELDS">\n                        <span translate="ANALYTICS.FIELDS">FIELDS</span>\n                      </div>\n                      <div class="h4">\n                        <span translate="ANALYTICS.TABLE">TABLE</span> <span class="text-bold">{{vm.report.table}}</span>\n                      </div>\n                      <div class="h4" ng-if="vm.report.joins && vm.report.joins.length && vm.isArray(vm.report.joins)">\n                        <span>Join</span> <span class="text-bold">{{ vm.mapArray(vm.report.joins, \'foreignTable\') }}</span>\n                      </div>\n                    </div>\n                  </div>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm_rf.query.filter = query" on-collapse="vm_rf.query.filter = undefined" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-if="vm_rf.crudPermissions.canEdit" ng-click="vm_rf.createOrEditReportField($event)" aria-label="add field" translate translate-attr-label="ANALYTICS.ADD_FIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_rf.selectedReportFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_rf.selectedReportFields.length}} {{vm_rf.selectedReportFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_rf.deleteSelectedReportFields($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table md-row-select="vm_rf.crudPermissions.canDelete" multiple ng-model="vm_rf.selectedReportFields" md-progress="vm_rf.promise">\n                  <thead md-head md-order="vm_rf.query.sort" md-on-reorder="vm_rf.getReportFields">\n                    <tr md-row>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical"></md-icon>\n                      </th>\n                      <th md-column>Type</th>\n                      <th md-column>Column or Metric</th>\n                      <th md-column>Alias</th>\n                      <th md-column>Function</th>\n                      <th md-column>Format</th>\n                      <th md-column>Group By</th>\n                      <th md-column>Order By</th>\n                      <th md-column width="10px" ng-if="vm_rf.crudPermissions.canEdit"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_rf.sortableTable">\n                    <tr md-row md-select="reportField" md-select-id="id" ng-repeat="reportField in vm_rf.reportFields.rows">\n                      <td md-cell class="handle" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16"></md-icon>\n                      </td>\n                      <td md-cell>\n                        <div ng-if="reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-shape-plus s16"></div>\n                        <div ng-if="!reportField.MetricId && reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-pencil-box-outline s16"></div>\n                        <div ng-if="!reportField.MetricId && !reportField.custom" ng-click="vm_rf.createOrEditReportField($event, reportField)" class="icon icon-view-column s16"></div>\n                      </td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.MetricId ? vm_rf.getMetricName(reportField.MetricId) : reportField.field}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)">{{reportField.alias}}</td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.function">{{reportField.function}}</span><span ng-if="!reportField.function">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.format">{{reportField.format}}</span><span ng-if="!reportField.format">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.groupBy">YES</span><span ng-if="!reportField.groupBy">--</span></td>\n                      <td md-cell ng-click="vm_rf.createOrEditReportField($event, reportField)"><span class="text-boxed blue-bg white-fg" ng-if="reportField.orderBy">{{reportField.orderBy}}</span><span ng-if="!reportField.orderBy">--</span></td>\n                      <td md-cell class="actions" ng-if="vm_rf.crudPermissions.canEdit">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.createOrEditReportField($event, reportField)" translate="ANALYTICS.EDIT_REPORTFIELD">\n                                Edit Field\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm_rf.deleteConfirm(reportField, $event)" translate="ANALYTICS.DELETE_REPORTFIELD">\n                                Delete Field\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="ANALYTICS.CONDITIONS">CONDITIONS</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container conditions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ReportConditionsController as vm_rc" ng-init="vm_rc.init(vm.report, vm.crudPermissions)">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text" translate="ANALYTICS.CONDITION">CONDITION</div>\n              </div>\n              <form name="conditionsForm" novalidate>\n                <div ng-if="vm_rc.report.condition.group" ng-include="\'app/main/apps/analytics/views/reports/edit/condition/group.html\'" ng-init="group=vm_rc.report.condition.group"></div>\n              </form>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.previewReport()">\n        <md-tab-label>\n          <span translate="ANALYTICS.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <md-table-container ng-if="!vm.error">\n              <table md-table>\n                <thead md-head>\n                  <tr md-row>\n                    <th ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n                  </tr>\n                </thead>\n                <tbody md-body>\n                  <tr md-row ng-repeat="row in vm.rows">\n                    <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n                  </tr>\n                  <tr md-row ng-if="!vm.rows.length">\n                    <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n                  </tr>\n                </tbody>\n              </table>\n            </md-table-container>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab md-on-select="vm.queryReport()">\n        <md-tab-label>\n          <span>Query</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="report-detail-form-container result md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n              <div ng-if="!vm.error" class="h2 secondary-text">SQL</div>\n            </div>\n            <dl ng-if="vm.error">\n              <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n              <dd>{{vm.error.sql}}</dd>\n              <dt translate="ANALYTICS.MESSAGE">Message</dt>\n              <dd>{{vm.error.msg}}</dd>\n            </dl>\n            <div ng-if="!vm.error">\n              {{vm.queryResult}}\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/analytics/views/reports/preview/dialog.html",'<md-dialog aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.PREVIEW_REPORT">Preview Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n          <div ng-if="!vm.error" class="h2 secondary-text" translate="ANALYTICS.LIMITED_RESULT">LIMITED RESULT</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}"><span translate="ANALYTICS.NO_DATA">NO DATA</span></td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/reports.html",'<div id="reports" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-chart-line" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="ANALYTICS.REPORTS">Reports</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedReports.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedReports =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="ANALYTICS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-reports-count">\n          <span>{{vm.selectedReports.length}}</span>\n          <span translate="ANALYTICS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="ANALYTICS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllReports()" translate="ANALYTICS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectReports()" translate="ANALYTICS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedReports" csv-label="true" filename="reports.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom" class="md-icon-button" ng-click="vm.deleteSelectedReports($event)" aria-label="delete selected" translate translate-attr-label="ANALYTICS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div layout="column" flex="30">\n      <md-card class="padding-top-5 padding-horizontal-10 padding-bottom-0">\n        \x3c!-- SEARCH --\x3e\n        <div layout="row" layout-align="start center">\n          <label for="searchFolder" class="m-0">\n            <md-icon md-font-icon="icon-magnify"></md-icon>\n          </label>\n          <md-input-container md-no-float class="margin-horizontal-0 margin-bottom-0 margin-top-10" flex>\n            <input id="searchFolder" placeholder="Search folder" type="text" ng-model="vm.search" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="ANALYTICS.SEARCH_FOR_FOLDER">\n          </md-input-container>\n        </div>\n        \x3c!-- / SEARCH --\x3e\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeDefaultConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n      </md-card>\n      <md-card class="padding-10 scrollable">\n        <div js-tree="vm.treeCustomConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n      </md-card>\n    </div>\n    <md-card flex="70">\n      <md-toolbar class="md-table-toolbar md-default">\n        <div class="md-toolbar-tools">\n          <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n          <p ng-if="vm.currentPath">\n            <span class="text-boxed">{{vm.currentPath}}</span>\n          </p>\n          <div flex></div>\n          <ms-search-bar on-search="vm.getReports()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300"></ms-search-bar>\n          <div flow-init flow-file-added="vm.importReport($file, $event, $flow)">\n            <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" aria-label="import report" translate translate-attr-label="ANALYTICS.IMPORT_REPORT" flow-btn>\n              <md-icon md-font-icon="icon-upload"></md-icon>\n            </md-button>\n          </div>\n          <md-button ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom" class="md-icon-button" ng-click="vm.createOrEditReport($event)" aria-label="add report" translate translate-attr-label="ANALYTICS.ADD_REPORT">\n            <md-icon md-font-icon="icon-plus"></md-icon>\n          </md-button>\n        </div>\n      </md-toolbar>\n      <md-table-container>\n        <table md-table md-row-select multiple ng-model="vm.selectedReports" md-progress="vm.promise">\n          <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n            <tr md-row>\n              <th md-column md-order-by="id" width="10px">{{ \'ANALYTICS.ID\' | translate }}</th>\n              <th md-column md-order-by="name">{{ \'ANALYTICS.NAME\' | translate }}</th>\n              <th md-column md-order-by="description">{{ \'ANALYTICS.DESCRIPTION\' | translate }}</th>\n              <th md-column md-order-by="createdAt">{{ \'ANALYTICS.CREATED_AT\' | translate }}</th>\n              <th md-column width="10px"></th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-hide="vm.reports.rows.length">\n              <td md-cell colspan="5">\n                <div layout="row" layout-align="center center">\n                  <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                </div>\n              </td>\n            </tr>\n            <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="id">{{report.id}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="name">{{report.name}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="description">{{report.description}}</td>\n              <td ng-click="!vm.crudPermissions.canEdit ? vm.currentNode.custom && vm.editstate(report, $event) : vm.currentNode.custom && vm.createOrEditReport($event, report)" md-cell class="createdAt">{{report.createdAt | date:\'medium\'}}</td>\n              <td md-cell class="actions">\n                <md-menu>\n                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="ANALYTICS.MORE" ng-click="$mdOpenMenu($event)">\n                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                  </md-button>\n\n                  <md-menu-content width="3">\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                      <md-button ng-click="vm.copydialog(report, $event)" translate="ANALYTICS.COPY_REPORT">\n                        Copy Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.previewdialog(report, $event)" translate="ANALYTICS.PREVIEW_REPORT">\n                        Preview Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.rundialog(report, $event)" translate="ANALYTICS.RUN_REPORT">\n                        Run Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item>\n                      <md-button ng-click="vm.downloadfile(report, $event)" translate="ANALYTICS.DOWNLOAD_JSON_REPORT">\n                        Download Json Report\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete && vm.currentNode.custom">\n                    </md-menu-divider>\n                    <md-menu-item ng-if="vm.crudPermissions.canEdit && vm.currentNode.custom">\n                      <md-button ng-click="vm.editstate(report, $event)" translate="ANALYTICS.EDIT_REPORT">\n                        Edit Report\n                      </md-button>\n                    </md-menu-item>\n\n                    <md-menu-item ng-if="vm.crudPermissions.canDelete && vm.currentNode.custom">\n                      <md-button ng-click="vm.deleteconfirm(report, $event)" translate="ANALYTICS.DELETE_REPORT">\n                        Delete Report\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n\n      <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.reports.count}}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n    </md-card>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/analytics/views/reports/run/dialog.html",'<md-dialog class="report-dialog" aria-label="Run Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.RUN_REPORT">Run Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.NAME">Name</label>\n        <input name="name" ng-model="vm.export.name" required md-autofocus>\n        <div ng-messages="reportForm.name.$error" ng-show="reportForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="ANALYTICS.FORMAT">FORMAT</label>\n        <md-select name="format" ng-model="vm.export.output" required>\n          <md-option value="csv">CSV</md-option>\n          <md-option value="xlsx">Excel (XLSX)</md-option>\n          <md-option value="pdf">PDF</md-option>\n          <md-option value="web">Web</md-option>\n        </md-select>\n        <div ng-messages="reportForm.format.$error" ng-show="reportForm.format.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="ANALYTICS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeFrom" mdp-placeholder="Date Range From" mdp-format="YYYY-MM-DD" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.dateRangeFrom.$error" ng-show="reportForm.dateRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="maxDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MAX_INVALID">Date Range From Max field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-date-picker mdp-open-on-click required name="dateRangeTo" mdp-placeholder="Date Range To" mdp-format="YYYY-MM-DD" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.dateRangeTo.$error" ng-show="reportForm.dateRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_REQUIRED">Date Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_TO_INVALID">Date Range From field is invalid</span>\n              </div>\n              <div ng-message="minDate">\n                <span translate="ANALYTICS.ERRORS.DATE_RANGE_FROM_MIN_INVALID">Date Range From Min field is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n      </div>\n      <div layout="row">\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeFrom" mdp-placeholder="Time Range From" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-max-date="vm.dateRangeTo" ng-model="vm.export.startDate">\n            <div ng-messages="reportForm.timeRangeFrom.$error" ng-show="reportForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex>\n          <mdp-time-picker required name="timeRangeTo" mdp-placeholder="Time Range To" mdp-format="HH:mm:ss" mdp-auto-switch="true" mdp-min-date="vm.dateRangeFrom" ng-model="vm.export.endDate">\n            <div ng-messages="reportForm.timeRangeTo.$error" ng-show="reportForm.timeRangeTo.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range From field is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="ANALYTICS.ERRORS.TIME_RANGE_TO_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.runReport($event)" class="send-button md-accent md-raised" ng-disabled="reportForm.$invalid" aria-label="RUN" translate="ANALYTICS.RUN_REPORT" translate-attr-aria-label="ANALYTICS.RUN_REPORT">\n          RUN REPORT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.refreshDate()" aria-label="REFRESH" translate translate-attr-aria-label="ANALYTICS.REFRESH">\n          <md-icon md-font-icon="icon-refresh"></md-icon>\n          <md-tooltip><span translate="ANALYTICS.REFRESH">REFRESH</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/analytics/views/reports/run/web/dialog.html",'<md-dialog class="web-dialog" aria-label="Show Report">\n  <form name="reportForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="ANALYTICS.WEB_REPORT">Web Report</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div ng-if="vm.error" class="h2 secondary-text" translate="ANALYTICS.ERROR">ERROR</div>\n        </div>\n        <dl ng-if="vm.error">\n          <dt class="text-bold" translate="ANALYTICS.QUERY_ERROR">Query Error</dt>\n          <dd>{{vm.error.sql}}</dd>\n          <dt translate="ANALYTICS.MESSAGE">Message</dt>\n          <dd>{{vm.error.msg}}</dd>\n        </dl>\n        <md-table-container ng-if="!vm.error">\n          <table md-table md-progress="vm.promise">\n            <thead md-head>\n              <tr md-row>\n                <th md-column ng-repeat="column in vm.columns">{{column.alias || column.field}}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-repeat="row in vm.results.rows">\n                <td md-cell ng-repeat="(key, value) in row">{{ vm.valueReplacer(key, value) }}</td>\n              </tr>\n              <tr md-row ng-if="!vm.results.rows.length">\n                <td md-cell colspan="{{vm.columns.length}}">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_DATA">NO DATA</span>\n                  </div>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'ANALYTICS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'ANALYTICS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'ANALYTICS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.results.count}}" md-on-paginate="vm.getResults" md-page-select></md-table-pagination>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div flex></div>\n      <md-button type="submit" ng-click="vm.closeDialog()" class="md-raised" aria-label="CLOSE" translate="ANALYTICS.CLOSE" translate-attr-aria-label="ANALYTICS.CLOSE">\n        CLOSE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/create/dialog.html",'<md-dialog class="odbc-dialog" aria-label="New Odbc">\n  <form name="odbcForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.odbc.name" ng-required="true" autofocus>\n\n        <div ng-messages="odbcForm[\'name\'].$error" ng-show="odbcForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DSN">DSN</label>\n        <input type="text" name="dsn" ng-model="vm.odbc.dsn" ng-required="true">\n\n        <div class="hint"><span translate="CALLYSQUARE.HELP.DSN"></span></div>\n        <div ng-messages="odbcForm[\'dsn\'].$error" ng-show="odbcForm[\'dsn\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DSN_REQUIRED">DSN field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.odbc.description">\n\n        <div ng-messages="odbcForm[\'description\'].$error" ng-show="odbcForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOdbc" ng-click="vm.saveOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid || odbcForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOdbc" ng-click="vm.addNewOdbc()" class="send-button md-accent md-raised" ng-disabled="odbcForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_ODBC" translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n          ADD ODBC\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOdbc" ng-click="vm.deleteOdbc($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/odbcs/odbcs.html",'<div id="odbcs" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.ODBC">ODBC</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedODBC.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedODBC =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-odbcs-count">\n          <span>{{vm.selectedODBC.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllODBC()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectODBC()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedODBC" csv-label="true" filename="odbcs.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedODBC($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ODBC TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedODBC" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getODBC">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="dsn">{{ \'CALLYSQUARE.DSN\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.odbcs.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="odbc" md-select-id="id" ng-repeat="odbc in vm.odbcs.rows">\n                <td md-cell ng-if="odbc.userpic"><img class="avatar" alt="{{odbc.name}}" ng-src="api/users/{{odbc.id}}/avatar" /></td>\n                <td md-cell ng-if="!odbc.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{odbc.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="id ">{{odbc.id}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="name ">{{odbc.name}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="dsn ">{{odbc.dsn}}</td>\n                <td ng-click="vm.createOrEditOdbc($event, odbc)" md-cell class="description ">{{odbc.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(odbc, $event    )" translate="CALLYSQUARE.EDIT_ODBC">\n                          Edit Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestOdbc(odbc, $event    )" translate="CALLYSQUARE.TEST_ODBC">\n                          Test Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(odbc, $event    )" translate="CALLYSQUARE.DELETE_ODBC">\n                          Delete Odbc\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.odbcs.count}}" md-on-paginate="vm.getODBC" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ODBC TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ODBC BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-odbc-button" ng-click="vm.createOrEditOdbc($event)" aria-label="add odbc" translate translate-attr-aria-label="CALLYSQUARE.ADD_ODBC">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ODBC BUTTON --\x3e\n</div>'),e.put("app/main/apps/callysquare/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{vm.title | translate}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-disabled="!vm.newProject">\n        <div ng-messages="projectForm.name.$error" ng-show="projectForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description">\n        <div ng-messages="projectForm.description.$error" ng-show="projectForm.description.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.openFromEditor" class="md-block">\n        \x3c!-- Added to check if I\'m opening the dialog directly from the square editor --\x3e\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="ADD" translate="CALLYSQUARE.ADD_PROJECT" translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/dialog/dialog.html",'<md-dialog class="project-dialog" aria-label="New dialog" ng-init="vm.onInit()">\n  <form name="dialogForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT"></span> <span translate="CALLYSQUARE.{{vm.cellName | uppercase}}"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block" ng-repeat="attribute in vm.attributes" ng-switch="attribute.name">\n        <label translate="CALLYSQUARE.{{attribute.name | uppercase}}">{{attribute.name | ucfirst }}</label>\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="answer|trunk_name|trunk_id|queue_id|file_id|variable_id|google_cloud_tts_text_type|google_tts_language|ispeech_tts_language|ispeech_asr_language|google_asr_language|hiddendigitspos|odbc_id|project_id|beep|account_id|interval_id|template_id|list_id|recordingFormat|callback_priority|aws_polly_voice|aws_polly_region|aws_lex_region|sms_account_id|findBy|pause_id|aws_text_type|dialogflow_language|ndagenerate_audio|ndaactivity_type|languageCode|ssmlGender|method|dialogflowV2_language" ng-required="attribute.required">\n          <md-option ng-if="attribute.defaultValue" ng-value="\'\'"> - None - </md-option>\n          <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START SELECT INPUT --\x3e\n        <md-select name="{{attribute.name}}" ng-model="attribute.value" ng-disabled="!vm.crudPermissions.canEdit" ng-switch-when-separator="|" ng-switch-when="sip_id" ng-required="attribute.required">\n          <md-optgroup label="{{\'CALLYSQUARE.AGENTS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'agent\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.TELEPHONES\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'telephone\'" ng-disabled="v.canSelect === false">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{\'CALLYSQUARE.USERS\' | translate}}">\n            <md-option value="{{v.value}}" ng-repeat="v in vm.values[attribute.name]" ng-if="v.group === \'admin\' || v.group === \'user\'">{{v.option}}</md-option>\n          </md-optgroup>\n          <md-option ng-if="!vm.values[attribute.name].length" value="-1">No {{attribute.name}} available!</md-option>\n        </md-select>\n        \x3c!--  END SELECT INPUT --\x3e\n\n        \x3c!--  START NUMBER INPUT --\x3e\n        <div ng-switch-when="timeout">\n          <div ng-switch="vm.cellName">\n            <input ng-switch-when-separator="|" ng-switch-when="answer|ext_dial|dial|queue" type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="record|ispeechasr|googleasr" type="number" step="any" name="{{attribute.name}}" min="-1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-when-separator="|" ng-switch-when="restapi" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n            <input ng-switch-default type="number" step="any" name="{{attribute.name}}" min="0" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n          </div>\n        </div>\n        <input ng-switch-when-separator="|" ng-switch-when="speed" type="number" step="any" name="{{attribute.name}}" min="-10" max="-10" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="maxdigit|mindigit|digit" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        <input ng-switch-when-separator="|" ng-switch-when="retry|response|hiddendigitsnum|priority" type="number" step="any" name="{{attribute.name}}" min="1" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit" string-to-number>\n        \x3c!--  END NUMBER INPUT --\x3e\n\n        \x3c!--  START TEXTAREA INPUT --\x3e\n        <textarea name="{{attribute.name}}" ng-model="attribute.value" ng-switch-when-separator="|" ng-switch-when="query|sms_text|condition|text|custom_action_data|headers|body|rawHeaders|rawBody|private_key" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n        \x3c!--  END TEXTAREA INPUT --\x3e\n\n        \x3c!-- START URL INPUT --\x3e\n        <input ng-switch-when-separator="|" ng-switch-when="ndauth_url|ndassistant_url|url" type="url" name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required">\n        \x3c!-- END URL INPUT --\x3e\n\n        \x3c!--  START TEXT INPUT --\x3e\n        <input ng-switch-default name="{{attribute.name}}" ng-model="attribute.value" ng-required="attribute.required" ng-disabled="!vm.crudPermissions.canEdit">\n        <div class=\'hint\' ng-if="attribute.name === \'text\' && vm.cellName === \'tts\' ">\n          <span translate="CALLYSQUARE.HELP.MAX_TEXT_TTS" class="ng-scope">Max 250 chars are supported</span>\n        </div>\n        \x3c!--  END TEXT INPUT--\x3e\n\n        <div class="hint" ng-if="attribute.help">\n          <span translate="CALLYSQUARE.HELP.{{attribute.name | uppercase}}"></span>\n        </div>\n        <div ng-messages="dialogForm[attribute.name].$error" ng-show="dialogForm[attribute.name].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FIELD_REQUIRED">The field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="vm.crudPermissions.canEdit">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="dialogForm.$invalid || dialogForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/edit/edit.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="editForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.EDIT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label>XML</label>\n        <textarea name="preproduction" ng-model="vm.project.preproduction"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="editForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/import/import.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.IMPORT_XML"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="xml-uploader" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-file-added="vm.fileAdded($file)" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="CALLYSQUARE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="CALLYSQUARE.DROP_TO_UPLOAD_MESSAGE">You can also drop files here to upload. Only XML - Max. 5MB</span>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" ng-disabled="importForm.$invalid" aria-label="CLOSE" translate="CALLYSQUARE.CLOSE" translate-attr-aria-label="CALLYSQUARE.CLOSE">\n          CLOSE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/info/info.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="descriptionFrom" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.UPDATE_INFO"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.DESCRIPTION">Description</label>\n        <input name="description" ng-model="vm.project.description" md-autofocus>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NOTES">Description</label>\n        <textarea name="notes" ng-model="vm.project.notes"></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="descriptionFrom.$invalid" aria-label="SAVE" translate="CALLYSQUARE.UPDATE_INFO" translate-attr-aria-label="CALLYSQUARE.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/open/open.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="openForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.OPEN_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.PROJECT">Project</label>\n        <md-select name="id" ng-model="vm.id" required>\n          <md-option value="{{p.id}}" ng-repeat="p in vm.projects">{{p.name}}</md-option>\n        </md-select>\n        <div ng-messages="openForm.id.$error" ng-show="openForm.id.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.PROJECT_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.closeDialog(true)" class="send-button md-accent md-raised" ng-disabled="openForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.OPEN_PROJECT" translate-attr-aria-label="CALLYSQUARE.OPEN">\n          OPEN\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/saveAs/saveAs.html",'<md-dialog class="project-dialog" aria-label="New dialog">\n  <form name="newForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title"><span translate="CALLYSQUARE.COPY_PROJECT"></span></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.NAME">Name</label>\n        <input name="name" ng-model="vm.project.name" required md-autofocus>\n        <div ng-messages="newForm.name.$error" ng-show="newForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.newWindow" aria-label="{{\'CALLYSQUARE.OPEN_NEW_WINDOW\' | translate }}"><span translate="CALLYSQUARE.OPEN_NEW_WINDOW"></span></md-switch>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.save()" class="send-button md-accent md-raised" ng-disabled="newForm.$invalid" aria-label="SAVE" translate="CALLYSQUARE.COPY_PROJECT" translate-attr-aria-label="CALLYSQUARE.COPY">\n          COPY\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/projects/edit/view.html",'<div id="callysquare-project" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="CALLYSQUARE.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/cprojects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}} {{vm.project.name}}\n          </div>\n          <div class="subtitle secondary-text text-truncate">\n            <span ng-if="vm.project.description">{{vm.project.description}} - </span><span translate="CALLYSQUARE.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-if="vm.crudPermissions.canEdit" ng-click="vm.updateInfo($event)" class="md-fab md-yellow-700-bg md-icon-button" aria-label="edit">\n        <md-icon md-font-icon="icon-tooltip-edit"></md-icon>\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <md-content class="callysquare-content">\n\n    <div id="geEditor" class="geEditor"></div>\n\n  </md-content>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-vector-square" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'CALLYSQUARE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CALLYSQUARE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CALLYSQUARE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="notes">{{ \'CALLYSQUARE.NOTES\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="notes ">{{project.notes}}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(project, ev)" translate="CALLYSQUARE.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(project, ev)" translate="CALLYSQUARE.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button class="md-fab md-accent md-icon-button" id="add-project-button" ng-if="vm.crudPermissions.canEdit" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="CALLYSQUARE.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n\n</div>'),e.put("app/main/apps/callysquare/views/squareRecordings/create/dialog.html",'<md-dialog class="squareRecording-dialog" aria-label="New SquareRecording">\n  <form name="squareRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CALLYSQUARE.FILENAME">Filename</label>\n        <input type="" name="filename" ng-model="vm.squareRecording.filename" ng-required="true" autofocus>\n\n        <div ng-messages="squareRecordingForm[\'filename\'].$error" ng-show="squareRecordingForm[\'filename\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CALLYSQUARE.ERRORS.FILENAME_REQUIRED">Filename field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSquareRecording" ng-click="vm.saveSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid || squareRecordingForm.$pristine" aria-label="SAVE" translate="CALLYSQUARE.SAVE" translate-attr-aria-label="CALLYSQUARE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSquareRecording" ng-click="vm.addNewSquareRecording()" class="send-button md-accent md-raised" ng-disabled="squareRecordingForm.$invalid" aria-label="ADD" translate="CALLYSQUARE.ADD_SQUARERECORDING" translate-attr-aria-label="CALLYSQUARE.ADD_SQUARERECORDING">\n          ADD SQUARERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSquareRecording" ng-click="vm.deleteSquareRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="CALLYSQUARE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CALLYSQUARE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/callysquare/views/squareRecordings/squareRecordings.html",'<div id="squareRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-sitemap" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CALLYSQUARE.SQUARERECORDINGS">SquareRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CALLYSQUARE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSquareRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSquareRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CALLYSQUARE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-squareRecordings-count">\n          <span>{{vm.selectedSquareRecordings.length}}</span>\n          <span translate="CALLYSQUARE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CALLYSQUARE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSquareRecordings()" translate="CALLYSQUARE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSquareRecordings()" translate="CALLYSQUARE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSquareRecordings" csv-label="true" filename="squareRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSquareRecordings($event)" aria-label="delete selected" translate translate-attr-label="CALLYSQUARE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SQUARERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSquareRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSquareRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="filename">{{ \'CALLYSQUARE.FILENAME\' | translate }}</th>\n                <th md-column md-order-by="projectName">{{ \'CALLYSQUARE.PROJECT\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'CALLYSQUARE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="callerid">{{ \'CALLYSQUARE.PHONE\' | translate }}</th>\n                <th md-column md-order-by="extension">{{ \'CALLYSQUARE.EXTEN\' | translate }}</th>\n                <th md-column>{{ \'CALLYSQUARE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'CALLYSQUARE.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.squareRecordings.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CALLYSQUARE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="squareRecording" md-select-id="id" ng-repeat="squareRecording in vm.squareRecordings.rows">\n                <td md-cell ng-if="squareRecording.userpic"><img class="avatar" alt="{{squareRecording.name}}" ng-src="api/users/{{squareRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!squareRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{squareRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="filename ">{{squareRecording.filename}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="projectName ">{{squareRecording.projectName}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="uniqueid ">{{squareRecording.uniqueid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="callerid ">{{squareRecording.callerid}}</td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="extension ">{{squareRecording.extension}}</td>\n                <td md-cell class="audio " ng-switch="squareRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="squareRecording.id" model="\'squareRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.createOrEditSquareRecording($event, squareRecording)" md-cell class="createdAt ">{{squareRecording.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CALLYSQUARE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadCallySquareRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(squareRecording, $event  , \'square/recordings\'   )" translate="CALLYSQUARE.DOWNLOAD_SQUARERECORDING">\n                          Download SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(squareRecording, $event    )" translate="CALLYSQUARE.DELETE_SQUARERECORDING">\n                          Delete SquareRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CALLYSQUARE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CALLYSQUARE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CALLYSQUARE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.squareRecordings.count}}" md-on-paginate="vm.getSquareRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SQUARERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/chatQueues.html",'<div id="chatQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATQUEUES">ChatQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatQueues-count">\n          <span>{{vm.selectedChatQueues.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatQueues()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatQueues()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatQueues" csv-label="true" filename="chatQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatQueues($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'CHAT.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatQueue" md-select-id="id" ng-repeat="chatQueue in vm.chatQueues.rows">\n                <td md-cell ng-if="chatQueue.userpic"><img class="avatar" alt="{{chatQueue.name}}" ng-src="api/users/{{chatQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="id ">{{chatQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="name ">{{chatQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatQueue, ev) : vm.createOrEditChatQueue($event, chatQueue)" md-cell class="strategy ">{{ vm.arraystrategy[chatQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatQueue, $event    )" translate="CHAT.EDIT_CHATQUEUE">\n                          Edit ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(chatQueue, $event    )" translate="CHAT.TEAMADD_CHATQUEUE">\n                          teamadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatQueue, $event    )" translate="CHAT.AGENTADD_CHATQUEUE">\n                          agentadd ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatQueue, $event    )" translate="CHAT.DELETE_CHATQUEUE">\n                          Delete ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(chatQueue, $event    )" translate="CHAT.GOTOREALTIME_CHATQUEUE">\n                          goToRealtime ChatQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatQueues.count}}" md-on-paginate="vm.getChatQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatQueue-button" ng-click="vm.createOrEditChatQueue($event)" aria-label="add chatQueue" translate translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatQueues/create/dialog.html",'<md-dialog class="chatQueue-dialog" aria-label="New ChatQueue">\n  <form name="chatQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newChatQueue">\n\n        <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n        <div ng-messages="chatQueueForm[\'name\'].$error" ng-show="chatQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.chatQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="chatQueueForm[\'strategy\'].$error" ng-show="chatQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="chatQueueForm[\'timeout\'].$error" ng-show="chatQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatQueue.description">\n\n        <div ng-messages="chatQueueForm[\'description\'].$error" ng-show="chatQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatQueue" ng-click="vm.saveChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid || chatQueueForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatQueue" ng-click="vm.addNewChatQueue()" class="send-button md-accent md-raised" ng-disabled="chatQueueForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATQUEUE" translate-attr-aria-label="CHAT.ADD_CHATQUEUE">\n          ADD CHATQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatQueue" ng-click="vm.deleteChatQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/agentadd/agentadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATQUEUE">Add Agent to chatQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/teamadd/teamadd.html",'<md-dialog class="chatQueue-dialog" aria-label="chatQueue" ng-init="vm.onInit()">\n  <form name="chatQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatQueues/edit/view.html",'<div id="chat-chatQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatQueues-button md-icon-button" aria-label="Go to chatQueues" ng-click="vm.gotoChatQueues()" translate translate-attr-aria-label="CHAT.GO_TO_CHATQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatQueue-image" hide-xs>\n          <img ng-src="assets/images/business/chatQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatQueue.id}}\n            <span ng-if="vm.chatQueue.name">{{vm.chatQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.chatQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="CHAT.TEAMADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="CHAT.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="CHAT.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.chatQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/chatWebsites.html",'<div id="chatWebsites" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-hangouts" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CHAT.CHATWEBSITES">ChatWebsites</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CHAT.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChatWebsites.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChatWebsites =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CHAT.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chatWebsites-count">\n          <span>{{vm.selectedChatWebsites.length}}</span>\n          <span translate="CHAT.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CHAT.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChatWebsites()" translate="CHAT.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChatWebsites()" translate="CHAT.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChatWebsites" csv-label="true" filename="chatWebsites.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChatWebsites($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHATWEBSITE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChatWebsites" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatWebsites">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'CHAT.KEY\' | translate }}</th>\n                <th md-column md-order-by="address">{{ \'CHAT.MOTIONADDRESS\' | translate }}</th>\n                <th md-column md-order-by="remote">{{ \'CHAT.MOTIONPROXY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chatWebsites.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chatWebsite" md-select-id="id" ng-repeat="chatWebsite in vm.chatWebsites.rows">\n                <td md-cell ng-if="chatWebsite.userpic"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="api/users/{{chatWebsite.id}}/avatar" /></td>\n                <td md-cell ng-if="!chatWebsite.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chatWebsite.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="id ">{{chatWebsite.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="name ">{{chatWebsite.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="key ">{{chatWebsite.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="address ">{{chatWebsite.address}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="remote ">{{chatWebsite.remote}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chatWebsite, ev) : vm.createOrEditChatWebsite($event, chatWebsite)" md-cell class="description ">{{chatWebsite.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(chatWebsite, $event    )" translate="CHAT.EDIT_CHATWEBSITE">\n                          Edit ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(chatWebsite, $event    )" translate="CHAT.INTERACTIONS_CHATWEBSITE">\n                          Interactions ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.offlinemessagesgoto(chatWebsite, $event    )" translate="CHAT.OFFLINEMESSAGES_CHATWEBSITE">\n                          OfflineMessages ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(chatWebsite, $event    )" translate="CHAT.AGENTADD_CHATWEBSITE">\n                          AgentAdd ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chatWebsite, $event    )" translate="CHAT.DELETE_CHATWEBSITE">\n                          Delete ChatWebsite\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatWebsites.count}}" md-on-paginate="vm.getChatWebsites" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHATWEBSITE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHATWEBSITE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chatWebsite-button" ng-click="vm.createOrEditChatWebsite($event)" aria-label="add chatWebsite" translate translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHATWEBSITE BUTTON --\x3e\n</div>'),e.put("app/main/apps/chat/views/chatWebsites/create/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus ng-disabled="!vm.newChatWebsite">\n\n        <div ng-messages="chatWebsiteForm[\'name\'].$error" ng-show="chatWebsiteForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'key\'].$error" ng-show="chatWebsiteForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n        <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="chatWebsiteForm[\'address\'].$error" ng-show="chatWebsiteForm[\'address\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.chatWebsite.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="chatWebsiteForm[\'remote\'].$error" ng-show="chatWebsiteForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n        <div ng-messages="chatWebsiteForm[\'ListId\'].$error" ng-show="chatWebsiteForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId">\n          <md-option ng-value="null">Always</md-option>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteForm[\'IntervalId\'].$error" ng-show="chatWebsiteForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatWebsite.description">\n\n        <div ng-messages="chatWebsiteForm[\'description\'].$error" ng-show="chatWebsiteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatWebsite" ng-click="vm.saveChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid || chatWebsiteForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatWebsite" ng-click="vm.addNewChatWebsite()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATWEBSITE" translate-attr-aria-label="CHAT.ADD_CHATWEBSITE">\n          ADD CHATWEBSITE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatWebsite" ng-click="vm.deleteChatWebsite($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/agentadd/agentadd.html",'<md-dialog class="chatWebsite-dialog" aria-label="chatWebsite" ng-init="vm.onInit()">\n  <form name="chatWebsiteForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CHAT.AGENTADD_CHATWEBSITE">Add Agent to chatWebsite</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/agent/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'agent\'].$error" ng-show="chatWebsiteFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/amazonlex/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'accesskeyid\'].$error" ng-show="chatWebsiteFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'secretaccesskey\'].$error" ng-show="chatWebsiteFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'lexregion\'].$error" ng-show="chatWebsiteFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'botname\'].$error" ng-show="chatWebsiteFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/autoreply/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'times\'].$error" ng-show="chatWebsiteFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'text\'].$error" ng-show="chatWebsiteFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/close/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'disposition\'].$error" ng-show="chatWebsiteFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflow/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'key\'].$error" ng-show="chatWebsiteFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'projectId\'].$error" ng-show="chatWebsiteFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'clientEmail\'].$error" ng-show="chatWebsiteFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="chatWebsiteFormApp[\'privateKey\'].$error" ng-show="chatWebsiteFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'language\'].$error" ng-show="chatWebsiteFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="CHAT.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="chatWebsiteFormApp[\'welcomemessage\'].$error" ng-show="chatWebsiteFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="CHAT.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotoif/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'condition\'].$error" ng-show="chatWebsiteFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'truepriority\'].$error" ng-show="chatWebsiteFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'falsepriority\'].$error" ng-show="chatWebsiteFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/gotop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'priority\'].$error" ng-show="chatWebsiteFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/noop/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'value\'].$error" ng-show="chatWebsiteFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/queue/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'queue\'].$error" ng-show="chatWebsiteFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'timeout\'].$error" ng-show="chatWebsiteFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/system/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'command\'].$error" ng-show="chatWebsiteFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'variable\'].$error" ng-show="chatWebsiteFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tag/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="chatWebsiteFormApp[\'tag\'].$error" ng-show="chatWebsiteFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/apps/tvox/dialog.html",'<md-dialog class="chatWebsite-dialog" aria-label="New ChatWebsite">\n  <form name="chatWebsiteFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.SERVICEID">serviceid</label>\n        <input type="text" name="serviceid" ng-model="vm.tvox.serviceid" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'serviceid\'].$error" ng-show="chatWebsiteFormApp[\'serviceid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SERVICEID_REQUIRED">serviceid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.CHANNELID">channelid</label>\n        <input type="text" name="channelid" ng-model="vm.tvox.channelid" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'channelid\'].$error" ng-show="chatWebsiteFormApp[\'channelid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.CHANNELID_REQUIRED">channelid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXURL">tvoxurl</label>\n        <input type="text" name="tvoxurl" ng-model="vm.tvox.tvoxurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXURL_REQUIRED">tvoxurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXLOGINURL">tvoxloginurl</label>\n        <input type="text" name="tvoxloginurl" ng-model="vm.tvox.tvoxloginurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxloginurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxloginurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXLOGINURL_REQUIRED">tvoxloginurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXSESSIONURL">tvoxsessionurl</label>\n        <input type="text" name="tvoxsessionurl" ng-model="vm.tvox.tvoxsessionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxsessionurl\'].$error" ng-show="chatWebsiteFormApp[\'tvoxsessionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXSESSIONURL_REQUIRED">tvoxsessionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXUSERNAME">tvoxusername</label>\n        <input type="text" name="tvoxusername" ng-model="vm.tvox.tvoxusername" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'tvoxusername\'].$error" ng-show="chatWebsiteFormApp[\'tvoxusername\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TVOXUSERNAME_REQUIRED">tvoxusername field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TVOXPASSWD">tvoxpasswd</label>\n        <input type="password" name="tvoxpasswd" ng-model="vm.tvox.tvoxpasswd" placeholder="Password" translate translate-attr-placeholder="CHAT.PASSWORD">\n        <div ng-messages="chatWebsiteFormApp[\'tvoxpasswd\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="CHAT.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONRING">motionurlonring</label>\n        <input type="text" name="motionurlonring" ng-model="vm.tvox.motionurlonring" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonring\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonring\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONRING_REQUIRED">motionurlonring field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURLONANSWER">motionurlonanswer</label>\n        <input type="text" name="motionurlonanswer" ng-model="vm.tvox.motionurlonanswer" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurlonanswer\'].$error" ng-show="chatWebsiteFormApp[\'motionurlonanswer\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURLONANSWER_REQUIRED">motionurlonanswer field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONTITLE">motiontitle</label>\n        <input type="text" name="motiontitle" ng-model="vm.tvox.motiontitle" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motiontitle\'].$error" ng-show="chatWebsiteFormApp[\'motiontitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONTITLE_REQUIRED">motiontitle field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.MOTIONURL">motionurl</label>\n        <input type="text" name="motionurl" ng-model="vm.tvox.motionurl" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="chatWebsiteFormApp[\'motionurl\'].$error" ng-show="chatWebsiteFormApp[\'motionurl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.MOTIONURL_REQUIRED">motionurl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveChatWebsiteApp()" class="send-button md-accent md-raised" ng-disabled="chatWebsiteFormApp.$invalid || chatWebsiteFormApp.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/chatCannedAnswers/dialog.html",'<md-dialog class="chatCannedAnswer-dialog" aria-label="New ChatCannedAnswer">\n  <form name="chatCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.chatCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="chatCannedAnswerForm[\'key\'].$error" ng-show="chatCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.chatCannedAnswer.value" required></textarea>\n\n        <div ng-messages="chatCannedAnswerForm[\'value\'].$error" ng-show="chatCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chatCannedAnswer.description">\n\n        <div ng-messages="chatCannedAnswerForm[\'description\'].$error" ng-show="chatCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatCannedAnswer" ng-click="vm.saveChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid || chatCannedAnswerForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatCannedAnswer" ng-click="vm.addNewChatCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="chatCannedAnswerForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATCANNEDANSWER" translate-attr-aria-label="CHAT.ADD_CHATCANNEDANSWER">\n          ADD CHATCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatCannedAnswer" ng-click="vm.deleteChatCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/offlineMessages/dialog.html",'<md-dialog class="offlineMessage-dialog" aria-label="New OfflineMessage">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.title | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-content flex layout-padding>\n    <pre ng-if="vm.isHtml">{{vm.message.body}}</pre>\n    <div ng-if="!vm.isHtml" ng-bind-html-unsafe="vm.message.body"></div>\n\n    <span ng-repeat="attachment in vm.attachments">\n      <md-button class="md-icon-button no-margin no-padding" ng-click="vm.download(attachment)">\n        <md-icon class="no-margin material-icons" aria-label="Attachment">attach_file</md-icon>\n      </md-button>\n      <span>{{attachment.name}}</span><br />\n    </span>\n  </md-content>\n\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/proactive/dialog.html",'<md-dialog class="chatProactiveAction-dialog" aria-label="New ChatProactiveAction">\n  <form name="chatProactiveActionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CHAT.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.chatProactiveAction.name" ng-required="true" autofocus>\n\n        <div ng-messages="chatProactiveActionForm[\'name\'].$error" ng-show="chatProactiveActionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CHAT.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.chatProactiveAction.type">\n\n          <md-option ng-value="\'mouseOver\'"> {{ \'CHAT.MOUSEOVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'timeout\'"> {{ \'CHAT.TIMEOUT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="chatProactiveActionForm[\'type\'].$error" ng-show="chatProactiveActionForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'mouseOver\'" class="md-block">\n        <label translate="CHAT.SELECTOR">Selector</label>\n        <input type="" name="selector" ng-model="vm.chatProactiveAction.selector" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'selector\'].$error" ng-show="chatProactiveActionForm[\'selector\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.SELECTOR_REQUIRED">Selector field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.chatProactiveAction.type === \'timeout\'" class="md-block">\n        <label translate="CHAT.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.chatProactiveAction.timeout" min="1" ng-required="true">\n\n        <div ng-messages="chatProactiveActionForm[\'timeout\'].$error" ng-show="chatProactiveActionForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="CHAT.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newChatProactiveAction" ng-click="vm.saveChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid || chatProactiveActionForm.$pristine" aria-label="SAVE" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newChatProactiveAction" ng-click="vm.addNewChatProactiveAction()" class="send-button md-accent md-raised" ng-disabled="chatProactiveActionForm.$invalid" aria-label="ADD" translate="CHAT.ADD_CHATPROACTIVEACTION" translate-attr-aria-label="CHAT.ADD_CHATPROACTIVEACTION">\n          ADD CHATPROACTIVEACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newChatProactiveAction" ng-click="vm.deleteChatProactiveAction($event)" aria-label="DELETE" translate translate-attr-aria-label="CHAT.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CHAT.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/chat/views/chatWebsites/edit/view.html",'<div id="chat-chatWebsite" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-chatWebsites-button md-icon-button" aria-label="Go to chatWebsites" ng-click="vm.gotoChatWebsites()" translate translate-attr-aria-label="CHAT.GO_TO_CHATWEBSITES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="chatWebsite-image" hide-xs>\n          <img ng-src="assets/images/business/chatWebsites.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.chatWebsite.id}}\n            <span ng-if="vm.chatWebsite.name">{{vm.chatWebsite.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CHAT.CREATED_AT"></span> <span>{{vm.chatWebsite.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.chatWebsite, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CHAT.AGENTADD_CHATWEBSITE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveChatWebsite()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (scriptForm.$invalid) || (intervalForm.$invalid) || (dispositionForm.$invalid) || (appearanceForm.$invalid) || (onlinestatusForm.$invalid) || (offlinestatusForm.$invalid) || (closingformForm.$invalid) || (unmanagedstatusForm.$invalid) || (interactionForm.$invalid) || (whitelabelForm.$invalid) || (logoForm.$invalid) || (agentAvatarForm.$invalid) || (customerAvatarForm.$invalid) || (systemAvatarForm.$invalid) || (chatFormOnlineForm.$invalid) || (chatFormOfflineForm.$invalid) || (proactiveForm.$invalid) || (chatDispositionsForm.$invalid) || (chatCannedAnswersForm.$invalid) || (vidaooForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid) || (offlineMessagesForm.$invalid)" translate="CHAT.SAVE" translate-attr-aria-label="CHAT.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.chatWebsite.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.chatWebsite.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MOTIONADDRESS">MotionAddress</label>\n                <input type="url" name="address" ng-model="vm.chatWebsite.address" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'address\'].$error" ng-show="generalForm[\'address\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_REQUIRED">MotionAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MUST_VALID_URL">MotionAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.MOTIONADDRESS_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionAddress must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.chatWebsite.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.fidelity" class="md-block">\n                <label translate="CHAT.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.chatWebsite.timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.chatWebsite.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.chatWebsite.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="CHAT.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.chatWebsite.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.queueTransfer == true" class="md-block">\n                <label translate="CHAT.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.chatWebsite.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentTransfer == true" class="md-block">\n                <label translate="CHAT.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.chatWebsite.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container script md-background-bg md-whiteframe-1dp">\n            <form name="scriptForm" flex="100" novalidate>\n              <div ng-controller="ChatWebsiteScriptController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite)" class="content" md-background-bg>\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text" translate="CHAT.SCRIPT">SCRIPT</div>\n                </div>\n\n\n                <md-input-container class="md-block">\n                  <label translate="CHAT.TOKEN">Token</label>\n                  <input type="text" name="token" ng-model="vm_ac.chatWebsite.token" autofocus ng-disabled="true">\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.MOTIONPROXY">MotionProxy</label>\n                  <input type="url" name="remote" ng-model="vm_ac.chatWebsite.remote" required>\n                  <div class="hint"><span translate="CHAT.HELP.MOTIONPROXY"></span></div>\n                  <div ng-messages="scriptForm[\'remote\'].$error" ng-show="scriptForm[\'remote\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_REQUIRED">Motion Proxy field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="CHAT.ERRORS.MOTIONPROXY_MUST_VALID_URL">Motion Proxy must be a valid url e.g.: http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="CHAT.WEBSITESCRIPT">WebsiteScript</label>\n                  <div>\n                    <pre style="font-size: 13px;">\n                    {{vm_ac.start}} {{vm_ac.script}} {{vm_ac.end}}\n                    </pre>\n                  </div>\n                  <div class="hint"><span translate="CHAT.HELP.COPYSCRIPTTOCLIPBOARD"></span></div>\n                </md-input-container>\n\n              </div>\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERVAL">INTERVAL</div>\n            </div>\n            <form name="intervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.chatWebsite.IntervalId" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Always</md-option>\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="intervalForm[\'IntervalId\'].$error" ng-show="intervalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.TIMEZONE">Timezone</label>\n                <ms-timezone name="timezone" ng-model="vm.chatWebsite.timezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="CHAT.HELP.TIMEZONE"></span></div>\n                <div ng-messages="intervalForm[\'timezone\'].$error" ng-show="intervalForm[timezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.mandatoryDisposition" class="md-block">\n                <label translate="CHAT.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.chatWebsite.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.SNIPPET">SNIPPET</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container appearance md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.APPEARANCE">APPEARANCE</div>\n            </div>\n            <form name="appearanceForm" novalidate>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color" label="{{\'CHAT.MAINCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.color_button" label="{{\'CHAT.BUTTONCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textColor" label="{{\'CHAT.TEXTCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <div flex md-color-picker ng-model="vm.chatWebsite.backgroundColor" label="{{\'CHAT.BACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FONTSIZE">fontSize</label>\n                <input type="number" name="fontSize" ng-model="vm.chatWebsite.fontSize" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'fontSize\'].$error" ng-show="appearanceForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FONTSIZE_REQUIRED">fontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">fontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADERSHAPE">headershape</label>\n                <md-select name="header_shape" ng-model="vm.chatWebsite.header_shape" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'rounded\'"> {{ \'CHAT.ROUNDED\' | translate }} </md-option>\n\n                  <md-option ng-value="\'squared\'"> {{ \'CHAT.SQUARED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'header_shape\'].$error" ng-show="appearanceForm[\'header_shape\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADERSHAPE_REQUIRED">headershape field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showAgentAvatar" aria-label="ShowAgentAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWAGENTAVATAR">ShowAgentAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.showCustomerAvatar" aria-label="showCustomerAvatar" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.SHOWCUSTOMERAVATAR">showCustomerAvatar</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SNIPPETSWIPEOUT">snippetSwipeOut</label>\n                <md-select name="alignment" ng-model="vm.chatWebsite.alignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'bottom_right\'"> {{ \'CHAT.BOTTOM_RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'right\'"> {{ \'CHAT.RIGHT\' | translate }} </md-option>\n\n                  <md-option ng-value="\'left\'"> {{ \'CHAT.LEFT\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'alignment\'].$error" ng-show="appearanceForm[\'alignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SNIPPETSWIPEOUT_REQUIRED">snippetSwipeOut field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.alignment !== \'bottom_right\'" class="md-block">\n                <label translate="CHAT.VERTICALPOSITION">verticalPosition</label>\n                <input type="number" name="verticalAlignment" ng-model="vm.chatWebsite.verticalAlignment" min="0" max="100" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.VERTICALPOSITION"></span></div>\n                <div ng-messages="appearanceForm[\'verticalAlignment\'].$error" ng-show="appearanceForm[\'verticalAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_REQUIRED">verticalPosition field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO">verticalPosition must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGESALIGNMENT">messagesAlignment</label>\n                <md-select name="messagesAlignment" ng-model="vm.chatWebsite.messagesAlignment" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'alternate\'"> {{ \'CHAT.ALTERNATE\' | translate }} </md-option>\n\n                  <md-option ng-value="\'centered\'"> {{ \'CHAT.CENTERED\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="appearanceForm[\'messagesAlignment\'].$error" ng-show="appearanceForm[\'messagesAlignment\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.DEFAULTTITLE">defaultTitle</label>\n                <input type="text" name="defaultTitle" ng-model="vm.chatWebsite.defaultTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'defaultTitle\'].$error" ng-show="appearanceForm[\'defaultTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_REQUIRED">defaultTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.DEFAULTTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>defaultTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container onlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.ONLINESTATUS">ONLINESTATUS</div>\n            </div>\n            <form name="onlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_ONLINE">header_online</label>\n                <input type="text" name="header_online" ng-model="vm.chatWebsite.header_online" md-maxlength="255" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'header_online\'].$error" ng-show="onlinestatusForm[\'header_online\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_REQUIRED">header_online field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_ONLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_online must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.START_CHAT_BUTTON">start_chat_button</label>\n                <input type="text" name="start_chat_button" ng-model="vm.chatWebsite.start_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="onlinestatusForm[\'start_chat_button\'].$error" ng-show="onlinestatusForm[\'start_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_REQUIRED">start_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.START_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>start_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container offlinestatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.OFFLINESTATUS">OFFLINESTATUS</div>\n            </div>\n            <form name="offlinestatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.hideWhenOffline" aria-label="hideWhenOffline" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.HIDEWHENOFFLINE">hideWhenOffline</span></md-switch>\n                <div class="hint"><span translate="CHAT.HELP.HIDEWHENOFFLINE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.HEADER_OFFLINE">header_offline</label>\n                <input type="text" name="header_offline" ng-model="vm.chatWebsite.header_offline" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'header_offline\'].$error" ng-show="offlinestatusForm[\'header_offline\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_REQUIRED">header_offline field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.HEADER_OFFLINE_MAX_LENGTH" translate-values=\'{max: 255}\'>header_offline must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINE_CHAT_BUTTON">offline_chat_button</label>\n                <input type="text" name="offline_chat_button" ng-model="vm.chatWebsite.offline_chat_button" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offline_chat_button\'].$error" ng-show="offlinestatusForm[\'offline_chat_button\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_REQUIRED">offline_chat_button field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINE_CHAT_BUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>offline_chat_button must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGESUBJECT">offlineMessageSubject</label>\n                <input type="text" name="offlineMessageSubject" ng-model="vm.chatWebsite.offlineMessageSubject" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageSubject\'].$error" ng-show="offlinestatusForm[\'offlineMessageSubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_REQUIRED">offlineMessageSubject field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGESUBJECT_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageSubject must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.OFFLINEMESSAGEBODY">offlineMessageBody</label>\n                <input type="text" name="offlineMessageBody" ng-model="vm.chatWebsite.offlineMessageBody" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="offlinestatusForm[\'offlineMessageBody\'].$error" ng-show="offlinestatusForm[\'offlineMessageBody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_REQUIRED">offlineMessageBody field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.OFFLINEMESSAGEBODY_MAX_LENGTH" translate-values=\'{max: 255}\'>offlineMessageBody must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container closingform md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CLOSINGFORM">CLOSINGFORM</div>\n            </div>\n            <form name="closingformForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGE">closingMessage</label>\n                <textarea name="closingMessage" ng-model="vm.chatWebsite.closingMessage" md-maxlength="255" required autofocus></textarea>\n\n                <div ng-messages="closingformForm[\'closingMessage\'].$error" ng-show="closingformForm[\'closingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_REQUIRED">closingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPMESSAGEBUTTON">skipMessageButton</label>\n                <input type="text" name="skipMessageButton" ng-model="vm.chatWebsite.skipMessageButton" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'skipMessageButton\'].$error" ng-show="closingformForm[\'skipMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_REQUIRED">skipMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>skipMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableRating" aria-label="enableRating" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLERATING">enableRating</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating" class="md-block">\n                <label translate="CHAT.RATINGTYPE">ratingType</label>\n                <md-select name="ratingType" ng-model="vm.chatWebsite.ratingType" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'star\'">Star</md-option>\n                  <md-option ng-value="\'thumb\'">Thumb</md-option>\n                </md-select>\n                <div ng-messages="closingformForm[\'ratingType\'].$error" ng-show="closingformForm[\'ratingType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGTYPE_REQUIRED">ratingType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableRating && vm.chatWebsite.ratingType === \'star\'" class="md-block">\n                <label translate="CHAT.RATINGSTARSNUMBER">ratingStarsNumber</label>\n                <input type="number" name="ratingStarsNumber" ng-model="vm.chatWebsite.ratingStarsNumber" min="2" max="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'ratingStarsNumber\'].$error" ng-show="closingformForm[\'ratingStarsNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_REQUIRED">ratingStarsNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>2</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">ratingStarsNumber must be a valid greater or equal than</span> <span>5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableFeedback" aria-label="enableFeedback" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEFEEDBACK">enableFeedback</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableFeedback" class="md-block">\n                <label translate="CHAT.FEEDBACKTITLE">feedbackTitle</label>\n                <input type="text" name="feedbackTitle" ng-model="vm.chatWebsite.feedbackTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'feedbackTitle\'].$error" ng-show="closingformForm[\'feedbackTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_REQUIRED">feedbackTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FEEDBACKTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>feedbackTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.forwardTranscript" aria-label="forwardTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.FORWARDTRANSCRIPT">forwardTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.forwardTranscript" class="md-block">\n                <label translate="CHAT.FORWARDTRANSCRIPTMESSAGE">forwardTranscriptMessage</label>\n                <input type="text" name="forwardTranscriptMessage" ng-model="vm.chatWebsite.forwardTranscriptMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'forwardTranscriptMessage\'].$error" ng-show="closingformForm[\'forwardTranscriptMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_REQUIRED">forwardTranscriptMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORWARDTRANSCRIPTMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>forwardTranscriptMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGMESSAGEBUTTON">closingMessageButton</label>\n                <input type="text" name="closingMessageButton" ng-model="vm.chatWebsite.closingMessageButton" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="closingformForm[\'closingMessageButton\'].$error" ng-show="closingformForm[\'closingMessageButton\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_REQUIRED">closingMessageButton field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGMESSAGEBUTTON_MAX_LENGTH" translate-values=\'{max: 255}\'>closingMessageButton must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container unmanagedstatus md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.UNMANAGEDSTATUS">UNMANAGEDSTATUS</div>\n            </div>\n            <form name="unmanagedstatusForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.autoclose" aria-label="autoclose" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.AUTOCLOSE">autoclose</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableUnmanagedNote" aria-label="enableUnmanagedNote" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLEUNMANAGEDNOTE">enableUnmanagedNote</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.UNMANAGEDMESSAGE">unmanagedMessage</label>\n                <input type="text" name="unmanagedMessage" ng-model="vm.chatWebsite.unmanagedMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'unmanagedMessage\'].$error" ng-show="unmanagedstatusForm[\'unmanagedMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_REQUIRED">unmanagedMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.UNMANAGEDMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>unmanagedMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SKIPUNMANAGED">skipUnmanaged</label>\n                <input type="text" name="skipUnmanaged" ng-model="vm.chatWebsite.skipUnmanaged" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'skipUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'skipUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_REQUIRED">skipUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SKIPUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>skipUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.SENDUNMANAGED">sendUnmanaged</label>\n                <input type="text" name="sendUnmanaged" ng-model="vm.chatWebsite.sendUnmanaged" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'sendUnmanaged\'].$error" ng-show="unmanagedstatusForm[\'sendUnmanaged\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_REQUIRED">sendUnmanaged field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SENDUNMANAGED_MAX_LENGTH" translate-values=\'{max: 255}\'>sendUnmanaged must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.enableUnmanagedNote" class="md-block">\n                <label translate="CHAT.NOTETITLE">noteTitle</label>\n                <input type="text" name="noteTitle" ng-model="vm.chatWebsite.noteTitle" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="unmanagedstatusForm[\'noteTitle\'].$error" ng-show="unmanagedstatusForm[\'noteTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.NOTETITLE_REQUIRED">noteTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.NOTETITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>noteTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="chatWebsite-detail-form-container interaction md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.INTERACTION">INTERACTION</div>\n            </div>\n            <form name="interactionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CHAT.AGENTIDENTIFIER">agentIdentifier</label>\n                <md-select name="agentIdentifier" ng-model="vm.chatWebsite.agentIdentifier" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'website_alias\'"> {{ \'CHAT.WEBSITEALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_alias\'"> {{ \'CHAT.AGENTALIAS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'agent_fullname\'"> {{ \'CHAT.AGENTFULLNAME\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="CHAT.HELP.AGENTIDENTIFIER"></span></div>\n                <div ng-messages="interactionForm[\'agentIdentifier\'].$error" ng-show="interactionForm[\'agentIdentifier\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.AGENTIDENTIFIER_REQUIRED">agentIdentifier field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CUSTOMERALIAS">customerAlias</label>\n                <input type="text" name="customerAlias" ng-model="vm.chatWebsite.customerAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'customerAlias\'].$error" ng-show="interactionForm[\'customerAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_REQUIRED">customerAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CUSTOMERALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>customerAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.MESSAGEFONTSIZE">messageFontSize</label>\n                <input type="number" name="messageFontSize" ng-model="vm.chatWebsite.messageFontSize" min="0" max="20" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'messageFontSize\'].$error" ng-show="interactionForm[\'messageFontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_REQUIRED">messageFontSize field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="CHAT.ERRORS.MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">messageFontSize must be a valid greater or equal than</span> <span>20</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.agentIdentifier === \'website_alias\'" class="md-block">\n                <label translate="CHAT.WEBSITEALIAS">WebsiteAlias</label>\n                <input type="text" name="agentAlias" ng-model="vm.chatWebsite.agentAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="CHAT.HELP.WEBSITEALIAS"></span></div>\n                <div ng-messages="interactionForm[\'agentAlias\'].$error" ng-show="interactionForm[\'agentAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_REQUIRED">WebsiteAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WEBSITEALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>WebsiteAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.CLOSINGQUESTION">closingQuestion</label>\n                <input type="text" name="closingQuestion" ng-model="vm.chatWebsite.closingQuestion" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'closingQuestion\'].$error" ng-show="interactionForm[\'closingQuestion\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_REQUIRED">closingQuestion field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.CLOSINGQUESTION_MAX_LENGTH" translate-values=\'{max: 255}\'>closingQuestion must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITSUCCESSMESSAGE">formSubmitSuccessMessage</label>\n                <input type="text" name="formSubmitSuccessMessage" ng-model="vm.chatWebsite.formSubmitSuccessMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitSuccessMessage\'].$error" ng-show="interactionForm[\'formSubmitSuccessMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_REQUIRED">formSubmitSuccessMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitSuccessMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.FORMSUBMITFAILUREMESSAGE">formSubmitFailureMessage</label>\n                <input type="text" name="formSubmitFailureMessage" ng-model="vm.chatWebsite.formSubmitFailureMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'formSubmitFailureMessage\'].$error" ng-show="interactionForm[\'formSubmitFailureMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_REQUIRED">formSubmitFailureMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.FORMSUBMITFAILUREMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>formSubmitFailureMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerWriting" aria-label="enableCustomerWriting" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERWRITING">enableCustomerWriting</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGTITLE">waitingTitle</label>\n                <input type="text" name="waitingTitle" ng-model="vm.chatWebsite.waitingTitle" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'waitingTitle\'].$error" ng-show="interactionForm[\'waitingTitle\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_REQUIRED">waitingTitle field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGTITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingTitle must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.enableCustomerWriting" class="md-block">\n                <label translate="CHAT.WAITINGMESSAGE">waitingMessage</label>\n                <textarea name="waitingMessage" ng-model="vm.chatWebsite.waitingMessage" md-maxlength="255" required></textarea>\n\n                <div ng-messages="interactionForm[\'waitingMessage\'].$error" ng-show="interactionForm[\'waitingMessage\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_REQUIRED">waitingMessage field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WAITINGMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>waitingMessage must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.PLACEHOLDERMESSAGE">placeholderMessage</label>\n                <input type="text" name="placeholderMessage" ng-model="vm.chatWebsite.placeholderMessage" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'placeholderMessage\'].$error" ng-show="interactionForm[\'placeholderMessage\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_REQUIRED">placeholderMessage field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.PLACEHOLDERMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>placeholderMessage must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.download_transcript" aria-label="downloadTranscript" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DOWNLOADTRANSCRIPT">downloadTranscript</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerAttachment" aria-label="enableCustomerAttachment" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERATTACHMENT">enableCustomerAttachment</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableSendButton" aria-label="enableSendButton" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLESENDBUTTON">enableSendButton</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.enableCustomerCheckmarks" aria-label="enableCustomerCheckmarks" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.ENABLECUSTOMERCHECKMARKS">enableCustomerCheckmarks</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.SYSTEMALIAS">systemAlias</label>\n                <input type="text" name="systemAlias" ng-model="vm.chatWebsite.systemAlias" md-maxlength="255" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="interactionForm[\'systemAlias\'].$error" ng-show="interactionForm[\'systemAlias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_REQUIRED">systemAlias field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.SYSTEMALIAS_MAX_LENGTH" translate-values=\'{max: 255}\'>systemAlias must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container whitelabel md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.WHITELABEL">WHITELABEL</div>\n            </div>\n            <form name="whitelabelForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.defaultWhiteLabel" aria-label="default" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.DEFAULT">default</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="!vm.chatWebsite.defaultWhiteLabel" class="md-block">\n                <label translate="CHAT.WHITELABEL">whiteLabel</label>\n                <textarea name="whiteLabel" ng-model="vm.chatWebsite.whiteLabel" md-maxlength="255" required></textarea>\n\n                <div ng-messages="whitelabelForm[\'whiteLabel\'].$error" ng-show="whitelabelForm[\'whiteLabel\'].$touched" role="alert">\n\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.WHITELABEL_REQUIRED">whiteLabel field is required</span>\n                  </div>\n\n\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.WHITELABEL_MAX_LENGTH" translate-values=\'{max: 255}\'>whiteLabel must have a maximum length equal to 255</span>\n                  </div>\n\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.license.custom" class="chatWebsite-detail-form-container logo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.LOGO">LOGO</div>\n            </div>\n            <div ng-controller="ChatWebsitelogoController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="logoimage in vm_ca.chatWebsite.images" ng-switch="logoimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="logoimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{logoimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container agentavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.AGENTAVATAR">AGENTAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsiteagentAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="agentAvatarimage in vm_ca.chatWebsite.images" ng-switch="agentAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{agentAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="agentAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{agentAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container customeravatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.CUSTOMERAVATAR">CUSTOMERAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitecustomerAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="customerAvatarimage in vm_ca.chatWebsite.images" ng-switch="customerAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{customerAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="customerAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{customerAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n          <div class="chatWebsite-detail-form-container systemavatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.SYSTEMAVATAR">SYSTEMAVATAR</div>\n            </div>\n            <div ng-controller="ChatWebsitesystemAvatarController as vm_ca" ng-init="vm_ca.init(vm.chatWebsite, vm.crudPermissions)" class="chatWebsite-detail-form-container md-background-bg md-whiteframe-1dp">\n\n              <div id="chatWebsite-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="systemAvatarimage in vm_ca.chatWebsite.images" ng-switch="systemAvatarimage.type">\n                    <div class="chatWebsite-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{systemAvatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="systemAvatarimage.file">\n                    </div>\n\n                    <div class="chatWebsite-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{systemAvatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ONLINE">ONLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformonline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteonlineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="onlineForm" novalidate>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKey">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.onlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.onlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.onlineForm.fromKey != null ? vm_fonc.chatWebsite.onlineForm.items[vm_fonc.chatWebsite.onlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.onlineForm.items track by $index" md-component-id="{{\'onlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.VARIABLE">Variable</label>\n                                <md-select ng-model="item.variable">\n                                  <md-option ng-value="null">None</md-option>\n                                  <md-option ng-repeat="variable in vm_fonc.variables" ng-value="variable.name">{{ variable.name }}</md-option>\n                                </md-select>\n                              </md-input-container>\n\n                              <md-input-container class="md-block">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.onlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINE">OFFLINE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatformoffline md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteofflineFormController as vm_fonc" ng-init="vm_fonc.init(vm.chatWebsite)" class="content" md-background-bg layout="column">\n              <div flex>\n                \x3c!-- START Buttons --\x3e\n                <md-button aria-label="comment" class="md-fab md-mini" ng-click="vm_fonc.add(button.type)" ng-repeat="button in vm_fonc.buttons">\n                  <md-tooltip md-direction="top">{{button.name}}</md-tooltip>\n                  <md-icon md-font-icon="{{button.icon}}"></md-icon>\n                </md-button>\n                \x3c!-- END Buttons --\x3e\n              </div>\n\n              <div layout="row" flex>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.BUILDER">BUILDER</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content>\n\n                      <form name="offlineForm" novalidate>\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.forwardOffline" aria-label="forwardOffline"><span translate="CHAT.FORWARD_OFFLINE">forwardOffline</span></md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.forwardOffline">\n                          <label translate="CHAT.FORWARD_OFFLINE_ADDRESS">FORWARD OFFLINE ADDRESS</label>\n                          <input type="text" name="forwardOfflineAddress" ng-model="vm_fonc.chatWebsite.forwardOfflineAddress">\n                          <div class="hint"><span translate="CHAT.HELP.FORWARD_OFFLINE"></span></div>\n                          <div ng-messages="offlineForm[\'forwardOfflineAddress\'].$error" ng-show="offlineForm[\'forwardOfflineAddress\'].$touched" role="alert">\n                            <div ng-message="email">\n                              <span translate="CHAT.ERRORS.EMAIL_MUST_BE_VALID">forwardOffline must be a valid e-mail address</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block">\n                          <md-switch ng-model="vm_fonc.chatWebsite.openNewInteraction" aria-label="openNewInteraction">\n                            <span translate="CHAT.OPEN_NEW_INTERACTION">openNewInteraction</span>\n                          </md-switch>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction">\n                          <label translate="CHAT.EMAIL_ACCOUNT">Email account</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.MailAccountId" required>\n                            <md-option ng-repeat="account in vm_fonc.email_accounts" ng-value="account.id">{{ account.name }}</md-option>\n                          </md-select>\n                          <div ng-messages="offlineForm[\'MailAccountId\'].$error" ng-show="offlineForm[\'MailAccountId\'].$touched" role="alert">\n                            <div ng-message="required">\n                              <span translate="CHAT.ERRORS.EMAIL_ACCOUNT_REQUIRED">Email account field is required</span>\n                            </div>\n                          </div>\n                        </md-input-container>\n\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.openNewInteraction && vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.SUBJECT">Subject</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.subjectOffline" md-selected-text="vm_fonc.chatWebsite.subjectOffline != null ? vm_fonc.chatWebsite.subjectOffline : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="item.props.title">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n\n                        \x3c!-- START MapKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.MAPKEY">MapKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.mapKeyOffline">\n                            <md-option ng-value="null">None</md-option>\n\n                            <md-optgroup label="standard">\n                              <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n\n                            <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                              <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                            </md-optgroup>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END MapKey --\x3e\n\n                        \x3c!-- START FromKey --\x3e\n                        <md-input-container class="md-block" ng-if="vm_fonc.chatWebsite.offlineForm.items.length">\n                          <label translate="CHAT.HELP.FROMKEY">FromKey</label>\n                          <md-select ng-model="vm_fonc.chatWebsite.offlineForm.fromKey" md-selected-text="vm_fonc.chatWebsite.offlineForm.fromKey != null ? vm_fonc.chatWebsite.offlineForm.items[vm_fonc.chatWebsite.offlineForm.fromKey].props.title : \'None\'">\n                            <md-option ng-value="null">None</md-option>\n                            <md-option ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items" ng-if="item.props.title" ng-value="$index">{{ item.props.title }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                        \x3c!-- END FromKey --\x3e\n\n                        \x3c!-- START EXPANSION PANELS --\x3e\n                        <md-expansion-panel ng-repeat="item in vm_fonc.chatWebsite.offlineForm.items track by $index" md-component-id="{{\'offlinePanel\' + $index}}">\n                          <md-expansion-panel-collapsed md-no-sticky="true">\n                            <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                            </md-button>\n                            <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index); $event.stopPropagation()">\n                              <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                            </md-button>\n\n                            <div class="md-title">{{item.props.title || item.type}}</div>\n\n                            <div flex></div>\n                            <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                              <md-icon md-font-icon="icon-chevron-down"></md-icon>\n                            </md-button>\n                          </md-expansion-panel-collapsed>\n\n                          <md-expansion-panel-expanded>\n                            <md-expansion-panel-header>\n                              <md-button class="md-icon-button" aria-label="Down" ng-click="vm_fonc.down(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-down-bold-circle-outline"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Up" ng-click="vm_fonc.up(item, $index)">\n                                <md-icon md-font-icon="icon-arrow-up-bold-circle-outline"></md-icon>\n                              </md-button>\n\n                              <div class="md-title">{{item.props.title || item.type}}</div>\n\n                              <div flex></div>\n\n                              <md-button class="md-icon-button md-warn" aria-label="Remove" ng-click="vm_fonc.remove($index)">\n                                <md-icon md-font-icon="icon-delete"></md-icon>\n                              </md-button>\n                              <md-button class="md-icon-button" aria-label="Collapse" ng-click="$panel.collapse()">\n                                <md-icon md-font-icon="icon-chevron-up"></md-icon>\n                              </md-button>\n                            </md-expansion-panel-header>\n\n                            <md-expansion-panel-content>\n                              <form-item type="{{item.type}}" item="item" index="$index"></form-item>\n\n\n                              <md-input-container class="md-block" ng-if="item.type != \'upload\'">\n                                <label translate="CHAT.CM_FIELD">Contact Manager Field</label>\n                                <md-select ng-model="item.cmField">\n                                  <md-option ng-value="null">None</md-option>\n\n                                  <md-optgroup label="standard">\n                                    <md-option ng-repeat="field in vm_fonc.fields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n\n                                  <md-optgroup label="custom" ng-if="vm_fonc.customFields.length">\n                                    <md-option ng-repeat="field in vm_fonc.customFields" ng-value="field.key">{{ field.value }}</md-option>\n                                  </md-optgroup>\n                                </md-select>\n                              </md-input-container>\n                            </md-expansion-panel-content>\n\n                          </md-expansion-panel-expanded>\n                        </md-expansion-panel>\n                        \x3c!-- END EXPANSION PANELS --\x3e\n                      </form>\n                    </md-card-content>\n                  </md-card>\n                </div>\n                <div flex="50">\n                  <md-card>\n                    <md-card-title>\n                      <md-card-title-text>\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="CHAT.PREVIEW">PREVIEW</div>\n                        </div>\n                      </md-card-title-text>\n                    </md-card-title>\n                    <md-card-content flex>\n                      <form-view form="vm_fonc.chatWebsite.offlineForm" flex="100"></form-view>\n                    </md-card-content>\n                  </md-card>\n                </div>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.PROACTIVEACTIONS">PROACTIVEACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container proactive md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteProactiveActionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.PROACTIVEACTIONS">ProactiveActions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteProactiveActions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event)" aria-label="add chatProactiveAction" translate translate-attr-label="CHAT.ADD_CHATPROACTIVEACTION">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteProactiveActions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteProactiveActions.length}} {{vm_dc.selectedChatWebsiteProactiveActions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteProactiveActions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteProactiveActions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteProactiveActions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteProactiveActions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'CHAT.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CHAT.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="selector">\n                        {{ \'CHAT.SELECTOR\' | translate }}\n                      </th>\n                      <th md-column md-order-by="timeout">\n                        {{ \'CHAT.TIMEOUT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatProactiveAction" md-select-id="id" ng-repeat="chatProactiveAction in vm_dc.chatWebsiteProactiveActions.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ \'CHAT.\' + vm_dc.arraytype[chatProactiveAction.type].option | uppercase | translate }}\n                      </td>\n\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.selector}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{chatProactiveAction.timeout}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" md-cell>\n                        {{ chatProactiveAction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatProactiveAction($event, chatProactiveAction)" translate="CHAT.EDIT_CHATPROACTIVEACTION">\n                                Edit ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatProactiveAction, $event)" translate="CHAT.DELETE_CHATPROACTIVEACTION">\n                                Delete ChatProactiveAction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteProactiveActions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATPROACTIVEACTION_AVAILABLE">No chatproactiveaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteProactiveActions.count}}" md-on-paginate="vm_dc.getChatWebsiteProactiveActions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ChatWebsiteDispositionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="chatWebsite-detail-form-container chatdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CHAT.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add chat dispositions" translate translate-attr-label="CHAT.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="chatWebsites.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CHAT.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CHAT.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CHAT.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CHAT.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container chatcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteChatCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.CHATCANNEDANSWERS">ChatCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteChatCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event)" aria-label="add chatCannedAnswer" translate translate-attr-label="CHAT.ADD_CHATCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteChatCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteChatCannedAnswers.length}} {{vm_dc.selectedChatWebsiteChatCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteChatCannedAnswers" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteChatCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteChatCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteChatCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'CHAT.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'CHAT.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'CHAT.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="chatCannedAnswer" md-select-id="id" ng-repeat="chatCannedAnswer in vm_dc.chatWebsiteChatCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{chatCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" md-cell>\n                        {{ chatCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditChatWebsiteChatCannedAnswer($event, chatCannedAnswer)" translate="CHAT.EDIT_CHATCANNEDANSWER">\n                                Edit ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(chatCannedAnswer, $event)" translate="CHAT.DELETE_CHATCANNEDANSWER">\n                                Delete ChatCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteChatCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_CHATCANNEDANSWER_AVAILABLE">No chatcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteChatCannedAnswers.count}}" md-on-paginate="vm_dc.getChatWebsiteChatCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.VIDEO">VIDEO</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container vidaoo md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CHAT.VIDAOO">VIDAOO</div>\n            </div>\n            <form name="vidaooForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.chatWebsite.vidaooEscalation" aria-label="vidaooEscalation" ng-disabled="!vm.crudPermissions.canEdit"><span translate="CHAT.VIDAOOESCALATION">vidaooEscalation</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOAPIKEY">vidaooApiKey</label>\n                <input type="text" name="vidaooApiKey" ng-model="vm.chatWebsite.vidaooApiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooApiKey\'].$error" ng-show="vidaooForm[\'vidaooApiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOAPIKEY_REQUIRED">vidaooApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOTOPIC">vidaooTopic</label>\n                <input type="text" name="vidaooTopic" ng-model="vm.chatWebsite.vidaooTopic" value="Generated by XCALLY Motion" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooTopic\'].$error" ng-show="vidaooForm[\'vidaooTopic\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOOTOPIC_REQUIRED">vidaooTopic field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOONOTE">vidaooNote</label>\n                <input type="text" name="vidaooNote" ng-model="vm.chatWebsite.vidaooNote" value="Meeting generated for interaction #{{interaction.id}} by {{agent.name}}" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="vidaooForm[\'vidaooNote\'].$error" ng-show="vidaooForm[\'vidaooNote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.VIDAOONOTE_REQUIRED">vidaooNote field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.chatWebsite.vidaooEscalation == true" class="md-block">\n                <label translate="CHAT.VIDAOOMETADATA">vidaooMetadata</label>\n                <textarea name="vidaooMetadata" ng-model="vm.chatWebsite.vidaooMetadata"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteActionsController as vm_ac" ng-init="vm_ac.init(vm.chatWebsite, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="CHAT.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedChatWebsiteApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedChatWebsiteApps.length}} {{vm_ac.selectedChatWebsiteApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedChatWebsiteApps($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedChatWebsiteApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.chatWebsiteApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editChatWebsiteApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editChatWebsiteApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.chatWebsiteApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteInteractionsController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getChatWebsiteInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getChatWebsiteInteractions()" aria-label="refresh Interactions" translate translate-attr-label="CHAT.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteInteractions.length}} {{vm_dc.selectedChatWebsiteInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteInteractions" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteInteractions($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'CHAT.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'CHAT.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'CHAT.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.chatWebsiteInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'CHAT.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'CHAT.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spychatInteraction($event, interaction)" translate="CHAT.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.chatInteractionDownload(interaction, $event)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="CHAT.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteInteractions.count}}" md-on-paginate="vm_dc.getChatWebsiteInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.OFFLINEMESSAGES">OFFLINEMESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="chatWebsite-detail-form-container offlinemessages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ChatWebsiteOfflineMessagesController as vm_dc" ng-init="vm_dc.init(vm.chatWebsite, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CHAT.OFFLINEMESSAGES">OfflineMessages</span>\n                  <ms-search-bar on-search="vm_dc.getChatWebsiteOfflineMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedChatWebsiteOfflineMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedChatWebsiteOfflineMessages.length}} {{vm_dc.selectedChatWebsiteOfflineMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedChatWebsiteOfflineMessages" csv-label="true" filename="chatWebsites.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedChatWebsiteOfflineMessages($event)" aria-label="delete selected" translate translate-attr-label="CHAT.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedChatWebsiteOfflineMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getChatWebsiteOfflineMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CHAT.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column>\n                        {{ \'CHAT.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'CHAT.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="offlineMessage" md-select-id="id" ng-repeat="offlineMessage in vm_dc.chatWebsiteOfflineMessages.rows">\n                      <td md-cell>\n                        {{offlineMessage.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="offlineMessage.Attachments.length > 0">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{offlineMessage.Contact.firstName}}\n                      </td>\n                      <td md-cell>\n                        {{ offlineMessage.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CHAT.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showOfflineMessageChatWebsiteOfflineMessage($event, offlineMessage)" translate="CHAT.SHOW_OFFLINEMESSAGE">\n                                SHOW OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(offlineMessage, $event)" translate="CHAT.DELETE_OFFLINEMESSAGE">\n                                Delete OfflineMessage\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.chatWebsiteOfflineMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CHAT.NO_OFFLINEMESSAGE_AVAILABLE">No offlinemessage available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CHAT.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CHAT.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CHAT.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.chatWebsiteOfflineMessages.count}}" md-on-paginate="vm_dc.getChatWebsiteOfflineMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/chat/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CHAT.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/companies.html",'<div id="companies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.COMPANIES">Companies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCompanies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCompanies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-companies-count">\n          <span>{{vm.selectedCompanies.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCompanies()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCompanies()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCompanies" csv-label="true" filename="companies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCompanies($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- COMPANY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCompanies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCompanies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.companies.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="company" md-select-id="id" ng-repeat="company in vm.companies.rows">\n                <td md-cell ng-if="company.userpic"><img class="avatar" alt="{{company.name}}" ng-src="api/users/{{company.id}}/avatar" /></td>\n                <td md-cell ng-if="!company.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{company.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="id ">{{company.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="name ">{{company.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(company, ev) : vm.createOrEditCompany($event, company)" md-cell class="description ">{{company.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(company, $event    )" translate="CONTACTMANAGER.EDIT_COMPANY">\n                          Edit Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(company, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_COMPANY">\n                          goToContacts Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(company, $event    )" translate="CONTACTMANAGER.DELETE_COMPANY">\n                          Delete Company\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.companies.count}}" md-on-paginate="vm.getCompanies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / COMPANY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD COMPANY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-company-button" ng-click="vm.createOrEditCompany($event)" aria-label="add company" translate translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD COMPANY BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/companies/create/dialog.html",'<md-dialog class="company-dialog" aria-label="New Company">\n  <form name="companyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus>\n\n        <div ng-messages="companyForm[\'name\'].$error" ng-show="companyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.company.phone">\n\n        <div ng-messages="companyForm[\'phone\'].$error" ng-show="companyForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.VAT">Vat</label>\n        <input type="text" name="vat" ng-model="vm.company.vat">\n\n        <div ng-messages="companyForm[\'vat\'].$error" ng-show="companyForm[\'vat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input type="text" name="fax" ng-model="vm.company.fax">\n\n        <div ng-messages="companyForm[\'fax\'].$error" ng-show="companyForm[\'fax\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n        <input type="text" name="companyId" ng-model="vm.company.companyId">\n\n        <div ng-messages="companyForm[\'companyId\'].$error" ng-show="companyForm[\'companyId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.company.type">\n\n        <div ng-messages="companyForm[\'type\'].$error" ng-show="companyForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n        <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255">\n\n        <div ng-messages="companyForm[\'website\'].$error" ng-show="companyForm[\'website\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n        <input type="text" name="emailDomain" ng-model="vm.company.emailDomain">\n\n        <div ng-messages="companyForm[\'emailDomain\'].$error" ng-show="companyForm[\'emailDomain\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.company.email">\n\n        <div ng-messages="companyForm[\'email\'].$error" ng-show="companyForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.company.description">\n\n        <div ng-messages="companyForm[\'description\'].$error" ng-show="companyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCompany" ng-click="vm.saveCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid || companyForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCompany" ng-click="vm.addNewCompany()" class="send-button md-accent md-raised" ng-disabled="companyForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_COMPANY" translate-attr-aria-label="CONTACTMANAGER.ADD_COMPANY">\n          ADD COMPANY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCompany" ng-click="vm.deleteCompany($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/companies/edit/view.html",'<div id="contactmanager-company" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-companies-button md-icon-button" aria-label="Go to companies" ng-click="vm.gotoCompanies()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_COMPANIES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="company-image" hide-xs>\n          <img ng-src="assets/images/business/companies.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.company.id}}\n            <span ng-if="vm.company.name">{{vm.company.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.company.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.company, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_COMPANY"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCompany()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (addressForm.$invalid) || (shipmentAddressForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.company.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.company.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.VAT">Vat</label>\n                <input type="text" name="vat" ng-model="vm.company.vat" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'vat\'].$error" ng-show="generalForm[\'vat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.VAT_REQUIRED">Vat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.FAX">Fax</label>\n                <input type="text" name="fax" ng-model="vm.company.fax" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fax\'].$error" ng-show="generalForm[\'fax\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.FAX_REQUIRED">Fax field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COMPANYID">CompanyId</label>\n                <input type="text" name="companyId" ng-model="vm.company.companyId" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'companyId\'].$error" ng-show="generalForm[\'companyId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COMPANYID_REQUIRED">CompanyId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.company.type" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.WEBSITE">Website</label>\n                <input type="text" name="website" ng-model="vm.company.website" md-maxlength="255" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'website\'].$error" ng-show="generalForm[\'website\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_REQUIRED">Website field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CONTACTMANAGER.ERRORS.WEBSITE_MAX_LENGTH" translate-values=\'{max: 255}\'>Website must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL_DOMAIN">Email_Domain</label>\n                <input type="text" name="emailDomain" ng-model="vm.company.emailDomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'emailDomain\'].$error" ng-show="generalForm[\'emailDomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_DOMAIN_REQUIRED">Email_Domain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.company.email" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.company.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.ADDRESS">ADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container address md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.ADDRESS">ADDRESS</div>\n            </div>\n            <form name="addressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="street" ng-model="vm.company.street" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'street\'].$error" ng-show="addressForm[\'street\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="postalCode" ng-model="vm.company.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'postalCode\'].$error" ng-show="addressForm[\'postalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="city" ng-model="vm.company.city" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'city\'].$error" ng-show="addressForm[\'city\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="country" ng-model="vm.company.country" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="addressForm[\'country\'].$error" ng-show="addressForm[\'country\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="company-detail-form-container shipmentaddress md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.SHIPMENTADDRESS">SHIPMENTADDRESS</div>\n            </div>\n            <form name="shipmentAddressForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.STREET">Street</label>\n                <input type="text" name="sStreet" ng-model="vm.company.sStreet" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sStreet\'].$error" ng-show="shipmentAddressForm[\'sStreet\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.STREET_REQUIRED">Street field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.POSTAL_CODE">Postal_Code</label>\n                <input type="text" name="sPostalCode" ng-model="vm.company.sPostalCode" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sPostalCode\'].$error" ng-show="shipmentAddressForm[\'sPostalCode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.POSTAL_CODE_REQUIRED">Postal_Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.CITY">City</label>\n                <input type="text" name="sCity" ng-model="vm.company.sCity" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCity\'].$error" ng-show="shipmentAddressForm[\'sCity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.CITY_REQUIRED">City field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                <input type="text" name="sCountry" ng-model="vm.company.sCountry" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="shipmentAddressForm[\'sCountry\'].$error" ng-show="shipmentAddressForm[\'sCountry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.COUNTRY_REQUIRED">Country field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/contacts.html",'<div id="contacts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.CONTACTS">Contacts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    \x3c!-- SEARCH --\x3e\n    <div class="search-input-wrapper" layout="row" layout-align="start center">\n      <label for="search">\n        <md-icon md-font-icon="icon-magnify"></md-icon>\n      </label>\n      <md-input-container md-no-float class="m-0">\n        <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n      </md-input-container>\n    </div>\n    \x3c!-- / SEARCH --\x3e\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContacts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedContacts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-contacts-count">\n          <span>{{vm.selectedContacts.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContacts()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContacts()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContacts" csv-label="true" filename="contacts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedContacts($event)" aria-label="delete selected" translate translate-attr-label="CONTACTS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.selectedList = null; vm.selectedCompany = null; vm.selectedTags = []">\n                <md-icon md-font-icon="icon-refresh"></md-icon>{{ \'CONTACTMANAGER.ALL_CONTACTS\' | translate }}\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_LIST">Select a list</label>\n                <md-select placeholder="Select a list" ng-model="vm.selectedList" ng-disabled="vm.lists.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_COMPANY">Select a company</label>\n                <md-select placeholder="Select a company" flex="100" ng-model="vm.selectedCompany" ng-disabled="vm.companies.count === 0">\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.ALL">All</em></md-option>\n                  <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="CONTACTMANAGER.SELECT_TAGS">Select one or more tags</label>\n                <md-select multiple placeholder="Select one or more tags" flex="100" ng-model="vm.query.tag" ng-change="vm.getContacts()">\n                  <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows">{{tag.name}}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n\n        \x3c!-- USER TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container ng-init="vm.getAssignedCompanies()">\n            <table md-table md-row-select multiple ng-model="vm.selectedContacts" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n                <tr md-row>\n                  <th md-column md-order-by="id">ID</th>\n                  <th md-column md-order-by="firstName">{{\'CONTACTMANAGER.FULLNAME\' | translate}}</th>\n                  <th md-column md-order-by="phone">{{\'CONTACTMANAGER.PHONE\' | translate}}</th>\n                  <th md-column md-order-by="email">{{\'CONTACTMANAGER.EMAIL\' | translate}}</th>\n                  <th md-column md-order-by="createdAt">{{\'CONTACTMANAGER.CREATED_AT\' | translate}}</th>\n                  <th md-column md-order-by="ListId">{{\'CONTACTMANAGER.LIST\' | translate}}</th>\n                  <th md-column md-order-by="CompanyId">{{\'CONTACTMANAGER.COMPANY\' | translate}}</th>\n                  <th md-column md-order-by="tags">{{\'CONTACTMANAGER.TAGS\' | translate}}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.contacts.rows.length">\n                  <td md-cell colspan="8">\n                    <div layout="row" layout-align="center center">\n                      <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="contact" md-select-id="id" ng-repeat="contact in vm.contacts.rows">\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}} {{contact.lastName}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="phone" privacy ng-cloak>{{contact.phone}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="createdAt">{{contact.createdAt | date:\'medium\'}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="list">{{vm.listsMap[contact.ListId]}}</td>\n                  <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editdialog(contact, ev) : vm.createOrEditContact($event, contact)" md-cell class="company">{{vm.companiesMap[contact.CompanyId]}}</td>\n                  <td md-cell class="tag">\n                    <div ng-if="contact.Tags.length">\n                      <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                        <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                        <span class="text-truncate">{{contact.Tags[0].name}}</span>\n                      </div>\n                      <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                        <md-tooltip md-direction="left" layout="row">\n                          <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                        </md-tooltip>\n                        <md-icon md-font-icon="icon-tag"></md-icon>\n                      </div>\n                    </div>\n                  </td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.editdialog(contact, ev)" translate="CONTACTMANAGER.EDIT_CONTACT">\n                            Edit Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.mergeContact(ev, contact)" translate="CONTACTMANAGER.MERGE_CONTACT">\n                            Merge Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.duplicateContact(ev, contact)" translate="CONTACTMANAGER.DUPLICATE_CONTACT">\n                            Duplicate Contact\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-divider ng-if="vm.crudPermissions.canEdit && vm.crudPermissions.canDelete">\n                        </md-menu-divider>\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(contact, ev)" translate="CONTACTMANAGER.DELETE_CONTACT">\n                            Delete Contact\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n\n          <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n        </md-card>\n        \x3c!-- / USER TABLE --\x3e\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-fab-speed-dial id="add-contact-button" ng-if="vm.crudPermissions.canEdit" ng-hide="vm.options.hidden" md-direction="up" md-open="vm.options.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm.options.hover }" ng-mouseenter="vm.options.isOpen=true" ng-mouseleave="vm.options.isOpen=false">\n    <md-fab-trigger>\n      <md-button aria-label="menu" class="md-fab md-accent">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </md-fab-trigger>\n    <md-fab-actions>\n      <md-button class="md-fab md-mini md-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-warn" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContacts($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.IMPORT_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.IMPORT_CONTACTS\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-upload"></md-icon>\n      </md-button>\n      <md-button class="md-fab md-mini md-accent" ng-click="vm.createOrEditContact($event)" aria-label="add contact" translate translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.ADD_CONTACT\' | translate}}\n        </md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </md-fab-actions>\n  </md-fab-speed-dial>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/create/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="New Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FIRSTNAME">First name</label>\n        <input name="firstName" ng-model="vm.contact.firstName" required md-autofocus privacy="!vm.crudPermissions.canEdit" ng-cloak>\n\n        <div ng-messages="contactForm.firstName.$error" ng-show="contactForm.firstName.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LASTNAME">Last name</label>\n        <input name="lastName" ng-model="vm.contact.lastName" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.PHONE">Phone</label>\n        <input name="phone" ng-model="vm.contact.phone" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.EMAIL">Email</label>\n        <input name="email" type="email" ng-model="vm.contact.email" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n        <input name="mobile" ng-model="vm.contact.mobile" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.FAX">Fax</label>\n        <input name="fax" ng-model="vm.contact.fax" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId" ng-disabled="vm.contact.id && vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n          <md-optgroup label="Lists">\n            <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\n      </md-input-container>\n\n      <div ng-repeat="customField in vm.customFields.rows" class="md-block" ng-switch="customField.type">\n        <div ng-switch-when="datetime">\n          <label>{{customField.alias}}</label>\n          <div>\n            \x3c!-- ng-model="customField.value" --\x3e\n            <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n            <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n            </mdp-time-picker>\n          </div>\n        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</label>\n          <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n            <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}</md-option>\n            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n          </md-select>\n        </div>\n\n        <div ng-switch-when="switch">\n          <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n            {{customField.alias}}\n          </md-switch>\n        </div>\n\n        <md-input-container ng-switch-default>\n          <label>{{customField.alias}}</label>\n          <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.COMPANY">Company</label>\n        <md-select name="company" ng-model="vm.contact.CompanyId">\n          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-hide="!vm.contact.CompanyId && company.canSelect === false" ng-disabled="company.canSelect === false">\n            {{company.name}}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All\n          Fields</md-button>\n      </div>\n\n      <md-input-container class="md-block" ng-if="vm.allFields" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n        <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n        <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth">\n        </mdp-date-picker>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n        <input type="text" name="country" ng-model="vm.contact.country">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.CITY">City</label>\n        <input type="text" name="city" ng-model="vm.contact.city">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.STREET">Street</label>\n        <input type="text" name="street" ng-model="vm.contact.street">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.POSTAL_CODE">Postal Code</label>\n        <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.allFields">\n        <label translate="CONTACTMANAGER.NOTES">Notes</label>\n        <input type="text" name="description" ng-model="vm.contact.description">\n      </md-input-container>\n\n      <div ng-if="vm.allFields" layout="row" layout-align="center center">\n        <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer\n          Fields</md-button>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newContact" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newContact" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid || contactForm.$pristine" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContact" ng-click="vm.deleteContact($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/duplicate/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="{{ \'CONTACTMANAGER.DUPLICATE_CONTACT\' | translate }}">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.LIST">List</label>\n        <md-select name="list" ng-model="vm.contact.ListId">\n          <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n        </md-select>\n\n        <div ng-messages="contactForm.list.$error" ng-show="contactForm.list.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.addNewContact()" class="send-button md-accent md-raised" ng-disabled="contactForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CONTACT" translate-attr-aria-label="CONTACTMANAGER.ADD_CONTACT">\n          ADD CONTACT\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div flex class="md-block">\n        <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_REQUIRED">Date is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.DATE_INVALID">Date is invalid</span>\n            </div>\n          </div>\n        </mdp-date-picker>\n      </div>\n\n      <div flex class="md-block">\n        <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n          <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_REQUIRED">Time is required</span>\n            </div>\n            <div ng-message="format">\n              <span translate="CONTACTMANAGER.ERRORS.TIME_INVALID">Time is invalid</span>\n            </div>\n          </div>\n        </mdp-time-picker>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-if="!vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_HOPPER" translate-attr-aria-label="CONTACTMANAGER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="!vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/edit/view.html",'<div id="cm-contact" class="page-layout simple tabbed" layout="column" ng-init="vm.onInit()">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-contacts-button md-icon-button" aria-label="Go to contacts" ng-click="vm.gotoContacts()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_CONTACTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="contact-image" hide-xs>\n          <img ng-src="assets/images/business/contacts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.contact.id}} {{vm.contact.firstName}} {{vm.contact.lastName}}\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-if="vm.contact.role && vm.contact.role !== \'admin\'" ng-controller="ContactQueueAddButtonController as vm_contact_qa" ng-cloak>\n      <md-fab-speed-dial ng-hide="vm_contact_qa.hidden" md-direction="left" md-open="vm_contact_qa.isOpen" class="md-scale md-fab" ng-class="{ \'md-hover-full\': vm_contact_qa.hover }" ng-mouseenter="vm_contact_qa.isOpen=true" ng-mouseleave="vm_contact_qa.isOpen=false">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="tooltipVisible">Channels</md-tooltip>\n            <md-icon md-font-icon="icon-eye" aria-label="channels"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <div ng-repeat="channel in vm_contact_qa.channels">\n            <md-button aria-label="{{channel.name}}" class="md-fab md-raised md-icon-button md-mini" ng-click="vm_contact_qa.openDialog($event, vm.contact, channel)">\n              <md-tooltip md-direction="{{channel.direction}}" md-visible="tooltipVisible" md-autohide="false">\n                {{channel.name}}\n              </md-tooltip>\n              <md-icon md-font-icon="{{channel.icon}}" aria-label="{{channel.name}}"></md-icon>\n            </md-button>\n          </div>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n\n    <div ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.duplicateContact($event)" class="md-fab md-warn md-icon-button" aria-label="DUPLICATE">\n        <md-icon md-font-icon="icon-file-multiple"></md-icon>\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveContact()" class="send-button md-accent md-raised" ng-disabled="detailForm.$pristine && customFieldsForm.$pristine && socialForm.$pristine && additionalPhonesForm.$pristine" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DETAIL">DETAIL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div layout="column" flex="70">\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.PERSONAL_INFO">PERSONAL_INFO\n                  </div>\n                </div>\n                <form name="detailForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- fistName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="CONTACTMANAGER.ERRORS.FIRSTNAME_REQUIRED">First name field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- lastName --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.LASTNAME">Last Name</label>\n                      <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- phone --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- mobile --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    \x3c!-- email --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                      <div ng-messages="detailForm.firstName.$error" ng-show="detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="CONTACTMANAGER.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail\n                            address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div flex="5"></div>\n                    \x3c!-- fax --\x3e\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" ng-disabled="!vm.crudPermissions.canEdit" privacy="!vm.crudPermissions.canEdit" ng-cloak>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="" ng-init="vm.contact.dateOfBirth = vm.getDateFromString(vm.contact.dateOfBirth)">\n                      <label translate="CONTACTMANAGER.DATE_OF_BIRTH">Date of Birth</label>\n                      <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth" mdp-disabled="!vm.crudPermissions.canEdit"></mdp-date-picker>\n                    </md-input-container>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.companies.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.COMPANY">Company</label>\n                      <md-icon md-font-icon="icon-domain"></md-icon>\n                      <md-select name="company" ng-model="vm.contact.CompanyId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Companies">\n                          <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows" ng-disabled="company.canSelect === false">{{company.name}}</md-option>\n                          <md-option ng-value=" null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                        </md-optgroup>\n                      </md-select>\n                      <md-icon class="pointer" ng-show="vm.contact.CompanyId" md-font-icon="icon-information-outline" ng-click="vm.editCompany($event, vm.contact.CompanyId)"></md-icon>\n                    </md-input-container>\n                    <section ng-if="!vm.companies.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-briefcase"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_COMPANIES">No Companies</label>\n                    </section>\n                  </div>\n\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container ng-if="vm.tags.rows.length" class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TAGS">Tags</label>\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <md-select ng-model="vm.Tags" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-optgroup label="Tags">\n                          <md-option ng-value="tag.id" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{tag.name}}</md-option>\n                        </md-optgroup>\n                      </md-select>\n                    </md-input-container>\n                    <section ng-if="!vm.tags.rows.length" flex-gt-sm="">\n                      <md-icon md-font-icon="icon-tag"></md-icon>\n                      <label translate="CONTACTMANAGER.NO_TAG">No Tags</label>\n                      <md-button class="md-accent" translate="CONTACTMANAGER.ADD_TAG">Add Tag</md-button>\n                    </section>\n                  </div>\n\n                  <div ng-if="!vm.allFields" layout="row" layout-align="center center">\n                    <md-button class="md-accent" ng-click="vm.allFields = true" translate="CONTACTMANAGER.SHOW_ALL_FIELDS">Show All Fields</md-button>\n                  </div>\n\n                  <div ng-if="vm.allFields">\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      \x3c!-- country --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.COUNTRY">Country</label>\n                        <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                        <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- city --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.CITY">City</label>\n                        <input type="text" name="city" ng-model="vm.contact.city" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <div flex="5"></div>\n                      \x3c!-- street --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.STREET">Street</label>\n                        <input type="text" name="street" ng-model="vm.contact.street" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                      <div flex="5"></div>\n                      \x3c!-- postalCode --\x3e\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate="CONTACTMANAGER.POSTALCODE">Postal Code</label>\n                        <input type="text" name="postalCode" ng-model="vm.contact.postalCode" ng-disabled="!vm.crudPermissions.canEdit">\n                      </md-input-container>\n                    </div>\n\n                    <div layout-gt-sm="row" class="layout-gt-sm-row">\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label translate translate-attr-placeholder="CONTACTMANAGER.NOTES">Notes</label>\n                        <md-icon md-font-icon="icon-note"></md-icon>\n                        <textarea ng-model="vm.contact.description" type="text" max-rows="4" ng-disabled="!vm.crudPermissions.canEdit"></textarea>\n                      </md-input-container>\n                    </div>\n\n                    <div layout="row" layout-align="center center">\n                      <md-button class="md-accent" ng-click="vm.allFields = false" translate="CONTACTMANAGER.FEWER_FIELDS">Fewer Fields\n                      </md-button>\n                    </div>\n\n                  </div>\n                </form>\n              </md-card>\n              <md-card class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n                <div class="pb-16" layout="row" layout-align="start center">\n                  <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.SOCIAL">Social</div>\n                </div>\n                <form name="socialForm" novalidate>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Facebook</label>\n                      <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                      <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Twitter</label>\n                      <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                      <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate" ng-disabled="!vm.crudPermissions.canEdit">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Line</label>\n                      <md-icon md-font-icon="fab fa-line"></md-icon>\n                      <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Viber</label>\n                      <md-icon md-font-icon="fab fa-viber"></md-icon>\n                      <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                  <div layout-gt-sm="row" class="layout-gt-sm-row">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>WeChat</label>\n                      <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                      <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                    </md-input-container>\n                    <div flex="5"></div>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label>Telegram</label>\n                      <md-icon md-font-icon="icon-telegram"></md-icon>\n                      <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                    </md-input-container>\n                  </div>\n                </form>\n              </md-card>\n            </div>\n\n            <div flex></div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.CUSTOM_FIELDS">CUSTOM FIELDS\n                </div>\n              </div>\n              <form name="customFieldsForm" novalidate>\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="CONTACTMANAGER.LIST">List</label>\n                  <md-select name="list" ng-model="vm.contact.ListId" md-on-close="vm.onSelectList($event)" ng-disabled="vm.contact.ListId">\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                <div ng-repeat="customField in vm.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}</label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]"></mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}</label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">{{value.value}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <label>{{customField.alias}}</label>\n                    <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required" ng-disabled="!vm.crudPermissions.canEdit">\n                  </md-input-container>\n                </div>\n              </form>\n            </div>\n\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n              <div class="pb-16" layout="row" layout-align="start center">\n                <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.dialer">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.MOTION_BULL">MOTION BULL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HOPPER">Hopper</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHopper.filter = query;" on-collapse="vm.queryHopper.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHoppers()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHopper.sort" md-on-reorder="vm.getHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="phone">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="priority">{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n                      <th md-column md-order-by="recallme">{{ \'CONTACTMANAGER.RECALLME\' | translate }}</th>\n                      <th md-column md-order-by="VoiceQueueId">{{ \'CONTACTMANAGER.VOICEQUEUEID\' | translate }}</th>\n                      <th md-column md-order-by="CampaignId">{{ \'CONTACTMANAGER.CAMPAIGNID\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.hoppers.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, hopper) in vm.hoppers.rows">\n                      <td md-cell>{{hopper.id}}</td>\n                      <td md-cell privacy ng-cloak>{{hopper.phone}}</td>\n                      <td md-cell>{{hopper.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{ vm.arraypriority[hopper.priority].option }}</td>\n                      <td md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell>{{hopper.VoiceQueueId}}</td>\n                      <td md-cell>{{hopper.CampaignId}}</td>\n                      <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="2">\n                            <md-menu-item>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.VoiceQueueId" ng-click="vm.editHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                              <md-button ng-if="vm.crudPermissions.canEdit && hopper.CampaignId" ng-click="vm.createOrEditIvrCampaignHopper($event, hopper)" translate="CONTACTMANAGER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item>\n                              <md-button ng-click="vm.crudPermissions.canDelete && vm.deleteconfirm(hopper, $event)" translate="CONTACTMANAGER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.FINAL">Final</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryFinal.filter = query;" on-collapse="vm.queryFinal.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getFinals()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryFinal.sort" md-on-reorder="vm.getFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="disposition">{{ \'CONTACTMANAGER.DISPOSITION\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.finals.count">\n                      <td md-cell colspan="5">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, final) in vm.finals.rows">\n                      <td md-cell>{{final.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{final.calleridnum}}</td>\n                      <td md-cell>{{final.statedesc}}</td>\n                      <td md-cell>{{final.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{final.disposition}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryFinal.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryFinal.page" md-total="{{vm.finals.count}}" md-on-paginate="vm.getFinals" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.HISTORY">History</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryHistory.filter = query;" on-collapse="vm.queryHistory.filter = undefined;" debounce="300"></ms-search-bar>\n                  <md-button class="md-icon-button" ng-click="vm.getHistories()" aria-label="reload" translate translate-attr-label="CONTACTMANAGER.RELOAD">\n                    <md-tooltip>{{\'CONTACTMANAGER.RELOAD\' | translate}}</md-tooltip>\n                    <md-icon md-font-icon="icon-reload"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- HOPPER TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryHistory.sort" md-on-reorder="vm.getHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">{{ \'CONTACTMANAGER.UNIQUEID\' | translate }}</th>\n                      <th md-column md-order-by="calleridnum">{{ \'CONTACTMANAGER.PHONE\' | translate }}</th>\n                      <th md-column md-order-by="state">{{ \'CONTACTMANAGER.STATE\' | translate }}</th>\n                      <th md-column md-order-by="scheduledat">{{ \'CONTACTMANAGER.SCHEDULEDAT\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.histories.count">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, history) in vm.histories.rows">\n                      <td md-cell>{{history.uniqueid}}</td>\n                      <td md-cell privacy ng-cloak>{{history.calleridnum}}</td>\n                      <td md-cell>{{history.statedesc}}</td>\n                      <td md-cell>{{history.scheduledat | date:\'medium\'}}</td>\n                      <td md-cell>{{history.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{history.endtime | date:\'medium\'}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHistory.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHistory.page" md-total="{{vm.histories.count}}" md-on-paginate="vm.getHistories" md-page-select></md-table-pagination>\n              \x3c!-- / HOPPER TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab ng-if="vm.license.jscripty">\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.JSCRIPTY">JSCRIPTY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div layout="row">\n            <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.SESSIONS">Sessions</span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.queryJscriptySession.filter = query;" on-collapse="vm.queryJscriptySession.filter = undefined;" debounce="300"></ms-search-bar>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- SESSION TABLE --\x3e\n              <md-table-container>\n                <table md-table multiple md-progress="vm.promise">\n                  <thead md-head md-order="vm.queryJscriptySession.sort" md-on-reorder="vm.getJscriptySessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                      <th md-column md-order-by="starttime">{{ \'CONTACTMANAGER.STARTTIME\' | translate }}</th>\n                      <th md-column md-order-by="endtime">{{ \'CONTACTMANAGER.ENDTIME\' | translate }}</th>\n                      <th md-column md-order-by="agent">{{ \'CONTACTMANAGER.AGENT\' | translate }}</th>\n                      <th md-column md-order-by="project">{{ \'CONTACTMANAGER.PROJECT\' | translate }}</th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-hide="vm.jscriptySessions.count">\n                      <td md-cell colspan="6">\n                        <div layout="row" layout-align="center center">\n                          <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                        </div>\n                      </td>\n                    </tr>\n                    <tr md-row ng-repeat="(id, session) in vm.jscriptySessions.rows">\n                      <td md-cell>{{session.id}}</td>\n                      <td md-cell>{{session.starttime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.endtime | date:\'medium\'}}</td>\n                      <td md-cell>{{session.membername}}</td>\n                      <td md-cell>{{session.projectname}}</td>\n                      <td md-cell class="actions"></td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.queryHopper.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queryHopper.page" md-total="{{vm.hoppers.count}}" md-on-paginate="vm.getHoppers" md-page-select></md-table-pagination>\n              \x3c!-- / SESSION TABLE --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMER_JOURNEY">CUSTOMER JOURNEY</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <md-content class="md-padding" id="journey-content">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n            </div>\n          </md-content>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/contacts/import/import.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.IMPORT_CONTACTS">Import Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/import/importUpdates.html",'<md-dialog class="import-dialog" aria-label="Import contact">\n  <form name="importForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="CONTACTMANAGER.UPDATE_EXISTING_CONTACTS">Update Existing Contacts</span>\n        <md-button ng-if="vm.result.finish || !vm.processing" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear ng-disabled="!vm.processing || vm.result.finish" md-mode="indeterminate" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div>\n        <md-content ng-show="!vm.processing">\n          <div class="form-title" translate="CONTACTMANAGER.CONTACTMANAGER">CONTACT MANAGER</div>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="contactField in vm.contactFields">\n            <label>{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</label>\n            <md-select name="{{contactField.key}}" ng-model="vm.binding[contactField.key]" placeholder="{{\'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}" ng-required="contactField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="contactField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.LIST">List</label>\n            <md-select name="list" ng-model="vm.ListId" placeholder="Select a list" ng-change="vm.onChangeList()" required>\n              <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">{{list.name}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block" ng-repeat="customField in vm.customFields.rows">\n            <label>{{customField.alias}}</label>\n            <md-select ng-model="vm.binding[\'cf_\' + customField.id]" placeholder="{{customField.alias}}" ng-required="customField.required">\n              <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n              <md-option ng-value="null" ng-hide="customField.required">\n                <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <label translate="CONTACTMANAGER.COMPANY">Company</label>\n            <md-select name="company" ng-model="vm.CompanyId" placeholder="Select a company">\n              <md-option ng-value="company.id" ng-repeat="company in vm.companies.rows">{{company.name}}</md-option>\n              <md-option ng-value="null">\n                <em translate="CONTACTMANAGER.NONE">None</em>\n              </md-option>\n            </md-select>\n          </md-input-container>\n\n          <md-input-container class="md-icon-float md-block">\n            <md-select ng-model="vm.duplicates" placeholder="{{ \'CONTACTMANAGER.CHECK_DUPLICATES\' | translate}}" multiple>\n              <md-option ng-value="contactField.key" ng-repeat="contactField in vm.contactFields">{{ \'CONTACTMANAGER.\' + contactField.key | uppercase | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n\n          <div ng-if="vm.license.dialer">\n            <div class="form-title" translate="CONTACTMANAGER.MOTIONDIALER">MOTION BULL</div>\n\n            <md-input-container class="md-icon-float md-block" ng-repeat="motionBullField in vm.motionBullFields">\n              <label>{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}</label>\n              <md-select name="{{motionBullField.key}}" ng-model="vm.binding[motionBullField.key]" placeholder="{{\'CONTACTMANAGER.\' + motionBullField.key | uppercase | translate}}" ng-required="motionBullField.required">\n                <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                <md-option ng-value="null" ng-hide="contactField.required">\n                  <em>{{ \'CONTACTMANAGER.NONE\' | translate }}</em>\n                </md-option>\n              </md-select>\n            </md-input-container>\n            <div class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\n          </div>\n\n        </md-content>\n\n        <div class="error-list" ng-if="vm.result.finish">\n          <div class="info" layout="row" layout-align="space-between center">\n            <div>\n              <div class="message">{{\'CONTACTMANAGER.UPLOAD_COMPLETED\' | translate | uppercase}} ({{vm.result.elapsed}}s)</div>\n            </div>\n            <md-button class="md-icon-button">\n              <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n            </md-button>\n          </div>\n        </div>\n\n        <div layout="row" ng-if="vm.processing">\n          \x3c!-- WIDGET PROCESSING --\x3e\n          <ms-widget ng-if="!vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.rows"></span>\n                </div>\n                <div ng-if="vm.processing" class="font-weight-500 secondary-text">Please wait, we are processing your contacts...</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET PROCESSING --\x3e\n          \x3c!-- WIDGET SUCCESS --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 green-fg">\n                  <span ng-bind="vm.result.affectedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.SUCCESS">Success</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET SUCCESS --\x3e\n\n          \x3c!-- WIDGET FAILURE --\x3e\n          <ms-widget ng-if="vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 red-fg">\n                  <span ng-bind="vm.result.failedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.FAILURE">Failure</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET FAILURE --\x3e\n\n          \x3c!-- WIDGET DUPLICATES --\x3e\n          <ms-widget ng-if="vm.result.duplicatedRows && vm.result.finish" class="h-140" flex>\n            \x3c!-- Front --\x3e\n            <ms-widget-front class="p-16 white-bg">\n              <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                <div class="md-display-1 pb-8 orange-fg">\n                  <span ng-bind="vm.result.duplicatedRows"></span>\n                </div>\n                <div class="font-weight-500 secondary-text" translate="CONTACTMANAGER.DUPLICATES">Duplicates</div>\n              </div>\n            </ms-widget-front>\n            \x3c!-- / Front --\x3e\n          </ms-widget>\n          \x3c!-- / WIDGET DUPLICATES --\x3e\n        </div>\n\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row">\n        <md-button ng-if="!vm.processing" ng-disabled="importForm.$invalid || importForm.$pristine" ng-click="vm.uploadCsv()" class="md-accent md-raised" aria-label="UPLOAD" translate="CONTACTMANAGER.UPLOAD" translate-attr-aria-label="CONTACTMANAGER.IMPORT">\n          IMPORT\n        </md-button>\n        <md-button ng-if="vm.processing && !vm.result.finish && !vm.stopping" ng-click="vm.stopUpload()" class="md-accent md-raised" aria-label="Stop Upload" translate="CONTACTMANAGER.STOP" translate-attr-aria-label="CONTACTMANAGER.STOP">\n          STOP\n        </md-button>\n        <md-button ng-if="vm.result.finish && vm.result.errors.length" ng-csv="vm.getArrayErrors()" csv-header="vm.getHeaderErrors()" class="md-accent md-raised" aria-label="Export Errors" filename="contacts_import_errors.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon> {{\'CONTACTMANAGER.EXPORT_ERRORS\' | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/contacts/merge/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Merge Contact">\n  <form name="contactForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block" flex-gt-sm>\n        <label>Filter</label>\n        <input ng-model="vm.searchTerm" name="searchTerm" ng-model-options="{ debounce: 300 }" ng-change="vm.change()">\n      </md-input-container>\n\n      <md-list flex>\n        <md-subheader class="md-no-sticky" ng-hide="vm.contacts.length"><em>Filter doesn\'t match any contact</em></md-subheader>\n        <md-list-item class="md-3-line" ng-repeat="contact in vm.contacts | filter:{ id: \'!\' + vm.contact.id}" ng-click="vm.showConfirm($event, vm.contact, contact)">\n          <img ng-src="assets/images/avatars/profile.png" class="md-avatar" alt="{{contact.who}}" />\n          <div class="md-list-item-text" layout="column">\n            <h3>#{{ contact.id }} - {{ contact.firstName }} {{ contact.lastName }}</h3>\n            <h4>{{ contact.email }}</h4>\n            <p>{{ contact.phone }}</p>\n          </div>\n        </md-list-item>\n      </md-list>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/create/dialog.html",'<md-dialog class="globalCustomField-dialog" aria-label="New GlobalCustomField">\n  <form name="globalCustomFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.globalCustomField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="globalCustomFieldForm[\'alias\'].$error" ng-show="globalCustomFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.globalCustomField.type" required ng-disabled="!vm.newGlobalCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'type\'].$error" ng-show="globalCustomFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.globalCustomField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.globalCustomField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.globalCustomField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.globalCustomField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.globalCustomField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.globalCustomField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.globalCustomField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.globalCustomField.clickToAction" aria-label="ClickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">ClickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.globalCustomField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">ActionType</label>\n        <md-select name="actionType" ng-model="vm.globalCustomField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="globalCustomFieldForm[\'actionType\'].$error" ng-show="globalCustomFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">ActionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGlobalCustomField" ng-click="vm.saveGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid || globalCustomFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGlobalCustomField" ng-click="vm.addNewGlobalCustomField()" class="send-button md-accent md-raised" ng-disabled="globalCustomFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n          ADD GLOBALCUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGlobalCustomField" ng-click="vm.deleteGlobalCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/globalCustomFields/globalCustomFields.html",'<div id="globalCustomFields" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.GLOBALCUSTOMFIELDS">GlobalCustomFields</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedGlobalCustomFields.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedGlobalCustomFields =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-globalCustomFields-count">\n          <span>{{vm.selectedGlobalCustomFields.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectGlobalCustomFields()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedGlobalCustomFields" csv-label="true" filename="globalCustomFields.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedGlobalCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- GLOBALCUSTOMFIELD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedGlobalCustomFields" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getGlobalCustomFields">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="alias">{{ \'CONTACTMANAGER.ALIAS\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'CONTACTMANAGER.TYPE\' | translate }}</th>\n                <th md-column md-order-by="required">{{ \'CONTACTMANAGER.REQUIRED\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.globalCustomFields.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="globalCustomField" md-select-id="id" ng-repeat="globalCustomField in vm.globalCustomFields.rows">\n                <td md-cell ng-if="globalCustomField.userpic"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="api/users/{{globalCustomField.id}}/avatar" /></td>\n                <td md-cell ng-if="!globalCustomField.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{globalCustomField.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="id ">{{globalCustomField.id}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="alias ">{{globalCustomField.alias}}</td>\n                <td ng-click="vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="type ">{{ vm.arraytype[globalCustomField.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(globalCustomField, ev) : vm.createOrEditGlobalCustomField($event, globalCustomField)" md-cell class="required ">\n                  <md-icon md-colors="{color: {{globalCustomField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{globalCustomField.required ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(globalCustomField, $event    )" translate="CONTACTMANAGER.EDIT_GLOBALCUSTOMFIELD">\n                          Edit GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(globalCustomField, $event    )" translate="CONTACTMANAGER.DELETE_GLOBALCUSTOMFIELD">\n                          Delete GlobalCustomField\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.globalCustomFields.count}}" md-on-paginate="vm.getGlobalCustomFields" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / GLOBALCUSTOMFIELD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-globalCustomField-button" ng-click="vm.createOrEditGlobalCustomField($event)" aria-label="add globalCustomField" translate translate-attr-aria-label="CONTACTMANAGER.ADD_GLOBALCUSTOMFIELD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD GLOBALCUSTOMFIELD BUTTON --\x3e\n</div>'),e.put("app/main/apps/contactmanager/views/lists/create/dialog.html",'<md-dialog class="list-dialog" aria-label="New List">\n  <form name="listForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus>\n\n        <div ng-messages="listForm[\'name\'].$error" ng-show="listForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.list.description">\n\n        <div ng-messages="listForm[\'description\'].$error" ng-show="listForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newList" ng-click="vm.saveList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid || listForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newList" ng-click="vm.addNewList()" class="send-button md-accent md-raised" ng-disabled="listForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_LIST" translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n          ADD LIST\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newList" ng-click="vm.deleteList($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/agentadd/agentadd.html",'<md-dialog class="list-dialog" aria-label="list" ng-init="vm.onInit()">\n  <form name="listForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="CONTACTMANAGER.AGENTADD_LIST">Add Agent to list</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/customFields/dialog.html",'<md-dialog class="customField-dialog" aria-label="New CustomField">\n  <form name="customFieldForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.ALIAS">Alias</label>\n        <input type="" name="alias" ng-model="vm.customField.alias" ng-required="true" autofocus>\n\n        <div ng-messages="customFieldForm[\'alias\'].$error" ng-show="customFieldForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="CONTACTMANAGER.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.customField.type" required ng-disabled="!vm.newCustomField">\n          <md-option ng-value="\'text\'">Text</md-option>\n          <md-option ng-value="\'select\'">Select</md-option>\n          <md-option ng-value="\'number\'">Number</md-option>\n          <md-option ng-value="\'switch\'">Switch</md-option>\n          <md-option ng-value="\'datetime\'">Datetime</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'type\'].$error" ng-show="customFieldForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.customField.type == \'select\'" class="md-block">\n        <md-list>\n          <md-list-item layout-margin>\n            <md-button class="md-fab md-mini md-secondary" ng-click="vm.addItem(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.ADD">ADD</span></md-tooltip>\n              <md-icon md-font-icon="icon-plus" aria-label="alert error"></md-icon>\n            </md-button>\n            <md-button ng-if="vm.customField.values.length" class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItems(vm.customField.values);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE_ALL">Delete All</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list ng-sortable="vm.sortable">\n          <md-list-item ng-repeat="item in vm.customField.values" style="border: 1px solid #ccc!important; border-radius: 7px;" layout-margin>\n            <div>\n              <md-icon class="s24" style="cursor:move" md-font-icon="icon-drag" aria-label="drag"></md-icon>\n              <input type="text" ng-model="item.value" flex>\n            </div>\n            <md-button class="md-fab md-mini md-warn md-secondary" ng-click="vm.removeItem(vm.customField.values, $index);">\n              <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n              <md-icon md-font-icon="icon-delete" aria-label="alert error"></md-icon>\n            </md-button>\n          </md-list-item>\n        </md-list>\n        <md-list>\n          <md-list-item ng-if="!vm.customField.values.length" layout="row" layout-align="center center">\n            <em translate="CONTACTMANAGER.NO_AVAILABLE_ITEMS">No Available Items</em>\n          </md-list-item>\n        </md-list>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customField.required" aria-label="Required"><span translate="CONTACTMANAGER.REQUIRED">Required</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.type == \'text\'" class="md-block">\n        <md-switch ng-model="vm.customField.clickToAction" aria-label="clickToAction"><span translate="CONTACTMANAGER.CLICKTOACTION">clickToAction</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.customField.clickToAction" class="md-block">\n        <label translate="CONTACTMANAGER.ACTIONTYPE">actionType</label>\n        <md-select name="actionType" ng-model="vm.customField.actionType">\n          <md-option ng-value="\'voice\'">Voice</md-option>\n        </md-select>\n        <div ng-messages="customFieldForm[\'actionType\'].$error" ng-show="customFieldForm[\'actionType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="CONTACTMANAGER.ERRORS.ACTIONTYPE_REQUIRED">actionType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomField" ng-click="vm.saveCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid || customFieldForm.$pristine" aria-label="SAVE" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomField" ng-click="vm.addNewCustomField()" class="send-button md-accent md-raised" ng-disabled="customFieldForm.$invalid" aria-label="ADD" translate="CONTACTMANAGER.ADD_CUSTOMFIELD" translate-attr-aria-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n          ADD CUSTOMFIELD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomField" ng-click="vm.deleteCustomField($event)" aria-label="DELETE" translate translate-attr-aria-label="CONTACTMANAGER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="CONTACTMANAGER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/contactmanager/views/lists/edit/view.html",'<div id="contactmanager-list" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-lists-button md-icon-button" aria-label="Go to lists" ng-click="vm.gotoLists()" translate translate-attr-aria-label="CONTACTMANAGER.GO_TO_LISTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="list-image" hide-xs>\n          <img ng-src="assets/images/business/lists.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.list.id}}\n            <span ng-if="vm.list.name">{{vm.list.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="CONTACTMANAGER.CREATED_AT"></span> <span>{{vm.list.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="CONTACTMANAGER.GOTO_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.list, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="CONTACTMANAGER.AGENTADD_LIST"></span></md-tooltip>\n        <md-icon md-font-icon="icon-eye"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveList()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (customFieldsForm.$invalid) || (voiceDispositionsForm.$invalid)" translate="CONTACTMANAGER.SAVE" translate-attr-aria-label="CONTACTMANAGER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="CONTACTMANAGER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.list.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.list.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CONTACTMANAGER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.list.dialPrefix" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialPrefix\'].$error" ng-show="generalForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CONTACTMANAGER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.CUSTOMFIELDS">CUSTOMFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="list-detail-form-container customfields md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ListCustomFieldsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="CONTACTMANAGER.CUSTOMFIELDS">CustomFields</span>\n                  <ms-search-bar on-search="vm_dc.getListCustomFields()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditListCustomField($event)" aria-label="add customField" translate translate-attr-label="CONTACTMANAGER.ADD_CUSTOMFIELD">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedListCustomFields.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedListCustomFields.length}} {{vm_dc.selectedListCustomFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedListCustomFields" csv-label="true" filename="lists.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedListCustomFields($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedListCustomFields" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getListCustomFields">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'CONTACTMANAGER.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="alias">\n                        {{ \'CONTACTMANAGER.ALIAS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="type">\n                        {{ \'CONTACTMANAGER.TYPE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="required">\n                        {{ \'CONTACTMANAGER.REQUIRED\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="customField" md-select-id="id" ng-repeat="customField in vm_dc.listCustomFields.rows">\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{customField.alias}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell>\n                        {{ vm_dc.arraytype[customField.type].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditListCustomField($event, customField)" md-cell class="required ">\n                        <md-icon md-colors="{color: {{customField.required ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{customField.required? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditListCustomField($event, customField)" translate="CONTACTMANAGER.EDIT_CUSTOMFIELD">\n                                Edit CustomField\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(customField, $event)" translate="CONTACTMANAGER.DELETE_CUSTOMFIELD">\n                                Delete CustomField\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.listCustomFields.rows.length">\n                      <td md-cell colspan="9">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="CONTACTMANAGER.NO_CUSTOMFIELD_AVAILABLE">No customfield available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.listCustomFields.count}}" md-on-paginate="vm_dc.getListCustomFields" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="CONTACTMANAGER.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="ListDispositionsController as vm_dc" ng-init="vm_dc.init(vm.list, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="list-detail-form-container voicedispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedListDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="CONTACTMANAGER.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add contactmanager dispositions" translate translate-attr-label="CONTACTMANAGER.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="lists.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/contactmanager/views/lists/lists.html",'<div id="lists" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-circle" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="CONTACTMANAGER.LISTS">Lists</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="CONTACTMANAGER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedLists.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedLists =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="CONTACTMANAGER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-lists-count">\n          <span>{{vm.selectedLists.length}}</span>\n          <span translate="CONTACTMANAGER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="CONTACTMANAGER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllLists()" translate="CONTACTMANAGER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectLists()" translate="CONTACTMANAGER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedLists" csv-label="true" filename="lists.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedLists($event)" aria-label="delete selected" translate translate-attr-label="CONTACTMANAGER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- LIST TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedLists" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getLists">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'CONTACTMANAGER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'CONTACTMANAGER.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'CONTACTMANAGER.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.lists.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="CONTACTMANAGER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="list" md-select-id="id" ng-repeat="list in vm.lists.rows">\n                <td md-cell ng-if="list.userpic"><img class="avatar" alt="{{list.name}}" ng-src="api/users/{{list.id}}/avatar" /></td>\n                <td md-cell ng-if="!list.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{list.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="id ">{{list.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="name ">{{list.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(list, ev) : vm.createOrEditList($event, list)" md-cell class="description ">{{list.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="CONTACTMANAGER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(list, $event    )" translate="CONTACTMANAGER.EDIT_LIST">\n                          Edit List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotocontactsgoto(list, $event    )" translate="CONTACTMANAGER.GOTOCONTACTS_LIST">\n                          goToContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadContactManagerLists">\n\n                        <md-button ng-click="vm.exportcsvcontactsexport(list, $event    )" translate="CONTACTMANAGER.EXPORTCSVCONTACTS_LIST">\n                          exportCsvContacts List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(list, $event    )" translate="CONTACTMANAGER.AGENTADD_LIST">\n                          AgentAdd List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(list, $event    )" translate="CONTACTMANAGER.DELETE_LIST">\n                          Delete List\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'CONTACTMANAGER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'CONTACTMANAGER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'CONTACTMANAGER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.lists.count}}" md-on-paginate="vm.getLists" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / LIST TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD LIST BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-list-button" ng-click="vm.createOrEditList($event)" aria-label="add list" translate translate-attr-aria-label="CONTACTMANAGER.ADD_LIST">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD LIST BUTTON --\x3e\n</div>'),e.put("app/main/apps/dashboards/views/custom/custom.html",'<div ng-if="!vm.customDashboard">\n  <p>Custom Dashboard not available...</p>\n</div>\n<div id="dashboard-custom" ng-if="vm.customDashboard" ng-cloak layout-fill>\n  <md-content>\n    <md-toolbar class="md-default md-accent filter-header">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead">{{vm.customDashboard.name}}</span>\n        <div flex></div>\n        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\n        <md-button ng-if="vm.crudPermissions.canEdit" class="md-icon-button" ng-click="vm.goToEdit()" aria-label="goToEdit">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.EDIT"></span></md-tooltip>\n          <md-icon md-font-icon="icon-table-edit"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <ms-widget-engine config="vm.customDashboard"></ms-widget-engine>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/agent.general.html",'<div id="agent-general" layout="column">\n  <div layout="row" layout-align="start center" class="md-primary-bg">\n    <md-button class="md-raised no-margin width-50" style="border-radius: 0px" ng-class="{\'md-primary\': !vm.isActiveTab(0)}" ng-click="vm.onClickTab(0)" aria-label="home">\n      <md-tooltip md-direction="bottom" md-delay="500">Home</md-tooltip>\n      <md-icon md-font-icon="icon-home" class="icon"></md-icon>\n    </md-button>\n\n    <ms-tab-scroll style="overflow: hidden;">\n      <div layout="column" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-click="vm.onClickTab(tab.id)" ng-class="{\'grey-50-bg\': vm.isActiveTab(tab.id)}">\n        <div style="height: 34px" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="{{tab.icon}}" class="icon s16 margin-horizontal-5" ng-class="tab.color + \'-fg\'">\n          </md-icon>\n          <span class="text-truncate font-size-12" ng-class="vm.isActiveTab(tab.id) ? \'black-fg\' : \'grey-300-fg\'">\n            {{tab.title}}\n            <span ng-if="tab.badges" class="badge md-white-fg md-red-bg">{{tab.badges}}</span></span>\n          <md-button class="md-icon-button md-mini no-margin" ng-class="vm.isActiveTab(tab.id) ? \'md-primary\' : \'grey-300-fg\'" aria-label="close" ng-click="vm.closeTab(tab); $event.stopPropagation()">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n        <div style="height: 2px" ng-class="vm.isActiveTab(tab.id) ? tab.color + \'-bg\' : \'\'"></div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.html\'" ng-controller="AgentGeneralHomeController as vm_home" ng-init="vm_home.init(vm.license, vm.setting)"></div>\n  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html\'" ng-controller="AgentGeneralContactController as vm" ng-init="vm.init(tab,$parent.vm.license)"></div>\n    </div>\n    <div ng-switch-when="popup" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html\'" ng-controller="AgentGeneralPopupController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="jscripty" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" ng-include="\'app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html\'" ng-controller="AgentGeneralJscriptyController as vm" ng-init="vm.init(tab)"></div>\n    </div>\n    <div ng-switch-when="bot" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html\'" ng-controller="AgentGeneralBotController as vm" ng-init="vm.init(tab, $parent.vm.setting)"></div>\n    </div>\n    <div ng-switch-when="interaction" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'" ng-controller="AgentGeneralInteractionController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n    <div ng-switch-when="iframe" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html\'" ng-controller="AgentGeneralIframeController as vm" ng-init="vm.init(tab, $parent.vm.setting)">\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/bot/agent.general.bot.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center">\n    <div class="big-circle md-whiteframe-4dp">\n      <md-icon class="s128 md-accent pink-fg" md-font-icon="fas fa-robot"></md-icon>\n    </div>\n    <span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n    <span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n      interaction...</span>\n  </div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n    <md-card flex="100" class="interaction">\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar">\n        <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="fas fa-robot" class="s20 pink-fg"></md-icon>\n          <div class="padding-left-10" layout="column" layout-align="center start" flex>\n            <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n              <span>#{{vm.tab.data.uniqueid}} - {{vm.tab.title}}</span>\n            </div>\n          </div>\n          <div layout="row" layout-align="end center">\n\n          </div>\n        </div>\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages">\n          \x3c!-- MESSAGES --\x3e\n          <div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n            <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n            <img ng-if="message.direction ===\'out\'" class="avatar" src="assets/images/avatars/robot.png">\n\n            <div class="bubble" ng-switch="message.direction">\n              <div>\n                <div ng-switch-when="in" class="time secondary-text">\n                  {{vm.tab.title}} - {{message.createdAt | date: \'medium\'}}\n                </div>\n                <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n                  <div layout-padding>\n                    System - {{message.createdAt | date: \'medium\'}}\n                  </div>\n                  <div>\n                    <md-icon class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n                  </div>\n                </div>\n              </div>\n              <div ng-bind-html="message.body | embed:vm.emojiOptions" class="message" layout="row" layout-align="end center"></div>\n            </div>\n          </div>\n          \x3c!-- / MESSAGES --\x3e\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/contact/agent.general.contact.html",'<md-tabs md-selected="vm.currentTab" md-dynamic-height>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.DETAIL">Detail</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content>\n        <div layout="row" class="pr-10">\n          <div layout="row" flex="75" class="flex-scrollable only-x">\n            <md-card ng-repeat="call in vm.tab.calls track by call.uniqueid" class="call-info-card">\n              <md-progress-linear md-mode="indeterminate" ng-if="vm.checkingCallStatus"></md-progress-linear>\n              <md-card-header layout="row" layout-align="space-between">\n                <span ng-if="call.answertime" class="text-boxed indigo-100-bg ml-0">\n                  <timer start-time="call.answertime"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_ANSWERED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <span ng-if="call.disposedAt" class="text-boxed amber-200-bg">\n                  <timer start-time="call.disposedAt"></timer>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.ELAPSED_DISPOSED\' | translate }}\n                  </md-tooltip>\n                </span>\n                <md-button class="md-icon-button no-margin reload-button" ng-click="vm.checkCallStatus(call)" ng-disabled="vm.checkingCallStatus">\n                  <md-icon md-font-icon="icon-reload" class="s22"></md-icon>\n                  <md-tooltip md-direction="bottom">\n                    {{ \'DASHBOARDS.RELOAD\' | translate }}\n                  </md-tooltip>\n                </md-button>\n              </md-card-header>\n              <md-divider></md-divider>\n              <md-card-content>\n                <div layout="column" layout-align="space-between start" class="word-break-all mr-16">\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="{{ call.routeId ? \'icon-phone-outgoing\' : \'icon-phone-incoming\'}}" class="s20 mr-5">\n                    </md-icon>\n                    <span class="h2" privacy ng-cloak>{{ call.routeId ? call.destcalleridnum : call.calleridnum }}</span>\n                  </div>\n\n                  <div class="subtitle h4 secondary-text" ng-if="call.calleridname && call.calleridname != \'<unknown>\' && !call.routeId">\n                    <md-icon md-font-icon="icon-account" class="s20"></md-icon>\n                    Name: <span privacy ng-cloak>{{ call.calleridname }}</span>\n                    <div ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\n                  </div>\n\n                  <div class="text h4 pt-8" ng-if="call.queue">\n                    <md-icon md-font-icon="icon-stackoverflow" class="s20"></md-icon>\n                    Queue: {{call.queue}}\n                  </div>\n                  <div class="text h4 pt-8" ng-if="call.variables.extravar">\n                    <md-icon md-font-icon="icon-minus" class="s20"></md-icon>\n                    Extra: {{call.variables.extravar}}\n                  </div>\n                </div>\n                <div layout="row" layout-align="center end" class="mt-8">\n                  <md-button ng-if="call.disposedAt" type="submit" ng-click="vm.disposeCall($event, call)" class="send-button md-accent md-raised mr-0 mv-0">\n                    {{ \'DASHBOARDS.DISPOSE\' | translate}}\n                  </md-button>\n                </div>\n              </md-card-content>\n            </md-card>\n          </div>\n          <div flex="25" layout="row" layout-md="column" layout-sm="column" layout-align="end center" layout-align-md="center center">\n            <md-button type="submit" ng-click="vm.mergeContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="merge">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.MERGE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-source-fork"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.duplicateContact($event)" class="send-button md-raised md-accent ng-scope" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="duplicate">\n              <md-tooltip md-direction="top"><span translate="DASHBOARDS.DUPLICATE"></span></md-tooltip>\n              <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n            </md-button>\n            <md-button type="submit" ng-click="vm.addNewContact($event)" class="send-button md-accent md-raised" ng-if="vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="add">\n              {{ \'DASHBOARDS.ADD\'| translate }}\n            </md-button>\n            <md-button type="submit" ng-click="vm.saveContact($event)" class="send-button md-accent md-raised" ng-if="!vm.newContact" ng-disabled="vm.detailForm.$invalid || vm.customFieldsForm.$invalid || vm.socialForm.$invalid" aria-label="save">\n              {{ \'DASHBOARDS.SAVE\' | translate }}\n            </md-button>\n          </div>\n        </div>\n        <div layout="row">\n          <div layout="column" flex="75">\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.PERSONAL_INFO">\n                PERSONAL_INFO</div>\n              <div class="subtitle secondary-text">\n                <span translate="CONTACTMANAGER.CREATED_AT"></span>\n                <span>{{vm.contact.createdAt | date:\'medium\'}}</span>\n              </div>\n\n              <form name="vm.detailForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FIRSTNAME">First Name</label>\n                      <md-icon md-font-icon="icon-account" class="firstname"></md-icon>\n                      <input type="text" name="firstName" ng-model="vm.contact.firstName" class="text-truncate" required privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="required">\n                          <span translate="DASHBOARDS.ERRORS.FIRSTNAME_REQUIRED">First name\n                            field is required</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.jscripty" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="JSCRIPTY PROJECTS" ng-click="$mdOpenMenu($event); vm.getJscriptyProjects();" aria-label="jscripty">\n                          <md-icon md-font-icon="icon-script"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingJscriptyProjects">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && vm.jscriptyProjects.count > 0" ng-repeat="project in vm.jscriptyProjects.rows">\n                            <md-button ng-click="vm.addJscriptyTab(project, $event)">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                              {{project.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingJscriptyProjects && (!vm.jscriptyProjects || vm.jscriptyProjects.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_JSCRIPTY_PROJECTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-script"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.LASTNAME">Last Name</label>\n                    <input type="text" name="lastName" ng-model="vm.contact.lastName" class="text-truncate" privacy ng-cloak>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.PHONE">Phone</label>\n                      <md-icon md-font-icon="icon-phone"></md-icon>\n                      <input type="text" name="phone" ng-model="vm.contact.phone" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.phone" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.phone" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.MOBILE">Mobile</label>\n                      <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n                      <input type="text" name="mobile" ng-model="vm.contact.mobile" class="text-truncate" privacy ng-cloak>\n                      <div class="hint"><span ng-show="!vm.user.phoneBarRemoteControl || !vm.contact.mobile" translate="CONTACTMANAGER.HELP.PHONEBAR_API"></span></div>\n                    </md-input-container>\n                    <div>\n                      \x3c!-- click to call directive --\x3e\n                      <ms-click-to-call target="vm.contact.mobile" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                      \x3c!--  / click to call directive --\x3e\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.messaging || !vm.hasPermission(107) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW SMS" ng-click="$mdOpenMenu($event); vm.getAccounts(\'sms\')" aria-label="sms">\n                          <md-icon md-font-icon="icon-message-text"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.smsAccounts.count > 0" ng-repeat="account in vm.smsAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Sms\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.smsAccounts || vm.smsAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_SMS_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-message-text"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.whatsapp || !vm.hasPermission(114) || !vm.contact.mobile" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW WHATSAPP" ng-click="$mdOpenMenu($event); vm.getAccounts(\'whatsapp\')" aria-label="whatsapp">\n                          <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.whatsappAccounts.count > 0" ng-repeat="account in vm.whatsappAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Whatsapp\', account, vm.contact.mobile)">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.whatsappAccounts || vm.whatsappAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_WHATSAPP_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-whatsapp"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.EMAIL">Email</label>\n                      <md-icon md-font-icon="icon-email" class="email"></md-icon>\n                      <input type="email" name="email" ng-model="vm.contact.email" class="text-truncate" privacy ng-cloak>\n                      <div ng-messages="vm.detailForm.firstName.$error" ng-show="vm.detailForm.firstName.$touched" role="alert">\n                        <div ng-message="email">\n                          <span translate="DASHBOARDS.ERRORS.EMAIL_MUST_VALID">Email must be a\n                            valid e-mail address</span>\n                        </div>\n                      </div>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.mail || !vm.hasPermission(106) || !vm.contact.email" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW EMAIL" ng-click="$mdOpenMenu($event); vm.getAccounts(\'mail\')" aria-label="email">\n                          <md-icon md-font-icon="icon-email"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.mailAccounts.count > 0" ng-repeat="account in vm.mailAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Mail\', account, vm.contact.email)">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.mailAccounts || vm.mailAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_MAIL_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-email"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                  <div flex="5"></div>\n                  <div layout="row" flex>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="DASHBOARDS.FAX">Fax</label>\n                      <md-icon md-font-icon="icon-deskphone"></md-icon>\n                      <input type="text" name="fax" ng-model="vm.contact.fax" privacy ng-cloak>\n                    </md-input-container>\n                    <div>\n                      <md-menu ng-if="!vm.newContact">\n                        <md-button ng-disabled="!vm.license.fax || !vm.hasPermission(109) || !vm.contact.fax" class="md-icon-button md-raised md-accent ng-scope md-ink-ripple" title="NEW FAX" ng-click="$mdOpenMenu($event); vm.getAccounts(\'fax\')" aria-label="fax">\n                          <md-icon md-font-icon="icon-deskphone"></md-icon>\n                        </md-button>\n                        <md-menu-content>\n                          <md-menu-item ng-if="vm.loadingAccounts">\n                            <md-progress-circular class="md-accent margin-auto" md-diameter="32" md-mode="indeterminate">\n                            </md-progress-circular>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && vm.faxAccounts.count > 0" ng-repeat="account in vm.faxAccounts.rows">\n                            <md-button ng-click="vm.composeInteraction($event, \'Fax\', account, vm.contact.fax)">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                              {{account.name}}\n                            </md-button>\n                          </md-menu-item>\n                          <md-menu-item ng-if="!vm.loadingAccounts && (!vm.faxAccounts || vm.faxAccounts.count === 0)">\n                            <md-button disabled translate="DASHBOARDS.NO_FAX_ACCOUNTS_AVAILABLE">\n                              <md-icon md-font-icon="icon-deskphone"></md-icon>\n                            </md-button>\n                          </md-menu-item>\n                        </md-menu-content>\n                      </md-menu>\n                    </div>\n                  </div>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\n                  <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="25">\n                    <div class="pb-16" layout="row" layout-align="start center">\n                      <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\n                  </div>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DATE_OF_BIRTH">Date of Birth</label>\n                    <mdp-date-picker mdp-open-on-click mdp-format="YYYY-MM-DD" name="dateOfBirth" ng-model="vm.contact.dateOfBirth"></mdp-date-picker>\n                  </md-input-container>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COMPANY">Company</label>\n                    <md-icon md-font-icon="icon-domain" class="email"></md-icon>\n                    <md-select name="company" ng-model="vm.contact.CompanyId">\n                      <md-option ng-value="company.id" ng-repeat="company in vm.tab.companies.rows">{{company.name}}\n                      </md-option>\n                      <md-option ng-value="null"><em translate="DASHBOARDS.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.TAG">TAG</label>\n                    <md-icon md-font-icon="icon-tag"></md-icon>\n                    <md-select ng-model="vm.tab.Tags" multiple>\n                      <md-option ng-value="tag.id" ng-repeat="tag in vm.tab.tags.rows">\n                        {{tag.name}}</md-option>\n                    </md-select>\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.COUNTRY">Country</label>\n                    <md-icon md-font-icon="icon-home" class="country"></md-icon>\n                    <input type="text" name="country" ng-model="vm.contact.country" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.CITY">City</label>\n                    <input type="text" name="city" ng-model="vm.contact.city">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.STREET">Street</label>\n                    <input type="text" name="street" ng-model="vm.contact.street">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.POSTALCODE">Postal Code</label>\n                    <input type="text" name="postalCode" ng-model="vm.contact.postalCode">\n                  </md-input-container>\n                </div>\n\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate translate-attr-placeholder="DASHBOARDS.NOTES">Notes</label>\n                    <md-icon md-font-icon="icon-note"></md-icon>\n                    <textarea ng-model="vm.contact.description" type="text" max-rows="4"></textarea>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n            <md-card layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.SOCIAL">Social</div>\n              <form name="vm.socialForm" novalidate>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Facebook</label>\n                    <md-icon md-font-icon="icon-facebook" class="facebook"></md-icon>\n                    <input type="text" name="facebook" ng-model="vm.contact.facebook" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Twitter</label>\n                    <md-icon md-font-icon="icon-twitter" class="twitter"></md-icon>\n                    <input type="text" name="twitter" ng-model="vm.contact.twitter" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Line</label>\n                    <md-icon md-font-icon="fab fa-line"></md-icon>\n                    <input type="text" name="line" ng-model="vm.contact.line" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Viber</label>\n                    <md-icon md-font-icon="fab fa-viber"></md-icon>\n                    <input type="text" name="viber" ng-model="vm.contact.viber" class="text-truncate">\n                  </md-input-container>\n                </div>\n                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>WeChat</label>\n                    <md-icon md-font-icon="fab fa-weixin"></md-icon>\n                    <input type="text" name="wechat" ng-model="vm.contact.wechat" class="text-truncate">\n                  </md-input-container>\n                  <div flex="5"></div>\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label>Telegram</label>\n                    <md-icon md-font-icon="icon-telegram"></md-icon>\n                    <input type="text" name="telegram" ng-model="vm.contact.telegram" class="text-truncate">\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n          <div flex="25" layout="column" layout-padding>\n            <md-card flex="100" layout-padding>\n              <div class="h2 secondary-text text-truncate" translate="DASHBOARDS.CUSTOM_FIELDS">CUSTOM\n                FIELDS</div>\n              <form name="vm.customFieldsForm" novalidate>\n\n                \x3c!-- START INPUT LIST --\x3e\n                <md-input-container class="md-block">\n                  <label translate translate-attr-placeholder="DASHBOARDS.LIST">List</label>\n                  <md-select name="list" ng-disabled="!vm.newContact" ng-model="vm.contact.ListId" ng-change="vm.getCustomFields(vm.contact.ListId)" required>\n                    <md-optgroup label="Lists">\n                      <md-option ng-value="list.id" ng-repeat="list in vm.lists.rows">#{{list.id}} - {{list.name}}\n                      </md-option>\n                    </md-optgroup>\n                  </md-select>\n                </md-input-container>\n                \x3c!-- END INPUT LIST --\x3e\n\n                <div ng-repeat="customField in vm.tab.customFields.rows" ng-switch="customField.type">\n                  <md-input-container class="md-block" ng-switch-when="datetime">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <div ng-init="vm.contact[\'cf_\' + customField.id] = vm.getDateFromString(vm.contact[\'cf_\' + customField.id])">\n                      <mdp-date-picker mdp-open-on-click ng-required="customField.required" mdp-format="YYYY-MM-DD" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-date-picker>\n                      <mdp-time-picker mdp-open-on-click mdp-placeholder="Time" ng-required="customField.required" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.contact[\'cf_\' + customField.id]">\n                      </mdp-time-picker>\n                    </div>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="select">\n                    <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                    <md-select ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      <md-option ng-repeat="value in customField.values" ng-value="value.value">\n                        {{value.value}}</md-option>\n                      <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em>\n                      </md-option>\n                    </md-select>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-when="switch">\n                    <md-switch aria-label="{{customField.alias}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-true-value="1" ng-false-value="0">\n                      {{customField.alias}}<span ng-if="customField.required">*</span>\n                    </md-switch>\n                  </md-input-container>\n\n                  <md-input-container class="md-block" ng-switch-default>\n                    <div layout-gt-sm="row" class="layout-gt-sm-row"></div>\n                    <div layout="row" flex>\n                      <md-input-container class="md-block" flex-gt-sm="">\n                        <label>{{customField.alias}}<span ng-if="customField.required">*</span></label>\n                        <input type="{{customField.type}}" ng-model="vm.contact[\'cf_\' + customField.id]" ng-required="customField.required">\n                      </md-input-container>\n                      <ms-click-to-call ng-if="customField.clickToAction && customField.actionType === \'voice\'" target="vm.contact[\'cf_\' + customField.id]" prefix="vm.list ? vm.list.dialPrefix : null" license="vm.license" type="\'button\'"></ms-click-to-call>\n                    </div>\n                  </md-input-container>\n                </div>\n              </form>\n            </md-card>\n          </div>\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Customer Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding" id="journey-content">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/contact/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.call.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div ng-if="!vm.isReschedule">\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n        <md-input-container class="md-block" ng-if="vm.availableCalls === 1">\n          <md-switch ng-model="vm.autoClose" aria-label="Auto Close">\n            <span translate="DASHBOARDS.AUTOCLOSE">Automatically close contact tab after disposal</span>\n          </md-switch>\n        </md-input-container>\n      </div>\n      <div ng-if="vm.isReschedule">\n        <div layout="row">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-change="vm.recalcTZTime()" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.date.$error" ng-show="disposition.date.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n              <div ng-messages="disposition.time.$error" ng-show="disposition.time.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </div>\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.CAMPAIGN">Campaign</label>\n            <md-select name="queueCampaign" ng-model="vm.queueCampaign" required>\n              <md-option ng-value="queueCampaign" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <md-icon md-font-icon="icon-checkbox-blank-circle" ng-class="{\'green-fg\': queueCampaign.dialActive}" aria-label="Status">\n                </md-icon>\n                {{ queueCampaign.name }}\n              </md-option>\n            </md-select>\n            <div ng-messages="disposition.queueCampaign.$error" ng-show="disposition.queueCampaign.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.CAMPAIGN_REQUIRED">Campaign field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-if="!vm.isReschedule" layout="row">\n      <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()" ms-dialog-spinner>\n        {{(vm.selectedDisposition.name ? \'DASHBOARDS.DISPOSE\' : \'DASHBOARDS.SAVE\') | translate}}\n      </md-button>\n      <md-button class="send-button md-raised md-primary" translate="DASHBOARDS.RESCHEDULE" ng-click="vm.saveDisposition(\'reschedule\')">\n        Reschedule\n      </md-button>\n      <md-button class="send-button md-accent md-raised" translate="DASHBOARDS.RECALLME" ng-click="vm.saveDisposition(\'recallme\')">\n        Recall Me\n      </md-button>\n      <span flex></span>\n      <md-button ng-if="vm.hasBlackLists" class="md-raised md-warn" translate="DASHBOARDS.BLACKLIST" ng-click="vm.saveDisposition(\'blacklist\')">\n        Blacklist\n      </md-button>\n    </md-dialog-actions>\n    <md-dialog-actions ng-if="vm.isReschedule" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveReschedule()" class="send-button md-accent md-raised" ng-disabled="disposition.$invalid || disposition.$pristine || vm.disable" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/reschedule/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="dateTime" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex class="md-block">\n          <mdp-date-picker mdp-open-on-click required name="date" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" mdp-min-date="vm.hopper.minDate" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.date.$error" ng-show="dateTime.date.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.DATE_REQUIRED">Date is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.DATE_INVALID">Date is invalid</span>\n              </div>\n            </div>\n          </mdp-date-picker>\n        </div>\n\n        <div flex class="md-block">\n          <mdp-time-picker mdp-open-on-click required name="time" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.dateTime">\n            <div ng-messages="dateTime.time.$error" ng-show="dateTime.time.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="DASHBOARDS.ERRORS.TIME_REQUIRED">Time is required</span>\n              </div>\n              <div ng-message="format">\n                <span translate="DASHBOARDS.ERRORS.TIME_INVALID">Time is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-disabled="vm.disable" ng-click="vm.saveDialog()" class="send-button md-accent md-raised" ng-disabled="dateTime.$invalid || dateTime.$pristine" aria-label="SAVE" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",'<md-dialog ng-init="vm.onInit()" class="contact-trigger-dialog" aria-label="Select contact" ng-cloak>\n  <md-toolbar class="red-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ \'DASHBOARDS.SELECT_CONTACT\' | translate }}</span>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="h-400 pv-16">\n    <div layout="row" class="p-10">\n      <span class="font-size-16">{{ \'DASHBOARDS.MULTIPLE_CONTACTS_FOUND\' | translate }}<strong>&nbsp;{{ vm.callNumber }}</strong>.</span>\n      <span class="font-size-16">&nbsp;{{ \'DASHBOARDS.WHICH_ONE_TO_USE\' | translate }}</span>\n    </div>\n    <md-grid-list md-cols-xs="1" md-cols="2" md-row-height="fit" ng-class="vm.paginatedContacts[vm.page - 1].length > 2 ? \'two-rows-layout\' : \'one-row-layout\'" flex>\n      <md-grid-tile ng-repeat="contact in vm.paginatedContacts[vm.page - 1]" md-rowspan="1">\n        <md-card layout="column" class="contact-info" no-padding no-margin ng-click="vm.selectedContact = contact;" ng-class="{ \'light-blue-50-bg\' : vm.selectedContact && vm.selectedContact.id === contact.id }" flex>\n          <md-card-title class="pt-16">\n            <md-card-title-text layout-align="center start">\n              <span class="font-size-16 text-bold">#{{ contact.id }} -\n                <span privacy ng-cloak>{{ contact.firstName }} {{ contact.lastName }}</span>\n              </span>\n              <em class="font-size-12">{{ \'DASHBOARDS.LAST_UPDATED\' | translate }}: {{ contact.updatedAt }}</em>\n              <span class="font-size-12">{{ \'DASHBOARDS.LIST\' | translate }}: {{ vm.lists[contact.ListId] }}</span>\n            </md-card-title-text>\n            <md-button class="md-icon-button no-margin" aria-label="Selected">\n              <md-icon md-font-icon="{{ vm.selectedContact && vm.selectedContact.id === contact.id ? \'icon-checkbox-marked-circle\' : \'icon-checkbox-blank-circle-outline\' }}" ng-class="{ \'green-fg\': vm.selectedContact && vm.selectedContact.id === contact.id }"></md-icon>\n            </md-button>\n          </md-card-title>\n          <md-divider></md-divider>\n          <md-card-content layout="row" layout-align="center start" class="p-10">\n            <span class="font-size-16">{{ \'DASHBOARDS.MATCHING_FIELD\' | translate }}:\n              <strong privacy ng-cloak>{{ contact.matchingField }}</strong>\n            </span>\n          </md-card-content>\n        </md-card>\n      </md-grid-tile>\n    </md-grid-list>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <div ng-if="vm.paginatedContacts.length > 1" layout="row" layout-align="center center" flex>\n      <md-button ng-click="vm.page = vm.page - 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': vm.page <= 1 }" aria-label="Previous page">\n        <md-icon md-font-icon="icon-chevron-double-left"></md-icon>\n      </md-button>\n      <span>{{ \'DASHBOARDS.PAGE\' | translate }} {{ vm.page }} {{ \'DASHBOARDS.OF\' | translate }}\n        {{ vm.paginatedContacts.length }}</span>\n      <md-button ng-click="vm.page = vm.page + 1;" class="md-icon-button no-margin" ng-class="{ \'hidden\': !vm.paginatedContacts[vm.page] }" aria-label="Next page">\n        <md-icon md-font-icon="icon-chevron-double-right"></md-icon>\n      </md-button>\n    </div>\n    <md-button ng-click="vm.selectContact()" class="select-button md-accent md-raised" ng-disabled="!vm.selectedContact" aria-label="Select" translate="DASHBOARDS.SELECT" translate-attr-aria-label="DASHBOARDS.SELECT">\n      SELECT\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>vc'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110)" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 0" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html\'" ng-controller="AgentHomeAbandonedVoiceController as vm_voice">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-if="vm.selectedTab === 1" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html\'" ng-controller="AgentHomeAbandonedBullController as vm_bull">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/bull/agent.general.abandoned.bull.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_bull.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_bull.getAbandonedCalls()" query="vm_bull.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_bull.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_bull.quickFilters" query="vm_bull.query" search="vm_bull.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_bull.refresh && vm_bull.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_bull.showTooltip" md-visible="vm_bull.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_bull.promise">\n      <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n          <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}\n          </th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_bull.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_bull.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_bull.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_bull.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerexitAt ? (abandonedCall.queuecallerexitAt | formatdate) : undefined }}\n          </td>\n          <td md-cell class="list">{{abandonedCall.queuecallerexitreason}}</td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_bull.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_bull.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_bull.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_bull.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.abandonedCalls.count}}" md-on-paginate="vm_bull.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/dispose/dialog.html",'<md-dialog class="agent-dialog" aria-label="agent dispose">\n  <form name="disposition" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n          <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n          <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n            <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\n            <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n            <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition" ng-change="vm.onDispositionChange(\'third\')">\n              <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true">\n                {{ disposition.name }}</md-option>\n            </md-select>\n          </md-input-container>\n          <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n            <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n            </md-icon>\n          </md-button>\n        </div>\n        <md-input-container class="md-block">\n          <label translate="DASHBOARDS.NOTE">Note</label>\n          <textarea ng-model="vm.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n        </md-input-container>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button ng-disabled="disposition.$invalid || disposition.$pristine" class="send-button md-raised md-accent" ng-click="vm.saveDisposition()">\n'+"          {{(vm.selectedDisposition.name ? 'DASHBOARDS.DISPOSE' : 'DASHBOARDS.SAVE') | translate}}\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>"),e.put("app/main/apps/dashboards/views/general/agent/home/abandoned/voice/agent.general.abandoned.voice.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header blue-bg" ng-class="{\'h-128\' : vm_voice.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n      <ms-search-bar on-search="vm_voice.getAbandonedCalls()" query="vm_voice.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm_voice.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm_voice.quickFilters" query="vm_voice.query" search="vm_voice.getAbandonedCalls()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm_voice.refresh && vm_voice.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip ng-if="vm_voice.showTooltip" md-visible="vm_voice.showTooltip">\n          {{\'DASHBOARDS.CLICKRELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm_voice.promise">\n      <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getAbandonedCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n          <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n          <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="secondDisposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column md-order-by="thirdDisposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.RESERVED\' | translate}}</th>\n          <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm_voice.abandonedCalls.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="abandonedCall in vm_voice.abandonedCalls.rows">\n          <td md-cell class="id">{{abandonedCall.id}}</td>\n          <td md-cell class="firstName" privacy ng-cloak>{{abandonedCall.calleridname}}</td>\n          <td md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="abandonedCall.calleridnum" license="vm_home.license" disabled="abandonedCall.lastAssignedTo !== vm_voice.currentUser.name">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="list">{{vm_voice.queuesMap[abandonedCall.queue]}}</td>\n          <td md-cell class="list">\n            {{abandonedCall.queuecallerabandonAt ? (abandonedCall.queuecallerabandonAt | formatdate) : (abandonedCall.queuecallerexitAt | formatdate) }}\n          </td>\n          <td md-cell class="list">{{ abandonedCall.disposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.secondDisposition }}</td>\n          <td md-cell class="list">{{ abandonedCall.thirdDisposition }}</td>\n          <td md-cell class="actions">\n            <md-switch no-margin ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name || !abandonedCall.lastAssignedTo" ng-disabled="vm_voice.disable[abandonedCall.id]" ng-model="abandonedCall.assigned" aria-label="reserved" ng-change="vm_voice.reserved(abandonedCall)">\n            </md-switch>\n          </td>\n          <td md-cell class="list">{{abandonedCall.lastAssignedTo}}</td>\n          <td md-cell class="actions">\n            <md-menu ng-if="abandonedCall.lastAssignedTo === vm_voice.currentUser.name">\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="1">\n                <md-menu-item>\n                  <md-button ng-click="vm_voice.dispose(abandonedCall)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.abandonedCalls.count}}" md-on-paginate="vm_voice.getAbandonedCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.html",'<div layout="column" layout-align="start center" class="agent-general-home-navbar md-primary-bg width-50">\n  <div ng-repeat="node in vm_home.navigation">\n    <div ng-repeat="home in node.children">\n      <md-button ng-repeat="button in home.children  | orderBy:\'weight\'" ng-if="!button.hidden()" class="md-raised width-50 height-50 no-margin" style="border-radius: 0px" aria-label="{{button.state}}" ng-click="vm_home.changeSidebarTab(button)" ng-class="{\'md-primary\': vm_home.sidebar != button.state}">\n        <md-tooltip md-direction="right" md-delay="500"><span translate="{{button.translate}}"></span>\n        </md-tooltip>\n        <md-icon md-font-icon="{{button.icon}}" ng-class="button.iconClass"></md-icon>\n      </md-button>\n    </div>\n  </div>\n</div>\n<div class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\n        <div ng-if="vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html\'" ng-controller="AgentHomePresenceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(115)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="contacts" class="home-contacts">\n        <div ng-if="vm_home.hasPermission(102) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html\'" ng-controller="AgentHomeContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(102) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mycontacts" class="home-mycontacts">\n        <div ng-if="vm_home.hasPermission(103) && vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html\'" ng-controller="AgentHomeMyContactsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(103) || !vm_home.license.cm" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="scheduled" class="home-scheduled">\n        <div ng-if="vm_home.hasPermission(113) && vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html\'" ng-controller="AgentHomeScheduledCallsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(113) || !vm_home.license.dialer" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="voice" class="home-voice">\n        <div ng-if="vm_home.hasPermission(110) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html\'" ng-controller="AgentHomeVoiceController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(110) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="abandoned" class="home-abandoned">\n        <div ng-if="vm_home.hasPermission(111) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/abandoned/agent.general.abandoned.html\'" ng-controller="AgentHomeAbandonedController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(111) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="recordings" class="home-recordings">\n        <div ng-if="vm_home.hasPermission(104) && vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html\'" ng-controller="AgentHomeRecordingsController as vm"></div>\n        <div ng-if="!vm_home.hasPermission(104) || !vm_home.license.voice" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat" class="home-chat">\n        <div ng-if="vm_home.hasPermission(105) && vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html\'" ng-controller="AgentHomeChatController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(105) || !vm_home.license.chat" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="mail" class="home-mail">\n        <div ng-if="vm_home.hasPermission(106) && vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html\'" ng-controller="AgentHomeMailController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(106) || !vm_home.license.mail" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms" class="home-sms">\n        <div ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html\'" ng-controller="AgentHomeSmsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(107) || !vm_home.license.messaging" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel" class="home-openchannel">\n        <div ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html\'" ng-controller="AgentHomeOpenchannelController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(108) || !vm_home.license.openchannel" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax" class="home-fax">\n        <div ng-if="vm_home.hasPermission(109) && vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html\'" ng-controller="AgentHomeFaxController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(109) || !vm_home.license.fax" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp" class="home-whatsapp">\n        <div ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html\'" ng-controller="AgentHomeWhatsappController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting)">\n        </div>\n        <div ng-if="!vm_home.hasPermission(114) || !vm_home.license.whatsapp" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="plugin" class="home-plugin" layout-fill>\n        <div ng-if="vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html\'" ng-controller="AgentHomePluginsController as vm" ng-init="vm.onInit(vm_home.license, vm_home.setting, vm_home.plugin)" layout-fill></div>\n        <div ng-if="!vm_home.hasPermission(vm_home.pluginId)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n      <div ng-switch-default class="home-default">\n        <div ng-if="vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html\'" ng-controller=" AgentHomeDashboardController  as vm"></div>\n        <div ng-if="!vm_home.hasPermission(101)" ng-include="\'app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html\'">\n        </div>\n      </div>\n    </div>\n  </div>\n  <div ng-if="(vm_home.draftManager.drafts | json) != \'{}\'" layout="column" class="draft-manager-bar">\n    <ms-tab-scroll>\n      <div layout="column" ng-repeat="(key, draft) in vm_home.draftManager.drafts" class="grey-50-bg" ng-click="vm_home.draftManager.open(draft.id)">\n        <div class="draft-manager-tab" layout="row" layout-align="space-between center">\n          <md-icon md-font-icon="icon-pencil" class="icon s16 margin-horizontal-5 black-fg"></md-icon>\n          <span class="text-truncate font-size-12 black-fg">{{draft.title}}</span>\n          <md-button class="md-icon-button md-mini no-margin md-primary" aria-label="close" ng-click="vm_home.draftManager.remove(draft.id)">\n            <md-icon md-font-icon="icon-close-circle-outline" class="icon s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </ms-tab-scroll>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/agent.general.home.permissions.html",'<md-content layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n  <div layout="column" layout-align="space-around center" flex="50">\n    <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n    <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to navigate through available sections.</span>\n  </div>\n\n  <div layout="column" flex="50">\n    <img src="assets/images/avatars/permissions.png" alt="permissions">\n  </div>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/home/chat/agent.general.chat.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.CHAT_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getChatInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getChatInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getChatInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChatInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.WEBSITE\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.chatInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.chatInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showChatInteraction($event, interaction)" md-cell class="chatAccount">\n            {{ vm.getChatWebsiteLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showChatInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Chat\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction, true)" translate="CHAT.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadChatInteraction($event, interaction)" translate="CHAT.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chatInteractions.count}}" md-on-paginate="vm.getChatInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/contacts/agent.general.contacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.CONTACTS">Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact()" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact(contact.id)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="firstName" privacy ng-cloak>{{contact.firstName}}\n            {{contact.lastName}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="fax" privacy ng-cloak>{{contact.fax}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="email" privacy ng-cloak>{{contact.email}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="createdAt">{{contact.createdAt | formatdate}}</td>\n          <td ng-click="vm.openContact(contact.id)" md-cell class="list">{{vm.listsMap[contact.ListId].name}}\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact(contact.id)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/agent.general.dashboard.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-dynamic-height md-border-bottom>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html\'" ng-controller="AgentHomeDashboardVoiceController as vm_voice" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(110) && vm_home.license.dialer" label="{{\'DASHBOARDS.MOTION_BULL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html\'" ng-controller="AgentHomeDashboardBullController as vm_bull" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(105) && vm_home.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html\'" ng-controller="AgentHomeDashboardMultiChannelChatController as vm_chat" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(106) && vm_home.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html\'" ng-controller="AgentHomeDashboardMultiChannelMailController as vm_mail" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(107) && vm_home.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html\'" ng-controller="AgentHomeDashboardMultiChannelSmsController as vm_sms" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(108) && vm_home.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html\'" ng-controller="AgentHomeDashboardMultiChannelOpenchannelController as vm_openchannel" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(109) && vm_home.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html\'" ng-controller="AgentHomeDashboardMultiChannelFaxController as vm_fax" class="md-padding">\n        </md-content>\n      </md-tab>\n      <md-tab ng-if="vm_home.hasPermission(114) && vm_home.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html\'" ng-controller="AgentHomeDashboardMultiChannelWhatsappController as vm_whatsapp" class="md-padding">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/bull/agent.general.dashboard.bull.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_bull.promise">\n        <thead md-head md-order="vm_bull.query.sort" md-on-reorder="vm_bull.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.TYPE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.voiceQueues)">\n            <td md-cell colspan="4">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_bull.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_bull.query.page" md-total="{{vm_bull.voiceQueuesTotal}}" md-on-paginate="vm_bull.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header red-900-bg">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_bull.rpcVoiceQueuesChannels | limitObjectFromTo: vm_bull.queryChannels.limit:(vm_bull.queryChannels.page - 1) * vm_bull.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_bull.queryChannels.limit" md-page="vm_bull.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_bull.getSize(vm_bull.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/chat/agent.general.dashboard.chat.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_chat.promise">\n        <thead md-head md-order="vm_chat.query.sort" md-on-reorder="vm_chat.getChatQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.getSize(vm_chat.chatQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_chat.chatQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_chat.query.page" md-total="{{vm_chat.chatQueuesTotal}}" md-on-paginate="vm_chat.getChatQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_chat.getColorByChannel(\'chat\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_chat.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_chat.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_chat.queryChannels.limit" md-page="vm_chat.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_chat.paginatedInteractions.length}}" md-on-paginate="vm_chat.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/fax/agent.general.dashboard.fax.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_fax.promise">\n        <thead md-head md-order="vm_fax.query.sort" md-on-reorder="vm_fax.getFaxQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.getSize(vm_fax.faxQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_fax.faxQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_fax.query.page" md-total="{{vm_fax.faxQueuesTotal}}" md-on-paginate="vm_fax.getFaxQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_fax.getColorByChannel(\'fax\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_fax.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_fax.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_fax.queryChannels.limit" md-page="vm_fax.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_fax.paginatedInteractions.length}}" md-on-paginate="vm_fax.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/mail/agent.general.dashboard.mail.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_mail.promise">\n        <thead md-head md-order="vm_mail.query.sort" md-on-reorder="vm_mail.getMailQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.getSize(vm_mail.mailQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_mail.mailQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_mail.query.page" md-total="{{vm_mail.mailQueuesTotal}}" md-on-paginate="vm_mail.getMailQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_mail.getColorByChannel(\'mail\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_mail.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_mail.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_mail.queryChannels.limit" md-page="vm_mail.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_mail.paginatedInteractions.length}}" md-on-paginate="vm_mail.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/openchannel/agent.general.dashboard.openchannel.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_openchannel.promise">\n        <thead md-head md-order="vm_openchannel.query.sort" md-on-reorder="vm_openchannel.getOpenchannelQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.getSize(vm_openchannel.openchannelQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_openchannel.openchannelQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_openchannel.query.page" md-total="{{vm_openchannel.openchannelQueuesTotal}}" md-on-paginate="vm_openchannel.getOpenchannelQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_openchannel.getColorByChannel(\'openchannel\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_openchannel.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_openchannel.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_openchannel.queryChannels.limit" md-page="vm_openchannel.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_openchannel.paginatedInteractions.length}}" md-on-paginate="vm_openchannel.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/sms/agent.general.dashboard.sms.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_sms.promise">\n        <thead md-head md-order="vm_sms.query.sort" md-on-reorder="vm_sms.getSmsQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.getSize(vm_sms.smsQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_sms.smsQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_sms.query.page" md-total="{{vm_sms.smsQueuesTotal}}" md-on-paginate="vm_sms.getSmsQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_sms.getColorByChannel(\'sms\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_sms.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_sms.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_sms.queryChannels.limit" md-page="vm_sms.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_sms.paginatedInteractions.length}}" md-on-paginate="vm_sms.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/voice/agent.general.dashboard.voice.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="VOICE.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_voice.promise">\n        <thead md-head md-order="vm_voice.query.sort" md-on-reorder="vm_voice.getVoiceQueues">\n          <tr md-row>\n            <th md-column>{{ \'VOICE.NAME\' | translate }}</th>\n            <th md-column>{{ \'VOICE.WAITING\' | translate }}</th>\n            <th ng-if="voiceQueue.type === \'outbound\'" md-column>{{ \'VOICE.ACTIVE\' | translate }}</th>\n            \x3c!-- <th md-column md-order-by="active">{{ \'VOICE.ACTIVE\' | translate }}</th> --\x3e\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.voiceQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, voiceQueue) in vm_voice.voiceQueues">\n            <td md-cell class="name">{{voiceQueue.name}}</td>\n            <td ng-if="voiceQueue.type === \'outbound\'" md-cell class="waiting">{{voiceQueue.dialMethod}}</td>\n            <td md-cell class="waiting">{{voiceQueue.waiting || 0}}</td>\n            <td md-cell ng-if="voiceQueue.type === \'outbound\'" class="dialActive ">\n              <md-icon md-colors="{color: {{voiceQueue.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{voiceQueue.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n            </td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_voice.query.page" md-total="{{vm_voice.voiceQueuesTotal}}" md-on-paginate="vm_voice.getVoiceQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg ">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n            <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n            <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, channel) in vm_voice.rpcVoiceQueuesChannels | limitObjectFromTo: vm_voice.queryChannels.limit:(vm_voice.queryChannels.page - 1) * vm_voice.queryChannels.limit">\n            <td md-cell>{{channel.exten}}</td>\n            <td md-cell>{{channel.queue}}</td>\n            <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_voice.queryChannels.limit" md-page="vm_voice.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_voice.getSize(vm_voice.rpcVoiceQueuesChannels)}}" md-page-select>\n    </md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/dashboard/whatsapp/agent.general.dashboard.whatsapp.html",'<div layout="row" ng-cloak>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.QUEUES">Queues</span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table md-progress="vm_whatsapp.promise">\n        <thead md-head md-order="vm_whatsapp.query.sort" md-on-reorder="vm_whatsapp.getWhatsappQueues">\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.NAME\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.WAITING\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.getSize(vm_whatsapp.whatsappQueues)">\n            <td md-cell colspan="2">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, queue) in vm_whatsapp.whatsappQueues">\n            <td md-cell class="name">{{queue.name}}</td>\n            <td md-cell class="waiting">{{queue.waiting || 0}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_whatsapp.query.page" md-total="{{vm_whatsapp.whatsappQueuesTotal}}" md-on-paginate="vm_whatsapp.getWhatsappQueues" md-page-select></md-table-pagination>\n  </md-card>\n  <md-card flex="50">\n    <md-toolbar class="md-table-toolbar md-default table-header" ng-class="vm_whatsapp.getColorByChannel(\'whatsapp\')">\n      <div class="md-toolbar-tools">\n        <span class="md-subhead" translate="DASHBOARDS.CHANNEL_WAITING_TEXT"></span>\n        <div flex></div>\n      </div>\n    </md-toolbar>\n    <md-table-container>\n      <table md-table>\n        <thead md-head>\n          <tr md-row>\n            <th md-column>{{ \'DASHBOARDS.ACCOUNT\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_QUEUE\' | translate }}</th>\n            <th md-column>{{ \'DASHBOARDS.CHANNEL_FROM\' | translate }}</th>\n          </tr>\n        </thead>\n        <tbody md-body>\n          <tr md-row ng-hide="vm_whatsapp.paginatedInteractions.length">\n            <td md-cell colspan="3">\n              <div layout="row" layout-align="center center">\n                <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n              </div>\n            </td>\n          </tr>\n          <tr md-row ng-repeat="(key, interaction) in vm_whatsapp.interactions">\n            <td md-cell>{{interaction.account}}</td>\n            <td md-cell>{{interaction.queue}}</td>\n            <td md-cell>{{interaction.from}}</td>\n          </tr>\n        </tbody>\n      </table>\n    </md-table-container>\n\n    <md-table-pagination md-limit="vm_whatsapp.queryChannels.limit" md-page="vm_whatsapp.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm_whatsapp.paginatedInteractions.length}}" md-on-paginate="vm_whatsapp.paginate" md-page-select></md-table-pagination>\n  </md-card>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/fax/agent.general.fax.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.FAX_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getFaxInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getFaxInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getFaxInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.faxAccounts.rows && vm.faxAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="faxAccount in vm.faxAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeFaxInteraction($event, faxAccount)">\n              {{ faxAccount.name }} ({{ faxAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.faxInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.faxInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showFaxInteraction($event, interaction)" md-cell class="faxAccount">\n            {{ vm.getFaxAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showFaxInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadFaxInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Fax\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxInteractions.count}}" md-on-paginate="vm.getFaxInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mail/agent.general.mail.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.MAIL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getMailInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getMailInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getMailInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.mailAccounts.rows && vm.mailAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="mailAccount in vm.mailAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeMailInteraction($event, mailAccount)">\n              {{ mailAccount.name }} ({{ mailAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="subject">{{\'DASHBOARDS.SUBJECT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.mailInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.mailInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div ng-if="vm.setting.enableEmailPreview && interaction.lastMsgText" class="tooltip-preview" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\n              <md-card class="tooltip-preview-text">\n                <md-card-content><span class="email-preview-message">{{ interaction.lastMsgText }}</span>\n                </md-card-content>\n              </md-card>\n            </div>\n            <span ng-if="!interaction.lastMsgText || !vm.setting.enableEmailPreview"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showMailInteraction($event, interaction)" md-cell class="mailAccount">\n            {{ vm.getMailAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showMailInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Mail\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadMailInteraction($event, interaction)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailInteractions.count}}" md-on-paginate="vm.getMailInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/mycontacts/agent.general.mycontacts.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.MYCONTACTS">My Contacts</span>\n      <ms-search-bar on-search="vm.getContacts()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getContacts()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" ng-click="vm.refreshContacts($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button ng-if="vm.lists.rows && vm.lists.rows.length" class="md-icon-button create-new" ng-click="vm.openContact($event)" aria-label="Add contact" translate translate-attr-label="DASHBOARDS.ADD_CONTACT">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContacts">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="firstName">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n          <th md-column md-order-by="mobile">{{\'DASHBOARDS.MOBILE\' | translate}}</th>\n          <th md-column md-order-by="fax">{{\'DASHBOARDS.FAX\' | translate}}</th>\n          <th md-column md-order-by="email">{{\'DASHBOARDS.EMAIL\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.CREATEDAT\' | translate}}</th>\n          <th md-column md-order-by="ListId">{{\'DASHBOARDS.LIST\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.contacts.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="contact in vm.contacts.rows">\n          <td ng-click="vm.openContact($event, contact)" md-cell class="id">{{contact.id}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="firstName" privacy ng-cloak>\n            {{contact.firstName}} {{contact.lastName}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="phone">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.phone" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="mobile">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="contact.mobile" prefix="vm.listsMap[contact.ListId].dialPrefix" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="fax" privacy ng-cloak>\n            {{contact.fax}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="email" privacy ng-cloak>{{contact.email}}\n          </td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="createdAt">{{contact.createdAt |\n            formatdate}}</td>\n          <td ng-click="vm.openContact($event, contact)" md-cell class="list">\n            {{vm.listsMap[contact.ListId].name}}</td>\n          <td md-cell class="tag">\n            <div ng-if="contact.Tags.length">\n              <div ng-if="contact.Tags.length == 1" layout="column" layout-align="center center">\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': contact.Tags[0].color }"></md-icon>\n                <span class="text-truncate">{{contact.Tags[0].name}}</span>\n              </div>\n              <div ng-if="contact.Tags.length > 1" layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in contact.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag"></md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.openContact($event, contact)" translate="DASHBOARDS.EDIT">\n                    Edit Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.mergeContact($event, contact)" translate="DASHBOARDS.MERGE">\n                    Merge Contact\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.duplicateContact($event, contact)" translate="DASHBOARDS.DUPLICATE">\n                    Duplicate Contact\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contacts.count}}" md-on-paginate="vm.getContacts" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/openchannel/agent.general.openchannel.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.OPENCHANNEL_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getOpenchannelInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getOpenchannelInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getOpenchannelInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.openchannelAccounts.rows && vm.openchannelAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeOpenchannelInteraction($event, openchannelAccount)" ng-disabled="!openchannelAccount.replyUri">\n              {{ openchannelAccount.name }} ({{ openchannelAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.openchannelInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.openchannelInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showOpenchannelInteraction($event, interaction)" md-cell class="openchannelAccount">\n            {{ vm.getOpenchannelAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showOpenchannelInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Openchannel\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions && vm.user.downloadAttachments">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                    Download with attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadOpenchannelInteraction($event, interaction)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                    Download without attachments\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelInteractions.count}}" md-on-paginate="vm.getOpenchannelInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/plugins/agent.general.plugins.html",'<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/agent.general.presence.html",'<div ng-cloak>\n  <md-content>\n    <md-tabs md-selected="vm.selectedTab" md-dynamic-height md-border-bottom>\n      <md-tab label="{{\'DASHBOARDS.AGENTS\' | translate}}" md-on-select="vm.onAgentsTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html\'">\n        </md-content>\n      </md-tab>\n      <md-tab label="{{\'DASHBOARDS.QUEUES\' | translate}}" md-on-select="vm.onQueuesTabSelection()">\n        <md-content ng-include="\'app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html\'">\n        </md-content>\n      </md-tab>\n    </md-tabs>\n  </md-content>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.agents.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.AGENTS"></span>\n      <ms-search-bar on-search="vm.getAgents()" query="vm.agentsQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.agentsQuery" search="vm.getAgents()"></ms-quick-filter>\n      <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getAgents()">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.agentsQuery.sort" md-on-reorder="vm.getAgents">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="internal">{{\'VOICE.INTERNAL\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.agents.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="agent in vm.agents.rows">\n          <td md-cell>{{agent.id}}</td>\n          <td md-cell>{{agent.name}}</td>\n          <td md-cell>{{agent.internal}}</td>\n          <td md-cell>\n            <div layout="row">\n              <div layout="column" layout-align="center center">\n                <span class="text-boxed width-70 text-center md-background-bg bl bt padding-5" ng-class="{\'online\':\'lime-300-bg\',\'offline\':\'red-A200-bg\',\'pause\':\'amber-200-bg\',\'busy\':\'indigo-100-bg\'}[agent.status]">{{\n                  agent.status | uppercase }}</span>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.originateCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-if="agent.status !== \'offline\'" ng-click="vm.transferCall(agent.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.agentsQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.agentsQuery.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/presence/views/agent.general.presence.queues.html",'<md-card ngCloak>\n  <md-toolbar class="md-table-toolbar md-default table-header xenialab-violet-light-bg" ng-class="{\'h-128\' : vm.isSearchBarVisible === true}">\n    <div class="md-toolbar-tools" layout="row" layout-align="center center">\n      <span class="md-subhead" translate="DASHBOARDS.QUEUES"></span>\n      <ms-search-bar on-search="vm.getVoiceQueues()" query="vm.queuesQuery" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible"></ms-search-bar>\n      <div flex></div>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.queuesQuery.sort" md-on-reorder="vm.getVoiceQueues">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'DASHBOARDS.NAME\' | translate}}</th>\n          <th md-column md-order-by="name">{{\'VOICE.CALLS\' | translate}}</th>\n          <th md-column class="no-padding width-70"></th>\n          <th md-column class="width-70"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceQueues.rows.length">\n          <td md-cell colspan="12">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="queue in vm.voiceQueues.rows">\n          <td md-cell>{{queue.id}}</td>\n          <td md-cell>{{queue.name}}</td>\n          <td md-cell>{{queue.calls.length || 0}}</td>\n          <td md-cell class="no-padding width-70">\n            <md-button ng-click="vm.originateCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Dial">\n              <md-icon md-font-icon="icon-phone" class="icon green-fg s20">\n                <md-tooltip><span translate="VOICE.DIAL"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n          <td md-cell class="width-70">\n            <md-button ng-click="vm.transferCall(queue.name)" class="md-fab md-mini md-raised" aria-label="Transfer">\n              <md-icon md-font-icon="icon-phone-forward" class="icon purple-fg s20">\n                <md-tooltip><span translate="DASHBOARDS.TRANSFER"></span></md-tooltip>\n              </md-icon>\n            </md-button>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.queuesQuery.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.queuesQuery.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/recordings/agent.general.recordings.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header indigo-A100-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.RECORDINGS">Recordings</span>\n      <ms-search-bar on-search="vm.getVoiceRecordings()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n        <tr md-row>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n          <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n          <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n          <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n          <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n          <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n          <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n          <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n          <th md-column width="10px" ng-if="vm.currentUser.downloadVoiceRecordings"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n          <td md-cell colspan="{{ vm.currentUser.downloadVoiceRecordings ? 10 : 9}}">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n          <td md-cell class="type">{{voiceRecording.type}}</td>\n          <td md-cell class="uniqueid">{{voiceRecording.uniqueid}}</td>\n          <td md-cell class="calleridnum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.calleridnum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="exten">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.exten" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="connectedlinenum">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceRecording.connectedlinenum" license="vm_home.license">\n            </ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="queue">{{voiceRecording.queue}}</td>\n          <td md-cell class="rating">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n          </td>\n          <td md-cell class="audio" ng-switch="voiceRecording.format">\n            \x3c!-- audio recording directive --\x3e\n            <ms-recording ng-switch-when=".wav" id="voiceRecording.id"></ms-recording>\n            \x3c!-- / audio recording directive --\x3e\n            <span ng-switch-when=".gsm">\n              <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n            </span>\n          </td>\n          <td md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n          <td md-cell class="actions" ng-if="vm.currentUser.downloadVoiceRecordings">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.downloadfile(voiceRecording, $event)" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                    Download VoiceRecording\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\'">\n                  <md-button ng-click="vm.downloadtranscribe(voiceRecording, $event)" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                    Download Transcribe\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/scheduled/agent.general.scheduled.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-grey-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScheduledCalls()">\n      </ms-quick-filter>\n      <md-button class="md-icon-button reload-list" ng-click="vm.getScheduledCalls()" aria-label="Refresh scheduled calls" translate translate-attr-label="MOTIONDIALER.REFRESH_SCHEDULED_CALLS">\n        <md-icon md-font-icon="icon-reload"></md-icon>\n        <md-tooltip>{{\'MOTIONDIALER.REFRESH_SCHEDULED_CALLS\' | translate}}</md-tooltip>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduledCalls">\n        <tr md-row>\n          <th md-column>{{\'MOTIONDIALER.FULLNAME\' | translate}}</th>\n          <th md-column md-order-by="phone">{{ \'MOTIONDIALER.PHONE\' | translate }}</th>\n          <th md-column md-order-by="scheduledat">{{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.PRIORITY\' | translate }}</th>\n          <th md-column md-order-by="recallme">{{ \'MOTIONDIALER.RECALLME\' | translate }}</th>\n          <th md-column>{{ \'MOTIONDIALER.CAMPAIGN\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.scheduledCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="scheduledCall in vm.scheduledCalls.rows">\n          <td md-cell privacy ng-cloak>{{scheduledCall.Contact.firstName}} {{scheduledCall.Contact.lastName}}</td>\n          <td md-cell>\n            <ms-click-to-call target="scheduledCall.phone" license="vm_home.license"></ms-click-to-call>\n          </td>\n          <td md-colors="{color: {{ vm.isDateBeforeToday(scheduledCall.scheduledat) ? \'\\\'red\\\'\' : \'\\\'green\\\'\' }}}" md-cell>{{ scheduledCall.scheduledat | date:\'medium\' }}</td>\n          <td md-cell>{{ vm.priorities[scheduledCall.priority] }}</td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.recallme && scheduledCall.UserId == vm.currentUser.id ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ scheduledCall.recallme  && scheduledCall.UserId == vm.currentUser.id ? \'icon-check\' : \'icon-close\' }}">\n            </md-icon>\n          </td>\n          <td md-cell>\n            <md-icon md-colors="{color: {{ scheduledCall.Queue.dialActive? \'\\\'green\\\'\' : \'\\\'red\\\'\' }}}" md-font-icon="icon-checkbox-blank-circle"></md-icon> {{scheduledCall.Queue.name}}\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.createOrEditQueueCampaignHopper($event, scheduledCall)" translate="MOTIONDIALER.EDIT_HOPPER">\n                    Edit Hopper\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.deleteConfirm(scheduledCall, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                    Delete Hopper\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.scheduledCalls.count}}" md-on-paginate="vm.getScheduledCalls" md-page-select>\n  </md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/sms/agent.general.sms.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.SMS_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getSmsInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getSmsInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getSmsInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.smsAccounts.rows && vm.smsAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="smsAccount in vm.smsAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeSmsInteraction($event, smsAccount)">\n              {{ smsAccount.name }} ({{ smsAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.smsInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.smsInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showSmsInteraction($event, interaction)" md-cell class="smsAccount">\n            {{ vm.getSmsAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showSmsInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadSmsInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Sms\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsInteractions.count}}" md-on-paginate="vm.getSmsInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/agent.general.voice.html",'<md-card ng-init="vm.onInit()">\n  <md-toolbar class="md-table-toolbar md-default table-header blue-A700-bg" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="VOICE.CALLS">Calls</span>\n      <ms-search-bar on-search="vm.getVoiceCalls()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceCalls()">\n      </ms-quick-filter>\n    </div>\n  </md-toolbar>\n  <md-table-container>\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceCalls">\n        <tr md-row>\n          <th md-column md-order-by="id">{{\'VOICE.ID\' | translate}}</th>\n          <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n          <th md-column md-order-by="source">{{ \'VOICE.SOURCE\' | translate }}</th>\n          <th md-column md-order-by="destination">{{ \'VOICE.DESTINATION\' | translate }}</th>\n          <th md-column md-order-by="starttime">{{ \'VOICE.STARTEDAT\' | translate }}</th>\n          <th md-column md-order-by="endtime">{{ \'VOICE.ENDEDAT\' | translate }}</th>\n          <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n          <th md-column>{{ \'VOICE.NOTE\' | translate }}</th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.voiceCalls.rows.length">\n          <td md-cell colspan="10">\n            <div layout="row" layout-align="center center">\n              <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="voiceCall in vm.voiceCalls.rows" ng-click="vm.showDetails(voiceCall, $event)">\n          <td md-cell class="type">{{voiceCall.id}}</td>\n          <td md-cell class="type">{{ \'VOICE.\' + voiceCall.type.toUpperCase() | translate}}</td>\n          <td md-cell class="source">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.source" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="destination">\n            \x3c!-- click to call directive --\x3e\n            <ms-click-to-call target="voiceCall.destination" license="vm_home.license"></ms-click-to-call>\n            \x3c!--  / click to call directive --\x3e\n          </td>\n          <td md-cell class="starttime">{{voiceCall.starttime | date:\'medium\' }}</td>\n          <td md-cell class="endtime">{{voiceCall.endtime | date:\'medium\' }}</td>\n          <td md-cell class="disposition">{{ voiceCall.userDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userSecondDisposition}}</td>\n          <td md-cell class="disposition">{{ voiceCall.userThirdDisposition}}</td>\n          <td md-cell class="note">\n            <md-icon ng-if="voiceCall.note" md-font-icon="icon-clipboard-outline"></md-icon>\n          </td>\n          <td md-cell class="actions">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n\n              <md-menu-content width="3">\n                <md-menu-item>\n                  <md-button ng-click="vm.showDetails(voiceCall, $event)" translate="VOICE.DETAILS">\n                    Show Details\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceCalls.count}}" md-on-paginate="vm.getVoiceCalls" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/home/voice/details/dialog.html",'<md-dialog class="details-dialog" aria-label="details">\n  <md-toolbar class="md-background-bg">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span ng-if="!vm.interaction.closed" class="title" translate="VOICE.DETAILS"></span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <md-list flex>\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.UNIQUEID">Uniqueid</p>\n          <h4>{{vm.call.uniqueid}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.TYPE">Type</p>\n          <h4>{{vm.call.type ? vm.call.type : \'no type\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.SOURCE">Source</p>\n          <h4 privacy ng-cloak>{{vm.call.source ? vm.call.source : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DESTINATION">Destination</p>\n          <h4 privacy ng-cloak>{{vm.call.destination ? vm.call.destination : \'unknown\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.STARTEDAT">Started At</p>\n          <h4>{{vm.call.starttime | date:\'medium\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ANSWEREDAT">Answered At</p>\n          <h4>{{vm.call.answertime ? (vm.call.answertime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.ENDEDAT">Ended At</p>\n          <h4>{{vm.call.endtime ? (vm.call.endtime | date:\'medium\') : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DURATION">Duration</p>\n          <h4>{{vm.call.duration ? vm.call.duration : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.BILLABLESECONDS">Billable Seconds</p>\n          <h4>{{vm.call.billableseconds ? vm.call.billableseconds : \'--\'}}s</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.DISPOSITION">Disposition</p>\n          <h4>{{vm.call.userDisposition ? vm.call.userDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n          <h4>{{vm.call.userSecondDisposition ? vm.call.userSecondDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n          <h4>{{vm.call.userThirdDisposition ? vm.call.userThirdDisposition : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n\n      <md-list-item class="md-2-line">\n        <div class="md-list-item-text">\n          <p translate="VOICE.NOTE">Note</p>\n          <h4>{{vm.call.note ? vm.call.note : \'--\'}}</h4>\n        </div>\n      </md-list-item>\n    </md-list>\n  </md-dialog-content>\n\n  <md-dialog-actions layout="row" layout-align="space-between center">\n    <md-button type="button" ng-click="vm.closeDialog()" class="send-button md-accent md-raised" aria-label="DISPOSE" translate="VOICE.CLOSE" translate-attr-aria-label="VOICE.DISPOSE">\n      CLOSE\n    </md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/home/whatsapp/agent.general.whatsapp.html",'<md-card ng-cloak>\n  <md-toolbar class="md-table-toolbar md-default table-header" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" ng-disabled="vm.searchInProgress">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="DASHBOARDS.WHATSAPP_INTERACTIONS">Interactions</span>\n      <ms-search-bar on-search="vm.getWhatsappInteractions()" query="vm.query" debounce="300" direction="down" icon-color="white-fg" display-on="vm.isSearchBarVisible" ng-disabled="vm.query.search" min-chars="5">\n      </ms-search-bar>\n      <div flex></div>\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getWhatsappInteractions()" ng-disabled="vm.query.search"></ms-quick-filter>\n      <div layout="row">\n        <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini white-bg\': vm.query.search }" aria-label="Advanced search" translate translate-attr-aria-label="DASHBOARDS.ADVANCED_SEARCH" ng-click="vm.openAdvancedSearch()">\n          <md-icon md-font-icon="{{ vm.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'{{ vm.sectionColor }}-fg blink\': vm.query.search }"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.ADVANCED_SEARCH\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button reload-list" aria-label="Reload" translate translate-attr-aria-label="DASHBOARDS.RELOAD" ng-click="vm.getWhatsappInteractions()">\n          <md-icon md-font-icon="icon-reload"></md-icon>\n          <md-tooltip>{{\'DASHBOARDS.RELOAD\' | translate}}</md-tooltip>\n        </md-button>\n      </div>\n      <md-menu ng-if="vm.whatsappAccounts.rows && vm.whatsappAccounts.rows.length">\n        <md-button class="md-icon-button create-new" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n          <md-icon md-font-icon="icon-plus"></md-icon>\n        </md-button>\n        <md-menu-content width="3">\n          <md-menu-item ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n            <md-button aria-label="compose" ng-click="vm.composeWhatsappInteraction($event, whatsappAccount)">\n              {{ whatsappAccount.name }} ({{ whatsappAccount.key }})</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </div>\n  </md-toolbar>\n  <md-table-container class="interactions-list">\n    <table md-table md-progress="vm.promise">\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappInteractions">\n        <tr md-row>\n          <th class="id-header" md-column md-order-by="id">\n            {{\'DASHBOARDS.ID\' | translate}}</th>\n          <th md-column class="no-padding width-5">\n            <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n          </th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column class="no-padding width-5"></th>\n          <th md-column md-order-by="contactName">{{\'DASHBOARDS.CONTACT\' | translate}}</th>\n          <th md-column md-order-by="createdAt">{{\'DASHBOARDS.STARTEDAT\' | translate}}</th>\n          <th md-column md-order-by="lastMsgAt">{{\'DASHBOARDS.LAST_MESSAGE\' | translate}}</th>\n          <th md-column md-order-by="closed">{{\'DASHBOARDS.STATUS\' | translate}}</th>\n          <th md-column>{{\'DASHBOARDS.AGENT\' | translate}}</th>\n          <th md-column>\n            {{\'DASHBOARDS.ACCOUNT\' | translate}}\n          </th>\n          <th md-column>{{\'DASHBOARDS.TAGS\' | translate}}</th>\n          <th md-column></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row ng-hide="vm.whatsappInteractions.rows.length">\n          <td md-cell colspan="13">\n            <div layout="row" layout-align="center center">\n              <span translate="DASHBOARDS.NO_AVAILABLE_INTERACTION">No Available\n                Interaction</span>\n            </div>\n          </td>\n        </tr>\n        <tr md-row ng-repeat="interaction in vm.whatsappInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="id">\n            <div layout="row" layout-align="start center">\n              <span class="font-size-10">{{interaction.id}}</span>\n            </div>\n          </td>\n          <td md-cell>\n            <div ng-if="!interaction.closed && interaction.Users.length">\n              <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n              <md-tooltip>\n                <span ng-repeat="u in interaction.Users">{{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : u.fullname | translate }}<span ng-if="!$last">, </span></span>\n              </md-tooltip>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="!interaction.closed && interaction.unreadMessages > 0" layout="row" layout-align="start center">\n              <span class="badge white-fg" ng-class="{{ \'vm.sectionColor\' }} + \'-bg\'" layout-margin>{{interaction.unreadMessages}}</span>\n            </div>\n          </td>\n          <td md-cell class="width-5 no-padding">\n            <div ng-if="interaction.attach" layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="column" layout-align="start start">\n              <span class="font-size-12 text-truncate contact-text" ng-class="{\'no-margin-bottom\' : interaction.contactInfo}" layout-margin privacy ng-cloak>{{ interaction.contactName }}</span>\n              <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text no-margin-top" layout-margin privacy ng-cloak>{{ interaction.contactInfo }}</span>\n            </div>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span class="font-size-10 text-truncate">{{interaction.createdAt | formatdate }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <div layout="row" ng-if="interaction.lastMsgAt">\n              <span>\n                <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}">\n                </md-icon>\n              </span>\n              <div layout="column" layout-align="center center">\n                <span class="font-size-10 text-truncate">{{interaction.lastMsgAt | formatdate }}</span>\n              </div>\n            </div>\n            <span ng-if="!interaction.lastMsgAt">No messages</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell>\n            <span ng-if="interaction.closed" class="red-fg font-size-12">{{ \'DASHBOARDS.CLOSED\' | translate}} <span ng-if="interaction.disposition">-\n                {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}</span></span>\n            <md-tooltip class="multiline" ng-if="interaction.closed">\n              <div layout="column">\n                <div layout="column">\n                  <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                </div>\n                <div ng-if="interaction.disposition" layout="column">\n                  <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.disposition }}</span>\n                </div>\n                <div ng-if="interaction.secondDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                </div>\n                <div ng-if="interaction.thirdDisposition" layout="column">\n                  <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                  <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                </div>\n              </div>\n            </md-tooltip>\n            <span ng-if="!interaction.closed" class="green-fg font-size-12"><span translate="DASHBOARDS.OPENED"></span><span ng-if="interaction.substatus"> -\n                {{interaction.substatus}}</span></span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="user">\n            <span class="font-size-12 text-truncate width-80">{{ vm.getAgentLabel(interaction) }}</span>\n          </td>\n          <td ng-click="vm.showWhatsappInteraction($event, interaction)" md-cell class="whatsappAccount">\n            {{ vm.getWhatsappAccountLabel(interaction) }}\n          </td>\n          <td md-cell>\n            <div ng-if="interaction.Tags.length">\n              <div layout="column" layout-align="center center">\n                <md-tooltip md-direction="left" layout="row">\n                  <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">,\n                    </span></span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                </md-icon>\n              </div>\n            </div>\n          </td>\n          <td md-cell class="actions actions-padding">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="2">\n                <md-menu-item>\n                  <md-button ng-click="vm.showWhatsappInteraction($event, interaction)" translate="DASHBOARDS.SHOW">\n                    Show Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm.user.downloadOmnichannelInteractions">\n                  <md-button ng-click="vm.downloadWhatsappInteraction($event, interaction)" translate="DASHBOARDS.DOWNLOAD">\n                    Download Whatsapp\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="!interaction.closed">\n                  <md-button ng-click="vm.disposeInteraction($event, interaction)" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n                    Close and Dispose\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{\'DASHBOARDS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'DASHBOARDS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'DASHBOARDS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappInteractions.count}}" md-on-paginate="vm.getWhatsappInteractions" md-page-select></md-table-pagination>\n</md-card>'),e.put("app/main/apps/dashboards/views/general/agent/iframe/agent.general.iframe.html",'<md-content layout="row" layout-fill>\n\n  <div flex layout="row">\n\n    <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="width: 100%; height: 100%; border:0px;"></iframe>\n\n  </div>\n\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.dialog.html",'<md-dialog id="agent-general-dialog" aria-label="Spy Dialog">\n  <div id="interaction-app" class="agent-content" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html\'"></div>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/agent.general.interaction.html",'\x3c!-- CONTENT CARD --\x3e\n<md-content class="content-card" layout="row" layout-fill>\n\n  <div ng-if="!vm.showInteraction" class="start-point" flex layout="column" layout-align="center center" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html\'"></div>\n\n  <div ng-if="vm.showInteraction" flex layout="row">\n\n    <md-card flex="75" class="interaction">\n\n      <md-content class="interaction-agents" layout="row" layout-align="start center" ng-if="!vm.interaction.closed && vm.interaction.Users.length">\n        <strong layout-margin translate="DASHBOARDS.CURRENTLY_IN_USE_BY">Currently in use by </strong>\n\n        <div ng-repeat="u in vm.interaction.Users">\n          <img class="avatar-small" ng-src="api/users/{{u.id}}/avatar">\n          <md-tooltip> {{ (u.id == vm.user.id) ? \'DASHBOARDS.ME\' : vm.usersMap[u.id] | translate }}\n          </md-tooltip>\n        </div>\n      </md-content>\n\n      \x3c!-- TOOLBAR --\x3e\n      <md-toolbar class="interaction-toolbar" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html\'">\n      </md-toolbar>\n      \x3c!-- / TOOLBAR --\x3e\n\n      \x3c!-- CONTENT --\x3e\n      <md-content id="interaction-content" name="{{\'interaction-content-\' + vm.tab.id}}" flex layout-wrap>\n        <div class="interaction-messages" ng-switch="vm.tab.channel">\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-default>\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html\'">\n            </div>\n          </div>\n        </div>\n      </md-content>\n      \x3c!-- / CONTENT --\x3e\n\n      \x3c!-- FOOTER --\x3e\n      <div ng-if="\n            !vm.interaction.closed && ( vm.tab.channel == \'chat\' \n            || (vm.tab.channel == \'openchannel\' && vm.account.replyUri) \n            || (vm.tab.channel == \'sms\' && !vm.tab.spy) \n            || (vm.tab.channel == \'whatsapp\' && !vm.tab.spy) )\n             && (vm.user.role !== \'admin\' && vm.user.role !== \'user\')" class="interaction-footer flex-noshrink" layout="row" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html\'">\n      </div>\n      \x3c!-- / FOOTER--\x3e\n    </md-card>\n\n    <md-card layout="column" flex class="info" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html\'">\n    </md-card>\n  </div>\n</md-content>\n\x3c!-- / CONTENT CARD --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/chat/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="CHAT.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="CHAT.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="CHAT.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="CHAT.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="CHAT.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'CHAT.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'CHAT.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.ChatAccountId" md-font-icon="icon-earth" aria-label="alert chat" class="s16"></md-icon>\n          <md-icon ng-if="item.ChatAccountId" md-font-icon="icon-message-text" aria-label="alert chat" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n\n        <md-not-found>\n          <span translate="CHAT.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/fax/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="FAX.SEND">SEND</span>\n          </md-button>\n          <md-button ng-disabled="vm.message.attachments.length === 1" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="FAX.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block to">\n        <label translate="FAX.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete ng-hide="vm.message.to.length === 1" md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.fax" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" ng-if="composeForm.$dirty">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n          <div ng-message="md-max-chips">You reached the maximum amount of chips</div>\n        </div>\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="FAX.DELETE_ATTACHMENT">\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/mail/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message" ng-class="{\'mail-no-secret\': !vm.secret}" ng-cloak>\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar ng-class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <div ng-if="!vm.secret" class="md-button md-raised blue-bg no-padding">\n            <button class="white-fg margin-horizontal-10" aria-label="Send message" ng-disabled="!vm.verifySmtp" ng-click="vm.send($event, false, null)">\n              <span>{{ \'MAIL.SEND\' | translate | uppercase }}</span>\n            </button>\n            <span class="white-fg secondary-text vertical-divider"></span>\n            <md-menu>\n              <button ng-disabled="!vm.verifySmtp" class="white-fg margin-left-0" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-menu-down" class="icon s24"></md-icon>\n              </button>\n              <md-menu-content width="2">\n                <md-menu-item ng-if="vm.subStatuses.rows.length">\n                  <md-menu>\n                    <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="MAIL.SEND_AS">\n                      Send as\n                    </md-button>\n                    <md-menu-content>\n                      <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                        <md-button ng-click="vm.send($event, false, subStatus.name)">\n                          {{subStatus.name}}\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </md-menu-item>\n                <md-menu-item>\n                  <md-button ng-click="vm.send($event, true, null)" translate="MAIL.SEND_AND_CLOSE">\n                    Send and Close\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </div>\n          <md-button ng-if="!vm.secret" class=" md-button md-raised blue-bg white-fg margin-horizontal-10" aria-label="Save draft" ng-click="vm.saveDraft()">\n            <span>{{ (vm.isDraft ? \'DASHBOARDS.UPDATE_DRAFT\' : \'DASHBOARDS.SAVE_AS_DRAFT\') | translate | uppercase }}</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="MAIL.ADD_NOTE">Add note</span>\n          </md-button>\n          <md-button ng-disabled="!vm.verifySmtp" class="md-fab md-mini md-white-bg" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload($files)" flow-init="vm.ngFlowOptions" flow-file-success="vm.fileSuccess($file, $message)" flow-file-added="vm.fileAdded($file)">\n            <md-icon md-font-icon="icon-paperclip" class="red-fg"></md-icon>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="MAIL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to" ng-class="{\'hidden-cc\': vm.hiddenCC, \'hidden-bcc\': vm.hiddenBCC}">\n        <label translate="MAIL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.to)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n        <div class="cc-bcc" layout="row" layout-align="start center">\n          <div class="show-cc" ng-show="vm.hiddenCC" ng-click="vm.hiddenCC = false">CC</div>\n          <div class="show-bcc" ng-show="vm.hiddenBCC" ng-click="vm.hiddenBCC = false">BCC</div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenCC">\n        <label translate="MAIL.CC">Cc</label>\n        <md-chips name="cc" ng-model="vm.message.cc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.cc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchCc" md-items="contact in vm.contactSearch(vm.searchCc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block" ng-hide="vm.hiddenBCC">\n        <label translate="MAIL.BCC">Bcc</label>\n        <md-chips name="bcc" ng-model="vm.message.bcc" ng-keypress="vm.keyPress($event)" md-transform-chip="vm.transformContact($chip, vm.message.bcc)" md-separator-keys="vm.separatorKeys" md-require-match="false" required>\n          <md-autocomplete md-search-text="vm.searchBcc" md-items="contact in vm.contactSearch(vm.searchBcc)" md-item-text="contact.email" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n      </md-input-container>\n      <md-input-container ng-if="!vm.secret" class="md-block no-margin">\n        <label translate="MAIL.SUBJECT">Subject</label>\n        <input ng-model="vm.message.subject" type="text" ng-keypress="vm.keyPress($event)">\n      </md-input-container>\n      <div class="attachment-list" ng-if="vm.message.attachments.length" layout="row" layout-wrap>\n        <div class="attachment" layout="row" layout-align="space-between center" ng-repeat="attachment in vm.message.attachments">\n          <div>\n            <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n            <span class="filename">{{attachment.name}}</span>\n            <span class="size" ng-if="attachment.size">({{attachment.size | byteFmt: 0}})</span>\n          </div>\n          <md-button ng-click="vm.removeAttachment(attachment)" class="md-icon-button" aria-label="Delete attachment" translate translate-attr-aria-label="MAIL.DELETE_ATTACHMENT">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="padding-top-5">\n        <textarea ckeditor="vm.ckeditor" id="html-area" ng-model="vm.message.body" md-select-on-focus="" ready="vm.onReadyEditor()"></textarea>\n      </div>\n      <md-switch ng-if="!vm.message.showLastMessage && !vm.secret" ng-model="vm.message.showLastMessage" ng-change="vm.loadLastMessage()" aria-label="load last message"><span translate="MAIL.SHOW_ORIGINAL_MESSAGE">Show original message</span></md-switch>\n      <md-autocomplete ng-if="!vm.secret" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'MAIL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin" ng-keypress="vm.keyPress($event)">\n        <md-item-template>\n          <md-icon ng-if="!item.MailAccountId" md-font-icon="icon-earth" aria-label="alert email" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.MailAccountId" md-font-icon="icon-email" aria-label="alert email" class="s16 teal-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{ item.key }} -\n            {{ item.value | htmlToPlaintext }}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="MAIL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/openchannel/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="OPENCHANNEL.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="OPENCHANNEL.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="OPENCHANNEL.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="OPENCHANNEL.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mapkey" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'OPENCHANNEL.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'OPENCHANNEL.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.OpenchannelAccountId" md-font-icon="icon-earth" aria-label="alert openchannel" class="s16"></md-icon>\n          <md-icon ng-if="item.OpenchannelAccountId" md-font-icon="icon-message-text" aria-label="alert openchannel" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="OPENCHANNEL.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/sms/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="SMS.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="SMS.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="SMS.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="SMS.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'SMS.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'SMS.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.SmsAccountId" md-font-icon="icon-earth" aria-label="alert sms" class="s16"></md-icon>\n          <md-icon ng-if="item.SmsAccountId" md-font-icon="icon-message-text" aria-label="alert sms" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="SMS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/compose/whatsapp/dialog.html",'<md-dialog class="compose-dialog" aria-label="New Message">\n  <form class="md-inline-form" name="composeForm" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <div layout="row">\n          <md-button ng-if="!vm.secret" ng-click="vm.send()" class="md-raised md-blue-bg white-fg" aria-label="Send message">\n            <span translate="WHATSAPP.SEND">SEND</span>\n          </md-button>\n          <md-button ng-if="vm.secret" ng-click="vm.addNote()" class="md-raised md-blue-bg white-fg" aria-label="Add note">\n            <span translate="WHATSAPP.ADD_NOTE">Add note</span>\n          </md-button>\n        </div>\n        <span ng-if="!vm.secret" class="title">{{vm.message.from}}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" aria-label="Close dialog" tranlate translate-aria-label="WHATSAPP.CLOSE_DIALOG">\n          <md-icon md-font-icon="icon-close"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container ng-if="!vm.secret" class="md-block to">\n        <label translate="WHATSAPP.TO">To</label>\n        <md-chips name="to" ng-model="vm.message.to" md-transform-chip="vm.transformContact($chip)" md-separator-keys="vm.separatorKeys" md-require-match="false" md-max-chips="1" required>\n          <md-autocomplete md-search-text="vm.searchTo" md-items="contact in vm.contactSearch(vm.searchTo)" md-item-text="contact.mobile" md-min-length="3">\n            <md-item-template>\n              <span>{{ vm.getContact(contact) }}</span>\n            </md-item-template>\n          </md-autocomplete>\n        </md-chips>\n        <div ng-messages="composeForm.to.$error" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TO_REQUIRED">To field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-emoji-area on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.message.body" placeholder="\'WHATSAPP.INSERT_MESSAGE_HERE\'" picker-position="\'bottom\'"></ms-emoji-area>\n      <md-autocomplete ng-if="!vm.secret" class="padding-top-5" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" md-floating-label="{{ \'WHATSAPP.CANNED_ANSWER_SEARCH\' | translate}}" class="input-show-hide no-container-margin">\n        <md-item-template>\n          <md-icon ng-if="!item.WhatsappAccountId" md-font-icon="icon-earth" aria-label="alert whatsapp" class="s16">\n          </md-icon>\n          <md-icon ng-if="item.WhatsappAccountId" md-font-icon="icon-message-text" aria-label="alert whatsapp" class="s16 orange-fg"></md-icon>\n          <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n        </md-item-template>\n        <md-not-found>\n          <span translate="WHATSAPP.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n        </md-not-found>\n      </md-autocomplete>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition" ng-init="vm.onInit()">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="!vm.interaction.closed" class="title" translate="DASHBOARDS.DISPOSE"></span>\n        <span ng-if="vm.interaction.closed" class="title" translate="DASHBOARDS.INFO"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()" ng-if="!vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.DISPOSITION">Disposition</label>\n        <md-select name="disposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onDispositionChange(\'first\')" required>\n          <md-option ng-value="null" ng-if="!vm.mandatoryDisposition">NONE</md-option>\n          <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' } : true">\n            {{ disposition.name }}</md-option>\n        </md-select>\n        <div ng-messages="dispositionForm.disposition.$error" ng-show="dispositionForm.disposition.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition" ng-change="vm.onDispositionChange(\'second\')">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id } : true">\n              {{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearDispositionSelection(\'second\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear second level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.secondLevelDisposition && vm.anyThirdLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</label>\n          <md-select name="thirdLevelDisposition" ng-model="vm.thirdLevelDisposition">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'third\', ParentId: vm.secondLevelDisposition.id } : true" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.thirdLevelDisposition" ng-click="vm.clearDispositionSelection(\'third\')" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear third level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.NOTE">Note</label>\n        <textarea ng-model="vm.interaction.note" md-maxlength="255" max-rows="5" autofocus></textarea>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && (vm.firstLevelDisposition || vm.secondLevelDisposition || vm.thirdLevelDisposition)" aria-label="CLOSE_AND_DISPOSE" translate="DASHBOARDS.CLOSE_AND_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_AND_DISPOSE">\n          CLOSE AND DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition(false)" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="!vm.interaction.closed && !vm.firstLevelDisposition" ng-disabled="vm.mandatoryDisposition" aria-label="CLOSE_WITHOUT_DISPOSE" translate="DASHBOARDS.CLOSE_WITHOUT_DISPOSE" translate-attr-aria-label="DASHBOARDS.CLOSE_WITHOUT_DISPOSE">\n          CLOSE WITHOUT DISPOSE\n        </md-button>\n        <md-button type="submit" ng-click="vm.saveDisposition()" ms-dialog-spinner class="send-button md-accent md-raised" ng-if="vm.interaction.closed" ng-disabled="vm.mandatoryDisposition && !vm.firstLevelDisposition" aria-label="DISPOSE" translate="DASHBOARDS.DISPOSE" translate-attr-aria-label="DASHBOARDS.DISPOSE">\n          DISPOSE\n        </md-button>\n        <div ng-if="vm.mandatoryDisposition">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Mandatory Disposition"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="DASHBOARDS.HELP.MANDATORY_DISPOSITION_ENABLED"></span>\n        </div>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/tag/dialog.html",'<md-dialog class="tag-dialog" aria-label="tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TAGS"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-chips ng-model="vm.interaction.Tags" md-autocomplete-snap md-require-match="vm.autocompleteRequireMatch">\n          <md-autocomplete ng-blur="vm.searchText = \'\'" md-min-length="0" md-selected-item-change="vm.selectedItemChange" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-items="item in vm.tags.rows | filter:{ name: vm.searchText }" md-item-text="item.name" placeholder="Search for a tag">\n            <span md-highlight-text="vm.searchText">{{item.name}}</span>\n          </md-autocomplete>\n          <md-chip-template>\n            <span>\n              <strong>{{$chip.name}}</strong>\n            </span>\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveTag(false)" ng-disabled="tagForm.$pristine" class="send-button md-accent md-raised" aria-label="TAG" translate="DASHBOARDS.SAVE" translate-attr-aria-label="DASHBOARDS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/transfer/dialog.html",'<md-dialog class="disposition-dialog" aria-label="disposition">\n  <form name="transferForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="DASHBOARDS.TRANSFER"></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(false)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="DASHBOARDS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.transfer.type">\n          <md-option ng-value="\'queue\'" ng-if="vm.account.queueTransfer">Queue</md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.account.agentTransfer">Agent</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'queue\'">\n        <label translate="DASHBOARDS.QUEUES">Queues</label>\n        <md-select name="queue" ng-model="vm.transfer.id" required>\n          <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.queue.$error" ng-show="transferForm.queue.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.transfer.type === \'agent\'">\n        <label translate="DASHBOARDS.AGENTS">Agents</label>\n        <md-select name="agent" ng-model="vm.transfer.id" required>\n          <md-option ng-value="agent.id" ng-repeat="agent in vm.agents.rows">{{\n            agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="transferForm.agent.$error" ng-show="transferForm.agent.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="DASHBOARDS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.onTransfer(true)" ng-disabled="transferForm.$pristine" class="send-button md-accent md-raised" aria-label="DASHBOARDS.TRANSFER" translate="DASHBOARDS.TRANSFER" translate-attr-aria-label="DASHBOARDS.TRANSFER">\n          TRANSFER\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.footer.html",'\x3c!-- REPLY FORM --\x3e\n<div ng-show="vm.showFooter" layout="column" layout-align="center center" flex>\n  <div layout="row" layout-align="center center" style="flex-grow: 1; align-self: stretch" flex>\n    \x3c!-- msEmojyArea directive --\x3e\n    <ms-emoji-area ng-if="vm.tab.channel != \'fax\'" on-reply="vm.reply(event, body)" ctrl-methods="vm.ctrlMethods" ng-model="vm.tab.areaText" placeholder="vm.tab.channel.toUpperCase() + \'.INSERT_MESSAGE_HERE\'"></ms-emoji-area>\n    \x3c!-- / msEmojyArea directive --\x3e\n\n    <div layout="row" layout-align="end center">\n      <md-button ng-if="vm.tab.channel != \'fax\'" style="margin:1px;" class="md-icon-button md-mini" ng-click="vm.changeDisplayCannedAnswerInputValue()" aria-label="Search canned answer" translate translate-attr-aria-label="DASHBOARDS.SEND_MESSAGE">\n        <md-icon md-font-icon="icon-auto-fix" class="green-fg"></md-icon>\n      </md-button>\n\n      <md-button ng-if="vm.tab.channel == \'openchannel\' || vm.tab.channel == \'chat\' || vm.tab.channel == \'fax\'" style="margin:1px;" class="md-icon-button md-warn md-mini" aria-label="attachment" translate-attr-aria-label="DASHBOARDS.ATTACHMENT" flow-btn flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-init="vm.ngFlowOptions" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)">\n        <md-icon md-font-icon="icon-paperclip"></md-icon>\n      </md-button>\n    </div>\n  </div>\n\n  <md-autocomplete ng-hide="!vm.displayCannedAnswerInput" md-selected-item="vm.selectedItem" md-search-text="vm.searchText" md-selected-item-change="vm.selectedItemChange(item)" md-items="item in vm.searchTextChange(vm.searchText)" md-item-text="item.value" md-min-length="1" placeholder="{{ \'DASHBOARDS.CANNED_ANSWER_SEARCH\' | translate}}" class="cannedarea input-show-hide">\n    <md-item-template>\n      <md-icon ng-if="!item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="icon-earth" aria-label="alert channel" class="s16"></md-icon>\n      <md-icon ng-if="item[vm.tab.channel === \'chat\' ? \'ChatWebsiteId\' : _.capitalize(vm.tab.channel) + \'AccountId\']" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" aria-label="alert channel" class="s16" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n      <span md-highlight-text="vm.searchText" md-highlight-flags="^i">{{item.key}} - {{item.value}}</span>\n    </md-item-template>\n\n    <md-not-found>\n      <span translate="DASHBOARDS.CANNED_ANSWER_NOT_FOUND">No canned answers were found</span>\n    </md-not-found>\n  </md-autocomplete>\n</div>\n\x3c!-- / REPLY FORM --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.browserName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.BROWSER_NAME">Browser Name</p>\n      <h4>{{ item.browserName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.osName">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.OS_NAME">OS Name</p>\n      <h4>{{ item.osName }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.deviceModel">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DEVICE_MODEL">Device Model</p>\n      <h4>{{ item.deviceModel }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.referer">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.REFERER">Referer</p>\n      <h4>{{ item.referer }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerIp">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_IP">Originating IP Address</p>\n      <h4>{{ item.customerIp }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.customerPort">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CUSTOMER_PORT">Originating TCP Port</p>\n      <h4>{{ item.customerPort }}</h4>\n    </div>\n  </md-list-item>\n  <md-divider ng-if="item.closed && item.ratingValue != null || item.ratingMessage"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.ratingValue != null">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.RATING">Rating</p>\n      <md-icon md-font-icon="icon-star" style="color:red" ng-show="!item.ratingType || item.ratingType == \'star\'" ng-repeat="ratingValue in [1,2,3,4,5] | limitTo:item.ratingValue"></md-icon>\n      <md-icon md-font-icon="icon-thumb-up" style="color:green" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 1"></md-icon>\n      <md-icon md-font-icon="icon-thumb-down" style="color:red" ng-show="item.ratingType && item.ratingType == \'thumb\' && item.ratingValue == 0"></md-icon>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.ratingMessage">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.FEEDBACK">Feedback</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.ratingMessage }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.html",'<md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CONTACT">Contact</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <form name="contactForm" class="md-inline-form" novalidate>\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-account"></md-icon>\n            <label translate="DASHBOARDS.NAME">Name</label>\n            <input type="text" name="firstName" ng-model="vm.contact.firstName" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-email"></md-icon>\n            <label translate="DASHBOARDS.EMAIL">Email</label>\n            <input type="email" name="email" ng-model="vm.contact.email" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n            <label translate="DASHBOARDS.PHONE">Phone</label>\n            <input type="text" name="phone" ng-model="vm.contact.phone" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-cellphone-iphone"></md-icon>\n            <label translate="DASHBOARDS.MOBILE">Mobile</label>\n            <input type="text" name="mobile" ng-model="vm.contact.mobile" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-icon md-font-icon="icon-deskphone"></md-icon>\n            <label translate="DASHBOARDS.FAX">Fax</label>\n            <input type="text" name="fax" ng-model="vm.contact.fax" disabled privacy ng-cloak>\n          </md-input-container>\n\n          <div ng-if="!vm.tab.spy" layout="row" layout-align="center center">\n            <md-button class="md-raised md-accent" ng-click="vm.openContact(ev)" translate="DASHBOARDS.MORE">\n              More\n            </md-button>\n          </div>\n        </form>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.INTERACTION">Interaction</span>\n    </md-tab-label>\n    <md-tab-body>\n      <div layout="column" layout-align="space-between center" class="md-padding">\n        <md-icon class="s42" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n        <span ng-if="vm.interaction.closed" class="md-background-bg red-fg font-size-14">#{{vm.interaction.id}} - <span translate="DASHBOARDS.CLOSED"></span></span>\n        <span ng-if="!vm.interaction.closed" class="md-background-bg green-fg font-size-14">#{{vm.interaction.id}} -\n          <span translate="DASHBOARDS.OPENED"></span></span>\n        <span ng-if="!vm.interaction.closed && vm.interaction.substatus" class="md-background-bg green-fg font-size-14">{{vm.interaction.substatus}}</span>\n      </div>\n      <md-divider></md-divider>\n      <md-list flex>\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.WEBSITE" ng-if="vm.tab.channel == \'chat\'">Website</p>\n            <p translate="DASHBOARDS.ACCOUNT" ng-if="vm.tab.channel != \'chat\'">Account</p>\n            <h4>{{vm.account.name}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.AGENT">Agent</p>\n            <h4>{{vm.agent.fullname || vm.usersMap[vm.interaction.UserId]}}</h4>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.externalUrl">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n            <a href="{{vm.interaction.externalUrl}}" target="_blank">\n              <h4>{{vm.interaction.externalUrl}}</h4>\n            </a>\n          </div>\n        </md-list-item>\n\n        <md-list-item class="md-2-line">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n            <h4>{{vm.interaction.createdAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n\n        <div ng-switch="vm.tab.channel">\n          <div ng-switch-when="chat">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="mail">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n            </div>\n          </div>\n          <div ng-switch-when="openchannel">\n            <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html\'">\n            </div>\n          </div>\n        </div>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.Tags.length">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.TAGS">Tags</p>\n            <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n              <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n                <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n                <div class="tag-label">{{tag.name}}</div>\n              </div>\n            </div>\n          </div>\n        </md-list-item>\n\n        <md-divider ng-if="vm.interaction.closed"></md-divider>\n\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n            <h4>{{vm.interaction.closedAt | date: \'medium\'}}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.disposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n            <h4>{{ vm.interaction.disposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.secondDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n            <h4>{{ vm.interaction.secondDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-2-line" ng-if="vm.interaction.closed && vm.interaction.thirdDisposition">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n            <h4>{{ vm.interaction.thirdDisposition }}</h4>\n          </div>\n        </md-list-item>\n        <md-list-item class="md-3-line md-long-text" ng-if="vm.interaction.closed && vm.interaction.note">\n          <div class="md-list-item-text">\n            <p translate="DASHBOARDS.NOTE">NOTE</p>\n            <h4 style="overflow-wrap: break-word; white-space: normal">{{ vm.interaction.note }}</h4>\n          </div>\n        </md-list-item>\n      </md-list>\n    </md-tab-body>\n  </md-tab>\n  <md-tab>\n    <md-tab-label>\n      <span translate="DASHBOARDS.CUSTOMER_JOURNEY">Journey</span>\n    </md-tab-label>\n    <md-tab-body>\n      <md-content class="md-padding">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html\'">\n        </div>\n      </md-content>\n    </md-tab-body>\n  </md-tab>\n</md-tabs>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html",'<md-divider></md-divider>\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.AGENT">Agent</p>\n      <h4>{{ vm.agent.fullname || vm.usersMap[item.UserId] || \'DASHBOARDS.NOT_ASSIGNED\' | translate }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.externalUrl">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.EXTERNAL_URL">External URL</p>\n      <a href="{{ item.externalUrl }}" target="_blank">\n        <h4>{{ item.externalUrl }}</h4>\n      </a>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CREATED_AT">Created At</p>\n      <h4>{{ item.createdAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <div ng-if="item.channel === \'chat\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.chat.html\'">\n    </div>\n  </div>\n  <div ng-if="item.channel === \'mail\'">\n    <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html\'">\n    </div>\n  </div>\n  <md-divider ng-if="item.closed"></md-divider>\n  <md-list-item class="md-2-line" ng-if="item.closed">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CLOSED_AT">Closed At</p>\n      <h4>{{ item.closedAt | date: \'medium\' }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.disposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DISPOSITION">Disposition</p>\n      <h4>{{ item.disposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.secondDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</p>\n      <h4>{{ item.secondDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-2-line" ng-if="item.closed && item.thirdDisposition">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.THIRD_LEVEL_DISPOSITION">Third Level Disposition</p>\n      <h4>{{ item.thirdDisposition }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item class="md-3-line md-long-text" ng-if="item.closed && item.note">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">NOTE</p>\n      <h4 style="overflow-wrap: break-word; white-space: normal">{{ item.note }}</h4>\n    </div>\n  </md-list-item>\n  <md-list-item ng-if="item.Tags.length">\n    <p class="padding-horizontal-15 grey-fg">Tags</p>\n    <div class="tags padding-bottom-5" layout="row" layout-align="start center" layout-wrap>\n      <div class="tag margin-right-5 margin-top-5 margin-bottom-5" layout="row" layout-align="center center" ng-repeat="tag in item.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{ tag.name }}</div>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.html",'<div layout-margin layout="row" layout-align="center center">\n  <ms-quick-filter filters="vm.quickFilters" query="vm.journeyOptions" search="vm.getCustomerJourney()">\n  </ms-quick-filter>\n</div>\n\n<md-content id="journey-content" flex layout-wrap>\n  <div ng-if="vm.journeyIsLoading" layout="row" layout-align="center center">\n    <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n  </div>\n  <div id="timeline" layout="column" ng-if="vm.journey && vm.journey.length && !vm.journeyIsLoading" ms-timeline="vm.journeyTimelineOptions" ms-timeline-load-more="vm.loadMoreJourney()">\n    \x3c!-- TIMELINE ITEM --\x3e\n    <div class="ms-timeline-item" layout-align="center center" ng-repeat="item in vm.journey">\n      <div class="timeline-card">\n        <md-card class="channel" ng-class="{\'md-grey-200-bg\': item.id == vm.interaction.id}">\n          <div layout="row" layout-align="space-between center">\n            <div class="header p-6" layout="row" layout-align="start center" ng-cloak>\n              <md-button class="md-fab md-mini no-click" aria-label="icon-channel" ng-class="{{ \'item.style.color\' }} + \'-bg\'">\n                <md-icon md-font-icon="{{ item.style.icon }}"></md-icon>\n              </md-button>\n              <div class="info" layout="column" ng-init="item.showMore = false">\n                <span class="font-size-12 text-truncate" ng-if="item.destination">\n                  #{{item.id}} - <span privacy ng-cloak>{{ item.destination }}</span>\n                </span>\n                <span class="font-size-12 text-truncate" ng-if="!item.destination">\n                  #{{item.id}} - {{ item.Account.key }}\n                </span>\n                <span class="font-size-10">{{item.createdAt | date: \'medium\'}}</span>\n                <span>\n                  <a class="toggle-details md-accent-color" ng-click="item.showMore = !item.showMore" translate="{{ item.showMore ? \'DASHBOARDS.HIDE_DETAILS\' : \'DASHBOARDS.SHOW_DETAILS\' }}">\n                  </a>\n                </span>\n              </div>\n            </div>\n            <span>\n              <img ng-if="item.UserId" class="avatar" ng-src="api/users/{{item.UserId}}/avatar">\n              <md-tooltip md-direction="left">{{item.Owner.fullname || item.User.fullname}}</md-tooltip>\n            </span>\n          </div>\n          <div ng-if="item.showMore">\n            <div ng-if="item.channel !== \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.all.html\'">\n            </div>\n            <div ng-if="item.channel === \'voice\'" ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html\'">\n            </div>\n          </div>\n          <md-divider></md-divider>\n          <div ng-if="item.id != vm.interaction.id" layout="row" layout-align="space-around center">\n            <div ng-if="item.closed && item.channel !== \'voice\'" class="text-truncate text-boxed-light">\n              <span class="red-fg" title="{{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate }} {{ item.dispositionsValues }}">\n                {{ \'DASHBOARDS.STATUS\' | translate}} : {{ \'DASHBOARDS.CLOSED\' | translate}} {{ item.dispositionsValues\n                }}\n              </span>\n            </div>\n            <span class="text-boxed md-background-bg green-fg" ng-if="!item.closed && item.channel !== \'voice\'" title="{{ \'DASHBOARDS.STATUS\' | translate}}: {{ \'DASHBOARDS.OPENED\' | translate}}">\n              {{ \'DASHBOARDS.STATUS\' | translate}}:\n              {{ \'DASHBOARDS.OPENED\' | translate}}\n              <span ng-if="item.substatus"> - {{ item.substatus }}</span>\n            </span>\n            <span ng-if="item.channel === \'voice\'" class="text-boxed md-background-bg red-fg" title="{{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n                item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}">\n              {{ item.userDisposition ? (\'DASHBOARDS.DISPOSITION\' | translate) + \':\' : \'\'}} {{ item.userDisposition ?\n              item.userDisposition : (\'DASHBOARDS.NO_DISPOSITION_SET\' | translate) }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userSecondDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}: {{ item.userSecondDisposition }}">\n              {{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userSecondDisposition }}\n            </span>\n            <span ng-if="item.channel === \'voice\' && item.userThirdDisposition" class="text-boxed md-background-bg red-fg" title="{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}: {{ item.userThirdDisposition }}">\n              {{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:\n              {{ item.userThirdDisposition }}\n            </span>\n            <div flex></div>\n            <md-button ng-if="!vm.tab.spy && vm.user.role === \'agent\' && item.canOpen && item.channel !== \'voice\'" class="md-icon-button" aria-label="go" ng-click="vm.openInteraction(item)">\n              <md-icon md-font-icon="icon-open-in-new" class="s20"></md-icon>\n            </md-button>\n          </div>\n        </md-card>\n      </div>\n    </div>\n\n    <div ng-if="vm.canLoadMoreJourney" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row keep-on-top">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm.loadMoreJourney()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / TIMELINE ITEM --\x3e\n</md-content>\n\n<div ng-if="!vm.journey || vm.journey.length === 0" layout="row" layout-align="center center">\n  <em translate="DASHBOARDS.NO_DATA_AVAILABLE">No data available</em>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.journey.voice.html",'<md-divider></md-divider>\n\n<md-list flex>\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.TYPE">Type</p>\n      <h4>{{ item.type ? item.type : \'no type\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SOURCE">Source</p>\n      <h4 privacy ng-cloak>{{ item.source ? item.source : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DESTINATION">Destination</p>\n      <h4 privacy ng-cloak>{{ item.destination ? item.destination : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.UNIQUEID">Uniqueid</p>\n      <h4>{{ item.uniqueid ? item.uniqueid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.CALLERID">Caller Id</p>\n      <h4 privacy ng-cloak>{{ item.callerid ? item.callerid : (\'DASHBOARDS.UNKNOWN\' | translate) }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.STARTEDAT">Started At</p>\n      <h4>{{ item.starttime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.END_AT">End At</p>\n      <h4>{{ item.endtime | date:\'medium\' }}</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.DURATION">Duration</p>\n      <h4>{{ item.duration ? item.duration : \'--\' }}s</h4>\n    </div>\n  </md-list-item>\n\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.NOTE">Note</p>\n      <h4>{{ item.note ? item.note : \'--\' }}</h4>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.mail.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line" ng-if="item.subject">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.SUBJECT">Subject</p>\n      <h4>{{ item.subject }}</h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.info.openchannel.html",'<div ng-init="item = item || vm.interaction">\n  <md-list-item class="md-2-line">\n    <div class="md-list-item-text">\n      <p translate="DASHBOARDS.VISIBILITY">Visibility</p>\n      <h4 translate="{{ item.threadId ? \'DASHBOARDS.PUBLIC\' : \'DASHBOARDS.PRIVATE\'}}"></h4>\n    </div>\n  </md-list-item>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.html",'\x3c!-- MESSAGES --\x3e\n<div layout="row" ng-repeat="message in vm.messages.rows" class="md-padding message-row" ng-class="vm.getMessagesAlignment(message)">\n  <img ng-if="message.direction ===\'in\'" src="assets/images/avatars/customer.png" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && !message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && message.UserId && message.secret" ng-src="api/users/{{message.UserId}}/avatar" class="avatar" />\n  <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n  <md-button ng-if="vm.tab.channel === \'fax\'" class="md-fab md-mini no-margin" aria-label="Download" ng-click="vm.downloadMessage(message)">\n    <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n  </md-button>\n\n  <div class="bubble" ng-class="{\'md-yellow-200-bg\': message.secret}" ng-switch="message.direction">\n    <div ng-if="message.secret">\n      <div class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id">\n          <md-icon class="s18" md-font-icon="icon-lock"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="!message.secret">\n      <div ng-switch-when="in" class="time secondary-text" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n        <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n        <span> - {{message.createdAt | date: \'medium\'}}</span>\n      </div>\n      <div ng-switch-when="out" class="time secondary-text" layout="row" layout-align="end center">\n        <div layout-padding>\n          <span privacy ng-cloak>{{ vm.getLabelByMessage(message) }}</span>\n          <span> - {{message.createdAt | date: \'medium\'}}</span>\n        </div>\n        <div ng-if="message.id && vm.tab.channel !== \'fax\'">\n          <md-icon ng-if="!message.read" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n        </div>\n        <div ng-if="message.id && vm.tab.channel === \'fax\'">\n          <md-icon ng-if="!message.read && !(message.failMessage )" class="s18" md-font-icon="icon-check"></md-icon>\n          <md-icon ng-if="message.read" class="s18" md-font-icon="icon-check-all md-accent"></md-icon>\n          <span ng-if="!message.read && message.failMessage" class="s18 red-900-fg"> {{ message.failMessage }}</span>\n          <md-icon ng-if="!message.read && message.failMessage" class="s18 red-900-fg" md-font-icon="icon-close md-accent"></md-icon>\n        </div>\n      </div>\n    </div>\n    <div ng-if="message.AttachmentId" layout="row" layout-align="end center">\n      <md-button ng-if="vm.downloadPermissions.attachments" class="md-raised md-accent" ng-click="vm.getAttachment({id: message.AttachmentId, name: vm.htmlToPlaintext(message.body)})">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <div ng-if="!vm.downloadPermissions.attachments" class="disabled-button">\n        <span>{{vm.htmlToPlaintext(message.body)}}</span>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </div>\n    </div>\n    <div ng-if="!message.AttachmentId" class="message" layout="row" layout-align="end center">\n      <span ng-bind-html="message.body | embed: vm.embedOptions"></span>\n    </div>\n  </div>\n</div>\n\x3c!-- / MESSAGES --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.interaction.mail.html",'<div ms-timeline="vm.interactionTimelineOptions" ms-timeline-load-more="vm.loadNextPage()">\n  <div ng-repeat="message in vm.messages.rows track by message.id" ng-init="vm.selectedMailShowSystemMessage[message.id] = false">\n    <md-card ng-if="message.secret" class="md-padding md-yellow-100-bg" layout="column">\n      <div layout="row" layout-align="start center">\n        <img class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n        <div layout="column">\n          <span class="grey-fg">{{vm.agent.fullname || vm.usersMap[message.UserId]}}</span>\n          <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n        </div>\n      </div>\n      <div layout="row" layout-align="center center" layout-fill ng-if="message.attach && vm.downloadPermissions.attachments">\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n        <md-menu>\n          <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n            <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </md-tooltip>\n            <div layout="row" layout-align="start center">\n              <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n              <span>{{message.attach}}</span>\n            </div>\n          </md-button>\n          <md-menu-content width="4">\n            <div layout="column" layout-align="center center" ng-if="!message.attachments">\n              <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n              <span translate="MAIL.ATTACHMENTS">Attachments</span>\n            </div>\n            <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n              <md-button ng-click="vm.getAttachment(attachment)">\n                {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n        <div flex>\n          <md-divider></md-divider>\n        </div>\n      </div>\n      <div class="padding-top-5" ng-bind-html-unsafe="message.body"></div>\n    </md-card>\n    <div ng-if="!message.secret">\n      <div layout="row" layout-align="center center" ng-if="message.direction == \'out\' && !message.UserId && !vm.selectedMailShowSystemMessage[message.id]">\n        <md-button class="md-raised blue-grey-300-bg white-fg" ng-click="vm.selectedMailShowSystemMessage[message.id] = !vm.selectedMailShowSystemMessage[message.id]">\n          [{{message.createdAt | date: \'medium\'}}] {{ \'MAIL.SHOW_AUTOREPLY\' | translate }}</md-button>\n      </div>\n      <md-card layout="column" class="md-padding message-row" ng-if="message.direction == \'in\' || (message.direction == \'out\' && (message.UserId || vm.selectedMailShowSystemMessage[message.id]))">\n        <md-content class="mail-content">\n          <div class="info" layout="row" layout-align="space-between start">\n            <div layout="column" layout-align="start start">\n              <div layout="row" layout-align="start start">\n                <div layout="column" layout-align="start start">\n                  <div class="name" ng-click="message.Contact && vm.openContact(ev, message.Contact)">\n                    <strong privacy ng-cloak>{{message.from}}</strong>\n                    <md-icon ng-if="message.attach" md-font-icon="icon-paperclip" class="s16">\n                    </md-icon>\n                  </div>\n                  <div class="name">\n                    <div>{{message.subject}}</div>\n                  </div>\n                  <div class="name" layout="row" layout-align="start center"><span translate="MAIL.TO">To</span>: <span class="padding-left-5 subject text-truncate" privacy ng-cloak>{{ message.originTo || message.to\n                      }}</span>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.originCc && message.originCc.indexOf(vm.account.email) >= 0">\n                    <em><span class="blue-grey" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="blue-grey">CC</span></em>\n                  </div>\n                  <div class="name padding-top-10" layout="row" layout-align="start center" ng-if="message.direction == \'in\' && message.bcc && message.bcc.indexOf(vm.account.email) >= 0">\n                    <em><span class="red-fg" translate="MAIL.YOU_ARE_REGISTERED_AS_A">You are\n                        registered as a</span> <span class="red-fg">BCC</span></em>\n                  </div>\n                </div>\n              </div>\n\n              <a class="toggle-details md-accent-color" ng-hide="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.SHOW_DETAILS">\n                Show Details\n              </a>\n              <a class="toggle-details md-accent-color" ng-show="vm.selectedMailShowDetails[message.id]" ng-click="vm.selectedMailShowDetails[message.id] = !vm.selectedMailShowDetails[message.id]" translate="MAIL.HIDE_DETAILS">\n                Hide Details\n              </a>\n              <div ng-show="vm.selectedMailShowDetails[message.id]" class="details" layout="row" layout-align="start start">\n                <div layout="column">\n                  <span class="title" translate="MAIL.DATE">Date:</span>\n                  <span class="title" translate="MAIL.FROM">From:</span>\n                  <span class="title" translate="MAIL.TO">To:</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && message.originCc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc">Cc:</span>\n                  <span class="title" translate="MAIL.CC" ng-if="message.direction === \'out\' && message.cc">Cc:</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="title" translate="MAIL.BCC" ng-if="message.bcc">Bcc:</span>\n                  <span class="title" translate="MAIL.ACCEPTED" ng-if="message.UserId && message.direction ===\'in\'">Accepted:</span>\n                </div>\n\n                <div layout="column">\n                  <span class="detail">{{message.createdAt | date:\'medium\'}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.from}}</span>\n                  <span class="detail" privacy ng-cloak>{{message.originTo || message.to}}</span>\n                  \x3c!-- NOTE: Start retrocompatibility with replyCc 2.0.66 --\x3e\n                  <span class="detail" ng-if="message.direction === \'in\' && message.originCc" privacy ng-cloak>{{\n                    message.originCc }}</span>\n                  <span class="detail" ng-if="message.direction === \'in\' && !message.originCc && !message.originTo && message.cc" privacy ng-cloak>{{ message.cc }}</span>\n                  <span class="detail" ng-if="message.direction === \'out\' && message.cc" privacy ng-cloak>{{ message.cc\n                    }}</span>\n                  \x3c!-- End retrocompatibility --\x3e\n                  <span class="detail" ng-if="message.bcc" privacy ng-cloak>{{message.bcc}}</span>\n                  <span class="detail" ng-if="message.UserId && message.direction ===\'in\'">{{vm.usersMap[message.UserId]}}</span>\n                </div>\n              </div>\n            </div>\n\n            <div layout="row" layout-align="center center">\n              <div layout="column" layout-align="center end" class="md-padding">\n                <span class="grey-fg" ng-if="message.direction ===\'in\'" privacy>{{message.from.indexOf(vm.contact.email)\n                  >= 0 ? vm.contact.firstName + \' \' + vm.contact.lastName : \'*\' + message.from}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && message.UserId">{{vm.agent.fullname ||\n                  vm.usersMap[message.UserId]}}</span>\n                <span class="grey-fg" ng-if="message.direction ===\'out\' && !message.UserId">System</span>\n                <span class="grey-fg">{{message.createdAt | date:\'medium\'}}</span>\n              </div>\n              <img ng-if="message.direction ===\'in\'" ng-src="assets/images/avatars/customer.png" class="avatar" alt="customer" />\n              <img ng-if="message.direction ===\'out\' && message.UserId" class="avatar" ng-src="api/users/{{message.UserId}}/avatar">\n              <img ng-if="message.direction ===\'out\' && !message.UserId" class="avatar" src="assets/images/avatars/robot.png">\n            </div>\n          </div>\n\n          <div layout="row" layout-align="center center" layout-fill>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n            <div>\n              <div class="interaction-reply-button-container">\n                <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span>\n                </md-tooltip>\n                <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft(message.id)">\n                  <md-icon md-font-icon="icon-pencil-box" class="icon s24"></md-icon>\n                </md-button>\n              </div>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n                <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n              </md-button>\n              <md-button ng-if="!message.attach && vm.downloadPermissions.interactions" class="md-icon-button" aria-label="forward" ng-click="vm.downloadMessage(message)">\n                <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                </md-tooltip>\n                <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n              </md-button>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n                <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.DOWNLOAD">Download</span>\n                  </md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n                <md-menu-content width="2">\n                  <md-menu-item ng-if="vm.downloadPermissions.attachments">\n                    <md-button ng-click="vm.downloadMessage(message, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                      Download with attachments\n                    </md-button>\n                  </md-menu-item>\n                  <md-menu-item>\n                    <md-button ng-click="vm.downloadMessage(message)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                      Download without attachments\n                    </md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n              <md-menu ng-if="message.attach && vm.downloadPermissions.attachments">\n                <md-button aria-label="attachments" class="md-icon-button" ng-click="vm.getAttachments(message); $mdOpenMenu($event);">\n                  <md-tooltip md-direction="bottom"><span translate="MAIL.ATTACHMENTS">Attachments</span></md-tooltip>\n                  <div layout="row" layout-align="start center">\n                    <md-icon md-font-icon="icon-paperclip" class="icon s24"></md-icon>\n                    <span>{{message.attach}}</span>\n                  </div>\n                </md-button>\n                <md-menu-content width="4">\n                  <div layout="column" layout-align="center center" ng-if="!message.attachments">\n                    <md-progress-circular md-mode="indeterminate"></md-progress-circular>\n                    <span translate="MAIL.ATTACHMENTS">Attachments</span>\n                  </div>\n                  <md-menu-item ng-if="message.attachments" ng-repeat="attachment in message.attachments">\n                    <md-button ng-click="vm.getAttachment(attachment)">\n                      {{ attachment.name || (\'attachment-\' + $index) }}</md-button>\n                  </md-menu-item>\n                </md-menu-content>\n              </md-menu>\n            </div>\n            <div flex>\n              <md-divider></md-divider>\n            </div>\n          </div>\n\n          <md-content ng-bind-html-unsafe="message.body"></md-content>\n        </md-content>\n      </md-card>\n    </div>\n    <div ng-hide="!(vm.BTNLoadMore > 0)" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n      <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-disabled="!(vm.BTNLoadMore > 0)" ng-click="vm.loadNextPage()" translate="DASHBOARDS.MORE">\n      </md-button>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.loading.html",'<div class="big-circle md-whiteframe-4dp">\n  <md-icon class="s128 md-accent" md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n</div>\n<span class="app-title" translate="DASHBOARDS.WAITING">Waiting</span>\n<span class="hide show-gt-md secondary-text" translate="DASHBOARDS.LOADING_INTERACTION">We are loading the\n  interaction...</span>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeChatInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="CHAT.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html",'<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeFaxInteraction(\'new\')">\n  <md-tooltip md-direction="bottom"><span translate="FAX.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.html",'<div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n  <md-icon md-font-icon="{{vm.getIconByChannel(vm.tab.channel)}}" class="s20" ng-class="vm.getColorByChannel(vm.tab.channel) + \'-fg\'"></md-icon>\n  <div class="padding-left-10" layout="column" layout-align="center start" flex>\n    <div class="font-size-14" layout="row" layout-align="start center" layout-fill>\n      <span>#{{vm.interaction.id}} - {{vm.account.key}}</span>\n      <div layout="row" layout-align="center center" class="p-8">\n        <md-icon ng-if="vm.tab.channel === \'openchannel\' && vm.interaction.threadId" md-font-icon="fas fa-users" class="s16">\n          <md-tooltip><span translate="DASHBOARDS.PUBLIC_INTERACTION">The interaction is public</span></md-tooltip>\n        </md-icon>\n        <md-icon ng-if="vm.interaction.attach" md-font-icon="icon-paperclip" class="s16"></md-icon>\n      </div>\n      <span class="red-fg padding-left-25" ng-if="vm.interaction.closed" translate="DASHBOARDS.CLOSED">CLOSED</span>\n      <span class="green-fg padding-left-25" ng-if="!vm.interaction.closed"><span translate="DASHBOARDS.OPENED">OPENED</span><span ng-if="vm.interaction.substatus"> -\n          {{vm.interaction.substatus}}</span></span>\n      <div layout="row" layout-align="center center" class="blue-grey-300-fg padding-left-40" ng-if="!vm.interaction.closed">\n        <timer start-time="vm.interaction.createdAt"></timer>\n        <md-icon md-font-icon="icon-timelapse" class="s16 padding-left-5"></md-icon>\n      </div>\n    </div>\n    <div class="tags" layout="row" layout-align="start center" ng-if="vm.interaction.Tags.length" ng-class="{\'padding-top-5\': vm.interaction.Tags.length}">\n      <div class="tag margin-right-5" layout="row" layout-align="center center" ng-repeat="tag in vm.interaction.Tags">\n        <div class="tag-color" ng-style="{\'background\': tag.color}"></div>\n        <div class="tag-label">{{tag.name}}</div>\n      </div>\n    </div>\n  </div>\n  <div layout="row" layout-align="end center">\n    <div ng-switch="vm.tab.channel">\n      <div ng-switch-when="mail">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="fax">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.fax.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="sms">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="whatsapp">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="chat">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.chat.html\'">\n        </div>\n      </div>\n      <div ng-switch-when="openchannel">\n        <div ng-include="\'app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html\'">\n        </div>\n      </div>\n    </div>\n    <md-menu ng-if="[\'fax\', \'sms\', \'whatsapp\'].indexOf(vm.tab.channel) < 0 && vm.downloadPermissions.interactions" class="no-margin" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="download">\n        <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n        <md-icon md-font-icon="icon-download"></md-icon>\n      </md-button>\n      <md-menu-content width="2">\n        <md-menu-item ng-if="vm.downloadPermissions.attachments">\n          <md-button ng-click="vm.downloadInteraction(vm.interaction, true)" translate="DASHBOARDS.DOWNLOAD_WITH_ATTACHMENTS">\n            Download with attachments\n          </md-button>\n        </md-menu-item>\n        <md-menu-item>\n          <md-button ng-click="vm.downloadInteraction(vm.interaction)" translate="DASHBOARDS.DOWNLOAD_WITHOUT_ATTACHMENTS">\n            Download without attachments\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n    <md-menu class="no-margin" ng-if="!vm.interaction.disposition" md-position-mode="target-right target">\n      <md-button class="md-icon-button" ng-click="$mdOpenMenu()" aria-label="more">\n        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n      </md-button>\n\n      <md-menu-content width="2">\n\n        <md-menu-item ng-if="vm.tab.channel === \'chat\' && !vm.interaction.closed && !vm.tab.spy && vm.account.vidaooEscalation && vm.account.vidaooApiKey">\n          <md-button ng-click="vm.createVidaooSession(vm.interaction)" translate="DASHBOARDS.VIDAOOSESSION">\n            Start Video Call\n          </md-button>\n        </md-menu-item>\n\n        <md-menu-item>\n          <md-button ng-click="vm.tagInteraction()" translate="DASHBOARDS.TAG">\n            Tag\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="vm.account.queueTransfer || vm.account.agentTransfer">\n          <md-button ng-click="vm.transferLastMessage()" translate="DASHBOARDS.TRANSFER">\n            Transfer\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && (vm.subStatuses.rows.length || vm.interaction.substatus != null)">\n          <md-menu>\n            <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.SET_AS">\n              Set as\n            </md-button>\n            <md-menu-content>\n              <md-menu-item ng-if="vm.interaction.substatus != null">\n                <md-button ng-click="vm.setAs(null)" translate="DASHBOARDS.NONE">\n                  None\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-repeat="subStatus in vm.subStatuses.rows">\n                <md-button ng-click="vm.setAs(subStatus.name)">\n                  {{subStatus.name}}\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.interaction.closed && vm.tab.channel == \'mail\' && vm.account.markAsUnread">\n          <md-button ng-click="vm.markAsUnread()" translate="DASHBOARDS.MARK_AS_UNREAD">\n            Unread\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && !vm.interaction.closed">\n          <md-button ng-click="vm.disposeInteraction()" translate="DASHBOARDS.CLOSE_AND_DISPOSE">\n            Close and Dispose\n          </md-button>\n        </md-menu-item>\n        <md-menu-item ng-if="!vm.tab.spy && vm.interaction.closed && !vm.interaction.disposition">\n          <md-button ng-click="vm.disposeInteraction(ev)" translate="DASHBOARDS.DISPOSE">\n            Dispose\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.mail.html",'<div class="interaction-reply-button-container">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DRAFT">Draft</span></md-tooltip>\n  <md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="draft" ng-disabled="!vm.draft" ng-click="vm.openDraft()">\n    <md-icon ng-cloak md-font-icon="icon-pencil-box" class="icon s24" ng-class="vm.draft ? \'red-500-fg\' : \'grey-fg\'"></md-icon>\n  </md-button>\n</div>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="reply" ng-click="vm.composeMailInteraction(\'reply\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY">Reply</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="replyAll" ng-click="vm.composeMailInteraction(\'replyAll\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.REPLY_ALL">Reply All</span></md-tooltip>\n  <md-icon md-font-icon="icon-reply-all" class="icon s24"></md-icon>\n</md-button>\n<md-button ng-if="!vm.interaction.closed && !vm.tab.spy" class="md-icon-button" aria-label="forward" ng-click="vm.composeMailInteraction(\'forward\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.FORWARD">Forward</span></md-tooltip>\n  <md-icon md-font-icon="icon-forward" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeMailInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="MAIL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.openchannel.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeOpenchannelInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="OPENCHANNEL.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.sms.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeSmsInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="SMS.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/interaction/views/agent.general.toolbar.whatsapp.html",'<md-button class="md-icon-button" aria-label="note" ng-click="vm.composeWhatsappInteraction(\'note\', vm.interaction)">\n  <md-tooltip md-direction="bottom"><span translate="WHATSAPP.NOTE">Note</span></md-tooltip>\n  <md-icon md-font-icon="icon-note-outline" class="icon s24"></md-icon>\n</md-button>\n<md-button class="md-icon-button" aria-label="Download" ng-click="vm.downloadInteraction(vm.interaction)" ng-if="vm.downloadPermissions.interactions">\n  <md-tooltip md-direction="bottom"><span translate="DASHBOARDS.DOWNLOAD">Download</span></md-tooltip>\n  <md-icon md-font-icon="icon-download" class="icon s24"></md-icon>\n</md-button>'),e.put("app/main/apps/dashboards/views/general/agent/jscripty/agent.general.jscripty.html",'<md-content class="md-padding" layout="column" layout-align="center center">\n  <div layout="row" layout-align="center center">\n    <span ng-if="!vm.tab.saved" class="text-boxed md-green-bg">\n      <timer start-time="vm.starttime"></timer>\n    </span>\n    <span ng-if="vm.contact" class="text-boxed md-gray-bg font-weight-900">{{vm.contact.firstName}} {{vm.contact.lastName}} {{vm.contact.phone}}</span>\n    <md-button ng-if="vm.showResetButton" ng-click="vm.resetViewer()" md-no-ink class="md-raised md-accent orange-bg">\n      <md-icon md-font-icon="icon-rotate-left" class="icon s16"></md-icon> {{\'JSCRIPTY.RESET_SESSION\' | translate}}\n    </md-button>\n    <md-button ng-if="vm.contact" ng-click="vm.openContact($event, vm.contact)" md-no-ink class="md-raised md-accent" translate="JSCRIPTY.OPEN_CONTACT"></md-button>\n    <md-button ng-if="vm.showIncompleteSubmitButton" ng-click="vm.onSubmit($event, true)" md-no-ink class="md-raised md-accent green-bg" translate="JSCRIPTY.SUBMIT"></md-button>\n  </div>\n  <h1 ng-if="!vm.project.formData"><span translate="JSCRIPTY.PROJECT_NOT_AVAILABLE">Project is not available. Please contact the administrator</span></h1>\n  <mw-form-viewer ng-if="vm.project.formData" form-data="vm.project.formData" response-data="vm.project.responseData" on-submit="vm.onSubmit($event)" template-data="call" api="vm.formViewer"></mw-form-viewer>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/agent/notification/dialog.html",'\x3c!-- <md-toast> --\x3e\n<div class="md-padding" layout="column" layout-align="center center">\n  <span class="md-title">#{{vm.notification.id}} {{vm.notification.title}}</span>\n  <span class="md-subhead" ng-if="vm.notification.queue">{{vm.notification.queue}}</span>\n  <div class="padding-top-5" layout="row">\n    <md-button class="md-raised md-accent" ng-click="vm.accept($event)" translate="DASHBOARDS.ACCEPT">\n      ACCEPT\n    </md-button>\n    <md-button class="md-raised md-warn" ng-click="vm.reject($event)" translate="DASHBOARDS.REJECT">\n      REJECT\n    </md-button>\n  </div>\n</div>\n\x3c!-- </md-toast> --\x3e'),e.put("app/main/apps/dashboards/views/general/agent/popup/agent.general.popup.html",'<md-content class="md-padding" flex>\n  <div ng-if="vm.html" ng-bind-html="vm.html"></div>\n  <h1 ng-if="!vm.html">Template is empty. Please contact the administrator</h1>\n</md-content>'),e.put("app/main/apps/dashboards/views/general/user/chat/user.general.chat.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-hangouts" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_MANAGED_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_MANAGED_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_MANAGED_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ABANDONED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.ABANDONED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDONED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/dialer/user.general.dialer.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_MOTION_BULL_STATS">Today Motion Bull STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{(vm.inbound.talking || 0) + (vm.inbound.pTalking || 0)}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayCallersExit || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.outboundDropCallsDayTimeout || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROPPED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.DROPPED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROPPED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.originated || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.ORIGINATED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundanswerRate || 0 |number : 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundAbandonRate || 0}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.outboundDropRate }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.DROP_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.DROP_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.DROP_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e\n\n\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_IVR_CAMPAIGNS_STATS">Today IVR campaigns stats</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.ivr.originated || 0}}/{{vm.ivr.limitCalls || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.ORIGINATED\' | translate | uppercase}}/{{\'DASHBOARDS.LIMITED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.LIMITED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ORIGINATEDLIMITED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET IVR --\x3e'),e.put("app/main/apps/dashboards/views/general/user/fax/user.general.fax.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-deskphone" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/mail/user.general.mail.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-email" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/openchannel/user.general.openchannel.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-google-earth" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/sms/user.general.sms.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-message-text" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/user.general.html",'<div id="dashboard-general" ng-init="vm.onInit()" class="page-layout simple right-sidenav" layout="row">\n  \x3c!-- CENTER --\x3e\n  <div class="center" flex>\n    \x3c!-- CONTENT --\x3e\n    <div class="content">\n      <md-tabs ng-if="vm.hasDashboardPermissions" md-selected="vm.selectedTab" md-dynamic-height>\n        <md-tab ng-if="vm.license.voice" label="{{\'DASHBOARDS.VOICE\' | translate}}" ui-sref="app.dashboards.general.voice">\n          <div ui-view="voice"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.dialer" label="{{\'DASHBOARDS.MOTIONDIALER\' | translate}}" ui-sref="app.dashboards.general.dialer">\n          <div ui-view="dialer"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.chat" label="{{\'DASHBOARDS.CHAT\' | translate}}" ui-sref="app.dashboards.general.chat">\n          <div ui-view="chat"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.mail" label="{{\'DASHBOARDS.MAIL\' | translate}}" ui-sref="app.dashboards.general.mail">\n          <div ui-view="mail"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.messaging" label="{{\'DASHBOARDS.SMS\' | translate}}" ui-sref="app.dashboards.general.sms">\n          <div ui-view="sms"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.openchannel" label="{{\'DASHBOARDS.OPENCHANNEL\' | translate}}" ui-sref="app.dashboards.general.openchannel">\n          <div ui-view="openchannel"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.fax" label="{{\'DASHBOARDS.FAX\' | translate}}" ui-sref="app.dashboards.general.fax">\n          <div ui-view="fax"></div>\n        </md-tab>\n        <md-tab ng-if="vm.license.whatsapp" label="{{\'DASHBOARDS.WHATSAPP\' | translate}}" ui-sref="app.dashboards.general.whatsapp">\n          <div ui-view="whatsapp"></div>\n        </md-tab>\n      </md-tabs>\n    </div>\n    \x3c!-- END CONTENT --\x3e\n\n    <md-content ng-if="!vm.hasDashboardPermissions" layout="row" layout-align="space-around center" flex layout-padding layout-wrap>\n      <div layout="column" layout-align="space-around center" flex="50">\n        <span class="font-size-40 text-center">{{ \'DASHBOARDS.WELCOME_TO_MOTION\' | translate }}!</span>\n        <span class="font-size-30 text-center" translate="DASHBOARDS.WELCOME_MESSAGE">Use the left sidebar to\n          navigate through available sections.</span>\n      </div>\n\n      <div layout="column" flex="50">\n        <img src="assets/images/avatars/permissions.png" alt="permissions">\n      </div>\n    </md-content>\n  </div>\n</div>'),e.put("app/main/apps/dashboards/views/general/user/voice/user.general.voice.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-incoming" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INBOUND_STATS">Today Inbound STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timelapse"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TALKING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TALKING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TALKING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-missed"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-52 line-height-72">\n            {{vm.inbound.abandoned || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDONED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDONED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ABANDONED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-incoming"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-timer-sand"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-in-talk"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgTalkTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_AVG_TALK_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_AVG_TALK_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_ABANDON_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_ABANDON_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.ABANDON_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-dots"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.VOICE_UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.VOICE_UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.VOICE_UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e\n\n\x3c!-- WIDGET OUTBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-phone-outgoing" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_OUTBOUND_STATS">Today Outbound STATS</div>\n  </div>\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone-outgoing"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.outbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.outbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-clock"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-42 line-height-72">\n            {{vm.outbound.sumDuration || 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOT_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.TOT_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOT_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-division"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? ((vm.outbound.sumDuration / vm.outbound.total) | number: 0) : 0 | secToTime | date:\'HH:mm:ss\'}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_DURATION\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_DURATION_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_DURATION\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-button style="cursor:auto" class="md-icon-button" aria-label="more">\n            <md-icon md-font-icon="icon-percent"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-42 line-height-72">\n            {{vm.outbound.total ? (vm.outbound.answered / vm.outbound.total * 100) : 0 | number: 1}}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.OUTBOUND_ANSWER_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OUTBOUND_ANSWER_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET OUTBOUND --\x3e'),e.put("app/main/apps/dashboards/views/general/user/whatsapp/user.general.whatsapp.html",'\x3c!-- WIDGET INBOUND --\x3e\n<div class="dashboard-container md-background-bg md-whiteframe-1dp">\n  <div class="pb-16" layout="row" layout-align="start center">\n    <md-icon md-font-icon="icon-whatsapp" class="m-0 mr-16"></md-icon>\n    <div class="h2 secondary-text" translate="DASHBOARDS.TODAY_INTERACTIONS_STATS">Today Interactions STATS</div>\n  </div>\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-52 line-height-72">\n            {{vm.inbound.waiting || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.WAITING\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.WAITING_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.WAITING\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n    \x3c!-- WIDGET 3 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="orange-fg font-size-52 line-height-72">\n            {{vm.inbound.talking || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.OPENED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 orange-fg secondary-text text-truncate">{{\'DASHBOARDS.OPENED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.OPENED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 3 --\x3e\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-52 line-height-72">\n            {{vm.inbound.answered || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.unmanaged || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-green-fg font-size-52 line-height-72">\n            {{vm.inbound.total || 0}}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.TOTAL_OFFERED\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-green-fg secondary-text text-truncate">{{\'DASHBOARDS.TOTAL_OFFERED_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.TOTAL_OFFERED\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n\n  \x3c!-- WIDGET GROUP --\x3e\n  <div class="widget-group" layout="row" flex="100" layout-wrap>\n    \x3c!-- WIDGET 1 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="50">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="light-blue-fg font-size-42 line-height-72">\n            {{ vm.inbound.avgHoldTime || \'00:00:00\' }}\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.AVG_HOLD_TIME\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 light-blue-fg secondary-text text-truncate">{{\'DASHBOARDS.AVG_HOLD_TIME_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.AVG_HOLD_TIME\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 1 --\x3e\n\n\n    \x3c!-- WIDGET 2 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="ph-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="red-fg font-size-42 line-height-72">\n            {{ vm.inbound.answerRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.MANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 red-fg secondary-text text-truncate">{{\'DASHBOARDS.MANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.MANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 2 --\x3e\n\n    \x3c!-- WIDGET 4 --\x3e\n    <ms-widget flippable="true" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n      \x3c!-- Front --\x3e\n      <ms-widget-front class="grey-50-bg">\n        <div class="pl-16 pr-8 pv-16 h-55" layout="row" layout-align="space-between center">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="more">\n            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n        </div>\n\n        <div class="pt-8 pb-32" layout="column" layout-align="center center">\n          <div class="blue-grey-fg font-size-42 line-height-72">\n            {{ vm.inbound.abandonRate || 0 }}%\n          </div>\n          <div class="h3 secondary-text font-weight-500">{{\'DASHBOARDS.UNMANAGED_RATE\' | translate | uppercase}}</div>\n        </div>\n\n        <div class="p-16 grey-200-bg text-center border-top" layout-align="start center">\n          <span class="h6 blue-grey-fg secondary-text text-truncate">{{\'DASHBOARDS.UNMANAGED_RATE_TEXT\' | translate | uppercase}}</span>\n        </div>\n      </ms-widget-front>\n      \x3c!-- / Front --\x3e\n\n      \x3c!-- Back --\x3e\n      <ms-widget-back class="p-16 grey-50-bg">\n        <div class="flip-to-front">\n          <md-button class="md-icon-button" ng-click="flipWidget()" aria-label="Flip widget">\n            <md-icon md-font-icon="icon-close" class="s16"></md-icon>\n          </md-button>\n        </div>\n\n        <div>\n          {{\'DASHBOARDS.HELP.UNMANAGED_RATE\' | translate}}\n        </div>\n      </ms-widget-back>\n      \x3c!-- / Back --\x3e\n\n    </ms-widget>\n    \x3c!-- / WIDGET 4 --\x3e\n\n\n  </div>\n  \x3c!-- / WIDGET GROUP --\x3e\n</div>\n\x3c!-- / WIDGET INBOUND --\x3e'),e.put("app/main/apps/fax/views/faxAccounts/create/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="faxAccountForm[\'name\'].$error" ng-show="faxAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="faxAccountForm[\'key\'].$error" ng-show="faxAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUNK">trunk</label>\n        <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'TrunkId\'].$error" ng-show="faxAccountForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LOCALSTATIONID">localstationid</label>\n        <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true">\n\n        <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n        <div ng-messages="faxAccountForm[\'localstationid\'].$error" ng-show="faxAccountForm[\'localstationid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.faxAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountForm[\'ListId\'].$error" ng-show="faxAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxAccount.description">\n\n        <div ng-messages="faxAccountForm[\'description\'].$error" ng-show="faxAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxAccount" ng-click="vm.saveFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid || faxAccountForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxAccount" ng-click="vm.addNewFaxAccount()" class="send-button md-accent md-raised" ng-disabled="faxAccountForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXACCOUNT" translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n          ADD FAXACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxAccount" ng-click="vm.deleteFaxAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/agentadd/agentadd.html",'<md-dialog class="faxAccount-dialog" aria-label="faxAccount" ng-init="vm.onInit()">\n  <form name="faxAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXACCOUNT">Add Agent to faxAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/agent/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'agent\'].$error" ng-show="faxAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/close/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'disposition\'].$error" ng-show="faxAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'condition\'].$error" ng-show="faxAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'truepriority\'].$error" ng-show="faxAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'falsepriority\'].$error" ng-show="faxAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'priority\'].$error" ng-show="faxAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/noop/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'value\'].$error" ng-show="faxAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/queue/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'queue\'].$error" ng-show="faxAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'timeout\'].$error" ng-show="faxAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/system/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="faxAccountFormApp[\'command\'].$error" ng-show="faxAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'variable\'].$error" ng-show="faxAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/apps/tag/dialog.html",'<md-dialog class="faxAccount-dialog" aria-label="New FaxAccount">\n  <form name="faxAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="faxAccountFormApp[\'tag\'].$error" ng-show="faxAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveFaxAccountApp()" class="send-button md-accent md-raised" ng-disabled="faxAccountFormApp.$invalid || faxAccountFormApp.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxAccounts/edit/view.html",'<div id="fax-faxAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxAccounts-button md-icon-button" aria-label="Go to faxAccounts" ng-click="vm.gotoFaxAccounts()" translate translate-attr-aria-label="FAX.GO_TO_FAXACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxAccount-image" hide-xs>\n          <img ng-src="assets/images/business/faxAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxAccount.id}}\n            <span ng-if="vm.faxAccount.name">{{vm.faxAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="FAX.GOTO_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (advancedForm.$invalid) || (dispositionForm.$invalid) || (faxDispositionsForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.faxAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="FAX.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.HEADERINFO">headerinfo</label>\n                <input type="text" name="headerinfo" ng-model="vm.faxAccount.headerinfo" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.HEADERINFO"></span></div>\n                <div ng-messages="generalForm[\'headerinfo\'].$error" ng-show="generalForm[\'headerinfo\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.HEADERINFO_REQUIRED">headerinfo field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.TRUNK">trunk</label>\n                <md-select name="TrunkId" ng-model="vm.faxAccount.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.TRUNK_REQUIRED">trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LOCALSTATIONID">localstationid</label>\n                <input type="text" name="localstationid" ng-model="vm.faxAccount.localstationid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.LOCALSTATIONID"></span></div>\n                <div ng-messages="generalForm[\'localstationid\'].$error" ng-show="generalForm[\'localstationid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LOCALSTATIONID_REQUIRED">localstationid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.faxAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.faxAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="FAX.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.faxAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.queueTransfer == true" class="md-block">\n                <label translate="FAX.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.faxAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.agentTransfer == true" class="md-block">\n                <label translate="FAX.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.faxAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.ECM">ECM</label>\n                <md-select name="ecm" ng-model="vm.faxAccount.ecm" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.ECM"></span></div>\n                <div ng-messages="advancedForm[\'ecm\'].$error" ng-show="advancedForm[\'ecm\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.ECM_REQUIRED">ECM field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MINRATE">minrate</label>\n                <md-select name="minrate" ng-model="vm.faxAccount.minrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MINRATE"></span></div>\n                <div ng-messages="advancedForm[\'minrate\'].$error" ng-show="advancedForm[\'minrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MINRATE_REQUIRED">minrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MAXRATE">maxrate</label>\n                <md-select name="maxrate" ng-model="vm.faxAccount.maxrate" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'2400\'">2400</md-option>\n                  <md-option ng-value="\'4800\'">4800</md-option>\n                  <md-option ng-value="\'7200\'">7200</md-option>\n                  <md-option ng-value="\'9600\'">9600</md-option>\n                  <md-option ng-value="\'12000\'">12000</md-option>\n                  <md-option ng-value="\'14400\'">14400</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MAXRATE"></span></div>\n                <div ng-messages="advancedForm[\'maxrate\'].$error" ng-show="advancedForm[\'maxrate\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MAXRATE_REQUIRED">maxrate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.MODEM">modem</label>\n                <input type="text" name="modem" ng-model="vm.faxAccount.modem" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.MODEM"></span></div>\n                <div ng-messages="advancedForm[\'modem\'].$error" ng-show="advancedForm[\'modem\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MODEM_REQUIRED">modem field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.GATEWAY">gateway</label>\n                <input type="text" name="gateway" ng-model="vm.faxAccount.gateway" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.GATEWAY"></span></div>\n                <div ng-messages="advancedForm[\'gateway\'].$error" ng-show="advancedForm[\'gateway\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.GATEWAY_REQUIRED">gateway field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.FAXDETECT">faxdetect</label>\n                <input type="text" name="faxdetect" ng-model="vm.faxAccount.faxdetect" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.FAXDETECT"></span></div>\n                <div ng-messages="advancedForm[\'faxdetect\'].$error" ng-show="advancedForm[\'faxdetect\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.FAXDETECT_REQUIRED">faxdetect field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.T38TIMEOUT">t38timeout</label>\n                <input type="number" name="t38timeout" ng-model="vm.faxAccount.t38timeout" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="FAX.HELP.T38TIMEOUT"></span></div>\n                <div ng-messages="advancedForm[\'t38timeout\'].$error" ng-show="advancedForm[\'t38timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.T38TIMEOUT_REQUIRED">t38timeout field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.SIP">SIP</label>\n                <md-select name="tech" ng-model="vm.faxAccount.tech" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SIP\'">SIP</md-option>\n                  <md-option ng-value="\'IAX\'">IAX</md-option>\n                  <md-option ng-value="\'DADHI\'">DADHI</md-option>\n                  <md-option ng-value="\'KHOMP\'">KHOMP</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'tech\'].$error" ng-show="advancedForm[\'tech\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.SIP_REQUIRED">SIP field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="faxAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.faxAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="FAX.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.faxAccount.mandatoryDisposition" class="md-block">\n                <label translate="FAX.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.faxAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="FAX.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="FaxAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="faxAccount-detail-form-container faxdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="FAX.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add fax dispositions" translate translate-attr-label="FAX.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="faxAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.faxAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="FAX.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedFaxAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedFaxAccountApps.length}} {{vm_ac.selectedFaxAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedFaxAccountApps($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedFaxAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.faxAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editFaxAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editFaxAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.faxAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="FaxAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.faxAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="FAX.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getFaxAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getFaxAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getFaxAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="FAX.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedFaxAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedFaxAccountInteractions.length}} {{vm_dc.selectedFaxAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedFaxAccountInteractions" csv-label="true" filename="faxAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedFaxAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedFaxAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getFaxAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'FAX.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'FAX.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'FAX.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'FAX.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'FAX.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'FAX.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'FAX.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.faxAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'FAX.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'FAX.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyfaxInteraction($event, interaction)" translate="FAX.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.faxInteractionDownload(interaction, $event)" translate="FAX.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="FAX.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.faxAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="FAX.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.faxAccountInteractions.count}}" md-on-paginate="vm_dc.getFaxAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxAccounts/faxAccounts.html",'<div id="faxAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXACCOUNTS">FaxAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxAccounts-count">\n          <span>{{vm.selectedFaxAccounts.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxAccounts()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxAccounts()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxAccounts" csv-label="true" filename="faxAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxAccounts($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'FAX.KEY\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'FAX.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="localstationid">{{ \'FAX.LOCALSTATIONID\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'FAX.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxAccount" md-select-id="id" ng-repeat="faxAccount in vm.faxAccounts.rows">\n                <td md-cell ng-if="faxAccount.userpic"><img class="avatar" alt="{{faxAccount.name}}" ng-src="api/users/{{faxAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="id ">{{faxAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="name ">{{faxAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="key ">{{faxAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':faxAccount.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="localstationid ">{{faxAccount.localstationid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxAccount, ev) : vm.createOrEditFaxAccount($event, faxAccount)" md-cell class="description ">{{faxAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxAccount, $event    )" translate="FAX.EDIT_FAXACCOUNT">\n                          Edit FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(faxAccount, $event    )" translate="FAX.INTERACTIONS_FAXACCOUNT">\n                          Interactions FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxAccount, $event    )" translate="FAX.GOTOREALTIME_FAXACCOUNT">\n                          goToRealtime FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxAccount, $event    )" translate="FAX.AGENTADD_FAXACCOUNT">\n                          AgentAdd FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxAccount, $event    )" translate="FAX.DELETE_FAXACCOUNT">\n                          Delete FaxAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxAccounts.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxAccount-button" ng-click="vm.createOrEditFaxAccount($event)" aria-label="add faxAccount" translate translate-attr-aria-label="FAX.ADD_FAXACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/faxQueues/create/dialog.html",'<md-dialog class="faxQueue-dialog" aria-label="New FaxQueue">\n  <form name="faxQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="FAX.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newFaxQueue">\n\n        <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n        <div ng-messages="faxQueueForm[\'name\'].$error" ng-show="faxQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.faxQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="faxQueueForm[\'strategy\'].$error" ng-show="faxQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="faxQueueForm[\'timeout\'].$error" ng-show="faxQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="FAX.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.faxQueue.description">\n\n        <div ng-messages="faxQueueForm[\'description\'].$error" ng-show="faxQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFaxQueue" ng-click="vm.saveFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid || faxQueueForm.$pristine" aria-label="SAVE" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFaxQueue" ng-click="vm.addNewFaxQueue()" class="send-button md-accent md-raised" ng-disabled="faxQueueForm.$invalid" aria-label="ADD" translate="FAX.ADD_FAXQUEUE" translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n          ADD FAXQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFaxQueue" ng-click="vm.deleteFaxQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="FAX.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="FAX.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/agentadd/agentadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.AGENTADD_FAXQUEUE">Add Agent to faxQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/teamadd/teamadd.html",'<md-dialog class="faxQueue-dialog" aria-label="faxQueue" ng-init="vm.onInit()">\n  <form name="faxQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="FAX.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/fax/views/faxQueues/edit/view.html",'<div id="fax-faxQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-faxQueues-button md-icon-button" aria-label="Go to faxQueues" ng-click="vm.gotoFaxQueues()" translate translate-attr-aria-label="FAX.GO_TO_FAXQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="faxQueue-image" hide-xs>\n          <img ng-src="assets/images/business/faxQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.faxQueue.id}}\n            <span ng-if="vm.faxQueue.name">{{vm.faxQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="FAX.CREATED_AT"></span> <span>{{vm.faxQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.faxQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="FAX.TEAMADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.faxQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="FAX.AGENTADD_FAXQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFaxQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="FAX.SAVE" translate-attr-aria-label="FAX.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="faxQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="FAX.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="FAX.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.faxQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="FAX.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="FAX.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.faxQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.faxQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="FAX.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="FAX.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.faxQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="FAX.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/fax/views/faxQueues/faxQueues.html",'<div id="faxQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-deskphone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="FAX.FAXQUEUES">FaxQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="FAX.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFaxQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFaxQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="FAX.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-faxQueues-count">\n          <span>{{vm.selectedFaxQueues.length}}</span>\n          <span translate="FAX.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="FAX.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFaxQueues()" translate="FAX.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFaxQueues()" translate="FAX.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFaxQueues" csv-label="true" filename="faxQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFaxQueues($event)" aria-label="delete selected" translate translate-attr-label="FAX.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FAXQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFaxQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'FAX.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'FAX.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.faxQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="faxQueue" md-select-id="id" ng-repeat="faxQueue in vm.faxQueues.rows">\n                <td md-cell ng-if="faxQueue.userpic"><img class="avatar" alt="{{faxQueue.name}}" ng-src="api/users/{{faxQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!faxQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{faxQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="id ">{{faxQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="name ">{{faxQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(faxQueue, ev) : vm.createOrEditFaxQueue($event, faxQueue)" md-cell class="strategy ">{{ vm.arraystrategy[faxQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="FAX.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(faxQueue, $event    )" translate="FAX.EDIT_FAXQUEUE">\n                          Edit FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(faxQueue, $event    )" translate="FAX.TEAMADD_FAXQUEUE">\n                          teamadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(faxQueue, $event    )" translate="FAX.AGENTADD_FAXQUEUE">\n                          agentadd FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(faxQueue, $event    )" translate="FAX.DELETE_FAXQUEUE">\n                          Delete FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(faxQueue, $event    )" translate="FAX.GOTOREALTIME_FAXQUEUE">\n                          goToRealtime FaxQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.faxQueues.count}}" md-on-paginate="vm.getFaxQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FAXQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FAXQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-faxQueue-button" ng-click="vm.createOrEditFaxQueue($event)" aria-label="add faxQueue" translate translate-attr-aria-label="FAX.ADD_FAXQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FAXQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getFaxAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFaxAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate}}</th>\n        <th md-column>{{\'FAX.KEY\' | translate}}</th>\n        <th md-column>{{\'FAX.TOTAL\' | translate}}</th>\n        <th md-column>{{\'FAX.IN\' | translate}}</th>\n        <th md-column>{{\'FAX.OUT\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.faxAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.faxAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.faxAccounts[value].name}}</td>\n        <td md-cell>{{vm.faxAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.faxAccounts[value].in || 0) + (vm.faxAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.faxAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.faxAccounts[value].lastIn ?  (vm.faxAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.faxAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.faxAccounts[value].lastOut ?  (vm.faxAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToFaxAccount($event, vm.faxAccounts[value])" translate="FAX.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getFaxAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/fax/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="FAX.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/fax/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="FAX.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'FAX.NAME\' | translate }}</th>\n          <th md-column>{{ \'FAX.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'FAX.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="FAX.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'FAX.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'FAX.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="FAX.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="FAX.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'FAX.PAGE\' | translate}}:\', rowsPerPage: \'{{\'FAX.ROWSPERPAGE\' | translate}}:\', of: \'{{\'FAX.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/help/views/about/about.html",'<div id="maintenance" class="flex-scrollable" layout="column">\n  <div id="maintenance-form-wrapper" layout="column" layout-align="center center">\n    <div id="maintenance-form" class="md-whiteframe-8dp">\n      <div>\n        <img src="/api/settings/1/logo_login" alt="logo_login" />\n      </div>\n\n      <br>\n\n      <div>\n        <div class="info-line">\n          <div class="title">Useful pages</div>\n        </div>\n        <section layout="row" flex layout-sm="column" layout-align="center center" layout-wrap>\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button grey-bg" href="https://wiki.xcallymotion.com/display/XMV" target="_blank">\n              <md-icon md-font-icon="icon-wikipedia"></md-icon>\n            </a>\n            <div class="info"><a href="https://wiki.xcallymotion.com/display/XMV" target="_blank">Wiki</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button md-accent" href="/apidoc" target="_blank">\n              <md-icon md-font-icon="icon-apple-mobileme"></md-icon>\n            </a>\n            <div class="info"><a href="/apidoc" target="_blank">Motion API</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button orange-bg" href="http://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">\n              <md-icon md-font-icon="icon-headphones"></md-icon>\n            </a>\n            <div class="info"><a href="https://www.xcally.com/bar/phonebar/Setup.msi" target="_blank">Phonebar Download</a></div>\n          </div>\n\n          <div layout="column" flex="25" layout-align="center center">\n            <a class="md-fab md-mini md-button green-bg" href="/demo" target="_blank">\n              <md-icon md-font-icon="icon-console"></md-icon>\n            </a>\n            <div class="info"><a href="/demo" target="_blank">Playground</a></div>\n          </div>\n\n        </section>\n\n        <br>\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title">Follow us on</div>\n        </div>\n        <section ng-if="!vm.license.custom" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n          <a class="md-fab md-mini md-button blue-900-bg" href="https://www.facebook.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-facebook"></md-icon>\n          </a>\n\n          <a class="md-fab md-mini md-button" href="https://twitter.com/xcallymotion" target="_blank">\n            <md-icon md-font-icon="icon-twitter"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button md-warn" href="https://plus.google.com/+Xcally" target="_blank">\n            <md-icon md-font-icon="icon-google-plus"></md-icon>\n          </a>\n          <a class="md-fab md-mini md-button light-blue-800-bg" href="https://www.linkedin.com/company/xcally" target="_blank">\n            <md-icon md-font-icon="icon-linkedin"></md-icon>\n          </a>\n        </section>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="title" translate="HELP.CONTACT_US">Contact Us</div>\n        </div>\n        <div class="info-line" ng-if="!vm.license.custom">\n          <div class="info"><a href="mailto:support@xcally.com" target="_top">support@xcally.com</a></div>\n        </div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info">xCALLY Motion <u>{{vm.info.current}}</u> | <a href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.info.current}}" target="_blank">Changelog</a></div>\n\n        <br>\n\n        <div class="info" ng-if="!vm.license.custom">xCALLY© 2016 - 2018 | Powered by Xenialab | <a href="http://www.xcally.com/support/eula-xcally-license-en.pdf" target="_blank">EULA</a></div>\n\n        <br ng-if="!vm.license.custom">\n\n        <div class="info" ng-if="!vm.license.custom"><a href="https://www.xenialab.com/" target="_blank">www.xenialab.com</a> | <a href="https://www.xcallymotion.com/" target="_blank">www.xcallymotion.com</a></div>\n      </div>\n    </div>\n  </div>\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/create/dialog.html",'<md-dialog class="deskAccount-dialog" aria-label="New DeskAccount">\n  <form name="deskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskAccountForm[\'name\'].$error" ng-show="deskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'type\'].$error" ng-show="deskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'remoteUri\'].$error" ng-show="deskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.deskAccount.authType" required>\n          <md-option ng-value="\'basic\'">Basic</md-option>\n        </md-select>\n        <div ng-messages="deskAccountForm[\'authType\'].$error" ng-show="deskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true">\n\n        <div ng-messages="deskAccountForm[\'username\'].$error" ng-show="deskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="deskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="deskAccountForm[\'serverUrl\'].$error" ng-show="deskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.deskAccount.description">\n\n        <div ng-messages="deskAccountForm[\'description\'].$error" ng-show="deskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskAccount" ng-click="vm.saveDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid || deskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskAccount" ng-click="vm.addNewDeskAccount()" class="send-button md-accent md-raised" ng-disabled="deskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n          ADD DESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskAccount" ng-click="vm.deleteDeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/deskAccounts.html",'<div id="deskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DESKACCOUNTS">DeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-deskAccounts-count">\n          <span>{{vm.selectedDeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDeskAccounts" csv-label="true" filename="deskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.deskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="deskAccount" md-select-id="id" ng-repeat="deskAccount in vm.deskAccounts.rows">\n                <td md-cell ng-if="deskAccount.userpic"><img class="avatar" alt="{{deskAccount.name}}" ng-src="api/users/{{deskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!deskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{deskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="id ">{{deskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="name ">{{deskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="remoteUri ">{{deskAccount.remoteUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(deskAccount, ev) : vm.createOrEditDeskAccount($event, deskAccount)" md-cell class="username ">{{deskAccount.username}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(deskAccount, $event    )" translate="INTEGRATIONS.EDIT_DESKACCOUNT">\n                          Edit DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(deskAccount, $event    )" translate="INTEGRATIONS.TEST_DESKACCOUNT">\n                          Test DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(deskAccount, $event    )" translate="INTEGRATIONS.DELETE_DESKACCOUNT">\n                          Delete DeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.deskAccounts.count}}" md-on-paginate="vm.getDeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-deskAccount-button" ng-click="vm.createOrEditDeskAccount($event)" aria-label="add deskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_DESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/configurations/dialog.html",'<md-dialog class="deskConfiguration-dialog" aria-label="New DeskConfiguration">\n  <form name="deskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.deskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="deskConfigurationForm[\'name\'].$error" ng-show="deskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.deskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'channel\'].$error" ng-show="deskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.deskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="deskConfigurationForm[\'type\'].$error" ng-show="deskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDeskConfiguration" ng-click="vm.saveDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid || deskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDeskConfiguration" ng-click="vm.addNewDeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="deskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DESKCONFIGURATION">\n          ADD DESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDeskConfiguration" ng-click="vm.deleteDeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/item/dialog.html",'<md-dialog class="deskAccount-item-dialog" aria-label="New Item">\n  <form name="deskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.key.$error" ng-show="deskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.keyType.$error" ng-show="deskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="deskAccountItemForm.keyContent.$error" ng-show="deskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="deskAccountItemForm.customField.$error" ng-show="deskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="deskAccountItemForm.$invalid || deskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="deskAccountItemForm.option.$error" ng-show="deskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="deskAccountItemForm.content.$error" ng-show="deskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="deskAccountItemForm.variableName.$error" ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="deskAccountItemForm.type.$error" ng-show="deskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="deskAccountItemForm.content.$error"\n          ng-show="deskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="deskAccountItemForm.variableName.$error"\n          ng-show="deskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/deskAccounts/edit/view.html",'<div id="integrations-deskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-deskAccounts-button md-icon-button" aria-label="Go to deskAccounts" ng-click="vm.gotoDeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="deskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/deskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.deskAccount.id}}\n            <span ng-if="vm.deskAccount.name">{{vm.deskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.deskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.deskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.deskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.deskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.deskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'basic\'">Basic</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.deskAccount.authType == \'basic\'" class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.deskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.deskAccount.authType == \'basic\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.deskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.deskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.deskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="deskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="DeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.deskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" class="md-icon-button" aria-label="create deskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="deskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ deskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDeskConfiguration($event, deskConfiguration)" translate="INTEGRATIONS.DELETE_DESKCONFIGURATION">\n                            Delete DeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/create/dialog.html",'<md-dialog class="dynamics365Account-dialog" aria-label="New Dynamics365Account">\n  <form name="dynamics365AccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365AccountForm[\'name\'].$error" ng-show="dynamics365AccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true">\n\n        <div ng-messages="dynamics365AccountForm[\'username\'].$error" ng-show="dynamics365AccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="true">\n          <div ng-messages="dynamics365AccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.URI">Uri</label>\n          <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'remoteUri\'].$error" ng-show="dynamics365AccountForm[\'remoteUri\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n          <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'tenantId\'].$error" ng-show="dynamics365AccountForm[\'tenantId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n          <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientId\'].$error" ng-show="dynamics365AccountForm[\'clientId\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n          <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="true">\n\n          <div ng-messages="dynamics365AccountForm[\'clientSecret\'].$error" ng-show="dynamics365AccountForm[\'clientSecret\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n          <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="true">\n\n          <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n          <div ng-messages="dynamics365AccountForm[\'serverUrl\'].$error" ng-show="dynamics365AccountForm[\'serverUrl\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n            </div>\n            <div ng-message="url">\n              <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n            </div>\n          </div>\n        </md-input-container>\n\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.dynamics365Account.description">\n\n        <div ng-messages="dynamics365AccountForm[\'description\'].$error" ng-show="dynamics365AccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Account" ng-click="vm.saveDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid || dynamics365AccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Account" ng-click="vm.addNewDynamics365Account()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n          ADD DYNAMICS365ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Account" ng-click="vm.deleteDynamics365Account($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/dynamics365Accounts.html",'<div id="dynamics365Accounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.DYNAMICS365ACCOUNTS">Dynamics365Accounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDynamics365Accounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedDynamics365Accounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-dynamics365Accounts-count">\n          <span>{{vm.selectedDynamics365Accounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDynamics365Accounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDynamics365Accounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDynamics365Accounts" csv-label="true" filename="dynamics365Accounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDynamics365Accounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- DYNAMICS365ACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedDynamics365Accounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDynamics365Accounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.dynamics365Accounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="dynamics365Account" md-select-id="id" ng-repeat="dynamics365Account in vm.dynamics365Accounts.rows">\n                <td md-cell ng-if="dynamics365Account.userpic"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="api/users/{{dynamics365Account.id}}/avatar" /></td>\n                <td md-cell ng-if="!dynamics365Account.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{dynamics365Account.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="id ">{{dynamics365Account.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="name ">{{dynamics365Account.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(dynamics365Account, ev) : vm.createOrEditDynamics365Account($event, dynamics365Account)" md-cell class="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(dynamics365Account, $event    )" translate="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT">\n                          Edit Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(dynamics365Account, $event    )" translate="INTEGRATIONS.TEST_DYNAMICS365ACCOUNT">\n                          Test Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(dynamics365Account, $event    )" translate="INTEGRATIONS.DELETE_DYNAMICS365ACCOUNT">\n                          Delete Dynamics365Account\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dynamics365Accounts.count}}" md-on-paginate="vm.getDynamics365Accounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / DYNAMICS365ACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-dynamics365Account-button" ng-click="vm.createOrEditDynamics365Account($event)" aria-label="add dynamics365Account" translate translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365ACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DYNAMICS365ACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/configurations/dialog.html",'<md-dialog class="dynamics365Configuration-dialog" aria-label="New Dynamics365Configuration">\n  <form name="dynamics365ConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.dynamics365Configuration.name" ng-required="true" autofocus>\n\n        <div ng-messages="dynamics365ConfigurationForm[\'name\'].$error" ng-show="dynamics365ConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.dynamics365Configuration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'channel\'].$error" ng-show="dynamics365ConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dynamics365Configuration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'type\'].$error" ng-show="dynamics365ConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.dynamics365Configuration.ticketType" required>\n\n          <md-option ng-value="\'incident\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n\n          <md-option ng-value="\'phonecall\'"> {{ \'INTEGRATIONS.PHONECALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dynamics365ConfigurationForm[\'ticketType\'].$error" ng-show="dynamics365ConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDynamics365Configuration" ng-click="vm.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid || dynamics365ConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDynamics365Configuration" ng-click="vm.addNewDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="dynamics365ConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_DYNAMICS365CONFIGURATION">\n          ADD DYNAMICS365CONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDynamics365Configuration" ng-click="vm.deleteDynamics365Configuration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/item/dialog.html",'<md-dialog class="dynamics365Account-item-dialog" aria-label="New Item">\n  <form name="dynamics365AccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.key.$error" ng-show="dynamics365AccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.keyType.$error" ng-show="dynamics365AccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="dynamics365AccountItemForm.keyContent.$error" ng-show="dynamics365AccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="dynamics365AccountItemForm.customField.$error" ng-show="dynamics365AccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="dynamics365AccountItemForm.$invalid || dynamics365AccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="dynamics365AccountItemForm.option.$error" ng-show="dynamics365AccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="dynamics365AccountItemForm.content.$error" ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="dynamics365AccountItemForm.variableName.$error" ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="dynamics365AccountItemForm.type.$error" ng-show="dynamics365AccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="dynamics365AccountItemForm.content.$error"\n          ng-show="dynamics365AccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="dynamics365AccountItemForm.variableName.$error"\n          ng-show="dynamics365AccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/dynamics365Accounts/edit/view.html",'<div id="integrations-dynamics365Account" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-dynamics365Accounts-button md-icon-button" aria-label="Go to dynamics365Accounts" ng-click="vm.gotoDynamics365Accounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_DYNAMICS365ACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="dynamics365Account-image" hide-xs>\n          <img ng-src="assets/images/business/dynamics365Accounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.dynamics365Account.id}}\n            <span ng-if="vm.dynamics365Account.name">{{vm.dynamics365Account.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.dynamics365Account.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveDynamics365Account()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.dynamics365Account.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                  <input type="password" name="password" ng-model="vm.dynamics365Account.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" ng-required="vm.dynamics365Account.modernAuthentication == false">\n                  <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                    </div>\n                    <div ng-message="pattern">\n                      <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.URI">Uri</label>\n                  <input type="url" name="remoteUri" ng-model="vm.dynamics365Account.remoteUri" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.TENANTID">TenantId</label>\n                  <input type="text" name="tenantId" ng-model="vm.dynamics365Account.tenantId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'tenantId\'].$error" ng-show="generalForm[\'tenantId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.TENANTID_REQUIRED">TenantId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                  <input type="text" name="clientId" ng-model="vm.dynamics365Account.clientId" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                  <input type="text" name="clientSecret" ng-model="vm.dynamics365Account.clientSecret" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                    </div>\n                  </div>\n                </md-input-container>\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                  <input type="url" name="serverUrl" ng-model="vm.dynamics365Account.serverUrl" value="LOCALIP" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                  <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                    <div ng-message="required">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                    </div>\n                    <div ng-message="url">\n                      <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                    </div>\n                  </div>\n                </md-input-container>\n\n              </div>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.dynamics365Account.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="dynamics365Account-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="Dynamics365AccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.dynamics365Account, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" class="md-icon-button" aria-label="create dynamics365Configuration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="dynamics365Configuration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedDynamics365Configuration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getDynamics365Configuration($index)">\n                    <span class="text-truncate" flex="80">{{ dynamics365Configuration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteDynamics365Configuration($event, dynamics365Configuration)" translate="INTEGRATIONS.DELETE_DYNAMICS365CONFIGURATION">\n                            Delete Dynamics365Configuration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_REQUIRED">Type field is required</span>\n                              </div>\n                            </div>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <md-switch ng-model="vm_cc.dynamics365Configuration.openNewTab">\n                              <span translate="INTEGRATIONS.OPENNEWTAB">Open new tab</span>\n                            </md-switch>\n                          </md-input-container>\n\n\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditDynamics365Configuration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n          </div>\n\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/create/dialog.html",'<md-dialog class="freshdeskAccount-dialog" aria-label="New FreshdeskAccount">\n  <form name="freshdeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskAccountForm[\'name\'].$error" ng-show="freshdeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'username\'].$error" ng-show="freshdeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'remoteUri\'].$error" ng-show="freshdeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshdeskAccountForm[\'apiKey\'].$error" ng-show="freshdeskAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshdeskAccountForm[\'serverUrl\'].$error" ng-show="freshdeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshdeskAccount.description">\n\n        <div ng-messages="freshdeskAccountForm[\'description\'].$error" ng-show="freshdeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskAccount" ng-click="vm.saveFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid || freshdeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskAccount" ng-click="vm.addNewFreshdeskAccount()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n          ADD FRESHDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskAccount" ng-click="vm.deleteFreshdeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/configurations/dialog.html",'<md-dialog class="freshdeskConfiguration-dialog" aria-label="New FreshdeskConfiguration">\n  <form name="freshdeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshdeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshdeskConfigurationForm[\'name\'].$error" ng-show="freshdeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshdeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'channel\'].$error" ng-show="freshdeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshdeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshdeskConfigurationForm[\'type\'].$error" ng-show="freshdeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshdeskConfiguration" ng-click="vm.saveFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid || freshdeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshdeskConfiguration" ng-click="vm.addNewFreshdeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshdeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKCONFIGURATION">\n          ADD FRESHDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshdeskConfiguration" ng-click="vm.deleteFreshdeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/item/dialog.html",'<md-dialog class="freshdeskAccount-item-dialog" aria-label="New Item">\n  <form name="freshdeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.key.$error" ng-show="freshdeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.keyType.$error" ng-show="freshdeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshdeskAccountItemForm.keyContent.$error" ng-show="freshdeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshdeskAccountItemForm.customField.$error" ng-show="freshdeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshdeskAccountItemForm.$invalid || freshdeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshdeskAccountItemForm.option.$error" ng-show="freshdeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshdeskAccountItemForm.content.$error" ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshdeskAccountItemForm.variableName.$error" ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshdeskAccountItemForm.type.$error" ng-show="freshdeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshdeskAccountItemForm.content.$error"\n          ng-show="freshdeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshdeskAccountItemForm.variableName.$error"\n          ng-show="freshdeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/edit/view.html",'<div id="integrations-freshdeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshdeskAccounts-button md-icon-button" aria-label="Go to freshdeskAccounts" ng-click="vm.gotoFreshdeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshdeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshdeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshdeskAccount.id}}\n            <span ng-if="vm.freshdeskAccount.name">{{vm.freshdeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshdeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshdeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshdeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshdeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshdeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshdeskAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshdeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshdeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshdeskAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshdeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshdeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" class="md-icon-button" aria-label="create freshdeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshdeskConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshdeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshdeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshdeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshdeskConfiguration($event, freshdeskConfiguration)" translate="INTEGRATIONS.DELETE_FRESHDESKCONFIGURATION">\n                            Delete FreshdeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshdeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshdeskAccounts/freshdeskAccounts.html",'<div id="freshdeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHDESKACCOUNTS">FreshdeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshdeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshdeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshdeskAccounts-count">\n          <span>{{vm.selectedFreshdeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshdeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshdeskAccounts" csv-label="true" filename="freshdeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshdeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshdeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshdeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshdeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshdeskAccount" md-select-id="id" ng-repeat="freshdeskAccount in vm.freshdeskAccounts.rows">\n                <td md-cell ng-if="freshdeskAccount.userpic"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="api/users/{{freshdeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshdeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshdeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="id ">{{freshdeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="name ">{{freshdeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="username ">{{freshdeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshdeskAccount, ev) : vm.createOrEditFreshdeskAccount($event, freshdeskAccount)" md-cell class="remoteUri ">{{freshdeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshdeskAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHDESKACCOUNT">\n                          Edit FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshdeskAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHDESKACCOUNT">\n                          Test FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshdeskAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHDESKACCOUNT">\n                          Delete FreshdeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshdeskAccounts.count}}" md-on-paginate="vm.getFreshdeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshdeskAccount-button" ng-click="vm.createOrEditFreshdeskAccount($event)" aria-label="add freshdeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/create/dialog.html",'<md-dialog class="freshsalesAccount-dialog" aria-label="New FreshsalesAccount">\n  <form name="freshsalesAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesAccountForm[\'name\'].$error" ng-show="freshsalesAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'username\'].$error" ng-show="freshsalesAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'remoteUri\'].$error" ng-show="freshsalesAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true">\n\n        <div ng-messages="freshsalesAccountForm[\'apiKey\'].$error" ng-show="freshsalesAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="freshsalesAccountForm[\'serverUrl\'].$error" ng-show="freshsalesAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.freshsalesAccount.description">\n\n        <div ng-messages="freshsalesAccountForm[\'description\'].$error" ng-show="freshsalesAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesAccount" ng-click="vm.saveFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid || freshsalesAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesAccount" ng-click="vm.addNewFreshsalesAccount()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n          ADD FRESHSALESACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesAccount" ng-click="vm.deleteFreshsalesAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/configurations/dialog.html",'<md-dialog class="freshsalesConfiguration-dialog" aria-label="New FreshsalesConfiguration">\n  <form name="freshsalesConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.freshsalesConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="freshsalesConfigurationForm[\'name\'].$error" ng-show="freshsalesConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.freshsalesConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'channel\'].$error" ng-show="freshsalesConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.freshsalesConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="freshsalesConfigurationForm[\'type\'].$error" ng-show="freshsalesConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newFreshsalesConfiguration" ng-click="vm.saveFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid || freshsalesConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newFreshsalesConfiguration" ng-click="vm.addNewFreshsalesConfiguration()" class="send-button md-accent md-raised" ng-disabled="freshsalesConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESCONFIGURATION">\n          ADD FRESHSALESCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newFreshsalesConfiguration" ng-click="vm.deleteFreshsalesConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/item/dialog.html",'<md-dialog class="freshsalesAccount-item-dialog" aria-label="New Item">\n  <form name="freshsalesAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.key.$error" ng-show="freshsalesAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.keyType.$error" ng-show="freshsalesAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="freshsalesAccountItemForm.keyContent.$error" ng-show="freshsalesAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="freshsalesAccountItemForm.customField.$error" ng-show="freshsalesAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="freshsalesAccountItemForm.$invalid || freshsalesAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="freshsalesAccountItemForm.option.$error" ng-show="freshsalesAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="freshsalesAccountItemForm.content.$error" ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="freshsalesAccountItemForm.variableName.$error" ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="freshsalesAccountItemForm.type.$error" ng-show="freshsalesAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="freshsalesAccountItemForm.content.$error"\n          ng-show="freshsalesAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="freshsalesAccountItemForm.variableName.$error"\n          ng-show="freshsalesAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/edit/view.html",'<div id="integrations-freshsalesAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-freshsalesAccounts-button md-icon-button" aria-label="Go to freshsalesAccounts" ng-click="vm.gotoFreshsalesAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_FRESHSALESACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="freshsalesAccount-image" hide-xs>\n          <img ng-src="assets/images/business/freshsalesAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.freshsalesAccount.id}}\n            <span ng-if="vm.freshsalesAccount.name">{{vm.freshsalesAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.freshsalesAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveFreshsalesAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.freshsalesAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.freshsalesAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.freshsalesAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.freshsalesAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.freshsalesAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.freshsalesAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="freshsalesAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="FreshsalesAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.freshsalesAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" class="md-icon-button" aria-label="create freshsalesConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="freshsalesConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedFreshsalesConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getFreshsalesConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ freshsalesConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteFreshsalesConfiguration($event, freshsalesConfiguration)" translate="INTEGRATIONS.DELETE_FRESHSALESCONFIGURATION">\n                            Delete FreshsalesConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditFreshsalesConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/freshsalesAccounts/freshsalesAccounts.html",'<div id="freshsalesAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.FRESHSALESACCOUNTS">FreshsalesAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedFreshsalesAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedFreshsalesAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-freshsalesAccounts-count">\n          <span>{{vm.selectedFreshsalesAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectFreshsalesAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedFreshsalesAccounts" csv-label="true" filename="freshsalesAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedFreshsalesAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- FRESHSALESACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedFreshsalesAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getFreshsalesAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.freshsalesAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="freshsalesAccount" md-select-id="id" ng-repeat="freshsalesAccount in vm.freshsalesAccounts.rows">\n                <td md-cell ng-if="freshsalesAccount.userpic"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="api/users/{{freshsalesAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!freshsalesAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{freshsalesAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="id ">{{freshsalesAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="name ">{{freshsalesAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="username ">{{freshsalesAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(freshsalesAccount, ev) : vm.createOrEditFreshsalesAccount($event, freshsalesAccount)" md-cell class="remoteUri ">{{freshsalesAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(freshsalesAccount, $event    )" translate="INTEGRATIONS.EDIT_FRESHSALESACCOUNT">\n                          Edit FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(freshsalesAccount, $event    )" translate="INTEGRATIONS.TEST_FRESHSALESACCOUNT">\n                          Test FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(freshsalesAccount, $event    )" translate="INTEGRATIONS.DELETE_FRESHSALESACCOUNT">\n                          Delete FreshsalesAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.freshsalesAccounts.count}}" md-on-paginate="vm.getFreshsalesAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / FRESHSALESACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD FRESHSALESACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-freshsalesAccount-button" ng-click="vm.createOrEditFreshsalesAccount($event)" aria-label="add freshsalesAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_FRESHSALESACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD FRESHSALESACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/create/dialog.html",'<md-dialog class="salesforceAccount-dialog" aria-label="New SalesforceAccount">\n  <form name="salesforceAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceAccountForm[\'name\'].$error" ng-show="salesforceAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceAccountForm[\'type\'].$error" ng-show="salesforceAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'username\'].$error" ng-show="salesforceAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'remoteUri\'].$error" ng-show="salesforceAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="salesforceAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientId\'].$error" ng-show="salesforceAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'clientSecret\'].$error" ng-show="salesforceAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n        <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true">\n\n        <div ng-messages="salesforceAccountForm[\'securityToken\'].$error" ng-show="salesforceAccountForm[\'securityToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="salesforceAccountForm[\'serverUrl\'].$error" ng-show="salesforceAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.salesforceAccount.description">\n\n        <div ng-messages="salesforceAccountForm[\'description\'].$error" ng-show="salesforceAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceAccount" ng-click="vm.saveSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid || salesforceAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceAccount" ng-click="vm.addNewSalesforceAccount()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCEACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n          ADD SALESFORCEACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceAccount" ng-click="vm.deleteSalesforceAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/configurations/dialog.html",'<md-dialog class="salesforceConfiguration-dialog" aria-label="New SalesforceConfiguration">\n  <form name="salesforceConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.salesforceConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="salesforceConfigurationForm[\'name\'].$error" ng-show="salesforceConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.salesforceConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'channel\'].$error" ng-show="salesforceConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.salesforceConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'type\'].$error" ng-show="salesforceConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TICKETTYPE">TicketType</label>\n        <md-select name="ticketType" ng-model="vm.salesforceConfiguration.ticketType" required>\n\n          <md-option ng-value="\'Task\'"> {{ \'INTEGRATIONS.TASK\' | translate }} </md-option>\n\n          <md-option ng-value="\'Case\'"> {{ \'INTEGRATIONS.CASE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="salesforceConfigurationForm[\'ticketType\'].$error" ng-show="salesforceConfigurationForm[\'ticketType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TICKETTYPE_REQUIRED">TicketType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSalesforceConfiguration" ng-click="vm.saveSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid || salesforceConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSalesforceConfiguration" ng-click="vm.addNewSalesforceConfiguration()" class="send-button md-accent md-raised" ng-disabled="salesforceConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SALESFORCECONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCECONFIGURATION">\n          ADD SALESFORCECONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSalesforceConfiguration" ng-click="vm.deleteSalesforceConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/item/dialog.html",'<md-dialog class="salesforceAccount-item-dialog" aria-label="New Item">\n  <form name="salesforceAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.key.$error" ng-show="salesforceAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.keyType.$error" ng-show="salesforceAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="salesforceAccountItemForm.keyContent.$error" ng-show="salesforceAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="salesforceAccountItemForm.customField.$error" ng-show="salesforceAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="salesforceAccountItemForm.$invalid || salesforceAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="salesforceAccountItemForm.option.$error" ng-show="salesforceAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="salesforceAccountItemForm.content.$error" ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="salesforceAccountItemForm.variableName.$error" ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="salesforceAccountItemForm.type.$error" ng-show="salesforceAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="salesforceAccountItemForm.content.$error"\n          ng-show="salesforceAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="salesforceAccountItemForm.variableName.$error"\n          ng-show="salesforceAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/salesforceAccounts/edit/view.html",'<div id="integrations-salesforceAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-salesforceAccounts-button md-icon-button" aria-label="Go to salesforceAccounts" ng-click="vm.gotoSalesforceAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SALESFORCEACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="salesforceAccount-image" hide-xs>\n          <img ng-src="assets/images/business/salesforceAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.salesforceAccount.id}}\n            <span ng-if="vm.salesforceAccount.name">{{vm.salesforceAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.salesforceAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSalesforceAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.salesforceAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.salesforceAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.salesforceAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.salesforceAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.salesforceAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.salesforceAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.salesforceAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.SECURITYTOKEN">SecurityToken</label>\n                <input type="text" name="securityToken" ng-model="vm.salesforceAccount.securityToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'securityToken\'].$error" ng-show="generalForm[\'securityToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.SECURITYTOKEN_REQUIRED">SecurityToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.salesforceAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.salesforceAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="salesforceAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SalesforceAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.salesforceAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" class="md-icon-button" aria-label="create salesforceConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="salesforceConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSalesforceConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSalesforceConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ salesforceConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSalesforceConfiguration($event, salesforceConfiguration)" translate="INTEGRATIONS.DELETE_SALESFORCECONFIGURATION">\n                            Delete SalesforceConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'account_contact_lead\', value: \'Account & Contact & Lead\'}, {key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.salesforceConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}, {key: \'account\', value: \'Account\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLead">\n                        <label translate="INTEGRATIONS.LEADID"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.leadId" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.LEADID"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isAccountSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHACCOUNT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchAccount" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHACCOUNT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isContactSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHCONTACT"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchContact" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHCONTACT"></span></div>\n                      </div>\n\n                      <div layout-margin ng-if="vm_cc.salesforceConfiguration.isLeadSearch">\n                        <label translate="INTEGRATIONS.ADDITIONALSEARCHLEAD"></label>\n                        <md-input-container class="md-block">\n                          <input ng-model="vm_cc.salesforceConfiguration.additionalSearchLead" type="text">\n                        </md-input-container>\n                        <div class="hint"><span translate="INTEGRATIONS.HELP.ADDITIONALSEARCHLEAD"></span></div>\n                      </div>\n\n                      <md-button type="submit" ng-click="vm_cc.saveSalesforceConfiguration()" ng-disabled="!vm_cc.crudPermissions.canEdit" class="send-button md-accent md-raised" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                        SAVE\n                      </md-button>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSalesforceConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/salesforceAccounts/salesforceAccounts.html",'<div id="salesforceAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SALESFORCEACCOUNTS">SalesforceAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSalesforceAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSalesforceAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-salesforceAccounts-count">\n          <span>{{vm.selectedSalesforceAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSalesforceAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSalesforceAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSalesforceAccounts" csv-label="true" filename="salesforceAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSalesforceAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SALESFORCEACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSalesforceAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSalesforceAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.salesforceAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="salesforceAccount" md-select-id="id" ng-repeat="salesforceAccount in vm.salesforceAccounts.rows">\n                <td md-cell ng-if="salesforceAccount.userpic"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="api/users/{{salesforceAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!salesforceAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{salesforceAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="id ">{{salesforceAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="name ">{{salesforceAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="username ">{{salesforceAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(salesforceAccount, ev) : vm.createOrEditSalesforceAccount($event, salesforceAccount)" md-cell class="remoteUri ">{{salesforceAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(salesforceAccount, $event    )" translate="INTEGRATIONS.EDIT_SALESFORCEACCOUNT">\n                          Edit SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(salesforceAccount, $event    )" translate="INTEGRATIONS.TEST_SALESFORCEACCOUNT">\n                          Test SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(salesforceAccount, $event    )" translate="INTEGRATIONS.DELETE_SALESFORCEACCOUNT">\n                          Delete SalesforceAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.salesforceAccounts.count}}" md-on-paginate="vm.getSalesforceAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SALESFORCEACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SALESFORCEACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-salesforceAccount-button" ng-click="vm.createOrEditSalesforceAccount($event)" aria-label="add salesforceAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SALESFORCEACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SALESFORCEACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/create/dialog.html",'<md-dialog class="servicenowAccount-dialog" aria-label="New ServicenowAccount">\n  <form name="servicenowAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowAccountForm[\'name\'].$error" ng-show="servicenowAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'username\'].$error" ng-show="servicenowAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="servicenowAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'email\'].$error" ng-show="servicenowAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="servicenowAccountForm[\'remoteUri\'].$error" ng-show="servicenowAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="servicenowAccountForm[\'serverUrl\'].$error" ng-show="servicenowAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.servicenowAccount.description">\n\n        <div ng-messages="servicenowAccountForm[\'description\'].$error" ng-show="servicenowAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowAccount" ng-click="vm.saveServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid || servicenowAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowAccount" ng-click="vm.addNewServicenowAccount()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n          ADD SERVICENOWACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowAccount" ng-click="vm.deleteServicenowAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/configurations/dialog.html",'<md-dialog class="servicenowConfiguration-dialog" aria-label="New ServicenowConfiguration">\n  <form name="servicenowConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.servicenowConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="servicenowConfigurationForm[\'name\'].$error" ng-show="servicenowConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.servicenowConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'channel\'].$error" ng-show="servicenowConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.servicenowConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="servicenowConfigurationForm[\'type\'].$error" ng-show="servicenowConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newServicenowConfiguration" ng-click="vm.saveServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid || servicenowConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newServicenowConfiguration" ng-click="vm.addNewServicenowConfiguration()" class="send-button md-accent md-raised" ng-disabled="servicenowConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWCONFIGURATION">\n          ADD SERVICENOWCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newServicenowConfiguration" ng-click="vm.deleteServicenowConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/item/dialog.html",'<md-dialog class="servicenowAccount-item-dialog" aria-label="New Item">\n  <form name="servicenowAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.key.$error" ng-show="servicenowAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.keyType.$error" ng-show="servicenowAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="servicenowAccountItemForm.keyContent.$error" ng-show="servicenowAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="servicenowAccountItemForm.customField.$error" ng-show="servicenowAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="servicenowAccountItemForm.$invalid || servicenowAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="servicenowAccountItemForm.option.$error" ng-show="servicenowAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="servicenowAccountItemForm.content.$error" ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="servicenowAccountItemForm.variableName.$error" ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="servicenowAccountItemForm.type.$error" ng-show="servicenowAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="servicenowAccountItemForm.content.$error"\n          ng-show="servicenowAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="servicenowAccountItemForm.variableName.$error"\n          ng-show="servicenowAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/servicenowAccounts/edit/view.html",'<div id="integrations-servicenowAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-servicenowAccounts-button md-icon-button" aria-label="Go to servicenowAccounts" ng-click="vm.gotoServicenowAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SERVICENOWACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="servicenowAccount-image" hide-xs>\n          <img ng-src="assets/images/business/servicenowAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.servicenowAccount.id}}\n            <span ng-if="vm.servicenowAccount.name">{{vm.servicenowAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.servicenowAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveServicenowAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.servicenowAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.servicenowAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.servicenowAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.servicenowAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="INTEGRATIONS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.servicenowAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.servicenowAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.servicenowAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="servicenowAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ServicenowAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.servicenowAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" class="md-icon-button" aria-label="create servicenowConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="servicenowConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedServicenowConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getServicenowConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ servicenowConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteServicenowConfiguration($event, servicenowConfiguration)" translate="INTEGRATIONS.DELETE_SERVICENOWCONFIGURATION">\n                            Delete ServicenowConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditServicenowConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/servicenowAccounts/servicenowAccounts.html",'<div id="servicenowAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SERVICENOWACCOUNTS">ServicenowAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedServicenowAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedServicenowAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-servicenowAccounts-count">\n          <span>{{vm.selectedServicenowAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllServicenowAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectServicenowAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedServicenowAccounts" csv-label="true" filename="servicenowAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedServicenowAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SERVICENOWACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedServicenowAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getServicenowAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'INTEGRATIONS.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.servicenowAccounts.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="servicenowAccount" md-select-id="id" ng-repeat="servicenowAccount in vm.servicenowAccounts.rows">\n                <td md-cell ng-if="servicenowAccount.userpic"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="api/users/{{servicenowAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!servicenowAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{servicenowAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="id ">{{servicenowAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="name ">{{servicenowAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="username ">{{servicenowAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="email ">{{servicenowAccount.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(servicenowAccount, ev) : vm.createOrEditServicenowAccount($event, servicenowAccount)" md-cell class="remoteUri ">{{servicenowAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(servicenowAccount, $event    )" translate="INTEGRATIONS.EDIT_SERVICENOWACCOUNT">\n                          Edit ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(servicenowAccount, $event    )" translate="INTEGRATIONS.TEST_SERVICENOWACCOUNT">\n                          Test ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.crudPermissions === 0 || vm.currentUser.role === \'admin\'">\n\n                        <md-button ng-click="vm.deleteconfirm(servicenowAccount, $event    )" translate="INTEGRATIONS.DELETE_SERVICENOWACCOUNT">\n                          Delete ServicenowAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.servicenowAccounts.count}}" md-on-paginate="vm.getServicenowAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SERVICENOWACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SERVICENOWACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-servicenowAccount-button" ng-click="vm.createOrEditServicenowAccount($event)" aria-label="add servicenowAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SERVICENOWACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SERVICENOWACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/create/dialog.html",'<md-dialog class="sugarcrmAccount-dialog" aria-label="New SugarcrmAccount">\n  <form name="sugarcrmAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmAccountForm[\'name\'].$error" ng-show="sugarcrmAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'username\'].$error" ng-show="sugarcrmAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="sugarcrmAccountForm[\'remoteUri\'].$error" ng-show="sugarcrmAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="sugarcrmAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="sugarcrmAccountForm[\'serverUrl\'].$error" ng-show="sugarcrmAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sugarcrmAccount.description">\n\n        <div ng-messages="sugarcrmAccountForm[\'description\'].$error" ng-show="sugarcrmAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmAccount" ng-click="vm.saveSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid || sugarcrmAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmAccount" ng-click="vm.addNewSugarcrmAccount()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n          ADD SUGARCRMACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmAccount" ng-click="vm.deleteSugarcrmAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/configurations/dialog.html",'<md-dialog class="sugarcrmConfiguration-dialog" aria-label="New SugarcrmConfiguration">\n  <form name="sugarcrmConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.sugarcrmConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="sugarcrmConfigurationForm[\'name\'].$error" ng-show="sugarcrmConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.sugarcrmConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'channel\'].$error" ng-show="sugarcrmConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.sugarcrmConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="sugarcrmConfigurationForm[\'type\'].$error" ng-show="sugarcrmConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSugarcrmConfiguration" ng-click="vm.saveSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid || sugarcrmConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSugarcrmConfiguration" ng-click="vm.addNewSugarcrmConfiguration()" class="send-button md-accent md-raised" ng-disabled="sugarcrmConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMCONFIGURATION">\n          ADD SUGARCRMCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSugarcrmConfiguration" ng-click="vm.deleteSugarcrmConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/item/dialog.html",'<md-dialog class="sugarcrmAccount-item-dialog" aria-label="New Item">\n  <form name="sugarcrmAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.key.$error" ng-show="sugarcrmAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.keyType.$error" ng-show="sugarcrmAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="sugarcrmAccountItemForm.keyContent.$error" ng-show="sugarcrmAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="sugarcrmAccountItemForm.customField.$error" ng-show="sugarcrmAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="sugarcrmAccountItemForm.$invalid || sugarcrmAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="sugarcrmAccountItemForm.option.$error" ng-show="sugarcrmAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="sugarcrmAccountItemForm.content.$error" ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="sugarcrmAccountItemForm.variableName.$error" ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="sugarcrmAccountItemForm.type.$error" ng-show="sugarcrmAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="sugarcrmAccountItemForm.content.$error"\n          ng-show="sugarcrmAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="sugarcrmAccountItemForm.variableName.$error"\n          ng-show="sugarcrmAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/edit/view.html",'<div id="integrations-sugarcrmAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-sugarcrmAccounts-button md-icon-button" aria-label="Go to sugarcrmAccounts" ng-click="vm.gotoSugarcrmAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_SUGARCRMACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="sugarcrmAccount-image" hide-xs>\n          <img ng-src="assets/images/business/sugarcrmAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.sugarcrmAccount.id}}\n            <span ng-if="vm.sugarcrmAccount.name">{{vm.sugarcrmAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.sugarcrmAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSugarcrmAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.sugarcrmAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.sugarcrmAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.sugarcrmAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.sugarcrmAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.sugarcrmAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.sugarcrmAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="sugarcrmAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="SugarcrmAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.sugarcrmAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" class="md-icon-button" aria-label="create sugarcrmConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="sugarcrmConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedSugarcrmConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getSugarcrmConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ sugarcrmConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteSugarcrmConfiguration($event, sugarcrmConfiguration)" translate="INTEGRATIONS.DELETE_SUGARCRMCONFIGURATION">\n                            Delete SugarcrmConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditSugarcrmConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/sugarcrmAccounts/sugarcrmAccounts.html",'<div id="sugarcrmAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.SUGARCRMACCOUNTS">SugarcrmAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSugarcrmAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSugarcrmAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sugarcrmAccounts-count">\n          <span>{{vm.selectedSugarcrmAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSugarcrmAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSugarcrmAccounts" csv-label="true" filename="sugarcrmAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSugarcrmAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SUGARCRMACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSugarcrmAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSugarcrmAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sugarcrmAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sugarcrmAccount" md-select-id="id" ng-repeat="sugarcrmAccount in vm.sugarcrmAccounts.rows">\n                <td md-cell ng-if="sugarcrmAccount.userpic"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="api/users/{{sugarcrmAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!sugarcrmAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sugarcrmAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="id ">{{sugarcrmAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="name ">{{sugarcrmAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="username ">{{sugarcrmAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(sugarcrmAccount, ev) : vm.createOrEditSugarcrmAccount($event, sugarcrmAccount)" md-cell class="remoteUri ">{{sugarcrmAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(sugarcrmAccount, $event    )" translate="INTEGRATIONS.EDIT_SUGARCRMACCOUNT">\n                          Edit SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(sugarcrmAccount, $event    )" translate="INTEGRATIONS.TEST_SUGARCRMACCOUNT">\n                          Test SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(sugarcrmAccount, $event    )" translate="INTEGRATIONS.DELETE_SUGARCRMACCOUNT">\n                          Delete SugarcrmAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sugarcrmAccounts.count}}" md-on-paginate="vm.getSugarcrmAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SUGARCRMACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SUGARCRMACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-sugarcrmAccount-button" ng-click="vm.createOrEditSugarcrmAccount($event)" aria-label="add sugarcrmAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_SUGARCRMACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SUGARCRMACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/create/dialog.html",'<md-dialog class="vtigerAccount-dialog" aria-label="New VtigerAccount">\n  <form name="vtigerAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerAccountForm[\'name\'].$error" ng-show="vtigerAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.vtigerAccount.description">\n\n        <div ng-messages="vtigerAccountForm[\'description\'].$error" ng-show="vtigerAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n        <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'username\'].$error" ng-show="vtigerAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n        <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'accessKey\'].$error" ng-show="vtigerAccountForm[\'accessKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="vtigerAccountForm[\'remoteUri\'].$error" ng-show="vtigerAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="vtigerAccountForm[\'serverUrl\'].$error" ng-show="vtigerAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerAccount" ng-click="vm.saveVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid || vtigerAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerAccount" ng-click="vm.addNewVtigerAccount()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n          ADD VTIGERACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerAccount" ng-click="vm.deleteVtigerAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/configurations/dialog.html",'<md-dialog class="vtigerConfiguration-dialog" aria-label="New VtigerConfiguration">\n  <form name="vtigerConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.vtigerConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="vtigerConfigurationForm[\'name\'].$error" ng-show="vtigerConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.vtigerConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'channel\'].$error" ng-show="vtigerConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.vtigerConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="vtigerConfigurationForm[\'type\'].$error" ng-show="vtigerConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVtigerConfiguration" ng-click="vm.saveVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid || vtigerConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVtigerConfiguration" ng-click="vm.addNewVtigerConfiguration()" class="send-button md-accent md-raised" ng-disabled="vtigerConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_VTIGERCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERCONFIGURATION">\n          ADD VTIGERCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVtigerConfiguration" ng-click="vm.deleteVtigerConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/item/dialog.html",'<md-dialog class="vtigerAccount-item-dialog" aria-label="New Item">\n  <form name="vtigerAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.key.$error" ng-show="vtigerAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.keyType.$error" ng-show="vtigerAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="vtigerAccountItemForm.keyContent.$error" ng-show="vtigerAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="vtigerAccountItemForm.customField.$error" ng-show="vtigerAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="vtigerAccountItemForm.$invalid || vtigerAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="vtigerAccountItemForm.option.$error" ng-show="vtigerAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="vtigerAccountItemForm.content.$error" ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="vtigerAccountItemForm.variableName.$error" ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="vtigerAccountItemForm.type.$error" ng-show="vtigerAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="vtigerAccountItemForm.content.$error"\n          ng-show="vtigerAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="vtigerAccountItemForm.variableName.$error"\n          ng-show="vtigerAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/vtigerAccounts/edit/view.html",'<div id="integrations-vtigerAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-vtigerAccounts-button md-icon-button" aria-label="Go to vtigerAccounts" ng-click="vm.gotoVtigerAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_VTIGERACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="vtigerAccount-image" hide-xs>\n          <img ng-src="assets/images/business/vtigerAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.vtigerAccount.id}}\n            <span ng-if="vm.vtigerAccount.name">{{vm.vtigerAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.vtigerAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVtigerAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.vtigerAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.vtigerAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.VTIGER_USER_NAME">vTiger_User_Name</label>\n                <input type="text" name="username" ng-model="vm.vtigerAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.VTIGER_USER_NAME_REQUIRED">vTiger_User_Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ACCESS_KEY">Access_Key</label>\n                <input type="text" name="accessKey" ng-model="vm.vtigerAccount.accessKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accessKey\'].$error" ng-show="generalForm[\'accessKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ACCESS_KEY_REQUIRED">Access_Key field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <input type="url" name="remoteUri" ng-model="vm.vtigerAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_MUST_VALID_URL">Host must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.vtigerAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="vtigerAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="VtigerAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.vtigerAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" class="md-icon-button" aria-label="create vtigerConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="vtigerConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedVtigerConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getVtigerConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ vtigerConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteVtigerConfiguration($event, vtigerConfiguration)" translate="INTEGRATIONS.DELETE_VTIGERCONFIGURATION">\n                            Delete VtigerConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditVtigerConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/vtigerAccounts/vtigerAccounts.html",'<div id="vtigerAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.VTIGERACCOUNTS">VtigerAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVtigerAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVtigerAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-vtigerAccounts-count">\n          <span>{{vm.selectedVtigerAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVtigerAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVtigerAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVtigerAccounts" csv-label="true" filename="vtigerAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVtigerAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VTIGERACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVtigerAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVtigerAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.VTIGER_USER_NAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.vtigerAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="vtigerAccount" md-select-id="id" ng-repeat="vtigerAccount in vm.vtigerAccounts.rows">\n                <td md-cell ng-if="vtigerAccount.userpic"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="api/users/{{vtigerAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!vtigerAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{vtigerAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="id ">{{vtigerAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="name ">{{vtigerAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="username ">{{vtigerAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(vtigerAccount, ev) : vm.createOrEditVtigerAccount($event, vtigerAccount)" md-cell class="remoteUri ">{{vtigerAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(vtigerAccount, $event    )" translate="INTEGRATIONS.EDIT_VTIGERACCOUNT">\n                          Edit VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(vtigerAccount, $event    )" translate="INTEGRATIONS.TEST_VTIGERACCOUNT">\n                          Test VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(vtigerAccount, $event    )" translate="INTEGRATIONS.DELETE_VTIGERACCOUNT">\n                          Delete VtigerAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.vtigerAccounts.count}}" md-on-paginate="vm.getVtigerAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VTIGERACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VTIGERACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-vtigerAccount-button" ng-click="vm.createOrEditVtigerAccount($event)" aria-label="add vtigerAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_VTIGERACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VTIGERACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/create/dialog.html",'<md-dialog class="zendeskAccount-dialog" aria-label="New ZendeskAccount">\n  <form name="zendeskAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskAccountForm[\'name\'].$error" ng-show="zendeskAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskAccount.type" required>\n\n          <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n          <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'type\'].$error" ng-show="zendeskAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'username\'].$error" ng-show="zendeskAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.URI">Uri</label>\n        <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'remoteUri\'].$error" ng-show="zendeskAccountForm[\'remoteUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n        <md-select name="authType" ng-model="vm.zendeskAccount.authType" required>\n          <md-option ng-value="\'password\'">Password</md-option>\n          <md-option ng-value="\'token\'">Token</md-option>\n        </md-select>\n        <div ng-messages="zendeskAccountForm[\'authType\'].$error" ng-show="zendeskAccountForm[\'authType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n        <label translate="INTEGRATIONS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n        <div ng-messages="zendeskAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n        <label translate="INTEGRATIONS.TOKEN">Token</label>\n        <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true">\n\n        <div ng-messages="zendeskAccountForm[\'token\'].$error" ng-show="zendeskAccountForm[\'token\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zendeskAccountForm[\'serverUrl\'].$error" ng-show="zendeskAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zendeskAccount.description">\n\n        <div ng-messages="zendeskAccountForm[\'description\'].$error" ng-show="zendeskAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskAccount" ng-click="vm.saveZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid || zendeskAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskAccount" ng-click="vm.addNewZendeskAccount()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n          ADD ZENDESKACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskAccount" ng-click="vm.deleteZendeskAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/item/dialog.html",'<md-dialog class="zendeskAccount-item-dialog" aria-label="New Item">\n  <form name="zendeskAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.key.$error" ng-show="zendeskAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.keyType.$error" ng-show="zendeskAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zendeskAccountItemForm.keyContent.$error" ng-show="zendeskAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zendeskAccountItemForm.customField.$error" ng-show="zendeskAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zendeskAccountItemForm.$invalid || zendeskAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zendeskAccountItemForm.option.$error" ng-show="zendeskAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zendeskAccountItemForm.content.$error" ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zendeskAccountItemForm.variableName.$error" ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zendeskAccountItemForm.type.$error" ng-show="zendeskAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zendeskAccountItemForm.content.$error"\n          ng-show="zendeskAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zendeskAccountItemForm.variableName.$error"\n          ng-show="zendeskAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/view.html",'<div id="integrations-zendeskAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zendeskAccounts-button md-icon-button" aria-label="Go to zendeskAccounts" ng-click="vm.gotoZendeskAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZENDESKACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zendeskAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zendeskAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zendeskAccount.id}}\n            <span ng-if="vm.zendeskAccount.name">{{vm.zendeskAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zendeskAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZendeskAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (zendeskConfigurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zendeskAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.zendeskAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'integrationTab\'"> {{ \'INTEGRATIONS.INTEGRATION_TAB\' | translate }} </md-option>\n\n                  <md-option ng-value="\'newTab\'"> {{ \'INTEGRATIONS.NEW_TAB\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.zendeskAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.URI">Uri</label>\n                <input type="url" name="remoteUri" ng-model="vm.zendeskAccount.remoteUri" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'remoteUri\'].$error" ng-show="generalForm[\'remoteUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.URI_REQUIRED">Uri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.URI_MUST_VALID_URL">Uri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.AUTHTYPE">AuthType</label>\n                <md-select name="authType" ng-model="vm.zendeskAccount.authType" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'password\'">Password</md-option>\n                  <md-option ng-value="\'token\'">Token</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'authType\'].$error" ng-show="generalForm[\'authType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.AUTHTYPE_REQUIRED">AuthType field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.zendeskAccount.authType == \'password\'">\n                <label translate="INTEGRATIONS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.zendeskAccount.password" placeholder="Password" translate translate-attr-placeholder="INTEGRATIONS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="INTEGRATIONS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.zendeskAccount.authType == \'token\'" class="md-block">\n                <label translate="INTEGRATIONS.TOKEN">Token</label>\n                <input type="text" name="token" ng-model="vm.zendeskAccount.token" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'token\'].$error" ng-show="generalForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.TOKEN_REQUIRED">Token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zendeskAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zendeskAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zendeskAccount-detail-form-container zendeskconfigurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.ZENDESKCONFIGURATIONS">ZENDESKCONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZendeskAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zendeskAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" class="md-icon-button" aria-label="create zendeskConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zendeskConfiguration in vm_cc.zendeskConfigurations" class="border-top" md-colors="{background: (vm_cc.selectedZendeskConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZendeskConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zendeskConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZendeskConfiguration($event, zendeskConfiguration)" translate="INTEGRATIONS.DELETE_ZENDESKCONFIGURATION">\n                            Delete ZendeskConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.zendeskConfigurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.TAGS">TAGS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-table-container class="md-whiteframe-1dp padding-20">\n                        <md-input-container class="md-block">\n                          <label translate="INTEGRATIONS.TAGS">Tags</label>\n                          <md-select ng-model="vm_cc.selectedTags" ng-change="vm_cc.selectTagsChanged($event)" multiple>\n                            <md-option ng-value="tag.id" ng-repeat="tag in vm_cc.tags">{{ tag.name }}</md-option>\n                          </md-select>\n                        </md-input-container>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.zendeskConfigurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZendeskConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zendeskAccounts/edit/zendeskConfigurations/dialog.html",'<md-dialog class="zendeskConfiguration-dialog" aria-label="New ZendeskConfiguration">\n  <form name="zendeskConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zendeskConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zendeskConfigurationForm[\'name\'].$error" ng-show="zendeskConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zendeskConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'channel\'].$error" ng-show="zendeskConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zendeskConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zendeskConfigurationForm[\'type\'].$error" ng-show="zendeskConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZendeskConfiguration" ng-click="vm.saveZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid || zendeskConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZendeskConfiguration" ng-click="vm.addNewZendeskConfiguration()" class="send-button md-accent md-raised" ng-disabled="zendeskConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZENDESKCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKCONFIGURATION">\n          ADD ZENDESKCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZendeskConfiguration" ng-click="vm.deleteZendeskConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zendeskAccounts/zendeskAccounts.html",'<div id="zendeskAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZENDESKACCOUNTS">ZendeskAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZendeskAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZendeskAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zendeskAccounts-count">\n          <span>{{vm.selectedZendeskAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZendeskAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZendeskAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZendeskAccounts" csv-label="true" filename="zendeskAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZendeskAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZENDESKACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZendeskAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZendeskAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="username">{{ \'INTEGRATIONS.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="remoteUri">{{ \'INTEGRATIONS.URI\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zendeskAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zendeskAccount" md-select-id="id" ng-repeat="zendeskAccount in vm.zendeskAccounts.rows">\n                <td md-cell ng-if="zendeskAccount.userpic"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="api/users/{{zendeskAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zendeskAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zendeskAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="id ">{{zendeskAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="name ">{{zendeskAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="username ">{{zendeskAccount.username}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zendeskAccount, ev) : vm.createOrEditZendeskAccount($event, zendeskAccount)" md-cell class="remoteUri ">{{zendeskAccount.remoteUri}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zendeskAccount, $event    )" translate="INTEGRATIONS.EDIT_ZENDESKACCOUNT">\n                          Edit ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zendeskAccount, $event    )" translate="INTEGRATIONS.TEST_ZENDESKACCOUNT">\n                          Test ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zendeskAccount, $event    )" translate="INTEGRATIONS.DELETE_ZENDESKACCOUNT">\n                          Delete ZendeskAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zendeskAccounts.count}}" md-on-paginate="vm.getZendeskAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZENDESKACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZENDESKACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zendeskAccount-button" ng-click="vm.createOrEditZendeskAccount($event)" aria-label="add zendeskAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZENDESKACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZENDESKACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/create/dialog.html",'<md-dialog class="zohoAccount-dialog" aria-label="New ZohoAccount">\n  <form name="zohoAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoAccountForm[\'name\'].$error" ng-show="zohoAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.HOST">Host</label>\n        <md-select name="host" ng-model="vm.zohoAccount.host" required>\n          <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n          <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n        </md-select>\n        <div ng-messages="zohoAccountForm[\'host\'].$error" ng-show="zohoAccountForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.ZONE">Zone</label>\n        <md-select name="zone" ng-model="vm.zohoAccount.zone" required>\n          <md-option ng-value="\'US\'">US</md-option>\n          <md-option ng-value="\'AU\'">AU</md-option>\n          <md-option ng-value="\'EU\'">EU</md-option>\n          <md-option ng-value="\'IN\'">IN</md-option>\n          <md-option ng-value="\'CN\'">CN</md-option>\n        </md-select>\n        <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n        <div ng-messages="zohoAccountForm[\'zone\'].$error" ng-show="zohoAccountForm[\'zone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n        <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientId\'].$error" ng-show="zohoAccountForm[\'clientId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n        <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n        <div ng-messages="zohoAccountForm[\'clientSecret\'].$error" ng-show="zohoAccountForm[\'clientSecret\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CODE">Code</label>\n        <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n        <div ng-messages="zohoAccountForm[\'code\'].$error" ng-show="zohoAccountForm[\'code\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n        <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n        <div ng-messages="zohoAccountForm[\'serverUrl\'].$error" ng-show="zohoAccountForm[\'serverUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.zohoAccount.description">\n\n        <div ng-messages="zohoAccountForm[\'description\'].$error" ng-show="zohoAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoAccount" ng-click="vm.saveZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid || zohoAccountForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoAccount" ng-click="vm.addNewZohoAccount()" class="send-button md-accent md-raised" ng-disabled="zohoAccountForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOACCOUNT" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n          ADD ZOHOACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoAccount" ng-click="vm.deleteZohoAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/configurations/dialog.html",'<md-dialog class="zohoConfiguration-dialog" aria-label="New ZohoConfiguration">\n  <form name="zohoConfigurationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.zohoConfiguration.name" ng-required="true" autofocus>\n\n        <div ng-messages="zohoConfigurationForm[\'name\'].$error" ng-show="zohoConfigurationForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.zohoConfiguration.channel" required>\n\n          <md-option ng-value="\'voice\'"> {{ \'INTEGRATIONS.VOICE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'channel\'].$error" ng-show="zohoConfigurationForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.zohoConfiguration.type" required>\n\n          <md-option ng-value="\'inbound\'"> {{ \'INTEGRATIONS.INBOUND_IN_QUEUE\' | translate }} </md-option>\n\n          <md-option ng-value="\'outbound\'"> {{ \'INTEGRATIONS.OUTBOUND_CALL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="zohoConfigurationForm[\'type\'].$error" ng-show="zohoConfigurationForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newZohoConfiguration" ng-click="vm.saveZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid || zohoConfigurationForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newZohoConfiguration" ng-click="vm.addNewZohoConfiguration()" class="send-button md-accent md-raised" ng-disabled="zohoConfigurationForm.$invalid" aria-label="ADD" translate="INTEGRATIONS.ADD_ZOHOCONFIGURATION" translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOCONFIGURATION">\n          ADD ZOHOCONFIGURATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newZohoConfiguration" ng-click="vm.deleteZohoConfiguration($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/item/dialog.html",'<md-dialog class="zohoAccount-item-dialog" aria-label="New Item">\n  <form name="zohoAccountItemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div ng-switch="vm.type">\n        <div ng-switch-when="subject">\n          \x3c!-- SUBJECT SECTION --\x3e\n          <div ng-include="\'/subject.html\'"></div>\n          \x3c!-- / SUBJECT SECTION --\x3e\n        </div>\n        <div ng-switch-when="description">\n          \x3c!-- DESCRIPTION SECTION --\x3e\n          <md-input-container class="md-block">\n            <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n              <md-option value="string">String</md-option>\n              <md-option value="keyValue">Key Value</md-option>\n            </md-select>\n            <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                  required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n            <label translate="INTEGRATIONS.CONTENT">Content</label>\n            <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n            <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n              <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field\n                  is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <div ng-if="vm.item.type == \'keyValue\'">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.KEY">Key</label>\n              <input type="text" name="key" ng-model="vm.item.key" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.key.$error" ng-show="zohoAccountItemForm.key.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.KEY_REQUIRED">Key field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.TYPE">Type</label>\n              <md-select name="keyType" ng-model="vm.item.keyType" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.keyType.$error" ng-show="zohoAccountItemForm.keyType.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'string\'">\n              <label translate="INTEGRATIONS.CONTENT">Content</label>\n              <input type="text" name="keyContent" ng-model="vm.item.keyContent" required md-autofocus>\n              <div ng-messages="zohoAccountItemForm.keyContent.$error" ng-show="zohoAccountItemForm.keyContent.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content\n                    field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'variable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n                <md-optgroup label="Voice: Queue">\n                  <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n                  </md-option>\n                </md-optgroup>\n                <md-optgroup label="Voice: Outbound">\n                  <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}</md-option>\n                </md-optgroup>\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable\n                    name field is required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container class="md-block" ng-if="vm.item.keyType == \'customVariable\'">\n              <label translate="INTEGRATIONS.VALUE">Value</label>\n              <md-select ng-model="vm.item.VariableId" required>\n                <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}\n                </md-option>\n              </md-select>\n            </md-input-container>\n          </div>\n          \x3c!-- / DESCRIPTION SECTION --\x3e\n        </div>\n        <div ng-switch-when="field">\n          \x3c!-- FIELD SECTION --\x3e\n          <div ng-if="vm.accountConnected">\n            <md-input-container class="md-block">\n              <label translate="INTEGRATIONS.FIELD">FIELD</label>\n              \x3c!-- ITEM TYPE DEFAULT VALUE is STRING --\x3e\n              <md-select name="customField" ng-model="vm.customField" required ng-change="vm.item.type = \'string\'">\n\n                <md-optgroup label="Standard">\n                  <md-option ng-value="standard" ng-repeat="standard in vm.fields | filter: {custom: false} ">{{standard.name}}\n                  </md-option>\n                </md-optgroup>\n\n                <md-optgroup label="Custom">\n                  <md-option ng-value="custom" ng-repeat="custom in vm.fields | filter: {custom: true} ">{{custom.name}}\n                  </md-option>\n                </md-optgroup>\n\n              </md-select>\n              <div ng-messages="zohoAccountItemForm.customField.$error" ng-show="zohoAccountItemForm.customField.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="INTEGRATIONS.ERRORS.FIELD_REQUIRED">Field is\n                    required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            \x3c!-- FIELDS --\x3e\n            <div ng-if="vm.customField" ng-include="\'/fields.html\'"></div>\n            \x3c!-- FIELDS --\x3e\n\n          </div>\n          <div ng-if="!vm.accountConnected">\n            <p>Account is not connected. Please check your configurations!</p>\n          </div>\n          \x3c!-- / FIELD SECTION --\x3e\n        </div>\n        <div ng-switch-default>\n          <p>No Item</p>\n        </div>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newItem" ng-click="vm.saveItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newItem" ng-click="vm.addNewItem()" class="send-button md-accent md-raised" ng-disabled="zohoAccountItemForm.$invalid || zohoAccountItemForm.$pristine" aria-label="ADD" translate="INTEGRATIONS.ADD" translate-attr-aria-label="INTEGRATIONS.ADD">\n          ADD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newItem" ng-click="vm.deleteItem($event)" aria-label="DELETE" translate translate-attr-aria-label="INTEGRATIONS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="INTEGRATIONS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>\n\n<script type="text/ng-template" id="/fields.html">\n\n  \x3c!-- type --\x3e\n  <md-input-container class="md-block">\n\n    <label translate="INTEGRATIONS.TYPE">Type</label>\n    <md-select name="type" ng-model="vm.item.type" required>\n      <md-option value="string">String</md-option>\n      <md-option value="variable">Variable</md-option>\n      <md-option value="customVariable">Custom Variable</md-option>\n      <md-option ng-if="vm.customField.options.length" value="picklist">Picklist</md-option>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  \x3c!--/ type --\x3e\n\n  \x3c!-- value --\x3e\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'picklist\'">\n    \x3c!-- options --\x3e\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <md-select name="option" ng-model="vm.item.content" required>\n      <md-option ng-value="option.value" ng-repeat="option in vm.customField.options">{{option.name}}</md-option>\n    </md-select>\n\n    <div ng-messages="zohoAccountItemForm.option.$error" ng-show="zohoAccountItemForm.option.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n    <label translate="INTEGRATIONS.CONTENT">Content</label>\n\n    <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n\n    <div ng-messages="zohoAccountItemForm.content.$error" ng-show="zohoAccountItemForm.content.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()" required>\n      <md-optgroup label="Voice: Queue">\n        <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n        </md-option>\n      </md-optgroup>\n      <md-optgroup label="Voice: Outbound">\n        <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n        </md-option>\n      </md-optgroup>\n    </md-select>\n    <div ng-messages="zohoAccountItemForm.variableName.$error" ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n      <div ng-message="required">\n        <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n          required</span>\n      </div>\n    </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n    <label translate="INTEGRATIONS.VALUE">Value</label>\n    <md-select ng-model="vm.item.VariableId" required>\n      <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n    </md-select>\n  </md-input-container>\n\n  \x3c!--/ value --\x3e\n\n<\/script>\n\n<script type="text/ng-template" id="/subject.html">\n  <md-input-container class="md-block">\n        <label translate="INTEGRATIONS.TYPE">Type</label>\n            <md-select name="type" ng-model="vm.item.type" required>\n                <md-option value="string">String</md-option>\n                <md-option value="variable">Variable</md-option>\n                <md-option value="customVariable">Custom Variable</md-option>\n            </md-select>\n        <div ng-messages="zohoAccountItemForm.type.$error" ng-show="zohoAccountItemForm.type.$touched" role="alert">\n            <div ng-message="required">\n                <span translate="INTEGRATIONS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n             </div>\n        </div>\n  </md-input-container>\n  \n  <md-input-container class="md-block" ng-if="vm.item.type == \'string\'">\n      <label translate="INTEGRATIONS.CONTENT">Content</label>\n      <input type="text" name="content" ng-model="vm.item.content" required md-autofocus>\n      <div ng-messages="zohoAccountItemForm.content.$error"\n          ng-show="zohoAccountItemForm.content.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.CONTENT_REQUIRED">Content field is required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'variable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select name="variableName" ng-model="vm.item.variableName" md-selected-text="vm.getSelectedVariable()"\n          required>\n          <md-optgroup label="Voice: Queue">\n              <md-option ng-value="agentColumn" ng-repeat="agentColumn in vm.voiceAgentReportColumns">{{agentColumn}}\n              </md-option>\n          </md-optgroup>\n          <md-optgroup label="Voice: Outbound">\n              <md-option ng-value="dialColumn" ng-repeat="dialColumn in vm.voiceDialReportColumns">{{dialColumn}}\n              </md-option>\n          </md-optgroup>\n      </md-select>\n      <div ng-messages="zohoAccountItemForm.variableName.$error"\n          ng-show="zohoAccountItemForm.variableName.$touched" role="alert">\n          <div ng-message="required">\n              <span translate="INTEGRATIONS.ERRORS.VARIABLENAME_REQUIRED">Variable name field is\n                  required</span>\n          </div>\n      </div>\n  </md-input-container>\n\n  <md-input-container class="md-block" ng-if="vm.item.type == \'customVariable\'">\n      <label translate="INTEGRATIONS.VALUE">Value</label>\n      <md-select ng-model="vm.item.VariableId" required>\n          <md-option ng-value="variable.id" ng-repeat="variable in vm.variables">{{variable.name}}</md-option>\n      </md-select>\n  </md-input-container>\n  <\/script>'),e.put("app/main/apps/integrations/views/zohoAccounts/edit/view.html",'<div id="integrations-zohoAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-zohoAccounts-button md-icon-button" aria-label="Go to zohoAccounts" ng-click="vm.gotoZohoAccounts()" translate translate-attr-aria-label="INTEGRATIONS.GO_TO_ZOHOACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="zohoAccount-image" hide-xs>\n          <img ng-src="assets/images/business/zohoAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.zohoAccount.id}}\n            <span ng-if="vm.zohoAccount.name">{{vm.zohoAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="INTEGRATIONS.CREATED_AT"></span> <span>{{vm.zohoAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveZohoAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (configurationsForm.$invalid)" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.zohoAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.HOST">Host</label>\n                <md-select name="host" ng-model="vm.zohoAccount.host" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'zoho.com\'">zoho.com</md-option>\n                  <md-option ng-value="\'zoho.eu\'">zoho.eu</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.ZONE">Zone</label>\n                <md-select name="zone" ng-model="vm.zohoAccount.zone" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'US\'">US</md-option>\n                  <md-option ng-value="\'AU\'">AU</md-option>\n                  <md-option ng-value="\'EU\'">EU</md-option>\n                  <md-option ng-value="\'IN\'">IN</md-option>\n                  <md-option ng-value="\'CN\'">CN</md-option>\n                </md-select>\n                <div class="hint"><span translate="INTEGRATIONS.HELP.ZONE"></span></div>\n                <div ng-messages="generalForm[\'zone\'].$error" ng-show="generalForm[\'zone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.ZONE_REQUIRED">Zone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTID">ClientId</label>\n                <input type="text" name="clientId" ng-model="vm.zohoAccount.clientId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTID"></span></div>\n                <div ng-messages="generalForm[\'clientId\'].$error" ng-show="generalForm[\'clientId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTID_REQUIRED">ClientId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CLIENTSECRET">ClientSecret</label>\n                <input type="text" name="clientSecret" ng-model="vm.zohoAccount.clientSecret" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CLIENTSECRET"></span></div>\n                <div ng-messages="generalForm[\'clientSecret\'].$error" ng-show="generalForm[\'clientSecret\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CLIENTSECRET_REQUIRED">ClientSecret field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.CODE">Code</label>\n                <input type="text" name="code" ng-model="vm.zohoAccount.code" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.CODE"></span></div>\n                <div ng-messages="generalForm[\'code\'].$error" ng-show="generalForm[\'code\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.CODE_REQUIRED">Code field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.REFRESHTOKEN">RefreshToken</label>\n                <input type="text" name="refreshToken" ng-model="vm.zohoAccount.refreshToken" disabled>\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.REFRESHTOKEN"></span></div>\n                <div ng-messages="generalForm[\'refreshToken\'].$error" ng-show="generalForm[\'refreshToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.REFRESHTOKEN_REQUIRED">RefreshToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.MOTIONPROXYADDRESS">MotionProxyAddress</label>\n                <input type="url" name="serverUrl" ng-model="vm.zohoAccount.serverUrl" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="INTEGRATIONS.HELP.MOTIONPROXYADDRESS"></span></div>\n                <div ng-messages="generalForm[\'serverUrl\'].$error" ng-show="generalForm[\'serverUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_REQUIRED">MotionProxyAddress field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="INTEGRATIONS.ERRORS.MOTIONPROXYADDRESS_MUST_VALID_URL">MotionProxyAddress must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="INTEGRATIONS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.zohoAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="INTEGRATIONS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="zohoAccount-detail-form-container configurations md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="INTEGRATIONS.CONFIGURATIONS">CONFIGURATIONS</div>\n            </div>\n            <div ng-controller="ZohoAccountConfigurationsController as vm_cc" ng-init="vm_cc.init(vm.zohoAccount, vm.crudPermissions)" layout="row">\n              <md-card class="md-whiteframe-1dp" flex="30">\n                <div layout="row" layout-align="center center">\n                  <md-subheader flex="75" class="md-no-sticky">{{ \'INTEGRATIONS.CONFIGURATIONS\' | translate }}</md-subheader>\n                  <md-button flex="25" ng-if="vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" class="md-icon-button" aria-label="create zohoConfiguration">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n                <md-list>\n                  <md-list-item layout="row" layout-align="center center" ng-repeat="zohoConfiguration in vm_cc.configurations" class="border-top" md-colors="{background: (vm_cc.selectedZohoConfiguration == $index ? \'accent\' : \'grey-A100\')}" ng-click="vm_cc.getZohoConfiguration($index)">\n                    <span class="text-truncate" flex="80">{{ zohoConfiguration.name }}</span>\n                    <md-menu ng-if="vm_cc.crudPermissions.canDelete">\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                          <md-button ng-click="vm_cc.deleteZohoConfiguration($event, zohoConfiguration)" translate="INTEGRATIONS.DELETE_ZOHOCONFIGURATION">\n                            Delete ZohoConfiguration\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </md-list-item>\n                </md-list>\n              </md-card>\n              <div flex></div>\n              <md-card class="md-whiteframe-1dp" flex="65">\n                <md-tabs ng-if="vm_cc.configurations.length" md-dynamic-height>\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.SUBJECTS">SUBJECTS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.subject = query" on-collapse="vm_cc.query.subject = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditSubject($event)" aria-label="add subject" translate translate-attr-label="INTEGRATIONS.ADD_SUBJECT">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedSubjects.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedSubjects.length}} {{vm_cc.selectedSubjects.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedSubjects($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedSubjects">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="subject" md-select-id="id" ng-repeat="subject in vm_cc.subjects | filter: vm_cc.query.subject">\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="id ">{{subject.id}}</td>\n                              <td ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell class="type ">\n                                <span ng-if="subject.FieldId">{{subject.nameField || subject.idField}}</span>\n                                <span ng-if="!subject.FieldId">{{subject.type}}</span>\n                              </td>\n                              <td ng-switch="subject.type" ng-click="vm_cc.createOrEditSubject($event, subject)" md-cell>\n                                <span ng-switch-when="string">{{subject.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{subject.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{subject.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{subject.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[subject.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{subject.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditSubject($event, subject)" translate="INTEGRATIONS.EDIT_SUBJECT">\n                                        Edit Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteSubjectConfirm($event, subject)" translate="INTEGRATIONS.DELETE_SUBJECT">\n                                        Delete Subject\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.DESCRIPTIONS">DESCRIPTIONS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.description = query" on-collapse="vm_cc.query.description = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditDescription($event)" aria-label="add description" translate translate-attr-label="INTEGRATIONS.ADD_DESCRIPTION">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedDescriptions.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedDescriptions.length}} {{vm_cc.selectedDescriptions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedDescriptions($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedDescriptions">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="description" md-select-id="id" ng-repeat="description in vm_cc.descriptions | filter: vm_cc.query.description">\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="id ">{{description.id}}</td>\n                              <td ng-click="vm_cc.createOrEditDescription($event, description)" md-cell class="type ">\n                                <span ng-if="description.FieldId">{{description.nameField || description.idField}}</span>\n                                <span ng-if="!description.FieldId">{{description.type}}</span>\n                              </td>\n                              <td ng-switch="description.type" ng-click="vm_cc.createOrEditDescription($event, description)" md-cell>\n                                <span ng-switch-when="string">{{description.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{description.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{description.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{description.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[description.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{description.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditDescription($event, description)" translate="INTEGRATIONS.EDIT_DESCRIPTION">\n                                        Edit Description\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteDescriptionConfirm($event, description)" translate="INTEGRATIONS.DELETE_DESCRIPTION">\n                                        Delete Description\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.FIELDS">FIELDS</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <md-toolbar class="md-table-toolbar md-default no-padding" ng-hide="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <div flex></div>\n                          <ms-search-bar on-search="vm_cc.query.field = query" on-collapse="vm_cc.query.field = undefined" debounce="300"></ms-search-bar>\n                          <md-button ng-if="vm_cc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_cc.createOrEditField($event)" aria-label="add field" translate translate-attr-label="INTEGRATIONS.ADD_FIELD">\n                            <md-icon md-font-icon="icon-plus"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_cc.selectedFields.length">\n                        <div class="md-toolbar-tools">\n                          <span class="md-subhead">{{vm_cc.selectedFields.length}} {{vm_cc.selectedFields.length > 1 ? \'items\' : \'item\'}} selected</span>\n                          <div flex></div>\n                          <md-button ng-if="vm_cc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_cc.deleteSelectedFields($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n                            <md-icon md-font-icon="icon-delete"></md-icon>\n                          </md-button>\n                        </div>\n                      </md-toolbar>\n                      <md-table-container class="md-whiteframe-1dp padding-horizontal">\n                        <table md-table md-row-select multiple ng-model="vm_cc.selectedFields">\n                          <thead md-head>\n                            <tr md-row>\n                              <th md-column>{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.TYPE\' | translate }}</th>\n                              <th md-column>{{ \'INTEGRATIONS.CONTENT\' | translate }}</th>\n                              <th md-column width="10px"></th>\n                            </tr>\n                          </thead>\n                          <tbody md-body>\n                            <tr md-row md-select="field" md-select-id="id" ng-repeat="field in vm_cc.fields | filter: vm_cc.query.field">\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="id ">{{field.id}}</td>\n                              <td ng-click="vm_cc.createOrEditField($event, field)" md-cell class="type ">\n                                <span ng-if="field.FieldId">{{field.nameField || field.idField}}</span>\n                                <span ng-if="!field.FieldId">{{field.type}}</span>\n                              </td>\n                              <td ng-switch="field.type" ng-click="vm_cc.createOrEditField($event, field)" md-cell>\n                                <span ng-switch-when="string">{{field.content}}</span>\n                                <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                <span ng-switch-when="keyValue">\n                                  {{field.key}}\n                                  <span ng-switch="description.keyType">\n                                    <span ng-switch-when="string">{{field.keyContent}}</span>\n                                    <span ng-switch-when="variable" class="text-boxed">{{field.variableName}}</span>\n                                    <span ng-switch-when="customVariable" class="text-boxed">{{ vm_cc.variablesById[field.VariableId].name }}</span>\n                                  </span>\n                                </span>\n                                <span ng-switch-default>{{field.content}}</span>\n                              </td>\n                              <td md-cell class="actions" ng-if="!vm_cc.crudPermissions.readOnly">\n                                <md-menu>\n                                  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                                    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                                  </md-button>\n\n                                  <md-menu-content width="3">\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canEdit">\n                                      <md-button ng-click="vm_cc.createOrEditField($event, field)" translate="INTEGRATIONS.EDIT_FIELD">\n                                        Edit Field\n                                      </md-button>\n                                    </md-menu-item>\n                                    <md-menu-item ng-if="vm_cc.crudPermissions.canDelete">\n                                      <md-button ng-click="vm_cc.deleteFieldConfirm($event, field)" translate="INTEGRATIONS.DELETE_FIELD">\n                                        Delete Field\n                                      </md-button>\n                                    </md-menu-item>\n                                  </md-menu-content>\n                                </md-menu>\n                              </td>\n                            </tr>\n                          </tbody>\n                        </table>\n                      </md-table-container>\n                    </md-tab-body>\n                  </md-tab>\n\n                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">\n                        ADVANCED\n                      </span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_SEARCH"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleSearch" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'contact_lead\', value: \'Contact & Lead\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                      <div layout-margin>\n                        <label translate="INTEGRATIONS.MODULE_CREATE"></label>\n                        <md-select ng-model="vm_cc.zohoConfiguration.moduleCreate" ng-change="vm_cc.selectChangedAdvanced()" ng-disabled="!vm_cc.crudPermissions.canEdit">\n                          <md-option ng-value="option.key" ng-repeat="option in [{key: \'nothing\', value: \'Nothing\'}, {key: \'contact\', value: \'Contact\'}, {key: \'lead\', value: \'Lead\'}]">\n                            {{ option.value }}</md-option>\n                        </md-select>\n                      </div>\n                    </md-tab-body>\n                  </md-tab>\n\n\n                </md-tabs>\n                <div class="padding-20" ng-if="!vm_cc.configurations.length && vm_cc.crudPermissions.canEdit" ng-click="vm_cc.createOrEditZohoConfiguration($event)" layout="row" layout-sm="column" layout-align="center center" layout-wrap>\n                  <div class="padding-20 md-whiteframe-3dp md-accent-bg" layout="column" layout-align="center center">\n                    <md-button class="md-icon-button">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                    <span aria-label="add configuration" translate translate-attr-label="INTEGRATIONS.ADD_CONFIGURATION">ADD CONFIGURATION</span>\n                  </div>\n                </div>\n              </md-card>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/integrations/views/zohoAccounts/zohoAccounts.html",'<div id="zohoAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-heart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="INTEGRATIONS.ZOHOACCOUNTS">ZohoAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="INTEGRATIONS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedZohoAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedZohoAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="INTEGRATIONS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-zohoAccounts-count">\n          <span>{{vm.selectedZohoAccounts.length}}</span>\n          <span translate="INTEGRATIONS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="INTEGRATIONS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllZohoAccounts()" translate="INTEGRATIONS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectZohoAccounts()" translate="INTEGRATIONS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedZohoAccounts" csv-label="true" filename="zohoAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedZohoAccounts($event)" aria-label="delete selected" translate translate-attr-label="INTEGRATIONS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- ZOHOACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedZohoAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getZohoAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'INTEGRATIONS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'INTEGRATIONS.NAME\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'INTEGRATIONS.HOST\' | translate }}</th>\n                <th md-column md-order-by="zone">{{ \'INTEGRATIONS.ZONE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.zohoAccounts.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="INTEGRATIONS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="zohoAccount" md-select-id="id" ng-repeat="zohoAccount in vm.zohoAccounts.rows">\n                <td md-cell ng-if="zohoAccount.userpic"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="api/users/{{zohoAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!zohoAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{zohoAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="id ">{{zohoAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="name ">{{zohoAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="host ">{{ vm.arrayhost[zohoAccount.host].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(zohoAccount, ev) : vm.createOrEditZohoAccount($event, zohoAccount)" md-cell class="zone ">{{ vm.arrayzone[zohoAccount.zone].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="INTEGRATIONS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(zohoAccount, $event    )" translate="INTEGRATIONS.EDIT_ZOHOACCOUNT">\n                          Edit ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.testtestintegrationaccount(zohoAccount, $event    )" translate="INTEGRATIONS.TEST_ZOHOACCOUNT">\n                          Test ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(zohoAccount, $event    )" translate="INTEGRATIONS.DELETE_ZOHOACCOUNT">\n                          Delete ZohoAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'INTEGRATIONS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'INTEGRATIONS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'INTEGRATIONS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.zohoAccounts.count}}" md-on-paginate="vm.getZohoAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / ZOHOACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD ZOHOACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-zohoAccount-button" ng-click="vm.createOrEditZohoAccount($event)" aria-label="add zohoAccount" translate translate-attr-aria-label="INTEGRATIONS.ADD_ZOHOACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD ZOHOACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/jscripty/views/projects/create/dialog.html",'<md-dialog class="project-dialog" aria-label="New Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.project.description">\n\n        <div ng-messages="projectForm[\'description\'].$error" ng-show="projectForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newProject" ng-click="vm.saveProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid || projectForm.$pristine" aria-label="SAVE" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newProject" ng-click="vm.addNewProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="ADD" translate="JSCRIPTY.ADD_PROJECT" translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n          ADD PROJECT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newProject" ng-click="vm.deleteProject($event)" aria-label="DELETE" translate translate-attr-aria-label="JSCRIPTY.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="JSCRIPTY.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/clone/clone.html",'<md-dialog class="project-dialog" aria-label="Clone Project">\n  <form name="projectForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="JSCRIPTY.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newProject">\n\n        <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n        <div ng-messages="projectForm[\'name\'].$error" ng-show="projectForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneProject()" class="send-button md-accent md-raised" ng-disabled="projectForm.$invalid" aria-label="CLONE" translate="JSCRIPTY.CLONE_PROJECT" translate-attr-aria-label="JSCRIPTY.CLONE_PROJECT">\n        CLONE PROJECT\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/sessions/dialog.html",'<md-dialog class="session-dialog" aria-label="New Session">\n  <form name="sessionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <md-list>\n        <md-subheader class="md-no-sticky">\n          <div class="margin-bottom-5"><span translate="JSCRIPTY.ANSWERS">Answers</span></div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.STARTTIME" class="ng-scope font-weight-700">Start Time</span>: <span class="ng-binding">{{vm.session.starttime | date:\'medium\'}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.MEMBERNAME" class="ng-scope font-weight-700">Member Name</span>: <span class="ng-binding">{{vm.session.membername}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.PROJECT" class="ng-scope font-weight-700">Project</span>: <span class="ng-binding">{{vm.project.name}}</span>\n          </div>\n        </md-subheader>\n        <md-list-item ng-if="vm.questions.rows.length" class="md-2-line contact-item" ng-repeat="question in vm.questions.rows">\n          <div class="md-list-item-text compact">\n            <h3>{{$index+1}}. {{question.question}}</h3>\n            <p>{{question.answer}}</p>\n          </div>\n          <md-divider ng-if="!$last"></md-divider>\n        </md-list-item>\n        <md-list-item ng-if="!vm.questions.rows.length" class="md-2-line contact-item">\n          <div class="md-list-item-text compact">\n            <h3><span class="text-boxed-light" translate="JSCRIPTY.NO_RESULTS_AVAILABLE">No results available</span></h3>\n          </div>\n        </md-list-item>\n      </md-list>\n\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/main/apps/jscripty/views/projects/edit/view.html",'<div id="jscripty-project" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-projects-button md-icon-button" aria-label="Go to projects" ng-click="vm.gotoProjects()" translate translate-attr-aria-label="JSCRIPTY.GO_TO_PROJECTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="project-image" hide-xs>\n          <img ng-src="assets/images/business/projects.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.project.id}}\n            <span ng-if="vm.project.name">{{vm.project.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="JSCRIPTY.CREATED_AT"></span> <span>{{vm.project.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.project, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="JSCRIPTY.CLONE_PROJECT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveProject()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (builderForm.$invalid) || (previewForm.$invalid) || (sessionsForm.$invalid) || (answersForm.$invalid)" translate="JSCRIPTY.SAVE" translate-attr-aria-label="JSCRIPTY.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="JSCRIPTY.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.project.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="JSCRIPTY.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="JSCRIPTY.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.enableUncompleteSave" aria-label="EnableUncompleteSave" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.ENABLEUNCOMPLETESAVE">EnableUncompleteSave</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.ENABLEUNCOMPLETESAVE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.project.sendUnpauseOnSubmit" aria-label="SendUnpauseOnSubmit" ng-disabled="!vm.crudPermissions.canEdit"><span translate="JSCRIPTY.SENDUNPAUSEONSUBMIT">SendUnpauseOnSubmit</span></md-switch>\n                <div class="hint"><span translate="JSCRIPTY.HELP.SENDUNPAUSEONSUBMIT"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="JSCRIPTY.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.project.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="JSCRIPTY.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.BUILDER">BUILDER</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container builder md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectBuilderController as vm_bc" ng-init="vm_bc.init(vm.project)">\n              <mw-form-builder ng-if="vm_bc.project.formData" form-data="vm_bc.project.formData" options="vm_bc.optionsBuilder" read-only="false"></mw-form-builder>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.PREVIEW">PREVIEW</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container preview md-background-bg md-whiteframe-1dp">\n            <div layout="column" layout-align="center" ng-controller="ProjectViewerController as vm_vc" ng-init="vm_vc.init(vm.project)">\n              <div layout="row" layout-align="center">\n                <md-button class="md-raised md-accent" aria-label="Reset" ng-click="vm_vc.resetViewer()">\n                  Reset\n                </md-button>\n              </div>\n              <mw-form-viewer ng-if="vm_vc.project.formData" form-data="vm_vc.project.formData" response-data="vm_vc.responseData" on-submit="vm_vc.onSubmit($event)" api="vm_vc.formViewer"></mw-form-viewer>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.SESSIONS">SESSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container sessions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectSessionsController as vm_dc" ng-init="vm_dc.init(vm.project, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="JSCRIPTY.SESSIONS">Sessions</span>\n                  <ms-search-bar on-search="vm_dc.getProjectSessions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedProjectSessions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedProjectSessions.length}} {{vm_dc.selectedProjectSessions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedProjectSessions" csv-label="true" filename="projects.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedProjectSessions($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedProjectSessions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getProjectSessions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'JSCRIPTY.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'JSCRIPTY.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'JSCRIPTY.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="membername">\n                        {{ \'JSCRIPTY.MEMBERNAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'JSCRIPTY.CALLERIDNUM\' | translate }}\n                      </th>\n                      <th md-column md-order-by="completed">\n                        {{ \'JSCRIPTY.COMPLETE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="session" md-select-id="id" ng-repeat="session in vm_dc.projectSessions.rows">\n                      <td md-cell>\n                        {{session.id}}\n                      </td>\n                      <td md-cell>\n                        {{ session.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ session.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{session.membername}}\n                      </td>\n                      <td md-cell>\n                        {{session.calleridnum}}\n                      </td>\n                      <td md-cell class="completed ">\n                        <md-icon md-colors="{color: {{session.completed ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{session.completed? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.showQuestionsProjectSession($event, session)" translate="JSCRIPTY.SHOW_QUESTIONS_SESSION">\n                                Results Session\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(session, $event)" translate="JSCRIPTY.DELETE_SESSION">\n                                Delete Session\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.projectSessions.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="JSCRIPTY.NO_SESSION_AVAILABLE">No session available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.projectSessions.count}}" md-on-paginate="vm_dc.getProjectSessions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="JSCRIPTY.ANSWERS">ANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="project-detail-form-container answers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="ProjectAnswersController as vm_an" ng-init="vm_an.init(vm.project, vm.userProfile)">\n              <div class="pb-16" layout="row">\n                <div class="h2 secondary-text" translate="JSCRIPTY.ANSWERS" flex>Answers</div>\n                <div layout="row" layout-align="space-between center" flex>\n                  <md-date-range localization-map="vm_an.localizationMap" ng-model="vm_an.pickerModel" auto-confirm="true" show-template="true" md-on-select="vm_an.getAnswers()" placeholder="{{ \'DASHBOARDS.ALL\' | translate }}"></md-date-range>\n                  <md-button type="button" ng-if="vm_an.currentUser.role === \'admin\' || vm_an.userProfile.downloadJscriptySessions" ng-disabled="!vm_an.answers" ng-click="vm_an.getSummary($event)" class="md-accent md-raised md-button ng-scope md-default-theme md-ink-ripple md-green-500-bg md-icon-button" title="{{\'JSCRIPTY.EXPORT_TO_CSV\' | translate}}">\n                    <md-icon md-font-icon="icon-file-excel" class="md-default-theme md-font material-icons icon-file-excel"></md-icon>\n                  </md-button>\n                </div>\n              </div>\n              <div layout="row">\n                <md-card class="md-whiteframe-1dp" ng-if="vm_an.answers && vm_an.hasIdAnswers" flex>\n                  <md-list>\n                    <md-list-item class="md-2-line contact-item" ng-repeat="(key, question) in vm_an.answers">\n                      <div class="md-list-item-text compact" layout-padding>\n                        <h3>{{question.question}}</h3>\n                        <md-table-container>\n                          <table md-table>\n                            <thead md-head>\n                              <tr md-row>\n                                <th md-column></th>\n                                <th md-column>#</th>\n                                <th md-column>%</th>\n                              </tr>\n                            </thead>\n                            <tbody md-body>\n                              <tr md-row ng-repeat="(key, value) in question.answers">\n                                <td md-cell>{{key}}</td>\n                                <td md-cell width="20px">{{value}}</td>\n                                <td md-cell width="20px">{{value*100/question.sum | number:1}}</td>\n                              </tr>\n                              <tr md-row>\n                                <td md-cell><b>{{\'JSCRIPTY.TOTAL\' | translate}}</b></td>\n                                <td md-cell width="20px"><b>{{question.sum}}</b></td>\n                                <td md-cell width="20px"><b>100</b></td>\n                              </tr>\n                            </tbody>\n                          </table>\n                        </md-table-container>\n                      </div>\n                      <md-divider ng-if="!$last"></md-divider>\n                    </md-list-item>\n                  </md-list>\n                </md-card>\n                <span ng-if="!vm_an.answers || !vm_an.hasIdAnswers" class="text-boxed-light" translate="JSCRIPTY.NO_ANSWERS_AVAILABLE">No answers available</span>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/jscripty/views/projects/projects.html",'<div id="projects" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-script" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="JSCRIPTY.PROJECTS">Projects</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="JSCRIPTY.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedProjects.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedProjects =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="JSCRIPTY.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-projects-count">\n          <span>{{vm.selectedProjects.length}}</span>\n          <span translate="JSCRIPTY.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="JSCRIPTY.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllProjects()" translate="JSCRIPTY.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectProjects()" translate="JSCRIPTY.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedProjects" csv-label="true" filename="projects.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedProjects($event)" aria-label="delete selected" translate translate-attr-label="JSCRIPTY.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PROJECT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedProjects" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getProjects">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'JSCRIPTY.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'JSCRIPTY.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'JSCRIPTY.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'JSCRIPTY.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.projects.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="JSCRIPTY.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="project" md-select-id="id" ng-repeat="project in vm.projects.rows">\n                <td md-cell ng-if="project.userpic"><img class="avatar" alt="{{project.name}}" ng-src="api/users/{{project.id}}/avatar" /></td>\n                <td md-cell ng-if="!project.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{project.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="id ">{{project.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="name ">{{project.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="description ">{{project.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(project, ev) : vm.createOrEditProject($event, project)" md-cell class="createdAt ">{{project.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="JSCRIPTY.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(project, $event    )" translate="JSCRIPTY.EDIT_PROJECT">\n                          Edit Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(project, $event    )" translate="JSCRIPTY.CLONE_PROJECT">\n                          clone Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.sessionsgoto(project, $event    )" translate="JSCRIPTY.SESSIONS_PROJECT">\n                          Sessions Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(project, $event    )" translate="JSCRIPTY.DELETE_PROJECT">\n                          Delete Project\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'JSCRIPTY.PAGE\' | translate}}:\', rowsPerPage: \'{{\'JSCRIPTY.ROWSPERPAGE\' | translate}}:\', of: \'{{\'JSCRIPTY.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.projects.count}}" md-on-paginate="vm.getProjects" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PROJECT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PROJECT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-project-button" ng-click="vm.createOrEditProject($event)" aria-label="add project" translate translate-attr-aria-label="JSCRIPTY.ADD_PROJECT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PROJECT BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/create/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailAccountForm[\'name\'].$error" ng-show="mailAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'key\'].$error" ng-show="mailAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.EMAIL_ADDRESS">Email Address</label>\n        <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n\n        <div ng-messages="mailAccountForm[\'email\'].$error" ng-show="mailAccountForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email Address field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email Address must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.mailAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'ListId\'].$error" ng-show="mailAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.mailAccount.active" aria-label="Active"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.newMailAccount" class="md-block">\n        <label translate="MAIL.SERVICE">Service</label>\n        <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n            <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.host\'].$error" ng-show="mailAccountForm[\'Imap.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.IMAP_PORT">IMAP Port</label>\n            <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Imap.port\'].$error" ng-show="mailAccountForm[\'Imap.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\n            <label translate="MAIL.SMTP_HOST">SMTP Host</label>\n            <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.host\'].$error" ng-show="mailAccountForm[\'Smtp.host\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP Host field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block mb-0">\n            <label translate="MAIL.SMTP_PORT">SMTP Port</label>\n            <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n            <div ng-messages="mailAccountForm[\'Smtp.port\'].$error" ng-show="mailAccountForm[\'Smtp.port\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP Port field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'password\'].$error" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailAccount.description">\n        <div ng-messages="mailAccountForm[\'description\'].$error" ng-show="mailAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailAccount" ng-click="vm.saveMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid || mailAccountForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailAccount" ng-click="vm.addNewMailAccount()" class="send-button md-accent md-raised" ng-disabled="mailAccountForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILACCOUNT" translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n          ADD MAIL ACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailAccount" ng-click="vm.deleteMailAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/agentadd/agentadd.html",'<md-dialog class="mailAccount-dialog" aria-label="mailAccount" ng-init="vm.onInit()">\n  <form name="mailAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILACCOUNT">Add Agent to mailAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/agent/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'agent\'].$error" ng-show="mailAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'times\'].$error" ng-show="mailAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.REPLY_TYPE">Reply_Type</label>\n        <md-select name="replyType" ng-model="vm.autoreply.replyType" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="0">Reply</md-option>\n          <md-option ng-value="1">Reply All</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'replyType\'].$error" ng-show="mailAccountFormApp[\'replyType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.REPLY_TYPE_REQUIRED">Reply_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.TEXT">Text</label>\n        <textarea aria-label="Text text" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.autoreply.text"></textarea>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/close/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'disposition\'].$error" ng-show="mailAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'condition\'].$error" ng-show="mailAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'truepriority\'].$error" ng-show="mailAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'falsepriority\'].$error" ng-show="mailAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'priority\'].$error" ng-show="mailAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/noop/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'value\'].$error" ng-show="mailAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/queue/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'queue\'].$error" ng-show="mailAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'timeout\'].$error" ng-show="mailAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/system/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="mailAccountFormApp[\'command\'].$error" ng-show="mailAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'variable\'].$error" ng-show="mailAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/apps/tag/dialog.html",'<md-dialog class="mailAccount-dialog" aria-label="New MailAccount">\n  <form name="mailAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountFormApp[\'tag\'].$error" ng-show="mailAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveMailAccountApp()" class="send-button md-accent md-raised" ng-disabled="mailAccountFormApp.$invalid || mailAccountFormApp.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/mailCannedAnswers/dialog.html",'<md-dialog class="mailCannedAnswer-dialog" aria-label="New MailCannedAnswer">\n  <form name="mailCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.mailCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="mailCannedAnswerForm[\'key\'].$error" ng-show="mailCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="MAIL.VALUE">Value</label>\n        <textarea aria-label="Value value" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailCannedAnswer.value"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailCannedAnswer.description">\n\n        <div ng-messages="mailCannedAnswerForm[\'description\'].$error" ng-show="mailCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailCannedAnswer" ng-click="vm.saveMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid || mailCannedAnswerForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailCannedAnswer" ng-click="vm.addNewMailCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="mailCannedAnswerForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILCANNEDANSWER" translate-attr-aria-label="MAIL.ADD_MAILCANNEDANSWER">\n          ADD MAILCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailCannedAnswer" ng-click="vm.deleteMailCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailAccounts/edit/view.html",'<div id="mail-mailAccount" class="page-layout simple tabbed" layout="column">\n\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailAccounts-button md-icon-button" aria-label="Go to mailAccounts" ng-click="vm.goToMailAccounts()" translate translate-attr-aria-label="MAIL.GO_TO_MAILACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailAccount-image" hide-xs>\n          <img ng-src="assets/images/business/mailAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailAccount.id}}\n            <span ng-if="vm.mailAccount.name">{{vm.mailAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.goToRealtime()" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MAIL.GOTO_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.addAgent(vm.mailAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (credentialsForm.$invalid) || (templateForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (imapForm.$invalid) || (smtpForm.$invalid) || (dispositionForm.$invalid) || (mailDispositionsForm.$invalid) || (mailCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.mailAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="MAIL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.EMAIL_ADDRESS">Email_Address</label>\n                <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_REQUIRED">Email_Address field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="MAIL.ERRORS.EMAIL_ADDRESS_MUST_VALID">Email_Address must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.mailAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.markAsUnread" aria-label="mark_as_unread" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MARK_AS_UNREAD">mark_as_unread</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.MARK_AS_UNREAD"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.mailAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="credentialsForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.IMAP">IMAP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container imap md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.IMAP">IMAP</div>\n            </div>\n            <form name="imapForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_HOST">IMAP_Host</label>\n                <input type="text" name="Imap.host" ng-model="vm.mailAccount.Imap.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.host\'].$error" ng-show="imapForm[\'Imap.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_HOST_REQUIRED">IMAP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.IMAP_PORT">IMAP_Port</label>\n                <input type="number" name="Imap.port" ng-model="vm.mailAccount.Imap.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.port\'].$error" ng-show="imapForm[\'Imap.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.IMAP_PORT_REQUIRED">IMAP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.tls" aria-label="ssl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SSL">ssl</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Imap.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Imap.user" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="imapForm[\'Imap.user\'].$error" ng-show="imapForm[\'Imap.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Imap.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Imap.password" ng-model="vm.mailAccount.Imap.password" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="imapForm[\'Imap.password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.MAILBOX">Mailbox</label>\n                <input type="text" name="Imap.mailbox" ng-model="vm.mailAccount.Imap.mailbox" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.mailbox\'].$error" ng-show="imapForm[\'Imap.mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MAILBOX_REQUIRED">mailbox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.CONNTIMEOUT">Connection Timeout</label>\n                <input type="number" name="Imap.connTimeout" ng-model="vm.mailAccount.Imap.connTimeout" min="1" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.connTimeout\'].$error" ng-show="imapForm[\'Imap.connTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_REQUIRED">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AUTHTIMEOUT">Authorization Timeout</label>\n                <input type="number" name="Imap.authTimeout" ng-model="vm.mailAccount.Imap.authTimeout" min="1" value="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="imapForm[\'Imap.authTimeout\'].$error" ng-show="imapForm[\'Imap.authTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_REQUIRED">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.SMTP">SMTP</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container smtp md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.SMTP">SMTP</div>\n            </div>\n            <form name="smtpForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_HOST">SMTP_Host</label>\n                <input type="text" name="Smtp.host" ng-model="vm.mailAccount.Smtp.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.host\'].$error" ng-show="smtpForm[\'Smtp.host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_HOST_REQUIRED">SMTP_Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.SMTP_PORT">SMTP_Port</label>\n                <input type="number" name="Smtp.port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="smtpForm[\'Smtp.port\'].$error" ng-show="smtpForm[\'Smtp.port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.SMTP_PORT_REQUIRED">SMTP_Port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="Secure" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.SECURE">Secure</span></md-switch>\n                <div class="hint"><span translate="MAIL.HELP.SECURE"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="Authentication" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.Smtp.authentication" class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="Smtp.user" ng-model="vm.mailAccount.Smtp.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.user\'].$error" ng-show="smtpForm[\'Smtp.user\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.mailAccount.Smtp.authentication">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="Smtp.pass" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="MAIL.PASSWORD" required>\n                <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n                <div ng-messages="smtpForm[\'Smtp.pass\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container template md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_FAMILY">Font_Family</label>\n                <ms-font-family name="fontFamily" ng-model="vm.mailAccount.fontFamily" required></ms-font-family>\n                <div class="hint"><span translate="MAIL.HELP.FONT_FAMILY"></span></div>\n                <div ng-messages="templateForm[\'fontFamily\'].$error" ng-show="templateForm[fontFamily].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_FAMILY_REQUIRED">Font_Family field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.FONT_SIZE">Font_Size</label>\n                <input type="number" name="fontSize" ng-model="vm.mailAccount.fontSize" min="8" max="72" value="13" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MAIL.HELP.FONT_SIZE"></span></div>\n                <div ng-messages="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'fontSize\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_REQUIRED">Font_Size field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>8</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">Font_Size must be a valid greater or equal than</span> <span>72</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.TEMPLATE">Template</label>\n                <textarea aria-label="Template template" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.template"></textarea>\n              </div>\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="MAIL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.mailAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.queueTransfer == true" class="md-block">\n                <label translate="MAIL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.mailAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.agentTransfer == true" class="md-block">\n                <label translate="MAIL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.mailAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n\n          <div class="mailAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.mailAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MAIL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.mailAccount.mandatoryDisposition" class="md-block">\n                <label translate="MAIL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.mailAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="MailAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="mailAccount-detail-form-container maildispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="MAIL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add mail dispositions" translate translate-attr-label="MAIL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="mailAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container mailcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountMailCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.MAILCANNEDANSWERS">MailCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountMailCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event)" aria-label="add mailCannedAnswer" translate translate-attr-label="MAIL.ADD_MAILCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountMailCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountMailCannedAnswers.length}} {{vm_dc.selectedMailAccountMailCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountMailCannedAnswers" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountMailCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountMailCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountMailCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'MAIL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'MAIL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'MAIL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mailCannedAnswer" md-select-id="id" ng-repeat="mailCannedAnswer in vm_dc.mailAccountMailCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>{{mailCannedAnswer.value | htmlToPlaintext }}</td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{mailCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" md-cell>\n                        {{ mailCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditMailAccountMailCannedAnswer($event, mailCannedAnswer)" translate="MAIL.EDIT_MAILCANNEDANSWER">\n                                Edit MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mailCannedAnswer, $event)" translate="MAIL.DELETE_MAILCANNEDANSWER">\n                                Delete MailCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountMailCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_MAILCANNEDANSWER_AVAILABLE">No mailcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountMailCannedAnswers.count}}" md-on-paginate="vm_dc.getMailAccountMailCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.mailAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="MAIL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedMailAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedMailAccountApps.length}} {{vm_ac.selectedMailAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedMailAccountApps($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedMailAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.mailAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editMailAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editMailAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.mailAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MailAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.mailAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MAIL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getMailAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getMailAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getMailAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="MAIL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMailAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMailAccountInteractions.length}} {{vm_dc.selectedMailAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMailAccountInteractions" csv-label="true" filename="mailAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMailAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMailAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMailAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'MAIL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'MAIL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="subject">\n                        {{ \'MAIL.SUBJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'MAIL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'MAIL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'MAIL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'MAIL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'MAIL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.mailAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <div class="width-300">\n                          <span class="text-truncate font-size-12">\n                            {{interaction.subject}}\n                          </span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'MAIL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'MAIL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spymailInteraction($event, interaction)" translate="MAIL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event, true)" translate="MAIL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.mailInteractionDownload(interaction, $event)" translate="MAIL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="MAIL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.mailAccountInteractions.rows.length">\n                      <td md-cell colspan="13">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MAIL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.mailAccountInteractions.count}}" md-on-paginate="vm_dc.getMailAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailAccounts-count">\n          <span>{{vm.selectedMailAccounts.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailAccounts()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailAccounts()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailAccounts" csv-label="true" filename="mailAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailAccounts($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="provider">{{ \'MAIL.SERVICE\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'MAIL.KEY\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'MAIL.EMAIL_ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MAIL.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailAccount" md-select-id="id" ng-repeat="mailAccount in vm.mailAccounts.rows" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td md-cell class="active">\n                  <md-icon md-colors="{color: {{mailAccount.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{mailAccount.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td md-cell class="description ">{{mailAccount.description}}</td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email Account\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailAccounts.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailAccount-button" ng-click="vm.createOrEditMailAccount($event)" aria-label="add mailAccount" translate translate-attr-aria-label="MAIL.ADD_MAILACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/create/dialog.html",'<md-dialog class="mailQueue-dialog" aria-label="New MailQueue">\n  <form name="mailQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newMailQueue">\n\n        <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n        <div ng-messages="mailQueueForm[\'name\'].$error" ng-show="mailQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.mailQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="mailQueueForm[\'strategy\'].$error" ng-show="mailQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="mailQueueForm[\'timeout\'].$error" ng-show="mailQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailQueue.description">\n\n        <div ng-messages="mailQueueForm[\'description\'].$error" ng-show="mailQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailQueue" ng-click="vm.saveMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid || mailQueueForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailQueue" ng-click="vm.addNewMailQueue()" class="send-button md-accent md-raised" ng-disabled="mailQueueForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILQUEUE" translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n          ADD MAILQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailQueue" ng-click="vm.deleteMailQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/agentadd/agentadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.AGENTADD_MAILQUEUE">Add Agent to mailQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/teamadd/teamadd.html",'<md-dialog class="mailQueue-dialog" aria-label="mailQueue" ng-init="vm.onInit()">\n  <form name="mailQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MAIL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailQueues/edit/view.html",'<div id="mail-mailQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-mailQueues-button md-icon-button" aria-label="Go to mailQueues" ng-click="vm.gotoMailQueues()" translate translate-attr-aria-label="MAIL.GO_TO_MAILQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="mailQueue-image" hide-xs>\n          <img ng-src="assets/images/business/mailQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.mailQueue.id}}\n            <span ng-if="vm.mailQueue.name">{{vm.mailQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MAIL.CREATED_AT"></span> <span>{{vm.mailQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.mailQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MAIL.TEAMADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.mailQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MAIL.AGENTADD_MAILQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMailQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MAIL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MAIL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.mailQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MAIL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MAIL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.mailQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.mailQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MAIL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.mailQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/mail/views/mailQueues/mailQueues.html",'<div id="mailQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILQUEUES">MailQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailQueues-count">\n          <span>{{vm.selectedMailQueues.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailQueues()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailQueues()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailQueues" csv-label="true" filename="mailQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailQueues($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MAIL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailQueue" md-select-id="id" ng-repeat="mailQueue in vm.mailQueues.rows">\n                <td md-cell ng-if="mailQueue.userpic"><img class="avatar" alt="{{mailQueue.name}}" ng-src="api/users/{{mailQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="id ">{{mailQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="name ">{{mailQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailQueue, ev) : vm.createOrEditMailQueue($event, mailQueue)" md-cell class="strategy ">{{ vm.arraystrategy[mailQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(mailQueue, $event    )" translate="MAIL.EDIT_MAILQUEUE">\n                          Edit MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(mailQueue, $event    )" translate="MAIL.TEAMADD_MAILQUEUE">\n                          teamadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(mailQueue, $event    )" translate="MAIL.AGENTADD_MAILQUEUE">\n                          agentadd MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailQueue, $event    )" translate="MAIL.DELETE_MAILQUEUE">\n                          Delete MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(mailQueue, $event    )" translate="MAIL.GOTOREALTIME_MAILQUEUE">\n                          goToRealtime MailQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailQueues.count}}" md-on-paginate="vm.getMailQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailQueue-button" ng-click="vm.createOrEditMailQueue($event)" aria-label="add mailQueue" translate translate-attr-aria-label="MAIL.ADD_MAILQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/mailSubtatuses/create/dialog.html",'<md-dialog class="mailSubstatus-dialog" aria-label="New MailSubstatus">\n  <form name="mailSubstatusForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MAIL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.mailSubstatus.name" ng-required="true" autofocus>\n\n        <div ng-messages="mailSubstatusForm[\'name\'].$error" ng-show="mailSubstatusForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MAIL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.mailSubstatus.description">\n\n        <div ng-messages="mailSubstatusForm[\'description\'].$error" ng-show="mailSubstatusForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MAIL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMailSubstatus" ng-click="vm.saveMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid || mailSubstatusForm.$pristine" aria-label="SAVE" translate="MAIL.SAVE" translate-attr-aria-label="MAIL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMailSubstatus" ng-click="vm.addNewMailSubstatus()" class="send-button md-accent md-raised" ng-disabled="mailSubstatusForm.$invalid" aria-label="ADD" translate="MAIL.ADD_MAILSUBSTATUS" translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n          ADD MAILSUBSTATUS\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMailSubstatus" ng-click="vm.deleteMailSubstatus($event)" aria-label="DELETE" translate translate-attr-aria-label="MAIL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MAIL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/mail/views/mailSubtatuses/mailSubtatuses.html",'<div id="mailSubtatuses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILSUBSTATUSES">MailSubstatuses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMailSubstatuses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMailSubstatuses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MAIL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-mailSubtatuses-count">\n          <span>{{vm.selectedMailSubstatuses.length}}</span>\n          <span translate="MAIL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MAIL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMailSubstatuses()" translate="MAIL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMailSubstatuses()" translate="MAIL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMailSubstatuses" csv-label="true" filename="mailSubtatuses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMailSubstatuses($event)" aria-label="delete selected" translate translate-attr-label="MAIL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MAILSUBSTATUS TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMailSubstatuses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailSubstatuses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MAIL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MAIL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.mailSubtatuses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="mailSubstatus" md-select-id="id" ng-repeat="mailSubstatus in vm.mailSubtatuses.rows">\n                <td md-cell ng-if="mailSubstatus.userpic"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="api/users/{{mailSubstatus.id}}/avatar" /></td>\n                <td md-cell ng-if="!mailSubstatus.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{mailSubstatus.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="id ">{{mailSubstatus.id}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="name ">{{mailSubstatus.name}}</td>\n                <td ng-click="vm.createOrEditMailSubstatus($event, mailSubstatus)" md-cell class="description ">{{mailSubstatus.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MAIL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(mailSubstatus, $event    )" translate="MAIL.EDIT_MAILSUBSTATUS">\n                          Edit MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(mailSubstatus, $event    )" translate="MAIL.DELETE_MAILSUBSTATUS">\n                          Delete MailSubstatus\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.mailSubtatuses.count}}" md-on-paginate="vm.getMailSubstatuses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MAILSUBSTATUS TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MAILSUBSTATUS BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-mailSubstatus-button" ng-click="vm.createOrEditMailSubstatus($event)" aria-label="add mailSubstatus" translate translate-attr-aria-label="MAIL.ADD_MAILSUBSTATUS">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MAILSUBSTATUS BUTTON --\x3e\n</div>'),e.put("app/main/apps/mail/views/realtime/accounts/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MAIL.ACCOUNTS">Accounts</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.vm.getMailAccounts()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMailAccounts">\n      <tr md-row>\n        <th md-column md-order-by="name">{{ \'MAIL.NAME\' | translate}}</th>\n        <th md-column>{{\'MAIL.KEY\' | translate}}</th>\n        <th md-column>{{\'MAIL.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MAIL.IN\' | translate}}</th>\n        <th md-column>{{\'MAIL.OUT\' | translate}}</th>\n        <th md-column>{{\'MAIL.IMAP_STATUS\' | translate}}</th>\n        <th md-column>{{\'MAIL.SMTP_STATUS\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.mailAccounts">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="MAIL.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="vm.mailAccounts[value]" md-select-id="id" ng-repeat="(id, value) in vm.order">\n        <td md-cell>{{vm.mailAccounts[value].name}}</td>\n        <td md-cell>{{vm.mailAccounts[value].key}}</td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(vm.mailAccounts[value].in || 0) + (vm.mailAccounts[value].out || 0)}}</span>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-down-bold blue-fg"></md-icon>\n            </span>\n            <span class="md-capture blue-fg">{{vm.mailAccounts[value].in || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.in">{{vm.mailAccounts[value].lastIn ?  (vm.mailAccounts[value].lastIn | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row">\n            <span>\n              <md-icon md-font-icon="icon-arrow-up-bold green-fg"></md-icon>\n            </span>\n            <span class="md-capture green-fg">{{vm.mailAccounts[value].out || 0}}</span>\n            <span class="text-boxed" ng-if="mailAccount.out">{{vm.mailAccounts[value].lastOut ?  (vm.mailAccounts[value].lastOut | date: \'shortTime\') : \'\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Imap.messageStatus}}</md-tooltip>\n                <div ng-switch="vm.mailAccounts[value].Imap.status">\n                  <md-icon ng-switch-when="error" md-font-icon="icon-alert yellow-fg"></md-icon>\n                  <md-icon ng-switch-when="disabled" md-font-icon="icon-close grey-fg"></md-icon>\n                  <md-icon ng-switch-default md-font-icon="icon-checkbox-marked-circle-outline green-fg"></md-icon>\n                </div>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Imap.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed" ng-if="vm.mailAccounts[value].active && (vm.mailAccounts[value].Imap.lastSync && vm.mailAccounts[value].Imap.lastSync != \'\')">{{vm.mailAccounts[value].Imap.lastSync | date: \'shortTime\'}}</span>\n          </div>\n        </td>\n        <td md-cell>\n          <div layout="row" layout-align="start center" ng-if="vm.mailAccounts[value].Smtp.status">\n            <div layout="column" layout-align="center center">\n              <md-button class="md-icon-button" aria-label="Status">\n                <md-tooltip>{{vm.mailAccounts[value].Smtp.messageStatus}}</md-tooltip>\n                <md-icon md-font-icon="{{ vm.mailAccounts[value].Smtp.status == \'error\' ? \'icon-alert yellow-fg\' : \'icon-checkbox-marked-circle-outline green-fg\'}}"></md-icon>\n              </md-button>\n              <span class="md-caption grey-fg">{{ (\'MAIL.\' + vm.mailAccounts[value].Smtp.status.toUpperCase()) | translate}}</span>\n            </div>\n            <span class="text-boxed">{{vm.mailAccounts[value].Smtp.lastSync | date: \'shortTime\'}}</span>\n          </div>\n          <span class="md-caption grey-fg" ng-if="!vm.mailAccounts[value].Smtp.status">{{ \'MAIL.NEVER_VERIFIED\' | translate }}</span>\n        </td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-button ng-click="vm.goToMailAccount($event, vm.mailAccounts[value])" translate="MAIL.EDIT_ACCOUNT">\n                  Edit Account\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.verifySmtp($event, vm.mailAccounts[value])" translate="MAIL.VERIFY_SMTP">\n                  Verify Smtp\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MAIL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MAIL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MAIL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getMailAccounts" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/mail/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MAIL.ACCOUNTS">Accounts</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/create/dialog.html",'<md-dialog class="plugin-dialog" aria-label="New Plugin">\n  <form name="pluginForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus>\n\n        <div ng-messages="pluginForm[\'name\'].$error" ng-show="pluginForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.TYPE">Type</label>\n        <input type="text" name="type" ng-model="vm.plugin.type" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'type\'].$error" ng-show="pluginForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="!vm.newPlugin"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.plugin.description">\n\n        <div ng-messages="pluginForm[\'description\'].$error" ng-show="pluginForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.ICON">Icon</label>\n        <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true">\n\n        <div ng-messages="pluginForm[\'icon\'].$error" ng-show="pluginForm[\'icon\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n        <md-select name="sidebar" ng-model="vm.plugin.sidebar" required>\n          <md-option ng-value="\'always\'">Always</md-option>\n          <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n          <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n          <md-option ng-value="\'never\'">Never</md-option>\n        </md-select>\n        <div ng-messages="pluginForm[\'sidebar\'].$error" ng-show="pluginForm[\'sidebar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n        <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n        <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl">\n\n        <div ng-messages="pluginForm[\'adminUrl\'].$error" ng-show="pluginForm[\'adminUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n        <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n        <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl">\n\n        <div ng-messages="pluginForm[\'agentUrl\'].$error" ng-show="pluginForm[\'agentUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n        <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'scriptName\'].$error" ng-show="pluginForm[\'scriptName\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n        <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n        <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true">\n\n        <div ng-messages="pluginForm[\'scriptPath\'].$error" ng-show="pluginForm[\'scriptPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MARKETPLACE.VERSION">Version</label>\n        <input type="text" name="version" ng-model="vm.plugin.version" ng-disabled="!vm.newPlugin">\n\n        <div ng-messages="pluginForm[\'version\'].$error" ng-show="pluginForm[\'version\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPlugin" ng-click="vm.savePlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid || pluginForm.$pristine" aria-label="SAVE" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPlugin" ng-click="vm.addNewPlugin()" class="send-button md-accent md-raised" ng-disabled="pluginForm.$invalid" aria-label="ADD" translate="MARKETPLACE.ADD_PLUGIN" translate-attr-aria-label="MARKETPLACE.ADD_PLUGIN">\n          ADD PLUGIN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPlugin" ng-click="vm.deletePlugin($event)" aria-label="DELETE" translate translate-attr-aria-label="MARKETPLACE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MARKETPLACE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/marketplace/views/plugins/edit/view.html",'<div id="marketplace-plugin" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-plugins-button md-icon-button" aria-label="Go to plugins" ng-click="vm.gotoPlugins()" translate translate-attr-aria-label="MARKETPLACE.GO_TO_PLUGINS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="plugin-image" hide-xs>\n          <img ng-src="assets/images/business/plugins.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.plugin.id}}\n            <span ng-if="vm.plugin.name">{{vm.plugin.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MARKETPLACE.CREATED_AT"></span> <span>{{vm.plugin.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.savePlugin()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="MARKETPLACE.SAVE" translate-attr-aria-label="MARKETPLACE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MARKETPLACE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="plugin-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MARKETPLACE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.plugin.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.TYPE">Type</label>\n                <input type="text" name="type" ng-model="vm.plugin.type" disabled>\n\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.plugin.active" aria-label="Active" ng-disabled="true"><span translate="MARKETPLACE.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.plugin.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.ICON">Icon</label>\n                <input type="text" name="icon" ng-model="vm.plugin.icon" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'icon\'].$error" ng-show="generalForm[\'icon\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ICON_REQUIRED">Icon field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.SIDEBAR">Sidebar</label>\n                <md-select name="sidebar" ng-model="vm.plugin.sidebar" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'always\'">Always</md-option>\n                  <md-option ng-value="\'adminOnly\'">Admin Only</md-option>\n                  <md-option ng-value="\'agentOnly\'">Agent Only</md-option>\n                  <md-option ng-value="\'never\'">Never</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sidebar\'].$error" ng-show="generalForm[\'sidebar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SIDEBAR_REQUIRED">Sidebar field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'adminOnly\'" class="md-block">\n                <label translate="MARKETPLACE.ADMINURL">AdminUrl</label>\n                <input type="text" name="adminUrl" ng-model="vm.plugin.adminUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'adminUrl\'].$error" ng-show="generalForm[\'adminUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.ADMINURL_REQUIRED">AdminUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.sidebar === \'always\' || vm.plugin.sidebar === \'agentOnly\'" class="md-block">\n                <label translate="MARKETPLACE.AGENTURL">AgentUrl</label>\n                <input type="text" name="agentUrl" ng-model="vm.plugin.agentUrl" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'agentUrl\'].$error" ng-show="generalForm[\'agentUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.AGENTURL_REQUIRED">AgentUrl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTNAME">ScriptName</label>\n                <input type="text" name="scriptName" ng-model="vm.plugin.scriptName" disabled>\n\n                <div ng-messages="generalForm[\'scriptName\'].$error" ng-show="generalForm[\'scriptName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTNAME_REQUIRED">ScriptName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.plugin.type === \'script\'" class="md-block">\n                <label translate="MARKETPLACE.SCRIPTPATH">ScriptPath</label>\n                <input type="text" name="scriptPath" ng-model="vm.plugin.scriptPath" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'scriptPath\'].$error" ng-show="generalForm[\'scriptPath\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.SCRIPTPATH_REQUIRED">ScriptPath field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MARKETPLACE.VERSION">Version</label>\n                <input type="text" name="version" ng-model="vm.plugin.version" disabled>\n\n                <div ng-messages="generalForm[\'version\'].$error" ng-show="generalForm[\'version\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MARKETPLACE.ERRORS.VERSION_REQUIRED">Version field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/marketplace/views/plugins/plugins.html",'<div id="plugins" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cart" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MARKETPLACE.PLUGINS">Plugins</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MARKETPLACE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPlugins.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPlugins =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MARKETPLACE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-plugins-count">\n          <span>{{vm.selectedPlugins.length}}</span>\n          <span translate="MARKETPLACE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MARKETPLACE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPlugins()" translate="MARKETPLACE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPlugins()" translate="MARKETPLACE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPlugins" csv-label="true" filename="plugins.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPlugins($event)" aria-label="delete selected" translate translate-attr-label="MARKETPLACE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div ng-if="vm.installing">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="MARKETPLACE.INSTALLING">Installing</span>\n            <md-progress-linear md-mode="indeterminate" class="md-accent padding-20"></md-progress-linear>\n          </div>\n        </md-card>\n      </div>\n\n      \x3c!-- PLUGIN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPlugins" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPlugins">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="name">{{ \'MARKETPLACE.NAME\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'MARKETPLACE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MARKETPLACE.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'MARKETPLACE.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="version">{{ \'MARKETPLACE.VERSION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.plugins.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MARKETPLACE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="plugin" md-select-id="id" ng-repeat="plugin in vm.plugins.rows">\n                <td md-cell ng-if="plugin.userpic"><img class="avatar" alt="{{plugin.name}}" ng-src="api/users/{{plugin.id}}/avatar" /></td>\n                <td md-cell ng-if="!plugin.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{plugin.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="name ">{{plugin.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="type ">{{plugin.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{plugin.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{plugin.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="description ">{{plugin.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(plugin, ev) : vm.createOrEditPlugin($event, plugin)" md-cell class="version ">{{plugin.version}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MARKETPLACE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && !plugin.active">\n\n                        <md-button ng-click="vm.installplugin(plugin, $event    )" translate="MARKETPLACE.INSTALL_PLUGIN">\n                          Install Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(plugin, $event    )" translate="MARKETPLACE.EDIT_PLUGIN">\n                          Edit Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.stopplugin(plugin, $event    )" translate="MARKETPLACE.STOP_PLUGIN">\n                          Stop Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active && plugin.type == \'script\'">\n\n                        <md-button ng-click="vm.restartplugin(plugin, $event    )" translate="MARKETPLACE.RESTART_PLUGIN">\n                          Restart Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(plugin, $event  , \'plugins\'   )" translate="MARKETPLACE.DOWNLOAD_PLUGIN">\n                          Download Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit && plugin.active">\n\n                        <md-button ng-click="vm.uninstallplugin(plugin, $event    )" translate="MARKETPLACE.UNINSTALL_PLUGIN">\n                          Uninstall Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(plugin, $event    )" translate="MARKETPLACE.DELETE_PLUGIN">\n                          Delete Plugin\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MARKETPLACE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MARKETPLACE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MARKETPLACE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.plugins.count}}" md-on-paginate="vm.getPlugins" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PLUGIN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD PLUGIN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-plugin-button" ng-click="vm.uploadPlugin($event)" aria-label="upload plugin" translate translate-attr-aria-label="MARKETPLACE.UPLOAD_PLUGIN">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD PLUGIN BUTTON --\x3e\n</div>'),e.put("app/main/apps/marketplace/views/plugins/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="plugin-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="MARKETPLACE.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="MARKETPLACE.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="MARKETPLACE.UPLOADING">Uploading</span>\n          <span>{{vm.plugin.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="MARKETPLACE.FINISH" translate-attr-aria-label="MARKETPLACE.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/hopperdate/hopperdate.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/create/dialog.html",'<md-dialog class="ivrCampaign-dialog" aria-label="New IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'TrunkId\'].$error" ng-show="ivrCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'IntervalId\'].$error" ng-show="ivrCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="ivrCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n        <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" required>\n          <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n        </md-select>\n        <div ng-messages="ivrCampaignForm[\'SquareProjectId\'].$error" ng-show="ivrCampaignForm[\'SquareProjectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n        <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n        <div ng-messages="ivrCampaignForm[\'limitCalls\'].$error" ng-show="ivrCampaignForm[\'limitCalls\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.ivrCampaign.description">\n\n        <div ng-messages="ivrCampaignForm[\'description\'].$error" ng-show="ivrCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newIvrCampaign" ng-click="vm.saveIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid || ivrCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newIvrCampaign" ng-click="vm.addNewIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n          ADD IVRCAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newIvrCampaign" ng-click="vm.deleteIvrCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/clone/clone.html",'<md-dialog class="ivrCampaign-dialog" aria-label="Clone IvrCampaign">\n  <form name="ivrCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newIvrCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="ivrCampaignForm[\'name\'].$error" ng-show="ivrCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneIvrCampaign()" class="send-button md-accent md-raised" ng-disabled="ivrCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n        CLONE IVRCAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.hopper.scheduledat" ng-init="vm.hopper.scheduledat = vm.getDateFromString(vm.hopper.scheduledat)">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/listadd/listadd.html",'<md-dialog class="ivrCampaign-dialog" aria-label="ivrCampaign" ng-init="vm.onInit()">\n  <form name="ivrCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">Add List in IVRCAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/edit/view.html",'<div id="motiondialer-ivrCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-ivrCampaigns-button md-icon-button" aria-label="Go to ivrCampaigns" ng-click="vm.gotoIvrCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_IVRCAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="ivrCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/ivrCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.ivrCampaign.id}}\n            <span ng-if="vm.ivrCampaign.name">{{vm.ivrCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.ivrCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.ivrCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.ivrCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_IVRCAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveIvrCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (advancedForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.ivrCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.active" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.ivrCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.ivrCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.ivrCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.ivrCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.ivrCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.ivrCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="SquareProjectId" ng-model="vm.ivrCampaign.SquareProjectId" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="SquareProjectId.id" ng-repeat="SquareProjectId in vm.projects" ng-disabled="SquareProjectId.canSelect === false">{{ SquareProjectId.name }}</md-option>\n                </md-select>\n                <div ng-messages="campaignForm[\'SquareProjectId\'].$error" ng-show="campaignForm[\'SquareProjectId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONCURRENTCALLS">ConcurrentCalls</label>\n                <input type="number" name="limitCalls" ng-model="vm.ivrCampaign.limitCalls" min="1" max="200" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'limitCalls\'].$error" ng-show="campaignForm[\'limitCalls\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_REQUIRED">ConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">ConcurrentCalls must be a valid greater or equal than</span> <span>200</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.ivrCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.ivrCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.ivrCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.ivrCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.ivrCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.ivrCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.ivrCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.ivrCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.ivrCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.ivrCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.ivrCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.ivrCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.ivrCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.ivrCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.ivrCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.ivrCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.ivrCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.ivrCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.ivrCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.ivrCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.ivrCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.ivrCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.ivrCampaign.dialOrderByScheduledAt" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.ivrCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.ivrCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="ivrCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.ivrCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.ivrCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.ivrCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.ivrCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.ivrCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.ivrCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.ivrCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.ivrCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.ivrCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.ivrCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.ivrCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.ivrCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.ivrCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="ivrCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHoppers.length}} {{vm_dc.selectedIvrCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHoppers" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIvrCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.ivrCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIvrCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHoppers.rows.length">\n                      <td md-cell colspan="15">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHoppers.count}}" md-on-paginate="vm_dc.getIvrCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperHistories.length}} {{vm_dc.selectedIvrCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperHistories" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.ivrCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getIvrCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsIvrCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsIvrCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperFinals.length}} {{vm_dc.selectedIvrCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperFinals" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedIvrCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.ivrCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="28">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="ivrCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IvrCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.ivrCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getIvrCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIvrCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIvrCampaignHopperBlacks.length}} {{vm_dc.selectedIvrCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIvrCampaignHopperBlacks" csv-label="true" filename="ivrCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIvrCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIvrCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.ivrCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.ivrCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.ivrCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getIvrCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/ivrCampaigns/ivrCampaigns.html",'<div id="ivrCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.IVRCAMPAIGNS">IvrCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIvrCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIvrCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-ivrCampaigns-count">\n          <span>{{vm.selectedIvrCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIvrCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIvrCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIvrCampaigns" csv-label="true" filename="ivrCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIvrCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- IVRCAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIvrCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIvrCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="SquareProjectId">{{ \'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.ivrCampaigns.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="ivrCampaign" md-select-id="id" ng-repeat="ivrCampaign in vm.ivrCampaigns.rows">\n                <td md-cell ng-if="ivrCampaign.userpic"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="api/users/{{ivrCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!ivrCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{ivrCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="id ">{{ivrCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="name ">{{ivrCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{ivrCampaign.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{ivrCampaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':ivrCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(ivrCampaign, ev) : vm.createOrEditIvrCampaign($event, ivrCampaign)" md-cell class="SquareProjectId ">{{ (vm.projects | filter : {\'id\':ivrCampaign.SquareProjectId} : true)[0].name }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(ivrCampaign, $event    )" translate="MOTIONDIALER.EDIT_IVRCAMPAIGN">\n                          Edit IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(ivrCampaign, $event    )" translate="MOTIONDIALER.CLONE_IVRCAMPAIGN">\n                          clone IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.LISTADD_IVRCAMPAIGN">\n                          listadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(ivrCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_IVRCAMPAIGN">\n                          blacklistadd IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(ivrCampaign, $event    )" translate="MOTIONDIALER.DELETE_IVRCAMPAIGN">\n                          Delete IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(ivrCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_IVRCAMPAIGN">\n                          goToRealtime IvrCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.ivrCampaigns.count}}" md-on-paginate="vm.getIvrCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / IVRCAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD IVRCAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-ivrCampaign-button" ng-click="vm.createOrEditIvrCampaign($event)" aria-label="add ivrCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_IVRCAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD IVRCAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/create/dialog.html",'<md-dialog class="queueCampaign-dialog" aria-label="New QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n        <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required>\n          <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'TrunkId\'].$error" ng-show="queueCampaignForm[\'TrunkId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n        <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required>\n          <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'IntervalId\'].$error" ng-show="queueCampaignForm[\'IntervalId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n        <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required>\n\n          <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n          <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n          <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="queueCampaignForm[\'dialCheckDuplicateType\'].$error" ng-show="queueCampaignForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.METHOD">Method</label>\n        <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" required>\n          <md-option ng-value="\'progressive\'">Progressive</md-option>\n          <md-option ng-value="\'power\'">PowerDialing</md-option>\n          <md-option ng-value="\'predictive\'">Predictive</md-option>\n          <md-option ng-value="\'preview\'">Preview</md-option>\n          <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialMethod\'].$error" ng-show="queueCampaignForm[\'dialMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n        <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n        <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization">\n\n          <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n          <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialPredictiveOptimization\'].$error" ng-show="queueCampaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n        <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n        <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n        <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n        <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialLimitQueue\'].$error" ng-show="queueCampaignForm[\'dialLimitQueue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n        <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n        <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'dialQueueTimeout\'].$error" ng-show="queueCampaignForm[\'dialQueueTimeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n        <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n        <div ng-messages="queueCampaignForm[\'timeout\'].$error" ng-show="queueCampaignForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.queueCampaign.description">\n\n        <div ng-messages="queueCampaignForm[\'description\'].$error" ng-show="queueCampaignForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newQueueCampaign" ng-click="vm.saveQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid || queueCampaignForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newQueueCampaign" ng-click="vm.addNewQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n          ADD QUEUECAMPAIGN\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newQueueCampaign" ng-click="vm.deleteQueueCampaign($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/agentadd/agentadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">Add Agent to queueCampaign</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/blacklistadd/blacklistadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/clone/clone.html",'<md-dialog class="queueCampaign-dialog" aria-label="Clone QueueCampaign">\n  <form name="queueCampaignForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newQueueCampaign">\n\n        <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n        <div ng-messages="queueCampaignForm[\'name\'].$error" ng-show="queueCampaignForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneQueueCampaign()" class="send-button md-accent md-raised" ng-disabled="queueCampaignForm.$invalid" aria-label="CLONE" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN" translate-attr-aria-label="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n        CLONE QUEUECAMPAIGN\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/hoppers/dialog.html",'<md-dialog class="hopper-dialog" aria-label="New Hopper">\n  <form name="hopperForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div class="md-block">\n        <label translate="MOTIONDIALER.SCHEDULEDAT">ScheduledAt</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click name="scheduledatDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.dateRangeFrom.$error" ng-show="hopperForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click name="scheduledatTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime" ng-change="vm.recalcTZTime()">\n              <div ng-messages="hopperForm.timeRangeFrom.$error" ng-show="hopperForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="MOTIONDIALER.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="MOTIONDIALER.PRIORITY">Priority</label>\n        <md-select name="priority" ng-model="vm.hopper.priority">\n          <md-option ng-value="\'4\'">Highest</md-option>\n          <md-option ng-value="\'3\'">High</md-option>\n          <md-option ng-value="\'2\'">Medium</md-option>\n          <md-option ng-value="\'1\'">Low</md-option>\n          <md-option ng-value="\'0\'">Lowest</md-option>\n        </md-select>\n        <div class="hint"><span translate="MOTIONDIALER.HELP.PRIORITY"></span></div>\n        <div ng-messages="hopperForm[\'priority\'].$error" ng-show="hopperForm[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.hopper.recallme" aria-label="RecallAgent"><span translate="MOTIONDIALER.RECALLAGENT">RecallAgent</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.hopper.recallme" class="md-block">\n        <label translate="MOTIONDIALER.AGENT">Agent</label>\n        <md-select name="UserId" ng-model="vm.hopper.UserId" required>\n          <md-option ng-value="UserId.id" ng-repeat="UserId in vm.agents" ng-disabled="UserId.canSelect === false">{{ UserId.name }}</md-option>\n        </md-select>\n        <div ng-messages="hopperForm[\'UserId\'].$error" ng-show="hopperForm[\'UserId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="MOTIONDIALER.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newHopper" ng-click="vm.saveHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid || hopperForm.$pristine" aria-label="SAVE" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newHopper" ng-click="vm.addNewHopper()" class="send-button md-accent md-raised" ng-disabled="hopperForm.$invalid" aria-label="ADD" translate="MOTIONDIALER.ADD_HOPPER" translate-attr-aria-label="MOTIONDIALER.ADD_HOPPER">\n          ADD HOPPER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newHopper" ng-click="vm.deleteHopper($event)" aria-label="DELETE" translate translate-attr-aria-label="MOTIONDIALER.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="MOTIONDIALER.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/listadd/listadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">Add List in QUEUECAMPAIGN</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect ng-hide="vm.loading" options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n      <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n        <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveLists()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/resetlist/resetlist.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.RESETLIST ">Reset List</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-wrap flex>\n        <div flex-xs flex="50">\n          <md-checkbox aria-label="Select All" ng-checked="vm.isChecked()" md-indeterminate="vm.isIndeterminate()" ng-click="vm.toggleAll()">\n            <span ng-if="vm.isChecked()" translate="MOTIONDIALER.UNSELECTALL"></span>\n            <span ng-if="!vm.isChecked()" translate="MOTIONDIALER.SELECTALL"></span>\n          </md-checkbox>\n        </div>\n        <div flex-xs flex="50">\n        </div>\n        <div flex="{{vm.items.length > 10 ? 50 : 100 }}" ng-repeat="item in vm.items">\n          <md-checkbox ng-checked="vm.exists(item, vm.selected)" ng-click="vm.toggle(item, vm.selected)">\n            {{ item.name | limitTo:40 }}\n          </md-checkbox>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions ng-hide="vm.loading" layout="row" layout-align="end center">\n      <div>\n      </div>\n      <md-button type="submit" ng-click="vm.listSelected()" class="send-button md-accent md-raised" ng-disabled="vm.loading" aria-label="RESET" translate="MOTIONDIALER.RESET" translate-attr-aria-label="MOTIONDIALER.RESET">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/teamadd/teamadd.html",'<md-dialog class="queueCampaign-dialog" aria-label="queueCampaign" ng-init="vm.onInit()">\n  <form name="queueCampaignForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="MOTIONDIALER.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="MOTIONDIALER.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="queueCampaignForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/edit/view.html",'<div id="motiondialer-queueCampaign" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-queueCampaigns-button md-icon-button" aria-label="Go to queueCampaigns" ng-click="vm.gotoQueueCampaigns()" translate translate-attr-aria-label="MOTIONDIALER.GO_TO_QUEUECAMPAIGNS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="queueCampaign-image" hide-xs>\n          <img ng-src="assets/images/business/queueCampaigns.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.queueCampaign.id}}\n            <span ng-if="vm.queueCampaign.name">{{vm.queueCampaign.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="MOTIONDIALER.CREATED_AT"></span> <span>{{vm.queueCampaign.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.listadddialog(vm.queueCampaign, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="listadd">\n        <md-tooltip><span translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-format-list-numbers"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.blacklistadddialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="blacklistadd">\n        <md-tooltip><span translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-block-helper"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.queueCampaign, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.queueCampaign, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.resetlistdialog(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="resetlist">\n        <md-tooltip><span translate="MOTIONDIALER.RESETLIST_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-restore"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.queueCampaign, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="MOTIONDIALER.GOTO_QUEUECAMPAIGN"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveQueueCampaign()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (campaignForm.$invalid) || (queueForm.$invalid) || (originateForm.$invalid) || (globalForm.$invalid) || (congestionForm.$invalid) || (busyForm.$invalid) || (noanswerForm.$invalid) || (nosuchnumberForm.$invalid) || (dropForm.$invalid) || (abandonedForm.$invalid) || (machineForm.$invalid) || (agentrejectForm.$invalid) || (additionalphonesForm.$invalid) || (advancedForm.$invalid) || (advancedpreviewForm.$invalid) || (thresholdsForm.$invalid) || (recallmeForm.$invalid) || (globalintervalForm.$invalid) || (timezoneForm.$invalid) || (amdForm.$invalid) || (hopperStatisticsForm.$invalid) || (hoppersForm.$invalid) || (hopperHistoriesForm.$invalid) || (hopperFinalsForm.$invalid) || (hopperBlacksForm.$invalid)" translate="MOTIONDIALER.SAVE" translate-attr-aria-label="MOTIONDIALER.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.queueCampaign.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialActive" aria-label="Active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.ACTIVE">Active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TRUNK">Trunk</label>\n                <md-select name="TrunkId" ng-model="vm.queueCampaign.TrunkId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="TrunkId.id" ng-repeat="TrunkId in vm.trunks" ng-disabled="TrunkId.canSelect === false">{{ TrunkId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkId\'].$error" ng-show="generalForm[\'TrunkId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BACKUPTRUNK">BackupTrunk</label>\n                <md-select name="TrunkBackupId" ng-model="vm.queueCampaign.TrunkBackupId" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="TrunkBackupId.id" ng-repeat="TrunkBackupId in vm.trunks" ng-disabled="TrunkBackupId.canSelect === false">{{ TrunkBackupId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'TrunkBackupId\'].$error" ng-show="generalForm[\'TrunkBackupId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BACKUPTRUNK_REQUIRED">BackupTrunk field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.INTERVAL">Interval</label>\n                <md-select name="IntervalId" ng-model="vm.queueCampaign.IntervalId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="IntervalId.id" ng-repeat="IntervalId in vm.interval" ng-disabled="IntervalId.canSelect === false">{{ IntervalId.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'IntervalId\'].$error" ng-show="generalForm[\'IntervalId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.INTERVAL_REQUIRED">Interval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CHECKDUPLICATE">CheckDuplicate</label>\n                <md-select name="dialCheckDuplicateType" ng-model="vm.queueCampaign.dialCheckDuplicateType" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'always\'"> {{ \'MOTIONDIALER.ALWAYS\' | translate }} </md-option>\n\n                  <md-option ng-value="\'never\'"> {{ \'MOTIONDIALER.NEVER\' | translate }} </md-option>\n\n                  <md-option ng-value="\'onlyIfOpen\'"> {{ \'MOTIONDIALER.ONLY_IF_OPEN\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'dialCheckDuplicateType\'].$error" ng-show="generalForm[\'dialCheckDuplicateType\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CHECKDUPLICATE_REQUIRED">CheckDuplicate field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CUTDIGIT">CutDigit</label>\n                <input type="number" name="dialCutDigit" ng-model="vm.queueCampaign.dialCutDigit" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'dialCutDigit\'].$error" ng-show="generalForm[\'dialCutDigit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_REQUIRED">CutDigit field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">CutDigit must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.queueCampaign.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container campaign md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CAMPAIGN">CAMPAIGN</div>\n            </div>\n            <form name="campaignForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.METHOD">Method</label>\n                <md-select name="dialMethod" ng-model="vm.queueCampaign.dialMethod" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'progressive\'">Progressive</md-option>\n                  <md-option ng-value="\'power\'">PowerDialing</md-option>\n                  <md-option ng-value="\'predictive\'">Predictive</md-option>\n                  <md-option ng-value="\'preview\'">Preview</md-option>\n                  <md-option ng-value="\'booked\'">BookedProgressive</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.METHOD"></span></div>\n                <div ng-messages="campaignForm[\'dialMethod\'].$error" ng-show="campaignForm[\'dialMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'power\'" class="md-block">\n                <span translate="MOTIONDIALER.POWERLEVEL">PowerLevel</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.POWERLEVEL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPowerLevel" min="1" max="10" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <label translate="MOTIONDIALER.PREDICTIVEOPTIMIZATION">PredictiveOptimization</label>\n                <md-select name="dialPredictiveOptimization" ng-model="vm.queueCampaign.dialPredictiveOptimization" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'agentBusyFactor\'"> {{ \'MOTIONDIALER.AGENTBUSYFACTOR\' | translate }} </md-option>\n\n                  <md-option ng-value="\'dropRate\'"> {{ \'MOTIONDIALER.DROPRATE\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATION"></span></div>\n                <div ng-messages="campaignForm[\'dialPredictiveOptimization\'].$error" ng-show="campaignForm[\'dialPredictiveOptimization\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREDICTIVEOPTIMIZATION_REQUIRED">PredictiveOptimization field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEOPTIMIZATIONPERCENTAGE">PredictiveOptimizationPercentage</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEOPTIMIZATIONPERCENTAGE"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveOptimizationPercentage" min="1" max="95" step="0.1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEINTERVAL">PredictiveInterval</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEINTERVAL"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveInterval" min="5" max="30" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="md-block">\n                <label translate="MOTIONDIALER.MAXCONCURRENTCALLS">MaxConcurrentCalls</label>\n                <input type="number" name="dialLimitQueue" ng-model="vm.queueCampaign.dialLimitQueue" min="0" max="9999" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MAXCONCURRENTCALLS"></span></div>\n                <div ng-messages="campaignForm[\'dialLimitQueue\'].$error" ng-show="campaignForm[\'dialLimitQueue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_REQUIRED">MaxConcurrentCalls field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxConcurrentCalls must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTTIMEOUT">AgentTimeout</label>\n                <input type="number" name="timeout" ng-model="vm.queueCampaign.timeout" min="0" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTTIMEOUT"></span></div>\n                <div ng-messages="campaignForm[\'timeout\'].$error" ng-show="campaignForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_REQUIRED">AgentTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentTimeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container queue md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.QUEUE">QUEUE</div>\n            </div>\n            <form name="queueForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUEOPTIONS">QueueOptions</label>\n                <input type="text" name="dialQueueOptions" ng-model="vm.queueCampaign.dialQueueOptions" value="tTxX" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="queueForm[\'dialQueueOptions\'].$error" ng-show="queueForm[\'dialQueueOptions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUEOPTIONS_REQUIRED">QueueOptions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.QUEUETIMEOUT">QueueTimeout</label>\n                <input type="number" name="dialQueueTimeout" ng-model="vm.queueCampaign.dialQueueTimeout" min="1" max="999" value="3" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.QUEUETIMEOUT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueTimeout\'].$error" ng-show="queueForm[\'dialQueueTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_REQUIRED">QueueTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">QueueTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'booked\' || vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.queueCampaign.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'roundrobin\'" ng-if="vm.queueCampaign.dialMethod === \'booked\'">Round Robin</md-option>\n                  <md-option ng-value="\'leastrecent\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Random</md-option>\n                  <md-option ng-value="\'linear\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'" ng-if="vm.queueCampaign.dialMethod !== \'booked\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="queueForm[\'strategy\'].$error" ng-show="queueForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.queueCampaign.retry" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RETRY"></span></div>\n                <div ng-messages="queueForm[\'retry\'].$error" ng-show="queueForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.queueCampaign.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="queueForm[\'wrapuptime\'].$error" ng-show="queueForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.queueCampaign.weight" min="0" value="1" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.WEIGHT"></span></div>\n                <div ng-messages="queueForm[\'weight\'].$error" ng-show="queueForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.queueCampaign.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="queueForm[\'musiconhold\'].$error" ng-show="queueForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT">CallySquareProject</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT_REQUIRED">CallySquareProject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECT2">CallySquareProject2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECT2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECT2_REQUIRED">CallySquareProject2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW">CallySquareProjectPreview</label>\n                <md-select name="dialQueueProject" ng-model="vm.queueCampaign.dialQueueProject" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject.name" ng-repeat="dialQueueProject in vm.projects" ng-disabled="dialQueueProject.canSelect === false">{{ dialQueueProject.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject\'].$error" ng-show="queueForm[\'dialQueueProject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW_REQUIRED">CallySquareProjectPreview field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="md-block">\n                <label translate="MOTIONDIALER.CALLYSQUAREPROJECTPREVIEW2">CallySquareProjectPreview2</label>\n                <md-select name="dialQueueProject2" ng-model="vm.queueCampaign.dialQueueProject2" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">None</md-option>\n                  <md-option ng-value="dialQueueProject2.name" ng-repeat="dialQueueProject2 in vm.projects" ng-disabled="dialQueueProject2.canSelect === false">{{ dialQueueProject2.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CALLYSQUAREPROJECTPREVIEW2"></span></div>\n                <div ng-messages="queueForm[\'dialQueueProject2\'].$error" ng-show="queueForm[\'dialQueueProject2\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLYSQUAREPROJECTPREVIEW2_REQUIRED">CallySquareProjectPreview2 field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialQueueProject2 && (vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\')" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAgiAfterHangupAgent" aria-label="RunIfHangupAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.RUNIFHANGUPAGENT">RunIfHangupAgent</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RUNIFHANGUPAGENT"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container originate md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ORIGINATE">ORIGINATE</div>\n            </div>\n            <form name="originateForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNAME">OriginateCallerIdName</label>\n                <input type="text" name="dialOriginateCallerIdName" ng-model="vm.queueCampaign.dialOriginateCallerIdName" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNAME"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdName\'].$error" ng-show="originateForm[\'dialOriginateCallerIdName\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNAME_REQUIRED">OriginateCallerIdName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATECALLERIDNUMBER">OriginateCallerIdNumber</label>\n                <input type="text" name="dialOriginateCallerIdNumber" ng-model="vm.queueCampaign.dialOriginateCallerIdNumber" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATECALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateCallerIdNumber\'].$error" ng-show="originateForm[\'dialOriginateCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATECALLERIDNUMBER_REQUIRED">OriginateCallerIdNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RANDOMLASTDIGITCALLERIDNUMBER">RandomLastDigitCallerIdNumber</label>\n                <input type="number" name="dialRandomLastDigitCallerIdNumber" ng-model="vm.queueCampaign.dialRandomLastDigitCallerIdNumber" min="0" max="15" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RANDOMLASTDIGITCALLERIDNUMBER"></span></div>\n                <div ng-messages="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$error" ng-show="originateForm[\'dialRandomLastDigitCallerIdNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED">RandomLastDigitCallerIdNumber field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO">RandomLastDigitCallerIdNumber must be a valid greater or equal than</span> <span>15</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ORIGINATETIMEOUT">OriginateTimeout</label>\n                <input type="number" name="dialOriginateTimeout" ng-model="vm.queueCampaign.dialOriginateTimeout" min="1" max="999" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ORIGINATETIMEOUT"></span></div>\n                <div ng-messages="originateForm[\'dialOriginateTimeout\'].$error" ng-show="originateForm[\'dialOriginateTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_REQUIRED">OriginateTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">OriginateTimeout must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.PREFIX">Prefix</label>\n                <input type="text" name="dialPrefix" ng-model="vm.queueCampaign.dialPrefix" ng-pattern="/^\\d+$/" value="" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREFIX"></span></div>\n                <div ng-messages="originateForm[\'dialPrefix\'].$error" ng-show="originateForm[\'dialPrefix\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="MOTIONDIALER.ERRORS.PREFIX_MUST_VALID_PATTERN" translate-values="{ regex: \'/^\\d+$/\' }">Prefix must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.RETRYANDFREQUENCY">RETRYANDFREQUENCY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container global md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBAL">GLOBAL</div>\n            </div>\n            <form name="globalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALMAXRETRY">GlobalMaxRetry</label>\n                <input type="number" name="dialGlobalMaxRetry" ng-model="vm.queueCampaign.dialGlobalMaxRetry" min="1" max="999" value="4" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALMAXRETRY"></span></div>\n                <div ng-messages="globalForm[\'dialGlobalMaxRetry\'].$error" ng-show="globalForm[\'dialGlobalMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_REQUIRED">GlobalMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">GlobalMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container congestion md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.CONGESTION">CONGESTION</div>\n            </div>\n            <form name="congestionForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONMAXRETRY">CongestionMaxRetry</label>\n                <input type="number" name="dialCongestionMaxRetry" ng-model="vm.queueCampaign.dialCongestionMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONMAXRETRY"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionMaxRetry\'].$error" ng-show="congestionForm[\'dialCongestionMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_REQUIRED">CongestionMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONGESTIONRETRYTIME">CongestionRetryTime</label>\n                <input type="number" name="dialCongestionRetryFrequency" ng-model="vm.queueCampaign.dialCongestionRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONGESTIONRETRYTIME"></span></div>\n                <div ng-messages="congestionForm[\'dialCongestionRetryFrequency\'].$error" ng-show="congestionForm[\'dialCongestionRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_REQUIRED">CongestionRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">CongestionRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container busy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.BUSY">BUSY</div>\n            </div>\n            <form name="busyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYMAXRETRY">BusyMaxRetry</label>\n                <input type="number" name="dialBusyMaxRetry" ng-model="vm.queueCampaign.dialBusyMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYMAXRETRY"></span></div>\n                <div ng-messages="busyForm[\'dialBusyMaxRetry\'].$error" ng-show="busyForm[\'dialBusyMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_REQUIRED">BusyMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.BUSYRETRYTIME">BusyRetryTime</label>\n                <input type="number" name="dialBusyRetryFrequency" ng-model="vm.queueCampaign.dialBusyRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.BUSYRETRYTIME"></span></div>\n                <div ng-messages="busyForm[\'dialBusyRetryFrequency\'].$error" ng-show="busyForm[\'dialBusyRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_REQUIRED">BusyRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">BusyRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container noanswer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOANSWER">NOANSWER</div>\n            </div>\n            <form name="noanswerForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERMAXRETRY">NoAnswerMaxRetry</label>\n                <input type="number" name="dialNoAnswerMaxRetry" ng-model="vm.queueCampaign.dialNoAnswerMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERMAXRETRY"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerMaxRetry\'].$error" ng-show="noanswerForm[\'dialNoAnswerMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_REQUIRED">NoAnswerMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOANSWERRETRYTIME">NoAnswerRetryTime</label>\n                <input type="number" name="dialNoAnswerRetryFrequency" ng-model="vm.queueCampaign.dialNoAnswerRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOANSWERRETRYTIME"></span></div>\n                <div ng-messages="noanswerForm[\'dialNoAnswerRetryFrequency\'].$error" ng-show="noanswerForm[\'dialNoAnswerRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_REQUIRED">NoAnswerRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoAnswerRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container nosuchnumber md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.NOSUCHNUMBER">NOSUCHNUMBER</div>\n            </div>\n            <form name="nosuchnumberForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERMAXRETRY">NoSuchNumberMaxRetry</label>\n                <input type="number" name="dialNoSuchNumberMaxRetry" ng-model="vm.queueCampaign.dialNoSuchNumberMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERMAXRETRY"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_REQUIRED">NoSuchNumberMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.NOSUCHNUMBERRETRYTIME">NoSuchNumberRetryTime</label>\n                <input type="number" name="dialNoSuchNumberRetryFrequency" ng-model="vm.queueCampaign.dialNoSuchNumberRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.NOSUCHNUMBERRETRYTIME"></span></div>\n                <div ng-messages="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$error" ng-show="nosuchnumberForm[\'dialNoSuchNumberRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_REQUIRED">NoSuchNumberRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">NoSuchNumberRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container drop md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.DROP">DROP</div>\n            </div>\n            <form name="dropForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPMAXRETRY">DropMaxRetry</label>\n                <input type="number" name="dialDropMaxRetry" ng-model="vm.queueCampaign.dialDropMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPMAXRETRY"></span></div>\n                <div ng-messages="dropForm[\'dialDropMaxRetry\'].$error" ng-show="dropForm[\'dialDropMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_REQUIRED">DropMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DROPRETRYTIME">DropRetryTime</label>\n                <input type="number" name="dialDropRetryFrequency" ng-model="vm.queueCampaign.dialDropRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DROPRETRYTIME"></span></div>\n                <div ng-messages="dropForm[\'dialDropRetryFrequency\'].$error" ng-show="dropForm[\'dialDropRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_REQUIRED">DropRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">DropRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container abandoned md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ABANDONED">ABANDONED</div>\n            </div>\n            <form name="abandonedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDMAXRETRY">AbandonedMaxRetry</label>\n                <input type="number" name="dialAbandonedMaxRetry" ng-model="vm.queueCampaign.dialAbandonedMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDMAXRETRY"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedMaxRetry\'].$error" ng-show="abandonedForm[\'dialAbandonedMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_REQUIRED">AbandonedMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.ABANDONEDRETRYTIME">AbandonedRetryTime</label>\n                <input type="number" name="dialAbandonedRetryFrequency" ng-model="vm.queueCampaign.dialAbandonedRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.ABANDONEDRETRYTIME"></span></div>\n                <div ng-messages="abandonedForm[\'dialAbandonedRetryFrequency\'].$error" ng-show="abandonedForm[\'dialAbandonedRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_REQUIRED">AbandonedRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AbandonedRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container machine md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.MACHINE">MACHINE</div>\n            </div>\n            <form name="machineForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINEMAXRETRY">MachineMaxRetry</label>\n                <input type="number" name="dialMachineMaxRetry" ng-model="vm.queueCampaign.dialMachineMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINEMAXRETRY"></span></div>\n                <div ng-messages="machineForm[\'dialMachineMaxRetry\'].$error" ng-show="machineForm[\'dialMachineMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_REQUIRED">MachineMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MACHINERETRYTIME">MachineRetryTime</label>\n                <input type="number" name="dialMachineRetryFrequency" ng-model="vm.queueCampaign.dialMachineRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MACHINERETRYTIME"></span></div>\n                <div ng-messages="machineForm[\'dialMachineRetryFrequency\'].$error" ng-show="machineForm[\'dialMachineRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_REQUIRED">MachineRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">MachineRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container agentreject md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AGENTREJECT">AGENTREJECT</div>\n            </div>\n            <form name="agentrejectForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTMAXRETRY">AgentRejectMaxRetry</label>\n                <input type="number" name="dialAgentRejectMaxRetry" ng-model="vm.queueCampaign.dialAgentRejectMaxRetry" min="1" max="999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTMAXRETRY"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectMaxRetry\'].$error" ng-show="agentrejectForm[\'dialAgentRejectMaxRetry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_REQUIRED">AgentRejectMaxRetry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectMaxRetry must be a valid greater or equal than</span> <span>999</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AGENTREJECTRETRYTIME">AgentRejectRetryTime</label>\n                <input type="number" name="dialAgentRejectRetryFrequency" ng-model="vm.queueCampaign.dialAgentRejectRetryFrequency" min="1" max="99999" value="150" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AGENTREJECTRETRYTIME"></span></div>\n                <div ng-messages="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$error" ng-show="agentrejectForm[\'dialAgentRejectRetryFrequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_REQUIRED">AgentRejectRetryTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO">AgentRejectRetryTime must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container additionalphones md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>99999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.queueCampaign.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.queueCampaign.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.queueCampaign.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.queueCampaign.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.queueCampaign.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.queueCampaign.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.queueCampaign.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.queueCampaign.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'MOTIONDIALER.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'MOTIONDIALER.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'preview\' || vm.queueCampaign.dialMethod === \'booked\'" class="queueCampaign-detail-form-container advancedpreview md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.ADVANCEDPREVIEW">ADVANCEDPREVIEW</div>\n            </div>\n            <form name="advancedpreviewForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.acw" class="md-block">\n                <label translate="MOTIONDIALER.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.queueCampaign.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedpreviewForm[\'acwTimeout\'].$error" ng-show="advancedpreviewForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.queueCampaign.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'monitor_format\'].$error" ng-show="advancedpreviewForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALORDERBYSCHEDULEDAT">DialOrderByScheduledAt</label>\n                <md-select name="dialOrderByScheduledAt" ng-model="vm.queueCampaign.dialOrderByScheduledAt" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'DESC\'"> {{ \'MOTIONDIALER.DESC\' | translate }} </md-option>\n\n                  <md-option ng-value="\'ASC\'"> {{ \'MOTIONDIALER.ASC\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALORDERBYSCHEDULEDAT"></span></div>\n                <div ng-messages="advancedpreviewForm[\'dialOrderByScheduledAt\'].$error" ng-show="advancedpreviewForm[\'dialOrderByScheduledAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALORDERBYSCHEDULEDAT_REQUIRED">DialOrderByScheduledAt field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.mandatoryDisposition" class="md-block">\n                <label translate="MOTIONDIALER.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.queueCampaign.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedpreviewForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'predictive\'" class="queueCampaign-detail-form-container thresholds md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.THRESHOLDS">THRESHOLDS</div>\n            </div>\n            <form name="thresholdsForm" novalidate>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMAXTHRESHOLD">PredictiveMaxThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMAXTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMaxThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'predictive\'" class="md-block">\n                <span translate="MOTIONDIALER.PREDICTIVEMINTHRESHOLD">PredictiveMinThreshold</span>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREDICTIVEMINTHRESHOLD"></span></div>\n                <md-slider md-discrete flex ng-model="vm.queueCampaign.dialPredictiveIntervalMinThreshold" min="1" max="100" step="1" class="md-accent"></md-slider>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="queueCampaign-detail-form-container recallme md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.RECALLME">RECALLME</div>\n            </div>\n            <form name="recallmeForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.DIALRECALLMETIMEOUT">DialRecallMeTimeout</label>\n                <input type="number" name="dialRecallMeTimeout" ng-model="vm.queueCampaign.dialRecallMeTimeout" min="1" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLMETIMEOUT"></span></div>\n                <div ng-messages="recallmeForm[\'dialRecallMeTimeout\'].$error" ng-show="recallmeForm[\'dialRecallMeTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_REQUIRED">DialRecallMeTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">DialRecallMeTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialRecallInQueue" aria-label="DialRecallInQueue" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.DIALRECALLINQUEUE">DialRecallInQueue</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.DIALRECALLINQUEUE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewAutoRecallMe" aria-label="Preview_Auto_Recall_Me" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_AUTO_RECALL_ME">Preview_Auto_Recall_Me</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_AUTO_RECALL_ME"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container globalinterval md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.GLOBALINTERVAL">GLOBALINTERVAL</div>\n            </div>\n            <form name="globalintervalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.GLOBALINTERVAL">GlobalInterval</label>\n                <input type="text" name="dialGlobalInterval" ng-model="vm.queueCampaign.dialGlobalInterval" value="07:00-22:00,*,*,*" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.GLOBALINTERVAL"></span></div>\n                <div ng-messages="globalintervalForm[\'dialGlobalInterval\'].$error" ng-show="globalintervalForm[\'dialGlobalInterval\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.GLOBALINTERVAL_REQUIRED">GlobalInterval field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod != \'preview\'" class="queueCampaign-detail-form-container timezone md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.TIMEZONE">TIMEZONE</div>\n            </div>\n            <form name="timezoneForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.TIMEZONE">Timezone</label>\n                <ms-timezone name="dialTimezone" ng-model="vm.queueCampaign.dialTimezone" autofocus ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.TIMEZONE"></span></div>\n                <div ng-messages="timezoneForm[\'dialTimezone\'].$error" ng-show="timezoneForm[dialTimezone].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div ng-if="vm.queueCampaign.dialMethod === \'progressive\' || vm.queueCampaign.dialMethod === \'predictive\' || vm.queueCampaign.dialMethod === \'power\'" class="queueCampaign-detail-form-container amd md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="MOTIONDIALER.AMD">AMD</div>\n            </div>\n            <form name="amdForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialAMDActive" aria-label="AMDActive" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.AMDACTIVE">AMDActive</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDACTIVE"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDINITIALSILENCE">AMDInitialSilence</label>\n                <input type="number" name="dialAMDInitialSilence" ng-model="vm.queueCampaign.dialAMDInitialSilence" min="0" value="2500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDINITIALSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDInitialSilence\'].$error" ng-show="amdForm[\'dialAMDInitialSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_REQUIRED">AMDInitialSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDINITIALSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDInitialSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDGREETING">AMDGreeting</label>\n                <input type="number" name="dialAMDGreeting" ng-model="vm.queueCampaign.dialAMDGreeting" min="0" value="1500" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDGREETING"></span></div>\n                <div ng-messages="amdForm[\'dialAMDGreeting\'].$error" ng-show="amdForm[\'dialAMDGreeting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_REQUIRED">AMDGreeting field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDGREETING_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDGreeting must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDAFTERGREETINGSILENCE">AMDAfterGreetingSilence</label>\n                <input type="number" name="dialAMDAfterGreetingSilence" ng-model="vm.queueCampaign.dialAMDAfterGreetingSilence" min="0" value="800" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDAFTERGREETINGSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDAfterGreetingSilence\'].$error" ng-show="amdForm[\'dialAMDAfterGreetingSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_REQUIRED">AMDAfterGreetingSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDAFTERGREETINGSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDAfterGreetingSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDTOTALANALYSISTIME">AMDTotalAnalysisTime</label>\n                <input type="number" name="dialAMDTotalAnalysisTime" ng-model="vm.queueCampaign.dialAMDTotalAnalysisTime" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDTOTALANALYSISTIME"></span></div>\n                <div ng-messages="amdForm[\'dialAMDTotalAnalysisTime\'].$error" ng-show="amdForm[\'dialAMDTotalAnalysisTime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_REQUIRED">AMDTotalAnalysisTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDTOTALANALYSISTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDTotalAnalysisTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMINWORDLENGTH">AMDMinWordLength</label>\n                <input type="number" name="dialAMDMinWordLength" ng-model="vm.queueCampaign.dialAMDMinWordLength" min="0" value="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMINWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMinWordLength\'].$error" ng-show="amdForm[\'dialAMDMinWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_REQUIRED">AMDMinWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMINWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMinWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDBETWEENWORDSSILENCE">AMDBetweenWordsSilence</label>\n                <input type="number" name="dialAMDBetweenWordsSilence" ng-model="vm.queueCampaign.dialAMDBetweenWordsSilence" min="0" value="50" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDBETWEENWORDSSILENCE"></span></div>\n                <div ng-messages="amdForm[\'dialAMDBetweenWordsSilence\'].$error" ng-show="amdForm[\'dialAMDBetweenWordsSilence\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_REQUIRED">AMDBetweenWordsSilence field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDBETWEENWORDSSILENCE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDBetweenWordsSilence must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMNUMBEROFWORDS">AMDMaximumNumberOfWords</label>\n                <input type="number" name="dialAMDMaximumNumberOfWords" ng-model="vm.queueCampaign.dialAMDMaximumNumberOfWords" min="0" value="3" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMNUMBEROFWORDS"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumNumberOfWords\'].$error" ng-show="amdForm[\'dialAMDMaximumNumberOfWords\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_REQUIRED">AMDMaximumNumberOfWords field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMNUMBEROFWORDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumNumberOfWords must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDSILENCETHRESHOLD">AMDSilenceThreshold</label>\n                <input type="number" name="dialAMDSilenceThreshold" ng-model="vm.queueCampaign.dialAMDSilenceThreshold" min="0" max="32767" value="256" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDSILENCETHRESHOLD"></span></div>\n                <div ng-messages="amdForm[\'dialAMDSilenceThreshold\'].$error" ng-show="amdForm[\'dialAMDSilenceThreshold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_REQUIRED">AMDSilenceThreshold field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.AMDSILENCETHRESHOLD_MUST_BE_LESS_THAN_OR_EQUAL_TO">AMDSilenceThreshold must be a valid greater or equal than</span> <span>32767</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.queueCampaign.dialAMDActive" class="md-block">\n                <label translate="MOTIONDIALER.AMDMAXIMUMWORDLENGTH">AMDMaximumWordLength</label>\n                <input type="number" name="dialAMDMaximumWordLength" ng-model="vm.queueCampaign.dialAMDMaximumWordLength" min="0" value="5000" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="MOTIONDIALER.HELP.AMDMAXIMUMWORDLENGTH"></span></div>\n                <div ng-messages="amdForm[\'dialAMDMaximumWordLength\'].$error" ng-show="amdForm[\'dialAMDMaximumWordLength\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_REQUIRED">AMDMaximumWordLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.AMDMAXIMUMWORDLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AMDMaximumWordLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HOPPERS">HOPPERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperstatistics md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperStatisticsController as vm_hs" ng-init="vm_hs.init(vm.queueCampaign)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERWIDGET">Hoppers</span>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_hs.init(vm.queueCampaign)" aria-label="refresh Hopper" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{(vm_hs.total || 0) + (vm_hs.closed || 0)}}</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.TOTAL\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.fresh || 0}} ({{vm_hs.total ? ((((vm_hs.fresh || 0) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.FRESH\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.total ? (vm_hs.total - (vm_hs.fresh || 0)) : 0}} ({{vm_hs.total ? ((((vm_hs.total - (vm_hs.fresh || 0)) * 100)/((vm_hs.closed || 0) + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.OPEN\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="25">\n\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">{{vm_hs.closed ? (vm_hs.closed || 0) : 0}} ({{vm_hs.closed ? ((((vm_hs.closed) * 100)/(vm_hs.closed + (vm_hs.total || 0))) | number: 2) : 0}}%)</div>\n                      <div class="font-weight-500 secondary-text">{{ \'MOTIONDIALER.CLOSED\' | translate }}</div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n\n          </div>\n          <div class="queueCampaign-detail-form-container hoppers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHoppersController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERS">Hoppers</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHoppers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHoppers()" aria-label="refresh Hoppers" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHoppers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHoppers.length}} {{vm_dc.selectedQueueCampaignHoppers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHoppers" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedQueueCampaignHoppers($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHoppers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHoppers">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="priority">\n                        {{ \'MOTIONDIALER.PRIORITY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="recallme">\n                        {{ \'MOTIONDIALER.RECALLAGENT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopper" md-select-id="id" ng-repeat="hopper in vm_dc.queueCampaignHoppers.rows">\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.ContactId}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell privacy ng-cloak>\n                        {{hopper.phone}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countcongestionretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countbusyretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnoanswerretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countnosuchnumberretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countdropretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countabandonedretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countmachineretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{hopper.countagentrejectretry}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ hopper.scheduledat | formatdate }}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell>\n                        {{ vm_dc.arraypriority[hopper.priority].option }} </td>\n\n                      <td ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" md-cell class="recallme ">\n                        <md-icon md-colors="{color: {{hopper.recallme ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{hopper.recallme? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditQueueCampaignHopper($event, hopper)" translate="MOTIONDIALER.EDIT_HOPPER">\n                                Edit Hopper\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(hopper, $event)" translate="MOTIONDIALER.DELETE_HOPPER">\n                                Delete Hopper\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHoppers.rows.length">\n                      <td md-cell colspan="17">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPER_AVAILABLE">No hopper available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHoppers.count}}" md-on-paginate="vm_dc.getQueueCampaignHoppers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.HISTORY">HISTORY</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperhistories md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperHistoriesController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERHISTORIES">HopperHistories</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperHistories()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperHistories()" aria-label="refresh HopperHistories" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERHISTORIES">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperHistories.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperHistories.length}} {{vm_dc.selectedQueueCampaignHopperHistories.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperHistories" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperHistories" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperHistories">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="scheduledat">\n                        {{ \'MOTIONDIALER.SCHEDULEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperHistory" md-select-id="id" ng-repeat="hopperHistory in vm_dc.queueCampaignHopperHistories.rows">\n                      <td md-cell>\n                        {{hopperHistory.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperHistory.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperHistory.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.scheduledat | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperHistory.endtime | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperHistories.rows.length">\n                      <td md-cell colspan="11">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERHISTORY_AVAILABLE">No hopperhistory available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperHistories.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperHistories" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.FINAL">FINAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperfinals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperFinalsController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERFINALS">HopperFinals</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperFinals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getQueueCampaignHopperFinals()" aria-label="refresh HopperFinals" translate translate-attr-label="MOTIONDIALER.REFRESH_HOPPERFINALS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                  <td md-cell class="actions">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="vm_dc.countContactsQueueCampaignHopperFinal(vm_dc.query.id); $mdOpenMenu($event);">\n                        <md-icon md-font-icon="icon-backup-restore"></md-icon>\n                        <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                      </md-button>\n                      <md-menu-content width="3">\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(3)">\n                            <span translate="MOTIONDIALER.NOANSWER ">NoAnswer</span>\n                            <span class="badge">({{vm_dc.contacts.noAnswerContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(5)">\n                            <span translate="MOTIONDIALER.BUSY ">Busy</span>\n                            <span class="badge">({{vm_dc.contacts.busyContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(8)">\n                            <span translate="MOTIONDIALER.CONGESTION ">Congestion</span>\n                            <span class="badge">({{vm_dc.contacts.congestionContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(10)">\n                            <span translate="MOTIONDIALER.DROPPED ">Drop</span>\n                            <span class="badge">({{vm_dc.contacts.dropContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(11)">\n                            <span translate="MOTIONDIALER.ABANDONED ">Abandoned</span>\n                            <span class="badge">({{vm_dc.contacts.abandonedContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(22)">\n                            <span translate="MOTIONDIALER.RECALLFAILEDTIMEOUT">Recall</span>\n                            <span class="badge">({{vm_dc.contacts.reCallContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(0)">\n                            <span translate="MOTIONDIALER.NO_SUCH_NUMBER">NoSuchNumber</span>\n                            <span class="badge">({{vm_dc.contacts.noSuchContacts}})</span>\n                          </md-button>\n                        </md-menu-item>\n                        <md-menu-item>\n                          <md-button ng-click="vm_dc.moveContactsQueueCampaignHopperFinal(19)">\n                            <span translate="MOTIONDIALER.ANSWERING_MACHINE">AnsweringMachine</span>\n                            <span class="badge">({{vm_dc.contacts.answeringMachine}})</span>\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperFinals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperFinals.length}} {{vm_dc.selectedQueueCampaignHopperFinals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperFinals" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.moveSelectedQueueCampaignHopperFinals($event)" aria-label="move selected" translate translate-attr-label="MOTIONDIALER.MOVE_SELECTED">\n                    <md-icon md-font-icon="icon-restore"></md-icon>\n                    <md-tooltip><span translate="MOTIONDIALER.RESTORECONTACTS"></span></md-tooltip>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperFinals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperFinals">\n                    <tr md-row>\n                      <th md-column md-order-by="uniqueid">\n                        {{ \'MOTIONDIALER.UNIQUEID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridnum">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="calleridname">\n                        {{ \'MOTIONDIALER.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="statedesc">\n                        {{ \'MOTIONDIALER.STATUS\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countcongestionretry">\n                        {{ \'MOTIONDIALER.CONGESTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countbusyretry">\n                        {{ \'MOTIONDIALER.BUSY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnoanswerretry">\n                        {{ \'MOTIONDIALER.NOANSWER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countnosuchnumberretry">\n                        {{ \'MOTIONDIALER.NOSUCHNUMBER\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countdropretry">\n                        {{ \'MOTIONDIALER.DROP\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countabandonedretry">\n                        {{ \'MOTIONDIALER.ABANDONED\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countmachineretry">\n                        {{ \'MOTIONDIALER.MACHINE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="countagentrejectretry">\n                        {{ \'MOTIONDIALER.AGENTREJECT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="starttime">\n                        {{ \'MOTIONDIALER.STARTTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="endtime">\n                        {{ \'MOTIONDIALER.ENDTIME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="disposition">\n                        {{ \'MOTIONDIALER.DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="secondDisposition">\n                        {{ \'MOTIONDIALER.SECOND_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="thirdDisposition">\n                        {{ \'MOTIONDIALER.THIRD_LEVEL_DISPOSITION\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperFinal" md-select-id="id" ng-repeat="hopperFinal in vm_dc.queueCampaignHopperFinals.rows">\n                      <td md-cell>\n                        {{hopperFinal.uniqueid}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridnum}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperFinal.calleridname}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.statedesc}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countcongestionretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countbusyretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnoanswerretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countnosuchnumberretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countdropretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countabandonedretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countmachineretry}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.countagentrejectretry}}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.starttime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{ hopperFinal.endtime | formatdate }}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.disposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.secondDisposition}}\n                      </td>\n                      <td md-cell>\n                        {{hopperFinal.thirdDisposition}}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.moveConfirm(hopperFinal, $event)" translate="MOTIONDIALER.MOVE_HOPPERFINAL">\n                                Move HopperFinal\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperFinals.rows.length">\n                      <td md-cell colspan="30">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERFINAL_AVAILABLE">No hopperfinal available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperFinals.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperFinals" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.BLACKLIST">BLACKLIST</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="queueCampaign-detail-form-container hopperblacks md-background-bg md-whiteframe-1dp">\n            <div ng-controller="QueueCampaignHopperBlacksController as vm_dc" ng-init="vm_dc.init(vm.queueCampaign, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="MOTIONDIALER.HOPPERBLACKS">HopperBlacks</span>\n                  <ms-search-bar on-search="vm_dc.getQueueCampaignHopperBlacks()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedQueueCampaignHopperBlacks.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedQueueCampaignHopperBlacks.length}} {{vm_dc.selectedQueueCampaignHopperBlacks.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedQueueCampaignHopperBlacks" csv-label="true" filename="queueCampaigns.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedQueueCampaignHopperBlacks" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getQueueCampaignHopperBlacks">\n                    <tr md-row>\n                      <th md-column md-order-by="ContactId">\n                        {{ \'MOTIONDIALER.CONTACTID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="phone">\n                        {{ \'MOTIONDIALER.PHONE\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="hopperBlack" md-select-id="id" ng-repeat="hopperBlack in vm_dc.queueCampaignHopperBlacks.rows">\n                      <td md-cell>\n                        {{hopperBlack.ContactId}}\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        {{hopperBlack.phone}}\n                      </td>\n                      <td md-cell class="actions">\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.queueCampaignHopperBlacks.rows.length">\n                      <td md-cell colspan="4">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="MOTIONDIALER.NO_HOPPERBLACK_AVAILABLE">No hopperblack available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.queueCampaignHopperBlacks.count}}" md-on-paginate="vm_dc.getQueueCampaignHopperBlacks" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/motiondialer/views/queueCampaigns/queueCampaigns.html",'<div id="queueCampaigns" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-fire" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MOTIONDIALER.QUEUECAMPAIGNS">QueueCampaigns</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="MOTIONDIALER.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedQueueCampaigns.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedQueueCampaigns =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="MOTIONDIALER.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-queueCampaigns-count">\n          <span>{{vm.selectedQueueCampaigns.length}}</span>\n          <span translate="MOTIONDIALER.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="MOTIONDIALER.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllQueueCampaigns()" translate="MOTIONDIALER.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectQueueCampaigns()" translate="MOTIONDIALER.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedQueueCampaigns" csv-label="true" filename="queueCampaigns.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedQueueCampaigns($event)" aria-label="delete selected" translate translate-attr-label="MOTIONDIALER.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- QUEUECAMPAIGN TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedQueueCampaigns" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueueCampaigns">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'MOTIONDIALER.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'MOTIONDIALER.NAME\' | translate }}</th>\n                <th md-column md-order-by="dialActive">{{ \'MOTIONDIALER.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="TrunkId">{{ \'MOTIONDIALER.TRUNK\' | translate }}</th>\n                <th md-column md-order-by="dialMethod">{{ \'MOTIONDIALER.METHOD\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'MOTIONDIALER.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.queueCampaigns.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="queueCampaign" md-select-id="id" ng-repeat="queueCampaign in vm.queueCampaigns.rows">\n                <td md-cell ng-if="queueCampaign.userpic"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="api/users/{{queueCampaign.id}}/avatar" /></td>\n                <td md-cell ng-if="!queueCampaign.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{queueCampaign.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="id ">{{queueCampaign.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="name ">{{queueCampaign.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialActive ">\n                  <md-icon md-colors="{color: {{queueCampaign.dialActive ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{queueCampaign.dialActive ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="TrunkId ">{{ (vm.trunks | filter : {\'id\':queueCampaign.TrunkId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="dialMethod ">{{ vm.arraydialMethod[queueCampaign.dialMethod].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(queueCampaign, ev) : vm.createOrEditQueueCampaign($event, queueCampaign)" md-cell class="strategy ">{{ vm.arraystrategy[queueCampaign.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(queueCampaign, $event    )" translate="MOTIONDIALER.EDIT_QUEUECAMPAIGN">\n                          Edit QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(queueCampaign, $event    )" translate="MOTIONDIALER.CLONE_QUEUECAMPAIGN">\n                          clone QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.listadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.LISTADD_QUEUECAMPAIGN">\n                          listadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.blacklistadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.BLACKLISTADD_QUEUECAMPAIGN">\n                          blacklistadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.TEAMADD_QUEUECAMPAIGN">\n                          teamadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(queueCampaign, $event    )" translate="MOTIONDIALER.AGENTADD_QUEUECAMPAIGN">\n                          agentadd QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(queueCampaign, $event    )" translate="MOTIONDIALER.DELETE_QUEUECAMPAIGN">\n                          Delete QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(queueCampaign, $event    )" translate="MOTIONDIALER.GOTOREALTIME_QUEUECAMPAIGN">\n                          goToRealtime QueueCampaign\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queueCampaigns.count}}" md-on-paginate="vm.getQueueCampaigns" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / QUEUECAMPAIGN TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD QUEUECAMPAIGN BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-queueCampaign-button" ng-click="vm.createOrEditQueueCampaign($event)" aria-label="add queueCampaign" translate translate-attr-aria-label="MOTIONDIALER.ADD_QUEUECAMPAIGN">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD QUEUECAMPAIGN BUTTON --\x3e\n</div>'),e.put("app/main/apps/motiondialer/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitAt">{{\'DASHBOARDS.QUEUECALLEREXITAT\' | translate}}</th>\n        <th md-column md-order-by="queuecallerexitreason">{{\'DASHBOARDS.QUEUECALLEREXITREASON\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitAt ? (call.queuecallerexitAt | formatdate) : undefined }}\n        </td>\n        <td md-cell class="list">{{call.queuecallerexitreason}}</td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/motiondialer/views/realtime/ivr_campaigns/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getCampaigns()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCampaigns">\n      <tr md-row>\n        <th md-column>{{\'MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TOTAL_MANAGED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.LIMITED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.ORIGINATED\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.MESSAGE\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.CALLYSQUAREPROJECT\' | translate}}</th>\n        <th md-column>{{\'MOTIONDIALER.TRUNK\' | translate }}</th>\n        <th md-column>{{\'MOTIONDIALER.ACTIVE\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.campaigns">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, campaign) in vm.campaigns">\n        <td md-cell>\n          <span>{{campaign.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrTotalCallsDays || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.ivrAnswerCallsDay || 0}} ({{(campaign.ivrTotalCallsDays) ? (campaign.ivrAnswerCallsDay || 0) * 100/(campaign.ivrTotalCallsDays ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.limitCalls || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.originated || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.message ? (\'MOTIONDIALER.\'+campaign.message | translate) : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{campaign.dialQueueProject || \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{campaign.Trunk ? campaign.Trunk.name : \'--\'}}</span>\n        </td>\n        <td md-cell>\n          <md-icon md-colors="{color: {{campaign.active ? \'\\\'green\\\'\' : \'\\\'red\\\'\'}}}" md-font-icon="{{campaign.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="MOTIONDIALER.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="3">\n              <md-menu-item>\n                <md-button ng-click="vm.createOrEditIvrCampaign($event, campaign)" translate="MOTIONDIALER.EDIT_CAMPAIGN">\n                  Edit Campaign\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getCampaigns" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'MOTIONDIALER.DID\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.CALLER\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.AGENT\' | translate }}</th>\n        <th md-column>{{ \'MOTIONDIALER.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="7">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>{{channel.calleridnum}}</td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'MOTIONDIALER.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="MOTIONDIALER.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="MOTIONDIALER.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="MOTIONDIALER.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                                MOTIONDIALER.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.MANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.DROPPED\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                                MOTIONDIALER.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{(queue.answered + queue.outboundNoAnswerCallsDay + queue.outboundBusyCallsDay + queue.outboundCongestionCallsDay + queue.outboundNoSuchCallsDay + queue.outboundUnknownCallsDay + queue.outboundDropCallsDayTimeout + queue.outboundDropCallsDayCallersExit + queue.outboundBlacklistCallsDay + queue.outboundOriginateFailureCallsDay + queue.outboundAnswerAgiCallsDay + queue.outboundReCallsDay + queue.outboundRejectCallsDay )|| 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-20 grey-fg">{{queue.total || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.answered) ? (100 - (((queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total)) | number:1 ) - (((queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total )) | number:1 )  ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayCallersExit || 0}} ({{(queue.outboundDropCallsDayCallersExit) ? (queue.outboundDropCallsDayCallersExit || 0) * 100/(queue.total ) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.outboundDropCallsDayTimeout || 0}} ({{(queue.outboundDropCallsDayTimeout) ? (queue.outboundDropCallsDayTimeout || 0) * 100/(queue.total) : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumHoldTime / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? (queue.sumDuration / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/motiondialer/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="MOTIONDIALER.IVR_CAMPAIGNS">Ivr Campaigns</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/create/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelAccount">\n\n        <div ng-messages="openchannelAccountForm[\'name\'].$error" ng-show="openchannelAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="openchannelAccountForm[\'key\'].$error" ng-show="openchannelAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n        <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n        <div ng-messages="openchannelAccountForm[\'replyUri\'].$error" ng-show="openchannelAccountForm[\'replyUri\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n        <div ng-messages="openchannelAccountForm[\'ListId\'].$error" ng-show="openchannelAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelAccount.description">\n\n        <div ng-messages="openchannelAccountForm[\'description\'].$error" ng-show="openchannelAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelAccount" ng-click="vm.saveOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid || openchannelAccountForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelAccount" ng-click="vm.addNewOpenchannelAccount()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELACCOUNT" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n          ADD OPENCHANNELACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelAccount" ng-click="vm.deleteOpenchannelAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/agentadd/agentadd.html",'<md-dialog class="openchannelAccount-dialog" aria-label="openchannelAccount" ng-init="vm.onInit()">\n  <form name="openchannelAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">Add Agent to openchannelAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/agent/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'agent\'].$error" ng-show="openchannelAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'accesskeyid\'].$error" ng-show="openchannelAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'secretaccesskey\'].$error" ng-show="openchannelAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'lexregion\'].$error" ng-show="openchannelAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'botname\'].$error" ng-show="openchannelAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'times\'].$error" ng-show="openchannelAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'text\'].$error" ng-show="openchannelAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/close/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'disposition\'].$error" ng-show="openchannelAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'key\'].$error" ng-show="openchannelAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'projectId\'].$error" ng-show="openchannelAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'clientEmail\'].$error" ng-show="openchannelAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="openchannelAccountFormApp[\'privateKey\'].$error" ng-show="openchannelAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'language\'].$error" ng-show="openchannelAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="OPENCHANNEL.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="openchannelAccountFormApp[\'welcomemessage\'].$error" ng-show="openchannelAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="OPENCHANNEL.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'condition\'].$error" ng-show="openchannelAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'truepriority\'].$error" ng-show="openchannelAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'falsepriority\'].$error" ng-show="openchannelAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'priority\'].$error" ng-show="openchannelAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/noop/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'value\'].$error" ng-show="openchannelAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/queue/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'queue\'].$error" ng-show="openchannelAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'timeout\'].$error" ng-show="openchannelAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/system/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="openchannelAccountFormApp[\'command\'].$error" ng-show="openchannelAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'variable\'].$error" ng-show="openchannelAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/apps/tag/dialog.html",'<md-dialog class="openchannelAccount-dialog" aria-label="New OpenchannelAccount">\n  <form name="openchannelAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="openchannelAccountFormApp[\'tag\'].$error" ng-show="openchannelAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveOpenchannelAccountApp()" class="send-button md-accent md-raised" ng-disabled="openchannelAccountFormApp.$invalid || openchannelAccountFormApp.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/openchannelCannedAnswers/dialog.html",'<md-dialog class="openchannelCannedAnswer-dialog" aria-label="New OpenchannelCannedAnswer">\n  <form name="openchannelCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.openchannelCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'key\'].$error" ng-show="openchannelCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.openchannelCannedAnswer.value" required></textarea>\n\n        <div ng-messages="openchannelCannedAnswerForm[\'value\'].$error" ng-show="openchannelCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelCannedAnswer.description">\n\n        <div ng-messages="openchannelCannedAnswerForm[\'description\'].$error" ng-show="openchannelCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelCannedAnswer" ng-click="vm.saveOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid || openchannelCannedAnswerForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelCannedAnswer" ng-click="vm.addNewOpenchannelCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="openchannelCannedAnswerForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n          ADD OPENCHANNELCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelCannedAnswer" ng-click="vm.deleteOpenchannelCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/edit/view.html",'<div id="openchannel-openchannelAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelAccounts-button md-icon-button" aria-label="Go to openchannelAccounts" ng-click="vm.gotoOpenchannelAccounts()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelAccount-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelAccount.id}}\n            <span ng-if="vm.openchannelAccount.name">{{vm.openchannelAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (openchannelDispositionsForm.$invalid) || (openchannelCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.openchannelAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="OPENCHANNEL.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.REPLYURI">replyUri</label>\n                <input type="url" name="replyUri" ng-model="vm.openchannelAccount.replyUri" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.REPLYURI"></span></div>\n                <div ng-messages="generalForm[\'replyUri\'].$error" ng-show="generalForm[\'replyUri\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_REQUIRED">replyUri field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="OPENCHANNEL.ERRORS.REPLYURI_MUST_VALID_URL">replyUri must be a valid url http://www.xcally.com</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.openchannelAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.openchannelAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.MAPKEY">MapKey</label>\n                <md-select name="mapKey" ng-model="vm.openchannelAccount.mapKey" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">None</md-option>\n                  <md-optgroup label="standard">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="!mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                  <md-optgroup label="custom">\n                    <md-option ng-value="mapKey.columnName" ng-repeat="mapKey in vm.fields" ng-if="mapKey.columnName.toString().startsWith(\'cf_\')" ng-disabled="mapKey.canSelect === false">{{ mapKey.displayName }}</md-option>\n                  </md-optgroup>\n                </md-select>\n                <div ng-messages="generalForm[\'mapKey\'].$error" ng-show="generalForm[\'mapKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MAPKEY_REQUIRED">MapKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.RECEIVEURI">receiveUri</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUri" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUri" name="receiveUri" ng-value="vm.location + \'/api/openchannel/accounts/\' + vm.openchannelAccount.id + \'/notify\'" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.RECEIVEURI"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="OPENCHANNEL.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.openchannelAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.queueTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.openchannelAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.agentTransfer == true" class="md-block">\n                <label translate="OPENCHANNEL.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.openchannelAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.openchannelAccount.token" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.TOKEN"></span></div>\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="openchannelAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.openchannelAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="OPENCHANNEL.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.openchannelAccount.mandatoryDisposition" class="md-block">\n                <label translate="OPENCHANNEL.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.openchannelAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="OPENCHANNEL.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="OpenchannelAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="openchannelAccount-detail-form-container openchanneldispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="OPENCHANNEL.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add openchannel dispositions" translate translate-attr-label="OPENCHANNEL.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="openchannelAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container openchannelcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountOpenchannelCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.OPENCHANNELCANNEDANSWERS">OpenchannelCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event)" aria-label="add openchannelCannedAnswer" translate translate-attr-label="OPENCHANNEL.ADD_OPENCHANNELCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length}} {{vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountOpenchannelCannedAnswers" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountOpenchannelCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountOpenchannelCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'OPENCHANNEL.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'OPENCHANNEL.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'OPENCHANNEL.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="openchannelCannedAnswer" md-select-id="id" ng-repeat="openchannelCannedAnswer in vm_dc.openchannelAccountOpenchannelCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{openchannelCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" md-cell>\n                        {{ openchannelCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditOpenchannelAccountOpenchannelCannedAnswer($event, openchannelCannedAnswer)" translate="OPENCHANNEL.EDIT_OPENCHANNELCANNEDANSWER">\n                                Edit OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(openchannelCannedAnswer, $event)" translate="OPENCHANNEL.DELETE_OPENCHANNELCANNEDANSWER">\n                                Delete OpenchannelCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountOpenchannelCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_OPENCHANNELCANNEDANSWER_AVAILABLE">No openchannelcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountOpenchannelCannedAnswers.count}}" md-on-paginate="vm_dc.getOpenchannelAccountOpenchannelCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.openchannelAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="OPENCHANNEL.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedOpenchannelAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedOpenchannelAccountApps.length}} {{vm_ac.selectedOpenchannelAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedOpenchannelAccountApps($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedOpenchannelAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.openchannelAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editOpenchannelAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editOpenchannelAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.openchannelAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="OpenchannelAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.openchannelAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="OPENCHANNEL.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getOpenchannelAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getOpenchannelAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getOpenchannelAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="OPENCHANNEL.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedOpenchannelAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedOpenchannelAccountInteractions.length}} {{vm_dc.selectedOpenchannelAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedOpenchannelAccountInteractions" csv-label="true" filename="openchannelAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedOpenchannelAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedOpenchannelAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getOpenchannelAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'OPENCHANNEL.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'OPENCHANNEL.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'OPENCHANNEL.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'OPENCHANNEL.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'OPENCHANNEL.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'OPENCHANNEL.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'OPENCHANNEL.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.openchannelAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'OPENCHANNEL.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'OPENCHANNEL.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spyopenchannelInteraction($event, interaction)" translate="OPENCHANNEL.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || (vm_dc.userProfile.downloadOmnichannelInteractions && vm_dc.userProfile.downloadAttachments)">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event, true)" translate="OPENCHANNEL.DOWNLOAD_WITH_ATTACHMENTS">\n                                Download with attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.openchannelInteractionDownload(interaction, $event)" translate="OPENCHANNEL.DOWNLOAD_WITHOUT_ATTACHMENTS">\n                                Download without attachments\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="OPENCHANNEL.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.openchannelAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="OPENCHANNEL.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.openchannelAccountInteractions.count}}" md-on-paginate="vm_dc.getOpenchannelAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelAccounts/openchannelAccounts.html",'<div id="openchannelAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELACCOUNTS">OpenchannelAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelAccounts-count">\n          <span>{{vm.selectedOpenchannelAccounts.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelAccounts()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelAccounts" csv-label="true" filename="openchannelAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelAccounts($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'OPENCHANNEL.KEY\' | translate }}</th>\n                <th md-column md-order-by="replyUri">{{ \'OPENCHANNEL.REPLYURI\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'OPENCHANNEL.LIST\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'OPENCHANNEL.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelAccounts.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelAccount" md-select-id="id" ng-repeat="openchannelAccount in vm.openchannelAccounts.rows">\n                <td md-cell ng-if="openchannelAccount.userpic"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="api/users/{{openchannelAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="id ">{{openchannelAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="name ">{{openchannelAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="key ">{{openchannelAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="replyUri ">{{openchannelAccount.replyUri}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':openchannelAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelAccount, ev) : vm.createOrEditOpenchannelAccount($event, openchannelAccount)" md-cell class="description ">{{openchannelAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelAccount, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELACCOUNT">\n                          Edit OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(openchannelAccount, $event    )" translate="OPENCHANNEL.INTERACTIONS_OPENCHANNELACCOUNT">\n                          Interactions OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelAccount, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELACCOUNT">\n                          AgentAdd OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelAccount, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELACCOUNT">\n                          Delete OpenchannelAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelAccounts.count}}" md-on-paginate="vm.getOpenchannelAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelAccount-button" ng-click="vm.createOrEditOpenchannelAccount($event)" aria-label="add openchannelAccount" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/create/dialog.html",'<md-dialog class="openchannelQueue-dialog" aria-label="New OpenchannelQueue">\n  <form name="openchannelQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newOpenchannelQueue">\n\n        <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n        <div ng-messages="openchannelQueueForm[\'name\'].$error" ng-show="openchannelQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="openchannelQueueForm[\'strategy\'].$error" ng-show="openchannelQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="openchannelQueueForm[\'timeout\'].$error" ng-show="openchannelQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.openchannelQueue.description">\n\n        <div ng-messages="openchannelQueueForm[\'description\'].$error" ng-show="openchannelQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOpenchannelQueue" ng-click="vm.saveOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid || openchannelQueueForm.$pristine" aria-label="SAVE" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOpenchannelQueue" ng-click="vm.addNewOpenchannelQueue()" class="send-button md-accent md-raised" ng-disabled="openchannelQueueForm.$invalid" aria-label="ADD" translate="OPENCHANNEL.ADD_OPENCHANNELQUEUE" translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n          ADD OPENCHANNELQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOpenchannelQueue" ng-click="vm.deleteOpenchannelQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="OPENCHANNEL.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="OPENCHANNEL.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/agentadd/agentadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">Add Agent to openchannelQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/teamadd/teamadd.html",'<md-dialog class="openchannelQueue-dialog" aria-label="openchannelQueue" ng-init="vm.onInit()">\n  <form name="openchannelQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="OPENCHANNEL.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/openchannel/views/openchannelQueues/edit/view.html",'<div id="openchannel-openchannelQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-openchannelQueues-button md-icon-button" aria-label="Go to openchannelQueues" ng-click="vm.gotoOpenchannelQueues()" translate translate-attr-aria-label="OPENCHANNEL.GO_TO_OPENCHANNELQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="openchannelQueue-image" hide-xs>\n          <img ng-src="assets/images/business/openchannelQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.openchannelQueue.id}}\n            <span ng-if="vm.openchannelQueue.name">{{vm.openchannelQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="OPENCHANNEL.CREATED_AT"></span> <span>{{vm.openchannelQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.openchannelQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.openchannelQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOpenchannelQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="OPENCHANNEL.SAVE" translate-attr-aria-label="OPENCHANNEL.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="openchannelQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="OPENCHANNEL.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.openchannelQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="OPENCHANNEL.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="OPENCHANNEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.openchannelQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.openchannelQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="OPENCHANNEL.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="OPENCHANNEL.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.openchannelQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="OPENCHANNEL.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/openchannel/views/openchannelQueues/openchannelQueues.html",'<div id="openchannelQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-google-earth" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="OPENCHANNEL.OPENCHANNELQUEUES">OpenchannelQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="OPENCHANNEL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedOpenchannelQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedOpenchannelQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="OPENCHANNEL.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-openchannelQueues-count">\n          <span>{{vm.selectedOpenchannelQueues.length}}</span>\n          <span translate="OPENCHANNEL.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="OPENCHANNEL.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllOpenchannelQueues()" translate="OPENCHANNEL.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectOpenchannelQueues()" translate="OPENCHANNEL.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOpenchannelQueues" csv-label="true" filename="openchannelQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOpenchannelQueues($event)" aria-label="delete selected" translate translate-attr-label="OPENCHANNEL.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- OPENCHANNELQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOpenchannelQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOpenchannelQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'OPENCHANNEL.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'OPENCHANNEL.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'OPENCHANNEL.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.openchannelQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="OPENCHANNEL.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="openchannelQueue" md-select-id="id" ng-repeat="openchannelQueue in vm.openchannelQueues.rows">\n                <td md-cell ng-if="openchannelQueue.userpic"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="api/users/{{openchannelQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!openchannelQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{openchannelQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="id ">{{openchannelQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="name ">{{openchannelQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(openchannelQueue, ev) : vm.createOrEditOpenchannelQueue($event, openchannelQueue)" md-cell class="strategy ">{{ vm.arraystrategy[openchannelQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="OPENCHANNEL.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(openchannelQueue, $event    )" translate="OPENCHANNEL.EDIT_OPENCHANNELQUEUE">\n                          Edit OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.TEAMADD_OPENCHANNELQUEUE">\n                          teamadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(openchannelQueue, $event    )" translate="OPENCHANNEL.AGENTADD_OPENCHANNELQUEUE">\n                          agentadd OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(openchannelQueue, $event    )" translate="OPENCHANNEL.DELETE_OPENCHANNELQUEUE">\n                          Delete OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(openchannelQueue, $event    )" translate="OPENCHANNEL.GOTOREALTIME_OPENCHANNELQUEUE">\n                          goToRealtime OpenchannelQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'OPENCHANNEL.PAGE\' | translate}}:\', rowsPerPage: \'{{\'OPENCHANNEL.ROWSPERPAGE\' | translate}}:\', of: \'{{\'OPENCHANNEL.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.openchannelQueues.count}}" md-on-paginate="vm.getOpenchannelQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / OPENCHANNELQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD OPENCHANNELQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-openchannelQueue-button" ng-click="vm.createOrEditOpenchannelQueue($event)" aria-label="add openchannelQueue" translate translate-attr-aria-label="OPENCHANNEL.ADD_OPENCHANNELQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD OPENCHANNELQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/openchannel/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="OPENCHANNEL.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/plugins/views/plugin/plugin.html",'<div ng-if="!vm.plugin">\n  <p>Plugin not available...</p>\n</div>\n<div id="plugin" ng-if="vm.plugin" ng-cloak layout-fill>\n  <iframe ng-src="{{vm.getTrustedURL()}}" frameborder=0 style="border:0px; width:100%; height:100%;"></iframe>\n</div>'),e.put("app/main/apps/realtime/views/agents/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools quick-filter-container">\n    <span class="md-subhead" translate="VOICE.AGENTS">Agents</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getAgents()" query="vm.query" debounce="300"></ms-search-bar>\n    <md-select ng-model="vm.query.globalStatusFilter" class="md-caption" ng-change="vm.query.pauseTypeFilter = null; vm.getAgents()" aria-label="Status filter">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="pause">{{ \'VOICE.PAUSE\' | translate }}</md-option>\n      <md-option value="*pause">{{ \'VOICE.PARTIALPAUSE\' | translate }}</md-option>\n      <md-option value="busy">{{ \'VOICE.BUSY\' | translate }}</md-option>\n      <md-option value="idle">{{ \'VOICE.IDLE\' | translate }}</md-option>\n    </md-select>\n    <md-select ng-if="vm.query.globalStatusFilter === \'pause\' || vm.query.globalStatusFilter === \'*pause\'" ng-model="vm.query.pauseTypeFilter" class="md-caption ml-16" ng-change="vm.getAgents()">\n      <md-option ng-value="null">{{ \'VOICE.ALL\' | translate }}</md-option>\n      <md-option value="DEFAULT PAUSE">{{ \'VOICE.DEFAULT_PAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="ACW">ACW</md-option>\n      <md-option value="LOGININPAUSE">{{ \'STAFF.LOGININPAUSE\' | translate | uppercase }}</md-option>\n      <md-option value="Auto-Pause">{{ \'VOICE.AUTOPAUSE\' | translate | uppercase }}</md-option>\n      <md-option ng-value="pause.name" ng-repeat="pause in vm.pauses.rows">{{pause.name}}</md-option>\n    </md-select>\n    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAllQueues()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.id" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearQueuesSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\n    </md-select>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table multiple md-progress="vm.getAgents">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n      <tr md-row>\n        <th class="bv text-center" colspan="5">{{ \'VOICE.AGENT\' | translate }}</th>\n        <th class="bv bl text-center" colspan="2">{{ \'VOICE.VOICE\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="bv bl text-center" colspan="2">{{ \'CHAT.CHAT\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="bv bl text-center" colspan="2">{{ \'MAIL.MAIL\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="bv bl text-center" colspan="2">{{ \'SMS.SMS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="bv bl text-center" colspan="2">\n          {{ \'OPENCHANNEL.OPENCHANNEL\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="bv bl text-center" colspan="2">{{ \'FAX.FAX\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="bv bl text-center" colspan="2">\n          {{ \'WHATSAPP.WHATSAPP\' | translate }}</th>\n        <th width="10px" class="bt bl" rowspan="2"></th>\n      </tr>\n      <tr md-row>\n        <th class="bl" colspan="2" md-column md-order-by="fullname">\n          {{ \'VOICE.NAME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="globalStatus">\n          {{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastLoginAt">\n          {{ \'VOICE.LOGIN_TIME\' | translate }}</th>\n        <th class="bl custom-column" md-column md-order-by="lastPauseAt">\n          {{ \'VOICE.PAUSE_TIME\' | translate }}</th>\n        <th class="bl custom-column">{{ \'VOICE.STATUS\' | translate }}</th>\n        <th class="bl custom-column">Info</th>\n        <th ng-if="vm.license.chat" class="bl text-center">{{ \'CHAT.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.chat" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'CHAT.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.mail" class="bl text-center">{{ \'MAIL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.mail" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'MAIL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.messaging" class="bl text-center">{{ \'SMS.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.messaging" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'SMS.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.openchannel" class="bl text-center">{{ \'OPENCHANNEL.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.openchannel" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'OPENCHANNEL.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.fax" class="bl text-center">{{ \'FAX.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.fax" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'FAX.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n        <th ng-if="vm.license.whatsapp" class="bl text-center">{{ \'WHATSAPP.STATUS\' | translate }}</th>\n        <th ng-if="vm.license.whatsapp" class="text-center">\n          <md-icon md-font-icon="icon-battery-standard">\n            <md-tooltip>{{ \'WHATSAPP.CAPACITY\' | translate }}</md-tooltip>\n          </md-icon>\n        </th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.agents.count > 0">\n        <td md-cell colspan="19">\n          <div layout="row" layout-align="center center">\n            <span>{{ \'VOICE.NO_AGENT_ONLINE\' | translate }}</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center">\n            <img class="avatar" ng-src="{{agent.userpic && \'api/users/\'+ agent.id +\'/avatar\' || \'assets/images/avatars/profile.png\'}}">\n            <div layout="column">\n              <span>{{agent.fullname}}</span>\n              <span>{{agent.internal}}</span>\n            </div>\n          </div>\n        </td>\n        <td class="bt padding-5">\n          <div layout="row" layout-align="start center" ng-if="vm.license.screenrecording && (agent.phoneBarEnableScreenRecordingByAgent || agent.phoneBarEnableAutomaticScreenRecording)">\n            <div class="column">\n              <span>\n                <md-icon md-font-icon="icon-camcorder-box" ng-class="agent.screenrecording ? \'green-fg\' : \'grey-fg\'" aria-hidden="true">\n                  <md-tooltip>\n                    {{ agent.screenrecording ? \'VOICE.TOOLTIP_SCREENRECORDING_ON\' : \'VOICE.TOOLTIP_SCREENRECORDING_OFF\'\n                    | translate }}\n                  </md-tooltip>\n                </md-icon>\n              </span>\n            </div>\n          </div>\n        </td>\n        <td class="bt text-center">\n'+"          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','busy':'indigo-100-bg','*pause':'amber-50-bg','pause':'amber-200-bg'}[agent.globalStatus]\">\n            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\n          </span>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer start-time=\"agent.lastLoginAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt custom-column\">\n          <timer ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\" start-time=\"agent.lastPauseAt\" utc-offset=\"vm.utcOffset\"></timer>\n        </td>\n        <td class=\"bt bl text-center\">\n          <span ng-if=\"!agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','talking':'indigo-100-bg','ringing':'orange-400-bg','pause':'amber-200-bg'}[agent.voiceStatus]\">\n            {{ 'VOICE.' + (agent.voiceStatus | uppercase) | translate | uppercase }}</span>\n          <span ng-if=\"agent.onhold\" class=\"text-boxed md-background-bg bl bt padding-5 orange-400-bg\">\n            {{ 'VOICE.ONHOLD' | translate | uppercase }}</span>\n        </td>\n        <td class=\"bt bl\">\n          <div layout=\"column\" ng-if=\"agent.voiceStatus === 'talking' || agent.voiceStatus === 'ringing'\">\n            <span ng-if=\"agent.queue\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.routealias }}</span>\n            <span class=\"padding-5\" ng-if=\"agent.queue || agent.destconnectedlinenum\">\n              <timer start-time=\"agent.voiceStatusTime\" utc-offset=\"vm.utcOffset\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">\n              </timer>\n            </span>\n          </div>\n        </td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.chat\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.chatStatus]\">\n            {{ 'VOICE.' + (agent.chatStatus | uppercase) | translate | uppercase }}</span>\n        </td>\n        <td md-number class=\"bt text-center font-size-20\" ng-if=\"vm.license.chat\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.chatStatus]\">\n          {{ agent.chatCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.mail\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.mailStatus]\">\n            {{ 'VOICE.' + (agent.mailStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.mail\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.mailStatus]\">\n          {{ agent.mailCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.messaging\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.smsStatus]\">\n            {{ 'VOICE.' + (agent.smsStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.messaging\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.smsStatus]\">\n          {{ agent.smsCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.openchannel\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.openchannelStatus]\">\n            {{ 'VOICE.' + (agent.openchannelStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.openchannel\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.openchannelStatus]\">\n          {{ agent.openchannelCurrentCapacity }}</td>\n        <td class=\"bt bl text-center\" ng-if=\"vm.license.fax\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.faxStatus]\">\n            {{ 'VOICE.' + (agent.faxStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.fax\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.faxStatus]\">\n          {{ agent.faxCurrentCapacity }}</td>\n        <td class=\"bl bt text-center\" ng-if=\"vm.license.whatsapp\">\n          <span class=\"text-boxed md-background-bg bl bt padding-5\" ng-class=\"{'idle':'lime-300-bg','maxcapacity':'red-A200-bg','working':'indigo-100-bg','pause':'amber-200-bg'}[agent.whatsappStatus]\">\n            {{ 'VOICE.' + (agent.whatsappStatus | uppercase) | translate | uppercase }}\n          </span>\n        </td>\n        <td class=\"bt padding-5 text-center font-size-20\" ng-if=\"vm.license.whatsapp\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.whatsappStatus]\">\n          {{ agent.whatsappCurrentCapacity }}</td>\n        <td class=\"bl bt padding-5 text-center\" ng-if=\"vm.crudPermissions.canEdit\">\n          <md-menu>\n            <md-button class=\"md-icon-button\" aria-label=\"More\" translate translate-attr-aria-label=\"STAFF.MORE\" ng-click=\"$mdOpenMenu($event)\">\n              <md-icon md-font-icon=\"icon-dots-vertical\"></md-icon>\n            </md-button>\n            <md-menu-content width=\"4\">\n              <md-menu-item>\n                <md-button ng-click=\"vm.logout(agent, $event)\" translate=\"VOICE.LOGOUT\">\n                  Logout\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click=\"vm.addQueue(agent, $event)\" translate=\"{{ vm.channel.toUpperCase() + '.AGENTADD_QUEUE' }}\">\n                  Add Agent In Queue\n                </md-button>\n              </md-menu-item>\n              <md-menu-item ng-if=\"vm.license.screenrecording && agent.phoneBarEnableScreenRecordingByAgent\">\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.SCREENRECORDING\">Manage Screen Recording\n                  </md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-click=\"vm.manageScreenRecording(agent, !agent.screenrecording)\" translate=\"{{ agent.screenrecording ? 'VOICE.STOP_SCREENRECORDING' : 'VOICE.START_SCREENRECORDING' }}\" aria-label=\"Screen Recording\">\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu>\n                  <md-button ng-click=\"$mdMenu.open()\" class=\"text-capitalize\" translate=\"VOICE.PAUSE\">Pause</md-button>\n                  <md-menu-content>\n                    <md-menu-item>\n                      <md-button ng-disabled=\"agent.voicePause && 'DEFAULT PAUSE' === agent.pauseType\" ng-click=\"vm.pause(agent)\">\n                        <em translate=\"VOICE.DEFAULT_PAUSE\">Default Pause</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if=\"vm.pauses.rows.length\" ng-repeat=\"pause in vm.pauses.rows\">\n                      <md-button ng-disabled=\"agent.voicePause && pause.name === agent.pauseType\" ng-click=\"vm.pause(agent, pause.name)\">{{pause.name}}\n                      </md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">\n                <md-button ng-click=\"vm.unpause(agent)\" translate=\"VOICE.UNPAUSE\">\n                  Unpause\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label=\"{page: '{{'VOICE.PAGE' | translate}}:', rowsPerPage: '{{'VOICE.ROWSPERPAGE' | translate}}:', of: '{{'VOICE.OF' | translate}}'}\" md-limit=\"vm.query.limit\" md-limit-options=\"[10, 15, 20, 50, 100, 250]\" md-page=\"vm.query.page\" md-total=\"{{vm.agents.count}}\" md-on-paginate=\"vm.getAgents\" md-page-select></md-table-pagination>"),e.put("app/main/apps/realtime/views/queues/predictive/dialog.html",'<md-dialog class="predictive-dialog" aria-label="New predictive">\n  <md-toolbar class="md-accent md-hue-2">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n      <span class="title">{{ vm.queueCampaign.name }} {{ \'DASHBOARDS.INFO\' | translate }}</span>\n      <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-dialog-content class="text-center">\n    <ds-widget-clock data-show-digital></ds-widget-clock>\n    <div ng-if="!vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive">\n      <div class="md-title"><span translate="MOTIONDIALER.PREDICTIVE_IS_NOT_RUNNING">Predictive is not running</span></div>\n    </div>\n\n    <div ng-if="vm.queueCampaign.startProgressive && !vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.DATA_COLLECTION_IN_PROGRESSIVE">Data collection in progressive</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startProgressive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startProgressive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n    </div>\n    <div ng-if="vm.queueCampaign.startPredictive" class="m-10">\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-headline"><span translate="MOTIONDIALER.PREDICTIVE_IS_RUNNING">Predictive is runnning</span></div>\n          <div class="md-subhead">({{vm.queueCampaign.dialPredictiveInterval}} minutes)</div>\n        </div>\n      </div>\n\n      <div layout="row">\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.STARTTIME">Start Time</span></div>\n          <div class="md-headline">{{ vm.formatTime(vm.queueCampaign.startPredictive) }}</div>\n        </div>\n        <div flex="" class="column">\n          <div class="md-subhead"><span translate="MOTIONDIALER.ENDTIME">End Time</span></div>\n          <div class="md-headline">\n            {{ vm.formatTime(vm.queueCampaign.startPredictive, vm.queueCampaign.dialPredictiveInterval) }}\n          </div>\n        </div>\n      </div>\n      <div>\n        <span class="text-boxed blue-bg white-fg">\n          {{vm.queueCampaign.message ? (\'MOTIONDIALER.\' + vm.queueCampaign.message | translate) : \'--\'}}\n        </span>\n      </div>\n      <div class="row">\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">Predictive - {{ \'MOTIONDIALER.PREVIOUS_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.TOTAL_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalTotalCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ANSWERED_CALLS">Total Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.predictiveIntervalAnsweredCalls }}</td>\n                </tr>\n                \x3c!-- Temporaneamente non mostrate perchè contengono anche i dati dell\'intervallo corrente --\x3e\n                \x3c!-- <tr md-row>\n                      <td md-cell>Dropped Calls Timeout</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsTimeout }}</td>\n                    </tr>\n                    <tr md-row>\n                      <td md-cell>Dropped Calls Caller Exit</td>\n                      <td md-cell>{{ vm.queueCampaign.predictiveIntervalDroppedCallsCallersExit }}\n                      </td>\n                    </tr> --\x3e\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_HOLD_TIME">AVG Hold Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgHoldtime | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AVG_TALK_TIME">AVG Talk Time</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.predictiveIntervalAvgTalktime | number:0 }}s</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n        <md-card>\n          <md-toolbar class="md-table-toolbar md-default">\n            <div class="md-toolbar-tools">\n              <span class="md-subhead">ErlangB - {{ \'MOTIONDIALER.CURRENT_INTERVAL\' | translate }}</span>\n            </div>\n          </md-toolbar>\n          <md-table-container>\n            <table md-table>\n              <tbody md-body>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.SCHEDULED_CALLS">Scheduled Calls</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangCalls }}</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.ONE_CALL_EVERY">One call every</span></td>\n                  <td md-cell>~ {{ vm.queueCampaign.erlangCallToSecond | number:0 }}s</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.DROPRATE">Drop Rate</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangAbandonmentRate * 100 | number:2 }}%</td>\n                </tr>\n                <tr md-row>\n                  <td md-cell><span translate="MOTIONDIALER.AGENTBUSYFACTOR">Agent Busy Factor</span></td>\n                  <td md-cell>{{ vm.queueCampaign.erlangBusyFactor * 100 | number:2 }}%</td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n        </md-card>\n      </div>\n    </div>\n  </md-dialog-content>\n</md-dialog>'),e.put("app/main/apps/realtime/views/queues/templates/actions.html",'<md-menu>\n  <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n    <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n  </md-button>\n  <md-menu-content width="3">\n    <md-menu-item>\n      <md-button ng-click="vm.editQueue($event, queue)" translate="{{ (vm.channel | uppercase) + \'.EDIT_QUEUE\' }}">\n        Edit Queue\n      </md-button>\n    </md-menu-item>\n    <md-menu-item ng-if="queue.dialMethod === \'predictive\'">\n      <md-button ng-click="vm.showPredictiveInfo($event, queue)" translate="MOTIONDIALER.SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO">\n        Show Predictive Info\n      </md-button>\n    </md-menu-item>\n    <md-menu-item>\n      <md-button ng-click="vm.addOrRemoveAgents($event, queue)" translate="{{ (vm.channel | uppercase) + \'.AGENTSADD_QUEUE\' }}">\n        Add Agents to queue\n      </md-button>\n    </md-menu-item>\n  </md-menu-content>\n</md-menu>'),e.put("app/main/apps/realtime/views/queues/templates/headers/default.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ (vm.channel | uppercase) + '.NAME' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ (vm.channel | uppercase) + '.PAUSED' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_INTERACTIONS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/inbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'VOICE.NAME' | translate }}</th>\n  <th md-column>{{ 'VOICE.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'VOICE.PAUSED' | translate }}</th>\n  <th md-column>{{ 'VOICE.TALKING' | translate }}</th>\n  <th md-column>{{ 'VOICE.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/headers/outbound.html","<tr md-row>\n  <th md-column md-order-by=\"name\">{{ 'MOTIONDIALER.NAME' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.LOGGED_IN' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.AVAILABLE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.PAUSED' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TALKING' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.BUSY' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.WAITING_CALLS' | translate }}</th>\n  <th md-column>{{ 'DASHBOARDS.ORIGINATED_TEXT' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.MESSAGE' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.METHOD' | translate }}</th>\n  <th md-column>{{ 'MOTIONDIALER.TRUNK' | translate }}</th>\n  <th md-column md-order-by=\"dialActive\">{{ 'MOTIONDIALER.ACTIVE' | translate }}</th>\n  <th md-column width=\"10px\"></th>\n</tr>"),e.put("app/main/apps/realtime/views/queues/templates/rows/default.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="6">\n    <div layout="row" layout-align="center center">\n      <span translate="DASHBOARDS.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedIn }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/inbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="8">\n    <div layout="row" layout-align="center center">\n      <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n\n  <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit" ng-include="\'app/main/apps/realtime/views/queues/templates/actions.html\'"></td>\n</tr>'),e.put("app/main/apps/realtime/views/queues/templates/rows/outbound.html",'<tr md-row ng-hide="vm.queues.count > 0">\n  <td md-cell colspan="13">\n    <div layout="row" layout-align="center center">\n      <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n    </div>\n  </td>\n</tr>\n<tr md-row md-select="queue" md-select-id="id" ng-repeat="queue in vm.queues.rows">\n  <td md-cell>{{ queue.name }}</td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.loggedInDb }} ({{ queue.loggedIn }})</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.available }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.paused }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.talking  + queue.pTalking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.inUse - queue.talking }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.waiting }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.originated }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.message ? (\'MOTIONDIALER.\'+ queue.message | translate) : \'--\'}}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-18 grey-fg">{{ queue.dialMethod || 0 }}</span>\n  </td>\n  <td md-cell>\n    <span class="font-size-16 grey-fg">{{ queue.Trunk ? queue.Trunk.name : \'--\' }}</span>\n  </td>\n  <td md-cell>\n'+"    <md-icon md-colors=\"{color: {{queue.dialActive ? '\\'green\\'' : '\\'red\\''}}}\" md-font-icon=\"{{queue.dialActive ? 'icon-check' : 'icon-close'}}\"></md-icon>\n  </td>\n\n  <td md-cell class=\"actions\" ng-if=\"vm.crudPermissions.canEdit\" ng-include=\"'app/main/apps/realtime/views/queues/templates/actions.html'\"></td>\n</tr>"),e.put("app/main/apps/realtime/views/queues/view.html",'<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="{{ (vm.channel | uppercase) + \'.QUEUES\' }}">Queues</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n<md-table-container ng-init="vm.onInit()">\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues" ng-include="vm.headersTemplate">\n    </thead>\n    <tbody md-body ng-include="vm.rowsTemplate"></tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{ \'DASHBOARDS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'DASHBOARDS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'DASHBOARDS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.queues.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>'),e.put("app/main/apps/settings/views/cloudProviders/cloudProviders.html",'<div id="cloudProviders" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CLOUD_PROVIDERS">Cloud Providers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAiTools.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedAiTools =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cloudProviders-count">\n          <span>{{vm.selectedAiTools.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAiTools()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAiTools()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAiTools" csv-label="true" filename="cloudProviders.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedAiTools($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CLOUDPROVIDER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAiTools" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAiTools">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SETTINGS.NAME\' | translate }}</th>\n                <th md-column md-order-by="service">{{ \'SETTINGS.SERVICE\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cloudProviders.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cloudProvider" md-select-id="id" ng-repeat="cloudProvider in vm.cloudProviders.rows">\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="id">{{cloudProvider.id}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="name">{{cloudProvider.name}}</td>\n                <td ng-click="vm.createOrEditCloudProvider($event, cloudProvider)" md-cell class="service">{{ vm.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cloudProviders.count}}" md-on-paginate="vm.getAiTools" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CLOUDPROVIDER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CLOUDPROVIDER BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-cloudProvider-button" ng-click="vm.createOrEditCloudProvider($event)" aria-label="add cloudProvider" translate translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CLOUDPROVIDER BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/cloudProviders/create/dialog.html",'<md-dialog class="cloudProvider-dialog" aria-label="New CloudProvider">\n  <form name="cloudProviderForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (vm.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.cloudProvider.name" ng-required="true" autofocus>\n\n        <div ng-messages="cloudProviderForm[\'name\'].$error" ng-show="cloudProviderForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.SERVICE">Service</label>\n        <md-select name="service" ng-model="vm.cloudProvider.service" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'service\'].$error" ng-show="cloudProviderForm[\'service\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SERVICE_REQUIRED">Service field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.ACCESSKEY">AccessKey</label>\n        <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ACCESSKEY_REQUIRED">AccessKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.cloudProvider.service == \'AmazonAWS\'" class="md-block">\n        <label translate="SETTINGS.SECRETACCESSKEY">SecretAccesskey</label>\n        <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n        <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.SECRETACCESSKEY_REQUIRED">SecretAccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</label>\n          <input type="text" name="data1" ng-model="vm.cloudProvider.data1" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data1\'].$error" ng-show="cloudProviderForm[\'data1\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</label>\n          <input type="text" name="data2" ng-model="vm.cloudProvider.data2" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data2\'].$error" ng-show="cloudProviderForm[\'data2\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newCloudProvider" ng-click="vm.saveCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid || cloudProviderForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newCloudProvider" ng-click="vm.addNewCloudProvider()" class="send-button md-accent md-raised" ng-disabled="cloudProviderForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CLOUDPROVIDER" translate-attr-aria-label="SETTINGS.ADD_CLOUDPROVIDER">\n          ADD CLOUDPROVIDER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteCloudProvider($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/create/dialog.html",'<md-dialog class="customization-dialog" aria-label="New Customization">\n  <form name="customizationForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n        <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n        <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n        <div ng-messages="customizationForm[\'headerWhiteLabel\'].$error" ng-show="customizationForm[\'headerWhiteLabel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n        <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n        <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n        <div ng-messages="customizationForm[\'pageTitle\'].$error" ng-show="customizationForm[\'pageTitle\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.license.preferred" class="md-block">\n        <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomization" ng-click="vm.saveCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid || customizationForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomization" ng-click="vm.addNewCustomization()" class="send-button md-accent md-raised" ng-disabled="customizationForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_CUSTOMIZATION" translate-attr-aria-label="SETTINGS.ADD_CUSTOMIZATION">\n          ADD CUSTOMIZATION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomization" ng-click="vm.deleteCustomization($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/customizations/customizations.html",'<div id="customizations" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.CUSTOMIZATIONS">Customizations</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomization()" ng-disabled="(customizationsForm.$pristine && logoForm.$pristine && logologinForm.$pristine && preferredForm.$pristine && faviconForm.$pristine) || (customizationsForm.$invalid || logoForm.$invalid || logologinForm.$invalid || preferredForm.$invalid || faviconForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="customization-detail-form-container customizations md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.CUSTOMIZATIONS">CUSTOMIZATIONS</div>\n        </div>\n        <form name="customizationsForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLogo" aria-label="Default_Logo"><span translate="SETTINGS.DEFAULT_LOGO">Default_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultLoginLogo" aria-label="Default_Login_Logo"><span translate="SETTINGS.DEFAULT_LOGIN_LOGO">Default_Login_Logo</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultFavicon" aria-label="Default_Favicon"><span translate="SETTINGS.DEFAULT_FAVICON">Default_Favicon</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultHeaderWhiteLabel" aria-label="Default_Header_WhiteLabel"><span translate="SETTINGS.DEFAULT_HEADER_WHITELABEL">Default_Header_WhiteLabel</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultHeaderWhiteLabel" class="md-block">\n            <label translate="SETTINGS.HEADER_WHITELABEL">Header_WhiteLabel</label>\n            <input type="text" name="headerWhiteLabel" ng-model="vm.customization.headerWhiteLabel" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'headerWhiteLabel\'].$error" ng-show="customizationsForm[\'headerWhiteLabel\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.HEADER_WHITELABEL_REQUIRED">Header_WhiteLabel field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.customization.defaultPageTitle" aria-label="Default_Page_Title"><span translate="SETTINGS.DEFAULT_PAGE_TITLE">Default_Page_Title</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="!vm.customization.defaultPageTitle" class="md-block">\n            <label translate="SETTINGS.PAGE_TITLE">Page_Title</label>\n            <input type="text" name="pageTitle" ng-model="vm.customization.pageTitle" ng-required="true">\n\n            <div ng-messages="customizationsForm[\'pageTitle\'].$error" ng-show="customizationsForm[\'pageTitle\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PAGE_TITLE_REQUIRED">Page_Title field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.license.preferred" class="md-block">\n            <md-switch ng-model="vm.customization.defaultPreferred" aria-label="Default_Preferred"><span translate="SETTINGS.DEFAULT_PREFERRED">Default_Preferred</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="!vm.customization.defaultLogo" class="customization-detail-form-container logo md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGO">LOGO</div>\n        </div>\n        <div ng-controller="CustomizationlogoController as vm_cl" ng-init="vm_cl.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cl.ngFlowOptions" flow-name="vm_cl.ngFlow.flow" flow-files-submitted="vm_cl.upload()" flow-file-added="vm_cl.fileAdded($file)" flow-file-success="vm_cl.fileSuccess($file, $message)" flow-complete="vm_cl.uploadComplete()" flow-drop flow-drag-enter="vm_cl.dropping=true" flow-drag-leave="vm_cl.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logoimage in vm_cl.customization.images" ng-switch="logoimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logoimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logoimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logoimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultLoginLogo" class="customization-detail-form-container logologin md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.LOGOLOGIN">LOGOLOGIN</div>\n        </div>\n        <div ng-controller="CustomizationlogologinController as vm_cll" ng-init="vm_cll.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cll.ngFlowOptions" flow-name="vm_cll.ngFlow.flow" flow-files-submitted="vm_cll.upload()" flow-file-added="vm_cll.fileAdded($file)" flow-file-success="vm_cll.fileSuccess($file, $message)" flow-complete="vm_cll.uploadComplete()" flow-drop flow-drag-enter="vm_cll.dropping=true" flow-drag-leave="vm_cll.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="logologinimage in vm_cll.customization.images" ng-switch="logologinimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{logologinimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="logologinimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{logologinimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultPreferred && vm.license.preferred" class="customization-detail-form-container preferred md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.PREFERRED">PREFERRED</div>\n        </div>\n        <div ng-controller="CustomizationpreferredController as vm_cp" ng-init="vm_cp.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cp.ngFlowOptions" flow-name="vm_cp.ngFlow.flow" flow-files-submitted="vm_cp.upload()" flow-file-added="vm_cp.fileAdded($file)" flow-file-success="vm_cp.fileSuccess($file, $message)" flow-complete="vm_cp.uploadComplete()" flow-drop flow-drag-enter="vm_cp.dropping=true" flow-drag-leave="vm_cp.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="preferredimage in vm_cp.customization.images" ng-switch="preferredimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{preferredimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="preferredimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{preferredimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n      <div ng-if="!vm.customization.defaultFavicon" class="customization-detail-form-container favicon md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.FAVICON">FAVICON</div>\n        </div>\n        <div ng-controller="CustomizationfaviconController as vm_cf" ng-init="vm_cf.init(vm.customization)" class="customization-detail-form-container md-background-bg md-whiteframe-1dp">\n\n          <div id="customization-image-uploader" flow-init="vm_cf.ngFlowOptions" flow-name="vm_cf.ngFlow.flow" flow-files-submitted="vm_cf.upload()" flow-file-added="vm_cf.fileAdded($file)" flow-file-success="vm_cf.fileSuccess($file, $message)" flow-complete="vm_cf.uploadComplete()" flow-drop flow-drag-enter="vm_cf.dropping=true" flow-drag-leave="vm_cf.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n            <div class="drop-text hint-text" layout="row" layout-align="center center">\n              <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n            </div>\n\n            <div class="upload-button" layout="column" layout-align="center center">\n              <md-button class="md-accent md-raised" flow-btn>\n                Upload\n              </md-button>\n              <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG, ICO - Max. 8MB</span>\n            </div>\n\n            <div layout="row" layout-align="start start" layout-wrap>\n              <div ng-repeat="faviconimage in vm_cf.customization.images" ng-switch="faviconimage.type">\n                <div class="customization-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                  <div class="overlay" layout="column" layout-align="center center">\n                    <md-progress-linear md-mode="determinate" value="{{faviconimage.file.progress() * 100}}">\n                    </md-progress-linear>\n                  </div>\n                  <img class="media" flow-img="faviconimage.file">\n                </div>\n\n                <div class="customization-image" ng-switch-when="image" layout="row" layout-align="center center">\n                  <img class="media" ng-src="{{faviconimage.url}}">\n                </div>\n              </div>\n            </div>\n          </div>\n        </div>\n\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/settings/views/generals/create/dialog.html",'<md-dialog class="general-dialog" aria-label="New General">\n  <form name="generalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newGeneral" ng-click="vm.saveGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid || generalForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newGeneral" ng-click="vm.addNewGeneral()" class="send-button md-accent md-raised" ng-disabled="generalForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_GENERAL" translate-attr-aria-label="SETTINGS.ADD_GENERAL">\n          ADD GENERAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newGeneral" ng-click="vm.deleteGeneral($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/generals/generals.html",'<div id="generals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.GENERAL">General</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div>\n      <md-button type="submit" ng-click="vm.saveGeneral()" ng-disabled="(globalForm.$pristine && motionbarForm.$pristine && reportForm.$pristine && agentOmniDesktopInterfaceForm.$pristine && screenRecordingForm.$pristine && securityForm.$pristine && imapGeneralSettingsForm.$pristine && SSOForm.$pristine && aiToolsForm.$pristine) || (globalForm.$invalid || motionbarForm.$invalid || reportForm.$invalid || agentOmniDesktopInterfaceForm.$invalid || screenRecordingForm.$invalid || securityForm.$invalid || imapGeneralSettingsForm.$invalid || SSOForm.$invalid || aiToolsForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      <div class="general-detail-form-container global md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GLOBAL">GLOBAL</div>\n        </div>\n        <form name="globalForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MIN_INTERNAL">Min_Internal</label>\n            <input type="number" name="min_internal" ng-model="vm.general.min_internal" min="0" value="1000" ng-required="true" autofocus>\n\n            <div ng-messages="globalForm[\'min_internal\'].$error" ng-show="globalForm[\'min_internal\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_REQUIRED">Min_Internal field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Min_Internal must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHATTIMEOUT">chatTimeout</label>\n            <input type="number" name="chatTimeout" ng-model="vm.general.chatTimeout" min="0" value="30" ng-required="true">\n\n            <div ng-messages="globalForm[\'chatTimeout\'].$error" ng-show="globalForm[\'chatTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_REQUIRED">chatTimeout field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">chatTimeout must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.rtlSupport" aria-label="RtlSupport"><span translate="SETTINGS.RTLSUPPORT">RtlSupport</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.RTLSUPPORT"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.stopRecordingOnTransfer" aria-label="Stop_Recording_On_Voice_Call_Transfer"><span translate="SETTINGS.STOP_RECORDING_ON_VOICE_CALL_TRANSFER">Stop_Recording_On_Voice_Call_Transfer</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container motionbar md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.MOTIONBAR">MOTIONBAR</div>\n        </div>\n        <form name="motionbarForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarAutoUpdater" aria-label="MotionbarAutoUpdater"><span translate="SETTINGS.MOTIONBARAUTOUPDATER">MotionbarAutoUpdater</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.phoneBarAutoUpdater" class="md-block">\n            <label translate="SETTINGS.MOTIONBARAUTOUPDATERURL">MotionbarAutoUpdaterUrl</label>\n            <input type="url" name="phoneBarAutoUpdaterUrl" ng-model="vm.general.phoneBarAutoUpdaterUrl" value="https://www.xcally.com/bar/phonebar/autoupdater.xml" ng-required="vm.general.phoneBarAutoUpdater">\n\n            <div ng-messages="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$error" ng-show="motionbarForm[\'phoneBarAutoUpdaterUrl\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_REQUIRED">MotionbarAutoUpdaterUrl field is required</span>\n              </div>\n              <div ng-message="url">\n                <span translate="SETTINGS.ERRORS.MOTIONBARAUTOUPDATERURL_MUST_VALID_URL">MotionbarAutoUpdaterUrl must be a valid url http://www.xcally.com</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.phoneBarRememberMeEnabled" aria-label="MotionbarRememberMe"><span translate="SETTINGS.MOTIONBARREMEMBERME">MotionbarRememberMe</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.MOTIONBARREMEMBERME"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container report md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.REPORT">REPORT</div>\n        </div>\n        <form name="reportForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.split" aria-label="Split"><span translate="SETTINGS.SPLIT">Split</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZECSV">SplitSizeCsv</label>\n            <input type="number" name="splitSizeCsv" ng-model="vm.general.splitSizeCsv" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeCsv\'].$error" ng-show="reportForm[\'splitSizeCsv\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZECSV_REQUIRED">SplitSizeCsv field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEPDF">SplitSizePdf</label>\n            <input type="number" name="splitSizePdf" ng-model="vm.general.splitSizePdf" value="1000">\n\n            <div ng-messages="reportForm[\'splitSizePdf\'].$error" ng-show="reportForm[\'splitSizePdf\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEPDF_REQUIRED">SplitSizePdf field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.split" class="md-block">\n            <label translate="SETTINGS.SPLITSIZEXLSX">SplitSizeXlsx</label>\n            <input type="number" name="splitSizeXlsx" ng-model="vm.general.splitSizeXlsx" value="5000">\n\n            <div ng-messages="reportForm[\'splitSizeXlsx\'].$error" ng-show="reportForm[\'splitSizeXlsx\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SPLITSIZEXLSX_REQUIRED">SplitSizeXlsx field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container agentomnidesktopinterface md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AGENTOMNIDESKTOPINTERFACE">AGENTOMNIDESKTOPINTERFACE</div>\n        </div>\n        <form name="agentOmniDesktopInterfaceForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enableEmailPreview" aria-label="EnableEmailPreview"><span translate="SETTINGS.ENABLEEMAILPREVIEW">EnableEmailPreview</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.searchOnEnterKey" aria-label="Search_On_Enter_Key"><span translate="SETTINGS.SEARCH_ON_ENTER_KEY">Search_On_Enter_Key</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SEARCH_ON_ENTER_KEY"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MESSAGESALIGNMENT">messagesAlignment</label>\n            <md-select name="messagesAlignment" ng-model="vm.general.messagesAlignment">\n              <md-option ng-value="\'alternate\'">Alternate</md-option>\n              <md-option ng-value="\'left\'">Left</md-option>\n              <md-option ng-value="\'right\'">Right</md-option>\n            </md-select>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'messagesAlignment\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MESSAGESALIGNMENT_REQUIRED">messagesAlignment field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.CHAT_INTERACTIONS_RELOAD_TIMEOUT">Chat_Interactions_Reload_Timeout</label>\n            <input type="number" name="chatInteractionsReloadTimeout" ng-model="vm.general.chatInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'chatInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.CHAT_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Chat_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.MAIL_INTERACTIONS_RELOAD_TIMEOUT">Mail_Interactions_Reload_Timeout</label>\n            <input type="number" name="mailInteractionsReloadTimeout" ng-model="vm.general.mailInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'mailInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.MAIL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Mail_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT">Openchannel_Interactions_Reload_Timeout</label>\n            <input type="number" name="openchannelInteractionsReloadTimeout" ng-model="vm.general.openchannelInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'openchannelInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Openchannel_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.SMS_INTERACTIONS_RELOAD_TIMEOUT">Sms_Interactions_Reload_Timeout</label>\n            <input type="number" name="smsInteractionsReloadTimeout" ng-model="vm.general.smsInteractionsReloadTimeout">\n\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'smsInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.SMS_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Sms_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT">Whatsapp_Interactions_Reload_Timeout</label>\n            <input type="number" name="whatsappInteractionsReloadTimeout" ng-model="vm.general.whatsappInteractionsReloadTimeout">\n            <div class="hint"><span translate="SETTINGS.HELP.INTERACTIONS_RELOAD_TIMEOUT"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'whatsappInteractionsReloadTimeout\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT_REQUIRED">Whatsapp_Interactions_Reload_Timeout field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval must be a valid greater or equal than</span> <span>1</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.screenrecording" class="general-detail-form-container screenrecording md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SCREENRECORDING">SCREENRECORDING</div>\n        </div>\n        <form name="screenRecordingForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DEFAULTSCREENRECORDINGPATH">defaultScreenRecordingPath</label>\n            <input type="text" name="defaultScreenRecordingPath" ng-model="vm.general.defaultScreenRecordingPath" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.DEFAULTSCREENRECORDINGPATH"></span></div>\n            <div ng-messages="screenRecordingForm[\'defaultScreenRecordingPath\'].$error" ng-show="screenRecordingForm[\'defaultScreenRecordingPath\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.DEFAULTSCREENRECORDINGPATH_REQUIRED">defaultScreenRecordingPath field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container security md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SECURITY">SECURITY</div>\n        </div>\n        <form name="securityForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.securePassword" aria-label="Security_Suite"><span translate="SETTINGS.SECURITY_SUITE">Security_Suite</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.SECURITY_SUITE"></span></div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.callRecordingEncryption" aria-label="Call_Recording_Encryption"><span translate="SETTINGS.CALL_RECORDING_ENCRYPTION">Call_Recording_Encryption</span></md-switch>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ALLOWEDLOGINATTEMPTS">allowedLoginAttempts</label>\n            <input type="number" name="allowedLoginAttempts" ng-model="vm.general.allowedLoginAttempts" value="5" ng-required="true">\n\n            <div ng-messages="securityForm[\'allowedLoginAttempts\'].$error" ng-show="securityForm[\'allowedLoginAttempts\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.ALLOWEDLOGINATTEMPTS_REQUIRED">allowedLoginAttempts field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BLOCKDURATION">blockDuration</label>\n            <input type="number" name="blockDuration" ng-model="vm.general.blockDuration" value="10" ng-required="true">\n\n            <div ng-messages="securityForm[\'blockDuration\'].$error" ng-show="securityForm[\'blockDuration\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BLOCKDURATION_REQUIRED">blockDuration field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.enforcePasswordHistory" aria-label="Enforce_Password_History"><span translate="SETTINGS.ENFORCE_PASSWORD_HISTORY">Enforce_Password_History</span></md-switch>\n            <div class="hint"><span translate="SETTINGS.HELP.ENFORCE_PASSWORD_HISTORY"></span></div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enforcePasswordHistory" class="md-block">\n            <label translate="SETTINGS.PASSWORD_HISTORY_LIMIT">Password_History_Limit</label>\n            <input type="number" name="passwordHistoryLimit" ng-model="vm.general.passwordHistoryLimit" min="2" max="5" value="3">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PASSWORD_HISTORY_LIMIT"></span></div>\n            <div ng-messages="securityForm[\'passwordHistoryLimit\'].$error" ng-show="securityForm[\'passwordHistoryLimit\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_REQUIRED">Password_History_Limit field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>2</span>\n              </div>\n              <div ng-message="max">\n                <span translate="SETTINGS.ERRORS.PASSWORD_HISTORY_LIMIT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Password_History_Limit must be a valid greater or equal than</span> <span>5</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'email\')" ng-model="vm.general.enablePrivacyPolicyEmail" aria-label="Privacy_Policy_Email"><span translate="SETTINGS.PRIVACY_POLICY_EMAIL">Privacy_Policy_Email</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyEmail" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyEmail" ng-model="vm.general.privacyPolicyEmail" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyEmail\'].$error" ng-show="securityForm[\'privacyPolicyEmail\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_REQUIRED">Privacy_Policy_Email field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_EMAIL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Email must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'name\')" ng-model="vm.general.enablePrivacyPolicyName" aria-label="Privacy_Policy_Name"><span translate="SETTINGS.PRIVACY_POLICY_NAME">Privacy_Policy_Name</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyName" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyName" ng-model="vm.general.privacyPolicyName" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyName\'].$error" ng-show="securityForm[\'privacyPolicyName\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_REQUIRED">Privacy_Policy_Name field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NAME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Name must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block no-margin-bottom">\n            <md-switch ng-change="vm.onPrivacyPolicyChange(\'number\')" ng-model="vm.general.enablePrivacyPolicyNumber" aria-label="Privacy_Policy_Number"><span translate="SETTINGS.PRIVACY_POLICY_NUMBER">Privacy_Policy_Number</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.enablePrivacyPolicyNumber" class="md-block no-margin-top">\n\n            <input type="number" name="privacyPolicyNumber" ng-model="vm.general.privacyPolicyNumber" min="0" value="0" ng-required="true">\n\n            <div class="hint"><span translate="SETTINGS.HELP.PRIVACY_POLICY"></span></div>\n            <div ng-messages="securityForm[\'privacyPolicyNumber\'].$error" ng-show="securityForm[\'privacyPolicyNumber\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_REQUIRED">Privacy_Policy_Number field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PRIVACY_POLICY_NUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Privacy_Policy_Number must be a valid greater or equal than</span> <span>0</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\n        </form>\n      </div>\n\n      <div class="general-detail-form-container imapgeneralsettings md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.IMAPGENERALSETTINGS">IMAPGENERALSETTINGS</div>\n        </div>\n        <form name="imapGeneralSettingsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LOGINMAILFREQUENCY">loginMailFrequency</label>\n            <input type="number" name="loginMailFrequency" ng-model="vm.general.loginMailFrequency" min="10" value="10" ng-required="true" autofocus>\n\n            <div class="hint"><span translate="SETTINGS.HELP.LOGINMAILFREQUENCY"></span></div>\n            <div ng-messages="imapGeneralSettingsForm[\'loginMailFrequency\'].$error" ng-show="imapGeneralSettingsForm[\'loginMailFrequency\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_REQUIRED">loginMailFrequency field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">loginMailFrequency must be a valid greater or equal than</span> <span>10</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div class="general-detail-form-container sso md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.SSO">SSO</div>\n        </div>\n        <form name="SSOForm" novalidate>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.googleSsoEnabled" aria-label="Google_SSO_enabled"><span translate="SETTINGS.GOOGLE_SSO_ENABLED">Google_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_SSO_enabled</span></md-switch>\n          </md-input-container>\n\n        </form>\n      </div>\n\n      <div ng-if="vm.license.ai" class="general-detail-form-container aitools md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.AITOOLS">AITOOLS</div>\n        </div>\n        <form name="aiToolsForm" novalidate>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LANGUAGE">Language</label>\n            <md-select name="language" ng-model="vm.general.language" autofocus required>\n              <md-option ng-value="\'en-US\'">US English</md-option>\n              <md-option ng-value="\'en-AU\'">Australian English</md-option>\n              <md-option ng-value="\'en-GB\'">British English</md-option>\n              <md-option ng-value="\'en-AB\'">Scottish English</md-option>\n              <md-option ng-value="\'en-WL\'">Welsh English</md-option>\n              <md-option ng-value="\'en-IE\'">English (Ireland)</md-option>\n              <md-option ng-value="\'en-IN\'">Indian English</md-option>\n              <md-option ng-value="\'hi-IN\'">Hindi (India)</md-option>\n              <md-option ng-value="\'fr-CA\'">Canadian French</md-option>\n              <md-option ng-value="\'fr-FR\'">French</md-option>\n              <md-option ng-value="\'de-DE\'">German</md-option>\n              <md-option ng-value="\'de-CH\'">German (Switzerland)</md-option>\n              <md-option ng-value="\'it-IT\'">Italian</md-option>\n              <md-option ng-value="\'es-ES\'">Spanish</md-option>\n              <md-option ng-value="\'es-Us\'">US Spanish</md-option>\n              <md-option ng-value="\'pt-BR\'">Brazilian Portuguese</md-option>\n              <md-option ng-value="\'pt-PT\'">Portuguese(Portugal)</md-option>\n              <md-option ng-value="\'ar-SA\'">Modern Standard Arabic</md-option>\n              <md-option ng-value="\'ar-AE\'">Arabic</md-option>\n              <md-option ng-value="\'zh-CN\'">Chinese Mandarin - Mainland</md-option>\n              <md-option ng-value="\'ja-JP\'">Japanese (Japan)</md-option>\n              <md-option ng-value="\'ko-KR\'">Korean (Korea)</md-option>\n              <md-option ng-value="\'he-IL\'">Hebrew (Israel) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ms-MY\'">Malay (Malaysia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'fa-IR\'">Farsi (Iran) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ru-RU\'">Russian (Russia) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'te-IN\'">Telugu(India) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'ta-IN\'">Tamil - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'nl-NL\'">Dutch - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'tr-TR\'">Turkish (Turkey) - This language is not available for the Sentiment Analysis</md-option>\n              <md-option ng-value="\'id-ID\'">Indonesian(Indonesia) - This language is not available for the Sentiment Analysis</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'language\'].$error" ng-show="aiToolsForm[\'language\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.LANGUAGE_REQUIRED">Language field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.BUCKET">Bucket</label>\n            <input type="text" name="bucket" ng-model="vm.general.bucket" ng-required="true">\n\n            <div ng-messages="aiToolsForm[\'bucket\'].$error" ng-show="aiToolsForm[\'bucket\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.BUCKET_REQUIRED">Bucket field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.transcribe" aria-label="Transcribe"><span translate="SETTINGS.TRANSCRIBE">Transcribe</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEREGION">TranscribeRegion</label>\n            <md-select name="transcribeRegion" ng-model="vm.general.transcribeRegion" required>\n              <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n              <md-option ng-value="\'us-east-2\'">US East (Ohio)</md-option>\n              <md-option ng-value="\'us-east-2\'">US West (N. California)</md-option>\n              <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n              <md-option ng-value="\'ap-south-1\'">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value="\'ap-east-1\'">Asia Pacific (Hong Kong)</md-option>\n              <md-option ng-value="\'ap-northeast-2\'">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value="\'ap-southeast-1\'">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value="\'ap-northeast-1\'">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value="\'ca-central-1\'">Canada (Central)</md-option>\n              <md-option ng-value="\'eu-central-1\'">Europe (Frankfurt)</md-option>\n              <md-option ng-value="\'eu-west-1\'">Europe (Ireland)</md-option>\n              <md-option ng-value="\'eu-west-2\'">Europe (London)</md-option>\n              <md-option ng-value="\'eu-west-3\'">Europe (Paris)</md-option>\n              <md-option ng-value="\'me-south-1\'">Middle East (Bahrain)</md-option>\n              <md-option ng-value="\'sa-east-1\'">South America (São Paulo)</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeRegion\'].$error" ng-show="aiToolsForm[\'transcribeRegion\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEREGION_REQUIRED">TranscribeRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if="vm.general.transcribe == true" class="md-block">\n            <label translate="SETTINGS.TRANSCRIBEACCOUNT">TranscribeAccount</label>\n            <md-select name="transcribeAccountId" ng-model="vm.general.transcribeAccountId" required>\n              <md-option ng-value="transcribeAccountId.id" ng-repeat="transcribeAccountId in vm.cloudProviders" ng-disabled="transcribeAccountId.canSelect === false">{{ transcribeAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages="aiToolsForm[\'transcribeAccountId\'].$error" ng-show="aiToolsForm[\'transcribeAccountId\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.TRANSCRIBEACCOUNT_REQUIRED">TranscribeAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n'+"          <md-input-container ng-if=\"vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <md-switch ng-model=\"vm.general.sentiment\" aria-label=\"SentimentAnalysis\"><span translate=\"SETTINGS.SENTIMENTANALYSIS\">SentimentAnalysis</span></md-switch>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTREGION\">SentimentRegion</label>\n            <md-select name=\"sentimentRegion\" ng-model=\"vm.general.sentimentRegion\" required>\n              <md-option ng-value=\"'us-east-1'\">US East (N. Virginia)</md-option>\n              <md-option ng-value=\"'us-east-2'\">US East (Ohio)</md-option>\n              <md-option ng-value=\"'us-west-2'\">US West (Oregon)</md-option>\n              <md-option ng-value=\"'ap-south-1'\">Asia Pacific (Mumbai)</md-option>\n              <md-option ng-value=\"'ap-northeast-2'\">Asia Pacific (Seoul)</md-option>\n              <md-option ng-value=\"'ap-southeast-1'\">Asia Pacific (Singapore)</md-option>\n              <md-option ng-value=\"'ap-southeast-2'\">Asia Pacific (Sydney)</md-option>\n              <md-option ng-value=\"'ap-northeast-1'\">Asia Pacific (Tokyo)</md-option>\n              <md-option ng-value=\"'ca-central-1'\">Canada (Central)</md-option>\n              <md-option ng-value=\"'eu-central-1'\">Europe (Frankfurt)</md-option>\n              <md-option ng-value=\"'eu-west-1'\">Europe (Ireland)</md-option>\n              <md-option ng-value=\"'eu-west-2'\">Europe (London)</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentRegion'].$error\" ng-show=\"aiToolsForm['sentimentRegion'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTREGION_REQUIRED\">SentimentRegion field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container ng-if=\"vm.general.sentiment == true && vm.general.transcribe == true && vm.general.language != 'he-IL' && vm.general.language != 'ms-MY' && vm.general.language != 'fa-IR' && vm.general.language != 'ru-RU' && vm.general.language != 'te-IN' && vm.general.language != 'ta-IN' && vm.general.language != 'nl-NL' && vm.general.language != 'tr-TR' && vm.general.language != 'id-ID'\" class=\"md-block\">\n            <label translate=\"SETTINGS.SENTIMENTACCOUNT\">SentimentAccount</label>\n            <md-select name=\"sentimentAccountId\" ng-model=\"vm.general.sentimentAccountId\" required>\n              <md-option ng-value=\"sentimentAccountId.id\" ng-repeat=\"sentimentAccountId in vm.cloudProviders\" ng-disabled=\"sentimentAccountId.canSelect === false\">{{ sentimentAccountId.name }}</md-option>\n            </md-select>\n            <div ng-messages=\"aiToolsForm['sentimentAccountId'].$error\" ng-show=\"aiToolsForm['sentimentAccountId'].$touched\" role=\"alert\">\n              <div ng-message=\"required\">\n                <span translate=\"SETTINGS.ERRORS.SENTIMENTACCOUNT_REQUIRED\">SentimentAccount field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n        </form>\n      </div>\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/license.html",'<div id="license" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.LICENSE">LICENSE</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    \x3c!-- <div>\n                <md-button type="submit" ng-click="vm.requestLicense()" class="send-button md-raised" translate="SETTINGS.REQUEST_LICENSE" translate-attr-aria-label="SETTINGS.REQUEST_LICENSE">\n                    REQUEST LICENSE\n                </md-button>\n            </div> --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- LICENSE CARD --\x3e\n      <div layout="row" flex>\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="row" layout-align="center">\n            <div flex layout="row" layout-align="start center">\n              <div ng-if="!vm.license.custom">\n                <a href="https://www.xcally.com/plans.html" target="_blank" class="md-button md-fab green-A700-bg" aria-label="Eat cake">\n                  <md-tooltip><span translate="SETTINGS.PRICES">Prices</span></md-tooltip>\n                  <md-icon md-font-icon="icon-coin"></md-icon>\n                </a>\n              </div>\n            </div>\n            <div flex>\n              <div ng-switch="vm.license.months" class="text-center">\n                <span ng-switch-when="1" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></span>\n                <span ng-switch-when="12" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.ANNUALLY">ANNUALLY</span></span>\n                <span ng-switch-when="1200" class="md-title md-accent-fg text-bold">{{ \'SETTINGS.PLAN\' | translate }}: <span translate="SETTINGS.PERPETUAL">PERPETUAL</span></span>\n              </div>\n            </div>\n            <div flex layout="row" layout-align="end center">\n              <div>\n                <md-button type="submit" ng-click="vm.updateLicense()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.UPDATE_LICENSE">License</span></md-tooltip>\n                  <md-icon md-font-icon="icon-pencil"></md-icon>\n                </md-button>\n                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></md-icon>\n                </md-button>\n              </div>\n            </div>\n          </div>\n\n          <span ng-if="!vm.license.demo && !vm.license.gray && vm.license.months != 36" class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_DATE\' | translate }}: {{vm.license.expiration | date: \'longDate\'}}</span>\n          <span class="text-center padding-bottom-10"> {{ vm.license.machineUuid !== vm.license.uuid ? \'SETTINGS.OLD_TOKEN\' : \'SETTINGS.TOKEN\' | translate }}: <span ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </span>\n\n          <div layout="column">\n            <span ng-if="vm.license.grayReason == \'changed\'" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.NEW_TOKEN_DETECTED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.NEW_TOKEN\' | translate }}: <span id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </span>\n            <span ng-if="vm.license.gray" class="blink md-subhead md-warn-fg text-center">{{ \'SETTINGS.EXPIRATION_GRAY_PERIOD\' | translate }}: {{vm.license.deadline | date: \'longDate\'}}</span>\n            <span ng-if="vm.license.gray" class="text-center padding-bottom-10 text-italic text-bold"> {{\'SETTINGS.EXPIRATION_REASON\' | translate }} </span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_DISABLED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_REASON_MESSAGE_CHANGED\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10"> {{\'SETTINGS.EXPIRATION_CHANGED_ADVISE\' | translate }}</span>\n            <span ng-if="vm.license.grayReason == \'changed\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=New%20token%20detected&body=Hi xCALLY, New Token: {{vm.license.machineUuid}}, Old token: {{vm.license.uuid}}">license@xcally.com</a>.</span>\n            <span ng-if="vm.license.grayReason == \'disabled\'" class="text-center padding-bottom-10">{{ \'SETTINGS.SEND_EMAIL_TO\' | translate }}: <a href="mailto:license@xcally.com?subject=License%20disabled&body=Hi xCALLY, My Token: {{vm.license.machineUuid}}">license@xcally.com</a>.</span>\n          </div>\n\n          <div ng-if="vm.license.demo" layout="column">\n            <span class="md-subhead md-warn-fg text-center">{{ \'SETTINGS.TRIAL_VERSION\' | translate }}</span>\n            <span class="md-subhead md-warn-fg text-center"><a href="https://www.xcally.com/en/index.html#pricing-table2-h" target="_blank">{{ \'SETTINGS.PRICES\' | translate}}</a></span>\n          </div>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-account" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.users || 0 }} <span ng-class="{\'red-fg\': vm.license.users <= vm.users && vm.license.users > 0}">({{vm.license.users >= vm.users ? vm.users : vm.license.users}})</span></h3>\n                <p translate="SETTINGS.USERS">Users</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-headphones" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.agents || 0 }} <span ng-class="{\'red-fg\': (vm.license.agents <= vm.agents && vm.license.agents > 0) }">({{vm.license.agents >= vm.agents ? vm.agents : vm.license.agents}})</span></h3>\n                <p translate="SETTINGS.AGENTS">Agents</p>\n              </div>\n            </md-list-item>\n            <md-list-item class="md-2-line" flex="33">\n              <md-icon md-font-icon="icon-phone" class="md-avatar-icon"></md-icon>\n              <div class="md-list-item-text">\n                <h3>{{ vm.license.telephones || 0 }} <span ng-class="{\'red-fg\': vm.license.telephones <= vm.telephones && vm.license.telephones > 0}">({{vm.license.telephones >= vm.telephones ? vm.telephones : vm.license.telephones}})</span></h3>\n                <p translate="SETTINGS.TELEPHONES">Telephones</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:3">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item flex="33" class="md-2-line" ng-repeat="channel in vm.channels | limitTo:3:6">\n              <md-icon md-font-icon="{{channel.icon}}" class="md-avatar-icon" ng-class="vm.license[channel.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{channel.name | uppercase}}"></h3>\n                <p ng-class="vm.license[channel.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[channel.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="module in vm.modules" flex="33">\n              <md-icon md-font-icon="{{module.icon}}" class="md-avatar-icon" ng-class="vm.license[module.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{module.name | uppercase}}"></h3>\n                <p ng-class="vm.license[module.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[module.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <div ng-repeat="session in vm.sessions" flex="33">\n              <md-list-item class="md-2-line">\n                <md-icon md-font-icon="{{session.icon}}" class="md-avatar-icon" ng-class="vm.license[session.enabled] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n                <div class="md-list-item-text">\n                  <div layout="row" layout="start center">\n                    <h3 translate="SETTINGS.{{session.name | uppercase}}"></h3>\n                    <button ng-if="session.restart" ng-click="vm.gotoProcess($event)" class="md-mini" aria-label="restart">\n                      <md-tooltip>Restart</md-tooltip>\n                      <md-icon md-font-icon="icon-reload"></md-icon>\n                    </button>\n                  </div>\n                  <p ng-if="vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">{{vm.license[session.name]}} {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.name] && vm.license[session.enabled]" class="green-A700-fg">UNLIMITED {{ \'SETTINGS.\' + session.label | uppercase | translate }}</p>\n                  <p ng-if="!vm.license[session.enabled]" class="red-A700-fg">{{ \'SETTINGS.DISABLED\' | translate }}</p>\n                </div>\n              </md-list-item>\n\n            </div>\n          </md-list>\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="addon in vm.addons | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{addon.icon}}" class="md-avatar-icon" ng-class="vm.license[addon.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{addon.name | uppercase}}"></h3>\n                <p ng-class="vm.license[addon.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[addon.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n\n\n          <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n          <md-divider></md-divider>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n                <p ng-class="vm.license[other.name] ? \'green-A700-fg\' : \'red-A700-fg\'">{{ \'SETTINGS.\' + (vm.license[other.name] ? \'ENABLED\' : \'DISABLED\') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n          <md-list layout="row">\n            <md-list-item class="md-2-line" ng-repeat="other in vm.others | limitTo:3:3" flex="33">\n              <md-icon md-font-icon="{{other.icon}}" class="md-avatar-icon" ng-class="vm.license[other.name] ? \'green-A700-bg\' : \'red-A700-bg\'"></md-icon>\n              <div class="md-list-item-text">\n                <h3 translate="SETTINGS.{{other.name | uppercase}}"></h3>\n'+"                <p ng-class=\"vm.license[other.name] ? 'green-A700-fg' : 'red-A700-fg'\">{{ 'SETTINGS.' + (vm.license[other.name] ? 'ENABLED' : 'DISABLED') | translate }}</p>\n              </div>\n            </md-list-item>\n          </md-list>\n        </md-card>\n      </div>\n      \x3c!-- / LICENSE CARD --\x3e\n\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>"),e.put("app/main/apps/settings/views/license/request/dialog.html",'<md-dialog class="request-dialog" aria-label="Send Request">\n  <form name="requestForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.REQUEST_LICENSE">Request License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.license.name" required>\n        <div ng-messages="requestForm.name.$error" ng-show="requestForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.NAME_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.license.email" required>\n        <div ng-messages="requestForm.email.$error" ng-show="requestForm.email.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="SETTINGS.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.PLAN">Plan</label>\n        <md-select name="plan" ng-model="vm.license.months" required>\n          <md-option ng-value="1"><span translate="SETTINGS.MONTH_TO_MONTH">MONTH TO MONTH</span></md-option>\n          <md-option ng-value="12"><span translate="SETTINGS.ANNUALLY">ANNUALLY</span></md-option>\n          <md-option ng-value="1200"><span translate="SETTINGS.PERPETUAL">PERPETUAL</span></md-option>\n        </md-select>\n        <div ng-messages="requestForm.plan.$error" ng-show="requestForm.plan.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PLAN_REQUIRED">Plan field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.STAFF\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.USERS">Users</label>\n          <input type="number" name="users" ng-model="vm.license.users" required>\n          <div ng-messages="requestForm.users.$error" ng-show="requestForm.users.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.USERS_REQUIRED">Users field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.AGENTS">Agents</label>\n          <input type="number" name="agents" ng-model="vm.license.agents" required>\n          <div ng-messages="requestForm.agents.$error" ng-show="requestForm.agents.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.AGENTS_REQUIRED">Agents field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container class="md-block" flex>\n          <label translate="SETTINGS.TELEPHONES">Telephones</label>\n          <input type="number" name="telephones" ng-model="vm.license.telephones" required>\n          <div ng-messages="requestForm.telephones.$error" ng-show="requestForm.telephones.$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.TELEPHONES_REQUIRED">Telephones field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.CHANNELS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n        <md-switch ng-model="vm.license[channel.name]" aria-label="{{channel.name}}" ng-repeat="channel in vm.channels | limitTo:3:3"><span translate="SETTINGS.{{channel.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.MODULES\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[module.name]" aria-label="{{module.name}}" ng-repeat="module in vm.modules"><span translate="SETTINGS.{{module.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.SESSIONS\' | translate }}</md-subheader>\n      <div layout="row">\n        <md-input-container ng-repeat="session in vm.sessions" class="md-block" flex="50">\n          <label>{{ \'SETTINGS.\' + session.name | uppercase | translate }} ({{ \'SETTINGS.\' + session.label | uppercase | translate }})</label>\n          <input type="number" name="{{session.name}}" ng-model="vm.license[session.name]" required>\n          <div class="hint"><span>0={{ \'SETTINGS.UNLIMITED_CHANNELS\' | translate }}</span></div>\n          <div ng-messages="requestForm[session.name].$error" ng-show="requestForm[session.name].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.CHANNEL_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.ADDONS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[addon.name]" aria-label="{{module.name}}" ng-repeat="addon in vm.addons"><span translate="SETTINGS.{{addon.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-subheader class="md-no-sticky">{{ \'SETTINGS.OTHERS\' | translate }}</md-subheader>\n      <div layout="row" layout-align="space-between center">\n        <md-switch ng-model="vm.license[other.name]" aria-label="{{other.name}}" ng-repeat="other in vm.others"><span translate="SETTINGS.{{other.name | uppercase}}"></span></md-switch>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.DESCRIPTION">Description</label>\n        <textarea name="description" ng-model="vm.license.description"></textarea>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.sendRequest()" class="send-button md-accent md-raised" ng-disabled="requestForm.$invalid || requestForm.$pristine" aria-label="SEND" translate="SETTINGS.SEND" translate-attr-aria-label="SETTINGS.SEND">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/license/update/dialog.html",'<md-dialog class="update-dialog" aria-label="Update License">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title" translate="SETTINGS.UPDATE_LICENSE">Update License</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-content layout="row">\n        <span class="md-title" translate="SETTINGS.UPDATE_LICENSE_MANUALLY">Do you want to update your license manually?</span>\n      </md-content>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.ENTER_LICENSE">Enter your license</label>\n        <textarea name="key" ng-model="vm.licenseKey" required></textarea>\n        <div ng-messages="updateForm.name.$error" ng-show="updateForm.key.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LICENSE_REQUIRED">License key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.updateLicense()" class="send-button md-accent md-raised" ng-disabled="updateForm.$invalid || updateForm.$pristine" aria-label="UPDATE" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">\n          UPDATE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/create/dialog.html",'<md-dialog class="network-dialog" aria-label="New Network">\n  <form name="networkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.network.type" autofocus required>\n          <md-option ng-value="\'localnet\'">LocalNET</md-option>\n          <md-option ng-value="\'externip\'">ExternIP</md-option>\n          <md-option ng-value="\'turn\'">Turn</md-option>\n          <md-option ng-value="\'stun\'">Stun</md-option>\n        </md-select>\n        <div ng-messages="networkForm[\'type\'].$error" ng-show="networkForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'localnet\'" class="md-block">\n        <label translate="SETTINGS.LOCALNETADDRESS">localNetAddress</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.LOCALNETADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_REQUIRED">localNetAddress field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.LOCALNETADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">localNetAddress must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'externip\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-pattern="/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/" ng-required="true">\n\n        <div class="hint"><span translate="SETTINGS.HELP.ADDRESS"></span></div>\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SETTINGS.ERRORS.ADDRESS_MUST_VALID_PATTERN" translate-values="{ regex: \'/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/\' }">Address must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\' || vm.network.type == \'stun\'" class="md-block">\n        <label translate="SETTINGS.ADDRESS">Address</label>\n        <input type="text" name="value" ng-model="vm.network.value" ng-required="true">\n\n        <div ng-messages="networkForm[\'value\'].$error" ng-show="networkForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.ADDRESS_REQUIRED">Address field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.network.username" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.USERNAME"></span></div>\n        <div ng-messages="networkForm[\'username\'].$error" ng-show="networkForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.network.type == \'turn\'" class="md-block">\n        <label translate="SETTINGS.PASSWORD">Password</label>\n        <input type="text" name="password" ng-model="vm.network.password" ng-required="vm.network.type == \'turn\'">\n\n        <div class="hint"><span translate="SETTINGS.HELP.PASSWORD"></span></div>\n        <div ng-messages="networkForm[\'password\'].$error" ng-show="networkForm[\'password\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newNetwork" ng-click="vm.saveNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid || networkForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newNetwork" ng-click="vm.addNewNetwork()" class="send-button md-accent md-raised" ng-disabled="networkForm.$invalid" aria-label="ADD" translate="SETTINGS.ADD_NETWORK" translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n          ADD NETWORK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-click="vm.deleteNetwork($event)" aria-label="DELETE" translate translate-attr-aria-label="SETTINGS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SETTINGS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/networks/networks.html",'<div id="networks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.NETWORKS">Networks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SETTINGS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedNetworks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedNetworks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SETTINGS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-networks-count">\n          <span>{{vm.selectedNetworks.length}}</span>\n          <span translate="SETTINGS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SETTINGS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllNetworks()" translate="SETTINGS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectNetworks()" translate="SETTINGS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedNetworks" csv-label="true" filename="networks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-click="vm.deleteSelectedNetworks($event)" aria-label="delete selected" translate translate-attr-label="SETTINGS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- NETWORK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedNetworks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getNetworks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SETTINGS.ID\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SETTINGS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'SETTINGS.ADDRESS\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'SETTINGS.CREATED_AT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.networks.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SETTINGS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="network" md-select-id="id" ng-repeat="network in vm.networks.rows">\n                <td md-cell ng-if="network.userpic"><img class="avatar" alt="{{network.name}}" ng-src="api/users/{{network.id}}/avatar" /></td>\n                <td md-cell ng-if="!network.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{network.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="id ">{{network.id}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="type ">{{ vm.arraytype[network.type].option }}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="value ">{{network.value}}</td>\n                <td ng-click="vm.createOrEditNetwork($event, network)" md-cell class="createdAt ">{{network.createdAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SETTINGS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.editdialog(network, $event    )" translate="SETTINGS.EDIT_NETWORK">\n                          Edit Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.deleteconfirm(network, $event    )" translate="SETTINGS.DELETE_NETWORK">\n                          Delete Network\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SETTINGS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SETTINGS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SETTINGS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.networks.count}}" md-on-paginate="vm.getNetworks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / NETWORK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD NETWORK BUTTON --\x3e\n  <md-button class="md-fab md-accent" id="add-network-button" ng-click="vm.createOrEditNetwork($event)" aria-label="add network" translate translate-attr-aria-label="SETTINGS.ADD_NETWORK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD NETWORK BUTTON --\x3e\n</div>'),e.put("app/main/apps/settings/views/smtps/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SMTP">Smtp</span>\n      </div>\n    </div>\n\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.id" class="send-button md-accent md-raised" translate="SETTINGS.VERIFY" translate-attr-aria-label="SETTINGS.VERIFY">\n        VERIFY\n      </md-button>\n      <md-button type="submit" ng-click="vm.saveSmtp()" ng-disabled="(generalForm.$pristine) || (generalForm.$invalid)" class="send-button md-accent md-raised" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\n      <div class="smtp-detail-form-container general md-background-bg md-whiteframe-1dp">\n        <div class="pb-16" layout="row" layout-align="start center">\n          <div class="h2 secondary-text" translate="SETTINGS.GENERAL">GENERAL</div>\n        </div>\n        <form name="generalForm" novalidate>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.DESCRIPTION">Description</label>\n            <input type="" name="description" ng-model="vm.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\n            <div class="hint"><span translate="SETTINGS.HELP.EMAILADDRESS"></span></div>\n            <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.Smtp.pass" placeholder="Password" translate translate-attr-placeholder="SETTINGS.PASSWORD" required>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_PASSWORD"></span></div>\n              <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\n</div>'),e.put("app/main/apps/settings/views/system/system.html",'<div id="system" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.SYSTEM">SYSTEM</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" md-border-bottom flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.GENERAL">GENERAL</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget flex="50" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg">\n                    <div class="h3">OS</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{vm.system.system.manufacturer}} {{vm.system.system.model}}</div>\n                        <div class="h4">{{vm.system.cpu.manufacturer}} {{vm.system.cpu.brand}} - {{vm.system.cpu.speed}} GHz - {{vm.system.cpu.cores}} Cores</div>\n                        <div class="h4">{{vm.system.os.distro}} - {{vm.system.os.release}} - Kernel: {{vm.system.os.kernel}}</div>\n                        <div class="h4">Node.js: {{vm.system.node}}</div>\n                        <div class="h4">Host: {{vm.system.os.hostname}} - Uptime: {{vm.system.time.uptime / 60 | number:0}} m</div>\n                        <div class="h4">TimeZone: {{vm.system.time.timezone}} ({{vm.system.time.timezoneName}})</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-1">\n                    <div class="h3">CPU</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.AVG_LOAD">AVG Load</span>\n                          <span class="h3 secondary-text font-weight-500">{{vm.system.currentLoad.avgload * 100 | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{vm.system.currentLoad.avgload * 100 | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n              <ms-widget flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">MEM</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{vm.system.mem.total / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.FREE\' | translate}}: {{vm.system.mem.available / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{vm.system.mem.active / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h3 secondary-text font-weight-500">{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0}}%</span>\n                        </div>\n                        <md-progress-linear class="md-warn" md-mode="determinate" value="{{(vm.system.mem.active / vm.system.mem.total) * 100 | number : 0 }}"></md-progress-linear>\n\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="disk in vm.system.fsSize" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">DISK {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.FILE_SYSTEM\' | translate}}: {{disk.fs}}</div>\n                        <div class="h4">{{\'SETTINGS.MOUNT_POINT\' | translate}}: "{{disk.mount}}"</div>\n                        <div class="h4">{{\'SETTINGS.TOTAL\' | translate}}: {{disk.size / 1024 / 1024 / 1024 | number:0}} GB</div>\n                        <div class="h4">{{\'SETTINGS.USED\' | translate}}: {{disk.used / 1024 / 1024 / 1024 | number:0}} GB</div>\n                      </div>\n                      <div class="p-16 pb-32">\n                        <div class="pb-8" layout="row" layout-align="space-between start">\n                          <span class="h3" translate="SETTINGS.USED">Used</span>\n                          <span class="h4 secondary-text font-weight-500">{{disk.use | number:0}}%</span>\n                        </div>\n                        <md-progress-linear class="red" md-mode="determinate" value="{{disk.use | number:0}}"></md-progress-linear>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row" layout-xs="column" layout-wrap>\n              <ms-widget ng-repeat="net in vm.system.net" flex="25" flex-xs="100">\n                \x3c!-- Front --\x3e\n                <ms-widget-front class="white-bg">\n                  <div class="ph-16 pt-16 pb-8 md-accent-bg md-hue-3">\n                    <div class="h3">NET {{$index + 1}}</div>\n                  </div>\n\n                  <div layout="row" layout-align="start center" layout-wrap>\n                    <div flex="100" flex-gt-md="100">\n                      <div class="p-16 pb-32">\n                        <div class="h4">{{\'SETTINGS.INTERFACE\' | translate}}: {{net.iface}}</div>\n                        <div class="h4">IPv4: {{net.ip4}}</div>\n                        <div class="h4">IPv6: {{net.ip6}}</div>\n                        <div class="h4">MAC: {{net.mac}}</div>\n                      </div>\n                    </div>\n                  </div>\n                </ms-widget-front>\n                \x3c!-- / Front --\x3e\n              </ms-widget>\n            </md-card>\n\n            <md-card class="md-whiteframe-1dp padding-20" layout="row">\n              <div flex>\n                <md-toolbar class="md-table-toolbar md-default">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SETTINGS.TOP_N_PROCESSES" translate-values="{value: vm.processLimit}"></span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm.searchTerm1 = query" on-collapse="vm.searchTerm1 = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table>\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column>pid</th>\n                        <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                        <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                        <th md-column>pmem</th>\n                        <th md-column>pcpu</th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-repeat="process in vm.system.processes.list | limitTo: vm.processLimit | filter: vm.searchTerm1 | orderBy:\'-pcpu\'">\n                        <td md-cell>{{process.pid}}</td>\n                        <td md-cell>{{process.command}}</td>\n                        <td md-cell>\n                          <span class="text-boxed white-fg" ng-class="{\n                          \'green-600-bg\': process.state == \'running\',\n                          \'yellow-600-bg\': process.state == \'sleeping\',\n                          \'red-600-bg\': process.state == \'blocked\'}">{{process.state | uppercase}}</span>\n                        </td>\n                        <td md-cell>{{process.pmem}}%</td>\n                        <td md-cell>{{process.pcpu}}%</td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n              </div>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SETTINGS.PROCESSES">PROCESSES</span>\n        </md-tab-label>\n\n        <md-tab-body>\n          <div class="system-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.MOTION_PROCESS_MANAGEMENT"></span>\n                  <div flex></div>\n                  <ms-search-bar on-search="vm.searchTerm2 = query" on-collapse="vm.searchTerm2 = undefined" debounce="300"></ms-search-bar>\n                  <md-button ng-click="vm.getProcesses()" class="md-icon-button" aria-label="Reload">\n                    <md-icon md-font-icon="icon-reload" class="s24"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column>id</th>\n                      <th md-column>pid</th>\n                      <th md-column>{{\'SETTINGS.NAME\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.STATE\' | translate}}</th>\n                      <th md-column>MEM</th>\n                      <th md-column>CPU</th>\n                      <th md-column width="20px">Actions</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row ng-repeat="process in vm.processes | filter: vm.searchTerm2 | orderBy:\'-monit.cpu\'">\n                      <td md-cell>{{process.pm_id}}</td>\n                      <td md-cell>{{process.pid}}</td>\n                      <td md-cell>{{process.name == \'agi\' ? \'agi (Cally Square IVR)\' : process.name}}</td>\n                      <td md-cell>\n                        <span class="text-boxed white-fg" ng-class="{\'green-600-bg\': process.pm2_env.status == \'online\', \'red-600-bg\': process.pm2_env.status == \'stopped\'}">{{process.pm2_env.status | uppercase}}</span>\n                      </td>\n                      <td md-cell>{{process.monit.memory / 1024 / 1024 | number:0}} MB</td>\n                      <td md-cell>{{process.monit.cpu}}%</td>\n                      <td md-cell>\n                        <md-button ng-if="process.pm2_env.status !== \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'online\')" class="md-icon-button" aria-label="Play">\n                          <md-icon md-font-icon="icon-play" class="s24"></md-icon>\n                        </md-button>\n                        <md-button ng-if="process.pm2_env.status === \'online\'" ng-click="vm.updateProcess($event, process.pm_id, \'stopped\')" class="md-icon-button" aria-label="Stop">\n                          <md-icon md-font-icon="icon-stop" class="s24"></md-icon>\n                        </md-button>\n                      </td>\n                    </tr>\n                  </tbody>\n                  <tfoot md-foot>\n                    <tr md-row>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                      <td md-cell>{{ (vm.processes | map: \'monit.memory\' | sum) / 1024 / 1024 | number:0 }} MB</td>\n                      <td md-cell></td>\n                      <td md-cell></td>\n                    </tr>\n                  </tfoot>\n                </table>\n              </md-table-container>\n            </md-card>\n            <md-card class="md-whiteframe-1dp padding-20" flex>\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SETTINGS.USEFUL_COMMANDS"></span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-table-container>\n                <table md-table>\n                  <thead md-head>\n                    <tr md-row>\n                      <th md-column width="30%">{{\'SETTINGS.COMMAND\' | translate}}</th>\n                      <th md-column>{{\'SETTINGS.DESCRIPTION\' | translate}}</th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr>\n                      <td md-cell class="no-border">pm2 list</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LIST\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 start &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_START\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 stop &lt;id | name | all&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_STOP\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 restart &lt;id | name&gt;</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_RESTART\' | translate}}</td>\n                    </tr>\n                    <tr>\n                      <td md-cell class="no-border">pm2 logs [id | name]</td>\n                      <td md-cell class="no-border">{{ \'SETTINGS.PM2_LOGS\' | translate}}</td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </md-card>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/settings/views/updates/update/dialog.html",'<md-dialog aria-label="Update">\n  <form name="updateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n      </div>\n    </md-toolbar>\n\n    <div md-background-bg layout="row" layout-align="start start">\n      <md-progress-linear md-mode="determinate" value="{{vm.progress}}" class="md-warn"></md-progress-linear>\n    </div>\n\n    <md-dialog-content>\n      <div layout="row" layout-align="center center">\n        <div ng-if="vm.updating" layout="column" layout-align="center center">\n          <span class="text-center md-title">Grab a quick coffee and</span>\n          <span class="text-center md-title">get back here as soon as completed!</span>\n          <span class="text-center md-title">{{vm.output}}</span>\n        </div>\n        <div ng-if="!vm.updating">\n          <div ng-if="vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Completed! Thank you for your time.</span>\n            <span class="text-center md-title">In order to complete the update,</span>\n            <span class="text-center md-title">please click on reload button</span>\n          </div>\n          <div ng-if="!vm.success" layout="column" layout-align="center center">\n            <span class="text-center md-title">Update Error!</span>\n            <span class="text-center md-title">Please contact your administrator!</span>\n            <span class="text-center md-title">{{vm.output}}</span>\n          </div>\n        </div>\n        <img src="assets/images/business/users.jpg" alt="" width="128" height="128" />\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions ng-if="!vm.updating" layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.reload()" class="send-button md-warm md-raised" aria-label="RELOAD" translate="SETTINGS.RELOAD" translate-attr-aria-label="SETTINGS.RELOAD">\n          RELOAD\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/settings/views/updates/updates.html",'<div id="updates" class="page-layout simple fullwidth doc-page">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-cog" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SETTINGS.UPDATES">UPDATES</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n      \x3c!-- UPDATE CARD --\x3e\n      <div layout="row" ng-if="!vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.CURRENT_VERSION">CURRENT VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.current}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.current}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-20dp padding-20" flex ng-if="vm.version.current != vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.NEW_VERSION">NEW VERSION</span>\n\n            <span class="md-display-3 padding-20">{{vm.version.latest}}</span>\n\n            <md-button href="https://wiki.xcallymotion.com/display/XMV/Motion+GUI#MotionGUI-Version{{vm.version.latest}}" target="_blank" class="md-accent" title="CHANGELOG" aria-label="CHANGELOG" translate="SETTINGS.CHANGELOG" translate-attr-aria-label="SETTINGS.CHANGELOG">\n              CHANGELOG\n            </md-button>\n            <md-button ng-click="vm.updateConfirm($event)" class="md-raised md-warn" aria-label="CHANGELOG" translate="SETTINGS.UPDATE" translate-attr-aria-label="SETTINGS.UPDATE">UPDATE</md-button>\n          </div>\n        </md-card>\n        <md-card class="md-whiteframe-1dp padding-20" flex ng-if="vm.version.current == vm.version.latest">\n          <div layout="column" layout-align="center center">\n\n            <span class="md-title md-warn-fg padding-20 text-bold" translate="SETTINGS.REMOTE_VERSION">REMOTE VERSION</span>\n\n            <span class="md-subhead padding-20" translate="SETTINGS.NO_NEW_VERSION_AVAILABLE">NO NEW VERSION AVAILABLE</span>\n          </div>\n        </md-card>\n      </div>\n      \x3c!-- / UPDATE CARD --\x3e\n\n      <div ng-if="vm.updating">\n        <md-card class="md-whiteframe-1dp padding-20" flex>\n          <div layout="column" layout-align="center center">\n            <span class="md-title md-accent-fg padding-20 text-bold" translate="SETTINGS.UPDATING">...</span>\n            <md-progress-linear md-mode="determinate" class="md-accent padding-20" value="{{vm.progress}}"></md-progress-linear>\n            <span class="md-display-1 padding-5 text-center">Grab a quick coffee and</span>\n            <span class="md-display-1 padding-5 text-center">get back here as soon as completed</span>\n            <img src="assets/images/business/users.jpg" alt="" width="40%" height="40%" />\n          </div>\n        </md-card>\n      </div>\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/create/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus ng-disabled="!vm.newSmsAccount">\n\n        <div ng-messages="smsAccountForm[\'name\'].$error" ng-show="smsAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'key\'].$error" ng-show="smsAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="smsAccountForm[\'remote\'].$error" ng-show="smsAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.smsAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n        <div ng-messages="smsAccountForm[\'ListId\'].$error" ng-show="smsAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.smsAccount.type" required>\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'skebby\'">Skebby</md-option>\n          <md-option ng-value="\'connectel\'">Connectel</md-option>\n          <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n          <md-option ng-value="\'plivo\'">Plivo</md-option>\n          <md-option ng-value="\'infobip\'">Infobip</md-option>\n          <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n          <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n          <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n          <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'type\'].$error" ng-show="smsAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PHONE">Phone</label>\n        <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'phone\'].$error" ng-show="smsAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n        <label translate="SMS.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountSid\'].$error" ng-show="smsAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHID">AuthID</label>\n        <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authId\'].$error" ng-show="smsAccountForm[\'authId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n        <label translate="SMS.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'authToken\'].$error" ng-show="smsAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n        <label translate="SMS.METHOD">Method</label>\n        <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required>\n          <md-option ng-value="\'SI\'">Basic</md-option>\n          <md-option ng-value="\'TI\'">Classic</md-option>\n          <md-option ng-value="\'GP\'">Classic+</md-option>\n        </md-select>\n        <div ng-messages="smsAccountForm[\'smsMethod\'].$error" ng-show="smsAccountForm[\'smsMethod\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.USERNAME">Username</label>\n        <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'username\'].$error" ng-show="smsAccountForm[\'username\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n        <label translate="SMS.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n        <div ng-messages="smsAccountForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n        <label translate="SMS.BASEURL">BaseURL</label>\n        <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'baseUrl\'].$error" ng-show="smsAccountForm[\'baseUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n        <label translate="SMS.APIKEY">ApiKey</label>\n        <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'apiKey\'].$error" ng-show="smsAccountForm[\'apiKey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.ACCOUNTID">AccountId</label>\n        <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'accountId\'].$error" ng-show="smsAccountForm[\'accountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n        <label translate="SMS.APPLICATIONID">ApplicationID</label>\n        <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true">\n\n        <div ng-messages="smsAccountForm[\'applicationId\'].$error" ng-show="smsAccountForm[\'applicationId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsAccount.description">\n\n        <div ng-messages="smsAccountForm[\'description\'].$error" ng-show="smsAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsAccount" ng-click="vm.saveSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid || smsAccountForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsAccount" ng-click="vm.addNewSmsAccount()" class="send-button md-accent md-raised" ng-disabled="smsAccountForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSACCOUNT" translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n          ADD SMSACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsAccount" ng-click="vm.deleteSmsAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/agentadd/agentadd.html",'<md-dialog class="smsAccount-dialog" aria-label="smsAccount" ng-init="vm.onInit()">\n  <form name="smsAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSACCOUNT">Add Agent to smsAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/agent/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'agent\'].$error" ng-show="smsAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'accesskeyid\'].$error" ng-show="smsAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'secretaccesskey\'].$error" ng-show="smsAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'lexregion\'].$error" ng-show="smsAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'botname\'].$error" ng-show="smsAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'times\'].$error" ng-show="smsAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'text\'].$error" ng-show="smsAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/close/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'disposition\'].$error" ng-show="smsAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'key\'].$error" ng-show="smsAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'projectId\'].$error" ng-show="smsAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'clientEmail\'].$error" ng-show="smsAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="smsAccountFormApp[\'privateKey\'].$error" ng-show="smsAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'language\'].$error" ng-show="smsAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="SMS.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="smsAccountFormApp[\'welcomemessage\'].$error" ng-show="smsAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="SMS.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'condition\'].$error" ng-show="smsAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'truepriority\'].$error" ng-show="smsAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'falsepriority\'].$error" ng-show="smsAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'priority\'].$error" ng-show="smsAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/noop/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'value\'].$error" ng-show="smsAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/queue/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'queue\'].$error" ng-show="smsAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'timeout\'].$error" ng-show="smsAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/system/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="smsAccountFormApp[\'command\'].$error" ng-show="smsAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'variable\'].$error" ng-show="smsAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/apps/tag/dialog.html",'<md-dialog class="smsAccount-dialog" aria-label="New SmsAccount">\n  <form name="smsAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="smsAccountFormApp[\'tag\'].$error" ng-show="smsAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveSmsAccountApp()" class="send-button md-accent md-raised" ng-disabled="smsAccountFormApp.$invalid || smsAccountFormApp.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/smsCannedAnswers/dialog.html",'<md-dialog class="smsCannedAnswer-dialog" aria-label="New SmsCannedAnswer">\n  <form name="smsCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.smsCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="smsCannedAnswerForm[\'key\'].$error" ng-show="smsCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.smsCannedAnswer.value" required></textarea>\n\n        <div ng-messages="smsCannedAnswerForm[\'value\'].$error" ng-show="smsCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsCannedAnswer.description">\n\n        <div ng-messages="smsCannedAnswerForm[\'description\'].$error" ng-show="smsCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsCannedAnswer" ng-click="vm.saveSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid || smsCannedAnswerForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsCannedAnswer" ng-click="vm.addNewSmsCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="smsCannedAnswerForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSCANNEDANSWER" translate-attr-aria-label="SMS.ADD_SMSCANNEDANSWER">\n          ADD SMSCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsCannedAnswer" ng-click="vm.deleteSmsCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsAccounts/edit/view.html",'<div id="sms-smsAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsAccounts-button md-icon-button" aria-label="Go to smsAccounts" ng-click="vm.gotoSmsAccounts()" translate translate-attr-aria-label="SMS.GO_TO_SMSACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsAccount-image" hide-xs>\n          <img ng-src="assets/images/business/smsAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsAccount.id}}\n            <span ng-if="vm.smsAccount.name">{{vm.smsAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (smsDispositionsForm.$invalid) || (smsCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsAccount.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.smsAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.smsAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.smsAccount.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'twilio\'">Twilio</md-option>\n                  <md-option ng-value="\'skebby\'">Skebby</md-option>\n                  <md-option ng-value="\'connectel\'">Connectel</md-option>\n                  <md-option ng-value="\'clicksend\'">ClickSend</md-option>\n                  <md-option ng-value="\'plivo\'">Plivo</md-option>\n                  <md-option ng-value="\'infobip\'">Infobip</md-option>\n                  <md-option ng-value="\'clickatell\'">Clickatell</md-option>\n                  <md-option ng-value="\'bandwidth\'">Bandwidth</md-option>\n                  <md-option ng-value="\'csc\'">CSCTelecom</md-option>\n                  <md-option ng-value="\'intelepeer\'">Intelepeer</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.smsAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\'" class="md-block">\n                <label translate="SMS.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.smsAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHID">AuthID</label>\n                <input type="text" name="authId" ng-model="vm.smsAccount.authId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authId\'].$error" ng-show="generalForm[\'authId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHID_REQUIRED">AuthID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'twilio\' || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'plivo\'" class="md-block">\n                <label translate="SMS.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.smsAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\'" class="md-block">\n                <label translate="SMS.METHOD">Method</label>\n                <md-select name="smsMethod" ng-model="vm.smsAccount.smsMethod" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'SI\'">Basic</md-option>\n                  <md-option ng-value="\'TI\'">Classic</md-option>\n                  <md-option ng-value="\'GP\'">Classic+</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'smsMethod\'].$error" ng-show="generalForm[\'smsMethod\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.METHOD_REQUIRED">Method field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.smsAccount.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block" ng-if="vm.smsAccount.type == \'skebby\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'bandwidth\'">\n                <label translate="SMS.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.smsAccount.password" placeholder="Password" translate translate-attr-placeholder="SMS.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'csc\'" class="md-block">\n                <label translate="SMS.BASEURL">BaseURL</label>\n                <input type="text" name="baseUrl" ng-model="vm.smsAccount.baseUrl" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.BASEURL_REQUIRED">BaseURL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.APIKEY">ApiKey</label>\n                <input type="text" name="apiKey" ng-model="vm.smsAccount.apiKey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'apiKey\'].$error" ng-show="generalForm[\'apiKey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APIKEY_REQUIRED">ApiKey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.ACCOUNTID">AccountId</label>\n                <input type="text" name="accountId" ng-model="vm.smsAccount.accountId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'accountId\'].$error" ng-show="generalForm[\'accountId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.ACCOUNTID_REQUIRED">AccountId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.APPLICATIONID">ApplicationID</label>\n                <input type="text" name="applicationId" ng-model="vm.smsAccount.applicationId" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'applicationId\'].$error" ng-show="generalForm[\'applicationId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.APPLICATIONID_REQUIRED">ApplicationID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'plivo\'|| vm.smsAccount.type == \'csc\'|| vm.smsAccount.type == \'infobip\' || vm.smsAccount.type == \'intelepeer\'" class="md-block">\n                <label translate="SMS.SENDERSTRING">SenderString</label>\n                <input type="text" name="senderString" ng-model="vm.smsAccount.senderString" md-maxlength="11" ng-pattern="/^[A-Za-z0-9\\.\\s]*$/i" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'senderString\'].$error" ng-show="generalForm[\'senderString\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.SENDERSTRING_REQUIRED">SenderString field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\s]*$/i\' }">SenderString must be valid pattern </span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.SENDERSTRING_MAX_LENGTH" translate-values=\'{max: 11}\'>SenderString must have a maximum length equal to 11</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="(vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\'" class="md-block">\n                <md-switch ng-model="vm.smsAccount.deliveryReport" aria-label="deliveryReport" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.DELIVERYREPORT">deliveryReport</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.smsAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.RECEIVEURL">receiveUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/notify?token=\' + vm.smsAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="( ((vm.smsAccount.type == \'skebby\' && vm.smsAccount.smsMethod == \'GP\') || vm.smsAccount.type == \'connectel\' || vm.smsAccount.type == \'clicksend\' || vm.smsAccount.type == \'csc\' || vm.smsAccount.type == \'clickatell\') && vm.smsAccount.deliveryReport) || vm.smsAccount.type == \'bandwidth\'" class="md-block">\n                <label translate="SMS.DELIVERYREPORTURL">deliveryReportUrl</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-deliveryReportUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-deliveryReportUrl" name="deliveryReportUrl" ng-value="vm.smsAccount.remote + \'/api/sms/accounts/\' + vm.smsAccount.id + \'/status?token=\' + vm.smsAccount.token + (vm.smsAccount.type == \'csc\' ? \'&message-id={message-id}&state={state}\' : \'\')" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="SMS.HELP.DELIVERYREPORTURL"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="SMS.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.smsAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.queueTransfer == true" class="md-block">\n                <label translate="SMS.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.smsAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.agentTransfer == true" class="md-block">\n                <label translate="SMS.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.smsAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.smsAccount.token" autofocus disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.smsAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="SMS.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="SMS.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="smsAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.smsAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="SMS.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.smsAccount.mandatoryDisposition" class="md-block">\n                <label translate="SMS.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.smsAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="SMS.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="SmsAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="smsAccount-detail-form-container smsdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="SMS.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add sms dispositions" translate translate-attr-label="SMS.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="smsAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container smscannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountSmsCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.SMSCANNEDANSWERS">SmsCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountSmsCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event)" aria-label="add smsCannedAnswer" translate translate-attr-label="SMS.ADD_SMSCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountSmsCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountSmsCannedAnswers.length}} {{vm_dc.selectedSmsAccountSmsCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountSmsCannedAnswers" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountSmsCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountSmsCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountSmsCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'SMS.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'SMS.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'SMS.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="smsCannedAnswer" md-select-id="id" ng-repeat="smsCannedAnswer in vm_dc.smsAccountSmsCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{smsCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" md-cell>\n                        {{ smsCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditSmsAccountSmsCannedAnswer($event, smsCannedAnswer)" translate="SMS.EDIT_SMSCANNEDANSWER">\n                                Edit SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(smsCannedAnswer, $event)" translate="SMS.DELETE_SMSCANNEDANSWER">\n                                Delete SmsCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountSmsCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_SMSCANNEDANSWER_AVAILABLE">No smscannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountSmsCannedAnswers.count}}" md-on-paginate="vm_dc.getSmsAccountSmsCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.smsAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="SMS.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedSmsAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedSmsAccountApps.length}} {{vm_ac.selectedSmsAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedSmsAccountApps($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedSmsAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.smsAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editSmsAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editSmsAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.smsAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="SmsAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.smsAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="SMS.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getSmsAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getSmsAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getSmsAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="SMS.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedSmsAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedSmsAccountInteractions.length}} {{vm_dc.selectedSmsAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedSmsAccountInteractions" csv-label="true" filename="smsAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedSmsAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedSmsAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getSmsAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'SMS.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'SMS.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'SMS.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'SMS.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'SMS.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'SMS.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'SMS.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.smsAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'SMS.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'SMS.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spysmsInteraction($event, interaction)" translate="SMS.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.smsInteractionDownload(interaction, $event)" translate="SMS.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="SMS.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.smsAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="SMS.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.smsAccountInteractions.count}}" md-on-paginate="vm_dc.getSmsAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsAccounts/smsAccounts.html",'<div id="smsAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSACCOUNTS">SmsAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsAccounts-count">\n          <span>{{vm.selectedSmsAccounts.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsAccounts()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsAccounts()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsAccounts" csv-label="true" filename="smsAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsAccounts($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'SMS.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'SMS.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'SMS.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'SMS.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'SMS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsAccount" md-select-id="id" ng-repeat="smsAccount in vm.smsAccounts.rows">\n                <td md-cell ng-if="smsAccount.userpic"><img class="avatar" alt="{{smsAccount.name}}" ng-src="api/users/{{smsAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="id ">{{smsAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="name ">{{smsAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="key ">{{smsAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':smsAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="type ">{{ vm.arraytype[smsAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="phone ">{{smsAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsAccount, ev) : vm.createOrEditSmsAccount($event, smsAccount)" md-cell class="description ">{{smsAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsAccount, $event    )" translate="SMS.EDIT_SMSACCOUNT">\n                          Edit SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(smsAccount, $event    )" translate="SMS.INTERACTIONS_SMSACCOUNT">\n                          Interactions SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsAccount, $event    )" translate="SMS.AGENTADD_SMSACCOUNT">\n                          AgentAdd SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsAccount, $event    )" translate="SMS.DELETE_SMSACCOUNT">\n                          Delete SmsAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsAccounts.count}}" md-on-paginate="vm.getSmsAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsAccount-button" ng-click="vm.createOrEditSmsAccount($event)" aria-label="add smsAccount" translate translate-attr-aria-label="SMS.ADD_SMSACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/sms/views/smsQueues/create/dialog.html",'<md-dialog class="smsQueue-dialog" aria-label="New SmsQueue">\n  <form name="smsQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="SMS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newSmsQueue">\n\n        <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n        <div ng-messages="smsQueueForm[\'name\'].$error" ng-show="smsQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.smsQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="smsQueueForm[\'strategy\'].$error" ng-show="smsQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="smsQueueForm[\'timeout\'].$error" ng-show="smsQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SMS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.smsQueue.description">\n\n        <div ng-messages="smsQueueForm[\'description\'].$error" ng-show="smsQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSmsQueue" ng-click="vm.saveSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid || smsQueueForm.$pristine" aria-label="SAVE" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSmsQueue" ng-click="vm.addNewSmsQueue()" class="send-button md-accent md-raised" ng-disabled="smsQueueForm.$invalid" aria-label="ADD" translate="SMS.ADD_SMSQUEUE" translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n          ADD SMSQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSmsQueue" ng-click="vm.deleteSmsQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="SMS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="SMS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/agentadd/agentadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.AGENTADD_SMSQUEUE">Add Agent to smsQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/teamadd/teamadd.html",'<md-dialog class="smsQueue-dialog" aria-label="smsQueue" ng-init="vm.onInit()">\n  <form name="smsQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="SMS.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/sms/views/smsQueues/edit/view.html",'<div id="sms-smsQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-smsQueues-button md-icon-button" aria-label="Go to smsQueues" ng-click="vm.gotoSmsQueues()" translate translate-attr-aria-label="SMS.GO_TO_SMSQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="smsQueue-image" hide-xs>\n          <img ng-src="assets/images/business/smsQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.smsQueue.id}}\n            <span ng-if="vm.smsQueue.name">{{vm.smsQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="SMS.CREATED_AT"></span> <span>{{vm.smsQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.smsQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="SMS.TEAMADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.smsQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="SMS.AGENTADD_SMSQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveSmsQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="SMS.SAVE" translate-attr-aria-label="SMS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="SMS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="smsQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="SMS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="SMS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.smsQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="SMS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="SMS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.smsQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.smsQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="SMS.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="SMS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.smsQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="SMS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/sms/views/smsQueues/smsQueues.html",'<div id="smsQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-message-text" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="SMS.SMSQUEUES">SmsQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="SMS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSmsQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSmsQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="SMS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-smsQueues-count">\n          <span>{{vm.selectedSmsQueues.length}}</span>\n          <span translate="SMS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="SMS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSmsQueues()" translate="SMS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSmsQueues()" translate="SMS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSmsQueues" csv-label="true" filename="smsQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSmsQueues($event)" aria-label="delete selected" translate translate-attr-label="SMS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SMSQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSmsQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSmsQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'SMS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'SMS.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'SMS.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.smsQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="SMS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="smsQueue" md-select-id="id" ng-repeat="smsQueue in vm.smsQueues.rows">\n                <td md-cell ng-if="smsQueue.userpic"><img class="avatar" alt="{{smsQueue.name}}" ng-src="api/users/{{smsQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!smsQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{smsQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="id ">{{smsQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="name ">{{smsQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(smsQueue, ev) : vm.createOrEditSmsQueue($event, smsQueue)" md-cell class="strategy ">{{ vm.arraystrategy[smsQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="SMS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(smsQueue, $event    )" translate="SMS.EDIT_SMSQUEUE">\n                          Edit SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(smsQueue, $event    )" translate="SMS.TEAMADD_SMSQUEUE">\n                          teamadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(smsQueue, $event    )" translate="SMS.AGENTADD_SMSQUEUE">\n                          agentadd SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(smsQueue, $event    )" translate="SMS.DELETE_SMSQUEUE">\n                          Delete SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(smsQueue, $event    )" translate="SMS.GOTOREALTIME_SMSQUEUE">\n                          goToRealtime SmsQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'SMS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'SMS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'SMS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.smsQueues.count}}" md-on-paginate="vm.getSmsQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SMSQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SMSQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-smsQueue-button" ng-click="vm.createOrEditSmsQueue($event)" aria-label="add smsQueue" translate translate-attr-aria-label="SMS.ADD_SMSQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SMSQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/agents.html",'<div id="agents" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.AGENTS">Agents</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedAgents.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedAgents =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllAgents()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectAgents()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedAgents" csv-label="true" filename="agents.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedAgents($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- AGENT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedAgents" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAgents">\n              <tr md-row>\n                <th md-column width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="showWebBar">{{ \'STAFF.SHOWWEBCONTROL\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.agents.rows.length">\n                <td md-cell colspan="10">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="agent" md-select-id="id" ng-repeat="agent in vm.agents.rows">\n                <td md-cell ng-if="agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="api/users/{{agent.id}}/avatar" /></td>\n                <td md-cell ng-if="!agent.userpic"><img class="avatar" alt="{{agent.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="fullname font-weight-600">{{agent.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="name">{{agent.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="showWebBar">{{ agent.showWebBar | getOptionByValue: vm.showWebBarOptions }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="email">{{agent.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="phone">{{agent.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="mobile">{{agent.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="internal">{{agent.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="disabled">\n                  <md-icon md-colors="{color: {{agent.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="blocked">\n                  <md-icon md-colors="{color: {{agent.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{agent.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.agents.count}}" md-on-paginate="vm.getAgents" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / AGENT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD AGENT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-agent-button" ng-click="vm.createOrEditAgent($event)" aria-label="add agent" translate translate-attr-aria-label="STAFF.ADD_AGENT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD AGENT BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/agents/create/dialog.html",'<md-dialog class="agent-dialog" aria-label="New Agent">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="agentForm[\'fullname\'].$error" ng-show="agentForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="agentForm[\'name\'].$error" ng-show="agentForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.agent.alias">\n\n        <div ng-messages="agentForm[\'alias\'].$error" ng-show="agentForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n        <md-select name="showWebBar" ng-model="vm.agent.showWebBar">\n          <md-option ng-value="0">Phonebar</md-option>\n          <md-option ng-value="1">External</md-option>\n          <md-option ng-value="2">WebRTC</md-option>\n        </md-select>\n        <div ng-messages="agentForm[\'showWebBar\'].$error" ng-show="agentForm[\'showWebBar\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.agent.email" ng-required="true">\n\n        <div ng-messages="agentForm[\'email\'].$error" ng-show="agentForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.agent.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="agentForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newAgent  && (vm.newAgent)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" ng-disabled="!vm.newAgent">\n\n        <div ng-messages="agentForm[\'internal\'].$error" ng-show="agentForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.agent.description">\n\n        <div ng-messages="agentForm[\'description\'].$error" ng-show="agentForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newAgent" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n        <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n        <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n        <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true">\n\n        <div ng-messages="agentForm[\'phoneBarRemoteControlPort\'].$error" ng-show="agentForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.agent.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAgent" ng-click="vm.saveAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAgent" ng-click="vm.addNewAgent()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid" aria-label="ADD" translate="STAFF.ADD_AGENT" translate-attr-aria-label="STAFF.ADD_AGENT">\n          ADD AGENT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAgent" ng-click="vm.deleteAgent($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/changepassword/changepassword.html",'<md-dialog class="agent-dialog" aria-label="{{vm.name}}">\n  <form name="agentForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.agent.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="agentForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="agentForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="agentForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="agentForm.$invalid || agentForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/queueadd/queueadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin" ng-if="vm.agent.role === \'agent\' && vm.channel === \'voice\'">\n        <label translate="STAFF.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="agentForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" add-disabled="vm.channel === \'voice\' && vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveQueues()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/teamadd/teamadd.html",'<md-dialog class="agent-dialog" aria-label="agent" ng-init="vm.onInit()">\n  <form name="agentForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/agents/edit/view.html",'<div id="staff-agent" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-agents-button md-icon-button" aria-label="Go to agents" ng-click="vm.gotoAgents()" translate translate-attr-aria-label="STAFF.GO_TO_AGENTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.agent.id}}\n            <span ng-if="vm.agent.name">{{vm.agent.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.agent.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak>\n      <md-fab-speed-dial md-direction="left" class="md-scale md-fab">\n        <md-fab-trigger>\n          <md-button aria-label="menu" class="md-fab md-primary md-icon-button">\n            <md-tooltip md-direction="top" md-visible="false"><span translate="STAFF.CHANNELS">Channels</span></md-tooltip>\n            <md-icon md-font-icon="icon-stackoverflow" aria-label="queueadd"></md-icon>\n          </md-button>\n        </md-fab-trigger>\n        <md-fab-actions>\n          <md-button aria-label="voice" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'inbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="VOICE.VOICE">Voice</span></md-tooltip>\n            <md-icon md-font-icon="icon-phone" aria-label="voice"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.dialer" aria-label="motion bull" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'voice\', $event, \'outbound\')">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MOTIONDIALER.MOTIONDIALER">Motion Bull</span></md-tooltip>\n            <md-icon md-font-icon="icon-fire" aria-label="motion bull"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.chat" aria-label="chat" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'chat\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="CHAT.CHAT">Chat</span></md-tooltip>\n            <md-icon md-font-icon="icon-hangouts" aria-label="chat"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.mail" aria-label="mail" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'mail\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="MAIL.MAIL">Email</span></md-tooltip>\n            <md-icon md-font-icon="icon-email" aria-label="mail"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.messaging" aria-label="sms" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'sms\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="SMS.SMS">Sms</span></md-tooltip>\n            <md-icon md-font-icon="icon-message-text" aria-label="sms"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.openchannel" aria-label="openchannel" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'openchannel\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="OPENCHANNEL.OPENCHANNEL">Openchannel</span></md-tooltip>\n            <md-icon md-font-icon="icon-google-earth" aria-label="openchannel"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.fax" aria-label="fax" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'fax\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="FAX.FAX">Fax</span></md-tooltip>\n            <md-icon md-font-icon="icon-deskphone" aria-label="fax"></md-icon>\n          </md-button>\n          <md-button ng-if="vm.license.whatsapp" aria-label="whatsapp" class="md-fab md-raised md-icon-button md-mini" ng-click="vm.queueaddchannel(vm.agent, \'whatsapp\', $event)">\n            <md-tooltip md-direction="bottom" md-visible="false"><span translate="WHATSAPP.WHATSAPP">whatsapp</span></md-tooltip>\n            <md-icon md-font-icon="icon-whatsapp" aria-label="whatsapp"></md-icon>\n          </md-button>\n        </md-fab-actions>\n      </md-fab-speed-dial>\n    </div>\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.agent, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="STAFF.TEAMADD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.agent, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_AGENT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveAgent()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid) || (capacityForm.$invalid) || (settingsForm.$invalid) || (remote_controlForm.$invalid) || (sipForm.$invalid) || (callforwardingForm.$invalid) || (settings_webrtcForm.$invalid) || (sip_webrtcForm.$invalid) || (general_permissionsForm.$invalid) || (download_permissionsForm.$invalid) || (permissionsForm.$invalid) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.agent.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.agent.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.agent.alias" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'alias\'].$error" ng-show="personal_infoForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SHOWWEBCONTROL">ShowWebControl</label>\n                <md-select name="showWebBar" ng-model="vm.agent.showWebBar" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="0">Phonebar</md-option>\n                  <md-option ng-value="1">External</md-option>\n                  <md-option ng-value="2">WebRTC</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'showWebBar\'].$error" ng-show="personal_infoForm[\'showWebBar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SHOWWEBCONTROL_REQUIRED">ShowWebControl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.agent.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.agent.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.agent.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 1" class="md-block">\n                <md-switch ng-model="vm.agent.hotdesk" aria-label="Hotdesk" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.HOTDESK">Hotdesk</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.loginInPause" aria-label="LoginInPause" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.LOGININPAUSE">LoginInPause</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.agent.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.agent.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.agent.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.agent.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Agentchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="agent-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.agent.images" ng-switch="change_avatarimage.type">\n                    <div class="agent-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="agent-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.agent.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.agent.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar != 2" class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.agent.transport" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'" ng-if="vm.agent.showWebBar == 1">ws</md-option>\n                  <md-option ng-value="\'wss\'" ng-if="vm.agent.showWebBar == 1">wss</md-option>\n                  <md-option ng-value="\'tls\'" ng-if="vm.agent.showWebBar == 1">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.HOST">Host</label>\n                <input type="text" name="host" ng-model="vm.agent.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.HOST_REQUIRED">Host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.agent.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.agent.type" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.agent.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.agent.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.agent.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.agent.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.agent.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.chanspy" aria-label="chanSpy" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CHANSPY">chanSpy</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.agent.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MONITOREXTENSION">MonitorExtension</label>\n                <md-select name="extensionMonitor" ng-model="vm.agent.extensionMonitor" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'extensionMonitor\'].$error" ng-show="generalForm[\'extensionMonitor\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MONITOREXTENSION_REQUIRED">MonitorExtension field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.OTHER_CHANNELS">OTHER_CHANNELS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container capacity md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CAPACITY">CAPACITY</div>\n            </div>\n            <form name="capacityForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <label translate="STAFF.CHATCAPACITY">ChatCapacity</label>\n                <input type="number" name="chatCapacity" ng-model="vm.agent.chatCapacity" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CHATCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'chatCapacity\'].$error" ng-show="capacityForm[\'chatCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_REQUIRED">ChatCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ChatCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <label translate="STAFF.MAILCAPACITY">MailCapacity</label>\n                <input type="number" name="mailCapacity" ng-model="vm.agent.mailCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.MAILCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'mailCapacity\'].$error" ng-show="capacityForm[\'mailCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_REQUIRED">MailCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MailCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <label translate="STAFF.SMSCAPACITY">SMSCapacity</label>\n                <input type="number" name="smsCapacity" ng-model="vm.agent.smsCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SMSCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'smsCapacity\'].$error" ng-show="capacityForm[\'smsCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_REQUIRED">SMSCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.SMSCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">SMSCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <label translate="STAFF.OPENCHANNELCAPACITY">OpenchannelCapacity</label>\n                <input type="number" name="openchannelCapacity" ng-model="vm.agent.openchannelCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.OPENCHANNELCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'openchannelCapacity\'].$error" ng-show="capacityForm[\'openchannelCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_REQUIRED">OpenchannelCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">OpenchannelCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <label translate="STAFF.FAXCAPACITY">FaxCapacity</label>\n                <input type="number" name="faxCapacity" ng-model="vm.agent.faxCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.FAXCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'faxCapacity\'].$error" ng-show="capacityForm[\'faxCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_REQUIRED">FaxCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FaxCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <label translate="STAFF.WHATSAPPCAPACITY">WhatsappCapacity</label>\n                <input type="number" name="whatsappCapacity" ng-model="vm.agent.whatsappCapacity" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WHATSAPPCAPACITY"></span></div>\n                <div ng-messages="capacityForm[\'whatsappCapacity\'].$error" ng-show="capacityForm[\'whatsappCapacity\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_REQUIRED">WhatsappCapacity field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WHATSAPPCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WhatsappCapacity must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 0">\n        <md-tab-label>\n          <span translate="STAFF.MOTIONBAR">MOTIONBAR</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settingsForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settingsForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRingInUse" aria-label="RingInUse" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.RINGINUSE">RingInUse</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnansweredCallBadge" aria-label="UnansweredCallBadge" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNANSWEREDCALLBADGE">UnansweredCallBadge</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableJaws" aria-label="EnableJawsIntegration" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEJAWSINTEGRATION">EnableJawsIntegration</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableScreenRecordingByAgentSelection()" ng-model="vm.agent.phoneBarEnableScreenRecordingByAgent" aria-label="EnableScreenRecordingByAgent" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESCREENRECORDINGBYAGENT">EnableScreenRecordingByAgent</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.showWebBar == 0 && vm.license.screenrecording" class="md-block">\n                <md-switch ng-change="vm.onEnableAutomaticScreenRecordingSelection()" ng-model="vm.agent.phoneBarEnableAutomaticScreenRecording" aria-label="EnableAutomaticScreenRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEAUTOMATICSCREENRECORDING">EnableAutomaticScreenRecording</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.ENABLEAUTOMATICSCREENRECORDING"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container remote_control md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.REMOTE_CONTROL">REMOTE_CONTROL</div>\n            </div>\n            <form name="remote_controlForm" novalidate>\n              <md-input-container ng-if="vm.agent.showWebBar == 0" class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarRemoteControl" aria-label="RemoteControl" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.REMOTECONTROL">RemoteControl</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarRemoteControl && vm.agent.showWebBar == 0" class="md-block">\n                <label translate="STAFF.REMOTECONTROLPORT">RemoteControlPort</label>\n                <input type="number" name="phoneBarRemoteControlPort" ng-model="vm.agent.phoneBarRemoteControlPort" value="9888" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="remote_controlForm[\'phoneBarRemoteControlPort\'].$error" ng-show="remote_controlForm[\'phoneBarRemoteControlPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.REMOTECONTROLPORT_REQUIRED">RemoteControlPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP">SIP</div>\n            </div>\n            <form name="sipForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sipForm[\'phoneBarExpires\'].$error" ng-show="sipForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPPORT">SipPort</label>\n                <input type="number" name="phoneBarListenPort" ng-model="vm.agent.phoneBarListenPort" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPPORT"></span></div>\n                <div ng-messages="sipForm[\'phoneBarListenPort\'].$error" ng-show="sipForm[\'phoneBarListenPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPPORT_REQUIRED">SipPort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container callforwarding md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CALLFORWARDING">CALLFORWARDING</div>\n            </div>\n            <form name="callforwardingForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarUnconditional" aria-label="Unconditional" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.UNCONDITIONAL">Unconditional</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarUnconditional" class="md-block">\n                <label translate="STAFF.UNCONDITIONALNUMBER">UnconditionalNumber</label>\n                <input type="text" name="phoneBarUnconditionalNumber" ng-model="vm.agent.phoneBarUnconditionalNumber" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="callforwardingForm[\'phoneBarUnconditionalNumber\'].$error" ng-show="callforwardingForm[\'phoneBarUnconditionalNumber\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.UNCONDITIONALNUMBER_REQUIRED">UnconditionalNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.agent.showWebBar == 2">\n        <md-tab-label>\n          <span translate="STAFF.WEBRTC">WEBRTC</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container settings_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SETTINGS_WEBRTC">SETTINGS_WEBRTC</div>\n            </div>\n            <form name="settings_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSCERTFILE">dtlscertfile</label>\n                <input type="text" name="dtlscertfile" ng-model="vm.agent.dtlscertfile" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSCERTFILE"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlscertfile\'].$error" ng-show="settings_webrtcForm[\'dtlscertfile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSCERTFILE_REQUIRED">dtlscertfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DTLSPRIVATEKEY">dtlsprivatekey</label>\n                <input type="text" name="dtlsprivatekey" ng-model="vm.agent.dtlsprivatekey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.DTLSPRIVATEKEY"></span></div>\n                <div ng-messages="settings_webrtcForm[\'dtlsprivatekey\'].$error" ng-show="settings_webrtcForm[\'dtlsprivatekey\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DTLSPRIVATEKEY_REQUIRED">dtlsprivatekey field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.WSS_PORT">WSS_Port</label>\n                <input type="number" name="wssPort" ng-model="vm.agent.wssPort" min="0" value="8089" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.WSS_PORT"></span></div>\n                <div ng-messages="settings_webrtcForm[\'wssPort\'].$error" ng-show="settings_webrtcForm[\'wssPort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.WSS_PORT_REQUIRED">WSS_Port field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.WSS_PORT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WSS_Port must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableSettings" aria-label="EnableSettings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLESETTINGS">EnableSettings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarAutoAnswer" aria-label="AutoAnswer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AUTOANSWER">AutoAnswer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.agent.phoneBarAutoAnswer" class="md-block">\n                <label translate="STAFF.AUTOANSWERDELAY">AutoAnswerDelay</label>\n                <input type="number" name="phoneBarAutoAnswerDelay" ng-model="vm.agent.phoneBarAutoAnswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$error" ng-show="settings_webrtcForm[\'phoneBarAutoAnswerDelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_REQUIRED">AutoAnswerDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="STAFF.ERRORS.AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AutoAnswerDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableRecording" aria-label="EnableRecording" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLERECORDING">EnableRecording</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarEnableDtmfTone" aria-label="EnableDtmfTone" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEDTMFTONE">EnableDtmfTone</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarDnd" aria-label="Dnd" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DND">Dnd</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.ignorePauseForPreviewCalls" aria-label="Ignore agent break status for preview calls" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS">Ignore agent break status for preview calls</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container sip_webrtc md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SIP_WEBRTC">SIP_WEBRTC</div>\n            </div>\n            <form name="sip_webrtcForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.SIPEXPIRES">SipExpires</label>\n                <input type="number" name="phoneBarExpires" ng-model="vm.agent.phoneBarExpires" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.SIPEXPIRES"></span></div>\n                <div ng-messages="sip_webrtcForm[\'phoneBarExpires\'].$error" ng-show="sip_webrtcForm[\'phoneBarExpires\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.SIPEXPIRES_REQUIRED">SipExpires field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container general_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL_PERMISSIONS">GENERAL_PERMISSIONS</div>\n            </div>\n            <form name="general_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.allowmessenger" aria-label="EnableMessenger" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ENABLEMESSENGER">EnableMessenger</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.phoneBarPrefixRequired" aria-label="PrefixRequired" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.PREFIXREQUIRED">PrefixRequired</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.selectRecallMeCampaign" aria-label="Select_RecallMe_Campaign" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SELECT_RECALLME_CAMPAIGN">Select_RecallMe_Campaign</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="agent-detail-form-container permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERMISSIONS">PERMISSIONS</div>\n            </div>\n            <div ng-controller="AgentPermissionsController as vm_pc" ng-init="vm_pc.init(vm.agent, vm.crudPermissions)" class="agent-detail-form-container">\n              <md-list ng-repeat="father in vm_pc.navigation[0].children" ng-include="\'permission-nested.html\'" ng-if="vm_pc.agent.role !== \'admin\' && !father.hidden()"></md-list>\n              \x3c!-- Nested navigation template --\x3e\n              <script type="text/ng-template" id="permission-nested.html">\n                <md-list-item>\n        <md-icon md-font-icon="{{father.icon}}"></md-icon>\n        <p translate="{{father.translate}}">{{ father.title }}</p>\n        <md-switch class="md-secondary" ng-model="father.enabled" ng-change="vm_pc.onChange(father)" ng-init="father.enabled = vm_pc.agent.permissions.includes(father.id)" \n                  ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n      </md-list-item>\n      <md-divider></md-divider>\n      <md-list>\n        <md-list-item ng-repeat="child in father.children" ng-if="child.id !== 201">\n          <md-icon ng-if="child.icon" md-font-icon="{{child.icon}}"></md-icon>\n          <p translate="{{child.translate}}">{{ child.title }}</p>\n          <md-switch ng-model="child.enabled" ng-change="vm_pc.onChange(father, child)" ng-init="child.enabled = vm_pc.agent.permissions.includes(child.id)"\n                    ng-disabled="!vm_pc.crudPermissions.canEdit"></md-switch>\n          </md-list-item>\n      </md-list>\n  <\/script>\n              \x3c!-- / Nested navigation template --\x3e\n              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/teams/create/dialog.html",'<md-dialog class="team-dialog" aria-label="New Team">\n  <form name="teamForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.team.name" ng-required="true" autofocus>\n\n        <div ng-messages="teamForm[\'name\'].$error" ng-show="teamForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.team.description">\n\n        <div ng-messages="teamForm[\'description\'].$error" ng-show="teamForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTeam" ng-click="vm.saveTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid || teamForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTeam" ng-click="vm.addNewTeam()" class="send-button md-accent md-raised" ng-disabled="teamForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TEAM" translate-attr-aria-label="STAFF.ADD_TEAM">\n          ADD TEAM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTeam" ng-click="vm.deleteTeam($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/edit/agentadd/agentadd.html",'<md-dialog class="team-dialog" aria-label="team" ng-init="vm.onInit()">\n  <form name="teamForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="STAFF.AGENTADD_TEAM">Add Agent to team</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/teams/teams.html",'<div id="teams" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TEAMS">Teams</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTeams.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTeams =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-teams-count">\n          <span>{{vm.selectedTeams.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTeams()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTeams()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTeams" csv-label="true" filename="teams.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTeams($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEAM TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTeams" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTeams">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.teams.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="team" md-select-id="id" ng-repeat="team in vm.teams.rows">\n                <td md-cell ng-if="team.userpic"><img class="avatar" alt="{{team.name}}" ng-src="api/users/{{team.id}}/avatar" /></td>\n                <td md-cell ng-if="!team.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{team.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="id ">{{team.id}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="name ">{{team.name}}</td>\n                <td ng-click="vm.createOrEditTeam($event, team)" md-cell class="description ">{{team.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(team, $event    )" translate="STAFF.EDIT_TEAM">\n                          Edit Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(team, $event    )" translate="STAFF.AGENTADD_TEAM">\n                          AgentAdd Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(team, $event    )" translate="STAFF.DELETE_TEAM">\n                          Delete Team\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.teams.count}}" md-on-paginate="vm.getTeams" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEAM TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEAM BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-team-button" ng-click="vm.createOrEditTeam($event)" aria-label="add team" translate translate-attr-aria-label="STAFF.ADD_TEAM">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEAM BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/telephones/create/dialog.html",'<md-dialog class="telephone-dialog" aria-label="New Telephone">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n        <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="telephoneForm[\'fullname\'].$error" ng-show="telephoneForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="telephoneForm[\'name\'].$error" ng-show="telephoneForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true">\n\n        <div ng-messages="telephoneForm[\'email\'].$error" ng-show="telephoneForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newTelephone">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.telephone.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="telephoneForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newTelephone  && (vm.newTelephone)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.telephone.description">\n\n        <div ng-messages="telephoneForm[\'description\'].$error" ng-show="telephoneForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" ng-disabled="!vm.newTelephone">\n\n        <div ng-messages="telephoneForm[\'internal\'].$error" ng-show="telephoneForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newTelephone" class="md-block">\n        <md-switch ng-model="vm.telephone.voicemail" aria-label="Voicemail"><span translate="STAFF.VOICEMAIL">Voicemail</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTelephone" ng-click="vm.saveTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTelephone" ng-click="vm.addNewTelephone()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid" aria-label="ADD" translate="STAFF.ADD_TELEPHONE" translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n          ADD TELEPHONE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTelephone" ng-click="vm.deleteTelephone($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/changepassword/changepassword.html",'<md-dialog class="telephone-dialog" aria-label="{{vm.name}}">\n  <form name="telephoneForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.telephone.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="telephoneForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="telephoneForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="telephoneForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="telephoneForm.$invalid || telephoneForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/telephones/edit/view.html",'<div id="staff-telephone" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-telephones-button md-icon-button" aria-label="Go to telephones" ng-click="vm.gotoTelephones()" translate translate-attr-aria-label="STAFF.GO_TO_TELEPHONES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="telephone-image" hide-xs>\n          <img ng-src="assets/images/business/telephones.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.telephone.id}}\n            <span ng-if="vm.telephone.name">{{vm.telephone.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.telephone.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.telephone, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_TELEPHONE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTelephone()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(accountForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container account md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.ACCOUNT">ACCOUNT</div>\n            </div>\n            <form name="accountForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ACCOUNTNAME">Accountname</label>\n                <input type="text" name="fullname" ng-model="vm.telephone.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'fullname\'].$error" ng-show="accountForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ACCOUNTNAME_REQUIRED">Accountname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.telephone.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="accountForm[\'name\'].$error" ng-show="accountForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.telephone.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'email\'].$error" ng-show="accountForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.telephone.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'description\'].$error" ng-show="accountForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.telephone.phone" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'phone\'].$error" ng-show="accountForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.telephone.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="accountForm[\'mobile\'].$error" ng-show="accountForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="telephone-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.telephone.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.telephone.internal" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.telephone.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.TRANSPORT"></span></div>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.telephone.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.telephone.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLERID">CallerId</label>\n                <input type="text" name="callerid" ng-model="vm.telephone.callerid" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLERID_REQUIRED">CallerId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.telephone.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.telephone.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.telephone.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.telephone.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ENCRYPTION">Encryption</label>\n                <md-select name="encryption" ng-model="vm.telephone.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="generalForm[\'encryption\'].$error" ng-show="generalForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ENCRYPTION_REQUIRED">Encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/telephones/telephones.html",'<div id="telephones" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.TELEPHONES">Telephones</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTelephones.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTelephones =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-telephones-count">\n          <span>{{vm.selectedTelephones.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTelephones()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTelephones()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTelephones" csv-label="true" filename="telephones.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTelephones($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TELEPHONE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTelephones" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.ACCOUNTNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.telephones.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="telephone" md-select-id="id" ng-repeat="telephone in vm.telephones.rows">\n                <td md-cell ng-if="telephone.userpic"><img class="avatar" alt="{{telephone.name}}" ng-src="api/users/{{telephone.id}}/avatar" /></td>\n                <td md-cell ng-if="!telephone.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{telephone.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="fullname font-weight-600">{{telephone.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="name ">{{telephone.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="email ">{{telephone.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(telephone, ev) : vm.createOrEditTelephone($event, telephone)" md-cell class="internal ">{{telephone.internal}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(telephone, $event    )" translate="STAFF.EDIT_TELEPHONE">\n                          Edit Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(telephone, $event    )" translate="STAFF.DELETE_TELEPHONE">\n                          Delete Telephone\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.telephones.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TELEPHONE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TELEPHONE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-telephone-button" ng-click="vm.createOrEditTelephone($event)" aria-label="add telephone" translate translate-attr-aria-label="STAFF.ADD_TELEPHONE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TELEPHONE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/userProfiles/create/dialog.html",'<md-dialog class="userProfile-dialog" aria-label="New UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUserProfile" ng-click="vm.saveUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid || userProfileForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUserProfile" ng-click="vm.addNewUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USERPROFILE" translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n          ADD USERPROFILE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUserProfile" ng-click="vm.deleteUserProfile($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/clone/clone.html",'<md-dialog class="userProfile-dialog" aria-label="Clone UserProfile">\n  <form name="userProfileForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus ng-disabled="!vm.newUserProfile">\n\n        <div ng-messages="userProfileForm[\'name\'].$error" ng-show="userProfileForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.userProfile.description">\n\n        <div ng-messages="userProfileForm[\'description\'].$error" ng-show="userProfileForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n        <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required>\n\n          <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n          <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="userProfileForm[\'crudPermissions\'].$error" ng-show="userProfileForm[\'crudPermissions\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n        <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneUserProfile()" class="send-button md-accent md-raised" ng-disabled="userProfileForm.$invalid" aria-label="CLONE" translate="STAFF.CLONE_USERPROFILE" translate-attr-aria-label="STAFF.CLONE_USERPROFILE">\n        CLONE USERPROFILE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/permissionsmanage/permissionsmanage.html",'<md-dialog class="userProfile-dialog" aria-label="userProfile">\n  <form name="userProfileForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2>{{vm.title}}</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog($event)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div layout="column" class="padding-bottom-10">\n        <div layout="row" class="padding-bottom-10">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.SECTIONS">Sections</label>\n            <md-select name="sections" ng-model="vm.selectedSection" placeholder="{{\'STAFF.PERMISSIONS_SELECT_SECTION\' | translate}}" ng-change="vm.onChangeSection()" required>\n              <md-option ng-value="subsection" ng-repeat="subsection in vm.subsections" ng-selected="{{vm.subsections.length === 1 ? \'true\' : \'false\'}}">{{subsection.translate | translate}}</md-option>\n            </md-select>\n          </md-input-container>\n          <div layout="row" ng-show="vm.selectedSection" class="margin-left-10">\n            <md-button ng-switch="vm.selectedSection.enabled" class="md-icon-button md-fab md-mini size-8 padding-10" ng-class="vm.selectedSection.enabled ? \'blue-500-bg\' : \'grey-A400-bg\'" ng-click="vm.onChangeVisibility()" aria-label="Visibility">\n              <md-icon ng-switch-when="true" md-font-icon="icon-eye" aria-label="Visible section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_HIDE\' | translate}}</md-tooltip>\n              </md-icon>\n              <md-icon ng-switch-when="false" md-font-icon="icon-eye-off" aria-label="Hidden section">\n                <md-tooltip>{{\'STAFF.PERMISSIONS_SECTION_SHOW\' | translate}}</md-tooltip>\n              </md-icon>\n            </md-button>\n            <div>\n              <md-button class="md-icon-button md-fab md-mini size-8 green-A700-bg no-margin" ng-disabled="true">\n                <md-icon md-font-icon="icon-monitor" class="md-background-fg" aria-label="Read permission">\n                  <md-tooltip>{{\'STAFF.READ_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowEdit ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'edit\')">\n                <md-icon md-font-icon="icon-pencil" aria-label="Edit permission">\n                  <md-tooltip>{{\'STAFF.EDIT_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n              <md-button class="md-icon-button md-fab md-mini size-8 no-margin" ng-class="vm.selectedSection.allowDelete ? \'green-A700-bg\' : \'grey-A400-bg\'" ng-click="vm.setPermission(\'delete\')">\n                <md-icon md-font-icon="icon-delete" aria-label="Delete permission">\n                  <md-tooltip>{{\'STAFF.DELETE_PERMISSION\' | translate}}</md-tooltip>\n                </md-icon>\n              </md-button>\n            </div>\n          </div>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection" class="margin-left-10" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-switch ng-model="vm.selectedSection.autoAssociation" class="no-margin padding-right-10" aria-label="Auto association" ng-change="vm.onChangeAutoAssociation()">\n          </md-switch>\n          <p class="no-margin font-size-12 line-height-30">{{\'STAFF.PERMISSIONS_AUTO_ASSOCIATION_INFO\' | translate}}</p>\n        </div>\n        <div layout="row" ng-show="vm.selectedSection && vm.selectedSection.title === \'Reports\' && !vm.selectedSection.autoAssociation" class="margin-bottom-10 margin-top-30" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association">\n          <md-input-container flex class="no-margin">\n            <label translate="STAFF.REPORT_TYPE">Report Type</label>\n            <md-select name="type" ng-model="vm.selectedSection.reportType" placeholder="{{\'STAFF.PERMISSIONS_SELECT_REPORT_TYPE\' | translate}}" ng-change="vm.onChangeReportType()" required>\n              <md-option ng-value="\'default\'">Default</md-option>\n              <md-option ng-value="\'custom\'">Custom</md-option>\n            </md-select>\n          </md-input-container>\n        </div>\n        <div ng-show="vm.selectedSection && vm.selectedSection.title === \'Dashboards\'" class="user-profile-section-help margin-bottom-10 margin-top-20">\n          <md-icon md-font-icon="icon-help" aria-label="Dashboards help"></md-icon>\n          <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.CUSTOM_DASHBOARDS_PERMISSIONS"></span>\n        </div>\n      </div>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" ng-if="!vm.selectedSection.permissions || vm.selectedSection.permissions.association" ng-hide="vm.selectedSection.autoAssociation"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center">\n      <div>\n        <md-icon md-font-icon="icon-information-outline" aria-label="Delete permission"></md-icon>\n        <span class="no-margin font-size-12 line-height-30" translate="STAFF.HELP.SAVE_PERMISSIONS"></span>\n      </div>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveSection()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/userProfiles/edit/view.html",'<div id="staff-userProfile" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-userProfiles-button md-icon-button" aria-label="Go to userProfiles" ng-click="vm.gotoUserProfiles()" translate translate-attr-aria-label="STAFF.GO_TO_USERPROFILES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="userProfile-image" hide-xs>\n          <img ng-src="assets/images/business/userProfiles.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.userProfile.id}}\n            <span ng-if="vm.userProfile.name">{{vm.userProfile.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.userProfile.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.userProfile, $event)" class="md-fab md-amber-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="STAFF.CLONE_USERPROFILE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUserProfile()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (modulesForm.$invalid) || (download_permissionsForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.userProfile.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.userProfile.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CRUDPERMISSIONS">CrudPermissions</label>\n                <md-select name="crudPermissions" ng-model="vm.userProfile.crudPermissions" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'r\'" disabled> {{ \'STAFF.READ_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'e\'"> {{ \'STAFF.EDIT_PERMISSION\' | translate }} </md-option>\n\n                  <md-option ng-value="\'d\'"> {{ \'STAFF.DELETE_PERMISSION\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'crudPermissions\'].$error" ng-show="generalForm[\'crudPermissions\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CRUDPERMISSIONS_REQUIRED">CrudPermissions field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.privacyEnabled" aria-label="Mask_Sensitive_Data" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.MASK_SENSITIVE_DATA">Mask_Sensitive_Data</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.MASK_SENSITIVE_DATA"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.PERMISSIONS">PERMISSIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container modules md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.MODULES">MODULES</div>\n            </div>\n            <div ng-controller="UserProfilePermissionsController as vm_pc" ng-init="vm_pc.init(vm.userProfile, vm.license)" class="userProfile-detail-form-container">\n              <md-grid-list flex md-cols-gt-xs="2" md-cols-gt-sm="2" md-cols-gt-md="4" md-cols-gt-lg="6" md-row-height-gt-xs="2:1" md-row-height-gt-sm="3:1" md-row-height-gt-md="3:1" gt-xs-gutter="4px" gt-sm-gutter="4px" gt-md-gutter="16px" gt-lg-gutter="16px">\n                <md-grid-tile ng-repeat="father in vm_pc.modules" ng-if="vm_pc.userProfile.role !== \'admin\' && !father.permissions.hidden" md-colspan="2">\n                  <md-card flex-xs flex-gt-xs="90" layout="column" no-padding no-margin>\n                    <md-card-header>\n                      <md-card-avatar>\n                        <md-icon class="md-avatar-icon auto-size" md-font-icon="{{father.icon}}" ng-class="{ true: father.status.color }[true]">\n                          <md-tooltip>{{ father.status.info }}</md-tooltip>\n                        </md-icon>\n                      </md-card-avatar>\n                      <md-card-header-text layout-align="center start">\n                        <span class="md-title" translate="{{father.translate}}">{{ father.title }}</span>\n                      </md-card-header-text>\n                      <md-card-actions class="no-margin" layout="row" ng-init="vm_pc.checkSectionResources(father)" ng-if="father.status.tag != \'unlicensed\'">\n                        <md-switch class="auto-height no-margin" ng-model="father.allResourcesEnabled" ng-change="vm_pc.onChangeEnableAllResources(father)" aria-label="Enable all"></md-switch>\n                        <md-button class="md-mini auto-width" aria-label="Manage" ng-click="vm_pc.manageResources(father)" ng-hide="father.permissions && !father.permissions.association">\n                          <md-tooltip>{{\'STAFF.PERMISSIONS_MANAGE\' | translate}}\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-cog"></md-icon>\n                        </md-button>\n                      </md-card-actions>\n                      <md-card-header-text ng-if="father.status.tag === \'unlicensed\'" layout-align="center end">\n                        <span class="md-subhead red-A700-fg">{{ father.status.name }}</span>\n                      </md-card-header-text>\n                    </md-card-header>\n                  </md-card>\n                </md-grid-tile>\n              </md-grid-list>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.DOWNLOADS">DOWNLOADS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="userProfile-detail-form-container download_permissions md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.DOWNLOAD_PERMISSIONS">DOWNLOAD_PERMISSIONS</div>\n            </div>\n            <form name="download_permissionsForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadAttachments" aria-label="Attachments" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.ATTACHMENTS">Attachments</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadCallySquareRecordings" aria-label="CallySquare_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CALLYSQUARE_RECORDINGS">CallySquare_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadContactManagerLists" aria-label="Contact_Manager_Lists" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.CONTACT_MANAGER_LISTS">Contact_Manager_Lists</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadJscriptySessions" aria-label="Jscripty_Sessions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.JSCRIPTY_SESSIONS">Jscripty_Sessions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadOmnichannelInteractions" aria-label="Omnichannel_Interactions" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.OMNICHANNEL_INTERACTIONS">Omnichannel_Interactions</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadScreenRecordings" aria-label="Screen_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.SCREEN_RECORDINGS">Screen_Recordings</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.userProfile.downloadVoiceRecordings" aria-label="Voice_Recordings" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.VOICE_RECORDINGS">Voice_Recordings</span></md-switch>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/staff/views/userProfiles/userProfiles.html",'<div id="userProfiles" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERPROFILES">UserProfiles</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUserProfiles.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedUserProfiles =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-userProfiles-count">\n          <span>{{vm.selectedUserProfiles.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUserProfiles()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUserProfiles()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUserProfiles" csv-label="true" filename="userProfiles.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedUserProfiles($event)" aria-label="delete selected" translate translate-attr-label="STAFF.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USERPROFILE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUserProfiles" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUserProfiles">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'STAFF.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'STAFF.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="crudPermissions">{{ \'STAFF.CRUDPERMISSIONS\' | translate }}</th>\n                <th md-column md-order-by="privacyEnabled">{{ \'STAFF.MASK_SENSITIVE_DATA\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.userProfiles.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="userProfile" md-select-id="id" ng-repeat="userProfile in vm.userProfiles.rows">\n                <td md-cell ng-if="userProfile.userpic"><img class="avatar" alt="{{userProfile.name}}" ng-src="api/users/{{userProfile.id}}/avatar" /></td>\n                <td md-cell ng-if="!userProfile.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{userProfile.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="id ">{{userProfile.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="name ">{{userProfile.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="description ">{{userProfile.description}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="crudPermissions ">{{userProfile.selectedcrudPermissions}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(userProfile, ev) : vm.createOrEditUserProfile($event, userProfile)" md-cell class="privacyEnabled ">\n                  <md-icon md-colors="{color: {{userProfile.privacyEnabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{userProfile.privacyEnabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(userProfile, $event    )" translate="STAFF.EDIT_USERPROFILE">\n                          Edit UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(userProfile, $event    )" translate="STAFF.CLONE_USERPROFILE">\n                          clone UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n\n                        <md-button ng-click="vm.deleteconfirm(userProfile, $event    )" translate="STAFF.DELETE_USERPROFILE">\n                          Delete UserProfile\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.userProfiles.count}}" md-on-paginate="vm.getUserProfiles" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USERPROFILE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USERPROFILE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-userProfile-button" ng-click="vm.createOrEditUserProfile($event)" aria-label="add userProfile" translate translate-attr-aria-label="STAFF.ADD_USERPROFILE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USERPROFILE BUTTON --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/create/dialog.html",'<md-dialog class="user-dialog" aria-label="New User">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="STAFF.ROLE">Role</label>\n        <md-select name="role" ng-model="vm.user.role" autofocus required ng-disabled="!vm.newUser">\n          <md-option ng-value="\'admin\'">Admin</md-option>\n          <md-option ng-value="\'user\'">User</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'role\'].$error" ng-show="userForm[\'role\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n        <label translate="STAFF.USERPROFILE">UserProfile</label>\n        <md-select name="userProfileId" ng-model="vm.user.userProfileId" required>\n          <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n        </md-select>\n        <div ng-messages="userForm[\'userProfileId\'].$error" ng-show="userForm[\'userProfileId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.FULLNAME">Fullname</label>\n        <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true">\n\n        <div ng-messages="userForm[\'fullname\'].$error" ng-show="userForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.USERNAME">Username</label>\n        <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n        <div ng-messages="userForm[\'name\'].$error" ng-show="userForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.user.email" ng-required="true">\n\n        <div ng-messages="userForm[\'email\'].$error" ng-show="userForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser">\n        <label translate="STAFF.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.user.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="STAFF.PASSWORD" required>\n        <div ng-messages="userForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.newUser  && (vm.newUser)">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.user.description">\n\n        <div ng-messages="userForm[\'description\'].$error" ng-show="userForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.newUser" class="md-block">\n        <md-switch ng-model="vm.user.autointernal" aria-label="AutoInternal"><span translate="STAFF.AUTOINTERNAL">AutoInternal</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n        <label translate="STAFF.INTERNAL">Internal</label>\n        <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" ng-disabled="!vm.newUser">\n\n        <div ng-messages="userForm[\'internal\'].$error" ng-show="userForm[\'internal\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newUser" ng-click="vm.saveUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newUser" ng-click="vm.addNewUser()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid" aria-label="ADD" translate="STAFF.ADD_USER" translate-attr-aria-label="STAFF.ADD_USER">\n          ADD USER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newUser" ng-click="vm.deleteUser($event)" aria-label="DELETE" translate translate-attr-aria-label="STAFF.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="STAFF.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/apikeymanager/apikeymanager.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.MANAGE_API_KEY\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-card layout-fill layout-padding>\n      <textarea class="api-key-area" ng-model="vm.user.apiKey" rows="6" disabled></textarea>\n    </md-card>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.generateApiKey()" class="send-button md-accent md-raised" aria-label="Generate" translate="{{ vm.user.apiKey === \'N/A\' ? \'STAFF.GENERATE\' : \'STAFF.REGENERATE\' }}" translate-attr-aria-label="STAFF.GENERATE">\n          Generate\n        </md-button>\n        <md-button type="submit" ng-click="vm.removeApiKey()" class="send-button md-accent md-raised" aria-label="Remove" translate="STAFF.REMOVE" translate-attr-aria-label="STAFF.DELETE">\n          Delete\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="userForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'\n                    STAFF.CHANGE_PASSWORD\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="STAFF.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="STAFF.OLD_PASSWORD" required>\n        <div ng-messages="userForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" translate ng-pattern="vm.passwordPattern" translate-attr-placeholder="STAFF.NEW_PASSWORD" required>\n        <div ng-messages="userForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.PASSWORD_REQUIRED">Password field is\n              required</span>\n          </div>\n\n\n          <div ng-message="pattern">\n            <span translate="STAFF.ERRORS.SECURE_PASSWORD_PATTERN">Must contain\n              at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric\n              character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="STAFF.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n\n\n\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="STAFF.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="userForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="STAFF.ERRORS.CONFIRM_REQUIRED">Confirm field is\n              required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="STAFF.ERRORS.CONFIRM_NOT_MATCH">Your password did\n              not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="userForm.$invalid || userForm.$pristine" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/staff/views/users/edit/view.html",'<div id="staff-user" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-users-button md-icon-button" aria-label="Go to users" ng-click="vm.gotoUsers()" translate translate-attr-aria-label="STAFF.GO_TO_USERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.user.id}}\n            <span ng-if="vm.user.name">{{vm.user.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="STAFF.CREATED_AT"></span> <span>{{vm.user.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.apikeymanagerdialog(vm.user, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="apikeymanager">\n        <md-tooltip><span translate="STAFF.APIKEYMANAGER_USER"></span></md-tooltip>\n        <md-icon md-font-icon="fab fa-hubspot"></md-icon>\n      </md-button>\n    </div>\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.changepassworddialog(vm.user, $event)" class="md-fab md-warn md-icon-button" aria-label="changepassword">\n        <md-tooltip><span translate="STAFF.CHANGEPASSWORD_USER"></span></md-tooltip>\n        <md-icon md-font-icon="icon-key-variant"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveUser()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(personal_infoForm.$invalid) || (security_suiteForm.$invalid) || (change_avatarForm.$invalid) || (generalForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.ACCOUNT">ACCOUNT</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container personal_info md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.PERSONAL_INFO">PERSONAL_INFO</div>\n            </div>\n            <form name="personal_infoForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ROLE">Role</label>\n                <md-select name="role" ng-model="vm.user.role" autofocus required disabled>\n                  <md-option ng-value="\'admin\'">Admin</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'role\'].$error" ng-show="personal_infoForm[\'role\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ROLE_REQUIRED">Role field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.role === \'user\'" class="md-block">\n                <label translate="STAFF.USERPROFILE">UserProfile</label>\n                <md-select name="userProfileId" ng-model="vm.user.userProfileId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="userProfileId.id" ng-repeat="userProfileId in vm.userProfiles" ng-disabled="userProfileId.canSelect === false">{{ userProfileId.name }}</md-option>\n                </md-select>\n                <div ng-messages="personal_infoForm[\'userProfileId\'].$error" ng-show="personal_infoForm[\'userProfileId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERPROFILE_REQUIRED">UserProfile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.FULLNAME">Fullname</label>\n                <input type="text" name="fullname" ng-model="vm.user.fullname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'fullname\'].$error" ng-show="personal_infoForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.FULLNAME_REQUIRED">Fullname field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.USERNAME">Username</label>\n                <input type="text" name="name" ng-model="vm.user.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" disabled>\n                <div class="hint"><span translate="STAFF.HELP.USERNAME"></span></div>\n                <div ng-messages="personal_infoForm[\'name\'].$error" ng-show="personal_infoForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.USERNAME_REQUIRED">Username field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="STAFF.ERRORS.USERNAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Username must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.user.email" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'email\'].$error" ng-show="personal_infoForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="STAFF.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PHONE">Phone</label>\n                <input type="text" name="phone" ng-model="vm.user.phone" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'phone\'].$error" ng-show="personal_infoForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.MOBILE">Mobile</label>\n                <input type="text" name="mobile" ng-model="vm.user.mobile" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'mobile\'].$error" ng-show="personal_infoForm[\'mobile\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.MOBILE_REQUIRED">Mobile field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.user.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="personal_infoForm[\'description\'].$error" ng-show="personal_infoForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container security_suite md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.SECURITY_SUITE">SECURITY_SUITE</div>\n            </div>\n            <form name="security_suiteForm" novalidate>\n              <md-input-container ng-if="vm.user.passwordResetAt != null" class="md-block">\n                <label translate="STAFF.LAST_PASSWORD_RESET_AT">Last_Password_Reset_At</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" autofocus disabled>\n                <div class="hint"><span translate="STAFF.HELP.LAST_PASSWORD_RESET_AT"></span></div>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.LAST_PASSWORD_RESET_AT_REQUIRED">Last_Password_Reset_At field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.passwordResetAt == null" class="md-block">\n                <label translate="STAFF.NO_PASSWORD_CHANGE">No_Password_Change</label>\n                <input type="text" name="passwordResetAt" ng-model="vm.user.passwordResetAt" disabled>\n                <div ng-messages="security_suiteForm[\'passwordResetAt\'].$error" ng-show="security_suiteForm[\'passwordResetAt\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NO_PASSWORD_CHANGE_REQUIRED">No_Password_Change field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.APIKEY">ApiKey</label>\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-apiKey" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: \'API Key copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-apiKey" name="apiKey" ng-model="vm.user.apiKey" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="STAFF.HELP.APIKEY"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\'" class="md-block">\n                <md-switch ng-model="vm.user.disabled" aria-label="Disabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.DISABLED">Disabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.DISABLED"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.user.id != vm.currentUser.id && vm.currentUser.role == \'admin\' && vm.user.disabled == 0" class="md-block">\n                <md-switch ng-model="vm.user.blocked" aria-label="Blocked" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.BLOCKED">Blocked</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.BLOCKED"></span></div>\n              </md-input-container>\n            </form>\n          </div>\n          <div class="user-detail-form-container authentication md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="user-detail-form-container change_avatar md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CHANGE_AVATAR">CHANGE_AVATAR</div>\n            </div>\n            <div ng-controller="Userchange_avatarController as vm_ca" ng-init="vm_ca.init(vm.user, vm.crudPermissions)" class="user-detail-form-container md-background-bg md-whiteframe-1dp">\n              <div id="user-image-uploader" flow-init="vm_ca.ngFlowOptions" flow-name="vm_ca.ngFlow.flow" flow-files-submitted="vm_ca.upload()" flow-file-added="vm_ca.fileAdded($file)" flow-file-success="vm_ca.fileSuccess($file, $message)" flow-complete="vm_ca.uploadComplete()" flow-drop flow-drag-enter="vm_ca.dropping=true" flow-drag-leave="vm_ca.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n                <div class="drop-text hint-text" layout="row" layout-align="center center">\n                  <span translate="EC.DROP_TO_UPLOAD">Drop to upload</span>\n                </div>\n                <div class="upload-button" layout="column" layout-align="center center">\n                  <md-button class="md-accent md-raised" flow-btn ng-disabled="!vm_ca.crudPermissions.canEdit">\n                    Upload\n                  </md-button>\n                  <span class="secondary-text mt-8">You can also drop images here to upload. Only PNG, JPG - Max. 8MB</span>\n                </div>\n                <div layout="row" layout-align="start start" layout-wrap>\n                  <div ng-repeat="change_avatarimage in vm_ca.user.images" ng-switch="change_avatarimage.type">\n                    <div class="user-image uploading" ng-switch-when="uploading" layout="row" layout-align="center center">\n                      <div class="overlay" layout="column" layout-align="center center">\n                        <md-progress-linear md-mode="determinate" value="{{change_avatarimage.file.progress() * 100}}">\n                        </md-progress-linear>\n                      </div>\n                      <img class="media" flow-img="change_avatarimage.file">\n                    </div>\n                    <div class="user-image" ng-switch-when="image" layout="row" layout-align="center center">\n                      <img class="media" ng-src="{{change_avatarimage.url}}">\n                    </div>\n                  </div>\n                </div>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.VOICE">VOICE</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container ng-if="!vm.user.autointernal" class="md-block">\n                <label translate="STAFF.INTERNAL">Internal</label>\n                <input type="text" name="internal" ng-model="vm.user.internal" ng-required="true" autofocus disabled>\n                <div ng-messages="generalForm[\'internal\'].$error" ng-show="generalForm[\'internal\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.INTERNAL_REQUIRED">Internal field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.user.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'transport\'].$error" ng-show="generalForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.NAT">NAT</label>\n                <md-select name="nat" ng-model="vm.user.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.NAT_REQUIRED">NAT field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.user.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="STAFF.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.user.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.CALLGROUP">Callgroup</label>\n                <input type="text" name="callgroup" ng-model="vm.user.callgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.CALLGROUP"></span></div>\n                <div ng-messages="generalForm[\'callgroup\'].$error" ng-show="generalForm[\'callgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.CALLGROUP_REQUIRED">Callgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.PICKUPGROUP">Pickupgroup</label>\n                <input type="text" name="pickupgroup" ng-model="vm.user.pickupgroup" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="STAFF.HELP.PICKUPGROUP"></span></div>\n                <div ng-messages="generalForm[\'pickupgroup\'].$error" ng-show="generalForm[\'pickupgroup\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.PICKUPGROUP_REQUIRED">Pickupgroup field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="STAFF.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.user.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'videosupport\'].$error" ng-show="generalForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="STAFF.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="STAFF.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/staff/views/users/users.html",'<div id="users" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-account-multiple" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="STAFF.USERS">Users</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="STAFF.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedUsers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedUsers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="STAFF.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="STAFF.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllUsers()" translate="STAFF.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectUsers()" translate="STAFF.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedUsers" csv-label="true" filename="users.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- USER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedUsers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getUsers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="role">{{ \'STAFF.ROLE\' | translate }}</th>\n                <th md-column md-order-by="userProfileId">{{ \'STAFF.USERPROFILE\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'STAFF.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'STAFF.USERNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'STAFF.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'STAFF.PHONE\' | translate }}</th>\n                <th md-column md-order-by="mobile">{{ \'STAFF.MOBILE\' | translate }}</th>\n                <th md-column md-order-by="internal">{{ \'STAFF.INTERNAL\' | translate }}</th>\n                <th md-column md-order-by="disabled">{{ \'STAFF.DISABLED\' | translate }}</th>\n                <th md-column md-order-by="blocked">{{ \'STAFF.BLOCKED\' | translate }}</th>\n                <th md-column>{{ \'STAFF.CLIENT_LOGS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.users.rows.length">\n                <td md-cell colspan="11">\n                  <div layout="row" layout-align="center center">\n                    <span translate="STAFF.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="user" md-select-id="id" ng-repeat="user in vm.users.rows">\n                <td md-cell ng-if="user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="api/users/{{user.id}}/avatar" /></td>\n                <td md-cell ng-if="!user.userpic"><img class="avatar" alt="{{user.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="role ">{{ vm.arrayrole[user.role].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="userProfileId font-weight-600">{{ (vm.userProfiles | filter : {\'id\':user.userProfileId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="fullname font-weight-600">{{user.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="name ">{{user.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="email ">{{user.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="phone ">{{user.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="mobile ">{{user.mobile}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="internal ">{{user.internal}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="disabled ">\n                  <md-icon md-colors="{color: {{user.disabled ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.disabled ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditUser($event, user)" md-cell class="blocked ">\n                  <md-icon md-colors="{color: {{user.blocked ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{user.blocked ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-icon>\n                </td>\n                <td md-cell class="actions">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{\'STAFF.PAGE\' | translate}}:\', rowsPerPage: \'{{\'STAFF.ROWSPERPAGE\' | translate}}:\', of: \'{{\'STAFF.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.users.count}}" md-on-paginate="vm.getUsers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / USER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD USER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-user-button" ng-click="vm.createOrEditUser($event)" aria-label="add user" translate translate-attr-aria-label="STAFF.ADD_USER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD USER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/cannedAnswers.html",'<div id="cannedAnswers" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CANNEDANSWERS">CannedAnswers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCannedAnswers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCannedAnswers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-cannedAnswers-count">\n          <span>{{vm.selectedCannedAnswers.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCannedAnswers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCannedAnswers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCannedAnswers" csv-label="true" filename="cannedAnswers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CANNEDANSWER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCannedAnswers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCannedAnswers">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'TOOLS.KEY\' | translate }}</th>\n                <th md-column md-order-by="value">{{ \'TOOLS.VALUE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.cannedAnswers.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="cannedAnswer" md-select-id="id" ng-repeat="cannedAnswer in vm.cannedAnswers.rows">\n                <td md-cell ng-if="cannedAnswer.userpic"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="api/users/{{cannedAnswer.id}}/avatar" /></td>\n                <td md-cell ng-if="!cannedAnswer.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{cannedAnswer.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="id ">{{cannedAnswer.id}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="key ">{{cannedAnswer.key}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="value ">{{cannedAnswer.value}}</td>\n                <td ng-click="vm.createOrEditCannedAnswer($event, cannedAnswer)" md-cell class="description ">{{cannedAnswer.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(cannedAnswer, $event    )" translate="TOOLS.EDIT_CANNEDANSWER">\n                          Edit CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(cannedAnswer, $event    )" translate="TOOLS.DELETE_CANNEDANSWER">\n                          Delete CannedAnswer\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.cannedAnswers.count}}" md-on-paginate="vm.getCannedAnswers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CANNEDANSWER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CANNEDANSWER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-cannedAnswer-button" ng-click="vm.createOrEditCannedAnswer($event)" aria-label="add cannedAnswer" translate translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CANNEDANSWER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/cannedAnswers/create/dialog.html",'<md-dialog class="cannedAnswer-dialog" aria-label="New CannedAnswer">\n  <form name="cannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.cannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="cannedAnswerForm[\'key\'].$error" ng-show="cannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 255}\'>Key must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.cannedAnswer.value" required></textarea>\n\n        <div ng-messages="cannedAnswerForm[\'value\'].$error" ng-show="cannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.cannedAnswer.description">\n\n        <div ng-messages="cannedAnswerForm[\'description\'].$error" ng-show="cannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCannedAnswer" ng-click="vm.saveCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid || cannedAnswerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCannedAnswer" ng-click="vm.addNewCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="cannedAnswerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CANNEDANSWER" translate-attr-aria-label="TOOLS.ADD_CANNEDANSWER">\n          ADD CANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCannedAnswer" ng-click="vm.deleteCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/contact_item_types/contact_item_types.html",'<div id="contact_item_types" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CONTACTITEMTYPE">ContactItemType</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContactItemType.length > 0" class="selected-bar header animate-slide-down md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContactItemType =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContactItemType($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable" ms-scroll>\n\n\n      \x3c!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/create/dialog.html",'<md-dialog class="customDashboard-dialog" aria-label="New CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.customDashboard.description">\n\n        <div ng-messages="customDashboardForm[\'description\'].$error" ng-show="customDashboardForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newCustomDashboard" ng-click="vm.saveCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid || customDashboardForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newCustomDashboard" ng-click="vm.addNewCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n          ADD CUSTOMDASHBOARD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newCustomDashboard" ng-click="vm.deleteCustomDashboard($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/customDashboards.html",'<div id="customDashboards" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.CUSTOMDASHBOARDS">CustomDashboards</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedCustomDashboards.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedCustomDashboards =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-customDashboards-count">\n          <span>{{vm.selectedCustomDashboards.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllCustomDashboards()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectCustomDashboards()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedCustomDashboards" csv-label="true" filename="customDashboards.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedCustomDashboards($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CUSTOMDASHBOARD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedCustomDashboards" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getCustomDashboards">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.customDashboards.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="customDashboard" md-select-id="id" ng-repeat="customDashboard in vm.customDashboards.rows">\n                <td md-cell ng-if="customDashboard.userpic"><img class="avatar" alt="{{customDashboard.name}}" ng-src="api/users/{{customDashboard.id}}/avatar" /></td>\n                <td md-cell ng-if="!customDashboard.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{customDashboard.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="id ">{{customDashboard.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="name ">{{customDashboard.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(customDashboard, ev) : vm.createOrEditCustomDashboard($event, customDashboard)" md-cell class="description ">{{customDashboard.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(customDashboard, $event    )" translate="TOOLS.EDIT_CUSTOMDASHBOARD">\n                          Edit CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(customDashboard, $event    )" translate="TOOLS.CLONE_CUSTOMDASHBOARD">\n                          clone CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotodashboardgoto(customDashboard, $event    )" translate="TOOLS.GOTODASHBOARD_CUSTOMDASHBOARD">\n                          goToDashboard CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(customDashboard, $event    )" translate="TOOLS.DELETE_CUSTOMDASHBOARD">\n                          Delete CustomDashboard\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.customDashboards.count}}" md-on-paginate="vm.getCustomDashboards" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CUSTOMDASHBOARD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CUSTOMDASHBOARD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-customDashboard-button" ng-click="vm.createOrEditCustomDashboard($event)" aria-label="add customDashboard" translate translate-attr-aria-label="TOOLS.ADD_CUSTOMDASHBOARD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CUSTOMDASHBOARD BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/customDashboards/edit/clone/clone.html",'<md-dialog class="customDashboard-dialog" aria-label="Clone CustomDashboard">\n  <form name="customDashboardForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus>\n\n        <div ng-messages="customDashboardForm[\'name\'].$error" ng-show="customDashboardForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneCustomDashboard()" class="send-button md-accent md-raised" ng-disabled="customDashboardForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_CUSTOMDASHBOARD" translate-attr-aria-label="TOOLS.CLONE_CUSTOMDASHBOARD">\n        CLONE CUSTOMDASHBOARD\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/dashboard/dialog.html",'<md-dialog class="dashboarditem-dialog" aria-label="New DashboardItem">\n  <form name="dashboarditemForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.dashboarditem.type" ng-change="vm.onTypeChange()" autofocus ng-disabled="!vm.newDashboardItem">\n\n          <md-option ng-value="\'counter\'"> {{ \'TOOLS.COUNTER\' | translate }} </md-option>\n\n          <md-option ng-value="\'multibar-chart\'"> {{ \'TOOLS.MULTIBARCHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'pie-chart\'"> {{ \'TOOLS.PIECHART\' | translate }} </md-option>\n\n          <md-option ng-value="\'web-report\'"> {{ \'TOOLS.WEBREPORT\' | translate }} </md-option>\n\n          <md-option ng-value="\'iframe\'"> {{ \'TOOLS.IFRAME\' | translate }} </md-option>\n\n          <md-option ng-value="\'clock\'"> {{ \'TOOLS.CLOCK\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'TOOLS.CUSTOMTYPE\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'type\'].$error" ng-show="dashboarditemForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" class="md-block">\n        <label translate="TOOLS.FILTERVOICEQUEUES">FilterVoiceQueues</label>\n        <md-select name="attrVoiceQueues" ng-model="vm.dashboarditem.attrVoiceQueues" multiple>\n          <md-option ng-value="attrVoiceQueues.id" ng-repeat="attrVoiceQueues in vm.voiceQueues" ng-disabled="attrVoiceQueues.canSelect === false">{{ attrVoiceQueues.name }}</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrVoiceQueues\'].$error" ng-show="dashboarditemForm[\'attrVoiceQueues\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FILTERVOICEQUEUES_REQUIRED">FilterVoiceQueues field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLE">Title</label>\n        <input type="text" name="title" ng-model="vm.dashboarditem.title" md-maxlength="255" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'title\'].$error" ng-show="dashboarditemForm[\'title\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLE_REQUIRED">Title field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.TITLE_MAX_LENGTH" translate-values=\'{max: 255}\'>Title must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TITLEFONTSIZE">TitleFontSize</label>\n        <input type="number" name="titleFontSize" ng-model="vm.dashboarditem.titleFontSize" value="12">\n\n        <div ng-messages="dashboarditemForm[\'titleFontSize\'].$error" ng-show="dashboarditemForm[\'titleFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TITLEFONTSIZE_REQUIRED">TitleFontSize field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'iframe\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="attrUrl" ng-model="vm.dashboarditem.attrUrl" value="https://" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrUrl\'].$error" ng-show="dashboarditemForm[\'attrUrl\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'custom\'" class="md-block">\n        <label translate="TOOLS.PATH">Path</label>\n        <input type="text" name="attrPath" ng-model="vm.dashboarditem.attrPath" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrPath\'].$error" ng-show="dashboarditemForm[\'attrPath\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PATH_REQUIRED">Path field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.FORMAT">Format</label>\n        <input type="text" name="attrHourFormat" ng-model="vm.dashboarditem.attrHourFormat" value="HH:mm:ss" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrHourFormat\'].$error" ng-show="dashboarditemForm[\'attrHourFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FORMAT_REQUIRED">Format field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'clock\'" class="md-block">\n        <label translate="TOOLS.TIMEZONE">Timezone</label>\n        <md-select name="attrTimezone" ng-model="vm.dashboarditem.attrTimezone" required>\n          <md-option ng-value="\'-12.00\'">GMT-12.00</md-option>\n          <md-option ng-value="\'-11.00\'">GMT-11.00</md-option>\n          <md-option ng-value="\'-10.00\'">GMT-10.00</md-option>\n          <md-option ng-value="\'-9.00\'">GMT-9.00</md-option>\n          <md-option ng-value="\'-8.00\'">GMT-8.00</md-option>\n          <md-option ng-value="\'-7.00\'">GMT-7.00</md-option>\n          <md-option ng-value="\'-6.00\'">GMT-6.00</md-option>\n          <md-option ng-value="\'-5.00\'">GMT-5.00</md-option>\n          <md-option ng-value="\'-4.00\'">GMT-4.00</md-option>\n          <md-option ng-value="\'-3.30\'">GMT-3.30</md-option>\n          <md-option ng-value="\'-3.00\'">GMT-3.00</md-option>\n          <md-option ng-value="\'-2.00\'">GMT-2.00</md-option>\n          <md-option ng-value="\'-1.00\'">GMT-1.00</md-option>\n          <md-option ng-value="\'0.00\'">GMT 0.00</md-option>\n          <md-option ng-value="\'1.00\'">GMT+1.00</md-option>\n          <md-option ng-value="\'2.00\'">GMT+2.00</md-option>\n          <md-option ng-value="\'3.00\'">GMT+3.00</md-option>\n          <md-option ng-value="\'3.30\'">GMT+3.30</md-option>\n          <md-option ng-value="\'4.00\'">GMT+4.00</md-option>\n          <md-option ng-value="\'4.30\'">GMT+4.30</md-option>\n          <md-option ng-value="\'5.00\'">GMT+5.00</md-option>\n          <md-option ng-value="\'5.30\'">GMT+5.30</md-option>\n          <md-option ng-value="\'5.45\'">GMT+5.45</md-option>\n          <md-option ng-value="\'6.00\'">GMT+6.00</md-option>\n          <md-option ng-value="\'6.30\'">GMT+6.30</md-option>\n          <md-option ng-value="\'7.00\'">GMT+7.00</md-option>\n          <md-option ng-value="\'8.00\'">GMT+8.00</md-option>\n          <md-option ng-value="\'9.00\'">GMT+9.00</md-option>\n          <md-option ng-value="\'9.30\'">GMT+9.30</md-option>\n          <md-option ng-value="\'10.00\'">GMT+10.00</md-option>\n          <md-option ng-value="\'11.00\'">GMT+11.00</md-option>\n          <md-option ng-value="\'12.00\'">GMT+12.00</md-option>\n          <md-option ng-value="\'13.00\'">GMT+13.00</md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrTimezone\'].$error" ng-show="dashboarditemForm[\'attrTimezone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEZONE_REQUIRED">Timezone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type === \'counter\'" class="md-block">\n        <label translate="TOOLS.METRIC">Metric</label>\n        <md-select name="attrMetric" ng-model="vm.dashboarditem.attrMetric" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrMetric\'].$error" ng-show="dashboarditemForm[\'attrMetric\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.METRIC_REQUIRED">Metric field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE1">Serie1</label>\n        <md-select name="attrSerie1" ng-model="vm.dashboarditem.attrSerie1" required>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie1\'].$error" ng-show="dashboarditemForm[\'attrSerie1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE1_REQUIRED">Serie1 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE2">Serie2</label>\n        <md-select name="attrSerie2" ng-model="vm.dashboarditem.attrSerie2">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie2\'].$error" ng-show="dashboarditemForm[\'attrSerie2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE2_REQUIRED">Serie2 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.SERIE3">Serie3</label>\n        <md-select name="attrSerie3" ng-model="vm.dashboarditem.attrSerie3">\n\n          <md-option ng-value="\'null\'"> {{ \'TOOLS.NONE\' | translate }} </md-option>\n\n          <md-option ng-value="\'total\'"> {{ \'TOOLS.TOTAL\' | translate }} </md-option>\n\n          <md-option ng-value="\'abandoned\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrSerie3\'].$error" ng-show="dashboarditemForm[\'attrSerie3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SERIE3_REQUIRED">Serie3 field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.dashboarditem.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="dashboarditemForm[\'report\'].$error" ng-show="dashboarditemForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.dashboarditem.type == \'web-report\'" class="md-block">\n        <label translate="TOOLS.REFRESH">Refresh</label>\n        <input type="number" name="attrRefresh" ng-model="vm.dashboarditem.attrRefresh" min="5" value="10" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrRefresh\'].$error" ng-show="dashboarditemForm[\'attrRefresh\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REFRESH_REQUIRED">Refresh field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Refresh must be a valid greater or equal than</span> <span>5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="[\'counter\', \'clock\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.FONTSIZE">FontSize</label>\n        <input type="number" name="attrFontSize" ng-model="vm.dashboarditem.attrFontSize" min="12" max="40" value="20" ng-required="true">\n\n        <div ng-messages="dashboarditemForm[\'attrFontSize\'].$error" ng-show="dashboarditemForm[\'attrFontSize\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FONTSIZE_REQUIRED">FontSize field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>12</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO">FontSize must be a valid greater or equal than</span> <span>40</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.dashboarditem.foreground" label="{{\'TOOLS.FOREGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <div flex md-color-picker ng-model="vm.dashboarditem.background" label="{{\'TOOLS.BACKGROUND\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LINK">link</label>\n        <input type="url" name="link" ng-model="vm.dashboarditem.link">\n\n        <div ng-messages="dashboarditemForm[\'link\'].$error" ng-show="dashboarditemForm[\'link\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LINK_REQUIRED">link field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.LINK_MUST_VALID_URL">link must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDashboardItem" ng-click="vm.saveDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid || dashboarditemForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDashboardItem" ng-click="vm.addNewDashboardItem()" class="send-button md-accent md-raised" ng-disabled="dashboarditemForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DASHBOARDITEM" translate-attr-aria-label="TOOLS.ADD_DASHBOARDITEM">\n          ADD DASHBOARDITEM\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDashboardItem" ng-click="vm.deleteDashboardItem($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/customDashboards/edit/view.html",'<div id="tools-customDashboard" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-customDashboards-button md-icon-button" aria-label="Go to customDashboards" ng-click="vm.gotoCustomDashboards()" translate translate-attr-aria-label="TOOLS.GO_TO_CUSTOMDASHBOARDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="customDashboard-image" hide-xs>\n          <img ng-src="assets/images/business/customDashboards.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.customDashboard.id}}\n            <span ng-if="vm.customDashboard.name">{{vm.customDashboard.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.customDashboard.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.customDashboard, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.customDashboard, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_CUSTOMDASHBOARD"></span></md-tooltip>\n        <md-icon md-font-icon="icon-forward"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveCustomDashboard()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (dashboardForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.customDashboard.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.customDashboard.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.DASHBOARD">DASHBOARD</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="customDashboard-detail-form-container dashboard md-background-bg md-whiteframe-1dp">\n            <div ng-controller="CustomDashboardItemsController as vm_cd" ng-init="vm_cd.init(vm.customDashboard, vm.crudPermissions)" class="customDashboard-detail-form-container no-padding no-margin" layout="column">\n              <div ng-if="vm_cd.customDashboard.widgets.length">\n                <md-button class="md-fab md-mini md-accent" ng-click="vm_cd.createOrEditWidget()" ng-if="vm_cd.crudPermissions.canEdit" aria-label="add item">\n                  <md-tooltip>{{ \'TOOLS.ADD_WIDGET\' | translate }}</md-tooltip>\n                  <md-icon md-font-icon="icon-plus"></md-icon>\n                </md-button>\n                <md-content flex>\n                  <ms-widget-engine config="vm_cd.customDashboard" on-edit="vm_cd.createOrEditWidget(widget)" on-delete="vm_cd.deleteWidget(widget)"></ms-widget-engine>\n                </md-content>\n              </div>\n              <div ng-if="!vm_cd.customDashboard.widgets.length" layout="row" layout-align="center center" flex>\n                <md-button class="width-130 height-130 md-accent md-raised" ng-click="vm_cd.createOrEditWidget()" aria-label="add item" layout="column">\n                  <md-icon md-font-icon="icon-plus-circle" class="s50"></md-icon>\n                  <span layout-wrap translate="TOOLS.ADD_WIDGET"></span>\n                </md-button>\n              </div>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/customDashboards/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/create/dialog.html",'<md-dialog ng-init="vm.onInit()" class="disposition-dialog" aria-label="New Disposition">\n  <form name="dispositionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newDisposition ? \'TOOLS.NEW_DISPOSITION\' : \'TOOLS.EDIT_DISPOSITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.disposition.name" md-maxlength="255" required md-autofocus>\n        <div ng-messages="dispositionForm[\'name\'].$error" ng-show="dispositionForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.NAME_MAX_LENGTH" translate-values=\'{max: 255}\'>Name must have a maximum length\n              equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.disposition.description" md-maxlength="255">\n        <div ng-messages="dispositionForm[\'description\'].$error" ng-show="dispositionForm[\'description\'].$touched" role="alert">\n          <div ng-message="md-maxlength">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_MAX_LENGTH" translate-values=\'{max: 255}\'>Description must have a\n              maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div ng-if="vm.newDisposition && vm.dispositions.length > 0 || vm.disposition.ParentId" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.FIRST_LEVEL_DISPOSITION">First Level Disposition</label>\n          <md-select name="firstLevelDisposition" ng-model="vm.firstLevelDisposition" ng-change="vm.onFirstLevelSelection()">\n            <md-option ng-value="disposition" ng-repeat="disposition in vm.dispositions | filter: { level: \'first\' }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.firstLevelDisposition" ng-click="vm.clearSelection(\'first\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div ng-if="vm.firstLevelDisposition && vm.anySecondLevelDisposition" layout="row" layout-align="start center">\n        <md-input-container class="md-block" flex>\n          <label translate="TOOLS.SECOND_LEVEL_DISPOSITION">Second Level Disposition</label>\n          <md-select name="secondLevelDisposition" ng-model="vm.secondLevelDisposition">\n            <md-option ng-value="disposition" ng-if="disposition.id != vm.disposition.id" ng-repeat="disposition in vm.dispositions | filter: { level: \'second\', ParentId: vm.firstLevelDisposition.id }" ng-disabled="disposition.canSelect === false">{{ disposition.name }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-button ng-if="vm.secondLevelDisposition" ng-click="vm.clearSelection(\'second\'); dispositionForm.$setDirty();" class="md-icon-button">\n          <md-icon md-font-icon="icon-cancel" aria-label="Clear first level disposition selection">\n          </md-icon>\n        </md-button>\n      </div>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newDisposition" ng-click="vm.saveDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid || dispositionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newDisposition" ng-click="vm.addNewDisposition()" class="send-button md-accent md-raised" ng-disabled="dispositionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_DISPOSITION" translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n          ADD DISPOSITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newDisposition" ng-click="vm.deleteDisposition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/dispositions/dispositions.html",'<div id="dispositions" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.DISPOSITIONS">Dispositions</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedDispositions.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedDispositions = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-dispositions-count">\n          <span>{{vm.selectedDispositions.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllDispositions()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectDispositions()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedDispositions" csv-label="true" filename="dispositions.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      <div layout="row">\n        <div class="column" flex="20">\n          <md-card>\n            <md-card-content>\n              <button layout-align="center center" md-mini-fab ng-click="vm.query.level = null; vm.getDispositions()">\n                <div layout="row" layout-align="start center">\n                  <md-icon md-font-icon="icon-refresh"></md-icon>\n                  <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                </div>\n              </button>\n            </md-card-content>\n          </md-card>\n          <md-card>\n            <md-card-content>\n              <md-input-container class="md-block" flex-gt-sm="">\n                <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm.query.level" ng-change="vm.getDispositions()">\n                  <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                  <md-option ng-value="key" ng-repeat="(key, value) in vm.levels">{{ value }}</md-option>\n                </md-select>\n              </md-input-container>\n            </md-card-content>\n          </md-card>\n        </div>\n        \x3c!-- DISPOSITION TABLE --\x3e\n        <md-card flex="80">\n          <md-table-container>\n            <table md-table md-row-select multiple ng-model="vm.selectedDispositions" md-progress="vm.promise">\n              <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getDispositions">\n                <tr md-row>\n                  <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                  <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                  <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                  <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                  <th md-column width="10px"></th>\n                </tr>\n              </thead>\n              <tbody md-body>\n                <tr md-row ng-hide="vm.dispositions.rows.length">\n                  <td md-cell colspan="5">\n                    <div layout="row" layout-align="center center">\n                      <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                    </div>\n                  </td>\n                </tr>\n                <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm.dispositions.rows">\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                  </td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                    {{ vm.levels[disposition.level] }}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                    {{disposition.name}}</td>\n                  <td ng-click="vm.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                    {{disposition.description}}</td>\n                  <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                    <md-menu>\n                      <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                        <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                      </md-button>\n                      <md-menu-content width="3">\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                          <md-button ng-click="vm.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                            Edit Disposition\n                          </md-button>\n                        </md-menu-item>\n                        \x3c!-- SUBACTIONS --\x3e\n                        \x3c!-- ACTIONS --\x3e\n                        <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                          <md-button ng-click="vm.deleteconfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                            Delete Disposition\n                          </md-button>\n                        </md-menu-item>\n                      </md-menu-content>\n                    </md-menu>\n                  </td>\n                </tr>\n              </tbody>\n            </table>\n          </md-table-container>\n          <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.dispositions.count}}" md-on-paginate="vm.getDispositions" md-page-select>\n          </md-table-pagination>\n        </md-card>\n        \x3c!-- / DISPOSITION TABLE --\x3e\n      </div>\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD DISPOSITION BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-disposition-button" ng-click="vm.createOrEditDisposition($event)" aria-label="add disposition" translate translate-attr-aria-label="TOOLS.ADD_DISPOSITION">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD DISPOSITION BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/intervals/create/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.interval.description">\n\n        <div ng-messages="intervalForm[\'description\'].$error" ng-show="intervalForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input ng-model="vm.interval.name" type="text" name="name" placeholder="{{\'TOOLS.NAME\' | translate}}" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" md-autofocus required>\n        <div ng-messages="intervalForm.name.$error" ng-show="intervalForm.name.$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/intervals/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="" name="name" ng-model="vm.interval.name" ng-required="true" autofocus>\n\n        <div ng-messages="intervalForm[\'name\'].$error" ng-show="intervalForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInterval" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInterval" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInterval" ng-click="vm.deleteInterval($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/intervals/edit/view.html",'<div id="tools-interval" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-intervals-button md-icon-button" aria-label="Go to intervals" ng-click="vm.gotoIntervals()" translate translate-attr-aria-label="TOOLS.GO_TO_INTERVALS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="interval-image" hide-xs>\n          <img ng-src="assets/images/business/intervals.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.interval.id}}\n            <span ng-if="vm.interval.name">{{vm.interval.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.interval.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInterval()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (intervalsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.interval.name" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.interval.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.INTERVALS">INTERVALS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="interval-detail-form-container intervals md-background-bg md-whiteframe-1dp">\n            <div ng-controller="IntervalIntervalsController as vm_dc" ng-init="vm_dc.init(vm.interval, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="TOOLS.INTERVALS">Intervals</span>\n                  <ms-search-bar on-search="vm_dc.getIntervalIntervals()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditIntervalInterval($event)" aria-label="add interval" translate translate-attr-label="TOOLS.ADD_INTERVAL">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedIntervalIntervals.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedIntervalIntervals.length}} {{vm_dc.selectedIntervalIntervals.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedIntervalIntervals" csv-label="true" filename="intervals.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedIntervalIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedIntervalIntervals" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getIntervalIntervals">\n                    <tr md-row>\n                      <th md-column width="10px"></th>\n                      <th md-column md-order-by="id">\n                        {{ \'TOOLS.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="name">\n                        {{ \'TOOLS.NAME\' | translate }}\n                      </th>\n                      <th md-column md-order-by="interval">\n                        {{ \'TOOLS.INTERVAL\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'TOOLS.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body ng-sortable="vm_dc.sortableTable">\n                    <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm_dc.intervalIntervals.rows">\n                      <td md-cell>\n                        <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.name}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{interval.interval}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" md-cell>\n                        {{ interval.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditIntervalInterval($event, interval)" translate="TOOLS.EDIT_INTERVAL">\n                                Edit Interval\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interval, $event)" translate="TOOLS.DELETE_INTERVAL">\n                                Delete Interval\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.intervalIntervals.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="TOOLS.NO_INTERVALS_AVAILABLE">No intervals available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/intervals/intervals.html",'<div id="intervals" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.INTERVALS">Intervals</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedIntervals.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedIntervals =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-intervals-count">\n          <span>{{vm.selectedIntervals.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllIntervals()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectIntervals()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedIntervals" csv-label="true" filename="intervals.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedIntervals($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- INTERVAL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedIntervals" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getIntervals">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.intervals.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="interval" md-select-id="id" ng-repeat="interval in vm.intervals.rows">\n                <td md-cell ng-if="interval.userpic"><img class="avatar" alt="{{interval.name}}" ng-src="api/users/{{interval.id}}/avatar" /></td>\n                <td md-cell ng-if="!interval.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{interval.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="id ">{{interval.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="name ">{{interval.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(interval, ev) : vm.createOrEditInterval($event, interval)" md-cell class="description ">{{interval.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(interval, $event    )" translate="TOOLS.EDIT_INTERVAL">\n                          Edit Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(interval, $event    )" translate="TOOLS.DELETE_INTERVAL">\n                          Delete Interval\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.intervals.count}}" md-on-paginate="vm.getIntervals" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / INTERVAL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD INTERVAL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-interval-button" ng-click="vm.createOrEditInterval($event)" aria-label="add interval" translate translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD INTERVAL BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/pauses/create/dialog.html",'<md-dialog class="pause-dialog" aria-label="New Pause">\n  <form name="pauseForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.pause.name" ng-required="true" autofocus>\n\n        <div ng-messages="pauseForm[\'name\'].$error" ng-show="pauseForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.pause.description">\n\n        <div ng-messages="pauseForm[\'description\'].$error" ng-show="pauseForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newPause" ng-click="vm.savePause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid || pauseForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newPause" ng-click="vm.addNewPause()" class="send-button md-accent md-raised" ng-disabled="pauseForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_PAUSE" translate-attr-aria-label="TOOLS.ADD_PAUSE">\n          ADD PAUSE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newPause" ng-click="vm.deletePause($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/pauses/pauses.html",'<div id="pauses" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.PAUSES">Pauses</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedPauses.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedPauses =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-pauses-count">\n          <span>{{vm.selectedPauses.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllPauses()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectPauses()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedPauses" csv-label="true" filename="pauses.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedPauses($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- PAUSE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedPauses" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getPauses">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.pauses.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="pause" md-select-id="id" ng-repeat="pause in vm.pauses.rows">\n                <td md-cell ng-if="pause.userpic"><img class="avatar" alt="{{pause.name}}" ng-src="api/users/{{pause.id}}/avatar" /></td>\n                <td md-cell ng-if="!pause.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{pause.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="id ">{{pause.id}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="name ">{{pause.name}}</td>\n                <td ng-click="vm.createOrEditPause($event, pause)" md-cell class="description ">{{pause.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(pause, $event    )" translate="TOOLS.EDIT_PAUSE">\n                          Edit Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(pause, $event    )" translate="TOOLS.DELETE_PAUSE">\n                          Delete Pause\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.pauses.count}}" md-on-paginate="vm.getPauses" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / PAUSE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD PAUSE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-pause-button" ng-click="vm.createOrEditPause($event)" aria-label="add pause" translate translate-attr-aria-label="TOOLS.ADD_PAUSE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD PAUSE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/schedules/create/dialog.html",'<md-dialog class="schedule-dialog" aria-label="New Schedule">\n  <form name="scheduleForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.schedule.name" ng-required="true" autofocus>\n\n        <div ng-messages="scheduleForm[\'name\'].$error" ng-show="scheduleForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REPORT">Report</label>\n        <input type="search" name="report" ng-model="vm.schedule.report" ng-required="true" autocomplete="off" ng-click="vm.searchReport()">\n        <md-icon md-font-icon="icon-magnify" ng-click="vm.searchReport()" aria-label="Search Report"></md-icon>\n        <div ng-messages="scheduleForm[\'report\'].$error" ng-show="scheduleForm[\'report\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REPORT_REQUIRED">Report field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OUTPUT">Output</label>\n        <md-select name="output" ng-model="vm.schedule.output" required>\n          <md-option ng-value="\'csv\'">CSV</md-option>\n          <md-option ng-value="\'pdf\'">PDF</md-option>\n          <md-option ng-value="\'xlsx\'">Excel</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'output\'].$error" ng-show="scheduleForm[\'output\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTPUT_REQUIRED">Output field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.active" aria-label="Active"><span translate="TOOLS.ACTIVE">Active</span></md-switch>\n      </md-input-container>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYSTART">ValidityStart</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="startAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="startAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.startAt" ng-init="vm.schedule.startAt = vm.getDateFromString(vm.schedule.startAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div class="md-block">\n        <label translate="TOOLS.VALIDITYEND">ValidityEnd</label>\n        <md-content layout="row" class="md-padding">\n          <div flex class="md-block">\n            <mdp-date-picker mdp-open-on-click required name="endAtDate" mdp-placeholder="Date" mdp-format="YYYY-MM-DD" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.dateRangeFrom.$error" ng-show="scheduleForm.dateRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.DATE_REQUIRED">Date is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.DATE_INVALID">Date is invalid</span>\n                </div>\n              </div>\n            </mdp-date-picker>\n          </div>\n          <div flex class="md-block">\n            <mdp-time-picker mdp-open-on-click required name="endAtTime" mdp-placeholder="Time" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.schedule.endAt" ng-init="vm.schedule.endAt = vm.getDateFromString(vm.schedule.endAt)">\n              <div ng-messages="scheduleForm.timeRangeFrom.$error" ng-show="scheduleForm.timeRangeFrom.$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="TOOLS.ERRORS.TIME_REQUIRED">Time is required</span>\n                </div>\n                <div ng-message="format">\n                  <span translate="TOOLS.ERRORS.TIME_INVALID">Time is invalid</span>\n                </div>\n              </div>\n            </mdp-time-picker>\n          </div>\n        </md-content>\n      </div>\n      <div flex class="md-block">\n        <label> {{ \'TOOLS.CRON\' | translate }} ({{vm.schedule.cron}})</label>\n        <cron-selection name="cron" ng-model="vm.schedule.cron" template="assets/angular-cron-jobs/template.html" required></cron-selection>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LAST">Last</label>\n        <input type="number" name="subtractNumber" ng-model="vm.schedule.subtractNumber" value="1" ng-required="true">\n\n        <div ng-messages="scheduleForm[\'subtractNumber\'].$error" ng-show="scheduleForm[\'subtractNumber\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LAST_REQUIRED">Last field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.LASTUNIT">LastUnit</label>\n        <md-select name="subtractUnit" ng-model="vm.schedule.subtractUnit" required>\n          <md-option ng-value="\'minutes\'">Minutes</md-option>\n          <md-option ng-value="\'hours\'">Hours</md-option>\n          <md-option ng-value="\'days\'">Days</md-option>\n          <md-option ng-value="\'weeks\'">Weeks</md-option>\n          <md-option ng-value="\'months\'">Months</md-option>\n          <md-option ng-value="\'quarters\'">Quarters</md-option>\n          <md-option ng-value="\'years\'">Years</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'subtractUnit\'].$error" ng-show="scheduleForm[\'subtractUnit\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LASTUNIT_REQUIRED">LastUnit field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.schedule.sendMail" aria-label="SendMail"><span translate="TOOLS.SENDMAIL">SendMail</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.MAILACCOUNT">MailAccount</label>\n        <md-select name="MailAccountId" ng-model="vm.schedule.MailAccountId" required>\n          <md-option ng-value="MailAccountId.id" ng-repeat="MailAccountId in vm.mailAccounts" ng-disabled="MailAccountId.canSelect === false">{{ MailAccountId.name }}</md-option>\n        </md-select>\n        <div ng-messages="scheduleForm[\'MailAccountId\'].$error" ng-show="scheduleForm[\'MailAccountId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.MAILACCOUNT_REQUIRED">MailAccount field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILADDRESS">EmailAddress</label>\n        <input type="text" name="email" ng-model="vm.schedule.email" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'email\'].$error" ng-show="scheduleForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILADDRESS_REQUIRED">EmailAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILCCADDRESS">EmailCcAddress</label>\n        <input type="text" name="cc" ng-model="vm.schedule.cc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'cc\'].$error" ng-show="scheduleForm[\'cc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILCCADDRESS_REQUIRED">EmailCcAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <label translate="TOOLS.EMAILBCCADDRESS">EmailBccAddress</label>\n        <input type="text" name="bcc" ng-model="vm.schedule.bcc">\n\n        <div class="hint"><span translate="TOOLS.HELP.EMAILBCCADDRESS"></span></div>\n        <div ng-messages="scheduleForm[\'bcc\'].$error" ng-show="scheduleForm[\'bcc\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EMAILBCCADDRESS_REQUIRED">EmailBccAddress field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.schedule.sendMail" class="md-block">\n        <md-switch ng-model="vm.schedule.sendIfEmpty" aria-label="SendIfEmpty"><span translate="TOOLS.SENDIFEMPTY">SendIfEmpty</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="" name="description" ng-model="vm.schedule.description">\n\n        <div ng-messages="scheduleForm[\'description\'].$error" ng-show="scheduleForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSchedule" ng-click="vm.saveSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid || scheduleForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSchedule" ng-click="vm.addNewSchedule()" class="send-button md-accent md-raised" ng-disabled="scheduleForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SCHEDULE" translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n          ADD SCHEDULE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSchedule" ng-click="vm.deleteSchedule($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/partialViews/reports/treeReports.html",'<md-dialog class="report-selection-dialog" aria-label="Report Selection" flex="60">\n  <md-toolbar>\n    <div class="md-toolbar-tools">\n      <h2>Select Report</h2>\n      <span flex></span>\n      <md-button class="md-icon-button" ng-click="vm.closeReportDialog()">\n        <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n\n  <md-dialog-content>\n    <div class="content" md-background-bg layout="row" layout-align="start start">\n      <div layout="column" flex="30">\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeDefaultEvents" ng-model="vm.treeDefaultData" tree="vm.treeDefaultInstance"></div>\n        </md-card>\n        <md-card class="padding-10 scrollable">\n          <div js-tree="vm.treeConfig" tree-events-obj="vm.treeCustomEvents" ng-model="vm.treeCustomData" tree="vm.treeCustomInstance"></div>\n        </md-card>\n      </div>\n      <md-card flex="70">\n        <md-toolbar class="md-table-toolbar md-default">\n          <div class="md-toolbar-tools">\n            <span class="h2 secondary-text">{{vm.currentNode.text}}</span>\n            <p ng-if="vm.currentPath">\n              <span class="text-boxed">{{vm.currentPath}}</span>\n            </p>\n          </div>\n        </md-toolbar>\n        <md-table-container>\n          <table md-table md-row-select ng-model="vm.selectedReport" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getReports">\n              <tr md-row>\n                <th md-column md-order-by="id" width="10px">{{ "ANALYTICS.ID" | translate }}</th>\n                <th md-column md-order-by="name">{{ "ANALYTICS.NAME" | translate }}</th>\n                <th md-column md-order-by="description">{{ "ANALYTICS.DESCRIPTION" | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ "ANALYTICS.CREATED_AT" | translate }}</th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.reports.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="ANALYTICS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="report" md-select-id="id" ng-repeat="report in vm.reports.rows">\n                <td md-cell class="id">{{ report.id }}</td>\n                <td md-cell class="name">{{ report.name }}</td>\n                <td md-cell class="description">{{ report.description }}</td>\n                <td md-cell class="createdAt">{{ report.createdAt | date: "medium" }}</td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{ \'ANALYTICS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'ANALYTICS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'ANALYTICS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10]" md-page="vm.query.page" md-total="{{ vm.reports.count }}" md-on-paginate="vm.getReports" md-page-select></md-table-pagination>\n      </md-card>\n    </div>\n  </md-dialog-content>\n  <md-dialog-actions layout="row">\n    <span flex></span>\n    <md-button class="md-raised" ng-click="vm.closeReportDialog()">CANCEL</md-button>\n    <md-button class="md-accent md-raised" ng-click="vm.selectReport()">CONFIRM</md-button>\n  </md-dialog-actions>\n</md-dialog>'),e.put("app/main/apps/tools/views/schedules/schedules.html",'<div id="schedules" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SCHEDULER">Scheduler</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScheduler.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScheduler =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-schedules-count">\n          <span>{{vm.selectedScheduler.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScheduler()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScheduler()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScheduler" csv-label="true" filename="schedules.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScheduler($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCHEDULE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScheduler" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScheduler">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="startAt">{{ \'TOOLS.VALIDITYSTART\' | translate }}</th>\n                <th md-column md-order-by="endAt">{{ \'TOOLS.VALIDITYEND\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.schedules.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="schedule" md-select-id="id" ng-repeat="schedule in vm.schedules.rows">\n                <td md-cell ng-if="schedule.userpic"><img class="avatar" alt="{{schedule.name}}" ng-src="api/users/{{schedule.id}}/avatar" /></td>\n                <td md-cell ng-if="!schedule.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{schedule.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="id ">{{schedule.id}}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="name ">{{schedule.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(schedule, ev) : vm.createOrEditSchedule($event, schedule)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{schedule.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{schedule.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="startAt ">{{schedule.startAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="endAt ">{{schedule.endAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditSchedule($event, schedule)" md-cell class="description ">{{schedule.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(schedule, $event    )" translate="TOOLS.EDIT_SCHEDULE">\n                          Edit Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.runconfirm(schedule, $event    )" translate="TOOLS.RUN_SCHEDULE">\n                          Run Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(schedule, $event    )" translate="TOOLS.DELETE_SCHEDULE">\n                          Delete Schedule\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.schedules.count}}" md-on-paginate="vm.getScheduler" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCHEDULE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD SCHEDULE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-schedule-button" ng-click="vm.createOrEditSchedule($event)" aria-label="add schedule" translate translate-attr-aria-label="TOOLS.ADD_SCHEDULE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD SCHEDULE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/create/dialog.html",'<md-dialog class="sound-dialog" aria-label="New Sound">\n  <form name="soundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.sound.name" ng-required="true" autofocus>\n\n        <div ng-messages="soundForm[\'name\'].$error" ng-show="soundForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.sound.description">\n\n        <div ng-messages="soundForm[\'description\'].$error" ng-show="soundForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newSound" ng-click="vm.saveSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid || soundForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newSound" ng-click="vm.addNewSound()" class="send-button md-accent md-raised" ng-disabled="soundForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_SOUND" translate-attr-aria-label="TOOLS.ADD_SOUND">\n          ADD SOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newSound" ng-click="vm.deleteSound($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/sounds/sounds.html",'<div id="sounds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.SOUNDS">Sounds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedSounds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedSounds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-sounds-count">\n          <span>{{vm.selectedSounds.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllSounds()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectSounds()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedSounds" csv-label="true" filename="sounds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedSounds($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SOUND TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedSounds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getSounds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="audio">{{ \'TOOLS.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.sounds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="sound" md-select-id="id" ng-repeat="sound in vm.sounds.rows">\n                <td md-cell ng-if="sound.userpic"><img class="avatar" alt="{{sound.name}}" ng-src="api/users/{{sound.id}}/avatar" /></td>\n                <td md-cell ng-if="!sound.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{sound.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="id ">{{sound.id}}</td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="name ">{{sound.name}}</td>\n                <td md-cell class="audio ">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording id="sound.id" model="\'sound\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                </td>\n                <td ng-click="vm.createOrEditSound($event, sound)" md-cell class="description ">{{sound.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(sound, $event    )" translate="TOOLS.EDIT_SOUND">\n                          Edit Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.downloadfile2(sound, $event  , \'sounds\'   )" translate="TOOLS.DOWNLOAD_SOUND">\n                          Download Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(sound, $event    )" translate="TOOLS.DELETE_SOUND">\n                          Delete Sound\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.sounds.count}}" md-on-paginate="vm.getSounds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SOUND TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- UPLOAD SOUND BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="upload-sound-button" ng-click="vm.uploadSound($event)" aria-label="upload sound" translate translate-attr-aria-label="TOOLS.UPLOAD_SOUND">\n    <md-icon md-font-icon="icon-upload"></md-icon>\n  </md-button>\n  \x3c!-- / UPLOAD SOUND BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/sounds/upload/dialog.html",'<md-dialog class="upload-dialog" aria-label="Upload ">\n  <form name="uploadForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div id="sound-uploader" ng-hide="vm.uploadState == \'uploading\'" flow-init="vm.ngFlowOptions" flow-name="vm.ngFlow.flow" flow-files-submitted="vm.upload()" flow-file-added="vm.fileAdded($file)" flow-file-success="vm.fileSuccess($file, $message)" flow-error="vm.uploadError($file, $message)" flow-complete="vm.uploadComplete()" flow-drop flow-drag-enter="vm.dropping=true" flow-drag-leave="vm.dropping=false" ng-class="{\'dropping\':vm.dropping}">\n\n        <div class="drop-text hint-text" layout="row" layout-align="center center">\n          <span translate="TOOLS.DROP_TO_UPLOAD">Drop to upload</span>\n        </div>\n\n        <div class="upload-button" layout="column" layout-align="center center">\n          <md-button class="md-accent md-raised" flow-btn>\n            Upload\n          </md-button>\n          <span class="secondary-text mt-8" translate="TOOLS.DROP_TO_UPLOAD_MESSAGE">You can also drop your file here to upload.</span>\n        </div>\n      </div>\n\n      <div layout="column" layout-align="space-between center" ng-show="vm.uploadState == \'uploading\'">\n        <div>\n          <span translate="TOOLS.UPLOADING">Uploading</span>\n          <span>{{vm.sound.file.name}}</span>\n        </div>\n        <md-progress-linear md-mode="indeterminate"></md-progress-linear>\n      </div>\n\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center"></div>\n      <div layout="row">\n        <md-button ng-click="vm.closeDialog()" ng-hide="vm.uploadState == \'uploading\'" class="md-accent md-raised" aria-label="FINISH" translate="TOOLS.FINISH" translate-attr-aria-label="TOOLS.FINISH">\n          FINISH\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/create/dialog.html",'<md-dialog class="tag-dialog" aria-label="New Tag">\n  <form name="tagForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.tag.name" ng-required="true" autofocus>\n\n        <div ng-messages="tagForm[\'name\'].$error" ng-show="tagForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.tag.description">\n\n        <div ng-messages="tagForm[\'description\'].$error" ng-show="tagForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.tag.color" label="{{\'TOOLS.COLOR\' | translate}}" md-color-hex="true" md-color-rgb="false" md-color-hsl="false" md-color-history="false" md-color-material-palette="false" md-color-alpha-channel="false" open-on-input="true"></div>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTag" ng-click="vm.saveTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid || tagForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTag" ng-click="vm.addNewTag()" class="send-button md-accent md-raised" ng-disabled="tagForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TAG" translate-attr-aria-label="TOOLS.ADD_TAG">\n          ADD TAG\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTag" ng-click="vm.deleteTag($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/tags/tags.html",'<div id="tags" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TAGS">Tags</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTags.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTags =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-tags-count">\n          <span>{{vm.selectedTags.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTags()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTags()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTags" csv-label="true" filename="tags.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTags($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TAG TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTags" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTags">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column md-order-by="color">{{ \'TOOLS.COLOR\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.tags.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="tag" md-select-id="id" ng-repeat="tag in vm.tags.rows">\n                <td md-cell ng-if="tag.userpic"><img class="avatar" alt="{{tag.name}}" ng-src="api/users/{{tag.id}}/avatar" /></td>\n                <td md-cell ng-if="!tag.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{tag.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="id ">{{tag.id}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="name ">{{tag.name}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="description ">{{tag.description}}</td>\n                <td ng-click="vm.createOrEditTag($event, tag)" md-cell class="color ">{{tag.color}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(tag, $event    )" translate="TOOLS.EDIT_TAG">\n                          Edit Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(tag, $event    )" translate="TOOLS.DELETE_TAG">\n                          Delete Tag\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.tags.count}}" md-on-paginate="vm.getTags" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TAG TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TAG BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-tag-button" ng-click="vm.createOrEditTag($event)" aria-label="add tag" translate translate-attr-aria-label="TOOLS.ADD_TAG">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TAG BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/templates/create/dialog.html",'<md-dialog class="template-dialog" aria-label="New Template">\n  <form name="templateForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.template.name" ng-required="true" autofocus>\n\n        <div ng-messages="templateForm[\'name\'].$error" ng-show="templateForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="md-block">\n        <label class="md-caption grey-fg" translate="TOOLS.CONTENT">Content</label>\n        <textarea aria-label="Content html" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.template.html"></textarea>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.template.description">\n\n        <div ng-messages="templateForm[\'description\'].$error" ng-show="templateForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTemplate" ng-click="vm.saveTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid || templateForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTemplate" ng-click="vm.addNewTemplate()" class="send-button md-accent md-raised" ng-disabled="templateForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TEMPLATE" translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n          ADD TEMPLATE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTemplate" ng-click="vm.deleteTemplate($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/templates/templates.html",'<div id="templates" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TEMPLATES">Templates</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTemplates.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTemplates =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-templates-count">\n          <span>{{vm.selectedTemplates.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTemplates()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTemplates()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTemplates" csv-label="true" filename="templates.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTemplates($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TEMPLATE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTemplates" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTemplates">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.templates.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="template" md-select-id="id" ng-repeat="template in vm.templates.rows">\n                <td md-cell ng-if="template.userpic"><img class="avatar" alt="{{template.name}}" ng-src="api/users/{{template.id}}/avatar" /></td>\n                <td md-cell ng-if="!template.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{template.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="id ">{{template.id}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="name ">{{template.name}}</td>\n                <td ng-click="vm.createOrEditTemplate($event, template)" md-cell class="description ">{{template.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(template, $event    )" translate="TOOLS.EDIT_TEMPLATE">\n                          Edit Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(template, $event    )" translate="TOOLS.DELETE_TEMPLATE">\n                          Delete Template\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.templates.count}}" md-on-paginate="vm.getTemplates" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TEMPLATE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TEMPLATE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-template-button" ng-click="vm.createOrEditTemplate($event)" aria-label="add template" translate translate-attr-aria-label="TOOLS.ADD_TEMPLATE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TEMPLATE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/create/dialog.html",'<md-dialog class="trigger-dialog" aria-label="New Trigger">\n  <form name="triggerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newTrigger ? \'TOOLS.NEW_TRIGGER\' : \'TOOLS.EDIT_TRIGGER\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trigger.name" required md-autofocus>\n        <div ng-messages="triggerForm[\'name\'].$error" ng-show="triggerForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="channel" ng-model="vm.trigger.channel" required ng-disabled="!vm.newTrigger">\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n          <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel"> {{ \'TOOLS.OPENCHANNEL\' | translate }}\n          </md-option>\n          <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n          <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n          <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n          <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n          <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="triggerForm[\'channel\'].$error" ng-show="triggerForm[\'channel\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trigger.status" aria-label="Status"><span translate="TOOLS.STATUS">Status</span>\n        </md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trigger.description">\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{ error.message }}</span>\n            <span class="type">({{ error.type }})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrigger" ng-click="vm.saveTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid || triggerForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrigger" ng-click="vm.addNewTrigger()" class="send-button md-accent md-raised" ng-disabled="triggerForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRIGGER" translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n          ADD TRIGGER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrigger" ng-click="vm.deleteTrigger($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/actions/actions.html",'<div ng-controller="TriggerActionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\r\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead" translate="TOOLS.ACTIONS">Actions</span>\r\n      <ms-search-bar on-search="vm_dc.getTriggerActions()" query="vm_dc.query" debounce="300" direction="down">\r\n      </ms-search-bar>\r\n      <div flex></div>\r\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditTriggerAction($event)" aria-label="add action" translate translate-attr-label="TOOLS.ADD_ACTION">\r\n        <md-icon md-font-icon="icon-plus"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedTriggerActions.length">\r\n    <div class="md-toolbar-tools">\r\n      <span class="md-subhead">{{ vm_dc.selectedTriggerActions.length }}\r\n        {{ vm_dc.selectedTriggerActions.length > 1 ? \'items\' : \'item\' }} selected</span>\r\n      <div flex></div>\r\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedTriggerActions" csv-label="true" filename="triggers.csv">\r\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\r\n      </button>\r\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedTriggerActions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\r\n        <md-icon md-font-icon="icon-delete"></md-icon>\r\n      </md-button>\r\n    </div>\r\n  </md-toolbar>\r\n  <md-table-container class="font-size-12">\r\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedTriggerActions" md-progress="vm_dc.promise">\r\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getTriggerActions">\r\n        <tr md-row>\r\n          <th md-column md-order-by="id">\r\n            {{ \'TOOLS.ID\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="action">\r\n            {{ \'TOOLS.ACTION\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data1">\r\n            {{ \'TOOLS.TYPE\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="data2">\r\n            {{ \'TOOLS.INFO\' | translate }}\r\n          </th>\r\n          <th md-column md-order-by="createdAt">\r\n            {{ \'TOOLS.CREATED_AT\' | translate }}\r\n          </th>\r\n          <th md-column width="10px"></th>\r\n        </tr>\r\n      </thead>\r\n      <tbody md-body>\r\n        <tr md-row md-select="action" md-select-id="id" ng-repeat="action in vm_dc.triggerActions.rows">\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.id }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ \'TOOLS.\' + (action.action | snakecase | uppercase) | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\'" md-cell>\r\n            {{ action.data1 === \'1\' ? \'CTI URL\' : \'Popup\' }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ (vm_dc.lists | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'contactManager\'" md-cell>\r\n            {{ action.data2 === \'1\' ? \'TOOLS.YES\' : \'TOOLS.NO\' | uppercase | translate }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data1 }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="!action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'urlForward\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data2" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'script\' && action.data1" md-cell>\r\n            {{ action.data1 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'jscripty\'" md-cell>\r\n            {{ (vm_dc.projects | filter : {\'id\':(action.data1 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\'" md-cell>\r\n            {{ vm_dc.integrationTypes[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zendesk\'" md-cell>\r\n            {{ (vm_dc.zendeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'desk\'" md-cell>\r\n            {{ (vm_dc.deskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'zoho\'" md-cell>\r\n            {{ (vm_dc.zohoAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'salesforce\'" md-cell>\r\n            {{ (vm_dc.salesforceAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'sugarcrm\'" md-cell>\r\n            {{ (vm_dc.sugarcrmAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshdesk\'" md-cell>\r\n            {{ (vm_dc.freshdeskAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'vtiger\'" md-cell>\r\n            {{ (vm_dc.vtigerAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'dynamics365\'" md-cell>\r\n            {{ (vm_dc.dynamics365Accounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'servicenow\'" md-cell>\r\n            {{ (vm_dc.servicenowAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'integration\' && action.data1 == \'freshsales\'" md-cell>\r\n            {{ (vm_dc.freshsalesAccounts | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\'" md-cell>\r\n            {{ vm_dc.motionBarOptions[action.data1] }} </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'2\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'motionbar\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'0\'" md-cell>\r\n            {{ (vm_dc.templates | filter : {\'id\':(action.data2 | toInteger)} : true)[0].name }}</td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" ng-if="action.action == \'browser\' && action.data1 === \'1\'" md-cell>\r\n            {{ action.data2 }}\r\n          </td>\r\n          <td ng-click="vm_dc.createOrEditTriggerAction($event, action)" md-cell>\r\n            {{ action.createdAt | formatdate }}\r\n          </td>\r\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\r\n            <md-menu>\r\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\r\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\r\n              </md-button>\r\n              <md-menu-content width="3">\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\r\n                  <md-button ng-click="vm_dc.createOrEditTriggerAction($event, action)" translate="TOOLS.EDIT_ACTION">\r\n                    Edit Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\r\n                  <md-button ng-click="vm_dc.deleteConfirm(action, $event)" translate="TOOLS.DELETE_ACTION">\r\n                    Delete Action\r\n                  </md-button>\r\n                </md-menu-item>\r\n              </md-menu-content>\r\n            </md-menu>\r\n          </td>\r\n        </tr>\r\n        <tr md-row ng-if="!vm_dc.triggerActions.rows.length">\r\n          <td md-cell colspan="5">\r\n            <div layout="row" layout-align="center center">\r\n              <span class="text-boxed-light" translate="TOOLS.NO_ACTION_AVAILABLE">No action\r\n                available</span>\r\n            </div>\r\n          </td>\r\n        </tr>\r\n      </tbody>\r\n    </table>\r\n  </md-table-container>\r\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.triggerActions.count }}" md-on-paginate="vm_dc.getTriggerActions" md-page-select>\r\n  </md-table-pagination>\r\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/actions/create/dialog.html",'<md-dialog class="action-dialog" aria-label="New Action">\n  <form name="actionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAction ? \'TOOLS.NEW_ACTION\' : \'TOOLS.EDIT_ACTION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.ACTION">Action</label>\n        <md-select name="action" ng-model="vm.action.action" ng-init="vm.onActionInit()" ng-change="vm.onActionSelection()" md-autofocus required ng-disabled="!vm.newAction">\n          <md-option ng-value="\'contactManager\'" ng-if="vm.trigger.channel == \'voice\'">\n            {{ \'TOOLS.CONTACT_MANAGER\' | translate }} </md-option>\n          <md-option ng-value="\'integration\'" ng-if="vm.trigger.channel == \'voice\' && ((vm.newAction && vm.hasIntegrationsPermissions) || !vm.newAction)">\n            {{ \'TOOLS.INTEGRATIONS\' | translate }} </md-option>\n          <md-option ng-value="\'motionbar\'"> {{ \'TOOLS.MOTIONBAR\' | translate }} </md-option>\n          <md-option ng-value="\'jscripty\'"> {{ \'TOOLS.JSCRIPTY\' | translate }} </md-option>\n          <md-option ng-value="\'urlForward\'"> {{ \'TOOLS.URL_FORWARD\' | translate }} </md-option>\n          <md-option ng-value="\'browser\'"> {{ \'TOOLS.BROWSER\' | translate }} </md-option>\n          <md-option ng-value="\'bot\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.BOT\' | translate }} </md-option>\n          <md-option ng-value="\'script\'"> {{ \'TOOLS.SCRIPT\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'action\'].$error" ng-show="actionForm[\'action\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACTION_REQUIRED">Action field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'jscripty\'" class="md-block">\n        <label translate="TOOLS.PROJECT">Project</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.projects" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.LIST">List</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onListSelection()" required>\n          <md-option ng-value="\'\'+data1.id" ng-repeat="data1 in vm.lists" ng-disabled="data1.canSelect === false">\n            {{ data1.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.SEARCH_FIELDS">Search fields</label>\n        <md-select name="fields" ng-model="vm.action.data3" ng-init="vm.onSearchFieldsInit()" multiple required>\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SEARCH_FIELDS_REQUIRED">Search fields field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATECONTACT">Create contact automatically</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onAutocreateSelection()" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATECONTACT_REQUIRED">AutoCreateContact field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\' && vm.action.data2 === \'1\'" class="md-block">\n        <label translate="TOOLS.AUTOCREATE_FIELD">Autocreate field</label>\n        <md-select name="autocreateField" ng-model="vm.action.data4" ng-required="vm.action.data2 === \'1\'">\n          <md-optgroup label="{{ \'TOOLS.STANDARD\' | translate }}">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.contactFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.LIST\' | translate }}" ng-if="vm.listFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.listFields">\n              {{ field.name }}</md-option>\n          </md-optgroup>\n          <md-optgroup label="{{ \'TOOLS.GLOBALS\' | translate }}" ng-if="vm.customFields.length > 0">\n            <md-option ng-value="field.columnName" ng-repeat="field in vm.customFields">\n              {{ field.displayName }}</md-option>\n          </md-optgroup>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AUTOCREATE_FIELD_REQUIRED">Autocreate field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'contactManager\'" class="md-block">\n        <label translate="TOOLS.IGNOREDIALERCONTACTID">Ignore dialer contact Id</label>\n        <md-select name="data5" ng-model="vm.action.data5" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.IGNOREDIALERCONTACTID_REQUIRED">Ignore dialer contact Id field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" required>\n          <md-option ng-value="\'GET\'">GET</md-option>\n          <md-option ng-value="\'POST\'">POST</md-option>\n          <md-option ng-value="\'PUT\'">PUT</md-option>\n          <md-option ng-value="\'DELETE\'">DELETE</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.TIMEOUT">Timeout</label>\n        <input type="number" name="data5" ng-model="vm.action.data5" min="1" max="10" ng-required="true">\n        <div class="hint"><span translate="TOOLS.HELP.TIMEOUT"></span></div>\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="TOOLS.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n              equal than</span> <span>10</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\'" class="md-block">\n        <label translate="TOOLS.HEADERS">Headers</label>\n        <textarea name="data6" ng-model="vm.action.data6"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.HEADERS"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'urlForward\' && (vm.action.data1 == \'POST\' || vm.action.data1 == \'PUT\')" class="md-block">\n        <label translate="TOOLS.BODY">Body</label>\n        <textarea name="data7" ng-model="vm.action.data7"></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.BODY"></span></div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_TYPE">Script_Type</label>\n        <input type="input" name="data2" ng-model="vm.action.data2">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_TYPE"></span></div>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_TYPE_REQUIRED">Script_Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT_INFO">Script_Info</label>\n        <input type="input" name="data1" ng-model="vm.action.data1">\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT_INFO"></span></div>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_INFO_REQUIRED">Script_Info field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'script\'" class="md-block">\n        <label translate="TOOLS.SCRIPT">Script</label>\n        <textarea name="data3" ng-model="vm.action.data3" required></textarea>\n        <div class="hint"><span translate="TOOLS.HELP.SCRIPT"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.SCRIPT_REQUIRED">Script field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'" class="md-block">\n        <label translate="TOOLS.INTEGRATION">Integration</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-init="vm.onIntegrationInit()" ng-change="vm.onIntegrationSelection()" required>\n          <md-option ng-value="\'desk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1306]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1306])">Desk</md-option>\n          <md-option ng-value="\'dynamics365\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1309]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1309])">Dynamics365</md-option>\n          <md-option ng-value="\'freshdesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1303]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1303])">Freshdesk</md-option>\n          <md-option ng-value="\'freshsales\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1304]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1304])">Freshsales</md-option>\n          <md-option ng-value="\'salesforce\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1302]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1302])">Salesforce</md-option>\n          <md-option ng-value="\'servicenow\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1310]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1310])">ServiceNow</md-option>\n          <md-option ng-value="\'sugarcrm\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1305]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1305])">SugarCRM</md-option>\n          <md-option ng-value="\'vtiger\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1308]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1308])">vTiger</md-option>\n          <md-option ng-value="\'zendesk\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1301]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1301])">Zendesk</md-option>\n          <md-option ng-value="\'zoho\'" ng-if="(vm.newAction && vm.hasSectionPermissions[1307]) || !vm.newAction" ng-disabled="(!vm.newAction && !vm.hasSectionPermissions[1307])">Zoho</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.INTEGRATION_REQUIRED">Integration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\' && vm.action.data1" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="data2" ng-model="vm.action.data2" ng-change="vm.onIntegrationAccountSelection()" ng-disabled="vm.action.isIntegrationDisabled" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.accounts">{{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'integration\'  && vm.action.data1 && vm.action.data2" class="md-block">\n        <label translate="TOOLS.CONFIGURATION">Configuration</label>\n        <md-select name="data3" ng-model="vm.action.data3" required ng-disabled="vm.action.isIntegrationDisabled">\n          <md-option ng-value="\'\'+data3.id" ng-repeat="data3 in vm.configurations | filter : { AccountId: (vm.action.data2 | toInteger) } : true">{{\n            data3.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.CONFIGURATION_REQUIRED">Configuration field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\'" class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select name="data1" ng-model="vm.action.data1" ng-change="vm.onTypeSelection()" required>\n          <md-option ng-value="\'0\'">Popup</md-option>\n          <md-option ng-value="\'1\'">CTI URL</md-option>\n          <md-option ng-value="\'2\'">Windows App</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data1\'].$error" ng-show="actionForm[\'data1\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.APPLICATION">Application</label>\n        <input type="text" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'2\'" class="md-block">\n        <label translate="TOOLS.ARGUMENTS">Arguments</label>\n        <input type="text" name="data3" ng-model="vm.action.data3">\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'motionbar\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'0\'" class="md-block">\n        <label translate="TOOLS.TEMPLATE">Template</label>\n        <md-select name="data2" ng-model="vm.action.data2" required>\n          <md-option ng-value="\'\'+data2.id" ng-repeat="data2 in vm.templates" ng-disabled="data2.canSelect === false">\n            {{ data2.name }}</md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.TEMPLATE_REQUIRED">Template field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.URL">Url</label>\n        <input type="url" name="data2" ng-model="vm.action.data2" ng-required="true">\n        <div ng-messages="actionForm[\'data2\'].$error" ng-show="actionForm[\'data2\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.URL_REQUIRED">Url field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="TOOLS.ERRORS.URL_MUST_VALID_URL">Url must be a valid url http://www.xcally.com</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="(vm.action.action == \'motionbar\' || vm.action.action == \'browser\') && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.EVENTVARIABLES">EventVariables</label>\n        <md-select name="data3" ng-model="vm.action.data3" required>\n          <md-option ng-value="\'1\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n          <md-option ng-value="\'0\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n        </md-select>\n        <div class="hint"><span translate="TOOLS.HELP.EVENTVARIABLES"></span></div>\n        <div ng-messages="actionForm[\'data3\'].$error" ng-show="actionForm[\'data3\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.EVENTVARIABLES_REQUIRED">EventVariables field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data1 == \'1\'" class="md-block">\n        <label translate="TOOLS.LOCATION">Location</label>\n        <md-select name="data4" ng-model="vm.action.data4" required ng-change="vm.onActionLocationChange()">\n          <md-option ng-value="0"> {{ \'TOOLS.NEW_TAB\' | translate }} </md-option>\n          <md-option ng-value="1"> {{ \'TOOLS.NEW_WINDOW\' | translate }} </md-option>\n          <md-option ng-value="2"> {{ \'TOOLS.MOTION_TAB\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="actionForm[\'data4\'].$error" ng-show="actionForm[\'data4\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.LOCATION_REQUIRED">Location field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWWIDTH">WindowWidth</label>\n        <input type="text" name="data5" ng-model="vm.action.data5">\n        <div ng-messages="actionForm[\'data5\'].$error" ng-show="actionForm[\'data5\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWWIDTH_REQUIRED">WindowWidth field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.action.action == \'browser\' && vm.action.data4 == \'1\'" class="md-block">\n        <label translate="TOOLS.WINDOWHEIGHT">WindowHeight</label>\n        <input type="text" name="data6" ng-model="vm.action.data6">\n        <div ng-messages="actionForm[\'data6\'].$error" ng-show="actionForm[\'data6\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.WINDOWHEIGHT_REQUIRED">WindowHeight field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAction" ng-click="vm.saveAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid || actionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAction" ng-click="vm.addNewAction()" class="send-button md-accent md-raised" ng-disabled="actionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ACTION" translate-attr-aria-label="TOOLS.ADD_ACTION">\n          ADD ACTION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAction" ng-click="vm.deleteAction($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html",'<div ng-controller="TriggerAllConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ALLCONDITIONS">All Conditions</span>\n      <ms-search-bar on-search="vm_dc.getAllConditions()" query="vm_dc.query" debounce="300" direction="down">\n      </ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAllCondition($event)" aria-label="add allCondition" translate translate-attr-label="TOOLS.ADD_ALLCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAllConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAllConditions.length }}\n        {{ vm_dc.selectedAllConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAllConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAllConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAllConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAllConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="allCondition" md-select-id="id" ng-repeat="allCondition in vm_dc.allConditions.rows">\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.id }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[allCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ \'TOOLS.\' + allCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="!allCondition.value" md-cell>\n            {{ allCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'sms\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'fax\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'openchannel\' && allCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (allCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':allCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\':(allCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':allCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'voice\' && allCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'interaction\'" md-cell>\n            {{ allCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel != \'voice\' && allCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[allCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'mail\' && allCondition.field == \'mailSubstatus\'" md-cell>\n            {{ allCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': allCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" md-cell>\n            {{ allCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAllCondition($event, allCondition)" translate="TOOLS.EDIT_ALLCONDITION">\n                    Edit AllCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(allCondition, $event)" translate="TOOLS.DELETE_ALLCONDITION">\n                    Delete AllCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.allConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ALLCONDITION_AVAILABLE">No condition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.allConditions.count }}" md-on-paginate="vm_dc.getAllConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/allconditions/create/dialog.html",'<md-dialog class="allCondition-dialog" aria-label="New AllCondition">\n  <form name="allConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAllCondition ? \'TOOLS.NEW_ALLCONDITION\' : \'TOOLS.EDIT_ALLCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.allCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'field\'].$error" ng-show="allConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.allCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'operator\'].$error" ng-show="allConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="allConditionForm[\'value\'].$error" ng-show="allConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAllCondition" ng-click="vm.saveAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid || allConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAllCondition" ng-click="vm.addNewAllCondition()" class="send-button md-accent md-raised" ng-disabled="allConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ALLCONDITION" translate-attr-aria-label="TOOLS.ADD_ALLCONDITION">\n          ADD ALLCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAllCondition" ng-click="vm.deleteAllCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html",'<div ng-controller="TriggerAnyConditionsController as vm_dc" ng-init="vm_dc.onInit(vm.trigger, vm.crudPermissions)">\n  <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead" translate="TOOLS.ANYCONDITIONS">AnyConditions</span>\n      <ms-search-bar on-search="vm_dc.getAnyConditions()" query="vm_dc.query" debounce="300" direction="down"></ms-search-bar>\n      <div flex></div>\n      <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditAnyCondition($event)" aria-label="add anyCondition" translate translate-attr-label="TOOLS.ADD_ANYCONDITION">\n        <md-icon md-font-icon="icon-plus"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedAnyConditions.length">\n    <div class="md-toolbar-tools">\n      <span class="md-subhead">{{ vm_dc.selectedAnyConditions.length }}\n        {{ vm_dc.selectedAnyConditions.length > 1 ? \'items\' : \'item\' }} selected</span>\n      <div flex></div>\n      <button class="md-icon-button" ng-csv="vm_dc.exportSelectedAnyConditions" csv-label="true" filename="triggers.csv">\n        <md-icon md-font-icon="icon-file-excel"></md-icon>\n      </button>\n      <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedAnyConditions($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n        <md-icon md-font-icon="icon-delete"></md-icon>\n      </md-button>\n    </div>\n  </md-toolbar>\n  <md-table-container class="font-size-12">\n    <table md-table md-row-select multiple ng-model="vm_dc.selectedAnyConditions" md-progress="vm_dc.promise">\n      <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getAnyConditions">\n        <tr md-row>\n          <th md-column md-order-by="id">\n            {{ \'TOOLS.ID\' | translate }}\n          </th>\n          <th md-column md-order-by="field">\n            {{ \'TOOLS.FIELD\' | translate }}\n          </th>\n          <th md-column md-order-by="operator">\n            {{ \'TOOLS.OPERATOR\' | translate }}\n          </th>\n          <th md-column md-order-by="value">\n            {{ \'TOOLS.VALUE\' | translate }}\n          </th>\n          <th md-column md-order-by="createdAt">\n            {{ \'TOOLS.CREATED_AT\' | translate }}\n          </th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n      <tbody md-body>\n        <tr md-row md-select="anyCondition" md-select-id="id" ng-repeat="anyCondition in vm_dc.anyConditions.rows">\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.id}}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + vm_dc.fields[anyCondition.field] | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ \'TOOLS.\' + anyCondition.operator | uppercase | translate }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="!anyCondition.value" md-cell>\n            {{ anyCondition.value }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.chatWebsites | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.mailAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'sms\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.smsAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, allCondition)" ng-if="vm.trigger.channel == \'whatsapp\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.whatsappAccounts | filter : {\'id\':(anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'fax\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.faxAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'openchannel\' && anyCondition.field == \'account\'" md-cell>\n            {{ (vm_dc.openchannelAccounts | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'queue\'" md-cell>\n            {{ (vm_dc.queues | filter : {\'name\':anyCondition.value} : true)[0].name }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'routeId\'" md-cell>\n            {{ (vm_dc.outboundRoutes | filter : {\'id\': (anyCondition.value | toInteger)} : true)[0].exten }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'agent\'" md-cell>\n            {{ (vm_dc.agents | filter : {\'name\':anyCondition.value} : true)[0].fullname }}</td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'voice\' && anyCondition.field == \'lastevent\'" md-cell>\n            {{ vm_dc.callStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'interaction\'" md-cell>\n            {{ anyCondition.value | capitalize }} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel != \'voice\' && anyCondition.field == \'message\'" md-cell>\n            {{ vm_dc.messageStatuses[anyCondition.value] }} </td>\n          <td ng-click="vm_dc.createOrEditAllCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'mail\' && anyCondition.field == \'mailSubstatus\'" md-cell>\n            {{ anyCondition.value === \'null\' ? (\'TOOLS.NONE\' | translate) : (vm_dc.mailSubstatuses | filter : {\'name\': anyCondition.value } : true)[0].name }}\n          </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </td>\n          <td ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" md-cell>\n            {{ anyCondition.createdAt | formatdate }}\n          </td>\n          <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n            <md-menu>\n              <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n              </md-button>\n              <md-menu-content width="3">\n                <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                  <md-button ng-click="vm_dc.createOrEditAnyCondition($event, anyCondition)" translate="TOOLS.EDIT_ANYCONDITION">\n                    Edit AnyCondition\n                  </md-button>\n                </md-menu-item>\n                <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                  <md-button ng-click="vm_dc.deleteConfirm(anyCondition, $event)" translate="TOOLS.DELETE_ANYCONDITION">\n                    Delete AnyCondition\n                  </md-button>\n                </md-menu-item>\n              </md-menu-content>\n            </md-menu>\n          </td>\n        </tr>\n        <tr md-row ng-if="!vm_dc.anyConditions.rows.length">\n          <td md-cell colspan="5">\n            <div layout="row" layout-align="center center">\n              <span class="text-boxed-light" translate="TOOLS.NO_ANYCONDITION_AVAILABLE">No anycondition\n                available</span>\n            </div>\n          </td>\n        </tr>\n      </tbody>\n    </table>\n  </md-table-container>\n  <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{ vm_dc.anyConditions.count }}" md-on-paginate="vm_dc.getAnyConditions" md-page-select>\n  </md-table-pagination>\n</div>'),e.put("app/main/apps/tools/views/triggers/edit/anyconditions/create/dialog.html",'<md-dialog class="anyCondition-dialog" aria-label="New AnyCondition">\n  <form name="anyConditionForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newAnyCondition ? \'TOOLS.NEW_ANYCONDITION\' : \'TOOLS.EDIT_ANYCONDITION\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.FIELD">Field</label>\n        <md-select name="field" ng-model="vm.anyCondition.field" ng-change="vm.onFieldSelection()" md-autofocus required>\n          <md-option ng-value="\'queue\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.QUEUE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'lastevent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.CALL_STATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'routeId\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.OUTBOUNDROUTE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'agent\'" ng-if="vm.trigger.channel == \'voice\'"> {{ \'TOOLS.AGENT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'account\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.ACCOUNT\' | translate }}\n          </md-option>\n          <md-option ng-value="\'interaction\'" ng-if="vm.trigger.channel != \'voice\'">\n            {{ \'TOOLS.INTERACTION\' | translate }} </md-option>\n          <md-option ng-value="\'message\'" ng-if="vm.trigger.channel != \'voice\'"> {{ \'TOOLS.MESSAGE\' | translate }}\n          </md-option>\n          <md-option ng-value="\'mailSubstatus\'" ng-if="vm.trigger.channel == \'mail\'"> {{ \'TOOLS.MAIL_SUBSTATUS\' | translate }}\n          </md-option>\n          <md-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | translate }}\n          </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'field\'].$error" ng-show="anyConditionForm[\'field\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.FIELD_REQUIRED">Field field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.OPERATOR">Operator</label>\n        <md-select name="operator" ng-model="vm.anyCondition.operator" required>\n          <md-option ng-value="\'equals\'"> {{ \'TOOLS.EQUALS\' | translate }} </md-option>\n          <md-option ng-value="\'not_equals\'"> {{ \'TOOLS.NOT_EQUALS\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'operator\'].$error" ng-show="anyConditionForm[\'operator\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OPERATOR_REQUIRED">Operator field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'account\'" class="md-block">\n        <label translate="TOOLS.ACCOUNT">Account</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.accounts" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ACCOUNT_REQUIRED">Account field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'queue\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.QUEUE">Queue</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.queues" ng-disabled="value.canSelect === false">\n            {{ value.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'routeId\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.id.toString()" ng-repeat="value in vm.outboundRoutes" ng-disabled="value.canSelect === false">\n            {{ value.exten }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'agent\' && vm.trigger.channel == \'voice\'" class="md-block">\n        <label translate="TOOLS.AGENT">Agent</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="value.name" ng-repeat="value in vm.agents" ng-disabled="value.canSelect === false">\n            {{ value.fullname }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'lastevent\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="status.value" ng-repeat="status in vm.callStatuses">\n            {{ status.name }}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'mailSubstatus\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="mailSubstatus.name" ng-repeat="mailSubstatus in vm.mailSubstatuses">\n            {{ mailSubstatus.name }}</md-option>\n          <md-option ng-value="\'null\'">{{\'TOOLS.NONE\' | translate}}</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'interaction\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'opened\'">Opened</md-option>\n          <md-option ng-value="\'closed\'">Closed</md-option>\n          <md-option ng-if="vm.trigger.channel==\'mail\'" ng-value="\'substatus\'">SubStatus</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'message\' && vm.trigger.channel != \'voice\'" class="md-block">\n        <label translate="TOOLS.VALUE">Value</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'in\'">Incoming</md-option>\n          <md-option ng-value="\'out\'">Outgoing</md-option>\n          <md-option ng-value="\'accept\'">Accepted</md-option>\n          <md-option ng-value="\'reject\'">Rejected</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</md-option>\n        </md-select>\n        <div ng-messages="anyConditionForm[\'value\'].$error" ng-show="anyConditionForm[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newAnyCondition" ng-click="vm.saveAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid || anyConditionForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newAnyCondition" ng-click="vm.addNewAnyCondition()" class="send-button md-accent md-raised" ng-disabled="anyConditionForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_ANYCONDITION" translate-attr-aria-label="TOOLS.ADD_ANYCONDITION">\n          ADD ANYCONDITION\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newAnyCondition" ng-click="vm.deleteAnyCondition($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/triggers/edit/view.html",'<div id="tools-trigger" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-triggers-button md-icon-button" aria-label="Go to triggers" ng-click="vm.gotoTriggers()" translate translate-attr-aria-label="TOOLS.GO_TO_TRIGGERS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="trigger-image" hide-xs>\n          <img ng-src="assets/images/business/triggers.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">#{{ vm.trigger.id }}\n            <span ng-if="vm.trigger.name">{{ vm.trigger.name }}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{ vm.trigger.createdAt | date:\'medium\' }}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrigger()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (allconditionsForm.$invalid) || (anyconditionsForm.$invalid) || (actionsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trigger.name" required autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CHANNEL">Channel</label>\n                <md-select name="channel" ng-model="vm.trigger.channel" required disabled>\n                  <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n                  <md-option ng-value="\'openchannel\'" ng-if="vm.license.openchannel">\n                    {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n                  <md-option ng-value="\'chat\'" ng-if="vm.license.chat"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n                  <md-option ng-value="\'mail\'" ng-if="vm.license.mail"> {{ \'TOOLS.MAIL\' | translate }} </md-option>\n                  <md-option ng-value="\'sms\'" ng-if="vm.license.messaging"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n                  <md-option ng-value="\'fax\'" ng-if="vm.license.fax"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n                  <md-option ng-value="\'whatsapp\'" ng-if="vm.license.whatsapp"> {{ \'TOOLS.WHATSAPP\' | translate }}\n                  </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'channel\'].$error" ng-show="generalForm[\'channel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CHANNEL_REQUIRED">Channel field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trigger.status" aria-label="Status" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="TOOLS.STATUS">Status</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trigger.description" ng-disabled="!vm.crudPermissions.canEdit">\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.CONDITIONS&ACTIONS">CONDITIONS&ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trigger-detail-form-container allconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/allconditions/allconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container anyconditions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/anyconditions/anyconditions.html\'">\n          </div>\n          <div class="trigger-detail-form-container actions md-background-bg md-whiteframe-1dp" ng-include="\'app/main/apps/tools/views/triggers/edit/actions/actions.html\'">\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/tools/views/triggers/triggers.html",'<div id="triggers" class="page-layout simple left-sidenav inner-sidenav">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRIGGERS">Triggers</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTriggers.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedTriggers =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-triggers-count">\n          <span>{{ vm.selectedTriggers.length }}</span>\n          <span translate="TOOLS.SELECTED">Selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTriggers()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTriggers()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTriggers" csv-label="true" filename="triggers.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTriggers($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n      \x3c!-- TRIGGER TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTriggers" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTriggers">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="channel">{{ \'TOOLS.CHANNEL\' | translate }}</th>\n                <th md-column md-order-by="status">{{ \'TOOLS.STATUS\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.triggers.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trigger" md-select-id="id" ng-repeat="trigger in vm.triggers.rows">\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="id ">{{ trigger.id }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="name ">{{ trigger.name }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="channel ">\n                  {{ \'TOOLS.\' + trigger.channel | uppercase | translate }}</td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="status ">\n                  <md-icon md-colors="{color: {{ trigger.status ? \'\\\'green\\\'\' : \'\\\'grey\\\'\' }}}" md-font-icon="{{ trigger.status ? \'icon-check\' : \'icon-close\' }}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditTrigger($event, trigger)" md-cell class="description ">\n                  {{ trigger.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.goToEditState(trigger)" translate="TOOLS.EDIT_TRIGGER">\n                          Edit Trigger\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(trigger, $event)" translate="TOOLS.DELETE_TRIGGER">\n                          Delete Trigger\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'TOOLS.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'TOOLS.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'TOOLS.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.triggers.count }}" md-on-paginate="vm.getTriggers" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRIGGER TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n  </div>\n  \x3c!-- / CONTENT --\x3e\n  \x3c!-- ADD TRIGGER BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trigger-button" ng-click="vm.createOrEditTrigger($event)" aria-label="add trigger" translate translate-attr-aria-label="TOOLS.ADD_TRIGGER">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRIGGER BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/trunks/create/dialog.html",'<md-dialog class="trunk-dialog" aria-label="New Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.HOST">host</label>\n        <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true">\n\n        <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n        <div ng-messages="trunkForm[\'host\'].$error" ng-show="trunkForm[\'host\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.SECRET">secret</label>\n        <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n        <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n        <div ng-messages="trunkForm[\'secret\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n        <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser">\n\n        <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n        <div ng-messages="trunkForm[\'defaultuser\'].$error" ng-show="trunkForm[\'defaultuser\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.REGISTRY">registry</label>\n        <input type="text" name="registry" ng-model="vm.trunk.registry">\n\n        <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n        <div ng-messages="trunkForm[\'registry\'].$error" ng-show="trunkForm[\'registry\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.trunk.description">\n\n        <div ng-messages="trunkForm[\'description\'].$error" ng-show="trunkForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newTrunk" ng-click="vm.saveTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid || trunkForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newTrunk" ng-click="vm.addNewTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_TRUNK" translate-attr-aria-label="TOOLS.ADD_TRUNK">\n          ADD TRUNK\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newTrunk" ng-click="vm.deleteTrunk($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/clone/clone.html",'<md-dialog class="trunk-dialog" aria-label="Clone Trunk">\n  <form name="trunkForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newTrunk">\n\n        <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n        <div ng-messages="trunkForm[\'name\'].$error" ng-show="trunkForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.trunk.active" aria-label="active"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <md-button type="submit" ng-click="vm.cloneTrunk()" class="send-button md-accent md-raised" ng-disabled="trunkForm.$invalid" aria-label="CLONE" translate="TOOLS.CLONE_TRUNK" translate-attr-aria-label="TOOLS.CLONE_TRUNK">\n        CLONE TRUNK\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/trunks/edit/view.html",'<div id="tools-trunk" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-trunks-button md-icon-button" aria-label="Go to trunks" ng-click="vm.gotoTrunks()" translate translate-attr-aria-label="TOOLS.GO_TO_TRUNKS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="trunk-image" hide-xs>\n          <img ng-src="assets/images/business/trunks.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.trunk.id}}\n            <span ng-if="vm.trunk.name">{{vm.trunk.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="TOOLS.CREATED_AT"></span> <span>{{vm.trunk.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.trunk, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="TOOLS.GOTO_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak ng-if="vm.crudPermissions.canEdit">\n      <md-button ng-click="vm.clonedialog(vm.trunk, $event)" class="md-fab md-green-500-bg md-icon-button" aria-label="clone">\n        <md-tooltip><span translate="TOOLS.CLONE_TRUNK"></span></md-tooltip>\n        <md-icon md-font-icon="icon-content-duplicate"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveTrunk()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (otherFieldsForm.$invalid)" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.trunk.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="TOOLS.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.trunk.active" aria-label="active" ng-disabled="!vm.crudPermissions.canEdit"><span translate="TOOLS.ACTIVE">active</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.HOST">host</label>\n                <input type="text" name="host" ng-model="vm.trunk.host" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.HOST"></span></div>\n                <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.HOST_REQUIRED">host field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SECRET">secret</label>\n                <input type="password" name="secret" ng-model="vm.trunk.secret" placeholder="Password" translate translate-attr-placeholder="TOOLS.PASSWORD">\n                <div class="hint"><span translate="TOOLS.HELP.SECRET"></span></div>\n                <div ng-messages="generalForm[\'secret\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="TOOLS.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DEFAULTUSER">defaultuser</label>\n                <input type="text" name="defaultuser" ng-model="vm.trunk.defaultuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.DEFAULTUSER"></span></div>\n                <div ng-messages="generalForm[\'defaultuser\'].$error" ng-show="generalForm[\'defaultuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DEFAULTUSER_REQUIRED">defaultuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CONTEXT">context</label>\n                <md-select name="context" ng-model="vm.trunk.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CONTEXT_REQUIRED">context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLERID">callerid</label>\n                <input type="text" name="callerid" ng-model="vm.trunk.callerid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALLERID"></span></div>\n                <div ng-messages="generalForm[\'callerid\'].$error" ng-show="generalForm[\'callerid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLERID_REQUIRED">callerid field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TYPE">Type</label>\n                <md-select name="type" ng-model="vm.trunk.type" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'friend\'">Friend</md-option>\n                  <md-option ng-value="\'user\'">User</md-option>\n                  <md-option ng-value="\'peer\'">Peer</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TYPE"></span></div>\n                <div ng-messages="generalForm[\'type\'].$error" ng-show="generalForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DTMFMODE">dtmfmode</label>\n                <md-select name="dtmfmode" ng-model="vm.trunk.dtmfmode" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'rfc2833\'">rfc2833</md-option>\n                  <md-option ng-value="\'info\'">info</md-option>\n                  <md-option ng-value="\'shortinfo\'">shortinfo</md-option>\n                  <md-option ng-value="\'inband\'">inband</md-option>\n                  <md-option ng-value="\'auto\'">auto</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DTMFMODE"></span></div>\n                <div ng-messages="generalForm[\'dtmfmode\'].$error" ng-show="generalForm[\'dtmfmode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DTMFMODE_REQUIRED">dtmfmode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.NAT">nat</label>\n                <md-select name="nat" ng-model="vm.trunk.nat" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'force_rport\'">force_rport</md-option>\n                  <md-option ng-value="\'comedia\'">comedia</md-option>\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'never\'">never</md-option>\n                  <md-option ng-value="\'route\'">route</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.NAT"></span></div>\n                <div ng-messages="generalForm[\'nat\'].$error" ng-show="generalForm[\'nat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.NAT_REQUIRED">nat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.QUALIFY">qualify</label>\n                <md-select name="qualify" ng-model="vm.trunk.qualify" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.QUALIFY"></span></div>\n                <div ng-messages="generalForm[\'qualify\'].$error" ng-show="generalForm[\'qualify\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.QUALIFY_REQUIRED">qualify field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ALLOWCODECS">AllowCodecs</label>\n                <md-select name="allow" ng-model="vm.trunk.allow" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ulaw\'">ulaw</md-option>\n                  <md-option ng-value="\'alaw\'">alaw</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                  <md-option ng-value="\'g723\'">g723</md-option>\n                  <md-option ng-value="\'g726\'">g726</md-option>\n                  <md-option ng-value="\'g722\'">g722</md-option>\n                  <md-option ng-value="\'g729\'">g729</md-option>\n                  <md-option ng-value="\'ilbc\'">ilbc</md-option>\n                  <md-option ng-value="\'opus\'">opus</md-option>\n                  <md-option ng-value="\'h264\'">h264</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ALLOWCODECS"></span></div>\n                <div ng-messages="generalForm[\'allow\'].$error" ng-show="generalForm[\'allow\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ALLOWCODECS_REQUIRED">AllowCodecs field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.INSECURE">insecure</label>\n                <md-select name="insecure" ng-model="vm.trunk.insecure" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'port\'">port</md-option>\n                  <md-option ng-value="\'invite\'">invite</md-option>\n                  <md-option ng-value="\'very\'">very</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.INSECURE"></span></div>\n                <div ng-messages="generalForm[\'insecure\'].$error" ng-show="generalForm[\'insecure\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.INSECURE_REQUIRED">insecure field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALL_LIMIT">call_limit</label>\n                <input type="number" name="call_limit" ng-model="vm.trunk.call_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.CALL_LIMIT"></span></div>\n                <div ng-messages="generalForm[\'call_limit\'].$error" ng-show="generalForm[\'call_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALL_LIMIT_REQUIRED">call_limit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.trunk.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.REGISTRY">registry</label>\n                <input type="text" name="registry" ng-model="vm.trunk.registry" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.REGISTRY"></span></div>\n                <div ng-messages="advancedForm[\'registry\'].$error" ng-show="advancedForm[\'registry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.REGISTRY_REQUIRED">registry field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.DIRECTMEDIA">directmedia</label>\n                <md-select name="directmedia" ng-model="vm.trunk.directmedia" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">yes</md-option>\n                  <md-option ng-value="\'no\'">no</md-option>\n                  <md-option ng-value="\'nonat\'">nonat</md-option>\n                  <md-option ng-value="\'update\'">update</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.DIRECTMEDIA"></span></div>\n                <div ng-messages="advancedForm[\'directmedia\'].$error" ng-show="advancedForm[\'directmedia\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.DIRECTMEDIA_REQUIRED">directmedia field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.CALLCOUNTER">callcounter</label>\n                <md-select name="callcounter" ng-model="vm.trunk.callcounter" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.CALLCOUNTER"></span></div>\n                <div ng-messages="advancedForm[\'callcounter\'].$error" ng-show="advancedForm[\'callcounter\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.CALLCOUNTER_REQUIRED">callcounter field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMDOMAIN">fromdomain</label>\n                <input type="text" name="fromdomain" ng-model="vm.trunk.fromdomain" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMDOMAIN"></span></div>\n                <div ng-messages="advancedForm[\'fromdomain\'].$error" ng-show="advancedForm[\'fromdomain\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMDOMAIN_REQUIRED">fromdomain field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.FROMUSER">fromuser</label>\n                <input type="text" name="fromuser" ng-model="vm.trunk.fromuser" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.FROMUSER"></span></div>\n                <div ng-messages="advancedForm[\'fromuser\'].$error" ng-show="advancedForm[\'fromuser\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.FROMUSER_REQUIRED">fromuser field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OUTBOUNDPROXY">outboundproxy</label>\n                <input type="text" name="outboundproxy" ng-model="vm.trunk.outboundproxy" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.OUTBOUNDPROXY"></span></div>\n                <div ng-messages="advancedForm[\'outboundproxy\'].$error" ng-show="advancedForm[\'outboundproxy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.OUTBOUNDPROXY_REQUIRED">outboundproxy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ADD_PHONE_TO_URI">Add_phone_to_URI</label>\n                <md-select name="usereqphone" ng-model="vm.trunk.usereqphone" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ADD_PHONE_TO_URI"></span></div>\n                <div ng-messages="advancedForm[\'usereqphone\'].$error" ng-show="advancedForm[\'usereqphone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ADD_PHONE_TO_URI_REQUIRED">Add_phone_to_URI field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRUST_REMOTE_PARTY_ID">Trust_Remote_Party_ID</label>\n                <md-select name="trustrpid" ng-model="vm.trunk.trustrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRUST_REMOTE_PARTY_ID"></span></div>\n                <div ng-messages="advancedForm[\'trustrpid\'].$error" ng-show="advancedForm[\'trustrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRUST_REMOTE_PARTY_ID_REQUIRED">Trust_Remote_Party_ID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.SEND_REMOTE_PARTY_ID_HEADER">Send_Remote_Party_ID_header</label>\n                <md-select name="sendrpid" ng-model="vm.trunk.sendrpid" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n\n                  <md-option ng-value="\'pai\'"> {{ \'TOOLS.PAI\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.SEND_REMOTE_PARTY_ID_HEADER"></span></div>\n                <div ng-messages="advancedForm[\'sendrpid\'].$error" ng-show="advancedForm[\'sendrpid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.SEND_REMOTE_PARTY_ID_HEADER_REQUIRED">Send_Remote_Party_ID_header field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.ENCRYPTION">encryption</label>\n                <md-select name="encryption" ng-model="vm.trunk.encryption" required ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'TOOLS.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'TOOLS.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.ENCRYPTION"></span></div>\n                <div ng-messages="advancedForm[\'encryption\'].$error" ng-show="advancedForm[\'encryption\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.ENCRYPTION_REQUIRED">encryption field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.PORT">port</label>\n                <input type="number" name="port" ng-model="vm.trunk.port" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.PORT"></span></div>\n                <div ng-messages="advancedForm[\'port\'].$error" ng-show="advancedForm[\'port\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.PORT_REQUIRED">port field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.TRANSPORT">Transport</label>\n                <md-select name="transport" ng-model="vm.trunk.transport" multiple required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'udp\'">udp</md-option>\n                  <md-option ng-value="\'tcp\'">tcp</md-option>\n                  <md-option ng-value="\'ws\'">ws</md-option>\n                  <md-option ng-value="\'wss\'">wss</md-option>\n                  <md-option ng-value="\'tls\'">tls</md-option>\n                </md-select>\n                <div class="hint"><span translate="TOOLS.HELP.TRANSPORT"></span></div>\n                <div ng-messages="advancedForm[\'transport\'].$error" ng-show="advancedForm[\'transport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.TRANSPORT_REQUIRED">Transport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.T38PT_UDPTL">t38pt_udptl</label>\n                <input type="string" name="t38pt_udptl" ng-model="vm.trunk.t38pt_udptl" value="no" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="TOOLS.HELP.T38PT_UDPTL"></span></div>\n                <div ng-messages="advancedForm[\'t38pt_udptl\'].$error" ng-show="advancedForm[\'t38pt_udptl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.T38PT_UDPTL_REQUIRED">t38pt_udptl field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.VIDEOSUPPORT">Videosupport</label>\n                <md-select name="videosupport" ng-model="vm.trunk.videosupport" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'always\'">Always</md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'videosupport\'].$error" ng-show="advancedForm[\'videosupport\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="TOOLS.ERRORS.VIDEOSUPPORT_REQUIRED">Videosupport field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="TOOLS.OTHERFIELDS">OTHERFIELDS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="trunk-detail-form-container otherfields md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="TOOLS.OTHERFIELDS">OTHERFIELDS</div>\n            </div>\n            <form name="otherFieldsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="TOOLS.OTHERFIELDS">otherFields</label>\n                <textarea name="otherFields" ng-model="vm.trunk.otherFields" autofocus></textarea>\n                <div class="hint"><span translate="TOOLS.HELP.OTHERFIELDS"></span></div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/tools/views/trunks/trunks.html",'<div id="trunks" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.TRUNKS">Trunks</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedTrunks.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedTrunks =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-trunks-count">\n          <span>{{vm.selectedTrunks.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllTrunks()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectTrunks()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedTrunks" csv-label="true" filename="trunks.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedTrunks($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- TRUNK TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedTrunks" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="active">{{ \'TOOLS.ACTIVE\' | translate }}</th>\n                <th md-column md-order-by="host">{{ \'TOOLS.HOST\' | translate }}</th>\n                <th md-column md-order-by="registry">{{ \'TOOLS.REGISTRY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.trunks.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="trunk" md-select-id="id" ng-repeat="trunk in vm.trunks.rows">\n                <td md-cell ng-if="trunk.userpic"><img class="avatar" alt="{{trunk.name}}" ng-src="api/users/{{trunk.id}}/avatar" /></td>\n                <td md-cell ng-if="!trunk.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{trunk.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="id ">{{trunk.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="name ">{{trunk.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="active ">\n                  <md-icon md-colors="{color: {{trunk.active ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{trunk.active ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="host ">{{trunk.host}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="registry ">{{trunk.registry}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(trunk, ev) : vm.createOrEditTrunk($event, trunk)" md-cell class="description ">{{trunk.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(trunk, $event    )" translate="TOOLS.EDIT_TRUNK">\n                          Edit Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.clonedialog(trunk, $event    )" translate="TOOLS.CLONE_TRUNK">\n                          clone Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(trunk, $event    )" translate="TOOLS.GOTOREALTIME_TRUNK">\n                          goToRealtime Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(trunk, $event    )" translate="TOOLS.DELETE_TRUNK">\n                          Delete Trunk\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.trunks.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / TRUNK TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD TRUNK BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-trunk-button" ng-click="vm.createOrEditTrunk($event)" aria-label="add trunk" translate translate-attr-aria-label="TOOLS.ADD_TRUNK">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD TRUNK BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/variables/create/dialog.html",'<md-dialog class="variable-dialog" aria-label="New Variable">\n  <form name="variableForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.variable.name" ng-required="true" autofocus>\n\n        <div ng-messages="variableForm[\'name\'].$error" ng-show="variableForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.variable.description">\n\n        <div ng-messages="variableForm[\'description\'].$error" ng-show="variableForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVariable" ng-click="vm.saveVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid || variableForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVariable" ng-click="vm.addNewVariable()" class="send-button md-accent md-raised" ng-disabled="variableForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_VARIABLE" translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n          ADD VARIABLE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVariable" ng-click="vm.deleteVariable($event)" aria-label="DELETE" translate translate-attr-aria-label="TOOLS.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="TOOLS.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/tools/views/variables/variables.html",'<div id="variables" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-auto-fix" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="TOOLS.VARIABLES">Variables</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="TOOLS.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVariables.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVariables =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="TOOLS.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-variables-count">\n          <span>{{vm.selectedVariables.length}}</span>\n          <span translate="TOOLS.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="TOOLS.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVariables()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVariables()" translate="TOOLS.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVariables" csv-label="true" filename="variables.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVariables($event)" aria-label="delete selected" translate translate-attr-label="TOOLS.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VARIABLE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVariables" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVariables">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'TOOLS.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'TOOLS.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'TOOLS.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.variables.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="TOOLS.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="variable" md-select-id="id" ng-repeat="variable in vm.variables.rows">\n                <td md-cell ng-if="variable.userpic"><img class="avatar" alt="{{variable.name}}" ng-src="api/users/{{variable.id}}/avatar" /></td>\n                <td md-cell ng-if="!variable.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{variable.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="id ">{{variable.id}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="name ">{{variable.name}}</td>\n                <td ng-click="vm.createOrEditVariable($event, variable)" md-cell class="description ">{{variable.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="TOOLS.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(variable, $event    )" translate="TOOLS.EDIT_VARIABLE">\n                          Edit Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(variable, $event    )" translate="TOOLS.DELETE_VARIABLE">\n                          Delete Variable\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'TOOLS.PAGE\' | translate}}:\', rowsPerPage: \'{{\'TOOLS.ROWSPERPAGE\' | translate}}:\', of: \'{{\'TOOLS.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.variables.count}}" md-on-paginate="vm.getVariables" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VARIABLE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VARIABLE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-variable-button" ng-click="vm.createOrEditVariable($event)" aria-label="add variable" translate translate-attr-aria-label="TOOLS.ADD_VARIABLE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VARIABLE BUTTON --\x3e\n</div>'),e.put("app/main/apps/video/views/screenRecordings/create/dialog.html",'<md-dialog class="screenRecording-dialog" aria-label="New screenRecording">\n  <form name="screenRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VIDEO.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.screenRecording.rating" autofocus ng-disabled="!vm.newscreenRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VIDEO.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="screenRecordingForm[\'rating\'].$error" ng-show="screenRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VIDEO.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newscreenRecording" ng-click="vm.savescreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid || screenRecordingForm.$pristine" aria-label="SAVE" translate="VIDEO.SAVE" translate-attr-aria-label="VIDEO.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newscreenRecording" ng-click="vm.addNewscreenRecording()" class="send-button md-accent md-raised" ng-disabled="screenRecordingForm.$invalid" aria-label="ADD" translate="VIDEO.ADD_SCREENRECORDING" translate-attr-aria-label="VIDEO.ADD_SCREENRECORDING">\n          ADD SCREENRECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newscreenRecording" ng-click="vm.deletescreenRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VIDEO.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VIDEO.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/partialViews/play.html",'<md-dialog class="play-dialog" aria-label="play">\n  <form name="playForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="{{ vm.app.toUpperCase() }}.{{  vm.label.toUpperCase() }}">Play Recording</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-disabled="vm.loading" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-hide="vm.loading">\n      <div layout="row" layout-sm flex>\n        \x3c!-- VIRTUAL field --\x3e\n        <md-card>\n\n          <md-card-title ng-if="vm.actionOptions.upperTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>: {{ vm.recording.updatedAt}}</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          \x3c!-- video recording directive --\x3e\n          <ms-dialog-recording ng-if="vm.format" id="vm.recording.id" title="vm.filename" element="vm.element" model="vm.route" path="vm.path" class="md-card-image"></ms-dialog-recording>\n          \x3c!-- / video recording directive --\x3e\n\n          <span ng-if="!vm.format">\n            <em ng-if="vm.found">{{ vm.app.toUpperCase() + \'.CANT_PLAY_THIS_FILE\' | translate }}</em>\n            <em ng-if="!vm.found">{{ vm.app.toUpperCase() + \'.FILE_NOT_FOUND\' | translate }}</em>\n          </span>\n\n          <md-card-title ng-if="vm.actionOptions.lowerTitle">\n            <md-card-title-text>\n              <span class="md-headline">{{ vm.filename }}</span>\n              <span class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.UPDATEDAT"></span>:{{ vm.recording.updatedAt}}</span>\n              <span ng-if="vm.actionOptions.properties" class="md-subhead"><span translate="{{ vm.app.toUpperCase() }}.PROPERTIES"></span>:</span>\n            </md-card-title-text>\n          </md-card-title>\n\n          <md-card-content ng-if="vm.actionOptions.properties">\n            <md-list>\n              <md-list-item class="md-2-line" ng-repeat="(key,value) in vm.properties" ng-click="null" ng-if="key != \'value\' && key != \'updatedAt\' && key != \'queue\'">\n\n                <md-icon ng-if="vm.icon" class="md-avatar-icon" md-font-icon="vm.actionOptions.propertiesIcon" class="s24"></md-icon>\n\n                <div class="md-list-item-text" layout="column">\n                  <p><b><span translate="{{ vm.app.toUpperCase() }}.{{ key.toUpperCase() }}"></span></b></p>\n                  <p>{{ value }}\n                    <p>\n                </div>\n              </md-list-item>\n            </md-list>\n          </md-card-content>\n\n\n        </md-card>\n      </div>\n    </md-dialog-content>\n    <div ng-hide="!vm.loading" layout-fill style="min-height: 397px;" layout="row" layout-sm="column" layout-align="center center">\n      <md-progress-circular class="md-primary md-hue-1" md-diameter="96"></md-progress-circular>\n    </div>\n  </form>\n</md-dialog>'),e.put("app/main/apps/video/views/screenRecordings/screenRecordings.html",'<div id="screenRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-video" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VIDEO.SCREENRECORDINGS">ScreenRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VIDEO.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getScreenRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedScreenRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedScreenRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VIDEO.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-screenRecordings-count">\n          <span>{{vm.selectedScreenRecordings.length}}</span>\n          <span translate="VIDEO.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VIDEO.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllScreenRecordings()" translate="VIDEO.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectScreenRecordings()" translate="VIDEO.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedScreenRecordings" csv-label="true" filename="screenRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedScreenRecordings($event)" aria-label="delete selected" translate translate-attr-label="VIDEO.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- SCREENRECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedScreenRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getScreenRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VIDEO.ID\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VIDEO.RATING\' | translate }}</th>\n                <th md-column md-order-by="UserId">{{ \'VIDEO.AGENT\' | translate }}</th>\n                <th md-column md-order-by="duration">{{ \'VIDEO.DURATION\' | translate }}</th>\n                <th md-column md-order-by="startedAt">{{ \'VIDEO.RECORDSTARTTIME\' | translate }}</th>\n                <th md-column md-order-by="closedAt">{{ \'VIDEO.RECORDENDTIME\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.screenRecordings.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VIDEO.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="screenRecording" md-select-id="id" ng-repeat="screenRecording in vm.screenRecordings.rows">\n                <td md-cell ng-if="screenRecording.userpic"><img class="avatar" alt="{{screenRecording.name}}" ng-src="api/users/{{screenRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!screenRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{screenRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="id ">{{screenRecording.id}}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="screenRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:screenRecording.rating"></md-icon><span ng-hide="screenRecording.rating" translate="VIDEO.NO_RATING">No rating</span>\n                </td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="UserId ">{{ (vm.users | filter : {\'id\':screenRecording.UserId} : true)[0].fullname }}</td>\n                <td md-cell><span ng-bind="vm.convertDuration(screenRecording.duration)"></span></td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="startedAt ">{{screenRecording.startedAt | date:\'medium\' }}</td>\n                <td ng-click="vm.createOrEditscreenRecording($event, screenRecording)" md-cell class="closedAt ">{{screenRecording.closedAt | date:\'medium\' }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VIDEO.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.playrecording(screenRecording, $event  , \'value\'  , \'play_screenrecording\'  , \'video\' )" translate="VIDEO.PLAY_SCREENRECORDING">\n                          play screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadScreenRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(screenRecording, $event  , \'screen/recordings\'   )" translate="VIDEO.DOWNLOAD_SCREENRECORDING">\n                          Download screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(screenRecording, $event    )" translate="VIDEO.DELETE_SCREENRECORDING">\n                          Delete screenRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VIDEO.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VIDEO.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VIDEO.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.screenRecordings.count}}" md-on-paginate="vm.getScreenRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / SCREENRECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/routing/dialog.html",'<md-dialog ng-init="vm.init()" class="voice-routing-dialog" aria-label="New routing application">\n  <form name="routingAppForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'VOICE.EDIT_\' + vm.application.appType | uppercase | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content ng-switch="vm.application.appType">\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <div ng-switch-when="agi">\n        <div ng-include="\'app/main/apps/voice/routing/views/agi.html\'"></div>\n      </div>\n      <div ng-switch-when="custom">\n        <div ng-include="\'app/main/apps/voice/routing/views/custom.html\'"></div>\n      </div>\n      <div ng-switch-when="dial">\n        <div ng-include="\'app/main/apps/voice/routing/views/dial.html\'"></div>\n      </div>\n      <div ng-switch-when="externalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/externalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="goTo">\n        <div ng-include="\'app/main/apps/voice/routing/views/goTo.html\'"></div>\n      </div>\n      <div ng-switch-when="hangup">\n        <div ng-include="\'app/main/apps/voice/routing/views/hangup.html\'"></div>\n      </div>\n      <div ng-switch-when="internalDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/internalDial.html\'"></div>\n      </div>\n      <div ng-switch-when="outboundDial">\n        <div ng-include="\'app/main/apps/voice/routing/views/outboundDial.html\'"></div>\n      </div>\n      <div ng-switch-when="playback">\n        <div ng-include="\'app/main/apps/voice/routing/views/playback.html\'"></div>\n      </div>\n      <div ng-switch-when="queue">\n        <div ng-include="\'app/main/apps/voice/routing/views/queue.html\'"></div>\n      </div>\n      <div ng-switch-when="ringGroup">\n        <div ng-include="\'app/main/apps/voice/routing/views/ringGroup.html\'"></div>\n      </div>\n      <div ng-switch-when="set">\n        <div ng-include="\'app/main/apps/voice/routing/views/set.html\'"></div>\n      </div>\n      <div ng-switch-when="voicemail">\n        <div ng-include="\'app/main/apps/voice/routing/views/voicemail.html\'"></div>\n      </div>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveRoutingApp()" class="send-button md-accent md-raised" ng-disabled="routingAppForm.$invalid || routingAppForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/interval/dialog.html",'<md-dialog ng-init="vm.initialize()" class="interval-dialog" aria-label="Edit Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'TOOLS.EDIT_INTERVAL\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.crudPermissions.canEdit" ng-change="vm.onTypeChange()">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | startcase }}</md-option>\n        </md-select>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.crudPermissions.canEdit" required>\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals.rows" ng-disabled="interval.canSelect === false">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n        </md-input-container>\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | startcase }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="start center">\n      <md-button type="submit" ng-if="vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/routing/views/agi.html",'<md-input-container class="md-block">\n  <label translate="VOICE.PROJECT">Project</label>\n  <md-select name="project" ng-model="vm.application.project" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'agi://127.0.0.1/square,{{project.name}}\'" ng-repeat="project in vm.projects.rows" ng-disabled="project.canSelect === false">{{ project.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'project\'].$error" ng-show="routingAppForm[\'project\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PROJECT_REQUIRED">Project field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/custom.html",'<md-input-container class="md-block">\n  <label translate="VOICE.APPLICATION_NAME">Application_Name</label>\n  <input type="text" name="app" ng-model="vm.application.app" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'app\'].$error" ng-show="routingAppForm[\'app\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.APPLICATION_NAME_REQUIRED">Application_Name field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ARGUMENTS">Arguments</label>\n  <input type="text" name="appdata" ng-model="vm.application.appdata" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'appdata\'].$error" ng-show="routingAppForm[\'appdata\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ARGUMENTS_REQUIRED">Arguments field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/dial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TECHNOLOGY/RESOURCE">Technology/Resource</label>\n  <input type="text" name="tech" ng-model="vm.application.tech" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'tech\'].$error" ng-show="routingAppForm[\'tech\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TECHNOLOGY/RESOURCE_REQUIRED">Technology/Resource field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/externalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PHONE">Phone</label>\n  <input type="text" name="phone" ng-model="vm.application.phone" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'phone\'].$error" ng-show="routingAppForm[\'phone\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PHONE_REQUIRED">Phone field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/goTo.html",'<md-input-container class="md-block">\n  <label translate="VOICE.CONTEXT">Context</label>\n  <md-select name="context" ng-model="vm.application.context" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{\n      context.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'context\'].$error" ng-show="routingAppForm[\'context\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.EXTENSION">Extension</label>\n  <input type="text" name="extension" ng-model="vm.application.extension" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'extension\'].$error" ng-show="routingAppForm[\'extension\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.EXTENSION_REQUIRED">Extension field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PRIORITY">Priority</label>\n  <input type="text" name="priority" ng-model="vm.application.priority" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'priority\'].$error" ng-show="routingAppForm[\'priority\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/hangup.html","<md-input-container class=\"md-block\">\n  <label translate=\"VOICE.HANGUP_CAUSE\">Hangup_Cause</label>\n  <md-select name=\"appdata\" ng-model=\"vm.application.appdata\" autofocus required ng-disabled=\"!vm.crudPermissions.canEdit\">\n    <md-option ng-value=\"'1'\"> {{ 'VOICE.HANGUPCAUSE_1' | translate }} </md-option>\n    <md-option ng-value=\"'16'\"> {{ 'VOICE.HANGUPCAUSE_16' | translate }} </md-option>\n    <md-option ng-value=\"'17'\"> {{ 'VOICE.HANGUPCAUSE_17' | translate }} </md-option>\n    <md-option ng-value=\"'18'\"> {{ 'VOICE.HANGUPCAUSE_18' | translate }} </md-option>\n    <md-option ng-value=\"'21'\"> {{ 'VOICE.HANGUPCAUSE_21' | translate }} </md-option>\n    <md-option ng-value=\"'22'\"> {{ 'VOICE.HANGUPCAUSE_22' | translate }} </md-option>\n    <md-option ng-value=\"'27'\"> {{ 'VOICE.HANGUPCAUSE_27' | translate }} </md-option>\n    <md-option ng-value=\"'38'\"> {{ 'VOICE.HANGUPCAUSE_38' | translate }} </md-option>\n    <md-option ng-value=\"'41'\"> {{ 'VOICE.HANGUPCAUSE_41' | translate }} </md-option>\n  </md-select>\n  <div ng-messages=\"routingAppForm['appdata'].$error\" ng-show=\"routingAppForm['appdata'].$touched\" role=\"alert\">\n    <div ng-message=\"required\">\n      <span translate=\"VOICE.ERRORS.HANGUP_CAUSE_REQUIRED\">Hangup_Cause field is required</span>\n    </div>\n  </div>\n</md-input-container>"),e.put("app/main/apps/voice/routing/views/internalDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.user" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/outboundDial.html",'<md-input-container class="md-block">\n  <label translate="VOICE.TRUNK">Trunk</label>\n  <md-select name="trunk" ng-model="vm.application.trunk" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="trunk.name" ng-repeat="trunk in vm.trunks.rows" ng-disabled="trunk.canSelect === false">{{\n      trunk.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'trunk\'].$error" ng-show="routingAppForm[\'trunk\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TRUNK_REQUIRED">Trunk field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.CALLER_ID">Caller_ID</label>\n  <input type="text" name="callerID" ng-model="vm.application.callerID" ng-disabled="!vm.crudPermissions.canEdit">\n  <div class="hint"><span translate="VOICE.HELP.CALLER_ID"></span></div>\n  <div ng-messages="routingAppForm[\'callerID\'].$error" ng-show="routingAppForm[\'callerID\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.CALLER_ID_REQUIRED">Caller_ID field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.PREFIX">Prefix</label>\n  <input type="text" name="prefix" ng-model="vm.application.prefix" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'prefix\'].$error" ng-show="routingAppForm[\'prefix\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TAGS">Tags</label>\n  <md-select name="tag" ng-model="vm.application.tag" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'--\'">None</md-option>\n    <md-option ng-value="tag.name" ng-repeat="tag in vm.tags.rows" ng-disabled="tag.canSelect === false">{{ tag.name }}\n    </md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'tag\'].$error" ng-show="routingAppForm[\'tag\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TAGS_REQUIRED">Tags field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/playback.html",'<md-input-container class="md-block">\n  <label translate="VOICE.AUDIO_FILES">Audio_Files</label>\n  <md-select name="sound" ng-model="vm.application.appdata" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AUDIO_FILES_REQUIRED">Audio_Files field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/queue.html",'<md-input-container class="md-block">\n  <label translate="VOICE.QUEUE">Queue</label>\n  <md-select name="queue" ng-model="vm.application.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows" ng-disabled="queue.canSelect === false">{{\n      queue.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'queue\'].$error" ng-show="routingAppForm[\'queue\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="URL" ng-model="vm.application.URL" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'URL\'].$error" ng-show="routingAppForm[\'URL\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.ANNOUNCE_OVERRIDES">Announce_Overrides</label>\n  <md-select name="sound" ng-model="vm.application.sound" ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'\'">None</md-option>\n    <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/{{sound.save_name}}\'" ng-repeat="sound in vm.sounds.rows" ng-disabled="sound.canSelect === false">{{ sound.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'sound\'].$error" ng-show="routingAppForm[\'sound\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.ANNOUNCE_OVERRIDES_REQUIRED">Announce_Overrides field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.AGI">Agi</label>\n  <input type="text" name="agi" ng-model="vm.application.agi" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'agi\'].$error" ng-show="routingAppForm[\'agi\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.AGI_REQUIRED">Agi field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.MACRO">Macro</label>\n  <input type="text" name="macro" ng-model="vm.application.macro" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'macro\'].$error" ng-show="routingAppForm[\'macro\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MACRO_REQUIRED">Macro field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.GOSUB">GoSub</label>\n  <input type="text" name="gosub" ng-model="vm.application.gosub" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'gosub\'].$error" ng-show="routingAppForm[\'gosub\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.GOSUB_REQUIRED">GoSub field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.RULE">Rule</label>\n  <input type="text" name="rule" ng-model="vm.application.rule" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'rule\'].$error" ng-show="routingAppForm[\'rule\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.RULE_REQUIRED">Rule field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.POSITION">Position</label>\n  <input type="number" name="position" ng-model="vm.application.position" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'position\'].$error" ng-show="routingAppForm[\'position\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.POSITION_REQUIRED">Position field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Position must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <md-switch ng-model="vm.application.answer" aria-label="Answer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.ANSWER">Answer</span></md-switch>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/ringGroup.html",'<md-input-container class="md-block">\n  <label translate="VOICE.USER">User</label>\n  <md-select name="user" ng-model="vm.application.users" autofocus multiple required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'SIP/{{user.name}}\'" ng-repeat="user in vm.users.rows" ng-disabled="user.canSelect === false">\n      {{ user.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'user\'].$error" ng-show="routingAppForm[\'user\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.USER_REQUIRED">User field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.TIMEOUT">Timeout</label>\n  <input type="number" name="timeout" ng-model="vm.application.timeout" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'timeout\'].$error" ng-show="routingAppForm[\'timeout\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n    </div>\n    <div ng-message="min">\n      <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or\n        equal than</span> <span>0</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.URL">Url</label>\n  <input type="text" name="url" ng-model="vm.application.url" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'url\'].$error" ng-show="routingAppForm[\'url\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.URL_REQUIRED">Url field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/set.html",'<md-input-container class="md-block">\n  <label translate="VOICE.VARIABLE">Variable</label>\n  <md-select name="variable" ng-model="vm.application.name" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="variable.name" ng-repeat="variable in vm.variables.rows" ng-disabled="variable.canSelect === false">{{\n      variable.name }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'variable\'].$error" ng-show="routingAppForm[\'variable\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.VALUE">Value</label>\n  <input type="text" name="value" ng-model="vm.application.value" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'value\'].$error" ng-show="routingAppForm[\'value\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.VALUE_REQUIRED">Value field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/routing/views/voicemail.html",'<md-input-container class="md-block">\n  <label translate="VOICE.MAILBOX@CONTEXT">Mailbox@Context</label>\n  <md-select name="voiceMail" ng-model="vm.application.voiceMail" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n    <md-option ng-value="\'{{voiceMail.mailbox}}@from-voicemail\'" ng-repeat="voiceMail in vm.voiceMails.rows" ng-disabled="voiceMail.canSelect === false">{{ voiceMail.mailbox }}</md-option>\n  </md-select>\n  <div ng-messages="routingAppForm[\'voiceMail\'].$error" ng-show="routingAppForm[\'voiceMail\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.MAILBOX@CONTEXT_REQUIRED">Mailbox@Context field is required</span>\n    </div>\n  </div>\n</md-input-container>\n<md-input-container class="md-block">\n  <label translate="VOICE.OPTIONS">Options</label>\n  <input type="text" name="options" ng-model="vm.application.options" ng-disabled="!vm.crudPermissions.canEdit">\n  <div ng-messages="routingAppForm[\'options\'].$error" ng-show="routingAppForm[\'options\'].$touched" role="alert">\n    <div ng-message="required">\n      <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n    </div>\n  </div>\n</md-input-container>'),e.put("app/main/apps/voice/views/chanSpies/chanSpies.html",'<div id="chanSpies" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CHANSPIES">ChanSpies</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedChanSpies.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedChanSpies =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-chanSpies-count">\n          <span>{{vm.selectedChanSpies.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllChanSpies()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectChanSpies()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedChanSpies" csv-label="true" filename="chanSpies.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedChanSpies($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CHANSPY TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedChanSpies" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getChanSpies">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="prefix">{{ \'VOICE.PREFIX\' | translate }}</th>\n                <th md-column md-order-by="auth">{{ \'VOICE.AUTH\' | translate }}</th>\n                <th md-column md-order-by="record">{{ \'VOICE.RECORD\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.chanSpies.rows.length">\n                <td md-cell colspan="7">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="chanSpy" md-select-id="id" ng-repeat="chanSpy in vm.chanSpies.rows">\n                <td md-cell ng-if="chanSpy.userpic"><img class="avatar" alt="{{chanSpy.name}}" ng-src="api/users/{{chanSpy.id}}/avatar" /></td>\n                <td md-cell ng-if="!chanSpy.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{chanSpy.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="id ">{{chanSpy.id}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="name ">{{chanSpy.name}}</td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="prefix ">{{chanSpy.prefix}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="auth ">\n                  <md-icon md-colors="{color: {{chanSpy.auth ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.auth ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(chanSpy, ev) : vm.createOrEditchanSpy($event, chanSpy)" md-cell class="record ">\n                  <md-icon md-colors="{color: {{chanSpy.record ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{chanSpy.record ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\n                <td ng-click="vm.createOrEditchanSpy($event, chanSpy)" md-cell class="description ">{{chanSpy.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(chanSpy, $event    )" translate="VOICE.EDIT_CHANSPY">\n                          Edit chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(chanSpy, $event    )" translate="VOICE.DELETE_CHANSPY">\n                          Delete chanSpy\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.chanSpies.count}}" md-on-paginate="vm.getChanSpies" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CHANSPY TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CHANSPY BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-chanSpy-button" ng-click="vm.createOrEditchanSpy($event)" aria-label="add chanSpy" translate translate-attr-aria-label="VOICE.ADD_CHANSPY">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CHANSPY BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/chanSpies/create/dialog.html",'<md-dialog class="chanSpy-dialog" aria-label="New chanSpy">\n  <form name="chanSpyForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.chanSpy.name" ng-required="true" autofocus>\n\n        <div ng-messages="chanSpyForm[\'name\'].$error" ng-show="chanSpyForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PREFIX">Prefix</label>\n        <input type="text" name="prefix" ng-model="vm.chanSpy.prefix" ng-required="true">\n\n        <div ng-messages="chanSpyForm[\'prefix\'].$error" ng-show="chanSpyForm[\'prefix\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PREFIX_REQUIRED">Prefix field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OPTIONS">Options</label>\n        <md-select name="options" ng-model="vm.chanSpy.options" multiple required>\n          <md-option ng-value="\'b\'">b: Only spy on channels involved in a bridged call.</md-option>\n          <md-option ng-value="\'B\'">B: Instead of whispering on a single channel barge in on both channels involved in the call.</md-option>\n          <md-option ng-value="\'E\'">E: Exit when the spied-on channel hangs up.</md-option>\n          <md-option ng-value="\'o\'">o: Only listen to audio coming from this channel.</md-option>\n          <md-option ng-value="\'q\'">q: Don\'t play a beep when beginning to spy on a channel, or speak the selected channel name.</md-option>\n          <md-option ng-value="\'s\'">s: Skip the playback of the channel type (i.e. SIP, IAX, etc) when speaking the selected channel name.</md-option>\n          <md-option ng-value="\'S\'">S: Stop when no more channels are left to spy on.</md-option>\n          <md-option ng-value="\'w\'">w: Enable whisper mode, so the spying channel can talk to the spied-on channel.</md-option>\n          <md-option ng-value="\'W\'">W: Enable private whisper mode, so the spying channel can talk to the spied-on channel but cannot listen to that channel.</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'options\'].$error" ng-show="chanSpyForm[\'options\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OPTIONS_REQUIRED">Options field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.auth" aria-label="Auth"><span translate="VOICE.AUTH">Auth</span></md-switch>\n      </md-input-container>\n      <md-input-container class="md-block" ng-if="vm.chanSpy.auth">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.chanSpy.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="chanSpyForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.chanSpy.record" aria-label="Record"><span translate="VOICE.RECORD">Record</span></md-switch>\n      </md-input-container>\n      <md-input-container ng-if="vm.chanSpy.record" class="md-block">\n        <label translate="VOICE.RECORDINGFORMAT">recordingFormat</label>\n        <md-select name="recordingFormat" ng-model="vm.chanSpy.recordingFormat" required>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n        </md-select>\n        <div ng-messages="chanSpyForm[\'recordingFormat\'].$error" ng-show="chanSpyForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDINGFORMAT_REQUIRED">recordingFormat field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.chanSpy.description">\n\n        <div ng-messages="chanSpyForm[\'description\'].$error" ng-show="chanSpyForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newchanSpy" ng-click="vm.savechanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid || chanSpyForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newchanSpy" ng-click="vm.addNewchanSpy()" class="send-button md-accent md-raised" ng-disabled="chanSpyForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CHANSPY" translate-attr-aria-label="VOICE.ADD_CHANSPY">\n          ADD CHANSPY\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newchanSpy" ng-click="vm.deletechanSpy($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/contexts/contexts.html",'<div id="contexts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.CONTEXTS">Contexts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedContexts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedContexts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-contexts-count">\n          <span>{{vm.selectedContexts.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllContexts()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContexts()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedContexts" csv-label="true" filename="contexts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedContexts($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- CONTEXT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContexts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContexts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contexts.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="context" md-select-id="id" ng-repeat="context in vm.contexts.rows">\n                <td md-cell ng-if="context.userpic"><img class="avatar" alt="{{context.name}}" ng-src="api/users/{{context.id}}/avatar" /></td>\n                <td md-cell ng-if="!context.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{context.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="id ">{{context.id}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="name ">{{context.name}}</td>\n                <td ng-click="vm.createOrEditContext($event, context)" md-cell class="description ">{{context.description}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(context, $event    )" translate="VOICE.EDIT_CONTEXT">\n                          Edit Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(context, $event    )" translate="VOICE.DELETE_CONTEXT">\n                          Delete Context\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.contexts.count}}" md-on-paginate="vm.getContexts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTEXT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD CONTEXT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-context-button" ng-click="vm.createOrEditContext($event)" aria-label="add context" translate translate-attr-aria-label="VOICE.ADD_CONTEXT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTEXT BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/contexts/create/dialog.html",'<md-dialog class="context-dialog" aria-label="New Context">\n  <form name="contextForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.context.name" ng-required="true" autofocus>\n\n        <div ng-messages="contextForm[\'name\'].$error" ng-show="contextForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.context.description">\n\n        <div ng-messages="contextForm[\'description\'].$error" ng-show="contextForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newContext" ng-click="vm.saveContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid || contextForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newContext" ng-click="vm.addNewContext()" class="send-button md-accent md-raised" ng-disabled="contextForm.$invalid" aria-label="ADD" translate="VOICE.ADD_CONTEXT" translate-attr-aria-label="VOICE.ADD_CONTEXT">\n          ADD CONTEXT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContext" ng-click="vm.deleteContext($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="inbound-route-dialog" aria-label="New InboundRoute">\n  <form name="inboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInboundRoute ? \'VOICE.NEW_INBOUNDROUTE\' : \'VOICE.EDIT_INBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="inboundrouteForm[\'exten\'].$error" ng-show="inboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.inboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="inboundrouteForm[\'context\'].$error" ng-show="inboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="inboundrouteForm[\'alias\'].$error" ng-show="inboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.inboundRoute.description">\n        <div ng-messages="inboundrouteForm[\'description\'].$error" ng-show="inboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInboundRoute" ng-click="vm.saveInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid || inboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInboundRoute" ng-click="vm.addNewInboundRoute()" class="send-button md-accent md-raised" ng-disabled="inboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n          ADD INBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInboundRoute" ng-click="vm.deleteInboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/inboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-inbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-inbound-routes-button md-icon-button" aria-label="Go to inbound routes" ng-click="vm.gotoInboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="inbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/inboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.inboundRoute.id}}\n            <span ng-if="vm.inboundRoute.exten">{{vm.inboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.inboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.inboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.inboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.inboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.inboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="inbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/inboundRoutes/inboundRoutes.html",'<div id="inbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INBOUNDROUTES">InboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-inbound-routes-count">\n          <span>{{ vm.selectedInboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = vm.inboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInboundRoutes" csv-label="true" filename="inbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.inboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.inboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INBOUNDROUTE">\n                          Edit InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INBOUNDROUTE">\n                          Delete InboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.inboundRoutes.count }}" md-on-paginate="vm.getInboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-inbound-route-button" ng-click="vm.createOrEditInboundRoute($event)" aria-label="add inbound route" translate translate-attr-aria-label="VOICE.ADD_INBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="internal-route-dialog" aria-label="New InternalRoute">\n  <form name="internalrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newInternalRoute ? \'VOICE.NEW_INTERNALROUTE\' : \'VOICE.EDIT_INTERNALROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="internalrouteForm[\'exten\'].$error" ng-show="internalrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.internalRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="internalrouteForm[\'context\'].$error" ng-show="internalrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="internalrouteForm[\'alias\'].$error" ng-show="internalrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.internalRoute.description">\n        <div ng-messages="internalrouteForm[\'description\'].$error" ng-show="internalrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newInternalRoute" ng-click="vm.saveInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid || internalrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newInternalRoute" ng-click="vm.addNewInternalRoute()" class="send-button md-accent md-raised" ng-disabled="internalrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_INTERNALROUTE" translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n          ADD INTERNALROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newInternalRoute" ng-click="vm.deleteInternalRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/internalRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-internal-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-internal-routes-button md-icon-button" aria-label="Go to internal routes" ng-click="vm.gotoInternalRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_INTERNALROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="internal-route-image" hide-xs>\n          <img ng-src="assets/images/business/internalroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.internalRoute.id}}\n            <span ng-if="vm.internalRoute.exten">{{vm.internalRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.internalRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveInternalRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.internalRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.internalRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.internalRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.internalRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="internal-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/internalRoutes/internalRoutes.html",'<div id="internal-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.INTERNALROUTES">InternalRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedInternalRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedInternalRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-internal-routes-count">\n          <span>{{ vm.selectedInternalRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = vm.internalRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedInternalRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedInternalRoutes" csv-label="true" filename="internal_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedInternalRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedInternalRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getInternalRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.internalRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.internalRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditInternalRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_INTERNALROUTE">\n                          Edit InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_INTERNALROUTE">\n                          Delete InternalRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.internalRoutes.count }}" md-on-paginate="vm.getInternalRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-internal-route-button" ng-click="vm.createOrEditInternalRoute($event)" aria-label="add internal route" translate translate-attr-aria-label="VOICE.ADD_INTERNALROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/musiconholds/create/dialog.html",'<md-dialog class="musiconhold-dialog" aria-label="New MusicOnHold">\n  <form name="musiconholdForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus ng-disabled="!vm.newMusicOnHold">\n\n        <div ng-messages="musiconholdForm[\'name\'].$error" ng-show="musiconholdForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.MODE">Mode</label>\n        <md-select name="mode" ng-model="vm.musiconhold.mode" required ng-disabled="!vm.newMusicOnHold">\n\n          <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n          <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'mode\'].$error" ng-show="musiconholdForm[\'mode\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.DIRECTORY">Directory</label>\n        <input type="" name="directory" ng-model="vm.musiconhold.directory">\n\n        <div ng-messages="musiconholdForm[\'directory\'].$error" ng-show="musiconholdForm[\'directory\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n        <label translate="VOICE.APPLICATION">Application</label>\n        <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true">\n\n        <div ng-messages="musiconholdForm[\'application\'].$error" ng-show="musiconholdForm[\'application\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n        <label translate="VOICE.SORT">Sort</label>\n        <md-select name="sort" ng-model="vm.musiconhold.sort">\n\n          <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n          <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="musiconholdForm[\'sort\'].$error" ng-show="musiconholdForm[\'sort\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMusicOnHold" ng-click="vm.saveMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid || musiconholdForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMusicOnHold" ng-click="vm.addNewMusicOnHold()" class="send-button md-accent md-raised" ng-disabled="musiconholdForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MUSICONHOLD" translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n          ADD MUSICONHOLD\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMusicOnHold" ng-click="vm.deleteMusicOnHold($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/mohSounds/dialog.html",'<md-dialog class="mohSound-dialog" aria-label="New MohSound">\n  <form name="mohSoundForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FILE">File</label>\n        <md-select name="id" ng-model="vm.mohSound.id" autofocus>\n          <md-option ng-value="id.id" ng-repeat="id in vm.sounds" ng-disabled="id.canSelect === false">{{ id.name }}</md-option>\n        </md-select>\n        <div ng-messages="mohSoundForm[\'id\'].$error" ng-show="mohSoundForm[\'id\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FILE_REQUIRED">File field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newMohSound" ng-click="vm.saveMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid || mohSoundForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newMohSound" ng-click="vm.addNewMohSound()" class="send-button md-accent md-raised" ng-disabled="mohSoundForm.$invalid" aria-label="ADD" translate="VOICE.ADD_MOHSOUND" translate-attr-aria-label="VOICE.ADD_MOHSOUND">\n          ADD MOHSOUND\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newMohSound" ng-click="vm.deleteMohSound($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/musiconholds/edit/view.html",'<div id="voice-musiconhold" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-musiconholds-button md-icon-button" aria-label="Go to musiconholds" ng-click="vm.gotoMusicOnHolds()" translate translate-attr-aria-label="VOICE.GO_TO_MUSICONHOLDS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="musiconhold-image" hide-xs>\n          <img ng-src="assets/images/business/musiconholds.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.musiconhold.id}}\n            <span ng-if="vm.musiconhold.name">{{vm.musiconhold.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.musiconhold.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveMusicOnHold()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (mohSoundsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.musiconhold.name" ng-required="true" autofocus disabled>\n\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MODE">Mode</label>\n                <md-select name="mode" ng-model="vm.musiconhold.mode" required disabled>\n\n                  <md-option ng-value="\'files\'"> {{ \'VOICE.FILES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'custom\'"> {{ \'VOICE.CUSTOM\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'mode\'].$error" ng-show="generalForm[\'mode\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MODE_REQUIRED">Mode field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.DIRECTORY">Directory</label>\n                <input type="" name="directory" ng-model="vm.musiconhold.directory" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'directory\'].$error" ng-show="generalForm[\'directory\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DIRECTORY_REQUIRED">Directory field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'custom\'" class="md-block">\n                <label translate="VOICE.APPLICATION">Application</label>\n                <input type="text" name="application" ng-model="vm.musiconhold.application" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'application\'].$error" ng-show="generalForm[\'application\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.APPLICATION_REQUIRED">Application field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.musiconhold.mode == \'files\'" class="md-block">\n                <label translate="VOICE.SORT">Sort</label>\n                <md-select name="sort" ng-model="vm.musiconhold.sort" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'random\'"> {{ \'VOICE.RANDOM\' | translate }} </md-option>\n\n                  <md-option ng-value="\'alpha\'"> {{ \'VOICE.ALPHABETICAL\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'sort\'].$error" ng-show="generalForm[\'sort\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SORT_REQUIRED">Sort field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AUDIOFILES">AUDIOFILES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="musiconhold-detail-form-container mohsounds md-background-bg md-whiteframe-1dp">\n            <div ng-controller="MusicOnHoldMohSoundsController as vm_dc" ng-init="vm_dc.init(vm.musiconhold, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MOHSOUNDS">MohSounds</span>\n                  <ms-search-bar on-search="vm_dc.getMusicOnHoldMohSounds()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditMusicOnHoldMohSound($event)" aria-label="add mohSound" translate translate-attr-label="VOICE.ADD_MOHSOUND">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedMusicOnHoldMohSounds.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedMusicOnHoldMohSounds.length}} {{vm_dc.selectedMusicOnHoldMohSounds.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedMusicOnHoldMohSounds" csv-label="true" filename="musiconholds.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedMusicOnHoldMohSounds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedMusicOnHoldMohSounds" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getMusicOnHoldMohSounds">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'VOICE.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="mohSound" md-select-id="id" ng-repeat="mohSound in vm_dc.musiconholdMohSounds.rows">\n                      <td md-cell>\n                        {{mohSound.id}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="mohSound.id" model="\'sound\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ mohSound.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(mohSound, $event)" translate="VOICE.DELETE_MOHSOUND">\n                                Delete MohSound\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.musiconholdMohSounds.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MOHSOUND_AVAILABLE">No mohsound available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.musiconholdMohSounds.count}}" md-on-paginate="vm_dc.getMusicOnHoldMohSounds" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/musiconholds/musiconholds.html",'<div id="musiconholds" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.MUSICONHOLDS">MusicOnHolds</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedMusicOnHolds.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedMusicOnHolds =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-musiconholds-count">\n          <span>{{vm.selectedMusicOnHolds.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllMusicOnHolds()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectMusicOnHolds()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedMusicOnHolds" csv-label="true" filename="musiconholds.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedMusicOnHolds($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- MUSICONHOLD TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedMusicOnHolds" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getMusicOnHolds">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="mode">{{ \'VOICE.MODE\' | translate }}</th>\n                <th md-column md-order-by="sort">{{ \'VOICE.SORT\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.musiconholds.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="musiconhold" md-select-id="id" ng-repeat="musiconhold in vm.musiconholds.rows">\n                <td md-cell ng-if="musiconhold.userpic"><img class="avatar" alt="{{musiconhold.name}}" ng-src="api/users/{{musiconhold.id}}/avatar" /></td>\n                <td md-cell ng-if="!musiconhold.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{musiconhold.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="id ">{{musiconhold.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="name ">{{musiconhold.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="mode ">{{ \'VOICE.\' + vm.arraymode[musiconhold.mode].option | uppercase | translate }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(musiconhold, ev) : vm.createOrEditMusicOnHold($event, musiconhold)" md-cell class="sort ">{{ \'VOICE.\' + vm.arraysort[musiconhold.sort].option | uppercase | translate }}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(musiconhold, $event    )" translate="VOICE.EDIT_MUSICONHOLD">\n                          Edit MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(musiconhold, $event    )" translate="VOICE.DELETE_MUSICONHOLD">\n                          Delete MusicOnHold\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.musiconholds.count}}" md-on-paginate="vm.getMusicOnHolds" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / MUSICONHOLD TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD MUSICONHOLD BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-musiconhold-button" ng-click="vm.createOrEditMusicOnHold($event)" aria-label="add musiconhold" translate translate-attr-aria-label="VOICE.ADD_MUSICONHOLD">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD MUSICONHOLD BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/create/dialog.html",'<md-dialog ng-init="vm.initialize()" class="outbound-route-dialog" aria-label="New OutboundRoute">\n  <form name="outboundrouteForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.newOutboundRoute ? \'VOICE.NEW_OUTBOUNDROUTE\' : \'VOICE.EDIT_OUTBOUNDROUTE\' | translate\n          }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span>({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n        <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus>\n        <div ng-messages="outboundrouteForm[\'exten\'].$error" ng-show="outboundrouteForm[\'exten\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CONTEXT">Context</label>\n        <md-select name="context" ng-model="vm.outboundRoute.context" required>\n          <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n        </md-select>\n        <div ng-messages="outboundrouteForm[\'context\'].$error" ng-show="outboundrouteForm[\'context\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RECORDING">Recording</label>\n        <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.getRouting()" required>\n          <md-option ng-value="\'none\'">none</md-option>\n          <md-option ng-value="\'wav\'">wav</md-option>\n          <md-option ng-value="\'WAV\'">wav49</md-option>\n          <md-option ng-value="\'gsm\'">gsm</md-option>\n        </md-select>\n        <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n        <div ng-messages="outboundrouteForm[\'recordingFormat\'].$error" ng-show="outboundrouteForm[\'recordingFormat\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CUTDIGITS">CutDigits</label>\n        <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0">\n        <div ng-messages="outboundrouteForm[\'cutdigits\'].$error" ng-show="outboundrouteForm[\'cutdigits\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid greater\n              or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ALIAS">Alias</label>\n        <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.getRouting()">\n        <div ng-messages="outboundrouteForm[\'alias\'].$error" ng-show="outboundrouteForm[\'alias\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.outboundRoute.description">\n        <div ng-messages="outboundrouteForm[\'description\'].$error" ng-show="outboundrouteForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newOutboundRoute" ng-click="vm.saveOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid || outboundrouteForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newOutboundRoute" ng-click="vm.addNewOutboundRoute()" class="send-button md-accent md-raised" ng-disabled="outboundrouteForm.$invalid" aria-label="ADD" translate="VOICE.ADD_OUTBOUNDROUTE" translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n          ADD OUTBOUNDROUTE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newOutboundRoute" ng-click="vm.deleteOutboundRoute($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/outboundRoutes/edit/view.html",'<div ng-init="vm.onInit()" id="voice-outbound-route" class="page-layout simple tabbed" layout="column">\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-outbound-routes-button md-icon-button" aria-label="Go to outbound routes" ng-click="vm.gotoOutboundRoutes()" translate translate-attr-aria-label="VOICE.GO_TO_OUTBOUNDROUTES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n      <div layout="row" layout-align="start center">\n        <div class="outbound-route-image" hide-xs>\n          <img ng-src="assets/images/business/outboundroutes.jpg">\n        </div>\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.outboundRoute.id}}\n            <span ng-if="vm.outboundRoute.exten">{{vm.outboundRoute.exten}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.outboundRoute.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveOutboundRoute()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (actionsForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- /HEADER --\x3e\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      \x3c!-- SETTINGS TAB --\x3e\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PHONENUMBER">PhoneNumber</label>\n                <input type="text" name="exten" ng-model="vm.outboundRoute.exten" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'exten\'].$error" ng-show="generalForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PHONENUMBER_REQUIRED">PhoneNumber field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <md-select name="context" ng-model="vm.outboundRoute.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts.rows" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RECORDING">Recording</label>\n                <md-select name="recordingFormat" ng-model="vm.outboundRoute.recordingFormat" ng-change="vm.onActionsTabSelection()" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'none\'">none</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'WAV\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RECORDING"></span></div>\n                <div ng-messages="generalForm[\'recordingFormat\'].$error" ng-show="generalForm[\'recordingFormat\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RECORDING_REQUIRED">Recording field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CUTDIGITS">CutDigits</label>\n                <input type="number" name="cutdigits" ng-model="vm.outboundRoute.cutdigits" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'cutdigits\'].$error" ng-show="generalForm[\'cutdigits\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_REQUIRED">CutDigits field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CutDigits must be a valid\n                      greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ALIAS">Alias</label>\n                <input type="text" name="alias" ng-model="vm.outboundRoute.alias" ng-change="vm.onActionsTabSelection()" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'alias\'].$error" ng-show="generalForm[\'alias\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ALIAS_REQUIRED">Alias field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.outboundRoute.description" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /SETTINGS TAB --\x3e\n      \x3c!-- ACTIONS TAB --\x3e\n      <md-tab md-on-select="vm.onActionsTabSelection()">\n        <md-tab-label>\n          <span translate="VOICE.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="outbound-route-detail-form-container no-padding no-margin">\n            <div class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- APPLICATIONS LIST --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm.crudPermissions.canEdit">\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider class="no-margin"></md-divider>\n                <md-list ng-sortable="vm.sortableAppsOptions">\n                  <md-list-item class="handle" ng-repeat="a in vm.apps">\n                    <div layout="row">\n                      <md-icon md-font-icon="icon-apps" class="s16 mr-15"></md-icon>\n                      <p class="text-truncate" translate="VOICE.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias ||\n                        a.appType}}</p>\n                    </div>\n                  </md-list-item>\n                </md-list>\n              </div>\n              \x3c!-- /APPLICATIONS LIST --\x3e\n              <div flex></div>\n              \x3c!-- ROUTING --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm.crudPermissions.canEdit ? 75 : 100}}">\n                <div ng-if="vm.pendingChanges" class="p-10 md-amber-300-bg">\n                  <md-icon md-font-icon="icon-information-outline" aria-label="Save reminder"></md-icon>\n                  <span class="no-margin font-size-12 line-height-30" translate="VOICE.HELP.SAVE_ROUTES"></span>\n                </div>\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar query="vm.query" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm.selectedApplications.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm.selectedApplications.length}}\n                      {{vm.selectedApplications.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm.crudPermissions.canDelete" class="md-icon-button" ng-click="vm.deleteSelectedApplications($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm.selectedApplications">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm.sortableRoutingOptions">\n                      <tr md-row md-select="a" md-select-id="id" ng-repeat="a in vm.applications.rows | filter:vm.query.filter as results">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)">{{a.app.toLowerCase() ===\n                          \'agi\' ? \'Cally-Square\' : a.app | ucfirst}}<span ng-if="a.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm.editApplication($event, $index)"><span class="text-truncate actionAppData">{{a.appdata}}</span></td>\n                        <td md-cell ng-click="vm.editInterval($event, $index)">{{a.IntervalId ? \'From List\' :\n                          a.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{a.IntervalId ? \'From List\' : (a.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell ng-if="!vm.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editApplication($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                                <md-button ng-click="vm.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                                <md-button ng-click="vm.deleteApplication(a, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-class="{ \'ng-cloak\': results.length > 0 }">\n                        <td md-cell colspan="6">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No applications\n                            available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                    <tfoot md-foot>\n                      <tr md-row>\n                        <td md-cell colspan="7">\n                          <span><em translate="VOICE.LEGEND.CUSTOM_APPLICATION">(*) - Custom application.</em></span>\n                        </td>\n                      </tr>\n                    </tfoot>\n                  </table>\n                </md-table-container>\n              </div>\n              \x3c!-- /ROUTING --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      \x3c!-- /ACTIONS TAB --\x3e\n    </md-tabs>\n  </div>\n  \x3c!-- /CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/outboundRoutes/outboundRoutes.html",'<div id="outbound-routes" class="page-layout simple left-sidenav inner-sidenav">\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.OUTBOUNDROUTES">OutboundRoutes</span>\n      </div>\n    </div>\n    <div layout="row">\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n  <div ng-show="vm.selectedOutboundRoutes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n    <div class="close-button-wrapper" ng-click="vm.selectedOutboundRoutes = []">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-outbound-routes-count">\n          <span>{{ vm.selectedOutboundRoutes.length }}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = vm.outboundRoutes.rows" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.selectedOutboundRoutes = []" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedOutboundRoutes" csv-label="true" filename="outbound_routes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedOutboundRoutes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedOutboundRoutes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getOutboundRoutes">\n              <tr md-row>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.PHONENUMBER\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.outboundRoutes.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="route" md-select-id="id" ng-repeat="route in vm.outboundRoutes.rows">\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="id ">{{ route.id }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="exten ">{{ route.exten }}</td>\n                <td ng-click="!vm.crudPermissions.canEdit ? vm.editRoute(route) : vm.createOrEditOutboundRoute($event, route)" md-cell class="description ">{{ route.description }}</td>\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n                  <md-menu>\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editRoute(route)" translate="VOICE.EDIT_OUTBOUNDROUTE">\n                          Edit OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteConfirm(route, $event)" translate="VOICE.DELETE_OUTBOUNDROUTE">\n                          Delete OutboundRoute\n                        </md-button>\n                      </md-menu-item>\n                    </md-menu-content>\n                  </md-menu>\n                </td>\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n        <md-table-pagination md-label="{page: \'{{ \'VOICE.PAGE\' | translate }}:\', rowsPerPage: \'{{ \'VOICE.ROWSPERPAGE\' | translate }}:\', of: \'{{ \'VOICE.OF\' | translate }}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{ vm.outboundRoutes.count }}" md-on-paginate="vm.getOutboundRoutes" md-page-select>\n        </md-table-pagination>\n      </md-card>\n    </div>\n  </div>\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-outbound-route-button" ng-click="vm.createOrEditOutboundRoute($event)" aria-label="add outbound route" translate translate-attr-aria-label="VOICE.ADD_OUTBOUNDROUTE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n</div>'),e.put("app/main/apps/voice/views/realtime/abandonedcalls/view.html",'<md-toolbar class="md-table-toolbar md-default table-header">\n  <div class="md-toolbar-tools" layout="row" layout-align="center center">\n    <span class="md-subhead" translate="DASHBOARDS.ABANDONEDQUEUECALLS">ABANDONED QUEUE CALLS</span>\n    <ms-search-bar on-search="vm.getAbandonedCalls()" query="vm.query" on-collapse="vm.query.filter = undefined" debounce="300">\n    </ms-search-bar>\n    <div flex></div>\n\n    <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getAbandonedCalls()"></ms-quick-filter>\n\n    <md-button class="md-icon-button" ng-click="vm.refresh && vm.refreshAbandonedCalls($event)" aria-label="Reload" translate translate-attr-label="DASHBOARDS.RELOAD">\n      <md-icon md-font-icon="icon-reload"></md-icon>\n      <md-tooltip ng-if="vm.showTooltip" md-visible="vm.showTooltip">{{\'DASHBOARDS.CLICKRELOAD\' | translate}}\n      </md-tooltip>\n    </md-button>\n  </div>\n</md-toolbar>\n<md-table-container>\n  <table md-table md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getAbandonedCalls">\n      <tr md-row>\n        <th md-column md-order-by="id">ID</th>\n        <th md-column md-order-by="calleridname">{{\'DASHBOARDS.FULLNAME\' | translate}}</th>\n        <th md-column md-order-by="calleridnum">{{\'DASHBOARDS.PHONE\' | translate}}</th>\n        <th md-column md-order-by="queue">{{\'DASHBOARDS.QUEUE\' | translate}}</th>\n        <th md-column md-order-by="queuecallerabandonAt">{{\'DASHBOARDS.ABANDONAT\' | translate}}</th>\n        <th md-column md-order-by="lastAssignedTo">{{\'DASHBOARDS.LASTASSIGNEDTO\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column md-order-by="disposition">{{\'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.abandonedCalls.rows.length">\n        <td md-cell colspan="12">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.abandonedCalls.rows">\n        <td md-cell class="id">{{call.id}}</td>\n        <td md-cell class="firstName" privacy ng-cloak>{{call.calleridname}}</td>\n        <td md-cell class="list" privacy ng-cloak>{{call.calleridnum}}</td>\n        <td md-cell class="list">{{vm.queuesMap[call.queue]}}</td>\n        <td md-cell class="list">\n          {{call.queuecallerabandonAt ? (call.queuecallerabandonAt | formatdate) : (call.queuecallerexitAt | formatdate) }}\n        </td>\n        <td md-cell class="list">{{call.lastAssignedTo}}</td>\n        <td md-cell class="list">{{ call.disposition }}</td>\n        <td md-cell class="list">{{ call.secondDisposition }}</td>\n        <td md-cell class="list">{{ call.thirdDisposition }}</td>\n        <td md-cell class="actions">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="DASHBOARDS.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                <md-menu>\n                  <md-button ng-click="$mdMenu.open()" class="text-capitalize" translate="DASHBOARDS.ASSIGNTO">\n                    Assigned\n                    to</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="call.lastAssignedTo">\n                      <md-button ng-click="vm.assignTo(call)"><em translate="DASHBOARDS.NONE">Not Assigned</em>\n                      </md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.agents.rows.length" ng-repeat="agent in vm.agents.rows">\n                      <md-button ng-click="vm.assignTo(call,agent)">{{agent.name}}</md-button>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.dispose(call)" class="text-capitalize" translate="DASHBOARDS.DISPOSE">\n                  Dispose\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.abandonedCalls.count}}" md-on-paginate="vm.getAbandonedCalls" md-page-select></md-table-pagination>'),e.put("app/main/apps/voice/views/realtime/outbound_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.OUTBOUND_CALLS">Ooutbound Calls</span>\n  </div>\n</md-toolbar>\n\n\x3c!-- OUTBOUNDS TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.SOURCE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DESTINATION\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.calls.rows.length">\n        <td md-cell colspan="5">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="call in vm.calls.rows | filter: vm.query.filter | limitTo: vm.query.limit: (vm.query.page - 1) * vm.query.limit">\n        <td md-cell>\n          <i ng-class="vm.channelStatus[call.channelstatedesc.toLowerCase()]"></i>\n        </td>\n        <td md-cell privacy ng-cloak>\n          {{call.calleridname}}, {{call.calleridnum}}\n          <span class="text-boxed" ng-if="call.answered">\n            <timer ng-if="call.answertime" start-time="call.answertime"></timer>\n          </span>\n        </td>\n        <td md-cell privacy ng-cloak>{{call.exten}}</td>\n        <td md-cell>{{call.routealias}}</td>\n        <td md-cell>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() !== \'hangup\'">\n            <timer ng-if="call.starttime" start-time="call.starttime"></timer>\n          </span>\n          <span class="text-boxed" ng-if="call.channelstatedesc.toLowerCase() === \'hangup\'" translate="VOICE.CLOSING">Closing</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.calls.count}}"></md-table-pagination>\n\x3c!-- / OUTBOUNDS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_calls/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n  </div>\n</md-toolbar>\n\x3c!-- QUEUES TABLE --\x3e\n<md-table-container>\n  <table md-table>\n    <thead md-head>\n      <tr md-row>\n        <th md-column width="30px"></th>\n        <th md-column>{{ \'VOICE.DID\' | translate }}</th>\n        <th md-column>{{ \'VOICE.ALIAS\' | translate }}</th>\n        <th md-column>{{ \'VOICE.QUEUE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.CALLER\' | translate }}</th>\n        <th md-column>{{ \'VOICE.AGENT\' | translate }}</th>\n        <th md-column>{{ \'VOICE.DURATION\' | translate }}</th>\n        <th md-column width="10px"></th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.getSize(vm.rpcVoiceQueuesChannels)">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(key, channel) in vm.rpcVoiceQueuesChannels | limitObjectFromTo: vm.queryChannels.limit:(vm.queryChannels.page - 1) * vm.queryChannels.limit">\n        <td md-cell>\n          <md-icon ng-if="channel.queuecallerleaveAt" md-font-icon="icon-phone-in-talk green-fg"></md-icon>\n          <md-icon ng-if="!channel.queuecallerleaveAt" md-font-icon="icon-phone-incoming md-accent"></md-icon>\n        </td>\n        <td md-cell>{{channel.exten}}</td>\n        <td md-cell>{{channel.routealias}}</td>\n        <td md-cell>{{channel.queue}}</td>\n        <td md-cell privacy ng-cloak>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </td>\n        <td md-cell>\n          <span ng-if="channel.queuecallerleaveAt">\n            {{channel.connectedlinename}}, {{channel.connectedlinenum}}\n            <span class="text-boxed">\n              <timer start-time="channel.queuecallerleaveAt"></timer>\n            </span>\n          </span>\n          <span ng-if="!channel.queuecallerleaveAt" class="text-boxed">\n            {{ \'VOICE.WAITING_FOR_AGENT\' | translate }}\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell>\n          <span class="text-boxed">\n            <timer start-time="channel.queuecallerjoinAt"></timer>\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n            <md-menu-content width="2">\n              <md-menu-item>\n                <md-button ng-click="vm.hangup(channel.uniqueid)" translate="VOICE.HANGUP">\n                  Hangup\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-button ng-click="vm.redirectToNumber($event, channel.uniqueid)" translate="VOICE.REDIRECT_TO_NUMBER">\n                  Number\n                </md-button>\n              </md-menu-item>\n              <md-menu-item>\n                <md-menu class="no-margin">\n                  <md-button ng-mouseenter="vm.getAvailableAgents()" translate="VOICE.REDIRECT_TO_AGENT">\n                    Redirect to Agent</md-button>\n                  <md-menu-content>\n                    <md-menu-item ng-if="!vm.availableAgents">\n                      <md-progress-circular class="md-accent auto-margin" md-diameter="32" md-mode="indeterminate">\n                      </md-progress-circular>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length > 0" ng-repeat="agent in vm.availableAgents">\n                      <md-button ng-click="vm.redirectToAgent(channel.uniqueid, agent.name, agent.context)">\n                        {{agent.name}}</md-button>\n                    </md-menu-item>\n                    <md-menu-item ng-if="vm.availableAgents.length === 0">\n                      <span>No agents available</span>\n                    </md-menu-item>\n                  </md-menu-content>\n                </md-menu>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.queryChannels.limit" md-page="vm.queryChannels.page" md-limit-options="[10, 15, 20, 50, 100, 250]" md-total="{{vm.getSize(vm.rpcVoiceQueuesChannels)}}" md-page-select></md-table-pagination>\n\x3c!-- / QUEUES TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/queue_params/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="MOTIONDIALER.QUEUE_PARAMETERS">Params</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getQueues()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- QUEUE TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getQueues">\n      <tr md-row>\n        <th md-column>{{\'\n                        VOICE.NAME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.TOTAL_OFFERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ANSWERED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.ABANDONED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.UNMANAGED\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_HOLD_TIME\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_DURATION\' | translate}}</th>\n        <th md-column>{{\'\n                        VOICE.AVG_BILLABLE\' | translate}}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.queues">\n        <td md-cell colspan="8">\n          <div layout="row" layout-align="center center">\n            <span translate="MOTIONDIALER.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, queue) in vm.queues">\n        <td md-cell>\n          <span>{{queue.name}}</span>\n        </td>\n        <td md-cell>\n          \x3c!-- <span class="font-size-20 grey-fg">{{queue.total || 0}}</span> --\x3e\n          <span class="font-size-20 grey-fg">{{ (queue.answered || 0) + (queue.abandoned || 0) + (queue.unmanaged || 0) }}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered || 0}} ({{(queue.total) ? (queue.answered || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.abandoned || 0}} ({{(queue.total) ? (queue.abandoned || 0) * 100/queue.total : 0 | number:1}}%)</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.unmanaged || 0}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.total ? ((queue.sumHoldTime || 0) / queue.total) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{(queue.total ? ((queue.sumDuration || 0) / queue.total) : 0) | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n        <td md-cell>\n          <span class="font-size-16 grey-fg">{{queue.answered ? ((queue.sumBillable || 0) / queue.answered) : 0 | number: 0 | secToTime | date:\'HH:mm:ss\'}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'MOTIONDIALER.PAGE\' | translate}}:\', rowsPerPage: \'{{\'MOTIONDIALER.ROWSPERPAGE\' | translate}}:\', of: \'{{\'MOTIONDIALER.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getQueues" md-page-select></md-table-pagination>\n\x3c!-- / QUEUE TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TELEPHONES">Telephones</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.TRUNKS">Trunks</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_CALLS">Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ABANDONEDCALLS">Abandoned Queue Calls</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.QUEUE_PARAMS">Queue Parameters</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.OUTBOUND_CALLS">Outbound Calls</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/voice/views/realtime/telephones/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TELEPHONES">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTelephones()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- AGENT TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTelephones">\n      <tr md-row>\n        <th md-column md-order-by="fullname">{{ \'VOICE.ACCOUNTNAME\' | translate }}</th>\n        <th md-column md-order-by="internal">{{ \'VOICE.INTERNAL\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATE\' | translate }}</th>\n        <th md-column>{{ \'VOICE.PHONE_STATUS\' | translate }}</th>\n      </tr>\n    </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.telephones">\n        <td md-cell colspan="4">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row md-select="telephone" md-select-id="id" ng-repeat="(id, telephone) in vm.telephones">\n        <td md-cell>{{telephone.fullname}}</td>\n        <td md-cell>{{telephone.internal}}</td>\n        <td md-cell>\n          <i ng-class="vm.stateClass[telephone.state]">\n            <md-tooltip>{{\'VOICE.\' + telephone.state | uppercase | translate}}</md-tooltip>\n          </i>\n        </td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[telephone.status]">\n            <md-tooltip>{{\'VOICE.\' + telephone.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="telephone.status === \'registered\'" class="text-boxed">{{telephone.address}}</span>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTelephones" md-page-select></md-table-pagination>\n\x3c!-- / AGENT TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/realtime/trunks/view.html",'\x3c!-- MAIN --\x3e\n<md-toolbar class="md-table-toolbar md-default">\n  <div class="md-toolbar-tools">\n    <span class="md-subhead" translate="VOICE.TRUNKS">Telephones</span>\n    <div flex></div>\n    <ms-search-bar on-search="vm.getTrunks()" query="vm.query" on-collapse="vm.query.filter = undefined;" debounce="300"></ms-search-bar>\n  </div>\n</md-toolbar>\n\n\x3c!-- TRUNKS TABLE --\x3e\n<md-table-container>\n  <table md-table multiple md-progress="vm.promise">\n    <thead md-head>\n      <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getTrunks">\n        <tr md-row>\n          <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n          <th md-column>{{ \'VOICE.TRUNK_STATUS\' | translate }}</th>\n          <th md-column>{{ \'VOICE.REGISTRY\' | translate }}</th>\n          <th md-column width="10px"></th>\n        </tr>\n      </thead>\n    <tbody md-body>\n      <tr md-row ng-hide="vm.trunks">\n        <td md-cell colspan="3">\n          <div layout="row" layout-align="center center">\n            <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n          </div>\n        </td>\n      </tr>\n      <tr md-row ng-repeat="(id, trunk) in vm.trunks">\n        <td md-cell>{{trunk.name}}</td>\n        <td md-cell>\n          <i ng-class="vm.statusClass[trunk.status.toLowerCase()]">\n            <md-tooltip>{{\'VOICE.\' + trunk.status | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.status === \'registered\'" class="text-boxed">{{trunk.address}}</span>\n        </td>\n        <td md-cell>\n          <i ng-if="trunk.registry" ng-class="(trunk.stateRegistry.toLowerCase() === \'registered\') ? \'green-300-fg icon-checkbox-marked-circle\' : \'red-300-fg icon-close-circle\'">\n            <md-tooltip>{{\'VOICE.\' + trunk.stateRegistry | uppercase | translate}}</md-tooltip>\n          </i>\n          <span ng-if="trunk.registry && trunk.host && trunk.port" class="text-boxed">{{trunk.host}}:{{trunk.port}}</span>\n          <span ng-if="!trunk.registry" translate="VOICE.NO_REGISTRY">\n            No Registry\n          </span>\n        </td>\n        <td md-cell class="actions" ng-if="vm.crudPermissions.canEdit">\n          <md-menu>\n            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="STAFF.MORE" ng-click="$mdOpenMenu($event)">\n              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n            </md-button>\n\n            <md-menu-content width="4">\n              <md-menu-item>\n                <md-button ng-click="vm.goToTrunk($event, trunk)" translate="VOICE.EDIT_TRUNK">\n                  Edit Trunk\n                </md-button>\n              </md-menu-item>\n            </md-menu-content>\n          </md-menu>\n        </td>\n      </tr>\n    </tbody>\n  </table>\n</md-table-container>\n\n<md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.count}}" md-on-paginate="vm.getTrunks" md-page-select></md-table-pagination>\n\x3c!-- / TRUNKS TABLE --\x3e\n\x3c!-- / MAIN --\x3e'),e.put("app/main/apps/voice/views/voicemails/create/dialog.html",'<md-dialog class="voicemail-dialog" aria-label="New Voicemail">\n  <form name="voicemailForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.FULLNAME">FullName</label>\n        <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus>\n\n        <div ng-messages="voicemailForm[\'fullname\'].$error" ng-show="voicemailForm[\'fullname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.EMAIL">Email</label>\n        <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'">\n\n        <div ng-messages="voicemailForm[\'email\'].$error" ng-show="voicemailForm[\'email\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n          </div>\n          <div ng-message="email">\n            <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.PASSWORD">Password</label>\n        <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n        <div ng-messages="voicemailForm[\'password\'].$error" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n        <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n        <div ng-messages="voicemailForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container class="md-block">\n        <label translate="VOICE.MAILBOX">MailBox</label>\n        <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" ng-disabled="!vm.newVoicemail">\n\n        <div ng-messages="voicemailForm[\'mailbox\'].$error" ng-show="voicemailForm[\'mailbox\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.ATTACH">Attach</label>\n        <md-select name="attach" ng-model="vm.voicemail.attach">\n\n          <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n          <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="voicemailForm[\'attach\'].$error" ng-show="voicemailForm[\'attach\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoicemail" ng-click="vm.saveVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid || voicemailForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoicemail" ng-click="vm.addNewVoicemail()" class="send-button md-accent md-raised" ng-disabled="voicemailForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEMAIL" translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n          ADD VOICEMAIL\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoicemail" ng-click="vm.deleteVoicemail($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicemails/edit/view.html",'<div id="voice-voicemail" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voicemails-button md-icon-button" aria-label="Go to voicemails" ng-click="vm.gotoVoicemails()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEMAILS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voicemail-image" hide-xs>\n          <img ng-src="assets/images/business/voicemails.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voicemail.id}}\n            <span ng-if="vm.voicemail.name">{{vm.voicemail.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voicemail.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoicemail()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (advancedForm.$invalid) || (messagesForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.FULLNAME">FullName</label>\n                <input type="text" name="fullname" ng-model="vm.voicemail.fullname" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'fullname\'].$error" ng-show="generalForm[\'fullname\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.FULLNAME_REQUIRED">FullName field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAIL">Email</label>\n                <input type="email" name="email" ng-model="vm.voicemail.email" ng-required="vm.voicemail.attach === \'yes\'" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'email\'].$error" ng-show="generalForm[\'email\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAIL_REQUIRED">Email field is required</span>\n                  </div>\n                  <div ng-message="email">\n                    <span translate="VOICE.ERRORS.EMAIL_MUST_VALID">Email must be a valid e-mail address</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PASSWORD">Password</label>\n                <input type="password" name="password" ng-model="vm.voicemail.password" placeholder="Password" translate translate-attr-placeholder="VOICE.PASSWORD" required>\n                <div ng-messages="generalForm[\'password\'].$error" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block" ng-if="vm.newVoicemail ">\n                <label translate="VOICE.CONFIRM_PASSWORD">Confirm Password</label>\n                <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword" required>\n                <div ng-messages="generalForm.confirmPassword.$error" role="alert" multiple>\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n                  </div>\n                  <div ng-message="passwordMatch">\n                    <span translate="VOICE.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAILBOX">MailBox</label>\n                <input type="text" name="mailbox" ng-model="vm.voicemail.mailbox" ng-required="true" disabled>\n\n                <div ng-messages="generalForm[\'mailbox\'].$error" ng-show="generalForm[\'mailbox\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAILBOX_REQUIRED">MailBox field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.VOICEMAIL_CONTEXT">Voicemail_Context</label>\n                <md-select name="context" ng-model="vm.voicemail.context" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="context.name" ng-repeat="context in vm.contexts" ng-disabled="context.canSelect === false">{{ context.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.VOICEMAIL_CONTEXT"></span></div>\n                <div ng-messages="generalForm[\'context\'].$error" ng-show="generalForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.VOICEMAIL_CONTEXT_REQUIRED">Voicemail_Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEZONE">TimeZone</label>\n                <input type="text" name="tz" ng-model="vm.voicemail.tz" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'tz\'].$error" ng-show="advancedForm[\'tz\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEZONE_REQUIRED">TimeZone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ATTACH">Attach</label>\n                <md-select name="attach" ng-model="vm.voicemail.attach" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'attach\'].$error" ng-show="advancedForm[\'attach\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ATTACH_REQUIRED">Attach field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ENVELOPE">Envelope</label>\n                <md-select name="envelope" ng-model="vm.voicemail.envelope" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'envelope\'].$error" ng-show="advancedForm[\'envelope\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ENVELOPE_REQUIRED">Envelope field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DELETE">Delete</label>\n                <md-select name="delete" ng-model="vm.voicemail.delete" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div ng-messages="advancedForm[\'delete\'].$error" ng-show="advancedForm[\'delete\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DELETE_REQUIRED">Delete field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILBODY">EmailBody</label>\n                <input type="text" name="emailbody" ng-model="vm.voicemail.emailbody" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailbody\'].$error" ng-show="advancedForm[\'emailbody\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILBODY_REQUIRED">EmailBody field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.EMAILSUBJECT">EmailSubject</label>\n                <input type="text" name="emailsubject" ng-model="vm.voicemail.emailsubject" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'emailsubject\'].$error" ng-show="advancedForm[\'emailsubject\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.EMAILSUBJECT_REQUIRED">EmailSubject field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXSECONDS">MaxSeconds</label>\n                <input type="number" name="maxsecs" ng-model="vm.voicemail.maxsecs" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxsecs\'].$error" ng-show="advancedForm[\'maxsecs\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_REQUIRED">MaxSeconds field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxSeconds must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXMESSAGES">MaxMessages</label>\n                <input type="number" name="maxmsg" ng-model="vm.voicemail.maxmsg" min="0" max="9999" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="advancedForm[\'maxmsg\'].$error" ng-show="advancedForm[\'maxmsg\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_REQUIRED">MaxMessages field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO">MaxMessages must be a valid greater or equal than</span> <span>9999</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.MESSAGES">MESSAGES</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voicemail-detail-form-container messages md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoicemailMessagesController as vm_dc" ng-init="vm_dc.init(vm.voicemail, vm.crudPermissions)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.MESSAGES">Messages</span>\n                  <ms-search-bar on-search="vm_dc.getVoicemailMessages()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedVoicemailMessages.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedVoicemailMessages.length}} {{vm_dc.selectedVoicemailMessages.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedVoicemailMessages" csv-label="true" filename="voicemails.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedVoicemailMessages($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedVoicemailMessages" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getVoicemailMessages">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'VOICE.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="callerid">\n                        {{ \'VOICE.CALLER_ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="duration">\n                        {{ \'VOICE.DURATION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="audio">\n                        {{ \'VOICE.AUDIO\' | translate }}\n                      </th>\n                      <th md-column md-order-by="stamp">\n                        {{ \'VOICE.RECEIVED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="message" md-select-id="id" ng-repeat="message in vm_dc.voicemailMessages.rows">\n                      <td md-cell>\n                        {{message.id}}\n                      </td>\n                      <td md-cell>\n                        {{message.callerid}}\n                      </td>\n                      <td md-cell>\n                        {{message.duration}}\n                      </td>\n                      <td md-cell>\n                        \x3c!-- audio recording directive --\x3e\n                        <ms-recording id="message.id" model="\'voiceMailMessage\'"></ms-recording>\n                        \x3c!-- / audio recording directive --\x3e\n                      </td>\n                      <td md-cell>\n                        {{ message.stamp | formatdate }}\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(message, $event)" translate="VOICE.DELETE_MESSAGE">\n                                Delete Message\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.voicemailMessages.rows.length">\n                      <td md-cell colspan="8">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="VOICE.NO_MESSAGE_AVAILABLE">No message available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.voicemailMessages.count}}" md-on-paginate="vm_dc.getVoicemailMessages" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voicemails/voicemails.html",'<div id="voicemails" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEMAILS">Voicemails</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicemails.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicemails =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicemails-count">\n          <span>{{vm.selectedVoicemails.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicemails()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicemails()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicemails" csv-label="true" filename="voicemails.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicemails($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEMAIL TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicemails" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicemails">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="fullname">{{ \'VOICE.FULLNAME\' | translate }}</th>\n                <th md-column md-order-by="email">{{ \'VOICE.EMAIL\' | translate }}</th>\n                <th md-column md-order-by="mailbox">{{ \'VOICE.MAILBOX\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicemails.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicemail" md-select-id="id" ng-repeat="voicemail in vm.voicemails.rows">\n                <td md-cell ng-if="voicemail.userpic"><img class="avatar" alt="{{voicemail.name}}" ng-src="api/users/{{voicemail.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicemail.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicemail.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="id ">{{voicemail.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="fullname ">{{voicemail.fullname}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="email ">{{voicemail.email}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voicemail, ev) : vm.createOrEditVoicemail($event, voicemail)" md-cell class="mailbox ">{{voicemail.mailbox}}</td>\n\n\n                <td md-cell class="actions" ng-if="!vm.crudPermissions.readOnly">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voicemail, $event    )" translate="VOICE.EDIT_VOICEMAIL">\n                          Edit Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicemail, $event    )" translate="VOICE.DELETE_VOICEMAIL">\n                          Delete Voicemail\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicemails.count}}" md-on-paginate="vm.getVoicemails" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEMAIL TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEMAIL BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicemail-button" ng-click="vm.createOrEditVoicemail($event)" aria-label="add voicemail" translate translate-attr-aria-label="VOICE.ADD_VOICEMAIL">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEMAIL BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voicePrefixes/create/dialog.html",'<md-dialog class="voicePrefix-dialog" aria-label="New voicePrefix">\n  <form name="voicePrefixForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voicePrefix.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus>\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voicePrefixForm[\'name\'].$error" ng-show="voicePrefixForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.OUTBOUNDROUTE">OutboundRoute</label>\n        <md-select name="VoiceExtensionId" ng-model="vm.voicePrefix.VoiceExtensionId" required>\n          <md-option ng-value="VoiceExtensionId.id" ng-repeat="VoiceExtensionId in vm.outboundRoutes" ng-disabled="VoiceExtensionId.canSelect === false">{{ VoiceExtensionId.exten }}</md-option>\n        </md-select>\n        <div ng-messages="voicePrefixForm[\'VoiceExtensionId\'].$error" ng-show="voicePrefixForm[\'VoiceExtensionId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.OUTBOUNDROUTE_REQUIRED">OutboundRoute field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.CALLERIDALL">CallerIdAll</label>\n        <input type="text" name="callerIdAll" ng-model="vm.voicePrefix.callerIdAll" ng-pattern="/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/">\n\n        <div class="hint"><span translate="VOICE.HELP.CALLERIDALL"></span></div>\n        <div ng-messages="voicePrefixForm[\'callerIdAll\'].$error" ng-show="voicePrefixForm[\'callerIdAll\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.CALLERIDALL_REQUIRED">CallerIdAll field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.CALLERIDALL_MUST_VALID_PATTERN" translate-values="{ regex: \'/&quot;(.*)&quot;\\s&lt;(.*?)&gt;$/\' }">CallerIdAll must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voicePrefix.description">\n\n        <div ng-messages="voicePrefixForm[\'description\'].$error" ng-show="voicePrefixForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newvoicePrefix" ng-click="vm.savevoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid || voicePrefixForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newvoicePrefix" ng-click="vm.addNewvoicePrefix()" class="send-button md-accent md-raised" ng-disabled="voicePrefixForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEPREFIX" translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n          ADD VOICEPREFIX\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newvoicePrefix" ng-click="vm.deletevoicePrefix($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/agentadd/agentadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEPREFIX">Add Agent to voicePrefix</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/edit/teamadd/teamadd.html",'<md-dialog class="voicePrefix-dialog" aria-label="voicePrefix" ng-init="vm.onInit()">\n  <form name="voicePrefixForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voicePrefixes/voicePrefixes.html",'<div id="voicePrefixes" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEPREFIXES">VoicePrefixes</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoicePrefixes.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoicePrefixes =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voicePrefixes-count">\n          <span>{{vm.selectedVoicePrefixes.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoicePrefixes()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoicePrefixes()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoicePrefixes" csv-label="true" filename="voicePrefixes.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoicePrefixes($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEPREFIX TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoicePrefixes" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoicePrefixes">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="VoiceExtensionId">{{ \'VOICE.OUTBOUNDROUTE\' | translate }}</th>\n                <th md-column md-order-by="callerIdAll">{{ \'VOICE.CALLERIDALL\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voicePrefixes.rows.length">\n                <td md-cell colspan="6">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voicePrefix" md-select-id="id" ng-repeat="voicePrefix in vm.voicePrefixes.rows">\n                <td md-cell ng-if="voicePrefix.userpic"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="api/users/{{voicePrefix.id}}/avatar" /></td>\n                <td md-cell ng-if="!voicePrefix.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voicePrefix.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="id ">{{voicePrefix.id}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="name ">{{voicePrefix.name}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="VoiceExtensionId ">{{ (vm.outboundRoutes | filter : {\'id\':voicePrefix.VoiceExtensionId} : true)[0].exten }}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="callerIdAll ">{{voicePrefix.callerIdAll}}</td>\n                <td ng-click="vm.createOrEditvoicePrefix($event, voicePrefix)" md-cell class="description ">{{voicePrefix.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editdialog(voicePrefix, $event    )" translate="VOICE.EDIT_VOICEPREFIX">\n                          Edit voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voicePrefix, $event    )" translate="VOICE.AGENTADD_VOICEPREFIX">\n                          AgentAdd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voicePrefix, $event    )" translate="VOICE.TEAMADD_VOICEPREFIX">\n                          teamadd voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voicePrefix, $event    )" translate="VOICE.DELETE_VOICEPREFIX">\n                          Delete voicePrefix\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voicePrefixes.count}}" md-on-paginate="vm.getVoicePrefixes" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEPREFIX TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEPREFIX BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voicePrefix-button" ng-click="vm.createOrEditvoicePrefix($event)" aria-label="add voicePrefix" translate translate-attr-aria-label="VOICE.ADD_VOICEPREFIX">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEPREFIX BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/create/dialog.html",'<md-dialog class="voiceQueue-dialog" aria-label="New VoiceQueue">\n  <form name="voiceQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newVoiceQueue">\n\n        <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n        <div ng-messages="voiceQueueForm[\'name\'].$error" ng-show="voiceQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required>\n          <md-option ng-value="\'ringall\'">Ringall</md-option>\n          <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n          <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n          <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n          <md-option ng-value="\'random\'">Random</md-option>\n          <md-option ng-value="\'linear\'">Linear</md-option>\n          <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n        </md-select>\n        <div ng-messages="voiceQueueForm[\'strategy\'].$error" ng-show="voiceQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="VOICE.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.voiceQueue.description">\n\n        <div ng-messages="voiceQueueForm[\'description\'].$error" ng-show="voiceQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceQueue" ng-click="vm.saveVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid || voiceQueueForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceQueue" ng-click="vm.addNewVoiceQueue()" class="send-button md-accent md-raised" ng-disabled="voiceQueueForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICEQUEUE" translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n          ADD VOICEQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceQueue" ng-click="vm.deleteVoiceQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/agentadd/agentadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.AGENTADD_VOICEQUEUE">Add Agent to voiceQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/teamadd/teamadd.html",'<md-dialog class="voiceQueue-dialog" aria-label="voiceQueue" ng-init="vm.onInit()">\n  <form name="voiceQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="VOICE.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <md-input-container flex class="no-margin">\n        <label translate="VOICE.PENALTY">Penalty</label>\n        <input name="penalty" type="number" ng-model="vm.penalty" min="0" placeholder="0" required onkeypress="return event.charCode >= 48 && event.charCode <= 57 && this.value.length < 3">\n        <div ng-messages="voiceQueueForm.penalty.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span>{{ \'VOICE.ERRORS.PENALTY_REQUIRED\' | translate }}</span>\n          </div>\n        </div>\n      </md-input-container>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit" add-disabled="vm.penalty === undefined"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceQueues/edit/view.html",'<div id="voice-voiceQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceQueues-button md-icon-button" aria-label="Go to voiceQueues" ng-click="vm.gotoVoiceQueues()" translate translate-attr-aria-label="VOICE.GO_TO_VOICEQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceQueue-image" hide-xs>\n          <img ng-src="assets/images/business/voiceQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceQueue.id}}\n            <span ng-if="vm.voiceQueue.name">{{vm.voiceQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.voiceQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="VOICE.TEAMADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.voiceQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="VOICE.AGENTADD_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.gotogoto(vm.voiceQueue, $event)" class="md-fab md-warn md-icon-button" aria-label="goto">\n        <md-tooltip><span translate="VOICE.GOTO_VOICEQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-cast"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (settingsForm.$invalid) || (announcementsForm.$invalid) || (advancedForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.voiceQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="VOICE.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="VOICE.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.voiceQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'ringall\'">Ringall</md-option>\n                  <md-option ng-value="\'rrmemory\'">Round Robin Memory</md-option>\n                  <md-option ng-value="\'leastrecent\'">Least Recent</md-option>\n                  <md-option ng-value="\'fewestcalls\'">Fewest Calls</md-option>\n                  <md-option ng-value="\'random\'">Random</md-option>\n                  <md-option ng-value="\'linear\'">Linear</md-option>\n                  <md-option ng-value="\'wrandom\'">Weight Random</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUT">Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.voiceQueue.timeout" min="0" value="15" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUT"></span></div>\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MAXLENGTH">MaxLength</label>\n                <input type="number" name="maxlen" ng-model="vm.voiceQueue.maxlen" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MAXLENGTH"></span></div>\n                <div ng-messages="generalForm[\'maxlen\'].$error" ng-show="generalForm[\'maxlen\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_REQUIRED">MaxLength field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MaxLength must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RETRY">Retry</label>\n                <input type="number" name="retry" ng-model="vm.voiceQueue.retry" min="0" value="2" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.RETRY"></span></div>\n                <div ng-messages="generalForm[\'retry\'].$error" ng-show="generalForm[\'retry\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RETRY_REQUIRED">Retry field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Retry must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WRAPUPTIME">WrapupTime</label>\n                <input type="number" name="wrapuptime" ng-model="vm.voiceQueue.wrapuptime" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WRAPUPTIME"></span></div>\n                <div ng-messages="generalForm[\'wrapuptime\'].$error" ng-show="generalForm[\'wrapuptime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_REQUIRED">WrapupTime field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WrapupTime must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WEIGHT">Weight</label>\n                <input type="number" name="weight" ng-model="vm.voiceQueue.weight" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.WEIGHT"></span></div>\n                <div ng-messages="generalForm[\'weight\'].$error" ng-show="generalForm[\'weight\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WEIGHT_REQUIRED">Weight field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Weight must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.JOINWHENEMPTY">JoinWhenEmpty</label>\n                <md-select name="joinempty" ng-model="vm.voiceQueue.joinempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.joinempty.length === 1  && vm.voiceQueue.joinempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.joinempty.length === 1 && vm.voiceQueue.joinempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.JOINWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'joinempty\'].$error" ng-show="generalForm[\'joinempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.JOINWHENEMPTY_REQUIRED">JoinWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.LEAVEWHENEMPTY">LeaveWhenEmpty</label>\n                <md-select name="leavewhenempty" ng-model="vm.voiceQueue.leavewhenempty" multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'no\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'no\'">no</md-option>\n                  <md-option ng-value="\'yes\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'yes\'">yes</md-option>\n                  <md-option ng-value="\'strict\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'strict\'">strict</md-option>\n                  <md-option ng-value="\'loose\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'loose\'">loose</md-option>\n                  <md-option ng-value="\'paused\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'paused\'">paused</md-option>\n                  <md-option ng-value="\'penalty\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'penalty\'">penalty</md-option>\n                  <md-option ng-value="\'inuse\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'inuse\'">inuse</md-option>\n                  <md-option ng-value="\'ringing\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'ringing\'">ringing</md-option>\n                  <md-option ng-value="\'unavailable\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unavailable\'">unavailable</md-option>\n                  <md-option ng-value="\'invalid\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'invalid\'">invalid</md-option>\n                  <md-option ng-value="\'unknown\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'unknown\'">unknown</md-option>\n                  <md-option ng-value="\'wrapup\'" ng-disabled="vm.voiceQueue.leavewhenempty.length === 1 && vm.voiceQueue.leavewhenempty[0] === \'wrapup\'">wrapup</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.LEAVEWHENEMPTY"></span></div>\n                <div ng-messages="generalForm[\'leavewhenempty\'].$error" ng-show="generalForm[\'leavewhenempty\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.LEAVEWHENEMPTY_REQUIRED">LeaveWhenEmpty field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MUSICONHOLD">MusicOnHold</label>\n                <md-select name="musiconhold" ng-model="vm.voiceQueue.musiconhold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="musiconhold.name" ng-repeat="musiconhold in vm.musiconholds" ng-disabled="musiconhold.canSelect === false">{{ musiconhold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MUSICONHOLD"></span></div>\n                <div ng-messages="generalForm[\'musiconhold\'].$error" ng-show="generalForm[\'musiconhold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MUSICONHOLD_REQUIRED">MusicOnHold field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCETOAGENT">AnnounceToAgent</label>\n                <md-select name="announce" ng-model="vm.voiceQueue.announce" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'FALSE\'">None</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + announce.save_name" ng-repeat="announce in vm.sounds" ng-disabled="announce.canSelect === false">{{ announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCETOAGENT"></span></div>\n                <div ng-messages="generalForm[\'announce\'].$error" ng-show="generalForm[\'announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCETOAGENT_REQUIRED">AnnounceToAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.voiceQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container settings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.SETTINGS">SETTINGS</div>\n            </div>\n            <form name="settingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEFREQUENCY">AnnounceFrequency</label>\n                <input type="number" name="announce_frequency" ng-model="vm.voiceQueue.announce_frequency" min="0" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'announce_frequency\'].$error" ng-show="settingsForm[\'announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_REQUIRED">AnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINANNOUNCEFREQUENCY">MinAnnounceFrequency</label>\n                <input type="number" name="min_announce_frequency" ng-model="vm.voiceQueue.min_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MINANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'min_announce_frequency\'].$error" ng-show="settingsForm[\'min_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_REQUIRED">MinAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MinAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCEFREQUENCY">PeriodicAnnounceFrequency</label>\n                <input type="number" name="periodic_announce_frequency" ng-model="vm.voiceQueue.periodic_announce_frequency" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCEFREQUENCY"></span></div>\n                <div ng-messages="settingsForm[\'periodic_announce_frequency\'].$error" ng-show="settingsForm[\'periodic_announce_frequency\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_REQUIRED">PeriodicAnnounceFrequency field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">PeriodicAnnounceFrequency must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RANDOMPERIODICANNOUNCE">RandomPeriodicAnnounce</label>\n                <md-select name="random_periodic_announce" ng-model="vm.voiceQueue.random_periodic_announce" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RANDOMPERIODICANNOUNCE"></span></div>\n                <div ng-messages="settingsForm[\'random_periodic_announce\'].$error" ng-show="settingsForm[\'random_periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RANDOMPERIODICANNOUNCE_REQUIRED">RandomPeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEHOLDTIME">AnnounceHoldtime</label>\n                <md-select name="announce_holdtime" ng-model="vm.voiceQueue.announce_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'once\'">Once</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEHOLDTIME"></span></div>\n                <div ng-messages="settingsForm[\'announce_holdtime\'].$error" ng-show="settingsForm[\'announce_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEHOLDTIME_REQUIRED">AnnounceHoldtime field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCECALLERPOSITION">AnnounceCallerPosition</label>\n                <md-select name="announce_position" ng-model="vm.voiceQueue.announce_position" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'yes\'">Yes</md-option>\n                  <md-option ng-value="\'no\'">No</md-option>\n                  <md-option ng-value="\'limit\'">Limit</md-option>\n                  <md-option ng-value="\'more\'">More</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCECALLERPOSITION"></span></div>\n                <div ng-messages="settingsForm[\'announce_position\'].$error" ng-show="settingsForm[\'announce_position\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCECALLERPOSITION_REQUIRED">AnnounceCallerPosition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ANNOUNCEPOSITIONLIMIT">AnnouncePositionLimit</label>\n                <input type="number" name="announce_position_limit" ng-model="vm.voiceQueue.announce_position_limit" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.ANNOUNCEPOSITIONLIMIT"></span></div>\n                <div ng-messages="settingsForm[\'announce_position_limit\'].$error" ng-show="settingsForm[\'announce_position_limit\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ANNOUNCEPOSITIONLIMIT_REQUIRED">AnnouncePositionLimit field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.REPORTHOLDTIMEAGENT">ReportHoldtimeAgent</label>\n                <md-select name="reportholdtime" ng-model="vm.voiceQueue.reportholdtime" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.REPORTHOLDTIMEAGENT"></span></div>\n                <div ng-messages="settingsForm[\'reportholdtime\'].$error" ng-show="settingsForm[\'reportholdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.REPORTHOLDTIMEAGENT_REQUIRED">ReportHoldtimeAgent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceQueue-detail-form-container announcements md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ANNOUNCEMENTS">ANNOUNCEMENTS</div>\n            </div>\n            <form name="announcementsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.PERIODICANNOUNCE">PeriodicAnnounce</label>\n                <md-select name="periodic_announce" ng-model="vm.voiceQueue.periodic_announce" autofocus multiple ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Default</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + periodic_announce.save_name" ng-repeat="periodic_announce in vm.sounds" ng-disabled="periodic_announce.canSelect === false">{{ periodic_announce.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.PERIODICANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'periodic_announce\'].$error" ng-show="announcementsForm[\'periodic_announce\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.PERIODICANNOUNCE_REQUIRED">PeriodicAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.HOLDTIMEANNOUNCE">HoldTimeAnnounce</label>\n                <md-select name="queue_reporthold" ng-model="vm.voiceQueue.queue_reporthold" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_reporthold.save_name" ng-repeat="queue_reporthold in vm.sounds" ng-disabled="queue_reporthold.canSelect === false">{{ queue_reporthold.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.HOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_reporthold\'].$error" ng-show="announcementsForm[\'queue_reporthold\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.HOLDTIMEANNOUNCE_REQUIRED">HoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.YOUARENEXTANNOUNCE">YouareNextAnnounce</label>\n                <md-select name="queue_youarenext" ng-model="vm.voiceQueue.queue_youarenext" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_youarenext.save_name" ng-repeat="queue_youarenext in vm.sounds" ng-disabled="queue_youarenext.canSelect === false">{{ queue_youarenext.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.YOUARENEXTANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_youarenext\'].$error" ng-show="announcementsForm[\'queue_youarenext\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.YOUARENEXTANNOUNCE_REQUIRED">YouareNextAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THEREAREANNOUNCE">ThereareAnnounce</label>\n                <md-select name="queue_thereare" ng-model="vm.voiceQueue.queue_thereare" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thereare.save_name" ng-repeat="queue_thereare in vm.sounds" ng-disabled="queue_thereare.canSelect === false">{{ queue_thereare.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THEREAREANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thereare\'].$error" ng-show="announcementsForm[\'queue_thereare\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THEREAREANNOUNCE_REQUIRED">ThereareAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.WAITINGCALLSANNOUNCE">WaitingCallsAnnounce</label>\n                <md-select name="queue_callswaiting" ng-model="vm.voiceQueue.queue_callswaiting" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_callswaiting.save_name" ng-repeat="queue_callswaiting in vm.sounds" ng-disabled="queue_callswaiting.canSelect === false">{{ queue_callswaiting.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.WAITINGCALLSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_callswaiting\'].$error" ng-show="announcementsForm[\'queue_callswaiting\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.WAITINGCALLSANNOUNCE_REQUIRED">WaitingCallsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.ESTIMATEDHOLDTIMEANNOUNCE">EstimatedHoldTimeAnnounce</label>\n                <md-select name="queue_holdtime" ng-model="vm.voiceQueue.queue_holdtime" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_holdtime.save_name" ng-repeat="queue_holdtime in vm.sounds" ng-disabled="queue_holdtime.canSelect === false">{{ queue_holdtime.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.ESTIMATEDHOLDTIMEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_holdtime\'].$error" ng-show="announcementsForm[\'queue_holdtime\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.ESTIMATEDHOLDTIMEANNOUNCE_REQUIRED">EstimatedHoldTimeAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTESANNOUNCE">MinutesAnnounce</label>\n                <md-select name="queue_minutes" ng-model="vm.voiceQueue.queue_minutes" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minutes.save_name" ng-repeat="queue_minutes in vm.sounds" ng-disabled="queue_minutes.canSelect === false">{{ queue_minutes.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTESANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minutes\'].$error" ng-show="announcementsForm[\'queue_minutes\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTESANNOUNCE_REQUIRED">MinutesAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MINUTEANNOUNCE">MinuteAnnounce</label>\n                <md-select name="queue_minute" ng-model="vm.voiceQueue.queue_minute" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_minute.save_name" ng-repeat="queue_minute in vm.sounds" ng-disabled="queue_minute.canSelect === false">{{ queue_minute.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MINUTEANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_minute\'].$error" ng-show="announcementsForm[\'queue_minute\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MINUTEANNOUNCE_REQUIRED">MinuteAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECONDSANNOUNCE">SecondsAnnounce</label>\n                <md-select name="queue_seconds" ng-model="vm.voiceQueue.queue_seconds" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_seconds.save_name" ng-repeat="queue_seconds in vm.sounds" ng-disabled="queue_seconds.canSelect === false">{{ queue_seconds.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SECONDSANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_seconds\'].$error" ng-show="announcementsForm[\'queue_seconds\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECONDSANNOUNCE_REQUIRED">SecondsAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THANKYOUANNOUNCE">ThankYouAnnounce</label>\n                <md-select name="queue_thankyou" ng-model="vm.voiceQueue.queue_thankyou" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">Default</md-option>\n                  <md-option ng-value="\'\'">Disabled</md-option>\n                  <md-option ng-value="\'/var/opt/motion2/server/files/sounds/converted/\' + queue_thankyou.save_name" ng-repeat="queue_thankyou in vm.sounds" ng-disabled="queue_thankyou.canSelect === false">{{ queue_thankyou.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.THANKYOUANNOUNCE"></span></div>\n                <div ng-messages="announcementsForm[\'queue_thankyou\'].$error" ng-show="announcementsForm[\'queue_thankyou\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THANKYOUANNOUNCE_REQUIRED">ThankYouAnnounce field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceQueue-detail-form-container advanced md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.ADVANCED">ADVANCED</div>\n            </div>\n            <form name="advancedForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.acw" aria-label="AfterCallWork" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.AFTERCALLWORK">AfterCallWork</span></md-switch>\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORK"></span></div>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.acw" class="md-block">\n                <label translate="VOICE.AFTERCALLWORKDURATION">AfterCallWorkDuration</label>\n                <input type="number" name="acwTimeout" ng-model="vm.voiceQueue.acwTimeout" min="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.AFTERCALLWORKDURATION"></span></div>\n                <div ng-messages="advancedForm[\'acwTimeout\'].$error" ng-show="advancedForm[\'acwTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_REQUIRED">AfterCallWorkDuration field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO">AfterCallWorkDuration must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AUTOPAUSE">AutoPause</label>\n                <md-select name="autopause" ng-model="vm.voiceQueue.autopause" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'all\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.AUTOPAUSE"></span></div>\n                <div ng-messages="advancedForm[\'autopause\'].$error" ng-show="advancedForm[\'autopause\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AUTOPAUSE_REQUIRED">AutoPause field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RINGINUSE">RingInUse</label>\n                <md-select name="ringinuse" ng-model="vm.voiceQueue.ringinuse" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.RINGINUSE"></span></div>\n                <div ng-messages="advancedForm[\'ringinuse\'].$error" ng-show="advancedForm[\'ringinuse\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RINGINUSE_REQUIRED">RingInUse field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MEMBERDELAY">MemberDelay</label>\n                <input type="number" name="memberdelay" ng-model="vm.voiceQueue.memberdelay" min="0" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.MEMBERDELAY"></span></div>\n                <div ng-messages="advancedForm[\'memberdelay\'].$error" ng-show="advancedForm[\'memberdelay\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_REQUIRED">MemberDelay field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">MemberDelay must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TIMEOUTRESTART">TimeoutRestart</label>\n                <md-select name="timeoutrestart" ng-model="vm.voiceQueue.timeoutrestart" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.TIMEOUTRESTART"></span></div>\n                <div ng-messages="advancedForm[\'timeoutrestart\'].$error" ng-show="advancedForm[\'timeoutrestart\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TIMEOUTRESTART_REQUIRED">TimeoutRestart field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.MONITORFORMAT">MonitorFormat</label>\n                <md-select name="monitor_format" ng-model="vm.voiceQueue.monitor_format" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'\'">Inactive</md-option>\n                  <md-option ng-value="\'wav\'">wav</md-option>\n                  <md-option ng-value="\'wav49\'">wav49</md-option>\n                  <md-option ng-value="\'gsm\'">gsm</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MONITORFORMAT"></span></div>\n                <div ng-messages="advancedForm[\'monitor_format\'].$error" ng-show="advancedForm[\'monitor_format\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MONITORFORMAT_REQUIRED">MonitorFormat field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONTEXT">Context</label>\n                <input type="text" name="context" ng-model="vm.voiceQueue.context" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.CONTEXT"></span></div>\n                <div ng-messages="advancedForm[\'context\'].$error" ng-show="advancedForm[\'context\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONTEXT_REQUIRED">Context field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETINTERFACEVARIABLES">SetInterfaceVariables</label>\n                <md-select name="setinterfacevar" ng-model="vm.voiceQueue.setinterfacevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETINTERFACEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setinterfacevar\'].$error" ng-show="advancedForm[\'setinterfacevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETINTERFACEVARIABLES_REQUIRED">SetInterfaceVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEVARIABLES">SetQueueVariables</label>\n                <md-select name="setqueuevar" ng-model="vm.voiceQueue.setqueuevar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueuevar\'].$error" ng-show="advancedForm[\'setqueuevar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEVARIABLES_REQUIRED">SetQueueVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SETQUEUEENTRYVARIABLES">SetQueueEntryVariables</label>\n                <md-select name="setqueueentryvar" ng-model="vm.voiceQueue.setqueueentryvar" ng-disabled="!vm.crudPermissions.canEdit">\n\n                  <md-option ng-value="\'yes\'"> {{ \'VOICE.YES\' | translate }} </md-option>\n\n                  <md-option ng-value="\'no\'"> {{ \'VOICE.NO\' | translate }} </md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.SETQUEUEENTRYVARIABLES"></span></div>\n                <div ng-messages="advancedForm[\'setqueueentryvar\'].$error" ng-show="advancedForm[\'setqueueentryvar\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SETQUEUEENTRYVARIABLES_REQUIRED">SetQueueEntryVariables field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SERVICELEVEL">ServiceLevel</label>\n                <input type="number" name="servicelevel" ng-model="vm.voiceQueue.servicelevel" min="0" max="100" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="VOICE.HELP.SERVICELEVEL"></span></div>\n                <div ng-messages="advancedForm[\'servicelevel\'].$error" ng-show="advancedForm[\'servicelevel\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_REQUIRED">ServiceLevel field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>0</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="VOICE.ERRORS.SERVICELEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO">ServiceLevel must be a valid greater or equal than</span> <span>100</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.voiceQueue.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="VOICE.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceQueue.mandatoryDisposition" class="md-block">\n                <label translate="VOICE.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.voiceQueue.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="VOICE.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="advancedForm[\'mandatoryDispositionPauseId\'].$error" ng-show="advancedForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceQueues/voiceQueues.html",'<div id="voiceQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICEQUEUES">VoiceQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceQueues-count">\n          <span>{{vm.selectedVoiceQueues.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceQueues()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceQueues()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceQueues" csv-label="true" filename="voiceQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceQueues($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICEQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'VOICE.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'VOICE.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'VOICE.STRATEGY\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'VOICE.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceQueues.rows.length">\n                <td md-cell colspan="5">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceQueue" md-select-id="id" ng-repeat="voiceQueue in vm.voiceQueues.rows">\n                <td md-cell ng-if="voiceQueue.userpic"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="api/users/{{voiceQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="id ">{{voiceQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="name ">{{voiceQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="strategy ">{{ vm.arraystrategy[voiceQueue.strategy].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceQueue, ev) : vm.createOrEditVoiceQueue($event, voiceQueue)" md-cell class="description ">{{voiceQueue.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceQueue, $event    )" translate="VOICE.EDIT_VOICEQUEUE">\n                          Edit VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(voiceQueue, $event    )" translate="VOICE.TEAMADD_VOICEQUEUE">\n                          teamadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(voiceQueue, $event    )" translate="VOICE.AGENTADD_VOICEQUEUE">\n                          agentadd VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceQueue, $event    )" translate="VOICE.DELETE_VOICEQUEUE">\n                          Delete VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(voiceQueue, $event    )" translate="VOICE.GOTOREALTIME_VOICEQUEUE">\n                          goToRealtime VoiceQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceQueues.count}}" md-on-paginate="vm.getVoiceQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICEQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD VOICEQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-voiceQueue-button" ng-click="vm.createOrEditVoiceQueue($event)" aria-label="add voiceQueue" translate translate-attr-aria-label="VOICE.ADD_VOICEQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD VOICEQUEUE BUTTON --\x3e\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/create/dialog.html",'<md-dialog class="voiceRecording-dialog" aria-label="New VoiceRecording">\n  <form name="voiceRecordingForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="VOICE.RATING">Rating</label>\n        <md-select name="rating" ng-model="vm.voiceRecording.rating" autofocus ng-disabled="!vm.newVoiceRecording && !vm.crudPermissions.canEdit">\n          <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n          <md-option value="1">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n          </md-option>\n          <md-option value="2">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n          </md-option>\n          <md-option value="3">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n          </md-option>\n          <md-option value="4">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n          </md-option>\n          <md-option value="5">\n            <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n          </md-option>\n        </md-select>\n        <div ng-messages="voiceRecordingForm[\'rating\'].$error" ng-show="voiceRecordingForm[rating].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newVoiceRecording" ng-click="vm.saveVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid || voiceRecordingForm.$pristine" aria-label="SAVE" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newVoiceRecording" ng-click="vm.addNewVoiceRecording()" class="send-button md-accent md-raised" ng-disabled="voiceRecordingForm.$invalid" aria-label="ADD" translate="VOICE.ADD_VOICERECORDING" translate-attr-aria-label="VOICE.ADD_VOICERECORDING">\n          ADD VOICERECORDING\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newVoiceRecording" ng-click="vm.deleteVoiceRecording($event)" aria-label="DELETE" translate translate-attr-aria-label="VOICE.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="VOICE.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/voice/views/voiceRecordings/edit/view.html",'<div id="voice-voiceRecording" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-voiceRecordings-button md-icon-button" aria-label="Go to voiceRecordings" ng-click="vm.gotoVoiceRecordings()" translate translate-attr-aria-label="VOICE.GO_TO_VOICERECORDINGS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="voiceRecording-image" hide-xs>\n          <img ng-src="assets/images/business/voiceRecordings.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.voiceRecording.id}}\n            <span ng-if="vm.voiceRecording.name">{{vm.voiceRecording.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="VOICE.CREATED_AT"></span> <span>{{vm.voiceRecording.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveVoiceRecording()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(voiceRecordingsForm.$invalid) || (transcriptForm.$invalid) || (sentimentAnalysisForm.$invalid)" translate="VOICE.SAVE" translate-attr-aria-label="VOICE.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="VOICE.GENERAL">GENERAL</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container voicerecordings md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.VOICERECORDINGS">VOICERECORDINGS</div>\n            </div>\n            <form name="voiceRecordingsForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="VOICE.TYPE">Type</label>\n                <input type="" name="type" ng-model="vm.voiceRecording.type" autofocus disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'type\'].$error" ng-show="voiceRecordingsForm[\'type\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.TYPE_REQUIRED">Type field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.UNIQUEID">UniqueId</label>\n                <input type="" name="uniqueid" ng-model="vm.voiceRecording.uniqueid" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'uniqueid\'].$error" ng-show="voiceRecordingsForm[\'uniqueid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.UNIQUEID_REQUIRED">UniqueId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLER">Caller</label>\n                <input type="" name="calleridnum" ng-model="vm.voiceRecording.calleridnum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'calleridnum\'].$error" ng-show="voiceRecordingsForm[\'calleridnum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLER_REQUIRED">Caller field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CALLED">Called</label>\n                <input type="" name="exten" ng-model="vm.voiceRecording.exten" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'exten\'].$error" ng-show="voiceRecordingsForm[\'exten\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CALLED_REQUIRED">Called field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.CONNECTED">Connected</label>\n                <input type="" name="connectedlinenum" ng-model="vm.voiceRecording.connectedlinenum" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'connectedlinenum\'].$error" ng-show="voiceRecordingsForm[\'connectedlinenum\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.CONNECTED_REQUIRED">Connected field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.QUEUE">Queue</label>\n                <input type="" name="queue" ng-model="vm.voiceRecording.queue" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'queue\'].$error" ng-show="voiceRecordingsForm[\'queue\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.AGENT">Agent</label>\n                <input type="text" name="membername" ng-model="vm.voiceRecording.membername" privacy="vm.userProfile.privacyEnabled" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'membername\'].$error" ng-show="voiceRecordingsForm[\'membername\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.RATING">Rating</label>\n                <md-select name="rating" ng-model="vm.voiceRecording.rating" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="null">{{\'VOICE.NO_RATING\' | translate}}</md-option>\n                  <md-option value="1">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1]"></md-icon>\n                  </md-option>\n                  <md-option value="2">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2]"></md-icon>\n                  </md-option>\n                  <md-option value="3">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3]"></md-icon>\n                  </md-option>\n                  <md-option value="4">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4]"></md-icon>\n                  </md-option>\n                  <md-option value="5">\n                    <md-icon md-font-icon="icon-star" style="color:red" ng-repeat="icon in [1,2,3,4,5]"></md-icon>\n                  </md-option>\n                </md-select>\n                <div ng-messages="voiceRecordingsForm[\'rating\'].$error" ng-show="voiceRecordingsForm[rating].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.RATING_REQUIRED">Rating field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.DISPOSITION">Disposition</label>\n                <input type="text" name="userDisposition" ng-model="vm.voiceRecording.userDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userDisposition\'].$error" ng-show="voiceRecordingsForm[\'userDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.SECOND_LEVEL_DISPOSITION">Second_Level_Disposition</label>\n                <input type="text" name="userSecondDisposition" ng-model="vm.voiceRecording.userSecondDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userSecondDisposition\'].$error" ng-show="voiceRecordingsForm[\'userSecondDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.SECOND_LEVEL_DISPOSITION_REQUIRED">Second_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="VOICE.THIRD_LEVEL_DISPOSITION">Third_Level_Disposition</label>\n                <input type="text" name="userThirdDisposition" ng-model="vm.voiceRecording.userThirdDisposition" disabled>\n\n                <div ng-messages="voiceRecordingsForm[\'userThirdDisposition\'].$error" ng-show="voiceRecordingsForm[\'userThirdDisposition\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="VOICE.ERRORS.THIRD_LEVEL_DISPOSITION_REQUIRED">Third_Level_Disposition field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.license.ai">\n        <md-tab-label>\n          <span translate="VOICE.TRANSCRIPTANALYSIS">TRANSCRIPTANALYSIS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="voiceRecording-detail-form-container transcript md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="VOICE.TRANSCRIPT">TRANSCRIPT</div>\n            </div>\n            <form name="transcriptForm" novalidate>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'COMPLETED\'" class="md-block">\n                <label translate="VOICE.TEXT">Text</label>\n                <textarea name="fileText" ng-model="vm.voiceRecording.fileText" autofocus ng-disabled="true"></textarea>\n              </md-input-container>\n              <md-input-container ng-if="vm.voiceRecording.transcribeStatus == \'FAILED\'" class="md-block">\n                <label translate="VOICE.FAILUREREASON">FailureReason</label>\n                <textarea name="failureReason" ng-model="vm.voiceRecording.failureReason" ng-disabled="true"></textarea>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="voiceRecording-detail-form-container sentimentanalysis md-background-bg md-whiteframe-1dp">\n            <div ng-controller="VoiceRecordingSentimentStatisticsController as vm_ss" ng-init="vm_ss.init(vm.voiceRecording)">\n              <md-toolbar class="md-table-toolbar md-default">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="VOICE.SENTIMENTANALYSIS" style="width: 50px;">Sentiment Analysis</span>\n                  <div flex></div>\n                </div>\n              </md-toolbar>\n\n              \x3c!-- WIDGET GROUP --\x3e\n              <div class="widget-group" layout="row" flex="100" layout-wrap>\n\n                \x3c!-- WIDGET 1 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8 sentiment" ng-class="vm_ss.voiceRecording.sentiment">\n                        {{vm_ss.voiceRecording.sentiment}}\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 1 --\x3e\n\n                \x3c!-- WIDGET 2 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sPositive || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_POSITIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 2 --\x3e\n\n                \x3c!-- WIDGET 3 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNegative || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEGATIVE\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 3 --\x3e\n\n                \x3c!-- WIDGET 4 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sNeutral || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_NEUTRAL\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 4 --\x3e\n\n                \x3c!-- WIDGET 5 --\x3e\n                <ms-widget class="h-140" layout="column" flex="100" flex-gt-xs="50" flex-gt-md="20">\n                  \x3c!-- Front --\x3e\n                  <ms-widget-front class="p-16 white-bg" layout="row" flex>\n                    <div class="pt-8 pb-8" layout="column" layout-align="center center" flex>\n                      <div class="md-display-1 pb-8">\n                        ({{ (vm_ss.voiceRecording.sMixed || 0) * 100 | number: 2  }}%)\n                      </div>\n                      <div class="font-weight-500 secondary-text">\n                        {{ \'VOICE.SENTIMENT_MIXED\' | translate | uppercase }}\n                      </div>\n                    </div>\n                  </ms-widget-front>\n                  \x3c!-- / Front --\x3e\n                </ms-widget>\n                \x3c!-- / WIDGET 5 --\x3e\n\n              </div>\n              \x3c!-- / WIDGET GROUP --\x3e\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/voice/views/voiceRecordings/voiceRecordings.html",'<div id="voiceRecordings" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-phone" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="VOICE.VOICERECORDINGS">VoiceRecordings</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="VOICE.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n      <ms-quick-filter filters="vm.quickFilters" query="vm.query" search="vm.getVoiceRecordings()"></ms-quick-filter>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedVoiceRecordings.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedVoiceRecordings =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="VOICE.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-voiceRecordings-count">\n          <span>{{vm.selectedVoiceRecordings.length}}</span>\n          <span translate="VOICE.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="VOICE.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllVoiceRecordings()" translate="VOICE.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectVoiceRecordings()" translate="VOICE.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedVoiceRecordings" csv-label="true" filename="voiceRecordings.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribesentimentSelectedVoiceRecordings($event)" aria-label="transcribesentiment selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBESENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-text-to-speech"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runtranscribeSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.TRANSCRIBE_SELECTED">\n          <md-icon md-font-icon="icon-format-size"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNTRANSCRIBE_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.license.ai" ng-click="vm.runsentimentSelectedVoiceRecordings($event)" aria-label="transcribe selected" translate translate-attr-label="VOICERECORDINGS.SENTIMENT_SELECTED">\n          <md-icon md-font-icon="icon-heart-outline"></md-icon>\n          <md-tooltip>{{\'VOICE.RUNSENTIMENT_VOICERECORDING\' | translate}}</md-tooltip>\n        </md-button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedVoiceRecordings($event)" aria-label="delete selected" translate translate-attr-label="VOICE.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- VOICERECORDING TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedVoiceRecordings" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getVoiceRecordings">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="type">{{ \'VOICE.TYPE\' | translate }}</th>\n                <th md-column md-order-by="uniqueid">{{ \'VOICE.UNIQUEID\' | translate }}</th>\n                <th md-column md-order-by="calleridnum">{{ \'VOICE.CALLER\' | translate }}</th>\n                <th md-column md-order-by="exten">{{ \'VOICE.CALLED\' | translate }}</th>\n                <th md-column md-order-by="connectedlinenum">{{ \'VOICE.CONNECTED\' | translate }}</th>\n                <th md-column md-order-by="queue">{{ \'VOICE.QUEUE\' | translate }}</th>\n                <th md-column md-order-by="membername">{{ \'VOICE.AGENT\' | translate }}</th>\n                <th md-column md-order-by="rating">{{ \'VOICE.RATING\' | translate }}</th>\n                <th md-column>{{ \'VOICE.AUDIO\' | translate }}</th>\n                <th md-column md-order-by="createdAt">{{ \'VOICE.DATE\' | translate }}</th>\n                <th md-column md-order-by="userDisposition">{{ \'VOICE.DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userSecondDisposition">{{ \'VOICE.SECOND_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="userThirdDisposition">{{ \'VOICE.THIRD_LEVEL_DISPOSITION\' | translate }}</th>\n                <th md-column md-order-by="transcribeStatus" ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBE\' | translate }}</th>\n                <th md-column md-order-by="sentiment" ng-if="vm.license.ai">{{ \'VOICE.SENTIMENTANALYSIS\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.voiceRecordings.rows.length">\n                <td md-cell colspan="16">\n                  <div layout="row" layout-align="center center">\n                    <span translate="VOICE.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="voiceRecording" md-select-id="id" ng-repeat="voiceRecording in vm.voiceRecordings.rows">\n                <td md-cell ng-if="voiceRecording.userpic"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="api/users/{{voiceRecording.id}}/avatar" /></td>\n                <td md-cell ng-if="!voiceRecording.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{voiceRecording.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="type ">{{voiceRecording.type}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="uniqueid ">{{voiceRecording.uniqueid}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="calleridnum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.calleridnum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="exten " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.exten}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="connectedlinenum " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.connectedlinenum}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="queue ">{{voiceRecording.queue}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="membername " privacy="{{vm.userProfile.privacyEnabled}}" ng-cloak>{{voiceRecording.membername}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="rating ">\n                  <md-icon md-font-icon="icon-star" style="color:red" ng-show="voiceRecording.rating" ng-repeat="rating in [1,2,3,4,5] | limitTo:voiceRecording.rating"></md-icon><span ng-hide="voiceRecording.rating" translate="VOICE.NO_RATING">No rating</span>\n                </td>\n                <td md-cell class="audio " ng-switch="voiceRecording.format">\n                  \x3c!-- audio recording directive --\x3e\n                  <ms-recording ng-switch-when=".wav" id="voiceRecording.id" model="\'voiceRecording\'"></ms-recording>\n                  \x3c!-- / audio recording directive --\x3e\n                  <span ng-switch-when=".gsm|.WAV" ng-switch-when-separator="|">\n                    <em>{{ \'VOICE.CANT_PLAY_GSM_AUDIO_FILES\' | translate }}</em>\n                  </span>\n                </td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="createdAt ">{{voiceRecording.createdAt | date:\'medium\' }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userDisposition ">{{voiceRecording.userDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userSecondDisposition ">{{voiceRecording.userSecondDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="userThirdDisposition ">{{voiceRecording.userThirdDisposition}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="transcribeStatus " ng-if="vm.license.ai">{{ \'VOICE.TRANSCRIBESTATUS_\' + voiceRecording.transcribeStatus | translate}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(voiceRecording, ev) : vm.createOrEditVoiceRecording($event, voiceRecording)" md-cell class="sentiment " ng-if="vm.license.ai">{{voiceRecording.sentiment}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(voiceRecording, $event    )" translate="VOICE.EDIT_VOICERECORDING">\n                          Edit VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscriberuntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBE_VOICERECORDING">\n                          RunTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'NEW\' && vm.license.ai">\n\n                        <md-button ng-click="vm.runtranscribesentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNTRANSCRIBESENTIMENT_VOICERECORDING">\n                          RunTranscribeSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && voiceRecording.sentiment == null && vm.license.ai">\n\n                        <md-button ng-click="vm.runsentimentruntranscribesentiment(voiceRecording, $event    )" translate="VOICE.RUNSENTIMENT_VOICERECORDING">\n                          RunSentiment VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="voiceRecording.transcribeStatus == \'COMPLETED\' && vm.license.ai">\n\n                        <md-button ng-click="vm.downloadtranscribefile2(voiceRecording, $event    )" translate="VOICE.DOWNLOADTRANSCRIBE_VOICERECORDING">\n                          DownloadTranscribe VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' || vm.userProfile.downloadVoiceRecordings">\n\n                        <md-button ng-click="vm.downloadfile2(voiceRecording, $event  , \'voice/recordings\'   )" translate="VOICE.DOWNLOAD_VOICERECORDING">\n                          Download VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(voiceRecording, $event    )" translate="VOICE.DELETE_VOICERECORDING">\n                          Delete VoiceRecording\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'VOICE.PAGE\' | translate}}:\', rowsPerPage: \'{{\'VOICE.ROWSPERPAGE\' | translate}}:\', of: \'{{\'VOICE.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.voiceRecordings.count}}" md-on-paginate="vm.getVoiceRecordings" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / VOICERECORDING TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- NO ADD BUTTON BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/realtime/realtime.html",'<div id="realtime" class="page-layout simple tabbed" layout="column" ng-cloak>\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.AGENTS">Agents</span>\n        </md-tab-label>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.QUEUES">Queues</span>\n        </md-tab-label>\n      </md-tab>\n    </md-tabs>\n\n    <md-card ui-view></md-card>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/create/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus ng-disabled="!vm.newWhatsappAccount">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappAccountForm[\'name\'].$error" ng-show="whatsappAccountForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">key</label>\n        <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'key\'].$error" ng-show="whatsappAccountForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LIST">List</label>\n        <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required>\n          <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n        </md-select>\n        <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n        <div ng-messages="whatsappAccountForm[\'ListId\'].$error" ng-show="whatsappAccountForm[\'ListId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n        <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n        <div ng-messages="whatsappAccountForm[\'remote\'].$error" ng-show="whatsappAccountForm[\'remote\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n          </div>\n          <div ng-message="url">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n          </div>\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TYPE">Type</label>\n        <md-select name="type" ng-model="vm.whatsappAccount.type">\n          <md-option ng-value="\'twilio\'">Twilio</md-option>\n          <md-option ng-value="\'sinch\'">Sinch</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountForm[\'type\'].$error" ng-show="whatsappAccountForm[\'type\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TYPE_REQUIRED">Type field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n        <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'accountSid\'].$error" ng-show="whatsappAccountForm[\'accountSid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\' || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n        <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true">\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n        <label translate="WHATSAPP.BASEURL">Base URL</label>\n\n        \x3c!--    <input type="text" name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" ng-required="true"> --\x3e\n\n        <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required>\n          <md-option ng-value="\'https://us1.whatsapp.api.sinch.com\'">US Production</md-option>\n          <md-option ng-value="\'https://eu1.whatsapp.api.sinch.com\'">EU Production</md-option>\n        </md-select>\n\n        <div ng-messages="whatsappAccountForm[\'authToken\'].$error" ng-show="whatsappAccountForm[\'authToken\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PHONE">phone</label>\n        <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true">\n        <div ng-messages="whatsappAccountForm[\'phone\'].$error" ng-show="whatsappAccountForm[\'phone\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappAccount.description">\n\n        <div ng-messages="whatsappAccountForm[\'description\'].$error" ng-show="whatsappAccountForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappAccount" ng-click="vm.saveWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid || whatsappAccountForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappAccount" ng-click="vm.addNewWhatsappAccount()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPACCOUNT" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n          ADD WHATSAPPACCOUNT\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappAccount" ng-click="vm.deleteWhatsappAccount($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/agentadd/agentadd.html",'<md-dialog class="whatsappAccount-dialog" aria-label="whatsappAccount" ng-init="vm.onInit()">\n  <form name="whatsappAccountForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">Add Agent to whatsappAccount</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/agent/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT">Agent</label>\n        <md-select name="agent" ng-model="vm.agent.agent" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="agent.name" ng-repeat="agent in vm.agents" ng-disabled="agent.canSelect === false">{{ agent.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'agent\'].$error" ng-show="whatsappAccountFormApp[\'agent\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_REQUIRED">Agent field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.agent.timeout" min="0" max="2147483" value="30" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/amazonlex/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.ACCESSKEYID">accesskeyid</label>\n        <input type="text" name="accesskeyid" ng-model="vm.amazonlex.accesskeyid" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'accesskeyid\'].$error" ng-show="whatsappAccountFormApp[\'accesskeyid\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.ACCESSKEYID_REQUIRED">accesskeyid field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.SECRETACCESSKEY">secretaccesskey</label>\n        <input type="text" name="secretaccesskey" ng-model="vm.amazonlex.secretaccesskey" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'secretaccesskey\'].$error" ng-show="whatsappAccountFormApp[\'secretaccesskey\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.SECRETACCESSKEY_REQUIRED">secretaccesskey field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LEXREGION">lexregion</label>\n        <md-select name="lexregion" ng-model="vm.amazonlex.lexregion" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'us-east-1\'">US East (N. Virginia)</md-option>\n          <md-option ng-value="\'us-west-2\'">US West (Oregon)</md-option>\n          <md-option ng-value="\'eu-west-1\'">EU (Ireland)</md-option>\n          <md-option ng-value="\'ap-southeast-2\'">Asia Pacific (Sydney)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'lexregion\'].$error" ng-show="whatsappAccountFormApp[\'lexregion\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LEXREGION_REQUIRED">lexregion field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.BOTNAME">botname</label>\n        <input type="text" name="botname" ng-model="vm.amazonlex.botname" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'botname\'].$error" ng-show="whatsappAccountFormApp[\'botname\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.BOTNAME_REQUIRED">botname field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.amazonlex.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/autoreply/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMES">times</label>\n        <md-select name="times" ng-model="vm.autoreply.times" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="2">One Time</md-option>\n          <md-option ng-value="0">Always</md-option>\n          <md-option ng-value="1">First Message</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'times\'].$error" ng-show="whatsappAccountFormApp[\'times\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMES_REQUIRED">times field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TEXT">Text</label>\n        <textarea name="text" ng-model="vm.autoreply.text" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'text\'].$error" ng-show="whatsappAccountFormApp[\'text\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TEXT_REQUIRED">Text field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/close/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DISPOSITION">Disposition</label>\n        <input type="text" name="disposition" ng-model="vm.close.disposition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'disposition\'].$error" ng-show="whatsappAccountFormApp[\'disposition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DISPOSITION_REQUIRED">Disposition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflow/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="text" name="key" ng-model="vm.dialogflow.key" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'key\'].$error" ng-show="whatsappAccountFormApp[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflow.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean (South Korea)</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pt\'">Portuguese (European)</md-option>\n          <md-option ng-value="\'pt-br\'">Portuguese (Nrazilian)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'sv\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-HK\'">Chinese (Hong Kong)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflow.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_REQUIRED">welcomemessage field is required</span>\n          </div>\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/dialogflowv2/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PROJECTID">ProjectID</label>\n        <input type="text" name="projectId" ng-model="vm.dialogflowv2.projectId" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'projectId\'].$error" ng-show="whatsappAccountFormApp[\'projectId\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PROJECTID_REQUIRED">ProjectID field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CLIENTEMAIL">ClientEmail</label>\n        <input type="text" name="clientEmail" ng-model="vm.dialogflowv2.clientEmail" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'clientEmail\'].$error" ng-show="whatsappAccountFormApp[\'clientEmail\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CLIENTEMAIL_REQUIRED">ClientEmail field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIVATEKEY">PrivateKey</label>\n        <textarea name="privateKey" ng-model="vm.dialogflowv2.privateKey" required></textarea>\n\n        <div ng-messages="whatsappAccountFormApp[\'privateKey\'].$error" ng-show="whatsappAccountFormApp[\'privateKey\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIVATEKEY_REQUIRED">PrivateKey field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.LANGUAGE">language</label>\n        <md-select name="language" ng-model="vm.dialogflowv2.language" required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'zh-HK\'">Chinese (Cantonese)</md-option>\n          <md-option ng-value="\'zh-CN\'">Chinese (Simplified)</md-option>\n          <md-option ng-value="\'zh-TW\'">Chinese (Traditional)</md-option>\n          <md-option ng-value="\'da\'">Danish</md-option>\n          <md-option ng-value="\'nl\'">Dutch</md-option>\n          <md-option ng-value="\'en\'">English</md-option>\n          <md-option ng-value="\'en-AU\'">English (Australia)</md-option>\n          <md-option ng-value="\'en-CA\'">English (Canada)</md-option>\n          <md-option ng-value="\'en-GB\'">English (Great Britain)</md-option>\n          <md-option ng-value="\'en-IN\'">English (India)</md-option>\n          <md-option ng-value="\'en-US\'">English (US)</md-option>\n          <md-option ng-value="\'fr\'">French</md-option>\n          <md-option ng-value="\'fr-CA\'">French (Canada)</md-option>\n          <md-option ng-value="\'fr-FR\'">\'France (France)</md-option>\n          <md-option ng-value="\'de\'">German</md-option>\n          <md-option ng-value="\'hi\'">Hindi</md-option>\n          <md-option ng-value="\'id\'">Indonesian</md-option>\n          <md-option ng-value="\'it\'">Italian</md-option>\n          <md-option ng-value="\'ja\'">Japanese</md-option>\n          <md-option ng-value="\'ko\'">Korean</md-option>\n          <md-option ng-value="\'no\'">Norwegian</md-option>\n          <md-option ng-value="\'pl\'">Polish</md-option>\n          <md-option ng-value="\'pt-BR\'">Portuguese (Brazil)</md-option>\n          <md-option ng-value="\'pt-PT\'">Portuguese (Portugal)</md-option>\n          <md-option ng-value="\'ru\'">Russian</md-option>\n          <md-option ng-value="\'es\'">Spanish</md-option>\n          <md-option ng-value="\'es-419\'">Spanish (Latin America)</md-option>\n          <md-option ng-value="\'es-ES\'">Spanish (Spain)</md-option>\n          <md-option ng-value="\'sw\'">Swedish</md-option>\n          <md-option ng-value="\'th\'">Thai</md-option>\n          <md-option ng-value="\'tr\'">Turkish</md-option>\n          <md-option ng-value="\'uk\'">Ukrainian</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'language\'].$error" ng-show="whatsappAccountFormApp[\'language\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.LANGUAGE_REQUIRED">language field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.WELCOMEMESSAGE">welcomemessage</label>\n        <textarea name="welcomemessage" ng-model="vm.dialogflowv2.welcomemessage" md-maxlength="255"></textarea>\n        <div class="hint"><span translate="WHATSAPP.HELP.WELCOMEMESSAGE"></span></div>\n\n        <div ng-messages="whatsappAccountFormApp[\'welcomemessage\'].$error" ng-show="whatsappAccountFormApp[\'welcomemessage\'].$touched" role="alert">\n\n\n          <div ng-message="md-maxlength">\n            <span translate="WHATSAPP.ERRORS.WELCOMEMESSAGE_MAX_LENGTH" translate-values=\'{max: 255}\'>welcomemessage must have a maximum length equal to 255</span>\n          </div>\n\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotoif/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.CONDITION">Condition</label>\n        <input type="text" name="condition" ng-model="vm.gotoif.condition" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'condition\'].$error" ng-show="whatsappAccountFormApp[\'condition\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.CONDITION_REQUIRED">Condition field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TRUEPRIORITY">truepriority</label>\n        <input type="number" name="truepriority" ng-model="vm.gotoif.truepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'truepriority\'].$error" ng-show="whatsappAccountFormApp[\'truepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_REQUIRED">truepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">truepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.FALSEPRIORITY">falsepriority</label>\n        <input type="number" name="falsepriority" ng-model="vm.gotoif.falsepriority" min="1" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'falsepriority\'].$error" ng-show="whatsappAccountFormApp[\'falsepriority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_REQUIRED">falsepriority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">falsepriority must be a valid greater or equal than</span> <span>1</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/gotop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.PRIORITY">Priority</label>\n        <input type="number" name="priority" ng-model="vm.gotop.priority" min="0" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'priority\'].$error" ng-show="whatsappAccountFormApp[\'priority\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_REQUIRED">Priority field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Priority must be a valid greater or equal than</span> <span>0</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/interval/dialog.html",'<md-dialog class="interval-dialog" aria-label="New Interval">\n  <form name="intervalForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n\n\n      <md-input-container class="md-block">\n        <label translate="TOOLS.TYPE">Type</label>\n        <md-select ng-model="vm.type" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="type" ng-repeat=\'type in vm.types\'>{{ type | ucfirst }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      <md-input-container class="md-block" ng-if="vm.type === \'list\'">\n        <label translate="TOOLS.INTERVALS">Intervals</label>\n        <md-select ng-model="vm.interval.IntervalId" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n          <md-option ng-value="interval.id" ng-repeat="interval in vm.intervals">{{ interval.name }}</md-option>\n        </md-select>\n      </md-input-container>\n\n      \x3c!-- TIMERANGE START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.TIME_RANGE">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <div class="md-block" flex>\n          <mdp-time-picker name="timeRangeFrom" mdp-placeholder="FROM" ng-model="vm.timeRangeFrom" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <div ng-messages="intervalForm.timeRangeFrom.$error" ng-show="intervalForm.timeRangeFrom.$touched" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_FROM_INVALID">Time Range From field is invalid</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n        <div class="md-block" flex ng-if="vm.timeRangeFrom">\n          <mdp-time-picker name="timeRangeTo" mdp-placeholder="TO*" ng-model="vm.timeRangeTo" mdp-format="HH:mm" mdp-auto-switch="true" mdp-disabled="!vm.newInterval && !vm.crudPermissions.canEdit" required>\n            <div ng-messages="intervalForm.timeRangeTo.$error" ng-show="intervalForm.timeRangeTo.$invalid" role="alert">\n              <div ng-message="format">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_INVALID">Time Range To field is invalid</span>\n              </div>\n              <div ng-message="required">\n                <span translate="TOOLS.ERRORS.TIME_RANGE_TO_REQUIRED">Time Range To field is required</span>\n              </div>\n            </div>\n          </mdp-time-picker>\n        </div>\n      </div>\n      \x3c!-- TIMERANGE END --\x3e\n\n      \x3c!-- DAYSOFWEEK START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.WEEK_DAYS">Week Days</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.dayOfWeekFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex class="md-block" ng-if="vm.dayOfWeekFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="dayOfWeekTo" ng-model="vm.dayOfWeekTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="day.value" ng-repeat="day in vm.daysOfWeek"><span translate="TOOLS.{{day.value | uppercase}}">{{ day.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.dayOfWeekTo.$error" ng-show="intervalForm.dayOfWeekTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- DAYSOFWEEK END --\x3e\n\n      \x3c!-- MONTHDAY START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTH_DAYS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthDayFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthDayFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthDayTo" ng-model="vm.monthDayTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month" ng-repeat="month in vm.daysOfMonth">{{ month }}</md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthDayTo.$error" ng-show="intervalForm.monthDayTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTHDAY END --\x3e\n\n      \x3c!-- MONTH START --\x3e\n      <label ng-if="vm.type === \'custom\'" translate="TOOLS.MONTHS">Time Range</label>\n      <div layout=row ng-if="vm.type === \'custom\'">\n        <md-input-container flex layout="column" class="md-block">\n          <label translate="TOOLS.FROM">From</label>\n          <md-select ng-model="vm.monthFrom" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="null"><span translate="TOOLS.ALWAYS">Always</span></md-option>\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n\n        </md-input-container>\n\n        <md-input-container flex layout="column" class="md-block" ng-if="vm.monthFrom">\n          <label translate="TOOLS.TO">To</label>\n          <md-select name="monthTo" ng-model="vm.monthTo" ng-disabled="!vm.newInterval && !vm.crudPermissions.canEdit">\n            <md-option ng-value="month.value" ng-repeat="month in vm.monthName"><span translate="TOOLS.{{month.value | uppercase}}">{{ month.value | ucfirst }}</span></md-option>\n          </md-select>\n          <div ng-messages="intervalForm.monthTo.$error" ng-show="intervalForm.monthTo.$touched" role="alert">\n          </div>\n        </md-input-container>\n      </div>\n      \x3c!-- MONTH END --\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="!vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.saveInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid || intervalForm.$pristine" aria-label="SAVE" translate="TOOLS.SAVE" translate-attr-aria-label="TOOLS.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.newInterval && vm.crudPermissions.canEdit" ng-click="vm.addNewInterval()" class="send-button md-accent md-raised" ng-disabled="intervalForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_INTERVAL" translate-attr-aria-label="TOOLS.ADD_INTERVAL">\n          ADD INTERVAL\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/noop/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <input type="text" name="value" ng-model="vm.noop.value" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'value\'].$error" ng-show="whatsappAccountFormApp[\'value\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/queue/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.QUEUE">Queue</label>\n        <md-select name="queue" ng-model="vm.queue.queue" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="queue.name" ng-repeat="queue in vm.queues" ng-disabled="queue.canSelect === false">{{ queue.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'queue\'].$error" ng-show="whatsappAccountFormApp[\'queue\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.QUEUE_REQUIRED">Queue field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TIMEOUT">Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.queue.timeout" min="0" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'timeout\'].$error" ng-show="whatsappAccountFormApp[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_REQUIRED">Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>0</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/system/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.COMMAND">Command</label>\n        <input type="text" name="command" ng-model="vm.system.command" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n        <div ng-messages="whatsappAccountFormApp[\'command\'].$error" ng-show="whatsappAccountFormApp[\'command\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.COMMAND_REQUIRED">Command field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VARIABLE">Variable</label>\n        <md-select name="variable" ng-model="vm.system.variable" ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="\'\'">None</md-option>\n          <md-option ng-value="variable.name" ng-repeat="variable in vm.variables" ng-disabled="variable.canSelect === false">{{ variable.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'variable\'].$error" ng-show="whatsappAccountFormApp[\'variable\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VARIABLE_REQUIRED">Variable field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/apps/tag/dialog.html",'<md-dialog class="whatsappAccount-dialog" aria-label="New WhatsappAccount">\n  <form name="whatsappAccountFormApp" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.TAG">Tag</label>\n        <md-select name="tag" ng-model="vm.tag.tag" autofocus required ng-disabled="!vm.crudPermissions.canEdit">\n          <md-option ng-value="tag.name" ng-repeat="tag in vm.tags" ng-disabled="tag.canSelect === false">{{ tag.name }}</md-option>\n        </md-select>\n        <div ng-messages="whatsappAccountFormApp[\'tag\'].$error" ng-show="whatsappAccountFormApp[\'tag\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.TAG_REQUIRED">Tag field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center" ng-if="vm.crudPermissions.canEdit">\n        <md-button type="submit" ng-click="vm.saveWhatsappAccountApp()" class="send-button md-accent md-raised" ng-disabled="whatsappAccountFormApp.$invalid || whatsappAccountFormApp.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/view.html",'<div id="whatsapp-whatsappAccount" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappAccounts-button md-icon-button" aria-label="Go to whatsappAccounts" ng-click="vm.gotoWhatsappAccounts()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPACCOUNTS">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappAccount-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappAccounts.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappAccount.id}}\n            <span ng-if="vm.whatsappAccount.name">{{vm.whatsappAccount.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappAccount.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappAccount, $event)" class="md-fab md-warn md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappAccount()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid) || (notificationForm.$invalid) || (transferForm.$invalid) || (proxyForm.$invalid) || (dispositionForm.$invalid) || (whatsappDispositionsForm.$invalid) || (whatsappCannedAnswersForm.$invalid) || (actionsForm.$invalid) || (interactionsForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappAccount.name" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.KEY">key</label>\n                <input type="text" name="key" ng-model="vm.whatsappAccount.key" md-maxlength="5" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'key\'].$error" ng-show="generalForm[\'key\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">key field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.KEY_MAX_LENGTH" translate-values=\'{max: 5}\'>key must have a maximum length equal to 5</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.LIST">List</label>\n                <md-select name="ListId" ng-model="vm.whatsappAccount.ListId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="ListId.id" ng-repeat="ListId in vm.lists" ng-disabled="ListId.canSelect === false">{{ ListId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.LIST"></span></div>\n                <div ng-messages="generalForm[\'ListId\'].$error" ng-show="generalForm[\'ListId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.LIST_REQUIRED">List field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.ACCOUNTSID">AccountSID</label>\n                <input type="text" name="accountSid" ng-model="vm.whatsappAccount.accountSid" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'accountSid\'].$error" ng-show="generalForm[\'accountSid\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.ACCOUNTSID_REQUIRED">AccountSID field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'twilio\'  || vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.AUTHTOKEN">AuthToken</label>\n                <input type="text" name="authToken" ng-model="vm.whatsappAccount.authToken" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'authToken\'].$error" ng-show="generalForm[\'authToken\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AUTHTOKEN_REQUIRED">AuthToken field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container ng-if="vm.whatsappAccount.type == \'sinch\'" class="md-block">\n                <label translate="WHATSAPP.BASEURL">BaseURL</label>\n\n                <md-select name="baseUrl" ng-model="vm.whatsappAccount.baseUrl" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryBaseUrl.url" ng-repeat="mandatoryBaseUrl in vm.baseUrl" ng-disabled="mandatoryBaseUrl.canSelect === false">{{ mandatoryBaseUrl.name }}</md-option>\n                </md-select>\n\n                <div ng-messages="generalForm[\'baseUrl\'].$error" ng-show="generalForm[\'baseUrl\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.BASEURL_REQUIRED">Base URL field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n\n\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.PHONE">phone</label>\n                <input type="text" name="phone" ng-model="vm.whatsappAccount.phone" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div ng-messages="generalForm[\'phone\'].$error" ng-show="generalForm[\'phone\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.PHONE_REQUIRED">phone field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.RECEIVEURL">receiveUrl</label>\n\n                <div layout="row" layout-align="center center">\n                  <button class="md-button md-fab md-mini md-primary" ngclipboard data-clipboard-target="#copytoclipboard-receiveUrl" ngclipboard-success="vm.alert({title: \'copied to clipboard\',  msg: e.text });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                    <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n                  </button>\n                  <input class="md-input" type="text" id="copytoclipboard-receiveUrl" name="receiveUrl" ng-value="vm.whatsappAccount.remote + \'/api/whatsapp/accounts/\' + vm.whatsappAccount.id + \'/notify?token=\' + vm.whatsappAccount.token" ng-readonly="true">\n                </div>\n                <div class="hint"><span translate="WHATSAPP.HELP.RECEIVEURL"></span></div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.WAITFORTHEASSIGNEDAGENT">WaitForTheAssignedAgent</label>\n                <input type="number" name="waitForTheAssignedAgent" ng-model="vm.whatsappAccount.waitForTheAssignedAgent" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'waitForTheAssignedAgent\'].$error" ng-show="generalForm[\'waitForTheAssignedAgent\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_REQUIRED">WaitForTheAssignedAgent field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO">WaitForTheAssignedAgent must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappAccount.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container notification md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.NOTIFICATION">NOTIFICATION</div>\n            </div>\n            <form name="notificationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationShake" aria-label="notificationShake" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSHAKE">notificationShake</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.notificationSound" aria-label="notificationSound" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.NOTIFICATIONSOUND">notificationSound</span></md-switch>\n              </md-input-container>\n              <div class="md-block">\n                <label class="md-caption grey-fg" translate="WHATSAPP.NOTIFICATIONTEMPLATE">notificationTemplate</label>\n                <textarea aria-label="notificationTemplate notificationTemplate" ckeditor="{ skin: \'office2013\', language: \'en\', allowedContent: true, extraPlugins: \'font,colorbutton,autoembed,autocorrect,googlethisterm,pastebase64\', toolbarGroups: [{ name: \'styles\', groups: [\'styles\'] }, { name: \'clipboard\', groups: [\'undo\'] }, { name: \'colors\', groups: [\'colors\'] }, { name: \'basicstyles\', groups: [\'basicstyles\'] }, { name: \'paragraph\', groups: [\'list\', \'indent\', \'align\'] }, { name: \'mode\' }], autocorrect_enabled: true, disableNativeSpellChecker: false, fontSize_sizes: \'8/8pt;9/9pt;10/10pt;11/11pt;12/12pt;14/14pt;16/16pt;18/18pt;20/20pt;22/22pt;24/24pt;26/26pt;28/28pt;36/36pt;48/48pt;72/72pt\',  removePlugins: \'magicline\' }" ng-model="vm.whatsappAccount.notificationTemplate"></textarea>\n              </div>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container transfer md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.TRANSFER">TRANSFER</div>\n            </div>\n            <form name="transferForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.queueTransfer" aria-label="queueTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.QUEUETRANSFER">queueTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.queueTransfer == true" class="md-block">\n                <label translate="WHATSAPP.QUEUETRANSFERTIMEOUT">queueTransferTimeout</label>\n                <input type="number" name="queueTransferTimeout" ng-model="vm.whatsappAccount.queueTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'queueTransferTimeout\'].$error" ng-show="transferForm[\'queueTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_REQUIRED">queueTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">queueTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.agentTransfer" aria-label="agentTransfer" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.AGENTTRANSFER">agentTransfer</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.agentTransfer == true" class="md-block">\n                <label translate="WHATSAPP.AGENTTRANSFERTIMEOUT">agentTransferTimeout</label>\n                <input type="number" name="agentTransferTimeout" ng-model="vm.whatsappAccount.agentTransferTimeout" min="1" max="2147483" value="300" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="transferForm[\'agentTransferTimeout\'].$error" ng-show="transferForm[\'agentTransferTimeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_REQUIRED">agentTransferTimeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">agentTransferTimeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ADVANCED">ADVANCED</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container proxy md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.PROXY">PROXY</div>\n            </div>\n            <form name="proxyForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.MOTIONPROXY">MotionProxy</label>\n                <input type="url" name="remote" ng-model="vm.whatsappAccount.remote" md-maxlength="255" value="LOCALIP" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div class="hint"><span translate="WHATSAPP.HELP.MOTIONPROXY"></span></div>\n                <div ng-messages="proxyForm[\'remote\'].$error" ng-show="proxyForm[\'remote\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_REQUIRED">MotionProxy field is required</span>\n                  </div>\n                  <div ng-message="url">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MUST_VALID_URL">MotionProxy must be a valid url http://www.xcally.com</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="WHATSAPP.ERRORS.MOTIONPROXY_MAX_LENGTH" translate-values=\'{max: 255}\'>MotionProxy must have a maximum length equal to 255</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.TOKEN">token</label>\n                <input type="text" name="token" ng-model="vm.whatsappAccount.token" disabled>\n\n                <div ng-messages="proxyForm[\'token\'].$error" ng-show="proxyForm[\'token\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.TOKEN_REQUIRED">token field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n          <div class="whatsappAccount-detail-form-container disposition md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.DISPOSITION">DISPOSITION</div>\n            </div>\n            <form name="dispositionForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.whatsappAccount.mandatoryDisposition" aria-label="MandatoryDisposition" ng-disabled="!vm.crudPermissions.canEdit"><span translate="WHATSAPP.MANDATORYDISPOSITION">MandatoryDisposition</span></md-switch>\n              </md-input-container>\n              <md-input-container ng-if="vm.whatsappAccount.mandatoryDisposition" class="md-block">\n                <label translate="WHATSAPP.MANDATORYDISPOSITIONPAUSEID">MandatoryDispositionPauseId</label>\n                <md-select name="mandatoryDispositionPauseId" ng-model="vm.whatsappAccount.mandatoryDispositionPauseId" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="mandatoryDispositionPauseId.id" ng-repeat="mandatoryDispositionPauseId in vm.pauses" ng-disabled="mandatoryDispositionPauseId.canSelect === false">{{ mandatoryDispositionPauseId.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="WHATSAPP.HELP.MANDATORYDISPOSITIONPAUSEID"></span></div>\n                <div ng-messages="dispositionForm[\'mandatoryDispositionPauseId\'].$error" ng-show="dispositionForm[\'mandatoryDispositionPauseId\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.MANDATORYDISPOSITIONPAUSEID_REQUIRED">MandatoryDispositionPauseId field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.DISPOSITIONS">DISPOSITIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div ng-controller="WhatsappAccountDispositionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions)">\n            <div layout="row">\n              <div class="column" flex="20">\n                <md-card class="mt-0">\n                  <md-card-content>\n                    <button layout-align="center center" md-mini-fab ng-click="vm_dc.query.level = null; vm_dc.getDispositions()">\n                      <div layout="row" layout-align="start center">\n                        <md-icon md-font-icon="icon-refresh"></md-icon>\n                        <span class="ph-5">{{ \'TOOLS.ALL_DISPOSITIONS\' | translate }}</span>\n                      </div>\n                    </button>\n                  </md-card-content>\n                </md-card>\n                <md-card>\n                  <md-card-content>\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="TOOLS.SELECT_LEVEL">Select a level</label>\n                      <md-select placeholder="{{ \'TOOLS.SELECT_LEVEL\' | translate }}" ng-model="vm_dc.query.level" ng-change="vm_dc.getDispositions()">\n                        <md-option ng-value="null"><em translate="TOOLS.ALL">All</em></md-option>\n                        <md-option ng-value="key" ng-repeat="(key, value) in vm_dc.levels">{{ value }}</md-option>\n                      </md-select>\n                    </md-input-container>\n                  </md-card-content>\n                </md-card>\n              </div>\n              <div class="whatsappAccount-detail-form-container whatsappdispositions md-background-bg md-whiteframe-1dp" flex="80">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead" translate="WHATSAPP.DISPOSITIONS">Dispositions</span>\n                    <ms-search-bar on-search="vm_dc.query.filter = query" on-collapse="vm_dc.query.filter = undefined" debounce="300" direction="down"></ms-search-bar>\n                    <div flex></div>\n                    <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditDisposition($event)" aria-label="Add whatsapp dispositions" translate translate-attr-label="WHATSAPP.ADD_DISPOSITION">\n                      <md-icon md-font-icon="icon-plus"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedDispositions.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_dc.selectedDispositions.length}}\n                      {{vm_dc.selectedDispositions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <button class="md-icon-button" ng-csv="vm_dc.exportSelectedDispositions" csv-label="true" filename="whatsappAccounts.csv">\n                      <md-icon md-font-icon="icon-file-excel"></md-icon>\n                    </button>\n                    <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedDispositions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_dc.selectedDispositions" md-progress="vm_dc.promise">\n                    <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getDispositions">\n                      <tr md-row>\n                        <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                        <th md-column md-order-by="level">{{ \'TOOLS.LEVEL\' | translate }}</th>\n                        <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                        <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                        </th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body>\n                      <tr md-row ng-hide="vm_dc.dispositions.rows.length">\n                        <td md-cell colspan="5">\n                          <div layout="row" layout-align="center center">\n                            <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                          </div>\n                        </td>\n                      </tr>\n                      <tr md-row md-select="disposition" md-select-id="id" ng-repeat="disposition in vm_dc.dispositions.rows">\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="id ">{{disposition.id}}\n                        </td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="level ">\n                          {{ vm_dc.levels[disposition.level] }}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="name ">\n                          {{disposition.name}}</td>\n                        <td ng-click="vm_dc.createOrEditDisposition($event, disposition)" md-cell class="description ">\n                          {{disposition.description}}</td>\n                        <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n                            <md-menu-content width="3">\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                                <md-button ng-click="vm_dc.createOrEditDisposition($event, disposition)" translate="TOOLS.EDIT_DISPOSITION">\n                                  Edit Disposition\n                                </md-button>\n                              </md-menu-item>\n                              \x3c!-- SUBACTIONS --\x3e\n                              \x3c!-- ACTIONS --\x3e\n                              <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                                <md-button ng-click="vm_dc.deleteConfirm(disposition, $event)" translate="TOOLS.DELETE_DISPOSITION">\n                                  Delete Disposition\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.dispositions.count}}" md-on-paginate="vm_dc.getDispositions" md-page-select>\n                </md-table-pagination>\n              </div>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.CANNEDANSWERS">CANNEDANSWERS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container whatsappcannedanswers md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountWhatsappCannedAnswersController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.WHATSAPPCANNEDANSWERS">WhatsappCannedAnswers</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountWhatsappCannedAnswers()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <md-button ng-if="vm_dc.crudPermissions.canEdit" class="md-icon-button" ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event)" aria-label="add whatsappCannedAnswer" translate translate-attr-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n                    <md-icon md-font-icon="icon-plus"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length}} {{vm_dc.selectedWhatsappAccountWhatsappCannedAnswers.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountWhatsappCannedAnswers" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountWhatsappCannedAnswers($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountWhatsappCannedAnswers" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountWhatsappCannedAnswers">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column md-order-by="key">\n                        {{ \'WHATSAPP.KEY\' | translate }}\n                      </th>\n                      <th md-column md-order-by="value">\n                        {{ \'WHATSAPP.VALUE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="description">\n                        {{ \'WHATSAPP.DESCRIPTION\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.CREATED_AT\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="whatsappCannedAnswer" md-select-id="id" ng-repeat="whatsappCannedAnswer in vm_dc.whatsappAccountWhatsappCannedAnswers.rows">\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.id}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.key}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.value}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{whatsappCannedAnswer.description}}\n                      </td>\n                      <td ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" md-cell>\n                        {{ whatsappCannedAnswer.createdAt | formatdate }}\n                      </td>\n                      <td md-cell class="actions" ng-if="!vm_dc.crudPermissions.readOnly">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canEdit">\n                              <md-button ng-click="vm_dc.createOrEditWhatsappAccountWhatsappCannedAnswer($event, whatsappCannedAnswer)" translate="WHATSAPP.EDIT_WHATSAPPCANNEDANSWER">\n                                Edit WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(whatsappCannedAnswer, $event)" translate="WHATSAPP.DELETE_WHATSAPPCANNEDANSWER">\n                                Delete WhatsappCannedAnswer\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountWhatsappCannedAnswers.rows.length">\n                      <td md-cell colspan="7">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_WHATSAPPCANNEDANSWER_AVAILABLE">No whatsappcannedanswer available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountWhatsappCannedAnswers.count}}" md-on-paginate="vm_dc.getWhatsappAccountWhatsappCannedAnswers" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.ACTIONS">ACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container actions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountActionsController as vm_ac" ng-init="vm_ac.init(vm.whatsappAccount, vm.crudPermissions)" class="content" md-background-bg layout="row" layout-align="start start">\n              \x3c!-- SIDENAV --\x3e\n              <div class="navigation-simple sidenav main-sidenav md-background-bg md-whiteframe-1dp" layout="column" flex="20" ng-if="vm_ac.crudPermissions.canEdit">\n                \x3c!-- SIDENAV CONTENT --\x3e\n                <md-list class="no-padding">\n                  <md-subheader class="md-no-sticky">\n                    <span translate="VOICE.APPLICATIONS_LIST">\n                      Applications List\n                    </span>\n                  </md-subheader>\n                </md-list>\n                <md-divider></md-divider>\n                <md-list ng-sortable="vm_ac.list">\n                  <md-list-item class="handle" ng-repeat="a in vm_ac.apps">\n                    <md-icon md-font-icon="{{a.icon}}" class="s16"></md-icon>\n                    <p class="text-truncate" translate="WHATSAPP.{{(a.appAlias || a.appType) | uppercase}}">{{a.appAlias || a.appType}}</p>\n                  </md-list-item>\n                </md-list>\n                \x3c!-- / SIDENAV CONTENT --\x3e\n              </div>\n              \x3c!-- / SIDENAV --\x3e\n              <div flex></div>\n              \x3c!-- MAIN --\x3e\n              <div class="main scrollable md-background-bg md-whiteframe-1dp" layout="column" flex="{{vm_ac.crudPermissions.canEdit ? 75 : 100}}">\n                <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">Drag & Drop Routing</span>\n                    <div flex></div>\n                    <ms-search-bar on-search="vm_ac.query.filter = query" on-collapse="vm_ac.query.filter = undefined" debounce="300"></ms-search-bar>\n                  </div>\n                </md-toolbar>\n                <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_ac.selectedWhatsappAccountApps.length">\n                  <div class="md-toolbar-tools">\n                    <span class="md-subhead">{{vm_ac.selectedWhatsappAccountApps.length}} {{vm_ac.selectedWhatsappAccountApps.length > 1 ? \'items\' : \'item\'}} selected</span>\n                    <div flex></div>\n                    <md-button ng-if="vm_ac.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_ac.deleteSelectedWhatsappAccountApps($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                      <md-icon md-font-icon="icon-delete"></md-icon>\n                    </md-button>\n                  </div>\n                </md-toolbar>\n\n                \x3c!-- QUEUES TABLE --\x3e\n                <md-table-container>\n                  <table md-table md-row-select multiple ng-model="vm_ac.selectedWhatsappAccountApps">\n                    <thead md-head>\n                      <tr md-row>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px">\n                          <span translate="VOICE.PRIORITY">Priority</span>\n                        </th>\n                        <th md-column>\n                          <span>Type</span>\n                        </th>\n                        <th md-column>\n                          <span>Appdata</span>\n                        </th>\n                        <th md-column>\n                          <span>Interval</span>\n                        </th>\n                        <th md-column width="10px"></th>\n                        <th md-column width="10px"></th>\n                      </tr>\n                    </thead>\n                    <tbody md-body ng-sortable="vm_ac.applications">\n                      <tr md-row md-select="app" md-select-id="id" ng-repeat="app in vm_ac.whatsappAccountApps.rows | filter: vm_ac.query.filter">\n                        <td md-cell>\n                          <md-icon md-font-icon="icon-drag-vertical" class="s16 handle"></md-icon>\n                        </td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span>{{app.priority}}</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)">{{app.app.toLowerCase() === \'agi\' ? \'Cally-Square\' : app.app | ucfirst}}<span ng-if="app.appType.toLowerCase() === \'custom\'">*</span></td>\n                        <td md-cell ng-click="vm_ac.editWhatsappAccountApp($event, $index)"><span class="text-truncate actionAppData">{{app.appdata}}</span></td>\n                        <td md-cell ng-click="vm_ac.editInterval($event, $index)">{{app.IntervalId ? \'From List\' : app.interval}}</td>\n                        <td md-cell>\n                          <md-button ng-click="vm_ac.editInterval($event, $index)" class="md-icon-button" aria-label="Interval">\n                            <md-icon md-font-icon="icon-timer"></md-icon>\n                            <md-tooltip>\n                              {{app.IntervalId ? \'From List\' : (app.interval === \'*,*,*,*\' ? \'Always\' : \'Custom\')}}\n                            </md-tooltip>\n                          </md-button>\n                        </td>\n                        <td md-cell class="actions" ng-if="!vm_ac.crudPermissions.readOnly">\n                          <md-menu>\n                            <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="VOICE.MORE" ng-click="$mdOpenMenu($event)">\n                              <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                            </md-button>\n\n                            <md-menu-content width="3">\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editWhatsappAccountApp($event, $index)" translate="VOICE.EDIT_APP">\n                                  Edit App\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canEdit">\n                                <md-button ng-click="vm_ac.editInterval($event, $index)" translate="VOICE.EDIT_INTERVAL">\n                                  Edit Interval\n                                </md-button>\n                              </md-menu-item>\n                              <md-menu-item ng-if="vm_ac.crudPermissions.canDelete">\n                                <md-button ng-click="vm_ac.deleteConfirm(app, $index, $event)" translate="VOICE.DELETE_APP">\n                                  Delete App\n                                </md-button>\n                              </md-menu-item>\n                            </md-menu-content>\n                          </md-menu>\n                        </td>\n                      </tr>\n                      <tr md-row ng-hide="vm_ac.whatsappAccountApps.rows.length">\n                        <td md-cell colspan="7">\n                          <span class="text-boxed-light" translate="VOICE.NO_APPS_AVAILABLE">No apps available</span>\n                        </td>\n                      </tr>\n                    </tbody>\n                  </table>\n                </md-table-container>\n                \x3c!-- / QUEUES TABLE --\x3e\n\n                \x3c!-- NO RESULTS --\x3e\n\n                \x3c!-- / NO RESULTS --\x3e\n              </div>\n              \x3c!-- / MAIN --\x3e\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.INTERACTIONS">INTERACTIONS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappAccount-detail-form-container interactions md-background-bg md-whiteframe-1dp">\n            <div ng-controller="WhatsappAccountInteractionsController as vm_dc" ng-init="vm_dc.init(vm.whatsappAccount, vm.crudPermissions, vm.userProfile)">\n              <md-toolbar class="md-table-toolbar md-default" ng-hide="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead" translate="WHATSAPP.INTERACTIONS">Interactions</span>\n                  <ms-search-bar on-search="vm_dc.getWhatsappAccountInteractions()" query="vm_dc.query" display-on="vm_dc.isSearchBarVisible" ng-disabled="vm_dc.query.search" debounce="300" direction="down" min-chars="5"></ms-search-bar>\n                  <div flex></div>\n                  <ms-quick-filter filters="vm_dc.quickFilters" query="vm_dc.query" search="vm_dc.getWhatsappAccountInteractions()"></ms-quick-filter>\n                  <div layout="column">\n                    <md-button class="md-icon-button advanced-search" ng-class="{ \'md-fab md-mini md-accent-bg\': vm_dc.query.search }" aria-label="Filter" translate translate-attr-aria-label="DASHBOARDS.FILTER" ng-click="vm_dc.openAdvancedSearch()">\n                      <md-icon md-font-icon="{{ vm_dc.query.search ? \'icon-filter\' : \'icon-filter-outline\' }}" ng-class="{ \'blink\': vm_dc.query.search }"></md-icon>\n                    </md-button>\n                  </div>\n                  <md-button class="md-icon-button" ng-click="vm_dc.getWhatsappAccountInteractions()" aria-label="refresh Interactions" translate translate-attr-label="WHATSAPP.REFRESH_INTERACTIONS">\n                    <md-icon md-font-icon="icon-refresh"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-toolbar class="md-table-toolbar md-accent" ng-show="vm_dc.selectedWhatsappAccountInteractions.length">\n                <div class="md-toolbar-tools">\n                  <span class="md-subhead">{{vm_dc.selectedWhatsappAccountInteractions.length}} {{vm_dc.selectedWhatsappAccountInteractions.length > 1 ? \'items\' : \'item\'}} selected</span>\n                  <div flex></div>\n                  <button class="md-icon-button" ng-csv="vm_dc.exportSelectedWhatsappAccountInteractions" csv-label="true" filename="whatsappAccounts.csv">\n                    <md-icon md-font-icon="icon-file-excel"></md-icon>\n                  </button>\n                  <md-button ng-if="vm_dc.crudPermissions.canDelete" class="md-icon-button" ng-click="vm_dc.deleteSelectedWhatsappAccountInteractions($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n                    <md-icon md-font-icon="icon-delete"></md-icon>\n                  </md-button>\n                </div>\n              </md-toolbar>\n              <md-table-container class="font-size-12">\n                <table md-table md-row-select multiple ng-model="vm_dc.selectedWhatsappAccountInteractions" md-progress="vm_dc.promise">\n                  <thead md-head md-order="vm_dc.query.sort" md-on-reorder="vm_dc.getWhatsappAccountInteractions">\n                    <tr md-row>\n                      <th md-column md-order-by="id">\n                        {{ \'WHATSAPP.ID\' | translate }}\n                      </th>\n                      <th md-column class="no-padding">\n                        <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column class="no-padding">\n                      </th>\n                      <th md-column md-order-by="contactName">\n                        {{ \'WHATSAPP.CONTACT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="createdAt">\n                        {{ \'WHATSAPP.STARTEDAT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="lastMsgAt">\n                        {{ \'WHATSAPP.LASTMESSAGE\' | translate }}\n                      </th>\n                      <th md-column md-order-by="closed">\n                        {{ \'WHATSAPP.STATUS\' | translate }}\n                      </th>\n                      <th md-column>\n                        {{ \'WHATSAPP.AGENT\' | translate }}\n                      </th>\n                      <th md-column md-order-by="tag">\n                        {{ \'WHATSAPP.TAGS\' | translate }}\n                      </th>\n                      <th md-column width="10px"></th>\n                    </tr>\n                  </thead>\n                  <tbody md-body>\n                    <tr md-row md-select="interaction" md-select-id="id" ng-repeat="interaction in vm_dc.whatsappAccountInteractions.rows" ng-class="{\'text-bold text-italic\': interaction.unreadMessages > 0}">\n                      <td md-cell>\n                        {{interaction.id}}\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="!interaction.closed && interaction.Users.length">\n                          <md-icon md-font-icon="icon-eye" class="s16"></md-icon>\n                          <md-tooltip>\n                            <span ng-repeat="user in interaction.Users">{{ user.fullname | translate }}\n                              <span ng-if="!$last">, </span>\n                            </span>\n                          </md-tooltip>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.unreadMessages > 0" layout="row" layout-align="start center">\n                          <span class="badge white-fg md-primary-bg" layout-margin>{{ interaction.unreadMessages}}</span>\n                        </div>\n                      </td>\n                      <td md-cell class="no-padding">\n                        <div ng-if="interaction.attach">\n                          <md-icon md-font-icon="icon-paperclip" class="s16"></md-icon>\n                        </div>\n                      </td>\n                      <td md-cell privacy ng-cloak>\n                        <div layout="column" layout-align="start start">\n                          <span class="font-size-12 text-truncate contact-text" ng-class="{\'margin-bottom-0\' : interaction.contactInfo}" layout-margin>{{ interaction.contactName }}</span>\n                          <span ng-if="interaction.contactInfo" class="font-size-12 text-truncate contact-text margin-top-0" layout-margin>{{ interaction.contactInfo }}</span>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        {{ interaction.createdAt | formatdate }}\n                      </td>\n                      <td md-cell>\n                        <div layout="row">\n                          <span>\n                            <md-icon md-font-icon="{{interaction.lastMsgDirection == \'in\' ? \'icon-arrow-down-bold blue-grey-800-fg\' : \'icon-arrow-up-bold blue-grey-300-fg\'}}"></md-icon>\n                          </span>\n                          <div layout="column" layout-align="center center">\n                            <span class="text-truncate">{{ interaction.lastMsgAt | formatdate }}</span>\n                          </div>\n                        </div>\n                      </td>\n                      <td md-cell>\n                        <span ng-if="interaction.closed === 0" class="green-fg">\n                          {{ \'WHATSAPP.OPENED\' | translate }}\n                          <span ng-if="interaction.substatus">\n                            - {{ interaction.substatus }}\n                          </span>\n                        </span>\n                        <span ng-if="interaction.closed === 1" class="red-fg">\n                          {{ \'WHATSAPP.CLOSED\' | translate }}\n                          <span ng-if="interaction.disposition">\n                            - {{ interaction.thirdDisposition || interaction.secondDisposition || interaction.disposition }}\n                          </span>\n                          <md-tooltip class="multiline">\n                            <div layout="column">\n                              <div layout="column">\n                                <span>{{ \'DASHBOARDS.CLOSED_AT\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.closedAt | formatdate }}</span>\n                              </div>\n                              <div ng-if="interaction.disposition" layout="column">\n                                <span>{{ \'DASHBOARDS.DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.disposition }}</span>\n                              </div>\n                              <div ng-if="interaction.secondDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.SECOND_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.secondDisposition }}</span>\n                              </div>\n                              <div ng-if="interaction.thirdDisposition" layout="column">\n                                <span>{{ \'DASHBOARDS.THIRD_LEVEL_DISPOSITION\' | translate}}:</span>\n                                <span class="text-bold">{{ interaction.thirdDisposition }}</span>\n                              </div>\n                            </div>\n                          </md-tooltip>\n                        </span>\n                      </td>\n\n                      <td md-cell>\n                        {{interaction.Owner.name}}\n                      </td>\n                      <td md-cell>\n                        <div ng-if="interaction.Tags.length">\n                          <md-tooltip md-direction="left" layout="row">\n                            <span ng-repeat="tag in interaction.Tags">{{tag.name}}<span ng-if="!$last">, </span></span>\n                          </md-tooltip>\n                          <md-icon md-font-icon="icon-tag" ng-style="{\'color\': interaction.Tags.length == 1 && interaction.Tags[0].color }">\n                          </md-icon>\n                        </div>\n                      </td>\n                      <td md-cell class="actions">\n                        <md-menu>\n                          <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                            <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                          </md-button>\n\n                          <md-menu-content width="3">\n                            <md-menu-item>\n                              <md-button ng-click="vm_dc.spywhatsappInteraction($event, interaction)" translate="WHATSAPP.SPYINTERACTION">\n                                Spy Interaction\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.currentUser.role === \'admin\' || vm_dc.userProfile.downloadOmnichannelInteractions">\n                              <md-button class="md-primary" ng-click="vm_dc.whatsappInteractionDownload(interaction, $event)" translate="WHATSAPP.DOWNLOAD_INTERACTION">\n                                Download\n                              </md-button>\n                            </md-menu-item>\n                            <md-menu-item ng-if="vm_dc.crudPermissions.canDelete">\n                              <md-button ng-click="vm_dc.deleteConfirm(interaction, $event)" translate="WHATSAPP.DELETE_INTERACTION">\n                                Delete Interaction\n                              </md-button>\n                            </md-menu-item>\n                          </md-menu-content>\n                        </md-menu>\n                      </td>\n                    </tr>\n                    <tr md-row ng-if="!vm_dc.whatsappAccountInteractions.rows.length">\n                      <td md-cell colspan="12">\n                        <div layout="row" layout-align="center center">\n                          <span class="text-boxed-light" translate="WHATSAPP.NO_INTERACTION_AVAILABLE">No interaction available</span>\n                        </div>\n                      </td>\n                    </tr>\n                  </tbody>\n                </table>\n              </md-table-container>\n              <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm_dc.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm_dc.query.page" md-total="{{vm_dc.whatsappAccountInteractions.count}}" md-on-paginate="vm_dc.getWhatsappAccountInteractions" md-page-select></md-table-pagination>\n            </div>\n\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/edit/whatsappCannedAnswers/dialog.html",'<md-dialog class="whatsappCannedAnswer-dialog" aria-label="New WhatsappCannedAnswer">\n  <form name="whatsappCannedAnswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.KEY">Key</label>\n        <input type="" name="key" ng-model="vm.whatsappCannedAnswer.key" md-maxlength="255" ng-required="true" autofocus>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'key\'].$error" ng-show="whatsappCannedAnswerForm[\'key\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.KEY_REQUIRED">Key field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.VALUE">Value</label>\n        <textarea name="value" ng-model="vm.whatsappCannedAnswer.value" required></textarea>\n\n        <div ng-messages="whatsappCannedAnswerForm[\'value\'].$error" ng-show="whatsappCannedAnswerForm[\'value\'].$touched" role="alert">\n\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.VALUE_REQUIRED">Value field is required</span>\n          </div>\n\n\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappCannedAnswer.description">\n\n        <div ng-messages="whatsappCannedAnswerForm[\'description\'].$error" ng-show="whatsappCannedAnswerForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappCannedAnswer" ng-click="vm.saveWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid || whatsappCannedAnswerForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappCannedAnswer" ng-click="vm.addNewWhatsappCannedAnswer()" class="send-button md-accent md-raised" ng-disabled="whatsappCannedAnswerForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPCANNEDANSWER" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPCANNEDANSWER">\n          ADD WHATSAPPCANNEDANSWER\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappCannedAnswer" ng-click="vm.deleteWhatsappCannedAnswer($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappAccounts/whatsappAccounts.html",'<div id="whatsappAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPACCOUNTS">WhatsappAccounts</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappAccounts.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappAccounts =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappAccounts-count">\n          <span>{{vm.selectedWhatsappAccounts.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappAccounts()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappAccounts()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappAccounts" csv-label="true" filename="whatsappAccounts.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappAccounts($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPACCOUNT TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappAccounts" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappAccounts">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="key">{{ \'WHATSAPP.KEY\' | translate }}</th>\n                <th md-column md-order-by="ListId">{{ \'WHATSAPP.LIST\' | translate }}</th>\n                <th md-column md-order-by="type">{{ \'WHATSAPP.TYPE\' | translate }}</th>\n                <th md-column md-order-by="phone">{{ \'WHATSAPP.PHONE\' | translate }}</th>\n                <th md-column md-order-by="description">{{ \'WHATSAPP.DESCRIPTION\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappAccounts.rows.length">\n                <td md-cell colspan="8">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappAccount" md-select-id="id" ng-repeat="whatsappAccount in vm.whatsappAccounts.rows">\n                <td md-cell ng-if="whatsappAccount.userpic"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="api/users/{{whatsappAccount.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappAccount.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappAccount.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="id ">{{whatsappAccount.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="name ">{{whatsappAccount.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="key ">{{whatsappAccount.key}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="ListId ">{{ (vm.lists | filter : {\'id\':whatsappAccount.ListId} : true)[0].name }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="type ">{{ vm.arraytype[whatsappAccount.type].option }}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="phone ">{{whatsappAccount.phone}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappAccount, ev) : vm.createOrEditWhatsappAccount($event, whatsappAccount)" md-cell class="description ">{{whatsappAccount.description}}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappAccount, $event    )" translate="WHATSAPP.EDIT_WHATSAPPACCOUNT">\n                          Edit WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.interactionsgoto(whatsappAccount, $event    )" translate="WHATSAPP.INTERACTIONS_WHATSAPPACCOUNT">\n                          Interactions WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappAccount, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPACCOUNT">\n                          AgentAdd WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappAccount, $event    )" translate="WHATSAPP.DELETE_WHATSAPPACCOUNT">\n                          Delete WhatsappAccount\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappAccounts.count}}" md-on-paginate="vm.getWhatsappAccounts" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPACCOUNT TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPACCOUNT BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappAccount-button" ng-click="vm.createOrEditWhatsappAccount($event)" aria-label="add whatsappAccount" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPACCOUNT">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPACCOUNT BUTTON --\x3e\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/create/dialog.html",'<md-dialog class="whatsappQueue-dialog" aria-label="New WhatsappQueue">\n  <form name="whatsappQueueForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus ng-disabled="!vm.newWhatsappQueue">\n\n        <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n        <div ng-messages="whatsappQueueForm[\'name\'].$error" ng-show="whatsappQueueForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.STRATEGY">Strategy</label>\n        <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required>\n          <md-option ng-value="\'beepall\'">Beepall</md-option>\n          <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n        </md-select>\n        <div ng-messages="whatsappQueueForm[\'strategy\'].$error" ng-show="whatsappQueueForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n        <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true">\n\n        <div ng-messages="whatsappQueueForm[\'timeout\'].$error" ng-show="whatsappQueueForm[\'timeout\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n          </div>\n          <div ng-message="min">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n          </div>\n          <div ng-message="max">\n            <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="WHATSAPP.DESCRIPTION">Description</label>\n        <input type="text" name="description" ng-model="vm.whatsappQueue.description">\n\n        <div ng-messages="whatsappQueueForm[\'description\'].$error" ng-show="whatsappQueueForm[\'description\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center" ng-if="!vm.crudPermissions.readOnly">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && !vm.newWhatsappQueue" ng-click="vm.saveWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid || whatsappQueueForm.$pristine" aria-label="SAVE" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n          SAVE\n        </md-button>\n\n        <md-button type="submit" ng-if="vm.crudPermissions.canEdit && vm.newWhatsappQueue" ng-click="vm.addNewWhatsappQueue()" class="send-button md-accent md-raised" ng-disabled="whatsappQueueForm.$invalid" aria-label="ADD" translate="WHATSAPP.ADD_WHATSAPPQUEUE" translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n          ADD WHATSAPPQUEUE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newWhatsappQueue" ng-click="vm.deleteWhatsappQueue($event)" aria-label="DELETE" translate translate-attr-aria-label="WHATSAPP.DELETE">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n          <md-tooltip><span translate="WHATSAPP.DELETE">DELETE</span></md-tooltip>\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/agentadd/agentadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">Add Agent to whatsappQueue</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveAgents()" class="send-button md-accent md-raised" ng-disabled="!vm.pendingChanges" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/teamadd/teamadd.html",'<md-dialog class="whatsappQueue-dialog" aria-label="whatsappQueue" ng-init="vm.onInit()">\n  <form name="whatsappQueueForm" ng-cloak>\n    <md-toolbar>\n      <div class="md-toolbar-tools">\n        <h2 translate="WHATSAPP.TEAMS_ASSOCIATION">Teams Association</h2>\n        <span flex></span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <ms-dual-multiselect options="vm.dualMultiselectOptions" read-only="!vm.crudPermissions.canEdit"></ms-dual-multiselect>\n    </md-dialog-content>\n    <md-dialog-actions layout="row" layout-align="end center" ng-if="vm.crudPermissions.canEdit">\n      <span></span>\n      <md-button layout-align="end center" type="submit" ng-click="vm.saveTeams()" ng-disabled="!vm.pendingChanges" class="send-button md-accent md-raised" aria-label="SAVE" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/edit/view.html",'<div id="whatsapp-whatsappQueue" class="page-layout simple tabbed" layout="column">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="start center">\n    <div class="white-fg" layout="row" layout-align="start center" flex>\n      <md-button class="goto-whatsappQueues-button md-icon-button" aria-label="Go to whatsappQueues" ng-click="vm.gotoWhatsappQueues()" translate translate-attr-aria-label="WHATSAPP.GO_TO_WHATSAPPQUEUES">\n        <md-icon md-font-icon="icon-arrow-left"></md-icon>\n      </md-button>\n\n      <div layout="row" layout-align="start center">\n\n        <div class="whatsappQueue-image" hide-xs>\n          <img ng-src="assets/images/business/whatsappQueues.jpg">\n        </div>\n\n        <div layout="column" layout-align="start start">\n          <div class="h2">\n            #{{vm.whatsappQueue.id}}\n            <span ng-if="vm.whatsappQueue.name">{{vm.whatsappQueue.name}}</span>\n          </div>\n          <div class="subtitle secondary-text">\n            <span translate="WHATSAPP.CREATED_AT"></span> <span>{{vm.whatsappQueue.createdAt | date:\'medium\'}}</span>\n          </div>\n        </div>\n      </div>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.teamadddialog(vm.whatsappQueue, $event)" class="md-fab md-orange-500-bg md-icon-button" aria-label="teamadd">\n        <md-tooltip><span translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-multiple-plus"></md-icon>\n      </md-button>\n    </div>\n\n    <div ng-cloak>\n      <md-button ng-click="vm.agentadddialog(vm.whatsappQueue, $event)" class="md-fab md-purple-500-bg md-icon-button" aria-label="agentadd">\n        <md-tooltip><span translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE"></span></md-tooltip>\n        <md-icon md-font-icon="icon-account-plus"></md-icon>\n      </md-button>\n    </div>\n    <div>\n      <md-button type="submit" ng-click="vm.saveWhatsappQueue()" ng-if="vm.crudPermissions.canEdit" class="send-button md-accent md-raised" ng-disabled="(generalForm.$invalid)" translate="WHATSAPP.SAVE" translate-attr-aria-label="WHATSAPP.SAVE">\n        SAVE\n      </md-button>\n    </div>\n\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content">\n\n    <md-tabs md-selected="vm.selectedTab" md-stretch-tabs="always" flex layout-fill md-dynamic-height>\n      <md-tab>\n        <md-tab-label>\n          <span translate="WHATSAPP.SETTINGS">SETTINGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="whatsappQueue-detail-form-container general md-background-bg md-whiteframe-1dp">\n            <div class="pb-16" layout="row" layout-align="start center">\n              <div class="h2 secondary-text" translate="WHATSAPP.GENERAL">GENERAL</div>\n            </div>\n            <form name="generalForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.NAME">Name</label>\n                <input type="text" name="name" ng-model="vm.whatsappQueue.name" ng-pattern="/^[A-Za-z0-9\\.\\_]+$/i" ng-required="true" autofocus disabled>\n\n                <div class="hint"><span translate="WHATSAPP.HELP.NAME"></span></div>\n                <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.NAME_REQUIRED">Name field is required</span>\n                  </div>\n                  <div ng-message="pattern">\n                    <span translate="WHATSAPP.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.STRATEGY">Strategy</label>\n                <md-select name="strategy" ng-model="vm.whatsappQueue.strategy" required ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-value="\'beepall\'">Beepall</md-option>\n                  <md-option ng-value="\'rrmemory\'">RR Memory</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'strategy\'].$error" ng-show="generalForm[\'strategy\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.STRATEGY_REQUIRED">Strategy field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.AGENT_TIMEOUT">Agent_Timeout</label>\n                <input type="number" name="timeout" ng-model="vm.whatsappQueue.timeout" min="1" max="2147483" value="10" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'timeout\'].$error" ng-show="generalForm[\'timeout\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_REQUIRED">Agent_Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="WHATSAPP.ERRORS.AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO">Agent_Timeout must be a valid greater or equal than</span> <span>2147483</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="WHATSAPP.DESCRIPTION">Description</label>\n                <input type="text" name="description" ng-model="vm.whatsappQueue.description" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="generalForm[\'description\'].$error" ng-show="generalForm[\'description\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="WHATSAPP.ERRORS.DESCRIPTION_REQUIRED">Description field is required</span>\n                  </div>\n                </div>\n              </md-input-container>\n\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n    </md-tabs>\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n</div>'),e.put("app/main/apps/whatsapp/views/whatsappQueues/whatsappQueues.html",'<div id="whatsappQueues" class="page-layout simple left-sidenav inner-sidenav">\n\n  \x3c!-- HEADER --\x3e\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\n    \x3c!-- APP TITLE --\x3e\n    <div layout="row" layout-align="start center">\n      <div class="logo" layout="row" layout-align="start center">\n        <span class="logo-icon">\n          <md-icon md-font-icon="icon-whatsapp" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="WHATSAPP.WHATSAPPQUEUES">WhatsappQueues</span>\n      </div>\n    </div>\n    \x3c!-- / APP TITLE --\x3e\n\n    <div layout="row">\n      \x3c!-- SEARCH --\x3e\n      <div class="search-input-wrapper" layout="row" layout-align="start center">\n        <label for="search">\n          <md-icon md-font-icon="icon-magnify"></md-icon>\n        </label>\n        <md-input-container md-no-float class="m-0">\n          <input id="search" placeholder="Search for anyone" type="text" ng-model="vm.query.filter" ng-model-options="{ debounce: 1000 }" translate translate-attr-placeholder="WHATSAPP.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n      \x3c!-- / SEARCH --\x3e\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\n  \x3c!-- SELECTED BAR --\x3e\n  <div ng-show="vm.selectedWhatsappQueues.length > 0" class="selected-bar header md-accent-bg" layout="row" layout-align="start center">\n\n    <div class="close-button-wrapper" ng-click="vm.selectedWhatsappQueues =[]">\n      <md-button layout="row" layout-align="start center">\n        <md-icon md-font-icon="icon-arrow-left" class="mr-8"></md-icon>\n        <span translate="WHATSAPP.BACK">Back</span>\n      </md-button>\n    </div>\n\n    <div flex layout="row" layout-align="space-between center">\n\n      <div>\n        <span class="selected-whatsappQueues-count">\n          <span>{{vm.selectedWhatsappQueues.length}}</span>\n          <span translate="WHATSAPP.SELECTED">selected</span>\n        </span>\n\n        <md-menu class="select-menu" ng-if="!vm.currentThread">\n          <md-button class="md-icon-button" ng-click="$mdOpenMenu($event)" aria-label="multi select toggle" translate translate-attr-aria-label="WHATSAPP.MULTI_SELECT_TOGGLE">\n            <md-icon md-font-icon="icon-menu-down"></md-icon>\n          </md-button>\n          <md-menu-content width="3">\n            <md-menu-item>\n              <md-button ng-click="vm.selectAllWhatsappQueues()" translate="WHATSAPP.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectWhatsappQueues()" translate="WHATSAPP.SELECT_NONE">\n                Select none\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n\n      <div class="multi-select-actions">\n        <button class="md-icon-button" ng-csv="vm.exportSelectedWhatsappQueues" csv-label="true" filename="whatsappQueues.csv">\n          <md-icon md-font-icon="icon-file-excel"></md-icon>\n        </button>\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete" ng-click="vm.deleteSelectedWhatsappQueues($event)" aria-label="delete selected" translate translate-attr-label="WHATSAPP.DELETE_SELECTED">\n          <md-icon md-font-icon="icon-delete"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </div>\n  \x3c!-- / SELECTED BAR --\x3e\n\n  \x3c!-- CONTENT --\x3e\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\n\n\n      \x3c!-- WHATSAPPQUEUE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedWhatsappQueues" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getWhatsappQueues">\n              <tr md-row>\n                <th md-column ng-if="vm.table == \'users\' || vm.table == \'agents\'" width="20px"></th>\n                <th md-column md-order-by="id">{{ \'WHATSAPP.ID\' | translate }}</th>\n                <th md-column md-order-by="name">{{ \'WHATSAPP.NAME\' | translate }}</th>\n                <th md-column md-order-by="strategy">{{ \'WHATSAPP.STRATEGY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.whatsappQueues.rows.length">\n                <td md-cell colspan="4">\n                  <div layout="row" layout-align="center center">\n                    <span translate="WHATSAPP.NO_AVAILABLE_INFO">No Available Info</span>\n                  </div>\n                </td>\n              </tr>\n              <tr md-row md-select="whatsappQueue" md-select-id="id" ng-repeat="whatsappQueue in vm.whatsappQueues.rows">\n                <td md-cell ng-if="whatsappQueue.userpic"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="api/users/{{whatsappQueue.id}}/avatar" /></td>\n                <td md-cell ng-if="!whatsappQueue.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{whatsappQueue.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="id ">{{whatsappQueue.id}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="name ">{{whatsappQueue.name}}</td>\n                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(whatsappQueue, ev) : vm.createOrEditWhatsappQueue($event, whatsappQueue)" md-cell class="strategy ">{{ vm.arraystrategy[whatsappQueue.strategy].option }}</td>\n\n\n                <td md-cell class="actions">\n\n                  <md-menu>\n\n                    <md-button class="md-icon-button" aria-label="More" translate translate-attr-aria-label="WHATSAPP.MORE" ng-click="$mdOpenMenu($event)">\n                      <md-icon md-font-icon="icon-dots-vertical"></md-icon>\n                    </md-button>\n\n                    <md-menu-content width="3">\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n\n                        <md-button ng-click="vm.editstate(whatsappQueue, $event    )" translate="WHATSAPP.EDIT_WHATSAPPQUEUE">\n                          Edit WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.teamadddialog(whatsappQueue, $event    )" translate="WHATSAPP.TEAMADD_WHATSAPPQUEUE">\n                          teamadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.agentadddialog(whatsappQueue, $event    )" translate="WHATSAPP.AGENTADD_WHATSAPPQUEUE">\n                          agentadd WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n\n                        <md-button ng-click="vm.deleteconfirm(whatsappQueue, $event    )" translate="WHATSAPP.DELETE_WHATSAPPQUEUE">\n                          Delete WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                      \x3c!-- SUBACTIONS --\x3e\n\n\n                      \x3c!-- ACTIONS --\x3e\n\n                      <md-menu-item>\n\n                        <md-button ng-click="vm.gotorealtimegoto(whatsappQueue, $event    )" translate="WHATSAPP.GOTOREALTIME_WHATSAPPQUEUE">\n                          goToRealtime WhatsappQueue\n                        </md-button>\n\n                      </md-menu-item>\n\n\n\n                    </md-menu-content>\n\n                  </md-menu>\n                </td>\n\n\n              </tr>\n            </tbody>\n          </table>\n        </md-table-container>\n\n        <md-table-pagination md-label="{page: \'{{\'WHATSAPP.PAGE\' | translate}}:\', rowsPerPage: \'{{\'WHATSAPP.ROWSPERPAGE\' | translate}}:\', of: \'{{\'WHATSAPP.OF\' | translate}}\'}" md-limit="vm.query.limit" md-limit-options="[10, 15, 20, 50, 100, 250]" md-page="vm.query.page" md-total="{{vm.whatsappQueues.count}}" md-on-paginate="vm.getWhatsappQueues" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / WHATSAPPQUEUE TABLE --\x3e\n      \x3c!-- NO RESULTS --\x3e\n\n      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\n\n  </div>\n  \x3c!-- / CONTENT --\x3e\n\n  \x3c!-- ADD WHATSAPPQUEUE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-whatsappQueue-button" ng-click="vm.createOrEditWhatsappQueue($event)" aria-label="add whatsappQueue" translate translate-attr-aria-label="WHATSAPP.ADD_WHATSAPPQUEUE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD WHATSAPPQUEUE BUTTON --\x3e\n</div>'),e.put("app/navigation/layouts/horizontal-navigation/navigation.html",'<div layout="row" layout-align="start center">\n  <ms-navigation-horizontal></ms-navigation-horizontal>\n</div>'),e.put("app/navigation/layouts/vertical-navigation-fullwidth-toolbar-2/navigation.html",'<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/navigation/layouts/vertical-navigation/navigation.html",'<md-toolbar class="navigation-header md-whiteframe-1dp" layout="row" layout-align="space-between center">\n  <div class="logo" layout="row" layout-align="start center">\n    <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n    \x3c!-- <span class="logo-image"><img src="assets/images/logos/whisker_32x32.png" alt="motion_whisker_32x32" /></span> --\x3e\n    <span class="logo-text text-truncate">{{vm.getLogo() | uppercase}}</span>\n  </div>\n  <md-icon class="fold-toggle s18" md-font-icon="icon-backburger" hide show-gt-sm ng-click="vm.toggleMsNavigationFolded()"></md-icon>\n</md-toolbar>\n\n<ms-navigation class="scrollable" folded="vm.folded"></ms-navigation>'),e.put("app/quick-panel/quick-panel.html",'<md-content>\n  <md-tabs md-no-pagination md-swipe-content md-stretch-tabs="always">\n    <md-tab>\n      <md-tab-label>\n        <span translate="QUICKPANEL.TODAY">TODAY</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="today-tab scrollable" ng-include="\'app/quick-panel/tabs/today/today-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'" ng-controller="ChatInternalController as vm_ct" ng-init="vm_ct.init(vm.license)" md-on-deselect="vm_ct.user = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalMessages}}</div>\n        <span>MESSENGER</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="chat-tab scrollable" ng-include="\'app/quick-panel/tabs/chat/chat-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n    <md-tab ng-if="vm.currentUser.allowmessenger || vm.currentUser.role !== \'agent\'" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'" ng-controller="ChatGroupController as vm_cg" ng-init="vm_cg.init(vm.license)" md-on-deselect="vm_cg.group = undefined">\n      <md-tab-label>\n        <div ng-if="vm.unreadTotalGroupMessages" class="md-accent-bg unread-message-count-chat">{{vm.unreadTotalGroupMessages}}</div>\n        <span translate="QUICKPANEL.GROUPS">GROUPS</span>\n      </md-tab-label>\n      <md-tab-body>\n        <md-content class="group-tab scrollable" ng-include="\'app/quick-panel/tabs/groups/group-tab.html\'"></md-content>\n      </md-tab-body>\n    </md-tab>\n  </md-tabs>\n</md-content>'),e.put("app/quick-panel/tabs/activity/activity-tab.html",'<md-list class="friends">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.FRIENDS">Friends</span>\n  </md-subheader>\n\n  <md-list-item class="friend md-3-line" ng-repeat="friend in vm.activities.friends">\n    <img ng-src="{{friend.avatar}}" class="md-avatar" alt="{{friend.name}}" />\n\n    <div class="status {{friend.status}}"></div>\n\n    <div ng-if="contact.unread" class="md-accent-bg unread-message-count">{{contact.unread}}</div>\n\n    <div class="md-list-item-text">\n      <h3 class="message">{{friend.message}}</h3>\n      <p class="time">{{friend.time}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="servers">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.APP_SERVERS">Application Servers</span>\n  </md-subheader>\n\n  <md-list-item class="server md-3-line" ng-repeat="server in vm.activities.servers">\n    <md-icon md-font-icon="icon-checkbox-blank-circle" class="s16 status" ng-class="server.status"></md-icon>\n\n    <div class="md-list-item-text">\n      <h3>{{server.location}}</h3>\n      <p>{{server.detail}}</p>\n    </div>\n  </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list class="stats">\n  <md-subheader class="md-no-sticky">\n    <span translate="QUICKPANEL.USER_STATS">User Stats</span>\n  </md-subheader>\n\n  <md-list-item class="stat md-2-line" ng-repeat="stat in vm.activities.stats">\n    <div class="md-list-item-text">\n      <span>{{stat.title}} ({{stat.current}} / {{stat.total}})</span>\n      <md-progress-linear ng-class="stat.status" md-mode="determinate" value="{{stat.percent}}"></md-progress-linear>\n    </div>\n  </md-list-item>\n</md-list>'),e.put("app/quick-panel/tabs/chat/chat-tab.html",'<div class="main" ng-hide="vm_ct.user && vm_ct.isMessengerAllowed">\n  <md-subheader class="md-no-sticky">\n    <div class="search" layout="row" layout-align="space-between center">\n      <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n      <input class="search-input" ng-model="vm_ct.search.$" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      <md-select ng-model="vm_ct.search.online" class="height-50 no-padding no-margin" aria-label="Chat Tab Search">\n        <md-option ng-value="undefined" translate="DASHBOARDS.ALL">All</md-option>\n        <md-option ng-value="true">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 green-fg" translate="CHAT.ONLINE"></md-icon>Online\n        </md-option>\n        <md-option ng-value="false">\n          <md-icon md-font-icon="icon-checkbox-blank-circle" class="s12 red-fg" translate="CHAT.OFFLINE"></md-icon>Offline\n        </md-option>\n      </md-select>\n    </div>\n  </md-subheader>\n  <md-divider></md-divider>\n  <md-list class="recent">\n    <md-list-item class="contact md-3-line" ng-if="user.id !== vm_ct.currentUser.id" ng-repeat="user in vm_ct.users.rows | orderBy: \'-lastMessageAt\' | filter: vm_ct.search" ng-click="vm_ct.openChat(user)">\n      <md-divider></md-divider>\n      <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : vm_ct.defaultAvatar}}" class="md-avatar" alt="{{user.fullname}}" />\n      <div class="status" ng-class="{true: \'online\', false: \'offline\'}[user.online]"></div>\n      <div ng-if="vm_ct.unreadMessages[user.id]" class="md-accent-bg unread-message-count">\n        {{vm_ct.unreadMessages[user.id]}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{user.fullname}}</h3>\n          <md-icon ng-if="!user.allowmessenger && user.role === \'agent\'" class="s16 margin-left-5" ng-style="{\'color\': \'red\' }" md-font-icon="icon-block-helper">\n          </md-icon>\n        </div>\n        <p>{{user.name}} &#60;{{user.internal}}&#62;</p>\n        <div layout="row" layout-align="start center">\n          <md-icon ng-if="user.lastMessage.FromId === vm_ct.currentUser.id" class="s16 no-margin" ng-class="{\'md-accent\': user.lastMessage.read}" md-font-icon="{{ user.lastMessage.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          <p>{{user.lastMessage.body | limitTo:20 }}{{user.lastMessage.body.length > 20 ? \'...\' : \'\' }}</p>\n          <span flex></span>\n          <p class="last-message" ng-if="user.lastMessageAt != vm_ct.standardDate">\n            {{user.lastMessageAt | formatdate}}</p>\n        </div>\n    </md-list-item>\n</div>\n</md-list>\n</div>\n\n<div class="chat" ng-show="vm_ct.user && vm_ct.isMessengerAllowed" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n\n      <div layout="row" layout-align="start center">\n        <md-button class="md-icon-button" ng-click="vm_ct.closeChat()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK">\n          <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n        </md-button>\n        <h4>\n          <span>{{vm_ct.user.fullname}}</span>\n        </h4>\n      </div>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_ct.license.webrtc && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 2 && vm_ct.user.role === \'agent\'" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_ct.webcall(vm_ct.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n        <md-menu ng-if="vm_ct.currentUser.phoneBarRemoteControl && vm_ct.currentUser.role === \'agent\' && vm_ct.currentUser.showWebBar === 0 && vm_ct.user.role === \'agent\'">\n          <md-button class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="$mdOpenMenu($event)">\n            <md-icon md-font-icon="icon-phone"></md-icon>\n          </md-button>\n\n          <md-menu-content width="3">\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.call(vm_ct.user.name)">\n                {{\'DASHBOARDS.CALL_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-disabled="!vm_ct.currentUser.phoneBarRemoteControl">\n              <md-button ng-click="vm_ct.transfer(vm_ct.user.name)">\n                {{\'DASHBOARDS.TRANSFER_NUMBER\' | translate}} ({{vm_ct.user.name}})\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings ms-scroll id="chat-dialog">\n    <div ng-if="vm_ct.isLoading" layout="row" layout-align="center center">\n      <md-progress-circular class="md-accent" md-diameter="48" md-mode="indeterminate"></md-progress-circular>\n    </div>\n    <div ms-timeline="vm_ct.timelineOptions" ms-timeline-load-more="vm_ct.loadMoreMessages()">\n      <div layout="row" ng-repeat="message in vm_ct.user.messages" class="ms-timeline-item md-padding message-row" ng-class="message.FromId === vm_ct.currentUser.id ? \'user\' : \'contact\'">\n        <img ng-if="message.FromId === vm_ct.user.id" ng-src="{{ vm_ct.user.userpic ? \'api/users/\' + vm_ct.user.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar" alt="{{vm_ct.user.fullname}}" />\n        <img ng-if="message.FromId === vm_ct.currentUser.id" ng-src="{{ vm_ct.currentUser.userpic ? \'api/users/\' + vm_ct.currentUser.id + \'/avatar\' : vm_ct.defaultAvatar }}" class="avatar">\n        <div class="bubble timeline-card" flex>\n          <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n          <div layout="row" layout-align="end center">\n            <span class="time secondary-text">{{ message.createdAt | formatdate }}</span>\n            <md-icon ng-if="message.FromId === vm_ct.currentUser.id" class="s16 margin-5" ng-class="{\'md-accent\': message.read}" md-font-icon="{{ message.read ? \'icon-check-all\' : \'icon-check\' }}"></md-icon>\n          </div>\n        </div>\n      </div>\n\n      <div ng-if="vm_ct.hasMoreMessages" layout="row" layout-align="center center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-raised md-accent md-button ng-scope md-default-theme md-ink-ripple" type="button" ng-click="vm_ct.loadMoreMessages()" translate="DASHBOARDS.MORE">\n        </md-button>\n      </div>\n      <div ng-if="!vm_ct.hasMoreMessages && vm_ct.user.messages.length > 20" layout="row" layout-align="end center" class="ng-scope layout-align-center-center layout-row">\n        <md-button class="md-fab md-mini" type="button" ng-click="vm_ct.scrollToTopOfChat(0)">\n          <md-icon md-font-icon="icon-arrow-up-bold"></md-icon>\n        </md-button>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-submit="vm_ct.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 && !vm_ct.disabled? vm_ct.reply() : null" flex ng-model="vm_ct.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n    <md-button ng-disable="vm_ct.disabled" class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/create/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      \x3c!--START Error--\x3e\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      \x3c!--END Error--\x3e\n\n      \x3c!--START NAME--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.NAME">Name</label>\n        <input type="text" name="name" ng-model="vm.group.name" required autofocus>\n        <div ng-messages="groupForm[\'name\'].$error" ng-show="groupForm[\'name\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.NAME_REQUIRED">Name field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="QUICKPANEL.ERRORS.NAME_MUST_VALID_PATTERN" translate-values="{ regex: \'/^[A-Za-z0-9\\.\\_]+$/i\' }">Name must be valid pattern </span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END NAME--\x3e\n\n      \x3c!--START Members--\x3e\n      <md-input-container class="md-block">\n        <label translate="QUICKPANEL.MEMBERS">Members</label>\n        <md-contact-chips ng-model="vm.group.members" md-contacts="vm.querySearch($query)" md-contact-name="name" md-contact-image="image" md-require-match="true" md-highlight-flags="i" placeholder="{{\'QUICKPANEL.MEMBERS\' | translate}}">\n        </md-contact-chips>\n        <div ng-messages="groupForm[\'strategy\'].$error" ng-show="groupForm[\'strategy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="QUICKPANEL.ERRORS.MEMBERS_REQUIRED">Members field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      \x3c!--END Members--\x3e\n\n      \x3c!--START Writing--\x3e\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.group.write" aria-label="Write">\n          {{\'QUICKPANEL.ENABLE_WRITING\' | translate}}\n        </md-switch>\n      </md-input-container>\n      \x3c!--END Writing--\x3e\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-if="vm.newChatGroup" ng-click="vm.saveChatGroup()" class="send-button md-accent md-raised" ng-disabled="groupForm.$invalid || groupForm.$pristine || (vm.group.members.length < 1)" aria-label="SAVE" translate="QUICKPANEL.SAVE" translate-attr-aria-label="QUICKPANEL.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/groups/group-tab.html",'<div class="main" ng-if="!vm_cg.group">\n  <md-subheader>\n    <div layout="row">\n      \x3c!-- START Search --\x3e\n      <div class="search" layout="row" layout-align="start center" flex>\n        <md-icon md-font-icon="icon-magnify" class="icon search-icon"></md-icon>\n        <input ng-model="vm_cg.search" type="text" translate translate-attr-placeholder="QUICKPANEL.SEARCH" flex>\n      </div>\n      \x3c!-- END Search --\x3e\n\n      \x3c!-- START New Group --\x3e\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-icon-button" aria-label="New" ng-click="vm_cg.addGroup(null, $event)">\n        <md-icon md-font-icon="icon-account-multiple-plus" class="icon"></md-icon>\n      </md-button>\n      \x3c!-- END New Group --\x3e\n    </div>\n  </md-subheader>\n\n  <md-divider></md-divider>\n\n  \x3c!-- START Groups --\x3e\n  <md-list class="recent no-padding">\n    \x3c!-- START Group --\x3e\n    <md-list-item class="contact" ng-repeat="group in vm_cg.groupsToArray() | filter:vm_cg.search" ng-click="vm_cg.toggleChat(group)">\n      <img src="assets/images/avatars/group.png" class="md-avatar" alt="{{group.name}}" />\n      <div ng-if="group.unreadGroupMessages" class="md-accent-bg unread-message-count">{{group.unreadGroupMessages}}</div>\n      <div class="md-list-item-text">\n        <div layout="row">\n          <h3>{{group.name}}</h3>\n        </div>\n      </div>\n\n      <md-button ng-if="vm_cg.currentUser.role !== \'agent\'" class="md-secondary md-icon-button" aria-label="Remove" ng-click="vm_cg.deleteGroup(group, $event)">\n        <md-icon md-font-icon="icon-delete" class="icon s18"></md-icon>\n      </md-button>\n\n      <md-divider ng-if="!$last"></md-divider>\n    </md-list-item>\n    <md-list-item>\n      <div ng-if="!vm_cg.groupsToArray().length" layout="row" layout-align="center center" flex>\n        <span>{{\'QUICKPANEL.NO_AVAILABLE_GROUPS\' | translate}}</span>\n      </div>\n    </md-list-item>\n    \x3c!-- END Group --\x3e\n  </md-list>\n  \x3c!-- END Groups --\x3e\n</div>\n\n<div class="chat" ng-if="vm_cg.group" layout="column">\n  <md-toolbar class="md-accent">\n    <div class="md-toolbar-tools " layout="row" layout-align="space-between center">\n      <md-button class="md-icon-button" ng-click="vm_cg.back()" aria-label="Back" translate translate-attr-aria-label="QUICKPANEL.BACK" flex="15">\n        <md-icon md-font-icon="icon-keyboard-backspace"></md-icon>\n      </md-button>\n      <h4 flex layout-align="start center" style="max-height: 100%; overflow-y:auto;">\n        <span translate="QUICKPANEL.YOU" translate-values=\'{participants: vm_cg.participants}\'></span>\n      </h4>\n\n      <div layout="row" layout-align="end center">\n        <md-button ng-if="vm_cg.license.webrtc && vm_cg.currentUser.role === \'agent\' && vm_cg.currentUser.showWebBar === 2 && vm_cg.user.role === \'agent\' && vm_cg.user.showWebBar === 2" class="md-icon-button" aria-label="Call" translate translate-attr-aria-label="QUICKPANEL.CALL" ng-click="vm_cg.webcall(vm_cg.user.name)">\n          <md-icon md-font-icon="icon-phone"></md-icon>\n        </md-button>\n      </div>\n    </div>\n\n  </md-toolbar>\n  <md-content flex layout-paddings id="chat-group-dialog">\n    <div layout="row" ng-repeat="message in vm_cg.group.messages" class="message-row" ng-class="message.FromId === vm_cg.currentUser.id ? \'user\' : \'contact\'">\n      <img ng-if="message.FromId !== vm_cg.currentUser.id" ng-src="{{\'api/users/\' + message.FromId + \'/avatar\'}}" class="avatar" alt="{{vm_cg.user.fullname}}" />\n      <img ng-if="message.FromId === vm_cg.currentUser.id" class="avatar" ng-src="{{vm_cg.currentUser.userpic ? \'api/users/\' + vm_cg.currentUser.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}">\n      <div class="bubble" flex>\n        <div ng-if="message.FromId !== vm_cg.currentUser.id">\n          <span style="font-size: 12px;">{{vm_cg.group.membersByKeys[message.FromId].fullname}}</span>\n        </div>\n        <span class="message" ng-bind-html="message.body | embed:{linkTarget:\'_blank\',emoji:false,fontSmiley:false}"></span>\n        <div layout="row" layout-align="end center">\n          <span class="time secondary-text" style="margin-top: 0px;">{{message.createdAt | formatdate }}</span>\n          <md-icon ng-if="message.FromId === vm_cg.currentUser.id" class="s16 margin-5" style="cursor: pointer;" md-font-icon="icon-information-outline" ng-click="vm_cg.showMessageInfo($event, message)"></md-icon>\n        </div>\n      </div>\n    </div>\n  </md-content>\n\n  <form ng-if="(vm_cg.currentUser.role !== \'agent\') || vm_cg.group.write" ng-submit="vm_cg.reply()" layout="row" class="reply" layout-align="start center">\n    <textarea ng-keyup="$event.keyCode == 13 ? vm_cg.reply() : null" flex ng-model="vm_cg.replyMessage" placeholder="Type and hit enter to send message" translate translate-attr-placeholder="QUICKPANEL.REPLY_PLACEHOLDER" autofocus></textarea>\n\n    <md-button class="md-fab md-mini" type="submit" aria-label="Send message" translate translate-attr-aria-label="QUICKPANEL.SEND_MESSAGE">\n      <md-icon md-font-icon="icon-send"></md-icon>\n    </md-button>\n  </form>\n</div>'),e.put("app/quick-panel/tabs/groups/info/dialog.html",'<md-dialog class="group-dialog" aria-label="New ChatGroup">\n  <form name="groupForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog(null)">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.data.messages[$index].FromId !== vm.data.messages[$index].ToId" ng-repeat="user in vm.data.users" layout-margin>\n        <div layout="row">\n          <div layout="row" layout-align="start center">\n            <img ng-src="{{user.userpic ? \'api/users/\' + user.id + \'/avatar\' : \'assets/images/avatars/profile.png\'}}" class="avatar" alt="{{user.fullname}}" />\n            <span>{{user.fullname}}</span>\n          </div>\n          <div layout="row" layout-align="end center" flex>\n            <md-icon class="s16 margin-5" md-font-icon="{{vm.data.messages[$index].read ? \'icon-check-all md-accent\' : \'icon-check\'}}"></md-icon>\n            <span class="time secondary-text">{{vm.data.messages[$index].updatedAt | formatdate }}</span>\n          </div>\n        </div>\n        <div>\n          <md-divider ng-if="!$last"></md-divider>\n        </div>\n      </div>\n    </md-dialog-content>\n  </form>\n</md-dialog>'),e.put("app/quick-panel/tabs/today/today-tab.html",'<md-list class="date">\n  <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.TODAY">Today</span></md-subheader>\n  <md-list-item class="md-display-1 md-2-line">\n    <div class="secondary-text">\n      <div translate="QUICKPANEL.{{ (vm.date | date:\'EEEE\').toUpperCase() }}"></div>\n      <div layout="row" layout-align="start start">\n        <span> {{vm.date | date:\'d\'}}</span>\n        <span class="md-subhead">th</span>\n        <span translate="QUICKPANEL.{{ (vm.date | date:\'MMMM\').toUpperCase() }}"></span>\n      </div>\n    </div>\n  </md-list-item>\n</md-list>\n\n\x3c!-- <md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.EVENTS">Events</span></md-subheader>\n\n    <md-list-item class="md-2-line" ng-repeat="event in vm.events" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{event.title}}</h3>\n\n            <p>{{event.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.NOTES">Notes</span></md-subheader>\n    <md-list-item class="md-2-line" ng-repeat="note in vm.notes" ng-click="dummyFunction()">\n        <div class="md-list-item-text">\n            <h3>{{note.title}}</h3>\n\n            <p>{{note.detail}}</p>\n        </div>\n    </md-list-item>\n</md-list>\n\n<md-divider></md-divider>\n\n<md-list>\n    <md-subheader class="md-no-sticky"><span translate="QUICKPANEL.QUICK_SETTINGS">Quick Settings</span></md-subheader>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.NOTIFICATIONS">Notifications</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.notify" aria-label="Notifications" translate\n                   translate-attr-aria-label="QUICKPANEL.NOTIFICATIONS"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.CLOUD_SYNC">Cloud Sync</h3>\n        <md-switch class="md-secondary" ng-model="vm.settings.cloud" aria-label="Cloud Sync" translate\n                   translate-attr-aria-label="QUICKPANEL.CLOUD_SYNC"></md-switch>\n    </md-list-item>\n\n    <md-list-item>\n        <h3 translate="QUICKPANEL.RETRO_THRUSTERS">Retro Thrusters</h3>\n        <md-switch class="md-secondary md-warn" ng-model="vm.settings.retro" aria-label="Retro Thrusters" translate\n                   translate-attr-aria-label="QUICKPANEL.RETRO_THRUSTERS"></md-switch>\n    </md-list-item>\n</md-list> --\x3e'),e.put("app/reset/reset.html",'<div id="reset-password" class="flex-scrollable" layout="column" ng-init="vm.onInit()">\n  <div id="reset-password-form-wrapper" layout="column" layout-align="center center">\n    <div id="reset-password-form" class="md-whiteframe-8dp">\n\n      <img src="/api/settings/1/logo_login" alt="logo_login" class="logo_login" />\n\n      <div class="title" translate="RESETPASSWORD.TITLE">Reset your password</div>\n\n      <form name="resetPasswordForm" novalidate>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="password" ng-model="vm.form.password" ng-pattern="vm.passwordPattern" placeholder="Password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD" required>\n          <div ng-messages="resetPasswordForm.password.$error" role="alert">\n            <div ng-message="required">\n              <span translate="RESETPASSWORD.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n            </div>\n            <div ng-message="pattern">\n              <span translate="RESETPASSWORD.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block" md-no-float>\n          <input type="password" name="passwordConfirm" ng-model="vm.form.passwordConfirm" placeholder="Password (Confirm)" match-password="password" translate translate-attr-placeholder="RESETPASSWORD.PASSWORD_CONFIRM">\n          <div ng-messages="resetPasswordForm.passwordConfirm.$error" role="alert">\n            <div ng-message="passwordMatch">\n              <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-button type="button" ng-click="vm.resetPassword()" class="md-raised md-accent submit-button" aria-label="UPDATE MY PASSWORD" ng-disabled="resetPasswordForm.$invalid || resetPasswordForm.$pristine" translate="RESETPASSWORD.UPDATE_PASSWORD" translate-attr-aria-label="RESETPASSWORD.UPDATE_PASSWORD">\n          RESET MY PASSWORD\n        </md-button>\n      </form>\n    </div>\n  </div>\n</div>'),e.put("app/toolbar/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/changepassword/changepassword.html",'<md-dialog class="user-dialog" aria-label="{{vm.name}}">\n  <form name="changePasswordForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span ng-if="vm.reset" class="title" translate="TOOLBAR.RESETPASSWORD">Reset Password</span>\n        <span ng-if="!vm.reset" class="title" translate="TOOLBAR.CHANGEPASSWORD">Change Password</span>\n        <md-button ng-if="!vm.reset" class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n    <md-dialog-content>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.OLD_PASSWORD">Old Password</label>\n        <input type="password" name="oldPassword" ng-model="vm.oldPassword" placeholder="Password" translate translate-attr-placeholder="TOOLBAR.OLD_PASSWORD" required>\n        <div ng-messages="changePasswordForm.oldPassword.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.NEW_PASSWORD">New Password</label>\n        <input type="password" name="password" ng-model="vm.password" placeholder="Password" ng-pattern="vm.passwordPattern" translate translate-attr-placeholder="TOOLBAR.NEW_PASSWORD" required>\n        <div ng-messages="changePasswordForm.password.$error" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_REQUIRED">Password field is required</span>\n          </div>\n          <div ng-message="pattern">\n            <span translate="TOOLBAR.ERRORS.SECURE_PASSWORD_PATTERN">Must contain at least 8 characters, with a minimum of 1 lowercase letter, 1 uppercase letter, 1 numeric character and 1 special character ~!?*@#$%^&-_=+[{]}.</span>\n          </div>\n          <div ng-message="oldPasswordMatch">\n            <span translate="TOOLBAR.ERRORS.PASSWORD_OLDPASSWORD_MATCH">New password must be different from old one</span>\n          </div>\n        </div>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="TOOLBAR.CONFIRM_PASSWORD">Confirm Password</label>\n        <input type="password" match-password="password" name="confirmPassword" ng-model="confirmPassword">\n        <div ng-messages="changePasswordForm.confirmPassword.$error" role="alert" multiple>\n          <div ng-message="required">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_REQUIRED">Confirm field is required</span>\n          </div>\n          <div ng-message="passwordMatch">\n            <span translate="TOOLBAR.ERRORS.CONFIRM_NOT_MATCH">Your password did not match</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-icon>\n          </md-button>\n        </div>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions layout="row" layout-align="space-between center">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.savePassword()" class="send-button md-accent md-raised" ng-disabled="changePasswordForm.$invalid || changePasswordForm.$pristine" aria-label="SAVE" translate="TOOLBAR.SAVE" translate-attr-aria-label="TOOLBAR.SAVE">\n          SAVE\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),e.put("app/toolbar/layouts/vertical-navigation/toolbar.html",'<div layout="row" layout-align="start center">\n  <div layout="row" layout-align="start center" flex>\n    <md-button id="navigation-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'navigation\')" hide-gt-sm aria-label="Toggle navigation" translate translate-attr-aria-label="TOOLBAR.TOGGLE_NAVIGATION">\n      <md-icon md-font-icon="icon-menu" class="icon"></md-icon>\n    </md-button>\n\n    <ms-shortcuts ng-if="!vm.isAgent()"></ms-shortcuts>\n\n    <div class="toolbar-separator"></div>\n\n    <div ng-if="vm.license.demo" class="blink md-padding">\n      <span class="md-warn-fg" translate="TOOLBAR.TRIAL_VERSION">Trial Version</span>\n    </div>\n\n    <div ng-if="vm.isAgent()" class="logo" layout-padding-left-8 layout="row" layout-align="start center">\n      <span class="logo-image"><img src="/api/settings/1/logo" alt="logo" /></span>\n      <span ng-show="vm.isAgent() && (vm.user.showWebBar != 2)" class="logo-text text-truncate">{{ vm.getLogo() |\n        uppercase }}</span>\n    </div>\n\n    \x3c!-- phonebar directive WebRtc type--\x3e\n    <ms-phonebar class="ms-phonebar" ng-if="vm.isAgent() && (vm.user.showWebBar == 2)" conf="vm.conf" sessions="vm.webRTCSessions" registered="vm.isWebRTCBarRegistered" flex></ms-phonebar>\n    \x3c!-- phonebar directive --\x3e\n  </div>\n\n  <div layout="row" layout-align="start center">\n\n    <md-progress-circular id="toolbar-progress" ng-if="$root.loadingProgress" class="md-accent" md-diameter="32">\n    </md-progress-circular>\n\n    \x3c!-- Pause Management --\x3e\n    <div ng-if="vm.isAgent() && (vm.user.showWebBar != 0)" layout="row" layout-align="end center">\n      <div class="toolbar-separator"></div>\n\n      <div class="border brad-5" layout="row" layout-align="center center" layout-margin>\n        <md-button ng-if="vm.user.voicePause" class="md-icon-button no-margin" ng-click="vm.unpause()">\n          <md-icon md-font-icon="icon-play-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.RESUME\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-button ng-disabled="vm.user.voicePause && \'DEFAULT PAUSE\' === vm.user.pauseType" class="md-icon-button no-margin" ng-click="vm.pause()">\n          <md-icon md-font-icon="icon-pause-circle-outline" class="icon s24"></md-icon>\n          <md-tooltip md-direction="bottom">{{\'TOOLBAR.PAUSE\' | translate}}</md-tooltip>\n        </md-button>\n\n        <md-menu>\n          <md-button aria-label="Pauses" class="md-icon-button no-margin" ng-click="$mdOpenMenu($event)">\n            <md-icon md-menu-origin md-font-icon="icon-dots-vertical"></md-icon>\n          </md-button>\n          <md-menu-content width="4">\n            <md-menu-item ng-if="!vm.pauses.length">\n              <md-button disabled="disabled">\n                <md-icon md-font-icon="icon-pause-octagon" md-menu-align-target></md-icon>\n                {{\'TOOLBAR.NO_PAUSES_AVAILABLE\' | translate}}\n              </md-button>\n            </md-menu-item>\n            <md-menu-item ng-repeat="pause in vm.pauses">\n              <md-button ng-disabled="vm.user.voicePause && pause.name === vm.user.pauseType" ng-click="vm.pause(pause.name)">\n                <md-icon md-font-icon="icon-pause-circle" md-menu-align-target></md-icon>\n                {{pause.name}}\n              </md-button>\n            </md-menu-item>\n          </md-menu-content>\n        </md-menu>\n      </div>\n    </div>\n    \x3c!-- Pause Management --\x3e\n\n    <div class="h5 padding-10" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)">\n      <div layout="row" layout-align="space-between center">\n        <timer ng-if="vm.user.lastLoginAt" start-time="vm.user.lastLoginAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.LOGIN_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-timelapse" class="icon s16"></md-icon>\n      </div>\n      <div layout="row" layout-align="center center" ng-if="vm.user.voicePause">\n        <timer start-time="vm.user.lastPauseAt"></timer>\n        <md-tooltip>{{\'TOOLBAR.PAUSE_TIME\' | translate}}</md-tooltip>\n        <md-icon md-font-icon="icon-coffee" class="icon s16"></md-icon>\n      </div>\n      <div ng-if="vm.user.voicePause">\n        <span class="blink red-fg">{{vm.user.pauseType || \'default\' | uppercase}}</span>\n      </div>\n    </div>\n\n    <div class="toolbar-separator" ng-if="vm.isAgent() && (vm.user.showWebBar != 0)"></div>\n\n    <md-menu-bar id="user-menu">\n      <md-menu md-position-mode="left bottom">\n        <md-button class="user-button" ng-click="$mdOpenMenu()" aria-label="User settings" translate translate-attr-aria-label="TOOLBAR.USER_SETTINGS">\n          <div layout="row" layout-align="space-between center">\n            <div class="avatar-wrapper">\n              <img md-menu-align-target class="avatar" src="assets/images/avatars/profile.png" ng-if="!vm.user.userpic">\n              <img md-menu-align-target class="avatar" ng-src="api/users/{{vm.user.id}}/avatar" ng-if="vm.user.userpic">\n              <md-icon md-font-icon ng-class="vm.userStatus.icon" ng-style="{\'color\': vm.userStatus.color }" class="icon status s16"></md-icon>\n            </div>\n            <div layout="column" layout-align="center center" class="padding-horizontal-5">\n              <span class="font-size-14 md-subhead">{{vm.user.fullname}}</span>\n              <span class="font-size-12 md-subhead">{{vm.user.name}} &#60;{{vm.user.internal}}&#62;</span>\n            </div>\n\n            <md-icon md-font-icon="icon-chevron-down" class="icon s16" hide-xs></md-icon>\n          </div>\n        </md-button>\n\n        <md-menu-content width="3">\n          <md-menu-item ng-if="vm.user.showWebBar == 2 && vm.user.phoneBarEnableSettings" class="md-indent">\n            <md-icon md-font-icon="icon-cog" class="icon"></md-icon>\n            <md-button ng-click="vm.openSettings($event)" ng-disabled="!vm.license.webrtc"><span translate="TOOLBAR.SETTINGS">SETTINGS</span></md-button>\n          </md-menu-item>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-key-variant" class="icon"></md-icon>\n            <md-button ng-click="vm.changePassword($event)"><span translate="TOOLBAR.CHANGEPASSWORD">Change\n                Password</span></md-button>\n          </md-menu-item>\n\n          <md-menu-divider></md-menu-divider>\n\n          <md-menu-item class="md-indent">\n            <md-icon md-font-icon="icon-logout" class="icon"></md-icon>\n            <md-button ng-click="vm.logout()">Logout</md-button>\n          </md-menu-item>\n        </md-menu-content>\n      </md-menu>\n    </md-menu-bar>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.user.role === \'agent\' && (vm.license.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\n\n    <md-button ng-if="vm.user.role === \'agent\' && vm.license.dialer" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.preview($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <div ng-if="vm.contacts" class="md-accent-bg open-contact-count">{{vm.contacts > 99 ? \'99+\' : vm.contacts}}</div>\n      <md-icon md-font-icon="icon-fire" class="icon red-900-fg"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.PREVIEW">Preview</span></md-tooltip>\n    </md-button>\n\n    <ms-search-bar ng-if="vm.user.role !== \'agent\'" on-search="vm.search(query)" on-result-click="vm.searchResultClick(item)" debounce="300" collapse-on-blur="true"></ms-search-bar>\n\n    <md-menu id="language-menu" md-offset="0 72" md-position-mode="target-right target" layout="column" layout-align="center center">\n      <md-button class="md-icon-button no-margin" ng-click="$mdOpenMenu()" aria-label="Language" md-menu-origin md-menu-align-target>\n        <div layout="row" layout-align="center center">\n          <img class="flag" ng-src="assets/images/flags/{{vm.selectedLanguage.flag}}.png">\n        </div>\n      </md-button>\n\n      <md-menu-content width="3" id="language-menu-content">\n        <md-menu-item ng-repeat="(iso, lang) in vm.languages">\n          <md-button ng-click="vm.changeLanguage(lang)" aria-label="{{lang.title}}" translate translate-attr-aria-label="{{lang.title}}">\n            <span layout="row" layout-align="start center">\n              <img class="flag flag-24" ng-src="assets/images/flags/{{lang.flag}}.png">\n              <span>{{ lang.translation | translate | startcase }}</span>\n            </span>\n          </md-button>\n        </md-menu-item>\n      </md-menu-content>\n    </md-menu>\n\n    <div class="toolbar-separator"></div>\n\n    <md-button ng-if="vm.license.gray && vm.user.role !== \'agent\'" class="md-icon-button" ui-sref="app.settings.license" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n    <md-button ng-if="vm.license.gray && vm.user.role === \'agent\'" class="md-icon-button" aria-label="Toggle quick panel">\n      <md-icon md-font-icon="icon-alert" class="icon md-warn blink"></md-icon>\n    </md-button>\n\n    <div ng-if="vm.license.gray" class="toolbar-separator"></div>\n\n    <md-button id="quick-panel-toggle" class="md-icon-button" ng-click="vm.toggleSidenav(\'quick-panel\')" aria-label="Toggle quick panel" translate translate-attr-aria-label="TOOLBAR.TOGGLE_QUICK_PANEL">\n      <div ng-if="(vm.unreadTotalMessages + vm.unreadTotalGroupMessages)" class="md-accent-bg unread-message-count">\n        {{vm.unreadTotalMessages + vm.unreadTotalGroupMessages}}</div>\n      <md-icon md-font-icon="icon-format-list-bulleted" class="icon"></md-icon>\n    </md-button>\n  </div>\n</div>'),e.put("app/toolbar/preview/dialog.html",'<md-dialog class="preview-dialog" aria-label="preview">\n  <form name="previewForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-background-bg">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ (\'TOOLBAR.PREVIEW\' | translate) + (vm.preview.recallme ? \' - \' +\n          (\'CONTACTMANAGER.RECALLME\' | translate | uppercase) : \'\') }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content>\n      <div ng-if="vm.preview">\n        <div ng-if="vm.preview.recallme" layout="row" class="recall-me-info">\n          <md-icon md-font-icon="icon-information-outline" aria-label="Recall Me"></md-icon>\n          <p class="ml-5" translate="TOOLBAR.HELP.PREVIEW_RECALLME" translate-values="{ date: (vm.preview.scheduledat | date:\'short\') }" flex></p>\n        </div>\n        <div layout="row">\n          <div class="md-padding md-margin" layout="column" flex="30">\n            <md-input-container ng-if="vm.preview.Contact.id" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ID">ID</label>\n              <input type="text" ng-model="vm.preview.Contact.id" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Queue.name" class="md-block no-margin">\n              <label translate="VOICE.QUEUE">Queue</label>\n              <input type="text" ng-model="vm.preview.Queue.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.List.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.LIST">List</label>\n              <input type="text" ng-model="vm.preview.List.name" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.tags && vm.preview.Contact.tags.length" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.TAGS">Tags</label>\n              <input type="text" ng-model="vm.preview.Contact.tags" disabled="true">\n            </md-input-container>\n            <md-input-container ng-if="vm.preview.Contact.Company && vm.preview.Contact.Company.name" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.COMPANY">Company</label>\n              <input type="text" ng-model="vm.preview.Contact.Company.name" disabled="true">\n            </md-input-container>\n          </div>\n          <md-divider></md-divider>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && !vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ \'CONTACTMANAGER.\' + key.toUpperCase() | translate}}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\n          </div>\n          <div class="md-padding md-margin" layout="column" flex="35">\n            <md-input-container ng-repeat="(key, value) in vm.preview.Contact" ng-if="!vm.isNil(value) && vm.isCustomField(key) && !vm.isHiddenField(key)" class="md-block no-margin">\n              <label>{{ vm.customFieldsMap[key] || key }}</label>\n              <input type="text" ng-model="value" disabled="true">\n            </md-input-container>\n          </div>\n        </div>\n      </div>\n      <div layout="row" ng-if="!vm.preview">\n        <span>no contacts available</span>\n      </div>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-hide="vm.hopperIds.length <= 1" ng-disabled="vm.disableGetContact" ng-click="vm.previousContact()" aria-label="PREVIOUSCONTACT" translate-attr-aria-label="TOOLS.PREVIOUSCONTACT">\n        <md-icon md-font-icon="icon-chevron-left"></md-icon>\n      </md-button>\n      <md-button class="md-fab green-bg" aria-label="CALL" translate-attr-aria-label="TOOLS.CALL" ng-disabled="vm.disable" ng-click="vm.originatePreview($event)">\n        <md-icon md-font-icon="icon-phone"></md-icon>\n      </md-button>\n      <md-button class="md-icon-button md-primary" ng-if="!vm.isRecallNotification" ng-disabled="vm.disableGetContact" ng-click="vm.nextContact()" aria-label="NEXTCONTACT" translate-attr-aria-label="TOOLS.NEXTCONTACT">\n        <md-icon md-font-icon="icon-chevron-right"></md-icon>\n      </md-button>\n    </md-dialog-actions>\n  </form>\n</md-dialog>')}]);
\ No newline at end of file
similarity index 97%
rename from public/styles/app.d45f5a7f.css
rename to public/styles/app.fabf8255.css
index aa6b231..5729d23 100644 (file)
@@ -1 +1 @@
-[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
+[data-ng-click],[ng-click],[x-ng-click]{cursor:pointer}.ms-container{width:100%!important}.dark-lime-fg{color:#575b2e!important}.dark-red-fg{color:#9e3333!important}.iron-fg{color:#555865!important}.light-brown-fg{color:#645733!important}.ms-container .ms-list{height:380px!important}.ms-container .ms-selectable li.ms-elem-selectable,.ms-container .ms-selection li.ms-elem-selection{padding:6px 12px!important;height:34px!important}md-input-container:not(.md-input-has-value) input:not(:focus){color:inherit!important}.ms-container .ms-search{height:34px;margin-bottom:5px;border:solid 1px #e5e5e5;background-color:#fff;box-shadow:none;width:100%;padding-left:6px}.ms-container .ms-footer{text-align:center}.no-border{border:none!important}.left .motion-spinner{border-top-color:#00d7cc!important;border-left-color:#00d7cc!important}.right .motion-spinner{border-top-color:#00d7cc!important;border-right-color:#00d7cc!important}.md-option-info-text{font-size:10px}md-pagination-wrapper{width:auto!important}md-autocomplete.no-container-margin md-autocomplete-wrap md-input-container{margin:0!important}md-dialog.report-selection-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.advanced-search-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}.md-dialog-action-center{justify-content:center!important}.flag-24{height:24px}button.auto-width{min-width:auto!important}button.size-8{transform:scale(.8)}md-icon.auto-size{height:auto!important;width:auto!important}md-switch.auto-height{height:auto!important}.hidden{visibility:hidden}.user-profile-section-help{background:#fcf20f0f;border:1px solid rgba(0,0,0,.12);padding:5px}.email-preview-message{display:-webkit-box;margin:0 auto;display:block;height:200px;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}button.advanced-search.md-accent-bg.md-button.md-default-theme:not([disabled]).md-icon-button:hover{background-color:#0091ea}.blink{animation:blink 2s ease-in infinite}.no-click{pointer-events:none}.spinner-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;background:rgba(43,43,43,.5)}ms-quick-filter[disabled]{pointer-events:none;opacity:.7}ms-search-bar[disabled]{pointer-events:none;opacity:.7}@keyframes blink{from,to{opacity:1}50%{opacity:0}}textarea.api-key-area{background:0 0;resize:none}.badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}md-tooltip.multiline div.md-content{height:auto!important}.auto-margin{margin:auto}md-menu-item md-menu.no-margin button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-date-range md-menu span.md-select-value{border-bottom-color:rgba(0,0,0,.12)}.keep-on-top{z-index:9999!important}.margin-auto{margin:auto}.xenialab-violet-light-bg{background-color:#9c4fd3!important}.xenialab-violet-light-fg{color:#9c4fd3!important}.no-margin-top{margin-top:0!important}.no-margin-bottom{margin-bottom:0!important}.disabled-button{display:inline-block;position:relative;cursor:default;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:rgba(0,0,0,.12);color:rgba(0,0,0,.38);white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden}.word-break-all{word-break:break-all}.mw-150{max-width:150px!important}@supports (-ms-ime-align:auto){md-tabs{display:inline!important}}@supports (-ms-accelerator:true){md-tabs{display:inline!important}}@supports (-moz-transform:translate(0,0)){md-tabs{display:inline!important}}body[dir=rtl] table.md-table td.md-cell,body[dir=rtl] table.md-table th.md-column{text-align:right!important}body[dir=rtl] table.md-table td.md-cell md-checkbox,body[dir=rtl] table.md-table th.md-column md-checkbox{margin-right:12px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{margin:0 0 0 16px!important}body[dir=rtl] .ms-navigation .ms-navigation-node .ms-navigation-item>a.ms-navigation-button{padding-right:45px}body[dir=rtl] .md-table-pagination>.buttons{direction:ltr}body[dir=rtl] .md-table-pagination>.buttons>.label{direction:rtl}body[dir=rtl] .header .logo .logo-icon{margin:5px 0 0 15px!important}body[dir=rtl] md-switch .md-container{margin-right:inherit!important}#toasty.toasty-position-top-right{top:64px}.preview_cancel{padding:5px;float:left;background-color:red}.preview_open{padding:5px;float:right;background-color:green}.hover-token{cursor:pointer}body,html{height:100%;position:relative}body{margin:0;padding:0}[tabindex='-1']:focus{outline:0}.inset{padding:10px}a.md-no-style,button.md-no-style{font-weight:400;background-color:inherit;text-align:left;border:none;padding:0;margin:0}button,input,select,textarea{vertical-align:baseline}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[type=button][disabled],input[type=reset][disabled],input[type=submit][disabled]{cursor:default}textarea{vertical-align:top;overflow:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box;-webkit-box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}input:-webkit-autofill{text-shadow:none}.md-visually-hidden{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;text-transform:none;width:1px}.md-shadow{position:absolute;top:0;left:0;bottom:0;right:0;border-radius:inherit;pointer-events:none}.md-shadow-bottom-z-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-shadow-bottom-z-2{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-shadow-animated.md-shadow{transition:box-shadow .28s cubic-bezier(.4,0,.2,1)}.md-ripple-container{pointer-events:none;position:absolute;overflow:hidden;left:0;top:0;width:100%;height:100%;transition:all .55s cubic-bezier(.25,.8,.25,1)}.md-ripple{position:absolute;transform:translate(-50%,-50%) scale(0);transform-origin:50% 50%;opacity:0;border-radius:50%}.md-ripple.md-ripple-placed{transition:margin .9s cubic-bezier(.25,.8,.25,1),border .9s cubic-bezier(.25,.8,.25,1),width .9s cubic-bezier(.25,.8,.25,1),height .9s cubic-bezier(.25,.8,.25,1),opacity .9s cubic-bezier(.25,.8,.25,1),transform .9s cubic-bezier(.25,.8,.25,1)}.md-ripple.md-ripple-scaled{transform:translate(-50%,-50%) scale(1)}.md-ripple.md-ripple-active,.md-ripple.md-ripple-full,.md-ripple.md-ripple-visible{opacity:.2}.md-ripple.md-ripple-remove{animation:md-remove-ripple .9s cubic-bezier(.25,.8,.25,1)}@keyframes md-remove-ripple{0%{opacity:.15}100%{opacity:0}}.md-padding{padding:8px}.md-margin{margin:8px}.md-scroll-mask{position:absolute;background-color:transparent;top:0;right:0;bottom:0;left:0;z-index:50}.md-scroll-mask>.md-scroll-mask-bar{display:block;position:absolute;background-color:#fafafa;right:0;top:0;bottom:0;z-index:65;box-shadow:inset 0 0 1px rgba(0,0,0,.3)}.md-no-momentum{-webkit-overflow-scrolling:auto}.md-no-flicker{-webkit-filter:blur(0)}@media (min-width:960px){.md-padding{padding:16px}}body[dir=ltr],body[dir=rtl],html[dir=ltr],html[dir=rtl]{unicode-bidi:embed}bdo[dir=rtl]{direction:rtl;unicode-bidi:bidi-override}bdo[dir=ltr]{direction:ltr;unicode-bidi:bidi-override}body,html{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;min-height:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.md-display-4{font-size:112px;font-weight:300;letter-spacing:-.010em;line-height:112px}.md-display-3{font-size:56px;font-weight:400;letter-spacing:-.005em;line-height:56px}.md-display-2{font-size:45px;font-weight:400;line-height:64px}.md-display-1{font-size:34px;font-weight:400;line-height:40px}.md-headline{font-size:24px;font-weight:400;line-height:32px}.md-title{font-size:20px;font-weight:500;letter-spacing:.005em}.md-subhead{font-size:16px;font-weight:400;letter-spacing:.010em;line-height:24px}.md-body-1{font-size:14px;font-weight:400;letter-spacing:.010em;line-height:20px}.md-body-2{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:24px}.md-caption{font-size:12px;letter-spacing:.020em}.md-button{letter-spacing:.010em}button,html,input,select,textarea{font-family:Roboto,"Helvetica Neue",sans-serif}button,input,select,textarea{font-size:100%}@keyframes md-autocomplete-list-out{0%{animation-timing-function:linear}50%{opacity:0;height:40px;animation-timing-function:ease-in}100%{height:0;opacity:0}}@keyframes md-autocomplete-list-in{0%{opacity:0;height:0;animation-timing-function:ease-out}50%{opacity:0;height:40px}100%{opacity:1;height:40px}}md-autocomplete{border-radius:2px;display:block;height:40px;position:relative;overflow:visible;min-width:190px}md-autocomplete[disabled] input{cursor:default}md-autocomplete[md-floating-label]{border-radius:0;background:0 0;height:auto}md-autocomplete[md-floating-label] md-input-container{padding-bottom:0}md-autocomplete[md-floating-label] md-autocomplete-wrap{height:auto}md-autocomplete[md-floating-label] button{position:absolute;top:auto;bottom:0;right:0;width:30px;height:30px}md-autocomplete md-autocomplete-wrap{display:flex;flex-direction:row;box-sizing:border-box;position:relative;overflow:visible;height:40px}md-autocomplete md-autocomplete-wrap.md-menu-showing{z-index:51}md-autocomplete md-autocomplete-wrap input,md-autocomplete md-autocomplete-wrap md-input-container{flex:1 1 0%;box-sizing:border-box;min-width:0}md-autocomplete md-autocomplete-wrap md-progress-linear{position:absolute;bottom:-2px;left:0}md-autocomplete md-autocomplete-wrap md-progress-linear.md-inline{bottom:40px;right:2px;left:2px;width:auto}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate{position:absolute;top:0;left:0;width:100%;height:3px;transition:none}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate .md-container{transition:none;height:3px}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-enter.ng-enter-active{opacity:1}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave{transition:opacity .15s linear}md-autocomplete md-autocomplete-wrap md-progress-linear .md-mode-indeterminate.ng-leave.ng-leave-active{opacity:0}md-autocomplete input:not(.md-input){font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;width:100%;padding:0 15px;line-height:40px;height:40px}md-autocomplete input:not(.md-input)::-ms-clear{display:none}md-autocomplete button{position:relative;line-height:20px;text-align:center;width:30px;height:30px;cursor:pointer;border:none;border-radius:50%;padding:0;font-size:12px;background:0 0;margin:auto 5px}md-autocomplete button:after{content:'';position:absolute;top:-6px;right:-6px;bottom:-6px;left:-6px;border-radius:50%;transform:scale(0);opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-autocomplete button:focus{outline:0}md-autocomplete button:focus:after{transform:scale(1);opacity:1}md-autocomplete button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0) scale(.9)}md-autocomplete button md-icon path{stroke-width:0}md-autocomplete button.ng-enter{transform:scale(0);transition:transform .15s ease-out}md-autocomplete button.ng-enter.ng-enter-active{transform:scale(1)}md-autocomplete button.ng-leave{transition:transform .15s ease-out}md-autocomplete button.ng-leave.ng-leave-active{transform:scale(0)}@media screen and (-ms-high-contrast:active){md-autocomplete input{border:1px solid #fff}md-autocomplete li:focus{color:#fff}}.md-virtual-repeat-container.md-autocomplete-suggestions-container{position:absolute;box-shadow:0 2px 5px rgba(0,0,0,.25);height:225.5px;max-height:225.5px;z-index:100}.md-virtual-repeat-container.md-not-found{height:48px}.md-autocomplete-suggestions{margin:0;list-style:none;padding:0}.md-autocomplete-suggestions li{font-size:14px;overflow:hidden;padding:0 15px;line-height:48px;height:48px;transition:background .15s linear;margin:0;white-space:nowrap;text-overflow:ellipsis}.md-autocomplete-suggestions li:focus{outline:0}.md-autocomplete-suggestions li:not(.md-not-found-wrapper){cursor:pointer}@media screen and (-ms-high-contrast:active){.md-autocomplete-suggestions,md-autocomplete{border:1px solid #fff}}md-backdrop{transition:opacity 450ms;position:absolute;top:0;bottom:0;left:0;right:0;z-index:50}md-backdrop.md-menu-backdrop{position:fixed!important;z-index:99}md-backdrop.md-select-backdrop{z-index:81;transition-duration:0}md-backdrop.md-dialog-backdrop{z-index:79}md-backdrop.md-bottom-sheet-backdrop{z-index:69}md-backdrop.md-sidenav-backdrop{z-index:59}md-backdrop.md-click-catcher{position:absolute}md-backdrop.md-opaque{opacity:.48}md-backdrop.md-opaque.ng-enter{opacity:0}md-backdrop.md-opaque.ng-enter.md-opaque.ng-enter-active{opacity:.48}md-backdrop.md-opaque.ng-leave{opacity:.48;transition:opacity .4s}md-backdrop.md-opaque.ng-leave.md-opaque.ng-leave-active{opacity:0}md-bottom-sheet{position:absolute;left:0;right:0;bottom:0;padding:8px 16px 88px 16px;z-index:70;border-top-width:1px;border-top-style:solid;transform:translate3d(0,80px,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:transform}md-bottom-sheet.md-has-header{padding-top:0}md-bottom-sheet.ng-enter{opacity:0;transform:translate3d(0,100%,0)}md-bottom-sheet.ng-enter-active{opacity:1;display:block;transform:translate3d(0,80px,0)!important}md-bottom-sheet.ng-leave-active{transform:translate3d(0,100%,0)!important;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-bottom-sheet .md-subheader{background-color:transparent;font-family:Roboto,"Helvetica Neue",sans-serif;line-height:56px;padding:0;white-space:nowrap}md-bottom-sheet md-inline-icon{display:inline-block;height:24px;width:24px;fill:#444}md-bottom-sheet md-list-item{display:flex;outline:0}md-bottom-sheet md-list-item:hover{cursor:pointer}md-bottom-sheet.md-list md-list-item{padding:0;align-items:center;height:48px}md-bottom-sheet.md-grid{padding-left:24px;padding-right:24px;padding-top:0}md-bottom-sheet.md-grid md-list{display:flex;flex-direction:row;flex-wrap:wrap;transition:all .5s;align-items:center}md-bottom-sheet.md-grid md-list-item{flex-direction:column;align-items:center;transition:all .5s;height:96px;margin-top:8px;margin-bottom:8px}@media (max-width:960px){md-bottom-sheet.md-grid md-list-item{flex:1 1 33.3333333333%;max-width:33.3333333333%}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n+1){align-items:flex-start}md-bottom-sheet.md-grid md-list-item:nth-of-type(3n){align-items:flex-end}}@media (min-width:960px) and (max-width:1279px){md-bottom-sheet.md-grid md-list-item{flex:1 1 25%;max-width:25%}}@media (min-width:1280px) and (max-width:1919px){md-bottom-sheet.md-grid md-list-item{flex:1 1 16.6666666667%;max-width:16.6666666667%}}@media (min-width:1920px){md-bottom-sheet.md-grid md-list-item{flex:1 1 14.2857142857%;max-width:14.2857142857%}}md-bottom-sheet.md-grid md-list-item::before{display:none}md-bottom-sheet.md-grid md-list-item .md-list-item-content{display:flex;flex-direction:column;align-items:center;width:48px;padding-bottom:16px}md-bottom-sheet.md-grid md-list-item .md-grid-item-content{border:1px solid transparent;display:flex;flex-direction:column;align-items:center;width:80px}md-bottom-sheet.md-grid md-list-item .md-grid-text{font-weight:400;line-height:16px;font-size:13px;margin:0;white-space:nowrap;width:64px;text-align:center;text-transform:none;padding-top:8px}@media screen and (-ms-high-contrast:active){md-bottom-sheet{border:1px solid #fff}}button.md-button::-moz-focus-inner{border:0}.md-button{display:inline-block;position:relative;cursor:pointer;min-height:36px;min-width:88px;line-height:36px;vertical-align:middle;align-items:center;text-align:center;border-radius:3px;box-sizing:border-box;user-select:none;outline:0;border:0;padding:0 6px;margin:6px 8px;background:0 0;color:currentColor;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;font-style:inherit;font-variant:inherit;font-family:inherit;text-decoration:none;overflow:hidden;transition:box-shadow .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.md-button:focus{outline:0}.md-button:focus,.md-button:hover{text-decoration:none}.md-button.ng-hide,.md-button.ng-leave{transition:none}.md-button.md-cornered{border-radius:0}.md-button.md-icon{padding:0;background:0 0}.md-button.md-raised:not([disabled]){box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button.md-icon-button{margin:0 6px;height:40px;min-width:0;line-height:24px;padding:8px;width:40px;border-radius:50%}.md-button.md-icon-button .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab{z-index:20;line-height:56px;min-width:0;width:56px;height:56px;vertical-align:middle;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:50%;background-clip:padding-box;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-property:background-color,box-shadow,transform}.md-button.md-fab.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}.md-button.md-fab.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}.md-button.md-fab.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}.md-button.md-fab.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}.md-button.md-fab .md-ripple-container{border-radius:50%;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-fab.md-mini{line-height:40px;width:40px;height:40px}.md-button.md-fab.ng-hide,.md-button.md-fab.ng-leave{transition:none}.md-button:not([disabled]).md-fab.md-focused,.md-button:not([disabled]).md-raised.md-focused{box-shadow:0 2px 5px 0 rgba(0,0,0,.26)}.md-button:not([disabled]).md-fab:active,.md-button:not([disabled]).md-raised:active{box-shadow:0 4px 8px 0 rgba(0,0,0,.4)}.md-button .md-ripple-container{border-radius:3px;background-clip:padding-box;overflow:hidden;-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAA5JREFUeNpiYGBgAAgwAAAEAAGbA+oJAAAAAElFTkSuQmCC)}.md-button.md-icon-button md-icon,button.md-button.md-fab md-icon{display:block}.md-toast-open-top .md-button.md-fab-top-left,.md-toast-open-top .md-button.md-fab-top-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,42px,0)}.md-toast-open-top .md-button.md-fab-top-left:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-left:not([disabled]):hover,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]).md-focused,.md-toast-open-top .md-button.md-fab-top-right:not([disabled]):hover{transform:translate3d(0,41px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left,.md-toast-open-bottom .md-button.md-fab-bottom-right{transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate3d(0,-42px,0)}.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-left:not([disabled]):hover,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]).md-focused,.md-toast-open-bottom .md-button.md-fab-bottom-right:not([disabled]):hover{transform:translate3d(0,-43px,0)}.md-button-group{display:flex;flex:1;width:100%}.md-button-group>.md-button{flex:1;display:block;overflow:hidden;width:0;border-width:1px 0 1px 1px;border-radius:0;text-align:center;text-overflow:ellipsis;white-space:nowrap}.md-button-group>.md-button:first-child{border-radius:2px 0 0 2px}.md-button-group>.md-button:last-child{border-right-width:1px;border-radius:0 2px 2px 0}@media screen and (-ms-high-contrast:active){.md-button.md-fab,.md-button.md-raised{border:1px solid #fff}}md-card{box-sizing:border-box;display:flex;flex-direction:column;margin:8px;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-card md-card-header{padding:16px;display:flex;flex-direction:row}md-card md-card-header:first-child md-card-avatar{margin-right:12px}[dir=rtl] md-card md-card-header:first-child md-card-avatar{margin-right:auto;margin-left:12px}md-card md-card-header:last-child md-card-avatar{margin-left:12px}[dir=rtl] md-card md-card-header:last-child md-card-avatar{margin-left:auto;margin-right:12px}md-card md-card-header md-card-avatar{width:40px;height:40px}md-card md-card-header md-card-avatar .md-user-avatar,md-card md-card-header md-card-avatar md-icon{border-radius:50%}md-card md-card-header md-card-avatar md-icon{padding:8px}md-card md-card-header md-card-avatar+md-card-header-text{max-height:40px}md-card md-card-header md-card-avatar+md-card-header-text .md-title{font-size:14px}md-card md-card-header md-card-header-text{display:flex;flex:1;flex-direction:column}md-card md-card-header md-card-header-text .md-subhead{font-size:14px}md-card md-card-title-media img,md-card>img,md-card>md-card-header img{box-sizing:border-box;display:flex;flex:0 0 auto;width:100%;height:auto}md-card md-card-title{padding:24px 16px 16px;display:flex;flex:1 1 auto;flex-direction:row}md-card md-card-title+md-card-content{padding-top:0}md-card md-card-title md-card-title-text{flex:1;flex-direction:column;display:flex}md-card md-card-title md-card-title-text .md-subhead{padding-top:0;font-size:14px}md-card md-card-title md-card-title-text:only-child .md-subhead{padding-top:12px}md-card md-card-title md-card-title-media{margin-top:-8px}md-card md-card-title md-card-title-media .md-media-sm{height:80px;width:80px}md-card md-card-title md-card-title-media .md-media-md{height:112px;width:112px}md-card md-card-title md-card-title-media .md-media-lg{height:152px;width:152px}md-card md-card-content{display:block;padding:16px}md-card md-card-content>p:first-child{margin-top:0}md-card md-card-content>p:last-child{margin-bottom:0}md-card md-card-content .md-media-xl{height:240px;width:240px}md-card .md-actions,md-card md-card-actions{margin:8px}md-card .md-actions.layout-column .md-button:not(.md-icon-button),md-card md-card-actions.layout-column .md-button:not(.md-icon-button){margin:2px 0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):first-of-type{margin-top:0}md-card .md-actions.layout-column .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions.layout-column .md-button:not(.md-icon-button):last-of-type{margin-bottom:0}md-card .md-actions.layout-column .md-button.md-icon-button,md-card md-card-actions.layout-column .md-button.md-icon-button{margin-top:6px;margin-bottom:6px}md-card .md-actions md-card-icon-actions,md-card md-card-actions md-card-icon-actions{flex:1;justify-content:flex-start;display:flex;flex-direction:row}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button),md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button){margin:0 4px}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):first-of-type{margin-left:auto;margin-right:0}md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:0}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button:not(.md-icon-button):last-of-type{margin-right:auto;margin-left:0}md-card .md-actions:not(.layout-column) .md-button.md-icon-button,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button{margin-left:6px;margin-right:6px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:first-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:first-of-type{margin-left:auto;margin-right:12px}md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:12px}[dir=rtl] md-card .md-actions:not(.layout-column) .md-button.md-icon-button:last-of-type,[dir=rtl] md-card md-card-actions:not(.layout-column) .md-button.md-icon-button:last-of-type{margin-right:auto;margin-left:12px}md-card .md-actions:not(.layout-column) .md-button+md-card-icon-actions,md-card md-card-actions:not(.layout-column) .md-button+md-card-icon-actions{flex:1;justify-content:flex-end;display:flex;flex-direction:row}md-card md-card-footer{margin-top:auto;padding:16px}@media screen and (-ms-high-contrast:active){md-card{border:1px solid #fff}}.md-image-no-fill>img{width:auto;height:auto}.md-contact-chips .md-chips md-chip{padding:0 25px 0 0}[dir=rtl] .md-contact-chips .md-chips md-chip{padding:0 0 0 25px}.md-contact-chips .md-chips md-chip .md-contact-avatar{float:left}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-avatar{float:right}.md-contact-chips .md-chips md-chip .md-contact-avatar img{height:32px;border-radius:16px}.md-contact-chips .md-chips md-chip .md-contact-name{display:inline-block;height:32px;margin-left:8px}[dir=rtl] .md-contact-chips .md-chips md-chip .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion{height:56px}.md-contact-suggestion img{height:40px;border-radius:20px;margin-top:8px}.md-contact-suggestion .md-contact-name{margin-left:8px;width:120px}[dir=rtl] .md-contact-suggestion .md-contact-name{margin-left:auto;margin-right:8px}.md-contact-suggestion .md-contact-email,.md-contact-suggestion .md-contact-name{display:inline-block;overflow:hidden;text-overflow:ellipsis}.md-contact-chips-suggestions li{height:100%}.md-chips{display:block;font-family:Roboto,"Helvetica Neue",sans-serif;font-size:16px;padding:0 0 8px 3px;vertical-align:middle}.md-chips:after{content:'';display:table;clear:both}[dir=rtl] .md-chips{padding:0 3px 8px 0}.md-chips.md-readonly .md-chip-input-container{min-height:32px}.md-chips:not(.md-readonly){cursor:text}.md-chips.md-removable md-chip{padding-right:22px}[dir=rtl] .md-chips.md-removable md-chip{padding-right:0;padding-left:22px}.md-chips.md-removable md-chip .md-chip-content{padding-right:4px}[dir=rtl] .md-chips.md-removable md-chip .md-chip-content{padding-right:0;padding-left:4px}.md-chips md-chip{cursor:default;border-radius:16px;display:block;height:32px;line-height:32px;margin:8px 8px 0 0;padding:0 12px 0 12px;float:left;box-sizing:border-box;max-width:100%;position:relative}[dir=rtl] .md-chips md-chip{margin:8px 0 0 8px}[dir=rtl] .md-chips md-chip{float:right}.md-chips md-chip .md-chip-content{display:block;float:left;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-chips md-chip .md-chip-content{float:right}.md-chips md-chip .md-chip-content:focus{outline:0}.md-chips md-chip._md-chip-content-edit-is-enabled{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.md-chips md-chip .md-chip-remove-container{position:absolute;right:0;line-height:22px}[dir=rtl] .md-chips md-chip .md-chip-remove-container{right:auto;left:0}.md-chips md-chip .md-chip-remove{text-align:center;width:32px;height:32px;min-width:0;padding:0;background:0 0;border:none;box-shadow:none;margin:0;position:relative}.md-chips md-chip .md-chip-remove md-icon{height:18px;width:18px;position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}.md-chips .md-chip-input-container{display:block;line-height:32px;margin:8px 8px 0 0;padding:0;float:left}[dir=rtl] .md-chips .md-chip-input-container{margin:8px 0 0 8px}[dir=rtl] .md-chips .md-chip-input-container{float:right}.md-chips .md-chip-input-container input:not([type]),.md-chips .md-chip-input-container input[type=email],.md-chips .md-chip-input-container input[type=number],.md-chips .md-chip-input-container input[type=tel],.md-chips .md-chip-input-container input[type=text],.md-chips .md-chip-input-container input[type=url]{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:not([type]):focus,.md-chips .md-chip-input-container input[type=email]:focus,.md-chips .md-chip-input-container input[type=number]:focus,.md-chips .md-chip-input-container input[type=tel]:focus,.md-chips .md-chip-input-container input[type=text]:focus,.md-chips .md-chip-input-container input[type=url]:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{background:0 0;height:32px}.md-chips .md-chip-input-container md-autocomplete md-autocomplete-wrap{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container input{border:0;height:32px;line-height:32px;padding:0}.md-chips .md-chip-input-container input:focus{outline:0}.md-chips .md-chip-input-container md-autocomplete,.md-chips .md-chip-input-container md-autocomplete-wrap{height:32px}.md-chips .md-chip-input-container md-autocomplete{box-shadow:none}.md-chips .md-chip-input-container md-autocomplete input{position:relative}.md-chips .md-chip-input-container:not(:first-child){margin:8px 8px 0 0}[dir=rtl] .md-chips .md-chip-input-container:not(:first-child){margin:8px 0 0 8px}.md-chips .md-chip-input-container input{background:0 0;border-width:0}.md-chips md-autocomplete button{display:none}@media screen and (-ms-high-contrast:active){.md-chip-input-container,md-chip{border:1px solid #fff}.md-chip-input-container md-autocomplete{border:none}}.md-inline-form md-checkbox{margin:19px 0 18px}md-checkbox{box-sizing:border-box;display:inline-block;margin-bottom:16px;white-space:nowrap;cursor:pointer;outline:0;user-select:none;position:relative;min-width:20px;min-height:20px;margin-left:0;margin-right:16px}[dir=rtl] md-checkbox{margin-left:16px}[dir=rtl] md-checkbox{margin-right:0}md-checkbox:last-of-type{margin-left:0;margin-right:0}md-checkbox.md-focused:not([disabled]) .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-checkbox.md-focused:not([disabled]):not(.md-checked) .md-container:before{background-color:rgba(0,0,0,.12)}md-checkbox.md-align-top-left>div.md-container{top:12px}md-checkbox .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-checkbox .md-container{left:auto}[dir=rtl] md-checkbox .md-container{right:0}md-checkbox .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-checkbox .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-checkbox .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-checkbox .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-checkbox.md-checked .md-icon{border-color:transparent}md-checkbox.md-checked .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox[disabled]{cursor:default}md-checkbox.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-checkbox .md-label{box-sizing:border-box;position:relative;display:inline-block;vertical-align:middle;white-space:normal;user-select:text;margin-left:30px;margin-right:0}[dir=rtl] md-checkbox .md-label{margin-left:0}[dir=rtl] md-checkbox .md-label{margin-right:30px}md-content{display:block;position:relative;overflow:auto;-webkit-overflow-scrolling:touch}md-content[md-scroll-y]{overflow-y:auto;overflow-x:hidden}md-content[md-scroll-x]{overflow-x:auto;overflow-y:hidden}@media print{md-content{overflow:visible!important}}md-calendar{font-size:13px;user-select:none}.md-calendar-scroll-mask{display:inline-block;overflow:hidden;height:308px}.md-calendar-scroll-mask .md-virtual-repeat-scroller{overflow-y:scroll;-webkit-overflow-scrolling:touch}.md-calendar-scroll-mask .md-virtual-repeat-scroller::-webkit-scrollbar{display:none}.md-calendar-scroll-mask .md-virtual-repeat-offsetter{width:100%}.md-calendar-scroll-container{box-shadow:inset -3px 3px 6px rgba(0,0,0,.2);display:inline-block;height:308px;width:346px}.md-calendar-date{height:44px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box}.md-calendar-date:first-child{padding-left:16px}[dir=rtl] .md-calendar-date:first-child{padding-left:0;padding-right:16px}.md-calendar-date:last-child{padding-right:16px}[dir=rtl] .md-calendar-date:last-child{padding-right:0;padding-left:16px}.md-calendar-date.md-calendar-date-disabled{cursor:default}.md-calendar-date-selection-indicator{transition:background-color,color .4s cubic-bezier(.25,.8,.25,1);border-radius:50%;display:inline-block;width:40px;height:40px;line-height:40px}.md-calendar-date:not(.md-disabled) .md-calendar-date-selection-indicator{cursor:pointer}.md-calendar-month-label{height:44px;font-size:14px;font-weight:500;padding:0 0 0 24px}[dir=rtl] .md-calendar-month-label{padding:0 24px 0 0}md-calendar-month .md-calendar-month-label:not(.md-calendar-month-label-disabled){cursor:pointer}.md-calendar-month-label md-icon{transform:rotate(180deg)}[dir=rtl] .md-calendar-month-label md-icon{transform:none}.md-calendar-month-label span{vertical-align:middle}.md-calendar-day-header{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar-day-header th{height:40px;width:44px;text-align:center;padding:0;border:none;box-sizing:content-box;font-weight:400}.md-calendar-day-header th:first-child{padding-left:16px}[dir=rtl] .md-calendar-day-header th:first-child{padding-left:0;padding-right:16px}.md-calendar-day-header th:last-child{padding-right:16px}[dir=rtl] .md-calendar-day-header th:last-child{padding-right:0;padding-left:16px}.md-calendar{table-layout:fixed;border-spacing:0;border-collapse:collapse}.md-calendar tr:last-child td{border-bottom-width:1px;border-bottom-style:solid}.md-calendar:first-child{border-top:1px solid transparent}.md-calendar tbody,.md-calendar td,.md-calendar tr{vertical-align:middle;box-sizing:content-box}md-datepicker{white-space:nowrap;overflow:hidden;padding-right:18px;margin-right:-18px;vertical-align:middle}[dir=rtl] md-datepicker{padding-right:0;padding-left:18px}[dir=rtl] md-datepicker{margin-right:auto;margin-left:-18px}.md-inline-form md-datepicker{margin-top:12px}.md-datepicker-button{display:inline-block;box-sizing:border-box;background:0 0;vertical-align:middle;position:relative}.md-datepicker-button:before{top:0;left:0;bottom:0;right:0;position:absolute;content:'';speak:none}.md-datepicker-input{font-size:14px;box-sizing:border-box;border:none;box-shadow:none;outline:0;background:0 0;min-width:120px;max-width:328px;padding:0 0 5px}.md-datepicker-input::-ms-clear{display:none}._md-datepicker-floating-label>md-datepicker{overflow:visible}._md-datepicker-floating-label>md-datepicker .md-datepicker-input-container{border:none}._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:left;margin-top:-2.5px}[dir=rtl] ._md-datepicker-floating-label>md-datepicker .md-datepicker-button{float:right}._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:18px;left:auto;width:calc(100% - 84px)}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){right:auto}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon>label:not(.md-no-float):not(.md-container-ignore){left:18px}._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:64px}[dir=rtl] ._md-datepicker-floating-label._md-datepicker-has-calendar-icon .md-input-message-animation{margin-left:auto;margin-right:64px}.md-datepicker-input-container{position:relative;border-bottom-width:1px;border-bottom-style:solid;display:inline-block;width:auto}.md-icon-button+.md-datepicker-input-container{margin-left:12px}[dir=rtl] .md-icon-button+.md-datepicker-input-container{margin-left:auto;margin-right:12px}.md-datepicker-input-container.md-datepicker-focused{border-bottom-width:2px}.md-datepicker-is-showing .md-scroll-mask{z-index:99}.md-datepicker-calendar-pane{position:absolute;top:0;left:-100%;z-index:100;border-width:1px;border-style:solid;background:0 0;transform:scale(0);transform-origin:0 0;transition:transform .2s cubic-bezier(.25,.8,.25,1)}.md-datepicker-calendar-pane.md-pane-open{transform:scale(1)}.md-datepicker-input-mask{height:40px;width:340px;position:relative;overflow:hidden;background:0 0;pointer-events:none;cursor:text}.md-datepicker-calendar{opacity:0;transition:opacity .2s cubic-bezier(.5,0,.25,1)}.md-pane-open .md-datepicker-calendar{opacity:1}.md-datepicker-calendar md-calendar:focus{outline:0}.md-datepicker-expand-triangle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:0;height:0;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid}.md-datepicker-triangle-button{position:absolute;right:0;top:5px;transform:translateY(-25%) translateX(45%)}[dir=rtl] .md-datepicker-triangle-button{right:auto;left:0}[dir=rtl] .md-datepicker-triangle-button{transform:translateY(-25%) translateX(-45%)}.md-datepicker-triangle-button.md-button.md-icon-button{height:36px;width:36px;position:absolute;padding:8px}md-datepicker[disabled] .md-datepicker-input-container{border-bottom-color:transparent}md-datepicker[disabled] .md-datepicker-triangle-button{display:none}.md-datepicker-open{overflow:hidden}.md-datepicker-open .md-datepicker-input-container,.md-datepicker-open input.md-input{border-bottom-color:transparent}.md-datepicker-open .md-datepicker-triangle-button,.md-datepicker-open.md-input-has-placeholder>label,.md-datepicker-open.md-input-has-value>label{display:none}.md-datepicker-pos-adjusted .md-datepicker-input-mask{display:none}.md-datepicker-calendar-pane .md-calendar{transform:translateY(-85px);transition:transform .65s cubic-bezier(.25,.8,.25,1);transition-delay:125ms}.md-datepicker-calendar-pane.md-pane-open .md-calendar{transform:translateY(0)}.md-dialog-is-showing{max-height:100%}.md-dialog-container{display:flex;justify-content:center;align-items:center;position:absolute;top:0;left:0;width:100%;height:100%;z-index:80;overflow:hidden}md-dialog{opacity:0;min-width:240px;max-width:80%;max-height:80%;position:relative;overflow:auto;box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12);display:flex;flex-direction:column}md-dialog.md-transition-in{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,0) scale(1)}md-dialog.md-transition-out{opacity:0;transition:all .4s cubic-bezier(.25,.8,.25,1);transform:translate(0,100%) scale(.2)}md-dialog>form{display:flex;flex-direction:column;overflow:auto}md-dialog .md-dialog-content{padding:24px}md-dialog md-dialog-content{order:1;flex-direction:column;overflow:auto;-webkit-overflow-scrolling:touch}md-dialog md-dialog-content:not([layout=row])>:first-child:not(.md-subheader){margin-top:0}md-dialog md-dialog-content:focus{outline:0}md-dialog md-dialog-content .md-subheader{margin:0}md-dialog md-dialog-content .md-dialog-content-body{width:100%}md-dialog md-dialog-content .md-prompt-input-container{width:100%;box-sizing:border-box}md-dialog .md-actions,md-dialog md-dialog-actions{display:flex;order:2;box-sizing:border-box;align-items:center;justify-content:flex-end;margin-bottom:0;padding-right:8px;padding-left:16px;min-height:52px;overflow:hidden}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-right:16px}[dir=rtl] md-dialog .md-actions,[dir=rtl] md-dialog md-dialog-actions{padding-left:8px}md-dialog .md-actions .md-button,md-dialog md-dialog-actions .md-button{margin-bottom:8px;margin-left:8px;margin-right:0;margin-top:8px}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-left:0}[dir=rtl] md-dialog .md-actions .md-button,[dir=rtl] md-dialog md-dialog-actions .md-button{margin-right:8px}md-dialog.md-content-overflow .md-actions,md-dialog.md-content-overflow md-dialog-actions{border-top-width:1px;border-top-style:solid}@media screen and (-ms-high-contrast:active){md-dialog{border:1px solid #fff}}@media (max-width:959px){md-dialog.md-dialog-fullscreen{min-height:100%;min-width:100%;border-radius:0}}md-divider{display:block;border-top-width:1px;border-top-style:solid;margin:0}md-divider[md-inset]{margin-left:80px}[dir=rtl] md-divider[md-inset]{margin-left:auto;margin-right:80px}.layout-gt-lg-row>md-divider,.layout-gt-md-row>md-divider,.layout-gt-sm-row>md-divider,.layout-gt-xs-row>md-divider,.layout-lg-row>md-divider,.layout-md-row>md-divider,.layout-row>md-divider,.layout-sm-row>md-divider,.layout-xl-row>md-divider,.layout-xs-row>md-divider{border-top-width:0;border-right-width:1px;border-right-style:solid}md-fab-speed-dial{position:relative;display:flex;align-items:center;z-index:20}md-fab-speed-dial.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-speed-dial.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-speed-dial.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-speed-dial.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-speed-dial:not(.md-hover-full){pointer-events:none}md-fab-speed-dial:not(.md-hover-full) .md-fab-action-item,md-fab-speed-dial:not(.md-hover-full) md-fab-trigger{pointer-events:auto}md-fab-speed-dial:not(.md-hover-full).md-is-open{pointer-events:auto}md-fab-speed-dial ._md-css-variables{z-index:20}md-fab-speed-dial.md-is-open .md-fab-action-item{align-items:center}md-fab-speed-dial md-fab-actions{display:flex;height:auto}md-fab-speed-dial md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-down{flex-direction:column}md-fab-speed-dial.md-down md-fab-trigger{order:1}md-fab-speed-dial.md-down md-fab-actions{flex-direction:column;order:2}md-fab-speed-dial.md-up{flex-direction:column}md-fab-speed-dial.md-up md-fab-trigger{order:2}md-fab-speed-dial.md-up md-fab-actions{flex-direction:column-reverse;order:1}md-fab-speed-dial.md-left{flex-direction:row}md-fab-speed-dial.md-left md-fab-trigger{order:2}md-fab-speed-dial.md-left md-fab-actions{flex-direction:row-reverse;order:1}md-fab-speed-dial.md-left md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-right{flex-direction:row}md-fab-speed-dial.md-right md-fab-trigger{order:1}md-fab-speed-dial.md-right md-fab-actions{flex-direction:row;order:2}md-fab-speed-dial.md-right md-fab-actions .md-fab-action-item{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-speed-dial.md-fling-remove .md-fab-action-item>*,md-fab-speed-dial.md-scale-remove .md-fab-action-item>*{visibility:hidden}md-fab-speed-dial.md-fling .md-fab-action-item{opacity:1}md-fab-speed-dial.md-fling.md-animations-waiting .md-fab-action-item{opacity:0;transition-duration:0s}md-fab-speed-dial.md-scale .md-fab-action-item{transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.1428571429s}md-fab-toolbar{display:block}md-fab-toolbar.md-fab-bottom-right{top:auto;right:20px;bottom:20px;left:auto;position:absolute}md-fab-toolbar.md-fab-bottom-left{top:auto;right:auto;bottom:20px;left:20px;position:absolute}md-fab-toolbar.md-fab-top-right{top:20px;right:20px;bottom:auto;left:auto;position:absolute}md-fab-toolbar.md-fab-top-left{top:20px;right:auto;bottom:auto;left:20px;position:absolute}md-fab-toolbar .md-fab-toolbar-wrapper{display:block;position:relative;overflow:hidden;height:68px}md-fab-toolbar md-fab-trigger{position:absolute;z-index:20}md-fab-toolbar md-fab-trigger button{overflow:visible!important}md-fab-toolbar md-fab-trigger .md-fab-toolbar-background{display:block;position:absolute;z-index:21;opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2)}md-fab-toolbar md-fab-trigger md-icon{position:relative;z-index:22;opacity:1;transition:all .2s ease-in}md-fab-toolbar.md-left md-fab-trigger{right:0}[dir=rtl] md-fab-toolbar.md-left md-fab-trigger{right:auto;left:0}md-fab-toolbar.md-left .md-toolbar-tools{flex-direction:row-reverse}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:.6rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-right:auto;margin-left:.6rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:-.8rem}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-.8rem}md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:8px}[dir=rtl] md-fab-toolbar.md-left .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:8px}md-fab-toolbar.md-right md-fab-trigger{left:0}[dir=rtl] md-fab-toolbar.md-right md-fab-trigger{left:auto;right:0}md-fab-toolbar.md-right .md-toolbar-tools{flex-direction:row}md-fab-toolbar md-toolbar{background-color:transparent!important;pointer-events:none;z-index:23}md-fab-toolbar md-toolbar .md-toolbar-tools{padding:0 20px;margin-top:3px}md-fab-toolbar md-toolbar .md-fab-action-item{opacity:0;transform:scale(0);transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.15s}md-fab-toolbar.md-is-open md-fab-trigger>button{box-shadow:none}md-fab-toolbar.md-is-open md-fab-trigger>button md-icon{opacity:0}md-fab-toolbar.md-is-open .md-fab-action-item{opacity:1;transform:scale(1)}md-grid-list{box-sizing:border-box;display:block;position:relative}md-grid-list md-grid-tile,md-grid-list md-grid-tile-footer,md-grid-list md-grid-tile-header,md-grid-list md-grid-tile>figure{box-sizing:border-box}md-grid-list md-grid-tile{display:block;position:absolute}md-grid-list md-grid-tile figure{display:flex;align-items:center;justify-content:center;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;padding:0;margin:0}md-grid-list md-grid-tile md-grid-tile-footer,md-grid-list md-grid-tile md-grid-tile-header{display:flex;flex-direction:row;align-items:center;height:48px;color:#fff;background:rgba(0,0,0,.18);overflow:hidden;position:absolute;left:0;right:0}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h3,md-grid-list md-grid-tile md-grid-tile-header h4{font-weight:400;margin:0 0 0 16px}md-grid-list md-grid-tile md-grid-tile-footer h3,md-grid-list md-grid-tile md-grid-tile-header h3{font-size:14px}md-grid-list md-grid-tile md-grid-tile-footer h4,md-grid-list md-grid-tile md-grid-tile-header h4{font-size:12px}md-grid-list md-grid-tile md-grid-tile-header{top:0}md-grid-list md-grid-tile md-grid-tile-footer{bottom:0}@media screen and (-ms-high-contrast:active){md-grid-tile{border:1px solid #fff}md-grid-tile-footer{border-top:1px solid #fff}}md-icon{margin:auto;background-repeat:no-repeat no-repeat;display:inline-block;vertical-align:middle;fill:currentColor;height:24px;width:24px;min-height:24px;min-width:24px}md-icon svg{pointer-events:none;display:block}md-icon[md-font-icon]{line-height:24px;width:auto}md-input-container{display:inline-block;position:relative;padding:2px;margin:18px 0;vertical-align:middle}md-input-container:after{content:'';display:table;clear:both}md-input-container.md-block{display:block}md-input-container .md-errors-spacer{float:right;min-height:24px;min-width:1px}[dir=rtl] md-input-container .md-errors-spacer{float:left}md-input-container>md-icon{position:absolute;top:8px;left:2px;right:auto}[dir=rtl] md-input-container>md-icon{left:auto}[dir=rtl] md-input-container>md-icon{right:2px}md-input-container input[type=color],md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=datetime],md-input-container input[type=email],md-input-container input[type=month],md-input-container input[type=number],md-input-container input[type=password],md-input-container input[type=search],md-input-container input[type=tel],md-input-container input[type=text],md-input-container input[type=time],md-input-container input[type=url],md-input-container input[type=week],md-input-container textarea{-moz-appearance:none;-webkit-appearance:none}md-input-container input[type=date],md-input-container input[type=datetime-local],md-input-container input[type=month],md-input-container input[type=time],md-input-container input[type=week]{min-height:26px}md-input-container textarea{resize:none;overflow:hidden}md-input-container textarea.md-input{min-height:26px;-ms-flex-preferred-size:auto}md-input-container textarea[md-no-autogrow]{height:auto;overflow:auto}md-input-container label:not(.md-container-ignore){position:absolute;bottom:100%;left:0;right:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){left:auto}[dir=rtl] md-input-container label:not(.md-container-ignore){right:0}md-input-container label:not(.md-container-ignore).md-required:after{content:' *';font-size:13px;vertical-align:top}md-input-container .md-placeholder,md-input-container label:not(.md-no-float):not(.md-container-ignore){overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:100%;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:3px;padding-right:0;z-index:1;transform:translate3d(0,28px,0) scale(1);transition:transform .4s cubic-bezier(.25,.8,.25,1);max-width:100%;transform-origin:left top}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-left:0}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){padding-right:3px}[dir=rtl] md-input-container .md-placeholder,[dir=rtl] md-input-container label:not(.md-no-float):not(.md-container-ignore){transform-origin:right top}md-input-container .md-placeholder{position:absolute;top:0;opacity:0;transition-property:opacity,transform;transform:translate3d(0,30px,0)}md-input-container.md-input-focused .md-placeholder{opacity:1;transform:translate3d(0,24px,0)}md-input-container.md-input-has-value .md-placeholder{transition:none;opacity:0}md-input-container:not(.md-input-has-value) input:not(:focus),md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-ampm-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-day-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-hour-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-millisecond-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-minute-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-month-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-second-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-text,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-week-field,md-input-container:not(.md-input-has-value) input:not(:focus)::-webkit-datetime-edit-year-field{color:transparent}md-input-container .md-input{order:2;display:block;margin-top:0;background:0 0;padding-top:2px;padding-bottom:1px;padding-left:2px;padding-right:2px;border-width:0 0 1px 0;line-height:26px;height:30px;-ms-flex-preferred-size:26px;border-radius:0;border-style:solid;width:100%;box-sizing:border-box;float:left}[dir=rtl] md-input-container .md-input{float:right}md-input-container .md-input:focus{outline:0}md-input-container .md-input:invalid{outline:0;box-shadow:none}md-input-container .md-input.md-no-flex{flex:none!important}md-input-container .md-char-counter{text-align:right;padding-right:2px;padding-left:0}[dir=rtl] md-input-container .md-char-counter{text-align:left}[dir=rtl] md-input-container .md-char-counter{padding-right:0}[dir=rtl] md-input-container .md-char-counter{padding-left:2px}md-input-container .md-input-messages-animation{position:relative;order:4;overflow:hidden;clear:left}[dir=rtl] md-input-container .md-input-messages-animation{clear:right}md-input-container .md-input-messages-animation.ng-enter .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-char-counter,md-input-container .md-input-message-animation{font-size:12px;line-height:14px;overflow:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2);opacity:1;margin-top:0;padding-top:5px}md-input-container .md-char-counter:not(.md-char-counter),md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:5px;padding-left:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-right:0}[dir=rtl] md-input-container .md-char-counter:not(.md-char-counter),[dir=rtl] md-input-container .md-input-message-animation:not(.md-char-counter){padding-left:5px}md-input-container:not(.md-input-invalid) .md-auto-hide .md-input-message-animation{opacity:0;margin-top:-100px}md-input-container .md-input-message-animation:not(.ng-animate){opacity:0;margin-top:-100px}md-input-container .md-input-message-animation.ng-enter{opacity:0;margin-top:-100px}md-input-container.md-input-focused label:not(.md-no-float),md-input-container.md-input-has-placeholder label:not(.md-no-float),md-input-container.md-input-has-value label:not(.md-no-float){transform:translate3d(0,6px,0) scale(.75);transition:transform cubic-bezier(.25,.8,.25,1) .4s,width cubic-bezier(.25,.8,.25,1) .4s}md-input-container.md-input-has-value label{transition:none}md-input-container .md-input.ng-invalid.ng-dirty,md-input-container.md-input-focused .md-input,md-input-container.md-input-resized .md-input{padding-bottom:0;border-width:0 0 2px 0}[disabled] md-input-container .md-input,md-input-container .md-input[disabled]{background-position:bottom -1px left 0;background-size:4px 1px;background-repeat:repeat-x}md-input-container.md-icon-float{transition:margin-top .4s cubic-bezier(.25,.8,.25,1)}md-input-container.md-icon-float>label{pointer-events:none;position:absolute}md-input-container.md-icon-float>md-icon{top:8px;left:2px;right:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{left:auto}[dir=rtl] md-input-container.md-icon-float>md-icon{right:2px}md-input-container.md-icon-left>label .md-placeholder,md-input-container.md-icon-left>label:not(.md-no-float):not(.md-container-ignore),md-input-container.md-icon-right>label .md-placeholder,md-input-container.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - 36px - 18px)}md-input-container.md-icon-left{padding-left:36px;padding-right:0}[dir=rtl] md-input-container.md-icon-left{padding-left:0}[dir=rtl] md-input-container.md-icon-left{padding-right:36px}md-input-container.md-icon-left>label{left:36px;right:auto}[dir=rtl] md-input-container.md-icon-left>label{left:auto}[dir=rtl] md-input-container.md-icon-left>label{right:36px}md-input-container.md-icon-right{padding-left:0;padding-right:36px}[dir=rtl] md-input-container.md-icon-right{padding-left:36px}[dir=rtl] md-input-container.md-icon-right{padding-right:0}md-input-container.md-icon-right>md-icon:last-of-type{margin:0;right:2px;left:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{right:auto}[dir=rtl] md-input-container.md-icon-right>md-icon:last-of-type{left:2px}md-input-container.md-icon-left.md-icon-right{padding-left:36px;padding-right:36px}md-input-container.md-icon-left.md-icon-right>label .md-placeholder,md-input-container.md-icon-left.md-icon-right>label:not(.md-no-float):not(.md-container-ignore){width:calc(100% - (36px * 2))}.md-resize-wrapper{position:relative}.md-resize-wrapper:after{content:'';display:table;clear:both}.md-resize-handle{position:absolute;bottom:-5px;left:0;height:10px;background:0 0;width:100%;cursor:ns-resize}@media screen and (-ms-high-contrast:active){md-input-container.md-default-theme>md-icon{fill:#fff}}md-list{display:block;padding:8px 0 8px 0}md-list .md-subheader{font-size:14px;font-weight:500;letter-spacing:.010em;line-height:1.2em}md-list.md-dense md-list-item,md-list.md-dense md-list-item .md-list-item-inner{min-height:48px}md-list.md-dense md-list-item .md-list-item-inner::before,md-list.md-dense md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item .md-list-item-inner md-icon:first-child,md-list.md-dense md-list-item md-icon:first-child{width:20px;height:20px}md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:36px}[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list.md-dense md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:36px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-avatar-icon,md-list.md-dense md-list-item .md-list-item-inner .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:20px}[dir=rtl] md-list.md-dense md-list-item .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-avatar-icon,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list.md-dense md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:20px}md-list.md-dense md-list-item .md-avatar,md-list.md-dense md-list-item .md-list-item-inner .md-avatar{flex:none;width:36px;height:36px}md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list.md-dense md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line .md-list-item-text p,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line .md-list-item-text p,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h4,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text p{line-height:1.05;font-size:12px}md-list.md-dense md-list-item.md-2-line .md-list-item-text h3,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line .md-list-item-text h3,md-list.md-dense md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:13px}md-list.md-dense md-list-item.md-2-line,md-list.md-dense md-list-item.md-2-line>.md-no-style{min-height:60px}md-list.md-dense md-list-item.md-2-line::before,md-list.md-dense md-list-item.md-2-line>.md-no-style::before{content:'';min-height:60px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-2-line .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-avatar,md-list.md-dense md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list.md-dense md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list.md-dense md-list-item.md-3-line,md-list.md-dense md-list-item.md-3-line>.md-no-style{min-height:76px}md-list.md-dense md-list-item.md-3-line::before,md-list.md-dense md-list-item.md-3-line>.md-no-style::before{content:'';min-height:76px;visibility:hidden;display:inline-block}md-list.md-dense md-list-item.md-3-line>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>.md-avatar,md-list.md-dense md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list.md-dense md-list-item.md-3-line>md-icon:first-child{margin-top:16px}md-list-item{position:relative}md-list-item.md-proxy-focus.md-focused .md-no-style{transition:background-color .15s linear}md-list-item._md-button-wrap{position:relative}md-list-item._md-button-wrap>div.md-button:first-child{display:flex;align-items:center;justify-content:flex-start;padding:0 16px;margin:0;font-weight:400;text-align:left;border:medium none}[dir=rtl] md-list-item._md-button-wrap>div.md-button:first-child{text-align:right}md-list-item._md-button-wrap>div.md-button:first-child>.md-button:first-child{position:absolute;top:0;left:0;height:100%;margin:0;padding:0}md-list-item._md-button-wrap>div.md-button:first-child .md-list-item-inner{width:100%;min-height:inherit}md-list-item .md-no-style,md-list-item.md-no-proxy{position:relative;padding:0 16px;flex:1 1 auto}md-list-item .md-no-style.md-button,md-list-item.md-no-proxy.md-button{font-size:inherit;height:inherit;text-align:left;text-transform:none;width:100%;white-space:normal;flex-direction:inherit;align-items:inherit;border-radius:0;margin:0}[dir=rtl] md-list-item .md-no-style.md-button,[dir=rtl] md-list-item.md-no-proxy.md-button{text-align:right}md-list-item .md-no-style.md-button>.md-ripple-container,md-list-item.md-no-proxy.md-button>.md-ripple-container{border-radius:0}md-list-item .md-no-style:focus,md-list-item.md-no-proxy:focus{outline:0}md-list-item.md-clickable:hover{cursor:pointer}md-list-item md-divider{position:absolute;bottom:0;left:0;width:100%}[dir=rtl] md-list-item md-divider{left:auto;right:0}md-list-item md-divider[md-inset]{left:72px;width:calc(100% - 72px);margin:0!important}[dir=rtl] md-list-item md-divider[md-inset]{left:auto;right:72px}md-list-item,md-list-item .md-list-item-inner{display:flex;justify-content:flex-start;align-items:center;min-height:48px;height:auto}md-list-item .md-list-item-inner::before,md-list-item::before{content:'';min-height:48px;visibility:hidden;display:inline-block}md-list-item .md-list-item-inner>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon.md-secondary:not(.md-avatar-icon),md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>div.md-primary>md-icon:not(.md-avatar-icon),md-list-item>div.md-secondary>md-icon:not(.md-avatar-icon),md-list-item>md-icon.md-secondary:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){width:24px;margin-top:16px;margin-bottom:12px;box-sizing:content-box}md-list-item .md-list-item-inner md-checkbox.md-secondary,md-list-item .md-list-item-inner>div.md-primary>md-checkbox,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox,md-list-item .md-list-item-inner>md-checkbox,md-list-item md-checkbox.md-secondary,md-list-item>div.md-primary>md-checkbox,md-list-item>div.md-secondary>md-checkbox,md-list-item>md-checkbox{align-self:center}md-list-item .md-list-item-inner md-checkbox.md-secondary .md-label,md-list-item .md-list-item-inner>div.md-primary>md-checkbox .md-label,md-list-item .md-list-item-inner>div.md-secondary>md-checkbox .md-label,md-list-item .md-list-item-inner>md-checkbox .md-label,md-list-item md-checkbox.md-secondary .md-label,md-list-item>div.md-primary>md-checkbox .md-label,md-list-item>div.md-secondary>md-checkbox .md-label,md-list-item>md-checkbox .md-label{display:none}md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:32px}[dir=rtl] md-list-item .md-list-item-inner>md-icon:first-child:not(.md-avatar-icon),[dir=rtl] md-list-item>md-icon:first-child:not(.md-avatar-icon){margin-right:auto;margin-left:32px}md-list-item .md-avatar,md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar,md-list-item .md-list-item-inner .md-avatar-icon{margin-top:8px;margin-bottom:8px;margin-right:16px;border-radius:50%;box-sizing:content-box}[dir=rtl] md-list-item .md-avatar,[dir=rtl] md-list-item .md-avatar-icon,[dir=rtl] md-list-item .md-list-item-inner .md-avatar,[dir=rtl] md-list-item .md-list-item-inner .md-avatar-icon{margin-right:auto;margin-left:16px}md-list-item .md-avatar,md-list-item .md-list-item-inner .md-avatar{flex:none;width:40px;height:40px}md-list-item .md-avatar-icon,md-list-item .md-list-item-inner .md-avatar-icon{padding:8px}md-list-item .md-avatar-icon svg,md-list-item .md-list-item-inner .md-avatar-icon svg{width:24px;height:24px}md-list-item .md-list-item-inner>md-checkbox,md-list-item>md-checkbox{width:24px;margin-left:3px;margin-right:29px;margin-top:16px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-left:29px}[dir=rtl] md-list-item .md-list-item-inner>md-checkbox,[dir=rtl] md-list-item>md-checkbox{margin-right:3px}md-list-item .md-list-item-inner .md-secondary-container,md-list-item .md-secondary-container{display:flex;align-items:center;flex-shrink:0;margin:auto;margin-right:0;margin-left:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-right:auto}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container,[dir=rtl] md-list-item .md-secondary-container{margin-left:0}md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,md-list-item .md-secondary-container .md-button:last-of-type,md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container .md-icon-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-button:last-of-type,[dir=rtl] md-list-item .md-secondary-container .md-icon-button:last-of-type{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox,md-list-item .md-secondary-container md-checkbox{margin-top:0;margin-bottom:0}md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,md-list-item .md-secondary-container md-checkbox:last-child{width:24px;margin-right:0}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-checkbox:last-child,[dir=rtl] md-list-item .md-secondary-container md-checkbox:last-child{margin-right:auto;margin-left:0}md-list-item .md-list-item-inner .md-secondary-container md-switch,md-list-item .md-secondary-container md-switch{margin-top:0;margin-bottom:0;margin-right:-6px}[dir=rtl] md-list-item .md-list-item-inner .md-secondary-container md-switch,[dir=rtl] md-list-item .md-secondary-container md-switch{margin-right:auto;margin-left:-6px}md-list-item .md-list-item-inner>.md-list-item-inner>p,md-list-item .md-list-item-inner>p,md-list-item>.md-list-item-inner>p,md-list-item>p{flex:1 1 auto;margin:0}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style,md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{align-items:flex-start;justify-content:center}md-list-item.md-2-line.md-long-text,md-list-item.md-2-line>.md-no-style.md-long-text,md-list-item.md-3-line.md-long-text,md-list-item.md-3-line>.md-no-style.md-long-text{margin-top:8px;margin-bottom:8px}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text,md-list-item.md-3-line .md-list-item-text,md-list-item.md-3-line>.md-no-style .md-list-item-text{flex:1 1 auto;margin:auto;text-overflow:ellipsis;overflow:hidden}md-list-item.md-2-line .md-list-item-text.md-offset,md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,md-list-item.md-3-line .md-list-item-text.md-offset,md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:56px}[dir=rtl] md-list-item.md-2-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-2-line>.md-no-style .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line .md-list-item-text.md-offset,[dir=rtl] md-list-item.md-3-line>.md-no-style .md-list-item-text.md-offset{margin-left:auto;margin-right:56px}md-list-item.md-2-line .md-list-item-text h3,md-list-item.md-2-line>.md-no-style .md-list-item-text h3,md-list-item.md-3-line .md-list-item-text h3,md-list-item.md-3-line>.md-no-style .md-list-item-text h3{font-size:16px;font-weight:400;letter-spacing:.010em;margin:0;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text h4,md-list-item.md-2-line>.md-no-style .md-list-item-text h4,md-list-item.md-3-line .md-list-item-text h4,md-list-item.md-3-line>.md-no-style .md-list-item-text h4{font-size:14px;letter-spacing:.010em;margin:3px 0 1px 0;font-weight:400;line-height:1.2em;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}md-list-item.md-2-line .md-list-item-text p,md-list-item.md-2-line>.md-no-style .md-list-item-text p,md-list-item.md-3-line .md-list-item-text p,md-list-item.md-3-line>.md-no-style .md-list-item-text p{font-size:14px;font-weight:500;letter-spacing:.010em;margin:0;line-height:1.6em}md-list-item.md-2-line,md-list-item.md-2-line>.md-no-style{height:auto;min-height:72px}md-list-item.md-2-line::before,md-list-item.md-2-line>.md-no-style::before{content:'';min-height:72px;visibility:hidden;display:inline-block}md-list-item.md-2-line .md-avatar-icon,md-list-item.md-2-line>.md-avatar,md-list-item.md-2-line>.md-no-style .md-avatar-icon,md-list-item.md-2-line>.md-no-style>.md-avatar{margin-top:12px}md-list-item.md-2-line>.md-no-style>md-icon:first-child,md-list-item.md-2-line>md-icon:first-child{align-self:flex-start}md-list-item.md-2-line .md-list-item-text,md-list-item.md-2-line>.md-no-style .md-list-item-text{flex:1 1 auto}md-list-item.md-3-line,md-list-item.md-3-line>.md-no-style{height:auto;min-height:88px}md-list-item.md-3-line::before,md-list-item.md-3-line>.md-no-style::before{content:'';min-height:88px;visibility:hidden;display:inline-block}md-list-item.md-3-line>.md-avatar,md-list-item.md-3-line>.md-no-style>.md-avatar,md-list-item.md-3-line>.md-no-style>md-icon:first-child,md-list-item.md-3-line>md-icon:first-child{margin-top:16px}.md-open-menu-container{position:fixed;left:0;top:0;z-index:100;opacity:0;border-radius:2px}.md-open-menu-container md-menu-divider{margin-top:4px;margin-bottom:4px;height:1px;min-height:1px;max-height:1px;width:100%}.md-open-menu-container md-menu-content>*{opacity:0}.md-open-menu-container:not(.md-clickable){pointer-events:none}.md-open-menu-container.md-active{opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}.md-open-menu-container.md-active>md-menu-content>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:.2s;transition-delay:.1s}.md-open-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-menu-content{display:flex;flex-direction:column;padding:8px 0;max-height:304px;overflow-y:auto}md-menu-content.md-dense{max-height:208px}md-menu-content.md-dense md-menu-item{height:32px;min-height:0}md-menu-item{display:flex;flex-direction:row;min-height:48px;height:48px;align-content:center;justify-content:flex-start}md-menu-item>*{width:100%;margin:auto 0;padding-left:16px;padding-right:16px}md-menu-item>a.md-button{padding-top:5px}md-menu-item>.md-button{text-align:left;display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}md-menu-item>.md-button::-moz-focus-inner{padding:0;border:0}[dir=rtl] md-menu-item>.md-button{text-align:right}md-menu-item>.md-button md-icon{margin:auto 16px auto 0}[dir=rtl] md-menu-item>.md-button md-icon{margin:auto 0 auto 16px}md-menu-item>.md-button p{display:inline-block;margin:auto}md-menu-item>.md-button span{margin-top:auto;margin-bottom:auto}md-menu-item>.md-button .md-ripple-container{border-radius:inherit}md-toolbar .md-menu{height:auto;margin:auto;padding:0}@media (max-width:959px){md-menu-content{min-width:112px}md-menu-content[width="3"]{min-width:168px}md-menu-content[width="4"]{min-width:224px}md-menu-content[width="5"]{min-width:280px}md-menu-content[width="6"]{min-width:336px}md-menu-content[width="7"]{min-width:392px}}@media (min-width:960px){md-menu-content{min-width:96px}md-menu-content[width="3"]{min-width:192px}md-menu-content[width="4"]{min-width:256px}md-menu-content[width="5"]{min-width:320px}md-menu-content[width="6"]{min-width:384px}md-menu-content[width="7"]{min-width:448px}}md-toolbar.md-menu-toolbar h2.md-toolbar-tools{line-height:1rem;height:auto;padding:28px;padding-bottom:12px}md-toolbar.md-has-open-menu{position:relative;z-index:100}md-menu-bar{padding:0 20px;display:block;position:relative;z-index:2}md-menu-bar .md-menu{display:inline-block;padding:0;position:relative}md-menu-bar button{font-size:14px;padding:0 10px;margin:0;border:0;background-color:transparent;height:40px}md-menu-bar md-backdrop.md-menu-backdrop{z-index:-2}md-menu-content.md-menu-bar-menu.md-dense{max-height:none;padding:16px 0}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent{position:relative}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{position:absolute;padding:0;width:24px;top:6px;left:24px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{left:auto;right:24px}md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 32px 0 64px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>.md-button{padding:0 64px 0 32px}md-menu-content.md-menu-bar-menu.md-dense .md-button{min-height:0;height:32px;display:flex}md-menu-content.md-menu-bar-menu.md-dense .md-button span{flex-grow:1}md-menu-content.md-menu-bar-menu.md-dense .md-button span.md-alt-text{flex-grow:0;align-self:flex-end;margin:0 8px}md-menu-content.md-menu-bar-menu.md-dense md-menu-divider{margin:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:left}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button,[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense md-menu-item>.md-button{text-align:right}md-menu-content.md-menu-bar-menu.md-dense .md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{position:relative;margin:0;width:100%;text-transform:none;font-weight:400;border-radius:0;padding-left:16px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button{padding-left:0;padding-right:16px}md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{display:block;content:'\25BC';position:absolute;top:0;speak:none;transform:rotate(270deg) scaleY(.45) scaleX(.9);right:28px}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{transform:rotate(90deg) scaleY(.45) scaleX(.9)}[dir=rtl] md-menu-content.md-menu-bar-menu.md-dense .md-menu>.md-button:after{right:auto;left:28px}.md-nav-bar{border-style:solid;border-width:0 0 1px;height:48px;position:relative}._md-nav-bar-list{outline:0;list-style:none;margin:0;padding:0;box-sizing:border-box;display:flex;flex-direction:row}.md-nav-item:first-of-type{margin-left:8px}.md-button._md-nav-button{line-height:24px;margin:0 4px;padding:12px 16px;transition:background-color .35s cubic-bezier(.35,0,.25,1)}.md-button._md-nav-button:focus{outline:0}.md-button._md-nav-button:hover{background-color:inherit}md-nav-ink-bar{bottom:0;height:2px;left:auto;position:absolute;right:auto;background-color:#000}md-nav-ink-bar._md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-nav-ink-bar._md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-nav-extra-content{min-height:48px;padding-right:12px}.md-panel-outer-wrapper{height:100%;left:0;position:absolute;top:0;width:100%}._md-panel-hidden{display:none}._md-panel-fullscreen{border-radius:0;left:0;min-height:100%;min-width:100%;position:fixed;top:0}._md-panel-shown .md-panel{opacity:1;transition:none}.md-panel{opacity:0;position:fixed}.md-panel._md-panel-shown{opacity:1;transition:none}.md-panel._md-panel-animate-enter{opacity:1;transition:all .3s cubic-bezier(0,0,.2,1)}.md-panel._md-panel-animate-leave{opacity:1;transition:all .3s cubic-bezier(.4,0,1,1)}.md-panel._md-panel-animate-fade-out,.md-panel._md-panel-animate-scale-out{opacity:0}.md-panel._md-panel-backdrop{height:100%;position:absolute;width:100%}.md-panel._md-opaque-enter{opacity:.48;transition:opacity .3s cubic-bezier(0,0,.2,1)}.md-panel._md-opaque-leave{transition:opacity .3s cubic-bezier(.4,0,1,1)}@keyframes indeterminate-rotate{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}md-progress-circular{position:relative;display:block}md-progress-circular._md-progress-circular-disabled{visibility:hidden}md-progress-circular.md-mode-indeterminate svg{animation:indeterminate-rotate 2.9s linear infinite}md-progress-circular svg{position:absolute;overflow:visible;top:0;left:0}md-progress-linear{display:block;position:relative;width:100%;height:5px;padding-top:0!important;margin-bottom:0!important}md-progress-linear._md-progress-linear-disabled{visibility:hidden}md-progress-linear .md-container{display:block;position:relative;overflow:hidden;width:100%;height:5px;transform:translate(0,0) scale(1,1)}md-progress-linear .md-container .md-bar{position:absolute;left:0;top:0;bottom:0;width:100%;height:5px}md-progress-linear .md-container .md-dashed:before{content:"";display:none;position:absolute;margin-top:0;height:5px;width:100%;background-color:transparent;background-size:10px 10px!important;background-position:0 -23px}md-progress-linear .md-container .md-bar1,md-progress-linear .md-container .md-bar2{transition:transform .2s linear}md-progress-linear .md-container.md-mode-query .md-bar1{display:none}md-progress-linear .md-container.md-mode-query .md-bar2{transition:all .2s linear;animation:query .8s infinite cubic-bezier(.39,.575,.565,1)}md-progress-linear .md-container.md-mode-determinate .md-bar1{display:none}md-progress-linear .md-container.md-mode-indeterminate .md-bar1{animation:md-progress-linear-indeterminate-scale-1 4s infinite,md-progress-linear-indeterminate-1 4s infinite}md-progress-linear .md-container.md-mode-indeterminate .md-bar2{animation:md-progress-linear-indeterminate-scale-2 4s infinite,md-progress-linear-indeterminate-2 4s infinite}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container{animation:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar1{animation-name:none}md-progress-linear .md-container.ng-hide ._md-progress-linear-disabled md-progress-linear .md-container .md-bar2{animation-name:none}md-progress-linear .md-container.md-mode-buffer{background-color:transparent!important;transition:all .2s linear}md-progress-linear .md-container.md-mode-buffer .md-dashed:before{display:block;animation:buffer 3s infinite linear}@keyframes query{0%{opacity:1;transform:translateX(35%) scale(.3,1)}100%{opacity:0;transform:translateX(-50%) scale(0,1)}}@keyframes buffer{0%{opacity:1;background-position:0 -23px}50%{opacity:0}100%{opacity:1;background-position:-200px -23px}}@keyframes md-progress-linear-indeterminate-scale-1{0%{transform:scaleX(.1);animation-timing-function:linear}36.6%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.334731432,.124819821,.785843996,1)}69.15%{transform:scaleX(.83);animation-timing-function:cubic-bezier(.225732004,0,.233648906,1.3709798)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-1{0%{left:-105.166666667%;animation-timing-function:linear}20%{left:-105.166666667%;animation-timing-function:cubic-bezier(.5,0,.701732,.495818703)}69.15%{left:21.5%;animation-timing-function:cubic-bezier(.302435,.38135197,.55,.956352125)}100%{left:95.4444444444%}}@keyframes md-progress-linear-indeterminate-scale-2{0%{transform:scaleX(.1);animation-timing-function:cubic-bezier(.205028172,.057050836,.57660995,.453970841)}19.15%{transform:scaleX(.57);animation-timing-function:cubic-bezier(.152312994,.196431957,.648373778,1.00431535)}44.15%{transform:scaleX(.91);animation-timing-function:cubic-bezier(.25775882,-.003163357,.211761916,1.38178961)}100%{transform:scaleX(.1)}}@keyframes md-progress-linear-indeterminate-2{0%{left:-54.8888888889%;animation-timing-function:cubic-bezier(.15,0,.5150584,.409684966)}25%{left:-17.25%;animation-timing-function:cubic-bezier(.3103299,.284057684,.8,.733718979)}48.35%{left:29.5%;animation-timing-function:cubic-bezier(.4,.627034903,.6,.902025796)}100%{left:117.388888889%}}md-radio-button{box-sizing:border-box;display:block;margin-bottom:16px;white-space:nowrap;cursor:pointer;position:relative}md-radio-button[disabled]{cursor:default}md-radio-button[disabled] .md-container{cursor:default}md-radio-button .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;cursor:pointer;left:0;right:auto}[dir=rtl] md-radio-button .md-container{left:auto}[dir=rtl] md-radio-button .md-container{right:0}md-radio-button .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-radio-button .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-radio-button.md-align-top-left>div.md-container{top:12px}md-radio-button .md-off{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-style:solid;border-width:2px;border-radius:50%;transition:border-color ease .28s}md-radio-button .md-on{box-sizing:border-box;position:absolute;top:0;left:0;width:20px;height:20px;border-radius:50%;transition:transform ease .28s;transform:scale(0)}md-radio-button.md-checked .md-on{transform:scale(.5)}md-radio-button .md-label{box-sizing:border-box;position:relative;display:inline-block;margin-left:30px;margin-right:0;vertical-align:middle;white-space:normal;pointer-events:none;width:auto}[dir=rtl] md-radio-button .md-label{margin-left:0}[dir=rtl] md-radio-button .md-label{margin-right:30px}md-radio-group.layout-column md-radio-button,md-radio-group.layout-gt-lg-column md-radio-button,md-radio-group.layout-gt-md-column md-radio-button,md-radio-group.layout-gt-sm-column md-radio-button,md-radio-group.layout-gt-xs-column md-radio-button,md-radio-group.layout-lg-column md-radio-button,md-radio-group.layout-md-column md-radio-button,md-radio-group.layout-sm-column md-radio-button,md-radio-group.layout-xl-column md-radio-button,md-radio-group.layout-xs-column md-radio-button{margin-bottom:16px}md-radio-group.layout-gt-lg-row md-radio-button,md-radio-group.layout-gt-md-row md-radio-button,md-radio-group.layout-gt-sm-row md-radio-button,md-radio-group.layout-gt-xs-row md-radio-button,md-radio-group.layout-lg-row md-radio-button,md-radio-group.layout-md-row md-radio-button,md-radio-group.layout-row md-radio-button,md-radio-group.layout-sm-row md-radio-button,md-radio-group.layout-xl-row md-radio-button,md-radio-group.layout-xs-row md-radio-button{margin-top:0;margin-bottom:0;margin-left:0;margin-right:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-left:16px}[dir=rtl] md-radio-group.layout-gt-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-md-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-gt-xs-row md-radio-button,[dir=rtl] md-radio-group.layout-lg-row md-radio-button,[dir=rtl] md-radio-group.layout-md-row md-radio-button,[dir=rtl] md-radio-group.layout-row md-radio-button,[dir=rtl] md-radio-group.layout-sm-row md-radio-button,[dir=rtl] md-radio-group.layout-xl-row md-radio-button,[dir=rtl] md-radio-group.layout-xs-row md-radio-button{margin-right:0}md-radio-group.layout-gt-lg-row md-radio-button:last-of-type,md-radio-group.layout-gt-md-row md-radio-button:last-of-type,md-radio-group.layout-gt-sm-row md-radio-button:last-of-type,md-radio-group.layout-gt-xs-row md-radio-button:last-of-type,md-radio-group.layout-lg-row md-radio-button:last-of-type,md-radio-group.layout-md-row md-radio-button:last-of-type,md-radio-group.layout-row md-radio-button:last-of-type,md-radio-group.layout-sm-row md-radio-button:last-of-type,md-radio-group.layout-xl-row md-radio-button:last-of-type,md-radio-group.layout-xs-row md-radio-button:last-of-type{margin-left:0;margin-right:0}md-radio-group:focus{outline:0}md-radio-group.md-focused .md-checked .md-container:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-radio-group[disabled] md-radio-button{cursor:default}md-radio-group[disabled] md-radio-button .md-container{cursor:default}.md-inline-form md-radio-group{margin:18px 0 19px}.md-inline-form md-radio-group md-radio-button{display:inline-block;height:30px;padding:2px;box-sizing:border-box;margin-top:0;margin-bottom:0}@media screen and (-ms-high-contrast:active){md-radio-button.md-default-theme .md-on{background-color:#fff}}md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transition:transform .4s cubic-bezier(.25,.8,.25,1);transform-origin:left top}[dir=rtl] md-input-container:not([md-no-float]) .md-select-placeholder span:first-child{transform-origin:right top}md-input-container.md-input-focused:not([md-no-float]) .md-select-placeholder span:first-child{transform:translateY(-22px) translateX(-2px) scale(.75)}.md-select-menu-container{position:fixed;left:0;top:0;z-index:90;opacity:0;display:none;transform:translateY(-1px)}.md-select-menu-container:not(.md-clickable){pointer-events:none}.md-select-menu-container md-progress-circular{display:table;margin:24px auto!important}.md-select-menu-container.md-active{display:block;opacity:1}.md-select-menu-container.md-active md-select-menu{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:150ms}.md-select-menu-container.md-active md-select-menu>*{opacity:1;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:150ms;transition-delay:.1s}.md-select-menu-container.md-leave{opacity:0;transition:all .3s cubic-bezier(.55,0,.55,.2);transition-duration:250ms}md-input-container>md-select{margin:0;order:2}md-input-container:not(.md-input-has-value) md-select.ng-required:not(.md-no-asterisk) .md-select-value span:first-child:after,md-input-container:not(.md-input-has-value) md-select[required]:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-input-container.md-input-invalid md-select .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select{display:flex;margin:20px 0 26px 0}md-select.ng-required.ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after,md-select[required].ng-invalid:not(.md-no-asterisk) .md-select-value span:first-child:after{content:' *';font-size:13px;vertical-align:top}md-select[disabled] .md-select-value{background-position:0 bottom;background-size:4px 1px;background-repeat:repeat-x;margin-bottom:-1px}md-select:focus{outline:0}md-select[disabled]:hover{cursor:default}md-select:not([disabled]):hover{cursor:pointer}md-select:not([disabled]).ng-invalid.ng-touched .md-select-value{border-bottom-style:solid;padding-bottom:1px}md-select:not([disabled]):focus .md-select-value{border-bottom-width:2px;border-bottom-style:solid;padding-bottom:0}md-select:not([disabled]):focus.ng-invalid.ng-touched .md-select-value{padding-bottom:0}md-input-container.md-input-has-value .md-select-value>span:not(.md-select-icon){transform:translate3d(0,1px,0)}.md-select-value{display:flex;align-items:center;padding:2px 2px 1px;border-bottom-width:1px;border-bottom-style:solid;background-color:transparent;position:relative;box-sizing:content-box;min-width:64px;min-height:26px;flex-grow:1}.md-select-value>span:not(.md-select-icon){max-width:100%;flex:1 1 auto;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.md-select-value>span:not(.md-select-icon) .md-text{display:inline}.md-select-value .md-select-icon{display:block;align-items:flex-end;text-align:end;width:24px;margin:0 4px;transform:translate3d(0,-2px,0);font-size:1.2rem}.md-select-value .md-select-icon:after{display:block;content:'\25BC';position:relative;top:2px;speak:none;font-size:13px;transform:scaleY(.5) scaleX(1)}.md-select-value.md-select-placeholder{display:flex;order:1;pointer-events:none;-webkit-font-smoothing:antialiased;padding-left:2px;z-index:1}md-select-menu{display:flex;flex-direction:column;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);max-height:256px;min-height:48px;overflow-y:hidden;transform-origin:left top;transform:scale(1)}md-select-menu.md-reverse{flex-direction:column-reverse}md-select-menu:not(.md-overflow) md-content{padding-top:8px;padding-bottom:8px}[dir=rtl] md-select-menu{transform-origin:right top}md-select-menu md-content{min-width:136px;min-height:48px;max-height:256px;overflow-y:auto}md-select-menu>*{opacity:0}md-option{cursor:pointer;position:relative;display:flex;align-items:center;width:auto;transition:background .15s linear;padding:0 16px 0 16px;height:48px}md-option[disabled]{cursor:default}md-option:focus{outline:0}md-option .md-text{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}md-optgroup{display:block}md-optgroup label{display:block;font-size:14px;text-transform:uppercase;padding:16px;font-weight:500}md-optgroup md-option{padding-left:32px;padding-right:32px}@media screen and (-ms-high-contrast:active){.md-select-backdrop{background-color:transparent}md-select-menu{border:1px solid #fff}}md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:40px;padding-right:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-left:16px}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled{padding-right:40px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{position:absolute;top:50%;transform:translateY(-50%);box-sizing:border-box;display:inline-block;width:20px;height:20px;left:0;right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{right:0}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:before{box-sizing:border-box;background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container:after{box-sizing:border-box;content:'';position:absolute;top:-10px;right:-10px;bottom:-10px;left:-10px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-15px;top:-15px;right:-15px;bottom:-15px}md-select-menu[multiple] md-option.md-checkbox-enabled .md-icon{box-sizing:border-box;transition:240ms;position:absolute;top:0;left:0;width:20px;height:20px;border-width:2px;border-style:solid;border-radius:2px}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon{border-color:transparent}md-select-menu[multiple] md-option.md-checkbox-enabled[selected] .md-icon:after{box-sizing:border-box;transform:rotate(45deg);position:absolute;left:4.6666666667px;top:.2222222222px;display:table;width:6.6666666667px;height:13.3333333333px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled[disabled]{cursor:default}md-select-menu[multiple] md-option.md-checkbox-enabled.md-indeterminate .md-icon:after{box-sizing:border-box;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);display:table;width:12px;height:2px;border-width:2px;border-style:solid;border-top:0;border-left:0;content:''}md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:10.6666666667px;margin-right:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-left:auto}[dir=rtl] md-select-menu[multiple] md-option.md-checkbox-enabled .md-container{margin-right:10.6666666667px}md-sidenav{box-sizing:border-box;position:absolute;flex-direction:column;z-index:60;width:320px;max-width:320px;bottom:0;overflow:auto;-webkit-overflow-scrolling:touch}md-sidenav ul{list-style:none}md-sidenav.md-closed{display:none}md-sidenav.md-closed-add,md-sidenav.md-closed-remove{display:flex;transition:.2s ease-in all}md-sidenav.md-closed-add.md-closed-add-active,md-sidenav.md-closed-remove.md-closed-remove-active{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-sidenav.md-locked-open-add,md-sidenav.md-locked-open-remove{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open,md-sidenav.md-locked-open-remove.md-closed,md-sidenav.md-locked-open.md-closed,md-sidenav.md-locked-open.md-closed.md-sidenav-left,md-sidenav.md-locked-open.md-closed.md-sidenav-right{position:static;display:flex;transform:translate3d(0,0,0)}md-sidenav.md-locked-open-remove-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:0!important;min-width:0!important}md-sidenav.md-closed.md-locked-open-add{width:0!important;min-width:0!important;transform:translate3d(0,0,0)}md-sidenav.md-closed.md-locked-open-add-active{transition:width .3s cubic-bezier(.55,0,.55,.2),min-width .3s cubic-bezier(.55,0,.55,.2);width:320px;min-width:320px;transform:translate3d(0,0,0)}.md-sidenav-backdrop.md-locked-open{display:none}.md-sidenav-left,md-sidenav{left:0;top:0;transform:translate3d(0,0,0)}.md-sidenav-left.md-closed,md-sidenav.md-closed{transform:translate3d(-100%,0,0)}.md-sidenav-right{left:100%;top:0;transform:translate(-100%,0)}.md-sidenav-right.md-closed{transform:translate(0,0)}@media (min-width:600px){md-sidenav{max-width:400px}}@media (max-width:456px){md-sidenav{width:calc(100% - 56px);min-width:calc(100% - 56px);max-width:calc(100% - 56px)}}@media screen and (-ms-high-contrast:active){.md-sidenav-left,md-sidenav{border-right:1px solid #fff}.md-sidenav-right{border-left:1px solid #fff}}@keyframes sliderFocusThumb{0%{transform:scale(.7)}30%{transform:scale(1)}100%{transform:scale(.7)}}@keyframes sliderDiscreteFocusThumb{0%{transform:scale(.7)}50%{transform:scale(.8)}100%{transform:scale(0)}}@keyframes sliderDiscreteFocusRing{0%{transform:scale(.7);opacity:0}50%{transform:scale(1);opacity:1}100%{transform:scale(0)}}md-slider{height:48px;min-width:128px;position:relative;margin-left:4px;margin-right:4px;padding:0;display:block;flex-direction:row}md-slider *,md-slider :after{box-sizing:border-box}md-slider .md-slider-wrapper{outline:0;width:100%;height:100%}md-slider .md-slider-content{position:relative}md-slider .md-track-container{width:100%;position:absolute;top:23px;height:2px}md-slider .md-track{position:absolute;left:0;right:0;height:100%}md-slider .md-track-fill{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:width,height}md-slider .md-track-ticks{position:absolute;left:0;right:0;height:100%}md-slider .md-track-ticks canvas{width:100%;height:100%}md-slider .md-thumb-container{position:absolute;left:0;top:50%;transform:translate3d(-50%,-50%,0);transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:left,right,bottom}[dir=rtl] md-slider .md-thumb-container{left:auto;right:0}md-slider .md-thumb{z-index:1;position:absolute;left:-10px;top:14px;width:20px;height:20px;border-radius:20px;transform:scale(.7);transition:all .4s cubic-bezier(.25,.8,.25,1)}[dir=rtl] md-slider .md-thumb{left:auto;right:-10px}md-slider .md-thumb:after{content:'';position:absolute;width:20px;height:20px;border-radius:20px;border-width:3px;border-style:solid;transition:inherit}md-slider .md-sign{display:flex;align-items:center;justify-content:center;position:absolute;left:-14px;top:-17px;width:28px;height:28px;border-radius:28px;transform:scale(.4) translate3d(0,67.5px,0);transition:all .3s cubic-bezier(.35,0,.25,1)}md-slider .md-sign:after{position:absolute;content:'';left:0;border-radius:16px;top:19px;border-left:14px solid transparent;border-right:14px solid transparent;border-top-width:16px;border-top-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-sign:after{left:auto;right:0}md-slider .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider .md-focus-ring{position:absolute;left:-17px;top:7px;width:34px;height:34px;border-radius:34px;transform:scale(.7);opacity:0;transition:all .35s cubic-bezier(.35,0,.25,1)}[dir=rtl] md-slider .md-focus-ring{left:auto;right:-17px}md-slider .md-disabled-thumb{position:absolute;left:-14px;top:10px;width:28px;height:28px;border-radius:28px;transform:scale(.5);border-width:4px;border-style:solid;display:none}[dir=rtl] md-slider .md-disabled-thumb{left:auto;right:-14px}md-slider.md-min .md-sign{opacity:0}md-slider:focus{outline:0}md-slider.md-dragging .md-thumb-container,md-slider.md-dragging .md-track-fill{transition:none}md-slider:not([md-discrete]) .md-sign,md-slider:not([md-discrete]) .md-track-ticks{display:none}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper .md-thumb:hover{transform:scale(.8)}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(1);opacity:1}md-slider:not([md-discrete]):not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderFocusThumb .7s cubic-bezier(.35,0,.25,1)}md-slider:not([md-discrete]):not([disabled]).md-active .md-slider-wrapper .md-thumb{transform:scale(1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-focus-ring{transform:scale(0);animation:sliderDiscreteFocusRing .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb{animation:sliderDiscreteFocusThumb .5s cubic-bezier(.35,0,.25,1)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-thumb,md-slider[md-discrete]:not([disabled]).md-active .md-thumb{transform:scale(0)}md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign,md-slider[md-discrete]:not([disabled]) .md-slider-wrapper.md-focused .md-sign:after,md-slider[md-discrete]:not([disabled]).md-active .md-sign,md-slider[md-discrete]:not([disabled]).md-active .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-discrete][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-discrete][disabled][readonly] .md-sign,md-slider[md-discrete][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[disabled] .md-track-fill{display:none}md-slider[disabled] .md-track-ticks{opacity:0}md-slider[disabled]:not([readonly]) .md-sign{opacity:0}md-slider[disabled] .md-thumb{transform:scale(.5)}md-slider[disabled] .md-disabled-thumb{display:block}md-slider[md-vertical]{flex-direction:column;min-height:128px;min-width:0}md-slider[md-vertical] .md-slider-wrapper{flex:1;padding-top:12px;padding-bottom:12px;width:48px;align-self:center;display:flex;justify-content:center}md-slider[md-vertical] .md-track-container{height:100%;width:2px;top:0;left:calc(50% - (2px / 2))}md-slider[md-vertical] .md-thumb-container{top:auto;margin-bottom:23px;left:calc(50% - 1px);bottom:0}md-slider[md-vertical] .md-thumb-container .md-thumb:after{left:1px}md-slider[md-vertical] .md-thumb-container .md-focus-ring{left:-16px}md-slider[md-vertical] .md-track-fill{bottom:0}md-slider[md-vertical][md-discrete] .md-sign{left:-40px;top:9.5px;transform:scale(.4) translate3d(67.5px,0,0)}md-slider[md-vertical][md-discrete] .md-sign:after{top:9.5px;left:19px;border-top:14px solid transparent;border-right:0;border-bottom:14px solid transparent;border-left-width:16px;border-left-style:solid;opacity:0;transform:translate3d(0,-8px,0);transition:all .2s ease-in-out}md-slider[md-vertical][md-discrete] .md-sign .md-thumb-text{z-index:1;font-size:12px;font-weight:700}md-slider[md-vertical][md-discrete] .md-focused .md-sign:after,md-slider[md-vertical][md-discrete].md-active .md-sign:after,md-slider[md-vertical][md-discrete][disabled][readonly] .md-sign:after{top:0}md-slider[md-vertical][disabled][readonly] .md-thumb{transform:scale(0)}md-slider[md-vertical][disabled][readonly] .md-sign,md-slider[md-vertical][disabled][readonly] .md-sign:after{opacity:1;transform:translate3d(0,0,0) scale(1)}md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:auto;right:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{left:0}[dir=rtl] md-slider[md-invert]:not([md-vertical]) .md-track-fill{right:auto}md-slider[md-invert][md-vertical] .md-track-fill{bottom:auto;top:0}md-slider-container{display:flex;align-items:center;flex-direction:row}md-slider-container>:first-child:not(md-slider),md-slider-container>:last-child:not(md-slider){min-width:25px;max-width:42px;height:25px;transition:all .4s cubic-bezier(.25,.8,.25,1);transition-property:color,max-width}md-slider-container>:first-child:not(md-slider){margin-right:16px}[dir=rtl] md-slider-container>:first-child:not(md-slider){margin-right:auto;margin-left:16px}md-slider-container>:last-child:not(md-slider){margin-left:16px}[dir=rtl] md-slider-container>:last-child:not(md-slider){margin-left:auto;margin-right:16px}md-slider-container[md-vertical]{flex-direction:column}md-slider-container[md-vertical]>:first-child:not(md-slider),md-slider-container[md-vertical]>:last-child:not(md-slider){margin-right:0;margin-left:0;text-align:center}md-slider-container md-input-container input[type=number]{text-align:center;padding-left:15px;height:50px;margin-top:-25px}[dir=rtl] md-slider-container md-input-container input[type=number]{padding-left:0;padding-right:15px}@media screen and (-ms-high-contrast:active){md-slider.md-default-theme .md-track{border-bottom:1px solid #fff}}.md-sticky-clone{z-index:2;top:0;left:0;right:0;position:absolute!important;transform:translate3d(-9999px,-9999px,0)}.md-sticky-clone[sticky-state=active]{transform:translate3d(0,0,0)}.md-sticky-clone[sticky-state=active]:not(.md-sticky-no-effect) .md-subheader-inner{animation:subheaderStickyHoverIn .3s ease-out both}@keyframes subheaderStickyHoverIn{0%{box-shadow:0 0 0 0 transparent}100%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}}@keyframes subheaderStickyHoverOut{0%{box-shadow:0 2px 4px 0 rgba(0,0,0,.16)}100%{box-shadow:0 0 0 0 transparent}}.md-subheader-wrapper:not(.md-sticky-no-effect){transition:.2s ease-out margin}.md-subheader-wrapper:not(.md-sticky-no-effect) .md-subheader{margin:0}.md-subheader-wrapper:not(.md-sticky-no-effect).md-sticky-clone{z-index:2}.md-subheader-wrapper:not(.md-sticky-no-effect)[sticky-state=active]{margin-top:-2px}.md-subheader-wrapper:not(.md-sticky-no-effect):not(.md-sticky-clone)[sticky-prev-state=active] .md-subheader-inner:after{animation:subheaderStickyHoverOut .3s ease-out both}.md-subheader{display:block;font-size:14px;font-weight:500;line-height:1em;margin:0;position:relative}.md-subheader .md-subheader-inner{display:block;padding:16px}.md-subheader .md-subheader-content{display:block;z-index:1;position:relative}.md-inline-form md-switch{margin-top:18px;margin-bottom:19px}md-switch{margin:16px 0;white-space:nowrap;cursor:pointer;outline:0;user-select:none;height:30px;line-height:28px;align-items:center;display:flex;margin-left:inherit;margin-right:16px}[dir=rtl] md-switch{margin-left:16px}[dir=rtl] md-switch{margin-right:inherit}md-switch:last-of-type{margin-left:inherit;margin-right:0}[dir=rtl] md-switch:last-of-type{margin-left:0}[dir=rtl] md-switch:last-of-type{margin-right:inherit}md-switch[disabled]{cursor:default}md-switch[disabled] .md-container{cursor:default}md-switch .md-container{cursor:grab;width:36px;height:24px;position:relative;user-select:none;margin-right:8px;float:left}[dir=rtl] md-switch .md-container{margin-right:auto;margin-left:8px}md-switch:not([disabled]) .md-dragging,md-switch:not([disabled]).md-dragging .md-container{cursor:grabbing}md-switch.md-focused:not([disabled]) .md-thumb:before{left:-8px;top:-8px;right:-8px;bottom:-8px}md-switch.md-focused:not([disabled]):not(.md-checked) .md-thumb:before{background-color:rgba(0,0,0,.12)}md-switch .md-label{border-color:transparent;border-width:0;float:left}md-switch .md-bar{left:1px;width:34px;top:5px;height:14px;border-radius:8px;position:absolute}md-switch .md-thumb-container{top:2px;left:0;width:16px;position:absolute;transform:translate3d(0,0,0);z-index:1}md-switch.md-checked .md-thumb-container{transform:translate3d(100%,0,0)}md-switch .md-thumb{position:absolute;margin:0;left:0;top:0;outline:0;height:20px;width:20px;border-radius:50%;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}md-switch .md-thumb:before{background-color:transparent;border-radius:50%;content:'';position:absolute;display:block;height:auto;left:0;top:0;right:0;bottom:0;transition:all .5s;width:auto}md-switch .md-thumb .md-ripple-container{position:absolute;display:block;width:auto;height:auto;left:-20px;top:-20px;right:-20px;bottom:-20px}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb,md-switch:not(.md-dragging) .md-thumb-container{transition:all 80ms linear;transition-property:transform,background-color}md-switch:not(.md-dragging) .md-bar,md-switch:not(.md-dragging) .md-thumb{transition-delay:50ms}@media screen and (-ms-high-contrast:active){md-switch.md-default-theme .md-bar{background-color:#666}md-switch.md-default-theme.md-checked .md-bar{background-color:#9e9e9e}md-switch.md-default-theme .md-thumb{background-color:#fff}}@keyframes md-tab-content-hide{0%{opacity:1}50%{opacity:1}100%{opacity:0}}md-tab-data{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1;opacity:0}md-tabs{display:block;margin:0;border-radius:2px;overflow:hidden;position:relative;flex-shrink:0}md-tabs:not(.md-no-tab-content):not(.md-dynamic-height){min-height:248px}md-tabs[md-align-tabs=bottom]{padding-bottom:48px}md-tabs[md-align-tabs=bottom] md-tabs-wrapper{position:absolute;bottom:0;left:0;right:0;height:48px;z-index:2}md-tabs[md-align-tabs=bottom] md-tabs-content-wrapper{top:0;bottom:48px}md-tabs.md-dynamic-height md-tabs-content-wrapper{min-height:0;position:relative;top:auto;left:auto;right:auto;bottom:auto;overflow:visible}md-tabs.md-dynamic-height md-tab-content.md-active{position:relative}md-tabs[md-border-bottom] md-tabs-wrapper{border-width:0 0 1px;border-style:solid}md-tabs[md-border-bottom]:not(.md-dynamic-height) md-tabs-content-wrapper{top:49px}md-tabs-wrapper{display:block;position:relative;transform:translate3d(0,0,0)}md-tabs-wrapper md-next-button,md-tabs-wrapper md-prev-button{height:100%;width:32px;position:absolute;top:50%;transform:translateY(-50%);line-height:1em;z-index:2;cursor:pointer;font-size:16px;background:transparent no-repeat center center;transition:all .5s cubic-bezier(.35,0,.25,1)}md-tabs-wrapper md-next-button:focus,md-tabs-wrapper md-prev-button:focus{outline:0}md-tabs-wrapper md-next-button.md-disabled,md-tabs-wrapper md-prev-button.md-disabled{opacity:.25;cursor:default}md-tabs-wrapper md-next-button.ng-leave,md-tabs-wrapper md-prev-button.ng-leave{transition:none}md-tabs-wrapper md-next-button md-icon,md-tabs-wrapper md-prev-button md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0)}md-tabs-wrapper md-prev-button{left:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMjA4IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyIAkJIiBzdHlsZT0iZmlsbDp3aGl0ZTsiLz4gPHJlY3QgZmlsbD0ibm9uZSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjI0Ii8+IDwvZz4gPC9nPiA8ZyBpZD0iR3JpZCIgZGlzcGxheT0ibm9uZSI+IDxnIGRpc3BsYXk9ImlubGluZSI+IDwvZz4gPC9nPiA8L3N2Zz4NCg==)}[dir=rtl] md-tabs-wrapper md-prev-button{left:auto;right:0}md-tabs-wrapper md-next-button{right:0;background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4gPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE3LjEuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPiA8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiPiA8c3ZnIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgeD0iMHB4IiB5PSIwcHgiIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZW5hYmxlLWJhY2tncm91bmQ9Im5ldyAwIDAgMjQgMjQiIHhtbDpzcGFjZT0icHJlc2VydmUiPiA8ZyBpZD0iSGVhZGVyIj4gPGc+IDxyZWN0IHg9Ii02MTgiIHk9Ii0xMzM2IiBmaWxsPSJub25lIiB3aWR0aD0iMTQwMCIgaGVpZ2h0PSIzNjAwIi8+IDwvZz4gPC9nPiA8ZyBpZD0iTGFiZWwiPiA8L2c+IDxnIGlkPSJJY29uIj4gPGc+IDxwb2x5Z29uIHBvaW50cz0iMTAsNiA4LjYsNy40IDEzLjIsMTIgOC42LDE2LjYgMTAsMTggMTYsMTIgCQkiIHN0eWxlPSJmaWxsOndoaXRlOyIvPiA8cmVjdCBmaWxsPSJub25lIiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiLz4gPC9nPiA8L2c+IDxnIGlkPSJHcmlkIiBkaXNwbGF5PSJub25lIj4gPGcgZGlzcGxheT0iaW5saW5lIj4gPC9nPiA8L2c+IDwvc3ZnPg0K)}[dir=rtl] md-tabs-wrapper md-next-button{right:auto;left:0}md-tabs-wrapper md-next-button md-icon{transform:translate3d(-50%,-50%,0) rotate(180deg)}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper{width:100%;display:flex;flex-direction:row}md-tabs-wrapper.md-stretch-tabs md-pagination-wrapper md-tab-item{flex-grow:1}md-tabs-canvas{position:relative;overflow:hidden;display:block;height:48px}md-tabs-canvas:after{content:'';display:table;clear:both}md-tabs-canvas .md-dummy-wrapper{position:absolute;top:0;left:0}[dir=rtl] md-tabs-canvas .md-dummy-wrapper{left:auto;right:0}md-tabs-canvas.md-paginated{margin:0 32px}md-tabs-canvas.md-center-tabs{display:flex;flex-direction:column;text-align:center}md-tabs-canvas.md-center-tabs .md-tab{float:none;display:inline-block}md-pagination-wrapper{height:48px;display:block;transition:transform .5s cubic-bezier(.35,0,.25,1);position:absolute;width:999999px;left:0;transform:translate3d(0,0,0)}md-pagination-wrapper:after{content:'';display:table;clear:both}[dir=rtl] md-pagination-wrapper{left:auto;right:0}md-pagination-wrapper.md-center-tabs{position:relative;width:auto;margin:0 auto}md-tabs-content-wrapper{display:block;position:absolute;top:48px;left:0;right:0;bottom:0;overflow:hidden}md-tab-content{display:block;position:absolute;top:0;left:0;right:0;bottom:0;transition:transform .5s cubic-bezier(.35,0,.25,1);overflow:auto;transform:translate3d(0,0,0)}md-tab-content.md-no-scroll{bottom:auto;overflow:hidden}md-tab-content.md-no-transition,md-tab-content.ng-leave{transition:none}md-tab-content.md-left:not(.md-active){transform:translateX(-100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-left:not(.md-active){transform:translateX(100%)}md-tab-content.md-left:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content.md-right:not(.md-active){transform:translateX(100%);animation:1s md-tab-content-hide;opacity:0}[dir=rtl] md-tab-content.md-right:not(.md-active){transform:translateX(-100%)}md-tab-content.md-right:not(.md-active) *{transition:visibility 0s linear;transition-delay:.5s;visibility:hidden}md-tab-content>div.ng-leave{animation:1s md-tab-content-hide}md-ink-bar{position:absolute;left:auto;right:auto;bottom:0;height:2px}md-ink-bar.md-left{transition:left 125ms cubic-bezier(.35,0,.25,1),right .25s cubic-bezier(.35,0,.25,1)}md-ink-bar.md-right{transition:left .25s cubic-bezier(.35,0,.25,1),right 125ms cubic-bezier(.35,0,.25,1)}md-tab{position:absolute;z-index:-1;left:-9999px}.md-tab{font-size:14px;text-align:center;line-height:24px;padding:12px 24px;transition:background-color .35s cubic-bezier(.35,0,.25,1);cursor:pointer;white-space:nowrap;position:relative;text-transform:uppercase;float:left;font-weight:500;box-sizing:border-box;overflow:hidden;text-overflow:ellipsis}[dir=rtl] .md-tab{float:right}.md-tab.md-focused{box-shadow:none;outline:0}.md-tab.md-active{cursor:default}.md-tab.md-disabled{pointer-events:none;touch-action:pan-y;user-select:none;-webkit-user-drag:none;opacity:.5;cursor:default}.md-tab.ng-leave{transition:none}md-toolbar+md-tabs{border-top-left-radius:0;border-top-right-radius:0}.md-toast-text{padding:0 6px}md-toast{position:absolute;z-index:105;box-sizing:border-box;cursor:default;overflow:hidden;padding:8px;opacity:1;transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast .md-toast-content{display:flex;direction:row;align-items:center;max-height:168px;max-width:100%;min-height:48px;padding:0 18px;box-shadow:0 2px 5px 0 rgba(0,0,0,.26);border-radius:2px;font-size:14px;overflow:hidden;transform:translate3d(0,0,0) rotateZ(0);transition:all .4s cubic-bezier(.25,.8,.25,1);justify-content:flex-start}md-toast .md-toast-content::before{content:'';min-height:48px;visibility:hidden;display:inline-block}[dir=rtl] md-toast .md-toast-content{justify-content:flex-end}md-toast .md-toast-content span{flex:1 1 0%;box-sizing:border-box;min-width:0}md-toast.md-capsule{border-radius:24px}md-toast.md-capsule .md-toast-content{border-radius:24px}md-toast.ng-leave-active .md-toast-content{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-toast.md-swipedown .md-toast-content,md-toast.md-swipeleft .md-toast-content,md-toast.md-swiperight .md-toast-content,md-toast.md-swipeup .md-toast-content{transition:all .4s cubic-bezier(.25,.8,.25,1)}md-toast.ng-enter{opacity:0}md-toast.ng-enter .md-toast-content{transform:translate3d(0,100%,0)}md-toast.ng-enter.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast.ng-enter.ng-enter-active{opacity:1}md-toast.ng-enter.ng-enter-active .md-toast-content{transform:translate3d(0,0,0)}md-toast.ng-leave.ng-leave-active .md-toast-content{opacity:0;transform:translate3d(0,100%,0)}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}md-toast.ng-leave.ng-leave-active.md-top .md-toast-content{transform:translate3d(0,-100%,0)}md-toast .md-action{line-height:19px;margin-left:24px;margin-right:0;cursor:pointer;text-transform:uppercase;float:right}md-toast .md-button{min-width:0;margin-right:0;margin-left:12px}[dir=rtl] md-toast .md-button{margin-right:12px}[dir=rtl] md-toast .md-button{margin-left:0}@media (max-width:959px){md-toast{left:0;right:0;width:100%;max-width:100%;min-width:0;border-radius:0;bottom:0;padding:0}md-toast.ng-leave.ng-leave-active.md-swipeup .md-toast-content{transform:translate3d(0,-50%,0)}md-toast.ng-leave.ng-leave-active.md-swipedown .md-toast-content{transform:translate3d(0,50%,0)}}@media (min-width:960px){md-toast{min-width:304px}md-toast.md-bottom{bottom:0}md-toast.md-left{left:0}md-toast.md-right{right:0}md-toast.md-top{top:0}md-toast._md-start{left:0}[dir=rtl] md-toast._md-start{left:auto;right:0}md-toast._md-end{right:0}[dir=rtl] md-toast._md-end{right:auto;left:0}md-toast.ng-leave.ng-leave-active.md-swipeleft .md-toast-content{transform:translate3d(-50%,0,0)}md-toast.ng-leave.ng-leave-active.md-swiperight .md-toast-content{transform:translate3d(50%,0,0)}}@media (min-width:1920px){md-toast .md-toast-content{max-width:568px}}@media screen and (-ms-high-contrast:active){md-toast{border:1px solid #fff}}.md-toast-animating{overflow:hidden!important}md-toolbar{box-sizing:border-box;display:flex;flex-direction:column;position:relative;z-index:2;font-size:20px;min-height:64px;width:100%}md-toolbar._md-toolbar-transitions{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}md-toolbar.md-whiteframe-z1-add,md-toolbar.md-whiteframe-z1-remove{transition:box-shadow .5s linear}md-toolbar md-toolbar-filler{width:72px}md-toolbar *,md-toolbar :after,md-toolbar :before{box-sizing:border-box}md-toolbar.ng-animate{transition:none}md-toolbar.md-tall{height:128px;min-height:128px;max-height:128px}md-toolbar.md-medium-tall{height:88px;min-height:88px;max-height:88px}md-toolbar.md-medium-tall .md-toolbar-tools{height:48px;min-height:48px;max-height:48px}md-toolbar>.md-indent{margin-left:64px}[dir=rtl] md-toolbar>.md-indent{margin-left:auto;margin-right:64px}md-toolbar~md-content>md-list{padding:0}md-toolbar~md-content>md-list md-list-item:last-child md-divider{display:none}.md-toolbar-tools{font-size:20px;letter-spacing:.005em;box-sizing:border-box;font-weight:400;display:flex;align-items:center;flex-direction:row;width:100%;height:64px;max-height:64px;padding:0 16px;margin:0}.md-toolbar-tools h1,.md-toolbar-tools h2,.md-toolbar-tools h3{font-size:inherit;font-weight:inherit;margin:inherit}.md-toolbar-tools a{color:inherit;text-decoration:none}.md-toolbar-tools .fill-height{display:flex;align-items:center}.md-toolbar-tools .md-button{margin-top:0;margin-bottom:0}.md-toolbar-tools .md-button,.md-toolbar-tools .md-button.md-icon-button md-icon{transition-duration:.5s;transition-timing-function:cubic-bezier(.35,0,.25,1);transition-property:background-color,fill,color}.md-toolbar-tools .md-button.md-icon-button md-icon.ng-animate,.md-toolbar-tools .md-button.ng-animate{transition:none}.md-toolbar-tools>.md-button:first-child{margin-left:-8px}[dir=rtl] .md-toolbar-tools>.md-button:first-child{margin-left:auto;margin-right:-8px}.md-toolbar-tools>.md-button:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>.md-button:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child{margin-right:-8px}[dir=rtl] .md-toolbar-tools>md-menu:last-child{margin-right:auto;margin-left:-8px}.md-toolbar-tools>md-menu:last-child>.md-button{margin-right:0}[dir=rtl] .md-toolbar-tools>md-menu:last-child>.md-button{margin-right:auto;margin-left:0}@media screen and (-ms-high-contrast:active){.md-toolbar-tools{border-bottom:1px solid #fff}}@media (min-width:0) and (max-width:959px) and (orientation:portrait){md-toolbar{min-height:56px}.md-toolbar-tools{height:56px;max-height:56px}}@media (min-width:0) and (max-width:959px) and (orientation:landscape){md-toolbar{min-height:48px}.md-toolbar-tools{height:48px;max-height:48px}}md-tooltip{position:absolute;z-index:100;overflow:hidden;pointer-events:none;border-radius:4px;font-weight:500;font-size:14px}@media (min-width:960px){md-tooltip{font-size:10px}}md-tooltip .md-content{position:relative;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transform-origin:center top;transform:scale(0);opacity:0;height:32px;line-height:32px;padding-left:16px;padding-right:16px}@media (min-width:960px){md-tooltip .md-content{height:22px;line-height:22px;padding-left:8px;padding-right:8px}}md-tooltip .md-content.md-show-add{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s;transform:scale(0);opacity:0}md-tooltip .md-content.md-show,md-tooltip .md-content.md-show-add-active{transform:scale(1);opacity:.9;transform-origin:center top}md-tooltip .md-content.md-show-remove{transition:all .4s cubic-bezier(.25,.8,.25,1);transition-duration:.2s}md-tooltip .md-content.md-show-remove.md-show-remove-active{transform:scale(0);opacity:0}md-tooltip.md-hide{transition:all .3s cubic-bezier(.55,0,.55,.2)}md-tooltip.md-show{transition:all .4s cubic-bezier(.25,.8,.25,1);pointer-events:auto}.md-virtual-repeat-container{box-sizing:border-box;display:block;margin:0;overflow:hidden;padding:0;position:relative}.md-virtual-repeat-container .md-virtual-repeat-scroller{bottom:0;box-sizing:border-box;left:0;margin:0;overflow-x:hidden;padding:0;position:absolute;right:0;top:0;-webkit-overflow-scrolling:touch}.md-virtual-repeat-container .md-virtual-repeat-sizer{box-sizing:border-box;height:1px;display:block;margin:0;padding:0;width:1px}.md-virtual-repeat-container .md-virtual-repeat-offsetter{box-sizing:border-box;left:0;margin:0;padding:0;position:absolute;right:0;top:0}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-scroller{overflow-x:auto;overflow-y:hidden}.md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{bottom:16px;right:auto;white-space:nowrap}[dir=rtl] .md-virtual-repeat-container.md-orient-horizontal .md-virtual-repeat-offsetter{right:auto;left:auto}.md-whiteframe-1dp,.md-whiteframe-z1{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.md-whiteframe-2dp{box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}.md-whiteframe-3dp{box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.md-whiteframe-4dp,.md-whiteframe-z2{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12)}.md-whiteframe-5dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 5px 8px 0 rgba(0,0,0,.14),0 1px 14px 0 rgba(0,0,0,.12)}.md-whiteframe-6dp{box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}.md-whiteframe-7dp,.md-whiteframe-z3{box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.md-whiteframe-8dp{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.md-whiteframe-9dp{box-shadow:0 5px 6px -3px rgba(0,0,0,.2),0 9px 12px 1px rgba(0,0,0,.14),0 3px 16px 2px rgba(0,0,0,.12)}.md-whiteframe-10dp,.md-whiteframe-z4{box-shadow:0 6px 6px -3px rgba(0,0,0,.2),0 10px 14px 1px rgba(0,0,0,.14),0 4px 18px 3px rgba(0,0,0,.12)}.md-whiteframe-11dp{box-shadow:0 6px 7px -4px rgba(0,0,0,.2),0 11px 15px 1px rgba(0,0,0,.14),0 4px 20px 3px rgba(0,0,0,.12)}.md-whiteframe-12dp{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12)}.md-whiteframe-13dp,.md-whiteframe-z5{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 13px 19px 2px rgba(0,0,0,.14),0 5px 24px 4px rgba(0,0,0,.12)}.md-whiteframe-14dp{box-shadow:0 7px 9px -4px rgba(0,0,0,.2),0 14px 21px 2px rgba(0,0,0,.14),0 5px 26px 4px rgba(0,0,0,.12)}.md-whiteframe-15dp{box-shadow:0 8px 9px -5px rgba(0,0,0,.2),0 15px 22px 2px rgba(0,0,0,.14),0 6px 28px 5px rgba(0,0,0,.12)}.md-whiteframe-16dp{box-shadow:0 8px 10px -5px rgba(0,0,0,.2),0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12)}.md-whiteframe-17dp{box-shadow:0 8px 11px -5px rgba(0,0,0,.2),0 17px 26px 2px rgba(0,0,0,.14),0 6px 32px 5px rgba(0,0,0,.12)}.md-whiteframe-18dp{box-shadow:0 9px 11px -5px rgba(0,0,0,.2),0 18px 28px 2px rgba(0,0,0,.14),0 7px 34px 6px rgba(0,0,0,.12)}.md-whiteframe-19dp{box-shadow:0 9px 12px -6px rgba(0,0,0,.2),0 19px 29px 2px rgba(0,0,0,.14),0 7px 36px 6px rgba(0,0,0,.12)}.md-whiteframe-20dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 20px 31px 3px rgba(0,0,0,.14),0 8px 38px 7px rgba(0,0,0,.12)}.md-whiteframe-21dp{box-shadow:0 10px 13px -6px rgba(0,0,0,.2),0 21px 33px 3px rgba(0,0,0,.14),0 8px 40px 7px rgba(0,0,0,.12)}.md-whiteframe-22dp{box-shadow:0 10px 14px -6px rgba(0,0,0,.2),0 22px 35px 3px rgba(0,0,0,.14),0 8px 42px 7px rgba(0,0,0,.12)}.md-whiteframe-23dp{box-shadow:0 11px 14px -7px rgba(0,0,0,.2),0 23px 36px 3px rgba(0,0,0,.14),0 9px 44px 8px rgba(0,0,0,.12)}.md-whiteframe-24dp{box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12)}@media screen and (-ms-high-contrast:active){md-whiteframe{border:1px solid #fff}}@media print{[md-whiteframe],md-whiteframe{background-color:#fff}}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}@-moz-document url-prefix(){.layout-fill{margin:0;width:100%;min-height:100%;height:100%}}.flex-order{order:0}.flex-order--20{order:-20}.flex-order--19{order:-19}.flex-order--18{order:-18}.flex-order--17{order:-17}.flex-order--16{order:-16}.flex-order--15{order:-15}.flex-order--14{order:-14}.flex-order--13{order:-13}.flex-order--12{order:-12}.flex-order--11{order:-11}.flex-order--10{order:-10}.flex-order--9{order:-9}.flex-order--8{order:-8}.flex-order--7{order:-7}.flex-order--6{order:-6}.flex-order--5{order:-5}.flex-order--4{order:-4}.flex-order--3{order:-3}.flex-order--2{order:-2}.flex-order--1{order:-1}.flex-order-0{order:0}.flex-order-1{order:1}.flex-order-2{order:2}.flex-order-3{order:3}.flex-order-4{order:4}.flex-order-5{order:5}.flex-order-6{order:6}.flex-order-7{order:7}.flex-order-8{order:8}.flex-order-9{order:9}.flex-order-10{order:10}.flex-order-11{order:11}.flex-order-12{order:12}.flex-order-13{order:13}.flex-order-14{order:14}.flex-order-15{order:15}.flex-order-16{order:16}.flex-order-17{order:17}.flex-order-18{order:18}.flex-order-19{order:19}.flex-order-20{order:20}.flex-offset-0,.offset-0{margin-left:0}[dir=rtl] .flex-offset-0,[dir=rtl] .offset-0{margin-left:auto;margin-right:0}.flex-offset-5,.offset-5{margin-left:5%}[dir=rtl] .flex-offset-5,[dir=rtl] .offset-5{margin-left:auto;margin-right:5%}.flex-offset-10,.offset-10{margin-left:10%}[dir=rtl] .flex-offset-10,[dir=rtl] .offset-10{margin-left:auto;margin-right:10%}.flex-offset-15,.offset-15{margin-left:15%}[dir=rtl] .flex-offset-15,[dir=rtl] .offset-15{margin-left:auto;margin-right:15%}.flex-offset-20,.offset-20{margin-left:20%}[dir=rtl] .flex-offset-20,[dir=rtl] .offset-20{margin-left:auto;margin-right:20%}.flex-offset-25,.offset-25{margin-left:25%}[dir=rtl] .flex-offset-25,[dir=rtl] .offset-25{margin-left:auto;margin-right:25%}.flex-offset-30,.offset-30{margin-left:30%}[dir=rtl] .flex-offset-30,[dir=rtl] .offset-30{margin-left:auto;margin-right:30%}.flex-offset-35,.offset-35{margin-left:35%}[dir=rtl] .flex-offset-35,[dir=rtl] .offset-35{margin-left:auto;margin-right:35%}.flex-offset-40,.offset-40{margin-left:40%}[dir=rtl] .flex-offset-40,[dir=rtl] .offset-40{margin-left:auto;margin-right:40%}.flex-offset-45,.offset-45{margin-left:45%}[dir=rtl] .flex-offset-45,[dir=rtl] .offset-45{margin-left:auto;margin-right:45%}.flex-offset-50,.offset-50{margin-left:50%}[dir=rtl] .flex-offset-50,[dir=rtl] .offset-50{margin-left:auto;margin-right:50%}.flex-offset-55,.offset-55{margin-left:55%}[dir=rtl] .flex-offset-55,[dir=rtl] .offset-55{margin-left:auto;margin-right:55%}.flex-offset-60,.offset-60{margin-left:60%}[dir=rtl] .flex-offset-60,[dir=rtl] .offset-60{margin-left:auto;margin-right:60%}.flex-offset-65,.offset-65{margin-left:65%}[dir=rtl] .flex-offset-65,[dir=rtl] .offset-65{margin-left:auto;margin-right:65%}.flex-offset-70,.offset-70{margin-left:70%}[dir=rtl] .flex-offset-70,[dir=rtl] .offset-70{margin-left:auto;margin-right:70%}.flex-offset-75,.offset-75{margin-left:75%}[dir=rtl] .flex-offset-75,[dir=rtl] .offset-75{margin-left:auto;margin-right:75%}.flex-offset-80,.offset-80{margin-left:80%}[dir=rtl] .flex-offset-80,[dir=rtl] .offset-80{margin-left:auto;margin-right:80%}.flex-offset-85,.offset-85{margin-left:85%}[dir=rtl] .flex-offset-85,[dir=rtl] .offset-85{margin-left:auto;margin-right:85%}.flex-offset-90,.offset-90{margin-left:90%}[dir=rtl] .flex-offset-90,[dir=rtl] .offset-90{margin-left:auto;margin-right:90%}.flex-offset-95,.offset-95{margin-left:95%}[dir=rtl] .flex-offset-95,[dir=rtl] .offset-95{margin-left:auto;margin-right:95%}.flex-offset-33,.offset-33{margin-left:calc(100% / 3)}.flex-offset-66,.offset-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-66,[dir=rtl] .offset-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align,.layout-align-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-start,.layout-align-start-center,.layout-align-start-end,.layout-align-start-start,.layout-align-start-stretch{justify-content:flex-start}.layout-align-center,.layout-align-center-center,.layout-align-center-end,.layout-align-center-start,.layout-align-center-stretch{justify-content:center}.layout-align-end,.layout-align-end-center,.layout-align-end-end,.layout-align-end-start,.layout-align-end-stretch{justify-content:flex-end}.layout-align-space-around,.layout-align-space-around-center,.layout-align-space-around-end,.layout-align-space-around-start,.layout-align-space-around-stretch{justify-content:space-around}.layout-align-space-between,.layout-align-space-between-center,.layout-align-space-between-end,.layout-align-space-between-start,.layout-align-space-between-stretch{justify-content:space-between}.layout-align-center-start,.layout-align-end-start,.layout-align-space-around-start,.layout-align-space-between-start,.layout-align-start-start{align-items:flex-start;align-content:flex-start}.layout-align-center-center,.layout-align-end-center,.layout-align-space-around-center,.layout-align-space-between-center,.layout-align-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-center-center>*,.layout-align-end-center>*,.layout-align-space-around-center>*,.layout-align-space-between-center>*,.layout-align-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-center-end,.layout-align-end-end,.layout-align-space-around-end,.layout-align-space-between-end,.layout-align-start-end{align-items:flex-end;align-content:flex-end}.layout-align-center-stretch,.layout-align-end-stretch,.layout-align-space-around-stretch,.layout-align-space-between-stretch,.layout-align-start-stretch{align-items:stretch;align-content:stretch}.flex{flex:1;box-sizing:border-box}.flex-grow{flex:1 1 100%;box-sizing:border-box}.flex-initial{flex:0 1 auto;box-sizing:border-box}.flex-auto{flex:1 1 auto;box-sizing:border-box}.flex-none{flex:0 0 auto;box-sizing:border-box}.flex-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-row>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-row>.flex{min-width:0}.layout-column>.flex-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-column>.flex{min-height:0}.layout,.layout-column,.layout-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-column{flex-direction:column}.layout-row{flex-direction:row}.layout-padding-sm>*,.layout-padding>.flex-sm{padding:4px}.layout-padding,.layout-padding-gt-sm,.layout-padding-gt-sm>*,.layout-padding-md,.layout-padding-md>*,.layout-padding>*,.layout-padding>.flex,.layout-padding>.flex-gt-sm,.layout-padding>.flex-md{padding:8px}.layout-padding-gt-lg>*,.layout-padding-gt-md>*,.layout-padding-lg>*,.layout-padding>.flex-gt-lg,.layout-padding>.flex-gt-md,.layout-padding>.flex-lg{padding:16px}.layout-margin-sm>*,.layout-margin>.flex-sm{margin:4px}.layout-margin,.layout-margin-gt-sm,.layout-margin-gt-sm>*,.layout-margin-md,.layout-margin-md>*,.layout-margin>*,.layout-margin>.flex,.layout-margin>.flex-gt-sm,.layout-margin>.flex-md{margin:8px}.layout-margin-gt-lg>*,.layout-margin-gt-md>*,.layout-margin-lg>*,.layout-margin>.flex-gt-lg,.layout-margin>.flex-gt-md,.layout-margin>.flex-lg{margin:16px}.layout-wrap{flex-wrap:wrap}.layout-nowrap{flex-wrap:nowrap}.layout-fill{margin:0;width:100%;min-height:100%;height:100%}@media (max-width:599px){.hide-xs:not(.show-xs):not(.show),.hide:not(.show-xs):not(.show){display:none}.flex-order-xs--20{order:-20}.flex-order-xs--19{order:-19}.flex-order-xs--18{order:-18}.flex-order-xs--17{order:-17}.flex-order-xs--16{order:-16}.flex-order-xs--15{order:-15}.flex-order-xs--14{order:-14}.flex-order-xs--13{order:-13}.flex-order-xs--12{order:-12}.flex-order-xs--11{order:-11}.flex-order-xs--10{order:-10}.flex-order-xs--9{order:-9}.flex-order-xs--8{order:-8}.flex-order-xs--7{order:-7}.flex-order-xs--6{order:-6}.flex-order-xs--5{order:-5}.flex-order-xs--4{order:-4}.flex-order-xs--3{order:-3}.flex-order-xs--2{order:-2}.flex-order-xs--1{order:-1}.flex-order-xs-0{order:0}.flex-order-xs-1{order:1}.flex-order-xs-2{order:2}.flex-order-xs-3{order:3}.flex-order-xs-4{order:4}.flex-order-xs-5{order:5}.flex-order-xs-6{order:6}.flex-order-xs-7{order:7}.flex-order-xs-8{order:8}.flex-order-xs-9{order:9}.flex-order-xs-10{order:10}.flex-order-xs-11{order:11}.flex-order-xs-12{order:12}.flex-order-xs-13{order:13}.flex-order-xs-14{order:14}.flex-order-xs-15{order:15}.flex-order-xs-16{order:16}.flex-order-xs-17{order:17}.flex-order-xs-18{order:18}.flex-order-xs-19{order:19}.flex-order-xs-20{order:20}.flex-offset-xs-0,.offset-xs-0{margin-left:0}[dir=rtl] .flex-offset-xs-0,[dir=rtl] .offset-xs-0{margin-left:auto;margin-right:0}.flex-offset-xs-5,.offset-xs-5{margin-left:5%}[dir=rtl] .flex-offset-xs-5,[dir=rtl] .offset-xs-5{margin-left:auto;margin-right:5%}.flex-offset-xs-10,.offset-xs-10{margin-left:10%}[dir=rtl] .flex-offset-xs-10,[dir=rtl] .offset-xs-10{margin-left:auto;margin-right:10%}.flex-offset-xs-15,.offset-xs-15{margin-left:15%}[dir=rtl] .flex-offset-xs-15,[dir=rtl] .offset-xs-15{margin-left:auto;margin-right:15%}.flex-offset-xs-20,.offset-xs-20{margin-left:20%}[dir=rtl] .flex-offset-xs-20,[dir=rtl] .offset-xs-20{margin-left:auto;margin-right:20%}.flex-offset-xs-25,.offset-xs-25{margin-left:25%}[dir=rtl] .flex-offset-xs-25,[dir=rtl] .offset-xs-25{margin-left:auto;margin-right:25%}.flex-offset-xs-30,.offset-xs-30{margin-left:30%}[dir=rtl] .flex-offset-xs-30,[dir=rtl] .offset-xs-30{margin-left:auto;margin-right:30%}.flex-offset-xs-35,.offset-xs-35{margin-left:35%}[dir=rtl] .flex-offset-xs-35,[dir=rtl] .offset-xs-35{margin-left:auto;margin-right:35%}.flex-offset-xs-40,.offset-xs-40{margin-left:40%}[dir=rtl] .flex-offset-xs-40,[dir=rtl] .offset-xs-40{margin-left:auto;margin-right:40%}.flex-offset-xs-45,.offset-xs-45{margin-left:45%}[dir=rtl] .flex-offset-xs-45,[dir=rtl] .offset-xs-45{margin-left:auto;margin-right:45%}.flex-offset-xs-50,.offset-xs-50{margin-left:50%}[dir=rtl] .flex-offset-xs-50,[dir=rtl] .offset-xs-50{margin-left:auto;margin-right:50%}.flex-offset-xs-55,.offset-xs-55{margin-left:55%}[dir=rtl] .flex-offset-xs-55,[dir=rtl] .offset-xs-55{margin-left:auto;margin-right:55%}.flex-offset-xs-60,.offset-xs-60{margin-left:60%}[dir=rtl] .flex-offset-xs-60,[dir=rtl] .offset-xs-60{margin-left:auto;margin-right:60%}.flex-offset-xs-65,.offset-xs-65{margin-left:65%}[dir=rtl] .flex-offset-xs-65,[dir=rtl] .offset-xs-65{margin-left:auto;margin-right:65%}.flex-offset-xs-70,.offset-xs-70{margin-left:70%}[dir=rtl] .flex-offset-xs-70,[dir=rtl] .offset-xs-70{margin-left:auto;margin-right:70%}.flex-offset-xs-75,.offset-xs-75{margin-left:75%}[dir=rtl] .flex-offset-xs-75,[dir=rtl] .offset-xs-75{margin-left:auto;margin-right:75%}.flex-offset-xs-80,.offset-xs-80{margin-left:80%}[dir=rtl] .flex-offset-xs-80,[dir=rtl] .offset-xs-80{margin-left:auto;margin-right:80%}.flex-offset-xs-85,.offset-xs-85{margin-left:85%}[dir=rtl] .flex-offset-xs-85,[dir=rtl] .offset-xs-85{margin-left:auto;margin-right:85%}.flex-offset-xs-90,.offset-xs-90{margin-left:90%}[dir=rtl] .flex-offset-xs-90,[dir=rtl] .offset-xs-90{margin-left:auto;margin-right:90%}.flex-offset-xs-95,.offset-xs-95{margin-left:95%}[dir=rtl] .flex-offset-xs-95,[dir=rtl] .offset-xs-95{margin-left:auto;margin-right:95%}.flex-offset-xs-33,.offset-xs-33{margin-left:calc(100% / 3)}.flex-offset-xs-66,.offset-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xs-66,[dir=rtl] .offset-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xs,.layout-align-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xs-start,.layout-align-xs-start-center,.layout-align-xs-start-end,.layout-align-xs-start-start,.layout-align-xs-start-stretch{justify-content:flex-start}.layout-align-xs-center,.layout-align-xs-center-center,.layout-align-xs-center-end,.layout-align-xs-center-start,.layout-align-xs-center-stretch{justify-content:center}.layout-align-xs-end,.layout-align-xs-end-center,.layout-align-xs-end-end,.layout-align-xs-end-start,.layout-align-xs-end-stretch{justify-content:flex-end}.layout-align-xs-space-around,.layout-align-xs-space-around-center,.layout-align-xs-space-around-end,.layout-align-xs-space-around-start,.layout-align-xs-space-around-stretch{justify-content:space-around}.layout-align-xs-space-between,.layout-align-xs-space-between-center,.layout-align-xs-space-between-end,.layout-align-xs-space-between-start,.layout-align-xs-space-between-stretch{justify-content:space-between}.layout-align-xs-center-start,.layout-align-xs-end-start,.layout-align-xs-space-around-start,.layout-align-xs-space-between-start,.layout-align-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xs-center-center,.layout-align-xs-end-center,.layout-align-xs-space-around-center,.layout-align-xs-space-between-center,.layout-align-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xs-center-center>*,.layout-align-xs-end-center>*,.layout-align-xs-space-around-center>*,.layout-align-xs-space-between-center>*,.layout-align-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xs-center-end,.layout-align-xs-end-end,.layout-align-xs-space-around-end,.layout-align-xs-space-between-end,.layout-align-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xs-center-stretch,.layout-align-xs-end-stretch,.layout-align-xs-space-around-stretch,.layout-align-xs-space-between-stretch,.layout-align-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-xs{flex:1;box-sizing:border-box}.flex-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xs-column>.flex-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-row>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-column>.flex-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xs-row>.flex{min-width:0}.layout-xs-column>.flex-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xs-column>.flex-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xs-column>.flex{min-height:0}.layout-xs,.layout-xs-column,.layout-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xs-column{flex-direction:column}.layout-xs-row{flex-direction:row}}@media (min-width:600px){.flex-order-gt-xs--20{order:-20}.flex-order-gt-xs--19{order:-19}.flex-order-gt-xs--18{order:-18}.flex-order-gt-xs--17{order:-17}.flex-order-gt-xs--16{order:-16}.flex-order-gt-xs--15{order:-15}.flex-order-gt-xs--14{order:-14}.flex-order-gt-xs--13{order:-13}.flex-order-gt-xs--12{order:-12}.flex-order-gt-xs--11{order:-11}.flex-order-gt-xs--10{order:-10}.flex-order-gt-xs--9{order:-9}.flex-order-gt-xs--8{order:-8}.flex-order-gt-xs--7{order:-7}.flex-order-gt-xs--6{order:-6}.flex-order-gt-xs--5{order:-5}.flex-order-gt-xs--4{order:-4}.flex-order-gt-xs--3{order:-3}.flex-order-gt-xs--2{order:-2}.flex-order-gt-xs--1{order:-1}.flex-order-gt-xs-0{order:0}.flex-order-gt-xs-1{order:1}.flex-order-gt-xs-2{order:2}.flex-order-gt-xs-3{order:3}.flex-order-gt-xs-4{order:4}.flex-order-gt-xs-5{order:5}.flex-order-gt-xs-6{order:6}.flex-order-gt-xs-7{order:7}.flex-order-gt-xs-8{order:8}.flex-order-gt-xs-9{order:9}.flex-order-gt-xs-10{order:10}.flex-order-gt-xs-11{order:11}.flex-order-gt-xs-12{order:12}.flex-order-gt-xs-13{order:13}.flex-order-gt-xs-14{order:14}.flex-order-gt-xs-15{order:15}.flex-order-gt-xs-16{order:16}.flex-order-gt-xs-17{order:17}.flex-order-gt-xs-18{order:18}.flex-order-gt-xs-19{order:19}.flex-order-gt-xs-20{order:20}.flex-offset-gt-xs-0,.offset-gt-xs-0{margin-left:0}[dir=rtl] .flex-offset-gt-xs-0,[dir=rtl] .offset-gt-xs-0{margin-left:auto;margin-right:0}.flex-offset-gt-xs-5,.offset-gt-xs-5{margin-left:5%}[dir=rtl] .flex-offset-gt-xs-5,[dir=rtl] .offset-gt-xs-5{margin-left:auto;margin-right:5%}.flex-offset-gt-xs-10,.offset-gt-xs-10{margin-left:10%}[dir=rtl] .flex-offset-gt-xs-10,[dir=rtl] .offset-gt-xs-10{margin-left:auto;margin-right:10%}.flex-offset-gt-xs-15,.offset-gt-xs-15{margin-left:15%}[dir=rtl] .flex-offset-gt-xs-15,[dir=rtl] .offset-gt-xs-15{margin-left:auto;margin-right:15%}.flex-offset-gt-xs-20,.offset-gt-xs-20{margin-left:20%}[dir=rtl] .flex-offset-gt-xs-20,[dir=rtl] .offset-gt-xs-20{margin-left:auto;margin-right:20%}.flex-offset-gt-xs-25,.offset-gt-xs-25{margin-left:25%}[dir=rtl] .flex-offset-gt-xs-25,[dir=rtl] .offset-gt-xs-25{margin-left:auto;margin-right:25%}.flex-offset-gt-xs-30,.offset-gt-xs-30{margin-left:30%}[dir=rtl] .flex-offset-gt-xs-30,[dir=rtl] .offset-gt-xs-30{margin-left:auto;margin-right:30%}.flex-offset-gt-xs-35,.offset-gt-xs-35{margin-left:35%}[dir=rtl] .flex-offset-gt-xs-35,[dir=rtl] .offset-gt-xs-35{margin-left:auto;margin-right:35%}.flex-offset-gt-xs-40,.offset-gt-xs-40{margin-left:40%}[dir=rtl] .flex-offset-gt-xs-40,[dir=rtl] .offset-gt-xs-40{margin-left:auto;margin-right:40%}.flex-offset-gt-xs-45,.offset-gt-xs-45{margin-left:45%}[dir=rtl] .flex-offset-gt-xs-45,[dir=rtl] .offset-gt-xs-45{margin-left:auto;margin-right:45%}.flex-offset-gt-xs-50,.offset-gt-xs-50{margin-left:50%}[dir=rtl] .flex-offset-gt-xs-50,[dir=rtl] .offset-gt-xs-50{margin-left:auto;margin-right:50%}.flex-offset-gt-xs-55,.offset-gt-xs-55{margin-left:55%}[dir=rtl] .flex-offset-gt-xs-55,[dir=rtl] .offset-gt-xs-55{margin-left:auto;margin-right:55%}.flex-offset-gt-xs-60,.offset-gt-xs-60{margin-left:60%}[dir=rtl] .flex-offset-gt-xs-60,[dir=rtl] .offset-gt-xs-60{margin-left:auto;margin-right:60%}.flex-offset-gt-xs-65,.offset-gt-xs-65{margin-left:65%}[dir=rtl] .flex-offset-gt-xs-65,[dir=rtl] .offset-gt-xs-65{margin-left:auto;margin-right:65%}.flex-offset-gt-xs-70,.offset-gt-xs-70{margin-left:70%}[dir=rtl] .flex-offset-gt-xs-70,[dir=rtl] .offset-gt-xs-70{margin-left:auto;margin-right:70%}.flex-offset-gt-xs-75,.offset-gt-xs-75{margin-left:75%}[dir=rtl] .flex-offset-gt-xs-75,[dir=rtl] .offset-gt-xs-75{margin-left:auto;margin-right:75%}.flex-offset-gt-xs-80,.offset-gt-xs-80{margin-left:80%}[dir=rtl] .flex-offset-gt-xs-80,[dir=rtl] .offset-gt-xs-80{margin-left:auto;margin-right:80%}.flex-offset-gt-xs-85,.offset-gt-xs-85{margin-left:85%}[dir=rtl] .flex-offset-gt-xs-85,[dir=rtl] .offset-gt-xs-85{margin-left:auto;margin-right:85%}.flex-offset-gt-xs-90,.offset-gt-xs-90{margin-left:90%}[dir=rtl] .flex-offset-gt-xs-90,[dir=rtl] .offset-gt-xs-90{margin-left:auto;margin-right:90%}.flex-offset-gt-xs-95,.offset-gt-xs-95{margin-left:95%}[dir=rtl] .flex-offset-gt-xs-95,[dir=rtl] .offset-gt-xs-95{margin-left:auto;margin-right:95%}.flex-offset-gt-xs-33,.offset-gt-xs-33{margin-left:calc(100% / 3)}.flex-offset-gt-xs-66,.offset-gt-xs-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-xs-66,[dir=rtl] .offset-gt-xs-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-xs,.layout-align-gt-xs-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-xs-start,.layout-align-gt-xs-start-center,.layout-align-gt-xs-start-end,.layout-align-gt-xs-start-start,.layout-align-gt-xs-start-stretch{justify-content:flex-start}.layout-align-gt-xs-center,.layout-align-gt-xs-center-center,.layout-align-gt-xs-center-end,.layout-align-gt-xs-center-start,.layout-align-gt-xs-center-stretch{justify-content:center}.layout-align-gt-xs-end,.layout-align-gt-xs-end-center,.layout-align-gt-xs-end-end,.layout-align-gt-xs-end-start,.layout-align-gt-xs-end-stretch{justify-content:flex-end}.layout-align-gt-xs-space-around,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-around-stretch{justify-content:space-around}.layout-align-gt-xs-space-between,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-space-between-stretch{justify-content:space-between}.layout-align-gt-xs-center-start,.layout-align-gt-xs-end-start,.layout-align-gt-xs-space-around-start,.layout-align-gt-xs-space-between-start,.layout-align-gt-xs-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-xs-center-center,.layout-align-gt-xs-end-center,.layout-align-gt-xs-space-around-center,.layout-align-gt-xs-space-between-center,.layout-align-gt-xs-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-xs-center-center>*,.layout-align-gt-xs-end-center>*,.layout-align-gt-xs-space-around-center>*,.layout-align-gt-xs-space-between-center>*,.layout-align-gt-xs-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-xs-center-end,.layout-align-gt-xs-end-end,.layout-align-gt-xs-space-around-end,.layout-align-gt-xs-space-between-end,.layout-align-gt-xs-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-xs-center-stretch,.layout-align-gt-xs-end-stretch,.layout-align-gt-xs-space-around-stretch,.layout-align-gt-xs-space-between-stretch,.layout-align-gt-xs-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-xs{flex:1;box-sizing:border-box}.flex-gt-xs-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-xs-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-xs-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-xs-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-xs-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-xs-column>.flex-gt-xs-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex-gt-xs-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-xs-row>.flex{min-width:0}.layout-gt-xs-column>.flex-gt-xs-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-xs-column>.flex-gt-xs-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-xs-column>.flex{min-height:0}.layout-gt-xs,.layout-gt-xs-column,.layout-gt-xs-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-xs-column{flex-direction:column}.layout-gt-xs-row{flex-direction:row}}@media (min-width:600px) and (max-width:959px){.hide-gt-xs:not(.show-gt-xs):not(.show-sm):not(.show),.hide:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.hide-sm:not(.show-gt-xs):not(.show-sm):not(.show){display:none}.flex-order-sm--20{order:-20}.flex-order-sm--19{order:-19}.flex-order-sm--18{order:-18}.flex-order-sm--17{order:-17}.flex-order-sm--16{order:-16}.flex-order-sm--15{order:-15}.flex-order-sm--14{order:-14}.flex-order-sm--13{order:-13}.flex-order-sm--12{order:-12}.flex-order-sm--11{order:-11}.flex-order-sm--10{order:-10}.flex-order-sm--9{order:-9}.flex-order-sm--8{order:-8}.flex-order-sm--7{order:-7}.flex-order-sm--6{order:-6}.flex-order-sm--5{order:-5}.flex-order-sm--4{order:-4}.flex-order-sm--3{order:-3}.flex-order-sm--2{order:-2}.flex-order-sm--1{order:-1}.flex-order-sm-0{order:0}.flex-order-sm-1{order:1}.flex-order-sm-2{order:2}.flex-order-sm-3{order:3}.flex-order-sm-4{order:4}.flex-order-sm-5{order:5}.flex-order-sm-6{order:6}.flex-order-sm-7{order:7}.flex-order-sm-8{order:8}.flex-order-sm-9{order:9}.flex-order-sm-10{order:10}.flex-order-sm-11{order:11}.flex-order-sm-12{order:12}.flex-order-sm-13{order:13}.flex-order-sm-14{order:14}.flex-order-sm-15{order:15}.flex-order-sm-16{order:16}.flex-order-sm-17{order:17}.flex-order-sm-18{order:18}.flex-order-sm-19{order:19}.flex-order-sm-20{order:20}.flex-offset-sm-0,.offset-sm-0{margin-left:0}[dir=rtl] .flex-offset-sm-0,[dir=rtl] .offset-sm-0{margin-left:auto;margin-right:0}.flex-offset-sm-5,.offset-sm-5{margin-left:5%}[dir=rtl] .flex-offset-sm-5,[dir=rtl] .offset-sm-5{margin-left:auto;margin-right:5%}.flex-offset-sm-10,.offset-sm-10{margin-left:10%}[dir=rtl] .flex-offset-sm-10,[dir=rtl] .offset-sm-10{margin-left:auto;margin-right:10%}.flex-offset-sm-15,.offset-sm-15{margin-left:15%}[dir=rtl] .flex-offset-sm-15,[dir=rtl] .offset-sm-15{margin-left:auto;margin-right:15%}.flex-offset-sm-20,.offset-sm-20{margin-left:20%}[dir=rtl] .flex-offset-sm-20,[dir=rtl] .offset-sm-20{margin-left:auto;margin-right:20%}.flex-offset-sm-25,.offset-sm-25{margin-left:25%}[dir=rtl] .flex-offset-sm-25,[dir=rtl] .offset-sm-25{margin-left:auto;margin-right:25%}.flex-offset-sm-30,.offset-sm-30{margin-left:30%}[dir=rtl] .flex-offset-sm-30,[dir=rtl] .offset-sm-30{margin-left:auto;margin-right:30%}.flex-offset-sm-35,.offset-sm-35{margin-left:35%}[dir=rtl] .flex-offset-sm-35,[dir=rtl] .offset-sm-35{margin-left:auto;margin-right:35%}.flex-offset-sm-40,.offset-sm-40{margin-left:40%}[dir=rtl] .flex-offset-sm-40,[dir=rtl] .offset-sm-40{margin-left:auto;margin-right:40%}.flex-offset-sm-45,.offset-sm-45{margin-left:45%}[dir=rtl] .flex-offset-sm-45,[dir=rtl] .offset-sm-45{margin-left:auto;margin-right:45%}.flex-offset-sm-50,.offset-sm-50{margin-left:50%}[dir=rtl] .flex-offset-sm-50,[dir=rtl] .offset-sm-50{margin-left:auto;margin-right:50%}.flex-offset-sm-55,.offset-sm-55{margin-left:55%}[dir=rtl] .flex-offset-sm-55,[dir=rtl] .offset-sm-55{margin-left:auto;margin-right:55%}.flex-offset-sm-60,.offset-sm-60{margin-left:60%}[dir=rtl] .flex-offset-sm-60,[dir=rtl] .offset-sm-60{margin-left:auto;margin-right:60%}.flex-offset-sm-65,.offset-sm-65{margin-left:65%}[dir=rtl] .flex-offset-sm-65,[dir=rtl] .offset-sm-65{margin-left:auto;margin-right:65%}.flex-offset-sm-70,.offset-sm-70{margin-left:70%}[dir=rtl] .flex-offset-sm-70,[dir=rtl] .offset-sm-70{margin-left:auto;margin-right:70%}.flex-offset-sm-75,.offset-sm-75{margin-left:75%}[dir=rtl] .flex-offset-sm-75,[dir=rtl] .offset-sm-75{margin-left:auto;margin-right:75%}.flex-offset-sm-80,.offset-sm-80{margin-left:80%}[dir=rtl] .flex-offset-sm-80,[dir=rtl] .offset-sm-80{margin-left:auto;margin-right:80%}.flex-offset-sm-85,.offset-sm-85{margin-left:85%}[dir=rtl] .flex-offset-sm-85,[dir=rtl] .offset-sm-85{margin-left:auto;margin-right:85%}.flex-offset-sm-90,.offset-sm-90{margin-left:90%}[dir=rtl] .flex-offset-sm-90,[dir=rtl] .offset-sm-90{margin-left:auto;margin-right:90%}.flex-offset-sm-95,.offset-sm-95{margin-left:95%}[dir=rtl] .flex-offset-sm-95,[dir=rtl] .offset-sm-95{margin-left:auto;margin-right:95%}.flex-offset-sm-33,.offset-sm-33{margin-left:calc(100% / 3)}.flex-offset-sm-66,.offset-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-sm-66,[dir=rtl] .offset-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-sm,.layout-align-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-sm-start,.layout-align-sm-start-center,.layout-align-sm-start-end,.layout-align-sm-start-start,.layout-align-sm-start-stretch{justify-content:flex-start}.layout-align-sm-center,.layout-align-sm-center-center,.layout-align-sm-center-end,.layout-align-sm-center-start,.layout-align-sm-center-stretch{justify-content:center}.layout-align-sm-end,.layout-align-sm-end-center,.layout-align-sm-end-end,.layout-align-sm-end-start,.layout-align-sm-end-stretch{justify-content:flex-end}.layout-align-sm-space-around,.layout-align-sm-space-around-center,.layout-align-sm-space-around-end,.layout-align-sm-space-around-start,.layout-align-sm-space-around-stretch{justify-content:space-around}.layout-align-sm-space-between,.layout-align-sm-space-between-center,.layout-align-sm-space-between-end,.layout-align-sm-space-between-start,.layout-align-sm-space-between-stretch{justify-content:space-between}.layout-align-sm-center-start,.layout-align-sm-end-start,.layout-align-sm-space-around-start,.layout-align-sm-space-between-start,.layout-align-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-sm-center-center,.layout-align-sm-end-center,.layout-align-sm-space-around-center,.layout-align-sm-space-between-center,.layout-align-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-sm-center-center>*,.layout-align-sm-end-center>*,.layout-align-sm-space-around-center>*,.layout-align-sm-space-between-center>*,.layout-align-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-sm-center-end,.layout-align-sm-end-end,.layout-align-sm-space-around-end,.layout-align-sm-space-between-end,.layout-align-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-sm-center-stretch,.layout-align-sm-end-stretch,.layout-align-sm-space-around-stretch,.layout-align-sm-space-between-stretch,.layout-align-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-sm{flex:1;box-sizing:border-box}.flex-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-sm-column>.flex-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-row>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-column>.flex-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-sm-row>.flex{min-width:0}.layout-sm-column>.flex-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-sm-column>.flex-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-sm-column>.flex{min-height:0}.layout-sm,.layout-sm-column,.layout-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-sm-column{flex-direction:column}.layout-sm-row{flex-direction:row}}@media (min-width:960px){.flex-order-gt-sm--20{order:-20}.flex-order-gt-sm--19{order:-19}.flex-order-gt-sm--18{order:-18}.flex-order-gt-sm--17{order:-17}.flex-order-gt-sm--16{order:-16}.flex-order-gt-sm--15{order:-15}.flex-order-gt-sm--14{order:-14}.flex-order-gt-sm--13{order:-13}.flex-order-gt-sm--12{order:-12}.flex-order-gt-sm--11{order:-11}.flex-order-gt-sm--10{order:-10}.flex-order-gt-sm--9{order:-9}.flex-order-gt-sm--8{order:-8}.flex-order-gt-sm--7{order:-7}.flex-order-gt-sm--6{order:-6}.flex-order-gt-sm--5{order:-5}.flex-order-gt-sm--4{order:-4}.flex-order-gt-sm--3{order:-3}.flex-order-gt-sm--2{order:-2}.flex-order-gt-sm--1{order:-1}.flex-order-gt-sm-0{order:0}.flex-order-gt-sm-1{order:1}.flex-order-gt-sm-2{order:2}.flex-order-gt-sm-3{order:3}.flex-order-gt-sm-4{order:4}.flex-order-gt-sm-5{order:5}.flex-order-gt-sm-6{order:6}.flex-order-gt-sm-7{order:7}.flex-order-gt-sm-8{order:8}.flex-order-gt-sm-9{order:9}.flex-order-gt-sm-10{order:10}.flex-order-gt-sm-11{order:11}.flex-order-gt-sm-12{order:12}.flex-order-gt-sm-13{order:13}.flex-order-gt-sm-14{order:14}.flex-order-gt-sm-15{order:15}.flex-order-gt-sm-16{order:16}.flex-order-gt-sm-17{order:17}.flex-order-gt-sm-18{order:18}.flex-order-gt-sm-19{order:19}.flex-order-gt-sm-20{order:20}.flex-offset-gt-sm-0,.offset-gt-sm-0{margin-left:0}[dir=rtl] .flex-offset-gt-sm-0,[dir=rtl] .offset-gt-sm-0{margin-left:auto;margin-right:0}.flex-offset-gt-sm-5,.offset-gt-sm-5{margin-left:5%}[dir=rtl] .flex-offset-gt-sm-5,[dir=rtl] .offset-gt-sm-5{margin-left:auto;margin-right:5%}.flex-offset-gt-sm-10,.offset-gt-sm-10{margin-left:10%}[dir=rtl] .flex-offset-gt-sm-10,[dir=rtl] .offset-gt-sm-10{margin-left:auto;margin-right:10%}.flex-offset-gt-sm-15,.offset-gt-sm-15{margin-left:15%}[dir=rtl] .flex-offset-gt-sm-15,[dir=rtl] .offset-gt-sm-15{margin-left:auto;margin-right:15%}.flex-offset-gt-sm-20,.offset-gt-sm-20{margin-left:20%}[dir=rtl] .flex-offset-gt-sm-20,[dir=rtl] .offset-gt-sm-20{margin-left:auto;margin-right:20%}.flex-offset-gt-sm-25,.offset-gt-sm-25{margin-left:25%}[dir=rtl] .flex-offset-gt-sm-25,[dir=rtl] .offset-gt-sm-25{margin-left:auto;margin-right:25%}.flex-offset-gt-sm-30,.offset-gt-sm-30{margin-left:30%}[dir=rtl] .flex-offset-gt-sm-30,[dir=rtl] .offset-gt-sm-30{margin-left:auto;margin-right:30%}.flex-offset-gt-sm-35,.offset-gt-sm-35{margin-left:35%}[dir=rtl] .flex-offset-gt-sm-35,[dir=rtl] .offset-gt-sm-35{margin-left:auto;margin-right:35%}.flex-offset-gt-sm-40,.offset-gt-sm-40{margin-left:40%}[dir=rtl] .flex-offset-gt-sm-40,[dir=rtl] .offset-gt-sm-40{margin-left:auto;margin-right:40%}.flex-offset-gt-sm-45,.offset-gt-sm-45{margin-left:45%}[dir=rtl] .flex-offset-gt-sm-45,[dir=rtl] .offset-gt-sm-45{margin-left:auto;margin-right:45%}.flex-offset-gt-sm-50,.offset-gt-sm-50{margin-left:50%}[dir=rtl] .flex-offset-gt-sm-50,[dir=rtl] .offset-gt-sm-50{margin-left:auto;margin-right:50%}.flex-offset-gt-sm-55,.offset-gt-sm-55{margin-left:55%}[dir=rtl] .flex-offset-gt-sm-55,[dir=rtl] .offset-gt-sm-55{margin-left:auto;margin-right:55%}.flex-offset-gt-sm-60,.offset-gt-sm-60{margin-left:60%}[dir=rtl] .flex-offset-gt-sm-60,[dir=rtl] .offset-gt-sm-60{margin-left:auto;margin-right:60%}.flex-offset-gt-sm-65,.offset-gt-sm-65{margin-left:65%}[dir=rtl] .flex-offset-gt-sm-65,[dir=rtl] .offset-gt-sm-65{margin-left:auto;margin-right:65%}.flex-offset-gt-sm-70,.offset-gt-sm-70{margin-left:70%}[dir=rtl] .flex-offset-gt-sm-70,[dir=rtl] .offset-gt-sm-70{margin-left:auto;margin-right:70%}.flex-offset-gt-sm-75,.offset-gt-sm-75{margin-left:75%}[dir=rtl] .flex-offset-gt-sm-75,[dir=rtl] .offset-gt-sm-75{margin-left:auto;margin-right:75%}.flex-offset-gt-sm-80,.offset-gt-sm-80{margin-left:80%}[dir=rtl] .flex-offset-gt-sm-80,[dir=rtl] .offset-gt-sm-80{margin-left:auto;margin-right:80%}.flex-offset-gt-sm-85,.offset-gt-sm-85{margin-left:85%}[dir=rtl] .flex-offset-gt-sm-85,[dir=rtl] .offset-gt-sm-85{margin-left:auto;margin-right:85%}.flex-offset-gt-sm-90,.offset-gt-sm-90{margin-left:90%}[dir=rtl] .flex-offset-gt-sm-90,[dir=rtl] .offset-gt-sm-90{margin-left:auto;margin-right:90%}.flex-offset-gt-sm-95,.offset-gt-sm-95{margin-left:95%}[dir=rtl] .flex-offset-gt-sm-95,[dir=rtl] .offset-gt-sm-95{margin-left:auto;margin-right:95%}.flex-offset-gt-sm-33,.offset-gt-sm-33{margin-left:calc(100% / 3)}.flex-offset-gt-sm-66,.offset-gt-sm-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-sm-66,[dir=rtl] .offset-gt-sm-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-sm,.layout-align-gt-sm-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-sm-start,.layout-align-gt-sm-start-center,.layout-align-gt-sm-start-end,.layout-align-gt-sm-start-start,.layout-align-gt-sm-start-stretch{justify-content:flex-start}.layout-align-gt-sm-center,.layout-align-gt-sm-center-center,.layout-align-gt-sm-center-end,.layout-align-gt-sm-center-start,.layout-align-gt-sm-center-stretch{justify-content:center}.layout-align-gt-sm-end,.layout-align-gt-sm-end-center,.layout-align-gt-sm-end-end,.layout-align-gt-sm-end-start,.layout-align-gt-sm-end-stretch{justify-content:flex-end}.layout-align-gt-sm-space-around,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-around-stretch{justify-content:space-around}.layout-align-gt-sm-space-between,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-space-between-stretch{justify-content:space-between}.layout-align-gt-sm-center-start,.layout-align-gt-sm-end-start,.layout-align-gt-sm-space-around-start,.layout-align-gt-sm-space-between-start,.layout-align-gt-sm-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-sm-center-center,.layout-align-gt-sm-end-center,.layout-align-gt-sm-space-around-center,.layout-align-gt-sm-space-between-center,.layout-align-gt-sm-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-sm-center-center>*,.layout-align-gt-sm-end-center>*,.layout-align-gt-sm-space-around-center>*,.layout-align-gt-sm-space-between-center>*,.layout-align-gt-sm-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-sm-center-end,.layout-align-gt-sm-end-end,.layout-align-gt-sm-space-around-end,.layout-align-gt-sm-space-between-end,.layout-align-gt-sm-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-sm-center-stretch,.layout-align-gt-sm-end-stretch,.layout-align-gt-sm-space-around-stretch,.layout-align-gt-sm-space-between-stretch,.layout-align-gt-sm-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-sm{flex:1;box-sizing:border-box}.flex-gt-sm-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-sm-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-sm-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-sm-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-sm-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-sm-column>.flex-gt-sm-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex-gt-sm-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-sm-row>.flex{min-width:0}.layout-gt-sm-column>.flex-gt-sm-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-sm-column>.flex-gt-sm-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-sm-column>.flex{min-height:0}.layout-gt-sm,.layout-gt-sm-column,.layout-gt-sm-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-sm-column{flex-direction:column}.layout-gt-sm-row{flex-direction:row}}@media (min-width:960px) and (max-width:1279px){.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-md):not(.show){display:none}.hide-md:not(.show-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-md--20{order:-20}.flex-order-md--19{order:-19}.flex-order-md--18{order:-18}.flex-order-md--17{order:-17}.flex-order-md--16{order:-16}.flex-order-md--15{order:-15}.flex-order-md--14{order:-14}.flex-order-md--13{order:-13}.flex-order-md--12{order:-12}.flex-order-md--11{order:-11}.flex-order-md--10{order:-10}.flex-order-md--9{order:-9}.flex-order-md--8{order:-8}.flex-order-md--7{order:-7}.flex-order-md--6{order:-6}.flex-order-md--5{order:-5}.flex-order-md--4{order:-4}.flex-order-md--3{order:-3}.flex-order-md--2{order:-2}.flex-order-md--1{order:-1}.flex-order-md-0{order:0}.flex-order-md-1{order:1}.flex-order-md-2{order:2}.flex-order-md-3{order:3}.flex-order-md-4{order:4}.flex-order-md-5{order:5}.flex-order-md-6{order:6}.flex-order-md-7{order:7}.flex-order-md-8{order:8}.flex-order-md-9{order:9}.flex-order-md-10{order:10}.flex-order-md-11{order:11}.flex-order-md-12{order:12}.flex-order-md-13{order:13}.flex-order-md-14{order:14}.flex-order-md-15{order:15}.flex-order-md-16{order:16}.flex-order-md-17{order:17}.flex-order-md-18{order:18}.flex-order-md-19{order:19}.flex-order-md-20{order:20}.flex-offset-md-0,.offset-md-0{margin-left:0}[dir=rtl] .flex-offset-md-0,[dir=rtl] .offset-md-0{margin-left:auto;margin-right:0}.flex-offset-md-5,.offset-md-5{margin-left:5%}[dir=rtl] .flex-offset-md-5,[dir=rtl] .offset-md-5{margin-left:auto;margin-right:5%}.flex-offset-md-10,.offset-md-10{margin-left:10%}[dir=rtl] .flex-offset-md-10,[dir=rtl] .offset-md-10{margin-left:auto;margin-right:10%}.flex-offset-md-15,.offset-md-15{margin-left:15%}[dir=rtl] .flex-offset-md-15,[dir=rtl] .offset-md-15{margin-left:auto;margin-right:15%}.flex-offset-md-20,.offset-md-20{margin-left:20%}[dir=rtl] .flex-offset-md-20,[dir=rtl] .offset-md-20{margin-left:auto;margin-right:20%}.flex-offset-md-25,.offset-md-25{margin-left:25%}[dir=rtl] .flex-offset-md-25,[dir=rtl] .offset-md-25{margin-left:auto;margin-right:25%}.flex-offset-md-30,.offset-md-30{margin-left:30%}[dir=rtl] .flex-offset-md-30,[dir=rtl] .offset-md-30{margin-left:auto;margin-right:30%}.flex-offset-md-35,.offset-md-35{margin-left:35%}[dir=rtl] .flex-offset-md-35,[dir=rtl] .offset-md-35{margin-left:auto;margin-right:35%}.flex-offset-md-40,.offset-md-40{margin-left:40%}[dir=rtl] .flex-offset-md-40,[dir=rtl] .offset-md-40{margin-left:auto;margin-right:40%}.flex-offset-md-45,.offset-md-45{margin-left:45%}[dir=rtl] .flex-offset-md-45,[dir=rtl] .offset-md-45{margin-left:auto;margin-right:45%}.flex-offset-md-50,.offset-md-50{margin-left:50%}[dir=rtl] .flex-offset-md-50,[dir=rtl] .offset-md-50{margin-left:auto;margin-right:50%}.flex-offset-md-55,.offset-md-55{margin-left:55%}[dir=rtl] .flex-offset-md-55,[dir=rtl] .offset-md-55{margin-left:auto;margin-right:55%}.flex-offset-md-60,.offset-md-60{margin-left:60%}[dir=rtl] .flex-offset-md-60,[dir=rtl] .offset-md-60{margin-left:auto;margin-right:60%}.flex-offset-md-65,.offset-md-65{margin-left:65%}[dir=rtl] .flex-offset-md-65,[dir=rtl] .offset-md-65{margin-left:auto;margin-right:65%}.flex-offset-md-70,.offset-md-70{margin-left:70%}[dir=rtl] .flex-offset-md-70,[dir=rtl] .offset-md-70{margin-left:auto;margin-right:70%}.flex-offset-md-75,.offset-md-75{margin-left:75%}[dir=rtl] .flex-offset-md-75,[dir=rtl] .offset-md-75{margin-left:auto;margin-right:75%}.flex-offset-md-80,.offset-md-80{margin-left:80%}[dir=rtl] .flex-offset-md-80,[dir=rtl] .offset-md-80{margin-left:auto;margin-right:80%}.flex-offset-md-85,.offset-md-85{margin-left:85%}[dir=rtl] .flex-offset-md-85,[dir=rtl] .offset-md-85{margin-left:auto;margin-right:85%}.flex-offset-md-90,.offset-md-90{margin-left:90%}[dir=rtl] .flex-offset-md-90,[dir=rtl] .offset-md-90{margin-left:auto;margin-right:90%}.flex-offset-md-95,.offset-md-95{margin-left:95%}[dir=rtl] .flex-offset-md-95,[dir=rtl] .offset-md-95{margin-left:auto;margin-right:95%}.flex-offset-md-33,.offset-md-33{margin-left:calc(100% / 3)}.flex-offset-md-66,.offset-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-md-66,[dir=rtl] .offset-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-md,.layout-align-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-md-start,.layout-align-md-start-center,.layout-align-md-start-end,.layout-align-md-start-start,.layout-align-md-start-stretch{justify-content:flex-start}.layout-align-md-center,.layout-align-md-center-center,.layout-align-md-center-end,.layout-align-md-center-start,.layout-align-md-center-stretch{justify-content:center}.layout-align-md-end,.layout-align-md-end-center,.layout-align-md-end-end,.layout-align-md-end-start,.layout-align-md-end-stretch{justify-content:flex-end}.layout-align-md-space-around,.layout-align-md-space-around-center,.layout-align-md-space-around-end,.layout-align-md-space-around-start,.layout-align-md-space-around-stretch{justify-content:space-around}.layout-align-md-space-between,.layout-align-md-space-between-center,.layout-align-md-space-between-end,.layout-align-md-space-between-start,.layout-align-md-space-between-stretch{justify-content:space-between}.layout-align-md-center-start,.layout-align-md-end-start,.layout-align-md-space-around-start,.layout-align-md-space-between-start,.layout-align-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-md-center-center,.layout-align-md-end-center,.layout-align-md-space-around-center,.layout-align-md-space-between-center,.layout-align-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-md-center-center>*,.layout-align-md-end-center>*,.layout-align-md-space-around-center>*,.layout-align-md-space-between-center>*,.layout-align-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-md-center-end,.layout-align-md-end-end,.layout-align-md-space-around-end,.layout-align-md-space-between-end,.layout-align-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-md-center-stretch,.layout-align-md-end-stretch,.layout-align-md-space-around-stretch,.layout-align-md-space-between-stretch,.layout-align-md-start-stretch{align-items:stretch;align-content:stretch}.flex-md{flex:1;box-sizing:border-box}.flex-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-md-none{flex:0 0 auto;box-sizing:border-box}.flex-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-md-column>.flex-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-row>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-column>.flex-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-md-row>.flex{min-width:0}.layout-md-column>.flex-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-md-column>.flex-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-md-column>.flex{min-height:0}.layout-md,.layout-md-column,.layout-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-md-column{flex-direction:column}.layout-md-row{flex-direction:row}}@media (min-width:1280px){.flex-order-gt-md--20{order:-20}.flex-order-gt-md--19{order:-19}.flex-order-gt-md--18{order:-18}.flex-order-gt-md--17{order:-17}.flex-order-gt-md--16{order:-16}.flex-order-gt-md--15{order:-15}.flex-order-gt-md--14{order:-14}.flex-order-gt-md--13{order:-13}.flex-order-gt-md--12{order:-12}.flex-order-gt-md--11{order:-11}.flex-order-gt-md--10{order:-10}.flex-order-gt-md--9{order:-9}.flex-order-gt-md--8{order:-8}.flex-order-gt-md--7{order:-7}.flex-order-gt-md--6{order:-6}.flex-order-gt-md--5{order:-5}.flex-order-gt-md--4{order:-4}.flex-order-gt-md--3{order:-3}.flex-order-gt-md--2{order:-2}.flex-order-gt-md--1{order:-1}.flex-order-gt-md-0{order:0}.flex-order-gt-md-1{order:1}.flex-order-gt-md-2{order:2}.flex-order-gt-md-3{order:3}.flex-order-gt-md-4{order:4}.flex-order-gt-md-5{order:5}.flex-order-gt-md-6{order:6}.flex-order-gt-md-7{order:7}.flex-order-gt-md-8{order:8}.flex-order-gt-md-9{order:9}.flex-order-gt-md-10{order:10}.flex-order-gt-md-11{order:11}.flex-order-gt-md-12{order:12}.flex-order-gt-md-13{order:13}.flex-order-gt-md-14{order:14}.flex-order-gt-md-15{order:15}.flex-order-gt-md-16{order:16}.flex-order-gt-md-17{order:17}.flex-order-gt-md-18{order:18}.flex-order-gt-md-19{order:19}.flex-order-gt-md-20{order:20}.flex-offset-gt-md-0,.offset-gt-md-0{margin-left:0}[dir=rtl] .flex-offset-gt-md-0,[dir=rtl] .offset-gt-md-0{margin-left:auto;margin-right:0}.flex-offset-gt-md-5,.offset-gt-md-5{margin-left:5%}[dir=rtl] .flex-offset-gt-md-5,[dir=rtl] .offset-gt-md-5{margin-left:auto;margin-right:5%}.flex-offset-gt-md-10,.offset-gt-md-10{margin-left:10%}[dir=rtl] .flex-offset-gt-md-10,[dir=rtl] .offset-gt-md-10{margin-left:auto;margin-right:10%}.flex-offset-gt-md-15,.offset-gt-md-15{margin-left:15%}[dir=rtl] .flex-offset-gt-md-15,[dir=rtl] .offset-gt-md-15{margin-left:auto;margin-right:15%}.flex-offset-gt-md-20,.offset-gt-md-20{margin-left:20%}[dir=rtl] .flex-offset-gt-md-20,[dir=rtl] .offset-gt-md-20{margin-left:auto;margin-right:20%}.flex-offset-gt-md-25,.offset-gt-md-25{margin-left:25%}[dir=rtl] .flex-offset-gt-md-25,[dir=rtl] .offset-gt-md-25{margin-left:auto;margin-right:25%}.flex-offset-gt-md-30,.offset-gt-md-30{margin-left:30%}[dir=rtl] .flex-offset-gt-md-30,[dir=rtl] .offset-gt-md-30{margin-left:auto;margin-right:30%}.flex-offset-gt-md-35,.offset-gt-md-35{margin-left:35%}[dir=rtl] .flex-offset-gt-md-35,[dir=rtl] .offset-gt-md-35{margin-left:auto;margin-right:35%}.flex-offset-gt-md-40,.offset-gt-md-40{margin-left:40%}[dir=rtl] .flex-offset-gt-md-40,[dir=rtl] .offset-gt-md-40{margin-left:auto;margin-right:40%}.flex-offset-gt-md-45,.offset-gt-md-45{margin-left:45%}[dir=rtl] .flex-offset-gt-md-45,[dir=rtl] .offset-gt-md-45{margin-left:auto;margin-right:45%}.flex-offset-gt-md-50,.offset-gt-md-50{margin-left:50%}[dir=rtl] .flex-offset-gt-md-50,[dir=rtl] .offset-gt-md-50{margin-left:auto;margin-right:50%}.flex-offset-gt-md-55,.offset-gt-md-55{margin-left:55%}[dir=rtl] .flex-offset-gt-md-55,[dir=rtl] .offset-gt-md-55{margin-left:auto;margin-right:55%}.flex-offset-gt-md-60,.offset-gt-md-60{margin-left:60%}[dir=rtl] .flex-offset-gt-md-60,[dir=rtl] .offset-gt-md-60{margin-left:auto;margin-right:60%}.flex-offset-gt-md-65,.offset-gt-md-65{margin-left:65%}[dir=rtl] .flex-offset-gt-md-65,[dir=rtl] .offset-gt-md-65{margin-left:auto;margin-right:65%}.flex-offset-gt-md-70,.offset-gt-md-70{margin-left:70%}[dir=rtl] .flex-offset-gt-md-70,[dir=rtl] .offset-gt-md-70{margin-left:auto;margin-right:70%}.flex-offset-gt-md-75,.offset-gt-md-75{margin-left:75%}[dir=rtl] .flex-offset-gt-md-75,[dir=rtl] .offset-gt-md-75{margin-left:auto;margin-right:75%}.flex-offset-gt-md-80,.offset-gt-md-80{margin-left:80%}[dir=rtl] .flex-offset-gt-md-80,[dir=rtl] .offset-gt-md-80{margin-left:auto;margin-right:80%}.flex-offset-gt-md-85,.offset-gt-md-85{margin-left:85%}[dir=rtl] .flex-offset-gt-md-85,[dir=rtl] .offset-gt-md-85{margin-left:auto;margin-right:85%}.flex-offset-gt-md-90,.offset-gt-md-90{margin-left:90%}[dir=rtl] .flex-offset-gt-md-90,[dir=rtl] .offset-gt-md-90{margin-left:auto;margin-right:90%}.flex-offset-gt-md-95,.offset-gt-md-95{margin-left:95%}[dir=rtl] .flex-offset-gt-md-95,[dir=rtl] .offset-gt-md-95{margin-left:auto;margin-right:95%}.flex-offset-gt-md-33,.offset-gt-md-33{margin-left:calc(100% / 3)}.flex-offset-gt-md-66,.offset-gt-md-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-md-66,[dir=rtl] .offset-gt-md-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-md,.layout-align-gt-md-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-md-start,.layout-align-gt-md-start-center,.layout-align-gt-md-start-end,.layout-align-gt-md-start-start,.layout-align-gt-md-start-stretch{justify-content:flex-start}.layout-align-gt-md-center,.layout-align-gt-md-center-center,.layout-align-gt-md-center-end,.layout-align-gt-md-center-start,.layout-align-gt-md-center-stretch{justify-content:center}.layout-align-gt-md-end,.layout-align-gt-md-end-center,.layout-align-gt-md-end-end,.layout-align-gt-md-end-start,.layout-align-gt-md-end-stretch{justify-content:flex-end}.layout-align-gt-md-space-around,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-around-stretch{justify-content:space-around}.layout-align-gt-md-space-between,.layout-align-gt-md-space-between-center,.layout-align-gt-md-space-between-end,.layout-align-gt-md-space-between-start,.layout-align-gt-md-space-between-stretch{justify-content:space-between}.layout-align-gt-md-center-start,.layout-align-gt-md-end-start,.layout-align-gt-md-space-around-start,.layout-align-gt-md-space-between-start,.layout-align-gt-md-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-md-center-center,.layout-align-gt-md-end-center,.layout-align-gt-md-space-around-center,.layout-align-gt-md-space-between-center,.layout-align-gt-md-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-md-center-center>*,.layout-align-gt-md-end-center>*,.layout-align-gt-md-space-around-center>*,.layout-align-gt-md-space-between-center>*,.layout-align-gt-md-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-md-center-end,.layout-align-gt-md-end-end,.layout-align-gt-md-space-around-end,.layout-align-gt-md-space-between-end,.layout-align-gt-md-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-md-center-stretch,.layout-align-gt-md-end-stretch,.layout-align-gt-md-space-around-stretch,.layout-align-gt-md-space-between-stretch,.layout-align-gt-md-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-md{flex:1;box-sizing:border-box}.flex-gt-md-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-md-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-md-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-md-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-md-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-md-column>.flex-gt-md-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex-gt-md-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-md-row>.flex{min-width:0}.layout-gt-md-column>.flex-gt-md-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-md-column>.flex-gt-md-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-md-column>.flex{min-height:0}.layout-gt-md,.layout-gt-md-column,.layout-gt-md-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-md-column{flex-direction:column}.layout-gt-md-row{flex-direction:row}}@media (min-width:1280px) and (max-width:1919px){.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-lg):not(.show){display:none}.hide-lg:not(.show-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}.flex-order-lg--20{order:-20}.flex-order-lg--19{order:-19}.flex-order-lg--18{order:-18}.flex-order-lg--17{order:-17}.flex-order-lg--16{order:-16}.flex-order-lg--15{order:-15}.flex-order-lg--14{order:-14}.flex-order-lg--13{order:-13}.flex-order-lg--12{order:-12}.flex-order-lg--11{order:-11}.flex-order-lg--10{order:-10}.flex-order-lg--9{order:-9}.flex-order-lg--8{order:-8}.flex-order-lg--7{order:-7}.flex-order-lg--6{order:-6}.flex-order-lg--5{order:-5}.flex-order-lg--4{order:-4}.flex-order-lg--3{order:-3}.flex-order-lg--2{order:-2}.flex-order-lg--1{order:-1}.flex-order-lg-0{order:0}.flex-order-lg-1{order:1}.flex-order-lg-2{order:2}.flex-order-lg-3{order:3}.flex-order-lg-4{order:4}.flex-order-lg-5{order:5}.flex-order-lg-6{order:6}.flex-order-lg-7{order:7}.flex-order-lg-8{order:8}.flex-order-lg-9{order:9}.flex-order-lg-10{order:10}.flex-order-lg-11{order:11}.flex-order-lg-12{order:12}.flex-order-lg-13{order:13}.flex-order-lg-14{order:14}.flex-order-lg-15{order:15}.flex-order-lg-16{order:16}.flex-order-lg-17{order:17}.flex-order-lg-18{order:18}.flex-order-lg-19{order:19}.flex-order-lg-20{order:20}.flex-offset-lg-0,.offset-lg-0{margin-left:0}[dir=rtl] .flex-offset-lg-0,[dir=rtl] .offset-lg-0{margin-left:auto;margin-right:0}.flex-offset-lg-5,.offset-lg-5{margin-left:5%}[dir=rtl] .flex-offset-lg-5,[dir=rtl] .offset-lg-5{margin-left:auto;margin-right:5%}.flex-offset-lg-10,.offset-lg-10{margin-left:10%}[dir=rtl] .flex-offset-lg-10,[dir=rtl] .offset-lg-10{margin-left:auto;margin-right:10%}.flex-offset-lg-15,.offset-lg-15{margin-left:15%}[dir=rtl] .flex-offset-lg-15,[dir=rtl] .offset-lg-15{margin-left:auto;margin-right:15%}.flex-offset-lg-20,.offset-lg-20{margin-left:20%}[dir=rtl] .flex-offset-lg-20,[dir=rtl] .offset-lg-20{margin-left:auto;margin-right:20%}.flex-offset-lg-25,.offset-lg-25{margin-left:25%}[dir=rtl] .flex-offset-lg-25,[dir=rtl] .offset-lg-25{margin-left:auto;margin-right:25%}.flex-offset-lg-30,.offset-lg-30{margin-left:30%}[dir=rtl] .flex-offset-lg-30,[dir=rtl] .offset-lg-30{margin-left:auto;margin-right:30%}.flex-offset-lg-35,.offset-lg-35{margin-left:35%}[dir=rtl] .flex-offset-lg-35,[dir=rtl] .offset-lg-35{margin-left:auto;margin-right:35%}.flex-offset-lg-40,.offset-lg-40{margin-left:40%}[dir=rtl] .flex-offset-lg-40,[dir=rtl] .offset-lg-40{margin-left:auto;margin-right:40%}.flex-offset-lg-45,.offset-lg-45{margin-left:45%}[dir=rtl] .flex-offset-lg-45,[dir=rtl] .offset-lg-45{margin-left:auto;margin-right:45%}.flex-offset-lg-50,.offset-lg-50{margin-left:50%}[dir=rtl] .flex-offset-lg-50,[dir=rtl] .offset-lg-50{margin-left:auto;margin-right:50%}.flex-offset-lg-55,.offset-lg-55{margin-left:55%}[dir=rtl] .flex-offset-lg-55,[dir=rtl] .offset-lg-55{margin-left:auto;margin-right:55%}.flex-offset-lg-60,.offset-lg-60{margin-left:60%}[dir=rtl] .flex-offset-lg-60,[dir=rtl] .offset-lg-60{margin-left:auto;margin-right:60%}.flex-offset-lg-65,.offset-lg-65{margin-left:65%}[dir=rtl] .flex-offset-lg-65,[dir=rtl] .offset-lg-65{margin-left:auto;margin-right:65%}.flex-offset-lg-70,.offset-lg-70{margin-left:70%}[dir=rtl] .flex-offset-lg-70,[dir=rtl] .offset-lg-70{margin-left:auto;margin-right:70%}.flex-offset-lg-75,.offset-lg-75{margin-left:75%}[dir=rtl] .flex-offset-lg-75,[dir=rtl] .offset-lg-75{margin-left:auto;margin-right:75%}.flex-offset-lg-80,.offset-lg-80{margin-left:80%}[dir=rtl] .flex-offset-lg-80,[dir=rtl] .offset-lg-80{margin-left:auto;margin-right:80%}.flex-offset-lg-85,.offset-lg-85{margin-left:85%}[dir=rtl] .flex-offset-lg-85,[dir=rtl] .offset-lg-85{margin-left:auto;margin-right:85%}.flex-offset-lg-90,.offset-lg-90{margin-left:90%}[dir=rtl] .flex-offset-lg-90,[dir=rtl] .offset-lg-90{margin-left:auto;margin-right:90%}.flex-offset-lg-95,.offset-lg-95{margin-left:95%}[dir=rtl] .flex-offset-lg-95,[dir=rtl] .offset-lg-95{margin-left:auto;margin-right:95%}.flex-offset-lg-33,.offset-lg-33{margin-left:calc(100% / 3)}.flex-offset-lg-66,.offset-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-lg-66,[dir=rtl] .offset-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-lg,.layout-align-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-lg-start,.layout-align-lg-start-center,.layout-align-lg-start-end,.layout-align-lg-start-start,.layout-align-lg-start-stretch{justify-content:flex-start}.layout-align-lg-center,.layout-align-lg-center-center,.layout-align-lg-center-end,.layout-align-lg-center-start,.layout-align-lg-center-stretch{justify-content:center}.layout-align-lg-end,.layout-align-lg-end-center,.layout-align-lg-end-end,.layout-align-lg-end-start,.layout-align-lg-end-stretch{justify-content:flex-end}.layout-align-lg-space-around,.layout-align-lg-space-around-center,.layout-align-lg-space-around-end,.layout-align-lg-space-around-start,.layout-align-lg-space-around-stretch{justify-content:space-around}.layout-align-lg-space-between,.layout-align-lg-space-between-center,.layout-align-lg-space-between-end,.layout-align-lg-space-between-start,.layout-align-lg-space-between-stretch{justify-content:space-between}.layout-align-lg-center-start,.layout-align-lg-end-start,.layout-align-lg-space-around-start,.layout-align-lg-space-between-start,.layout-align-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-lg-center-center,.layout-align-lg-end-center,.layout-align-lg-space-around-center,.layout-align-lg-space-between-center,.layout-align-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-lg-center-center>*,.layout-align-lg-end-center>*,.layout-align-lg-space-around-center>*,.layout-align-lg-space-between-center>*,.layout-align-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-lg-center-end,.layout-align-lg-end-end,.layout-align-lg-space-around-end,.layout-align-lg-space-between-end,.layout-align-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-lg-center-stretch,.layout-align-lg-end-stretch,.layout-align-lg-space-around-stretch,.layout-align-lg-space-between-stretch,.layout-align-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-lg{flex:1;box-sizing:border-box}.flex-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-lg-column>.flex-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-row>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-column>.flex-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-lg-row>.flex{min-width:0}.layout-lg-column>.flex-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-lg-column>.flex-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-lg-column>.flex{min-height:0}.layout-lg,.layout-lg-column,.layout-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-lg-column{flex-direction:column}.layout-lg-row{flex-direction:row}}@media (min-width:1920px){.flex-order-gt-lg--20{order:-20}.flex-order-gt-lg--19{order:-19}.flex-order-gt-lg--18{order:-18}.flex-order-gt-lg--17{order:-17}.flex-order-gt-lg--16{order:-16}.flex-order-gt-lg--15{order:-15}.flex-order-gt-lg--14{order:-14}.flex-order-gt-lg--13{order:-13}.flex-order-gt-lg--12{order:-12}.flex-order-gt-lg--11{order:-11}.flex-order-gt-lg--10{order:-10}.flex-order-gt-lg--9{order:-9}.flex-order-gt-lg--8{order:-8}.flex-order-gt-lg--7{order:-7}.flex-order-gt-lg--6{order:-6}.flex-order-gt-lg--5{order:-5}.flex-order-gt-lg--4{order:-4}.flex-order-gt-lg--3{order:-3}.flex-order-gt-lg--2{order:-2}.flex-order-gt-lg--1{order:-1}.flex-order-gt-lg-0{order:0}.flex-order-gt-lg-1{order:1}.flex-order-gt-lg-2{order:2}.flex-order-gt-lg-3{order:3}.flex-order-gt-lg-4{order:4}.flex-order-gt-lg-5{order:5}.flex-order-gt-lg-6{order:6}.flex-order-gt-lg-7{order:7}.flex-order-gt-lg-8{order:8}.flex-order-gt-lg-9{order:9}.flex-order-gt-lg-10{order:10}.flex-order-gt-lg-11{order:11}.flex-order-gt-lg-12{order:12}.flex-order-gt-lg-13{order:13}.flex-order-gt-lg-14{order:14}.flex-order-gt-lg-15{order:15}.flex-order-gt-lg-16{order:16}.flex-order-gt-lg-17{order:17}.flex-order-gt-lg-18{order:18}.flex-order-gt-lg-19{order:19}.flex-order-gt-lg-20{order:20}.flex-offset-gt-lg-0,.offset-gt-lg-0{margin-left:0}[dir=rtl] .flex-offset-gt-lg-0,[dir=rtl] .offset-gt-lg-0{margin-left:auto;margin-right:0}.flex-offset-gt-lg-5,.offset-gt-lg-5{margin-left:5%}[dir=rtl] .flex-offset-gt-lg-5,[dir=rtl] .offset-gt-lg-5{margin-left:auto;margin-right:5%}.flex-offset-gt-lg-10,.offset-gt-lg-10{margin-left:10%}[dir=rtl] .flex-offset-gt-lg-10,[dir=rtl] .offset-gt-lg-10{margin-left:auto;margin-right:10%}.flex-offset-gt-lg-15,.offset-gt-lg-15{margin-left:15%}[dir=rtl] .flex-offset-gt-lg-15,[dir=rtl] .offset-gt-lg-15{margin-left:auto;margin-right:15%}.flex-offset-gt-lg-20,.offset-gt-lg-20{margin-left:20%}[dir=rtl] .flex-offset-gt-lg-20,[dir=rtl] .offset-gt-lg-20{margin-left:auto;margin-right:20%}.flex-offset-gt-lg-25,.offset-gt-lg-25{margin-left:25%}[dir=rtl] .flex-offset-gt-lg-25,[dir=rtl] .offset-gt-lg-25{margin-left:auto;margin-right:25%}.flex-offset-gt-lg-30,.offset-gt-lg-30{margin-left:30%}[dir=rtl] .flex-offset-gt-lg-30,[dir=rtl] .offset-gt-lg-30{margin-left:auto;margin-right:30%}.flex-offset-gt-lg-35,.offset-gt-lg-35{margin-left:35%}[dir=rtl] .flex-offset-gt-lg-35,[dir=rtl] .offset-gt-lg-35{margin-left:auto;margin-right:35%}.flex-offset-gt-lg-40,.offset-gt-lg-40{margin-left:40%}[dir=rtl] .flex-offset-gt-lg-40,[dir=rtl] .offset-gt-lg-40{margin-left:auto;margin-right:40%}.flex-offset-gt-lg-45,.offset-gt-lg-45{margin-left:45%}[dir=rtl] .flex-offset-gt-lg-45,[dir=rtl] .offset-gt-lg-45{margin-left:auto;margin-right:45%}.flex-offset-gt-lg-50,.offset-gt-lg-50{margin-left:50%}[dir=rtl] .flex-offset-gt-lg-50,[dir=rtl] .offset-gt-lg-50{margin-left:auto;margin-right:50%}.flex-offset-gt-lg-55,.offset-gt-lg-55{margin-left:55%}[dir=rtl] .flex-offset-gt-lg-55,[dir=rtl] .offset-gt-lg-55{margin-left:auto;margin-right:55%}.flex-offset-gt-lg-60,.offset-gt-lg-60{margin-left:60%}[dir=rtl] .flex-offset-gt-lg-60,[dir=rtl] .offset-gt-lg-60{margin-left:auto;margin-right:60%}.flex-offset-gt-lg-65,.offset-gt-lg-65{margin-left:65%}[dir=rtl] .flex-offset-gt-lg-65,[dir=rtl] .offset-gt-lg-65{margin-left:auto;margin-right:65%}.flex-offset-gt-lg-70,.offset-gt-lg-70{margin-left:70%}[dir=rtl] .flex-offset-gt-lg-70,[dir=rtl] .offset-gt-lg-70{margin-left:auto;margin-right:70%}.flex-offset-gt-lg-75,.offset-gt-lg-75{margin-left:75%}[dir=rtl] .flex-offset-gt-lg-75,[dir=rtl] .offset-gt-lg-75{margin-left:auto;margin-right:75%}.flex-offset-gt-lg-80,.offset-gt-lg-80{margin-left:80%}[dir=rtl] .flex-offset-gt-lg-80,[dir=rtl] .offset-gt-lg-80{margin-left:auto;margin-right:80%}.flex-offset-gt-lg-85,.offset-gt-lg-85{margin-left:85%}[dir=rtl] .flex-offset-gt-lg-85,[dir=rtl] .offset-gt-lg-85{margin-left:auto;margin-right:85%}.flex-offset-gt-lg-90,.offset-gt-lg-90{margin-left:90%}[dir=rtl] .flex-offset-gt-lg-90,[dir=rtl] .offset-gt-lg-90{margin-left:auto;margin-right:90%}.flex-offset-gt-lg-95,.offset-gt-lg-95{margin-left:95%}[dir=rtl] .flex-offset-gt-lg-95,[dir=rtl] .offset-gt-lg-95{margin-left:auto;margin-right:95%}.flex-offset-gt-lg-33,.offset-gt-lg-33{margin-left:calc(100% / 3)}.flex-offset-gt-lg-66,.offset-gt-lg-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-gt-lg-66,[dir=rtl] .offset-gt-lg-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-gt-lg,.layout-align-gt-lg-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-gt-lg-start,.layout-align-gt-lg-start-center,.layout-align-gt-lg-start-end,.layout-align-gt-lg-start-start,.layout-align-gt-lg-start-stretch{justify-content:flex-start}.layout-align-gt-lg-center,.layout-align-gt-lg-center-center,.layout-align-gt-lg-center-end,.layout-align-gt-lg-center-start,.layout-align-gt-lg-center-stretch{justify-content:center}.layout-align-gt-lg-end,.layout-align-gt-lg-end-center,.layout-align-gt-lg-end-end,.layout-align-gt-lg-end-start,.layout-align-gt-lg-end-stretch{justify-content:flex-end}.layout-align-gt-lg-space-around,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-around-stretch{justify-content:space-around}.layout-align-gt-lg-space-between,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-space-between-stretch{justify-content:space-between}.layout-align-gt-lg-center-start,.layout-align-gt-lg-end-start,.layout-align-gt-lg-space-around-start,.layout-align-gt-lg-space-between-start,.layout-align-gt-lg-start-start{align-items:flex-start;align-content:flex-start}.layout-align-gt-lg-center-center,.layout-align-gt-lg-end-center,.layout-align-gt-lg-space-around-center,.layout-align-gt-lg-space-between-center,.layout-align-gt-lg-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-gt-lg-center-center>*,.layout-align-gt-lg-end-center>*,.layout-align-gt-lg-space-around-center>*,.layout-align-gt-lg-space-between-center>*,.layout-align-gt-lg-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-gt-lg-center-end,.layout-align-gt-lg-end-end,.layout-align-gt-lg-space-around-end,.layout-align-gt-lg-space-between-end,.layout-align-gt-lg-start-end{align-items:flex-end;align-content:flex-end}.layout-align-gt-lg-center-stretch,.layout-align-gt-lg-end-stretch,.layout-align-gt-lg-space-around-stretch,.layout-align-gt-lg-space-between-stretch,.layout-align-gt-lg-start-stretch{align-items:stretch;align-content:stretch}.flex-gt-lg{flex:1;box-sizing:border-box}.flex-gt-lg-grow{flex:1 1 100%;box-sizing:border-box}.flex-gt-lg-initial{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-auto{flex:1 1 auto;box-sizing:border-box}.flex-gt-lg-none{flex:0 0 auto;box-sizing:border-box}.flex-gt-lg-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-gt-lg-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-gt-lg-column>.flex-gt-lg-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex-gt-lg-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-gt-lg-row>.flex{min-width:0}.layout-gt-lg-column>.flex-gt-lg-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-gt-lg-column>.flex-gt-lg-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-gt-lg-column>.flex{min-height:0}.layout-gt-lg,.layout-gt-lg-column,.layout-gt-lg-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-gt-lg-column{flex-direction:column}.layout-gt-lg-row{flex-direction:row}.flex-order-xl--20{order:-20}.flex-order-xl--19{order:-19}.flex-order-xl--18{order:-18}.flex-order-xl--17{order:-17}.flex-order-xl--16{order:-16}.flex-order-xl--15{order:-15}.flex-order-xl--14{order:-14}.flex-order-xl--13{order:-13}.flex-order-xl--12{order:-12}.flex-order-xl--11{order:-11}.flex-order-xl--10{order:-10}.flex-order-xl--9{order:-9}.flex-order-xl--8{order:-8}.flex-order-xl--7{order:-7}.flex-order-xl--6{order:-6}.flex-order-xl--5{order:-5}.flex-order-xl--4{order:-4}.flex-order-xl--3{order:-3}.flex-order-xl--2{order:-2}.flex-order-xl--1{order:-1}.flex-order-xl-0{order:0}.flex-order-xl-1{order:1}.flex-order-xl-2{order:2}.flex-order-xl-3{order:3}.flex-order-xl-4{order:4}.flex-order-xl-5{order:5}.flex-order-xl-6{order:6}.flex-order-xl-7{order:7}.flex-order-xl-8{order:8}.flex-order-xl-9{order:9}.flex-order-xl-10{order:10}.flex-order-xl-11{order:11}.flex-order-xl-12{order:12}.flex-order-xl-13{order:13}.flex-order-xl-14{order:14}.flex-order-xl-15{order:15}.flex-order-xl-16{order:16}.flex-order-xl-17{order:17}.flex-order-xl-18{order:18}.flex-order-xl-19{order:19}.flex-order-xl-20{order:20}.flex-offset-xl-0,.offset-xl-0{margin-left:0}[dir=rtl] .flex-offset-xl-0,[dir=rtl] .offset-xl-0{margin-left:auto;margin-right:0}.flex-offset-xl-5,.offset-xl-5{margin-left:5%}[dir=rtl] .flex-offset-xl-5,[dir=rtl] .offset-xl-5{margin-left:auto;margin-right:5%}.flex-offset-xl-10,.offset-xl-10{margin-left:10%}[dir=rtl] .flex-offset-xl-10,[dir=rtl] .offset-xl-10{margin-left:auto;margin-right:10%}.flex-offset-xl-15,.offset-xl-15{margin-left:15%}[dir=rtl] .flex-offset-xl-15,[dir=rtl] .offset-xl-15{margin-left:auto;margin-right:15%}.flex-offset-xl-20,.offset-xl-20{margin-left:20%}[dir=rtl] .flex-offset-xl-20,[dir=rtl] .offset-xl-20{margin-left:auto;margin-right:20%}.flex-offset-xl-25,.offset-xl-25{margin-left:25%}[dir=rtl] .flex-offset-xl-25,[dir=rtl] .offset-xl-25{margin-left:auto;margin-right:25%}.flex-offset-xl-30,.offset-xl-30{margin-left:30%}[dir=rtl] .flex-offset-xl-30,[dir=rtl] .offset-xl-30{margin-left:auto;margin-right:30%}.flex-offset-xl-35,.offset-xl-35{margin-left:35%}[dir=rtl] .flex-offset-xl-35,[dir=rtl] .offset-xl-35{margin-left:auto;margin-right:35%}.flex-offset-xl-40,.offset-xl-40{margin-left:40%}[dir=rtl] .flex-offset-xl-40,[dir=rtl] .offset-xl-40{margin-left:auto;margin-right:40%}.flex-offset-xl-45,.offset-xl-45{margin-left:45%}[dir=rtl] .flex-offset-xl-45,[dir=rtl] .offset-xl-45{margin-left:auto;margin-right:45%}.flex-offset-xl-50,.offset-xl-50{margin-left:50%}[dir=rtl] .flex-offset-xl-50,[dir=rtl] .offset-xl-50{margin-left:auto;margin-right:50%}.flex-offset-xl-55,.offset-xl-55{margin-left:55%}[dir=rtl] .flex-offset-xl-55,[dir=rtl] .offset-xl-55{margin-left:auto;margin-right:55%}.flex-offset-xl-60,.offset-xl-60{margin-left:60%}[dir=rtl] .flex-offset-xl-60,[dir=rtl] .offset-xl-60{margin-left:auto;margin-right:60%}.flex-offset-xl-65,.offset-xl-65{margin-left:65%}[dir=rtl] .flex-offset-xl-65,[dir=rtl] .offset-xl-65{margin-left:auto;margin-right:65%}.flex-offset-xl-70,.offset-xl-70{margin-left:70%}[dir=rtl] .flex-offset-xl-70,[dir=rtl] .offset-xl-70{margin-left:auto;margin-right:70%}.flex-offset-xl-75,.offset-xl-75{margin-left:75%}[dir=rtl] .flex-offset-xl-75,[dir=rtl] .offset-xl-75{margin-left:auto;margin-right:75%}.flex-offset-xl-80,.offset-xl-80{margin-left:80%}[dir=rtl] .flex-offset-xl-80,[dir=rtl] .offset-xl-80{margin-left:auto;margin-right:80%}.flex-offset-xl-85,.offset-xl-85{margin-left:85%}[dir=rtl] .flex-offset-xl-85,[dir=rtl] .offset-xl-85{margin-left:auto;margin-right:85%}.flex-offset-xl-90,.offset-xl-90{margin-left:90%}[dir=rtl] .flex-offset-xl-90,[dir=rtl] .offset-xl-90{margin-left:auto;margin-right:90%}.flex-offset-xl-95,.offset-xl-95{margin-left:95%}[dir=rtl] .flex-offset-xl-95,[dir=rtl] .offset-xl-95{margin-left:auto;margin-right:95%}.flex-offset-xl-33,.offset-xl-33{margin-left:calc(100% / 3)}.flex-offset-xl-66,.offset-xl-66{margin-left:calc(200% / 3)}[dir=rtl] .flex-offset-xl-66,[dir=rtl] .offset-xl-66{margin-left:auto;margin-right:calc(200% / 3)}.layout-align-xl,.layout-align-xl-start-stretch{justify-content:flex-start;align-content:stretch;align-items:stretch}.layout-align-xl-start,.layout-align-xl-start-center,.layout-align-xl-start-end,.layout-align-xl-start-start,.layout-align-xl-start-stretch{justify-content:flex-start}.layout-align-xl-center,.layout-align-xl-center-center,.layout-align-xl-center-end,.layout-align-xl-center-start,.layout-align-xl-center-stretch{justify-content:center}.layout-align-xl-end,.layout-align-xl-end-center,.layout-align-xl-end-end,.layout-align-xl-end-start,.layout-align-xl-end-stretch{justify-content:flex-end}.layout-align-xl-space-around,.layout-align-xl-space-around-center,.layout-align-xl-space-around-end,.layout-align-xl-space-around-start,.layout-align-xl-space-around-stretch{justify-content:space-around}.layout-align-xl-space-between,.layout-align-xl-space-between-center,.layout-align-xl-space-between-end,.layout-align-xl-space-between-start,.layout-align-xl-space-between-stretch{justify-content:space-between}.layout-align-xl-center-start,.layout-align-xl-end-start,.layout-align-xl-space-around-start,.layout-align-xl-space-between-start,.layout-align-xl-start-start{align-items:flex-start;align-content:flex-start}.layout-align-xl-center-center,.layout-align-xl-end-center,.layout-align-xl-space-around-center,.layout-align-xl-space-between-center,.layout-align-xl-start-center{align-items:center;align-content:center;max-width:100%}.layout-align-xl-center-center>*,.layout-align-xl-end-center>*,.layout-align-xl-space-around-center>*,.layout-align-xl-space-between-center>*,.layout-align-xl-start-center>*{max-width:100%;box-sizing:border-box}.layout-align-xl-center-end,.layout-align-xl-end-end,.layout-align-xl-space-around-end,.layout-align-xl-space-between-end,.layout-align-xl-start-end{align-items:flex-end;align-content:flex-end}.layout-align-xl-center-stretch,.layout-align-xl-end-stretch,.layout-align-xl-space-around-stretch,.layout-align-xl-space-between-stretch,.layout-align-xl-start-stretch{align-items:stretch;align-content:stretch}.flex-xl{flex:1;box-sizing:border-box}.flex-xl-grow{flex:1 1 100%;box-sizing:border-box}.flex-xl-initial{flex:0 1 auto;box-sizing:border-box}.flex-xl-auto{flex:1 1 auto;box-sizing:border-box}.flex-xl-none{flex:0 0 auto;box-sizing:border-box}.flex-xl-noshrink{flex:1 0 auto;box-sizing:border-box}.flex-xl-nogrow{flex:0 1 auto;box-sizing:border-box}.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-0{flex:1 1 0%;max-width:0%;max-height:100%;box-sizing:border-box;min-width:0}.layout-xl-column>.flex-xl-0{flex:1 1 0%;max-width:100%;max-height:0%;box-sizing:border-box;min-height:0}.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-5{flex:1 1 5%;max-width:5%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-5{flex:1 1 5%;max-width:100%;max-height:5%;box-sizing:border-box}.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-10{flex:1 1 10%;max-width:10%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-10{flex:1 1 10%;max-width:100%;max-height:10%;box-sizing:border-box}.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-15{flex:1 1 15%;max-width:15%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-15{flex:1 1 15%;max-width:100%;max-height:15%;box-sizing:border-box}.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-20{flex:1 1 20%;max-width:20%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-20{flex:1 1 20%;max-width:100%;max-height:20%;box-sizing:border-box}.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-25{flex:1 1 25%;max-width:25%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-25{flex:1 1 25%;max-width:100%;max-height:25%;box-sizing:border-box}.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-30{flex:1 1 30%;max-width:30%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-30{flex:1 1 30%;max-width:100%;max-height:30%;box-sizing:border-box}.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-35{flex:1 1 35%;max-width:35%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-35{flex:1 1 35%;max-width:100%;max-height:35%;box-sizing:border-box}.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-40{flex:1 1 40%;max-width:40%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-40{flex:1 1 40%;max-width:100%;max-height:40%;box-sizing:border-box}.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-45{flex:1 1 45%;max-width:45%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-45{flex:1 1 45%;max-width:100%;max-height:45%;box-sizing:border-box}.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-50{flex:1 1 50%;max-width:50%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-50{flex:1 1 50%;max-width:100%;max-height:50%;box-sizing:border-box}.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-55{flex:1 1 55%;max-width:55%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-55{flex:1 1 55%;max-width:100%;max-height:55%;box-sizing:border-box}.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-60{flex:1 1 60%;max-width:60%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-60{flex:1 1 60%;max-width:100%;max-height:60%;box-sizing:border-box}.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-65{flex:1 1 65%;max-width:65%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-65{flex:1 1 65%;max-width:100%;max-height:65%;box-sizing:border-box}.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-70{flex:1 1 70%;max-width:70%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-70{flex:1 1 70%;max-width:100%;max-height:70%;box-sizing:border-box}.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-75{flex:1 1 75%;max-width:75%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-75{flex:1 1 75%;max-width:100%;max-height:75%;box-sizing:border-box}.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-80{flex:1 1 80%;max-width:80%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-80{flex:1 1 80%;max-width:100%;max-height:80%;box-sizing:border-box}.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-85{flex:1 1 85%;max-width:85%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-85{flex:1 1 85%;max-width:100%;max-height:85%;box-sizing:border-box}.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-90{flex:1 1 90%;max-width:90%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-90{flex:1 1 90%;max-width:100%;max-height:90%;box-sizing:border-box}.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-95{flex:1 1 95%;max-width:95%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-95{flex:1 1 95%;max-width:100%;max-height:95%;box-sizing:border-box}.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-row>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-column>.flex-xl-100{flex:1 1 100%;max-width:100%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-33{flex:1 1 33.33%;max-width:33.33%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex-xl-66{flex:1 1 66.66%;max-width:66.66%;max-height:100%;box-sizing:border-box}.layout-xl-row>.flex{min-width:0}.layout-xl-column>.flex-xl-33{flex:1 1 33.33%;max-width:100%;max-height:33.33%;box-sizing:border-box}.layout-xl-column>.flex-xl-66{flex:1 1 66.66%;max-width:100%;max-height:66.66%;box-sizing:border-box}.layout-xl-column>.flex{min-height:0}.layout-xl,.layout-xl-column,.layout-xl-row{box-sizing:border-box;display:-webkit-box;display:-webkit-flex;display:-moz-box;display:-ms-flexbox;display:flex}.layout-xl-column{flex-direction:column}.layout-xl-row{flex-direction:row}.hide-gt-lg:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-md:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-sm:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide-gt-xs:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show),.hide:not(.show-gt-xs):not(.show-gt-sm):not(.show-gt-md):not(.show-gt-lg):not(.show-xl):not(.show){display:none}.hide-xl:not(.show-xl):not(.show-gt-lg):not(.show-gt-md):not(.show-gt-sm):not(.show-gt-xs):not(.show){display:none}}@media print{.hide-print:not(.show-print):not(.show){display:none!important}}md-menu[md-nest-level='1']{margin:0}md-menu[md-nest-level='1'] .md-button{display:inline-block;border-radius:0;margin:auto 0;font-size:15px;text-transform:none;font-weight:400;height:100%;padding-left:16px;padding-right:16px;width:100%}*{text-rendering:optimizeLegibility;-o-text-rendering:optimizeLegibility;-ms-text-rendering:optimizeLegibility;-moz-text-rendering:optimizeLegibility;-webkit-text-rendering:optimizeLegibility;-webkit-tap-highlight-color:transparent;box-sizing:border-box}:after,:before{box-sizing:border-box}:focus{outline:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=email],:not(md-input-container)>input[type=image],:not(md-input-container)>input[type=password],:not(md-input-container)>input[type=search],:not(md-input-container)>input[type=submit],:not(md-input-container)>input[type=tel],:not(md-input-container)>input[type=text],:not(md-input-container)>textarea{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;appearance:none;-moz-appearance:none;-webkit-appearance:none;border:none;padding:0;margin:0}:not(md-input-container)>button,:not(md-input-container)>input[type=button],:not(md-input-container)>input[type=submit]{background:0 0}button{border-radius:0;font-family:inherit;font-size:inherit;padding:0;margin:0;appearance:none;-moz-appearance:none;-webkit-appearance:none}[layout]>*{min-height:auto;min-height:initial}md-card>:not(md-card-content) img,md-card>img{height:inherit;height:initial}.md-datepicker-calendar-pane *{box-sizing:initial}md-autocomplete-wrap>input[type=search]{background:#fff;padding:0 15px!important}md-backdrop.md-opaque{background-color:rgba(33,33,33,.48)!important}md-card md-card-header md-card-avatar md-icon{width:40px;height:40px}md-checkbox.no-label{margin:0}md-chip .md-chip-remove md-icon{margin-left:2px}md-chip .md-chip-remove md-icon svg{width:18px;height:18px;max-width:18px;max-height:18px;margin:4px}md-datepicker .md-datepicker-button{padding:0!important;margin:0!important;vertical-align:middle}md-datepicker .md-datepicker-input-container{margin-left:0}.md-inline-form md-datepicker{margin-top:14px}md-dialog md-dialog-content{padding:32px 24px 24px 24px}md-dialog md-dialog-actions{min-height:64px;padding-top:8px;padding-bottom:8px}md-dialog md-dialog-actions .md-button{margin:0 8px}md-input-container.no-errors-spacer .md-errors-spacer{display:none}md-input-container .input-hint{position:absolute;right:auto;bottom:7px;left:2px;font-size:12px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-input-container.md-icon-left .input-hint{left:38px}md-list-item .md-list-item-text p{font-size:13px!important}.md-menu,md-menu{padding:0}md-menu-content.md-menu-bar-menu.md-dense{padding:8px 0}md-menu-content.md-menu-bar-menu.md-dense .md-button,md-menu-content.md-menu-bar-menu.md-dense md-menu-item{height:40px;line-height:40px}md-menu-content.md-menu-bar-menu.md-dense .md-button.md-indent>md-icon,md-menu-content.md-menu-bar-menu.md-dense md-menu-item.md-indent>md-icon{top:8px}.md-open-menu-container md-menu-content md-menu-item.selected{opacity:.4}md-menu-content md-menu-item .md-button{text-align:left}md-select.simplified{margin:0 8px}md-select.simplified .md-select-value{border:none!important;box-sizing:border-box;padding:0}md-select.simplified .md-select-value :first-child{transform:none;height:auto}md-select.simplified .md-select-value .md-select-icon{transform:none;font-size:16px}md-select.simplified .md-select-value .md-select-icon:after{top:1px}md-select[multiple] md-select-value>:first-child{display:flex}md-select[multiple] md-select-value>:first-child>:first-child{flex:0}md-select[multiple] md-select-value>:first-child .md-container{padding-right:6px}md-select[multiple] md-select-value>:first-child .md-container:first-of-type{padding-right:0}md-select-menu md-select-header{position:relative;display:flex;align-items:center;width:auto;height:48px;padding-left:10.667px;box-shadow:0 1px 0 0 rgba(0,0,0,.1),0 0 0 0 rgba(0,0,0,.14),0 0 0 0 rgba(0,0,0,.12);cursor:pointer}md-select-menu md-select-header input[type=search]{border:none;outline:0;height:100%;width:100%;padding:0}md-sidenav{-webkit-overflow-scrolling:touch}md-toolbar.colored-toolbar{color:rgba(255,255,255,.87)}md-toolbar.colored-toolbar md-menu-bar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar md-menu._md-open>button{background:rgba(0,0,0,.12)}md-toolbar.colored-toolbar input{color:rgba(255,255,255,.87)!important}md-progress-circular[disabled]{visibility:hidden}body,html{overflow:hidden!important}#main{position:fixed;top:0;left:0;width:100vw;height:100vh}body.boxed{background:#3f4450}body.boxed #main{overflow:hidden!important;width:100%;max-width:1280px;margin:0 auto;box-shadow:0 0 12px rgba(0,0,0,.45)}#layout-content-only{position:relative;height:100%;max-height:100%}#layout-content-only #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-content-with-toolbar{position:relative;height:100%;max-height:100%}#layout-content-with-toolbar #content{position:absolute;top:64px;right:0;bottom:0;left:0}#layout-vertical-navigation{width:100%;height:100%;max-height:100%}#layout-vertical-navigation #content-container{position:relative;overflow:hidden;width:100%;height:100%}#layout-vertical-navigation #content-container #content{width:100%;height:100%;overflow:auto}#layout-vertical-navigation-fullwidth-toolbar{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-vertical-navigation-fullwidth-toolbar-2{height:100%;max-height:100%}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container{position:relative}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container{position:relative;overflow:hidden}#layout-vertical-navigation-fullwidth-toolbar-2 #main-container #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}#layout-horizontal-navigation{height:100%;max-height:100%}#layout-horizontal-navigation #content-container{position:relative;overflow:hidden}#layout-horizontal-navigation #content-container #content{position:absolute;top:0;right:0;bottom:0;left:0}.page-layout{position:relative;overflow:hidden}.page-layout .top-bg{position:absolute;z-index:1;top:0;right:0;left:0;height:200px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout md-backdrop{z-index:50}.page-layout>.header .breadcrumb{margin-bottom:16px;font-weight:500;color:rgba(0,0,0,.54)}.page-layout>.header .breadcrumb md-icon{margin:0}.page-layout>.header .breadcrumb .separator{margin:0 8px}.page-layout>.header .title{font-size:34px}.page-layout.carded{min-height:100%;height:100%}.page-layout.carded.fullwidth.single-scroll{height:auto}.page-layout.carded.fullwidth.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.fullwidth>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.fullwidth>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.fullwidth>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.fullwidth>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.fullwidth>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.left-sidenav.single-scroll{height:auto}.page-layout.carded.left-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.left-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px}.page-layout.carded.left-sidenav>.sidenav .content{background:0 0;padding:24px}.page-layout.carded.left-sidenav>.sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.left-sidenav>.sidenav.md-locked-open+.center{margin-left:0}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .header{border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden}.page-layout.carded.left-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.left-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.left-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.left-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.left-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 8px 0 0!important;padding:0!important;border-radius:0}.page-layout.carded.left-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.carded.right-sidenav.single-scroll{height:auto}.page-layout.carded.right-sidenav.single-scroll>.center .content-card .content{overflow:hidden}.page-layout.carded.right-sidenav>.sidenav{width:240px;min-width:240px;max-width:240px;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);z-index:51}.page-layout.carded.right-sidenav>.sidenav .header{height:200px;min-height:200px;max-height:200px;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav .content{background:0 0;padding:24px 24px 24px 0}.page-layout.carded.right-sidenav>.sidenav.md-locked-open{width:196px;min-width:196px;max-width:196px;z-index:2;background:0 0;box-shadow:none}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .header{padding:24px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.sidenav:not(.md-locked-open) .content{overflow:hidden;padding:24px}.page-layout.carded.right-sidenav>.center{position:relative;z-index:2;margin-left:32px;margin-right:32px}.page-layout.carded.right-sidenav>.center .header{height:136px;min-height:136px;max-height:136px;padding:24px}.page-layout.carded.right-sidenav>.center .content-card{background:#fff;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12);overflow:hidden}.page-layout.carded.right-sidenav>.center .content-card .toolbar{padding:8px 24px;height:64px;min-height:64px;max-height:64px;border-bottom:1px solid rgba(0,0,0,.12)}.page-layout.carded.right-sidenav>.center .content-card .toolbar .sidenav-toggle{margin:0 0 0 8px!important;padding:0!important;border-radius:0}.page-layout.carded.right-sidenav>.center .content-card .content{padding:24px;background:#fff}.page-layout.simple.fullwidth,.page-layout.simple.inner-sidenav{min-height:100%}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.fullwidth>.content,.page-layout.simple.inner-sidenav>.content{padding:24px}.page-layout.simple.left-sidenav{min-height:100%;height:100%}.page-layout.simple.left-sidenav.single-scroll{height:auto}.page-layout.simple.left-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.left-sidenav.inner-sidenav>.content>md-sidenav{margin-right:24px}.page-layout.simple.left-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.left-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.left-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.left-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.right-sidenav{min-height:100%;height:100%}.page-layout.simple.right-sidenav.single-scroll{height:auto}.page-layout.simple.right-sidenav.single-scroll>.center{overflow:hidden}.page-layout.simple.right-sidenav.inner-sidenav>.content>md-sidenav{margin-left:24px}.page-layout.simple.right-sidenav .sidenav{width:240px;min-width:240px;max-width:240px;padding:24px;z-index:51;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav .sidenav.md-locked-open{width:220px;min-width:220px;max-width:220px;z-index:2;box-shadow:none;background:0 0}.page-layout.simple.right-sidenav>.center{position:relative;overflow:auto;z-index:3;box-shadow:0 4px 5px -2px rgba(0,0,0,.2),0 7px 10px 1px rgba(0,0,0,.14),0 2px 16px 1px rgba(0,0,0,.12)}.page-layout.simple.right-sidenav>.center .header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.right-sidenav>.center .content{padding:24px;background:#fff}.page-layout.simple.inner-sidenav{height:auto}.page-layout.simple.inner-sidenav>.content>md-sidenav.md-locked-open{padding:0}.page-layout.simple.tabbed{width:100%;height:100%;min-height:100%}.page-layout.simple.tabbed>.header{height:200px;min-height:200px;max-height:200px;padding:24px;background-image:url(/assets/images/backgrounds/header-bg.png);background-size:cover}.page-layout.simple.tabbed>.content{width:100%;height:100%;overflow:hidden}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}.page-layout.simple.tabbed>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper{width:100%;height:calc(100% - 56px)}.page-layout.simple.tabbed>.content>md-tabs>md-tabs-content-wrapper>md-tab-content.md-active{padding:24px;box-sizing:border-box;overflow:auto;width:100%;height:100%;display:block}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);border:none;height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav{margin:0 12px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item{height:56px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button{height:56px;line-height:32px}.page-layout.simple.tabbed>.content>md-nav-bar .md-nav-bar nav .md-nav-item ._md-nav-button-text{text-transform:none}.page-layout.blank{min-height:100%;padding:24px}.single-scroll .carded.fullwidth{height:auto}.single-scroll .carded.fullwidth>.center .content-card .content{overflow:hidden}.single-scroll .carded.left-sidenav{height:auto}.single-scroll .carded.left-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .carded.right-sidenav{height:auto}.single-scroll .carded.right-sidenav>.center .content-card .content{overflow:hidden}.single-scroll .simple.left-sidenav{height:auto}.single-scroll .simple.left-sidenav>.center{overflow:hidden}.single-scroll .simple.right-sidenav{height:auto}.single-scroll .simple.right-sidenav>.center{overflow:hidden}@media screen and (max-width:1280px){.page-layout.simple.inner-sidenav.left-sidenav>.content,.page-layout.simple.inner-sidenav.right-sidenav>.content{height:auto!important}.page-layout.simple.inner-sidenav.left-sidenav>.content>md-sidenav,.page-layout.simple.inner-sidenav.right-sidenav>.content>md-sidenav{margin-left:0;margin-right:0}.sidenav-open .page-layout.simple.inner-sidenav{height:100%}}@media screen and (max-width:600px){.page-layout .top-bg{height:160px}.page-layout.carded.fullwidth>.center,.page-layout.carded.left-sidenav>.center,.page-layout.carded.right-sidenav>.center{margin-left:16px;margin-right:16px}.page-layout.carded.fullwidth>.center .header,.page-layout.carded.left-sidenav>.center .header,.page-layout.carded.right-sidenav>.center .header{height:96px;min-height:96px;max-height:96px;padding:16px}.page-layout.carded.fullwidth{height:auto}.page-layout.carded.fullwidth>.center .content-card .content{overflow:hidden}.page-layout.carded.left-sidenav,.page-layout.carded.right-sidenav{height:auto}.page-layout.carded.left-sidenav>.center .content-card .content,.page-layout.carded.right-sidenav>.center .content-card .content{overflow:hidden}.page-layout.simple.fullwidth>.header,.page-layout.simple.inner-sidenav>.header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav>.center .header,.page-layout.simple.right-sidenav>.center .header{height:160px;min-height:160px;max-height:160px;padding:16px}.page-layout.simple.left-sidenav,.page-layout.simple.right-sidenav{height:auto}.page-layout.simple.left-sidenav>.center,.page-layout.simple.right-sidenav>.center{overflow:hidden}}.black-fg,.black-text{color:rgba(0,0,0,.87)!important}.black-fg .icon,.black-fg .secondary-text,.black-fg.icon,.black-fg.secondary-text,.black-text .icon,.black-text .secondary-text,.black-text.icon,.black-text.secondary-text{color:rgba(0,0,0,.54)!important}.black-fg .disabled-text,.black-fg .hint-text,.black-fg.disabled-text,.black-fg.hint-text,.black-text .disabled-text,.black-text .hint-text,.black-text.disabled-text,.black-text.hint-text{color:rgba(0,0,0,.26)!important}.black-fg .divider,.black-fg .faint-text,.black-fg.divider,.black-fg.faint-text,.black-text .divider,.black-text .faint-text,.black-text.divider,.black-text.faint-text{color:rgba(0,0,0,.12)!important}.white-fg,.white-text{color:#fff!important}.white-fg .icon,.white-fg .secondary-text,.white-fg.icon,.white-fg.secondary-text,.white-text .icon,.white-text .secondary-text,.white-text.icon,.white-text.secondary-text{color:rgba(255,255,255,.7)!important}.white-fg .disabled-text,.white-fg .hint-text,.white-fg.disabled-text,.white-fg.hint-text,.white-text .disabled-text,.white-text .hint-text,.white-text.disabled-text,.white-text.hint-text{color:rgba(255,255,255,.3)!important}.white-fg .divider,.white-fg .faint-text,.white-fg.divider,.white-fg.faint-text,.white-text .divider,.white-text .faint-text,.white-text.divider,.white-text.faint-text{color:rgba(255,255,255,.12)!important}.white-fg md-icon,.white-text md-icon{color:#fff}.white-fg md-progress-linear .md-container,.white-text md-progress-linear .md-container{background:rgba(255,255,255,.3)}.white-fg md-progress-linear .md-bar,.white-text md-progress-linear .md-bar{background:rgba(255,255,255,.7)}.red-50-bg{background-color:#ffebee!important}.md-red-50-bg{background-color:#ffebee!important;color:rgba(0,0,0,.87)}.red-50-fg{color:#ffebee!important}.red-50-border{border-color:#ffebee!important}.red-50-border-top{border-top-color:#ffebee!important}.red-50-border-right{border-right-color:#ffebee!important}.red-50-border-bottom{border-bottom-color:#ffebee!important}.red-50-border-left{border-left-color:#ffebee!important}.red-100-bg{background-color:#ffcdd2!important}.md-red-100-bg{background-color:#ffcdd2!important;color:rgba(0,0,0,.87)}.red-100-fg{color:#ffcdd2!important}.red-100-border{border-color:#ffcdd2!important}.red-100-border-top{border-top-color:#ffcdd2!important}.red-100-border-right{border-right-color:#ffcdd2!important}.red-100-border-bottom{border-bottom-color:#ffcdd2!important}.red-100-border-left{border-left-color:#ffcdd2!important}.red-200-bg{background-color:#ef9a9a!important}.md-red-200-bg{background-color:#ef9a9a!important;color:rgba(0,0,0,.87)}.red-200-fg{color:#ef9a9a!important}.red-200-border{border-color:#ef9a9a!important}.red-200-border-top{border-top-color:#ef9a9a!important}.red-200-border-right{border-right-color:#ef9a9a!important}.red-200-border-bottom{border-bottom-color:#ef9a9a!important}.red-200-border-left{border-left-color:#ef9a9a!important}.red-300-bg{background-color:#e57373!important}.md-red-300-bg{background-color:#e57373!important;color:rgba(0,0,0,.87)}.red-300-fg{color:#e57373!important}.red-300-border{border-color:#e57373!important}.red-300-border-top{border-top-color:#e57373!important}.red-300-border-right{border-right-color:#e57373!important}.red-300-border-bottom{border-bottom-color:#e57373!important}.red-300-border-left{border-left-color:#e57373!important}.red-400-bg{background-color:#ef5350!important}.md-red-400-bg{background-color:#ef5350!important;color:#fff}.red-400-fg{color:#ef5350!important}.red-400-border{border-color:#ef5350!important}.red-400-border-top{border-top-color:#ef5350!important}.red-400-border-right{border-right-color:#ef5350!important}.red-400-border-bottom{border-bottom-color:#ef5350!important}.red-400-border-left{border-left-color:#ef5350!important}.red-500-bg{background-color:#f44336!important}.md-red-500-bg{background-color:#f44336!important;color:#fff}.red-500-fg{color:#f44336!important}.red-500-border{border-color:#f44336!important}.red-500-border-top{border-top-color:#f44336!important}.red-500-border-right{border-right-color:#f44336!important}.red-500-border-bottom{border-bottom-color:#f44336!important}.red-500-border-left{border-left-color:#f44336!important}.md-red-bg{background-color:#f44336!important;color:#fff}.red-bg{background-color:#f44336!important}.red-fg{color:#f44336!important}.red-border{border-color:#f44336!important}.red-border-top{border-top-color:#f44336!important}.red-border-right{border-right-color:#f44336!important}.red-border-bottom{border-bottom-color:#f44336!important}.red-border-left{border-left-color:#f44336!important}.red-600-bg{background-color:#e53935!important}.md-red-600-bg{background-color:#e53935!important;color:#fff}.red-600-fg{color:#e53935!important}.red-600-border{border-color:#e53935!important}.red-600-border-top{border-top-color:#e53935!important}.red-600-border-right{border-right-color:#e53935!important}.red-600-border-bottom{border-bottom-color:#e53935!important}.red-600-border-left{border-left-color:#e53935!important}.red-700-bg{background-color:#d32f2f!important}.md-red-700-bg{background-color:#d32f2f!important;color:#fff}.red-700-fg{color:#d32f2f!important}.red-700-border{border-color:#d32f2f!important}.red-700-border-top{border-top-color:#d32f2f!important}.red-700-border-right{border-right-color:#d32f2f!important}.red-700-border-bottom{border-bottom-color:#d32f2f!important}.red-700-border-left{border-left-color:#d32f2f!important}.red-800-bg{background-color:#c62828!important}.md-red-800-bg{background-color:#c62828!important;color:rgba(255,255,255,.87)}.red-800-fg{color:#c62828!important}.red-800-border{border-color:#c62828!important}.red-800-border-top{border-top-color:#c62828!important}.red-800-border-right{border-right-color:#c62828!important}.red-800-border-bottom{border-bottom-color:#c62828!important}.red-800-border-left{border-left-color:#c62828!important}.red-900-bg{background-color:#b71c1c!important}.md-red-900-bg{background-color:#b71c1c!important;color:rgba(255,255,255,.87)}.red-900-fg{color:#b71c1c!important}.red-900-border{border-color:#b71c1c!important}.red-900-border-top{border-top-color:#b71c1c!important}.red-900-border-right{border-right-color:#b71c1c!important}.red-900-border-bottom{border-bottom-color:#b71c1c!important}.red-900-border-left{border-left-color:#b71c1c!important}.red-A100-bg{background-color:#ff8a80!important}.md-red-A100-bg{background-color:#ff8a80!important;color:rgba(0,0,0,.87)}.red-A100-fg{color:#ff8a80!important}.red-A100-border{border-color:#ff8a80!important}.red-A100-border-top{border-top-color:#ff8a80!important}.red-A100-border-right{border-right-color:#ff8a80!important}.red-A100-border-bottom{border-bottom-color:#ff8a80!important}.red-A100-border-left{border-left-color:#ff8a80!important}.red-A200-bg{background-color:#ff5252!important}.md-red-A200-bg{background-color:#ff5252!important;color:#fff}.red-A200-fg{color:#ff5252!important}.red-A200-border{border-color:#ff5252!important}.red-A200-border-top{border-top-color:#ff5252!important}.red-A200-border-right{border-right-color:#ff5252!important}.red-A200-border-bottom{border-bottom-color:#ff5252!important}.red-A200-border-left{border-left-color:#ff5252!important}.red-A400-bg{background-color:#ff1744!important}.md-red-A400-bg{background-color:#ff1744!important;color:#fff}.red-A400-fg{color:#ff1744!important}.red-A400-border{border-color:#ff1744!important}.red-A400-border-top{border-top-color:#ff1744!important}.red-A400-border-right{border-right-color:#ff1744!important}.red-A400-border-bottom{border-bottom-color:#ff1744!important}.red-A400-border-left{border-left-color:#ff1744!important}.red-A700-bg{background-color:#d50000!important}.md-red-A700-bg{background-color:#d50000!important;color:#fff}.red-A700-fg{color:#d50000!important}.red-A700-border{border-color:#d50000!important}.red-A700-border-top{border-top-color:#d50000!important}.red-A700-border-right{border-right-color:#d50000!important}.red-A700-border-bottom{border-bottom-color:#d50000!important}.red-A700-border-left{border-left-color:#d50000!important}.pink-50-bg{background-color:#fce4ec!important}.md-pink-50-bg{background-color:#fce4ec!important;color:rgba(0,0,0,.87)}.pink-50-fg{color:#fce4ec!important}.pink-50-border{border-color:#fce4ec!important}.pink-50-border-top{border-top-color:#fce4ec!important}.pink-50-border-right{border-right-color:#fce4ec!important}.pink-50-border-bottom{border-bottom-color:#fce4ec!important}.pink-50-border-left{border-left-color:#fce4ec!important}.pink-100-bg{background-color:#f8bbd0!important}.md-pink-100-bg{background-color:#f8bbd0!important;color:rgba(0,0,0,.87)}.pink-100-fg{color:#f8bbd0!important}.pink-100-border{border-color:#f8bbd0!important}.pink-100-border-top{border-top-color:#f8bbd0!important}.pink-100-border-right{border-right-color:#f8bbd0!important}.pink-100-border-bottom{border-bottom-color:#f8bbd0!important}.pink-100-border-left{border-left-color:#f8bbd0!important}.pink-200-bg{background-color:#f48fb1!important}.md-pink-200-bg{background-color:#f48fb1!important;color:rgba(0,0,0,.87)}.pink-200-fg{color:#f48fb1!important}.pink-200-border{border-color:#f48fb1!important}.pink-200-border-top{border-top-color:#f48fb1!important}.pink-200-border-right{border-right-color:#f48fb1!important}.pink-200-border-bottom{border-bottom-color:#f48fb1!important}.pink-200-border-left{border-left-color:#f48fb1!important}.pink-300-bg{background-color:#f06292!important}.md-pink-300-bg{background-color:#f06292!important;color:rgba(255,255,255,.87)}.pink-300-fg{color:#f06292!important}.pink-300-border{border-color:#f06292!important}.pink-300-border-top{border-top-color:#f06292!important}.pink-300-border-right{border-right-color:#f06292!important}.pink-300-border-bottom{border-bottom-color:#f06292!important}.pink-300-border-left{border-left-color:#f06292!important}.pink-400-bg{background-color:#ec407a!important}.md-pink-400-bg{background-color:#ec407a!important;color:rgba(255,255,255,.87)}.pink-400-fg{color:#ec407a!important}.pink-400-border{border-color:#ec407a!important}.pink-400-border-top{border-top-color:#ec407a!important}.pink-400-border-right{border-right-color:#ec407a!important}.pink-400-border-bottom{border-bottom-color:#ec407a!important}.pink-400-border-left{border-left-color:#ec407a!important}.pink-500-bg{background-color:#e91e63!important}.md-pink-500-bg{background-color:#e91e63!important;color:#fff}.pink-500-fg{color:#e91e63!important}.pink-500-border{border-color:#e91e63!important}.pink-500-border-top{border-top-color:#e91e63!important}.pink-500-border-right{border-right-color:#e91e63!important}.pink-500-border-bottom{border-bottom-color:#e91e63!important}.pink-500-border-left{border-left-color:#e91e63!important}.md-pink-bg{background-color:#e91e63!important;color:#fff}.pink-bg{background-color:#e91e63!important}.pink-fg{color:#e91e63!important}.pink-border{border-color:#e91e63!important}.pink-border-top{border-top-color:#e91e63!important}.pink-border-right{border-right-color:#e91e63!important}.pink-border-bottom{border-bottom-color:#e91e63!important}.pink-border-left{border-left-color:#e91e63!important}.pink-600-bg{background-color:#d81b60!important}.md-pink-600-bg{background-color:#d81b60!important;color:#fff}.pink-600-fg{color:#d81b60!important}.pink-600-border{border-color:#d81b60!important}.pink-600-border-top{border-top-color:#d81b60!important}.pink-600-border-right{border-right-color:#d81b60!important}.pink-600-border-bottom{border-bottom-color:#d81b60!important}.pink-600-border-left{border-left-color:#d81b60!important}.pink-700-bg{background-color:#c2185b!important}.md-pink-700-bg{background-color:#c2185b!important;color:rgba(255,255,255,.87)}.pink-700-fg{color:#c2185b!important}.pink-700-border{border-color:#c2185b!important}.pink-700-border-top{border-top-color:#c2185b!important}.pink-700-border-right{border-right-color:#c2185b!important}.pink-700-border-bottom{border-bottom-color:#c2185b!important}.pink-700-border-left{border-left-color:#c2185b!important}.pink-800-bg{background-color:#ad1457!important}.md-pink-800-bg{background-color:#ad1457!important;color:rgba(255,255,255,.87)}.pink-800-fg{color:#ad1457!important}.pink-800-border{border-color:#ad1457!important}.pink-800-border-top{border-top-color:#ad1457!important}.pink-800-border-right{border-right-color:#ad1457!important}.pink-800-border-bottom{border-bottom-color:#ad1457!important}.pink-800-border-left{border-left-color:#ad1457!important}.pink-900-bg{background-color:#880e4f!important}.md-pink-900-bg{background-color:#880e4f!important;color:rgba(255,255,255,.87)}.pink-900-fg{color:#880e4f!important}.pink-900-border{border-color:#880e4f!important}.pink-900-border-top{border-top-color:#880e4f!important}.pink-900-border-right{border-right-color:#880e4f!important}.pink-900-border-bottom{border-bottom-color:#880e4f!important}.pink-900-border-left{border-left-color:#880e4f!important}.pink-A100-bg{background-color:#ff80ab!important}.md-pink-A100-bg{background-color:#ff80ab!important;color:rgba(0,0,0,.87)}.pink-A100-fg{color:#ff80ab!important}.pink-A100-border{border-color:#ff80ab!important}.pink-A100-border-top{border-top-color:#ff80ab!important}.pink-A100-border-right{border-right-color:#ff80ab!important}.pink-A100-border-bottom{border-bottom-color:#ff80ab!important}.pink-A100-border-left{border-left-color:#ff80ab!important}.pink-A200-bg{background-color:#ff4081!important}.md-pink-A200-bg{background-color:#ff4081!important;color:#fff}.pink-A200-fg{color:#ff4081!important}.pink-A200-border{border-color:#ff4081!important}.pink-A200-border-top{border-top-color:#ff4081!important}.pink-A200-border-right{border-right-color:#ff4081!important}.pink-A200-border-bottom{border-bottom-color:#ff4081!important}.pink-A200-border-left{border-left-color:#ff4081!important}.pink-A400-bg{background-color:#f50057!important}.md-pink-A400-bg{background-color:#f50057!important;color:#fff}.pink-A400-fg{color:#f50057!important}.pink-A400-border{border-color:#f50057!important}.pink-A400-border-top{border-top-color:#f50057!important}.pink-A400-border-right{border-right-color:#f50057!important}.pink-A400-border-bottom{border-bottom-color:#f50057!important}.pink-A400-border-left{border-left-color:#f50057!important}.pink-A700-bg{background-color:#c51162!important}.md-pink-A700-bg{background-color:#c51162!important;color:#fff}.pink-A700-fg{color:#c51162!important}.pink-A700-border{border-color:#c51162!important}.pink-A700-border-top{border-top-color:#c51162!important}.pink-A700-border-right{border-right-color:#c51162!important}.pink-A700-border-bottom{border-bottom-color:#c51162!important}.pink-A700-border-left{border-left-color:#c51162!important}.purple-50-bg{background-color:#f3e5f5!important}.md-purple-50-bg{background-color:#f3e5f5!important;color:rgba(0,0,0,.87)}.purple-50-fg{color:#f3e5f5!important}.purple-50-border{border-color:#f3e5f5!important}.purple-50-border-top{border-top-color:#f3e5f5!important}.purple-50-border-right{border-right-color:#f3e5f5!important}.purple-50-border-bottom{border-bottom-color:#f3e5f5!important}.purple-50-border-left{border-left-color:#f3e5f5!important}.purple-100-bg{background-color:#e1bee7!important}.md-purple-100-bg{background-color:#e1bee7!important;color:rgba(0,0,0,.87)}.purple-100-fg{color:#e1bee7!important}.purple-100-border{border-color:#e1bee7!important}.purple-100-border-top{border-top-color:#e1bee7!important}.purple-100-border-right{border-right-color:#e1bee7!important}.purple-100-border-bottom{border-bottom-color:#e1bee7!important}.purple-100-border-left{border-left-color:#e1bee7!important}.purple-200-bg{background-color:#ce93d8!important}.md-purple-200-bg{background-color:#ce93d8!important;color:rgba(0,0,0,.87)}.purple-200-fg{color:#ce93d8!important}.purple-200-border{border-color:#ce93d8!important}.purple-200-border-top{border-top-color:#ce93d8!important}.purple-200-border-right{border-right-color:#ce93d8!important}.purple-200-border-bottom{border-bottom-color:#ce93d8!important}.purple-200-border-left{border-left-color:#ce93d8!important}.purple-300-bg{background-color:#ba68c8!important}.md-purple-300-bg{background-color:#ba68c8!important;color:#fff}.purple-300-fg{color:#ba68c8!important}.purple-300-border{border-color:#ba68c8!important}.purple-300-border-top{border-top-color:#ba68c8!important}.purple-300-border-right{border-right-color:#ba68c8!important}.purple-300-border-bottom{border-bottom-color:#ba68c8!important}.purple-300-border-left{border-left-color:#ba68c8!important}.purple-400-bg{background-color:#ab47bc!important}.md-purple-400-bg{background-color:#ab47bc!important;color:#fff}.purple-400-fg{color:#ab47bc!important}.purple-400-border{border-color:#ab47bc!important}.purple-400-border-top{border-top-color:#ab47bc!important}.purple-400-border-right{border-right-color:#ab47bc!important}.purple-400-border-bottom{border-bottom-color:#ab47bc!important}.purple-400-border-left{border-left-color:#ab47bc!important}.purple-500-bg{background-color:#9c27b0!important}.md-purple-500-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-500-fg{color:#9c27b0!important}.purple-500-border{border-color:#9c27b0!important}.purple-500-border-top{border-top-color:#9c27b0!important}.purple-500-border-right{border-right-color:#9c27b0!important}.purple-500-border-bottom{border-bottom-color:#9c27b0!important}.purple-500-border-left{border-left-color:#9c27b0!important}.md-purple-bg{background-color:#9c27b0!important;color:rgba(255,255,255,.87)}.purple-bg{background-color:#9c27b0!important}.purple-fg{color:#9c27b0!important}.purple-border{border-color:#9c27b0!important}.purple-border-top{border-top-color:#9c27b0!important}.purple-border-right{border-right-color:#9c27b0!important}.purple-border-bottom{border-bottom-color:#9c27b0!important}.purple-border-left{border-left-color:#9c27b0!important}.purple-600-bg{background-color:#8e24aa!important}.md-purple-600-bg{background-color:#8e24aa!important;color:rgba(255,255,255,.87)}.purple-600-fg{color:#8e24aa!important}.purple-600-border{border-color:#8e24aa!important}.purple-600-border-top{border-top-color:#8e24aa!important}.purple-600-border-right{border-right-color:#8e24aa!important}.purple-600-border-bottom{border-bottom-color:#8e24aa!important}.purple-600-border-left{border-left-color:#8e24aa!important}.purple-700-bg{background-color:#7b1fa2!important}.md-purple-700-bg{background-color:#7b1fa2!important;color:rgba(255,255,255,.87)}.purple-700-fg{color:#7b1fa2!important}.purple-700-border{border-color:#7b1fa2!important}.purple-700-border-top{border-top-color:#7b1fa2!important}.purple-700-border-right{border-right-color:#7b1fa2!important}.purple-700-border-bottom{border-bottom-color:#7b1fa2!important}.purple-700-border-left{border-left-color:#7b1fa2!important}.purple-800-bg{background-color:#6a1b9a!important}.md-purple-800-bg{background-color:#6a1b9a!important;color:rgba(255,255,255,.87)}.purple-800-fg{color:#6a1b9a!important}.purple-800-border{border-color:#6a1b9a!important}.purple-800-border-top{border-top-color:#6a1b9a!important}.purple-800-border-right{border-right-color:#6a1b9a!important}.purple-800-border-bottom{border-bottom-color:#6a1b9a!important}.purple-800-border-left{border-left-color:#6a1b9a!important}.purple-900-bg{background-color:#4a148c!important}.md-purple-900-bg{background-color:#4a148c!important;color:rgba(255,255,255,.87)}.purple-900-fg{color:#4a148c!important}.purple-900-border{border-color:#4a148c!important}.purple-900-border-top{border-top-color:#4a148c!important}.purple-900-border-right{border-right-color:#4a148c!important}.purple-900-border-bottom{border-bottom-color:#4a148c!important}.purple-900-border-left{border-left-color:#4a148c!important}.purple-A100-bg{background-color:#ea80fc!important}.md-purple-A100-bg{background-color:#ea80fc!important;color:rgba(0,0,0,.87)}.purple-A100-fg{color:#ea80fc!important}.purple-A100-border{border-color:#ea80fc!important}.purple-A100-border-top{border-top-color:#ea80fc!important}.purple-A100-border-right{border-right-color:#ea80fc!important}.purple-A100-border-bottom{border-bottom-color:#ea80fc!important}.purple-A100-border-left{border-left-color:#ea80fc!important}.purple-A200-bg{background-color:#e040fb!important}.md-purple-A200-bg{background-color:#e040fb!important;color:#fff}.purple-A200-fg{color:#e040fb!important}.purple-A200-border{border-color:#e040fb!important}.purple-A200-border-top{border-top-color:#e040fb!important}.purple-A200-border-right{border-right-color:#e040fb!important}.purple-A200-border-bottom{border-bottom-color:#e040fb!important}.purple-A200-border-left{border-left-color:#e040fb!important}.purple-A400-bg{background-color:#d500f9!important}.md-purple-A400-bg{background-color:#d500f9!important;color:#fff}.purple-A400-fg{color:#d500f9!important}.purple-A400-border{border-color:#d500f9!important}.purple-A400-border-top{border-top-color:#d500f9!important}.purple-A400-border-right{border-right-color:#d500f9!important}.purple-A400-border-bottom{border-bottom-color:#d500f9!important}.purple-A400-border-left{border-left-color:#d500f9!important}.purple-A700-bg{background-color:#a0f!important}.md-purple-A700-bg{background-color:#a0f!important;color:#fff}.purple-A700-fg{color:#a0f!important}.purple-A700-border{border-color:#a0f!important}.purple-A700-border-top{border-top-color:#a0f!important}.purple-A700-border-right{border-right-color:#a0f!important}.purple-A700-border-bottom{border-bottom-color:#a0f!important}.purple-A700-border-left{border-left-color:#a0f!important}.deep-purple-50-bg{background-color:#ede7f6!important}.md-deep-purple-50-bg{background-color:#ede7f6!important;color:rgba(0,0,0,.87)}.deep-purple-50-fg{color:#ede7f6!important}.deep-purple-50-border{border-color:#ede7f6!important}.deep-purple-50-border-top{border-top-color:#ede7f6!important}.deep-purple-50-border-right{border-right-color:#ede7f6!important}.deep-purple-50-border-bottom{border-bottom-color:#ede7f6!important}.deep-purple-50-border-left{border-left-color:#ede7f6!important}.deep-purple-100-bg{background-color:#d1c4e9!important}.md-deep-purple-100-bg{background-color:#d1c4e9!important;color:rgba(0,0,0,.87)}.deep-purple-100-fg{color:#d1c4e9!important}.deep-purple-100-border{border-color:#d1c4e9!important}.deep-purple-100-border-top{border-top-color:#d1c4e9!important}.deep-purple-100-border-right{border-right-color:#d1c4e9!important}.deep-purple-100-border-bottom{border-bottom-color:#d1c4e9!important}.deep-purple-100-border-left{border-left-color:#d1c4e9!important}.deep-purple-200-bg{background-color:#b39ddb!important}.md-deep-purple-200-bg{background-color:#b39ddb!important;color:rgba(0,0,0,.87)}.deep-purple-200-fg{color:#b39ddb!important}.deep-purple-200-border{border-color:#b39ddb!important}.deep-purple-200-border-top{border-top-color:#b39ddb!important}.deep-purple-200-border-right{border-right-color:#b39ddb!important}.deep-purple-200-border-bottom{border-bottom-color:#b39ddb!important}.deep-purple-200-border-left{border-left-color:#b39ddb!important}.deep-purple-300-bg{background-color:#9575cd!important}.md-deep-purple-300-bg{background-color:#9575cd!important;color:#fff}.deep-purple-300-fg{color:#9575cd!important}.deep-purple-300-border{border-color:#9575cd!important}.deep-purple-300-border-top{border-top-color:#9575cd!important}.deep-purple-300-border-right{border-right-color:#9575cd!important}.deep-purple-300-border-bottom{border-bottom-color:#9575cd!important}.deep-purple-300-border-left{border-left-color:#9575cd!important}.deep-purple-400-bg{background-color:#7e57c2!important}.md-deep-purple-400-bg{background-color:#7e57c2!important;color:#fff}.deep-purple-400-fg{color:#7e57c2!important}.deep-purple-400-border{border-color:#7e57c2!important}.deep-purple-400-border-top{border-top-color:#7e57c2!important}.deep-purple-400-border-right{border-right-color:#7e57c2!important}.deep-purple-400-border-bottom{border-bottom-color:#7e57c2!important}.deep-purple-400-border-left{border-left-color:#7e57c2!important}.deep-purple-500-bg{background-color:#673ab7!important}.md-deep-purple-500-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-500-fg{color:#673ab7!important}.deep-purple-500-border{border-color:#673ab7!important}.deep-purple-500-border-top{border-top-color:#673ab7!important}.deep-purple-500-border-right{border-right-color:#673ab7!important}.deep-purple-500-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-500-border-left{border-left-color:#673ab7!important}.md-deep-purple-bg{background-color:#673ab7!important;color:rgba(255,255,255,.87)}.deep-purple-bg{background-color:#673ab7!important}.deep-purple-fg{color:#673ab7!important}.deep-purple-border{border-color:#673ab7!important}.deep-purple-border-top{border-top-color:#673ab7!important}.deep-purple-border-right{border-right-color:#673ab7!important}.deep-purple-border-bottom{border-bottom-color:#673ab7!important}.deep-purple-border-left{border-left-color:#673ab7!important}.deep-purple-600-bg{background-color:#5e35b1!important}.md-deep-purple-600-bg{background-color:#5e35b1!important;color:rgba(255,255,255,.87)}.deep-purple-600-fg{color:#5e35b1!important}.deep-purple-600-border{border-color:#5e35b1!important}.deep-purple-600-border-top{border-top-color:#5e35b1!important}.deep-purple-600-border-right{border-right-color:#5e35b1!important}.deep-purple-600-border-bottom{border-bottom-color:#5e35b1!important}.deep-purple-600-border-left{border-left-color:#5e35b1!important}.deep-purple-700-bg{background-color:#512da8!important}.md-deep-purple-700-bg{background-color:#512da8!important;color:rgba(255,255,255,.87)}.deep-purple-700-fg{color:#512da8!important}.deep-purple-700-border{border-color:#512da8!important}.deep-purple-700-border-top{border-top-color:#512da8!important}.deep-purple-700-border-right{border-right-color:#512da8!important}.deep-purple-700-border-bottom{border-bottom-color:#512da8!important}.deep-purple-700-border-left{border-left-color:#512da8!important}.deep-purple-800-bg{background-color:#4527a0!important}.md-deep-purple-800-bg{background-color:#4527a0!important;color:rgba(255,255,255,.87)}.deep-purple-800-fg{color:#4527a0!important}.deep-purple-800-border{border-color:#4527a0!important}.deep-purple-800-border-top{border-top-color:#4527a0!important}.deep-purple-800-border-right{border-right-color:#4527a0!important}.deep-purple-800-border-bottom{border-bottom-color:#4527a0!important}.deep-purple-800-border-left{border-left-color:#4527a0!important}.deep-purple-900-bg{background-color:#311b92!important}.md-deep-purple-900-bg{background-color:#311b92!important;color:rgba(255,255,255,.87)}.deep-purple-900-fg{color:#311b92!important}.deep-purple-900-border{border-color:#311b92!important}.deep-purple-900-border-top{border-top-color:#311b92!important}.deep-purple-900-border-right{border-right-color:#311b92!important}.deep-purple-900-border-bottom{border-bottom-color:#311b92!important}.deep-purple-900-border-left{border-left-color:#311b92!important}.deep-purple-A100-bg{background-color:#b388ff!important}.md-deep-purple-A100-bg{background-color:#b388ff!important;color:rgba(0,0,0,.87)}.deep-purple-A100-fg{color:#b388ff!important}.deep-purple-A100-border{border-color:#b388ff!important}.deep-purple-A100-border-top{border-top-color:#b388ff!important}.deep-purple-A100-border-right{border-right-color:#b388ff!important}.deep-purple-A100-border-bottom{border-bottom-color:#b388ff!important}.deep-purple-A100-border-left{border-left-color:#b388ff!important}.deep-purple-A200-bg{background-color:#7c4dff!important}.md-deep-purple-A200-bg{background-color:#7c4dff!important;color:#fff}.deep-purple-A200-fg{color:#7c4dff!important}.deep-purple-A200-border{border-color:#7c4dff!important}.deep-purple-A200-border-top{border-top-color:#7c4dff!important}.deep-purple-A200-border-right{border-right-color:#7c4dff!important}.deep-purple-A200-border-bottom{border-bottom-color:#7c4dff!important}.deep-purple-A200-border-left{border-left-color:#7c4dff!important}.deep-purple-A400-bg{background-color:#651fff!important}.md-deep-purple-A400-bg{background-color:#651fff!important;color:rgba(255,255,255,.87)}.deep-purple-A400-fg{color:#651fff!important}.deep-purple-A400-border{border-color:#651fff!important}.deep-purple-A400-border-top{border-top-color:#651fff!important}.deep-purple-A400-border-right{border-right-color:#651fff!important}.deep-purple-A400-border-bottom{border-bottom-color:#651fff!important}.deep-purple-A400-border-left{border-left-color:#651fff!important}.deep-purple-A700-bg{background-color:#6200ea!important}.md-deep-purple-A700-bg{background-color:#6200ea!important;color:rgba(255,255,255,.87)}.deep-purple-A700-fg{color:#6200ea!important}.deep-purple-A700-border{border-color:#6200ea!important}.deep-purple-A700-border-top{border-top-color:#6200ea!important}.deep-purple-A700-border-right{border-right-color:#6200ea!important}.deep-purple-A700-border-bottom{border-bottom-color:#6200ea!important}.deep-purple-A700-border-left{border-left-color:#6200ea!important}.indigo-50-bg{background-color:#e8eaf6!important}.md-indigo-50-bg{background-color:#e8eaf6!important;color:rgba(0,0,0,.87)}.indigo-50-fg{color:#e8eaf6!important}.indigo-50-border{border-color:#e8eaf6!important}.indigo-50-border-top{border-top-color:#e8eaf6!important}.indigo-50-border-right{border-right-color:#e8eaf6!important}.indigo-50-border-bottom{border-bottom-color:#e8eaf6!important}.indigo-50-border-left{border-left-color:#e8eaf6!important}.indigo-100-bg{background-color:#c5cae9!important}.md-indigo-100-bg{background-color:#c5cae9!important;color:rgba(0,0,0,.87)}.indigo-100-fg{color:#c5cae9!important}.indigo-100-border{border-color:#c5cae9!important}.indigo-100-border-top{border-top-color:#c5cae9!important}.indigo-100-border-right{border-right-color:#c5cae9!important}.indigo-100-border-bottom{border-bottom-color:#c5cae9!important}.indigo-100-border-left{border-left-color:#c5cae9!important}.indigo-200-bg{background-color:#9fa8da!important}.md-indigo-200-bg{background-color:#9fa8da!important;color:rgba(0,0,0,.87)}.indigo-200-fg{color:#9fa8da!important}.indigo-200-border{border-color:#9fa8da!important}.indigo-200-border-top{border-top-color:#9fa8da!important}.indigo-200-border-right{border-right-color:#9fa8da!important}.indigo-200-border-bottom{border-bottom-color:#9fa8da!important}.indigo-200-border-left{border-left-color:#9fa8da!important}.indigo-300-bg{background-color:#7986cb!important}.md-indigo-300-bg{background-color:#7986cb!important;color:#fff}.indigo-300-fg{color:#7986cb!important}.indigo-300-border{border-color:#7986cb!important}.indigo-300-border-top{border-top-color:#7986cb!important}.indigo-300-border-right{border-right-color:#7986cb!important}.indigo-300-border-bottom{border-bottom-color:#7986cb!important}.indigo-300-border-left{border-left-color:#7986cb!important}.indigo-400-bg{background-color:#5c6bc0!important}.md-indigo-400-bg{background-color:#5c6bc0!important;color:#fff}.indigo-400-fg{color:#5c6bc0!important}.indigo-400-border{border-color:#5c6bc0!important}.indigo-400-border-top{border-top-color:#5c6bc0!important}.indigo-400-border-right{border-right-color:#5c6bc0!important}.indigo-400-border-bottom{border-bottom-color:#5c6bc0!important}.indigo-400-border-left{border-left-color:#5c6bc0!important}.indigo-500-bg{background-color:#3f51b5!important}.md-indigo-500-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-500-fg{color:#3f51b5!important}.indigo-500-border{border-color:#3f51b5!important}.indigo-500-border-top{border-top-color:#3f51b5!important}.indigo-500-border-right{border-right-color:#3f51b5!important}.indigo-500-border-bottom{border-bottom-color:#3f51b5!important}.indigo-500-border-left{border-left-color:#3f51b5!important}.md-indigo-bg{background-color:#3f51b5!important;color:rgba(255,255,255,.87)}.indigo-bg{background-color:#3f51b5!important}.indigo-fg{color:#3f51b5!important}.indigo-border{border-color:#3f51b5!important}.indigo-border-top{border-top-color:#3f51b5!important}.indigo-border-right{border-right-color:#3f51b5!important}.indigo-border-bottom{border-bottom-color:#3f51b5!important}.indigo-border-left{border-left-color:#3f51b5!important}.indigo-600-bg{background-color:#3949ab!important}.md-indigo-600-bg{background-color:#3949ab!important;color:rgba(255,255,255,.87)}.indigo-600-fg{color:#3949ab!important}.indigo-600-border{border-color:#3949ab!important}.indigo-600-border-top{border-top-color:#3949ab!important}.indigo-600-border-right{border-right-color:#3949ab!important}.indigo-600-border-bottom{border-bottom-color:#3949ab!important}.indigo-600-border-left{border-left-color:#3949ab!important}.indigo-700-bg{background-color:#303f9f!important}.md-indigo-700-bg{background-color:#303f9f!important;color:rgba(255,255,255,.87)}.indigo-700-fg{color:#303f9f!important}.indigo-700-border{border-color:#303f9f!important}.indigo-700-border-top{border-top-color:#303f9f!important}.indigo-700-border-right{border-right-color:#303f9f!important}.indigo-700-border-bottom{border-bottom-color:#303f9f!important}.indigo-700-border-left{border-left-color:#303f9f!important}.indigo-800-bg{background-color:#283593!important}.md-indigo-800-bg{background-color:#283593!important;color:rgba(255,255,255,.87)}.indigo-800-fg{color:#283593!important}.indigo-800-border{border-color:#283593!important}.indigo-800-border-top{border-top-color:#283593!important}.indigo-800-border-right{border-right-color:#283593!important}.indigo-800-border-bottom{border-bottom-color:#283593!important}.indigo-800-border-left{border-left-color:#283593!important}.indigo-900-bg{background-color:#1a237e!important}.md-indigo-900-bg{background-color:#1a237e!important;color:rgba(255,255,255,.87)}.indigo-900-fg{color:#1a237e!important}.indigo-900-border{border-color:#1a237e!important}.indigo-900-border-top{border-top-color:#1a237e!important}.indigo-900-border-right{border-right-color:#1a237e!important}.indigo-900-border-bottom{border-bottom-color:#1a237e!important}.indigo-900-border-left{border-left-color:#1a237e!important}.indigo-A100-bg{background-color:#8c9eff!important}.md-indigo-A100-bg{background-color:#8c9eff!important;color:rgba(0,0,0,.87)}.indigo-A100-fg{color:#8c9eff!important}.indigo-A100-border{border-color:#8c9eff!important}.indigo-A100-border-top{border-top-color:#8c9eff!important}.indigo-A100-border-right{border-right-color:#8c9eff!important}.indigo-A100-border-bottom{border-bottom-color:#8c9eff!important}.indigo-A100-border-left{border-left-color:#8c9eff!important}.indigo-A200-bg{background-color:#536dfe!important}.md-indigo-A200-bg{background-color:#536dfe!important;color:#fff}.indigo-A200-fg{color:#536dfe!important}.indigo-A200-border{border-color:#536dfe!important}.indigo-A200-border-top{border-top-color:#536dfe!important}.indigo-A200-border-right{border-right-color:#536dfe!important}.indigo-A200-border-bottom{border-bottom-color:#536dfe!important}.indigo-A200-border-left{border-left-color:#536dfe!important}.indigo-A400-bg{background-color:#3d5afe!important}.md-indigo-A400-bg{background-color:#3d5afe!important;color:#fff}.indigo-A400-fg{color:#3d5afe!important}.indigo-A400-border{border-color:#3d5afe!important}.indigo-A400-border-top{border-top-color:#3d5afe!important}.indigo-A400-border-right{border-right-color:#3d5afe!important}.indigo-A400-border-bottom{border-bottom-color:#3d5afe!important}.indigo-A400-border-left{border-left-color:#3d5afe!important}.indigo-A700-bg{background-color:#304ffe!important}.md-indigo-A700-bg{background-color:#304ffe!important;color:rgba(255,255,255,.87)}.indigo-A700-fg{color:#304ffe!important}.indigo-A700-border{border-color:#304ffe!important}.indigo-A700-border-top{border-top-color:#304ffe!important}.indigo-A700-border-right{border-right-color:#304ffe!important}.indigo-A700-border-bottom{border-bottom-color:#304ffe!important}.indigo-A700-border-left{border-left-color:#304ffe!important}.blue-50-bg{background-color:#e3f2fd!important}.md-blue-50-bg{background-color:#e3f2fd!important;color:rgba(0,0,0,.87)}.blue-50-fg{color:#e3f2fd!important}.blue-50-border{border-color:#e3f2fd!important}.blue-50-border-top{border-top-color:#e3f2fd!important}.blue-50-border-right{border-right-color:#e3f2fd!important}.blue-50-border-bottom{border-bottom-color:#e3f2fd!important}.blue-50-border-left{border-left-color:#e3f2fd!important}.blue-100-bg{background-color:#bbdefb!important}.md-blue-100-bg{background-color:#bbdefb!important;color:rgba(0,0,0,.87)}.blue-100-fg{color:#bbdefb!important}.blue-100-border{border-color:#bbdefb!important}.blue-100-border-top{border-top-color:#bbdefb!important}.blue-100-border-right{border-right-color:#bbdefb!important}.blue-100-border-bottom{border-bottom-color:#bbdefb!important}.blue-100-border-left{border-left-color:#bbdefb!important}.blue-200-bg{background-color:#90caf9!important}.md-blue-200-bg{background-color:#90caf9!important;color:rgba(0,0,0,.87)}.blue-200-fg{color:#90caf9!important}.blue-200-border{border-color:#90caf9!important}.blue-200-border-top{border-top-color:#90caf9!important}.blue-200-border-right{border-right-color:#90caf9!important}.blue-200-border-bottom{border-bottom-color:#90caf9!important}.blue-200-border-left{border-left-color:#90caf9!important}.blue-300-bg{background-color:#64b5f6!important}.md-blue-300-bg{background-color:#64b5f6!important;color:rgba(0,0,0,.87)}.blue-300-fg{color:#64b5f6!important}.blue-300-border{border-color:#64b5f6!important}.blue-300-border-top{border-top-color:#64b5f6!important}.blue-300-border-right{border-right-color:#64b5f6!important}.blue-300-border-bottom{border-bottom-color:#64b5f6!important}.blue-300-border-left{border-left-color:#64b5f6!important}.blue-400-bg{background-color:#42a5f5!important}.md-blue-400-bg{background-color:#42a5f5!important;color:rgba(0,0,0,.87)}.blue-400-fg{color:#42a5f5!important}.blue-400-border{border-color:#42a5f5!important}.blue-400-border-top{border-top-color:#42a5f5!important}.blue-400-border-right{border-right-color:#42a5f5!important}.blue-400-border-bottom{border-bottom-color:#42a5f5!important}.blue-400-border-left{border-left-color:#42a5f5!important}.blue-500-bg{background-color:#2196f3!important}.md-blue-500-bg{background-color:#2196f3!important;color:#fff}.blue-500-fg{color:#2196f3!important}.blue-500-border{border-color:#2196f3!important}.blue-500-border-top{border-top-color:#2196f3!important}.blue-500-border-right{border-right-color:#2196f3!important}.blue-500-border-bottom{border-bottom-color:#2196f3!important}.blue-500-border-left{border-left-color:#2196f3!important}.md-blue-bg{background-color:#2196f3!important;color:#fff}.blue-bg{background-color:#2196f3!important}.blue-fg{color:#2196f3!important}.blue-border{border-color:#2196f3!important}.blue-border-top{border-top-color:#2196f3!important}.blue-border-right{border-right-color:#2196f3!important}.blue-border-bottom{border-bottom-color:#2196f3!important}.blue-border-left{border-left-color:#2196f3!important}.blue-600-bg{background-color:#1e88e5!important}.md-blue-600-bg{background-color:#1e88e5!important;color:#fff}.blue-600-fg{color:#1e88e5!important}.blue-600-border{border-color:#1e88e5!important}.blue-600-border-top{border-top-color:#1e88e5!important}.blue-600-border-right{border-right-color:#1e88e5!important}.blue-600-border-bottom{border-bottom-color:#1e88e5!important}.blue-600-border-left{border-left-color:#1e88e5!important}.blue-700-bg{background-color:#1976d2!important}.md-blue-700-bg{background-color:#1976d2!important;color:#fff}.blue-700-fg{color:#1976d2!important}.blue-700-border{border-color:#1976d2!important}.blue-700-border-top{border-top-color:#1976d2!important}.blue-700-border-right{border-right-color:#1976d2!important}.blue-700-border-bottom{border-bottom-color:#1976d2!important}.blue-700-border-left{border-left-color:#1976d2!important}.blue-800-bg{background-color:#1565c0!important}.md-blue-800-bg{background-color:#1565c0!important;color:rgba(255,255,255,.87)}.blue-800-fg{color:#1565c0!important}.blue-800-border{border-color:#1565c0!important}.blue-800-border-top{border-top-color:#1565c0!important}.blue-800-border-right{border-right-color:#1565c0!important}.blue-800-border-bottom{border-bottom-color:#1565c0!important}.blue-800-border-left{border-left-color:#1565c0!important}.blue-900-bg{background-color:#0d47a1!important}.md-blue-900-bg{background-color:#0d47a1!important;color:rgba(255,255,255,.87)}.blue-900-fg{color:#0d47a1!important}.blue-900-border{border-color:#0d47a1!important}.blue-900-border-top{border-top-color:#0d47a1!important}.blue-900-border-right{border-right-color:#0d47a1!important}.blue-900-border-bottom{border-bottom-color:#0d47a1!important}.blue-900-border-left{border-left-color:#0d47a1!important}.blue-A100-bg{background-color:#82b1ff!important}.md-blue-A100-bg{background-color:#82b1ff!important;color:rgba(0,0,0,.87)}.blue-A100-fg{color:#82b1ff!important}.blue-A100-border{border-color:#82b1ff!important}.blue-A100-border-top{border-top-color:#82b1ff!important}.blue-A100-border-right{border-right-color:#82b1ff!important}.blue-A100-border-bottom{border-bottom-color:#82b1ff!important}.blue-A100-border-left{border-left-color:#82b1ff!important}.blue-A200-bg{background-color:#448aff!important}.md-blue-A200-bg{background-color:#448aff!important;color:#fff}.blue-A200-fg{color:#448aff!important}.blue-A200-border{border-color:#448aff!important}.blue-A200-border-top{border-top-color:#448aff!important}.blue-A200-border-right{border-right-color:#448aff!important}.blue-A200-border-bottom{border-bottom-color:#448aff!important}.blue-A200-border-left{border-left-color:#448aff!important}.blue-A400-bg{background-color:#2979ff!important}.md-blue-A400-bg{background-color:#2979ff!important;color:#fff}.blue-A400-fg{color:#2979ff!important}.blue-A400-border{border-color:#2979ff!important}.blue-A400-border-top{border-top-color:#2979ff!important}.blue-A400-border-right{border-right-color:#2979ff!important}.blue-A400-border-bottom{border-bottom-color:#2979ff!important}.blue-A400-border-left{border-left-color:#2979ff!important}.blue-A700-bg{background-color:#2962ff!important}.md-blue-A700-bg{background-color:#2962ff!important;color:#fff}.blue-A700-fg{color:#2962ff!important}.blue-A700-border{border-color:#2962ff!important}.blue-A700-border-top{border-top-color:#2962ff!important}.blue-A700-border-right{border-right-color:#2962ff!important}.blue-A700-border-bottom{border-bottom-color:#2962ff!important}.blue-A700-border-left{border-left-color:#2962ff!important}.light-blue-50-bg{background-color:#e1f5fe!important}.md-light-blue-50-bg{background-color:#e1f5fe!important;color:rgba(0,0,0,.87)}.light-blue-50-fg{color:#e1f5fe!important}.light-blue-50-border{border-color:#e1f5fe!important}.light-blue-50-border-top{border-top-color:#e1f5fe!important}.light-blue-50-border-right{border-right-color:#e1f5fe!important}.light-blue-50-border-bottom{border-bottom-color:#e1f5fe!important}.light-blue-50-border-left{border-left-color:#e1f5fe!important}.light-blue-100-bg{background-color:#b3e5fc!important}.md-light-blue-100-bg{background-color:#b3e5fc!important;color:rgba(0,0,0,.87)}.light-blue-100-fg{color:#b3e5fc!important}.light-blue-100-border{border-color:#b3e5fc!important}.light-blue-100-border-top{border-top-color:#b3e5fc!important}.light-blue-100-border-right{border-right-color:#b3e5fc!important}.light-blue-100-border-bottom{border-bottom-color:#b3e5fc!important}.light-blue-100-border-left{border-left-color:#b3e5fc!important}.light-blue-200-bg{background-color:#81d4fa!important}.md-light-blue-200-bg{background-color:#81d4fa!important;color:rgba(0,0,0,.87)}.light-blue-200-fg{color:#81d4fa!important}.light-blue-200-border{border-color:#81d4fa!important}.light-blue-200-border-top{border-top-color:#81d4fa!important}.light-blue-200-border-right{border-right-color:#81d4fa!important}.light-blue-200-border-bottom{border-bottom-color:#81d4fa!important}.light-blue-200-border-left{border-left-color:#81d4fa!important}.light-blue-300-bg{background-color:#4fc3f7!important}.md-light-blue-300-bg{background-color:#4fc3f7!important;color:rgba(0,0,0,.87)}.light-blue-300-fg{color:#4fc3f7!important}.light-blue-300-border{border-color:#4fc3f7!important}.light-blue-300-border-top{border-top-color:#4fc3f7!important}.light-blue-300-border-right{border-right-color:#4fc3f7!important}.light-blue-300-border-bottom{border-bottom-color:#4fc3f7!important}.light-blue-300-border-left{border-left-color:#4fc3f7!important}.light-blue-400-bg{background-color:#29b6f6!important}.md-light-blue-400-bg{background-color:#29b6f6!important;color:rgba(0,0,0,.87)}.light-blue-400-fg{color:#29b6f6!important}.light-blue-400-border{border-color:#29b6f6!important}.light-blue-400-border-top{border-top-color:#29b6f6!important}.light-blue-400-border-right{border-right-color:#29b6f6!important}.light-blue-400-border-bottom{border-bottom-color:#29b6f6!important}.light-blue-400-border-left{border-left-color:#29b6f6!important}.light-blue-500-bg{background-color:#03a9f4!important}.md-light-blue-500-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-500-fg{color:#03a9f4!important}.light-blue-500-border{border-color:#03a9f4!important}.light-blue-500-border-top{border-top-color:#03a9f4!important}.light-blue-500-border-right{border-right-color:#03a9f4!important}.light-blue-500-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-500-border-left{border-left-color:#03a9f4!important}.md-light-blue-bg{background-color:#03a9f4!important;color:rgba(0,0,0,.87)}.light-blue-bg{background-color:#03a9f4!important}.light-blue-fg{color:#03a9f4!important}.light-blue-border{border-color:#03a9f4!important}.light-blue-border-top{border-top-color:#03a9f4!important}.light-blue-border-right{border-right-color:#03a9f4!important}.light-blue-border-bottom{border-bottom-color:#03a9f4!important}.light-blue-border-left{border-left-color:#03a9f4!important}.light-blue-600-bg{background-color:#039be5!important}.md-light-blue-600-bg{background-color:#039be5!important;color:#fff}.light-blue-600-fg{color:#039be5!important}.light-blue-600-border{border-color:#039be5!important}.light-blue-600-border-top{border-top-color:#039be5!important}.light-blue-600-border-right{border-right-color:#039be5!important}.light-blue-600-border-bottom{border-bottom-color:#039be5!important}.light-blue-600-border-left{border-left-color:#039be5!important}.light-blue-700-bg{background-color:#0288d1!important}.md-light-blue-700-bg{background-color:#0288d1!important;color:#fff}.light-blue-700-fg{color:#0288d1!important}.light-blue-700-border{border-color:#0288d1!important}.light-blue-700-border-top{border-top-color:#0288d1!important}.light-blue-700-border-right{border-right-color:#0288d1!important}.light-blue-700-border-bottom{border-bottom-color:#0288d1!important}.light-blue-700-border-left{border-left-color:#0288d1!important}.light-blue-800-bg{background-color:#0277bd!important}.md-light-blue-800-bg{background-color:#0277bd!important;color:#fff}.light-blue-800-fg{color:#0277bd!important}.light-blue-800-border{border-color:#0277bd!important}.light-blue-800-border-top{border-top-color:#0277bd!important}.light-blue-800-border-right{border-right-color:#0277bd!important}.light-blue-800-border-bottom{border-bottom-color:#0277bd!important}.light-blue-800-border-left{border-left-color:#0277bd!important}.light-blue-900-bg{background-color:#01579b!important}.md-light-blue-900-bg{background-color:#01579b!important;color:#fff}.light-blue-900-fg{color:#01579b!important}.light-blue-900-border{border-color:#01579b!important}.light-blue-900-border-top{border-top-color:#01579b!important}.light-blue-900-border-right{border-right-color:#01579b!important}.light-blue-900-border-bottom{border-bottom-color:#01579b!important}.light-blue-900-border-left{border-left-color:#01579b!important}.light-blue-A100-bg{background-color:#80d8ff!important}.md-light-blue-A100-bg{background-color:#80d8ff!important;color:rgba(0,0,0,.87)}.light-blue-A100-fg{color:#80d8ff!important}.light-blue-A100-border{border-color:#80d8ff!important}.light-blue-A100-border-top{border-top-color:#80d8ff!important}.light-blue-A100-border-right{border-right-color:#80d8ff!important}.light-blue-A100-border-bottom{border-bottom-color:#80d8ff!important}.light-blue-A100-border-left{border-left-color:#80d8ff!important}.light-blue-A200-bg{background-color:#40c4ff!important}.md-light-blue-A200-bg{background-color:#40c4ff!important;color:rgba(0,0,0,.87)}.light-blue-A200-fg{color:#40c4ff!important}.light-blue-A200-border{border-color:#40c4ff!important}.light-blue-A200-border-top{border-top-color:#40c4ff!important}.light-blue-A200-border-right{border-right-color:#40c4ff!important}.light-blue-A200-border-bottom{border-bottom-color:#40c4ff!important}.light-blue-A200-border-left{border-left-color:#40c4ff!important}.light-blue-A400-bg{background-color:#00b0ff!important}.md-light-blue-A400-bg{background-color:#00b0ff!important;color:rgba(0,0,0,.87)}.light-blue-A400-fg{color:#00b0ff!important}.light-blue-A400-border{border-color:#00b0ff!important}.light-blue-A400-border-top{border-top-color:#00b0ff!important}.light-blue-A400-border-right{border-right-color:#00b0ff!important}.light-blue-A400-border-bottom{border-bottom-color:#00b0ff!important}.light-blue-A400-border-left{border-left-color:#00b0ff!important}.light-blue-A700-bg{background-color:#0091ea!important}.md-light-blue-A700-bg{background-color:#0091ea!important;color:#fff}.light-blue-A700-fg{color:#0091ea!important}.light-blue-A700-border{border-color:#0091ea!important}.light-blue-A700-border-top{border-top-color:#0091ea!important}.light-blue-A700-border-right{border-right-color:#0091ea!important}.light-blue-A700-border-bottom{border-bottom-color:#0091ea!important}.light-blue-A700-border-left{border-left-color:#0091ea!important}.cyan-50-bg{background-color:#e0f7fa!important}.md-cyan-50-bg{background-color:#e0f7fa!important;color:rgba(0,0,0,.87)}.cyan-50-fg{color:#e0f7fa!important}.cyan-50-border{border-color:#e0f7fa!important}.cyan-50-border-top{border-top-color:#e0f7fa!important}.cyan-50-border-right{border-right-color:#e0f7fa!important}.cyan-50-border-bottom{border-bottom-color:#e0f7fa!important}.cyan-50-border-left{border-left-color:#e0f7fa!important}.cyan-100-bg{background-color:#b2ebf2!important}.md-cyan-100-bg{background-color:#b2ebf2!important;color:rgba(0,0,0,.87)}.cyan-100-fg{color:#b2ebf2!important}.cyan-100-border{border-color:#b2ebf2!important}.cyan-100-border-top{border-top-color:#b2ebf2!important}.cyan-100-border-right{border-right-color:#b2ebf2!important}.cyan-100-border-bottom{border-bottom-color:#b2ebf2!important}.cyan-100-border-left{border-left-color:#b2ebf2!important}.cyan-200-bg{background-color:#80deea!important}.md-cyan-200-bg{background-color:#80deea!important;color:rgba(0,0,0,.87)}.cyan-200-fg{color:#80deea!important}.cyan-200-border{border-color:#80deea!important}.cyan-200-border-top{border-top-color:#80deea!important}.cyan-200-border-right{border-right-color:#80deea!important}.cyan-200-border-bottom{border-bottom-color:#80deea!important}.cyan-200-border-left{border-left-color:#80deea!important}.cyan-300-bg{background-color:#4dd0e1!important}.md-cyan-300-bg{background-color:#4dd0e1!important;color:rgba(0,0,0,.87)}.cyan-300-fg{color:#4dd0e1!important}.cyan-300-border{border-color:#4dd0e1!important}.cyan-300-border-top{border-top-color:#4dd0e1!important}.cyan-300-border-right{border-right-color:#4dd0e1!important}.cyan-300-border-bottom{border-bottom-color:#4dd0e1!important}.cyan-300-border-left{border-left-color:#4dd0e1!important}.cyan-400-bg{background-color:#26c6da!important}.md-cyan-400-bg{background-color:#26c6da!important;color:rgba(0,0,0,.87)}.cyan-400-fg{color:#26c6da!important}.cyan-400-border{border-color:#26c6da!important}.cyan-400-border-top{border-top-color:#26c6da!important}.cyan-400-border-right{border-right-color:#26c6da!important}.cyan-400-border-bottom{border-bottom-color:#26c6da!important}.cyan-400-border-left{border-left-color:#26c6da!important}.cyan-500-bg{background-color:#00bcd4!important}.md-cyan-500-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-500-fg{color:#00bcd4!important}.cyan-500-border{border-color:#00bcd4!important}.cyan-500-border-top{border-top-color:#00bcd4!important}.cyan-500-border-right{border-right-color:#00bcd4!important}.cyan-500-border-bottom{border-bottom-color:#00bcd4!important}.cyan-500-border-left{border-left-color:#00bcd4!important}.md-cyan-bg{background-color:#00bcd4!important;color:rgba(0,0,0,.87)}.cyan-bg{background-color:#00bcd4!important}.cyan-fg{color:#00bcd4!important}.cyan-border{border-color:#00bcd4!important}.cyan-border-top{border-top-color:#00bcd4!important}.cyan-border-right{border-right-color:#00bcd4!important}.cyan-border-bottom{border-bottom-color:#00bcd4!important}.cyan-border-left{border-left-color:#00bcd4!important}.cyan-600-bg{background-color:#00acc1!important}.md-cyan-600-bg{background-color:#00acc1!important;color:rgba(0,0,0,.87)}.cyan-600-fg{color:#00acc1!important}.cyan-600-border{border-color:#00acc1!important}.cyan-600-border-top{border-top-color:#00acc1!important}.cyan-600-border-right{border-right-color:#00acc1!important}.cyan-600-border-bottom{border-bottom-color:#00acc1!important}.cyan-600-border-left{border-left-color:#00acc1!important}.cyan-700-bg{background-color:#0097a7!important}.md-cyan-700-bg{background-color:#0097a7!important;color:#fff}.cyan-700-fg{color:#0097a7!important}.cyan-700-border{border-color:#0097a7!important}.cyan-700-border-top{border-top-color:#0097a7!important}.cyan-700-border-right{border-right-color:#0097a7!important}.cyan-700-border-bottom{border-bottom-color:#0097a7!important}.cyan-700-border-left{border-left-color:#0097a7!important}.cyan-800-bg{background-color:#00838f!important}.md-cyan-800-bg{background-color:#00838f!important;color:#fff}.cyan-800-fg{color:#00838f!important}.cyan-800-border{border-color:#00838f!important}.cyan-800-border-top{border-top-color:#00838f!important}.cyan-800-border-right{border-right-color:#00838f!important}.cyan-800-border-bottom{border-bottom-color:#00838f!important}.cyan-800-border-left{border-left-color:#00838f!important}.cyan-900-bg{background-color:#006064!important}.md-cyan-900-bg{background-color:#006064!important;color:#fff}.cyan-900-fg{color:#006064!important}.cyan-900-border{border-color:#006064!important}.cyan-900-border-top{border-top-color:#006064!important}.cyan-900-border-right{border-right-color:#006064!important}.cyan-900-border-bottom{border-bottom-color:#006064!important}.cyan-900-border-left{border-left-color:#006064!important}.cyan-A100-bg{background-color:#84ffff!important}.md-cyan-A100-bg{background-color:#84ffff!important;color:rgba(0,0,0,.87)}.cyan-A100-fg{color:#84ffff!important}.cyan-A100-border{border-color:#84ffff!important}.cyan-A100-border-top{border-top-color:#84ffff!important}.cyan-A100-border-right{border-right-color:#84ffff!important}.cyan-A100-border-bottom{border-bottom-color:#84ffff!important}.cyan-A100-border-left{border-left-color:#84ffff!important}.cyan-A200-bg{background-color:#18ffff!important}.md-cyan-A200-bg{background-color:#18ffff!important;color:rgba(0,0,0,.87)}.cyan-A200-fg{color:#18ffff!important}.cyan-A200-border{border-color:#18ffff!important}.cyan-A200-border-top{border-top-color:#18ffff!important}.cyan-A200-border-right{border-right-color:#18ffff!important}.cyan-A200-border-bottom{border-bottom-color:#18ffff!important}.cyan-A200-border-left{border-left-color:#18ffff!important}.cyan-A400-bg{background-color:#00e5ff!important}.md-cyan-A400-bg{background-color:#00e5ff!important;color:rgba(0,0,0,.87)}.cyan-A400-fg{color:#00e5ff!important}.cyan-A400-border{border-color:#00e5ff!important}.cyan-A400-border-top{border-top-color:#00e5ff!important}.cyan-A400-border-right{border-right-color:#00e5ff!important}.cyan-A400-border-bottom{border-bottom-color:#00e5ff!important}.cyan-A400-border-left{border-left-color:#00e5ff!important}.cyan-A700-bg{background-color:#00b8d4!important}.md-cyan-A700-bg{background-color:#00b8d4!important;color:rgba(0,0,0,.87)}.cyan-A700-fg{color:#00b8d4!important}.cyan-A700-border{border-color:#00b8d4!important}.cyan-A700-border-top{border-top-color:#00b8d4!important}.cyan-A700-border-right{border-right-color:#00b8d4!important}.cyan-A700-border-bottom{border-bottom-color:#00b8d4!important}.cyan-A700-border-left{border-left-color:#00b8d4!important}.teal-50-bg{background-color:#e0f2f1!important}.md-teal-50-bg{background-color:#e0f2f1!important;color:rgba(0,0,0,.87)}.teal-50-fg{color:#e0f2f1!important}.teal-50-border{border-color:#e0f2f1!important}.teal-50-border-top{border-top-color:#e0f2f1!important}.teal-50-border-right{border-right-color:#e0f2f1!important}.teal-50-border-bottom{border-bottom-color:#e0f2f1!important}.teal-50-border-left{border-left-color:#e0f2f1!important}.teal-100-bg{background-color:#b2dfdb!important}.md-teal-100-bg{background-color:#b2dfdb!important;color:rgba(0,0,0,.87)}.teal-100-fg{color:#b2dfdb!important}.teal-100-border{border-color:#b2dfdb!important}.teal-100-border-top{border-top-color:#b2dfdb!important}.teal-100-border-right{border-right-color:#b2dfdb!important}.teal-100-border-bottom{border-bottom-color:#b2dfdb!important}.teal-100-border-left{border-left-color:#b2dfdb!important}.teal-200-bg{background-color:#80cbc4!important}.md-teal-200-bg{background-color:#80cbc4!important;color:rgba(0,0,0,.87)}.teal-200-fg{color:#80cbc4!important}.teal-200-border{border-color:#80cbc4!important}.teal-200-border-top{border-top-color:#80cbc4!important}.teal-200-border-right{border-right-color:#80cbc4!important}.teal-200-border-bottom{border-bottom-color:#80cbc4!important}.teal-200-border-left{border-left-color:#80cbc4!important}.teal-300-bg{background-color:#4db6ac!important}.md-teal-300-bg{background-color:#4db6ac!important;color:rgba(0,0,0,.87)}.teal-300-fg{color:#4db6ac!important}.teal-300-border{border-color:#4db6ac!important}.teal-300-border-top{border-top-color:#4db6ac!important}.teal-300-border-right{border-right-color:#4db6ac!important}.teal-300-border-bottom{border-bottom-color:#4db6ac!important}.teal-300-border-left{border-left-color:#4db6ac!important}.teal-400-bg{background-color:#26a69a!important}.md-teal-400-bg{background-color:#26a69a!important;color:rgba(0,0,0,.87)}.teal-400-fg{color:#26a69a!important}.teal-400-border{border-color:#26a69a!important}.teal-400-border-top{border-top-color:#26a69a!important}.teal-400-border-right{border-right-color:#26a69a!important}.teal-400-border-bottom{border-bottom-color:#26a69a!important}.teal-400-border-left{border-left-color:#26a69a!important}.teal-500-bg{background-color:#009688!important}.md-teal-500-bg{background-color:#009688!important;color:#fff}.teal-500-fg{color:#009688!important}.teal-500-border{border-color:#009688!important}.teal-500-border-top{border-top-color:#009688!important}.teal-500-border-right{border-right-color:#009688!important}.teal-500-border-bottom{border-bottom-color:#009688!important}.teal-500-border-left{border-left-color:#009688!important}.md-teal-bg{background-color:#009688!important;color:#fff}.teal-bg{background-color:#009688!important}.teal-fg{color:#009688!important}.teal-border{border-color:#009688!important}.teal-border-top{border-top-color:#009688!important}.teal-border-right{border-right-color:#009688!important}.teal-border-bottom{border-bottom-color:#009688!important}.teal-border-left{border-left-color:#009688!important}.teal-600-bg{background-color:#00897b!important}.md-teal-600-bg{background-color:#00897b!important;color:#fff}.teal-600-fg{color:#00897b!important}.teal-600-border{border-color:#00897b!important}.teal-600-border-top{border-top-color:#00897b!important}.teal-600-border-right{border-right-color:#00897b!important}.teal-600-border-bottom{border-bottom-color:#00897b!important}.teal-600-border-left{border-left-color:#00897b!important}.teal-700-bg{background-color:#00796b!important}.md-teal-700-bg{background-color:#00796b!important;color:#fff}.teal-700-fg{color:#00796b!important}.teal-700-border{border-color:#00796b!important}.teal-700-border-top{border-top-color:#00796b!important}.teal-700-border-right{border-right-color:#00796b!important}.teal-700-border-bottom{border-bottom-color:#00796b!important}.teal-700-border-left{border-left-color:#00796b!important}.teal-800-bg{background-color:#00695c!important}.md-teal-800-bg{background-color:#00695c!important;color:rgba(255,255,255,.87)}.teal-800-fg{color:#00695c!important}.teal-800-border{border-color:#00695c!important}.teal-800-border-top{border-top-color:#00695c!important}.teal-800-border-right{border-right-color:#00695c!important}.teal-800-border-bottom{border-bottom-color:#00695c!important}.teal-800-border-left{border-left-color:#00695c!important}.teal-900-bg{background-color:#004d40!important}.md-teal-900-bg{background-color:#004d40!important;color:rgba(255,255,255,.87)}.teal-900-fg{color:#004d40!important}.teal-900-border{border-color:#004d40!important}.teal-900-border-top{border-top-color:#004d40!important}.teal-900-border-right{border-right-color:#004d40!important}.teal-900-border-bottom{border-bottom-color:#004d40!important}.teal-900-border-left{border-left-color:#004d40!important}.teal-A100-bg{background-color:#a7ffeb!important}.md-teal-A100-bg{background-color:#a7ffeb!important;color:rgba(0,0,0,.87)}.teal-A100-fg{color:#a7ffeb!important}.teal-A100-border{border-color:#a7ffeb!important}.teal-A100-border-top{border-top-color:#a7ffeb!important}.teal-A100-border-right{border-right-color:#a7ffeb!important}.teal-A100-border-bottom{border-bottom-color:#a7ffeb!important}.teal-A100-border-left{border-left-color:#a7ffeb!important}.teal-A200-bg{background-color:#64ffda!important}.md-teal-A200-bg{background-color:#64ffda!important;color:rgba(0,0,0,.87)}.teal-A200-fg{color:#64ffda!important}.teal-A200-border{border-color:#64ffda!important}.teal-A200-border-top{border-top-color:#64ffda!important}.teal-A200-border-right{border-right-color:#64ffda!important}.teal-A200-border-bottom{border-bottom-color:#64ffda!important}.teal-A200-border-left{border-left-color:#64ffda!important}.teal-A400-bg{background-color:#1de9b6!important}.md-teal-A400-bg{background-color:#1de9b6!important;color:rgba(0,0,0,.87)}.teal-A400-fg{color:#1de9b6!important}.teal-A400-border{border-color:#1de9b6!important}.teal-A400-border-top{border-top-color:#1de9b6!important}.teal-A400-border-right{border-right-color:#1de9b6!important}.teal-A400-border-bottom{border-bottom-color:#1de9b6!important}.teal-A400-border-left{border-left-color:#1de9b6!important}.teal-A700-bg{background-color:#00bfa5!important}.md-teal-A700-bg{background-color:#00bfa5!important;color:rgba(0,0,0,.87)}.teal-A700-fg{color:#00bfa5!important}.teal-A700-border{border-color:#00bfa5!important}.teal-A700-border-top{border-top-color:#00bfa5!important}.teal-A700-border-right{border-right-color:#00bfa5!important}.teal-A700-border-bottom{border-bottom-color:#00bfa5!important}.teal-A700-border-left{border-left-color:#00bfa5!important}.green-50-bg{background-color:#e8f5e9!important}.md-green-50-bg{background-color:#e8f5e9!important;color:rgba(0,0,0,.87)}.green-50-fg{color:#e8f5e9!important}.green-50-border{border-color:#e8f5e9!important}.green-50-border-top{border-top-color:#e8f5e9!important}.green-50-border-right{border-right-color:#e8f5e9!important}.green-50-border-bottom{border-bottom-color:#e8f5e9!important}.green-50-border-left{border-left-color:#e8f5e9!important}.green-100-bg{background-color:#c8e6c9!important}.md-green-100-bg{background-color:#c8e6c9!important;color:rgba(0,0,0,.87)}.green-100-fg{color:#c8e6c9!important}.green-100-border{border-color:#c8e6c9!important}.green-100-border-top{border-top-color:#c8e6c9!important}.green-100-border-right{border-right-color:#c8e6c9!important}.green-100-border-bottom{border-bottom-color:#c8e6c9!important}.green-100-border-left{border-left-color:#c8e6c9!important}.green-200-bg{background-color:#a5d6a7!important}.md-green-200-bg{background-color:#a5d6a7!important;color:rgba(0,0,0,.87)}.green-200-fg{color:#a5d6a7!important}.green-200-border{border-color:#a5d6a7!important}.green-200-border-top{border-top-color:#a5d6a7!important}.green-200-border-right{border-right-color:#a5d6a7!important}.green-200-border-bottom{border-bottom-color:#a5d6a7!important}.green-200-border-left{border-left-color:#a5d6a7!important}.green-300-bg{background-color:#81c784!important}.md-green-300-bg{background-color:#81c784!important;color:rgba(0,0,0,.87)}.green-300-fg{color:#81c784!important}.green-300-border{border-color:#81c784!important}.green-300-border-top{border-top-color:#81c784!important}.green-300-border-right{border-right-color:#81c784!important}.green-300-border-bottom{border-bottom-color:#81c784!important}.green-300-border-left{border-left-color:#81c784!important}.green-400-bg{background-color:#66bb6a!important}.md-green-400-bg{background-color:#66bb6a!important;color:rgba(0,0,0,.87)}.green-400-fg{color:#66bb6a!important}.green-400-border{border-color:#66bb6a!important}.green-400-border-top{border-top-color:#66bb6a!important}.green-400-border-right{border-right-color:#66bb6a!important}.green-400-border-bottom{border-bottom-color:#66bb6a!important}.green-400-border-left{border-left-color:#66bb6a!important}.green-500-bg{background-color:#4caf50!important}.md-green-500-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-500-fg{color:#4caf50!important}.green-500-border{border-color:#4caf50!important}.green-500-border-top{border-top-color:#4caf50!important}.green-500-border-right{border-right-color:#4caf50!important}.green-500-border-bottom{border-bottom-color:#4caf50!important}.green-500-border-left{border-left-color:#4caf50!important}.md-green-bg{background-color:#4caf50!important;color:rgba(0,0,0,.87)}.green-bg{background-color:#4caf50!important}.green-fg{color:#4caf50!important}.green-border{border-color:#4caf50!important}.green-border-top{border-top-color:#4caf50!important}.green-border-right{border-right-color:#4caf50!important}.green-border-bottom{border-bottom-color:#4caf50!important}.green-border-left{border-left-color:#4caf50!important}.green-600-bg{background-color:#43a047!important}.md-green-600-bg{background-color:#43a047!important;color:#fff}.green-600-fg{color:#43a047!important}.green-600-border{border-color:#43a047!important}.green-600-border-top{border-top-color:#43a047!important}.green-600-border-right{border-right-color:#43a047!important}.green-600-border-bottom{border-bottom-color:#43a047!important}.green-600-border-left{border-left-color:#43a047!important}.green-700-bg{background-color:#388e3c!important}.md-green-700-bg{background-color:#388e3c!important;color:#fff}.green-700-fg{color:#388e3c!important}.green-700-border{border-color:#388e3c!important}.green-700-border-top{border-top-color:#388e3c!important}.green-700-border-right{border-right-color:#388e3c!important}.green-700-border-bottom{border-bottom-color:#388e3c!important}.green-700-border-left{border-left-color:#388e3c!important}.green-800-bg{background-color:#2e7d32!important}.md-green-800-bg{background-color:#2e7d32!important;color:rgba(255,255,255,.87)}.green-800-fg{color:#2e7d32!important}.green-800-border{border-color:#2e7d32!important}.green-800-border-top{border-top-color:#2e7d32!important}.green-800-border-right{border-right-color:#2e7d32!important}.green-800-border-bottom{border-bottom-color:#2e7d32!important}.green-800-border-left{border-left-color:#2e7d32!important}.green-900-bg{background-color:#1b5e20!important}.md-green-900-bg{background-color:#1b5e20!important;color:rgba(255,255,255,.87)}.green-900-fg{color:#1b5e20!important}.green-900-border{border-color:#1b5e20!important}.green-900-border-top{border-top-color:#1b5e20!important}.green-900-border-right{border-right-color:#1b5e20!important}.green-900-border-bottom{border-bottom-color:#1b5e20!important}.green-900-border-left{border-left-color:#1b5e20!important}.green-A100-bg{background-color:#b9f6ca!important}.md-green-A100-bg{background-color:#b9f6ca!important;color:rgba(0,0,0,.87)}.green-A100-fg{color:#b9f6ca!important}.green-A100-border{border-color:#b9f6ca!important}.green-A100-border-top{border-top-color:#b9f6ca!important}.green-A100-border-right{border-right-color:#b9f6ca!important}.green-A100-border-bottom{border-bottom-color:#b9f6ca!important}.green-A100-border-left{border-left-color:#b9f6ca!important}.green-A200-bg{background-color:#69f0ae!important}.md-green-A200-bg{background-color:#69f0ae!important;color:rgba(0,0,0,.87)}.green-A200-fg{color:#69f0ae!important}.green-A200-border{border-color:#69f0ae!important}.green-A200-border-top{border-top-color:#69f0ae!important}.green-A200-border-right{border-right-color:#69f0ae!important}.green-A200-border-bottom{border-bottom-color:#69f0ae!important}.green-A200-border-left{border-left-color:#69f0ae!important}.green-A400-bg{background-color:#00e676!important}.md-green-A400-bg{background-color:#00e676!important;color:rgba(0,0,0,.87)}.green-A400-fg{color:#00e676!important}.green-A400-border{border-color:#00e676!important}.green-A400-border-top{border-top-color:#00e676!important}.green-A400-border-right{border-right-color:#00e676!important}.green-A400-border-bottom{border-bottom-color:#00e676!important}.green-A400-border-left{border-left-color:#00e676!important}.green-A700-bg{background-color:#00c853!important}.md-green-A700-bg{background-color:#00c853!important;color:rgba(0,0,0,.87)}.green-A700-fg{color:#00c853!important}.green-A700-border{border-color:#00c853!important}.green-A700-border-top{border-top-color:#00c853!important}.green-A700-border-right{border-right-color:#00c853!important}.green-A700-border-bottom{border-bottom-color:#00c853!important}.green-A700-border-left{border-left-color:#00c853!important}.light-green-50-bg{background-color:#f1f8e9!important}.md-light-green-50-bg{background-color:#f1f8e9!important;color:rgba(0,0,0,.87)}.light-green-50-fg{color:#f1f8e9!important}.light-green-50-border{border-color:#f1f8e9!important}.light-green-50-border-top{border-top-color:#f1f8e9!important}.light-green-50-border-right{border-right-color:#f1f8e9!important}.light-green-50-border-bottom{border-bottom-color:#f1f8e9!important}.light-green-50-border-left{border-left-color:#f1f8e9!important}.light-green-100-bg{background-color:#dcedc8!important}.md-light-green-100-bg{background-color:#dcedc8!important;color:rgba(0,0,0,.87)}.light-green-100-fg{color:#dcedc8!important}.light-green-100-border{border-color:#dcedc8!important}.light-green-100-border-top{border-top-color:#dcedc8!important}.light-green-100-border-right{border-right-color:#dcedc8!important}.light-green-100-border-bottom{border-bottom-color:#dcedc8!important}.light-green-100-border-left{border-left-color:#dcedc8!important}.light-green-200-bg{background-color:#c5e1a5!important}.md-light-green-200-bg{background-color:#c5e1a5!important;color:rgba(0,0,0,.87)}.light-green-200-fg{color:#c5e1a5!important}.light-green-200-border{border-color:#c5e1a5!important}.light-green-200-border-top{border-top-color:#c5e1a5!important}.light-green-200-border-right{border-right-color:#c5e1a5!important}.light-green-200-border-bottom{border-bottom-color:#c5e1a5!important}.light-green-200-border-left{border-left-color:#c5e1a5!important}.light-green-300-bg{background-color:#aed581!important}.md-light-green-300-bg{background-color:#aed581!important;color:rgba(0,0,0,.87)}.light-green-300-fg{color:#aed581!important}.light-green-300-border{border-color:#aed581!important}.light-green-300-border-top{border-top-color:#aed581!important}.light-green-300-border-right{border-right-color:#aed581!important}.light-green-300-border-bottom{border-bottom-color:#aed581!important}.light-green-300-border-left{border-left-color:#aed581!important}.light-green-400-bg{background-color:#9ccc65!important}.md-light-green-400-bg{background-color:#9ccc65!important;color:rgba(0,0,0,.87)}.light-green-400-fg{color:#9ccc65!important}.light-green-400-border{border-color:#9ccc65!important}.light-green-400-border-top{border-top-color:#9ccc65!important}.light-green-400-border-right{border-right-color:#9ccc65!important}.light-green-400-border-bottom{border-bottom-color:#9ccc65!important}.light-green-400-border-left{border-left-color:#9ccc65!important}.light-green-500-bg{background-color:#8bc34a!important}.md-light-green-500-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-500-fg{color:#8bc34a!important}.light-green-500-border{border-color:#8bc34a!important}.light-green-500-border-top{border-top-color:#8bc34a!important}.light-green-500-border-right{border-right-color:#8bc34a!important}.light-green-500-border-bottom{border-bottom-color:#8bc34a!important}.light-green-500-border-left{border-left-color:#8bc34a!important}.md-light-green-bg{background-color:#8bc34a!important;color:rgba(0,0,0,.87)}.light-green-bg{background-color:#8bc34a!important}.light-green-fg{color:#8bc34a!important}.light-green-border{border-color:#8bc34a!important}.light-green-border-top{border-top-color:#8bc34a!important}.light-green-border-right{border-right-color:#8bc34a!important}.light-green-border-bottom{border-bottom-color:#8bc34a!important}.light-green-border-left{border-left-color:#8bc34a!important}.light-green-600-bg{background-color:#7cb342!important}.md-light-green-600-bg{background-color:#7cb342!important;color:rgba(0,0,0,.87)}.light-green-600-fg{color:#7cb342!important}.light-green-600-border{border-color:#7cb342!important}.light-green-600-border-top{border-top-color:#7cb342!important}.light-green-600-border-right{border-right-color:#7cb342!important}.light-green-600-border-bottom{border-bottom-color:#7cb342!important}.light-green-600-border-left{border-left-color:#7cb342!important}.light-green-700-bg{background-color:#689f38!important}.md-light-green-700-bg{background-color:#689f38!important;color:#fff}.light-green-700-fg{color:#689f38!important}.light-green-700-border{border-color:#689f38!important}.light-green-700-border-top{border-top-color:#689f38!important}.light-green-700-border-right{border-right-color:#689f38!important}.light-green-700-border-bottom{border-bottom-color:#689f38!important}.light-green-700-border-left{border-left-color:#689f38!important}.light-green-800-bg{background-color:#558b2f!important}.md-light-green-800-bg{background-color:#558b2f!important;color:#fff}.light-green-800-fg{color:#558b2f!important}.light-green-800-border{border-color:#558b2f!important}.light-green-800-border-top{border-top-color:#558b2f!important}.light-green-800-border-right{border-right-color:#558b2f!important}.light-green-800-border-bottom{border-bottom-color:#558b2f!important}.light-green-800-border-left{border-left-color:#558b2f!important}.light-green-900-bg{background-color:#33691e!important}.md-light-green-900-bg{background-color:#33691e!important;color:#fff}.light-green-900-fg{color:#33691e!important}.light-green-900-border{border-color:#33691e!important}.light-green-900-border-top{border-top-color:#33691e!important}.light-green-900-border-right{border-right-color:#33691e!important}.light-green-900-border-bottom{border-bottom-color:#33691e!important}.light-green-900-border-left{border-left-color:#33691e!important}.light-green-A100-bg{background-color:#ccff90!important}.md-light-green-A100-bg{background-color:#ccff90!important;color:rgba(0,0,0,.87)}.light-green-A100-fg{color:#ccff90!important}.light-green-A100-border{border-color:#ccff90!important}.light-green-A100-border-top{border-top-color:#ccff90!important}.light-green-A100-border-right{border-right-color:#ccff90!important}.light-green-A100-border-bottom{border-bottom-color:#ccff90!important}.light-green-A100-border-left{border-left-color:#ccff90!important}.light-green-A200-bg{background-color:#b2ff59!important}.md-light-green-A200-bg{background-color:#b2ff59!important;color:rgba(0,0,0,.87)}.light-green-A200-fg{color:#b2ff59!important}.light-green-A200-border{border-color:#b2ff59!important}.light-green-A200-border-top{border-top-color:#b2ff59!important}.light-green-A200-border-right{border-right-color:#b2ff59!important}.light-green-A200-border-bottom{border-bottom-color:#b2ff59!important}.light-green-A200-border-left{border-left-color:#b2ff59!important}.light-green-A400-bg{background-color:#76ff03!important}.md-light-green-A400-bg{background-color:#76ff03!important;color:rgba(0,0,0,.87)}.light-green-A400-fg{color:#76ff03!important}.light-green-A400-border{border-color:#76ff03!important}.light-green-A400-border-top{border-top-color:#76ff03!important}.light-green-A400-border-right{border-right-color:#76ff03!important}.light-green-A400-border-bottom{border-bottom-color:#76ff03!important}.light-green-A400-border-left{border-left-color:#76ff03!important}.light-green-A700-bg{background-color:#64dd17!important}.md-light-green-A700-bg{background-color:#64dd17!important;color:rgba(0,0,0,.87)}.light-green-A700-fg{color:#64dd17!important}.light-green-A700-border{border-color:#64dd17!important}.light-green-A700-border-top{border-top-color:#64dd17!important}.light-green-A700-border-right{border-right-color:#64dd17!important}.light-green-A700-border-bottom{border-bottom-color:#64dd17!important}.light-green-A700-border-left{border-left-color:#64dd17!important}.lime-50-bg{background-color:#f9fbe7!important}.md-lime-50-bg{background-color:#f9fbe7!important;color:rgba(0,0,0,.87)}.lime-50-fg{color:#f9fbe7!important}.lime-50-border{border-color:#f9fbe7!important}.lime-50-border-top{border-top-color:#f9fbe7!important}.lime-50-border-right{border-right-color:#f9fbe7!important}.lime-50-border-bottom{border-bottom-color:#f9fbe7!important}.lime-50-border-left{border-left-color:#f9fbe7!important}.lime-100-bg{background-color:#f0f4c3!important}.md-lime-100-bg{background-color:#f0f4c3!important;color:rgba(0,0,0,.87)}.lime-100-fg{color:#f0f4c3!important}.lime-100-border{border-color:#f0f4c3!important}.lime-100-border-top{border-top-color:#f0f4c3!important}.lime-100-border-right{border-right-color:#f0f4c3!important}.lime-100-border-bottom{border-bottom-color:#f0f4c3!important}.lime-100-border-left{border-left-color:#f0f4c3!important}.lime-200-bg{background-color:#e6ee9c!important}.md-lime-200-bg{background-color:#e6ee9c!important;color:rgba(0,0,0,.87)}.lime-200-fg{color:#e6ee9c!important}.lime-200-border{border-color:#e6ee9c!important}.lime-200-border-top{border-top-color:#e6ee9c!important}.lime-200-border-right{border-right-color:#e6ee9c!important}.lime-200-border-bottom{border-bottom-color:#e6ee9c!important}.lime-200-border-left{border-left-color:#e6ee9c!important}.lime-300-bg{background-color:#dce775!important}.md-lime-300-bg{background-color:#dce775!important;color:rgba(0,0,0,.87)}.lime-300-fg{color:#dce775!important}.lime-300-border{border-color:#dce775!important}.lime-300-border-top{border-top-color:#dce775!important}.lime-300-border-right{border-right-color:#dce775!important}.lime-300-border-bottom{border-bottom-color:#dce775!important}.lime-300-border-left{border-left-color:#dce775!important}.lime-400-bg{background-color:#d4e157!important}.md-lime-400-bg{background-color:#d4e157!important;color:rgba(0,0,0,.87)}.lime-400-fg{color:#d4e157!important}.lime-400-border{border-color:#d4e157!important}.lime-400-border-top{border-top-color:#d4e157!important}.lime-400-border-right{border-right-color:#d4e157!important}.lime-400-border-bottom{border-bottom-color:#d4e157!important}.lime-400-border-left{border-left-color:#d4e157!important}.lime-500-bg{background-color:#cddc39!important}.md-lime-500-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-500-fg{color:#cddc39!important}.lime-500-border{border-color:#cddc39!important}.lime-500-border-top{border-top-color:#cddc39!important}.lime-500-border-right{border-right-color:#cddc39!important}.lime-500-border-bottom{border-bottom-color:#cddc39!important}.lime-500-border-left{border-left-color:#cddc39!important}.md-lime-bg{background-color:#cddc39!important;color:rgba(0,0,0,.87)}.lime-bg{background-color:#cddc39!important}.lime-fg{color:#cddc39!important}.lime-border{border-color:#cddc39!important}.lime-border-top{border-top-color:#cddc39!important}.lime-border-right{border-right-color:#cddc39!important}.lime-border-bottom{border-bottom-color:#cddc39!important}.lime-border-left{border-left-color:#cddc39!important}.lime-600-bg{background-color:#c0ca33!important}.md-lime-600-bg{background-color:#c0ca33!important;color:rgba(0,0,0,.87)}.lime-600-fg{color:#c0ca33!important}.lime-600-border{border-color:#c0ca33!important}.lime-600-border-top{border-top-color:#c0ca33!important}.lime-600-border-right{border-right-color:#c0ca33!important}.lime-600-border-bottom{border-bottom-color:#c0ca33!important}.lime-600-border-left{border-left-color:#c0ca33!important}.lime-700-bg{background-color:#afb42b!important}.md-lime-700-bg{background-color:#afb42b!important;color:rgba(0,0,0,.87)}.lime-700-fg{color:#afb42b!important}.lime-700-border{border-color:#afb42b!important}.lime-700-border-top{border-top-color:#afb42b!important}.lime-700-border-right{border-right-color:#afb42b!important}.lime-700-border-bottom{border-bottom-color:#afb42b!important}.lime-700-border-left{border-left-color:#afb42b!important}.lime-800-bg{background-color:#9e9d24!important}.md-lime-800-bg{background-color:#9e9d24!important;color:rgba(0,0,0,.87)}.lime-800-fg{color:#9e9d24!important}.lime-800-border{border-color:#9e9d24!important}.lime-800-border-top{border-top-color:#9e9d24!important}.lime-800-border-right{border-right-color:#9e9d24!important}.lime-800-border-bottom{border-bottom-color:#9e9d24!important}.lime-800-border-left{border-left-color:#9e9d24!important}.lime-900-bg{background-color:#827717!important}.md-lime-900-bg{background-color:#827717!important;color:#fff}.lime-900-fg{color:#827717!important}.lime-900-border{border-color:#827717!important}.lime-900-border-top{border-top-color:#827717!important}.lime-900-border-right{border-right-color:#827717!important}.lime-900-border-bottom{border-bottom-color:#827717!important}.lime-900-border-left{border-left-color:#827717!important}.lime-A100-bg{background-color:#f4ff81!important}.md-lime-A100-bg{background-color:#f4ff81!important;color:rgba(0,0,0,.87)}.lime-A100-fg{color:#f4ff81!important}.lime-A100-border{border-color:#f4ff81!important}.lime-A100-border-top{border-top-color:#f4ff81!important}.lime-A100-border-right{border-right-color:#f4ff81!important}.lime-A100-border-bottom{border-bottom-color:#f4ff81!important}.lime-A100-border-left{border-left-color:#f4ff81!important}.lime-A200-bg{background-color:#eeff41!important}.md-lime-A200-bg{background-color:#eeff41!important;color:rgba(0,0,0,.87)}.lime-A200-fg{color:#eeff41!important}.lime-A200-border{border-color:#eeff41!important}.lime-A200-border-top{border-top-color:#eeff41!important}.lime-A200-border-right{border-right-color:#eeff41!important}.lime-A200-border-bottom{border-bottom-color:#eeff41!important}.lime-A200-border-left{border-left-color:#eeff41!important}.lime-A400-bg{background-color:#c6ff00!important}.md-lime-A400-bg{background-color:#c6ff00!important;color:rgba(0,0,0,.87)}.lime-A400-fg{color:#c6ff00!important}.lime-A400-border{border-color:#c6ff00!important}.lime-A400-border-top{border-top-color:#c6ff00!important}.lime-A400-border-right{border-right-color:#c6ff00!important}.lime-A400-border-bottom{border-bottom-color:#c6ff00!important}.lime-A400-border-left{border-left-color:#c6ff00!important}.lime-A700-bg{background-color:#aeea00!important}.md-lime-A700-bg{background-color:#aeea00!important;color:rgba(0,0,0,.87)}.lime-A700-fg{color:#aeea00!important}.lime-A700-border{border-color:#aeea00!important}.lime-A700-border-top{border-top-color:#aeea00!important}.lime-A700-border-right{border-right-color:#aeea00!important}.lime-A700-border-bottom{border-bottom-color:#aeea00!important}.lime-A700-border-left{border-left-color:#aeea00!important}.yellow-50-bg{background-color:#fffde7!important}.md-yellow-50-bg{background-color:#fffde7!important;color:rgba(0,0,0,.87)}.yellow-50-fg{color:#fffde7!important}.yellow-50-border{border-color:#fffde7!important}.yellow-50-border-top{border-top-color:#fffde7!important}.yellow-50-border-right{border-right-color:#fffde7!important}.yellow-50-border-bottom{border-bottom-color:#fffde7!important}.yellow-50-border-left{border-left-color:#fffde7!important}.yellow-100-bg{background-color:#fff9c4!important}.md-yellow-100-bg{background-color:#fff9c4!important;color:rgba(0,0,0,.87)}.yellow-100-fg{color:#fff9c4!important}.yellow-100-border{border-color:#fff9c4!important}.yellow-100-border-top{border-top-color:#fff9c4!important}.yellow-100-border-right{border-right-color:#fff9c4!important}.yellow-100-border-bottom{border-bottom-color:#fff9c4!important}.yellow-100-border-left{border-left-color:#fff9c4!important}.yellow-200-bg{background-color:#fff59d!important}.md-yellow-200-bg{background-color:#fff59d!important;color:rgba(0,0,0,.87)}.yellow-200-fg{color:#fff59d!important}.yellow-200-border{border-color:#fff59d!important}.yellow-200-border-top{border-top-color:#fff59d!important}.yellow-200-border-right{border-right-color:#fff59d!important}.yellow-200-border-bottom{border-bottom-color:#fff59d!important}.yellow-200-border-left{border-left-color:#fff59d!important}.yellow-300-bg{background-color:#fff176!important}.md-yellow-300-bg{background-color:#fff176!important;color:rgba(0,0,0,.87)}.yellow-300-fg{color:#fff176!important}.yellow-300-border{border-color:#fff176!important}.yellow-300-border-top{border-top-color:#fff176!important}.yellow-300-border-right{border-right-color:#fff176!important}.yellow-300-border-bottom{border-bottom-color:#fff176!important}.yellow-300-border-left{border-left-color:#fff176!important}.yellow-400-bg{background-color:#ffee58!important}.md-yellow-400-bg{background-color:#ffee58!important;color:rgba(0,0,0,.87)}.yellow-400-fg{color:#ffee58!important}.yellow-400-border{border-color:#ffee58!important}.yellow-400-border-top{border-top-color:#ffee58!important}.yellow-400-border-right{border-right-color:#ffee58!important}.yellow-400-border-bottom{border-bottom-color:#ffee58!important}.yellow-400-border-left{border-left-color:#ffee58!important}.yellow-500-bg{background-color:#ffeb3b!important}.md-yellow-500-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-500-fg{color:#ffeb3b!important}.yellow-500-border{border-color:#ffeb3b!important}.yellow-500-border-top{border-top-color:#ffeb3b!important}.yellow-500-border-right{border-right-color:#ffeb3b!important}.yellow-500-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-500-border-left{border-left-color:#ffeb3b!important}.md-yellow-bg{background-color:#ffeb3b!important;color:rgba(0,0,0,.87)}.yellow-bg{background-color:#ffeb3b!important}.yellow-fg{color:#ffeb3b!important}.yellow-border{border-color:#ffeb3b!important}.yellow-border-top{border-top-color:#ffeb3b!important}.yellow-border-right{border-right-color:#ffeb3b!important}.yellow-border-bottom{border-bottom-color:#ffeb3b!important}.yellow-border-left{border-left-color:#ffeb3b!important}.yellow-600-bg{background-color:#fdd835!important}.md-yellow-600-bg{background-color:#fdd835!important;color:rgba(0,0,0,.87)}.yellow-600-fg{color:#fdd835!important}.yellow-600-border{border-color:#fdd835!important}.yellow-600-border-top{border-top-color:#fdd835!important}.yellow-600-border-right{border-right-color:#fdd835!important}.yellow-600-border-bottom{border-bottom-color:#fdd835!important}.yellow-600-border-left{border-left-color:#fdd835!important}.yellow-700-bg{background-color:#fbc02d!important}.md-yellow-700-bg{background-color:#fbc02d!important;color:rgba(0,0,0,.87)}.yellow-700-fg{color:#fbc02d!important}.yellow-700-border{border-color:#fbc02d!important}.yellow-700-border-top{border-top-color:#fbc02d!important}.yellow-700-border-right{border-right-color:#fbc02d!important}.yellow-700-border-bottom{border-bottom-color:#fbc02d!important}.yellow-700-border-left{border-left-color:#fbc02d!important}.yellow-800-bg{background-color:#f9a825!important}.md-yellow-800-bg{background-color:#f9a825!important;color:rgba(0,0,0,.87)}.yellow-800-fg{color:#f9a825!important}.yellow-800-border{border-color:#f9a825!important}.yellow-800-border-top{border-top-color:#f9a825!important}.yellow-800-border-right{border-right-color:#f9a825!important}.yellow-800-border-bottom{border-bottom-color:#f9a825!important}.yellow-800-border-left{border-left-color:#f9a825!important}.yellow-900-bg{background-color:#f57f17!important}.md-yellow-900-bg{background-color:#f57f17!important;color:rgba(0,0,0,.87)}.yellow-900-fg{color:#f57f17!important}.yellow-900-border{border-color:#f57f17!important}.yellow-900-border-top{border-top-color:#f57f17!important}.yellow-900-border-right{border-right-color:#f57f17!important}.yellow-900-border-bottom{border-bottom-color:#f57f17!important}.yellow-900-border-left{border-left-color:#f57f17!important}.yellow-A100-bg{background-color:#ffff8d!important}.md-yellow-A100-bg{background-color:#ffff8d!important;color:rgba(0,0,0,.87)}.yellow-A100-fg{color:#ffff8d!important}.yellow-A100-border{border-color:#ffff8d!important}.yellow-A100-border-top{border-top-color:#ffff8d!important}.yellow-A100-border-right{border-right-color:#ffff8d!important}.yellow-A100-border-bottom{border-bottom-color:#ffff8d!important}.yellow-A100-border-left{border-left-color:#ffff8d!important}.yellow-A200-bg{background-color:#ff0!important}.md-yellow-A200-bg{background-color:#ff0!important;color:rgba(0,0,0,.87)}.yellow-A200-fg{color:#ff0!important}.yellow-A200-border{border-color:#ff0!important}.yellow-A200-border-top{border-top-color:#ff0!important}.yellow-A200-border-right{border-right-color:#ff0!important}.yellow-A200-border-bottom{border-bottom-color:#ff0!important}.yellow-A200-border-left{border-left-color:#ff0!important}.yellow-A400-bg{background-color:#ffea00!important}.md-yellow-A400-bg{background-color:#ffea00!important;color:rgba(0,0,0,.87)}.yellow-A400-fg{color:#ffea00!important}.yellow-A400-border{border-color:#ffea00!important}.yellow-A400-border-top{border-top-color:#ffea00!important}.yellow-A400-border-right{border-right-color:#ffea00!important}.yellow-A400-border-bottom{border-bottom-color:#ffea00!important}.yellow-A400-border-left{border-left-color:#ffea00!important}.yellow-A700-bg{background-color:#ffd600!important}.md-yellow-A700-bg{background-color:#ffd600!important;color:rgba(0,0,0,.87)}.yellow-A700-fg{color:#ffd600!important}.yellow-A700-border{border-color:#ffd600!important}.yellow-A700-border-top{border-top-color:#ffd600!important}.yellow-A700-border-right{border-right-color:#ffd600!important}.yellow-A700-border-bottom{border-bottom-color:#ffd600!important}.yellow-A700-border-left{border-left-color:#ffd600!important}.amber-50-bg{background-color:#fff8e1!important}.md-amber-50-bg{background-color:#fff8e1!important;color:rgba(0,0,0,.87)}.amber-50-fg{color:#fff8e1!important}.amber-50-border{border-color:#fff8e1!important}.amber-50-border-top{border-top-color:#fff8e1!important}.amber-50-border-right{border-right-color:#fff8e1!important}.amber-50-border-bottom{border-bottom-color:#fff8e1!important}.amber-50-border-left{border-left-color:#fff8e1!important}.amber-100-bg{background-color:#ffecb3!important}.md-amber-100-bg{background-color:#ffecb3!important;color:rgba(0,0,0,.87)}.amber-100-fg{color:#ffecb3!important}.amber-100-border{border-color:#ffecb3!important}.amber-100-border-top{border-top-color:#ffecb3!important}.amber-100-border-right{border-right-color:#ffecb3!important}.amber-100-border-bottom{border-bottom-color:#ffecb3!important}.amber-100-border-left{border-left-color:#ffecb3!important}.amber-200-bg{background-color:#ffe082!important}.md-amber-200-bg{background-color:#ffe082!important;color:rgba(0,0,0,.87)}.amber-200-fg{color:#ffe082!important}.amber-200-border{border-color:#ffe082!important}.amber-200-border-top{border-top-color:#ffe082!important}.amber-200-border-right{border-right-color:#ffe082!important}.amber-200-border-bottom{border-bottom-color:#ffe082!important}.amber-200-border-left{border-left-color:#ffe082!important}.amber-300-bg{background-color:#ffd54f!important}.md-amber-300-bg{background-color:#ffd54f!important;color:rgba(0,0,0,.87)}.amber-300-fg{color:#ffd54f!important}.amber-300-border{border-color:#ffd54f!important}.amber-300-border-top{border-top-color:#ffd54f!important}.amber-300-border-right{border-right-color:#ffd54f!important}.amber-300-border-bottom{border-bottom-color:#ffd54f!important}.amber-300-border-left{border-left-color:#ffd54f!important}.amber-400-bg{background-color:#ffca28!important}.md-amber-400-bg{background-color:#ffca28!important;color:rgba(0,0,0,.87)}.amber-400-fg{color:#ffca28!important}.amber-400-border{border-color:#ffca28!important}.amber-400-border-top{border-top-color:#ffca28!important}.amber-400-border-right{border-right-color:#ffca28!important}.amber-400-border-bottom{border-bottom-color:#ffca28!important}.amber-400-border-left{border-left-color:#ffca28!important}.amber-500-bg{background-color:#ffc107!important}.md-amber-500-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-500-fg{color:#ffc107!important}.amber-500-border{border-color:#ffc107!important}.amber-500-border-top{border-top-color:#ffc107!important}.amber-500-border-right{border-right-color:#ffc107!important}.amber-500-border-bottom{border-bottom-color:#ffc107!important}.amber-500-border-left{border-left-color:#ffc107!important}.md-amber-bg{background-color:#ffc107!important;color:rgba(0,0,0,.87)}.amber-bg{background-color:#ffc107!important}.amber-fg{color:#ffc107!important}.amber-border{border-color:#ffc107!important}.amber-border-top{border-top-color:#ffc107!important}.amber-border-right{border-right-color:#ffc107!important}.amber-border-bottom{border-bottom-color:#ffc107!important}.amber-border-left{border-left-color:#ffc107!important}.amber-600-bg{background-color:#ffb300!important}.md-amber-600-bg{background-color:#ffb300!important;color:rgba(0,0,0,.87)}.amber-600-fg{color:#ffb300!important}.amber-600-border{border-color:#ffb300!important}.amber-600-border-top{border-top-color:#ffb300!important}.amber-600-border-right{border-right-color:#ffb300!important}.amber-600-border-bottom{border-bottom-color:#ffb300!important}.amber-600-border-left{border-left-color:#ffb300!important}.amber-700-bg{background-color:#ffa000!important}.md-amber-700-bg{background-color:#ffa000!important;color:rgba(0,0,0,.87)}.amber-700-fg{color:#ffa000!important}.amber-700-border{border-color:#ffa000!important}.amber-700-border-top{border-top-color:#ffa000!important}.amber-700-border-right{border-right-color:#ffa000!important}.amber-700-border-bottom{border-bottom-color:#ffa000!important}.amber-700-border-left{border-left-color:#ffa000!important}.amber-800-bg{background-color:#ff8f00!important}.md-amber-800-bg{background-color:#ff8f00!important;color:rgba(0,0,0,.87)}.amber-800-fg{color:#ff8f00!important}.amber-800-border{border-color:#ff8f00!important}.amber-800-border-top{border-top-color:#ff8f00!important}.amber-800-border-right{border-right-color:#ff8f00!important}.amber-800-border-bottom{border-bottom-color:#ff8f00!important}.amber-800-border-left{border-left-color:#ff8f00!important}.amber-900-bg{background-color:#ff6f00!important}.md-amber-900-bg{background-color:#ff6f00!important;color:rgba(0,0,0,.87)}.amber-900-fg{color:#ff6f00!important}.amber-900-border{border-color:#ff6f00!important}.amber-900-border-top{border-top-color:#ff6f00!important}.amber-900-border-right{border-right-color:#ff6f00!important}.amber-900-border-bottom{border-bottom-color:#ff6f00!important}.amber-900-border-left{border-left-color:#ff6f00!important}.amber-A100-bg{background-color:#ffe57f!important}.md-amber-A100-bg{background-color:#ffe57f!important;color:rgba(0,0,0,.87)}.amber-A100-fg{color:#ffe57f!important}.amber-A100-border{border-color:#ffe57f!important}.amber-A100-border-top{border-top-color:#ffe57f!important}.amber-A100-border-right{border-right-color:#ffe57f!important}.amber-A100-border-bottom{border-bottom-color:#ffe57f!important}.amber-A100-border-left{border-left-color:#ffe57f!important}.amber-A200-bg{background-color:#ffd740!important}.md-amber-A200-bg{background-color:#ffd740!important;color:rgba(0,0,0,.87)}.amber-A200-fg{color:#ffd740!important}.amber-A200-border{border-color:#ffd740!important}.amber-A200-border-top{border-top-color:#ffd740!important}.amber-A200-border-right{border-right-color:#ffd740!important}.amber-A200-border-bottom{border-bottom-color:#ffd740!important}.amber-A200-border-left{border-left-color:#ffd740!important}.amber-A400-bg{background-color:#ffc400!important}.md-amber-A400-bg{background-color:#ffc400!important;color:rgba(0,0,0,.87)}.amber-A400-fg{color:#ffc400!important}.amber-A400-border{border-color:#ffc400!important}.amber-A400-border-top{border-top-color:#ffc400!important}.amber-A400-border-right{border-right-color:#ffc400!important}.amber-A400-border-bottom{border-bottom-color:#ffc400!important}.amber-A400-border-left{border-left-color:#ffc400!important}.amber-A700-bg{background-color:#ffab00!important}.md-amber-A700-bg{background-color:#ffab00!important;color:rgba(0,0,0,.87)}.amber-A700-fg{color:#ffab00!important}.amber-A700-border{border-color:#ffab00!important}.amber-A700-border-top{border-top-color:#ffab00!important}.amber-A700-border-right{border-right-color:#ffab00!important}.amber-A700-border-bottom{border-bottom-color:#ffab00!important}.amber-A700-border-left{border-left-color:#ffab00!important}.orange-50-bg{background-color:#fff3e0!important}.md-orange-50-bg{background-color:#fff3e0!important;color:rgba(0,0,0,.87)}.orange-50-fg{color:#fff3e0!important}.orange-50-border{border-color:#fff3e0!important}.orange-50-border-top{border-top-color:#fff3e0!important}.orange-50-border-right{border-right-color:#fff3e0!important}.orange-50-border-bottom{border-bottom-color:#fff3e0!important}.orange-50-border-left{border-left-color:#fff3e0!important}.orange-100-bg{background-color:#ffe0b2!important}.md-orange-100-bg{background-color:#ffe0b2!important;color:rgba(0,0,0,.87)}.orange-100-fg{color:#ffe0b2!important}.orange-100-border{border-color:#ffe0b2!important}.orange-100-border-top{border-top-color:#ffe0b2!important}.orange-100-border-right{border-right-color:#ffe0b2!important}.orange-100-border-bottom{border-bottom-color:#ffe0b2!important}.orange-100-border-left{border-left-color:#ffe0b2!important}.orange-200-bg{background-color:#ffcc80!important}.md-orange-200-bg{background-color:#ffcc80!important;color:rgba(0,0,0,.87)}.orange-200-fg{color:#ffcc80!important}.orange-200-border{border-color:#ffcc80!important}.orange-200-border-top{border-top-color:#ffcc80!important}.orange-200-border-right{border-right-color:#ffcc80!important}.orange-200-border-bottom{border-bottom-color:#ffcc80!important}.orange-200-border-left{border-left-color:#ffcc80!important}.orange-300-bg{background-color:#ffb74d!important}.md-orange-300-bg{background-color:#ffb74d!important;color:rgba(0,0,0,.87)}.orange-300-fg{color:#ffb74d!important}.orange-300-border{border-color:#ffb74d!important}.orange-300-border-top{border-top-color:#ffb74d!important}.orange-300-border-right{border-right-color:#ffb74d!important}.orange-300-border-bottom{border-bottom-color:#ffb74d!important}.orange-300-border-left{border-left-color:#ffb74d!important}.orange-400-bg{background-color:#ffa726!important}.md-orange-400-bg{background-color:#ffa726!important;color:rgba(0,0,0,.87)}.orange-400-fg{color:#ffa726!important}.orange-400-border{border-color:#ffa726!important}.orange-400-border-top{border-top-color:#ffa726!important}.orange-400-border-right{border-right-color:#ffa726!important}.orange-400-border-bottom{border-bottom-color:#ffa726!important}.orange-400-border-left{border-left-color:#ffa726!important}.orange-500-bg{background-color:#ff9800!important}.md-orange-500-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-500-fg{color:#ff9800!important}.orange-500-border{border-color:#ff9800!important}.orange-500-border-top{border-top-color:#ff9800!important}.orange-500-border-right{border-right-color:#ff9800!important}.orange-500-border-bottom{border-bottom-color:#ff9800!important}.orange-500-border-left{border-left-color:#ff9800!important}.md-orange-bg{background-color:#ff9800!important;color:rgba(0,0,0,.87)}.orange-bg{background-color:#ff9800!important}.orange-fg{color:#ff9800!important}.orange-border{border-color:#ff9800!important}.orange-border-top{border-top-color:#ff9800!important}.orange-border-right{border-right-color:#ff9800!important}.orange-border-bottom{border-bottom-color:#ff9800!important}.orange-border-left{border-left-color:#ff9800!important}.orange-600-bg{background-color:#fb8c00!important}.md-orange-600-bg{background-color:#fb8c00!important;color:rgba(0,0,0,.87)}.orange-600-fg{color:#fb8c00!important}.orange-600-border{border-color:#fb8c00!important}.orange-600-border-top{border-top-color:#fb8c00!important}.orange-600-border-right{border-right-color:#fb8c00!important}.orange-600-border-bottom{border-bottom-color:#fb8c00!important}.orange-600-border-left{border-left-color:#fb8c00!important}.orange-700-bg{background-color:#f57c00!important}.md-orange-700-bg{background-color:#f57c00!important;color:rgba(0,0,0,.87)}.orange-700-fg{color:#f57c00!important}.orange-700-border{border-color:#f57c00!important}.orange-700-border-top{border-top-color:#f57c00!important}.orange-700-border-right{border-right-color:#f57c00!important}.orange-700-border-bottom{border-bottom-color:#f57c00!important}.orange-700-border-left{border-left-color:#f57c00!important}.orange-800-bg{background-color:#ef6c00!important}.md-orange-800-bg{background-color:#ef6c00!important;color:#fff}.orange-800-fg{color:#ef6c00!important}.orange-800-border{border-color:#ef6c00!important}.orange-800-border-top{border-top-color:#ef6c00!important}.orange-800-border-right{border-right-color:#ef6c00!important}.orange-800-border-bottom{border-bottom-color:#ef6c00!important}.orange-800-border-left{border-left-color:#ef6c00!important}.orange-900-bg{background-color:#e65100!important}.md-orange-900-bg{background-color:#e65100!important;color:#fff}.orange-900-fg{color:#e65100!important}.orange-900-border{border-color:#e65100!important}.orange-900-border-top{border-top-color:#e65100!important}.orange-900-border-right{border-right-color:#e65100!important}.orange-900-border-bottom{border-bottom-color:#e65100!important}.orange-900-border-left{border-left-color:#e65100!important}.orange-A100-bg{background-color:#ffd180!important}.md-orange-A100-bg{background-color:#ffd180!important;color:rgba(0,0,0,.87)}.orange-A100-fg{color:#ffd180!important}.orange-A100-border{border-color:#ffd180!important}.orange-A100-border-top{border-top-color:#ffd180!important}.orange-A100-border-right{border-right-color:#ffd180!important}.orange-A100-border-bottom{border-bottom-color:#ffd180!important}.orange-A100-border-left{border-left-color:#ffd180!important}.orange-A200-bg{background-color:#ffab40!important}.md-orange-A200-bg{background-color:#ffab40!important;color:rgba(0,0,0,.87)}.orange-A200-fg{color:#ffab40!important}.orange-A200-border{border-color:#ffab40!important}.orange-A200-border-top{border-top-color:#ffab40!important}.orange-A200-border-right{border-right-color:#ffab40!important}.orange-A200-border-bottom{border-bottom-color:#ffab40!important}.orange-A200-border-left{border-left-color:#ffab40!important}.orange-A400-bg{background-color:#ff9100!important}.md-orange-A400-bg{background-color:#ff9100!important;color:rgba(0,0,0,.87)}.orange-A400-fg{color:#ff9100!important}.orange-A400-border{border-color:#ff9100!important}.orange-A400-border-top{border-top-color:#ff9100!important}.orange-A400-border-right{border-right-color:#ff9100!important}.orange-A400-border-bottom{border-bottom-color:#ff9100!important}.orange-A400-border-left{border-left-color:#ff9100!important}.orange-A700-bg{background-color:#ff6d00!important}.md-orange-A700-bg{background-color:#ff6d00!important;color:rgba(0,0,0,.87)}.orange-A700-fg{color:#ff6d00!important}.orange-A700-border{border-color:#ff6d00!important}.orange-A700-border-top{border-top-color:#ff6d00!important}.orange-A700-border-right{border-right-color:#ff6d00!important}.orange-A700-border-bottom{border-bottom-color:#ff6d00!important}.orange-A700-border-left{border-left-color:#ff6d00!important}.deep-orange-50-bg{background-color:#fbe9e7!important}.md-deep-orange-50-bg{background-color:#fbe9e7!important;color:rgba(0,0,0,.87)}.deep-orange-50-fg{color:#fbe9e7!important}.deep-orange-50-border{border-color:#fbe9e7!important}.deep-orange-50-border-top{border-top-color:#fbe9e7!important}.deep-orange-50-border-right{border-right-color:#fbe9e7!important}.deep-orange-50-border-bottom{border-bottom-color:#fbe9e7!important}.deep-orange-50-border-left{border-left-color:#fbe9e7!important}.deep-orange-100-bg{background-color:#ffccbc!important}.md-deep-orange-100-bg{background-color:#ffccbc!important;color:rgba(0,0,0,.87)}.deep-orange-100-fg{color:#ffccbc!important}.deep-orange-100-border{border-color:#ffccbc!important}.deep-orange-100-border-top{border-top-color:#ffccbc!important}.deep-orange-100-border-right{border-right-color:#ffccbc!important}.deep-orange-100-border-bottom{border-bottom-color:#ffccbc!important}.deep-orange-100-border-left{border-left-color:#ffccbc!important}.deep-orange-200-bg{background-color:#ffab91!important}.md-deep-orange-200-bg{background-color:#ffab91!important;color:rgba(0,0,0,.87)}.deep-orange-200-fg{color:#ffab91!important}.deep-orange-200-border{border-color:#ffab91!important}.deep-orange-200-border-top{border-top-color:#ffab91!important}.deep-orange-200-border-right{border-right-color:#ffab91!important}.deep-orange-200-border-bottom{border-bottom-color:#ffab91!important}.deep-orange-200-border-left{border-left-color:#ffab91!important}.deep-orange-300-bg{background-color:#ff8a65!important}.md-deep-orange-300-bg{background-color:#ff8a65!important;color:rgba(0,0,0,.87)}.deep-orange-300-fg{color:#ff8a65!important}.deep-orange-300-border{border-color:#ff8a65!important}.deep-orange-300-border-top{border-top-color:#ff8a65!important}.deep-orange-300-border-right{border-right-color:#ff8a65!important}.deep-orange-300-border-bottom{border-bottom-color:#ff8a65!important}.deep-orange-300-border-left{border-left-color:#ff8a65!important}.deep-orange-400-bg{background-color:#ff7043!important}.md-deep-orange-400-bg{background-color:#ff7043!important;color:rgba(0,0,0,.87)}.deep-orange-400-fg{color:#ff7043!important}.deep-orange-400-border{border-color:#ff7043!important}.deep-orange-400-border-top{border-top-color:#ff7043!important}.deep-orange-400-border-right{border-right-color:#ff7043!important}.deep-orange-400-border-bottom{border-bottom-color:#ff7043!important}.deep-orange-400-border-left{border-left-color:#ff7043!important}.deep-orange-500-bg{background-color:#ff5722!important}.md-deep-orange-500-bg{background-color:#ff5722!important;color:#fff}.deep-orange-500-fg{color:#ff5722!important}.deep-orange-500-border{border-color:#ff5722!important}.deep-orange-500-border-top{border-top-color:#ff5722!important}.deep-orange-500-border-right{border-right-color:#ff5722!important}.deep-orange-500-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-500-border-left{border-left-color:#ff5722!important}.md-deep-orange-bg{background-color:#ff5722!important;color:#fff}.deep-orange-bg{background-color:#ff5722!important}.deep-orange-fg{color:#ff5722!important}.deep-orange-border{border-color:#ff5722!important}.deep-orange-border-top{border-top-color:#ff5722!important}.deep-orange-border-right{border-right-color:#ff5722!important}.deep-orange-border-bottom{border-bottom-color:#ff5722!important}.deep-orange-border-left{border-left-color:#ff5722!important}.deep-orange-600-bg{background-color:#f4511e!important}.md-deep-orange-600-bg{background-color:#f4511e!important;color:#fff}.deep-orange-600-fg{color:#f4511e!important}.deep-orange-600-border{border-color:#f4511e!important}.deep-orange-600-border-top{border-top-color:#f4511e!important}.deep-orange-600-border-right{border-right-color:#f4511e!important}.deep-orange-600-border-bottom{border-bottom-color:#f4511e!important}.deep-orange-600-border-left{border-left-color:#f4511e!important}.deep-orange-700-bg{background-color:#e64a19!important}.md-deep-orange-700-bg{background-color:#e64a19!important;color:#fff}.deep-orange-700-fg{color:#e64a19!important}.deep-orange-700-border{border-color:#e64a19!important}.deep-orange-700-border-top{border-top-color:#e64a19!important}.deep-orange-700-border-right{border-right-color:#e64a19!important}.deep-orange-700-border-bottom{border-bottom-color:#e64a19!important}.deep-orange-700-border-left{border-left-color:#e64a19!important}.deep-orange-800-bg{background-color:#d84315!important}.md-deep-orange-800-bg{background-color:#d84315!important;color:#fff}.deep-orange-800-fg{color:#d84315!important}.deep-orange-800-border{border-color:#d84315!important}.deep-orange-800-border-top{border-top-color:#d84315!important}.deep-orange-800-border-right{border-right-color:#d84315!important}.deep-orange-800-border-bottom{border-bottom-color:#d84315!important}.deep-orange-800-border-left{border-left-color:#d84315!important}.deep-orange-900-bg{background-color:#bf360c!important}.md-deep-orange-900-bg{background-color:#bf360c!important;color:#fff}.deep-orange-900-fg{color:#bf360c!important}.deep-orange-900-border{border-color:#bf360c!important}.deep-orange-900-border-top{border-top-color:#bf360c!important}.deep-orange-900-border-right{border-right-color:#bf360c!important}.deep-orange-900-border-bottom{border-bottom-color:#bf360c!important}.deep-orange-900-border-left{border-left-color:#bf360c!important}.deep-orange-A100-bg{background-color:#ff9e80!important}.md-deep-orange-A100-bg{background-color:#ff9e80!important;color:rgba(0,0,0,.87)}.deep-orange-A100-fg{color:#ff9e80!important}.deep-orange-A100-border{border-color:#ff9e80!important}.deep-orange-A100-border-top{border-top-color:#ff9e80!important}.deep-orange-A100-border-right{border-right-color:#ff9e80!important}.deep-orange-A100-border-bottom{border-bottom-color:#ff9e80!important}.deep-orange-A100-border-left{border-left-color:#ff9e80!important}.deep-orange-A200-bg{background-color:#ff6e40!important}.md-deep-orange-A200-bg{background-color:#ff6e40!important;color:rgba(0,0,0,.87)}.deep-orange-A200-fg{color:#ff6e40!important}.deep-orange-A200-border{border-color:#ff6e40!important}.deep-orange-A200-border-top{border-top-color:#ff6e40!important}.deep-orange-A200-border-right{border-right-color:#ff6e40!important}.deep-orange-A200-border-bottom{border-bottom-color:#ff6e40!important}.deep-orange-A200-border-left{border-left-color:#ff6e40!important}.deep-orange-A400-bg{background-color:#ff3d00!important}.md-deep-orange-A400-bg{background-color:#ff3d00!important;color:#fff}.deep-orange-A400-fg{color:#ff3d00!important}.deep-orange-A400-border{border-color:#ff3d00!important}.deep-orange-A400-border-top{border-top-color:#ff3d00!important}.deep-orange-A400-border-right{border-right-color:#ff3d00!important}.deep-orange-A400-border-bottom{border-bottom-color:#ff3d00!important}.deep-orange-A400-border-left{border-left-color:#ff3d00!important}.deep-orange-A700-bg{background-color:#dd2c00!important}.md-deep-orange-A700-bg{background-color:#dd2c00!important;color:#fff}.deep-orange-A700-fg{color:#dd2c00!important}.deep-orange-A700-border{border-color:#dd2c00!important}.deep-orange-A700-border-top{border-top-color:#dd2c00!important}.deep-orange-A700-border-right{border-right-color:#dd2c00!important}.deep-orange-A700-border-bottom{border-bottom-color:#dd2c00!important}.deep-orange-A700-border-left{border-left-color:#dd2c00!important}.brown-50-bg{background-color:#efebe9!important}.md-brown-50-bg{background-color:#efebe9!important;color:rgba(0,0,0,.87)}.brown-50-fg{color:#efebe9!important}.brown-50-border{border-color:#efebe9!important}.brown-50-border-top{border-top-color:#efebe9!important}.brown-50-border-right{border-right-color:#efebe9!important}.brown-50-border-bottom{border-bottom-color:#efebe9!important}.brown-50-border-left{border-left-color:#efebe9!important}.brown-100-bg{background-color:#d7ccc8!important}.md-brown-100-bg{background-color:#d7ccc8!important;color:rgba(0,0,0,.87)}.brown-100-fg{color:#d7ccc8!important}.brown-100-border{border-color:#d7ccc8!important}.brown-100-border-top{border-top-color:#d7ccc8!important}.brown-100-border-right{border-right-color:#d7ccc8!important}.brown-100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-100-border-left{border-left-color:#d7ccc8!important}.brown-200-bg{background-color:#bcaaa4!important}.md-brown-200-bg{background-color:#bcaaa4!important;color:rgba(0,0,0,.87)}.brown-200-fg{color:#bcaaa4!important}.brown-200-border{border-color:#bcaaa4!important}.brown-200-border-top{border-top-color:#bcaaa4!important}.brown-200-border-right{border-right-color:#bcaaa4!important}.brown-200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-200-border-left{border-left-color:#bcaaa4!important}.brown-300-bg{background-color:#a1887f!important}.md-brown-300-bg{background-color:#a1887f!important;color:#fff}.brown-300-fg{color:#a1887f!important}.brown-300-border{border-color:#a1887f!important}.brown-300-border-top{border-top-color:#a1887f!important}.brown-300-border-right{border-right-color:#a1887f!important}.brown-300-border-bottom{border-bottom-color:#a1887f!important}.brown-300-border-left{border-left-color:#a1887f!important}.brown-400-bg{background-color:#8d6e63!important}.md-brown-400-bg{background-color:#8d6e63!important;color:#fff}.brown-400-fg{color:#8d6e63!important}.brown-400-border{border-color:#8d6e63!important}.brown-400-border-top{border-top-color:#8d6e63!important}.brown-400-border-right{border-right-color:#8d6e63!important}.brown-400-border-bottom{border-bottom-color:#8d6e63!important}.brown-400-border-left{border-left-color:#8d6e63!important}.brown-500-bg{background-color:#795548!important}.md-brown-500-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-500-fg{color:#795548!important}.brown-500-border{border-color:#795548!important}.brown-500-border-top{border-top-color:#795548!important}.brown-500-border-right{border-right-color:#795548!important}.brown-500-border-bottom{border-bottom-color:#795548!important}.brown-500-border-left{border-left-color:#795548!important}.md-brown-bg{background-color:#795548!important;color:rgba(255,255,255,.87)}.brown-bg{background-color:#795548!important}.brown-fg{color:#795548!important}.brown-border{border-color:#795548!important}.brown-border-top{border-top-color:#795548!important}.brown-border-right{border-right-color:#795548!important}.brown-border-bottom{border-bottom-color:#795548!important}.brown-border-left{border-left-color:#795548!important}.brown-600-bg{background-color:#6d4c41!important}.md-brown-600-bg{background-color:#6d4c41!important;color:rgba(255,255,255,.87)}.brown-600-fg{color:#6d4c41!important}.brown-600-border{border-color:#6d4c41!important}.brown-600-border-top{border-top-color:#6d4c41!important}.brown-600-border-right{border-right-color:#6d4c41!important}.brown-600-border-bottom{border-bottom-color:#6d4c41!important}.brown-600-border-left{border-left-color:#6d4c41!important}.brown-700-bg{background-color:#5d4037!important}.md-brown-700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-700-fg{color:#5d4037!important}.brown-700-border{border-color:#5d4037!important}.brown-700-border-top{border-top-color:#5d4037!important}.brown-700-border-right{border-right-color:#5d4037!important}.brown-700-border-bottom{border-bottom-color:#5d4037!important}.brown-700-border-left{border-left-color:#5d4037!important}.brown-800-bg{background-color:#4e342e!important}.md-brown-800-bg{background-color:#4e342e!important;color:rgba(255,255,255,.87)}.brown-800-fg{color:#4e342e!important}.brown-800-border{border-color:#4e342e!important}.brown-800-border-top{border-top-color:#4e342e!important}.brown-800-border-right{border-right-color:#4e342e!important}.brown-800-border-bottom{border-bottom-color:#4e342e!important}.brown-800-border-left{border-left-color:#4e342e!important}.brown-900-bg{background-color:#3e2723!important}.md-brown-900-bg{background-color:#3e2723!important;color:rgba(255,255,255,.87)}.brown-900-fg{color:#3e2723!important}.brown-900-border{border-color:#3e2723!important}.brown-900-border-top{border-top-color:#3e2723!important}.brown-900-border-right{border-right-color:#3e2723!important}.brown-900-border-bottom{border-bottom-color:#3e2723!important}.brown-900-border-left{border-left-color:#3e2723!important}.brown-A100-bg{background-color:#d7ccc8!important}.md-brown-A100-bg{background-color:#d7ccc8!important;color:rgba(255,255,255,.87)}.brown-A100-fg{color:#d7ccc8!important}.brown-A100-border{border-color:#d7ccc8!important}.brown-A100-border-top{border-top-color:#d7ccc8!important}.brown-A100-border-right{border-right-color:#d7ccc8!important}.brown-A100-border-bottom{border-bottom-color:#d7ccc8!important}.brown-A100-border-left{border-left-color:#d7ccc8!important}.brown-A200-bg{background-color:#bcaaa4!important}.md-brown-A200-bg{background-color:#bcaaa4!important;color:rgba(255,255,255,.87)}.brown-A200-fg{color:#bcaaa4!important}.brown-A200-border{border-color:#bcaaa4!important}.brown-A200-border-top{border-top-color:#bcaaa4!important}.brown-A200-border-right{border-right-color:#bcaaa4!important}.brown-A200-border-bottom{border-bottom-color:#bcaaa4!important}.brown-A200-border-left{border-left-color:#bcaaa4!important}.brown-A400-bg{background-color:#8d6e63!important}.md-brown-A400-bg{background-color:#8d6e63!important;color:rgba(255,255,255,.87)}.brown-A400-fg{color:#8d6e63!important}.brown-A400-border{border-color:#8d6e63!important}.brown-A400-border-top{border-top-color:#8d6e63!important}.brown-A400-border-right{border-right-color:#8d6e63!important}.brown-A400-border-bottom{border-bottom-color:#8d6e63!important}.brown-A400-border-left{border-left-color:#8d6e63!important}.brown-A700-bg{background-color:#5d4037!important}.md-brown-A700-bg{background-color:#5d4037!important;color:rgba(255,255,255,.87)}.brown-A700-fg{color:#5d4037!important}.brown-A700-border{border-color:#5d4037!important}.brown-A700-border-top{border-top-color:#5d4037!important}.brown-A700-border-right{border-right-color:#5d4037!important}.brown-A700-border-bottom{border-bottom-color:#5d4037!important}.brown-A700-border-left{border-left-color:#5d4037!important}.grey-50-bg{background-color:#fafafa!important}.md-grey-50-bg{background-color:#fafafa!important;color:rgba(0,0,0,.87)}.grey-50-fg{color:#fafafa!important}.grey-50-border{border-color:#fafafa!important}.grey-50-border-top{border-top-color:#fafafa!important}.grey-50-border-right{border-right-color:#fafafa!important}.grey-50-border-bottom{border-bottom-color:#fafafa!important}.grey-50-border-left{border-left-color:#fafafa!important}.grey-100-bg{background-color:#f5f5f5!important}.md-grey-100-bg{background-color:#f5f5f5!important;color:rgba(0,0,0,.87)}.grey-100-fg{color:#f5f5f5!important}.grey-100-border{border-color:#f5f5f5!important}.grey-100-border-top{border-top-color:#f5f5f5!important}.grey-100-border-right{border-right-color:#f5f5f5!important}.grey-100-border-bottom{border-bottom-color:#f5f5f5!important}.grey-100-border-left{border-left-color:#f5f5f5!important}.grey-200-bg{background-color:#eee!important}.md-grey-200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-200-fg{color:#eee!important}.grey-200-border{border-color:#eee!important}.grey-200-border-top{border-top-color:#eee!important}.grey-200-border-right{border-right-color:#eee!important}.grey-200-border-bottom{border-bottom-color:#eee!important}.grey-200-border-left{border-left-color:#eee!important}.grey-300-bg{background-color:#e0e0e0!important}.md-grey-300-bg{background-color:#e0e0e0!important;color:rgba(0,0,0,.87)}.grey-300-fg{color:#e0e0e0!important}.grey-300-border{border-color:#e0e0e0!important}.grey-300-border-top{border-top-color:#e0e0e0!important}.grey-300-border-right{border-right-color:#e0e0e0!important}.grey-300-border-bottom{border-bottom-color:#e0e0e0!important}.grey-300-border-left{border-left-color:#e0e0e0!important}.grey-400-bg{background-color:#bdbdbd!important}.md-grey-400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-400-fg{color:#bdbdbd!important}.grey-400-border{border-color:#bdbdbd!important}.grey-400-border-top{border-top-color:#bdbdbd!important}.grey-400-border-right{border-right-color:#bdbdbd!important}.grey-400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-400-border-left{border-left-color:#bdbdbd!important}.grey-500-bg{background-color:#9e9e9e!important}.md-grey-500-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-500-fg{color:#9e9e9e!important}.grey-500-border{border-color:#9e9e9e!important}.grey-500-border-top{border-top-color:#9e9e9e!important}.grey-500-border-right{border-right-color:#9e9e9e!important}.grey-500-border-bottom{border-bottom-color:#9e9e9e!important}.grey-500-border-left{border-left-color:#9e9e9e!important}.md-grey-bg{background-color:#9e9e9e!important;color:rgba(0,0,0,.87)}.grey-bg{background-color:#9e9e9e!important}.grey-fg{color:#9e9e9e!important}.grey-border{border-color:#9e9e9e!important}.grey-border-top{border-top-color:#9e9e9e!important}.grey-border-right{border-right-color:#9e9e9e!important}.grey-border-bottom{border-bottom-color:#9e9e9e!important}.grey-border-left{border-left-color:#9e9e9e!important}.grey-600-bg{background-color:#757575!important}.md-grey-600-bg{background-color:#757575!important;color:rgba(255,255,255,.87)}.grey-600-fg{color:#757575!important}.grey-600-border{border-color:#757575!important}.grey-600-border-top{border-top-color:#757575!important}.grey-600-border-right{border-right-color:#757575!important}.grey-600-border-bottom{border-bottom-color:#757575!important}.grey-600-border-left{border-left-color:#757575!important}.grey-700-bg{background-color:#616161!important}.md-grey-700-bg{background-color:#616161!important;color:rgba(255,255,255,.87)}.grey-700-fg{color:#616161!important}.grey-700-border{border-color:#616161!important}.grey-700-border-top{border-top-color:#616161!important}.grey-700-border-right{border-right-color:#616161!important}.grey-700-border-bottom{border-bottom-color:#616161!important}.grey-700-border-left{border-left-color:#616161!important}.grey-800-bg{background-color:#424242!important}.md-grey-800-bg{background-color:#424242!important;color:rgba(255,255,255,.87)}.grey-800-fg{color:#424242!important}.grey-800-border{border-color:#424242!important}.grey-800-border-top{border-top-color:#424242!important}.grey-800-border-right{border-right-color:#424242!important}.grey-800-border-bottom{border-bottom-color:#424242!important}.grey-800-border-left{border-left-color:#424242!important}.grey-900-bg{background-color:#212121!important}.md-grey-900-bg{background-color:#212121!important;color:rgba(255,255,255,.87)}.grey-900-fg{color:#212121!important}.grey-900-border{border-color:#212121!important}.grey-900-border-top{border-top-color:#212121!important}.grey-900-border-right{border-right-color:#212121!important}.grey-900-border-bottom{border-bottom-color:#212121!important}.grey-900-border-left{border-left-color:#212121!important}.grey-1000-bg{background-color:#000!important}.md-grey-1000-bg{background-color:#000!important}.grey-1000-fg{color:#000!important}.grey-1000-border{border-color:#000!important}.grey-1000-border-top{border-top-color:#000!important}.grey-1000-border-right{border-right-color:#000!important}.grey-1000-border-bottom{border-bottom-color:#000!important}.grey-1000-border-left{border-left-color:#000!important}.grey-A100-bg{background-color:#fff!important}.md-grey-A100-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.grey-A100-fg{color:#fff!important}.grey-A100-border{border-color:#fff!important}.grey-A100-border-top{border-top-color:#fff!important}.grey-A100-border-right{border-right-color:#fff!important}.grey-A100-border-bottom{border-bottom-color:#fff!important}.grey-A100-border-left{border-left-color:#fff!important}.grey-A200-bg{background-color:#eee!important}.md-grey-A200-bg{background-color:#eee!important;color:rgba(0,0,0,.87)}.grey-A200-fg{color:#eee!important}.grey-A200-border{border-color:#eee!important}.grey-A200-border-top{border-top-color:#eee!important}.grey-A200-border-right{border-right-color:#eee!important}.grey-A200-border-bottom{border-bottom-color:#eee!important}.grey-A200-border-left{border-left-color:#eee!important}.grey-A400-bg{background-color:#bdbdbd!important}.md-grey-A400-bg{background-color:#bdbdbd!important;color:rgba(0,0,0,.87)}.grey-A400-fg{color:#bdbdbd!important}.grey-A400-border{border-color:#bdbdbd!important}.grey-A400-border-top{border-top-color:#bdbdbd!important}.grey-A400-border-right{border-right-color:#bdbdbd!important}.grey-A400-border-bottom{border-bottom-color:#bdbdbd!important}.grey-A400-border-left{border-left-color:#bdbdbd!important}.grey-A700-bg{background-color:#616161!important}.md-grey-A700-bg{background-color:#616161!important;color:rgba(0,0,0,.87)}.grey-A700-fg{color:#616161!important}.grey-A700-border{border-color:#616161!important}.grey-A700-border-top{border-top-color:#616161!important}.grey-A700-border-right{border-right-color:#616161!important}.grey-A700-border-bottom{border-bottom-color:#616161!important}.grey-A700-border-left{border-left-color:#616161!important}.blue-grey-50-bg{background-color:#eceff1!important}.md-blue-grey-50-bg{background-color:#eceff1!important;color:rgba(0,0,0,.87)}.blue-grey-50-fg{color:#eceff1!important}.blue-grey-50-border{border-color:#eceff1!important}.blue-grey-50-border-top{border-top-color:#eceff1!important}.blue-grey-50-border-right{border-right-color:#eceff1!important}.blue-grey-50-border-bottom{border-bottom-color:#eceff1!important}.blue-grey-50-border-left{border-left-color:#eceff1!important}.blue-grey-100-bg{background-color:#cfd8dc!important}.md-blue-grey-100-bg{background-color:#cfd8dc!important;color:rgba(0,0,0,.87)}.blue-grey-100-fg{color:#cfd8dc!important}.blue-grey-100-border{border-color:#cfd8dc!important}.blue-grey-100-border-top{border-top-color:#cfd8dc!important}.blue-grey-100-border-right{border-right-color:#cfd8dc!important}.blue-grey-100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-100-border-left{border-left-color:#cfd8dc!important}.blue-grey-200-bg{background-color:#b0bec5!important}.md-blue-grey-200-bg{background-color:#b0bec5!important;color:rgba(0,0,0,.87)}.blue-grey-200-fg{color:#b0bec5!important}.blue-grey-200-border{border-color:#b0bec5!important}.blue-grey-200-border-top{border-top-color:#b0bec5!important}.blue-grey-200-border-right{border-right-color:#b0bec5!important}.blue-grey-200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-200-border-left{border-left-color:#b0bec5!important}.blue-grey-300-bg{background-color:#90a4ae!important}.md-blue-grey-300-bg{background-color:#90a4ae!important;color:rgba(0,0,0,.87)}.blue-grey-300-fg{color:#90a4ae!important}.blue-grey-300-border{border-color:#90a4ae!important}.blue-grey-300-border-top{border-top-color:#90a4ae!important}.blue-grey-300-border-right{border-right-color:#90a4ae!important}.blue-grey-300-border-bottom{border-bottom-color:#90a4ae!important}.blue-grey-300-border-left{border-left-color:#90a4ae!important}.blue-grey-400-bg{background-color:#78909c!important}.md-blue-grey-400-bg{background-color:#78909c!important;color:#fff}.blue-grey-400-fg{color:#78909c!important}.blue-grey-400-border{border-color:#78909c!important}.blue-grey-400-border-top{border-top-color:#78909c!important}.blue-grey-400-border-right{border-right-color:#78909c!important}.blue-grey-400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-400-border-left{border-left-color:#78909c!important}.blue-grey-500-bg{background-color:#607d8b!important}.md-blue-grey-500-bg{background-color:#607d8b!important;color:#fff}.blue-grey-500-fg{color:#607d8b!important}.blue-grey-500-border{border-color:#607d8b!important}.blue-grey-500-border-top{border-top-color:#607d8b!important}.blue-grey-500-border-right{border-right-color:#607d8b!important}.blue-grey-500-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-500-border-left{border-left-color:#607d8b!important}.md-blue-grey-bg{background-color:#607d8b!important;color:#fff}.blue-grey-bg{background-color:#607d8b!important}.blue-grey-fg{color:#607d8b!important}.blue-grey-border{border-color:#607d8b!important}.blue-grey-border-top{border-top-color:#607d8b!important}.blue-grey-border-right{border-right-color:#607d8b!important}.blue-grey-border-bottom{border-bottom-color:#607d8b!important}.blue-grey-border-left{border-left-color:#607d8b!important}.blue-grey-600-bg{background-color:#546e7a!important}.md-blue-grey-600-bg{background-color:#546e7a!important;color:rgba(255,255,255,.87)}.blue-grey-600-fg{color:#546e7a!important}.blue-grey-600-border{border-color:#546e7a!important}.blue-grey-600-border-top{border-top-color:#546e7a!important}.blue-grey-600-border-right{border-right-color:#546e7a!important}.blue-grey-600-border-bottom{border-bottom-color:#546e7a!important}.blue-grey-600-border-left{border-left-color:#546e7a!important}.blue-grey-700-bg{background-color:#455a64!important}.md-blue-grey-700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-700-fg{color:#455a64!important}.blue-grey-700-border{border-color:#455a64!important}.blue-grey-700-border-top{border-top-color:#455a64!important}.blue-grey-700-border-right{border-right-color:#455a64!important}.blue-grey-700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-700-border-left{border-left-color:#455a64!important}.blue-grey-800-bg{background-color:#37474f!important}.md-blue-grey-800-bg{background-color:#37474f!important;color:rgba(255,255,255,.87)}.blue-grey-800-fg{color:#37474f!important}.blue-grey-800-border{border-color:#37474f!important}.blue-grey-800-border-top{border-top-color:#37474f!important}.blue-grey-800-border-right{border-right-color:#37474f!important}.blue-grey-800-border-bottom{border-bottom-color:#37474f!important}.blue-grey-800-border-left{border-left-color:#37474f!important}.blue-grey-900-bg{background-color:#263238!important}.md-blue-grey-900-bg{background-color:#263238!important;color:rgba(255,255,255,.87)}.blue-grey-900-fg{color:#263238!important}.blue-grey-900-border{border-color:#263238!important}.blue-grey-900-border-top{border-top-color:#263238!important}.blue-grey-900-border-right{border-right-color:#263238!important}.blue-grey-900-border-bottom{border-bottom-color:#263238!important}.blue-grey-900-border-left{border-left-color:#263238!important}.blue-grey-A100-bg{background-color:#cfd8dc!important}.md-blue-grey-A100-bg{background-color:#cfd8dc!important;color:rgba(255,255,255,.87)}.blue-grey-A100-fg{color:#cfd8dc!important}.blue-grey-A100-border{border-color:#cfd8dc!important}.blue-grey-A100-border-top{border-top-color:#cfd8dc!important}.blue-grey-A100-border-right{border-right-color:#cfd8dc!important}.blue-grey-A100-border-bottom{border-bottom-color:#cfd8dc!important}.blue-grey-A100-border-left{border-left-color:#cfd8dc!important}.blue-grey-A200-bg{background-color:#b0bec5!important}.md-blue-grey-A200-bg{background-color:#b0bec5!important;color:rgba(255,255,255,.87)}.blue-grey-A200-fg{color:#b0bec5!important}.blue-grey-A200-border{border-color:#b0bec5!important}.blue-grey-A200-border-top{border-top-color:#b0bec5!important}.blue-grey-A200-border-right{border-right-color:#b0bec5!important}.blue-grey-A200-border-bottom{border-bottom-color:#b0bec5!important}.blue-grey-A200-border-left{border-left-color:#b0bec5!important}.blue-grey-A400-bg{background-color:#78909c!important}.md-blue-grey-A400-bg{background-color:#78909c!important;color:rgba(255,255,255,.87)}.blue-grey-A400-fg{color:#78909c!important}.blue-grey-A400-border{border-color:#78909c!important}.blue-grey-A400-border-top{border-top-color:#78909c!important}.blue-grey-A400-border-right{border-right-color:#78909c!important}.blue-grey-A400-border-bottom{border-bottom-color:#78909c!important}.blue-grey-A400-border-left{border-left-color:#78909c!important}.blue-grey-A700-bg{background-color:#455a64!important}.md-blue-grey-A700-bg{background-color:#455a64!important;color:rgba(255,255,255,.87)}.blue-grey-A700-fg{color:#455a64!important}.blue-grey-A700-border{border-color:#455a64!important}.blue-grey-A700-border-top{border-top-color:#455a64!important}.blue-grey-A700-border-right{border-right-color:#455a64!important}.blue-grey-A700-border-bottom{border-bottom-color:#455a64!important}.blue-grey-A700-border-left{border-left-color:#455a64!important}.white-500-bg{background-color:#fff!important}.md-white-500-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-500-fg{color:#fff!important}.white-500-border{border-color:#fff!important}.white-500-border-top{border-top-color:#fff!important}.white-500-border-right{border-right-color:#fff!important}.white-500-border-bottom{border-bottom-color:#fff!important}.white-500-border-left{border-left-color:#fff!important}.md-white-bg{background-color:#fff!important;color:rgba(0,0,0,.87)}.white-bg{background-color:#fff!important}.white-fg{color:#fff!important}.white-border{border-color:#fff!important}.white-border-top{border-top-color:#fff!important}.white-border-right{border-right-color:#fff!important}.white-border-bottom{border-bottom-color:#fff!important}.white-border-left{border-left-color:#fff!important}.black-500-bg{background-color:#000!important}.md-black-500-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-500-fg{color:#000!important}.black-500-border{border-color:#000!important}.black-500-border-top{border-top-color:#000!important}.black-500-border-right{border-right-color:#000!important}.black-500-border-bottom{border-bottom-color:#000!important}.black-500-border-left{border-left-color:#000!important}.md-black-bg{background-color:#000!important;color:rgba(255,255,255,.87)}.black-bg{background-color:#000!important}.black-fg{color:#000!important}.black-border{border-color:#000!important}.black-border-top{border-top-color:#000!important}.black-border-right{border-right-color:#000!important}.black-border-bottom{border-bottom-color:#000!important}.black-border-left{border-left-color:#000!important}i,md-icon[md-font-icon]{font-size:24px;width:24px;height:24px;min-width:24px;min-height:24px;line-height:24px}i.s4,md-icon[md-font-icon].s4{font-size:4px!important;width:4px!important;height:4px!important;min-width:4px!important;min-height:4px!important;line-height:4px!important}i.s6,md-icon[md-font-icon].s6{font-size:6px!important;width:6px!important;height:6px!important;min-width:6px!important;min-height:6px!important;line-height:6px!important}i.s8,md-icon[md-font-icon].s8{font-size:8px!important;width:8px!important;height:8px!important;min-width:8px!important;min-height:8px!important;line-height:8px!important}i.s10,md-icon[md-font-icon].s10{font-size:10px!important;width:10px!important;height:10px!important;min-width:10px!important;min-height:10px!important;line-height:10px!important}i.s12,md-icon[md-font-icon].s12{font-size:12px!important;width:12px!important;height:12px!important;min-width:12px!important;min-height:12px!important;line-height:12px!important}i.s14,md-icon[md-font-icon].s14{font-size:14px!important;width:14px!important;height:14px!important;min-width:14px!important;min-height:14px!important;line-height:14px!important}i.s16,md-icon[md-font-icon].s16{font-size:16px!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;line-height:16px!important}i.s18,md-icon[md-font-icon].s18{font-size:18px!important;width:18px!important;height:18px!important;min-width:18px!important;min-height:18px!important;line-height:18px!important}i.s20,md-icon[md-font-icon].s20{font-size:20px!important;width:20px!important;height:20px!important;min-width:20px!important;min-height:20px!important;line-height:20px!important}i.s22,md-icon[md-font-icon].s22{font-size:22px!important;width:22px!important;height:22px!important;min-width:22px!important;min-height:22px!important;line-height:22px!important}i.s24,md-icon[md-font-icon].s24{font-size:24px!important;width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;line-height:24px!important}i.s26,md-icon[md-font-icon].s26{font-size:26px!important;width:26px!important;height:26px!important;min-width:26px!important;min-height:26px!important;line-height:26px!important}i.s28,md-icon[md-font-icon].s28{font-size:28px!important;width:28px!important;height:28px!important;min-width:28px!important;min-height:28px!important;line-height:28px!important}i.s30,md-icon[md-font-icon].s30{font-size:30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;line-height:30px!important}i.s32,md-icon[md-font-icon].s32{font-size:32px!important;width:32px!important;height:32px!important;min-width:32px!important;min-height:32px!important;line-height:32px!important}i.s34,md-icon[md-font-icon].s34{font-size:34px!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;line-height:34px!important}i.s36,md-icon[md-font-icon].s36{font-size:36px!important;width:36px!important;height:36px!important;min-width:36px!important;min-height:36px!important;line-height:36px!important}i.s38,md-icon[md-font-icon].s38{font-size:38px!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;line-height:38px!important}i.s40,md-icon[md-font-icon].s40{font-size:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;line-height:40px!important}i.s42,md-icon[md-font-icon].s42{font-size:42px!important;width:42px!important;height:42px!important;min-width:42px!important;min-height:42px!important;line-height:42px!important}i.s44,md-icon[md-font-icon].s44{font-size:44px!important;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;line-height:44px!important}i.s46,md-icon[md-font-icon].s46{font-size:46px!important;width:46px!important;height:46px!important;min-width:46px!important;min-height:46px!important;line-height:46px!important}i.s48,md-icon[md-font-icon].s48{font-size:48px!important;width:48px!important;height:48px!important;min-width:48px!important;min-height:48px!important;line-height:48px!important}i.s50,md-icon[md-font-icon].s50{font-size:50px!important;width:50px!important;height:50px!important;min-width:50px!important;min-height:50px!important;line-height:50px!important}i.s52,md-icon[md-font-icon].s52{font-size:52px!important;width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;line-height:52px!important}i.s54,md-icon[md-font-icon].s54{font-size:54px!important;width:54px!important;height:54px!important;min-width:54px!important;min-height:54px!important;line-height:54px!important}i.s56,md-icon[md-font-icon].s56{font-size:56px!important;width:56px!important;height:56px!important;min-width:56px!important;min-height:56px!important;line-height:56px!important}i.s58,md-icon[md-font-icon].s58{font-size:58px!important;width:58px!important;height:58px!important;min-width:58px!important;min-height:58px!important;line-height:58px!important}i.s60,md-icon[md-font-icon].s60{font-size:60px!important;width:60px!important;height:60px!important;min-width:60px!important;min-height:60px!important;line-height:60px!important}i.s62,md-icon[md-font-icon].s62{font-size:62px!important;width:62px!important;height:62px!important;min-width:62px!important;min-height:62px!important;line-height:62px!important}i.s64,md-icon[md-font-icon].s64{font-size:64px!important;width:64px!important;height:64px!important;min-width:64px!important;min-height:64px!important;line-height:64px!important}i.s66,md-icon[md-font-icon].s66{font-size:66px!important;width:66px!important;height:66px!important;min-width:66px!important;min-height:66px!important;line-height:66px!important}i.s68,md-icon[md-font-icon].s68{font-size:68px!important;width:68px!important;height:68px!important;min-width:68px!important;min-height:68px!important;line-height:68px!important}i.s70,md-icon[md-font-icon].s70{font-size:70px!important;width:70px!important;height:70px!important;min-width:70px!important;min-height:70px!important;line-height:70px!important}i.s72,md-icon[md-font-icon].s72{font-size:72px!important;width:72px!important;height:72px!important;min-width:72px!important;min-height:72px!important;line-height:72px!important}i.s74,md-icon[md-font-icon].s74{font-size:74px!important;width:74px!important;height:74px!important;min-width:74px!important;min-height:74px!important;line-height:74px!important}i.s76,md-icon[md-font-icon].s76{font-size:76px!important;width:76px!important;height:76px!important;min-width:76px!important;min-height:76px!important;line-height:76px!important}i.s78,md-icon[md-font-icon].s78{font-size:78px!important;width:78px!important;height:78px!important;min-width:78px!important;min-height:78px!important;line-height:78px!important}i.s80,md-icon[md-font-icon].s80{font-size:80px!important;width:80px!important;height:80px!important;min-width:80px!important;min-height:80px!important;line-height:80px!important}i.s82,md-icon[md-font-icon].s82{font-size:82px!important;width:82px!important;height:82px!important;min-width:82px!important;min-height:82px!important;line-height:82px!important}i.s84,md-icon[md-font-icon].s84{font-size:84px!important;width:84px!important;height:84px!important;min-width:84px!important;min-height:84px!important;line-height:84px!important}i.s86,md-icon[md-font-icon].s86{font-size:86px!important;width:86px!important;height:86px!important;min-width:86px!important;min-height:86px!important;line-height:86px!important}i.s88,md-icon[md-font-icon].s88{font-size:88px!important;width:88px!important;height:88px!important;min-width:88px!important;min-height:88px!important;line-height:88px!important}i.s90,md-icon[md-font-icon].s90{font-size:90px!important;width:90px!important;height:90px!important;min-width:90px!important;min-height:90px!important;line-height:90px!important}i.s92,md-icon[md-font-icon].s92{font-size:92px!important;width:92px!important;height:92px!important;min-width:92px!important;min-height:92px!important;line-height:92px!important}i.s94,md-icon[md-font-icon].s94{font-size:94px!important;width:94px!important;height:94px!important;min-width:94px!important;min-height:94px!important;line-height:94px!important}i.s96,md-icon[md-font-icon].s96{font-size:96px!important;width:96px!important;height:96px!important;min-width:96px!important;min-height:96px!important;line-height:96px!important}i.s98,md-icon[md-font-icon].s98{font-size:98px!important;width:98px!important;height:98px!important;min-width:98px!important;min-height:98px!important;line-height:98px!important}i.s100,md-icon[md-font-icon].s100{font-size:100px!important;width:100px!important;height:100px!important;min-width:100px!important;min-height:100px!important;line-height:100px!important}i.s102,md-icon[md-font-icon].s102{font-size:102px!important;width:102px!important;height:102px!important;min-width:102px!important;min-height:102px!important;line-height:102px!important}i.s104,md-icon[md-font-icon].s104{font-size:104px!important;width:104px!important;height:104px!important;min-width:104px!important;min-height:104px!important;line-height:104px!important}i.s106,md-icon[md-font-icon].s106{font-size:106px!important;width:106px!important;height:106px!important;min-width:106px!important;min-height:106px!important;line-height:106px!important}i.s108,md-icon[md-font-icon].s108{font-size:108px!important;width:108px!important;height:108px!important;min-width:108px!important;min-height:108px!important;line-height:108px!important}i.s110,md-icon[md-font-icon].s110{font-size:110px!important;width:110px!important;height:110px!important;min-width:110px!important;min-height:110px!important;line-height:110px!important}i.s112,md-icon[md-font-icon].s112{font-size:112px!important;width:112px!important;height:112px!important;min-width:112px!important;min-height:112px!important;line-height:112px!important}i.s114,md-icon[md-font-icon].s114{font-size:114px!important;width:114px!important;height:114px!important;min-width:114px!important;min-height:114px!important;line-height:114px!important}i.s116,md-icon[md-font-icon].s116{font-size:116px!important;width:116px!important;height:116px!important;min-width:116px!important;min-height:116px!important;line-height:116px!important}i.s118,md-icon[md-font-icon].s118{font-size:118px!important;width:118px!important;height:118px!important;min-width:118px!important;min-height:118px!important;line-height:118px!important}i.s120,md-icon[md-font-icon].s120{font-size:120px!important;width:120px!important;height:120px!important;min-width:120px!important;min-height:120px!important;line-height:120px!important}i.s122,md-icon[md-font-icon].s122{font-size:122px!important;width:122px!important;height:122px!important;min-width:122px!important;min-height:122px!important;line-height:122px!important}i.s124,md-icon[md-font-icon].s124{font-size:124px!important;width:124px!important;height:124px!important;min-width:124px!important;min-height:124px!important;line-height:124px!important}i.s126,md-icon[md-font-icon].s126{font-size:126px!important;width:126px!important;height:126px!important;min-width:126px!important;min-height:126px!important;line-height:126px!important}i.s128,md-icon[md-font-icon].s128{font-size:128px!important;width:128px!important;height:128px!important;min-width:128px!important;min-height:128px!important;line-height:128px!important}i.s130,md-icon[md-font-icon].s130{font-size:130px!important;width:130px!important;height:130px!important;min-width:130px!important;min-height:130px!important;line-height:130px!important}i.s132,md-icon[md-font-icon].s132{font-size:132px!important;width:132px!important;height:132px!important;min-width:132px!important;min-height:132px!important;line-height:132px!important}i.s134,md-icon[md-font-icon].s134{font-size:134px!important;width:134px!important;height:134px!important;min-width:134px!important;min-height:134px!important;line-height:134px!important}i.s136,md-icon[md-font-icon].s136{font-size:136px!important;width:136px!important;height:136px!important;min-width:136px!important;min-height:136px!important;line-height:136px!important}i.s138,md-icon[md-font-icon].s138{font-size:138px!important;width:138px!important;height:138px!important;min-width:138px!important;min-height:138px!important;line-height:138px!important}i.s140,md-icon[md-font-icon].s140{font-size:140px!important;width:140px!important;height:140px!important;min-width:140px!important;min-height:140px!important;line-height:140px!important}i.s142,md-icon[md-font-icon].s142{font-size:142px!important;width:142px!important;height:142px!important;min-width:142px!important;min-height:142px!important;line-height:142px!important}i.s144,md-icon[md-font-icon].s144{font-size:144px!important;width:144px!important;height:144px!important;min-width:144px!important;min-height:144px!important;line-height:144px!important}i.s146,md-icon[md-font-icon].s146{font-size:146px!important;width:146px!important;height:146px!important;min-width:146px!important;min-height:146px!important;line-height:146px!important}i.s148,md-icon[md-font-icon].s148{font-size:148px!important;width:148px!important;height:148px!important;min-width:148px!important;min-height:148px!important;line-height:148px!important}i.s150,md-icon[md-font-icon].s150{font-size:150px!important;width:150px!important;height:150px!important;min-width:150px!important;min-height:150px!important;line-height:150px!important}i.s152,md-icon[md-font-icon].s152{font-size:152px!important;width:152px!important;height:152px!important;min-width:152px!important;min-height:152px!important;line-height:152px!important}i.s154,md-icon[md-font-icon].s154{font-size:154px!important;width:154px!important;height:154px!important;min-width:154px!important;min-height:154px!important;line-height:154px!important}i.s156,md-icon[md-font-icon].s156{font-size:156px!important;width:156px!important;height:156px!important;min-width:156px!important;min-height:156px!important;line-height:156px!important}i.s158,md-icon[md-font-icon].s158{font-size:158px!important;width:158px!important;height:158px!important;min-width:158px!important;min-height:158px!important;line-height:158px!important}i.s160,md-icon[md-font-icon].s160{font-size:160px!important;width:160px!important;height:160px!important;min-width:160px!important;min-height:160px!important;line-height:160px!important}i.s162,md-icon[md-font-icon].s162{font-size:162px!important;width:162px!important;height:162px!important;min-width:162px!important;min-height:162px!important;line-height:162px!important}i.s164,md-icon[md-font-icon].s164{font-size:164px!important;width:164px!important;height:164px!important;min-width:164px!important;min-height:164px!important;line-height:164px!important}i.s166,md-icon[md-font-icon].s166{font-size:166px!important;width:166px!important;height:166px!important;min-width:166px!important;min-height:166px!important;line-height:166px!important}i.s168,md-icon[md-font-icon].s168{font-size:168px!important;width:168px!important;height:168px!important;min-width:168px!important;min-height:168px!important;line-height:168px!important}i.s170,md-icon[md-font-icon].s170{font-size:170px!important;width:170px!important;height:170px!important;min-width:170px!important;min-height:170px!important;line-height:170px!important}i.s172,md-icon[md-font-icon].s172{font-size:172px!important;width:172px!important;height:172px!important;min-width:172px!important;min-height:172px!important;line-height:172px!important}i.s174,md-icon[md-font-icon].s174{font-size:174px!important;width:174px!important;height:174px!important;min-width:174px!important;min-height:174px!important;line-height:174px!important}i.s176,md-icon[md-font-icon].s176{font-size:176px!important;width:176px!important;height:176px!important;min-width:176px!important;min-height:176px!important;line-height:176px!important}i.s178,md-icon[md-font-icon].s178{font-size:178px!important;width:178px!important;height:178px!important;min-width:178px!important;min-height:178px!important;line-height:178px!important}i.s180,md-icon[md-font-icon].s180{font-size:180px!important;width:180px!important;height:180px!important;min-width:180px!important;min-height:180px!important;line-height:180px!important}i.s182,md-icon[md-font-icon].s182{font-size:182px!important;width:182px!important;height:182px!important;min-width:182px!important;min-height:182px!important;line-height:182px!important}i.s184,md-icon[md-font-icon].s184{font-size:184px!important;width:184px!important;height:184px!important;min-width:184px!important;min-height:184px!important;line-height:184px!important}i.s186,md-icon[md-font-icon].s186{font-size:186px!important;width:186px!important;height:186px!important;min-width:186px!important;min-height:186px!important;line-height:186px!important}i.s188,md-icon[md-font-icon].s188{font-size:188px!important;width:188px!important;height:188px!important;min-width:188px!important;min-height:188px!important;line-height:188px!important}i.s190,md-icon[md-font-icon].s190{font-size:190px!important;width:190px!important;height:190px!important;min-width:190px!important;min-height:190px!important;line-height:190px!important}i.s192,md-icon[md-font-icon].s192{font-size:192px!important;width:192px!important;height:192px!important;min-width:192px!important;min-height:192px!important;line-height:192px!important}i.s194,md-icon[md-font-icon].s194{font-size:194px!important;width:194px!important;height:194px!important;min-width:194px!important;min-height:194px!important;line-height:194px!important}i.s196,md-icon[md-font-icon].s196{font-size:196px!important;width:196px!important;height:196px!important;min-width:196px!important;min-height:196px!important;line-height:196px!important}i.s198,md-icon[md-font-icon].s198{font-size:198px!important;width:198px!important;height:198px!important;min-width:198px!important;min-height:198px!important;line-height:198px!important}i.s200,md-icon[md-font-icon].s200{font-size:200px!important;width:200px!important;height:200px!important;min-width:200px!important;min-height:200px!important;line-height:200px!important}i.s202,md-icon[md-font-icon].s202{font-size:202px!important;width:202px!important;height:202px!important;min-width:202px!important;min-height:202px!important;line-height:202px!important}i.s204,md-icon[md-font-icon].s204{font-size:204px!important;width:204px!important;height:204px!important;min-width:204px!important;min-height:204px!important;line-height:204px!important}i.s206,md-icon[md-font-icon].s206{font-size:206px!important;width:206px!important;height:206px!important;min-width:206px!important;min-height:206px!important;line-height:206px!important}i.s208,md-icon[md-font-icon].s208{font-size:208px!important;width:208px!important;height:208px!important;min-width:208px!important;min-height:208px!important;line-height:208px!important}i.s210,md-icon[md-font-icon].s210{font-size:210px!important;width:210px!important;height:210px!important;min-width:210px!important;min-height:210px!important;line-height:210px!important}i.s212,md-icon[md-font-icon].s212{font-size:212px!important;width:212px!important;height:212px!important;min-width:212px!important;min-height:212px!important;line-height:212px!important}i.s214,md-icon[md-font-icon].s214{font-size:214px!important;width:214px!important;height:214px!important;min-width:214px!important;min-height:214px!important;line-height:214px!important}i.s216,md-icon[md-font-icon].s216{font-size:216px!important;width:216px!important;height:216px!important;min-width:216px!important;min-height:216px!important;line-height:216px!important}i.s218,md-icon[md-font-icon].s218{font-size:218px!important;width:218px!important;height:218px!important;min-width:218px!important;min-height:218px!important;line-height:218px!important}i.s220,md-icon[md-font-icon].s220{font-size:220px!important;width:220px!important;height:220px!important;min-width:220px!important;min-height:220px!important;line-height:220px!important}i.s222,md-icon[md-font-icon].s222{font-size:222px!important;width:222px!important;height:222px!important;min-width:222px!important;min-height:222px!important;line-height:222px!important}i.s224,md-icon[md-font-icon].s224{font-size:224px!important;width:224px!important;height:224px!important;min-width:224px!important;min-height:224px!important;line-height:224px!important}i.s226,md-icon[md-font-icon].s226{font-size:226px!important;width:226px!important;height:226px!important;min-width:226px!important;min-height:226px!important;line-height:226px!important}i.s228,md-icon[md-font-icon].s228{font-size:228px!important;width:228px!important;height:228px!important;min-width:228px!important;min-height:228px!important;line-height:228px!important}i.s230,md-icon[md-font-icon].s230{font-size:230px!important;width:230px!important;height:230px!important;min-width:230px!important;min-height:230px!important;line-height:230px!important}i.s232,md-icon[md-font-icon].s232{font-size:232px!important;width:232px!important;height:232px!important;min-width:232px!important;min-height:232px!important;line-height:232px!important}i.s234,md-icon[md-font-icon].s234{font-size:234px!important;width:234px!important;height:234px!important;min-width:234px!important;min-height:234px!important;line-height:234px!important}i.s236,md-icon[md-font-icon].s236{font-size:236px!important;width:236px!important;height:236px!important;min-width:236px!important;min-height:236px!important;line-height:236px!important}i.s238,md-icon[md-font-icon].s238{font-size:238px!important;width:238px!important;height:238px!important;min-width:238px!important;min-height:238px!important;line-height:238px!important}i.s240,md-icon[md-font-icon].s240{font-size:240px!important;width:240px!important;height:240px!important;min-width:240px!important;min-height:240px!important;line-height:240px!important}i.s242,md-icon[md-font-icon].s242{font-size:242px!important;width:242px!important;height:242px!important;min-width:242px!important;min-height:242px!important;line-height:242px!important}i.s244,md-icon[md-font-icon].s244{font-size:244px!important;width:244px!important;height:244px!important;min-width:244px!important;min-height:244px!important;line-height:244px!important}i.s246,md-icon[md-font-icon].s246{font-size:246px!important;width:246px!important;height:246px!important;min-width:246px!important;min-height:246px!important;line-height:246px!important}i.s248,md-icon[md-font-icon].s248{font-size:248px!important;width:248px!important;height:248px!important;min-width:248px!important;min-height:248px!important;line-height:248px!important}i.s250,md-icon[md-font-icon].s250{font-size:250px!important;width:250px!important;height:250px!important;min-width:250px!important;min-height:250px!important;line-height:250px!important}i.s252,md-icon[md-font-icon].s252{font-size:252px!important;width:252px!important;height:252px!important;min-width:252px!important;min-height:252px!important;line-height:252px!important}i.s254,md-icon[md-font-icon].s254{font-size:254px!important;width:254px!important;height:254px!important;min-width:254px!important;min-height:254px!important;line-height:254px!important}i.s256,md-icon[md-font-icon].s256{font-size:256px!important;width:256px!important;height:256px!important;min-width:256px!important;min-height:256px!important;line-height:256px!important}@font-face{font-family:icomoon;src:url(../assets/icons/fonts/icomoon.eot?5km1tg);src:url(../assets/icons/fonts/icomoon.eot?#iefix5km1tg) format("embedded-opentype"),url(../assets/icons/fonts/icomoon.ttf?5km1tg) format("truetype"),url(../assets/icons/fonts/icomoon.woff?5km1tg) format("woff"),url(../assets/icons/fonts/icomoon.svg?5km1tg#icomoon) format("svg");font-weight:400;font-style:normal}[class*=' icon-'],[class^=icon-]{font-family:icomoon;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-account-alert:before{content:'\e600'}.icon-account-box-outline:before{content:'\e601'}.icon-account-box:before{content:'\e602'}.icon-account-check:before{content:'\e603'}.icon-account-circle:before{content:'\e604'}.icon-account-key:before{content:'\e605'}.icon-account-location:before{content:'\e606'}.icon-account-minus:before{content:'\e607'}.icon-account-multiple-outline:before{content:'\e608'}.icon-account-multiple-plus:before{content:'\e609'}.icon-account-multiple:before{content:'\e60a'}.icon-account-network:before{content:'\e60b'}.icon-account-outline:before{content:'\e60c'}.icon-account-plus:before{content:'\e60d'}.icon-account-remove:before{content:'\e60e'}.icon-account-search:before{content:'\e60f'}.icon-account-switch:before{content:'\e610'}.icon-account:before{content:'\e611'}.icon-airballoon:before{content:'\e612'}.icon-airplane-off:before{content:'\e613'}.icon-airplane:before{content:'\e614'}.icon-alarm-check:before{content:'\e615'}.icon-alarm-multiple:before{content:'\e616'}.icon-alarm-off:before{content:'\e617'}.icon-alarm-plus:before{content:'\e618'}.icon-alarm:before{content:'\e619'}.icon-album:before{content:'\e61a'}.icon-alert-box:before{content:'\e61b'}.icon-alert-circle:before{content:'\e61c'}.icon-alert-octagon:before{content:'\e61d'}.icon-alert:before{content:'\e61e'}.icon-alpha:before{content:'\e61f'}.icon-alphabetical:before{content:'\e620'}.icon-amazon-clouddrive:before{content:'\e621'}.icon-amazon:before{content:'\e622'}.icon-ambulance:before{content:'\e623'}.icon-android-debug-bridge:before{content:'\e624'}.icon-android-studio:before{content:'\e625'}.icon-android:before{content:'\e626'}.icon-apple-finder:before{content:'\e627'}.icon-apple-ios:before{content:'\e628'}.icon-apple-mobileme:before{content:'\e629'}.icon-apple-safari:before{content:'\e62a'}.icon-apple:before{content:'\e62b'}.icon-appnet:before{content:'\e62c'}.icon-apps:before{content:'\e62d'}.icon-archive:before{content:'\e62e'}.icon-arrange-bring-forward:before{content:'\e62f'}.icon-arrange-bring-to-front:before{content:'\e630'}.icon-arrange-send-backward:before{content:'\e631'}.icon-arrange-send-to-back:before{content:'\e632'}.icon-arrow-all:before{content:'\e633'}.icon-arrow-bottom-left:before{content:'\e634'}.icon-arrow-bottom-right:before{content:'\e635'}.icon-arrow-collapse:before{content:'\e636'}.icon-arrow-down-bold-circle-outline:before{content:'\e637'}.icon-arrow-down-bold-circle:before{content:'\e638'}.icon-arrow-down-bold-hexagon-outline:before{content:'\e639'}.icon-arrow-down-bold:before{content:'\e63a'}.icon-arrow-down:before{content:'\e63b'}.icon-arrow-expand:before{content:'\e63c'}.icon-arrow-left-bold-circle-outline:before{content:'\e63d'}.icon-arrow-left-bold-circle:before{content:'\e63e'}.icon-arrow-left-bold-hexagon-outline:before{content:'\e63f'}.icon-arrow-left-bold:before{content:'\e640'}.icon-arrow-left:before{content:'\e641'}.icon-arrow-right-bold-circle-outline:before{content:'\e642'}.icon-arrow-right-bold-circle:before{content:'\e643'}.icon-arrow-right-bold-hexagon-outline:before{content:'\e644'}.icon-arrow-right-bold:before{content:'\e645'}.icon-arrow-right:before{content:'\e646'}.icon-arrow-top-left:before{content:'\e647'}.icon-arrow-top-right:before{content:'\e648'}.icon-arrow-up-bold-circle-outline:before{content:'\e649'}.icon-arrow-up-bold-circle:before{content:'\e64a'}.icon-arrow-up-bold-hexagon-outline:before{content:'\e64b'}.icon-arrow-up-bold:before{content:'\e64c'}.icon-arrow-up:before{content:'\e64d'}.icon-at:before{content:'\e64e'}.icon-attachment:before{content:'\e64f'}.icon-audiobook:before{content:'\e650'}.icon-auto-fix:before{content:'\e651'}.icon-auto-upload:before{content:'\e652'}.icon-baby:before{content:'\e653'}.icon-backburger:before{content:'\e654'}.icon-backup-restore:before{content:'\e655'}.icon-bank:before{content:'\e656'}.icon-barcode:before{content:'\e657'}.icon-barley:before{content:'\e658'}.icon-barrel:before{content:'\e659'}.icon-basecamp:before{content:'\e65a'}.icon-basket-fill:before{content:'\e65b'}.icon-basket-unfill:before{content:'\e65c'}.icon-basket:before{content:'\e65d'}.icon-battery-10:before{content:'\e65e'}.icon-battery-20:before{content:'\e65f'}.icon-battery-30:before{content:'\e660'}.icon-battery-40:before{content:'\e661'}.icon-battery-50:before{content:'\e662'}.icon-battery-60:before{content:'\e663'}.icon-battery-70:before{content:'\e664'}.icon-battery-80:before{content:'\e665'}.icon-battery-90:before{content:'\e666'}.icon-battery-alert:before{content:'\e667'}.icon-battery-charging-20:before{content:'\e668'}.icon-battery-charging-30:before{content:'\e669'}.icon-battery-charging-40:before{content:'\e66a'}.icon-battery-charging-60:before{content:'\e66b'}.icon-battery-charging-80:before{content:'\e66c'}.icon-battery-charging-90:before{content:'\e66d'}.icon-battery-charging-100:before{content:'\e66e'}.icon-battery-minus:before{content:'\e66f'}.icon-battery-negative:before{content:'\e670'}.icon-battery-outline:before{content:'\e671'}.icon-battery-plus:before{content:'\e672'}.icon-battery-positive:before{content:'\e673'}.icon-battery-standard:before{content:'\e674'}.icon-battery-unknown:before{content:'\e675'}.icon-battery:before{content:'\e676'}.icon-beach:before{content:'\e677'}.icon-beaker-empty-outline:before{content:'\e678'}.icon-beaker-empty:before{content:'\e679'}.icon-beaker-outline:before{content:'\e67a'}.icon-beaker:before{content:'\e67b'}.icon-beats:before{content:'\e67c'}.icon-beer:before{content:'\e67d'}.icon-behance:before{content:'\e67e'}.icon-bell-off:before{content:'\e67f'}.icon-bell-outline:before{content:'\e680'}.icon-bell-ring-outline:before{content:'\e681'}.icon-bell-ring:before{content:'\e682'}.icon-bell-sleep:before{content:'\e683'}.icon-bell:before{content:'\e684'}.icon-beta:before{content:'\e685'}.icon-bike:before{content:'\e686'}.icon-bing:before{content:'\e687'}.icon-binoculars:before{content:'\e688'}.icon-bio:before{content:'\e689'}.icon-bitbucket:before{content:'\e68a'}.icon-black-mesa:before{content:'\e68b'}.icon-blackberry:before{content:'\e68c'}.icon-blinds:before{content:'\e68d'}.icon-block-helper:before{content:'\e68e'}.icon-blogger:before{content:'\e68f'}.icon-bluetooth-audio:before{content:'\e690'}.icon-bluetooth-connect:before{content:'\e691'}.icon-bluetooth-settings:before{content:'\e692'}.icon-bluetooth-transfer:before{content:'\e693'}.icon-bluetooth:before{content:'\e694'}.icon-blur-linear:before{content:'\e695'}.icon-blur-off:before{content:'\e696'}.icon-blur-radial:before{content:'\e697'}.icon-blur:before{content:'\e698'}.icon-bone:before{content:'\e699'}.icon-book-multiple-variant:before{content:'\e69a'}.icon-book-multiple:before{content:'\e69b'}.icon-book-open:before{content:'\e69c'}.icon-book-variant:before{content:'\e69d'}.icon-book:before{content:'\e69e'}.icon-bookmark-check:before{content:'\e69f'}.icon-bookmark-music:before{content:'\e6a0'}.icon-bookmark-outline-plus:before{content:'\e6a1'}.icon-bookmark-outline:before{content:'\e6a2'}.icon-bookmark-plus:before{content:'\e6a3'}.icon-bookmark-remove:before{content:'\e6a4'}.icon-bookmark:before{content:'\e6a5'}.icon-border-all:before{content:'\e6a6'}.icon-border-bottom:before{content:'\e6a7'}.icon-border-color:before{content:'\e6a8'}.icon-border-horizontal:before{content:'\e6a9'}.icon-border-inside:before{content:'\e6aa'}.icon-border-left:before{content:'\e6ab'}.icon-border-none:before{content:'\e6ac'}.icon-border-outside:before{content:'\e6ad'}.icon-border-right:before{content:'\e6ae'}.icon-border-top:before{content:'\e6af'}.icon-border-vertical:before{content:'\e6b0'}.icon-bowling:before{content:'\e6b1'}.icon-box-download:before{content:'\e6b2'}.icon-box-upload:before{content:'\e6b3'}.icon-box:before{content:'\e6b4'}.icon-briefcase-checked:before{content:'\e6b5'}.icon-briefcase-download:before{content:'\e6b6'}.icon-briefcase-upload:before{content:'\e6b7'}.icon-briefcase:before{content:'\e6b8'}.icon-brightness-1:before{content:'\e6b9'}.icon-brightness-2:before{content:'\e6ba'}.icon-brightness-3:before{content:'\e6bb'}.icon-brightness-4:before{content:'\e6bc'}.icon-brightness-5:before{content:'\e6bd'}.icon-brightness-6:before{content:'\e6be'}.icon-brightness-7:before{content:'\e6bf'}.icon-brightness-auto:before{content:'\e6c0'}.icon-brightness:before{content:'\e6c1'}.icon-broom:before{content:'\e6c2'}.icon-brush:before{content:'\e6c3'}.icon-bug:before{content:'\e6c4'}.icon-bulletin-board:before{content:'\e6c5'}.icon-bullhorn:before{content:'\e6c6'}.icon-bus:before{content:'\e6c7'}.icon-cake-variant:before{content:'\e6c8'}.icon-cake:before{content:'\e6c9'}.icon-calculator:before{content:'\e6ca'}.icon-calendar-blank:before{content:'\e6cb'}.icon-calendar-check-multiple:before{content:'\e6cc'}.icon-calendar-check:before{content:'\e6cd'}.icon-calendar-clock:before{content:'\e6ce'}.icon-calendar-multiple:before{content:'\e6cf'}.icon-calendar-plus:before{content:'\e6d0'}.icon-calendar-remove:before{content:'\e6d1'}.icon-calendar-select:before{content:'\e6d2'}.icon-calendar-text:before{content:'\e6d3'}.icon-calendar-today:before{content:'\e6d4'}.icon-calendar:before{content:'\e6d5'}.icon-camcorder-box-off:before{content:'\e6d6'}.icon-camcorder-box:before{content:'\e6d7'}.icon-camcorder-off:before{content:'\e6d8'}.icon-camcorder:before{content:'\e6d9'}.icon-camera-front-variant:before{content:'\e6da'}.icon-camera-front:before{content:'\e6db'}.icon-camera-iris:before{content:'\e6dc'}.icon-camera-party-mode:before{content:'\e6dd'}.icon-camera-rear-variant:before{content:'\e6de'}.icon-camera-rear:before{content:'\e6df'}.icon-camera-switch:before{content:'\e6e0'}.icon-camera-timer:before{content:'\e6e1'}.icon-camera:before{content:'\e6e2'}.icon-cancel:before{content:'\e6e3'}.icon-candycane:before{content:'\e6e4'}.icon-car-wash:before{content:'\e6e5'}.icon-car:before{content:'\e6e6'}.icon-carrot:before{content:'\e6e7'}.icon-cart-outline:before{content:'\e6e8'}.icon-cart:before{content:'\e6e9'}.icon-cash-100:before{content:'\e6ea'}.icon-cash-multiple:before{content:'\e6eb'}.icon-cash-usd:before{content:'\e6ec'}.icon-cash:before{content:'\e6ed'}.icon-cast-connected:before{content:'\e6ee'}.icon-cast:before{content:'\e6ef'}.icon-castle:before{content:'\e6f0'}.icon-cat:before{content:'\e6f1'}.icon-cellphone-android:before{content:'\e6f2'}.icon-cellphone-dock:before{content:'\e6f3'}.icon-cellphone-iphone:before{content:'\e6f4'}.icon-cellphone-link-off:before{content:'\e6f5'}.icon-cellphone-link:before{content:'\e6f6'}.icon-cellphone-settings:before{content:'\e6f7'}.icon-cellphone:before{content:'\e6f8'}.icon-chair-school:before{content:'\e6f9'}.icon-chart-arc:before{content:'\e6fa'}.icon-chart-areaspline:before{content:'\e6fb'}.icon-chart-bar:before{content:'\e6fc'}.icon-chart-histogram:before{content:'\e6fd'}.icon-chart-line:before{content:'\e6fe'}.icon-chart-pie:before{content:'\e6ff'}.icon-check-all:before{content:'\e700'}.icon-check-bookmark:before{content:'\e701'}.icon-check-circle:before{content:'\e702'}.icon-check:before{content:'\e703'}.icon-checkbox-blank-circle-outline:before{content:'\e704'}.icon-checkbox-blank-circle:before{content:'\e705'}.icon-checkbox-blank-outline:before{content:'\e706'}.icon-checkbox-blank:before{content:'\e707'}.icon-checkbox-marked-circle-outline:before{content:'\e708'}.icon-checkbox-marked-circle:before{content:'\e709'}.icon-checkbox-marked-outline:before{content:'\e70a'}.icon-checkbox-marked:before{content:'\e70b'}.icon-checkbox-multiple-blank-outline:before{content:'\e70c'}.icon-checkbox-multiple-blank:before{content:'\e70d'}.icon-checkbox-multiple-marked-outline:before{content:'\e70e'}.icon-checkbox-multiple-marked:before{content:'\e70f'}.icon-checkerboard:before{content:'\e710'}.icon-chevron-double-down:before{content:'\e711'}.icon-chevron-double-left:before{content:'\e712'}.icon-chevron-double-right:before{content:'\e713'}.icon-chevron-double-up:before{content:'\e714'}.icon-chevron-down:before{content:'\e715'}.icon-chevron-left:before{content:'\e716'}.icon-chevron-right:before{content:'\e717'}.icon-chevron-up:before{content:'\e718'}.icon-church:before{content:'\e719'}.icon-cisco-webex:before{content:'\e71a'}.icon-city:before{content:'\e71b'}.icon-clapperboard:before{content:'\e71c'}.icon-clipboard-account:before{content:'\e71d'}.icon-clipboard-alert:before{content:'\e71e'}.icon-clipboard-arrow-down:before{content:'\e71f'}.icon-clipboard-arrow-left:before{content:'\e720'}.icon-clipboard-check:before{content:'\e721'}.icon-clipboard-outline:before{content:'\e722'}.icon-clipboard-text:before{content:'\e723'}.icon-clipboard:before{content:'\e724'}.icon-clippy:before{content:'\e725'}.icon-clock-fast:before{content:'\e726'}.icon-clock:before{content:'\e727'}.icon-close-circle-outline:before{content:'\e728'}.icon-close-circle:before{content:'\e729'}.icon-close-network:before{content:'\e72a'}.icon-close:before{content:'\e72b'}.icon-closed-caption:before{content:'\e72c'}.icon-cloud-check:before{content:'\e72d'}.icon-cloud-circle:before{content:'\e72e'}.icon-cloud-download:before{content:'\e72f'}.icon-cloud-outline-off:before{content:'\e730'}.icon-cloud-outline:before{content:'\e731'}.icon-cloud-upload:before{content:'\e732'}.icon-cloud:before{content:'\e733'}.icon-code-array:before{content:'\e734'}.icon-code-braces:before{content:'\e735'}.icon-code-equal:before{content:'\e736'}.icon-code-greater-than-or-equal:before{content:'\e737'}.icon-code-greater-than:before{content:'\e738'}.icon-code-less-than-or-equal:before{content:'\e739'}.icon-code-less-than:before{content:'\e73a'}.icon-code-not-equal-variant:before{content:'\e73b'}.icon-code-not-equal:before{content:'\e73c'}.icon-code-string:before{content:'\e73d'}.icon-code-tags:before{content:'\e73e'}.icon-codepen:before{content:'\e73f'}.icon-coffee-to-go:before{content:'\e740'}.icon-coffee:before{content:'\e741'}.icon-cog-box:before{content:'\e742'}.icon-cog:before{content:'\e743'}.icon-coin:before{content:'\e744'}.icon-color-helper:before{content:'\e745'}.icon-comment-account-outline:before{content:'\e746'}.icon-comment-account:before{content:'\e747'}.icon-comment-alert-outline:before{content:'\e748'}.icon-comment-alert:before{content:'\e749'}.icon-comment-check-outline:before{content:'\e74a'}.icon-comment-check:before{content:'\e74b'}.icon-comment-multipe-outline:before{content:'\e74c'}.icon-comment-outline:before{content:'\e74d'}.icon-comment-plus-outline:before{content:'\e74e'}.icon-comment-processing-outline:before{content:'\e74f'}.icon-comment-processing:before{content:'\e750'}.icon-comment-remove-outline:before{content:'\e751'}.icon-comment-text-outline:before{content:'\e752'}.icon-comment-text:before{content:'\e753'}.icon-comment:before{content:'\e754'}.icon-compare:before{content:'\e755'}.icon-compass-outline:before{content:'\e756'}.icon-compass:before{content:'\e757'}.icon-console:before{content:'\e758'}.icon-content-copy:before{content:'\e759'}.icon-content-cut:before{content:'\e75a'}.icon-content-duplicate:before{content:'\e75b'}.icon-content-paste:before{content:'\e75c'}.icon-content-save-all:before{content:'\e75d'}.icon-content-save:before{content:'\e75e'}.icon-contrast-box:before{content:'\e75f'}.icon-contrast-circle:before{content:'\e760'}.icon-contrast:before{content:'\e761'}.icon-controller-xbox:before{content:'\e762'}.icon-cow:before{content:'\e763'}.icon-credit-card-multiple:before{content:'\e764'}.icon-credit-card:before{content:'\e765'}.icon-crop-free:before{content:'\e766'}.icon-crop-landscape:before{content:'\e767'}.icon-crop-portrait:before{content:'\e768'}.icon-crop-square:before{content:'\e769'}.icon-crop:before{content:'\e76a'}.icon-crosshairs-gps:before{content:'\e76b'}.icon-crosshairs:before{content:'\e76c'}.icon-crown:before{content:'\e76d'}.icon-cube-outline:before{content:'\e76e'}.icon-cube-unfolded:before{content:'\e76f'}.icon-cube:before{content:'\e770'}.icon-cup-water:before{content:'\e771'}.icon-cup:before{content:'\e772'}.icon-currency-btc:before{content:'\e773'}.icon-currency-eur:before{content:'\e774'}.icon-currency-gbp:before{content:'\e775'}.icon-currency-inr:before{content:'\e776'}.icon-currency-rub:before{content:'\e777'}.icon-currency-try:before{content:'\e778'}.icon-currency-usd:before{content:'\e779'}.icon-cursor-default-outline:before{content:'\e77a'}.icon-cursor-default:before{content:'\e77b'}.icon-cursor-move:before{content:'\e77c'}.icon-cursor-pointer:before{content:'\e77d'}.icon-data:before{content:'\e77e'}.icon-debug-step-into:before{content:'\e77f'}.icon-debug-step-out:before{content:'\e780'}.icon-debug-step-over:before{content:'\e781'}.icon-decimal-decrease:before{content:'\e782'}.icon-decimal-increase:before{content:'\e783'}.icon-delete-variant:before{content:'\e784'}.icon-delete:before{content:'\e785'}.icon-deskphone:before{content:'\e786'}.icon-desktop-mac:before{content:'\e787'}.icon-desktop-tower:before{content:'\e788'}.icon-details:before{content:'\e789'}.icon-deviantart:before{content:'\e78a'}.icon-diamond:before{content:'\e78b'}.icon-dice-1:before{content:'\e78c'}.icon-dice-2:before{content:'\e78d'}.icon-dice-3:before{content:'\e78e'}.icon-dice-4:before{content:'\e78f'}.icon-dice-5:before{content:'\e790'}.icon-dice-6:before{content:'\e791'}.icon-dice:before{content:'\e792'}.icon-directions:before{content:'\e793'}.icon-disk-alert:before{content:'\e794'}.icon-disqus-outline:before{content:'\e795'}.icon-disqus:before{content:'\e796'}.icon-division-box:before{content:'\e797'}.icon-division:before{content:'\e798'}.icon-dns:before{content:'\e799'}.icon-document:before{content:'\e79a'}.icon-domain:before{content:'\e79b'}.icon-dots-horizontal:before{content:'\e79c'}.icon-dots-vertical:before{content:'\e79d'}.icon-download:before{content:'\e79e'}.icon-drag-horizontal:before{content:'\e79f'}.icon-drag-vertical:before{content:'\e7a0'}.icon-drag:before{content:'\e7a1'}.icon-drawing-box:before{content:'\e7a2'}.icon-drawing:before{content:'\e7a3'}.icon-dribbble-box:before{content:'\e7a4'}.icon-dribbble:before{content:'\e7a5'}.icon-drone:before{content:'\e7a6'}.icon-dropbox:before{content:'\e7a7'}.icon-drupal:before{content:'\e7a8'}.icon-duck:before{content:'\e7a9'}.icon-dumbbell:before{content:'\e7aa'}.icon-earth-off:before{content:'\e7ab'}.icon-earth:before{content:'\e7ac'}.icon-ebay:before{content:'\e7ad'}.icon-edge:before{content:'\e7ae'}.icon-eject:before{content:'\e7af'}.icon-elevation-decline:before{content:'\e7b0'}.icon-elevation-rise:before{content:'\e7b1'}.icon-elevator:before{content:'\e7b2'}.icon-email-open:before{content:'\e7b3'}.icon-email-secure:before{content:'\e7b4'}.icon-email:before{content:'\e7b5'}.icon-emoticon-cool:before{content:'\e7b6'}.icon-emoticon-devil:before{content:'\e7b7'}.icon-emoticon-happy:before{content:'\e7b8'}.icon-emoticon-neutral:before{content:'\e7b9'}.icon-emoticon-poop:before{content:'\e7ba'}.icon-emoticon-sad:before{content:'\e7bb'}.icon-emoticon-tongue:before{content:'\e7bc'}.icon-emoticon:before{content:'\e7bd'}.icon-engine-outline:before{content:'\e7be'}.icon-engine:before{content:'\e7bf'}.icon-equal-box:before{content:'\e7c0'}.icon-equal:before{content:'\e7c1'}.icon-eraser:before{content:'\e7c2'}.icon-escalator:before{content:'\e7c3'}.icon-etsy:before{content:'\e7c4'}.icon-evernote:before{content:'\e7c5'}.icon-exclamation:before{content:'\e7c6'}.icon-exit-to-app:before{content:'\e7c7'}.icon-export:before{content:'\e7c8'}.icon-eye-off:before{content:'\e7c9'}.icon-eye:before{content:'\e7ca'}.icon-eyedropper-variant:before{content:'\e7cb'}.icon-eyedropper:before{content:'\e7cc'}.icon-facebook-box:before{content:'\e7cd'}.icon-facebook:before{content:'\e7ce'}.icon-factory:before{content:'\e7cf'}.icon-fan:before{content:'\e7d0'}.icon-fast-forward:before{content:'\e7d1'}.icon-ferry:before{content:'\e7d2'}.icon-file-cloud:before{content:'\e7d3'}.icon-file-delimited:before{content:'\e7d4'}.icon-file-document-box:before{content:'\e7d5'}.icon-file-document:before{content:'\e7d6'}.icon-file-excel-box:before{content:'\e7d7'}.icon-file-excel:before{content:'\e7d8'}.icon-file-find:before{content:'\e7d9'}.icon-file-hidden:before{content:'\e7da'}.icon-file-image-box:before{content:'\e7db'}.icon-file-image:before{content:'\e7dc'}.icon-file-multiple:before{content:'\e7dd'}.icon-file-music:before{content:'\e7de'}.icon-file-outline:before{content:'\e7df'}.icon-file-pdf-box:before{content:'\e7e0'}.icon-file-pdf:before{content:'\e7e1'}.icon-file-powerpoint-box:before{content:'\e7e2'}.icon-file-powerpoint:before{content:'\e7e3'}.icon-file-presentation-box:before{content:'\e7e4'}.icon-file-video:before{content:'\e7e5'}.icon-file-word-box:before{content:'\e7e6'}.icon-file-word:before{content:'\e7e7'}.icon-file-xml:before{content:'\e7e8'}.icon-file:before{content:'\e7e9'}.icon-fill:before{content:'\e7ea'}.icon-film:before{content:'\e7eb'}.icon-filmstrip-off:before{content:'\e7ec'}.icon-filmstrip:before{content:'\e7ed'}.icon-filter-outline:before{content:'\e7ee'}.icon-filter-remove-outline:before{content:'\e7ef'}.icon-filter-remove:before{content:'\e7f0'}.icon-filter-variant:before{content:'\e7f1'}.icon-filter:before{content:'\e7f2'}.icon-fire:before{content:'\e7f3'}.icon-fish:before{content:'\e7f4'}.icon-flag-checkered-variant:before{content:'\e7f5'}.icon-flag-checkered:before{content:'\e7f6'}.icon-flag-outline-variant:before{content:'\e7f7'}.icon-flag-outline:before{content:'\e7f8'}.icon-flag-triangle:before{content:'\e7f9'}.icon-flag-variant:before{content:'\e7fa'}.icon-flag:before{content:'\e7fb'}.icon-flash-auto:before{content:'\e7fc'}.icon-flash-off:before{content:'\e7fd'}.icon-flash:before{content:'\e7fe'}.icon-flashlight-off:before{content:'\e7ff'}.icon-flashlight:before{content:'\e800'}.icon-flattr:before{content:'\e801'}.icon-flickr-after:before{content:'\e802'}.icon-flickr-before:before{content:'\e803'}.icon-flip-to-back:before{content:'\e804'}.icon-flip-to-front:before{content:'\e805'}.icon-floppy:before{content:'\e806'}.icon-flower:before{content:'\e807'}.icon-folder-account:before{content:'\e808'}.icon-folder-download:before{content:'\e809'}.icon-folder-google-drive:before{content:'\e80a'}.icon-folder-image:before{content:'\e80b'}.icon-folder-lock-open:before{content:'\e80c'}.icon-folder-lock:before{content:'\e80d'}.icon-folder-move:before{content:'\e80e'}.icon-folder-multiple-image:before{content:'\e80f'}.icon-folder-multiple-outline:before{content:'\e810'}.icon-folder-multiple:before{content:'\e811'}.icon-folder-outline-lock:before{content:'\e812'}.icon-folder-outline:before{content:'\e813'}.icon-folder-plus:before{content:'\e814'}.icon-folder-remove:before{content:'\e815'}.icon-folder-upload:before{content:'\e816'}.icon-folder:before{content:'\e817'}.icon-food-apple:before{content:'\e818'}.icon-food-variant:before{content:'\e819'}.icon-food:before{content:'\e81a'}.icon-football-helmet:before{content:'\e81b'}.icon-football:before{content:'\e81c'}.icon-format-align-center:before{content:'\e81d'}.icon-format-align-justify:before{content:'\e81e'}.icon-format-align-left:before{content:'\e81f'}.icon-format-align-right:before{content:'\e820'}.icon-format-bold:before{content:'\e821'}.icon-format-clear:before{content:'\e822'}.icon-format-color-fill:before{content:'\e823'}.icon-format-color:before{content:'\e824'}.icon-format-float-center:before{content:'\e825'}.icon-format-float-left:before{content:'\e826'}.icon-format-float-none:before{content:'\e827'}.icon-format-float-right:before{content:'\e828'}.icon-format-header-1:before{content:'\e829'}.icon-format-header-2:before{content:'\e82a'}.icon-format-header-3:before{content:'\e82b'}.icon-format-header-4:before{content:'\e82c'}.icon-format-header-5:before{content:'\e82d'}.icon-format-header-6:before{content:'\e82e'}.icon-format-header-decrease:before{content:'\e82f'}.icon-format-header-down:before{content:'\e830'}.icon-format-header-equal:before{content:'\e831'}.icon-format-header-increase:before{content:'\e832'}.icon-format-header-pound:before{content:'\e833'}.icon-format-header-up:before{content:'\e834'}.icon-format-indent-decrease:before{content:'\e835'}.icon-format-indent-increase:before{content:'\e836'}.icon-format-italic:before{content:'\e837'}.icon-format-line-spacing:before{content:'\e838'}.icon-format-list-bulleted:before{content:'\e839'}.icon-format-list-numbers:before{content:'\e83a'}.icon-format-object-inline:before{content:'\e83b'}.icon-format-object-square:before{content:'\e83c'}.icon-format-object-tight:before{content:'\e83d'}.icon-format-object-top-bottom:before{content:'\e83e'}.icon-format-paint:before{content:'\e83f'}.icon-format-paragraph:before{content:'\e840'}.icon-format-quote:before{content:'\e841'}.icon-format-size:before{content:'\e842'}.icon-format-strikethrough:before{content:'\e843'}.icon-format-subscript:before{content:'\e844'}.icon-format-superscript:before{content:'\e845'}.icon-format-text:before{content:'\e846'}.icon-format-textdirection-l-to-r:before{content:'\e847'}.icon-format-textdirection-r-to-l:before{content:'\e848'}.icon-format-underline:before{content:'\e849'}.icon-forum:before{content:'\e84a'}.icon-forward:before{content:'\e84b'}.icon-foursquare:before{content:'\e84c'}.icon-fridge:before{content:'\e84d'}.icon-fullscreen-exit:before{content:'\e84e'}.icon-fullscreen:before{content:'\e84f'}.icon-function:before{content:'\e850'}.icon-gamepad-variant:before{content:'\e851'}.icon-gamepad:before{content:'\e852'}.icon-gas-station:before{content:'\e853'}.icon-gavel:before{content:'\e854'}.icon-gender-female:before{content:'\e855'}.icon-gender-male-female:before{content:'\e856'}.icon-gender-male:before{content:'\e857'}.icon-gender-transgender:before{content:'\e858'}.icon-gift:before{content:'\e859'}.icon-git:before{content:'\e85a'}.icon-github-box:before{content:'\e85b'}.icon-github:before{content:'\e85c'}.icon-glass-flute:before{content:'\e85d'}.icon-glass-mug:before{content:'\e85e'}.icon-glass-stange:before{content:'\e85f'}.icon-glass-tulip:before{content:'\e860'}.icon-glasses:before{content:'\e861'}.icon-gmail:before{content:'\e862'}.icon-google-chrome:before{content:'\e863'}.icon-google-circles-communities:before{content:'\e864'}.icon-google-circles-extended:before{content:'\e865'}.icon-google-circles-invite:before{content:'\e866'}.icon-google-circles:before{content:'\e867'}.icon-google-controller-off:before{content:'\e868'}.icon-google-controller:before{content:'\e869'}.icon-google-drive:before{content:'\e86a'}.icon-google-earth:before{content:'\e86b'}.icon-google-glass:before{content:'\e86c'}.icon-google-maps:before{content:'\e86d'}.icon-google-pages:before{content:'\e86e'}.icon-google-play:before{content:'\e86f'}.icon-google-plus-box:before{content:'\e870'}.icon-google-plus:before{content:'\e871'}.icon-google:before{content:'\e872'}.icon-grid-off:before{content:'\e873'}.icon-grid:before{content:'\e874'}.icon-group:before{content:'\e875'}.icon-hand-pointing-right:before{content:'\e876'}.icon-hanger:before{content:'\e877'}.icon-hangouts:before{content:'\e878'}.icon-harddisk:before{content:'\e879'}.icon-headphones-box:before{content:'\e87a'}.icon-headphones-dots:before{content:'\e87b'}.icon-headphones:before{content:'\e87c'}.icon-headset-dock:before{content:'\e87d'}.icon-headset-off:before{content:'\e87e'}.icon-headset:before{content:'\e87f'}.icon-heart-box-outline:before{content:'\e880'}.icon-heart-box:before{content:'\e881'}.icon-heart-broken:before{content:'\e882'}.icon-heart-outline:before{content:'\e883'}.icon-heart:before{content:'\e884'}.icon-help-circle:before{content:'\e885'}.icon-help:before{content:'\e886'}.icon-hexagon-outline:before{content:'\e887'}.icon-hexagon:before{content:'\e888'}.icon-history:before{content:'\e889'}.icon-hololens:before{content:'\e88a'}.icon-home-modern:before{content:'\e88b'}.icon-home-variant:before{content:'\e88c'}.icon-home:before{content:'\e88d'}.icon-hops:before{content:'\e88e'}.icon-hospital-building:before{content:'\e88f'}.icon-hospital-marker:before{content:'\e890'}.icon-hospital:before{content:'\e891'}.icon-hotel:before{content:'\e892'}.icon-houzz-box:before{content:'\e893'}.icon-human-child:before{content:'\e894'}.icon-human-male-female:before{content:'\e895'}.icon-human:before{content:'\e896'}.icon-image-album:before{content:'\e897'}.icon-image-area-close:before{content:'\e898'}.icon-image-area:before{content:'\e899'}.icon-image-broken:before{content:'\e89a'}.icon-image-filter-black-white:before{content:'\e89b'}.icon-image-filter-center-focus:before{content:'\e89c'}.icon-image-filter-drama:before{content:'\e89d'}.icon-image-filter-frames:before{content:'\e89e'}.icon-image-filter-hdr:before{content:'\e89f'}.icon-image-filter-none:before{content:'\e8a0'}.icon-image-filter-tilt-shift:before{content:'\e8a1'}.icon-image-filter-vintage:before{content:'\e8a2'}.icon-image-filter:before{content:'\e8a3'}.icon-image:before{content:'\e8a4'}.icon-import:before{content:'\e8a5'}.icon-inbox:before{content:'\e8a6'}.icon-indent:before{content:'\e8a7'}.icon-information-outline:before{content:'\e8a8'}.icon-information:before{content:'\e8a9'}.icon-instagram:before{content:'\e8aa'}.icon-instapaper:before{content:'\e8ab'}.icon-internet-explorer:before{content:'\e8ac'}.icon-invert-colors:before{content:'\e8ad'}.icon-jira:before{content:'\e8ae'}.icon-jsfiddle:before{content:'\e8af'}.icon-keg:before{content:'\e8b0'}.icon-key-change:before{content:'\e8b1'}.icon-key-minus:before{content:'\e8b2'}.icon-key-plus:before{content:'\e8b3'}.icon-key-remove:before{content:'\e8b4'}.icon-key-variant:before{content:'\e8b5'}.icon-key:before{content:'\e8b6'}.icon-keyboard-backspace:before{content:'\e8b7'}.icon-keyboard-caps:before{content:'\e8b8'}.icon-keyboard-close:before{content:'\e8b9'}.icon-keyboard-off:before{content:'\e8ba'}.icon-keyboard-return:before{content:'\e8bb'}.icon-keyboard-tab:before{content:'\e8bc'}.icon-keyboard-variant:before{content:'\e8bd'}.icon-keyboard:before{content:'\e8be'}.icon-label-outline:before{content:'\e8bf'}.icon-label:before{content:'\e8c0'}.icon-language-csharp:before{content:'\e8c1'}.icon-language-css3:before{content:'\e8c2'}.icon-language-html5:before{content:'\e8c3'}.icon-language-javascript:before{content:'\e8c4'}.icon-language-python-text:before{content:'\e8c5'}.icon-language-python:before{content:'\e8c6'}.icon-laptop-chromebook:before{content:'\e8c7'}.icon-laptop-mac:before{content:'\e8c8'}.icon-laptop-windows:before{content:'\e8c9'}.icon-laptop:before{content:'\e8ca'}.icon-lastfm:before{content:'\e8cb'}.icon-launch:before{content:'\e8cc'}.icon-layers-off:before{content:'\e8cd'}.icon-layers:before{content:'\e8ce'}.icon-leaf:before{content:'\e8cf'}.icon-library-books:before{content:'\e8d0'}.icon-library-music:before{content:'\e8d1'}.icon-library-plus:before{content:'\e8d2'}.icon-library:before{content:'\e8d3'}.icon-lightbulb-outline:before{content:'\e8d4'}.icon-lightbulb:before{content:'\e8d5'}.icon-link-off:before{content:'\e8d6'}.icon-link-variant-off:before{content:'\e8d7'}.icon-link-variant:before{content:'\e8d8'}.icon-link:before{content:'\e8d9'}.icon-linkedin-box:before{content:'\e8da'}.icon-linkedin:before{content:'\e8db'}.icon-linode:before{content:'\e8dc'}.icon-linux:before{content:'\e8dd'}.icon-lock-outline:before{content:'\e8de'}.icon-lock-unlocked-outline:before{content:'\e8df'}.icon-lock-unlocked:before{content:'\e8e0'}.icon-lock:before{content:'\e8e1'}.icon-login:before{content:'\e8e2'}.icon-logout:before{content:'\e8e3'}.icon-looks:before{content:'\e8e4'}.icon-loupe:before{content:'\e8e5'}.icon-lumx:before{content:'\e8e6'}.icon-magnet-on:before{content:'\e8e7'}.icon-magnet:before{content:'\e8e8'}.icon-magnify-minus:before{content:'\e8e9'}.icon-magnify-plus:before{content:'\e8ea'}.icon-magnify:before{content:'\e8eb'}.icon-mail-ru:before{content:'\e8ec'}.icon-map-marker-circle:before{content:'\e8ed'}.icon-map-marker-multiple:before{content:'\e8ee'}.icon-map-marker-off:before{content:'\e8ef'}.icon-map-marker-radius:before{content:'\e8f0'}.icon-map-marker:before{content:'\e8f1'}.icon-map:before{content:'\e8f2'}.icon-margin:before{content:'\e8f3'}.icon-markdown:before{content:'\e8f4'}.icon-marker-check:before{content:'\e8f5'}.icon-martini:before{content:'\e8f6'}.icon-material-ui:before{content:'\e8f7'}.icon-maxcdn:before{content:'\e8f8'}.icon-medium:before{content:'\e8f9'}.icon-memory:before{content:'\e8fa'}.icon-menu-down:before{content:'\e8fb'}.icon-menu-left:before{content:'\e8fc'}.icon-menu-right:before{content:'\e8fd'}.icon-menu-up:before{content:'\e8fe'}.icon-menu:before{content:'\e8ff'}.icon-message-alert:before{content:'\e900'}.icon-message-draw:before{content:'\e901'}.icon-message-image:before{content:'\e902'}.icon-message-processing:before{content:'\e903'}.icon-message-reply:before{content:'\e904'}.icon-message-text-outline:before{content:'\e905'}.icon-message-text:before{content:'\e906'}.icon-message-video:before{content:'\e907'}.icon-message:before{content:'\e908'}.icon-microphone-dots:before{content:'\e909'}.icon-microphone-off:before{content:'\e90a'}.icon-microphone-outline:before{content:'\e90b'}.icon-microphone-settings:before{content:'\e90c'}.icon-microphone-variant-off:before{content:'\e90d'}.icon-microphone-variant:before{content:'\e90e'}.icon-microphone:before{content:'\e90f'}.icon-minus-box:before{content:'\e910'}.icon-minus-circle-outline:before{content:'\e911'}.icon-minus-circle:before{content:'\e912'}.icon-minus-network:before{content:'\e913'}.icon-minus:before{content:'\e914'}.icon-monitor-multiple:before{content:'\e915'}.icon-monitor:before{content:'\e916'}.icon-more:before{content:'\e917'}.icon-mouse-off:before{content:'\e918'}.icon-mouse-variant-off:before{content:'\e919'}.icon-mouse-variant:before{content:'\e91a'}.icon-mouse:before{content:'\e91b'}.icon-movie:before{content:'\e91c'}.icon-multiplication-box:before{content:'\e91d'}.icon-multiplication:before{content:'\e91e'}.icon-music-box-outline:before{content:'\e91f'}.icon-music-box:before{content:'\e920'}.icon-music-circle:before{content:'\e921'}.icon-music-note-eighth:before{content:'\e922'}.icon-music-note-half:before{content:'\e923'}.icon-music-note-off:before{content:'\e924'}.icon-music-note-quarter:before{content:'\e925'}.icon-music-note-sixteenth:before{content:'\e926'}.icon-music-note-whole:before{content:'\e927'}.icon-music-note:before{content:'\e928'}.icon-nature-people:before{content:'\e929'}.icon-nature:before{content:'\e92a'}.icon-navigation:before{content:'\e92b'}.icon-needle:before{content:'\e92c'}.icon-nest-protect:before{content:'\e92d'}.icon-nest-thermostat:before{content:'\e92e'}.icon-newspaper:before{content:'\e92f'}.icon-nfc-tap:before{content:'\e930'}.icon-nfc-variant:before{content:'\e931'}.icon-nfc:before{content:'\e932'}.icon-no:before{content:'\e933'}.icon-not-equal:before{content:'\e934'}.icon-note-outline:before{content:'\e935'}.icon-note-text:before{content:'\e936'}.icon-note:before{content:'\e937'}.icon-numeric-0-box-multiple-outline:before{content:'\e938'}.icon-numeric-0-box-outline:before{content:'\e939'}.icon-numeric-0-box:before{content:'\e93a'}.icon-numeric-1-box-multiple-outline:before{content:'\e93b'}.icon-numeric-1-box-outline:before{content:'\e93c'}.icon-numeric-1-box:before{content:'\e93d'}.icon-numeric-2-box-multiple-outline:before{content:'\e93e'}.icon-numeric-2-box-outline:before{content:'\e93f'}.icon-numeric-2-box:before{content:'\e940'}.icon-numeric-3-box-multiple-outline:before{content:'\e941'}.icon-numeric-3-box-outline:before{content:'\e942'}.icon-numeric-3-box:before{content:'\e943'}.icon-numeric-4-box-multiple-outline:before{content:'\e944'}.icon-numeric-4-box-outline:before{content:'\e945'}.icon-numeric-4-box:before{content:'\e946'}.icon-numeric-5-box-multiple-outline:before{content:'\e947'}.icon-numeric-5-box-outline:before{content:'\e948'}.icon-numeric-5-box:before{content:'\e949'}.icon-numeric-6-box-multiple-outline:before{content:'\e94a'}.icon-numeric-6-box-outline:before{content:'\e94b'}.icon-numeric-6-box:before{content:'\e94c'}.icon-numeric-7-box-multiple-outline:before{content:'\e94d'}.icon-numeric-7-box-outline:before{content:'\e94e'}.icon-numeric-7-box:before{content:'\e94f'}.icon-numeric-8-box-multiple-outline:before{content:'\e950'}.icon-numeric-8-box-outline:before{content:'\e951'}.icon-numeric-8-box:before{content:'\e952'}.icon-numeric-9-box-multiple-outline:before{content:'\e953'}.icon-numeric-9-box-outline:before{content:'\e954'}.icon-numeric-9-box:before{content:'\e955'}.icon-numeric-9-plus-box-multiple-outline:before{content:'\e956'}.icon-numeric-9-plus-box-outline:before{content:'\e957'}.icon-numeric-9-plus-box:before{content:'\e958'}.icon-numeric:before{content:'\e959'}.icon-nutriton:before{content:'\e95a'}.icon-odnoklassniki:before{content:'\e95b'}.icon-office:before{content:'\e95c'}.icon-oil:before{content:'\e95d'}.icon-omega:before{content:'\e95e'}.icon-onedrive:before{content:'\e95f'}.icon-open-in-app:before{content:'\e960'}.icon-open-in-new:before{content:'\e961'}.icon-ornament-variant:before{content:'\e962'}.icon-ornament:before{content:'\e963'}.icon-outbox:before{content:'\e964'}.icon-outdent:before{content:'\e965'}.icon-owl:before{content:'\e966'}.icon-package-down:before{content:'\e967'}.icon-package-up:before{content:'\e968'}.icon-package-variant-closed:before{content:'\e969'}.icon-package-variant:before{content:'\e96a'}.icon-package:before{content:'\e96b'}.icon-palette-advanced:before{content:'\e96c'}.icon-palette:before{content:'\e96d'}.icon-panda:before{content:'\e96e'}.icon-pandora:before{content:'\e96f'}.icon-panorama-fisheye:before{content:'\e970'}.icon-panorama-horizontal:before{content:'\e971'}.icon-panorama-vertical:before{content:'\e972'}.icon-panorama-wide-angle:before{content:'\e973'}.icon-panorama:before{content:'\e974'}.icon-paper-cut-vertical:before{content:'\e975'}.icon-paperclip:before{content:'\e976'}.icon-parking:before{content:'\e977'}.icon-pause-circle-outline:before{content:'\e978'}.icon-pause-circle:before{content:'\e979'}.icon-pause-octagon-outline:before{content:'\e97a'}.icon-pause-octagon:before{content:'\e97b'}.icon-pause:before{content:'\e97c'}.icon-paw:before{content:'\e97d'}.icon-pen:before{content:'\e97e'}.icon-pencil-box-outline:before{content:'\e97f'}.icon-pencil-box:before{content:'\e980'}.icon-pencil:before{content:'\e981'}.icon-people:before{content:'\e982'}.icon-percent:before{content:'\e983'}.icon-person-box:before{content:'\e984'}.icon-person-minus:before{content:'\e985'}.icon-person-plus:before{content:'\e986'}.icon-pharmacy:before{content:'\e987'}.icon-phone-bluetooth:before{content:'\e988'}.icon-phone-dots:before{content:'\e989'}.icon-phone-forward:before{content:'\e98a'}.icon-phone-hangup:before{content:'\e98b'}.icon-phone-in-talk:before{content:'\e98c'}.icon-phone-incoming:before{content:'\e98d'}.icon-phone-locked:before{content:'\e98e'}.icon-phone-log:before{content:'\e98f'}.icon-phone-missed:before{content:'\e990'}.icon-phone-outgoing:before{content:'\e991'}.icon-phone-paused:before{content:'\e992'}.icon-phone:before{content:'\e993'}.icon-picture:before{content:'\e994'}.icon-pig:before{content:'\e995'}.icon-pill:before{content:'\e996'}.icon-pin-off:before{content:'\e997'}.icon-pin:before{content:'\e998'}.icon-pine-tree-box:before{content:'\e999'}.icon-pine-tree:before{content:'\e99a'}.icon-pinterest-box:before{content:'\e99b'}.icon-pinterest:before{content:'\e99c'}.icon-pizza:before{content:'\e99d'}.icon-plane:before{content:'\e99e'}.icon-play-box-outline:before{content:'\e99f'}.icon-play-circle-outline:before{content:'\e9a0'}.icon-play-circle:before{content:'\e9a1'}.icon-play:before{content:'\e9a2'}.icon-playlist-minus:before{content:'\e9a3'}.icon-playlist-plus:before{content:'\e9a4'}.icon-playstation:before{content:'\e9a5'}.icon-plus-box:before{content:'\e9a6'}.icon-plus-circle-outline:before{content:'\e9a7'}.icon-plus-circle:before{content:'\e9a8'}.icon-plus-network:before{content:'\e9a9'}.icon-plus-one:before{content:'\e9aa'}.icon-plus:before{content:'\e9ab'}.icon-pocket:before{content:'\e9ac'}.icon-poll-box:before{content:'\e9ad'}.icon-poll:before{content:'\e9ae'}.icon-polymer:before{content:'\e9af'}.icon-popcorn:before{content:'\e9b0'}.icon-pound-box:before{content:'\e9b1'}.icon-pound:before{content:'\e9b2'}.icon-power-settings:before{content:'\e9b3'}.icon-power-socket:before{content:'\e9b4'}.icon-power:before{content:'\e9b5'}.icon-presentation-play:before{content:'\e9b6'}.icon-presentation:before{content:'\e9b7'}.icon-printer-3d:before{content:'\e9b8'}.icon-printer:before{content:'\e9b9'}.icon-pulse:before{content:'\e9ba'}.icon-puzzle:before{content:'\e9bb'}.icon-qrcode:before{content:'\e9bc'}.icon-quadcopter:before{content:'\e9bd'}.icon-quality-high:before{content:'\e9be'}.icon-question-mark-circle:before{content:'\e9bf'}.icon-quick-reply:before{content:'\e9c0'}.icon-quicktime:before{content:'\e9c1'}.icon-rabbit:before{content:'\e9c2'}.icon-radiator:before{content:'\e9c3'}.icon-radio-tower:before{content:'\e9c4'}.icon-radio:before{content:'\e9c5'}.icon-radioactive:before{content:'\e9c6'}.icon-radiobox-blank:before{content:'\e9c7'}.icon-radiobox-marked:before{content:'\e9c8'}.icon-raspberrypi:before{content:'\e9c9'}.icon-rdio:before{content:'\e9ca'}.icon-read:before{content:'\e9cb'}.icon-readability:before{content:'\e9cc'}.icon-receipt:before{content:'\e9cd'}.icon-recycle:before{content:'\e9ce'}.icon-reddit:before{content:'\e9cf'}.icon-redo-variant:before{content:'\e9d0'}.icon-redo:before{content:'\e9d1'}.icon-refresh:before{content:'\e9d2'}.icon-relative-scale:before{content:'\e9d3'}.icon-reload:before{content:'\e9d4'}.icon-remote:before{content:'\e9d5'}.icon-rename-box:before{content:'\e9d6'}.icon-repeat-off:before{content:'\e9d7'}.icon-repeat-once:before{content:'\e9d8'}.icon-repeat:before{content:'\e9d9'}.icon-replay:before{content:'\e9da'}.icon-reply-all:before{content:'\e9db'}.icon-reply:before{content:'\e9dc'}.icon-reproduction:before{content:'\e9dd'}.icon-resize-bottom-right:before{content:'\e9de'}.icon-responsive:before{content:'\e9df'}.icon-restore:before{content:'\e9e0'}.icon-rewind:before{content:'\e9e1'}.icon-ribbon:before{content:'\e9e2'}.icon-road:before{content:'\e9e3'}.icon-rocket:before{content:'\e9e4'}.icon-rotate-3d:before{content:'\e9e5'}.icon-rotate-left-variant:before{content:'\e9e6'}.icon-rotate-left:before{content:'\e9e7'}.icon-rotate-right-variant:before{content:'\e9e8'}.icon-rotate-right:before{content:'\e9e9'}.icon-routes:before{content:'\e9ea'}.icon-rss-box:before{content:'\e9eb'}.icon-ruler:before{content:'\e9ec'}.icon-run:before{content:'\e9ed'}.icon-sale:before{content:'\e9ee'}.icon-satellite-variant:before{content:'\e9ef'}.icon-satellite:before{content:'\e9f0'}.icon-scale-bathroom:before{content:'\e9f1'}.icon-scale:before{content:'\e9f2'}.icon-school:before{content:'\e9f3'}.icon-screen-rotation-lock:before{content:'\e9f4'}.icon-screen-rotation:before{content:'\e9f5'}.icon-script:before{content:'\e9f6'}.icon-security-network:before{content:'\e9f7'}.icon-security:before{content:'\e9f8'}.icon-select-all:before{content:'\e9f9'}.icon-select-inverse:before{content:'\e9fa'}.icon-select-off:before{content:'\e9fb'}.icon-select:before{content:'\e9fc'}.icon-send:before{content:'\e9fd'}.icon-server-minus:before{content:'\e9fe'}.icon-server-network-off:before{content:'\e9ff'}.icon-server-network:before{content:'\ea00'}.icon-server-off:before{content:'\ea01'}.icon-server-plus:before{content:'\ea02'}.icon-server-remove:before{content:'\ea03'}.icon-server-security:before{content:'\ea04'}.icon-server:before{content:'\ea05'}.icon-shape-plus:before{content:'\ea06'}.icon-share-variant:before{content:'\ea07'}.icon-share:before{content:'\ea08'}.icon-shield-outline:before{content:'\ea09'}.icon-shield:before{content:'\ea0a'}.icon-shopping-music:before{content:'\ea0b'}.icon-shopping:before{content:'\ea0c'}.icon-shuffle:before{content:'\ea0d'}.icon-sigma:before{content:'\ea0e'}.icon-sign-caution:before{content:'\ea0f'}.icon-signal:before{content:'\ea10'}.icon-silverware-fork:before{content:'\ea11'}.icon-silverware-spoon:before{content:'\ea12'}.icon-silverware-variant:before{content:'\ea13'}.icon-silverware:before{content:'\ea14'}.icon-sim-alert:before{content:'\ea15'}.icon-sim:before{content:'\ea16'}.icon-sitemap:before{content:'\ea17'}.icon-skip-next:before{content:'\ea18'}.icon-skip-previous:before{content:'\ea19'}.icon-skype-business:before{content:'\ea1a'}.icon-skype:before{content:'\ea1b'}.icon-sleep-off:before{content:'\ea1c'}.icon-sleep:before{content:'\ea1d'}.icon-smoking-off:before{content:'\ea1e'}.icon-smoking:before{content:'\ea1f'}.icon-snapchat:before{content:'\ea20'}.icon-snowman:before{content:'\ea21'}.icon-sofa:before{content:'\ea22'}.icon-sort-alphabetical:before{content:'\ea23'}.icon-sort-ascending:before{content:'\ea24'}.icon-sort-descending:before{content:'\ea25'}.icon-sort-numeric:before{content:'\ea26'}.icon-sort-variant:before{content:'\ea27'}.icon-sort:before{content:'\ea28'}.icon-soundcloud:before{content:'\ea29'}.icon-source-fork:before{content:'\ea2a'}.icon-source-pull:before{content:'\ea2b'}.icon-speaker-off:before{content:'\ea2c'}.icon-speaker:before{content:'\ea2d'}.icon-speedometer:before{content:'\ea2e'}.icon-spellcheck:before{content:'\ea2f'}.icon-spotify:before{content:'\ea30'}.icon-spotlight-beam:before{content:'\ea31'}.icon-spotlight:before{content:'\ea32'}.icon-spreadsheet:before{content:'\ea33'}.icon-square-inc-cash:before{content:'\ea34'}.icon-square-inc:before{content:'\ea35'}.icon-stackoverflow:before{content:'\ea36'}.icon-star-circle:before{content:'\ea37'}.icon-star-half:before{content:'\ea38'}.icon-star-of-david:before{content:'\ea39'}.icon-star-outline:before{content:'\ea3a'}.icon-star:before{content:'\ea3b'}.icon-steam:before{content:'\ea3c'}.icon-stethoscope:before{content:'\ea3d'}.icon-stocking:before{content:'\ea3e'}.icon-stop:before{content:'\ea3f'}.icon-store-24-hour:before{content:'\ea40'}.icon-store:before{content:'\ea41'}.icon-stove:before{content:'\ea42'}.icon-subway:before{content:'\ea43'}.icon-sunglasses:before{content:'\ea44'}.icon-swap-horizontal:before{content:'\ea45'}.icon-swap-vertical:before{content:'\ea46'}.icon-swim:before{content:'\ea47'}.icon-sword:before{content:'\ea48'}.icon-sync-alert:before{content:'\ea49'}.icon-sync-off:before{content:'\ea4a'}.icon-sync:before{content:'\ea4b'}.icon-tab-unselected:before{content:'\ea4c'}.icon-tab:before{content:'\ea4d'}.icon-table-column-plus-after:before{content:'\ea4e'}.icon-table-column-plus-before:before{content:'\ea4f'}.icon-table-column-remove:before{content:'\ea50'}.icon-table-column-width:before{content:'\ea51'}.icon-table-edit:before{content:'\ea52'}.icon-table-large:before{content:'\ea53'}.icon-table-row-height:before{content:'\ea54'}.icon-table-row-plus-after:before{content:'\ea55'}.icon-table-row-plus-before:before{content:'\ea56'}.icon-table-row-remove:before{content:'\ea57'}.icon-table:before{content:'\ea58'}.icon-tablet-android:before{content:'\ea59'}.icon-tablet-ipad:before{content:'\ea5a'}.icon-tablet:before{content:'\ea5b'}.icon-tag-faces:before{content:'\ea5c'}.icon-tag-multiple:before{content:'\ea5d'}.icon-tag-outline:before{content:'\ea5e'}.icon-tag-text-outline:before{content:'\ea5f'}.icon-tag:before{content:'\ea60'}.icon-taxi:before{content:'\ea61'}.icon-teamviewer:before{content:'\ea62'}.icon-telegram:before{content:'\ea63'}.icon-television-guide:before{content:'\ea64'}.icon-television:before{content:'\ea65'}.icon-temperature-celsius:before{content:'\ea66'}.icon-temperature-fahrenheit:before{content:'\ea67'}.icon-temperature-kelvin:before{content:'\ea68'}.icon-tennis:before{content:'\ea69'}.icon-tent:before{content:'\ea6a'}.icon-terrain:before{content:'\ea6b'}.icon-text-to-speech-off:before{content:'\ea6c'}.icon-text-to-speech:before{content:'\ea6d'}.icon-texture:before{content:'\ea6e'}.icon-theater:before{content:'\ea6f'}.icon-theme-light-dark:before{content:'\ea70'}.icon-thermometer-lines:before{content:'\ea71'}.icon-thermometer:before{content:'\ea72'}.icon-thumb-down-outline:before{content:'\ea73'}.icon-thumb-down:before{content:'\ea74'}.icon-thumb-up-outline:before{content:'\ea75'}.icon-thumb-up:before{content:'\ea76'}.icon-thumbs-up-down:before{content:'\ea77'}.icon-ticket-account:before{content:'\ea78'}.icon-ticket:before{content:'\ea79'}.icon-tie:before{content:'\ea7a'}.icon-tile-four:before{content:'\ea7b'}.icon-timelapse:before{content:'\ea7c'}.icon-timer-3:before{content:'\ea7d'}.icon-timer-10:before{content:'\ea7e'}.icon-timer-off:before{content:'\ea7f'}.icon-timer-sand:before{content:'\ea80'}.icon-timer:before{content:'\ea81'}.icon-timetable:before{content:'\ea82'}.icon-toggle-switch-off:before{content:'\ea83'}.icon-toggle-switch-on:before{content:'\ea84'}.icon-tooltip-edit:before{content:'\ea85'}.icon-tooltip-image:before{content:'\ea86'}.icon-tooltip-outline-plus:before{content:'\ea87'}.icon-tooltip-outline:before{content:'\ea88'}.icon-tooltip-text:before{content:'\ea89'}.icon-tooltip:before{content:'\ea8a'}.icon-tor:before{content:'\ea8b'}.icon-traffic-light:before{content:'\ea8c'}.icon-train:before{content:'\ea8d'}.icon-tram:before{content:'\ea8e'}.icon-transcribe-close:before{content:'\ea8f'}.icon-transcribe:before{content:'\ea90'}.icon-transfer:before{content:'\ea91'}.icon-trash:before{content:'\ea92'}.icon-tree:before{content:'\ea93'}.icon-trello:before{content:'\ea94'}.icon-trending-down:before{content:'\ea95'}.icon-trending-neutral:before{content:'\ea96'}.icon-trending-up:before{content:'\ea97'}.icon-truck:before{content:'\ea98'}.icon-tshirt-crew:before{content:'\ea99'}.icon-tshirt-v:before{content:'\ea9a'}.icon-tumblr-reblog:before{content:'\ea9b'}.icon-tumblr:before{content:'\ea9c'}.icon-twitch:before{content:'\ea9d'}.icon-twitter-box:before{content:'\ea9e'}.icon-twitter-circle:before{content:'\ea9f'}.icon-twitter-retweet:before{content:'\eaa0'}.icon-twitter:before{content:'\eaa1'}.icon-ubuntu:before{content:'\eaa2'}.icon-umbrella-outline:before{content:'\eaa3'}.icon-umbrella:before{content:'\eaa4'}.icon-undo-variant:before{content:'\eaa5'}.icon-undo:before{content:'\eaa6'}.icon-unfold-less:before{content:'\eaa7'}.icon-unfold-more:before{content:'\eaa8'}.icon-ungroup:before{content:'\eaa9'}.icon-untappd:before{content:'\eaaa'}.icon-upload:before{content:'\eaab'}.icon-usb:before{content:'\eaac'}.icon-vector-curve:before{content:'\eaad'}.icon-vector-point:before{content:'\eaae'}.icon-vector-square:before{content:'\eaaf'}.icon-verified:before{content:'\eab0'}.icon-vibration:before{content:'\eab1'}.icon-video-off:before{content:'\eab2'}.icon-video-switch:before{content:'\eab3'}.icon-video:before{content:'\eab4'}.icon-view-agenda:before{content:'\eab5'}.icon-view-array:before{content:'\eab6'}.icon-view-carousel:before{content:'\eab7'}.icon-view-column:before{content:'\eab8'}.icon-view-dashboard:before{content:'\eab9'}.icon-view-day:before{content:'\eaba'}.icon-view-headline:before{content:'\eabb'}.icon-view-list:before{content:'\eabc'}.icon-view-module:before{content:'\eabd'}.icon-view-quilt:before{content:'\eabe'}.icon-view-stream:before{content:'\eabf'}.icon-view-week:before{content:'\eac0'}.icon-vimeo:before{content:'\eac1'}.icon-vine:before{content:'\eac2'}.icon-vk-box:before{content:'\eac3'}.icon-vk-circle:before{content:'\eac4'}.icon-vk:before{content:'\eac5'}.icon-voicemail:before{content:'\eac6'}.icon-volume-high:before{content:'\eac7'}.icon-volume-low:before{content:'\eac8'}.icon-volume-medium:before{content:'\eac9'}.icon-volume-off:before{content:'\eaca'}.icon-volume:before{content:'\eacb'}.icon-vpn:before{content:'\eacc'}.icon-walk:before{content:'\eacd'}.icon-wallet-giftcard:before{content:'\eace'}.icon-wallet-membership:before{content:'\eacf'}.icon-wallet-travel:before{content:'\ead0'}.icon-wallet:before{content:'\ead1'}.icon-washing-machine:before{content:'\ead2'}.icon-watch-export:before{content:'\ead3'}.icon-watch-import:before{content:'\ead4'}.icon-watch:before{content:'\ead5'}.icon-water-off:before{content:'\ead6'}.icon-water-pump:before{content:'\ead7'}.icon-water:before{content:'\ead8'}.icon-weather-cloudy:before{content:'\ead9'}.icon-weather-fog:before{content:'\eada'}.icon-weather-hail:before{content:'\eadb'}.icon-weather-lightning:before{content:'\eadc'}.icon-weather-night:before{content:'\eadd'}.icon-weather-partlycloudy:before{content:'\eade'}.icon-weather-pouring:before{content:'\eadf'}.icon-weather-rainy:before{content:'\eae0'}.icon-weather-snowy:before{content:'\eae1'}.icon-weather-sunny:before{content:'\eae2'}.icon-weather-sunset-down:before{content:'\eae3'}.icon-weather-sunset-up:before{content:'\eae4'}.icon-weather-sunset:before{content:'\eae5'}.icon-weather-windy-variant:before{content:'\eae6'}.icon-weather-windy:before{content:'\eae7'}.icon-web:before{content:'\eae8'}.icon-webcam:before{content:'\eae9'}.icon-weight-kilogram:before{content:'\eaea'}.icon-weight:before{content:'\eaeb'}.icon-whatsapp:before{content:'\eaec'}.icon-wheelchair-accessibility:before{content:'\eaed'}.icon-white-balance-auto:before{content:'\eaee'}.icon-white-balance-incandescent:before{content:'\eaef'}.icon-white-balance-irradescent:before{content:'\eaf0'}.icon-white-balance-sunny:before{content:'\eaf1'}.icon-wifi:before{content:'\eaf2'}.icon-wii:before{content:'\eaf3'}.icon-wikipedia:before{content:'\eaf4'}.icon-window-close:before{content:'\eaf5'}.icon-window-closed:before{content:'\eaf6'}.icon-window-maximize:before{content:'\eaf7'}.icon-window-minimize:before{content:'\eaf8'}.icon-window-open:before{content:'\eaf9'}.icon-window-restore:before{content:'\eafa'}.icon-windows:before{content:'\eafb'}.icon-wordpress:before{content:'\eafc'}.icon-worker:before{content:'\eafd'}.icon-wunderlist:before{content:'\eafe'}.icon-xbox-controller-off:before{content:'\eaff'}.icon-xbox-controller:before{content:'\eb00'}.icon-xbox:before{content:'\eb01'}.icon-xda:before{content:'\eb02'}.icon-xml:before{content:'\eb03'}.icon-yeast:before{content:'\eb04'}.icon-yelp:before{content:'\eb05'}.icon-youtube-play:before{content:'\eb06'}.icon-youtube:before{content:'\eb07'}.icon-zip-box:before{content:'\eb08'}.avatar{width:40px;min-width:40px;height:40px;line-height:40px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}.avatar.square{border-radius:0}.avatar.small{width:20px;min-width:20px;height:20px;line-height:20px}.avatar.big{width:72px;min-width:72px;height:72px;line-height:72px}.avatar.huge{width:96px;min-width:96px;height:96px;line-height:96px}.form-wrapper{background:#fff;padding:16px}.form-wrapper .form-title{font-size:21px;padding:8px 0}.navigation-simple .item{position:relative;cursor:pointer;text-align:left;margin:0;padding:0 24px;text-transform:none;line-height:48px;max-height:48px;height:48px}.navigation-simple .item md-icon{margin:0 16px 0 0}.navigation-simple .item .title{font-size:13px;font-weight:500;line-height:1}.navigation-simple .item.selected{background-color:rgba(0,0,0,.06)}.navigation-simple .subheader{font-size:13px;border-top:1px solid rgba(0,0,0,.12);font-weight:500;margin-top:8px}.navigation-simple .subheader.light{border-top:1px solid rgba(255,255,255,.12)}.navigation-simple md-divider{margin:8px 0}.simple-pagination{position:relative;display:inline-flex;flex-direction:row;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);background-color:#fff;padding:0 8px}.simple-pagination .pagination-item{min-width:48px;min-height:56px;line-height:56px;border-radius:0;margin:0;font-weight:400;color:rgba(0,0,0,.54)}.simple-pagination .pagination-item:hover{color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.active{cursor:default;color:rgba(0,0,0,.87)}.simple-pagination .pagination-item.disabled{cursor:default;color:rgba(0,0,0,.26)}.price-tables .price-table{position:relative;background-color:#fff;width:280px;border-radius:2px;margin:24px 24px 0 0;overflow:hidden}.price-tables .price-table.style-1 .package-type{font-size:17px;padding:16px 24px}.price-tables .price-table.style-1 .package-type .sale{font-size:13px;font-weight:600}.price-tables .price-table.style-1 .price{padding:32px 32px 16px 32px}.price-tables .price-table.style-1 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 .price .value{font-size:72px;font-weight:300;line-height:1}.price-tables .price-table.style-1 .price .period{padding:0 0 5px 4px;font-size:17px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-1 md-divider{margin:16px 32px}.price-tables .price-table.style-1 .terms{padding:16px 32px;font-size:15px}.price-tables .price-table.style-1 .cta-button{margin:16px auto 32px auto;width:128px}.price-tables .price-table.style-2 .badge{position:absolute;top:0;left:50%;transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}.price-tables .price-table.style-2 .package-type{padding:48px 32px 24px 32px;font-size:20px;font-weight:500;text-align:center}.price-tables .price-table.style-2 .price{padding:0 32px 8px 32px}.price-tables .price-table.style-2 .price .currency{padding-right:4px;font-size:24px;font-weight:500;color:rgba(0,0,0,.54)}.price-tables .price-table.style-2 .price .value{font-size:56px;font-weight:300;line-height:1}.price-tables .price-table.style-2 .period{padding:0 32px;font-size:15px;font-weight:500;color:rgba(0,0,0,.54);text-align:center}.price-tables .price-table.style-2 .terms{padding:32px;font-size:15px}.price-tables .price-table.style-2 .terms .term{padding-bottom:8px}.price-tables .price-table.style-2 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-2 .cta-button{margin:8px auto 32px auto;width:128px}.price-tables .price-table.style-3 .package-type{padding:32px;text-align:center}.price-tables .price-table.style-3 .package-type .title{font-size:34px}.price-tables .price-table.style-3 .package-type .subtitle{font-size:17px;color:rgba(0,0,0,.54);font-weight:500}.price-tables .price-table.style-3 .price{padding:16px 32px}.price-tables .price-table.style-3 .price .currency{padding-right:4px;font-size:15px;font-weight:500}.price-tables .price-table.style-3 .price .value{font-size:34px;font-weight:300;line-height:1}.price-tables .price-table.style-3 .price .period{padding-left:4px;text-align:center}.price-tables .price-table.style-3 .terms{margin:32px;font-size:15px;color:rgba(0,0,0,.54)}.price-tables .price-table.style-3 .terms .term{padding-bottom:16px}.price-tables .price-table.style-3 .terms .term:last-child{padding-bottom:0}.price-tables .price-table.style-3 .cta-button{margin:8px 32px}.price-tables .price-table.style-3 .note{padding:8px 32px 16px 32px;text-align:center;color:rgba(0,0,0,.54)}.simple-table-container{background:#fff}.simple-table-container .table-title{font-size:20px;padding:24px}table.simple{width:100%;border:none;border-spacing:0;text-align:left}table.simple thead tr th{padding:16px 8px;font-weight:500;color:rgba(0,0,0,.54);border-bottom:1px solid rgba(0,0,0,.12);white-space:nowrap;min-width:120px}table.simple thead tr th:first-child{padding-left:24px}table.simple thead tr th:last-child{padding-right:24px}table.simple tbody tr td{padding:16px 8px;border-bottom:1px solid rgba(0,0,0,.12)}table.simple tbody tr td:first-child{padding-left:24px}table.simple tbody tr td:last-child{padding-right:24px}table.simple tbody tr:last-child td{border-bottom:none}table.simple.clickable tbody tr{cursor:pointer}table.simple.clickable tbody tr:hover{background:rgba(0,0,0,.03)}html{font-size:62.5%;font-family:Roboto,"Helvetica Neue",Arial,sans-serif;line-height:1.4;letter-spacing:-.1px}body{font-size:1.3rem}body,html{-webkit-font-smoothing:auto;-moz-osx-font-smoothing:auto}form{font-size:1.6rem}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{font-weight:400}.h1,h1{font-size:2.4rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.6rem}.h4,h4{font-size:1.4rem}.h5,h5{font-size:1.3rem}.h6,h6{font-size:1.2rem}a{text-decoration:none}a:active,a:hover{text-decoration:underline}abbr{cursor:help;border-bottom:1px dotted rgba(0,0,0,.54)}blockquote{border-left:3px solid rgba(0,0,0,.12);font-style:italic;margin:1em 0;padding-left:16px}blockquote footer{font-style:normal}blockquote footer:before{content:'\2014 \00A0'}blockquote.reverse{border-left:none;border-right:3px solid rgba(0,0,0,.12);text-align:right;padding-left:0;padding-right:16px}blockquote.reverse footer:before{content:''}blockquote.reverse footer:after{content:'\2014 \00A0'}code{font-family:Monaco,Menlo,Consolas,"Ubuntu Mono",monospace}code:not(.highlight){background:rgba(0,0,0,.065);color:#106cc8;margin:0 1px;padding:2px 3px;border-radius:2px}dl dt{font-weight:700}dl dd{margin:4px 0 16px 0}mark{background:#f7f49a}pre{line-height:1.6;margin:8px 16px;white-space:pre-wrap}small{font-size:80%}table thead tr th{text-align:left}.text-italic{font-style:italic}.text-semibold{font-weight:600}.text-bold,strong{font-weight:700}.text-strike{text-decoration:line-through}.text-super{vertical-align:super}.text-sub{vertical-align:sub}.text-capitalize{text-transform:capitalize}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-weight-100{font-weight:100}.font-weight-200{font-weight:200}.font-weight-300{font-weight:300}.font-weight-400{font-weight:400}.font-weight-500{font-weight:500}.font-weight-600{font-weight:600}.font-weight-700{font-weight:700}.font-weight-800{font-weight:800}.font-weight-900{font-weight:900}.font-size-2{font-size:2px}.font-size-4{font-size:4px}.font-size-6{font-size:6px}.font-size-8{font-size:8px}.font-size-10{font-size:10px}.font-size-12{font-size:12px}.font-size-14{font-size:14px}.font-size-16{font-size:16px}.font-size-18{font-size:18px}.font-size-20{font-size:20px}.font-size-22{font-size:22px}.font-size-24{font-size:24px}.font-size-26{font-size:26px}.font-size-28{font-size:28px}.font-size-30{font-size:30px}.font-size-32{font-size:32px}.font-size-34{font-size:34px}.font-size-36{font-size:36px}.font-size-38{font-size:38px}.font-size-40{font-size:40px}.font-size-42{font-size:42px}.font-size-44{font-size:44px}.font-size-46{font-size:46px}.font-size-48{font-size:48px}.font-size-50{font-size:50px}.font-size-52{font-size:52px}.font-size-54{font-size:54px}.font-size-56{font-size:56px}.font-size-58{font-size:58px}.font-size-60{font-size:60px}.font-size-62{font-size:62px}.font-size-64{font-size:64px}.font-size-66{font-size:66px}.font-size-68{font-size:68px}.font-size-70{font-size:70px}.font-size-72{font-size:72px}.font-size-74{font-size:74px}.font-size-76{font-size:76px}.font-size-78{font-size:78px}.font-size-80{font-size:80px}.font-size-82{font-size:82px}.font-size-84{font-size:84px}.font-size-86{font-size:86px}.font-size-88{font-size:88px}.font-size-90{font-size:90px}.font-size-92{font-size:92px}.font-size-94{font-size:94px}.font-size-96{font-size:96px}.font-size-98{font-size:98px}.font-size-100{font-size:100px}.font-size-102{font-size:102px}.font-size-104{font-size:104px}.font-size-106{font-size:106px}.font-size-108{font-size:108px}.font-size-110{font-size:110px}.font-size-112{font-size:112px}.font-size-114{font-size:114px}.font-size-116{font-size:116px}.font-size-118{font-size:118px}.font-size-120{font-size:120px}.line-height-2{line-height:2px}.line-height-4{line-height:4px}.line-height-6{line-height:6px}.line-height-8{line-height:8px}.line-height-10{line-height:10px}.line-height-12{line-height:12px}.line-height-14{line-height:14px}.line-height-16{line-height:16px}.line-height-18{line-height:18px}.line-height-20{line-height:20px}.line-height-22{line-height:22px}.line-height-24{line-height:24px}.line-height-26{line-height:26px}.line-height-28{line-height:28px}.line-height-30{line-height:30px}.line-height-32{line-height:32px}.line-height-34{line-height:34px}.line-height-36{line-height:36px}.line-height-38{line-height:38px}.line-height-40{line-height:40px}.line-height-42{line-height:42px}.line-height-44{line-height:44px}.line-height-46{line-height:46px}.line-height-48{line-height:48px}.line-height-50{line-height:50px}.line-height-52{line-height:52px}.line-height-54{line-height:54px}.line-height-56{line-height:56px}.line-height-58{line-height:58px}.line-height-60{line-height:60px}.line-height-62{line-height:62px}.line-height-64{line-height:64px}.line-height-66{line-height:66px}.line-height-68{line-height:68px}.line-height-70{line-height:70px}.line-height-72{line-height:72px}.line-height-74{line-height:74px}.line-height-76{line-height:76px}.line-height-78{line-height:78px}.line-height-80{line-height:80px}.line-height-82{line-height:82px}.line-height-84{line-height:84px}.line-height-86{line-height:86px}.line-height-88{line-height:88px}.line-height-90{line-height:90px}.line-height-92{line-height:92px}.line-height-94{line-height:94px}.line-height-96{line-height:96px}.line-height-98{line-height:98px}.line-height-100{line-height:100px}.line-height-102{line-height:102px}.line-height-104{line-height:104px}.line-height-106{line-height:106px}.line-height-108{line-height:108px}.line-height-110{line-height:110px}.line-height-112{line-height:112px}.line-height-114{line-height:114px}.line-height-116{line-height:116px}.line-height-118{line-height:118px}.line-height-120{line-height:120px}.text-boxed,.text-boxed-light{border-radius:2px;padding:4px 8px;margin:0 8px;font-size:11px;font-weight:500;color:rgba(0,0,0,.54);background-color:rgba(0,0,0,.12);white-space:nowrap}.text-boxed-light{background-color:rgba(255,255,255,.7)}.text-truncate{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-nowrap{white-space:nowrap}html,html *{scrollbar-width:thin;scrollbar-color:rgba(128,128,128,.25) rgba(128,128,128,.25)}::-webkit-scrollbar{width:8px;height:8px;background-color:transparent;box-shadow:none}::-webkit-scrollbar:hover{background-color:transparent}::-webkit-scrollbar-thumb{min-height:8px;min-width:8px;background-color:rgba(128,128,128,.25);box-shadow:none}::-webkit-scrollbar-thumb:hover{background-color:rgba(128,128,128,.125)}::-webkit-scrollbar-thumb:active{background-color:rgba(128,128,128,.15)}.angular-google-map-container{height:400px}.moment-picker .moment-picker-container{width:296px;border:none;border-radius:2px;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);margin-left:0;padding:8px}.moment-picker .moment-picker-container td,.moment-picker .moment-picker-container th{min-width:0;width:40px;height:40px;padding:8px;text-shadow:none;border-radius:35px}.moment-picker .moment-picker-container td:hover,.moment-picker .moment-picker-container th:hover{background:#f5f5f5;background-image:none}.moment-picker .moment-picker-container td.selected{background:#03a9f4;background-image:none}.moment-picker .moment-picker-container .header-view th{border-radius:0;white-space:nowrap;width:auto}.moment-picker .moment-picker-container .header-view th:first-child,.moment-picker .moment-picker-container .header-view th:last-child{width:20%}.c3{transition:all .3s ease}.c3 svg{font:12px RobotoDraft,Roboto,'Helvetica Neue',sans-serif}.c3 line,.c3 path{fill:none;stroke:#000}.c3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif;user-select:none}.c3 .c3-bars path,.c3 .c3-event-rect,.c3 .c3-legend-item-tile,.c3 .c3-xgrid-focus,.c3 .c3-ygrid{shape-rendering:crispEdges}.c3 .c3-chart-line{transition:all .3s ease}.c3 .c3-line{stroke-width:1px}.c3.stroke-3 .c3-line{stroke-width:3px}.c3.stroke-2 .c3-line{stroke-width:2px}.c3 .c3-circle{transition:all .3s ease;stroke:#fff;stroke-width:2}.c3 .c3-circle._expanded_{stroke-width:3;stroke:#fff}.c3 .c3-chart-arc path{stroke:#fff}.c3 .c3-chart-arc text{fill:#fff;font-size:13px}.c3 .c3-grid line{stroke:rgba(0,0,0,.04);stroke-width:1px;stroke-dasharray:0}.c3 .c3-grid text{fill:#aaa}.c3 .c3-axis .tick{stroke-width:0}.c3 .c3-axis text{fill:rgba(0,0,0,.33)}.c3 .c3-axis line,.c3 .c3-axis path{stroke:rgba(0,0,0,.04)}.c3 .c3-xgrid,.c3 .c3-ygrid{stroke-dasharray:0 0}.c3 .c3-text.c3-empty{fill:grey;font-size:2em}.c3 .c3-bar{stroke-width:0}.c3 .c3-bar._expanded_{fill-opacity:.75}.c3 .c3-target.c3-focused{opacity:1}.c3 .c3-target.c3-focused .c3-target.c3-focused path.c3-step,.c3 .c3-target.c3-focused path.c3-line{stroke-width:3px;transition:all .3s ease}.c3 .c3-target.c3-defocused{opacity:.3!important}.c3 .c3-region{fill:#4682b4;fill-opacity:.1}.c3 .c3-brush .extent{fill-opacity:.1}.c3 .c3-legend-item{font-size:12px}.c3 .c3-legend-item-hidden{opacity:.15}.c3 .c3-legend-background{opacity:.75;fill:#fff;stroke:#d3d3d3;stroke-width:1}.c3 .c3-tooltip-container{z-index:10}.c3 .c3-tooltip{border-collapse:collapse;border-spacing:0;background-color:#fff;empty-cells:show;box-shadow:0 2px 4px -1px rgba(0,0,0,.14),0 4px 5px 0 rgba(0,0,0,.098),0 1px 10px 0 rgba(0,0,0,.084);opacity:1;border-radius:2px;overflow:hidden;padding:4px 0}.c3 .c3-tooltip tr{border:none}.c3 .c3-tooltip th{background-color:transparent;font-size:14px;font-weight:400;padding:8px 12px;text-align:left;color:rgba(0,0,0,.54)}.c3 .c3-tooltip td{font-size:13px;padding:4px 12px!important;background-color:#fff;border-left:none;color:rgba(0,0,0,.84)}.c3 .c3-tooltip td>span{display:inline-block;width:10px;height:10px;margin-right:6px}.c3 .c3-tooltip td.value{font-size:14px!important;text-align:right;color:rgba(0,0,0,.84)}.c3 .c3-area{stroke-width:0;opacity:.2}.c3 .c3-chart-arcs-title{dominant-baseline:middle;font-size:1.3em}.c3 .c3-chart-arcs .c3-chart-arcs-background{fill:#e0e0e0;stroke:none}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-unit{fill:#000;font-size:16px}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-max{fill:#777}.c3 .c3-chart-arcs .c3-chart-arcs-gauge-min{fill:#777}.c3 .c3-chart-arc .c3-gauge-value{fill:#000}.ct-label{font-size:13px}.ct-chart-donut .ct-label,.ct-chart-pie .ct-label{font-size:13px}.bar-legend,.chart-legend,.doughnut-legend,.line-legend,.pie-legend,.polararea-legend,.radar-legend{margin-top:15px}table.dataTable{width:100%;margin:0 auto;clear:both;border-spacing:0}table.dataTable thead tr{background:#fff}table.dataTable thead th{text-align:left;vertical-align:middle;border-bottom:1px solid rgba(0,0,0,.12);padding:16px 8px}table.dataTable thead th:first-child{padding-left:24px}table.dataTable thead th:last-child{border-right:none;padding-right:24px}table.dataTable thead th:active{outline:0}table.dataTable thead th.dt-head-left{text-align:left}table.dataTable thead th.dt-head-center{text-align:center}table.dataTable thead th.dt-head-right{text-align:right}table.dataTable thead th.dt-head-justify{text-align:justify}table.dataTable thead th.dt-head-nowrap{white-space:nowrap}table.dataTable thead th .table-header .column-title{display:block;font-weight:600;white-space:nowrap}table.dataTable thead th .table-header .selectize-control{margin-top:15px}table.dataTable thead th .table-header .selectize-control.single .selectize-input{padding:7px 10px}table.dataTable thead th .table-header .selectize-control.single .selectize-input:after{right:10px;border-width:5px 4px 0 4px;border-color:rgba(0,0,0,.12) transparent transparent transparent}table.dataTable thead th .table-header .column-search-input{display:inline-block;margin-top:15px;width:100%;height:33px}table.dataTable thead td{padding:15px;vertical-align:middle}table.dataTable thead td:active{outline:0}table.dataTable thead td.dt-head-left{text-align:left}table.dataTable thead td.dt-head-center{text-align:center}table.dataTable thead td.dt-head-right{text-align:right}table.dataTable thead td.dt-head-justify{text-align:justify}table.dataTable thead td.dt-head-nowrap{white-space:nowrap}table.dataTable thead .sorting,table.dataTable thead .sorting_asc,table.dataTable thead .sorting_desc{background:0 0}table.dataTable thead .sorting .table-header .column-title,table.dataTable thead .sorting_asc .table-header .column-title,table.dataTable thead .sorting_desc .table-header .column-title{cursor:pointer}table.dataTable thead .sorting .table-header .column-title:after,table.dataTable thead .sorting_asc .table-header .column-title:after,table.dataTable thead .sorting_desc .table-header .column-title:after{position:relative;font-family:icomoon;font-weight:400;margin-left:10px;top:2px;font-size:16px;color:rgba(0,0,0,.54)}table.dataTable thead .sorting .table-header .column-title:after{content:'\eaa8'}table.dataTable thead .sorting_asc .table-header .column-title:after{content:'\e718'}table.dataTable thead .sorting_desc .table-header .column-title:after{content:'\e715'}table.dataTable tfoot th{font-weight:600;text-align:left;padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot th.dt-head-left{text-align:left}table.dataTable tfoot th.dt-head-center{text-align:center}table.dataTable tfoot th.dt-head-right{text-align:right}table.dataTable tfoot th.dt-head-justify{text-align:justify}table.dataTable tfoot th.dt-head-nowrap{white-space:nowrap}table.dataTable tfoot td{padding:10px 18px 6px 18px;border-top:1px solid #111}table.dataTable tfoot td.dt-head-left{text-align:left}table.dataTable tfoot td.dt-head-center{text-align:center}table.dataTable tfoot td.dt-head-right{text-align:right}table.dataTable tfoot td.dt-head-justify{text-align:justify}table.dataTable tfoot td.dt-head-nowrap{white-space:nowrap}table.dataTable tbody tr{background-color:#fff}table.dataTable tbody tr.selected{background-color:#b0bed9}table.dataTable tbody tr.details-open td.detail-column i{background:#fff}table.dataTable tbody tr.details-row.odd tr{background:#fff}table.dataTable tbody tr.details-row>td{padding:0}table.dataTable tbody th{padding:14px 15px;vertical-align:middle}table.dataTable tbody th.dt-body-left{text-align:left}table.dataTable tbody th.dt-body-center{text-align:center}table.dataTable tbody th.dt-body-right{text-align:right}table.dataTable tbody th.dt-body-justify{text-align:justify}table.dataTable tbody th.dt-body-nowrap{white-space:nowrap}table.dataTable tbody td{padding:16px 8px;vertical-align:middle}table.dataTable tbody td:first-child{padding-left:24px}table.dataTable tbody td:last-child{padding-right:24px}table.dataTable tbody td.dt-body-left{text-align:left}table.dataTable tbody td.dt-body-center{text-align:center}table.dataTable tbody td.dt-body-right{text-align:right}table.dataTable tbody td.dt-body-justify{text-align:justify}table.dataTable tbody td.dt-body-nowrap{white-space:nowrap}table.dataTable th.dt-left{text-align:left}table.dataTable th.dt-center{text-align:center}table.dataTable th.dt-right{text-align:right}table.dataTable th.dt-justify{text-align:justify}table.dataTable th.dt-nowrap{white-space:nowrap}table.dataTable td.dt-left{text-align:left}table.dataTable td.dt-center{text-align:center}table.dataTable td.dataTables_empty{height:51px;text-align:center}table.dataTable td.dt-right{text-align:right}table.dataTable td.dt-justify{text-align:justify}table.dataTable td.dt-nowrap{white-space:nowrap}table.dataTable.row-border thead{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody tr:first-child th{border-top:none}table.dataTable.row-border tbody tr:first-child td{border-top:none}table.dataTable.row-border tbody tr:last-child td{border-bottom:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody th{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.row-border tbody td{border-top:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody tr:first-child th{border-top:none}table.dataTable.cell-border tbody tr:first-child td{border-top:none}table.dataTable.cell-border tbody th{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody th:last-child{border-right:none}table.dataTable.cell-border tbody td{border-top:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}table.dataTable.cell-border tbody td:last-child{border-right:none}table.dataTable.stripe tbody tr.odd{background-color:#fff}table.dataTable.stripe tbody tr.odd.selected{background-color:#abb9d3}table.dataTable.hover tbody tr:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.odd:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.odd:hover.selected{background-color:#a9b7d1}table.dataTable.hover tbody tr.even:hover{background-color:#f5f5f5}table.dataTable.hover tbody tr.even:hover.selected{background-color:#a9b7d1}table.dataTable.order-column tbody tr>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_2{background-color:#f9f9f9}table.dataTable.order-column tbody tr>.sorting_3{background-color:#f9f9f9}table.dataTable.order-column tbody tr.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_2{background-color:#acbad4}table.dataTable.order-column tbody tr.selected>.sorting_3{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.odd>.sorting_1{background-color:#f1f1f1}table.dataTable.order-column.stripe tbody tr.odd>.sorting_2{background-color:#f3f3f3}table.dataTable.order-column.stripe tbody tr.odd>.sorting_3{background-color:#f5f5f5}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_1{background-color:#a6b3cd}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_2{background-color:#a7b5ce}table.dataTable.order-column.stripe tbody tr.odd.selected>.sorting_3{background-color:#a9b6d0}table.dataTable.order-column.stripe tbody tr.even>.sorting_1{background-color:#f9f9f9}table.dataTable.order-column.stripe tbody tr.even>.sorting_2{background-color:#fbfbfb}table.dataTable.order-column.stripe tbody tr.even>.sorting_3{background-color:#fdfdfd}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_1{background-color:#acbad4}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_2{background-color:#adbbd6}table.dataTable.order-column.stripe tbody tr.even.selected>.sorting_3{background-color:#afbdd8}table.dataTable.order-column.hover tbody tr:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.odd:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.odd:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_1{background-color:#eaeaea}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_2{background-color:#ebebeb}table.dataTable.order-column.hover tbody tr.even:hover>.sorting_3{background-color:#eee}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_1{background-color:#a1aec7}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_2{background-color:#a2afc8}table.dataTable.order-column.hover tbody tr.even:hover.selected>.sorting_3{background-color:#a4b2cb}table.dataTable.no-footer{border-bottom:none}table.dataTable.nowrap th{white-space:nowrap}table.dataTable.nowrap td{white-space:nowrap}table.dataTable.compact thead th{padding:5px 9px}table.dataTable.compact thead td{padding:5px 9px}table.dataTable.compact tfoot th{padding:5px 9px 3px 9px}table.dataTable.compact tfoot td{padding:5px 9px 3px 9px}table.dataTable.compact tbody th{padding:4px 5px}table.dataTable.compact tbody td{padding:4px 5px}.dataTables_wrapper{display:flex;flex:1 0 auto;flex-direction:column;min-height:0}.dataTables_wrapper .top{padding:16px 24px}.dataTables_wrapper .bottom{display:flex;min-height:64px;justify-content:space-between;padding:16px 8px;border-top:1px solid rgba(0,0,0,.12)}.dataTables_wrapper .bottom .left{display:flex;flex:0 0 50%;max-width:50%;align-self:center;padding:0 8px}.dataTables_wrapper .bottom .left .length{display:block}.dataTables_wrapper .bottom .right{display:flex;flex:0 0 50%;max-width:50%;align-self:center;justify-content:flex-end;padding:0 8px}.dataTables_wrapper .bottom .right .info{display:block;align-self:center}.dataTables_wrapper .bottom .right .info .dataTables_info{padding:0 8px;font-weight:600}.dataTables_wrapper .bottom .right .pagination{display:block;align-self:center;white-space:nowrap}.dataTables_wrapper .bottom .right .pagination .dataTables_paginate{padding:0;margin:0!important}.dataTables_wrapper .dataTables_filter{float:right}.dataTables_wrapper .dataTables_filter input{margin-left:.5em;border:1px solid rgba(0,0,0,.12);height:24px;padding:4px 8px}.dataTables_wrapper .dataTables_paginate .paginate_button{background:#fff;color:rgba(0,0,0,.87);border:1px solid rgba(0,0,0,.12);padding:9px 12px;border-radius:2px;cursor:pointer;user-select:none;margin:0 2px}.dataTables_wrapper .dataTables_paginate .paginate_button:hover{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.05);color:rgba(0,0,0,.87)!important;border:1px solid rgba(0,0,0,.12)!important;background:0 0}.dataTables_wrapper .dataTables_paginate .paginate_button:active{box-shadow:inset 999em 0 0 0 rgba(0,0,0,.08),inset 0 1px 3px 0 rgba(0,0,0,.1),0 1px 0 0 rgba(255,255,255,.35)}.dataTables_wrapper .dataTables_paginate .paginate_button.current,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:active,.dataTables_wrapper .dataTables_paginate .paginate_button.disabled:hover{color:rgba(0,0,0,.54)!important;border-color:rgba(0,0,0,.12)!important;background:#fff!important;box-shadow:none!important;cursor:default}.dataTables_wrapper .dataTables_processing{position:absolute;top:50%;left:50%;width:100%;height:40px;margin-left:-50%;margin-top:-25px;padding-top:20px;text-align:center;font-size:1.2em;background-color:#fff;background:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(255,255,255,0)),color-stop(25%,rgba(255,255,255,.9)),color-stop(75%,rgba(255,255,255,.9)),color-stop(100%,rgba(255,255,255,0)));background:-webkit-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-moz-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-ms-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:-o-linear-gradient(left,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%);background:linear-gradient(to right,rgba(255,255,255,0) 0,rgba(255,255,255,.9) 25%,rgba(255,255,255,.9) 75%,rgba(255,255,255,0) 100%)}.dataTables_wrapper .dataTables_scroll{display:flex;flex:1 1 0;flex-direction:column;clear:both;min-height:0}.dataTables_wrapper .dataTables_scroll table.dataTable{box-shadow:none}.dataTables_wrapper .dataTables_scroll table.dataTable.row-border thead{border:none}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead{display:flex;min-height:56px;box-shadow:0 0 0 1px rgba(0,0,0,.095),0 1px 1px 0 rgba(0,0,0,.1),0 2px 1px 0 rgba(0,0,0,.05);background:#fff;overflow:visible!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollHead tr th:last-child .table-header .column-title{position:relative;left:7px}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody{display:flex;overflow-x:hidden!important;overflow-y:scroll!important;-webkit-overflow-scrolling:touch}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody th>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper .dataTables_scroll .dataTables_scrollBody td>.dataTables_sizing{height:0;overflow:hidden;margin:0!important;padding:0!important}.dataTables_wrapper.no-footer .dataTables_scrollBody{border-bottom:none}.dataTables_wrapper.no-footer .dataTables_scrollBody table,.dataTables_wrapper.no-footer .dataTables_scrollHead table{border-bottom:none}.dataTables_wrapper:after{visibility:hidden;display:block;content:'';clear:both;height:0}table.dataTable .show-details{padding:5px 10px;font-weight:700}table.dataTable .action-buttons{display:flex;justify-content:center}table.dataTable .action-buttons .button{padding:8px}.fullpage-datatable .dataTables_wrapper{height:100%;max-height:100%}.explorer-11 .fullpage-datatable .dataTables_scroll{flex:1}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child{padding-left:40px}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr>th:first-child:before{content:'+';width:15px;height:15px;line-height:15px;top:50%;margin-top:-7px;left:8px;color:rgba(0,0,0,.54);background:0 0;border:none;box-shadow:0 0 0 2px rgba(0,0,0,.54);font-weight:700}table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>td:first-child:before,table.dataTable.dtr-inline.collapsed.dtr-inline.collapsed>tbody>tr.parent>th:first-child:before{background:0 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul{display:block}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;border-bottom:1px solid rgba(0,0,0,.12);padding:8px 0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:first-child{padding-top:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li:last-child{border-bottom:none;padding-bottom:0}table.dataTable.dtr-inline.collapsed>tbody>tr.child ul li .dtr-title{margin-right:8px}[hljs],hljs{display:block;overflow-x:auto;color:#333;background:#f8f8f8;-webkit-text-size-adjust:none}.diff .hljs-header,.hljs-comment{color:#998;font-style:italic}.css .rule .hljs-keyword,.hljs-keyword,.hljs-request,.hljs-status,.hljs-subst,.hljs-winutils,.nginx .hljs-title{color:#333;font-weight:700}.hljs-hexcolor,.hljs-number,.ruby .hljs-constant{color:teal}.hljs-doctag,.hljs-string,.hljs-tag .hljs-value,.tex .hljs-formula{color:#d14}.hljs-id,.hljs-title,.scss .hljs-preprocessor{color:#900;font-weight:700}.hljs-list .hljs-keyword,.hljs-subst{font-weight:400}.hljs-class .hljs-title,.hljs-type,.tex .hljs-command,.vhdl .hljs-literal{color:#458;font-weight:700}.django .hljs-tag .hljs-keyword,.hljs-rule .hljs-property,.hljs-tag,.hljs-tag .hljs-title{color:navy;font-weight:400}.hljs-attribute,.hljs-name,.hljs-variable,.lisp .hljs-body{color:teal}.hljs-regexp{color:#009926}.clojure .hljs-keyword,.hljs-prompt,.hljs-symbol,.lisp .hljs-keyword,.ruby .hljs-symbol .hljs-string,.scheme .hljs-keyword,.tex .hljs-special{color:#990073}.hljs-built_in{color:#0086b3}.hljs-cdata,.hljs-doctype,.hljs-pi,.hljs-pragma,.hljs-preprocessor,.hljs-shebang{color:#999;font-weight:700}.hljs-deletion{background:#fdd}.hljs-addition{background:#dfd}.diff .hljs-change{background:#0086b3}.hljs-chunk{color:#aaa}nvd3{display:block;width:100%;height:100%}nvd3.remove-x-lines .nv-x .tick line{display:none}nvd3.remove-y-lines .nv-y .tick line{display:none}nvd3.remove-line-stroke .nv-groups path.nv-line{stroke-width:0!important}nvd3.remove-opacity .nv-groups .nv-group{fill-opacity:1!important}nvd3.show-line-points .nv-line .nv-scatter .nv-groups .nv-point{fill-opacity:1!important;stroke-opacity:1!important}.nvd3 text{font-family:Roboto,"Helvetica Neue",Arial,sans-serif}.nvd3 line.nv-guideline{stroke:rgba(0,0,0,.54)}.nvd3 .nv-groups .nv-point.hover{stroke-width:3px!important;fill-opacity:1!important;stroke-opacity:1!important}.nvtooltip{background:0 0;color:#fff;padding:0;border:none}.nvtooltip.gravity-n:after{display:block;position:absolute;content:'';width:0;height:0;left:50%;bottom:100%;margin-left:-5px;border:5px solid transparent;border-bottom-color:rgba(0,0,0,.87)}.nvtooltip.gravity-s:after{display:block;position:absolute;content:'';width:0;height:0;top:100%;left:50%;margin-left:-5px;border:5px solid transparent;border-top-color:rgba(0,0,0,.87)}.nvtooltip.gravity-e:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;right:0;margin-top:-6px;margin-right:-11px;border:6px solid transparent;border-left-color:rgba(0,0,0,.87)}.nvtooltip.gravity-w:after{display:block;position:absolute;content:'';width:0;height:0;top:50%;margin-top:-6px;margin-left:-11px;border:6px solid transparent;border-right-color:rgba(0,0,0,.87)}.nvtooltip table{background:rgba(0,0,0,.87);padding:8px 12px;margin:0;border-radius:2px}.nvtooltip table tbody tr td.legend-color-guide div{border:none}.nvtooltip table tbody tr td:last-child{padding-right:0}.ta-root{display:block}.ta-root .ta-scroll-window.form-control{border:1px solid rgba(0,0,0,.12)}.ta-root.focussed>.ta-scroll-window.form-control{outline:0 solid transparent;border:1px solid rgba(0,0,0,.12);box-shadow:none}.ta-root textarea.ta-editor.ta-html{resize:vertical;width:100%!important;border:1px solid rgba(0,0,0,.12);padding:16px}.ta-root .ta-toolbar{border:1px solid rgba(0,0,0,.12);border-bottom:none;background:#f5f5f5}.ta-root .ta-toolbar .ta-group{display:flex;align-items:center;align-content:center;flex-wrap:wrap}.ta-root .ta-toolbar .ta-group #toolbarCC,.ta-root .ta-toolbar .ta-group #toolbarWC{display:inline-block!important;line-height:24px}.ta-root .ta-toolbar .ta-group .md-button{width:40px;min-width:40px;line-height:14px;height:36px;min-height:36px;padding:6px;margin:4px 0}.ta-root .ta-toolbar .ta-group .md-button i{font-size:20px;width:20px;height:20px;line-height:20px}.ng-cloak,.x-ng-cloak,[data-ng-cloak],[ng-cloak],[ng\:cloak],[x-ng-cloak]{display:none!important}.no-padding{padding:0!important}.no-margin{margin:0!important}.no-radius{border-radius:0}.divider-vertical{background:rgba(0,0,0,.12);height:24px;width:1px;margin:0 8px}.hidden{visibility:hidden;opacity:0}[fill-width]{min-width:100%}[fill-height]{min-height:100%}.full-height{height:100%!important}a img{display:block;outline:0}img{max-width:100%;height:auto;vertical-align:top;border:none}.scrollable{display:block;position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.scrollable.only-x{overflow-x:auto;overflow-y:hidden}.scrollable.only-y{overflow-x:hidden;overflow-y:auto}.flex-scrollable{position:relative;overflow-x:auto;overflow-y:auto;-webkit-overflow-scrolling:touch}.flex-scrollable.only-x{overflow-x:auto;overflow-y:hidden}.flex-scrollable.only-y{overflow-x:hidden;overflow-y:auto}.background-image-center{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:-1}.align-vertical:before{display:inline-block;height:100%;content:'';vertical-align:middle}.align-vertical .align-vertical-bottom,.align-vertical .align-vertical-middle,.align-vertical .align-vertical-top{display:inline-block}.align-vertical .align-vertical-top{vertical-align:top}.align-vertical .align-vertical-middle{vertical-align:middle}.align-vertical .align-vertical-bottom{vertical-align:bottom}.p-0,.padding-0{padding:0}.padding-top-0,.pt-0{padding-top:0}.padding-right-0,.pr-0{padding-right:0}.padding-bottom-0,.pb-0{padding-bottom:0}.padding-left-0,.pl-0{padding-left:0}.padding-horizontal-0,.ph-0{padding-left:0;padding-right:0}.padding-vertical-0,.pv-0{padding-top:0;padding-bottom:0}.p-5,.padding-5{padding:5px}.padding-top-5,.pt-5{padding-top:5px}.padding-right-5,.pr-5{padding-right:5px}.padding-bottom-5,.pb-5{padding-bottom:5px}.padding-left-5,.pl-5{padding-left:5px}.padding-horizontal-5,.ph-5{padding-left:5px;padding-right:5px}.padding-vertical-5,.pv-5{padding-top:5px;padding-bottom:5px}.p-10,.padding-10{padding:10px}.padding-top-10,.pt-10{padding-top:10px}.padding-right-10,.pr-10{padding-right:10px}.padding-bottom-10,.pb-10{padding-bottom:10px}.padding-left-10,.pl-10{padding-left:10px}.padding-horizontal-10,.ph-10{padding-left:10px;padding-right:10px}.padding-vertical-10,.pv-10{padding-top:10px;padding-bottom:10px}.p-15,.padding-15{padding:15px}.padding-top-15,.pt-15{padding-top:15px}.padding-right-15,.pr-15{padding-right:15px}.padding-bottom-15,.pb-15{padding-bottom:15px}.padding-left-15,.pl-15{padding-left:15px}.padding-horizontal-15,.ph-15{padding-left:15px;padding-right:15px}.padding-vertical-15,.pv-15{padding-top:15px;padding-bottom:15px}.p-20,.padding-20{padding:20px}.padding-top-20,.pt-20{padding-top:20px}.padding-right-20,.pr-20{padding-right:20px}.padding-bottom-20,.pb-20{padding-bottom:20px}.padding-left-20,.pl-20{padding-left:20px}.padding-horizontal-20,.ph-20{padding-left:20px;padding-right:20px}.padding-vertical-20,.pv-20{padding-top:20px;padding-bottom:20px}.p-25,.padding-25{padding:25px}.padding-top-25,.pt-25{padding-top:25px}.padding-right-25,.pr-25{padding-right:25px}.padding-bottom-25,.pb-25{padding-bottom:25px}.padding-left-25,.pl-25{padding-left:25px}.padding-horizontal-25,.ph-25{padding-left:25px;padding-right:25px}.padding-vertical-25,.pv-25{padding-top:25px;padding-bottom:25px}.p-30,.padding-30{padding:30px}.padding-top-30,.pt-30{padding-top:30px}.padding-right-30,.pr-30{padding-right:30px}.padding-bottom-30,.pb-30{padding-bottom:30px}.padding-left-30,.pl-30{padding-left:30px}.padding-horizontal-30,.ph-30{padding-left:30px;padding-right:30px}.padding-vertical-30,.pv-30{padding-top:30px;padding-bottom:30px}.p-35,.padding-35{padding:35px}.padding-top-35,.pt-35{padding-top:35px}.padding-right-35,.pr-35{padding-right:35px}.padding-bottom-35,.pb-35{padding-bottom:35px}.padding-left-35,.pl-35{padding-left:35px}.padding-horizontal-35,.ph-35{padding-left:35px;padding-right:35px}.padding-vertical-35,.pv-35{padding-top:35px;padding-bottom:35px}.p-40,.padding-40{padding:40px}.padding-top-40,.pt-40{padding-top:40px}.padding-right-40,.pr-40{padding-right:40px}.padding-bottom-40,.pb-40{padding-bottom:40px}.padding-left-40,.pl-40{padding-left:40px}.padding-horizontal-40,.ph-40{padding-left:40px;padding-right:40px}.padding-vertical-40,.pv-40{padding-top:40px;padding-bottom:40px}.p-45,.padding-45{padding:45px}.padding-top-45,.pt-45{padding-top:45px}.padding-right-45,.pr-45{padding-right:45px}.padding-bottom-45,.pb-45{padding-bottom:45px}.padding-left-45,.pl-45{padding-left:45px}.padding-horizontal-45,.ph-45{padding-left:45px;padding-right:45px}.padding-vertical-45,.pv-45{padding-top:45px;padding-bottom:45px}.p-50,.padding-50{padding:50px}.padding-top-50,.pt-50{padding-top:50px}.padding-right-50,.pr-50{padding-right:50px}.padding-bottom-50,.pb-50{padding-bottom:50px}.padding-left-50,.pl-50{padding-left:50px}.padding-horizontal-50,.ph-50{padding-left:50px;padding-right:50px}.padding-vertical-50,.pv-50{padding-top:50px;padding-bottom:50px}.p-55,.padding-55{padding:55px}.padding-top-55,.pt-55{padding-top:55px}.padding-right-55,.pr-55{padding-right:55px}.padding-bottom-55,.pb-55{padding-bottom:55px}.padding-left-55,.pl-55{padding-left:55px}.padding-horizontal-55,.ph-55{padding-left:55px;padding-right:55px}.padding-vertical-55,.pv-55{padding-top:55px;padding-bottom:55px}.p-60,.padding-60{padding:60px}.padding-top-60,.pt-60{padding-top:60px}.padding-right-60,.pr-60{padding-right:60px}.padding-bottom-60,.pb-60{padding-bottom:60px}.padding-left-60,.pl-60{padding-left:60px}.padding-horizontal-60,.ph-60{padding-left:60px;padding-right:60px}.padding-vertical-60,.pv-60{padding-top:60px;padding-bottom:60px}.p-65,.padding-65{padding:65px}.padding-top-65,.pt-65{padding-top:65px}.padding-right-65,.pr-65{padding-right:65px}.padding-bottom-65,.pb-65{padding-bottom:65px}.padding-left-65,.pl-65{padding-left:65px}.padding-horizontal-65,.ph-65{padding-left:65px;padding-right:65px}.padding-vertical-65,.pv-65{padding-top:65px;padding-bottom:65px}.p-70,.padding-70{padding:70px}.padding-top-70,.pt-70{padding-top:70px}.padding-right-70,.pr-70{padding-right:70px}.padding-bottom-70,.pb-70{padding-bottom:70px}.padding-left-70,.pl-70{padding-left:70px}.padding-horizontal-70,.ph-70{padding-left:70px;padding-right:70px}.padding-vertical-70,.pv-70{padding-top:70px;padding-bottom:70px}.p-75,.padding-75{padding:75px}.padding-top-75,.pt-75{padding-top:75px}.padding-right-75,.pr-75{padding-right:75px}.padding-bottom-75,.pb-75{padding-bottom:75px}.padding-left-75,.pl-75{padding-left:75px}.padding-horizontal-75,.ph-75{padding-left:75px;padding-right:75px}.padding-vertical-75,.pv-75{padding-top:75px;padding-bottom:75px}.p-80,.padding-80{padding:80px}.padding-top-80,.pt-80{padding-top:80px}.padding-right-80,.pr-80{padding-right:80px}.padding-bottom-80,.pb-80{padding-bottom:80px}.padding-left-80,.pl-80{padding-left:80px}.padding-horizontal-80,.ph-80{padding-left:80px;padding-right:80px}.padding-vertical-80,.pv-80{padding-top:80px;padding-bottom:80px}.p-85,.padding-85{padding:85px}.padding-top-85,.pt-85{padding-top:85px}.padding-right-85,.pr-85{padding-right:85px}.padding-bottom-85,.pb-85{padding-bottom:85px}.padding-left-85,.pl-85{padding-left:85px}.padding-horizontal-85,.ph-85{padding-left:85px;padding-right:85px}.padding-vertical-85,.pv-85{padding-top:85px;padding-bottom:85px}.p-90,.padding-90{padding:90px}.padding-top-90,.pt-90{padding-top:90px}.padding-right-90,.pr-90{padding-right:90px}.padding-bottom-90,.pb-90{padding-bottom:90px}.padding-left-90,.pl-90{padding-left:90px}.padding-horizontal-90,.ph-90{padding-left:90px;padding-right:90px}.padding-vertical-90,.pv-90{padding-top:90px;padding-bottom:90px}.p-95,.padding-95{padding:95px}.padding-top-95,.pt-95{padding-top:95px}.padding-right-95,.pr-95{padding-right:95px}.padding-bottom-95,.pb-95{padding-bottom:95px}.padding-left-95,.pl-95{padding-left:95px}.padding-horizontal-95,.ph-95{padding-left:95px;padding-right:95px}.padding-vertical-95,.pv-95{padding-top:95px;padding-bottom:95px}.p-100,.padding-100{padding:100px}.padding-top-100,.pt-100{padding-top:100px}.padding-right-100,.pr-100{padding-right:100px}.padding-bottom-100,.pb-100{padding-bottom:100px}.padding-left-100,.pl-100{padding-left:100px}.padding-horizontal-100,.ph-100{padding-left:100px;padding-right:100px}.padding-vertical-100,.pv-100{padding-top:100px;padding-bottom:100px}.p-8,.padding-8{padding:8px}.padding-top-8,.pt-8{padding-top:8px}.padding-right-8,.pr-8{padding-right:8px}.padding-bottom-8,.pb-8{padding-bottom:8px}.padding-left-8,.pl-8{padding-left:8px}.padding-horizontal-8,.ph-8{padding-left:8px;padding-right:8px}.padding-vertical-8,.pv-8{padding-top:8px;padding-bottom:8px}.p-16,.padding-16{padding:16px}.padding-top-16,.pt-16{padding-top:16px}.padding-right-16,.pr-16{padding-right:16px}.padding-bottom-16,.pb-16{padding-bottom:16px}.padding-left-16,.pl-16{padding-left:16px}.padding-horizontal-16,.ph-16{padding-left:16px;padding-right:16px}.padding-vertical-16,.pv-16{padding-top:16px;padding-bottom:16px}.p-24,.padding-24{padding:24px}.padding-top-24,.pt-24{padding-top:24px}.padding-right-24,.pr-24{padding-right:24px}.padding-bottom-24,.pb-24{padding-bottom:24px}.padding-left-24,.pl-24{padding-left:24px}.padding-horizontal-24,.ph-24{padding-left:24px;padding-right:24px}.padding-vertical-24,.pv-24{padding-top:24px;padding-bottom:24px}.p-32,.padding-32{padding:32px}.padding-top-32,.pt-32{padding-top:32px}.padding-right-32,.pr-32{padding-right:32px}.padding-bottom-32,.pb-32{padding-bottom:32px}.padding-left-32,.pl-32{padding-left:32px}.padding-horizontal-32,.ph-32{padding-left:32px;padding-right:32px}.padding-vertical-32,.pv-32{padding-top:32px;padding-bottom:32px}.p-48,.padding-48{padding:48px}.padding-top-48,.pt-48{padding-top:48px}.padding-right-48,.pr-48{padding-right:48px}.padding-bottom-48,.pb-48{padding-bottom:48px}.padding-left-48,.pl-48{padding-left:48px}.padding-horizontal-48,.ph-48{padding-left:48px;padding-right:48px}.padding-vertical-48,.pv-48{padding-top:48px;padding-bottom:48px}.p-56,.padding-56{padding:56px}.padding-top-56,.pt-56{padding-top:56px}.padding-right-56,.pr-56{padding-right:56px}.padding-bottom-56,.pb-56{padding-bottom:56px}.padding-left-56,.pl-56{padding-left:56px}.padding-horizontal-56,.ph-56{padding-left:56px;padding-right:56px}.padding-vertical-56,.pv-56{padding-top:56px;padding-bottom:56px}.p-64,.padding-64{padding:64px}.padding-top-64,.pt-64{padding-top:64px}.padding-right-64,.pr-64{padding-right:64px}.padding-bottom-64,.pb-64{padding-bottom:64px}.padding-left-64,.pl-64{padding-left:64px}.padding-horizontal-64,.ph-64{padding-left:64px;padding-right:64px}.padding-vertical-64,.pv-64{padding-top:64px;padding-bottom:64px}.p-72,.padding-72{padding:72px}.padding-top-72,.pt-72{padding-top:72px}.padding-right-72,.pr-72{padding-right:72px}.padding-bottom-72,.pb-72{padding-bottom:72px}.padding-left-72,.pl-72{padding-left:72px}.padding-horizontal-72,.ph-72{padding-left:72px;padding-right:72px}.padding-vertical-72,.pv-72{padding-top:72px;padding-bottom:72px}.p-88,.padding-88{padding:88px}.padding-top-88,.pt-88{padding-top:88px}.padding-right-88,.pr-88{padding-right:88px}.padding-bottom-88,.pb-88{padding-bottom:88px}.padding-left-88,.pl-88{padding-left:88px}.padding-horizontal-88,.ph-88{padding-left:88px;padding-right:88px}.padding-vertical-88,.pv-88{padding-top:88px;padding-bottom:88px}.p-96,.padding-96{padding:96px}.padding-top-96,.pt-96{padding-top:96px}.padding-right-96,.pr-96{padding-right:96px}.padding-bottom-96,.pb-96{padding-bottom:96px}.padding-left-96,.pl-96{padding-left:96px}.padding-horizontal-96,.ph-96{padding-left:96px;padding-right:96px}.padding-vertical-96,.pv-96{padding-top:96px;padding-bottom:96px}.m-0,.margin-0{margin:0}.margin-top-0,.mt-0{margin-top:0}.margin-right-0,.mr-0{margin-right:0}.margin-bottom-0,.mb-0{margin-bottom:0}.margin-left-0,.ml-0{margin-left:0}.margin-horizontal-0,.mh-0{margin-left:0;margin-right:0}.margin-vertical-0,.mv-0{margin-top:0;margin-bottom:0}.m-5,.margin-5{margin:5px}.margin-top-5,.mt-5{margin-top:5px}.margin-right-5,.mr-5{margin-right:5px}.margin-bottom-5,.mb-5{margin-bottom:5px}.margin-left-5,.ml-5{margin-left:5px}.margin-horizontal-5,.mh-5{margin-left:5px;margin-right:5px}.margin-vertical-5,.mv-5{margin-top:5px;margin-bottom:5px}.m-10,.margin-10{margin:10px}.margin-top-10,.mt-10{margin-top:10px}.margin-right-10,.mr-10{margin-right:10px}.margin-bottom-10,.mb-10{margin-bottom:10px}.margin-left-10,.ml-10{margin-left:10px}.margin-horizontal-10,.mh-10{margin-left:10px;margin-right:10px}.margin-vertical-10,.mv-10{margin-top:10px;margin-bottom:10px}.m-15,.margin-15{margin:15px}.margin-top-15,.mt-15{margin-top:15px}.margin-right-15,.mr-15{margin-right:15px}.margin-bottom-15,.mb-15{margin-bottom:15px}.margin-left-15,.ml-15{margin-left:15px}.margin-horizontal-15,.mh-15{margin-left:15px;margin-right:15px}.margin-vertical-15,.mv-15{margin-top:15px;margin-bottom:15px}.m-20,.margin-20{margin:20px}.margin-top-20,.mt-20{margin-top:20px}.margin-right-20,.mr-20{margin-right:20px}.margin-bottom-20,.mb-20{margin-bottom:20px}.margin-left-20,.ml-20{margin-left:20px}.margin-horizontal-20,.mh-20{margin-left:20px;margin-right:20px}.margin-vertical-20,.mv-20{margin-top:20px;margin-bottom:20px}.m-25,.margin-25{margin:25px}.margin-top-25,.mt-25{margin-top:25px}.margin-right-25,.mr-25{margin-right:25px}.margin-bottom-25,.mb-25{margin-bottom:25px}.margin-left-25,.ml-25{margin-left:25px}.margin-horizontal-25,.mh-25{margin-left:25px;margin-right:25px}.margin-vertical-25,.mv-25{margin-top:25px;margin-bottom:25px}.m-30,.margin-30{margin:30px}.margin-top-30,.mt-30{margin-top:30px}.margin-right-30,.mr-30{margin-right:30px}.margin-bottom-30,.mb-30{margin-bottom:30px}.margin-left-30,.ml-30{margin-left:30px}.margin-horizontal-30,.mh-30{margin-left:30px;margin-right:30px}.margin-vertical-30,.mv-30{margin-top:30px;margin-bottom:30px}.m-35,.margin-35{margin:35px}.margin-top-35,.mt-35{margin-top:35px}.margin-right-35,.mr-35{margin-right:35px}.margin-bottom-35,.mb-35{margin-bottom:35px}.margin-left-35,.ml-35{margin-left:35px}.margin-horizontal-35,.mh-35{margin-left:35px;margin-right:35px}.margin-vertical-35,.mv-35{margin-top:35px;margin-bottom:35px}.m-40,.margin-40{margin:40px}.margin-top-40,.mt-40{margin-top:40px}.margin-right-40,.mr-40{margin-right:40px}.margin-bottom-40,.mb-40{margin-bottom:40px}.margin-left-40,.ml-40{margin-left:40px}.margin-horizontal-40,.mh-40{margin-left:40px;margin-right:40px}.margin-vertical-40,.mv-40{margin-top:40px;margin-bottom:40px}.m-45,.margin-45{margin:45px}.margin-top-45,.mt-45{margin-top:45px}.margin-right-45,.mr-45{margin-right:45px}.margin-bottom-45,.mb-45{margin-bottom:45px}.margin-left-45,.ml-45{margin-left:45px}.margin-horizontal-45,.mh-45{margin-left:45px;margin-right:45px}.margin-vertical-45,.mv-45{margin-top:45px;margin-bottom:45px}.m-50,.margin-50{margin:50px}.margin-top-50,.mt-50{margin-top:50px}.margin-right-50,.mr-50{margin-right:50px}.margin-bottom-50,.mb-50{margin-bottom:50px}.margin-left-50,.ml-50{margin-left:50px}.margin-horizontal-50,.mh-50{margin-left:50px;margin-right:50px}.margin-vertical-50,.mv-50{margin-top:50px;margin-bottom:50px}.m-55,.margin-55{margin:55px}.margin-top-55,.mt-55{margin-top:55px}.margin-right-55,.mr-55{margin-right:55px}.margin-bottom-55,.mb-55{margin-bottom:55px}.margin-left-55,.ml-55{margin-left:55px}.margin-horizontal-55,.mh-55{margin-left:55px;margin-right:55px}.margin-vertical-55,.mv-55{margin-top:55px;margin-bottom:55px}.m-60,.margin-60{margin:60px}.margin-top-60,.mt-60{margin-top:60px}.margin-right-60,.mr-60{margin-right:60px}.margin-bottom-60,.mb-60{margin-bottom:60px}.margin-left-60,.ml-60{margin-left:60px}.margin-horizontal-60,.mh-60{margin-left:60px;margin-right:60px}.margin-vertical-60,.mv-60{margin-top:60px;margin-bottom:60px}.m-65,.margin-65{margin:65px}.margin-top-65,.mt-65{margin-top:65px}.margin-right-65,.mr-65{margin-right:65px}.margin-bottom-65,.mb-65{margin-bottom:65px}.margin-left-65,.ml-65{margin-left:65px}.margin-horizontal-65,.mh-65{margin-left:65px;margin-right:65px}.margin-vertical-65,.mv-65{margin-top:65px;margin-bottom:65px}.m-70,.margin-70{margin:70px}.margin-top-70,.mt-70{margin-top:70px}.margin-right-70,.mr-70{margin-right:70px}.margin-bottom-70,.mb-70{margin-bottom:70px}.margin-left-70,.ml-70{margin-left:70px}.margin-horizontal-70,.mh-70{margin-left:70px;margin-right:70px}.margin-vertical-70,.mv-70{margin-top:70px;margin-bottom:70px}.m-75,.margin-75{margin:75px}.margin-top-75,.mt-75{margin-top:75px}.margin-right-75,.mr-75{margin-right:75px}.margin-bottom-75,.mb-75{margin-bottom:75px}.margin-left-75,.ml-75{margin-left:75px}.margin-horizontal-75,.mh-75{margin-left:75px;margin-right:75px}.margin-vertical-75,.mv-75{margin-top:75px;margin-bottom:75px}.m-80,.margin-80{margin:80px}.margin-top-80,.mt-80{margin-top:80px}.margin-right-80,.mr-80{margin-right:80px}.margin-bottom-80,.mb-80{margin-bottom:80px}.margin-left-80,.ml-80{margin-left:80px}.margin-horizontal-80,.mh-80{margin-left:80px;margin-right:80px}.margin-vertical-80,.mv-80{margin-top:80px;margin-bottom:80px}.m-85,.margin-85{margin:85px}.margin-top-85,.mt-85{margin-top:85px}.margin-right-85,.mr-85{margin-right:85px}.margin-bottom-85,.mb-85{margin-bottom:85px}.margin-left-85,.ml-85{margin-left:85px}.margin-horizontal-85,.mh-85{margin-left:85px;margin-right:85px}.margin-vertical-85,.mv-85{margin-top:85px;margin-bottom:85px}.m-90,.margin-90{margin:90px}.margin-top-90,.mt-90{margin-top:90px}.margin-right-90,.mr-90{margin-right:90px}.margin-bottom-90,.mb-90{margin-bottom:90px}.margin-left-90,.ml-90{margin-left:90px}.margin-horizontal-90,.mh-90{margin-left:90px;margin-right:90px}.margin-vertical-90,.mv-90{margin-top:90px;margin-bottom:90px}.m-95,.margin-95{margin:95px}.margin-top-95,.mt-95{margin-top:95px}.margin-right-95,.mr-95{margin-right:95px}.margin-bottom-95,.mb-95{margin-bottom:95px}.margin-left-95,.ml-95{margin-left:95px}.margin-horizontal-95,.mh-95{margin-left:95px;margin-right:95px}.margin-vertical-95,.mv-95{margin-top:95px;margin-bottom:95px}.m-100,.margin-100{margin:100px}.margin-top-100,.mt-100{margin-top:100px}.margin-right-100,.mr-100{margin-right:100px}.margin-bottom-100,.mb-100{margin-bottom:100px}.margin-left-100,.ml-100{margin-left:100px}.margin-horizontal-100,.mh-100{margin-left:100px;margin-right:100px}.margin-vertical-100,.mv-100{margin-top:100px;margin-bottom:100px}.m-8,.margin-8{margin:8px}.margin-top-8,.mt-8{margin-top:8px}.margin-right-8,.mr-8{margin-right:8px}.margin-bottom-8,.mb-8{margin-bottom:8px}.margin-left-8,.ml-8{margin-left:8px}.margin-horizontal-8,.mh-8{margin-left:8px;margin-right:8px}.margin-vertical-8,.mv-8{margin-top:8px;margin-bottom:8px}.m-16,.margin-16{margin:16px}.margin-top-16,.mt-16{margin-top:16px}.margin-right-16,.mr-16{margin-right:16px}.margin-bottom-16,.mb-16{margin-bottom:16px}.margin-left-16,.ml-16{margin-left:16px}.margin-horizontal-16,.mh-16{margin-left:16px;margin-right:16px}.margin-vertical-16,.mv-16{margin-top:16px;margin-bottom:16px}.m-24,.margin-24{margin:24px}.margin-top-24,.mt-24{margin-top:24px}.margin-right-24,.mr-24{margin-right:24px}.margin-bottom-24,.mb-24{margin-bottom:24px}.margin-left-24,.ml-24{margin-left:24px}.margin-horizontal-24,.mh-24{margin-left:24px;margin-right:24px}.margin-vertical-24,.mv-24{margin-top:24px;margin-bottom:24px}.m-32,.margin-32{margin:32px}.margin-top-32,.mt-32{margin-top:32px}.margin-right-32,.mr-32{margin-right:32px}.margin-bottom-32,.mb-32{margin-bottom:32px}.margin-left-32,.ml-32{margin-left:32px}.margin-horizontal-32,.mh-32{margin-left:32px;margin-right:32px}.margin-vertical-32,.mv-32{margin-top:32px;margin-bottom:32px}.m-48,.margin-48{margin:48px}.margin-top-48,.mt-48{margin-top:48px}.margin-right-48,.mr-48{margin-right:48px}.margin-bottom-48,.mb-48{margin-bottom:48px}.margin-left-48,.ml-48{margin-left:48px}.margin-horizontal-48,.mh-48{margin-left:48px;margin-right:48px}.margin-vertical-48,.mv-48{margin-top:48px;margin-bottom:48px}.m-56,.margin-56{margin:56px}.margin-top-56,.mt-56{margin-top:56px}.margin-right-56,.mr-56{margin-right:56px}.margin-bottom-56,.mb-56{margin-bottom:56px}.margin-left-56,.ml-56{margin-left:56px}.margin-horizontal-56,.mh-56{margin-left:56px;margin-right:56px}.margin-vertical-56,.mv-56{margin-top:56px;margin-bottom:56px}.m-64,.margin-64{margin:64px}.margin-top-64,.mt-64{margin-top:64px}.margin-right-64,.mr-64{margin-right:64px}.margin-bottom-64,.mb-64{margin-bottom:64px}.margin-left-64,.ml-64{margin-left:64px}.margin-horizontal-64,.mh-64{margin-left:64px;margin-right:64px}.margin-vertical-64,.mv-64{margin-top:64px;margin-bottom:64px}.m-72,.margin-72{margin:72px}.margin-top-72,.mt-72{margin-top:72px}.margin-right-72,.mr-72{margin-right:72px}.margin-bottom-72,.mb-72{margin-bottom:72px}.margin-left-72,.ml-72{margin-left:72px}.margin-horizontal-72,.mh-72{margin-left:72px;margin-right:72px}.margin-vertical-72,.mv-72{margin-top:72px;margin-bottom:72px}.m-88,.margin-88{margin:88px}.margin-top-88,.mt-88{margin-top:88px}.margin-right-88,.mr-88{margin-right:88px}.margin-bottom-88,.mb-88{margin-bottom:88px}.margin-left-88,.ml-88{margin-left:88px}.margin-horizontal-88,.mh-88{margin-left:88px;margin-right:88px}.margin-vertical-88,.mv-88{margin-top:88px;margin-bottom:88px}.m-96,.margin-96{margin:96px}.margin-top-96,.mt-96{margin-top:96px}.margin-right-96,.mr-96{margin-right:96px}.margin-bottom-96,.mb-96{margin-bottom:96px}.margin-left-96,.ml-96{margin-left:96px}.margin-horizontal-96,.mh-96{margin-left:96px;margin-right:96px}.margin-vertical-96,.mv-96{margin-top:96px;margin-bottom:96px}.h-0,.height-0{height:0!important;min-height:0!important;max-height:0!important}.w-0,.width-0{width:0!important;min-width:0!important;max-width:0!important}.h-5,.height-5{height:5px!important;min-height:5px!important;max-height:5px!important}.w-5,.width-5{width:5px!important;min-width:5px!important;max-width:5px!important}.h-10,.height-10{height:10px!important;min-height:10px!important;max-height:10px!important}.w-10,.width-10{width:10px!important;min-width:10px!important;max-width:10px!important}.h-15,.height-15{height:15px!important;min-height:15px!important;max-height:15px!important}.w-15,.width-15{width:15px!important;min-width:15px!important;max-width:15px!important}.h-20,.height-20{height:20px!important;min-height:20px!important;max-height:20px!important}.w-20,.width-20{width:20px!important;min-width:20px!important;max-width:20px!important}.h-25,.height-25{height:25px!important;min-height:25px!important;max-height:25px!important}.w-25,.width-25{width:25px!important;min-width:25px!important;max-width:25px!important}.h-30,.height-30{height:30px!important;min-height:30px!important;max-height:30px!important}.w-30,.width-30{width:30px!important;min-width:30px!important;max-width:30px!important}.h-35,.height-35{height:35px!important;min-height:35px!important;max-height:35px!important}.w-35,.width-35{width:35px!important;min-width:35px!important;max-width:35px!important}.h-40,.height-40{height:40px!important;min-height:40px!important;max-height:40px!important}.w-40,.width-40{width:40px!important;min-width:40px!important;max-width:40px!important}.h-45,.height-45{height:45px!important;min-height:45px!important;max-height:45px!important}.w-45,.width-45{width:45px!important;min-width:45px!important;max-width:45px!important}.h-50,.height-50{height:50px!important;min-height:50px!important;max-height:50px!important}.w-50,.width-50{width:50px!important;min-width:50px!important;max-width:50px!important}.h-55,.height-55{height:55px!important;min-height:55px!important;max-height:55px!important}.w-55,.width-55{width:55px!important;min-width:55px!important;max-width:55px!important}.h-60,.height-60{height:60px!important;min-height:60px!important;max-height:60px!important}.w-60,.width-60{width:60px!important;min-width:60px!important;max-width:60px!important}.h-65,.height-65{height:65px!important;min-height:65px!important;max-height:65px!important}.w-65,.width-65{width:65px!important;min-width:65px!important;max-width:65px!important}.h-70,.height-70{height:70px!important;min-height:70px!important;max-height:70px!important}.w-70,.width-70{width:70px!important;min-width:70px!important;max-width:70px!important}.h-75,.height-75{height:75px!important;min-height:75px!important;max-height:75px!important}.w-75,.width-75{width:75px!important;min-width:75px!important;max-width:75px!important}.h-80,.height-80{height:80px!important;min-height:80px!important;max-height:80px!important}.w-80,.width-80{width:80px!important;min-width:80px!important;max-width:80px!important}.h-85,.height-85{height:85px!important;min-height:85px!important;max-height:85px!important}.w-85,.width-85{width:85px!important;min-width:85px!important;max-width:85px!important}.h-90,.height-90{height:90px!important;min-height:90px!important;max-height:90px!important}.w-90,.width-90{width:90px!important;min-width:90px!important;max-width:90px!important}.h-95,.height-95{height:95px!important;min-height:95px!important;max-height:95px!important}.w-95,.width-95{width:95px!important;min-width:95px!important;max-width:95px!important}.h-100,.height-100{height:100px!important;min-height:100px!important;max-height:100px!important}.w-100,.width-100{width:100px!important;min-width:100px!important;max-width:100px!important}.h-105,.height-105{height:105px!important;min-height:105px!important;max-height:105px!important}.w-105,.width-105{width:105px!important;min-width:105px!important;max-width:105px!important}.h-110,.height-110{height:110px!important;min-height:110px!important;max-height:110px!important}.w-110,.width-110{width:110px!important;min-width:110px!important;max-width:110px!important}.h-115,.height-115{height:115px!important;min-height:115px!important;max-height:115px!important}.w-115,.width-115{width:115px!important;min-width:115px!important;max-width:115px!important}.h-120,.height-120{height:120px!important;min-height:120px!important;max-height:120px!important}.w-120,.width-120{width:120px!important;min-width:120px!important;max-width:120px!important}.h-125,.height-125{height:125px!important;min-height:125px!important;max-height:125px!important}.w-125,.width-125{width:125px!important;min-width:125px!important;max-width:125px!important}.h-130,.height-130{height:130px!important;min-height:130px!important;max-height:130px!important}.w-130,.width-130{width:130px!important;min-width:130px!important;max-width:130px!important}.h-135,.height-135{height:135px!important;min-height:135px!important;max-height:135px!important}.w-135,.width-135{width:135px!important;min-width:135px!important;max-width:135px!important}.h-140,.height-140{height:140px!important;min-height:140px!important;max-height:140px!important}.w-140,.width-140{width:140px!important;min-width:140px!important;max-width:140px!important}.h-145,.height-145{height:145px!important;min-height:145px!important;max-height:145px!important}.w-145,.width-145{width:145px!important;min-width:145px!important;max-width:145px!important}.h-150,.height-150{height:150px!important;min-height:150px!important;max-height:150px!important}.w-150,.width-150{width:150px!important;min-width:150px!important;max-width:150px!important}.h-155,.height-155{height:155px!important;min-height:155px!important;max-height:155px!important}.w-155,.width-155{width:155px!important;min-width:155px!important;max-width:155px!important}.h-160,.height-160{height:160px!important;min-height:160px!important;max-height:160px!important}.w-160,.width-160{width:160px!important;min-width:160px!important;max-width:160px!important}.h-165,.height-165{height:165px!important;min-height:165px!important;max-height:165px!important}.w-165,.width-165{width:165px!important;min-width:165px!important;max-width:165px!important}.h-170,.height-170{height:170px!important;min-height:170px!important;max-height:170px!important}.w-170,.width-170{width:170px!important;min-width:170px!important;max-width:170px!important}.h-175,.height-175{height:175px!important;min-height:175px!important;max-height:175px!important}.w-175,.width-175{width:175px!important;min-width:175px!important;max-width:175px!important}.h-180,.height-180{height:180px!important;min-height:180px!important;max-height:180px!important}.w-180,.width-180{width:180px!important;min-width:180px!important;max-width:180px!important}.h-185,.height-185{height:185px!important;min-height:185px!important;max-height:185px!important}.w-185,.width-185{width:185px!important;min-width:185px!important;max-width:185px!important}.h-190,.height-190{height:190px!important;min-height:190px!important;max-height:190px!important}.w-190,.width-190{width:190px!important;min-width:190px!important;max-width:190px!important}.h-195,.height-195{height:195px!important;min-height:195px!important;max-height:195px!important}.w-195,.width-195{width:195px!important;min-width:195px!important;max-width:195px!important}.h-200,.height-200{height:200px!important;min-height:200px!important;max-height:200px!important}.w-200,.width-200{width:200px!important;min-width:200px!important;max-width:200px!important}.h-205,.height-205{height:205px!important;min-height:205px!important;max-height:205px!important}.w-205,.width-205{width:205px!important;min-width:205px!important;max-width:205px!important}.h-210,.height-210{height:210px!important;min-height:210px!important;max-height:210px!important}.w-210,.width-210{width:210px!important;min-width:210px!important;max-width:210px!important}.h-215,.height-215{height:215px!important;min-height:215px!important;max-height:215px!important}.w-215,.width-215{width:215px!important;min-width:215px!important;max-width:215px!important}.h-220,.height-220{height:220px!important;min-height:220px!important;max-height:220px!important}.w-220,.width-220{width:220px!important;min-width:220px!important;max-width:220px!important}.h-225,.height-225{height:225px!important;min-height:225px!important;max-height:225px!important}.w-225,.width-225{width:225px!important;min-width:225px!important;max-width:225px!important}.h-230,.height-230{height:230px!important;min-height:230px!important;max-height:230px!important}.w-230,.width-230{width:230px!important;min-width:230px!important;max-width:230px!important}.h-235,.height-235{height:235px!important;min-height:235px!important;max-height:235px!important}.w-235,.width-235{width:235px!important;min-width:235px!important;max-width:235px!important}.h-240,.height-240{height:240px!important;min-height:240px!important;max-height:240px!important}.w-240,.width-240{width:240px!important;min-width:240px!important;max-width:240px!important}.h-245,.height-245{height:245px!important;min-height:245px!important;max-height:245px!important}.w-245,.width-245{width:245px!important;min-width:245px!important;max-width:245px!important}.h-250,.height-250{height:250px!important;min-height:250px!important;max-height:250px!important}.w-250,.width-250{width:250px!important;min-width:250px!important;max-width:250px!important}.h-255,.height-255{height:255px!important;min-height:255px!important;max-height:255px!important}.w-255,.width-255{width:255px!important;min-width:255px!important;max-width:255px!important}.h-260,.height-260{height:260px!important;min-height:260px!important;max-height:260px!important}.w-260,.width-260{width:260px!important;min-width:260px!important;max-width:260px!important}.h-265,.height-265{height:265px!important;min-height:265px!important;max-height:265px!important}.w-265,.width-265{width:265px!important;min-width:265px!important;max-width:265px!important}.h-270,.height-270{height:270px!important;min-height:270px!important;max-height:270px!important}.w-270,.width-270{width:270px!important;min-width:270px!important;max-width:270px!important}.h-275,.height-275{height:275px!important;min-height:275px!important;max-height:275px!important}.w-275,.width-275{width:275px!important;min-width:275px!important;max-width:275px!important}.h-280,.height-280{height:280px!important;min-height:280px!important;max-height:280px!important}.w-280,.width-280{width:280px!important;min-width:280px!important;max-width:280px!important}.h-285,.height-285{height:285px!important;min-height:285px!important;max-height:285px!important}.w-285,.width-285{width:285px!important;min-width:285px!important;max-width:285px!important}.h-290,.height-290{height:290px!important;min-height:290px!important;max-height:290px!important}.w-290,.width-290{width:290px!important;min-width:290px!important;max-width:290px!important}.h-295,.height-295{height:295px!important;min-height:295px!important;max-height:295px!important}.w-295,.width-295{width:295px!important;min-width:295px!important;max-width:295px!important}.h-300,.height-300{height:300px!important;min-height:300px!important;max-height:300px!important}.w-300,.width-300{width:300px!important;min-width:300px!important;max-width:300px!important}.h-305,.height-305{height:305px!important;min-height:305px!important;max-height:305px!important}.w-305,.width-305{width:305px!important;min-width:305px!important;max-width:305px!important}.h-310,.height-310{height:310px!important;min-height:310px!important;max-height:310px!important}.w-310,.width-310{width:310px!important;min-width:310px!important;max-width:310px!important}.h-315,.height-315{height:315px!important;min-height:315px!important;max-height:315px!important}.w-315,.width-315{width:315px!important;min-width:315px!important;max-width:315px!important}.h-320,.height-320{height:320px!important;min-height:320px!important;max-height:320px!important}.w-320,.width-320{width:320px!important;min-width:320px!important;max-width:320px!important}.h-325,.height-325{height:325px!important;min-height:325px!important;max-height:325px!important}.w-325,.width-325{width:325px!important;min-width:325px!important;max-width:325px!important}.h-330,.height-330{height:330px!important;min-height:330px!important;max-height:330px!important}.w-330,.width-330{width:330px!important;min-width:330px!important;max-width:330px!important}.h-335,.height-335{height:335px!important;min-height:335px!important;max-height:335px!important}.w-335,.width-335{width:335px!important;min-width:335px!important;max-width:335px!important}.h-340,.height-340{height:340px!important;min-height:340px!important;max-height:340px!important}.w-340,.width-340{width:340px!important;min-width:340px!important;max-width:340px!important}.h-345,.height-345{height:345px!important;min-height:345px!important;max-height:345px!important}.w-345,.width-345{width:345px!important;min-width:345px!important;max-width:345px!important}.h-350,.height-350{height:350px!important;min-height:350px!important;max-height:350px!important}.w-350,.width-350{width:350px!important;min-width:350px!important;max-width:350px!important}.h-355,.height-355{height:355px!important;min-height:355px!important;max-height:355px!important}.w-355,.width-355{width:355px!important;min-width:355px!important;max-width:355px!important}.h-360,.height-360{height:360px!important;min-height:360px!important;max-height:360px!important}.w-360,.width-360{width:360px!important;min-width:360px!important;max-width:360px!important}.h-365,.height-365{height:365px!important;min-height:365px!important;max-height:365px!important}.w-365,.width-365{width:365px!important;min-width:365px!important;max-width:365px!important}.h-370,.height-370{height:370px!important;min-height:370px!important;max-height:370px!important}.w-370,.width-370{width:370px!important;min-width:370px!important;max-width:370px!important}.h-375,.height-375{height:375px!important;min-height:375px!important;max-height:375px!important}.w-375,.width-375{width:375px!important;min-width:375px!important;max-width:375px!important}.h-380,.height-380{height:380px!important;min-height:380px!important;max-height:380px!important}.w-380,.width-380{width:380px!important;min-width:380px!important;max-width:380px!important}.h-385,.height-385{height:385px!important;min-height:385px!important;max-height:385px!important}.w-385,.width-385{width:385px!important;min-width:385px!important;max-width:385px!important}.h-390,.height-390{height:390px!important;min-height:390px!important;max-height:390px!important}.w-390,.width-390{width:390px!important;min-width:390px!important;max-width:390px!important}.h-395,.height-395{height:395px!important;min-height:395px!important;max-height:395px!important}.w-395,.width-395{width:395px!important;min-width:395px!important;max-width:395px!important}.h-400,.height-400{height:400px!important;min-height:400px!important;max-height:400px!important}.w-400,.width-400{width:400px!important;min-width:400px!important;max-width:400px!important}.h-405,.height-405{height:405px!important;min-height:405px!important;max-height:405px!important}.w-405,.width-405{width:405px!important;min-width:405px!important;max-width:405px!important}.h-410,.height-410{height:410px!important;min-height:410px!important;max-height:410px!important}.w-410,.width-410{width:410px!important;min-width:410px!important;max-width:410px!important}.h-415,.height-415{height:415px!important;min-height:415px!important;max-height:415px!important}.w-415,.width-415{width:415px!important;min-width:415px!important;max-width:415px!important}.h-420,.height-420{height:420px!important;min-height:420px!important;max-height:420px!important}.w-420,.width-420{width:420px!important;min-width:420px!important;max-width:420px!important}.h-425,.height-425{height:425px!important;min-height:425px!important;max-height:425px!important}.w-425,.width-425{width:425px!important;min-width:425px!important;max-width:425px!important}.h-430,.height-430{height:430px!important;min-height:430px!important;max-height:430px!important}.w-430,.width-430{width:430px!important;min-width:430px!important;max-width:430px!important}.h-435,.height-435{height:435px!important;min-height:435px!important;max-height:435px!important}.w-435,.width-435{width:435px!important;min-width:435px!important;max-width:435px!important}.h-440,.height-440{height:440px!important;min-height:440px!important;max-height:440px!important}.w-440,.width-440{width:440px!important;min-width:440px!important;max-width:440px!important}.h-445,.height-445{height:445px!important;min-height:445px!important;max-height:445px!important}.w-445,.width-445{width:445px!important;min-width:445px!important;max-width:445px!important}.h-450,.height-450{height:450px!important;min-height:450px!important;max-height:450px!important}.w-450,.width-450{width:450px!important;min-width:450px!important;max-width:450px!important}.h-455,.height-455{height:455px!important;min-height:455px!important;max-height:455px!important}.w-455,.width-455{width:455px!important;min-width:455px!important;max-width:455px!important}.h-460,.height-460{height:460px!important;min-height:460px!important;max-height:460px!important}.w-460,.width-460{width:460px!important;min-width:460px!important;max-width:460px!important}.h-465,.height-465{height:465px!important;min-height:465px!important;max-height:465px!important}.w-465,.width-465{width:465px!important;min-width:465px!important;max-width:465px!important}.h-470,.height-470{height:470px!important;min-height:470px!important;max-height:470px!important}.w-470,.width-470{width:470px!important;min-width:470px!important;max-width:470px!important}.h-475,.height-475{height:475px!important;min-height:475px!important;max-height:475px!important}.w-475,.width-475{width:475px!important;min-width:475px!important;max-width:475px!important}.h-480,.height-480{height:480px!important;min-height:480px!important;max-height:480px!important}.w-480,.width-480{width:480px!important;min-width:480px!important;max-width:480px!important}.h-485,.height-485{height:485px!important;min-height:485px!important;max-height:485px!important}.w-485,.width-485{width:485px!important;min-width:485px!important;max-width:485px!important}.h-490,.height-490{height:490px!important;min-height:490px!important;max-height:490px!important}.w-490,.width-490{width:490px!important;min-width:490px!important;max-width:490px!important}.h-495,.height-495{height:495px!important;min-height:495px!important;max-height:495px!important}.w-495,.width-495{width:495px!important;min-width:495px!important;max-width:495px!important}.h-500,.height-500{height:500px!important;min-height:500px!important;max-height:500px!important}.w-500,.width-500{width:500px!important;min-width:500px!important;max-width:500px!important}.h-8,.height-8{height:8px!important;min-height:8px!important;max-height:8px!important}.w-8,.width-8{width:8px!important;min-width:8px!important;max-width:8px!important}.h-16,.height-16{height:16px!important;min-height:16px!important;max-height:16px!important}.w-16,.width-16{width:16px!important;min-width:16px!important;max-width:16px!important}.h-24,.height-24{height:24px!important;min-height:24px!important;max-height:24px!important}.w-24,.width-24{width:24px!important;min-width:24px!important;max-width:24px!important}.h-32,.height-32{height:32px!important;min-height:32px!important;max-height:32px!important}.w-32,.width-32{width:32px!important;min-width:32px!important;max-width:32px!important}.h-48,.height-48{height:48px!important;min-height:48px!important;max-height:48px!important}.w-48,.width-48{width:48px!important;min-width:48px!important;max-width:48px!important}.h-56,.height-56{height:56px!important;min-height:56px!important;max-height:56px!important}.w-56,.width-56{width:56px!important;min-width:56px!important;max-width:56px!important}.h-64,.height-64{height:64px!important;min-height:64px!important;max-height:64px!important}.w-64,.width-64{width:64px!important;min-width:64px!important;max-width:64px!important}.h-72,.height-72{height:72px!important;min-height:72px!important;max-height:72px!important}.w-72,.width-72{width:72px!important;min-width:72px!important;max-width:72px!important}.h-88,.height-88{height:88px!important;min-height:88px!important;max-height:88px!important}.w-88,.width-88{width:88px!important;min-width:88px!important;max-width:88px!important}.h-96,.height-96{height:96px!important;min-height:96px!important;max-height:96px!important}.w-96,.width-96{width:96px!important;min-width:96px!important;max-width:96px!important}.h-104,.height-104{height:104px!important;min-height:104px!important;max-height:104px!important}.w-104,.width-104{width:104px!important;min-width:104px!important;max-width:104px!important}.h-112,.height-112{height:112px!important;min-height:112px!important;max-height:112px!important}.w-112,.width-112{width:112px!important;min-width:112px!important;max-width:112px!important}.h-128,.height-128{height:128px!important;min-height:128px!important;max-height:128px!important}.w-128,.width-128{width:128px!important;min-width:128px!important;max-width:128px!important}.h-136,.height-136{height:136px!important;min-height:136px!important;max-height:136px!important}.w-136,.width-136{width:136px!important;min-width:136px!important;max-width:136px!important}.h-144,.height-144{height:144px!important;min-height:144px!important;max-height:144px!important}.w-144,.width-144{width:144px!important;min-width:144px!important;max-width:144px!important}.h-152,.height-152{height:152px!important;min-height:152px!important;max-height:152px!important}.w-152,.width-152{width:152px!important;min-width:152px!important;max-width:152px!important}.h-168,.height-168{height:168px!important;min-height:168px!important;max-height:168px!important}.w-168,.width-168{width:168px!important;min-width:168px!important;max-width:168px!important}.h-176,.height-176{height:176px!important;min-height:176px!important;max-height:176px!important}.w-176,.width-176{width:176px!important;min-width:176px!important;max-width:176px!important}.h-184,.height-184{height:184px!important;min-height:184px!important;max-height:184px!important}.w-184,.width-184{width:184px!important;min-width:184px!important;max-width:184px!important}.h-192,.height-192{height:192px!important;min-height:192px!important;max-height:192px!important}.w-192,.width-192{width:192px!important;min-width:192px!important;max-width:192px!important}.h-208,.height-208{height:208px!important;min-height:208px!important;max-height:208px!important}.w-208,.width-208{width:208px!important;min-width:208px!important;max-width:208px!important}.h-216,.height-216{height:216px!important;min-height:216px!important;max-height:216px!important}.w-216,.width-216{width:216px!important;min-width:216px!important;max-width:216px!important}.h-224,.height-224{height:224px!important;min-height:224px!important;max-height:224px!important}.w-224,.width-224{width:224px!important;min-width:224px!important;max-width:224px!important}.h-232,.height-232{height:232px!important;min-height:232px!important;max-height:232px!important}.w-232,.width-232{width:232px!important;min-width:232px!important;max-width:232px!important}.h-248,.height-248{height:248px!important;min-height:248px!important;max-height:248px!important}.w-248,.width-248{width:248px!important;min-width:248px!important;max-width:248px!important}.h-256,.height-256{height:256px!important;min-height:256px!important;max-height:256px!important}.w-256,.width-256{width:256px!important;min-width:256px!important;max-width:256px!important}.h-264,.height-264{height:264px!important;min-height:264px!important;max-height:264px!important}.w-264,.width-264{width:264px!important;min-width:264px!important;max-width:264px!important}.h-272,.height-272{height:272px!important;min-height:272px!important;max-height:272px!important}.w-272,.width-272{width:272px!important;min-width:272px!important;max-width:272px!important}.h-288,.height-288{height:288px!important;min-height:288px!important;max-height:288px!important}.w-288,.width-288{width:288px!important;min-width:288px!important;max-width:288px!important}.h-296,.height-296{height:296px!important;min-height:296px!important;max-height:296px!important}.w-296,.width-296{width:296px!important;min-width:296px!important;max-width:296px!important}.h-304,.height-304{height:304px!important;min-height:304px!important;max-height:304px!important}.w-304,.width-304{width:304px!important;min-width:304px!important;max-width:304px!important}.h-312,.height-312{height:312px!important;min-height:312px!important;max-height:312px!important}.w-312,.width-312{width:312px!important;min-width:312px!important;max-width:312px!important}.h-328,.height-328{height:328px!important;min-height:328px!important;max-height:328px!important}.w-328,.width-328{width:328px!important;min-width:328px!important;max-width:328px!important}.h-336,.height-336{height:336px!important;min-height:336px!important;max-height:336px!important}.w-336,.width-336{width:336px!important;min-width:336px!important;max-width:336px!important}.h-344,.height-344{height:344px!important;min-height:344px!important;max-height:344px!important}.w-344,.width-344{width:344px!important;min-width:344px!important;max-width:344px!important}.h-352,.height-352{height:352px!important;min-height:352px!important;max-height:352px!important}.w-352,.width-352{width:352px!important;min-width:352px!important;max-width:352px!important}.h-368,.height-368{height:368px!important;min-height:368px!important;max-height:368px!important}.w-368,.width-368{width:368px!important;min-width:368px!important;max-width:368px!important}.h-376,.height-376{height:376px!important;min-height:376px!important;max-height:376px!important}.w-376,.width-376{width:376px!important;min-width:376px!important;max-width:376px!important}.h-384,.height-384{height:384px!important;min-height:384px!important;max-height:384px!important}.w-384,.width-384{width:384px!important;min-width:384px!important;max-width:384px!important}.h-392,.height-392{height:392px!important;min-height:392px!important;max-height:392px!important}.w-392,.width-392{width:392px!important;min-width:392px!important;max-width:392px!important}.h-408,.height-408{height:408px!important;min-height:408px!important;max-height:408px!important}.w-408,.width-408{width:408px!important;min-width:408px!important;max-width:408px!important}.h-416,.height-416{height:416px!important;min-height:416px!important;max-height:416px!important}.w-416,.width-416{width:416px!important;min-width:416px!important;max-width:416px!important}.h-424,.height-424{height:424px!important;min-height:424px!important;max-height:424px!important}.w-424,.width-424{width:424px!important;min-width:424px!important;max-width:424px!important}.h-432,.height-432{height:432px!important;min-height:432px!important;max-height:432px!important}.w-432,.width-432{width:432px!important;min-width:432px!important;max-width:432px!important}.h-448,.height-448{height:448px!important;min-height:448px!important;max-height:448px!important}.w-448,.width-448{width:448px!important;min-width:448px!important;max-width:448px!important}.h-456,.height-456{height:456px!important;min-height:456px!important;max-height:456px!important}.w-456,.width-456{width:456px!important;min-width:456px!important;max-width:456px!important}.h-464,.height-464{height:464px!important;min-height:464px!important;max-height:464px!important}.w-464,.width-464{width:464px!important;min-width:464px!important;max-width:464px!important}.h-472,.height-472{height:472px!important;min-height:472px!important;max-height:472px!important}.w-472,.width-472{width:472px!important;min-width:472px!important;max-width:472px!important}.h-488,.height-488{height:488px!important;min-height:488px!important;max-height:488px!important}.w-488,.width-488{width:488px!important;min-width:488px!important;max-width:488px!important}.h-496,.height-496{height:496px!important;min-height:496px!important;max-height:496px!important}.w-496,.width-496{width:496px!important;min-width:496px!important;max-width:496px!important}.h-504,.height-504{height:504px!important;min-height:504px!important;max-height:504px!important}.w-504,.width-504{width:504px!important;min-width:504px!important;max-width:504px!important}.h-512,.height-512{height:512px!important;min-height:512px!important;max-height:512px!important}.w-512,.width-512{width:512px!important;min-width:512px!important;max-width:512px!important}.h-528,.height-528{height:528px!important;min-height:528px!important;max-height:528px!important}.w-528,.width-528{width:528px!important;min-width:528px!important;max-width:528px!important}.h-536,.height-536{height:536px!important;min-height:536px!important;max-height:536px!important}.w-536,.width-536{width:536px!important;min-width:536px!important;max-width:536px!important}.h-544,.height-544{height:544px!important;min-height:544px!important;max-height:544px!important}.w-544,.width-544{width:544px!important;min-width:544px!important;max-width:544px!important}.h-552,.height-552{height:552px!important;min-height:552px!important;max-height:552px!important}.w-552,.width-552{width:552px!important;min-width:552px!important;max-width:552px!important}.h-568,.height-568{height:568px!important;min-height:568px!important;max-height:568px!important}.w-568,.width-568{width:568px!important;min-width:568px!important;max-width:568px!important}.h-576,.height-576{height:576px!important;min-height:576px!important;max-height:576px!important}.w-576,.width-576{width:576px!important;min-width:576px!important;max-width:576px!important}.h-584,.height-584{height:584px!important;min-height:584px!important;max-height:584px!important}.w-584,.width-584{width:584px!important;min-width:584px!important;max-width:584px!important}.h-592,.height-592{height:592px!important;min-height:592px!important;max-height:592px!important}.w-592,.width-592{width:592px!important;min-width:592px!important;max-width:592px!important}.h-608,.height-608{height:608px!important;min-height:608px!important;max-height:608px!important}.w-608,.width-608{width:608px!important;min-width:608px!important;max-width:608px!important}.h-616,.height-616{height:616px!important;min-height:616px!important;max-height:616px!important}.w-616,.width-616{width:616px!important;min-width:616px!important;max-width:616px!important}.h-624,.height-624{height:624px!important;min-height:624px!important;max-height:624px!important}.w-624,.width-624{width:624px!important;min-width:624px!important;max-width:624px!important}.h-632,.height-632{height:632px!important;min-height:632px!important;max-height:632px!important}.w-632,.width-632{width:632px!important;min-width:632px!important;max-width:632px!important}.h-648,.height-648{height:648px!important;min-height:648px!important;max-height:648px!important}.w-648,.width-648{width:648px!important;min-width:648px!important;max-width:648px!important}.h-656,.height-656{height:656px!important;min-height:656px!important;max-height:656px!important}.w-656,.width-656{width:656px!important;min-width:656px!important;max-width:656px!important}.h-664,.height-664{height:664px!important;min-height:664px!important;max-height:664px!important}.w-664,.width-664{width:664px!important;min-width:664px!important;max-width:664px!important}.h-672,.height-672{height:672px!important;min-height:672px!important;max-height:672px!important}.w-672,.width-672{width:672px!important;min-width:672px!important;max-width:672px!important}.h-688,.height-688{height:688px!important;min-height:688px!important;max-height:688px!important}.w-688,.width-688{width:688px!important;min-width:688px!important;max-width:688px!important}.h-696,.height-696{height:696px!important;min-height:696px!important;max-height:696px!important}.w-696,.width-696{width:696px!important;min-width:696px!important;max-width:696px!important}.h-704,.height-704{height:704px!important;min-height:704px!important;max-height:704px!important}.w-704,.width-704{width:704px!important;min-width:704px!important;max-width:704px!important}.h-712,.height-712{height:712px!important;min-height:712px!important;max-height:712px!important}.w-712,.width-712{width:712px!important;min-width:712px!important;max-width:712px!important}.h-728,.height-728{height:728px!important;min-height:728px!important;max-height:728px!important}.w-728,.width-728{width:728px!important;min-width:728px!important;max-width:728px!important}.h-736,.height-736{height:736px!important;min-height:736px!important;max-height:736px!important}.w-736,.width-736{width:736px!important;min-width:736px!important;max-width:736px!important}.h-744,.height-744{height:744px!important;min-height:744px!important;max-height:744px!important}.w-744,.width-744{width:744px!important;min-width:744px!important;max-width:744px!important}.h-752,.height-752{height:752px!important;min-height:752px!important;max-height:752px!important}.w-752,.width-752{width:752px!important;min-width:752px!important;max-width:752px!important}.h-768,.height-768{height:768px!important;min-height:768px!important;max-height:768px!important}.w-768,.width-768{width:768px!important;min-width:768px!important;max-width:768px!important}.h-776,.height-776{height:776px!important;min-height:776px!important;max-height:776px!important}.w-776,.width-776{width:776px!important;min-width:776px!important;max-width:776px!important}.h-784,.height-784{height:784px!important;min-height:784px!important;max-height:784px!important}.w-784,.width-784{width:784px!important;min-width:784px!important;max-width:784px!important}.h-792,.height-792{height:792px!important;min-height:792px!important;max-height:792px!important}.w-792,.width-792{width:792px!important;min-width:792px!important;max-width:792px!important}.b,.border{border:1px solid rgba(0,0,0,.12)}.border-top,.bt{border-top:1px solid rgba(0,0,0,.12)}.border-right,.br{border-right:1px solid rgba(0,0,0,.12)}.bb,.border-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.bl,.border-left{border-left:1px solid rgba(0,0,0,.12)}.bh,.border-horizontal{border-left:1px solid rgba(0,0,0,.12);border-right:1px solid rgba(0,0,0,.12)}.border-vertical,.bv{border-top:1px solid rgba(0,0,0,.12);border-bottom:1px solid rgba(0,0,0,.12)}.brad-1{border-radius:1px}.brad-2{border-radius:2px}.brad-3{border-radius:3px}.brad-4{border-radius:4px}.brad-5{border-radius:5px}.brad-6{border-radius:6px}.brad-7{border-radius:7px}.brad-8{border-radius:8px}.brad-9{border-radius:9px}.brad-10{border-radius:10px}.brad-11{border-radius:11px}.brad-12{border-radius:12px}@media all{.page-break{display:none}}@media print{.page-break{display:block;break-after:always;page-break-after:always}#main #vertical-navigation{display:none}#main #toolbar{display:none}#main #quick-panel{display:none}#main #content{position:relative!important;top:0!important;right:0!important;bottom:0!important;left:0!important;background:0 0!important}ms-theme-options{display:none}.ps-scrollbar-x-rail,.ps-scrollbar-y-rail{display:none!important}.printable{overflow:visible!important}.printable .template-layout{display:inline!important}}.advanced-search-container{border-bottom:1px rgba(0,0,0,.12) solid}.advanced-search-conditions{border-bottom:1px rgba(0,0,0,.12) solid;padding:4px 0}.advanced-search-conditions .errors{font-size:12px;color:#dd2c00;margin-top:10px}.advanced-search-conditions .advanced-search-chips md-chips-wrap{box-shadow:none}.advanced-search-conditions .advanced-search-chips md-chip{position:relative}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-content md-chip-template span p.filter-text{display:inline-block;margin:0}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container{position:absolute;right:4px;top:4px;margin-right:0;height:24px}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter{position:relative;height:24px;width:24px;line-height:30px;text-align:center;border-radius:50%;border:none;box-shadow:none;padding:0;margin:0;transition:background .15s linear;display:block}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon{position:absolute;top:50%;left:50%;transform:translate3d(-50%,-50%,0);color:#616161}.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:focus,.advanced-search-conditions .advanced-search-chips md-chip .md-chip-remove-container button.remove-filter md-icon:hover{color:rgba(255,0,0,.8)}.advanced-search-conditions .advanced-search-chips md-chips-wrap.md-removable md-chip md-chip-template{padding-right:5px}.advanced-search-bar{padding:10px 0}.advanced-search-bar md-input-container.no-errors{font-size:12px;transition:0s none;-webkit-transition:0s none;animation:0s none;-webkit-animation:0s none}.advanced-search-bar md-input-container.no-errors input{font-family:Arial Unicode MS,Arial,Helvetica}.advanced-search-bar md-input-container.no-errors .md-errors-spacer{min-height:0}md-option div div.operators-list{display:table}md-option div div.operators-list span{display:table-cell}md-option div div.operators-list span.operator-symbol{display:table-cell;font-size:14px;width:30px}.advanced-search-bar mdp-date-picker button{margin:0!important}.advanced-search-bar mdp-date-picker md-input-container{flex:1;margin:0}.advanced-search-bar mdp-date-picker md-input-container label{font-size:12px}.advanced-search-bar mdp-date-picker md-input-container .md-errors-spacer{min-height:0}.advanced-search-bar div md-date-range{font-size:12px;margin-left:10px}.advanced-search-bar div.autocomplete-input md-icon{margin:8px 8px 8px 0}.advanced-search-bar div.autocomplete-input md-autocomplete{font-size:12px!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap{height:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container{margin:0}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container input[type=search]{padding:0!important}.advanced-search-bar div.autocomplete-input md-autocomplete md-autocomplete-wrap md-input-container div.md-errors-spacer{min-height:0}md-toolbar.advanced-search-dialog-header{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}.md-autocomplete-suggestions-container li .highlight,.md-autocomplete-suggestions-container.md-default-theme li .highlight{color:#ca1d1d;font-weight:700}.chip-disabled{opacity:.4}.ms-card{display:flex;flex-direction:row;padding:8px}.ms-card .ms-card-content-wrapper{position:relative;overflow:hidden;width:100%;max-width:400px;border-radius:2px;background:#fff;box-shadow:0 3px 1px -2px rgba(0,0,0,.14),0 2px 2px 0 rgba(0,0,0,.098),0 1px 5px 0 rgba(0,0,0,.084)}.ms-card .template-1 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-10 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-2 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-2 .media .image{width:100%}.ms-card .template-4 .info{position:absolute;right:0;bottom:0;left:0;z-index:2;background:rgba(0,0,0,.54)}.ms-card .template-4 .media{z-index:1}.ms-card .template-4 .media .image{width:100%}.ms-card .template-5 .media{width:80px;min-width:80px;max-width:80px}.ms-card .template-5 .info,.ms-card .template-5 .media{-ms-flex:0 1 auto}.ms-card .template-8 .media .image{width:100%;border-radius:2px 2px 0 0}.ms-card .template-9 .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}.ms-card .template-9 .media .image{width:100%}md-tooltip.client-side-logging-tooltip div.md-content{height:auto;max-width:200px;white-space:normal;text-align:center}md-list-item .md-list-item-text p.ms-dual-multiselect-line-xs{font-size:10px!important;padding-top:5px}md-list-item md-icon.hidden{visibility:hidden}md-icon.add-disabled{cursor:default!important;opacity:.4}md-list-item.read-only-mode{cursor:none!important}.ms-form-wizard{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:72px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item{opacity:1!important;padding:24px}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:before{content:'';display:block;position:absolute;top:50%;left:0;right:50%;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:after{content:'';display:block;position:absolute;top:50%;left:50%;right:0;border-bottom:1px solid rgba(0,0,0,.12);z-index:8}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:first-of-type:before{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item:last-of-type:after{display:none}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item.md-disabled .ms-form-wizard-step-label .ms-form-wizard-step-number{background:rgba(0,0,0,.12)!important}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-pagination-wrapper md-tab-item .md-ripple-container{z-index:11}.ms-form-wizard md-tabs md-tabs-wrapper md-tabs-canvas md-ink-bar{display:none!important}.ms-form-wizard .ms-form-wizard-step-label{display:inline-block;position:relative;background:#fff;z-index:10;padding:0 16px;line-height:24px}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number{display:inline-block;vertical-align:middle;width:24px;height:24px;line-height:24px;font-size:14px;margin-right:12px;border-radius:50%;color:#fff!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-number i{line-height:24px!important}.ms-form-wizard .ms-form-wizard-step-label .ms-form-wizard-step-text{display:inline-block;vertical-align:middle;position:relative;line-height:24px}.ms-form-wizard .ms-form-wizard-form{padding:24px 16px}.ms-form-wizard .navigation{padding:16px}.ms-form-wizard .navigation .steps{display:flex;align-items:center;justify-content:center;padding:0 16px}.ms-form-wizard .navigation .steps span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-form-wizard .navigation .steps span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-form-wizard .navigation .steps span.selected{width:8px;height:8px}ms-info-bar{display:block;position:relative;width:100%;height:44px;background-color:#e91e63;z-index:99998;box-shadow:0 1px 5px 0 rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 3px 1px -2px rgba(0,0,0,.12)}ms-info-bar #ms-info-bar-message{padding:8px 16px;line-height:28px;font-size:14px}ms-info-bar #ms-info-bar-message a{overflow:hidden;height:48px;color:#fff}ms-masonry{width:100%;display:block}ms-masonry [ms-masonry-item],ms-masonry ms-masonry-item{transition:transform .3s ease;position:absolute;transform:translate3d(50vw,100vh,0)}ms-material-color-picker md-menu .md-button{font-size:12px}md-menu-content.ms-material-color-picker-menu-content{width:208px;max-width:208px;min-width:208px;padding:0;overflow:hidden}md-menu-content.ms-material-color-picker-menu-content header{height:48px;text-transform:uppercase}md-menu-content.ms-material-color-picker-menu-content header .md-button{display:flex;margin:0}md-menu-content.ms-material-color-picker-menu-content header>span{line-height:13px}md-menu-content.ms-material-color-picker-menu-content .colors{position:relative;width:208px;min-height:258px;height:258px;padding:4px}md-menu-content.ms-material-color-picker-menu-content .colors .color{position:relative;width:46px;height:46px;margin:2px;border-radius:0;cursor:pointer}md-menu-content.ms-material-color-picker-menu-content .colors .color .label{padding:2px;font-size:10px}md-menu-content.ms-material-color-picker-menu-content .colors .color .icon-check{position:absolute;top:2px;right:2px;font-size:16px;opacity:.7}ms-nav{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none;z-index:70}ms-nav ms-nav-item{display:block;position:relative;line-height:48px}ms-nav ms-nav-item.ms-nav-title{line-height:32px;font-size:12px;font-weight:500;margin-top:8px;padding:0 24px;width:100%;color:rgba(255,255,255,.3);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}ms-nav ms-nav-item .ms-nav-button{display:flex;align-self:flex-start;align-items:center;position:relative;cursor:pointer;padding:0 48px 0 24px;color:rgba(255,255,255,.7);text-decoration:none}ms-nav ms-nav-item .ms-nav-button:not(.active):hover{background:rgba(0,0,0,.1);text-decoration:none}ms-nav ms-nav-item .ms-nav-button .ms-nav-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .arrow{position:absolute;top:16px;right:24px;margin:0;transition:transform .3s ease-in-out,opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button .ms-nav-badge{position:absolute;top:50%;right:24px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}ms-nav ms-nav-item .ms-nav-button.active{color:#fff!important}ms-nav ms-nav-item .ms-nav-button.active .ms-nav-badge{background:#fff!important;color:rgba(0,0,0,.87)!important}ms-nav ms-nav-item .ms-nav-button.active i{color:#fff}ms-nav ms-nav-item i{color:rgba(255,255,255,.7);margin:0 16px 0 0}ms-nav .ms-nav-toggle ms-nav-toggle-items{display:none;overflow:hidden}ms-nav .ms-nav-toggle ms-nav-toggle-items.expand-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items.collapse-animation{transition:height .35s cubic-bezier(.25,.46,.45,.94)}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:58px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:68px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:78px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:88px}ms-nav .ms-nav-toggle ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item ms-nav-toggle-items ms-nav-item .ms-nav-button{padding-left:98px}ms-nav .ms-nav-toggle.active>.ms-nav-button{color:#fff}ms-nav .ms-nav-toggle.active>.ms-nav-button a,ms-nav .ms-nav-toggle.active>.ms-nav-button md-icon{color:#fff}ms-nav .ms-nav-toggle[collapsed=false]>.ms-nav-button>.arrow{transform:rotate(90deg)}ms-nav>.ms-nav-toggle[collapsed=false]{background-color:rgba(0,0,0,.12)}@media only screen and (min-width:1280px){.ms-nav-folded #ms-nav-fold-close-overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:0 0;z-index:998}.ms-nav-folded #ms-nav-fold-open-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title{height:32px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title:before{content:'';display:block;position:relative;top:12px;width:16px;border-top:1px solid rgba(255,255,255,.12)}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item.ms-nav-title span{display:none}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button{height:48px}.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.arrow,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-badge,.ms-nav-folded:not(.ms-nav-folded-open) ms-nav ms-nav-item .ms-nav-button>.ms-nav-label{opacity:0;visibility:hidden}}.ms-navigation{display:block;position:relative;color:rgba(255,255,255,.7);user-select:none}.ms-navigation li,.ms-navigation ul{padding:0;margin:0}.ms-navigation ul{display:block;overflow:hidden}.ms-navigation ul li{position:relative}.ms-navigation ul li.collapsed ul{display:none}.ms-navigation .animate-height{transition:height .25s cubic-bezier(.25,.46,.45,.94)}.ms-navigation .ms-navigation-node .ms-navigation-item{display:block;position:relative;cursor:pointer;color:rgba(255,255,255,.7)}.ms-navigation .ms-navigation-node .ms-navigation-item:hover{background:rgba(0,0,0,.1)}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button{display:flex;position:relative;width:100%;height:48px;line-height:48px;flex-direction:row;justify-content:flex-start;align-items:center;padding-right:16px;color:rgba(255,255,255,.7);text-decoration:none;white-space:nowrap;overflow:hidden}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .icon{color:rgba(255,255,255,.7);margin:0 16px 0 0}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button span{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button a{white-space:nowrap;overflow:hidden;opacity:1;transition:opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .arrow{margin:0;opacity:1;transition:transform .3s ease-in-out,opacity .25s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button .badge{position:absolute;top:50%;right:16px;min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transform:translateY(-50%);transition:opacity .2s ease-in-out .1s}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .icon{color:#fff}.ms-navigation .ms-navigation-node .ms-navigation-item>.ms-navigation-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}.ms-navigation .ms-navigation-node:not(.collapsed)>.ms-navigation-item>.ms-navigation-button .arrow{transform:rotate(90deg)}.ms-navigation .ms-navigation-node.group>.ms-navigation-item{font-size:12px;font-weight:500;margin-top:8px;cursor:auto;background:0 0!important;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ms-navigation .ms-navigation-node.group>.ms-navigation-item>.ms-navigation-button{height:32px;line-height:32px;color:rgba(255,255,255,.3)}.ms-navigation .ms-navigation-node:not(.group).has-children:not(.collapsed){background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children.collapsing{background-color:rgba(0,0,0,.12)}.ms-navigation .ms-navigation-node:not(.group).has-children .has-children:not(.collapsed){background:0 0}.ms-navigation li .ms-navigation-button{padding-left:24px}.ms-navigation li li .ms-navigation-button{padding-left:56px}.ms-navigation li li li .ms-navigation-button{padding-left:72px}.ms-navigation li li li li .ms-navigation-button{padding-left:88px}.ms-navigation li li li li li .ms-navigation-button{padding-left:104px}.ms-navigation li.group .ms-navigation-button{padding-left:24px}.ms-navigation li.group li .ms-navigation-button{padding-left:24px}.ms-navigation li.group li li .ms-navigation-button{padding-left:56px}.ms-navigation li.group li li li .ms-navigation-button{padding-left:72px}.ms-navigation li.group li li li li .ms-navigation-button{padding-left:88px}#horizontal-navigation{height:64px;min-height:64px;max-height:64px;background:#fff;z-index:54}#horizontal-navigation .ms-navigation-horizontal{display:flex;position:relative;user-select:none}#horizontal-navigation .ms-navigation-horizontal li,#horizontal-navigation .ms-navigation-horizontal ul{padding:0;margin:0;list-style:none}#horizontal-navigation .ms-navigation-horizontal .horizontal{display:flex;flex:1}#horizontal-navigation .ms-navigation-horizontal .horizontal li{position:relative;cursor:pointer}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:block;float:left;padding:12px 14px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button.active{background:0 0;border-bottom:2px solid}#horizontal-navigation .ms-navigation-horizontal .horizontal>li:last-child{margin-right:0}#horizontal-navigation .ms-navigation-horizontal .horizontal>li li .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active{color:#fff!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{display:none;position:absolute;background:#fff;z-index:999;min-width:200px;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);top:0;left:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal>.has-children>ul{top:100%;left:0}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button{display:flex;align-items:center;width:100%;color:rgba(0,0,0,.87);white-space:nowrap;padding:14px 16px;text-decoration:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .icon{color:rgba(0,0,0,.54);margin-right:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button .arrow{margin-left:8px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .badge{background:#fff!important;color:rgba(0,0,0,.87)!important}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item .ms-navigation-horizontal-button.active .icon{color:#fff}@media only screen and (min-width:960px){body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .animate-height{transition:none}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .icon{margin:0}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .arrow,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .badge,body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node .ms-navigation-item .ms-navigation-button .title{opacity:0;visibility:hidden}body.ms-navigation-folded:not(.ms-navigation-folded-open) .ms-navigation .ms-navigation-node.group>.ms-navigation-item .ms-navigation-button:before{content:'';display:block;position:relative;width:16px;border-top:1px solid rgba(255,255,255,.12)}body.ms-navigation-folded:not(.ms-navigation-folded-open) #ms-navigation-fold-expander{position:absolute;top:0;right:0;bottom:0;left:0;z-index:999}body.ms-navigation-folded #ms-navigation-fold-collapser{position:absolute;top:0;right:0;bottom:0;left:0;z-index:59}}@media only screen and (max-width:960px){body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle{height:64px;margin-right:16px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .navigation-toggle .md-button{margin:0;width:64px;height:64px}body.ms-navigation-horizontal-mobile-menu-active #horizontal-navigation .ms-navigation-horizontal{display:block!important;background:#fff}#horizontal-navigation{z-index:60}#horizontal-navigation .ms-navigation-horizontal{position:absolute;display:none;top:0;right:0;bottom:0;left:0;padding:0 0 16px 0;z-index:9998;overflow-x:hidden;overflow-y:scroll}#horizontal-navigation .ms-navigation-horizontal .horizontal{flex-direction:column;min-height:100%;width:100%}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active):hover{background:0 0}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item{margin:4px}#horizontal-navigation .ms-navigation-horizontal .horizontal li:not(.active) .ms-navigation-horizontal-item:hover{background:rgba(0,0,0,.12)}#horizontal-navigation .ms-navigation-horizontal .horizontal>li{padding:0 12px}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button{display:flex;float:none}#horizontal-navigation .ms-navigation-horizontal .horizontal>li>.ms-navigation-horizontal-item>.ms-navigation-horizontal-button .arrow{display:block}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children ul{position:relative;top:0;left:0;box-shadow:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children:hover>ul{display:none}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded>.ms-navigation-horizontal-button .arrow{transform:rotate(90deg)}#horizontal-navigation .ms-navigation-horizontal .horizontal .has-children .expanded+ul{display:block;margin-left:16px}#horizontal-navigation .ms-navigation-horizontal .horizontal .ms-navigation-horizontal-item{min-height:48px;height:48px}}md-dialog.md-phonebar-dialog{max-width:720px;width:720px}md-dialog.md-phonebar-dialog md-dialog-content{display:block;position:relative;height:500px}md-dialog.md-phonebar-dialog md-toolbar .title{font-size:17px}md-dialog.md-phonebar-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.md-phonebar-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.md-phonebar-dialog md-tabs{position:static}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}.ms-phonebar{height:64px;font-size:13px}.ms-phonebar .phonebar-container{height:64px;padding:0}.ms-phonebar .phonebar-container .quantity-indicator{display:inline-block;vertical-align:middle;width:8px;height:8px;border-radius:4px;margin-right:5px;margin-left:5px}.ms-phonebar .phonebar-container .sessions{overflow-x:auto}.ms-phonebar .phonebar-container .session{border-radius:3px;border:1px solid #dcdcdc;margin-left:3px;cursor:pointer}.ms-phonebar .phonebar-container .session-info{padding-left:3px;padding-right:3px;color:grey}.ms-phonebar .phonebar-container .session-button{border:1px solid grey;margin:3px}.ms-phonebar .phonebar-container .button-bar{border:1px solid grey}.ms-phonebar .phonebar-container .num-pad{position:fixed;border-radius:3px;border:1px solid #9e9e9e;top:80px;left:80px}.ms-phonebar .phonebar-container .num-pad-logo{height:40px;width:42px}.ms-phonebar .phonebar-container p{margin:0;padding:0 0 10px 0;line-height:10px;font-size:10px}.ms-phonebar .phonebar-container .span4{width:50px;float:left;margin:8px}.ms-phonebar .phonebar-container .num{border:1px solid #9e9e9e;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;height:50px;background-color:#fff;color:#333;cursor:pointer}.ms-phonebar .phonebar-container .num:hover{background-color:#9e9e9e;color:#fff;transition-property:background-color .2s linear 0s;-moz-transition:background-color .2s linear 0s;-webkit-transition:background-color .2s linear 0s;-o-transition:background-color .2s linear 0s}.ms-phonebar .phonebar-container .txt{font-size:20px;text-align:center;margin-top:3px;font-family:Lato,sans-serif;color:#333}.ms-phonebar .phonebar-container .small{font-size:15px}.ms-phonebar .phonebar-container .angucomplete-dropdown{top:45px;overflow-y:auto;max-height:200px}.ms-phonebar .phonebar-container .highlight{color:red}.ms-phonebar .phonebar-container .input-number{margin-left:5px;padding:8px;border:1px solid #ccc;border-radius:3px;box-sizing:border-box}.ms-phonebar .phonebar-container .phonebar{position:relative}.ms-phonebar .phonebar-container .phonebar>div{height:64px;min-width:44px}.ms-phonebar .phonebar-container .phonebar>div.dragging{cursor:grabbing}.ms-phonebar .phonebar-container .phonebar>div.dragging .md-ripple-container{display:none}.ms-phonebar .phonebar-container .phonebar>div.ghost .shortcut{opacity:.27}.ms-phonebar .phonebar-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-phonebar .phonebar-container.mobile-bar-active .phonebar,.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-phonebar .phonebar-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-phonebar .phonebar-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}.quick-filter-container md-select .md-select-value.md-select-placeholder{color:inherit}.quick-filter-container md-select[multiple] md-select-value>:first-child{max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}.ms-responsive-table-wrapper{overflow-x:auto;overflow-y:hidden}.ms-search-bar{height:64px;font-size:13px}.ms-search-bar .ms-search-bar-collapser,.ms-search-bar .ms-search-bar-expander{cursor:pointer;padding:0 20px;margin:0;width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-bar-loader{width:64px!important;height:64px!important;line-height:64px!important}.ms-search-bar .ms-search-button-expanded{pointer-events:none}.ms-search-bar .ms-search-bar-collapser{display:none}.ms-search-bar input{background-color:transparent;font-size:16px}.ms-search-bar .ms-search-bar-results{position:absolute;top:64px;left:0;right:0;overflow-x:hidden;overflow-y:scroll;background:#fff;max-height:300px;box-shadow:0 1px 8px 0 rgba(0,0,0,.2),0 3px 4px 0 rgba(0,0,0,.14),0 3px 3px -2px rgba(0,0,0,.12)}.ms-search-bar .ms-search-bar-results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}.ms-search-bar .ms-search-bar-results .result{position:relative;height:56px;min-height:56px;max-height:56px;padding:16px;cursor:pointer}.ms-search-bar .ms-search-bar-results .result.selected{background:rgba(0,0,0,.07)}.ms-search-bar .ms-search-bar-results .result .icon-container{min-width:32px;margin-right:8px}.ms-search-bar .ms-search-bar-results .result .icon-container .square{width:6px;height:6px}.ms-search-bar .ms-search-bar-results .result .title{font-size:16px}.ms-search-bar .ms-search-bar-results .result .description{padding-top:6px;font-size:14px}.ms-search-bar.expanded{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:10}.ms-search-bar.expanded #ms-search-bar-input{display:block}.ms-search-bar.expanded .ms-search-bar-collapser{display:block}.ms-search-bar.down{top:64px;border-bottom:1px rgba(0,0,0,.12) solid}.ms-search-bar[disabled] input{pointer-events:none}body.ms-search-bar-expanded #toolbar{z-index:999!important}@media screen and (max-width:960px){.ms-search-bar-label{padding:0 8px 0 12px}}.ms-shortcuts{height:64px;font-size:13px}.ms-shortcuts .shortcuts-container{height:64px;padding:0 8px;max-width:400px}.ms-shortcuts .shortcuts-container .shortcuts{position:relative;overflow-x:scroll}.ms-shortcuts .shortcuts-container .shortcuts>div{height:64px;min-width:44px}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging{cursor:grabbing}.ms-shortcuts .shortcuts-container .shortcuts>div.dragging .md-ripple-container{display:none}.ms-shortcuts .shortcuts-container .shortcuts>div.ghost .shortcut{opacity:.27}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut{margin:2px}.ms-shortcuts .shortcuts-container .shortcuts>div .shortcut .first-letter{display:inline-block;vertical-align:middle;font-size:20px;text-transform:uppercase;color:rgba(0,0,0,.54)}.ms-shortcuts .shortcuts-container .shortcut-menu{margin:0}.ms-shortcuts .shortcuts-container.mobile-bar-active{position:absolute;top:0;right:0;bottom:0;left:0;background:#fff;z-index:99;max-width:none!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcut-menu,.ms-shortcuts .shortcuts-container.mobile-bar-active .shortcuts,.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{display:flex!important}.ms-shortcuts .shortcuts-container.mobile-bar-active .toggle-mobile-menu{margin-left:14px}.ms-shortcuts .shortcuts-container.mobile-bar-active>div{border-right:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu{position:relative;width:240px;min-width:240px;max-width:240px}#ms-shortcut-add-menu .add-shortcut-button{width:48px;height:48px;padding:0 12px;margin:0}#ms-shortcut-add-menu .shortcut-search{height:45px;padding:0 8px}#ms-shortcut-add-menu .shortcut-search .search-icon{width:40px;height:40px;line-height:48px}#ms-shortcut-add-menu .shortcut-search .shortcut-loader{padding:10px}#ms-shortcut-add-menu .shortcut-search input{padding:8px}#ms-shortcut-add-menu .results{position:relative;overflow-y:scroll;max-height:233px;margin-top:8px;padding-top:8px;border-top:1px solid rgba(0,0,0,.12)}#ms-shortcut-add-menu .results .no-results{font-size:18px;padding:16px;color:rgba(0,0,0,.54)}#ms-shortcut-add-menu .results .result{position:relative;min-height:56px;padding:16px;cursor:pointer}#ms-shortcut-add-menu .results .result.selected{background:rgba(0,0,0,.07)}#ms-shortcut-add-menu .results .result .icon-container{min-width:32px;margin-right:8px}#ms-shortcut-add-menu .results .result .icon-container .square{width:6px;height:6px}#ms-shortcut-add-menu .results .result .title{font-size:16px}#ms-shortcut-add-menu .results .result .description{padding-top:6px;font-size:14px}#splash-screen{display:block;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#3c4252;z-index:99999}#splash-screen.ng-leave{opacity:1;transition:all linear .2s}#splash-screen.ng-leave-active{opacity:0}#splash-screen .center{display:block;width:100%;position:absolute;top:50%;transform:translateY(-50%)}#splash-screen .logo{width:96px;height:96px;line-height:96px;margin:0 auto;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:56px;text-align:center;border-radius:2px;background-color:#039be5;color:#fff;box-shadow:0 2px 14px 0 rgba(0,0,0,.22)}#splash-screen .spinner-wrapper{display:block;position:relative;width:100%;min-height:100px;height:100px}#splash-screen .spinner-wrapper .spinner{position:absolute;overflow:hidden;left:50%;margin-left:-50px;animation:outer-rotate 2.91667s linear infinite}#splash-screen .spinner-wrapper .spinner .inner{width:100px;height:100px;position:relative;animation:sporadic-rotate 5.25s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .gap{position:absolute;left:49px;right:49px;top:0;bottom:0;border-top:10px solid;box-sizing:border-box}#splash-screen .spinner-wrapper .spinner .inner .left,#splash-screen .spinner-wrapper .spinner .inner .right{position:absolute;top:0;height:100px;width:50px;overflow:hidden}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle,#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{position:absolute;top:0;width:100px;height:100px;box-sizing:border-box;border:10px solid #4285f4;border-bottom-color:transparent;border-radius:50%}#splash-screen .spinner-wrapper .spinner .inner .left{left:0}#splash-screen .spinner-wrapper .spinner .inner .left .half-circle{left:0;border-right-color:transparent;animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:left-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}#splash-screen .spinner-wrapper .spinner .inner .right{right:0}#splash-screen .spinner-wrapper .spinner .inner .right .half-circle{right:0;border-left-color:transparent;animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite;-webkit-animation:right-wobble 1.3125s cubic-bezier(.35,0,.25,1) infinite}@keyframes outer-rotate{0%{transform:rotate(0) scale(.5)}100%{transform:rotate(360deg) scale(.5)}}@keyframes left-wobble{0%,100%{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@keyframes right-wobble{0%,100%{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}@keyframes sporadic-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}.ms-stepper .ms-stepper-horizontal{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{height:72px;min-height:72px;max-height:72px;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after,.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{content:'';display:block;position:absolute;top:50%;width:24px;border-bottom:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:before{left:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:after{right:0}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .step{background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step{width:24px;min-width:24px;height:24px;border-radius:50%;margin:0 8px 0 16px;color:#fff}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .step .icon{color:#fff;font-weight:700;line-height:24px!important}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-horizontal .ms-stepper-steps{padding:24px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls{padding:0 16px 16px 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:none;align-items:center;justify-content:center;padding:0 16px}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span{width:5px;height:5px;margin:0 4px;border-radius:50%}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span:not(.md-accent-bg){background:rgba(0,0,0,.12)}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots span.selected{width:8px;height:8px}@media screen and (max-width:600px){.ms-stepper .ms-stepper-horizontal .ms-stepper-navigation-wrapper .ms-stepper-navigation{display:none}.ms-stepper .ms-stepper-horizontal .ms-stepper-controls .ms-stepper-dots{display:flex}}.ms-stepper .ms-stepper-vertical{position:relative;background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-vertical-line{display:block;position:absolute;width:1px;top:32px;bottom:32px;left:43px;border-left:1px solid rgba(0,0,0,.12)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps{padding:8px 0}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step{display:block}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item{display:flex;flex-direction:row;align-items:center;position:relative;width:100%;height:72px;min-height:72px;max-height:72px;line-height:24px;margin:0;padding:0 24px;border-radius:0;cursor:pointer;font-size:14px;text-transform:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:first-child:before{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:last-child:after{display:none}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item:hover:not(.disabled) .step{background-color:#ececec;border-color:#ececec}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.current .title{font-weight:600;color:rgba(0,0,0,.87)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled{cursor:default}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .title{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.disabled .subtitle{color:rgba(0,0,0,.27)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item.optional{padding:16px 24px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step{width:40px;min-width:40px;height:40px;margin:0 16px 0 0;border-radius:50%;background:#fff;border:8px solid #fff;color:#fff;transition:border-color .4s cubic-bezier(.25,.8,.25,1),background-color .4s cubic-bezier(.25,.8,.25,1)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .step .icon{font-weight:700;line-height:28px!important}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .title{padding-right:16px;color:rgba(0,0,0,.54)}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-navigation-item .subtitle{font-size:12px;padding-right:16px;color:rgba(0,0,0,.54);line-height:1}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-step-content{padding:0 24px 16px 64px}.ms-stepper .ms-stepper-vertical .ms-stepper-steps .ms-stepper-step .ms-stepper-controls{padding:0 16px 16px 56px}.ms-tab-scroll .scroll-arrow{height:inherit;padding:0}.ms-tab-scroll .bar-container{overflow:hidden}.ms-tab-scroll .scroll-container{overflow-x:hidden;overflow-y:hidden;transition:transform .2s ease-in-out}.ms-timeline .ms-timeline-loader{position:relative;display:flex;align-items:center;justify-content:center;width:56px;height:56px;margin:0 auto;background:#fff;font-weight:500;opacity:0;z-index:11;border-radius:50%}.ms-timeline .ms-timeline-loader.show{opacity:1}.ms-timeline .ms-timeline-loader .spinner{width:24px;height:24px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%}.ms-widget .ms-widget-front{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget .ms-widget-back{box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12)}.ms-widget.sidenav-widget .ms-widget-back,.ms-widget.sidenav-widget .ms-widget-front{box-shadow:none}.ms-widget .flip-to-front{position:absolute;top:0;right:0}.ms-widget .c3{height:100%}.ms-widget .chart-fill-8{margin:0 -8px -8px -8px}.ms-widget .chart-fill-16{margin:0 -16px -16px -16px}.ms-widget .chart-fill-24{margin:0 -24px -24px -24px}.ms-widget .chart-fill-32{margin:0 -32px -32px -32px}.ms-widget .chart-fill-40{margin:0 -40px -40px -40px}.ms-widget .chart-fill-48{margin:0 -48px -48px -48px}.ms-widget .chart-fill-56{margin:0 -56px -56px -56px}.ms-widget .chart-fill-64{margin:0 -64px -64px -64px}.ms-widget .chart-fill-72{margin:0 -72px -72px -72px}.ms-widget .chart-fill-80{margin:0 -80px -80px -80px}.ms-widget{position:relative;font-size:1.3rem;perspective:3000px;padding:12px}.ms-widget .ms-widget-front{display:flex;flex-direction:column;flex:1 1 auto;position:relative;overflow:hidden;visibility:visible;width:100%;opacity:1;z-index:10;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(0);backface-visibility:hidden}.ms-widget .ms-widget-back{display:block;position:absolute;overflow:hidden;visibility:hidden;opacity:0;z-index:10;top:12px;right:12px;bottom:12px;left:12px;border-radius:2px;transition:transform .5s ease-out 0s,visibility 0s ease-in .2s,opacity 0s ease-in .2s;transform:rotateY(180deg);backface-visibility:hidden}.ms-widget .md-button{margin:0}.ms-widget .md-button.md-icon-button{margin:0}.ms-widget.flipped .ms-widget-front{visibility:hidden;opacity:0;transform:rotateY(180deg)}.ms-widget.flipped .ms-widget-back{display:block;visibility:visible;opacity:1;transform:rotateY(360deg)}.ms-widget.sidenav-widget{padding:0}.ms-widget.ar-2-1 .widget{padding:0;position:relative}.ms-widget.ar-2-1 .widget:before{display:block;content:'';width:100%;padding-top:50%}.ms-widget.ar-2-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-widget.ar-1-1 .widget{padding:0;position:relative}.ms-widget.ar-1-1 .widget:before{display:block;content:'';width:100%;padding-top:100%}.ms-widget.ar-1-1 .widget>.widget{position:absolute;top:8px;left:8px;right:8px;bottom:8px}.ms-theme-options .ms-theme-options-button{position:absolute;top:160px;right:0;z-index:50;box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);width:48px;height:48px;line-height:48px;text-align:center;cursor:pointer;border-radius:0;margin:0;pointer-events:auto;opacity:.75}.ms-theme-options .ms-theme-options-button:hover{opacity:1}.ms-theme-options md-sidenav{width:384px;min-width:384px;max-width:384px}.ms-theme-options md-sidenav .ms-theme-options-list{background:#fff;z-index:12;pointer-events:auto}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option{padding:16px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button{width:160px;max-width:160px;margin:8px 8px 16px 8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button.md-checked ._md-label img,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button:hover ._md-label img{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-container{display:none}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label{margin-left:0}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.layout-options md-radio-button ._md-label img{opacity:.8;margin-bottom:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes md-menu-item{max-width:192px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button{border-bottom:16px solid;text-align:left;width:101px;height:88px;box-shadow:none;opacity:.8}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button.active,.ms-theme-options md-sidenav .ms-theme-options-list .theme-option.color-palettes .theme-button:hover{opacity:1;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option md-radio-button{margin:8px}.ms-theme-options md-sidenav .ms-theme-options-list .theme-option .option-title{font-size:14px;font-weight:500;padding:0 8px 12px 8px}#error-404 .content{width:90%;max-width:512px;margin-top:128px}#error-404 .content .error-code{font-size:112px;text-align:center;line-height:1;margin-bottom:16px;font-weight:500}#error-404 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-404 .content .search{width:100%;height:56px;line-height:56px;margin:48px auto 16px auto;padding:16px;background:#fff}#error-404 .content .search input{padding:0 0 0 16px}#error-404 .content .back-link{font-size:15px;text-align:center}#error-500 .content{width:90%;max-width:512px;margin-top:128px}#error-500 .content .error-code{font-size:112px;line-height:1;text-align:center;margin-bottom:16px;font-weight:500}#error-500 .content .message{font-size:24px;text-align:center;color:rgba(0,0,0,.54)}#error-500 .content .sub-message{font-size:17px;text-align:center;color:rgba(0,0,0,.54);margin:16px auto 48px auto}#error-500 .content .report-link{text-align:center;font-size:15px}#forgot-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#forgot-password #forgot-password-form-wrapper{flex:1 0 auto;padding:32px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#forgot-password #forgot-password-form-wrapper #forgot-password-form .title{font-size:17px;margin:16px 0 32px 0}#forgot-password #forgot-password-form-wrapper #forgot-password-form .logo_login{max-height:200px}#forgot-password #forgot-password-form-wrapper #forgot-password-form form{width:100%;text-align:left}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .submit-button{width:220px;margin:16px auto;display:block}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#forgot-password #forgot-password-form-wrapper #forgot-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#forgot-password #forgot-password-form-wrapper{padding:16px}#forgot-password #forgot-password-form-wrapper #forgot-password-form{padding:24px;width:100%}#forgot-password #forgot-password-form-wrapper #forgot-password-form form .md-button{width:90%}}#login{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#login #login-form-wrapper{flex:1 0 auto;padding:32px}#login #login-form-wrapper #login-form{width:384px;max-width:384px;padding:32px;background:#fff;text-align:center}#login #login-form-wrapper #login-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#login #login-form-wrapper #login-form .title{font-size:17px;margin:16px 0 32px 0}#login #login-form-wrapper #login-form .logo_login{max-height:200px}#login #login-form-wrapper #login-form form{width:100%;text-align:left}#login #login-form-wrapper #login-form form md-checkbox{margin:0}#login #login-form-wrapper #login-form form .remember-forgot-password{font-size:13px;margin-top:8px}#login #login-form-wrapper #login-form form .remember-forgot-password .remember-me{margin-bottom:16px}#login #login-form-wrapper #login-form form .remember-forgot-password .forgot-password{font-size:13px;font-weight:500;margin-bottom:16px}#login #login-form-wrapper #login-form form .submit-button{width:220px;margin:16px auto;display:block}#login #login-form-wrapper #login-form .register{margin:32px auto 24px auto;width:250px;font-weight:500}#login #login-form-wrapper #login-form .register .text{margin-right:8px}#login #login-form-wrapper #login-form .separator{font-size:15px;font-weight:600;margin:24px auto 16px auto;position:relative;overflow:hidden;width:100px;color:rgba(0,0,0,.54)}#login #login-form-wrapper #login-form .separator .text{display:inline-block;vertical-align:baseline;position:relative;padding:0 8px;z-index:9999}#login #login-form-wrapper #login-form .separator .text:after,#login #login-form-wrapper #login-form .separator .text:before{content:'';display:block;width:30px;position:absolute;top:10px;border-top:1px solid rgba(0,0,0,.12)}#login #login-form-wrapper #login-form .separator .text:before{right:100%}#login #login-form-wrapper #login-form .separator .text:after{left:100%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:192px;text-transform:none;color:#fff;font-size:13px}#login #login-form-wrapper #login-form .md-button.facebook md-icon,#login #login-form-wrapper #login-form .md-button.google md-icon{color:#fff;margin:0 8px 0 0}#login #login-form-wrapper #login-form .md-button.google{background-color:#d73d32}#login #login-form-wrapper #login-form .md-button.facebook{background-color:#3f5c9a}@media screen and (max-width:600px){#login #login-form-wrapper{padding:16px}#login #login-form-wrapper #login-form{padding:24px;width:100%}#login #login-form-wrapper #login-form form .md-button{width:90%}#login #login-form-wrapper #login-form .md-button.facebook,#login #login-form-wrapper #login-form .md-button.google{width:80%}}md-dialog.extractedReport-dialog{max-width:720px;width:720px}md-dialog.extractedReport-dialog md-dialog-content{display:block;position:relative}md-dialog.extractedReport-dialog md-toolbar .title{font-size:17px}md-dialog.extractedReport-dialog md-input-container textarea{min-height:150px}md-dialog.extractedReport-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.extractedReport-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.extractedReport-dialog .date-container{padding:16px 0 24px 0}md-dialog.extractedReport-dialog .error-list{font-size:13px}md-dialog.extractedReport-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.extractedReport-dialog .error-list .error .message{font-weight:500}md-dialog.extractedReport-dialog .error-list .error .md-button{margin:0}md-dialog.extractedReport-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.extractedReport-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#extractedReports{position:relative}#extractedReports>.header{height:76px;min-height:76px;max-height:76px}#extractedReports>.header .logo .logo-icon{margin:0 16px 0 0}#extractedReports>.header .logo .logo-text{font-size:24px}#extractedReports>.header md-icon{color:#fff}#extractedReports>.header .search-input-wrapper{position:relative}#extractedReports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#extractedReports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#extractedReports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#extractedReports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#extractedReports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#extractedReports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#extractedReports>.header.selected-bar .close-button-wrapper{width:244px}#extractedReports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#extractedReports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#extractedReports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#extractedReports #add-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}#extractedReports #upload-extractedReport-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.metric-dialog{max-width:720px;width:720px}md-dialog.metric-dialog md-dialog-content{display:block;position:relative}md-dialog.metric-dialog md-toolbar .title{font-size:17px}md-dialog.metric-dialog md-input-container textarea{min-height:150px}md-dialog.metric-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.metric-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.metric-dialog .date-container{padding:16px 0 24px 0}md-dialog.metric-dialog .error-list{font-size:13px}md-dialog.metric-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.metric-dialog .error-list .error .message{font-weight:500}md-dialog.metric-dialog .error-list .error .md-button{margin:0}md-dialog.metric-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.metric-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#metrics{position:relative}#metrics>.header{height:76px;min-height:76px;max-height:76px}#metrics>.header .logo .logo-icon{margin:0 16px 0 0}#metrics>.header .logo .logo-text{font-size:24px}#metrics>.header md-icon{color:#fff}#metrics>.header .search-input-wrapper{position:relative}#metrics>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#metrics>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#metrics>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#metrics>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#metrics>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#metrics>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#metrics>.header.selected-bar .close-button-wrapper{width:244px}#metrics>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#metrics>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#metrics>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#metrics #add-metric-button{position:fixed;bottom:8px;right:8px;padding:0}#metrics #upload-metric-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.reportField-dialog{max-width:720px;width:720px}md-dialog.reportField-dialog md-dialog-content{display:block;position:relative}md-dialog.reportField-dialog md-toolbar .title{font-size:17px}md-dialog.reportField-dialog md-input-container textarea{min-height:150px}md-dialog.reportField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.reportField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.reportField-dialog .date-container{padding:16px 0 24px 0}md-dialog.reportField-dialog .error-list{font-size:13px}md-dialog.reportField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.reportField-dialog .error-list .error .message{font-weight:500}md-dialog.reportField-dialog .error-list .error .md-button{margin:0}md-dialog.reportField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.reportField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#analytics-report .header{height:76px;min-height:76px;max-height:76px}#analytics-report .header .goto-reports-button{margin-right:16px}#analytics-report .header .report-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#analytics-report .header .report-image img{height:100%;width:auto;max-width:none}#analytics-report .header .subtitle{margin:6px 0 0 0}#analytics-report .report-detail-form-container{padding:24px;margin-bottom:24px}#analytics-report .report-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#analytics-report .report-detail-form-container .handle{cursor:move}#analytics-report .report-detail-form-container md-input-container md-switch{margin:0!important}#analytics-report .report-detail-form-container #report-image-uploader{position:relative}#analytics-report .report-detail-form-container #report-image-uploader.dropping .drop-text{display:flex}#analytics-report .report-detail-form-container #report-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#analytics-report .report-detail-form-container #report-image-uploader .upload-button{margin-bottom:16px}#analytics-report .report-detail-form-container #report-image-uploader .report-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#analytics-report .report-detail-form-container #report-image-uploader .report-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#analytics-report .report-detail-form-container #report-image-uploader .report-image .media{max-height:100%}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reports{position:relative}#reports>.header{height:76px;min-height:76px;max-height:76px}#reports>.header .logo .logo-icon{margin:0 16px 0 0}#reports>.header .logo .logo-text{font-size:24px}#reports>.header md-icon{color:#fff}#reports>.header .search-input-wrapper{position:relative}#reports>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#reports>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#reports>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#reports>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#reports>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#reports>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#reports>.header.selected-bar .close-button-wrapper{width:244px}#reports>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#reports>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#reports>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}md-dialog.report-dialog{max-width:720px;width:720px}md-dialog.report-dialog md-dialog-content{display:block;position:relative}md-dialog.report-dialog md-toolbar .title{font-size:17px}md-dialog.report-dialog md-input-container textarea{min-height:150px}md-dialog.report-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.report-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.report-dialog .date-container{padding:16px 0 24px 0}md-dialog.report-dialog .error-list{font-size:13px}md-dialog.report-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.report-dialog .error-list .error .message{font-weight:500}md-dialog.report-dialog .error-list .error .md-button{margin:0}md-dialog.report-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.report-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.web-dialog md-dialog-content{display:block;position:relative}md-dialog.web-dialog md-toolbar .title{font-size:17px}md-dialog.web-dialog md-input-container textarea{min-height:150px}md-dialog.web-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.web-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.web-dialog .date-container{padding:16px 0 24px 0}md-dialog.web-dialog .error-list{font-size:13px}md-dialog.web-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.web-dialog .error-list .error .message{font-weight:500}md-dialog.web-dialog .error-list .error .md-button{margin:0}md-dialog.web-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.web-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.odbc-dialog{max-width:720px;width:720px}md-dialog.odbc-dialog md-dialog-content{display:block;position:relative}md-dialog.odbc-dialog md-toolbar .title{font-size:17px}md-dialog.odbc-dialog md-input-container textarea{min-height:150px}md-dialog.odbc-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.odbc-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.odbc-dialog .date-container{padding:16px 0 24px 0}md-dialog.odbc-dialog .error-list{font-size:13px}md-dialog.odbc-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.odbc-dialog .error-list .error .message{font-weight:500}md-dialog.odbc-dialog .error-list .error .md-button{margin:0}md-dialog.odbc-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.odbc-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#odbcs{position:relative}#odbcs>.header{height:76px;min-height:76px;max-height:76px}#odbcs>.header .logo .logo-icon{margin:0 16px 0 0}#odbcs>.header .logo .logo-text{font-size:24px}#odbcs>.header md-icon{color:#fff}#odbcs>.header .search-input-wrapper{position:relative}#odbcs>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#odbcs>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#odbcs>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#odbcs>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#odbcs>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#odbcs>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#odbcs>.header.selected-bar .close-button-wrapper{width:244px}#odbcs>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#odbcs>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#odbcs>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#odbcs #add-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}#odbcs #upload-odbc-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.project-dialog .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#callysquare-project .header{height:76px;min-height:76px;max-height:76px}#callysquare-project .header .goto-projects-button{margin-right:16px}#callysquare-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#callysquare-project .header .project-image img{height:100%;width:auto;max-width:none}#callysquare-project .header .subtitle{margin:6px 0 0 0}#callysquare-project .project-detail-form-container{padding:24px;margin-bottom:24px}#callysquare-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#callysquare-project .project-detail-form-container #project-image-uploader{position:relative}#callysquare-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#callysquare-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#callysquare-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#callysquare-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#callysquare-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#callysquare-project>.callysquare-content{position:absolute;top:76px;bottom:0;left:0;right:0}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.squareRecording-dialog{max-width:720px;width:720px}md-dialog.squareRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.squareRecording-dialog md-toolbar .title{font-size:17px}md-dialog.squareRecording-dialog md-input-container textarea{min-height:150px}md-dialog.squareRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.squareRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.squareRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.squareRecording-dialog .error-list{font-size:13px}md-dialog.squareRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.squareRecording-dialog .error-list .error .message{font-weight:500}md-dialog.squareRecording-dialog .error-list .error .md-button{margin:0}md-dialog.squareRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.squareRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#squareRecordings{position:relative}#squareRecordings>.header{height:76px;min-height:76px;max-height:76px}#squareRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#squareRecordings>.header .logo .logo-text{font-size:24px}#squareRecordings>.header md-icon{color:#fff}#squareRecordings>.header .search-input-wrapper{position:relative}#squareRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#squareRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#squareRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#squareRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#squareRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#squareRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#squareRecordings>.header.selected-bar .close-button-wrapper{width:244px}#squareRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#squareRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#squareRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#squareRecordings #add-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#squareRecordings #upload-squareRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues{position:relative}#chatQueues>.header{height:76px;min-height:76px;max-height:76px}#chatQueues>.header .logo .logo-icon{margin:0 16px 0 0}#chatQueues>.header .logo .logo-text{font-size:24px}#chatQueues>.header md-icon{color:#fff}#chatQueues>.header .search-input-wrapper{position:relative}#chatQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatQueues>.header.selected-bar .close-button-wrapper{width:244px}#chatQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatQueues #add-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#chatQueues #upload-chatQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatQueue-dialog{max-width:720px;width:720px}md-dialog.chatQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.chatQueue-dialog md-toolbar .title{font-size:17px}md-dialog.chatQueue-dialog md-input-container textarea{min-height:150px}md-dialog.chatQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatQueue-dialog .error-list{font-size:13px}md-dialog.chatQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatQueue-dialog .error-list .error .message{font-weight:500}md-dialog.chatQueue-dialog .error-list .error .md-button{margin:0}md-dialog.chatQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatQueue .header{height:76px;min-height:76px;max-height:76px}#chat-chatQueue .header .goto-chatQueues-button{margin-right:16px}#chat-chatQueue .header .chatQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatQueue .header .chatQueue-image img{height:100%;width:auto;max-width:none}#chat-chatQueue .header .subtitle{margin:6px 0 0 0}#chat-chatQueue .chatQueue-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatQueue .chatQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatQueue .chatQueue-detail-form-container .handle{cursor:move}#chat-chatQueue .chatQueue-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader{position:relative}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader.dropping .drop-text{display:flex}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .upload-button{margin-bottom:16px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatQueue .chatQueue-detail-form-container #chatQueue-image-uploader .chatQueue-image .media{max-height:100%}#chat-chatQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#chatWebsites{position:relative}#chatWebsites>.header{height:76px;min-height:76px;max-height:76px}#chatWebsites>.header .logo .logo-icon{margin:0 16px 0 0}#chatWebsites>.header .logo .logo-text{font-size:24px}#chatWebsites>.header md-icon{color:#fff}#chatWebsites>.header .search-input-wrapper{position:relative}#chatWebsites>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chatWebsites>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chatWebsites>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chatWebsites>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chatWebsites>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chatWebsites>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chatWebsites>.header.selected-bar .close-button-wrapper{width:244px}#chatWebsites>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chatWebsites>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chatWebsites>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chatWebsites #add-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}#chatWebsites #upload-chatWebsite-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatWebsite-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatWebsite-dialog{max-width:720px;width:720px}md-dialog.chatWebsite-dialog md-dialog-content{display:block;position:relative}md-dialog.chatWebsite-dialog md-toolbar .title{font-size:17px}md-dialog.chatWebsite-dialog md-input-container textarea{min-height:150px}md-dialog.chatWebsite-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatWebsite-dialog .error-list{font-size:13px}md-dialog.chatWebsite-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatWebsite-dialog .error-list .error .message{font-weight:500}md-dialog.chatWebsite-dialog .error-list .error .md-button{margin:0}md-dialog.chatWebsite-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatWebsite-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.chatCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.chatCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.chatCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.chatCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatCannedAnswer-dialog .error-list{font-size:13px}md-dialog.chatCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.chatCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.chatCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.offlineMessage-dialog{max-width:720px;width:720px}md-dialog.offlineMessage-dialog md-dialog-content{display:block;position:relative}md-dialog.offlineMessage-dialog md-toolbar .title{font-size:17px}md-dialog.offlineMessage-dialog md-input-container textarea{min-height:150px}md-dialog.offlineMessage-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.offlineMessage-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.offlineMessage-dialog .date-container{padding:16px 0 24px 0}md-dialog.offlineMessage-dialog .error-list{font-size:13px}md-dialog.offlineMessage-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.offlineMessage-dialog .error-list .error .message{font-weight:500}md-dialog.offlineMessage-dialog .error-list .error .md-button{margin:0}md-dialog.offlineMessage-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.offlineMessage-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.chatProactiveAction-dialog{max-width:720px;width:720px}md-dialog.chatProactiveAction-dialog md-dialog-content{display:block;position:relative}md-dialog.chatProactiveAction-dialog md-toolbar .title{font-size:17px}md-dialog.chatProactiveAction-dialog md-input-container textarea{min-height:150px}md-dialog.chatProactiveAction-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chatProactiveAction-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chatProactiveAction-dialog .date-container{padding:16px 0 24px 0}md-dialog.chatProactiveAction-dialog .error-list{font-size:13px}md-dialog.chatProactiveAction-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chatProactiveAction-dialog .error-list .error .message{font-weight:500}md-dialog.chatProactiveAction-dialog .error-list .error .md-button{margin:0}md-dialog.chatProactiveAction-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chatProactiveAction-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chat-chatWebsite .header{height:76px;min-height:76px;max-height:76px}#chat-chatWebsite .header .goto-chatWebsites-button{margin-right:16px}#chat-chatWebsite .header .chatWebsite-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#chat-chatWebsite .header .chatWebsite-image img{height:100%;width:auto;max-width:none}#chat-chatWebsite .header .subtitle{margin:6px 0 0 0}#chat-chatWebsite .chatWebsite-detail-form-container{padding:24px;margin-bottom:24px}#chat-chatWebsite .chatWebsite-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#chat-chatWebsite .chatWebsite-detail-form-container .handle{cursor:move}#chat-chatWebsite .chatWebsite-detail-form-container md-input-container md-switch{margin:0!important}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader{position:relative}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader.dropping .drop-text{display:flex}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .upload-button{margin-bottom:16px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#chat-chatWebsite .chatWebsite-detail-form-container #chatWebsite-image-uploader .chatWebsite-image .media{max-height:100%}#chat-chatWebsite md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#chat-chatWebsite md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#chat-chatWebsite md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#chat-chatWebsite .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#chat-chatWebsite .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#chat-chatWebsite .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#chat-chatWebsite .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#chat-chatWebsite .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#chat-chatWebsite .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#chat-chatWebsite .actionAppData{width:150px!important}}@media screen and (max-width:960px){#chat-chatWebsite .actionAppData{width:80px!important}}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#companies{position:relative}#companies>.header{height:76px;min-height:76px;max-height:76px}#companies>.header .logo .logo-icon{margin:0 16px 0 0}#companies>.header .logo .logo-text{font-size:24px}#companies>.header md-icon{color:#fff}#companies>.header .search-input-wrapper{position:relative}#companies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#companies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#companies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#companies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#companies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#companies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#companies>.header.selected-bar .close-button-wrapper{width:244px}#companies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#companies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#companies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#companies #add-company-button{position:fixed;bottom:8px;right:8px;padding:0}#companies #upload-company-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.company-dialog{max-width:720px;width:720px}md-dialog.company-dialog md-dialog-content{display:block;position:relative}md-dialog.company-dialog md-toolbar .title{font-size:17px}md-dialog.company-dialog md-input-container textarea{min-height:150px}md-dialog.company-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.company-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.company-dialog .date-container{padding:16px 0 24px 0}md-dialog.company-dialog .error-list{font-size:13px}md-dialog.company-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.company-dialog .error-list .error .message{font-weight:500}md-dialog.company-dialog .error-list .error .md-button{margin:0}md-dialog.company-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.company-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-company .header{height:76px;min-height:76px;max-height:76px}#contactmanager-company .header .goto-companies-button{margin-right:16px}#contactmanager-company .header .company-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-company .header .company-image img{height:100%;width:auto;max-width:none}#contactmanager-company .header .subtitle{margin:6px 0 0 0}#contactmanager-company .company-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-company .company-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-company .company-detail-form-container .handle{cursor:move}#contactmanager-company .company-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-company .company-detail-form-container #company-image-uploader{position:relative}#contactmanager-company .company-detail-form-container #company-image-uploader.dropping .drop-text{display:flex}#contactmanager-company .company-detail-form-container #company-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-company .company-detail-form-container #company-image-uploader .upload-button{margin-bottom:16px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-company .company-detail-form-container #company-image-uploader .company-image .media{max-height:100%}#contactmanager-company md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-company md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-company md-table-container.font-size-12 td.md-cell{font-size:12px!important}#contacts{position:relative}#contacts>.header{height:76px;min-height:76px;max-height:76px}#contacts>.header .logo .logo-icon{margin:0 16px 0 0}#contacts>.header .logo .logo-text{font-size:24px}#contacts>.header md-icon{color:#fff}#contacts>.header .search-input-wrapper{position:relative}#contacts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contacts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contacts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contacts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contacts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contacts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contacts>.header.selected-bar .close-button-wrapper{width:244px}#contacts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contacts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contacts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contacts #add-contact-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cm-contact .pointer{cursor:pointer}#cm-contact .header{height:76px;min-height:76px;max-height:76px}#cm-contact .header .goto-contacts-button{margin-right:16px}#cm-contact .header .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#cm-contact .header .contact-image img{height:100%;width:auto;max-width:none}#cm-contact .header .subtitle{margin:6px 0 0 0}#cm-contact .contact-detail-form-container{padding:24px;margin-bottom:24px}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.email{color:green}#cm-contact .contact-detail-form-container md-input-container:not(.md-input-invalid)>md-icon.firstname{color:#1e90ff}#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.email,#cm-contact .contact-detail-form-container md-input-container.md-input-invalid>md-icon.firstname{color:red}#cm-contact .contact-detail-form-container .hint{position:absolute;left:2px;right:auto;bottom:7px;font-size:10px;line-height:14px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.import-dialog{max-width:720px;width:720px}md-dialog.import-dialog md-dialog-content{display:block;position:relative}md-dialog.import-dialog md-toolbar .title{font-size:17px}md-dialog.import-dialog md-input-container textarea{min-height:150px}md-dialog.import-dialog .date-container{padding:16px 0 24px 0}md-dialog.import-dialog .error-list{font-size:13px}md-dialog.import-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .error .message{font-weight:500}md-dialog.import-dialog .error-list .error .md-button{margin:0}md-dialog.import-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.import-dialog .error-list .info{background-color:rgba(24,160,135,.08);border:1px solid rgba(24,160,135,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.import-dialog .error-list .info .message{font-weight:500}md-dialog.import-dialog .error-list .info .md-button{margin:0}md-dialog.import-dialog .error-list .info:last-child{margin-bottom:30px}md-dialog.import-dialog .contact-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}md-dialog.import-dialog .contact-image img{height:100%;width:auto;max-width:none}md-dialog.import-dialog .contact-image .media{max-height:100%}md-dialog.import-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.cm-contact-dialog{max-width:720px;width:720px}md-dialog.cm-contact-dialog md-dialog-content{display:block;position:relative}md-dialog.cm-contact-dialog md-toolbar .title{font-size:17px}md-dialog.cm-contact-dialog md-input-container textarea{min-height:150px}md-dialog.cm-contact-dialog .date-container{padding:16px 0 24px 0}md-dialog.cm-contact-dialog .error-list{font-size:13px}md-dialog.cm-contact-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cm-contact-dialog .error-list .error .message{font-weight:500}md-dialog.cm-contact-dialog .error-list .error .md-button{margin:0}md-dialog.cm-contact-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cm-contact-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.globalCustomField-dialog{max-width:720px;width:720px}md-dialog.globalCustomField-dialog md-dialog-content{display:block;position:relative}md-dialog.globalCustomField-dialog md-toolbar .title{font-size:17px}md-dialog.globalCustomField-dialog md-input-container textarea{min-height:150px}md-dialog.globalCustomField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.globalCustomField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.globalCustomField-dialog .date-container{padding:16px 0 24px 0}md-dialog.globalCustomField-dialog .error-list{font-size:13px}md-dialog.globalCustomField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.globalCustomField-dialog .error-list .error .message{font-weight:500}md-dialog.globalCustomField-dialog .error-list .error .md-button{margin:0}md-dialog.globalCustomField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.globalCustomField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#globalCustomFields{position:relative}#globalCustomFields>.header{height:76px;min-height:76px;max-height:76px}#globalCustomFields>.header .logo .logo-icon{margin:0 16px 0 0}#globalCustomFields>.header .logo .logo-text{font-size:24px}#globalCustomFields>.header md-icon{color:#fff}#globalCustomFields>.header .search-input-wrapper{position:relative}#globalCustomFields>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#globalCustomFields>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#globalCustomFields>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#globalCustomFields>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#globalCustomFields>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#globalCustomFields>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#globalCustomFields>.header.selected-bar .close-button-wrapper{width:244px}#globalCustomFields>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#globalCustomFields>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#globalCustomFields>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#globalCustomFields #add-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}#globalCustomFields #upload-globalCustomField-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.list-dialog{max-width:720px;width:720px}md-dialog.list-dialog md-dialog-content{display:block;position:relative}md-dialog.list-dialog md-toolbar .title{font-size:17px}md-dialog.list-dialog md-input-container textarea{min-height:150px}md-dialog.list-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.list-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.list-dialog .date-container{padding:16px 0 24px 0}md-dialog.list-dialog .error-list{font-size:13px}md-dialog.list-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.list-dialog .error-list .error .message{font-weight:500}md-dialog.list-dialog .error-list .error .md-button{margin:0}md-dialog.list-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.list-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customField-dialog{max-width:720px;width:720px}md-dialog.customField-dialog md-dialog-content{display:block;position:relative}md-dialog.customField-dialog md-toolbar .title{font-size:17px}md-dialog.customField-dialog md-input-container textarea{min-height:150px}md-dialog.customField-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customField-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customField-dialog .date-container{padding:16px 0 24px 0}md-dialog.customField-dialog .error-list{font-size:13px}md-dialog.customField-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customField-dialog .error-list .error .message{font-weight:500}md-dialog.customField-dialog .error-list .error .md-button{margin:0}md-dialog.customField-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customField-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contactmanager-list .header{height:76px;min-height:76px;max-height:76px}#contactmanager-list .header .goto-lists-button{margin-right:16px}#contactmanager-list .header .list-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#contactmanager-list .header .list-image img{height:100%;width:auto;max-width:none}#contactmanager-list .header .subtitle{margin:6px 0 0 0}#contactmanager-list .list-detail-form-container{padding:24px;margin-bottom:24px}#contactmanager-list .list-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#contactmanager-list .list-detail-form-container .handle{cursor:move}#contactmanager-list .list-detail-form-container md-input-container md-switch{margin:0!important}#contactmanager-list .list-detail-form-container #list-image-uploader{position:relative}#contactmanager-list .list-detail-form-container #list-image-uploader.dropping .drop-text{display:flex}#contactmanager-list .list-detail-form-container #list-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#contactmanager-list .list-detail-form-container #list-image-uploader .upload-button{margin-bottom:16px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#contactmanager-list .list-detail-form-container #list-image-uploader .list-image .media{max-height:100%}#contactmanager-list md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#contactmanager-list md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#contactmanager-list md-table-container.font-size-12 td.md-cell{font-size:12px!important}#lists{position:relative}#lists>.header{height:76px;min-height:76px;max-height:76px}#lists>.header .logo .logo-icon{margin:0 16px 0 0}#lists>.header .logo .logo-text{font-size:24px}#lists>.header md-icon{color:#fff}#lists>.header .search-input-wrapper{position:relative}#lists>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#lists>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#lists>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#lists>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#lists>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#lists>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#lists>.header.selected-bar .close-button-wrapper{width:244px}#lists>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#lists>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#lists>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#lists #add-list-button{position:fixed;bottom:8px;right:8px;padding:0}#lists #upload-list-button{position:fixed;bottom:8px;right:8px;padding:0}#dashboard-custom .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#agent-general{width:100%;height:100%;overflow:hidden}#agent-general .agent-content{width:100%;height:100%;overflow:auto}#agent-general .agent-content.overflow-hidden{overflow:hidden}#agent-general .agent-content md-tabs{width:100%;height:100%}#agent-general .agent-content md-tabs md-tabs-content-wrapper{width:100%;height:calc(100% - 48px)}#agent-general .agent-content md-tabs md-tabs-content-wrapper md-tab-content.md-active{width:100%;height:100%;overflow:auto}#agent-general .agent-general-home-navbar{flex-grow:1;overflow-y:auto;overflow-x:hidden}#agent-general .agent-general-home-navbar::-webkit-scrollbar{width:0;background:0 0}#agent-general .agent-general-home-navbar::-webkit-scrollbar-thumb{background:0 0;border-radius:0}#agent-general .agent-general-home-sections{width:100%;height:100%;overflow:auto}#agent-general .badge{min-width:20px;height:20px;line-height:20px;padding:0 7px;font-size:11px;font-weight:700;border-radius:20px;transition:opacity .2s ease-in-out .1s}#agent-general .table-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff;overflow-x:auto}#agent-general .table-header::-webkit-scrollbar-thumb{background-color:rgba(0,0,0,.2)}#agent-general .table-header .md-toolbar-tools div md-select .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder{color:#fff}#agent-general .table-header .md-toolbar-tools div md-select[disabled] .md-select-value.md-select-placeholder .md-select-icon{display:none}#agent-general .table-header ms-quick-filter .quick-filter-date-clear-button{color:#fff}#agent-general .tooltip-preview{position:relative;display:inline-block;text-decoration:underline}#agent-general .tooltip-preview .tooltip-preview-text{display:none;opacity:0;width:500px;height:216px;position:fixed;white-space:pre-line;z-index:99999999;overflow:hidden;transition:opacity cubic-bezier(.075,.82,.165,1)}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container{width:100%;height:100%;overflow:hidden}#agent-general .tooltip-preview .tooltip-preview-text .tooltip-preview-text-container .email-preview-message{display:block;display:-webkit-box;margin:0 auto;width:100%;height:100%;line-height:1.4;-webkit-line-clamp:10;-webkit-box-orient:vertical;overflow:hidden;text-overflow:ellipsis;word-break:break-all}#agent-general .tooltip-preview:hover .tooltip-preview-text{display:block;opacity:1}#agent-general .reload-list md-icon{color:#fff}#agent-general .advanced-search md-icon{color:#fff}#agent-general .create-new md-icon{color:#fff}#agent-general div.draft-manager-bar{background-color:#f5f5f5;position:sticky;height:34px;bottom:0;border-top:1px solid #e0e0e0}#agent-general div.draft-manager-bar ms-tab-scroll{overflow:hidden}#agent-general div.draft-manager-bar ms-tab-scroll div.draft-manager-tab{height:34px;border-right:1px solid #e0e0e0}#agent-general td.width-5,#agent-general th.width-5{width:5px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-10,#agent-general th.width-10{width:10px!important;min-width:auto!important;max-width:none!important}#agent-general td.width-15,#agent-general th.width-15{width:15px!important;min-width:auto!important;max-width:none!important}#agent-general td.no-padding,#agent-general th.no-padding{padding:0!important}#agent-general span.contact-text{width:100px!important}#agent-general span.subject-text{width:300px!important}#agent-general span.no-margin-bottom{margin-bottom:0!important}#agent-general span.no-margin-top{margin-top:0!important}#agent-general md-table-container.interactions-list thead tr th:not(.no-padding):not(.id-header){padding:0 20px 0 0!important}#agent-general md-table-container.interactions-list tbody tr td:not(.no-padding):not(.actions-padding):not(.id){padding:0 20px 0 0!important}#agent-general td.actions-padding{padding:0 8px 0 0!important}#agent-general md-toolbar.md-table-toolbar[disabled]{pointer-events:none}#agent-general md-toolbar.md-table-toolbar[disabled] ms-search-bar{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] ms-quick-filter{opacity:.7}#agent-general md-toolbar.md-table-toolbar[disabled] button.advanced-search,#agent-general md-toolbar.md-table-toolbar[disabled] button.interaction-reload{opacity:.7}#agent-general md-card.call-info-card{min-width:220px}#agent-general md-card.call-info-card md-card-content,#agent-general md-card.call-info-card md-card-header{padding:10px!important}#agent-general md-card.call-info-card button.reload-button{padding:0;height:22px;width:auto}@media screen and (max-width:1280px){#agent-general span.contact-text{width:100px!important}}@media screen and (max-width:1920px){#agent-general span.contact-text{width:150px!important}}#agent-general-dialog{position:fixed;width:100%;height:100%}#agent-general-dialog .agent-content{position:fixed;top:0;bottom:0;left:0;right:0}body .md-select-menu-container{z-index:110}.md-toolbar-tools{font-size:12px}div.toolbar-quick-filter[disabled]{pointer-events:none;opacity:.7}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.contact-trigger-dialog{max-width:720px;width:720px}md-dialog.contact-trigger-dialog md-dialog-content{display:block;position:relative;max-height:400px;height:400px}md-dialog.contact-trigger-dialog md-toolbar{background-image:url(/assets/images/backgrounds/header-bg.png);background-position:top}md-dialog.contact-trigger-dialog md-toolbar .title{font-size:17px}md-dialog.contact-trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}md-dialog.contact-trigger-dialog md-dialog-actions button.select-button{position:absolute;right:0;margin-right:16px}md-dialog md-grid-list.one-row-layout{height:150px;max-height:150px}md-dialog md-grid-list.two-rows-layout{height:300px;max-height:300px}md-dialog md-card.contact-info:hover{background-color:#e9eef1ad}@media screen and (max-width:1280px){md-dialog.contact-trigger-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.contact-trigger-dialog{width:90%}}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.details-dialog{max-width:500px;width:500px}md-dialog.details-dialog md-dialog-content{display:block;position:relative}md-dialog.details-dialog md-toolbar .title{font-size:17px}md-dialog.details-dialog md-input-container textarea{min-height:150px}md-dialog.details-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.details-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.details-dialog .date-container{padding:16px 0 24px 0}md-dialog.details-dialog .error-list{font-size:13px}md-dialog.details-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.details-dialog .error-list .error .message{font-weight:500}md-dialog.details-dialog .error-list .error .md-button{margin:0}md-dialog.details-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.details-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#interaction-app .tags{font-size:12px}#interaction-app .tags .tag{border-radius:2px;padding:3px 8px;background-color:rgba(0,0,0,.08)}#interaction-app .tags .tag .tag-color{width:8px;height:8px;margin-right:8px;border-radius:50%}#interaction-app .content-card{position:relative;height:100%}#interaction-app .content-card .interaction{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .interaction .avatar-small{width:30px;min-width:30px;height:30px;line-height:30px;margin:0 8px 0 0;border-radius:50%;font-size:17px;font-weight:500;text-align:center;color:#fff}#interaction-app .content-card .interaction .interaction-agents{min-height:40px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-agents .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-agents .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-agents .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .interaction-toolbar{min-height:64px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .interaction .interaction-toolbar md-icon{color:rgba(0,0,0,.87)}#interaction-app .content-card .interaction .interaction-toolbar .responsive-interactions-button{padding:0}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact{cursor:pointer}#interaction-app .content-card .interaction .interaction-toolbar .interaction-contact .avatar{margin-right:16px}#interaction-app .content-card .interaction .cannedarea{margin-right:7px;font-size:14px;border:1px solid #ccc;border-radius:3px;align-self:stretch}#interaction-app .content-card .interaction .cannedarea md-autocomplete-wrap{padding:0 1em}#interaction-app .content-card .interaction .emojionearea{margin-right:7px}#interaction-app .content-card .interaction #interaction-content{background:url(/assets/images/patterns/circles-light.png) repeat}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content{padding:24px 0}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .subject .subject-text{margin-right:4px;text-transform:lowercase}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info{padding-bottom:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .avatar{margin-right:16px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .name{margin-right:8px;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .toggle-details{padding-top:16px;cursor:pointer;font-weight:500}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details{padding-top:8px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .title{font-weight:500;margin-right:6px}#interaction-app .content-card .interaction #interaction-content .message-row .mail-content .info .details .detail{color:rgba(0,0,0,.54)}#interaction-app .content-card .interaction #interaction-content .message-row .bubble{position:relative;padding:6px 7px 8px 9px;background-color:#fff;border:1px solid #dcdfe1;border-radius:6px;word-break:break-word}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after,#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#fff transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .time{font-size:11px;margin-top:0;text-align:right}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message{white-space:pre-wrap}#interaction-app .content-card .interaction #interaction-content .message-row .bubble .message span{word-break:break-all}#interaction-app .content-card .interaction #interaction-content .message-row.in{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.in .avatar{margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble{margin-left:auto;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:after{right:-9px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.in-right-aligned .bubble:before{right:-11px;left:auto;-moz-transform:scaleX(-1);-o-transform:scaleX(-1);-webkit-transform:scaleX(-1);transform:scaleX(-1)}#interaction-app .content-card .interaction #interaction-content .message-row.out{padding:5px;align-items:flex-end}#interaction-app .content-card .interaction #interaction-content .message-row.out .avatar{order:2;margin:0 0 0 16px}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble{margin-left:auto;background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned{padding:5px}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .avatar{order:1;margin:0 16px 0 0}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:2}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#interaction-app .content-card .interaction #interaction-content .message-row.out-left-aligned .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#interaction-app .content-card .interaction .interaction-footer{min-height:64px;max-height:180px;background-color:#f3f4f5;color:rgba(0,0,0,.87);border-top:1px solid rgba(0,0,0,.08);padding:8px 8px 8px 16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container{margin:0;padding-right:16px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea{overflow:auto;max-height:80px;transition:height .2s ease}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container textarea.grow{height:80px}#interaction-app .content-card .interaction .interaction-footer .reply-form md-input-container .md-errors-spacer{display:none}#interaction-app .content-card .interaction .interaction-footer .reply-form .md-button{margin:0}#interaction-app .content-card .info md-list-item{min-height:40px;height:52px}#interaction-app .content-card .start-point{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8))}#interaction-app .content-card .start-point .big-circle{background:linear-gradient(to bottom,rgba(255,255,255,.8) 0,rgba(255,255,255,.6) 20%,rgba(255,255,255,.8));border-radius:50%;width:300px;height:300px;line-height:300px;text-align:center}#interaction-app .content-card .start-point .app-title{font-weight:500;font-size:32px;margin:12px 0}#interaction-app .content-card .start-point .secondary-text{font-size:16px}#interaction-app .content-card .sidenav md-toolbar{border-bottom:1px solid rgba(0,0,0,.08)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search{height:36px;line-height:36px;padding:8px;background:#fff;font-size:13px}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search .icon{margin:0;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-toolbar .md-toolbar-tools-bottom .search input{padding-left:12px;height:36px;color:rgba(0,0,0,.54)}#interaction-app .content-card .sidenav md-list.contact-list,#interaction-app .content-card .sidenav md-list.interaction-list{position:relative;transition:all .2s ease-out}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.contact-list md-list-item,#interaction-app .content-card .sidenav md-list.interaction-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item{position:absolute;right:0;left:0;width:100%;transition:transform .2s ease-out;background:#fff;will-change:transform}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave{transform:translateY(0);display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-leave.ng-leave-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-leave.ng-leave-active{transform:translateY(-100%)}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide{display:none}#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.contact-list md-list-item.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list .subheader.ng-hide-remove-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-add-active,#interaction-app .content-card .sidenav md-list.interaction-list md-list-item.ng-hide-remove-active{display:block;transition-property:all}#interaction-app .content-card .sidenav md-list.contact-list .subheader,#interaction-app .content-card .sidenav md-list.interaction-list .subheader{padding-left:16px;font-size:20px;font-weight:300;height:88px;line-height:88px}#interaction-app .content-card .sidenav .no-results-message{position:absolute;width:100%;height:88px;padding:16px;background:#fff;font-size:15px;font-weight:400}#interaction-app .avatar-wrapper{position:relative}#interaction-app .avatar-wrapper .avatar{margin-top:0;margin-bottom:0}#interaction-app .status{position:absolute;top:28px;left:28px;border-radius:50%}#interaction-app .status.online{color:#4caf50}#interaction-app .status.online:before{content:'\e709'}#interaction-app .status.do-not-disturb{color:#f44336}#interaction-app .status.do-not-disturb:before{content:'\e912'}#interaction-app .status.away{background-color:#ffc107;color:#fff}#interaction-app .status.away:before{content:'\e727'}#interaction-app .status.offline{color:#4caf50;background-color:#fff}#interaction-app .status.offline:before{content:'\e704'}#interaction-app .editable-wrap{position:relative}#interaction-app .editable-wrap .editable-controls{display:flex;flex-direction:row;align-items:center;width:100%}#interaction-app .editable-wrap .editable-controls .editable-input{width:inherit;background-color:#fff;padding:8px;border:1px solid rgba(0,0,0,.12)}#interaction-app .editable-wrap .editable-controls .editable-buttons{display:inherit}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button{margin:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button:first-of-type{padding-right:0}#interaction-app .editable-wrap .editable-controls .editable-buttons .md-button .icon-cancel{color:rgba(0,0,0,.32)}#interaction-app .editable-click{cursor:pointer;text-decoration:none;color:inherit;border-bottom:none}#interaction-app .emoji-picker-icon{right:5px;cursor:pointer}#interaction-app .input-show-hide{transition:all linear .5s}#interaction-app .input-show-hide.ng-hide{opacity:0}#interaction-app div.interaction-reply-button-container{display:inline;padding-bottom:14px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}@media screen and (max-width:1280px){#timeline .ms-timeline-item,#timeline.timeline-left .ms-timeline-item,#timeline.timeline-right .ms-timeline-item{display:block}#timeline .ms-timeline-item .timeline-point,#timeline.timeline-left .ms-timeline-item .timeline-point,#timeline.timeline-right .ms-timeline-item .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item .timeline-detail,#timeline.timeline-left .ms-timeline-item .timeline-detail,#timeline.timeline-right .ms-timeline-item .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item .timeline-detail .event,#timeline .ms-timeline-item .timeline-detail .time,#timeline.timeline-left .ms-timeline-item .timeline-detail .event,#timeline.timeline-left .ms-timeline-item .timeline-detail .time,#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{margin:0 auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-point,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-point{position:relative;left:auto;margin:0 auto 16px auto;padding:0}#timeline .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail{padding:2px;margin-bottom:16px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-detail .time,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:0;padding-left:0;text-align:center}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-left .ms-timeline-item:nth-child(even) .timeline-card ms-card,#timeline.timeline-right .ms-timeline-item:nth-child(even) .timeline-card ms-card{margin:0 auto;padding:0}}md-dialog.compose-dialog{max-width:720px;width:720px}md-dialog.compose-dialog.mail-no-secret{max-height:97%;max-width:90%!important;width:100%!important}md-dialog.compose-dialog md-dialog-content{display:block;position:relative}md-dialog.compose-dialog md-toolbar .title{font-size:17px}md-dialog.compose-dialog md-toolbar .vertical-divider{position:absolute;border-right-width:.5px;border-right-style:solid;height:100%}md-dialog.compose-dialog md-chips md-chip{font-size:12px}md-dialog.compose-dialog md-chips .md-chip-input-container{width:100%}md-dialog.compose-dialog .to{position:relative}md-dialog.compose-dialog .to.hidden-cc input{padding-right:32px}md-dialog.compose-dialog .to.hidden-cc.hidden-bcc input{padding-right:56px}md-dialog.compose-dialog .to.hidden-bcc input{padding-right:32px}md-dialog.compose-dialog .to .cc-bcc{position:absolute;bottom:8px;right:0}md-dialog.compose-dialog .to .cc-bcc .show-bcc,md-dialog.compose-dialog .to .cc-bcc .show-cc{cursor:pointer;font-size:12px}md-dialog.compose-dialog .to .cc-bcc .show-bcc{margin-left:8px}md-dialog.compose-dialog .attachment-list{font-size:13px}md-dialog.compose-dialog .attachment-list .attachment{background-color:rgba(0,0,0,.08);border:1px solid rgba(0,0,0,.16);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .attachment-list .attachment .filename{font-weight:500}md-dialog.compose-dialog .attachment-list .attachment .md-button{margin:0}md-dialog.compose-dialog .attachment-list .attachment:last-child{margin-bottom:0}md-dialog.compose-dialog .error-list{font-size:13px}md-dialog.compose-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.compose-dialog .error-list .error .message{font-weight:500}md-dialog.compose-dialog .error-list .error .md-button{margin:0}md-dialog.compose-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.compose-dialog .emojionearea{max-width:700px;min-height:300px}md-dialog.compose-dialog md-dialog-actions{position:relative;justify-content:space-between;border-top:1px solid rgba(0,0,0,.12);background-color:rgba(0,0,0,.03)}@media screen and (max-width:960px){md-dialog.compose-dialog{width:80%}}@media screen and (max-width:600px){md-dialog.compose-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dashboard-general>.center>.header{height:160px;min-height:160px;max-height:160px;padding-bottom:0}#dashboard-general>.center>.header .selected-general{background:rgba(0,0,0,.12);color:#fff;padding:8px 16px;height:40px;line-height:24px;font-size:16px}#dashboard-general>.center>.header .general-selector{margin-left:1px;border-radius:0;background:rgba(0,0,0,.12)}#dashboard-general>.center>.header .general-selector md-icon{color:#fff}#dashboard-general>.center>.content{background:0 0;padding:0}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper{background:#fff;box-shadow:0 1px 3px 0 rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 2px 1px -1px rgba(0,0,0,.12);padding:0 24px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas md-pagination-wrapper{height:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-wrapper md-tabs-canvas .md-tab{padding:16px 24px;text-transform:none}#dashboard-general>.center>.content>md-tabs:not(.md-dynamic-height) md-tabs-content-wrapper{top:56px}#dashboard-general>.center>.content>md-tabs>md-tabs-content-wrapper md-tab-content{padding:12px}#dashboard-general>.sidenav{width:330px;min-width:330px;max-width:330px;padding:0;z-index:51;box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}#dashboard-general>.sidenav.md-locked-open{width:250px;min-width:250px;max-width:250px;z-index:2;box-shadow:none;background:#eee}#dashboard-general .dashboard-container{padding:24px;margin-bottom:24px}#dashboard-general .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.faxAccount-dialog{max-width:720px;width:720px}md-dialog.faxAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.faxAccount-dialog md-toolbar .title{font-size:17px}md-dialog.faxAccount-dialog md-input-container textarea{min-height:150px}md-dialog.faxAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxAccount-dialog .error-list{font-size:13px}md-dialog.faxAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxAccount-dialog .error-list .error .message{font-weight:500}md-dialog.faxAccount-dialog .error-list .error .md-button{margin:0}md-dialog.faxAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxAccount .header{height:76px;min-height:76px;max-height:76px}#fax-faxAccount .header .goto-faxAccounts-button{margin-right:16px}#fax-faxAccount .header .faxAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxAccount .header .faxAccount-image img{height:100%;width:auto;max-width:none}#fax-faxAccount .header .subtitle{margin:6px 0 0 0}#fax-faxAccount .faxAccount-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxAccount .faxAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxAccount .faxAccount-detail-form-container .handle{cursor:move}#fax-faxAccount .faxAccount-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader{position:relative}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader.dropping .drop-text{display:flex}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .upload-button{margin-bottom:16px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxAccount .faxAccount-detail-form-container #faxAccount-image-uploader .faxAccount-image .media{max-height:100%}#fax-faxAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#fax-faxAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#fax-faxAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#fax-faxAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#fax-faxAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#fax-faxAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#fax-faxAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#fax-faxAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#fax-faxAccount .actionAppData{width:80px!important}}#faxAccounts{position:relative}#faxAccounts>.header{height:76px;min-height:76px;max-height:76px}#faxAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#faxAccounts>.header .logo .logo-text{font-size:24px}#faxAccounts>.header md-icon{color:#fff}#faxAccounts>.header .search-input-wrapper{position:relative}#faxAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxAccounts>.header.selected-bar .close-button-wrapper{width:244px}#faxAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxAccounts #add-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#faxAccounts #upload-faxAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.faxQueue-dialog{max-width:720px;width:720px}md-dialog.faxQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.faxQueue-dialog md-toolbar .title{font-size:17px}md-dialog.faxQueue-dialog md-input-container textarea{min-height:150px}md-dialog.faxQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.faxQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.faxQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.faxQueue-dialog .error-list{font-size:13px}md-dialog.faxQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.faxQueue-dialog .error-list .error .message{font-weight:500}md-dialog.faxQueue-dialog .error-list .error .md-button{margin:0}md-dialog.faxQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.faxQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#fax-faxQueue .header{height:76px;min-height:76px;max-height:76px}#fax-faxQueue .header .goto-faxQueues-button{margin-right:16px}#fax-faxQueue .header .faxQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#fax-faxQueue .header .faxQueue-image img{height:100%;width:auto;max-width:none}#fax-faxQueue .header .subtitle{margin:6px 0 0 0}#fax-faxQueue .faxQueue-detail-form-container{padding:24px;margin-bottom:24px}#fax-faxQueue .faxQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#fax-faxQueue .faxQueue-detail-form-container .handle{cursor:move}#fax-faxQueue .faxQueue-detail-form-container md-input-container md-switch{margin:0!important}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader{position:relative}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader.dropping .drop-text{display:flex}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .upload-button{margin-bottom:16px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#fax-faxQueue .faxQueue-detail-form-container #faxQueue-image-uploader .faxQueue-image .media{max-height:100%}#fax-faxQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#fax-faxQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#fax-faxQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#faxQueues{position:relative}#faxQueues>.header{height:76px;min-height:76px;max-height:76px}#faxQueues>.header .logo .logo-icon{margin:0 16px 0 0}#faxQueues>.header .logo .logo-text{font-size:24px}#faxQueues>.header md-icon{color:#fff}#faxQueues>.header .search-input-wrapper{position:relative}#faxQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#faxQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#faxQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#faxQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#faxQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#faxQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#faxQueues>.header.selected-bar .close-button-wrapper{width:244px}#faxQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#faxQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#faxQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#faxQueues #add-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#faxQueues #upload-faxQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#profile .about-tab{max-width:1200px}#profile .about-tab .about{padding:8px}#profile .about-tab .about .general .location md-icon{line-height:13px!important}#profile .about-tab .about .work .job .company{padding:0 16px 0 0;font-weight:500}#profile .about-tab .about .work .job .date{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar{padding:8px 8px 8px 32px}#profile .about-tab .about-sidebar .friends .content .friend{padding:4px}#profile .about-tab .about-sidebar .groups .content .group{margin-bottom:16px}#profile .about-tab .about-sidebar .groups .content .group:last-child{margin-bottom:0}#profile .about-tab .about-sidebar .groups .content .group .logo{border:1px solid rgba(0,0,0,.12);margin-right:16px}#profile .about-tab .about-sidebar .groups .content .group .name{font-weight:500;font-size:15px}#profile .about-tab .about-sidebar .groups .content .group .category,#profile .about-tab .about-sidebar .groups .content .group .members{color:rgba(0,0,0,.54)}#profile .about-tab .about-sidebar .groups .content .group .members{margin-top:16px}@media screen and (max-width:960px){#profile .about-tab .about-sidebar{padding:8px}}#maintenance{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#maintenance #maintenance-form-wrapper{flex:1 0 auto;padding:32px}#maintenance #maintenance-form-wrapper #maintenance-form{max-width:384px;padding:32px;background:#fff;text-align:center}#maintenance #maintenance-form-wrapper #maintenance-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#maintenance #maintenance-form-wrapper #maintenance-form .title{font-size:17px;margin-top:16px}#maintenance #maintenance-form-wrapper #maintenance-form .subtitle{margin:16px 0;max-width:300px;color:rgba(0,0,0,.54);font-size:15px}@media screen and (max-width:600px){#maintenance #maintenance-form-wrapper{padding:16px}#maintenance #maintenance-form-wrapper #maintenance-form{padding:24px;width:100%}}md-dialog.deskAccount-dialog{max-width:720px;width:720px}md-dialog.deskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-dialog .error-list{font-size:13px}md-dialog.deskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#deskAccounts{position:relative}#deskAccounts>.header{height:76px;min-height:76px;max-height:76px}#deskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#deskAccounts>.header .logo .logo-text{font-size:24px}#deskAccounts>.header md-icon{color:#fff}#deskAccounts>.header .search-input-wrapper{position:relative}#deskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#deskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#deskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#deskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#deskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#deskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#deskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#deskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#deskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#deskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#deskAccounts #add-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#deskAccounts #upload-deskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.deskConfiguration-dialog{max-width:720px;width:720px}md-dialog.deskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.deskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.deskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.deskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskConfiguration-dialog .error-list{font-size:13px}md-dialog.deskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.deskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.deskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.deskAccount-item-dialog{max-width:720px;width:720px}md-dialog.deskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.deskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.deskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.deskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.deskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.deskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.deskAccount-item-dialog .error-list{font-size:13px}md-dialog.deskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.deskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.deskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.deskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.deskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-deskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-deskAccount .header .goto-deskAccounts-button{margin-right:16px}#integrations-deskAccount .header .deskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-deskAccount .header .deskAccount-image img{height:100%;width:auto;max-width:none}#integrations-deskAccount .header .subtitle{margin:6px 0 0 0}#integrations-deskAccount .deskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-deskAccount .deskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-deskAccount .deskAccount-detail-form-container .handle{cursor:move}#integrations-deskAccount .deskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader{position:relative}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-deskAccount .deskAccount-detail-form-container #deskAccount-image-uploader .deskAccount-image .media{max-height:100%}#integrations-deskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-deskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-deskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.dynamics365Account-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dynamics365Accounts{position:relative}#dynamics365Accounts>.header{height:76px;min-height:76px;max-height:76px}#dynamics365Accounts>.header .logo .logo-icon{margin:0 16px 0 0}#dynamics365Accounts>.header .logo .logo-text{font-size:24px}#dynamics365Accounts>.header md-icon{color:#fff}#dynamics365Accounts>.header .search-input-wrapper{position:relative}#dynamics365Accounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dynamics365Accounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dynamics365Accounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dynamics365Accounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dynamics365Accounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dynamics365Accounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dynamics365Accounts>.header.selected-bar .close-button-wrapper{width:244px}#dynamics365Accounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dynamics365Accounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dynamics365Accounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dynamics365Accounts #add-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}#dynamics365Accounts #upload-dynamics365Account-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dynamics365Configuration-dialog{max-width:720px;width:720px}md-dialog.dynamics365Configuration-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Configuration-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Configuration-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Configuration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Configuration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Configuration-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Configuration-dialog .error-list{font-size:13px}md-dialog.dynamics365Configuration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Configuration-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Configuration-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Configuration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Configuration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.dynamics365Account-item-dialog{max-width:720px;width:720px}md-dialog.dynamics365Account-item-dialog md-dialog-content{display:block;position:relative}md-dialog.dynamics365Account-item-dialog md-toolbar .title{font-size:17px}md-dialog.dynamics365Account-item-dialog md-input-container textarea{min-height:150px}md-dialog.dynamics365Account-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dynamics365Account-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dynamics365Account-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.dynamics365Account-item-dialog .error-list{font-size:13px}md-dialog.dynamics365Account-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dynamics365Account-item-dialog .error-list .error .message{font-weight:500}md-dialog.dynamics365Account-item-dialog .error-list .error .md-button{margin:0}md-dialog.dynamics365Account-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dynamics365Account-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-dynamics365Account .header{height:76px;min-height:76px;max-height:76px}#integrations-dynamics365Account .header .goto-dynamics365Accounts-button{margin-right:16px}#integrations-dynamics365Account .header .dynamics365Account-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-dynamics365Account .header .dynamics365Account-image img{height:100%;width:auto;max-width:none}#integrations-dynamics365Account .header .subtitle{margin:6px 0 0 0}#integrations-dynamics365Account .dynamics365Account-detail-form-container{padding:24px;margin-bottom:24px}#integrations-dynamics365Account .dynamics365Account-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-dynamics365Account .dynamics365Account-detail-form-container .handle{cursor:move}#integrations-dynamics365Account .dynamics365Account-detail-form-container md-input-container md-switch{margin:0!important}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader{position:relative}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader.dropping .drop-text{display:flex}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .upload-button{margin-bottom:16px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-dynamics365Account .dynamics365Account-detail-form-container #dynamics365Account-image-uploader .dynamics365Account-image .media{max-height:100%}#integrations-dynamics365Account md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-dynamics365Account md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-dynamics365Account md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.freshdeskAccount-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshdeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskConfiguration-dialog .error-list{font-size:13px}md-dialog.freshdeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshdeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshdeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshdeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshdeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshdeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshdeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshdeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshdeskAccount-item-dialog .error-list{font-size:13px}md-dialog.freshdeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshdeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshdeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshdeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshdeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshdeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshdeskAccount .header .goto-freshdeskAccounts-button{margin-right:16px}#integrations-freshdeskAccount .header .freshdeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshdeskAccount .header .freshdeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshdeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container .handle{cursor:move}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader{position:relative}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshdeskAccount .freshdeskAccount-detail-form-container #freshdeskAccount-image-uploader .freshdeskAccount-image .media{max-height:100%}#integrations-freshdeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshdeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshdeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshdeskAccounts{position:relative}#freshdeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshdeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshdeskAccounts>.header .logo .logo-text{font-size:24px}#freshdeskAccounts>.header md-icon{color:#fff}#freshdeskAccounts>.header .search-input-wrapper{position:relative}#freshdeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshdeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshdeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshdeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshdeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshdeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshdeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshdeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshdeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshdeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshdeskAccounts #add-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshdeskAccounts #upload-freshdeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.freshsalesAccount-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesConfiguration-dialog{max-width:720px;width:720px}md-dialog.freshsalesConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesConfiguration-dialog .error-list{font-size:13px}md-dialog.freshsalesConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.freshsalesAccount-item-dialog{max-width:720px;width:720px}md-dialog.freshsalesAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.freshsalesAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.freshsalesAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.freshsalesAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.freshsalesAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.freshsalesAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.freshsalesAccount-item-dialog .error-list{font-size:13px}md-dialog.freshsalesAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.freshsalesAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.freshsalesAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.freshsalesAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.freshsalesAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-freshsalesAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-freshsalesAccount .header .goto-freshsalesAccounts-button{margin-right:16px}#integrations-freshsalesAccount .header .freshsalesAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-freshsalesAccount .header .freshsalesAccount-image img{height:100%;width:auto;max-width:none}#integrations-freshsalesAccount .header .subtitle{margin:6px 0 0 0}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container .handle{cursor:move}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader{position:relative}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader.dropping .drop-text{display:flex}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-freshsalesAccount .freshsalesAccount-detail-form-container #freshsalesAccount-image-uploader .freshsalesAccount-image .media{max-height:100%}#integrations-freshsalesAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-freshsalesAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-freshsalesAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#freshsalesAccounts{position:relative}#freshsalesAccounts>.header{height:76px;min-height:76px;max-height:76px}#freshsalesAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#freshsalesAccounts>.header .logo .logo-text{font-size:24px}#freshsalesAccounts>.header md-icon{color:#fff}#freshsalesAccounts>.header .search-input-wrapper{position:relative}#freshsalesAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#freshsalesAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#freshsalesAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#freshsalesAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#freshsalesAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#freshsalesAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#freshsalesAccounts>.header.selected-bar .close-button-wrapper{width:244px}#freshsalesAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#freshsalesAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#freshsalesAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#freshsalesAccounts #add-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#freshsalesAccounts #upload-freshsalesAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.salesforceAccount-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceConfiguration-dialog{max-width:720px;width:720px}md-dialog.salesforceConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceConfiguration-dialog .error-list{font-size:13px}md-dialog.salesforceConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.salesforceAccount-item-dialog{max-width:720px;width:720px}md-dialog.salesforceAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.salesforceAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.salesforceAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.salesforceAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.salesforceAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.salesforceAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.salesforceAccount-item-dialog .error-list{font-size:13px}md-dialog.salesforceAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.salesforceAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.salesforceAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.salesforceAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.salesforceAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-salesforceAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-salesforceAccount .header .goto-salesforceAccounts-button{margin-right:16px}#integrations-salesforceAccount .header .salesforceAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-salesforceAccount .header .salesforceAccount-image img{height:100%;width:auto;max-width:none}#integrations-salesforceAccount .header .subtitle{margin:6px 0 0 0}#integrations-salesforceAccount .salesforceAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-salesforceAccount .salesforceAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-salesforceAccount .salesforceAccount-detail-form-container .handle{cursor:move}#integrations-salesforceAccount .salesforceAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader{position:relative}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader.dropping .drop-text{display:flex}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-salesforceAccount .salesforceAccount-detail-form-container #salesforceAccount-image-uploader .salesforceAccount-image .media{max-height:100%}#integrations-salesforceAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-salesforceAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-salesforceAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#salesforceAccounts{position:relative}#salesforceAccounts>.header{height:76px;min-height:76px;max-height:76px}#salesforceAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#salesforceAccounts>.header .logo .logo-text{font-size:24px}#salesforceAccounts>.header md-icon{color:#fff}#salesforceAccounts>.header .search-input-wrapper{position:relative}#salesforceAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#salesforceAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#salesforceAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#salesforceAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#salesforceAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#salesforceAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#salesforceAccounts>.header.selected-bar .close-button-wrapper{width:244px}#salesforceAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#salesforceAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#salesforceAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#salesforceAccounts #add-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#salesforceAccounts #upload-salesforceAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.servicenowAccount-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowConfiguration-dialog{max-width:720px;width:720px}md-dialog.servicenowConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowConfiguration-dialog .error-list{font-size:13px}md-dialog.servicenowConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.servicenowAccount-item-dialog{max-width:720px;width:720px}md-dialog.servicenowAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.servicenowAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.servicenowAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.servicenowAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.servicenowAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.servicenowAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.servicenowAccount-item-dialog .error-list{font-size:13px}md-dialog.servicenowAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.servicenowAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.servicenowAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.servicenowAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.servicenowAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-servicenowAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-servicenowAccount .header .goto-servicenowAccounts-button{margin-right:16px}#integrations-servicenowAccount .header .servicenowAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-servicenowAccount .header .servicenowAccount-image img{height:100%;width:auto;max-width:none}#integrations-servicenowAccount .header .subtitle{margin:6px 0 0 0}#integrations-servicenowAccount .servicenowAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-servicenowAccount .servicenowAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-servicenowAccount .servicenowAccount-detail-form-container .handle{cursor:move}#integrations-servicenowAccount .servicenowAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader{position:relative}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader.dropping .drop-text{display:flex}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-servicenowAccount .servicenowAccount-detail-form-container #servicenowAccount-image-uploader .servicenowAccount-image .media{max-height:100%}#integrations-servicenowAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-servicenowAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-servicenowAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#servicenowAccounts{position:relative}#servicenowAccounts>.header{height:76px;min-height:76px;max-height:76px}#servicenowAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#servicenowAccounts>.header .logo .logo-text{font-size:24px}#servicenowAccounts>.header md-icon{color:#fff}#servicenowAccounts>.header .search-input-wrapper{position:relative}#servicenowAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#servicenowAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#servicenowAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#servicenowAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#servicenowAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#servicenowAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#servicenowAccounts>.header.selected-bar .close-button-wrapper{width:244px}#servicenowAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#servicenowAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#servicenowAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#servicenowAccounts #add-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#servicenowAccounts #upload-servicenowAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sugarcrmAccount-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmConfiguration-dialog{max-width:720px;width:720px}md-dialog.sugarcrmConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmConfiguration-dialog .error-list{font-size:13px}md-dialog.sugarcrmConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.sugarcrmAccount-item-dialog{max-width:720px;width:720px}md-dialog.sugarcrmAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.sugarcrmAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.sugarcrmAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.sugarcrmAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sugarcrmAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sugarcrmAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.sugarcrmAccount-item-dialog .error-list{font-size:13px}md-dialog.sugarcrmAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sugarcrmAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.sugarcrmAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.sugarcrmAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sugarcrmAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-sugarcrmAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-sugarcrmAccount .header .goto-sugarcrmAccounts-button{margin-right:16px}#integrations-sugarcrmAccount .header .sugarcrmAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-sugarcrmAccount .header .sugarcrmAccount-image img{height:100%;width:auto;max-width:none}#integrations-sugarcrmAccount .header .subtitle{margin:6px 0 0 0}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container .handle{cursor:move}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader{position:relative}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader.dropping .drop-text{display:flex}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-sugarcrmAccount .sugarcrmAccount-detail-form-container #sugarcrmAccount-image-uploader .sugarcrmAccount-image .media{max-height:100%}#integrations-sugarcrmAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-sugarcrmAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-sugarcrmAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#sugarcrmAccounts{position:relative}#sugarcrmAccounts>.header{height:76px;min-height:76px;max-height:76px}#sugarcrmAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#sugarcrmAccounts>.header .logo .logo-text{font-size:24px}#sugarcrmAccounts>.header md-icon{color:#fff}#sugarcrmAccounts>.header .search-input-wrapper{position:relative}#sugarcrmAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sugarcrmAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sugarcrmAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sugarcrmAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sugarcrmAccounts>.header.selected-bar .close-button-wrapper{width:244px}#sugarcrmAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sugarcrmAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sugarcrmAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sugarcrmAccounts #add-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#sugarcrmAccounts #upload-sugarcrmAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.vtigerAccount-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerConfiguration-dialog{max-width:720px;width:720px}md-dialog.vtigerConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerConfiguration-dialog .error-list{font-size:13px}md-dialog.vtigerConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.vtigerAccount-item-dialog{max-width:720px;width:720px}md-dialog.vtigerAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.vtigerAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.vtigerAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.vtigerAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.vtigerAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.vtigerAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.vtigerAccount-item-dialog .error-list{font-size:13px}md-dialog.vtigerAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.vtigerAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.vtigerAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.vtigerAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.vtigerAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-vtigerAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-vtigerAccount .header .goto-vtigerAccounts-button{margin-right:16px}#integrations-vtigerAccount .header .vtigerAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-vtigerAccount .header .vtigerAccount-image img{height:100%;width:auto;max-width:none}#integrations-vtigerAccount .header .subtitle{margin:6px 0 0 0}#integrations-vtigerAccount .vtigerAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-vtigerAccount .vtigerAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-vtigerAccount .vtigerAccount-detail-form-container .handle{cursor:move}#integrations-vtigerAccount .vtigerAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader{position:relative}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader.dropping .drop-text{display:flex}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-vtigerAccount .vtigerAccount-detail-form-container #vtigerAccount-image-uploader .vtigerAccount-image .media{max-height:100%}#integrations-vtigerAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-vtigerAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-vtigerAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#vtigerAccounts{position:relative}#vtigerAccounts>.header{height:76px;min-height:76px;max-height:76px}#vtigerAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#vtigerAccounts>.header .logo .logo-text{font-size:24px}#vtigerAccounts>.header md-icon{color:#fff}#vtigerAccounts>.header .search-input-wrapper{position:relative}#vtigerAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#vtigerAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#vtigerAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#vtigerAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#vtigerAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#vtigerAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#vtigerAccounts>.header.selected-bar .close-button-wrapper{width:244px}#vtigerAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#vtigerAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#vtigerAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#vtigerAccounts #add-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#vtigerAccounts #upload-vtigerAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zendeskAccount-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zendeskAccount-item-dialog{max-width:720px;width:720px}md-dialog.zendeskAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskAccount-item-dialog .error-list{font-size:13px}md-dialog.zendeskAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zendeskAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zendeskAccount .header .goto-zendeskAccounts-button{margin-right:16px}#integrations-zendeskAccount .header .zendeskAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zendeskAccount .header .zendeskAccount-image img{height:100%;width:auto;max-width:none}#integrations-zendeskAccount .header .subtitle{margin:6px 0 0 0}#integrations-zendeskAccount .zendeskAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zendeskAccount .zendeskAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zendeskAccount .zendeskAccount-detail-form-container .handle{cursor:move}#integrations-zendeskAccount .zendeskAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader{position:relative}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zendeskAccount .zendeskAccount-detail-form-container #zendeskAccount-image-uploader .zendeskAccount-image .media{max-height:100%}#integrations-zendeskAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zendeskAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zendeskAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.zendeskConfiguration-dialog{max-width:720px;width:720px}md-dialog.zendeskConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zendeskConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zendeskConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zendeskConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zendeskConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zendeskConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zendeskConfiguration-dialog .error-list{font-size:13px}md-dialog.zendeskConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zendeskConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zendeskConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zendeskConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zendeskConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#zendeskAccounts{position:relative}#zendeskAccounts>.header{height:76px;min-height:76px;max-height:76px}#zendeskAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zendeskAccounts>.header .logo .logo-text{font-size:24px}#zendeskAccounts>.header md-icon{color:#fff}#zendeskAccounts>.header .search-input-wrapper{position:relative}#zendeskAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zendeskAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zendeskAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zendeskAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zendeskAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zendeskAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zendeskAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zendeskAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zendeskAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zendeskAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zendeskAccounts #add-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zendeskAccounts #upload-zendeskAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.zohoAccount-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-dialog .error-list{font-size:13px}md-dialog.zohoAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoConfiguration-dialog{max-width:720px;width:720px}md-dialog.zohoConfiguration-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoConfiguration-dialog md-toolbar .title{font-size:17px}md-dialog.zohoConfiguration-dialog md-input-container textarea{min-height:150px}md-dialog.zohoConfiguration-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoConfiguration-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoConfiguration-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoConfiguration-dialog .error-list{font-size:13px}md-dialog.zohoConfiguration-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoConfiguration-dialog .error-list .error .message{font-weight:500}md-dialog.zohoConfiguration-dialog .error-list .error .md-button{margin:0}md-dialog.zohoConfiguration-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoConfiguration-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.zohoAccount-item-dialog{max-width:720px;width:720px}md-dialog.zohoAccount-item-dialog md-dialog-content{display:block;position:relative}md-dialog.zohoAccount-item-dialog md-toolbar .title{font-size:17px}md-dialog.zohoAccount-item-dialog md-input-container textarea{min-height:150px}md-dialog.zohoAccount-item-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.zohoAccount-item-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.zohoAccount-item-dialog .date-container{padding:16px 0 24px 0}md-dialog.zohoAccount-item-dialog .error-list{font-size:13px}md-dialog.zohoAccount-item-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.zohoAccount-item-dialog .error-list .error .message{font-weight:500}md-dialog.zohoAccount-item-dialog .error-list .error .md-button{margin:0}md-dialog.zohoAccount-item-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.zohoAccount-item-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#integrations-zohoAccount .header{height:76px;min-height:76px;max-height:76px}#integrations-zohoAccount .header .goto-zohoAccounts-button{margin-right:16px}#integrations-zohoAccount .header .zohoAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#integrations-zohoAccount .header .zohoAccount-image img{height:100%;width:auto;max-width:none}#integrations-zohoAccount .header .subtitle{margin:6px 0 0 0}#integrations-zohoAccount .zohoAccount-detail-form-container{padding:24px;margin-bottom:24px}#integrations-zohoAccount .zohoAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#integrations-zohoAccount .zohoAccount-detail-form-container .handle{cursor:move}#integrations-zohoAccount .zohoAccount-detail-form-container md-input-container md-switch{margin:0!important}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader{position:relative}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader.dropping .drop-text{display:flex}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .upload-button{margin-bottom:16px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#integrations-zohoAccount .zohoAccount-detail-form-container #zohoAccount-image-uploader .zohoAccount-image .media{max-height:100%}#integrations-zohoAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#integrations-zohoAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#integrations-zohoAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}#zohoAccounts{position:relative}#zohoAccounts>.header{height:76px;min-height:76px;max-height:76px}#zohoAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#zohoAccounts>.header .logo .logo-text{font-size:24px}#zohoAccounts>.header md-icon{color:#fff}#zohoAccounts>.header .search-input-wrapper{position:relative}#zohoAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#zohoAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#zohoAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#zohoAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#zohoAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#zohoAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#zohoAccounts>.header.selected-bar .close-button-wrapper{width:244px}#zohoAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#zohoAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#zohoAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#zohoAccounts #add-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#zohoAccounts #upload-zohoAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.project-dialog{max-width:720px;width:720px}md-dialog.project-dialog md-dialog-content{display:block;position:relative}md-dialog.project-dialog md-toolbar .title{font-size:17px}md-dialog.project-dialog md-input-container textarea{min-height:150px}md-dialog.project-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.project-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.project-dialog .date-container{padding:16px 0 24px 0}md-dialog.project-dialog .error-list{font-size:13px}md-dialog.project-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.project-dialog .error-list .error .message{font-weight:500}md-dialog.project-dialog .error-list .error .md-button{margin:0}md-dialog.project-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.project-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.session-dialog{max-width:720px;width:720px}md-dialog.session-dialog md-dialog-content{display:block;position:relative}md-dialog.session-dialog md-toolbar .title{font-size:17px}md-dialog.session-dialog md-input-container textarea{min-height:150px}md-dialog.session-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.session-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.session-dialog .date-container{padding:16px 0 24px 0}md-dialog.session-dialog .error-list{font-size:13px}md-dialog.session-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.session-dialog .error-list .error .message{font-weight:500}md-dialog.session-dialog .error-list .error .md-button{margin:0}md-dialog.session-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.session-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#jscripty-project .header{height:76px;min-height:76px;max-height:76px}#jscripty-project .header .goto-projects-button{margin-right:16px}#jscripty-project .header .project-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#jscripty-project .header .project-image img{height:100%;width:auto;max-width:none}#jscripty-project .header .subtitle{margin:6px 0 0 0}#jscripty-project .project-detail-form-container{padding:24px;margin-bottom:24px}#jscripty-project .project-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#jscripty-project .project-detail-form-container .handle{cursor:move}#jscripty-project .project-detail-form-container md-input-container md-switch{margin:0!important}#jscripty-project .project-detail-form-container #project-image-uploader{position:relative}#jscripty-project .project-detail-form-container #project-image-uploader.dropping .drop-text{display:flex}#jscripty-project .project-detail-form-container #project-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#jscripty-project .project-detail-form-container #project-image-uploader .upload-button{margin-bottom:16px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#jscripty-project .project-detail-form-container #project-image-uploader .project-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#jscripty-project .project-detail-form-container #project-image-uploader .project-image .media{max-height:100%}#jscripty-project md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#jscripty-project md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#jscripty-project md-table-container.font-size-12 td.md-cell{font-size:12px!important}#projects{position:relative}#projects>.header{height:76px;min-height:76px;max-height:76px}#projects>.header .logo .logo-icon{margin:0 16px 0 0}#projects>.header .logo .logo-text{font-size:24px}#projects>.header md-icon{color:#fff}#projects>.header .search-input-wrapper{position:relative}#projects>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#projects>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#projects>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#projects>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#projects>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#projects>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#projects>.header.selected-bar .close-button-wrapper{width:244px}#projects>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#projects>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#projects>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#projects #add-project-button{position:fixed;bottom:8px;right:8px;padding:0}#projects #upload-project-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailAccount-dialog{max-width:720px;width:720px}md-dialog.mailAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.mailAccount-dialog md-toolbar .title{font-size:17px}md-dialog.mailAccount-dialog md-input-container textarea{min-height:150px}md-dialog.mailAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailAccount-dialog .error-list{font-size:13px}md-dialog.mailAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailAccount-dialog .error-list .error .message{font-weight:500}md-dialog.mailAccount-dialog .error-list .error .md-button{margin:0}md-dialog.mailAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mailCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.mailCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.mailCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.mailCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.mailCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailCannedAnswer-dialog .error-list{font-size:13px}md-dialog.mailCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.mailCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.mailCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailAccount .header{height:76px;min-height:76px;max-height:76px}#mail-mailAccount .header .goto-mailAccounts-button{margin-right:16px}#mail-mailAccount .header .mailAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailAccount .header .mailAccount-image img{height:100%;width:auto;max-width:none}#mail-mailAccount .header .subtitle{margin:6px 0 0 0}#mail-mailAccount .mailAccount-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailAccount .mailAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailAccount .mailAccount-detail-form-container .handle{cursor:move}#mail-mailAccount .mailAccount-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader{position:relative}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader.dropping .drop-text{display:flex}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .upload-button{margin-bottom:16px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailAccount .mailAccount-detail-form-container #mailAccount-image-uploader .mailAccount-image .media{max-height:100%}#mail-mailAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#mail-mailAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#mail-mailAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#mail-mailAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#mail-mailAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#mail-mailAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#mail-mailAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#mail-mailAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#mail-mailAccount .actionAppData{width:80px!important}}#mailAccounts{position:relative}#mailAccounts>.header{height:76px;min-height:76px;max-height:76px}#mailAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#mailAccounts>.header .logo .logo-text{font-size:24px}#mailAccounts>.header md-icon{color:#fff}#mailAccounts>.header .search-input-wrapper{position:relative}#mailAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailAccounts>.header.selected-bar .close-button-wrapper{width:244px}#mailAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailAccounts #add-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#mailAccounts #upload-mailAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailQueue-dialog{max-width:720px;width:720px}md-dialog.mailQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.mailQueue-dialog md-toolbar .title{font-size:17px}md-dialog.mailQueue-dialog md-input-container textarea{min-height:150px}md-dialog.mailQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailQueue-dialog .error-list{font-size:13px}md-dialog.mailQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailQueue-dialog .error-list .error .message{font-weight:500}md-dialog.mailQueue-dialog .error-list .error .md-button{margin:0}md-dialog.mailQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mail-mailQueue .header{height:76px;min-height:76px;max-height:76px}#mail-mailQueue .header .goto-mailQueues-button{margin-right:16px}#mail-mailQueue .header .mailQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#mail-mailQueue .header .mailQueue-image img{height:100%;width:auto;max-width:none}#mail-mailQueue .header .subtitle{margin:6px 0 0 0}#mail-mailQueue .mailQueue-detail-form-container{padding:24px;margin-bottom:24px}#mail-mailQueue .mailQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#mail-mailQueue .mailQueue-detail-form-container .handle{cursor:move}#mail-mailQueue .mailQueue-detail-form-container md-input-container md-switch{margin:0!important}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader{position:relative}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader.dropping .drop-text{display:flex}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .upload-button{margin-bottom:16px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#mail-mailQueue .mailQueue-detail-form-container #mailQueue-image-uploader .mailQueue-image .media{max-height:100%}#mail-mailQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#mail-mailQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#mail-mailQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#mailQueues{position:relative}#mailQueues>.header{height:76px;min-height:76px;max-height:76px}#mailQueues>.header .logo .logo-icon{margin:0 16px 0 0}#mailQueues>.header .logo .logo-text{font-size:24px}#mailQueues>.header md-icon{color:#fff}#mailQueues>.header .search-input-wrapper{position:relative}#mailQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailQueues>.header.selected-bar .close-button-wrapper{width:244px}#mailQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailQueues #add-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#mailQueues #upload-mailQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.mailSubstatus-dialog{max-width:720px;width:720px}md-dialog.mailSubstatus-dialog md-dialog-content{display:block;position:relative}md-dialog.mailSubstatus-dialog md-toolbar .title{font-size:17px}md-dialog.mailSubstatus-dialog md-input-container textarea{min-height:150px}md-dialog.mailSubstatus-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mailSubstatus-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mailSubstatus-dialog .date-container{padding:16px 0 24px 0}md-dialog.mailSubstatus-dialog .error-list{font-size:13px}md-dialog.mailSubstatus-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mailSubstatus-dialog .error-list .error .message{font-weight:500}md-dialog.mailSubstatus-dialog .error-list .error .md-button{margin:0}md-dialog.mailSubstatus-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mailSubstatus-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#mailSubtatuses{position:relative}#mailSubtatuses>.header{height:76px;min-height:76px;max-height:76px}#mailSubtatuses>.header .logo .logo-icon{margin:0 16px 0 0}#mailSubtatuses>.header .logo .logo-text{font-size:24px}#mailSubtatuses>.header md-icon{color:#fff}#mailSubtatuses>.header .search-input-wrapper{position:relative}#mailSubtatuses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#mailSubtatuses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#mailSubtatuses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#mailSubtatuses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#mailSubtatuses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#mailSubtatuses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#mailSubtatuses>.header.selected-bar .close-button-wrapper{width:244px}#mailSubtatuses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#mailSubtatuses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#mailSubtatuses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#mailSubtatuses #add-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#mailSubtatuses #upload-mailSubstatus-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.plugin-dialog{max-width:720px;width:720px}md-dialog.plugin-dialog md-dialog-content{display:block;position:relative}md-dialog.plugin-dialog md-toolbar .title{font-size:17px}md-dialog.plugin-dialog md-input-container textarea{min-height:150px}md-dialog.plugin-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.plugin-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.plugin-dialog .date-container{padding:16px 0 24px 0}md-dialog.plugin-dialog .error-list{font-size:13px}md-dialog.plugin-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.plugin-dialog .error-list .error .message{font-weight:500}md-dialog.plugin-dialog .error-list .error .md-button{margin:0}md-dialog.plugin-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.plugin-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#marketplace-plugin .header{height:76px;min-height:76px;max-height:76px}#marketplace-plugin .header .goto-plugins-button{margin-right:16px}#marketplace-plugin .header .plugin-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#marketplace-plugin .header .plugin-image img{height:100%;width:auto;max-width:none}#marketplace-plugin .header .subtitle{margin:6px 0 0 0}#marketplace-plugin .plugin-detail-form-container{padding:24px;margin-bottom:24px}#marketplace-plugin .plugin-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#marketplace-plugin .plugin-detail-form-container .handle{cursor:move}#marketplace-plugin .plugin-detail-form-container md-input-container md-switch{margin:0!important}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader{position:relative}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader.dropping .drop-text{display:flex}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .upload-button{margin-bottom:16px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#marketplace-plugin .plugin-detail-form-container #plugin-image-uploader .plugin-image .media{max-height:100%}#marketplace-plugin md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#marketplace-plugin md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#marketplace-plugin md-table-container.font-size-12 td.md-cell{font-size:12px!important}#plugins{position:relative}#plugins>.header{height:76px;min-height:76px;max-height:76px}#plugins>.header .logo .logo-icon{margin:0 16px 0 0}#plugins>.header .logo .logo-text{font-size:24px}#plugins>.header md-icon{color:#fff}#plugins>.header .search-input-wrapper{position:relative}#plugins>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#plugins>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#plugins>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#plugins>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#plugins>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#plugins>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#plugins>.header.selected-bar .close-button-wrapper{width:244px}#plugins>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#plugins>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#plugins>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#plugins #add-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}#plugins #upload-plugin-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .plugin-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .plugin-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.ivrCampaign-dialog{max-width:720px;width:720px}md-dialog.ivrCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.ivrCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.ivrCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.ivrCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.ivrCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.ivrCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.ivrCampaign-dialog .error-list{font-size:13px}md-dialog.ivrCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.ivrCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.ivrCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.ivrCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.ivrCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-ivrCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-ivrCampaign .header .goto-ivrCampaigns-button{margin-right:16px}#motiondialer-ivrCampaign .header .ivrCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-ivrCampaign .header .ivrCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-ivrCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container .handle{cursor:move}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader{position:relative}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-ivrCampaign .ivrCampaign-detail-form-container #ivrCampaign-image-uploader .ivrCampaign-image .media{max-height:100%}#motiondialer-ivrCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-ivrCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-ivrCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#ivrCampaigns{position:relative}#ivrCampaigns>.header{height:76px;min-height:76px;max-height:76px}#ivrCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#ivrCampaigns>.header .logo .logo-text{font-size:24px}#ivrCampaigns>.header md-icon{color:#fff}#ivrCampaigns>.header .search-input-wrapper{position:relative}#ivrCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#ivrCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#ivrCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#ivrCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#ivrCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#ivrCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#ivrCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#ivrCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#ivrCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#ivrCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#ivrCampaigns #add-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#ivrCampaigns #upload-ivrCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.queueCampaign-dialog{max-width:720px;width:720px}md-dialog.queueCampaign-dialog md-dialog-content{display:block;position:relative}md-dialog.queueCampaign-dialog md-toolbar .title{font-size:17px}md-dialog.queueCampaign-dialog md-input-container textarea{min-height:150px}md-dialog.queueCampaign-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.queueCampaign-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.queueCampaign-dialog .date-container{padding:16px 0 24px 0}md-dialog.queueCampaign-dialog .error-list{font-size:13px}md-dialog.queueCampaign-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.queueCampaign-dialog .error-list .error .message{font-weight:500}md-dialog.queueCampaign-dialog .error-list .error .md-button{margin:0}md-dialog.queueCampaign-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.queueCampaign-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.hopper-dialog{max-width:720px;width:720px}md-dialog.hopper-dialog md-dialog-content{display:block;position:relative}md-dialog.hopper-dialog md-toolbar .title{font-size:17px}md-dialog.hopper-dialog md-input-container textarea{min-height:150px}md-dialog.hopper-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.hopper-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.hopper-dialog .date-container{padding:16px 0 24px 0}md-dialog.hopper-dialog .error-list{font-size:13px}md-dialog.hopper-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.hopper-dialog .error-list .error .message{font-weight:500}md-dialog.hopper-dialog .error-list .error .md-button{margin:0}md-dialog.hopper-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.hopper-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#motiondialer-queueCampaign .header{height:76px;min-height:76px;max-height:76px}#motiondialer-queueCampaign .header .goto-queueCampaigns-button{margin-right:16px}#motiondialer-queueCampaign .header .queueCampaign-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#motiondialer-queueCampaign .header .queueCampaign-image img{height:100%;width:auto;max-width:none}#motiondialer-queueCampaign .header .subtitle{margin:6px 0 0 0}#motiondialer-queueCampaign .queueCampaign-detail-form-container{padding:24px;margin-bottom:24px}#motiondialer-queueCampaign .queueCampaign-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#motiondialer-queueCampaign .queueCampaign-detail-form-container .handle{cursor:move}#motiondialer-queueCampaign .queueCampaign-detail-form-container md-input-container md-switch{margin:0!important}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader{position:relative}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader.dropping .drop-text{display:flex}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .upload-button{margin-bottom:16px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#motiondialer-queueCampaign .queueCampaign-detail-form-container #queueCampaign-image-uploader .queueCampaign-image .media{max-height:100%}#motiondialer-queueCampaign md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#motiondialer-queueCampaign md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#motiondialer-queueCampaign md-table-container.font-size-12 td.md-cell{font-size:12px!important}#queueCampaigns{position:relative}#queueCampaigns>.header{height:76px;min-height:76px;max-height:76px}#queueCampaigns>.header .logo .logo-icon{margin:0 16px 0 0}#queueCampaigns>.header .logo .logo-text{font-size:24px}#queueCampaigns>.header md-icon{color:#fff}#queueCampaigns>.header .search-input-wrapper{position:relative}#queueCampaigns>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#queueCampaigns>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#queueCampaigns>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#queueCampaigns>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#queueCampaigns>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#queueCampaigns>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#queueCampaigns>.header.selected-bar .close-button-wrapper{width:244px}#queueCampaigns>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#queueCampaigns>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#queueCampaigns>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#queueCampaigns #add-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#queueCampaigns #upload-queueCampaign-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelAccount-dialog{max-width:720px;width:720px}md-dialog.openchannelAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelAccount-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelAccount-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelAccount-dialog .error-list{font-size:13px}md-dialog.openchannelAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelAccount-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelAccount-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.openchannelCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.openchannelCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelCannedAnswer-dialog .error-list{font-size:13px}md-dialog.openchannelCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelAccount .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelAccount .header .goto-openchannelAccounts-button{margin-right:16px}#openchannel-openchannelAccount .header .openchannelAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelAccount .header .openchannelAccount-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelAccount .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelAccount .openchannelAccount-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container .handle{cursor:move}#openchannel-openchannelAccount .openchannelAccount-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader{position:relative}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelAccount .openchannelAccount-detail-form-container #openchannelAccount-image-uploader .openchannelAccount-image .media{max-height:100%}#openchannel-openchannelAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#openchannel-openchannelAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#openchannel-openchannelAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#openchannel-openchannelAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#openchannel-openchannelAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#openchannel-openchannelAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#openchannel-openchannelAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#openchannel-openchannelAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#openchannel-openchannelAccount .actionAppData{width:80px!important}}#openchannelAccounts{position:relative}#openchannelAccounts>.header{height:76px;min-height:76px;max-height:76px}#openchannelAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelAccounts>.header .logo .logo-text{font-size:24px}#openchannelAccounts>.header md-icon{color:#fff}#openchannelAccounts>.header .search-input-wrapper{position:relative}#openchannelAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelAccounts>.header.selected-bar .close-button-wrapper{width:244px}#openchannelAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelAccounts #add-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelAccounts #upload-openchannelAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.openchannelQueue-dialog{max-width:720px;width:720px}md-dialog.openchannelQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.openchannelQueue-dialog md-toolbar .title{font-size:17px}md-dialog.openchannelQueue-dialog md-input-container textarea{min-height:150px}md-dialog.openchannelQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.openchannelQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.openchannelQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.openchannelQueue-dialog .error-list{font-size:13px}md-dialog.openchannelQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.openchannelQueue-dialog .error-list .error .message{font-weight:500}md-dialog.openchannelQueue-dialog .error-list .error .md-button{margin:0}md-dialog.openchannelQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.openchannelQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#openchannel-openchannelQueue .header{height:76px;min-height:76px;max-height:76px}#openchannel-openchannelQueue .header .goto-openchannelQueues-button{margin-right:16px}#openchannel-openchannelQueue .header .openchannelQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#openchannel-openchannelQueue .header .openchannelQueue-image img{height:100%;width:auto;max-width:none}#openchannel-openchannelQueue .header .subtitle{margin:6px 0 0 0}#openchannel-openchannelQueue .openchannelQueue-detail-form-container{padding:24px;margin-bottom:24px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container .handle{cursor:move}#openchannel-openchannelQueue .openchannelQueue-detail-form-container md-input-container md-switch{margin:0!important}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader{position:relative}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader.dropping .drop-text{display:flex}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .upload-button{margin-bottom:16px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#openchannel-openchannelQueue .openchannelQueue-detail-form-container #openchannelQueue-image-uploader .openchannelQueue-image .media{max-height:100%}#openchannel-openchannelQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#openchannel-openchannelQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#openchannel-openchannelQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#openchannelQueues{position:relative}#openchannelQueues>.header{height:76px;min-height:76px;max-height:76px}#openchannelQueues>.header .logo .logo-icon{margin:0 16px 0 0}#openchannelQueues>.header .logo .logo-text{font-size:24px}#openchannelQueues>.header md-icon{color:#fff}#openchannelQueues>.header .search-input-wrapper{position:relative}#openchannelQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#openchannelQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#openchannelQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#openchannelQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#openchannelQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#openchannelQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#openchannelQueues>.header.selected-bar .close-button-wrapper{width:244px}#openchannelQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#openchannelQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#openchannelQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#openchannelQueues #add-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#openchannelQueues #upload-openchannelQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}#plugin .filter-header{background-image:url(/assets/images/backgrounds/header-bg.png);color:#fff}md-dialog.predictive-dialog{max-width:720px;width:720px}md-dialog.predictive-dialog md-dialog-content{display:block;position:relative}md-dialog.predictive-dialog md-toolbar .title{font-size:17px}md-dialog.predictive-dialog md-input-container textarea{min-height:150px}md-dialog.predictive-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.predictive-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.predictive-dialog .date-container{padding:16px 0 24px 0}md-dialog.predictive-dialog .error-list{font-size:13px}md-dialog.predictive-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.predictive-dialog .error-list .error .message{font-weight:500}md-dialog.predictive-dialog .error-list .error .md-button{margin:0}md-dialog.predictive-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.predictive-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#cloudProviders{position:relative}#cloudProviders>.header{height:76px;min-height:76px;max-height:76px}#cloudProviders>.header .logo .logo-icon{margin:0 16px 0 0}#cloudProviders>.header .logo .logo-text{font-size:24px}#cloudProviders>.header md-icon{color:#fff}#cloudProviders>.header .search-input-wrapper{position:relative}#cloudProviders>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cloudProviders>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cloudProviders>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cloudProviders>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cloudProviders>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cloudProviders>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cloudProviders>.header.selected-bar .close-button-wrapper{width:244px}#cloudProviders>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cloudProviders>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cloudProviders>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cloudProviders #add-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}#cloudProviders #upload-cloudProvider-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cloudProvider-dialog{max-width:720px;width:720px}md-dialog.cloudProvider-dialog md-dialog-content{display:block;position:relative}md-dialog.cloudProvider-dialog md-toolbar .title{font-size:17px}md-dialog.cloudProvider-dialog md-input-container textarea{min-height:150px}md-dialog.cloudProvider-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cloudProvider-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cloudProvider-dialog .date-container{padding:16px 0 24px 0}md-dialog.cloudProvider-dialog .error-list{font-size:13px}md-dialog.cloudProvider-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cloudProvider-dialog .error-list .error .message{font-weight:500}md-dialog.cloudProvider-dialog .error-list .error .md-button{margin:0}md-dialog.cloudProvider-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cloudProvider-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customization-dialog{max-width:720px;width:720px}md-dialog.customization-dialog md-dialog-content{display:block;position:relative}md-dialog.customization-dialog md-toolbar .title{font-size:17px}md-dialog.customization-dialog md-input-container textarea{min-height:150px}md-dialog.customization-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customization-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customization-dialog .date-container{padding:16px 0 24px 0}md-dialog.customization-dialog .error-list{font-size:13px}md-dialog.customization-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customization-dialog .error-list .error .message{font-weight:500}md-dialog.customization-dialog .error-list .error .md-button{margin:0}md-dialog.customization-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customization-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customizations{position:relative}#customizations>.header{height:76px;min-height:76px;max-height:76px}#customizations>.header .logo .logo-icon{margin:0 16px 0 0}#customizations>.header .logo .logo-text{font-size:24px}#customizations>.header md-icon{color:#fff}#customizations>.header .search-input-wrapper{position:relative}#customizations>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customizations>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customizations>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customizations>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customizations>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customizations>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customizations>.header.selected-bar .close-button-wrapper{width:244px}#customizations>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customizations>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customizations>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customizations>.content .customization-detail-form-container{padding:24px;margin-bottom:24px}#customizations>.content .customization-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#customizations>.content .customization-detail-form-container .handle{cursor:move}#customizations>.content .customization-detail-form-container md-input-container md-switch{margin:0!important}#customizations>.content .customization-detail-form-container #customization-image-uploader{position:relative}#customizations>.content .customization-detail-form-container #customization-image-uploader.dropping .drop-text{display:flex}#customizations>.content .customization-detail-form-container #customization-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#customizations>.content .customization-detail-form-container #customization-image-uploader .upload-button{margin-bottom:16px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#customizations>.content .customization-detail-form-container #customization-image-uploader .customization-image .media{max-height:100%}#customizations #add-customization-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.general-dialog{max-width:720px;width:720px}md-dialog.general-dialog md-dialog-content{display:block;position:relative}md-dialog.general-dialog md-toolbar .title{font-size:17px}md-dialog.general-dialog md-input-container textarea{min-height:150px}md-dialog.general-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.general-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.general-dialog .date-container{padding:16px 0 24px 0}md-dialog.general-dialog .error-list{font-size:13px}md-dialog.general-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.general-dialog .error-list .error .message{font-weight:500}md-dialog.general-dialog .error-list .error .md-button{margin:0}md-dialog.general-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.general-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#generals{position:relative}#generals>.header{height:76px;min-height:76px;max-height:76px}#generals>.header .logo .logo-icon{margin:0 16px 0 0}#generals>.header .logo .logo-text{font-size:24px}#generals>.header md-icon{color:#fff}#generals>.header .search-input-wrapper{position:relative}#generals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#generals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#generals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#generals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#generals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#generals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#generals>.header.selected-bar .close-button-wrapper{width:244px}#generals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#generals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#generals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#generals>.content .general-detail-form-container{padding:24px;margin-bottom:24px}#generals>.content .general-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#generals>.content .general-detail-form-container .handle{cursor:move}#generals>.content .general-detail-form-container md-input-container md-switch{margin:0!important}#generals>.content .general-detail-form-container #general-image-uploader{position:relative}#generals>.content .general-detail-form-container #general-image-uploader.dropping .drop-text{display:flex}#generals>.content .general-detail-form-container #general-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#generals>.content .general-detail-form-container #general-image-uploader .upload-button{margin-bottom:16px}#generals>.content .general-detail-form-container #general-image-uploader .general-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#generals>.content .general-detail-form-container #general-image-uploader .general-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#generals>.content .general-detail-form-container #general-image-uploader .general-image .media{max-height:100%}#generals #add-general-button{position:fixed;bottom:8px;right:8px;padding:0}#license{position:relative}#license .blink{animation:blinker 2s linear infinite}#license>.header{height:76px;min-height:76px;max-height:76px}#license>.header .logo .logo-icon{margin:0 16px 0 0}#license>.header .logo .logo-text{font-size:24px}#license>.header md-icon{color:#fff}#license>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#license>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#license>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#license>.content .badge{position:absolute;top:0;left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-size:11px;font-weight:500;padding:6px 8px}md-dialog.request-dialog{max-width:720px;width:720px}md-dialog.request-dialog md-dialog-content{display:block;position:relative}md-dialog.request-dialog md-toolbar .title{font-size:17px}md-dialog.request-dialog md-input-container textarea{min-height:150px}md-dialog.request-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.request-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.request-dialog .date-container{padding:16px 0 24px 0}md-dialog.request-dialog .error-list{font-size:13px}md-dialog.request-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.request-dialog .error-list .error .message{font-weight:500}md-dialog.request-dialog .error-list .error .md-button{margin:0}md-dialog.request-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.request-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.update-dialog{max-width:720px;width:720px}md-dialog.update-dialog md-dialog-content{display:block;position:relative}md-dialog.update-dialog md-toolbar .title{font-size:17px}md-dialog.update-dialog md-input-container textarea{min-height:60px}md-dialog.update-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.update-dialog .error-list{font-size:13px}md-dialog.update-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.update-dialog .error-list .error .message{font-weight:500}md-dialog.update-dialog .error-list .error .md-button{margin:0}md-dialog.update-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.update-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.network-dialog{max-width:720px;width:720px}md-dialog.network-dialog md-dialog-content{display:block;position:relative}md-dialog.network-dialog md-toolbar .title{font-size:17px}md-dialog.network-dialog md-input-container textarea{min-height:150px}md-dialog.network-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.network-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.network-dialog .date-container{padding:16px 0 24px 0}md-dialog.network-dialog .error-list{font-size:13px}md-dialog.network-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.network-dialog .error-list .error .message{font-weight:500}md-dialog.network-dialog .error-list .error .md-button{margin:0}md-dialog.network-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.network-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#networks{position:relative}#networks>.header{height:76px;min-height:76px;max-height:76px}#networks>.header .logo .logo-icon{margin:0 16px 0 0}#networks>.header .logo .logo-text{font-size:24px}#networks>.header md-icon{color:#fff}#networks>.header .search-input-wrapper{position:relative}#networks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#networks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#networks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#networks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#networks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#networks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#networks>.header.selected-bar .close-button-wrapper{width:244px}#networks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#networks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#networks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#networks #add-network-button{position:fixed;bottom:8px;right:8px;padding:0}#networks #upload-network-button{position:fixed;bottom:8px;right:8px;padding:0}#smtps{position:relative}#smtps>.header{height:76px;min-height:76px;max-height:76px}#smtps>.header .logo .logo-icon{margin:0 16px 0 0}#smtps>.header .logo .logo-text{font-size:24px}#smtps>.header md-icon{color:#fff}#smtps>.header .search-input-wrapper{position:relative}#smtps>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smtps>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smtps>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smtps>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smtps>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smtps>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smtps>.header.selected-bar .close-button-wrapper{width:244px}#smtps>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smtps>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smtps>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smtps>.content .smtp-detail-form-container{padding:24px;margin-bottom:24px}#smtps>.content .smtp-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#smtps>.content .smtp-detail-form-container .handle{cursor:move}#smtps>.content .smtp-detail-form-container md-input-container md-switch{margin:0!important}#smtps>.content .smtp-detail-form-container #smtp-image-uploader{position:relative}#smtps>.content .smtp-detail-form-container #smtp-image-uploader.dropping .drop-text{display:flex}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .upload-button{margin-bottom:16px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#smtps>.content .smtp-detail-form-container #smtp-image-uploader .smtp-image .media{max-height:100%}#smtps #add-smtp-button{position:fixed;bottom:8px;right:8px;padding:0}#system>.header{height:76px;min-height:76px;max-height:76px}#system>.header .logo .logo-icon{margin:0 16px 0 0}#system>.header .logo .logo-text{font-size:24px}#system>.header md-icon{color:#fff}#system .system-detail-form-container{padding:24px;margin-bottom:24px}#system .system-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#system .system-detail-form-container .handle{cursor:move}#system .system-detail-form-container md-input-container md-switch{margin:0!important}#system .system-detail-form-container #system-image-uploader{position:relative}#system .system-detail-form-container #system-image-uploader.dropping .drop-text{display:flex}#system .system-detail-form-container #system-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#system .system-detail-form-container #system-image-uploader .upload-button{margin-bottom:16px}#system .system-detail-form-container #system-image-uploader .system-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#system .system-detail-form-container #system-image-uploader .system-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#system .system-detail-form-container #system-image-uploader .system-image .media{max-height:100%}#updates{position:relative}#updates>.header{height:76px;min-height:76px;max-height:76px}#updates>.header .logo .logo-icon{margin:0 16px 0 0}#updates>.header .logo .logo-text{font-size:24px}#updates>.header md-icon{color:#fff}#updates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#updates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#updates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsAccount-dialog{max-width:720px;width:720px}md-dialog.smsAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.smsAccount-dialog md-toolbar .title{font-size:17px}md-dialog.smsAccount-dialog md-input-container textarea{min-height:150px}md-dialog.smsAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsAccount-dialog .error-list{font-size:13px}md-dialog.smsAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsAccount-dialog .error-list .error .message{font-weight:500}md-dialog.smsAccount-dialog .error-list .error .md-button{margin:0}md-dialog.smsAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.smsCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.smsCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.smsCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.smsCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.smsCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsCannedAnswer-dialog .error-list{font-size:13px}md-dialog.smsCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.smsCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.smsCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsAccount .header{height:76px;min-height:76px;max-height:76px}#sms-smsAccount .header .goto-smsAccounts-button{margin-right:16px}#sms-smsAccount .header .smsAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsAccount .header .smsAccount-image img{height:100%;width:auto;max-width:none}#sms-smsAccount .header .subtitle{margin:6px 0 0 0}#sms-smsAccount .smsAccount-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsAccount .smsAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsAccount .smsAccount-detail-form-container .handle{cursor:move}#sms-smsAccount .smsAccount-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader{position:relative}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader.dropping .drop-text{display:flex}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .upload-button{margin-bottom:16px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsAccount .smsAccount-detail-form-container #smsAccount-image-uploader .smsAccount-image .media{max-height:100%}#sms-smsAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#sms-smsAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#sms-smsAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#sms-smsAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#sms-smsAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#sms-smsAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#sms-smsAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#sms-smsAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#sms-smsAccount .actionAppData{width:80px!important}}#smsAccounts{position:relative}#smsAccounts>.header{height:76px;min-height:76px;max-height:76px}#smsAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#smsAccounts>.header .logo .logo-text{font-size:24px}#smsAccounts>.header md-icon{color:#fff}#smsAccounts>.header .search-input-wrapper{position:relative}#smsAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsAccounts>.header.selected-bar .close-button-wrapper{width:244px}#smsAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsAccounts #add-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#smsAccounts #upload-smsAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.smsQueue-dialog{max-width:720px;width:720px}md-dialog.smsQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.smsQueue-dialog md-toolbar .title{font-size:17px}md-dialog.smsQueue-dialog md-input-container textarea{min-height:150px}md-dialog.smsQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.smsQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.smsQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.smsQueue-dialog .error-list{font-size:13px}md-dialog.smsQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.smsQueue-dialog .error-list .error .message{font-weight:500}md-dialog.smsQueue-dialog .error-list .error .md-button{margin:0}md-dialog.smsQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.smsQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sms-smsQueue .header{height:76px;min-height:76px;max-height:76px}#sms-smsQueue .header .goto-smsQueues-button{margin-right:16px}#sms-smsQueue .header .smsQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#sms-smsQueue .header .smsQueue-image img{height:100%;width:auto;max-width:none}#sms-smsQueue .header .subtitle{margin:6px 0 0 0}#sms-smsQueue .smsQueue-detail-form-container{padding:24px;margin-bottom:24px}#sms-smsQueue .smsQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#sms-smsQueue .smsQueue-detail-form-container .handle{cursor:move}#sms-smsQueue .smsQueue-detail-form-container md-input-container md-switch{margin:0!important}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader{position:relative}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader.dropping .drop-text{display:flex}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .upload-button{margin-bottom:16px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#sms-smsQueue .smsQueue-detail-form-container #smsQueue-image-uploader .smsQueue-image .media{max-height:100%}#sms-smsQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#sms-smsQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#sms-smsQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#smsQueues{position:relative}#smsQueues>.header{height:76px;min-height:76px;max-height:76px}#smsQueues>.header .logo .logo-icon{margin:0 16px 0 0}#smsQueues>.header .logo .logo-text{font-size:24px}#smsQueues>.header md-icon{color:#fff}#smsQueues>.header .search-input-wrapper{position:relative}#smsQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#smsQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#smsQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#smsQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#smsQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#smsQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#smsQueues>.header.selected-bar .close-button-wrapper{width:244px}#smsQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#smsQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#smsQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#smsQueues #add-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#smsQueues #upload-smsQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#agents{position:relative}#agents>.header{height:76px;min-height:76px;max-height:76px}#agents>.header .logo .logo-icon{margin:0 16px 0 0}#agents>.header .logo .logo-text{font-size:24px}#agents>.header md-icon{color:#fff}#agents>.header .search-input-wrapper{position:relative}#agents>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#agents>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#agents>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#agents>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#agents>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#agents>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#agents>.header.selected-bar .close-button-wrapper{width:244px}#agents>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#agents>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#agents>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#agents #add-agent-button{position:fixed;bottom:8px;right:8px;padding:0}#agents #upload-agent-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.agent-dialog{max-width:720px;width:720px}md-dialog.agent-dialog md-dialog-content{display:block;position:relative}md-dialog.agent-dialog md-toolbar .title{font-size:17px}md-dialog.agent-dialog md-input-container textarea{min-height:150px}md-dialog.agent-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.agent-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.agent-dialog .date-container{padding:16px 0 24px 0}md-dialog.agent-dialog .error-list{font-size:13px}md-dialog.agent-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.agent-dialog .error-list .error .message{font-weight:500}md-dialog.agent-dialog .error-list .error .md-button{margin:0}md-dialog.agent-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.agent-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-agent .header{height:76px;min-height:76px;max-height:76px}#staff-agent .header .goto-agents-button{margin-right:16px}#staff-agent .header .agent-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-agent .header .agent-image img{height:100%;width:auto;max-width:none}#staff-agent .header .subtitle{margin:6px 0 0 0}#staff-agent .agent-detail-form-container{padding:24px;margin-bottom:24px}#staff-agent .agent-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-agent .agent-detail-form-container .handle{cursor:move}#staff-agent .agent-detail-form-container md-input-container md-switch{margin:0!important}#staff-agent .agent-detail-form-container #agent-image-uploader{position:relative}#staff-agent .agent-detail-form-container #agent-image-uploader.dropping .drop-text{display:flex}#staff-agent .agent-detail-form-container #agent-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-agent .agent-detail-form-container #agent-image-uploader .upload-button{margin-bottom:16px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-agent .agent-detail-form-container #agent-image-uploader .agent-image .media{max-height:100%}#staff-agent md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-agent md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-agent md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-agent md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.team-dialog{max-width:720px;width:720px}md-dialog.team-dialog md-dialog-content{display:block;position:relative}md-dialog.team-dialog md-toolbar .title{font-size:17px}md-dialog.team-dialog md-input-container textarea{min-height:150px}md-dialog.team-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.team-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.team-dialog .date-container{padding:16px 0 24px 0}md-dialog.team-dialog .error-list{font-size:13px}md-dialog.team-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.team-dialog .error-list .error .message{font-weight:500}md-dialog.team-dialog .error-list .error .md-button{margin:0}md-dialog.team-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.team-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#teams{position:relative}#teams>.header{height:76px;min-height:76px;max-height:76px}#teams>.header .logo .logo-icon{margin:0 16px 0 0}#teams>.header .logo .logo-text{font-size:24px}#teams>.header md-icon{color:#fff}#teams>.header .search-input-wrapper{position:relative}#teams>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#teams>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#teams>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#teams>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#teams>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#teams>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#teams>.header.selected-bar .close-button-wrapper{width:244px}#teams>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#teams>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#teams>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#teams #add-team-button{position:fixed;bottom:8px;right:8px;padding:0}#teams #upload-team-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.telephone-dialog{max-width:720px;width:720px}md-dialog.telephone-dialog md-dialog-content{display:block;position:relative}md-dialog.telephone-dialog md-toolbar .title{font-size:17px}md-dialog.telephone-dialog md-input-container textarea{min-height:150px}md-dialog.telephone-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.telephone-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.telephone-dialog .date-container{padding:16px 0 24px 0}md-dialog.telephone-dialog .error-list{font-size:13px}md-dialog.telephone-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.telephone-dialog .error-list .error .message{font-weight:500}md-dialog.telephone-dialog .error-list .error .md-button{margin:0}md-dialog.telephone-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.telephone-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-telephone .header{height:76px;min-height:76px;max-height:76px}#staff-telephone .header .goto-telephones-button{margin-right:16px}#staff-telephone .header .telephone-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-telephone .header .telephone-image img{height:100%;width:auto;max-width:none}#staff-telephone .header .subtitle{margin:6px 0 0 0}#staff-telephone .telephone-detail-form-container{padding:24px;margin-bottom:24px}#staff-telephone .telephone-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-telephone .telephone-detail-form-container .handle{cursor:move}#staff-telephone .telephone-detail-form-container md-input-container md-switch{margin:0!important}#staff-telephone .telephone-detail-form-container #telephone-image-uploader{position:relative}#staff-telephone .telephone-detail-form-container #telephone-image-uploader.dropping .drop-text{display:flex}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .upload-button{margin-bottom:16px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-telephone .telephone-detail-form-container #telephone-image-uploader .telephone-image .media{max-height:100%}#staff-telephone md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-telephone md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-telephone md-table-container.font-size-12 td.md-cell{font-size:12px!important}#telephones{position:relative}#telephones>.header{height:76px;min-height:76px;max-height:76px}#telephones>.header .logo .logo-icon{margin:0 16px 0 0}#telephones>.header .logo .logo-text{font-size:24px}#telephones>.header md-icon{color:#fff}#telephones>.header .search-input-wrapper{position:relative}#telephones>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#telephones>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#telephones>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#telephones>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#telephones>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#telephones>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#telephones>.header.selected-bar .close-button-wrapper{width:244px}#telephones>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#telephones>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#telephones>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#telephones #add-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}#telephones #upload-telephone-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.userProfile-dialog{max-width:720px;width:720px}md-dialog.userProfile-dialog md-dialog-content{display:block;position:relative}md-dialog.userProfile-dialog md-toolbar .title{font-size:17px}md-dialog.userProfile-dialog md-input-container textarea{min-height:150px}md-dialog.userProfile-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.userProfile-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.userProfile-dialog .date-container{padding:16px 0 24px 0}md-dialog.userProfile-dialog .error-list{font-size:13px}md-dialog.userProfile-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.userProfile-dialog .error-list .error .message{font-weight:500}md-dialog.userProfile-dialog .error-list .error .md-button{margin:0}md-dialog.userProfile-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.userProfile-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-userProfile .header{height:76px;min-height:76px;max-height:76px}#staff-userProfile .header .goto-userProfiles-button{margin-right:16px}#staff-userProfile .header .userProfile-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-userProfile .header .userProfile-image img{height:100%;width:auto;max-width:none}#staff-userProfile .header .subtitle{margin:6px 0 0 0}#staff-userProfile .userProfile-detail-form-container{padding:24px;margin-bottom:24px}#staff-userProfile .userProfile-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-userProfile .userProfile-detail-form-container .handle{cursor:move}#staff-userProfile .userProfile-detail-form-container md-input-container md-switch{margin:0!important}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader{position:relative}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader.dropping .drop-text{display:flex}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .upload-button{margin-bottom:16px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-userProfile .userProfile-detail-form-container #userProfile-image-uploader .userProfile-image .media{max-height:100%}#staff-userProfile md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-userProfile md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-userProfile md-table-container.font-size-12 td.md-cell{font-size:12px!important}#userProfiles{position:relative}#userProfiles>.header{height:76px;min-height:76px;max-height:76px}#userProfiles>.header .logo .logo-icon{margin:0 16px 0 0}#userProfiles>.header .logo .logo-text{font-size:24px}#userProfiles>.header md-icon{color:#fff}#userProfiles>.header .search-input-wrapper{position:relative}#userProfiles>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#userProfiles>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#userProfiles>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#userProfiles>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#userProfiles>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#userProfiles>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#userProfiles>.header.selected-bar .close-button-wrapper{width:244px}#userProfiles>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#userProfiles>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#userProfiles>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#userProfiles #add-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}#userProfiles #upload-userProfile-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.user-dialog{max-width:720px;width:720px}md-dialog.user-dialog md-dialog-content{display:block;position:relative}md-dialog.user-dialog md-toolbar .title{font-size:17px}md-dialog.user-dialog md-input-container textarea{min-height:150px}md-dialog.user-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.user-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.user-dialog .date-container{padding:16px 0 24px 0}md-dialog.user-dialog .error-list{font-size:13px}md-dialog.user-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.user-dialog .error-list .error .message{font-weight:500}md-dialog.user-dialog .error-list .error .md-button{margin:0}md-dialog.user-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.user-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#staff-user .header{height:76px;min-height:76px;max-height:76px}#staff-user .header .goto-users-button{margin-right:16px}#staff-user .header .user-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#staff-user .header .user-image img{height:100%;width:auto;max-width:none}#staff-user .header .subtitle{margin:6px 0 0 0}#staff-user .user-detail-form-container{padding:24px;margin-bottom:24px}#staff-user .user-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#staff-user .user-detail-form-container .handle{cursor:move}#staff-user .user-detail-form-container md-input-container md-switch{margin:0!important}#staff-user .user-detail-form-container #user-image-uploader{position:relative}#staff-user .user-detail-form-container #user-image-uploader.dropping .drop-text{display:flex}#staff-user .user-detail-form-container #user-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#staff-user .user-detail-form-container #user-image-uploader .upload-button{margin-bottom:16px}#staff-user .user-detail-form-container #user-image-uploader .user-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#staff-user .user-detail-form-container #user-image-uploader .user-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#staff-user .user-detail-form-container #user-image-uploader .user-image .media{max-height:100%}#staff-user md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#staff-user md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#staff-user md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#staff-user md-table-container.font-size-12 td.md-cell{font-size:12px!important}#users{position:relative}#users>.header{height:76px;min-height:76px;max-height:76px}#users>.header .logo .logo-icon{margin:0 16px 0 0}#users>.header .logo .logo-text{font-size:24px}#users>.header md-icon{color:#fff}#users>.header .search-input-wrapper{position:relative}#users>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#users>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#users>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#users>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#users>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#users>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#users>.header.selected-bar .close-button-wrapper{width:244px}#users>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#users>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#users>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#users #add-user-button{position:fixed;bottom:8px;right:8px;padding:0}#users #upload-user-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers{position:relative}#cannedAnswers>.header{height:76px;min-height:76px;max-height:76px}#cannedAnswers>.header .logo .logo-icon{margin:0 16px 0 0}#cannedAnswers>.header .logo .logo-text{font-size:24px}#cannedAnswers>.header md-icon{color:#fff}#cannedAnswers>.header .search-input-wrapper{position:relative}#cannedAnswers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#cannedAnswers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#cannedAnswers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#cannedAnswers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#cannedAnswers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#cannedAnswers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#cannedAnswers>.header.selected-bar .close-button-wrapper{width:244px}#cannedAnswers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#cannedAnswers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#cannedAnswers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#cannedAnswers #add-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}#cannedAnswers #upload-cannedAnswer-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.cannedAnswer-dialog{max-width:720px;width:720px}md-dialog.cannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.cannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.cannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.cannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.cannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.cannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.cannedAnswer-dialog .error-list{font-size:13px}md-dialog.cannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.cannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.cannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.cannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.cannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contact_item_types{position:relative}#contact_item_types>.header{height:76px;min-height:76px;max-height:76px}#contact_item_types>.header .logo .logo-icon{margin:0 16px 0 0}#contact_item_types>.header .logo .logo-text{font-size:24px}#contact_item_types>.header md-icon{color:#fff}#contact_item_types>.header .search-input-wrapper{position:relative}#contact_item_types>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contact_item_types>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contact_item_types>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contact_item_types>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contact_item_types>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contact_item_types>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contact_item_types>.header.selected-bar .close-button-wrapper{width:244px}#contact_item_types>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contact_item_types>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contact_item_types>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contact_item_types #add-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}#contact_item_types #upload-contactItemType-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.contactItemType-dialog{max-width:720px;width:720px}md-dialog.contactItemType-dialog md-dialog-content{display:block;position:relative}md-dialog.contactItemType-dialog md-toolbar .title{font-size:17px}md-dialog.contactItemType-dialog md-input-container textarea{min-height:150px}md-dialog.contactItemType-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.contactItemType-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.contactItemType-dialog .date-container{padding:16px 0 24px 0}md-dialog.contactItemType-dialog .error-list{font-size:13px}md-dialog.contactItemType-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.contactItemType-dialog .error-list .error .message{font-weight:500}md-dialog.contactItemType-dialog .error-list .error .md-button{margin:0}md-dialog.contactItemType-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.contactItemType-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.customDashboard-dialog{max-width:720px;width:720px}md-dialog.customDashboard-dialog md-dialog-content{display:block;position:relative}md-dialog.customDashboard-dialog md-toolbar .title{font-size:17px}md-dialog.customDashboard-dialog md-input-container textarea{min-height:150px}md-dialog.customDashboard-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.customDashboard-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.customDashboard-dialog .date-container{padding:16px 0 24px 0}md-dialog.customDashboard-dialog .error-list{font-size:13px}md-dialog.customDashboard-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.customDashboard-dialog .error-list .error .message{font-weight:500}md-dialog.customDashboard-dialog .error-list .error .md-button{margin:0}md-dialog.customDashboard-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.customDashboard-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#customDashboards{position:relative}#customDashboards>.header{height:76px;min-height:76px;max-height:76px}#customDashboards>.header .logo .logo-icon{margin:0 16px 0 0}#customDashboards>.header .logo .logo-text{font-size:24px}#customDashboards>.header md-icon{color:#fff}#customDashboards>.header .search-input-wrapper{position:relative}#customDashboards>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#customDashboards>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#customDashboards>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#customDashboards>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#customDashboards>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#customDashboards>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#customDashboards>.header.selected-bar .close-button-wrapper{width:244px}#customDashboards>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#customDashboards>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#customDashboards>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#customDashboards #add-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}#customDashboards #upload-customDashboard-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.dashboarditem-dialog{max-width:720px;width:720px}md-dialog.dashboarditem-dialog md-dialog-content{display:block;position:relative}md-dialog.dashboarditem-dialog md-toolbar .title{font-size:17px}md-dialog.dashboarditem-dialog md-input-container textarea{min-height:150px}md-dialog.dashboarditem-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.dashboarditem-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.dashboarditem-dialog .date-container{padding:16px 0 24px 0}md-dialog.dashboarditem-dialog .error-list{font-size:13px}md-dialog.dashboarditem-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.dashboarditem-dialog .error-list .error .message{font-weight:500}md-dialog.dashboarditem-dialog .error-list .error .md-button{margin:0}md-dialog.dashboarditem-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.dashboarditem-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-customDashboard .header{height:76px;min-height:76px;max-height:76px}#tools-customDashboard .header .goto-customDashboards-button{margin-right:16px}#tools-customDashboard .header .customDashboard-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-customDashboard .header .customDashboard-image img{height:100%;width:auto;max-width:none}#tools-customDashboard .header .subtitle{margin:6px 0 0 0}#tools-customDashboard .customDashboard-detail-form-container{padding:24px;margin-bottom:24px}#tools-customDashboard .customDashboard-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-customDashboard .customDashboard-detail-form-container .handle{cursor:move}#tools-customDashboard .customDashboard-detail-form-container md-input-container md-switch{margin:0!important}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader{position:relative}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader.dropping .drop-text{display:flex}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .upload-button{margin-bottom:16px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-customDashboard .customDashboard-detail-form-container #customDashboard-image-uploader .customDashboard-image .media{max-height:100%}#tools-customDashboard md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-customDashboard md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-customDashboard md-table-container.font-size-12 td.md-cell{font-size:12px!important}md-dialog.disposition-dialog{max-width:720px;width:720px}md-dialog.disposition-dialog md-dialog-content{display:block;position:relative}md-dialog.disposition-dialog md-toolbar .title{font-size:17px}md-dialog.disposition-dialog md-input-container textarea{min-height:150px}md-dialog.disposition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.disposition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.disposition-dialog .date-container{padding:16px 0 24px 0}md-dialog.disposition-dialog .error-list{font-size:13px}md-dialog.disposition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.disposition-dialog .error-list .error .message{font-weight:500}md-dialog.disposition-dialog .error-list .error .md-button{margin:0}md-dialog.disposition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.disposition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#dispositions{position:relative}#dispositions>.header{height:76px;min-height:76px;max-height:76px}#dispositions>.header .logo .logo-icon{margin:0 16px 0 0}#dispositions>.header .logo .logo-text{font-size:24px}#dispositions>.header md-icon{color:#fff}#dispositions>.header .search-input-wrapper{position:relative}#dispositions>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#dispositions>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#dispositions>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#dispositions>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#dispositions>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#dispositions>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#dispositions>.header.selected-bar .close-button-wrapper{width:244px}#dispositions>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#dispositions>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#dispositions>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#dispositions #add-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}#dispositions #upload-disposition-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.interval-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-interval .header{height:76px;min-height:76px;max-height:76px}#tools-interval .header .goto-intervals-button{margin-right:16px}#tools-interval .header .interval-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-interval .header .interval-image img{height:100%;width:auto;max-width:none}#tools-interval .header .subtitle{margin:6px 0 0 0}#tools-interval .interval-detail-form-container{padding:24px;margin-bottom:24px}#tools-interval .interval-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-interval .interval-detail-form-container .handle{cursor:move}#tools-interval .interval-detail-form-container md-input-container md-switch{margin:0!important}#tools-interval .interval-detail-form-container #interval-image-uploader{position:relative}#tools-interval .interval-detail-form-container #interval-image-uploader.dropping .drop-text{display:flex}#tools-interval .interval-detail-form-container #interval-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-interval .interval-detail-form-container #interval-image-uploader .upload-button{margin-bottom:16px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-interval .interval-detail-form-container #interval-image-uploader .interval-image .media{max-height:100%}#tools-interval md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-interval md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-interval md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-interval md-table-container.font-size-12 td.md-cell{font-size:12px!important}#intervals{position:relative}#intervals>.header{height:76px;min-height:76px;max-height:76px}#intervals>.header .logo .logo-icon{margin:0 16px 0 0}#intervals>.header .logo .logo-text{font-size:24px}#intervals>.header md-icon{color:#fff}#intervals>.header .search-input-wrapper{position:relative}#intervals>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#intervals>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#intervals>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#intervals>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#intervals>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#intervals>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#intervals>.header.selected-bar .close-button-wrapper{width:244px}#intervals>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#intervals>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#intervals>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#intervals #add-interval-button{position:fixed;bottom:8px;right:8px;padding:0}#intervals #upload-interval-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.pause-dialog{max-width:720px;width:720px}md-dialog.pause-dialog md-dialog-content{display:block;position:relative}md-dialog.pause-dialog md-toolbar .title{font-size:17px}md-dialog.pause-dialog md-input-container textarea{min-height:150px}md-dialog.pause-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.pause-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.pause-dialog .date-container{padding:16px 0 24px 0}md-dialog.pause-dialog .error-list{font-size:13px}md-dialog.pause-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.pause-dialog .error-list .error .message{font-weight:500}md-dialog.pause-dialog .error-list .error .md-button{margin:0}md-dialog.pause-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.pause-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#pauses{position:relative}#pauses>.header{height:76px;min-height:76px;max-height:76px}#pauses>.header .logo .logo-icon{margin:0 16px 0 0}#pauses>.header .logo .logo-text{font-size:24px}#pauses>.header md-icon{color:#fff}#pauses>.header .search-input-wrapper{position:relative}#pauses>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#pauses>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#pauses>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#pauses>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#pauses>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#pauses>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#pauses>.header.selected-bar .close-button-wrapper{width:244px}#pauses>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#pauses>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#pauses>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#pauses #add-pause-button{position:fixed;bottom:8px;right:8px;padding:0}#pauses #upload-pause-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.schedule-dialog{max-width:720px;width:720px}md-dialog.schedule-dialog md-dialog-content{display:block;position:relative}md-dialog.schedule-dialog md-toolbar .title{font-size:17px}md-dialog.schedule-dialog md-input-container textarea{min-height:150px}md-dialog.schedule-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.schedule-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.schedule-dialog .date-container{padding:16px 0 24px 0}md-dialog.schedule-dialog .error-list{font-size:13px}md-dialog.schedule-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.schedule-dialog .error-list .error .message{font-weight:500}md-dialog.schedule-dialog .error-list .error .md-button{margin:0}md-dialog.schedule-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.schedule-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#schedules{position:relative}#schedules>.header{height:76px;min-height:76px;max-height:76px}#schedules>.header .logo .logo-icon{margin:0 16px 0 0}#schedules>.header .logo .logo-text{font-size:24px}#schedules>.header md-icon{color:#fff}#schedules>.header .search-input-wrapper{position:relative}#schedules>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#schedules>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#schedules>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#schedules>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#schedules>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#schedules>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#schedules>.header.selected-bar .close-button-wrapper{width:244px}#schedules>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#schedules>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#schedules>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#schedules #add-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}#schedules #upload-schedule-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.sound-dialog{max-width:720px;width:720px}md-dialog.sound-dialog md-dialog-content{display:block;position:relative}md-dialog.sound-dialog md-toolbar .title{font-size:17px}md-dialog.sound-dialog md-input-container textarea{min-height:150px}md-dialog.sound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.sound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.sound-dialog .date-container{padding:16px 0 24px 0}md-dialog.sound-dialog .error-list{font-size:13px}md-dialog.sound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.sound-dialog .error-list .error .message{font-weight:500}md-dialog.sound-dialog .error-list .error .md-button{margin:0}md-dialog.sound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.sound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#sounds{position:relative}#sounds>.header{height:76px;min-height:76px;max-height:76px}#sounds>.header .logo .logo-icon{margin:0 16px 0 0}#sounds>.header .logo .logo-text{font-size:24px}#sounds>.header md-icon{color:#fff}#sounds>.header .search-input-wrapper{position:relative}#sounds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#sounds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#sounds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#sounds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#sounds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#sounds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#sounds>.header.selected-bar .close-button-wrapper{width:244px}#sounds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#sounds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#sounds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#sounds #add-sound-button{position:fixed;bottom:8px;right:8px;padding:0}#sounds #upload-sound-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.upload-dialog{max-width:720px;width:720px}md-dialog.upload-dialog md-dialog-content{display:block;position:relative}md-dialog.upload-dialog md-toolbar .title{font-size:17px}md-dialog.upload-dialog md-input-container textarea{min-height:150px}md-dialog.upload-dialog md-progress-linear{padding-top:16px!important}md-dialog.upload-dialog .date-container{padding:16px 0 24px 0}md-dialog.upload-dialog .error-list{font-size:13px}md-dialog.upload-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.upload-dialog .error-list .error .message{font-weight:500}md-dialog.upload-dialog .error-list .error .md-button{margin:0}md-dialog.upload-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.upload-dialog .sound-image{overflow:hidden;max-width:148px;margin-right:16px;border:3px solid rgba(0,0,0,.12);padding:10px}md-dialog.upload-dialog .sound-image img{width:auto;max-width:none}md-dialog.upload-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.tag-dialog{max-width:720px;width:720px}md-dialog.tag-dialog md-dialog-content{display:block;position:relative}md-dialog.tag-dialog md-toolbar .title{font-size:17px}md-dialog.tag-dialog md-input-container textarea{min-height:150px}md-dialog.tag-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.tag-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.tag-dialog .date-container{padding:16px 0 24px 0}md-dialog.tag-dialog .error-list{font-size:13px}md-dialog.tag-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.tag-dialog .error-list .error .message{font-weight:500}md-dialog.tag-dialog .error-list .error .md-button{margin:0}md-dialog.tag-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.tag-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tags{position:relative}#tags>.header{height:76px;min-height:76px;max-height:76px}#tags>.header .logo .logo-icon{margin:0 16px 0 0}#tags>.header .logo .logo-text{font-size:24px}#tags>.header md-icon{color:#fff}#tags>.header .search-input-wrapper{position:relative}#tags>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#tags>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#tags>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#tags>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#tags>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#tags>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#tags>.header.selected-bar .close-button-wrapper{width:244px}#tags>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#tags>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#tags>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#tags #add-tag-button{position:fixed;bottom:8px;right:8px;padding:0}#tags #upload-tag-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.template-dialog{max-width:720px;width:720px}md-dialog.template-dialog md-dialog-content{display:block;position:relative}md-dialog.template-dialog md-toolbar .title{font-size:17px}md-dialog.template-dialog md-input-container textarea{min-height:150px}md-dialog.template-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.template-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.template-dialog .date-container{padding:16px 0 24px 0}md-dialog.template-dialog .error-list{font-size:13px}md-dialog.template-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.template-dialog .error-list .error .message{font-weight:500}md-dialog.template-dialog .error-list .error .md-button{margin:0}md-dialog.template-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.template-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#templates{position:relative}#templates>.header{height:76px;min-height:76px;max-height:76px}#templates>.header .logo .logo-icon{margin:0 16px 0 0}#templates>.header .logo .logo-text{font-size:24px}#templates>.header md-icon{color:#fff}#templates>.header .search-input-wrapper{position:relative}#templates>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#templates>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#templates>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#templates>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#templates>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#templates>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#templates>.header.selected-bar .close-button-wrapper{width:244px}#templates>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#templates>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#templates>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#templates #add-template-button{position:fixed;bottom:8px;right:8px;padding:0}#templates #upload-template-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trigger-dialog{max-width:720px;width:720px}md-dialog.trigger-dialog md-dialog-content{display:block;position:relative}md-dialog.trigger-dialog md-toolbar .title{font-size:17px}md-dialog.trigger-dialog md-input-container textarea{min-height:150px}md-dialog.trigger-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trigger-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trigger-dialog .date-container{padding:16px 0 24px 0}md-dialog.trigger-dialog .error-list{font-size:13px}md-dialog.trigger-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trigger-dialog .error-list .error .message{font-weight:500}md-dialog.trigger-dialog .error-list .error .md-button{margin:0}md-dialog.trigger-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trigger-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.action-dialog{max-width:720px;width:720px}md-dialog.action-dialog md-dialog-content{display:block;position:relative}md-dialog.action-dialog md-toolbar .title{font-size:17px}md-dialog.action-dialog md-input-container textarea{min-height:150px}md-dialog.action-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.action-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.action-dialog .date-container{padding:16px 0 24px 0}md-dialog.action-dialog .error-list{font-size:13px}md-dialog.action-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.action-dialog .error-list .error .message{font-weight:500}md-dialog.action-dialog .error-list .error .md-button{margin:0}md-dialog.action-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.action-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.allCondition-dialog{max-width:720px;width:720px}md-dialog.allCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.allCondition-dialog md-toolbar .title{font-size:17px}md-dialog.allCondition-dialog md-input-container textarea{min-height:150px}md-dialog.allCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.allCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.allCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.allCondition-dialog .error-list{font-size:13px}md-dialog.allCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.allCondition-dialog .error-list .error .message{font-weight:500}md-dialog.allCondition-dialog .error-list .error .md-button{margin:0}md-dialog.allCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.allCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.anyCondition-dialog{max-width:720px;width:720px}md-dialog.anyCondition-dialog md-dialog-content{display:block;position:relative}md-dialog.anyCondition-dialog md-toolbar .title{font-size:17px}md-dialog.anyCondition-dialog md-input-container textarea{min-height:150px}md-dialog.anyCondition-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.anyCondition-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.anyCondition-dialog .date-container{padding:16px 0 24px 0}md-dialog.anyCondition-dialog .error-list{font-size:13px}md-dialog.anyCondition-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.anyCondition-dialog .error-list .error .message{font-weight:500}md-dialog.anyCondition-dialog .error-list .error .md-button{margin:0}md-dialog.anyCondition-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.anyCondition-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trigger .header{height:76px;min-height:76px;max-height:76px}#tools-trigger .header .goto-triggers-button{margin-right:16px}#tools-trigger .header .trigger-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trigger .header .trigger-image img{height:100%;width:auto;max-width:none}#tools-trigger .header .subtitle{margin:6px 0 0 0}#tools-trigger .trigger-detail-form-container{padding:24px;margin-bottom:24px}#tools-trigger .trigger-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trigger .trigger-detail-form-container .handle{cursor:move}#tools-trigger .trigger-detail-form-container md-input-container md-switch{margin:0!important}#tools-trigger .trigger-detail-form-container #trigger-image-uploader{position:relative}#tools-trigger .trigger-detail-form-container #trigger-image-uploader.dropping .drop-text{display:flex}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .upload-button{margin-bottom:16px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trigger .trigger-detail-form-container #trigger-image-uploader .trigger-image .media{max-height:100%}#tools-trigger md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trigger md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trigger md-table-container.font-size-12 td.md-cell{font-size:12px!important}#triggers{position:relative}#triggers>.header{height:76px;min-height:76px;max-height:76px}#triggers>.header .logo .logo-icon{margin:0 16px 0 0}#triggers>.header .logo .logo-text{font-size:24px}#triggers>.header md-icon{color:#fff}#triggers>.header .search-input-wrapper{position:relative}#triggers>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#triggers>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#triggers>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#triggers>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#triggers>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#triggers>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#triggers>.header.selected-bar .close-button-wrapper{width:244px}#triggers>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#triggers>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#triggers>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#triggers #add-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}#triggers #upload-trigger-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.trunk-dialog{max-width:720px;width:720px}md-dialog.trunk-dialog md-dialog-content{display:block;position:relative}md-dialog.trunk-dialog md-toolbar .title{font-size:17px}md-dialog.trunk-dialog md-input-container textarea{min-height:150px}md-dialog.trunk-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.trunk-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.trunk-dialog .date-container{padding:16px 0 24px 0}md-dialog.trunk-dialog .error-list{font-size:13px}md-dialog.trunk-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.trunk-dialog .error-list .error .message{font-weight:500}md-dialog.trunk-dialog .error-list .error .md-button{margin:0}md-dialog.trunk-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.trunk-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#tools-trunk .header{height:76px;min-height:76px;max-height:76px}#tools-trunk .header .goto-trunks-button{margin-right:16px}#tools-trunk .header .trunk-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#tools-trunk .header .trunk-image img{height:100%;width:auto;max-width:none}#tools-trunk .header .subtitle{margin:6px 0 0 0}#tools-trunk .trunk-detail-form-container{padding:24px;margin-bottom:24px}#tools-trunk .trunk-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#tools-trunk .trunk-detail-form-container .handle{cursor:move}#tools-trunk .trunk-detail-form-container md-input-container md-switch{margin:0!important}#tools-trunk .trunk-detail-form-container #trunk-image-uploader{position:relative}#tools-trunk .trunk-detail-form-container #trunk-image-uploader.dropping .drop-text{display:flex}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .upload-button{margin-bottom:16px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#tools-trunk .trunk-detail-form-container #trunk-image-uploader .trunk-image .media{max-height:100%}#tools-trunk md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#tools-trunk md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#tools-trunk md-table-container.font-size-12 td.md-cell{font-size:12px!important}#trunks{position:relative}#trunks>.header{height:76px;min-height:76px;max-height:76px}#trunks>.header .logo .logo-icon{margin:0 16px 0 0}#trunks>.header .logo .logo-text{font-size:24px}#trunks>.header md-icon{color:#fff}#trunks>.header .search-input-wrapper{position:relative}#trunks>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#trunks>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#trunks>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#trunks>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#trunks>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#trunks>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#trunks>.header.selected-bar .close-button-wrapper{width:244px}#trunks>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#trunks>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#trunks>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#trunks #add-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}#trunks #upload-trunk-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.variable-dialog{max-width:720px;width:720px}md-dialog.variable-dialog md-dialog-content{display:block;position:relative}md-dialog.variable-dialog md-toolbar .title{font-size:17px}md-dialog.variable-dialog md-input-container textarea{min-height:150px}md-dialog.variable-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.variable-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.variable-dialog .date-container{padding:16px 0 24px 0}md-dialog.variable-dialog .error-list{font-size:13px}md-dialog.variable-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.variable-dialog .error-list .error .message{font-weight:500}md-dialog.variable-dialog .error-list .error .md-button{margin:0}md-dialog.variable-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.variable-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#variables{position:relative}#variables>.header{height:76px;min-height:76px;max-height:76px}#variables>.header .logo .logo-icon{margin:0 16px 0 0}#variables>.header .logo .logo-text{font-size:24px}#variables>.header md-icon{color:#fff}#variables>.header .search-input-wrapper{position:relative}#variables>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#variables>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#variables>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#variables>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#variables>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#variables>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#variables>.header.selected-bar .close-button-wrapper{width:244px}#variables>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#variables>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#variables>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#variables #add-variable-button{position:fixed;bottom:8px;right:8px;padding:0}#variables #upload-variable-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.screenRecording-dialog{max-width:720px;width:720px}md-dialog.screenRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.screenRecording-dialog md-toolbar .title{font-size:17px}md-dialog.screenRecording-dialog md-input-container textarea{min-height:150px}md-dialog.screenRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.screenRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.screenRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.screenRecording-dialog .error-list{font-size:13px}md-dialog.screenRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.screenRecording-dialog .error-list .error .message{font-weight:500}md-dialog.screenRecording-dialog .error-list .error .md-button{margin:0}md-dialog.screenRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.screenRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#screenRecordings{position:relative}#screenRecordings>.header{height:76px;min-height:76px;max-height:76px}#screenRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#screenRecordings>.header .logo .logo-text{font-size:24px}#screenRecordings>.header md-icon{color:#fff}#screenRecordings>.header .search-input-wrapper{position:relative}#screenRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#screenRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#screenRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#screenRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#screenRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#screenRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#screenRecordings>.header.selected-bar .close-button-wrapper{width:244px}#screenRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#screenRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#screenRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#screenRecordings #add-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#screenRecordings #upload-screenRecording-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voice-routing-dialog{max-width:720px;width:720px}md-dialog.voice-routing-dialog md-dialog-content{display:block;position:relative}md-dialog.voice-routing-dialog md-toolbar .title{font-size:17px}md-dialog.voice-routing-dialog md-input-container textarea{min-height:150px}md-dialog.voice-routing-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voice-routing-dialog .date-container{padding:16px 0 24px 0}md-dialog.voice-routing-dialog .error-list{font-size:13px}md-dialog.voice-routing-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voice-routing-dialog .error-list .error .message{font-weight:500}md-dialog.voice-routing-dialog .error-list .error .md-button{margin:0}md-dialog.voice-routing-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voice-routing-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.interval-dialog{max-width:720px;width:720px}md-dialog.interval-dialog md-dialog-content{display:block;position:relative}md-dialog.interval-dialog md-toolbar .title{font-size:17px}md-dialog.interval-dialog md-input-container textarea{min-height:150px}md-dialog.interval-dialog .date-container{padding:16px 0 24px 0}md-dialog.interval-dialog .error-list{font-size:13px}md-dialog.interval-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.interval-dialog .error-list .error .message{font-weight:500}md-dialog.interval-dialog .error-list .error .md-button{margin:0}md-dialog.interval-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.interval-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#chanSpies{position:relative}#chanSpies>.header{height:76px;min-height:76px;max-height:76px}#chanSpies>.header .logo .logo-icon{margin:0 16px 0 0}#chanSpies>.header .logo .logo-text{font-size:24px}#chanSpies>.header md-icon{color:#fff}#chanSpies>.header .search-input-wrapper{position:relative}#chanSpies>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#chanSpies>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#chanSpies>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#chanSpies>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#chanSpies>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#chanSpies>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#chanSpies>.header.selected-bar .close-button-wrapper{width:244px}#chanSpies>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#chanSpies>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#chanSpies>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#chanSpies #add-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}#chanSpies #upload-chanSpy-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.chanSpy-dialog{max-width:720px;width:720px}md-dialog.chanSpy-dialog md-dialog-content{display:block;position:relative}md-dialog.chanSpy-dialog md-toolbar .title{font-size:17px}md-dialog.chanSpy-dialog md-input-container textarea{min-height:150px}md-dialog.chanSpy-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.chanSpy-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.chanSpy-dialog .date-container{padding:16px 0 24px 0}md-dialog.chanSpy-dialog .error-list{font-size:13px}md-dialog.chanSpy-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.chanSpy-dialog .error-list .error .message{font-weight:500}md-dialog.chanSpy-dialog .error-list .error .md-button{margin:0}md-dialog.chanSpy-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.chanSpy-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#contexts{position:relative}#contexts>.header{height:76px;min-height:76px;max-height:76px}#contexts>.header .logo .logo-icon{margin:0 16px 0 0}#contexts>.header .logo .logo-text{font-size:24px}#contexts>.header md-icon{color:#fff}#contexts>.header .search-input-wrapper{position:relative}#contexts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#contexts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#contexts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#contexts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#contexts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#contexts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#contexts>.header.selected-bar .close-button-wrapper{width:244px}#contexts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#contexts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#contexts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#contexts #add-context-button{position:fixed;bottom:8px;right:8px;padding:0}#contexts #upload-context-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.context-dialog{max-width:720px;width:720px}md-dialog.context-dialog md-dialog-content{display:block;position:relative}md-dialog.context-dialog md-toolbar .title{font-size:17px}md-dialog.context-dialog md-input-container textarea{min-height:150px}md-dialog.context-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.context-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.context-dialog .date-container{padding:16px 0 24px 0}md-dialog.context-dialog .error-list{font-size:13px}md-dialog.context-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.context-dialog .error-list .error .message{font-weight:500}md-dialog.context-dialog .error-list .error .md-button{margin:0}md-dialog.context-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.context-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.inbound-route-dialog{max-width:720px;width:720px}md-dialog.inbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.inbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.inbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.inbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.inbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.inbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.inbound-route-dialog .error-list{font-size:13px}md-dialog.inbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.inbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.inbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.inbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.inbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-inbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-inbound-route .header .goto-inbound-routes-button{margin-right:16px}#voice-inbound-route .header .inbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-inbound-route .header .inbound-route-image img{height:100%;width:auto;max-width:none}#voice-inbound-route .header .subtitle{margin:6px 0 0 0}#voice-inbound-route .inbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-inbound-route .inbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-inbound-route .inbound-route-detail-form-container .handle{cursor:move}#voice-inbound-route .inbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-inbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-inbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-inbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-inbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-inbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-inbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-inbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-inbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-inbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-inbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-inbound-route .actionAppData{width:80px!important}}#inbound-routes{position:relative}#inbound-routes>.header{height:76px;min-height:76px;max-height:76px}#inbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#inbound-routes>.header .logo .logo-text{font-size:24px}#inbound-routes>.header md-icon{color:#fff}#inbound-routes>.header .search-input-wrapper{position:relative}#inbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#inbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#inbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#inbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#inbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#inbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#inbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#inbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#inbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#inbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#inbound-routes #add-inbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.internal-route-dialog{max-width:720px;width:720px}md-dialog.internal-route-dialog md-dialog-content{display:block;position:relative}md-dialog.internal-route-dialog md-toolbar .title{font-size:17px}md-dialog.internal-route-dialog md-input-container textarea{min-height:150px}md-dialog.internal-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.internal-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.internal-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.internal-route-dialog .error-list{font-size:13px}md-dialog.internal-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.internal-route-dialog .error-list .error .message{font-weight:500}md-dialog.internal-route-dialog .error-list .error .md-button{margin:0}md-dialog.internal-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.internal-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-internal-route .header{height:76px;min-height:76px;max-height:76px}#voice-internal-route .header .goto-internal-routes-button{margin-right:16px}#voice-internal-route .header .internal-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-internal-route .header .internal-route-image img{height:100%;width:auto;max-width:none}#voice-internal-route .header .subtitle{margin:6px 0 0 0}#voice-internal-route .internal-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-internal-route .internal-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-internal-route .internal-route-detail-form-container .handle{cursor:move}#voice-internal-route .internal-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-internal-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-internal-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-internal-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-internal-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-internal-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-internal-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-internal-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-internal-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-internal-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-internal-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-internal-route .actionAppData{width:80px!important}}#internal-routes{position:relative}#internal-routes>.header{height:76px;min-height:76px;max-height:76px}#internal-routes>.header .logo .logo-icon{margin:0 16px 0 0}#internal-routes>.header .logo .logo-text{font-size:24px}#internal-routes>.header md-icon{color:#fff}#internal-routes>.header .search-input-wrapper{position:relative}#internal-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#internal-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#internal-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#internal-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#internal-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#internal-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#internal-routes>.header.selected-bar .close-button-wrapper{width:244px}#internal-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#internal-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#internal-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#internal-routes #add-internal-route-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.musiconhold-dialog{max-width:720px;width:720px}md-dialog.musiconhold-dialog md-dialog-content{display:block;position:relative}md-dialog.musiconhold-dialog md-toolbar .title{font-size:17px}md-dialog.musiconhold-dialog md-input-container textarea{min-height:150px}md-dialog.musiconhold-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.musiconhold-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.musiconhold-dialog .date-container{padding:16px 0 24px 0}md-dialog.musiconhold-dialog .error-list{font-size:13px}md-dialog.musiconhold-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.musiconhold-dialog .error-list .error .message{font-weight:500}md-dialog.musiconhold-dialog .error-list .error .md-button{margin:0}md-dialog.musiconhold-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.musiconhold-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.mohSound-dialog{max-width:720px;width:720px}md-dialog.mohSound-dialog md-dialog-content{display:block;position:relative}md-dialog.mohSound-dialog md-toolbar .title{font-size:17px}md-dialog.mohSound-dialog md-input-container textarea{min-height:150px}md-dialog.mohSound-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.mohSound-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.mohSound-dialog .date-container{padding:16px 0 24px 0}md-dialog.mohSound-dialog .error-list{font-size:13px}md-dialog.mohSound-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.mohSound-dialog .error-list .error .message{font-weight:500}md-dialog.mohSound-dialog .error-list .error .md-button{margin:0}md-dialog.mohSound-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.mohSound-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-musiconhold .header{height:76px;min-height:76px;max-height:76px}#voice-musiconhold .header .goto-musiconholds-button{margin-right:16px}#voice-musiconhold .header .musiconhold-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-musiconhold .header .musiconhold-image img{height:100%;width:auto;max-width:none}#voice-musiconhold .header .subtitle{margin:6px 0 0 0}#voice-musiconhold .musiconhold-detail-form-container{padding:24px;margin-bottom:24px}#voice-musiconhold .musiconhold-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-musiconhold .musiconhold-detail-form-container .handle{cursor:move}#voice-musiconhold .musiconhold-detail-form-container md-input-container md-switch{margin:0!important}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader{position:relative}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader.dropping .drop-text{display:flex}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .upload-button{margin-bottom:16px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-musiconhold .musiconhold-detail-form-container #musiconhold-image-uploader .musiconhold-image .media{max-height:100%}#voice-musiconhold md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-musiconhold md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-musiconhold md-table-container.font-size-12 td.md-cell{font-size:12px!important}#musiconholds{position:relative}#musiconholds>.header{height:76px;min-height:76px;max-height:76px}#musiconholds>.header .logo .logo-icon{margin:0 16px 0 0}#musiconholds>.header .logo .logo-text{font-size:24px}#musiconholds>.header md-icon{color:#fff}#musiconholds>.header .search-input-wrapper{position:relative}#musiconholds>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#musiconholds>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#musiconholds>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#musiconholds>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#musiconholds>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#musiconholds>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#musiconholds>.header.selected-bar .close-button-wrapper{width:244px}#musiconholds>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#musiconholds>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#musiconholds>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#musiconholds #add-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}#musiconholds #upload-musiconhold-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.outbound-route-dialog{max-width:720px;width:720px}md-dialog.outbound-route-dialog md-dialog-content{display:block;position:relative}md-dialog.outbound-route-dialog md-toolbar .title{font-size:17px}md-dialog.outbound-route-dialog md-input-container textarea{min-height:150px}md-dialog.outbound-route-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.outbound-route-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.outbound-route-dialog .date-container{padding:16px 0 24px 0}md-dialog.outbound-route-dialog .error-list{font-size:13px}md-dialog.outbound-route-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.outbound-route-dialog .error-list .error .message{font-weight:500}md-dialog.outbound-route-dialog .error-list .error .md-button{margin:0}md-dialog.outbound-route-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.outbound-route-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-outbound-route .header{height:76px;min-height:76px;max-height:76px}#voice-outbound-route .header .goto-outbound-routes-button{margin-right:16px}#voice-outbound-route .header .outbound-route-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-outbound-route .header .outbound-route-image img{height:100%;width:auto;max-width:none}#voice-outbound-route .header .subtitle{margin:6px 0 0 0}#voice-outbound-route .outbound-route-detail-form-container{padding:24px;margin-bottom:24px}#voice-outbound-route .outbound-route-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-outbound-route .outbound-route-detail-form-container .handle{cursor:move}#voice-outbound-route .outbound-route-detail-form-container md-input-container md-switch{margin:0!important}#voice-outbound-route md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-outbound-route md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-outbound-route md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#voice-outbound-route .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#voice-outbound-route .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#voice-outbound-route .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#voice-outbound-route .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#voice-outbound-route .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#voice-outbound-route .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#voice-outbound-route .actionAppData{width:150px!important}}@media screen and (max-width:960px){#voice-outbound-route .actionAppData{width:80px!important}}#outbound-routes{position:relative}#outbound-routes>.header{height:76px;min-height:76px;max-height:76px}#outbound-routes>.header .logo .logo-icon{margin:0 16px 0 0}#outbound-routes>.header .logo .logo-text{font-size:24px}#outbound-routes>.header md-icon{color:#fff}#outbound-routes>.header .search-input-wrapper{position:relative}#outbound-routes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#outbound-routes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#outbound-routes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#outbound-routes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#outbound-routes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#outbound-routes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#outbound-routes>.header.selected-bar .close-button-wrapper{width:244px}#outbound-routes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#outbound-routes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#outbound-routes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#outbound-routes #add-outbound-route-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}#realtime>.content td.text-center span.text-boxed,#realtime>.content td.text-center span.text-boxed-light{display:block}@keyframes blinker{50%{opacity:0}}md-dialog.voicemail-dialog{max-width:720px;width:720px}md-dialog.voicemail-dialog md-dialog-content{display:block;position:relative}md-dialog.voicemail-dialog md-toolbar .title{font-size:17px}md-dialog.voicemail-dialog md-input-container textarea{min-height:150px}md-dialog.voicemail-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicemail-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicemail-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicemail-dialog .error-list{font-size:13px}md-dialog.voicemail-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicemail-dialog .error-list .error .message{font-weight:500}md-dialog.voicemail-dialog .error-list .error .md-button{margin:0}md-dialog.voicemail-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicemail-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voicemail .header{height:76px;min-height:76px;max-height:76px}#voice-voicemail .header .goto-voicemails-button{margin-right:16px}#voice-voicemail .header .voicemail-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voicemail .header .voicemail-image img{height:100%;width:auto;max-width:none}#voice-voicemail .header .subtitle{margin:6px 0 0 0}#voice-voicemail .voicemail-detail-form-container{padding:24px;margin-bottom:24px}#voice-voicemail .voicemail-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voicemail .voicemail-detail-form-container .handle{cursor:move}#voice-voicemail .voicemail-detail-form-container md-input-container md-switch{margin:0!important}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader{position:relative}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader.dropping .drop-text{display:flex}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .upload-button{margin-bottom:16px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voicemail .voicemail-detail-form-container #voicemail-image-uploader .voicemail-image .media{max-height:100%}#voice-voicemail md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voicemail md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voicemail md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voicemails{position:relative}#voicemails>.header{height:76px;min-height:76px;max-height:76px}#voicemails>.header .logo .logo-icon{margin:0 16px 0 0}#voicemails>.header .logo .logo-text{font-size:24px}#voicemails>.header md-icon{color:#fff}#voicemails>.header .search-input-wrapper{position:relative}#voicemails>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicemails>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicemails>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicemails>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicemails>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicemails>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicemails>.header.selected-bar .close-button-wrapper{width:244px}#voicemails>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicemails>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicemails>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicemails #add-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}#voicemails #upload-voicemail-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voicePrefix-dialog{max-width:720px;width:720px}md-dialog.voicePrefix-dialog md-dialog-content{display:block;position:relative}md-dialog.voicePrefix-dialog md-toolbar .title{font-size:17px}md-dialog.voicePrefix-dialog md-input-container textarea{min-height:150px}md-dialog.voicePrefix-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voicePrefix-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voicePrefix-dialog .date-container{padding:16px 0 24px 0}md-dialog.voicePrefix-dialog .error-list{font-size:13px}md-dialog.voicePrefix-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voicePrefix-dialog .error-list .error .message{font-weight:500}md-dialog.voicePrefix-dialog .error-list .error .md-button{margin:0}md-dialog.voicePrefix-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voicePrefix-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voicePrefixes{position:relative}#voicePrefixes>.header{height:76px;min-height:76px;max-height:76px}#voicePrefixes>.header .logo .logo-icon{margin:0 16px 0 0}#voicePrefixes>.header .logo .logo-text{font-size:24px}#voicePrefixes>.header md-icon{color:#fff}#voicePrefixes>.header .search-input-wrapper{position:relative}#voicePrefixes>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voicePrefixes>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voicePrefixes>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voicePrefixes>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voicePrefixes>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voicePrefixes>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voicePrefixes>.header.selected-bar .close-button-wrapper{width:244px}#voicePrefixes>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voicePrefixes>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voicePrefixes>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voicePrefixes #add-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}#voicePrefixes #upload-voicePrefix-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceQueue-dialog{max-width:720px;width:720px}md-dialog.voiceQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceQueue-dialog md-toolbar .title{font-size:17px}md-dialog.voiceQueue-dialog md-input-container textarea{min-height:150px}md-dialog.voiceQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceQueue-dialog .error-list{font-size:13px}md-dialog.voiceQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceQueue-dialog .error-list .error .message{font-weight:500}md-dialog.voiceQueue-dialog .error-list .error .md-button{margin:0}md-dialog.voiceQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceQueue .header{height:76px;min-height:76px;max-height:76px}#voice-voiceQueue .header .goto-voiceQueues-button{margin-right:16px}#voice-voiceQueue .header .voiceQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceQueue .header .voiceQueue-image img{height:100%;width:auto;max-width:none}#voice-voiceQueue .header .subtitle{margin:6px 0 0 0}#voice-voiceQueue .voiceQueue-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceQueue .voiceQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceQueue .voiceQueue-detail-form-container .handle{cursor:move}#voice-voiceQueue .voiceQueue-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader{position:relative}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader.dropping .drop-text{display:flex}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .upload-button{margin-bottom:16px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceQueue .voiceQueue-detail-form-container #voiceQueue-image-uploader .voiceQueue-image .media{max-height:100%}#voice-voiceQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voiceQueues{position:relative}#voiceQueues>.header{height:76px;min-height:76px;max-height:76px}#voiceQueues>.header .logo .logo-icon{margin:0 16px 0 0}#voiceQueues>.header .logo .logo-text{font-size:24px}#voiceQueues>.header md-icon{color:#fff}#voiceQueues>.header .search-input-wrapper{position:relative}#voiceQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceQueues>.header.selected-bar .close-button-wrapper{width:244px}#voiceQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceQueues #add-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceQueues #upload-voiceQueue-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.voiceRecording-dialog{max-width:720px;width:720px}md-dialog.voiceRecording-dialog md-dialog-content{display:block;position:relative}md-dialog.voiceRecording-dialog md-toolbar .title{font-size:17px}md-dialog.voiceRecording-dialog md-input-container textarea{min-height:150px}md-dialog.voiceRecording-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.voiceRecording-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.voiceRecording-dialog .date-container{padding:16px 0 24px 0}md-dialog.voiceRecording-dialog .error-list{font-size:13px}md-dialog.voiceRecording-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.voiceRecording-dialog .error-list .error .message{font-weight:500}md-dialog.voiceRecording-dialog .error-list .error .md-button{margin:0}md-dialog.voiceRecording-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.voiceRecording-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#voice-voiceRecording .header{height:76px;min-height:76px;max-height:76px}#voice-voiceRecording .header .goto-voiceRecordings-button{margin-right:16px}#voice-voiceRecording .header .voiceRecording-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#voice-voiceRecording .header .voiceRecording-image img{height:100%;width:auto;max-width:none}#voice-voiceRecording .header .subtitle{margin:6px 0 0 0}#voice-voiceRecording .voiceRecording-detail-form-container{padding:24px;margin-bottom:24px}#voice-voiceRecording .voiceRecording-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#voice-voiceRecording .voiceRecording-detail-form-container .handle{cursor:move}#voice-voiceRecording .voiceRecording-detail-form-container md-input-container md-switch{margin:0!important}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader{position:relative}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader.dropping .drop-text{display:flex}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .upload-button{margin-bottom:16px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#voice-voiceRecording .voiceRecording-detail-form-container #voiceRecording-image-uploader .voiceRecording-image .media{max-height:100%}#voice-voiceRecording md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#voice-voiceRecording md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#voice-voiceRecording md-table-container.font-size-12 td.md-cell{font-size:12px!important}#voice-voiceRecording .sentiment.POSITIVE{color:#4caf50;font-size:25px}#voice-voiceRecording .sentiment.NEGATIVE{color:#f40505;font-size:30px}#voice-voiceRecording .sentiment.NEUTRAL{color:#03a9f4;font-size:30px}#voice-voiceRecording .sentiment.MIXED{color:#9c27b0;font-size:30px}#voiceRecordings{position:relative}#voiceRecordings>.header{height:76px;min-height:76px;max-height:76px}#voiceRecordings>.header .logo .logo-icon{margin:0 16px 0 0}#voiceRecordings>.header .logo .logo-text{font-size:24px}#voiceRecordings>.header md-icon{color:#fff}#voiceRecordings>.header .search-input-wrapper{position:relative}#voiceRecordings>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#voiceRecordings>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#voiceRecordings>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#voiceRecordings>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#voiceRecordings>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#voiceRecordings>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#voiceRecordings>.header.selected-bar .close-button-wrapper{width:244px}#voiceRecordings>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#voiceRecordings>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#voiceRecordings>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#voiceRecordings #add-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#voiceRecordings #upload-voiceRecording-button{position:fixed;bottom:8px;right:8px;padding:0}#realtime{height:auto}#realtime>.content .blink{animation:blinker 2s linear infinite}#realtime>.content .avatar-wrapper{position:relative}#realtime>.content .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .search-input-wrapper{position:relative;margin-left:20px}#realtime>.content .search-input-wrapper label{padding:6px;cursor:pointer}#realtime>.content .search-input-wrapper md-input-container{padding-top:20px}#realtime>.content .main .labels{padding:8px 16px}#realtime>.content .main .labels .label{margin:0 0 2px 4px;padding:2px 5px;font-size:11px;white-space:nowrap;border-radius:2px}#realtime>.content .main .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .main .avatar-wrapper{position:relative}#realtime>.content .main .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#realtime>.content .custom-column{padding:0 24px!important}@keyframes blinker{50%{opacity:0}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappAccount-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}md-dialog.whatsappAccount-dialog{max-width:720px;width:720px}md-dialog.whatsappAccount-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappAccount-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappAccount-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappAccount-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappAccount-dialog .error-list{font-size:13px}md-dialog.whatsappAccount-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappAccount-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappAccount-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappAccount-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappAccount-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappAccount .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappAccount .header .goto-whatsappAccounts-button{margin-right:16px}#whatsapp-whatsappAccount .header .whatsappAccount-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappAccount .header .whatsappAccount-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappAccount .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container .handle{cursor:move}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader{position:relative}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappAccount .whatsappAccount-detail-form-container #whatsappAccount-image-uploader .whatsappAccount-image .media{max-height:100%}#whatsapp-whatsappAccount md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappAccount md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappAccount md-table-container.font-size-12 td.md-cell{font-size:12px!important}@media screen and (min-width:1921px){#whatsapp-whatsappAccount .actionAppData{width:800px!important}}@media screen and (max-width:1920px){#whatsapp-whatsappAccount .actionAppData{width:700px!important}}@media screen and (min-width:1751px) and (max-width:1919px){#whatsapp-whatsappAccount .actionAppData{width:600px!important}}@media screen and (min-width:1601px) and (max-width:1750px){#whatsapp-whatsappAccount .actionAppData{width:500px!important}}@media screen and (min-width:1537px) and (max-width:1600px){#whatsapp-whatsappAccount .actionAppData{width:450px!important}}@media screen and (min-width:1281px) and (max-width:1536px){#whatsapp-whatsappAccount .actionAppData{width:300px!important}}@media screen and (max-width:1280px){#whatsapp-whatsappAccount .actionAppData{width:150px!important}}@media screen and (max-width:960px){#whatsapp-whatsappAccount .actionAppData{width:80px!important}}md-dialog.whatsappCannedAnswer-dialog{max-width:720px;width:720px}md-dialog.whatsappCannedAnswer-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappCannedAnswer-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappCannedAnswer-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappCannedAnswer-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappCannedAnswer-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappCannedAnswer-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappCannedAnswer-dialog .error-list{font-size:13px}md-dialog.whatsappCannedAnswer-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappCannedAnswer-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappCannedAnswer-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappCannedAnswer-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappCannedAnswer-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsappAccounts{position:relative}#whatsappAccounts>.header{height:76px;min-height:76px;max-height:76px}#whatsappAccounts>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappAccounts>.header .logo .logo-text{font-size:24px}#whatsappAccounts>.header md-icon{color:#fff}#whatsappAccounts>.header .search-input-wrapper{position:relative}#whatsappAccounts>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappAccounts>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappAccounts>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappAccounts>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappAccounts>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappAccounts>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappAccounts>.header.selected-bar .close-button-wrapper{width:244px}#whatsappAccounts>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappAccounts>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappAccounts>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappAccounts #add-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappAccounts #upload-whatsappAccount-button{position:fixed;bottom:8px;right:8px;padding:0}md-dialog.whatsappQueue-dialog{max-width:720px;width:720px}md-dialog.whatsappQueue-dialog md-dialog-content{display:block;position:relative}md-dialog.whatsappQueue-dialog md-toolbar .title{font-size:17px}md-dialog.whatsappQueue-dialog md-input-container textarea{min-height:150px}md-dialog.whatsappQueue-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.whatsappQueue-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.whatsappQueue-dialog .date-container{padding:16px 0 24px 0}md-dialog.whatsappQueue-dialog .error-list{font-size:13px}md-dialog.whatsappQueue-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.whatsappQueue-dialog .error-list .error .message{font-weight:500}md-dialog.whatsappQueue-dialog .error-list .error .md-button{margin:0}md-dialog.whatsappQueue-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.whatsappQueue-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#whatsapp-whatsappQueue .header{height:76px;min-height:76px;max-height:76px}#whatsapp-whatsappQueue .header .goto-whatsappQueues-button{margin-right:16px}#whatsapp-whatsappQueue .header .whatsappQueue-image{overflow:hidden;width:56px;height:56px;margin-right:16px;border:3px solid rgba(0,0,0,.12)}#whatsapp-whatsappQueue .header .whatsappQueue-image img{height:100%;width:auto;max-width:none}#whatsapp-whatsappQueue .header .subtitle{margin:6px 0 0 0}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container{padding:24px;margin-bottom:24px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container .handle{cursor:move}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container md-input-container md-switch{margin:0!important}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader{position:relative}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader.dropping .drop-text{display:flex}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .drop-text{display:none;position:absolute;top:0;right:0;bottom:0;left:0;padding:16px;text-align:center;border:2px dashed rgba(0,0,0,.12);background:#fff;font-size:20px;z-index:100}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .upload-button{margin-bottom:16px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image{position:relative;width:200px;height:200px;border:1px solid rgba(0,0,0,.12);margin:8px}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image.uploading .overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.87)}#whatsapp-whatsappQueue .whatsappQueue-detail-form-container #whatsappQueue-image-uploader .whatsappQueue-image .media{max-height:100%}#whatsapp-whatsappQueue md-table-container thead tr th:not(:first-child):not(.no-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container thead th.md-checkbox-column:not(.no-padding){padding:0 24px!important}#whatsapp-whatsappQueue md-table-container tbody tr td:not(:first-child):not(.no-padding):not(.actions-padding){padding:0 20px 0 0!important}#whatsapp-whatsappQueue md-table-container.font-size-12 td.md-cell{font-size:12px!important}#whatsappQueues{position:relative}#whatsappQueues>.header{height:76px;min-height:76px;max-height:76px}#whatsappQueues>.header .logo .logo-icon{margin:0 16px 0 0}#whatsappQueues>.header .logo .logo-text{font-size:24px}#whatsappQueues>.header md-icon{color:#fff}#whatsappQueues>.header .search-input-wrapper{position:relative}#whatsappQueues>.header .search-input-wrapper label{padding-right:4px;cursor:pointer}#whatsappQueues>.header .search-input-wrapper label md-icon{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container .md-errors-spacer{display:none}#whatsappQueues>.header .search-input-wrapper md-input-container input{border-bottom:1px solid rgba(255,255,255,.8);color:rgba(255,255,255,.8);width:240px}#whatsappQueues>.header .search-input-wrapper md-input-container input::placeholder{color:rgba(255,255,255,.8)}#whatsappQueues>.header .search-input-wrapper md-input-container input:focus{border-bottom:1px solid #fff;color:#fff}#whatsappQueues>.header.selected-bar{position:absolute;top:0;left:0;right:0;z-index:999;background-image:none;opacity:1!important}#whatsappQueues>.header.selected-bar .close-button-wrapper{width:244px}#whatsappQueues>.content{position:absolute;top:76px;bottom:0;right:0;left:0}#whatsappQueues>.content .main{padding:16px 90px 0 4px;position:absolute;top:0;left:24px;right:0;bottom:0}#whatsappQueues>.content .main .no-results{box-shadow:0 1px 1px 0 rgba(0,0,0,.14)}#whatsappQueues #add-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#whatsappQueues #upload-whatsappQueue-button{position:fixed;bottom:8px;right:8px;padding:0}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #layout-vertical-navigation-fullwidth-toolbar-2 #vertical-navigation .navigation-header .logo-text{display:none}}#vertical-navigation{width:240px;min-width:240px;max-width:240px;overflow-x:hidden;transition:all .3s cubic-bezier(.55,0,.55,.2),width .1s linear,min-width .1s linear,max-width .1s linear;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12)}#vertical-navigation .navigation-header{height:64px;min-height:64px;background-color:rgba(255,255,255,.05);padding:0 16px 0 24px}#vertical-navigation .navigation-header .logo .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px}#vertical-navigation .navigation-header .logo .logo-text{color:#fff;margin-left:16px;font-size:16px}#vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s;transform:rotate(0);margin:0;padding:8px;width:34px!important;height:34px!important;cursor:pointer}#vertical-navigation:not(._md-locked-open){box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12)}@media only screen and (min-width:960px){.ms-navigation-folded #content-container{margin-left:64px}.ms-navigation-folded #vertical-navigation{position:absolute}.ms-navigation-folded #vertical-navigation .navigation-header .fold-toggle{transform:rotate(180deg);opacity:0}.ms-navigation-folded.ms-navigation-folded-open #vertical-navigation .navigation-header .fold-toggle{transition:transform .3s ease-in-out .1s,opacity .3s ease-in-out .2s;opacity:1}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation{position:absolute;width:64px;min-width:64px;max-width:64px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header{padding:0 16px}.ms-navigation-folded:not(.ms-navigation-folded-open) #vertical-navigation .navigation-header .logo-text{display:none}}#quick-panel{width:330px;min-width:330px;max-width:330px;z-index:99}#quick-panel md-content{height:100%}#quick-panel md-content md-tabs{position:static;height:100%}#quick-panel md-content md-tabs md-tabs-wrapper{background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.06)}#quick-panel md-content md-tabs md-tabs-wrapper .md-tab{max-width:none!important}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content{height:100%;overflow:hidden}#quick-panel md-content md-tabs md-tabs-content-wrapper md-tab-content>div{overflow:hidden;height:100%}.unread-message-count-chat{position:absolute;top:5px;left:10px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}@media screen and (max-width:600px){#quick-panel{width:80%;min-width:80%;max-width:80%}}#quick-panel .activity-tab .friends .friend{position:relative}#quick-panel .activity-tab .friends .friend .status{position:absolute;top:8px;left:44px;width:18px;height:18px;z-index:10;border-radius:50%;border:3px solid #fff}#quick-panel .activity-tab .friends .friend .status.online{background-color:#00c853}#quick-panel .activity-tab .friends .friend .status.offline{background-color:#d50000}#quick-panel .activity-tab .friends .friend .status.away{background-color:#ff6d00}#quick-panel .activity-tab .friends .friend .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .activity-tab .servers .server .status{margin:24px 20px 28px 8px}#quick-panel .activity-tab .servers .server .status.normal{color:#00c853}#quick-panel .activity-tab .servers .server .status.warn{color:#d50000}#quick-panel .activity-tab .servers .server .status.error{color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.normal .md-bar{background-color:#00c853}#quick-panel .activity-tab .stat md-progress-linear.normal .md-container{background-color:rgba(0,200,83,.3)}#quick-panel .activity-tab .stat md-progress-linear.warn .md-bar{background-color:#ff6d00}#quick-panel .activity-tab .stat md-progress-linear.warn .md-container{background-color:rgba(255,109,0,.3)}#quick-panel .activity-tab .stat md-progress-linear.alert .md-bar{background-color:#d50000}#quick-panel .activity-tab .stat md-progress-linear.alert .md-container{background-color:rgba(213,0,0,.3)}#quick-panel .chat-tab .chat,#quick-panel .chat-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .chat-tab .main .contact{position:relative}#quick-panel .chat-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .chat-tab .main .contact .status.online{background-color:#00c853}#quick-panel .chat-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .chat-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .chat-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .chat-tab .main .recent .contact .status{top:18px}#quick-panel .chat-tab .chat{max-height:100%;overflow:hidden}#quick-panel .chat-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .chat-tab .chat .message-row .bubble:after,#quick-panel .chat-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .chat-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .chat-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .chat-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .chat-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .chat-tab .chat .message-row.user{align-items:flex-end}#quick-panel .chat-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .chat-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .chat-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .chat-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .chat-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .chat-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}#timeline{position:relative;height:auto;padding-bottom:30px}#timeline:before{display:block;position:absolute;z-index:10;content:'';width:2px;background:rgba(0,0,0,.08);top:0;left:50%;bottom:0;margin-left:-1px}#timeline .ms-timeline-item{overflow:hidden;position:relative;z-index:20;width:100%;margin:0 auto;max-width:1200px}#timeline .ms-timeline-item .timeline-card{order:1}#timeline .ms-timeline-item .timeline-card .interaction .header .avatar .image{display:block;width:40px;height:40px;border-radius:20px}#timeline .ms-timeline-item .timeline-card .interaction .media .image{width:100%}#timeline .ms-timeline-item .timeline-point{position:absolute;width:40px;height:40px;line-height:40px;text-align:center;border-radius:50%;left:50%;margin:16px 0 0 -28px;order:2}#timeline .ms-timeline-item .timeline-point md-icon{color:#fff}#timeline .ms-timeline-item .timeline-detail{flex:50% 0 0;padding-top:28px;order:3}#timeline .ms-timeline-item .timeline-detail .time{font-size:15px;padding-left:68px}#timeline .ms-timeline-item .timeline-detail .event{color:rgba(0,0,0,.54);padding-left:68px}#timeline .ms-timeline-item:nth-child(odd) .timeline-card{flex-direction:row-reverse}#timeline .ms-timeline-item:nth-child(even) .timeline-card{order:3;padding-right:0}#timeline .ms-timeline-item:nth-child(even) .timeline-card ms-card{padding-left:84px}#timeline .ms-timeline-item:nth-child(even) .timeline-detail{order:1;padding-left:0;text-align:right}#timeline .ms-timeline-item:nth-child(even) .timeline-detail .event,#timeline .ms-timeline-item:nth-child(even) .timeline-detail .time{padding-right:68px}#timeline .ms-timeline-item:first-child{padding-top:15px}#timeline .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline .ms-timeline-item.animate .timeline-point{animation:slide-in-bottom .4s}#timeline .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-card{animation:slide-in-right .4s}#timeline .ms-timeline-item:nth-child(even).animate .timeline-detail{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item .timeline-card{order:1}#timeline.timeline-left .ms-timeline-item .timeline-card ms-card{padding-right:68px;padding-left:0;margin-left:auto}#timeline.timeline-left .ms-timeline-item .timeline-detail{order:3;text-align:left}#timeline.timeline-left .ms-timeline-item.animate .timeline-card{animation:slide-in-left .4s}#timeline.timeline-left .ms-timeline-item.animate .timeline-detail{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item .timeline-card{order:3}#timeline.timeline-right .ms-timeline-item .timeline-card ms-card{padding-left:68px;padding-right:0;margin-right:auto}#timeline.timeline-right .ms-timeline-item .timeline-detail{order:1;text-align:right}#timeline.timeline-right .ms-timeline-item .timeline-detail .event,#timeline.timeline-right .ms-timeline-item .timeline-detail .time{padding-right:68px;padding-left:0}#timeline.timeline-right .ms-timeline-item.animate .timeline-card{animation:slide-in-right .4s}#timeline.timeline-right .ms-timeline-item.animate .timeline-detail{animation:slide-in-left .4s}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#quick-panel .group-tab .chat,#quick-panel .group-tab .main{position:absolute;width:100%;top:0;bottom:0}#quick-panel .group-tab .main .contact{position:relative}#quick-panel .group-tab .main .contact .status{position:absolute;top:8px;left:44px;width:18px;height:18px;border:3px solid #fff;border-radius:50%;z-index:10}#quick-panel .group-tab .main .contact .status.online{background-color:#00c853}#quick-panel .group-tab .main .contact .status.offline{background-color:#d50000}#quick-panel .group-tab .main .contact .status.away{background-color:#ff6d00}#quick-panel .group-tab .main .contact .unread-message-count{position:absolute;left:16px;bottom:16px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:11px}#quick-panel .group-tab .main .recent .contact .status{top:18px}#quick-panel .group-tab .chat{max-height:100%;overflow:hidden}#quick-panel .group-tab .chat .message-row{padding:8px}#quick-panel .group-tab .chat .message-row .bubble{position:relative;padding:8px;background-color:#eceff1;border:1px solid #dcdfe1}#quick-panel .group-tab .chat .message-row .bubble:after,#quick-panel .group-tab .chat .message-row .bubble:before{content:' ';position:absolute;width:0;height:0}#quick-panel .group-tab .chat .message-row .bubble:after{left:-7px;right:auto;top:0;bottom:auto;border:11px solid;border-color:#eceff1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble:before{left:-9px;right:auto;top:-1px;bottom:auto;border:8px solid;border-color:#dcdfe1 transparent transparent transparent}#quick-panel .group-tab .chat .message-row .bubble .time{font-size:11px;margin-top:8px}#quick-panel .group-tab .chat .message-row .bubble .message{word-wrap:break-word}#quick-panel .group-tab .chat .message-row.contact .avatar{margin:0 16px 0 0}#quick-panel .group-tab .chat .message-row.user{align-items:flex-end}#quick-panel .group-tab .chat .message-row.user .avatar{order:2;margin:0 0 0 16px}#quick-panel .group-tab .chat .message-row.user .bubble{background-color:#e8f5e9;border:1px solid #dfebe0;order:1}#quick-panel .group-tab .chat .message-row.user .bubble:after{right:-7px;left:auto;top:auto;bottom:0;border-color:transparent transparent #e8f5e9 transparent}#quick-panel .group-tab .chat .message-row.user .bubble:before{right:-9px;left:auto;top:auto;bottom:-1px;border-color:transparent transparent #dfebe0 transparent}#quick-panel .group-tab .chat .reply{border-top:1px solid rgba(0,0,0,.12)}#quick-panel .group-tab .chat .reply textarea{margin:8px;resize:none;padding:8px 16px 8px 8px}md-dialog.group-dialog{max-width:720px;width:720px}md-dialog.group-dialog md-dialog-content{display:block;position:relative}md-dialog.group-dialog md-toolbar .title{font-size:17px}md-dialog.group-dialog md-input-container textarea{min-height:150px}md-dialog.group-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.group-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.group-dialog .date-container{padding:16px 0 24px 0}md-dialog.group-dialog .error-list{font-size:13px}md-dialog.group-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.group-dialog .error-list .error .message{font-weight:500}md-dialog.group-dialog .error-list .error .md-button{margin:0}md-dialog.group-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.group-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#reset-password{height:100%;background:url(/assets/images/backgrounds/tech.png) no-repeat;background-size:cover}#reset-password #reset-password-form-wrapper{flex:1 0 auto;padding:32px}#reset-password #reset-password-form-wrapper #reset-password-form{width:384px;max-width:384px;padding:32px;text-align:center;background:#fff}#reset-password #reset-password-form-wrapper #reset-password-form .logo{width:128px;height:128px;line-height:128px;font-size:86px;font-weight:500;margin:32px auto;color:#fff;border-radius:2px}#reset-password #reset-password-form-wrapper #reset-password-form .title{font-size:17px;margin:16px 0 32px 0}#reset-password #reset-password-form-wrapper #reset-password-form .logo_login{max-height:200px}#reset-password #reset-password-form-wrapper #reset-password-form form{width:100%;text-align:left}#reset-password #reset-password-form-wrapper #reset-password-form form .submit-button{width:220px;margin:16px auto;display:block}#reset-password #reset-password-form-wrapper #reset-password-form .login{margin:32px auto 24px auto;width:250px;font-weight:500}#reset-password #reset-password-form-wrapper #reset-password-form .login .text{margin-right:8px}@media screen and (max-width:600px){#reset-password #reset-password-form-wrapper{padding:16px}#reset-password #reset-password-form-wrapper #reset-password-form{padding:24px;width:100%}#reset-password #reset-password-form-wrapper #reset-password-form form .md-button{width:90%}}md-dialog.preview-dialog{max-width:1020px;width:1020px}md-dialog.preview-dialog md-dialog-content{display:block;position:relative;padding:0}md-dialog.preview-dialog md-dialog-content .recall-me-info{position:relative;overflow-y:hidden;overflow-x:auto;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.12);min-height:64px;padding:8px 8px 8px 16px}md-dialog.preview-dialog md-toolbar .title{font-size:17px}md-dialog.preview-dialog md-input-container textarea{min-height:150px}md-dialog.preview-dialog md-input-container .hint{font-size:10px;line-height:20px;transition:all .3s cubic-bezier(.55,0,.55,.2);color:rgba(0,0,0,.54)}md-dialog.preview-dialog md-input-container md-input-container md-switch{margin:0!important}md-dialog.preview-dialog .date-container{padding:16px 0 24px 0}md-dialog.preview-dialog .error-list{font-size:13px}md-dialog.preview-dialog .error-list .error{background-color:rgba(244,67,54,.08);border:1px solid rgba(244,67,54,.12);padding-left:16px;margin-top:8px;border-radius:2px}md-dialog.preview-dialog .error-list .error .message{font-weight:500}md-dialog.preview-dialog .error-list .error .md-button{margin:0}md-dialog.preview-dialog .error-list .error:last-child{margin-bottom:30px}md-dialog.preview-dialog md-dialog-actions{position:relative;overflow-y:hidden;overflow-x:auto;justify-content:space-between;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.12)}@media screen and (max-width:1280px){md-dialog.task-dialog{width:80%}}@media screen and (max-width:960px){md-dialog.task-dialog{width:90%}}#toolbar{width:100%;height:64px;min-height:64px;max-height:64px;z-index:55!important}#toolbar .blink{animation:blinker 2s linear infinite}#toolbar #navigation-toggle{width:64px;min-width:64px;height:64px;margin:0;border-right:1px solid rgba(0,0,0,.12);border-radius:0}#toolbar .logo-image{display:block;width:32px;min-width:32px;height:32px;line-height:32px;text-align:center;font-size:16px;font-weight:500;color:#fff;border-radius:2px;margin-left:10px;margin-right:8px}#toolbar #user-menu{height:64px;padding:0}#toolbar #user-menu md-menu-item .md-button{font-size:15px}#toolbar #user-menu md-menu-item .md-button md-icon{margin:auto 16px auto 0}#toolbar #user-menu .user-button{margin:0;padding:0 16px;height:64px;text-transform:none}#toolbar #user-menu .user-button .avatar-wrapper{position:relative}#toolbar #user-menu .user-button .avatar-wrapper .status{position:absolute;bottom:-3px;right:5px}#toolbar #user-menu .user-button .username{margin:0 12px 0 8px}#toolbar #language-menu{height:64px}#toolbar #language-menu .language-button{min-width:64px;height:64px;margin:0;padding:0 16px;border-radius:0}#toolbar #language-menu .language-button .iso{text-transform:uppercase}#toolbar #language-menu .language-button .flag{margin-right:8px}#toolbar #quick-panel-toggle{width:64px;height:64px;margin:0;border-radius:0}#toolbar #quick-panel-toggle .unread-message-count{position:absolute;top:8px;left:38px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}#toolbar .toolbar-separator{height:64px;width:1px;background:rgba(0,0,0,.12)}#language-menu-content md-menu-item .flag{margin-right:16px}#language-message{min-height:88px;max-width:600px}#language-message .md-toast-content{height:90px}.open-contact-count{position:absolute;top:1px;left:25px;width:18px;height:18px;z-index:10;border-radius:50%;text-align:center;line-height:18px;font-size:10px}.md-button.preview-button{min-width:46px;min-height:50px}@media screen and (max-width:600px){#toolbar #user-menu .user-button{min-width:64px;padding:0 2px 0 10px}}.geEditor{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt;overflow:hidden;height:100%}.geMenubarContainer .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel{cursor:pointer!important}.geContentEditable div,.geContentEditable table,.geContentEditable table td{border:1px dashed #d3d3d3}.geBackgroundPage{-webkit-box-shadow:0 0 3px 0 #d9d9d9;-moz-box-shadow:0 0 3px 0 #d9d9d9;box-shadow:0 0 3px 0 #d9d9d9}.geMenubarContainer a,.geSidebarContainer a,.geToolbar a{color:#000!important;text-decoration:none}.geDiagramContainer,.geFooterContainer,.geHsplit,.geMenubarContainer,.geOutlineContainer,.geSidebarContainer,.geToolbarContainer,.geVsplit{overflow:hidden;position:absolute;cursor:default}.geDiagramContainer,.geOutlineContainer{background-color:#fff;outline:0}.geMenubar,.geToolbar{white-space:nowrap;display:block;width:100%}.geMenubarContainer .geItem,.geSidebar,.geSidebar .geItem,.geSidebarContainer .geTitle,.geToolbar .geButton,.geToolbar .geLabel,.mxPopupMenuItem{-webkit-transition:all .1s ease-in-out;-moz-transition:all .1s ease-in-out;-o-transition:all .1s ease-in-out;-ms-transition:all .1s ease-in-out;transition:all .1s ease-in-out}.geHint{background-color:#fff;border:1px solid gray;padding:4px 16px 4px 16px;border-radius:3px;-webkit-box-shadow:1px 1px 2px 0 #ddd;-moz-box-shadow:1px 1px 2px 0 #ddd;box-shadow:1px 1px 2px 0 #ddd;opacity:.8}.geStatusAlert{white-space:nowrap;margin-top:-5px;font-size:12px;padding:4px 6px 4px 6px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442!important;border-radius:3px}.geStatusAlert:hover{background-color:#f1d8d8;border-color:#d6b2b8}.geStatusMessage{white-space:nowrap;margin-top:-5px;padding:4px 6px 4px 6px;font-size:12px;background-image:-webkit-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0,#c8e5bc 100%);background-repeat:repeat-x;border:1px solid #b2dba1;border-radius:3px;color:#3c763d!important}.geStatusMessage:hover{background:#c8e5bc;border-color:#b2dba1}.geAlert{position:absolute;white-space:nowrap;padding:14px;background-color:#f2dede;border:1px solid #ebccd1;color:#a94442;border-radius:3px;-webkit-box-shadow:2px 2px 3px 0 #ddd;-moz-box-shadow:2px 2px 3px 0 #ddd;box-shadow:2px 2px 3px 0 #ddd}.geBtn{background-color:#f5f5f5;border-radius:2px;border:1px solid #d8d8d8;color:#333;cursor:default;font-size:11px;font-weight:700;height:29px;line-height:27px;margin:0 0 0 8px;min-width:72px;outline:0;padding:0 8px;cursor:pointer}.geBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid #c6c6c6;background-color:#f8f8f8;background-image:linear-gradient(#f8f8f8 0,#f1f1f1 100%);color:#111}.geBtn:disabled{opacity:.5}.geBtnUp{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECAGZmZtXV1f///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJERjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJFMDg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkREODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRFODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjwiQBhGYglCKhXFLBQA7);background-position:center center;background-repeat:no-repeat}.geBtnUp:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geBtnDown{background-image:url(data:image/gif;base64,R0lGODlhCgAGAJECANXV1WZmZv///wAAACH/C1hNUCBEYXRhWE1QPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4wLWMwNjAgNjEuMTM0Nzc3LCAyMDEwLzAyLzEyLTE3OjMyOjAwICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo0QzM3ODJEQjg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo0QzM3ODJEQzg4NUQxMUU0OTFEQ0E2MzRGQzcwNUY3NCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjRDMzc4MkQ5ODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjRDMzc4MkRBODg1RDExRTQ5MURDQTYzNEZDNzA1Rjc0Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+Af/+/fz7+vn49/b19PPy8fDv7u3s6+rp6Ofm5eTj4uHg397d3Nva2djX1tXU09LR0M/OzczLysnIx8bFxMPCwcC/vr28u7q5uLe2tbSzsrGwr66trKuqqainpqWko6KhoJ+enZybmpmYl5aVlJOSkZCPjo2Mi4qJiIeGhYSDgoGAf359fHt6eXh3dnV0c3JxcG9ubWxramloZ2ZlZGNiYWBfXl1cW1pZWFdWVVRTUlFQT05NTEtKSUhHRkVEQ0JBQD8+PTw7Ojk4NzY1NDMyMTAvLi0sKyopKCcmJSQjIiEgHx4dHBsaGRgXFhUUExIREA8ODQwLCgkIBwYFBAMCAQAAIfkEAQAAAgAsAAAAAAoABgAAAg6UjxLLewEiCAnOZBzeBQA7);background-position:center center;background-repeat:no-repeat}.geBtnDown:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%)}.geColorBtn{background-color:#f5f5f5;background-image:linear-gradient(#f5f5f5 0,#e1e1e1 100%);border-radius:4px;border:1px solid rgba(0,0,0,.5);color:#333;cursor:default;margin:0;outline:0;padding:0;cursor:pointer}.geColorBtn:hover{-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1);-moz-box-shadow:0 1px 1px rgba(0,0,0,.1);box-shadow:0 1px 1px rgba(0,0,0,.1);border:1px solid rgba(0,0,0,.7)}.geColorBtn:active{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.geColorBtn:disabled{opacity:.5}.gePrimaryBtn{background-color:#4d90fe;background-image:linear-gradient(#4d90fe 0,#4787ed 100%);border:1px solid #3079ed;color:#fff}.gePrimaryBtn:hover{background-color:#357ae8;background-image:linear-gradient(#4d90fe 0,#357ae8 100%);border:1px solid #2f5bb7;color:#fff}.gePrimaryBtn:disabled{opacity:.5}.geAlertLink{color:#843534;font-weight:700;text-decoration:none}.geMenubarContainer{background-color:#fff}.geMenubar{padding:0 2px 0 2px;vertical-align:middle}.geMenubarContainer .geItem,.geToolbar .geItem{padding:6px 8px 6px 8px;cursor:default}.geMenubarContainer .geItem:hover,.geToolbarContainer .geItem:hover{background:#eee}.mxDisabled:hover{background:inherit!important}.geMenubar a.geStatus{color:#b3b3b3;padding-left:6px;display:inline-block;cursor:default!important}.geMenubar a.geStatus:hover{background:0 0}.geMenubarMenu{border:1px solid #d5d5d5!important}.geToolbarContainer{background:#f5f5f5;border-bottom:1px solid #e0e0e0}.geSidebarContainer .geToolbarContainer{background:0 0;border-bottom:none}.geSidebarContainer button{text-overflow:ellipsis;overflow:hidden}.geToolbar{padding:1px 0 0 6px;border-top:1px solid #e0e0e0;-webkit-box-shadow:inset 0 1px 0 0 #fff;-moz-box-shadow:inset 0 1px 0 0 #fff;box-shadow:inset 0 1px 0 0 #fff}.geToolbarContainer .geSeparator{float:left;width:1px;height:34px;background:#e5e5e5;margin-left:6px;margin-right:6px;margin-top:-2px}.geToolbarContainer .geButton{float:left;width:20px;height:20px;padding:0 2px 4px 2px;margin:2px;border:1px solid transparent;cursor:pointer;opacity:.6}.geToolbarContainer .geButton:hover{border:1px solid gray;border-radius:2px;opacity:1;filter:none!important}.geToolbarContainer .geButton:active{border:1px solid #000}div.mxWindow .geButton{margin:-1px 2px 2px 2px;padding:1px 2px 2px 1px}.geToolbarContainer .geLabel{float:left;margin:2px;cursor:pointer;padding:3px 5px 3px 5px;border:1px solid transparent;opacity:.6}.geToolbarContainer .geLabel:hover{border:1px solid gray;border-radius:2px;opacity:.9}.geToolbarContainer .geLabel:active{border:1px solid #000;opacity:1;filter:none!important}.geToolbarContainer .mxDisabled:hover{border:1px solid transparent!important;opacity:.2!important}.geToolbarMenu{border:3px solid #e0e0e0!important;-webkit-box-shadow:none!important;-moz-box-shadow:none!important;box-shadow:none!important;filter:none!important}.geDiagramBackdrop{background-color:#ebebeb;border-style:solid;border-color:#e5e5e5;border-width:1px 0 0 1px}.geSidebarContainer{background:#fff;overflow:hidden;position:absolute;border-top:1px solid #e5e5e5;overflow:auto}.geSidebar{background:#f5f5f5;border-bottom:1px solid #e5e5e5;padding:5px;padding-bottom:12px;overflow:hidden}.geSidebarContainer .geTitle{display:block;font-size:9pt;border-bottom:1px solid #e5e5e5;font-weight:400;padding:6px 0 6px 14px;margin:0;cursor:default;background:#eee;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.4em}.geSidebarContainer .geTitle:hover{background:#e5e5e5}.geTitle img{opacity:.5}.geTitle img:hover{opacity:1}.geSidebar .geItem{display:inline-block;background-repeat:no-repeat;background-position:50% 50%;border:1px solid transparent;border-radius:2px;cursor:move}.geSidebar .geItem:hover{border:1px solid gray!important}.geItem{vertical-align:top;display:inline-block}.geSidebarTooltip{position:absolute;background:#fff;overflow:hidden;border:1px solid gray;border-radius:8px;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5}.geFooterContainer{background:#e5e5e5;border-top:1px solid silver}.geFooterContainer a{font-size:14px;color:#235695;font-weight:700;text-decoration:none}.geFooterContainer table{border-collapse:collapse;margin:0 auto}.geFooterContainer td{border-left:1px solid silver;border-right:1px solid silver}.geFooterContainer td:hover{background-color:#b3b3b3}.geFooterContainer a{display:block;box-sizing:border-box;width:100%;height:100%;padding:11px 42px 11px 42px;white-space:nowrap}.geHsplit{cursor:col-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAHBAMAAADdS/HjAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAHUlEQVQImWMQEGAQFWUQFmYQF2cQEmIQE2MQEQEACy4BF67hpEwAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geVsplit{font-size:1pt;cursor:row-resize;background-color:#e5e5e5;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAEBAMAAACw6DhOAAAAGFBMVEUzMzP///9tbW1QUFCKiopBQUF8fHxfX1/IXlmXAAAAFElEQVQImWNgNVdzYBAUFBRggLMAEzYBy29kEPgAAAAASUVORK5CYII=);background-repeat:no-repeat;background-position:center center}.geHsplit:hover,.geVsplit:hover{background-color:#d5d5d5}.geDialog{position:absolute;background:#fff;overflow:hidden;padding:30px;border:1px solid #acacac;-webkit-box-shadow:0 0 2px 2px #d5d5d5;-moz-box-shadow:0 0 2px 2px #d5d5d5;box-shadow:0 0 2px 2px #d5d5d5;z-index:2}.geDialogClose{position:absolute;width:9px;height:9px;opacity:.5;cursor:pointer}.geDialogClose:hover{opacity:1}.geDialogTitle{box-sizing:border-box;white-space:nowrap;background:#e5e5e5;border-bottom:1px solid silver;font-size:15px;font-weight:700;text-align:center;color:#235695}.geDialogFooter{background:#f5f5f5;white-space:nowrap;text-align:right;box-sizing:border-box;border-top:1px solid #e5e5e5;color:#a9a9a9}.geSprite{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAk/CAYAAACauMYVAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAAsTAAALEwEAmpwYAAABWWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS40LjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyI+CiAgICAgICAgIDx0aWZmOk9yaWVudGF0aW9uPjE8L3RpZmY6T3JpZW50YXRpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgpMwidZAAAWn0lEQVR4Ae2dW4gdxdbHO0aJYjzxTtR4EhSDSNB84kPEQOL9CB/Ex4igg8iAGCSgiIIQH1SOqJAnn4N4wBdvYBRBcYTIp0+OF0SDYoJRgyAmeA1e5lv/PrM6q6urqqu7a2/3ZP4NPVVdtda/Vv2qZ9Nrd++9i2IE2xJoHn/88XOq/ccff5RtepxSuv7HqxPE0GkNtC+lVH/YjiTSKoi+EaqA9T9OG3OW4xNdu3btHPZY9DGbRqRtYhiozaYhunfvXu95aoVCNjqzhqh2uGWbkLVPFrWRWgFfvSFqnW3dOtt2W7c2Zd2evI3OhAbr34g0wb/VZOGIjuRVagG+nrYuKQ1IgARIgARIgARIgARIoEbAm93BwmYb1mP58uXFoUOHgn6wTUok8K4Ddgj+9NNPxamnnhpNhpNENdL169eXVQj32jB93VUAEaJNxKORBtmEmGIAoNCBfGXS9C1TiLRF6huobNOp24g3b97cQBIU8HX4RJVp2+oH2dgI7aAp56m1Z50ESIAESIAESIAESIAESGCREtBMJXX6SclZqpjaUVRJ5CuPEabI623ii3rvXN/SVeFsgioO4SwRquDElNU7E3ZB+kTX9g5QH036kAAJkAAJkAAJkAAJkMDEEqiupBFh36vpsVxF1yJVnqkRjyVCDaoWaWqE6qzlWCKuRaojp0Y8lgg1qFqkqRGqs5ZjibgWqY6cGvFYItSgWJIACZAACZAACZAACZDAJBHwXknbAENX1bGr6IZoSMQO5KvbQUZyi9M36OC2xvRVMRWDnbb6jmT6FFW8+UoyzcdSlUbCVMVZkgAJkAAJkAAJkAAJTCqB1Pypc/yu8Jo1a6KfhE0eAMI7duyYS/04aJIwBCGsUeL507bPmbYKQwCCFsUgYQjaJ2MHC7uCvim1RVxLzSHY5YPUq1atKvbt21fTQBC9sxN8ltcnCNHGKCnR2g8HP/TQQ+U5/Mgjj1RajUjxiXc4hTYrCJtff/213K19pW4bUfdF7Aree++9tf+0p556qtRrRKribsSuoNr1KhEx9pAzonUjDtmynQRIgARIgARIgARIgASOGQLlNbrN6Hy3LNtm6/ovwC+qtVNom66v3/p7Ux4YuLsrZLNst686tiO5grZPHdCmbzCgzdp4I1VHX6kDou/AgQOFFW7Y25HU0ZauA/ps0mb9O0eq4uvWrWv9OrgaE3XsUmaJNDZgdPp29JiI2xcVdY1Tj72iOLE1SpRJJ7pvRBXRPpwuaLOnjfb5Ste/tPE1Rk9sR9n68/XUgcNDEiABEiABEiABEjgmCTTunMkl4Z65ublVbbM97rjj3v3999+3+uyqLFo7Ifjqq6+ulq1YsqQxJr6huXj77beLe+65Z5/6uGVDFAZysVtcdNFFXlGJrpDfPSp13nrrLczouauvvnpj2TD/x3vNjz5flOooUy8uvPDCDV9//fX/yb3ADc8///we7UMZFEXnn3/+WbzwwgvF559/XiBCbCeccEJx/fXXF4899tiyxx9/fNXpp5++VO4K19bAO/3SW/4goquuuqp4+OGHi08//bQ8vuyyy4rbb7+9ePTRR4svvvjioAyy9a+//jqiPt5y6dKl+z777DNZr6Pb+++/P3fHHXfMSd/cGWecMXf55Zcjc3lfBDZ4RdxGnyjkZ2Zm5q655ppSGOIiOuP66nGUKYx++eWX4pVXXilXfGpqqnjppZcKuZNbyDjrzzvvvJk33njjORXTMioqrIoPPvigPDdxmm3cuLG49tpri5tvvrm47bbbVkj/pp9//vlfL7744nYVRBldKBgsW7asEIbFWWedVZx00kkFBvrtt9/QVZ520r/ihx9+gOjOslH+REWx+hC0G04zWcjimWee2X/OOefsWrFiRfHtt98esjZeUTji39H3D4B29EvfPnkP5eErr7zS6pV1r+h7771XfPXVV0HRjz76qCFkGxqvGHIyPycru9Ia+eoS6az8l9UWyGfHNhIgARIgARIgARIgARLoQKBxfer6fvLJJ899/PHHZb506aWXvnvxxRdvdW3c48aV9O7du/eIUZUW3nXXXStvvPHGZbhUf/rpp1dK/z4VQUp5ySWXHJAHhuMJ75133rlKcqfVJ5988mpJJFYfPnx42ZNPPlk88cQTuPu4DG3og83999+/WjKTKgAdrJFHfffdd8Xs7OxWcd4sD//Ofvnll4UIlzvqDz74YCGPkIvJ7Nbvv/++TCpULFgijZTO1TK1nVI/hJTR3edTyNXnn3/+nIjDvrY1mGqvJAm7pP6iHjvlYee4dhgUffPNN9dLzrQG1sjyZJu56aabZlCZ31ZrxS2DoiI0Jcab4IDMT7bNr7/++gwqSMxuuOGGt1D3bY2F8hnNt22S/Goq0l91BSOtLI5W3paId0mEu+abuk8fGR1OeIlOme4Spip4dChPLRjpdddd1ztF7MLUE5O/aSSioek3/p89MZU2YO5uDVFZnAPyb/kf19B3LIL7pf2Ar49tJEACJEACJEACJEAC/Qh4c1O5sfWhXHz9MyK5Rx51/N9Qf+OqD4abNm36hxQrQk5XXHHFvyQz/PDss8++1GfjFf3xxx+RHm595513tp944ollBq3Octfs3YMHD+6US87/iPAeEd6ofVp6Rec7D956662N+6FHjhz5Hxl055lnnrlUbnduEFR75F5qTTgmWj5d/OyzzxYbNtSCXSaDrsSTx7fccstSYd+46o6KIuKVK1cWuIPeZWsVhZjcyC6++eYbPExcyLQLyZ6jYySJ4pamvFlQ3vPDImKXvCAo3CnlQSaCtzgQKcrQ1kkU2TQ+y3vKKafkiRR5KkSBAnxjWzDSBx54YEpuYJfLftpppxUXXHBBsWbNmkLOzZhe2ecVlYh2Crf9El352iBPG+BxhlIY4ueee24lLJxXvPbaaw9UDVLxrr68f7Lz7rvvxim0Wd548Z6k8q9a6sg7GKdKBaL/Lhvkj1dUOyXQ2fvuu08PG6Xc4C5PM7Hr+ZvkDUk2kAAJkAAJkAAJkAAJkAAJLFYC3vdQXBiS+jRvj4mR3AFO8nf1quPt27d3+qho5RirINpQxK6fN410jTZv3lxOH19Rlm3rEiUGbY1UMucySjzNnW3rGmVrpPqh4G3btnUK0nuehVZ58HnZKTQakwAJkAAJkAAJkAAJkAAJZCBQu+YPXeu3jTOWXKBXpGOJzMXTK1JXZCyR94p0LJG5OHpF6oqMJfJekY4lMhcHj0mABEiABEiABEiABEhgnkDXe1Ktd876kKVomJr9ZmFYYcF6f7uwHUaFswmqOISzRKiCE1NWGV/f9090JsdwFph99bOfp1ZQX/6yna8qqCvdVvKlr40Q+0mABEiABEiABEiABBY8gSqP8s2kLbcK5U4juZL2BTi4rTH9timHRrQoBk3fCtnBBomGZjVI1EZn69EPBsMwNMVQlPAZSaQQDm6xaGJ9I4m0lWksouAU2UECJEACJEACJEACJEACJEACWQnITzuVP5mLDEX3Qff4VCRUWnHYtM4GRvpZaDXGJ7j1B391IHusdt5SPwzs7ZRGDKaitgzZF4gm2Gk65JeuGsKmu55F4wemUjb50a+oWeM9lKi1dAKP/Fhawyz0vkDDkA0kQAIkQAIkQAIkQAIkQAILnkAtkUBe1GdGY0kiapG6UaZGPv5IUyNzZzT+SN0IUiMff6SpkbkzGn+kbgSpkY8lUjc4HpMACZAACZAACZAACZAACaQQaOSmqdf5Vty95h/vQ63u6DYyrYdmlSXS6enpOew6WBZRFdOSokoiXxl8Tjp0uqQMPZKFakRqT3p77qVEqDYjiVTFWZIACZAACZAACZAACZDARBKQa/0P5XeLD0lwbT8Z9E/Ywd6dSONKWn5XV38qO/yLyP9VQQa+Yt6+ptsQrfX2PFjkoo08SjHKyk7JzwtfrceeEovkaY5/2nhKnFb7vNAu+3ZfH9qCkaJTfjB9lxSHZcdT2ftl3yc7tk2YCSq+rXX15eTeKQIzUk75BHxtraI+p7a2hqgszgFx+lMd5Ri/Nr1fSvzrJm0NppJFb5Sp7pGFwI+aHZFfud4KJeFrBfEb8mCMH6FGENxIgARIgARIgARIgARIYHERQNJabnL17E+K1KCltPexWkwXWjc+WWw/XTw4foiBN/YswlYwqzCmqoKp025kfKmOMTuKxuj061s4TPvNj14kQAIkQAIkQAIkQAIkQAIBAqEsL9RuZRZOIsFI7bodra9ahdumRbFjx47qXSCta99R63qtegup3vzfI5w+vva2t4uiCwVnGxXqbYK+ILK0eacfmrY74t8WtRsIj0mABEiABEiABEiABEiABBYBAffWMb6lGd/dnTx1+63Xrpi+eWDLJGE4QBi7dcax+63Y+rXarcJWSOvuF4C7InZ2bl95rEJa4ru4vYZOozuLaMLb9l3cqu1+t3ctN0WEaqjl8uXLi0OHDtXstI8lCZAACZAACZAACZAACZAACTQIuFkfjhtGnoZg1uHLVNS/7Y6ZN49SwW3btpU3CiGCHcfYtF8HaS11yjaLW7t2bTVttEM0FUU5IBzcSKwojHw2NtoGUxXEdF0xOO7du3eJtbFiwbovClfcZ2MFGwu1bt26st8ytQ7arna2L1rXSFRAjXWRdPranlyqcKjstPp2VD29VFiFtF2Prc+g+tiFG6vfJfzZ2dklOAsk6i5utCUBEiABEiABEiABEiCBySGgl+DuNX9bhI2MTx0gpHW3nNws2kaqCVqndEf5WSG33mbT+H4pK+AmuuhDFm1tkuptUUCkzaaRR2l27Ca7GpG2q522t5YaiQqogy4S+rWtU6nCobLT6tuRQ/9R2t5b2A5i62MXbqy+jaatziy6jRD7SYAESIAESIAESOBYJtA9ffHQsDkAUsxoHmX9raNt13opNp9gJIvCOZToarKhAySXbZFaoUGX51bI1ilqaeSpk2kejlZlkTMtX6Xsi0Xolcgya6tXL336emgHaHMO9Zev/FYoR6ShwdhOAiRAAiRAAiRAAscYgZFk0dmupO2FXTZRe+WYbTWtaLZIbXQUtTTy1KvsxK5eHmlRySnK1c+2LJXQSJiOJDetIrWvh9U8elYq0Zznac9Y6EYCJEACJEACJEACC43AIsqid+/eXT41m+2qEYIQU+HBa0/BwQgLMiTDHgSynjZ4UdA924uDvmxp2WOSNRdm0TUcPCABEiABEiABEiCBTgQmK4vWa1m9Uhx870UF9VpWr211gE6s1BjOKqhtg0qNcpCI68woXSL9jnVxsq44F6ffYvi8Jo8lItIdEWc5hSAIMRVGOeScHMldcwTIjQRIgARIgARIgAQWAYHJyqJd4DaLru6duEZdj/VytKtf1N6KZovUjkhRSyNPnUzzcLQqi5wpPxdtTwbWSYAESIAESIAESOBYJTCSLLr6vGlXajYXhS+yaG0bdHkOIU3JVbBrcDX7mMigSGujmAOKGhiZqsHzNLa6vcceIsrV74096DgSpiPJoqtI7UvYkNMJTHgvOnhmsIMESIAESIAESIAESIAESCBEoPYW0tCsRDOc0GBsJwESIAESIAESIAESIAESIAESmFQCyAiHfGYyOC8Ij0RchbOLW2FXfLKy6FikwQWJdVjBLGeDCmYRQ+TugsRmwz4SIAESIAESIAESIAESIAESGD2B7GmPhnxsCE9WFj0yttkXa/IFlSVLEiABEiABEiABEiABEiABEuhEIHu6g9FVFGXWu5LZha2g1m3Ek5NFa3S2tJF2WnU1tmKoDxYc+epniVCnz5IESIAESIAESIAESIAESIAEJoMAUh2boA1OfVxBFbfCtYQ3hQNEQnb6Eebat4vFHEJCvvaRRFp9v5RvRF/byy+/7GsuQu1eY1+ju1h2kXz2bCMBEiABEiABEiABEiABEiCBBUYglh12zvgwdyuo+ahl0lnUCqqQK9xJ1CfoE66JxpzUOVZqxDXRmAP6YoOqIOw6iYaErWAvUVfYFUR/7y2GorcoHUmABEiABEiABEiABEiABEjg7yNg70IOvgNpxZA/2d0n3ppGpiZhNvOriaYKhBZAhWuiPuPUgVQQGq33omEcu8+MPivoCyzaZhfMt0BRZ3aSAAmQAAmQAAmQAAmQAAmQwGQTQKI2klQHwiMRV+Hs4iqoA1gstYQXBl1WVXNS9dPjLho121ikNcPUA52yCqf6Be1U0DIMGqd0ZIssZTDakAAJkAAJkAAJkAAJkAAJkEArgexpD0ZU0awpEMSseJZETUVDwr2zaJsx6yC2DQN22lQETqhjH4xARbMJ2uiyRKiMskaooixJgARIgARIgARIgARIgARIYDIIILvTtMeXS7U+fexOA4L6xDFyUew4HpRGIjJ3IBzb9pF8u5hv0GibjcgahtqtTbAOdtPT0zUEOB7EFKNBAJHpPlgwOAV2kAAJkAAJkAAJkAAJkAAJkMDfQmBQMuaLGIKaS/n6O7epIByzCFtBjaZVGE6xPZQutgprBL6yV6Q+IbfNCg+KMCSMAdy+QcfZBQdFQ2cSIAESIAESIAESIAESIAESyEIAqU5bulN7Tjo2qgrpt2Jt2bKlNO/1bDRutELQl+xqGunenK0Fp1NzS5+gOiYJq7GWfSL9e5hqxFoqGj1mSQIkQAIkQAIkQAIkQAIkQAILmIBmdFmmoGLImwYLWrHBgq7YEMEqNx0iAjzevD9npI01cMUbBkMarPgQHa+vins72UgCJEACJEACJEACJEACJEACIyWgGcnQLLAKcnEJji+LrgDnqGRfJA1q4Qlr5CxJgARIgARIgARIgARIgARIIIlA9rTHCmZJzV3BwaI+wb6i48uiEaHuSSsbM/IhiNkn97nCyY5thla4zZb9JEACJEACJEACJEACJEACJLBACNhUBxkfjgeF7gpqGtlHOCnh9T5YHZlCkmjEv+qyA9e++LuycCrWwenyHlbfe66fIXetQu2uXfDYXaw+ixQUZwcJkAAJkAAJkAAJkAAJkAAJTA4B5KZ9o6nSSCtgBbtme9BpiFpBHaircE3UJ9hHuBKNCapwrLSzqUThEBO2TjFx9NVE0eAT7iLoFXWFuwrCP7j5Ig4as4MESIAESIAESIAESIAESIAEFhYBe2dy8F1JK4Zcyu6p4rU0MjUha8sCK9FUwdAi2oEqURinClsB3yDVvWh0wjh27xl9bYK+Qao2u2CpC1Q5s0ICJEACJEACJEACJEACJEACC4OApj5ZolWx1CwwOqgVGyxoxbQeHT3SWSW8GpXmnnoc8a11qV+tUaODmNZrBkMOVBDiXaNtHdeKtxp3NVDxrn60JwESIAESIAESIAESIAESIIHhBDQjyZZHWcEsolYQ8x0s6goOEQ1m0V1FW7NoCGIbPH2IuAiyiLrC2URdYRxzIwESIAESIAESIAESIAESIIFjgIBNzpBD4bjPtKqnjyGgTxcjz8SO477CZTCh7C7UHptB0heBpQjbLDpJ1DrEImz0gd309HRtYXA8iClGgQCmqvtgwUbobCABEiABEiABEiABEiABEiCBiSCQkuV1ChSCmlN1cgwZqyD6swhbQR10kLBP0BWGTWhX20bpEx4UqY5ghbMIusIYQNuylNkFs0RFERIgARIgARIgARIgARIgARLIRgBpT5/Up3pO2kaiQvqtWFu2bCm7e92Uxc1XCCJ9tIOgrimle8PWtasdxwTVUIUViy3VplHGhFUwJdLRM3VD1+m57TwmgTCB/wdigVA7yGo0NAAAAABJRU5ErkJggg==) no-repeat top left;width:21px;height:21px}.geSprite-actualsize{background-position:0 0}.geSprite-bold{background-position:0 -46px}.geSprite-bottom{background-position:0 -92px}.geSprite-center{background-position:0 -138px}.geSprite-delete{background-position:0 -184px}.geSprite-fillcolor{background-position:0 -230px}.geSprite-fit{background-position:0 -276px}.geSprite-fontcolor{background-position:0 -322px}.geSprite-gradientcolor{background-position:0 -368px}.geSprite-image{background-position:0 -414px}.geSprite-italic{background-position:0 -460px}.geSprite-left{background-position:0 -506px}.geSprite-middle{background-position:0 -552px}.geSprite-print{background-position:0 -598px}.geSprite-redo{background-position:0 -644px}.geSprite-right{background-position:0 -690px}.geSprite-shadow{background-position:0 -736px}.geSprite-strokecolor{background-position:0 -782px}.geSprite-top{background-position:0 -828px}.geSprite-underline{background-position:0 -874px}.geSprite-undo{background-position:0 -920px}.geSprite-zoomin{background-position:0 -966px}.geSprite-zoomout{background-position:0 -1012px}.geSprite-helbow{background-position:0 -1058px}.geSprite-velbow{background-position:0 -1104px}.geSprite-straight{background-position:0 -1150px}.geSprite-entity{background-position:0 -1196px}.geSprite-segment{background-position:0 -1242px}.geSprite-orthogonal{background-position:0 -1288px}.geSprite-noarrow{background-position:0 -1334px}.geSprite-endclassic{background-position:0 -1380px}.geSprite-endopen{background-position:0 -1426px}.geSprite-endblock{background-position:0 -1472px}.geSprite-endoval{background-position:0 -1518px}.geSprite-enddiamond{background-position:0 -1564px}.geSprite-endthindiamond{background-position:0 -1610px}.geSprite-endclassictrans{background-position:0 -1656px}.geSprite-endblocktrans{background-position:0 -1702px}.geSprite-endovaltrans{background-position:0 -1748px}.geSprite-enddiamondtrans{background-position:0 -1794px}.geSprite-endthindiamondtrans{background-position:0 -1840px}.geSprite-startclassic{background-position:0 -1886px}.geSprite-startopen{background-position:0 -1932px}.geSprite-startblock{background-position:0 -1978px}.geSprite-startoval{background-position:0 -2024px}.geSprite-startdiamond{background-position:0 -2070px}.geSprite-startthindiamond{background-position:0 -2116px}.geSprite-startclassictrans{background-position:0 -2162px}.geSprite-startblocktrans{background-position:0 -2208px}.geSprite-startovaltrans{background-position:0 -2254px}.geSprite-startdiamondtrans{background-position:0 -2300px}.geSprite-startthindiamondtrans{background-position:0 -2346px}.geSprite-copy{background-position:0 -410px}.geSprite-cut{background-position:0 -320px}.geSprite-paste{background-position:0 -367px}.geSprite-duplicate{background-position:0 -736px}.geSprite-save{background-position:0 -782px}.geSprite-publish{background-position:0 -92px}.geBaseButton{padding:10px;border-radius:6px;border:1px solid silver;cursor:pointer;background-color:#ececec;background-image:linear-gradient(#ececec 0,#fcfcfc 100%)}.geBaseButton:hover{background:#ececec}.geBigButton{color:#fff;border:none;padding:10px;font-size:14pt;white-space:nowrap;border-radius:6px;text-shadow:#295989 0 1px 0;background-color:#428bca;background-image:linear-gradient(#4687ce 0,#3068a2 100%);-webkit-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;-moz-box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0;box-shadow:rgba(255,255,255,.0980392) 0 1px 0 0 inset,rgba(0,0,0,.2) 0 1px 1px 0}.geBigButton:hover{background-color:#2d6ca2;background-image:linear-gradient(#5a94d3 0,#3673b5 100%)}.geBigButton:active{background-color:#3673b5;background-image:none}@media print{div.geNoPrint{display:none!important}}html div.mxRubberband{border-color:#00d;background:#9cf}td.mxPopupMenuIcon div{width:16px;height:16px}html div.mxPopupMenu{-webkit-box-shadow:2px 2px 3px #d5d5d5;-moz-box-shadow:2px 2px 3px #d5d5d5;box-shadow:2px 2px 3px #d5d5d5;background:#fff;position:absolute;border:3px solid #e7e7e7;padding:3px}html table.mxPopupMenu{border-collapse:collapse;margin:0}html td.mxPopupMenuItem{padding:7px 30px 7px 30px;font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;font-size:10pt}html td.mxPopupMenuIcon{background-color:#fff;padding:0}td.mxPopupMenuIcon .geIcon{padding:2px;padding-bottom:4px;margin:2px;border:1px solid transparent;opacity:.5}td.mxPopupMenuIcon .geIcon:hover{border:1px solid gray;border-radius:2px;opacity:1}html tr.mxPopupMenuItemHover{background-color:#eee;color:#000}table.mxPopupMenu hr{color:#ccc;background-color:#ccc;border:none;height:1px}table.mxPopupMenu tr{font-size:4pt}html td.mxWindowTitle{font-family:Helvetica Neue,Helvetica,Arial Unicode MS,Arial;text-align:left;font-size:12px;color:#707070;padding:4px}div.mxTooltip{-webkit-box-shadow:3px 3px 12px silver;-moz-box-shadow:3px 3px 12px silver;box-shadow:3px 3px 12px silver;background:#ffc;border-style:solid;border-width:1px;border-color:#000;font-family:Arial;font-size:8pt;position:absolute;cursor:default;padding:4px;color:#000}body{font-family:Arial Unicode MS,Arial,Helvetica;font-size:10pt}
\ No newline at end of file
index d9fb178..f8bc990 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5382=['exports','getDataValue','action','STRING','contactManager','jscripty','urlForward','browser','script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','urlForward[body]','sequelize'];(function(_0x406695,_0xb7c09c){var _0x58d9ee=function(_0x5cee97){while(--_0x5cee97){_0x406695['push'](_0x406695['shift']());}};_0x58d9ee(++_0xb7c09c);}(_0x5382,0xcf));var _0x2538=function(_0x9982ed,_0x58ec07){_0x9982ed=_0x9982ed-0x0;var _0x468c75=_0x5382[_0x9982ed];return _0x468c75;};'use strict';var Sequelize=require(_0x2538('0x0'));module[_0x2538('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x1fa084){return this[_0x2538('0x2')](_0x2538('0x3'));}},'action':{'type':Sequelize[_0x2538('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x2538('0x5'),'integration','motionbar',_0x2538('0x6'),_0x2538('0x7'),_0x2538('0x8'),'bot',_0x2538('0x9')]],'msg':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x2538('0x4')](0x1000),'comment':_0x2538('0xa')},'data2':{'type':Sequelize[_0x2538('0x4')](0x1000),'comment':_0x2538('0xb')},'data3':{'type':Sequelize[_0x2538('0x4')](0x1000),'comment':'contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]'},'data4':{'type':Sequelize[_0x2538('0x4')](0x1000),'comments':_0x2538('0xc')},'data5':{'type':Sequelize['STRING'](0x1000),'comments':_0x2538('0xd')},'data6':{'type':Sequelize['STRING'],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x2538('0xe')],'comments':_0x2538('0xf')}};
\ No newline at end of file
+var _0xf163=['bot','script','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script','jscripty[ProjectId],\x20browser[type(0=Popup,1=CTI\x20URL)],\x20contactManager[ListId],\x20urlForward[type(GET,POST,PUT,DELETE)],\x20script[info],\x20integration[intName(desk,dynamics365,freshdesk,freshsales,salesforce,sugarcrm,vtiger,zendesk,zoho)],\x20motionbar[type(0=Popup,1=CTI\x20URL,2=WinApp)]','contactManager[autoCreate(0=No,1=Yes)],\x20urlForward[URL],\x20script[type],\x20integration[AccountId],\x20motionbar[TemplateId,URL,WinAppPath],\x20browser[TemplateId,URL]','contactManager[searchFields],\x20script[script],\x20integration[ConfigurationId],\x20motionbar[NULL,eventVariables(0=No,1=Yes),WinAppArguments],\x20browser[NULL,eventVariables(0=No,1=Yes)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','TEXT','sequelize','VIRTUAL','getDataValue','action','STRING','integration','motionbar','urlForward','browser'];(function(_0x2221fe,_0x5b0011){var _0x55d538=function(_0x3c0666){while(--_0x3c0666){_0x2221fe['push'](_0x2221fe['shift']());}};_0x55d538(++_0x5b0011);}(_0xf163,0x129));var _0x3f16=function(_0x5c8827,_0x5bc5d7){_0x5c8827=_0x5c8827-0x0;var _0x50ffd5=_0xf163[_0x5c8827];return _0x50ffd5;};'use strict';var Sequelize=require(_0x3f16('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f16('0x1')],'get':function(_0x249c0b){return this[_0x3f16('0x2')](_0x3f16('0x3'));}},'action':{'type':Sequelize[_0x3f16('0x4')],'allowNull':![],'validate':{'isIn':{'args':[['contactManager',_0x3f16('0x5'),_0x3f16('0x6'),'jscripty',_0x3f16('0x7'),_0x3f16('0x8'),_0x3f16('0x9'),_0x3f16('0xa')]],'msg':_0x3f16('0xb')}},'comment':_0x3f16('0xb')},'data1':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comment':_0x3f16('0xc')},'data2':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comment':_0x3f16('0xd')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x3f16('0xe')},'data4':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comments':_0x3f16('0xf')},'data5':{'type':Sequelize[_0x3f16('0x4')](0x1000),'comments':_0x3f16('0x10')},'data6':{'type':Sequelize[_0x3f16('0x4')],'comments':'urlForward[headers],\x20browser[wsindowHeight]'},'data7':{'type':Sequelize[_0x3f16('0x11')],'comments':'urlForward[body]'}};
\ No newline at end of file
index 53a5384..776a598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8644=['status','offset','undefined','count','limit','set','json','save','update','destroy','then','end','error','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0x8644,0x79));var _0x4864=function(_0x49237d,_0xbe0b7f){_0x49237d=_0x49237d-0x0;var _0x487149=_0x8644[_0x49237d];return _0x487149;};'use strict';var emlformat=require(_0x4864('0x0'));var rimraf=require(_0x4864('0x1'));var zipdir=require(_0x4864('0x2'));var jsonpatch=require(_0x4864('0x3'));var rp=require(_0x4864('0x4'));var moment=require(_0x4864('0x5'));var BPromise=require(_0x4864('0x6'));var Mustache=require(_0x4864('0x7'));var util=require(_0x4864('0x8'));var path=require(_0x4864('0x9'));var sox=require(_0x4864('0xa'));var csv=require(_0x4864('0xb'));var ejs=require(_0x4864('0xc'));var fs=require('fs');var fs_extra=require(_0x4864('0xd'));var _=require(_0x4864('0xe'));var squel=require(_0x4864('0xf'));var crypto=require(_0x4864('0x10'));var jsforce=require(_0x4864('0x11'));var deskjs=require(_0x4864('0x12'));var toCsv=require(_0x4864('0xb'));var querystring=require('querystring');var Papa=require(_0x4864('0x13'));var Redis=require('ioredis');var authService=require(_0x4864('0x14'));var qs=require(_0x4864('0x15'));var as=require(_0x4864('0x16'));var hardwareService=require(_0x4864('0x17'));var logger=require(_0x4864('0x18'))(_0x4864('0x19'));var utils=require('../../config/utils');var config=require(_0x4864('0x1a'));var licenseUtil=require(_0x4864('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x20b4cd,_0x14948d){_0x14948d=_0x14948d||0xcc;return function(_0x20a5e9){if(_0x20a5e9){return _0x20b4cd[_0x4864('0x1c')](_0x14948d);}return _0x20b4cd[_0x4864('0x1d')](_0x14948d)['end']();};}function respondWithResult(_0x272975,_0x510655){_0x510655=_0x510655||0xc8;return function(_0x45c0f6){if(_0x45c0f6){return _0x272975['status'](_0x510655)['json'](_0x45c0f6);}};}function respondWithFilteredResult(_0xbbe9bd,_0x3744a1){return function(_0x1d231a){if(_0x1d231a){var _0x390ece=typeof _0x3744a1[_0x4864('0x1e')]===_0x4864('0x1f')&&typeof _0x3744a1['limit']===_0x4864('0x1f');var _0x12855c=_0x1d231a[_0x4864('0x20')];var _0x42f261=_0x390ece?0x0:_0x3744a1[_0x4864('0x1e')];var _0x4f546c=_0x390ece?_0x1d231a[_0x4864('0x20')]:_0x3744a1['offset']+_0x3744a1[_0x4864('0x21')];var _0x40fe8;if(_0x4f546c>=_0x12855c){_0x4f546c=_0x12855c;_0x40fe8=0xc8;}else{_0x40fe8=0xce;}_0xbbe9bd['status'](_0x40fe8);return _0xbbe9bd[_0x4864('0x22')]('Content-Range',_0x42f261+'-'+_0x4f546c+'/'+_0x12855c)[_0x4864('0x23')](_0x1d231a);}return null;};}function patchUpdates(_0x49e094){return function(_0x5e3ad5){try{jsonpatch['apply'](_0x5e3ad5,_0x49e094,!![]);}catch(_0x11a0d8){return BPromise['reject'](_0x11a0d8);}return _0x5e3ad5[_0x4864('0x24')]();};}function saveUpdates(_0x36180c,_0x4db4c9){return function(_0x2b0a35){if(_0x2b0a35){return _0x2b0a35[_0x4864('0x25')](_0x36180c)['then'](function(_0x10e5f4){return _0x10e5f4;});}return null;};}function removeEntity(_0x2c225b,_0x449d67){return function(_0xf22d7d){if(_0xf22d7d){return _0xf22d7d[_0x4864('0x26')]()[_0x4864('0x27')](function(){_0x2c225b[_0x4864('0x1d')](0xcc)[_0x4864('0x28')]();});}};}function handleEntityNotFound(_0x1156cc,_0x46ea83){return function(_0x2ed108){if(!_0x2ed108){_0x1156cc[_0x4864('0x1c')](0x194);}return _0x2ed108;};}function handleError(_0x378880,_0x456afb){_0x456afb=_0x456afb||0x1f4;return function(_0x4a9d5c){logger[_0x4864('0x29')](_0x4a9d5c[_0x4864('0x2a')]);if(_0x4a9d5c['name']){delete _0x4a9d5c[_0x4864('0x2b')];}_0x378880['status'](_0x456afb)[_0x4864('0x2c')](_0x4a9d5c);};}exports[_0x4864('0x25')]=function(_0x10ec32,_0x2817c3){if(_0x10ec32[_0x4864('0x2d')]['id']){delete _0x10ec32[_0x4864('0x2d')]['id'];}return db[_0x4864('0x2e')][_0x4864('0x2f')]({'where':{'id':_0x10ec32[_0x4864('0x30')]['id']}})[_0x4864('0x27')](handleEntityNotFound(_0x2817c3,null))['then'](saveUpdates(_0x10ec32[_0x4864('0x2d')],null))['then'](respondWithResult(_0x2817c3,null))[_0x4864('0x31')](handleError(_0x2817c3,null));};exports['destroy']=function(_0x38a6b5,_0x14e381){return db[_0x4864('0x2e')][_0x4864('0x2f')]({'where':{'id':_0x38a6b5[_0x4864('0x30')]['id']}})[_0x4864('0x27')](handleEntityNotFound(_0x14e381,null))[_0x4864('0x27')](removeEntity(_0x14e381,null))[_0x4864('0x31')](handleError(_0x14e381,null));};
\ No newline at end of file
+var _0x53ee=['moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','body','Action','find','params','catch','eml-format','rimraf','zip-dir'];(function(_0xdb963,_0x2d8865){var _0x9b4af2=function(_0x53a274){while(--_0x53a274){_0xdb963['push'](_0xdb963['shift']());}};_0x9b4af2(++_0x2d8865);}(_0x53ee,0x93));var _0xe53e=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x53ee[_0xfae23b];return _0x200640;};'use strict';var emlformat=require(_0xe53e('0x0'));var rimraf=require(_0xe53e('0x1'));var zipdir=require(_0xe53e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe53e('0x3'));var BPromise=require(_0xe53e('0x4'));var Mustache=require(_0xe53e('0x5'));var util=require('util');var path=require('path');var sox=require(_0xe53e('0x6'));var csv=require(_0xe53e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe53e('0x8'));var _=require(_0xe53e('0x9'));var squel=require(_0xe53e('0xa'));var crypto=require(_0xe53e('0xb'));var jsforce=require(_0xe53e('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xe53e('0x7'));var querystring=require(_0xe53e('0xd'));var Papa=require(_0xe53e('0xe'));var Redis=require(_0xe53e('0xf'));var authService=require(_0xe53e('0x10'));var qs=require(_0xe53e('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe53e('0x12'));var logger=require(_0xe53e('0x13'))(_0xe53e('0x14'));var utils=require(_0xe53e('0x15'));var config=require(_0xe53e('0x16'));var licenseUtil=require(_0xe53e('0x17'));var db=require(_0xe53e('0x18'))['db'];function respondWithStatusCode(_0x3bd905,_0x4f8795){_0x4f8795=_0x4f8795||0xcc;return function(_0x2e8ad2){if(_0x2e8ad2){return _0x3bd905[_0xe53e('0x19')](_0x4f8795);}return _0x3bd905[_0xe53e('0x1a')](_0x4f8795)[_0xe53e('0x1b')]();};}function respondWithResult(_0x39834d,_0x15a424){_0x15a424=_0x15a424||0xc8;return function(_0x499504){if(_0x499504){return _0x39834d[_0xe53e('0x1a')](_0x15a424)[_0xe53e('0x1c')](_0x499504);}};}function respondWithFilteredResult(_0x398fe0,_0x2ede4e){return function(_0x351ff1){if(_0x351ff1){var _0x54329d=typeof _0x2ede4e[_0xe53e('0x1d')]===_0xe53e('0x1e')&&typeof _0x2ede4e[_0xe53e('0x1f')]===_0xe53e('0x1e');var _0x52a74f=_0x351ff1[_0xe53e('0x20')];var _0xdbe24a=_0x54329d?0x0:_0x2ede4e[_0xe53e('0x1d')];var _0x50eb23=_0x54329d?_0x351ff1[_0xe53e('0x20')]:_0x2ede4e[_0xe53e('0x1d')]+_0x2ede4e[_0xe53e('0x1f')];var _0x1321d6;if(_0x50eb23>=_0x52a74f){_0x50eb23=_0x52a74f;_0x1321d6=0xc8;}else{_0x1321d6=0xce;}_0x398fe0['status'](_0x1321d6);return _0x398fe0[_0xe53e('0x21')](_0xe53e('0x22'),_0xdbe24a+'-'+_0x50eb23+'/'+_0x52a74f)[_0xe53e('0x1c')](_0x351ff1);}return null;};}function patchUpdates(_0x51d6a7){return function(_0x3fa969){try{jsonpatch[_0xe53e('0x23')](_0x3fa969,_0x51d6a7,!![]);}catch(_0x11de27){return BPromise[_0xe53e('0x24')](_0x11de27);}return _0x3fa969[_0xe53e('0x25')]();};}function saveUpdates(_0x2e52df,_0x47b82e){return function(_0x16e308){if(_0x16e308){return _0x16e308[_0xe53e('0x26')](_0x2e52df)[_0xe53e('0x27')](function(_0x26b66a){return _0x26b66a;});}return null;};}function removeEntity(_0x4235d5,_0x4eb304){return function(_0x5a644f){if(_0x5a644f){return _0x5a644f[_0xe53e('0x28')]()[_0xe53e('0x27')](function(){_0x4235d5[_0xe53e('0x1a')](0xcc)[_0xe53e('0x1b')]();});}};}function handleEntityNotFound(_0x3bcaa1,_0x34c862){return function(_0x110181){if(!_0x110181){_0x3bcaa1[_0xe53e('0x19')](0x194);}return _0x110181;};}function handleError(_0x21eba8,_0x13ad39){_0x13ad39=_0x13ad39||0x1f4;return function(_0x524910){logger[_0xe53e('0x29')](_0x524910[_0xe53e('0x2a')]);if(_0x524910[_0xe53e('0x2b')]){delete _0x524910[_0xe53e('0x2b')];}_0x21eba8[_0xe53e('0x1a')](_0x13ad39)[_0xe53e('0x2c')](_0x524910);};}exports[_0xe53e('0x26')]=function(_0x543d72,_0x240afe){if(_0x543d72[_0xe53e('0x2d')]['id']){delete _0x543d72[_0xe53e('0x2d')]['id'];}return db[_0xe53e('0x2e')][_0xe53e('0x2f')]({'where':{'id':_0x543d72[_0xe53e('0x30')]['id']}})['then'](handleEntityNotFound(_0x240afe,null))['then'](saveUpdates(_0x543d72[_0xe53e('0x2d')],null))['then'](respondWithResult(_0x240afe,null))[_0xe53e('0x31')](handleError(_0x240afe,null));};exports[_0xe53e('0x28')]=function(_0x563f92,_0x1f439f){return db[_0xe53e('0x2e')][_0xe53e('0x2f')]({'where':{'id':_0x563f92[_0xe53e('0x30')]['id']}})[_0xe53e('0x27')](handleEntityNotFound(_0x1f439f,null))['then'](removeEntity(_0x1f439f,null))[_0xe53e('0x31')](handleError(_0x1f439f,null));};
\ No newline at end of file
index cf8ba35..882c79f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x307f=['util','../../config/logger','api','bluebird','path','../../config/environment','./action.attributes','exports','define','Action','tools_actions','lodash'];(function(_0x1317ed,_0x57217d){var _0xbaeca=function(_0x24e517){while(--_0x24e517){_0x1317ed['push'](_0x1317ed['shift']());}};_0xbaeca(++_0x57217d);}(_0x307f,0x1af));var _0xf307=function(_0x50bdbf,_0x548c38){_0x50bdbf=_0x50bdbf-0x0;var _0x385a89=_0x307f[_0x50bdbf];return _0x385a89;};'use strict';var _=require(_0xf307('0x0'));var util=require(_0xf307('0x1'));var logger=require(_0xf307('0x2'))(_0xf307('0x3'));var moment=require('moment');var BPromise=require(_0xf307('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf307('0x5'));var rimraf=require('rimraf');var config=require(_0xf307('0x6'));var attributes=require(_0xf307('0x7'));module[_0xf307('0x8')]=function(_0x33b49b,_0x5447f2){return _0x33b49b[_0xf307('0x9')](_0xf307('0xa'),attributes,{'tableName':_0xf307('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x99cd=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./action.attributes','exports','Action','lodash'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x99cd,0x1df));var _0xd99c=function(_0x368566,_0x4fb53b){_0x368566=_0x368566-0x0;var _0x21cc9d=_0x99cd[_0x368566];return _0x21cc9d;};'use strict';var _=require(_0xd99c('0x0'));var util=require('util');var logger=require(_0xd99c('0x1'))(_0xd99c('0x2'));var moment=require(_0xd99c('0x3'));var BPromise=require(_0xd99c('0x4'));var rp=require(_0xd99c('0x5'));var fs=require('fs');var path=require(_0xd99c('0x6'));var rimraf=require(_0xd99c('0x7'));var config=require(_0xd99c('0x8'));var attributes=require(_0xd99c('0x9'));module[_0xd99c('0xa')]=function(_0x5170e7,_0x87a727){return _0x5170e7['define'](_0xd99c('0xb'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8c7d030..f2e10d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1cb9=['error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x1cb9,0x14e));var _0x91cb=function(_0x38ea79,_0xc8a557){_0x38ea79=_0x38ea79-0x0;var _0x42ddbf=_0x1cb9[_0x38ea79];return _0x42ddbf;};'use strict';var _=require(_0x91cb('0x0'));var util=require('util');var moment=require(_0x91cb('0x1'));var BPromise=require(_0x91cb('0x2'));var rs=require(_0x91cb('0x3'));var fs=require('fs');var Redis=require(_0x91cb('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x91cb('0x5'));var logger=require(_0x91cb('0x6'))('rpc');var config=require(_0x91cb('0x7'));var jayson=require(_0x91cb('0x8'));var client=jayson[_0x91cb('0x9')][_0x91cb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3b9d98,_0x8f8a3b,_0x4c1f56){return new BPromise(function(_0x15c517,_0x5bda2f){return client[_0x91cb('0xb')](_0x3b9d98,_0x4c1f56)['then'](function(_0xa43e7a){logger[_0x91cb('0xc')](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));logger[_0x91cb('0xf')](_0x91cb('0x10'),_0x8f8a3b,_0x91cb('0xe'),JSON[_0x91cb('0x11')](_0xa43e7a));if(_0xa43e7a[_0x91cb('0x12')]){if(_0xa43e7a[_0x91cb('0x12')]['code']===0x1f4){logger[_0x91cb('0x12')](_0x91cb('0xd'),_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x5bda2f(_0xa43e7a[_0x91cb('0x12')][_0x91cb('0x13')]);}logger[_0x91cb('0x12')]('Action,\x20%s,\x20%s',_0x8f8a3b,_0xa43e7a['error'][_0x91cb('0x13')]);return _0x15c517(_0xa43e7a[_0x91cb('0x12')]['message']);}else{logger['info'](_0x91cb('0xd'),_0x8f8a3b,_0x91cb('0xe'));_0x15c517(_0xa43e7a[_0x91cb('0x14')]['message']);}})[_0x91cb('0x15')](function(_0x135890){logger['error'](_0x91cb('0xd'),_0x8f8a3b,_0x135890);_0x5bda2f(_0x135890);});});}
\ No newline at end of file
+var _0xabce=['util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','client','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash'];(function(_0xc3ef90,_0x16cc16){var _0x13a781=function(_0x41a899){while(--_0x41a899){_0xc3ef90['push'](_0xc3ef90['shift']());}};_0x13a781(++_0x16cc16);}(_0xabce,0x103));var _0xeabc=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0xabce[_0x1d9aa0];return _0x226868;};'use strict';var _=require(_0xeabc('0x0'));var util=require(_0xeabc('0x1'));var moment=require(_0xeabc('0x2'));var BPromise=require(_0xeabc('0x3'));var rs=require(_0xeabc('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xeabc('0x5'));var logger=require(_0xeabc('0x6'))(_0xeabc('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xeabc('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x229ba4,_0x52ede8,_0x3bdc29){return new BPromise(function(_0x9417af,_0x8434c5){return client['request'](_0x229ba4,_0x3bdc29)[_0xeabc('0x9')](function(_0x341f16){logger[_0xeabc('0xa')](_0xeabc('0xb'),_0x52ede8,_0xeabc('0xc'));logger[_0xeabc('0xd')](_0xeabc('0xe'),_0x52ede8,_0xeabc('0xc'),JSON[_0xeabc('0xf')](_0x341f16));if(_0x341f16[_0xeabc('0x10')]){if(_0x341f16[_0xeabc('0x10')][_0xeabc('0x11')]===0x1f4){logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);return _0x8434c5(_0x341f16['error'][_0xeabc('0x12')]);}logger[_0xeabc('0x10')](_0xeabc('0xb'),_0x52ede8,_0x341f16['error']['message']);return _0x9417af(_0x341f16[_0xeabc('0x10')][_0xeabc('0x12')]);}else{logger[_0xeabc('0xa')]('Action,\x20%s,\x20%s',_0x52ede8,_0xeabc('0xc'));_0x9417af(_0x341f16[_0xeabc('0x13')]['message']);}})['catch'](function(_0x10fa8e){logger['error'](_0xeabc('0xb'),_0x52ede8,_0x10fa8e);_0x8434c5(_0x10fa8e);});});}
\ No newline at end of file
index a70e1de..e999eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa920=['util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./action.controller','put','/:id','isAuthenticated','update','delete','destroy','exports','multer'];(function(_0x1df961,_0x3e63a4){var _0x2038d5=function(_0x228dd4){while(--_0x228dd4){_0x1df961['push'](_0x1df961['shift']());}};_0x2038d5(++_0x3e63a4);}(_0xa920,0x19f));var _0x0a92=function(_0x2f6563,_0x313edb){_0x2f6563=_0x2f6563-0x0;var _0x3d3749=_0xa920[_0x2f6563];return _0x3d3749;};'use strict';var multer=require(_0x0a92('0x0'));var util=require(_0x0a92('0x1'));var path=require(_0x0a92('0x2'));var timeout=require(_0x0a92('0x3'));var express=require(_0x0a92('0x4'));var router=express[_0x0a92('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0a92('0x6'));var config=require(_0x0a92('0x7'));var controller=require(_0x0a92('0x8'));router[_0x0a92('0x9')](_0x0a92('0xa'),auth[_0x0a92('0xb')](),controller[_0x0a92('0xc')]);router[_0x0a92('0xd')](_0x0a92('0xa'),auth['isAuthenticated'](),controller[_0x0a92('0xe')]);module[_0x0a92('0xf')]=router;
\ No newline at end of file
+var _0x4ff6=['util','path','Router','fs-extra','../../components/interaction/service','../../config/environment','put','/:id','update','delete','isAuthenticated','destroy','exports','multer'];(function(_0x79aa12,_0x23aa17){var _0x4b7ba0=function(_0x31cd4d){while(--_0x31cd4d){_0x79aa12['push'](_0x79aa12['shift']());}};_0x4b7ba0(++_0x23aa17);}(_0x4ff6,0xed));var _0x64ff=function(_0x48e333,_0x3dcb2f){_0x48e333=_0x48e333-0x0;var _0x4500f9=_0x4ff6[_0x48e333];return _0x4500f9;};'use strict';var multer=require(_0x64ff('0x0'));var util=require(_0x64ff('0x1'));var path=require(_0x64ff('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x64ff('0x3')]();var fs_extra=require(_0x64ff('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x64ff('0x5'));var config=require(_0x64ff('0x6'));var controller=require('./action.controller');router[_0x64ff('0x7')](_0x64ff('0x8'),auth['isAuthenticated'](),controller[_0x64ff('0x9')]);router[_0x64ff('0xa')](_0x64ff('0x8'),auth[_0x64ff('0xb')](),controller[_0x64ff('0xc')]);module[_0x64ff('0xd')]=router;
\ No newline at end of file
index 8dfe89a..a62b14f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac9d=['TEXT','sequelize','exports','STRING'];(function(_0x545d36,_0x45c4b1){var _0x53b683=function(_0x211f84){while(--_0x211f84){_0x545d36['push'](_0x545d36['shift']());}};_0x53b683(++_0x45c4b1);}(_0xac9d,0x14d));var _0xdac9=function(_0x3727ae,_0x165f88){_0x3727ae=_0x3727ae-0x0;var _0x1c3f01=_0xac9d[_0x3727ae];return _0x1c3f01;};'use strict';var Sequelize=require(_0xdac9('0x0'));module[_0xdac9('0x1')]={'name':{'type':Sequelize[_0xdac9('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xdac9('0x2')]},'parent':{'type':Sequelize[_0xdac9('0x2')]},'table':{'type':Sequelize[_0xdac9('0x2')]},'conditions':{'type':Sequelize[_0xdac9('0x3')]},'joins':{'type':Sequelize[_0xdac9('0x3')]}};
\ No newline at end of file
+var _0x687b=['STRING','TEXT','sequelize','exports'];(function(_0x304fbd,_0x401f58){var _0x3a4448=function(_0x261bc9){while(--_0x261bc9){_0x304fbd['push'](_0x304fbd['shift']());}};_0x3a4448(++_0x401f58);}(_0x687b,0x14a));var _0xb687=function(_0x4da572,_0x326408){_0x4da572=_0x4da572-0x0;var _0x378393=_0x687b[_0x4da572];return _0x378393;};'use strict';var Sequelize=require(_0xb687('0x0'));module[_0xb687('0x1')]={'name':{'type':Sequelize[_0xb687('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xb687('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize['STRING']},'conditions':{'type':Sequelize[_0xb687('0x3')]},'joins':{'type':Sequelize[_0xb687('0x3')]}};
\ No newline at end of file
index 696f453..c04e985 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c78=['../../config/utils','../../config/environment','../../mysqldb','dbH','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','name','send','index','map','AnalyticCustomReport','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','keyBy','select','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','includes','parentKey','foreignKey','foreignTable','table','conditions','clone','debug','sequelize','QueryTypes','SELECT','GROUP_CONCAT(%s)','ROUND(%s)','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','from','order','%s.%s\x20=\x20%s.%s','output','web','fullPath','generate','csv','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','child_process','fork','../../components/export/','../../files/reports','savename','countTable','COUNT(*)','run','runReport','metric','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api'];(function(_0x25b430,_0x342119){var _0x32d9e3=function(_0x5960bd){while(--_0x5960bd){_0x25b430['push'](_0x25b430['shift']());}};_0x32d9e3(++_0x342119);}(_0x0c78,0x1ea));var _0x80c7=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0x0c78[_0x1cfa0d];return _0xe33279;};'use strict';var emlformat=require(_0x80c7('0x0'));var rimraf=require(_0x80c7('0x1'));var zipdir=require(_0x80c7('0x2'));var jsonpatch=require(_0x80c7('0x3'));var rp=require('request-promise');var moment=require(_0x80c7('0x4'));var BPromise=require(_0x80c7('0x5'));var Mustache=require(_0x80c7('0x6'));var util=require(_0x80c7('0x7'));var path=require(_0x80c7('0x8'));var sox=require(_0x80c7('0x9'));var csv=require(_0x80c7('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x80c7('0xb'));var _=require(_0x80c7('0xc'));var squel=require(_0x80c7('0xd'));var crypto=require(_0x80c7('0xe'));var jsforce=require(_0x80c7('0xf'));var deskjs=require(_0x80c7('0x10'));var toCsv=require(_0x80c7('0xa'));var querystring=require(_0x80c7('0x11'));var Papa=require(_0x80c7('0x12'));var Redis=require(_0x80c7('0x13'));var authService=require(_0x80c7('0x14'));var qs=require(_0x80c7('0x15'));var as=require(_0x80c7('0x16'));var hardwareService=require(_0x80c7('0x17'));var logger=require(_0x80c7('0x18'))(_0x80c7('0x19'));var utils=require(_0x80c7('0x1a'));var config=require(_0x80c7('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0x80c7('0x1c'))['db'];var dbH=require('../../mysqldb')[_0x80c7('0x1d')];function respondWithStatusCode(_0x3a4f45,_0x170217){_0x170217=_0x170217||0xcc;return function(_0x5f0586){if(_0x5f0586){return _0x3a4f45[_0x80c7('0x1e')](_0x170217);}return _0x3a4f45[_0x80c7('0x1f')](_0x170217)[_0x80c7('0x20')]();};}function respondWithResult(_0x12e4e7,_0x50a21e){_0x50a21e=_0x50a21e||0xc8;return function(_0x495f78){if(_0x495f78){return _0x12e4e7['status'](_0x50a21e)[_0x80c7('0x21')](_0x495f78);}};}function respondWithFilteredResult(_0x531ea8,_0x240731){return function(_0x30822e){if(_0x30822e){var _0x2e8a55=typeof _0x240731[_0x80c7('0x22')]==='undefined'&&typeof _0x240731['limit']===_0x80c7('0x23');var _0x54f201=_0x30822e['count'];var _0x1e4d5b=_0x2e8a55?0x0:_0x240731['offset'];var _0x42e90b=_0x2e8a55?_0x30822e[_0x80c7('0x24')]:_0x240731['offset']+_0x240731[_0x80c7('0x25')];var _0x7bbd9c;if(_0x42e90b>=_0x54f201){_0x42e90b=_0x54f201;_0x7bbd9c=0xc8;}else{_0x7bbd9c=0xce;}_0x531ea8[_0x80c7('0x1f')](_0x7bbd9c);return _0x531ea8[_0x80c7('0x26')](_0x80c7('0x27'),_0x1e4d5b+'-'+_0x42e90b+'/'+_0x54f201)[_0x80c7('0x21')](_0x30822e);}return null;};}function patchUpdates(_0x45df17){return function(_0x546c2e){try{jsonpatch[_0x80c7('0x28')](_0x546c2e,_0x45df17,!![]);}catch(_0x211653){return BPromise[_0x80c7('0x29')](_0x211653);}return _0x546c2e['save']();};}function saveUpdates(_0xcc97ec,_0x51391c){return function(_0xc60437){if(_0xc60437){return _0xc60437[_0x80c7('0x2a')](_0xcc97ec)[_0x80c7('0x2b')](function(_0x14ce65){return _0x14ce65;});}return null;};}function removeEntity(_0x1541f2,_0x140857){return function(_0x223967){if(_0x223967){return _0x223967[_0x80c7('0x2c')]()[_0x80c7('0x2b')](function(){var _0x49fcef=_0x223967[_0x80c7('0x2d')]({'plain':!![]});var _0x3635ac=_0x80c7('0x2e');return db[_0x80c7('0x2f')][_0x80c7('0x2c')]({'where':{'type':_0x3635ac,'resourceId':_0x49fcef['id']}})[_0x80c7('0x2b')](function(){return _0x223967;});})[_0x80c7('0x2b')](function(){_0x1541f2['status'](0xcc)[_0x80c7('0x20')]();});}};}function handleEntityNotFound(_0x1ebe06,_0x1dfe74){return function(_0x1144e0){if(!_0x1144e0){_0x1ebe06[_0x80c7('0x1e')](0x194);}return _0x1144e0;};}function handleError(_0x2955ac,_0x494809){_0x494809=_0x494809||0x1f4;return function(_0x544569){logger[_0x80c7('0x30')](_0x544569[_0x80c7('0x31')]);if(_0x544569[_0x80c7('0x32')]){delete _0x544569[_0x80c7('0x32')];}_0x2955ac[_0x80c7('0x1f')](_0x494809)[_0x80c7('0x33')](_0x544569);};}exports[_0x80c7('0x34')]=function(_0x1e5a05,_0x282772){var _0x401aa4={},_0x1dc96b={},_0x456b2f={'count':0x0,'rows':[]};var _0x6a9ce3=_[_0x80c7('0x35')](db[_0x80c7('0x36')][_0x80c7('0x37')],function(_0x1a7530){return{'name':_0x1a7530['fieldName'],'type':_0x1a7530[_0x80c7('0x38')][_0x80c7('0x39')]};});_0x1dc96b[_0x80c7('0x3a')]=_[_0x80c7('0x35')](_0x6a9ce3,_0x80c7('0x32'));_0x1dc96b['query']=_[_0x80c7('0x3b')](_0x1e5a05[_0x80c7('0x3c')]);_0x1dc96b[_0x80c7('0x3d')]=_[_0x80c7('0x3e')](_0x1dc96b[_0x80c7('0x3a')],_0x1dc96b['query']);_0x401aa4[_0x80c7('0x3f')]=_[_0x80c7('0x3e')](_0x1dc96b[_0x80c7('0x3a')],qs[_0x80c7('0x40')](_0x1e5a05[_0x80c7('0x3c')]['fields']));_0x401aa4['attributes']=_0x401aa4[_0x80c7('0x3f')][_0x80c7('0x41')]?_0x401aa4[_0x80c7('0x3f')]:_0x1dc96b[_0x80c7('0x3a')];if(!_0x1e5a05[_0x80c7('0x3c')][_0x80c7('0x42')](_0x80c7('0x43'))){_0x401aa4['limit']=qs['limit'](_0x1e5a05[_0x80c7('0x3c')][_0x80c7('0x25')]);_0x401aa4[_0x80c7('0x22')]=qs['offset'](_0x1e5a05['query']['offset']);}_0x401aa4['order']=qs[_0x80c7('0x44')](_0x1e5a05[_0x80c7('0x3c')]['sort']);_0x401aa4['where']=qs[_0x80c7('0x3d')](_['pick'](_0x1e5a05['query'],_0x1dc96b['filters']),_0x6a9ce3);if(_0x1e5a05[_0x80c7('0x3c')]['filter']){_0x401aa4[_0x80c7('0x45')]=_[_0x80c7('0x46')](_0x401aa4[_0x80c7('0x45')],{'$or':_[_0x80c7('0x35')](_0x6a9ce3,function(_0x45d13b){if(_0x45d13b[_0x80c7('0x38')]!==_0x80c7('0x47')){var _0x5d3111={};_0x5d3111[_0x45d13b[_0x80c7('0x32')]]={'$like':'%'+_0x1e5a05['query']['filter']+'%'};return _0x5d3111;}})});}_0x401aa4=_['merge']({},_0x401aa4,_0x1e5a05[_0x80c7('0x48')]);var _0x478969={'where':_0x401aa4[_0x80c7('0x45')]};return db['AnalyticCustomReport'][_0x80c7('0x24')](_0x478969)['then'](function(_0x14f810){_0x456b2f[_0x80c7('0x24')]=_0x14f810;if(_0x1e5a05[_0x80c7('0x3c')]['includeAll']){_0x401aa4[_0x80c7('0x49')]=[{'all':!![]}];}return db[_0x80c7('0x36')][_0x80c7('0x4a')](_0x401aa4);})[_0x80c7('0x2b')](function(_0x1d0ec9){_0x456b2f[_0x80c7('0x4b')]=_0x1d0ec9;return _0x456b2f;})[_0x80c7('0x2b')](respondWithFilteredResult(_0x282772,_0x401aa4))[_0x80c7('0x4c')](handleError(_0x282772,null));};exports[_0x80c7('0x4d')]=function(_0x45cee5,_0x45a920){var _0x2954de={'raw':![],'where':{'id':_0x45cee5[_0x80c7('0x4e')]['id']}},_0xdb79b5={};_0xdb79b5[_0x80c7('0x3a')]=_[_0x80c7('0x3b')](db[_0x80c7('0x36')][_0x80c7('0x37')]);_0xdb79b5['query']=_['keys'](_0x45cee5[_0x80c7('0x3c')]);_0xdb79b5[_0x80c7('0x3d')]=_['intersection'](_0xdb79b5['model'],_0xdb79b5[_0x80c7('0x3c')]);_0x2954de[_0x80c7('0x3f')]=_['intersection'](_0xdb79b5[_0x80c7('0x3a')],qs[_0x80c7('0x40')](_0x45cee5[_0x80c7('0x3c')][_0x80c7('0x40')]));_0x2954de['attributes']=_0x2954de['attributes'][_0x80c7('0x41')]?_0x2954de['attributes']:_0xdb79b5[_0x80c7('0x3a')];if(_0x45cee5['query'][_0x80c7('0x4f')]){_0x2954de[_0x80c7('0x49')]=[{'all':!![]}];}_0x2954de=_[_0x80c7('0x46')]({},_0x2954de,_0x45cee5['options']);return db[_0x80c7('0x36')][_0x80c7('0x50')](_0x2954de)[_0x80c7('0x2b')](handleEntityNotFound(_0x45a920,null))[_0x80c7('0x2b')](respondWithResult(_0x45a920,null))[_0x80c7('0x4c')](handleError(_0x45a920,null));};exports[_0x80c7('0x51')]=function(_0x475553,_0x21a8aa){return db['AnalyticCustomReport'][_0x80c7('0x51')](_0x475553[_0x80c7('0x52')],{})[_0x80c7('0x2b')](function(_0x69b0f6){var _0x4ab41e=_0x475553[_0x80c7('0x53')][_0x80c7('0x2d')]({'plain':!![]});if(!_0x4ab41e)throw new Error(_0x80c7('0x54'));if(_0x4ab41e[_0x80c7('0x55')]===_0x80c7('0x53')){var _0x1d2ea9=_0x69b0f6['get']({'plain':!![]});var _0x1e880c=_0x80c7('0x56');return db[_0x80c7('0x57')][_0x80c7('0x50')]({'where':{'name':_0x1e880c,'userProfileId':_0x4ab41e[_0x80c7('0x58')]},'raw':!![]})['then'](function(_0x372d97){if(_0x372d97&&_0x372d97[_0x80c7('0x59')]===0x0){return db['UserProfileResource'][_0x80c7('0x51')]({'name':_0x1d2ea9[_0x80c7('0x32')],'resourceId':_0x1d2ea9['id'],'type':_0x80c7('0x2e'),'sectionId':_0x372d97['id']},{})[_0x80c7('0x2b')](function(){return _0x69b0f6;});}else{return _0x69b0f6;}})[_0x80c7('0x4c')](function(_0x4c5b86){logger[_0x80c7('0x30')](_0x80c7('0x5a'),_0x4c5b86);throw _0x4c5b86;});}return _0x69b0f6;})[_0x80c7('0x2b')](respondWithResult(_0x21a8aa,0xc9))['catch'](handleError(_0x21a8aa,null));};exports[_0x80c7('0x2a')]=function(_0x355e6f,_0x1a48ac){if(_0x355e6f[_0x80c7('0x52')]['id']){delete _0x355e6f[_0x80c7('0x52')]['id'];}return db['AnalyticCustomReport']['find']({'where':{'id':_0x355e6f[_0x80c7('0x4e')]['id']}})[_0x80c7('0x2b')](handleEntityNotFound(_0x1a48ac,null))[_0x80c7('0x2b')](saveUpdates(_0x355e6f['body'],null))['then'](respondWithResult(_0x1a48ac,null))['catch'](handleError(_0x1a48ac,null));};exports[_0x80c7('0x2c')]=function(_0x3dd6d4,_0x41aa78){return db[_0x80c7('0x36')][_0x80c7('0x50')]({'where':{'id':_0x3dd6d4['params']['id']}})[_0x80c7('0x2b')](handleEntityNotFound(_0x41aa78,null))['then'](removeEntity(_0x41aa78,null))['catch'](handleError(_0x41aa78,null));};exports['preview']=function(_0x70dafc,_0x2b9e59){var _0x7472ad=0xa;var _0x345850=[_0x80c7('0x5b'),'left_join',_0x80c7('0x5c'),_0x80c7('0x5d')];var _0x63a40c={'SUM':_0x80c7('0x5e'),'COUNT':_0x80c7('0x5f'),'COUNT DISTINCT':_0x80c7('0x60'),'MAX':_0x80c7('0x61'),'MIN':_0x80c7('0x62'),'AVG':_0x80c7('0x63'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0x80c7('0x64'),'GROUP_CONCAT DESC':_0x80c7('0x65')};var _0x271a59={'SEC_TO_TIME':_0x80c7('0x66'),'DATE':_0x80c7('0x67'),'HOUR':_0x80c7('0x68'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x80c7('0x69')};var _0x4eadda=function(_0x30dcb8){return!_['includes']([_0x80c7('0x6a'),_0x80c7('0x6b'),_0x80c7('0x6c'),_0x80c7('0x6d')],_0x30dcb8);};var _0x43f828=function(_0x1c5f05){if(!_0x1c5f05||!_0x1c5f05['rules'][_0x80c7('0x41')]){return'';}for(var _0x597124='(',_0x49e2d7=0x0;_0x49e2d7<_0x1c5f05[_0x80c7('0x6e')][_0x80c7('0x41')];_0x49e2d7+=0x1){_0x49e2d7>0x0&&(_0x597124+='\x20'+_0x1c5f05[_0x80c7('0x6f')]+'\x20');_0x597124+=_0x1c5f05[_0x80c7('0x6e')][_0x49e2d7][_0x80c7('0x70')]?_0x43f828(_0x1c5f05[_0x80c7('0x6e')][_0x49e2d7][_0x80c7('0x70')]):_0x1c5f05[_0x80c7('0x6e')][_0x49e2d7][_0x80c7('0x71')]+'\x20'+_0x1c5f05['rules'][_0x49e2d7][_0x80c7('0x72')]+(_0x4eadda(_0x1c5f05['rules'][_0x49e2d7]['condition'])?'\x20'+_0x1c5f05[_0x80c7('0x6e')][_0x49e2d7][_0x80c7('0x73')]:'');}return _0x597124+')';};var _0x4e3d7b={'where':{'id':_0x70dafc[_0x80c7('0x4e')]['id']}},_0x35536b,_0x17d292,_0x1050f7,_0x4d5ca9,_0x4a01b5;_0x4e3d7b=_[_0x80c7('0x46')]({},_0x4e3d7b,_0x70dafc[_0x80c7('0x48')]);return db[_0x80c7('0x36')][_0x80c7('0x50')](_0x4e3d7b)[_0x80c7('0x2b')](function(_0x1ea848){if(_0x1ea848){_0x35536b=_0x1ea848;return _0x1ea848[_0x80c7('0x74')]();}return null;})[_0x80c7('0x2b')](function(_0x3dd330){if(_0x3dd330){if(!_0x3dd330[_0x80c7('0x41')]){throw new db[(_0x80c7('0x75'))][(_0x80c7('0x76'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x17d292=_0x3dd330;return db['AnalyticMetric'][_0x80c7('0x4a')]({'raw':!![]});}return null;})[_0x80c7('0x2b')](function(_0x5cebaf){if(_0x5cebaf){_0x1050f7=_[_0x80c7('0x77')](_0x5cebaf,'id');var _0xbddefa;var _0x2268d2=squel[_0x80c7('0x78')]();_0x2268d2['from'](_0x35536b['table']);for(var _0x541905=0x0;_0x541905<_0x17d292[_0x80c7('0x41')];_0x541905+=0x1){_0xbddefa=_0x17d292[_0x541905][_0x80c7('0x79')]?_0x1050f7[_0x17d292[_0x541905][_0x80c7('0x79')]]['metric']:_0x17d292[_0x541905][_0x80c7('0x71')];_0xbddefa=_0x17d292[_0x541905][_0x80c7('0x7a')]?_[_0x80c7('0x7b')](_0x63a40c[_0x17d292[_0x541905][_0x80c7('0x7a')]],'%s',_0xbddefa):_0xbddefa;_0xbddefa=_0x17d292[_0x541905][_0x80c7('0x7c')]?_[_0x80c7('0x7b')](_0x271a59[_0x17d292[_0x541905][_0x80c7('0x7c')]],'%s',_0xbddefa):_0xbddefa;if(_0x17d292[_0x541905][_0x80c7('0x7d')]){_0x2268d2['group'](_0xbddefa);}_0x17d292[_0x541905][_0x80c7('0x7e')]&&_0x2268d2['order'](_0xbddefa,_0x17d292[_0x541905][_0x80c7('0x7e')]===_0x80c7('0x7f')?![]:!![]);_0x2268d2[_0x80c7('0x71')](_0xbddefa,_0x17d292[_0x541905][_0x80c7('0x80')]||_0xbddefa);}if(_0x35536b['joins']){_0x35536b[_0x80c7('0x81')]=JSON[_0x80c7('0x82')](_0x35536b['joins']);for(var _0x5b59c2=0x0;_0x5b59c2<_0x35536b['joins'][_0x80c7('0x41')];_0x5b59c2+=0x1){if(_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x38')]&&_[_0x80c7('0x83')](_0x345850,_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x38')])&&_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x84')]&&_0x35536b['joins'][_0x5b59c2]['foreignTable']&&_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x85')]){_0x2268d2[_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x38')]](_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x86')],null,util[_0x80c7('0x7c')]('%s.%s\x20=\x20%s.%s',_0x35536b[_0x80c7('0x87')],_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x84')],_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x86')],_0x35536b[_0x80c7('0x81')][_0x5b59c2][_0x80c7('0x85')]));}}}if(_0x35536b[_0x80c7('0x88')]){_0x35536b[_0x80c7('0x88')]=JSON[_0x80c7('0x82')](_0x35536b[_0x80c7('0x88')]);_0x2268d2[_0x80c7('0x45')](_0x43f828(_0x35536b['conditions'][_0x80c7('0x70')]));}_0x4a01b5=_0x2268d2[_0x80c7('0x89')]();_0x2268d2[_0x80c7('0x25')](_0x7472ad);_0x2268d2['offset'](0x0);logger[_0x80c7('0x8a')]('Limited\x20Query:',_0x2268d2['toString']());return dbH[_0x80c7('0x8b')][_0x80c7('0x3c')](_0x2268d2['toString'](),{'type':dbH['sequelize'][_0x80c7('0x8c')][_0x80c7('0x8d')]});}})[_0x80c7('0x2b')](respondWithResult(_0x2b9e59,null))[_0x80c7('0x4c')](handleError(_0x2b9e59,null));};function runReport(_0x757baf,_0x35a79a,_0x181d79){var _0xd9d256=_0x35a79a[_0x80c7('0x32')];var _0x3b73eb=0xa;var _0x11949c=[_0x80c7('0x5b'),'left_join',_0x80c7('0x5c'),_0x80c7('0x5d')];var _0x25f4d1={'SUM':'SUM(%s)','COUNT':_0x80c7('0x5f'),'COUNT DISTINCT':_0x80c7('0x60'),'MAX':_0x80c7('0x61'),'MIN':_0x80c7('0x62'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x80c7('0x8e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x80c7('0x65')};var _0xab5968={'SEC_TO_TIME':_0x80c7('0x66'),'DATE':_0x80c7('0x67'),'HOUR':'HOUR(%s)','ROUND':_0x80c7('0x8f'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x78ccc8=function(_0x41d6ca){return!_[_0x80c7('0x83')]([_0x80c7('0x6a'),'IS\x20NOT\x20NULL',_0x80c7('0x6c'),_0x80c7('0x6d')],_0x41d6ca);};var _0x4231f2=function(_0x4b7b5e){if(!_0x4b7b5e||!_0x4b7b5e[_0x80c7('0x6e')][_0x80c7('0x41')]){return'';}for(var _0x240b9f='(',_0x57510b=0x0;_0x57510b<_0x4b7b5e[_0x80c7('0x6e')][_0x80c7('0x41')];_0x57510b+=0x1){_0x57510b>0x0&&(_0x240b9f+='\x20'+_0x4b7b5e[_0x80c7('0x6f')]+'\x20');_0x240b9f+=_0x4b7b5e[_0x80c7('0x6e')][_0x57510b][_0x80c7('0x70')]?_0x4231f2(_0x4b7b5e[_0x80c7('0x6e')][_0x57510b][_0x80c7('0x70')]):_0x4b7b5e['rules'][_0x57510b][_0x80c7('0x71')]+'\x20'+_0x4b7b5e[_0x80c7('0x6e')][_0x57510b][_0x80c7('0x72')]+(_0x78ccc8(_0x4b7b5e[_0x80c7('0x6e')][_0x57510b][_0x80c7('0x72')])?'\x20'+_0x4b7b5e['rules'][_0x57510b][_0x80c7('0x73')]:'');}return _0x240b9f+')';};var _0x394818={'where':{'id':_0x757baf['id']}},_0x1febd1,_0x35479e,_0x54c9d1,_0x18ece3,_0x2b6c3f;_0x394818=_[_0x80c7('0x46')]({},_0x394818,_0x181d79);return db[_0x80c7('0x36')][_0x80c7('0x50')](_0x394818)[_0x80c7('0x2b')](function(_0x50b908){if(_0x50b908){_0x1febd1=_0x50b908;return _0x50b908['getFields']();}return null;})[_0x80c7('0x2b')](function(_0x356c1c){if(_0x356c1c){if(!_0x356c1c[_0x80c7('0x41')]){throw new db[(_0x80c7('0x75'))][(_0x80c7('0x76'))](_0x80c7('0x90'),0x193);}_0x35479e=_0x356c1c;return db[_0x80c7('0x91')][_0x80c7('0x4a')]({'raw':!![]});}return null;})['then'](function(_0x1f0fed){if(_0x1f0fed){_0x54c9d1=_[_0x80c7('0x77')](_0x1f0fed,'id');var _0x29175a;var _0x385112=squel[_0x80c7('0x78')]();_0x385112[_0x80c7('0x92')](_0x1febd1['table']);for(var _0x5b4bff=0x0;_0x5b4bff<_0x35479e[_0x80c7('0x41')];_0x5b4bff+=0x1){_0x29175a=_0x35479e[_0x5b4bff][_0x80c7('0x79')]?_0x54c9d1[_0x35479e[_0x5b4bff][_0x80c7('0x79')]]['metric']:_0x35479e[_0x5b4bff][_0x80c7('0x71')];_0x29175a=_0x35479e[_0x5b4bff]['function']?_[_0x80c7('0x7b')](_0x25f4d1[_0x35479e[_0x5b4bff][_0x80c7('0x7a')]],'%s',_0x29175a):_0x29175a;_0x29175a=_0x35479e[_0x5b4bff][_0x80c7('0x7c')]?_['replace'](_0xab5968[_0x35479e[_0x5b4bff][_0x80c7('0x7c')]],'%s',_0x29175a):_0x29175a;if(_0x35479e[_0x5b4bff][_0x80c7('0x7d')]){_0x385112['group'](_0x29175a);}_0x35479e[_0x5b4bff][_0x80c7('0x7e')]&&_0x385112[_0x80c7('0x93')](_0x29175a,_0x35479e[_0x5b4bff][_0x80c7('0x7e')]===_0x80c7('0x7f')?![]:!![]);_0x385112[_0x80c7('0x71')](_0x29175a,_0x35479e[_0x5b4bff]['alias']||_0x29175a);}if(_0x1febd1[_0x80c7('0x81')]){_0x1febd1[_0x80c7('0x81')]=JSON[_0x80c7('0x82')](_0x1febd1[_0x80c7('0x81')]);for(var _0x107c57=0x0;_0x107c57<_0x1febd1['joins'][_0x80c7('0x41')];_0x107c57+=0x1){if(_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x38')]&&_[_0x80c7('0x83')](_0x11949c,_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x38')])&&_0x1febd1[_0x80c7('0x81')][_0x107c57]['parentKey']&&_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x86')]&&_0x1febd1['joins'][_0x107c57][_0x80c7('0x85')]){_0x385112[_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x38')]](_0x1febd1[_0x80c7('0x81')][_0x107c57]['foreignTable'],null,util[_0x80c7('0x7c')](_0x80c7('0x94'),_0x1febd1[_0x80c7('0x87')],_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x84')],_0x1febd1[_0x80c7('0x81')][_0x107c57]['foreignTable'],_0x1febd1[_0x80c7('0x81')][_0x107c57][_0x80c7('0x85')]));}}}if(_0x1febd1[_0x80c7('0x88')]){_0x1febd1[_0x80c7('0x88')]=JSON['parse'](_0x1febd1[_0x80c7('0x88')]);_0x385112[_0x80c7('0x45')](_0x4231f2(_0x1febd1[_0x80c7('0x88')][_0x80c7('0x70')]));}_0x2b6c3f=_0x385112[_0x80c7('0x89')]();_0x385112[_0x80c7('0x25')](_0x3b73eb);_0x385112[_0x80c7('0x22')](0x0);return;}})[_0x80c7('0x2b')](function(){if(_0x35a79a[_0x80c7('0x95')]===_0x80c7('0x96')){return null;}var _0x5609de=_['merge'](_0x35a79a,{'name':_0x35a79a[_0x80c7('0x97')]||_0x35a79a[_0x80c7('0x32')]||_0x1febd1[_0x80c7('0x32')],'basename':_0xd9d256,'savename':util[_0x80c7('0x7c')]('%s-%s.%s',_0x35a79a[_0x80c7('0x32')]||_0x1febd1[_0x80c7('0x32')],require('randomstring')[_0x80c7('0x98')](0x4),_0x35a79a[_0x80c7('0x95')]||_0x80c7('0x99')),'reportId':_0x1febd1['id'],'reportType':'custom'});return db[_0x80c7('0x9a')][_0x80c7('0x51')](_0x5609de,{'raw':!![]});})['then'](function(_0xa5700b){if(_0x1febd1[_0x80c7('0x87')]===_0x80c7('0x9b')){_0x2b6c3f[_0x80c7('0x45')](_0x1febd1['table']+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x35a79a[_0x80c7('0x9c')],_0x35a79a[_0x80c7('0x9d')]);}else{_0x2b6c3f[_0x80c7('0x45')](_0x1febd1[_0x80c7('0x87')]+_0x80c7('0x9e'),_0x35a79a[_0x80c7('0x9c')],_0x35a79a[_0x80c7('0x9d')]);}if(_0xa5700b){logger[_0x80c7('0x9f')](_0x80c7('0xa0'),_0x2b6c3f[_0x80c7('0xa1')]());require(_0x80c7('0xa2'))[_0x80c7('0xa3')](path[_0x80c7('0x5b')](__dirname,_0x80c7('0xa4'),_0xa5700b['output']),[_0xa5700b['id'],_0x2b6c3f[_0x80c7('0xa1')](),path[_0x80c7('0x5b')](__dirname,_0x80c7('0xa5'),_0xa5700b[_0x80c7('0xa6')]),_0xd9d256]);return _0xa5700b;}else{var _0x543b04=squel[_0x80c7('0x78')]();_0x543b04['from']('('+_0x2b6c3f[_0x80c7('0xa1')]()+')',_0x80c7('0xa7'));_0x543b04[_0x80c7('0x71')](_0x80c7('0xa8'),_0x80c7('0x24'));_0x2b6c3f[_0x80c7('0x25')](_0x35a79a[_0x80c7('0x25')]||_0x3b73eb);_0x2b6c3f[_0x80c7('0x22')](_0x35a79a[_0x80c7('0x22')]||0x0);return dbH[_0x80c7('0x8b')][_0x80c7('0x3c')](_0x543b04[_0x80c7('0xa1')](),{'type':dbH[_0x80c7('0x8b')][_0x80c7('0x8c')][_0x80c7('0x8d')]})[_0x80c7('0x2b')](function(_0x2a6a1b){if(!_0x2a6a1b[_0x80c7('0x41')]){_0x18ece3=0x0;}else{_0x18ece3=_0x2a6a1b[0x0]['count']||0x0;}return dbH['sequelize'][_0x80c7('0x3c')](_0x2b6c3f[_0x80c7('0xa1')](),{'type':dbH['sequelize'][_0x80c7('0x8c')][_0x80c7('0x8d')]});})['then'](function(_0x9a383c){return{'rows':_0x9a383c||[],'count':_0x18ece3};});}});}exports[_0x80c7('0xa9')]=function(_0x1766ad,_0x351489){return runReport(_0x1766ad['params'],_0x1766ad[_0x80c7('0x3c')],_0x1766ad[_0x80c7('0x48')])[_0x80c7('0x2b')](respondWithResult(_0x351489,null))[_0x80c7('0x4c')](handleError(_0x351489,null));};exports[_0x80c7('0xaa')]=runReport;exports['query']=function(_0x30277f,_0x2d5bda){var _0x59b82c=0xa;var _0x3fd5c3=[_0x80c7('0x5b'),'left_join',_0x80c7('0x5c'),_0x80c7('0x5d')];var _0x5b6ca9={'SUM':_0x80c7('0x5e'),'COUNT':_0x80c7('0x5f'),'COUNT DISTINCT':_0x80c7('0x60'),'MAX':'MAX(%s)','MIN':_0x80c7('0x62'),'AVG':_0x80c7('0x63'),'GROUP_CONCAT':_0x80c7('0x8e'),'GROUP_CONCAT ASC':_0x80c7('0x64'),'GROUP_CONCAT DESC':_0x80c7('0x65')};var _0x2e5918={'SEC_TO_TIME':_0x80c7('0x66'),'DATE':_0x80c7('0x67'),'HOUR':_0x80c7('0x68'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x43bc3f=function(_0x5a052d){return!_['includes']([_0x80c7('0x6a'),_0x80c7('0x6b'),_0x80c7('0x6c'),_0x80c7('0x6d')],_0x5a052d);};var _0x22b0b8=function(_0x1f2122){if(!_0x1f2122||!_0x1f2122[_0x80c7('0x6e')]['length']){return'';}for(var _0x12b838='(',_0x9cc63b=0x0;_0x9cc63b<_0x1f2122[_0x80c7('0x6e')][_0x80c7('0x41')];_0x9cc63b+=0x1){_0x9cc63b>0x0&&(_0x12b838+='\x20'+_0x1f2122[_0x80c7('0x6f')]+'\x20');_0x12b838+=_0x1f2122[_0x80c7('0x6e')][_0x9cc63b][_0x80c7('0x70')]?_0x22b0b8(_0x1f2122[_0x80c7('0x6e')][_0x9cc63b][_0x80c7('0x70')]):_0x1f2122[_0x80c7('0x6e')][_0x9cc63b]['field']+'\x20'+_0x1f2122[_0x80c7('0x6e')][_0x9cc63b][_0x80c7('0x72')]+(_0x43bc3f(_0x1f2122[_0x80c7('0x6e')][_0x9cc63b]['condition'])?'\x20'+_0x1f2122['rules'][_0x9cc63b][_0x80c7('0x73')]:'');}return _0x12b838+')';};var _0x22bfd2={'where':{'id':_0x30277f['params']['id']}},_0x2c7434,_0x2f176a,_0x380fb3,_0x2d8b35,_0x283a95;_0x22bfd2=_[_0x80c7('0x46')]({},_0x22bfd2,_0x30277f[_0x80c7('0x48')]);return db[_0x80c7('0x36')]['find'](_0x22bfd2)[_0x80c7('0x2b')](function(_0x567787){if(_0x567787){_0x2c7434=_0x567787;return _0x567787[_0x80c7('0x74')]();}return null;})['then'](function(_0x4d0e7f){if(_0x4d0e7f){if(!_0x4d0e7f['length']){throw new db['Sequelize'][(_0x80c7('0x76'))](_0x80c7('0x90'),0x193);}_0x2f176a=_0x4d0e7f;return db[_0x80c7('0x91')][_0x80c7('0x4a')]({'raw':!![]});}return null;})[_0x80c7('0x2b')](function(_0x1690e3){if(_0x1690e3){_0x380fb3=_[_0x80c7('0x77')](_0x1690e3,'id');var _0x58a4d1;var _0x55d669=squel[_0x80c7('0x78')]();_0x55d669[_0x80c7('0x92')](_0x2c7434[_0x80c7('0x87')]);for(var _0x35c819=0x0;_0x35c819<_0x2f176a[_0x80c7('0x41')];_0x35c819+=0x1){_0x58a4d1=_0x2f176a[_0x35c819][_0x80c7('0x79')]?_0x380fb3[_0x2f176a[_0x35c819]['MetricId']][_0x80c7('0xab')]:_0x2f176a[_0x35c819]['field'];_0x58a4d1=_0x2f176a[_0x35c819][_0x80c7('0x7a')]?_[_0x80c7('0x7b')](_0x5b6ca9[_0x2f176a[_0x35c819][_0x80c7('0x7a')]],'%s',_0x58a4d1):_0x58a4d1;_0x58a4d1=_0x2f176a[_0x35c819]['format']?_[_0x80c7('0x7b')](_0x2e5918[_0x2f176a[_0x35c819][_0x80c7('0x7c')]],'%s',_0x58a4d1):_0x58a4d1;if(_0x2f176a[_0x35c819]['groupBy']){_0x55d669[_0x80c7('0x70')](_0x58a4d1);}_0x2f176a[_0x35c819][_0x80c7('0x7e')]&&_0x55d669[_0x80c7('0x93')](_0x58a4d1,_0x2f176a[_0x35c819][_0x80c7('0x7e')]===_0x80c7('0x7f')?![]:!![]);_0x55d669[_0x80c7('0x71')](_0x58a4d1,_0x2f176a[_0x35c819]['alias']||_0x58a4d1);}if(_0x2c7434[_0x80c7('0x81')]){_0x2c7434['joins']=JSON[_0x80c7('0x82')](_0x2c7434['joins']);for(var _0x1958df=0x0;_0x1958df<_0x2c7434[_0x80c7('0x81')][_0x80c7('0x41')];_0x1958df+=0x1){if(_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x38')]&&_['includes'](_0x3fd5c3,_0x2c7434[_0x80c7('0x81')][_0x1958df]['type'])&&_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x84')]&&_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x86')]&&_0x2c7434['joins'][_0x1958df][_0x80c7('0x85')]){_0x55d669[_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x38')]](_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x86')],null,util[_0x80c7('0x7c')](_0x80c7('0x94'),_0x2c7434[_0x80c7('0x87')],_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x84')],_0x2c7434[_0x80c7('0x81')][_0x1958df]['foreignTable'],_0x2c7434[_0x80c7('0x81')][_0x1958df][_0x80c7('0x85')]));}}}if(_0x2c7434[_0x80c7('0x88')]){_0x2c7434[_0x80c7('0x88')]=JSON[_0x80c7('0x82')](_0x2c7434[_0x80c7('0x88')]);_0x55d669[_0x80c7('0x45')](_0x22b0b8(_0x2c7434[_0x80c7('0x88')][_0x80c7('0x70')]));}_0x283a95=_0x55d669[_0x80c7('0x89')]();_0x55d669[_0x80c7('0x25')](_0x59b82c);_0x55d669[_0x80c7('0x22')](0x0);logger[_0x80c7('0x8a')]('Limited\x20Query:',_0x55d669['toString']());return dbH[_0x80c7('0x8b')][_0x80c7('0x3c')](_0x55d669[_0x80c7('0xa1')](),{'type':dbH[_0x80c7('0x8b')]['QueryTypes'][_0x80c7('0x8d')]});}})[_0x80c7('0x2b')](function(){return{'sql':_0x283a95[_0x80c7('0xa1')]()};})[_0x80c7('0x2b')](respondWithResult(_0x2d5bda,null))[_0x80c7('0x4c')](handleError(_0x2d5bda,null));};
\ No newline at end of file
+var _0xfeba=['model','attributes','length','hasOwnProperty','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','rows','catch','params','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','UserProfileSection','userProfileId','autoAssociation','update','preview','join','left_join','right_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','getFields','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','findAll','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','Limited\x20Query:','sequelize','QueryTypes','SELECT','cross_join','SUM(%s)','MAX(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','UNIX_TIMESTAMP(%s)','IS\x20NOT\x20NULL','Sequelize','groupBy','output','web','fullPath','%s-%s.%s','randomstring','generate','csv','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','Run\x20Query:','toString','fork','../../files/reports','countTable','COUNT(*)','run','debug','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','limit','undefined','count','offset','Content-Range','reject','save','then','destroy','get','CustomReports','UserProfileResource','error','name','send','index','map','AnalyticCustomReport','rawAttributes','fieldName','type','query','keys','filters','intersection'];(function(_0x34cb01,_0x33f019){var _0x1b79f2=function(_0x296205){while(--_0x296205){_0x34cb01['push'](_0x34cb01['shift']());}};_0x1b79f2(++_0x33f019);}(_0xfeba,0x6f));var _0xafeb=function(_0x5ca8b2,_0x15b273){_0x5ca8b2=_0x5ca8b2-0x0;var _0x104be5=_0xfeba[_0x5ca8b2];return _0x104be5;};'use strict';var emlformat=require(_0xafeb('0x0'));var rimraf=require(_0xafeb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xafeb('0x2'));var rp=require(_0xafeb('0x3'));var moment=require(_0xafeb('0x4'));var BPromise=require(_0xafeb('0x5'));var Mustache=require(_0xafeb('0x6'));var util=require(_0xafeb('0x7'));var path=require('path');var sox=require(_0xafeb('0x8'));var csv=require('to-csv');var ejs=require(_0xafeb('0x9'));var fs=require('fs');var fs_extra=require(_0xafeb('0xa'));var _=require(_0xafeb('0xb'));var squel=require(_0xafeb('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xafeb('0xd'));var toCsv=require(_0xafeb('0xe'));var querystring=require(_0xafeb('0xf'));var Papa=require(_0xafeb('0x10'));var Redis=require(_0xafeb('0x11'));var authService=require(_0xafeb('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xafeb('0x13'));var hardwareService=require(_0xafeb('0x14'));var logger=require(_0xafeb('0x15'))(_0xafeb('0x16'));var utils=require(_0xafeb('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xafeb('0x18'));var db=require('../../mysqldb')['db'];var dbH=require(_0xafeb('0x19'))[_0xafeb('0x1a')];function respondWithStatusCode(_0x44e2d3,_0x56aa48){_0x56aa48=_0x56aa48||0xcc;return function(_0x2faa97){if(_0x2faa97){return _0x44e2d3[_0xafeb('0x1b')](_0x56aa48);}return _0x44e2d3['status'](_0x56aa48)[_0xafeb('0x1c')]();};}function respondWithResult(_0x513bce,_0x540d1c){_0x540d1c=_0x540d1c||0xc8;return function(_0x4b49e5){if(_0x4b49e5){return _0x513bce[_0xafeb('0x1d')](_0x540d1c)[_0xafeb('0x1e')](_0x4b49e5);}};}function respondWithFilteredResult(_0x3d19c3,_0x535a3d){return function(_0x377656){if(_0x377656){var _0x145cc9=typeof _0x535a3d['offset']==='undefined'&&typeof _0x535a3d[_0xafeb('0x1f')]===_0xafeb('0x20');var _0x2b1042=_0x377656[_0xafeb('0x21')];var _0x179161=_0x145cc9?0x0:_0x535a3d[_0xafeb('0x22')];var _0x510663=_0x145cc9?_0x377656[_0xafeb('0x21')]:_0x535a3d['offset']+_0x535a3d['limit'];var _0x24d0b2;if(_0x510663>=_0x2b1042){_0x510663=_0x2b1042;_0x24d0b2=0xc8;}else{_0x24d0b2=0xce;}_0x3d19c3[_0xafeb('0x1d')](_0x24d0b2);return _0x3d19c3['set'](_0xafeb('0x23'),_0x179161+'-'+_0x510663+'/'+_0x2b1042)[_0xafeb('0x1e')](_0x377656);}return null;};}function patchUpdates(_0x136153){return function(_0x1c8cb3){try{jsonpatch['apply'](_0x1c8cb3,_0x136153,!![]);}catch(_0xe19149){return BPromise[_0xafeb('0x24')](_0xe19149);}return _0x1c8cb3[_0xafeb('0x25')]();};}function saveUpdates(_0x2bc27d,_0x581de7){return function(_0x3ee063){if(_0x3ee063){return _0x3ee063['update'](_0x2bc27d)[_0xafeb('0x26')](function(_0x46e9d5){return _0x46e9d5;});}return null;};}function removeEntity(_0x472c41,_0x511ad0){return function(_0x2c9d10){if(_0x2c9d10){return _0x2c9d10[_0xafeb('0x27')]()[_0xafeb('0x26')](function(){var _0x515bb7=_0x2c9d10[_0xafeb('0x28')]({'plain':!![]});var _0x5a869e=_0xafeb('0x29');return db[_0xafeb('0x2a')]['destroy']({'where':{'type':_0x5a869e,'resourceId':_0x515bb7['id']}})[_0xafeb('0x26')](function(){return _0x2c9d10;});})[_0xafeb('0x26')](function(){_0x472c41[_0xafeb('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x358093,_0x2ac76c){return function(_0x4a3504){if(!_0x4a3504){_0x358093[_0xafeb('0x1b')](0x194);}return _0x4a3504;};}function handleError(_0x381c91,_0x2bea3c){_0x2bea3c=_0x2bea3c||0x1f4;return function(_0x43d4fa){logger[_0xafeb('0x2b')](_0x43d4fa['stack']);if(_0x43d4fa[_0xafeb('0x2c')]){delete _0x43d4fa['name'];}_0x381c91[_0xafeb('0x1d')](_0x2bea3c)[_0xafeb('0x2d')](_0x43d4fa);};}exports[_0xafeb('0x2e')]=function(_0x3c81da,_0x29b8cf){var _0x12ab93={},_0x18826f={},_0x48e0ad={'count':0x0,'rows':[]};var _0x58a051=_[_0xafeb('0x2f')](db[_0xafeb('0x30')][_0xafeb('0x31')],function(_0x556ab2){return{'name':_0x556ab2[_0xafeb('0x32')],'type':_0x556ab2[_0xafeb('0x33')]['key']};});_0x18826f['model']=_['map'](_0x58a051,_0xafeb('0x2c'));_0x18826f[_0xafeb('0x34')]=_[_0xafeb('0x35')](_0x3c81da[_0xafeb('0x34')]);_0x18826f[_0xafeb('0x36')]=_[_0xafeb('0x37')](_0x18826f[_0xafeb('0x38')],_0x18826f[_0xafeb('0x34')]);_0x12ab93['attributes']=_['intersection'](_0x18826f[_0xafeb('0x38')],qs['fields'](_0x3c81da[_0xafeb('0x34')]['fields']));_0x12ab93[_0xafeb('0x39')]=_0x12ab93['attributes'][_0xafeb('0x3a')]?_0x12ab93['attributes']:_0x18826f[_0xafeb('0x38')];if(!_0x3c81da[_0xafeb('0x34')][_0xafeb('0x3b')]('nolimit')){_0x12ab93[_0xafeb('0x1f')]=qs[_0xafeb('0x1f')](_0x3c81da[_0xafeb('0x34')][_0xafeb('0x1f')]);_0x12ab93[_0xafeb('0x22')]=qs[_0xafeb('0x22')](_0x3c81da[_0xafeb('0x34')]['offset']);}_0x12ab93[_0xafeb('0x3c')]=qs[_0xafeb('0x3d')](_0x3c81da[_0xafeb('0x34')][_0xafeb('0x3d')]);_0x12ab93['where']=qs[_0xafeb('0x36')](_['pick'](_0x3c81da['query'],_0x18826f[_0xafeb('0x36')]),_0x58a051);if(_0x3c81da['query'][_0xafeb('0x3e')]){_0x12ab93['where']=_[_0xafeb('0x3f')](_0x12ab93[_0xafeb('0x40')],{'$or':_[_0xafeb('0x2f')](_0x58a051,function(_0x12ff90){if(_0x12ff90[_0xafeb('0x33')]!==_0xafeb('0x41')){var _0x46ad62={};_0x46ad62[_0x12ff90[_0xafeb('0x2c')]]={'$like':'%'+_0x3c81da[_0xafeb('0x34')]['filter']+'%'};return _0x46ad62;}})});}_0x12ab93=_[_0xafeb('0x3f')]({},_0x12ab93,_0x3c81da[_0xafeb('0x42')]);var _0x1decf1={'where':_0x12ab93[_0xafeb('0x40')]};return db[_0xafeb('0x30')][_0xafeb('0x21')](_0x1decf1)[_0xafeb('0x26')](function(_0x5c5d17){_0x48e0ad[_0xafeb('0x21')]=_0x5c5d17;if(_0x3c81da[_0xafeb('0x34')][_0xafeb('0x43')]){_0x12ab93[_0xafeb('0x44')]=[{'all':!![]}];}return db['AnalyticCustomReport']['findAll'](_0x12ab93);})[_0xafeb('0x26')](function(_0x577d8d){_0x48e0ad[_0xafeb('0x45')]=_0x577d8d;return _0x48e0ad;})[_0xafeb('0x26')](respondWithFilteredResult(_0x29b8cf,_0x12ab93))[_0xafeb('0x46')](handleError(_0x29b8cf,null));};exports['show']=function(_0x17a644,_0x539dec){var _0x3a306c={'raw':![],'where':{'id':_0x17a644[_0xafeb('0x47')]['id']}},_0x33ef3a={};_0x33ef3a['model']=_[_0xafeb('0x35')](db[_0xafeb('0x30')][_0xafeb('0x31')]);_0x33ef3a[_0xafeb('0x34')]=_[_0xafeb('0x35')](_0x17a644[_0xafeb('0x34')]);_0x33ef3a[_0xafeb('0x36')]=_[_0xafeb('0x37')](_0x33ef3a[_0xafeb('0x38')],_0x33ef3a[_0xafeb('0x34')]);_0x3a306c[_0xafeb('0x39')]=_['intersection'](_0x33ef3a[_0xafeb('0x38')],qs[_0xafeb('0x48')](_0x17a644[_0xafeb('0x34')]['fields']));_0x3a306c[_0xafeb('0x39')]=_0x3a306c[_0xafeb('0x39')]['length']?_0x3a306c[_0xafeb('0x39')]:_0x33ef3a['model'];if(_0x17a644[_0xafeb('0x34')][_0xafeb('0x43')]){_0x3a306c['include']=[{'all':!![]}];}_0x3a306c=_['merge']({},_0x3a306c,_0x17a644[_0xafeb('0x42')]);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x3a306c)[_0xafeb('0x26')](handleEntityNotFound(_0x539dec,null))[_0xafeb('0x26')](respondWithResult(_0x539dec,null))[_0xafeb('0x46')](handleError(_0x539dec,null));};exports[_0xafeb('0x4a')]=function(_0x1301ee,_0x14214b){return db[_0xafeb('0x30')][_0xafeb('0x4a')](_0x1301ee[_0xafeb('0x4b')],{})['then'](function(_0x1e8a66){var _0x4676b5=_0x1301ee[_0xafeb('0x4c')][_0xafeb('0x28')]({'plain':!![]});if(!_0x4676b5)throw new Error(_0xafeb('0x4d'));if(_0x4676b5[_0xafeb('0x4e')]==='user'){var _0x49f840=_0x1e8a66[_0xafeb('0x28')]({'plain':!![]});var _0x532054=_0xafeb('0x4f');return db[_0xafeb('0x50')][_0xafeb('0x49')]({'where':{'name':_0x532054,'userProfileId':_0x4676b5[_0xafeb('0x51')]},'raw':!![]})[_0xafeb('0x26')](function(_0x410a6c){if(_0x410a6c&&_0x410a6c[_0xafeb('0x52')]===0x0){return db[_0xafeb('0x2a')][_0xafeb('0x4a')]({'name':_0x49f840[_0xafeb('0x2c')],'resourceId':_0x49f840['id'],'type':_0xafeb('0x29'),'sectionId':_0x410a6c['id']},{})[_0xafeb('0x26')](function(){return _0x1e8a66;});}else{return _0x1e8a66;}})[_0xafeb('0x46')](function(_0x1eacea){logger[_0xafeb('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1eacea);throw _0x1eacea;});}return _0x1e8a66;})[_0xafeb('0x26')](respondWithResult(_0x14214b,0xc9))[_0xafeb('0x46')](handleError(_0x14214b,null));};exports[_0xafeb('0x53')]=function(_0x4b11ec,_0x1515cc){if(_0x4b11ec[_0xafeb('0x4b')]['id']){delete _0x4b11ec['body']['id'];}return db[_0xafeb('0x30')][_0xafeb('0x49')]({'where':{'id':_0x4b11ec[_0xafeb('0x47')]['id']}})['then'](handleEntityNotFound(_0x1515cc,null))[_0xafeb('0x26')](saveUpdates(_0x4b11ec[_0xafeb('0x4b')],null))[_0xafeb('0x26')](respondWithResult(_0x1515cc,null))[_0xafeb('0x46')](handleError(_0x1515cc,null));};exports[_0xafeb('0x27')]=function(_0x224d3f,_0x174bf2){return db[_0xafeb('0x30')][_0xafeb('0x49')]({'where':{'id':_0x224d3f[_0xafeb('0x47')]['id']}})['then'](handleEntityNotFound(_0x174bf2,null))[_0xafeb('0x26')](removeEntity(_0x174bf2,null))[_0xafeb('0x46')](handleError(_0x174bf2,null));};exports[_0xafeb('0x54')]=function(_0x23b7b0,_0x3d49d1){var _0x2ba30a=0xa;var _0x135972=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),'cross_join'];var _0x367c78={'SUM':'SUM(%s)','COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':'MAX(%s)','MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xafeb('0x5c'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x119308={'SEC_TO_TIME':_0xafeb('0x5d'),'DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2f48dd=function(_0x53814e){return!_[_0xafeb('0x61')]([_0xafeb('0x62'),'IS\x20NOT\x20NULL',_0xafeb('0x63'),_0xafeb('0x64')],_0x53814e);};var _0x458ede=function(_0x337b83){if(!_0x337b83||!_0x337b83['rules'][_0xafeb('0x3a')]){return'';}for(var _0x10c044='(',_0x33c81e=0x0;_0x33c81e<_0x337b83[_0xafeb('0x65')][_0xafeb('0x3a')];_0x33c81e+=0x1){_0x33c81e>0x0&&(_0x10c044+='\x20'+_0x337b83[_0xafeb('0x66')]+'\x20');_0x10c044+=_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x67')]?_0x458ede(_0x337b83['rules'][_0x33c81e][_0xafeb('0x67')]):_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x68')]+'\x20'+_0x337b83[_0xafeb('0x65')][_0x33c81e]['condition']+(_0x2f48dd(_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x69')])?'\x20'+_0x337b83[_0xafeb('0x65')][_0x33c81e][_0xafeb('0x6a')]:'');}return _0x10c044+')';};var _0x437433={'where':{'id':_0x23b7b0['params']['id']}},_0x21da0f,_0x4de145,_0x5d5f4b,_0x19d67e,_0x2f8e4e;_0x437433=_['merge']({},_0x437433,_0x23b7b0[_0xafeb('0x42')]);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x437433)[_0xafeb('0x26')](function(_0x10a980){if(_0x10a980){_0x21da0f=_0x10a980;return _0x10a980[_0xafeb('0x6b')]();}return null;})['then'](function(_0x34cf78){if(_0x34cf78){if(!_0x34cf78[_0xafeb('0x3a')]){throw new db['Sequelize'][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0x4de145=_0x34cf78;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})['then'](function(_0x3b9ce8){if(_0x3b9ce8){_0x5d5f4b=_[_0xafeb('0x70')](_0x3b9ce8,'id');var _0x3fd46c;var _0x2c91a9=squel[_0xafeb('0x71')]();_0x2c91a9[_0xafeb('0x72')](_0x21da0f[_0xafeb('0x73')]);for(var _0x23c89f=0x0;_0x23c89f<_0x4de145[_0xafeb('0x3a')];_0x23c89f+=0x1){_0x3fd46c=_0x4de145[_0x23c89f][_0xafeb('0x74')]?_0x5d5f4b[_0x4de145[_0x23c89f][_0xafeb('0x74')]][_0xafeb('0x75')]:_0x4de145[_0x23c89f]['field'];_0x3fd46c=_0x4de145[_0x23c89f][_0xafeb('0x76')]?_[_0xafeb('0x77')](_0x367c78[_0x4de145[_0x23c89f][_0xafeb('0x76')]],'%s',_0x3fd46c):_0x3fd46c;_0x3fd46c=_0x4de145[_0x23c89f]['format']?_[_0xafeb('0x77')](_0x119308[_0x4de145[_0x23c89f][_0xafeb('0x78')]],'%s',_0x3fd46c):_0x3fd46c;if(_0x4de145[_0x23c89f]['groupBy']){_0x2c91a9[_0xafeb('0x67')](_0x3fd46c);}_0x4de145[_0x23c89f][_0xafeb('0x79')]&&_0x2c91a9[_0xafeb('0x3c')](_0x3fd46c,_0x4de145[_0x23c89f][_0xafeb('0x79')]===_0xafeb('0x7a')?![]:!![]);_0x2c91a9[_0xafeb('0x68')](_0x3fd46c,_0x4de145[_0x23c89f][_0xafeb('0x7b')]||_0x3fd46c);}if(_0x21da0f['joins']){_0x21da0f[_0xafeb('0x7c')]=JSON[_0xafeb('0x7d')](_0x21da0f[_0xafeb('0x7c')]);for(var _0x3ec256=0x0;_0x3ec256<_0x21da0f['joins'][_0xafeb('0x3a')];_0x3ec256+=0x1){if(_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x135972,_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x33')])&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256]['parentKey']&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7e')]&&_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7f')]){_0x2c91a9[_0x21da0f['joins'][_0x3ec256][_0xafeb('0x33')]](_0x21da0f[_0xafeb('0x7c')][_0x3ec256]['foreignTable'],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x21da0f['table'],_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x81')],_0x21da0f['joins'][_0x3ec256][_0xafeb('0x7e')],_0x21da0f[_0xafeb('0x7c')][_0x3ec256][_0xafeb('0x7f')]));}}}if(_0x21da0f[_0xafeb('0x82')]){_0x21da0f[_0xafeb('0x82')]=JSON[_0xafeb('0x7d')](_0x21da0f[_0xafeb('0x82')]);_0x2c91a9[_0xafeb('0x40')](_0x458ede(_0x21da0f[_0xafeb('0x82')]['group']));}_0x2f8e4e=_0x2c91a9[_0xafeb('0x83')]();_0x2c91a9[_0xafeb('0x1f')](_0x2ba30a);_0x2c91a9[_0xafeb('0x22')](0x0);logger['debug'](_0xafeb('0x84'),_0x2c91a9['toString']());return dbH[_0xafeb('0x85')]['query'](_0x2c91a9['toString'](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]});}})[_0xafeb('0x26')](respondWithResult(_0x3d49d1,null))[_0xafeb('0x46')](handleError(_0x3d49d1,null));};function runReport(_0x117b81,_0x94dd4c,_0x7d08c){var _0x2ac9e4=_0x94dd4c[_0xafeb('0x2c')];var _0x517a3b=0xa;var _0x15cb34=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),_0xafeb('0x88')];var _0x4dc7cc={'SUM':_0xafeb('0x89'),'COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':_0xafeb('0x8a'),'MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':_0xafeb('0x8b'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xafeb('0x8c')};var _0x3464d2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':_0xafeb('0x8d')};var _0x4d7530=function(_0x47cb83){return!_['includes']([_0xafeb('0x62'),_0xafeb('0x8e'),_0xafeb('0x63'),_0xafeb('0x64')],_0x47cb83);};var _0x207036=function(_0x37cbe2){if(!_0x37cbe2||!_0x37cbe2[_0xafeb('0x65')][_0xafeb('0x3a')]){return'';}for(var _0x5d1203='(',_0x3511ef=0x0;_0x3511ef<_0x37cbe2[_0xafeb('0x65')][_0xafeb('0x3a')];_0x3511ef+=0x1){_0x3511ef>0x0&&(_0x5d1203+='\x20'+_0x37cbe2[_0xafeb('0x66')]+'\x20');_0x5d1203+=_0x37cbe2['rules'][_0x3511ef][_0xafeb('0x67')]?_0x207036(_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x67')]):_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x68')]+'\x20'+_0x37cbe2[_0xafeb('0x65')][_0x3511ef]['condition']+(_0x4d7530(_0x37cbe2['rules'][_0x3511ef][_0xafeb('0x69')])?'\x20'+_0x37cbe2[_0xafeb('0x65')][_0x3511ef][_0xafeb('0x6a')]:'');}return _0x5d1203+')';};var _0x146c87={'where':{'id':_0x117b81['id']}},_0x6381a1,_0xdd9a11,_0x5e36a3,_0x50639b,_0x231deb;_0x146c87=_['merge']({},_0x146c87,_0x7d08c);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x146c87)[_0xafeb('0x26')](function(_0x546504){if(_0x546504){_0x6381a1=_0x546504;return _0x546504[_0xafeb('0x6b')]();}return null;})[_0xafeb('0x26')](function(_0x358c23){if(_0x358c23){if(!_0x358c23[_0xafeb('0x3a')]){throw new db[(_0xafeb('0x8f'))][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0xdd9a11=_0x358c23;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})[_0xafeb('0x26')](function(_0x188dcc){if(_0x188dcc){_0x5e36a3=_[_0xafeb('0x70')](_0x188dcc,'id');var _0x1d5358;var _0xf3fa93=squel[_0xafeb('0x71')]();_0xf3fa93[_0xafeb('0x72')](_0x6381a1[_0xafeb('0x73')]);for(var _0x340ee4=0x0;_0x340ee4<_0xdd9a11[_0xafeb('0x3a')];_0x340ee4+=0x1){_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x74')]?_0x5e36a3[_0xdd9a11[_0x340ee4][_0xafeb('0x74')]][_0xafeb('0x75')]:_0xdd9a11[_0x340ee4]['field'];_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x76')]?_['replace'](_0x4dc7cc[_0xdd9a11[_0x340ee4][_0xafeb('0x76')]],'%s',_0x1d5358):_0x1d5358;_0x1d5358=_0xdd9a11[_0x340ee4][_0xafeb('0x78')]?_[_0xafeb('0x77')](_0x3464d2[_0xdd9a11[_0x340ee4]['format']],'%s',_0x1d5358):_0x1d5358;if(_0xdd9a11[_0x340ee4][_0xafeb('0x90')]){_0xf3fa93[_0xafeb('0x67')](_0x1d5358);}_0xdd9a11[_0x340ee4]['orderBy']&&_0xf3fa93[_0xafeb('0x3c')](_0x1d5358,_0xdd9a11[_0x340ee4]['orderBy']==='DESC'?![]:!![]);_0xf3fa93[_0xafeb('0x68')](_0x1d5358,_0xdd9a11[_0x340ee4]['alias']||_0x1d5358);}if(_0x6381a1[_0xafeb('0x7c')]){_0x6381a1[_0xafeb('0x7c')]=JSON[_0xafeb('0x7d')](_0x6381a1[_0xafeb('0x7c')]);for(var _0x2f95cb=0x0;_0x2f95cb<_0x6381a1['joins']['length'];_0x2f95cb+=0x1){if(_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x15cb34,_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x33')])&&_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x81')]&&_0x6381a1[_0xafeb('0x7c')][_0x2f95cb]['foreignTable']&&_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x7f')]){_0xf3fa93[_0x6381a1['joins'][_0x2f95cb]['type']](_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x7e')],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x6381a1[_0xafeb('0x73')],_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x81')],_0x6381a1[_0xafeb('0x7c')][_0x2f95cb][_0xafeb('0x7e')],_0x6381a1['joins'][_0x2f95cb][_0xafeb('0x7f')]));}}}if(_0x6381a1[_0xafeb('0x82')]){_0x6381a1[_0xafeb('0x82')]=JSON[_0xafeb('0x7d')](_0x6381a1[_0xafeb('0x82')]);_0xf3fa93[_0xafeb('0x40')](_0x207036(_0x6381a1[_0xafeb('0x82')][_0xafeb('0x67')]));}_0x231deb=_0xf3fa93[_0xafeb('0x83')]();_0xf3fa93[_0xafeb('0x1f')](_0x517a3b);_0xf3fa93[_0xafeb('0x22')](0x0);return;}})['then'](function(){if(_0x94dd4c[_0xafeb('0x91')]===_0xafeb('0x92')){return null;}var _0xaaab89=_[_0xafeb('0x3f')](_0x94dd4c,{'name':_0x94dd4c[_0xafeb('0x93')]||_0x94dd4c[_0xafeb('0x2c')]||_0x6381a1[_0xafeb('0x2c')],'basename':_0x2ac9e4,'savename':util[_0xafeb('0x78')](_0xafeb('0x94'),_0x94dd4c[_0xafeb('0x2c')]||_0x6381a1[_0xafeb('0x2c')],require(_0xafeb('0x95'))[_0xafeb('0x96')](0x4),_0x94dd4c[_0xafeb('0x91')]||_0xafeb('0x97')),'reportId':_0x6381a1['id'],'reportType':'custom'});return db[_0xafeb('0x98')][_0xafeb('0x4a')](_0xaaab89,{'raw':!![]});})[_0xafeb('0x26')](function(_0xed5737){if(_0x6381a1[_0xafeb('0x73')]===_0xafeb('0x99')){_0x231deb[_0xafeb('0x40')](_0x6381a1[_0xafeb('0x73')]+_0xafeb('0x9a'),_0x94dd4c[_0xafeb('0x9b')],_0x94dd4c[_0xafeb('0x9c')]);}else{_0x231deb['where'](_0x6381a1[_0xafeb('0x73')]+_0xafeb('0x9d'),_0x94dd4c['startDate'],_0x94dd4c[_0xafeb('0x9c')]);}if(_0xed5737){logger[_0xafeb('0x9e')](_0xafeb('0x9f'),_0x231deb[_0xafeb('0xa0')]());require('child_process')[_0xafeb('0xa1')](path[_0xafeb('0x55')](__dirname,'../../components/export/',_0xed5737[_0xafeb('0x91')]),[_0xed5737['id'],_0x231deb[_0xafeb('0xa0')](),path[_0xafeb('0x55')](__dirname,_0xafeb('0xa2'),_0xed5737['savename']),_0x2ac9e4]);return _0xed5737;}else{var _0x4a90da=squel['select']();_0x4a90da[_0xafeb('0x72')]('('+_0x231deb[_0xafeb('0xa0')]()+')',_0xafeb('0xa3'));_0x4a90da[_0xafeb('0x68')](_0xafeb('0xa4'),_0xafeb('0x21'));_0x231deb['limit'](_0x94dd4c['limit']||_0x517a3b);_0x231deb[_0xafeb('0x22')](_0x94dd4c[_0xafeb('0x22')]||0x0);return dbH[_0xafeb('0x85')][_0xafeb('0x34')](_0x4a90da[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]})[_0xafeb('0x26')](function(_0x367093){if(!_0x367093['length']){_0x50639b=0x0;}else{_0x50639b=_0x367093[0x0][_0xafeb('0x21')]||0x0;}return dbH[_0xafeb('0x85')]['query'](_0x231deb[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')]['SELECT']});})[_0xafeb('0x26')](function(_0x30d36a){return{'rows':_0x30d36a||[],'count':_0x50639b};});}});}exports[_0xafeb('0xa5')]=function(_0x35ad9f,_0x2bfe28){return runReport(_0x35ad9f[_0xafeb('0x47')],_0x35ad9f[_0xafeb('0x34')],_0x35ad9f[_0xafeb('0x42')])[_0xafeb('0x26')](respondWithResult(_0x2bfe28,null))[_0xafeb('0x46')](handleError(_0x2bfe28,null));};exports['runReport']=runReport;exports[_0xafeb('0x34')]=function(_0x41d6c0,_0x47c20e){var _0x438068=0xa;var _0x4c8274=[_0xafeb('0x55'),_0xafeb('0x56'),_0xafeb('0x57'),'cross_join'];var _0x5ef461={'SUM':_0xafeb('0x89'),'COUNT':_0xafeb('0x58'),'COUNT DISTINCT':_0xafeb('0x59'),'MAX':_0xafeb('0x8a'),'MIN':_0xafeb('0x5a'),'AVG':_0xafeb('0x5b'),'GROUP_CONCAT':_0xafeb('0x8b'),'GROUP_CONCAT ASC':_0xafeb('0x5c'),'GROUP_CONCAT DESC':_0xafeb('0x8c')};var _0x3f6ad7={'SEC_TO_TIME':_0xafeb('0x5d'),'DATE':_0xafeb('0x5e'),'HOUR':_0xafeb('0x5f'),'ROUND':_0xafeb('0x60'),'UNIX_TIMESTAMP':_0xafeb('0x8d')};var _0x4f51d5=function(_0x5ed8ee){return!_[_0xafeb('0x61')]([_0xafeb('0x62'),_0xafeb('0x8e'),_0xafeb('0x63'),_0xafeb('0x64')],_0x5ed8ee);};var _0x53b603=function(_0x2934c5){if(!_0x2934c5||!_0x2934c5[_0xafeb('0x65')][_0xafeb('0x3a')]){return'';}for(var _0x18b16f='(',_0x2f58de=0x0;_0x2f58de<_0x2934c5[_0xafeb('0x65')]['length'];_0x2f58de+=0x1){_0x2f58de>0x0&&(_0x18b16f+='\x20'+_0x2934c5[_0xafeb('0x66')]+'\x20');_0x18b16f+=_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x67')]?_0x53b603(_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x67')]):_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x68')]+'\x20'+_0x2934c5[_0xafeb('0x65')][_0x2f58de]['condition']+(_0x4f51d5(_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x69')])?'\x20'+_0x2934c5[_0xafeb('0x65')][_0x2f58de][_0xafeb('0x6a')]:'');}return _0x18b16f+')';};var _0x2db133={'where':{'id':_0x41d6c0[_0xafeb('0x47')]['id']}},_0x52005b,_0x8e75de,_0xb2d4e4,_0x4dbb7a,_0x36b226;_0x2db133=_[_0xafeb('0x3f')]({},_0x2db133,_0x41d6c0['options']);return db[_0xafeb('0x30')][_0xafeb('0x49')](_0x2db133)[_0xafeb('0x26')](function(_0x236cf2){if(_0x236cf2){_0x52005b=_0x236cf2;return _0x236cf2['getFields']();}return null;})['then'](function(_0x570fc3){if(_0x570fc3){if(!_0x570fc3[_0xafeb('0x3a')]){throw new db[(_0xafeb('0x8f'))][(_0xafeb('0x6c'))](_0xafeb('0x6d'),0x193);}_0x8e75de=_0x570fc3;return db[_0xafeb('0x6e')][_0xafeb('0x6f')]({'raw':!![]});}return null;})[_0xafeb('0x26')](function(_0x47df9c){if(_0x47df9c){_0xb2d4e4=_[_0xafeb('0x70')](_0x47df9c,'id');var _0x5a9c8a;var _0xcefe15=squel[_0xafeb('0x71')]();_0xcefe15['from'](_0x52005b['table']);for(var _0x127ea9=0x0;_0x127ea9<_0x8e75de[_0xafeb('0x3a')];_0x127ea9+=0x1){_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x74')]?_0xb2d4e4[_0x8e75de[_0x127ea9]['MetricId']]['metric']:_0x8e75de[_0x127ea9][_0xafeb('0x68')];_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x76')]?_[_0xafeb('0x77')](_0x5ef461[_0x8e75de[_0x127ea9][_0xafeb('0x76')]],'%s',_0x5a9c8a):_0x5a9c8a;_0x5a9c8a=_0x8e75de[_0x127ea9][_0xafeb('0x78')]?_[_0xafeb('0x77')](_0x3f6ad7[_0x8e75de[_0x127ea9][_0xafeb('0x78')]],'%s',_0x5a9c8a):_0x5a9c8a;if(_0x8e75de[_0x127ea9][_0xafeb('0x90')]){_0xcefe15[_0xafeb('0x67')](_0x5a9c8a);}_0x8e75de[_0x127ea9][_0xafeb('0x79')]&&_0xcefe15[_0xafeb('0x3c')](_0x5a9c8a,_0x8e75de[_0x127ea9][_0xafeb('0x79')]===_0xafeb('0x7a')?![]:!![]);_0xcefe15[_0xafeb('0x68')](_0x5a9c8a,_0x8e75de[_0x127ea9]['alias']||_0x5a9c8a);}if(_0x52005b[_0xafeb('0x7c')]){_0x52005b['joins']=JSON[_0xafeb('0x7d')](_0x52005b[_0xafeb('0x7c')]);for(var _0x1bf991=0x0;_0x1bf991<_0x52005b[_0xafeb('0x7c')][_0xafeb('0x3a')];_0x1bf991+=0x1){if(_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')]&&_[_0xafeb('0x61')](_0x4c8274,_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')])&&_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x81')]&&_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignTable']&&_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x7f')]){_0xcefe15[_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x33')]](_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x7e')],null,util[_0xafeb('0x78')](_0xafeb('0x80'),_0x52005b[_0xafeb('0x73')],_0x52005b[_0xafeb('0x7c')][_0x1bf991][_0xafeb('0x81')],_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignTable'],_0x52005b[_0xafeb('0x7c')][_0x1bf991]['foreignKey']));}}}if(_0x52005b[_0xafeb('0x82')]){_0x52005b[_0xafeb('0x82')]=JSON['parse'](_0x52005b[_0xafeb('0x82')]);_0xcefe15[_0xafeb('0x40')](_0x53b603(_0x52005b[_0xafeb('0x82')][_0xafeb('0x67')]));}_0x36b226=_0xcefe15['clone']();_0xcefe15['limit'](_0x438068);_0xcefe15[_0xafeb('0x22')](0x0);logger[_0xafeb('0xa6')](_0xafeb('0x84'),_0xcefe15[_0xafeb('0xa0')]());return dbH[_0xafeb('0x85')][_0xafeb('0x34')](_0xcefe15[_0xafeb('0xa0')](),{'type':dbH[_0xafeb('0x85')][_0xafeb('0x86')][_0xafeb('0x87')]});}})[_0xafeb('0x26')](function(){return{'sql':_0x36b226[_0xafeb('0xa0')]()};})[_0xafeb('0x26')](respondWithResult(_0x47c20e,null))[_0xafeb('0x46')](handleError(_0x47c20e,null));};
\ No newline at end of file
index 7959f6f..f105e27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00db=['../../config/environment','./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x156c39,_0x144c39){var _0x508ed6=function(_0x1f588f){while(--_0x1f588f){_0x156c39['push'](_0x156c39['shift']());}};_0x508ed6(++_0x144c39);}(_0x00db,0x109));var _0xb00d=function(_0x562d0c,_0x4bb484){_0x562d0c=_0x562d0c-0x0;var _0x5207bb=_0x00db[_0x562d0c];return _0x5207bb;};'use strict';var _=require(_0xb00d('0x0'));var util=require(_0xb00d('0x1'));var logger=require(_0xb00d('0x2'))(_0xb00d('0x3'));var moment=require(_0xb00d('0x4'));var BPromise=require(_0xb00d('0x5'));var rp=require(_0xb00d('0x6'));var fs=require('fs');var path=require(_0xb00d('0x7'));var rimraf=require('rimraf');var config=require(_0xb00d('0x8'));var attributes=require(_0xb00d('0x9'));module[_0xb00d('0xa')]=function(_0x1d7c17,_0x3c3e82){return _0x1d7c17['define'](_0xb00d('0xb'),attributes,{'tableName':_0xb00d('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x54b9=['bluebird','request-promise','path','rimraf','../../config/environment','./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','util','../../config/logger','api'];(function(_0x1c4002,_0x190eef){var _0x434de9=function(_0x599aa6){while(--_0x599aa6){_0x1c4002['push'](_0x1c4002['shift']());}};_0x434de9(++_0x190eef);}(_0x54b9,0x134));var _0x954b=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x54b9[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0x954b('0x0'));var util=require(_0x954b('0x1'));var logger=require(_0x954b('0x2'))(_0x954b('0x3'));var moment=require('moment');var BPromise=require(_0x954b('0x4'));var rp=require(_0x954b('0x5'));var fs=require('fs');var path=require(_0x954b('0x6'));var rimraf=require(_0x954b('0x7'));var config=require(_0x954b('0x8'));var attributes=require(_0x954b('0x9'));module[_0x954b('0xa')]=function(_0x34600c,_0x20f4c0){return _0x34600c['define'](_0x954b('0xb'),attributes,{'tableName':_0x954b('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e744d41..fa41247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ec=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x59c301,_0x359c50){var _0x3866b9=function(_0x2d380e){while(--_0x2d380e){_0x59c301['push'](_0x59c301['shift']());}};_0x3866b9(++_0x359c50);}(_0xe6ec,0x19e));var _0xce6e=function(_0x3d8f4d,_0x4f52a3){_0x3d8f4d=_0x3d8f4d-0x0;var _0x37781f=_0xe6ec[_0x3d8f4d];return _0x37781f;};'use strict';var _=require(_0xce6e('0x0'));var util=require(_0xce6e('0x1'));var moment=require(_0xce6e('0x2'));var BPromise=require(_0xce6e('0x3'));var rs=require(_0xce6e('0x4'));var fs=require('fs');var Redis=require(_0xce6e('0x5'));var db=require(_0xce6e('0x6'))['db'];var utils=require(_0xce6e('0x7'));var logger=require(_0xce6e('0x8'))(_0xce6e('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xce6e('0xa')][_0xce6e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b6ffa,_0x33aa4a,_0x89217b){return new BPromise(function(_0x367ebd,_0x5b9b36){return client['request'](_0x2b6ffa,_0x89217b)[_0xce6e('0xc')](function(_0x338279){logger[_0xce6e('0xd')](_0xce6e('0xe'),_0x33aa4a,_0xce6e('0xf'));logger[_0xce6e('0x10')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x33aa4a,_0xce6e('0xf'),JSON['stringify'](_0x338279));if(_0x338279[_0xce6e('0x11')]){if(_0x338279['error']['code']===0x1f4){logger[_0xce6e('0x11')](_0xce6e('0xe'),_0x33aa4a,_0x338279[_0xce6e('0x11')]['message']);return _0x5b9b36(_0x338279['error']['message']);}logger[_0xce6e('0x11')](_0xce6e('0xe'),_0x33aa4a,_0x338279[_0xce6e('0x11')][_0xce6e('0x12')]);return _0x367ebd(_0x338279[_0xce6e('0x11')][_0xce6e('0x12')]);}else{logger[_0xce6e('0xd')]('AnalyticCustomReport,\x20%s,\x20%s',_0x33aa4a,_0xce6e('0xf'));_0x367ebd(_0x338279[_0xce6e('0x13')]['message']);}})[_0xce6e('0x14')](function(_0x7056a2){logger[_0xce6e('0x11')](_0xce6e('0xe'),_0x33aa4a,_0x7056a2);_0x5b9b36(_0x7056a2);});});}
\ No newline at end of file
+var _0x8210=['error','code','message','info','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','AnalyticCustomReport,\x20%s,\x20%s','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x8210,0x1ea));var _0x0821=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x8210[_0x279d37];return _0x530173;};'use strict';var _=require(_0x0821('0x0'));var util=require(_0x0821('0x1'));var moment=require(_0x0821('0x2'));var BPromise=require('bluebird');var rs=require(_0x0821('0x3'));var fs=require('fs');var Redis=require(_0x0821('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x0821('0x5'));var logger=require(_0x0821('0x6'))(_0x0821('0x7'));var config=require(_0x0821('0x8'));var jayson=require(_0x0821('0x9'));var client=jayson[_0x0821('0xa')][_0x0821('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x468f49,_0x2fcd82,_0x480871){return new BPromise(function(_0x1c2307,_0x5699ab){return client['request'](_0x468f49,_0x480871)[_0x0821('0xc')](function(_0x4a390d){logger['info'](_0x0821('0xd'),_0x2fcd82,'request\x20sent');logger[_0x0821('0xe')](_0x0821('0xf'),_0x2fcd82,'request\x20sent',JSON['stringify'](_0x4a390d));if(_0x4a390d[_0x0821('0x10')]){if(_0x4a390d[_0x0821('0x10')][_0x0821('0x11')]===0x1f4){logger[_0x0821('0x10')](_0x0821('0xd'),_0x2fcd82,_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);return _0x5699ab(_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);}logger[_0x0821('0x10')](_0x0821('0xd'),_0x2fcd82,_0x4a390d['error']['message']);return _0x1c2307(_0x4a390d[_0x0821('0x10')][_0x0821('0x12')]);}else{logger[_0x0821('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2fcd82,_0x0821('0x14'));_0x1c2307(_0x4a390d[_0x0821('0x15')][_0x0821('0x12')]);}})[_0x0821('0x16')](function(_0x865a8c){logger[_0x0821('0x10')]('AnalyticCustomReport,\x20%s,\x20%s',_0x2fcd82,_0x865a8c);_0x5699ab(_0x865a8c);});});}
\ No newline at end of file
index f27c474..b4db037 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99ad=['express','Router','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/preview','preview','/:id/run','query','post','put','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x1c56a0,_0x35a89b){var _0x1e09ae=function(_0x13cf7c){while(--_0x13cf7c){_0x1c56a0['push'](_0x1c56a0['shift']());}};_0x1e09ae(++_0x35a89b);}(_0x99ad,0x165));var _0xd99a=function(_0x5b0faf,_0x38202d){_0x5b0faf=_0x5b0faf-0x0;var _0x50d6a4=_0x99ad[_0x5b0faf];return _0x50d6a4;};'use strict';var multer=require(_0xd99a('0x0'));var util=require(_0xd99a('0x1'));var path=require('path');var timeout=require(_0xd99a('0x2'));var express=require(_0xd99a('0x3'));var router=express[_0xd99a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd99a('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd99a('0x6'));var controller=require('./analyticCustomReport.controller');router[_0xd99a('0x7')]('/',auth[_0xd99a('0x8')](),controller['index']);router[_0xd99a('0x7')](_0xd99a('0x9'),auth[_0xd99a('0x8')](),controller[_0xd99a('0xa')]);router[_0xd99a('0x7')](_0xd99a('0xb'),auth[_0xd99a('0x8')](),controller[_0xd99a('0xc')]);router[_0xd99a('0x7')](_0xd99a('0xd'),auth['isAuthenticated'](),controller['run']);router['get']('/:id/query',auth['isAuthenticated'](),controller[_0xd99a('0xe')]);router[_0xd99a('0xf')]('/',auth[_0xd99a('0x8')](),controller['create']);router[_0xd99a('0x10')](_0xd99a('0x9'),auth[_0xd99a('0x8')](),controller['update']);router[_0xd99a('0x11')](_0xd99a('0x9'),auth['isAuthenticated'](),controller[_0xd99a('0x12')]);module[_0xd99a('0x13')]=router;
\ No newline at end of file
+var _0x4ab3=['../../components/auth/service','../../components/interaction/service','./analyticCustomReport.controller','get','isAuthenticated','index','/:id','show','preview','/:id/run','run','/:id/query','query','post','put','update','delete','exports','multer','util','express','Router'];(function(_0x1a3b30,_0x420ab2){var _0x471b2c=function(_0x219e65){while(--_0x219e65){_0x1a3b30['push'](_0x1a3b30['shift']());}};_0x471b2c(++_0x420ab2);}(_0x4ab3,0x1e0));var _0x34ab=function(_0x5bfa44,_0x76dacc){_0x5bfa44=_0x5bfa44-0x0;var _0x43815f=_0x4ab3[_0x5bfa44];return _0x43815f;};'use strict';var multer=require(_0x34ab('0x0'));var util=require(_0x34ab('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x34ab('0x2'));var router=express[_0x34ab('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x34ab('0x4'));var interaction=require(_0x34ab('0x5'));var config=require('../../config/environment');var controller=require(_0x34ab('0x6'));router[_0x34ab('0x7')]('/',auth[_0x34ab('0x8')](),controller[_0x34ab('0x9')]);router[_0x34ab('0x7')](_0x34ab('0xa'),auth[_0x34ab('0x8')](),controller[_0x34ab('0xb')]);router['get']('/:id/preview',auth['isAuthenticated'](),controller[_0x34ab('0xc')]);router[_0x34ab('0x7')](_0x34ab('0xd'),auth[_0x34ab('0x8')](),controller[_0x34ab('0xe')]);router[_0x34ab('0x7')](_0x34ab('0xf'),auth[_0x34ab('0x8')](),controller[_0x34ab('0x10')]);router[_0x34ab('0x11')]('/',auth[_0x34ab('0x8')](),controller['create']);router[_0x34ab('0x12')](_0x34ab('0xa'),auth['isAuthenticated'](),controller[_0x34ab('0x13')]);router[_0x34ab('0x14')]('/:id',auth[_0x34ab('0x8')](),controller['destroy']);module[_0x34ab('0x15')]=router;
\ No newline at end of file
index 6e73371..234f9c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3eea=['STRING','TEXT','sequelize'];(function(_0x9d8122,_0x5895d3){var _0x1d5cdc=function(_0x49ab8d){while(--_0x49ab8d){_0x9d8122['push'](_0x9d8122['shift']());}};_0x1d5cdc(++_0x5895d3);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x575fa2,_0x25dae5){_0x575fa2=_0x575fa2-0x0;var _0x30f954=_0x3eea[_0x575fa2];return _0x30f954;};'use strict';var Sequelize=require(_0xa3ee('0x0'));module['exports']={'name':{'type':Sequelize[_0xa3ee('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xa3ee('0x1')]},'parent':{'type':Sequelize[_0xa3ee('0x1')]},'table':{'type':Sequelize[_0xa3ee('0x1')]},'conditions':{'type':Sequelize[_0xa3ee('0x2')]},'joins':{'type':Sequelize[_0xa3ee('0x2')]}};
\ No newline at end of file
+var _0x7da7=['TEXT','sequelize','exports','STRING'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x7da7,0x10d));var _0x77da=function(_0xfb0cfd,_0x500179){_0xfb0cfd=_0xfb0cfd-0x0;var _0x2fd8aa=_0x7da7[_0xfb0cfd];return _0x2fd8aa;};'use strict';var Sequelize=require(_0x77da('0x0'));module[_0x77da('0x1')]={'name':{'type':Sequelize[_0x77da('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x77da('0x2')]},'conditions':{'type':Sequelize[_0x77da('0x3')]},'joins':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index be6310b..ffb10c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','Run\x20Query:','child_process','fork','../../components/export/','../../files/reports','savename','QueryTypes','SELECT','run','runReport','SUM(%s)','GROUP_CONCAT(%s)','debug','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','count','limit','set','Content-Range','json','apply','reject','save','then','destroy','get','DefaultReports','UserProfileResource','end','error','stack','name','send','index','AnalyticDefaultReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','rows','show','rawAttributes','create','UserProfileSection','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','update','body','params','preview','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','operator','group','field','condition','value','Sequelize','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','Limited\x20Query:','sequelize','toString','join','AVG(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','getFields','from','clone','output','web','fullPath','generate','csv','default'];(function(_0x21ae81,_0x1ab316){var _0xb7e828=function(_0x447bf2){while(--_0x447bf2){_0x21ae81['push'](_0x21ae81['shift']());}};_0xb7e828(++_0x1ab316);}(_0x524e,0x15e));var _0xe524=function(_0x30b37b,_0x85db92){_0x30b37b=_0x30b37b-0x0;var _0x545023=_0x524e[_0x30b37b];return _0x545023;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe524('0x0'));var jsonpatch=require(_0xe524('0x1'));var rp=require(_0xe524('0x2'));var moment=require(_0xe524('0x3'));var BPromise=require(_0xe524('0x4'));var Mustache=require(_0xe524('0x5'));var util=require(_0xe524('0x6'));var path=require(_0xe524('0x7'));var sox=require(_0xe524('0x8'));var csv=require(_0xe524('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe524('0xa'));var _=require(_0xe524('0xb'));var squel=require(_0xe524('0xc'));var crypto=require('crypto');var jsforce=require(_0xe524('0xd'));var deskjs=require(_0xe524('0xe'));var toCsv=require(_0xe524('0x9'));var querystring=require(_0xe524('0xf'));var Papa=require(_0xe524('0x10'));var Redis=require(_0xe524('0x11'));var authService=require(_0xe524('0x12'));var qs=require(_0xe524('0x13'));var as=require(_0xe524('0x14'));var hardwareService=require(_0xe524('0x15'));var logger=require(_0xe524('0x16'))(_0xe524('0x17'));var utils=require(_0xe524('0x18'));var config=require(_0xe524('0x19'));var licenseUtil=require(_0xe524('0x1a'));var db=require(_0xe524('0x1b'))['db'];var dbH=require('../../mysqldb')['dbH'];function respondWithStatusCode(_0xfdc2a5,_0x1541d8){_0x1541d8=_0x1541d8||0xcc;return function(_0x11adbc){if(_0x11adbc){return _0xfdc2a5[_0xe524('0x1c')](_0x1541d8);}return _0xfdc2a5[_0xe524('0x1d')](_0x1541d8)['end']();};}function respondWithResult(_0x12ff75,_0x51e9fe){_0x51e9fe=_0x51e9fe||0xc8;return function(_0x19f013){if(_0x19f013){return _0x12ff75[_0xe524('0x1d')](_0x51e9fe)['json'](_0x19f013);}};}function respondWithFilteredResult(_0x569660,_0x488fce){return function(_0x109795){if(_0x109795){var _0x538754=typeof _0x488fce[_0xe524('0x1e')]==='undefined'&&typeof _0x488fce['limit']==='undefined';var _0x3a4027=_0x109795['count'];var _0x11b2a1=_0x538754?0x0:_0x488fce[_0xe524('0x1e')];var _0x278de9=_0x538754?_0x109795[_0xe524('0x1f')]:_0x488fce['offset']+_0x488fce[_0xe524('0x20')];var _0x3ccb3f;if(_0x278de9>=_0x3a4027){_0x278de9=_0x3a4027;_0x3ccb3f=0xc8;}else{_0x3ccb3f=0xce;}_0x569660['status'](_0x3ccb3f);return _0x569660[_0xe524('0x21')](_0xe524('0x22'),_0x11b2a1+'-'+_0x278de9+'/'+_0x3a4027)[_0xe524('0x23')](_0x109795);}return null;};}function patchUpdates(_0x1dcc0f){return function(_0x1c4194){try{jsonpatch[_0xe524('0x24')](_0x1c4194,_0x1dcc0f,!![]);}catch(_0xbf059b){return BPromise[_0xe524('0x25')](_0xbf059b);}return _0x1c4194[_0xe524('0x26')]();};}function saveUpdates(_0x5c4d21,_0x7d1f92){return function(_0x5bb00b){if(_0x5bb00b){return _0x5bb00b['update'](_0x5c4d21)[_0xe524('0x27')](function(_0x23df5e){return _0x23df5e;});}return null;};}function removeEntity(_0x1ad106,_0x85fc51){return function(_0x599d5d){if(_0x599d5d){return _0x599d5d[_0xe524('0x28')]()['then'](function(){var _0x17e245=_0x599d5d[_0xe524('0x29')]({'plain':!![]});var _0xd62772=_0xe524('0x2a');return db[_0xe524('0x2b')][_0xe524('0x28')]({'where':{'type':_0xd62772,'resourceId':_0x17e245['id']}})[_0xe524('0x27')](function(){return _0x599d5d;});})['then'](function(){_0x1ad106['status'](0xcc)[_0xe524('0x2c')]();});}};}function handleEntityNotFound(_0x45abad,_0x476572){return function(_0x109a96){if(!_0x109a96){_0x45abad[_0xe524('0x1c')](0x194);}return _0x109a96;};}function handleError(_0x5405e4,_0x52f140){_0x52f140=_0x52f140||0x1f4;return function(_0x4b1ff){logger[_0xe524('0x2d')](_0x4b1ff[_0xe524('0x2e')]);if(_0x4b1ff[_0xe524('0x2f')]){delete _0x4b1ff[_0xe524('0x2f')];}_0x5405e4['status'](_0x52f140)[_0xe524('0x30')](_0x4b1ff);};}exports[_0xe524('0x31')]=function(_0x4a4e15,_0x5b7ded){var _0x20688e={},_0x376324={},_0x5b2fc3={'count':0x0,'rows':[]};var _0x31d4a7=_['map'](db[_0xe524('0x32')]['rawAttributes'],function(_0x315e56){return{'name':_0x315e56[_0xe524('0x33')],'type':_0x315e56[_0xe524('0x34')]['key']};});_0x376324[_0xe524('0x35')]=_['map'](_0x31d4a7,_0xe524('0x2f'));_0x376324[_0xe524('0x36')]=_[_0xe524('0x37')](_0x4a4e15['query']);_0x376324[_0xe524('0x38')]=_[_0xe524('0x39')](_0x376324['model'],_0x376324[_0xe524('0x36')]);_0x20688e[_0xe524('0x3a')]=_[_0xe524('0x39')](_0x376324[_0xe524('0x35')],qs['fields'](_0x4a4e15[_0xe524('0x36')][_0xe524('0x3b')]));_0x20688e[_0xe524('0x3a')]=_0x20688e[_0xe524('0x3a')][_0xe524('0x3c')]?_0x20688e[_0xe524('0x3a')]:_0x376324[_0xe524('0x35')];if(!_0x4a4e15[_0xe524('0x36')]['hasOwnProperty'](_0xe524('0x3d'))){_0x20688e['limit']=qs[_0xe524('0x20')](_0x4a4e15[_0xe524('0x36')]['limit']);_0x20688e[_0xe524('0x1e')]=qs['offset'](_0x4a4e15[_0xe524('0x36')][_0xe524('0x1e')]);}_0x20688e[_0xe524('0x3e')]=qs[_0xe524('0x3f')](_0x4a4e15[_0xe524('0x36')][_0xe524('0x3f')]);_0x20688e[_0xe524('0x40')]=qs[_0xe524('0x38')](_['pick'](_0x4a4e15[_0xe524('0x36')],_0x376324[_0xe524('0x38')]),_0x31d4a7);if(_0x4a4e15[_0xe524('0x36')][_0xe524('0x41')]){_0x20688e[_0xe524('0x40')]=_[_0xe524('0x42')](_0x20688e[_0xe524('0x40')],{'$or':_[_0xe524('0x43')](_0x31d4a7,function(_0x5d3ea1){if(_0x5d3ea1[_0xe524('0x34')]!==_0xe524('0x44')){var _0x2e4a13={};_0x2e4a13[_0x5d3ea1['name']]={'$like':'%'+_0x4a4e15[_0xe524('0x36')]['filter']+'%'};return _0x2e4a13;}})});}_0x20688e=_[_0xe524('0x42')]({},_0x20688e,_0x4a4e15[_0xe524('0x45')]);var _0x43c314={'where':_0x20688e[_0xe524('0x40')]};return db[_0xe524('0x32')][_0xe524('0x1f')](_0x43c314)[_0xe524('0x27')](function(_0x52cd0e){_0x5b2fc3[_0xe524('0x1f')]=_0x52cd0e;if(_0x4a4e15[_0xe524('0x36')][_0xe524('0x46')]){_0x20688e[_0xe524('0x47')]=[{'all':!![]}];}return db[_0xe524('0x32')][_0xe524('0x48')](_0x20688e);})['then'](function(_0xb694b9){_0x5b2fc3[_0xe524('0x49')]=_0xb694b9;return _0x5b2fc3;})[_0xe524('0x27')](respondWithFilteredResult(_0x5b7ded,_0x20688e))['catch'](handleError(_0x5b7ded,null));};exports[_0xe524('0x4a')]=function(_0x5209dc,_0x4e5d99){var _0x2b9b3b={'raw':!![],'where':{'id':_0x5209dc['params']['id']}},_0x33906d={};_0x33906d[_0xe524('0x35')]=_[_0xe524('0x37')](db[_0xe524('0x32')][_0xe524('0x4b')]);_0x33906d['query']=_['keys'](_0x5209dc[_0xe524('0x36')]);_0x33906d[_0xe524('0x38')]=_['intersection'](_0x33906d[_0xe524('0x35')],_0x33906d['query']);_0x2b9b3b[_0xe524('0x3a')]=_[_0xe524('0x39')](_0x33906d[_0xe524('0x35')],qs[_0xe524('0x3b')](_0x5209dc[_0xe524('0x36')][_0xe524('0x3b')]));_0x2b9b3b[_0xe524('0x3a')]=_0x2b9b3b[_0xe524('0x3a')][_0xe524('0x3c')]?_0x2b9b3b[_0xe524('0x3a')]:_0x33906d[_0xe524('0x35')];if(_0x5209dc[_0xe524('0x36')][_0xe524('0x46')]){_0x2b9b3b[_0xe524('0x47')]=[{'all':!![]}];}_0x2b9b3b=_[_0xe524('0x42')]({},_0x2b9b3b,_0x5209dc['options']);return db[_0xe524('0x32')]['find'](_0x2b9b3b)['then'](handleEntityNotFound(_0x4e5d99,null))[_0xe524('0x27')](respondWithResult(_0x4e5d99,null))['catch'](handleError(_0x4e5d99,null));};exports[_0xe524('0x4c')]=function(_0x15d7ee,_0x561107){return db[_0xe524('0x32')]['create'](_0x15d7ee['body'],{})[_0xe524('0x27')](function(_0x1e5687){var _0x203e71=_0x15d7ee['user']['get']({'plain':!![]});if(!_0x203e71)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x203e71['role']==='user'){var _0x5477ca=_0x1e5687[_0xe524('0x29')]({'plain':!![]});var _0x2ce5c0='Reports';return db[_0xe524('0x4d')][_0xe524('0x4e')]({'where':{'name':_0x2ce5c0,'userProfileId':_0x203e71[_0xe524('0x4f')]},'raw':!![]})[_0xe524('0x27')](function(_0x2fa143){if(_0x2fa143&&_0x2fa143['autoAssociation']===0x0){return db[_0xe524('0x2b')][_0xe524('0x4c')]({'name':_0x5477ca[_0xe524('0x2f')],'resourceId':_0x5477ca['id'],'type':'DefaultReports','sectionId':_0x2fa143['id']},{})[_0xe524('0x27')](function(){return _0x1e5687;});}else{return _0x1e5687;}})['catch'](function(_0x12e5d0){logger[_0xe524('0x2d')](_0xe524('0x50'),_0x12e5d0);throw _0x12e5d0;});}return _0x1e5687;})[_0xe524('0x27')](respondWithResult(_0x561107,0xc9))[_0xe524('0x51')](handleError(_0x561107,null));};exports[_0xe524('0x52')]=function(_0x1cec31,_0x374450){if(_0x1cec31[_0xe524('0x53')]['id']){delete _0x1cec31[_0xe524('0x53')]['id'];}return db[_0xe524('0x32')][_0xe524('0x4e')]({'where':{'id':_0x1cec31['params']['id']}})['then'](handleEntityNotFound(_0x374450,null))['then'](saveUpdates(_0x1cec31[_0xe524('0x53')],null))[_0xe524('0x27')](respondWithResult(_0x374450,null))[_0xe524('0x51')](handleError(_0x374450,null));};exports[_0xe524('0x28')]=function(_0x45fb0d,_0xef3d2f){return db[_0xe524('0x32')][_0xe524('0x4e')]({'where':{'id':_0x45fb0d[_0xe524('0x54')]['id']}})[_0xe524('0x27')](handleEntityNotFound(_0xef3d2f,null))[_0xe524('0x27')](removeEntity(_0xef3d2f,null))['catch'](handleError(_0xef3d2f,null));};exports[_0xe524('0x55')]=function(_0x1f0567,_0x4a5f4a){var _0x53da86=0xa;var _0x54adbd=['join',_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x8a2c00={'SUM':'SUM(%s)','COUNT':_0xe524('0x59'),'COUNT DISTINCT':_0xe524('0x5a'),'MAX':_0xe524('0x5b'),'MIN':_0xe524('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xe524('0x5d')};var _0x582fbb={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':_0xe524('0x60'),'ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x4f58ff=function(_0x5d0507){return!_[_0xe524('0x63')]([_0xe524('0x64'),_0xe524('0x65'),_0xe524('0x66'),_0xe524('0x67')],_0x5d0507);};var _0x474ed4=function(_0x5135f0){if(!_0x5135f0||!_0x5135f0[_0xe524('0x68')][_0xe524('0x3c')]){return'';}for(var _0xc3ccfd='(',_0x5d3b9c=0x0;_0x5d3b9c<_0x5135f0[_0xe524('0x68')][_0xe524('0x3c')];_0x5d3b9c+=0x1){_0x5d3b9c>0x0&&(_0xc3ccfd+='\x20'+_0x5135f0[_0xe524('0x69')]+'\x20');_0xc3ccfd+=_0x5135f0['rules'][_0x5d3b9c]['group']?_0x474ed4(_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6a')]):_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6b')]+'\x20'+_0x5135f0[_0xe524('0x68')][_0x5d3b9c]['condition']+(_0x4f58ff(_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6c')])?'\x20'+_0x5135f0[_0xe524('0x68')][_0x5d3b9c][_0xe524('0x6d')]:'');}return _0xc3ccfd+')';};var _0x3ce098={'where':{'id':_0x1f0567[_0xe524('0x54')]['id']}},_0x22d06a,_0x35e6b2,_0x1e4b32,_0x27c55c,_0x7e5992;_0x3ce098=_['merge']({},_0x3ce098,_0x1f0567[_0xe524('0x45')]);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x3ce098)[_0xe524('0x27')](function(_0xeec885){if(_0xeec885){_0x22d06a=_0xeec885;return _0xeec885['getFields']();}return null;})[_0xe524('0x27')](function(_0x2341cf){if(_0x2341cf){if(!_0x2341cf[_0xe524('0x3c')]){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x35e6b2=_0x2341cf;return db[_0xe524('0x71')]['findAll']({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x245501){if(_0x245501){_0x1e4b32=_[_0xe524('0x72')](_0x245501,'id');var _0xce15f5;var _0x5ec07c=squel[_0xe524('0x73')]();_0x5ec07c['from'](_0x22d06a[_0xe524('0x74')]);for(var _0x2a88e2=0x0;_0x2a88e2<_0x35e6b2[_0xe524('0x3c')];_0x2a88e2+=0x1){_0xce15f5=_0x35e6b2[_0x2a88e2]['MetricId']?_0x1e4b32[_0x35e6b2[_0x2a88e2][_0xe524('0x75')]][_0xe524('0x76')]:_0x35e6b2[_0x2a88e2][_0xe524('0x6b')];_0xce15f5=_0x35e6b2[_0x2a88e2][_0xe524('0x77')]?_[_0xe524('0x78')](_0x8a2c00[_0x35e6b2[_0x2a88e2]['function']],'%s',_0xce15f5):_0xce15f5;_0xce15f5=_0x35e6b2[_0x2a88e2][_0xe524('0x79')]?_[_0xe524('0x78')](_0x582fbb[_0x35e6b2[_0x2a88e2][_0xe524('0x79')]],'%s',_0xce15f5):_0xce15f5;if(_0x35e6b2[_0x2a88e2][_0xe524('0x7a')]){_0x5ec07c[_0xe524('0x6a')](_0xce15f5);}_0x35e6b2[_0x2a88e2]['orderBy']&&_0x5ec07c[_0xe524('0x3e')](_0xce15f5,_0x35e6b2[_0x2a88e2][_0xe524('0x7b')]===_0xe524('0x7c')?![]:!![]);_0x5ec07c[_0xe524('0x6b')](_0xce15f5,_0x35e6b2[_0x2a88e2][_0xe524('0x7d')]||_0xce15f5);}if(_0x22d06a[_0xe524('0x7e')]){_0x22d06a['joins']=JSON[_0xe524('0x7f')](_0x22d06a[_0xe524('0x7e')]);for(var _0x1beaa2=0x0;_0x1beaa2<_0x22d06a['joins'][_0xe524('0x3c')];_0x1beaa2+=0x1){if(_0x22d06a[_0xe524('0x7e')][_0x1beaa2]['type']&&_[_0xe524('0x63')](_0x54adbd,_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x34')])&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x80')]&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2]['foreignTable']&&_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x81')]){_0x5ec07c[_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x34')]](_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x82')],null,util[_0xe524('0x79')](_0xe524('0x83'),_0x22d06a[_0xe524('0x74')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x80')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x82')],_0x22d06a[_0xe524('0x7e')][_0x1beaa2][_0xe524('0x81')]));}}}if(_0x22d06a['conditions']){_0x22d06a[_0xe524('0x84')]=JSON[_0xe524('0x7f')](_0x22d06a[_0xe524('0x84')]);_0x5ec07c['where'](_0x474ed4(_0x22d06a[_0xe524('0x84')][_0xe524('0x6a')]));}_0x7e5992=_0x5ec07c['clone']();_0x5ec07c['limit'](_0x53da86);_0x5ec07c[_0xe524('0x1e')](0x0);logger['debug'](_0xe524('0x85'),_0x5ec07c['toString']());return dbH[_0xe524('0x86')][_0xe524('0x36')](_0x5ec07c[_0xe524('0x87')](),{'type':dbH[_0xe524('0x86')]['QueryTypes']['SELECT']});}})[_0xe524('0x27')](respondWithResult(_0x4a5f4a,null))[_0xe524('0x51')](handleError(_0x4a5f4a,null));};function runReport(_0x50eb96,_0x45c287,_0x449842){var _0x1f3ed1=_0x45c287['name'];var _0x19b063=0xa;var _0x140a4e=[_0xe524('0x88'),_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x54385f={'SUM':'SUM(%s)','COUNT':_0xe524('0x59'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xe524('0x5b'),'MIN':_0xe524('0x5c'),'AVG':_0xe524('0x89'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':_0xe524('0x8a'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x1681c5={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':_0xe524('0x60'),'ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x50f5e3=function(_0x11298c){return!_[_0xe524('0x63')]([_0xe524('0x64'),'IS\x20NOT\x20NULL',_0xe524('0x66'),_0xe524('0x67')],_0x11298c);};var _0x5603d0=function(_0x2712ac){if(!_0x2712ac||!_0x2712ac[_0xe524('0x68')][_0xe524('0x3c')]){return'';}for(var _0x32c9f6='(',_0x58d29e=0x0;_0x58d29e<_0x2712ac[_0xe524('0x68')][_0xe524('0x3c')];_0x58d29e+=0x1){_0x58d29e>0x0&&(_0x32c9f6+='\x20'+_0x2712ac[_0xe524('0x69')]+'\x20');_0x32c9f6+=_0x2712ac['rules'][_0x58d29e][_0xe524('0x6a')]?_0x5603d0(_0x2712ac['rules'][_0x58d29e][_0xe524('0x6a')]):_0x2712ac[_0xe524('0x68')][_0x58d29e][_0xe524('0x6b')]+'\x20'+_0x2712ac['rules'][_0x58d29e][_0xe524('0x6c')]+(_0x50f5e3(_0x2712ac[_0xe524('0x68')][_0x58d29e][_0xe524('0x6c')])?'\x20'+_0x2712ac['rules'][_0x58d29e]['value']:'');}return _0x32c9f6+')';};var _0x334164={'where':{'id':_0x50eb96['id']}},_0x512572,_0x903e24,_0x4964c3,_0x2dc3f5,_0x246c62;_0x334164=_['merge']({},_0x334164,_0x449842);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x334164)['then'](function(_0x482b72){if(_0x482b72){_0x512572=_0x482b72;return _0x482b72[_0xe524('0x8b')]();}return null;})[_0xe524('0x27')](function(_0x1b3e03){if(_0x1b3e03){if(!_0x1b3e03['length']){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x903e24=_0x1b3e03;return db[_0xe524('0x71')][_0xe524('0x48')]({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x57501c){if(_0x57501c){_0x4964c3=_[_0xe524('0x72')](_0x57501c,'id');var _0x3a2834;var _0x4c7f45=squel['select']();_0x4c7f45[_0xe524('0x8c')](_0x512572[_0xe524('0x74')]);for(var _0x41f842=0x0;_0x41f842<_0x903e24[_0xe524('0x3c')];_0x41f842+=0x1){_0x3a2834=_0x903e24[_0x41f842]['MetricId']?_0x4964c3[_0x903e24[_0x41f842][_0xe524('0x75')]][_0xe524('0x76')]:_0x903e24[_0x41f842]['field'];_0x3a2834=_0x903e24[_0x41f842]['function']?_[_0xe524('0x78')](_0x54385f[_0x903e24[_0x41f842][_0xe524('0x77')]],'%s',_0x3a2834):_0x3a2834;_0x3a2834=_0x903e24[_0x41f842][_0xe524('0x79')]?_[_0xe524('0x78')](_0x1681c5[_0x903e24[_0x41f842][_0xe524('0x79')]],'%s',_0x3a2834):_0x3a2834;if(_0x903e24[_0x41f842][_0xe524('0x7a')]){_0x4c7f45['group'](_0x3a2834);}_0x903e24[_0x41f842]['orderBy']&&_0x4c7f45[_0xe524('0x3e')](_0x3a2834,_0x903e24[_0x41f842][_0xe524('0x7b')]==='DESC'?![]:!![]);_0x4c7f45['field'](_0x3a2834,_0x903e24[_0x41f842][_0xe524('0x7d')]||_0x3a2834);}if(_0x512572[_0xe524('0x7e')]){_0x512572[_0xe524('0x7e')]=JSON[_0xe524('0x7f')](_0x512572[_0xe524('0x7e')]);for(var _0xa820a1=0x0;_0xa820a1<_0x512572['joins']['length'];_0xa820a1+=0x1){if(_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x34')]&&_[_0xe524('0x63')](_0x140a4e,_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x34')])&&_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x80')]&&_0x512572[_0xe524('0x7e')][_0xa820a1]['foreignTable']&&_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x81')]){_0x4c7f45[_0x512572[_0xe524('0x7e')][_0xa820a1]['type']](_0x512572['joins'][_0xa820a1][_0xe524('0x82')],null,util[_0xe524('0x79')](_0xe524('0x83'),_0x512572[_0xe524('0x74')],_0x512572['joins'][_0xa820a1][_0xe524('0x80')],_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x82')],_0x512572[_0xe524('0x7e')][_0xa820a1][_0xe524('0x81')]));}}}if(_0x512572['conditions']){_0x512572[_0xe524('0x84')]=JSON['parse'](_0x512572[_0xe524('0x84')]);_0x4c7f45[_0xe524('0x40')](_0x5603d0(_0x512572['conditions'][_0xe524('0x6a')]));}_0x246c62=_0x4c7f45[_0xe524('0x8d')]();_0x4c7f45['limit'](_0x19b063);_0x4c7f45[_0xe524('0x1e')](0x0);return;}})['then'](function(){if(_0x45c287[_0xe524('0x8e')]===_0xe524('0x8f')){return null;}var _0x1be681=_[_0xe524('0x42')](_0x45c287,{'name':_0x45c287[_0xe524('0x90')]||_0x45c287[_0xe524('0x2f')]||_0x512572[_0xe524('0x2f')],'basename':_0x1f3ed1,'savename':util[_0xe524('0x79')]('%s-%s.%s',_0x45c287[_0xe524('0x2f')]||_0x512572['name'],require('randomstring')[_0xe524('0x91')](0x4),_0x45c287['output']||_0xe524('0x92')),'reportId':_0x512572['id'],'reportType':_0xe524('0x93')});return db[_0xe524('0x94')][_0xe524('0x4c')](_0x1be681,{'raw':!![]});})[_0xe524('0x27')](function(_0x26c802){if(_0x512572['table']==='cdr'){_0x246c62[_0xe524('0x40')](_0x512572[_0xe524('0x74')]+_0xe524('0x95'),_0x45c287[_0xe524('0x96')],_0x45c287[_0xe524('0x97')]);}else{_0x246c62[_0xe524('0x40')](_0x512572[_0xe524('0x74')]+_0xe524('0x98'),_0x45c287[_0xe524('0x96')],_0x45c287[_0xe524('0x97')]);}if(_0x26c802){logger['info'](_0xe524('0x99'),_0x246c62[_0xe524('0x87')]());require(_0xe524('0x9a'))[_0xe524('0x9b')](path[_0xe524('0x88')](__dirname,_0xe524('0x9c'),_0x26c802['output']),[_0x26c802['id'],_0x246c62[_0xe524('0x87')](),path[_0xe524('0x88')](__dirname,_0xe524('0x9d'),_0x26c802[_0xe524('0x9e')]),_0x1f3ed1]);return _0x26c802;}else{var _0x84bbd7=squel[_0xe524('0x73')]();_0x84bbd7[_0xe524('0x8c')]('('+_0x246c62[_0xe524('0x87')]()+')','countTable');_0x84bbd7['field']('COUNT(*)',_0xe524('0x1f'));_0x246c62[_0xe524('0x20')](_0x45c287['limit']||_0x19b063);_0x246c62[_0xe524('0x1e')](_0x45c287[_0xe524('0x1e')]||0x0);return dbH['sequelize'][_0xe524('0x36')](_0x84bbd7[_0xe524('0x87')](),{'type':dbH['sequelize'][_0xe524('0x9f')][_0xe524('0xa0')]})[_0xe524('0x27')](function(_0x542182){if(!_0x542182[_0xe524('0x3c')]){_0x2dc3f5=0x0;}else{_0x2dc3f5=_0x542182[0x0][_0xe524('0x1f')]||0x0;}return dbH[_0xe524('0x86')]['query'](_0x246c62[_0xe524('0x87')](),{'type':dbH[_0xe524('0x86')][_0xe524('0x9f')][_0xe524('0xa0')]});})['then'](function(_0x5e6a3d){return{'rows':_0x5e6a3d||[],'count':_0x2dc3f5};});}});}exports[_0xe524('0xa1')]=function(_0x33d066,_0x3ea495){return runReport(_0x33d066[_0xe524('0x54')],_0x33d066[_0xe524('0x36')],_0x33d066[_0xe524('0x45')])[_0xe524('0x27')](respondWithResult(_0x3ea495,null))[_0xe524('0x51')](handleError(_0x3ea495,null));};exports[_0xe524('0xa2')]=runReport;exports[_0xe524('0x36')]=function(_0x4505de,_0x292f14){var _0x2d24c1=0xa;var _0x483307=[_0xe524('0x88'),_0xe524('0x56'),_0xe524('0x57'),_0xe524('0x58')];var _0x280022={'SUM':_0xe524('0xa3'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xe524('0x5b'),'MIN':'MIN(%s)','AVG':_0xe524('0x89'),'GROUP_CONCAT':_0xe524('0xa4'),'GROUP_CONCAT ASC':_0xe524('0x8a'),'GROUP_CONCAT DESC':_0xe524('0x5d')};var _0x46d6da={'SEC_TO_TIME':_0xe524('0x5e'),'DATE':_0xe524('0x5f'),'HOUR':'HOUR(%s)','ROUND':_0xe524('0x61'),'UNIX_TIMESTAMP':_0xe524('0x62')};var _0x39998a=function(_0x107de8){return!_['includes']([_0xe524('0x64'),_0xe524('0x65'),'IS\x20EMPTY',_0xe524('0x67')],_0x107de8);};var _0x458e14=function(_0x4e0886){if(!_0x4e0886||!_0x4e0886['rules'][_0xe524('0x3c')]){return'';}for(var _0x3639cf='(',_0x575c14=0x0;_0x575c14<_0x4e0886['rules'][_0xe524('0x3c')];_0x575c14+=0x1){_0x575c14>0x0&&(_0x3639cf+='\x20'+_0x4e0886['operator']+'\x20');_0x3639cf+=_0x4e0886['rules'][_0x575c14]['group']?_0x458e14(_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6a')]):_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6b')]+'\x20'+_0x4e0886['rules'][_0x575c14]['condition']+(_0x39998a(_0x4e0886['rules'][_0x575c14][_0xe524('0x6c')])?'\x20'+_0x4e0886[_0xe524('0x68')][_0x575c14][_0xe524('0x6d')]:'');}return _0x3639cf+')';};var _0x289720={'where':{'id':_0x4505de[_0xe524('0x54')]['id']}},_0x3fb45c,_0x3362fe,_0x119684,_0x19e4fd,_0x4b4349;_0x289720=_[_0xe524('0x42')]({},_0x289720,_0x4505de[_0xe524('0x45')]);return db[_0xe524('0x32')][_0xe524('0x4e')](_0x289720)[_0xe524('0x27')](function(_0x404a49){if(_0x404a49){_0x3fb45c=_0x404a49;return _0x404a49[_0xe524('0x8b')]();}return null;})[_0xe524('0x27')](function(_0x8e8087){if(_0x8e8087){if(!_0x8e8087['length']){throw new db[(_0xe524('0x6e'))][(_0xe524('0x6f'))](_0xe524('0x70'),0x193);}_0x3362fe=_0x8e8087;return db[_0xe524('0x71')][_0xe524('0x48')]({'raw':!![]});}return null;})[_0xe524('0x27')](function(_0x113a54){if(_0x113a54){_0x119684=_[_0xe524('0x72')](_0x113a54,'id');var _0x4ebca4;var _0x40043c=squel[_0xe524('0x73')]();_0x40043c[_0xe524('0x8c')](_0x3fb45c[_0xe524('0x74')]);for(var _0x19a773=0x0;_0x19a773<_0x3362fe[_0xe524('0x3c')];_0x19a773+=0x1){_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x75')]?_0x119684[_0x3362fe[_0x19a773][_0xe524('0x75')]][_0xe524('0x76')]:_0x3362fe[_0x19a773][_0xe524('0x6b')];_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x77')]?_[_0xe524('0x78')](_0x280022[_0x3362fe[_0x19a773]['function']],'%s',_0x4ebca4):_0x4ebca4;_0x4ebca4=_0x3362fe[_0x19a773][_0xe524('0x79')]?_[_0xe524('0x78')](_0x46d6da[_0x3362fe[_0x19a773][_0xe524('0x79')]],'%s',_0x4ebca4):_0x4ebca4;if(_0x3362fe[_0x19a773]['groupBy']){_0x40043c['group'](_0x4ebca4);}_0x3362fe[_0x19a773][_0xe524('0x7b')]&&_0x40043c[_0xe524('0x3e')](_0x4ebca4,_0x3362fe[_0x19a773][_0xe524('0x7b')]==='DESC'?![]:!![]);_0x40043c[_0xe524('0x6b')](_0x4ebca4,_0x3362fe[_0x19a773][_0xe524('0x7d')]||_0x4ebca4);}if(_0x3fb45c[_0xe524('0x7e')]){_0x3fb45c['joins']=JSON['parse'](_0x3fb45c[_0xe524('0x7e')]);for(var _0x2a85e5=0x0;_0x2a85e5<_0x3fb45c[_0xe524('0x7e')]['length'];_0x2a85e5+=0x1){if(_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')]&&_[_0xe524('0x63')](_0x483307,_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')])&&_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x80')]&&_0x3fb45c['joins'][_0x2a85e5][_0xe524('0x82')]&&_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x81')]){_0x40043c[_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x34')]](_0x3fb45c['joins'][_0x2a85e5][_0xe524('0x82')],null,util[_0xe524('0x79')]('%s.%s\x20=\x20%s.%s',_0x3fb45c[_0xe524('0x74')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x80')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x82')],_0x3fb45c[_0xe524('0x7e')][_0x2a85e5][_0xe524('0x81')]));}}}if(_0x3fb45c[_0xe524('0x84')]){_0x3fb45c[_0xe524('0x84')]=JSON['parse'](_0x3fb45c['conditions']);_0x40043c[_0xe524('0x40')](_0x458e14(_0x3fb45c[_0xe524('0x84')][_0xe524('0x6a')]));}_0x4b4349=_0x40043c[_0xe524('0x8d')]();_0x40043c[_0xe524('0x20')](_0x2d24c1);_0x40043c[_0xe524('0x1e')](0x0);logger[_0xe524('0xa5')]('Limited\x20Query:',_0x40043c['toString']());return dbH[_0xe524('0x86')]['query'](_0x40043c['toString'](),{'type':dbH[_0xe524('0x86')][_0xe524('0x9f')][_0xe524('0xa0')]});}})[_0xe524('0x27')](function(){return{'sql':_0x4b4349[_0xe524('0x87')]()};})[_0xe524('0x27')](respondWithResult(_0x292f14,null))['catch'](handleError(_0x292f14,null));};
\ No newline at end of file
+var _0x2542=['getFields','ValidationErrorItem','metric','format','DESC','output','web','fullPath','%s-%s.%s','randomstring','generate','default','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:','child_process','fork','../../components/export/','savename','countTable','COUNT(*)','sequelize','SELECT','run','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','limit','count','set','save','destroy','then','get','end','error','stack','name','send','index','map','AnalyticDefaultReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','left_join','right_join','cross_join','SUM(%s)','COUNT(%s)','COUNT(DISTINCT\x20%s)','MAX(%s)','MIN(%s)','AVG(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','SEC_TO_TIME(%s)','DATE(%s)','HOUR(%s)','ROUND(%s)','includes','IS\x20NULL','IS\x20NOT\x20EMPTY','rules','group','condition','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','select','from','MetricId','field','replace','function','groupBy','orderBy','alias','parse','joins','parentKey','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','table','conditions','clone','debug','Limited\x20Query:','toString','QueryTypes','UNIX_TIMESTAMP(%s)','IS\x20EMPTY','operator','value'];(function(_0x56de0a,_0x452b57){var _0x4f63e4=function(_0x3be4f2){while(--_0x3be4f2){_0x56de0a['push'](_0x56de0a['shift']());}};_0x4f63e4(++_0x452b57);}(_0x2542,0x169));var _0x2254=function(_0x1f109c,_0x106c20){_0x1f109c=_0x1f109c-0x0;var _0x572b2c=_0x2542[_0x1f109c];return _0x572b2c;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];var dbH=require(_0x2254('0x19'))[_0x2254('0x1a')];function respondWithStatusCode(_0x3c326b,_0x381efe){_0x381efe=_0x381efe||0xcc;return function(_0x592a4f){if(_0x592a4f){return _0x3c326b[_0x2254('0x1b')](_0x381efe);}return _0x3c326b[_0x2254('0x1c')](_0x381efe)['end']();};}function respondWithResult(_0x2f4de,_0x1e582d){_0x1e582d=_0x1e582d||0xc8;return function(_0xfb23cb){if(_0xfb23cb){return _0x2f4de[_0x2254('0x1c')](_0x1e582d)[_0x2254('0x1d')](_0xfb23cb);}};}function respondWithFilteredResult(_0xbc5548,_0x50f137){return function(_0x18baf4){if(_0x18baf4){var _0x57247a=typeof _0x50f137[_0x2254('0x1e')]===_0x2254('0x1f')&&typeof _0x50f137[_0x2254('0x20')]===_0x2254('0x1f');var _0x1ae11e=_0x18baf4[_0x2254('0x21')];var _0x497724=_0x57247a?0x0:_0x50f137['offset'];var _0x5ec98d=_0x57247a?_0x18baf4[_0x2254('0x21')]:_0x50f137[_0x2254('0x1e')]+_0x50f137[_0x2254('0x20')];var _0x1f1163;if(_0x5ec98d>=_0x1ae11e){_0x5ec98d=_0x1ae11e;_0x1f1163=0xc8;}else{_0x1f1163=0xce;}_0xbc5548[_0x2254('0x1c')](_0x1f1163);return _0xbc5548[_0x2254('0x22')]('Content-Range',_0x497724+'-'+_0x5ec98d+'/'+_0x1ae11e)[_0x2254('0x1d')](_0x18baf4);}return null;};}function patchUpdates(_0x16148d){return function(_0x906cde){try{jsonpatch['apply'](_0x906cde,_0x16148d,!![]);}catch(_0x52fedc){return BPromise['reject'](_0x52fedc);}return _0x906cde[_0x2254('0x23')]();};}function saveUpdates(_0x559af4,_0xf88b56){return function(_0x56b91e){if(_0x56b91e){return _0x56b91e['update'](_0x559af4)['then'](function(_0x540020){return _0x540020;});}return null;};}function removeEntity(_0x5e5edb,_0x4f797d){return function(_0x1aa71f){if(_0x1aa71f){return _0x1aa71f[_0x2254('0x24')]()[_0x2254('0x25')](function(){var _0x265467=_0x1aa71f[_0x2254('0x26')]({'plain':!![]});var _0x1349c9='DefaultReports';return db['UserProfileResource'][_0x2254('0x24')]({'where':{'type':_0x1349c9,'resourceId':_0x265467['id']}})['then'](function(){return _0x1aa71f;});})[_0x2254('0x25')](function(){_0x5e5edb[_0x2254('0x1c')](0xcc)[_0x2254('0x27')]();});}};}function handleEntityNotFound(_0x3aa0bd,_0x19043b){return function(_0x482688){if(!_0x482688){_0x3aa0bd[_0x2254('0x1b')](0x194);}return _0x482688;};}function handleError(_0x2a789b,_0x21285d){_0x21285d=_0x21285d||0x1f4;return function(_0x37af8b){logger[_0x2254('0x28')](_0x37af8b[_0x2254('0x29')]);if(_0x37af8b[_0x2254('0x2a')]){delete _0x37af8b[_0x2254('0x2a')];}_0x2a789b[_0x2254('0x1c')](_0x21285d)[_0x2254('0x2b')](_0x37af8b);};}exports[_0x2254('0x2c')]=function(_0xad7774,_0x220f2a){var _0x27d30a={},_0x4577f4={},_0x1b16c8={'count':0x0,'rows':[]};var _0x2c929f=_[_0x2254('0x2d')](db[_0x2254('0x2e')]['rawAttributes'],function(_0xe29526){return{'name':_0xe29526[_0x2254('0x2f')],'type':_0xe29526[_0x2254('0x30')][_0x2254('0x31')]};});_0x4577f4[_0x2254('0x32')]=_[_0x2254('0x2d')](_0x2c929f,_0x2254('0x2a'));_0x4577f4[_0x2254('0x33')]=_[_0x2254('0x34')](_0xad7774['query']);_0x4577f4[_0x2254('0x35')]=_[_0x2254('0x36')](_0x4577f4['model'],_0x4577f4[_0x2254('0x33')]);_0x27d30a[_0x2254('0x37')]=_[_0x2254('0x36')](_0x4577f4[_0x2254('0x32')],qs['fields'](_0xad7774['query'][_0x2254('0x38')]));_0x27d30a['attributes']=_0x27d30a[_0x2254('0x37')][_0x2254('0x39')]?_0x27d30a[_0x2254('0x37')]:_0x4577f4[_0x2254('0x32')];if(!_0xad7774[_0x2254('0x33')][_0x2254('0x3a')](_0x2254('0x3b'))){_0x27d30a['limit']=qs[_0x2254('0x20')](_0xad7774[_0x2254('0x33')][_0x2254('0x20')]);_0x27d30a[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0xad7774[_0x2254('0x33')][_0x2254('0x1e')]);}_0x27d30a[_0x2254('0x3c')]=qs[_0x2254('0x3d')](_0xad7774[_0x2254('0x33')]['sort']);_0x27d30a[_0x2254('0x3e')]=qs[_0x2254('0x35')](_[_0x2254('0x3f')](_0xad7774[_0x2254('0x33')],_0x4577f4['filters']),_0x2c929f);if(_0xad7774[_0x2254('0x33')][_0x2254('0x40')]){_0x27d30a[_0x2254('0x3e')]=_[_0x2254('0x41')](_0x27d30a[_0x2254('0x3e')],{'$or':_[_0x2254('0x2d')](_0x2c929f,function(_0x423377){if(_0x423377[_0x2254('0x30')]!=='VIRTUAL'){var _0x362ad1={};_0x362ad1[_0x423377['name']]={'$like':'%'+_0xad7774[_0x2254('0x33')][_0x2254('0x40')]+'%'};return _0x362ad1;}})});}_0x27d30a=_[_0x2254('0x41')]({},_0x27d30a,_0xad7774[_0x2254('0x42')]);var _0x460bb3={'where':_0x27d30a[_0x2254('0x3e')]};return db[_0x2254('0x2e')]['count'](_0x460bb3)[_0x2254('0x25')](function(_0x2f1ff9){_0x1b16c8[_0x2254('0x21')]=_0x2f1ff9;if(_0xad7774[_0x2254('0x33')][_0x2254('0x43')]){_0x27d30a['include']=[{'all':!![]}];}return db[_0x2254('0x2e')][_0x2254('0x44')](_0x27d30a);})[_0x2254('0x25')](function(_0x135ed8){_0x1b16c8[_0x2254('0x45')]=_0x135ed8;return _0x1b16c8;})['then'](respondWithFilteredResult(_0x220f2a,_0x27d30a))[_0x2254('0x46')](handleError(_0x220f2a,null));};exports['show']=function(_0x91e091,_0x1ded9a){var _0xb4d042={'raw':!![],'where':{'id':_0x91e091[_0x2254('0x47')]['id']}},_0x31c31e={};_0x31c31e[_0x2254('0x32')]=_[_0x2254('0x34')](db[_0x2254('0x2e')][_0x2254('0x48')]);_0x31c31e[_0x2254('0x33')]=_[_0x2254('0x34')](_0x91e091[_0x2254('0x33')]);_0x31c31e[_0x2254('0x35')]=_['intersection'](_0x31c31e[_0x2254('0x32')],_0x31c31e[_0x2254('0x33')]);_0xb4d042[_0x2254('0x37')]=_['intersection'](_0x31c31e[_0x2254('0x32')],qs[_0x2254('0x38')](_0x91e091[_0x2254('0x33')][_0x2254('0x38')]));_0xb4d042[_0x2254('0x37')]=_0xb4d042[_0x2254('0x37')][_0x2254('0x39')]?_0xb4d042[_0x2254('0x37')]:_0x31c31e[_0x2254('0x32')];if(_0x91e091['query'][_0x2254('0x43')]){_0xb4d042[_0x2254('0x49')]=[{'all':!![]}];}_0xb4d042=_[_0x2254('0x41')]({},_0xb4d042,_0x91e091[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0xb4d042)[_0x2254('0x25')](handleEntityNotFound(_0x1ded9a,null))[_0x2254('0x25')](respondWithResult(_0x1ded9a,null))[_0x2254('0x46')](handleError(_0x1ded9a,null));};exports[_0x2254('0x4b')]=function(_0x5b14c5,_0x36b977){return db[_0x2254('0x2e')]['create'](_0x5b14c5[_0x2254('0x4c')],{})[_0x2254('0x25')](function(_0x12e2ff){var _0x4331a9=_0x5b14c5['user'][_0x2254('0x26')]({'plain':!![]});if(!_0x4331a9)throw new Error(_0x2254('0x4d'));if(_0x4331a9['role']===_0x2254('0x4e')){var _0x3f0670=_0x12e2ff[_0x2254('0x26')]({'plain':!![]});var _0x43bb88='Reports';return db[_0x2254('0x4f')][_0x2254('0x4a')]({'where':{'name':_0x43bb88,'userProfileId':_0x4331a9[_0x2254('0x50')]},'raw':!![]})['then'](function(_0x4cc18a){if(_0x4cc18a&&_0x4cc18a[_0x2254('0x51')]===0x0){return db[_0x2254('0x52')]['create']({'name':_0x3f0670[_0x2254('0x2a')],'resourceId':_0x3f0670['id'],'type':'DefaultReports','sectionId':_0x4cc18a['id']},{})['then'](function(){return _0x12e2ff;});}else{return _0x12e2ff;}})[_0x2254('0x46')](function(_0x135962){logger[_0x2254('0x28')](_0x2254('0x53'),_0x135962);throw _0x135962;});}return _0x12e2ff;})[_0x2254('0x25')](respondWithResult(_0x36b977,0xc9))['catch'](handleError(_0x36b977,null));};exports['update']=function(_0x1bd988,_0x5e3fbc){if(_0x1bd988[_0x2254('0x4c')]['id']){delete _0x1bd988[_0x2254('0x4c')]['id'];}return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x1bd988['params']['id']}})[_0x2254('0x25')](handleEntityNotFound(_0x5e3fbc,null))[_0x2254('0x25')](saveUpdates(_0x1bd988['body'],null))['then'](respondWithResult(_0x5e3fbc,null))[_0x2254('0x46')](handleError(_0x5e3fbc,null));};exports['destroy']=function(_0x2cc59c,_0x305ace){return db[_0x2254('0x2e')][_0x2254('0x4a')]({'where':{'id':_0x2cc59c[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x305ace,null))['then'](removeEntity(_0x305ace,null))[_0x2254('0x46')](handleError(_0x305ace,null));};exports['preview']=function(_0x335c66,_0x510fe0){var _0x4da493=0xa;var _0x5999c8=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x13606e={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':_0x2254('0x5b'),'MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f391d={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x329378=function(_0xae171c){return!_[_0x2254('0x65')]([_0x2254('0x66'),'IS\x20NOT\x20NULL','IS\x20EMPTY',_0x2254('0x67')],_0xae171c);};var _0x423c17=function(_0x1d73a3){if(!_0x1d73a3||!_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x53b55b='(',_0x45b7bd=0x0;_0x45b7bd<_0x1d73a3[_0x2254('0x68')][_0x2254('0x39')];_0x45b7bd+=0x1){_0x45b7bd>0x0&&(_0x53b55b+='\x20'+_0x1d73a3['operator']+'\x20');_0x53b55b+=_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]?_0x423c17(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x69')]):_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['field']+'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd][_0x2254('0x6a')]+(_0x329378(_0x1d73a3['rules'][_0x45b7bd][_0x2254('0x6a')])?'\x20'+_0x1d73a3[_0x2254('0x68')][_0x45b7bd]['value']:'');}return _0x53b55b+')';};var _0x5cc6bd={'where':{'id':_0x335c66['params']['id']}},_0xde4e7,_0xa159a4,_0x486b82,_0x506d95,_0x48406e;_0x5cc6bd=_[_0x2254('0x41')]({},_0x5cc6bd,_0x335c66['options']);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x5cc6bd)[_0x2254('0x25')](function(_0x1ed6b9){if(_0x1ed6b9){_0xde4e7=_0x1ed6b9;return _0x1ed6b9['getFields']();}return null;})[_0x2254('0x25')](function(_0x5ecf82){if(_0x5ecf82){if(!_0x5ecf82[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xa159a4=_0x5ecf82;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x3b3b20){if(_0x3b3b20){_0x486b82=_[_0x2254('0x6e')](_0x3b3b20,'id');var _0x3cefbe;var _0x4f77e5=squel[_0x2254('0x6f')]();_0x4f77e5[_0x2254('0x70')](_0xde4e7['table']);for(var _0x1ac8ff=0x0;_0x1ac8ff<_0xa159a4[_0x2254('0x39')];_0x1ac8ff+=0x1){_0x3cefbe=_0xa159a4[_0x1ac8ff]['MetricId']?_0x486b82[_0xa159a4[_0x1ac8ff][_0x2254('0x71')]]['metric']:_0xa159a4[_0x1ac8ff][_0x2254('0x72')];_0x3cefbe=_0xa159a4[_0x1ac8ff]['function']?_[_0x2254('0x73')](_0x13606e[_0xa159a4[_0x1ac8ff][_0x2254('0x74')]],'%s',_0x3cefbe):_0x3cefbe;_0x3cefbe=_0xa159a4[_0x1ac8ff]['format']?_[_0x2254('0x73')](_0x2f391d[_0xa159a4[_0x1ac8ff]['format']],'%s',_0x3cefbe):_0x3cefbe;if(_0xa159a4[_0x1ac8ff][_0x2254('0x75')]){_0x4f77e5[_0x2254('0x69')](_0x3cefbe);}_0xa159a4[_0x1ac8ff][_0x2254('0x76')]&&_0x4f77e5['order'](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x76')]==='DESC'?![]:!![]);_0x4f77e5[_0x2254('0x72')](_0x3cefbe,_0xa159a4[_0x1ac8ff][_0x2254('0x77')]||_0x3cefbe);}if(_0xde4e7['joins']){_0xde4e7['joins']=JSON[_0x2254('0x78')](_0xde4e7[_0x2254('0x79')]);for(var _0x451520=0x0;_0x451520<_0xde4e7[_0x2254('0x79')]['length'];_0x451520+=0x1){if(_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x5999c8,_0xde4e7[_0x2254('0x79')][_0x451520]['type'])&&_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7a')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7b')]&&_0xde4e7['joins'][_0x451520][_0x2254('0x7c')]){_0x4f77e5[_0xde4e7['joins'][_0x451520]['type']](_0xde4e7['joins'][_0x451520][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0xde4e7[_0x2254('0x7e')],_0xde4e7['joins'][_0x451520][_0x2254('0x7a')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7b')],_0xde4e7[_0x2254('0x79')][_0x451520][_0x2254('0x7c')]));}}}if(_0xde4e7[_0x2254('0x7f')]){_0xde4e7['conditions']=JSON['parse'](_0xde4e7[_0x2254('0x7f')]);_0x4f77e5[_0x2254('0x3e')](_0x423c17(_0xde4e7[_0x2254('0x7f')][_0x2254('0x69')]));}_0x48406e=_0x4f77e5[_0x2254('0x80')]();_0x4f77e5[_0x2254('0x20')](_0x4da493);_0x4f77e5[_0x2254('0x1e')](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4f77e5[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4f77e5[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')]['SELECT']});}})[_0x2254('0x25')](respondWithResult(_0x510fe0,null))[_0x2254('0x46')](handleError(_0x510fe0,null));};function runReport(_0x4dfcb4,_0x1c317b,_0x4e699c){var _0x2ad519=_0x1c317b[_0x2254('0x2a')];var _0x30f2c9=0xa;var _0x1f7a48=['join',_0x2254('0x55'),_0x2254('0x56'),_0x2254('0x57')];var _0x3a8d4f={'SUM':'SUM(%s)','COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':'GROUP_CONCAT(%s)','GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0x2254('0x60')};var _0x2f3650={'SEC_TO_TIME':_0x2254('0x61'),'DATE':_0x2254('0x62'),'HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x251d70=function(_0x2c7705){return!_['includes']([_0x2254('0x66'),'IS\x20NOT\x20NULL',_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x2c7705);};var _0x36d121=function(_0x207a09){if(!_0x207a09||!_0x207a09[_0x2254('0x68')]['length']){return'';}for(var _0x8a3656='(',_0x1554f1=0x0;_0x1554f1<_0x207a09[_0x2254('0x68')][_0x2254('0x39')];_0x1554f1+=0x1){_0x1554f1>0x0&&(_0x8a3656+='\x20'+_0x207a09[_0x2254('0x87')]+'\x20');_0x8a3656+=_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]?_0x36d121(_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x69')]):_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x72')]+'\x20'+_0x207a09[_0x2254('0x68')][_0x1554f1][_0x2254('0x6a')]+(_0x251d70(_0x207a09['rules'][_0x1554f1][_0x2254('0x6a')])?'\x20'+_0x207a09['rules'][_0x1554f1][_0x2254('0x88')]:'');}return _0x8a3656+')';};var _0xb98b40={'where':{'id':_0x4dfcb4['id']}},_0x3b1d5c,_0x2c907a,_0x23b78c,_0x2b5dba,_0x30307a;_0xb98b40=_['merge']({},_0xb98b40,_0x4e699c);return db[_0x2254('0x2e')]['find'](_0xb98b40)[_0x2254('0x25')](function(_0x52712d){if(_0x52712d){_0x3b1d5c=_0x52712d;return _0x52712d[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x1d0c8f){if(_0x1d0c8f){if(!_0x1d0c8f['length']){throw new db[(_0x2254('0x6b'))][(_0x2254('0x8a'))](_0x2254('0x6c'),0x193);}_0x2c907a=_0x1d0c8f;return db[_0x2254('0x6d')][_0x2254('0x44')]({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x34185c){if(_0x34185c){_0x23b78c=_[_0x2254('0x6e')](_0x34185c,'id');var _0x5e94b6;var _0x56239e=squel[_0x2254('0x6f')]();_0x56239e['from'](_0x3b1d5c[_0x2254('0x7e')]);for(var _0x3a1365=0x0;_0x3a1365<_0x2c907a[_0x2254('0x39')];_0x3a1365+=0x1){_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x71')]?_0x23b78c[_0x2c907a[_0x3a1365][_0x2254('0x71')]][_0x2254('0x8b')]:_0x2c907a[_0x3a1365][_0x2254('0x72')];_0x5e94b6=_0x2c907a[_0x3a1365]['function']?_[_0x2254('0x73')](_0x3a8d4f[_0x2c907a[_0x3a1365][_0x2254('0x74')]],'%s',_0x5e94b6):_0x5e94b6;_0x5e94b6=_0x2c907a[_0x3a1365][_0x2254('0x8c')]?_['replace'](_0x2f3650[_0x2c907a[_0x3a1365][_0x2254('0x8c')]],'%s',_0x5e94b6):_0x5e94b6;if(_0x2c907a[_0x3a1365][_0x2254('0x75')]){_0x56239e[_0x2254('0x69')](_0x5e94b6);}_0x2c907a[_0x3a1365][_0x2254('0x76')]&&_0x56239e[_0x2254('0x3c')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x56239e[_0x2254('0x72')](_0x5e94b6,_0x2c907a[_0x3a1365][_0x2254('0x77')]||_0x5e94b6);}if(_0x3b1d5c['joins']){_0x3b1d5c[_0x2254('0x79')]=JSON[_0x2254('0x78')](_0x3b1d5c['joins']);for(var _0x4cec5b=0x0;_0x4cec5b<_0x3b1d5c[_0x2254('0x79')]['length'];_0x4cec5b+=0x1){if(_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]&&_[_0x2254('0x65')](_0x1f7a48,_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')])&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7a')]&&_0x3b1d5c[_0x2254('0x79')][_0x4cec5b]['foreignTable']&&_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7c')]){_0x56239e[_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x30')]](_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],null,util['format']('%s.%s\x20=\x20%s.%s',_0x3b1d5c[_0x2254('0x7e')],_0x3b1d5c['joins'][_0x4cec5b][_0x2254('0x7a')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7b')],_0x3b1d5c[_0x2254('0x79')][_0x4cec5b][_0x2254('0x7c')]));}}}if(_0x3b1d5c[_0x2254('0x7f')]){_0x3b1d5c[_0x2254('0x7f')]=JSON['parse'](_0x3b1d5c[_0x2254('0x7f')]);_0x56239e[_0x2254('0x3e')](_0x36d121(_0x3b1d5c['conditions'][_0x2254('0x69')]));}_0x30307a=_0x56239e[_0x2254('0x80')]();_0x56239e[_0x2254('0x20')](_0x30f2c9);_0x56239e[_0x2254('0x1e')](0x0);return;}})[_0x2254('0x25')](function(){if(_0x1c317b[_0x2254('0x8e')]===_0x2254('0x8f')){return null;}var _0x38e2df=_[_0x2254('0x41')](_0x1c317b,{'name':_0x1c317b[_0x2254('0x90')]||_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c['name'],'basename':_0x2ad519,'savename':util[_0x2254('0x8c')](_0x2254('0x91'),_0x1c317b[_0x2254('0x2a')]||_0x3b1d5c[_0x2254('0x2a')],require(_0x2254('0x92'))[_0x2254('0x93')](0x4),_0x1c317b[_0x2254('0x8e')]||'csv'),'reportId':_0x3b1d5c['id'],'reportType':_0x2254('0x94')});return db[_0x2254('0x95')][_0x2254('0x4b')](_0x38e2df,{'raw':!![]});})['then'](function(_0x60f5ac){if(_0x3b1d5c[_0x2254('0x7e')]===_0x2254('0x96')){_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x97'),_0x1c317b['startDate'],_0x1c317b[_0x2254('0x98')]);}else{_0x30307a[_0x2254('0x3e')](_0x3b1d5c[_0x2254('0x7e')]+_0x2254('0x99'),_0x1c317b[_0x2254('0x9a')],_0x1c317b['endDate']);}if(_0x60f5ac){logger['info'](_0x2254('0x9b'),_0x30307a['toString']());require(_0x2254('0x9c'))[_0x2254('0x9d')](path[_0x2254('0x54')](__dirname,_0x2254('0x9e'),_0x60f5ac[_0x2254('0x8e')]),[_0x60f5ac['id'],_0x30307a[_0x2254('0x83')](),path['join'](__dirname,'../../files/reports',_0x60f5ac[_0x2254('0x9f')]),_0x2ad519]);return _0x60f5ac;}else{var _0x3317d4=squel[_0x2254('0x6f')]();_0x3317d4[_0x2254('0x70')]('('+_0x30307a['toString']()+')',_0x2254('0xa0'));_0x3317d4[_0x2254('0x72')](_0x2254('0xa1'),_0x2254('0x21'));_0x30307a[_0x2254('0x20')](_0x1c317b[_0x2254('0x20')]||_0x30f2c9);_0x30307a[_0x2254('0x1e')](_0x1c317b[_0x2254('0x1e')]||0x0);return dbH[_0x2254('0xa2')]['query'](_0x3317d4[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')]['SELECT']})[_0x2254('0x25')](function(_0xe38a28){if(!_0xe38a28[_0x2254('0x39')]){_0x2b5dba=0x0;}else{_0x2b5dba=_0xe38a28[0x0]['count']||0x0;}return dbH['sequelize'][_0x2254('0x33')](_0x30307a[_0x2254('0x83')](),{'type':dbH[_0x2254('0xa2')][_0x2254('0x84')][_0x2254('0xa3')]});})[_0x2254('0x25')](function(_0x4011de){return{'rows':_0x4011de||[],'count':_0x2b5dba};});}});}exports[_0x2254('0xa4')]=function(_0x5cb3d1,_0x1d8238){return runReport(_0x5cb3d1[_0x2254('0x47')],_0x5cb3d1[_0x2254('0x33')],_0x5cb3d1[_0x2254('0x42')])[_0x2254('0x25')](respondWithResult(_0x1d8238,null))[_0x2254('0x46')](handleError(_0x1d8238,null));};exports['runReport']=runReport;exports['query']=function(_0x40339d,_0x4b3b96){var _0x59b8af=0xa;var _0x408695=[_0x2254('0x54'),_0x2254('0x55'),_0x2254('0x56'),'cross_join'];var _0x596eae={'SUM':_0x2254('0x58'),'COUNT':_0x2254('0x59'),'COUNT DISTINCT':_0x2254('0x5a'),'MAX':'MAX(%s)','MIN':_0x2254('0x5c'),'AVG':_0x2254('0x5d'),'GROUP_CONCAT':_0x2254('0x5e'),'GROUP_CONCAT ASC':_0x2254('0x5f'),'GROUP_CONCAT DESC':_0x2254('0x60')};var _0x739a29={'SEC_TO_TIME':_0x2254('0x61'),'DATE':'DATE(%s)','HOUR':_0x2254('0x63'),'ROUND':_0x2254('0x64'),'UNIX_TIMESTAMP':_0x2254('0x85')};var _0x243466=function(_0x1b8587){return!_[_0x2254('0x65')]([_0x2254('0x66'),_0x2254('0xa5'),_0x2254('0x86'),'IS\x20NOT\x20EMPTY'],_0x1b8587);};var _0xbec5d0=function(_0x18f841){if(!_0x18f841||!_0x18f841[_0x2254('0x68')][_0x2254('0x39')]){return'';}for(var _0x275b56='(',_0x315add=0x0;_0x315add<_0x18f841['rules']['length'];_0x315add+=0x1){_0x315add>0x0&&(_0x275b56+='\x20'+_0x18f841[_0x2254('0x87')]+'\x20');_0x275b56+=_0x18f841['rules'][_0x315add][_0x2254('0x69')]?_0xbec5d0(_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x69')]):_0x18f841[_0x2254('0x68')][_0x315add]['field']+'\x20'+_0x18f841[_0x2254('0x68')][_0x315add][_0x2254('0x6a')]+(_0x243466(_0x18f841[_0x2254('0x68')][_0x315add]['condition'])?'\x20'+_0x18f841['rules'][_0x315add][_0x2254('0x88')]:'');}return _0x275b56+')';};var _0x51b02a={'where':{'id':_0x40339d[_0x2254('0x47')]['id']}},_0x3e7642,_0xe1abb6,_0x1a44d0,_0x4af6a7,_0x539aba;_0x51b02a=_[_0x2254('0x41')]({},_0x51b02a,_0x40339d[_0x2254('0x42')]);return db[_0x2254('0x2e')][_0x2254('0x4a')](_0x51b02a)['then'](function(_0x34e28b){if(_0x34e28b){_0x3e7642=_0x34e28b;return _0x34e28b[_0x2254('0x89')]();}return null;})[_0x2254('0x25')](function(_0x5d373){if(_0x5d373){if(!_0x5d373[_0x2254('0x39')]){throw new db[(_0x2254('0x6b'))]['ValidationErrorItem'](_0x2254('0x6c'),0x193);}_0xe1abb6=_0x5d373;return db[_0x2254('0x6d')]['findAll']({'raw':!![]});}return null;})[_0x2254('0x25')](function(_0x56a7ce){if(_0x56a7ce){_0x1a44d0=_[_0x2254('0x6e')](_0x56a7ce,'id');var _0x34bf19;var _0x4965c7=squel[_0x2254('0x6f')]();_0x4965c7[_0x2254('0x70')](_0x3e7642[_0x2254('0x7e')]);for(var _0x45541b=0x0;_0x45541b<_0xe1abb6[_0x2254('0x39')];_0x45541b+=0x1){_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x71')]?_0x1a44d0[_0xe1abb6[_0x45541b][_0x2254('0x71')]][_0x2254('0x8b')]:_0xe1abb6[_0x45541b][_0x2254('0x72')];_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x74')]?_[_0x2254('0x73')](_0x596eae[_0xe1abb6[_0x45541b][_0x2254('0x74')]],'%s',_0x34bf19):_0x34bf19;_0x34bf19=_0xe1abb6[_0x45541b][_0x2254('0x8c')]?_[_0x2254('0x73')](_0x739a29[_0xe1abb6[_0x45541b]['format']],'%s',_0x34bf19):_0x34bf19;if(_0xe1abb6[_0x45541b][_0x2254('0x75')]){_0x4965c7[_0x2254('0x69')](_0x34bf19);}_0xe1abb6[_0x45541b]['orderBy']&&_0x4965c7['order'](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x76')]===_0x2254('0x8d')?![]:!![]);_0x4965c7[_0x2254('0x72')](_0x34bf19,_0xe1abb6[_0x45541b][_0x2254('0x77')]||_0x34bf19);}if(_0x3e7642['joins']){_0x3e7642[_0x2254('0x79')]=JSON['parse'](_0x3e7642['joins']);for(var _0x40fec0=0x0;_0x40fec0<_0x3e7642[_0x2254('0x79')][_0x2254('0x39')];_0x40fec0+=0x1){if(_0x3e7642[_0x2254('0x79')][_0x40fec0]['type']&&_[_0x2254('0x65')](_0x408695,_0x3e7642['joins'][_0x40fec0][_0x2254('0x30')])&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')]&&_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]){_0x4965c7[_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x30')]](_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],null,util['format'](_0x2254('0x7d'),_0x3e7642[_0x2254('0x7e')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7a')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7b')],_0x3e7642[_0x2254('0x79')][_0x40fec0][_0x2254('0x7c')]));}}}if(_0x3e7642['conditions']){_0x3e7642[_0x2254('0x7f')]=JSON[_0x2254('0x78')](_0x3e7642[_0x2254('0x7f')]);_0x4965c7[_0x2254('0x3e')](_0xbec5d0(_0x3e7642[_0x2254('0x7f')]['group']));}_0x539aba=_0x4965c7[_0x2254('0x80')]();_0x4965c7[_0x2254('0x20')](_0x59b8af);_0x4965c7['offset'](0x0);logger[_0x2254('0x81')](_0x2254('0x82'),_0x4965c7[_0x2254('0x83')]());return dbH['sequelize'][_0x2254('0x33')](_0x4965c7[_0x2254('0x83')](),{'type':dbH['sequelize'][_0x2254('0x84')][_0x2254('0xa3')]});}})[_0x2254('0x25')](function(){return{'sql':_0x539aba[_0x2254('0x83')]()};})['then'](respondWithResult(_0x4b3b96,null))[_0x2254('0x46')](handleError(_0x4b3b96,null));};
\ No newline at end of file
index 5d605a3..04b357c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e1b=['./analyticDefaultReport.attributes','exports','analytics_default_reports','lodash','util','api','moment','request-promise','path','../../config/environment'];(function(_0x45977c,_0x7eaed0){var _0x399413=function(_0x41cc76){while(--_0x41cc76){_0x45977c['push'](_0x45977c['shift']());}};_0x399413(++_0x7eaed0);}(_0x6e1b,0x1ed));var _0xb6e1=function(_0x440917,_0x20ea7b){_0x440917=_0x440917-0x0;var _0x5e906b=_0x6e1b[_0x440917];return _0x5e906b;};'use strict';var _=require(_0xb6e1('0x0'));var util=require(_0xb6e1('0x1'));var logger=require('../../config/logger')(_0xb6e1('0x2'));var moment=require(_0xb6e1('0x3'));var BPromise=require('bluebird');var rp=require(_0xb6e1('0x4'));var fs=require('fs');var path=require(_0xb6e1('0x5'));var rimraf=require('rimraf');var config=require(_0xb6e1('0x6'));var attributes=require(_0xb6e1('0x7'));module[_0xb6e1('0x8')]=function(_0x1970d1,_0x370486){return _0x1970d1['define']('AnalyticDefaultReport',attributes,{'tableName':_0xb6e1('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5f6=['path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','util','../../config/logger','api','bluebird','request-promise'];(function(_0x258a61,_0x2c55c3){var _0x19b44c=function(_0x384957){while(--_0x384957){_0x258a61['push'](_0x258a61['shift']());}};_0x19b44c(++_0x2c55c3);}(_0xa5f6,0x1db));var _0x6a5f=function(_0x2935d6,_0x57c319){_0x2935d6=_0x2935d6-0x0;var _0x523590=_0xa5f6[_0x2935d6];return _0x523590;};'use strict';var _=require('lodash');var util=require(_0x6a5f('0x0'));var logger=require(_0x6a5f('0x1'))(_0x6a5f('0x2'));var moment=require('moment');var BPromise=require(_0x6a5f('0x3'));var rp=require(_0x6a5f('0x4'));var fs=require('fs');var path=require(_0x6a5f('0x5'));var rimraf=require(_0x6a5f('0x6'));var config=require(_0x6a5f('0x7'));var attributes=require(_0x6a5f('0x8'));module[_0x6a5f('0x9')]=function(_0x48fa85,_0x3b345d){return _0x48fa85[_0x6a5f('0xa')](_0x6a5f('0xb'),attributes,{'tableName':'analytics_default_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89f5c72..9542ef9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d4f=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5b157d,_0x3cf94f){var _0x4c3288=function(_0x2856a0){while(--_0x2856a0){_0x5b157d['push'](_0x5b157d['shift']());}};_0x4c3288(++_0x3cf94f);}(_0x5d4f,0x117));var _0xf5d4=function(_0x1501e6,_0x4f9218){_0x1501e6=_0x1501e6-0x0;var _0x3b7199=_0x5d4f[_0x1501e6];return _0x3b7199;};'use strict';var _=require(_0xf5d4('0x0'));var util=require(_0xf5d4('0x1'));var moment=require(_0xf5d4('0x2'));var BPromise=require(_0xf5d4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf5d4('0x4'));var db=require(_0xf5d4('0x5'))['db'];var utils=require(_0xf5d4('0x6'));var logger=require('../../config/logger')(_0xf5d4('0x7'));var config=require(_0xf5d4('0x8'));var jayson=require(_0xf5d4('0x9'));var client=jayson[_0xf5d4('0xa')][_0xf5d4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38fa79,_0x61386c,_0x550e6b){return new BPromise(function(_0x2b879f,_0x51be85){return client['request'](_0x38fa79,_0x550e6b)[_0xf5d4('0xc')](function(_0x280b01){logger[_0xf5d4('0xd')](_0xf5d4('0xe'),_0x61386c,'request\x20sent');logger[_0xf5d4('0xf')](_0xf5d4('0x10'),_0x61386c,_0xf5d4('0x11'),JSON[_0xf5d4('0x12')](_0x280b01));if(_0x280b01[_0xf5d4('0x13')]){if(_0x280b01['error']['code']===0x1f4){logger[_0xf5d4('0x13')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x61386c,_0x280b01[_0xf5d4('0x13')][_0xf5d4('0x14')]);return _0x51be85(_0x280b01[_0xf5d4('0x13')][_0xf5d4('0x14')]);}logger[_0xf5d4('0x13')](_0xf5d4('0xe'),_0x61386c,_0x280b01[_0xf5d4('0x13')][_0xf5d4('0x14')]);return _0x2b879f(_0x280b01[_0xf5d4('0x13')][_0xf5d4('0x14')]);}else{logger[_0xf5d4('0xd')]('AnalyticDefaultReport,\x20%s,\x20%s',_0x61386c,_0xf5d4('0x11'));_0x2b879f(_0x280b01[_0xf5d4('0x15')]['message']);}})[_0xf5d4('0x16')](function(_0x4051f5){logger['error'](_0xf5d4('0xe'),_0x61386c,_0x4051f5);_0x51be85(_0x4051f5);});});}
\ No newline at end of file
+var _0xc975=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','code','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x3eef17,_0x9849dd){var _0x4223bd=function(_0x2a3f82){while(--_0x2a3f82){_0x3eef17['push'](_0x3eef17['shift']());}};_0x4223bd(++_0x9849dd);}(_0xc975,0xba));var _0x5c97=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc975[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x5c97('0x0'));var util=require(_0x5c97('0x1'));var moment=require(_0x5c97('0x2'));var BPromise=require(_0x5c97('0x3'));var rs=require(_0x5c97('0x4'));var fs=require('fs');var Redis=require(_0x5c97('0x5'));var db=require(_0x5c97('0x6'))['db'];var utils=require(_0x5c97('0x7'));var logger=require('../../config/logger')(_0x5c97('0x8'));var config=require(_0x5c97('0x9'));var jayson=require(_0x5c97('0xa'));var client=jayson[_0x5c97('0xb')][_0x5c97('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x53649c,_0x945ab3,_0x24d613){return new BPromise(function(_0x425c3f,_0xc8424a){return client[_0x5c97('0xd')](_0x53649c,_0x24d613)[_0x5c97('0xe')](function(_0x419b51){logger['info'](_0x5c97('0xf'),_0x945ab3,_0x5c97('0x10'));logger['debug'](_0x5c97('0x11'),_0x945ab3,_0x5c97('0x10'),JSON['stringify'](_0x419b51));if(_0x419b51['error']){if(_0x419b51['error'][_0x5c97('0x12')]===0x1f4){logger[_0x5c97('0x13')](_0x5c97('0xf'),_0x945ab3,_0x419b51[_0x5c97('0x13')][_0x5c97('0x14')]);return _0xc8424a(_0x419b51['error'][_0x5c97('0x14')]);}logger[_0x5c97('0x13')](_0x5c97('0xf'),_0x945ab3,_0x419b51[_0x5c97('0x13')][_0x5c97('0x14')]);return _0x425c3f(_0x419b51[_0x5c97('0x13')]['message']);}else{logger[_0x5c97('0x15')](_0x5c97('0xf'),_0x945ab3,_0x5c97('0x10'));_0x425c3f(_0x419b51[_0x5c97('0x16')][_0x5c97('0x14')]);}})[_0x5c97('0x17')](function(_0x58ecd0){logger['error'](_0x5c97('0xf'),_0x945ab3,_0x58ecd0);_0xc8424a(_0x58ecd0);});});}
\ No newline at end of file
index 956d80b..e3295d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e6=['post','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','/:id/preview','preview','/:id/run','run','query'];(function(_0x3d5f84,_0x569548){var _0x1981b8=function(_0x3bf9f3){while(--_0x3bf9f3){_0x3d5f84['push'](_0x3d5f84['shift']());}};_0x1981b8(++_0x569548);}(_0xf4e6,0xd5));var _0x6f4e=function(_0x4914ad,_0x551a18){_0x4914ad=_0x4914ad-0x0;var _0x3cd61f=_0xf4e6[_0x4914ad];return _0x3cd61f;};'use strict';var multer=require('multer');var util=require(_0x6f4e('0x0'));var path=require(_0x6f4e('0x1'));var timeout=require(_0x6f4e('0x2'));var express=require('express');var router=express[_0x6f4e('0x3')]();var fs_extra=require(_0x6f4e('0x4'));var auth=require(_0x6f4e('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6f4e('0x6'));var controller=require(_0x6f4e('0x7'));router[_0x6f4e('0x8')]('/',auth[_0x6f4e('0x9')](),controller[_0x6f4e('0xa')]);router[_0x6f4e('0x8')](_0x6f4e('0xb'),auth[_0x6f4e('0x9')](),controller['show']);router['get'](_0x6f4e('0xc'),auth['isAuthenticated'](),controller[_0x6f4e('0xd')]);router['get'](_0x6f4e('0xe'),auth[_0x6f4e('0x9')](),controller[_0x6f4e('0xf')]);router[_0x6f4e('0x8')]('/:id/query',auth[_0x6f4e('0x9')](),controller[_0x6f4e('0x10')]);router[_0x6f4e('0x11')]('/',auth[_0x6f4e('0x9')](),controller['create']);router[_0x6f4e('0x12')](_0x6f4e('0xb'),auth['isAuthenticated'](),controller[_0x6f4e('0x13')]);router[_0x6f4e('0x14')](_0x6f4e('0xb'),auth[_0x6f4e('0x9')](),controller[_0x6f4e('0x15')]);module[_0x6f4e('0x16')]=router;
\ No newline at end of file
+var _0xd36c=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','index','/:id','show','preview','/:id/query','query','post','put','update'];(function(_0xbe31a4,_0x11ba89){var _0x15ec28=function(_0x124633){while(--_0x124633){_0xbe31a4['push'](_0xbe31a4['shift']());}};_0x15ec28(++_0x11ba89);}(_0xd36c,0x1a6));var _0xcd36=function(_0x3a7634,_0x2db384){_0x3a7634=_0x3a7634-0x0;var _0x23bbe9=_0xd36c[_0x3a7634];return _0x23bbe9;};'use strict';var multer=require(_0xcd36('0x0'));var util=require(_0xcd36('0x1'));var path=require(_0xcd36('0x2'));var timeout=require(_0xcd36('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcd36('0x4'));var config=require(_0xcd36('0x5'));var controller=require(_0xcd36('0x6'));router[_0xcd36('0x7')]('/',auth[_0xcd36('0x8')](),controller[_0xcd36('0x9')]);router[_0xcd36('0x7')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0xb')]);router[_0xcd36('0x7')]('/:id/preview',auth['isAuthenticated'](),controller[_0xcd36('0xc')]);router[_0xcd36('0x7')]('/:id/run',auth[_0xcd36('0x8')](),controller['run']);router[_0xcd36('0x7')](_0xcd36('0xd'),auth['isAuthenticated'](),controller[_0xcd36('0xe')]);router[_0xcd36('0xf')]('/',auth[_0xcd36('0x8')](),controller['create']);router[_0xcd36('0x10')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0x11')]);router[_0xcd36('0x12')](_0xcd36('0xa'),auth[_0xcd36('0x8')](),controller[_0xcd36('0x13')]);module['exports']=router;
\ No newline at end of file
index ad5dd49..86b3ff9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb78a=['INTEGER','moment','exports','STRING','ENUM','csv','pdf','DATE','Loading','manual','scheduled'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xb78a,0x9b));var _0xab78=function(_0x2f42d3,_0x362e7a){_0x2f42d3=_0x2f42d3-0x0;var _0x25a67e=_0xb78a[_0x2f42d3];return _0x25a67e;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xab78('0x0'));module[_0xab78('0x1')]={'name':{'type':Sequelize[_0xab78('0x2')],'allowNull':![]},'basename':{'type':Sequelize['STRING'],'allowNull':![]},'output':{'type':Sequelize[_0xab78('0x3')](_0xab78('0x4'),_0xab78('0x5'),'xlsx'),'allowNull':![],'defaultValue':_0xab78('0x4')},'savename':{'type':Sequelize[_0xab78('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0xab78('0x6')]},'endDate':{'type':Sequelize[_0xab78('0x6')]},'status':{'type':Sequelize[_0xab78('0x2')],'defaultValue':_0xab78('0x7')},'type':{'type':Sequelize['ENUM'](_0xab78('0x8'),_0xab78('0x9')),'allowNull':![],'defaultValue':'manual'},'reportId':{'type':Sequelize[_0xab78('0xa')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xa50d=['exports','STRING','ENUM','csv','pdf','xlsx','DATE','scheduled','manual','INTEGER','UNSIGNED','moment'];(function(_0x51fa7b,_0x4b82ba){var _0x52c266=function(_0x18f173){while(--_0x18f173){_0x51fa7b['push'](_0x51fa7b['shift']());}};_0x52c266(++_0x4b82ba);}(_0xa50d,0x173));var _0xda50=function(_0x46e7d9,_0x288cea){_0x46e7d9=_0x46e7d9-0x0;var _0x9c9edb=_0xa50d[_0x46e7d9];return _0x9c9edb;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xda50('0x0'));module[_0xda50('0x1')]={'name':{'type':Sequelize[_0xda50('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0xda50('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0xda50('0x3')](_0xda50('0x4'),_0xda50('0x5'),_0xda50('0x6')),'allowNull':![],'defaultValue':_0xda50('0x4')},'savename':{'type':Sequelize['STRING'],'allowNull':![]},'startDate':{'type':Sequelize['DATE']},'endDate':{'type':Sequelize[_0xda50('0x7')]},'status':{'type':Sequelize[_0xda50('0x2')],'defaultValue':'Loading'},'type':{'type':Sequelize[_0xda50('0x3')]('manual',_0xda50('0x8')),'allowNull':![],'defaultValue':_0xda50('0x9')},'reportId':{'type':Sequelize[_0xda50('0xa')](0xb)[_0xda50('0xb')]},'reportType':{'type':Sequelize[_0xda50('0x2')]}};
\ No newline at end of file
index 1f52966..d547553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc337=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','Content-Range','apply','reject','save','update','get','UserProfileResource','then','error','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','VIRTUAL','merge','options','include','AnalyticExtractedReport','findAll','rows','show','includeAll','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','ExtractedReports','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','destroy','download','basename','output','existsSync','server/files/reports','savename','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','sendStatus','join','root','%s.%s','toLowerCase','eml-format','moment','mustache','util','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse'];(function(_0x1e9a13,_0x4422d4){var _0x34f6ec=function(_0xd29eea){while(--_0xd29eea){_0x1e9a13['push'](_0x1e9a13['shift']());}};_0x34f6ec(++_0x4422d4);}(_0xc337,0x1b6));var _0x7c33=function(_0x2912d0,_0x9fa7d0){_0x2912d0=_0x2912d0-0x0;var _0x153483=_0xc337[_0x2912d0];return _0x153483;};'use strict';var emlformat=require(_0x7c33('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7c33('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x7c33('0x2'));var util=require(_0x7c33('0x3'));var path=require('path');var sox=require('sox');var csv=require(_0x7c33('0x4'));var ejs=require(_0x7c33('0x5'));var fs=require('fs');var fs_extra=require(_0x7c33('0x6'));var _=require(_0x7c33('0x7'));var squel=require(_0x7c33('0x8'));var crypto=require(_0x7c33('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x7c33('0xa'));var Papa=require(_0x7c33('0xb'));var Redis=require(_0x7c33('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x7c33('0xd'));var as=require(_0x7c33('0xe'));var hardwareService=require(_0x7c33('0xf'));var logger=require(_0x7c33('0x10'))(_0x7c33('0x11'));var utils=require('../../config/utils');var config=require(_0x7c33('0x12'));var licenseUtil=require(_0x7c33('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x311b42,_0x4762bf){_0x4762bf=_0x4762bf||0xcc;return function(_0x294284){if(_0x294284){return _0x311b42['sendStatus'](_0x4762bf);}return _0x311b42[_0x7c33('0x14')](_0x4762bf)[_0x7c33('0x15')]();};}function respondWithResult(_0x562294,_0x474c7e){_0x474c7e=_0x474c7e||0xc8;return function(_0x494062){if(_0x494062){return _0x562294[_0x7c33('0x14')](_0x474c7e)['json'](_0x494062);}};}function respondWithFilteredResult(_0x201679,_0x10e8d5){return function(_0x3f18c4){if(_0x3f18c4){var _0x46ac84=typeof _0x10e8d5[_0x7c33('0x16')]===_0x7c33('0x17')&&typeof _0x10e8d5['limit']===_0x7c33('0x17');var _0x292c5b=_0x3f18c4[_0x7c33('0x18')];var _0x36ef2d=_0x46ac84?0x0:_0x10e8d5[_0x7c33('0x16')];var _0x19c6ff=_0x46ac84?_0x3f18c4['count']:_0x10e8d5[_0x7c33('0x16')]+_0x10e8d5[_0x7c33('0x19')];var _0x11a71a;if(_0x19c6ff>=_0x292c5b){_0x19c6ff=_0x292c5b;_0x11a71a=0xc8;}else{_0x11a71a=0xce;}_0x201679[_0x7c33('0x14')](_0x11a71a);return _0x201679['set'](_0x7c33('0x1a'),_0x36ef2d+'-'+_0x19c6ff+'/'+_0x292c5b)['json'](_0x3f18c4);}return null;};}function patchUpdates(_0x3f082f){return function(_0x4aec17){try{jsonpatch[_0x7c33('0x1b')](_0x4aec17,_0x3f082f,!![]);}catch(_0x267007){return BPromise[_0x7c33('0x1c')](_0x267007);}return _0x4aec17[_0x7c33('0x1d')]();};}function saveUpdates(_0x371fc0,_0x26908b){return function(_0x3a5cfd){if(_0x3a5cfd){return _0x3a5cfd[_0x7c33('0x1e')](_0x371fc0)['then'](function(_0x3f21f9){return _0x3f21f9;});}return null;};}function removeEntity(_0x2a26e5,_0x483d36){return function(_0x1fb685){if(_0x1fb685){return _0x1fb685['destroy']()['then'](function(){var _0x4626ce=_0x1fb685[_0x7c33('0x1f')]({'plain':!![]});var _0x468af5='ExtractedReports';return db[_0x7c33('0x20')]['destroy']({'where':{'type':_0x468af5,'resourceId':_0x4626ce['id']}})['then'](function(){return _0x1fb685;});})[_0x7c33('0x21')](function(){_0x2a26e5['status'](0xcc)[_0x7c33('0x15')]();});}};}function handleEntityNotFound(_0x45fff3,_0x1db7cb){return function(_0x194c2c){if(!_0x194c2c){_0x45fff3['sendStatus'](0x194);}return _0x194c2c;};}function handleError(_0x53a131,_0x184a00){_0x184a00=_0x184a00||0x1f4;return function(_0x2bcf58){logger[_0x7c33('0x22')](_0x2bcf58['stack']);if(_0x2bcf58[_0x7c33('0x23')]){delete _0x2bcf58[_0x7c33('0x23')];}_0x53a131[_0x7c33('0x14')](_0x184a00)[_0x7c33('0x24')](_0x2bcf58);};}exports[_0x7c33('0x25')]=function(_0x151c41,_0xf64946){var _0x2fc885={},_0x45ef86={},_0x233f74={'count':0x0,'rows':[]};var _0x4dea20=_[_0x7c33('0x26')](db['AnalyticExtractedReport'][_0x7c33('0x27')],function(_0x34ae59){return{'name':_0x34ae59[_0x7c33('0x28')],'type':_0x34ae59['type']['key']};});_0x45ef86[_0x7c33('0x29')]=_[_0x7c33('0x26')](_0x4dea20,_0x7c33('0x23'));_0x45ef86[_0x7c33('0x2a')]=_[_0x7c33('0x2b')](_0x151c41['query']);_0x45ef86[_0x7c33('0x2c')]=_[_0x7c33('0x2d')](_0x45ef86[_0x7c33('0x29')],_0x45ef86[_0x7c33('0x2a')]);_0x2fc885[_0x7c33('0x2e')]=_[_0x7c33('0x2d')](_0x45ef86[_0x7c33('0x29')],qs[_0x7c33('0x2f')](_0x151c41[_0x7c33('0x2a')]['fields']));_0x2fc885[_0x7c33('0x2e')]=_0x2fc885[_0x7c33('0x2e')][_0x7c33('0x30')]?_0x2fc885[_0x7c33('0x2e')]:_0x45ef86['model'];if(!_0x151c41['query'][_0x7c33('0x31')](_0x7c33('0x32'))){_0x2fc885[_0x7c33('0x19')]=qs[_0x7c33('0x19')](_0x151c41[_0x7c33('0x2a')][_0x7c33('0x19')]);_0x2fc885[_0x7c33('0x16')]=qs[_0x7c33('0x16')](_0x151c41[_0x7c33('0x2a')][_0x7c33('0x16')]);}_0x2fc885[_0x7c33('0x33')]=qs[_0x7c33('0x34')](_0x151c41[_0x7c33('0x2a')]['sort']);_0x2fc885[_0x7c33('0x35')]=qs[_0x7c33('0x2c')](_['pick'](_0x151c41[_0x7c33('0x2a')],_0x45ef86['filters']),_0x4dea20);if(_0x151c41[_0x7c33('0x2a')]['filter']){_0x2fc885[_0x7c33('0x35')]=_['merge'](_0x2fc885['where'],{'$or':_[_0x7c33('0x26')](_0x4dea20,function(_0x323de6){if(_0x323de6['type']!==_0x7c33('0x36')){var _0x55fd41={};_0x55fd41[_0x323de6[_0x7c33('0x23')]]={'$like':'%'+_0x151c41[_0x7c33('0x2a')]['filter']+'%'};return _0x55fd41;}})});}_0x2fc885=_[_0x7c33('0x37')]({},_0x2fc885,_0x151c41[_0x7c33('0x38')]);var _0x407cbb={'where':_0x2fc885[_0x7c33('0x35')]};return db['AnalyticExtractedReport'][_0x7c33('0x18')](_0x407cbb)[_0x7c33('0x21')](function(_0x18e296){_0x233f74[_0x7c33('0x18')]=_0x18e296;if(_0x151c41[_0x7c33('0x2a')]['includeAll']){_0x2fc885[_0x7c33('0x39')]=[{'all':!![]}];}return db[_0x7c33('0x3a')][_0x7c33('0x3b')](_0x2fc885);})[_0x7c33('0x21')](function(_0x861c){_0x233f74[_0x7c33('0x3c')]=_0x861c;return _0x233f74;})[_0x7c33('0x21')](respondWithFilteredResult(_0xf64946,_0x2fc885))['catch'](handleError(_0xf64946,null));};exports[_0x7c33('0x3d')]=function(_0x235e14,_0x577cc5){var _0x35a8bc={'raw':!![],'where':{'id':_0x235e14['params']['id']}},_0x42940d={};_0x42940d[_0x7c33('0x29')]=_[_0x7c33('0x2b')](db['AnalyticExtractedReport'][_0x7c33('0x27')]);_0x42940d['query']=_['keys'](_0x235e14['query']);_0x42940d[_0x7c33('0x2c')]=_[_0x7c33('0x2d')](_0x42940d['model'],_0x42940d[_0x7c33('0x2a')]);_0x35a8bc['attributes']=_['intersection'](_0x42940d[_0x7c33('0x29')],qs[_0x7c33('0x2f')](_0x235e14['query']['fields']));_0x35a8bc['attributes']=_0x35a8bc[_0x7c33('0x2e')][_0x7c33('0x30')]?_0x35a8bc[_0x7c33('0x2e')]:_0x42940d['model'];if(_0x235e14[_0x7c33('0x2a')][_0x7c33('0x3e')]){_0x35a8bc[_0x7c33('0x39')]=[{'all':!![]}];}_0x35a8bc=_[_0x7c33('0x37')]({},_0x35a8bc,_0x235e14[_0x7c33('0x38')]);return db['AnalyticExtractedReport']['find'](_0x35a8bc)['then'](handleEntityNotFound(_0x577cc5,null))[_0x7c33('0x21')](respondWithResult(_0x577cc5,null))[_0x7c33('0x3f')](handleError(_0x577cc5,null));};exports[_0x7c33('0x40')]=function(_0x59c76e,_0x1bb673){return db[_0x7c33('0x3a')][_0x7c33('0x40')](_0x59c76e[_0x7c33('0x41')],{})[_0x7c33('0x21')](function(_0x3dcc7d){var _0xeb9584=_0x59c76e[_0x7c33('0x42')]['get']({'plain':!![]});if(!_0xeb9584)throw new Error(_0x7c33('0x43'));if(_0xeb9584[_0x7c33('0x44')]===_0x7c33('0x42')){var _0xf21f0e=_0x3dcc7d[_0x7c33('0x1f')]({'plain':!![]});var _0x5be194=_0x7c33('0x45');return db[_0x7c33('0x46')]['find']({'where':{'name':_0x5be194,'userProfileId':_0xeb9584['userProfileId']},'raw':!![]})[_0x7c33('0x21')](function(_0x5a4f81){if(_0x5a4f81&&_0x5a4f81[_0x7c33('0x47')]===0x0){return db['UserProfileResource'][_0x7c33('0x40')]({'name':_0xf21f0e[_0x7c33('0x23')],'resourceId':_0xf21f0e['id'],'type':_0x5a4f81[_0x7c33('0x23')],'sectionId':_0x5a4f81['id']},{})[_0x7c33('0x21')](function(){return _0x3dcc7d;});}else{return _0x3dcc7d;}})[_0x7c33('0x3f')](function(_0x454916){logger[_0x7c33('0x22')](_0x7c33('0x48'),_0x454916);throw _0x454916;});}return _0x3dcc7d;})[_0x7c33('0x21')](respondWithResult(_0x1bb673,0xc9))['catch'](handleError(_0x1bb673,null));};exports[_0x7c33('0x1e')]=function(_0x57cc9f,_0x54a991){if(_0x57cc9f[_0x7c33('0x41')]['id']){delete _0x57cc9f[_0x7c33('0x41')]['id'];}return db[_0x7c33('0x3a')][_0x7c33('0x49')]({'where':{'id':_0x57cc9f[_0x7c33('0x4a')]['id']}})[_0x7c33('0x21')](handleEntityNotFound(_0x54a991,null))[_0x7c33('0x21')](saveUpdates(_0x57cc9f['body'],null))[_0x7c33('0x21')](respondWithResult(_0x54a991,null))[_0x7c33('0x3f')](handleError(_0x54a991,null));};exports[_0x7c33('0x4b')]=function(_0x1e5206,_0x5dc9c9){return db[_0x7c33('0x3a')][_0x7c33('0x49')]({'where':{'id':_0x1e5206[_0x7c33('0x4a')]['id']}})[_0x7c33('0x21')](handleEntityNotFound(_0x5dc9c9,null))[_0x7c33('0x21')](removeEntity(_0x5dc9c9,null))['catch'](handleError(_0x5dc9c9,null));};exports[_0x7c33('0x4c')]=function(_0x3c9e31,_0x1aab77,_0x5ad0fb){return db[_0x7c33('0x3a')][_0x7c33('0x49')]({'where':{'id':_0x3c9e31['params']['id']},'attributes':['name',_0x7c33('0x4d'),'savename',_0x7c33('0x4e')],'raw':!![]})[_0x7c33('0x21')](handleEntityNotFound(_0x1aab77,null))['then'](function(_0x50824d){if(_0x50824d){if(!fs[_0x7c33('0x4f')](path['join'](config['root'],_0x7c33('0x50'),_0x50824d[_0x7c33('0x51')]))){throw new db[(_0x7c33('0x52'))]['ValidationError'](_0x7c33('0x53'));}if(_0x3c9e31['query'][_0x7c33('0x54')]){return _0x1aab77[_0x7c33('0x55')](0xc8);}return _0x1aab77[_0x7c33('0x4c')](path[_0x7c33('0x56')](config[_0x7c33('0x57')],_0x7c33('0x50'),_0x50824d[_0x7c33('0x51')]),util['format'](_0x7c33('0x58'),_0x50824d[_0x7c33('0x4d')]||_0x50824d['name'],_0x50824d['output'][_0x7c33('0x59')]()));}})[_0x7c33('0x3f')](handleError(_0x1aab77,null));};
\ No newline at end of file
+var _0x1a91=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','download','basename','savename','output','existsSync','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','root','server/files/reports','format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','AnalyticExtractedReport','includeAll','include','findAll','catch','show','params','find','create','body'];(function(_0x576fdb,_0x1ed0a2){var _0x55d055=function(_0x5953b5){while(--_0x5953b5){_0x576fdb['push'](_0x576fdb['shift']());}};_0x55d055(++_0x1ed0a2);}(_0x1a91,0x188));var _0x11a9=function(_0x13639d,_0x3c996b){_0x13639d=_0x13639d-0x0;var _0x52ef14=_0x1a91[_0x13639d];return _0x52ef14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11a9('0x0'));var zipdir=require(_0x11a9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x11a9('0x2'));var moment=require(_0x11a9('0x3'));var BPromise=require(_0x11a9('0x4'));var Mustache=require('mustache');var util=require(_0x11a9('0x5'));var path=require(_0x11a9('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x11a9('0x7'));var fs=require('fs');var fs_extra=require(_0x11a9('0x8'));var _=require(_0x11a9('0x9'));var squel=require(_0x11a9('0xa'));var crypto=require(_0x11a9('0xb'));var jsforce=require(_0x11a9('0xc'));var deskjs=require(_0x11a9('0xd'));var toCsv=require(_0x11a9('0xe'));var querystring=require(_0x11a9('0xf'));var Papa=require(_0x11a9('0x10'));var Redis=require(_0x11a9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x11a9('0x12'));var as=require(_0x11a9('0x13'));var hardwareService=require(_0x11a9('0x14'));var logger=require('../../config/logger')(_0x11a9('0x15'));var utils=require(_0x11a9('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x11a9('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1547c4,_0x3e7707){_0x3e7707=_0x3e7707||0xcc;return function(_0x1403a6){if(_0x1403a6){return _0x1547c4[_0x11a9('0x18')](_0x3e7707);}return _0x1547c4[_0x11a9('0x19')](_0x3e7707)[_0x11a9('0x1a')]();};}function respondWithResult(_0x5a798,_0x51bbd7){_0x51bbd7=_0x51bbd7||0xc8;return function(_0x56e8da){if(_0x56e8da){return _0x5a798['status'](_0x51bbd7)[_0x11a9('0x1b')](_0x56e8da);}};}function respondWithFilteredResult(_0x41523f,_0x22dfe1){return function(_0x4d7050){if(_0x4d7050){var _0x214754=typeof _0x22dfe1[_0x11a9('0x1c')]===_0x11a9('0x1d')&&typeof _0x22dfe1[_0x11a9('0x1e')]===_0x11a9('0x1d');var _0x591938=_0x4d7050[_0x11a9('0x1f')];var _0x5e9ad2=_0x214754?0x0:_0x22dfe1[_0x11a9('0x1c')];var _0x2ab7b5=_0x214754?_0x4d7050['count']:_0x22dfe1[_0x11a9('0x1c')]+_0x22dfe1['limit'];var _0x490071;if(_0x2ab7b5>=_0x591938){_0x2ab7b5=_0x591938;_0x490071=0xc8;}else{_0x490071=0xce;}_0x41523f[_0x11a9('0x19')](_0x490071);return _0x41523f['set'](_0x11a9('0x20'),_0x5e9ad2+'-'+_0x2ab7b5+'/'+_0x591938)[_0x11a9('0x1b')](_0x4d7050);}return null;};}function patchUpdates(_0x4ed466){return function(_0xf58a69){try{jsonpatch[_0x11a9('0x21')](_0xf58a69,_0x4ed466,!![]);}catch(_0x5be075){return BPromise[_0x11a9('0x22')](_0x5be075);}return _0xf58a69[_0x11a9('0x23')]();};}function saveUpdates(_0x488ee3,_0x1a79d2){return function(_0x4a67ba){if(_0x4a67ba){return _0x4a67ba[_0x11a9('0x24')](_0x488ee3)[_0x11a9('0x25')](function(_0x5f298d){return _0x5f298d;});}return null;};}function removeEntity(_0x5c9918,_0x125191){return function(_0x2f1354){if(_0x2f1354){return _0x2f1354[_0x11a9('0x26')]()[_0x11a9('0x25')](function(){var _0x1bea1a=_0x2f1354[_0x11a9('0x27')]({'plain':!![]});var _0xbd1ab8=_0x11a9('0x28');return db[_0x11a9('0x29')]['destroy']({'where':{'type':_0xbd1ab8,'resourceId':_0x1bea1a['id']}})[_0x11a9('0x25')](function(){return _0x2f1354;});})['then'](function(){_0x5c9918[_0x11a9('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x32729a,_0x36fae4){return function(_0x2d5d7b){if(!_0x2d5d7b){_0x32729a[_0x11a9('0x18')](0x194);}return _0x2d5d7b;};}function handleError(_0x426fd,_0x32a6f1){_0x32a6f1=_0x32a6f1||0x1f4;return function(_0x5bad9b){logger[_0x11a9('0x2a')](_0x5bad9b[_0x11a9('0x2b')]);if(_0x5bad9b[_0x11a9('0x2c')]){delete _0x5bad9b[_0x11a9('0x2c')];}_0x426fd['status'](_0x32a6f1)[_0x11a9('0x2d')](_0x5bad9b);};}exports[_0x11a9('0x2e')]=function(_0x5970ba,_0xdc1366){var _0x2bf7b5={},_0x28d697={},_0x3b43b7={'count':0x0,'rows':[]};var _0x53b25b=_[_0x11a9('0x2f')](db['AnalyticExtractedReport'][_0x11a9('0x30')],function(_0x35f41e){return{'name':_0x35f41e[_0x11a9('0x31')],'type':_0x35f41e[_0x11a9('0x32')]['key']};});_0x28d697[_0x11a9('0x33')]=_['map'](_0x53b25b,_0x11a9('0x2c'));_0x28d697[_0x11a9('0x34')]=_[_0x11a9('0x35')](_0x5970ba[_0x11a9('0x34')]);_0x28d697[_0x11a9('0x36')]=_[_0x11a9('0x37')](_0x28d697[_0x11a9('0x33')],_0x28d697[_0x11a9('0x34')]);_0x2bf7b5['attributes']=_[_0x11a9('0x37')](_0x28d697[_0x11a9('0x33')],qs['fields'](_0x5970ba['query'][_0x11a9('0x38')]));_0x2bf7b5['attributes']=_0x2bf7b5[_0x11a9('0x39')][_0x11a9('0x3a')]?_0x2bf7b5['attributes']:_0x28d697[_0x11a9('0x33')];if(!_0x5970ba['query'][_0x11a9('0x3b')]('nolimit')){_0x2bf7b5[_0x11a9('0x1e')]=qs[_0x11a9('0x1e')](_0x5970ba[_0x11a9('0x34')]['limit']);_0x2bf7b5['offset']=qs['offset'](_0x5970ba[_0x11a9('0x34')]['offset']);}_0x2bf7b5[_0x11a9('0x3c')]=qs[_0x11a9('0x3d')](_0x5970ba[_0x11a9('0x34')]['sort']);_0x2bf7b5[_0x11a9('0x3e')]=qs['filters'](_[_0x11a9('0x3f')](_0x5970ba['query'],_0x28d697['filters']),_0x53b25b);if(_0x5970ba['query'][_0x11a9('0x40')]){_0x2bf7b5[_0x11a9('0x3e')]=_[_0x11a9('0x41')](_0x2bf7b5[_0x11a9('0x3e')],{'$or':_[_0x11a9('0x2f')](_0x53b25b,function(_0x15a3f9){if(_0x15a3f9[_0x11a9('0x32')]!==_0x11a9('0x42')){var _0x2d8d0c={};_0x2d8d0c[_0x15a3f9[_0x11a9('0x2c')]]={'$like':'%'+_0x5970ba[_0x11a9('0x34')]['filter']+'%'};return _0x2d8d0c;}})});}_0x2bf7b5=_[_0x11a9('0x41')]({},_0x2bf7b5,_0x5970ba[_0x11a9('0x43')]);var _0x4afe3c={'where':_0x2bf7b5['where']};return db[_0x11a9('0x44')][_0x11a9('0x1f')](_0x4afe3c)[_0x11a9('0x25')](function(_0x2b5865){_0x3b43b7['count']=_0x2b5865;if(_0x5970ba[_0x11a9('0x34')][_0x11a9('0x45')]){_0x2bf7b5[_0x11a9('0x46')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0x11a9('0x47')](_0x2bf7b5);})['then'](function(_0x4cb87a){_0x3b43b7['rows']=_0x4cb87a;return _0x3b43b7;})[_0x11a9('0x25')](respondWithFilteredResult(_0xdc1366,_0x2bf7b5))[_0x11a9('0x48')](handleError(_0xdc1366,null));};exports[_0x11a9('0x49')]=function(_0x5c815a,_0x3d14fe){var _0x2e8601={'raw':!![],'where':{'id':_0x5c815a[_0x11a9('0x4a')]['id']}},_0x1911d4={};_0x1911d4[_0x11a9('0x33')]=_[_0x11a9('0x35')](db[_0x11a9('0x44')][_0x11a9('0x30')]);_0x1911d4[_0x11a9('0x34')]=_['keys'](_0x5c815a['query']);_0x1911d4[_0x11a9('0x36')]=_['intersection'](_0x1911d4[_0x11a9('0x33')],_0x1911d4[_0x11a9('0x34')]);_0x2e8601[_0x11a9('0x39')]=_[_0x11a9('0x37')](_0x1911d4[_0x11a9('0x33')],qs[_0x11a9('0x38')](_0x5c815a[_0x11a9('0x34')]['fields']));_0x2e8601[_0x11a9('0x39')]=_0x2e8601[_0x11a9('0x39')]['length']?_0x2e8601[_0x11a9('0x39')]:_0x1911d4[_0x11a9('0x33')];if(_0x5c815a[_0x11a9('0x34')][_0x11a9('0x45')]){_0x2e8601[_0x11a9('0x46')]=[{'all':!![]}];}_0x2e8601=_[_0x11a9('0x41')]({},_0x2e8601,_0x5c815a[_0x11a9('0x43')]);return db[_0x11a9('0x44')][_0x11a9('0x4b')](_0x2e8601)['then'](handleEntityNotFound(_0x3d14fe,null))['then'](respondWithResult(_0x3d14fe,null))['catch'](handleError(_0x3d14fe,null));};exports[_0x11a9('0x4c')]=function(_0x4147cc,_0x356da3){return db[_0x11a9('0x44')][_0x11a9('0x4c')](_0x4147cc[_0x11a9('0x4d')],{})[_0x11a9('0x25')](function(_0x51c160){var _0x45607a=_0x4147cc[_0x11a9('0x4e')][_0x11a9('0x27')]({'plain':!![]});if(!_0x45607a)throw new Error(_0x11a9('0x4f'));if(_0x45607a['role']==='user'){var _0x3ba259=_0x51c160['get']({'plain':!![]});var _0x4371e5=_0x11a9('0x28');return db[_0x11a9('0x50')][_0x11a9('0x4b')]({'where':{'name':_0x4371e5,'userProfileId':_0x45607a['userProfileId']},'raw':!![]})[_0x11a9('0x25')](function(_0x2a1884){if(_0x2a1884&&_0x2a1884[_0x11a9('0x51')]===0x0){return db['UserProfileResource']['create']({'name':_0x3ba259[_0x11a9('0x2c')],'resourceId':_0x3ba259['id'],'type':_0x2a1884[_0x11a9('0x2c')],'sectionId':_0x2a1884['id']},{})['then'](function(){return _0x51c160;});}else{return _0x51c160;}})[_0x11a9('0x48')](function(_0x3fde43){logger[_0x11a9('0x2a')](_0x11a9('0x52'),_0x3fde43);throw _0x3fde43;});}return _0x51c160;})[_0x11a9('0x25')](respondWithResult(_0x356da3,0xc9))[_0x11a9('0x48')](handleError(_0x356da3,null));};exports[_0x11a9('0x24')]=function(_0x30a32c,_0x461185){if(_0x30a32c['body']['id']){delete _0x30a32c[_0x11a9('0x4d')]['id'];}return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x30a32c[_0x11a9('0x4a')]['id']}})[_0x11a9('0x25')](handleEntityNotFound(_0x461185,null))[_0x11a9('0x25')](saveUpdates(_0x30a32c[_0x11a9('0x4d')],null))['then'](respondWithResult(_0x461185,null))[_0x11a9('0x48')](handleError(_0x461185,null));};exports[_0x11a9('0x26')]=function(_0x6f5207,_0x551e7e){return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x6f5207[_0x11a9('0x4a')]['id']}})[_0x11a9('0x25')](handleEntityNotFound(_0x551e7e,null))['then'](removeEntity(_0x551e7e,null))[_0x11a9('0x48')](handleError(_0x551e7e,null));};exports[_0x11a9('0x53')]=function(_0x26cf71,_0x183009,_0x1dd721){return db[_0x11a9('0x44')][_0x11a9('0x4b')]({'where':{'id':_0x26cf71[_0x11a9('0x4a')]['id']},'attributes':['name',_0x11a9('0x54'),_0x11a9('0x55'),_0x11a9('0x56')],'raw':!![]})[_0x11a9('0x25')](handleEntityNotFound(_0x183009,null))[_0x11a9('0x25')](function(_0xfc5aa2){if(_0xfc5aa2){if(!fs[_0x11a9('0x57')](path['join'](config['root'],'server/files/reports',_0xfc5aa2[_0x11a9('0x55')]))){throw new db['Sequelize'][(_0x11a9('0x58'))](_0x11a9('0x59'));}if(_0x26cf71['query'][_0x11a9('0x5a')]){return _0x183009[_0x11a9('0x18')](0xc8);}return _0x183009['download'](path['join'](config[_0x11a9('0x5b')],_0x11a9('0x5c'),_0xfc5aa2[_0x11a9('0x55')]),util[_0x11a9('0x5d')]('%s.%s',_0xfc5aa2['basename']||_0xfc5aa2['name'],_0xfc5aa2[_0x11a9('0x56')]['toLowerCase']()));}})['catch'](handleError(_0x183009,null));};
\ No newline at end of file
index 0f2550f..9bb6697 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e7=['request-promise','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','../../config/logger','api','moment','bluebird'];(function(_0xe589c,_0x36ea7b){var _0x5baddb=function(_0x23fdfa){while(--_0x23fdfa){_0xe589c['push'](_0xe589c['shift']());}};_0x5baddb(++_0x36ea7b);}(_0x12e7,0x15b));var _0x712e=function(_0x431968,_0x30ad56){_0x431968=_0x431968-0x0;var _0x14cebc=_0x12e7[_0x431968];return _0x14cebc;};'use strict';var _=require(_0x712e('0x0'));var util=require('util');var logger=require(_0x712e('0x1'))(_0x712e('0x2'));var moment=require(_0x712e('0x3'));var BPromise=require(_0x712e('0x4'));var rp=require(_0x712e('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x712e('0x6'));module[_0x712e('0x7')]=function(_0xff9c94,_0x3a70c1){return _0xff9c94[_0x712e('0x8')](_0x712e('0x9'),attributes,{'tableName':_0x712e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd7a1=['AnalyticExtractedReport','analytics_extracted_reports','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticExtractedReport.attributes','exports','define'];(function(_0x11bf89,_0x225e19){var _0x5878fd=function(_0xec80c5){while(--_0xec80c5){_0x11bf89['push'](_0x11bf89['shift']());}};_0x5878fd(++_0x225e19);}(_0xd7a1,0x8e));var _0x1d7a=function(_0x1ba3f0,_0x3b220d){_0x1ba3f0=_0x1ba3f0-0x0;var _0x53064d=_0xd7a1[_0x1ba3f0];return _0x53064d;};'use strict';var _=require('lodash');var util=require(_0x1d7a('0x0'));var logger=require(_0x1d7a('0x1'))(_0x1d7a('0x2'));var moment=require(_0x1d7a('0x3'));var BPromise=require(_0x1d7a('0x4'));var rp=require(_0x1d7a('0x5'));var fs=require('fs');var path=require(_0x1d7a('0x6'));var rimraf=require(_0x1d7a('0x7'));var config=require(_0x1d7a('0x8'));var attributes=require(_0x1d7a('0x9'));module[_0x1d7a('0xa')]=function(_0x32c67a,_0x182028){return _0x32c67a[_0x1d7a('0xb')](_0x1d7a('0xc'),attributes,{'tableName':_0x1d7a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfc6857..0e507db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40ca=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util'];(function(_0x35bbc5,_0x174849){var _0x23a02c=function(_0x1b02ca){while(--_0x1b02ca){_0x35bbc5['push'](_0x35bbc5['shift']());}};_0x23a02c(++_0x174849);}(_0x40ca,0x14e));var _0xa40c=function(_0x487b0c,_0x14ff74){_0x487b0c=_0x487b0c-0x0;var _0x1adbdc=_0x40ca[_0x487b0c];return _0x1adbdc;};'use strict';var _=require(_0xa40c('0x0'));var util=require(_0xa40c('0x1'));var moment=require(_0xa40c('0x2'));var BPromise=require('bluebird');var rs=require(_0xa40c('0x3'));var fs=require('fs');var Redis=require(_0xa40c('0x4'));var db=require(_0xa40c('0x5'))['db'];var utils=require(_0xa40c('0x6'));var logger=require(_0xa40c('0x7'))(_0xa40c('0x8'));var config=require(_0xa40c('0x9'));var jayson=require(_0xa40c('0xa'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5db280,_0x3d70dc,_0xd2ea42){return new BPromise(function(_0x37ac51,_0x2b7d9c){return client[_0xa40c('0xb')](_0x5db280,_0xd2ea42)[_0xa40c('0xc')](function(_0x477263){logger[_0xa40c('0xd')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x3d70dc,'request\x20sent');logger[_0xa40c('0xe')](_0xa40c('0xf'),_0x3d70dc,_0xa40c('0x10'),JSON[_0xa40c('0x11')](_0x477263));if(_0x477263[_0xa40c('0x12')]){if(_0x477263[_0xa40c('0x12')][_0xa40c('0x13')]===0x1f4){logger['error'](_0xa40c('0x14'),_0x3d70dc,_0x477263[_0xa40c('0x12')]['message']);return _0x2b7d9c(_0x477263['error']['message']);}logger[_0xa40c('0x12')](_0xa40c('0x14'),_0x3d70dc,_0x477263['error'][_0xa40c('0x15')]);return _0x37ac51(_0x477263['error'][_0xa40c('0x15')]);}else{logger[_0xa40c('0xd')](_0xa40c('0x14'),_0x3d70dc,_0xa40c('0x10'));_0x37ac51(_0x477263[_0xa40c('0x16')]['message']);}})[_0xa40c('0x17')](function(_0xb5e802){logger[_0xa40c('0x12')](_0xa40c('0x14'),_0x3d70dc,_0xb5e802);_0x2b7d9c(_0xb5e802);});});}
\ No newline at end of file
+var _0x3e82=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','request\x20sent','debug','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','AnalyticExtractedReport,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x27a2a2,_0x2b9f1f){var _0x3938ee=function(_0xa65281){while(--_0xa65281){_0x27a2a2['push'](_0x27a2a2['shift']());}};_0x3938ee(++_0x2b9f1f);}(_0x3e82,0x18a));var _0x23e8=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x3e82[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x23e8('0x0'));var util=require(_0x23e8('0x1'));var moment=require(_0x23e8('0x2'));var BPromise=require(_0x23e8('0x3'));var rs=require(_0x23e8('0x4'));var fs=require('fs');var Redis=require(_0x23e8('0x5'));var db=require(_0x23e8('0x6'))['db'];var utils=require(_0x23e8('0x7'));var logger=require(_0x23e8('0x8'))(_0x23e8('0x9'));var config=require(_0x23e8('0xa'));var jayson=require(_0x23e8('0xb'));var client=jayson[_0x23e8('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29effc,_0x1d1a55,_0x16a3bb){return new BPromise(function(_0x164c59,_0x1afc29){return client['request'](_0x29effc,_0x16a3bb)[_0x23e8('0xd')](function(_0x4f01b5){logger[_0x23e8('0xe')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1d1a55,_0x23e8('0xf'));logger[_0x23e8('0x10')](_0x23e8('0x11'),_0x1d1a55,'request\x20sent',JSON[_0x23e8('0x12')](_0x4f01b5));if(_0x4f01b5[_0x23e8('0x13')]){if(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x14')]===0x1f4){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);return _0x1afc29(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x4f01b5[_0x23e8('0x13')]['message']);return _0x164c59(_0x4f01b5[_0x23e8('0x13')][_0x23e8('0x16')]);}else{logger[_0x23e8('0xe')](_0x23e8('0x15'),_0x1d1a55,'request\x20sent');_0x164c59(_0x4f01b5[_0x23e8('0x17')][_0x23e8('0x16')]);}})[_0x23e8('0x18')](function(_0x96768d){logger[_0x23e8('0x13')](_0x23e8('0x15'),_0x1d1a55,_0x96768d);_0x1afc29(_0x96768d);});});}
\ No newline at end of file
index a769030..280c9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc61c=['destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','update'];(function(_0x42539c,_0x2113af){var _0x259de0=function(_0x3707e8){while(--_0x3707e8){_0x42539c['push'](_0x42539c['shift']());}};_0x259de0(++_0x2113af);}(_0xc61c,0xa1));var _0xcc61=function(_0x3b6d93,_0x39edc1){_0x3b6d93=_0x3b6d93-0x0;var _0x29859e=_0xc61c[_0x3b6d93];return _0x29859e;};'use strict';var multer=require(_0xcc61('0x0'));var util=require('util');var path=require(_0xcc61('0x1'));var timeout=require(_0xcc61('0x2'));var express=require(_0xcc61('0x3'));var router=express[_0xcc61('0x4')]();var fs_extra=require(_0xcc61('0x5'));var auth=require(_0xcc61('0x6'));var interaction=require(_0xcc61('0x7'));var config=require(_0xcc61('0x8'));var controller=require(_0xcc61('0x9'));router[_0xcc61('0xa')]('/',auth[_0xcc61('0xb')](),controller[_0xcc61('0xc')]);router['get'](_0xcc61('0xd'),auth[_0xcc61('0xb')](),controller[_0xcc61('0xe')]);router[_0xcc61('0xa')](_0xcc61('0xf'),auth['isAuthenticated'](),controller[_0xcc61('0x10')]);router[_0xcc61('0x11')]('/',auth[_0xcc61('0xb')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xcc61('0x12')]);router['delete']('/:id',auth[_0xcc61('0xb')](),controller[_0xcc61('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x4e33=['connect-timeout','express','Router','fs-extra','../../components/auth/service','./analyticExtractedReport.controller','get','isAuthenticated','show','/:id/download','post','/:id','update','destroy','exports','util','path'];(function(_0x17d97e,_0x5ab24e){var _0x5696ac=function(_0x39e224){while(--_0x39e224){_0x17d97e['push'](_0x17d97e['shift']());}};_0x5696ac(++_0x5ab24e);}(_0x4e33,0xa8));var _0x34e3=function(_0x2bd88d,_0x2d5dc3){_0x2bd88d=_0x2bd88d-0x0;var _0x5516d4=_0x4e33[_0x2bd88d];return _0x5516d4;};'use strict';var multer=require('multer');var util=require(_0x34e3('0x0'));var path=require(_0x34e3('0x1'));var timeout=require(_0x34e3('0x2'));var express=require(_0x34e3('0x3'));var router=express[_0x34e3('0x4')]();var fs_extra=require(_0x34e3('0x5'));var auth=require(_0x34e3('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x34e3('0x7'));router[_0x34e3('0x8')]('/',auth[_0x34e3('0x9')](),controller['index']);router[_0x34e3('0x8')]('/:id',auth[_0x34e3('0x9')](),controller[_0x34e3('0xa')]);router['get'](_0x34e3('0xb'),auth['isAuthenticated'](),controller['download']);router[_0x34e3('0xc')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x34e3('0xd'),auth[_0x34e3('0x9')](),controller[_0x34e3('0xe')]);router['delete']('/:id',auth[_0x34e3('0x9')](),controller[_0x34e3('0xf')]);module[_0x34e3('0x10')]=router;
\ No newline at end of file
index 82895f7..9096d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cfa=['sequelize','exports','STRING','BOOLEAN'];(function(_0xe66cf2,_0x32ba5f){var _0x2d84e7=function(_0x58a7d8){while(--_0x58a7d8){_0xe66cf2['push'](_0xe66cf2['shift']());}};_0x2d84e7(++_0x32ba5f);}(_0x6cfa,0xec));var _0xa6cf=function(_0x1fdff9,_0x4c4bf4){_0x1fdff9=_0x1fdff9-0x0;var _0x3d1b6e=_0x6cfa[_0x1fdff9];return _0x3d1b6e;};'use strict';var Sequelize=require(_0xa6cf('0x0'));module[_0xa6cf('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize[_0xa6cf('0x2')]},'function':{'type':Sequelize[_0xa6cf('0x2')]},'format':{'type':Sequelize[_0xa6cf('0x2')]},'groupBy':{'type':Sequelize[_0xa6cf('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xa6cf('0x2')]},'custom':{'type':Sequelize[_0xa6cf('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8eac=['sequelize','exports','TEXT','STRING','BOOLEAN'];(function(_0x46ebc4,_0x47b573){var _0xa3c86c=function(_0x6ea477){while(--_0x6ea477){_0x46ebc4['push'](_0x46ebc4['shift']());}};_0xa3c86c(++_0x47b573);}(_0x8eac,0x1c7));var _0xc8ea=function(_0x29c3a0,_0x32be87){_0x29c3a0=_0x29c3a0-0x0;var _0x430f8a=_0x8eac[_0x29c3a0];return _0x430f8a;};'use strict';var Sequelize=require(_0xc8ea('0x0'));module[_0xc8ea('0x1')]={'field':{'type':Sequelize[_0xc8ea('0x2')]},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0xc8ea('0x3')]},'groupBy':{'type':Sequelize[_0xc8ea('0x4')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0xc8ea('0x3')]},'custom':{'type':Sequelize[_0xc8ea('0x4')],'defaultValue':![]}};
\ No newline at end of file
index d7efc96..153d312 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3797=['map','query','keys','intersection','attributes','fields','hasOwnProperty','sort','filters','filter','where','merge','type','VIRTUAL','options','include','findAll','rows','catch','show','rawAttributes','length','find','create','body','bulkCreate','params','bulkDestroy','ids','addFields','findOne','sequelize','CustomReportId','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','end','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','stack','name','send','index','AnalyticFieldReport','fieldName','model'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x3797,0x1ef));var _0x7379=function(_0x4b0406,_0x42c4d9){_0x4b0406=_0x4b0406-0x0;var _0x58ccd9=_0x3797[_0x4b0406];return _0x58ccd9;};'use strict';var emlformat=require(_0x7379('0x0'));var rimraf=require(_0x7379('0x1'));var zipdir=require(_0x7379('0x2'));var jsonpatch=require(_0x7379('0x3'));var rp=require(_0x7379('0x4'));var moment=require(_0x7379('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x7379('0x6'));var util=require('util');var path=require(_0x7379('0x7'));var sox=require(_0x7379('0x8'));var csv=require(_0x7379('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7379('0xa'));var _=require(_0x7379('0xb'));var squel=require(_0x7379('0xc'));var crypto=require('crypto');var jsforce=require(_0x7379('0xd'));var deskjs=require(_0x7379('0xe'));var toCsv=require('to-csv');var querystring=require(_0x7379('0xf'));var Papa=require(_0x7379('0x10'));var Redis=require('ioredis');var authService=require(_0x7379('0x11'));var qs=require(_0x7379('0x12'));var as=require(_0x7379('0x13'));var hardwareService=require(_0x7379('0x14'));var logger=require('../../config/logger')(_0x7379('0x15'));var utils=require(_0x7379('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x7379('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x496764,_0x397539){_0x397539=_0x397539||0xcc;return function(_0x528fb1){if(_0x528fb1){return _0x496764['sendStatus'](_0x397539);}return _0x496764['status'](_0x397539)[_0x7379('0x18')]();};}function respondWithResult(_0x4dcf1e,_0x2673b5){_0x2673b5=_0x2673b5||0xc8;return function(_0x2ff08f){if(_0x2ff08f){return _0x4dcf1e[_0x7379('0x19')](_0x2673b5)[_0x7379('0x1a')](_0x2ff08f);}};}function respondWithFilteredResult(_0x62b48,_0x2dce7c){return function(_0x4ee270){if(_0x4ee270){var _0x338aa0=typeof _0x2dce7c[_0x7379('0x1b')]===_0x7379('0x1c')&&typeof _0x2dce7c[_0x7379('0x1d')]===_0x7379('0x1c');var _0x35ae10=_0x4ee270[_0x7379('0x1e')];var _0x5c38a6=_0x338aa0?0x0:_0x2dce7c['offset'];var _0xb13419=_0x338aa0?_0x4ee270[_0x7379('0x1e')]:_0x2dce7c['offset']+_0x2dce7c[_0x7379('0x1d')];var _0x494d16;if(_0xb13419>=_0x35ae10){_0xb13419=_0x35ae10;_0x494d16=0xc8;}else{_0x494d16=0xce;}_0x62b48[_0x7379('0x19')](_0x494d16);return _0x62b48[_0x7379('0x1f')](_0x7379('0x20'),_0x5c38a6+'-'+_0xb13419+'/'+_0x35ae10)[_0x7379('0x1a')](_0x4ee270);}return null;};}function patchUpdates(_0x5dea18){return function(_0x275513){try{jsonpatch['apply'](_0x275513,_0x5dea18,!![]);}catch(_0xee75ff){return BPromise['reject'](_0xee75ff);}return _0x275513[_0x7379('0x21')]();};}function saveUpdates(_0x13c9f8,_0x3e7786){return function(_0x3b6ca3){if(_0x3b6ca3){return _0x3b6ca3[_0x7379('0x22')](_0x13c9f8)[_0x7379('0x23')](function(_0x49e1f8){return _0x49e1f8;});}return null;};}function removeEntity(_0x2a31f7,_0x44473e){return function(_0x34207f){if(_0x34207f){return _0x34207f[_0x7379('0x24')]()['then'](function(){_0x2a31f7['status'](0xcc)[_0x7379('0x18')]();});}};}function handleEntityNotFound(_0x2c4a4b,_0x3733f7){return function(_0x12ce04){if(!_0x12ce04){_0x2c4a4b['sendStatus'](0x194);}return _0x12ce04;};}function handleError(_0x8b0b5b,_0x1eda32){_0x1eda32=_0x1eda32||0x1f4;return function(_0x4c8ac7){logger['error'](_0x4c8ac7[_0x7379('0x25')]);if(_0x4c8ac7[_0x7379('0x26')]){delete _0x4c8ac7['name'];}_0x8b0b5b[_0x7379('0x19')](_0x1eda32)[_0x7379('0x27')](_0x4c8ac7);};}exports[_0x7379('0x28')]=function(_0x49cbf1,_0x35f2e4){var _0x4cb5ba={},_0x5b054a={},_0x5a3b3c={'count':0x0,'rows':[]};var _0xb7a841=_['map'](db[_0x7379('0x29')]['rawAttributes'],function(_0x153479){return{'name':_0x153479[_0x7379('0x2a')],'type':_0x153479['type']['key']};});_0x5b054a[_0x7379('0x2b')]=_[_0x7379('0x2c')](_0xb7a841,'name');_0x5b054a[_0x7379('0x2d')]=_[_0x7379('0x2e')](_0x49cbf1[_0x7379('0x2d')]);_0x5b054a['filters']=_[_0x7379('0x2f')](_0x5b054a[_0x7379('0x2b')],_0x5b054a[_0x7379('0x2d')]);_0x4cb5ba[_0x7379('0x30')]=_['intersection'](_0x5b054a['model'],qs[_0x7379('0x31')](_0x49cbf1[_0x7379('0x2d')]['fields']));_0x4cb5ba['attributes']=_0x4cb5ba[_0x7379('0x30')]['length']?_0x4cb5ba[_0x7379('0x30')]:_0x5b054a['model'];if(!_0x49cbf1[_0x7379('0x2d')][_0x7379('0x32')]('nolimit')){_0x4cb5ba['limit']=qs[_0x7379('0x1d')](_0x49cbf1['query'][_0x7379('0x1d')]);_0x4cb5ba[_0x7379('0x1b')]=qs['offset'](_0x49cbf1[_0x7379('0x2d')]['offset']);}_0x4cb5ba['order']=qs['sort'](_0x49cbf1[_0x7379('0x2d')][_0x7379('0x33')]);_0x4cb5ba['where']=qs[_0x7379('0x34')](_['pick'](_0x49cbf1[_0x7379('0x2d')],_0x5b054a[_0x7379('0x34')]),_0xb7a841);if(_0x49cbf1[_0x7379('0x2d')][_0x7379('0x35')]){_0x4cb5ba[_0x7379('0x36')]=_[_0x7379('0x37')](_0x4cb5ba[_0x7379('0x36')],{'$or':_[_0x7379('0x2c')](_0xb7a841,function(_0x5a84c3){if(_0x5a84c3[_0x7379('0x38')]!==_0x7379('0x39')){var _0x4287a7={};_0x4287a7[_0x5a84c3[_0x7379('0x26')]]={'$like':'%'+_0x49cbf1[_0x7379('0x2d')][_0x7379('0x35')]+'%'};return _0x4287a7;}})});}_0x4cb5ba=_[_0x7379('0x37')]({},_0x4cb5ba,_0x49cbf1[_0x7379('0x3a')]);var _0x4bd5a2={'where':_0x4cb5ba[_0x7379('0x36')]};return db[_0x7379('0x29')][_0x7379('0x1e')](_0x4bd5a2)[_0x7379('0x23')](function(_0xdc9427){_0x5a3b3c['count']=_0xdc9427;if(_0x49cbf1[_0x7379('0x2d')]['includeAll']){_0x4cb5ba[_0x7379('0x3b')]=[{'all':!![]}];}return db['AnalyticFieldReport'][_0x7379('0x3c')](_0x4cb5ba);})[_0x7379('0x23')](function(_0x46b860){_0x5a3b3c[_0x7379('0x3d')]=_0x46b860;return _0x5a3b3c;})['then'](respondWithFilteredResult(_0x35f2e4,_0x4cb5ba))[_0x7379('0x3e')](handleError(_0x35f2e4,null));};exports[_0x7379('0x3f')]=function(_0x4c474b,_0x24b86f){var _0x358554={'raw':![],'where':{'id':_0x4c474b['params']['id']}},_0x524342={};_0x524342[_0x7379('0x2b')]=_[_0x7379('0x2e')](db[_0x7379('0x29')][_0x7379('0x40')]);_0x524342[_0x7379('0x2d')]=_[_0x7379('0x2e')](_0x4c474b[_0x7379('0x2d')]);_0x524342[_0x7379('0x34')]=_[_0x7379('0x2f')](_0x524342[_0x7379('0x2b')],_0x524342[_0x7379('0x2d')]);_0x358554['attributes']=_[_0x7379('0x2f')](_0x524342['model'],qs[_0x7379('0x31')](_0x4c474b[_0x7379('0x2d')][_0x7379('0x31')]));_0x358554[_0x7379('0x30')]=_0x358554[_0x7379('0x30')][_0x7379('0x41')]?_0x358554['attributes']:_0x524342[_0x7379('0x2b')];if(_0x4c474b[_0x7379('0x2d')]['includeAll']){_0x358554[_0x7379('0x3b')]=[{'all':!![]}];}_0x358554=_[_0x7379('0x37')]({},_0x358554,_0x4c474b['options']);return db[_0x7379('0x29')][_0x7379('0x42')](_0x358554)['then'](handleEntityNotFound(_0x24b86f,null))[_0x7379('0x23')](respondWithResult(_0x24b86f,null))[_0x7379('0x3e')](handleError(_0x24b86f,null));};exports[_0x7379('0x43')]=function(_0x160d4b,_0x3e9b93){return db[_0x7379('0x29')][_0x7379('0x43')](_0x160d4b[_0x7379('0x44')],{})['then'](respondWithResult(_0x3e9b93,0xc9))[_0x7379('0x3e')](handleError(_0x3e9b93,null));};exports[_0x7379('0x45')]=function(_0x491157,_0xcf08e5){return db[_0x7379('0x29')]['bulkCreate'](_0x491157[_0x7379('0x44')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0xcf08e5,0xc9))[_0x7379('0x3e')](handleError(_0xcf08e5,null));};exports[_0x7379('0x22')]=function(_0x110e55,_0x50ea2f){if(_0x110e55[_0x7379('0x44')]['id']){delete _0x110e55['body']['id'];}return db['AnalyticFieldReport'][_0x7379('0x42')]({'where':{'id':_0x110e55['params']['id']}})[_0x7379('0x23')](handleEntityNotFound(_0x50ea2f,null))[_0x7379('0x23')](saveUpdates(_0x110e55['body'],null))[_0x7379('0x23')](respondWithResult(_0x50ea2f,null))[_0x7379('0x3e')](handleError(_0x50ea2f,null));};exports['destroy']=function(_0x399154,_0x34cbae){return db['AnalyticFieldReport']['find']({'where':{'id':_0x399154[_0x7379('0x46')]['id']}})[_0x7379('0x23')](handleEntityNotFound(_0x34cbae,null))[_0x7379('0x23')](removeEntity(_0x34cbae,null))[_0x7379('0x3e')](handleError(_0x34cbae,null));};exports[_0x7379('0x47')]=function(_0x52663e,_0x5e0038){return db[_0x7379('0x29')][_0x7379('0x24')]({'where':{'id':_0x52663e['query'][_0x7379('0x48')]||[]},'raw':![],'individualHooks':!![]})[_0x7379('0x23')](respondWithResult(_0x5e0038,0xcc))[_0x7379('0x3e')](handleError(_0x5e0038,null));};exports[_0x7379('0x49')]=function(_0x2c8375,_0x369be2,_0x51aad0){return db['AnalyticCustomReport'][_0x7379('0x4a')]({'where':{'id':_0x2c8375[_0x7379('0x46')]['id']}})[_0x7379('0x23')](handleEntityNotFound(_0x369be2,null))['then'](function(_0x295924){if(_0x295924){return db[_0x7379('0x4b')]['transaction'](function(_0x1378d3){return db['AnalyticFieldReport']['destroy']({'where':{'CustomReportId':_0x2c8375[_0x7379('0x46')]['id']},'transaction':_0x1378d3})[_0x7379('0x23')](function(_0x249da9){var _0x59a868=_[_0x7379('0x2c')](_0x2c8375[_0x7379('0x44')],function(_0x87c446){delete _0x87c446['id'];_0x87c446[_0x7379('0x4c')]=_0x2c8375[_0x7379('0x46')]['id'];return _0x87c446;});return db['AnalyticFieldReport'][_0x7379('0x45')](_0x59a868,{'transaction':_0x1378d3});});})[_0x7379('0x23')](function(){return db[_0x7379('0x29')][_0x7379('0x3c')]({'where':{'CustomReportId':_0x2c8375[_0x7379('0x46')]['id']}});});}})[_0x7379('0x23')](respondWithResult(_0x369be2,null))[_0x7379('0x3e')](handleError(_0x369be2,null));};
\ No newline at end of file
+var _0xb010=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','rows','catch','show','params','bulkCreate','body','find','destroy','bulkDestroy','ids','addFields','AnalyticCustomReport','findOne','sequelize','CustomReportId','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x49bdc4,_0x1e2507){var _0x1f7437=function(_0x25a9f9){while(--_0x25a9f9){_0x49bdc4['push'](_0x49bdc4['shift']());}};_0x1f7437(++_0x1e2507);}(_0xb010,0x97));var _0x0b01=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xb010[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0x0b01('0x0'));var rimraf=require(_0x0b01('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0b01('0x2'));var moment=require(_0x0b01('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0b01('0x4'));var util=require(_0x0b01('0x5'));var path=require(_0x0b01('0x6'));var sox=require(_0x0b01('0x7'));var csv=require('to-csv');var ejs=require(_0x0b01('0x8'));var fs=require('fs');var fs_extra=require(_0x0b01('0x9'));var _=require(_0x0b01('0xa'));var squel=require(_0x0b01('0xb'));var crypto=require(_0x0b01('0xc'));var jsforce=require(_0x0b01('0xd'));var deskjs=require(_0x0b01('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0b01('0xf'));var Papa=require(_0x0b01('0x10'));var Redis=require(_0x0b01('0x11'));var authService=require(_0x0b01('0x12'));var qs=require(_0x0b01('0x13'));var as=require(_0x0b01('0x14'));var hardwareService=require(_0x0b01('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x0b01('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0b01('0x17'));var db=require(_0x0b01('0x18'))['db'];function respondWithStatusCode(_0x16b07b,_0x26c52a){_0x26c52a=_0x26c52a||0xcc;return function(_0x119159){if(_0x119159){return _0x16b07b[_0x0b01('0x19')](_0x26c52a);}return _0x16b07b['status'](_0x26c52a)[_0x0b01('0x1a')]();};}function respondWithResult(_0x49790a,_0x546b0b){_0x546b0b=_0x546b0b||0xc8;return function(_0x53b40d){if(_0x53b40d){return _0x49790a[_0x0b01('0x1b')](_0x546b0b)[_0x0b01('0x1c')](_0x53b40d);}};}function respondWithFilteredResult(_0x103e89,_0x345073){return function(_0x2e507a){if(_0x2e507a){var _0x112a3d=typeof _0x345073[_0x0b01('0x1d')]==='undefined'&&typeof _0x345073[_0x0b01('0x1e')]===_0x0b01('0x1f');var _0x309a8f=_0x2e507a[_0x0b01('0x20')];var _0x519e9b=_0x112a3d?0x0:_0x345073[_0x0b01('0x1d')];var _0x245e2d=_0x112a3d?_0x2e507a['count']:_0x345073[_0x0b01('0x1d')]+_0x345073[_0x0b01('0x1e')];var _0x2110a4;if(_0x245e2d>=_0x309a8f){_0x245e2d=_0x309a8f;_0x2110a4=0xc8;}else{_0x2110a4=0xce;}_0x103e89[_0x0b01('0x1b')](_0x2110a4);return _0x103e89[_0x0b01('0x21')](_0x0b01('0x22'),_0x519e9b+'-'+_0x245e2d+'/'+_0x309a8f)[_0x0b01('0x1c')](_0x2e507a);}return null;};}function patchUpdates(_0x265ad8){return function(_0xfc38ee){try{jsonpatch[_0x0b01('0x23')](_0xfc38ee,_0x265ad8,!![]);}catch(_0x2b86ab){return BPromise[_0x0b01('0x24')](_0x2b86ab);}return _0xfc38ee['save']();};}function saveUpdates(_0x1a77e1,_0x451a7f){return function(_0x3457f0){if(_0x3457f0){return _0x3457f0[_0x0b01('0x25')](_0x1a77e1)['then'](function(_0x49dc8e){return _0x49dc8e;});}return null;};}function removeEntity(_0x4e7bc1,_0x4e156a){return function(_0x373d25){if(_0x373d25){return _0x373d25['destroy']()['then'](function(){_0x4e7bc1['status'](0xcc)[_0x0b01('0x1a')]();});}};}function handleEntityNotFound(_0x501c1d,_0x20bdca){return function(_0x5e8083){if(!_0x5e8083){_0x501c1d[_0x0b01('0x19')](0x194);}return _0x5e8083;};}function handleError(_0x102286,_0x58ffbd){_0x58ffbd=_0x58ffbd||0x1f4;return function(_0x750b77){logger['error'](_0x750b77[_0x0b01('0x26')]);if(_0x750b77[_0x0b01('0x27')]){delete _0x750b77[_0x0b01('0x27')];}_0x102286[_0x0b01('0x1b')](_0x58ffbd)[_0x0b01('0x28')](_0x750b77);};}exports[_0x0b01('0x29')]=function(_0x6139ec,_0x5a8001){var _0x256476={},_0x2727cb={},_0x3822d3={'count':0x0,'rows':[]};var _0x2b9c19=_[_0x0b01('0x2a')](db[_0x0b01('0x2b')][_0x0b01('0x2c')],function(_0x19a922){return{'name':_0x19a922[_0x0b01('0x2d')],'type':_0x19a922[_0x0b01('0x2e')][_0x0b01('0x2f')]};});_0x2727cb[_0x0b01('0x30')]=_['map'](_0x2b9c19,_0x0b01('0x27'));_0x2727cb['query']=_[_0x0b01('0x31')](_0x6139ec['query']);_0x2727cb[_0x0b01('0x32')]=_[_0x0b01('0x33')](_0x2727cb['model'],_0x2727cb['query']);_0x256476[_0x0b01('0x34')]=_[_0x0b01('0x33')](_0x2727cb[_0x0b01('0x30')],qs[_0x0b01('0x35')](_0x6139ec[_0x0b01('0x36')][_0x0b01('0x35')]));_0x256476[_0x0b01('0x34')]=_0x256476[_0x0b01('0x34')][_0x0b01('0x37')]?_0x256476['attributes']:_0x2727cb[_0x0b01('0x30')];if(!_0x6139ec[_0x0b01('0x36')][_0x0b01('0x38')](_0x0b01('0x39'))){_0x256476['limit']=qs['limit'](_0x6139ec['query'][_0x0b01('0x1e')]);_0x256476[_0x0b01('0x1d')]=qs[_0x0b01('0x1d')](_0x6139ec[_0x0b01('0x36')][_0x0b01('0x1d')]);}_0x256476['order']=qs['sort'](_0x6139ec['query'][_0x0b01('0x3a')]);_0x256476[_0x0b01('0x3b')]=qs[_0x0b01('0x32')](_[_0x0b01('0x3c')](_0x6139ec[_0x0b01('0x36')],_0x2727cb[_0x0b01('0x32')]),_0x2b9c19);if(_0x6139ec[_0x0b01('0x36')][_0x0b01('0x3d')]){_0x256476['where']=_[_0x0b01('0x3e')](_0x256476[_0x0b01('0x3b')],{'$or':_['map'](_0x2b9c19,function(_0x31c47e){if(_0x31c47e[_0x0b01('0x2e')]!==_0x0b01('0x3f')){var _0x512e08={};_0x512e08[_0x31c47e[_0x0b01('0x27')]]={'$like':'%'+_0x6139ec['query'][_0x0b01('0x3d')]+'%'};return _0x512e08;}})});}_0x256476=_['merge']({},_0x256476,_0x6139ec[_0x0b01('0x40')]);var _0x4893ae={'where':_0x256476[_0x0b01('0x3b')]};return db[_0x0b01('0x2b')]['count'](_0x4893ae)[_0x0b01('0x41')](function(_0x4615c0){_0x3822d3[_0x0b01('0x20')]=_0x4615c0;if(_0x6139ec[_0x0b01('0x36')][_0x0b01('0x42')]){_0x256476[_0x0b01('0x43')]=[{'all':!![]}];}return db[_0x0b01('0x2b')][_0x0b01('0x44')](_0x256476);})['then'](function(_0x1969fc){_0x3822d3[_0x0b01('0x45')]=_0x1969fc;return _0x3822d3;})[_0x0b01('0x41')](respondWithFilteredResult(_0x5a8001,_0x256476))[_0x0b01('0x46')](handleError(_0x5a8001,null));};exports[_0x0b01('0x47')]=function(_0xaf4e95,_0x507f60){var _0xcb577c={'raw':![],'where':{'id':_0xaf4e95[_0x0b01('0x48')]['id']}},_0x35a638={};_0x35a638[_0x0b01('0x30')]=_['keys'](db[_0x0b01('0x2b')][_0x0b01('0x2c')]);_0x35a638[_0x0b01('0x36')]=_['keys'](_0xaf4e95['query']);_0x35a638[_0x0b01('0x32')]=_[_0x0b01('0x33')](_0x35a638[_0x0b01('0x30')],_0x35a638[_0x0b01('0x36')]);_0xcb577c[_0x0b01('0x34')]=_['intersection'](_0x35a638[_0x0b01('0x30')],qs[_0x0b01('0x35')](_0xaf4e95[_0x0b01('0x36')][_0x0b01('0x35')]));_0xcb577c['attributes']=_0xcb577c[_0x0b01('0x34')][_0x0b01('0x37')]?_0xcb577c['attributes']:_0x35a638[_0x0b01('0x30')];if(_0xaf4e95[_0x0b01('0x36')]['includeAll']){_0xcb577c[_0x0b01('0x43')]=[{'all':!![]}];}_0xcb577c=_[_0x0b01('0x3e')]({},_0xcb577c,_0xaf4e95[_0x0b01('0x40')]);return db[_0x0b01('0x2b')]['find'](_0xcb577c)[_0x0b01('0x41')](handleEntityNotFound(_0x507f60,null))[_0x0b01('0x41')](respondWithResult(_0x507f60,null))[_0x0b01('0x46')](handleError(_0x507f60,null));};exports['create']=function(_0x3d4db9,_0x11904b){return db[_0x0b01('0x2b')]['create'](_0x3d4db9['body'],{})[_0x0b01('0x41')](respondWithResult(_0x11904b,0xc9))[_0x0b01('0x46')](handleError(_0x11904b,null));};exports[_0x0b01('0x49')]=function(_0x1e8615,_0x5c27f3){return db[_0x0b01('0x2b')][_0x0b01('0x49')](_0x1e8615[_0x0b01('0x4a')],{'raw':![],'individualHooks':!![]})[_0x0b01('0x41')](respondWithResult(_0x5c27f3,0xc9))['catch'](handleError(_0x5c27f3,null));};exports['update']=function(_0x386671,_0x36473f){if(_0x386671[_0x0b01('0x4a')]['id']){delete _0x386671[_0x0b01('0x4a')]['id'];}return db[_0x0b01('0x2b')][_0x0b01('0x4b')]({'where':{'id':_0x386671[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x36473f,null))['then'](saveUpdates(_0x386671[_0x0b01('0x4a')],null))[_0x0b01('0x41')](respondWithResult(_0x36473f,null))[_0x0b01('0x46')](handleError(_0x36473f,null));};exports[_0x0b01('0x4c')]=function(_0xd8554b,_0x3f6c5c){return db[_0x0b01('0x2b')][_0x0b01('0x4b')]({'where':{'id':_0xd8554b[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x3f6c5c,null))[_0x0b01('0x41')](removeEntity(_0x3f6c5c,null))[_0x0b01('0x46')](handleError(_0x3f6c5c,null));};exports[_0x0b01('0x4d')]=function(_0x9f2702,_0x1aa78d){return db[_0x0b01('0x2b')][_0x0b01('0x4c')]({'where':{'id':_0x9f2702[_0x0b01('0x36')][_0x0b01('0x4e')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x1aa78d,0xcc))[_0x0b01('0x46')](handleError(_0x1aa78d,null));};exports[_0x0b01('0x4f')]=function(_0x2dd7c9,_0x32982e,_0x23944e){return db[_0x0b01('0x50')][_0x0b01('0x51')]({'where':{'id':_0x2dd7c9[_0x0b01('0x48')]['id']}})[_0x0b01('0x41')](handleEntityNotFound(_0x32982e,null))[_0x0b01('0x41')](function(_0x2d857f){if(_0x2d857f){return db[_0x0b01('0x52')]['transaction'](function(_0x53e05){return db[_0x0b01('0x2b')]['destroy']({'where':{'CustomReportId':_0x2dd7c9['params']['id']},'transaction':_0x53e05})['then'](function(_0x295332){var _0x2e1633=_[_0x0b01('0x2a')](_0x2dd7c9[_0x0b01('0x4a')],function(_0x255693){delete _0x255693['id'];_0x255693[_0x0b01('0x53')]=_0x2dd7c9['params']['id'];return _0x255693;});return db[_0x0b01('0x2b')][_0x0b01('0x49')](_0x2e1633,{'transaction':_0x53e05});});})['then'](function(){return db[_0x0b01('0x2b')][_0x0b01('0x44')]({'where':{'CustomReportId':_0x2dd7c9[_0x0b01('0x48')]['id']}});});}})[_0x0b01('0x41')](respondWithResult(_0x32982e,null))['catch'](handleError(_0x32982e,null));};
\ No newline at end of file
index e14be26..3c218b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ae=['bluebird','path','../../config/environment','./analyticFieldReport.attributes','AnalyticFieldReport','lodash','util','../../config/logger','api','moment'];(function(_0x4baae2,_0x487ab6){var _0x1a2285=function(_0x1cea47){while(--_0x1cea47){_0x4baae2['push'](_0x4baae2['shift']());}};_0x1a2285(++_0x487ab6);}(_0xb1ae,0x11d));var _0xeb1a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb1ae[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xeb1a('0x0'));var util=require(_0xeb1a('0x1'));var logger=require(_0xeb1a('0x2'))(_0xeb1a('0x3'));var moment=require(_0xeb1a('0x4'));var BPromise=require(_0xeb1a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeb1a('0x6'));var rimraf=require('rimraf');var config=require(_0xeb1a('0x7'));var attributes=require(_0xeb1a('0x8'));module['exports']=function(_0x17bb97,_0x261639){return _0x17bb97['define'](_0xeb1a('0x9'),attributes,{'tableName':'analytics_report_fields','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c93=['bluebird','request-promise','path','../../config/environment','./analyticFieldReport.attributes','exports','define','AnalyticFieldReport','analytics_report_fields','lodash','util','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7c93,0x1b6));var _0x37c9=function(_0x1aaf1a,_0x1bb3bc){_0x1aaf1a=_0x1aaf1a-0x0;var _0x112c28=_0x7c93[_0x1aaf1a];return _0x112c28;};'use strict';var _=require(_0x37c9('0x0'));var util=require(_0x37c9('0x1'));var logger=require('../../config/logger')(_0x37c9('0x2'));var moment=require(_0x37c9('0x3'));var BPromise=require(_0x37c9('0x4'));var rp=require(_0x37c9('0x5'));var fs=require('fs');var path=require(_0x37c9('0x6'));var rimraf=require('rimraf');var config=require(_0x37c9('0x7'));var attributes=require(_0x37c9('0x8'));module[_0x37c9('0x9')]=function(_0x50a8c9,_0x336781){return _0x50a8c9[_0x37c9('0xa')](_0x37c9('0xb'),attributes,{'tableName':_0x37c9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2981dbb..9b4d504 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd933=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd933,0x191));var _0x3d93=function(_0x2e06be,_0x2c5c9d){_0x2e06be=_0x2e06be-0x0;var _0x1a798a=_0xd933[_0x2e06be];return _0x1a798a;};'use strict';var _=require(_0x3d93('0x0'));var util=require(_0x3d93('0x1'));var moment=require(_0x3d93('0x2'));var BPromise=require(_0x3d93('0x3'));var rs=require(_0x3d93('0x4'));var fs=require('fs');var Redis=require(_0x3d93('0x5'));var db=require(_0x3d93('0x6'))['db'];var utils=require(_0x3d93('0x7'));var logger=require(_0x3d93('0x8'))(_0x3d93('0x9'));var config=require(_0x3d93('0xa'));var jayson=require(_0x3d93('0xb'));var client=jayson[_0x3d93('0xc')][_0x3d93('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x2156af,_0x2c9542,_0x1c2809){return new BPromise(function(_0x6775f7,_0x23614b){return client[_0x3d93('0xe')](_0x2156af,_0x1c2809)[_0x3d93('0xf')](function(_0x31eb2e){logger[_0x3d93('0x10')](_0x3d93('0x11'),_0x2c9542,_0x3d93('0x12'));logger[_0x3d93('0x13')](_0x3d93('0x14'),_0x2c9542,_0x3d93('0x12'),JSON[_0x3d93('0x15')](_0x31eb2e));if(_0x31eb2e[_0x3d93('0x16')]){if(_0x31eb2e[_0x3d93('0x16')][_0x3d93('0x17')]===0x1f4){logger[_0x3d93('0x16')](_0x3d93('0x11'),_0x2c9542,_0x31eb2e[_0x3d93('0x16')]['message']);return _0x23614b(_0x31eb2e[_0x3d93('0x16')][_0x3d93('0x18')]);}logger[_0x3d93('0x16')](_0x3d93('0x11'),_0x2c9542,_0x31eb2e[_0x3d93('0x16')][_0x3d93('0x18')]);return _0x6775f7(_0x31eb2e[_0x3d93('0x16')][_0x3d93('0x18')]);}else{logger['info']('AnalyticFieldReport,\x20%s,\x20%s',_0x2c9542,_0x3d93('0x12'));_0x6775f7(_0x31eb2e[_0x3d93('0x19')][_0x3d93('0x18')]);}})[_0x3d93('0x1a')](function(_0x1d82c3){logger['error'](_0x3d93('0x11'),_0x2c9542,_0x1d82c3);_0x23614b(_0x1d82c3);});});}
\ No newline at end of file
+var _0xad83=['code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x52d508,_0x2f0254){var _0x204d5e=function(_0x45554d){while(--_0x45554d){_0x52d508['push'](_0x52d508['shift']());}};_0x204d5e(++_0x2f0254);}(_0xad83,0x18b));var _0x3ad8=function(_0x15a6fb,_0x4be8da){_0x15a6fb=_0x15a6fb-0x0;var _0x22ef2c=_0xad83[_0x15a6fb];return _0x22ef2c;};'use strict';var _=require(_0x3ad8('0x0'));var util=require(_0x3ad8('0x1'));var moment=require(_0x3ad8('0x2'));var BPromise=require(_0x3ad8('0x3'));var rs=require(_0x3ad8('0x4'));var fs=require('fs');var Redis=require(_0x3ad8('0x5'));var db=require(_0x3ad8('0x6'))['db'];var utils=require(_0x3ad8('0x7'));var logger=require(_0x3ad8('0x8'))(_0x3ad8('0x9'));var config=require(_0x3ad8('0xa'));var jayson=require(_0x3ad8('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x283e9e,_0x52a27e,_0x21cdd5){return new BPromise(function(_0x2d16d3,_0x27e60b){return client[_0x3ad8('0xc')](_0x283e9e,_0x21cdd5)['then'](function(_0x55cf7e){logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x52a27e,_0x3ad8('0xf'));logger[_0x3ad8('0x10')](_0x3ad8('0x11'),_0x52a27e,_0x3ad8('0xf'),JSON['stringify'](_0x55cf7e));if(_0x55cf7e[_0x3ad8('0x12')]){if(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x13')]===0x1f4){logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x55cf7e[_0x3ad8('0x12')]['message']);return _0x27e60b(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x14')]);}logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x55cf7e['error'][_0x3ad8('0x14')]);return _0x2d16d3(_0x55cf7e[_0x3ad8('0x12')][_0x3ad8('0x14')]);}else{logger[_0x3ad8('0xd')](_0x3ad8('0xe'),_0x52a27e,'request\x20sent');_0x2d16d3(_0x55cf7e[_0x3ad8('0x15')][_0x3ad8('0x14')]);}})[_0x3ad8('0x16')](function(_0x5491b2){logger[_0x3ad8('0x12')](_0x3ad8('0xe'),_0x52a27e,_0x5491b2);_0x27e60b(_0x5491b2);});});}
\ No newline at end of file
index 1749a3d..c2dd1db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0x57c560,_0x17d821){var _0x33f2fa=function(_0x3845f3){while(--_0x3845f3){_0x57c560['push'](_0x57c560['shift']());}};_0x33f2fa(++_0x17d821);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
+var _0xa9e0=['delete','/destroy_many','bulkDestroy','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticFieldReport.controller','get','index','/:id','post','/create_many','isAuthenticated','bulkCreate','/:id/create_many','update'];(function(_0xa9a803,_0x523885){var _0x34bd3e=function(_0xc5f28b){while(--_0xc5f28b){_0xa9a803['push'](_0xa9a803['shift']());}};_0x34bd3e(++_0x523885);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0a9e('0xb')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xb')](_0x0a9e('0xf'),auth['isAuthenticated'](),controller['addFields']);router['put']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);module[_0x0a9e('0x15')]=router;
\ No newline at end of file
index 7617fd7..ae16495 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d13=['exports','name','TEXT','STRING'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0x7d13,0x6c));var _0x37d1=function(_0x805a46,_0x56913a){_0x805a46=_0x805a46-0x0;var _0x3be5f1=_0x7d13[_0x805a46];return _0x3be5f1;};'use strict';var Sequelize=require('sequelize');module[_0x37d1('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x37d1('0x1')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x37d1('0x2')]},'description':{'type':Sequelize[_0x37d1('0x3')]}};
\ No newline at end of file
+var _0x9434=['sequelize','exports','STRING','name','TEXT'];(function(_0x5abba1,_0x3153d3){var _0x2ffbb0=function(_0x26bf94){while(--_0x26bf94){_0x5abba1['push'](_0x5abba1['shift']());}};_0x2ffbb0(++_0x3153d3);}(_0x9434,0x168));var _0x4943=function(_0x21e189,_0x19bb02){_0x21e189=_0x21e189-0x0;var _0x4d1c2a=_0x9434[_0x21e189];return _0x4d1c2a;};'use strict';var Sequelize=require(_0x4943('0x0'));module[_0x4943('0x1')]={'name':{'type':Sequelize[_0x4943('0x2')],'allowNull':![],'unique':_0x4943('0x3')},'table':{'type':Sequelize[_0x4943('0x2')]},'metric':{'type':Sequelize[_0x4943('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index a199385..dcb4861 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','error','stack','name','send','index','map','AnalyticMetric','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x1b4fc2,_0x286cac){var _0x1ff986=function(_0x49b3ad){while(--_0x49b3ad){_0x1b4fc2['push'](_0x1b4fc2['shift']());}};_0x1ff986(++_0x286cac);}(_0x7217,0x19e));var _0x7721=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0x7217[_0x298ed3];return _0x5aad28;};'use strict';var emlformat=require(_0x7721('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7721('0x1'));var jsonpatch=require(_0x7721('0x2'));var rp=require(_0x7721('0x3'));var moment=require(_0x7721('0x4'));var BPromise=require(_0x7721('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0x7721('0x6'));var sox=require(_0x7721('0x7'));var csv=require(_0x7721('0x8'));var ejs=require(_0x7721('0x9'));var fs=require('fs');var fs_extra=require(_0x7721('0xa'));var _=require(_0x7721('0xb'));var squel=require(_0x7721('0xc'));var crypto=require(_0x7721('0xd'));var jsforce=require(_0x7721('0xe'));var deskjs=require(_0x7721('0xf'));var toCsv=require(_0x7721('0x8'));var querystring=require(_0x7721('0x10'));var Papa=require(_0x7721('0x11'));var Redis=require(_0x7721('0x12'));var authService=require(_0x7721('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x7721('0x14'));var hardwareService=require(_0x7721('0x15'));var logger=require(_0x7721('0x16'))(_0x7721('0x17'));var utils=require(_0x7721('0x18'));var config=require(_0x7721('0x19'));var licenseUtil=require(_0x7721('0x1a'));var db=require(_0x7721('0x1b'))['db'];function respondWithStatusCode(_0x55b4ca,_0x2911ec){_0x2911ec=_0x2911ec||0xcc;return function(_0x199930){if(_0x199930){return _0x55b4ca['sendStatus'](_0x2911ec);}return _0x55b4ca[_0x7721('0x1c')](_0x2911ec)[_0x7721('0x1d')]();};}function respondWithResult(_0x3f01c5,_0x2e9752){_0x2e9752=_0x2e9752||0xc8;return function(_0x5069da){if(_0x5069da){return _0x3f01c5[_0x7721('0x1c')](_0x2e9752)[_0x7721('0x1e')](_0x5069da);}};}function respondWithFilteredResult(_0x534f1b,_0x4e199a){return function(_0x4b183e){if(_0x4b183e){var _0x5ed54=typeof _0x4e199a[_0x7721('0x1f')]===_0x7721('0x20')&&typeof _0x4e199a[_0x7721('0x21')]==='undefined';var _0x20f669=_0x4b183e['count'];var _0x3fc09e=_0x5ed54?0x0:_0x4e199a['offset'];var _0xfec626=_0x5ed54?_0x4b183e[_0x7721('0x22')]:_0x4e199a[_0x7721('0x1f')]+_0x4e199a[_0x7721('0x21')];var _0x2286e5;if(_0xfec626>=_0x20f669){_0xfec626=_0x20f669;_0x2286e5=0xc8;}else{_0x2286e5=0xce;}_0x534f1b[_0x7721('0x1c')](_0x2286e5);return _0x534f1b[_0x7721('0x23')](_0x7721('0x24'),_0x3fc09e+'-'+_0xfec626+'/'+_0x20f669)[_0x7721('0x1e')](_0x4b183e);}return null;};}function patchUpdates(_0xaeccc4){return function(_0x4ce1db){try{jsonpatch[_0x7721('0x25')](_0x4ce1db,_0xaeccc4,!![]);}catch(_0x2c1583){return BPromise[_0x7721('0x26')](_0x2c1583);}return _0x4ce1db[_0x7721('0x27')]();};}function saveUpdates(_0x57140c,_0x28f5a6){return function(_0x512f31){if(_0x512f31){return _0x512f31[_0x7721('0x28')](_0x57140c)[_0x7721('0x29')](function(_0x3e8a4e){return _0x3e8a4e;});}return null;};}function removeEntity(_0x1caad8,_0x121cc4){return function(_0x395b15){if(_0x395b15){return _0x395b15[_0x7721('0x2a')]()['then'](function(){var _0x216f20=_0x395b15[_0x7721('0x2b')]({'plain':!![]});var _0x125564=_0x7721('0x2c');return db[_0x7721('0x2d')][_0x7721('0x2a')]({'where':{'type':_0x125564,'resourceId':_0x216f20['id']}})[_0x7721('0x29')](function(){return _0x395b15;});})[_0x7721('0x29')](function(){_0x1caad8[_0x7721('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x258ddf,_0x5b0551){return function(_0x499b87){if(!_0x499b87){_0x258ddf[_0x7721('0x2e')](0x194);}return _0x499b87;};}function handleError(_0x343c19,_0x53c904){_0x53c904=_0x53c904||0x1f4;return function(_0x158d98){logger[_0x7721('0x2f')](_0x158d98[_0x7721('0x30')]);if(_0x158d98[_0x7721('0x31')]){delete _0x158d98[_0x7721('0x31')];}_0x343c19['status'](_0x53c904)[_0x7721('0x32')](_0x158d98);};}exports[_0x7721('0x33')]=function(_0x497f9f,_0x4a25c9){var _0xfde9ec={},_0x220bbf={},_0x48f329={'count':0x0,'rows':[]};var _0x46f772=_[_0x7721('0x34')](db[_0x7721('0x35')]['rawAttributes'],function(_0x3d9a32){return{'name':_0x3d9a32[_0x7721('0x36')],'type':_0x3d9a32[_0x7721('0x37')][_0x7721('0x38')]};});_0x220bbf[_0x7721('0x39')]=_['map'](_0x46f772,_0x7721('0x31'));_0x220bbf[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0x497f9f['query']);_0x220bbf[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x220bbf['model'],_0x220bbf[_0x7721('0x3a')]);_0xfde9ec['attributes']=_[_0x7721('0x3d')](_0x220bbf[_0x7721('0x39')],qs[_0x7721('0x3e')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x3e')]));_0xfde9ec[_0x7721('0x3f')]=_0xfde9ec[_0x7721('0x3f')][_0x7721('0x40')]?_0xfde9ec[_0x7721('0x3f')]:_0x220bbf[_0x7721('0x39')];if(!_0x497f9f[_0x7721('0x3a')]['hasOwnProperty'](_0x7721('0x41'))){_0xfde9ec['limit']=qs[_0x7721('0x21')](_0x497f9f[_0x7721('0x3a')][_0x7721('0x21')]);_0xfde9ec[_0x7721('0x1f')]=qs[_0x7721('0x1f')](_0x497f9f[_0x7721('0x3a')]['offset']);}_0xfde9ec['order']=qs['sort'](_0x497f9f['query'][_0x7721('0x42')]);_0xfde9ec[_0x7721('0x43')]=qs[_0x7721('0x3c')](_[_0x7721('0x44')](_0x497f9f['query'],_0x220bbf[_0x7721('0x3c')]),_0x46f772);if(_0x497f9f['query'][_0x7721('0x45')]){_0xfde9ec[_0x7721('0x43')]=_['merge'](_0xfde9ec[_0x7721('0x43')],{'$or':_[_0x7721('0x34')](_0x46f772,function(_0x4e77ff){if(_0x4e77ff['type']!==_0x7721('0x46')){var _0xfc4dc4={};_0xfc4dc4[_0x4e77ff[_0x7721('0x31')]]={'$like':'%'+_0x497f9f[_0x7721('0x3a')]['filter']+'%'};return _0xfc4dc4;}})});}_0xfde9ec=_[_0x7721('0x47')]({},_0xfde9ec,_0x497f9f[_0x7721('0x48')]);var _0x40ce8c={'where':_0xfde9ec[_0x7721('0x43')]};return db[_0x7721('0x35')]['count'](_0x40ce8c)[_0x7721('0x29')](function(_0x4a2c28){_0x48f329[_0x7721('0x22')]=_0x4a2c28;if(_0x497f9f['query'][_0x7721('0x49')]){_0xfde9ec[_0x7721('0x4a')]=[{'all':!![]}];}return db[_0x7721('0x35')]['findAll'](_0xfde9ec);})[_0x7721('0x29')](function(_0x11d853){_0x48f329[_0x7721('0x4b')]=_0x11d853;return _0x48f329;})['then'](respondWithFilteredResult(_0x4a25c9,_0xfde9ec))[_0x7721('0x4c')](handleError(_0x4a25c9,null));};exports[_0x7721('0x4d')]=function(_0xdb3033,_0x2d5f35){var _0x135dbc={'raw':!![],'where':{'id':_0xdb3033[_0x7721('0x4e')]['id']}},_0x57d09b={};_0x57d09b['model']=_['keys'](db[_0x7721('0x35')][_0x7721('0x4f')]);_0x57d09b[_0x7721('0x3a')]=_[_0x7721('0x3b')](_0xdb3033[_0x7721('0x3a')]);_0x57d09b[_0x7721('0x3c')]=_[_0x7721('0x3d')](_0x57d09b[_0x7721('0x39')],_0x57d09b[_0x7721('0x3a')]);_0x135dbc[_0x7721('0x3f')]=_['intersection'](_0x57d09b['model'],qs[_0x7721('0x3e')](_0xdb3033[_0x7721('0x3a')][_0x7721('0x3e')]));_0x135dbc[_0x7721('0x3f')]=_0x135dbc['attributes'][_0x7721('0x40')]?_0x135dbc[_0x7721('0x3f')]:_0x57d09b['model'];if(_0xdb3033[_0x7721('0x3a')]['includeAll']){_0x135dbc[_0x7721('0x4a')]=[{'all':!![]}];}_0x135dbc=_['merge']({},_0x135dbc,_0xdb3033[_0x7721('0x48')]);return db[_0x7721('0x35')][_0x7721('0x50')](_0x135dbc)['then'](handleEntityNotFound(_0x2d5f35,null))[_0x7721('0x29')](respondWithResult(_0x2d5f35,null))[_0x7721('0x4c')](handleError(_0x2d5f35,null));};exports['create']=function(_0x223d93,_0x1196c2){return db[_0x7721('0x35')]['create'](_0x223d93[_0x7721('0x51')],{})['then'](function(_0xdb1ca8){var _0x310549=_0x223d93[_0x7721('0x52')][_0x7721('0x2b')]({'plain':!![]});if(!_0x310549)throw new Error(_0x7721('0x53'));if(_0x310549[_0x7721('0x54')]===_0x7721('0x52')){var _0x7fbb73=_0xdb1ca8[_0x7721('0x2b')]({'plain':!![]});var _0x3386aa=_0x7721('0x2c');return db[_0x7721('0x55')][_0x7721('0x50')]({'where':{'name':_0x3386aa,'userProfileId':_0x310549[_0x7721('0x56')]},'raw':!![]})[_0x7721('0x29')](function(_0x5b741d){if(_0x5b741d&&_0x5b741d[_0x7721('0x57')]===0x0){return db[_0x7721('0x2d')][_0x7721('0x58')]({'name':_0x7fbb73[_0x7721('0x31')],'resourceId':_0x7fbb73['id'],'type':_0x5b741d[_0x7721('0x31')],'sectionId':_0x5b741d['id']},{})[_0x7721('0x29')](function(){return _0xdb1ca8;});}else{return _0xdb1ca8;}})[_0x7721('0x4c')](function(_0x57484c){logger[_0x7721('0x2f')](_0x7721('0x59'),_0x57484c);throw _0x57484c;});}return _0xdb1ca8;})[_0x7721('0x29')](respondWithResult(_0x1196c2,0xc9))[_0x7721('0x4c')](handleError(_0x1196c2,null));};exports[_0x7721('0x28')]=function(_0x9c0d4,_0x7fbd6c){if(_0x9c0d4[_0x7721('0x51')]['id']){delete _0x9c0d4[_0x7721('0x51')]['id'];}return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x9c0d4['params']['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x7fbd6c,null))[_0x7721('0x29')](saveUpdates(_0x9c0d4[_0x7721('0x51')],null))[_0x7721('0x29')](respondWithResult(_0x7fbd6c,null))[_0x7721('0x4c')](handleError(_0x7fbd6c,null));};exports[_0x7721('0x2a')]=function(_0x41644f,_0x36fe6f){return db[_0x7721('0x35')][_0x7721('0x50')]({'where':{'id':_0x41644f[_0x7721('0x4e')]['id']}})[_0x7721('0x29')](handleEntityNotFound(_0x36fe6f,null))[_0x7721('0x29')](removeEntity(_0x36fe6f,null))[_0x7721('0x4c')](handleError(_0x36fe6f,null));};
\ No newline at end of file
+var _0x4b84=['status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','stack','name','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x41cec7,_0x2e1f4a){var _0x5ed26a=function(_0x447ad7){while(--_0x447ad7){_0x41cec7['push'](_0x41cec7['shift']());}};_0x5ed26a(++_0x2e1f4a);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5ef905,_0x564b87){_0x5ef905=_0x5ef905-0x0;var _0x367808=_0x4b84[_0x5ef905];return _0x367808;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];function respondWithStatusCode(_0x4301a6,_0x4bcc43){_0x4bcc43=_0x4bcc43||0xcc;return function(_0x194230){if(_0x194230){return _0x4301a6['sendStatus'](_0x4bcc43);}return _0x4301a6[_0x44b8('0x14')](_0x4bcc43)[_0x44b8('0x15')]();};}function respondWithResult(_0x4df670,_0x63e8f6){_0x63e8f6=_0x63e8f6||0xc8;return function(_0x4be54c){if(_0x4be54c){return _0x4df670['status'](_0x63e8f6)[_0x44b8('0x16')](_0x4be54c);}};}function respondWithFilteredResult(_0x2af0ad,_0x1722da){return function(_0x41ab46){if(_0x41ab46){var _0x5e52f2=typeof _0x1722da['offset']==='undefined'&&typeof _0x1722da[_0x44b8('0x17')]==='undefined';var _0x28ef36=_0x41ab46[_0x44b8('0x18')];var _0x55e258=_0x5e52f2?0x0:_0x1722da[_0x44b8('0x19')];var _0xe3de8f=_0x5e52f2?_0x41ab46['count']:_0x1722da[_0x44b8('0x19')]+_0x1722da[_0x44b8('0x17')];var _0x4b600f;if(_0xe3de8f>=_0x28ef36){_0xe3de8f=_0x28ef36;_0x4b600f=0xc8;}else{_0x4b600f=0xce;}_0x2af0ad[_0x44b8('0x14')](_0x4b600f);return _0x2af0ad[_0x44b8('0x1a')](_0x44b8('0x1b'),_0x55e258+'-'+_0xe3de8f+'/'+_0x28ef36)[_0x44b8('0x16')](_0x41ab46);}return null;};}function patchUpdates(_0x102ef9){return function(_0x369c09){try{jsonpatch[_0x44b8('0x1c')](_0x369c09,_0x102ef9,!![]);}catch(_0x9b0536){return BPromise[_0x44b8('0x1d')](_0x9b0536);}return _0x369c09[_0x44b8('0x1e')]();};}function saveUpdates(_0x1d642b,_0x14996c){return function(_0x48327e){if(_0x48327e){return _0x48327e[_0x44b8('0x1f')](_0x1d642b)[_0x44b8('0x20')](function(_0x416b34){return _0x416b34;});}return null;};}function removeEntity(_0x1418db,_0x305a5c){return function(_0x51a34a){if(_0x51a34a){return _0x51a34a[_0x44b8('0x21')]()['then'](function(){var _0x41a922=_0x51a34a[_0x44b8('0x22')]({'plain':!![]});var _0x25a0c1=_0x44b8('0x23');return db[_0x44b8('0x24')]['destroy']({'where':{'type':_0x25a0c1,'resourceId':_0x41a922['id']}})[_0x44b8('0x20')](function(){return _0x51a34a;});})['then'](function(){_0x1418db[_0x44b8('0x14')](0xcc)[_0x44b8('0x15')]();});}};}function handleEntityNotFound(_0x549a26,_0x17ac44){return function(_0x470f49){if(!_0x470f49){_0x549a26[_0x44b8('0x25')](0x194);}return _0x470f49;};}function handleError(_0x59c1bf,_0xb22107){_0xb22107=_0xb22107||0x1f4;return function(_0x242342){logger['error'](_0x242342[_0x44b8('0x26')]);if(_0x242342['name']){delete _0x242342[_0x44b8('0x27')];}_0x59c1bf['status'](_0xb22107)['send'](_0x242342);};}exports['index']=function(_0x387293,_0x29b18d){var _0x44ce5a={},_0x1bd1be={},_0x38cd17={'count':0x0,'rows':[]};var _0xc3f667=_[_0x44b8('0x28')](db[_0x44b8('0x29')][_0x44b8('0x2a')],function(_0x28f918){return{'name':_0x28f918[_0x44b8('0x2b')],'type':_0x28f918[_0x44b8('0x2c')][_0x44b8('0x2d')]};});_0x1bd1be['model']=_[_0x44b8('0x28')](_0xc3f667,'name');_0x1bd1be[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x387293[_0x44b8('0x2e')]);_0x1bd1be[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x1bd1be['model'],_0x1bd1be[_0x44b8('0x2e')]);_0x44ce5a[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1bd1be[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x387293['query'][_0x44b8('0x34')]));_0x44ce5a[_0x44b8('0x32')]=_0x44ce5a[_0x44b8('0x32')][_0x44b8('0x35')]?_0x44ce5a[_0x44b8('0x32')]:_0x1bd1be[_0x44b8('0x33')];if(!_0x387293[_0x44b8('0x2e')][_0x44b8('0x36')](_0x44b8('0x37'))){_0x44ce5a[_0x44b8('0x17')]=qs[_0x44b8('0x17')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x17')]);_0x44ce5a[_0x44b8('0x19')]=qs[_0x44b8('0x19')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x19')]);}_0x44ce5a[_0x44b8('0x38')]=qs[_0x44b8('0x39')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x39')]);_0x44ce5a[_0x44b8('0x3a')]=qs['filters'](_[_0x44b8('0x3b')](_0x387293[_0x44b8('0x2e')],_0x1bd1be['filters']),_0xc3f667);if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]){_0x44ce5a[_0x44b8('0x3a')]=_[_0x44b8('0x3d')](_0x44ce5a['where'],{'$or':_[_0x44b8('0x28')](_0xc3f667,function(_0x11e4e3){if(_0x11e4e3[_0x44b8('0x2c')]!==_0x44b8('0x3e')){var _0x9cb2a={};_0x9cb2a[_0x11e4e3[_0x44b8('0x27')]]={'$like':'%'+_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]+'%'};return _0x9cb2a;}})});}_0x44ce5a=_[_0x44b8('0x3d')]({},_0x44ce5a,_0x387293[_0x44b8('0x3f')]);var _0x1c9983={'where':_0x44ce5a[_0x44b8('0x3a')]};return db[_0x44b8('0x29')][_0x44b8('0x18')](_0x1c9983)[_0x44b8('0x20')](function(_0x29b43f){_0x38cd17['count']=_0x29b43f;if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x44ce5a[_0x44b8('0x41')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x44b8('0x42')](_0x44ce5a);})[_0x44b8('0x20')](function(_0x229cc9){_0x38cd17['rows']=_0x229cc9;return _0x38cd17;})[_0x44b8('0x20')](respondWithFilteredResult(_0x29b18d,_0x44ce5a))[_0x44b8('0x43')](handleError(_0x29b18d,null));};exports[_0x44b8('0x44')]=function(_0x334f86,_0xfd590a){var _0x499a3e={'raw':!![],'where':{'id':_0x334f86[_0x44b8('0x45')]['id']}},_0x5ae5f9={};_0x5ae5f9[_0x44b8('0x33')]=_[_0x44b8('0x2f')](db[_0x44b8('0x29')][_0x44b8('0x2a')]);_0x5ae5f9[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x334f86[_0x44b8('0x2e')]);_0x5ae5f9[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],_0x5ae5f9[_0x44b8('0x2e')]);_0x499a3e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x334f86[_0x44b8('0x2e')][_0x44b8('0x34')]));_0x499a3e[_0x44b8('0x32')]=_0x499a3e['attributes']['length']?_0x499a3e[_0x44b8('0x32')]:_0x5ae5f9[_0x44b8('0x33')];if(_0x334f86[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x499a3e[_0x44b8('0x41')]=[{'all':!![]}];}_0x499a3e=_[_0x44b8('0x3d')]({},_0x499a3e,_0x334f86[_0x44b8('0x3f')]);return db['AnalyticMetric'][_0x44b8('0x46')](_0x499a3e)['then'](handleEntityNotFound(_0xfd590a,null))[_0x44b8('0x20')](respondWithResult(_0xfd590a,null))[_0x44b8('0x43')](handleError(_0xfd590a,null));};exports[_0x44b8('0x47')]=function(_0x9207bf,_0x103d57){return db[_0x44b8('0x29')]['create'](_0x9207bf[_0x44b8('0x48')],{})[_0x44b8('0x20')](function(_0x10602c){var _0x25d266=_0x9207bf['user'][_0x44b8('0x22')]({'plain':!![]});if(!_0x25d266)throw new Error(_0x44b8('0x49'));if(_0x25d266[_0x44b8('0x4a')]===_0x44b8('0x4b')){var _0x44ec23=_0x10602c[_0x44b8('0x22')]({'plain':!![]});var _0x500bad=_0x44b8('0x23');return db[_0x44b8('0x4c')][_0x44b8('0x46')]({'where':{'name':_0x500bad,'userProfileId':_0x25d266[_0x44b8('0x4d')]},'raw':!![]})[_0x44b8('0x20')](function(_0x57d0e2){if(_0x57d0e2&&_0x57d0e2['autoAssociation']===0x0){return db[_0x44b8('0x24')]['create']({'name':_0x44ec23[_0x44b8('0x27')],'resourceId':_0x44ec23['id'],'type':_0x57d0e2['name'],'sectionId':_0x57d0e2['id']},{})[_0x44b8('0x20')](function(){return _0x10602c;});}else{return _0x10602c;}})[_0x44b8('0x43')](function(_0x1a29f6){logger[_0x44b8('0x4e')](_0x44b8('0x4f'),_0x1a29f6);throw _0x1a29f6;});}return _0x10602c;})[_0x44b8('0x20')](respondWithResult(_0x103d57,0xc9))[_0x44b8('0x43')](handleError(_0x103d57,null));};exports['update']=function(_0x3ad278,_0x37b2c2){if(_0x3ad278[_0x44b8('0x48')]['id']){delete _0x3ad278['body']['id'];}return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x3ad278[_0x44b8('0x45')]['id']}})[_0x44b8('0x20')](handleEntityNotFound(_0x37b2c2,null))['then'](saveUpdates(_0x3ad278[_0x44b8('0x48')],null))[_0x44b8('0x20')](respondWithResult(_0x37b2c2,null))['catch'](handleError(_0x37b2c2,null));};exports[_0x44b8('0x21')]=function(_0x19f22b,_0x35136e){return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x19f22b['params']['id']}})['then'](handleEntityNotFound(_0x35136e,null))[_0x44b8('0x20')](removeEntity(_0x35136e,null))[_0x44b8('0x43')](handleError(_0x35136e,null));};
\ No newline at end of file
index 0a8facb..4f54a65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2484=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticMetric','analytics_metrics','lodash'];(function(_0xe0e845,_0x8107bf){var _0x13cfce=function(_0x2fd3fd){while(--_0x2fd3fd){_0xe0e845['push'](_0xe0e845['shift']());}};_0x13cfce(++_0x8107bf);}(_0x2484,0x178));var _0x4248=function(_0x5b87ce,_0x20b7f6){_0x5b87ce=_0x5b87ce-0x0;var _0x597aa7=_0x2484[_0x5b87ce];return _0x597aa7;};'use strict';var _=require(_0x4248('0x0'));var util=require(_0x4248('0x1'));var logger=require('../../config/logger')(_0x4248('0x2'));var moment=require(_0x4248('0x3'));var BPromise=require(_0x4248('0x4'));var rp=require(_0x4248('0x5'));var fs=require('fs');var path=require(_0x4248('0x6'));var rimraf=require(_0x4248('0x7'));var config=require(_0x4248('0x8'));var attributes=require('./analyticMetric.attributes');module[_0x4248('0x9')]=function(_0x2d220,_0x43e730){return _0x2d220[_0x4248('0xa')](_0x4248('0xb'),attributes,{'tableName':_0x4248('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd206=['util','api','moment','bluebird','path','rimraf','../../config/environment','./analyticMetric.attributes','AnalyticMetric','analytics_metrics','lodash'];(function(_0xadc7d9,_0x203608){var _0x915ca1=function(_0x34fbde){while(--_0x34fbde){_0xadc7d9['push'](_0xadc7d9['shift']());}};_0x915ca1(++_0x203608);}(_0xd206,0x107));var _0x6d20=function(_0x176329,_0x568c84){_0x176329=_0x176329-0x0;var _0x31997c=_0xd206[_0x176329];return _0x31997c;};'use strict';var _=require(_0x6d20('0x0'));var util=require(_0x6d20('0x1'));var logger=require('../../config/logger')(_0x6d20('0x2'));var moment=require(_0x6d20('0x3'));var BPromise=require(_0x6d20('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d20('0x5'));var rimraf=require(_0x6d20('0x6'));var config=require(_0x6d20('0x7'));var attributes=require(_0x6d20('0x8'));module['exports']=function(_0x467e6e,_0x5c5950){return _0x467e6e['define'](_0x6d20('0x9'),attributes,{'tableName':_0x6d20('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1c10f0f..c7c5bfd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99fb=['rpc','../../config/environment','jayson/promise','client','http','request','info','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','AnalyticMetric,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x173d7e,_0x3242fd){var _0x2220d6=function(_0x462828){while(--_0x462828){_0x173d7e['push'](_0x173d7e['shift']());}};_0x2220d6(++_0x3242fd);}(_0x99fb,0x1f3));var _0xb99f=function(_0x34e0d8,_0x1fe723){_0x34e0d8=_0x34e0d8-0x0;var _0x599523=_0x99fb[_0x34e0d8];return _0x599523;};'use strict';var _=require('lodash');var util=require(_0xb99f('0x0'));var moment=require(_0xb99f('0x1'));var BPromise=require(_0xb99f('0x2'));var rs=require(_0xb99f('0x3'));var fs=require('fs');var Redis=require(_0xb99f('0x4'));var db=require(_0xb99f('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xb99f('0x6'))(_0xb99f('0x7'));var config=require(_0xb99f('0x8'));var jayson=require(_0xb99f('0x9'));var client=jayson[_0xb99f('0xa')][_0xb99f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1fc451,_0x3f93c5,_0x30bb0e){return new BPromise(function(_0x2b2682,_0x20df68){return client[_0xb99f('0xc')](_0x1fc451,_0x30bb0e)['then'](function(_0x35f451){logger[_0xb99f('0xd')]('AnalyticMetric,\x20%s,\x20%s',_0x3f93c5,_0xb99f('0xe'));logger[_0xb99f('0xf')](_0xb99f('0x10'),_0x3f93c5,'request\x20sent',JSON[_0xb99f('0x11')](_0x35f451));if(_0x35f451[_0xb99f('0x12')]){if(_0x35f451[_0xb99f('0x12')]['code']===0x1f4){logger[_0xb99f('0x12')](_0xb99f('0x13'),_0x3f93c5,_0x35f451['error'][_0xb99f('0x14')]);return _0x20df68(_0x35f451[_0xb99f('0x12')][_0xb99f('0x14')]);}logger[_0xb99f('0x12')]('AnalyticMetric,\x20%s,\x20%s',_0x3f93c5,_0x35f451[_0xb99f('0x12')][_0xb99f('0x14')]);return _0x2b2682(_0x35f451['error'][_0xb99f('0x14')]);}else{logger[_0xb99f('0xd')]('AnalyticMetric,\x20%s,\x20%s',_0x3f93c5,_0xb99f('0xe'));_0x2b2682(_0x35f451[_0xb99f('0x15')][_0xb99f('0x14')]);}})[_0xb99f('0x16')](function(_0x32de80){logger['error'](_0xb99f('0x13'),_0x3f93c5,_0x32de80);_0x20df68(_0x32de80);});});}
\ No newline at end of file
+var _0xecac=['AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','AnalyticMetric,\x20%s,\x20%s','request\x20sent'];(function(_0x1b2462,_0x219dc6){var _0x40de12=function(_0x857bad){while(--_0x857bad){_0x1b2462['push'](_0x1b2462['shift']());}};_0x40de12(++_0x219dc6);}(_0xecac,0x71));var _0xceca=function(_0x25a23d,_0x9c9828){_0x25a23d=_0x25a23d-0x0;var _0x5104c2=_0xecac[_0x25a23d];return _0x5104c2;};'use strict';var _=require(_0xceca('0x0'));var util=require('util');var moment=require(_0xceca('0x1'));var BPromise=require(_0xceca('0x2'));var rs=require(_0xceca('0x3'));var fs=require('fs');var Redis=require(_0xceca('0x4'));var db=require(_0xceca('0x5'))['db'];var utils=require(_0xceca('0x6'));var logger=require(_0xceca('0x7'))('rpc');var config=require(_0xceca('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xceca('0x9')][_0xceca('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x12c455,_0x377822,_0x4e6e61){return new BPromise(function(_0x35edda,_0x455adb){return client['request'](_0x12c455,_0x4e6e61)['then'](function(_0x4b6b12){logger['info'](_0xceca('0xb'),_0x377822,_0xceca('0xc'));logger['debug'](_0xceca('0xd'),_0x377822,'request\x20sent',JSON[_0xceca('0xe')](_0x4b6b12));if(_0x4b6b12[_0xceca('0xf')]){if(_0x4b6b12['error'][_0xceca('0x10')]===0x1f4){logger['error'](_0xceca('0xb'),_0x377822,_0x4b6b12[_0xceca('0xf')][_0xceca('0x11')]);return _0x455adb(_0x4b6b12['error'][_0xceca('0x11')]);}logger[_0xceca('0xf')](_0xceca('0xb'),_0x377822,_0x4b6b12[_0xceca('0xf')]['message']);return _0x35edda(_0x4b6b12[_0xceca('0xf')][_0xceca('0x11')]);}else{logger[_0xceca('0x12')](_0xceca('0xb'),_0x377822,_0xceca('0xc'));_0x35edda(_0x4b6b12[_0xceca('0x13')][_0xceca('0x11')]);}})[_0xceca('0x14')](function(_0x5c4ca0){logger[_0xceca('0xf')](_0xceca('0xb'),_0x377822,_0x5c4ca0);_0x455adb(_0x5c4ca0);});});}
\ No newline at end of file
index 38dd22f..e557601 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a80=['exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','show','post','create','put','/:id','update','delete','destroy'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x4a80,0xbe));var _0x04a8=function(_0x151e4f,_0x45b100){_0x151e4f=_0x151e4f-0x0;var _0x3a7128=_0x4a80[_0x151e4f];return _0x3a7128;};'use strict';var multer=require(_0x04a8('0x0'));var util=require('util');var path=require(_0x04a8('0x1'));var timeout=require(_0x04a8('0x2'));var express=require('express');var router=express[_0x04a8('0x3')]();var fs_extra=require(_0x04a8('0x4'));var auth=require(_0x04a8('0x5'));var interaction=require(_0x04a8('0x6'));var config=require(_0x04a8('0x7'));var controller=require(_0x04a8('0x8'));router[_0x04a8('0x9')]('/',auth[_0x04a8('0xa')](),controller[_0x04a8('0xb')]);router[_0x04a8('0x9')]('/:id',auth[_0x04a8('0xa')](),controller[_0x04a8('0xc')]);router[_0x04a8('0xd')]('/',auth[_0x04a8('0xa')](),controller[_0x04a8('0xe')]);router[_0x04a8('0xf')](_0x04a8('0x10'),auth[_0x04a8('0xa')](),controller[_0x04a8('0x11')]);router[_0x04a8('0x12')]('/:id',auth[_0x04a8('0xa')](),controller[_0x04a8('0x13')]);module[_0x04a8('0x14')]=router;
\ No newline at end of file
+var _0xf8bb=['index','/:id','post','put','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated'];(function(_0x560a6a,_0x2816fc){var _0x350d18=function(_0x3db41f){while(--_0x3db41f){_0x560a6a['push'](_0x560a6a['shift']());}};_0x350d18(++_0x2816fc);}(_0xf8bb,0x111));var _0xbf8b=function(_0xe64980,_0xfae68a){_0xe64980=_0xe64980-0x0;var _0x1c390c=_0xf8bb[_0xe64980];return _0x1c390c;};'use strict';var multer=require(_0xbf8b('0x0'));var util=require(_0xbf8b('0x1'));var path=require(_0xbf8b('0x2'));var timeout=require('connect-timeout');var express=require(_0xbf8b('0x3'));var router=express[_0xbf8b('0x4')]();var fs_extra=require(_0xbf8b('0x5'));var auth=require(_0xbf8b('0x6'));var interaction=require(_0xbf8b('0x7'));var config=require(_0xbf8b('0x8'));var controller=require(_0xbf8b('0x9'));router[_0xbf8b('0xa')]('/',auth[_0xbf8b('0xb')](),controller[_0xbf8b('0xc')]);router[_0xbf8b('0xa')](_0xbf8b('0xd'),auth[_0xbf8b('0xb')](),controller['show']);router[_0xbf8b('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0xbf8b('0xf')]('/:id',auth[_0xbf8b('0xb')](),controller['update']);router[_0xbf8b('0x10')](_0xbf8b('0xd'),auth[_0xbf8b('0xb')](),controller[_0xbf8b('0x11')]);module[_0xbf8b('0x12')]=router;
\ No newline at end of file
index e25c012..a74708a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5de=['exports'];(function(_0x2e6c8d,_0x17c7ef){var _0x259c0f=function(_0x97387a){while(--_0x97387a){_0x2e6c8d['push'](_0x2e6c8d['shift']());}};_0x259c0f(++_0x17c7ef);}(_0xc5de,0x154));var _0xec5d=function(_0x863e9e,_0x5854b0){_0x863e9e=_0x863e9e-0x0;var _0x24fa60=_0xc5de[_0x863e9e];return _0x24fa60;};'use strict';var Sequelize=require('sequelize');module[_0xec5d('0x0')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
+var _0x4210=['sequelize','exports'];(function(_0xece3f0,_0x3cd739){var _0x5d554c=function(_0x36011c){while(--_0x36011c){_0xece3f0['push'](_0xece3f0['shift']());}};_0x5d554c(++_0x3cd739);}(_0x4210,0x64));var _0x0421=function(_0x3e3ce0,_0x5915f3){_0x3e3ce0=_0x3e3ce0-0x0;var _0x1ae7e8=_0x4210[_0x3e3ce0];return _0x1ae7e8;};'use strict';var Sequelize=require(_0x0421('0x0'));module[_0x0421('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 6cfc8ed..e067050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3480=['then','sendStatus','error','stack','name','send','map','AnalyticTreeReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','model','find','create','body','destroy','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','set','apply','save','update'];(function(_0x27b8f5,_0x1e5ddf){var _0x5a3de2=function(_0x39d9aa){while(--_0x39d9aa){_0x27b8f5['push'](_0x27b8f5['shift']());}};_0x5a3de2(++_0x1e5ddf);}(_0x3480,0x103));var _0x0348=function(_0x47d47f,_0x4ba23b){_0x47d47f=_0x47d47f-0x0;var _0x2a1758=_0x3480[_0x47d47f];return _0x2a1758;};'use strict';var emlformat=require(_0x0348('0x0'));var rimraf=require(_0x0348('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0348('0x2'));var moment=require(_0x0348('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0348('0x4'));var util=require(_0x0348('0x5'));var path=require(_0x0348('0x6'));var sox=require(_0x0348('0x7'));var csv=require('to-csv');var ejs=require(_0x0348('0x8'));var fs=require('fs');var fs_extra=require(_0x0348('0x9'));var _=require('lodash');var squel=require(_0x0348('0xa'));var crypto=require(_0x0348('0xb'));var jsforce=require(_0x0348('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0348('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0348('0xe'));var as=require(_0x0348('0xf'));var hardwareService=require(_0x0348('0x10'));var logger=require('../../config/logger')('api');var utils=require(_0x0348('0x11'));var config=require(_0x0348('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x0348('0x13'))['db'];function respondWithStatusCode(_0x3ab060,_0x55f9cd){_0x55f9cd=_0x55f9cd||0xcc;return function(_0x2571cd){if(_0x2571cd){return _0x3ab060['sendStatus'](_0x55f9cd);}return _0x3ab060[_0x0348('0x14')](_0x55f9cd)[_0x0348('0x15')]();};}function respondWithResult(_0x234387,_0x567b1b){_0x567b1b=_0x567b1b||0xc8;return function(_0x3f52bc){if(_0x3f52bc){return _0x234387[_0x0348('0x14')](_0x567b1b)[_0x0348('0x16')](_0x3f52bc);}};}function respondWithFilteredResult(_0x308ca5,_0x1565e1){return function(_0x38a9c4){if(_0x38a9c4){var _0x2e89a2=typeof _0x1565e1[_0x0348('0x17')]===_0x0348('0x18')&&typeof _0x1565e1['limit']==='undefined';var _0x2d7d30=_0x38a9c4['count'];var _0x1de655=_0x2e89a2?0x0:_0x1565e1[_0x0348('0x17')];var _0x384784=_0x2e89a2?_0x38a9c4['count']:_0x1565e1[_0x0348('0x17')]+_0x1565e1['limit'];var _0x521210;if(_0x384784>=_0x2d7d30){_0x384784=_0x2d7d30;_0x521210=0xc8;}else{_0x521210=0xce;}_0x308ca5[_0x0348('0x14')](_0x521210);return _0x308ca5[_0x0348('0x19')]('Content-Range',_0x1de655+'-'+_0x384784+'/'+_0x2d7d30)['json'](_0x38a9c4);}return null;};}function patchUpdates(_0x5de64b){return function(_0x1a4402){try{jsonpatch[_0x0348('0x1a')](_0x1a4402,_0x5de64b,!![]);}catch(_0xa9baef){return BPromise['reject'](_0xa9baef);}return _0x1a4402[_0x0348('0x1b')]();};}function saveUpdates(_0x11fd40,_0x3d3032){return function(_0x2dd5f5){if(_0x2dd5f5){return _0x2dd5f5[_0x0348('0x1c')](_0x11fd40)['then'](function(_0x2e857d){return _0x2e857d;});}return null;};}function removeEntity(_0x2fadde,_0x408d2d){return function(_0x4dc513){if(_0x4dc513){return _0x4dc513['destroy']()[_0x0348('0x1d')](function(){_0x2fadde['status'](0xcc)[_0x0348('0x15')]();});}};}function handleEntityNotFound(_0x1f8a1c,_0x4fc7a0){return function(_0x529cc7){if(!_0x529cc7){_0x1f8a1c[_0x0348('0x1e')](0x194);}return _0x529cc7;};}function handleError(_0x2d72cd,_0x382b61){_0x382b61=_0x382b61||0x1f4;return function(_0x24bb60){logger[_0x0348('0x1f')](_0x24bb60[_0x0348('0x20')]);if(_0x24bb60['name']){delete _0x24bb60[_0x0348('0x21')];}_0x2d72cd[_0x0348('0x14')](_0x382b61)[_0x0348('0x22')](_0x24bb60);};}exports['index']=function(_0x2e2447,_0x57bab4){var _0x5e2021={},_0x5e8c9e={},_0x3fc2a8={'count':0x0,'rows':[]};var _0x41cff7=_[_0x0348('0x23')](db[_0x0348('0x24')][_0x0348('0x25')],function(_0xffa7bc){return{'name':_0xffa7bc[_0x0348('0x26')],'type':_0xffa7bc[_0x0348('0x27')][_0x0348('0x28')]};});_0x5e8c9e['model']=_[_0x0348('0x23')](_0x41cff7,'name');_0x5e8c9e[_0x0348('0x29')]=_[_0x0348('0x2a')](_0x2e2447[_0x0348('0x29')]);_0x5e8c9e[_0x0348('0x2b')]=_[_0x0348('0x2c')](_0x5e8c9e['model'],_0x5e8c9e[_0x0348('0x29')]);_0x5e2021[_0x0348('0x2d')]=_[_0x0348('0x2c')](_0x5e8c9e['model'],qs[_0x0348('0x2e')](_0x2e2447[_0x0348('0x29')]['fields']));_0x5e2021['attributes']=_0x5e2021[_0x0348('0x2d')][_0x0348('0x2f')]?_0x5e2021[_0x0348('0x2d')]:_0x5e8c9e['model'];if(!_0x2e2447[_0x0348('0x29')][_0x0348('0x30')](_0x0348('0x31'))){_0x5e2021[_0x0348('0x32')]=qs[_0x0348('0x32')](_0x2e2447[_0x0348('0x29')]['limit']);_0x5e2021[_0x0348('0x17')]=qs['offset'](_0x2e2447['query']['offset']);}_0x5e2021[_0x0348('0x33')]=qs[_0x0348('0x34')](_0x2e2447[_0x0348('0x29')]['sort']);_0x5e2021[_0x0348('0x35')]=qs[_0x0348('0x2b')](_[_0x0348('0x36')](_0x2e2447['query'],_0x5e8c9e[_0x0348('0x2b')]),_0x41cff7);if(_0x2e2447[_0x0348('0x29')][_0x0348('0x37')]){_0x5e2021[_0x0348('0x35')]=_[_0x0348('0x38')](_0x5e2021[_0x0348('0x35')],{'$or':_[_0x0348('0x23')](_0x41cff7,function(_0x3bd37f){if(_0x3bd37f[_0x0348('0x27')]!==_0x0348('0x39')){var _0x5c1b63={};_0x5c1b63[_0x3bd37f[_0x0348('0x21')]]={'$like':'%'+_0x2e2447['query'][_0x0348('0x37')]+'%'};return _0x5c1b63;}})});}_0x5e2021=_[_0x0348('0x38')]({},_0x5e2021,_0x2e2447[_0x0348('0x3a')]);var _0x3b4ddc={'where':_0x5e2021[_0x0348('0x35')]};return db[_0x0348('0x24')][_0x0348('0x3b')](_0x3b4ddc)['then'](function(_0x3754dc){_0x3fc2a8['count']=_0x3754dc;if(_0x2e2447[_0x0348('0x29')][_0x0348('0x3c')]){_0x5e2021[_0x0348('0x3d')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x0348('0x3e')](_0x5e2021);})[_0x0348('0x1d')](function(_0x273cd9){_0x3fc2a8[_0x0348('0x3f')]=_0x273cd9;return _0x3fc2a8;})[_0x0348('0x1d')](respondWithFilteredResult(_0x57bab4,_0x5e2021))[_0x0348('0x40')](handleError(_0x57bab4,null));};exports[_0x0348('0x41')]=function(_0x58c521,_0x5f0fd2){var _0xa50eef={'raw':!![],'where':{'id':_0x58c521[_0x0348('0x42')]['id']}},_0x1c6598={};_0x1c6598[_0x0348('0x43')]=_[_0x0348('0x2a')](db[_0x0348('0x24')][_0x0348('0x25')]);_0x1c6598[_0x0348('0x29')]=_['keys'](_0x58c521[_0x0348('0x29')]);_0x1c6598[_0x0348('0x2b')]=_[_0x0348('0x2c')](_0x1c6598['model'],_0x1c6598[_0x0348('0x29')]);_0xa50eef[_0x0348('0x2d')]=_[_0x0348('0x2c')](_0x1c6598[_0x0348('0x43')],qs[_0x0348('0x2e')](_0x58c521[_0x0348('0x29')][_0x0348('0x2e')]));_0xa50eef[_0x0348('0x2d')]=_0xa50eef[_0x0348('0x2d')][_0x0348('0x2f')]?_0xa50eef['attributes']:_0x1c6598[_0x0348('0x43')];if(_0x58c521[_0x0348('0x29')][_0x0348('0x3c')]){_0xa50eef['include']=[{'all':!![]}];}_0xa50eef=_[_0x0348('0x38')]({},_0xa50eef,_0x58c521['options']);return db[_0x0348('0x24')][_0x0348('0x44')](_0xa50eef)[_0x0348('0x1d')](handleEntityNotFound(_0x5f0fd2,null))[_0x0348('0x1d')](respondWithResult(_0x5f0fd2,null))[_0x0348('0x40')](handleError(_0x5f0fd2,null));};exports[_0x0348('0x45')]=function(_0x4717b2,_0x5286bf){return db[_0x0348('0x24')]['create'](_0x4717b2['body'],{})[_0x0348('0x1d')](respondWithResult(_0x5286bf,0xc9))['catch'](handleError(_0x5286bf,null));};exports[_0x0348('0x1c')]=function(_0x5956be,_0x18c9ba){if(_0x5956be[_0x0348('0x46')]['id']){delete _0x5956be[_0x0348('0x46')]['id'];}return db[_0x0348('0x24')][_0x0348('0x44')]({'where':{'id':_0x5956be[_0x0348('0x42')]['id']}})[_0x0348('0x1d')](handleEntityNotFound(_0x18c9ba,null))[_0x0348('0x1d')](saveUpdates(_0x5956be[_0x0348('0x46')],null))['then'](respondWithResult(_0x18c9ba,null))['catch'](handleError(_0x18c9ba,null));};exports[_0x0348('0x47')]=function(_0xa181b9,_0x4e6b26){return db[_0x0348('0x24')][_0x0348('0x44')]({'where':{'id':_0xa181b9[_0x0348('0x42')]['id']}})[_0x0348('0x1d')](handleEntityNotFound(_0x4e6b26,null))['then'](removeEntity(_0x4e6b26,null))[_0x0348('0x40')](handleError(_0x4e6b26,null));};
\ No newline at end of file
+var _0x3b81=['status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','send','index','map','AnalyticTreeReport','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus'];(function(_0x1ee0a1,_0x51058e){var _0x1d2d5b=function(_0x35cfb5){while(--_0x35cfb5){_0x1ee0a1['push'](_0x1ee0a1['shift']());}};_0x1d2d5b(++_0x51058e);}(_0x3b81,0x10b));var _0x13b8=function(_0x3c4b4b,_0xec9c64){_0x3c4b4b=_0x3c4b4b-0x0;var _0x527cae=_0x3b81[_0x3c4b4b];return _0x527cae;};'use strict';var emlformat=require(_0x13b8('0x0'));var rimraf=require(_0x13b8('0x1'));var zipdir=require(_0x13b8('0x2'));var jsonpatch=require(_0x13b8('0x3'));var rp=require(_0x13b8('0x4'));var moment=require(_0x13b8('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x13b8('0x6'));var path=require(_0x13b8('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x13b8('0x8'));var fs=require('fs');var fs_extra=require(_0x13b8('0x9'));var _=require('lodash');var squel=require(_0x13b8('0xa'));var crypto=require(_0x13b8('0xb'));var jsforce=require(_0x13b8('0xc'));var deskjs=require(_0x13b8('0xd'));var toCsv=require(_0x13b8('0xe'));var querystring=require('querystring');var Papa=require(_0x13b8('0xf'));var Redis=require(_0x13b8('0x10'));var authService=require(_0x13b8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x13b8('0x12'));var hardwareService=require(_0x13b8('0x13'));var logger=require(_0x13b8('0x14'))('api');var utils=require(_0x13b8('0x15'));var config=require(_0x13b8('0x16'));var licenseUtil=require(_0x13b8('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ccc58,_0x402808){_0x402808=_0x402808||0xcc;return function(_0x95b541){if(_0x95b541){return _0x1ccc58[_0x13b8('0x18')](_0x402808);}return _0x1ccc58[_0x13b8('0x19')](_0x402808)[_0x13b8('0x1a')]();};}function respondWithResult(_0x468669,_0x24e54b){_0x24e54b=_0x24e54b||0xc8;return function(_0x5f44f0){if(_0x5f44f0){return _0x468669[_0x13b8('0x19')](_0x24e54b)[_0x13b8('0x1b')](_0x5f44f0);}};}function respondWithFilteredResult(_0x1b2637,_0x5bcf79){return function(_0x4c8bb6){if(_0x4c8bb6){var _0x2c652f=typeof _0x5bcf79[_0x13b8('0x1c')]===_0x13b8('0x1d')&&typeof _0x5bcf79[_0x13b8('0x1e')]==='undefined';var _0x1d5998=_0x4c8bb6[_0x13b8('0x1f')];var _0x380059=_0x2c652f?0x0:_0x5bcf79['offset'];var _0x1f7128=_0x2c652f?_0x4c8bb6[_0x13b8('0x1f')]:_0x5bcf79[_0x13b8('0x1c')]+_0x5bcf79['limit'];var _0xf0fd3c;if(_0x1f7128>=_0x1d5998){_0x1f7128=_0x1d5998;_0xf0fd3c=0xc8;}else{_0xf0fd3c=0xce;}_0x1b2637['status'](_0xf0fd3c);return _0x1b2637[_0x13b8('0x20')]('Content-Range',_0x380059+'-'+_0x1f7128+'/'+_0x1d5998)['json'](_0x4c8bb6);}return null;};}function patchUpdates(_0x5e09eb){return function(_0x647a48){try{jsonpatch[_0x13b8('0x21')](_0x647a48,_0x5e09eb,!![]);}catch(_0x207dc6){return BPromise[_0x13b8('0x22')](_0x207dc6);}return _0x647a48[_0x13b8('0x23')]();};}function saveUpdates(_0x8d80fc,_0x507433){return function(_0x1a279b){if(_0x1a279b){return _0x1a279b[_0x13b8('0x24')](_0x8d80fc)[_0x13b8('0x25')](function(_0x1ef44a){return _0x1ef44a;});}return null;};}function removeEntity(_0x35ff08,_0x5a05f2){return function(_0x47826d){if(_0x47826d){return _0x47826d[_0x13b8('0x26')]()['then'](function(){_0x35ff08['status'](0xcc)[_0x13b8('0x1a')]();});}};}function handleEntityNotFound(_0x14b623,_0x311fde){return function(_0x5d5234){if(!_0x5d5234){_0x14b623[_0x13b8('0x18')](0x194);}return _0x5d5234;};}function handleError(_0x5017f2,_0x5ce9ff){_0x5ce9ff=_0x5ce9ff||0x1f4;return function(_0x12fd70){logger[_0x13b8('0x27')](_0x12fd70[_0x13b8('0x28')]);if(_0x12fd70['name']){delete _0x12fd70['name'];}_0x5017f2['status'](_0x5ce9ff)[_0x13b8('0x29')](_0x12fd70);};}exports[_0x13b8('0x2a')]=function(_0xd27308,_0x2fde62){var _0x2922cf={},_0x558a12={},_0x4fe108={'count':0x0,'rows':[]};var _0x491f3f=_[_0x13b8('0x2b')](db[_0x13b8('0x2c')]['rawAttributes'],function(_0x18ffcb){return{'name':_0x18ffcb[_0x13b8('0x2d')],'type':_0x18ffcb[_0x13b8('0x2e')]['key']};});_0x558a12[_0x13b8('0x2f')]=_[_0x13b8('0x2b')](_0x491f3f,'name');_0x558a12[_0x13b8('0x30')]=_[_0x13b8('0x31')](_0xd27308[_0x13b8('0x30')]);_0x558a12[_0x13b8('0x32')]=_[_0x13b8('0x33')](_0x558a12['model'],_0x558a12[_0x13b8('0x30')]);_0x2922cf[_0x13b8('0x34')]=_[_0x13b8('0x33')](_0x558a12[_0x13b8('0x2f')],qs[_0x13b8('0x35')](_0xd27308['query'][_0x13b8('0x35')]));_0x2922cf[_0x13b8('0x34')]=_0x2922cf[_0x13b8('0x34')][_0x13b8('0x36')]?_0x2922cf[_0x13b8('0x34')]:_0x558a12['model'];if(!_0xd27308['query'][_0x13b8('0x37')](_0x13b8('0x38'))){_0x2922cf[_0x13b8('0x1e')]=qs[_0x13b8('0x1e')](_0xd27308[_0x13b8('0x30')][_0x13b8('0x1e')]);_0x2922cf[_0x13b8('0x1c')]=qs[_0x13b8('0x1c')](_0xd27308[_0x13b8('0x30')][_0x13b8('0x1c')]);}_0x2922cf['order']=qs['sort'](_0xd27308['query']['sort']);_0x2922cf['where']=qs[_0x13b8('0x32')](_[_0x13b8('0x39')](_0xd27308[_0x13b8('0x30')],_0x558a12['filters']),_0x491f3f);if(_0xd27308[_0x13b8('0x30')][_0x13b8('0x3a')]){_0x2922cf[_0x13b8('0x3b')]=_['merge'](_0x2922cf[_0x13b8('0x3b')],{'$or':_[_0x13b8('0x2b')](_0x491f3f,function(_0x36dc52){if(_0x36dc52[_0x13b8('0x2e')]!==_0x13b8('0x3c')){var _0x2fe64e={};_0x2fe64e[_0x36dc52['name']]={'$like':'%'+_0xd27308[_0x13b8('0x30')]['filter']+'%'};return _0x2fe64e;}})});}_0x2922cf=_[_0x13b8('0x3d')]({},_0x2922cf,_0xd27308[_0x13b8('0x3e')]);var _0x2b50e9={'where':_0x2922cf[_0x13b8('0x3b')]};return db[_0x13b8('0x2c')][_0x13b8('0x1f')](_0x2b50e9)[_0x13b8('0x25')](function(_0x34b272){_0x4fe108[_0x13b8('0x1f')]=_0x34b272;if(_0xd27308[_0x13b8('0x30')][_0x13b8('0x3f')]){_0x2922cf[_0x13b8('0x40')]=[{'all':!![]}];}return db['AnalyticTreeReport'][_0x13b8('0x41')](_0x2922cf);})[_0x13b8('0x25')](function(_0x33123c){_0x4fe108[_0x13b8('0x42')]=_0x33123c;return _0x4fe108;})[_0x13b8('0x25')](respondWithFilteredResult(_0x2fde62,_0x2922cf))[_0x13b8('0x43')](handleError(_0x2fde62,null));};exports['show']=function(_0xd92a98,_0x1c0f6c){var _0x3ac6b8={'raw':!![],'where':{'id':_0xd92a98[_0x13b8('0x44')]['id']}},_0x111c7a={};_0x111c7a[_0x13b8('0x2f')]=_[_0x13b8('0x31')](db[_0x13b8('0x2c')][_0x13b8('0x45')]);_0x111c7a['query']=_[_0x13b8('0x31')](_0xd92a98[_0x13b8('0x30')]);_0x111c7a[_0x13b8('0x32')]=_['intersection'](_0x111c7a[_0x13b8('0x2f')],_0x111c7a[_0x13b8('0x30')]);_0x3ac6b8[_0x13b8('0x34')]=_['intersection'](_0x111c7a[_0x13b8('0x2f')],qs[_0x13b8('0x35')](_0xd92a98[_0x13b8('0x30')][_0x13b8('0x35')]));_0x3ac6b8[_0x13b8('0x34')]=_0x3ac6b8[_0x13b8('0x34')][_0x13b8('0x36')]?_0x3ac6b8[_0x13b8('0x34')]:_0x111c7a['model'];if(_0xd92a98[_0x13b8('0x30')][_0x13b8('0x3f')]){_0x3ac6b8[_0x13b8('0x40')]=[{'all':!![]}];}_0x3ac6b8=_['merge']({},_0x3ac6b8,_0xd92a98[_0x13b8('0x3e')]);return db[_0x13b8('0x2c')][_0x13b8('0x46')](_0x3ac6b8)['then'](handleEntityNotFound(_0x1c0f6c,null))['then'](respondWithResult(_0x1c0f6c,null))[_0x13b8('0x43')](handleError(_0x1c0f6c,null));};exports[_0x13b8('0x47')]=function(_0x4c1613,_0x4d0633){return db[_0x13b8('0x2c')]['create'](_0x4c1613['body'],{})[_0x13b8('0x25')](respondWithResult(_0x4d0633,0xc9))[_0x13b8('0x43')](handleError(_0x4d0633,null));};exports[_0x13b8('0x24')]=function(_0x3818f3,_0xe409e8){if(_0x3818f3[_0x13b8('0x48')]['id']){delete _0x3818f3[_0x13b8('0x48')]['id'];}return db['AnalyticTreeReport'][_0x13b8('0x46')]({'where':{'id':_0x3818f3[_0x13b8('0x44')]['id']}})[_0x13b8('0x25')](handleEntityNotFound(_0xe409e8,null))[_0x13b8('0x25')](saveUpdates(_0x3818f3[_0x13b8('0x48')],null))[_0x13b8('0x25')](respondWithResult(_0xe409e8,null))[_0x13b8('0x43')](handleError(_0xe409e8,null));};exports[_0x13b8('0x26')]=function(_0x53406a,_0x262f25){return db[_0x13b8('0x2c')][_0x13b8('0x46')]({'where':{'id':_0x53406a[_0x13b8('0x44')]['id']}})[_0x13b8('0x25')](handleEntityNotFound(_0x262f25,null))[_0x13b8('0x25')](removeEntity(_0x262f25,null))[_0x13b8('0x43')](handleError(_0x262f25,null));};
\ No newline at end of file
index dc70539..10e0c76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa29c=['./analyticTreeReport.attributes','exports','define','AnalyticTreeReport','lodash','util','api','rimraf','../../config/environment'];(function(_0x42279a,_0x25148b){var _0xb6a697=function(_0x1f180f){while(--_0x1f180f){_0x42279a['push'](_0x42279a['shift']());}};_0xb6a697(++_0x25148b);}(_0xa29c,0x1cf));var _0xca29=function(_0x339aa7,_0x41f0f7){_0x339aa7=_0x339aa7-0x0;var _0xa6c2bc=_0xa29c[_0x339aa7];return _0xa6c2bc;};'use strict';var _=require(_0xca29('0x0'));var util=require(_0xca29('0x1'));var logger=require('../../config/logger')(_0xca29('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xca29('0x3'));var config=require(_0xca29('0x4'));var attributes=require(_0xca29('0x5'));module[_0xca29('0x6')]=function(_0x311e23,_0x4f9c22){return _0x311e23[_0xca29('0x7')](_0xca29('0x8'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66d4=['AnalyticTreeReport','analytics_report_trees','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./analyticTreeReport.attributes','exports','define'];(function(_0x511907,_0x4ae413){var _0x5e58e6=function(_0xfd27e3){while(--_0xfd27e3){_0x511907['push'](_0x511907['shift']());}};_0x5e58e6(++_0x4ae413);}(_0x66d4,0x11a));var _0x466d=function(_0x280f4a,_0x2ed8d6){_0x280f4a=_0x280f4a-0x0;var _0x1bb157=_0x66d4[_0x280f4a];return _0x1bb157;};'use strict';var _=require(_0x466d('0x0'));var util=require(_0x466d('0x1'));var logger=require(_0x466d('0x2'))(_0x466d('0x3'));var moment=require('moment');var BPromise=require(_0x466d('0x4'));var rp=require(_0x466d('0x5'));var fs=require('fs');var path=require(_0x466d('0x6'));var rimraf=require(_0x466d('0x7'));var config=require(_0x466d('0x8'));var attributes=require(_0x466d('0x9'));module[_0x466d('0xa')]=function(_0x442ad5,_0x17b614){return _0x442ad5[_0x466d('0xb')](_0x466d('0xc'),attributes,{'tableName':_0x466d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6e81948..9f22cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','AnalyticTreeReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x3637ab,_0x1cd181){var _0x5581d8=function(_0x57bd23){while(--_0x57bd23){_0x3637ab['push'](_0x3637ab['shift']());}};_0x5581d8(++_0x1cd181);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1e6c9f,_0x5529c2){_0x1e6c9f=_0x1e6c9f-0x0;var _0x4ef527=_0x5f2f[_0x1e6c9f];return _0x4ef527;};'use strict';var _=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var moment=require(_0xf5f2('0x2'));var BPromise=require(_0xf5f2('0x3'));var rs=require(_0xf5f2('0x4'));var fs=require('fs');var Redis=require(_0xf5f2('0x5'));var db=require(_0xf5f2('0x6'))['db'];var utils=require(_0xf5f2('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0xf5f2('0x8'));var jayson=require(_0xf5f2('0x9'));var client=jayson[_0xf5f2('0xa')][_0xf5f2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3133bc,_0x473100,_0x5907aa){return new BPromise(function(_0x466882,_0x46cd9c){return client[_0xf5f2('0xc')](_0x3133bc,_0x5907aa)['then'](function(_0x375da4){logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,'request\x20sent');logger[_0xf5f2('0xf')]('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0x473100,'request\x20sent',JSON[_0xf5f2('0x10')](_0x375da4));if(_0x375da4[_0xf5f2('0x11')]){if(_0x375da4['error'][_0xf5f2('0x12')]===0x1f4){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x46cd9c(_0x375da4[_0xf5f2('0x11')]['message']);}logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0x375da4[_0xf5f2('0x11')][_0xf5f2('0x13')]);return _0x466882(_0x375da4[_0xf5f2('0x11')]['message']);}else{logger[_0xf5f2('0xd')](_0xf5f2('0xe'),_0x473100,_0xf5f2('0x14'));_0x466882(_0x375da4[_0xf5f2('0x15')][_0xf5f2('0x13')]);}})[_0xf5f2('0x16')](function(_0xdb61b3){logger[_0xf5f2('0x11')](_0xf5f2('0xe'),_0x473100,_0xdb61b3);_0x46cd9c(_0xdb61b3);});});}
\ No newline at end of file
+var _0xadb5=['error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x11dcf0,_0x4eb137){var _0x4f9831=function(_0x2d278e){while(--_0x2d278e){_0x11dcf0['push'](_0x11dcf0['shift']());}};_0x4f9831(++_0x4eb137);}(_0xadb5,0xad));var _0x5adb=function(_0x50434a,_0x12dc4c){_0x50434a=_0x50434a-0x0;var _0x4af5d6=_0xadb5[_0x50434a];return _0x4af5d6;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('AnalyticTreeReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}
\ No newline at end of file
index 4719a66..2ac6506 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65e9=['create','put','update','delete','destroy','multer','util','path','connect-timeout','express','../../config/environment','./analyticTreeReport.controller','index','get','/:id','isAuthenticated','post'];(function(_0x16a5f8,_0x1b0607){var _0x25943e=function(_0x5c5ae2){while(--_0x5c5ae2){_0x16a5f8['push'](_0x16a5f8['shift']());}};_0x25943e(++_0x1b0607);}(_0x65e9,0x137));var _0x965e=function(_0x2e4aa8,_0x38f60c){_0x2e4aa8=_0x2e4aa8-0x0;var _0x454e2c=_0x65e9[_0x2e4aa8];return _0x454e2c;};'use strict';var multer=require(_0x965e('0x0'));var util=require(_0x965e('0x1'));var path=require(_0x965e('0x2'));var timeout=require(_0x965e('0x3'));var express=require(_0x965e('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x965e('0x5'));var controller=require(_0x965e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x965e('0x7')]);router[_0x965e('0x8')](_0x965e('0x9'),auth[_0x965e('0xa')](),controller['show']);router[_0x965e('0xb')]('/',auth['isAuthenticated'](),controller[_0x965e('0xc')]);router[_0x965e('0xd')](_0x965e('0x9'),auth[_0x965e('0xa')](),controller[_0x965e('0xe')]);router[_0x965e('0xf')](_0x965e('0x9'),auth[_0x965e('0xa')](),controller[_0x965e('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xc51d=['exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','get','isAuthenticated','index','/:id','post','create','put','update','destroy'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xc51d,0x105));var _0xdc51=function(_0x4257b3,_0x40165a){_0x4257b3=_0x4257b3-0x0;var _0x584a7b=_0xc51d[_0x4257b3];return _0x584a7b;};'use strict';var multer=require(_0xdc51('0x0'));var util=require(_0xdc51('0x1'));var path=require(_0xdc51('0x2'));var timeout=require(_0xdc51('0x3'));var express=require(_0xdc51('0x4'));var router=express[_0xdc51('0x5')]();var fs_extra=require(_0xdc51('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xdc51('0x7'));var config=require(_0xdc51('0x8'));var controller=require(_0xdc51('0x9'));router[_0xdc51('0xa')]('/',auth[_0xdc51('0xb')](),controller[_0xdc51('0xc')]);router[_0xdc51('0xa')](_0xdc51('0xd'),auth[_0xdc51('0xb')](),controller['show']);router[_0xdc51('0xe')]('/',auth['isAuthenticated'](),controller[_0xdc51('0xf')]);router[_0xdc51('0x10')](_0xdc51('0xd'),auth['isAuthenticated'](),controller[_0xdc51('0x11')]);router['delete']('/:id',auth[_0xdc51('0xb')](),controller[_0xdc51('0x12')]);module[_0xdc51('0x13')]=router;
\ No newline at end of file
index ea7a7bb..3637658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e6=['sequelize','STRING'];(function(_0x4f7987,_0x3af1f3){var _0x1becb2=function(_0x541562){while(--_0x541562){_0x4f7987['push'](_0x4f7987['shift']());}};_0x1becb2(++_0x3af1f3);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x42020e,_0x4b92fb){_0x42020e=_0x42020e-0x0;var _0x561551=_0xb4e6[_0x42020e];return _0x561551;};'use strict';var Sequelize=require(_0x6b4e('0x0'));module['exports']={'name':{'type':Sequelize[_0x6b4e('0x1')]},'basename':{'type':Sequelize[_0x6b4e('0x1')]},'type':{'type':Sequelize[_0x6b4e('0x1')]}};
\ No newline at end of file
+var _0x6f7f=['STRING','exports'];(function(_0x2d4fee,_0xc38b94){var _0x265b33=function(_0x315350){while(--_0x315350){_0x2d4fee['push'](_0x2d4fee['shift']());}};_0x265b33(++_0xc38b94);}(_0x6f7f,0x177));var _0xf6f7=function(_0x34dda2,_0x43be2a){_0x34dda2=_0x34dda2-0x0;var _0x37a783=_0x6f7f[_0x34dda2];return _0x37a783;};'use strict';var Sequelize=require('sequelize');module[_0xf6f7('0x0')]={'name':{'type':Sequelize[_0xf6f7('0x1')]},'basename':{'type':Sequelize[_0xf6f7('0x1')]},'type':{'type':Sequelize[_0xf6f7('0x1')]}};
\ No newline at end of file
index 4af7b91..ec50bf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f37=['sort','where','pick','merge','VIRTUAL','filter','include','findAll','show','rawAttributes','keys','length','options','find','catch','clone','params','get','omit','createdAt','body','create','includeAll','destroy','file','originalname','basename','filename','mimetype','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','download','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','apply','save','update','then','error','stack','name','send','index','map','Attachment','fieldName','type','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order'];(function(_0x1f9fb5,_0x3e7ce8){var _0xac1c28=function(_0x4826b9){while(--_0x4826b9){_0x1f9fb5['push'](_0x1f9fb5['shift']());}};_0xac1c28(++_0x3e7ce8);}(_0x9f37,0x1d6));var _0x79f3=function(_0x9cd4c3,_0x1c9b2c){_0x9cd4c3=_0x9cd4c3-0x0;var _0x4c9025=_0x9f37[_0x9cd4c3];return _0x4c9025;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x79f3('0x0'));var jsonpatch=require(_0x79f3('0x1'));var rp=require(_0x79f3('0x2'));var moment=require(_0x79f3('0x3'));var BPromise=require(_0x79f3('0x4'));var Mustache=require(_0x79f3('0x5'));var util=require(_0x79f3('0x6'));var path=require(_0x79f3('0x7'));var sox=require(_0x79f3('0x8'));var csv=require('to-csv');var ejs=require(_0x79f3('0x9'));var fs=require('fs');var fs_extra=require(_0x79f3('0xa'));var _=require(_0x79f3('0xb'));var squel=require(_0x79f3('0xc'));var crypto=require(_0x79f3('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x79f3('0xe'));var toCsv=require(_0x79f3('0xf'));var querystring=require('querystring');var Papa=require(_0x79f3('0x10'));var Redis=require(_0x79f3('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x79f3('0x12'))(_0x79f3('0x13'));var utils=require(_0x79f3('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x79f3('0x15'))['db'];function respondWithStatusCode(_0x2245c4,_0x556cb9){_0x556cb9=_0x556cb9||0xcc;return function(_0x15220e){if(_0x15220e){return _0x2245c4[_0x79f3('0x16')](_0x556cb9);}return _0x2245c4[_0x79f3('0x17')](_0x556cb9)[_0x79f3('0x18')]();};}function respondWithResult(_0x55c005,_0x2492e3){_0x2492e3=_0x2492e3||0xc8;return function(_0x59f069){if(_0x59f069){return _0x55c005[_0x79f3('0x17')](_0x2492e3)[_0x79f3('0x19')](_0x59f069);}};}function respondWithFilteredResult(_0x5d08cc,_0x16db52){return function(_0x4dd72c){if(_0x4dd72c){var _0x58286a=typeof _0x16db52['offset']===_0x79f3('0x1a')&&typeof _0x16db52[_0x79f3('0x1b')]===_0x79f3('0x1a');var _0x43323a=_0x4dd72c['count'];var _0x5b082e=_0x58286a?0x0:_0x16db52['offset'];var _0x4dd41a=_0x58286a?_0x4dd72c[_0x79f3('0x1c')]:_0x16db52[_0x79f3('0x1d')]+_0x16db52[_0x79f3('0x1b')];var _0x13c22b;if(_0x4dd41a>=_0x43323a){_0x4dd41a=_0x43323a;_0x13c22b=0xc8;}else{_0x13c22b=0xce;}_0x5d08cc[_0x79f3('0x17')](_0x13c22b);return _0x5d08cc['set']('Content-Range',_0x5b082e+'-'+_0x4dd41a+'/'+_0x43323a)[_0x79f3('0x19')](_0x4dd72c);}return null;};}function patchUpdates(_0x175bdd){return function(_0x500090){try{jsonpatch[_0x79f3('0x1e')](_0x500090,_0x175bdd,!![]);}catch(_0xbc41a2){return BPromise['reject'](_0xbc41a2);}return _0x500090[_0x79f3('0x1f')]();};}function saveUpdates(_0x5c2dc5,_0x1a43aa){return function(_0x210998){if(_0x210998){return _0x210998[_0x79f3('0x20')](_0x5c2dc5)[_0x79f3('0x21')](function(_0x4098c9){return _0x4098c9;});}return null;};}function removeEntity(_0xfb71bf,_0x3be2ac){return function(_0x2c0723){if(_0x2c0723){return _0x2c0723['destroy']()['then'](function(){_0xfb71bf['status'](0xcc)[_0x79f3('0x18')]();});}};}function handleEntityNotFound(_0x54eb22,_0x40ddd8){return function(_0x263efe){if(!_0x263efe){_0x54eb22[_0x79f3('0x16')](0x194);}return _0x263efe;};}function handleError(_0x3cab8f,_0x38af41){_0x38af41=_0x38af41||0x1f4;return function(_0x2e757a){logger[_0x79f3('0x22')](_0x2e757a[_0x79f3('0x23')]);if(_0x2e757a[_0x79f3('0x24')]){delete _0x2e757a[_0x79f3('0x24')];}_0x3cab8f[_0x79f3('0x17')](_0x38af41)[_0x79f3('0x25')](_0x2e757a);};}exports[_0x79f3('0x26')]=function(_0x3cca3f,_0xf19594){var _0x44981d={},_0x123592={},_0x45922c={'count':0x0,'rows':[]};var _0x2065f4=_[_0x79f3('0x27')](db[_0x79f3('0x28')]['rawAttributes'],function(_0xd2de16){return{'name':_0xd2de16[_0x79f3('0x29')],'type':_0xd2de16[_0x79f3('0x2a')]['key']};});_0x123592[_0x79f3('0x2b')]=_['map'](_0x2065f4,_0x79f3('0x24'));_0x123592[_0x79f3('0x2c')]=_['keys'](_0x3cca3f['query']);_0x123592[_0x79f3('0x2d')]=_[_0x79f3('0x2e')](_0x123592[_0x79f3('0x2b')],_0x123592[_0x79f3('0x2c')]);_0x44981d[_0x79f3('0x2f')]=_[_0x79f3('0x2e')](_0x123592[_0x79f3('0x2b')],qs['fields'](_0x3cca3f[_0x79f3('0x2c')][_0x79f3('0x30')]));_0x44981d[_0x79f3('0x2f')]=_0x44981d[_0x79f3('0x2f')]['length']?_0x44981d[_0x79f3('0x2f')]:_0x123592['model'];if(!_0x3cca3f['query'][_0x79f3('0x31')](_0x79f3('0x32'))){_0x44981d[_0x79f3('0x1b')]=qs[_0x79f3('0x1b')](_0x3cca3f[_0x79f3('0x2c')]['limit']);_0x44981d['offset']=qs[_0x79f3('0x1d')](_0x3cca3f[_0x79f3('0x2c')][_0x79f3('0x1d')]);}_0x44981d[_0x79f3('0x33')]=qs[_0x79f3('0x34')](_0x3cca3f[_0x79f3('0x2c')]['sort']);_0x44981d[_0x79f3('0x35')]=qs[_0x79f3('0x2d')](_[_0x79f3('0x36')](_0x3cca3f[_0x79f3('0x2c')],_0x123592[_0x79f3('0x2d')]),_0x2065f4);if(_0x3cca3f[_0x79f3('0x2c')]['filter']){_0x44981d[_0x79f3('0x35')]=_[_0x79f3('0x37')](_0x44981d[_0x79f3('0x35')],{'$or':_[_0x79f3('0x27')](_0x2065f4,function(_0xb96e63){if(_0xb96e63[_0x79f3('0x2a')]!==_0x79f3('0x38')){var _0x56127c={};_0x56127c[_0xb96e63[_0x79f3('0x24')]]={'$like':'%'+_0x3cca3f[_0x79f3('0x2c')][_0x79f3('0x39')]+'%'};return _0x56127c;}})});}_0x44981d=_[_0x79f3('0x37')]({},_0x44981d,_0x3cca3f['options']);var _0x2cbb8c={'where':_0x44981d[_0x79f3('0x35')]};return db['Attachment'][_0x79f3('0x1c')](_0x2cbb8c)['then'](function(_0x37585b){_0x45922c[_0x79f3('0x1c')]=_0x37585b;if(_0x3cca3f[_0x79f3('0x2c')]['includeAll']){_0x44981d[_0x79f3('0x3a')]=[{'all':!![]}];}return db['Attachment'][_0x79f3('0x3b')](_0x44981d);})[_0x79f3('0x21')](function(_0x214fbc){_0x45922c['rows']=_0x214fbc;return _0x45922c;})[_0x79f3('0x21')](respondWithFilteredResult(_0xf19594,_0x44981d))['catch'](handleError(_0xf19594,null));};exports[_0x79f3('0x3c')]=function(_0x3303a4,_0x79ac2b){var _0x3cdd08={'raw':!![],'where':{'id':_0x3303a4['params']['id']}},_0x2e09dc={};_0x2e09dc[_0x79f3('0x2b')]=_['keys'](db[_0x79f3('0x28')][_0x79f3('0x3d')]);_0x2e09dc[_0x79f3('0x2c')]=_[_0x79f3('0x3e')](_0x3303a4[_0x79f3('0x2c')]);_0x2e09dc[_0x79f3('0x2d')]=_[_0x79f3('0x2e')](_0x2e09dc[_0x79f3('0x2b')],_0x2e09dc[_0x79f3('0x2c')]);_0x3cdd08[_0x79f3('0x2f')]=_[_0x79f3('0x2e')](_0x2e09dc[_0x79f3('0x2b')],qs[_0x79f3('0x30')](_0x3303a4[_0x79f3('0x2c')]['fields']));_0x3cdd08[_0x79f3('0x2f')]=_0x3cdd08[_0x79f3('0x2f')][_0x79f3('0x3f')]?_0x3cdd08[_0x79f3('0x2f')]:_0x2e09dc[_0x79f3('0x2b')];if(_0x3303a4[_0x79f3('0x2c')]['includeAll']){_0x3cdd08[_0x79f3('0x3a')]=[{'all':!![]}];}_0x3cdd08=_[_0x79f3('0x37')]({},_0x3cdd08,_0x3303a4[_0x79f3('0x40')]);return db['Attachment'][_0x79f3('0x41')](_0x3cdd08)[_0x79f3('0x21')](handleEntityNotFound(_0x79ac2b,null))[_0x79f3('0x21')](respondWithResult(_0x79ac2b,null))[_0x79f3('0x42')](handleError(_0x79ac2b,null));};exports[_0x79f3('0x43')]=function(_0x3f5005,_0x2ab16d){var _0x3b7ff4={'where':{'id':_0x3f5005[_0x79f3('0x44')]['id']}},_0x191979={};_0x191979['model']=_[_0x79f3('0x3e')](db['Attachment'][_0x79f3('0x3d')]);_0x3b7ff4[_0x79f3('0x2f')]=_[_0x79f3('0x2e')](_0x191979['model'],qs[_0x79f3('0x30')](_0x3f5005[_0x79f3('0x2c')][_0x79f3('0x30')]));_0x3b7ff4['attributes']=_0x3b7ff4['attributes'][_0x79f3('0x3f')]?_0x3b7ff4['attributes']:_0x191979['model'];if(_0x3f5005['query']['includeAll']){_0x3b7ff4[_0x79f3('0x3a')]=[{'all':!![]}];}_0x3b7ff4=_[_0x79f3('0x37')]({},_0x3b7ff4,_0x3f5005[_0x79f3('0x40')]);return db[_0x79f3('0x28')][_0x79f3('0x41')](_0x3b7ff4)['then'](handleEntityNotFound(_0x2ab16d,null))[_0x79f3('0x21')](function(_0x5ae46a){if(_0x5ae46a){var _0x397b80=_0x5ae46a[_0x79f3('0x45')]({'plain':!![]});_0x397b80=qs[_0x79f3('0x46')](_0x397b80,['id',_0x79f3('0x47'),'updatedAt']);_0x3f5005[_0x79f3('0x48')]=_['omit'](_0x3f5005['body'],['id','createdAt','updatedAt']);return db[_0x79f3('0x28')][_0x79f3('0x49')](_[_0x79f3('0x37')](_0x397b80,_0x3f5005['body']),{'include':_0x3f5005[_0x79f3('0x2c')][_0x79f3('0x4a')]?[{'all':!![]}]:undefined});}})[_0x79f3('0x21')](respondWithResult(_0x2ab16d,0xc9))['catch'](handleError(_0x2ab16d,null));};exports['update']=function(_0x152c9e,_0x48be9c){if(_0x152c9e[_0x79f3('0x48')]['id']){delete _0x152c9e[_0x79f3('0x48')]['id'];}return db['Attachment'][_0x79f3('0x41')]({'where':{'id':_0x152c9e[_0x79f3('0x44')]['id']}})[_0x79f3('0x21')](handleEntityNotFound(_0x48be9c,null))[_0x79f3('0x21')](saveUpdates(_0x152c9e[_0x79f3('0x48')],null))[_0x79f3('0x21')](respondWithResult(_0x48be9c,null))['catch'](handleError(_0x48be9c,null));};exports[_0x79f3('0x4b')]=function(_0x5d3b65,_0x395cde){return db[_0x79f3('0x28')]['find']({'where':{'id':_0x5d3b65[_0x79f3('0x44')]['id']}})['then'](handleEntityNotFound(_0x395cde,null))['then'](removeEntity(_0x395cde,null))[_0x79f3('0x42')](handleError(_0x395cde,null));};exports[_0x79f3('0x49')]=function(_0x293c89,_0x1639c7,_0x1292eb){_0x293c89['body']['name']=_0x293c89[_0x79f3('0x4c')][_0x79f3('0x4d')];_0x293c89[_0x79f3('0x48')][_0x79f3('0x4e')]=_0x293c89[_0x79f3('0x4c')][_0x79f3('0x4f')];_0x293c89['body']['type']=_0x293c89['file'][_0x79f3('0x50')];return db[_0x79f3('0x28')][_0x79f3('0x49')](_0x293c89[_0x79f3('0x48')])['then'](respondWithResult(_0x1639c7,0xc9))[_0x79f3('0x42')](handleError(_0x1639c7,null));};exports['download']=function(_0x574106,_0x123545,_0x647682){return db[_0x79f3('0x28')]['findOne']({'where':{'id':_0x574106['params']['id']},'raw':!![]})[_0x79f3('0x21')](handleEntityNotFound(_0x123545,null))[_0x79f3('0x21')](function(_0x17ca4c){if(_0x17ca4c){var _0x230073=_0x17ca4c[_0x79f3('0x51')]!==null;var _0xd220b7=path[_0x79f3('0x52')](config[_0x79f3('0x53')],_0x79f3('0x54'));if(_0x230073){_0xd220b7=path[_0x79f3('0x52')](_0xd220b7,_0x79f3('0x55'));}var _0x59b1eb=path[_0x79f3('0x52')](_0xd220b7,_0x17ca4c[_0x79f3('0x4e')]);return _0x123545[_0x79f3('0x56')](_0x59b1eb);}})[_0x79f3('0x42')](handleError(_0x123545,null));};
\ No newline at end of file
+var _0x7eb1=['model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','Attachment','findAll','rows','catch','show','params','length','options','find','clone','get','omit','createdAt','updatedAt','body','create','file','originalname','basename','mimetype','download','ChatOfflineMessageId','join','root','server/files/attachments/','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','status','end','json','limit','undefined','offset','count','apply','reject','save','then','destroy','error','stack','name','map','rawAttributes','fieldName','key'];(function(_0x596ff9,_0x11b25e){var _0x29a2b6=function(_0x2926b8){while(--_0x2926b8){_0x596ff9['push'](_0x596ff9['shift']());}};_0x29a2b6(++_0x11b25e);}(_0x7eb1,0x121));var _0x17eb=function(_0x47e92b,_0x29e3b5){_0x47e92b=_0x47e92b-0x0;var _0x2da694=_0x7eb1[_0x47e92b];return _0x2da694;};'use strict';var emlformat=require(_0x17eb('0x0'));var rimraf=require(_0x17eb('0x1'));var zipdir=require(_0x17eb('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x17eb('0x3'));var moment=require(_0x17eb('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x17eb('0x5'));var util=require(_0x17eb('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x17eb('0x7'));var ejs=require(_0x17eb('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x17eb('0x9'));var squel=require('squel');var crypto=require(_0x17eb('0xa'));var jsforce=require(_0x17eb('0xb'));var deskjs=require(_0x17eb('0xc'));var toCsv=require(_0x17eb('0x7'));var querystring=require('querystring');var Papa=require(_0x17eb('0xd'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x17eb('0xe'));var as=require(_0x17eb('0xf'));var hardwareService=require(_0x17eb('0x10'));var logger=require('../../config/logger')(_0x17eb('0x11'));var utils=require(_0x17eb('0x12'));var config=require(_0x17eb('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dbf54,_0x406cb3){_0x406cb3=_0x406cb3||0xcc;return function(_0xdc49d1){if(_0xdc49d1){return _0x5dbf54['sendStatus'](_0x406cb3);}return _0x5dbf54[_0x17eb('0x14')](_0x406cb3)[_0x17eb('0x15')]();};}function respondWithResult(_0x463a98,_0x2ba536){_0x2ba536=_0x2ba536||0xc8;return function(_0xccd5db){if(_0xccd5db){return _0x463a98['status'](_0x2ba536)[_0x17eb('0x16')](_0xccd5db);}};}function respondWithFilteredResult(_0x4432f5,_0x32d7b4){return function(_0x1f6651){if(_0x1f6651){var _0x3fb2f7=typeof _0x32d7b4['offset']==='undefined'&&typeof _0x32d7b4[_0x17eb('0x17')]===_0x17eb('0x18');var _0x567152=_0x1f6651['count'];var _0x2eef3b=_0x3fb2f7?0x0:_0x32d7b4[_0x17eb('0x19')];var _0x236373=_0x3fb2f7?_0x1f6651[_0x17eb('0x1a')]:_0x32d7b4[_0x17eb('0x19')]+_0x32d7b4[_0x17eb('0x17')];var _0x44855b;if(_0x236373>=_0x567152){_0x236373=_0x567152;_0x44855b=0xc8;}else{_0x44855b=0xce;}_0x4432f5[_0x17eb('0x14')](_0x44855b);return _0x4432f5['set']('Content-Range',_0x2eef3b+'-'+_0x236373+'/'+_0x567152)[_0x17eb('0x16')](_0x1f6651);}return null;};}function patchUpdates(_0xecc1dd){return function(_0x57a1f6){try{jsonpatch[_0x17eb('0x1b')](_0x57a1f6,_0xecc1dd,!![]);}catch(_0x53f9f9){return BPromise[_0x17eb('0x1c')](_0x53f9f9);}return _0x57a1f6[_0x17eb('0x1d')]();};}function saveUpdates(_0x50321c,_0x328ec4){return function(_0x5c1c28){if(_0x5c1c28){return _0x5c1c28['update'](_0x50321c)[_0x17eb('0x1e')](function(_0x46a157){return _0x46a157;});}return null;};}function removeEntity(_0xa53c8d,_0x28cf84){return function(_0x1fe542){if(_0x1fe542){return _0x1fe542[_0x17eb('0x1f')]()[_0x17eb('0x1e')](function(){_0xa53c8d[_0x17eb('0x14')](0xcc)[_0x17eb('0x15')]();});}};}function handleEntityNotFound(_0x19e09d,_0x22b616){return function(_0x18cda1){if(!_0x18cda1){_0x19e09d['sendStatus'](0x194);}return _0x18cda1;};}function handleError(_0x2cfcc0,_0x567987){_0x567987=_0x567987||0x1f4;return function(_0x25d20f){logger[_0x17eb('0x20')](_0x25d20f[_0x17eb('0x21')]);if(_0x25d20f[_0x17eb('0x22')]){delete _0x25d20f[_0x17eb('0x22')];}_0x2cfcc0[_0x17eb('0x14')](_0x567987)['send'](_0x25d20f);};}exports['index']=function(_0x14e672,_0x4d26f4){var _0x2a4723={},_0x25f2d9={},_0x100e2b={'count':0x0,'rows':[]};var _0x547c32=_[_0x17eb('0x23')](db['Attachment'][_0x17eb('0x24')],function(_0x55fcae){return{'name':_0x55fcae[_0x17eb('0x25')],'type':_0x55fcae['type'][_0x17eb('0x26')]};});_0x25f2d9[_0x17eb('0x27')]=_[_0x17eb('0x23')](_0x547c32,_0x17eb('0x22'));_0x25f2d9[_0x17eb('0x28')]=_[_0x17eb('0x29')](_0x14e672['query']);_0x25f2d9['filters']=_[_0x17eb('0x2a')](_0x25f2d9['model'],_0x25f2d9[_0x17eb('0x28')]);_0x2a4723[_0x17eb('0x2b')]=_[_0x17eb('0x2a')](_0x25f2d9[_0x17eb('0x27')],qs['fields'](_0x14e672['query'][_0x17eb('0x2c')]));_0x2a4723[_0x17eb('0x2b')]=_0x2a4723[_0x17eb('0x2b')]['length']?_0x2a4723[_0x17eb('0x2b')]:_0x25f2d9[_0x17eb('0x27')];if(!_0x14e672[_0x17eb('0x28')][_0x17eb('0x2d')](_0x17eb('0x2e'))){_0x2a4723[_0x17eb('0x17')]=qs['limit'](_0x14e672[_0x17eb('0x28')][_0x17eb('0x17')]);_0x2a4723[_0x17eb('0x19')]=qs[_0x17eb('0x19')](_0x14e672['query'][_0x17eb('0x19')]);}_0x2a4723[_0x17eb('0x2f')]=qs[_0x17eb('0x30')](_0x14e672[_0x17eb('0x28')][_0x17eb('0x30')]);_0x2a4723[_0x17eb('0x31')]=qs[_0x17eb('0x32')](_['pick'](_0x14e672[_0x17eb('0x28')],_0x25f2d9[_0x17eb('0x32')]),_0x547c32);if(_0x14e672['query'][_0x17eb('0x33')]){_0x2a4723[_0x17eb('0x31')]=_[_0x17eb('0x34')](_0x2a4723[_0x17eb('0x31')],{'$or':_['map'](_0x547c32,function(_0x1b736f){if(_0x1b736f[_0x17eb('0x35')]!==_0x17eb('0x36')){var _0x557420={};_0x557420[_0x1b736f[_0x17eb('0x22')]]={'$like':'%'+_0x14e672[_0x17eb('0x28')][_0x17eb('0x33')]+'%'};return _0x557420;}})});}_0x2a4723=_[_0x17eb('0x34')]({},_0x2a4723,_0x14e672['options']);var _0xf4c5c9={'where':_0x2a4723[_0x17eb('0x31')]};return db['Attachment'][_0x17eb('0x1a')](_0xf4c5c9)[_0x17eb('0x1e')](function(_0x36da09){_0x100e2b[_0x17eb('0x1a')]=_0x36da09;if(_0x14e672['query'][_0x17eb('0x37')]){_0x2a4723[_0x17eb('0x38')]=[{'all':!![]}];}return db[_0x17eb('0x39')][_0x17eb('0x3a')](_0x2a4723);})[_0x17eb('0x1e')](function(_0x17d5ef){_0x100e2b[_0x17eb('0x3b')]=_0x17d5ef;return _0x100e2b;})[_0x17eb('0x1e')](respondWithFilteredResult(_0x4d26f4,_0x2a4723))[_0x17eb('0x3c')](handleError(_0x4d26f4,null));};exports[_0x17eb('0x3d')]=function(_0x1a2c00,_0x517e13){var _0x5096c8={'raw':!![],'where':{'id':_0x1a2c00[_0x17eb('0x3e')]['id']}},_0x2f1850={};_0x2f1850['model']=_[_0x17eb('0x29')](db['Attachment'][_0x17eb('0x24')]);_0x2f1850['query']=_[_0x17eb('0x29')](_0x1a2c00[_0x17eb('0x28')]);_0x2f1850[_0x17eb('0x32')]=_[_0x17eb('0x2a')](_0x2f1850['model'],_0x2f1850[_0x17eb('0x28')]);_0x5096c8['attributes']=_[_0x17eb('0x2a')](_0x2f1850[_0x17eb('0x27')],qs[_0x17eb('0x2c')](_0x1a2c00['query']['fields']));_0x5096c8[_0x17eb('0x2b')]=_0x5096c8[_0x17eb('0x2b')][_0x17eb('0x3f')]?_0x5096c8[_0x17eb('0x2b')]:_0x2f1850[_0x17eb('0x27')];if(_0x1a2c00[_0x17eb('0x28')][_0x17eb('0x37')]){_0x5096c8[_0x17eb('0x38')]=[{'all':!![]}];}_0x5096c8=_[_0x17eb('0x34')]({},_0x5096c8,_0x1a2c00[_0x17eb('0x40')]);return db[_0x17eb('0x39')][_0x17eb('0x41')](_0x5096c8)[_0x17eb('0x1e')](handleEntityNotFound(_0x517e13,null))[_0x17eb('0x1e')](respondWithResult(_0x517e13,null))[_0x17eb('0x3c')](handleError(_0x517e13,null));};exports[_0x17eb('0x42')]=function(_0x296d90,_0xffe09a){var _0x348707={'where':{'id':_0x296d90[_0x17eb('0x3e')]['id']}},_0x1b86d6={};_0x1b86d6[_0x17eb('0x27')]=_[_0x17eb('0x29')](db[_0x17eb('0x39')][_0x17eb('0x24')]);_0x348707[_0x17eb('0x2b')]=_[_0x17eb('0x2a')](_0x1b86d6[_0x17eb('0x27')],qs['fields'](_0x296d90['query'][_0x17eb('0x2c')]));_0x348707[_0x17eb('0x2b')]=_0x348707[_0x17eb('0x2b')]['length']?_0x348707['attributes']:_0x1b86d6['model'];if(_0x296d90['query']['includeAll']){_0x348707[_0x17eb('0x38')]=[{'all':!![]}];}_0x348707=_[_0x17eb('0x34')]({},_0x348707,_0x296d90[_0x17eb('0x40')]);return db[_0x17eb('0x39')][_0x17eb('0x41')](_0x348707)[_0x17eb('0x1e')](handleEntityNotFound(_0xffe09a,null))[_0x17eb('0x1e')](function(_0x1344e6){if(_0x1344e6){var _0x40d518=_0x1344e6[_0x17eb('0x43')]({'plain':!![]});_0x40d518=qs[_0x17eb('0x44')](_0x40d518,['id',_0x17eb('0x45'),_0x17eb('0x46')]);_0x296d90[_0x17eb('0x47')]=_['omit'](_0x296d90[_0x17eb('0x47')],['id',_0x17eb('0x45'),_0x17eb('0x46')]);return db['Attachment'][_0x17eb('0x48')](_[_0x17eb('0x34')](_0x40d518,_0x296d90[_0x17eb('0x47')]),{'include':_0x296d90[_0x17eb('0x28')][_0x17eb('0x37')]?[{'all':!![]}]:undefined});}})[_0x17eb('0x1e')](respondWithResult(_0xffe09a,0xc9))[_0x17eb('0x3c')](handleError(_0xffe09a,null));};exports['update']=function(_0x2c8d34,_0x3e30be){if(_0x2c8d34['body']['id']){delete _0x2c8d34['body']['id'];}return db[_0x17eb('0x39')][_0x17eb('0x41')]({'where':{'id':_0x2c8d34[_0x17eb('0x3e')]['id']}})[_0x17eb('0x1e')](handleEntityNotFound(_0x3e30be,null))[_0x17eb('0x1e')](saveUpdates(_0x2c8d34[_0x17eb('0x47')],null))['then'](respondWithResult(_0x3e30be,null))[_0x17eb('0x3c')](handleError(_0x3e30be,null));};exports['destroy']=function(_0x518387,_0xa2664b){return db[_0x17eb('0x39')][_0x17eb('0x41')]({'where':{'id':_0x518387[_0x17eb('0x3e')]['id']}})['then'](handleEntityNotFound(_0xa2664b,null))[_0x17eb('0x1e')](removeEntity(_0xa2664b,null))[_0x17eb('0x3c')](handleError(_0xa2664b,null));};exports[_0x17eb('0x48')]=function(_0x490451,_0x5e4bae,_0x9d9a2f){_0x490451[_0x17eb('0x47')][_0x17eb('0x22')]=_0x490451[_0x17eb('0x49')][_0x17eb('0x4a')];_0x490451['body'][_0x17eb('0x4b')]=_0x490451[_0x17eb('0x49')]['filename'];_0x490451[_0x17eb('0x47')][_0x17eb('0x35')]=_0x490451['file'][_0x17eb('0x4c')];return db[_0x17eb('0x39')][_0x17eb('0x48')](_0x490451[_0x17eb('0x47')])[_0x17eb('0x1e')](respondWithResult(_0x5e4bae,0xc9))['catch'](handleError(_0x5e4bae,null));};exports[_0x17eb('0x4d')]=function(_0x356786,_0x48c4db,_0x10e943){return db[_0x17eb('0x39')]['findOne']({'where':{'id':_0x356786[_0x17eb('0x3e')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x48c4db,null))[_0x17eb('0x1e')](function(_0x23ab4f){if(_0x23ab4f){var _0x28ce39=_0x23ab4f[_0x17eb('0x4e')]!==null;var _0x246f7e=path[_0x17eb('0x4f')](config[_0x17eb('0x50')],_0x17eb('0x51'));if(_0x28ce39){_0x246f7e=path[_0x17eb('0x4f')](_0x246f7e,'offline-chat/');}var _0x5f9edc=path[_0x17eb('0x4f')](_0x246f7e,_0x23ab4f[_0x17eb('0x4b')]);return _0x48c4db[_0x17eb('0x4d')](_0x5f9edc);}})[_0x17eb('0x3c')](handleError(_0x48c4db,null));};
\ No newline at end of file
index c6f4a23..6fcb96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d7e=['./attachment.attributes','exports','define','Attachment','attachments','lodash','util','moment','bluebird','path','../../config/environment'];(function(_0x359103,_0x10f8a6){var _0x50f8cd=function(_0xc3c9e0){while(--_0xc3c9e0){_0x359103['push'](_0x359103['shift']());}};_0x50f8cd(++_0x10f8a6);}(_0x8d7e,0x186));var _0xe8d7=function(_0x5493fb,_0x2250cd){_0x5493fb=_0x5493fb-0x0;var _0x4ecef8=_0x8d7e[_0x5493fb];return _0x4ecef8;};'use strict';var _=require(_0xe8d7('0x0'));var util=require(_0xe8d7('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xe8d7('0x2'));var BPromise=require(_0xe8d7('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe8d7('0x4'));var rimraf=require('rimraf');var config=require(_0xe8d7('0x5'));var attributes=require(_0xe8d7('0x6'));module[_0xe8d7('0x7')]=function(_0x3085da,_0x1209c2){return _0x3085da[_0xe8d7('0x8')](_0xe8d7('0x9'),attributes,{'tableName':_0xe8d7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4cfe=['../../config/environment','exports','define','attachments','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x59c352,_0x1a3d99){var _0x24e1ac=function(_0x3e4931){while(--_0x3e4931){_0x59c352['push'](_0x59c352['shift']());}};_0x24e1ac(++_0x1a3d99);}(_0x4cfe,0x1dd));var _0xe4cf=function(_0x55f607,_0x12da07){_0x55f607=_0x55f607-0x0;var _0x5716ef=_0x4cfe[_0x55f607];return _0x5716ef;};'use strict';var _=require(_0xe4cf('0x0'));var util=require(_0xe4cf('0x1'));var logger=require(_0xe4cf('0x2'))(_0xe4cf('0x3'));var moment=require('moment');var BPromise=require(_0xe4cf('0x4'));var rp=require(_0xe4cf('0x5'));var fs=require('fs');var path=require(_0xe4cf('0x6'));var rimraf=require('rimraf');var config=require(_0xe4cf('0x7'));var attributes=require('./attachment.attributes');module[_0xe4cf('0x8')]=function(_0x1ee564,_0x3dd3f8){return _0x1ee564[_0xe4cf('0x9')]('Attachment',attributes,{'tableName':_0xe4cf('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05ff377..2671bfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f37=['lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','info','Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateAttachment','Attachment','create','raw','then'];(function(_0x35a761,_0x5f4d8a){var _0x356ea5=function(_0x349e92){while(--_0x349e92){_0x35a761['push'](_0x35a761['shift']());}};_0x356ea5(++_0x5f4d8a);}(_0x8f37,0x190));var _0x78f3=function(_0x2f8c90,_0x4f4e92){_0x2f8c90=_0x2f8c90-0x0;var _0x4ddd42=_0x8f37[_0x2f8c90];return _0x4ddd42;};'use strict';var _=require(_0x78f3('0x0'));var util=require(_0x78f3('0x1'));var moment=require(_0x78f3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x78f3('0x3'));var db=require(_0x78f3('0x4'))['db'];var utils=require(_0x78f3('0x5'));var logger=require('../../config/logger')(_0x78f3('0x6'));var config=require('../../config/environment');var jayson=require(_0x78f3('0x7'));var client=jayson['client'][_0x78f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3dc185,_0x492dc7,_0x58bd73){return new BPromise(function(_0x55e353,_0x35d861){return client[_0x78f3('0x9')](_0x3dc185,_0x58bd73)['then'](function(_0x20c081){logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));logger[_0x78f3('0xd')]('Attachment,\x20%s,\x20%s,\x20%s',_0x492dc7,_0x78f3('0xc'),JSON[_0x78f3('0xe')](_0x20c081));if(_0x20c081['error']){if(_0x20c081[_0x78f3('0xf')][_0x78f3('0x10')]===0x1f4){logger[_0x78f3('0xf')]('Attachment,\x20%s,\x20%s',_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x35d861(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);return _0x55e353(_0x20c081[_0x78f3('0xf')][_0x78f3('0x11')]);}else{logger[_0x78f3('0xa')](_0x78f3('0xb'),_0x492dc7,_0x78f3('0xc'));_0x55e353(_0x20c081[_0x78f3('0x12')][_0x78f3('0x11')]);}})[_0x78f3('0x13')](function(_0x39adfc){logger[_0x78f3('0xf')](_0x78f3('0xb'),_0x492dc7,_0x39adfc);_0x35d861(_0x39adfc);});});}exports[_0x78f3('0x14')]=function(_0x3c76d2){var _0x1c25f2=this;return new Promise(function(_0x225176,_0x4a5db4){return db[_0x78f3('0x15')][_0x78f3('0x16')](_0x3c76d2['body'],{'raw':_0x3c76d2['options']?_0x3c76d2['options'][_0x78f3('0x17')]===undefined?!![]:![]:!![]})[_0x78f3('0x18')](function(_0x31621a){logger[_0x78f3('0xa')](_0x78f3('0x14'),_0x3c76d2);logger['debug'](_0x78f3('0x14'),_0x3c76d2,JSON[_0x78f3('0xe')](_0x31621a));_0x225176(_0x31621a);})[_0x78f3('0x13')](function(_0x3f623f){logger[_0x78f3('0xf')](_0x78f3('0x14'),_0x3f623f[_0x78f3('0x11')],_0x3c76d2);_0x4a5db4(_0x1c25f2[_0x78f3('0xf')](0x1f4,_0x3f623f[_0x78f3('0x11')]));});});};
\ No newline at end of file
+var _0x0f9f=['debug','stringify','error','code','message','info','result','catch','body','options','raw','CreateAttachment','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','Attachment,\x20%s,\x20%s','request\x20sent'];(function(_0x39947f,_0x5787a6){var _0x415d92=function(_0x148fcd){while(--_0x148fcd){_0x39947f['push'](_0x39947f['shift']());}};_0x415d92(++_0x5787a6);}(_0x0f9f,0x1cc));var _0xf0f9=function(_0x56b3a3,_0x77b2d){_0x56b3a3=_0x56b3a3-0x0;var _0x5315cf=_0x0f9f[_0x56b3a3];return _0x5315cf;};'use strict';var _=require('lodash');var util=require(_0xf0f9('0x0'));var moment=require(_0xf0f9('0x1'));var BPromise=require(_0xf0f9('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf0f9('0x3'));var db=require(_0xf0f9('0x4'))['db'];var utils=require(_0xf0f9('0x5'));var logger=require(_0xf0f9('0x6'))(_0xf0f9('0x7'));var config=require(_0xf0f9('0x8'));var jayson=require(_0xf0f9('0x9'));var client=jayson[_0xf0f9('0xa')][_0xf0f9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x45694e,_0x51a0ed,_0x448cf5){return new BPromise(function(_0x294b42,_0x5d1753){return client[_0xf0f9('0xc')](_0x45694e,_0x448cf5)[_0xf0f9('0xd')](function(_0x2d72c9){logger['info'](_0xf0f9('0xe'),_0x51a0ed,_0xf0f9('0xf'));logger[_0xf0f9('0x10')]('Attachment,\x20%s,\x20%s,\x20%s',_0x51a0ed,'request\x20sent',JSON[_0xf0f9('0x11')](_0x2d72c9));if(_0x2d72c9[_0xf0f9('0x12')]){if(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x13')]===0x1f4){logger[_0xf0f9('0x12')](_0xf0f9('0xe'),_0x51a0ed,_0x2d72c9[_0xf0f9('0x12')]['message']);return _0x5d1753(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x14')]);}logger[_0xf0f9('0x12')](_0xf0f9('0xe'),_0x51a0ed,_0x2d72c9[_0xf0f9('0x12')]['message']);return _0x294b42(_0x2d72c9[_0xf0f9('0x12')][_0xf0f9('0x14')]);}else{logger[_0xf0f9('0x15')](_0xf0f9('0xe'),_0x51a0ed,_0xf0f9('0xf'));_0x294b42(_0x2d72c9[_0xf0f9('0x16')][_0xf0f9('0x14')]);}})[_0xf0f9('0x17')](function(_0x677b32){logger[_0xf0f9('0x12')]('Attachment,\x20%s,\x20%s',_0x51a0ed,_0x677b32);_0x5d1753(_0x677b32);});});}exports['CreateAttachment']=function(_0x350a48){var _0x3227cf=this;return new Promise(function(_0x4c4e17,_0x178e16){return db['Attachment']['create'](_0x350a48[_0xf0f9('0x18')],{'raw':_0x350a48[_0xf0f9('0x19')]?_0x350a48[_0xf0f9('0x19')][_0xf0f9('0x1a')]===undefined?!![]:![]:!![]})[_0xf0f9('0xd')](function(_0x4ed9ff){logger['info']('CreateAttachment',_0x350a48);logger[_0xf0f9('0x10')](_0xf0f9('0x1b'),_0x350a48,JSON[_0xf0f9('0x11')](_0x4ed9ff));_0x4c4e17(_0x4ed9ff);})['catch'](function(_0x4a8726){logger[_0xf0f9('0x12')]('CreateAttachment',_0x4a8726[_0xf0f9('0x14')],_0x350a48);_0x178e16(_0x3227cf[_0xf0f9('0x12')](0x1f4,_0x4a8726[_0xf0f9('0x14')]));});});};
\ No newline at end of file
index 9f6cbe4..9e304c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['show','/:id/download','download','post','/:id/clone','clone','root','server/files/attachments/','format','now','originalname','replace','single','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./attachment.controller','get','isAuthenticated','index','/:id'];(function(_0x2014d9,_0x2a2fab){var _0x13687c=function(_0x29357e){while(--_0x29357e){_0x2014d9['push'](_0x2014d9['shift']());}};_0x13687c(++_0x2a2fab);}(_0x5f2f,0x73));var _0xf5f2=function(_0x49e354,_0x46886b){_0x49e354=_0x49e354-0x0;var _0x29665a=_0x5f2f[_0x49e354];return _0x29665a;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')](_0xf5f2('0x11'),auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x53fb33,_0xa7e1a6,_0x151aba){_0x151aba(null,path['join'](config[_0xf5f2('0x13')],_0xf5f2('0x14')));},'filename':function(_0x331482,_0x3f2997,_0x59bb6c){_0x59bb6c(null,util[_0xf5f2('0x15')]('%s-%s',Date[_0xf5f2('0x16')](),_0x3f2997[_0xf5f2('0x17')][_0xf5f2('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf5f2('0x10')]('/',upload[_0xf5f2('0x19')]('file'),controller[_0xf5f2('0x1a')]);router[_0xf5f2('0x1b')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1c')]);router[_0xf5f2('0x1d')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1e')]);module[_0xf5f2('0x1f')]=router;
\ No newline at end of file
+var _0x757a=['put','/:id','update','delete','destroy','exports','util','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./attachment.controller','get','index','isAuthenticated','show','/:id/download','post','/:id/clone','clone','diskStorage','%s-%s','replace','single','file','create'];(function(_0x3f54f7,_0x1aedb8){var _0x332d81=function(_0x5f25c1){while(--_0x5f25c1){_0x3f54f7['push'](_0x3f54f7['shift']());}};_0x332d81(++_0x1aedb8);}(_0x757a,0xde));var _0xa757=function(_0x1da071,_0x172e92){_0x1da071=_0x1da071-0x0;var _0x471de3=_0x757a[_0x1da071];return _0x471de3;};'use strict';var multer=require('multer');var util=require(_0xa757('0x0'));var path=require(_0xa757('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xa757('0x2'));var auth=require(_0xa757('0x3'));var interaction=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var controller=require(_0xa757('0x6'));router[_0xa757('0x7')]('/',auth['isAuthenticated'](),controller[_0xa757('0x8')]);router[_0xa757('0x7')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0xa')]);router[_0xa757('0x7')](_0xa757('0xb'),auth[_0xa757('0x9')](),controller['download']);router[_0xa757('0xc')](_0xa757('0xd'),auth[_0xa757('0x9')](),controller[_0xa757('0xe')]);var upload=multer({'storage':multer[_0xa757('0xf')]({'destination':function(_0x188ad5,_0x17408b,_0x483d77){_0x483d77(null,path['join'](config['root'],'server/files/attachments/'));},'filename':function(_0x4db68e,_0x421040,_0x544b45){_0x544b45(null,util['format'](_0xa757('0x10'),Date['now'](),_0x421040['originalname'][_0xa757('0x11')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa757('0xc')]('/',upload[_0xa757('0x12')](_0xa757('0x13')),controller[_0xa757('0x14')]);router[_0xa757('0x15')](_0xa757('0x16'),auth[_0xa757('0x9')](),controller[_0xa757('0x17')]);router[_0xa757('0x18')]('/:id',auth[_0xa757('0x9')](),controller[_0xa757('0x19')]);module[_0xa757('0x1a')]=router;
\ No newline at end of file
index 04b98c4..a5c379b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9f0=['role','disabled','blocked','blockedAt','admin','user','name','add','minutes','getLicense','catch','status','send','message','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','use','ad-login','passport-local','Strategy','bluebird','util','../../components/auth/service','../../config/utils','../../config/environment','../../config/logger','api','activedirectory','undefined','baseDN','domain','authenticate','error','Error\x20authenticate\x20%s:\x20%s','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','adSsoEnabled','blockDuration','then','findOne','password'];(function(_0x161f73,_0x23eb4f){var _0x5a6e00=function(_0x46465b){while(--_0x46465b){_0x161f73['push'](_0x161f73['shift']());}};_0x5a6e00(++_0x23eb4f);}(_0xf9f0,0xeb));var _0x0f9f=function(_0x3476f8,_0x20b980){_0x3476f8=_0x3476f8-0x0;var _0x429efd=_0xf9f0[_0x3476f8];return _0x429efd;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x0f9f('0x0'))[_0x0f9f('0x1')];var moment=require('moment');var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x0f9f('0x2'));var util=require(_0x0f9f('0x3'));var db=require('../../mysqldb')['db'];var authService=require(_0x0f9f('0x4'));var utils=require(_0x0f9f('0x5'));var config=require(_0x0f9f('0x6'));var logger=require(_0x0f9f('0x7'))(_0x0f9f('0x8'));function isActiveDirectoryConfigured(_0x1f1336){var _0x1e6917=![];if(typeof _0x1f1336[_0x0f9f('0x9')]!==_0x0f9f('0xa')){_0x1e6917=_0x1f1336[_0x0f9f('0x9')][_0x0f9f('0xb')]&&_0x1f1336[_0x0f9f('0x9')]['url']&&_0x1f1336[_0x0f9f('0x9')][_0x0f9f('0xc')];}return _0x1e6917;}function adAuthenticate(_0x28b701,_0x3e93a1,_0x3bbfd5){return new BPromise(function(_0x494ebb,_0xcaff2d){try{var _0x855342=new ActiveDirectory(_0x28b701);_0x855342[_0x0f9f('0xd')](_0x3e93a1,_0x3bbfd5,function(_0x3c6b3e,_0x5c3ac5){if(_0x3c6b3e){logger[_0x0f9f('0xe')](_0x0f9f('0xf'),_0x3e93a1,util['inspect'](_0x3c6b3e,{'showHidden':![],'depth':null}));_0xcaff2d('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else if(!_0x5c3ac5){logger['error'](_0x0f9f('0x10'),_0x3e93a1);_0xcaff2d(_0x0f9f('0x11'));}else{_0x494ebb(_0x5c3ac5);}});}catch(_0x58ae04){_0xcaff2d(_0x58ae04);}});}function ActiveDirectoryAuthenticate(_0xb8376,_0x29b8eb,_0x207b8f,_0x125b2c){var _0x839d14,_0x950976;if(!isActiveDirectoryConfigured(config)){logger[_0x0f9f('0xe')]('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured',_0x29b8eb);return _0x125b2c(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0x0f9f('0x12'),_0x0f9f('0x13')],'raw':!![]})[_0x0f9f('0x14')](function(_0xae4110){_0x839d14=_0xae4110;if(!_0x839d14[_0x0f9f('0x12')]){logger['error']('Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled',_0x29b8eb);throw new Error(_0x0f9f('0x11'));}return _0xb8376[_0x0f9f('0x15')]({'attributes':['id','name',_0x0f9f('0x16'),'salt',_0x0f9f('0x17'),_0x0f9f('0x18'),_0x0f9f('0x19'),_0x0f9f('0x1a'),'online'],'where':{'name':_0x29b8eb,'role':{'$or':[_0x0f9f('0x1b'),_0x0f9f('0x1c'),'agent']},'adSsoEnabled':!![]}});})[_0x0f9f('0x14')](function(_0x266d14){if(!_0x266d14||_0x266d14&&_0x266d14[_0x0f9f('0x1d')]!==_0x29b8eb){throw new Error(_0x0f9f('0x11'));}_0x950976=_0x266d14;var _0x17c032=_0x950976[_0x0f9f('0x1d')]+'@'+config['activedirectory'][_0x0f9f('0xc')];return adAuthenticate(config[_0x0f9f('0x9')],_0x17c032,_0x207b8f);})['then'](function(_0x153275){if(_0x950976[_0x0f9f('0x18')]){throw new Error(_0x0f9f('0x11'));}if(_0x839d14['blockDuration']>0x0){if(_0x950976['blocked']){if(moment(_0x950976[_0x0f9f('0x1a')])[_0x0f9f('0x1e')](_0x839d14['blockDuration'],_0x0f9f('0x1f'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils['clearBlockUser'](_0x950976,0x0,![],null)[_0x0f9f('0x14')](function(){return utils[_0x0f9f('0x20')](_0x950976);})[_0x0f9f('0x14')](function(){return _0x125b2c(null,_0x950976);});}else{return utils[_0x0f9f('0x20')](_0x950976)[_0x0f9f('0x14')](function(){return _0x125b2c(null,_0x950976);});}}else{return utils['getLicense'](_0x950976)[_0x0f9f('0x14')](function(){return _0x125b2c(null,_0x950976);});}})[_0x0f9f('0x21')](function(_0x5576f3){return _0x125b2c(null,![],_0x5576f3);});}function handleError(_0x4ac7da,_0x25186c,_0x554d9a){return _0x4ac7da[_0x0f9f('0x22')](_0x25186c||0x1f4)[_0x0f9f('0x23')]({'message':_0x554d9a?_0x554d9a[_0x0f9f('0x24')]||_0x554d9a:''});}exports[_0x0f9f('0x25')]=function(_0x168d76,_0xb5d14f,_0x523eb2){passport['authenticate']('ad-login',function(_0x57a08a,_0x51470c,_0x58c25f){var _0x30bd67=_0x57a08a||_0x58c25f;if(_0x30bd67){return handleError(_0xb5d14f,0x191,_0x30bd67);}if(!_0x51470c){return handleError(_0xb5d14f,0x194,{'message':_0x0f9f('0x26')});}else{var _0x5d58ac={'payload':{'id':_0x51470c['id'],'role':_0x51470c[_0x0f9f('0x17')]},'options':{'expiresIn':0x15180}};return authService[_0x0f9f('0x27')](_0x5d58ac)['then'](function(_0x56e071){_0xb5d14f[_0x0f9f('0x28')]({'id':_0x51470c['id'],'token':_0x56e071,'statusCall':'','isAlreadyLogged':_0x51470c['online']});});}})(_0x168d76,_0xb5d14f,_0x523eb2);};passport[_0x0f9f('0x29')](_0x0f9f('0x2a'),new LocalStrategy({'usernameField':_0x0f9f('0x1d'),'passwordField':_0x0f9f('0x16')},function(_0x4d78b4,_0x1f98a9,_0x5a4758){return ActiveDirectoryAuthenticate(db['User'],_0x4d78b4,_0x1f98a9,_0x5a4758);}));
\ No newline at end of file
+var _0xad1c=['message','Something\x20went\x20wrong,\x20please\x20try\x20again.','signToken','json','online','use','passport-local','activedirectory2','bluebird','util','../../mysqldb','../../components/auth/service','../../config/utils','../../config/logger','activedirectory','baseDN','url','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','error','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','findOne','adSsoEnabled','blockDuration','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','password','salt','role','disabled','blocked','blockedAt','user','agent','add','minutes','clearBlockUser','getLicense','catch','send'];(function(_0x304730,_0x483b78){var _0xe27bbf=function(_0xec4003){while(--_0xec4003){_0x304730['push'](_0x304730['shift']());}};_0xe27bbf(++_0x483b78);}(_0xad1c,0x1c8));var _0xcad1=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xad1c[_0x55e08b];return _0xd1a7ff;};'use strict';var passport=require('passport');var LocalStrategy=require(_0xcad1('0x0'))['Strategy'];var moment=require('moment');var ActiveDirectory=require(_0xcad1('0x1'));var BPromise=require(_0xcad1('0x2'));var util=require(_0xcad1('0x3'));var db=require(_0xcad1('0x4'))['db'];var authService=require(_0xcad1('0x5'));var utils=require(_0xcad1('0x6'));var config=require('../../config/environment');var logger=require(_0xcad1('0x7'))('api');function isActiveDirectoryConfigured(_0x513989){var _0x57dafe=![];if(typeof _0x513989[_0xcad1('0x8')]!=='undefined'){_0x57dafe=_0x513989[_0xcad1('0x8')][_0xcad1('0x9')]&&_0x513989['activedirectory'][_0xcad1('0xa')]&&_0x513989['activedirectory'][_0xcad1('0xb')];}return _0x57dafe;}function adAuthenticate(_0x34014b,_0x45fbbb,_0x36fb5b){return new BPromise(function(_0x20c65a,_0x5a0b98){try{var _0x517b0c=new ActiveDirectory(_0x34014b);_0x517b0c[_0xcad1('0xc')](_0x45fbbb,_0x36fb5b,function(_0x49f995,_0x57549d){if(_0x49f995){logger['error'](_0xcad1('0xd'),_0x45fbbb,util['inspect'](_0x49f995,{'showHidden':![],'depth':null}));_0x5a0b98(_0xcad1('0xe'));}else if(!_0x57549d){logger['error'](_0xcad1('0xf'),_0x45fbbb);_0x5a0b98(_0xcad1('0xe'));}else{_0x20c65a(_0x57549d);}});}catch(_0x44a5cb){_0x5a0b98(_0x44a5cb);}});}function ActiveDirectoryAuthenticate(_0x504f97,_0x32c10a,_0x55517f,_0x4c037b){var _0x32b4fd,_0x3545f4;if(!isActiveDirectoryConfigured(config)){logger[_0xcad1('0x10')](_0xcad1('0x11'),_0x32c10a);return _0x4c037b(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}return db[_0xcad1('0x12')][_0xcad1('0x13')]({'where':{'id':0x1},'attributes':[_0xcad1('0x14'),_0xcad1('0x15')],'raw':!![]})[_0xcad1('0x16')](function(_0x321808){_0x32b4fd=_0x321808;if(!_0x32b4fd[_0xcad1('0x14')]){logger['error'](_0xcad1('0x17'),_0x32c10a);throw new Error(_0xcad1('0xe'));}return _0x504f97[_0xcad1('0x13')]({'attributes':['id',_0xcad1('0x18'),_0xcad1('0x19'),_0xcad1('0x1a'),_0xcad1('0x1b'),_0xcad1('0x1c'),_0xcad1('0x1d'),_0xcad1('0x1e'),'online'],'where':{'name':_0x32c10a,'role':{'$or':['admin',_0xcad1('0x1f'),_0xcad1('0x20')]},'adSsoEnabled':!![]}});})['then'](function(_0x2193e1){if(!_0x2193e1||_0x2193e1&&_0x2193e1[_0xcad1('0x18')]!==_0x32c10a){throw new Error(_0xcad1('0xe'));}_0x3545f4=_0x2193e1;var _0x225a1c=_0x3545f4[_0xcad1('0x18')]+'@'+config[_0xcad1('0x8')]['domain'];return adAuthenticate(config[_0xcad1('0x8')],_0x225a1c,_0x55517f);})[_0xcad1('0x16')](function(_0x1d5e73){if(_0x3545f4[_0xcad1('0x1c')]){throw new Error(_0xcad1('0xe'));}if(_0x32b4fd[_0xcad1('0x15')]>0x0){if(_0x3545f4[_0xcad1('0x1d')]){if(moment(_0x3545f4['blockedAt'])[_0xcad1('0x21')](_0x32b4fd['blockDuration'],_0xcad1('0x22'))>moment()){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}return utils[_0xcad1('0x23')](_0x3545f4,0x0,![],null)[_0xcad1('0x16')](function(){return utils['getLicense'](_0x3545f4);})[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}else{return utils[_0xcad1('0x24')](_0x3545f4)[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}}else{return utils[_0xcad1('0x24')](_0x3545f4)[_0xcad1('0x16')](function(){return _0x4c037b(null,_0x3545f4);});}})[_0xcad1('0x25')](function(_0x42b205){return _0x4c037b(null,![],_0x42b205);});}function handleError(_0x28652e,_0x2a13d,_0x4da92e){return _0x28652e['status'](_0x2a13d||0x1f4)[_0xcad1('0x26')]({'message':_0x4da92e?_0x4da92e[_0xcad1('0x27')]||_0x4da92e:''});}exports['login']=function(_0x3bc7a0,_0x3b921d,_0x40491f){passport[_0xcad1('0xc')]('ad-login',function(_0x4a7d91,_0x3b1486,_0x2a48a8){var _0x51ee31=_0x4a7d91||_0x2a48a8;if(_0x51ee31){return handleError(_0x3b921d,0x191,_0x51ee31);}if(!_0x3b1486){return handleError(_0x3b921d,0x194,{'message':_0xcad1('0x28')});}else{var _0x1a5ca3={'payload':{'id':_0x3b1486['id'],'role':_0x3b1486['role']},'options':{'expiresIn':0x15180}};return authService[_0xcad1('0x29')](_0x1a5ca3)[_0xcad1('0x16')](function(_0x2b87ac){_0x3b921d[_0xcad1('0x2a')]({'id':_0x3b1486['id'],'token':_0x2b87ac,'statusCall':'','isAlreadyLogged':_0x3b1486[_0xcad1('0x2b')]});});}})(_0x3bc7a0,_0x3b921d,_0x40491f);};passport[_0xcad1('0x2c')]('ad-login',new LocalStrategy({'usernameField':_0xcad1('0x18'),'passwordField':_0xcad1('0x19')},function(_0x19a905,_0x37af19,_0x220f7c){return ActiveDirectoryAuthenticate(db['User'],_0x19a905,_0x37af19,_0x220f7c);}));
\ No newline at end of file
index 3bbcb26..c3c8252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9161=['express','./authActiveDirectory.controller','post','login'];(function(_0x5236d5,_0x63192b){var _0x33208e=function(_0x3c9bd9){while(--_0x3c9bd9){_0x5236d5['push'](_0x5236d5['shift']());}};_0x33208e(++_0x63192b);}(_0x9161,0x11c));var _0x1916=function(_0x5acac0,_0x52f4ce){_0x5acac0=_0x5acac0-0x0;var _0x3e29fb=_0x9161[_0x5acac0];return _0x3e29fb;};'use strict';var express=require(_0x1916('0x0'));var router=express['Router']();var controller=require(_0x1916('0x1'));router[_0x1916('0x2')]('/',controller[_0x1916('0x3')]);module['exports']=router;
\ No newline at end of file
+var _0x0930=['./authActiveDirectory.controller','post','exports','express','Router'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0930,0x1ed));var _0x0093=function(_0x52c553,_0x273e5a){_0x52c553=_0x52c553-0x0;var _0x425607=_0x0930[_0x52c553];return _0x425607;};'use strict';var express=require(_0x0093('0x0'));var router=express[_0x0093('0x1')]();var controller=require(_0x0093('0x2'));router[_0x0093('0x3')]('/',controller['login']);module[_0x0093('0x4')]=router;
\ No newline at end of file
index 5242b68..2db958a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x5864f3,_0x1f5a94){var _0x2feb81=function(_0x115967){while(--_0x115967){_0x5864f3['push'](_0x5864f3['shift']());}};_0x2feb81(++_0x1f5a94);}(_0x9957,0x93));var _0x7995=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x9957[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
+var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x5949d0,_0x34a473){var _0x4d1c7f=function(_0x2b71d2){while(--_0x2b71d2){_0x5949d0['push'](_0x5949d0['shift']());}};_0x4d1c7f(++_0x34a473);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index 47c00f6..aca7c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4534=['exports','express','passport','Router','./authGoogle.controller','../../components/auth/service','get','login','isMiddleware','setTokenCookie'];(function(_0x247ef7,_0x2aab81){var _0x12d326=function(_0x2d0ce2){while(--_0x2d0ce2){_0x247ef7['push'](_0x247ef7['shift']());}};_0x12d326(++_0x2aab81);}(_0x4534,0x141));var _0x4453=function(_0x505d12,_0x4a5d2b){_0x505d12=_0x505d12-0x0;var _0x56793b=_0x4534[_0x505d12];return _0x56793b;};'use strict';var express=require(_0x4453('0x0'));var passport=require(_0x4453('0x1'));var router=express[_0x4453('0x2')]();var controller=require(_0x4453('0x3'));var userController=require('../user/user.controller.js');var authService=require(_0x4453('0x4'));router[_0x4453('0x5')]('/',controller[_0x4453('0x6')]);router[_0x4453('0x5')]('/callback',controller['callback'],authService[_0x4453('0x7')],userController[_0x4453('0x6')],authService[_0x4453('0x8')]);module[_0x4453('0x9')]=router;
\ No newline at end of file
+var _0x85f8=['express','passport','Router','../user/user.controller.js','login','get','/callback','setTokenCookie'];(function(_0x5e1547,_0x3c8c01){var _0x5076b2=function(_0x3b30bd){while(--_0x3b30bd){_0x5e1547['push'](_0x5e1547['shift']());}};_0x5076b2(++_0x3c8c01);}(_0x85f8,0x118));var _0x885f=function(_0x439c28,_0x274bad){_0x439c28=_0x439c28-0x0;var _0x4d23dd=_0x85f8[_0x439c28];return _0x4d23dd;};'use strict';var express=require(_0x885f('0x0'));var passport=require(_0x885f('0x1'));var router=express[_0x885f('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0x885f('0x3'));var authService=require('../../components/auth/service');router['get']('/',controller[_0x885f('0x4')]);router[_0x885f('0x5')](_0x885f('0x6'),controller['callback'],authService['isMiddleware'],userController['login'],authService[_0x885f('0x7')]);module['exports']=router;
\ No newline at end of file
index 993d54a..837a753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe072=['allowedLoginAttempts','blockDuration','then','name','salt','role','disabled','blocked','blockedAt','loginAttempts','admin','user','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','authenticate','add','clearBlockUser','minutes','getLicense','catch','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','message','stringify','error','status','send','local-login','signToken','json','online','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','User','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a','https://','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordHistory','password','Password\x20reset!','use','util','passport','passport-local','jayson/promise','../../config/utils','client','http','Setting','findOne'];(function(_0x2aac37,_0x8bbcf6){var _0x27ac09=function(_0x16bb57){while(--_0x16bb57){_0x2aac37['push'](_0x2aac37['shift']());}};_0x27ac09(++_0x8bbcf6);}(_0xe072,0x173));var _0x2e07=function(_0x574b49,_0x549855){_0x574b49=_0x574b49-0x0;var _0x5cfe5c=_0xe072[_0x574b49];return _0x5cfe5c;};'use strict';var util=require(_0x2e07('0x0'));var passport=require(_0x2e07('0x1'));var LocalStrategy=require(_0x2e07('0x2'))['Strategy'];var jayson=require(_0x2e07('0x3'));var _=require('lodash');var rs=require('randomstring');var moment=require('moment');var db=require('../../mysqldb')['db'];var authService=require('../../components/auth/service');var utils=require(_0x2e07('0x4'));var client=jayson[_0x2e07('0x5')][_0x2e07('0x6')]({'port':0x232b});function localAuthenticate(_0x13bb23,_0x3160d9,_0x20ff0b,_0x391068){var _0x40c4f2,_0xfd0b63;return db[_0x2e07('0x7')][_0x2e07('0x8')]({'where':{'id':0x1},'attributes':[_0x2e07('0x9'),_0x2e07('0xa')],'raw':!![]})[_0x2e07('0xb')](function(_0x5bb739){_0x40c4f2=_0x5bb739;return _0x13bb23['findOne']({'attributes':['id',_0x2e07('0xc'),'password',_0x2e07('0xd'),_0x2e07('0xe'),_0x2e07('0xf'),_0x2e07('0x10'),_0x2e07('0x11'),_0x2e07('0x12')],'where':{'name':_0x3160d9,'role':{'$or':[_0x2e07('0x13'),_0x2e07('0x14'),'agent']}}});})[_0x2e07('0xb')](function(_0x14ac64){if(!_0x14ac64||_0x14ac64&&_0x14ac64[_0x2e07('0xc')]!==_0x3160d9){throw new Error(_0x2e07('0x15'));}else{_0xfd0b63=_0x14ac64;return _0xfd0b63;}})[_0x2e07('0xb')](function(){_0xfd0b63[_0x2e07('0x16')](_0x20ff0b,function(_0xe62a6,_0x5abcaf){var _0x40f268=_0xfd0b63[_0x2e07('0x12')]+0x1;if(_0xe62a6){return _0x391068(_0xe62a6);}else if(!_0x5abcaf){if(_0xfd0b63[_0x2e07('0xf')]){return _0x391068(null,![],{'message':_0x2e07('0x15')});}else if(_0x40c4f2[_0x2e07('0x9')]>0x0){if(_0xfd0b63[_0x2e07('0x10')]){if(_0x40c4f2['blockDuration']>0x0){if(moment(_0xfd0b63[_0x2e07('0x11')])[_0x2e07('0x17')](_0x40c4f2[_0x2e07('0xa')],'minutes')>moment()){return _0x391068(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils['clearBlockUser'](_0xfd0b63,_0x40f268,![],null)[_0x2e07('0xb')](function(){return _0x391068(null,![],{'message':_0x2e07('0x15')});});}}else{return _0x391068(null,![],{'message':_0x2e07('0x15')});}}else{if(_0x40f268>=_0x40c4f2['allowedLoginAttempts']){return utils[_0x2e07('0x18')](_0xfd0b63,0x0,!![],moment())[_0x2e07('0xb')](function(){return _0x391068(null,![],{'message':_0x2e07('0x15')});});}else{return utils['clearBlockUser'](_0xfd0b63,_0x40f268,![],null)['then'](function(){return _0x391068(null,![],{'message':_0x2e07('0x15')});});}}}else{return _0x391068(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{if(_0xfd0b63[_0x2e07('0xf')]){return _0x391068(null,![],{'message':_0x2e07('0x15')});}else if(_0x40c4f2[_0x2e07('0x9')]>0x0){if(_0xfd0b63[_0x2e07('0x10')]){if(_0x40c4f2[_0x2e07('0xa')]>0x0){if(moment(_0xfd0b63[_0x2e07('0x11')])[_0x2e07('0x17')](_0x40c4f2[_0x2e07('0xa')],_0x2e07('0x19'))>moment()){return _0x391068(null,![],{'message':_0x2e07('0x15')});}else{return utils[_0x2e07('0x18')](_0xfd0b63,0x0,![],null)[_0x2e07('0xb')](function(){return utils[_0x2e07('0x1a')](_0xfd0b63);})[_0x2e07('0xb')](function(){return _0x391068(null,_0xfd0b63);});}}else{return _0x391068(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}}else{return utils[_0x2e07('0x18')](_0xfd0b63,0x0,![],null)['then'](function(){return utils[_0x2e07('0x1a')](_0xfd0b63);})['then'](function(){return _0x391068(null,_0xfd0b63);})['catch'](function(_0x53e5f3){return _0x391068(null,![],_0x53e5f3);});}}else{if(_0xfd0b63['blocked']){return _0x391068(null,![],{'message':_0x2e07('0x15')});}else{return utils['getLicense'](_0xfd0b63)[_0x2e07('0xb')](function(){return _0x391068(null,_0xfd0b63);});}}}});})[_0x2e07('0x1b')](function(_0x257150){return _0x391068(null,![],_0x257150);});}function sendServiceMail(_0x12465c){return db['MailAccount'][_0x2e07('0x1c')]({'where':{'service':!![]},'attributes':['id',_0x2e07('0xc'),_0x2e07('0x1d')],'include':[{'model':db[_0x2e07('0x1e')],'as':_0x2e07('0x1f'),'include':[{'model':db[_0x2e07('0x20')],'as':_0x2e07('0x20')}]}]})[_0x2e07('0xb')](function(_0x993a79){if(!_0x993a79){throw new Error(_0x2e07('0x21'));}var _0x45c4fb=_0x993a79[_0x2e07('0x22')]();var _0x2aa482={'account':_0x45c4fb,'message':_[_0x2e07('0x23')]({'from':util[_0x2e07('0x24')](_0x2e07('0x25'),_0x993a79[_0x2e07('0xc')],_0x993a79[_0x2e07('0x1d')]||_0x993a79[_0x2e07('0x1f')][_0x2e07('0x14')])},_0x12465c)};return client[_0x2e07('0x26')]('SendMail',_0x2aa482);})['then'](function(_0x4bc8fc){if(_0x4bc8fc['error']){throw new Error(util[_0x2e07('0x24')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x4bc8fc['error'][_0x2e07('0x27')]||JSON[_0x2e07('0x28')](_0x4bc8fc[_0x2e07('0x29')])));}return!![];});}function handleError(_0x5abac6,_0x1f26ab,_0x4f2bc7){return _0x5abac6[_0x2e07('0x2a')](_0x1f26ab||0x1f4)[_0x2e07('0x2b')]({'message':_0x4f2bc7?_0x4f2bc7[_0x2e07('0x27')]||_0x4f2bc7:''});}exports['login']=function(_0x50502d,_0x78cd6f,_0x95134){passport['authenticate'](_0x2e07('0x2c'),function(_0x3b41cb,_0x4c03bd,_0x50fef8){var _0x5cf7cb=_0x3b41cb||_0x50fef8;if(_0x5cf7cb){return handleError(_0x78cd6f,0x191,_0x5cf7cb);}if(!_0x4c03bd){return handleError(_0x78cd6f,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x1ed4b8={'payload':{'id':_0x4c03bd['id'],'role':_0x4c03bd[_0x2e07('0xe')]},'options':{'expiresIn':0x15180}};return authService[_0x2e07('0x2d')](_0x1ed4b8)[_0x2e07('0xb')](function(_0x41ca69){_0x78cd6f[_0x2e07('0x2e')]({'id':_0x4c03bd['id'],'token':_0x41ca69,'statusCall':'','isAlreadyLogged':_0x4c03bd[_0x2e07('0x2f')]});});}})(_0x50502d,_0x78cd6f,_0x95134);};exports[_0x2e07('0x30')]=function(_0x349d84,_0x4c53f5){if(!_0x349d84[_0x2e07('0x31')][_0x2e07('0x1d')]){return handleError(_0x4c53f5,0x1f4,{'message':_0x2e07('0x32')});}var _0x1f6079=rs[_0x2e07('0x33')]();_0x349d84['body'][_0x2e07('0x1d')]=_0x349d84[_0x2e07('0x31')]['email'][_0x2e07('0x34')]()[_0x2e07('0x35')]();var _0x4615b1;return db[_0x2e07('0x7')][_0x2e07('0x8')]({'where':{'id':0x1},'attributes':[_0x2e07('0x9'),_0x2e07('0xa')],'raw':!![]})[_0x2e07('0xb')](function(_0x322bd9){_0x4615b1=_0x322bd9;return db[_0x2e07('0x36')][_0x2e07('0x1c')]({'where':{'email':_0x349d84['body']['email']}});})['then'](function(_0x3796d8){if(!_0x3796d8){throw new Error('This\x20email\x20is\x20not\x20registered.');}if(_0x3796d8[_0x2e07('0xf')]){throw new Error(_0x2e07('0x37'));}if(_0x3796d8[_0x2e07('0x10')]){if(moment(_0x3796d8['blockedAt'])[_0x2e07('0x17')](_0x4615b1[_0x2e07('0xa')],_0x2e07('0x19'))>moment()){throw new Error('The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.');}else{_0x3796d8['blocked']=![];_0x3796d8[_0x2e07('0x11')]=null;}}_0x3796d8[_0x2e07('0x38')]=_0x1f6079;_0x3796d8[_0x2e07('0x39')]=Date[_0x2e07('0x3a')]()+0x36ee80;return _0x3796d8[_0x2e07('0x3b')]();})['then'](function(){return sendServiceMail({'to':_0x349d84[_0x2e07('0x31')]['email'],'subject':_0x2e07('0x3c'),'text':_0x2e07('0x3d')+_0x2e07('0x3e')+_0x2e07('0x3f')+_0x349d84['headers'][_0x2e07('0x40')]+_0x2e07('0x41')+_0x1f6079+'\x0a\x0a'+_0x2e07('0x42')});})[_0x2e07('0xb')](function(){_0x4c53f5['status'](0xc8)[_0x2e07('0x2b')]({'message':_0x2e07('0x43')});})[_0x2e07('0x1b')](function(_0x3d0d92){return handleError(_0x4c53f5,0x1f4,_0x3d0d92);});};exports[_0x2e07('0x44')]=function(_0x40138b,_0xbe6f9c){return db[_0x2e07('0x36')][_0x2e07('0x1c')]({'where':{'resetPasswordToken':_0x40138b['params']['token'],'resetPasswordExpires':{'$gt':Date[_0x2e07('0x3a')]()}}})[_0x2e07('0xb')](function(_0x4c7384){if(!_0x4c7384){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0x2e07('0x7')][_0x2e07('0x8')]({'attributes':['id',_0x2e07('0x45'),_0x2e07('0x46'),_0x2e07('0x47')]})[_0x2e07('0xb')](function(_0x4576d2){if(_0x4576d2[_0x2e07('0x45')])authService['validatePasswordPattern'](_0x40138b[_0x2e07('0x31')]['password']);if(!_0x4576d2[_0x2e07('0x46')]||!_0x4c7384['previousPasswords'])return _0x4c7384;authService[_0x2e07('0x48')](_0x40138b[_0x2e07('0x31')][_0x2e07('0x49')],_0x4c7384['previousPasswords'],_0x4576d2[_0x2e07('0x47')]);return _0x4c7384;})[_0x2e07('0xb')](function(){_0x4c7384['password']=_0x40138b[_0x2e07('0x31')][_0x2e07('0x49')];_0x4c7384['resetPasswordToken']=null;_0x4c7384['resetPasswordExpires']=null;return _0x4c7384[_0x2e07('0x3b')]();});})['then'](function(){_0xbe6f9c[_0x2e07('0x2a')](0xc8)[_0x2e07('0x2b')]({'message':_0x2e07('0x4a')});})['catch'](function(_0x3bb0b0){return handleError(_0xbe6f9c,0x1f4,_0x3bb0b0);});};passport[_0x2e07('0x4b')](_0x2e07('0x2c'),new LocalStrategy({'usernameField':_0x2e07('0xc'),'passwordField':'password'},function(_0x3922db,_0xe794a3,_0x49ea89){return localAuthenticate(db[_0x2e07('0x36')],_0x3922db,_0xe794a3,_0x49ea89);}));
\ No newline at end of file
+var _0x5e7d=['headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','previousPasswords','validatePasswordHistory','resetPasswordToken','local-login','util','passport','jayson/promise','lodash','moment','../../mysqldb','../../components/auth/service','../../config/utils','http','Setting','allowedLoginAttempts','then','findOne','password','salt','role','blocked','blockedAt','loginAttempts','admin','user','agent','name','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','disabled','blockDuration','add','minutes','clearBlockUser','getLicense','catch','find','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','\x22%s\x22\x20<%s>','email','request','SendMail','error','format','SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!','message','stringify','status','send','login','json','online','forgot','Email\x20parameter\x20is\x20missing','generate','body','trim','toLowerCase','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','You\x20are\x20receiving\x20this\x20because\x20you\x20(or\x20someone\x20else)\x20have\x20requested\x20the\x20reset\x20of\x20the\x20password\x20for\x20your\x20account.\x0a\x0a','Please\x20click\x20on\x20the\x20following\x20link,\x20or\x20paste\x20this\x20into\x20your\x20browser\x20to\x20complete\x20the\x20process:\x0a\x0a'];(function(_0x43e19a,_0x3127f2){var _0x35099e=function(_0x3bbc47){while(--_0x3bbc47){_0x43e19a['push'](_0x43e19a['shift']());}};_0x35099e(++_0x3127f2);}(_0x5e7d,0xb8));var _0xd5e7=function(_0x3de0d9,_0x2ccb8f){_0x3de0d9=_0x3de0d9-0x0;var _0x161cd9=_0x5e7d[_0x3de0d9];return _0x161cd9;};'use strict';var util=require(_0xd5e7('0x0'));var passport=require(_0xd5e7('0x1'));var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0xd5e7('0x2'));var _=require(_0xd5e7('0x3'));var rs=require('randomstring');var moment=require(_0xd5e7('0x4'));var db=require(_0xd5e7('0x5'))['db'];var authService=require(_0xd5e7('0x6'));var utils=require(_0xd5e7('0x7'));var client=jayson['client'][_0xd5e7('0x8')]({'port':0x232b});function localAuthenticate(_0x2fbd1e,_0x5217b4,_0x39ae3a,_0x10f943){var _0x3d9498,_0x412c98;return db[_0xd5e7('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0xd5e7('0xa'),'blockDuration'],'raw':!![]})[_0xd5e7('0xb')](function(_0x12525c){_0x3d9498=_0x12525c;return _0x2fbd1e[_0xd5e7('0xc')]({'attributes':['id','name',_0xd5e7('0xd'),_0xd5e7('0xe'),_0xd5e7('0xf'),'disabled',_0xd5e7('0x10'),_0xd5e7('0x11'),_0xd5e7('0x12')],'where':{'name':_0x5217b4,'role':{'$or':[_0xd5e7('0x13'),_0xd5e7('0x14'),_0xd5e7('0x15')]}}});})[_0xd5e7('0xb')](function(_0x5e6d0a){if(!_0x5e6d0a||_0x5e6d0a&&_0x5e6d0a[_0xd5e7('0x16')]!==_0x5217b4){throw new Error(_0xd5e7('0x17'));}else{_0x412c98=_0x5e6d0a;return _0x412c98;}})[_0xd5e7('0xb')](function(){_0x412c98['authenticate'](_0x39ae3a,function(_0x158572,_0x41f3b0){var _0x2c8882=_0x412c98['loginAttempts']+0x1;if(_0x158572){return _0x10f943(_0x158572);}else if(!_0x41f3b0){if(_0x412c98[_0xd5e7('0x18')]){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else if(_0x3d9498[_0xd5e7('0xa')]>0x0){if(_0x412c98[_0xd5e7('0x10')]){if(_0x3d9498[_0xd5e7('0x19')]>0x0){if(moment(_0x412c98[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x3d9498['blockDuration'],_0xd5e7('0x1b'))>moment()){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils[_0xd5e7('0x1c')](_0x412c98,_0x2c8882,![],null)[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});});}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{if(_0x2c8882>=_0x3d9498[_0xd5e7('0xa')]){return utils[_0xd5e7('0x1c')](_0x412c98,0x0,!![],moment())[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0xd5e7('0x1c')](_0x412c98,_0x2c8882,![],null)[_0xd5e7('0xb')](function(){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{if(_0x412c98[_0xd5e7('0x18')]){return _0x10f943(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3d9498['allowedLoginAttempts']>0x0){if(_0x412c98[_0xd5e7('0x10')]){if(_0x3d9498[_0xd5e7('0x19')]>0x0){if(moment(_0x412c98[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x3d9498[_0xd5e7('0x19')],_0xd5e7('0x1b'))>moment()){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils['clearBlockUser'](_0x412c98,0x0,![],null)[_0xd5e7('0xb')](function(){return utils['getLicense'](_0x412c98);})[_0xd5e7('0xb')](function(){return _0x10f943(null,_0x412c98);});}}else{return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}}else{return utils[_0xd5e7('0x1c')](_0x412c98,0x0,![],null)[_0xd5e7('0xb')](function(){return utils[_0xd5e7('0x1d')](_0x412c98);})['then'](function(){return _0x10f943(null,_0x412c98);})['catch'](function(_0x5c8669){return _0x10f943(null,![],_0x5c8669);});}}else{if(_0x412c98[_0xd5e7('0x10')]){return _0x10f943(null,![],{'message':_0xd5e7('0x17')});}else{return utils[_0xd5e7('0x1d')](_0x412c98)['then'](function(){return _0x10f943(null,_0x412c98);});}}}});})[_0xd5e7('0x1e')](function(_0x5ef213){return _0x10f943(null,![],_0x5ef213);});}function sendServiceMail(_0x14b99){return db['MailAccount'][_0xd5e7('0x1f')]({'where':{'service':!![]},'attributes':['id',_0xd5e7('0x16'),'email'],'include':[{'model':db[_0xd5e7('0x20')],'as':_0xd5e7('0x21'),'include':[{'model':db[_0xd5e7('0x22')],'as':_0xd5e7('0x22')}]}]})[_0xd5e7('0xb')](function(_0x6dcf49){if(!_0x6dcf49){throw new Error(_0xd5e7('0x23'));}var _0x4ea0a5=_0x6dcf49[_0xd5e7('0x24')]();var _0x25f521={'account':_0x4ea0a5,'message':_[_0xd5e7('0x25')]({'from':util['format'](_0xd5e7('0x26'),_0x6dcf49[_0xd5e7('0x16')],_0x6dcf49[_0xd5e7('0x27')]||_0x6dcf49[_0xd5e7('0x21')][_0xd5e7('0x14')])},_0x14b99)};return client[_0xd5e7('0x28')](_0xd5e7('0x29'),_0x25f521);})[_0xd5e7('0xb')](function(_0x4b324e){if(_0x4b324e[_0xd5e7('0x2a')]){throw new Error(util[_0xd5e7('0x2b')](_0xd5e7('0x2c'),_0x4b324e[_0xd5e7('0x2a')][_0xd5e7('0x2d')]||JSON[_0xd5e7('0x2e')](_0x4b324e[_0xd5e7('0x2a')])));}return!![];});}function handleError(_0x195b9b,_0x1a9798,_0x299a7d){return _0x195b9b[_0xd5e7('0x2f')](_0x1a9798||0x1f4)[_0xd5e7('0x30')]({'message':_0x299a7d?_0x299a7d[_0xd5e7('0x2d')]||_0x299a7d:''});}exports[_0xd5e7('0x31')]=function(_0x4ea092,_0x56d78d,_0x1217c8){passport['authenticate']('local-login',function(_0x184638,_0x2bcf2b,_0x19635c){var _0x50812d=_0x184638||_0x19635c;if(_0x50812d){return handleError(_0x56d78d,0x191,_0x50812d);}if(!_0x2bcf2b){return handleError(_0x56d78d,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x274f15={'payload':{'id':_0x2bcf2b['id'],'role':_0x2bcf2b[_0xd5e7('0xf')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x274f15)[_0xd5e7('0xb')](function(_0x13515e){_0x56d78d[_0xd5e7('0x32')]({'id':_0x2bcf2b['id'],'token':_0x13515e,'statusCall':'','isAlreadyLogged':_0x2bcf2b[_0xd5e7('0x33')]});});}})(_0x4ea092,_0x56d78d,_0x1217c8);};exports[_0xd5e7('0x34')]=function(_0x19860d,_0x4fbef5){if(!_0x19860d['body'][_0xd5e7('0x27')]){return handleError(_0x4fbef5,0x1f4,{'message':_0xd5e7('0x35')});}var _0x8134ac=rs[_0xd5e7('0x36')]();_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')]=_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')][_0xd5e7('0x38')]()[_0xd5e7('0x39')]();var _0x2aad51;return db[_0xd5e7('0x9')][_0xd5e7('0xc')]({'where':{'id':0x1},'attributes':[_0xd5e7('0xa'),_0xd5e7('0x19')],'raw':!![]})[_0xd5e7('0xb')](function(_0x104dd8){_0x2aad51=_0x104dd8;return db[_0xd5e7('0x3a')][_0xd5e7('0x1f')]({'where':{'email':_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')]}});})[_0xd5e7('0xb')](function(_0xf23434){if(!_0xf23434){throw new Error(_0xd5e7('0x3b'));}if(_0xf23434['disabled']){throw new Error(_0xd5e7('0x3c'));}if(_0xf23434[_0xd5e7('0x10')]){if(moment(_0xf23434[_0xd5e7('0x11')])[_0xd5e7('0x1a')](_0x2aad51[_0xd5e7('0x19')],_0xd5e7('0x1b'))>moment()){throw new Error(_0xd5e7('0x3d'));}else{_0xf23434[_0xd5e7('0x10')]=![];_0xf23434['blockedAt']=null;}}_0xf23434['resetPasswordToken']=_0x8134ac;_0xf23434[_0xd5e7('0x3e')]=Date[_0xd5e7('0x3f')]()+0x36ee80;return _0xf23434[_0xd5e7('0x40')]();})[_0xd5e7('0xb')](function(){return sendServiceMail({'to':_0x19860d[_0xd5e7('0x37')][_0xd5e7('0x27')],'subject':_0xd5e7('0x41'),'text':_0xd5e7('0x42')+_0xd5e7('0x43')+'https://'+_0x19860d[_0xd5e7('0x44')][_0xd5e7('0x45')]+_0xd5e7('0x46')+_0x8134ac+'\x0a\x0a'+_0xd5e7('0x47')});})[_0xd5e7('0xb')](function(){_0x4fbef5['status'](0xc8)[_0xd5e7('0x30')]({'message':_0xd5e7('0x48')});})[_0xd5e7('0x1e')](function(_0x1bd183){return handleError(_0x4fbef5,0x1f4,_0x1bd183);});};exports[_0xd5e7('0x49')]=function(_0x2bf2b9,_0x38d88f){return db[_0xd5e7('0x3a')]['find']({'where':{'resetPasswordToken':_0x2bf2b9[_0xd5e7('0x4a')][_0xd5e7('0x4b')],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0x1a63ba){if(!_0x1a63ba){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db[_0xd5e7('0x9')]['findOne']({'attributes':['id',_0xd5e7('0x4c'),_0xd5e7('0x4d'),_0xd5e7('0x4e')]})[_0xd5e7('0xb')](function(_0x5ab9c6){if(_0x5ab9c6[_0xd5e7('0x4c')])authService[_0xd5e7('0x4f')](_0x2bf2b9[_0xd5e7('0x37')]['password']);if(!_0x5ab9c6[_0xd5e7('0x4d')]||!_0x1a63ba[_0xd5e7('0x50')])return _0x1a63ba;authService[_0xd5e7('0x51')](_0x2bf2b9[_0xd5e7('0x37')]['password'],_0x1a63ba[_0xd5e7('0x50')],_0x5ab9c6['passwordHistoryLimit']);return _0x1a63ba;})[_0xd5e7('0xb')](function(){_0x1a63ba['password']=_0x2bf2b9[_0xd5e7('0x37')][_0xd5e7('0xd')];_0x1a63ba[_0xd5e7('0x52')]=null;_0x1a63ba[_0xd5e7('0x3e')]=null;return _0x1a63ba['save']();});})[_0xd5e7('0xb')](function(){_0x38d88f[_0xd5e7('0x2f')](0xc8)['send']({'message':'Password\x20reset!'});})['catch'](function(_0x36092d){return handleError(_0x38d88f,0x1f4,_0x36092d);});};passport['use'](_0xd5e7('0x53'),new LocalStrategy({'usernameField':_0xd5e7('0x16'),'passwordField':_0xd5e7('0xd')},function(_0x228cfb,_0x2aa4bf,_0x36b0cb){return localAuthenticate(db[_0xd5e7('0x3a')],_0x228cfb,_0x2aa4bf,_0x36b0cb);}));
\ No newline at end of file
index 80c452a..35d7c1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcd7=['/reset/:token','reset','exports','express','./authLocal.controller','post','login','/forgot','forgot'];(function(_0x3c2b23,_0x2a4035){var _0x33dd88=function(_0x1266f1){while(--_0x1266f1){_0x3c2b23['push'](_0x3c2b23['shift']());}};_0x33dd88(++_0x2a4035);}(_0xdcd7,0x111));var _0x7dcd=function(_0x798784,_0x303ff7){_0x798784=_0x798784-0x0;var _0x1a4b5d=_0xdcd7[_0x798784];return _0x1a4b5d;};'use strict';var express=require(_0x7dcd('0x0'));var router=express['Router']();var controller=require(_0x7dcd('0x1'));router[_0x7dcd('0x2')]('/',controller[_0x7dcd('0x3')]);router['post'](_0x7dcd('0x4'),controller[_0x7dcd('0x5')]);router['post'](_0x7dcd('0x6'),controller[_0x7dcd('0x7')]);module[_0x7dcd('0x8')]=router;
\ No newline at end of file
+var _0xdeb9=['express','Router','./authLocal.controller','post','login','/forgot','forgot','reset'];(function(_0x4bb593,_0x272ed0){var _0x2da2d8=function(_0x4b25e9){while(--_0x4b25e9){_0x4bb593['push'](_0x4bb593['shift']());}};_0x2da2d8(++_0x272ed0);}(_0xdeb9,0x68));var _0x9deb=function(_0x2aa9d6,_0x309e34){_0x2aa9d6=_0x2aa9d6-0x0;var _0x23f553=_0xdeb9[_0x2aa9d6];return _0x23f553;};'use strict';var express=require(_0x9deb('0x0'));var router=express[_0x9deb('0x1')]();var controller=require(_0x9deb('0x2'));router[_0x9deb('0x3')]('/',controller[_0x9deb('0x4')]);router[_0x9deb('0x3')](_0x9deb('0x5'),controller[_0x9deb('0x6')]);router[_0x9deb('0x3')]('/reset/:token',controller[_0x9deb('0x7')]);module['exports']=router;
\ No newline at end of file
index fde24e1..2e70610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x602b=['INTEGER','sequelize','exports','STRING','BOOLEAN'];(function(_0xfae60f,_0x3d55bd){var _0x5dda8d=function(_0x2f25fe){while(--_0x2f25fe){_0xfae60f['push'](_0xfae60f['shift']());}};_0x5dda8d(++_0x3d55bd);}(_0x602b,0x6a));var _0xb602=function(_0x4827c8,_0x3b4047){_0x4827c8=_0x4827c8-0x0;var _0x5f104e=_0x602b[_0x4827c8];return _0x5f104e;};'use strict';var Sequelize=require(_0xb602('0x0'));module[_0xb602('0x1')]={'name':{'type':Sequelize[_0xb602('0x2')],'allowNull':![]},'channel':{'type':Sequelize[_0xb602('0x2')]},'description':{'type':Sequelize[_0xb602('0x2')]},'status':{'type':Sequelize[_0xb602('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xb602('0x4')],'defaultValue':0xa}};
\ No newline at end of file
+var _0xee5e=['BOOLEAN','INTEGER','sequelize','exports','STRING'];(function(_0x5da8e9,_0x3beb32){var _0x24a605=function(_0x284ab3){while(--_0x284ab3){_0x5da8e9['push'](_0x5da8e9['shift']());}};_0x24a605(++_0x3beb32);}(_0xee5e,0x84));var _0xeee5=function(_0x276c1c,_0x54f43f){_0x276c1c=_0x276c1c-0x0;var _0xd440a0=_0xee5e[_0x276c1c];return _0xd440a0;};'use strict';var Sequelize=require(_0xeee5('0x0'));module[_0xeee5('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'channel':{'type':Sequelize[_0xeee5('0x2')]},'description':{'type':Sequelize[_0xeee5('0x2')]},'status':{'type':Sequelize[_0xeee5('0x3')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xeee5('0x4')],'defaultValue':0xa}};
\ No newline at end of file
index 5ce67fa..30cc95f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97ec=['pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','addConditions','Condition','ids','getConditions','findOne','options','hasOwnProperty','addActions','Action','omit','getActions','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','limit','undefined','count','offset','Content-Range','apply','reject','update','then','destroy','end','name','send','index','map','Automation','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where'];(function(_0x510501,_0x2468c2){var _0x1f22ea=function(_0x2e6ccd){while(--_0x2e6ccd){_0x510501['push'](_0x510501['shift']());}};_0x1f22ea(++_0x2468c2);}(_0x97ec,0x6d));var _0xc97e=function(_0x5742a6,_0x133889){_0x5742a6=_0x5742a6-0x0;var _0x42d528=_0x97ec[_0x5742a6];return _0x42d528;};'use strict';var emlformat=require(_0xc97e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xc97e('0x1'));var rp=require(_0xc97e('0x2'));var moment=require(_0xc97e('0x3'));var BPromise=require(_0xc97e('0x4'));var Mustache=require(_0xc97e('0x5'));var util=require(_0xc97e('0x6'));var path=require(_0xc97e('0x7'));var sox=require(_0xc97e('0x8'));var csv=require(_0xc97e('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc97e('0xa'));var _=require(_0xc97e('0xb'));var squel=require(_0xc97e('0xc'));var crypto=require(_0xc97e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xc97e('0xe'));var toCsv=require(_0xc97e('0x9'));var querystring=require(_0xc97e('0xf'));var Papa=require(_0xc97e('0x10'));var Redis=require('ioredis');var authService=require(_0xc97e('0x11'));var qs=require(_0xc97e('0x12'));var as=require(_0xc97e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc97e('0x14'))('api');var utils=require(_0xc97e('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xc97e('0x16'));var db=require(_0xc97e('0x17'))['db'];function respondWithStatusCode(_0x5543c0,_0x4e2d71){_0x4e2d71=_0x4e2d71||0xcc;return function(_0x2de008){if(_0x2de008){return _0x5543c0[_0xc97e('0x18')](_0x4e2d71);}return _0x5543c0['status'](_0x4e2d71)['end']();};}function respondWithResult(_0x1a074a,_0x25da99){_0x25da99=_0x25da99||0xc8;return function(_0x2f5143){if(_0x2f5143){return _0x1a074a[_0xc97e('0x19')](_0x25da99)['json'](_0x2f5143);}};}function respondWithFilteredResult(_0x4cccc5,_0x346b6d){return function(_0x354f25){if(_0x354f25){var _0x462d70=typeof _0x346b6d['offset']==='undefined'&&typeof _0x346b6d[_0xc97e('0x1a')]===_0xc97e('0x1b');var _0x5ab5bc=_0x354f25[_0xc97e('0x1c')];var _0xb84954=_0x462d70?0x0:_0x346b6d[_0xc97e('0x1d')];var _0x5de5c3=_0x462d70?_0x354f25[_0xc97e('0x1c')]:_0x346b6d[_0xc97e('0x1d')]+_0x346b6d[_0xc97e('0x1a')];var _0x3182d4;if(_0x5de5c3>=_0x5ab5bc){_0x5de5c3=_0x5ab5bc;_0x3182d4=0xc8;}else{_0x3182d4=0xce;}_0x4cccc5['status'](_0x3182d4);return _0x4cccc5['set'](_0xc97e('0x1e'),_0xb84954+'-'+_0x5de5c3+'/'+_0x5ab5bc)['json'](_0x354f25);}return null;};}function patchUpdates(_0x45ad7c){return function(_0x3bd3b5){try{jsonpatch[_0xc97e('0x1f')](_0x3bd3b5,_0x45ad7c,!![]);}catch(_0x11e8ec){return BPromise[_0xc97e('0x20')](_0x11e8ec);}return _0x3bd3b5['save']();};}function saveUpdates(_0x45e3df,_0x23b025){return function(_0x282c65){if(_0x282c65){return _0x282c65[_0xc97e('0x21')](_0x45e3df)[_0xc97e('0x22')](function(_0x34a47d){return _0x34a47d;});}return null;};}function removeEntity(_0x4cb3dc,_0x3d5e97){return function(_0x3e75e6){if(_0x3e75e6){return _0x3e75e6[_0xc97e('0x23')]()[_0xc97e('0x22')](function(){_0x4cb3dc['status'](0xcc)[_0xc97e('0x24')]();});}};}function handleEntityNotFound(_0x3667bf,_0xe74e76){return function(_0x459237){if(!_0x459237){_0x3667bf['sendStatus'](0x194);}return _0x459237;};}function handleError(_0x510e5f,_0x4b0e55){_0x4b0e55=_0x4b0e55||0x1f4;return function(_0x4dfc17){logger['error'](_0x4dfc17['stack']);if(_0x4dfc17['name']){delete _0x4dfc17[_0xc97e('0x25')];}_0x510e5f['status'](_0x4b0e55)[_0xc97e('0x26')](_0x4dfc17);};}exports[_0xc97e('0x27')]=function(_0x212a83,_0xa22a77){var _0x7251e3={},_0x436b79={},_0x56d793={'count':0x0,'rows':[]};var _0x43a27c=_[_0xc97e('0x28')](db[_0xc97e('0x29')][_0xc97e('0x2a')],function(_0x157745){return{'name':_0x157745[_0xc97e('0x2b')],'type':_0x157745[_0xc97e('0x2c')][_0xc97e('0x2d')]};});_0x436b79[_0xc97e('0x2e')]=_[_0xc97e('0x28')](_0x43a27c,'name');_0x436b79[_0xc97e('0x2f')]=_['keys'](_0x212a83[_0xc97e('0x2f')]);_0x436b79[_0xc97e('0x30')]=_['intersection'](_0x436b79[_0xc97e('0x2e')],_0x436b79[_0xc97e('0x2f')]);_0x7251e3[_0xc97e('0x31')]=_[_0xc97e('0x32')](_0x436b79[_0xc97e('0x2e')],qs[_0xc97e('0x33')](_0x212a83[_0xc97e('0x2f')]['fields']));_0x7251e3[_0xc97e('0x31')]=_0x7251e3[_0xc97e('0x31')][_0xc97e('0x34')]?_0x7251e3[_0xc97e('0x31')]:_0x436b79[_0xc97e('0x2e')];if(!_0x212a83[_0xc97e('0x2f')]['hasOwnProperty'](_0xc97e('0x35'))){_0x7251e3[_0xc97e('0x1a')]=qs[_0xc97e('0x1a')](_0x212a83[_0xc97e('0x2f')][_0xc97e('0x1a')]);_0x7251e3['offset']=qs['offset'](_0x212a83[_0xc97e('0x2f')][_0xc97e('0x1d')]);}_0x7251e3[_0xc97e('0x36')]=qs[_0xc97e('0x37')](_0x212a83[_0xc97e('0x2f')][_0xc97e('0x37')]);_0x7251e3[_0xc97e('0x38')]=qs['filters'](_[_0xc97e('0x39')](_0x212a83[_0xc97e('0x2f')],_0x436b79[_0xc97e('0x30')]),_0x43a27c);if(_0x212a83[_0xc97e('0x2f')][_0xc97e('0x3a')]){_0x7251e3[_0xc97e('0x38')]=_[_0xc97e('0x3b')](_0x7251e3[_0xc97e('0x38')],{'$or':_[_0xc97e('0x28')](_0x43a27c,function(_0x25d6b0){if(_0x25d6b0['type']!==_0xc97e('0x3c')){var _0x203d3e={};_0x203d3e[_0x25d6b0[_0xc97e('0x25')]]={'$like':'%'+_0x212a83[_0xc97e('0x2f')][_0xc97e('0x3a')]+'%'};return _0x203d3e;}})});}_0x7251e3=_[_0xc97e('0x3b')]({},_0x7251e3,_0x212a83['options']);var _0x56eb42={'where':_0x7251e3['where']};return db[_0xc97e('0x29')][_0xc97e('0x1c')](_0x56eb42)[_0xc97e('0x22')](function(_0x3e3ef3){_0x56d793[_0xc97e('0x1c')]=_0x3e3ef3;if(_0x212a83[_0xc97e('0x2f')][_0xc97e('0x3d')]){_0x7251e3[_0xc97e('0x3e')]=[{'all':!![]}];}return db[_0xc97e('0x29')][_0xc97e('0x3f')](_0x7251e3);})[_0xc97e('0x22')](function(_0x221269){_0x56d793[_0xc97e('0x40')]=_0x221269;return _0x56d793;})[_0xc97e('0x22')](respondWithFilteredResult(_0xa22a77,_0x7251e3))[_0xc97e('0x41')](handleError(_0xa22a77,null));};exports[_0xc97e('0x42')]=function(_0x248e41,_0x50227a){var _0x43ab36={'raw':![],'where':{'id':_0x248e41['params']['id']}},_0x1ecf79={};_0x1ecf79['model']=_[_0xc97e('0x43')](db[_0xc97e('0x29')][_0xc97e('0x2a')]);_0x1ecf79[_0xc97e('0x2f')]=_['keys'](_0x248e41[_0xc97e('0x2f')]);_0x1ecf79[_0xc97e('0x30')]=_[_0xc97e('0x32')](_0x1ecf79[_0xc97e('0x2e')],_0x1ecf79[_0xc97e('0x2f')]);_0x43ab36[_0xc97e('0x31')]=_[_0xc97e('0x32')](_0x1ecf79[_0xc97e('0x2e')],qs[_0xc97e('0x33')](_0x248e41[_0xc97e('0x2f')][_0xc97e('0x33')]));_0x43ab36[_0xc97e('0x31')]=_0x43ab36['attributes'][_0xc97e('0x34')]?_0x43ab36[_0xc97e('0x31')]:_0x1ecf79[_0xc97e('0x2e')];if(_0x248e41['query']['includeAll']){_0x43ab36['include']=[{'all':!![]}];}_0x43ab36=_[_0xc97e('0x3b')]({},_0x43ab36,_0x248e41['options']);return db[_0xc97e('0x29')][_0xc97e('0x44')](_0x43ab36)[_0xc97e('0x22')](handleEntityNotFound(_0x50227a,null))[_0xc97e('0x22')](respondWithResult(_0x50227a,null))['catch'](handleError(_0x50227a,null));};exports[_0xc97e('0x45')]=function(_0x229133,_0x59b72f){return db['Automation']['create'](_0x229133[_0xc97e('0x46')],{})[_0xc97e('0x22')](respondWithResult(_0x59b72f,0xc9))[_0xc97e('0x41')](handleError(_0x59b72f,null));};exports[_0xc97e('0x21')]=function(_0x17a6f3,_0x4fa580){if(_0x17a6f3['body']['id']){delete _0x17a6f3[_0xc97e('0x46')]['id'];}return db[_0xc97e('0x29')][_0xc97e('0x44')]({'where':{'id':_0x17a6f3[_0xc97e('0x47')]['id']}})['then'](handleEntityNotFound(_0x4fa580,null))[_0xc97e('0x22')](saveUpdates(_0x17a6f3['body'],null))[_0xc97e('0x22')](respondWithResult(_0x4fa580,null))[_0xc97e('0x41')](handleError(_0x4fa580,null));};exports[_0xc97e('0x23')]=function(_0xe9370b,_0x236615){return db[_0xc97e('0x29')][_0xc97e('0x44')]({'where':{'id':_0xe9370b[_0xc97e('0x47')]['id']}})['then'](handleEntityNotFound(_0x236615,null))[_0xc97e('0x22')](removeEntity(_0x236615,null))[_0xc97e('0x41')](handleError(_0x236615,null));};exports[_0xc97e('0x48')]=function(_0x645796,_0x23f75d,_0x53b912){return db[_0xc97e('0x49')][_0xc97e('0x44')]({'where':{'id':_0x645796[_0xc97e('0x47')]['id']}})[_0xc97e('0x22')](handleEntityNotFound(_0x23f75d,null))[_0xc97e('0x22')](function(_0x5360e0){if(_0x5360e0){return _0x5360e0[_0xc97e('0x48')](_0x645796[_0xc97e('0x46')][_0xc97e('0x4a')],_['omit'](_0x645796[_0xc97e('0x46')],[_0xc97e('0x4a'),'id'])||{});}})[_0xc97e('0x22')](respondWithResult(_0x23f75d,null))[_0xc97e('0x41')](handleError(_0x23f75d,null));};exports[_0xc97e('0x4b')]=function(_0x40a524,_0x1e8c23,_0x1b80ac){var _0x24e7f6={};var _0x283581={};var _0x1383fd;var _0x39a767;return db[_0xc97e('0x29')][_0xc97e('0x4c')]({'where':{'id':_0x40a524[_0xc97e('0x47')]['id']}})[_0xc97e('0x22')](handleEntityNotFound(_0x1e8c23,null))[_0xc97e('0x22')](function(_0x5a1f42){if(_0x5a1f42){_0x1383fd=_0x5a1f42;_0x283581[_0xc97e('0x2e')]=_[_0xc97e('0x43')](db[_0xc97e('0x49')][_0xc97e('0x2a')]);_0x283581[_0xc97e('0x2f')]=_['keys'](_0x40a524[_0xc97e('0x2f')]);_0x283581[_0xc97e('0x30')]=_['intersection'](_0x283581[_0xc97e('0x2e')],_0x283581[_0xc97e('0x2f')]);_0x24e7f6[_0xc97e('0x31')]=_['intersection'](_0x283581[_0xc97e('0x2e')],qs[_0xc97e('0x33')](_0x40a524[_0xc97e('0x2f')]['fields']));_0x24e7f6['attributes']=_0x24e7f6[_0xc97e('0x31')][_0xc97e('0x34')]?_0x24e7f6['attributes']:_0x283581[_0xc97e('0x2e')];_0x24e7f6[_0xc97e('0x36')]=qs[_0xc97e('0x37')](_0x40a524['query'][_0xc97e('0x37')]);_0x24e7f6[_0xc97e('0x38')]=qs[_0xc97e('0x30')](_[_0xc97e('0x39')](_0x40a524[_0xc97e('0x2f')],_0x283581[_0xc97e('0x30')]));if(_0x40a524['query'][_0xc97e('0x3a')]){_0x24e7f6[_0xc97e('0x38')]=_[_0xc97e('0x3b')](_0x24e7f6['where'],{'$or':_['map'](_0x24e7f6[_0xc97e('0x31')],function(_0x481662){var _0x4b7e8b={};_0x4b7e8b[_0x481662]={'$like':'%'+_0x40a524[_0xc97e('0x2f')][_0xc97e('0x3a')]+'%'};return _0x4b7e8b;})});}_0x24e7f6=_['merge']({},_0x24e7f6,_0x40a524[_0xc97e('0x4d')]);return _0x1383fd[_0xc97e('0x4b')](_0x24e7f6);}})[_0xc97e('0x22')](function(_0x3363ea){if(_0x3363ea){_0x39a767=_0x3363ea[_0xc97e('0x34')];if(!_0x40a524['query'][_0xc97e('0x4e')](_0xc97e('0x35'))){_0x24e7f6[_0xc97e('0x1a')]=qs['limit'](_0x40a524[_0xc97e('0x2f')]['limit']);_0x24e7f6[_0xc97e('0x1d')]=qs[_0xc97e('0x1d')](_0x40a524[_0xc97e('0x2f')][_0xc97e('0x1d')]);}return _0x1383fd[_0xc97e('0x4b')](_0x24e7f6);}})['then'](function(_0xdbe808){if(_0xdbe808){return _0xdbe808?{'count':_0x39a767,'rows':_0xdbe808}:null;}})[_0xc97e('0x22')](respondWithResult(_0x1e8c23,null))['catch'](handleError(_0x1e8c23,null));};exports[_0xc97e('0x4f')]=function(_0x3ba7e8,_0x54b2d1,_0x485bcc){return db[_0xc97e('0x50')][_0xc97e('0x44')]({'where':{'id':_0x3ba7e8[_0xc97e('0x47')]['id']}})['then'](handleEntityNotFound(_0x54b2d1,null))[_0xc97e('0x22')](function(_0x37e32c){if(_0x37e32c){return _0x37e32c['addActions'](_0x3ba7e8[_0xc97e('0x46')][_0xc97e('0x4a')],_[_0xc97e('0x51')](_0x3ba7e8[_0xc97e('0x46')],[_0xc97e('0x4a'),'id'])||{});}})[_0xc97e('0x22')](respondWithResult(_0x54b2d1,null))[_0xc97e('0x41')](handleError(_0x54b2d1,null));};exports[_0xc97e('0x52')]=function(_0x42b45e,_0x51b076,_0x3125fb){var _0x2964d4={};var _0x35e353={};var _0x4066e9;var _0x1c0ca2;return db[_0xc97e('0x29')][_0xc97e('0x4c')]({'where':{'id':_0x42b45e[_0xc97e('0x47')]['id']}})['then'](handleEntityNotFound(_0x51b076,null))['then'](function(_0x220e48){if(_0x220e48){_0x4066e9=_0x220e48;_0x35e353['model']=_[_0xc97e('0x43')](db[_0xc97e('0x50')][_0xc97e('0x2a')]);_0x35e353[_0xc97e('0x2f')]=_['keys'](_0x42b45e[_0xc97e('0x2f')]);_0x35e353[_0xc97e('0x30')]=_['intersection'](_0x35e353['model'],_0x35e353[_0xc97e('0x2f')]);_0x2964d4[_0xc97e('0x31')]=_[_0xc97e('0x32')](_0x35e353[_0xc97e('0x2e')],qs[_0xc97e('0x33')](_0x42b45e[_0xc97e('0x2f')]['fields']));_0x2964d4[_0xc97e('0x31')]=_0x2964d4[_0xc97e('0x31')][_0xc97e('0x34')]?_0x2964d4[_0xc97e('0x31')]:_0x35e353[_0xc97e('0x2e')];_0x2964d4['order']=qs[_0xc97e('0x37')](_0x42b45e[_0xc97e('0x2f')]['sort']);_0x2964d4[_0xc97e('0x38')]=qs[_0xc97e('0x30')](_[_0xc97e('0x39')](_0x42b45e[_0xc97e('0x2f')],_0x35e353['filters']));if(_0x42b45e[_0xc97e('0x2f')][_0xc97e('0x3a')]){_0x2964d4['where']=_[_0xc97e('0x3b')](_0x2964d4[_0xc97e('0x38')],{'$or':_['map'](_0x2964d4[_0xc97e('0x31')],function(_0x3ae611){var _0x41b384={};_0x41b384[_0x3ae611]={'$like':'%'+_0x42b45e['query'][_0xc97e('0x3a')]+'%'};return _0x41b384;})});}_0x2964d4=_[_0xc97e('0x3b')]({},_0x2964d4,_0x42b45e['options']);return _0x4066e9[_0xc97e('0x52')](_0x2964d4);}})[_0xc97e('0x22')](function(_0x3074a9){if(_0x3074a9){_0x1c0ca2=_0x3074a9[_0xc97e('0x34')];if(!_0x42b45e[_0xc97e('0x2f')][_0xc97e('0x4e')](_0xc97e('0x35'))){_0x2964d4[_0xc97e('0x1a')]=qs[_0xc97e('0x1a')](_0x42b45e['query'][_0xc97e('0x1a')]);_0x2964d4[_0xc97e('0x1d')]=qs[_0xc97e('0x1d')](_0x42b45e['query'][_0xc97e('0x1d')]);}return _0x4066e9['getActions'](_0x2964d4);}})[_0xc97e('0x22')](function(_0x1deff6){if(_0x1deff6){return _0x1deff6?{'count':_0x1c0ca2,'rows':_0x1deff6}:null;}})[_0xc97e('0x22')](respondWithResult(_0x51b076,null))['catch'](handleError(_0x51b076,null));};
\ No newline at end of file
+var _0x4939=['offset','undefined','limit','count','status','set','apply','update','then','stack','name','send','index','map','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','sort','where','filter','merge','VIRTUAL','options','Automation','includeAll','include','findAll','rows','catch','show','keys','find','create','body','params','destroy','Condition','addConditions','ids','findOne','order','pick','getConditions','hasOwnProperty','nolimit','addActions','Action','omit','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','json'];(function(_0x2655bb,_0x45b1c1){var _0x40abb1=function(_0x3d781c){while(--_0x3d781c){_0x2655bb['push'](_0x2655bb['shift']());}};_0x40abb1(++_0x45b1c1);}(_0x4939,0xdc));var _0x9493=function(_0x1d1f59,_0x4ca321){_0x1d1f59=_0x1d1f59-0x0;var _0x5df55a=_0x4939[_0x1d1f59];return _0x5df55a;};'use strict';var emlformat=require(_0x9493('0x0'));var rimraf=require(_0x9493('0x1'));var zipdir=require(_0x9493('0x2'));var jsonpatch=require(_0x9493('0x3'));var rp=require('request-promise');var moment=require(_0x9493('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9493('0x5'));var util=require('util');var path=require(_0x9493('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9493('0x7'));var _=require(_0x9493('0x8'));var squel=require(_0x9493('0x9'));var crypto=require(_0x9493('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x9493('0xb'));var toCsv=require(_0x9493('0xc'));var querystring=require(_0x9493('0xd'));var Papa=require(_0x9493('0xe'));var Redis=require(_0x9493('0xf'));var authService=require(_0x9493('0x10'));var qs=require(_0x9493('0x11'));var as=require(_0x9493('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9493('0x13'))(_0x9493('0x14'));var utils=require(_0x9493('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9493('0x16'));var db=require(_0x9493('0x17'))['db'];function respondWithStatusCode(_0xce55d9,_0x527c65){_0x527c65=_0x527c65||0xcc;return function(_0x381697){if(_0x381697){return _0xce55d9['sendStatus'](_0x527c65);}return _0xce55d9['status'](_0x527c65)[_0x9493('0x18')]();};}function respondWithResult(_0x3ac6a5,_0x368f6d){_0x368f6d=_0x368f6d||0xc8;return function(_0x2648f2){if(_0x2648f2){return _0x3ac6a5['status'](_0x368f6d)[_0x9493('0x19')](_0x2648f2);}};}function respondWithFilteredResult(_0x3349d9,_0xf64cf){return function(_0x31015b){if(_0x31015b){var _0x56b8c6=typeof _0xf64cf[_0x9493('0x1a')]===_0x9493('0x1b')&&typeof _0xf64cf[_0x9493('0x1c')]==='undefined';var _0x1cff0e=_0x31015b[_0x9493('0x1d')];var _0x135125=_0x56b8c6?0x0:_0xf64cf[_0x9493('0x1a')];var _0x1e6f71=_0x56b8c6?_0x31015b[_0x9493('0x1d')]:_0xf64cf['offset']+_0xf64cf[_0x9493('0x1c')];var _0x32b7bf;if(_0x1e6f71>=_0x1cff0e){_0x1e6f71=_0x1cff0e;_0x32b7bf=0xc8;}else{_0x32b7bf=0xce;}_0x3349d9[_0x9493('0x1e')](_0x32b7bf);return _0x3349d9[_0x9493('0x1f')]('Content-Range',_0x135125+'-'+_0x1e6f71+'/'+_0x1cff0e)[_0x9493('0x19')](_0x31015b);}return null;};}function patchUpdates(_0x3e7d60){return function(_0x4d15ce){try{jsonpatch[_0x9493('0x20')](_0x4d15ce,_0x3e7d60,!![]);}catch(_0xf9cab1){return BPromise['reject'](_0xf9cab1);}return _0x4d15ce['save']();};}function saveUpdates(_0x580945,_0x2fe55a){return function(_0x4a6b06){if(_0x4a6b06){return _0x4a6b06[_0x9493('0x21')](_0x580945)[_0x9493('0x22')](function(_0x1dd760){return _0x1dd760;});}return null;};}function removeEntity(_0x48cc56,_0x1abbff){return function(_0x1a98b0){if(_0x1a98b0){return _0x1a98b0['destroy']()[_0x9493('0x22')](function(){_0x48cc56[_0x9493('0x1e')](0xcc)[_0x9493('0x18')]();});}};}function handleEntityNotFound(_0x3b7415,_0x22eb60){return function(_0x2a79f5){if(!_0x2a79f5){_0x3b7415['sendStatus'](0x194);}return _0x2a79f5;};}function handleError(_0x469124,_0xe97477){_0xe97477=_0xe97477||0x1f4;return function(_0x3dcfb0){logger['error'](_0x3dcfb0[_0x9493('0x23')]);if(_0x3dcfb0[_0x9493('0x24')]){delete _0x3dcfb0['name'];}_0x469124[_0x9493('0x1e')](_0xe97477)[_0x9493('0x25')](_0x3dcfb0);};}exports[_0x9493('0x26')]=function(_0x2e20ce,_0xecb59d){var _0x2cf11d={},_0x11aaac={},_0x128841={'count':0x0,'rows':[]};var _0x521cc8=_[_0x9493('0x27')](db['Automation'][_0x9493('0x28')],function(_0x3ca560){return{'name':_0x3ca560['fieldName'],'type':_0x3ca560[_0x9493('0x29')][_0x9493('0x2a')]};});_0x11aaac[_0x9493('0x2b')]=_[_0x9493('0x27')](_0x521cc8,_0x9493('0x24'));_0x11aaac[_0x9493('0x2c')]=_['keys'](_0x2e20ce['query']);_0x11aaac[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x11aaac[_0x9493('0x2b')],_0x11aaac['query']);_0x2cf11d['attributes']=_['intersection'](_0x11aaac[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x2f')]));_0x2cf11d[_0x9493('0x30')]=_0x2cf11d['attributes'][_0x9493('0x31')]?_0x2cf11d['attributes']:_0x11aaac[_0x9493('0x2b')];if(!_0x2e20ce[_0x9493('0x2c')]['hasOwnProperty']('nolimit')){_0x2cf11d[_0x9493('0x1c')]=qs[_0x9493('0x1c')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x1c')]);_0x2cf11d['offset']=qs[_0x9493('0x1a')](_0x2e20ce[_0x9493('0x2c')]['offset']);}_0x2cf11d['order']=qs[_0x9493('0x32')](_0x2e20ce[_0x9493('0x2c')][_0x9493('0x32')]);_0x2cf11d[_0x9493('0x33')]=qs['filters'](_['pick'](_0x2e20ce[_0x9493('0x2c')],_0x11aaac[_0x9493('0x2d')]),_0x521cc8);if(_0x2e20ce[_0x9493('0x2c')][_0x9493('0x34')]){_0x2cf11d['where']=_[_0x9493('0x35')](_0x2cf11d[_0x9493('0x33')],{'$or':_['map'](_0x521cc8,function(_0x1e1d19){if(_0x1e1d19[_0x9493('0x29')]!==_0x9493('0x36')){var _0x3ed288={};_0x3ed288[_0x1e1d19[_0x9493('0x24')]]={'$like':'%'+_0x2e20ce['query'][_0x9493('0x34')]+'%'};return _0x3ed288;}})});}_0x2cf11d=_[_0x9493('0x35')]({},_0x2cf11d,_0x2e20ce[_0x9493('0x37')]);var _0x3fb322={'where':_0x2cf11d[_0x9493('0x33')]};return db[_0x9493('0x38')][_0x9493('0x1d')](_0x3fb322)[_0x9493('0x22')](function(_0x3b8c2a){_0x128841[_0x9493('0x1d')]=_0x3b8c2a;if(_0x2e20ce[_0x9493('0x2c')][_0x9493('0x39')]){_0x2cf11d[_0x9493('0x3a')]=[{'all':!![]}];}return db[_0x9493('0x38')][_0x9493('0x3b')](_0x2cf11d);})['then'](function(_0xcb7d84){_0x128841[_0x9493('0x3c')]=_0xcb7d84;return _0x128841;})[_0x9493('0x22')](respondWithFilteredResult(_0xecb59d,_0x2cf11d))[_0x9493('0x3d')](handleError(_0xecb59d,null));};exports[_0x9493('0x3e')]=function(_0x4d6634,_0xa2af42){var _0x3cecd4={'raw':![],'where':{'id':_0x4d6634['params']['id']}},_0x41e5ef={};_0x41e5ef['model']=_[_0x9493('0x3f')](db[_0x9493('0x38')][_0x9493('0x28')]);_0x41e5ef[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x4d6634[_0x9493('0x2c')]);_0x41e5ef['filters']=_['intersection'](_0x41e5ef[_0x9493('0x2b')],_0x41e5ef[_0x9493('0x2c')]);_0x3cecd4['attributes']=_[_0x9493('0x2e')](_0x41e5ef[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x4d6634[_0x9493('0x2c')][_0x9493('0x2f')]));_0x3cecd4['attributes']=_0x3cecd4[_0x9493('0x30')][_0x9493('0x31')]?_0x3cecd4[_0x9493('0x30')]:_0x41e5ef['model'];if(_0x4d6634[_0x9493('0x2c')][_0x9493('0x39')]){_0x3cecd4[_0x9493('0x3a')]=[{'all':!![]}];}_0x3cecd4=_['merge']({},_0x3cecd4,_0x4d6634[_0x9493('0x37')]);return db[_0x9493('0x38')][_0x9493('0x40')](_0x3cecd4)[_0x9493('0x22')](handleEntityNotFound(_0xa2af42,null))[_0x9493('0x22')](respondWithResult(_0xa2af42,null))['catch'](handleError(_0xa2af42,null));};exports[_0x9493('0x41')]=function(_0x7e6449,_0x2e88dc){return db[_0x9493('0x38')][_0x9493('0x41')](_0x7e6449[_0x9493('0x42')],{})[_0x9493('0x22')](respondWithResult(_0x2e88dc,0xc9))['catch'](handleError(_0x2e88dc,null));};exports[_0x9493('0x21')]=function(_0x474bb9,_0x94f028){if(_0x474bb9[_0x9493('0x42')]['id']){delete _0x474bb9[_0x9493('0x42')]['id'];}return db['Automation']['find']({'where':{'id':_0x474bb9[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x94f028,null))['then'](saveUpdates(_0x474bb9['body'],null))[_0x9493('0x22')](respondWithResult(_0x94f028,null))['catch'](handleError(_0x94f028,null));};exports[_0x9493('0x44')]=function(_0x3ca018,_0x5165e6){return db[_0x9493('0x38')][_0x9493('0x40')]({'where':{'id':_0x3ca018[_0x9493('0x43')]['id']}})['then'](handleEntityNotFound(_0x5165e6,null))[_0x9493('0x22')](removeEntity(_0x5165e6,null))[_0x9493('0x3d')](handleError(_0x5165e6,null));};exports['addConditions']=function(_0x442a0a,_0x47db7b,_0x3b5ba4){return db[_0x9493('0x45')]['find']({'where':{'id':_0x442a0a[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x47db7b,null))[_0x9493('0x22')](function(_0x53fe16){if(_0x53fe16){return _0x53fe16[_0x9493('0x46')](_0x442a0a[_0x9493('0x42')][_0x9493('0x47')],_['omit'](_0x442a0a[_0x9493('0x42')],[_0x9493('0x47'),'id'])||{});}})[_0x9493('0x22')](respondWithResult(_0x47db7b,null))['catch'](handleError(_0x47db7b,null));};exports['getConditions']=function(_0x44e211,_0x5bdbaa,_0x2320c9){var _0x2acdd0={};var _0x2d311b={};var _0x5eeb08;var _0x3df333;return db['Automation'][_0x9493('0x48')]({'where':{'id':_0x44e211[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x5bdbaa,null))[_0x9493('0x22')](function(_0x15f892){if(_0x15f892){_0x5eeb08=_0x15f892;_0x2d311b[_0x9493('0x2b')]=_[_0x9493('0x3f')](db['Condition'][_0x9493('0x28')]);_0x2d311b[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x44e211[_0x9493('0x2c')]);_0x2d311b[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x2d311b[_0x9493('0x2b')],_0x2d311b[_0x9493('0x2c')]);_0x2acdd0[_0x9493('0x30')]=_['intersection'](_0x2d311b['model'],qs[_0x9493('0x2f')](_0x44e211[_0x9493('0x2c')][_0x9493('0x2f')]));_0x2acdd0[_0x9493('0x30')]=_0x2acdd0[_0x9493('0x30')][_0x9493('0x31')]?_0x2acdd0[_0x9493('0x30')]:_0x2d311b[_0x9493('0x2b')];_0x2acdd0[_0x9493('0x49')]=qs[_0x9493('0x32')](_0x44e211[_0x9493('0x2c')][_0x9493('0x32')]);_0x2acdd0['where']=qs[_0x9493('0x2d')](_[_0x9493('0x4a')](_0x44e211[_0x9493('0x2c')],_0x2d311b[_0x9493('0x2d')]));if(_0x44e211[_0x9493('0x2c')][_0x9493('0x34')]){_0x2acdd0[_0x9493('0x33')]=_[_0x9493('0x35')](_0x2acdd0[_0x9493('0x33')],{'$or':_['map'](_0x2acdd0['attributes'],function(_0x2ff8d8){var _0xf4d0a8={};_0xf4d0a8[_0x2ff8d8]={'$like':'%'+_0x44e211[_0x9493('0x2c')][_0x9493('0x34')]+'%'};return _0xf4d0a8;})});}_0x2acdd0=_[_0x9493('0x35')]({},_0x2acdd0,_0x44e211[_0x9493('0x37')]);return _0x5eeb08[_0x9493('0x4b')](_0x2acdd0);}})[_0x9493('0x22')](function(_0x272452){if(_0x272452){_0x3df333=_0x272452[_0x9493('0x31')];if(!_0x44e211[_0x9493('0x2c')][_0x9493('0x4c')](_0x9493('0x4d'))){_0x2acdd0[_0x9493('0x1c')]=qs['limit'](_0x44e211[_0x9493('0x2c')][_0x9493('0x1c')]);_0x2acdd0[_0x9493('0x1a')]=qs['offset'](_0x44e211['query'][_0x9493('0x1a')]);}return _0x5eeb08[_0x9493('0x4b')](_0x2acdd0);}})[_0x9493('0x22')](function(_0x588c52){if(_0x588c52){return _0x588c52?{'count':_0x3df333,'rows':_0x588c52}:null;}})[_0x9493('0x22')](respondWithResult(_0x5bdbaa,null))[_0x9493('0x3d')](handleError(_0x5bdbaa,null));};exports[_0x9493('0x4e')]=function(_0x2aeca3,_0x4dd1cd,_0xafb51){return db[_0x9493('0x4f')][_0x9493('0x40')]({'where':{'id':_0x2aeca3[_0x9493('0x43')]['id']}})[_0x9493('0x22')](handleEntityNotFound(_0x4dd1cd,null))[_0x9493('0x22')](function(_0x4ff56b){if(_0x4ff56b){return _0x4ff56b[_0x9493('0x4e')](_0x2aeca3[_0x9493('0x42')][_0x9493('0x47')],_[_0x9493('0x50')](_0x2aeca3[_0x9493('0x42')],['ids','id'])||{});}})[_0x9493('0x22')](respondWithResult(_0x4dd1cd,null))[_0x9493('0x3d')](handleError(_0x4dd1cd,null));};exports[_0x9493('0x51')]=function(_0x25b5c4,_0x10e7ca,_0x4dc54c){var _0x57cccd={};var _0x4eeadf={};var _0x5702da;var _0xa4c8d0;return db['Automation'][_0x9493('0x48')]({'where':{'id':_0x25b5c4['params']['id']}})['then'](handleEntityNotFound(_0x10e7ca,null))[_0x9493('0x22')](function(_0x24154e){if(_0x24154e){_0x5702da=_0x24154e;_0x4eeadf[_0x9493('0x2b')]=_['keys'](db[_0x9493('0x4f')][_0x9493('0x28')]);_0x4eeadf[_0x9493('0x2c')]=_[_0x9493('0x3f')](_0x25b5c4[_0x9493('0x2c')]);_0x4eeadf[_0x9493('0x2d')]=_[_0x9493('0x2e')](_0x4eeadf[_0x9493('0x2b')],_0x4eeadf[_0x9493('0x2c')]);_0x57cccd[_0x9493('0x30')]=_[_0x9493('0x2e')](_0x4eeadf[_0x9493('0x2b')],qs[_0x9493('0x2f')](_0x25b5c4[_0x9493('0x2c')]['fields']));_0x57cccd[_0x9493('0x30')]=_0x57cccd['attributes'][_0x9493('0x31')]?_0x57cccd[_0x9493('0x30')]:_0x4eeadf['model'];_0x57cccd[_0x9493('0x49')]=qs[_0x9493('0x32')](_0x25b5c4['query']['sort']);_0x57cccd['where']=qs[_0x9493('0x2d')](_[_0x9493('0x4a')](_0x25b5c4['query'],_0x4eeadf['filters']));if(_0x25b5c4[_0x9493('0x2c')]['filter']){_0x57cccd[_0x9493('0x33')]=_[_0x9493('0x35')](_0x57cccd[_0x9493('0x33')],{'$or':_[_0x9493('0x27')](_0x57cccd[_0x9493('0x30')],function(_0x51474f){var _0x1c349e={};_0x1c349e[_0x51474f]={'$like':'%'+_0x25b5c4[_0x9493('0x2c')]['filter']+'%'};return _0x1c349e;})});}_0x57cccd=_[_0x9493('0x35')]({},_0x57cccd,_0x25b5c4['options']);return _0x5702da[_0x9493('0x51')](_0x57cccd);}})[_0x9493('0x22')](function(_0x559d52){if(_0x559d52){_0xa4c8d0=_0x559d52[_0x9493('0x31')];if(!_0x25b5c4[_0x9493('0x2c')][_0x9493('0x4c')]('nolimit')){_0x57cccd[_0x9493('0x1c')]=qs[_0x9493('0x1c')](_0x25b5c4['query'][_0x9493('0x1c')]);_0x57cccd[_0x9493('0x1a')]=qs[_0x9493('0x1a')](_0x25b5c4[_0x9493('0x2c')][_0x9493('0x1a')]);}return _0x5702da[_0x9493('0x51')](_0x57cccd);}})['then'](function(_0x4c5e84){if(_0x4c5e84){return _0x4c5e84?{'count':_0xa4c8d0,'rows':_0x4c5e84}:null;}})[_0x9493('0x22')](respondWithResult(_0x10e7ca,null))[_0x9493('0x3d')](handleError(_0x10e7ca,null));};
\ No newline at end of file
index a785470..0c40237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x624f=['util','../../config/logger','moment','bluebird','request-promise','rimraf','exports','Automation','tools_automations'];(function(_0x1daeaa,_0x297e73){var _0x2a6032=function(_0x11897b){while(--_0x11897b){_0x1daeaa['push'](_0x1daeaa['shift']());}};_0x2a6032(++_0x297e73);}(_0x624f,0x1c2));var _0xf624=function(_0x476c85,_0x541895){_0x476c85=_0x476c85-0x0;var _0xc8f22a=_0x624f[_0x476c85];return _0xc8f22a;};'use strict';var _=require('lodash');var util=require(_0xf624('0x0'));var logger=require(_0xf624('0x1'))('api');var moment=require(_0xf624('0x2'));var BPromise=require(_0xf624('0x3'));var rp=require(_0xf624('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf624('0x5'));var config=require('../../config/environment');var attributes=require('./automation.attributes');module[_0xf624('0x6')]=function(_0x114a20,_0x5a5ca5){return _0x114a20['define'](_0xf624('0x7'),attributes,{'tableName':_0xf624('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa5ef=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./automation.attributes','define','Automation','tools_automations'];(function(_0x59162a,_0x10e547){var _0x35e50d=function(_0x578425){while(--_0x578425){_0x59162a['push'](_0x59162a['shift']());}};_0x35e50d(++_0x10e547);}(_0xa5ef,0x114));var _0xfa5e=function(_0x490be3,_0xf0fca3){_0x490be3=_0x490be3-0x0;var _0x3f5140=_0xa5ef[_0x490be3];return _0x3f5140;};'use strict';var _=require(_0xfa5e('0x0'));var util=require(_0xfa5e('0x1'));var logger=require(_0xfa5e('0x2'))(_0xfa5e('0x3'));var moment=require('moment');var BPromise=require(_0xfa5e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xfa5e('0x5'));var rimraf=require(_0xfa5e('0x6'));var config=require(_0xfa5e('0x7'));var attributes=require(_0xfa5e('0x8'));module['exports']=function(_0x53a5fc,_0x2dd856){return _0x53a5fc[_0xfa5e('0x9')](_0xfa5e('0xa'),attributes,{'tableName':_0xfa5e('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6ad9781..bf29e9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd983=['randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Automation,\x20%s,\x20%s','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','util','moment','bluebird'];(function(_0x434b80,_0x1e25cd){var _0x155c16=function(_0x2169cf){while(--_0x2169cf){_0x434b80['push'](_0x434b80['shift']());}};_0x155c16(++_0x1e25cd);}(_0xd983,0x1df));var _0x3d98=function(_0x1c0fe3,_0x4bc5ee){_0x1c0fe3=_0x1c0fe3-0x0;var _0x3061aa=_0xd983[_0x1c0fe3];return _0x3061aa;};'use strict';var _=require(_0x3d98('0x0'));var util=require(_0x3d98('0x1'));var moment=require(_0x3d98('0x2'));var BPromise=require(_0x3d98('0x3'));var rs=require(_0x3d98('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3d98('0x5'));var logger=require(_0x3d98('0x6'))(_0x3d98('0x7'));var config=require(_0x3d98('0x8'));var jayson=require(_0x3d98('0x9'));var client=jayson[_0x3d98('0xa')][_0x3d98('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5452ef,_0x3f5c17,_0x270312){return new BPromise(function(_0xd1051d,_0x216a00){return client[_0x3d98('0xc')](_0x5452ef,_0x270312)[_0x3d98('0xd')](function(_0x274a9f){logger[_0x3d98('0xe')](_0x3d98('0xf'),_0x3f5c17,'request\x20sent');logger['debug'](_0x3d98('0x10'),_0x3f5c17,_0x3d98('0x11'),JSON[_0x3d98('0x12')](_0x274a9f));if(_0x274a9f[_0x3d98('0x13')]){if(_0x274a9f['error']['code']===0x1f4){logger[_0x3d98('0x13')](_0x3d98('0xf'),_0x3f5c17,_0x274a9f[_0x3d98('0x13')][_0x3d98('0x14')]);return _0x216a00(_0x274a9f['error'][_0x3d98('0x14')]);}logger[_0x3d98('0x13')]('Automation,\x20%s,\x20%s',_0x3f5c17,_0x274a9f[_0x3d98('0x13')]['message']);return _0xd1051d(_0x274a9f[_0x3d98('0x13')]['message']);}else{logger['info'](_0x3d98('0xf'),_0x3f5c17,_0x3d98('0x11'));_0xd1051d(_0x274a9f[_0x3d98('0x15')]['message']);}})[_0x3d98('0x16')](function(_0x372f29){logger['error'](_0x3d98('0xf'),_0x3f5c17,_0x372f29);_0x216a00(_0x372f29);});});}
\ No newline at end of file
+var _0x7524=['../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Automation,\x20%s,\x20%s','debug','Automation,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','moment','randomstring','ioredis'];(function(_0x23c23c,_0x5ee1ff){var _0xf99e32=function(_0x16c73f){while(--_0x16c73f){_0x23c23c['push'](_0x23c23c['shift']());}};_0xf99e32(++_0x5ee1ff);}(_0x7524,0xce));var _0x4752=function(_0x1342d8,_0x8106de){_0x1342d8=_0x1342d8-0x0;var _0x961b01=_0x7524[_0x1342d8];return _0x961b01;};'use strict';var _=require('lodash');var util=require(_0x4752('0x0'));var moment=require(_0x4752('0x1'));var BPromise=require('bluebird');var rs=require(_0x4752('0x2'));var fs=require('fs');var Redis=require(_0x4752('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4752('0x4'))('rpc');var config=require(_0x4752('0x5'));var jayson=require(_0x4752('0x6'));var client=jayson[_0x4752('0x7')][_0x4752('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x104962,_0x5b98c0,_0x1e76cf){return new BPromise(function(_0x1cbf34,_0x59477c){return client['request'](_0x104962,_0x1e76cf)[_0x4752('0x9')](function(_0x45e0ff){logger[_0x4752('0xa')](_0x4752('0xb'),_0x5b98c0,'request\x20sent');logger[_0x4752('0xc')](_0x4752('0xd'),_0x5b98c0,_0x4752('0xe'),JSON[_0x4752('0xf')](_0x45e0ff));if(_0x45e0ff[_0x4752('0x10')]){if(_0x45e0ff['error'][_0x4752('0x11')]===0x1f4){logger[_0x4752('0x10')](_0x4752('0xb'),_0x5b98c0,_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);return _0x59477c(_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);}logger['error'](_0x4752('0xb'),_0x5b98c0,_0x45e0ff['error'][_0x4752('0x12')]);return _0x1cbf34(_0x45e0ff[_0x4752('0x10')][_0x4752('0x12')]);}else{logger[_0x4752('0xa')](_0x4752('0xb'),_0x5b98c0,_0x4752('0xe'));_0x1cbf34(_0x45e0ff[_0x4752('0x13')]['message']);}})[_0x4752('0x14')](function(_0x1dad7c){logger['error'](_0x4752('0xb'),_0x5b98c0,_0x1dad7c);_0x59477c(_0x1dad7c);});});}
\ No newline at end of file
index 0919644..06d3ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5a7=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','index','isAuthenticated','show','getConditions','getActions','post','/:id/conditions','addConditions','/:id/actions','addActions','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router'];(function(_0x3aa1c7,_0x345b06){var _0x3c1bb0=function(_0xfef58f){while(--_0xfef58f){_0x3aa1c7['push'](_0x3aa1c7['shift']());}};_0x3c1bb0(++_0x345b06);}(_0xf5a7,0x133));var _0x7f5a=function(_0x1df653,_0x28ec94){_0x1df653=_0x1df653-0x0;var _0x3ae43c=_0xf5a7[_0x1df653];return _0x3ae43c;};'use strict';var multer=require(_0x7f5a('0x0'));var util=require(_0x7f5a('0x1'));var path=require('path');var timeout=require(_0x7f5a('0x2'));var express=require(_0x7f5a('0x3'));var router=express[_0x7f5a('0x4')]();var fs_extra=require(_0x7f5a('0x5'));var auth=require(_0x7f5a('0x6'));var interaction=require(_0x7f5a('0x7'));var config=require(_0x7f5a('0x8'));var controller=require(_0x7f5a('0x9'));router[_0x7f5a('0xa')]('/',auth['isAuthenticated'](),controller[_0x7f5a('0xb')]);router[_0x7f5a('0xa')]('/:id',auth[_0x7f5a('0xc')](),controller[_0x7f5a('0xd')]);router[_0x7f5a('0xa')]('/:id/conditions',auth['isAuthenticated'](),controller[_0x7f5a('0xe')]);router[_0x7f5a('0xa')]('/:id/actions',auth['isAuthenticated'](),controller[_0x7f5a('0xf')]);router[_0x7f5a('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7f5a('0x10')](_0x7f5a('0x11'),auth[_0x7f5a('0xc')](),controller[_0x7f5a('0x12')]);router[_0x7f5a('0x10')](_0x7f5a('0x13'),auth['isAuthenticated'](),controller[_0x7f5a('0x14')]);router[_0x7f5a('0x15')](_0x7f5a('0x16'),auth[_0x7f5a('0xc')](),controller[_0x7f5a('0x17')]);router[_0x7f5a('0x18')](_0x7f5a('0x16'),auth[_0x7f5a('0xc')](),controller['destroy']);module[_0x7f5a('0x19')]=router;
\ No newline at end of file
+var _0xc300=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','/:id/actions','getActions','post','addActions','put','delete','/:id','destroy','exports','multer','util'];(function(_0x4243df,_0x4a1785){var _0xc9b7ff=function(_0x8e9271){while(--_0x8e9271){_0x4243df['push'](_0x4243df['shift']());}};_0xc9b7ff(++_0x4a1785);}(_0xc300,0x132));var _0x0c30=function(_0x380d16,_0x54254f){_0x380d16=_0x380d16-0x0;var _0x74c950=_0xc300[_0x380d16];return _0x74c950;};'use strict';var multer=require(_0x0c30('0x0'));var util=require(_0x0c30('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0c30('0x2'));var router=express[_0x0c30('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0c30('0x4'));var interaction=require(_0x0c30('0x5'));var config=require(_0x0c30('0x6'));var controller=require(_0x0c30('0x7'));router[_0x0c30('0x8')]('/',auth[_0x0c30('0x9')](),controller[_0x0c30('0xa')]);router[_0x0c30('0x8')]('/:id',auth[_0x0c30('0x9')](),controller[_0x0c30('0xb')]);router['get'](_0x0c30('0xc'),auth[_0x0c30('0x9')](),controller['getConditions']);router[_0x0c30('0x8')](_0x0c30('0xd'),auth[_0x0c30('0x9')](),controller[_0x0c30('0xe')]);router[_0x0c30('0xf')]('/',auth['isAuthenticated'](),controller['create']);router[_0x0c30('0xf')](_0x0c30('0xc'),auth['isAuthenticated'](),controller['addConditions']);router[_0x0c30('0xf')](_0x0c30('0xd'),auth[_0x0c30('0x9')](),controller[_0x0c30('0x10')]);router[_0x0c30('0x11')]('/:id',auth[_0x0c30('0x9')](),controller['update']);router[_0x0c30('0x12')](_0x0c30('0x13'),auth[_0x0c30('0x9')](),controller[_0x0c30('0x14')]);module[_0x0c30('0x15')]=router;
\ No newline at end of file
index 64add0f..8928d0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6257=['Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','STRING','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','always','onlyIfOpen','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','ENUM','DESC','ASC','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x6257,0x1d4));var _0x7625=function(_0xa10279,_0x10c119){_0xa10279=_0xa10279-0x0;var _0x261ac0=_0x6257[_0xa10279];return _0x261ac0;};'use strict';var Sequelize=require(_0x7625('0x0'));module['exports']={'name':{'type':Sequelize[_0x7625('0x1')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x7625('0x2')),'allowNull':![],'defaultValue':_0x7625('0x2')},'description':{'type':Sequelize[_0x7625('0x1')]},'active':{'type':Sequelize[_0x7625('0x3')],'defaultValue':0x0,'comment':_0x7625('0x4')},'limitCalls':{'type':Sequelize[_0x7625('0x5')](0x4)[_0x7625('0x6')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x7625('0x7')},'dialOriginateCallerIdName':{'type':Sequelize[_0x7625('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x7625('0x1')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7625('0x8')},'dialCongestionMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7625('0x9')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x7625('0x5')](0x5)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)[_0x7625('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0x7625('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7625('0x6')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7625('0xa')},'dialGlobalMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x7625('0xb')},'dialTimezone':{'type':Sequelize[_0x7625('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x7625('0x1')],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x7625('0xc'),'never',_0x7625('0xd')),'defaultValue':_0x7625('0xc')},'dialAMDActive':{'type':Sequelize[_0x7625('0x3')],'defaultValue':0x0,'comment':'Active/Disactive\x20AMD'},'dialAMDInitialSilence':{'type':Sequelize['INTEGER'](0x9)[_0x7625('0x6')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x7625('0xe')},'dialAMDGreeting':{'type':Sequelize[_0x7625('0x5')](0x9)[_0x7625('0x6')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x7625('0xf')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x7625('0x5')](0x9)[_0x7625('0x6')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x7625('0x5')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7625('0x10')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x7625('0x11')},'dialAMDBetweenWordsSilence':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x7625('0x12')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x7625('0x5')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x7625('0x13')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x7625('0x5')](0x5)[_0x7625('0x6')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0x7625('0x5')](0x9)[_0x7625('0x6')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x7625('0x14')},'dialOrderByScheduledAt':{'type':Sequelize[_0x7625('0x15')](_0x7625('0x16'),_0x7625('0x17')),'defaultValue':_0x7625('0x16')},'dialPrefix':{'type':Sequelize[_0x7625('0x1')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x7625('0x5')](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Cut\x20Digit\x20(min:1,\x20max:15)'},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)[_0x7625('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)'},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x7625('0x5')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7625('0x18')},'dialDropMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7625('0x19')},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAbandonedMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)[_0x7625('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7625('0x1a')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x7625('0x5')](0x5)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7625('0x1b')},'dialMachineMaxRetry':{'type':Sequelize[_0x7625('0x5')](0x3)[_0x7625('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7625('0x1c')},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x7625('0x6')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x7625('0x1d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x7625('0x5')](0x5)[_0x7625('0x6')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x7625('0x1e')}};
\ No newline at end of file
+var _0x578f=['Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','name','ENUM','ivr','STRING','BOOLEAN','Active/Disactive\x20Campaign','UNSIGNED','Max\x20200\x20calls.','INTEGER','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Maximum\x20Number\x20Of\x20Words','#AMD\x20Maximum\x20Word\x20Length','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)'];(function(_0x5d7aff,_0x165908){var _0x4ab28a=function(_0x4577fe){while(--_0x4577fe){_0x5d7aff['push'](_0x5d7aff['shift']());}};_0x4ab28a(++_0x165908);}(_0x578f,0x19a));var _0xf578=function(_0x17d035,_0x2d4c8c){_0x17d035=_0x17d035-0x0;var _0x1cbb92=_0x578f[_0x17d035];return _0x1cbb92;};'use strict';var Sequelize=require(_0xf578('0x0'));module[_0xf578('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xf578('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0xf578('0x3')]('ivr'),'allowNull':![],'defaultValue':_0xf578('0x4')},'description':{'type':Sequelize[_0xf578('0x5')]},'active':{'type':Sequelize[_0xf578('0x6')],'defaultValue':0x0,'comment':_0xf578('0x7')},'limitCalls':{'type':Sequelize['INTEGER'](0x4)[_0xf578('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xf578('0x9')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xf578('0x5')]},'dialOriginateTimeout':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0xb')},'dialCongestionMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialBusyMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Busy\x20Retry\x20(min:1,\x20max:999)'},'dialBusyRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0xc')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'comment':'#NoAnswer\x20Retry\x20(min:1,\x20max:999)'},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0xd')},'dialGlobalMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xf578('0xe')},'dialTimezone':{'type':Sequelize['STRING'],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xf578('0x5')],'defaultValue':_0xf578('0xf')},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xf578('0x10'),_0xf578('0x11'),_0xf578('0x12')),'defaultValue':_0xf578('0x10')},'dialAMDActive':{'type':Sequelize[_0xf578('0x6')],'defaultValue':0x0,'comment':_0xf578('0x13')},'dialAMDInitialSilence':{'type':Sequelize[_0xf578('0xa')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xf578('0x14')},'dialAMDGreeting':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xf578('0x15')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xf578('0x16')},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf578('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0xf578('0xa')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xf578('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize['INTEGER'](0x9)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xf578('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize[_0xf578('0xa')](0x9)[_0xf578('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xf578('0x1a')},'dialOrderByScheduledAt':{'type':Sequelize[_0xf578('0x3')](_0xf578('0x1b'),_0xf578('0x1c')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0xf578('0x5')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf578('0x1d')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0xf578('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xf578('0x1e')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x1f')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x20')},'dialDropMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x21')},'dialDropRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x22')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x23')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x24')},'dialMachineMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0xf578('0xa')](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x25')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xf578('0xa')](0x3)[_0xf578('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xf578('0x26')},'dialAgentRejectRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xf578('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xf578('0x27')}};
\ No newline at end of file
index 5679455..59c6676 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d2=['Campaign','rawAttributes','fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','include','findAll','rows','catch','show','params','includeAll','create','user','role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','update','getHoppers','CmHopper','CampaignId','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','addLists','format','ids','dialCheckDuplicateType','always','insert','into','fromQuery','phone','ContactId','ListId','select','field','NOW()','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','scheduledAt','cm_hopper','phone\x20IS\x20NOT\x20NULL','cm_hopper_additional_phones','OrderBy','ci.item','ci.OrderBY','join','h.ContactId\x20=\x20ci.CmContactId','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','destroy','getBlackLists','addBlackLists','YYYY-MM-DD\x20HH:mm:ss','spread','cm_hopper_black','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','limit','undefined','count','offset','Content-Range','apply','save','then','get','IvrCampaigns','UserProfileResource','error','stack','name','send','index','map'];(function(_0x2d58ca,_0x436139){var _0x12bf32=function(_0x4c0f85){while(--_0x4c0f85){_0x2d58ca['push'](_0x2d58ca['shift']());}};_0x12bf32(++_0x436139);}(_0x76d2,0xf8));var _0x276d=function(_0x1a9651,_0x46e9b7){_0x1a9651=_0x1a9651-0x0;var _0x905474=_0x76d2[_0x1a9651];return _0x905474;};'use strict';var emlformat=require(_0x276d('0x0'));var rimraf=require(_0x276d('0x1'));var zipdir=require(_0x276d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x276d('0x3'));var moment=require(_0x276d('0x4'));var BPromise=require(_0x276d('0x5'));var Mustache=require(_0x276d('0x6'));var util=require('util');var path=require('path');var sox=require(_0x276d('0x7'));var csv=require(_0x276d('0x8'));var ejs=require(_0x276d('0x9'));var fs=require('fs');var fs_extra=require(_0x276d('0xa'));var _=require(_0x276d('0xb'));var squel=require(_0x276d('0xc'));var crypto=require(_0x276d('0xd'));var jsforce=require(_0x276d('0xe'));var deskjs=require(_0x276d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x276d('0x10'));var Redis=require(_0x276d('0x11'));var authService=require(_0x276d('0x12'));var qs=require(_0x276d('0x13'));var as=require(_0x276d('0x14'));var hardwareService=require(_0x276d('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x276d('0x16'));var config=require(_0x276d('0x17'));var licenseUtil=require(_0x276d('0x18'));var db=require(_0x276d('0x19'))['db'];function respondWithStatusCode(_0x2e107c,_0x2e4374){_0x2e4374=_0x2e4374||0xcc;return function(_0x4b9f5f){if(_0x4b9f5f){return _0x2e107c['sendStatus'](_0x2e4374);}return _0x2e107c[_0x276d('0x1a')](_0x2e4374)[_0x276d('0x1b')]();};}function respondWithResult(_0x3bdd13,_0x377540){_0x377540=_0x377540||0xc8;return function(_0x3166a2){if(_0x3166a2){return _0x3bdd13[_0x276d('0x1a')](_0x377540)[_0x276d('0x1c')](_0x3166a2);}};}function respondWithFilteredResult(_0x2c309f,_0x5b23b7){return function(_0x2165c6){if(_0x2165c6){var _0x43efeb=typeof _0x5b23b7['offset']==='undefined'&&typeof _0x5b23b7[_0x276d('0x1d')]===_0x276d('0x1e');var _0x4d9859=_0x2165c6[_0x276d('0x1f')];var _0x5d96cb=_0x43efeb?0x0:_0x5b23b7['offset'];var _0xb75b36=_0x43efeb?_0x2165c6['count']:_0x5b23b7[_0x276d('0x20')]+_0x5b23b7[_0x276d('0x1d')];var _0x42d335;if(_0xb75b36>=_0x4d9859){_0xb75b36=_0x4d9859;_0x42d335=0xc8;}else{_0x42d335=0xce;}_0x2c309f[_0x276d('0x1a')](_0x42d335);return _0x2c309f['set'](_0x276d('0x21'),_0x5d96cb+'-'+_0xb75b36+'/'+_0x4d9859)[_0x276d('0x1c')](_0x2165c6);}return null;};}function patchUpdates(_0x54565b){return function(_0x5e8fee){try{jsonpatch[_0x276d('0x22')](_0x5e8fee,_0x54565b,!![]);}catch(_0xead902){return BPromise['reject'](_0xead902);}return _0x5e8fee[_0x276d('0x23')]();};}function saveUpdates(_0x1f3545,_0x57d4b7){return function(_0x284160){if(_0x284160){return _0x284160['update'](_0x1f3545)[_0x276d('0x24')](function(_0x152195){return _0x152195;});}return null;};}function removeEntity(_0x5f0561,_0x476671){return function(_0x3edb3b){if(_0x3edb3b){return _0x3edb3b['destroy']()['then'](function(){var _0x991d5d=_0x3edb3b[_0x276d('0x25')]({'plain':!![]});var _0x121e75=_0x276d('0x26');return db[_0x276d('0x27')]['destroy']({'where':{'type':_0x121e75,'resourceId':_0x991d5d['id']}})[_0x276d('0x24')](function(){return _0x3edb3b;});})['then'](function(){_0x5f0561[_0x276d('0x1a')](0xcc)[_0x276d('0x1b')]();});}};}function handleEntityNotFound(_0x54c37c,_0xaa77c7){return function(_0x596248){if(!_0x596248){_0x54c37c['sendStatus'](0x194);}return _0x596248;};}function handleError(_0x5dec41,_0x235509){_0x235509=_0x235509||0x1f4;return function(_0x3226f5){logger[_0x276d('0x28')](_0x3226f5[_0x276d('0x29')]);if(_0x3226f5['name']){delete _0x3226f5[_0x276d('0x2a')];}_0x5dec41[_0x276d('0x1a')](_0x235509)[_0x276d('0x2b')](_0x3226f5);};}exports[_0x276d('0x2c')]=function(_0x29755c,_0x251135){var _0x1102f7={},_0x4b9966={},_0x168406={'count':0x0,'rows':[]};var _0x3fb13b=_[_0x276d('0x2d')](db[_0x276d('0x2e')][_0x276d('0x2f')],function(_0x335372){return{'name':_0x335372[_0x276d('0x30')],'type':_0x335372['type'][_0x276d('0x31')]};});_0x4b9966[_0x276d('0x32')]=_[_0x276d('0x2d')](_0x3fb13b,_0x276d('0x2a'));_0x4b9966['query']=_[_0x276d('0x33')](_0x29755c['query']);_0x4b9966[_0x276d('0x34')]=_[_0x276d('0x35')](_0x4b9966[_0x276d('0x32')],_0x4b9966[_0x276d('0x36')]);_0x1102f7[_0x276d('0x37')]=_[_0x276d('0x35')](_0x4b9966[_0x276d('0x32')],qs[_0x276d('0x38')](_0x29755c['query']['fields']));_0x1102f7[_0x276d('0x37')]=_0x1102f7['attributes'][_0x276d('0x39')]?_0x1102f7[_0x276d('0x37')]:_0x4b9966[_0x276d('0x32')];if(!_0x29755c[_0x276d('0x36')][_0x276d('0x3a')](_0x276d('0x3b'))){_0x1102f7[_0x276d('0x1d')]=qs['limit'](_0x29755c['query'][_0x276d('0x1d')]);_0x1102f7[_0x276d('0x20')]=qs['offset'](_0x29755c['query'][_0x276d('0x20')]);}_0x1102f7[_0x276d('0x3c')]=qs['sort'](_0x29755c[_0x276d('0x36')][_0x276d('0x3d')]);_0x1102f7[_0x276d('0x3e')]=qs[_0x276d('0x34')](_[_0x276d('0x3f')](_0x29755c[_0x276d('0x36')],_0x4b9966['filters']),_0x3fb13b);if(_0x29755c[_0x276d('0x36')][_0x276d('0x40')]){_0x1102f7['where']=_['merge'](_0x1102f7['where'],{'$or':_[_0x276d('0x2d')](_0x3fb13b,function(_0x4b9c99){if(_0x4b9c99['type']!=='VIRTUAL'){var _0x1390fa={};_0x1390fa[_0x4b9c99[_0x276d('0x2a')]]={'$like':'%'+_0x29755c[_0x276d('0x36')][_0x276d('0x40')]+'%'};return _0x1390fa;}})});}_0x1102f7=_[_0x276d('0x41')]({},_0x1102f7,_0x29755c[_0x276d('0x42')]);var _0xb5c0c7={'where':_0x1102f7[_0x276d('0x3e')]};return db[_0x276d('0x2e')][_0x276d('0x1f')](_0xb5c0c7)[_0x276d('0x24')](function(_0x117f0f){_0x168406[_0x276d('0x1f')]=_0x117f0f;if(_0x29755c[_0x276d('0x36')]['includeAll']){_0x1102f7[_0x276d('0x43')]=[{'all':!![]}];}return db[_0x276d('0x2e')][_0x276d('0x44')](_0x1102f7);})[_0x276d('0x24')](function(_0x8ef582){_0x168406[_0x276d('0x45')]=_0x8ef582;return _0x168406;})[_0x276d('0x24')](respondWithFilteredResult(_0x251135,_0x1102f7))[_0x276d('0x46')](handleError(_0x251135,null));};exports[_0x276d('0x47')]=function(_0x5d780e,_0x32513e){var _0x3173a4={'raw':![],'where':{'id':_0x5d780e[_0x276d('0x48')]['id']}},_0x318402={};_0x318402['model']=_[_0x276d('0x33')](db[_0x276d('0x2e')][_0x276d('0x2f')]);_0x318402[_0x276d('0x36')]=_[_0x276d('0x33')](_0x5d780e[_0x276d('0x36')]);_0x318402['filters']=_[_0x276d('0x35')](_0x318402['model'],_0x318402[_0x276d('0x36')]);_0x3173a4[_0x276d('0x37')]=_['intersection'](_0x318402[_0x276d('0x32')],qs[_0x276d('0x38')](_0x5d780e['query'][_0x276d('0x38')]));_0x3173a4[_0x276d('0x37')]=_0x3173a4['attributes'][_0x276d('0x39')]?_0x3173a4[_0x276d('0x37')]:_0x318402[_0x276d('0x32')];if(_0x5d780e[_0x276d('0x36')][_0x276d('0x49')]){_0x3173a4['include']=[{'all':!![]}];}_0x3173a4=_[_0x276d('0x41')]({},_0x3173a4,_0x5d780e[_0x276d('0x42')]);return db[_0x276d('0x2e')]['find'](_0x3173a4)[_0x276d('0x24')](handleEntityNotFound(_0x32513e,null))[_0x276d('0x24')](respondWithResult(_0x32513e,null))[_0x276d('0x46')](handleError(_0x32513e,null));};exports['create']=function(_0x28659a,_0x1642d7){return db[_0x276d('0x2e')][_0x276d('0x4a')](_0x28659a['body'],{})['then'](function(_0x44f825){var _0x27ed2a=_0x28659a[_0x276d('0x4b')][_0x276d('0x25')]({'plain':!![]});if(!_0x27ed2a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x27ed2a[_0x276d('0x4c')]==='user'){var _0x5d07e1=_0x44f825['get']({'plain':!![]});var _0x525c45=_0x276d('0x26');return db[_0x276d('0x4d')][_0x276d('0x4e')]({'where':{'name':_0x525c45,'userProfileId':_0x27ed2a['userProfileId']},'raw':!![]})['then'](function(_0x50b77e){if(_0x50b77e&&_0x50b77e[_0x276d('0x4f')]===0x0){return db[_0x276d('0x27')][_0x276d('0x4a')]({'name':_0x5d07e1[_0x276d('0x2a')],'resourceId':_0x5d07e1['id'],'type':_0x50b77e['name'],'sectionId':_0x50b77e['id']},{})['then'](function(){return _0x44f825;});}else{return _0x44f825;}})['catch'](function(_0x21d079){logger[_0x276d('0x28')](_0x276d('0x50'),_0x21d079);throw _0x21d079;});}return _0x44f825;})[_0x276d('0x24')](respondWithResult(_0x1642d7,0xc9))['catch'](handleError(_0x1642d7,null));};exports[_0x276d('0x51')]=function(_0x2be3ef,_0x3298d1){var _0x3702e5={'where':{'id':_0x2be3ef[_0x276d('0x48')]['id']}},_0x2d2373={};_0x2d2373[_0x276d('0x32')]=_[_0x276d('0x33')](db['Campaign']['rawAttributes']);_0x3702e5[_0x276d('0x37')]=_['intersection'](_0x2d2373[_0x276d('0x32')],qs[_0x276d('0x38')](_0x2be3ef[_0x276d('0x36')][_0x276d('0x38')]));_0x3702e5[_0x276d('0x37')]=_0x3702e5['attributes'][_0x276d('0x39')]?_0x3702e5[_0x276d('0x37')]:_0x2d2373[_0x276d('0x32')];if(_0x2be3ef[_0x276d('0x36')][_0x276d('0x49')]){_0x3702e5['include']=[{'all':!![]}];}_0x3702e5=_[_0x276d('0x41')]({},_0x3702e5,_0x2be3ef[_0x276d('0x42')]);return db['Campaign'][_0x276d('0x4e')](_0x3702e5)[_0x276d('0x24')](handleEntityNotFound(_0x3298d1,null))['then'](function(_0x347f21){if(_0x347f21){var _0x22cf48=_0x347f21[_0x276d('0x25')]({'plain':!![]});_0x22cf48=qs[_0x276d('0x52')](_0x22cf48,['id',_0x276d('0x53'),_0x276d('0x54')]);_0x2be3ef[_0x276d('0x55')]=_[_0x276d('0x52')](_0x2be3ef[_0x276d('0x55')],['id',_0x276d('0x53'),_0x276d('0x54')]);return db[_0x276d('0x2e')][_0x276d('0x4a')](_['merge'](_0x22cf48,_0x2be3ef[_0x276d('0x55')]),{'include':_0x2be3ef[_0x276d('0x36')][_0x276d('0x49')]?[{'all':!![]}]:undefined})[_0x276d('0x24')](function(_0x4876f4){var _0x51d8f2=_0x2be3ef['user'][_0x276d('0x25')]({'plain':!![]});if(!_0x51d8f2)throw new Error(_0x276d('0x56'));if(_0x51d8f2[_0x276d('0x4c')]===_0x276d('0x4b')){var _0x48001f=_0x4876f4[_0x276d('0x25')]({'plain':!![]});var _0x3fd2f5=_0x276d('0x26');return db[_0x276d('0x4d')][_0x276d('0x4e')]({'where':{'name':_0x3fd2f5,'userProfileId':_0x51d8f2[_0x276d('0x57')]},'raw':!![]})[_0x276d('0x24')](function(_0x357a8c){if(_0x357a8c&&_0x357a8c[_0x276d('0x4f')]===0x0){return db[_0x276d('0x27')][_0x276d('0x4a')]({'name':_0x48001f[_0x276d('0x2a')],'resourceId':_0x48001f['id'],'type':_0x357a8c[_0x276d('0x2a')],'sectionId':_0x357a8c['id']},{})[_0x276d('0x24')](function(){return _0x4876f4;});}else{return _0x4876f4;}})['catch'](function(_0x3653ab){logger[_0x276d('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3653ab);throw _0x3653ab;});}return _0x4876f4;});}})[_0x276d('0x24')](respondWithResult(_0x3298d1,0xc9))[_0x276d('0x46')](handleError(_0x3298d1,null));};exports[_0x276d('0x58')]=function(_0x5db132,_0xc5446b){if(_0x5db132[_0x276d('0x55')]['id']){delete _0x5db132[_0x276d('0x55')]['id'];}return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x5db132[_0x276d('0x48')]['id']}})[_0x276d('0x24')](handleEntityNotFound(_0xc5446b,null))[_0x276d('0x24')](saveUpdates(_0x5db132['body'],null))[_0x276d('0x24')](respondWithResult(_0xc5446b,null))['catch'](handleError(_0xc5446b,null));};exports['destroy']=function(_0x1dcdce,_0x2dd008){return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x1dcdce['params']['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x2dd008,null))[_0x276d('0x24')](removeEntity(_0x2dd008,null))[_0x276d('0x46')](handleError(_0x2dd008,null));};exports[_0x276d('0x59')]=function(_0x3e314a,_0x62fa2a,_0x156fac){var _0x2763bc={'raw':!![],'where':{}};var _0x3d2220={};var _0x196257={'count':0x0,'rows':[]};return db[_0x276d('0x2e')]['findOne']({'where':{'id':_0x3e314a[_0x276d('0x48')]['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x62fa2a,null))[_0x276d('0x24')](function(_0x34d77c){if(_0x34d77c){_0x3d2220[_0x276d('0x32')]=_[_0x276d('0x33')](db[_0x276d('0x5a')][_0x276d('0x2f')]);_0x3d2220[_0x276d('0x36')]=_['keys'](_0x3e314a[_0x276d('0x36')]);_0x3d2220[_0x276d('0x34')]=_[_0x276d('0x35')](_0x3d2220[_0x276d('0x32')],_0x3d2220[_0x276d('0x36')]);_0x2763bc[_0x276d('0x37')]=_['intersection'](_0x3d2220[_0x276d('0x32')],qs[_0x276d('0x38')](_0x3e314a[_0x276d('0x36')][_0x276d('0x38')]));_0x2763bc[_0x276d('0x37')]=_0x2763bc['attributes'][_0x276d('0x39')]?_0x2763bc['attributes']:_0x3d2220['model'];if(!_0x3e314a[_0x276d('0x36')][_0x276d('0x3a')](_0x276d('0x3b'))){_0x2763bc[_0x276d('0x1d')]=qs[_0x276d('0x1d')](_0x3e314a[_0x276d('0x36')][_0x276d('0x1d')]);_0x2763bc[_0x276d('0x20')]=qs[_0x276d('0x20')](_0x3e314a[_0x276d('0x36')][_0x276d('0x20')]);}_0x2763bc[_0x276d('0x3c')]=qs[_0x276d('0x3d')](_0x3e314a['query'][_0x276d('0x3d')]);_0x2763bc[_0x276d('0x3e')]=qs[_0x276d('0x34')](_[_0x276d('0x3f')](_0x3e314a[_0x276d('0x36')],_0x3d2220[_0x276d('0x34')]));_0x2763bc[_0x276d('0x3e')][_0x276d('0x5b')]=_0x34d77c['id'];if(_0x3e314a['query']['filter']){_0x2763bc[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x2763bc[_0x276d('0x3e')],{'$or':_[_0x276d('0x2d')](_0x2763bc[_0x276d('0x37')],function(_0x49ca7a){var _0x5265e8={};_0x5265e8[_0x49ca7a]={'$like':'%'+_0x3e314a[_0x276d('0x36')]['filter']+'%'};return _0x5265e8;})});}_0x2763bc=_[_0x276d('0x41')]({},_0x2763bc,_0x3e314a[_0x276d('0x42')]);return db[_0x276d('0x5a')]['count']({'where':_0x2763bc[_0x276d('0x3e')]})['then'](function(_0x2bfb5d){_0x196257['count']=_0x2bfb5d;if(_0x3e314a['query']['includeAll']){_0x2763bc[_0x276d('0x43')]=[{'all':!![]}];}return db[_0x276d('0x5a')][_0x276d('0x44')](_0x2763bc);})[_0x276d('0x24')](function(_0x1a1957){_0x196257[_0x276d('0x45')]=_0x1a1957;return _0x196257;});}})[_0x276d('0x24')](respondWithFilteredResult(_0x62fa2a,_0x2763bc))[_0x276d('0x46')](handleError(_0x62fa2a,null));};exports[_0x276d('0x5c')]=function(_0x5a1524,_0x35252d,_0x5c839b){var _0x2ae16a={'raw':!![],'where':{}};var _0xc8ebb6={};var _0x326752={'count':0x0,'rows':[]};return db[_0x276d('0x2e')][_0x276d('0x5d')]({'where':{'id':_0x5a1524['params']['id']}})['then'](handleEntityNotFound(_0x35252d,null))[_0x276d('0x24')](function(_0x56e6d8){if(_0x56e6d8){_0xc8ebb6[_0x276d('0x32')]=_[_0x276d('0x33')](db[_0x276d('0x5e')][_0x276d('0x2f')]);_0xc8ebb6['query']=_['keys'](_0x5a1524[_0x276d('0x36')]);_0xc8ebb6['filters']=_[_0x276d('0x35')](_0xc8ebb6[_0x276d('0x32')],_0xc8ebb6['query']);_0x2ae16a[_0x276d('0x37')]=_['intersection'](_0xc8ebb6['model'],qs[_0x276d('0x38')](_0x5a1524['query'][_0x276d('0x38')]));_0x2ae16a[_0x276d('0x37')]=_0x2ae16a['attributes'][_0x276d('0x39')]?_0x2ae16a[_0x276d('0x37')]:_0xc8ebb6['model'];if(!_0x5a1524[_0x276d('0x36')]['hasOwnProperty'](_0x276d('0x3b'))){_0x2ae16a[_0x276d('0x1d')]=qs[_0x276d('0x1d')](_0x5a1524[_0x276d('0x36')][_0x276d('0x1d')]);_0x2ae16a['offset']=qs['offset'](_0x5a1524[_0x276d('0x36')][_0x276d('0x20')]);}_0x2ae16a[_0x276d('0x3c')]=qs[_0x276d('0x3d')](_0x5a1524[_0x276d('0x36')][_0x276d('0x3d')]);_0x2ae16a[_0x276d('0x3e')]=qs[_0x276d('0x34')](_[_0x276d('0x3f')](_0x5a1524[_0x276d('0x36')],_0xc8ebb6[_0x276d('0x34')]));_0x2ae16a[_0x276d('0x3e')]['CampaignId']=_0x56e6d8['id'];if(_0x5a1524['query'][_0x276d('0x40')]){_0x2ae16a[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x2ae16a['where'],{'$or':_['map'](_0x2ae16a[_0x276d('0x37')],function(_0x3ae14d){var _0x577857={};_0x577857[_0x3ae14d]={'$like':'%'+_0x5a1524[_0x276d('0x36')]['filter']+'%'};return _0x577857;})});}_0x2ae16a=_[_0x276d('0x41')]({},_0x2ae16a,_0x5a1524[_0x276d('0x42')]);return db['CmHopperHistory'][_0x276d('0x1f')]({'where':_0x2ae16a[_0x276d('0x3e')]})[_0x276d('0x24')](function(_0x2a4acf){_0x326752[_0x276d('0x1f')]=_0x2a4acf;if(_0x5a1524[_0x276d('0x36')][_0x276d('0x49')]){_0x2ae16a[_0x276d('0x43')]=[{'all':!![]}];}return db[_0x276d('0x5e')][_0x276d('0x44')](_0x2ae16a);})[_0x276d('0x24')](function(_0x43ec7f){_0x326752[_0x276d('0x45')]=_0x43ec7f;return _0x326752;});}})[_0x276d('0x24')](respondWithFilteredResult(_0x35252d,_0x2ae16a))[_0x276d('0x46')](handleError(_0x35252d,null));};exports[_0x276d('0x5f')]=function(_0x4b611d,_0xd47cb2,_0x582207){var _0x337a31={'raw':!![],'where':{}};var _0xd4729d={};var _0x32e162={'count':0x0,'rows':[]};return db[_0x276d('0x2e')][_0x276d('0x5d')]({'where':{'id':_0x4b611d['params']['id']}})['then'](handleEntityNotFound(_0xd47cb2,null))['then'](function(_0x320c50){if(_0x320c50){_0xd4729d['model']=_[_0x276d('0x33')](db[_0x276d('0x60')][_0x276d('0x2f')]);_0xd4729d[_0x276d('0x36')]=_[_0x276d('0x33')](_0x4b611d[_0x276d('0x36')]);_0xd4729d['filters']=_[_0x276d('0x35')](_0xd4729d[_0x276d('0x32')],_0xd4729d[_0x276d('0x36')]);_0x337a31[_0x276d('0x37')]=_[_0x276d('0x35')](_0xd4729d['model'],qs[_0x276d('0x38')](_0x4b611d[_0x276d('0x36')]['fields']));_0x337a31[_0x276d('0x37')]=_0x337a31[_0x276d('0x37')][_0x276d('0x39')]?_0x337a31[_0x276d('0x37')]:_0xd4729d[_0x276d('0x32')];if(!_0x4b611d[_0x276d('0x36')][_0x276d('0x3a')](_0x276d('0x3b'))){_0x337a31[_0x276d('0x1d')]=qs[_0x276d('0x1d')](_0x4b611d['query']['limit']);_0x337a31[_0x276d('0x20')]=qs[_0x276d('0x20')](_0x4b611d[_0x276d('0x36')]['offset']);}_0x337a31['order']=qs[_0x276d('0x3d')](_0x4b611d[_0x276d('0x36')][_0x276d('0x3d')]);_0x337a31[_0x276d('0x3e')]=qs[_0x276d('0x34')](_['pick'](_0x4b611d['query'],_0xd4729d['filters']));_0x337a31['where'][_0x276d('0x5b')]=_0x320c50['id'];if(_0x4b611d[_0x276d('0x36')]['filter']){_0x337a31[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x337a31[_0x276d('0x3e')],{'$or':_[_0x276d('0x2d')](_0x337a31[_0x276d('0x37')],function(_0x13a594){var _0x2d48f7={};_0x2d48f7[_0x13a594]={'$like':'%'+_0x4b611d['query'][_0x276d('0x40')]+'%'};return _0x2d48f7;})});}_0x337a31=_[_0x276d('0x41')]({},_0x337a31,_0x4b611d['options']);return db[_0x276d('0x60')][_0x276d('0x1f')]({'where':_0x337a31[_0x276d('0x3e')]})[_0x276d('0x24')](function(_0x2926de){_0x32e162['count']=_0x2926de;if(_0x4b611d[_0x276d('0x36')]['includeAll']){_0x337a31[_0x276d('0x43')]=[{'all':!![]}];}return db[_0x276d('0x60')][_0x276d('0x44')](_0x337a31);})['then'](function(_0x56f273){_0x32e162[_0x276d('0x45')]=_0x56f273;return _0x32e162;});}})[_0x276d('0x24')](respondWithFilteredResult(_0xd47cb2,_0x337a31))[_0x276d('0x46')](handleError(_0xd47cb2,null));};exports[_0x276d('0x61')]=function(_0x344608,_0x585eba,_0x5d261b){var _0x58ecdc={'raw':!![],'where':{}};var _0x2ac194={};var _0x5823ff={'count':0x0,'rows':[]};return db[_0x276d('0x2e')][_0x276d('0x5d')]({'where':{'id':_0x344608['params']['id']}})['then'](handleEntityNotFound(_0x585eba,null))['then'](function(_0x11c1a5){if(_0x11c1a5){_0x2ac194[_0x276d('0x32')]=_['keys'](db[_0x276d('0x62')][_0x276d('0x2f')]);_0x2ac194[_0x276d('0x36')]=_[_0x276d('0x33')](_0x344608[_0x276d('0x36')]);_0x2ac194[_0x276d('0x34')]=_[_0x276d('0x35')](_0x2ac194[_0x276d('0x32')],_0x2ac194[_0x276d('0x36')]);_0x58ecdc[_0x276d('0x37')]=_[_0x276d('0x35')](_0x2ac194[_0x276d('0x32')],qs[_0x276d('0x38')](_0x344608[_0x276d('0x36')]['fields']));_0x58ecdc[_0x276d('0x37')]=_0x58ecdc[_0x276d('0x37')][_0x276d('0x39')]?_0x58ecdc[_0x276d('0x37')]:_0x2ac194[_0x276d('0x32')];if(!_0x344608[_0x276d('0x36')][_0x276d('0x3a')](_0x276d('0x3b'))){_0x58ecdc['limit']=qs['limit'](_0x344608[_0x276d('0x36')][_0x276d('0x1d')]);_0x58ecdc[_0x276d('0x20')]=qs['offset'](_0x344608[_0x276d('0x36')]['offset']);}_0x58ecdc[_0x276d('0x3c')]=qs[_0x276d('0x3d')](_0x344608[_0x276d('0x36')]['sort']);_0x58ecdc[_0x276d('0x3e')]=qs[_0x276d('0x34')](_[_0x276d('0x3f')](_0x344608[_0x276d('0x36')],_0x2ac194[_0x276d('0x34')]));_0x58ecdc[_0x276d('0x3e')][_0x276d('0x5b')]=_0x11c1a5['id'];if(_0x344608['query'][_0x276d('0x40')]){_0x58ecdc[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x58ecdc[_0x276d('0x3e')],{'$or':_[_0x276d('0x2d')](_0x58ecdc[_0x276d('0x37')],function(_0x3e8a71){var _0x1e44df={};_0x1e44df[_0x3e8a71]={'$like':'%'+_0x344608[_0x276d('0x36')][_0x276d('0x40')]+'%'};return _0x1e44df;})});}_0x58ecdc=_[_0x276d('0x41')]({},_0x58ecdc,_0x344608[_0x276d('0x42')]);return db[_0x276d('0x62')]['count']({'where':_0x58ecdc['where']})[_0x276d('0x24')](function(_0x463c7a){_0x5823ff['count']=_0x463c7a;if(_0x344608['query'][_0x276d('0x49')]){_0x58ecdc['include']=[{'all':!![]}];}return db[_0x276d('0x62')][_0x276d('0x44')](_0x58ecdc);})[_0x276d('0x24')](function(_0x5cd43a){_0x5823ff[_0x276d('0x45')]=_0x5cd43a;return _0x5823ff;});}})[_0x276d('0x24')](respondWithFilteredResult(_0x585eba,_0x58ecdc))[_0x276d('0x46')](handleError(_0x585eba,null));};exports[_0x276d('0x63')]=function(_0x25d497,_0x2b630b,_0x3ed51e){var _0x46b542={};var _0xd70176={};var _0x42437a;var _0x472ab9;return db[_0x276d('0x2e')][_0x276d('0x5d')]({'where':{'id':_0x25d497[_0x276d('0x48')]['id']}})['then'](handleEntityNotFound(_0x2b630b,null))[_0x276d('0x24')](function(_0x1466fc){if(_0x1466fc){_0x42437a=_0x1466fc;_0xd70176[_0x276d('0x32')]=_[_0x276d('0x33')](db[_0x276d('0x64')][_0x276d('0x2f')]);_0xd70176[_0x276d('0x36')]=_[_0x276d('0x33')](_0x25d497[_0x276d('0x36')]);_0xd70176[_0x276d('0x34')]=_['intersection'](_0xd70176['model'],_0xd70176[_0x276d('0x36')]);_0x46b542['attributes']=_[_0x276d('0x35')](_0xd70176[_0x276d('0x32')],qs['fields'](_0x25d497[_0x276d('0x36')]['fields']));_0x46b542[_0x276d('0x37')]=_0x46b542[_0x276d('0x37')][_0x276d('0x39')]?_0x46b542['attributes']:_0xd70176[_0x276d('0x32')];_0x46b542[_0x276d('0x3c')]=qs['sort'](_0x25d497['query']['sort']);_0x46b542[_0x276d('0x3e')]=qs['filters'](_[_0x276d('0x3f')](_0x25d497['query'],_0xd70176['filters']));if(_0x25d497['query']['filter']){_0x46b542[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x46b542[_0x276d('0x3e')],{'$or':_[_0x276d('0x2d')](_0x46b542[_0x276d('0x37')],function(_0x2a112a){var _0xa76923={};_0xa76923[_0x2a112a]={'$like':'%'+_0x25d497[_0x276d('0x36')]['filter']+'%'};return _0xa76923;})});}_0x46b542=_['merge']({},_0x46b542,_0x25d497[_0x276d('0x42')]);return _0x42437a[_0x276d('0x63')](_0x46b542);}})['then'](function(_0x194abc){if(_0x194abc){_0x472ab9=_0x194abc[_0x276d('0x39')];if(!_0x25d497[_0x276d('0x36')][_0x276d('0x3a')](_0x276d('0x3b'))){_0x46b542['limit']=qs[_0x276d('0x1d')](_0x25d497['query'][_0x276d('0x1d')]);_0x46b542[_0x276d('0x20')]=qs[_0x276d('0x20')](_0x25d497[_0x276d('0x36')][_0x276d('0x20')]);}return _0x42437a[_0x276d('0x63')](_0x46b542);}})[_0x276d('0x24')](function(_0x48cdcf){if(_0x48cdcf){return _0x48cdcf?{'count':_0x472ab9,'rows':_0x48cdcf}:null;}})[_0x276d('0x24')](respondWithResult(_0x2b630b,null))['catch'](handleError(_0x2b630b,null));};exports[_0x276d('0x65')]=function(_0x2e74fe,_0x2f5c86,_0x182fc0){var _0x3d3935,_0x1c49a9;var _0x5157cd=[];var _0x18326f=moment()[_0x276d('0x66')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x276d('0x2e')]['find']({'where':{'id':_0x2e74fe[_0x276d('0x48')]['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x2f5c86,null))['then'](function(_0x497088){if(_0x497088){_0x1c49a9=_0x497088;return _0x497088['addLists'](_0x2e74fe[_0x276d('0x55')][_0x276d('0x67')],_['omit'](_0x2e74fe[_0x276d('0x55')],[_0x276d('0x67'),'id'])||{});}return null;})['spread'](function(_0x3f8add){var _0x1eaed3;var _0xfdbcc9;_0x3d3935=_0x3f8add||[];var _0x47ee70=[];if(_0x3f8add){for(var _0x5c3f62=0x0;_0x5c3f62<_0x3f8add['length'];_0x5c3f62+=0x1){var _0x2c4bd3=_0x3f8add[_0x5c3f62][_0x276d('0x25')]({'plain':!![]});_0x1c49a9[_0x276d('0x68')]=_0x2e74fe[_0x276d('0x55')][_0x276d('0x68')]?_0x2e74fe[_0x276d('0x55')][_0x276d('0x68')]:_0x1c49a9[_0x276d('0x68')];switch(_0x1c49a9[_0x276d('0x68')]){case _0x276d('0x69'):_0x1eaed3=squel[_0x276d('0x6a')]()[_0x276d('0x6b')]('cm_hopper')[_0x276d('0x6c')]([_0x276d('0x6d'),'scheduledAt',_0x276d('0x6e'),_0x276d('0x6f'),'CampaignId',_0x276d('0x53'),_0x276d('0x54')],squel[_0x276d('0x70')]()[_0x276d('0x71')](_0x276d('0x6d'),_0x276d('0x6d'))[_0x276d('0x71')](_0x276d('0x72'),'scheduledAt')[_0x276d('0x71')]('id',_0x276d('0x6e'))['field'](_0x2c4bd3[_0x276d('0x73')]['toString'](),_0x276d('0x6f'))[_0x276d('0x71')](_0x2e74fe[_0x276d('0x48')]['id'][_0x276d('0x74')](),'CampaignId')[_0x276d('0x71')]('\x27'+_0x18326f+'\x27',_0x276d('0x53'))['field']('\x27'+_0x18326f+'\x27',_0x276d('0x54'))['from'](_0x276d('0x75'))[_0x276d('0x3e')](_0x276d('0x76'))[_0x276d('0x3e')](_0x276d('0x77'),_0x2c4bd3[_0x276d('0x73')][_0x276d('0x74')]())[_0x276d('0x3e')]('phone\x20IS\x20NOT\x20NULL')['where'](_0x276d('0x78'),squel['select']()[_0x276d('0x71')](_0x276d('0x79'))[_0x276d('0x7a')](_0x276d('0x7b'))[_0x276d('0x3e')](_0x276d('0x7c'),_0x2e74fe['params']['id'][_0x276d('0x74')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x276d('0x70')]()['field'](_0x276d('0x7d'))['from']('cm_hopper')[_0x276d('0x3e')](_0x276d('0x7c'),_0x2e74fe['params']['id'][_0x276d('0x74')]())))[_0x276d('0x74')]();break;case _0x276d('0x7e'):_0x1eaed3=squel[_0x276d('0x6a')]()[_0x276d('0x6b')]('cm_hopper')['fromQuery']([_0x276d('0x6d'),_0x276d('0x7f'),_0x276d('0x6e'),_0x276d('0x6f'),'CampaignId',_0x276d('0x53'),_0x276d('0x54')],squel['select']()['field'](_0x276d('0x6d'),'phone')[_0x276d('0x71')](_0x276d('0x72'),_0x276d('0x7f'))[_0x276d('0x71')]('id',_0x276d('0x6e'))[_0x276d('0x71')](_0x2c4bd3['CmListId'][_0x276d('0x74')](),_0x276d('0x6f'))[_0x276d('0x71')](_0x2e74fe['params']['id'][_0x276d('0x74')](),'CampaignId')['field']('\x27'+_0x18326f+'\x27',_0x276d('0x53'))['field']('\x27'+_0x18326f+'\x27',_0x276d('0x54'))[_0x276d('0x7a')](_0x276d('0x75'))[_0x276d('0x3e')]('deletedAt\x20IS\x20NULL')['where'](_0x276d('0x77'),_0x2c4bd3[_0x276d('0x73')]['toString']())[_0x276d('0x3e')]('phone\x20IS\x20NOT\x20NULL')['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x276d('0x70')]()['field'](_0x276d('0x7d'))[_0x276d('0x7a')]('cm_hopper')[_0x276d('0x3e')](_0x276d('0x7c'),_0x2e74fe[_0x276d('0x48')]['id'][_0x276d('0x74')]())))[_0x276d('0x74')]();break;default:_0x1eaed3=squel[_0x276d('0x6a')]()['into'](_0x276d('0x80'))[_0x276d('0x6c')](['phone','scheduledAt',_0x276d('0x6e'),_0x276d('0x6f'),_0x276d('0x5b'),_0x276d('0x53'),_0x276d('0x54')],squel[_0x276d('0x70')]()[_0x276d('0x71')]('phone',_0x276d('0x6d'))[_0x276d('0x71')](_0x276d('0x72'),_0x276d('0x7f'))['field']('id','ContactId')[_0x276d('0x71')](_0x2c4bd3['CmListId'][_0x276d('0x74')](),_0x276d('0x6f'))[_0x276d('0x71')](_0x2e74fe[_0x276d('0x48')]['id'][_0x276d('0x74')](),_0x276d('0x5b'))[_0x276d('0x71')]('\x27'+_0x18326f+'\x27',_0x276d('0x53'))[_0x276d('0x71')]('\x27'+_0x18326f+'\x27','updatedAt')[_0x276d('0x7a')](_0x276d('0x75'))[_0x276d('0x3e')](_0x276d('0x76'))[_0x276d('0x3e')](_0x276d('0x77'),_0x2c4bd3[_0x276d('0x73')][_0x276d('0x74')]())[_0x276d('0x3e')](_0x276d('0x81')))['toString']();}_0xfdbcc9=squel[_0x276d('0x6a')]()[_0x276d('0x6b')](_0x276d('0x82'))[_0x276d('0x6c')](['cmHopperId','scheduledAt','phone',_0x276d('0x83'),_0x276d('0x53'),_0x276d('0x54')],squel[_0x276d('0x70')]()[_0x276d('0x71')]('h.id','id')[_0x276d('0x71')]('NOW()',_0x276d('0x7f'))['field'](_0x276d('0x84'),'phone')['field'](_0x276d('0x85'),_0x276d('0x83'))[_0x276d('0x71')]('\x27'+_0x18326f+'\x27','createdAt')[_0x276d('0x71')]('\x27'+_0x18326f+'\x27',_0x276d('0x54'))[_0x276d('0x7a')]('cm_contact_has_items','ci')[_0x276d('0x86')](_0x276d('0x80'),'h',_0x276d('0x87'))['where']('h.ListId\x20=\x20?',_0x2c4bd3[_0x276d('0x73')][_0x276d('0x74')]())['where']('h.CampaignId=?',_0x2e74fe[_0x276d('0x48')]['id'][_0x276d('0x74')]())[_0x276d('0x3e')](_0x276d('0x88'),_0x18326f))[_0x276d('0x74')]();_0x47ee70[_0x276d('0x89')](db[_0x276d('0x8a')]['query'](_0x1eaed3));_0x5157cd[_0x276d('0x89')](db['sequelize'][_0x276d('0x36')](_0xfdbcc9));}return BPromise[_0x276d('0x8b')](_0x47ee70);}})[_0x276d('0x24')](function(){return BPromise[_0x276d('0x8b')](_0x5157cd);})[_0x276d('0x24')](function(){return _0x3d3935;})[_0x276d('0x24')](respondWithResult(_0x2f5c86,null))[_0x276d('0x46')](handleError(_0x2f5c86,null));};exports[_0x276d('0x8c')]=function(_0x4bce23,_0x1694f6,_0x420116){return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x4bce23[_0x276d('0x48')]['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x1694f6,null))[_0x276d('0x24')](function(_0x418b5d){if(_0x418b5d){return _0x418b5d[_0x276d('0x8c')](_0x4bce23[_0x276d('0x36')][_0x276d('0x67')]);}})[_0x276d('0x24')](function(_0x155ef3){if(_0x155ef3){return db[_0x276d('0x5a')][_0x276d('0x8d')]({'where':{'ListId':_0x4bce23[_0x276d('0x36')][_0x276d('0x67')],'CampaignId':_0x4bce23[_0x276d('0x48')]['id']}})[_0x276d('0x24')](function(){return _0x155ef3;});}})[_0x276d('0x24')](respondWithStatusCode(_0x1694f6,null))[_0x276d('0x46')](handleError(_0x1694f6,null));};exports['getBlackLists']=function(_0x2d78b7,_0x24ceb3,_0x386b55){var _0x4b3db8={};var _0x2d649c={};var _0x1163f8;var _0x49553f;return db[_0x276d('0x2e')][_0x276d('0x5d')]({'where':{'id':_0x2d78b7['params']['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x24ceb3,null))[_0x276d('0x24')](function(_0x39ce5c){if(_0x39ce5c){_0x1163f8=_0x39ce5c;_0x2d649c['model']=_[_0x276d('0x33')](db[_0x276d('0x64')][_0x276d('0x2f')]);_0x2d649c[_0x276d('0x36')]=_[_0x276d('0x33')](_0x2d78b7['query']);_0x2d649c[_0x276d('0x34')]=_[_0x276d('0x35')](_0x2d649c[_0x276d('0x32')],_0x2d649c[_0x276d('0x36')]);_0x4b3db8[_0x276d('0x37')]=_[_0x276d('0x35')](_0x2d649c[_0x276d('0x32')],qs[_0x276d('0x38')](_0x2d78b7[_0x276d('0x36')][_0x276d('0x38')]));_0x4b3db8[_0x276d('0x37')]=_0x4b3db8[_0x276d('0x37')][_0x276d('0x39')]?_0x4b3db8['attributes']:_0x2d649c[_0x276d('0x32')];_0x4b3db8['order']=qs[_0x276d('0x3d')](_0x2d78b7[_0x276d('0x36')][_0x276d('0x3d')]);_0x4b3db8['where']=qs[_0x276d('0x34')](_['pick'](_0x2d78b7['query'],_0x2d649c[_0x276d('0x34')]));if(_0x2d78b7['query'][_0x276d('0x40')]){_0x4b3db8[_0x276d('0x3e')]=_[_0x276d('0x41')](_0x4b3db8[_0x276d('0x3e')],{'$or':_[_0x276d('0x2d')](_0x4b3db8[_0x276d('0x37')],function(_0xfe7ec7){var _0x3689da={};_0x3689da[_0xfe7ec7]={'$like':'%'+_0x2d78b7[_0x276d('0x36')][_0x276d('0x40')]+'%'};return _0x3689da;})});}_0x4b3db8=_[_0x276d('0x41')]({},_0x4b3db8,_0x2d78b7[_0x276d('0x42')]);return _0x1163f8[_0x276d('0x8e')](_0x4b3db8);}})[_0x276d('0x24')](function(_0x133139){if(_0x133139){_0x49553f=_0x133139[_0x276d('0x39')];if(!_0x2d78b7[_0x276d('0x36')]['hasOwnProperty'](_0x276d('0x3b'))){_0x4b3db8[_0x276d('0x1d')]=qs[_0x276d('0x1d')](_0x2d78b7[_0x276d('0x36')][_0x276d('0x1d')]);_0x4b3db8[_0x276d('0x20')]=qs[_0x276d('0x20')](_0x2d78b7[_0x276d('0x36')]['offset']);}return _0x1163f8['getBlackLists'](_0x4b3db8);}})[_0x276d('0x24')](function(_0xac7aff){if(_0xac7aff){return _0xac7aff?{'count':_0x49553f,'rows':_0xac7aff}:null;}})[_0x276d('0x24')](respondWithResult(_0x24ceb3,null))['catch'](handleError(_0x24ceb3,null));};exports[_0x276d('0x8f')]=function(_0x5c6eda,_0x1dd8dd,_0x3e4df2){var _0x505ba4,_0x41e08c;var _0x1d2081=[];var _0x540bdc=moment()[_0x276d('0x66')](_0x276d('0x90'));return db[_0x276d('0x2e')]['find']({'where':{'id':_0x5c6eda[_0x276d('0x48')]['id']}})[_0x276d('0x24')](handleEntityNotFound(_0x1dd8dd,null))[_0x276d('0x24')](function(_0x546134){if(_0x546134){_0x41e08c=_0x546134;return _0x546134[_0x276d('0x8f')](_0x5c6eda['body'][_0x276d('0x67')],_[_0x276d('0x52')](_0x5c6eda[_0x276d('0x55')],['ids','id'])||{});}return null;})[_0x276d('0x91')](function(_0x3dd699){var _0x1d64b3;var _0x35944c;_0x505ba4=_0x3dd699||[];var _0xed2e5f=[];if(_0x3dd699){for(var _0x4b0354=0x0;_0x4b0354<_0x3dd699['length'];_0x4b0354+=0x1){var _0x5e5df1=_0x3dd699[_0x4b0354][_0x276d('0x25')]({'plain':!![]});_0x1d64b3=squel[_0x276d('0x6a')]()['into'](_0x276d('0x92'))[_0x276d('0x6c')]([_0x276d('0x6d'),_0x276d('0x6e'),'ListId',_0x276d('0x5b'),_0x276d('0x53'),'updatedAt'],squel[_0x276d('0x70')]()[_0x276d('0x71')]('phone',_0x276d('0x6d'))[_0x276d('0x71')]('id',_0x276d('0x6e'))[_0x276d('0x71')](_0x5e5df1['CmListId'][_0x276d('0x74')](),_0x276d('0x6f'))['field'](_0x5c6eda['params']['id'][_0x276d('0x74')](),_0x276d('0x5b'))['field']('NOW()','createdAt')[_0x276d('0x71')](_0x276d('0x72'),_0x276d('0x54'))[_0x276d('0x7a')](_0x276d('0x75'))[_0x276d('0x3e')]('deletedAt\x20IS\x20NULL')[_0x276d('0x3e')](_0x276d('0x77'),_0x5e5df1['CmListId']['toString']())[_0x276d('0x3e')](_0x276d('0x81')))[_0x276d('0x74')]();_0xed2e5f[_0x276d('0x89')](db[_0x276d('0x8a')]['query'](_0x1d64b3));}return BPromise[_0x276d('0x8b')](_0xed2e5f);}})['then'](function(){return _0x505ba4;})[_0x276d('0x24')](respondWithResult(_0x1dd8dd,null))[_0x276d('0x46')](handleError(_0x1dd8dd,null));};exports['removeBlackLists']=function(_0x394524,_0x245298,_0x42a6f6){return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x394524[_0x276d('0x48')]['id']}})['then'](handleEntityNotFound(_0x245298,null))['then'](function(_0x46cd07){if(_0x46cd07){return _0x46cd07['removeBlackLists'](_0x394524[_0x276d('0x36')][_0x276d('0x67')]);}})[_0x276d('0x24')](function(_0x186ce0){if(_0x186ce0){return db[_0x276d('0x62')][_0x276d('0x8d')]({'where':{'ListId':_0x394524['query'][_0x276d('0x67')],'CampaignId':_0x394524[_0x276d('0x48')]['id']}})[_0x276d('0x24')](function(){return _0x186ce0;});}})['then'](respondWithStatusCode(_0x245298,null))[_0x276d('0x46')](handleError(_0x245298,null));};
\ No newline at end of file
+var _0x36f9=['ids','spread','dialCheckDuplicateType','always','into','fromQuery','phone','scheduledAt','ContactId','ListId','field','NOW()','CmListId','toString','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','insert','cm_hopper','cmHopperId','OrderBy','h.id','ci.item','cm_contact_has_items','join','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','cm_hopper_black','removeBlackLists','eml-format','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','then','get','IvrCampaigns','UserProfileResource','destroy','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','options','Campaign','includeAll','include','rows','params','rawAttributes','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','find','autoAssociation','catch','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','role','userProfileId','update','getHoppers','CmHopper','pick','filter','getHopperHistories','findOne','CmHopperHistory','CampaignId','findAll','getHopperFinals','CmHopperFinal','CmHopperBlack','CmList','getLists','addLists','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x1fd1e3,_0x63e5e1){var _0x31467c=function(_0x5b0fbb){while(--_0x5b0fbb){_0x1fd1e3['push'](_0x1fd1e3['shift']());}};_0x31467c(++_0x63e5e1);}(_0x36f9,0x151));var _0x936f=function(_0x5bc223,_0x543186){_0x5bc223=_0x5bc223-0x0;var _0x66367c=_0x36f9[_0x5bc223];return _0x66367c;};'use strict';var emlformat=require(_0x936f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x936f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x936f('0x2'));var BPromise=require(_0x936f('0x3'));var Mustache=require(_0x936f('0x4'));var util=require(_0x936f('0x5'));var path=require(_0x936f('0x6'));var sox=require(_0x936f('0x7'));var csv=require(_0x936f('0x8'));var ejs=require(_0x936f('0x9'));var fs=require('fs');var fs_extra=require(_0x936f('0xa'));var _=require(_0x936f('0xb'));var squel=require(_0x936f('0xc'));var crypto=require('crypto');var jsforce=require(_0x936f('0xd'));var deskjs=require(_0x936f('0xe'));var toCsv=require(_0x936f('0x8'));var querystring=require(_0x936f('0xf'));var Papa=require(_0x936f('0x10'));var Redis=require(_0x936f('0x11'));var authService=require(_0x936f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x936f('0x13'))(_0x936f('0x14'));var utils=require(_0x936f('0x15'));var config=require(_0x936f('0x16'));var licenseUtil=require(_0x936f('0x17'));var db=require(_0x936f('0x18'))['db'];function respondWithStatusCode(_0x1eeef1,_0x44399c){_0x44399c=_0x44399c||0xcc;return function(_0x565475){if(_0x565475){return _0x1eeef1[_0x936f('0x19')](_0x44399c);}return _0x1eeef1[_0x936f('0x1a')](_0x44399c)[_0x936f('0x1b')]();};}function respondWithResult(_0x18eb93,_0x203409){_0x203409=_0x203409||0xc8;return function(_0x3e046b){if(_0x3e046b){return _0x18eb93['status'](_0x203409)[_0x936f('0x1c')](_0x3e046b);}};}function respondWithFilteredResult(_0x4e4579,_0x365f05){return function(_0x401dfd){if(_0x401dfd){var _0x5f003c=typeof _0x365f05[_0x936f('0x1d')]===_0x936f('0x1e')&&typeof _0x365f05['limit']==='undefined';var _0x298ece=_0x401dfd['count'];var _0x1363e3=_0x5f003c?0x0:_0x365f05['offset'];var _0x3867bc=_0x5f003c?_0x401dfd[_0x936f('0x1f')]:_0x365f05[_0x936f('0x1d')]+_0x365f05[_0x936f('0x20')];var _0x181d83;if(_0x3867bc>=_0x298ece){_0x3867bc=_0x298ece;_0x181d83=0xc8;}else{_0x181d83=0xce;}_0x4e4579[_0x936f('0x1a')](_0x181d83);return _0x4e4579[_0x936f('0x21')](_0x936f('0x22'),_0x1363e3+'-'+_0x3867bc+'/'+_0x298ece)[_0x936f('0x1c')](_0x401dfd);}return null;};}function patchUpdates(_0x25a8eb){return function(_0x4ea210){try{jsonpatch['apply'](_0x4ea210,_0x25a8eb,!![]);}catch(_0x49c1ce){return BPromise[_0x936f('0x23')](_0x49c1ce);}return _0x4ea210[_0x936f('0x24')]();};}function saveUpdates(_0x3c25a5,_0x1f98e5){return function(_0x42d3d7){if(_0x42d3d7){return _0x42d3d7['update'](_0x3c25a5)[_0x936f('0x25')](function(_0xf6e496){return _0xf6e496;});}return null;};}function removeEntity(_0x45fbd3,_0x19e692){return function(_0x3640b1){if(_0x3640b1){return _0x3640b1['destroy']()['then'](function(){var _0xdba7c2=_0x3640b1[_0x936f('0x26')]({'plain':!![]});var _0x32f008=_0x936f('0x27');return db[_0x936f('0x28')][_0x936f('0x29')]({'where':{'type':_0x32f008,'resourceId':_0xdba7c2['id']}})[_0x936f('0x25')](function(){return _0x3640b1;});})['then'](function(){_0x45fbd3['status'](0xcc)[_0x936f('0x1b')]();});}};}function handleEntityNotFound(_0xa5bc90,_0x3678f1){return function(_0x4fd473){if(!_0x4fd473){_0xa5bc90[_0x936f('0x19')](0x194);}return _0x4fd473;};}function handleError(_0x485883,_0x49407b){_0x49407b=_0x49407b||0x1f4;return function(_0x2b0d8b){logger['error'](_0x2b0d8b['stack']);if(_0x2b0d8b[_0x936f('0x2a')]){delete _0x2b0d8b[_0x936f('0x2a')];}_0x485883[_0x936f('0x1a')](_0x49407b)['send'](_0x2b0d8b);};}exports[_0x936f('0x2b')]=function(_0x12db98,_0x4126ed){var _0xdfb5f4={},_0x333483={},_0x4661d5={'count':0x0,'rows':[]};var _0x517978=_[_0x936f('0x2c')](db['Campaign']['rawAttributes'],function(_0x2118a9){return{'name':_0x2118a9[_0x936f('0x2d')],'type':_0x2118a9[_0x936f('0x2e')][_0x936f('0x2f')]};});_0x333483[_0x936f('0x30')]=_[_0x936f('0x2c')](_0x517978,_0x936f('0x2a'));_0x333483[_0x936f('0x31')]=_[_0x936f('0x32')](_0x12db98[_0x936f('0x31')]);_0x333483[_0x936f('0x33')]=_[_0x936f('0x34')](_0x333483[_0x936f('0x30')],_0x333483[_0x936f('0x31')]);_0xdfb5f4[_0x936f('0x35')]=_[_0x936f('0x34')](_0x333483['model'],qs[_0x936f('0x36')](_0x12db98[_0x936f('0x31')]['fields']));_0xdfb5f4['attributes']=_0xdfb5f4[_0x936f('0x35')][_0x936f('0x37')]?_0xdfb5f4['attributes']:_0x333483[_0x936f('0x30')];if(!_0x12db98[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0xdfb5f4[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x12db98[_0x936f('0x31')]['limit']);_0xdfb5f4[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x12db98[_0x936f('0x31')][_0x936f('0x1d')]);}_0xdfb5f4[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x12db98[_0x936f('0x31')][_0x936f('0x3b')]);_0xdfb5f4[_0x936f('0x3c')]=qs[_0x936f('0x33')](_['pick'](_0x12db98['query'],_0x333483[_0x936f('0x33')]),_0x517978);if(_0x12db98[_0x936f('0x31')]['filter']){_0xdfb5f4[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0xdfb5f4[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x517978,function(_0x40d1c3){if(_0x40d1c3[_0x936f('0x2e')]!==_0x936f('0x3e')){var _0x43639f={};_0x43639f[_0x40d1c3['name']]={'$like':'%'+_0x12db98[_0x936f('0x31')]['filter']+'%'};return _0x43639f;}})});}_0xdfb5f4=_[_0x936f('0x3d')]({},_0xdfb5f4,_0x12db98[_0x936f('0x3f')]);var _0x4e962c={'where':_0xdfb5f4['where']};return db[_0x936f('0x40')][_0x936f('0x1f')](_0x4e962c)[_0x936f('0x25')](function(_0x1f6b20){_0x4661d5[_0x936f('0x1f')]=_0x1f6b20;if(_0x12db98[_0x936f('0x31')][_0x936f('0x41')]){_0xdfb5f4[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x40')]['findAll'](_0xdfb5f4);})[_0x936f('0x25')](function(_0x213729){_0x4661d5[_0x936f('0x43')]=_0x213729;return _0x4661d5;})['then'](respondWithFilteredResult(_0x4126ed,_0xdfb5f4))['catch'](handleError(_0x4126ed,null));};exports['show']=function(_0x306b64,_0xc97a99){var _0x43386d={'raw':![],'where':{'id':_0x306b64[_0x936f('0x44')]['id']}},_0x56d1ac={};_0x56d1ac[_0x936f('0x30')]=_[_0x936f('0x32')](db['Campaign'][_0x936f('0x45')]);_0x56d1ac[_0x936f('0x31')]=_[_0x936f('0x32')](_0x306b64[_0x936f('0x31')]);_0x56d1ac[_0x936f('0x33')]=_[_0x936f('0x34')](_0x56d1ac[_0x936f('0x30')],_0x56d1ac[_0x936f('0x31')]);_0x43386d[_0x936f('0x35')]=_[_0x936f('0x34')](_0x56d1ac[_0x936f('0x30')],qs['fields'](_0x306b64[_0x936f('0x31')]['fields']));_0x43386d[_0x936f('0x35')]=_0x43386d[_0x936f('0x35')][_0x936f('0x37')]?_0x43386d[_0x936f('0x35')]:_0x56d1ac[_0x936f('0x30')];if(_0x306b64['query'][_0x936f('0x41')]){_0x43386d[_0x936f('0x42')]=[{'all':!![]}];}_0x43386d=_[_0x936f('0x3d')]({},_0x43386d,_0x306b64[_0x936f('0x3f')]);return db[_0x936f('0x40')]['find'](_0x43386d)[_0x936f('0x25')](handleEntityNotFound(_0xc97a99,null))['then'](respondWithResult(_0xc97a99,null))['catch'](handleError(_0xc97a99,null));};exports[_0x936f('0x46')]=function(_0x1e1e07,_0x1bbfed){return db[_0x936f('0x40')][_0x936f('0x46')](_0x1e1e07[_0x936f('0x47')],{})[_0x936f('0x25')](function(_0x334d14){var _0x3d0fbc=_0x1e1e07['user'][_0x936f('0x26')]({'plain':!![]});if(!_0x3d0fbc)throw new Error(_0x936f('0x48'));if(_0x3d0fbc['role']===_0x936f('0x49')){var _0x5aeb85=_0x334d14['get']({'plain':!![]});var _0x1e6899=_0x936f('0x27');return db[_0x936f('0x4a')][_0x936f('0x4b')]({'where':{'name':_0x1e6899,'userProfileId':_0x3d0fbc['userProfileId']},'raw':!![]})[_0x936f('0x25')](function(_0x4b9f55){if(_0x4b9f55&&_0x4b9f55[_0x936f('0x4c')]===0x0){return db[_0x936f('0x28')][_0x936f('0x46')]({'name':_0x5aeb85[_0x936f('0x2a')],'resourceId':_0x5aeb85['id'],'type':_0x4b9f55[_0x936f('0x2a')],'sectionId':_0x4b9f55['id']},{})['then'](function(){return _0x334d14;});}else{return _0x334d14;}})[_0x936f('0x4d')](function(_0x5cd85a){logger[_0x936f('0x4e')](_0x936f('0x4f'),_0x5cd85a);throw _0x5cd85a;});}return _0x334d14;})['then'](respondWithResult(_0x1bbfed,0xc9))['catch'](handleError(_0x1bbfed,null));};exports[_0x936f('0x50')]=function(_0x4e0b6d,_0x208df1){var _0x3b93b7={'where':{'id':_0x4e0b6d[_0x936f('0x44')]['id']}},_0x19e453={};_0x19e453[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x40')][_0x936f('0x45')]);_0x3b93b7['attributes']=_[_0x936f('0x34')](_0x19e453['model'],qs['fields'](_0x4e0b6d['query'][_0x936f('0x36')]));_0x3b93b7[_0x936f('0x35')]=_0x3b93b7[_0x936f('0x35')][_0x936f('0x37')]?_0x3b93b7['attributes']:_0x19e453[_0x936f('0x30')];if(_0x4e0b6d['query'][_0x936f('0x41')]){_0x3b93b7[_0x936f('0x42')]=[{'all':!![]}];}_0x3b93b7=_[_0x936f('0x3d')]({},_0x3b93b7,_0x4e0b6d[_0x936f('0x3f')]);return db[_0x936f('0x40')]['find'](_0x3b93b7)['then'](handleEntityNotFound(_0x208df1,null))[_0x936f('0x25')](function(_0x399e9b){if(_0x399e9b){var _0x2dc231=_0x399e9b[_0x936f('0x26')]({'plain':!![]});_0x2dc231=qs[_0x936f('0x51')](_0x2dc231,['id',_0x936f('0x52'),_0x936f('0x53')]);_0x4e0b6d[_0x936f('0x47')]=_[_0x936f('0x51')](_0x4e0b6d[_0x936f('0x47')],['id','createdAt','updatedAt']);return db[_0x936f('0x40')][_0x936f('0x46')](_['merge'](_0x2dc231,_0x4e0b6d[_0x936f('0x47')]),{'include':_0x4e0b6d['query'][_0x936f('0x41')]?[{'all':!![]}]:undefined})[_0x936f('0x25')](function(_0x5a10bd){var _0x5d8399=_0x4e0b6d[_0x936f('0x49')][_0x936f('0x26')]({'plain':!![]});if(!_0x5d8399)throw new Error(_0x936f('0x48'));if(_0x5d8399[_0x936f('0x54')]===_0x936f('0x49')){var _0x48416e=_0x5a10bd['get']({'plain':!![]});var _0x12848d=_0x936f('0x27');return db[_0x936f('0x4a')][_0x936f('0x4b')]({'where':{'name':_0x12848d,'userProfileId':_0x5d8399[_0x936f('0x55')]},'raw':!![]})[_0x936f('0x25')](function(_0x229f7a){if(_0x229f7a&&_0x229f7a[_0x936f('0x4c')]===0x0){return db[_0x936f('0x28')][_0x936f('0x46')]({'name':_0x48416e[_0x936f('0x2a')],'resourceId':_0x48416e['id'],'type':_0x229f7a[_0x936f('0x2a')],'sectionId':_0x229f7a['id']},{})[_0x936f('0x25')](function(){return _0x5a10bd;});}else{return _0x5a10bd;}})[_0x936f('0x4d')](function(_0xb1386b){logger[_0x936f('0x4e')](_0x936f('0x4f'),_0xb1386b);throw _0xb1386b;});}return _0x5a10bd;});}})[_0x936f('0x25')](respondWithResult(_0x208df1,0xc9))[_0x936f('0x4d')](handleError(_0x208df1,null));};exports[_0x936f('0x56')]=function(_0x2574e6,_0x5ebb49){if(_0x2574e6[_0x936f('0x47')]['id']){delete _0x2574e6[_0x936f('0x47')]['id'];}return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x2574e6[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x5ebb49,null))[_0x936f('0x25')](saveUpdates(_0x2574e6[_0x936f('0x47')],null))[_0x936f('0x25')](respondWithResult(_0x5ebb49,null))[_0x936f('0x4d')](handleError(_0x5ebb49,null));};exports['destroy']=function(_0x46bc08,_0x391298){return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x46bc08[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x391298,null))[_0x936f('0x25')](removeEntity(_0x391298,null))[_0x936f('0x4d')](handleError(_0x391298,null));};exports[_0x936f('0x57')]=function(_0x28a2c3,_0x11e499,_0x3c99be){var _0x3075e9={'raw':!![],'where':{}};var _0x3deaa2={};var _0x268798={'count':0x0,'rows':[]};return db['Campaign']['findOne']({'where':{'id':_0x28a2c3[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x11e499,null))[_0x936f('0x25')](function(_0x48babe){if(_0x48babe){_0x3deaa2[_0x936f('0x30')]=_['keys'](db[_0x936f('0x58')][_0x936f('0x45')]);_0x3deaa2[_0x936f('0x31')]=_[_0x936f('0x32')](_0x28a2c3[_0x936f('0x31')]);_0x3deaa2['filters']=_['intersection'](_0x3deaa2[_0x936f('0x30')],_0x3deaa2[_0x936f('0x31')]);_0x3075e9[_0x936f('0x35')]=_[_0x936f('0x34')](_0x3deaa2['model'],qs[_0x936f('0x36')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x36')]));_0x3075e9[_0x936f('0x35')]=_0x3075e9['attributes'][_0x936f('0x37')]?_0x3075e9[_0x936f('0x35')]:_0x3deaa2[_0x936f('0x30')];if(!_0x28a2c3[_0x936f('0x31')]['hasOwnProperty'](_0x936f('0x39'))){_0x3075e9[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x20')]);_0x3075e9[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x28a2c3[_0x936f('0x31')][_0x936f('0x1d')]);}_0x3075e9[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x28a2c3['query'][_0x936f('0x3b')]);_0x3075e9[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x28a2c3['query'],_0x3deaa2[_0x936f('0x33')]));_0x3075e9[_0x936f('0x3c')]['CampaignId']=_0x48babe['id'];if(_0x28a2c3[_0x936f('0x31')]['filter']){_0x3075e9[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0x3075e9['where'],{'$or':_[_0x936f('0x2c')](_0x3075e9[_0x936f('0x35')],function(_0x46b74d){var _0x356bfc={};_0x356bfc[_0x46b74d]={'$like':'%'+_0x28a2c3[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x356bfc;})});}_0x3075e9=_[_0x936f('0x3d')]({},_0x3075e9,_0x28a2c3[_0x936f('0x3f')]);return db[_0x936f('0x58')][_0x936f('0x1f')]({'where':_0x3075e9['where']})['then'](function(_0x54b850){_0x268798[_0x936f('0x1f')]=_0x54b850;if(_0x28a2c3[_0x936f('0x31')][_0x936f('0x41')]){_0x3075e9[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x58')]['findAll'](_0x3075e9);})[_0x936f('0x25')](function(_0x292946){_0x268798[_0x936f('0x43')]=_0x292946;return _0x268798;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x11e499,_0x3075e9))[_0x936f('0x4d')](handleError(_0x11e499,null));};exports[_0x936f('0x5b')]=function(_0x3242af,_0x10099c,_0x4e35f5){var _0xeac3be={'raw':!![],'where':{}};var _0x5b53a1={};var _0x58445b={'count':0x0,'rows':[]};return db['Campaign'][_0x936f('0x5c')]({'where':{'id':_0x3242af[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x10099c,null))['then'](function(_0x2686ed){if(_0x2686ed){_0x5b53a1[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x5d')][_0x936f('0x45')]);_0x5b53a1[_0x936f('0x31')]=_['keys'](_0x3242af[_0x936f('0x31')]);_0x5b53a1[_0x936f('0x33')]=_['intersection'](_0x5b53a1[_0x936f('0x30')],_0x5b53a1['query']);_0xeac3be[_0x936f('0x35')]=_[_0x936f('0x34')](_0x5b53a1[_0x936f('0x30')],qs['fields'](_0x3242af[_0x936f('0x31')][_0x936f('0x36')]));_0xeac3be[_0x936f('0x35')]=_0xeac3be[_0x936f('0x35')][_0x936f('0x37')]?_0xeac3be['attributes']:_0x5b53a1[_0x936f('0x30')];if(!_0x3242af[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0xeac3be[_0x936f('0x20')]=qs['limit'](_0x3242af[_0x936f('0x31')]['limit']);_0xeac3be['offset']=qs[_0x936f('0x1d')](_0x3242af[_0x936f('0x31')][_0x936f('0x1d')]);}_0xeac3be[_0x936f('0x3a')]=qs['sort'](_0x3242af[_0x936f('0x31')][_0x936f('0x3b')]);_0xeac3be[_0x936f('0x3c')]=qs[_0x936f('0x33')](_['pick'](_0x3242af[_0x936f('0x31')],_0x5b53a1[_0x936f('0x33')]));_0xeac3be[_0x936f('0x3c')][_0x936f('0x5e')]=_0x2686ed['id'];if(_0x3242af[_0x936f('0x31')]['filter']){_0xeac3be['where']=_[_0x936f('0x3d')](_0xeac3be[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0xeac3be[_0x936f('0x35')],function(_0xdab17c){var _0x5efcc1={};_0x5efcc1[_0xdab17c]={'$like':'%'+_0x3242af[_0x936f('0x31')]['filter']+'%'};return _0x5efcc1;})});}_0xeac3be=_[_0x936f('0x3d')]({},_0xeac3be,_0x3242af[_0x936f('0x3f')]);return db[_0x936f('0x5d')][_0x936f('0x1f')]({'where':_0xeac3be[_0x936f('0x3c')]})[_0x936f('0x25')](function(_0x568dfd){_0x58445b[_0x936f('0x1f')]=_0x568dfd;if(_0x3242af[_0x936f('0x31')][_0x936f('0x41')]){_0xeac3be[_0x936f('0x42')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x936f('0x5f')](_0xeac3be);})['then'](function(_0x5d02a5){_0x58445b[_0x936f('0x43')]=_0x5d02a5;return _0x58445b;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x10099c,_0xeac3be))[_0x936f('0x4d')](handleError(_0x10099c,null));};exports[_0x936f('0x60')]=function(_0x7958a0,_0x1240a2,_0x4a6fa1){var _0x421f7f={'raw':!![],'where':{}};var _0x1663fd={};var _0x392aa8={'count':0x0,'rows':[]};return db[_0x936f('0x40')]['findOne']({'where':{'id':_0x7958a0['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x1240a2,null))['then'](function(_0x2ca0d3){if(_0x2ca0d3){_0x1663fd[_0x936f('0x30')]=_[_0x936f('0x32')](db['CmHopperFinal'][_0x936f('0x45')]);_0x1663fd[_0x936f('0x31')]=_[_0x936f('0x32')](_0x7958a0[_0x936f('0x31')]);_0x1663fd[_0x936f('0x33')]=_[_0x936f('0x34')](_0x1663fd[_0x936f('0x30')],_0x1663fd[_0x936f('0x31')]);_0x421f7f['attributes']=_[_0x936f('0x34')](_0x1663fd[_0x936f('0x30')],qs['fields'](_0x7958a0[_0x936f('0x31')][_0x936f('0x36')]));_0x421f7f[_0x936f('0x35')]=_0x421f7f[_0x936f('0x35')][_0x936f('0x37')]?_0x421f7f[_0x936f('0x35')]:_0x1663fd[_0x936f('0x30')];if(!_0x7958a0[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0x421f7f[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x7958a0[_0x936f('0x31')][_0x936f('0x20')]);_0x421f7f['offset']=qs['offset'](_0x7958a0[_0x936f('0x31')][_0x936f('0x1d')]);}_0x421f7f[_0x936f('0x3a')]=qs['sort'](_0x7958a0[_0x936f('0x31')][_0x936f('0x3b')]);_0x421f7f[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x7958a0['query'],_0x1663fd[_0x936f('0x33')]));_0x421f7f[_0x936f('0x3c')]['CampaignId']=_0x2ca0d3['id'];if(_0x7958a0[_0x936f('0x31')][_0x936f('0x5a')]){_0x421f7f['where']=_[_0x936f('0x3d')](_0x421f7f[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x421f7f['attributes'],function(_0xbc8cfc){var _0x8c2395={};_0x8c2395[_0xbc8cfc]={'$like':'%'+_0x7958a0[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x8c2395;})});}_0x421f7f=_[_0x936f('0x3d')]({},_0x421f7f,_0x7958a0[_0x936f('0x3f')]);return db[_0x936f('0x61')]['count']({'where':_0x421f7f[_0x936f('0x3c')]})['then'](function(_0x18ddc6){_0x392aa8[_0x936f('0x1f')]=_0x18ddc6;if(_0x7958a0[_0x936f('0x31')][_0x936f('0x41')]){_0x421f7f[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x61')]['findAll'](_0x421f7f);})[_0x936f('0x25')](function(_0x5877df){_0x392aa8[_0x936f('0x43')]=_0x5877df;return _0x392aa8;});}})['then'](respondWithFilteredResult(_0x1240a2,_0x421f7f))[_0x936f('0x4d')](handleError(_0x1240a2,null));};exports['getHopperBlacks']=function(_0x402567,_0x4e4256,_0x13b04e){var _0x1e8cf7={'raw':!![],'where':{}};var _0x538dce={};var _0x91f8d5={'count':0x0,'rows':[]};return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x402567['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x4e4256,null))[_0x936f('0x25')](function(_0x93a26b){if(_0x93a26b){_0x538dce[_0x936f('0x30')]=_[_0x936f('0x32')](db[_0x936f('0x62')]['rawAttributes']);_0x538dce[_0x936f('0x31')]=_[_0x936f('0x32')](_0x402567[_0x936f('0x31')]);_0x538dce['filters']=_['intersection'](_0x538dce[_0x936f('0x30')],_0x538dce[_0x936f('0x31')]);_0x1e8cf7[_0x936f('0x35')]=_[_0x936f('0x34')](_0x538dce['model'],qs['fields'](_0x402567[_0x936f('0x31')][_0x936f('0x36')]));_0x1e8cf7[_0x936f('0x35')]=_0x1e8cf7[_0x936f('0x35')][_0x936f('0x37')]?_0x1e8cf7[_0x936f('0x35')]:_0x538dce['model'];if(!_0x402567['query'][_0x936f('0x38')]('nolimit')){_0x1e8cf7[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x402567['query'][_0x936f('0x20')]);_0x1e8cf7[_0x936f('0x1d')]=qs[_0x936f('0x1d')](_0x402567[_0x936f('0x31')][_0x936f('0x1d')]);}_0x1e8cf7[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x402567[_0x936f('0x31')]['sort']);_0x1e8cf7[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x402567[_0x936f('0x31')],_0x538dce[_0x936f('0x33')]));_0x1e8cf7[_0x936f('0x3c')]['CampaignId']=_0x93a26b['id'];if(_0x402567[_0x936f('0x31')]['filter']){_0x1e8cf7['where']=_[_0x936f('0x3d')](_0x1e8cf7[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x1e8cf7['attributes'],function(_0x4c73e2){var _0x4f4985={};_0x4f4985[_0x4c73e2]={'$like':'%'+_0x402567['query'][_0x936f('0x5a')]+'%'};return _0x4f4985;})});}_0x1e8cf7=_[_0x936f('0x3d')]({},_0x1e8cf7,_0x402567[_0x936f('0x3f')]);return db[_0x936f('0x62')][_0x936f('0x1f')]({'where':_0x1e8cf7[_0x936f('0x3c')]})[_0x936f('0x25')](function(_0x30f54f){_0x91f8d5['count']=_0x30f54f;if(_0x402567[_0x936f('0x31')][_0x936f('0x41')]){_0x1e8cf7[_0x936f('0x42')]=[{'all':!![]}];}return db[_0x936f('0x62')][_0x936f('0x5f')](_0x1e8cf7);})[_0x936f('0x25')](function(_0x9c9326){_0x91f8d5[_0x936f('0x43')]=_0x9c9326;return _0x91f8d5;});}})[_0x936f('0x25')](respondWithFilteredResult(_0x4e4256,_0x1e8cf7))[_0x936f('0x4d')](handleError(_0x4e4256,null));};exports['getLists']=function(_0x35565f,_0x108484,_0x52eb02){var _0x38d4be={};var _0x3df5b4={};var _0x5e291f;var _0x1289da;return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x35565f[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x108484,null))[_0x936f('0x25')](function(_0x259cd2){if(_0x259cd2){_0x5e291f=_0x259cd2;_0x3df5b4['model']=_[_0x936f('0x32')](db[_0x936f('0x63')][_0x936f('0x45')]);_0x3df5b4[_0x936f('0x31')]=_['keys'](_0x35565f[_0x936f('0x31')]);_0x3df5b4['filters']=_[_0x936f('0x34')](_0x3df5b4[_0x936f('0x30')],_0x3df5b4['query']);_0x38d4be[_0x936f('0x35')]=_[_0x936f('0x34')](_0x3df5b4['model'],qs[_0x936f('0x36')](_0x35565f[_0x936f('0x31')][_0x936f('0x36')]));_0x38d4be[_0x936f('0x35')]=_0x38d4be[_0x936f('0x35')][_0x936f('0x37')]?_0x38d4be['attributes']:_0x3df5b4['model'];_0x38d4be[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x35565f['query'][_0x936f('0x3b')]);_0x38d4be[_0x936f('0x3c')]=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x35565f[_0x936f('0x31')],_0x3df5b4['filters']));if(_0x35565f[_0x936f('0x31')][_0x936f('0x5a')]){_0x38d4be['where']=_[_0x936f('0x3d')](_0x38d4be[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x38d4be[_0x936f('0x35')],function(_0x36ecb9){var _0xace9a={};_0xace9a[_0x36ecb9]={'$like':'%'+_0x35565f['query'][_0x936f('0x5a')]+'%'};return _0xace9a;})});}_0x38d4be=_[_0x936f('0x3d')]({},_0x38d4be,_0x35565f[_0x936f('0x3f')]);return _0x5e291f[_0x936f('0x64')](_0x38d4be);}})[_0x936f('0x25')](function(_0x3c2596){if(_0x3c2596){_0x1289da=_0x3c2596[_0x936f('0x37')];if(!_0x35565f[_0x936f('0x31')][_0x936f('0x38')](_0x936f('0x39'))){_0x38d4be[_0x936f('0x20')]=qs[_0x936f('0x20')](_0x35565f[_0x936f('0x31')]['limit']);_0x38d4be['offset']=qs['offset'](_0x35565f[_0x936f('0x31')][_0x936f('0x1d')]);}return _0x5e291f[_0x936f('0x64')](_0x38d4be);}})['then'](function(_0x2500ba){if(_0x2500ba){return _0x2500ba?{'count':_0x1289da,'rows':_0x2500ba}:null;}})[_0x936f('0x25')](respondWithResult(_0x108484,null))[_0x936f('0x4d')](handleError(_0x108484,null));};exports[_0x936f('0x65')]=function(_0x155091,_0x4a510b,_0x37cbf0){var _0x2e3713,_0x54a6e3;var _0x19edd4=[];var _0x26563d=moment()[_0x936f('0x66')](_0x936f('0x67'));return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x155091[_0x936f('0x44')]['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x4a510b,null))['then'](function(_0x1051df){if(_0x1051df){_0x54a6e3=_0x1051df;return _0x1051df[_0x936f('0x65')](_0x155091[_0x936f('0x47')][_0x936f('0x68')],_[_0x936f('0x51')](_0x155091[_0x936f('0x47')],['ids','id'])||{});}return null;})[_0x936f('0x69')](function(_0x5e9275){var _0x2ea615;var _0x519c60;_0x2e3713=_0x5e9275||[];var _0x3d114b=[];if(_0x5e9275){for(var _0xc26b80=0x0;_0xc26b80<_0x5e9275[_0x936f('0x37')];_0xc26b80+=0x1){var _0x1cd80f=_0x5e9275[_0xc26b80][_0x936f('0x26')]({'plain':!![]});_0x54a6e3[_0x936f('0x6a')]=_0x155091[_0x936f('0x47')][_0x936f('0x6a')]?_0x155091['body'][_0x936f('0x6a')]:_0x54a6e3[_0x936f('0x6a')];switch(_0x54a6e3[_0x936f('0x6a')]){case _0x936f('0x6b'):_0x2ea615=squel['insert']()[_0x936f('0x6c')]('cm_hopper')[_0x936f('0x6d')]([_0x936f('0x6e'),_0x936f('0x6f'),_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),_0x936f('0x52'),_0x936f('0x53')],squel['select']()[_0x936f('0x72')]('phone',_0x936f('0x6e'))[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x6f'))['field']('id',_0x936f('0x70'))[_0x936f('0x72')](_0x1cd80f[_0x936f('0x74')]['toString'](),'ListId')[_0x936f('0x72')](_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')](),_0x936f('0x5e'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))['from'](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')['where'](_0x936f('0x77'),_0x1cd80f['CmListId'][_0x936f('0x75')]())[_0x936f('0x3c')](_0x936f('0x78'))[_0x936f('0x3c')](_0x936f('0x79'),squel[_0x936f('0x7a')]()['field']('COALESCE(calleridnum,\x27\x27)')[_0x936f('0x7b')](_0x936f('0x7c'))[_0x936f('0x3c')](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')]()))[_0x936f('0x3c')](_0x936f('0x79'),squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x7e'))[_0x936f('0x7b')]('cm_hopper')['where'](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id']['toString']())))[_0x936f('0x75')]();break;case _0x936f('0x7f'):_0x2ea615=squel[_0x936f('0x80')]()[_0x936f('0x6c')]('cm_hopper')[_0x936f('0x6d')]([_0x936f('0x6e'),_0x936f('0x6f'),_0x936f('0x70'),_0x936f('0x71'),'CampaignId','createdAt',_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x6e'),'phone')[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x6f'))[_0x936f('0x72')]('id','ContactId')[_0x936f('0x72')](_0x1cd80f[_0x936f('0x74')]['toString'](),_0x936f('0x71'))[_0x936f('0x72')](_0x155091[_0x936f('0x44')]['id'][_0x936f('0x75')](),_0x936f('0x5e'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))[_0x936f('0x7b')](_0x936f('0x76'))['where']('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x1cd80f[_0x936f('0x74')][_0x936f('0x75')]())['where']('phone\x20IS\x20NOT\x20NULL')[_0x936f('0x3c')]('phone\x20NOT\x20IN\x20(?)',squel[_0x936f('0x7a')]()[_0x936f('0x72')]('COALESCE(phone,\x27\x27)')[_0x936f('0x7b')](_0x936f('0x81'))['where'](_0x936f('0x7d'),_0x155091[_0x936f('0x44')]['id']['toString']())))[_0x936f('0x75')]();break;default:_0x2ea615=squel[_0x936f('0x80')]()[_0x936f('0x6c')](_0x936f('0x81'))[_0x936f('0x6d')]([_0x936f('0x6e'),'scheduledAt',_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),_0x936f('0x52'),_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x6e'),_0x936f('0x6e'))[_0x936f('0x72')]('NOW()',_0x936f('0x6f'))[_0x936f('0x72')]('id',_0x936f('0x70'))[_0x936f('0x72')](_0x1cd80f['CmListId'][_0x936f('0x75')](),_0x936f('0x71'))['field'](_0x155091['params']['id'][_0x936f('0x75')](),_0x936f('0x5e'))['field']('\x27'+_0x26563d+'\x27',_0x936f('0x52'))[_0x936f('0x72')]('\x27'+_0x26563d+'\x27',_0x936f('0x53'))[_0x936f('0x7b')](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x1cd80f[_0x936f('0x74')]['toString']())[_0x936f('0x3c')](_0x936f('0x78')))[_0x936f('0x75')]();}_0x519c60=squel[_0x936f('0x80')]()[_0x936f('0x6c')]('cm_hopper_additional_phones')[_0x936f('0x6d')]([_0x936f('0x82'),_0x936f('0x6f'),_0x936f('0x6e'),_0x936f('0x83'),_0x936f('0x52'),_0x936f('0x53')],squel[_0x936f('0x7a')]()[_0x936f('0x72')](_0x936f('0x84'),'id')[_0x936f('0x72')](_0x936f('0x73'),'scheduledAt')[_0x936f('0x72')](_0x936f('0x85'),_0x936f('0x6e'))[_0x936f('0x72')]('ci.OrderBY','OrderBy')['field']('\x27'+_0x26563d+'\x27','createdAt')['field']('\x27'+_0x26563d+'\x27',_0x936f('0x53'))['from'](_0x936f('0x86'),'ci')[_0x936f('0x87')](_0x936f('0x81'),'h','h.ContactId\x20=\x20ci.CmContactId')[_0x936f('0x3c')](_0x936f('0x88'),_0x1cd80f[_0x936f('0x74')][_0x936f('0x75')]())[_0x936f('0x3c')](_0x936f('0x89'),_0x155091['params']['id']['toString']())[_0x936f('0x3c')](_0x936f('0x8a'),_0x26563d))[_0x936f('0x75')]();_0x3d114b[_0x936f('0x8b')](db[_0x936f('0x8c')][_0x936f('0x31')](_0x2ea615));_0x19edd4[_0x936f('0x8b')](db[_0x936f('0x8c')][_0x936f('0x31')](_0x519c60));}return BPromise[_0x936f('0x8d')](_0x3d114b);}})[_0x936f('0x25')](function(){return BPromise[_0x936f('0x8d')](_0x19edd4);})[_0x936f('0x25')](function(){return _0x2e3713;})['then'](respondWithResult(_0x4a510b,null))[_0x936f('0x4d')](handleError(_0x4a510b,null));};exports[_0x936f('0x8e')]=function(_0x1f3800,_0x4ee6be,_0x3e5f09){return db['Campaign'][_0x936f('0x4b')]({'where':{'id':_0x1f3800[_0x936f('0x44')]['id']}})['then'](handleEntityNotFound(_0x4ee6be,null))[_0x936f('0x25')](function(_0x4f5860){if(_0x4f5860){return _0x4f5860['removeLists'](_0x1f3800[_0x936f('0x31')][_0x936f('0x68')]);}})['then'](function(_0xd095e0){if(_0xd095e0){return db['CmHopper']['destroy']({'where':{'ListId':_0x1f3800[_0x936f('0x31')]['ids'],'CampaignId':_0x1f3800['params']['id']}})[_0x936f('0x25')](function(){return _0xd095e0;});}})['then'](respondWithStatusCode(_0x4ee6be,null))['catch'](handleError(_0x4ee6be,null));};exports[_0x936f('0x8f')]=function(_0x123911,_0x45a11c,_0x3d7cf2){var _0x112783={};var _0x209f09={};var _0x1e37f8;var _0x1c5c17;return db[_0x936f('0x40')][_0x936f('0x5c')]({'where':{'id':_0x123911[_0x936f('0x44')]['id']}})['then'](handleEntityNotFound(_0x45a11c,null))[_0x936f('0x25')](function(_0xec5752){if(_0xec5752){_0x1e37f8=_0xec5752;_0x209f09[_0x936f('0x30')]=_[_0x936f('0x32')](db['CmList'][_0x936f('0x45')]);_0x209f09[_0x936f('0x31')]=_['keys'](_0x123911[_0x936f('0x31')]);_0x209f09['filters']=_[_0x936f('0x34')](_0x209f09[_0x936f('0x30')],_0x209f09['query']);_0x112783[_0x936f('0x35')]=_['intersection'](_0x209f09['model'],qs[_0x936f('0x36')](_0x123911[_0x936f('0x31')][_0x936f('0x36')]));_0x112783[_0x936f('0x35')]=_0x112783[_0x936f('0x35')][_0x936f('0x37')]?_0x112783[_0x936f('0x35')]:_0x209f09['model'];_0x112783[_0x936f('0x3a')]=qs[_0x936f('0x3b')](_0x123911[_0x936f('0x31')][_0x936f('0x3b')]);_0x112783['where']=qs[_0x936f('0x33')](_[_0x936f('0x59')](_0x123911['query'],_0x209f09['filters']));if(_0x123911[_0x936f('0x31')][_0x936f('0x5a')]){_0x112783[_0x936f('0x3c')]=_[_0x936f('0x3d')](_0x112783[_0x936f('0x3c')],{'$or':_[_0x936f('0x2c')](_0x112783[_0x936f('0x35')],function(_0x16c62a){var _0x5a8399={};_0x5a8399[_0x16c62a]={'$like':'%'+_0x123911[_0x936f('0x31')][_0x936f('0x5a')]+'%'};return _0x5a8399;})});}_0x112783=_[_0x936f('0x3d')]({},_0x112783,_0x123911[_0x936f('0x3f')]);return _0x1e37f8[_0x936f('0x8f')](_0x112783);}})[_0x936f('0x25')](function(_0x319e38){if(_0x319e38){_0x1c5c17=_0x319e38[_0x936f('0x37')];if(!_0x123911['query']['hasOwnProperty'](_0x936f('0x39'))){_0x112783['limit']=qs[_0x936f('0x20')](_0x123911[_0x936f('0x31')][_0x936f('0x20')]);_0x112783[_0x936f('0x1d')]=qs['offset'](_0x123911[_0x936f('0x31')][_0x936f('0x1d')]);}return _0x1e37f8[_0x936f('0x8f')](_0x112783);}})[_0x936f('0x25')](function(_0x4c11dd){if(_0x4c11dd){return _0x4c11dd?{'count':_0x1c5c17,'rows':_0x4c11dd}:null;}})[_0x936f('0x25')](respondWithResult(_0x45a11c,null))['catch'](handleError(_0x45a11c,null));};exports[_0x936f('0x90')]=function(_0x16b57e,_0x12f9a8,_0x44b415){var _0x58cabc,_0x1f64ee;var _0x447018=[];var _0x5f4d16=moment()[_0x936f('0x66')](_0x936f('0x67'));return db['Campaign'][_0x936f('0x4b')]({'where':{'id':_0x16b57e['params']['id']}})['then'](handleEntityNotFound(_0x12f9a8,null))[_0x936f('0x25')](function(_0xa1c8e9){if(_0xa1c8e9){_0x1f64ee=_0xa1c8e9;return _0xa1c8e9['addBlackLists'](_0x16b57e[_0x936f('0x47')][_0x936f('0x68')],_[_0x936f('0x51')](_0x16b57e[_0x936f('0x47')],[_0x936f('0x68'),'id'])||{});}return null;})['spread'](function(_0x4cf618){var _0x1cc656;var _0x47b984;_0x58cabc=_0x4cf618||[];var _0x43bc68=[];if(_0x4cf618){for(var _0x65f6fe=0x0;_0x65f6fe<_0x4cf618[_0x936f('0x37')];_0x65f6fe+=0x1){var _0x5b9899=_0x4cf618[_0x65f6fe]['get']({'plain':!![]});_0x1cc656=squel[_0x936f('0x80')]()[_0x936f('0x6c')](_0x936f('0x91'))['fromQuery']([_0x936f('0x6e'),_0x936f('0x70'),_0x936f('0x71'),_0x936f('0x5e'),'createdAt','updatedAt'],squel['select']()[_0x936f('0x72')]('phone',_0x936f('0x6e'))['field']('id',_0x936f('0x70'))[_0x936f('0x72')](_0x5b9899['CmListId'][_0x936f('0x75')](),_0x936f('0x71'))[_0x936f('0x72')](_0x16b57e['params']['id']['toString'](),_0x936f('0x5e'))[_0x936f('0x72')](_0x936f('0x73'),_0x936f('0x52'))['field'](_0x936f('0x73'),'updatedAt')['from'](_0x936f('0x76'))[_0x936f('0x3c')]('deletedAt\x20IS\x20NULL')[_0x936f('0x3c')](_0x936f('0x77'),_0x5b9899[_0x936f('0x74')][_0x936f('0x75')]())['where'](_0x936f('0x78')))[_0x936f('0x75')]();_0x43bc68['push'](db[_0x936f('0x8c')][_0x936f('0x31')](_0x1cc656));}return BPromise[_0x936f('0x8d')](_0x43bc68);}})['then'](function(){return _0x58cabc;})['then'](respondWithResult(_0x12f9a8,null))[_0x936f('0x4d')](handleError(_0x12f9a8,null));};exports[_0x936f('0x92')]=function(_0x2c6cfc,_0x216b7d,_0x4dcd57){return db[_0x936f('0x40')][_0x936f('0x4b')]({'where':{'id':_0x2c6cfc['params']['id']}})[_0x936f('0x25')](handleEntityNotFound(_0x216b7d,null))[_0x936f('0x25')](function(_0x2b0d0d){if(_0x2b0d0d){return _0x2b0d0d[_0x936f('0x92')](_0x2c6cfc[_0x936f('0x31')][_0x936f('0x68')]);}})[_0x936f('0x25')](function(_0x48fa49){if(_0x48fa49){return db[_0x936f('0x62')]['destroy']({'where':{'ListId':_0x2c6cfc[_0x936f('0x31')][_0x936f('0x68')],'CampaignId':_0x2c6cfc['params']['id']}})[_0x936f('0x25')](function(){return _0x48fa49;});}})[_0x936f('0x25')](respondWithStatusCode(_0x216b7d,null))['catch'](handleError(_0x216b7d,null));};
\ No newline at end of file
index fbf4f91..1123f98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x280c2e,_0x335764){var _0x249a00=function(_0x387feb){while(--_0x387feb){_0x280c2e['push'](_0x280c2e['shift']());}};_0x249a00(++_0x335764);}(_0x7a54,0x106));var _0x47a5=function(_0x2091f7,_0x2c5e33){_0x2091f7=_0x2091f7-0x0;var _0x5be3be=_0x7a54[_0x2091f7];return _0x5be3be;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./campaign.attributes','exports','Campaign','campaigns','lodash','util'];(function(_0x331dd8,_0x15e211){var _0x56408f=function(_0x576ffd){while(--_0x576ffd){_0x331dd8['push'](_0x331dd8['shift']());}};_0x56408f(++_0x15e211);}(_0x7a54,0x106));var _0x47a5=function(_0x6c793b,_0x36a422){_0x6c793b=_0x6c793b-0x0;var _0xea9b22=_0x7a54[_0x6c793b];return _0xea9b22;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9b882da..4fc2bfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x21a3=['include','model','GetCampaign','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','error','message','result','Campaign','findAll','options','raw','where','attributes','limit','map'];(function(_0x30707b,_0x433066){var _0x1d4108=function(_0x21d849){while(--_0x21d849){_0x30707b['push'](_0x30707b['shift']());}};_0x1d4108(++_0x433066);}(_0x21a3,0x66));var _0x321a=function(_0xf1b134,_0xb399dd){_0xf1b134=_0xf1b134-0x0;var _0x139dbb=_0x21a3[_0xf1b134];return _0x139dbb;};'use strict';var _=require(_0x321a('0x0'));var util=require('util');var moment=require(_0x321a('0x1'));var BPromise=require(_0x321a('0x2'));var rs=require(_0x321a('0x3'));var fs=require('fs');var Redis=require(_0x321a('0x4'));var db=require(_0x321a('0x5'))['db'];var utils=require(_0x321a('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x321a('0x7'));var jayson=require(_0x321a('0x8'));var client=jayson[_0x321a('0x9')][_0x321a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f3b81,_0x388901,_0x24a04c){return new BPromise(function(_0x10c1d3,_0xdfd6b8){return client[_0x321a('0xb')](_0x5f3b81,_0x24a04c)[_0x321a('0xc')](function(_0x2c52dc){logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,_0x321a('0xf'));logger[_0x321a('0x10')](_0x321a('0x11'),_0x388901,'request\x20sent',JSON[_0x321a('0x12')](_0x2c52dc));if(_0x2c52dc[_0x321a('0x13')]){if(_0x2c52dc['error']['code']===0x1f4){logger[_0x321a('0x13')]('Campaign,\x20%s,\x20%s',_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0xdfd6b8(_0x2c52dc['error']['message']);}logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);return _0x10c1d3(_0x2c52dc[_0x321a('0x13')][_0x321a('0x14')]);}else{logger[_0x321a('0xd')](_0x321a('0xe'),_0x388901,'request\x20sent');_0x10c1d3(_0x2c52dc[_0x321a('0x15')][_0x321a('0x14')]);}})['catch'](function(_0x45ceb2){logger[_0x321a('0x13')](_0x321a('0xe'),_0x388901,_0x45ceb2);_0xdfd6b8(_0x45ceb2);});});}exports['GetCampaign']=function(_0x5b1810){var _0x464bd7=this;return new Promise(function(_0x35fd6f,_0x58595b){return db[_0x321a('0x16')][_0x321a('0x17')]({'raw':_0x5b1810[_0x321a('0x18')]?_0x5b1810['options'][_0x321a('0x19')]===undefined?!![]:![]:!![],'where':_0x5b1810[_0x321a('0x18')]?_0x5b1810[_0x321a('0x18')][_0x321a('0x1a')]||null:null,'attributes':_0x5b1810[_0x321a('0x18')]?_0x5b1810[_0x321a('0x18')][_0x321a('0x1b')]||null:null,'limit':_0x5b1810[_0x321a('0x18')]?_0x5b1810[_0x321a('0x18')][_0x321a('0x1c')]||null:null,'include':_0x5b1810[_0x321a('0x18')]?_0x5b1810[_0x321a('0x18')]['include']?_[_0x321a('0x1d')](_0x5b1810[_0x321a('0x18')][_0x321a('0x1e')],function(_0x5ae154){return{'model':db[_0x5ae154[_0x321a('0x1f')]],'as':_0x5ae154['as'],'attributes':_0x5ae154[_0x321a('0x1b')],'include':_0x5ae154['include']?_['map'](_0x5ae154[_0x321a('0x1e')],function(_0x5a66c2){return{'model':db[_0x5a66c2[_0x321a('0x1f')]],'as':_0x5a66c2['as'],'attributes':_0x5a66c2[_0x321a('0x1b')],'include':_0x5a66c2[_0x321a('0x1e')]?_[_0x321a('0x1d')](_0x5a66c2[_0x321a('0x1e')],function(_0xdce138){return{'model':db[_0xdce138['model']],'as':_0xdce138['as'],'attributes':_0xdce138['attributes']};}):[]};}):[]};}):[]:[]})[_0x321a('0xc')](function(_0x105216){logger[_0x321a('0xd')]('GetCampaign',_0x5b1810);logger[_0x321a('0x10')](_0x321a('0x20'),_0x5b1810,JSON[_0x321a('0x12')](_0x105216));_0x35fd6f(_0x105216);})['catch'](function(_0x8a09bb){logger[_0x321a('0x13')](_0x321a('0x20'),_0x8a09bb[_0x321a('0x14')],_0x5b1810);_0x58595b(_0x464bd7[_0x321a('0x13')](0x1f4,_0x8a09bb[_0x321a('0x14')]));});});};
\ No newline at end of file
+var _0x851d=['options','raw','where','attributes','limit','include','map','model','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','Campaign,\x20%s,\x20%s','debug','Campaign,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','GetCampaign','findAll'];(function(_0x1809c5,_0x46cabc){var _0x5254a4=function(_0xd1d319){while(--_0xd1d319){_0x1809c5['push'](_0x1809c5['shift']());}};_0x5254a4(++_0x46cabc);}(_0x851d,0x69));var _0xd851=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x851d[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xd851('0x0'));var util=require('util');var moment=require(_0xd851('0x1'));var BPromise=require(_0xd851('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd851('0x3'));var db=require(_0xd851('0x4'))['db'];var utils=require(_0xd851('0x5'));var logger=require(_0xd851('0x6'))(_0xd851('0x7'));var config=require(_0xd851('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xd851('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b63e4,_0x3d2383,_0x2f9540){return new BPromise(function(_0x60bef0,_0x4554d8){return client['request'](_0x2b63e4,_0x2f9540)[_0xd851('0xa')](function(_0x51bf16){logger[_0xd851('0xb')](_0xd851('0xc'),_0x3d2383,'request\x20sent');logger[_0xd851('0xd')](_0xd851('0xe'),_0x3d2383,_0xd851('0xf'),JSON[_0xd851('0x10')](_0x51bf16));if(_0x51bf16['error']){if(_0x51bf16['error'][_0xd851('0x11')]===0x1f4){logger[_0xd851('0x12')](_0xd851('0xc'),_0x3d2383,_0x51bf16[_0xd851('0x12')]['message']);return _0x4554d8(_0x51bf16[_0xd851('0x12')][_0xd851('0x13')]);}logger['error'](_0xd851('0xc'),_0x3d2383,_0x51bf16[_0xd851('0x12')][_0xd851('0x13')]);return _0x60bef0(_0x51bf16['error'][_0xd851('0x13')]);}else{logger[_0xd851('0xb')](_0xd851('0xc'),_0x3d2383,_0xd851('0xf'));_0x60bef0(_0x51bf16[_0xd851('0x14')][_0xd851('0x13')]);}})['catch'](function(_0x448e31){logger[_0xd851('0x12')](_0xd851('0xc'),_0x3d2383,_0x448e31);_0x4554d8(_0x448e31);});});}exports[_0xd851('0x15')]=function(_0x12b309){var _0x2be9c9=this;return new Promise(function(_0x3559a1,_0x5e7bb0){return db['Campaign'][_0xd851('0x16')]({'raw':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x18')]===undefined?!![]:![]:!![],'where':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x19')]||null:null,'attributes':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x1a')]||null:null,'limit':_0x12b309[_0xd851('0x17')]?_0x12b309[_0xd851('0x17')][_0xd851('0x1b')]||null:null,'include':_0x12b309['options']?_0x12b309[_0xd851('0x17')][_0xd851('0x1c')]?_['map'](_0x12b309[_0xd851('0x17')][_0xd851('0x1c')],function(_0x2f888e){return{'model':db[_0x2f888e['model']],'as':_0x2f888e['as'],'attributes':_0x2f888e['attributes'],'include':_0x2f888e['include']?_[_0xd851('0x1d')](_0x2f888e[_0xd851('0x1c')],function(_0x2f2009){return{'model':db[_0x2f2009[_0xd851('0x1e')]],'as':_0x2f2009['as'],'attributes':_0x2f2009[_0xd851('0x1a')],'include':_0x2f2009['include']?_[_0xd851('0x1d')](_0x2f2009['include'],function(_0x412bbc){return{'model':db[_0x412bbc[_0xd851('0x1e')]],'as':_0x412bbc['as'],'attributes':_0x412bbc[_0xd851('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd851('0xa')](function(_0x337da5){logger[_0xd851('0xb')]('GetCampaign',_0x12b309);logger[_0xd851('0xd')](_0xd851('0x15'),_0x12b309,JSON[_0xd851('0x10')](_0x337da5));_0x3559a1(_0x337da5);})[_0xd851('0x1f')](function(_0x6c52fb){logger[_0xd851('0x12')](_0xd851('0x15'),_0x6c52fb[_0xd851('0x13')],_0x12b309);_0x5e7bb0(_0x2be9c9[_0xd851('0x12')](0x1f4,_0x6c52fb[_0xd851('0x13')]));});});};
\ No newline at end of file
index 6e8e4b5..7cf857c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x86e4=['index','/:id','show','/:id/hoppers','getHoppers','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/hopper_black','getHopperBlacks','/:id/lists','getLists','getBlackLists','post','/:id/clone','clone','addLists','addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./campaign.controller','get','isAuthenticated'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x86e4,0x149));var _0x486e=function(_0x59c683,_0x209444){_0x59c683=_0x59c683-0x0;var _0x47251b=_0x86e4[_0x59c683];return _0x47251b;};'use strict';var multer=require(_0x486e('0x0'));var util=require(_0x486e('0x1'));var path=require(_0x486e('0x2'));var timeout=require(_0x486e('0x3'));var express=require(_0x486e('0x4'));var router=express[_0x486e('0x5')]();var fs_extra=require(_0x486e('0x6'));var auth=require(_0x486e('0x7'));var interaction=require(_0x486e('0x8'));var config=require(_0x486e('0x9'));var controller=require(_0x486e('0xa'));router[_0x486e('0xb')]('/',auth[_0x486e('0xc')](),controller[_0x486e('0xd')]);router['get'](_0x486e('0xe'),auth[_0x486e('0xc')](),controller[_0x486e('0xf')]);router['get'](_0x486e('0x10'),auth[_0x486e('0xc')](),controller[_0x486e('0x11')]);router['get']('/:id/hopper_histories',auth[_0x486e('0xc')](),controller[_0x486e('0x12')]);router['get'](_0x486e('0x13'),auth[_0x486e('0xc')](),controller[_0x486e('0x14')]);router['get'](_0x486e('0x15'),auth[_0x486e('0xc')](),controller[_0x486e('0x16')]);router[_0x486e('0xb')](_0x486e('0x17'),auth[_0x486e('0xc')](),controller[_0x486e('0x18')]);router[_0x486e('0xb')]('/:id/blacklists',auth[_0x486e('0xc')](),controller[_0x486e('0x19')]);router[_0x486e('0x1a')]('/',auth[_0x486e('0xc')](),controller['create']);router['post'](_0x486e('0x1b'),auth[_0x486e('0xc')](),controller[_0x486e('0x1c')]);router[_0x486e('0x1a')](_0x486e('0x17'),auth[_0x486e('0xc')](),controller[_0x486e('0x1d')]);router[_0x486e('0x1a')]('/:id/blacklists',auth[_0x486e('0xc')](),controller[_0x486e('0x1e')]);router[_0x486e('0x1f')](_0x486e('0xe'),auth['isAuthenticated'](),controller[_0x486e('0x20')]);router['delete']('/:id',auth[_0x486e('0xc')](),controller[_0x486e('0x21')]);router[_0x486e('0x22')]('/:id/lists',auth['isAuthenticated'](),controller[_0x486e('0x23')]);router[_0x486e('0x22')]('/:id/blacklists',auth['isAuthenticated'](),controller[_0x486e('0x24')]);module[_0x486e('0x25')]=router;
\ No newline at end of file
+var _0x2900=['./campaign.controller','get','isAuthenticated','index','/:id','/:id/hoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','update','destroy','delete','removeLists','removeBlackLists','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x2900,0x108));var _0x0290=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x2900[_0x618414];return _0x21c19a;};'use strict';var multer=require(_0x0290('0x0'));var util=require(_0x0290('0x1'));var path=require(_0x0290('0x2'));var timeout=require('connect-timeout');var express=require(_0x0290('0x3'));var router=express[_0x0290('0x4')]();var fs_extra=require(_0x0290('0x5'));var auth=require(_0x0290('0x6'));var interaction=require(_0x0290('0x7'));var config=require('../../config/environment');var controller=require(_0x0290('0x8'));router[_0x0290('0x9')]('/',auth[_0x0290('0xa')](),controller[_0x0290('0xb')]);router[_0x0290('0x9')](_0x0290('0xc'),auth[_0x0290('0xa')](),controller['show']);router[_0x0290('0x9')](_0x0290('0xd'),auth[_0x0290('0xa')](),controller['getHoppers']);router[_0x0290('0x9')](_0x0290('0xe'),auth['isAuthenticated'](),controller[_0x0290('0xf')]);router[_0x0290('0x9')](_0x0290('0x10'),auth['isAuthenticated'](),controller[_0x0290('0x11')]);router[_0x0290('0x9')]('/:id/hopper_black',auth['isAuthenticated'](),controller['getHopperBlacks']);router[_0x0290('0x9')](_0x0290('0x12'),auth[_0x0290('0xa')](),controller['getLists']);router[_0x0290('0x9')](_0x0290('0x13'),auth[_0x0290('0xa')](),controller[_0x0290('0x14')]);router[_0x0290('0x15')]('/',auth[_0x0290('0xa')](),controller[_0x0290('0x16')]);router[_0x0290('0x15')](_0x0290('0x17'),auth[_0x0290('0xa')](),controller[_0x0290('0x18')]);router[_0x0290('0x15')](_0x0290('0x12'),auth[_0x0290('0xa')](),controller[_0x0290('0x19')]);router[_0x0290('0x15')](_0x0290('0x13'),auth['isAuthenticated'](),controller[_0x0290('0x1a')]);router[_0x0290('0x1b')](_0x0290('0xc'),auth['isAuthenticated'](),controller[_0x0290('0x1c')]);router['delete'](_0x0290('0xc'),auth[_0x0290('0xa')](),controller[_0x0290('0x1d')]);router[_0x0290('0x1e')]('/:id/lists',auth[_0x0290('0xa')](),controller[_0x0290('0x1f')]);router[_0x0290('0x1e')](_0x0290('0x13'),auth['isAuthenticated'](),controller[_0x0290('0x20')]);module[_0x0290('0x21')]=router;
\ No newline at end of file
index 28ea308..772a7c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a23=['VIRTUAL','getDataValue','key','STRING'];(function(_0x509171,_0xf16fca){var _0x1dd544=function(_0x45820){while(--_0x45820){_0x509171['push'](_0x509171['shift']());}};_0x1dd544(++_0xf16fca);}(_0x7a23,0x187));var _0x37a2=function(_0x3df316,_0x541115){_0x3df316=_0x3df316-0x0;var _0x46dd61=_0x7a23[_0x3df316];return _0x46dd61;};'use strict';var Sequelize=require('sequelize');module['exports']={'key':{'type':Sequelize[_0x37a2('0x0')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x37a2('0x1')],'get':function(){return this[_0x37a2('0x2')](_0x37a2('0x3'));}}};
\ No newline at end of file
+var _0x4bb8=['getDataValue','key','sequelize','exports','STRING'];(function(_0x3811ae,_0x2e3f4a){var _0x5873a1=function(_0x791f90){while(--_0x791f90){_0x3811ae['push'](_0x3811ae['shift']());}};_0x5873a1(++_0x2e3f4a);}(_0x4bb8,0x151));var _0x84bb=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4bb8[_0x3bf83f];return _0x22c4a9;};'use strict';var Sequelize=require(_0x84bb('0x0'));module[_0x84bb('0x1')]={'key':{'type':Sequelize[_0x84bb('0x2')],'allowNull':![]},'value':{'type':Sequelize['TEXT'],'allowNull':![]},'description':{'type':Sequelize[_0x84bb('0x2')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x84bb('0x3')](_0x84bb('0x4'));}}};
\ No newline at end of file
index 670586b..5bd09d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb40c=['role','UserProfileSection','CannedAnswers','userProfileId','autoAssociation','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','offset','limit','undefined','count','status','set','Content-Range','json','apply','reject','save','update','destroy','then','get','UserProfileResource','error','stack','send','map','CannedAnswer','rawAttributes','type','key','name','keys','filters','intersection','model','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','where','filter','merge','options','rows','show','params','includeAll','include','find','catch','body','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','create','user'];(function(_0x47099e,_0x3d9881){var _0x5a26c6=function(_0x11e099){while(--_0x11e099){_0x47099e['push'](_0x47099e['shift']());}};_0x5a26c6(++_0x3d9881);}(_0xb40c,0x16d));var _0xcb40=function(_0x3e8e78,_0x2d217b){_0x3e8e78=_0x3e8e78-0x0;var _0x435ad6=_0xb40c[_0x3e8e78];return _0x435ad6;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xcb40('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcb40('0x1'));var moment=require(_0xcb40('0x2'));var BPromise=require(_0xcb40('0x3'));var Mustache=require(_0xcb40('0x4'));var util=require('util');var path=require('path');var sox=require(_0xcb40('0x5'));var csv=require(_0xcb40('0x6'));var ejs=require(_0xcb40('0x7'));var fs=require('fs');var fs_extra=require(_0xcb40('0x8'));var _=require(_0xcb40('0x9'));var squel=require(_0xcb40('0xa'));var crypto=require(_0xcb40('0xb'));var jsforce=require(_0xcb40('0xc'));var deskjs=require(_0xcb40('0xd'));var toCsv=require('to-csv');var querystring=require(_0xcb40('0xe'));var Papa=require(_0xcb40('0xf'));var Redis=require(_0xcb40('0x10'));var authService=require(_0xcb40('0x11'));var qs=require(_0xcb40('0x12'));var as=require(_0xcb40('0x13'));var hardwareService=require(_0xcb40('0x14'));var logger=require(_0xcb40('0x15'))(_0xcb40('0x16'));var utils=require(_0xcb40('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xcb40('0x18'))['db'];function respondWithStatusCode(_0x3534b2,_0x50d503){_0x50d503=_0x50d503||0xcc;return function(_0x26867f){if(_0x26867f){return _0x3534b2[_0xcb40('0x19')](_0x50d503);}return _0x3534b2['status'](_0x50d503)[_0xcb40('0x1a')]();};}function respondWithResult(_0x516a5e,_0x55d8ae){_0x55d8ae=_0x55d8ae||0xc8;return function(_0x4ad785){if(_0x4ad785){return _0x516a5e['status'](_0x55d8ae)['json'](_0x4ad785);}};}function respondWithFilteredResult(_0x349408,_0x3d83a8){return function(_0x46c854){if(_0x46c854){var _0x3596b9=typeof _0x3d83a8[_0xcb40('0x1b')]==='undefined'&&typeof _0x3d83a8[_0xcb40('0x1c')]===_0xcb40('0x1d');var _0x1d16be=_0x46c854[_0xcb40('0x1e')];var _0x99a2fe=_0x3596b9?0x0:_0x3d83a8[_0xcb40('0x1b')];var _0x1e2f10=_0x3596b9?_0x46c854['count']:_0x3d83a8[_0xcb40('0x1b')]+_0x3d83a8[_0xcb40('0x1c')];var _0x15e798;if(_0x1e2f10>=_0x1d16be){_0x1e2f10=_0x1d16be;_0x15e798=0xc8;}else{_0x15e798=0xce;}_0x349408[_0xcb40('0x1f')](_0x15e798);return _0x349408[_0xcb40('0x20')](_0xcb40('0x21'),_0x99a2fe+'-'+_0x1e2f10+'/'+_0x1d16be)[_0xcb40('0x22')](_0x46c854);}return null;};}function patchUpdates(_0x5069f1){return function(_0x382c17){try{jsonpatch[_0xcb40('0x23')](_0x382c17,_0x5069f1,!![]);}catch(_0x3fa6c7){return BPromise[_0xcb40('0x24')](_0x3fa6c7);}return _0x382c17[_0xcb40('0x25')]();};}function saveUpdates(_0x2e212c,_0x4aafec){return function(_0x223a01){if(_0x223a01){return _0x223a01[_0xcb40('0x26')](_0x2e212c)['then'](function(_0x3a44b3){return _0x3a44b3;});}return null;};}function removeEntity(_0x414880,_0xc8b79f){return function(_0x1eceaa){if(_0x1eceaa){return _0x1eceaa[_0xcb40('0x27')]()[_0xcb40('0x28')](function(){var _0x482ff6=_0x1eceaa[_0xcb40('0x29')]({'plain':!![]});var _0xd15ee4='CannedAnswers';return db[_0xcb40('0x2a')][_0xcb40('0x27')]({'where':{'type':_0xd15ee4,'resourceId':_0x482ff6['id']}})['then'](function(){return _0x1eceaa;});})[_0xcb40('0x28')](function(){_0x414880[_0xcb40('0x1f')](0xcc)[_0xcb40('0x1a')]();});}};}function handleEntityNotFound(_0x4725f1,_0x5b4e66){return function(_0x329d59){if(!_0x329d59){_0x4725f1[_0xcb40('0x19')](0x194);}return _0x329d59;};}function handleError(_0xc80dd,_0x449670){_0x449670=_0x449670||0x1f4;return function(_0xd15f98){logger[_0xcb40('0x2b')](_0xd15f98[_0xcb40('0x2c')]);if(_0xd15f98['name']){delete _0xd15f98['name'];}_0xc80dd[_0xcb40('0x1f')](_0x449670)[_0xcb40('0x2d')](_0xd15f98);};}exports['index']=function(_0x292bbe,_0x32c476){var _0x59b0a5={},_0x11fb9b={},_0x31a749={'count':0x0,'rows':[]};var _0x3a16ec=_[_0xcb40('0x2e')](db[_0xcb40('0x2f')][_0xcb40('0x30')],function(_0x161bd6){return{'name':_0x161bd6['fieldName'],'type':_0x161bd6[_0xcb40('0x31')][_0xcb40('0x32')]};});_0x11fb9b['model']=_[_0xcb40('0x2e')](_0x3a16ec,_0xcb40('0x33'));_0x11fb9b['query']=_[_0xcb40('0x34')](_0x292bbe['query']);_0x11fb9b[_0xcb40('0x35')]=_[_0xcb40('0x36')](_0x11fb9b[_0xcb40('0x37')],_0x11fb9b[_0xcb40('0x38')]);_0x59b0a5['attributes']=_[_0xcb40('0x36')](_0x11fb9b[_0xcb40('0x37')],qs[_0xcb40('0x39')](_0x292bbe[_0xcb40('0x38')]['fields']));_0x59b0a5[_0xcb40('0x3a')]=_0x59b0a5[_0xcb40('0x3a')][_0xcb40('0x3b')]?_0x59b0a5[_0xcb40('0x3a')]:_0x11fb9b[_0xcb40('0x37')];if(!_0x292bbe[_0xcb40('0x38')][_0xcb40('0x3c')](_0xcb40('0x3d'))){_0x59b0a5[_0xcb40('0x1c')]=qs[_0xcb40('0x1c')](_0x292bbe[_0xcb40('0x38')][_0xcb40('0x1c')]);_0x59b0a5[_0xcb40('0x1b')]=qs[_0xcb40('0x1b')](_0x292bbe[_0xcb40('0x38')][_0xcb40('0x1b')]);}_0x59b0a5[_0xcb40('0x3e')]=qs[_0xcb40('0x3f')](_0x292bbe[_0xcb40('0x38')][_0xcb40('0x3f')]);_0x59b0a5['where']=qs[_0xcb40('0x35')](_[_0xcb40('0x40')](_0x292bbe[_0xcb40('0x38')],_0x11fb9b[_0xcb40('0x35')]),_0x3a16ec);if(_0x292bbe[_0xcb40('0x38')]['filter']){_0x59b0a5[_0xcb40('0x41')]=_['merge'](_0x59b0a5[_0xcb40('0x41')],{'$or':[{'key':{'$like':'%'+_0x292bbe['query'][_0xcb40('0x42')]+'%'}},{'value':{'$like':'%'+_0x292bbe[_0xcb40('0x38')][_0xcb40('0x42')]+'%'}}]});}_0x59b0a5=_[_0xcb40('0x43')]({},_0x59b0a5,_0x292bbe[_0xcb40('0x44')]);var _0x5b05a7={'where':_0x59b0a5[_0xcb40('0x41')]};return db['CannedAnswer'][_0xcb40('0x1e')](_0x5b05a7)[_0xcb40('0x28')](function(_0x264cbf){_0x31a749[_0xcb40('0x1e')]=_0x264cbf;if(_0x292bbe[_0xcb40('0x38')]['includeAll']){_0x59b0a5['include']=[{'all':!![]}];}return db[_0xcb40('0x2f')]['findAll'](_0x59b0a5);})[_0xcb40('0x28')](function(_0x2341c1){_0x31a749[_0xcb40('0x45')]=_0x2341c1;return _0x31a749;})[_0xcb40('0x28')](respondWithFilteredResult(_0x32c476,_0x59b0a5))['catch'](handleError(_0x32c476,null));};exports[_0xcb40('0x46')]=function(_0x56e99a,_0x28cea1){var _0x37dc7a={'raw':!![],'where':{'id':_0x56e99a[_0xcb40('0x47')]['id']}},_0xd5086f={};_0xd5086f[_0xcb40('0x37')]=_[_0xcb40('0x34')](db[_0xcb40('0x2f')][_0xcb40('0x30')]);_0xd5086f['query']=_[_0xcb40('0x34')](_0x56e99a[_0xcb40('0x38')]);_0xd5086f[_0xcb40('0x35')]=_[_0xcb40('0x36')](_0xd5086f[_0xcb40('0x37')],_0xd5086f['query']);_0x37dc7a[_0xcb40('0x3a')]=_[_0xcb40('0x36')](_0xd5086f['model'],qs['fields'](_0x56e99a[_0xcb40('0x38')][_0xcb40('0x39')]));_0x37dc7a[_0xcb40('0x3a')]=_0x37dc7a[_0xcb40('0x3a')][_0xcb40('0x3b')]?_0x37dc7a['attributes']:_0xd5086f[_0xcb40('0x37')];if(_0x56e99a['query'][_0xcb40('0x48')]){_0x37dc7a[_0xcb40('0x49')]=[{'all':!![]}];}_0x37dc7a=_[_0xcb40('0x43')]({},_0x37dc7a,_0x56e99a['options']);return db[_0xcb40('0x2f')][_0xcb40('0x4a')](_0x37dc7a)[_0xcb40('0x28')](handleEntityNotFound(_0x28cea1,null))[_0xcb40('0x28')](respondWithResult(_0x28cea1,null))[_0xcb40('0x4b')](handleError(_0x28cea1,null));};exports[_0xcb40('0x26')]=function(_0x55cd8e,_0xb99035){if(_0x55cd8e[_0xcb40('0x4c')]['id']){delete _0x55cd8e[_0xcb40('0x4c')]['id'];}return db['CannedAnswer'][_0xcb40('0x4a')]({'where':{'id':_0x55cd8e[_0xcb40('0x47')]['id']}})[_0xcb40('0x28')](handleEntityNotFound(_0xb99035,null))[_0xcb40('0x28')](saveUpdates(_0x55cd8e[_0xcb40('0x4c')],null))[_0xcb40('0x28')](respondWithResult(_0xb99035,null))[_0xcb40('0x4b')](handleError(_0xb99035,null));};exports['destroy']=function(_0x5e7b7c,_0x5f32f2){return db[_0xcb40('0x2f')]['find']({'where':{'id':_0x5e7b7c[_0xcb40('0x47')]['id']}})['then'](handleEntityNotFound(_0x5f32f2,null))['then'](removeEntity(_0x5f32f2,null))[_0xcb40('0x4b')](handleError(_0x5f32f2,null));};exports['create']=function(_0x4c2a08,_0x23acaf){var _0x39c01d={'key':_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x32')]};if(_0x4c2a08['body']['MailAccountId']){_0x39c01d[_0xcb40('0x4d')]=_0x4c2a08['body'][_0xcb40('0x4d')];}else if(_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x4e')]){_0x39c01d[_0xcb40('0x4e')]=_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x4e')];}else if(_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x4f')]){_0x39c01d[_0xcb40('0x4f')]=_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x4f')];}else if(_0x4c2a08[_0xcb40('0x4c')]['ChatWebsiteId']){_0x39c01d[_0xcb40('0x50')]=_0x4c2a08[_0xcb40('0x4c')][_0xcb40('0x50')];}return db[_0xcb40('0x2f')]['find']({'where':_0x39c01d})[_0xcb40('0x28')](function(_0x135d31){if(_0x135d31){throw new db[(_0xcb40('0x51'))]['ValidationError'](_0xcb40('0x52'));}return db[_0xcb40('0x2f')][_0xcb40('0x53')](_0x4c2a08[_0xcb40('0x4c')]);})[_0xcb40('0x28')](function(_0x109737){var _0x7a8df1=_0x4c2a08[_0xcb40('0x54')][_0xcb40('0x29')]({'plain':!![]});if(!_0x7a8df1)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x7a8df1[_0xcb40('0x55')]===_0xcb40('0x54')){var _0x3183c6=_0x109737[_0xcb40('0x29')]({'plain':!![]});return db[_0xcb40('0x56')][_0xcb40('0x4a')]({'where':{'name':_0xcb40('0x57'),'userProfileId':_0x7a8df1[_0xcb40('0x58')]},'raw':!![]})['then'](function(_0x31acdd){if(_0x31acdd&&_0x31acdd[_0xcb40('0x59')]===0x0){return db[_0xcb40('0x2a')][_0xcb40('0x53')]({'name':_0x3183c6['name'],'resourceId':_0x3183c6['id'],'type':_0x31acdd['name'],'sectionId':_0x31acdd['id']},{})[_0xcb40('0x28')](function(){return _0x109737;});}else{return _0x109737;}})[_0xcb40('0x4b')](function(_0x565550){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x565550);throw _0x565550;});}return _0x109737;})[_0xcb40('0x28')](respondWithResult(_0x23acaf,0xc9))['catch'](handleError(_0x23acaf,null));};
\ No newline at end of file
+var _0xab6a=['count','set','Content-Range','apply','reject','save','update','then','destroy','CannedAnswers','UserProfileResource','sendStatus','error','stack','name','send','index','map','CannedAnswer','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','merge','filter','options','includeAll','rows','catch','show','keys','find','body','params','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','The\x20inserted\x20key\x20already\x20exists.','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','to-csv','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','status','end','json','offset','undefined','limit'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0xab6a,0x1e8));var _0xaab6=function(_0x34801d,_0x1f5090){_0x34801d=_0x34801d-0x0;var _0xee1580=_0xab6a[_0x34801d];return _0xee1580;};'use strict';var emlformat=require(_0xaab6('0x0'));var rimraf=require(_0xaab6('0x1'));var zipdir=require(_0xaab6('0x2'));var jsonpatch=require(_0xaab6('0x3'));var rp=require('request-promise');var moment=require(_0xaab6('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xaab6('0x5'));var util=require('util');var path=require(_0xaab6('0x6'));var sox=require('sox');var csv=require(_0xaab6('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xaab6('0x8'));var crypto=require(_0xaab6('0x9'));var jsforce=require(_0xaab6('0xa'));var deskjs=require(_0xaab6('0xb'));var toCsv=require(_0xaab6('0x7'));var querystring=require(_0xaab6('0xc'));var Papa=require('papaparse');var Redis=require(_0xaab6('0xd'));var authService=require(_0xaab6('0xe'));var qs=require(_0xaab6('0xf'));var as=require(_0xaab6('0x10'));var hardwareService=require(_0xaab6('0x11'));var logger=require(_0xaab6('0x12'))(_0xaab6('0x13'));var utils=require(_0xaab6('0x14'));var config=require(_0xaab6('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5339e1,_0x2baa5a){_0x2baa5a=_0x2baa5a||0xcc;return function(_0x356c0f){if(_0x356c0f){return _0x5339e1['sendStatus'](_0x2baa5a);}return _0x5339e1[_0xaab6('0x16')](_0x2baa5a)[_0xaab6('0x17')]();};}function respondWithResult(_0x52bdb1,_0x3f9dc){_0x3f9dc=_0x3f9dc||0xc8;return function(_0x5e3dba){if(_0x5e3dba){return _0x52bdb1[_0xaab6('0x16')](_0x3f9dc)[_0xaab6('0x18')](_0x5e3dba);}};}function respondWithFilteredResult(_0x461d02,_0x211876){return function(_0xbeeaaa){if(_0xbeeaaa){var _0x31152f=typeof _0x211876[_0xaab6('0x19')]===_0xaab6('0x1a')&&typeof _0x211876[_0xaab6('0x1b')]==='undefined';var _0x3c6f64=_0xbeeaaa[_0xaab6('0x1c')];var _0xc3f68c=_0x31152f?0x0:_0x211876[_0xaab6('0x19')];var _0x264fd6=_0x31152f?_0xbeeaaa['count']:_0x211876[_0xaab6('0x19')]+_0x211876[_0xaab6('0x1b')];var _0x447240;if(_0x264fd6>=_0x3c6f64){_0x264fd6=_0x3c6f64;_0x447240=0xc8;}else{_0x447240=0xce;}_0x461d02[_0xaab6('0x16')](_0x447240);return _0x461d02[_0xaab6('0x1d')](_0xaab6('0x1e'),_0xc3f68c+'-'+_0x264fd6+'/'+_0x3c6f64)[_0xaab6('0x18')](_0xbeeaaa);}return null;};}function patchUpdates(_0x5618b1){return function(_0x446284){try{jsonpatch[_0xaab6('0x1f')](_0x446284,_0x5618b1,!![]);}catch(_0x3008e5){return BPromise[_0xaab6('0x20')](_0x3008e5);}return _0x446284[_0xaab6('0x21')]();};}function saveUpdates(_0x115532,_0x1340bd){return function(_0x36aa98){if(_0x36aa98){return _0x36aa98[_0xaab6('0x22')](_0x115532)[_0xaab6('0x23')](function(_0x400db5){return _0x400db5;});}return null;};}function removeEntity(_0x58e2a2,_0x50a9c3){return function(_0x46fbd7){if(_0x46fbd7){return _0x46fbd7[_0xaab6('0x24')]()[_0xaab6('0x23')](function(){var _0x21abed=_0x46fbd7['get']({'plain':!![]});var _0x41d662=_0xaab6('0x25');return db[_0xaab6('0x26')][_0xaab6('0x24')]({'where':{'type':_0x41d662,'resourceId':_0x21abed['id']}})[_0xaab6('0x23')](function(){return _0x46fbd7;});})[_0xaab6('0x23')](function(){_0x58e2a2[_0xaab6('0x16')](0xcc)[_0xaab6('0x17')]();});}};}function handleEntityNotFound(_0x5ecf29,_0xfcc18){return function(_0x4761fb){if(!_0x4761fb){_0x5ecf29[_0xaab6('0x27')](0x194);}return _0x4761fb;};}function handleError(_0x1dac57,_0x30c976){_0x30c976=_0x30c976||0x1f4;return function(_0x179af4){logger[_0xaab6('0x28')](_0x179af4[_0xaab6('0x29')]);if(_0x179af4[_0xaab6('0x2a')]){delete _0x179af4['name'];}_0x1dac57[_0xaab6('0x16')](_0x30c976)[_0xaab6('0x2b')](_0x179af4);};}exports[_0xaab6('0x2c')]=function(_0x5ebdd4,_0x58c1f8){var _0x5351f8={},_0x519fa9={},_0x57f527={'count':0x0,'rows':[]};var _0x93b29e=_[_0xaab6('0x2d')](db[_0xaab6('0x2e')][_0xaab6('0x2f')],function(_0x146d8d){return{'name':_0x146d8d[_0xaab6('0x30')],'type':_0x146d8d[_0xaab6('0x31')][_0xaab6('0x32')]};});_0x519fa9[_0xaab6('0x33')]=_[_0xaab6('0x2d')](_0x93b29e,_0xaab6('0x2a'));_0x519fa9['query']=_['keys'](_0x5ebdd4[_0xaab6('0x34')]);_0x519fa9[_0xaab6('0x35')]=_[_0xaab6('0x36')](_0x519fa9[_0xaab6('0x33')],_0x519fa9[_0xaab6('0x34')]);_0x5351f8[_0xaab6('0x37')]=_[_0xaab6('0x36')](_0x519fa9['model'],qs[_0xaab6('0x38')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x38')]));_0x5351f8[_0xaab6('0x37')]=_0x5351f8['attributes']['length']?_0x5351f8['attributes']:_0x519fa9[_0xaab6('0x33')];if(!_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x39')]('nolimit')){_0x5351f8[_0xaab6('0x1b')]=qs['limit'](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x1b')]);_0x5351f8['offset']=qs[_0xaab6('0x19')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x19')]);}_0x5351f8['order']=qs[_0xaab6('0x3a')](_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x3a')]);_0x5351f8[_0xaab6('0x3b')]=qs['filters'](_[_0xaab6('0x3c')](_0x5ebdd4[_0xaab6('0x34')],_0x519fa9[_0xaab6('0x35')]),_0x93b29e);if(_0x5ebdd4[_0xaab6('0x34')]['filter']){_0x5351f8[_0xaab6('0x3b')]=_[_0xaab6('0x3d')](_0x5351f8[_0xaab6('0x3b')],{'$or':[{'key':{'$like':'%'+_0x5ebdd4['query']['filter']+'%'}},{'value':{'$like':'%'+_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x3e')]+'%'}}]});}_0x5351f8=_[_0xaab6('0x3d')]({},_0x5351f8,_0x5ebdd4[_0xaab6('0x3f')]);var _0x141bb={'where':_0x5351f8[_0xaab6('0x3b')]};return db[_0xaab6('0x2e')][_0xaab6('0x1c')](_0x141bb)[_0xaab6('0x23')](function(_0x2b5f7c){_0x57f527['count']=_0x2b5f7c;if(_0x5ebdd4[_0xaab6('0x34')][_0xaab6('0x40')]){_0x5351f8['include']=[{'all':!![]}];}return db[_0xaab6('0x2e')]['findAll'](_0x5351f8);})[_0xaab6('0x23')](function(_0x3fbccb){_0x57f527[_0xaab6('0x41')]=_0x3fbccb;return _0x57f527;})[_0xaab6('0x23')](respondWithFilteredResult(_0x58c1f8,_0x5351f8))[_0xaab6('0x42')](handleError(_0x58c1f8,null));};exports[_0xaab6('0x43')]=function(_0x30d95f,_0x6a092a){var _0x200183={'raw':!![],'where':{'id':_0x30d95f['params']['id']}},_0x1fdb12={};_0x1fdb12['model']=_[_0xaab6('0x44')](db[_0xaab6('0x2e')]['rawAttributes']);_0x1fdb12[_0xaab6('0x34')]=_[_0xaab6('0x44')](_0x30d95f[_0xaab6('0x34')]);_0x1fdb12[_0xaab6('0x35')]=_[_0xaab6('0x36')](_0x1fdb12[_0xaab6('0x33')],_0x1fdb12[_0xaab6('0x34')]);_0x200183[_0xaab6('0x37')]=_[_0xaab6('0x36')](_0x1fdb12[_0xaab6('0x33')],qs[_0xaab6('0x38')](_0x30d95f[_0xaab6('0x34')][_0xaab6('0x38')]));_0x200183[_0xaab6('0x37')]=_0x200183[_0xaab6('0x37')]['length']?_0x200183[_0xaab6('0x37')]:_0x1fdb12[_0xaab6('0x33')];if(_0x30d95f[_0xaab6('0x34')]['includeAll']){_0x200183['include']=[{'all':!![]}];}_0x200183=_['merge']({},_0x200183,_0x30d95f[_0xaab6('0x3f')]);return db[_0xaab6('0x2e')][_0xaab6('0x45')](_0x200183)[_0xaab6('0x23')](handleEntityNotFound(_0x6a092a,null))['then'](respondWithResult(_0x6a092a,null))[_0xaab6('0x42')](handleError(_0x6a092a,null));};exports[_0xaab6('0x22')]=function(_0x3d616c,_0x5ec96f){if(_0x3d616c[_0xaab6('0x46')]['id']){delete _0x3d616c[_0xaab6('0x46')]['id'];}return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':{'id':_0x3d616c[_0xaab6('0x47')]['id']}})[_0xaab6('0x23')](handleEntityNotFound(_0x5ec96f,null))[_0xaab6('0x23')](saveUpdates(_0x3d616c[_0xaab6('0x46')],null))[_0xaab6('0x23')](respondWithResult(_0x5ec96f,null))[_0xaab6('0x42')](handleError(_0x5ec96f,null));};exports[_0xaab6('0x24')]=function(_0x3fb749,_0x829bf3){return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':{'id':_0x3fb749[_0xaab6('0x47')]['id']}})[_0xaab6('0x23')](handleEntityNotFound(_0x829bf3,null))['then'](removeEntity(_0x829bf3,null))[_0xaab6('0x42')](handleError(_0x829bf3,null));};exports[_0xaab6('0x48')]=function(_0x30186b,_0xd2da5e){var _0x64d118={'key':_0x30186b[_0xaab6('0x46')][_0xaab6('0x32')]};if(_0x30186b[_0xaab6('0x46')]['MailAccountId']){_0x64d118[_0xaab6('0x49')]=_0x30186b['body'][_0xaab6('0x49')];}else if(_0x30186b['body'][_0xaab6('0x4a')]){_0x64d118[_0xaab6('0x4a')]=_0x30186b['body']['SmsAccountId'];}else if(_0x30186b['body'][_0xaab6('0x4b')]){_0x64d118['OpenchannelAccountId']=_0x30186b[_0xaab6('0x46')][_0xaab6('0x4b')];}else if(_0x30186b['body']['ChatWebsiteId']){_0x64d118['ChatWebsiteId']=_0x30186b[_0xaab6('0x46')][_0xaab6('0x4c')];}return db[_0xaab6('0x2e')][_0xaab6('0x45')]({'where':_0x64d118})[_0xaab6('0x23')](function(_0x1f45cd){if(_0x1f45cd){throw new db[(_0xaab6('0x4d'))]['ValidationError'](_0xaab6('0x4e'));}return db['CannedAnswer'][_0xaab6('0x48')](_0x30186b['body']);})['then'](function(_0x42d605){var _0x552ba2=_0x30186b[_0xaab6('0x4f')][_0xaab6('0x50')]({'plain':!![]});if(!_0x552ba2)throw new Error(_0xaab6('0x51'));if(_0x552ba2[_0xaab6('0x52')]===_0xaab6('0x4f')){var _0x1a9ff5=_0x42d605[_0xaab6('0x50')]({'plain':!![]});return db['UserProfileSection'][_0xaab6('0x45')]({'where':{'name':'CannedAnswers','userProfileId':_0x552ba2[_0xaab6('0x53')]},'raw':!![]})[_0xaab6('0x23')](function(_0x4e5349){if(_0x4e5349&&_0x4e5349[_0xaab6('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x1a9ff5[_0xaab6('0x2a')],'resourceId':_0x1a9ff5['id'],'type':_0x4e5349[_0xaab6('0x2a')],'sectionId':_0x4e5349['id']},{})[_0xaab6('0x23')](function(){return _0x42d605;});}else{return _0x42d605;}})['catch'](function(_0x5ca4e2){logger[_0xaab6('0x28')](_0xaab6('0x55'),_0x5ca4e2);throw _0x5ca4e2;});}return _0x42d605;})[_0xaab6('0x23')](respondWithResult(_0xd2da5e,0xc9))[_0xaab6('0x42')](handleError(_0xd2da5e,null));};
\ No newline at end of file
index 0d79ced..7606840 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0444=['../../config/environment','./cannedAnswer.attributes','exports','define','tools_canned_answers','utf8mb4','utf8mb4_unicode_ci','lodash','api','moment','bluebird','request-promise','rimraf'];(function(_0x476034,_0x392c3b){var _0x5ac058=function(_0x8eb267){while(--_0x8eb267){_0x476034['push'](_0x476034['shift']());}};_0x5ac058(++_0x392c3b);}(_0x0444,0xbd));var _0x4044=function(_0x42f8a0,_0x238975){_0x42f8a0=_0x42f8a0-0x0;var _0x1c6142=_0x0444[_0x42f8a0];return _0x1c6142;};'use strict';var _=require(_0x4044('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x4044('0x1'));var moment=require(_0x4044('0x2'));var BPromise=require(_0x4044('0x3'));var rp=require(_0x4044('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4044('0x5'));var config=require(_0x4044('0x6'));var attributes=require(_0x4044('0x7'));module[_0x4044('0x8')]=function(_0x14b919,_0x4acfb2){return _0x14b919[_0x4044('0x9')]('CannedAnswer',attributes,{'tableName':_0x4044('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4044('0xb'),'collate':_0x4044('0xc')});};
\ No newline at end of file
+var _0x5397=['utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CannedAnswer'];(function(_0x32d457,_0x1a39c9){var _0x338386=function(_0x199d7a){while(--_0x199d7a){_0x32d457['push'](_0x32d457['shift']());}};_0x338386(++_0x1a39c9);}(_0x5397,0x105));var _0x7539=function(_0x1a21d4,_0x42f41a){_0x1a21d4=_0x1a21d4-0x0;var _0x2434a9=_0x5397[_0x1a21d4];return _0x2434a9;};'use strict';var _=require('lodash');var util=require(_0x7539('0x0'));var logger=require(_0x7539('0x1'))(_0x7539('0x2'));var moment=require(_0x7539('0x3'));var BPromise=require(_0x7539('0x4'));var rp=require(_0x7539('0x5'));var fs=require('fs');var path=require(_0x7539('0x6'));var rimraf=require(_0x7539('0x7'));var config=require(_0x7539('0x8'));var attributes=require('./cannedAnswer.attributes');module[_0x7539('0x9')]=function(_0x3486c2,_0x4486c0){return _0x3486c2[_0x7539('0xa')](_0x7539('0xb'),attributes,{'tableName':'tools_canned_answers','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x7539('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 383772c..7a8fdc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2e5858,_0x4d3916){var _0xdd483b=function(_0x261103){while(--_0x261103){_0x2e5858['push'](_0x2e5858['shift']());}};_0xdd483b(++_0x4d3916);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xa9e0[_0x1cfa0d];return _0xe33279;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','CannedAnswer,\x20%s,\x20%s','request\x20sent','debug','CannedAnswer,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2d5552,_0x536898){var _0x42316f=function(_0xef47ce){while(--_0xef47ce){_0x2d5552['push'](_0x2d5552['shift']());}};_0x42316f(++_0x536898);}(_0xa9e0,0x123));var _0x0a9e=function(_0x43d11d,_0xccff91){_0x43d11d=_0x43d11d-0x0;var _0x38cd08=_0xa9e0[_0x43d11d];return _0x38cd08;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 8248c34..57522b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa995=['isAuthenticated','index','/:id','show','create','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x576f03,_0x2f7bed){var _0x5da5b6=function(_0x1264a1){while(--_0x1264a1){_0x576f03['push'](_0x576f03['shift']());}};_0x5da5b6(++_0x2f7bed);}(_0xa995,0x1d1));var _0x5a99=function(_0x410f5c,_0x4c3367){_0x410f5c=_0x410f5c-0x0;var _0x139d66=_0xa995[_0x410f5c];return _0x139d66;};'use strict';var multer=require(_0x5a99('0x0'));var util=require(_0x5a99('0x1'));var path=require(_0x5a99('0x2'));var timeout=require(_0x5a99('0x3'));var express=require(_0x5a99('0x4'));var router=express['Router']();var fs_extra=require(_0x5a99('0x5'));var auth=require(_0x5a99('0x6'));var interaction=require(_0x5a99('0x7'));var config=require(_0x5a99('0x8'));var controller=require('./cannedAnswer.controller');router[_0x5a99('0x9')]('/',auth[_0x5a99('0xa')](),controller[_0x5a99('0xb')]);router['get'](_0x5a99('0xc'),auth[_0x5a99('0xa')](),controller[_0x5a99('0xd')]);router['post']('/',auth[_0x5a99('0xa')](),controller[_0x5a99('0xe')]);router['put'](_0x5a99('0xc'),auth['isAuthenticated'](),controller[_0x5a99('0xf')]);router[_0x5a99('0x10')](_0x5a99('0xc'),auth[_0x5a99('0xa')](),controller[_0x5a99('0x11')]);module[_0x5a99('0x12')]=router;
\ No newline at end of file
+var _0xed55=['destroy','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','index','/:id','isAuthenticated','show','put','delete'];(function(_0x27973f,_0x32ae84){var _0x392c09=function(_0xfa819c){while(--_0xfa819c){_0x27973f['push'](_0x27973f['shift']());}};_0x392c09(++_0x32ae84);}(_0xed55,0x1e1));var _0x5ed5=function(_0x3005d5,_0xf588c7){_0x3005d5=_0x3005d5-0x0;var _0x547c7e=_0xed55[_0x3005d5];return _0x547c7e;};'use strict';var multer=require('multer');var util=require(_0x5ed5('0x0'));var path=require('path');var timeout=require(_0x5ed5('0x1'));var express=require(_0x5ed5('0x2'));var router=express[_0x5ed5('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5ed5('0x4'));var interaction=require(_0x5ed5('0x5'));var config=require(_0x5ed5('0x6'));var controller=require(_0x5ed5('0x7'));router[_0x5ed5('0x8')]('/',auth['isAuthenticated'](),controller[_0x5ed5('0x9')]);router[_0x5ed5('0x8')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller[_0x5ed5('0xc')]);router['post']('/',auth[_0x5ed5('0xb')](),controller['create']);router[_0x5ed5('0xd')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller['update']);router[_0x5ed5('0xe')](_0x5ed5('0xa'),auth[_0x5ed5('0xb')](),controller[_0x5ed5('0xf')]);module['exports']=router;
\ No newline at end of file
index b69553c..5370c5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf71=['INTEGER','sequelize','DATE','1970-01-01\x2000:00:01','STRING'];(function(_0x1a2830,_0x539a1d){var _0x109684=function(_0x3b04d8){while(--_0x3b04d8){_0x1a2830['push'](_0x1a2830['shift']());}};_0x109684(++_0x539a1d);}(_0xdf71,0x1d2));var _0x1df7=function(_0xc20f22,_0x49698f){_0xc20f22=_0xc20f22-0x0;var _0x1535d5=_0xdf71[_0xc20f22];return _0x1535d5;};'use strict';var Sequelize=require(_0x1df7('0x0'));module['exports']={'calldate':{'type':Sequelize[_0x1df7('0x1')],'allowNull':![],'defaultValue':_0x1df7('0x2')},'clid':{'type':Sequelize[_0x1df7('0x3')]},'src':{'type':Sequelize[_0x1df7('0x3')]},'dst':{'type':Sequelize[_0x1df7('0x3')]},'dcontext':{'type':Sequelize[_0x1df7('0x3')]},'channel':{'type':Sequelize[_0x1df7('0x3')]},'dstchannel':{'type':Sequelize['STRING']},'lastapp':{'type':Sequelize[_0x1df7('0x3')]},'lastdata':{'type':Sequelize[_0x1df7('0x3')]},'duration':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x1df7('0x3')]},'amaflags':{'type':Sequelize[_0x1df7('0x4')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x1df7('0x3')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0x1df7('0x3')]},'sequence':{'type':Sequelize[_0x1df7('0x3')]},'peeraccount':{'type':Sequelize[_0x1df7('0x3')]},'type':{'type':Sequelize[_0x1df7('0x3')]},'tag':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x88c9=['sequelize','exports','DATE','1970-01-01\x2000:00:01','STRING','INTEGER'];(function(_0x5d0e5d,_0xaf8575){var _0x44940c=function(_0x42fe6d){while(--_0x42fe6d){_0x5d0e5d['push'](_0x5d0e5d['shift']());}};_0x44940c(++_0xaf8575);}(_0x88c9,0x1f2));var _0x988c=function(_0x57266d,_0x14aa26){_0x57266d=_0x57266d-0x0;var _0x5e356b=_0x88c9[_0x57266d];return _0x5e356b;};'use strict';var Sequelize=require(_0x988c('0x0'));module[_0x988c('0x1')]={'calldate':{'type':Sequelize[_0x988c('0x2')],'allowNull':![],'defaultValue':_0x988c('0x3')},'clid':{'type':Sequelize[_0x988c('0x4')]},'src':{'type':Sequelize['STRING']},'dst':{'type':Sequelize[_0x988c('0x4')]},'dcontext':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'dstchannel':{'type':Sequelize[_0x988c('0x4')]},'lastapp':{'type':Sequelize[_0x988c('0x4')]},'lastdata':{'type':Sequelize[_0x988c('0x4')]},'duration':{'type':Sequelize[_0x988c('0x5')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x988c('0x5')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize[_0x988c('0x4')]},'userfield':{'type':Sequelize[_0x988c('0x4')]},'uniqueid':{'type':Sequelize[_0x988c('0x4')]},'linkedid':{'type':Sequelize[_0x988c('0x4')]},'sequence':{'type':Sequelize[_0x988c('0x4')]},'peeraccount':{'type':Sequelize[_0x988c('0x4')]},'type':{'type':Sequelize[_0x988c('0x4')]},'tag':{'type':Sequelize[_0x988c('0x4')]}};
\ No newline at end of file
index ef37207..b745514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fd1=['fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','offset','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','map','Cdr','fieldName','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','options','count','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','to-csv','ejs'];(function(_0x60e184,_0xa63867){var _0x4291e1=function(_0x511615){while(--_0x511615){_0x60e184['push'](_0x60e184['shift']());}};_0x4291e1(++_0xa63867);}(_0x5fd1,0x155));var _0x15fd=function(_0x437e80,_0x3434e1){_0x437e80=_0x437e80-0x0;var _0x5d603b=_0x5fd1[_0x437e80];return _0x5d603b;};'use strict';var emlformat=require(_0x15fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x15fd('0x1'));var jsonpatch=require(_0x15fd('0x2'));var rp=require(_0x15fd('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x15fd('0x4'));var util=require(_0x15fd('0x5'));var path=require(_0x15fd('0x6'));var sox=require('sox');var csv=require(_0x15fd('0x7'));var ejs=require(_0x15fd('0x8'));var fs=require('fs');var fs_extra=require(_0x15fd('0x9'));var _=require(_0x15fd('0xa'));var squel=require(_0x15fd('0xb'));var crypto=require('crypto');var jsforce=require(_0x15fd('0xc'));var deskjs=require(_0x15fd('0xd'));var toCsv=require(_0x15fd('0x7'));var querystring=require('querystring');var Papa=require(_0x15fd('0xe'));var Redis=require('ioredis');var authService=require(_0x15fd('0xf'));var qs=require(_0x15fd('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x15fd('0x11'));var utils=require(_0x15fd('0x12'));var config=require(_0x15fd('0x13'));var licenseUtil=require(_0x15fd('0x14'));var db=require(_0x15fd('0x15'))['db'];function respondWithStatusCode(_0x2e18ec,_0x346ab1){_0x346ab1=_0x346ab1||0xcc;return function(_0x2660db){if(_0x2660db){return _0x2e18ec[_0x15fd('0x16')](_0x346ab1);}return _0x2e18ec['status'](_0x346ab1)['end']();};}function respondWithResult(_0x5784a3,_0x3fda60){_0x3fda60=_0x3fda60||0xc8;return function(_0x135a15){if(_0x135a15){return _0x5784a3[_0x15fd('0x17')](_0x3fda60)[_0x15fd('0x18')](_0x135a15);}};}function respondWithFilteredResult(_0x44eae6,_0x2ffa03){return function(_0x2c5375){if(_0x2c5375){var _0x44a63a=typeof _0x2ffa03['offset']==='undefined'&&typeof _0x2ffa03[_0x15fd('0x19')]==='undefined';var _0x7afe9c=_0x2c5375['count'];var _0x917fe4=_0x44a63a?0x0:_0x2ffa03[_0x15fd('0x1a')];var _0x855bae=_0x44a63a?_0x2c5375['count']:_0x2ffa03[_0x15fd('0x1a')]+_0x2ffa03[_0x15fd('0x19')];var _0x8b7b9e;if(_0x855bae>=_0x7afe9c){_0x855bae=_0x7afe9c;_0x8b7b9e=0xc8;}else{_0x8b7b9e=0xce;}_0x44eae6[_0x15fd('0x17')](_0x8b7b9e);return _0x44eae6[_0x15fd('0x1b')](_0x15fd('0x1c'),_0x917fe4+'-'+_0x855bae+'/'+_0x7afe9c)[_0x15fd('0x18')](_0x2c5375);}return null;};}function patchUpdates(_0x2f46f1){return function(_0x1b8b9f){try{jsonpatch[_0x15fd('0x1d')](_0x1b8b9f,_0x2f46f1,!![]);}catch(_0x3ff307){return BPromise['reject'](_0x3ff307);}return _0x1b8b9f['save']();};}function saveUpdates(_0x293d7b,_0x36b21e){return function(_0x252a1c){if(_0x252a1c){return _0x252a1c[_0x15fd('0x1e')](_0x293d7b)[_0x15fd('0x1f')](function(_0x11496a){return _0x11496a;});}return null;};}function removeEntity(_0x2073da,_0x50d493){return function(_0x40d43){if(_0x40d43){return _0x40d43[_0x15fd('0x20')]()[_0x15fd('0x1f')](function(){_0x2073da['status'](0xcc)[_0x15fd('0x21')]();});}};}function handleEntityNotFound(_0x49062f,_0x3d1835){return function(_0x1fc24f){if(!_0x1fc24f){_0x49062f[_0x15fd('0x16')](0x194);}return _0x1fc24f;};}function handleError(_0x4c9708,_0x16b87c){_0x16b87c=_0x16b87c||0x1f4;return function(_0x1cbf2c){logger[_0x15fd('0x22')](_0x1cbf2c['stack']);if(_0x1cbf2c[_0x15fd('0x23')]){delete _0x1cbf2c['name'];}_0x4c9708[_0x15fd('0x17')](_0x16b87c)[_0x15fd('0x24')](_0x1cbf2c);};}exports[_0x15fd('0x25')]=function(_0x27d2c4,_0x233ed3){var _0x6c213b={},_0x218034={},_0xe650a3={'count':0x0,'rows':[]};var _0x4590a1=_[_0x15fd('0x26')](db[_0x15fd('0x27')]['rawAttributes'],function(_0x47c22c){return{'name':_0x47c22c[_0x15fd('0x28')],'type':_0x47c22c['type'][_0x15fd('0x29')]};});_0x218034[_0x15fd('0x2a')]=_['map'](_0x4590a1,_0x15fd('0x23'));_0x218034[_0x15fd('0x2b')]=_['keys'](_0x27d2c4[_0x15fd('0x2b')]);_0x218034[_0x15fd('0x2c')]=_[_0x15fd('0x2d')](_0x218034[_0x15fd('0x2a')],_0x218034[_0x15fd('0x2b')]);_0x6c213b[_0x15fd('0x2e')]=_['intersection'](_0x218034[_0x15fd('0x2a')],qs[_0x15fd('0x2f')](_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x2f')]));_0x6c213b['attributes']=_0x6c213b[_0x15fd('0x2e')][_0x15fd('0x30')]?_0x6c213b[_0x15fd('0x2e')]:_0x218034[_0x15fd('0x2a')];if(!_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x31')]('nolimit')){_0x6c213b[_0x15fd('0x19')]=qs[_0x15fd('0x19')](_0x27d2c4['query'][_0x15fd('0x19')]);_0x6c213b[_0x15fd('0x1a')]=qs[_0x15fd('0x1a')](_0x27d2c4['query'][_0x15fd('0x1a')]);}_0x6c213b[_0x15fd('0x32')]=qs[_0x15fd('0x33')](_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x33')]);_0x6c213b[_0x15fd('0x34')]=qs['filters'](_['pick'](_0x27d2c4['query'],_0x218034[_0x15fd('0x2c')]),_0x4590a1);if(_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x35')]){_0x6c213b['where']=_['merge'](_0x6c213b[_0x15fd('0x34')],{'$or':_['map'](_0x4590a1,function(_0x4f1c84){if(_0x4f1c84['type']!==_0x15fd('0x36')){var _0x10702c={};_0x10702c[_0x4f1c84[_0x15fd('0x23')]]={'$like':'%'+_0x27d2c4['query'][_0x15fd('0x35')]+'%'};return _0x10702c;}})});}_0x6c213b=_[_0x15fd('0x37')]({},_0x6c213b,_0x27d2c4[_0x15fd('0x38')]);var _0x5beb6e={'where':_0x6c213b[_0x15fd('0x34')]};return db[_0x15fd('0x27')][_0x15fd('0x39')](_0x5beb6e)[_0x15fd('0x1f')](function(_0x2e8b0a){_0xe650a3[_0x15fd('0x39')]=_0x2e8b0a;if(_0x27d2c4[_0x15fd('0x2b')][_0x15fd('0x3a')]){_0x6c213b[_0x15fd('0x3b')]=[{'all':!![]}];}return db['Cdr'][_0x15fd('0x3c')](_0x6c213b);})[_0x15fd('0x1f')](function(_0x180433){_0xe650a3[_0x15fd('0x3d')]=_0x180433;return _0xe650a3;})[_0x15fd('0x1f')](respondWithFilteredResult(_0x233ed3,_0x6c213b))[_0x15fd('0x3e')](handleError(_0x233ed3,null));};exports[_0x15fd('0x3f')]=function(_0xda4ca2,_0x343ce6){var _0x104eef={'raw':!![],'where':{'id':_0xda4ca2[_0x15fd('0x40')]['id']}},_0x2eb6b6={};_0x2eb6b6[_0x15fd('0x2a')]=_[_0x15fd('0x41')](db[_0x15fd('0x27')]['rawAttributes']);_0x2eb6b6[_0x15fd('0x2b')]=_[_0x15fd('0x41')](_0xda4ca2[_0x15fd('0x2b')]);_0x2eb6b6[_0x15fd('0x2c')]=_[_0x15fd('0x2d')](_0x2eb6b6[_0x15fd('0x2a')],_0x2eb6b6[_0x15fd('0x2b')]);_0x104eef[_0x15fd('0x2e')]=_['intersection'](_0x2eb6b6['model'],qs[_0x15fd('0x2f')](_0xda4ca2['query'][_0x15fd('0x2f')]));_0x104eef[_0x15fd('0x2e')]=_0x104eef['attributes'][_0x15fd('0x30')]?_0x104eef[_0x15fd('0x2e')]:_0x2eb6b6[_0x15fd('0x2a')];if(_0xda4ca2[_0x15fd('0x2b')][_0x15fd('0x3a')]){_0x104eef[_0x15fd('0x3b')]=[{'all':!![]}];}_0x104eef=_['merge']({},_0x104eef,_0xda4ca2[_0x15fd('0x38')]);return db[_0x15fd('0x27')][_0x15fd('0x42')](_0x104eef)[_0x15fd('0x1f')](handleEntityNotFound(_0x343ce6,null))[_0x15fd('0x1f')](respondWithResult(_0x343ce6,null))[_0x15fd('0x3e')](handleError(_0x343ce6,null));};exports[_0x15fd('0x43')]=function(_0xffc5dc,_0x24cb44){return db[_0x15fd('0x27')][_0x15fd('0x43')](_0xffc5dc[_0x15fd('0x44')],{})['then'](respondWithResult(_0x24cb44,0xc9))[_0x15fd('0x3e')](handleError(_0x24cb44,null));};exports['update']=function(_0x284f51,_0x34c250){if(_0x284f51[_0x15fd('0x44')]['id']){delete _0x284f51['body']['id'];}return db[_0x15fd('0x27')][_0x15fd('0x42')]({'where':{'id':_0x284f51[_0x15fd('0x40')]['id']}})[_0x15fd('0x1f')](handleEntityNotFound(_0x34c250,null))['then'](saveUpdates(_0x284f51[_0x15fd('0x44')],null))[_0x15fd('0x1f')](respondWithResult(_0x34c250,null))[_0x15fd('0x3e')](handleError(_0x34c250,null));};exports[_0x15fd('0x20')]=function(_0x4b6827,_0x56c6be){return db[_0x15fd('0x27')]['find']({'where':{'id':_0x4b6827['params']['id']}})['then'](handleEntityNotFound(_0x56c6be,null))[_0x15fd('0x1f')](removeEntity(_0x56c6be,null))[_0x15fd('0x3e')](handleError(_0x56c6be,null));};exports[_0x15fd('0x45')]=function(_0x10cf04,_0x292174){return db[_0x15fd('0x27')]['describe']()[_0x15fd('0x1f')](respondWithResult(_0x292174,null))[_0x15fd('0x3e')](handleError(_0x292174,null));};
\ No newline at end of file
+var _0xf3be=['then','error','stack','name','send','index','map','Cdr','fieldName','type','key','query','keys','intersection','attributes','fields','model','nolimit','order','sort','where','filters','pick','filter','merge','options','include','rows','catch','rawAttributes','length','includeAll','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy'];(function(_0x467070,_0x393133){var _0x5a5575=function(_0x5881ff){while(--_0x5881ff){_0x467070['push'](_0x467070['shift']());}};_0x5a5575(++_0x393133);}(_0xf3be,0x1e1));var _0xef3b=function(_0x39d659,_0x1e2f0e){_0x39d659=_0x39d659-0x0;var _0x4085f9=_0xf3be[_0x39d659];return _0x4085f9;};'use strict';var emlformat=require(_0xef3b('0x0'));var rimraf=require(_0xef3b('0x1'));var zipdir=require(_0xef3b('0x2'));var jsonpatch=require(_0xef3b('0x3'));var rp=require('request-promise');var moment=require(_0xef3b('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xef3b('0x5'));var csv=require(_0xef3b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xef3b('0x7'));var _=require(_0xef3b('0x8'));var squel=require(_0xef3b('0x9'));var crypto=require(_0xef3b('0xa'));var jsforce=require(_0xef3b('0xb'));var deskjs=require(_0xef3b('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xef3b('0xd'));var Redis=require('ioredis');var authService=require(_0xef3b('0xe'));var qs=require(_0xef3b('0xf'));var as=require(_0xef3b('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef3b('0x11'))('api');var utils=require(_0xef3b('0x12'));var config=require(_0xef3b('0x13'));var licenseUtil=require(_0xef3b('0x14'));var db=require(_0xef3b('0x15'))['db'];function respondWithStatusCode(_0x2a2a27,_0x3aef79){_0x3aef79=_0x3aef79||0xcc;return function(_0x169b2c){if(_0x169b2c){return _0x2a2a27[_0xef3b('0x16')](_0x3aef79);}return _0x2a2a27[_0xef3b('0x17')](_0x3aef79)[_0xef3b('0x18')]();};}function respondWithResult(_0x510cc3,_0x5a53b9){_0x5a53b9=_0x5a53b9||0xc8;return function(_0x138ea5){if(_0x138ea5){return _0x510cc3[_0xef3b('0x17')](_0x5a53b9)[_0xef3b('0x19')](_0x138ea5);}};}function respondWithFilteredResult(_0x118a31,_0x416801){return function(_0x529e89){if(_0x529e89){var _0x169803=typeof _0x416801[_0xef3b('0x1a')]===_0xef3b('0x1b')&&typeof _0x416801[_0xef3b('0x1c')]===_0xef3b('0x1b');var _0x5908cb=_0x529e89[_0xef3b('0x1d')];var _0x406eb7=_0x169803?0x0:_0x416801['offset'];var _0x280ccf=_0x169803?_0x529e89['count']:_0x416801[_0xef3b('0x1a')]+_0x416801['limit'];var _0x278de3;if(_0x280ccf>=_0x5908cb){_0x280ccf=_0x5908cb;_0x278de3=0xc8;}else{_0x278de3=0xce;}_0x118a31[_0xef3b('0x17')](_0x278de3);return _0x118a31[_0xef3b('0x1e')](_0xef3b('0x1f'),_0x406eb7+'-'+_0x280ccf+'/'+_0x5908cb)[_0xef3b('0x19')](_0x529e89);}return null;};}function patchUpdates(_0x3d18ef){return function(_0x19d4b5){try{jsonpatch[_0xef3b('0x20')](_0x19d4b5,_0x3d18ef,!![]);}catch(_0x4a3fbf){return BPromise[_0xef3b('0x21')](_0x4a3fbf);}return _0x19d4b5[_0xef3b('0x22')]();};}function saveUpdates(_0x214b53,_0xfe39a4){return function(_0x93a080){if(_0x93a080){return _0x93a080[_0xef3b('0x23')](_0x214b53)['then'](function(_0x27cc47){return _0x27cc47;});}return null;};}function removeEntity(_0x574042,_0x57b14a){return function(_0xc68cb2){if(_0xc68cb2){return _0xc68cb2[_0xef3b('0x24')]()[_0xef3b('0x25')](function(){_0x574042[_0xef3b('0x17')](0xcc)[_0xef3b('0x18')]();});}};}function handleEntityNotFound(_0x179338,_0x4ecb5e){return function(_0x487ae6){if(!_0x487ae6){_0x179338[_0xef3b('0x16')](0x194);}return _0x487ae6;};}function handleError(_0x4b6ee7,_0x4d5449){_0x4d5449=_0x4d5449||0x1f4;return function(_0x13dd47){logger[_0xef3b('0x26')](_0x13dd47[_0xef3b('0x27')]);if(_0x13dd47[_0xef3b('0x28')]){delete _0x13dd47[_0xef3b('0x28')];}_0x4b6ee7[_0xef3b('0x17')](_0x4d5449)[_0xef3b('0x29')](_0x13dd47);};}exports[_0xef3b('0x2a')]=function(_0x556c5c,_0xded00b){var _0x2b073b={},_0x634a45={},_0x187d1b={'count':0x0,'rows':[]};var _0x27ab13=_[_0xef3b('0x2b')](db[_0xef3b('0x2c')]['rawAttributes'],function(_0x4c9a84){return{'name':_0x4c9a84[_0xef3b('0x2d')],'type':_0x4c9a84[_0xef3b('0x2e')][_0xef3b('0x2f')]};});_0x634a45['model']=_[_0xef3b('0x2b')](_0x27ab13,_0xef3b('0x28'));_0x634a45[_0xef3b('0x30')]=_[_0xef3b('0x31')](_0x556c5c[_0xef3b('0x30')]);_0x634a45['filters']=_[_0xef3b('0x32')](_0x634a45['model'],_0x634a45[_0xef3b('0x30')]);_0x2b073b[_0xef3b('0x33')]=_[_0xef3b('0x32')](_0x634a45['model'],qs[_0xef3b('0x34')](_0x556c5c[_0xef3b('0x30')][_0xef3b('0x34')]));_0x2b073b['attributes']=_0x2b073b[_0xef3b('0x33')]['length']?_0x2b073b[_0xef3b('0x33')]:_0x634a45[_0xef3b('0x35')];if(!_0x556c5c['query']['hasOwnProperty'](_0xef3b('0x36'))){_0x2b073b[_0xef3b('0x1c')]=qs[_0xef3b('0x1c')](_0x556c5c['query'][_0xef3b('0x1c')]);_0x2b073b[_0xef3b('0x1a')]=qs[_0xef3b('0x1a')](_0x556c5c[_0xef3b('0x30')][_0xef3b('0x1a')]);}_0x2b073b[_0xef3b('0x37')]=qs['sort'](_0x556c5c['query'][_0xef3b('0x38')]);_0x2b073b[_0xef3b('0x39')]=qs[_0xef3b('0x3a')](_[_0xef3b('0x3b')](_0x556c5c[_0xef3b('0x30')],_0x634a45[_0xef3b('0x3a')]),_0x27ab13);if(_0x556c5c['query'][_0xef3b('0x3c')]){_0x2b073b[_0xef3b('0x39')]=_[_0xef3b('0x3d')](_0x2b073b['where'],{'$or':_[_0xef3b('0x2b')](_0x27ab13,function(_0x5ab5eb){if(_0x5ab5eb[_0xef3b('0x2e')]!=='VIRTUAL'){var _0x3a361f={};_0x3a361f[_0x5ab5eb['name']]={'$like':'%'+_0x556c5c[_0xef3b('0x30')]['filter']+'%'};return _0x3a361f;}})});}_0x2b073b=_[_0xef3b('0x3d')]({},_0x2b073b,_0x556c5c[_0xef3b('0x3e')]);var _0x1108e1={'where':_0x2b073b[_0xef3b('0x39')]};return db[_0xef3b('0x2c')][_0xef3b('0x1d')](_0x1108e1)[_0xef3b('0x25')](function(_0x219cfc){_0x187d1b['count']=_0x219cfc;if(_0x556c5c[_0xef3b('0x30')]['includeAll']){_0x2b073b[_0xef3b('0x3f')]=[{'all':!![]}];}return db[_0xef3b('0x2c')]['findAll'](_0x2b073b);})['then'](function(_0x51fb51){_0x187d1b[_0xef3b('0x40')]=_0x51fb51;return _0x187d1b;})['then'](respondWithFilteredResult(_0xded00b,_0x2b073b))[_0xef3b('0x41')](handleError(_0xded00b,null));};exports['show']=function(_0x4b2230,_0x516d08){var _0x5cec25={'raw':!![],'where':{'id':_0x4b2230['params']['id']}},_0x48699a={};_0x48699a['model']=_[_0xef3b('0x31')](db[_0xef3b('0x2c')][_0xef3b('0x42')]);_0x48699a['query']=_['keys'](_0x4b2230[_0xef3b('0x30')]);_0x48699a[_0xef3b('0x3a')]=_[_0xef3b('0x32')](_0x48699a[_0xef3b('0x35')],_0x48699a['query']);_0x5cec25[_0xef3b('0x33')]=_['intersection'](_0x48699a[_0xef3b('0x35')],qs[_0xef3b('0x34')](_0x4b2230[_0xef3b('0x30')][_0xef3b('0x34')]));_0x5cec25[_0xef3b('0x33')]=_0x5cec25['attributes'][_0xef3b('0x43')]?_0x5cec25[_0xef3b('0x33')]:_0x48699a[_0xef3b('0x35')];if(_0x4b2230[_0xef3b('0x30')][_0xef3b('0x44')]){_0x5cec25[_0xef3b('0x3f')]=[{'all':!![]}];}_0x5cec25=_[_0xef3b('0x3d')]({},_0x5cec25,_0x4b2230[_0xef3b('0x3e')]);return db[_0xef3b('0x2c')]['find'](_0x5cec25)[_0xef3b('0x25')](handleEntityNotFound(_0x516d08,null))[_0xef3b('0x25')](respondWithResult(_0x516d08,null))[_0xef3b('0x41')](handleError(_0x516d08,null));};exports['create']=function(_0x3f3e8b,_0x5d48c8){return db[_0xef3b('0x2c')][_0xef3b('0x45')](_0x3f3e8b[_0xef3b('0x46')],{})['then'](respondWithResult(_0x5d48c8,0xc9))['catch'](handleError(_0x5d48c8,null));};exports[_0xef3b('0x23')]=function(_0x38ee41,_0x4b368c){if(_0x38ee41[_0xef3b('0x46')]['id']){delete _0x38ee41[_0xef3b('0x46')]['id'];}return db[_0xef3b('0x2c')][_0xef3b('0x47')]({'where':{'id':_0x38ee41['params']['id']}})[_0xef3b('0x25')](handleEntityNotFound(_0x4b368c,null))[_0xef3b('0x25')](saveUpdates(_0x38ee41[_0xef3b('0x46')],null))[_0xef3b('0x25')](respondWithResult(_0x4b368c,null))[_0xef3b('0x41')](handleError(_0x4b368c,null));};exports[_0xef3b('0x24')]=function(_0x5e66fe,_0x2f45b1){return db[_0xef3b('0x2c')][_0xef3b('0x47')]({'where':{'id':_0x5e66fe[_0xef3b('0x48')]['id']}})[_0xef3b('0x25')](handleEntityNotFound(_0x2f45b1,null))[_0xef3b('0x25')](removeEntity(_0x2f45b1,null))[_0xef3b('0x41')](handleError(_0x2f45b1,null));};exports[_0xef3b('0x49')]=function(_0x3995b9,_0xf30f16){return db[_0xef3b('0x2c')][_0xef3b('0x49')]()[_0xef3b('0x25')](respondWithResult(_0xf30f16,null))['catch'](handleError(_0xf30f16,null));};
\ No newline at end of file
index 4fbad72..596a9a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0xb86618,_0x379810){var _0x446e27=function(_0x457d5b){while(--_0x457d5b){_0xb86618['push'](_0xb86618['shift']());}};_0x446e27(++_0x379810);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x2ce428,_0x458535){var _0x4759ec=function(_0x4c63eb){while(--_0x4c63eb){_0x2ce428['push'](_0x2ce428['shift']());}};_0x4759ec(++_0x458535);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'timestamps':![]});};
\ No newline at end of file
index a42c63e..29b7545 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bce=['then','info','Cdr,\x20%s,\x20%s','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x43cba5,_0x4a2f83){var _0x359d1a=function(_0x888a02){while(--_0x888a02){_0x43cba5['push'](_0x43cba5['shift']());}};_0x359d1a(++_0x4a2f83);}(_0x8bce,0x78));var _0xe8bc=function(_0x5f5be3,_0x5bec6e){_0x5f5be3=_0x5f5be3-0x0;var _0xbb0d5e=_0x8bce[_0x5f5be3];return _0xbb0d5e;};'use strict';var _=require(_0xe8bc('0x0'));var util=require('util');var moment=require(_0xe8bc('0x1'));var BPromise=require(_0xe8bc('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe8bc('0x3'));var db=require(_0xe8bc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe8bc('0x5'))(_0xe8bc('0x6'));var config=require(_0xe8bc('0x7'));var jayson=require(_0xe8bc('0x8'));var client=jayson[_0xe8bc('0x9')][_0xe8bc('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x52960c,_0x3927ba,_0xceda8d){return new BPromise(function(_0x1c69ee,_0x2f3d4d){return client[_0xe8bc('0xb')](_0x52960c,_0xceda8d)[_0xe8bc('0xc')](function(_0x264091){logger[_0xe8bc('0xd')](_0xe8bc('0xe'),_0x3927ba,_0xe8bc('0xf'));logger[_0xe8bc('0x10')](_0xe8bc('0x11'),_0x3927ba,_0xe8bc('0xf'),JSON['stringify'](_0x264091));if(_0x264091[_0xe8bc('0x12')]){if(_0x264091[_0xe8bc('0x12')][_0xe8bc('0x13')]===0x1f4){logger[_0xe8bc('0x12')](_0xe8bc('0xe'),_0x3927ba,_0x264091['error'][_0xe8bc('0x14')]);return _0x2f3d4d(_0x264091[_0xe8bc('0x12')]['message']);}logger[_0xe8bc('0x12')]('Cdr,\x20%s,\x20%s',_0x3927ba,_0x264091[_0xe8bc('0x12')][_0xe8bc('0x14')]);return _0x1c69ee(_0x264091[_0xe8bc('0x12')]['message']);}else{logger['info'](_0xe8bc('0xe'),_0x3927ba,_0xe8bc('0xf'));_0x1c69ee(_0x264091[_0xe8bc('0x15')]['message']);}})['catch'](function(_0x2c5e09){logger[_0xe8bc('0x12')](_0xe8bc('0xe'),_0x3927ba,_0x2c5e09);_0x2f3d4d(_0x2c5e09);});});}
\ No newline at end of file
+var _0xbd6d=['stringify','error','Cdr,\x20%s,\x20%s','message','result','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','request\x20sent','Cdr,\x20%s,\x20%s,\x20%s'];(function(_0x256ac1,_0x3e9a5f){var _0x52f0a6=function(_0x4ff812){while(--_0x4ff812){_0x256ac1['push'](_0x256ac1['shift']());}};_0x52f0a6(++_0x3e9a5f);}(_0xbd6d,0xf6));var _0xdbd6=function(_0x222214,_0x5c3279){_0x222214=_0x222214-0x0;var _0x303520=_0xbd6d[_0x222214];return _0x303520;};'use strict';var _=require(_0xdbd6('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xdbd6('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xdbd6('0x2'));var db=require(_0xdbd6('0x3'))['db'];var utils=require(_0xdbd6('0x4'));var logger=require(_0xdbd6('0x5'))(_0xdbd6('0x6'));var config=require(_0xdbd6('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdbd6('0x8')][_0xdbd6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4ac885,_0x8148d5,_0x508fac){return new BPromise(function(_0x398e00,_0x2fb323){return client[_0xdbd6('0xa')](_0x4ac885,_0x508fac)['then'](function(_0x3b0b9c){logger[_0xdbd6('0xb')]('Cdr,\x20%s,\x20%s',_0x8148d5,_0xdbd6('0xc'));logger['debug'](_0xdbd6('0xd'),_0x8148d5,_0xdbd6('0xc'),JSON[_0xdbd6('0xe')](_0x3b0b9c));if(_0x3b0b9c[_0xdbd6('0xf')]){if(_0x3b0b9c[_0xdbd6('0xf')]['code']===0x1f4){logger['error'](_0xdbd6('0x10'),_0x8148d5,_0x3b0b9c[_0xdbd6('0xf')]['message']);return _0x2fb323(_0x3b0b9c[_0xdbd6('0xf')]['message']);}logger[_0xdbd6('0xf')](_0xdbd6('0x10'),_0x8148d5,_0x3b0b9c[_0xdbd6('0xf')]['message']);return _0x398e00(_0x3b0b9c[_0xdbd6('0xf')][_0xdbd6('0x11')]);}else{logger[_0xdbd6('0xb')](_0xdbd6('0x10'),_0x8148d5,'request\x20sent');_0x398e00(_0x3b0b9c[_0xdbd6('0x12')][_0xdbd6('0x11')]);}})[_0xdbd6('0x13')](function(_0x57d416){logger[_0xdbd6('0xf')](_0xdbd6('0x10'),_0x8148d5,_0x57d416);_0x2fb323(_0x57d416);});});}
\ No newline at end of file
index 85db509..087e7d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x158e6c,_0xaab4ed){var _0x3c26db=function(_0x3c57dd){while(--_0x3c57dd){_0x158e6c['push'](_0x158e6c['shift']());}};_0x3c26db(++_0xaab4ed);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
+var _0xd8b0=['destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','/:id','show','post','create','put','update'];(function(_0x16d4b6,_0x527555){var _0xeeaf29=function(_0x272d27){while(--_0x272d27){_0x16d4b6['push'](_0x16d4b6['shift']());}};_0xeeaf29(++_0x527555);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var controller=require('./cdr.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/describe',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['get'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xc')]);router[_0x0d8b('0xd')]('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xb'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);router['delete'](_0x0d8b('0xb'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x11')]);module[_0x0d8b('0x12')]=router;
\ No newline at end of file
index beb2f07..a17e0b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cec=['TEXT','*,*,*,*','sequelize','INTEGER','STRING','noop'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0x7cec,0x116));var _0xc7ce=function(_0xd9db83,_0x4b8efe){_0xd9db83=_0xd9db83-0x0;var _0xcc2cb=_0x7cec[_0xd9db83];return _0xcc2cb;};'use strict';var Sequelize=require(_0xc7ce('0x0'));module['exports']={'priority':{'type':Sequelize[_0xc7ce('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xc7ce('0x2')],'allowNull':![],'defaultValue':_0xc7ce('0x3')},'appdata':{'type':Sequelize[_0xc7ce('0x4')]()},'description':{'type':Sequelize[_0xc7ce('0x2')]},'interval':{'type':Sequelize[_0xc7ce('0x2')],'defaultValue':_0xc7ce('0x5')}};
\ No newline at end of file
+var _0xaa4c=['INTEGER','STRING','noop','TEXT','*,*,*,*','exports'];(function(_0x36438c,_0x286033){var _0x1ec81b=function(_0x3a0935){while(--_0x3a0935){_0x36438c['push'](_0x36438c['shift']());}};_0x1ec81b(++_0x286033);}(_0xaa4c,0x1e5));var _0xcaa4=function(_0x43b658,_0x506ad2){_0x43b658=_0x43b658-0x0;var _0x526e1e=_0xaa4c[_0x43b658];return _0x526e1e;};'use strict';var Sequelize=require('sequelize');module[_0xcaa4('0x0')]={'priority':{'type':Sequelize[_0xcaa4('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xcaa4('0x2')],'allowNull':![],'defaultValue':_0xcaa4('0x3')},'appdata':{'type':Sequelize[_0xcaa4('0x4')]()},'description':{'type':Sequelize[_0xcaa4('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xcaa4('0x5')}};
\ No newline at end of file
index ec6ca9b..fdbe050 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa664=['bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','show','params','model','keys','ChatApplication','rawAttributes','query','intersection','attributes','fields','length','includeAll','include','merge','options','find','body','catch','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa664,0x132));var _0x4a66=function(_0x50c14d,_0xad9031){_0x50c14d=_0x50c14d-0x0;var _0x49b11f=_0xa664[_0x50c14d];return _0x49b11f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4a66('0x0'));var zipdir=require(_0x4a66('0x1'));var jsonpatch=require(_0x4a66('0x2'));var rp=require(_0x4a66('0x3'));var moment=require('moment');var BPromise=require(_0x4a66('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4a66('0x5'));var sox=require(_0x4a66('0x6'));var csv=require(_0x4a66('0x7'));var ejs=require(_0x4a66('0x8'));var fs=require('fs');var fs_extra=require(_0x4a66('0x9'));var _=require(_0x4a66('0xa'));var squel=require(_0x4a66('0xb'));var crypto=require('crypto');var jsforce=require(_0x4a66('0xc'));var deskjs=require(_0x4a66('0xd'));var toCsv=require(_0x4a66('0x7'));var querystring=require(_0x4a66('0xe'));var Papa=require('papaparse');var Redis=require(_0x4a66('0xf'));var authService=require(_0x4a66('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x4a66('0x11'));var hardwareService=require(_0x4a66('0x12'));var logger=require(_0x4a66('0x13'))(_0x4a66('0x14'));var utils=require(_0x4a66('0x15'));var config=require(_0x4a66('0x16'));var licenseUtil=require(_0x4a66('0x17'));var db=require(_0x4a66('0x18'))['db'];function respondWithStatusCode(_0x3d5431,_0x46e373){_0x46e373=_0x46e373||0xcc;return function(_0x177bf1){if(_0x177bf1){return _0x3d5431[_0x4a66('0x19')](_0x46e373);}return _0x3d5431[_0x4a66('0x1a')](_0x46e373)[_0x4a66('0x1b')]();};}function respondWithResult(_0x409921,_0x11fa94){_0x11fa94=_0x11fa94||0xc8;return function(_0x11f34f){if(_0x11f34f){return _0x409921['status'](_0x11fa94)[_0x4a66('0x1c')](_0x11f34f);}};}function respondWithFilteredResult(_0x26d34f,_0x128c8e){return function(_0x4208f9){if(_0x4208f9){var _0x199ddf=typeof _0x128c8e[_0x4a66('0x1d')]===_0x4a66('0x1e')&&typeof _0x128c8e[_0x4a66('0x1f')]==='undefined';var _0x2d04da=_0x4208f9[_0x4a66('0x20')];var _0x3e8805=_0x199ddf?0x0:_0x128c8e[_0x4a66('0x1d')];var _0x509aaf=_0x199ddf?_0x4208f9[_0x4a66('0x20')]:_0x128c8e[_0x4a66('0x1d')]+_0x128c8e[_0x4a66('0x1f')];var _0x569ebd;if(_0x509aaf>=_0x2d04da){_0x509aaf=_0x2d04da;_0x569ebd=0xc8;}else{_0x569ebd=0xce;}_0x26d34f['status'](_0x569ebd);return _0x26d34f[_0x4a66('0x21')](_0x4a66('0x22'),_0x3e8805+'-'+_0x509aaf+'/'+_0x2d04da)[_0x4a66('0x1c')](_0x4208f9);}return null;};}function patchUpdates(_0x4c78e1){return function(_0x5de482){try{jsonpatch[_0x4a66('0x23')](_0x5de482,_0x4c78e1,!![]);}catch(_0x566fc8){return BPromise[_0x4a66('0x24')](_0x566fc8);}return _0x5de482[_0x4a66('0x25')]();};}function saveUpdates(_0x18ec8e,_0x3d649d){return function(_0x451f4e){if(_0x451f4e){return _0x451f4e[_0x4a66('0x26')](_0x18ec8e)[_0x4a66('0x27')](function(_0x2c0a0d){return _0x2c0a0d;});}return null;};}function removeEntity(_0x10274a,_0x3052cc){return function(_0xad793e){if(_0xad793e){return _0xad793e[_0x4a66('0x28')]()[_0x4a66('0x27')](function(){_0x10274a[_0x4a66('0x1a')](0xcc)[_0x4a66('0x1b')]();});}};}function handleEntityNotFound(_0x5206d0,_0x2a9ba1){return function(_0x4d58c){if(!_0x4d58c){_0x5206d0['sendStatus'](0x194);}return _0x4d58c;};}function handleError(_0x1417a3,_0x3cb2c4){_0x3cb2c4=_0x3cb2c4||0x1f4;return function(_0x47184e){logger[_0x4a66('0x29')](_0x47184e[_0x4a66('0x2a')]);if(_0x47184e['name']){delete _0x47184e['name'];}_0x1417a3[_0x4a66('0x1a')](_0x3cb2c4)[_0x4a66('0x2b')](_0x47184e);};}exports[_0x4a66('0x2c')]=function(_0x257485,_0xa81e68){var _0x80782e={'raw':!![],'where':{'id':_0x257485[_0x4a66('0x2d')]['id']}},_0x1412f1={};_0x1412f1[_0x4a66('0x2e')]=_[_0x4a66('0x2f')](db[_0x4a66('0x30')][_0x4a66('0x31')]);_0x1412f1['query']=_['keys'](_0x257485[_0x4a66('0x32')]);_0x1412f1['filters']=_[_0x4a66('0x33')](_0x1412f1[_0x4a66('0x2e')],_0x1412f1[_0x4a66('0x32')]);_0x80782e[_0x4a66('0x34')]=_['intersection'](_0x1412f1[_0x4a66('0x2e')],qs[_0x4a66('0x35')](_0x257485[_0x4a66('0x32')][_0x4a66('0x35')]));_0x80782e['attributes']=_0x80782e['attributes'][_0x4a66('0x36')]?_0x80782e[_0x4a66('0x34')]:_0x1412f1[_0x4a66('0x2e')];if(_0x257485[_0x4a66('0x32')][_0x4a66('0x37')]){_0x80782e[_0x4a66('0x38')]=[{'all':!![]}];}_0x80782e=_[_0x4a66('0x39')]({},_0x80782e,_0x257485[_0x4a66('0x3a')]);return db[_0x4a66('0x30')][_0x4a66('0x3b')](_0x80782e)['then'](handleEntityNotFound(_0xa81e68,null))['then'](respondWithResult(_0xa81e68,null))['catch'](handleError(_0xa81e68,null));};exports[_0x4a66('0x26')]=function(_0x30a8df,_0x46177a){if(_0x30a8df[_0x4a66('0x3c')]['id']){delete _0x30a8df[_0x4a66('0x3c')]['id'];}return db['ChatApplication'][_0x4a66('0x3b')]({'where':{'id':_0x30a8df['params']['id']}})['then'](handleEntityNotFound(_0x46177a,null))[_0x4a66('0x27')](saveUpdates(_0x30a8df[_0x4a66('0x3c')],null))[_0x4a66('0x27')](respondWithResult(_0x46177a,null))[_0x4a66('0x3d')](handleError(_0x46177a,null));};exports['destroy']=function(_0x1ef7ff,_0x57ed4e){return db[_0x4a66('0x30')][_0x4a66('0x3b')]({'where':{'id':_0x1ef7ff[_0x4a66('0x2d')]['id']}})[_0x4a66('0x27')](handleEntityNotFound(_0x57ed4e,null))[_0x4a66('0x27')](removeEntity(_0x57ed4e,null))[_0x4a66('0x3d')](handleError(_0x57ed4e,null));};
\ No newline at end of file
+var _0xb04a=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','Content-Range','reject','save','update','then','destroy','error','name','send','show','model','keys','rawAttributes','query','filters','intersection','fields','attributes','length','includeAll','include','merge','find','body','ChatApplication','params','catch','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x4027da,_0x50cffc){var _0x2db375=function(_0x23afd2){while(--_0x23afd2){_0x4027da['push'](_0x4027da['shift']());}};_0x2db375(++_0x50cffc);}(_0xb04a,0xcf));var _0xab04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb04a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xab04('0x0'));var rimraf=require(_0xab04('0x1'));var zipdir=require(_0xab04('0x2'));var jsonpatch=require(_0xab04('0x3'));var rp=require('request-promise');var moment=require(_0xab04('0x4'));var BPromise=require(_0xab04('0x5'));var Mustache=require(_0xab04('0x6'));var util=require('util');var path=require(_0xab04('0x7'));var sox=require(_0xab04('0x8'));var csv=require(_0xab04('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab04('0xa'));var _=require(_0xab04('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xab04('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xab04('0xd'));var authService=require(_0xab04('0xe'));var qs=require(_0xab04('0xf'));var as=require(_0xab04('0x10'));var hardwareService=require(_0xab04('0x11'));var logger=require(_0xab04('0x12'))(_0xab04('0x13'));var utils=require(_0xab04('0x14'));var config=require(_0xab04('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x38e003,_0x3cf546){_0x3cf546=_0x3cf546||0xcc;return function(_0x4160d5){if(_0x4160d5){return _0x38e003[_0xab04('0x16')](_0x3cf546);}return _0x38e003['status'](_0x3cf546)[_0xab04('0x17')]();};}function respondWithResult(_0x2934bd,_0x5e3471){_0x5e3471=_0x5e3471||0xc8;return function(_0x233a8d){if(_0x233a8d){return _0x2934bd[_0xab04('0x18')](_0x5e3471)[_0xab04('0x19')](_0x233a8d);}};}function respondWithFilteredResult(_0x1fb034,_0x2cff48){return function(_0x523c51){if(_0x523c51){var _0x3371ed=typeof _0x2cff48[_0xab04('0x1a')]===_0xab04('0x1b')&&typeof _0x2cff48[_0xab04('0x1c')]===_0xab04('0x1b');var _0x5d10f7=_0x523c51['count'];var _0x371c30=_0x3371ed?0x0:_0x2cff48[_0xab04('0x1a')];var _0x2c0b39=_0x3371ed?_0x523c51['count']:_0x2cff48['offset']+_0x2cff48[_0xab04('0x1c')];var _0x287011;if(_0x2c0b39>=_0x5d10f7){_0x2c0b39=_0x5d10f7;_0x287011=0xc8;}else{_0x287011=0xce;}_0x1fb034[_0xab04('0x18')](_0x287011);return _0x1fb034['set'](_0xab04('0x1d'),_0x371c30+'-'+_0x2c0b39+'/'+_0x5d10f7)['json'](_0x523c51);}return null;};}function patchUpdates(_0x395c6b){return function(_0x2ac32c){try{jsonpatch['apply'](_0x2ac32c,_0x395c6b,!![]);}catch(_0x4808ba){return BPromise[_0xab04('0x1e')](_0x4808ba);}return _0x2ac32c[_0xab04('0x1f')]();};}function saveUpdates(_0x5a204c,_0x3f0d72){return function(_0x19d9cb){if(_0x19d9cb){return _0x19d9cb[_0xab04('0x20')](_0x5a204c)[_0xab04('0x21')](function(_0x3667fd){return _0x3667fd;});}return null;};}function removeEntity(_0x4c7a19,_0x19fcab){return function(_0x4df287){if(_0x4df287){return _0x4df287[_0xab04('0x22')]()[_0xab04('0x21')](function(){_0x4c7a19['status'](0xcc)[_0xab04('0x17')]();});}};}function handleEntityNotFound(_0x49b9bf,_0x59f287){return function(_0x587620){if(!_0x587620){_0x49b9bf[_0xab04('0x16')](0x194);}return _0x587620;};}function handleError(_0xb8bb3,_0x2f5a8c){_0x2f5a8c=_0x2f5a8c||0x1f4;return function(_0x9a1b1){logger[_0xab04('0x23')](_0x9a1b1['stack']);if(_0x9a1b1['name']){delete _0x9a1b1[_0xab04('0x24')];}_0xb8bb3['status'](_0x2f5a8c)[_0xab04('0x25')](_0x9a1b1);};}exports[_0xab04('0x26')]=function(_0x15cae9,_0x2fb6e4){var _0x331aa9={'raw':!![],'where':{'id':_0x15cae9['params']['id']}},_0x3c61bd={};_0x3c61bd[_0xab04('0x27')]=_[_0xab04('0x28')](db['ChatApplication'][_0xab04('0x29')]);_0x3c61bd[_0xab04('0x2a')]=_[_0xab04('0x28')](_0x15cae9[_0xab04('0x2a')]);_0x3c61bd[_0xab04('0x2b')]=_[_0xab04('0x2c')](_0x3c61bd['model'],_0x3c61bd[_0xab04('0x2a')]);_0x331aa9['attributes']=_[_0xab04('0x2c')](_0x3c61bd[_0xab04('0x27')],qs[_0xab04('0x2d')](_0x15cae9[_0xab04('0x2a')]['fields']));_0x331aa9[_0xab04('0x2e')]=_0x331aa9['attributes'][_0xab04('0x2f')]?_0x331aa9[_0xab04('0x2e')]:_0x3c61bd[_0xab04('0x27')];if(_0x15cae9[_0xab04('0x2a')][_0xab04('0x30')]){_0x331aa9[_0xab04('0x31')]=[{'all':!![]}];}_0x331aa9=_[_0xab04('0x32')]({},_0x331aa9,_0x15cae9['options']);return db['ChatApplication'][_0xab04('0x33')](_0x331aa9)[_0xab04('0x21')](handleEntityNotFound(_0x2fb6e4,null))[_0xab04('0x21')](respondWithResult(_0x2fb6e4,null))['catch'](handleError(_0x2fb6e4,null));};exports[_0xab04('0x20')]=function(_0x29b73a,_0x5a9a5b){if(_0x29b73a[_0xab04('0x34')]['id']){delete _0x29b73a[_0xab04('0x34')]['id'];}return db[_0xab04('0x35')][_0xab04('0x33')]({'where':{'id':_0x29b73a[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x5a9a5b,null))[_0xab04('0x21')](saveUpdates(_0x29b73a['body'],null))['then'](respondWithResult(_0x5a9a5b,null))[_0xab04('0x37')](handleError(_0x5a9a5b,null));};exports[_0xab04('0x22')]=function(_0x12539d,_0x16ad54){return db['ChatApplication'][_0xab04('0x33')]({'where':{'id':_0x12539d[_0xab04('0x36')]['id']}})['then'](handleEntityNotFound(_0x16ad54,null))[_0xab04('0x21')](removeEntity(_0x16ad54,null))[_0xab04('0x37')](handleError(_0x16ad54,null));};
\ No newline at end of file
index 195e64b..7dad892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7250=['utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','rimraf','./chatApplication.attributes','ChatApplication','chat_applications'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x7250,0x1b1));var _0x0725=function(_0x5653c4,_0x149d40){_0x5653c4=_0x5653c4-0x0;var _0x4dc527=_0x7250[_0x5653c4];return _0x4dc527;};'use strict';var _=require(_0x0725('0x0'));var util=require(_0x0725('0x1'));var logger=require('../../config/logger')(_0x0725('0x2'));var moment=require(_0x0725('0x3'));var BPromise=require(_0x0725('0x4'));var rp=require(_0x0725('0x5'));var fs=require('fs');var path=require(_0x0725('0x6'));var rimraf=require(_0x0725('0x7'));var config=require('../../config/environment');var attributes=require(_0x0725('0x8'));module['exports']=function(_0x4e8c6c,_0xa32c3f){return _0x4e8c6c['define'](_0x0725('0x9'),attributes,{'tableName':_0x0725('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x0725('0xb')});};
\ No newline at end of file
+var _0x672e=['path','rimraf','../../config/environment','define','ChatApplication','chat_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x672e,0x1ac));var _0xe672=function(_0x9b8437,_0xe2180d){_0x9b8437=_0x9b8437-0x0;var _0x30391a=_0x672e[_0x9b8437];return _0x30391a;};'use strict';var _=require(_0xe672('0x0'));var util=require(_0xe672('0x1'));var logger=require('../../config/logger')(_0xe672('0x2'));var moment=require(_0xe672('0x3'));var BPromise=require(_0xe672('0x4'));var rp=require(_0xe672('0x5'));var fs=require('fs');var path=require(_0xe672('0x6'));var rimraf=require(_0xe672('0x7'));var config=require(_0xe672('0x8'));var attributes=require('./chatApplication.attributes');module['exports']=function(_0x642e2e,_0x44bd36){return _0x642e2e[_0xe672('0x9')](_0xe672('0xa'),attributes,{'tableName':_0xe672('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe672('0xc'),'collate':_0xe672('0xd')});};
\ No newline at end of file
index 894b668..af8a5f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98d5=['debug','ChatApplication,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','ChatApplication,\x20%s,\x20%s'];(function(_0x23d766,_0x147078){var _0x4ff5b5=function(_0x3258c7){while(--_0x3258c7){_0x23d766['push'](_0x23d766['shift']());}};_0x4ff5b5(++_0x147078);}(_0x98d5,0x197));var _0x598d=function(_0x429c2f,_0x5efe5){_0x429c2f=_0x429c2f-0x0;var _0xa6a978=_0x98d5[_0x429c2f];return _0xa6a978;};'use strict';var _=require(_0x598d('0x0'));var util=require(_0x598d('0x1'));var moment=require('moment');var BPromise=require(_0x598d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x598d('0x3'))['db'];var utils=require(_0x598d('0x4'));var logger=require(_0x598d('0x5'))(_0x598d('0x6'));var config=require(_0x598d('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x598d('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e365e,_0x7fb811,_0x40aecf){return new BPromise(function(_0x40e78c,_0x4ee58d){return client[_0x598d('0x9')](_0x3e365e,_0x40aecf)[_0x598d('0xa')](function(_0x4b5bfd){logger[_0x598d('0xb')](_0x598d('0xc'),_0x7fb811,'request\x20sent');logger[_0x598d('0xd')](_0x598d('0xe'),_0x7fb811,'request\x20sent',JSON['stringify'](_0x4b5bfd));if(_0x4b5bfd['error']){if(_0x4b5bfd['error'][_0x598d('0xf')]===0x1f4){logger[_0x598d('0x10')](_0x598d('0xc'),_0x7fb811,_0x4b5bfd[_0x598d('0x10')][_0x598d('0x11')]);return _0x4ee58d(_0x4b5bfd[_0x598d('0x10')]['message']);}logger[_0x598d('0x10')](_0x598d('0xc'),_0x7fb811,_0x4b5bfd['error'][_0x598d('0x11')]);return _0x40e78c(_0x4b5bfd[_0x598d('0x10')]['message']);}else{logger[_0x598d('0xb')](_0x598d('0xc'),_0x7fb811,_0x598d('0x12'));_0x40e78c(_0x4b5bfd[_0x598d('0x13')][_0x598d('0x11')]);}})[_0x598d('0x14')](function(_0x3d2d2c){logger[_0x598d('0x10')](_0x598d('0xc'),_0x7fb811,_0x3d2d2c);_0x4ee58d(_0x3d2d2c);});});}
\ No newline at end of file
+var _0x69bb=['client','http','request','then','ChatApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','rpc','../../config/environment'];(function(_0x3cf7d4,_0x9090f2){var _0x4e3770=function(_0x4dabfc){while(--_0x4dabfc){_0x3cf7d4['push'](_0x3cf7d4['shift']());}};_0x4e3770(++_0x9090f2);}(_0x69bb,0xdc));var _0xb69b=function(_0xa2d998,_0x4150dc){_0xa2d998=_0xa2d998-0x0;var _0x7c7b93=_0x69bb[_0xa2d998];return _0x7c7b93;};'use strict';var _=require(_0xb69b('0x0'));var util=require(_0xb69b('0x1'));var moment=require(_0xb69b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb69b('0x3'));var fs=require('fs');var Redis=require(_0xb69b('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb69b('0x5'));var logger=require('../../config/logger')(_0xb69b('0x6'));var config=require(_0xb69b('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb69b('0x8')][_0xb69b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2d4f80,_0x357ab4,_0x1ff4d1){return new BPromise(function(_0x5ad182,_0xe640df){return client[_0xb69b('0xa')](_0x2d4f80,_0x1ff4d1)[_0xb69b('0xb')](function(_0x5a9e5e){logger['info'](_0xb69b('0xc'),_0x357ab4,'request\x20sent');logger['debug']('ChatApplication,\x20%s,\x20%s,\x20%s',_0x357ab4,_0xb69b('0xd'),JSON[_0xb69b('0xe')](_0x5a9e5e));if(_0x5a9e5e[_0xb69b('0xf')]){if(_0x5a9e5e[_0xb69b('0xf')]['code']===0x1f4){logger[_0xb69b('0xf')]('ChatApplication,\x20%s,\x20%s',_0x357ab4,_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);return _0xe640df(_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);}logger['error']('ChatApplication,\x20%s,\x20%s',_0x357ab4,_0x5a9e5e['error'][_0xb69b('0x10')]);return _0x5ad182(_0x5a9e5e[_0xb69b('0xf')][_0xb69b('0x10')]);}else{logger[_0xb69b('0x11')](_0xb69b('0xc'),_0x357ab4,_0xb69b('0xd'));_0x5ad182(_0x5a9e5e['result'][_0xb69b('0x10')]);}})[_0xb69b('0x12')](function(_0x56b77e){logger['error'](_0xb69b('0xc'),_0x357ab4,_0x56b77e);_0xe640df(_0x56b77e);});});}
\ No newline at end of file
index b70e6a8..d8abb89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd278=['isAuthenticated','show','put','/:id','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../config/environment','./chatApplication.controller','get'];(function(_0x4b355c,_0x5078cf){var _0x4bf29a=function(_0x1237d5){while(--_0x1237d5){_0x4b355c['push'](_0x4b355c['shift']());}};_0x4bf29a(++_0x5078cf);}(_0xd278,0x198));var _0x8d27=function(_0x4a50f5,_0x59b73a){_0x4a50f5=_0x4a50f5-0x0;var _0x24283d=_0xd278[_0x4a50f5];return _0x24283d;};'use strict';var multer=require(_0x8d27('0x0'));var util=require('util');var path=require(_0x8d27('0x1'));var timeout=require('connect-timeout');var express=require(_0x8d27('0x2'));var router=express[_0x8d27('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8d27('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8d27('0x5'));var controller=require(_0x8d27('0x6'));router[_0x8d27('0x7')]('/:id',auth[_0x8d27('0x8')](),controller[_0x8d27('0x9')]);router[_0x8d27('0xa')](_0x8d27('0xb'),auth[_0x8d27('0x8')](),controller[_0x8d27('0xc')]);router[_0x8d27('0xd')](_0x8d27('0xb'),auth[_0x8d27('0x8')](),controller[_0x8d27('0xe')]);module[_0x8d27('0xf')]=router;
\ No newline at end of file
+var _0x32c7=['show','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated'];(function(_0x1b55ab,_0x5ae222){var _0xda08a7=function(_0x5f1f9c){while(--_0x5f1f9c){_0x1b55ab['push'](_0x1b55ab['shift']());}};_0xda08a7(++_0x5ae222);}(_0x32c7,0x174));var _0x732c=function(_0x1ce991,_0x2d4ae6){_0x1ce991=_0x1ce991-0x0;var _0x345ec8=_0x32c7[_0x1ce991];return _0x345ec8;};'use strict';var multer=require(_0x732c('0x0'));var util=require(_0x732c('0x1'));var path=require(_0x732c('0x2'));var timeout=require(_0x732c('0x3'));var express=require(_0x732c('0x4'));var router=express[_0x732c('0x5')]();var fs_extra=require(_0x732c('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x732c('0x7'));var config=require(_0x732c('0x8'));var controller=require(_0x732c('0x9'));router['get'](_0x732c('0xa'),auth[_0x732c('0xb')](),controller[_0x732c('0xc')]);router[_0x732c('0xd')](_0x732c('0xa'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x732c('0xb')](),controller[_0x732c('0xe')]);module[_0x732c('0xf')]=router;
\ No newline at end of file
index ebe3b23..c60aeee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf163=['sequelize','STRING','BOOLEAN'];(function(_0x1c6089,_0x3816e2){var _0x4d97c1=function(_0x3e631b){while(--_0x3e631b){_0x1c6089['push'](_0x1c6089['shift']());}};_0x4d97c1(++_0x3816e2);}(_0xf163,0x129));var _0x3f16=function(_0x3cc9d9,_0x69ed38){_0x3cc9d9=_0x3cc9d9-0x0;var _0x1a425d=_0xf163[_0x3cc9d9];return _0x1a425d;};'use strict';var Sequelize=require(_0x3f16('0x0'));module['exports']={'name':{'type':Sequelize[_0x3f16('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x3f16('0x1')]},'write':{'type':Sequelize[_0x3f16('0x2')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xe9f2=['exports','STRING','BOOLEAN','sequelize'];(function(_0x2338fa,_0x80579a){var _0x42df9b=function(_0x13fe56){while(--_0x13fe56){_0x2338fa['push'](_0x2338fa['shift']());}};_0x42df9b(++_0x80579a);}(_0xe9f2,0x10f));var _0x2e9f=function(_0x36b205,_0x3b1dd2){_0x36b205=_0x36b205-0x0;var _0x28ed25=_0xe9f2[_0x36b205];return _0x28ed25;};'use strict';var Sequelize=require(_0x2e9f('0x0'));module[_0x2e9f('0x1')]={'name':{'type':Sequelize[_0x2e9f('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'write':{'type':Sequelize[_0x2e9f('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 76032e9..b579ae0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1491=['create','body','update','describe','getUnread','toInteger','addMembers','find','ids','omit','getMembers','findOne','removeMembers','addMessage','getMessages','ChatInternalMessage','split','format','YYYY-MM-DD\x20HH:mm:ss','hasOwnProperty','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','ChatGroup','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection'];(function(_0x93ee4,_0x3f7007){var _0x196916=function(_0x9a98b6){while(--_0x9a98b6){_0x93ee4['push'](_0x93ee4['shift']());}};_0x196916(++_0x3f7007);}(_0x1491,0x76));var _0x1149=function(_0x2bf470,_0x4a620a){_0x2bf470=_0x2bf470-0x0;var _0x226559=_0x1491[_0x2bf470];return _0x226559;};'use strict';var emlformat=require(_0x1149('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1149('0x1'));var jsonpatch=require(_0x1149('0x2'));var rp=require(_0x1149('0x3'));var moment=require(_0x1149('0x4'));var BPromise=require(_0x1149('0x5'));var Mustache=require(_0x1149('0x6'));var util=require('util');var path=require(_0x1149('0x7'));var sox=require('sox');var csv=require(_0x1149('0x8'));var ejs=require(_0x1149('0x9'));var fs=require('fs');var fs_extra=require(_0x1149('0xa'));var _=require(_0x1149('0xb'));var squel=require(_0x1149('0xc'));var crypto=require('crypto');var jsforce=require(_0x1149('0xd'));var deskjs=require(_0x1149('0xe'));var toCsv=require(_0x1149('0x8'));var querystring=require('querystring');var Papa=require(_0x1149('0xf'));var Redis=require(_0x1149('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1149('0x11'));var hardwareService=require(_0x1149('0x12'));var logger=require(_0x1149('0x13'))(_0x1149('0x14'));var utils=require('../../config/utils');var config=require(_0x1149('0x15'));var licenseUtil=require(_0x1149('0x16'));var db=require('../../mysqldb')['db'];config[_0x1149('0x17')]=_[_0x1149('0x18')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x1149('0x19'))(new Redis(config['redis']));require(_0x1149('0x1a'))[_0x1149('0x1b')](socket);function respondWithStatusCode(_0x3d16c7,_0x177a3c){_0x177a3c=_0x177a3c||0xcc;return function(_0x3b1b0a){if(_0x3b1b0a){return _0x3d16c7[_0x1149('0x1c')](_0x177a3c);}return _0x3d16c7[_0x1149('0x1d')](_0x177a3c)[_0x1149('0x1e')]();};}function respondWithResult(_0x34a0ae,_0x55a014){_0x55a014=_0x55a014||0xc8;return function(_0x19e79f){if(_0x19e79f){return _0x34a0ae[_0x1149('0x1d')](_0x55a014)[_0x1149('0x1f')](_0x19e79f);}};}function respondWithFilteredResult(_0x59f3a3,_0x412c0d){return function(_0xbd1107){if(_0xbd1107){var _0x2b481d=typeof _0x412c0d[_0x1149('0x20')]===_0x1149('0x21')&&typeof _0x412c0d[_0x1149('0x22')]===_0x1149('0x21');var _0x21af20=_0xbd1107[_0x1149('0x23')];var _0x13c7de=_0x2b481d?0x0:_0x412c0d[_0x1149('0x20')];var _0x385727=_0x2b481d?_0xbd1107[_0x1149('0x23')]:_0x412c0d['offset']+_0x412c0d[_0x1149('0x22')];var _0x11065c;if(_0x385727>=_0x21af20){_0x385727=_0x21af20;_0x11065c=0xc8;}else{_0x11065c=0xce;}_0x59f3a3[_0x1149('0x1d')](_0x11065c);return _0x59f3a3[_0x1149('0x24')](_0x1149('0x25'),_0x13c7de+'-'+_0x385727+'/'+_0x21af20)[_0x1149('0x1f')](_0xbd1107);}return null;};}function patchUpdates(_0x57efef){return function(_0x4e51ba){try{jsonpatch[_0x1149('0x26')](_0x4e51ba,_0x57efef,!![]);}catch(_0x5a39af){return BPromise[_0x1149('0x27')](_0x5a39af);}return _0x4e51ba[_0x1149('0x28')]();};}function saveUpdates(_0x2c3e6a,_0x2d8620){return function(_0x1d6b16){if(_0x1d6b16){return _0x1d6b16['update'](_0x2c3e6a)[_0x1149('0x29')](function(_0x56deab){return _0x56deab;});}return null;};}function removeEntity(_0x3a3528,_0x74791a){return function(_0x1bb547){if(_0x1bb547){return _0x1bb547[_0x1149('0x2a')]()['then'](function(){_0x3a3528[_0x1149('0x1d')](0xcc)[_0x1149('0x1e')]();});}};}function handleEntityNotFound(_0x502644,_0x22a9dc){return function(_0x554f4c){if(!_0x554f4c){_0x502644['sendStatus'](0x194);}return _0x554f4c;};}function handleError(_0x3a8cd4,_0x2e3033){_0x2e3033=_0x2e3033||0x1f4;return function(_0x665cb1){logger[_0x1149('0x2b')](_0x665cb1[_0x1149('0x2c')]);if(_0x665cb1['name']){delete _0x665cb1[_0x1149('0x2d')];}_0x3a8cd4['status'](_0x2e3033)[_0x1149('0x2e')](_0x665cb1);};}exports[_0x1149('0x2f')]=function(_0x304de5,_0x1d14ee){var _0x545795={},_0x1afa0a={},_0x5e3f32={'count':0x0,'rows':[]};var _0x3c59b2=_['map'](db[_0x1149('0x30')][_0x1149('0x31')],function(_0x50e5cf){return{'name':_0x50e5cf[_0x1149('0x32')],'type':_0x50e5cf[_0x1149('0x33')][_0x1149('0x34')]};});_0x1afa0a[_0x1149('0x35')]=_[_0x1149('0x36')](_0x3c59b2,'name');_0x1afa0a[_0x1149('0x37')]=_[_0x1149('0x38')](_0x304de5[_0x1149('0x37')]);_0x1afa0a[_0x1149('0x39')]=_['intersection'](_0x1afa0a[_0x1149('0x35')],_0x1afa0a[_0x1149('0x37')]);_0x545795[_0x1149('0x3a')]=_['intersection'](_0x1afa0a['model'],qs[_0x1149('0x3b')](_0x304de5[_0x1149('0x37')][_0x1149('0x3b')]));_0x545795[_0x1149('0x3a')]=_0x545795[_0x1149('0x3a')][_0x1149('0x3c')]?_0x545795[_0x1149('0x3a')]:_0x1afa0a[_0x1149('0x35')];if(!_0x304de5[_0x1149('0x37')]['hasOwnProperty'](_0x1149('0x3d'))){_0x545795[_0x1149('0x22')]=qs[_0x1149('0x22')](_0x304de5[_0x1149('0x37')]['limit']);_0x545795[_0x1149('0x20')]=qs['offset'](_0x304de5[_0x1149('0x37')][_0x1149('0x20')]);}_0x545795[_0x1149('0x3e')]=qs[_0x1149('0x3f')](_0x304de5[_0x1149('0x37')][_0x1149('0x3f')]);_0x545795[_0x1149('0x40')]=qs['filters'](_[_0x1149('0x41')](_0x304de5[_0x1149('0x37')],_0x1afa0a[_0x1149('0x39')]),_0x3c59b2);if(_0x304de5[_0x1149('0x37')][_0x1149('0x42')]){_0x545795[_0x1149('0x40')]=_[_0x1149('0x43')](_0x545795[_0x1149('0x40')],{'$or':_[_0x1149('0x36')](_0x3c59b2,function(_0x1f67b1){if(_0x1f67b1[_0x1149('0x33')]!==_0x1149('0x44')){var _0xf354d1={};_0xf354d1[_0x1f67b1['name']]={'$like':'%'+_0x304de5[_0x1149('0x37')][_0x1149('0x42')]+'%'};return _0xf354d1;}})});}_0x545795=_[_0x1149('0x43')]({},_0x545795,_0x304de5[_0x1149('0x45')]);var _0x2e8a96={'where':_0x545795['where']};return db[_0x1149('0x30')]['count'](_0x2e8a96)[_0x1149('0x29')](function(_0x129f06){_0x5e3f32['count']=_0x129f06;if(_0x304de5[_0x1149('0x37')][_0x1149('0x46')]){_0x545795[_0x1149('0x47')]=[{'all':!![]}];}return db['ChatGroup'][_0x1149('0x48')](_0x545795);})[_0x1149('0x29')](function(_0x5785e9){_0x5e3f32[_0x1149('0x49')]=_0x5785e9;return _0x5e3f32;})[_0x1149('0x29')](respondWithFilteredResult(_0x1d14ee,_0x545795))[_0x1149('0x4a')](handleError(_0x1d14ee,null));};exports[_0x1149('0x4b')]=function(_0x4fcd62,_0x8d48fd){var _0x386225={'raw':!![],'where':{'id':_0x4fcd62[_0x1149('0x4c')]['id']}},_0x4e2952={};_0x4e2952['model']=_[_0x1149('0x38')](db[_0x1149('0x30')]['rawAttributes']);_0x4e2952[_0x1149('0x37')]=_[_0x1149('0x38')](_0x4fcd62[_0x1149('0x37')]);_0x4e2952['filters']=_[_0x1149('0x4d')](_0x4e2952[_0x1149('0x35')],_0x4e2952[_0x1149('0x37')]);_0x386225[_0x1149('0x3a')]=_[_0x1149('0x4d')](_0x4e2952[_0x1149('0x35')],qs[_0x1149('0x3b')](_0x4fcd62[_0x1149('0x37')][_0x1149('0x3b')]));_0x386225[_0x1149('0x3a')]=_0x386225['attributes'][_0x1149('0x3c')]?_0x386225[_0x1149('0x3a')]:_0x4e2952[_0x1149('0x35')];if(_0x4fcd62[_0x1149('0x37')][_0x1149('0x46')]){_0x386225['include']=[{'all':!![]}];}_0x386225=_[_0x1149('0x43')]({},_0x386225,_0x4fcd62[_0x1149('0x45')]);return db[_0x1149('0x30')]['find'](_0x386225)[_0x1149('0x29')](handleEntityNotFound(_0x8d48fd,null))[_0x1149('0x29')](respondWithResult(_0x8d48fd,null))[_0x1149('0x4a')](handleError(_0x8d48fd,null));};exports[_0x1149('0x4e')]=function(_0x5618e6,_0x59d800){return db[_0x1149('0x30')]['create'](_0x5618e6[_0x1149('0x4f')],{})['then'](respondWithResult(_0x59d800,0xc9))['catch'](handleError(_0x59d800,null));};exports[_0x1149('0x50')]=function(_0x56dce6,_0x56e509){if(_0x56dce6[_0x1149('0x4f')]['id']){delete _0x56dce6[_0x1149('0x4f')]['id'];}return db[_0x1149('0x30')]['find']({'where':{'id':_0x56dce6[_0x1149('0x4c')]['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x56e509,null))['then'](saveUpdates(_0x56dce6[_0x1149('0x4f')],null))['then'](respondWithResult(_0x56e509,null))[_0x1149('0x4a')](handleError(_0x56e509,null));};exports[_0x1149('0x2a')]=function(_0x43d52c,_0x5351b0){return db['ChatGroup']['find']({'where':{'id':_0x43d52c[_0x1149('0x4c')]['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x5351b0,null))[_0x1149('0x29')](removeEntity(_0x5351b0,null))[_0x1149('0x4a')](handleError(_0x5351b0,null));};exports[_0x1149('0x51')]=function(_0x45a326,_0x45aa54){return db[_0x1149('0x30')][_0x1149('0x51')]()[_0x1149('0x29')](respondWithResult(_0x45aa54,null))[_0x1149('0x4a')](handleError(_0x45aa54,null));};exports[_0x1149('0x52')]=function(_0x42e050,_0x1b21f1,_0x2d6c22){return db['ChatInternalMessage']['count']({'where':{'ChatGroupId':_0x42e050['params']['id'],'ToId':_0x42e050['user']['id'],'read':![]}})[_0x1149('0x29')](function(_0x8f72a8){return{'id':_[_0x1149('0x53')](_0x42e050[_0x1149('0x4c')]['id']),'count':_0x8f72a8};})[_0x1149('0x29')](respondWithResult(_0x1b21f1,null))[_0x1149('0x4a')](handleError(_0x1b21f1,null));};exports[_0x1149('0x54')]=function(_0x2148aa,_0x41cf32,_0xf91b30){return db[_0x1149('0x30')][_0x1149('0x55')]({'where':{'id':_0x2148aa[_0x1149('0x4c')]['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x41cf32,null))['then'](function(_0x3400ce){if(_0x3400ce){return _0x3400ce[_0x1149('0x54')](_0x2148aa['body'][_0x1149('0x56')],_[_0x1149('0x57')](_0x2148aa[_0x1149('0x4f')],[_0x1149('0x56'),'id'])||{});}})['then'](respondWithResult(_0x41cf32,null))[_0x1149('0x4a')](handleError(_0x41cf32,null));};exports[_0x1149('0x58')]=function(_0x300960,_0x30599e,_0x31277c){var _0x49a01b={};var _0x32184e={};var _0x599b34;var _0x4af316;return db['ChatGroup'][_0x1149('0x59')]({'where':{'id':_0x300960[_0x1149('0x4c')]['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x30599e,null))['then'](function(_0x473688){if(_0x473688){_0x599b34=_0x473688;_0x32184e[_0x1149('0x35')]=_['keys'](db['User'][_0x1149('0x31')]);_0x32184e[_0x1149('0x37')]=_['keys'](_0x300960[_0x1149('0x37')]);_0x32184e[_0x1149('0x39')]=_['intersection'](_0x32184e['model'],_0x32184e[_0x1149('0x37')]);_0x49a01b[_0x1149('0x3a')]=_[_0x1149('0x4d')](_0x32184e['model'],qs['fields'](_0x300960[_0x1149('0x37')][_0x1149('0x3b')]));_0x49a01b[_0x1149('0x3a')]=_0x49a01b[_0x1149('0x3a')]['length']?_0x49a01b[_0x1149('0x3a')]:_0x32184e[_0x1149('0x35')];_0x49a01b['order']=qs['sort'](_0x300960[_0x1149('0x37')][_0x1149('0x3f')]);_0x49a01b[_0x1149('0x40')]=qs['filters'](_[_0x1149('0x41')](_0x300960[_0x1149('0x37')],_0x32184e[_0x1149('0x39')]));if(_0x300960['query'][_0x1149('0x42')]){_0x49a01b[_0x1149('0x40')]=_[_0x1149('0x43')](_0x49a01b['where'],{'$or':_[_0x1149('0x36')](_0x49a01b['attributes'],function(_0x37ce46){var _0x224a34={};_0x224a34[_0x37ce46]={'$like':'%'+_0x300960['query'][_0x1149('0x42')]+'%'};return _0x224a34;})});}_0x49a01b=_['merge']({},_0x49a01b,_0x300960['options']);return _0x599b34[_0x1149('0x58')](_0x49a01b);}})[_0x1149('0x29')](function(_0x1728ae){if(_0x1728ae){_0x4af316=_0x1728ae[_0x1149('0x3c')];if(!_0x300960[_0x1149('0x37')]['hasOwnProperty'](_0x1149('0x3d'))){_0x49a01b['limit']=qs['limit'](_0x300960[_0x1149('0x37')][_0x1149('0x22')]);_0x49a01b[_0x1149('0x20')]=qs['offset'](_0x300960[_0x1149('0x37')][_0x1149('0x20')]);}return _0x599b34[_0x1149('0x58')](_0x49a01b);}})['then'](function(_0x4d9973){if(_0x4d9973){return _0x4d9973?{'count':_0x4af316,'rows':_0x4d9973}:null;}})[_0x1149('0x29')](respondWithResult(_0x30599e,null))[_0x1149('0x4a')](handleError(_0x30599e,null));};exports[_0x1149('0x5a')]=function(_0x2614e9,_0x292ff9,_0x319919){return db[_0x1149('0x30')]['find']({'where':{'id':_0x2614e9['params']['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x292ff9,null))[_0x1149('0x29')](function(_0x45d90d){if(_0x45d90d){return _0x45d90d[_0x1149('0x5a')](_0x2614e9[_0x1149('0x37')][_0x1149('0x56')]);}})[_0x1149('0x29')](respondWithStatusCode(_0x292ff9,null))[_0x1149('0x4a')](handleError(_0x292ff9,null));};exports[_0x1149('0x5b')]=function(_0x4c6db8,_0x17d4e2,_0x5537f6){if(_0x4c6db8[_0x1149('0x4f')]['id']){delete _0x4c6db8[_0x1149('0x4f')]['id'];}return db[_0x1149('0x30')][_0x1149('0x55')]({'where':{'id':_0x4c6db8[_0x1149('0x4c')]['id']}})['then'](handleEntityNotFound(_0x17d4e2,null))[_0x1149('0x29')](function(_0xf139b3){if(_0xf139b3){_0x4c6db8['body']['ChatGroupId']=_0xf139b3['id'];return db['ChatInternalMessage'][_0x1149('0x4e')](_0x4c6db8[_0x1149('0x4f')]);}})['then'](respondWithResult(_0x17d4e2,null))[_0x1149('0x4a')](handleError(_0x17d4e2,null));};exports[_0x1149('0x5c')]=function(_0x2ba96f,_0x454e4c,_0x4bb1cd){var _0x47d2f1={};var _0x425530={};var _0x538fc6;var _0x355056;return db[_0x1149('0x30')]['findOne']({'where':{'id':_0x2ba96f[_0x1149('0x4c')]['id']}})[_0x1149('0x29')](handleEntityNotFound(_0x454e4c,null))['then'](function(_0x656113){if(_0x656113){_0x538fc6=_0x656113;_0x425530[_0x1149('0x35')]=_[_0x1149('0x38')](db[_0x1149('0x5d')][_0x1149('0x31')]);_0x425530[_0x1149('0x37')]=_[_0x1149('0x38')](_0x2ba96f['query']);_0x425530[_0x1149('0x39')]=_['intersection'](_0x425530[_0x1149('0x35')],_0x425530[_0x1149('0x37')]);_0x47d2f1['attributes']=_['intersection'](_0x425530[_0x1149('0x35')],qs[_0x1149('0x3b')](_0x2ba96f[_0x1149('0x37')][_0x1149('0x3b')]));_0x47d2f1[_0x1149('0x3a')]=_0x47d2f1[_0x1149('0x3a')][_0x1149('0x3c')]?_0x47d2f1[_0x1149('0x3a')]:_0x425530[_0x1149('0x35')];_0x47d2f1[_0x1149('0x3e')]=qs[_0x1149('0x3f')](_0x2ba96f[_0x1149('0x37')][_0x1149('0x3f')]);_0x47d2f1[_0x1149('0x40')]=qs[_0x1149('0x39')](_['pick'](_0x2ba96f[_0x1149('0x37')],_0x425530[_0x1149('0x39')]));if(_0x2ba96f['query'][_0x1149('0x42')]){_0x47d2f1[_0x1149('0x40')]=_['merge'](_0x47d2f1[_0x1149('0x40')],{'$or':_[_0x1149('0x36')](_0x47d2f1[_0x1149('0x3a')],function(_0x2d81e3){var _0x2148a9={};_0x2148a9[_0x2d81e3]={'$like':'%'+_0x2ba96f['query'][_0x1149('0x42')]+'%'};return _0x2148a9;})});}if(_0x2ba96f['query']['$gte']){var _0x4fa56f=_0x2ba96f[_0x1149('0x37')]['$gte'][_0x1149('0x5e')](',');var _0x2b766f={};_0x2b766f[_0x4fa56f[0x0]]={'$gte':moment(_0x4fa56f[0x1])[_0x1149('0x5f')](_0x1149('0x60'))};_0x47d2f1[_0x1149('0x40')]=_[_0x1149('0x43')](_0x47d2f1['where'],_0x2b766f);}_0x47d2f1=_[_0x1149('0x43')]({},_0x47d2f1,_0x2ba96f['options']);return _0x538fc6[_0x1149('0x5c')](_0x47d2f1);}})[_0x1149('0x29')](function(_0x7fec3a){if(_0x7fec3a){_0x355056=_0x7fec3a['length'];if(!_0x2ba96f[_0x1149('0x37')][_0x1149('0x61')]('nolimit')){_0x47d2f1[_0x1149('0x22')]=qs['limit'](_0x2ba96f[_0x1149('0x37')][_0x1149('0x22')]);_0x47d2f1[_0x1149('0x20')]=qs['offset'](_0x2ba96f[_0x1149('0x37')][_0x1149('0x20')]);}return _0x538fc6[_0x1149('0x5c')](_0x47d2f1);}})[_0x1149('0x29')](function(_0x3f1bd6){if(_0x3f1bd6){return _0x3f1bd6?{'count':_0x355056,'rows':_0x3f1bd6}:null;}})[_0x1149('0x29')](respondWithResult(_0x454e4c,null))['catch'](handleError(_0x454e4c,null));};
\ No newline at end of file
+var _0x0f57=['body','catch','describe','getUnread','ChatInternalMessage','user','toInteger','addMembers','ids','omit','getMembers','findOne','User','pick','removeMembers','addMessage','$gte','split','getMessages','eml-format','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./chatGroup.socket','register','sendStatus','end','status','json','undefined','limit','count','offset','apply','reject','save','update','then','destroy','error','index','rawAttributes','fieldName','key','map','name','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','type','filter','options','includeAll','ChatGroup','rows','show','params','find','create'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x0f57,0x183));var _0x70f5=function(_0x29d2d2,_0x3344){_0x29d2d2=_0x29d2d2-0x0;var _0x3f6476=_0x0f57[_0x29d2d2];return _0x3f6476;};'use strict';var emlformat=require(_0x70f5('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x70f5('0x1'));var jsonpatch=require(_0x70f5('0x2'));var rp=require('request-promise');var moment=require(_0x70f5('0x3'));var BPromise=require(_0x70f5('0x4'));var Mustache=require('mustache');var util=require(_0x70f5('0x5'));var path=require(_0x70f5('0x6'));var sox=require(_0x70f5('0x7'));var csv=require(_0x70f5('0x8'));var ejs=require(_0x70f5('0x9'));var fs=require('fs');var fs_extra=require(_0x70f5('0xa'));var _=require(_0x70f5('0xb'));var squel=require(_0x70f5('0xc'));var crypto=require('crypto');var jsforce=require(_0x70f5('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x70f5('0x8'));var querystring=require('querystring');var Papa=require(_0x70f5('0xe'));var Redis=require(_0x70f5('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x70f5('0x10'));var as=require(_0x70f5('0x11'));var hardwareService=require(_0x70f5('0x12'));var logger=require(_0x70f5('0x13'))(_0x70f5('0x14'));var utils=require('../../config/utils');var config=require(_0x70f5('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x70f5('0x16'))['db'];config['redis']=_['defaults'](config[_0x70f5('0x17')],{'host':_0x70f5('0x18'),'port':0x18eb});var socket=require(_0x70f5('0x19'))(new Redis(config[_0x70f5('0x17')]));require(_0x70f5('0x1a'))[_0x70f5('0x1b')](socket);function respondWithStatusCode(_0xbfe43a,_0x3a0064){_0x3a0064=_0x3a0064||0xcc;return function(_0x51edb4){if(_0x51edb4){return _0xbfe43a[_0x70f5('0x1c')](_0x3a0064);}return _0xbfe43a['status'](_0x3a0064)[_0x70f5('0x1d')]();};}function respondWithResult(_0x554eb7,_0x48b998){_0x48b998=_0x48b998||0xc8;return function(_0x183254){if(_0x183254){return _0x554eb7[_0x70f5('0x1e')](_0x48b998)[_0x70f5('0x1f')](_0x183254);}};}function respondWithFilteredResult(_0x15384e,_0x7d6e0e){return function(_0x3fa974){if(_0x3fa974){var _0x1d5f97=typeof _0x7d6e0e['offset']===_0x70f5('0x20')&&typeof _0x7d6e0e[_0x70f5('0x21')]===_0x70f5('0x20');var _0x2297fa=_0x3fa974[_0x70f5('0x22')];var _0x21e241=_0x1d5f97?0x0:_0x7d6e0e['offset'];var _0x1543e3=_0x1d5f97?_0x3fa974[_0x70f5('0x22')]:_0x7d6e0e[_0x70f5('0x23')]+_0x7d6e0e[_0x70f5('0x21')];var _0x7d2dd7;if(_0x1543e3>=_0x2297fa){_0x1543e3=_0x2297fa;_0x7d2dd7=0xc8;}else{_0x7d2dd7=0xce;}_0x15384e[_0x70f5('0x1e')](_0x7d2dd7);return _0x15384e['set']('Content-Range',_0x21e241+'-'+_0x1543e3+'/'+_0x2297fa)[_0x70f5('0x1f')](_0x3fa974);}return null;};}function patchUpdates(_0x5cd00e){return function(_0x318eb6){try{jsonpatch[_0x70f5('0x24')](_0x318eb6,_0x5cd00e,!![]);}catch(_0x223e21){return BPromise[_0x70f5('0x25')](_0x223e21);}return _0x318eb6[_0x70f5('0x26')]();};}function saveUpdates(_0x4af92b,_0x56acf3){return function(_0x4c3124){if(_0x4c3124){return _0x4c3124[_0x70f5('0x27')](_0x4af92b)[_0x70f5('0x28')](function(_0x2689f8){return _0x2689f8;});}return null;};}function removeEntity(_0x2c0b63,_0x171061){return function(_0x32f8fe){if(_0x32f8fe){return _0x32f8fe[_0x70f5('0x29')]()[_0x70f5('0x28')](function(){_0x2c0b63[_0x70f5('0x1e')](0xcc)[_0x70f5('0x1d')]();});}};}function handleEntityNotFound(_0x526233,_0x135da2){return function(_0x190f3a){if(!_0x190f3a){_0x526233[_0x70f5('0x1c')](0x194);}return _0x190f3a;};}function handleError(_0x277b23,_0x5e0b77){_0x5e0b77=_0x5e0b77||0x1f4;return function(_0x4f3121){logger[_0x70f5('0x2a')](_0x4f3121['stack']);if(_0x4f3121['name']){delete _0x4f3121['name'];}_0x277b23[_0x70f5('0x1e')](_0x5e0b77)['send'](_0x4f3121);};}exports[_0x70f5('0x2b')]=function(_0x3d4b1a,_0x4f8ed3){var _0x578257={},_0x126fcd={},_0x52212a={'count':0x0,'rows':[]};var _0x3e0b27=_['map'](db['ChatGroup'][_0x70f5('0x2c')],function(_0x37036f){return{'name':_0x37036f[_0x70f5('0x2d')],'type':_0x37036f['type'][_0x70f5('0x2e')]};});_0x126fcd['model']=_[_0x70f5('0x2f')](_0x3e0b27,_0x70f5('0x30'));_0x126fcd[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0x3d4b1a['query']);_0x126fcd[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0x126fcd[_0x70f5('0x35')],_0x126fcd[_0x70f5('0x31')]);_0x578257[_0x70f5('0x36')]=_['intersection'](_0x126fcd[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x37')]));_0x578257['attributes']=_0x578257['attributes'][_0x70f5('0x38')]?_0x578257[_0x70f5('0x36')]:_0x126fcd[_0x70f5('0x35')];if(!_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x39')](_0x70f5('0x3a'))){_0x578257[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0x3d4b1a['query'][_0x70f5('0x21')]);_0x578257[_0x70f5('0x23')]=qs['offset'](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x23')]);}_0x578257[_0x70f5('0x3b')]=qs[_0x70f5('0x3c')](_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x3c')]);_0x578257[_0x70f5('0x3d')]=qs[_0x70f5('0x33')](_['pick'](_0x3d4b1a[_0x70f5('0x31')],_0x126fcd[_0x70f5('0x33')]),_0x3e0b27);if(_0x3d4b1a[_0x70f5('0x31')]['filter']){_0x578257[_0x70f5('0x3d')]=_[_0x70f5('0x3e')](_0x578257['where'],{'$or':_['map'](_0x3e0b27,function(_0x2af11e){if(_0x2af11e[_0x70f5('0x3f')]!=='VIRTUAL'){var _0x12856e={};_0x12856e[_0x2af11e[_0x70f5('0x30')]]={'$like':'%'+_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x40')]+'%'};return _0x12856e;}})});}_0x578257=_['merge']({},_0x578257,_0x3d4b1a[_0x70f5('0x41')]);var _0x15da15={'where':_0x578257[_0x70f5('0x3d')]};return db['ChatGroup']['count'](_0x15da15)[_0x70f5('0x28')](function(_0x3b1b13){_0x52212a[_0x70f5('0x22')]=_0x3b1b13;if(_0x3d4b1a[_0x70f5('0x31')][_0x70f5('0x42')]){_0x578257['include']=[{'all':!![]}];}return db[_0x70f5('0x43')]['findAll'](_0x578257);})['then'](function(_0xc6b136){_0x52212a[_0x70f5('0x44')]=_0xc6b136;return _0x52212a;})[_0x70f5('0x28')](respondWithFilteredResult(_0x4f8ed3,_0x578257))['catch'](handleError(_0x4f8ed3,null));};exports[_0x70f5('0x45')]=function(_0x65fbfb,_0x5120ac){var _0x57856b={'raw':!![],'where':{'id':_0x65fbfb[_0x70f5('0x46')]['id']}},_0x5bc086={};_0x5bc086[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x43')][_0x70f5('0x2c')]);_0x5bc086[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0x65fbfb[_0x70f5('0x31')]);_0x5bc086[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0x5bc086[_0x70f5('0x35')],_0x5bc086[_0x70f5('0x31')]);_0x57856b[_0x70f5('0x36')]=_['intersection'](_0x5bc086[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x65fbfb[_0x70f5('0x31')][_0x70f5('0x37')]));_0x57856b[_0x70f5('0x36')]=_0x57856b['attributes'][_0x70f5('0x38')]?_0x57856b['attributes']:_0x5bc086['model'];if(_0x65fbfb[_0x70f5('0x31')][_0x70f5('0x42')]){_0x57856b['include']=[{'all':!![]}];}_0x57856b=_['merge']({},_0x57856b,_0x65fbfb['options']);return db[_0x70f5('0x43')][_0x70f5('0x47')](_0x57856b)['then'](handleEntityNotFound(_0x5120ac,null))[_0x70f5('0x28')](respondWithResult(_0x5120ac,null))['catch'](handleError(_0x5120ac,null));};exports['create']=function(_0x1d9bff,_0x1e6cc0){return db[_0x70f5('0x43')][_0x70f5('0x48')](_0x1d9bff[_0x70f5('0x49')],{})['then'](respondWithResult(_0x1e6cc0,0xc9))[_0x70f5('0x4a')](handleError(_0x1e6cc0,null));};exports[_0x70f5('0x27')]=function(_0x48ced0,_0x21e8c0){if(_0x48ced0[_0x70f5('0x49')]['id']){delete _0x48ced0[_0x70f5('0x49')]['id'];}return db[_0x70f5('0x43')]['find']({'where':{'id':_0x48ced0[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x21e8c0,null))[_0x70f5('0x28')](saveUpdates(_0x48ced0[_0x70f5('0x49')],null))[_0x70f5('0x28')](respondWithResult(_0x21e8c0,null))[_0x70f5('0x4a')](handleError(_0x21e8c0,null));};exports[_0x70f5('0x29')]=function(_0x57a8c5,_0x1a2921){return db['ChatGroup'][_0x70f5('0x47')]({'where':{'id':_0x57a8c5[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x1a2921,null))[_0x70f5('0x28')](removeEntity(_0x1a2921,null))['catch'](handleError(_0x1a2921,null));};exports[_0x70f5('0x4b')]=function(_0xbdb483,_0x543a7f){return db[_0x70f5('0x43')]['describe']()[_0x70f5('0x28')](respondWithResult(_0x543a7f,null))[_0x70f5('0x4a')](handleError(_0x543a7f,null));};exports[_0x70f5('0x4c')]=function(_0xf121e3,_0x548a13,_0x548819){return db[_0x70f5('0x4d')][_0x70f5('0x22')]({'where':{'ChatGroupId':_0xf121e3['params']['id'],'ToId':_0xf121e3[_0x70f5('0x4e')]['id'],'read':![]}})[_0x70f5('0x28')](function(_0x543998){return{'id':_[_0x70f5('0x4f')](_0xf121e3[_0x70f5('0x46')]['id']),'count':_0x543998};})['then'](respondWithResult(_0x548a13,null))[_0x70f5('0x4a')](handleError(_0x548a13,null));};exports[_0x70f5('0x50')]=function(_0x549700,_0x22efbf,_0x5662c4){return db[_0x70f5('0x43')][_0x70f5('0x47')]({'where':{'id':_0x549700[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x22efbf,null))[_0x70f5('0x28')](function(_0x14208a){if(_0x14208a){return _0x14208a[_0x70f5('0x50')](_0x549700['body'][_0x70f5('0x51')],_[_0x70f5('0x52')](_0x549700[_0x70f5('0x49')],[_0x70f5('0x51'),'id'])||{});}})[_0x70f5('0x28')](respondWithResult(_0x22efbf,null))['catch'](handleError(_0x22efbf,null));};exports[_0x70f5('0x53')]=function(_0xc613a0,_0x39cc68,_0x2a8ed4){var _0x33801e={};var _0x50a10b={};var _0x4ed450;var _0x1e4b3f;return db['ChatGroup'][_0x70f5('0x54')]({'where':{'id':_0xc613a0[_0x70f5('0x46')]['id']}})['then'](handleEntityNotFound(_0x39cc68,null))[_0x70f5('0x28')](function(_0x5b750f){if(_0x5b750f){_0x4ed450=_0x5b750f;_0x50a10b[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x55')][_0x70f5('0x2c')]);_0x50a10b[_0x70f5('0x31')]=_[_0x70f5('0x32')](_0xc613a0[_0x70f5('0x31')]);_0x50a10b['filters']=_[_0x70f5('0x34')](_0x50a10b['model'],_0x50a10b[_0x70f5('0x31')]);_0x33801e['attributes']=_[_0x70f5('0x34')](_0x50a10b[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0xc613a0[_0x70f5('0x31')][_0x70f5('0x37')]));_0x33801e[_0x70f5('0x36')]=_0x33801e[_0x70f5('0x36')][_0x70f5('0x38')]?_0x33801e[_0x70f5('0x36')]:_0x50a10b['model'];_0x33801e[_0x70f5('0x3b')]=qs[_0x70f5('0x3c')](_0xc613a0['query'][_0x70f5('0x3c')]);_0x33801e['where']=qs['filters'](_[_0x70f5('0x56')](_0xc613a0[_0x70f5('0x31')],_0x50a10b[_0x70f5('0x33')]));if(_0xc613a0[_0x70f5('0x31')][_0x70f5('0x40')]){_0x33801e['where']=_['merge'](_0x33801e['where'],{'$or':_['map'](_0x33801e[_0x70f5('0x36')],function(_0x326d54){var _0x236210={};_0x236210[_0x326d54]={'$like':'%'+_0xc613a0[_0x70f5('0x31')][_0x70f5('0x40')]+'%'};return _0x236210;})});}_0x33801e=_[_0x70f5('0x3e')]({},_0x33801e,_0xc613a0[_0x70f5('0x41')]);return _0x4ed450['getMembers'](_0x33801e);}})['then'](function(_0x3e998f){if(_0x3e998f){_0x1e4b3f=_0x3e998f['length'];if(!_0xc613a0[_0x70f5('0x31')]['hasOwnProperty'](_0x70f5('0x3a'))){_0x33801e[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0xc613a0['query'][_0x70f5('0x21')]);_0x33801e[_0x70f5('0x23')]=qs['offset'](_0xc613a0[_0x70f5('0x31')][_0x70f5('0x23')]);}return _0x4ed450[_0x70f5('0x53')](_0x33801e);}})['then'](function(_0x25e08a){if(_0x25e08a){return _0x25e08a?{'count':_0x1e4b3f,'rows':_0x25e08a}:null;}})['then'](respondWithResult(_0x39cc68,null))['catch'](handleError(_0x39cc68,null));};exports['removeMembers']=function(_0x5b9e05,_0x3716cc,_0x261904){return db['ChatGroup'][_0x70f5('0x47')]({'where':{'id':_0x5b9e05[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x3716cc,null))[_0x70f5('0x28')](function(_0x34c4c0){if(_0x34c4c0){return _0x34c4c0[_0x70f5('0x57')](_0x5b9e05['query'][_0x70f5('0x51')]);}})['then'](respondWithStatusCode(_0x3716cc,null))[_0x70f5('0x4a')](handleError(_0x3716cc,null));};exports[_0x70f5('0x58')]=function(_0xb60ab6,_0x43b607,_0x3997ff){if(_0xb60ab6[_0x70f5('0x49')]['id']){delete _0xb60ab6[_0x70f5('0x49')]['id'];}return db[_0x70f5('0x43')]['find']({'where':{'id':_0xb60ab6[_0x70f5('0x46')]['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x43b607,null))['then'](function(_0x40906c){if(_0x40906c){_0xb60ab6[_0x70f5('0x49')]['ChatGroupId']=_0x40906c['id'];return db[_0x70f5('0x4d')][_0x70f5('0x48')](_0xb60ab6['body']);}})[_0x70f5('0x28')](respondWithResult(_0x43b607,null))[_0x70f5('0x4a')](handleError(_0x43b607,null));};exports['getMessages']=function(_0x5017f5,_0x2402ee,_0x7528c7){var _0x47f112={};var _0xa6507a={};var _0x4c8c35;var _0x51825f;return db[_0x70f5('0x43')][_0x70f5('0x54')]({'where':{'id':_0x5017f5['params']['id']}})[_0x70f5('0x28')](handleEntityNotFound(_0x2402ee,null))[_0x70f5('0x28')](function(_0x676702){if(_0x676702){_0x4c8c35=_0x676702;_0xa6507a[_0x70f5('0x35')]=_[_0x70f5('0x32')](db[_0x70f5('0x4d')][_0x70f5('0x2c')]);_0xa6507a[_0x70f5('0x31')]=_['keys'](_0x5017f5[_0x70f5('0x31')]);_0xa6507a[_0x70f5('0x33')]=_[_0x70f5('0x34')](_0xa6507a[_0x70f5('0x35')],_0xa6507a[_0x70f5('0x31')]);_0x47f112[_0x70f5('0x36')]=_[_0x70f5('0x34')](_0xa6507a[_0x70f5('0x35')],qs[_0x70f5('0x37')](_0x5017f5[_0x70f5('0x31')][_0x70f5('0x37')]));_0x47f112['attributes']=_0x47f112[_0x70f5('0x36')]['length']?_0x47f112['attributes']:_0xa6507a[_0x70f5('0x35')];_0x47f112['order']=qs['sort'](_0x5017f5[_0x70f5('0x31')]['sort']);_0x47f112[_0x70f5('0x3d')]=qs[_0x70f5('0x33')](_[_0x70f5('0x56')](_0x5017f5[_0x70f5('0x31')],_0xa6507a['filters']));if(_0x5017f5[_0x70f5('0x31')]['filter']){_0x47f112[_0x70f5('0x3d')]=_[_0x70f5('0x3e')](_0x47f112[_0x70f5('0x3d')],{'$or':_[_0x70f5('0x2f')](_0x47f112['attributes'],function(_0x49ff7c){var _0x2c9dd0={};_0x2c9dd0[_0x49ff7c]={'$like':'%'+_0x5017f5['query'][_0x70f5('0x40')]+'%'};return _0x2c9dd0;})});}if(_0x5017f5[_0x70f5('0x31')][_0x70f5('0x59')]){var _0x48acaf=_0x5017f5[_0x70f5('0x31')][_0x70f5('0x59')][_0x70f5('0x5a')](',');var _0xf7a6a7={};_0xf7a6a7[_0x48acaf[0x0]]={'$gte':moment(_0x48acaf[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x47f112[_0x70f5('0x3d')]=_['merge'](_0x47f112['where'],_0xf7a6a7);}_0x47f112=_[_0x70f5('0x3e')]({},_0x47f112,_0x5017f5[_0x70f5('0x41')]);return _0x4c8c35[_0x70f5('0x5b')](_0x47f112);}})[_0x70f5('0x28')](function(_0x31e79a){if(_0x31e79a){_0x51825f=_0x31e79a[_0x70f5('0x38')];if(!_0x5017f5[_0x70f5('0x31')]['hasOwnProperty'](_0x70f5('0x3a'))){_0x47f112[_0x70f5('0x21')]=qs[_0x70f5('0x21')](_0x5017f5[_0x70f5('0x31')]['limit']);_0x47f112[_0x70f5('0x23')]=qs[_0x70f5('0x23')](_0x5017f5[_0x70f5('0x31')][_0x70f5('0x23')]);}return _0x4c8c35['getMessages'](_0x47f112);}})[_0x70f5('0x28')](function(_0x363045){if(_0x363045){return _0x363045?{'count':_0x51825f,'rows':_0x363045}:null;}})[_0x70f5('0x28')](respondWithResult(_0x2402ee,null))[_0x70f5('0x4a')](handleError(_0x2402ee,null));};
\ No newline at end of file
index b49dda2..b67cb61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0075=['emit','hasOwnProperty','exports','events','../../mysqldb','ChatGroup','setMaxListeners','save','update'];(function(_0x3077c7,_0x486647){var _0xceb15a=function(_0x25de21){while(--_0x25de21){_0x3077c7['push'](_0x3077c7['shift']());}};_0xceb15a(++_0x486647);}(_0x0075,0x150));var _0x5007=function(_0x447a41,_0x5ec7e4){_0x447a41=_0x447a41-0x0;var _0x327c50=_0x0075[_0x447a41];return _0x327c50;};'use strict';var EventEmitter=require(_0x5007('0x0'));var ChatGroup=require(_0x5007('0x1'))['db'][_0x5007('0x2')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x5007('0x3')](0x0);var events={'afterCreate':_0x5007('0x4'),'afterUpdate':_0x5007('0x5'),'afterDestroy':'remove'};function emitEvent(_0x3d4e8a){return function(_0x32aefa,_0x4587c1,_0x90dd8b){ChatGroupEvents['emit'](_0x3d4e8a+':'+_0x32aefa['id'],_0x32aefa);ChatGroupEvents[_0x5007('0x6')](_0x3d4e8a,_0x32aefa);_0x90dd8b(null);};}for(var e in events){if(events[_0x5007('0x7')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module[_0x5007('0x8')]=ChatGroupEvents;
\ No newline at end of file
+var _0x1c77=['ChatGroup','setMaxListeners','save','update','emit','hasOwnProperty','../../mysqldb'];(function(_0x3bf147,_0x2403fc){var _0x5e445d=function(_0x4bbdf9){while(--_0x4bbdf9){_0x3bf147['push'](_0x3bf147['shift']());}};_0x5e445d(++_0x2403fc);}(_0x1c77,0xed));var _0x71c7=function(_0x476c7,_0x298ee0){_0x476c7=_0x476c7-0x0;var _0x47ae56=_0x1c77[_0x476c7];return _0x47ae56;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x71c7('0x0'))['db'][_0x71c7('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0x71c7('0x2')](0x0);var events={'afterCreate':_0x71c7('0x3'),'afterUpdate':_0x71c7('0x4'),'afterDestroy':'remove'};function emitEvent(_0x29ab58){return function(_0x37620a,_0x1f314c,_0x305ff7){ChatGroupEvents[_0x71c7('0x5')](_0x29ab58+':'+_0x37620a['id'],_0x37620a);ChatGroupEvents[_0x71c7('0x5')](_0x29ab58,_0x37620a);_0x305ff7(null);};}for(var e in events){if(events[_0x71c7('0x6')](e)){var event=events[e];ChatGroup['hook'](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
index 8f0f469..9e6d70f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf2b=['ChatGroup','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./chatGroup.attributes','define'];(function(_0xab5658,_0x97965f){var _0x4a45fc=function(_0xecf1bd){while(--_0xecf1bd){_0xab5658['push'](_0xab5658['shift']());}};_0x4a45fc(++_0x97965f);}(_0xdf2b,0xb1));var _0xbdf2=function(_0x273275,_0x12bcf9){_0x273275=_0x273275-0x0;var _0x3088bf=_0xdf2b[_0x273275];return _0x3088bf;};'use strict';var _=require(_0xbdf2('0x0'));var util=require(_0xbdf2('0x1'));var logger=require(_0xbdf2('0x2'))('api');var moment=require(_0xbdf2('0x3'));var BPromise=require(_0xbdf2('0x4'));var rp=require(_0xbdf2('0x5'));var fs=require('fs');var path=require(_0xbdf2('0x6'));var rimraf=require('rimraf');var config=require(_0xbdf2('0x7'));var attributes=require(_0xbdf2('0x8'));module['exports']=function(_0x1830e4,_0x5bd857){return _0x1830e4[_0xbdf2('0x9')](_0xbdf2('0xa'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x470f=['exports','define','ChatGroup','chat_groups','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x6ac806,_0x4804ff){var _0x473393=function(_0x59efe1){while(--_0x59efe1){_0x6ac806['push'](_0x6ac806['shift']());}};_0x473393(++_0x4804ff);}(_0x470f,0xad));var _0xf470=function(_0x4d9443,_0xe0d01f){_0x4d9443=_0x4d9443-0x0;var _0x350586=_0x470f[_0x4d9443];return _0x350586;};'use strict';var _=require(_0xf470('0x0'));var util=require(_0xf470('0x1'));var logger=require('../../config/logger')(_0xf470('0x2'));var moment=require(_0xf470('0x3'));var BPromise=require(_0xf470('0x4'));var rp=require(_0xf470('0x5'));var fs=require('fs');var path=require(_0xf470('0x6'));var rimraf=require(_0xf470('0x7'));var config=require(_0xf470('0x8'));var attributes=require('./chatGroup.attributes');module[_0xf470('0x9')]=function(_0x100660,_0x4d29e1){return _0x100660[_0xf470('0xa')](_0xf470('0xb'),attributes,{'tableName':_0xf470('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 137148d..e0ac47d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfbdb=['rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x22c4cf,_0x39b89d){var _0x1c5a3f=function(_0x47bc02){while(--_0x47bc02){_0x22c4cf['push'](_0x22c4cf['shift']());}};_0x1c5a3f(++_0x39b89d);}(_0xfbdb,0x1ba));var _0xbfbd=function(_0x1cf181,_0x2586af){_0x1cf181=_0x1cf181-0x0;var _0x304304=_0xfbdb[_0x1cf181];return _0x304304;};'use strict';var _=require(_0xbfbd('0x0'));var util=require('util');var moment=require(_0xbfbd('0x1'));var BPromise=require('bluebird');var rs=require(_0xbfbd('0x2'));var fs=require('fs');var Redis=require(_0xbfbd('0x3'));var db=require(_0xbfbd('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbfbd('0x5'))(_0xbfbd('0x6'));var config=require(_0xbfbd('0x7'));var jayson=require(_0xbfbd('0x8'));var client=jayson[_0xbfbd('0x9')][_0xbfbd('0xa')]({'port':0x232a});config[_0xbfbd('0xb')]=_[_0xbfbd('0xc')](config[_0xbfbd('0xb')],{'host':_0xbfbd('0xd'),'port':0x18eb});var socket=require(_0xbfbd('0xe'))(new Redis(config['redis']));require(_0xbfbd('0xf'))[_0xbfbd('0x10')](socket);function respondWithRpcPromise(_0x3c30b9,_0x59fcb0,_0x38baab){return new BPromise(function(_0x1d15fe,_0x30dca7){return client[_0xbfbd('0x11')](_0x3c30b9,_0x38baab)['then'](function(_0x5cd1ad){logger[_0xbfbd('0x12')](_0xbfbd('0x13'),_0x59fcb0,_0xbfbd('0x14'));logger[_0xbfbd('0x15')](_0xbfbd('0x16'),_0x59fcb0,_0xbfbd('0x14'),JSON['stringify'](_0x5cd1ad));if(_0x5cd1ad['error']){if(_0x5cd1ad['error'][_0xbfbd('0x17')]===0x1f4){logger['error'](_0xbfbd('0x13'),_0x59fcb0,_0x5cd1ad[_0xbfbd('0x18')]['message']);return _0x30dca7(_0x5cd1ad[_0xbfbd('0x18')][_0xbfbd('0x19')]);}logger[_0xbfbd('0x18')](_0xbfbd('0x13'),_0x59fcb0,_0x5cd1ad[_0xbfbd('0x18')]['message']);return _0x1d15fe(_0x5cd1ad[_0xbfbd('0x18')][_0xbfbd('0x19')]);}else{logger[_0xbfbd('0x12')](_0xbfbd('0x13'),_0x59fcb0,_0xbfbd('0x14'));_0x1d15fe(_0x5cd1ad[_0xbfbd('0x1a')][_0xbfbd('0x19')]);}})[_0xbfbd('0x1b')](function(_0x15aee7){logger[_0xbfbd('0x18')](_0xbfbd('0x13'),_0x59fcb0,_0x15aee7);_0x30dca7(_0x15aee7);});});}
\ No newline at end of file
+var _0x2b67=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./chatGroup.socket','register','request','then','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatGroup,\x20%s,\x20%s','message','result','catch'];(function(_0x24c559,_0x2b89c3){var _0x5f2cd4=function(_0x537f2c){while(--_0x537f2c){_0x24c559['push'](_0x24c559['shift']());}};_0x5f2cd4(++_0x2b89c3);}(_0x2b67,0xf3));var _0x72b6=function(_0x42def5,_0x1c334a){_0x42def5=_0x42def5-0x0;var _0x3cbb4e=_0x2b67[_0x42def5];return _0x3cbb4e;};'use strict';var _=require(_0x72b6('0x0'));var util=require(_0x72b6('0x1'));var moment=require(_0x72b6('0x2'));var BPromise=require(_0x72b6('0x3'));var rs=require(_0x72b6('0x4'));var fs=require('fs');var Redis=require(_0x72b6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x72b6('0x6'));var logger=require('../../config/logger')(_0x72b6('0x7'));var config=require(_0x72b6('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x72b6('0x9')]=_[_0x72b6('0xa')](config[_0x72b6('0x9')],{'host':_0x72b6('0xb'),'port':0x18eb});var socket=require(_0x72b6('0xc'))(new Redis(config['redis']));require(_0x72b6('0xd'))[_0x72b6('0xe')](socket);function respondWithRpcPromise(_0x4f476c,_0x539a79,_0x3e8d77){return new BPromise(function(_0x3ec108,_0x128e11){return client[_0x72b6('0xf')](_0x4f476c,_0x3e8d77)[_0x72b6('0x10')](function(_0x48be1b){logger['info']('ChatGroup,\x20%s,\x20%s',_0x539a79,_0x72b6('0x11'));logger[_0x72b6('0x12')](_0x72b6('0x13'),_0x539a79,_0x72b6('0x11'),JSON[_0x72b6('0x14')](_0x48be1b));if(_0x48be1b[_0x72b6('0x15')]){if(_0x48be1b[_0x72b6('0x15')][_0x72b6('0x16')]===0x1f4){logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x48be1b[_0x72b6('0x15')][_0x72b6('0x18')]);return _0x128e11(_0x48be1b[_0x72b6('0x15')][_0x72b6('0x18')]);}logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x48be1b['error'][_0x72b6('0x18')]);return _0x3ec108(_0x48be1b['error'][_0x72b6('0x18')]);}else{logger['info'](_0x72b6('0x17'),_0x539a79,_0x72b6('0x11'));_0x3ec108(_0x48be1b[_0x72b6('0x19')][_0x72b6('0x18')]);}})[_0x72b6('0x1a')](function(_0x3d0055){logger[_0x72b6('0x15')](_0x72b6('0x17'),_0x539a79,_0x3d0055);_0x128e11(_0x3d0055);});});}
\ No newline at end of file
index 64fb383..bd2cdd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe159=['removeListener','length','chatGroup:','./chatGroup.events','save','remove','update','emit'];(function(_0x2a10ad,_0x4f6fc6){var _0x4a2578=function(_0x3e3e2c){while(--_0x3e3e2c){_0x2a10ad['push'](_0x2a10ad['shift']());}};_0x4a2578(++_0x4f6fc6);}(_0xe159,0x18b));var _0x9e15=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xe159[_0x3ab51d];return _0x29a04e;};'use strict';var ChatGroupEvents=require(_0x9e15('0x0'));var events=[_0x9e15('0x1'),_0x9e15('0x2'),_0x9e15('0x3')];function createListener(_0x135081,_0x36d12c){return function(_0x27dab1){_0x36d12c[_0x9e15('0x4')](_0x135081,_0x27dab1);};}function removeListener(_0x38bedb,_0x2def29){return function(){ChatGroupEvents[_0x9e15('0x5')](_0x38bedb,_0x2def29);};}exports['register']=function(_0x49d82c){for(var _0x517049=0x0,_0x3a5149=events[_0x9e15('0x6')];_0x517049<_0x3a5149;_0x517049++){var _0x17f21e=events[_0x517049];var _0x30c14e=createListener(_0x9e15('0x7')+_0x17f21e,_0x49d82c);ChatGroupEvents['on'](_0x17f21e,_0x30c14e);}};
\ No newline at end of file
+var _0x7709=['chatGroup:','save','remove','update','emit','length'];(function(_0xd32b55,_0x1b2696){var _0x5b86fd=function(_0x3a667a){while(--_0x3a667a){_0xd32b55['push'](_0xd32b55['shift']());}};_0x5b86fd(++_0x1b2696);}(_0x7709,0x175));var _0x9770=function(_0xbc606e,_0x36836b){_0xbc606e=_0xbc606e-0x0;var _0x24bd3d=_0x7709[_0xbc606e];return _0x24bd3d;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=[_0x9770('0x0'),_0x9770('0x1'),_0x9770('0x2')];function createListener(_0x38cc2b,_0x5a9cea){return function(_0x19d313){_0x5a9cea[_0x9770('0x3')](_0x38cc2b,_0x19d313);};}function removeListener(_0x3ab4e6,_0x5f43e5){return function(){ChatGroupEvents['removeListener'](_0x3ab4e6,_0x5f43e5);};}exports['register']=function(_0x60075e){for(var _0x2e7d32=0x0,_0x41b0d4=events[_0x9770('0x4')];_0x2e7d32<_0x41b0d4;_0x2e7d32++){var _0x5ec4f8=events[_0x2e7d32];var _0x503ef9=createListener(_0x9770('0x5')+_0x5ec4f8,_0x60075e);ChatGroupEvents['on'](_0x5ec4f8,_0x503ef9);}};
\ No newline at end of file
index b405503..bb463c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7db2=['/describe','/:id','/:id/members','getMembers','/:id/messages','getMessages','post','create','addMembers','addMessage','put','update','delete','removeMembers','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0x7db2,0x15f));var _0x27db=function(_0x13dff6,_0x1f41ee){_0x13dff6=_0x13dff6-0x0;var _0x2729e7=_0x7db2[_0x13dff6];return _0x2729e7;};'use strict';var multer=require('multer');var util=require(_0x27db('0x0'));var path=require(_0x27db('0x1'));var timeout=require(_0x27db('0x2'));var express=require(_0x27db('0x3'));var router=express[_0x27db('0x4')]();var fs_extra=require(_0x27db('0x5'));var auth=require(_0x27db('0x6'));var interaction=require(_0x27db('0x7'));var config=require(_0x27db('0x8'));var controller=require(_0x27db('0x9'));router[_0x27db('0xa')]('/',auth[_0x27db('0xb')](),controller[_0x27db('0xc')]);router['get'](_0x27db('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x27db('0xa')](_0x27db('0xe'),auth[_0x27db('0xb')](),controller['show']);router[_0x27db('0xa')]('/:id/unread',auth[_0x27db('0xb')](),controller['getUnread']);router['get'](_0x27db('0xf'),auth[_0x27db('0xb')](),controller[_0x27db('0x10')]);router[_0x27db('0xa')](_0x27db('0x11'),auth[_0x27db('0xb')](),controller[_0x27db('0x12')]);router[_0x27db('0x13')]('/',auth[_0x27db('0xb')](),controller[_0x27db('0x14')]);router['post'](_0x27db('0xf'),auth['isAuthenticated'](),controller[_0x27db('0x15')]);router[_0x27db('0x13')]('/:id/messages',auth['isAuthenticated'](),controller[_0x27db('0x16')]);router[_0x27db('0x17')](_0x27db('0xe'),auth[_0x27db('0xb')](),controller[_0x27db('0x18')]);router[_0x27db('0x19')](_0x27db('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0x27db('0x19')](_0x27db('0xf'),auth['isAuthenticated'](),controller[_0x27db('0x1a')]);module[_0x27db('0x1b')]=router;
\ No newline at end of file
+var _0x7761=['get','/:id','show','/:id/unread','getMembers','getMessages','post','create','/:id/members','addMembers','/:id/messages','addMessage','put','delete','exports','multer','path','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','isAuthenticated','/describe','describe'];(function(_0x72e4fa,_0x58621c){var _0x30e945=function(_0x17905c){while(--_0x17905c){_0x72e4fa['push'](_0x72e4fa['shift']());}};_0x30e945(++_0x58621c);}(_0x7761,0x154));var _0x1776=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7761[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x1776('0x0'));var util=require('util');var path=require(_0x1776('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x1776('0x2'));var auth=require(_0x1776('0x3'));var interaction=require(_0x1776('0x4'));var config=require(_0x1776('0x5'));var controller=require(_0x1776('0x6'));router['get']('/',auth[_0x1776('0x7')](),controller['index']);router['get'](_0x1776('0x8'),auth['isAuthenticated'](),controller[_0x1776('0x9')]);router[_0x1776('0xa')](_0x1776('0xb'),auth[_0x1776('0x7')](),controller[_0x1776('0xc')]);router['get'](_0x1776('0xd'),auth[_0x1776('0x7')](),controller['getUnread']);router[_0x1776('0xa')]('/:id/members',auth[_0x1776('0x7')](),controller[_0x1776('0xe')]);router[_0x1776('0xa')]('/:id/messages',auth[_0x1776('0x7')](),controller[_0x1776('0xf')]);router[_0x1776('0x10')]('/',auth['isAuthenticated'](),controller[_0x1776('0x11')]);router[_0x1776('0x10')](_0x1776('0x12'),auth[_0x1776('0x7')](),controller[_0x1776('0x13')]);router[_0x1776('0x10')](_0x1776('0x14'),auth[_0x1776('0x7')](),controller[_0x1776('0x15')]);router[_0x1776('0x16')](_0x1776('0xb'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1776('0xb'),auth[_0x1776('0x7')](),controller['destroy']);router[_0x1776('0x17')]('/:id/members',auth[_0x1776('0x7')](),controller['removeMembers']);module[_0x1776('0x18')]=router;
\ No newline at end of file
index 641a738..dac7e7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x152f=['sequelize','exports','BOOLEAN','INTEGER','ENUM','thumb','star','TEXT','DATE','STRING','long','out'];(function(_0x5ee3d3,_0x537c30){var _0x4b272f=function(_0x3dc277){while(--_0x3dc277){_0x5ee3d3['push'](_0x5ee3d3['shift']());}};_0x4b272f(++_0x537c30);}(_0x152f,0x144));var _0xf152=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x152f[_0x4bb66f];return _0xf2772f;};'use strict';var Sequelize=require(_0xf152('0x0'));module[_0xf152('0x1')]={'closed':{'type':Sequelize[_0xf152('0x2')],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xf152('0x3')]},'ratingType':{'type':Sequelize[_0xf152('0x4')]('star',_0xf152('0x5')),'defaultValue':_0xf152('0x6')},'ratingMessage':{'type':Sequelize[_0xf152('0x7')]},'pathTranscript':{'type':Sequelize[_0xf152('0x7')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xf152('0x8')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf152('0x9')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xf152('0x9')]},'browserName':{'type':Sequelize['STRING']},'browserVersion':{'type':Sequelize['STRING']},'osName':{'type':Sequelize[_0xf152('0x9')]},'osVersion':{'type':Sequelize[_0xf152('0x9')]},'deviceModel':{'type':Sequelize['STRING']},'deviceVendor':{'type':Sequelize[_0xf152('0x9')]},'deviceType':{'type':Sequelize[_0xf152('0x9')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0xf152('0x9')]},'formData':{'type':Sequelize[_0xf152('0x7')](_0xf152('0xa'))},'read1stAt':{'type':Sequelize[_0xf152('0x8')]},'lastMsgAt':{'type':Sequelize[_0xf152('0x8')]},'lastMsgDirection':{'type':Sequelize[_0xf152('0x4')]('in',_0xf152('0xb')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xf152('0x9')]},'customerPort':{'type':Sequelize[_0xf152('0x9')]},'vidaooSessionId':{'type':Sequelize[_0xf152('0x7')]},'autoreplyExecuted':{'type':Sequelize[_0xf152('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc901=['out','BOOLEAN','sequelize','star','thumb','TEXT','STRING','DATE','long','ENUM'];(function(_0x25c398,_0x13284b){var _0x3311bc=function(_0x383d58){while(--_0x383d58){_0x25c398['push'](_0x25c398['shift']());}};_0x3311bc(++_0x13284b);}(_0xc901,0x142));var _0x1c90=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0xc901[_0x4a9fb1];return _0x348672;};'use strict';var Sequelize=require(_0x1c90('0x0'));module['exports']={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize['INTEGER']},'ratingType':{'type':Sequelize['ENUM'](_0x1c90('0x1'),_0x1c90('0x2')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0x1c90('0x3')]},'pathTranscript':{'type':Sequelize[_0x1c90('0x3')]},'mailTranscript':{'type':Sequelize[_0x1c90('0x4')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0x1c90('0x5')]},'disposition':{'type':Sequelize[_0x1c90('0x4')]},'secondDisposition':{'type':Sequelize[_0x1c90('0x4')]},'thirdDisposition':{'type':Sequelize[_0x1c90('0x4')]},'note':{'type':Sequelize[_0x1c90('0x4')]},'browserName':{'type':Sequelize[_0x1c90('0x4')]},'browserVersion':{'type':Sequelize[_0x1c90('0x4')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0x1c90('0x4')]},'deviceModel':{'type':Sequelize[_0x1c90('0x4')]},'deviceVendor':{'type':Sequelize[_0x1c90('0x4')]},'deviceType':{'type':Sequelize[_0x1c90('0x4')]},'referer':{'type':Sequelize[_0x1c90('0x3')]},'customerIp':{'type':Sequelize[_0x1c90('0x4')]},'formData':{'type':Sequelize[_0x1c90('0x3')](_0x1c90('0x6'))},'read1stAt':{'type':Sequelize['DATE']},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x1c90('0x7')]('in',_0x1c90('0x8')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0x1c90('0x4')]},'customerPort':{'type':Sequelize['STRING']},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize[_0x1c90('0x9')],'defaultValue':![]}};
\ No newline at end of file
index b9e2b04..ec47e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea51=['MailServerOut','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','getMessages','nolimit','order','sort','where','ChatInteractionId','filter','$gte','includeAll','findAll','rows','getMyMessages','hasOwnProperty','includeAgent','push','addTags','setTags','spread','Tag','emit','removeTags','download','unix','toString','server','files','attachments','transcript-%d-%s.zip','Contact','firstName','createdAt','read','ChatWebsite','Account','Owner','get','mkdirSync','Chat','N.A.','YYYY-MM-DD\x20HH:mm:ss','closedAt','browserName','osName','customerIp','customerPort','tail','basename','createReadStream','pipe','createWriteStream','lastName','out','value','views','downloadInteraction.ejs','.pdf','err','unlinkSync','rimraf','request-promise','moment','bluebird','mustache','util','path','ejs','lodash','ioredis','../../components/interaction/service','../../components/export/pdf','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','client','http','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','stack','name','send','render','merge','body','contact','agent','interaction','account','map','ChatInteraction','rawAttributes','type','key','getOptions','chat','query','user','params','model','keys','filters','intersection','attributes','fields','include','options','create','update','find','describe','createVidaooSession','findOne','ChatWebsiteId','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','vidaooMetadata','Error\x20in\x20conversion\x20vidaooMetadata','Sequelize','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','updateAttributes','customUpdate','abandon','entity\x20not\x20found','UserId','Interaction\x20already\x20assigned','closed','disposition','AbandonInteraction','attachmentUpload','file','originalname','filename','mimetype','attachmentDownload','Unauthorized','Attachment','join','root','server/files/attachments/','offline-chat/','close','mailTranscript','transcript-%s.txt','now','pathTranscript','ChatMessage','Messages','User','CmContact','ContactId','length','format','agentAlias','customer','%s%d','agentIdentifier','website_alias','System','alias','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount'];(function(_0x5d938d,_0x1a8445){var _0x1c2413=function(_0x8322f7){while(--_0x8322f7){_0x5d938d['push'](_0x5d938d['shift']());}};_0x1c2413(++_0x1a8445);}(_0xea51,0x115));var _0x1ea5=function(_0x1dae6b,_0x27d01a){_0x1dae6b=_0x1dae6b-0x0;var _0x23f925=_0xea51[_0x1dae6b];return _0x23f925;};'use strict';var rimraf=require(_0x1ea5('0x0'));var zipdir=require('zip-dir');var rp=require(_0x1ea5('0x1'));var moment=require(_0x1ea5('0x2'));var BPromise=require(_0x1ea5('0x3'));var Mustache=require(_0x1ea5('0x4'));var util=require(_0x1ea5('0x5'));var path=require(_0x1ea5('0x6'));var ejs=require(_0x1ea5('0x7'));var fs=require('fs');var _=require(_0x1ea5('0x8'));var Redis=require(_0x1ea5('0x9'));var interaction=require(_0x1ea5('0xa'));var qs=require('../../components/parsers/qs');var pdf=require(_0x1ea5('0xb'));var logger=require(_0x1ea5('0xc'))(_0x1ea5('0xd'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0x1ea5('0xe')]=_[_0x1ea5('0xf')](config[_0x1ea5('0xe')],{'host':_0x1ea5('0x10'),'port':0x18eb});var socket=require(_0x1ea5('0x11'))(new Redis(config['redis']));require(_0x1ea5('0x12'))[_0x1ea5('0x13')](socket);var jayson=require(_0x1ea5('0x14'));var client=jayson[_0x1ea5('0x15')][_0x1ea5('0x16')]({'port':0x232b});var client9004=jayson['client'][_0x1ea5('0x16')]({'port':0x232c});function respondWithRpcPromise(_0x1b38ef,_0x53b8e3,_0x24070b,_0x12d719){return new BPromise(function(_0x47a615,_0x5734c6){var _0x5a70b4=_0x12d719||client;return _0x5a70b4['request'](_0x1b38ef,_0x24070b)[_0x1ea5('0x17')](function(_0x575901){logger[_0x1ea5('0x18')](_0x1ea5('0x19'),_0x53b8e3,'request\x20sent');logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x53b8e3,_0x1ea5('0x1a'),JSON[_0x1ea5('0x1b')](_0x575901));if(_0x575901[_0x1ea5('0x1c')]){if(_0x575901[_0x1ea5('0x1c')]['code']===0x1f4){logger[_0x1ea5('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x53b8e3,_0x575901[_0x1ea5('0x1c')][_0x1ea5('0x1d')]);return _0x5734c6(_0x575901['error'][_0x1ea5('0x1d')]);}logger[_0x1ea5('0x1c')](_0x1ea5('0x19'),_0x53b8e3,_0x575901['error'][_0x1ea5('0x1d')]);return _0x47a615(_0x575901[_0x1ea5('0x1c')][_0x1ea5('0x1d')]);}else{logger[_0x1ea5('0x18')](_0x1ea5('0x19'),_0x53b8e3,'request\x20sent');_0x47a615(_0x575901[_0x1ea5('0x1e')]['message']);}})[_0x1ea5('0x1f')](function(_0x2a83e3){logger[_0x1ea5('0x1c')](_0x1ea5('0x19'),_0x53b8e3,_0x2a83e3);_0x5734c6(_0x2a83e3);});});}function respondWithStatusCode(_0x6ed6d,_0x5dccf9){_0x5dccf9=_0x5dccf9||0xcc;return function(_0x53f961){if(_0x53f961){return _0x6ed6d[_0x1ea5('0x20')](_0x5dccf9);}return _0x6ed6d[_0x1ea5('0x21')](_0x5dccf9)[_0x1ea5('0x22')]();};}function respondWithResult(_0xe5319d,_0xfe263e){_0xfe263e=_0xfe263e||0xc8;return function(_0x5860b7){if(_0x5860b7){return _0xe5319d[_0x1ea5('0x21')](_0xfe263e)[_0x1ea5('0x23')](_0x5860b7);}};}function respondWithFilteredResult(_0xb0331c,_0x47012b){return function(_0x426aa8){if(_0x426aa8){var _0x7ee075=typeof _0x47012b[_0x1ea5('0x24')]===_0x1ea5('0x25')&&typeof _0x47012b[_0x1ea5('0x26')]===_0x1ea5('0x25');var _0x2eb78e=_0x426aa8['count'];var _0x7c6c5a=_0x7ee075?0x0:_0x47012b['offset'];var _0x3c2aa8=_0x7ee075?_0x426aa8[_0x1ea5('0x27')]:_0x47012b[_0x1ea5('0x24')]+_0x47012b[_0x1ea5('0x26')];var _0x188a0e;if(_0x3c2aa8>=_0x2eb78e){_0x3c2aa8=_0x2eb78e;_0x188a0e=0xc8;}else{_0x188a0e=0xce;}_0xb0331c[_0x1ea5('0x21')](_0x188a0e);return _0xb0331c['set'](_0x1ea5('0x28'),_0x7c6c5a+'-'+_0x3c2aa8+'/'+_0x2eb78e)[_0x1ea5('0x23')](_0x426aa8);}return null;};}function saveUpdates(_0xa61e88){return function(_0x84a5a2){if(_0x84a5a2){return _0x84a5a2['update'](_0xa61e88)['then'](function(_0x2e6973){return _0x2e6973;});}return null;};}function removeEntity(_0x2b78bf){return function(_0x1dbb8b){if(_0x1dbb8b){return _0x1dbb8b['destroy']()[_0x1ea5('0x17')](function(){_0x2b78bf['status'](0xcc)[_0x1ea5('0x22')]();});}};}function handleEntityNotFound(_0x4e014c){return function(_0x30fe53){if(!_0x30fe53){_0x4e014c[_0x1ea5('0x20')](0x194);}return _0x30fe53;};}function handleError(_0x5eb51f,_0x5bab3c){_0x5bab3c=_0x5bab3c||0x1f4;return function(_0x214b5e){logger[_0x1ea5('0x1c')](_0x214b5e[_0x1ea5('0x29')]);if(_0x214b5e['name']){delete _0x214b5e[_0x1ea5('0x2a')];}_0x5eb51f[_0x1ea5('0x21')](_0x5bab3c)[_0x1ea5('0x2b')](_0x214b5e);};}function getMustacheRender(_0x5256d7,_0x3070c7){return Mustache[_0x1ea5('0x2c')](_0x5256d7,_[_0x1ea5('0x2d')](_0x3070c7[_0x1ea5('0x2e')],{'contact':_0x3070c7[_0x1ea5('0x2f')],'message':_0x3070c7[_0x1ea5('0x1d')],'agent':_0x3070c7[_0x1ea5('0x30')],'interaction':_0x3070c7[_0x1ea5('0x31')],'account':_0x3070c7[_0x1ea5('0x32')]}))||'';}exports['index']=function(_0x5dcd0d,_0x19d299){var _0x311fab={};var _0x42da52=_[_0x1ea5('0x33')](db[_0x1ea5('0x34')][_0x1ea5('0x35')],function(_0x445b5d){return{'name':_0x445b5d['fieldName'],'type':_0x445b5d[_0x1ea5('0x36')][_0x1ea5('0x37')]};});_0x311fab=qs[_0x1ea5('0x38')](_0x42da52,_0x5dcd0d);return interaction['findAll'](_0x1ea5('0x39'),_0x5dcd0d[_0x1ea5('0x3a')],_0x5dcd0d[_0x1ea5('0x3b')],_0x311fab,_0x42da52)['then'](respondWithFilteredResult(_0x19d299,_0x311fab))['catch'](handleError(_0x19d299,null));};exports['show']=function(_0xe2e490,_0x3c9e5f){var _0x33479c={'raw':![],'where':{'id':_0xe2e490[_0x1ea5('0x3c')]['id']}},_0x160e8b={};_0x160e8b[_0x1ea5('0x3d')]=_[_0x1ea5('0x3e')](db[_0x1ea5('0x34')][_0x1ea5('0x35')]);_0x160e8b[_0x1ea5('0x3a')]=_[_0x1ea5('0x3e')](_0xe2e490[_0x1ea5('0x3a')]);_0x160e8b[_0x1ea5('0x3f')]=_[_0x1ea5('0x40')](_0x160e8b[_0x1ea5('0x3d')],_0x160e8b[_0x1ea5('0x3a')]);_0x33479c[_0x1ea5('0x41')]=_[_0x1ea5('0x40')](_0x160e8b['model'],qs[_0x1ea5('0x42')](_0xe2e490[_0x1ea5('0x3a')][_0x1ea5('0x42')]));_0x33479c[_0x1ea5('0x41')]=_0x33479c[_0x1ea5('0x41')]['length']?_0x33479c[_0x1ea5('0x41')]:_0x160e8b[_0x1ea5('0x3d')];if(_0xe2e490['query']['includeAll']){_0x33479c[_0x1ea5('0x43')]=[{'all':!![]}];}_0x33479c=_[_0x1ea5('0x2d')]({},_0x33479c,_0xe2e490[_0x1ea5('0x44')]);return db[_0x1ea5('0x34')]['find'](_0x33479c)['then'](handleEntityNotFound(_0x3c9e5f,null))['then'](respondWithResult(_0x3c9e5f,null))['catch'](handleError(_0x3c9e5f,null));};exports[_0x1ea5('0x45')]=function(_0x2cc173,_0x1065ea){return db[_0x1ea5('0x34')][_0x1ea5('0x45')](_0x2cc173[_0x1ea5('0x2e')],{})[_0x1ea5('0x17')](respondWithResult(_0x1065ea,0xc9))[_0x1ea5('0x1f')](handleError(_0x1065ea,null));};exports[_0x1ea5('0x46')]=function(_0x3d4ef0,_0x47ce96){if(_0x3d4ef0[_0x1ea5('0x2e')]['id']){delete _0x3d4ef0['body']['id'];}return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x3d4ef0[_0x1ea5('0x3c')]['id']}})['then'](handleEntityNotFound(_0x47ce96,null))[_0x1ea5('0x17')](saveUpdates(_0x3d4ef0[_0x1ea5('0x2e')],null))[_0x1ea5('0x17')](respondWithResult(_0x47ce96,null))[_0x1ea5('0x1f')](handleError(_0x47ce96,null));};exports['destroy']=function(_0x247244,_0x48e93a){return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x247244[_0x1ea5('0x3c')]['id']}})['then'](handleEntityNotFound(_0x48e93a,null))[_0x1ea5('0x17')](removeEntity(_0x48e93a,null))[_0x1ea5('0x1f')](handleError(_0x48e93a,null));};exports['describe']=function(_0x49705a,_0x136e7b){return db[_0x1ea5('0x34')][_0x1ea5('0x48')]()['then'](respondWithResult(_0x136e7b,null))[_0x1ea5('0x1f')](handleError(_0x136e7b,null));};exports[_0x1ea5('0x49')]=function(_0x259287,_0x329cbd){var _0xe2889a=_0x259287['params']['id'];var _0x52ddad;var _0x3c5d5a;var _0x362d54;return db[_0x1ea5('0x34')]['findOne']({'where':{'id':_0xe2889a}})[_0x1ea5('0x17')](function(_0x1beea1){_0x52ddad=_0x1beea1;return db['ChatWebsite'][_0x1ea5('0x4a')]({'where':{'id':_0x1beea1[_0x1ea5('0x4b')]},'attributes':['id',_0x1ea5('0x4c'),_0x1ea5('0x4d'),_0x1ea5('0x4e'),_0x1ea5('0x4f'),'vidaooMetadata'],'raw':!![]});})[_0x1ea5('0x17')](function(_0x284feb){if(_0x284feb&&_0x284feb[_0x1ea5('0x4c')]&&_0x284feb['vidaooEscalation']){_0x3c5d5a=_0x284feb;var _0x5290f4={'interaction':{'id':_0xe2889a},'agent':{'id':_0x259287[_0x1ea5('0x3b')]['id'],'name':_0x259287[_0x1ea5('0x3b')]['name'],'fullname':_0x259287['user'][_0x1ea5('0x50')],'email':_0x259287[_0x1ea5('0x3b')][_0x1ea5('0x51')]},'contact':_0x259287[_0x1ea5('0x2e')][_0x1ea5('0x2f')],'account':_0x259287[_0x1ea5('0x2e')][_0x1ea5('0x32')]};var _0x515006={'rejectUnauthorized':![],'method':_0x1ea5('0x52'),'url':_0x1ea5('0x53'),'headers':{'X-APIKEY':_0x284feb[_0x1ea5('0x4c')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x259287[_0x1ea5('0x3b')]['email']],'buttons':null,'topic':_0x3c5d5a[_0x1ea5('0x4e')],'note':_[_0x1ea5('0x54')](_0x3c5d5a['vidaooNote'])?null:getMustacheRender(_0x3c5d5a[_0x1ea5('0x4f')],_0x5290f4),'metadata':null},'redirect':'follow','json':!![]};try{if(!_['isNull'](_0x3c5d5a[_0x1ea5('0x55')])){var _0x366201=getMustacheRender(_0x3c5d5a['vidaooMetadata'],_0x5290f4);var _0x2571a2=JSON['parse'](_0x366201);_0x515006['body']['metadata']=_0x2571a2;}}catch(_0x3df2b0){throw new db['Sequelize']['ValidationError'](_0x1ea5('0x56'));}return rp(_0x515006);}else{throw new db[(_0x1ea5('0x57'))][(_0x1ea5('0x58'))](_0x1ea5('0x59'));}})[_0x1ea5('0x17')](function(_0x28ee44){_0x362d54=_0x28ee44;if(_0x362d54['id']){var _0x14f7b={'body':_0x362d54[_0x1ea5('0x5a')],'ChatWebsiteId':_0x3c5d5a['id'],'ChatInteractionId':_0x52ddad['id'],'direction':'out','UserId':_0x259287['user']['id']};return db['ChatMessage'][_0x1ea5('0x45')](_0x14f7b,{});}else{throw new db[(_0x1ea5('0x57'))][(_0x1ea5('0x58'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})['then'](function(){return _0x52ddad[_0x1ea5('0x5b')]({'vidaooSessionId':_0x362d54['id']});})[_0x1ea5('0x17')](respondWithResult(_0x329cbd,null))[_0x1ea5('0x1f')](handleError(_0x329cbd,null));};exports[_0x1ea5('0x5c')]=function(_0x18d551,_0x16f7df){if(_0x18d551['body']['id']){delete _0x18d551[_0x1ea5('0x2e')]['id'];}return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x18d551[_0x1ea5('0x3c')]['id']},'include':[{'model':db['CmContact'],'as':'Contact'}]})[_0x1ea5('0x17')](handleEntityNotFound(_0x16f7df,null))[_0x1ea5('0x17')](saveUpdates(_0x18d551['body'],null))['then'](respondWithResult(_0x16f7df,null))[_0x1ea5('0x1f')](handleError(_0x16f7df,null));};exports['abandon']=function(_0x3fb499,_0x58275){if(_0x3fb499['body']['id']){delete _0x3fb499[_0x1ea5('0x2e')]['id'];}return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x3fb499['params']['id']}})['then'](function(_0x151afc){if(!_0x151afc){logger[_0x1ea5('0x1c')]('abandonInteraction,\x20%s,\x20%s,\x20%s',_0x1ea5('0x5d'),0x194,_0x1ea5('0x5e'));_0x58275[_0x1ea5('0x20')](0x194);}else{if(_0x151afc[_0x1ea5('0x5f')]){throw new db[(_0x1ea5('0x57'))][(_0x1ea5('0x58'))](_0x1ea5('0x60'));}}return _0x151afc;})[_0x1ea5('0x17')](function(_0x5dfaa7){if(_0x5dfaa7){return _0x5dfaa7['update']({'closed':_0x3fb499[_0x1ea5('0x2e')][_0x1ea5('0x61')],'disposition':_0x3fb499['body'][_0x1ea5('0x62')]})[_0x1ea5('0x17')](function(_0x4718e9){return _0x4718e9;});}})[_0x1ea5('0x17')](function(){return respondWithRpcPromise(_0x1ea5('0x63'),_0x1ea5('0x5d'),_0x3fb499[_0x1ea5('0x2e')],client9004);})[_0x1ea5('0x17')](respondWithResult(_0x58275,null))[_0x1ea5('0x1f')](handleError(_0x58275,null));};exports[_0x1ea5('0x64')]=function(_0x5dc668,_0x2c5364){_0x5dc668['body'][_0x1ea5('0x2a')]=_0x5dc668[_0x1ea5('0x65')][_0x1ea5('0x66')];_0x5dc668['body']['basename']=_0x5dc668[_0x1ea5('0x65')][_0x1ea5('0x67')];_0x5dc668[_0x1ea5('0x2e')][_0x1ea5('0x36')]=_0x5dc668['file'][_0x1ea5('0x68')];return db['Attachment']['create'](_0x5dc668[_0x1ea5('0x2e')])['then'](respondWithResult(_0x2c5364,0xc9))[_0x1ea5('0x1f')](handleError(_0x2c5364,null));};exports[_0x1ea5('0x69')]=function(_0x50828d,_0x14c4e9){return db[_0x1ea5('0x34')][_0x1ea5('0x4a')]({'where':{'id':_0x50828d['params']['id']},'raw':!![]})['then'](handleEntityNotFound(_0x14c4e9,null))[_0x1ea5('0x17')](function(_0x371905){if(_0x371905){if(_0x371905[_0x1ea5('0x61')]){return _0x14c4e9['status'](0x193)[_0x1ea5('0x23')]({'status':0x193,'message':_0x1ea5('0x6a')});}return db[_0x1ea5('0x6b')]['findOne']({'where':{'id':_0x50828d[_0x1ea5('0x3a')]['attachId']},'raw':!![]})[_0x1ea5('0x17')](handleEntityNotFound(_0x14c4e9,null));}})['then'](function(_0x5c029c){if(_0x5c029c){var _0x2ed3b5=_0x5c029c['ChatOfflineMessageId']!==null;var _0x460257=path[_0x1ea5('0x6c')](config[_0x1ea5('0x6d')],_0x1ea5('0x6e'));if(_0x2ed3b5){_0x460257=path[_0x1ea5('0x6c')](_0x460257,_0x1ea5('0x6f'));}var _0x5afe22=path[_0x1ea5('0x6c')](_0x460257,_0x5c029c['basename']);return _0x14c4e9['download'](_0x5afe22);}})[_0x1ea5('0x1f')](handleError(_0x14c4e9,null));};exports[_0x1ea5('0x70')]=function(_0x51481c,_0x4d5837){var _0x2966e6=null;var _0x642721=null;var _0x45f011=null;if(_0x51481c[_0x1ea5('0x2e')]['id']){delete _0x51481c[_0x1ea5('0x2e')]['id'];}if(_0x51481c[_0x1ea5('0x2e')][_0x1ea5('0x71')]){_0x45f011=path[_0x1ea5('0x6c')](config['root'],'server/files/chat/upload/',util['format'](_0x1ea5('0x72'),Date[_0x1ea5('0x73')]()));_0x51481c['body'][_0x1ea5('0x74')]=_0x45f011;}return db['ChatInteraction']['find']({'where':{'id':_0x51481c['params']['id']},'include':[{'model':db[_0x1ea5('0x75')],'as':_0x1ea5('0x76'),'include':[{'model':db[_0x1ea5('0x77')],'as':'User'}]}]})['then'](handleEntityNotFound(_0x4d5837,null))[_0x1ea5('0x17')](saveUpdates(_0x51481c['body'],null))[_0x1ea5('0x17')](function(_0x2be9ed){if(_0x2be9ed){_0x2966e6=_0x2be9ed;return db['ChatWebsite'][_0x1ea5('0x47')]({'where':{'id':_0x2966e6[_0x1ea5('0x4b')]}});}})['then'](function(_0x51c300){if(_0x51c300){_0x642721=_0x51c300;return db[_0x1ea5('0x78')][_0x1ea5('0x47')]({'where':{'id':_0x2966e6[_0x1ea5('0x79')]}});}})[_0x1ea5('0x17')](function(_0x4a8e96){if(_0x4a8e96){if(_0x45f011){var _0x27861a=null;for(var _0x1b60b8=0x1;_0x1b60b8<_0x2966e6['Messages'][_0x1ea5('0x7a')];++_0x1b60b8){_0x27861a=_0x2966e6[_0x1ea5('0x76')][_0x1b60b8];var _0x22fa5a=_0x27861a['UserId']?util[_0x1ea5('0x7b')]('%s%d',_0x642721[_0x1ea5('0x7c')],_0x27861a['UserId']):'System';var _0x2de9eb=_0x51481c[_0x1ea5('0x2e')][_0x1ea5('0x7d')]||util[_0x1ea5('0x7b')](_0x1ea5('0x7e'),'Visitor',_0x27861a[_0x1ea5('0x79')]);switch(_0x642721[_0x1ea5('0x7f')]){case _0x1ea5('0x80'):_0x22fa5a=_0x27861a[_0x1ea5('0x5f')]?util['format'](_0x1ea5('0x7e'),_0x642721[_0x1ea5('0x7c')],_0x27861a[_0x1ea5('0x5f')]):_0x1ea5('0x81');break;case'agent_alias':_0x22fa5a=_0x27861a['UserId']?_0x27861a['User'][_0x1ea5('0x82')]||_0x27861a['User'][_0x1ea5('0x50')]:_0x1ea5('0x81');break;case'agent_fullname':_0x22fa5a=_0x27861a[_0x1ea5('0x5f')]?_0x27861a[_0x1ea5('0x77')][_0x1ea5('0x50')]:_0x1ea5('0x81');break;default:_0x22fa5a=_0x27861a[_0x1ea5('0x5f')]?util[_0x1ea5('0x7b')]('%s%d',_0x642721[_0x1ea5('0x7c')],_0x27861a[_0x1ea5('0x5f')]):'System';}var _0x24e60f=util[_0x1ea5('0x7b')](_0x1ea5('0x83'),moment(_0x27861a['createdAt'])['format'](_0x1ea5('0x84')),_0x27861a[_0x1ea5('0x85')]==='in'?_0x2de9eb:_0x22fa5a,_0x27861a[_0x1ea5('0x2e')]);if(!_0x27861a[_0x1ea5('0x86')]){fs[_0x1ea5('0x87')](_0x45f011,_0x24e60f);}}return db[_0x1ea5('0x88')][_0x1ea5('0x4a')]({'where':{'service':!![]},'include':[{'model':db[_0x1ea5('0x89')],'as':_0x1ea5('0x8a'),'raw':!![],'include':[{'model':db[_0x1ea5('0x8b')],'as':_0x1ea5('0x8b'),'raw':!![]}]}]});}}})[_0x1ea5('0x17')](function(_0x273354){if(!_0x273354||!_0x273354[_0x1ea5('0x8a')]||!_0x51481c[_0x1ea5('0x2e')])return _0x2966e6;var _0x2781ce=_0x273354[_0x1ea5('0x8c')]();return respondWithRpcPromise(_0x1ea5('0x8d'),_0x1ea5('0x8e'),{'account':_0x2781ce,'message':{'from':util[_0x1ea5('0x7b')](_0x1ea5('0x8f'),_0x273354['name'],_0x273354[_0x1ea5('0x51')]||_0x273354[_0x1ea5('0x8a')][_0x1ea5('0x3b')]),'to':_0x51481c[_0x1ea5('0x2e')][_0x1ea5('0x71')],'subject':_0x1ea5('0x90'),'text':util['format'](_0x1ea5('0x91'),_0x51481c[_0x1ea5('0x2e')][_0x1ea5('0x71')]),'attachments':[{'path':_0x45f011}]}})[_0x1ea5('0x17')](function(){return _0x2966e6;})[_0x1ea5('0x1f')](function(_0x5e54e7){logger['error'](_0x5e54e7);});})[_0x1ea5('0x17')](respondWithStatusCode(_0x4d5837,0xc8))[_0x1ea5('0x1f')](handleError(_0x4d5837,null));};exports[_0x1ea5('0x92')]=function(_0x58a1b6,_0x3a80db){return db[_0x1ea5('0x75')][_0x1ea5('0x47')]({'where':{'id':_0x58a1b6[_0x1ea5('0x3c')]['id']}})[_0x1ea5('0x17')](handleEntityNotFound(_0x3a80db,null))[_0x1ea5('0x17')](function(_0x2294a5){if(_0x2294a5){return _0x2294a5[_0x1ea5('0x92')](_0x58a1b6[_0x1ea5('0x2e')][_0x1ea5('0x93')],_[_0x1ea5('0x94')](_0x58a1b6[_0x1ea5('0x2e')],['ids','id'])||{});}})[_0x1ea5('0x17')](respondWithResult(_0x3a80db,null))[_0x1ea5('0x1f')](handleError(_0x3a80db,null));};exports[_0x1ea5('0x95')]=function(_0x688fcd,_0x564d71){var _0x23e50b={'raw':![],'where':{}};var _0x4d0b87={};var _0x54fd8f={'count':0x0,'rows':[]};return db[_0x1ea5('0x34')][_0x1ea5('0x4a')]({'where':{'id':_0x688fcd[_0x1ea5('0x3c')]['id']}})[_0x1ea5('0x17')](handleEntityNotFound(_0x564d71,null))[_0x1ea5('0x17')](function(_0x3cb262){if(_0x3cb262){_0x4d0b87[_0x1ea5('0x3d')]=_[_0x1ea5('0x3e')](db['ChatMessage']['rawAttributes']);_0x4d0b87[_0x1ea5('0x3a')]=_['keys'](_0x688fcd[_0x1ea5('0x3a')]);_0x4d0b87[_0x1ea5('0x3f')]=_[_0x1ea5('0x40')](_0x4d0b87[_0x1ea5('0x3d')],_0x4d0b87[_0x1ea5('0x3a')]);_0x23e50b[_0x1ea5('0x41')]=_[_0x1ea5('0x40')](_0x4d0b87[_0x1ea5('0x3d')],qs[_0x1ea5('0x42')](_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x42')]));_0x23e50b[_0x1ea5('0x41')]=_0x23e50b[_0x1ea5('0x41')][_0x1ea5('0x7a')]?_0x23e50b[_0x1ea5('0x41')]:_0x4d0b87[_0x1ea5('0x3d')];if(!_0x688fcd['query']['hasOwnProperty'](_0x1ea5('0x96'))){_0x23e50b[_0x1ea5('0x26')]=qs[_0x1ea5('0x26')](_0x688fcd[_0x1ea5('0x3a')]['limit']);_0x23e50b[_0x1ea5('0x24')]=qs['offset'](_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x24')]);}_0x23e50b[_0x1ea5('0x97')]=qs[_0x1ea5('0x98')](_0x688fcd['query']['sort']);_0x23e50b[_0x1ea5('0x99')]=qs[_0x1ea5('0x3f')](_['pick'](_0x688fcd[_0x1ea5('0x3a')],_0x4d0b87[_0x1ea5('0x3f')]));_0x23e50b[_0x1ea5('0x99')][_0x1ea5('0x9a')]=_0x3cb262['id'];if(_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x9b')]){_0x23e50b[_0x1ea5('0x99')]=_[_0x1ea5('0x2d')](_0x23e50b[_0x1ea5('0x99')],{'$or':_['map'](_0x23e50b['attributes'],function(_0x3106b2){var _0x404c0f={};_0x404c0f[_0x3106b2]={'$like':'%'+_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x9b')]+'%'};return _0x404c0f;})});}if(_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x9c')]){var _0x1b3d9f=_0x688fcd[_0x1ea5('0x3a')]['$gte']['split'](',');var _0x5c82a9={};_0x5c82a9[_0x1b3d9f[0x0]]={'$gte':moment(_0x1b3d9f[0x1])[_0x1ea5('0x7b')]('YYYY-MM-DD\x20HH:mm:ss')};_0x23e50b[_0x1ea5('0x99')]=_[_0x1ea5('0x2d')](_0x23e50b[_0x1ea5('0x99')],_0x5c82a9);}_0x23e50b=_['merge']({},_0x23e50b,_0x688fcd[_0x1ea5('0x44')]);return db[_0x1ea5('0x75')][_0x1ea5('0x27')]({'where':_0x23e50b[_0x1ea5('0x99')]})[_0x1ea5('0x17')](function(_0x21a90c){_0x54fd8f[_0x1ea5('0x27')]=_0x21a90c;if(_0x688fcd[_0x1ea5('0x3a')][_0x1ea5('0x9d')]){_0x23e50b['include']=[{'all':!![]}];}return db['ChatMessage'][_0x1ea5('0x9e')](_0x23e50b);})[_0x1ea5('0x17')](function(_0x28dd3f){_0x54fd8f[_0x1ea5('0x9f')]=_0x28dd3f;return _0x54fd8f;});}})[_0x1ea5('0x17')](respondWithFilteredResult(_0x564d71,_0x23e50b))[_0x1ea5('0x1f')](handleError(_0x564d71,null));};exports[_0x1ea5('0xa0')]=function(_0x532e7a,_0xdd9a19){var _0x8e6259={'where':{}},_0x16252b={},_0x4b03b3={'count':0x0,'rows':[]};return db[_0x1ea5('0x34')]['findOne']({'where':{'id':_0x532e7a['params']['id']}})[_0x1ea5('0x17')](handleEntityNotFound(_0xdd9a19,null))[_0x1ea5('0x17')](function(_0x5a0f4f){if(_0x5a0f4f){_0x16252b[_0x1ea5('0x3d')]=_[_0x1ea5('0x3e')](db[_0x1ea5('0x75')][_0x1ea5('0x35')]);_0x16252b[_0x1ea5('0x3a')]=_['keys'](_0x532e7a[_0x1ea5('0x3a')]);_0x16252b['filters']=_[_0x1ea5('0x40')](_0x16252b['model'],_0x16252b[_0x1ea5('0x3a')]);_0x8e6259[_0x1ea5('0x41')]=_[_0x1ea5('0x40')](_0x16252b[_0x1ea5('0x3d')],qs[_0x1ea5('0x42')](_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x42')]));_0x8e6259[_0x1ea5('0x41')]=_0x8e6259[_0x1ea5('0x41')]['length']?_0x8e6259[_0x1ea5('0x41')]:_0x16252b[_0x1ea5('0x3d')];if(!_0x532e7a['query'][_0x1ea5('0xa1')](_0x1ea5('0x96'))){_0x8e6259[_0x1ea5('0x26')]=qs['limit'](_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x26')]);_0x8e6259[_0x1ea5('0x24')]=qs[_0x1ea5('0x24')](_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x24')]);}_0x8e6259[_0x1ea5('0x97')]=qs[_0x1ea5('0x98')](_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x98')]);_0x8e6259[_0x1ea5('0x99')]=qs[_0x1ea5('0x3f')](_['pick'](_0x532e7a['query'],_0x16252b[_0x1ea5('0x3f')]));_0x8e6259[_0x1ea5('0x99')][_0x1ea5('0x9a')]=_0x5a0f4f['id'];if(_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x9b')]){_0x8e6259[_0x1ea5('0x99')]=_[_0x1ea5('0x2d')](_0x8e6259['where'],{'$or':_[_0x1ea5('0x33')](_0x8e6259[_0x1ea5('0x41')],function(_0x2efbea){var _0x79f45e={};_0x79f45e[_0x2efbea]={'$like':'%'+_0x532e7a['query'][_0x1ea5('0x9b')]+'%'};return _0x79f45e;})});}_0x8e6259[_0x1ea5('0x99')]['secret']=![];if(_0x532e7a[_0x1ea5('0x3a')]['id']){_0x8e6259[_0x1ea5('0x99')]['id']={'$gt':_0x532e7a['query']['id']};}_0x8e6259=_[_0x1ea5('0x2d')]({},_0x8e6259,_0x532e7a[_0x1ea5('0x44')]);return db[_0x1ea5('0x75')][_0x1ea5('0x27')]({'where':_0x8e6259['where']})[_0x1ea5('0x17')](function(_0xcfaa0d){_0x4b03b3[_0x1ea5('0x27')]=_0xcfaa0d;_0x8e6259[_0x1ea5('0x43')]=[];if(_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0xa2')]){_0x8e6259['include'][_0x1ea5('0xa3')]({'model':db[_0x1ea5('0x77')],'as':_0x1ea5('0x77'),'attributes':['id',_0x1ea5('0x50'),'alias']});}if(_0x532e7a[_0x1ea5('0x3a')][_0x1ea5('0x9d')]){_0x8e6259[_0x1ea5('0x43')]=[{'all':!![]}];}return db[_0x1ea5('0x75')][_0x1ea5('0x9e')](_0x8e6259);})[_0x1ea5('0x17')](function(_0x165cfb){_0x4b03b3[_0x1ea5('0x9f')]=_0x165cfb;return _0x4b03b3;});}})[_0x1ea5('0x17')](respondWithFilteredResult(_0xdd9a19,_0x8e6259))[_0x1ea5('0x1f')](handleError(_0xdd9a19,null));};exports[_0x1ea5('0xa4')]=function(_0x411a5c,_0x55dab){return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x411a5c['params']['id']}})[_0x1ea5('0x17')](handleEntityNotFound(_0x55dab,null))[_0x1ea5('0x17')](function(_0x5836eb){if(_0x5836eb){return _0x5836eb[_0x1ea5('0xa5')](_0x411a5c[_0x1ea5('0x2e')][_0x1ea5('0x93')],_[_0x1ea5('0x94')](_0x411a5c['body'],[_0x1ea5('0x93'),'id'])||{})[_0x1ea5('0xa6')](function(){return db[_0x1ea5('0xa7')]['findAll']({'attributes':['id',_0x1ea5('0x2a'),'color'],'where':{'id':_0x411a5c[_0x1ea5('0x2e')][_0x1ea5('0x93')]}});})[_0x1ea5('0x17')](function(_0xabc4df){socket[_0x1ea5('0xa8')]('chatInteractionTags:save',{'id':Number(_0x411a5c[_0x1ea5('0x3c')]['id']),'tags':_0xabc4df||[]});return{'id':Number(_0x411a5c[_0x1ea5('0x3c')]['id']),'tags':_0xabc4df||[]};});}})[_0x1ea5('0x17')](respondWithResult(_0x55dab,null))[_0x1ea5('0x1f')](handleError(_0x55dab,null));};exports[_0x1ea5('0xa9')]=function(_0x16c64f,_0x331a06){return db[_0x1ea5('0x34')][_0x1ea5('0x47')]({'where':{'id':_0x16c64f[_0x1ea5('0x3c')]['id']}})['then'](handleEntityNotFound(_0x331a06,null))[_0x1ea5('0x17')](function(_0x560ec7){if(_0x560ec7){return _0x560ec7[_0x1ea5('0xa9')](_0x16c64f[_0x1ea5('0x3a')]['ids']);}})['then'](respondWithStatusCode(_0x331a06,null))[_0x1ea5('0x1f')](handleError(_0x331a06,null));};exports[_0x1ea5('0xaa')]=function(_0x549bf1,_0x564bba){var _0x138310=moment()[_0x1ea5('0xab')]()[_0x1ea5('0xac')]();var _0x97b769=path['join'](config[_0x1ea5('0x6d')],_0x1ea5('0xad'),_0x1ea5('0xae'),'tmp');var _0x2fe6fe=path[_0x1ea5('0x6c')](config[_0x1ea5('0x6d')],_0x1ea5('0xad'),_0x1ea5('0xae'),_0x1ea5('0xaf'));var _0x52e5ee=path[_0x1ea5('0x6c')](_0x97b769,_0x138310);var _0x4a44f6=util[_0x1ea5('0x7b')](_0x1ea5('0xb0'),_0x549bf1[_0x1ea5('0x3c')]['id'],_0x138310);var _0x34997d=path[_0x1ea5('0x6c')](_0x97b769,_0x4a44f6);var _0x2fc88f=[];_0x2fc88f[_0x1ea5('0xa3')]({'model':db[_0x1ea5('0x77')],'as':'User','attributes':['id',_0x1ea5('0x50')],'raw':!![]});_0x2fc88f['push']({'model':db[_0x1ea5('0x78')],'as':_0x1ea5('0xb1'),'attributes':['id',_0x1ea5('0xb2'),'lastName'],'raw':!![]});if(_0x549bf1[_0x1ea5('0x3a')]['attachments']){_0x2fc88f['push']({'model':db[_0x1ea5('0x6b')],'as':_0x1ea5('0x6b'),'raw':!![]});}var _0x50f533=[{'model':db[_0x1ea5('0x75')],'as':_0x1ea5('0x76'),'attributes':['id',_0x1ea5('0x2e'),_0x1ea5('0xb3'),_0x1ea5('0x85'),'secret',_0x1ea5('0xb4')],'include':_0x2fc88f}];_0x50f533[_0x1ea5('0xa3')]({'model':db[_0x1ea5('0xb5')],'as':_0x1ea5('0xb6'),'attributes':['id',_0x1ea5('0x2a')]});_0x50f533[_0x1ea5('0xa3')]({'model':db[_0x1ea5('0x77')],'as':_0x1ea5('0xb7'),'attributes':['id',_0x1ea5('0x50')]});return db['ChatInteraction'][_0x1ea5('0x47')]({'where':{'id':_0x549bf1[_0x1ea5('0x3c')]['id']},'include':_0x50f533})[_0x1ea5('0x17')](handleEntityNotFound(_0x564bba,null))[_0x1ea5('0x17')](function(_0x233bc9){if(_0x233bc9){var _0x30fe0b=_0x233bc9[_0x1ea5('0xb8')]({'plain':!![]});fs[_0x1ea5('0xb9')](_0x52e5ee);var _0x1de340={'channel':_0x1ea5('0xba'),'account':_0x30fe0b[_0x1ea5('0xb6')][_0x1ea5('0x2a')],'agent':_0x30fe0b[_0x1ea5('0xb7')]?_0x30fe0b[_0x1ea5('0xb7')][_0x1ea5('0x50')]:_0x1ea5('0xbb'),'createdAt':moment(_0x30fe0b['createdAt'])['format'](_0x1ea5('0xbc'))['toString'](),'closedAt':_0x30fe0b[_0x1ea5('0x61')]?moment(_0x30fe0b[_0x1ea5('0xbd')])[_0x1ea5('0x7b')](_0x1ea5('0xbc'))[_0x1ea5('0xac')]():'','disposition':_0x30fe0b[_0x1ea5('0x62')],'chatInfo':{'browser':_0x30fe0b[_0x1ea5('0xbe')],'os':_0x30fe0b[_0x1ea5('0xbf')],'referer':_0x30fe0b['referer'],'customerIp':_0x30fe0b[_0x1ea5('0xc0')],'customerPort':_0x30fe0b[_0x1ea5('0xc1')]?_0x30fe0b['customerPort']:_0x1ea5('0xbb')},'messages':_(_0x30fe0b[_0x1ea5('0x76')])[_0x1ea5('0xc2')]()[_0x1ea5('0x9b')]({'secret':![]})['map'](function(_0x320174){if(_0x320174[_0x1ea5('0x6b')]){var _0x5d784f=path[_0x1ea5('0x6c')](_0x2fe6fe,_0x320174[_0x1ea5('0x6b')][_0x1ea5('0xc3')]);if(fs['existsSync'](_0x5d784f)){fs[_0x1ea5('0xc4')](_0x5d784f)[_0x1ea5('0xc5')](fs[_0x1ea5('0xc6')](path[_0x1ea5('0x6c')](_0x52e5ee,_0x320174[_0x1ea5('0x6b')][_0x1ea5('0xc3')])));}}return{'date':moment(_0x320174[_0x1ea5('0xb3')])[_0x1ea5('0x7b')]('YYYY-MM-DD\x20HH:mm:ss')[_0x1ea5('0xac')](),'sender':_0x320174[_0x1ea5('0x85')]==='out'?_0x320174['User']?_0x320174['User']['fullname']:_0x1ea5('0x81'):_0x320174[_0x1ea5('0xb1')][_0x1ea5('0xb2')]+(_0x320174['Contact'][_0x1ea5('0xc7')]?'\x20'+_0x320174[_0x1ea5('0xb1')][_0x1ea5('0xc7')]:''),'body':_0x320174[_0x1ea5('0x6b')]?_0x320174[_0x1ea5('0x6b')]['basename']:_0x320174[_0x1ea5('0x2e')],'direction':_0x320174[_0x1ea5('0x85')]===_0x1ea5('0xc8')?'A':'C','secret':_0x320174[_0x1ea5('0x86')],'read':_0x320174[_0x1ea5('0xb4')],'attachment':_0x320174[_0x1ea5('0x6b')]};})[_0x1ea5('0xc9')]()};return ejs['renderFile'](path['join'](config[_0x1ea5('0x6d')],_0x1ea5('0xad'),_0x1ea5('0xca'),_0x1ea5('0xcb')),{'interaction':_0x1de340})[_0x1ea5('0x17')](function(_0x3d9257){var _0x2c29ec=path[_0x1ea5('0x6c')](_0x52e5ee,'transcript-'+_0x30fe0b['id']+'-'+_0x138310+_0x1ea5('0xcc'));var _0x8ea1e8={'path':_0x2c29ec,'channel':_0x1ea5('0xba'),'interactionId':_0x30fe0b['id']};return pdf['createPdfFromHTML'](_0x3d9257,_0x8ea1e8);})['then'](function(){return new Promise(function(_0x3084d5,_0x21b4ba){zipdir(_0x52e5ee,{'saveTo':_0x34997d},function(_0x56d5d0,_0x171c6a){if(_0x56d5d0)return _0x21b4ba(_0x56d5d0);return _0x3084d5(_0x171c6a);});})[_0x1ea5('0x17')](function(){return new BPromise(function(_0x51ba9c,_0x32adc6){rimraf(_0x52e5ee,function(_0x322a3c){if(_0x322a3c)_0x32adc6(_0x322a3c);return _0x51ba9c();});});})[_0x1ea5('0x17')](function(){return _0x564bba[_0x1ea5('0xaa')](_0x34997d,_0x4a44f6,function(_0x14aa7f){if(_0x14aa7f){logger[_0x1ea5('0x1c')](_0x1ea5('0xcd'),_0x14aa7f);}else{fs[_0x1ea5('0xce')](_0x34997d);}});});});}else{return _0x564bba[_0x1ea5('0x20')](0xc8);}})[_0x1ea5('0x1f')](handleError(_0x564bba,null));};
\ No newline at end of file
+var _0xe013=['entity\x20not\x20found','UserId','disposition','AbandonInteraction','attachmentUpload','originalname','filename','mimetype','attachmentDownload','closed','Unauthorized','Attachment','attachId','ChatOfflineMessageId','join','root','server/files/attachments/','offline-chat/','basename','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','User','ChatWebsiteId','%s%d','agentAlias','System','customer','ContactId','agentIdentifier','website_alias','agent_alias','alias','[%s]\x20%s:\x20%s\x0a','createdAt','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','getMessages','hasOwnProperty','nolimit','order','sort','where','pick','ChatInteractionId','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','getMyMessages','includeAgent','push','include','rows','addTags','setTags','spread','Tag','color','emit','chatInteractionTags:save','removeTags','toString','server','tmp','attachments','transcript-%d-%s.zip','lastName','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerIp','customerPort','tail','pipe','createWriteStream','Contact','read','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','err','rimraf','zip-dir','moment','mustache','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./chatInteraction.socket','register','jayson/promise','http','client','request','then','ChatInteraction,\x20%s,\x20%s','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','sendStatus','status','json','offset','limit','count','set','Content-Range','update','destroy','stack','name','send','render','merge','contact','interaction','account','index','map','ChatInteraction','fieldName','type','getOptions','findAll','user','catch','show','rawAttributes','query','keys','filters','intersection','model','attributes','fields','length','includeAll','options','find','create','body','params','describe','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation','vidaooTopic','vidaooNote','vidaooMetadata','fullname','email','POST','https://api-vidaoo.xcally.com/api/v1/meetings','isNull','metadata','Sequelize','Error\x20in\x20conversion\x20vidaooMetadata','ValidationError','Error\x20in\x20Vidaoo\x20configuration','join_url','out','ChatMessage','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','customUpdate','CmContact','abandonInteraction,\x20%s,\x20%s,\x20%s','abandon'];(function(_0x283e0e,_0x3f29df){var _0x37f29a=function(_0x57235f){while(--_0x57235f){_0x283e0e['push'](_0x283e0e['shift']());}};_0x37f29a(++_0x3f29df);}(_0xe013,0x6f));var _0x3e01=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xe013[_0x24237f];return _0x48298e;};'use strict';var rimraf=require(_0x3e01('0x0'));var zipdir=require(_0x3e01('0x1'));var rp=require('request-promise');var moment=require(_0x3e01('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x3e01('0x3'));var util=require(_0x3e01('0x4'));var path=require(_0x3e01('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x3e01('0x6'));var Redis=require(_0x3e01('0x7'));var interaction=require(_0x3e01('0x8'));var qs=require(_0x3e01('0x9'));var pdf=require('../../components/export/pdf');var logger=require(_0x3e01('0xa'))(_0x3e01('0xb'));var config=require(_0x3e01('0xc'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x3e01('0xd')](config[_0x3e01('0xe')],{'host':_0x3e01('0xf'),'port':0x18eb});var socket=require(_0x3e01('0x10'))(new Redis(config[_0x3e01('0xe')]));require(_0x3e01('0x11'))[_0x3e01('0x12')](socket);var jayson=require(_0x3e01('0x13'));var client=jayson['client'][_0x3e01('0x14')]({'port':0x232b});var client9004=jayson[_0x3e01('0x15')][_0x3e01('0x14')]({'port':0x232c});function respondWithRpcPromise(_0x3d85a5,_0x16c648,_0x374435,_0x58a55f){return new BPromise(function(_0x3b3b23,_0x4b7b97){var _0xb81455=_0x58a55f||client;return _0xb81455[_0x3e01('0x16')](_0x3d85a5,_0x374435)[_0x3e01('0x17')](function(_0x3a3be2){logger['info'](_0x3e01('0x18'),_0x16c648,'request\x20sent');logger[_0x3e01('0x19')](_0x3e01('0x1a'),_0x16c648,'request\x20sent',JSON[_0x3e01('0x1b')](_0x3a3be2));if(_0x3a3be2[_0x3e01('0x1c')]){if(_0x3a3be2[_0x3e01('0x1c')][_0x3e01('0x1d')]===0x1f4){logger[_0x3e01('0x1c')]('ChatInteraction,\x20%s,\x20%s',_0x16c648,_0x3a3be2['error'][_0x3e01('0x1e')]);return _0x4b7b97(_0x3a3be2[_0x3e01('0x1c')]['message']);}logger[_0x3e01('0x1c')](_0x3e01('0x18'),_0x16c648,_0x3a3be2['error'][_0x3e01('0x1e')]);return _0x3b3b23(_0x3a3be2['error'][_0x3e01('0x1e')]);}else{logger[_0x3e01('0x1f')](_0x3e01('0x18'),_0x16c648,_0x3e01('0x20'));_0x3b3b23(_0x3a3be2[_0x3e01('0x21')][_0x3e01('0x1e')]);}})['catch'](function(_0x5bdde4){logger[_0x3e01('0x1c')](_0x3e01('0x18'),_0x16c648,_0x5bdde4);_0x4b7b97(_0x5bdde4);});});}function respondWithStatusCode(_0x3e0cc9,_0x2672f9){_0x2672f9=_0x2672f9||0xcc;return function(_0x403b92){if(_0x403b92){return _0x3e0cc9[_0x3e01('0x22')](_0x2672f9);}return _0x3e0cc9[_0x3e01('0x23')](_0x2672f9)['end']();};}function respondWithResult(_0x4fd6b7,_0x38fe18){_0x38fe18=_0x38fe18||0xc8;return function(_0x246c04){if(_0x246c04){return _0x4fd6b7[_0x3e01('0x23')](_0x38fe18)[_0x3e01('0x24')](_0x246c04);}};}function respondWithFilteredResult(_0x3eaec3,_0x36ed08){return function(_0x29858a){if(_0x29858a){var _0x454153=typeof _0x36ed08[_0x3e01('0x25')]==='undefined'&&typeof _0x36ed08[_0x3e01('0x26')]==='undefined';var _0x2156c2=_0x29858a[_0x3e01('0x27')];var _0x1104f1=_0x454153?0x0:_0x36ed08[_0x3e01('0x25')];var _0x3b9125=_0x454153?_0x29858a[_0x3e01('0x27')]:_0x36ed08[_0x3e01('0x25')]+_0x36ed08[_0x3e01('0x26')];var _0x35ffe0;if(_0x3b9125>=_0x2156c2){_0x3b9125=_0x2156c2;_0x35ffe0=0xc8;}else{_0x35ffe0=0xce;}_0x3eaec3[_0x3e01('0x23')](_0x35ffe0);return _0x3eaec3[_0x3e01('0x28')](_0x3e01('0x29'),_0x1104f1+'-'+_0x3b9125+'/'+_0x2156c2)[_0x3e01('0x24')](_0x29858a);}return null;};}function saveUpdates(_0x51f794){return function(_0x57a312){if(_0x57a312){return _0x57a312[_0x3e01('0x2a')](_0x51f794)[_0x3e01('0x17')](function(_0x22a25c){return _0x22a25c;});}return null;};}function removeEntity(_0x2e99a5){return function(_0x4d0fd7){if(_0x4d0fd7){return _0x4d0fd7[_0x3e01('0x2b')]()[_0x3e01('0x17')](function(){_0x2e99a5[_0x3e01('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd2dd2d){return function(_0xb1640c){if(!_0xb1640c){_0xd2dd2d[_0x3e01('0x22')](0x194);}return _0xb1640c;};}function handleError(_0x462df0,_0x54de6f){_0x54de6f=_0x54de6f||0x1f4;return function(_0x2e178b){logger[_0x3e01('0x1c')](_0x2e178b[_0x3e01('0x2c')]);if(_0x2e178b[_0x3e01('0x2d')]){delete _0x2e178b[_0x3e01('0x2d')];}_0x462df0['status'](_0x54de6f)[_0x3e01('0x2e')](_0x2e178b);};}function getMustacheRender(_0x5dfcbe,_0x33eb09){return Mustache[_0x3e01('0x2f')](_0x5dfcbe,_[_0x3e01('0x30')](_0x33eb09['body'],{'contact':_0x33eb09[_0x3e01('0x31')],'message':_0x33eb09[_0x3e01('0x1e')],'agent':_0x33eb09['agent'],'interaction':_0x33eb09[_0x3e01('0x32')],'account':_0x33eb09[_0x3e01('0x33')]}))||'';}exports[_0x3e01('0x34')]=function(_0x290e42,_0x581ff0){var _0x4dd63f={};var _0x533c6b=_[_0x3e01('0x35')](db[_0x3e01('0x36')]['rawAttributes'],function(_0x5cc499){return{'name':_0x5cc499[_0x3e01('0x37')],'type':_0x5cc499[_0x3e01('0x38')]['key']};});_0x4dd63f=qs[_0x3e01('0x39')](_0x533c6b,_0x290e42);return interaction[_0x3e01('0x3a')]('chat',_0x290e42['query'],_0x290e42[_0x3e01('0x3b')],_0x4dd63f,_0x533c6b)[_0x3e01('0x17')](respondWithFilteredResult(_0x581ff0,_0x4dd63f))[_0x3e01('0x3c')](handleError(_0x581ff0,null));};exports[_0x3e01('0x3d')]=function(_0x423e05,_0x127996){var _0xce7d7a={'raw':![],'where':{'id':_0x423e05['params']['id']}},_0x3db735={};_0x3db735['model']=_['keys'](db['ChatInteraction'][_0x3e01('0x3e')]);_0x3db735[_0x3e01('0x3f')]=_[_0x3e01('0x40')](_0x423e05[_0x3e01('0x3f')]);_0x3db735[_0x3e01('0x41')]=_[_0x3e01('0x42')](_0x3db735[_0x3e01('0x43')],_0x3db735['query']);_0xce7d7a[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x3db735['model'],qs[_0x3e01('0x45')](_0x423e05[_0x3e01('0x3f')]['fields']));_0xce7d7a[_0x3e01('0x44')]=_0xce7d7a[_0x3e01('0x44')][_0x3e01('0x46')]?_0xce7d7a[_0x3e01('0x44')]:_0x3db735[_0x3e01('0x43')];if(_0x423e05[_0x3e01('0x3f')][_0x3e01('0x47')]){_0xce7d7a['include']=[{'all':!![]}];}_0xce7d7a=_[_0x3e01('0x30')]({},_0xce7d7a,_0x423e05[_0x3e01('0x48')]);return db[_0x3e01('0x36')][_0x3e01('0x49')](_0xce7d7a)[_0x3e01('0x17')](handleEntityNotFound(_0x127996,null))[_0x3e01('0x17')](respondWithResult(_0x127996,null))['catch'](handleError(_0x127996,null));};exports['create']=function(_0x18ffc2,_0x131c21){return db[_0x3e01('0x36')][_0x3e01('0x4a')](_0x18ffc2[_0x3e01('0x4b')],{})[_0x3e01('0x17')](respondWithResult(_0x131c21,0xc9))['catch'](handleError(_0x131c21,null));};exports[_0x3e01('0x2a')]=function(_0x2ef252,_0x5b88bb){if(_0x2ef252[_0x3e01('0x4b')]['id']){delete _0x2ef252['body']['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x2ef252[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x5b88bb,null))['then'](saveUpdates(_0x2ef252[_0x3e01('0x4b')],null))[_0x3e01('0x17')](respondWithResult(_0x5b88bb,null))[_0x3e01('0x3c')](handleError(_0x5b88bb,null));};exports[_0x3e01('0x2b')]=function(_0x3deaf1,_0x1cb561){return db['ChatInteraction'][_0x3e01('0x49')]({'where':{'id':_0x3deaf1['params']['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x1cb561,null))[_0x3e01('0x17')](removeEntity(_0x1cb561,null))[_0x3e01('0x3c')](handleError(_0x1cb561,null));};exports[_0x3e01('0x4d')]=function(_0xbc367a,_0x540066){return db[_0x3e01('0x36')][_0x3e01('0x4d')]()[_0x3e01('0x17')](respondWithResult(_0x540066,null))['catch'](handleError(_0x540066,null));};exports['createVidaooSession']=function(_0x331f66,_0x47acc3){var _0x29768a=_0x331f66['params']['id'];var _0x534446;var _0x498463;var _0x1dbace;return db[_0x3e01('0x36')][_0x3e01('0x4e')]({'where':{'id':_0x29768a}})[_0x3e01('0x17')](function(_0x3c8fd7){_0x534446=_0x3c8fd7;return db[_0x3e01('0x4f')]['findOne']({'where':{'id':_0x3c8fd7['ChatWebsiteId']},'attributes':['id',_0x3e01('0x50'),_0x3e01('0x51'),_0x3e01('0x52'),_0x3e01('0x53'),_0x3e01('0x54')],'raw':!![]});})[_0x3e01('0x17')](function(_0x15c90){if(_0x15c90&&_0x15c90['vidaooApiKey']&&_0x15c90[_0x3e01('0x51')]){_0x498463=_0x15c90;var _0xdba3b={'interaction':{'id':_0x29768a},'agent':{'id':_0x331f66[_0x3e01('0x3b')]['id'],'name':_0x331f66[_0x3e01('0x3b')][_0x3e01('0x2d')],'fullname':_0x331f66[_0x3e01('0x3b')][_0x3e01('0x55')],'email':_0x331f66['user'][_0x3e01('0x56')]},'contact':_0x331f66[_0x3e01('0x4b')][_0x3e01('0x31')],'account':_0x331f66[_0x3e01('0x4b')][_0x3e01('0x33')]};var _0x5dc4e1={'rejectUnauthorized':![],'method':_0x3e01('0x57'),'url':_0x3e01('0x58'),'headers':{'X-APIKEY':_0x15c90[_0x3e01('0x50')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x331f66['user']['email']],'buttons':null,'topic':_0x498463[_0x3e01('0x52')],'note':_[_0x3e01('0x59')](_0x498463[_0x3e01('0x53')])?null:getMustacheRender(_0x498463['vidaooNote'],_0xdba3b),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x3e01('0x59')](_0x498463[_0x3e01('0x54')])){var _0x54a96f=getMustacheRender(_0x498463['vidaooMetadata'],_0xdba3b);var _0x3bbf52=JSON['parse'](_0x54a96f);_0x5dc4e1[_0x3e01('0x4b')][_0x3e01('0x5a')]=_0x3bbf52;}}catch(_0x4d7146){throw new db[(_0x3e01('0x5b'))]['ValidationError'](_0x3e01('0x5c'));}return rp(_0x5dc4e1);}else{throw new db[(_0x3e01('0x5b'))][(_0x3e01('0x5d'))](_0x3e01('0x5e'));}})[_0x3e01('0x17')](function(_0xe42ba){_0x1dbace=_0xe42ba;if(_0x1dbace['id']){var _0xea0b0d={'body':_0x1dbace[_0x3e01('0x5f')],'ChatWebsiteId':_0x498463['id'],'ChatInteractionId':_0x534446['id'],'direction':_0x3e01('0x60'),'UserId':_0x331f66[_0x3e01('0x3b')]['id']};return db[_0x3e01('0x61')][_0x3e01('0x4a')](_0xea0b0d,{});}else{throw new db[(_0x3e01('0x5b'))][(_0x3e01('0x5d'))](_0x3e01('0x62'));}})[_0x3e01('0x17')](function(){return _0x534446[_0x3e01('0x63')]({'vidaooSessionId':_0x1dbace['id']});})[_0x3e01('0x17')](respondWithResult(_0x47acc3,null))[_0x3e01('0x3c')](handleError(_0x47acc3,null));};exports[_0x3e01('0x64')]=function(_0x302b75,_0x1c65a6){if(_0x302b75['body']['id']){delete _0x302b75[_0x3e01('0x4b')]['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x302b75[_0x3e01('0x4c')]['id']},'include':[{'model':db[_0x3e01('0x65')],'as':'Contact'}]})[_0x3e01('0x17')](handleEntityNotFound(_0x1c65a6,null))[_0x3e01('0x17')](saveUpdates(_0x302b75[_0x3e01('0x4b')],null))[_0x3e01('0x17')](respondWithResult(_0x1c65a6,null))[_0x3e01('0x3c')](handleError(_0x1c65a6,null));};exports['abandon']=function(_0x426311,_0x3c19f1){if(_0x426311[_0x3e01('0x4b')]['id']){delete _0x426311[_0x3e01('0x4b')]['id'];}return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x426311[_0x3e01('0x4c')]['id']}})['then'](function(_0xd80515){if(!_0xd80515){logger[_0x3e01('0x1c')](_0x3e01('0x66'),_0x3e01('0x67'),0x194,_0x3e01('0x68'));_0x3c19f1['sendStatus'](0x194);}else{if(_0xd80515[_0x3e01('0x69')]){throw new db[(_0x3e01('0x5b'))]['ValidationError']('Interaction\x20already\x20assigned');}}return _0xd80515;})[_0x3e01('0x17')](function(_0x2b68bf){if(_0x2b68bf){return _0x2b68bf[_0x3e01('0x2a')]({'closed':_0x426311[_0x3e01('0x4b')]['closed'],'disposition':_0x426311['body'][_0x3e01('0x6a')]})[_0x3e01('0x17')](function(_0x1f9fe6){return _0x1f9fe6;});}})['then'](function(){return respondWithRpcPromise(_0x3e01('0x6b'),_0x3e01('0x67'),_0x426311[_0x3e01('0x4b')],client9004);})[_0x3e01('0x17')](respondWithResult(_0x3c19f1,null))['catch'](handleError(_0x3c19f1,null));};exports[_0x3e01('0x6c')]=function(_0x59a7c8,_0x4c4f64){_0x59a7c8[_0x3e01('0x4b')][_0x3e01('0x2d')]=_0x59a7c8['file'][_0x3e01('0x6d')];_0x59a7c8[_0x3e01('0x4b')]['basename']=_0x59a7c8['file'][_0x3e01('0x6e')];_0x59a7c8['body'][_0x3e01('0x38')]=_0x59a7c8['file'][_0x3e01('0x6f')];return db['Attachment'][_0x3e01('0x4a')](_0x59a7c8[_0x3e01('0x4b')])['then'](respondWithResult(_0x4c4f64,0xc9))[_0x3e01('0x3c')](handleError(_0x4c4f64,null));};exports[_0x3e01('0x70')]=function(_0x16ea9a,_0x42490e){return db['ChatInteraction'][_0x3e01('0x4e')]({'where':{'id':_0x16ea9a['params']['id']},'raw':!![]})[_0x3e01('0x17')](handleEntityNotFound(_0x42490e,null))['then'](function(_0x4cdf20){if(_0x4cdf20){if(_0x4cdf20[_0x3e01('0x71')]){return _0x42490e['status'](0x193)[_0x3e01('0x24')]({'status':0x193,'message':_0x3e01('0x72')});}return db[_0x3e01('0x73')]['findOne']({'where':{'id':_0x16ea9a[_0x3e01('0x3f')][_0x3e01('0x74')]},'raw':!![]})['then'](handleEntityNotFound(_0x42490e,null));}})[_0x3e01('0x17')](function(_0x619961){if(_0x619961){var _0x53558c=_0x619961[_0x3e01('0x75')]!==null;var _0x291064=path[_0x3e01('0x76')](config[_0x3e01('0x77')],_0x3e01('0x78'));if(_0x53558c){_0x291064=path[_0x3e01('0x76')](_0x291064,_0x3e01('0x79'));}var _0x2a6aa7=path[_0x3e01('0x76')](_0x291064,_0x619961[_0x3e01('0x7a')]);return _0x42490e[_0x3e01('0x7b')](_0x2a6aa7);}})['catch'](handleError(_0x42490e,null));};exports[_0x3e01('0x7c')]=function(_0x48525a,_0x6a7705){var _0x27d080=null;var _0x2f03fd=null;var _0x4a2d55=null;if(_0x48525a['body']['id']){delete _0x48525a[_0x3e01('0x4b')]['id'];}if(_0x48525a[_0x3e01('0x4b')][_0x3e01('0x7d')]){_0x4a2d55=path[_0x3e01('0x76')](config[_0x3e01('0x77')],_0x3e01('0x7e'),util[_0x3e01('0x7f')](_0x3e01('0x80'),Date[_0x3e01('0x81')]()));_0x48525a[_0x3e01('0x4b')][_0x3e01('0x82')]=_0x4a2d55;}return db[_0x3e01('0x36')]['find']({'where':{'id':_0x48525a[_0x3e01('0x4c')]['id']},'include':[{'model':db[_0x3e01('0x61')],'as':_0x3e01('0x83'),'include':[{'model':db['User'],'as':_0x3e01('0x84')}]}]})[_0x3e01('0x17')](handleEntityNotFound(_0x6a7705,null))[_0x3e01('0x17')](saveUpdates(_0x48525a[_0x3e01('0x4b')],null))[_0x3e01('0x17')](function(_0x3f952f){if(_0x3f952f){_0x27d080=_0x3f952f;return db[_0x3e01('0x4f')][_0x3e01('0x49')]({'where':{'id':_0x27d080[_0x3e01('0x85')]}});}})[_0x3e01('0x17')](function(_0x59b797){if(_0x59b797){_0x2f03fd=_0x59b797;return db[_0x3e01('0x65')][_0x3e01('0x49')]({'where':{'id':_0x27d080['ContactId']}});}})[_0x3e01('0x17')](function(_0x319f54){if(_0x319f54){if(_0x4a2d55){var _0x4efa20=null;for(var _0x514502=0x1;_0x514502<_0x27d080['Messages'][_0x3e01('0x46')];++_0x514502){_0x4efa20=_0x27d080['Messages'][_0x514502];var _0x3f2360=_0x4efa20[_0x3e01('0x69')]?util['format'](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20[_0x3e01('0x69')]):_0x3e01('0x88');var _0x317750=_0x48525a[_0x3e01('0x4b')][_0x3e01('0x89')]||util[_0x3e01('0x7f')](_0x3e01('0x86'),'Visitor',_0x4efa20[_0x3e01('0x8a')]);switch(_0x2f03fd[_0x3e01('0x8b')]){case _0x3e01('0x8c'):_0x3f2360=_0x4efa20[_0x3e01('0x69')]?util[_0x3e01('0x7f')](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20['UserId']):_0x3e01('0x88');break;case _0x3e01('0x8d'):_0x3f2360=_0x4efa20['UserId']?_0x4efa20[_0x3e01('0x84')][_0x3e01('0x8e')]||_0x4efa20[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88');break;case'agent_fullname':_0x3f2360=_0x4efa20[_0x3e01('0x69')]?_0x4efa20[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88');break;default:_0x3f2360=_0x4efa20[_0x3e01('0x69')]?util[_0x3e01('0x7f')](_0x3e01('0x86'),_0x2f03fd[_0x3e01('0x87')],_0x4efa20[_0x3e01('0x69')]):_0x3e01('0x88');}var _0x4a1461=util['format'](_0x3e01('0x8f'),moment(_0x4efa20[_0x3e01('0x90')])[_0x3e01('0x7f')](_0x3e01('0x91')),_0x4efa20[_0x3e01('0x92')]==='in'?_0x317750:_0x3f2360,_0x4efa20[_0x3e01('0x4b')]);if(!_0x4efa20[_0x3e01('0x93')]){fs[_0x3e01('0x94')](_0x4a2d55,_0x4a1461);}}return db[_0x3e01('0x95')][_0x3e01('0x4e')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x3e01('0x96'),'raw':!![],'include':[{'model':db[_0x3e01('0x97')],'as':_0x3e01('0x97'),'raw':!![]}]}]});}}})[_0x3e01('0x17')](function(_0x4b12a0){if(!_0x4b12a0||!_0x4b12a0[_0x3e01('0x96')]||!_0x48525a[_0x3e01('0x4b')])return _0x27d080;var _0x302ef5=_0x4b12a0[_0x3e01('0x98')]();return respondWithRpcPromise(_0x3e01('0x99'),_0x3e01('0x9a'),{'account':_0x302ef5,'message':{'from':util[_0x3e01('0x7f')]('\x22%s\x22\x20<%s>',_0x4b12a0[_0x3e01('0x2d')],_0x4b12a0[_0x3e01('0x56')]||_0x4b12a0[_0x3e01('0x96')][_0x3e01('0x3b')]),'to':_0x48525a[_0x3e01('0x4b')]['mailTranscript'],'subject':_0x3e01('0x9b'),'text':util['format'](_0x3e01('0x9c'),_0x48525a[_0x3e01('0x4b')]['mailTranscript']),'attachments':[{'path':_0x4a2d55}]}})[_0x3e01('0x17')](function(){return _0x27d080;})[_0x3e01('0x3c')](function(_0x682077){logger['error'](_0x682077);});})[_0x3e01('0x17')](respondWithStatusCode(_0x6a7705,0xc8))['catch'](handleError(_0x6a7705,null));};exports[_0x3e01('0x9d')]=function(_0x932cce,_0x1a6888){return db[_0x3e01('0x61')][_0x3e01('0x49')]({'where':{'id':_0x932cce['params']['id']}})['then'](handleEntityNotFound(_0x1a6888,null))[_0x3e01('0x17')](function(_0x4e0905){if(_0x4e0905){return _0x4e0905['addMessage'](_0x932cce['body']['ids'],_['omit'](_0x932cce['body'],[_0x3e01('0x9e'),'id'])||{});}})[_0x3e01('0x17')](respondWithResult(_0x1a6888,null))[_0x3e01('0x3c')](handleError(_0x1a6888,null));};exports[_0x3e01('0x9f')]=function(_0x104313,_0x44a7a1){var _0x34929d={'raw':![],'where':{}};var _0x42aed1={};var _0x28bf30={'count':0x0,'rows':[]};return db[_0x3e01('0x36')]['findOne']({'where':{'id':_0x104313[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x44a7a1,null))['then'](function(_0x356b97){if(_0x356b97){_0x42aed1[_0x3e01('0x43')]=_['keys'](db['ChatMessage'][_0x3e01('0x3e')]);_0x42aed1['query']=_[_0x3e01('0x40')](_0x104313[_0x3e01('0x3f')]);_0x42aed1[_0x3e01('0x41')]=_[_0x3e01('0x42')](_0x42aed1[_0x3e01('0x43')],_0x42aed1['query']);_0x34929d[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x42aed1[_0x3e01('0x43')],qs['fields'](_0x104313[_0x3e01('0x3f')][_0x3e01('0x45')]));_0x34929d[_0x3e01('0x44')]=_0x34929d['attributes'][_0x3e01('0x46')]?_0x34929d['attributes']:_0x42aed1['model'];if(!_0x104313[_0x3e01('0x3f')][_0x3e01('0xa0')](_0x3e01('0xa1'))){_0x34929d[_0x3e01('0x26')]=qs[_0x3e01('0x26')](_0x104313[_0x3e01('0x3f')][_0x3e01('0x26')]);_0x34929d[_0x3e01('0x25')]=qs[_0x3e01('0x25')](_0x104313[_0x3e01('0x3f')][_0x3e01('0x25')]);}_0x34929d[_0x3e01('0xa2')]=qs['sort'](_0x104313[_0x3e01('0x3f')][_0x3e01('0xa3')]);_0x34929d[_0x3e01('0xa4')]=qs[_0x3e01('0x41')](_[_0x3e01('0xa5')](_0x104313[_0x3e01('0x3f')],_0x42aed1[_0x3e01('0x41')]));_0x34929d[_0x3e01('0xa4')][_0x3e01('0xa6')]=_0x356b97['id'];if(_0x104313[_0x3e01('0x3f')][_0x3e01('0xa7')]){_0x34929d[_0x3e01('0xa4')]=_[_0x3e01('0x30')](_0x34929d[_0x3e01('0xa4')],{'$or':_[_0x3e01('0x35')](_0x34929d['attributes'],function(_0x20ddf4){var _0x43edd1={};_0x43edd1[_0x20ddf4]={'$like':'%'+_0x104313[_0x3e01('0x3f')][_0x3e01('0xa7')]+'%'};return _0x43edd1;})});}if(_0x104313[_0x3e01('0x3f')]['$gte']){var _0x5afbfc=_0x104313[_0x3e01('0x3f')][_0x3e01('0xa8')][_0x3e01('0xa9')](',');var _0x1e7885={};_0x1e7885[_0x5afbfc[0x0]]={'$gte':moment(_0x5afbfc[0x1])['format'](_0x3e01('0xaa'))};_0x34929d[_0x3e01('0xa4')]=_[_0x3e01('0x30')](_0x34929d['where'],_0x1e7885);}_0x34929d=_[_0x3e01('0x30')]({},_0x34929d,_0x104313[_0x3e01('0x48')]);return db[_0x3e01('0x61')][_0x3e01('0x27')]({'where':_0x34929d[_0x3e01('0xa4')]})[_0x3e01('0x17')](function(_0x1cf2d0){_0x28bf30[_0x3e01('0x27')]=_0x1cf2d0;if(_0x104313[_0x3e01('0x3f')][_0x3e01('0x47')]){_0x34929d['include']=[{'all':!![]}];}return db[_0x3e01('0x61')][_0x3e01('0x3a')](_0x34929d);})['then'](function(_0x155f38){_0x28bf30['rows']=_0x155f38;return _0x28bf30;});}})[_0x3e01('0x17')](respondWithFilteredResult(_0x44a7a1,_0x34929d))[_0x3e01('0x3c')](handleError(_0x44a7a1,null));};exports[_0x3e01('0xab')]=function(_0x3a1328,_0x5f50e3){var _0x3d9563={'where':{}},_0x1c176d={},_0x19dfd7={'count':0x0,'rows':[]};return db[_0x3e01('0x36')][_0x3e01('0x4e')]({'where':{'id':_0x3a1328[_0x3e01('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5f50e3,null))[_0x3e01('0x17')](function(_0x3fb876){if(_0x3fb876){_0x1c176d[_0x3e01('0x43')]=_[_0x3e01('0x40')](db[_0x3e01('0x61')][_0x3e01('0x3e')]);_0x1c176d[_0x3e01('0x3f')]=_[_0x3e01('0x40')](_0x3a1328[_0x3e01('0x3f')]);_0x1c176d[_0x3e01('0x41')]=_['intersection'](_0x1c176d[_0x3e01('0x43')],_0x1c176d['query']);_0x3d9563[_0x3e01('0x44')]=_[_0x3e01('0x42')](_0x1c176d['model'],qs[_0x3e01('0x45')](_0x3a1328['query'][_0x3e01('0x45')]));_0x3d9563[_0x3e01('0x44')]=_0x3d9563[_0x3e01('0x44')][_0x3e01('0x46')]?_0x3d9563['attributes']:_0x1c176d[_0x3e01('0x43')];if(!_0x3a1328['query'][_0x3e01('0xa0')](_0x3e01('0xa1'))){_0x3d9563[_0x3e01('0x26')]=qs['limit'](_0x3a1328[_0x3e01('0x3f')]['limit']);_0x3d9563[_0x3e01('0x25')]=qs[_0x3e01('0x25')](_0x3a1328[_0x3e01('0x3f')][_0x3e01('0x25')]);}_0x3d9563[_0x3e01('0xa2')]=qs[_0x3e01('0xa3')](_0x3a1328[_0x3e01('0x3f')][_0x3e01('0xa3')]);_0x3d9563[_0x3e01('0xa4')]=qs[_0x3e01('0x41')](_[_0x3e01('0xa5')](_0x3a1328[_0x3e01('0x3f')],_0x1c176d['filters']));_0x3d9563[_0x3e01('0xa4')][_0x3e01('0xa6')]=_0x3fb876['id'];if(_0x3a1328['query']['filter']){_0x3d9563['where']=_[_0x3e01('0x30')](_0x3d9563[_0x3e01('0xa4')],{'$or':_['map'](_0x3d9563[_0x3e01('0x44')],function(_0x522881){var _0x1b4151={};_0x1b4151[_0x522881]={'$like':'%'+_0x3a1328[_0x3e01('0x3f')]['filter']+'%'};return _0x1b4151;})});}_0x3d9563[_0x3e01('0xa4')][_0x3e01('0x93')]=![];if(_0x3a1328['query']['id']){_0x3d9563[_0x3e01('0xa4')]['id']={'$gt':_0x3a1328[_0x3e01('0x3f')]['id']};}_0x3d9563=_[_0x3e01('0x30')]({},_0x3d9563,_0x3a1328['options']);return db[_0x3e01('0x61')][_0x3e01('0x27')]({'where':_0x3d9563[_0x3e01('0xa4')]})[_0x3e01('0x17')](function(_0x23b686){_0x19dfd7[_0x3e01('0x27')]=_0x23b686;_0x3d9563['include']=[];if(_0x3a1328[_0x3e01('0x3f')][_0x3e01('0xac')]){_0x3d9563['include'][_0x3e01('0xad')]({'model':db[_0x3e01('0x84')],'as':'User','attributes':['id',_0x3e01('0x55'),_0x3e01('0x8e')]});}if(_0x3a1328[_0x3e01('0x3f')]['includeAll']){_0x3d9563[_0x3e01('0xae')]=[{'all':!![]}];}return db[_0x3e01('0x61')]['findAll'](_0x3d9563);})[_0x3e01('0x17')](function(_0x126630){_0x19dfd7[_0x3e01('0xaf')]=_0x126630;return _0x19dfd7;});}})[_0x3e01('0x17')](respondWithFilteredResult(_0x5f50e3,_0x3d9563))[_0x3e01('0x3c')](handleError(_0x5f50e3,null));};exports[_0x3e01('0xb0')]=function(_0x24a0bc,_0x3df2af){return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x24a0bc[_0x3e01('0x4c')]['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x3df2af,null))['then'](function(_0x491261){if(_0x491261){return _0x491261[_0x3e01('0xb1')](_0x24a0bc[_0x3e01('0x4b')][_0x3e01('0x9e')],_['omit'](_0x24a0bc[_0x3e01('0x4b')],[_0x3e01('0x9e'),'id'])||{})[_0x3e01('0xb2')](function(){return db[_0x3e01('0xb3')][_0x3e01('0x3a')]({'attributes':['id',_0x3e01('0x2d'),_0x3e01('0xb4')],'where':{'id':_0x24a0bc[_0x3e01('0x4b')][_0x3e01('0x9e')]}});})[_0x3e01('0x17')](function(_0x19aa2c){socket[_0x3e01('0xb5')](_0x3e01('0xb6'),{'id':Number(_0x24a0bc['params']['id']),'tags':_0x19aa2c||[]});return{'id':Number(_0x24a0bc[_0x3e01('0x4c')]['id']),'tags':_0x19aa2c||[]};});}})[_0x3e01('0x17')](respondWithResult(_0x3df2af,null))[_0x3e01('0x3c')](handleError(_0x3df2af,null));};exports[_0x3e01('0xb7')]=function(_0x18a778,_0x3d8805){return db[_0x3e01('0x36')][_0x3e01('0x49')]({'where':{'id':_0x18a778['params']['id']}})[_0x3e01('0x17')](handleEntityNotFound(_0x3d8805,null))['then'](function(_0x1d094e){if(_0x1d094e){return _0x1d094e[_0x3e01('0xb7')](_0x18a778['query'][_0x3e01('0x9e')]);}})['then'](respondWithStatusCode(_0x3d8805,null))[_0x3e01('0x3c')](handleError(_0x3d8805,null));};exports[_0x3e01('0x7b')]=function(_0x2d2213,_0x58ffc9){var _0x33fc33=moment()['unix']()[_0x3e01('0xb8')]();var _0x4e46ca=path[_0x3e01('0x76')](config['root'],_0x3e01('0xb9'),'files',_0x3e01('0xba'));var _0x11482a=path[_0x3e01('0x76')](config['root'],_0x3e01('0xb9'),'files',_0x3e01('0xbb'));var _0x2a82ac=path[_0x3e01('0x76')](_0x4e46ca,_0x33fc33);var _0x17cbd9=util['format'](_0x3e01('0xbc'),_0x2d2213['params']['id'],_0x33fc33);var _0x87b546=path['join'](_0x4e46ca,_0x17cbd9);var _0x123239=[];_0x123239[_0x3e01('0xad')]({'model':db[_0x3e01('0x84')],'as':_0x3e01('0x84'),'attributes':['id','fullname'],'raw':!![]});_0x123239[_0x3e01('0xad')]({'model':db[_0x3e01('0x65')],'as':'Contact','attributes':['id','firstName',_0x3e01('0xbd')],'raw':!![]});if(_0x2d2213[_0x3e01('0x3f')]['attachments']){_0x123239[_0x3e01('0xad')]({'model':db['Attachment'],'as':_0x3e01('0x73'),'raw':!![]});}var _0x1c455a=[{'model':db[_0x3e01('0x61')],'as':_0x3e01('0x83'),'attributes':['id',_0x3e01('0x4b'),_0x3e01('0x90'),_0x3e01('0x92'),_0x3e01('0x93'),'read'],'include':_0x123239}];_0x1c455a[_0x3e01('0xad')]({'model':db[_0x3e01('0x4f')],'as':_0x3e01('0xbe'),'attributes':['id',_0x3e01('0x2d')]});_0x1c455a['push']({'model':db[_0x3e01('0x84')],'as':_0x3e01('0xbf'),'attributes':['id',_0x3e01('0x55')]});return db['ChatInteraction'][_0x3e01('0x49')]({'where':{'id':_0x2d2213[_0x3e01('0x4c')]['id']},'include':_0x1c455a})[_0x3e01('0x17')](handleEntityNotFound(_0x58ffc9,null))[_0x3e01('0x17')](function(_0x5ef330){if(_0x5ef330){var _0x5ab1c7=_0x5ef330[_0x3e01('0xc0')]({'plain':!![]});fs[_0x3e01('0xc1')](_0x2a82ac);var _0x20b398={'channel':_0x3e01('0xc2'),'account':_0x5ab1c7[_0x3e01('0xbe')][_0x3e01('0x2d')],'agent':_0x5ab1c7['Owner']?_0x5ab1c7[_0x3e01('0xbf')]['fullname']:_0x3e01('0xc3'),'createdAt':moment(_0x5ab1c7[_0x3e01('0x90')])['format'](_0x3e01('0xaa'))[_0x3e01('0xb8')](),'closedAt':_0x5ab1c7[_0x3e01('0x71')]?moment(_0x5ab1c7[_0x3e01('0xc4')])[_0x3e01('0x7f')](_0x3e01('0xaa'))['toString']():'','disposition':_0x5ab1c7['disposition'],'chatInfo':{'browser':_0x5ab1c7[_0x3e01('0xc5')],'os':_0x5ab1c7[_0x3e01('0xc6')],'referer':_0x5ab1c7[_0x3e01('0xc7')],'customerIp':_0x5ab1c7[_0x3e01('0xc8')],'customerPort':_0x5ab1c7[_0x3e01('0xc9')]?_0x5ab1c7[_0x3e01('0xc9')]:_0x3e01('0xc3')},'messages':_(_0x5ab1c7[_0x3e01('0x83')])[_0x3e01('0xca')]()[_0x3e01('0xa7')]({'secret':![]})[_0x3e01('0x35')](function(_0x37fe2c){if(_0x37fe2c[_0x3e01('0x73')]){var _0x3af1a3=path['join'](_0x11482a,_0x37fe2c['Attachment'][_0x3e01('0x7a')]);if(fs['existsSync'](_0x3af1a3)){fs['createReadStream'](_0x3af1a3)[_0x3e01('0xcb')](fs[_0x3e01('0xcc')](path['join'](_0x2a82ac,_0x37fe2c[_0x3e01('0x73')][_0x3e01('0x7a')])));}}return{'date':moment(_0x37fe2c[_0x3e01('0x90')])[_0x3e01('0x7f')](_0x3e01('0xaa'))[_0x3e01('0xb8')](),'sender':_0x37fe2c[_0x3e01('0x92')]===_0x3e01('0x60')?_0x37fe2c[_0x3e01('0x84')]?_0x37fe2c[_0x3e01('0x84')][_0x3e01('0x55')]:_0x3e01('0x88'):_0x37fe2c[_0x3e01('0xcd')]['firstName']+(_0x37fe2c[_0x3e01('0xcd')][_0x3e01('0xbd')]?'\x20'+_0x37fe2c['Contact'][_0x3e01('0xbd')]:''),'body':_0x37fe2c[_0x3e01('0x73')]?_0x37fe2c['Attachment'][_0x3e01('0x7a')]:_0x37fe2c[_0x3e01('0x4b')],'direction':_0x37fe2c['direction']===_0x3e01('0x60')?'A':'C','secret':_0x37fe2c[_0x3e01('0x93')],'read':_0x37fe2c[_0x3e01('0xce')],'attachment':_0x37fe2c[_0x3e01('0x73')]};})[_0x3e01('0xcf')]()};return ejs[_0x3e01('0xd0')](path['join'](config[_0x3e01('0x77')],_0x3e01('0xb9'),_0x3e01('0xd1'),_0x3e01('0xd2')),{'interaction':_0x20b398})[_0x3e01('0x17')](function(_0x537efe){var _0x4c65da=path[_0x3e01('0x76')](_0x2a82ac,_0x3e01('0xd3')+_0x5ab1c7['id']+'-'+_0x33fc33+_0x3e01('0xd4'));var _0x4c9c1b={'path':_0x4c65da,'channel':'Chat','interactionId':_0x5ab1c7['id']};return pdf[_0x3e01('0xd5')](_0x537efe,_0x4c9c1b);})['then'](function(){return new Promise(function(_0x25a221,_0x1313d8){zipdir(_0x2a82ac,{'saveTo':_0x87b546},function(_0x392378,_0x4d398e){if(_0x392378)return _0x1313d8(_0x392378);return _0x25a221(_0x4d398e);});})['then'](function(){return new BPromise(function(_0x323e19,_0x93bbb4){rimraf(_0x2a82ac,function(_0x1e3869){if(_0x1e3869)_0x93bbb4(_0x1e3869);return _0x323e19();});});})[_0x3e01('0x17')](function(){return _0x58ffc9[_0x3e01('0x7b')](_0x87b546,_0x17cbd9,function(_0x50fcc6){if(_0x50fcc6){logger[_0x3e01('0x1c')](_0x3e01('0xd6'),_0x50fcc6);}else{fs['unlinkSync'](_0x87b546);}});});});}else{return _0x58ffc9[_0x3e01('0x22')](0xc8);}})[_0x3e01('0x3c')](handleError(_0x58ffc9,null));};
\ No newline at end of file
index 2185334..a25b8ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cd2=['then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','exports','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','getUsers'];(function(_0x58fd59,_0x4bf2f6){var _0x3fddde=function(_0x54070b){while(--_0x54070b){_0x58fd59['push'](_0x58fd59['shift']());}};_0x3fddde(++_0x4bf2f6);}(_0x2cd2,0x14d));var _0x22cd=function(_0x5cec03,_0x1df2f0){_0x5cec03=_0x5cec03-0x0;var _0x5258e1=_0x2cd2[_0x5cec03];return _0x5258e1;};'use strict';var EventEmitter=require('events');var ChatInteraction=require('../../mysqldb')['db']['ChatInteraction'];var ChatMessage=require(_0x22cd('0x0'))['db'][_0x22cd('0x1')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x22cd('0x2')](0x0);var events={'afterCreate':_0x22cd('0x3'),'afterUpdate':_0x22cd('0x4'),'afterDestroy':_0x22cd('0x5')};function emitEvent(_0x1349de){return function(_0x44bc4c,_0x1a6285,_0x47a65e){_0x44bc4c[_0x22cd('0x6')]({'attributes':['id'],'raw':!![]})[_0x22cd('0x7')](function(_0x333680){_0x44bc4c[_0x22cd('0x8')](_0x22cd('0x9'),_0x333680[_0x22cd('0xa')](function(_0x2657dc){return{'id':_0x2657dc['id']};}));return ChatMessage[_0x22cd('0xb')]({'where':{'ChatInteractionId':_0x44bc4c['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5b6b2e){_0x44bc4c[_0x22cd('0x8')](_0x22cd('0xc'),_0x5b6b2e[_0x22cd('0xd')]);ChatInteractionEvents[_0x22cd('0xe')](_0x1349de+':'+_0x44bc4c['id'],_0x44bc4c);ChatInteractionEvents[_0x22cd('0xe')](_0x1349de,_0x44bc4c);_0x47a65e(null);})[_0x22cd('0xf')](_0x47a65e(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatInteraction['hook'](e,emitEvent(event));}}module[_0x22cd('0x10')]=ChatInteractionEvents;
\ No newline at end of file
+var _0x21c6=['events','../../mysqldb','ChatInteraction','setMaxListeners','save','update','remove','then','setDataValue','Users','map','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports'];(function(_0x403fc7,_0x32931a){var _0x5d0827=function(_0x5ea698){while(--_0x5ea698){_0x403fc7['push'](_0x403fc7['shift']());}};_0x5d0827(++_0x32931a);}(_0x21c6,0x1b0));var _0x621c=function(_0x575f0e,_0x5d722e){_0x575f0e=_0x575f0e-0x0;var _0x495789=_0x21c6[_0x575f0e];return _0x495789;};'use strict';var EventEmitter=require(_0x621c('0x0'));var ChatInteraction=require(_0x621c('0x1'))['db'][_0x621c('0x2')];var ChatMessage=require('../../mysqldb')['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x621c('0x3')](0x0);var events={'afterCreate':_0x621c('0x4'),'afterUpdate':_0x621c('0x5'),'afterDestroy':_0x621c('0x6')};function emitEvent(_0x536dac){return function(_0x28279e,_0xb94a6f,_0xa34df2){_0x28279e['getUsers']({'attributes':['id'],'raw':!![]})[_0x621c('0x7')](function(_0x51e173){_0x28279e[_0x621c('0x8')](_0x621c('0x9'),_0x51e173[_0x621c('0xa')](function(_0x2f2265){return{'id':_0x2f2265['id']};}));return ChatMessage['findAll']({'where':{'ChatInteractionId':_0x28279e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x621c('0x7')](function(_0x7e743a){_0x28279e['setDataValue'](_0x621c('0xb'),_0x7e743a[_0x621c('0xc')]);ChatInteractionEvents['emit'](_0x536dac+':'+_0x28279e['id'],_0x28279e);ChatInteractionEvents[_0x621c('0xd')](_0x536dac,_0x28279e);_0xa34df2(null);})[_0x621c('0xe')](_0xa34df2(null));};}for(var e in events){if(events[_0x621c('0xf')](e)){var event=events[e];ChatInteraction[_0x621c('0x10')](e,emitEvent(event));}}module[_0x621c('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index fea654b..91f0747 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe728=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./chatInteraction.attributes','exports','ChatInteraction','chat_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','utf8mb4_unicode_ci','lodash'];(function(_0x8dc04d,_0xaa7559){var _0x2f5f28=function(_0xdd2d1d){while(--_0xdd2d1d){_0x8dc04d['push'](_0x8dc04d['shift']());}};_0x2f5f28(++_0xaa7559);}(_0xe728,0xd7));var _0x8e72=function(_0x19f4c8,_0x177330){_0x19f4c8=_0x19f4c8-0x0;var _0x2a12de=_0xe728[_0x19f4c8];return _0x2a12de;};'use strict';var _=require(_0x8e72('0x0'));var util=require(_0x8e72('0x1'));var logger=require(_0x8e72('0x2'))(_0x8e72('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8e72('0x4'));var fs=require('fs');var path=require(_0x8e72('0x5'));var rimraf=require(_0x8e72('0x6'));var config=require(_0x8e72('0x7'));var attributes=require(_0x8e72('0x8'));module[_0x8e72('0x9')]=function(_0x48831a,_0x54cadc){return _0x48831a['define'](_0x8e72('0xa'),attributes,{'tableName':_0x8e72('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2dac5b,_0x453e56,_0x254f14){if(_0x2dac5b[_0x8e72('0xc')]('closed')){_0x2dac5b[_0x8e72('0xd')]=moment()[_0x8e72('0xe')](_0x8e72('0xf'));}_0x254f14(null,_0x2dac5b);}},'charset':_0x8e72('0x10'),'collate':_0x8e72('0x11')});};
\ No newline at end of file
+var _0xa043=['request-promise','path','rimraf','./chatInteraction.attributes','exports','define','ChatInteraction','chat_interactions','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','utf8mb4','lodash','api','moment','bluebird'];(function(_0x21580e,_0x23eee3){var _0x927366=function(_0x366eda){while(--_0x366eda){_0x21580e['push'](_0x21580e['shift']());}};_0x927366(++_0x23eee3);}(_0xa043,0x6c));var _0x3a04=function(_0x353ba1,_0x1f437b){_0x353ba1=_0x353ba1-0x0;var _0x1c768f=_0xa043[_0x353ba1];return _0x1c768f;};'use strict';var _=require(_0x3a04('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3a04('0x1'));var moment=require(_0x3a04('0x2'));var BPromise=require(_0x3a04('0x3'));var rp=require(_0x3a04('0x4'));var fs=require('fs');var path=require(_0x3a04('0x5'));var rimraf=require(_0x3a04('0x6'));var config=require('../../config/environment');var attributes=require(_0x3a04('0x7'));module[_0x3a04('0x8')]=function(_0x2ba1b7,_0x3615de){return _0x2ba1b7[_0x3a04('0x9')](_0x3a04('0xa'),attributes,{'tableName':_0x3a04('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x16884d,_0x2861b6,_0x2c572d){if(_0x16884d['changed']('closed')){_0x16884d[_0x3a04('0xc')]=moment()[_0x3a04('0xd')](_0x3a04('0xe'));}_0x2c572d(null,_0x16884d);}},'charset':_0x3a04('0xf'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index c3d3a36..74a8dc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd526=['register','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','ChatInteraction','update','body','options','raw','where','attributes','limit','UpdateChatInteraction','AddTagsToChatInteraction','find','addTags','ids','omit','spread','AddTags','debug','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./chatInteraction.socket'];(function(_0x57bb55,_0x604eda){var _0x230133=function(_0x3a8cf2){while(--_0x3a8cf2){_0x57bb55['push'](_0x57bb55['shift']());}};_0x230133(++_0x604eda);}(_0xd526,0x10b));var _0x6d52=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xd526[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0x6d52('0x0'));var util=require(_0x6d52('0x1'));var moment=require('moment');var BPromise=require(_0x6d52('0x2'));var rs=require(_0x6d52('0x3'));var fs=require('fs');var Redis=require(_0x6d52('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d52('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6d52('0x6'));var jayson=require(_0x6d52('0x7'));var client=jayson[_0x6d52('0x8')][_0x6d52('0x9')]({'port':0x232a});config['redis']=_['defaults'](config[_0x6d52('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x6d52('0xb'))(new Redis(config[_0x6d52('0xa')]));require(_0x6d52('0xc'))[_0x6d52('0xd')](socket);function respondWithRpcPromise(_0x110996,_0x100c78,_0x505963){return new BPromise(function(_0x153b71,_0x5c8e78){return client['request'](_0x110996,_0x505963)[_0x6d52('0xe')](function(_0x5b31f6){logger[_0x6d52('0xf')](_0x6d52('0x10'),_0x100c78,'request\x20sent');logger['debug']('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x100c78,_0x6d52('0x11'),JSON[_0x6d52('0x12')](_0x5b31f6));if(_0x5b31f6['error']){if(_0x5b31f6[_0x6d52('0x13')][_0x6d52('0x14')]===0x1f4){logger['error'](_0x6d52('0x10'),_0x100c78,_0x5b31f6[_0x6d52('0x13')][_0x6d52('0x15')]);return _0x5c8e78(_0x5b31f6[_0x6d52('0x13')][_0x6d52('0x15')]);}logger[_0x6d52('0x13')](_0x6d52('0x10'),_0x100c78,_0x5b31f6[_0x6d52('0x13')][_0x6d52('0x15')]);return _0x153b71(_0x5b31f6['error']['message']);}else{logger['info'](_0x6d52('0x10'),_0x100c78,_0x6d52('0x11'));_0x153b71(_0x5b31f6['result']['message']);}})[_0x6d52('0x16')](function(_0x47e0d7){logger[_0x6d52('0x13')](_0x6d52('0x10'),_0x100c78,_0x47e0d7);_0x5c8e78(_0x47e0d7);});});}exports['UpdateChatInteraction']=function(_0x47c0e6){var _0x1dd6bf=this;return new Promise(function(_0x3de0ba,_0x19b6c1){return db[_0x6d52('0x17')][_0x6d52('0x18')](_0x47c0e6[_0x6d52('0x19')],{'raw':_0x47c0e6[_0x6d52('0x1a')]?_0x47c0e6[_0x6d52('0x1a')][_0x6d52('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x47c0e6[_0x6d52('0x1a')]?_0x47c0e6[_0x6d52('0x1a')][_0x6d52('0x1c')]||null:null,'attributes':_0x47c0e6[_0x6d52('0x1a')]?_0x47c0e6[_0x6d52('0x1a')][_0x6d52('0x1d')]||null:null,'limit':_0x47c0e6[_0x6d52('0x1a')]?_0x47c0e6[_0x6d52('0x1a')][_0x6d52('0x1e')]||null:null})[_0x6d52('0xe')](function(_0x4a0627){logger['info'](_0x6d52('0x1f'),_0x47c0e6);logger['debug'](_0x6d52('0x1f'),_0x47c0e6,JSON[_0x6d52('0x12')](_0x4a0627));_0x3de0ba(_0x4a0627);})[_0x6d52('0x16')](function(_0x386a48){logger[_0x6d52('0x13')]('UpdateChatInteraction',_0x386a48[_0x6d52('0x15')],_0x47c0e6);_0x19b6c1(_0x1dd6bf['error'](0x1f4,_0x386a48[_0x6d52('0x15')]));});});};exports[_0x6d52('0x20')]=function(_0x35631d){return new Promise(function(_0x507c60,_0x34d9cc){return db['ChatInteraction'][_0x6d52('0x21')]({'where':_0x35631d[_0x6d52('0x1a')]?_0x35631d[_0x6d52('0x1a')][_0x6d52('0x1c')]||null:null})['then'](function(_0x194ee1){if(_0x194ee1){return _0x194ee1[_0x6d52('0x22')](_0x35631d[_0x6d52('0x19')][_0x6d52('0x23')],_[_0x6d52('0x24')](_0x35631d['body'],['ids','id'])||{});}})[_0x6d52('0x25')](function(_0x1ed5ab){logger[_0x6d52('0xf')](_0x6d52('0x26'),_0x35631d);logger[_0x6d52('0x27')]('AddTags',_0x35631d,JSON[_0x6d52('0x12')](_0x1ed5ab));_0x507c60(_0x1ed5ab);})[_0x6d52('0x16')](function(_0x479cb1){logger[_0x6d52('0x13')]('AddTags',_0x479cb1[_0x6d52('0x15')],_0x35631d);_0x34d9cc(_this[_0x6d52('0x13')](0x1f4,_0x479cb1[_0x6d52('0x15')]));});});};
\ No newline at end of file
+var _0x917b=['stringify','error','code','message','request\x20sent','result','UpdateChatInteraction','ChatInteraction','update','body','options','raw','attributes','catch','AddTagsToChatInteraction','where','addTags','omit','ids','AddTags','lodash','util','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./chatInteraction.socket','register','then','info','ChatInteraction,\x20%s,\x20%s','debug'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x917b,0x190));var _0xb917=function(_0x55e1ce,_0x5b109d){_0x55e1ce=_0x55e1ce-0x0;var _0x29b8c4=_0x917b[_0x55e1ce];return _0x29b8c4;};'use strict';var _=require(_0xb917('0x0'));var util=require(_0xb917('0x1'));var moment=require('moment');var BPromise=require(_0xb917('0x2'));var rs=require(_0xb917('0x3'));var fs=require('fs');var Redis=require(_0xb917('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb917('0x5'));var config=require(_0xb917('0x6'));var jayson=require(_0xb917('0x7'));var client=jayson['client'][_0xb917('0x8')]({'port':0x232a});config[_0xb917('0x9')]=_[_0xb917('0xa')](config[_0xb917('0x9')],{'host':_0xb917('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb917('0x9')]));require(_0xb917('0xc'))[_0xb917('0xd')](socket);function respondWithRpcPromise(_0x474e28,_0x3b6102,_0x49cee){return new BPromise(function(_0x3e7e7d,_0x57eca0){return client['request'](_0x474e28,_0x49cee)[_0xb917('0xe')](function(_0x187a96){logger[_0xb917('0xf')](_0xb917('0x10'),_0x3b6102,'request\x20sent');logger[_0xb917('0x11')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x3b6102,'request\x20sent',JSON[_0xb917('0x12')](_0x187a96));if(_0x187a96[_0xb917('0x13')]){if(_0x187a96[_0xb917('0x13')][_0xb917('0x14')]===0x1f4){logger[_0xb917('0x13')](_0xb917('0x10'),_0x3b6102,_0x187a96[_0xb917('0x13')][_0xb917('0x15')]);return _0x57eca0(_0x187a96['error']['message']);}logger[_0xb917('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x3b6102,_0x187a96['error']['message']);return _0x3e7e7d(_0x187a96[_0xb917('0x13')][_0xb917('0x15')]);}else{logger[_0xb917('0xf')]('ChatInteraction,\x20%s,\x20%s',_0x3b6102,_0xb917('0x16'));_0x3e7e7d(_0x187a96[_0xb917('0x17')][_0xb917('0x15')]);}})['catch'](function(_0x5ba3e4){logger[_0xb917('0x13')](_0xb917('0x10'),_0x3b6102,_0x5ba3e4);_0x57eca0(_0x5ba3e4);});});}exports[_0xb917('0x18')]=function(_0x19603f){var _0x1cbb7b=this;return new Promise(function(_0x123d29,_0x11a167){return db[_0xb917('0x19')][_0xb917('0x1a')](_0x19603f[_0xb917('0x1b')],{'raw':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')][_0xb917('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x19603f['options']?_0x19603f[_0xb917('0x1c')]['where']||null:null,'attributes':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')][_0xb917('0x1e')]||null:null,'limit':_0x19603f[_0xb917('0x1c')]?_0x19603f[_0xb917('0x1c')]['limit']||null:null})[_0xb917('0xe')](function(_0x1a9d44){logger['info'](_0xb917('0x18'),_0x19603f);logger[_0xb917('0x11')](_0xb917('0x18'),_0x19603f,JSON[_0xb917('0x12')](_0x1a9d44));_0x123d29(_0x1a9d44);})[_0xb917('0x1f')](function(_0x55ba49){logger['error']('UpdateChatInteraction',_0x55ba49['message'],_0x19603f);_0x11a167(_0x1cbb7b['error'](0x1f4,_0x55ba49[_0xb917('0x15')]));});});};exports[_0xb917('0x20')]=function(_0x5c96e6){return new Promise(function(_0x2ac33d,_0x46fa8f){return db[_0xb917('0x19')]['find']({'where':_0x5c96e6[_0xb917('0x1c')]?_0x5c96e6['options'][_0xb917('0x21')]||null:null})[_0xb917('0xe')](function(_0x2cc538){if(_0x2cc538){return _0x2cc538[_0xb917('0x22')](_0x5c96e6[_0xb917('0x1b')]['ids'],_[_0xb917('0x23')](_0x5c96e6[_0xb917('0x1b')],[_0xb917('0x24'),'id'])||{});}})['spread'](function(_0x3488a6){logger[_0xb917('0xf')](_0xb917('0x25'),_0x5c96e6);logger[_0xb917('0x11')](_0xb917('0x25'),_0x5c96e6,JSON['stringify'](_0x3488a6));_0x2ac33d(_0x3488a6);})['catch'](function(_0x1884e5){logger['error'](_0xb917('0x25'),_0x1884e5[_0xb917('0x15')],_0x5c96e6);_0x46fa8f(_this[_0xb917('0x13')](0x1f4,_0x1884e5[_0xb917('0x15')]));});});};
\ No newline at end of file
index f8979e7..65876ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7631=['remove','emit','removeListener','chatInteraction:','./chatInteraction.events'];(function(_0xb092ec,_0x15c1d9){var _0x20e1e9=function(_0x184ea3){while(--_0x184ea3){_0xb092ec['push'](_0xb092ec['shift']());}};_0x20e1e9(++_0x15c1d9);}(_0x7631,0x108));var _0x1763=function(_0xd66c4f,_0x279897){_0xd66c4f=_0xd66c4f-0x0;var _0x1bca1d=_0x7631[_0xd66c4f];return _0x1bca1d;};'use strict';var ChatInteractionEvents=require(_0x1763('0x0'));var events=['save',_0x1763('0x1'),'update'];function createListener(_0x212e82,_0x2f67a9){return function(_0x33dbae){_0x2f67a9[_0x1763('0x2')](_0x212e82,_0x33dbae);};}function removeListener(_0x10a8a7,_0x14ea03){return function(){ChatInteractionEvents[_0x1763('0x3')](_0x10a8a7,_0x14ea03);};}exports['register']=function(_0x54a088){for(var _0x27c584=0x0,_0x419496=events['length'];_0x27c584<_0x419496;_0x27c584++){var _0x56a7bf=events[_0x27c584];var _0x3acf0a=createListener(_0x1763('0x4')+_0x56a7bf,_0x54a088);ChatInteractionEvents['on'](_0x56a7bf,_0x3acf0a);}};
\ No newline at end of file
+var _0xf766=['./chatInteraction.events','save','remove','update','emit','register','length','chatInteraction:'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf766,0x78));var _0x6f76=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0xf766[_0x3826ad];return _0x17b900;};'use strict';var ChatInteractionEvents=require(_0x6f76('0x0'));var events=[_0x6f76('0x1'),_0x6f76('0x2'),_0x6f76('0x3')];function createListener(_0x554133,_0x2c195f){return function(_0x938cf3){_0x2c195f[_0x6f76('0x4')](_0x554133,_0x938cf3);};}function removeListener(_0x1424c1,_0x41823e){return function(){ChatInteractionEvents['removeListener'](_0x1424c1,_0x41823e);};}exports[_0x6f76('0x5')]=function(_0x10a456){for(var _0x241997=0x0,_0x37b19a=events[_0x6f76('0x6')];_0x241997<_0x37b19a;_0x241997++){var _0x41cbf5=events[_0x241997];var _0x48132a=createListener(_0x6f76('0x7')+_0x41cbf5,_0x10a456);ChatInteractionEvents['on'](_0x41cbf5,_0x48132a);}};
\ No newline at end of file
index ceea4a2..9233934 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1baa=['tracked','chat','put','/:id/custom_update','customUpdate','/:id/abandon','abandon','/:id/close','delete','destroy','removeTags','exports','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','/:id/download','post','create','createVidaooSession','diskStorage','join','root','format','%s-%s','originalname','/:id/attachment_upload','single','file','attachmentUpload','addMessage','/:id/tags'];(function(_0x31b5b2,_0x5ab927){var _0x364f13=function(_0x163bd0){while(--_0x163bd0){_0x31b5b2['push'](_0x31b5b2['shift']());}};_0x364f13(++_0x5ab927);}(_0x1baa,0x114));var _0xa1ba=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x1baa[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0xa1ba('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa1ba('0x1'));var router=express[_0xa1ba('0x2')]();var fs_extra=require(_0xa1ba('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa1ba('0x4'));var config=require(_0xa1ba('0x5'));var controller=require('./chatInteraction.controller');router[_0xa1ba('0x6')]('/',auth[_0xa1ba('0x7')](),controller['index']);router[_0xa1ba('0x6')](_0xa1ba('0x8'),auth[_0xa1ba('0x7')](),controller['describe']);router[_0xa1ba('0x6')](_0xa1ba('0x9'),auth[_0xa1ba('0xa')](),controller[_0xa1ba('0xb')]);router[_0xa1ba('0x6')](_0xa1ba('0xc'),auth['isChatInteractionAuthorized'](),controller[_0xa1ba('0xd')]);router[_0xa1ba('0x6')](_0xa1ba('0xe'),auth[_0xa1ba('0x7')](),controller[_0xa1ba('0xf')]);router[_0xa1ba('0x6')]('/:id/my_messages',auth[_0xa1ba('0xa')](),controller['getMyMessages']);router[_0xa1ba('0x6')](_0xa1ba('0x10'),auth[_0xa1ba('0x7')](),controller['download']);router[_0xa1ba('0x11')]('/',auth[_0xa1ba('0x7')](),controller[_0xa1ba('0x12')]);router['post']('/:id/vidaoo',auth[_0xa1ba('0x7')](),controller[_0xa1ba('0x13')]);var upload=multer({'storage':multer[_0xa1ba('0x14')]({'destination':function(_0x3395d4,_0x292b0c,_0x39ecc3){_0x39ecc3(null,path[_0xa1ba('0x15')](config[_0xa1ba('0x16')],'server/files/attachments/'));},'filename':function(_0x59e02d,_0x1243c1,_0x45f899){_0x45f899(null,util[_0xa1ba('0x17')](_0xa1ba('0x18'),Date['now'](),_0x1243c1[_0xa1ba('0x19')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xa1ba('0x11')](_0xa1ba('0x1a'),upload[_0xa1ba('0x1b')](_0xa1ba('0x1c')),controller[_0xa1ba('0x1d')]);router[_0xa1ba('0x11')](_0xa1ba('0xe'),auth[_0xa1ba('0xa')](),controller[_0xa1ba('0x1e')]);router[_0xa1ba('0x11')](_0xa1ba('0x1f'),auth[_0xa1ba('0x7')](),interaction[_0xa1ba('0x20')](_0xa1ba('0x21'),'chatinteraction:addtags'),controller['addTags']);router['put'](_0xa1ba('0x9'),auth[_0xa1ba('0x7')](),interaction['tracked']('chat','chatinteraction:update'),controller['update']);router[_0xa1ba('0x22')](_0xa1ba('0x23'),controller[_0xa1ba('0x24')]);router[_0xa1ba('0x22')](_0xa1ba('0x25'),auth[_0xa1ba('0xa')](),controller[_0xa1ba('0x26')]);router[_0xa1ba('0x22')](_0xa1ba('0x27'),controller['close']);router[_0xa1ba('0x28')](_0xa1ba('0x9'),auth[_0xa1ba('0x7')](),interaction[_0xa1ba('0x20')](_0xa1ba('0x21'),'chatinteraction:destroy'),controller[_0xa1ba('0x29')]);router[_0xa1ba('0x28')](_0xa1ba('0x1f'),auth[_0xa1ba('0x7')](),controller[_0xa1ba('0x2a')]);module[_0xa1ba('0x2b')]=router;
\ No newline at end of file
+var _0xeebe=['customUpdate','/:id/abandon','/:id/close','chatinteraction:destroy','destroy','delete','removeTags','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','isAuthenticated','index','/describe','/:id','isChatInteractionAuthorized','/:id/attachment_download','/:id/messages','/:id/my_messages','getMyMessages','/:id/download','download','create','post','createVidaooSession','diskStorage','join','format','%s-%s','originalname','replace','/:id/attachment_upload','single','file','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','put','chatinteraction:update','/:id/custom_update'];(function(_0x45ad09,_0x521ab1){var _0x2084fd=function(_0x6fd212){while(--_0x6fd212){_0x45ad09['push'](_0x45ad09['shift']());}};_0x2084fd(++_0x521ab1);}(_0xeebe,0x128));var _0xeeeb=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xeebe[_0x4c12ec];return _0x3ae42c;};'use strict';var multer=require(_0xeeeb('0x0'));var util=require(_0xeeeb('0x1'));var path=require('path');var timeout=require(_0xeeeb('0x2'));var express=require(_0xeeeb('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xeeeb('0x4'));var interaction=require(_0xeeeb('0x5'));var config=require(_0xeeeb('0x6'));var controller=require(_0xeeeb('0x7'));router[_0xeeeb('0x8')]('/',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0xa')]);router[_0xeeeb('0x8')](_0xeeeb('0xb'),auth[_0xeeeb('0x9')](),controller['describe']);router[_0xeeeb('0x8')](_0xeeeb('0xc'),auth[_0xeeeb('0xd')](),controller['show']);router[_0xeeeb('0x8')](_0xeeeb('0xe'),auth[_0xeeeb('0xd')](),controller['attachmentDownload']);router[_0xeeeb('0x8')](_0xeeeb('0xf'),auth['isAuthenticated'](),controller['getMessages']);router[_0xeeeb('0x8')](_0xeeeb('0x10'),auth[_0xeeeb('0xd')](),controller[_0xeeeb('0x11')]);router['get'](_0xeeeb('0x12'),auth['isAuthenticated'](),controller[_0xeeeb('0x13')]);router['post']('/',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x14')]);router[_0xeeeb('0x15')]('/:id/vidaoo',auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x16')]);var upload=multer({'storage':multer[_0xeeeb('0x17')]({'destination':function(_0x1798ce,_0x56a18a,_0x4a5592){_0x4a5592(null,path[_0xeeeb('0x18')](config['root'],'server/files/attachments/'));},'filename':function(_0x1c247d,_0x3cd629,_0x3c8b6d){_0x3c8b6d(null,util[_0xeeeb('0x19')](_0xeeeb('0x1a'),Date['now'](),_0x3cd629[_0xeeeb('0x1b')][_0xeeeb('0x1c')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router['post'](_0xeeeb('0x1d'),upload[_0xeeeb('0x1e')](_0xeeeb('0x1f')),controller['attachmentUpload']);router[_0xeeeb('0x15')]('/:id/messages',auth[_0xeeeb('0xd')](),controller['addMessage']);router[_0xeeeb('0x15')](_0xeeeb('0x20'),auth[_0xeeeb('0x9')](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x23')),controller[_0xeeeb('0x24')]);router[_0xeeeb('0x25')](_0xeeeb('0xc'),auth['isAuthenticated'](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x26')),controller['update']);router[_0xeeeb('0x25')](_0xeeeb('0x27'),controller[_0xeeeb('0x28')]);router[_0xeeeb('0x25')](_0xeeeb('0x29'),auth['isChatInteractionAuthorized'](),controller['abandon']);router['put'](_0xeeeb('0x2a'),controller['close']);router['delete'](_0xeeeb('0xc'),auth[_0xeeeb('0x9')](),interaction[_0xeeeb('0x21')](_0xeeeb('0x22'),_0xeeeb('0x2b')),controller[_0xeeeb('0x2c')]);router[_0xeeeb('0x2d')](_0xeeeb('0x20'),auth[_0xeeeb('0x9')](),controller[_0xeeeb('0x2e')]);module[_0xeeeb('0x2f')]=router;
\ No newline at end of file
index 2a946ec..a0238d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa68=['exports','TEXT','medium','BOOLEAN','sequelize'];(function(_0x2fc3ae,_0x42da14){var _0x26175b=function(_0x57fec6){while(--_0x57fec6){_0x2fc3ae['push'](_0x2fc3ae['shift']());}};_0x26175b(++_0x42da14);}(_0xaa68,0x14e));var _0x8aa6=function(_0x5b6c8a,_0x23c1b0){_0x5b6c8a=_0x5b6c8a-0x0;var _0x56ce5e=_0xaa68[_0x5b6c8a];return _0x56ce5e;};'use strict';var Sequelize=require(_0x8aa6('0x0'));module[_0x8aa6('0x1')]={'body':{'type':Sequelize[_0x8aa6('0x2')](_0x8aa6('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x8aa6('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x3e43=['INTEGER','exports','TEXT','medium','BOOLEAN'];(function(_0x3a732d,_0x573e63){var _0x3248d6=function(_0x1d7c83){while(--_0x1d7c83){_0x3a732d['push'](_0x3a732d['shift']());}};_0x3248d6(++_0x573e63);}(_0x3e43,0x14b));var _0x33e4=function(_0x5c351c,_0x2046d8){_0x5c351c=_0x5c351c-0x0;var _0x26f3b3=_0x3e43[_0x5c351c];return _0x26f3b3;};'use strict';var Sequelize=require('sequelize');module[_0x33e4('0x0')]={'body':{'type':Sequelize[_0x33e4('0x1')](_0x33e4('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x33e4('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x33e4('0x4')]}};
\ No newline at end of file
index 987c47a..e686878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aaf=['options','then','includeAll','include','ChatInternalMessage','catch','params','keys','rawAttributes','find','create','body','describe','get','createdAt','lastMessage','lastMessageAt','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','fullname','role','userpic','online','lastLoginAt','allowmessenger','showWebBar','-online','VoiceQueue','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','messages','FromId','ToId','read','all','eml-format','rimraf','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','localhost','./chatInternalMessage.socket','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','sendStatus','stack','name','send','index','map','fieldName','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','merge','where','type','VIRTUAL','filter'];(function(_0x6622a2,_0x401a17){var _0x52252e=function(_0x339759){while(--_0x339759){_0x6622a2['push'](_0x6622a2['shift']());}};_0x52252e(++_0x401a17);}(_0x0aaf,0x9c));var _0xf0aa=function(_0x348b29,_0x3be5e9){_0x348b29=_0x348b29-0x0;var _0xc260c5=_0x0aaf[_0x348b29];return _0xc260c5;};'use strict';var emlformat=require(_0xf0aa('0x0'));var rimraf=require(_0xf0aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf0aa('0x2'));var Mustache=require(_0xf0aa('0x3'));var util=require(_0xf0aa('0x4'));var path=require('path');var sox=require(_0xf0aa('0x5'));var csv=require(_0xf0aa('0x6'));var ejs=require(_0xf0aa('0x7'));var fs=require('fs');var fs_extra=require(_0xf0aa('0x8'));var _=require(_0xf0aa('0x9'));var squel=require(_0xf0aa('0xa'));var crypto=require(_0xf0aa('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xf0aa('0x6'));var querystring=require('querystring');var Papa=require(_0xf0aa('0xc'));var Redis=require('ioredis');var authService=require(_0xf0aa('0xd'));var qs=require(_0xf0aa('0xe'));var as=require(_0xf0aa('0xf'));var hardwareService=require(_0xf0aa('0x10'));var logger=require(_0xf0aa('0x11'))(_0xf0aa('0x12'));var utils=require(_0xf0aa('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xf0aa('0x14'));var db=require('../../mysqldb')['db'];config[_0xf0aa('0x15')]=_[_0xf0aa('0x16')](config['redis'],{'host':_0xf0aa('0x17'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf0aa('0x18'))['register'](socket);function respondWithStatusCode(_0x2340c6,_0x15fd6e){_0x15fd6e=_0x15fd6e||0xcc;return function(_0x4f7800){if(_0x4f7800){return _0x2340c6['sendStatus'](_0x15fd6e);}return _0x2340c6[_0xf0aa('0x19')](_0x15fd6e)[_0xf0aa('0x1a')]();};}function respondWithResult(_0x19ff0f,_0x5f54e4){_0x5f54e4=_0x5f54e4||0xc8;return function(_0x5cf5d0){if(_0x5cf5d0){return _0x19ff0f[_0xf0aa('0x19')](_0x5f54e4)['json'](_0x5cf5d0);}};}function respondWithFilteredResult(_0x26b58f,_0xf6099){return function(_0x3477e4){if(_0x3477e4){var _0x5a4e39=typeof _0xf6099[_0xf0aa('0x1b')]===_0xf0aa('0x1c')&&typeof _0xf6099[_0xf0aa('0x1d')]===_0xf0aa('0x1c');var _0x31a0a9=_0x3477e4[_0xf0aa('0x1e')];var _0x3cd567=_0x5a4e39?0x0:_0xf6099[_0xf0aa('0x1b')];var _0x319694=_0x5a4e39?_0x3477e4[_0xf0aa('0x1e')]:_0xf6099['offset']+_0xf6099['limit'];var _0x20aaf4;if(_0x319694>=_0x31a0a9){_0x319694=_0x31a0a9;_0x20aaf4=0xc8;}else{_0x20aaf4=0xce;}_0x26b58f[_0xf0aa('0x19')](_0x20aaf4);return _0x26b58f[_0xf0aa('0x1f')](_0xf0aa('0x20'),_0x3cd567+'-'+_0x319694+'/'+_0x31a0a9)['json'](_0x3477e4);}return null;};}function patchUpdates(_0x418b5c){return function(_0x33d138){try{jsonpatch[_0xf0aa('0x21')](_0x33d138,_0x418b5c,!![]);}catch(_0x2f7aba){return BPromise[_0xf0aa('0x22')](_0x2f7aba);}return _0x33d138[_0xf0aa('0x23')]();};}function saveUpdates(_0x47d1db,_0x5afe9b){return function(_0x298c45){if(_0x298c45){return _0x298c45['update'](_0x47d1db)['then'](function(_0x325120){return _0x325120;});}return null;};}function removeEntity(_0x4d83d3,_0x3007c0){return function(_0x16766b){if(_0x16766b){return _0x16766b[_0xf0aa('0x24')]()['then'](function(){_0x4d83d3[_0xf0aa('0x19')](0xcc)[_0xf0aa('0x1a')]();});}};}function handleEntityNotFound(_0x5bd1fe,_0x26d674){return function(_0x513c69){if(!_0x513c69){_0x5bd1fe[_0xf0aa('0x25')](0x194);}return _0x513c69;};}function handleError(_0x43a571,_0x45a430){_0x45a430=_0x45a430||0x1f4;return function(_0x2ed480){logger['error'](_0x2ed480[_0xf0aa('0x26')]);if(_0x2ed480[_0xf0aa('0x27')]){delete _0x2ed480[_0xf0aa('0x27')];}_0x43a571['status'](_0x45a430)[_0xf0aa('0x28')](_0x2ed480);};}exports[_0xf0aa('0x29')]=function(_0x1927b1,_0x2e1c23){var _0x441b84={},_0x3973ac={},_0x583e72={'count':0x0,'rows':[]};var _0x2aa2fc=_[_0xf0aa('0x2a')](db['ChatInternalMessage']['rawAttributes'],function(_0x92ed8b){return{'name':_0x92ed8b[_0xf0aa('0x2b')],'type':_0x92ed8b['type']['key']};});_0x3973ac[_0xf0aa('0x2c')]=_[_0xf0aa('0x2a')](_0x2aa2fc,_0xf0aa('0x27'));_0x3973ac[_0xf0aa('0x2d')]=_['keys'](_0x1927b1[_0xf0aa('0x2d')]);_0x3973ac[_0xf0aa('0x2e')]=_[_0xf0aa('0x2f')](_0x3973ac['model'],_0x3973ac[_0xf0aa('0x2d')]);_0x441b84[_0xf0aa('0x30')]=_['intersection'](_0x3973ac['model'],qs['fields'](_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x31')]));_0x441b84[_0xf0aa('0x30')]=_0x441b84[_0xf0aa('0x30')][_0xf0aa('0x32')]?_0x441b84[_0xf0aa('0x30')]:_0x3973ac[_0xf0aa('0x2c')];if(!_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x33')](_0xf0aa('0x34'))){_0x441b84[_0xf0aa('0x1d')]=qs['limit'](_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x1d')]);_0x441b84['offset']=qs[_0xf0aa('0x1b')](_0x1927b1['query']['offset']);}_0x441b84['order']=qs[_0xf0aa('0x35')](_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x35')]);_0x441b84['where']=qs[_0xf0aa('0x2e')](_[_0xf0aa('0x36')](_0x1927b1['query'],_0x3973ac['filters']),_0x2aa2fc);if(_0x1927b1[_0xf0aa('0x2d')]['filter']){_0x441b84['where']=_[_0xf0aa('0x37')](_0x441b84[_0xf0aa('0x38')],{'$or':_[_0xf0aa('0x2a')](_0x2aa2fc,function(_0x2c7cf7){if(_0x2c7cf7[_0xf0aa('0x39')]!==_0xf0aa('0x3a')){var _0x2439aa={};_0x2439aa[_0x2c7cf7[_0xf0aa('0x27')]]={'$like':'%'+_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x3b')]+'%'};return _0x2439aa;}})});}_0x441b84=_[_0xf0aa('0x37')]({},_0x441b84,_0x1927b1[_0xf0aa('0x3c')]);var _0xb69886={'where':_0x441b84['where']};return db['ChatInternalMessage'][_0xf0aa('0x1e')](_0xb69886)[_0xf0aa('0x3d')](function(_0x243480){_0x583e72['count']=_0x243480;if(_0x1927b1[_0xf0aa('0x2d')][_0xf0aa('0x3e')]){_0x441b84[_0xf0aa('0x3f')]=[{'all':!![]}];}return db[_0xf0aa('0x40')]['findAll'](_0x441b84);})[_0xf0aa('0x3d')](function(_0x163172){_0x583e72['rows']=_0x163172;return _0x583e72;})['then'](respondWithFilteredResult(_0x2e1c23,_0x441b84))[_0xf0aa('0x41')](handleError(_0x2e1c23,null));};exports['show']=function(_0xafeb32,_0x5127c7){var _0x1d6d55={'raw':!![],'where':{'id':_0xafeb32[_0xf0aa('0x42')]['id']}},_0x493ff5={};_0x493ff5['model']=_[_0xf0aa('0x43')](db[_0xf0aa('0x40')][_0xf0aa('0x44')]);_0x493ff5['query']=_[_0xf0aa('0x43')](_0xafeb32[_0xf0aa('0x2d')]);_0x493ff5['filters']=_[_0xf0aa('0x2f')](_0x493ff5[_0xf0aa('0x2c')],_0x493ff5[_0xf0aa('0x2d')]);_0x1d6d55['attributes']=_[_0xf0aa('0x2f')](_0x493ff5[_0xf0aa('0x2c')],qs[_0xf0aa('0x31')](_0xafeb32['query'][_0xf0aa('0x31')]));_0x1d6d55[_0xf0aa('0x30')]=_0x1d6d55[_0xf0aa('0x30')][_0xf0aa('0x32')]?_0x1d6d55[_0xf0aa('0x30')]:_0x493ff5[_0xf0aa('0x2c')];if(_0xafeb32[_0xf0aa('0x2d')][_0xf0aa('0x3e')]){_0x1d6d55[_0xf0aa('0x3f')]=[{'all':!![]}];}_0x1d6d55=_[_0xf0aa('0x37')]({},_0x1d6d55,_0xafeb32[_0xf0aa('0x3c')]);return db['ChatInternalMessage'][_0xf0aa('0x45')](_0x1d6d55)[_0xf0aa('0x3d')](handleEntityNotFound(_0x5127c7,null))[_0xf0aa('0x3d')](respondWithResult(_0x5127c7,null))[_0xf0aa('0x41')](handleError(_0x5127c7,null));};exports[_0xf0aa('0x46')]=function(_0x133234,_0x15ee56){return db[_0xf0aa('0x40')]['create'](_0x133234[_0xf0aa('0x47')],{})[_0xf0aa('0x3d')](respondWithResult(_0x15ee56,0xc9))[_0xf0aa('0x41')](handleError(_0x15ee56,null));};exports['update']=function(_0x3fb41f,_0x294423){if(_0x3fb41f['body']['id']){delete _0x3fb41f['body']['id'];}return db[_0xf0aa('0x40')][_0xf0aa('0x45')]({'where':{'id':_0x3fb41f[_0xf0aa('0x42')]['id']}})[_0xf0aa('0x3d')](handleEntityNotFound(_0x294423,null))[_0xf0aa('0x3d')](saveUpdates(_0x3fb41f['body'],null))[_0xf0aa('0x3d')](respondWithResult(_0x294423,null))[_0xf0aa('0x41')](handleError(_0x294423,null));};exports['destroy']=function(_0x61331f,_0xedc262){return db['ChatInternalMessage'][_0xf0aa('0x45')]({'where':{'id':_0x61331f[_0xf0aa('0x42')]['id']}})['then'](handleEntityNotFound(_0xedc262,null))[_0xf0aa('0x3d')](removeEntity(_0xedc262,null))[_0xf0aa('0x41')](handleError(_0xedc262,null));};exports[_0xf0aa('0x48')]=function(_0x516459,_0xb12f8e){return db['ChatInternalMessage'][_0xf0aa('0x48')]()[_0xf0aa('0x3d')](respondWithResult(_0xb12f8e,null))[_0xf0aa('0x41')](handleError(_0xb12f8e,null));};function wrapUser(_0x1b8a19){return function(_0x9bc1e4){var _0x56c995=_0x1b8a19[_0xf0aa('0x49')]({'plain':!![]});_0x56c995['messages']=[];if(_0x9bc1e4){_0x56c995['lastMessageAt']=_0x9bc1e4[_0xf0aa('0x4a')];_0x56c995[_0xf0aa('0x4b')]=_0x9bc1e4;}else{_0x56c995[_0xf0aa('0x4c')]=moment(0x0)[_0xf0aa('0x4d')](_0xf0aa('0x4e'));_0x56c995[_0xf0aa('0x4b')]={};}return _0x56c995;};}exports[_0xf0aa('0x4f')]=function(_0x557080,_0x4489ac,_0x358838){var _0x1dabed=[];return db[_0xf0aa('0x50')][_0xf0aa('0x51')]({'where':{'role':[_0xf0aa('0x52'),_0xf0aa('0x53'),'user']},'attributes':['id',_0xf0aa('0x54'),_0xf0aa('0x27'),_0xf0aa('0x55'),_0xf0aa('0x56'),'internal',_0xf0aa('0x57'),_0xf0aa('0x58'),_0xf0aa('0x59'),_0xf0aa('0x5a')],'order':qs[_0xf0aa('0x35')](_0xf0aa('0x5b')),'include':[{'model':db[_0xf0aa('0x5c')],'as':'VoiceQueues','attributes':['id',_0xf0aa('0x27'),_0xf0aa('0x39')],'through':{'attributes':[]}}]})[_0xf0aa('0x3d')](function(_0x18837b){if(_0x18837b){var _0x18af02=_0x557080['user'][_0xf0aa('0x49')]({'plain':!![]});if(!_0x18af02)throw new Error(_0xf0aa('0x5d'));if(_0x18af02[_0xf0aa('0x55')]===_0xf0aa('0x5e')){return db[_0xf0aa('0x5f')]['find']({'where':{'name':_0xf0aa('0x60'),'userProfileId':_0x18af02[_0xf0aa('0x61')]},'raw':!![]})['then'](function(_0x729fa2){if(_0x729fa2){if(_0x729fa2[_0xf0aa('0x62')]===0x0){return db[_0xf0aa('0x63')]['findAll']({'where':{'sectionId':_0x729fa2['id']},'raw':!![]})[_0xf0aa('0x3d')](function(_0x1ee1f9){var _0x36d857=[];if(_[_0xf0aa('0x64')](_0x1ee1f9)){_0x36d857=_[_0xf0aa('0x3b')](_0x18837b,function(_0x2afa08){if(_0x2afa08[_0xf0aa('0x55')]!==_0xf0aa('0x52')){return _0x2afa08;}});return _0x36d857;}else{for(var _0x5a3212=0x0;_0x5a3212<_0x18837b[_0xf0aa('0x32')];_0x5a3212++){var _0x3401b4=_0x18837b[_0x5a3212];if(_0x3401b4[_0xf0aa('0x55')]===_0xf0aa('0x52')){var _0x4d21d7=_[_0xf0aa('0x45')](_0x1ee1f9,function(_0x58b0ef){return _0x58b0ef[_0xf0aa('0x65')]===_0x3401b4['id'];});if(_0x4d21d7)_0x36d857[_0xf0aa('0x66')](_0x3401b4);}else{_0x36d857[_0xf0aa('0x66')](_0x3401b4);}}return _0x36d857;}});}else{return _0x18837b;}}else{var _0x3c6dd9=_[_0xf0aa('0x3b')](_0x18837b,function(_0x59a833){if(_0x59a833['role']!==_0xf0aa('0x52')){return _0x59a833;}});return _0x3c6dd9;}});}else{return _0x18837b;}}})[_0xf0aa('0x3d')](function(_0x481219){var _0x4dbfd9=[];if(_0x481219){_0x1dabed=_0x481219;for(var _0x5eae4b=0x0;_0x5eae4b<_0x481219[_0xf0aa('0x32')];_0x5eae4b+=0x1){_0x1dabed[_0x5eae4b][_0xf0aa('0x67')]=[];_0x4dbfd9[_0xf0aa('0x66')](db[_0xf0aa('0x40')][_0xf0aa('0x45')]({'where':{'FromId':[_0x557080[_0xf0aa('0x5e')]['id'],_0x481219[_0x5eae4b]['id']],'ToId':[_0x557080[_0xf0aa('0x5e')]['id'],_0x481219[_0x5eae4b]['id']],'ChatGroupId':null},'attributes':['id',_0xf0aa('0x4a'),_0xf0aa('0x68'),_0xf0aa('0x69'),_0xf0aa('0x6a'),_0xf0aa('0x47')],'order':qs[_0xf0aa('0x35')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0xf0aa('0x3d')](wrapUser(_0x481219[_0x5eae4b])));}return BPromise[_0xf0aa('0x6b')](_0x4dbfd9);}return[];})['then'](function(_0x1f3608){return{'rows':_0x1f3608,'count':_0x1f3608[_0xf0aa('0x32')]};})[_0xf0aa('0x3d')](respondWithResult(_0x4489ac,null))[_0xf0aa('0x41')](handleError(_0x4489ac,null));};
\ No newline at end of file
+var _0x9156=['format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','admin','fullname','role','internal','lastLoginAt','allowmessenger','showWebBar','VoiceQueue','VoiceQueues','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','ToId','read','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','ChatInternalMessage','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','sort','where','pick','merge','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','create','body','find','describe','messages','createdAt','lastMessage'];(function(_0x4de7f0,_0x434442){var _0x208374=function(_0x4b9a28){while(--_0x4b9a28){_0x4de7f0['push'](_0x4de7f0['shift']());}};_0x208374(++_0x434442);}(_0x9156,0x8d));var _0x6915=function(_0x1fd899,_0x38ce5a){_0x1fd899=_0x1fd899-0x0;var _0x1d2212=_0x9156[_0x1fd899];return _0x1d2212;};'use strict';var emlformat=require(_0x6915('0x0'));var rimraf=require(_0x6915('0x1'));var zipdir=require(_0x6915('0x2'));var jsonpatch=require(_0x6915('0x3'));var rp=require(_0x6915('0x4'));var moment=require(_0x6915('0x5'));var BPromise=require(_0x6915('0x6'));var Mustache=require(_0x6915('0x7'));var util=require(_0x6915('0x8'));var path=require(_0x6915('0x9'));var sox=require(_0x6915('0xa'));var csv=require(_0x6915('0xb'));var ejs=require(_0x6915('0xc'));var fs=require('fs');var fs_extra=require(_0x6915('0xd'));var _=require(_0x6915('0xe'));var squel=require(_0x6915('0xf'));var crypto=require(_0x6915('0x10'));var jsforce=require(_0x6915('0x11'));var deskjs=require(_0x6915('0x12'));var toCsv=require(_0x6915('0xb'));var querystring=require(_0x6915('0x13'));var Papa=require('papaparse');var Redis=require(_0x6915('0x14'));var authService=require(_0x6915('0x15'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6915('0x16'));var logger=require(_0x6915('0x17'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x6915('0x18'));var db=require(_0x6915('0x19'))['db'];config[_0x6915('0x1a')]=_[_0x6915('0x1b')](config[_0x6915('0x1a')],{'host':_0x6915('0x1c'),'port':0x18eb});var socket=require(_0x6915('0x1d'))(new Redis(config[_0x6915('0x1a')]));require(_0x6915('0x1e'))[_0x6915('0x1f')](socket);function respondWithStatusCode(_0x218c66,_0x4febcf){_0x4febcf=_0x4febcf||0xcc;return function(_0x5db09c){if(_0x5db09c){return _0x218c66[_0x6915('0x20')](_0x4febcf);}return _0x218c66[_0x6915('0x21')](_0x4febcf)[_0x6915('0x22')]();};}function respondWithResult(_0x521349,_0x527e0d){_0x527e0d=_0x527e0d||0xc8;return function(_0x40c856){if(_0x40c856){return _0x521349[_0x6915('0x21')](_0x527e0d)[_0x6915('0x23')](_0x40c856);}};}function respondWithFilteredResult(_0x5204e4,_0x4a9f74){return function(_0x273d2a){if(_0x273d2a){var _0x2ed7e8=typeof _0x4a9f74[_0x6915('0x24')]===_0x6915('0x25')&&typeof _0x4a9f74['limit']===_0x6915('0x25');var _0x184e46=_0x273d2a[_0x6915('0x26')];var _0x2714e3=_0x2ed7e8?0x0:_0x4a9f74[_0x6915('0x24')];var _0x3846fc=_0x2ed7e8?_0x273d2a[_0x6915('0x26')]:_0x4a9f74[_0x6915('0x24')]+_0x4a9f74['limit'];var _0x592d5e;if(_0x3846fc>=_0x184e46){_0x3846fc=_0x184e46;_0x592d5e=0xc8;}else{_0x592d5e=0xce;}_0x5204e4['status'](_0x592d5e);return _0x5204e4[_0x6915('0x27')](_0x6915('0x28'),_0x2714e3+'-'+_0x3846fc+'/'+_0x184e46)['json'](_0x273d2a);}return null;};}function patchUpdates(_0x4701b5){return function(_0x2824c7){try{jsonpatch[_0x6915('0x29')](_0x2824c7,_0x4701b5,!![]);}catch(_0x1fcdd2){return BPromise[_0x6915('0x2a')](_0x1fcdd2);}return _0x2824c7[_0x6915('0x2b')]();};}function saveUpdates(_0x1c2dbd,_0x12820d){return function(_0x17460c){if(_0x17460c){return _0x17460c[_0x6915('0x2c')](_0x1c2dbd)[_0x6915('0x2d')](function(_0x3dd05d){return _0x3dd05d;});}return null;};}function removeEntity(_0x2818e6,_0x3ce4ac){return function(_0xdbcd64){if(_0xdbcd64){return _0xdbcd64[_0x6915('0x2e')]()['then'](function(){_0x2818e6[_0x6915('0x21')](0xcc)[_0x6915('0x22')]();});}};}function handleEntityNotFound(_0x56510b,_0x3c7b8b){return function(_0x46311c){if(!_0x46311c){_0x56510b[_0x6915('0x20')](0x194);}return _0x46311c;};}function handleError(_0x1fc484,_0xa7d853){_0xa7d853=_0xa7d853||0x1f4;return function(_0x382df0){logger['error'](_0x382df0[_0x6915('0x2f')]);if(_0x382df0[_0x6915('0x30')]){delete _0x382df0[_0x6915('0x30')];}_0x1fc484[_0x6915('0x21')](_0xa7d853)[_0x6915('0x31')](_0x382df0);};}exports[_0x6915('0x32')]=function(_0x5f285a,_0x4bcdea){var _0x181b90={},_0x166968={},_0x2a276a={'count':0x0,'rows':[]};var _0x2632c1=_[_0x6915('0x33')](db[_0x6915('0x34')]['rawAttributes'],function(_0x54429b){return{'name':_0x54429b['fieldName'],'type':_0x54429b[_0x6915('0x35')]['key']};});_0x166968[_0x6915('0x36')]=_[_0x6915('0x33')](_0x2632c1,'name');_0x166968[_0x6915('0x37')]=_[_0x6915('0x38')](_0x5f285a['query']);_0x166968[_0x6915('0x39')]=_[_0x6915('0x3a')](_0x166968['model'],_0x166968[_0x6915('0x37')]);_0x181b90[_0x6915('0x3b')]=_[_0x6915('0x3a')](_0x166968['model'],qs['fields'](_0x5f285a[_0x6915('0x37')][_0x6915('0x3c')]));_0x181b90['attributes']=_0x181b90[_0x6915('0x3b')][_0x6915('0x3d')]?_0x181b90['attributes']:_0x166968['model'];if(!_0x5f285a['query'][_0x6915('0x3e')](_0x6915('0x3f'))){_0x181b90[_0x6915('0x40')]=qs[_0x6915('0x40')](_0x5f285a[_0x6915('0x37')][_0x6915('0x40')]);_0x181b90['offset']=qs[_0x6915('0x24')](_0x5f285a[_0x6915('0x37')][_0x6915('0x24')]);}_0x181b90['order']=qs[_0x6915('0x41')](_0x5f285a['query'][_0x6915('0x41')]);_0x181b90[_0x6915('0x42')]=qs[_0x6915('0x39')](_[_0x6915('0x43')](_0x5f285a['query'],_0x166968[_0x6915('0x39')]),_0x2632c1);if(_0x5f285a[_0x6915('0x37')]['filter']){_0x181b90['where']=_[_0x6915('0x44')](_0x181b90['where'],{'$or':_[_0x6915('0x33')](_0x2632c1,function(_0x4c1a47){if(_0x4c1a47[_0x6915('0x35')]!=='VIRTUAL'){var _0x4b0ef9={};_0x4b0ef9[_0x4c1a47[_0x6915('0x30')]]={'$like':'%'+_0x5f285a[_0x6915('0x37')][_0x6915('0x45')]+'%'};return _0x4b0ef9;}})});}_0x181b90=_['merge']({},_0x181b90,_0x5f285a[_0x6915('0x46')]);var _0x263cef={'where':_0x181b90['where']};return db[_0x6915('0x34')][_0x6915('0x26')](_0x263cef)[_0x6915('0x2d')](function(_0x1dcbd2){_0x2a276a[_0x6915('0x26')]=_0x1dcbd2;if(_0x5f285a[_0x6915('0x37')][_0x6915('0x47')]){_0x181b90[_0x6915('0x48')]=[{'all':!![]}];}return db[_0x6915('0x34')]['findAll'](_0x181b90);})[_0x6915('0x2d')](function(_0x512d78){_0x2a276a[_0x6915('0x49')]=_0x512d78;return _0x2a276a;})['then'](respondWithFilteredResult(_0x4bcdea,_0x181b90))[_0x6915('0x4a')](handleError(_0x4bcdea,null));};exports[_0x6915('0x4b')]=function(_0x5025ea,_0x1f6722){var _0xaa8006={'raw':!![],'where':{'id':_0x5025ea[_0x6915('0x4c')]['id']}},_0x21a035={};_0x21a035[_0x6915('0x36')]=_[_0x6915('0x38')](db[_0x6915('0x34')][_0x6915('0x4d')]);_0x21a035[_0x6915('0x37')]=_[_0x6915('0x38')](_0x5025ea['query']);_0x21a035[_0x6915('0x39')]=_[_0x6915('0x3a')](_0x21a035[_0x6915('0x36')],_0x21a035[_0x6915('0x37')]);_0xaa8006['attributes']=_[_0x6915('0x3a')](_0x21a035[_0x6915('0x36')],qs[_0x6915('0x3c')](_0x5025ea[_0x6915('0x37')][_0x6915('0x3c')]));_0xaa8006[_0x6915('0x3b')]=_0xaa8006[_0x6915('0x3b')][_0x6915('0x3d')]?_0xaa8006[_0x6915('0x3b')]:_0x21a035[_0x6915('0x36')];if(_0x5025ea[_0x6915('0x37')][_0x6915('0x47')]){_0xaa8006[_0x6915('0x48')]=[{'all':!![]}];}_0xaa8006=_[_0x6915('0x44')]({},_0xaa8006,_0x5025ea[_0x6915('0x46')]);return db[_0x6915('0x34')]['find'](_0xaa8006)['then'](handleEntityNotFound(_0x1f6722,null))[_0x6915('0x2d')](respondWithResult(_0x1f6722,null))['catch'](handleError(_0x1f6722,null));};exports['create']=function(_0x30d5e7,_0x2ca2e7){return db['ChatInternalMessage'][_0x6915('0x4e')](_0x30d5e7[_0x6915('0x4f')],{})['then'](respondWithResult(_0x2ca2e7,0xc9))[_0x6915('0x4a')](handleError(_0x2ca2e7,null));};exports[_0x6915('0x2c')]=function(_0xbe1c62,_0x4790b4){if(_0xbe1c62[_0x6915('0x4f')]['id']){delete _0xbe1c62['body']['id'];}return db[_0x6915('0x34')][_0x6915('0x50')]({'where':{'id':_0xbe1c62[_0x6915('0x4c')]['id']}})[_0x6915('0x2d')](handleEntityNotFound(_0x4790b4,null))[_0x6915('0x2d')](saveUpdates(_0xbe1c62['body'],null))['then'](respondWithResult(_0x4790b4,null))[_0x6915('0x4a')](handleError(_0x4790b4,null));};exports[_0x6915('0x2e')]=function(_0x2c9b99,_0x15db32){return db['ChatInternalMessage'][_0x6915('0x50')]({'where':{'id':_0x2c9b99['params']['id']}})[_0x6915('0x2d')](handleEntityNotFound(_0x15db32,null))[_0x6915('0x2d')](removeEntity(_0x15db32,null))[_0x6915('0x4a')](handleError(_0x15db32,null));};exports['describe']=function(_0x357e7e,_0x39944d){return db[_0x6915('0x34')][_0x6915('0x51')]()[_0x6915('0x2d')](respondWithResult(_0x39944d,null))['catch'](handleError(_0x39944d,null));};function wrapUser(_0x4c4be9){return function(_0x52d8f6){var _0x58f88f=_0x4c4be9['get']({'plain':!![]});_0x58f88f[_0x6915('0x52')]=[];if(_0x52d8f6){_0x58f88f['lastMessageAt']=_0x52d8f6[_0x6915('0x53')];_0x58f88f[_0x6915('0x54')]=_0x52d8f6;}else{_0x58f88f['lastMessageAt']=moment(0x0)[_0x6915('0x55')](_0x6915('0x56'));_0x58f88f[_0x6915('0x54')]={};}return _0x58f88f;};}exports[_0x6915('0x57')]=function(_0x4009b6,_0xf66bea,_0x42b277){var _0x218365=[];return db[_0x6915('0x58')][_0x6915('0x59')]({'where':{'role':['agent',_0x6915('0x5a'),'user']},'attributes':['id',_0x6915('0x5b'),_0x6915('0x30'),_0x6915('0x5c'),'userpic',_0x6915('0x5d'),'online',_0x6915('0x5e'),_0x6915('0x5f'),_0x6915('0x60')],'order':qs['sort']('-online'),'include':[{'model':db[_0x6915('0x61')],'as':_0x6915('0x62'),'attributes':['id',_0x6915('0x30'),'type'],'through':{'attributes':[]}}]})[_0x6915('0x2d')](function(_0x38ad1f){if(_0x38ad1f){var _0x5cd634=_0x4009b6[_0x6915('0x63')][_0x6915('0x64')]({'plain':!![]});if(!_0x5cd634)throw new Error(_0x6915('0x65'));if(_0x5cd634[_0x6915('0x5c')]===_0x6915('0x63')){return db[_0x6915('0x66')]['find']({'where':{'name':_0x6915('0x67'),'userProfileId':_0x5cd634['userProfileId']},'raw':!![]})[_0x6915('0x2d')](function(_0x61de31){if(_0x61de31){if(_0x61de31[_0x6915('0x68')]===0x0){return db[_0x6915('0x69')][_0x6915('0x59')]({'where':{'sectionId':_0x61de31['id']},'raw':!![]})[_0x6915('0x2d')](function(_0x426cae){var _0x383f80=[];if(_[_0x6915('0x6a')](_0x426cae)){_0x383f80=_[_0x6915('0x45')](_0x38ad1f,function(_0x51dc41){if(_0x51dc41[_0x6915('0x5c')]!==_0x6915('0x6b')){return _0x51dc41;}});return _0x383f80;}else{for(var _0x4846d5=0x0;_0x4846d5<_0x38ad1f[_0x6915('0x3d')];_0x4846d5++){var _0x33eb20=_0x38ad1f[_0x4846d5];if(_0x33eb20[_0x6915('0x5c')]==='agent'){var _0x400a59=_['find'](_0x426cae,function(_0x114b06){return _0x114b06[_0x6915('0x6c')]===_0x33eb20['id'];});if(_0x400a59)_0x383f80[_0x6915('0x6d')](_0x33eb20);}else{_0x383f80['push'](_0x33eb20);}}return _0x383f80;}});}else{return _0x38ad1f;}}else{var _0x2f75df=_[_0x6915('0x45')](_0x38ad1f,function(_0x48f6b5){if(_0x48f6b5[_0x6915('0x5c')]!==_0x6915('0x6b')){return _0x48f6b5;}});return _0x2f75df;}});}else{return _0x38ad1f;}}})['then'](function(_0x2fc3cf){var _0x4944f1=[];if(_0x2fc3cf){_0x218365=_0x2fc3cf;for(var _0x2b0c54=0x0;_0x2b0c54<_0x2fc3cf[_0x6915('0x3d')];_0x2b0c54+=0x1){_0x218365[_0x2b0c54][_0x6915('0x52')]=[];_0x4944f1[_0x6915('0x6d')](db[_0x6915('0x34')][_0x6915('0x50')]({'where':{'FromId':[_0x4009b6[_0x6915('0x63')]['id'],_0x2fc3cf[_0x2b0c54]['id']],'ToId':[_0x4009b6['user']['id'],_0x2fc3cf[_0x2b0c54]['id']],'ChatGroupId':null},'attributes':['id',_0x6915('0x53'),_0x6915('0x6e'),_0x6915('0x6f'),_0x6915('0x70'),_0x6915('0x4f')],'order':qs[_0x6915('0x41')]('-createdAt'),'limit':0x1,'offset':0x0,'raw':!![]})[_0x6915('0x2d')](wrapUser(_0x2fc3cf[_0x2b0c54])));}return BPromise['all'](_0x4944f1);}return[];})['then'](function(_0x547d6e){return{'rows':_0x547d6e,'count':_0x547d6e[_0x6915('0x3d')]};})[_0x6915('0x2d')](respondWithResult(_0xf66bea,null))['catch'](handleError(_0xf66bea,null));};
\ No newline at end of file
index 6ab3f8b..30326fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x315f=['update','emit','hasOwnProperty','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x315f,0x1f4));var _0xf315=function(_0x4629ed,_0x59ef85){_0x4629ed=_0x4629ed-0x0;var _0x52ca04=_0x315f[_0x4629ed];return _0x52ca04;};'use strict';var EventEmitter=require(_0xf315('0x0'));var ChatInternalMessage=require(_0xf315('0x1'))['db'][_0xf315('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xf315('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xf315('0x4'),'afterDestroy':'remove'};function emitEvent(_0x151127){return function(_0x2e228d,_0x554fa6,_0x43e4bf){ChatInternalMessageEvents[_0xf315('0x5')](_0x151127+':'+_0x2e228d['id'],_0x2e228d);ChatInternalMessageEvents['emit'](_0x151127,_0x2e228d);_0x43e4bf(null);};}for(var e in events){if(events[_0xf315('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module[_0xf315('0x7')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x1d82=['remove','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatInternalMessage','setMaxListeners','save','update'];(function(_0x5dc8c3,_0x22eee9){var _0x456a93=function(_0x12a63d){while(--_0x12a63d){_0x5dc8c3['push'](_0x5dc8c3['shift']());}};_0x456a93(++_0x22eee9);}(_0x1d82,0xe1));var _0x21d8=function(_0x2d5ee2,_0x25e3ca){_0x2d5ee2=_0x2d5ee2-0x0;var _0x394ca4=_0x1d82[_0x2d5ee2];return _0x394ca4;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require(_0x21d8('0x0'))['db'][_0x21d8('0x1')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x21d8('0x2')](0x0);var events={'afterCreate':_0x21d8('0x3'),'afterUpdate':_0x21d8('0x4'),'afterDestroy':_0x21d8('0x5')};function emitEvent(_0x11953d){return function(_0x43a508,_0x50630a,_0x4d50e6){ChatInternalMessageEvents[_0x21d8('0x6')](_0x11953d+':'+_0x43a508['id'],_0x43a508);ChatInternalMessageEvents[_0x21d8('0x6')](_0x11953d,_0x43a508);_0x4d50e6(null);};}for(var e in events){if(events[_0x21d8('0x7')](e)){var event=events[e];ChatInternalMessage[_0x21d8('0x8')](e,emitEvent(event));}}module[_0x21d8('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
index 43af0ed..d762964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa21c=['lodash','util','../../config/logger','api','request-promise','path','rimraf','./chatInternalMessage.attributes','exports','define','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci'];(function(_0x131498,_0x48dcb0){var _0x2ecf6d=function(_0x2a1d44){while(--_0x2a1d44){_0x131498['push'](_0x131498['shift']());}};_0x2ecf6d(++_0x48dcb0);}(_0xa21c,0x11e));var _0xca21=function(_0x4e4fc6,_0x2b80e6){_0x4e4fc6=_0x4e4fc6-0x0;var _0x2873a3=_0xa21c[_0x4e4fc6];return _0x2873a3;};'use strict';var _=require(_0xca21('0x0'));var util=require(_0xca21('0x1'));var logger=require(_0xca21('0x2'))(_0xca21('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xca21('0x4'));var fs=require('fs');var path=require(_0xca21('0x5'));var rimraf=require(_0xca21('0x6'));var config=require('../../config/environment');var attributes=require(_0xca21('0x7'));module[_0xca21('0x8')]=function(_0x6bb9a4,_0x2932c5){return _0x6bb9a4[_0xca21('0x9')](_0xca21('0xa'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xca21('0xb'),'collate':_0xca21('0xc')});};
\ No newline at end of file
+var _0x101e=['path','rimraf','../../config/environment','./chatInternalMessage.attributes','ChatInternalMessage','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','request-promise'];(function(_0x34d52b,_0x410457){var _0x380c14=function(_0x5ad444){while(--_0x5ad444){_0x34d52b['push'](_0x34d52b['shift']());}};_0x380c14(++_0x410457);}(_0x101e,0x13f));var _0xe101=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x101e[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0xe101('0x0'));var util=require(_0xe101('0x1'));var logger=require(_0xe101('0x2'))(_0xe101('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xe101('0x4'));var fs=require('fs');var path=require(_0xe101('0x5'));var rimraf=require(_0xe101('0x6'));var config=require(_0xe101('0x7'));var attributes=require(_0xe101('0x8'));module['exports']=function(_0x4df00c,_0x2bb9d0){return _0x4df00c['define'](_0xe101('0x9'),attributes,{'tableName':'chat_internal_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe101('0xa'),'collate':_0xe101('0xb')});};
\ No newline at end of file
index 81c7d2a..811a405 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb51e=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','request','then','info','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','ChatInternalMessage,\x20%s,\x20%s','message','result','catch','lodash','util','randomstring','ioredis','../../mysqldb'];(function(_0x310926,_0x226e01){var _0x205927=function(_0x330d81){while(--_0x330d81){_0x310926['push'](_0x310926['shift']());}};_0x205927(++_0x226e01);}(_0xb51e,0x12f));var _0xeb51=function(_0x535621,_0x2c1d14){_0x535621=_0x535621-0x0;var _0x150f77=_0xb51e[_0x535621];return _0x150f77;};'use strict';var _=require(_0xeb51('0x0'));var util=require(_0xeb51('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xeb51('0x2'));var fs=require('fs');var Redis=require(_0xeb51('0x3'));var db=require(_0xeb51('0x4'))['db'];var utils=require(_0xeb51('0x5'));var logger=require(_0xeb51('0x6'))(_0xeb51('0x7'));var config=require(_0xeb51('0x8'));var jayson=require(_0xeb51('0x9'));var client=jayson[_0xeb51('0xa')]['http']({'port':0x232a});config[_0xeb51('0xb')]=_['defaults'](config[_0xeb51('0xb')],{'host':_0xeb51('0xc'),'port':0x18eb});var socket=require(_0xeb51('0xd'))(new Redis(config[_0xeb51('0xb')]));require(_0xeb51('0xe'))['register'](socket);function respondWithRpcPromise(_0x2df2aa,_0x195590,_0x25b76d){return new BPromise(function(_0x5b07e8,_0x3e3616){return client[_0xeb51('0xf')](_0x2df2aa,_0x25b76d)[_0xeb51('0x10')](function(_0x109062){logger[_0xeb51('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x195590,'request\x20sent');logger[_0xeb51('0x12')](_0xeb51('0x13'),_0x195590,_0xeb51('0x14'),JSON[_0xeb51('0x15')](_0x109062));if(_0x109062[_0xeb51('0x16')]){if(_0x109062[_0xeb51('0x16')][_0xeb51('0x17')]===0x1f4){logger[_0xeb51('0x16')](_0xeb51('0x18'),_0x195590,_0x109062[_0xeb51('0x16')]['message']);return _0x3e3616(_0x109062[_0xeb51('0x16')][_0xeb51('0x19')]);}logger[_0xeb51('0x16')](_0xeb51('0x18'),_0x195590,_0x109062[_0xeb51('0x16')][_0xeb51('0x19')]);return _0x5b07e8(_0x109062[_0xeb51('0x16')][_0xeb51('0x19')]);}else{logger[_0xeb51('0x11')]('ChatInternalMessage,\x20%s,\x20%s',_0x195590,_0xeb51('0x14'));_0x5b07e8(_0x109062[_0xeb51('0x1a')][_0xeb51('0x19')]);}})[_0xeb51('0x1b')](function(_0x3f237b){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x195590,_0x3f237b);_0x3e3616(_0x3f237b);});});}
\ No newline at end of file
+var _0x3d11=['request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','jayson/promise','defaults','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','request','then','info','ChatInternalMessage,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3d11,0x105));var _0x13d1=function(_0x5c56bd,_0x5c8369){_0x5c56bd=_0x5c56bd-0x0;var _0x56d6c6=_0x3d11[_0x5c56bd];return _0x56d6c6;};'use strict';var _=require(_0x13d1('0x0'));var util=require(_0x13d1('0x1'));var moment=require(_0x13d1('0x2'));var BPromise=require(_0x13d1('0x3'));var rs=require(_0x13d1('0x4'));var fs=require('fs');var Redis=require(_0x13d1('0x5'));var db=require(_0x13d1('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x13d1('0x7'));var config=require('../../config/environment');var jayson=require(_0x13d1('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x13d1('0x9')](config[_0x13d1('0xa')],{'host':_0x13d1('0xb'),'port':0x18eb});var socket=require(_0x13d1('0xc'))(new Redis(config[_0x13d1('0xa')]));require(_0x13d1('0xd'))[_0x13d1('0xe')](socket);function respondWithRpcPromise(_0xc215b7,_0x54f1dd,_0x2289b4){return new BPromise(function(_0x22924f,_0x2120d4){return client[_0x13d1('0xf')](_0xc215b7,_0x2289b4)[_0x13d1('0x10')](function(_0x58c54b){logger[_0x13d1('0x11')](_0x13d1('0x12'),_0x54f1dd,_0x13d1('0x13'));logger[_0x13d1('0x14')](_0x13d1('0x15'),_0x54f1dd,'request\x20sent',JSON[_0x13d1('0x16')](_0x58c54b));if(_0x58c54b['error']){if(_0x58c54b[_0x13d1('0x17')][_0x13d1('0x18')]===0x1f4){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x54f1dd,_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);return _0x2120d4(_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);}logger[_0x13d1('0x17')](_0x13d1('0x12'),_0x54f1dd,_0x58c54b[_0x13d1('0x17')][_0x13d1('0x19')]);return _0x22924f(_0x58c54b['error'][_0x13d1('0x19')]);}else{logger['info']('ChatInternalMessage,\x20%s,\x20%s',_0x54f1dd,_0x13d1('0x13'));_0x22924f(_0x58c54b[_0x13d1('0x1a')]['message']);}})[_0x13d1('0x1b')](function(_0x5d7196){logger[_0x13d1('0x17')](_0x13d1('0x12'),_0x54f1dd,_0x5d7196);_0x2120d4(_0x5d7196);});});}
\ No newline at end of file
index 3bb17f4..1c0d23a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x871c=['remove','update','emit','removeListener','register','length','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x496afa,_0xa3ca10){var _0x358938=function(_0x52dcf0){while(--_0x52dcf0){_0x496afa['push'](_0x496afa['shift']());}};_0x358938(++_0xa3ca10);}(_0x871c,0x187));var _0xc871=function(_0x58fcbd,_0x19be1c){_0x58fcbd=_0x58fcbd-0x0;var _0x12b8fa=_0x871c[_0x58fcbd];return _0x12b8fa;};'use strict';var ChatInternalMessageEvents=require(_0xc871('0x0'));var events=['save',_0xc871('0x1'),_0xc871('0x2')];function createListener(_0x44f1f5,_0x19e43a){return function(_0x128ef8){_0x19e43a[_0xc871('0x3')](_0x44f1f5,_0x128ef8);};}function removeListener(_0x17e055,_0x58f7c0){return function(){ChatInternalMessageEvents[_0xc871('0x4')](_0x17e055,_0x58f7c0);};}exports[_0xc871('0x5')]=function(_0x170947){for(var _0x50e139=0x0,_0xf5cbeb=events[_0xc871('0x6')];_0x50e139<_0xf5cbeb;_0x50e139++){var _0x5de0c7=events[_0x50e139];var _0x30c94c=createListener(_0xc871('0x7')+_0x5de0c7,_0x170947);ChatInternalMessageEvents['on'](_0x5de0c7,_0x30c94c);}};
\ No newline at end of file
+var _0x0099=['./chatInternalMessage.events','remove','update','removeListener','register','length','chatInternalMessage:'];(function(_0x4a6ce8,_0x55347e){var _0xa8624=function(_0x5ef885){while(--_0x5ef885){_0x4a6ce8['push'](_0x4a6ce8['shift']());}};_0xa8624(++_0x55347e);}(_0x0099,0x18f));var _0x9009=function(_0xffd1b5,_0x1ede18){_0xffd1b5=_0xffd1b5-0x0;var _0x3176d6=_0x0099[_0xffd1b5];return _0x3176d6;};'use strict';var ChatInternalMessageEvents=require(_0x9009('0x0'));var events=['save',_0x9009('0x1'),_0x9009('0x2')];function createListener(_0x4d2107,_0x54d110){return function(_0x4d3fbc){_0x54d110['emit'](_0x4d2107,_0x4d3fbc);};}function removeListener(_0x111895,_0x3f8e05){return function(){ChatInternalMessageEvents[_0x9009('0x3')](_0x111895,_0x3f8e05);};}exports[_0x9009('0x4')]=function(_0x4c5fe4){for(var _0x3d3af2=0x0,_0x599ac4=events[_0x9009('0x5')];_0x3d3af2<_0x599ac4;_0x3d3af2++){var _0x5865a4=events[_0x3d3af2];var _0xa2757b=createListener(_0x9009('0x6')+_0x5865a4,_0x4c5fe4);ChatInternalMessageEvents['on'](_0x5865a4,_0xa2757b);}};
\ No newline at end of file
index 6d11122..aa9ecf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf07a=['/:id','show','post','create','put','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../config/environment','get','index','/describe','isAuthenticated','describe','/users'];(function(_0x2f1c82,_0x32c8df){var _0x28be01=function(_0x5bf674){while(--_0x5bf674){_0x2f1c82['push'](_0x2f1c82['shift']());}};_0x28be01(++_0x32c8df);}(_0xf07a,0x86));var _0xaf07=function(_0x54f978,_0x3a6b7e){_0x54f978=_0x54f978-0x0;var _0x5d40b3=_0xf07a[_0x54f978];return _0x5d40b3;};'use strict';var multer=require(_0xaf07('0x0'));var util=require(_0xaf07('0x1'));var path=require('path');var timeout=require(_0xaf07('0x2'));var express=require(_0xaf07('0x3'));var router=express[_0xaf07('0x4')]();var fs_extra=require(_0xaf07('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xaf07('0x6'));var controller=require('./chatInternalMessage.controller');router[_0xaf07('0x7')]('/',auth['isAuthenticated'](),controller[_0xaf07('0x8')]);router['get'](_0xaf07('0x9'),auth[_0xaf07('0xa')](),controller[_0xaf07('0xb')]);router[_0xaf07('0x7')](_0xaf07('0xc'),auth[_0xaf07('0xa')](),controller['getUsers']);router[_0xaf07('0x7')](_0xaf07('0xd'),auth[_0xaf07('0xa')](),controller[_0xaf07('0xe')]);router[_0xaf07('0xf')]('/',auth['isAuthenticated'](),controller[_0xaf07('0x10')]);router[_0xaf07('0x11')](_0xaf07('0xd'),controller[_0xaf07('0x12')]);router[_0xaf07('0x13')](_0xaf07('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xaf07('0x14')]=router;
\ No newline at end of file
+var _0x90d1=['multer','path','fs-extra','../../config/environment','./chatInternalMessage.controller','get','isAuthenticated','index','/describe','/users','/:id','show','post','create','delete','destroy','exports'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x90d1,0xff));var _0x190d=function(_0x4a6953,_0x226a21){_0x4a6953=_0x4a6953-0x0;var _0x4c1f52=_0x90d1[_0x4a6953];return _0x4c1f52;};'use strict';var multer=require(_0x190d('0x0'));var util=require('util');var path=require(_0x190d('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x190d('0x2'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x190d('0x3'));var controller=require(_0x190d('0x4'));router[_0x190d('0x5')]('/',auth[_0x190d('0x6')](),controller[_0x190d('0x7')]);router['get'](_0x190d('0x8'),auth[_0x190d('0x6')](),controller['describe']);router[_0x190d('0x5')](_0x190d('0x9'),auth[_0x190d('0x6')](),controller['getUsers']);router[_0x190d('0x5')](_0x190d('0xa'),auth[_0x190d('0x6')](),controller[_0x190d('0xb')]);router[_0x190d('0xc')]('/',auth[_0x190d('0x6')](),controller[_0x190d('0xd')]);router['put'](_0x190d('0xa'),controller['update']);router[_0x190d('0xe')](_0x190d('0xa'),auth[_0x190d('0x6')](),controller[_0x190d('0xf')]);module[_0x190d('0x10')]=router;
\ No newline at end of file
index 65a5875..aeedca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x235b=['out','STRING','TEXT','sequelize','medium','BOOLEAN','ENUM'];(function(_0x47f9ae,_0x17ac6e){var _0x2f6688=function(_0x47e43b){while(--_0x47e43b){_0x47f9ae['push'](_0x47f9ae['shift']());}};_0x2f6688(++_0x17ac6e);}(_0x235b,0x1ed));var _0xb235=function(_0x50f9dc,_0x604357){_0x50f9dc=_0x50f9dc-0x0;var _0x538279=_0x235b[_0x50f9dc];return _0x538279;};'use strict';var Sequelize=require(_0xb235('0x0'));module['exports']={'body':{'type':Sequelize['TEXT'](_0xb235('0x1')),'allowNull':![]},'read':{'type':Sequelize[_0xb235('0x2')],'defaultValue':![]},'secret':{'type':Sequelize[_0xb235('0x2')],'defaultValue':![]},'direction':{'type':Sequelize[_0xb235('0x3')]('in',_0xb235('0x4')),'defaultValue':_0xb235('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xb235('0x5')]},'providerResponse':{'type':Sequelize[_0xb235('0x6')]}};
\ No newline at end of file
+var _0x349e=['ENUM','out','STRING','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x4ed205,_0x149f2b){var _0x119603=function(_0x17091b){while(--_0x17091b){_0x4ed205['push'](_0x4ed205['shift']());}};_0x119603(++_0x149f2b);}(_0x349e,0xcb));var _0xe349=function(_0x302916,_0x5d7e60){_0x302916=_0x302916-0x0;var _0x48c086=_0x349e[_0x302916];return _0x48c086;};'use strict';var Sequelize=require(_0xe349('0x0'));module[_0xe349('0x1')]={'body':{'type':Sequelize[_0xe349('0x2')](_0xe349('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xe349('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe349('0x5')]('in',_0xe349('0x6')),'defaultValue':_0xe349('0x6'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0xe349('0x7')]},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index c3af249..6dfbf82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa283=['describe','chat-interactions','chat','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','get','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','email','internal','interface','channel','event','accept','EventManager','acceptmessage','parse','formData','RejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SIP/%s','motionChannel','rejectmessage','rimraf','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','jayson/promise','client','http','then','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','stack','name','index','ChatMessage','rawAttributes','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','show','keys','includeAll','find','create','body','params'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0xa283,0x1a8));var _0x3a28=function(_0x110cd3,_0x35cb58){_0x110cd3=_0x110cd3-0x0;var _0x120f5e=_0xa283[_0x110cd3];return _0x120f5e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3a28('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x3a28('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3a28('0x2'));var util=require(_0x3a28('0x3'));var path=require(_0x3a28('0x4'));var sox=require(_0x3a28('0x5'));var csv=require(_0x3a28('0x6'));var ejs=require(_0x3a28('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3a28('0x8'));var squel=require(_0x3a28('0x9'));var crypto=require(_0x3a28('0xa'));var jsforce=require(_0x3a28('0xb'));var deskjs=require(_0x3a28('0xc'));var toCsv=require(_0x3a28('0x6'));var querystring=require('querystring');var Papa=require(_0x3a28('0xd'));var Redis=require(_0x3a28('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x3a28('0xf'));var hardwareService=require(_0x3a28('0x10'));var logger=require(_0x3a28('0x11'))('api');var utils=require(_0x3a28('0x12'));var config=require(_0x3a28('0x13'));var licenseUtil=require(_0x3a28('0x14'));var db=require(_0x3a28('0x15'))['db'];config[_0x3a28('0x16')]=_[_0x3a28('0x17')](config[_0x3a28('0x16')],{'host':_0x3a28('0x18'),'port':0x18eb});var socket=require(_0x3a28('0x19'))(new Redis(config[_0x3a28('0x16')]));require(_0x3a28('0x1a'))[_0x3a28('0x1b')](socket);var jayson=require(_0x3a28('0x1c'));var client=jayson[_0x3a28('0x1d')][_0x3a28('0x1e')]({'port':0x232c});var client9002=jayson['client'][_0x3a28('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x19fbdc,_0x39a21e,_0x9c8abf,_0x52c241){return new BPromise(function(_0x36a89b,_0x5abf93){var _0x4134a8=_0x52c241||client;return _0x4134a8['request'](_0x19fbdc,_0x9c8abf)[_0x3a28('0x1f')](function(_0x28d1ef){logger['info'](_0x3a28('0x20'),_0x39a21e,_0x3a28('0x21'));logger[_0x3a28('0x22')](_0x3a28('0x23'),_0x39a21e,'request\x20sent',JSON[_0x3a28('0x24')](_0x28d1ef));if(_0x28d1ef[_0x3a28('0x25')]){if(_0x28d1ef[_0x3a28('0x25')][_0x3a28('0x26')]===0x1f4){logger[_0x3a28('0x25')]('ChatMessage,\x20%s,\x20%s',_0x39a21e,_0x28d1ef[_0x3a28('0x25')][_0x3a28('0x27')]);return _0x5abf93(_0x28d1ef['error'][_0x3a28('0x27')]);}logger['error'](_0x3a28('0x20'),_0x39a21e,_0x28d1ef[_0x3a28('0x25')][_0x3a28('0x27')]);return _0x36a89b(_0x28d1ef[_0x3a28('0x25')]['message']);}else{logger[_0x3a28('0x28')](_0x3a28('0x20'),_0x39a21e,'request\x20sent');_0x36a89b(_0x28d1ef[_0x3a28('0x29')][_0x3a28('0x27')]);}})[_0x3a28('0x2a')](function(_0x103a9b){logger['error'](_0x3a28('0x20'),_0x39a21e,_0x103a9b);_0x5abf93(_0x103a9b);});});}function respondWithStatusCode(_0x5c0d35,_0x338f36){_0x338f36=_0x338f36||0xcc;return function(_0x36de30){if(_0x36de30){return _0x5c0d35[_0x3a28('0x2b')](_0x338f36);}return _0x5c0d35[_0x3a28('0x2c')](_0x338f36)[_0x3a28('0x2d')]();};}function respondWithResult(_0x4d3fb3,_0x208e23){_0x208e23=_0x208e23||0xc8;return function(_0x28ce3d){if(_0x28ce3d){return _0x4d3fb3[_0x3a28('0x2c')](_0x208e23)[_0x3a28('0x2e')](_0x28ce3d);}};}function respondWithFilteredResult(_0x326dfd,_0x1347c9){return function(_0x9669c8){if(_0x9669c8){var _0xeb6a1f=typeof _0x1347c9[_0x3a28('0x2f')]==='undefined'&&typeof _0x1347c9['limit']===_0x3a28('0x30');var _0x4aabc=_0x9669c8[_0x3a28('0x31')];var _0x26d78e=_0xeb6a1f?0x0:_0x1347c9[_0x3a28('0x2f')];var _0x51fc72=_0xeb6a1f?_0x9669c8[_0x3a28('0x31')]:_0x1347c9[_0x3a28('0x2f')]+_0x1347c9[_0x3a28('0x32')];var _0x58db79;if(_0x51fc72>=_0x4aabc){_0x51fc72=_0x4aabc;_0x58db79=0xc8;}else{_0x58db79=0xce;}_0x326dfd[_0x3a28('0x2c')](_0x58db79);return _0x326dfd[_0x3a28('0x33')](_0x3a28('0x34'),_0x26d78e+'-'+_0x51fc72+'/'+_0x4aabc)['json'](_0x9669c8);}return null;};}function patchUpdates(_0x181158){return function(_0x5d0eae){try{jsonpatch[_0x3a28('0x35')](_0x5d0eae,_0x181158,!![]);}catch(_0x596878){return BPromise[_0x3a28('0x36')](_0x596878);}return _0x5d0eae['save']();};}function saveUpdates(_0x48d2dc,_0x1832ae){return function(_0x218868){if(_0x218868){return _0x218868[_0x3a28('0x37')](_0x48d2dc)[_0x3a28('0x1f')](function(_0x4b6638){return _0x4b6638;});}return null;};}function removeEntity(_0x4a9201,_0x5a4c24){return function(_0x4c818a){if(_0x4c818a){return _0x4c818a[_0x3a28('0x38')]()['then'](function(){_0x4a9201[_0x3a28('0x2c')](0xcc)[_0x3a28('0x2d')]();});}};}function handleEntityNotFound(_0x2dfc54,_0x2cdad5){return function(_0x47926f){if(!_0x47926f){_0x2dfc54[_0x3a28('0x2b')](0x194);}return _0x47926f;};}function handleError(_0x31a1f4,_0x59de78){_0x59de78=_0x59de78||0x1f4;return function(_0x4df896){logger['error'](_0x4df896[_0x3a28('0x39')]);if(_0x4df896[_0x3a28('0x3a')]){delete _0x4df896[_0x3a28('0x3a')];}_0x31a1f4['status'](_0x59de78)['send'](_0x4df896);};}exports[_0x3a28('0x3b')]=function(_0x4945f0,_0x1edb93){var _0x5a6f96={},_0x158538={},_0x51a408={'count':0x0,'rows':[]};var _0x3d2d39=_['map'](db[_0x3a28('0x3c')][_0x3a28('0x3d')],function(_0x2c6c6d){return{'name':_0x2c6c6d['fieldName'],'type':_0x2c6c6d[_0x3a28('0x3e')][_0x3a28('0x3f')]};});_0x158538[_0x3a28('0x40')]=_['map'](_0x3d2d39,_0x3a28('0x3a'));_0x158538['query']=_['keys'](_0x4945f0[_0x3a28('0x41')]);_0x158538[_0x3a28('0x42')]=_[_0x3a28('0x43')](_0x158538[_0x3a28('0x40')],_0x158538[_0x3a28('0x41')]);_0x5a6f96['attributes']=_[_0x3a28('0x43')](_0x158538[_0x3a28('0x40')],qs[_0x3a28('0x44')](_0x4945f0[_0x3a28('0x41')][_0x3a28('0x44')]));_0x5a6f96[_0x3a28('0x45')]=_0x5a6f96[_0x3a28('0x45')][_0x3a28('0x46')]?_0x5a6f96[_0x3a28('0x45')]:_0x158538['model'];if(!_0x4945f0['query'][_0x3a28('0x47')](_0x3a28('0x48'))){_0x5a6f96[_0x3a28('0x32')]=qs[_0x3a28('0x32')](_0x4945f0['query'][_0x3a28('0x32')]);_0x5a6f96[_0x3a28('0x2f')]=qs['offset'](_0x4945f0[_0x3a28('0x41')][_0x3a28('0x2f')]);}_0x5a6f96[_0x3a28('0x49')]=qs[_0x3a28('0x4a')](_0x4945f0[_0x3a28('0x41')]['sort']);_0x5a6f96[_0x3a28('0x4b')]=qs[_0x3a28('0x42')](_['pick'](_0x4945f0[_0x3a28('0x41')],_0x158538[_0x3a28('0x42')]),_0x3d2d39);if(_0x4945f0[_0x3a28('0x41')][_0x3a28('0x4c')]){_0x5a6f96[_0x3a28('0x4b')]=_['merge'](_0x5a6f96[_0x3a28('0x4b')],{'$or':_['map'](_0x3d2d39,function(_0x1fdaec){if(_0x1fdaec['type']!=='VIRTUAL'){var _0x44c692={};_0x44c692[_0x1fdaec[_0x3a28('0x3a')]]={'$like':'%'+_0x4945f0['query']['filter']+'%'};return _0x44c692;}})});}_0x5a6f96=_[_0x3a28('0x4d')]({},_0x5a6f96,_0x4945f0[_0x3a28('0x4e')]);var _0x4bdb4b={'where':_0x5a6f96[_0x3a28('0x4b')]};return db[_0x3a28('0x3c')]['count'](_0x4bdb4b)[_0x3a28('0x1f')](function(_0x303752){_0x51a408[_0x3a28('0x31')]=_0x303752;if(_0x4945f0[_0x3a28('0x41')]['includeAll']){_0x5a6f96[_0x3a28('0x4f')]=[{'all':!![]}];}return db[_0x3a28('0x3c')][_0x3a28('0x50')](_0x5a6f96);})[_0x3a28('0x1f')](function(_0x4b02f3){_0x51a408['rows']=_0x4b02f3;return _0x51a408;})['then'](respondWithFilteredResult(_0x1edb93,_0x5a6f96))[_0x3a28('0x2a')](handleError(_0x1edb93,null));};exports[_0x3a28('0x51')]=function(_0x1e4c0a,_0x15598e){var _0x4aa515={'raw':!![],'where':{'id':_0x1e4c0a['params']['id']}},_0x25c856={};_0x25c856[_0x3a28('0x40')]=_[_0x3a28('0x52')](db[_0x3a28('0x3c')]['rawAttributes']);_0x25c856[_0x3a28('0x41')]=_[_0x3a28('0x52')](_0x1e4c0a[_0x3a28('0x41')]);_0x25c856['filters']=_[_0x3a28('0x43')](_0x25c856['model'],_0x25c856[_0x3a28('0x41')]);_0x4aa515['attributes']=_[_0x3a28('0x43')](_0x25c856[_0x3a28('0x40')],qs[_0x3a28('0x44')](_0x1e4c0a[_0x3a28('0x41')][_0x3a28('0x44')]));_0x4aa515[_0x3a28('0x45')]=_0x4aa515[_0x3a28('0x45')][_0x3a28('0x46')]?_0x4aa515['attributes']:_0x25c856[_0x3a28('0x40')];if(_0x1e4c0a[_0x3a28('0x41')][_0x3a28('0x53')]){_0x4aa515[_0x3a28('0x4f')]=[{'all':!![]}];}_0x4aa515=_['merge']({},_0x4aa515,_0x1e4c0a[_0x3a28('0x4e')]);return db[_0x3a28('0x3c')][_0x3a28('0x54')](_0x4aa515)[_0x3a28('0x1f')](handleEntityNotFound(_0x15598e,null))[_0x3a28('0x1f')](respondWithResult(_0x15598e,null))['catch'](handleError(_0x15598e,null));};exports[_0x3a28('0x55')]=function(_0x2f5cb7,_0x2f0710){return db[_0x3a28('0x3c')]['create'](_0x2f5cb7['body'],{})['then'](respondWithResult(_0x2f0710,0xc9))['catch'](handleError(_0x2f0710,null));};exports['update']=function(_0x40d2e2,_0x2b8e66){if(_0x40d2e2[_0x3a28('0x56')]['id']){delete _0x40d2e2[_0x3a28('0x56')]['id'];}return db[_0x3a28('0x3c')][_0x3a28('0x54')]({'where':{'id':_0x40d2e2['params']['id']}})['then'](handleEntityNotFound(_0x2b8e66,null))['then'](saveUpdates(_0x40d2e2['body'],null))[_0x3a28('0x1f')](respondWithResult(_0x2b8e66,null))[_0x3a28('0x2a')](handleError(_0x2b8e66,null));};exports['destroy']=function(_0x9256bb,_0x12b8eb){return db[_0x3a28('0x3c')][_0x3a28('0x54')]({'where':{'id':_0x9256bb[_0x3a28('0x57')]['id']}})[_0x3a28('0x1f')](handleEntityNotFound(_0x12b8eb,null))[_0x3a28('0x1f')](removeEntity(_0x12b8eb,null))[_0x3a28('0x2a')](handleError(_0x12b8eb,null));};exports[_0x3a28('0x58')]=function(_0x230f31,_0x345349){return db['ChatMessage'][_0x3a28('0x58')]()[_0x3a28('0x1f')](respondWithResult(_0x345349,null))[_0x3a28('0x2a')](handleError(_0x345349,null));};var interaction_log=require(_0x3a28('0x11'))(_0x3a28('0x59'));exports['accept']=function(_0x34be7d,_0x28ef32,_0x1abf28){var _0x46e2ba={'agent':{},'channel':_0x3a28('0x5a')};if(_0x34be7d[_0x3a28('0x56')]['id']){delete _0x34be7d[_0x3a28('0x56')]['id'];}_0x34be7d['body']['read']=!![];_0x34be7d[_0x3a28('0x56')]['readAt']=moment()[_0x3a28('0x5b')](_0x3a28('0x5c'));_0x34be7d[_0x3a28('0x56')][_0x3a28('0x5d')]=_0x34be7d[_0x3a28('0x56')][_0x3a28('0x5d')]||_0x34be7d[_0x3a28('0x5e')]['id'];_0x46e2ba[_0x3a28('0x5f')]['id']=_0x34be7d[_0x3a28('0x56')][_0x3a28('0x5d')];return db[_0x3a28('0x3c')]['find']({'where':{'id':_0x34be7d[_0x3a28('0x57')]['id'],'UserId':null}})[_0x3a28('0x1f')](handleEntityNotFound(_0x28ef32,null))[_0x3a28('0x1f')](saveUpdates(_0x34be7d[_0x3a28('0x56')],null))[_0x3a28('0x1f')](function(_0x1038d2){if(_0x1038d2){_0x46e2ba[_0x3a28('0x27')]=_0x1038d2['get']({'plain':!![]});return db[_0x3a28('0x60')][_0x3a28('0x54')]({'where':{'id':_0x1038d2[_0x3a28('0x61')]}});}return null;})[_0x3a28('0x1f')](handleEntityNotFound(_0x28ef32,null))[_0x3a28('0x1f')](function(_0xf0fc06){if(_0xf0fc06){return _0xf0fc06['update']({'UserId':_0x34be7d[_0x3a28('0x56')][_0x3a28('0x5d')],'read1stAt':_[_0x3a28('0x62')](_0xf0fc06[_0x3a28('0x63')])?moment()[_0x3a28('0x5b')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x98819b){if(_0x98819b){_0x46e2ba[_0x3a28('0x64')]=_0x98819b[_0x3a28('0x65')]({'plain':!![]});interaction_log[_0x3a28('0x28')]('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x34be7d[_0x3a28('0x5e')]['id'],_0x34be7d[_0x3a28('0x5e')]['name'],_0x34be7d[_0x3a28('0x5e')][_0x3a28('0x66')],_0x46e2ba[_0x3a28('0x64')]['id'],_0x34be7d[_0x3a28('0x56')]?JSON[_0x3a28('0x24')](_0x34be7d[_0x3a28('0x56')]):_0x3a28('0x67'));return respondWithRpcPromise(_0x3a28('0x68'),_0x3a28('0x69'),_0x46e2ba);}return null;})['then'](function(_0x355b1b){var _0x3501b7='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x355b1b[_0x3a28('0x27')][_0x3a28('0x6a')];return db[_0x3a28('0x6b')][_0x3a28('0x41')](_0x3501b7,{'type':db[_0x3a28('0x6c')][_0x3a28('0x6d')]['SELECT'],'raw':!![]})[_0x3a28('0x1f')](function(_0x225032){return _0x225032;});})[_0x3a28('0x1f')](function(_0x2940e8){if(_0x2940e8){_0x46e2ba[_0x3a28('0x27')][_0x3a28('0x6e')]=_0x2940e8[0x0];if(!_0x34be7d['body'][_0x3a28('0x5d')])return;return db[_0x3a28('0x6f')][_0x3a28('0x54')]({'where':{'id':_0x34be7d[_0x3a28('0x56')][_0x3a28('0x5d')],'role':_0x3a28('0x5f')},'attributes':['id','name',_0x3a28('0x70'),_0x3a28('0x71'),_0x3a28('0x72')],'raw':!![]});}return null;})['then'](function(_0x375347){if(!_0x375347)return null;_0x46e2ba[_0x3a28('0x27')][_0x3a28('0x5f')]=_0x375347;return _0x46e2ba;})[_0x3a28('0x1f')](function(_0x201a8b){if(_0x201a8b){if(_0x34be7d[_0x3a28('0x56')]['manual']){_0x46e2ba[_0x3a28('0x27')][_0x3a28('0x73')]=util[_0x3a28('0x5b')]('SIP/%s',_0x34be7d['user'][_0x3a28('0x3a')]);_0x46e2ba['message'][_0x3a28('0x74')]=_0x46e2ba[_0x3a28('0x74')];_0x46e2ba[_0x3a28('0x27')]['motionChannel']=_0x46e2ba[_0x3a28('0x74')];_0x46e2ba[_0x3a28('0x27')][_0x3a28('0x75')]=_0x3a28('0x76');return respondWithRpcPromise(_0x3a28('0x77'),_0x3a28('0x77'),{'event':_0x3a28('0x78'),'message':_[_0x3a28('0x4d')](_0x46e2ba[_0x3a28('0x27')],JSON[_0x3a28('0x79')](_0x46e2ba['interaction'][_0x3a28('0x7a')]))},client9002)[_0x3a28('0x1f')](function(){return _0x46e2ba;});}return _0x46e2ba;}return null;})[_0x3a28('0x1f')](respondWithResult(_0x28ef32,null))[_0x3a28('0x2a')](handleError(_0x28ef32,null));};var interaction_log=require(_0x3a28('0x11'))(_0x3a28('0x59'));exports[_0x3a28('0x36')]=function(_0x501921,_0x12fa24,_0x3beaf7){var _0x204a2f={'agent':{},'channel':_0x3a28('0x5a')};if(_0x501921[_0x3a28('0x56')]['id']){delete _0x501921[_0x3a28('0x56')]['id'];}_0x501921[_0x3a28('0x56')][_0x3a28('0x5d')]=_0x501921[_0x3a28('0x56')][_0x3a28('0x5d')]||_0x501921['user']['id'];_0x204a2f[_0x3a28('0x5f')]['id']=_0x501921[_0x3a28('0x56')]['UserId'];return db[_0x3a28('0x3c')][_0x3a28('0x54')]({'where':{'id':_0x501921[_0x3a28('0x57')]['id'],'UserId':null}})[_0x3a28('0x1f')](handleEntityNotFound(_0x12fa24,null))[_0x3a28('0x1f')](function(_0x12a466){if(_0x12a466){_0x204a2f[_0x3a28('0x27')]=_0x12a466[_0x3a28('0x65')]({'plain':!![]});return db[_0x3a28('0x60')][_0x3a28('0x54')]({'where':{'id':_0x12a466[_0x3a28('0x61')]}});}return null;})[_0x3a28('0x1f')](handleEntityNotFound(_0x12fa24,null))[_0x3a28('0x1f')](function(_0x2079a1){if(_0x2079a1){_0x204a2f['interaction']=_0x2079a1[_0x3a28('0x65')]({'plain':!![]});interaction_log[_0x3a28('0x28')]('[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x501921[_0x3a28('0x5e')]['id'],_0x501921[_0x3a28('0x5e')][_0x3a28('0x3a')],_0x501921[_0x3a28('0x5e')]['role'],_0x204a2f['interaction']['id'],_0x501921[_0x3a28('0x56')]?JSON[_0x3a28('0x24')](_0x501921[_0x3a28('0x56')]):'null');return respondWithRpcPromise(_0x3a28('0x7b'),'rejectMessage',_0x204a2f);}return null;})['then'](function(_0x3167e9){var _0xf0f2ca=_0x3a28('0x7c')+_0x3167e9[_0x3a28('0x27')][_0x3a28('0x6a')];return db[_0x3a28('0x6b')][_0x3a28('0x41')](_0xf0f2ca,{'type':db[_0x3a28('0x6c')][_0x3a28('0x6d')]['SELECT'],'raw':!![]})[_0x3a28('0x1f')](function(_0x35cf3b){return _0x35cf3b;});})[_0x3a28('0x1f')](function(_0x20d1c0){if(_0x20d1c0){_0x204a2f[_0x3a28('0x27')][_0x3a28('0x6e')]=_0x20d1c0[0x0];if(!_0x501921[_0x3a28('0x56')][_0x3a28('0x5d')])return;return db[_0x3a28('0x6f')][_0x3a28('0x54')]({'where':{'id':_0x501921[_0x3a28('0x56')][_0x3a28('0x5d')],'role':_0x3a28('0x5f')},'attributes':['id','name',_0x3a28('0x70'),_0x3a28('0x71'),'internal'],'raw':!![]});}return null;})[_0x3a28('0x1f')](function(_0x5b5862){if(!_0x5b5862)return null;_0x204a2f[_0x3a28('0x27')][_0x3a28('0x5f')]=_0x5b5862;return _0x204a2f;})[_0x3a28('0x1f')](function(_0x2e8d2c){if(_0x2e8d2c){_0x2e8d2c[_0x3a28('0x27')]['interface']=util[_0x3a28('0x5b')](_0x3a28('0x7d'),_0x501921[_0x3a28('0x5e')][_0x3a28('0x3a')]);_0x2e8d2c[_0x3a28('0x27')][_0x3a28('0x74')]=_0x204a2f[_0x3a28('0x74')];_0x2e8d2c[_0x3a28('0x27')][_0x3a28('0x7e')]=_0x204a2f['channel'];_0x2e8d2c['message'][_0x3a28('0x75')]=_0x3a28('0x36');respondWithRpcPromise(_0x3a28('0x77'),'EventManager',{'event':_0x3a28('0x7f'),'message':_[_0x3a28('0x4d')](_0x204a2f[_0x3a28('0x27')],JSON['parse'](_0x204a2f[_0x3a28('0x64')]['formData']))},client9002);return _0x204a2f;}return null;})[_0x3a28('0x1f')](respondWithResult(_0x12fa24,null))[_0x3a28('0x2a')](handleError(_0x12fa24,null));};
\ No newline at end of file
+var _0x8e70=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','jayson/promise','client','http','request','then','info','request\x20sent','debug','error','code','ChatMessage,\x20%s,\x20%s','message','catch','sendStatus','status','end','offset','undefined','limit','count','set','json','reject','destroy','stack','name','send','map','ChatMessage','rawAttributes','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','params','find','create','update','body','describe','accept','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','ChatInteraction','ChatInteractionId','isNil','read1stAt','interaction','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','acceptMessage','sequelize','QueryTypes','SELECT','contact','User','fullname','email','SIP/%s','channel','motionChannel','event','acceptmessage','parse','formData','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','internal','interface','rejectmessage','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8e70,0xf8));var _0x08e7=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x8e70[_0x599f41];return _0x2e4d58;};'use strict';var emlformat=require(_0x08e7('0x0'));var rimraf=require(_0x08e7('0x1'));var zipdir=require(_0x08e7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x08e7('0x3'));var BPromise=require(_0x08e7('0x4'));var Mustache=require(_0x08e7('0x5'));var util=require(_0x08e7('0x6'));var path=require(_0x08e7('0x7'));var sox=require(_0x08e7('0x8'));var csv=require(_0x08e7('0x9'));var ejs=require(_0x08e7('0xa'));var fs=require('fs');var fs_extra=require(_0x08e7('0xb'));var _=require(_0x08e7('0xc'));var squel=require(_0x08e7('0xd'));var crypto=require(_0x08e7('0xe'));var jsforce=require(_0x08e7('0xf'));var deskjs=require(_0x08e7('0x10'));var toCsv=require(_0x08e7('0x9'));var querystring=require(_0x08e7('0x11'));var Papa=require('papaparse');var Redis=require(_0x08e7('0x12'));var authService=require(_0x08e7('0x13'));var qs=require(_0x08e7('0x14'));var as=require(_0x08e7('0x15'));var hardwareService=require(_0x08e7('0x16'));var logger=require(_0x08e7('0x17'))(_0x08e7('0x18'));var utils=require('../../config/utils');var config=require(_0x08e7('0x19'));var licenseUtil=require(_0x08e7('0x1a'));var db=require(_0x08e7('0x1b'))['db'];config[_0x08e7('0x1c')]=_[_0x08e7('0x1d')](config[_0x08e7('0x1c')],{'host':_0x08e7('0x1e'),'port':0x18eb});var socket=require(_0x08e7('0x1f'))(new Redis(config['redis']));require(_0x08e7('0x20'))['register'](socket);var jayson=require(_0x08e7('0x21'));var client=jayson[_0x08e7('0x22')][_0x08e7('0x23')]({'port':0x232c});var client9002=jayson[_0x08e7('0x22')][_0x08e7('0x23')]({'port':0x232a});function respondWithRpcPromise(_0x461250,_0x2df62e,_0x35f61c,_0x2c30a6){return new BPromise(function(_0x1fee66,_0x5f3dd2){var _0x32d8e6=_0x2c30a6||client;return _0x32d8e6[_0x08e7('0x24')](_0x461250,_0x35f61c)[_0x08e7('0x25')](function(_0x42acc0){logger[_0x08e7('0x26')]('ChatMessage,\x20%s,\x20%s',_0x2df62e,_0x08e7('0x27'));logger[_0x08e7('0x28')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x2df62e,_0x08e7('0x27'),JSON['stringify'](_0x42acc0));if(_0x42acc0[_0x08e7('0x29')]){if(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2a')]===0x1f4){logger[_0x08e7('0x29')](_0x08e7('0x2b'),_0x2df62e,_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);return _0x5f3dd2(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x2df62e,_0x42acc0['error']['message']);return _0x1fee66(_0x42acc0[_0x08e7('0x29')][_0x08e7('0x2c')]);}else{logger[_0x08e7('0x26')](_0x08e7('0x2b'),_0x2df62e,'request\x20sent');_0x1fee66(_0x42acc0['result'][_0x08e7('0x2c')]);}})[_0x08e7('0x2d')](function(_0x4a2987){logger[_0x08e7('0x29')](_0x08e7('0x2b'),_0x2df62e,_0x4a2987);_0x5f3dd2(_0x4a2987);});});}function respondWithStatusCode(_0x2fb4a5,_0x38d20d){_0x38d20d=_0x38d20d||0xcc;return function(_0xd06bc0){if(_0xd06bc0){return _0x2fb4a5[_0x08e7('0x2e')](_0x38d20d);}return _0x2fb4a5[_0x08e7('0x2f')](_0x38d20d)[_0x08e7('0x30')]();};}function respondWithResult(_0x26dfc7,_0x14cae3){_0x14cae3=_0x14cae3||0xc8;return function(_0x3439c1){if(_0x3439c1){return _0x26dfc7[_0x08e7('0x2f')](_0x14cae3)['json'](_0x3439c1);}};}function respondWithFilteredResult(_0x42662c,_0xc1350a){return function(_0x3e3a03){if(_0x3e3a03){var _0x3d0799=typeof _0xc1350a[_0x08e7('0x31')]===_0x08e7('0x32')&&typeof _0xc1350a[_0x08e7('0x33')]===_0x08e7('0x32');var _0x1a7e3c=_0x3e3a03['count'];var _0x4272ab=_0x3d0799?0x0:_0xc1350a[_0x08e7('0x31')];var _0x360d84=_0x3d0799?_0x3e3a03[_0x08e7('0x34')]:_0xc1350a['offset']+_0xc1350a[_0x08e7('0x33')];var _0x3989c9;if(_0x360d84>=_0x1a7e3c){_0x360d84=_0x1a7e3c;_0x3989c9=0xc8;}else{_0x3989c9=0xce;}_0x42662c[_0x08e7('0x2f')](_0x3989c9);return _0x42662c[_0x08e7('0x35')]('Content-Range',_0x4272ab+'-'+_0x360d84+'/'+_0x1a7e3c)[_0x08e7('0x36')](_0x3e3a03);}return null;};}function patchUpdates(_0x1c6922){return function(_0x2e36f0){try{jsonpatch['apply'](_0x2e36f0,_0x1c6922,!![]);}catch(_0x1c746d){return BPromise[_0x08e7('0x37')](_0x1c746d);}return _0x2e36f0['save']();};}function saveUpdates(_0x19768b,_0x3740e7){return function(_0x433c35){if(_0x433c35){return _0x433c35['update'](_0x19768b)[_0x08e7('0x25')](function(_0x43e70a){return _0x43e70a;});}return null;};}function removeEntity(_0x1be0d1,_0x5aea8d){return function(_0x136601){if(_0x136601){return _0x136601[_0x08e7('0x38')]()[_0x08e7('0x25')](function(){_0x1be0d1[_0x08e7('0x2f')](0xcc)[_0x08e7('0x30')]();});}};}function handleEntityNotFound(_0x33077f,_0x46514b){return function(_0xc4d67f){if(!_0xc4d67f){_0x33077f[_0x08e7('0x2e')](0x194);}return _0xc4d67f;};}function handleError(_0x31e457,_0x3d005f){_0x3d005f=_0x3d005f||0x1f4;return function(_0x2e3579){logger[_0x08e7('0x29')](_0x2e3579[_0x08e7('0x39')]);if(_0x2e3579[_0x08e7('0x3a')]){delete _0x2e3579[_0x08e7('0x3a')];}_0x31e457[_0x08e7('0x2f')](_0x3d005f)[_0x08e7('0x3b')](_0x2e3579);};}exports['index']=function(_0xf656ab,_0x390168){var _0x47aee9={},_0x4b4934={},_0x18479a={'count':0x0,'rows':[]};var _0x1ef38c=_[_0x08e7('0x3c')](db[_0x08e7('0x3d')][_0x08e7('0x3e')],function(_0x3e68fa){return{'name':_0x3e68fa['fieldName'],'type':_0x3e68fa[_0x08e7('0x3f')][_0x08e7('0x40')]};});_0x4b4934[_0x08e7('0x41')]=_[_0x08e7('0x3c')](_0x1ef38c,'name');_0x4b4934['query']=_[_0x08e7('0x42')](_0xf656ab[_0x08e7('0x43')]);_0x4b4934[_0x08e7('0x44')]=_[_0x08e7('0x45')](_0x4b4934[_0x08e7('0x41')],_0x4b4934[_0x08e7('0x43')]);_0x47aee9['attributes']=_[_0x08e7('0x45')](_0x4b4934[_0x08e7('0x41')],qs[_0x08e7('0x46')](_0xf656ab['query'][_0x08e7('0x46')]));_0x47aee9[_0x08e7('0x47')]=_0x47aee9[_0x08e7('0x47')][_0x08e7('0x48')]?_0x47aee9[_0x08e7('0x47')]:_0x4b4934[_0x08e7('0x41')];if(!_0xf656ab[_0x08e7('0x43')][_0x08e7('0x49')](_0x08e7('0x4a'))){_0x47aee9[_0x08e7('0x33')]=qs['limit'](_0xf656ab[_0x08e7('0x43')]['limit']);_0x47aee9['offset']=qs[_0x08e7('0x31')](_0xf656ab['query']['offset']);}_0x47aee9[_0x08e7('0x4b')]=qs[_0x08e7('0x4c')](_0xf656ab[_0x08e7('0x43')][_0x08e7('0x4c')]);_0x47aee9[_0x08e7('0x4d')]=qs[_0x08e7('0x44')](_[_0x08e7('0x4e')](_0xf656ab['query'],_0x4b4934[_0x08e7('0x44')]),_0x1ef38c);if(_0xf656ab[_0x08e7('0x43')]['filter']){_0x47aee9[_0x08e7('0x4d')]=_[_0x08e7('0x4f')](_0x47aee9[_0x08e7('0x4d')],{'$or':_['map'](_0x1ef38c,function(_0x22fe84){if(_0x22fe84[_0x08e7('0x3f')]!==_0x08e7('0x50')){var _0x7c98ac={};_0x7c98ac[_0x22fe84[_0x08e7('0x3a')]]={'$like':'%'+_0xf656ab[_0x08e7('0x43')][_0x08e7('0x51')]+'%'};return _0x7c98ac;}})});}_0x47aee9=_[_0x08e7('0x4f')]({},_0x47aee9,_0xf656ab[_0x08e7('0x52')]);var _0x420f69={'where':_0x47aee9[_0x08e7('0x4d')]};return db[_0x08e7('0x3d')]['count'](_0x420f69)['then'](function(_0x2e3996){_0x18479a['count']=_0x2e3996;if(_0xf656ab[_0x08e7('0x43')][_0x08e7('0x53')]){_0x47aee9[_0x08e7('0x54')]=[{'all':!![]}];}return db[_0x08e7('0x3d')][_0x08e7('0x55')](_0x47aee9);})[_0x08e7('0x25')](function(_0x1c3eb7){_0x18479a[_0x08e7('0x56')]=_0x1c3eb7;return _0x18479a;})[_0x08e7('0x25')](respondWithFilteredResult(_0x390168,_0x47aee9))[_0x08e7('0x2d')](handleError(_0x390168,null));};exports['show']=function(_0x5a3a7f,_0x39a550){var _0x244c79={'raw':!![],'where':{'id':_0x5a3a7f[_0x08e7('0x57')]['id']}},_0x385e3f={};_0x385e3f[_0x08e7('0x41')]=_[_0x08e7('0x42')](db['ChatMessage'][_0x08e7('0x3e')]);_0x385e3f[_0x08e7('0x43')]=_[_0x08e7('0x42')](_0x5a3a7f[_0x08e7('0x43')]);_0x385e3f[_0x08e7('0x44')]=_[_0x08e7('0x45')](_0x385e3f[_0x08e7('0x41')],_0x385e3f['query']);_0x244c79[_0x08e7('0x47')]=_['intersection'](_0x385e3f[_0x08e7('0x41')],qs[_0x08e7('0x46')](_0x5a3a7f[_0x08e7('0x43')][_0x08e7('0x46')]));_0x244c79[_0x08e7('0x47')]=_0x244c79[_0x08e7('0x47')][_0x08e7('0x48')]?_0x244c79['attributes']:_0x385e3f[_0x08e7('0x41')];if(_0x5a3a7f[_0x08e7('0x43')][_0x08e7('0x53')]){_0x244c79[_0x08e7('0x54')]=[{'all':!![]}];}_0x244c79=_[_0x08e7('0x4f')]({},_0x244c79,_0x5a3a7f[_0x08e7('0x52')]);return db[_0x08e7('0x3d')][_0x08e7('0x58')](_0x244c79)['then'](handleEntityNotFound(_0x39a550,null))[_0x08e7('0x25')](respondWithResult(_0x39a550,null))[_0x08e7('0x2d')](handleError(_0x39a550,null));};exports['create']=function(_0x1a6c2d,_0x1f18c9){return db[_0x08e7('0x3d')][_0x08e7('0x59')](_0x1a6c2d['body'],{})['then'](respondWithResult(_0x1f18c9,0xc9))['catch'](handleError(_0x1f18c9,null));};exports[_0x08e7('0x5a')]=function(_0x52dc5e,_0x571191){if(_0x52dc5e[_0x08e7('0x5b')]['id']){delete _0x52dc5e[_0x08e7('0x5b')]['id'];}return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x52dc5e[_0x08e7('0x57')]['id']}})['then'](handleEntityNotFound(_0x571191,null))['then'](saveUpdates(_0x52dc5e[_0x08e7('0x5b')],null))[_0x08e7('0x25')](respondWithResult(_0x571191,null))[_0x08e7('0x2d')](handleError(_0x571191,null));};exports[_0x08e7('0x38')]=function(_0x2c998b,_0x51666f){return db[_0x08e7('0x3d')]['find']({'where':{'id':_0x2c998b['params']['id']}})[_0x08e7('0x25')](handleEntityNotFound(_0x51666f,null))['then'](removeEntity(_0x51666f,null))[_0x08e7('0x2d')](handleError(_0x51666f,null));};exports['describe']=function(_0x39efcc,_0x3be378){return db['ChatMessage'][_0x08e7('0x5c')]()[_0x08e7('0x25')](respondWithResult(_0x3be378,null))['catch'](handleError(_0x3be378,null));};var interaction_log=require(_0x08e7('0x17'))('chat-interactions');exports[_0x08e7('0x5d')]=function(_0x61f1b3,_0x1d20b0,_0x450456){var _0x261eb3={'agent':{},'channel':_0x08e7('0x5e')};if(_0x61f1b3[_0x08e7('0x5b')]['id']){delete _0x61f1b3[_0x08e7('0x5b')]['id'];}_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x5f')]=!![];_0x61f1b3[_0x08e7('0x5b')]['readAt']=moment()[_0x08e7('0x60')](_0x08e7('0x61'));_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')]=_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')]||_0x61f1b3['user']['id'];_0x261eb3[_0x08e7('0x63')]['id']=_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')];return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x61f1b3['params']['id'],'UserId':null}})[_0x08e7('0x25')](handleEntityNotFound(_0x1d20b0,null))[_0x08e7('0x25')](saveUpdates(_0x61f1b3[_0x08e7('0x5b')],null))[_0x08e7('0x25')](function(_0x5737b7){if(_0x5737b7){_0x261eb3[_0x08e7('0x2c')]=_0x5737b7[_0x08e7('0x64')]({'plain':!![]});return db[_0x08e7('0x65')]['find']({'where':{'id':_0x5737b7[_0x08e7('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x1d20b0,null))[_0x08e7('0x25')](function(_0x334032){if(_0x334032){return _0x334032[_0x08e7('0x5a')]({'UserId':_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')],'read1stAt':_[_0x08e7('0x67')](_0x334032[_0x08e7('0x68')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x37ea91){if(_0x37ea91){_0x261eb3[_0x08e7('0x69')]=_0x37ea91[_0x08e7('0x64')]({'plain':!![]});interaction_log[_0x08e7('0x26')](_0x08e7('0x6a'),_0x61f1b3[_0x08e7('0x6b')]['id'],_0x61f1b3[_0x08e7('0x6b')][_0x08e7('0x3a')],_0x61f1b3[_0x08e7('0x6b')][_0x08e7('0x6c')],_0x261eb3[_0x08e7('0x69')]['id'],_0x61f1b3[_0x08e7('0x5b')]?JSON[_0x08e7('0x6d')](_0x61f1b3[_0x08e7('0x5b')]):_0x08e7('0x6e'));return respondWithRpcPromise(_0x08e7('0x6f'),_0x08e7('0x70'),_0x261eb3);}return null;})[_0x08e7('0x25')](function(_0x342b14){var _0x1e469d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x342b14[_0x08e7('0x2c')]['ContactId'];return db[_0x08e7('0x71')][_0x08e7('0x43')](_0x1e469d,{'type':db['Sequelize'][_0x08e7('0x72')][_0x08e7('0x73')],'raw':!![]})['then'](function(_0x94d1a0){return _0x94d1a0;});})[_0x08e7('0x25')](function(_0x25e224){if(_0x25e224){_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x74')]=_0x25e224[0x0];if(!_0x61f1b3[_0x08e7('0x5b')][_0x08e7('0x62')])return;return db[_0x08e7('0x75')][_0x08e7('0x58')]({'where':{'id':_0x61f1b3['body']['UserId'],'role':_0x08e7('0x63')},'attributes':['id',_0x08e7('0x3a'),_0x08e7('0x76'),_0x08e7('0x77'),'internal'],'raw':!![]});}return null;})['then'](function(_0x58e9ba){if(!_0x58e9ba)return null;_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x63')]=_0x58e9ba;return _0x261eb3;})[_0x08e7('0x25')](function(_0x5a71dd){if(_0x5a71dd){if(_0x61f1b3['body']['manual']){_0x261eb3[_0x08e7('0x2c')]['interface']=util['format'](_0x08e7('0x78'),_0x61f1b3[_0x08e7('0x6b')]['name']);_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x79')]=_0x261eb3[_0x08e7('0x79')];_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x7a')]=_0x261eb3[_0x08e7('0x79')];_0x261eb3[_0x08e7('0x2c')][_0x08e7('0x7b')]=_0x08e7('0x5d');return respondWithRpcPromise('EventManager','EventManager',{'event':_0x08e7('0x7c'),'message':_['merge'](_0x261eb3['message'],JSON[_0x08e7('0x7d')](_0x261eb3[_0x08e7('0x69')][_0x08e7('0x7e')]))},client9002)[_0x08e7('0x25')](function(){return _0x261eb3;});}return _0x261eb3;}return null;})[_0x08e7('0x25')](respondWithResult(_0x1d20b0,null))[_0x08e7('0x2d')](handleError(_0x1d20b0,null));};var interaction_log=require(_0x08e7('0x17'))('chat-interactions');exports[_0x08e7('0x37')]=function(_0x51e538,_0x28d6c9,_0x435bd0){var _0x1a7d20={'agent':{},'channel':'chat'};if(_0x51e538['body']['id']){delete _0x51e538[_0x08e7('0x5b')]['id'];}_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')]=_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')]||_0x51e538[_0x08e7('0x6b')]['id'];_0x1a7d20[_0x08e7('0x63')]['id']=_0x51e538['body'][_0x08e7('0x62')];return db[_0x08e7('0x3d')][_0x08e7('0x58')]({'where':{'id':_0x51e538[_0x08e7('0x57')]['id'],'UserId':null}})[_0x08e7('0x25')](handleEntityNotFound(_0x28d6c9,null))[_0x08e7('0x25')](function(_0x243a31){if(_0x243a31){_0x1a7d20['message']=_0x243a31[_0x08e7('0x64')]({'plain':!![]});return db['ChatInteraction'][_0x08e7('0x58')]({'where':{'id':_0x243a31[_0x08e7('0x66')]}});}return null;})[_0x08e7('0x25')](handleEntityNotFound(_0x28d6c9,null))[_0x08e7('0x25')](function(_0x12247c){if(_0x12247c){_0x1a7d20[_0x08e7('0x69')]=_0x12247c['get']({'plain':!![]});interaction_log['info'](_0x08e7('0x7f'),_0x51e538[_0x08e7('0x6b')]['id'],_0x51e538[_0x08e7('0x6b')][_0x08e7('0x3a')],_0x51e538[_0x08e7('0x6b')]['role'],_0x1a7d20['interaction']['id'],_0x51e538[_0x08e7('0x5b')]?JSON[_0x08e7('0x6d')](_0x51e538[_0x08e7('0x5b')]):_0x08e7('0x6e'));return respondWithRpcPromise(_0x08e7('0x80'),_0x08e7('0x81'),_0x1a7d20);}return null;})[_0x08e7('0x25')](function(_0x597274){var _0x1e6cfd='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x597274[_0x08e7('0x2c')]['ContactId'];return db[_0x08e7('0x71')][_0x08e7('0x43')](_0x1e6cfd,{'type':db[_0x08e7('0x82')][_0x08e7('0x72')]['SELECT'],'raw':!![]})[_0x08e7('0x25')](function(_0x420369){return _0x420369;});})[_0x08e7('0x25')](function(_0x362b4f){if(_0x362b4f){_0x1a7d20[_0x08e7('0x2c')][_0x08e7('0x74')]=_0x362b4f[0x0];if(!_0x51e538[_0x08e7('0x5b')]['UserId'])return;return db[_0x08e7('0x75')][_0x08e7('0x58')]({'where':{'id':_0x51e538[_0x08e7('0x5b')][_0x08e7('0x62')],'role':_0x08e7('0x63')},'attributes':['id',_0x08e7('0x3a'),_0x08e7('0x76'),_0x08e7('0x77'),_0x08e7('0x83')],'raw':!![]});}return null;})['then'](function(_0x2c3d54){if(!_0x2c3d54)return null;_0x1a7d20['message'][_0x08e7('0x63')]=_0x2c3d54;return _0x1a7d20;})[_0x08e7('0x25')](function(_0x362ff5){if(_0x362ff5){_0x362ff5[_0x08e7('0x2c')][_0x08e7('0x84')]=util[_0x08e7('0x60')]('SIP/%s',_0x51e538[_0x08e7('0x6b')]['name']);_0x362ff5[_0x08e7('0x2c')][_0x08e7('0x79')]=_0x1a7d20[_0x08e7('0x79')];_0x362ff5[_0x08e7('0x2c')]['motionChannel']=_0x1a7d20[_0x08e7('0x79')];_0x362ff5['message'][_0x08e7('0x7b')]=_0x08e7('0x37');respondWithRpcPromise('EventManager','EventManager',{'event':_0x08e7('0x85'),'message':_['merge'](_0x1a7d20[_0x08e7('0x2c')],JSON[_0x08e7('0x7d')](_0x1a7d20[_0x08e7('0x69')][_0x08e7('0x7e')]))},client9002);return _0x1a7d20;}return null;})[_0x08e7('0x25')](respondWithResult(_0x28d6c9,null))[_0x08e7('0x2d')](handleError(_0x28d6c9,null));};
\ No newline at end of file
index c6a8649..3334104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf553=['setMaxListeners','save','update','remove','emit','hasOwnProperty','../../mysqldb','ChatMessage'];(function(_0x76a7ae,_0x490d47){var _0x12eeb4=function(_0x237f15){while(--_0x237f15){_0x76a7ae['push'](_0x76a7ae['shift']());}};_0x12eeb4(++_0x490d47);}(_0xf553,0x116));var _0x3f55=function(_0x420513,_0x30eae3){_0x420513=_0x420513-0x0;var _0x1b44ec=_0xf553[_0x420513];return _0x1b44ec;};'use strict';var EventEmitter=require('events');var ChatMessage=require(_0x3f55('0x0'))['db'][_0x3f55('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0x3f55('0x2')](0x0);var events={'afterCreate':_0x3f55('0x3'),'afterUpdate':_0x3f55('0x4'),'afterDestroy':_0x3f55('0x5')};function emitEvent(_0x37a368){return function(_0xc68ae7,_0x5919cb,_0x5678ce){ChatMessageEvents[_0x3f55('0x6')](_0x37a368+':'+_0xc68ae7['id'],_0xc68ae7);ChatMessageEvents['emit'](_0x37a368,_0xc68ae7);_0x5678ce(null);};}for(var e in events){if(events[_0x3f55('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0xde4c=['remove','emit','hasOwnProperty','exports','events','ChatMessage','setMaxListeners','save','update'];(function(_0x234869,_0x25ce29){var _0xdc5c37=function(_0x1bb15a){while(--_0x1bb15a){_0x234869['push'](_0x234869['shift']());}};_0xdc5c37(++_0x25ce29);}(_0xde4c,0xee));var _0xcde4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xde4c[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xcde4('0x0'));var ChatMessage=require('../../mysqldb')['db'][_0xcde4('0x1')];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xcde4('0x2')](0x0);var events={'afterCreate':_0xcde4('0x3'),'afterUpdate':_0xcde4('0x4'),'afterDestroy':_0xcde4('0x5')};function emitEvent(_0x4ae2e3){return function(_0x4ce138,_0x25c029,_0x471cc7){ChatMessageEvents['emit'](_0x4ae2e3+':'+_0x4ce138['id'],_0x4ce138);ChatMessageEvents[_0xcde4('0x6')](_0x4ae2e3,_0x4ce138);_0x471cc7(null);};}for(var e in events){if(events[_0xcde4('0x7')](e)){var event=events[e];ChatMessage['hook'](e,emitEvent(event));}}module[_0xcde4('0x8')]=ChatMessageEvents;
\ No newline at end of file
index ed6338b..80695f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3da6=['createdAt','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','bluebird','path','rimraf','exports','ChatMessage','chat_messages','fti_chat_messages','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','then','update'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x3da6,0x17a));var _0x63da=function(_0x4390b5,_0x3d5732){_0x4390b5=_0x4390b5-0x0;var _0x40466f=_0x3da6[_0x4390b5];return _0x40466f;};'use strict';var _=require(_0x63da('0x0'));var util=require('util');var logger=require(_0x63da('0x1'))(_0x63da('0x2'));var moment=require('moment');var BPromise=require(_0x63da('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x63da('0x4'));var rimraf=require(_0x63da('0x5'));var config=require('../../config/environment');var attributes=require('./chatMessage.attributes');module[_0x63da('0x6')]=function(_0x390e89,_0xfe4d0){return _0x390e89['define'](_0x63da('0x7'),attributes,{'tableName':_0x63da('0x8'),'paranoid':![],'indexes':[{'name':_0x63da('0x9'),'fields':['body'],'type':_0x63da('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1bdce1,_0x3104a9,_0xbdb04d){var _0x4c917f=_0x390e89[_0x63da('0xb')];var _0x33ed06=_0x1bdce1[_0x63da('0xc')]({'plain':!![]});if(_0x33ed06[_0x63da('0xd')][_0x63da('0xe')]()==='in'||_0x33ed06[_0x63da('0xd')][_0x63da('0xe')]()===_0x63da('0xf')&&!_0x33ed06[_0x63da('0x10')]&&!_[_0x63da('0x11')](_0x33ed06[_0x63da('0x12')])){_0x4c917f['ChatInteraction'][_0x63da('0x13')]({'where':{'id':_0x33ed06['ChatInteractionId']}})[_0x63da('0x14')](function(_0x12804c){if(_0x12804c){_0x12804c[_0x63da('0x15')]({'lastMsgAt':_0x33ed06[_0x63da('0x16')],'lastMsgDirection':_0x33ed06[_0x63da('0xd')]['toLowerCase']()});}})['catch'](function(_0xc1e02f){console['error'](_0xc1e02f);});}_0xbdb04d();}},'charset':_0x63da('0x17'),'collate':_0x63da('0x18')});};
\ No newline at end of file
+var _0x0141=['FULLTEXT','models','get','direction','toLowerCase','isNil','UserId','ChatInteraction','ChatInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','util','api','moment','request-promise','path','rimraf','../../config/environment','./chatMessage.attributes','exports','ChatMessage','chat_messages','fti_chat_messages','body'];(function(_0x3c029a,_0x30fbba){var _0x619f33=function(_0x522b50){while(--_0x522b50){_0x3c029a['push'](_0x3c029a['shift']());}};_0x619f33(++_0x30fbba);}(_0x0141,0xbe));var _0x1014=function(_0x4ccc9c,_0x5c7ae3){_0x4ccc9c=_0x4ccc9c-0x0;var _0xbb3d6=_0x0141[_0x4ccc9c];return _0xbb3d6;};'use strict';var _=require('lodash');var util=require(_0x1014('0x0'));var logger=require('../../config/logger')(_0x1014('0x1'));var moment=require(_0x1014('0x2'));var BPromise=require('bluebird');var rp=require(_0x1014('0x3'));var fs=require('fs');var path=require(_0x1014('0x4'));var rimraf=require(_0x1014('0x5'));var config=require(_0x1014('0x6'));var attributes=require(_0x1014('0x7'));module[_0x1014('0x8')]=function(_0x522434,_0x17a985){return _0x522434['define'](_0x1014('0x9'),attributes,{'tableName':_0x1014('0xa'),'paranoid':![],'indexes':[{'name':_0x1014('0xb'),'fields':[_0x1014('0xc')],'type':_0x1014('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x15c81a,_0x3203a1,_0x496fb4){var _0x1d1806=_0x522434[_0x1014('0xe')];var _0x40f916=_0x15c81a[_0x1014('0xf')]({'plain':!![]});if(_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()==='in'||_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()==='out'&&!_0x40f916['secret']&&!_[_0x1014('0x12')](_0x40f916[_0x1014('0x13')])){_0x1d1806[_0x1014('0x14')]['findOne']({'where':{'id':_0x40f916[_0x1014('0x15')]}})[_0x1014('0x16')](function(_0x23181d){if(_0x23181d){_0x23181d[_0x1014('0x17')]({'lastMsgAt':_0x40f916[_0x1014('0x18')],'lastMsgDirection':_0x40f916[_0x1014('0x10')][_0x1014('0x11')]()});}})[_0x1014('0x19')](function(_0x16032e){console[_0x1014('0x1a')](_0x16032e);});}_0x496fb4();}},'charset':_0x1014('0x1b'),'collate':_0x1014('0x1c')});};
\ No newline at end of file
index 11e0942..4aae0ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeac=['CreateChatMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','then','info','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2b10c6,_0x185590){var _0x3789d2=function(_0x272987){while(--_0x272987){_0x2b10c6['push'](_0x2b10c6['shift']());}};_0x3789d2(++_0x185590);}(_0xdeac,0xfa));var _0xcdea=function(_0x3d2d4a,_0xc15155){_0x3d2d4a=_0x3d2d4a-0x0;var _0x3c31b9=_0xdeac[_0x3d2d4a];return _0x3c31b9;};'use strict';var _=require(_0xcdea('0x0'));var util=require(_0xcdea('0x1'));var moment=require(_0xcdea('0x2'));var BPromise=require(_0xcdea('0x3'));var rs=require(_0xcdea('0x4'));var fs=require('fs');var Redis=require(_0xcdea('0x5'));var db=require(_0xcdea('0x6'))['db'];var utils=require(_0xcdea('0x7'));var logger=require(_0xcdea('0x8'))(_0xcdea('0x9'));var config=require('../../config/environment');var jayson=require(_0xcdea('0xa'));var client=jayson[_0xcdea('0xb')][_0xcdea('0xc')]({'port':0x232a});config['redis']=_[_0xcdea('0xd')](config['redis'],{'host':_0xcdea('0xe'),'port':0x18eb});var socket=require(_0xcdea('0xf'))(new Redis(config['redis']));require(_0xcdea('0x10'))[_0xcdea('0x11')](socket);function respondWithRpcPromise(_0x264530,_0x8bcdf,_0x54da96){return new BPromise(function(_0x3c7f13,_0x422195){return client['request'](_0x264530,_0x54da96)[_0xcdea('0x12')](function(_0x5c8c21){logger[_0xcdea('0x13')](_0xcdea('0x14'),_0x8bcdf,_0xcdea('0x15'));logger[_0xcdea('0x16')](_0xcdea('0x17'),_0x8bcdf,'request\x20sent',JSON[_0xcdea('0x18')](_0x5c8c21));if(_0x5c8c21[_0xcdea('0x19')]){if(_0x5c8c21[_0xcdea('0x19')][_0xcdea('0x1a')]===0x1f4){logger[_0xcdea('0x19')](_0xcdea('0x14'),_0x8bcdf,_0x5c8c21[_0xcdea('0x19')][_0xcdea('0x1b')]);return _0x422195(_0x5c8c21['error'][_0xcdea('0x1b')]);}logger[_0xcdea('0x19')]('ChatMessage,\x20%s,\x20%s',_0x8bcdf,_0x5c8c21['error'][_0xcdea('0x1b')]);return _0x3c7f13(_0x5c8c21['error'][_0xcdea('0x1b')]);}else{logger[_0xcdea('0x13')](_0xcdea('0x14'),_0x8bcdf,'request\x20sent');_0x3c7f13(_0x5c8c21[_0xcdea('0x1c')]['message']);}})[_0xcdea('0x1d')](function(_0x419e25){logger[_0xcdea('0x19')](_0xcdea('0x14'),_0x8bcdf,_0x419e25);_0x422195(_0x419e25);});});}exports[_0xcdea('0x1e')]=function(_0x1b3d09){var _0x29ddea=this;return new Promise(function(_0x2b7ad8,_0x4ab343){return db['ChatMessage'][_0xcdea('0x1f')](_0x1b3d09[_0xcdea('0x20')],{'raw':_0x1b3d09[_0xcdea('0x21')]?_0x1b3d09[_0xcdea('0x21')][_0xcdea('0x22')]===undefined?!![]:![]:!![]})[_0xcdea('0x12')](function(_0x4dae4a){logger[_0xcdea('0x13')]('CreateChatMessage',_0x1b3d09);logger['debug'](_0xcdea('0x1e'),_0x1b3d09,JSON[_0xcdea('0x18')](_0x4dae4a));_0x2b7ad8(_0x4dae4a);})[_0xcdea('0x1d')](function(_0x5b5b13){logger['error']('CreateChatMessage',_0x5b5b13[_0xcdea('0x1b')],_0x1b3d09);_0x4ab343(_0x29ddea[_0xcdea('0x19')](0x1f4,_0x5b5b13['message']));});});};
\ No newline at end of file
+var _0xd07b=['randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','register','request','ChatMessage,\x20%s,\x20%s','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','CreateChatMessage','ChatMessage','create','body','options','raw','then','debug','lodash','util','moment','bluebird'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0xd07b,0xfc));var _0xbd07=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0xd07b[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0xbd07('0x0'));var util=require(_0xbd07('0x1'));var moment=require(_0xbd07('0x2'));var BPromise=require(_0xbd07('0x3'));var rs=require(_0xbd07('0x4'));var fs=require('fs');var Redis=require(_0xbd07('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xbd07('0x6'));var logger=require('../../config/logger')(_0xbd07('0x7'));var config=require(_0xbd07('0x8'));var jayson=require(_0xbd07('0x9'));var client=jayson[_0xbd07('0xa')][_0xbd07('0xb')]({'port':0x232a});config[_0xbd07('0xc')]=_[_0xbd07('0xd')](config[_0xbd07('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xbd07('0xc')]));require('./chatMessage.socket')[_0xbd07('0xe')](socket);function respondWithRpcPromise(_0x572247,_0x2e5a49,_0x4f7d5a){return new BPromise(function(_0x4ce7d1,_0x3f685e){return client[_0xbd07('0xf')](_0x572247,_0x4f7d5a)['then'](function(_0xc4b876){logger['info'](_0xbd07('0x10'),_0x2e5a49,'request\x20sent');logger['debug'](_0xbd07('0x11'),_0x2e5a49,_0xbd07('0x12'),JSON[_0xbd07('0x13')](_0xc4b876));if(_0xc4b876[_0xbd07('0x14')]){if(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x15')]===0x1f4){logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);return _0x3f685e(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);}logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);return _0x4ce7d1(_0xc4b876[_0xbd07('0x14')][_0xbd07('0x16')]);}else{logger['info'](_0xbd07('0x10'),_0x2e5a49,'request\x20sent');_0x4ce7d1(_0xc4b876['result'][_0xbd07('0x16')]);}})[_0xbd07('0x17')](function(_0x44d4b6){logger[_0xbd07('0x14')](_0xbd07('0x10'),_0x2e5a49,_0x44d4b6);_0x3f685e(_0x44d4b6);});});}exports[_0xbd07('0x18')]=function(_0x184d24){var _0x5cb154=this;return new Promise(function(_0x39e7fc,_0x2a759e){return db[_0xbd07('0x19')][_0xbd07('0x1a')](_0x184d24[_0xbd07('0x1b')],{'raw':_0x184d24[_0xbd07('0x1c')]?_0x184d24['options'][_0xbd07('0x1d')]===undefined?!![]:![]:!![]})[_0xbd07('0x1e')](function(_0x236673){logger['info'](_0xbd07('0x18'),_0x184d24);logger[_0xbd07('0x1f')](_0xbd07('0x18'),_0x184d24,JSON[_0xbd07('0x13')](_0x236673));_0x39e7fc(_0x236673);})['catch'](function(_0x58f9bc){logger[_0xbd07('0x14')]('CreateChatMessage',_0x58f9bc[_0xbd07('0x16')],_0x184d24);_0x2a759e(_0x5cb154[_0xbd07('0x14')](0x1f4,_0x58f9bc[_0xbd07('0x16')]));});});};
\ No newline at end of file
index 7befa9c..66d883f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcba=['length','./chatMessage.events','save','update','emit','register'];(function(_0xb81e1d,_0x2cb83c){var _0x5944e9=function(_0x1d70b0){while(--_0x1d70b0){_0xb81e1d['push'](_0xb81e1d['shift']());}};_0x5944e9(++_0x2cb83c);}(_0xbcba,0x6d));var _0xabcb=function(_0x99717,_0x52c0bc){_0x99717=_0x99717-0x0;var _0x11ff12=_0xbcba[_0x99717];return _0x11ff12;};'use strict';var ChatMessageEvents=require(_0xabcb('0x0'));var events=[_0xabcb('0x1'),'remove',_0xabcb('0x2')];function createListener(_0x2c9ee7,_0x2034d2){return function(_0xcbe337){_0x2034d2[_0xabcb('0x3')](_0x2c9ee7,_0xcbe337);};}function removeListener(_0x3e3b9b,_0x5e10df){return function(){ChatMessageEvents['removeListener'](_0x3e3b9b,_0x5e10df);};}exports[_0xabcb('0x4')]=function(_0x1290b2){for(var _0x5c706e=0x0,_0x5322e7=events[_0xabcb('0x5')];_0x5c706e<_0x5322e7;_0x5c706e++){var _0x192b36=events[_0x5c706e];var _0x5e693d=createListener('chatMessage:'+_0x192b36,_0x1290b2);ChatMessageEvents['on'](_0x192b36,_0x5e693d);}};
\ No newline at end of file
+var _0x432b=['remove','update','removeListener','length','chatMessage:','./chatMessage.events'];(function(_0x146ca3,_0x29a10e){var _0x30dd24=function(_0x4b4f36){while(--_0x4b4f36){_0x146ca3['push'](_0x146ca3['shift']());}};_0x30dd24(++_0x29a10e);}(_0x432b,0x161));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';var ChatMessageEvents=require(_0xb432('0x0'));var events=['save',_0xb432('0x1'),_0xb432('0x2')];function createListener(_0x7170b6,_0xee80f1){return function(_0x5173f6){_0xee80f1['emit'](_0x7170b6,_0x5173f6);};}function removeListener(_0x93e722,_0x4cefc4){return function(){ChatMessageEvents[_0xb432('0x3')](_0x93e722,_0x4cefc4);};}exports['register']=function(_0x143093){for(var _0x3f1a78=0x0,_0x274447=events[_0xb432('0x4')];_0x3f1a78<_0x274447;_0x3f1a78++){var _0x14fed4=events[_0x3f1a78];var _0x6833df=createListener(_0xb432('0x5')+_0x14fed4,_0x143093);ChatMessageEvents['on'](_0x14fed4,_0x6833df);}};
\ No newline at end of file
index 7319a02..742a108 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fdd=['/describe','describe','show','post','tracked','chat','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./chatMessage.controller','isAuthenticated','index','get'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x7fdd,0x1c0));var _0xd7fd=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7fdd[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xd7fd('0x0'));var util=require('util');var path=require(_0xd7fd('0x1'));var timeout=require(_0xd7fd('0x2'));var express=require(_0xd7fd('0x3'));var router=express[_0xd7fd('0x4')]();var fs_extra=require(_0xd7fd('0x5'));var auth=require(_0xd7fd('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd7fd('0x7'));router['get']('/',auth[_0xd7fd('0x8')](),controller[_0xd7fd('0x9')]);router[_0xd7fd('0xa')](_0xd7fd('0xb'),auth['isAuthenticated'](),controller[_0xd7fd('0xc')]);router[_0xd7fd('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xd7fd('0xd')]);router[_0xd7fd('0xe')]('/',auth[_0xd7fd('0x8')](),interaction[_0xd7fd('0xf')](_0xd7fd('0x10'),'chatmessage:create'),controller[_0xd7fd('0x11')]);router[_0xd7fd('0x12')]('/:id',controller[_0xd7fd('0x13')]);router[_0xd7fd('0x12')](_0xd7fd('0x14'),auth[_0xd7fd('0x8')](),controller[_0xd7fd('0x15')]);router[_0xd7fd('0x12')](_0xd7fd('0x16'),auth['isAuthenticated'](),controller[_0xd7fd('0x17')]);router[_0xd7fd('0x18')]('/:id',auth[_0xd7fd('0x8')](),controller[_0xd7fd('0x19')]);module[_0xd7fd('0x1a')]=router;
\ No newline at end of file
+var _0xad18=['multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','tracked','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy'];(function(_0x24f9d9,_0x6b4d81){var _0x392b6c=function(_0x4e685b){while(--_0x4e685b){_0x24f9d9['push'](_0x24f9d9['shift']());}};_0x392b6c(++_0x6b4d81);}(_0xad18,0x1e6));var _0x8ad1=function(_0x4ba17b,_0x55f724){_0x4ba17b=_0x4ba17b-0x0;var _0x1f0669=_0xad18[_0x4ba17b];return _0x1f0669;};'use strict';var multer=require(_0x8ad1('0x0'));var util=require(_0x8ad1('0x1'));var path=require('path');var timeout=require(_0x8ad1('0x2'));var express=require(_0x8ad1('0x3'));var router=express[_0x8ad1('0x4')]();var fs_extra=require(_0x8ad1('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8ad1('0x6'));var config=require(_0x8ad1('0x7'));var controller=require(_0x8ad1('0x8'));router[_0x8ad1('0x9')]('/',auth['isAuthenticated'](),controller[_0x8ad1('0xa')]);router[_0x8ad1('0x9')](_0x8ad1('0xb'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0xd')]);router[_0x8ad1('0x9')](_0x8ad1('0xe'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0xf')]);router[_0x8ad1('0x10')]('/',auth['isAuthenticated'](),interaction[_0x8ad1('0x11')]('chat','chatmessage:create'),controller[_0x8ad1('0x12')]);router[_0x8ad1('0x13')](_0x8ad1('0xe'),controller[_0x8ad1('0x14')]);router[_0x8ad1('0x13')](_0x8ad1('0x15'),auth['isAuthenticated'](),controller[_0x8ad1('0x16')]);router[_0x8ad1('0x13')](_0x8ad1('0x17'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0x18')]);router[_0x8ad1('0x19')](_0x8ad1('0xe'),auth[_0x8ad1('0xc')](),controller[_0x8ad1('0x1a')]);module['exports']=router;
\ No newline at end of file
index b7c44c9..a77a23f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['medium','TEXT','exports'];(function(_0x8e4585,_0x474a7f){var _0x4ab2b6=function(_0x5bc739){while(--_0x5bc739){_0x8e4585['push'](_0x8e4585['shift']());}};_0x4ab2b6(++_0x474a7f);}(_0xadb5,0xad));var _0x5adb=function(_0x2a435d,_0x59462a){_0x2a435d=_0x2a435d-0x0;var _0x59735e=_0xadb5[_0x2a435d];return _0x59735e;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
+var _0xadb5=['medium','TEXT','exports'];(function(_0x47f993,_0x4ff051){var _0x307475=function(_0x29513d){while(--_0x29513d){_0x47f993['push'](_0x47f993['shift']());}};_0x307475(++_0x4ff051);}(_0xadb5,0xad));var _0x5adb=function(_0x3ade09,_0x1460cb){_0x3ade09=_0x3ade09-0x0;var _0x13c81e=_0xadb5[_0x3ade09];return _0x13c81e;};'use strict';var Sequelize=require('sequelize');module[_0x5adb('0x0')]={'body':{'type':Sequelize['TEXT'](_0x5adb('0x1')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x5adb('0x2')](_0x5adb('0x1')),'allowNull':![]}};
\ No newline at end of file
index cbecf17..1f961bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','index','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','ChatOfflineMessage','findAll','rows','show','rawAttributes','includeAll','include','find','create','catch','body','params','Attachment','forEach','join','root','server','files','attachments','basename','existsSync','remove','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0xda56fc,_0x3693bd){var _0x2f8f3f=function(_0x7d4817){while(--_0x7d4817){_0xda56fc['push'](_0xda56fc['shift']());}};_0x2f8f3f(++_0x3693bd);}(_0x9957,0x93));var _0x7995=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x9957[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){var _0x514445={},_0x456a28={},_0x3250e0={'count':0x0,'rows':[]};var _0x4253e5=_['map'](db['ChatOfflineMessage']['rawAttributes'],function(_0x3573be){return{'name':_0x3573be[_0x7995('0x2c')],'type':_0x3573be[_0x7995('0x2d')][_0x7995('0x2e')]};});_0x456a28[_0x7995('0x2f')]=_[_0x7995('0x30')](_0x4253e5,'name');_0x456a28['query']=_[_0x7995('0x31')](_0x4b6f99['query']);_0x456a28[_0x7995('0x32')]=_[_0x7995('0x33')](_0x456a28[_0x7995('0x2f')],_0x456a28[_0x7995('0x34')]);_0x514445[_0x7995('0x35')]=_['intersection'](_0x456a28[_0x7995('0x2f')],qs[_0x7995('0x36')](_0x4b6f99['query']['fields']));_0x514445['attributes']=_0x514445[_0x7995('0x35')][_0x7995('0x37')]?_0x514445['attributes']:_0x456a28[_0x7995('0x2f')];if(!_0x4b6f99['query'][_0x7995('0x38')](_0x7995('0x39'))){_0x514445[_0x7995('0x21')]=qs['limit'](_0x4b6f99['query'][_0x7995('0x21')]);_0x514445['offset']=qs['offset'](_0x4b6f99[_0x7995('0x34')][_0x7995('0x20')]);}_0x514445['order']=qs[_0x7995('0x3a')](_0x4b6f99[_0x7995('0x34')][_0x7995('0x3a')]);_0x514445[_0x7995('0x3b')]=qs[_0x7995('0x32')](_['pick'](_0x4b6f99[_0x7995('0x34')],_0x456a28[_0x7995('0x32')]),_0x4253e5);if(_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]){_0x514445['where']=_[_0x7995('0x3d')](_0x514445[_0x7995('0x3b')],{'$or':_[_0x7995('0x30')](_0x4253e5,function(_0xe5ea43){if(_0xe5ea43[_0x7995('0x2d')]!==_0x7995('0x3e')){var _0x5688a1={};_0x5688a1[_0xe5ea43[_0x7995('0x29')]]={'$like':'%'+_0x4b6f99[_0x7995('0x34')][_0x7995('0x3c')]+'%'};return _0x5688a1;}})});}_0x514445=_[_0x7995('0x3d')]({},_0x514445,_0x4b6f99[_0x7995('0x3f')]);var _0x298fc2={'where':_0x514445[_0x7995('0x3b')]};return db[_0x7995('0x40')][_0x7995('0x1f')](_0x298fc2)[_0x7995('0x26')](function(_0x6fe77b){_0x3250e0[_0x7995('0x1f')]=_0x6fe77b;if(_0x4b6f99[_0x7995('0x34')]['includeAll']){_0x514445['include']=[{'all':!![]}];}return db[_0x7995('0x40')][_0x7995('0x41')](_0x514445);})['then'](function(_0x4b0855){_0x3250e0[_0x7995('0x42')]=_0x4b0855;return _0x3250e0;})['then'](respondWithFilteredResult(_0x9b2a15,_0x514445))['catch'](handleError(_0x9b2a15,null));};exports[_0x7995('0x43')]=function(_0x36e28b,_0x35c8ff){var _0x576b96={'raw':!![],'where':{'id':_0x36e28b['params']['id']}},_0x46ac4f={};_0x46ac4f[_0x7995('0x2f')]=_['keys'](db['ChatOfflineMessage'][_0x7995('0x44')]);_0x46ac4f[_0x7995('0x34')]=_[_0x7995('0x31')](_0x36e28b[_0x7995('0x34')]);_0x46ac4f['filters']=_[_0x7995('0x33')](_0x46ac4f[_0x7995('0x2f')],_0x46ac4f[_0x7995('0x34')]);_0x576b96[_0x7995('0x35')]=_['intersection'](_0x46ac4f['model'],qs[_0x7995('0x36')](_0x36e28b['query'][_0x7995('0x36')]));_0x576b96['attributes']=_0x576b96[_0x7995('0x35')]['length']?_0x576b96[_0x7995('0x35')]:_0x46ac4f[_0x7995('0x2f')];if(_0x36e28b['query'][_0x7995('0x45')]){_0x576b96[_0x7995('0x46')]=[{'all':!![]}];}_0x576b96=_[_0x7995('0x3d')]({},_0x576b96,_0x36e28b[_0x7995('0x3f')]);return db['ChatOfflineMessage'][_0x7995('0x47')](_0x576b96)[_0x7995('0x26')](handleEntityNotFound(_0x35c8ff,null))[_0x7995('0x26')](respondWithResult(_0x35c8ff,null))['catch'](handleError(_0x35c8ff,null));};exports[_0x7995('0x48')]=function(_0x44f516,_0x511567){return db[_0x7995('0x40')][_0x7995('0x48')](_0x44f516['body'],{})[_0x7995('0x26')](respondWithResult(_0x511567,0xc9))[_0x7995('0x49')](handleError(_0x511567,null));};exports['update']=function(_0x3d1dbb,_0x5843ba){if(_0x3d1dbb[_0x7995('0x4a')]['id']){delete _0x3d1dbb[_0x7995('0x4a')]['id'];}return db[_0x7995('0x40')][_0x7995('0x47')]({'where':{'id':_0x3d1dbb[_0x7995('0x4b')]['id']}})[_0x7995('0x26')](handleEntityNotFound(_0x5843ba,null))[_0x7995('0x26')](saveUpdates(_0x3d1dbb['body'],null))[_0x7995('0x26')](respondWithResult(_0x5843ba,null))[_0x7995('0x49')](handleError(_0x5843ba,null));};exports[_0x7995('0x27')]=function(_0x4ffc8a,_0x19da63){return db[_0x7995('0x4c')][_0x7995('0x41')]({'where':{'ChatOfflineMessageId':_0x4ffc8a['params']['id']},'raw':!![]})['then'](function(_0x5a592e){_0x5a592e[_0x7995('0x4d')](function(_0x1fd1ca){var _0x4cf5db=path[_0x7995('0x4e')](config[_0x7995('0x4f')],_0x7995('0x50'),_0x7995('0x51'),_0x7995('0x52'),'offline-chat',_0x1fd1ca[_0x7995('0x53')]);var _0x4ab09f=fs[_0x7995('0x54')](_0x4cf5db);if(_0x4ab09f)fs_extra[_0x7995('0x55')](_0x4cf5db);});})[_0x7995('0x26')](function(){return db['ChatOfflineMessage']['find']({'where':{'id':_0x4ffc8a['params']['id']},'individualHooks':!![]});})['then'](handleEntityNotFound(_0x19da63,null))[_0x7995('0x26')](removeEntity(_0x19da63,null))[_0x7995('0x49')](handleError(_0x19da63,null));};exports[_0x7995('0x56')]=function(_0x150261,_0x1d957e){return db[_0x7995('0x40')][_0x7995('0x56')]()[_0x7995('0x26')](respondWithResult(_0x1d957e,null))[_0x7995('0x49')](handleError(_0x1d957e,null));};
\ No newline at end of file
+var _0x7a54=['filter','VIRTUAL','includeAll','include','findAll','rows','show','params','length','merge','options','find','catch','body','Attachment','join','server','attachments','offline-chat','basename','remove','describe','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','ChatOfflineMessage','fieldName','type','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x186376,_0x5d988a){var _0x2dbdd9=function(_0x96908e){while(--_0x96908e){_0x186376['push'](_0x186376['shift']());}};_0x2dbdd9(++_0x5d988a);}(_0x7a54,0x106));var _0x47a5=function(_0x1c0082,_0x8be926){_0x1c0082=_0x1c0082-0x0;var _0x291ec2=_0x7a54[_0x1c0082];return _0x291ec2;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x29')]=function(_0x136b14,_0x16631f){var _0x361bfa={},_0x1127f8={},_0x11a4fa={'count':0x0,'rows':[]};var _0x3ad507=_['map'](db[_0x47a5('0x2a')]['rawAttributes'],function(_0x2ef875){return{'name':_0x2ef875[_0x47a5('0x2b')],'type':_0x2ef875[_0x47a5('0x2c')]['key']};});_0x1127f8[_0x47a5('0x2d')]=_[_0x47a5('0x2e')](_0x3ad507,_0x47a5('0x27'));_0x1127f8[_0x47a5('0x2f')]=_['keys'](_0x136b14['query']);_0x1127f8[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x1127f8['model'],_0x1127f8['query']);_0x361bfa[_0x47a5('0x32')]=_[_0x47a5('0x31')](_0x1127f8['model'],qs[_0x47a5('0x33')](_0x136b14['query'][_0x47a5('0x33')]));_0x361bfa[_0x47a5('0x32')]=_0x361bfa['attributes']['length']?_0x361bfa[_0x47a5('0x32')]:_0x1127f8['model'];if(!_0x136b14[_0x47a5('0x2f')][_0x47a5('0x34')](_0x47a5('0x35'))){_0x361bfa['limit']=qs[_0x47a5('0x1d')](_0x136b14['query']['limit']);_0x361bfa[_0x47a5('0x1a')]=qs['offset'](_0x136b14[_0x47a5('0x2f')]['offset']);}_0x361bfa[_0x47a5('0x36')]=qs[_0x47a5('0x37')](_0x136b14[_0x47a5('0x2f')][_0x47a5('0x37')]);_0x361bfa[_0x47a5('0x38')]=qs[_0x47a5('0x30')](_[_0x47a5('0x39')](_0x136b14[_0x47a5('0x2f')],_0x1127f8[_0x47a5('0x30')]),_0x3ad507);if(_0x136b14['query'][_0x47a5('0x3a')]){_0x361bfa[_0x47a5('0x38')]=_['merge'](_0x361bfa[_0x47a5('0x38')],{'$or':_[_0x47a5('0x2e')](_0x3ad507,function(_0x1d4348){if(_0x1d4348['type']!==_0x47a5('0x3b')){var _0x10f660={};_0x10f660[_0x1d4348['name']]={'$like':'%'+_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3a')]+'%'};return _0x10f660;}})});}_0x361bfa=_['merge']({},_0x361bfa,_0x136b14['options']);var _0x5ebd8c={'where':_0x361bfa[_0x47a5('0x38')]};return db['ChatOfflineMessage'][_0x47a5('0x1c')](_0x5ebd8c)[_0x47a5('0x23')](function(_0x301a85){_0x11a4fa[_0x47a5('0x1c')]=_0x301a85;if(_0x136b14[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x361bfa[_0x47a5('0x3d')]=[{'all':!![]}];}return db[_0x47a5('0x2a')][_0x47a5('0x3e')](_0x361bfa);})[_0x47a5('0x23')](function(_0x280500){_0x11a4fa[_0x47a5('0x3f')]=_0x280500;return _0x11a4fa;})[_0x47a5('0x23')](respondWithFilteredResult(_0x16631f,_0x361bfa))['catch'](handleError(_0x16631f,null));};exports[_0x47a5('0x40')]=function(_0x1c36fa,_0x331474){var _0x23bd8d={'raw':!![],'where':{'id':_0x1c36fa[_0x47a5('0x41')]['id']}},_0x586f4f={};_0x586f4f['model']=_['keys'](db['ChatOfflineMessage']['rawAttributes']);_0x586f4f[_0x47a5('0x2f')]=_['keys'](_0x1c36fa[_0x47a5('0x2f')]);_0x586f4f[_0x47a5('0x30')]=_[_0x47a5('0x31')](_0x586f4f['model'],_0x586f4f[_0x47a5('0x2f')]);_0x23bd8d[_0x47a5('0x32')]=_['intersection'](_0x586f4f['model'],qs[_0x47a5('0x33')](_0x1c36fa['query'][_0x47a5('0x33')]));_0x23bd8d[_0x47a5('0x32')]=_0x23bd8d[_0x47a5('0x32')][_0x47a5('0x42')]?_0x23bd8d[_0x47a5('0x32')]:_0x586f4f[_0x47a5('0x2d')];if(_0x1c36fa[_0x47a5('0x2f')][_0x47a5('0x3c')]){_0x23bd8d[_0x47a5('0x3d')]=[{'all':!![]}];}_0x23bd8d=_[_0x47a5('0x43')]({},_0x23bd8d,_0x1c36fa[_0x47a5('0x44')]);return db[_0x47a5('0x2a')][_0x47a5('0x45')](_0x23bd8d)[_0x47a5('0x23')](handleEntityNotFound(_0x331474,null))[_0x47a5('0x23')](respondWithResult(_0x331474,null))[_0x47a5('0x46')](handleError(_0x331474,null));};exports['create']=function(_0x2d38de,_0x23bb04){return db['ChatOfflineMessage']['create'](_0x2d38de[_0x47a5('0x47')],{})['then'](respondWithResult(_0x23bb04,0xc9))[_0x47a5('0x46')](handleError(_0x23bb04,null));};exports[_0x47a5('0x22')]=function(_0x54c35f,_0x4f62d3){if(_0x54c35f[_0x47a5('0x47')]['id']){delete _0x54c35f['body']['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x54c35f[_0x47a5('0x41')]['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x4f62d3,null))[_0x47a5('0x23')](saveUpdates(_0x54c35f[_0x47a5('0x47')],null))[_0x47a5('0x23')](respondWithResult(_0x4f62d3,null))['catch'](handleError(_0x4f62d3,null));};exports['destroy']=function(_0x2dd1db,_0x411230){return db[_0x47a5('0x48')][_0x47a5('0x3e')]({'where':{'ChatOfflineMessageId':_0x2dd1db[_0x47a5('0x41')]['id']},'raw':!![]})[_0x47a5('0x23')](function(_0x249de5){_0x249de5['forEach'](function(_0x45cca5){var _0x1c9a62=path[_0x47a5('0x49')](config['root'],_0x47a5('0x4a'),'files',_0x47a5('0x4b'),_0x47a5('0x4c'),_0x45cca5[_0x47a5('0x4d')]);var _0xf03bd5=fs['existsSync'](_0x1c9a62);if(_0xf03bd5)fs_extra[_0x47a5('0x4e')](_0x1c9a62);});})[_0x47a5('0x23')](function(){return db[_0x47a5('0x2a')][_0x47a5('0x45')]({'where':{'id':_0x2dd1db[_0x47a5('0x41')]['id']},'individualHooks':!![]});})[_0x47a5('0x23')](handleEntityNotFound(_0x411230,null))[_0x47a5('0x23')](removeEntity(_0x411230,null))['catch'](handleError(_0x411230,null));};exports[_0x47a5('0x4f')]=function(_0x43721b,_0x187d7e){return db[_0x47a5('0x2a')][_0x47a5('0x4f')]()[_0x47a5('0x23')](respondWithResult(_0x187d7e,null))['catch'](handleError(_0x187d7e,null));};
\ No newline at end of file
index 0748cac..4ffdcf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54f3=['remove','emit','hook','exports','events','../../mysqldb','ChatOfflineMessage','save'];(function(_0x4413d0,_0x17891e){var _0x448742=function(_0x4e310d){while(--_0x4e310d){_0x4413d0['push'](_0x4413d0['shift']());}};_0x448742(++_0x17891e);}(_0x54f3,0xec));var _0x354f=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x54f3[_0x5d6456];return _0x4d66c1;};'use strict';var EventEmitter=require(_0x354f('0x0'));var ChatOfflineMessage=require(_0x354f('0x1'))['db'][_0x354f('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x354f('0x3'),'afterUpdate':'update','afterDestroy':_0x354f('0x4')};function emitEvent(_0xa2db9f){return function(_0x48f384,_0x7fd3ef,_0x556bfa){ChatOfflineMessageEvents[_0x354f('0x5')](_0xa2db9f+':'+_0x48f384['id'],_0x48f384);ChatOfflineMessageEvents[_0x354f('0x5')](_0xa2db9f,_0x48f384);_0x556bfa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x354f('0x6')](e,emitEvent(event));}}module[_0x354f('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0xb606=['emit','hook','exports','../../mysqldb','ChatOfflineMessage','save','update','remove'];(function(_0x397014,_0x17cc12){var _0x1163f7=function(_0x290ac1){while(--_0x290ac1){_0x397014['push'](_0x397014['shift']());}};_0x1163f7(++_0x17cc12);}(_0xb606,0xfb));var _0x6b60=function(_0x5f25b3,_0x35481a){_0x5f25b3=_0x5f25b3-0x0;var _0x4ab9bf=_0xb606[_0x5f25b3];return _0x4ab9bf;};'use strict';var EventEmitter=require('events');var ChatOfflineMessage=require(_0x6b60('0x0'))['db'][_0x6b60('0x1')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6b60('0x2'),'afterUpdate':_0x6b60('0x3'),'afterDestroy':_0x6b60('0x4')};function emitEvent(_0x6bbf34){return function(_0x52594c,_0x22ac35,_0x2daf5e){ChatOfflineMessageEvents[_0x6b60('0x5')](_0x6bbf34+':'+_0x52594c['id'],_0x52594c);ChatOfflineMessageEvents['emit'](_0x6bbf34,_0x52594c);_0x2daf5e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x6b60('0x6')](e,emitEvent(event));}}module[_0x6b60('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
index 405336c..fac776e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f16=['chat_offline_messages','utf8mb4','utf8mb4_unicode_ci','./chatOfflineMessage.attributes','exports','define'];(function(_0x5c737c,_0x57be0c){var _0x1b197b=function(_0x2d2a01){while(--_0x2d2a01){_0x5c737c['push'](_0x5c737c['shift']());}};_0x1b197b(++_0x57be0c);}(_0x7f16,0x129));var _0x67f1=function(_0x380c7f,_0x234003){_0x380c7f=_0x380c7f-0x0;var _0x57f3c2=_0x7f16[_0x380c7f];return _0x57f3c2;};'use strict';var attributes=require(_0x67f1('0x0'));module[_0x67f1('0x1')]=function(_0x349e08){return _0x349e08[_0x67f1('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x67f1('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x67f1('0x4'),'collate':_0x67f1('0x5')});};
\ No newline at end of file
+var _0x8a41=['utf8mb4_unicode_ci','define','ChatOfflineMessage','utf8mb4'];(function(_0x53fad9,_0xa46b4){var _0x1d6db5=function(_0x575d73){while(--_0x575d73){_0x53fad9['push'](_0x53fad9['shift']());}};_0x1d6db5(++_0xa46b4);}(_0x8a41,0x15d));var _0x18a4=function(_0x27c156,_0x14ce9b){_0x27c156=_0x27c156-0x0;var _0x4a94af=_0x8a41[_0x27c156];return _0x4a94af;};'use strict';var attributes=require('./chatOfflineMessage.attributes');module['exports']=function(_0x21472f){return _0x21472f[_0x18a4('0x0')](_0x18a4('0x1'),attributes,{'tableName':'chat_offline_messages','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x18a4('0x2'),'collate':_0x18a4('0x3')});};
\ No newline at end of file
index e684a9a..8823adf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2a=['request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','then','ChatOfflineMessage,\x20%s,\x20%s'];(function(_0x51cf0e,_0x2267b0){var _0x351a93=function(_0x262532){while(--_0x262532){_0x51cf0e['push'](_0x51cf0e['shift']());}};_0x351a93(++_0x2267b0);}(_0xcd2a,0x1d7));var _0xacd2=function(_0x405385,_0x56f573){_0x405385=_0x405385-0x0;var _0x43837b=_0xcd2a[_0x405385];return _0x43837b;};'use strict';var _=require(_0xacd2('0x0'));var util=require('util');var moment=require(_0xacd2('0x1'));var BPromise=require('bluebird');var rs=require(_0xacd2('0x2'));var fs=require('fs');var Redis=require(_0xacd2('0x3'));var db=require(_0xacd2('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xacd2('0x5'))(_0xacd2('0x6'));var config=require(_0xacd2('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xacd2('0x8')][_0xacd2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4294f7,_0x5cfa9b,_0x5ce9e2){return new BPromise(function(_0x35755d,_0x1b96db){return client['request'](_0x4294f7,_0x5ce9e2)[_0xacd2('0xa')](function(_0x1aad1a){logger['info'](_0xacd2('0xb'),_0x5cfa9b,_0xacd2('0xc'));logger[_0xacd2('0xd')](_0xacd2('0xe'),_0x5cfa9b,_0xacd2('0xc'),JSON[_0xacd2('0xf')](_0x1aad1a));if(_0x1aad1a['error']){if(_0x1aad1a[_0xacd2('0x10')][_0xacd2('0x11')]===0x1f4){logger[_0xacd2('0x10')]('ChatOfflineMessage,\x20%s,\x20%s',_0x5cfa9b,_0x1aad1a[_0xacd2('0x10')][_0xacd2('0x12')]);return _0x1b96db(_0x1aad1a[_0xacd2('0x10')][_0xacd2('0x12')]);}logger[_0xacd2('0x10')](_0xacd2('0xb'),_0x5cfa9b,_0x1aad1a['error'][_0xacd2('0x12')]);return _0x35755d(_0x1aad1a['error'][_0xacd2('0x12')]);}else{logger[_0xacd2('0x13')](_0xacd2('0xb'),_0x5cfa9b,_0xacd2('0xc'));_0x35755d(_0x1aad1a[_0xacd2('0x14')][_0xacd2('0x12')]);}})['catch'](function(_0x5e0206){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x5cfa9b,_0x5e0206);_0x1b96db(_0x5e0206);});});}
\ No newline at end of file
+var _0x70ff=['http','request','then','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x5570ba,_0x59da83){var _0x415507=function(_0x1b920f){while(--_0x1b920f){_0x5570ba['push'](_0x5570ba['shift']());}};_0x415507(++_0x59da83);}(_0x70ff,0x1ce));var _0xf70f=function(_0x3c989b,_0x53999a){_0x3c989b=_0x3c989b-0x0;var _0x1c68d2=_0x70ff[_0x3c989b];return _0x1c68d2;};'use strict';var _=require(_0xf70f('0x0'));var util=require(_0xf70f('0x1'));var moment=require(_0xf70f('0x2'));var BPromise=require(_0xf70f('0x3'));var rs=require(_0xf70f('0x4'));var fs=require('fs');var Redis=require(_0xf70f('0x5'));var db=require(_0xf70f('0x6'))['db'];var utils=require(_0xf70f('0x7'));var logger=require(_0xf70f('0x8'))(_0xf70f('0x9'));var config=require(_0xf70f('0xa'));var jayson=require(_0xf70f('0xb'));var client=jayson[_0xf70f('0xc')][_0xf70f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x30db8a,_0x442b2d,_0x4d3634){return new BPromise(function(_0x5d4a24,_0xbd6e2c){return client[_0xf70f('0xe')](_0x30db8a,_0x4d3634)[_0xf70f('0xf')](function(_0x222744){logger['info'](_0xf70f('0x10'),_0x442b2d,_0xf70f('0x11'));logger[_0xf70f('0x12')]('ChatOfflineMessage,\x20%s,\x20%s,\x20%s',_0x442b2d,'request\x20sent',JSON[_0xf70f('0x13')](_0x222744));if(_0x222744[_0xf70f('0x14')]){if(_0x222744['error']['code']===0x1f4){logger['error'](_0xf70f('0x10'),_0x442b2d,_0x222744['error']['message']);return _0xbd6e2c(_0x222744[_0xf70f('0x14')][_0xf70f('0x15')]);}logger[_0xf70f('0x14')](_0xf70f('0x10'),_0x442b2d,_0x222744[_0xf70f('0x14')]['message']);return _0x5d4a24(_0x222744[_0xf70f('0x14')][_0xf70f('0x15')]);}else{logger[_0xf70f('0x16')](_0xf70f('0x10'),_0x442b2d,'request\x20sent');_0x5d4a24(_0x222744[_0xf70f('0x17')][_0xf70f('0x15')]);}})[_0xf70f('0x18')](function(_0x59fd5c){logger['error']('ChatOfflineMessage,\x20%s,\x20%s',_0x442b2d,_0x59fd5c);_0xbd6e2c(_0x59fd5c);});});}
\ No newline at end of file
index 24e274c..876a374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1971=['/describe','describe','/:id','show','post','create','put','update','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index'];(function(_0x55e73b,_0x2d1040){var _0x10c6bc=function(_0x1bceee){while(--_0x1bceee){_0x55e73b['push'](_0x55e73b['shift']());}};_0x10c6bc(++_0x2d1040);}(_0x1971,0x198));var _0x1197=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x1971[_0x4cf98e];return _0x1623ac;};'use strict';var multer=require(_0x1197('0x0'));var util=require('util');var path=require(_0x1197('0x1'));var timeout=require(_0x1197('0x2'));var express=require(_0x1197('0x3'));var router=express['Router']();var fs_extra=require(_0x1197('0x4'));var auth=require(_0x1197('0x5'));var interaction=require(_0x1197('0x6'));var config=require(_0x1197('0x7'));var controller=require(_0x1197('0x8'));router[_0x1197('0x9')]('/',auth[_0x1197('0xa')](),controller[_0x1197('0xb')]);router['get'](_0x1197('0xc'),auth[_0x1197('0xa')](),controller[_0x1197('0xd')]);router[_0x1197('0x9')](_0x1197('0xe'),auth[_0x1197('0xa')](),controller[_0x1197('0xf')]);router[_0x1197('0x10')]('/',auth[_0x1197('0xa')](),controller[_0x1197('0x11')]);router[_0x1197('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x1197('0x13')]);router['delete'](_0x1197('0xe'),auth[_0x1197('0xa')](),controller['destroy']);module[_0x1197('0x14')]=router;
\ No newline at end of file
+var _0x6d8e=['path','connect-timeout','Router','fs-extra','../../components/interaction/service','isAuthenticated','get','/describe','/:id','show','post','create','put','update','destroy','exports','multer','util'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x6d8e,0x154));var _0xe6d8=function(_0x2881d9,_0x128a32){_0x2881d9=_0x2881d9-0x0;var _0x50e78b=_0x6d8e[_0x2881d9];return _0x50e78b;};'use strict';var multer=require(_0xe6d8('0x0'));var util=require(_0xe6d8('0x1'));var path=require(_0xe6d8('0x2'));var timeout=require(_0xe6d8('0x3'));var express=require('express');var router=express[_0xe6d8('0x4')]();var fs_extra=require(_0xe6d8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xe6d8('0x6'));var config=require('../../config/environment');var controller=require('./chatOfflineMessage.controller');router['get']('/',auth[_0xe6d8('0x7')](),controller['index']);router[_0xe6d8('0x8')](_0xe6d8('0x9'),auth[_0xe6d8('0x7')](),controller['describe']);router[_0xe6d8('0x8')](_0xe6d8('0xa'),auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xb')]);router[_0xe6d8('0xc')]('/',auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xd')]);router[_0xe6d8('0xe')](_0xe6d8('0xa'),auth[_0xe6d8('0x7')](),controller[_0xe6d8('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xe6d8('0x10')]);module[_0xe6d8('0x11')]=router;
\ No newline at end of file
index 546f6a1..ba04652 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9986=['mouseOver','sequelize','exports','STRING','ENUM','timeout'];(function(_0xdcfd9c,_0x4588e4){var _0x48e652=function(_0x4c3777){while(--_0x4c3777){_0xdcfd9c['push'](_0xdcfd9c['shift']());}};_0x48e652(++_0x4588e4);}(_0x9986,0x115));var _0x6998=function(_0x394550,_0x2bb482){_0x394550=_0x394550-0x0;var _0x3aabd8=_0x9986[_0x394550];return _0x3aabd8;};'use strict';var Sequelize=require(_0x6998('0x0'));module[_0x6998('0x1')]={'name':{'type':Sequelize[_0x6998('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x6998('0x3')]('mouseOver',_0x6998('0x4')),'defaultValue':_0x6998('0x5')},'selector':{'type':Sequelize[_0x6998('0x2')]},'timeout':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd3fa=['STRING','ENUM','timeout','mouseOver','INTEGER','exports'];(function(_0x2f8aeb,_0x1f53af){var _0x234dd7=function(_0x1dd7ae){while(--_0x1dd7ae){_0x2f8aeb['push'](_0x2f8aeb['shift']());}};_0x234dd7(++_0x1f53af);}(_0xd3fa,0xd7));var _0xad3f=function(_0x3fd719,_0xcf1547){_0x3fd719=_0x3fd719-0x0;var _0x4e02a3=_0xd3fa[_0x3fd719];return _0x4e02a3;};'use strict';var Sequelize=require('sequelize');module[_0xad3f('0x0')]={'name':{'type':Sequelize[_0xad3f('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xad3f('0x2')]('mouseOver',_0xad3f('0x3')),'defaultValue':_0xad3f('0x4')},'selector':{'type':Sequelize[_0xad3f('0x1')]},'timeout':{'type':Sequelize[_0xad3f('0x5')]}};
\ No newline at end of file
index ee823c9..d65e20d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['attributes','fields','length','includeAll','include','merge','options','ChatProactiveAction','find','catch','create','body','params','destroy','rimraf','fast-json-patch','request-promise','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','status','end','json','offset','undefined','count','limit','set','reject','update','then','sendStatus','error','stack','name','send','show','model','keys','rawAttributes','query','filters','intersection'];(function(_0x35387d,_0x1ba72f){var _0x3aba56=function(_0x42cd08){while(--_0x42cd08){_0x35387d['push'](_0x35387d['shift']());}};_0x3aba56(++_0x1ba72f);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x5e5957,_0xbfaefc){_0x5e5957=_0x5e5957-0x0;var _0x15b47e=_0xbfe8[_0x5e5957];return _0x15b47e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8bfe('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8bfe('0x1'));var rp=require(_0x8bfe('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x8bfe('0x3'));var util=require(_0x8bfe('0x4'));var path=require('path');var sox=require(_0x8bfe('0x5'));var csv=require(_0x8bfe('0x6'));var ejs=require(_0x8bfe('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8bfe('0x8'));var squel=require(_0x8bfe('0x9'));var crypto=require(_0x8bfe('0xa'));var jsforce=require(_0x8bfe('0xb'));var deskjs=require(_0x8bfe('0xc'));var toCsv=require(_0x8bfe('0x6'));var querystring=require(_0x8bfe('0xd'));var Papa=require(_0x8bfe('0xe'));var Redis=require(_0x8bfe('0xf'));var authService=require(_0x8bfe('0x10'));var qs=require(_0x8bfe('0x11'));var as=require(_0x8bfe('0x12'));var hardwareService=require(_0x8bfe('0x13'));var logger=require(_0x8bfe('0x14'))(_0x8bfe('0x15'));var utils=require('../../config/utils');var config=require(_0x8bfe('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x8bfe('0x17'))['db'];function respondWithStatusCode(_0x2f479d,_0x22a131){_0x22a131=_0x22a131||0xcc;return function(_0x5ba48c){if(_0x5ba48c){return _0x2f479d['sendStatus'](_0x22a131);}return _0x2f479d[_0x8bfe('0x18')](_0x22a131)[_0x8bfe('0x19')]();};}function respondWithResult(_0x22737f,_0x36fd25){_0x36fd25=_0x36fd25||0xc8;return function(_0x46c8e3){if(_0x46c8e3){return _0x22737f['status'](_0x36fd25)[_0x8bfe('0x1a')](_0x46c8e3);}};}function respondWithFilteredResult(_0x5520d7,_0x55914b){return function(_0x778f01){if(_0x778f01){var _0xe57cb1=typeof _0x55914b[_0x8bfe('0x1b')]==='undefined'&&typeof _0x55914b['limit']===_0x8bfe('0x1c');var _0x5019ba=_0x778f01['count'];var _0x2e7c29=_0xe57cb1?0x0:_0x55914b[_0x8bfe('0x1b')];var _0x5d8bf1=_0xe57cb1?_0x778f01[_0x8bfe('0x1d')]:_0x55914b[_0x8bfe('0x1b')]+_0x55914b[_0x8bfe('0x1e')];var _0x3b0837;if(_0x5d8bf1>=_0x5019ba){_0x5d8bf1=_0x5019ba;_0x3b0837=0xc8;}else{_0x3b0837=0xce;}_0x5520d7['status'](_0x3b0837);return _0x5520d7[_0x8bfe('0x1f')]('Content-Range',_0x2e7c29+'-'+_0x5d8bf1+'/'+_0x5019ba)[_0x8bfe('0x1a')](_0x778f01);}return null;};}function patchUpdates(_0x3f8050){return function(_0x3c6e7b){try{jsonpatch['apply'](_0x3c6e7b,_0x3f8050,!![]);}catch(_0x55af8c){return BPromise[_0x8bfe('0x20')](_0x55af8c);}return _0x3c6e7b['save']();};}function saveUpdates(_0x55f5bc,_0xef5e81){return function(_0x5397fb){if(_0x5397fb){return _0x5397fb[_0x8bfe('0x21')](_0x55f5bc)['then'](function(_0x34043a){return _0x34043a;});}return null;};}function removeEntity(_0x19058e,_0x42a93f){return function(_0x260dd9){if(_0x260dd9){return _0x260dd9['destroy']()[_0x8bfe('0x22')](function(){_0x19058e[_0x8bfe('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2f73d0,_0x1789f7){return function(_0x46526f){if(!_0x46526f){_0x2f73d0[_0x8bfe('0x23')](0x194);}return _0x46526f;};}function handleError(_0x2dc8d5,_0x91271f){_0x91271f=_0x91271f||0x1f4;return function(_0x4fcb3a){logger[_0x8bfe('0x24')](_0x4fcb3a[_0x8bfe('0x25')]);if(_0x4fcb3a[_0x8bfe('0x26')]){delete _0x4fcb3a[_0x8bfe('0x26')];}_0x2dc8d5[_0x8bfe('0x18')](_0x91271f)[_0x8bfe('0x27')](_0x4fcb3a);};}exports[_0x8bfe('0x28')]=function(_0x2cbfb3,_0x15fccc){var _0x2b47c6={'raw':!![],'where':{'id':_0x2cbfb3['params']['id']}},_0x3c6a3c={};_0x3c6a3c[_0x8bfe('0x29')]=_[_0x8bfe('0x2a')](db['ChatProactiveAction'][_0x8bfe('0x2b')]);_0x3c6a3c[_0x8bfe('0x2c')]=_[_0x8bfe('0x2a')](_0x2cbfb3['query']);_0x3c6a3c[_0x8bfe('0x2d')]=_[_0x8bfe('0x2e')](_0x3c6a3c['model'],_0x3c6a3c['query']);_0x2b47c6[_0x8bfe('0x2f')]=_[_0x8bfe('0x2e')](_0x3c6a3c[_0x8bfe('0x29')],qs[_0x8bfe('0x30')](_0x2cbfb3[_0x8bfe('0x2c')][_0x8bfe('0x30')]));_0x2b47c6[_0x8bfe('0x2f')]=_0x2b47c6[_0x8bfe('0x2f')][_0x8bfe('0x31')]?_0x2b47c6[_0x8bfe('0x2f')]:_0x3c6a3c['model'];if(_0x2cbfb3['query'][_0x8bfe('0x32')]){_0x2b47c6[_0x8bfe('0x33')]=[{'all':!![]}];}_0x2b47c6=_[_0x8bfe('0x34')]({},_0x2b47c6,_0x2cbfb3[_0x8bfe('0x35')]);return db[_0x8bfe('0x36')][_0x8bfe('0x37')](_0x2b47c6)[_0x8bfe('0x22')](handleEntityNotFound(_0x15fccc,null))['then'](respondWithResult(_0x15fccc,null))[_0x8bfe('0x38')](handleError(_0x15fccc,null));};exports[_0x8bfe('0x39')]=function(_0x4f35ba,_0x2e73ab){return db[_0x8bfe('0x36')][_0x8bfe('0x39')](_0x4f35ba[_0x8bfe('0x3a')],{})[_0x8bfe('0x22')](respondWithResult(_0x2e73ab,0xc9))['catch'](handleError(_0x2e73ab,null));};exports[_0x8bfe('0x21')]=function(_0x506e50,_0x5a90b9){if(_0x506e50['body']['id']){delete _0x506e50['body']['id'];}return db[_0x8bfe('0x36')][_0x8bfe('0x37')]({'where':{'id':_0x506e50[_0x8bfe('0x3b')]['id']}})[_0x8bfe('0x22')](handleEntityNotFound(_0x5a90b9,null))[_0x8bfe('0x22')](saveUpdates(_0x506e50[_0x8bfe('0x3a')],null))[_0x8bfe('0x22')](respondWithResult(_0x5a90b9,null))['catch'](handleError(_0x5a90b9,null));};exports[_0x8bfe('0x3c')]=function(_0x5ca84b,_0x5c5801){return db['ChatProactiveAction'][_0x8bfe('0x37')]({'where':{'id':_0x5ca84b[_0x8bfe('0x3b')]['id']}})[_0x8bfe('0x22')](handleEntityNotFound(_0x5c5801,null))[_0x8bfe('0x22')](removeEntity(_0x5c5801,null))[_0x8bfe('0x38')](handleError(_0x5c5801,null));};
\ No newline at end of file
+var _0xc43c=['status','end','json','undefined','limit','offset','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','params','model','keys','ChatProactiveAction','query','filters','intersection','attributes','fields','length','include','merge','options','catch','body','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0xc43c,0x152));var _0xcc43=function(_0x3081ff,_0x31a160){_0x3081ff=_0x3081ff-0x0;var _0x1a729f=_0xc43c[_0x3081ff];return _0x1a729f;};'use strict';var emlformat=require(_0xcc43('0x0'));var rimraf=require(_0xcc43('0x1'));var zipdir=require(_0xcc43('0x2'));var jsonpatch=require(_0xcc43('0x3'));var rp=require(_0xcc43('0x4'));var moment=require(_0xcc43('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xcc43('0x6'));var util=require(_0xcc43('0x7'));var path=require('path');var sox=require(_0xcc43('0x8'));var csv=require(_0xcc43('0x9'));var ejs=require(_0xcc43('0xa'));var fs=require('fs');var fs_extra=require(_0xcc43('0xb'));var _=require(_0xcc43('0xc'));var squel=require(_0xcc43('0xd'));var crypto=require(_0xcc43('0xe'));var jsforce=require(_0xcc43('0xf'));var deskjs=require(_0xcc43('0x10'));var toCsv=require(_0xcc43('0x9'));var querystring=require('querystring');var Papa=require(_0xcc43('0x11'));var Redis=require(_0xcc43('0x12'));var authService=require(_0xcc43('0x13'));var qs=require(_0xcc43('0x14'));var as=require(_0xcc43('0x15'));var hardwareService=require(_0xcc43('0x16'));var logger=require('../../config/logger')(_0xcc43('0x17'));var utils=require(_0xcc43('0x18'));var config=require(_0xcc43('0x19'));var licenseUtil=require(_0xcc43('0x1a'));var db=require(_0xcc43('0x1b'))['db'];function respondWithStatusCode(_0x2e2292,_0x4967cb){_0x4967cb=_0x4967cb||0xcc;return function(_0x3587b8){if(_0x3587b8){return _0x2e2292['sendStatus'](_0x4967cb);}return _0x2e2292[_0xcc43('0x1c')](_0x4967cb)[_0xcc43('0x1d')]();};}function respondWithResult(_0x5289af,_0x4ac110){_0x4ac110=_0x4ac110||0xc8;return function(_0xe312ba){if(_0xe312ba){return _0x5289af[_0xcc43('0x1c')](_0x4ac110)[_0xcc43('0x1e')](_0xe312ba);}};}function respondWithFilteredResult(_0x3b9eff,_0x34326c){return function(_0x345333){if(_0x345333){var _0x4c34a7=typeof _0x34326c['offset']===_0xcc43('0x1f')&&typeof _0x34326c[_0xcc43('0x20')]===_0xcc43('0x1f');var _0x2e053d=_0x345333['count'];var _0x33fe3a=_0x4c34a7?0x0:_0x34326c[_0xcc43('0x21')];var _0x266af8=_0x4c34a7?_0x345333['count']:_0x34326c['offset']+_0x34326c[_0xcc43('0x20')];var _0x18a1ae;if(_0x266af8>=_0x2e053d){_0x266af8=_0x2e053d;_0x18a1ae=0xc8;}else{_0x18a1ae=0xce;}_0x3b9eff['status'](_0x18a1ae);return _0x3b9eff['set'](_0xcc43('0x22'),_0x33fe3a+'-'+_0x266af8+'/'+_0x2e053d)[_0xcc43('0x1e')](_0x345333);}return null;};}function patchUpdates(_0x2418d3){return function(_0x3a1005){try{jsonpatch[_0xcc43('0x23')](_0x3a1005,_0x2418d3,!![]);}catch(_0x3ae999){return BPromise[_0xcc43('0x24')](_0x3ae999);}return _0x3a1005[_0xcc43('0x25')]();};}function saveUpdates(_0x216bdb,_0x188edd){return function(_0x4f72a2){if(_0x4f72a2){return _0x4f72a2[_0xcc43('0x26')](_0x216bdb)[_0xcc43('0x27')](function(_0x2e26b3){return _0x2e26b3;});}return null;};}function removeEntity(_0x40137c,_0x410d18){return function(_0x52c22e){if(_0x52c22e){return _0x52c22e[_0xcc43('0x28')]()[_0xcc43('0x27')](function(){_0x40137c[_0xcc43('0x1c')](0xcc)[_0xcc43('0x1d')]();});}};}function handleEntityNotFound(_0x440efa,_0x52137f){return function(_0x1b44ce){if(!_0x1b44ce){_0x440efa[_0xcc43('0x29')](0x194);}return _0x1b44ce;};}function handleError(_0x110956,_0x2fd407){_0x2fd407=_0x2fd407||0x1f4;return function(_0x38b860){logger[_0xcc43('0x2a')](_0x38b860[_0xcc43('0x2b')]);if(_0x38b860[_0xcc43('0x2c')]){delete _0x38b860[_0xcc43('0x2c')];}_0x110956[_0xcc43('0x1c')](_0x2fd407)['send'](_0x38b860);};}exports['show']=function(_0x33a463,_0xb70262){var _0x1727e4={'raw':!![],'where':{'id':_0x33a463[_0xcc43('0x2d')]['id']}},_0x430664={};_0x430664[_0xcc43('0x2e')]=_[_0xcc43('0x2f')](db[_0xcc43('0x30')]['rawAttributes']);_0x430664[_0xcc43('0x31')]=_[_0xcc43('0x2f')](_0x33a463[_0xcc43('0x31')]);_0x430664[_0xcc43('0x32')]=_[_0xcc43('0x33')](_0x430664[_0xcc43('0x2e')],_0x430664[_0xcc43('0x31')]);_0x1727e4[_0xcc43('0x34')]=_[_0xcc43('0x33')](_0x430664['model'],qs[_0xcc43('0x35')](_0x33a463[_0xcc43('0x31')]['fields']));_0x1727e4[_0xcc43('0x34')]=_0x1727e4[_0xcc43('0x34')][_0xcc43('0x36')]?_0x1727e4[_0xcc43('0x34')]:_0x430664[_0xcc43('0x2e')];if(_0x33a463[_0xcc43('0x31')]['includeAll']){_0x1727e4[_0xcc43('0x37')]=[{'all':!![]}];}_0x1727e4=_[_0xcc43('0x38')]({},_0x1727e4,_0x33a463[_0xcc43('0x39')]);return db['ChatProactiveAction']['find'](_0x1727e4)[_0xcc43('0x27')](handleEntityNotFound(_0xb70262,null))['then'](respondWithResult(_0xb70262,null))[_0xcc43('0x3a')](handleError(_0xb70262,null));};exports['create']=function(_0x368b26,_0x58df74){return db[_0xcc43('0x30')]['create'](_0x368b26[_0xcc43('0x3b')],{})['then'](respondWithResult(_0x58df74,0xc9))[_0xcc43('0x3a')](handleError(_0x58df74,null));};exports['update']=function(_0x21fdea,_0x887d9c){if(_0x21fdea[_0xcc43('0x3b')]['id']){delete _0x21fdea[_0xcc43('0x3b')]['id'];}return db[_0xcc43('0x30')][_0xcc43('0x3c')]({'where':{'id':_0x21fdea['params']['id']}})[_0xcc43('0x27')](handleEntityNotFound(_0x887d9c,null))[_0xcc43('0x27')](saveUpdates(_0x21fdea['body'],null))[_0xcc43('0x27')](respondWithResult(_0x887d9c,null))[_0xcc43('0x3a')](handleError(_0x887d9c,null));};exports[_0xcc43('0x28')]=function(_0x4d6aa2,_0x27989b){return db[_0xcc43('0x30')][_0xcc43('0x3c')]({'where':{'id':_0x4d6aa2[_0xcc43('0x2d')]['id']}})['then'](handleEntityNotFound(_0x27989b,null))[_0xcc43('0x27')](removeEntity(_0x27989b,null))[_0xcc43('0x3a')](handleError(_0x27989b,null));};
\ No newline at end of file
index e498495..7d1cb88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68b4=['exports','define','chat_proactive_actions','lodash','util','api','moment','bluebird','request-promise','./chatProactiveAction.attributes'];(function(_0xc10d6f,_0x7ad78){var _0x441a9e=function(_0x1c7c3f){while(--_0x1c7c3f){_0xc10d6f['push'](_0xc10d6f['shift']());}};_0x441a9e(++_0x7ad78);}(_0x68b4,0x67));var _0x468b=function(_0x10767d,_0x2b448c){_0x10767d=_0x10767d-0x0;var _0x1eeb35=_0x68b4[_0x10767d];return _0x1eeb35;};'use strict';var _=require(_0x468b('0x0'));var util=require(_0x468b('0x1'));var logger=require('../../config/logger')(_0x468b('0x2'));var moment=require(_0x468b('0x3'));var BPromise=require(_0x468b('0x4'));var rp=require(_0x468b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x468b('0x6'));module[_0x468b('0x7')]=function(_0x517df8,_0x2dd41f){return _0x517df8[_0x468b('0x8')]('ChatProactiveAction',attributes,{'tableName':_0x468b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x515a=['define','ChatProactiveAction','chat_proactive_actions','lodash','util','api','../../config/environment','./chatProactiveAction.attributes','exports'];(function(_0x52d06b,_0x1a4321){var _0x51d13f=function(_0xfda2a8){while(--_0xfda2a8){_0x52d06b['push'](_0x52d06b['shift']());}};_0x51d13f(++_0x1a4321);}(_0x515a,0x1b3));var _0xa515=function(_0x428d9e,_0x50ab20){_0x428d9e=_0x428d9e-0x0;var _0x870c8a=_0x515a[_0x428d9e];return _0x870c8a;};'use strict';var _=require(_0xa515('0x0'));var util=require(_0xa515('0x1'));var logger=require('../../config/logger')(_0xa515('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa515('0x3'));var attributes=require(_0xa515('0x4'));module[_0xa515('0x5')]=function(_0x5726e6,_0x3426be){return _0x5726e6[_0xa515('0x6')](_0xa515('0x7'),attributes,{'tableName':_0xa515('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a330abd..c114d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c0=['info','ChatProactiveAction,\x20%s,\x20%s','stringify','code','error','message','request\x20sent','result','catch','util','bluebird','ioredis','../../config/utils','../../config/logger','client','http','request'];(function(_0x3acf94,_0x1e857b){var _0xe192f8=function(_0x2572ae){while(--_0x2572ae){_0x3acf94['push'](_0x3acf94['shift']());}};_0xe192f8(++_0x1e857b);}(_0xb0c0,0xc4));var _0x0b0c=function(_0x35175a,_0x29ed4a){_0x35175a=_0x35175a-0x0;var _0x24bf33=_0xb0c0[_0x35175a];return _0x24bf33;};'use strict';var _=require('lodash');var util=require(_0x0b0c('0x0'));var moment=require('moment');var BPromise=require(_0x0b0c('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0b0c('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0b0c('0x3'));var logger=require(_0x0b0c('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0b0c('0x5')][_0x0b0c('0x6')]({'port':0x232a});function respondWithRpcPromise(_0xa09a71,_0x578614,_0x222ded){return new BPromise(function(_0x510ba6,_0x5bf137){return client[_0x0b0c('0x7')](_0xa09a71,_0x222ded)['then'](function(_0x4e4bd1){logger[_0x0b0c('0x8')](_0x0b0c('0x9'),_0x578614,'request\x20sent');logger['debug']('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x578614,'request\x20sent',JSON[_0x0b0c('0xa')](_0x4e4bd1));if(_0x4e4bd1['error']){if(_0x4e4bd1['error'][_0x0b0c('0xb')]===0x1f4){logger[_0x0b0c('0xc')](_0x0b0c('0x9'),_0x578614,_0x4e4bd1[_0x0b0c('0xc')]['message']);return _0x5bf137(_0x4e4bd1[_0x0b0c('0xc')][_0x0b0c('0xd')]);}logger[_0x0b0c('0xc')](_0x0b0c('0x9'),_0x578614,_0x4e4bd1[_0x0b0c('0xc')]['message']);return _0x510ba6(_0x4e4bd1['error'][_0x0b0c('0xd')]);}else{logger[_0x0b0c('0x8')](_0x0b0c('0x9'),_0x578614,_0x0b0c('0xe'));_0x510ba6(_0x4e4bd1[_0x0b0c('0xf')]['message']);}})[_0x0b0c('0x10')](function(_0x4a3c05){logger[_0x0b0c('0xc')](_0x0b0c('0x9'),_0x578614,_0x4a3c05);_0x5bf137(_0x4a3c05);});});}
\ No newline at end of file
+var _0xfd5b=['http','request','then','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','ChatProactiveAction,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','client'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xfd5b,0xc0));var _0xbfd5=function(_0x291be9,_0x2fd057){_0x291be9=_0x291be9-0x0;var _0x525e3b=_0xfd5b[_0x291be9];return _0x525e3b;};'use strict';var _=require(_0xbfd5('0x0'));var util=require('util');var moment=require(_0xbfd5('0x1'));var BPromise=require(_0xbfd5('0x2'));var rs=require(_0xbfd5('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbfd5('0x4'))(_0xbfd5('0x5'));var config=require(_0xbfd5('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xbfd5('0x7')][_0xbfd5('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x402710,_0x27dcaa,_0x5a5d51){return new BPromise(function(_0x166925,_0xb57dfe){return client[_0xbfd5('0x9')](_0x402710,_0x5a5d51)[_0xbfd5('0xa')](function(_0x571925){logger[_0xbfd5('0xb')](_0xbfd5('0xc'),_0x27dcaa,_0xbfd5('0xd'));logger['debug'](_0xbfd5('0xe'),_0x27dcaa,_0xbfd5('0xd'),JSON['stringify'](_0x571925));if(_0x571925[_0xbfd5('0xf')]){if(_0x571925[_0xbfd5('0xf')][_0xbfd5('0x10')]===0x1f4){logger[_0xbfd5('0xf')](_0xbfd5('0xc'),_0x27dcaa,_0x571925[_0xbfd5('0xf')][_0xbfd5('0x11')]);return _0xb57dfe(_0x571925['error'][_0xbfd5('0x11')]);}logger['error'](_0xbfd5('0xc'),_0x27dcaa,_0x571925[_0xbfd5('0xf')]['message']);return _0x166925(_0x571925['error']['message']);}else{logger[_0xbfd5('0xb')](_0xbfd5('0xc'),_0x27dcaa,_0xbfd5('0xd'));_0x166925(_0x571925[_0xbfd5('0x12')][_0xbfd5('0x11')]);}})[_0xbfd5('0x13')](function(_0x2c60c4){logger[_0xbfd5('0xf')](_0xbfd5('0xc'),_0x27dcaa,_0x2c60c4);_0xb57dfe(_0x2c60c4);});});}
\ No newline at end of file
index 2d8c79a..8beab41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['create','put','/:id','delete','destroy','exports','multer','util','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','isAuthenticated','show','post'];(function(_0x4420ff,_0x482500){var _0x319aa0=function(_0x256897){while(--_0x256897){_0x4420ff['push'](_0x4420ff['shift']());}};_0x319aa0(++_0x482500);}(_0x5d17,0x114));var _0x75d1=function(_0x42d1c8,_0xc13c44){_0x42d1c8=_0x42d1c8-0x0;var _0x22f990=_0x5d17[_0x42d1c8];return _0x22f990;};'use strict';var multer=require(_0x75d1('0x0'));var util=require(_0x75d1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x75d1('0x2'));var router=express[_0x75d1('0x3')]();var fs_extra=require(_0x75d1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x75d1('0x5'));var config=require(_0x75d1('0x6'));var controller=require(_0x75d1('0x7'));router[_0x75d1('0x8')]('/:id',auth[_0x75d1('0x9')](),controller[_0x75d1('0xa')]);router[_0x75d1('0xb')]('/',auth[_0x75d1('0x9')](),controller[_0x75d1('0xc')]);router[_0x75d1('0xd')](_0x75d1('0xe'),auth['isAuthenticated'](),controller['update']);router[_0x75d1('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x75d1('0x10')]);module[_0x75d1('0x11')]=router;
\ No newline at end of file
+var _0x55ca=['multer','util','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','create','destroy','exports'];(function(_0x3a11cb,_0x860592){var _0x913418=function(_0x4dee82){while(--_0x4dee82){_0x3a11cb['push'](_0x3a11cb['shift']());}};_0x913418(++_0x860592);}(_0x55ca,0x126));var _0xa55c=function(_0x59ee91,_0x5ca1ef){_0x59ee91=_0x59ee91-0x0;var _0x51b0b7=_0x55ca[_0x59ee91];return _0x51b0b7;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller[_0xa55c('0xa')]);router['post']('/',auth[_0xa55c('0x9')](),controller[_0xa55c('0xb')]);router['put'](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller['update']);router['delete'](_0xa55c('0x8'),auth[_0xa55c('0x9')](),controller[_0xa55c('0xc')]);module[_0xa55c('0xd')]=router;
\ No newline at end of file
index d7ca9a8..c62f85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b69=['name','beepall','exports','STRING'];(function(_0xe4d35a,_0x4bd94d){var _0x249363=function(_0x3da3fe){while(--_0x3da3fe){_0xe4d35a['push'](_0xe4d35a['shift']());}};_0x249363(++_0x4bd94d);}(_0x7b69,0xb2));var _0x97b6=function(_0x437a0e,_0x45d781){_0x437a0e=_0x437a0e-0x0;var _0xa393fd=_0x7b69[_0x437a0e];return _0xa393fd;};'use strict';var Sequelize=require('sequelize');module[_0x97b6('0x0')]={'name':{'type':Sequelize[_0x97b6('0x1')],'unique':_0x97b6('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0x97b6('0x3'),'roundrobin')}};
\ No newline at end of file
+var _0x2fdd=['beepall','roundrobin','sequelize','exports','STRING','name','INTEGER','rrmemory'];(function(_0x51d252,_0x5453db){var _0x113bf2=function(_0x4e8003){while(--_0x4e8003){_0x51d252['push'](_0x51d252['shift']());}};_0x113bf2(++_0x5453db);}(_0x2fdd,0x13a));var _0xd2fd=function(_0x526730,_0x5e7f2a){_0x526730=_0x526730-0x0;var _0x5f0126=_0x2fdd[_0x526730];return _0x5f0126;};'use strict';var Sequelize=require(_0xd2fd('0x0'));module[_0xd2fd('0x1')]={'name':{'type':Sequelize[_0xd2fd('0x2')],'unique':_0xd2fd('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xd2fd('0x2')]},'timeout':{'type':Sequelize[_0xd2fd('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xd2fd('0x5'),_0xd2fd('0x6'),_0xd2fd('0x7'))}};
\ No newline at end of file
index 31e8a8a..172a1a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6073=['socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','http','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','ChatQueues','UserProfileResource','sendStatus','stack','send','index','map','key','model','name','keys','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','where','merge','options','ChatQueue','count','includeAll','include','findAll','rows','catch','show','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','params','describe','findOne','UserChatQueue','rawAttributes','pick','ChatQueueId','filter','updatedAt','createdAt','format','SIP','chatPause','getTeams','Team','nolimit','addTeams','ids','User','Agents','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','select','field','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','includes','union','compact','value','removeTeams','isEmpty','removeAgents','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost'];(function(_0x388854,_0x5bc29d){var _0x3d7656=function(_0x2df368){while(--_0x2df368){_0x388854['push'](_0x388854['shift']());}};_0x3d7656(++_0x5bc29d);}(_0x6073,0x7d));var _0x3607=function(_0x47f9ea,_0x4ec3d2){_0x47f9ea=_0x47f9ea-0x0;var _0x43d80b=_0x6073[_0x47f9ea];return _0x43d80b;};'use strict';var emlformat=require(_0x3607('0x0'));var rimraf=require(_0x3607('0x1'));var zipdir=require(_0x3607('0x2'));var jsonpatch=require(_0x3607('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3607('0x4'));var util=require(_0x3607('0x5'));var path=require(_0x3607('0x6'));var sox=require(_0x3607('0x7'));var csv=require(_0x3607('0x8'));var ejs=require(_0x3607('0x9'));var fs=require('fs');var fs_extra=require(_0x3607('0xa'));var _=require(_0x3607('0xb'));var squel=require(_0x3607('0xc'));var crypto=require(_0x3607('0xd'));var jsforce=require(_0x3607('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3607('0xf'));var Redis=require(_0x3607('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x3607('0x11'));var as=require(_0x3607('0x12'));var hardwareService=require(_0x3607('0x13'));var logger=require(_0x3607('0x14'))('api');var utils=require(_0x3607('0x15'));var config=require(_0x3607('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x3607('0x17'))['db'];config['redis']=_[_0x3607('0x18')](config[_0x3607('0x19')],{'host':_0x3607('0x1a'),'port':0x18eb});var socket=require(_0x3607('0x1b'))(new Redis(config[_0x3607('0x19')]));require(_0x3607('0x1c'))[_0x3607('0x1d')](socket);var jayson=require(_0x3607('0x1e'));var client=jayson[_0x3607('0x1f')][_0x3607('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x30b852,_0x51d4eb,_0x834e82,_0xc62459){return new BPromise(function(_0x5c67c,_0x40091d){var _0x55c637=_0xc62459||client;return _0x55c637[_0x3607('0x21')](_0x30b852,_0x834e82)['then'](function(_0x29346c){logger[_0x3607('0x22')](_0x3607('0x23'),_0x51d4eb,_0x3607('0x24'));logger['debug'](_0x3607('0x25'),_0x51d4eb,_0x3607('0x24'),JSON[_0x3607('0x26')](_0x29346c));if(_0x29346c[_0x3607('0x27')]){if(_0x29346c[_0x3607('0x27')][_0x3607('0x28')]===0x1f4){logger[_0x3607('0x27')]('ChatQueue,\x20%s,\x20%s',_0x51d4eb,_0x29346c[_0x3607('0x27')][_0x3607('0x29')]);return _0x40091d(_0x29346c[_0x3607('0x27')]['message']);}logger[_0x3607('0x27')](_0x3607('0x23'),_0x51d4eb,_0x29346c[_0x3607('0x27')]['message']);return _0x5c67c(_0x29346c[_0x3607('0x27')]['message']);}else{logger[_0x3607('0x22')](_0x3607('0x23'),_0x51d4eb,_0x3607('0x24'));_0x5c67c(_0x29346c['result']['message']);}})['catch'](function(_0x18a258){logger[_0x3607('0x27')]('ChatQueue,\x20%s,\x20%s',_0x51d4eb,_0x18a258);_0x40091d(_0x18a258);});});}function respondWithStatusCode(_0x33bb07,_0x49b6a4){_0x49b6a4=_0x49b6a4||0xcc;return function(_0x4f6b9e){if(_0x4f6b9e){return _0x33bb07['sendStatus'](_0x49b6a4);}return _0x33bb07[_0x3607('0x2a')](_0x49b6a4)[_0x3607('0x2b')]();};}function respondWithResult(_0x56455d,_0x41a962){_0x41a962=_0x41a962||0xc8;return function(_0x3dcfc4){if(_0x3dcfc4){return _0x56455d[_0x3607('0x2a')](_0x41a962)[_0x3607('0x2c')](_0x3dcfc4);}};}function respondWithFilteredResult(_0x324e37,_0x588446){return function(_0x5a157f){if(_0x5a157f){var _0x1b07d9=typeof _0x588446[_0x3607('0x2d')]===_0x3607('0x2e')&&typeof _0x588446[_0x3607('0x2f')]===_0x3607('0x2e');var _0x3101b4=_0x5a157f['count'];var _0x502133=_0x1b07d9?0x0:_0x588446[_0x3607('0x2d')];var _0x64db45=_0x1b07d9?_0x5a157f['count']:_0x588446['offset']+_0x588446['limit'];var _0xb870b9;if(_0x64db45>=_0x3101b4){_0x64db45=_0x3101b4;_0xb870b9=0xc8;}else{_0xb870b9=0xce;}_0x324e37[_0x3607('0x2a')](_0xb870b9);return _0x324e37[_0x3607('0x30')](_0x3607('0x31'),_0x502133+'-'+_0x64db45+'/'+_0x3101b4)[_0x3607('0x2c')](_0x5a157f);}return null;};}function patchUpdates(_0x421e81){return function(_0x5235c6){try{jsonpatch[_0x3607('0x32')](_0x5235c6,_0x421e81,!![]);}catch(_0x382c25){return BPromise[_0x3607('0x33')](_0x382c25);}return _0x5235c6[_0x3607('0x34')]();};}function saveUpdates(_0x37d928,_0x532e40){return function(_0x5bdd0a){if(_0x5bdd0a){return _0x5bdd0a[_0x3607('0x35')](_0x37d928)[_0x3607('0x36')](function(_0x3051ab){return _0x3051ab;});}return null;};}function removeEntity(_0x59ea5f,_0x2c5a31){return function(_0x585422){if(_0x585422){return _0x585422[_0x3607('0x37')]()['then'](function(){var _0x5decad=_0x585422[_0x3607('0x38')]({'plain':!![]});var _0x1d55a7=_0x3607('0x39');return db[_0x3607('0x3a')][_0x3607('0x37')]({'where':{'type':_0x1d55a7,'resourceId':_0x5decad['id']}})[_0x3607('0x36')](function(){return _0x585422;});})[_0x3607('0x36')](function(){_0x59ea5f[_0x3607('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2828a4,_0xbd30d0){return function(_0x33ad10){if(!_0x33ad10){_0x2828a4[_0x3607('0x3b')](0x194);}return _0x33ad10;};}function handleError(_0xb276a1,_0x129827){_0x129827=_0x129827||0x1f4;return function(_0x16fd5b){logger[_0x3607('0x27')](_0x16fd5b[_0x3607('0x3c')]);if(_0x16fd5b['name']){delete _0x16fd5b['name'];}_0xb276a1[_0x3607('0x2a')](_0x129827)[_0x3607('0x3d')](_0x16fd5b);};}exports[_0x3607('0x3e')]=function(_0x4ee259,_0x2b91fb){var _0x1f04ce={},_0x15142e={},_0x648e7c={'count':0x0,'rows':[]};var _0x20c4d0=_[_0x3607('0x3f')](db['ChatQueue']['rawAttributes'],function(_0x415703){return{'name':_0x415703['fieldName'],'type':_0x415703['type'][_0x3607('0x40')]};});_0x15142e[_0x3607('0x41')]=_['map'](_0x20c4d0,_0x3607('0x42'));_0x15142e['query']=_[_0x3607('0x43')](_0x4ee259[_0x3607('0x44')]);_0x15142e['filters']=_['intersection'](_0x15142e[_0x3607('0x41')],_0x15142e[_0x3607('0x44')]);_0x1f04ce[_0x3607('0x45')]=_[_0x3607('0x46')](_0x15142e[_0x3607('0x41')],qs[_0x3607('0x47')](_0x4ee259[_0x3607('0x44')]['fields']));_0x1f04ce[_0x3607('0x45')]=_0x1f04ce['attributes'][_0x3607('0x48')]?_0x1f04ce[_0x3607('0x45')]:_0x15142e[_0x3607('0x41')];if(!_0x4ee259[_0x3607('0x44')][_0x3607('0x49')]('nolimit')){_0x1f04ce['limit']=qs[_0x3607('0x2f')](_0x4ee259[_0x3607('0x44')]['limit']);_0x1f04ce[_0x3607('0x2d')]=qs[_0x3607('0x2d')](_0x4ee259['query'][_0x3607('0x2d')]);}_0x1f04ce[_0x3607('0x4a')]=qs[_0x3607('0x4b')](_0x4ee259[_0x3607('0x44')]['sort']);_0x1f04ce['where']=qs[_0x3607('0x4c')](_['pick'](_0x4ee259['query'],_0x15142e[_0x3607('0x4c')]),_0x20c4d0);if(_0x4ee259[_0x3607('0x44')]['filter']){_0x1f04ce[_0x3607('0x4d')]=_[_0x3607('0x4e')](_0x1f04ce[_0x3607('0x4d')],{'$or':_[_0x3607('0x3f')](_0x20c4d0,function(_0x353782){if(_0x353782['type']!=='VIRTUAL'){var _0x595c8c={};_0x595c8c[_0x353782['name']]={'$like':'%'+_0x4ee259[_0x3607('0x44')]['filter']+'%'};return _0x595c8c;}})});}_0x1f04ce=_[_0x3607('0x4e')]({},_0x1f04ce,_0x4ee259[_0x3607('0x4f')]);var _0x351b2b={'where':_0x1f04ce[_0x3607('0x4d')]};return db[_0x3607('0x50')][_0x3607('0x51')](_0x351b2b)[_0x3607('0x36')](function(_0x27d4e0){_0x648e7c[_0x3607('0x51')]=_0x27d4e0;if(_0x4ee259[_0x3607('0x44')][_0x3607('0x52')]){_0x1f04ce[_0x3607('0x53')]=[{'all':!![]}];}return db[_0x3607('0x50')][_0x3607('0x54')](_0x1f04ce);})[_0x3607('0x36')](function(_0x46904b){_0x648e7c[_0x3607('0x55')]=_0x46904b;return _0x648e7c;})[_0x3607('0x36')](respondWithFilteredResult(_0x2b91fb,_0x1f04ce))[_0x3607('0x56')](handleError(_0x2b91fb,null));};exports[_0x3607('0x57')]=function(_0x3f0345,_0x5af441){var _0x522be2={'raw':!![],'where':{'id':_0x3f0345['params']['id']}},_0x4ab527={};_0x4ab527[_0x3607('0x41')]=_[_0x3607('0x43')](db[_0x3607('0x50')]['rawAttributes']);_0x4ab527['query']=_[_0x3607('0x43')](_0x3f0345[_0x3607('0x44')]);_0x4ab527[_0x3607('0x4c')]=_[_0x3607('0x46')](_0x4ab527[_0x3607('0x41')],_0x4ab527[_0x3607('0x44')]);_0x522be2[_0x3607('0x45')]=_['intersection'](_0x4ab527[_0x3607('0x41')],qs[_0x3607('0x47')](_0x3f0345[_0x3607('0x44')]['fields']));_0x522be2[_0x3607('0x45')]=_0x522be2[_0x3607('0x45')][_0x3607('0x48')]?_0x522be2[_0x3607('0x45')]:_0x4ab527[_0x3607('0x41')];if(_0x3f0345[_0x3607('0x44')][_0x3607('0x52')]){_0x522be2[_0x3607('0x53')]=[{'all':!![]}];}_0x522be2=_[_0x3607('0x4e')]({},_0x522be2,_0x3f0345[_0x3607('0x4f')]);return db['ChatQueue'][_0x3607('0x58')](_0x522be2)[_0x3607('0x36')](handleEntityNotFound(_0x5af441,null))['then'](respondWithResult(_0x5af441,null))[_0x3607('0x56')](handleError(_0x5af441,null));};exports[_0x3607('0x59')]=function(_0x37a8a7,_0x147b20){return db['ChatQueue'][_0x3607('0x59')](_0x37a8a7[_0x3607('0x5a')],{})[_0x3607('0x36')](function(_0x4f85be){var _0x4d896a=_0x37a8a7[_0x3607('0x5b')][_0x3607('0x38')]({'plain':!![]});if(!_0x4d896a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4d896a[_0x3607('0x5c')]===_0x3607('0x5b')){var _0x476352=_0x4f85be['get']({'plain':!![]});var _0x16eeed=_0x3607('0x39');return db[_0x3607('0x5d')][_0x3607('0x58')]({'where':{'name':_0x16eeed,'userProfileId':_0x4d896a[_0x3607('0x5e')]},'raw':!![]})[_0x3607('0x36')](function(_0x566671){if(_0x566671&&_0x566671[_0x3607('0x5f')]===0x0){return db[_0x3607('0x3a')]['create']({'name':_0x476352[_0x3607('0x42')],'resourceId':_0x476352['id'],'type':_0x566671[_0x3607('0x42')],'sectionId':_0x566671['id']},{})[_0x3607('0x36')](function(){return _0x4f85be;});}else{return _0x4f85be;}})[_0x3607('0x56')](function(_0x474f75){logger[_0x3607('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x474f75);throw _0x474f75;});}return _0x4f85be;})['then'](respondWithResult(_0x147b20,0xc9))[_0x3607('0x56')](handleError(_0x147b20,null));};exports[_0x3607('0x35')]=function(_0x2f9c0f,_0x211927){if(_0x2f9c0f[_0x3607('0x5a')]['id']){delete _0x2f9c0f[_0x3607('0x5a')]['id'];}return db[_0x3607('0x50')]['find']({'where':{'id':_0x2f9c0f[_0x3607('0x60')]['id']}})[_0x3607('0x36')](handleEntityNotFound(_0x211927,null))[_0x3607('0x36')](saveUpdates(_0x2f9c0f[_0x3607('0x5a')],null))[_0x3607('0x36')](respondWithResult(_0x211927,null))[_0x3607('0x56')](handleError(_0x211927,null));};exports['destroy']=function(_0x37f584,_0x1ee026){return db[_0x3607('0x50')][_0x3607('0x58')]({'where':{'id':_0x37f584[_0x3607('0x60')]['id']}})[_0x3607('0x36')](handleEntityNotFound(_0x1ee026,null))[_0x3607('0x36')](removeEntity(_0x1ee026,null))[_0x3607('0x56')](handleError(_0x1ee026,null));};exports[_0x3607('0x61')]=function(_0x1520cd,_0xcb73c5){return db[_0x3607('0x50')][_0x3607('0x61')]()[_0x3607('0x36')](respondWithResult(_0xcb73c5,null))[_0x3607('0x56')](handleError(_0xcb73c5,null));};exports['getMembers']=function(_0x3a00b7,_0x3bad72,_0x39b59b){var _0x4b6faa={'raw':!![],'where':{}},_0x178159={},_0x188819;return db[_0x3607('0x50')][_0x3607('0x62')]({'where':{'id':_0x3a00b7['params']['id']}})[_0x3607('0x36')](handleEntityNotFound(_0x3bad72,null))[_0x3607('0x36')](function(_0x2f4112){if(_0x2f4112){_0x188819=_0x2f4112[_0x3607('0x38')]({'plain':!![]});_0x178159[_0x3607('0x41')]=_[_0x3607('0x43')](db[_0x3607('0x63')][_0x3607('0x64')]);_0x178159[_0x3607('0x44')]=_['keys'](_0x3a00b7['query']);_0x178159[_0x3607('0x4c')]=_[_0x3607('0x46')](_0x178159[_0x3607('0x41')],_0x178159[_0x3607('0x44')]);_0x4b6faa[_0x3607('0x45')]=_[_0x3607('0x46')](_0x178159[_0x3607('0x41')],qs['fields'](_0x3a00b7['query']['fields']));_0x4b6faa['attributes']=_0x4b6faa[_0x3607('0x45')][_0x3607('0x48')]?_0x4b6faa[_0x3607('0x45')]:_0x178159[_0x3607('0x41')];if(!_0x3a00b7[_0x3607('0x44')][_0x3607('0x49')]('nolimit')){_0x4b6faa[_0x3607('0x2f')]=qs[_0x3607('0x2f')](_0x3a00b7[_0x3607('0x44')][_0x3607('0x2f')]);_0x4b6faa['offset']=qs[_0x3607('0x2d')](_0x3a00b7[_0x3607('0x44')][_0x3607('0x2d')]);}_0x4b6faa[_0x3607('0x4a')]=qs['sort'](_0x3a00b7[_0x3607('0x44')][_0x3607('0x4b')]);_0x4b6faa['where']=qs[_0x3607('0x4c')](_[_0x3607('0x65')](_0x3a00b7[_0x3607('0x44')],_0x178159[_0x3607('0x4c')]));_0x4b6faa['where'][_0x3607('0x66')]=_0x2f4112['id'];if(_0x3a00b7['query']['filter']){_0x4b6faa[_0x3607('0x4d')]=_['merge'](_0x4b6faa[_0x3607('0x4d')],{'$or':_[_0x3607('0x3f')](_0x4b6faa[_0x3607('0x45')],function(_0x416055){var _0x46591b={};_0x46591b[_0x416055]={'$like':'%'+_0x3a00b7['query'][_0x3607('0x67')]+'%'};return _0x46591b;})});}_0x4b6faa=_[_0x3607('0x4e')]({},_0x4b6faa,_0x3a00b7[_0x3607('0x4f')]);return db[_0x3607('0x63')][_0x3607('0x54')](_0x4b6faa);}})[_0x3607('0x36')](function(_0x52de51){if(_0x52de51){return db['User']['findAndCountAll']({'where':{'id':_[_0x3607('0x3f')](_0x52de51,'UserId'),'role':'agent'},'attributes':['id',_0x3607('0x42'),'chatPause',_0x3607('0x68'),_0x3607('0x69')]});}})[_0x3607('0x36')](function(_0x11a8a5){if(_0x11a8a5){return{'count':_0x11a8a5[_0x3607('0x51')],'rows':_[_0x3607('0x3f')](_0x11a8a5[_0x3607('0x55')],function(_0x53cf0f){return{'membername':_0x53cf0f[_0x3607('0x42')],'UserId':_0x53cf0f['id'],'queue_name':_0x188819[_0x3607('0x42')],'ChatQueueId':_0x188819['id'],'interface':util[_0x3607('0x6a')]('%s/%s',_0x3607('0x6b'),_0x53cf0f[_0x3607('0x42')]),'penalty':0x0,'paused':_0x53cf0f[_0x3607('0x6c')],'createdAt':_0x53cf0f[_0x3607('0x69')],'updatedAt':_0x53cf0f[_0x3607('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3607('0x36')](respondWithFilteredResult(_0x3bad72,_0x4b6faa))[_0x3607('0x56')](handleError(_0x3bad72,null));};exports[_0x3607('0x6d')]=function(_0x2d6cf1,_0x5ecc7c,_0x3c57f6){var _0x554e03={};var _0x392f09={};var _0x442131;var _0x1435a0;return db[_0x3607('0x50')]['findOne']({'where':{'id':_0x2d6cf1[_0x3607('0x60')]['id']}})[_0x3607('0x36')](handleEntityNotFound(_0x5ecc7c,null))[_0x3607('0x36')](function(_0x6603f4){if(_0x6603f4){_0x442131=_0x6603f4;_0x392f09[_0x3607('0x41')]=_[_0x3607('0x43')](db[_0x3607('0x6e')][_0x3607('0x64')]);_0x392f09['query']=_['keys'](_0x2d6cf1[_0x3607('0x44')]);_0x392f09[_0x3607('0x4c')]=_[_0x3607('0x46')](_0x392f09[_0x3607('0x41')],_0x392f09[_0x3607('0x44')]);_0x554e03[_0x3607('0x45')]=_[_0x3607('0x46')](_0x392f09[_0x3607('0x41')],qs[_0x3607('0x47')](_0x2d6cf1['query'][_0x3607('0x47')]));_0x554e03[_0x3607('0x45')]=_0x554e03[_0x3607('0x45')][_0x3607('0x48')]?_0x554e03[_0x3607('0x45')]:_0x392f09[_0x3607('0x41')];_0x554e03[_0x3607('0x4a')]=qs[_0x3607('0x4b')](_0x2d6cf1[_0x3607('0x44')][_0x3607('0x4b')]);_0x554e03[_0x3607('0x4d')]=qs[_0x3607('0x4c')](_[_0x3607('0x65')](_0x2d6cf1[_0x3607('0x44')],_0x392f09['filters']));if(_0x2d6cf1[_0x3607('0x44')]['filter']){_0x554e03[_0x3607('0x4d')]=_[_0x3607('0x4e')](_0x554e03[_0x3607('0x4d')],{'$or':_[_0x3607('0x3f')](_0x554e03[_0x3607('0x45')],function(_0x505737){var _0x19d878={};_0x19d878[_0x505737]={'$like':'%'+_0x2d6cf1['query'][_0x3607('0x67')]+'%'};return _0x19d878;})});}_0x554e03=_['merge']({},_0x554e03,_0x2d6cf1[_0x3607('0x4f')]);return _0x442131[_0x3607('0x6d')](_0x554e03);}})[_0x3607('0x36')](function(_0x3f20b6){if(_0x3f20b6){_0x1435a0=_0x3f20b6[_0x3607('0x48')];if(!_0x2d6cf1[_0x3607('0x44')]['hasOwnProperty'](_0x3607('0x6f'))){_0x554e03[_0x3607('0x2f')]=qs['limit'](_0x2d6cf1[_0x3607('0x44')][_0x3607('0x2f')]);_0x554e03[_0x3607('0x2d')]=qs[_0x3607('0x2d')](_0x2d6cf1[_0x3607('0x44')]['offset']);}return _0x442131[_0x3607('0x6d')](_0x554e03);}})[_0x3607('0x36')](function(_0x4f29d2){if(_0x4f29d2){return _0x4f29d2?{'count':_0x1435a0,'rows':_0x4f29d2}:null;}})[_0x3607('0x36')](respondWithResult(_0x5ecc7c,null))[_0x3607('0x56')](handleError(_0x5ecc7c,null));};exports[_0x3607('0x70')]=function(_0x41e5ae,_0x37ee32,_0x2671e5){var _0x308469=_0x41e5ae['body'][_0x3607('0x71')];return db[_0x3607('0x6e')]['findAll']({'where':{'id':_0x308469},'attributes':['id'],'include':[{'model':db[_0x3607('0x72')],'as':_0x3607('0x73'),'attributes':['id',_0x3607('0x42'),_0x3607('0x74'),'voicePause',_0x3607('0x75')],'raw':!![]}]})['then'](function(_0x33701d){if(_0x33701d){var _0x5be05a=_[_0x3607('0x76')](_0x33701d,function(_0x3b62db){var _0x4a7de3=_0x3b62db[_0x3607('0x38')]({'plain':!![]});return _0x4a7de3[_0x3607('0x73')];});return db[_0x3607('0x50')][_0x3607('0x58')]({'where':{'id':_0x41e5ae[_0x3607('0x60')]['id']}})[_0x3607('0x36')](function(_0x5d8696){return db[_0x3607('0x77')][_0x3607('0x78')](function(_0x32164a){return _0x5d8696[_0x3607('0x70')](_0x308469,{'transaction':_0x32164a})[_0x3607('0x36')](function(){return BPromise[_0x3607('0x79')](_0x5be05a,function(_0xe6fb57){return db['UserChatQueue'][_0x3607('0x7a')]({'where':{'UserId':_0xe6fb57['id'],'ChatQueueId':_0x41e5ae['params']['id']},'transaction':_0x32164a});});})[_0x3607('0x36')](function(){_0x5be05a[_0x3607('0x7b')](function(_0x1ac030){socket[_0x3607('0x7c')]('userChatQueue:save',{'UserId':_0x1ac030['id'],'ChatQueueId':_0x5d8696['id']});});});});});}})['then'](respondWithStatusCode(_0x37ee32,null))['catch'](handleError(_0x37ee32,null));};exports['removeTeams']=function(_0x429b98,_0x2ad9fc,_0x14b2d4){return db[_0x3607('0x6e')][_0x3607('0x54')]({'where':{'id':_0x429b98[_0x3607('0x44')][_0x3607('0x71')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3607('0x73'),'attributes':['id'],'raw':!![]}]})[_0x3607('0x36')](handleEntityNotFound(_0x2ad9fc,null))[_0x3607('0x36')](function(_0x527ade){var _0x567d19=_[_0x3607('0x3f')](_0x527ade,'id');var _0x1fc383=[];var _0x5da358=[];var _0x33029d=squel[_0x3607('0x7d')]();_0x33029d[_0x3607('0x7e')]('tq.TeamId')[_0x3607('0x7f')](_0x3607('0x80'),'tq')[_0x3607('0x81')](_0x3607('0x82'),'ut',_0x3607('0x83'))[_0x3607('0x4d')](_0x3607('0x84'),_0x429b98[_0x3607('0x60')]['id']);for(var _0x198279=0x0;_0x198279<_0x527ade[_0x3607('0x48')];_0x198279+=0x1){let _0x2000e3=_0x527ade[_0x198279];for(var _0x1732cd=0x0;_0x1732cd<_0x2000e3[_0x3607('0x73')]['length'];_0x1732cd+=0x1){let _0x242743=_0x2000e3[_0x3607('0x73')][_0x1732cd];var _0x54ac13=_0x33029d['clone']();_0x54ac13[_0x3607('0x4d')](_0x3607('0x85'),_0x242743['id']);_0x5da358[_0x3607('0x86')](db[_0x3607('0x77')][_0x3607('0x44')](_0x54ac13[_0x3607('0x87')](),{'type':db['sequelize'][_0x3607('0x88')][_0x3607('0x89')]})[_0x3607('0x36')](function(_0x26f364){if(_0x26f364[_0x3607('0x48')]===0x1){return _0x242743['id'];}else{var _0x4e0cf4=_[_0x3607('0x8a')](_[_0x3607('0x3f')](_0x26f364,'TeamId'),function(_0x378e05){return _[_0x3607('0x8b')](_0x567d19,_0x378e05);});if(_0x4e0cf4){return _0x242743['id'];}}}));}}return BPromise['all'](_0x5da358)[_0x3607('0x36')](function(_0x46abdd){_0x1fc383=_(_0x1fc383)[_0x3607('0x8c')](_0x46abdd)[_0x3607('0x8d')]()[_0x3607('0x8e')]();return db['ChatQueue'][_0x3607('0x58')]({'where':{'id':_0x429b98[_0x3607('0x60')]['id']}})[_0x3607('0x36')](function(_0x29f6d3){return db['sequelize']['transaction'](function(_0xbff4a9){return _0x29f6d3[_0x3607('0x8f')](_0x429b98[_0x3607('0x44')][_0x3607('0x71')],{'transaction':_0xbff4a9})[_0x3607('0x36')](function(){if(!_[_0x3607('0x90')](_0x1fc383)){return _0x29f6d3[_0x3607('0x91')](_0x1fc383,{'transaction':_0xbff4a9});}})[_0x3607('0x36')](function(){_0x1fc383['forEach'](function(_0x21c7a1){socket['emit'](_0x3607('0x92'),{'UserId':_0x21c7a1,'ChatQueueId':_0x29f6d3['id']});});});});});});})[_0x3607('0x36')](respondWithStatusCode(_0x2ad9fc,null))[_0x3607('0x56')](handleError(_0x2ad9fc,null));};exports[_0x3607('0x93')]=function(_0x908649,_0x2ff03d,_0x17b733){return db[_0x3607('0x50')][_0x3607('0x58')]({'where':{'id':_0x908649[_0x3607('0x60')]['id']}})['then'](handleEntityNotFound(_0x2ff03d,null))[_0x3607('0x36')](function(_0x33d9f4){if(_0x33d9f4){return _0x33d9f4[_0x3607('0x93')](_0x908649[_0x3607('0x5a')]['ids'],_[_0x3607('0x94')](_0x908649[_0x3607('0x5a')],[_0x3607('0x71'),'id'])||{})[_0x3607('0x95')](function(_0x5f2da0){for(var _0x485435=0x0;_0x485435<_0x908649[_0x3607('0x5a')]['ids']['length'];_0x485435+=0x1){socket[_0x3607('0x7c')]('userChatQueue:save',{'UserId':Number(_0x908649[_0x3607('0x5a')]['ids'][_0x485435]),'ChatQueueId':Number(_0x908649['params']['id'])});}return _0x5f2da0;});}})[_0x3607('0x36')](respondWithResult(_0x2ff03d,null))[_0x3607('0x56')](handleError(_0x2ff03d,null));};exports[_0x3607('0x91')]=function(_0x5ba155,_0x1e9538,_0x156f83){return db[_0x3607('0x50')]['find']({'where':{'id':_0x5ba155[_0x3607('0x60')]['id']}})[_0x3607('0x36')](handleEntityNotFound(_0x1e9538,null))[_0x3607('0x36')](function(_0x3040bf){if(_0x3040bf){return _0x3040bf[_0x3607('0x91')](_0x5ba155[_0x3607('0x44')]['ids'])['then'](function(){if(_[_0x3607('0x96')](_0x5ba155[_0x3607('0x44')]['ids'])){for(var _0x11dde2=0x0;_0x11dde2<_0x5ba155[_0x3607('0x44')][_0x3607('0x71')][_0x3607('0x48')];_0x11dde2+=0x1){socket[_0x3607('0x7c')](_0x3607('0x92'),{'UserId':Number(_0x5ba155[_0x3607('0x44')][_0x3607('0x71')][_0x11dde2]),'ChatQueueId':Number(_0x5ba155[_0x3607('0x60')]['id'])});}}else{socket[_0x3607('0x7c')](_0x3607('0x92'),{'UserId':Number(_0x5ba155['query'][_0x3607('0x71')]),'ChatQueueId':Number(_0x5ba155['params']['id'])});}});}})[_0x3607('0x36')](respondWithStatusCode(_0x1e9538,null))[_0x3607('0x56')](handleError(_0x1e9538,null));};exports[_0x3607('0x97')]=function(_0x52d52f,_0x26b7db,_0x146e13){var _0x1e416f={};var _0x28a3c2={};var _0x48453a;var _0x251451;return db['ChatQueue'][_0x3607('0x62')]({'where':{'id':_0x52d52f['params']['id']}})['then'](handleEntityNotFound(_0x26b7db,null))['then'](function(_0x48f9a1){if(_0x48f9a1){_0x48453a=_0x48f9a1;_0x28a3c2[_0x3607('0x41')]=_[_0x3607('0x43')](db[_0x3607('0x72')][_0x3607('0x64')]);_0x28a3c2[_0x3607('0x44')]=_['keys'](_0x52d52f[_0x3607('0x44')]);_0x28a3c2['filters']=_['intersection'](_0x28a3c2[_0x3607('0x41')],_0x28a3c2[_0x3607('0x44')]);_0x1e416f[_0x3607('0x45')]=_[_0x3607('0x46')](_0x28a3c2[_0x3607('0x41')],qs[_0x3607('0x47')](_0x52d52f['query'][_0x3607('0x47')]));_0x1e416f[_0x3607('0x45')]=_0x1e416f['attributes'][_0x3607('0x48')]?_0x1e416f[_0x3607('0x45')]:_0x28a3c2['model'];_0x1e416f[_0x3607('0x4a')]=qs['sort'](_0x52d52f[_0x3607('0x44')][_0x3607('0x4b')]);_0x1e416f[_0x3607('0x4d')]=qs[_0x3607('0x4c')](_[_0x3607('0x65')](_0x52d52f[_0x3607('0x44')],_0x28a3c2[_0x3607('0x4c')]));if(_0x52d52f[_0x3607('0x44')][_0x3607('0x67')]){_0x1e416f[_0x3607('0x4d')]=_['merge'](_0x1e416f[_0x3607('0x4d')],{'$or':_['map'](_0x1e416f[_0x3607('0x45')],function(_0x11dd34){var _0x3acfee={};_0x3acfee[_0x11dd34]={'$like':'%'+_0x52d52f['query']['filter']+'%'};return _0x3acfee;})});}_0x1e416f=_[_0x3607('0x4e')]({},_0x1e416f,_0x52d52f[_0x3607('0x4f')]);return _0x48453a['getAgents'](_0x1e416f);}})[_0x3607('0x36')](function(_0x3be829){if(_0x3be829){_0x251451=_0x3be829[_0x3607('0x48')];if(!_0x52d52f[_0x3607('0x44')][_0x3607('0x49')](_0x3607('0x6f'))){_0x1e416f[_0x3607('0x2f')]=qs[_0x3607('0x2f')](_0x52d52f[_0x3607('0x44')][_0x3607('0x2f')]);_0x1e416f[_0x3607('0x2d')]=qs[_0x3607('0x2d')](_0x52d52f[_0x3607('0x44')]['offset']);}return _0x48453a['getAgents'](_0x1e416f);}})[_0x3607('0x36')](function(_0x725954){if(_0x725954){return _0x725954?{'count':_0x251451,'rows':_0x725954}:null;}})[_0x3607('0x36')](respondWithResult(_0x26b7db,null))[_0x3607('0x56')](handleError(_0x26b7db,null));};
\ No newline at end of file
+var _0x04a8=['Team','Agents','online','voicePause','flatMap','sequelize','each','findOrCreate','emit','userChatQueue:save','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','toString','QueryTypes','every','all','compact','removeTeams','isEmpty','removeAgents','forEach','userChatQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','jayson/promise','client','http','then','info','debug','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','ChatQueue,\x20%s,\x20%s','message','result','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','ChatQueues','stack','name','index','ChatQueue','rawAttributes','fieldName','key','map','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filter','merge','type','options','where','includeAll','findAll','catch','params','model','length','include','create','get','role','user','UserProfileSection','find','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserChatQueue','filters','pick','ChatQueueId','User','findAndCountAll','UserId','agent','updatedAt','createdAt','rows','format','%s/%s','SIP','chatPause','getTeams','addTeams'];(function(_0x1589dd,_0x2b9d22){var _0x1bddd1=function(_0x3687f8){while(--_0x3687f8){_0x1589dd['push'](_0x1589dd['shift']());}};_0x1bddd1(++_0x2b9d22);}(_0x04a8,0x1e2));var _0x804a=function(_0x309351,_0x20b73f){_0x309351=_0x309351-0x0;var _0xf60dd7=_0x04a8[_0x309351];return _0xf60dd7;};'use strict';var emlformat=require(_0x804a('0x0'));var rimraf=require(_0x804a('0x1'));var zipdir=require(_0x804a('0x2'));var jsonpatch=require(_0x804a('0x3'));var rp=require('request-promise');var moment=require(_0x804a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x804a('0x5'));var util=require('util');var path=require(_0x804a('0x6'));var sox=require(_0x804a('0x7'));var csv=require('to-csv');var ejs=require(_0x804a('0x8'));var fs=require('fs');var fs_extra=require(_0x804a('0x9'));var _=require(_0x804a('0xa'));var squel=require('squel');var crypto=require(_0x804a('0xb'));var jsforce=require(_0x804a('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x804a('0xd'));var querystring=require(_0x804a('0xe'));var Papa=require(_0x804a('0xf'));var Redis=require(_0x804a('0x10'));var authService=require(_0x804a('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x804a('0x12'));var logger=require('../../config/logger')(_0x804a('0x13'));var utils=require(_0x804a('0x14'));var config=require(_0x804a('0x15'));var licenseUtil=require(_0x804a('0x16'));var db=require(_0x804a('0x17'))['db'];config[_0x804a('0x18')]=_[_0x804a('0x19')](config['redis'],{'host':_0x804a('0x1a'),'port':0x18eb});var socket=require(_0x804a('0x1b'))(new Redis(config[_0x804a('0x18')]));require(_0x804a('0x1c'))['register'](socket);var jayson=require(_0x804a('0x1d'));var client=jayson[_0x804a('0x1e')][_0x804a('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x405fa6,_0x1a9901,_0x3854fa,_0x2b95bf){return new BPromise(function(_0x3af818,_0x34842e){var _0x20d451=_0x2b95bf||client;return _0x20d451['request'](_0x405fa6,_0x3854fa)[_0x804a('0x20')](function(_0x4fd402){logger[_0x804a('0x21')]('ChatQueue,\x20%s,\x20%s',_0x1a9901,'request\x20sent');logger[_0x804a('0x22')](_0x804a('0x23'),_0x1a9901,_0x804a('0x24'),JSON['stringify'](_0x4fd402));if(_0x4fd402[_0x804a('0x25')]){if(_0x4fd402['error'][_0x804a('0x26')]===0x1f4){logger['error'](_0x804a('0x27'),_0x1a9901,_0x4fd402['error'][_0x804a('0x28')]);return _0x34842e(_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);}logger['error'](_0x804a('0x27'),_0x1a9901,_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);return _0x3af818(_0x4fd402[_0x804a('0x25')][_0x804a('0x28')]);}else{logger[_0x804a('0x21')](_0x804a('0x27'),_0x1a9901,_0x804a('0x24'));_0x3af818(_0x4fd402[_0x804a('0x29')][_0x804a('0x28')]);}})['catch'](function(_0x191702){logger[_0x804a('0x25')](_0x804a('0x27'),_0x1a9901,_0x191702);_0x34842e(_0x191702);});});}function respondWithStatusCode(_0x5b6cc3,_0x425fa6){_0x425fa6=_0x425fa6||0xcc;return function(_0x4c6990){if(_0x4c6990){return _0x5b6cc3[_0x804a('0x2a')](_0x425fa6);}return _0x5b6cc3[_0x804a('0x2b')](_0x425fa6)[_0x804a('0x2c')]();};}function respondWithResult(_0x47022d,_0x565cbf){_0x565cbf=_0x565cbf||0xc8;return function(_0x48efdf){if(_0x48efdf){return _0x47022d[_0x804a('0x2b')](_0x565cbf)[_0x804a('0x2d')](_0x48efdf);}};}function respondWithFilteredResult(_0x4f38c4,_0x1e12e9){return function(_0x3c9ace){if(_0x3c9ace){var _0x41999c=typeof _0x1e12e9[_0x804a('0x2e')]===_0x804a('0x2f')&&typeof _0x1e12e9[_0x804a('0x30')]===_0x804a('0x2f');var _0x1686fc=_0x3c9ace[_0x804a('0x31')];var _0x1b4fcf=_0x41999c?0x0:_0x1e12e9[_0x804a('0x2e')];var _0x29022d=_0x41999c?_0x3c9ace[_0x804a('0x31')]:_0x1e12e9[_0x804a('0x2e')]+_0x1e12e9['limit'];var _0x1b436a;if(_0x29022d>=_0x1686fc){_0x29022d=_0x1686fc;_0x1b436a=0xc8;}else{_0x1b436a=0xce;}_0x4f38c4[_0x804a('0x2b')](_0x1b436a);return _0x4f38c4['set'](_0x804a('0x32'),_0x1b4fcf+'-'+_0x29022d+'/'+_0x1686fc)[_0x804a('0x2d')](_0x3c9ace);}return null;};}function patchUpdates(_0x3b9f8e){return function(_0x5133e3){try{jsonpatch['apply'](_0x5133e3,_0x3b9f8e,!![]);}catch(_0x145e5a){return BPromise[_0x804a('0x33')](_0x145e5a);}return _0x5133e3[_0x804a('0x34')]();};}function saveUpdates(_0x26b707,_0x2063ba){return function(_0x1dca54){if(_0x1dca54){return _0x1dca54[_0x804a('0x35')](_0x26b707)[_0x804a('0x20')](function(_0x811aae){return _0x811aae;});}return null;};}function removeEntity(_0x43cdc1,_0x1df8f0){return function(_0x4aa7b6){if(_0x4aa7b6){return _0x4aa7b6[_0x804a('0x36')]()['then'](function(){var _0x5057b6=_0x4aa7b6['get']({'plain':!![]});var _0x2464a0=_0x804a('0x37');return db['UserProfileResource']['destroy']({'where':{'type':_0x2464a0,'resourceId':_0x5057b6['id']}})[_0x804a('0x20')](function(){return _0x4aa7b6;});})[_0x804a('0x20')](function(){_0x43cdc1[_0x804a('0x2b')](0xcc)[_0x804a('0x2c')]();});}};}function handleEntityNotFound(_0x1d446b,_0xdab077){return function(_0x274fc7){if(!_0x274fc7){_0x1d446b[_0x804a('0x2a')](0x194);}return _0x274fc7;};}function handleError(_0x4937e1,_0x1e8572){_0x1e8572=_0x1e8572||0x1f4;return function(_0x354f1f){logger[_0x804a('0x25')](_0x354f1f[_0x804a('0x38')]);if(_0x354f1f[_0x804a('0x39')]){delete _0x354f1f[_0x804a('0x39')];}_0x4937e1[_0x804a('0x2b')](_0x1e8572)['send'](_0x354f1f);};}exports[_0x804a('0x3a')]=function(_0x3a8951,_0x554379){var _0x14591f={},_0x1687ca={},_0x5a0614={'count':0x0,'rows':[]};var _0x3bfc50=_['map'](db[_0x804a('0x3b')][_0x804a('0x3c')],function(_0x1e9c36){return{'name':_0x1e9c36[_0x804a('0x3d')],'type':_0x1e9c36['type'][_0x804a('0x3e')]};});_0x1687ca['model']=_[_0x804a('0x3f')](_0x3bfc50,'name');_0x1687ca[_0x804a('0x40')]=_[_0x804a('0x41')](_0x3a8951[_0x804a('0x40')]);_0x1687ca['filters']=_[_0x804a('0x42')](_0x1687ca['model'],_0x1687ca[_0x804a('0x40')]);_0x14591f[_0x804a('0x43')]=_[_0x804a('0x42')](_0x1687ca['model'],qs['fields'](_0x3a8951[_0x804a('0x40')][_0x804a('0x44')]));_0x14591f['attributes']=_0x14591f[_0x804a('0x43')]['length']?_0x14591f[_0x804a('0x43')]:_0x1687ca['model'];if(!_0x3a8951['query'][_0x804a('0x45')](_0x804a('0x46'))){_0x14591f['limit']=qs[_0x804a('0x30')](_0x3a8951[_0x804a('0x40')][_0x804a('0x30')]);_0x14591f[_0x804a('0x2e')]=qs[_0x804a('0x2e')](_0x3a8951[_0x804a('0x40')][_0x804a('0x2e')]);}_0x14591f[_0x804a('0x47')]=qs[_0x804a('0x48')](_0x3a8951[_0x804a('0x40')][_0x804a('0x48')]);_0x14591f['where']=qs['filters'](_['pick'](_0x3a8951[_0x804a('0x40')],_0x1687ca['filters']),_0x3bfc50);if(_0x3a8951[_0x804a('0x40')][_0x804a('0x49')]){_0x14591f['where']=_[_0x804a('0x4a')](_0x14591f['where'],{'$or':_[_0x804a('0x3f')](_0x3bfc50,function(_0x3f5b99){if(_0x3f5b99[_0x804a('0x4b')]!=='VIRTUAL'){var _0x41e27d={};_0x41e27d[_0x3f5b99[_0x804a('0x39')]]={'$like':'%'+_0x3a8951[_0x804a('0x40')][_0x804a('0x49')]+'%'};return _0x41e27d;}})});}_0x14591f=_['merge']({},_0x14591f,_0x3a8951[_0x804a('0x4c')]);var _0x166440={'where':_0x14591f[_0x804a('0x4d')]};return db[_0x804a('0x3b')][_0x804a('0x31')](_0x166440)[_0x804a('0x20')](function(_0x25c6d7){_0x5a0614[_0x804a('0x31')]=_0x25c6d7;if(_0x3a8951[_0x804a('0x40')][_0x804a('0x4e')]){_0x14591f['include']=[{'all':!![]}];}return db[_0x804a('0x3b')][_0x804a('0x4f')](_0x14591f);})[_0x804a('0x20')](function(_0x345a4e){_0x5a0614['rows']=_0x345a4e;return _0x5a0614;})[_0x804a('0x20')](respondWithFilteredResult(_0x554379,_0x14591f))[_0x804a('0x50')](handleError(_0x554379,null));};exports['show']=function(_0x5960ce,_0x1fb919){var _0x385722={'raw':!![],'where':{'id':_0x5960ce[_0x804a('0x51')]['id']}},_0x500ae2={};_0x500ae2[_0x804a('0x52')]=_[_0x804a('0x41')](db[_0x804a('0x3b')][_0x804a('0x3c')]);_0x500ae2['query']=_[_0x804a('0x41')](_0x5960ce[_0x804a('0x40')]);_0x500ae2['filters']=_[_0x804a('0x42')](_0x500ae2['model'],_0x500ae2[_0x804a('0x40')]);_0x385722[_0x804a('0x43')]=_[_0x804a('0x42')](_0x500ae2['model'],qs[_0x804a('0x44')](_0x5960ce[_0x804a('0x40')][_0x804a('0x44')]));_0x385722['attributes']=_0x385722[_0x804a('0x43')][_0x804a('0x53')]?_0x385722[_0x804a('0x43')]:_0x500ae2['model'];if(_0x5960ce[_0x804a('0x40')][_0x804a('0x4e')]){_0x385722[_0x804a('0x54')]=[{'all':!![]}];}_0x385722=_['merge']({},_0x385722,_0x5960ce[_0x804a('0x4c')]);return db[_0x804a('0x3b')]['find'](_0x385722)[_0x804a('0x20')](handleEntityNotFound(_0x1fb919,null))['then'](respondWithResult(_0x1fb919,null))['catch'](handleError(_0x1fb919,null));};exports[_0x804a('0x55')]=function(_0x20e038,_0x4c50b1){return db[_0x804a('0x3b')][_0x804a('0x55')](_0x20e038['body'],{})[_0x804a('0x20')](function(_0x59e5fe){var _0x593caf=_0x20e038['user'][_0x804a('0x56')]({'plain':!![]});if(!_0x593caf)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x593caf[_0x804a('0x57')]===_0x804a('0x58')){var _0x164fae=_0x59e5fe[_0x804a('0x56')]({'plain':!![]});var _0x472213=_0x804a('0x37');return db[_0x804a('0x59')][_0x804a('0x5a')]({'where':{'name':_0x472213,'userProfileId':_0x593caf['userProfileId']},'raw':!![]})[_0x804a('0x20')](function(_0x372958){if(_0x372958&&_0x372958['autoAssociation']===0x0){return db[_0x804a('0x5b')][_0x804a('0x55')]({'name':_0x164fae['name'],'resourceId':_0x164fae['id'],'type':_0x372958['name'],'sectionId':_0x372958['id']},{})[_0x804a('0x20')](function(){return _0x59e5fe;});}else{return _0x59e5fe;}})[_0x804a('0x50')](function(_0x5a922f){logger['error'](_0x804a('0x5c'),_0x5a922f);throw _0x5a922f;});}return _0x59e5fe;})['then'](respondWithResult(_0x4c50b1,0xc9))[_0x804a('0x50')](handleError(_0x4c50b1,null));};exports[_0x804a('0x35')]=function(_0x158663,_0x15a99d){if(_0x158663[_0x804a('0x5d')]['id']){delete _0x158663[_0x804a('0x5d')]['id'];}return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x158663['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x15a99d,null))[_0x804a('0x20')](saveUpdates(_0x158663['body'],null))[_0x804a('0x20')](respondWithResult(_0x15a99d,null))[_0x804a('0x50')](handleError(_0x15a99d,null));};exports[_0x804a('0x36')]=function(_0x149d14,_0x15f9a7){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x149d14['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x15f9a7,null))['then'](removeEntity(_0x15f9a7,null))['catch'](handleError(_0x15f9a7,null));};exports[_0x804a('0x5e')]=function(_0x39b408,_0x4790c5){return db[_0x804a('0x3b')][_0x804a('0x5e')]()[_0x804a('0x20')](respondWithResult(_0x4790c5,null))[_0x804a('0x50')](handleError(_0x4790c5,null));};exports[_0x804a('0x5f')]=function(_0x168755,_0x10cab0,_0x5a8241){var _0x18ed35={'raw':!![],'where':{}},_0x3fdfa6={},_0x5d3168;return db[_0x804a('0x3b')][_0x804a('0x60')]({'where':{'id':_0x168755[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x10cab0,null))[_0x804a('0x20')](function(_0x4a8b9a){if(_0x4a8b9a){_0x5d3168=_0x4a8b9a[_0x804a('0x56')]({'plain':!![]});_0x3fdfa6[_0x804a('0x52')]=_[_0x804a('0x41')](db[_0x804a('0x61')]['rawAttributes']);_0x3fdfa6[_0x804a('0x40')]=_[_0x804a('0x41')](_0x168755[_0x804a('0x40')]);_0x3fdfa6[_0x804a('0x62')]=_[_0x804a('0x42')](_0x3fdfa6['model'],_0x3fdfa6[_0x804a('0x40')]);_0x18ed35['attributes']=_['intersection'](_0x3fdfa6[_0x804a('0x52')],qs[_0x804a('0x44')](_0x168755[_0x804a('0x40')][_0x804a('0x44')]));_0x18ed35[_0x804a('0x43')]=_0x18ed35[_0x804a('0x43')][_0x804a('0x53')]?_0x18ed35[_0x804a('0x43')]:_0x3fdfa6[_0x804a('0x52')];if(!_0x168755[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x18ed35[_0x804a('0x30')]=qs[_0x804a('0x30')](_0x168755['query'][_0x804a('0x30')]);_0x18ed35['offset']=qs[_0x804a('0x2e')](_0x168755[_0x804a('0x40')][_0x804a('0x2e')]);}_0x18ed35['order']=qs[_0x804a('0x48')](_0x168755[_0x804a('0x40')][_0x804a('0x48')]);_0x18ed35['where']=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x168755[_0x804a('0x40')],_0x3fdfa6[_0x804a('0x62')]));_0x18ed35[_0x804a('0x4d')][_0x804a('0x64')]=_0x4a8b9a['id'];if(_0x168755['query'][_0x804a('0x49')]){_0x18ed35[_0x804a('0x4d')]=_[_0x804a('0x4a')](_0x18ed35['where'],{'$or':_[_0x804a('0x3f')](_0x18ed35[_0x804a('0x43')],function(_0x45e08e){var _0x59dcd7={};_0x59dcd7[_0x45e08e]={'$like':'%'+_0x168755['query'][_0x804a('0x49')]+'%'};return _0x59dcd7;})});}_0x18ed35=_[_0x804a('0x4a')]({},_0x18ed35,_0x168755[_0x804a('0x4c')]);return db['UserChatQueue'][_0x804a('0x4f')](_0x18ed35);}})[_0x804a('0x20')](function(_0x16068e){if(_0x16068e){return db[_0x804a('0x65')][_0x804a('0x66')]({'where':{'id':_[_0x804a('0x3f')](_0x16068e,_0x804a('0x67')),'role':_0x804a('0x68')},'attributes':['id',_0x804a('0x39'),'chatPause',_0x804a('0x69'),_0x804a('0x6a')]});}})[_0x804a('0x20')](function(_0x3e4b23){if(_0x3e4b23){return{'count':_0x3e4b23[_0x804a('0x31')],'rows':_['map'](_0x3e4b23[_0x804a('0x6b')],function(_0xc0262a){return{'membername':_0xc0262a[_0x804a('0x39')],'UserId':_0xc0262a['id'],'queue_name':_0x5d3168['name'],'ChatQueueId':_0x5d3168['id'],'interface':util[_0x804a('0x6c')](_0x804a('0x6d'),_0x804a('0x6e'),_0xc0262a[_0x804a('0x39')]),'penalty':0x0,'paused':_0xc0262a[_0x804a('0x6f')],'createdAt':_0xc0262a['createdAt'],'updatedAt':_0xc0262a[_0x804a('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x804a('0x20')](respondWithFilteredResult(_0x10cab0,_0x18ed35))[_0x804a('0x50')](handleError(_0x10cab0,null));};exports[_0x804a('0x70')]=function(_0x271451,_0x26a066,_0xe47800){var _0x3801ca={};var _0x13bedc={};var _0x17223c;var _0x37c8b5;return db[_0x804a('0x3b')][_0x804a('0x60')]({'where':{'id':_0x271451[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x26a066,null))['then'](function(_0x3c32df){if(_0x3c32df){_0x17223c=_0x3c32df;_0x13bedc['model']=_['keys'](db['Team'][_0x804a('0x3c')]);_0x13bedc[_0x804a('0x40')]=_[_0x804a('0x41')](_0x271451[_0x804a('0x40')]);_0x13bedc[_0x804a('0x62')]=_['intersection'](_0x13bedc[_0x804a('0x52')],_0x13bedc[_0x804a('0x40')]);_0x3801ca['attributes']=_[_0x804a('0x42')](_0x13bedc[_0x804a('0x52')],qs[_0x804a('0x44')](_0x271451['query'][_0x804a('0x44')]));_0x3801ca[_0x804a('0x43')]=_0x3801ca[_0x804a('0x43')][_0x804a('0x53')]?_0x3801ca[_0x804a('0x43')]:_0x13bedc[_0x804a('0x52')];_0x3801ca['order']=qs[_0x804a('0x48')](_0x271451[_0x804a('0x40')][_0x804a('0x48')]);_0x3801ca['where']=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x271451[_0x804a('0x40')],_0x13bedc['filters']));if(_0x271451[_0x804a('0x40')][_0x804a('0x49')]){_0x3801ca[_0x804a('0x4d')]=_[_0x804a('0x4a')](_0x3801ca[_0x804a('0x4d')],{'$or':_[_0x804a('0x3f')](_0x3801ca[_0x804a('0x43')],function(_0x29ff6f){var _0x341589={};_0x341589[_0x29ff6f]={'$like':'%'+_0x271451[_0x804a('0x40')]['filter']+'%'};return _0x341589;})});}_0x3801ca=_[_0x804a('0x4a')]({},_0x3801ca,_0x271451[_0x804a('0x4c')]);return _0x17223c[_0x804a('0x70')](_0x3801ca);}})[_0x804a('0x20')](function(_0x189b1d){if(_0x189b1d){_0x37c8b5=_0x189b1d['length'];if(!_0x271451[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x3801ca[_0x804a('0x30')]=qs[_0x804a('0x30')](_0x271451[_0x804a('0x40')]['limit']);_0x3801ca[_0x804a('0x2e')]=qs[_0x804a('0x2e')](_0x271451['query'][_0x804a('0x2e')]);}return _0x17223c[_0x804a('0x70')](_0x3801ca);}})[_0x804a('0x20')](function(_0x46f6a8){if(_0x46f6a8){return _0x46f6a8?{'count':_0x37c8b5,'rows':_0x46f6a8}:null;}})[_0x804a('0x20')](respondWithResult(_0x26a066,null))[_0x804a('0x50')](handleError(_0x26a066,null));};exports[_0x804a('0x71')]=function(_0x3d0445,_0x374f4e,_0x3f6db3){var _0x3d951a=_0x3d0445['body']['ids'];return db[_0x804a('0x72')][_0x804a('0x4f')]({'where':{'id':_0x3d951a},'attributes':['id'],'include':[{'model':db['User'],'as':_0x804a('0x73'),'attributes':['id',_0x804a('0x39'),_0x804a('0x74'),_0x804a('0x75'),'interface'],'raw':!![]}]})[_0x804a('0x20')](function(_0x4e543a){if(_0x4e543a){var _0x51ecd9=_[_0x804a('0x76')](_0x4e543a,function(_0x3b6c50){var _0x456959=_0x3b6c50[_0x804a('0x56')]({'plain':!![]});return _0x456959['Agents'];});return db['ChatQueue']['find']({'where':{'id':_0x3d0445[_0x804a('0x51')]['id']}})[_0x804a('0x20')](function(_0x4ce6b0){return db[_0x804a('0x77')]['transaction'](function(_0x239790){return _0x4ce6b0[_0x804a('0x71')](_0x3d951a,{'transaction':_0x239790})[_0x804a('0x20')](function(){return BPromise[_0x804a('0x78')](_0x51ecd9,function(_0xf0447a){return db[_0x804a('0x61')][_0x804a('0x79')]({'where':{'UserId':_0xf0447a['id'],'ChatQueueId':_0x3d0445[_0x804a('0x51')]['id']},'transaction':_0x239790});});})[_0x804a('0x20')](function(){_0x51ecd9['forEach'](function(_0x40e7e0){socket[_0x804a('0x7a')](_0x804a('0x7b'),{'UserId':_0x40e7e0['id'],'ChatQueueId':_0x4ce6b0['id']});});});});});}})[_0x804a('0x20')](respondWithStatusCode(_0x374f4e,null))['catch'](handleError(_0x374f4e,null));};exports['removeTeams']=function(_0x272d5d,_0x236db3,_0x330e21){return db[_0x804a('0x72')][_0x804a('0x4f')]({'where':{'id':_0x272d5d[_0x804a('0x40')][_0x804a('0x7c')]},'attributes':['id'],'include':[{'model':db[_0x804a('0x65')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x804a('0x20')](handleEntityNotFound(_0x236db3,null))[_0x804a('0x20')](function(_0xe97e53){var _0x50f5d5=_[_0x804a('0x3f')](_0xe97e53,'id');var _0x19e438=[];var _0x26a9ef=[];var _0x171060=squel[_0x804a('0x7d')]();_0x171060[_0x804a('0x7e')](_0x804a('0x7f'))[_0x804a('0x80')]('team_has_chat_queues','tq')[_0x804a('0x81')](_0x804a('0x82'),'ut',_0x804a('0x83'))[_0x804a('0x4d')](_0x804a('0x84'),_0x272d5d[_0x804a('0x51')]['id']);for(var _0x30af29=0x0;_0x30af29<_0xe97e53['length'];_0x30af29+=0x1){let _0x31bb40=_0xe97e53[_0x30af29];for(var _0x470d96=0x0;_0x470d96<_0x31bb40[_0x804a('0x73')][_0x804a('0x53')];_0x470d96+=0x1){let _0x2fa82b=_0x31bb40['Agents'][_0x470d96];var _0x1efdbe=_0x171060['clone']();_0x1efdbe[_0x804a('0x4d')](_0x804a('0x85'),_0x2fa82b['id']);_0x26a9ef['push'](db[_0x804a('0x77')][_0x804a('0x40')](_0x1efdbe[_0x804a('0x86')](),{'type':db[_0x804a('0x77')][_0x804a('0x87')]['SELECT']})[_0x804a('0x20')](function(_0x21f3a8){if(_0x21f3a8[_0x804a('0x53')]===0x1){return _0x2fa82b['id'];}else{var _0x3ef5f4=_[_0x804a('0x88')](_[_0x804a('0x3f')](_0x21f3a8,'TeamId'),function(_0x3ecbee){return _['includes'](_0x50f5d5,_0x3ecbee);});if(_0x3ef5f4){return _0x2fa82b['id'];}}}));}}return BPromise[_0x804a('0x89')](_0x26a9ef)[_0x804a('0x20')](function(_0x341732){_0x19e438=_(_0x19e438)['union'](_0x341732)[_0x804a('0x8a')]()['value']();return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x272d5d[_0x804a('0x51')]['id']}})[_0x804a('0x20')](function(_0x4f3045){return db[_0x804a('0x77')]['transaction'](function(_0x41db69){return _0x4f3045[_0x804a('0x8b')](_0x272d5d['query']['ids'],{'transaction':_0x41db69})['then'](function(){if(!_[_0x804a('0x8c')](_0x19e438)){return _0x4f3045[_0x804a('0x8d')](_0x19e438,{'transaction':_0x41db69});}})[_0x804a('0x20')](function(){_0x19e438[_0x804a('0x8e')](function(_0x3f60e5){socket[_0x804a('0x7a')](_0x804a('0x8f'),{'UserId':_0x3f60e5,'ChatQueueId':_0x4f3045['id']});});});});});});})[_0x804a('0x20')](respondWithStatusCode(_0x236db3,null))[_0x804a('0x50')](handleError(_0x236db3,null));};exports[_0x804a('0x90')]=function(_0x3bf4bb,_0x2d3edc,_0x1eed76){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x3bf4bb['params']['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x2d3edc,null))['then'](function(_0x1c048a){if(_0x1c048a){return _0x1c048a['addAgents'](_0x3bf4bb['body'][_0x804a('0x7c')],_[_0x804a('0x91')](_0x3bf4bb[_0x804a('0x5d')],['ids','id'])||{})[_0x804a('0x92')](function(_0x5dc4f9){for(var _0xcfd701=0x0;_0xcfd701<_0x3bf4bb[_0x804a('0x5d')][_0x804a('0x7c')][_0x804a('0x53')];_0xcfd701+=0x1){socket[_0x804a('0x7a')](_0x804a('0x7b'),{'UserId':Number(_0x3bf4bb[_0x804a('0x5d')][_0x804a('0x7c')][_0xcfd701]),'ChatQueueId':Number(_0x3bf4bb[_0x804a('0x51')]['id'])});}return _0x5dc4f9;});}})[_0x804a('0x20')](respondWithResult(_0x2d3edc,null))[_0x804a('0x50')](handleError(_0x2d3edc,null));};exports['removeAgents']=function(_0x4c3563,_0x193f1f,_0x479fc2){return db[_0x804a('0x3b')][_0x804a('0x5a')]({'where':{'id':_0x4c3563[_0x804a('0x51')]['id']}})['then'](handleEntityNotFound(_0x193f1f,null))[_0x804a('0x20')](function(_0x570155){if(_0x570155){return _0x570155[_0x804a('0x8d')](_0x4c3563['query'][_0x804a('0x7c')])[_0x804a('0x20')](function(){if(_[_0x804a('0x93')](_0x4c3563[_0x804a('0x40')]['ids'])){for(var _0x22368c=0x0;_0x22368c<_0x4c3563['query'][_0x804a('0x7c')][_0x804a('0x53')];_0x22368c+=0x1){socket['emit'](_0x804a('0x8f'),{'UserId':Number(_0x4c3563[_0x804a('0x40')][_0x804a('0x7c')][_0x22368c]),'ChatQueueId':Number(_0x4c3563['params']['id'])});}}else{socket[_0x804a('0x7a')](_0x804a('0x8f'),{'UserId':Number(_0x4c3563['query'][_0x804a('0x7c')]),'ChatQueueId':Number(_0x4c3563[_0x804a('0x51')]['id'])});}});}})[_0x804a('0x20')](respondWithStatusCode(_0x193f1f,null))[_0x804a('0x50')](handleError(_0x193f1f,null));};exports[_0x804a('0x94')]=function(_0x52a22b,_0x373b93,_0x1128cc){var _0x3c6f1d={};var _0x39574b={};var _0x5070b4;var _0x5bc088;return db['ChatQueue'][_0x804a('0x60')]({'where':{'id':_0x52a22b[_0x804a('0x51')]['id']}})[_0x804a('0x20')](handleEntityNotFound(_0x373b93,null))[_0x804a('0x20')](function(_0x5d83ef){if(_0x5d83ef){_0x5070b4=_0x5d83ef;_0x39574b[_0x804a('0x52')]=_['keys'](db['User']['rawAttributes']);_0x39574b[_0x804a('0x40')]=_[_0x804a('0x41')](_0x52a22b[_0x804a('0x40')]);_0x39574b[_0x804a('0x62')]=_['intersection'](_0x39574b[_0x804a('0x52')],_0x39574b['query']);_0x3c6f1d['attributes']=_[_0x804a('0x42')](_0x39574b['model'],qs[_0x804a('0x44')](_0x52a22b[_0x804a('0x40')][_0x804a('0x44')]));_0x3c6f1d['attributes']=_0x3c6f1d[_0x804a('0x43')][_0x804a('0x53')]?_0x3c6f1d[_0x804a('0x43')]:_0x39574b[_0x804a('0x52')];_0x3c6f1d[_0x804a('0x47')]=qs[_0x804a('0x48')](_0x52a22b[_0x804a('0x40')]['sort']);_0x3c6f1d[_0x804a('0x4d')]=qs[_0x804a('0x62')](_[_0x804a('0x63')](_0x52a22b[_0x804a('0x40')],_0x39574b[_0x804a('0x62')]));if(_0x52a22b['query'][_0x804a('0x49')]){_0x3c6f1d[_0x804a('0x4d')]=_['merge'](_0x3c6f1d['where'],{'$or':_[_0x804a('0x3f')](_0x3c6f1d[_0x804a('0x43')],function(_0x1928d1){var _0x1bae2c={};_0x1bae2c[_0x1928d1]={'$like':'%'+_0x52a22b['query'][_0x804a('0x49')]+'%'};return _0x1bae2c;})});}_0x3c6f1d=_[_0x804a('0x4a')]({},_0x3c6f1d,_0x52a22b['options']);return _0x5070b4['getAgents'](_0x3c6f1d);}})[_0x804a('0x20')](function(_0x51502e){if(_0x51502e){_0x5bc088=_0x51502e['length'];if(!_0x52a22b[_0x804a('0x40')][_0x804a('0x45')](_0x804a('0x46'))){_0x3c6f1d[_0x804a('0x30')]=qs['limit'](_0x52a22b[_0x804a('0x40')][_0x804a('0x30')]);_0x3c6f1d['offset']=qs['offset'](_0x52a22b[_0x804a('0x40')][_0x804a('0x2e')]);}return _0x5070b4[_0x804a('0x94')](_0x3c6f1d);}})[_0x804a('0x20')](function(_0x168e94){if(_0x168e94){return _0x168e94?{'count':_0x5bc088,'rows':_0x168e94}:null;}})[_0x804a('0x20')](respondWithResult(_0x373b93,null))[_0x804a('0x50')](handleError(_0x373b93,null));};
\ No newline at end of file
index 42b8de5..e4a77e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb584=['exports','../../mysqldb','ChatQueue','save','update','emit','hasOwnProperty','hook'];(function(_0x48b810,_0x173a5e){var _0x23c17d=function(_0x38531e){while(--_0x38531e){_0x48b810['push'](_0x48b810['shift']());}};_0x23c17d(++_0x173a5e);}(_0xb584,0x91));var _0x4b58=function(_0x37580d,_0x10bbb2){_0x37580d=_0x37580d-0x0;var _0x5d3886=_0xb584[_0x37580d];return _0x5d3886;};'use strict';var EventEmitter=require('events');var ChatQueue=require(_0x4b58('0x0'))['db'][_0x4b58('0x1')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x4b58('0x2'),'afterUpdate':_0x4b58('0x3'),'afterDestroy':'remove'};function emitEvent(_0x552a5c){return function(_0x29f392,_0x11b1bf,_0x3d6733){ChatQueueEvents[_0x4b58('0x4')](_0x552a5c+':'+_0x29f392['id'],_0x29f392);ChatQueueEvents[_0x4b58('0x4')](_0x552a5c,_0x29f392);_0x3d6733(null);};}for(var e in events){if(events[_0x4b58('0x5')](e)){var event=events[e];ChatQueue[_0x4b58('0x6')](e,emitEvent(event));}}module[_0x4b58('0x7')]=ChatQueueEvents;
\ No newline at end of file
+var _0xf3c5=['ChatQueue','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x45b9b6,_0x183d64){var _0x37c2cb=function(_0x2b37f5){while(--_0x2b37f5){_0x45b9b6['push'](_0x45b9b6['shift']());}};_0x37c2cb(++_0x183d64);}(_0xf3c5,0x178));var _0x5f3c=function(_0x296b3c,_0x203828){_0x296b3c=_0x296b3c-0x0;var _0x53adfa=_0xf3c5[_0x296b3c];return _0x53adfa;};'use strict';var EventEmitter=require(_0x5f3c('0x0'));var ChatQueue=require(_0x5f3c('0x1'))['db'][_0x5f3c('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x5f3c('0x3'),'afterDestroy':_0x5f3c('0x4')};function emitEvent(_0x270ffa){return function(_0x2fb3b3,_0x2a8c1c,_0x536888){ChatQueueEvents[_0x5f3c('0x5')](_0x270ffa+':'+_0x2fb3b3['id'],_0x2fb3b3);ChatQueueEvents[_0x5f3c('0x5')](_0x270ffa,_0x2fb3b3);_0x536888(null);};}for(var e in events){if(events[_0x5f3c('0x6')](e)){var event=events[e];ChatQueue[_0x5f3c('0x7')](e,emitEvent(event));}}module[_0x5f3c('0x8')]=ChatQueueEvents;
\ No newline at end of file
index f68e998..d18e737 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe839=['util','moment','bluebird','request-promise','rimraf','./chatQueue.attributes','exports','ChatQueue','lodash'];(function(_0x5df61d,_0x158640){var _0x24cc4c=function(_0x2de006){while(--_0x2de006){_0x5df61d['push'](_0x5df61d['shift']());}};_0x24cc4c(++_0x158640);}(_0xe839,0x143));var _0x9e83=function(_0x59f0dc,_0x1e2497){_0x59f0dc=_0x59f0dc-0x0;var _0x5b5445=_0xe839[_0x59f0dc];return _0x5b5445;};'use strict';var _=require(_0x9e83('0x0'));var util=require(_0x9e83('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x9e83('0x2'));var BPromise=require(_0x9e83('0x3'));var rp=require(_0x9e83('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9e83('0x5'));var config=require('../../config/environment');var attributes=require(_0x9e83('0x6'));module[_0x9e83('0x7')]=function(_0x4fc4a6,_0x109786){return _0x4fc4a6['define'](_0x9e83('0x8'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x678f=['chat_queues','lodash','../../config/logger','api','moment','bluebird','path','rimraf','ChatQueue'];(function(_0x45d9ff,_0x3e5ed4){var _0x34bb61=function(_0x5cb4d1){while(--_0x5cb4d1){_0x45d9ff['push'](_0x45d9ff['shift']());}};_0x34bb61(++_0x3e5ed4);}(_0x678f,0xbe));var _0xf678=function(_0x59e862,_0x477bf2){_0x59e862=_0x59e862-0x0;var _0x1a25ee=_0x678f[_0x59e862];return _0x1a25ee;};'use strict';var _=require(_0xf678('0x0'));var util=require('util');var logger=require(_0xf678('0x1'))(_0xf678('0x2'));var moment=require(_0xf678('0x3'));var BPromise=require(_0xf678('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf678('0x5'));var rimraf=require(_0xf678('0x6'));var config=require('../../config/environment');var attributes=require('./chatQueue.attributes');module['exports']=function(_0x28398b,_0x223405){return _0x28398b['define'](_0xf678('0x7'),attributes,{'tableName':_0xf678('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b0252c1..6ca6d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0993=['then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch','GetChatQueue','findAll','options','raw','attributes','limit','include','ShowChatQueue','find','where','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','socket.io-emitter','./chatQueue.socket','request'];(function(_0x9aacf6,_0x2fc689){var _0x36d4ea=function(_0x1fd49b){while(--_0x1fd49b){_0x9aacf6['push'](_0x9aacf6['shift']());}};_0x36d4ea(++_0x2fc689);}(_0x0993,0x81));var _0x3099=function(_0x4f85d6,_0x4a6847){_0x4f85d6=_0x4f85d6-0x0;var _0x2ffcc3=_0x0993[_0x4f85d6];return _0x2ffcc3;};'use strict';var _=require(_0x3099('0x0'));var util=require(_0x3099('0x1'));var moment=require(_0x3099('0x2'));var BPromise=require(_0x3099('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3099('0x4'));var db=require(_0x3099('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3099('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3099('0x7'));var client=jayson[_0x3099('0x8')][_0x3099('0x9')]({'port':0x232a});config[_0x3099('0xa')]=_[_0x3099('0xb')](config[_0x3099('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x3099('0xc'))(new Redis(config[_0x3099('0xa')]));require(_0x3099('0xd'))['register'](socket);function respondWithRpcPromise(_0x42541f,_0x1851ac,_0x119a10){return new BPromise(function(_0x19e29f,_0x151257){return client[_0x3099('0xe')](_0x42541f,_0x119a10)[_0x3099('0xf')](function(_0xd89d1f){logger[_0x3099('0x10')](_0x3099('0x11'),_0x1851ac,_0x3099('0x12'));logger[_0x3099('0x13')]('ChatQueue,\x20%s,\x20%s,\x20%s',_0x1851ac,_0x3099('0x12'),JSON[_0x3099('0x14')](_0xd89d1f));if(_0xd89d1f[_0x3099('0x15')]){if(_0xd89d1f[_0x3099('0x15')]['code']===0x1f4){logger[_0x3099('0x15')](_0x3099('0x11'),_0x1851ac,_0xd89d1f[_0x3099('0x15')][_0x3099('0x16')]);return _0x151257(_0xd89d1f[_0x3099('0x15')][_0x3099('0x16')]);}logger['error'](_0x3099('0x11'),_0x1851ac,_0xd89d1f['error'][_0x3099('0x16')]);return _0x19e29f(_0xd89d1f['error']['message']);}else{logger[_0x3099('0x10')]('ChatQueue,\x20%s,\x20%s',_0x1851ac,_0x3099('0x12'));_0x19e29f(_0xd89d1f['result'][_0x3099('0x16')]);}})[_0x3099('0x17')](function(_0xb44433){logger[_0x3099('0x15')](_0x3099('0x11'),_0x1851ac,_0xb44433);_0x151257(_0xb44433);});});}exports[_0x3099('0x18')]=function(_0x2632bd){var _0xeddbf=this;return new Promise(function(_0x5a2150,_0x2224a5){return db['ChatQueue'][_0x3099('0x19')]({'raw':_0x2632bd[_0x3099('0x1a')]?_0x2632bd[_0x3099('0x1a')][_0x3099('0x1b')]===undefined?!![]:![]:!![],'where':_0x2632bd[_0x3099('0x1a')]?_0x2632bd[_0x3099('0x1a')]['where']||null:null,'attributes':_0x2632bd[_0x3099('0x1a')]?_0x2632bd[_0x3099('0x1a')][_0x3099('0x1c')]||null:null,'limit':_0x2632bd[_0x3099('0x1a')]?_0x2632bd[_0x3099('0x1a')][_0x3099('0x1d')]||null:null,'include':_0x2632bd[_0x3099('0x1a')]?_0x2632bd[_0x3099('0x1a')][_0x3099('0x1e')]?_['map'](_0x2632bd['options']['include'],function(_0x1b5c53){return{'model':db[_0x1b5c53['model']],'as':_0x1b5c53['as'],'attributes':_0x1b5c53['attributes'],'include':_0x1b5c53[_0x3099('0x1e')]?_['map'](_0x1b5c53[_0x3099('0x1e')],function(_0x4154b8){return{'model':db[_0x4154b8['model']],'as':_0x4154b8['as'],'attributes':_0x4154b8[_0x3099('0x1c')],'include':_0x4154b8[_0x3099('0x1e')]?_['map'](_0x4154b8[_0x3099('0x1e')],function(_0x4f3678){return{'model':db[_0x4f3678['model']],'as':_0x4f3678['as'],'attributes':_0x4f3678[_0x3099('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3099('0xf')](function(_0x1d77ed){logger[_0x3099('0x10')]('GetChatQueue',_0x2632bd);logger[_0x3099('0x13')](_0x3099('0x18'),_0x2632bd,JSON[_0x3099('0x14')](_0x1d77ed));_0x5a2150(_0x1d77ed);})[_0x3099('0x17')](function(_0x5a8912){logger[_0x3099('0x15')]('GetChatQueue',_0x5a8912[_0x3099('0x16')],_0x2632bd);_0x2224a5(_0xeddbf[_0x3099('0x15')](0x1f4,_0x5a8912[_0x3099('0x16')]));});});};exports[_0x3099('0x1f')]=function(_0x4c98c5){var _0x2786ac=this;return new Promise(function(_0x4d6563,_0x44e36e){return db['ChatQueue'][_0x3099('0x20')]({'raw':_0x4c98c5[_0x3099('0x1a')]?_0x4c98c5[_0x3099('0x1a')][_0x3099('0x1b')]===undefined?!![]:![]:!![],'where':_0x4c98c5['options']?_0x4c98c5[_0x3099('0x1a')][_0x3099('0x21')]||null:null,'attributes':_0x4c98c5[_0x3099('0x1a')]?_0x4c98c5[_0x3099('0x1a')][_0x3099('0x1c')]||null:null,'include':_0x4c98c5[_0x3099('0x1a')]?_0x4c98c5[_0x3099('0x1a')][_0x3099('0x1e')]?_[_0x3099('0x22')](_0x4c98c5[_0x3099('0x1a')][_0x3099('0x1e')],function(_0x522284){return{'model':db[_0x522284[_0x3099('0x23')]],'as':_0x522284['as'],'attributes':_0x522284['attributes'],'include':_0x522284[_0x3099('0x1e')]?_[_0x3099('0x22')](_0x522284[_0x3099('0x1e')],function(_0x1dd4f1){return{'model':db[_0x1dd4f1[_0x3099('0x23')]],'as':_0x1dd4f1['as'],'attributes':_0x1dd4f1[_0x3099('0x1c')],'include':_0x1dd4f1[_0x3099('0x1e')]?_[_0x3099('0x22')](_0x1dd4f1['include'],function(_0x29594d){return{'model':db[_0x29594d[_0x3099('0x23')]],'as':_0x29594d['as'],'attributes':_0x29594d[_0x3099('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x33f270){logger[_0x3099('0x10')](_0x3099('0x1f'),_0x4c98c5);logger[_0x3099('0x13')](_0x3099('0x1f'),_0x4c98c5,JSON['stringify'](_0x33f270));_0x4d6563(_0x33f270);})['catch'](function(_0x3035be){logger[_0x3099('0x15')]('ShowChatQueue',_0x3035be['message'],_0x4c98c5);_0x44e36e(_0x2786ac[_0x3099('0x15')](0x1f4,_0x3035be['message']));});});};
\ No newline at end of file
+var _0x0472=['socket.io-emitter','./chatQueue.socket','register','request','info','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetChatQueue','ChatQueue','options','raw','where','attributes','limit','include','map','model','then','ShowChatQueue','find','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','localhost'];(function(_0x19bda1,_0x1030bc){var _0xff9459=function(_0x1ab496){while(--_0x1ab496){_0x19bda1['push'](_0x19bda1['shift']());}};_0xff9459(++_0x1030bc);}(_0x0472,0x197));var _0x2047=function(_0x8ded8d,_0x5f5a40){_0x8ded8d=_0x8ded8d-0x0;var _0x5a68e5=_0x0472[_0x8ded8d];return _0x5a68e5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2047('0x0'));var BPromise=require('bluebird');var rs=require(_0x2047('0x1'));var fs=require('fs');var Redis=require(_0x2047('0x2'));var db=require(_0x2047('0x3'))['db'];var utils=require(_0x2047('0x4'));var logger=require('../../config/logger')(_0x2047('0x5'));var config=require('../../config/environment');var jayson=require(_0x2047('0x6'));var client=jayson[_0x2047('0x7')][_0x2047('0x8')]({'port':0x232a});config[_0x2047('0x9')]=_['defaults'](config[_0x2047('0x9')],{'host':_0x2047('0xa'),'port':0x18eb});var socket=require(_0x2047('0xb'))(new Redis(config[_0x2047('0x9')]));require(_0x2047('0xc'))[_0x2047('0xd')](socket);function respondWithRpcPromise(_0x223c89,_0x3f3bb1,_0x25c437){return new BPromise(function(_0x5e6bf2,_0x17f863){return client[_0x2047('0xe')](_0x223c89,_0x25c437)['then'](function(_0x16012f){logger[_0x2047('0xf')](_0x2047('0x10'),_0x3f3bb1,_0x2047('0x11'));logger[_0x2047('0x12')](_0x2047('0x13'),_0x3f3bb1,_0x2047('0x11'),JSON[_0x2047('0x14')](_0x16012f));if(_0x16012f[_0x2047('0x15')]){if(_0x16012f[_0x2047('0x15')][_0x2047('0x16')]===0x1f4){logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);return _0x17f863(_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);}logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);return _0x5e6bf2(_0x16012f[_0x2047('0x15')][_0x2047('0x17')]);}else{logger[_0x2047('0xf')](_0x2047('0x10'),_0x3f3bb1,_0x2047('0x11'));_0x5e6bf2(_0x16012f['result']['message']);}})[_0x2047('0x18')](function(_0x115741){logger[_0x2047('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3f3bb1,_0x115741);_0x17f863(_0x115741);});});}exports[_0x2047('0x19')]=function(_0x2843bc){var _0x5a5af5=this;return new Promise(function(_0x49f495,_0x42dcb0){return db[_0x2047('0x1a')]['findAll']({'raw':_0x2843bc[_0x2047('0x1b')]?_0x2843bc[_0x2047('0x1b')][_0x2047('0x1c')]===undefined?!![]:![]:!![],'where':_0x2843bc['options']?_0x2843bc['options'][_0x2047('0x1d')]||null:null,'attributes':_0x2843bc['options']?_0x2843bc['options'][_0x2047('0x1e')]||null:null,'limit':_0x2843bc[_0x2047('0x1b')]?_0x2843bc[_0x2047('0x1b')][_0x2047('0x1f')]||null:null,'include':_0x2843bc[_0x2047('0x1b')]?_0x2843bc['options'][_0x2047('0x20')]?_[_0x2047('0x21')](_0x2843bc[_0x2047('0x1b')][_0x2047('0x20')],function(_0x2d8f40){return{'model':db[_0x2d8f40[_0x2047('0x22')]],'as':_0x2d8f40['as'],'attributes':_0x2d8f40[_0x2047('0x1e')],'include':_0x2d8f40['include']?_[_0x2047('0x21')](_0x2d8f40[_0x2047('0x20')],function(_0xf5518e){return{'model':db[_0xf5518e['model']],'as':_0xf5518e['as'],'attributes':_0xf5518e['attributes'],'include':_0xf5518e['include']?_[_0x2047('0x21')](_0xf5518e[_0x2047('0x20')],function(_0x1a90af){return{'model':db[_0x1a90af[_0x2047('0x22')]],'as':_0x1a90af['as'],'attributes':_0x1a90af['attributes']};}):[]};}):[]};}):[]:[]})[_0x2047('0x23')](function(_0x2a3dcb){logger[_0x2047('0xf')](_0x2047('0x19'),_0x2843bc);logger[_0x2047('0x12')](_0x2047('0x19'),_0x2843bc,JSON[_0x2047('0x14')](_0x2a3dcb));_0x49f495(_0x2a3dcb);})[_0x2047('0x18')](function(_0x31eb73){logger['error'](_0x2047('0x19'),_0x31eb73[_0x2047('0x17')],_0x2843bc);_0x42dcb0(_0x5a5af5[_0x2047('0x15')](0x1f4,_0x31eb73[_0x2047('0x17')]));});});};exports[_0x2047('0x24')]=function(_0x35a786){var _0x16e55c=this;return new Promise(function(_0x2b9b4a,_0x37e832){return db[_0x2047('0x1a')][_0x2047('0x25')]({'raw':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x1c')]===undefined?!![]:![]:!![],'where':_0x35a786['options']?_0x35a786[_0x2047('0x1b')][_0x2047('0x1d')]||null:null,'attributes':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x1e')]||null:null,'include':_0x35a786[_0x2047('0x1b')]?_0x35a786[_0x2047('0x1b')][_0x2047('0x20')]?_[_0x2047('0x21')](_0x35a786[_0x2047('0x1b')][_0x2047('0x20')],function(_0x30c00b){return{'model':db[_0x30c00b[_0x2047('0x22')]],'as':_0x30c00b['as'],'attributes':_0x30c00b[_0x2047('0x1e')],'include':_0x30c00b['include']?_['map'](_0x30c00b[_0x2047('0x20')],function(_0x3b4ebd){return{'model':db[_0x3b4ebd[_0x2047('0x22')]],'as':_0x3b4ebd['as'],'attributes':_0x3b4ebd[_0x2047('0x1e')],'include':_0x3b4ebd[_0x2047('0x20')]?_['map'](_0x3b4ebd['include'],function(_0xb4ae91){return{'model':db[_0xb4ae91[_0x2047('0x22')]],'as':_0xb4ae91['as'],'attributes':_0xb4ae91['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x1b9863){logger[_0x2047('0xf')]('ShowChatQueue',_0x35a786);logger[_0x2047('0x12')](_0x2047('0x24'),_0x35a786,JSON[_0x2047('0x14')](_0x1b9863));_0x2b9b4a(_0x1b9863);})[_0x2047('0x18')](function(_0x9a02da){logger[_0x2047('0x15')](_0x2047('0x24'),_0x9a02da[_0x2047('0x17')],_0x35a786);_0x37e832(_0x16e55c['error'](0x1f4,_0x9a02da[_0x2047('0x17')]));});});};
\ No newline at end of file
index bf407fc..05a39b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda55=['chatQueue:','./chatQueue.events','save','emit','removeListener','length'];(function(_0xb7979c,_0x51daec){var _0x42482d=function(_0x1f9ae3){while(--_0x1f9ae3){_0xb7979c['push'](_0xb7979c['shift']());}};_0x42482d(++_0x51daec);}(_0xda55,0x6d));var _0x5da5=function(_0x43455e,_0x46eb8b){_0x43455e=_0x43455e-0x0;var _0x2801cc=_0xda55[_0x43455e];return _0x2801cc;};'use strict';var ChatQueueEvents=require(_0x5da5('0x0'));var events=[_0x5da5('0x1'),'remove','update'];function createListener(_0x13ecbc,_0x240a49){return function(_0x26a443){_0x240a49[_0x5da5('0x2')](_0x13ecbc,_0x26a443);};}function removeListener(_0x1c3afd,_0x5da254){return function(){ChatQueueEvents[_0x5da5('0x3')](_0x1c3afd,_0x5da254);};}exports['register']=function(_0x356a37){for(var _0x58e7b3=0x0,_0x2fd877=events[_0x5da5('0x4')];_0x58e7b3<_0x2fd877;_0x58e7b3++){var _0x71b187=events[_0x58e7b3];var _0x46290d=createListener(_0x5da5('0x5')+_0x71b187,_0x356a37);ChatQueueEvents['on'](_0x71b187,_0x46290d);}};
\ No newline at end of file
+var _0x5c12=['removeListener','chatQueue:','save','remove','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x5c12,0x188));var _0x25c1=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x5c12[_0x57a50d];return _0x1b25b3;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=[_0x25c1('0x0'),_0x25c1('0x1'),'update'];function createListener(_0x44bc2e,_0x1991e5){return function(_0x4042fe){_0x1991e5[_0x25c1('0x2')](_0x44bc2e,_0x4042fe);};}function removeListener(_0x2c5df0,_0x21ec20){return function(){ChatQueueEvents[_0x25c1('0x3')](_0x2c5df0,_0x21ec20);};}exports['register']=function(_0x204287){for(var _0x42ac16=0x0,_0x382922=events['length'];_0x42ac16<_0x382922;_0x42ac16++){var _0x5c69b1=events[_0x42ac16];var _0x24981c=createListener(_0x25c1('0x4')+_0x5c69b1,_0x204287);ChatQueueEvents['on'](_0x5c69b1,_0x24981c);}};
\ No newline at end of file
index b294819..88e2cd7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x37a073,_0x2fa6f7){var _0x4ca35f=function(_0x43e99e){while(--_0x43e99e){_0x37a073['push'](_0x37a073['shift']());}};_0x4ca35f(++_0x2fa6f7);}(_0x814b,0x1a2));var _0xb814=function(_0x2859f2,_0x1e3102){_0x2859f2=_0x2859f2-0x0;var _0x4974cd=_0x814b[_0x2859f2];return _0x4974cd;};'use strict';var multer=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var path=require(_0xb814('0x2'));var timeout=require(_0xb814('0x3'));var express=require(_0xb814('0x4'));var router=express[_0xb814('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb814('0x6'));var interaction=require(_0xb814('0x7'));var config=require(_0xb814('0x8'));var controller=require(_0xb814('0x9'));router[_0xb814('0xa')]('/',auth[_0xb814('0xb')](),controller['index']);router[_0xb814('0xa')](_0xb814('0xc'),auth['isAuthenticated'](),controller[_0xb814('0xd')]);router[_0xb814('0xa')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0xf')]);router[_0xb814('0xa')](_0xb814('0x10'),auth[_0xb814('0xb')](),controller[_0xb814('0x11')]);router[_0xb814('0xa')](_0xb814('0x12'),auth['isAuthenticated'](),controller[_0xb814('0x13')]);router['get'](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x15')]);router[_0xb814('0x16')]('/',auth[_0xb814('0xb')](),controller[_0xb814('0x17')]);router[_0xb814('0x16')](_0xb814('0x12'),auth[_0xb814('0xb')](),controller[_0xb814('0x18')]);router[_0xb814('0x16')](_0xb814('0x14'),auth[_0xb814('0xb')](),controller[_0xb814('0x19')]);router[_0xb814('0x1a')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller[_0xb814('0x1b')]);router[_0xb814('0x1c')](_0xb814('0xe'),auth[_0xb814('0xb')](),controller['destroy']);router[_0xb814('0x1c')]('/:id/teams',auth[_0xb814('0xb')](),controller[_0xb814('0x1d')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0xb814('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x5fc3=['update','delete','destroy','removeTeams','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatQueue.controller','get','isAuthenticated','describe','/:id','show','getMembers','/:id/teams','/:id/users','post','create','addTeams','put'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1c5142,_0x30ea72){_0x1c5142=_0x1c5142-0x0;var _0x1268cb=_0x5fc3[_0x1c5142];return _0x1268cb;};'use strict';var multer=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var path=require('path');var timeout=require(_0x35fc('0x2'));var express=require(_0x35fc('0x3'));var router=express[_0x35fc('0x4')]();var fs_extra=require(_0x35fc('0x5'));var auth=require(_0x35fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x35fc('0x7'));var controller=require(_0x35fc('0x8'));router[_0x35fc('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x35fc('0x9')]('/describe',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0x9')]('/:id/members',auth[_0x35fc('0xa')](),controller[_0x35fc('0xe')]);router['get'](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller['getTeams']);router[_0x35fc('0x9')](_0x35fc('0x10'),auth['isAuthenticated'](),controller['getAgents']);router[_0x35fc('0x11')]('/',auth['isAuthenticated'](),controller[_0x35fc('0x12')]);router[_0x35fc('0x11')](_0x35fc('0xf'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x13')]);router['post']('/:id/users',auth['isAuthenticated'](),controller['addAgents']);router[_0x35fc('0x14')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0x15')]);router[_0x35fc('0x16')](_0x35fc('0xc'),auth['isAuthenticated'](),controller[_0x35fc('0x17')]);router[_0x35fc('0x16')]('/:id/teams',auth[_0x35fc('0xa')](),controller[_0x35fc('0x18')]);router[_0x35fc('0x16')]('/:id/users',auth[_0x35fc('0xa')](),controller[_0x35fc('0x19')]);module[_0x35fc('0x1a')]=router;
\ No newline at end of file
index d23ea34..bde391b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40d9=['DATE','sequelize','exports','STRING'];(function(_0x51aeea,_0x3b9058){var _0x1e23e3=function(_0x369d65){while(--_0x369d65){_0x51aeea['push'](_0x51aeea['shift']());}};_0x1e23e3(++_0x3b9058);}(_0x40d9,0xa1));var _0x940d=function(_0x1716b0,_0xa59a04){_0x1716b0=_0x1716b0-0x0;var _0x594068=_0x40d9[_0x1716b0];return _0x594068;};'use strict';var moment=require('moment');var Sequelize=require(_0x940d('0x0'));module[_0x940d('0x1')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x940d('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x940d('0x3')]},'acceptAt':{'type':Sequelize[_0x940d('0x3')]},'exitAt':{'type':Sequelize[_0x940d('0x3')]},'reason':{'type':Sequelize[_0x940d('0x2')]}};
\ No newline at end of file
+var _0xa85a=['sequelize','exports','DATE','STRING','moment'];(function(_0x1c483f,_0x2485db){var _0x4164b9=function(_0xb76d2d){while(--_0xb76d2d){_0x1c483f['push'](_0x1c483f['shift']());}};_0x4164b9(++_0x2485db);}(_0xa85a,0x103));var _0xaa85=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xa85a[_0x42cae2];return _0x5f256f;};'use strict';var moment=require(_0xaa85('0x0'));var Sequelize=require(_0xaa85('0x1'));module[_0xaa85('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xaa85('0x3')]},'leaveAt':{'type':Sequelize[_0xaa85('0x3')]},'acceptAt':{'type':Sequelize[_0xaa85('0x3')]},'exitAt':{'type':Sequelize[_0xaa85('0x3')]},'reason':{'type':Sequelize[_0xaa85('0x4')]}};
\ No newline at end of file
index ad35e54..0b2e89e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eff=['util','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','options','ChatQueueReport','includeAll','include','findAll','rows','catch','params','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache'];(function(_0x51e148,_0x56d02c){var _0x438d7e=function(_0x4633a2){while(--_0x4633a2){_0x51e148['push'](_0x51e148['shift']());}};_0x438d7e(++_0x56d02c);}(_0x7eff,0x162));var _0xf7ef=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7eff[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf7ef('0x0'));var zipdir=require(_0xf7ef('0x1'));var jsonpatch=require(_0xf7ef('0x2'));var rp=require('request-promise');var moment=require(_0xf7ef('0x3'));var BPromise=require(_0xf7ef('0x4'));var Mustache=require(_0xf7ef('0x5'));var util=require(_0xf7ef('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xf7ef('0x7'));var ejs=require(_0xf7ef('0x8'));var fs=require('fs');var fs_extra=require(_0xf7ef('0x9'));var _=require(_0xf7ef('0xa'));var squel=require(_0xf7ef('0xb'));var crypto=require(_0xf7ef('0xc'));var jsforce=require(_0xf7ef('0xd'));var deskjs=require(_0xf7ef('0xe'));var toCsv=require('to-csv');var querystring=require(_0xf7ef('0xf'));var Papa=require(_0xf7ef('0x10'));var Redis=require('ioredis');var authService=require(_0xf7ef('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf7ef('0x12'));var logger=require('../../config/logger')(_0xf7ef('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf7ef('0x14'))['db'];function respondWithStatusCode(_0x4e45fd,_0x5e6a8e){_0x5e6a8e=_0x5e6a8e||0xcc;return function(_0x56b5d7){if(_0x56b5d7){return _0x4e45fd[_0xf7ef('0x15')](_0x5e6a8e);}return _0x4e45fd[_0xf7ef('0x16')](_0x5e6a8e)[_0xf7ef('0x17')]();};}function respondWithResult(_0xf6e5a0,_0x5d5112){_0x5d5112=_0x5d5112||0xc8;return function(_0x27a4a7){if(_0x27a4a7){return _0xf6e5a0['status'](_0x5d5112)[_0xf7ef('0x18')](_0x27a4a7);}};}function respondWithFilteredResult(_0x35746b,_0x4996b7){return function(_0x39ef6f){if(_0x39ef6f){var _0x4856bd=typeof _0x4996b7[_0xf7ef('0x19')]===_0xf7ef('0x1a')&&typeof _0x4996b7[_0xf7ef('0x1b')]===_0xf7ef('0x1a');var _0x15ad8c=_0x39ef6f[_0xf7ef('0x1c')];var _0x466612=_0x4856bd?0x0:_0x4996b7['offset'];var _0x4fa0c6=_0x4856bd?_0x39ef6f['count']:_0x4996b7[_0xf7ef('0x19')]+_0x4996b7['limit'];var _0x371688;if(_0x4fa0c6>=_0x15ad8c){_0x4fa0c6=_0x15ad8c;_0x371688=0xc8;}else{_0x371688=0xce;}_0x35746b[_0xf7ef('0x16')](_0x371688);return _0x35746b[_0xf7ef('0x1d')](_0xf7ef('0x1e'),_0x466612+'-'+_0x4fa0c6+'/'+_0x15ad8c)[_0xf7ef('0x18')](_0x39ef6f);}return null;};}function patchUpdates(_0x29cbf1){return function(_0x4d1cf0){try{jsonpatch['apply'](_0x4d1cf0,_0x29cbf1,!![]);}catch(_0x578525){return BPromise[_0xf7ef('0x1f')](_0x578525);}return _0x4d1cf0[_0xf7ef('0x20')]();};}function saveUpdates(_0x1a95c6,_0x20c27b){return function(_0x5d70f5){if(_0x5d70f5){return _0x5d70f5['update'](_0x1a95c6)[_0xf7ef('0x21')](function(_0x36c8c8){return _0x36c8c8;});}return null;};}function removeEntity(_0x5e1c75,_0x168da4){return function(_0x39e820){if(_0x39e820){return _0x39e820[_0xf7ef('0x22')]()['then'](function(){_0x5e1c75[_0xf7ef('0x16')](0xcc)[_0xf7ef('0x17')]();});}};}function handleEntityNotFound(_0x47c243,_0x15997a){return function(_0x3ee27d){if(!_0x3ee27d){_0x47c243[_0xf7ef('0x15')](0x194);}return _0x3ee27d;};}function handleError(_0x205aaa,_0x11768b){_0x11768b=_0x11768b||0x1f4;return function(_0xaa0cc4){logger[_0xf7ef('0x23')](_0xaa0cc4[_0xf7ef('0x24')]);if(_0xaa0cc4[_0xf7ef('0x25')]){delete _0xaa0cc4['name'];}_0x205aaa[_0xf7ef('0x16')](_0x11768b)[_0xf7ef('0x26')](_0xaa0cc4);};}exports[_0xf7ef('0x27')]=function(_0x3a9292,_0x49ea57){var _0x392364={},_0x3becba={},_0x486c2a={'count':0x0,'rows':[]};var _0x5e40ac=_[_0xf7ef('0x28')](db['ChatQueueReport'][_0xf7ef('0x29')],function(_0xbd4571){return{'name':_0xbd4571[_0xf7ef('0x2a')],'type':_0xbd4571[_0xf7ef('0x2b')]['key']};});_0x3becba[_0xf7ef('0x2c')]=_[_0xf7ef('0x28')](_0x5e40ac,_0xf7ef('0x25'));_0x3becba['query']=_[_0xf7ef('0x2d')](_0x3a9292[_0xf7ef('0x2e')]);_0x3becba[_0xf7ef('0x2f')]=_[_0xf7ef('0x30')](_0x3becba[_0xf7ef('0x2c')],_0x3becba[_0xf7ef('0x2e')]);_0x392364[_0xf7ef('0x31')]=_[_0xf7ef('0x30')](_0x3becba[_0xf7ef('0x2c')],qs['fields'](_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x32')]));_0x392364[_0xf7ef('0x31')]=_0x392364[_0xf7ef('0x31')][_0xf7ef('0x33')]?_0x392364[_0xf7ef('0x31')]:_0x3becba[_0xf7ef('0x2c')];if(!_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x34')]('nolimit')){_0x392364['limit']=qs[_0xf7ef('0x1b')](_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x1b')]);_0x392364[_0xf7ef('0x19')]=qs[_0xf7ef('0x19')](_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x19')]);}_0x392364[_0xf7ef('0x35')]=qs['sort'](_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x36')]);_0x392364['where']=qs['filters'](_[_0xf7ef('0x37')](_0x3a9292[_0xf7ef('0x2e')],_0x3becba[_0xf7ef('0x2f')]),_0x5e40ac);if(_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x38')]){_0x392364[_0xf7ef('0x39')]=_[_0xf7ef('0x3a')](_0x392364[_0xf7ef('0x39')],{'$or':_['map'](_0x5e40ac,function(_0x55fd01){if(_0x55fd01[_0xf7ef('0x2b')]!=='VIRTUAL'){var _0x300e05={};_0x300e05[_0x55fd01[_0xf7ef('0x25')]]={'$like':'%'+_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x38')]+'%'};return _0x300e05;}})});}_0x392364=_[_0xf7ef('0x3a')]({},_0x392364,_0x3a9292[_0xf7ef('0x3b')]);var _0x2052a9={'where':_0x392364[_0xf7ef('0x39')]};return db[_0xf7ef('0x3c')]['count'](_0x2052a9)[_0xf7ef('0x21')](function(_0x2bad42){_0x486c2a['count']=_0x2bad42;if(_0x3a9292[_0xf7ef('0x2e')][_0xf7ef('0x3d')]){_0x392364[_0xf7ef('0x3e')]=[{'all':!![]}];}return db[_0xf7ef('0x3c')][_0xf7ef('0x3f')](_0x392364);})[_0xf7ef('0x21')](function(_0x2323d7){_0x486c2a[_0xf7ef('0x40')]=_0x2323d7;return _0x486c2a;})[_0xf7ef('0x21')](respondWithFilteredResult(_0x49ea57,_0x392364))[_0xf7ef('0x41')](handleError(_0x49ea57,null));};exports['show']=function(_0x5c54af,_0x58783d){var _0x3a27cd={'raw':!![],'where':{'id':_0x5c54af[_0xf7ef('0x42')]['id']}},_0x540783={};_0x540783[_0xf7ef('0x2c')]=_[_0xf7ef('0x2d')](db['ChatQueueReport'][_0xf7ef('0x29')]);_0x540783['query']=_[_0xf7ef('0x2d')](_0x5c54af[_0xf7ef('0x2e')]);_0x540783[_0xf7ef('0x2f')]=_[_0xf7ef('0x30')](_0x540783[_0xf7ef('0x2c')],_0x540783[_0xf7ef('0x2e')]);_0x3a27cd[_0xf7ef('0x31')]=_[_0xf7ef('0x30')](_0x540783[_0xf7ef('0x2c')],qs[_0xf7ef('0x32')](_0x5c54af[_0xf7ef('0x2e')][_0xf7ef('0x32')]));_0x3a27cd[_0xf7ef('0x31')]=_0x3a27cd[_0xf7ef('0x31')][_0xf7ef('0x33')]?_0x3a27cd[_0xf7ef('0x31')]:_0x540783[_0xf7ef('0x2c')];if(_0x5c54af[_0xf7ef('0x2e')][_0xf7ef('0x3d')]){_0x3a27cd[_0xf7ef('0x3e')]=[{'all':!![]}];}_0x3a27cd=_[_0xf7ef('0x3a')]({},_0x3a27cd,_0x5c54af['options']);return db[_0xf7ef('0x3c')][_0xf7ef('0x43')](_0x3a27cd)[_0xf7ef('0x21')](handleEntityNotFound(_0x58783d,null))['then'](respondWithResult(_0x58783d,null))[_0xf7ef('0x41')](handleError(_0x58783d,null));};exports[_0xf7ef('0x44')]=function(_0x238d5a,_0x442191){return db[_0xf7ef('0x3c')][_0xf7ef('0x44')](_0x238d5a[_0xf7ef('0x45')],{})[_0xf7ef('0x21')](respondWithResult(_0x442191,0xc9))[_0xf7ef('0x41')](handleError(_0x442191,null));};exports[_0xf7ef('0x46')]=function(_0x17584a,_0x5670c8){if(_0x17584a['body']['id']){delete _0x17584a['body']['id'];}return db[_0xf7ef('0x3c')]['find']({'where':{'id':_0x17584a[_0xf7ef('0x42')]['id']}})[_0xf7ef('0x21')](handleEntityNotFound(_0x5670c8,null))[_0xf7ef('0x21')](saveUpdates(_0x17584a[_0xf7ef('0x45')],null))[_0xf7ef('0x21')](respondWithResult(_0x5670c8,null))['catch'](handleError(_0x5670c8,null));};exports['destroy']=function(_0x23c6d8,_0x284dbb){return db[_0xf7ef('0x3c')][_0xf7ef('0x43')]({'where':{'id':_0x23c6d8[_0xf7ef('0x42')]['id']}})['then'](handleEntityNotFound(_0x284dbb,null))[_0xf7ef('0x21')](removeEntity(_0x284dbb,null))[_0xf7ef('0x41')](handleError(_0x284dbb,null));};exports['describe']=function(_0x342da3,_0x3af64f){return db[_0xf7ef('0x3c')][_0xf7ef('0x47')]()[_0xf7ef('0x21')](respondWithResult(_0x3af64f,null))['catch'](handleError(_0x3af64f,null));};
\ No newline at end of file
+var _0x042a=['stack','name','index','map','ChatQueueReport','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','hasOwnProperty','nolimit','limit','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','count','json','apply','reject','update','destroy','then','end','error'];(function(_0x74e5bf,_0x1d6719){var _0x4be63f=function(_0x4352eb){while(--_0x4352eb){_0x74e5bf['push'](_0x74e5bf['shift']());}};_0x4be63f(++_0x1d6719);}(_0x042a,0x1d9));var _0xa042=function(_0x5bc8b8,_0x3c082e){_0x5bc8b8=_0x5bc8b8-0x0;var _0x4c78a0=_0x042a[_0x5bc8b8];return _0x4c78a0;};'use strict';var emlformat=require(_0xa042('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa042('0x1'));var jsonpatch=require(_0xa042('0x2'));var rp=require(_0xa042('0x3'));var moment=require('moment');var BPromise=require(_0xa042('0x4'));var Mustache=require(_0xa042('0x5'));var util=require(_0xa042('0x6'));var path=require(_0xa042('0x7'));var sox=require(_0xa042('0x8'));var csv=require(_0xa042('0x9'));var ejs=require(_0xa042('0xa'));var fs=require('fs');var fs_extra=require(_0xa042('0xb'));var _=require('lodash');var squel=require(_0xa042('0xc'));var crypto=require(_0xa042('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa042('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa042('0xf'));var Papa=require(_0xa042('0x10'));var Redis=require(_0xa042('0x11'));var authService=require(_0xa042('0x12'));var qs=require(_0xa042('0x13'));var as=require(_0xa042('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa042('0x15'))('api');var utils=require(_0xa042('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa042('0x17'));var db=require(_0xa042('0x18'))['db'];function respondWithStatusCode(_0x116b5d,_0x4c8c0d){_0x4c8c0d=_0x4c8c0d||0xcc;return function(_0xde3040){if(_0xde3040){return _0x116b5d[_0xa042('0x19')](_0x4c8c0d);}return _0x116b5d[_0xa042('0x1a')](_0x4c8c0d)['end']();};}function respondWithResult(_0x3ef835,_0x2589a1){_0x2589a1=_0x2589a1||0xc8;return function(_0x34062a){if(_0x34062a){return _0x3ef835[_0xa042('0x1a')](_0x2589a1)['json'](_0x34062a);}};}function respondWithFilteredResult(_0x404ff5,_0x37f2df){return function(_0x262d83){if(_0x262d83){var _0x2fa5ed=typeof _0x37f2df[_0xa042('0x1b')]===_0xa042('0x1c')&&typeof _0x37f2df['limit']==='undefined';var _0x3a0dd8=_0x262d83[_0xa042('0x1d')];var _0x1752bf=_0x2fa5ed?0x0:_0x37f2df[_0xa042('0x1b')];var _0x20879b=_0x2fa5ed?_0x262d83[_0xa042('0x1d')]:_0x37f2df[_0xa042('0x1b')]+_0x37f2df['limit'];var _0x4ad400;if(_0x20879b>=_0x3a0dd8){_0x20879b=_0x3a0dd8;_0x4ad400=0xc8;}else{_0x4ad400=0xce;}_0x404ff5['status'](_0x4ad400);return _0x404ff5['set']('Content-Range',_0x1752bf+'-'+_0x20879b+'/'+_0x3a0dd8)[_0xa042('0x1e')](_0x262d83);}return null;};}function patchUpdates(_0x16319e){return function(_0x3099f0){try{jsonpatch[_0xa042('0x1f')](_0x3099f0,_0x16319e,!![]);}catch(_0x1b76b0){return BPromise[_0xa042('0x20')](_0x1b76b0);}return _0x3099f0['save']();};}function saveUpdates(_0x38e0a1,_0x38ac84){return function(_0x3e164f){if(_0x3e164f){return _0x3e164f[_0xa042('0x21')](_0x38e0a1)['then'](function(_0x48cd0d){return _0x48cd0d;});}return null;};}function removeEntity(_0x40f174,_0x384d9e){return function(_0x290944){if(_0x290944){return _0x290944[_0xa042('0x22')]()[_0xa042('0x23')](function(){_0x40f174[_0xa042('0x1a')](0xcc)[_0xa042('0x24')]();});}};}function handleEntityNotFound(_0x3b4ec8,_0x3cdfdd){return function(_0x31853d){if(!_0x31853d){_0x3b4ec8[_0xa042('0x19')](0x194);}return _0x31853d;};}function handleError(_0x43191c,_0x417589){_0x417589=_0x417589||0x1f4;return function(_0x4b41f0){logger[_0xa042('0x25')](_0x4b41f0[_0xa042('0x26')]);if(_0x4b41f0['name']){delete _0x4b41f0[_0xa042('0x27')];}_0x43191c[_0xa042('0x1a')](_0x417589)['send'](_0x4b41f0);};}exports[_0xa042('0x28')]=function(_0x1105aa,_0x4d2a2d){var _0x331276={},_0x3baff3={},_0x2aa39e={'count':0x0,'rows':[]};var _0x32b82a=_[_0xa042('0x29')](db[_0xa042('0x2a')][_0xa042('0x2b')],function(_0x3fb5d9){return{'name':_0x3fb5d9['fieldName'],'type':_0x3fb5d9['type'][_0xa042('0x2c')]};});_0x3baff3[_0xa042('0x2d')]=_[_0xa042('0x29')](_0x32b82a,_0xa042('0x27'));_0x3baff3['query']=_[_0xa042('0x2e')](_0x1105aa['query']);_0x3baff3[_0xa042('0x2f')]=_[_0xa042('0x30')](_0x3baff3['model'],_0x3baff3['query']);_0x331276['attributes']=_['intersection'](_0x3baff3[_0xa042('0x2d')],qs['fields'](_0x1105aa[_0xa042('0x31')][_0xa042('0x32')]));_0x331276['attributes']=_0x331276[_0xa042('0x33')]['length']?_0x331276['attributes']:_0x3baff3[_0xa042('0x2d')];if(!_0x1105aa[_0xa042('0x31')][_0xa042('0x34')](_0xa042('0x35'))){_0x331276[_0xa042('0x36')]=qs[_0xa042('0x36')](_0x1105aa[_0xa042('0x31')][_0xa042('0x36')]);_0x331276[_0xa042('0x1b')]=qs[_0xa042('0x1b')](_0x1105aa[_0xa042('0x31')]['offset']);}_0x331276['order']=qs['sort'](_0x1105aa[_0xa042('0x31')]['sort']);_0x331276[_0xa042('0x37')]=qs[_0xa042('0x2f')](_[_0xa042('0x38')](_0x1105aa[_0xa042('0x31')],_0x3baff3['filters']),_0x32b82a);if(_0x1105aa[_0xa042('0x31')]['filter']){_0x331276['where']=_[_0xa042('0x39')](_0x331276['where'],{'$or':_[_0xa042('0x29')](_0x32b82a,function(_0x25ccfa){if(_0x25ccfa[_0xa042('0x3a')]!==_0xa042('0x3b')){var _0x452f23={};_0x452f23[_0x25ccfa['name']]={'$like':'%'+_0x1105aa[_0xa042('0x31')][_0xa042('0x3c')]+'%'};return _0x452f23;}})});}_0x331276=_[_0xa042('0x39')]({},_0x331276,_0x1105aa[_0xa042('0x3d')]);var _0x20894c={'where':_0x331276[_0xa042('0x37')]};return db[_0xa042('0x2a')][_0xa042('0x1d')](_0x20894c)[_0xa042('0x23')](function(_0xcbb370){_0x2aa39e[_0xa042('0x1d')]=_0xcbb370;if(_0x1105aa[_0xa042('0x31')][_0xa042('0x3e')]){_0x331276[_0xa042('0x3f')]=[{'all':!![]}];}return db['ChatQueueReport'][_0xa042('0x40')](_0x331276);})[_0xa042('0x23')](function(_0x4a8c69){_0x2aa39e[_0xa042('0x41')]=_0x4a8c69;return _0x2aa39e;})[_0xa042('0x23')](respondWithFilteredResult(_0x4d2a2d,_0x331276))[_0xa042('0x42')](handleError(_0x4d2a2d,null));};exports[_0xa042('0x43')]=function(_0x13dd53,_0x53decf){var _0x1c704d={'raw':!![],'where':{'id':_0x13dd53[_0xa042('0x44')]['id']}},_0x168790={};_0x168790[_0xa042('0x2d')]=_[_0xa042('0x2e')](db[_0xa042('0x2a')][_0xa042('0x2b')]);_0x168790[_0xa042('0x31')]=_[_0xa042('0x2e')](_0x13dd53[_0xa042('0x31')]);_0x168790[_0xa042('0x2f')]=_['intersection'](_0x168790[_0xa042('0x2d')],_0x168790[_0xa042('0x31')]);_0x1c704d[_0xa042('0x33')]=_[_0xa042('0x30')](_0x168790[_0xa042('0x2d')],qs['fields'](_0x13dd53[_0xa042('0x31')][_0xa042('0x32')]));_0x1c704d[_0xa042('0x33')]=_0x1c704d[_0xa042('0x33')]['length']?_0x1c704d['attributes']:_0x168790[_0xa042('0x2d')];if(_0x13dd53[_0xa042('0x31')]['includeAll']){_0x1c704d[_0xa042('0x3f')]=[{'all':!![]}];}_0x1c704d=_[_0xa042('0x39')]({},_0x1c704d,_0x13dd53[_0xa042('0x3d')]);return db[_0xa042('0x2a')]['find'](_0x1c704d)[_0xa042('0x23')](handleEntityNotFound(_0x53decf,null))['then'](respondWithResult(_0x53decf,null))[_0xa042('0x42')](handleError(_0x53decf,null));};exports[_0xa042('0x45')]=function(_0x37bcbb,_0x5434c6){return db[_0xa042('0x2a')]['create'](_0x37bcbb[_0xa042('0x46')],{})[_0xa042('0x23')](respondWithResult(_0x5434c6,0xc9))['catch'](handleError(_0x5434c6,null));};exports[_0xa042('0x21')]=function(_0x2f96a3,_0x14f1ca){if(_0x2f96a3[_0xa042('0x46')]['id']){delete _0x2f96a3[_0xa042('0x46')]['id'];}return db['ChatQueueReport'][_0xa042('0x47')]({'where':{'id':_0x2f96a3[_0xa042('0x44')]['id']}})[_0xa042('0x23')](handleEntityNotFound(_0x14f1ca,null))[_0xa042('0x23')](saveUpdates(_0x2f96a3[_0xa042('0x46')],null))[_0xa042('0x23')](respondWithResult(_0x14f1ca,null))[_0xa042('0x42')](handleError(_0x14f1ca,null));};exports[_0xa042('0x22')]=function(_0x28597e,_0x158409){return db['ChatQueueReport'][_0xa042('0x47')]({'where':{'id':_0x28597e[_0xa042('0x44')]['id']}})[_0xa042('0x23')](handleEntityNotFound(_0x158409,null))[_0xa042('0x23')](removeEntity(_0x158409,null))[_0xa042('0x42')](handleError(_0x158409,null));};exports[_0xa042('0x48')]=function(_0x59c6cc,_0x4e0f02){return db[_0xa042('0x2a')][_0xa042('0x48')]()[_0xa042('0x23')](respondWithResult(_0x4e0f02,null))[_0xa042('0x42')](handleError(_0x4e0f02,null));};
\ No newline at end of file
index 3e24d68..5e5dbb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['define','report_chat_queue','uniqueid','lodash','util','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xee4b03,_0x59a13e){var _0x61ad9b=function(_0x1f1bcc){while(--_0x1f1bcc){_0xee4b03['push'](_0xee4b03['shift']());}};_0x61ad9b(++_0x59a13e);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x0d8b('0x2'));var rp=require(_0x0d8b('0x3'));var fs=require('fs');var path=require(_0x0d8b('0x4'));var rimraf=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));var attributes=require('./chatQueueReport.attributes');module['exports']=function(_0x3f8b6f,_0x227c63){return _0x3f8b6f[_0x0d8b('0x7')]('ChatQueueReport',attributes,{'tableName':_0x0d8b('0x8'),'paranoid':![],'indexes':[{'name':_0x0d8b('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb10b=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','report_chat_queue','uniqueid','lodash'];(function(_0xda501a,_0x159d6a){var _0x44be3a=function(_0x5c1c5f){while(--_0x5c1c5f){_0xda501a['push'](_0xda501a['shift']());}};_0x44be3a(++_0x159d6a);}(_0xb10b,0x12a));var _0xbb10=function(_0x457b64,_0x49a219){_0x457b64=_0x457b64-0x0;var _0x437111=_0xb10b[_0x457b64];return _0x437111;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var logger=require(_0xbb10('0x1'))(_0xbb10('0x2'));var moment=require(_0xbb10('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb10('0x4'));var fs=require('fs');var path=require(_0xbb10('0x5'));var rimraf=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var attributes=require(_0xbb10('0x8'));module[_0xbb10('0x9')]=function(_0x481979,_0x328583){return _0x481979[_0xbb10('0xa')]('ChatQueueReport',attributes,{'tableName':_0xbb10('0xb'),'paranoid':![],'indexes':[{'name':_0xbb10('0xc'),'fields':[_0xbb10('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 6addf4e..4b99a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ebe=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateChatQueueReport','create','body','options','raw','UpdateChatQueueReport','ChatQueueReport','update','attributes','lodash','util','moment','bluebird'];(function(_0x2950f4,_0x174c11){var _0x14b160=function(_0x5d8b3e){while(--_0x5d8b3e){_0x2950f4['push'](_0x2950f4['shift']());}};_0x14b160(++_0x174c11);}(_0x5ebe,0xab));var _0xe5eb=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5ebe[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xe5eb('0x0'));var util=require(_0xe5eb('0x1'));var moment=require(_0xe5eb('0x2'));var BPromise=require(_0xe5eb('0x3'));var rs=require(_0xe5eb('0x4'));var fs=require('fs');var Redis=require(_0xe5eb('0x5'));var db=require(_0xe5eb('0x6'))['db'];var utils=require(_0xe5eb('0x7'));var logger=require(_0xe5eb('0x8'))('rpc');var config=require(_0xe5eb('0x9'));var jayson=require(_0xe5eb('0xa'));var client=jayson[_0xe5eb('0xb')][_0xe5eb('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x30fc7b,_0x40545a,_0x138642){return new BPromise(function(_0xed60c2,_0x1fe8ee){return client[_0xe5eb('0xd')](_0x30fc7b,_0x138642)[_0xe5eb('0xe')](function(_0xc095e3){logger[_0xe5eb('0xf')](_0xe5eb('0x10'),_0x40545a,'request\x20sent');logger[_0xe5eb('0x11')](_0xe5eb('0x12'),_0x40545a,_0xe5eb('0x13'),JSON[_0xe5eb('0x14')](_0xc095e3));if(_0xc095e3['error']){if(_0xc095e3[_0xe5eb('0x15')][_0xe5eb('0x16')]===0x1f4){logger[_0xe5eb('0x15')](_0xe5eb('0x10'),_0x40545a,_0xc095e3[_0xe5eb('0x15')][_0xe5eb('0x17')]);return _0x1fe8ee(_0xc095e3[_0xe5eb('0x15')][_0xe5eb('0x17')]);}logger[_0xe5eb('0x15')](_0xe5eb('0x10'),_0x40545a,_0xc095e3[_0xe5eb('0x15')]['message']);return _0xed60c2(_0xc095e3[_0xe5eb('0x15')][_0xe5eb('0x17')]);}else{logger['info'](_0xe5eb('0x10'),_0x40545a,'request\x20sent');_0xed60c2(_0xc095e3[_0xe5eb('0x18')][_0xe5eb('0x17')]);}})[_0xe5eb('0x19')](function(_0x2a2ef2){logger['error'](_0xe5eb('0x10'),_0x40545a,_0x2a2ef2);_0x1fe8ee(_0x2a2ef2);});});}exports[_0xe5eb('0x1a')]=function(_0x555cbf){var _0x182cd=this;return new Promise(function(_0x258262,_0x361467){return db['ChatQueueReport'][_0xe5eb('0x1b')](_0x555cbf[_0xe5eb('0x1c')],{'raw':_0x555cbf[_0xe5eb('0x1d')]?_0x555cbf['options'][_0xe5eb('0x1e')]===undefined?!![]:![]:!![]})[_0xe5eb('0xe')](function(_0x48353f){logger[_0xe5eb('0xf')]('CreateChatQueueReport',_0x555cbf);logger[_0xe5eb('0x11')]('CreateChatQueueReport',_0x555cbf,JSON[_0xe5eb('0x14')](_0x48353f));_0x258262(_0x48353f);})[_0xe5eb('0x19')](function(_0xe56e2){logger[_0xe5eb('0x15')](_0xe5eb('0x1a'),_0xe56e2[_0xe5eb('0x17')],_0x555cbf);_0x361467(_0x182cd[_0xe5eb('0x15')](0x1f4,_0xe56e2[_0xe5eb('0x17')]));});});};exports[_0xe5eb('0x1f')]=function(_0x2d4986){var _0x490bca=this;return new Promise(function(_0x9d24ef,_0x1bab86){return db[_0xe5eb('0x20')][_0xe5eb('0x21')](_0x2d4986[_0xe5eb('0x1c')],{'raw':_0x2d4986[_0xe5eb('0x1d')]?_0x2d4986[_0xe5eb('0x1d')][_0xe5eb('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2d4986[_0xe5eb('0x1d')]?_0x2d4986[_0xe5eb('0x1d')]['where']||null:null,'attributes':_0x2d4986[_0xe5eb('0x1d')]?_0x2d4986[_0xe5eb('0x1d')][_0xe5eb('0x22')]||null:null,'limit':_0x2d4986[_0xe5eb('0x1d')]?_0x2d4986[_0xe5eb('0x1d')]['limit']||null:null})['then'](function(_0x40f5f3){logger[_0xe5eb('0xf')](_0xe5eb('0x1f'),_0x2d4986);logger[_0xe5eb('0x11')](_0xe5eb('0x1f'),_0x2d4986,JSON[_0xe5eb('0x14')](_0x40f5f3));_0x9d24ef(_0x40f5f3);})[_0xe5eb('0x19')](function(_0xc41e75){logger[_0xe5eb('0x15')](_0xe5eb('0x1f'),_0xc41e75[_0xe5eb('0x17')],_0x2d4986);_0x1bab86(_0x490bca[_0xe5eb('0x15')](0x1f4,_0xc41e75['message']));});});};
\ No newline at end of file
+var _0x3a05=['rpc','../../config/environment','jayson/promise','http','request','then','info','ChatQueueReport,\x20%s,\x20%s','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','CreateChatQueueReport','ChatQueueReport','create','options','raw','UpdateChatQueueReport','update','body','where','attributes','limit','util','randomstring','../../mysqldb','../../config/utils'];(function(_0x2973c4,_0xa5334d){var _0x348932=function(_0x14d3e1){while(--_0x14d3e1){_0x2973c4['push'](_0x2973c4['shift']());}};_0x348932(++_0xa5334d);}(_0x3a05,0x74));var _0x53a0=function(_0x5b9db1,_0x58298a){_0x5b9db1=_0x5b9db1-0x0;var _0x3b1224=_0x3a05[_0x5b9db1];return _0x3b1224;};'use strict';var _=require('lodash');var util=require(_0x53a0('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x53a0('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x53a0('0x2'))['db'];var utils=require(_0x53a0('0x3'));var logger=require('../../config/logger')(_0x53a0('0x4'));var config=require(_0x53a0('0x5'));var jayson=require(_0x53a0('0x6'));var client=jayson['client'][_0x53a0('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x46f992,_0x430aaf,_0x53493a){return new BPromise(function(_0x208579,_0x10d646){return client[_0x53a0('0x8')](_0x46f992,_0x53493a)[_0x53a0('0x9')](function(_0x2a2401){logger[_0x53a0('0xa')](_0x53a0('0xb'),_0x430aaf,'request\x20sent');logger[_0x53a0('0xc')](_0x53a0('0xd'),_0x430aaf,_0x53a0('0xe'),JSON[_0x53a0('0xf')](_0x2a2401));if(_0x2a2401['error']){if(_0x2a2401[_0x53a0('0x10')]['code']===0x1f4){logger[_0x53a0('0x10')]('ChatQueueReport,\x20%s,\x20%s',_0x430aaf,_0x2a2401['error'][_0x53a0('0x11')]);return _0x10d646(_0x2a2401[_0x53a0('0x10')][_0x53a0('0x11')]);}logger['error'](_0x53a0('0xb'),_0x430aaf,_0x2a2401['error'][_0x53a0('0x11')]);return _0x208579(_0x2a2401[_0x53a0('0x10')][_0x53a0('0x11')]);}else{logger[_0x53a0('0xa')](_0x53a0('0xb'),_0x430aaf,'request\x20sent');_0x208579(_0x2a2401['result'][_0x53a0('0x11')]);}})[_0x53a0('0x12')](function(_0x6b01e5){logger['error'](_0x53a0('0xb'),_0x430aaf,_0x6b01e5);_0x10d646(_0x6b01e5);});});}exports[_0x53a0('0x13')]=function(_0x4162b8){var _0x43a456=this;return new Promise(function(_0x2c26c2,_0x1a8163){return db[_0x53a0('0x14')][_0x53a0('0x15')](_0x4162b8['body'],{'raw':_0x4162b8['options']?_0x4162b8[_0x53a0('0x16')][_0x53a0('0x17')]===undefined?!![]:![]:!![]})[_0x53a0('0x9')](function(_0x58aace){logger[_0x53a0('0xa')](_0x53a0('0x13'),_0x4162b8);logger[_0x53a0('0xc')](_0x53a0('0x13'),_0x4162b8,JSON['stringify'](_0x58aace));_0x2c26c2(_0x58aace);})[_0x53a0('0x12')](function(_0x93d3ba){logger[_0x53a0('0x10')](_0x53a0('0x13'),_0x93d3ba[_0x53a0('0x11')],_0x4162b8);_0x1a8163(_0x43a456[_0x53a0('0x10')](0x1f4,_0x93d3ba[_0x53a0('0x11')]));});});};exports[_0x53a0('0x18')]=function(_0x10ac1c){var _0x4d0844=this;return new Promise(function(_0x136782,_0x35d62){return db[_0x53a0('0x14')][_0x53a0('0x19')](_0x10ac1c[_0x53a0('0x1a')],{'raw':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x10ac1c['options']?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x1b')]||null:null,'attributes':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c['options'][_0x53a0('0x1c')]||null:null,'limit':_0x10ac1c[_0x53a0('0x16')]?_0x10ac1c[_0x53a0('0x16')][_0x53a0('0x1d')]||null:null})[_0x53a0('0x9')](function(_0x835dda){logger[_0x53a0('0xa')]('UpdateChatQueueReport',_0x10ac1c);logger[_0x53a0('0xc')](_0x53a0('0x18'),_0x10ac1c,JSON[_0x53a0('0xf')](_0x835dda));_0x136782(_0x835dda);})['catch'](function(_0x2d3ce1){logger['error'](_0x53a0('0x18'),_0x2d3ce1[_0x53a0('0x11')],_0x10ac1c);_0x35d62(_0x4d0844[_0x53a0('0x10')](0x1f4,_0x2d3ce1['message']));});});};
\ No newline at end of file
index 55f74cd..35bbf84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8520=['/describe','isAuthenticated','/:id','show','post','create','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','index','get'];(function(_0x13d20a,_0x170ae7){var _0x201686=function(_0x7f4bad){while(--_0x7f4bad){_0x13d20a['push'](_0x13d20a['shift']());}};_0x201686(++_0x170ae7);}(_0x8520,0x183));var _0x0852=function(_0x339aff,_0x583652){_0x339aff=_0x339aff-0x0;var _0x4e788f=_0x8520[_0x339aff];return _0x4e788f;};'use strict';var multer=require(_0x0852('0x0'));var util=require('util');var path=require(_0x0852('0x1'));var timeout=require(_0x0852('0x2'));var express=require(_0x0852('0x3'));var router=express[_0x0852('0x4')]();var fs_extra=require(_0x0852('0x5'));var auth=require(_0x0852('0x6'));var interaction=require(_0x0852('0x7'));var config=require(_0x0852('0x8'));var controller=require(_0x0852('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x0852('0xa')]);router[_0x0852('0xb')](_0x0852('0xc'),auth[_0x0852('0xd')](),controller['describe']);router[_0x0852('0xb')](_0x0852('0xe'),auth[_0x0852('0xd')](),controller[_0x0852('0xf')]);router[_0x0852('0x10')]('/',auth[_0x0852('0xd')](),controller[_0x0852('0x11')]);router['put'](_0x0852('0xe'),auth[_0x0852('0xd')](),controller[_0x0852('0x12')]);router['delete'](_0x0852('0xe'),auth[_0x0852('0xd')](),controller[_0x0852('0x13')]);module[_0x0852('0x14')]=router;
\ No newline at end of file
+var _0x63ea=['../../components/interaction/service','./chatQueueReport.controller','get','isAuthenticated','index','describe','/:id','show','post','update','delete','exports','util','path','connect-timeout','Router'];(function(_0x2adbeb,_0x5581be){var _0x5e18a6=function(_0x84e42b){while(--_0x84e42b){_0x2adbeb['push'](_0x2adbeb['shift']());}};_0x5e18a6(++_0x5581be);}(_0x63ea,0x1dc));var _0xa63e=function(_0x55f933,_0xfdf72a){_0x55f933=_0x55f933-0x0;var _0x17f312=_0x63ea[_0x55f933];return _0x17f312;};'use strict';var multer=require('multer');var util=require(_0xa63e('0x0'));var path=require(_0xa63e('0x1'));var timeout=require(_0xa63e('0x2'));var express=require('express');var router=express[_0xa63e('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xa63e('0x4'));var config=require('../../config/environment');var controller=require(_0xa63e('0x5'));router[_0xa63e('0x6')]('/',auth[_0xa63e('0x7')](),controller[_0xa63e('0x8')]);router[_0xa63e('0x6')]('/describe',auth[_0xa63e('0x7')](),controller[_0xa63e('0x9')]);router['get'](_0xa63e('0xa'),auth[_0xa63e('0x7')](),controller[_0xa63e('0xb')]);router[_0xa63e('0xc')]('/',auth[_0xa63e('0x7')](),controller['create']);router['put'](_0xa63e('0xa'),auth['isAuthenticated'](),controller[_0xa63e('0xd')]);router[_0xa63e('0xe')]('/:id',auth[_0xa63e('0x7')](),controller['destroy']);module[_0xa63e('0xf')]=router;
\ No newline at end of file
index bef669b..afb44db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['agent','queue','DATE','NOW','moment','sequelize','exports','ENUM','account'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x54ef,0x112));var _0xf54e=function(_0x103156,_0x506606){_0x103156=_0x103156-0x0;var _0x40c3f8=_0x54ef[_0x103156];return _0x40c3f8;};'use strict';var moment=require(_0xf54e('0x0'));var Sequelize=require(_0xf54e('0x1'));module[_0xf54e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xf54e('0x3')](_0xf54e('0x4'),_0xf54e('0x5'),_0xf54e('0x6')),'allowNull':![],'defaultValue':_0xf54e('0x6')},'transferredAt':{'type':Sequelize[_0xf54e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xf54e('0x8')]}};
\ No newline at end of file
+var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x44508f,_0x3d2edc){var _0x3cc7b9=function(_0x362c76){while(--_0x362c76){_0x44508f['push'](_0x44508f['shift']());}};_0x3cc7b9(++_0x3d2edc);}(_0x9c44,0x178));var _0x49c4=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x9c44[_0x21549c];return _0x426cbd;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0x49c4('0x0')]={'uniqueid':{'type':Sequelize[_0x49c4('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x49c4('0x2')](_0x49c4('0x3'),_0x49c4('0x4'),_0x49c4('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x49c4('0x6')]}};
\ No newline at end of file
index 3aaab4f..b12abc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2913=['params','keys','include','create','body','find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','ChatTransferReport','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','catch','show'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x2913,0x13f));var _0x3291=function(_0x414e02,_0xc56f25){_0x414e02=_0x414e02-0x0;var _0x54f894=_0x2913[_0x414e02];return _0x54f894;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3291('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3291('0x1'));var rp=require(_0x3291('0x2'));var moment=require(_0x3291('0x3'));var BPromise=require(_0x3291('0x4'));var Mustache=require(_0x3291('0x5'));var util=require(_0x3291('0x6'));var path=require(_0x3291('0x7'));var sox=require(_0x3291('0x8'));var csv=require(_0x3291('0x9'));var ejs=require(_0x3291('0xa'));var fs=require('fs');var fs_extra=require(_0x3291('0xb'));var _=require(_0x3291('0xc'));var squel=require('squel');var crypto=require(_0x3291('0xd'));var jsforce=require(_0x3291('0xe'));var deskjs=require(_0x3291('0xf'));var toCsv=require(_0x3291('0x9'));var querystring=require(_0x3291('0x10'));var Papa=require(_0x3291('0x11'));var Redis=require(_0x3291('0x12'));var authService=require(_0x3291('0x13'));var qs=require(_0x3291('0x14'));var as=require(_0x3291('0x15'));var hardwareService=require(_0x3291('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x3291('0x17'));var config=require(_0x3291('0x18'));var licenseUtil=require(_0x3291('0x19'));var db=require(_0x3291('0x1a'))['db'];function respondWithStatusCode(_0x97b560,_0x39bd84){_0x39bd84=_0x39bd84||0xcc;return function(_0x161f5f){if(_0x161f5f){return _0x97b560[_0x3291('0x1b')](_0x39bd84);}return _0x97b560[_0x3291('0x1c')](_0x39bd84)[_0x3291('0x1d')]();};}function respondWithResult(_0x2c2c9f,_0x5c3c79){_0x5c3c79=_0x5c3c79||0xc8;return function(_0x48f2d2){if(_0x48f2d2){return _0x2c2c9f['status'](_0x5c3c79)[_0x3291('0x1e')](_0x48f2d2);}};}function respondWithFilteredResult(_0x3a0655,_0x18a70c){return function(_0x15736e){if(_0x15736e){var _0x2e6ccb=typeof _0x18a70c[_0x3291('0x1f')]==='undefined'&&typeof _0x18a70c[_0x3291('0x20')]==='undefined';var _0x524298=_0x15736e['count'];var _0x151987=_0x2e6ccb?0x0:_0x18a70c[_0x3291('0x1f')];var _0x1071eb=_0x2e6ccb?_0x15736e[_0x3291('0x21')]:_0x18a70c[_0x3291('0x1f')]+_0x18a70c[_0x3291('0x20')];var _0x3c0c10;if(_0x1071eb>=_0x524298){_0x1071eb=_0x524298;_0x3c0c10=0xc8;}else{_0x3c0c10=0xce;}_0x3a0655[_0x3291('0x1c')](_0x3c0c10);return _0x3a0655[_0x3291('0x22')](_0x3291('0x23'),_0x151987+'-'+_0x1071eb+'/'+_0x524298)[_0x3291('0x1e')](_0x15736e);}return null;};}function patchUpdates(_0x41c099){return function(_0x489e68){try{jsonpatch[_0x3291('0x24')](_0x489e68,_0x41c099,!![]);}catch(_0x7adc5b){return BPromise[_0x3291('0x25')](_0x7adc5b);}return _0x489e68['save']();};}function saveUpdates(_0x2329b2,_0xa9e256){return function(_0x2949d2){if(_0x2949d2){return _0x2949d2[_0x3291('0x26')](_0x2329b2)[_0x3291('0x27')](function(_0x207718){return _0x207718;});}return null;};}function removeEntity(_0x5168a2,_0xfd9063){return function(_0x294ab5){if(_0x294ab5){return _0x294ab5[_0x3291('0x28')]()[_0x3291('0x27')](function(){_0x5168a2[_0x3291('0x1c')](0xcc)[_0x3291('0x1d')]();});}};}function handleEntityNotFound(_0x2c1f9e,_0x40334c){return function(_0x2e3caf){if(!_0x2e3caf){_0x2c1f9e[_0x3291('0x1b')](0x194);}return _0x2e3caf;};}function handleError(_0x2144b2,_0xe3de30){_0xe3de30=_0xe3de30||0x1f4;return function(_0x34d42a){logger['error'](_0x34d42a[_0x3291('0x29')]);if(_0x34d42a[_0x3291('0x2a')]){delete _0x34d42a[_0x3291('0x2a')];}_0x2144b2['status'](_0xe3de30)[_0x3291('0x2b')](_0x34d42a);};}exports[_0x3291('0x2c')]=function(_0x41ed78,_0x46d55b){var _0x112713={},_0x33dc15={},_0x47c11e={'count':0x0,'rows':[]};var _0x476599=_['map'](db[_0x3291('0x2d')][_0x3291('0x2e')],function(_0xe58b29){return{'name':_0xe58b29[_0x3291('0x2f')],'type':_0xe58b29[_0x3291('0x30')][_0x3291('0x31')]};});_0x33dc15[_0x3291('0x32')]=_[_0x3291('0x33')](_0x476599,_0x3291('0x2a'));_0x33dc15[_0x3291('0x34')]=_['keys'](_0x41ed78[_0x3291('0x34')]);_0x33dc15[_0x3291('0x35')]=_['intersection'](_0x33dc15[_0x3291('0x32')],_0x33dc15['query']);_0x112713[_0x3291('0x36')]=_[_0x3291('0x37')](_0x33dc15[_0x3291('0x32')],qs[_0x3291('0x38')](_0x41ed78[_0x3291('0x34')][_0x3291('0x38')]));_0x112713['attributes']=_0x112713[_0x3291('0x36')][_0x3291('0x39')]?_0x112713[_0x3291('0x36')]:_0x33dc15[_0x3291('0x32')];if(!_0x41ed78[_0x3291('0x34')][_0x3291('0x3a')](_0x3291('0x3b'))){_0x112713[_0x3291('0x20')]=qs[_0x3291('0x20')](_0x41ed78[_0x3291('0x34')][_0x3291('0x20')]);_0x112713[_0x3291('0x1f')]=qs[_0x3291('0x1f')](_0x41ed78[_0x3291('0x34')][_0x3291('0x1f')]);}_0x112713['order']=qs[_0x3291('0x3c')](_0x41ed78['query']['sort']);_0x112713['where']=qs['filters'](_[_0x3291('0x3d')](_0x41ed78[_0x3291('0x34')],_0x33dc15[_0x3291('0x35')]),_0x476599);if(_0x41ed78['query'][_0x3291('0x3e')]){_0x112713[_0x3291('0x3f')]=_[_0x3291('0x40')](_0x112713[_0x3291('0x3f')],{'$or':_[_0x3291('0x33')](_0x476599,function(_0x216d3c){if(_0x216d3c[_0x3291('0x30')]!==_0x3291('0x41')){var _0x1b44a2={};_0x1b44a2[_0x216d3c['name']]={'$like':'%'+_0x41ed78[_0x3291('0x34')][_0x3291('0x3e')]+'%'};return _0x1b44a2;}})});}_0x112713=_[_0x3291('0x40')]({},_0x112713,_0x41ed78[_0x3291('0x42')]);var _0x3e13d5={'where':_0x112713[_0x3291('0x3f')]};return db[_0x3291('0x2d')][_0x3291('0x21')](_0x3e13d5)[_0x3291('0x27')](function(_0x13acfa){_0x47c11e[_0x3291('0x21')]=_0x13acfa;if(_0x41ed78[_0x3291('0x34')][_0x3291('0x43')]){_0x112713['include']=[{'all':!![]}];}return db['ChatTransferReport'][_0x3291('0x44')](_0x112713);})[_0x3291('0x27')](function(_0x1ca995){_0x47c11e['rows']=_0x1ca995;return _0x47c11e;})[_0x3291('0x27')](respondWithFilteredResult(_0x46d55b,_0x112713))[_0x3291('0x45')](handleError(_0x46d55b,null));};exports[_0x3291('0x46')]=function(_0x19f08d,_0x37c6ed){var _0x4fce96={'raw':!![],'where':{'id':_0x19f08d[_0x3291('0x47')]['id']}},_0x438be4={};_0x438be4[_0x3291('0x32')]=_['keys'](db[_0x3291('0x2d')]['rawAttributes']);_0x438be4[_0x3291('0x34')]=_[_0x3291('0x48')](_0x19f08d[_0x3291('0x34')]);_0x438be4['filters']=_[_0x3291('0x37')](_0x438be4[_0x3291('0x32')],_0x438be4[_0x3291('0x34')]);_0x4fce96[_0x3291('0x36')]=_[_0x3291('0x37')](_0x438be4[_0x3291('0x32')],qs[_0x3291('0x38')](_0x19f08d[_0x3291('0x34')]['fields']));_0x4fce96[_0x3291('0x36')]=_0x4fce96[_0x3291('0x36')][_0x3291('0x39')]?_0x4fce96[_0x3291('0x36')]:_0x438be4[_0x3291('0x32')];if(_0x19f08d[_0x3291('0x34')][_0x3291('0x43')]){_0x4fce96[_0x3291('0x49')]=[{'all':!![]}];}_0x4fce96=_[_0x3291('0x40')]({},_0x4fce96,_0x19f08d[_0x3291('0x42')]);return db[_0x3291('0x2d')]['find'](_0x4fce96)[_0x3291('0x27')](handleEntityNotFound(_0x37c6ed,null))[_0x3291('0x27')](respondWithResult(_0x37c6ed,null))[_0x3291('0x45')](handleError(_0x37c6ed,null));};exports[_0x3291('0x4a')]=function(_0x487723,_0x48804d){return db[_0x3291('0x2d')][_0x3291('0x4a')](_0x487723[_0x3291('0x4b')],{})['then'](respondWithResult(_0x48804d,0xc9))[_0x3291('0x45')](handleError(_0x48804d,null));};exports['update']=function(_0x2f33d0,_0x35f20a){if(_0x2f33d0[_0x3291('0x4b')]['id']){delete _0x2f33d0['body']['id'];}return db[_0x3291('0x2d')][_0x3291('0x4c')]({'where':{'id':_0x2f33d0[_0x3291('0x47')]['id']}})[_0x3291('0x27')](handleEntityNotFound(_0x35f20a,null))['then'](saveUpdates(_0x2f33d0['body'],null))[_0x3291('0x27')](respondWithResult(_0x35f20a,null))[_0x3291('0x45')](handleError(_0x35f20a,null));};exports[_0x3291('0x28')]=function(_0x320eed,_0x464972){return db[_0x3291('0x2d')][_0x3291('0x4c')]({'where':{'id':_0x320eed[_0x3291('0x47')]['id']}})[_0x3291('0x27')](handleEntityNotFound(_0x464972,null))[_0x3291('0x27')](removeEntity(_0x464972,null))[_0x3291('0x45')](handleError(_0x464972,null));};exports[_0x3291('0x4d')]=function(_0x97596e,_0xd08ebe){return db[_0x3291('0x2d')][_0x3291('0x4d')]()['then'](respondWithResult(_0xd08ebe,null))[_0x3291('0x45')](handleError(_0xd08ebe,null));};
\ No newline at end of file
+var _0xad5c=['includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','save','update','then','error','name','send','index','map','ChatTransferReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options'];(function(_0x24b9c5,_0x2672cd){var _0x27fd24=function(_0x3c7215){while(--_0x3c7215){_0x24b9c5['push'](_0x24b9c5['shift']());}};_0x27fd24(++_0x2672cd);}(_0xad5c,0x179));var _0xcad5=function(_0x2b05e1,_0x42dd94){_0x2b05e1=_0x2b05e1-0x0;var _0x1701ba=_0xad5c[_0x2b05e1];return _0x1701ba;};'use strict';var emlformat=require(_0xcad5('0x0'));var rimraf=require(_0xcad5('0x1'));var zipdir=require(_0xcad5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcad5('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xcad5('0x4'));var util=require(_0xcad5('0x5'));var path=require('path');var sox=require(_0xcad5('0x6'));var csv=require(_0xcad5('0x7'));var ejs=require(_0xcad5('0x8'));var fs=require('fs');var fs_extra=require(_0xcad5('0x9'));var _=require('lodash');var squel=require(_0xcad5('0xa'));var crypto=require('crypto');var jsforce=require(_0xcad5('0xb'));var deskjs=require(_0xcad5('0xc'));var toCsv=require(_0xcad5('0x7'));var querystring=require(_0xcad5('0xd'));var Papa=require(_0xcad5('0xe'));var Redis=require('ioredis');var authService=require(_0xcad5('0xf'));var qs=require(_0xcad5('0x10'));var as=require(_0xcad5('0x11'));var hardwareService=require(_0xcad5('0x12'));var logger=require(_0xcad5('0x13'))(_0xcad5('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xcad5('0x15'));var db=require(_0xcad5('0x16'))['db'];function respondWithStatusCode(_0x32dee4,_0x472383){_0x472383=_0x472383||0xcc;return function(_0x36e5e1){if(_0x36e5e1){return _0x32dee4[_0xcad5('0x17')](_0x472383);}return _0x32dee4[_0xcad5('0x18')](_0x472383)[_0xcad5('0x19')]();};}function respondWithResult(_0x5c8188,_0x101fe5){_0x101fe5=_0x101fe5||0xc8;return function(_0x58c2ee){if(_0x58c2ee){return _0x5c8188['status'](_0x101fe5)[_0xcad5('0x1a')](_0x58c2ee);}};}function respondWithFilteredResult(_0x21bf8b,_0x4465ee){return function(_0x15aa96){if(_0x15aa96){var _0x415cf1=typeof _0x4465ee[_0xcad5('0x1b')]===_0xcad5('0x1c')&&typeof _0x4465ee[_0xcad5('0x1d')]==='undefined';var _0x1a0939=_0x15aa96[_0xcad5('0x1e')];var _0x2ffb37=_0x415cf1?0x0:_0x4465ee[_0xcad5('0x1b')];var _0x4ee9b7=_0x415cf1?_0x15aa96['count']:_0x4465ee['offset']+_0x4465ee[_0xcad5('0x1d')];var _0x284591;if(_0x4ee9b7>=_0x1a0939){_0x4ee9b7=_0x1a0939;_0x284591=0xc8;}else{_0x284591=0xce;}_0x21bf8b[_0xcad5('0x18')](_0x284591);return _0x21bf8b[_0xcad5('0x1f')]('Content-Range',_0x2ffb37+'-'+_0x4ee9b7+'/'+_0x1a0939)[_0xcad5('0x1a')](_0x15aa96);}return null;};}function patchUpdates(_0x3e59a4){return function(_0xa9f434){try{jsonpatch['apply'](_0xa9f434,_0x3e59a4,!![]);}catch(_0x3c57bd){return BPromise['reject'](_0x3c57bd);}return _0xa9f434[_0xcad5('0x20')]();};}function saveUpdates(_0x3b5fca,_0x2b565a){return function(_0x7b419b){if(_0x7b419b){return _0x7b419b[_0xcad5('0x21')](_0x3b5fca)[_0xcad5('0x22')](function(_0x51eede){return _0x51eede;});}return null;};}function removeEntity(_0x443268,_0x5b835d){return function(_0x287ea7){if(_0x287ea7){return _0x287ea7['destroy']()[_0xcad5('0x22')](function(){_0x443268[_0xcad5('0x18')](0xcc)[_0xcad5('0x19')]();});}};}function handleEntityNotFound(_0x5c3afc,_0xbb6f96){return function(_0x41b32d){if(!_0x41b32d){_0x5c3afc[_0xcad5('0x17')](0x194);}return _0x41b32d;};}function handleError(_0x36f518,_0x4285a0){_0x4285a0=_0x4285a0||0x1f4;return function(_0xd68b67){logger[_0xcad5('0x23')](_0xd68b67['stack']);if(_0xd68b67[_0xcad5('0x24')]){delete _0xd68b67[_0xcad5('0x24')];}_0x36f518[_0xcad5('0x18')](_0x4285a0)[_0xcad5('0x25')](_0xd68b67);};}exports[_0xcad5('0x26')]=function(_0x300c13,_0x48899d){var _0x329202={},_0x334a33={},_0x541087={'count':0x0,'rows':[]};var _0x20cc21=_[_0xcad5('0x27')](db[_0xcad5('0x28')][_0xcad5('0x29')],function(_0x5aaddb){return{'name':_0x5aaddb[_0xcad5('0x2a')],'type':_0x5aaddb[_0xcad5('0x2b')]['key']};});_0x334a33[_0xcad5('0x2c')]=_[_0xcad5('0x27')](_0x20cc21,'name');_0x334a33[_0xcad5('0x2d')]=_[_0xcad5('0x2e')](_0x300c13[_0xcad5('0x2d')]);_0x334a33[_0xcad5('0x2f')]=_[_0xcad5('0x30')](_0x334a33[_0xcad5('0x2c')],_0x334a33['query']);_0x329202['attributes']=_[_0xcad5('0x30')](_0x334a33[_0xcad5('0x2c')],qs[_0xcad5('0x31')](_0x300c13['query']['fields']));_0x329202[_0xcad5('0x32')]=_0x329202[_0xcad5('0x32')][_0xcad5('0x33')]?_0x329202[_0xcad5('0x32')]:_0x334a33['model'];if(!_0x300c13[_0xcad5('0x2d')][_0xcad5('0x34')](_0xcad5('0x35'))){_0x329202['limit']=qs[_0xcad5('0x1d')](_0x300c13[_0xcad5('0x2d')]['limit']);_0x329202[_0xcad5('0x1b')]=qs[_0xcad5('0x1b')](_0x300c13['query']['offset']);}_0x329202[_0xcad5('0x36')]=qs[_0xcad5('0x37')](_0x300c13[_0xcad5('0x2d')][_0xcad5('0x37')]);_0x329202[_0xcad5('0x38')]=qs[_0xcad5('0x2f')](_[_0xcad5('0x39')](_0x300c13[_0xcad5('0x2d')],_0x334a33['filters']),_0x20cc21);if(_0x300c13['query'][_0xcad5('0x3a')]){_0x329202[_0xcad5('0x38')]=_['merge'](_0x329202[_0xcad5('0x38')],{'$or':_['map'](_0x20cc21,function(_0x195880){if(_0x195880[_0xcad5('0x2b')]!=='VIRTUAL'){var _0x1db052={};_0x1db052[_0x195880['name']]={'$like':'%'+_0x300c13[_0xcad5('0x2d')][_0xcad5('0x3a')]+'%'};return _0x1db052;}})});}_0x329202=_[_0xcad5('0x3b')]({},_0x329202,_0x300c13[_0xcad5('0x3c')]);var _0x20662d={'where':_0x329202[_0xcad5('0x38')]};return db['ChatTransferReport'][_0xcad5('0x1e')](_0x20662d)['then'](function(_0x4dc2e9){_0x541087[_0xcad5('0x1e')]=_0x4dc2e9;if(_0x300c13[_0xcad5('0x2d')][_0xcad5('0x3d')]){_0x329202[_0xcad5('0x3e')]=[{'all':!![]}];}return db[_0xcad5('0x28')][_0xcad5('0x3f')](_0x329202);})[_0xcad5('0x22')](function(_0xc81721){_0x541087[_0xcad5('0x40')]=_0xc81721;return _0x541087;})[_0xcad5('0x22')](respondWithFilteredResult(_0x48899d,_0x329202))['catch'](handleError(_0x48899d,null));};exports[_0xcad5('0x41')]=function(_0x328a42,_0xaf628e){var _0x4d6c06={'raw':!![],'where':{'id':_0x328a42[_0xcad5('0x42')]['id']}},_0x2f113c={};_0x2f113c[_0xcad5('0x2c')]=_[_0xcad5('0x2e')](db[_0xcad5('0x28')][_0xcad5('0x29')]);_0x2f113c['query']=_[_0xcad5('0x2e')](_0x328a42[_0xcad5('0x2d')]);_0x2f113c[_0xcad5('0x2f')]=_[_0xcad5('0x30')](_0x2f113c['model'],_0x2f113c[_0xcad5('0x2d')]);_0x4d6c06['attributes']=_['intersection'](_0x2f113c[_0xcad5('0x2c')],qs[_0xcad5('0x31')](_0x328a42[_0xcad5('0x2d')][_0xcad5('0x31')]));_0x4d6c06[_0xcad5('0x32')]=_0x4d6c06[_0xcad5('0x32')][_0xcad5('0x33')]?_0x4d6c06[_0xcad5('0x32')]:_0x2f113c[_0xcad5('0x2c')];if(_0x328a42[_0xcad5('0x2d')][_0xcad5('0x3d')]){_0x4d6c06[_0xcad5('0x3e')]=[{'all':!![]}];}_0x4d6c06=_['merge']({},_0x4d6c06,_0x328a42[_0xcad5('0x3c')]);return db[_0xcad5('0x28')][_0xcad5('0x43')](_0x4d6c06)[_0xcad5('0x22')](handleEntityNotFound(_0xaf628e,null))[_0xcad5('0x22')](respondWithResult(_0xaf628e,null))[_0xcad5('0x44')](handleError(_0xaf628e,null));};exports[_0xcad5('0x45')]=function(_0x2b9a62,_0x2b1edb){return db[_0xcad5('0x28')][_0xcad5('0x45')](_0x2b9a62[_0xcad5('0x46')],{})[_0xcad5('0x22')](respondWithResult(_0x2b1edb,0xc9))[_0xcad5('0x44')](handleError(_0x2b1edb,null));};exports[_0xcad5('0x21')]=function(_0x1e2059,_0x10d147){if(_0x1e2059[_0xcad5('0x46')]['id']){delete _0x1e2059['body']['id'];}return db[_0xcad5('0x28')][_0xcad5('0x43')]({'where':{'id':_0x1e2059[_0xcad5('0x42')]['id']}})[_0xcad5('0x22')](handleEntityNotFound(_0x10d147,null))[_0xcad5('0x22')](saveUpdates(_0x1e2059[_0xcad5('0x46')],null))[_0xcad5('0x22')](respondWithResult(_0x10d147,null))[_0xcad5('0x44')](handleError(_0x10d147,null));};exports[_0xcad5('0x47')]=function(_0x236e17,_0x14825e){return db[_0xcad5('0x28')][_0xcad5('0x43')]({'where':{'id':_0x236e17[_0xcad5('0x42')]['id']}})[_0xcad5('0x22')](handleEntityNotFound(_0x14825e,null))['then'](removeEntity(_0x14825e,null))['catch'](handleError(_0x14825e,null));};exports[_0xcad5('0x48')]=function(_0xf610a0,_0xb513){return db[_0xcad5('0x28')][_0xcad5('0x48')]()[_0xcad5('0x22')](respondWithResult(_0xb513,null))[_0xcad5('0x44')](handleError(_0xb513,null));};
\ No newline at end of file
index a47245a..9a4d896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5619=['uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','exports','define','ChatTransferReport'];(function(_0x51b51,_0x572939){var _0x4c03d3=function(_0x24c95a){while(--_0x24c95a){_0x51b51['push'](_0x51b51['shift']());}};_0x4c03d3(++_0x572939);}(_0x5619,0x140));var _0x9561=function(_0x3aa674,_0x5f1d3f){_0x3aa674=_0x3aa674-0x0;var _0x3cd999=_0x5619[_0x3aa674];return _0x3cd999;};'use strict';var _=require(_0x9561('0x0'));var util=require(_0x9561('0x1'));var logger=require(_0x9561('0x2'))(_0x9561('0x3'));var moment=require('moment');var BPromise=require(_0x9561('0x4'));var rp=require(_0x9561('0x5'));var fs=require('fs');var path=require(_0x9561('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatTransferReport.attributes');module[_0x9561('0x7')]=function(_0x427c69,_0x3a9237){return _0x427c69[_0x9561('0x8')](_0x9561('0x9'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':_0x9561('0xa'),'fields':[_0x9561('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf781=['lodash','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./chatTransferReport.attributes','define','ChatTransferReport','uniqueid'];(function(_0x2d126e,_0x1e8257){var _0xcb04d3=function(_0x19a2d9){while(--_0x19a2d9){_0x2d126e['push'](_0x2d126e['shift']());}};_0xcb04d3(++_0x1e8257);}(_0xf781,0xb4));var _0x1f78=function(_0x4f8a8c,_0x1c9763){_0x4f8a8c=_0x4f8a8c-0x0;var _0x28169b=_0xf781[_0x4f8a8c];return _0x28169b;};'use strict';var _=require(_0x1f78('0x0'));var util=require('util');var logger=require(_0x1f78('0x1'))(_0x1f78('0x2'));var moment=require(_0x1f78('0x3'));var BPromise=require(_0x1f78('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1f78('0x5'));var rimraf=require(_0x1f78('0x6'));var config=require(_0x1f78('0x7'));var attributes=require(_0x1f78('0x8'));module['exports']=function(_0x1fe4a6,_0x2bbd1f){return _0x1fe4a6[_0x1f78('0x9')](_0x1f78('0xa'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x1f78('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index aa35bff..79492e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9792=['message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0xec7ebb,_0x27b2da){var _0x52d0ed=function(_0x3b0aef){while(--_0x3b0aef){_0xec7ebb['push'](_0xec7ebb['shift']());}};_0x52d0ed(++_0x27b2da);}(_0x9792,0x1a4));var _0x2979=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x9792[_0x46698a];return _0x356db0;};'use strict';var _=require(_0x2979('0x0'));var util=require(_0x2979('0x1'));var moment=require(_0x2979('0x2'));var BPromise=require('bluebird');var rs=require(_0x2979('0x3'));var fs=require('fs');var Redis=require(_0x2979('0x4'));var db=require(_0x2979('0x5'))['db'];var utils=require(_0x2979('0x6'));var logger=require(_0x2979('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x2979('0x8'));var client=jayson[_0x2979('0x9')][_0x2979('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30eb86,_0x1d53de,_0x3be250){return new BPromise(function(_0x454c3b,_0x3de87d){return client[_0x2979('0xb')](_0x30eb86,_0x3be250)[_0x2979('0xc')](function(_0x37ced9){logger[_0x2979('0xd')](_0x2979('0xe'),_0x1d53de,_0x2979('0xf'));logger[_0x2979('0x10')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x1d53de,_0x2979('0xf'),JSON[_0x2979('0x11')](_0x37ced9));if(_0x37ced9[_0x2979('0x12')]){if(_0x37ced9[_0x2979('0x12')][_0x2979('0x13')]===0x1f4){logger[_0x2979('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x1d53de,_0x37ced9[_0x2979('0x12')]['message']);return _0x3de87d(_0x37ced9[_0x2979('0x12')][_0x2979('0x14')]);}logger[_0x2979('0x12')]('ChatTransferReport,\x20%s,\x20%s',_0x1d53de,_0x37ced9[_0x2979('0x12')][_0x2979('0x14')]);return _0x454c3b(_0x37ced9['error'][_0x2979('0x14')]);}else{logger[_0x2979('0xd')](_0x2979('0xe'),_0x1d53de,_0x2979('0xf'));_0x454c3b(_0x37ced9[_0x2979('0x15')][_0x2979('0x14')]);}})['catch'](function(_0x376e4b){logger[_0x2979('0x12')](_0x2979('0xe'),_0x1d53de,_0x376e4b);_0x3de87d(_0x376e4b);});});}
\ No newline at end of file
+var _0x4612=['http','request','then','request\x20sent','debug','stringify','error','ChatTransferReport,\x20%s,\x20%s','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client'];(function(_0x2caa58,_0x152bc8){var _0x2c3da2=function(_0x12bd61){while(--_0x12bd61){_0x2caa58['push'](_0x2caa58['shift']());}};_0x2c3da2(++_0x152bc8);}(_0x4612,0x90));var _0x2461=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0x4612[_0x18a79d];return _0x4f8848;};'use strict';var _=require(_0x2461('0x0'));var util=require(_0x2461('0x1'));var moment=require('moment');var BPromise=require(_0x2461('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2461('0x3'));var db=require(_0x2461('0x4'))['db'];var utils=require(_0x2461('0x5'));var logger=require(_0x2461('0x6'))(_0x2461('0x7'));var config=require('../../config/environment');var jayson=require(_0x2461('0x8'));var client=jayson[_0x2461('0x9')][_0x2461('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2ffdff,_0x50f5e6,_0x5dc794){return new BPromise(function(_0x4b0a5c,_0x173532){return client[_0x2461('0xb')](_0x2ffdff,_0x5dc794)[_0x2461('0xc')](function(_0x5afacb){logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x50f5e6,_0x2461('0xd'));logger[_0x2461('0xe')]('ChatTransferReport,\x20%s,\x20%s,\x20%s',_0x50f5e6,'request\x20sent',JSON[_0x2461('0xf')](_0x5afacb));if(_0x5afacb['error']){if(_0x5afacb[_0x2461('0x10')]['code']===0x1f4){logger[_0x2461('0x10')](_0x2461('0x11'),_0x50f5e6,_0x5afacb[_0x2461('0x10')][_0x2461('0x12')]);return _0x173532(_0x5afacb['error'][_0x2461('0x12')]);}logger['error']('ChatTransferReport,\x20%s,\x20%s',_0x50f5e6,_0x5afacb[_0x2461('0x10')]['message']);return _0x4b0a5c(_0x5afacb[_0x2461('0x10')][_0x2461('0x12')]);}else{logger[_0x2461('0x13')](_0x2461('0x11'),_0x50f5e6,_0x2461('0xd'));_0x4b0a5c(_0x5afacb[_0x2461('0x14')][_0x2461('0x12')]);}})[_0x2461('0x15')](function(_0x55a059){logger[_0x2461('0x10')](_0x2461('0x11'),_0x50f5e6,_0x55a059);_0x173532(_0x55a059);});});}
\ No newline at end of file
index 0b52c2e..91ebc8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x555d=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete'];(function(_0x3a194f,_0x4964bf){var _0x43c8de=function(_0x216230){while(--_0x216230){_0x3a194f['push'](_0x3a194f['shift']());}};_0x43c8de(++_0x4964bf);}(_0x555d,0xe6));var _0xd555=function(_0x42d1f8,_0x22e529){_0x42d1f8=_0x42d1f8-0x0;var _0x40d234=_0x555d[_0x42d1f8];return _0x40d234;};'use strict';var multer=require(_0xd555('0x0'));var util=require(_0xd555('0x1'));var path=require(_0xd555('0x2'));var timeout=require(_0xd555('0x3'));var express=require(_0xd555('0x4'));var router=express['Router']();var fs_extra=require(_0xd555('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xd555('0x6'));var controller=require('./chatTransferReport.controller');router[_0xd555('0x7')]('/',auth[_0xd555('0x8')](),controller[_0xd555('0x9')]);router[_0xd555('0x7')](_0xd555('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0xd555('0x7')](_0xd555('0xb'),auth[_0xd555('0x8')](),controller[_0xd555('0xc')]);router['post']('/',auth[_0xd555('0x8')](),controller[_0xd555('0xd')]);router[_0xd555('0xe')]('/:id',auth[_0xd555('0x8')](),controller[_0xd555('0xf')]);router[_0xd555('0x10')]('/:id',auth[_0xd555('0x8')](),controller[_0xd555('0x11')]);module[_0xd555('0x12')]=router;
\ No newline at end of file
+var _0x707e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','index','/describe','isAuthenticated','/:id','show','post','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x991bc8,_0x176be1){var _0x256454=function(_0x14da93){while(--_0x14da93){_0x991bc8['push'](_0x991bc8['shift']());}};_0x256454(++_0x176be1);}(_0x707e,0xc0));var _0xe707=function(_0x119705,_0xba9427){_0x119705=_0x119705-0x0;var _0x2affc2=_0x707e[_0x119705];return _0x2affc2;};'use strict';var multer=require(_0xe707('0x0'));var util=require(_0xe707('0x1'));var path=require(_0xe707('0x2'));var timeout=require(_0xe707('0x3'));var express=require(_0xe707('0x4'));var router=express[_0xe707('0x5')]();var fs_extra=require(_0xe707('0x6'));var auth=require(_0xe707('0x7'));var interaction=require(_0xe707('0x8'));var config=require(_0xe707('0x9'));var controller=require(_0xe707('0xa'));router[_0xe707('0xb')]('/',auth['isAuthenticated'](),controller[_0xe707('0xc')]);router[_0xe707('0xb')](_0xe707('0xd'),auth[_0xe707('0xe')](),controller['describe']);router[_0xe707('0xb')](_0xe707('0xf'),auth[_0xe707('0xe')](),controller[_0xe707('0x10')]);router[_0xe707('0x11')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe707('0xf'),auth[_0xe707('0xe')](),controller[_0xe707('0x12')]);router[_0xe707('0x13')]('/:id',auth[_0xe707('0xe')](),controller[_0xe707('0x14')]);module[_0xe707('0x15')]=router;
\ No newline at end of file
index 3ea7e21..467bd0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdace=['Generated\x20by\x20XCALLY\x20Motion','sequelize','exports','STRING','email','Agent','#011F6A','#ffffff','BOOLEAN','squared','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Note','Type\x20a\x20message','Skip','Feedback','ENUM','star','thumb','input','name','getDataValue','parse','onlineForm','setDataValue','stringify','textarea','Comments','offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x5d9ceb,_0x1a49f5){var _0x33ce82=function(_0x583915){while(--_0x583915){_0x5d9ceb['push'](_0x5d9ceb['shift']());}};_0x33ce82(++_0x1a49f5);}(_0xdace,0xc5));var _0xedac=function(_0x3825a8,_0x2ce1a2){_0x3825a8=_0x3825a8-0x0;var _0xabc9bc=_0xdace[_0x3825a8];return _0xabc9bc;};'use strict';var Sequelize=require(_0xedac('0x0'));var rs=require('randomstring');module[_0xedac('0x1')]={'name':{'type':Sequelize[_0xedac('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xedac('0x2')]},'mapKey':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x3')},'mapKeyOffline':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'email'},'key':{'type':Sequelize[_0xedac('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xedac('0x2')]},'animation':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0xedac('0x8')),'defaultValue':_0xedac('0x9')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0xa')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0xb')},'offline_chat_button':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'header_offline':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xd')},'download_transcript':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xedac('0xf')]},'closingQuestion':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x11')},'placeholderMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x12')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'skipMessageButton':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x13')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x14')},'ratingType':{'type':Sequelize[_0xedac('0x15')](_0xedac('0x16'),_0xedac('0x17')),'defaultValue':_0xedac('0x16')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xedac('0x18'),'variable':null,'config':{'placeholder':_0xedac('0x19'),'type':'text','required':!![]},'props':{'title':_0xedac('0x19'),'helpText':''}},{'type':_0xedac('0x18'),'props':{'title':_0xedac('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0xedac('0x3'),'type':_0xedac('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xedac('0x1a')]('onlineForm')?JSON[_0xedac('0x1b')](this[_0xedac('0x1a')](_0xedac('0x1c'))):{};},'set':function(_0x41ad8d){return this[_0xedac('0x1d')](_0xedac('0x1c'),JSON[_0xedac('0x1e')](_0x41ad8d));}},'offlineForm':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return JSON[_0xedac('0x1e')]({'items':[{'type':_0xedac('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xedac('0x3'),'type':_0xedac('0x3')},'variable':null},{'type':_0xedac('0x1f'),'config':{'placeholder':'Comments'},'props':{'title':_0xedac('0x20'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xedac('0x21'))?JSON[_0xedac('0x1b')](this[_0xedac('0x1a')](_0xedac('0x21'))):{};},'set':function(_0x555f1f){return this['setDataValue'](_0xedac('0x21'),JSON[_0xedac('0x1e')](_0x555f1f));}},'token':{'type':Sequelize[_0xedac('0x2')],'defaultValue':function(){return rs[_0xedac('0x22')]();}},'autoclose':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xedac('0x2')]},'waitingTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x23')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0x24')},'offlineMessageBody':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x25')},'skipUnmanaged':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x13')},'sendUnmanaged':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xedac('0xf')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xedac('0x2')]},'notificationTemplate':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return _0xedac('0x26');}},'notificationSound':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x28')},'verticalAlignment':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x29')},'messagesAlignment':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0xedac('0x2')]},'customerAvatar':{'type':Sequelize[_0xedac('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xedac('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x2b')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xedac('0xe')],'comment':_0xedac('0x2c')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xedac('0x2d'),'set':function(_0x2fa832){if(!_0x2fa832)this['setDataValue'](_0xedac('0x2e'),null);this['setDataValue'](_0xedac('0x2f'),_0x2fa832);}},'vidaooEscalation':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xedac('0x2')]},'vidaooTopic':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x30')},'vidaooNote':{'type':Sequelize[_0xedac('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xedac('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xedac('0xf')]}};
\ No newline at end of file
+var _0x5ff3=['text','getDataValue','onlineForm','setDataValue','stringify','Comments','Leave\x20your\x20comments','offlineForm','parse','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','randomstring','STRING','address','email','Agent','#011F6A','#ffffff','BOOLEAN','squared','Chat','Send','Contact\x20us','INTEGER','Powered\x20by\x20xCALLY','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Form\x20properly\x20submitted','Form\x20submission\x20error','Note','Type\x20a\x20message','Thanks\x20you\x20for\x20your\x20time!','Skip','ENUM','star','thumb','input','name'];(function(_0x399e1f,_0x273571){var _0x4247bd=function(_0x1fcf17){while(--_0x1fcf17){_0x399e1f['push'](_0x399e1f['shift']());}};_0x4247bd(++_0x273571);}(_0x5ff3,0x17d));var _0x35ff=function(_0x591423,_0x4ed898){_0x591423=_0x591423-0x0;var _0x427378=_0x5ff3[_0x591423];return _0x427378;};'use strict';var Sequelize=require('sequelize');var rs=require(_0x35ff('0x0'));module['exports']={'name':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x35ff('0x2')},'description':{'type':Sequelize[_0x35ff('0x1')]},'mapKey':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x3')},'mapKeyOffline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x3')},'key':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x4')},'customerAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x5'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x35ff('0x6'),'validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x35ff('0x1')]},'animation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0x35ff('0x8')),'defaultValue':'rounded'},'header_online':{'type':Sequelize['STRING'],'defaultValue':'We\x20are\x20here!'},'start_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x9')},'offline_chat_button':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'header_offline':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xb')},'download_transcript':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xd')},'defaultWhiteLabel':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x35ff('0xe')]},'closingQuestion':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xf')},'formSubmitSuccessMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x10')},'formSubmitFailureMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x11')},'noteTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x12')},'placeholderMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x13')},'closingMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x14')},'closingMessageButton':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0xa')},'skipMessageButton':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'conditionAgreement':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'Feedback'},'ratingType':{'type':Sequelize[_0x35ff('0x16')](_0x35ff('0x17'),_0x35ff('0x18')),'defaultValue':_0x35ff('0x17')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0x35ff('0x19'),'variable':null,'config':{'placeholder':_0x35ff('0x1a'),'type':_0x35ff('0x1b'),'required':!![]},'props':{'title':_0x35ff('0x1a'),'helpText':''}},{'type':_0x35ff('0x19'),'props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':'email'},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x1d'))?JSON['parse'](this[_0x35ff('0x1c')]('onlineForm')):{};},'set':function(_0x4c46b7){return this[_0x35ff('0x1e')](_0x35ff('0x1d'),JSON[_0x35ff('0x1f')](_0x4c46b7));}},'offlineForm':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return JSON[_0x35ff('0x1f')]({'items':[{'type':'input','props':{'title':_0x35ff('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0x35ff('0x3'),'type':_0x35ff('0x3')},'variable':null},{'type':'textarea','config':{'placeholder':_0x35ff('0x20')},'props':{'title':_0x35ff('0x20'),'helpText':_0x35ff('0x21')}}],'fromKey':0x0});},'get':function(){return this[_0x35ff('0x1c')](_0x35ff('0x22'))?JSON[_0x35ff('0x23')](this[_0x35ff('0x1c')](_0x35ff('0x22'))):{};},'set':function(_0x105e58){return this['setDataValue'](_0x35ff('0x22'),JSON['stringify'](_0x105e58));}},'token':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return rs[_0x35ff('0x24')]();}},'autoclose':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize[_0x35ff('0x1')]},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x35ff('0x1')]},'waitingTitle':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x35ff('0x25')},'offlineMessageSubject':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x26')},'enableUnmanagedNote':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x27')},'skipUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x15')},'sendUnmanaged':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0xa')},'enableCustomerAttachment':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0x35ff('0xe')]},'showAgentAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'timezone':{'type':Sequelize[_0x35ff('0x1')]},'notificationTemplate':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':function(){return _0x35ff('0x28');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x29')},'waitForTheAssignedAgent':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2a')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2b')},'messagesAlignment':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2c')},'defaultTitle':{'type':Sequelize[_0x35ff('0x1')]},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x35ff('0xc')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x35ff('0xc')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':_0x35ff('0x2d')},'systemAvatar':{'type':Sequelize[_0x35ff('0xe')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x35ff('0xc')],'comment':_0x35ff('0x2e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x550c09){if(!_0x550c09)this[_0x35ff('0x1e')](_0x35ff('0x2f'),null);this[_0x35ff('0x1e')](_0x35ff('0x30'),_0x550c09);}},'vidaooEscalation':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize['STRING']},'vidaooTopic':{'type':Sequelize[_0x35ff('0x1')],'allowNull':![],'defaultValue':_0x35ff('0x31')},'vidaooNote':{'type':Sequelize[_0x35ff('0x1')],'defaultValue':function(){return _0x35ff('0x32');}},'vidaooMetadata':{'type':Sequelize[_0x35ff('0xe')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x35ff('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index 8eea934..b87a60f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60fb=['query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','mandatoryDispositionPause','rawAttributes','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','ChatWebsiteId','getDispositions','findOne','Disposition','pick','include','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addLogo','addAvatar','agentAvatar','file','filename','addCustomerAvatar','addSystemAvatar','join','root','../../config/license/util','custom','isNil','sitepic','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','customerAvatar','showCustomerAvatar','existsSync','getSystemAvatar','server/files/images/avatars/system_avatar.png','systemAvatar','notify','user-agent-parser','setUA','headers','user-agent','getResult','chat','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','from','from\x20is\x20mandatory','Sequelize','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','DESC','ChatApplication','Applications','applications','list','priority','asc','account','Contacts','ListId','contact','customerIp','cf-connecting-ip','x-forwarded-for','first','split','firstName','lastName','x-real-port','referer','browser','version','format','%s\x20%s','unknown','device','vendor','%s\x20%s\x20%s','type','threadId','externalUrl','ContactId','interaction','ChatInteraction','spread','messageId','created','autoclose','push','close','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','EventManager','files','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','defaults','findOrCreate','readFileSync','server/files/templates/chatOfflineMessage.ejs','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','server','attachments','offline-chat','openNewInteraction','sequelize','transaction','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','email','offlineMessageSubject','MailAccountId','mimetype','toPairsIn','subjectOffline','Chat','NotifyMailAccount','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','getInteractions','Contact','User','Owner','internal','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','getLicense','virtual','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','utf8','x-real-ip','connection','replace','alignment','verticalAlignment','color','labelText','textButtonColor','color_button','backgroundColor','hideWhenOffline','IntervalId','READ_COMMITTED','findAndCountAll','stack','finally','getApplications','chatProactiveAction','omit','ChatProactiveAction','getFields','online','false','offlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','isArray','emit','userChatWebsite:remove','getAgents','bluebird','mustache','util','path','ejs','fs-extra','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','./chatWebsite.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','code','error','ChatWebsite,\x20%s,\x20%s','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','update','get','ChatWebsites','UserProfileResource','then','send','Pause','map','ChatWebsite','model','name'];(function(_0x3042c5,_0x36cb88){var _0x7cd140=function(_0x4cdcd8){while(--_0x4cdcd8){_0x3042c5['push'](_0x3042c5['shift']());}};_0x7cd140(++_0x36cb88);}(_0x60fb,0xf8));var _0xb60f=function(_0x38576d,_0x527dc7){_0x38576d=_0x38576d-0x0;var _0x32534a=_0x60fb[_0x38576d];return _0x32534a;};'use strict';var BPromise=require(_0xb60f('0x0'));var Mustache=require(_0xb60f('0x1'));var util=require(_0xb60f('0x2'));var path=require(_0xb60f('0x3'));var ejs=require(_0xb60f('0x4'));var fs=require('fs');var fs_extra=require(_0xb60f('0x5'));var _=require('lodash');var querystring=require(_0xb60f('0x6'));var Redis=require(_0xb60f('0x7'));var qs=require(_0xb60f('0x8'));var logger=require('../../config/logger')(_0xb60f('0x9'));var config=require(_0xb60f('0xa'));var db=require(_0xb60f('0xb'))['db'];config[_0xb60f('0xc')]=_['defaults'](config['redis'],{'host':_0xb60f('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb60f('0xc')]));require(_0xb60f('0xe'))[_0xb60f('0xf')](socket);var htmlToText=require('html-to-text');var jayson=require(_0xb60f('0x10'));var client=jayson[_0xb60f('0x11')][_0xb60f('0x12')]({'port':0x232c});var client9002=jayson[_0xb60f('0x11')][_0xb60f('0x12')]({'port':0x232a});var client9003=jayson[_0xb60f('0x11')][_0xb60f('0x12')]({'port':0x232b});var client9001=jayson[_0xb60f('0x11')][_0xb60f('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x5d95d5,_0x5ac6cd,_0x884aa4,_0x9856ad){return new BPromise(function(_0x5f5bf0,_0x59e628){var _0x55cc46=_0x9856ad||client;return _0x55cc46[_0xb60f('0x13')](_0x5d95d5,_0x884aa4)['then'](function(_0x2e6043){logger[_0xb60f('0x14')]('ChatWebsite,\x20%s,\x20%s',_0x5ac6cd,_0xb60f('0x15'));logger[_0xb60f('0x16')]('ChatWebsite,\x20%s,\x20%s,\x20%s',_0x5ac6cd,_0xb60f('0x15'),JSON[_0xb60f('0x17')](_0x2e6043));if(_0x2e6043['error']){if(_0x2e6043['error'][_0xb60f('0x18')]===0x1f4){logger[_0xb60f('0x19')](_0xb60f('0x1a'),_0x5ac6cd,_0x2e6043[_0xb60f('0x19')]['message']);return _0x59e628(_0x2e6043[_0xb60f('0x19')]['message']);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x5ac6cd,_0x2e6043[_0xb60f('0x19')][_0xb60f('0x1b')]);return _0x5f5bf0(_0x2e6043[_0xb60f('0x19')]['message']);}else{logger['info']('ChatWebsite,\x20%s,\x20%s',_0x5ac6cd,_0xb60f('0x15'));_0x5f5bf0(_0x2e6043[_0xb60f('0x1c')]['message']);}})[_0xb60f('0x1d')](function(_0x3f864a){logger[_0xb60f('0x19')](_0xb60f('0x1a'),_0x5ac6cd,_0x3f864a);_0x59e628(_0x3f864a);});});}function respondWithStatusCode(_0x24b815,_0x36d7cd){_0x36d7cd=_0x36d7cd||0xcc;return function(_0x357af1){if(_0x357af1){return _0x24b815[_0xb60f('0x1e')](_0x36d7cd);}return _0x24b815['status'](_0x36d7cd)[_0xb60f('0x1f')]();};}function respondWithResult(_0xbe14bd,_0x25428e){_0x25428e=_0x25428e||0xc8;return function(_0x4f52de){if(_0x4f52de){return _0xbe14bd[_0xb60f('0x20')](_0x25428e)[_0xb60f('0x21')](_0x4f52de);}};}function respondWithFilteredResult(_0xe38013,_0x3be026){return function(_0x4a9e97){if(_0x4a9e97){var _0x3caca3=typeof _0x3be026[_0xb60f('0x22')]==='undefined'&&typeof _0x3be026['limit']===_0xb60f('0x23');var _0x52eda5=_0x4a9e97[_0xb60f('0x24')];var _0x27bf4b=_0x3caca3?0x0:_0x3be026['offset'];var _0x50aab8=_0x3caca3?_0x4a9e97[_0xb60f('0x24')]:_0x3be026[_0xb60f('0x22')]+_0x3be026[_0xb60f('0x25')];var _0xb10c2f;if(_0x50aab8>=_0x52eda5){_0x50aab8=_0x52eda5;_0xb10c2f=0xc8;}else{_0xb10c2f=0xce;}_0xe38013['status'](_0xb10c2f);return _0xe38013[_0xb60f('0x26')](_0xb60f('0x27'),_0x27bf4b+'-'+_0x50aab8+'/'+_0x52eda5)[_0xb60f('0x21')](_0x4a9e97);}return null;};}function saveUpdates(_0x4a6519){return function(_0x1140fa){if(_0x1140fa){return _0x1140fa[_0xb60f('0x28')](_0x4a6519)['then'](function(_0x3bccee){return _0x3bccee;});}return null;};}function removeEntity(_0x3b6178){return function(_0x2cb602){if(_0x2cb602){return _0x2cb602['destroy']()['then'](function(){var _0x587a56=_0x2cb602[_0xb60f('0x29')]({'plain':!![]});var _0x4c53d0=_0xb60f('0x2a');return db[_0xb60f('0x2b')]['destroy']({'where':{'type':_0x4c53d0,'resourceId':_0x587a56['id']}})[_0xb60f('0x2c')](function(){return _0x2cb602;});})[_0xb60f('0x2c')](function(){_0x3b6178['status'](0xcc)[_0xb60f('0x1f')]();});}};}function handleEntityNotFound(_0x476340){return function(_0x1cd0b4){if(!_0x1cd0b4){_0x476340[_0xb60f('0x1e')](0x194);}return _0x1cd0b4;};}function handleError(_0x3fcf7d,_0x5591e1){_0x5591e1=_0x5591e1||0x1f4;return function(_0x57906d){logger[_0xb60f('0x19')](_0x57906d['stack']);if(_0x57906d['name']){delete _0x57906d['name'];}_0x3fcf7d[_0xb60f('0x20')](_0x5591e1)[_0xb60f('0x2d')](_0x57906d);};}exports['index']=function(_0xc2453,_0x42e867){var _0x58b6c3={'include':[{'model':db[_0xb60f('0x2e')],'as':'mandatoryDispositionPause'}]},_0x197f46={},_0x5d63ec={'count':0x0,'rows':[]};var _0x4b0986=_[_0xb60f('0x2f')](db[_0xb60f('0x30')]['rawAttributes'],function(_0x4fc7cc){return{'name':_0x4fc7cc['fieldName'],'type':_0x4fc7cc['type']['key']};});_0x197f46[_0xb60f('0x31')]=_['map'](_0x4b0986,_0xb60f('0x32'));_0x197f46[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0xc2453[_0xb60f('0x33')]);_0x197f46[_0xb60f('0x35')]=_['intersection'](_0x197f46[_0xb60f('0x31')],_0x197f46[_0xb60f('0x33')]);_0x58b6c3['attributes']=_[_0xb60f('0x36')](_0x197f46[_0xb60f('0x31')],qs['fields'](_0xc2453['query']['fields']));_0x58b6c3['attributes']=_0x58b6c3[_0xb60f('0x37')][_0xb60f('0x38')]?_0x58b6c3['attributes']:_0x197f46[_0xb60f('0x31')];if(!_0xc2453['query'][_0xb60f('0x39')](_0xb60f('0x3a'))){_0x58b6c3['limit']=qs[_0xb60f('0x25')](_0xc2453[_0xb60f('0x33')][_0xb60f('0x25')]);_0x58b6c3['offset']=qs[_0xb60f('0x22')](_0xc2453['query']['offset']);}_0x58b6c3[_0xb60f('0x3b')]=qs[_0xb60f('0x3c')](_0xc2453['query'][_0xb60f('0x3c')]);_0x58b6c3[_0xb60f('0x3d')]=qs[_0xb60f('0x35')](_['pick'](_0xc2453[_0xb60f('0x33')],_0x197f46[_0xb60f('0x35')]),_0x4b0986);if(_0xc2453[_0xb60f('0x33')][_0xb60f('0x3e')]){_0x58b6c3[_0xb60f('0x3d')]=_[_0xb60f('0x3f')](_0x58b6c3[_0xb60f('0x3d')],{'$or':_[_0xb60f('0x2f')](_0x4b0986,function(_0x102227){if(_0x102227['type']!==_0xb60f('0x40')){var _0x271034={};_0x271034[_0x102227[_0xb60f('0x32')]]={'$like':'%'+_0xc2453[_0xb60f('0x33')][_0xb60f('0x3e')]+'%'};return _0x271034;}})});}_0x58b6c3=_[_0xb60f('0x3f')]({},_0x58b6c3,_0xc2453[_0xb60f('0x41')]);var _0x4764f8={'where':_0x58b6c3[_0xb60f('0x3d')]};return db[_0xb60f('0x30')][_0xb60f('0x24')](_0x4764f8)[_0xb60f('0x2c')](function(_0x3e3ae0){_0x5d63ec[_0xb60f('0x24')]=_0x3e3ae0;if(_0xc2453['query'][_0xb60f('0x42')]){_0x58b6c3['include']=[{'all':!![]}];}return db[_0xb60f('0x30')][_0xb60f('0x43')](_0x58b6c3);})[_0xb60f('0x2c')](function(_0x34240b){_0x5d63ec[_0xb60f('0x44')]=_0x34240b;return _0x5d63ec;})[_0xb60f('0x2c')](respondWithFilteredResult(_0x42e867,_0x58b6c3))[_0xb60f('0x1d')](handleError(_0x42e867,null));};exports[_0xb60f('0x45')]=function(_0x470a01,_0xc6b736){var _0x4a0dee={'raw':![],'where':{'id':_0x470a01['params']['id']},'include':[{'model':db[_0xb60f('0x2e')],'as':_0xb60f('0x46')}]},_0x37bfe5={};_0x37bfe5['model']=_[_0xb60f('0x34')](db[_0xb60f('0x30')][_0xb60f('0x47')]);_0x37bfe5[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x470a01[_0xb60f('0x33')]);_0x37bfe5[_0xb60f('0x35')]=_[_0xb60f('0x36')](_0x37bfe5[_0xb60f('0x31')],_0x37bfe5[_0xb60f('0x33')]);_0x4a0dee[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x37bfe5[_0xb60f('0x31')],qs['fields'](_0x470a01[_0xb60f('0x33')][_0xb60f('0x48')]));_0x4a0dee['attributes']=_0x4a0dee[_0xb60f('0x37')][_0xb60f('0x38')]?_0x4a0dee[_0xb60f('0x37')]:_0x37bfe5[_0xb60f('0x31')];if(_0x470a01[_0xb60f('0x33')][_0xb60f('0x42')]){_0x4a0dee['include']=[{'all':!![]}];}_0x4a0dee=_[_0xb60f('0x3f')]({},_0x4a0dee,_0x470a01[_0xb60f('0x41')]);return db['ChatWebsite'][_0xb60f('0x49')](_0x4a0dee)[_0xb60f('0x2c')](handleEntityNotFound(_0xc6b736,null))[_0xb60f('0x2c')](respondWithResult(_0xc6b736,null))[_0xb60f('0x1d')](handleError(_0xc6b736,null));};exports[_0xb60f('0x4a')]=function(_0x5b55b5,_0x373c27){return db[_0xb60f('0x30')][_0xb60f('0x4a')](_0x5b55b5[_0xb60f('0x4b')],{})[_0xb60f('0x2c')](function(_0x133bdf){var _0x4761af=_0x5b55b5[_0xb60f('0x4c')][_0xb60f('0x29')]({'plain':!![]});if(!_0x4761af)throw new Error(_0xb60f('0x4d'));if(_0x4761af['role']===_0xb60f('0x4c')){var _0x35e192=_0x133bdf[_0xb60f('0x29')]({'plain':!![]});var _0x371551='ChatWebsites';return db[_0xb60f('0x4e')][_0xb60f('0x49')]({'where':{'name':_0x371551,'userProfileId':_0x4761af[_0xb60f('0x4f')]},'raw':!![]})['then'](function(_0x5d2254){if(_0x5d2254&&_0x5d2254['autoAssociation']===0x0){return db[_0xb60f('0x2b')][_0xb60f('0x4a')]({'name':_0x35e192[_0xb60f('0x32')],'resourceId':_0x35e192['id'],'type':_0x5d2254['name'],'sectionId':_0x5d2254['id']},{})[_0xb60f('0x2c')](function(){return _0x133bdf;});}else{return _0x133bdf;}})[_0xb60f('0x1d')](function(_0x2fae6f){logger[_0xb60f('0x19')](_0xb60f('0x50'),_0x2fae6f);throw _0x2fae6f;});}return _0x133bdf;})[_0xb60f('0x2c')](respondWithResult(_0x373c27,0xc9))[_0xb60f('0x1d')](handleError(_0x373c27,null));};exports[_0xb60f('0x28')]=function(_0x4f15f0,_0x521aba){if(_0x4f15f0['body']['id']){delete _0x4f15f0[_0xb60f('0x4b')]['id'];}return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x4f15f0['params']['id']},'include':[{'model':db[_0xb60f('0x2e')],'as':_0xb60f('0x46')}]})[_0xb60f('0x2c')](handleEntityNotFound(_0x521aba,null))[_0xb60f('0x2c')](saveUpdates(_0x4f15f0['body'],null))[_0xb60f('0x2c')](respondWithResult(_0x521aba,null))[_0xb60f('0x1d')](handleError(_0x521aba,null));};exports['destroy']=function(_0x2e5091,_0x2e1284){return db['ChatWebsite'][_0xb60f('0x49')]({'where':{'id':_0x2e5091[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x2e1284,null))[_0xb60f('0x2c')](removeEntity(_0x2e1284,null))[_0xb60f('0x1d')](handleError(_0x2e1284,null));};exports[_0xb60f('0x52')]=function(_0x3c56e2,_0x31097f){return db[_0xb60f('0x30')][_0xb60f('0x52')]()[_0xb60f('0x2c')](respondWithResult(_0x31097f,null))[_0xb60f('0x1d')](handleError(_0x31097f,null));};exports[_0xb60f('0x53')]=function(_0x48c01a,_0x4fa3ec){if(_0x48c01a['body']['id']){delete _0x48c01a[_0xb60f('0x4b')]['id'];}return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x48c01a[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x4fa3ec,null))[_0xb60f('0x2c')](function(_0x1577bc){if(_0x1577bc){_0x48c01a['body'][_0xb60f('0x54')]=_0x1577bc['id'];return db['Disposition'][_0xb60f('0x4a')](_0x48c01a['body']);}})[_0xb60f('0x2c')](respondWithResult(_0x4fa3ec,null))[_0xb60f('0x1d')](handleError(_0x4fa3ec,null));};exports[_0xb60f('0x55')]=function(_0x1fc11b,_0x4cb049){var _0x1f143d={'raw':![],'where':{}};var _0x5c446a={};var _0x12c1e1={'count':0x0,'rows':[]};return db[_0xb60f('0x30')][_0xb60f('0x56')]({'where':{'id':_0x1fc11b[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x4cb049,null))[_0xb60f('0x2c')](function(_0x15eff2){if(_0x15eff2){_0x5c446a['model']=_[_0xb60f('0x34')](db[_0xb60f('0x57')][_0xb60f('0x47')]);_0x5c446a[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x1fc11b[_0xb60f('0x33')]);_0x5c446a['filters']=_[_0xb60f('0x36')](_0x5c446a[_0xb60f('0x31')],_0x5c446a[_0xb60f('0x33')]);_0x1f143d[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x5c446a[_0xb60f('0x31')],qs[_0xb60f('0x48')](_0x1fc11b[_0xb60f('0x33')]['fields']));_0x1f143d['attributes']=_0x1f143d[_0xb60f('0x37')][_0xb60f('0x38')]?_0x1f143d['attributes']:_0x5c446a['model'];if(!_0x1fc11b['query'][_0xb60f('0x39')](_0xb60f('0x3a'))){_0x1f143d[_0xb60f('0x25')]=qs[_0xb60f('0x25')](_0x1fc11b['query'][_0xb60f('0x25')]);_0x1f143d[_0xb60f('0x22')]=qs['offset'](_0x1fc11b[_0xb60f('0x33')]['offset']);}_0x1f143d[_0xb60f('0x3b')]=qs[_0xb60f('0x3c')](_0x1fc11b[_0xb60f('0x33')][_0xb60f('0x3c')]);_0x1f143d[_0xb60f('0x3d')]=qs[_0xb60f('0x35')](_[_0xb60f('0x58')](_0x1fc11b[_0xb60f('0x33')],_0x5c446a[_0xb60f('0x35')]));_0x1f143d[_0xb60f('0x3d')][_0xb60f('0x54')]=_0x15eff2['id'];if(_0x1fc11b[_0xb60f('0x33')][_0xb60f('0x3e')]){_0x1f143d['where']=_['merge'](_0x1f143d['where'],{'$or':_[_0xb60f('0x2f')](_0x1f143d[_0xb60f('0x37')],function(_0x1608aa){var _0x3b7624={};_0x3b7624[_0x1608aa]={'$like':'%'+_0x1fc11b[_0xb60f('0x33')]['filter']+'%'};return _0x3b7624;})});}_0x1f143d=_['merge']({},_0x1f143d,_0x1fc11b[_0xb60f('0x41')]);return db[_0xb60f('0x57')]['count']({'where':_0x1f143d['where']})[_0xb60f('0x2c')](function(_0x1975b2){_0x12c1e1['count']=_0x1975b2;if(_0x1fc11b[_0xb60f('0x33')]['includeAll']){_0x1f143d[_0xb60f('0x59')]=[{'all':!![]}];}return db[_0xb60f('0x57')][_0xb60f('0x43')](_0x1f143d);})[_0xb60f('0x2c')](function(_0x2c3ea4){_0x12c1e1[_0xb60f('0x44')]=_0x2c3ea4;return _0x12c1e1;});}})[_0xb60f('0x2c')](respondWithFilteredResult(_0x4cb049,_0x1f143d))['catch'](handleError(_0x4cb049,null));};exports[_0xb60f('0x5a')]=function(_0x3e8450,_0x58309c){return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x3e8450[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x58309c,null))[_0xb60f('0x2c')](function(_0x17748e){if(_0x17748e){return _0x17748e[_0xb60f('0x5a')](_0x3e8450[_0xb60f('0x33')][_0xb60f('0x5b')]);}})[_0xb60f('0x2c')](respondWithStatusCode(_0x58309c,null))[_0xb60f('0x1d')](handleError(_0x58309c,null));};exports[_0xb60f('0x5c')]=function(_0x2aa8b8,_0x38e8a2){if(_0x2aa8b8[_0xb60f('0x4b')]['id']){delete _0x2aa8b8[_0xb60f('0x4b')]['id'];}return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x2aa8b8[_0xb60f('0x51')]['id']}})['then'](handleEntityNotFound(_0x38e8a2,null))[_0xb60f('0x2c')](function(_0x405d7d){if(_0x405d7d){_0x2aa8b8[_0xb60f('0x4b')][_0xb60f('0x54')]=_0x405d7d['id'];return db[_0xb60f('0x5d')][_0xb60f('0x4a')](_0x2aa8b8[_0xb60f('0x4b')]);}})[_0xb60f('0x2c')](respondWithResult(_0x38e8a2,null))[_0xb60f('0x1d')](handleError(_0x38e8a2,null));};exports[_0xb60f('0x5e')]=function(_0x2883fb,_0xd013ea){var _0xecd425={'raw':![],'where':{}};var _0x4cfea8={};var _0x199cdc={'count':0x0,'rows':[]};return db[_0xb60f('0x30')][_0xb60f('0x56')]({'where':{'id':_0x2883fb[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0xd013ea,null))['then'](function(_0x4e9f05){if(_0x4e9f05){_0x4cfea8[_0xb60f('0x31')]=_['keys'](db[_0xb60f('0x5d')][_0xb60f('0x47')]);_0x4cfea8[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x2883fb['query']);_0x4cfea8[_0xb60f('0x35')]=_['intersection'](_0x4cfea8[_0xb60f('0x31')],_0x4cfea8[_0xb60f('0x33')]);_0xecd425[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x4cfea8[_0xb60f('0x31')],qs[_0xb60f('0x48')](_0x2883fb[_0xb60f('0x33')][_0xb60f('0x48')]));_0xecd425[_0xb60f('0x37')]=_0xecd425[_0xb60f('0x37')][_0xb60f('0x38')]?_0xecd425[_0xb60f('0x37')]:_0x4cfea8[_0xb60f('0x31')];if(!_0x2883fb[_0xb60f('0x33')][_0xb60f('0x39')]('nolimit')){_0xecd425['limit']=qs[_0xb60f('0x25')](_0x2883fb[_0xb60f('0x33')]['limit']);_0xecd425[_0xb60f('0x22')]=qs[_0xb60f('0x22')](_0x2883fb[_0xb60f('0x33')][_0xb60f('0x22')]);}_0xecd425[_0xb60f('0x3b')]=qs[_0xb60f('0x3c')](_0x2883fb[_0xb60f('0x33')][_0xb60f('0x3c')]);_0xecd425['where']=qs[_0xb60f('0x35')](_[_0xb60f('0x58')](_0x2883fb[_0xb60f('0x33')],_0x4cfea8[_0xb60f('0x35')]));_0xecd425[_0xb60f('0x3d')][_0xb60f('0x54')]=_0x4e9f05['id'];if(_0x2883fb['query'][_0xb60f('0x3e')]){_0xecd425['where']=_['merge'](_0xecd425[_0xb60f('0x3d')],{'$or':_[_0xb60f('0x2f')](_0xecd425['attributes'],function(_0x15711f){var _0x1e516d={};_0x1e516d[_0x15711f]={'$like':'%'+_0x2883fb[_0xb60f('0x33')][_0xb60f('0x3e')]+'%'};return _0x1e516d;})});}_0xecd425=_[_0xb60f('0x3f')]({},_0xecd425,_0x2883fb[_0xb60f('0x41')]);return db['CannedAnswer'][_0xb60f('0x24')]({'where':_0xecd425[_0xb60f('0x3d')]})[_0xb60f('0x2c')](function(_0x5a6bdb){_0x199cdc[_0xb60f('0x24')]=_0x5a6bdb;if(_0x2883fb['query'][_0xb60f('0x42')]){_0xecd425[_0xb60f('0x59')]=[{'all':!![]}];}return db[_0xb60f('0x5d')]['findAll'](_0xecd425);})['then'](function(_0x14a03e){_0x199cdc[_0xb60f('0x44')]=_0x14a03e;return _0x199cdc;});}})[_0xb60f('0x2c')](respondWithFilteredResult(_0xd013ea,_0xecd425))[_0xb60f('0x1d')](handleError(_0xd013ea,null));};exports[_0xb60f('0x5f')]=function(_0x56204d,_0x1114c0){return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x56204d[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x1114c0,null))[_0xb60f('0x2c')](function(_0x1b0f8a){if(_0x1b0f8a){return _0x1b0f8a[_0xb60f('0x5f')](_0x56204d[_0xb60f('0x33')]['ids']);}})['then'](respondWithStatusCode(_0x1114c0,null))[_0xb60f('0x1d')](handleError(_0x1114c0,null));};exports[_0xb60f('0x60')]=function(_0x36a69a,_0x3d451d){_0x36a69a[_0xb60f('0x4b')]['sitepic']=_0x36a69a['file']['filename'];return db[_0xb60f('0x30')]['find']({'where':{'id':_0x36a69a[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x3d451d,null))['then'](saveUpdates(_0x36a69a[_0xb60f('0x4b')],null))[_0xb60f('0x2c')](respondWithResult(_0x3d451d,null))['catch'](handleError(_0x3d451d,null));};exports[_0xb60f('0x61')]=function(_0x172e57,_0x363ede){_0x172e57[_0xb60f('0x4b')][_0xb60f('0x62')]=_0x172e57[_0xb60f('0x63')][_0xb60f('0x64')];return db['ChatWebsite'][_0xb60f('0x49')]({'where':{'id':_0x172e57[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x363ede,null))['then'](saveUpdates(_0x172e57['body'],null))[_0xb60f('0x2c')](respondWithResult(_0x363ede,null))['catch'](handleError(_0x363ede,null));};exports[_0xb60f('0x65')]=function(_0x206bc8,_0x37caea){_0x206bc8['body']['customerAvatar']=_0x206bc8[_0xb60f('0x63')][_0xb60f('0x64')];return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x206bc8['params']['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x37caea,null))[_0xb60f('0x2c')](saveUpdates(_0x206bc8[_0xb60f('0x4b')],null))[_0xb60f('0x2c')](respondWithResult(_0x37caea,null))[_0xb60f('0x1d')](handleError(_0x37caea,null));};exports[_0xb60f('0x66')]=function(_0x3b5e64,_0x3a1b17){_0x3b5e64[_0xb60f('0x4b')]['systemAvatar']=_0x3b5e64[_0xb60f('0x63')][_0xb60f('0x64')];return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x3b5e64[_0xb60f('0x51')]['id']}})['then'](handleEntityNotFound(_0x3a1b17,null))[_0xb60f('0x2c')](saveUpdates(_0x3b5e64['body'],null))[_0xb60f('0x2c')](respondWithResult(_0x3a1b17,null))[_0xb60f('0x1d')](handleError(_0x3a1b17,null));};exports['getLogo']=function(_0x350e4b,_0x452e2f){var _0x5f0b39=path[_0xb60f('0x67')](config[_0xb60f('0x68')],'server/files/images/logos/default_logo.svg');var _0x349f14={'where':{'id':_0x350e4b[_0xb60f('0x51')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x286bdf=![];return require(_0xb60f('0x69'))['getLicense']()['then'](function(_0x2658c3){if(_0x2658c3){_0x286bdf=_0x2658c3[_0xb60f('0x6a')];}})[_0xb60f('0x2c')](function(){return db[_0xb60f('0x30')]['find'](_0x349f14);})[_0xb60f('0x2c')](handleEntityNotFound(_0x452e2f,null))[_0xb60f('0x2c')](function(_0x3d45e5){if(_0x3d45e5){if(!_[_0xb60f('0x6b')](_0x3d45e5[_0xb60f('0x6c')])){if(fs['existsSync'](path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x6d'),_0x3d45e5[_0xb60f('0x6c')]))&&_0x286bdf){_0x5f0b39=path[_0xb60f('0x67')](config[_0xb60f('0x68')],'server/files/images/logos/',_0x3d45e5[_0xb60f('0x6c')]);}}return _0x452e2f[_0xb60f('0x6e')](_0x5f0b39);}})[_0xb60f('0x1d')](handleError(_0x452e2f,null));};exports[_0xb60f('0x6f')]=function(_0x509279,_0xedf89e){var _0x5093db=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x70'));var _0x468062={'where':{'id':_0x509279[_0xb60f('0x51')]['id']},'attributes':['id',_0xb60f('0x62')],'raw':!![]};return db['ChatWebsite'][_0xb60f('0x49')](_0x468062)[_0xb60f('0x2c')](handleEntityNotFound(_0xedf89e,null))[_0xb60f('0x2c')](function(_0x31882e){if(_0x31882e){if(!_[_0xb60f('0x6b')](_0x31882e[_0xb60f('0x62')])){if(fs['existsSync'](path['join'](config[_0xb60f('0x68')],'server/files/images/avatars/',_0x31882e[_0xb60f('0x62')]))){_0x5093db=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x71'),_0x31882e[_0xb60f('0x62')]);}}return _0xedf89e[_0xb60f('0x6e')](_0x5093db);}})[_0xb60f('0x1d')](handleError(_0xedf89e,null));};exports[_0xb60f('0x72')]=function(_0x1810e2,_0x11f076){var _0x42f9a3=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x73'));var _0x59566d={'where':{'id':_0x1810e2[_0xb60f('0x51')]['id']},'attributes':['id',_0xb60f('0x74'),_0xb60f('0x75')],'raw':!![]};return db['ChatWebsite'][_0xb60f('0x49')](_0x59566d)[_0xb60f('0x2c')](handleEntityNotFound(_0x11f076,null))['then'](function(_0x3d44ac){if(_0x3d44ac){if(!_['isNil'](_0x3d44ac[_0xb60f('0x74')])){if(fs[_0xb60f('0x76')](path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x71'),_0x3d44ac[_0xb60f('0x74')]))&&_0x3d44ac['showCustomerAvatar']){_0x42f9a3=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x71'),_0x3d44ac[_0xb60f('0x74')]);}}return _0x11f076[_0xb60f('0x6e')](_0x42f9a3);}})['catch'](handleError(_0x11f076,null));};exports[_0xb60f('0x77')]=function(_0x4ec654,_0x5a9409){var _0xc6bd7b=path[_0xb60f('0x67')](config['root'],_0xb60f('0x78'));var _0x567cc7={'where':{'id':_0x4ec654[_0xb60f('0x51')]['id']},'attributes':['id','systemAvatar'],'raw':!![]};return db[_0xb60f('0x30')][_0xb60f('0x49')](_0x567cc7)[_0xb60f('0x2c')](handleEntityNotFound(_0x5a9409,null))[_0xb60f('0x2c')](function(_0x1922d5){if(_0x1922d5){if(!_['isNil'](_0x1922d5[_0xb60f('0x79')])){if(fs['existsSync'](path['join'](config[_0xb60f('0x68')],_0xb60f('0x71'),_0x1922d5[_0xb60f('0x79')]))){_0xc6bd7b=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x71'),_0x1922d5['systemAvatar']);}}return _0x5a9409['download'](_0xc6bd7b);}})[_0xb60f('0x1d')](handleError(_0x5a9409,null));};exports[_0xb60f('0x7a')]=function(_0x3c7509,_0x2d0f87){var _0x9f3f81=require(_0xb60f('0x7b'));var _0x598ce1=new _0x9f3f81();var _0x206f28=_0x598ce1[_0xb60f('0x7c')](_0x3c7509[_0xb60f('0x7d')][_0xb60f('0x7e')])[_0xb60f('0x7f')]();var _0x5a5fd8={'body':_0x3c7509[_0xb60f('0x4b')],'channel':_0xb60f('0x80')};var _0x3627e9=[];var _0x48a394=[];var _0x813d05={};var _0x2bdbd9=![];return db[_0xb60f('0x81')]['describe']()[_0xb60f('0x2c')](function(_0x3ef438){if(!_0x3ef438){throw new db['Sequelize'][(_0xb60f('0x82'))](_0xb60f('0x83'));}_0x3627e9=_[_0xb60f('0x84')](_[_0xb60f('0x34')](_0x3ef438),[_0xb60f('0x85'),'updatedAt']);_0x48a394=_[_0xb60f('0x84')](_[_0xb60f('0x34')](_0x3ef438),['createdAt',_0xb60f('0x86'),_0xb60f('0x87'),'ListId']);if(_0x3c7509[_0xb60f('0x4b')]['id']){delete _0x3c7509[_0xb60f('0x4b')]['id'];}if(_[_0xb60f('0x6b')](_0x3c7509['body'][_0xb60f('0x88')])){throw new db['Sequelize'][(_0xb60f('0x82'))](_0xb60f('0x89'));}if(_[_0xb60f('0x6b')](_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x4b')])||_0x3c7509['body'][_0xb60f('0x4b')]===''){throw new db[(_0xb60f('0x8a'))][(_0xb60f('0x82'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xb60f('0x6b')](_0x3c7509[_0xb60f('0x4b')]['mapKey'])){throw new db[(_0xb60f('0x8a'))][(_0xb60f('0x82'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x48a394);}if(!_[_0xb60f('0x8b')](_0x48a394,_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x8c')])){throw new db[(_0xb60f('0x8a'))]['ValidationError'](_0xb60f('0x8d')+_0x48a394);}_0x813d05[_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x8c')]]=_0x3c7509['body'][_0xb60f('0x88')];})[_0xb60f('0x2c')](function(){return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x3c7509['params']['id']},'include':[{'model':db[_0xb60f('0x8e')],'as':_0xb60f('0x8f'),'include':[{'model':db[_0xb60f('0x81')],'as':'Contacts','where':_0x813d05,'limit':0x1,'order':[[_0xb60f('0x86'),_0xb60f('0x90')]]}]},{'model':db[_0xb60f('0x91')],'as':_0xb60f('0x92')}]});})[_0xb60f('0x2c')](handleEntityNotFound(_0x2d0f87,null))[_0xb60f('0x2c')](function(_0x50dfe6){if(_0x50dfe6&&_0x50dfe6[_0xb60f('0x8f')]){_0x5a5fd8['account']=_0x50dfe6;_0x5a5fd8[_0xb60f('0x93')]=_0x50dfe6['Applications'];_0x5a5fd8[_0xb60f('0x94')]=_0x50dfe6[_0xb60f('0x8f')];_0x5a5fd8[_0xb60f('0x93')]=_['orderBy'](_0x5a5fd8[_0xb60f('0x93')],[_0xb60f('0x95')],[_0xb60f('0x96')]);if(_0x5a5fd8[_0xb60f('0x97')][_0xb60f('0x92')]){delete _0x5a5fd8[_0xb60f('0x97')]['Applications'];}if(_0x5a5fd8[_0xb60f('0x97')]['List']&&_0x5a5fd8[_0xb60f('0x97')][_0xb60f('0x8f')][_0xb60f('0x98')]['length']){return _0x5a5fd8[_0xb60f('0x97')]['List']['Contacts'][0x0];}var _0x56757e=_['defaults'](_0x3c7509[_0xb60f('0x4b')],{'firstName':_0x3c7509['body']['from'],'ListId':_0x50dfe6[_0xb60f('0x99')]});_0x56757e[_0x3c7509['body'][_0xb60f('0x8c')]]=_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x88')];return db[_0xb60f('0x81')][_0xb60f('0x4a')](_0x56757e,{'fields':_0x3627e9,'raw':!![]});}})[_0xb60f('0x2c')](handleEntityNotFound(_0x2d0f87,null))[_0xb60f('0x2c')](function(_0x28bcaa){_0x5a5fd8[_0xb60f('0x9a')]=_0x28bcaa;var _0x237bb9=_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x9b')];if(_0x3c7509[_0xb60f('0x7d')]['cf-connecting-ip']){_0x237bb9=_0x3c7509[_0xb60f('0x7d')][_0xb60f('0x9c')];}else if(_0x3c7509[_0xb60f('0x7d')][_0xb60f('0x9d')]){_0x237bb9=_[_0xb60f('0x9e')](_0x3c7509[_0xb60f('0x7d')][_0xb60f('0x9d')][_0xb60f('0x9f')](','));}if(_0x28bcaa){var _0x3f3bc1={'ContactId':_0x28bcaa['id'],'ChatWebsiteId':_0x3c7509['params']['id'],'from':(_0x28bcaa[_0xb60f('0xa0')]||'')+'\x20'+(_0x28bcaa[_0xb60f('0xa1')]||''),'customerIp':_0x237bb9,'customerPort':_0x3c7509[_0xb60f('0x7d')][_0xb60f('0xa2')]?_0x3c7509[_0xb60f('0x7d')]['x-real-port']:null,'referer':_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xa3')],'browserName':_0x206f28[_0xb60f('0xa4')]['name']&&_0x206f28[_0xb60f('0xa4')][_0xb60f('0xa5')]?util[_0xb60f('0xa6')](_0xb60f('0xa7'),_0x206f28[_0xb60f('0xa4')][_0xb60f('0x32')],_0x206f28[_0xb60f('0xa4')][_0xb60f('0xa5')]):_0xb60f('0xa8'),'browserVersion':_0x206f28['browser'][_0xb60f('0xa5')]||_0xb60f('0xa8'),'osName':util[_0xb60f('0xa6')](_0xb60f('0xa7'),_0x206f28['os'][_0xb60f('0x32')],_0x206f28['os'][_0xb60f('0xa5')]),'osVersion':_0x206f28['os'][_0xb60f('0xa5')],'deviceModel':_0x206f28[_0xb60f('0xa9')][_0xb60f('0x31')]&&_0x206f28[_0xb60f('0xa9')][_0xb60f('0xaa')]?util[_0xb60f('0xa6')](_0xb60f('0xab'),_0x206f28[_0xb60f('0xa9')][_0xb60f('0x31')],_0x206f28[_0xb60f('0xa9')][_0xb60f('0xaa')],_0x206f28[_0xb60f('0xa9')][_0xb60f('0xac')]):null,'deviceVendor':_0x206f28[_0xb60f('0xa9')]['vendor'],'deviceType':_0x206f28[_0xb60f('0xa9')][_0xb60f('0xac')],'formData':JSON['stringify'](_0x3c7509[_0xb60f('0x4b')])};var _0xe8a8f8={'ChatWebsiteId':_0x3c7509[_0xb60f('0x51')]['id'],'closed':![]};if(_0x3c7509[_0xb60f('0x4b')]['threadId']){_0xe8a8f8[_0xb60f('0xad')]=_0x3c7509[_0xb60f('0x4b')]['threadId'];return db['ChatInteraction'][_0xb60f('0x49')]({'where':_0xe8a8f8})[_0xb60f('0x2c')](function(_0x353086){if(_0x353086){return[_0x353086,![]];}_0x3f3bc1[_0xb60f('0xad')]=_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xad')];_0x3f3bc1[_0xb60f('0xae')]=_0x3c7509['body'][_0xb60f('0xae')];return db['ChatInteraction']['create'](_0x3f3bc1)[_0xb60f('0x2c')](function(_0x5da94c){return[_0x5da94c,!![]];});});}_0xe8a8f8[_0xb60f('0xaf')]=_0x28bcaa['id'];if(_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xb0')]&&_0x3c7509['body'][_0xb60f('0xb0')]['id']){_0xe8a8f8['id']=_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xb0')]['id'];return db[_0xb60f('0xb1')][_0xb60f('0x49')]({'where':_0xe8a8f8})['then'](function(_0x715124){if(_0x715124){return[_0x715124,![]];}return db[_0xb60f('0xb1')][_0xb60f('0x4a')](_0x3f3bc1)[_0xb60f('0x2c')](function(_0x6cd5d3){return[_0x6cd5d3,!![]];});});}return db[_0xb60f('0xb1')]['create'](_0x3f3bc1)[_0xb60f('0x2c')](function(_0x4b8b65){return[_0x4b8b65,!![]];});}})[_0xb60f('0xb2')](function(_0x15db0d,_0x1b7c1f){if(_0x15db0d){_0x2bdbd9=_0x1b7c1f;if(!_0x1b7c1f){var _0x4e3e73={'from':(_0x5a5fd8[_0xb60f('0x9a')][_0xb60f('0xa0')]||'')+'\x20'+(_0x5a5fd8[_0xb60f('0x9a')]['lastName']||'')};if(_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xad')]&&_0x3c7509[_0xb60f('0x4b')]['messageId']&&_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xad')]!=_0x3c7509[_0xb60f('0x4b')][_0xb60f('0xb3')]){_0x4e3e73[_0xb60f('0xad')]=_0x3c7509['body'][_0xb60f('0xb3')];}return _0x15db0d[_0xb60f('0x28')](_0x4e3e73);}else{return _0x15db0d;}}})['then'](function(_0x4620b7){_0x5a5fd8[_0xb60f('0xb0')]=_0x4620b7[_0xb60f('0x29')]({'plain':!![]});_0x5a5fd8[_0xb60f('0xb0')][_0xb60f('0xb4')]=_0x2bdbd9;if(_0x5a5fd8[_0xb60f('0xb0')]['created']){if(_0x5a5fd8[_0xb60f('0x97')][_0xb60f('0xb5')]){_0x5a5fd8[_0xb60f('0x93')][_0xb60f('0xb6')]({'id':0x0,'priority':_0x5a5fd8[_0xb60f('0x93')]['length']+0x1,'app':_0xb60f('0xb7'),'appdata':'unmanaged','interval':_0xb60f('0xb8')});}}return db[_0xb60f('0xb9')]['create']({'body':_0x3c7509[_0xb60f('0x4b')][_0xb60f('0x4b')],'ChatWebsiteId':_0x3c7509[_0xb60f('0x51')]['id'],'ChatInteractionId':_0x4620b7['id'],'direction':'in','ContactId':_0x5a5fd8[_0xb60f('0x9a')]['id'],'AttachmentId':_0x3c7509['body'][_0xb60f('0xba')]});})['then'](function(_0x5128ce){_0x5a5fd8[_0xb60f('0x1b')]=_0x5128ce;if(_0x5a5fd8[_0xb60f('0xb0')][_0xb60f('0xbb')]){return db['User'][_0xb60f('0x49')]({'attributes':['id',_0xb60f('0x32')],'where':{'id':_0x5a5fd8[_0xb60f('0xb0')]['UserId']}})['then'](function(_0x305f24){if(_0x305f24){_0x5a5fd8[_0xb60f('0x93')][_0xb60f('0xbc')]({'id':0x0,'priority':0x0,'app':_0xb60f('0xbd'),'appdata':_0x305f24[_0xb60f('0x32')]+','+(_0x5a5fd8[_0xb60f('0x97')][_0xb60f('0xbe')]||0xa),'interval':_0xb60f('0xb8')});_0x5a5fd8['forcedOwnership']=!![];}return respondWithRpcPromise(_0xb60f('0xbf'),_0xb60f('0xc0'),_0x5a5fd8);});}return respondWithRpcPromise(_0xb60f('0xbf'),_0xb60f('0xc0'),_0x5a5fd8);})[_0xb60f('0x2c')](function(_0xb276cb){respondWithRpcPromise(_0xb60f('0xc1'),_0xb60f('0xc1'),{'event':_0xb60f('0x7a'),'message':_0xb276cb},client9002);return _0xb276cb;})[_0xb60f('0x2c')](respondWithResult(_0x2d0f87,null))[_0xb60f('0x1d')](handleError(_0x2d0f87,null));};exports['offline']=function(_0x1c991c,_0x133f34){var _0x333729,_0x2f9dd8,_0x308901;var _0x3c7eb4=[];var _0x4ffa67={};var _0x2370b8=_0x1c991c[_0xb60f('0xc2')]||[];var _0x57f2c3=[];var _0x1db0fa;return db['CmContact'][_0xb60f('0x52')]()[_0xb60f('0x2c')](function(_0x597094){if(!_0x597094){throw new db[(_0xb60f('0x8a'))][(_0xb60f('0x82'))](_0xb60f('0x83'));}_0x3c7eb4=_[_0xb60f('0x84')](_[_0xb60f('0x34')](_0x597094),[_0xb60f('0x85'),_0xb60f('0x86'),_0xb60f('0x87'),_0xb60f('0x99')]);if(_0x1c991c[_0xb60f('0x4b')]['id']){delete _0x1c991c['body']['id'];}if(_[_0xb60f('0x6b')](_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x88')])){throw _0x133f34['status'](0x1f4)['send'](new db['Sequelize'][(_0xb60f('0x82'))](_0xb60f('0x89')));}if(_[_0xb60f('0x6b')](_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x4b')])||_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x4b')]===''){throw _0x133f34['status'](0x1f4)[_0xb60f('0x2d')](new db['Sequelize'][(_0xb60f('0x82'))](_0xb60f('0xc3')));}if(_[_0xb60f('0x6b')](_0x1c991c[_0xb60f('0x4b')][_0xb60f('0xc4')])){throw _0x133f34[_0xb60f('0x20')](0x1f4)['send'](new db[(_0xb60f('0x8a'))][(_0xb60f('0x82'))]('mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3c7eb4));}if(!_[_0xb60f('0x8b')](_0x3c7eb4,_0x1c991c[_0xb60f('0x4b')][_0xb60f('0xc4')])){throw _0x133f34[_0xb60f('0x20')](0x1f4)[_0xb60f('0x2d')](new db['Sequelize'][(_0xb60f('0x82'))](_0xb60f('0xc5')+_0x3c7eb4));}_0x4ffa67[_0x1c991c[_0xb60f('0x4b')][_0xb60f('0xc4')]]=_0x1c991c['body']['from'];})[_0xb60f('0x2c')](function(){return db[_0xb60f('0x30')]['find']({'where':{'id':_0x1c991c['params']['id']},'include':[{'model':db[_0xb60f('0x8e')],'as':_0xb60f('0x8f')},{'model':db[_0xb60f('0xc6')],'as':_0xb60f('0xc6')}]});})['then'](handleEntityNotFound(_0x133f34,null))['then'](function(_0x4a1578){if(_0x4a1578&&_0x4a1578[_0xb60f('0x8f')]){_0x2f9dd8=_0x4a1578;var _0x46a26d=_[_0xb60f('0xc7')](_0x1c991c[_0xb60f('0x4b')],{'firstName':_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x88')],'phone':_0x1c991c['body'][_0xb60f('0x88')],'ListId':_0x4a1578['ListId']});_0x46a26d[_0x1c991c[_0xb60f('0x4b')][_0xb60f('0xc4')]]=_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x88')];return db['CmContact'][_0xb60f('0xc8')]({'where':_0x4ffa67,'defaults':_0x46a26d});}})[_0xb60f('0xb2')](function(_0x488505){if(_0x488505){_0x308901=_0x488505;var _0x4ac061=fs[_0xb60f('0xc9')](path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0xca')),'utf8');var _0x4d89f0=ejs[_0xb60f('0xcb')](_0x4ac061,{'body':_[_0xb60f('0xcc')](_0x1c991c[_0xb60f('0x4b')][_0xb60f('0x4b')]),'bodyTitle':_0x2f9dd8[_0xb60f('0xcd')]});return db[_0xb60f('0xce')][_0xb60f('0x4a')]({'body':_0x4d89f0,'plainBody':htmlToText[_0xb60f('0xcf')](_0x4d89f0),'ContactId':_0x488505['id'],'ChatWebsiteId':_0x2f9dd8['id']});}})[_0xb60f('0x2c')](function(_0x3764d5){_0x1db0fa=_0x3764d5;if(_0x2370b8['length']){var _0x2a77a1=_0x2370b8['map'](function(_0x58ecb7){return{'name':_0x58ecb7[_0xb60f('0xd0')],'basename':_0x58ecb7['filename'],'type':_0x58ecb7['mimetype'],'ChatOfflineMessageId':_0x3764d5['id']};});_0x57f2c3=_0x2a77a1['map'](_0x5536fc=>{var _0x4db8fc={'filename':_0x5536fc['name'],'path':path[_0xb60f('0x67')](config['root'],_0xb60f('0xd1'),_0xb60f('0xc2'),_0xb60f('0xd2'),_0xb60f('0xd3'),_0x5536fc['basename'])};return _0x4db8fc;});if(!_0x2f9dd8[_0xb60f('0xd4')]){return db[_0xb60f('0xd5')][_0xb60f('0xd6')](function(_0x2a9c3f){return db['Attachment'][_0xb60f('0xd7')](_0x2a77a1,{'transaction':_0x2a9c3f});});}}})[_0xb60f('0x2c')](function(){if(_0x1db0fa){_0x333729=_0x1db0fa;return db[_0xb60f('0xc6')][_0xb60f('0x56')]({'where':{'service':!![]},'include':[{'model':db[_0xb60f('0xd8')],'as':_0xb60f('0xd9'),'raw':!![],'include':[{'model':db[_0xb60f('0xda')],'as':'CloudProvider','raw':!![]}]}]});}})[_0xb60f('0x2c')](function(_0x4154d6){if(_0x4154d6&&_0x4154d6[_0xb60f('0xd9')]&&_0x2f9dd8['forwardOffline']&&_0x2f9dd8[_0xb60f('0xdb')]){var _0x32697d=_0x4154d6[_0xb60f('0xdc')]();return respondWithRpcPromise(_0xb60f('0xdd'),_0xb60f('0xde'),{'account':_0x32697d,'message':{'from':util[_0xb60f('0xa6')](_0xb60f('0xdf'),_0x4154d6[_0xb60f('0x32')],_0x4154d6[_0xb60f('0xe0')]||_0x4154d6['Smtp'][_0xb60f('0x4c')]),'to':_0x2f9dd8[_0xb60f('0xdb')],'subject':_0x2f9dd8[_0xb60f('0xe1')],'html':_0x333729[_0xb60f('0x4b')],'attachments':_0x57f2c3}},client9003)[_0xb60f('0x2c')](function(){return _0x333729;})[_0xb60f('0x1d')](function(_0x3ddd18){logger[_0xb60f('0x19')](_0x3ddd18);});}})[_0xb60f('0x2c')](function(){if(_0x2f9dd8&&_0x2f9dd8[_0xb60f('0xd4')]&&_0x2f9dd8[_0xb60f('0xe2')]){var _0x2b0ff7=[];if(_0x2370b8[_0xb60f('0x38')]){_0x2b0ff7=_0x2370b8[_0xb60f('0x2f')](function(_0x220732){return{'name':_0x220732[_0xb60f('0xd0')],'basename':_0x220732[_0xb60f('0x64')],'type':_0x220732[_0xb60f('0xe3')],'ChatOfflineMessageId':_0x1db0fa['id']};});}var _0x14436f;if(!_[_0xb60f('0x6b')](_0x2f9dd8['subjectOffline'])){var _0x481e1b=_[_0xb60f('0x2f')](_0x1c991c[_0xb60f('0x4b')],function(_0x24ef11){return _0x24ef11;});var _0x582b2f=_[_0xb60f('0xe4')](_0x481e1b)[0x0];var _0x472843=_['mapValues'](_0x582b2f,function(_0xa2592e){return _0xa2592e;});_0x14436f=_0x472843[0x1][_0x2f9dd8[_0xb60f('0xe5')]];}var _0x51d572={'from':_0x308901[_0xb60f('0xe0')],'firstName':_0x308901[_0xb60f('0xa0')],'lastName':_0x308901[_0xb60f('0xa1')],'mapKey':_0xb60f('0xe0'),'message':{'from':_0x308901[_0xb60f('0xe0')],'to':_0x2f9dd8[_0xb60f('0xc6')][_0xb60f('0xe0')],'cc':'','subject':_[_0xb60f('0x6b')](_0x14436f)?_0x2f9dd8['offlineMessageSubject']:_0x14436f,'messageId':'','sentAt':new Date(),'attach':_0x2b0ff7[_0xb60f('0x38')],'attachments':_0x2b0ff7,'originChannel':_0xb60f('0xe6'),'ChatWebsiteId':_0x2f9dd8['id'],'ChatOfflineMessageId':_0x333729['id'],'originTo':_0x2f9dd8[_0xb60f('0xc6')][_0xb60f('0xe0')]},'body':_0x333729[_0xb60f('0x4b')]};var _0x5790fa={'account':{'id':_0x2f9dd8[_0xb60f('0xe2')]},'body':_0x51d572,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0xb60f('0xe7'),'notifyMail',_0x5790fa,client9001)[_0xb60f('0x2c')](function(){return _0x333729;})['catch'](function(_0x87b708){logger[_0xb60f('0x19')](_0x87b708);});}return;})[_0xb60f('0x2c')](function(){if(_0x333729){return _0x333729;}})[_0xb60f('0x2c')](respondWithResult(_0x133f34,null))[_0xb60f('0x1d')](function(_0x68ea7e){logger[_0xb60f('0x19')](_0xb60f('0x1d'),_0x68ea7e);for(var _0x410b0a of _0x2370b8){var _0x3908e6=path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0xd1'),_0xb60f('0xc2'),_0xb60f('0xd2'),_0xb60f('0xd3'),_0x410b0a[_0xb60f('0x64')]);fs_extra[_0xb60f('0xe8')](_0x3908e6)[_0xb60f('0x1d')](function(_0x2090cc){logger[_0xb60f('0x19')](_0xb60f('0xe9'),_0x3908e6,_0x2090cc);});}});};exports[_0xb60f('0xea')]=function(_0x1af5a2,_0x15bef4){return db[_0xb60f('0xb1')][_0xb60f('0x49')]({'where':{'id':_0x1af5a2[_0xb60f('0x51')]['id']}})['then'](handleEntityNotFound(_0x15bef4,null))[_0xb60f('0x2c')](function(_0x1ede2b){if(_0x1ede2b){return _0x1ede2b[_0xb60f('0xea')](_0x1af5a2[_0xb60f('0x4b')][_0xb60f('0x5b')],_['omit'](_0x1af5a2[_0xb60f('0x4b')],[_0xb60f('0x5b'),'id'])||{});}})['then'](respondWithResult(_0x15bef4,null))[_0xb60f('0x1d')](handleError(_0x15bef4,null));};exports[_0xb60f('0xeb')]=function(_0x15abd1,_0x2adedc){var _0x29985b={'raw':![],'where':{}};var _0x3fdc3d={};var _0x6dabeb={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x15abd1['params']['id']}})['then'](handleEntityNotFound(_0x2adedc,null))[_0xb60f('0x2c')](function(_0x3d96b1){if(_0x3d96b1){_0x3fdc3d['model']=_[_0xb60f('0x34')](db[_0xb60f('0xb1')][_0xb60f('0x47')]);_0x3fdc3d[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x15abd1[_0xb60f('0x33')]);_0x3fdc3d[_0xb60f('0x35')]=_['intersection'](_0x3fdc3d[_0xb60f('0x31')],_0x3fdc3d[_0xb60f('0x33')]);_0x29985b[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x3fdc3d[_0xb60f('0x31')],qs[_0xb60f('0x48')](_0x15abd1[_0xb60f('0x33')][_0xb60f('0x48')]));_0x29985b[_0xb60f('0x37')]=_0x29985b['attributes']['length']?_0x29985b[_0xb60f('0x37')]:_0x3fdc3d[_0xb60f('0x31')];if(!_0x15abd1[_0xb60f('0x33')][_0xb60f('0x39')](_0xb60f('0x3a'))){_0x29985b[_0xb60f('0x25')]=qs['limit'](_0x15abd1[_0xb60f('0x33')][_0xb60f('0x25')]);_0x29985b[_0xb60f('0x22')]=qs[_0xb60f('0x22')](_0x15abd1[_0xb60f('0x33')][_0xb60f('0x22')]);}_0x29985b[_0xb60f('0x3b')]=qs['sort'](_0x15abd1[_0xb60f('0x33')]['sort']);_0x29985b[_0xb60f('0x3d')]=qs[_0xb60f('0x35')](_['pick'](_0x15abd1[_0xb60f('0x33')],_0x3fdc3d['filters']));_0x29985b[_0xb60f('0x3d')]['ChatWebsiteId']=_0x3d96b1['id'];if(_0x15abd1[_0xb60f('0x33')]['filter']){_0x29985b[_0xb60f('0x3d')]=_[_0xb60f('0x3f')](_0x29985b['where'],{'$or':_[_0xb60f('0x2f')](_0x29985b[_0xb60f('0x37')],function(_0x2b82e7){var _0x4b2814={};_0x4b2814[_0x2b82e7]={'$like':'%'+_0x15abd1[_0xb60f('0x33')]['filter']+'%'};return _0x4b2814;})});}_0x29985b=_[_0xb60f('0x3f')]({},_0x29985b,_0x15abd1['options']);return db[_0xb60f('0xb1')][_0xb60f('0x24')]({'where':_0x29985b[_0xb60f('0x3d')]})['then'](function(_0xd0d26b){_0x6dabeb['count']=_0xd0d26b;if(_0x15abd1['query']['includeAll']){_0x29985b['include']=[{'model':db[_0xb60f('0x81')],'as':_0xb60f('0xec'),'required':![]},{'model':db[_0xb60f('0xed')],'as':_0xb60f('0xee'),'attributes':[_0xb60f('0x32'),'fullname',_0xb60f('0xef')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0xb60f('0x32'),'color'],'where':_0x15abd1[_0xb60f('0x33')][_0xb60f('0xf0')]?{'id':_0x15abd1[_0xb60f('0x33')]['tag']}:undefined,'required':_0x15abd1[_0xb60f('0x33')][_0xb60f('0xf0')]?!![]:![]}];}return db[_0xb60f('0xb1')][_0xb60f('0x43')](_0x29985b);})[_0xb60f('0x2c')](function(_0x5e753d){_0x6dabeb[_0xb60f('0x44')]=_0x5e753d;return _0x6dabeb;});}})[_0xb60f('0x2c')](respondWithFilteredResult(_0x2adedc,_0x29985b))[_0xb60f('0x1d')](handleError(_0x2adedc,null));};function iftimePromise(_0x29d222,_0x16adaf){return respondWithRpcPromise(_0xb60f('0xf1'),_0xb60f('0xf2'),{'command':_0x16adaf[_0xb60f('0xf3')]?util[_0xb60f('0xa6')](_0xb60f('0xf4'),_0x29d222[_0xb60f('0xf5')],_0x16adaf[_0xb60f('0xf3')]):util['format'](_0xb60f('0xf6'),_0x29d222[_0xb60f('0xf5')])},client9002)[_0xb60f('0x2c')](function(_0xa08a4b){var _0x52a991=_0xa08a4b&&_0xa08a4b[_0xb60f('0xf7')](_0xb60f('0xf8'))>=0x0?!![]:![];logger[_0xb60f('0x14')](_0xb60f('0xf9'),_0x16adaf['id'],_0x29d222['id'],_0x29d222[_0xb60f('0xf5')],_0x52a991?_0xb60f('0xfa'):_0xb60f('0xfb'),_0x16adaf[_0xb60f('0xf3')]?_0x16adaf[_0xb60f('0xf3')]:_0xb60f('0xfc'));return _0x52a991;})[_0xb60f('0x1d')](function(_0x1d7519){logger[_0xb60f('0x19')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x16adaf['id'],_0x29d222['id'],_0x29d222['interval'],util[_0xb60f('0xfd')](_0x1d7519,{'showHidden':![],'depth':null}),_0x16adaf['timezone']?_0x16adaf['timezone']:'No\x20timezone');return![];});}exports[_0xb60f('0xf2')]=function(_0x1a9d8d,_0x2480b0){var _0x5bd5c7=0x0;var _0x59a610=0x0;var _0xfd77a2=![];var _0x16882d;var _0x53a22e;return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x1a9d8d[_0xb60f('0x51')]['id']},'include':[{'model':db['Interval'],'as':_0xb60f('0xfe'),'include':[{'model':db[_0xb60f('0xfe')],'as':_0xb60f('0xff'),'attributes':['id','interval'],'raw':!![]}]}]})[_0xb60f('0x2c')](handleEntityNotFound(_0x2480b0,null))[_0xb60f('0x2c')](function(_0x480b8f){if(_0x480b8f){_0x16882d=_0x480b8f;return _0x480b8f[_0xb60f('0x100')]({'raw':!![]});}})[_0xb60f('0x2c')](function(_0x65f4aa){if(_0x16882d){if(_0x65f4aa){_0x53a22e=_0x65f4aa;}}return require('../../config/license/util')[_0xb60f('0x101')]();})['then'](function(_0x405691){if(_0x405691){_0x59a610=_0x405691[_0xb60f('0x102')];_0xfd77a2=_0x405691[_0xb60f('0x6a')];}})[_0xb60f('0x2c')](function(){return db[_0xb60f('0xb1')][_0xb60f('0x24')]({'where':{'closed':![]}});})[_0xb60f('0x2c')](function(_0x2074b4){_0x5bd5c7=_0x2074b4;if(_0x59a610&&_0x2074b4>_0x59a610){return db[_0xb60f('0x103')][_0xb60f('0x56')]({'where':{'id':0x1}})[_0xb60f('0x2c')](function(_0x41f8c2){if(_0x41f8c2){_0x41f8c2[_0xb60f('0x104')](_0xb60f('0x105'));}});}})[_0xb60f('0x2c')](function(){if(_0x16882d[_0xb60f('0xfe')]&&_0x16882d[_0xb60f('0xfe')]['Intervals']){var _0x38fc74=[];for(var _0x58dc4b=0x0;_0x58dc4b<_0x16882d[_0xb60f('0xfe')]['Intervals'][_0xb60f('0x38')];_0x58dc4b++){var _0x957a5a=_0x16882d[_0xb60f('0xfe')][_0xb60f('0xff')][_0x58dc4b][_0xb60f('0x29')]({'plain':!![]});_0x38fc74['push'](iftimePromise(_0x957a5a,_0x16882d));}return BPromise[_0xb60f('0x106')](_0x38fc74)[_0xb60f('0x2c')](function(_0x349441){return _[_0xb60f('0x107')](_0x349441);});}else{return!![];}})[_0xb60f('0x2c')](function(_0x1185e8){var _0xb8511f=fs[_0xb60f('0xc9')](path[_0xb60f('0x67')](config[_0xb60f('0x68')],_0xb60f('0x108')),_0xb60f('0x109'));var _0x5cd18a={'remote':_0x16882d['remote'],'query':querystring['stringify'](_[_0xb60f('0x3f')](_0x16882d[_0xb60f('0x29')]({'plain':!![]}),{'customerIp':_0x1a9d8d[_0xb60f('0x7d')][_0xb60f('0x9d')]||_0x1a9d8d[_0xb60f('0x7d')][_0xb60f('0x10a')]||_0x1a9d8d[_0xb60f('0x10b')]['remoteAddress']||_0x1a9d8d['ip'],'referer':_0x1a9d8d[_0xb60f('0x7d')]['referer'],'openedInteractions':_0x5bd5c7,'maxInteractions':_0x59a610,'virtual':_0xfd77a2[_0xb60f('0x102')],'online':_0x1185e8,'custom':_0xfd77a2}))[_0xb60f('0x10c')](/'/g,'\x5c\x27')};_0x2480b0[_0xb60f('0x2d')](ejs[_0xb60f('0xcb')](Mustache[_0xb60f('0xcb')](_0xb8511f,_0x5cd18a),{'proactiveActions':_0x53a22e,'alignment':_0x16882d[_0xb60f('0x10d')],'verticalAlignment':_0x16882d[_0xb60f('0x10e')],'div_color':_0x16882d[_0xb60f('0x10f')],'labelText':_0x16882d[_0xb60f('0x110')],'text_color':_0x16882d['textColor'],'text_button_color':_0x16882d[_0xb60f('0x111')],'button_color':_0x16882d[_0xb60f('0x112')],'background_color':_0x16882d[_0xb60f('0x113')],'hideWhenOffline':_0x16882d[_0xb60f('0x114')],'interval':_0x16882d[_0xb60f('0x115')]}));})[_0xb60f('0x1d')](handleError(_0x2480b0,null));};exports['addApplications']=function(_0x3033,_0x5e311b){var _0x53acb2=_0x3033['params']['id'];var _0x38c57f=_0x3033[_0xb60f('0x4b')];var _0x16099d=0xc8;var _0x411f82=null;return db[_0xb60f('0xd5')][_0xb60f('0xd6')]({'isolationLevel':db['sequelize']['Transaction']['ISOLATION_LEVELS'][_0xb60f('0x116')]},function(_0x112295){return db[_0xb60f('0x30')]['findOne']({'where':{'id':_0x53acb2},'transaction':_0x112295})[_0xb60f('0x2c')](function(_0x4a7b0d){if(_0x4a7b0d){return db[_0xb60f('0x91')]['destroy']({'where':{'ChatWebsiteId':_0x53acb2},'transaction':_0x112295})['then'](function(){var _0x4437af=_['map'](_0x38c57f,function(_0x4a9d65){_0x4a9d65[_0xb60f('0x54')]=_0x53acb2;return _0x4a9d65;});return db['ChatApplication'][_0xb60f('0xd7')](_0x4437af,{'transaction':_0x112295});});}else{_0x16099d=0x194;_0x411f82=[];}});})['then'](function(){if(_0x16099d!==0x194){return db[_0xb60f('0x91')][_0xb60f('0x117')]({'where':{'ChatWebsiteId':_0x53acb2},'order':'priority'})[_0xb60f('0x2c')](function(_0x2c71e9){_0x411f82=_0x2c71e9;});}})[_0xb60f('0x1d')](function(_0x998f2){_0x16099d=0x1f4;logger[_0xb60f('0x19')](_0x998f2[_0xb60f('0x118')]);if(_0x998f2[_0xb60f('0x32')]){delete _0x998f2[_0xb60f('0x32')];}_0x411f82=_0x998f2;})[_0xb60f('0x119')](function(){if(_0x411f82===null){_0x5e311b['sendStatus'](_0x16099d);}else{if(_0x16099d===0x1f4){_0x5e311b[_0xb60f('0x20')](_0x16099d)[_0xb60f('0x2d')](_0x411f82);}else{_0x5e311b[_0xb60f('0x20')](_0x16099d)[_0xb60f('0x21')](_0x411f82);}}});};exports[_0xb60f('0x11a')]=function(_0x5f2c18,_0x285d19){var _0x1b36e6={};var _0x1a7516={};var _0x535c42;var _0x4aea82;return db[_0xb60f('0x30')][_0xb60f('0x56')]({'where':{'id':_0x5f2c18[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x285d19,null))[_0xb60f('0x2c')](function(_0x3174ee){if(_0x3174ee){_0x535c42=_0x3174ee;_0x1a7516[_0xb60f('0x31')]=_[_0xb60f('0x34')](db[_0xb60f('0x91')][_0xb60f('0x47')]);_0x1a7516[_0xb60f('0x33')]=_['keys'](_0x5f2c18[_0xb60f('0x33')]);_0x1a7516['filters']=_[_0xb60f('0x36')](_0x1a7516[_0xb60f('0x31')],_0x1a7516[_0xb60f('0x33')]);_0x1b36e6[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x1a7516[_0xb60f('0x31')],qs['fields'](_0x5f2c18[_0xb60f('0x33')][_0xb60f('0x48')]));_0x1b36e6[_0xb60f('0x37')]=_0x1b36e6[_0xb60f('0x37')]['length']?_0x1b36e6[_0xb60f('0x37')]:_0x1a7516[_0xb60f('0x31')];_0x1b36e6[_0xb60f('0x3b')]=qs['sort'](_0x5f2c18[_0xb60f('0x33')][_0xb60f('0x3c')]);_0x1b36e6[_0xb60f('0x3d')]=qs['filters'](_['pick'](_0x5f2c18[_0xb60f('0x33')],_0x1a7516[_0xb60f('0x35')]));if(_0x5f2c18['query'][_0xb60f('0x3e')]){_0x1b36e6[_0xb60f('0x3d')]=_['merge'](_0x1b36e6[_0xb60f('0x3d')],{'$or':_[_0xb60f('0x2f')](_0x1b36e6[_0xb60f('0x37')],function(_0x3e3e80){var _0x16cc8f={};_0x16cc8f[_0x3e3e80]={'$like':'%'+_0x5f2c18[_0xb60f('0x33')]['filter']+'%'};return _0x16cc8f;})});}_0x1b36e6=_[_0xb60f('0x3f')]({},_0x1b36e6,_0x5f2c18[_0xb60f('0x41')]);return _0x535c42[_0xb60f('0x11a')](_0x1b36e6);}})[_0xb60f('0x2c')](function(_0xc65877){if(_0xc65877){_0x4aea82=_0xc65877[_0xb60f('0x38')];if(!_0x5f2c18['query']['hasOwnProperty'](_0xb60f('0x3a'))){_0x1b36e6['limit']=qs[_0xb60f('0x25')](_0x5f2c18[_0xb60f('0x33')][_0xb60f('0x25')]);_0x1b36e6[_0xb60f('0x22')]=qs[_0xb60f('0x22')](_0x5f2c18[_0xb60f('0x33')]['offset']);}return _0x535c42[_0xb60f('0x11a')](_0x1b36e6);}})[_0xb60f('0x2c')](function(_0x130a63){if(_0x130a63){return _0x130a63?{'count':_0x4aea82,'rows':_0x130a63}:null;}})[_0xb60f('0x2c')](respondWithResult(_0x285d19,null))[_0xb60f('0x1d')](handleError(_0x285d19,null));};exports['addProactiveActions']=function(_0xb26d5,_0x155b62){return db[_0xb60f('0x11b')]['find']({'where':{'id':_0xb26d5[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x155b62,null))[_0xb60f('0x2c')](function(_0x456ead){if(_0x456ead){return _0x456ead['addProactiveActions'](_0xb26d5['body'][_0xb60f('0x5b')],_[_0xb60f('0x11c')](_0xb26d5['body'],[_0xb60f('0x5b'),'id'])||{});}})[_0xb60f('0x2c')](respondWithResult(_0x155b62,null))[_0xb60f('0x1d')](handleError(_0x155b62,null));};exports[_0xb60f('0x100')]=function(_0x21fcea,_0x5b659c){var _0xfba994={};var _0x266c26={};var _0x4ab054;var _0x22c173;return db[_0xb60f('0x30')][_0xb60f('0x56')]({'where':{'id':_0x21fcea[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x5b659c,null))[_0xb60f('0x2c')](function(_0x1b03eb){if(_0x1b03eb){_0x4ab054=_0x1b03eb;_0x266c26[_0xb60f('0x31')]=_[_0xb60f('0x34')](db[_0xb60f('0x11d')][_0xb60f('0x47')]);_0x266c26[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x21fcea[_0xb60f('0x33')]);_0x266c26[_0xb60f('0x35')]=_[_0xb60f('0x36')](_0x266c26['model'],_0x266c26['query']);_0xfba994[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x266c26['model'],qs[_0xb60f('0x48')](_0x21fcea[_0xb60f('0x33')][_0xb60f('0x48')]));_0xfba994['attributes']=_0xfba994['attributes'][_0xb60f('0x38')]?_0xfba994['attributes']:_0x266c26['model'];_0xfba994[_0xb60f('0x3b')]=qs[_0xb60f('0x3c')](_0x21fcea[_0xb60f('0x33')][_0xb60f('0x3c')]);_0xfba994['where']=qs[_0xb60f('0x35')](_['pick'](_0x21fcea[_0xb60f('0x33')],_0x266c26[_0xb60f('0x35')]));if(_0x21fcea[_0xb60f('0x33')][_0xb60f('0x3e')]){_0xfba994[_0xb60f('0x3d')]=_[_0xb60f('0x3f')](_0xfba994['where'],{'$or':_[_0xb60f('0x2f')](_0xfba994[_0xb60f('0x37')],function(_0x4c376a){var _0x51b25f={};_0x51b25f[_0x4c376a]={'$like':'%'+_0x21fcea['query'][_0xb60f('0x3e')]+'%'};return _0x51b25f;})});}_0xfba994=_[_0xb60f('0x3f')]({},_0xfba994,_0x21fcea[_0xb60f('0x41')]);return _0x4ab054[_0xb60f('0x100')](_0xfba994);}})['then'](function(_0x1e76fc){if(_0x1e76fc){_0x22c173=_0x1e76fc['length'];if(!_0x21fcea['query'][_0xb60f('0x39')](_0xb60f('0x3a'))){_0xfba994[_0xb60f('0x25')]=qs[_0xb60f('0x25')](_0x21fcea['query'][_0xb60f('0x25')]);_0xfba994[_0xb60f('0x22')]=qs[_0xb60f('0x22')](_0x21fcea['query'][_0xb60f('0x22')]);}return _0x4ab054['getProactiveActions'](_0xfba994);}})[_0xb60f('0x2c')](function(_0xced785){if(_0xced785){return _0xced785?{'count':_0x22c173,'rows':_0xced785}:null;}})[_0xb60f('0x2c')](respondWithResult(_0x5b659c,null))[_0xb60f('0x1d')](handleError(_0x5b659c,null));};exports[_0xb60f('0x11e')]=function(_0x5a27e8,_0x51143d){var _0x2fd265=_0x5a27e8[_0xb60f('0x33')][_0xb60f('0x11f')]===_0xb60f('0x120')?_0xb60f('0x121'):'onlineForm';return db['ChatWebsite'][_0xb60f('0x49')]({'attributes':['id',_0x2fd265],'where':{'id':_0x5a27e8[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x51143d,null))['then'](function(_0x5209d9){if(_0x5209d9){var _0x9b94d4=_0x5209d9[_0x2fd265];var _0x34d65e=_0x9b94d4&&_0x9b94d4[_0xb60f('0x122')]?_0x9b94d4[_0xb60f('0x122')]:[];_0x51143d[_0xb60f('0x2d')]({'fromKey':_[_0xb60f('0x6b')](_0x9b94d4['fromKey'])?undefined:_0x9b94d4[_0xb60f('0x123')],'count':_0x34d65e[_0xb60f('0x38')],'rows':_0x34d65e});}})[_0xb60f('0x1d')](handleError(_0x51143d,null));};exports[_0xb60f('0x124')]=function(_0x1bb7ce,_0x237974){var _0x57c8e3={'raw':![],'where':{}};var _0x18d4c3={};var _0x593408={'count':0x0,'rows':[]};return db[_0xb60f('0x30')][_0xb60f('0x56')]({'where':{'id':_0x1bb7ce[_0xb60f('0x51')]['id']}})['then'](handleEntityNotFound(_0x237974,null))[_0xb60f('0x2c')](function(_0x555b90){if(_0x555b90){_0x18d4c3[_0xb60f('0x31')]=_[_0xb60f('0x34')](db[_0xb60f('0xce')]['rawAttributes']);_0x18d4c3[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x1bb7ce[_0xb60f('0x33')]);_0x18d4c3['filters']=_[_0xb60f('0x36')](_0x18d4c3['model'],_0x18d4c3[_0xb60f('0x33')]);_0x57c8e3[_0xb60f('0x37')]=_[_0xb60f('0x36')](_0x18d4c3[_0xb60f('0x31')],qs[_0xb60f('0x48')](_0x1bb7ce[_0xb60f('0x33')]['fields']));_0x57c8e3[_0xb60f('0x37')]=_0x57c8e3[_0xb60f('0x37')]['length']?_0x57c8e3[_0xb60f('0x37')]:_0x18d4c3[_0xb60f('0x31')];if(!_0x1bb7ce[_0xb60f('0x33')]['hasOwnProperty'](_0xb60f('0x3a'))){_0x57c8e3[_0xb60f('0x25')]=qs[_0xb60f('0x25')](_0x1bb7ce[_0xb60f('0x33')][_0xb60f('0x25')]);_0x57c8e3[_0xb60f('0x22')]=qs['offset'](_0x1bb7ce['query'][_0xb60f('0x22')]);}_0x57c8e3[_0xb60f('0x3b')]=qs['sort'](_0x1bb7ce[_0xb60f('0x33')][_0xb60f('0x3c')]);_0x57c8e3[_0xb60f('0x3d')]=qs[_0xb60f('0x35')](_[_0xb60f('0x58')](_0x1bb7ce['query'],_0x18d4c3[_0xb60f('0x35')]));_0x57c8e3[_0xb60f('0x3d')]['ChatWebsiteId']=_0x555b90['id'];if(_0x1bb7ce[_0xb60f('0x33')][_0xb60f('0x3e')]){_0x57c8e3['where']=_[_0xb60f('0x3f')](_0x57c8e3[_0xb60f('0x3d')],{'$or':_[_0xb60f('0x2f')](_0x57c8e3[_0xb60f('0x37')],function(_0x45c45c){var _0x454088={};_0x454088[_0x45c45c]={'$like':'%'+_0x1bb7ce[_0xb60f('0x33')][_0xb60f('0x3e')]+'%'};return _0x454088;})});}_0x57c8e3=_[_0xb60f('0x3f')]({},_0x57c8e3,_0x1bb7ce['options']);return db[_0xb60f('0xce')][_0xb60f('0x24')]({'where':_0x57c8e3[_0xb60f('0x3d')]})[_0xb60f('0x2c')](function(_0x3482ab){_0x593408[_0xb60f('0x24')]=_0x3482ab;if(_0x1bb7ce[_0xb60f('0x33')][_0xb60f('0x42')]){_0x57c8e3[_0xb60f('0x59')]=[{'all':!![]}];}else{_0x57c8e3['include']=[{'model':db[_0xb60f('0x81')],'as':_0xb60f('0xec'),'required':![]},{'model':db['Attachment'],'as':_0xb60f('0x125'),'required':![]}];}return db[_0xb60f('0xce')]['findAll'](_0x57c8e3);})[_0xb60f('0x2c')](function(_0x433407){_0x593408['rows']=_0x433407;return _0x593408;});}})[_0xb60f('0x2c')](respondWithFilteredResult(_0x237974,_0x57c8e3))[_0xb60f('0x1d')](handleError(_0x237974,null));};exports[_0xb60f('0x126')]=function(_0x451595,_0x26b85e){return db[_0xb60f('0x30')]['find']({'where':{'id':_0x451595[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x26b85e,null))[_0xb60f('0x2c')](function(_0xe40e3c){if(_0xe40e3c){return _0xe40e3c[_0xb60f('0x126')](_0x451595['body'][_0xb60f('0x5b')],_[_0xb60f('0x11c')](_0x451595[_0xb60f('0x4b')],['ids','id'])||{})[_0xb60f('0xb2')](function(_0x115608){for(var _0x1c6644=0x0;_0x1c6644<_0x451595['body'][_0xb60f('0x5b')][_0xb60f('0x38')];_0x1c6644+=0x1){socket['emit']('userChatWebsite:save',{'UserId':Number(_0x451595['body'][_0xb60f('0x5b')][_0x1c6644]),'ChatWebsiteId':Number(_0x451595[_0xb60f('0x51')]['id'])});}return _0x115608;});}})[_0xb60f('0x2c')](respondWithResult(_0x26b85e,null))[_0xb60f('0x1d')](handleError(_0x26b85e,null));};exports['removeAgents']=function(_0x53da3e,_0x36dfe8){return db[_0xb60f('0x30')][_0xb60f('0x49')]({'where':{'id':_0x53da3e[_0xb60f('0x51')]['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x36dfe8,null))[_0xb60f('0x2c')](function(_0x587032){if(_0x587032){return _0x587032['removeAgents'](_0x53da3e[_0xb60f('0x33')][_0xb60f('0x5b')])['then'](function(){if(_[_0xb60f('0x127')](_0x53da3e['query'][_0xb60f('0x5b')])){for(var _0x35986e=0x0;_0x35986e<_0x53da3e[_0xb60f('0x33')][_0xb60f('0x5b')][_0xb60f('0x38')];_0x35986e+=0x1){socket[_0xb60f('0x128')]('userChatWebsite:remove',{'UserId':Number(_0x53da3e[_0xb60f('0x33')]['ids'][_0x35986e]),'ChatWebsiteId':Number(_0x53da3e['params']['id'])});}}else{socket['emit'](_0xb60f('0x129'),{'UserId':Number(_0x53da3e[_0xb60f('0x33')][_0xb60f('0x5b')]),'ChatWebsiteId':Number(_0x53da3e[_0xb60f('0x51')]['id'])});}});}})[_0xb60f('0x2c')](respondWithStatusCode(_0x36dfe8,null))['catch'](handleError(_0x36dfe8,null));};exports[_0xb60f('0x12a')]=function(_0x582117,_0x25a745){var _0x9d21a6={};var _0xfa7322={};var _0x2af911;var _0x89e29a;return db['ChatWebsite']['findOne']({'where':{'id':_0x582117['params']['id']}})[_0xb60f('0x2c')](handleEntityNotFound(_0x25a745,null))['then'](function(_0x26ca7b){if(_0x26ca7b){_0x2af911=_0x26ca7b;_0xfa7322[_0xb60f('0x31')]=_[_0xb60f('0x34')](db[_0xb60f('0xed')]['rawAttributes']);_0xfa7322[_0xb60f('0x33')]=_[_0xb60f('0x34')](_0x582117['query']);_0xfa7322[_0xb60f('0x35')]=_[_0xb60f('0x36')](_0xfa7322[_0xb60f('0x31')],_0xfa7322['query']);_0x9d21a6['attributes']=_[_0xb60f('0x36')](_0xfa7322[_0xb60f('0x31')],qs[_0xb60f('0x48')](_0x582117[_0xb60f('0x33')][_0xb60f('0x48')]));_0x9d21a6['attributes']=_0x9d21a6['attributes'][_0xb60f('0x38')]?_0x9d21a6[_0xb60f('0x37')]:_0xfa7322[_0xb60f('0x31')];_0x9d21a6[_0xb60f('0x3b')]=qs[_0xb60f('0x3c')](_0x582117[_0xb60f('0x33')][_0xb60f('0x3c')]);_0x9d21a6['where']=qs['filters'](_[_0xb60f('0x58')](_0x582117[_0xb60f('0x33')],_0xfa7322['filters']));if(_0x582117[_0xb60f('0x33')][_0xb60f('0x3e')]){_0x9d21a6[_0xb60f('0x3d')]=_[_0xb60f('0x3f')](_0x9d21a6[_0xb60f('0x3d')],{'$or':_['map'](_0x9d21a6['attributes'],function(_0x7fe680){var _0x217048={};_0x217048[_0x7fe680]={'$like':'%'+_0x582117[_0xb60f('0x33')][_0xb60f('0x3e')]+'%'};return _0x217048;})});}_0x9d21a6=_['merge']({},_0x9d21a6,_0x582117[_0xb60f('0x41')]);return _0x2af911[_0xb60f('0x12a')](_0x9d21a6);}})[_0xb60f('0x2c')](function(_0x4e01ca){if(_0x4e01ca){_0x89e29a=_0x4e01ca[_0xb60f('0x38')];if(!_0x582117[_0xb60f('0x33')][_0xb60f('0x39')](_0xb60f('0x3a'))){_0x9d21a6[_0xb60f('0x25')]=qs['limit'](_0x582117['query'][_0xb60f('0x25')]);_0x9d21a6[_0xb60f('0x22')]=qs[_0xb60f('0x22')](_0x582117[_0xb60f('0x33')][_0xb60f('0x22')]);}return _0x2af911['getAgents'](_0x9d21a6);}})[_0xb60f('0x2c')](function(_0x3e945d){if(_0x3e945d){return _0x3e945d?{'count':_0x89e29a,'rows':_0x3e945d}:null;}})[_0xb60f('0x2c')](respondWithResult(_0x25a745,null))[_0xb60f('0x1d')](handleError(_0x25a745,null));};
\ No newline at end of file
+var _0xd496=['device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','contact','firstName','lastName','messageId','created','autoclose','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','mimetype','server','attachments','offline-chat','sequelize','transaction','Attachment','bulkCreate','Smtp','CloudProvider','forwardOfflineAddress','getSmtpOptions','SendMail','sendMail','email','offlineMessageSubject','openNewInteraction','originalname','toPairsIn','subjectOffline','NotifyMailAccount','notifyMail','files','remove','addInteraction','omit','getInteractions','User','Owner','fullname','tag','Command','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','ONLINE','OFFLINE','No\x20timezone','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','inspect','getSnippet','Interval','Intervals','getProactiveActions','../../config/license/util','getLicense','virtual','increment','chatLicenseExceeded','all','some','x-real-ip','connection','remoteAddress','replace','alignment','verticalAlignment','color','labelText','textColor','textButtonColor','color_button','hideWhenOffline','addApplications','ISOLATION_LEVELS','READ_COMMITTED','ChatApplication','findAndCountAll','getApplications','addProactiveActions','chatProactiveAction','ChatProactiveAction','getFields','online','false','offlineForm','onlineForm','items','fromKey','getOfflineMessages','Contact','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','util','fs-extra','querystring','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','register','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','get','UserProfileResource','destroy','stack','name','send','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','rows','show','params','keys','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','ChatWebsiteId','Disposition','getDispositions','findOne','includeAll','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','removeAnswers','ids','addLogo','file','agentAvatar','filename','customerAvatar','systemAvatar','getLogo','join','root','sitepic','custom','isNil','existsSync','server/files/images/logos/','download','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','getCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','headers','user-agent','getResult','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','CmList','List','Contacts','Applications','account','applications','orderBy','priority','asc','cf-connecting-ip','x-forwarded-for','first','split','x-real-port','referer','browser','version','format','%s\x20%s','unknown'];(function(_0x2b1601,_0x50e2d6){var _0x3849e4=function(_0x406364){while(--_0x406364){_0x2b1601['push'](_0x2b1601['shift']());}};_0x3849e4(++_0x50e2d6);}(_0xd496,0x1a1));var _0x6d49=function(_0x342700,_0x569f75){_0x342700=_0x342700-0x0;var _0x53406f=_0xd496[_0x342700];return _0x53406f;};'use strict';var BPromise=require(_0x6d49('0x0'));var Mustache=require(_0x6d49('0x1'));var util=require(_0x6d49('0x2'));var path=require('path');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6d49('0x3'));var _=require('lodash');var querystring=require(_0x6d49('0x4'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var logger=require(_0x6d49('0x5'))(_0x6d49('0x6'));var config=require(_0x6d49('0x7'));var db=require(_0x6d49('0x8'))['db'];config['redis']=_[_0x6d49('0x9')](config[_0x6d49('0xa')],{'host':_0x6d49('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6d49('0xa')]));require('./chatWebsite.socket')[_0x6d49('0xc')](socket);var htmlToText=require('html-to-text');var jayson=require('jayson/promise');var client=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232c});var client9002=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232a});var client9003=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x232b});var client9001=jayson[_0x6d49('0xd')][_0x6d49('0xe')]({'port':0x2329});function respondWithRpcPromise(_0x57e715,_0x3b5bc3,_0x17e088,_0x3287b7){return new BPromise(function(_0x18e63f,_0x453a80){var _0x3619e3=_0x3287b7||client;return _0x3619e3[_0x6d49('0xf')](_0x57e715,_0x17e088)[_0x6d49('0x10')](function(_0x7a588a){logger[_0x6d49('0x11')](_0x6d49('0x12'),_0x3b5bc3,_0x6d49('0x13'));logger[_0x6d49('0x14')](_0x6d49('0x15'),_0x3b5bc3,'request\x20sent',JSON[_0x6d49('0x16')](_0x7a588a));if(_0x7a588a['error']){if(_0x7a588a[_0x6d49('0x17')]['code']===0x1f4){logger[_0x6d49('0x17')](_0x6d49('0x12'),_0x3b5bc3,_0x7a588a['error'][_0x6d49('0x18')]);return _0x453a80(_0x7a588a[_0x6d49('0x17')][_0x6d49('0x18')]);}logger[_0x6d49('0x17')]('ChatWebsite,\x20%s,\x20%s',_0x3b5bc3,_0x7a588a['error'][_0x6d49('0x18')]);return _0x18e63f(_0x7a588a[_0x6d49('0x17')][_0x6d49('0x18')]);}else{logger[_0x6d49('0x11')](_0x6d49('0x12'),_0x3b5bc3,_0x6d49('0x13'));_0x18e63f(_0x7a588a[_0x6d49('0x19')][_0x6d49('0x18')]);}})[_0x6d49('0x1a')](function(_0x44018f){logger[_0x6d49('0x17')](_0x6d49('0x12'),_0x3b5bc3,_0x44018f);_0x453a80(_0x44018f);});});}function respondWithStatusCode(_0xe5153b,_0x2e4f72){_0x2e4f72=_0x2e4f72||0xcc;return function(_0x31e6c7){if(_0x31e6c7){return _0xe5153b[_0x6d49('0x1b')](_0x2e4f72);}return _0xe5153b['status'](_0x2e4f72)[_0x6d49('0x1c')]();};}function respondWithResult(_0x1c50a0,_0x2bdea7){_0x2bdea7=_0x2bdea7||0xc8;return function(_0x58a485){if(_0x58a485){return _0x1c50a0[_0x6d49('0x1d')](_0x2bdea7)[_0x6d49('0x1e')](_0x58a485);}};}function respondWithFilteredResult(_0x1961b1,_0x56b18e){return function(_0x547284){if(_0x547284){var _0x281e4d=typeof _0x56b18e[_0x6d49('0x1f')]===_0x6d49('0x20')&&typeof _0x56b18e['limit']===_0x6d49('0x20');var _0x3af46f=_0x547284[_0x6d49('0x21')];var _0x26b93a=_0x281e4d?0x0:_0x56b18e[_0x6d49('0x1f')];var _0x3165a3=_0x281e4d?_0x547284[_0x6d49('0x21')]:_0x56b18e['offset']+_0x56b18e[_0x6d49('0x22')];var _0xc55472;if(_0x3165a3>=_0x3af46f){_0x3165a3=_0x3af46f;_0xc55472=0xc8;}else{_0xc55472=0xce;}_0x1961b1[_0x6d49('0x1d')](_0xc55472);return _0x1961b1[_0x6d49('0x23')](_0x6d49('0x24'),_0x26b93a+'-'+_0x3165a3+'/'+_0x3af46f)[_0x6d49('0x1e')](_0x547284);}return null;};}function saveUpdates(_0x47eb32){return function(_0x5c44eb){if(_0x5c44eb){return _0x5c44eb['update'](_0x47eb32)[_0x6d49('0x10')](function(_0x257c6f){return _0x257c6f;});}return null;};}function removeEntity(_0x471a9a){return function(_0x388724){if(_0x388724){return _0x388724['destroy']()[_0x6d49('0x10')](function(){var _0x17c7cd=_0x388724[_0x6d49('0x25')]({'plain':!![]});var _0x5ee037='ChatWebsites';return db[_0x6d49('0x26')][_0x6d49('0x27')]({'where':{'type':_0x5ee037,'resourceId':_0x17c7cd['id']}})['then'](function(){return _0x388724;});})[_0x6d49('0x10')](function(){_0x471a9a['status'](0xcc)[_0x6d49('0x1c')]();});}};}function handleEntityNotFound(_0x59e714){return function(_0x12aac3){if(!_0x12aac3){_0x59e714[_0x6d49('0x1b')](0x194);}return _0x12aac3;};}function handleError(_0xf22d7e,_0x3c673d){_0x3c673d=_0x3c673d||0x1f4;return function(_0x17afc8){logger[_0x6d49('0x17')](_0x17afc8[_0x6d49('0x28')]);if(_0x17afc8[_0x6d49('0x29')]){delete _0x17afc8[_0x6d49('0x29')];}_0xf22d7e[_0x6d49('0x1d')](_0x3c673d)[_0x6d49('0x2a')](_0x17afc8);};}exports['index']=function(_0x3258fb,_0x423a07){var _0x24cf9d={'include':[{'model':db[_0x6d49('0x2b')],'as':_0x6d49('0x2c')}]},_0x4471ca={},_0x1d5b7c={'count':0x0,'rows':[]};var _0x14617a=_[_0x6d49('0x2d')](db[_0x6d49('0x2e')][_0x6d49('0x2f')],function(_0x44a63e){return{'name':_0x44a63e['fieldName'],'type':_0x44a63e['type'][_0x6d49('0x30')]};});_0x4471ca[_0x6d49('0x31')]=_['map'](_0x14617a,_0x6d49('0x29'));_0x4471ca[_0x6d49('0x32')]=_['keys'](_0x3258fb[_0x6d49('0x32')]);_0x4471ca[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x4471ca[_0x6d49('0x31')],_0x4471ca['query']);_0x24cf9d[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x4471ca[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x36')]));_0x24cf9d[_0x6d49('0x35')]=_0x24cf9d[_0x6d49('0x35')][_0x6d49('0x37')]?_0x24cf9d[_0x6d49('0x35')]:_0x4471ca[_0x6d49('0x31')];if(!_0x3258fb['query'][_0x6d49('0x38')](_0x6d49('0x39'))){_0x24cf9d[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x22')]);_0x24cf9d[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x3258fb[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x24cf9d[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x3258fb['query']['sort']);_0x24cf9d[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x3258fb[_0x6d49('0x32')],_0x4471ca[_0x6d49('0x33')]),_0x14617a);if(_0x3258fb[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x24cf9d[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x24cf9d[_0x6d49('0x3c')],{'$or':_['map'](_0x14617a,function(_0x1035c8){if(_0x1035c8[_0x6d49('0x40')]!==_0x6d49('0x41')){var _0x215d07={};_0x215d07[_0x1035c8[_0x6d49('0x29')]]={'$like':'%'+_0x3258fb['query']['filter']+'%'};return _0x215d07;}})});}_0x24cf9d=_[_0x6d49('0x3f')]({},_0x24cf9d,_0x3258fb[_0x6d49('0x42')]);var _0x1db150={'where':_0x24cf9d[_0x6d49('0x3c')]};return db[_0x6d49('0x2e')][_0x6d49('0x21')](_0x1db150)[_0x6d49('0x10')](function(_0x582096){_0x1d5b7c[_0x6d49('0x21')]=_0x582096;if(_0x3258fb['query']['includeAll']){_0x24cf9d['include']=[{'all':!![]}];}return db[_0x6d49('0x2e')]['findAll'](_0x24cf9d);})['then'](function(_0x1ecb65){_0x1d5b7c[_0x6d49('0x43')]=_0x1ecb65;return _0x1d5b7c;})[_0x6d49('0x10')](respondWithFilteredResult(_0x423a07,_0x24cf9d))['catch'](handleError(_0x423a07,null));};exports[_0x6d49('0x44')]=function(_0x5e379c,_0x872626){var _0x164387={'raw':![],'where':{'id':_0x5e379c[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x2b')],'as':'mandatoryDispositionPause'}]},_0x4b0feb={};_0x4b0feb[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x2e')][_0x6d49('0x2f')]);_0x4b0feb[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x5e379c[_0x6d49('0x32')]);_0x4b0feb[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x4b0feb[_0x6d49('0x31')],_0x4b0feb[_0x6d49('0x32')]);_0x164387[_0x6d49('0x35')]=_['intersection'](_0x4b0feb[_0x6d49('0x31')],qs['fields'](_0x5e379c[_0x6d49('0x32')][_0x6d49('0x36')]));_0x164387[_0x6d49('0x35')]=_0x164387['attributes'][_0x6d49('0x37')]?_0x164387[_0x6d49('0x35')]:_0x4b0feb[_0x6d49('0x31')];if(_0x5e379c['query']['includeAll']){_0x164387[_0x6d49('0x47')]=[{'all':!![]}];}_0x164387=_['merge']({},_0x164387,_0x5e379c[_0x6d49('0x42')]);return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x164387)['then'](handleEntityNotFound(_0x872626,null))[_0x6d49('0x10')](respondWithResult(_0x872626,null))[_0x6d49('0x1a')](handleError(_0x872626,null));};exports[_0x6d49('0x49')]=function(_0x5536cb,_0x2499d1){return db[_0x6d49('0x2e')][_0x6d49('0x49')](_0x5536cb[_0x6d49('0x4a')],{})[_0x6d49('0x10')](function(_0x5f555a){var _0x25c381=_0x5536cb[_0x6d49('0x4b')]['get']({'plain':!![]});if(!_0x25c381)throw new Error(_0x6d49('0x4c'));if(_0x25c381[_0x6d49('0x4d')]==='user'){var _0xcdabc3=_0x5f555a['get']({'plain':!![]});var _0x405932='ChatWebsites';return db['UserProfileSection'][_0x6d49('0x48')]({'where':{'name':_0x405932,'userProfileId':_0x25c381[_0x6d49('0x4e')]},'raw':!![]})[_0x6d49('0x10')](function(_0x411f64){if(_0x411f64&&_0x411f64['autoAssociation']===0x0){return db['UserProfileResource'][_0x6d49('0x49')]({'name':_0xcdabc3[_0x6d49('0x29')],'resourceId':_0xcdabc3['id'],'type':_0x411f64[_0x6d49('0x29')],'sectionId':_0x411f64['id']},{})[_0x6d49('0x10')](function(){return _0x5f555a;});}else{return _0x5f555a;}})[_0x6d49('0x1a')](function(_0x1629a5){logger[_0x6d49('0x17')](_0x6d49('0x4f'),_0x1629a5);throw _0x1629a5;});}return _0x5f555a;})[_0x6d49('0x10')](respondWithResult(_0x2499d1,0xc9))[_0x6d49('0x1a')](handleError(_0x2499d1,null));};exports[_0x6d49('0x50')]=function(_0x145e27,_0x4f582c){if(_0x145e27['body']['id']){delete _0x145e27[_0x6d49('0x4a')]['id'];}return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x145e27['params']['id']},'include':[{'model':db[_0x6d49('0x2b')],'as':_0x6d49('0x2c')}]})[_0x6d49('0x10')](handleEntityNotFound(_0x4f582c,null))['then'](saveUpdates(_0x145e27[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x4f582c,null))['catch'](handleError(_0x4f582c,null));};exports[_0x6d49('0x27')]=function(_0xe47055,_0x8004b0){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0xe47055['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x8004b0,null))[_0x6d49('0x10')](removeEntity(_0x8004b0,null))['catch'](handleError(_0x8004b0,null));};exports[_0x6d49('0x51')]=function(_0x4e5606,_0xeb0ccf){return db[_0x6d49('0x2e')][_0x6d49('0x51')]()[_0x6d49('0x10')](respondWithResult(_0xeb0ccf,null))[_0x6d49('0x1a')](handleError(_0xeb0ccf,null));};exports[_0x6d49('0x52')]=function(_0x2d0228,_0x1a1a14){if(_0x2d0228[_0x6d49('0x4a')]['id']){delete _0x2d0228[_0x6d49('0x4a')]['id'];}return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x2d0228['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x1a1a14,null))['then'](function(_0x51bac9){if(_0x51bac9){_0x2d0228[_0x6d49('0x4a')][_0x6d49('0x53')]=_0x51bac9['id'];return db[_0x6d49('0x54')][_0x6d49('0x49')](_0x2d0228[_0x6d49('0x4a')]);}})[_0x6d49('0x10')](respondWithResult(_0x1a1a14,null))[_0x6d49('0x1a')](handleError(_0x1a1a14,null));};exports[_0x6d49('0x55')]=function(_0x5c07fa,_0x4a6656){var _0x24ca3b={'raw':![],'where':{}};var _0x5e6dce={};var _0x542814={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x5c07fa[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x4a6656,null))[_0x6d49('0x10')](function(_0x40f644){if(_0x40f644){_0x5e6dce[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x54')][_0x6d49('0x2f')]);_0x5e6dce[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x5c07fa[_0x6d49('0x32')]);_0x5e6dce['filters']=_['intersection'](_0x5e6dce[_0x6d49('0x31')],_0x5e6dce[_0x6d49('0x32')]);_0x24ca3b[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x5e6dce[_0x6d49('0x31')],qs['fields'](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x36')]));_0x24ca3b['attributes']=_0x24ca3b[_0x6d49('0x35')][_0x6d49('0x37')]?_0x24ca3b[_0x6d49('0x35')]:_0x5e6dce[_0x6d49('0x31')];if(!_0x5c07fa['query'][_0x6d49('0x38')](_0x6d49('0x39'))){_0x24ca3b[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x22')]);_0x24ca3b[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x24ca3b[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x24ca3b['where']=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x5c07fa[_0x6d49('0x32')],_0x5e6dce['filters']));_0x24ca3b[_0x6d49('0x3c')][_0x6d49('0x53')]=_0x40f644['id'];if(_0x5c07fa['query'][_0x6d49('0x3e')]){_0x24ca3b[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x24ca3b['where'],{'$or':_[_0x6d49('0x2d')](_0x24ca3b['attributes'],function(_0x3c149f){var _0x440bd6={};_0x440bd6[_0x3c149f]={'$like':'%'+_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x3e')]+'%'};return _0x440bd6;})});}_0x24ca3b=_[_0x6d49('0x3f')]({},_0x24ca3b,_0x5c07fa[_0x6d49('0x42')]);return db['Disposition'][_0x6d49('0x21')]({'where':_0x24ca3b[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0xd554d5){_0x542814[_0x6d49('0x21')]=_0xd554d5;if(_0x5c07fa[_0x6d49('0x32')][_0x6d49('0x57')]){_0x24ca3b[_0x6d49('0x47')]=[{'all':!![]}];}return db[_0x6d49('0x54')][_0x6d49('0x58')](_0x24ca3b);})[_0x6d49('0x10')](function(_0xc476fe){_0x542814[_0x6d49('0x43')]=_0xc476fe;return _0x542814;});}})[_0x6d49('0x10')](respondWithFilteredResult(_0x4a6656,_0x24ca3b))[_0x6d49('0x1a')](handleError(_0x4a6656,null));};exports[_0x6d49('0x59')]=function(_0xfc4174,_0x11bf25){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0xfc4174['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x11bf25,null))[_0x6d49('0x10')](function(_0x142159){if(_0x142159){return _0x142159[_0x6d49('0x59')](_0xfc4174[_0x6d49('0x32')]['ids']);}})[_0x6d49('0x10')](respondWithStatusCode(_0x11bf25,null))[_0x6d49('0x1a')](handleError(_0x11bf25,null));};exports[_0x6d49('0x5a')]=function(_0x5d7671,_0x47341b){if(_0x5d7671[_0x6d49('0x4a')]['id']){delete _0x5d7671['body']['id'];}return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x5d7671[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x47341b,null))['then'](function(_0x40391b){if(_0x40391b){_0x5d7671[_0x6d49('0x4a')][_0x6d49('0x53')]=_0x40391b['id'];return db[_0x6d49('0x5b')][_0x6d49('0x49')](_0x5d7671[_0x6d49('0x4a')]);}})[_0x6d49('0x10')](respondWithResult(_0x47341b,null))['catch'](handleError(_0x47341b,null));};exports[_0x6d49('0x5c')]=function(_0x4884e9,_0x41def7){var _0x321db6={'raw':![],'where':{}};var _0x42973f={};var _0x3453c1={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x4884e9[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x41def7,null))[_0x6d49('0x10')](function(_0x1da5d4){if(_0x1da5d4){_0x42973f[_0x6d49('0x31')]=_['keys'](db[_0x6d49('0x5b')][_0x6d49('0x2f')]);_0x42973f['query']=_[_0x6d49('0x46')](_0x4884e9['query']);_0x42973f['filters']=_[_0x6d49('0x34')](_0x42973f[_0x6d49('0x31')],_0x42973f[_0x6d49('0x32')]);_0x321db6[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x42973f['model'],qs['fields'](_0x4884e9[_0x6d49('0x32')][_0x6d49('0x36')]));_0x321db6[_0x6d49('0x35')]=_0x321db6['attributes'][_0x6d49('0x37')]?_0x321db6[_0x6d49('0x35')]:_0x42973f[_0x6d49('0x31')];if(!_0x4884e9[_0x6d49('0x32')][_0x6d49('0x38')]('nolimit')){_0x321db6[_0x6d49('0x22')]=qs['limit'](_0x4884e9['query'][_0x6d49('0x22')]);_0x321db6[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x4884e9[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x321db6[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x4884e9[_0x6d49('0x32')]['sort']);_0x321db6[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x4884e9[_0x6d49('0x32')],_0x42973f['filters']));_0x321db6[_0x6d49('0x3c')]['ChatWebsiteId']=_0x1da5d4['id'];if(_0x4884e9['query']['filter']){_0x321db6['where']=_[_0x6d49('0x3f')](_0x321db6[_0x6d49('0x3c')],{'$or':_['map'](_0x321db6[_0x6d49('0x35')],function(_0x3c53bc){var _0x49804a={};_0x49804a[_0x3c53bc]={'$like':'%'+_0x4884e9[_0x6d49('0x32')]['filter']+'%'};return _0x49804a;})});}_0x321db6=_[_0x6d49('0x3f')]({},_0x321db6,_0x4884e9[_0x6d49('0x42')]);return db['CannedAnswer'][_0x6d49('0x21')]({'where':_0x321db6[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0xa73391){_0x3453c1[_0x6d49('0x21')]=_0xa73391;if(_0x4884e9['query']['includeAll']){_0x321db6[_0x6d49('0x47')]=[{'all':!![]}];}return db[_0x6d49('0x5b')][_0x6d49('0x58')](_0x321db6);})[_0x6d49('0x10')](function(_0x8e3e90){_0x3453c1[_0x6d49('0x43')]=_0x8e3e90;return _0x3453c1;});}})[_0x6d49('0x10')](respondWithFilteredResult(_0x41def7,_0x321db6))[_0x6d49('0x1a')](handleError(_0x41def7,null));};exports[_0x6d49('0x5d')]=function(_0x257cbf,_0x298525){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x257cbf[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x298525,null))[_0x6d49('0x10')](function(_0x2bf210){if(_0x2bf210){return _0x2bf210['removeAnswers'](_0x257cbf[_0x6d49('0x32')][_0x6d49('0x5e')]);}})['then'](respondWithStatusCode(_0x298525,null))[_0x6d49('0x1a')](handleError(_0x298525,null));};exports[_0x6d49('0x5f')]=function(_0x1e6841,_0x288b43){_0x1e6841['body']['sitepic']=_0x1e6841[_0x6d49('0x60')]['filename'];return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x1e6841[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x288b43,null))[_0x6d49('0x10')](saveUpdates(_0x1e6841[_0x6d49('0x4a')],null))['then'](respondWithResult(_0x288b43,null))['catch'](handleError(_0x288b43,null));};exports['addAvatar']=function(_0x5cc80a,_0x3280ea){_0x5cc80a[_0x6d49('0x4a')][_0x6d49('0x61')]=_0x5cc80a[_0x6d49('0x60')][_0x6d49('0x62')];return db['ChatWebsite'][_0x6d49('0x48')]({'where':{'id':_0x5cc80a[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x3280ea,null))[_0x6d49('0x10')](saveUpdates(_0x5cc80a[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x3280ea,null))[_0x6d49('0x1a')](handleError(_0x3280ea,null));};exports['addCustomerAvatar']=function(_0x207ded,_0x52439e){_0x207ded[_0x6d49('0x4a')][_0x6d49('0x63')]=_0x207ded['file'][_0x6d49('0x62')];return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x207ded[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x52439e,null))[_0x6d49('0x10')](saveUpdates(_0x207ded[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x52439e,null))[_0x6d49('0x1a')](handleError(_0x52439e,null));};exports['addSystemAvatar']=function(_0x31a870,_0x590b04){_0x31a870[_0x6d49('0x4a')][_0x6d49('0x64')]=_0x31a870[_0x6d49('0x60')]['filename'];return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x31a870[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x590b04,null))[_0x6d49('0x10')](saveUpdates(_0x31a870[_0x6d49('0x4a')],null))[_0x6d49('0x10')](respondWithResult(_0x590b04,null))[_0x6d49('0x1a')](handleError(_0x590b04,null));};exports[_0x6d49('0x65')]=function(_0xf6558f,_0x48fe06){var _0x5b3db8=path[_0x6d49('0x66')](config[_0x6d49('0x67')],'server/files/images/logos/default_logo.svg');var _0x5338a8={'where':{'id':_0xf6558f[_0x6d49('0x45')]['id']},'attributes':['id',_0x6d49('0x68')],'raw':!![]};var _0x271d56=![];return require('../../config/license/util')['getLicense']()[_0x6d49('0x10')](function(_0x1a231e){if(_0x1a231e){_0x271d56=_0x1a231e[_0x6d49('0x69')];}})[_0x6d49('0x10')](function(){return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x5338a8);})['then'](handleEntityNotFound(_0x48fe06,null))[_0x6d49('0x10')](function(_0x1fc966){if(_0x1fc966){if(!_[_0x6d49('0x6a')](_0x1fc966['sitepic'])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x6c'),_0x1fc966['sitepic']))&&_0x271d56){_0x5b3db8=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x6c'),_0x1fc966[_0x6d49('0x68')]);}}return _0x48fe06[_0x6d49('0x6d')](_0x5b3db8);}})[_0x6d49('0x1a')](handleError(_0x48fe06,null));};exports[_0x6d49('0x6e')]=function(_0x2d9a10,_0x5dedb6){var _0x25fccf=path[_0x6d49('0x66')](config['root'],_0x6d49('0x6f'));var _0x175d02={'where':{'id':_0x2d9a10['params']['id']},'attributes':['id',_0x6d49('0x61')],'raw':!![]};return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x175d02)[_0x6d49('0x10')](handleEntityNotFound(_0x5dedb6,null))['then'](function(_0x1d54d9){if(_0x1d54d9){if(!_[_0x6d49('0x6a')](_0x1d54d9[_0x6d49('0x61')])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x1d54d9[_0x6d49('0x61')]))){_0x25fccf=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x1d54d9[_0x6d49('0x61')]);}}return _0x5dedb6[_0x6d49('0x6d')](_0x25fccf);}})['catch'](handleError(_0x5dedb6,null));};exports[_0x6d49('0x71')]=function(_0x1fe96b,_0x3d2426){var _0x20c8ae=path['join'](config[_0x6d49('0x67')],'server/files/images/avatars/customer_avatar.png');var _0x4e2c09={'where':{'id':_0x1fe96b[_0x6d49('0x45')]['id']},'attributes':['id',_0x6d49('0x63'),'showCustomerAvatar'],'raw':!![]};return db[_0x6d49('0x2e')][_0x6d49('0x48')](_0x4e2c09)[_0x6d49('0x10')](handleEntityNotFound(_0x3d2426,null))[_0x6d49('0x10')](function(_0x460279){if(_0x460279){if(!_[_0x6d49('0x6a')](_0x460279[_0x6d49('0x63')])){if(fs[_0x6d49('0x6b')](path[_0x6d49('0x66')](config['root'],_0x6d49('0x70'),_0x460279[_0x6d49('0x63')]))&&_0x460279['showCustomerAvatar']){_0x20c8ae=path['join'](config[_0x6d49('0x67')],_0x6d49('0x70'),_0x460279['customerAvatar']);}}return _0x3d2426[_0x6d49('0x6d')](_0x20c8ae);}})[_0x6d49('0x1a')](handleError(_0x3d2426,null));};exports[_0x6d49('0x72')]=function(_0x4a3e35,_0x396c46){var _0x348b2d=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0x73'));var _0x358010={'where':{'id':_0x4a3e35['params']['id']},'attributes':['id',_0x6d49('0x64')],'raw':!![]};return db['ChatWebsite'][_0x6d49('0x48')](_0x358010)[_0x6d49('0x10')](handleEntityNotFound(_0x396c46,null))['then'](function(_0xc00c3){if(_0xc00c3){if(!_[_0x6d49('0x6a')](_0xc00c3[_0x6d49('0x64')])){if(fs['existsSync'](path['join'](config[_0x6d49('0x67')],_0x6d49('0x70'),_0xc00c3[_0x6d49('0x64')]))){_0x348b2d=path['join'](config[_0x6d49('0x67')],'server/files/images/avatars/',_0xc00c3[_0x6d49('0x64')]);}}return _0x396c46[_0x6d49('0x6d')](_0x348b2d);}})[_0x6d49('0x1a')](handleError(_0x396c46,null));};exports[_0x6d49('0x74')]=function(_0x2dfa7c,_0x4a4cb2){var _0x51d840=require('user-agent-parser');var _0x4e5e92=new _0x51d840();var _0x24e747=_0x4e5e92['setUA'](_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x76')])[_0x6d49('0x77')]();var _0x15a749={'body':_0x2dfa7c[_0x6d49('0x4a')],'channel':'chat'};var _0x1391ec=[];var _0x9a4adf=[];var _0x831e84={};var _0x2b08ac=![];return db[_0x6d49('0x78')]['describe']()[_0x6d49('0x10')](function(_0x4361b1){if(!_0x4361b1){throw new db[(_0x6d49('0x79'))][(_0x6d49('0x7a'))](_0x6d49('0x7b'));}_0x1391ec=_[_0x6d49('0x7c')](_['keys'](_0x4361b1),[_0x6d49('0x7d'),_0x6d49('0x7e')]);_0x9a4adf=_[_0x6d49('0x7c')](_[_0x6d49('0x46')](_0x4361b1),[_0x6d49('0x7d'),'updatedAt',_0x6d49('0x7f'),_0x6d49('0x80')]);if(_0x2dfa7c[_0x6d49('0x4a')]['id']){delete _0x2dfa7c['body']['id'];}if(_[_0x6d49('0x6a')](_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x81')])){throw new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0x82'));}if(_[_0x6d49('0x6a')](_0x2dfa7c['body'][_0x6d49('0x4a')])||_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x4a')]===''){throw new db[(_0x6d49('0x79'))]['ValidationError'](_0x6d49('0x83'));}if(_[_0x6d49('0x6a')](_0x2dfa7c[_0x6d49('0x4a')]['mapKey'])){throw new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0x84')+_0x9a4adf);}if(!_[_0x6d49('0x85')](_0x9a4adf,_0x2dfa7c['body'][_0x6d49('0x86')])){throw new db['Sequelize'][(_0x6d49('0x7a'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x9a4adf);}_0x831e84[_0x2dfa7c[_0x6d49('0x4a')]['mapKey']]=_0x2dfa7c[_0x6d49('0x4a')]['from'];})[_0x6d49('0x10')](function(){return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x2dfa7c[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x87')],'as':_0x6d49('0x88'),'include':[{'model':db[_0x6d49('0x78')],'as':_0x6d49('0x89'),'where':_0x831e84,'limit':0x1,'order':[[_0x6d49('0x7e'),'DESC']]}]},{'model':db['ChatApplication'],'as':_0x6d49('0x8a')}]});})[_0x6d49('0x10')](handleEntityNotFound(_0x4a4cb2,null))['then'](function(_0x5701fe){if(_0x5701fe&&_0x5701fe[_0x6d49('0x88')]){_0x15a749[_0x6d49('0x8b')]=_0x5701fe;_0x15a749[_0x6d49('0x8c')]=_0x5701fe[_0x6d49('0x8a')];_0x15a749['list']=_0x5701fe['List'];_0x15a749[_0x6d49('0x8c')]=_[_0x6d49('0x8d')](_0x15a749[_0x6d49('0x8c')],[_0x6d49('0x8e')],[_0x6d49('0x8f')]);if(_0x15a749[_0x6d49('0x8b')]['Applications']){delete _0x15a749['account'][_0x6d49('0x8a')];}if(_0x15a749[_0x6d49('0x8b')][_0x6d49('0x88')]&&_0x15a749[_0x6d49('0x8b')]['List'][_0x6d49('0x89')]['length']){return _0x15a749['account'][_0x6d49('0x88')]['Contacts'][0x0];}var _0x1ed2a9=_[_0x6d49('0x9')](_0x2dfa7c['body'],{'firstName':_0x2dfa7c['body'][_0x6d49('0x81')],'ListId':_0x5701fe[_0x6d49('0x80')]});_0x1ed2a9[_0x2dfa7c[_0x6d49('0x4a')]['mapKey']]=_0x2dfa7c['body'][_0x6d49('0x81')];return db['CmContact'][_0x6d49('0x49')](_0x1ed2a9,{'fields':_0x1391ec,'raw':!![]});}})[_0x6d49('0x10')](handleEntityNotFound(_0x4a4cb2,null))[_0x6d49('0x10')](function(_0x7876e1){_0x15a749['contact']=_0x7876e1;var _0x4ec1c4=_0x2dfa7c[_0x6d49('0x4a')]['customerIp'];if(_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x90')]){_0x4ec1c4=_0x2dfa7c['headers'][_0x6d49('0x90')];}else if(_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x91')]){_0x4ec1c4=_[_0x6d49('0x92')](_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x91')][_0x6d49('0x93')](','));}if(_0x7876e1){var _0xf24332={'ContactId':_0x7876e1['id'],'ChatWebsiteId':_0x2dfa7c[_0x6d49('0x45')]['id'],'from':(_0x7876e1['firstName']||'')+'\x20'+(_0x7876e1['lastName']||''),'customerIp':_0x4ec1c4,'customerPort':_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x94')]?_0x2dfa7c[_0x6d49('0x75')][_0x6d49('0x94')]:null,'referer':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x95')],'browserName':_0x24e747[_0x6d49('0x96')][_0x6d49('0x29')]&&_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]?util[_0x6d49('0x98')](_0x6d49('0x99'),_0x24e747['browser'][_0x6d49('0x29')],_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]):_0x6d49('0x9a'),'browserVersion':_0x24e747[_0x6d49('0x96')][_0x6d49('0x97')]||_0x6d49('0x9a'),'osName':util[_0x6d49('0x98')](_0x6d49('0x99'),_0x24e747['os'][_0x6d49('0x29')],_0x24e747['os'][_0x6d49('0x97')]),'osVersion':_0x24e747['os'][_0x6d49('0x97')],'deviceModel':_0x24e747[_0x6d49('0x9b')][_0x6d49('0x31')]&&_0x24e747['device'][_0x6d49('0x9c')]?util[_0x6d49('0x98')](_0x6d49('0x9d'),_0x24e747[_0x6d49('0x9b')][_0x6d49('0x31')],_0x24e747[_0x6d49('0x9b')]['vendor'],_0x24e747['device'][_0x6d49('0x40')]):null,'deviceVendor':_0x24e747[_0x6d49('0x9b')][_0x6d49('0x9c')],'deviceType':_0x24e747[_0x6d49('0x9b')]['type'],'formData':JSON[_0x6d49('0x16')](_0x2dfa7c[_0x6d49('0x4a')])};var _0x16f426={'ChatWebsiteId':_0x2dfa7c[_0x6d49('0x45')]['id'],'closed':![]};if(_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x9e')]){_0x16f426[_0x6d49('0x9e')]=_0x2dfa7c[_0x6d49('0x4a')]['threadId'];return db[_0x6d49('0x9f')][_0x6d49('0x48')]({'where':_0x16f426})[_0x6d49('0x10')](function(_0x4c56e8){if(_0x4c56e8){return[_0x4c56e8,![]];}_0xf24332[_0x6d49('0x9e')]=_0x2dfa7c['body'][_0x6d49('0x9e')];_0xf24332[_0x6d49('0xa0')]=_0x2dfa7c['body'][_0x6d49('0xa0')];return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)[_0x6d49('0x10')](function(_0x2fbf4e){return[_0x2fbf4e,!![]];});});}_0x16f426[_0x6d49('0xa1')]=_0x7876e1['id'];if(_0x2dfa7c[_0x6d49('0x4a')]['interaction']&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa2')]['id']){_0x16f426['id']=_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa2')]['id'];return db[_0x6d49('0x9f')][_0x6d49('0x48')]({'where':_0x16f426})[_0x6d49('0x10')](function(_0x4d5a05){if(_0x4d5a05){return[_0x4d5a05,![]];}return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)[_0x6d49('0x10')](function(_0xcd7a82){return[_0xcd7a82,!![]];});});}return db[_0x6d49('0x9f')][_0x6d49('0x49')](_0xf24332)['then'](function(_0x22af07){return[_0x22af07,!![]];});}})[_0x6d49('0xa3')](function(_0x48ff1d,_0x4183fd){if(_0x48ff1d){_0x2b08ac=_0x4183fd;if(!_0x4183fd){var _0x23132b={'from':(_0x15a749[_0x6d49('0xa4')][_0x6d49('0xa5')]||'')+'\x20'+(_0x15a749[_0x6d49('0xa4')][_0x6d49('0xa6')]||'')};if(_0x2dfa7c['body'][_0x6d49('0x9e')]&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa7')]&&_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x9e')]!=_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xa7')]){_0x23132b[_0x6d49('0x9e')]=_0x2dfa7c[_0x6d49('0x4a')]['messageId'];}return _0x48ff1d['update'](_0x23132b);}else{return _0x48ff1d;}}})[_0x6d49('0x10')](function(_0xcbeab3){_0x15a749[_0x6d49('0xa2')]=_0xcbeab3[_0x6d49('0x25')]({'plain':!![]});_0x15a749[_0x6d49('0xa2')][_0x6d49('0xa8')]=_0x2b08ac;if(_0x15a749[_0x6d49('0xa2')][_0x6d49('0xa8')]){if(_0x15a749['account'][_0x6d49('0xa9')]){_0x15a749['applications'][_0x6d49('0xaa')]({'id':0x0,'priority':_0x15a749[_0x6d49('0x8c')][_0x6d49('0x37')]+0x1,'app':'close','appdata':_0x6d49('0xab'),'interval':_0x6d49('0xac')});}}return db[_0x6d49('0xad')][_0x6d49('0x49')]({'body':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0x4a')],'ChatWebsiteId':_0x2dfa7c['params']['id'],'ChatInteractionId':_0xcbeab3['id'],'direction':'in','ContactId':_0x15a749['contact']['id'],'AttachmentId':_0x2dfa7c[_0x6d49('0x4a')][_0x6d49('0xae')]});})[_0x6d49('0x10')](function(_0x50cf36){_0x15a749[_0x6d49('0x18')]=_0x50cf36;if(_0x15a749[_0x6d49('0xa2')][_0x6d49('0xaf')]){return db['User'][_0x6d49('0x48')]({'attributes':['id',_0x6d49('0x29')],'where':{'id':_0x15a749[_0x6d49('0xa2')][_0x6d49('0xaf')]}})['then'](function(_0x1b518f){if(_0x1b518f){_0x15a749[_0x6d49('0x8c')][_0x6d49('0xb0')]({'id':0x0,'priority':0x0,'app':_0x6d49('0xb1'),'appdata':_0x1b518f['name']+','+(_0x15a749[_0x6d49('0x8b')][_0x6d49('0xb2')]||0xa),'interval':_0x6d49('0xac')});_0x15a749[_0x6d49('0xb3')]=!![];}return respondWithRpcPromise(_0x6d49('0xb4'),'startRouting',_0x15a749);});}return respondWithRpcPromise(_0x6d49('0xb4'),_0x6d49('0xb5'),_0x15a749);})[_0x6d49('0x10')](function(_0x3c5484){respondWithRpcPromise(_0x6d49('0xb6'),_0x6d49('0xb6'),{'event':_0x6d49('0x74'),'message':_0x3c5484},client9002);return _0x3c5484;})[_0x6d49('0x10')](respondWithResult(_0x4a4cb2,null))[_0x6d49('0x1a')](handleError(_0x4a4cb2,null));};exports[_0x6d49('0xb7')]=function(_0x33d05b,_0xb0ee18){var _0x323d34,_0x54051b,_0x17d390;var _0x41587f=[];var _0x3f5dc7={};var _0x2d48df=_0x33d05b['files']||[];var _0x4c00bb=[];var _0x549289;return db[_0x6d49('0x78')][_0x6d49('0x51')]()[_0x6d49('0x10')](function(_0x1bec22){if(!_0x1bec22){throw new db['Sequelize'][(_0x6d49('0x7a'))]('no\x20available\x20attributes');}_0x41587f=_[_0x6d49('0x7c')](_[_0x6d49('0x46')](_0x1bec22),[_0x6d49('0x7d'),_0x6d49('0x7e'),_0x6d49('0x7f'),_0x6d49('0x80')]);if(_0x33d05b['body']['id']){delete _0x33d05b[_0x6d49('0x4a')]['id'];}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db[(_0x6d49('0x79'))]['ValidationError'](_0x6d49('0x82')));}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x4a')])||_0x33d05b['body'][_0x6d49('0x4a')]===''){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db[(_0x6d49('0x79'))][(_0x6d49('0x7a'))](_0x6d49('0x83')));}if(_[_0x6d49('0x6a')](_0x33d05b[_0x6d49('0x4a')]['mapKeyOffline'])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db['Sequelize'][(_0x6d49('0x7a'))](_0x6d49('0xb8')+_0x41587f));}if(!_['includes'](_0x41587f,_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')])){throw _0xb0ee18[_0x6d49('0x1d')](0x1f4)[_0x6d49('0x2a')](new db['Sequelize']['ValidationError'](_0x6d49('0xba')+_0x41587f));}_0x3f5dc7[_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')]]=_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')];})[_0x6d49('0x10')](function(){return db['ChatWebsite'][_0x6d49('0x48')]({'where':{'id':_0x33d05b[_0x6d49('0x45')]['id']},'include':[{'model':db[_0x6d49('0x87')],'as':_0x6d49('0x88')},{'model':db[_0x6d49('0xbb')],'as':_0x6d49('0xbb')}]});})[_0x6d49('0x10')](handleEntityNotFound(_0xb0ee18,null))[_0x6d49('0x10')](function(_0x4b0320){if(_0x4b0320&&_0x4b0320['List']){_0x54051b=_0x4b0320;var _0x1e95d6=_[_0x6d49('0x9')](_0x33d05b[_0x6d49('0x4a')],{'firstName':_0x33d05b[_0x6d49('0x4a')][_0x6d49('0x81')],'phone':_0x33d05b[_0x6d49('0x4a')]['from'],'ListId':_0x4b0320[_0x6d49('0x80')]});_0x1e95d6[_0x33d05b[_0x6d49('0x4a')][_0x6d49('0xb9')]]=_0x33d05b['body']['from'];return db[_0x6d49('0x78')]['findOrCreate']({'where':_0x3f5dc7,'defaults':_0x1e95d6});}})[_0x6d49('0xa3')](function(_0x593690){if(_0x593690){_0x17d390=_0x593690;var _0x11ed0e=fs['readFileSync'](path[_0x6d49('0x66')](config[_0x6d49('0x67')],'server/files/templates/chatOfflineMessage.ejs'),_0x6d49('0xbc'));var _0x5e9400=ejs[_0x6d49('0xbd')](_0x11ed0e,{'body':_[_0x6d49('0xbe')](_0x33d05b['body'][_0x6d49('0x4a')]),'bodyTitle':_0x54051b[_0x6d49('0xbf')]});return db[_0x6d49('0xc0')][_0x6d49('0x49')]({'body':_0x5e9400,'plainBody':htmlToText[_0x6d49('0xc1')](_0x5e9400),'ContactId':_0x593690['id'],'ChatWebsiteId':_0x54051b['id']});}})['then'](function(_0x6f1233){_0x549289=_0x6f1233;if(_0x2d48df[_0x6d49('0x37')]){var _0x333070=_0x2d48df['map'](function(_0xdaee8c){return{'name':_0xdaee8c['originalname'],'basename':_0xdaee8c[_0x6d49('0x62')],'type':_0xdaee8c[_0x6d49('0xc2')],'ChatOfflineMessageId':_0x6f1233['id']};});_0x4c00bb=_0x333070[_0x6d49('0x2d')](_0x4903b6=>{var _0x14d716={'filename':_0x4903b6[_0x6d49('0x29')],'path':path['join'](config['root'],_0x6d49('0xc3'),'files',_0x6d49('0xc4'),_0x6d49('0xc5'),_0x4903b6['basename'])};return _0x14d716;});if(!_0x54051b['openNewInteraction']){return db[_0x6d49('0xc6')][_0x6d49('0xc7')](function(_0x242712){return db[_0x6d49('0xc8')][_0x6d49('0xc9')](_0x333070,{'transaction':_0x242712});});}}})[_0x6d49('0x10')](function(){if(_0x549289){_0x323d34=_0x549289;return db['MailAccount'][_0x6d49('0x56')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x6d49('0xca'),'raw':!![],'include':[{'model':db[_0x6d49('0xcb')],'as':_0x6d49('0xcb'),'raw':!![]}]}]});}})[_0x6d49('0x10')](function(_0x52e12e){if(_0x52e12e&&_0x52e12e['Smtp']&&_0x54051b['forwardOffline']&&_0x54051b[_0x6d49('0xcc')]){var _0x253ce3=_0x52e12e[_0x6d49('0xcd')]();return respondWithRpcPromise(_0x6d49('0xce'),_0x6d49('0xcf'),{'account':_0x253ce3,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x52e12e[_0x6d49('0x29')],_0x52e12e[_0x6d49('0xd0')]||_0x52e12e[_0x6d49('0xca')]['user']),'to':_0x54051b['forwardOfflineAddress'],'subject':_0x54051b[_0x6d49('0xd1')],'html':_0x323d34[_0x6d49('0x4a')],'attachments':_0x4c00bb}},client9003)[_0x6d49('0x10')](function(){return _0x323d34;})[_0x6d49('0x1a')](function(_0x37cc15){logger[_0x6d49('0x17')](_0x37cc15);});}})['then'](function(){if(_0x54051b&&_0x54051b[_0x6d49('0xd2')]&&_0x54051b['MailAccountId']){var _0x334908=[];if(_0x2d48df['length']){_0x334908=_0x2d48df[_0x6d49('0x2d')](function(_0x423616){return{'name':_0x423616[_0x6d49('0xd3')],'basename':_0x423616['filename'],'type':_0x423616[_0x6d49('0xc2')],'ChatOfflineMessageId':_0x549289['id']};});}var _0x4aa002;if(!_[_0x6d49('0x6a')](_0x54051b['subjectOffline'])){var _0x4e6ac1=_[_0x6d49('0x2d')](_0x33d05b[_0x6d49('0x4a')],function(_0x5c5d30){return _0x5c5d30;});var _0x3093de=_[_0x6d49('0xd4')](_0x4e6ac1)[0x0];var _0x52de1a=_['mapValues'](_0x3093de,function(_0x462296){return _0x462296;});_0x4aa002=_0x52de1a[0x1][_0x54051b[_0x6d49('0xd5')]];}var _0x117f41={'from':_0x17d390['email'],'firstName':_0x17d390[_0x6d49('0xa5')],'lastName':_0x17d390[_0x6d49('0xa6')],'mapKey':_0x6d49('0xd0'),'message':{'from':_0x17d390[_0x6d49('0xd0')],'to':_0x54051b[_0x6d49('0xbb')]['email'],'cc':'','subject':_['isNil'](_0x4aa002)?_0x54051b[_0x6d49('0xd1')]:_0x4aa002,'messageId':'','sentAt':new Date(),'attach':_0x334908[_0x6d49('0x37')],'attachments':_0x334908,'originChannel':'Chat','ChatWebsiteId':_0x54051b['id'],'ChatOfflineMessageId':_0x323d34['id'],'originTo':_0x54051b[_0x6d49('0xbb')]['email']},'body':_0x323d34[_0x6d49('0x4a')]};var _0x57215b={'account':{'id':_0x54051b['MailAccountId']},'body':_0x117f41,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x6d49('0xd6'),_0x6d49('0xd7'),_0x57215b,client9001)[_0x6d49('0x10')](function(){return _0x323d34;})[_0x6d49('0x1a')](function(_0x30f793){logger[_0x6d49('0x17')](_0x30f793);});}return;})[_0x6d49('0x10')](function(){if(_0x323d34){return _0x323d34;}})[_0x6d49('0x10')](respondWithResult(_0xb0ee18,null))[_0x6d49('0x1a')](function(_0x4289e5){logger[_0x6d49('0x17')](_0x6d49('0x1a'),_0x4289e5);for(var _0x49ae5a of _0x2d48df){var _0x444f5b=path[_0x6d49('0x66')](config[_0x6d49('0x67')],_0x6d49('0xc3'),_0x6d49('0xd8'),_0x6d49('0xc4'),_0x6d49('0xc5'),_0x49ae5a[_0x6d49('0x62')]);fs_extra[_0x6d49('0xd9')](_0x444f5b)['catch'](function(_0x2c5292){logger['error']('Could\x20not\x20remove\x20attachment\x20file',_0x444f5b,_0x2c5292);});}});};exports[_0x6d49('0xda')]=function(_0x153dcb,_0xd3e95f){return db[_0x6d49('0x9f')]['find']({'where':{'id':_0x153dcb['params']['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0xd3e95f,null))[_0x6d49('0x10')](function(_0x110a11){if(_0x110a11){return _0x110a11[_0x6d49('0xda')](_0x153dcb['body'][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x153dcb['body'],[_0x6d49('0x5e'),'id'])||{});}})['then'](respondWithResult(_0xd3e95f,null))[_0x6d49('0x1a')](handleError(_0xd3e95f,null));};exports[_0x6d49('0xdc')]=function(_0xe85258,_0x26612f){var _0x2a0b1c={'raw':![],'where':{}};var _0x5832ea={};var _0x5203f9={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')]['findOne']({'where':{'id':_0xe85258['params']['id']}})['then'](handleEntityNotFound(_0x26612f,null))[_0x6d49('0x10')](function(_0x589f3f){if(_0x589f3f){_0x5832ea[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x9f')]['rawAttributes']);_0x5832ea[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0xe85258[_0x6d49('0x32')]);_0x5832ea[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x5832ea[_0x6d49('0x31')],_0x5832ea['query']);_0x2a0b1c[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x5832ea[_0x6d49('0x31')],qs['fields'](_0xe85258[_0x6d49('0x32')][_0x6d49('0x36')]));_0x2a0b1c[_0x6d49('0x35')]=_0x2a0b1c[_0x6d49('0x35')][_0x6d49('0x37')]?_0x2a0b1c[_0x6d49('0x35')]:_0x5832ea[_0x6d49('0x31')];if(!_0xe85258[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x2a0b1c['limit']=qs[_0x6d49('0x22')](_0xe85258[_0x6d49('0x32')][_0x6d49('0x22')]);_0x2a0b1c[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0xe85258[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x2a0b1c['order']=qs['sort'](_0xe85258[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x2a0b1c[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0xe85258['query'],_0x5832ea[_0x6d49('0x33')]));_0x2a0b1c[_0x6d49('0x3c')]['ChatWebsiteId']=_0x589f3f['id'];if(_0xe85258[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x2a0b1c[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x2a0b1c[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x2a0b1c[_0x6d49('0x35')],function(_0x3c8756){var _0x388eac={};_0x388eac[_0x3c8756]={'$like':'%'+_0xe85258['query'][_0x6d49('0x3e')]+'%'};return _0x388eac;})});}_0x2a0b1c=_[_0x6d49('0x3f')]({},_0x2a0b1c,_0xe85258[_0x6d49('0x42')]);return db[_0x6d49('0x9f')][_0x6d49('0x21')]({'where':_0x2a0b1c[_0x6d49('0x3c')]})[_0x6d49('0x10')](function(_0x2c6644){_0x5203f9[_0x6d49('0x21')]=_0x2c6644;if(_0xe85258[_0x6d49('0x32')][_0x6d49('0x57')]){_0x2a0b1c['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db[_0x6d49('0xdd')],'as':_0x6d49('0xde'),'attributes':['name',_0x6d49('0xdf'),'internal'],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x6d49('0x29'),'color'],'where':_0xe85258['query'][_0x6d49('0xe0')]?{'id':_0xe85258[_0x6d49('0x32')][_0x6d49('0xe0')]}:undefined,'required':_0xe85258['query']['tag']?!![]:![]}];}return db['ChatInteraction']['findAll'](_0x2a0b1c);})[_0x6d49('0x10')](function(_0xc9c296){_0x5203f9[_0x6d49('0x43')]=_0xc9c296;return _0x5203f9;});}})['then'](respondWithFilteredResult(_0x26612f,_0x2a0b1c))[_0x6d49('0x1a')](handleError(_0x26612f,null));};function iftimePromise(_0x49dff0,_0x1f516b){return respondWithRpcPromise(_0x6d49('0xe1'),'getSnippet',{'command':_0x1f516b[_0x6d49('0xe2')]?util[_0x6d49('0x98')](_0x6d49('0xe3'),_0x49dff0[_0x6d49('0xe4')],_0x1f516b[_0x6d49('0xe2')]):util[_0x6d49('0x98')](_0x6d49('0xe5'),_0x49dff0[_0x6d49('0xe4')])},client9002)[_0x6d49('0x10')](function(_0x998b3d){var _0x28934c=_0x998b3d&&_0x998b3d[_0x6d49('0xe6')](_0x6d49('0xe7'))>=0x0?!![]:![];logger[_0x6d49('0x11')]('[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)',_0x1f516b['id'],_0x49dff0['id'],_0x49dff0[_0x6d49('0xe4')],_0x28934c?_0x6d49('0xe8'):_0x6d49('0xe9'),_0x1f516b[_0x6d49('0xe2')]?_0x1f516b[_0x6d49('0xe2')]:_0x6d49('0xea'));return _0x28934c;})[_0x6d49('0x1a')](function(_0xef8968){logger['error'](_0x6d49('0xeb'),_0x1f516b['id'],_0x49dff0['id'],_0x49dff0[_0x6d49('0xe4')],util[_0x6d49('0xec')](_0xef8968,{'showHidden':![],'depth':null}),_0x1f516b[_0x6d49('0xe2')]?_0x1f516b[_0x6d49('0xe2')]:_0x6d49('0xea'));return![];});}exports[_0x6d49('0xed')]=function(_0x180ffc,_0xed82a0){var _0xf6bcf8=0x0;var _0x5b1f89=0x0;var _0xabd945=![];var _0x26d34e;var _0x350886;return db[_0x6d49('0x2e')]['find']({'where':{'id':_0x180ffc[_0x6d49('0x45')]['id']},'include':[{'model':db['Interval'],'as':'Interval','include':[{'model':db[_0x6d49('0xee')],'as':_0x6d49('0xef'),'attributes':['id',_0x6d49('0xe4')],'raw':!![]}]}]})[_0x6d49('0x10')](handleEntityNotFound(_0xed82a0,null))[_0x6d49('0x10')](function(_0x2f2cc7){if(_0x2f2cc7){_0x26d34e=_0x2f2cc7;return _0x2f2cc7[_0x6d49('0xf0')]({'raw':!![]});}})['then'](function(_0x52dd2c){if(_0x26d34e){if(_0x52dd2c){_0x350886=_0x52dd2c;}}return require(_0x6d49('0xf1'))[_0x6d49('0xf2')]();})[_0x6d49('0x10')](function(_0x2141fe){if(_0x2141fe){_0x5b1f89=_0x2141fe[_0x6d49('0xf3')];_0xabd945=_0x2141fe[_0x6d49('0x69')];}})[_0x6d49('0x10')](function(){return db[_0x6d49('0x9f')][_0x6d49('0x21')]({'where':{'closed':![]}});})[_0x6d49('0x10')](function(_0x58f3c7){_0xf6bcf8=_0x58f3c7;if(_0x5b1f89&&_0x58f3c7>_0x5b1f89){return db['License']['findOne']({'where':{'id':0x1}})['then'](function(_0x42cd17){if(_0x42cd17){_0x42cd17[_0x6d49('0xf4')](_0x6d49('0xf5'));}});}})[_0x6d49('0x10')](function(){if(_0x26d34e[_0x6d49('0xee')]&&_0x26d34e['Interval'][_0x6d49('0xef')]){var _0x13d942=[];for(var _0x40df8e=0x0;_0x40df8e<_0x26d34e[_0x6d49('0xee')]['Intervals']['length'];_0x40df8e++){var _0x43b9a6=_0x26d34e[_0x6d49('0xee')][_0x6d49('0xef')][_0x40df8e][_0x6d49('0x25')]({'plain':!![]});_0x13d942['push'](iftimePromise(_0x43b9a6,_0x26d34e));}return BPromise[_0x6d49('0xf6')](_0x13d942)[_0x6d49('0x10')](function(_0x3197a9){return _[_0x6d49('0xf7')](_0x3197a9);});}else{return!![];}})[_0x6d49('0x10')](function(_0x3f2897){var _0x31b164=fs['readFileSync'](path[_0x6d49('0x66')](config['root'],'server/files/chat/iframe.ejs'),_0x6d49('0xbc'));var _0x4f4d4d={'remote':_0x26d34e['remote'],'query':querystring[_0x6d49('0x16')](_[_0x6d49('0x3f')](_0x26d34e[_0x6d49('0x25')]({'plain':!![]}),{'customerIp':_0x180ffc[_0x6d49('0x75')]['x-forwarded-for']||_0x180ffc[_0x6d49('0x75')][_0x6d49('0xf8')]||_0x180ffc[_0x6d49('0xf9')][_0x6d49('0xfa')]||_0x180ffc['ip'],'referer':_0x180ffc[_0x6d49('0x75')][_0x6d49('0x95')],'openedInteractions':_0xf6bcf8,'maxInteractions':_0x5b1f89,'virtual':_0xabd945[_0x6d49('0xf3')],'online':_0x3f2897,'custom':_0xabd945}))[_0x6d49('0xfb')](/'/g,'\x5c\x27')};_0xed82a0[_0x6d49('0x2a')](ejs['render'](Mustache[_0x6d49('0xbd')](_0x31b164,_0x4f4d4d),{'proactiveActions':_0x350886,'alignment':_0x26d34e[_0x6d49('0xfc')],'verticalAlignment':_0x26d34e[_0x6d49('0xfd')],'div_color':_0x26d34e[_0x6d49('0xfe')],'labelText':_0x26d34e[_0x6d49('0xff')],'text_color':_0x26d34e[_0x6d49('0x100')],'text_button_color':_0x26d34e[_0x6d49('0x101')],'button_color':_0x26d34e[_0x6d49('0x102')],'background_color':_0x26d34e['backgroundColor'],'hideWhenOffline':_0x26d34e[_0x6d49('0x103')],'interval':_0x26d34e['IntervalId']}));})[_0x6d49('0x1a')](handleError(_0xed82a0,null));};exports[_0x6d49('0x104')]=function(_0x4ba60e,_0x2d53bd){var _0x471417=_0x4ba60e[_0x6d49('0x45')]['id'];var _0x4560dc=_0x4ba60e['body'];var _0x8efbf0=0xc8;var _0x5a55e2=null;return db[_0x6d49('0xc6')][_0x6d49('0xc7')]({'isolationLevel':db['sequelize']['Transaction'][_0x6d49('0x105')][_0x6d49('0x106')]},function(_0x44372b){return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x471417},'transaction':_0x44372b})[_0x6d49('0x10')](function(_0x519ef0){if(_0x519ef0){return db['ChatApplication'][_0x6d49('0x27')]({'where':{'ChatWebsiteId':_0x471417},'transaction':_0x44372b})[_0x6d49('0x10')](function(){var _0x3e3f90=_[_0x6d49('0x2d')](_0x4560dc,function(_0x460d51){_0x460d51[_0x6d49('0x53')]=_0x471417;return _0x460d51;});return db[_0x6d49('0x107')][_0x6d49('0xc9')](_0x3e3f90,{'transaction':_0x44372b});});}else{_0x8efbf0=0x194;_0x5a55e2=[];}});})[_0x6d49('0x10')](function(){if(_0x8efbf0!==0x194){return db[_0x6d49('0x107')][_0x6d49('0x108')]({'where':{'ChatWebsiteId':_0x471417},'order':_0x6d49('0x8e')})[_0x6d49('0x10')](function(_0x318cb4){_0x5a55e2=_0x318cb4;});}})[_0x6d49('0x1a')](function(_0x53f455){_0x8efbf0=0x1f4;logger[_0x6d49('0x17')](_0x53f455[_0x6d49('0x28')]);if(_0x53f455[_0x6d49('0x29')]){delete _0x53f455[_0x6d49('0x29')];}_0x5a55e2=_0x53f455;})['finally'](function(){if(_0x5a55e2===null){_0x2d53bd[_0x6d49('0x1b')](_0x8efbf0);}else{if(_0x8efbf0===0x1f4){_0x2d53bd[_0x6d49('0x1d')](_0x8efbf0)['send'](_0x5a55e2);}else{_0x2d53bd[_0x6d49('0x1d')](_0x8efbf0)[_0x6d49('0x1e')](_0x5a55e2);}}});};exports[_0x6d49('0x109')]=function(_0x1b6276,_0x2254c3){var _0x3c8877={};var _0xc21f3e={};var _0xfa78dc;var _0xb0ddd0;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x1b6276[_0x6d49('0x45')]['id']}})['then'](handleEntityNotFound(_0x2254c3,null))[_0x6d49('0x10')](function(_0x167801){if(_0x167801){_0xfa78dc=_0x167801;_0xc21f3e[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['ChatApplication'][_0x6d49('0x2f')]);_0xc21f3e[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x1b6276[_0x6d49('0x32')]);_0xc21f3e[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0xc21f3e[_0x6d49('0x31')],_0xc21f3e[_0x6d49('0x32')]);_0x3c8877['attributes']=_[_0x6d49('0x34')](_0xc21f3e[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x1b6276['query'][_0x6d49('0x36')]));_0x3c8877[_0x6d49('0x35')]=_0x3c8877[_0x6d49('0x35')][_0x6d49('0x37')]?_0x3c8877[_0x6d49('0x35')]:_0xc21f3e[_0x6d49('0x31')];_0x3c8877[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x1b6276[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x3c8877['where']=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x1b6276[_0x6d49('0x32')],_0xc21f3e[_0x6d49('0x33')]));if(_0x1b6276['query']['filter']){_0x3c8877['where']=_[_0x6d49('0x3f')](_0x3c8877[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x3c8877[_0x6d49('0x35')],function(_0x2d5ed7){var _0x2b02f4={};_0x2b02f4[_0x2d5ed7]={'$like':'%'+_0x1b6276[_0x6d49('0x32')][_0x6d49('0x3e')]+'%'};return _0x2b02f4;})});}_0x3c8877=_['merge']({},_0x3c8877,_0x1b6276[_0x6d49('0x42')]);return _0xfa78dc[_0x6d49('0x109')](_0x3c8877);}})[_0x6d49('0x10')](function(_0x223c34){if(_0x223c34){_0xb0ddd0=_0x223c34[_0x6d49('0x37')];if(!_0x1b6276[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x3c8877['limit']=qs['limit'](_0x1b6276[_0x6d49('0x32')]['limit']);_0x3c8877[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x1b6276[_0x6d49('0x32')][_0x6d49('0x1f')]);}return _0xfa78dc[_0x6d49('0x109')](_0x3c8877);}})[_0x6d49('0x10')](function(_0x30dfe2){if(_0x30dfe2){return _0x30dfe2?{'count':_0xb0ddd0,'rows':_0x30dfe2}:null;}})[_0x6d49('0x10')](respondWithResult(_0x2254c3,null))['catch'](handleError(_0x2254c3,null));};exports[_0x6d49('0x10a')]=function(_0x19c39f,_0x198daa){return db[_0x6d49('0x10b')]['find']({'where':{'id':_0x19c39f[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x198daa,null))[_0x6d49('0x10')](function(_0x2d8f7b){if(_0x2d8f7b){return _0x2d8f7b['addProactiveActions'](_0x19c39f[_0x6d49('0x4a')][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x19c39f['body'],[_0x6d49('0x5e'),'id'])||{});}})[_0x6d49('0x10')](respondWithResult(_0x198daa,null))[_0x6d49('0x1a')](handleError(_0x198daa,null));};exports[_0x6d49('0xf0')]=function(_0x210dfc,_0x8d9680){var _0x5e94c2={};var _0x5a9b12={};var _0x433986;var _0x1ae23e;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x210dfc[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x8d9680,null))[_0x6d49('0x10')](function(_0x15537e){if(_0x15537e){_0x433986=_0x15537e;_0x5a9b12[_0x6d49('0x31')]=_[_0x6d49('0x46')](db[_0x6d49('0x10c')][_0x6d49('0x2f')]);_0x5a9b12[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x210dfc[_0x6d49('0x32')]);_0x5a9b12[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x5a9b12[_0x6d49('0x31')],_0x5a9b12[_0x6d49('0x32')]);_0x5e94c2['attributes']=_[_0x6d49('0x34')](_0x5a9b12[_0x6d49('0x31')],qs['fields'](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x36')]));_0x5e94c2[_0x6d49('0x35')]=_0x5e94c2[_0x6d49('0x35')][_0x6d49('0x37')]?_0x5e94c2[_0x6d49('0x35')]:_0x5a9b12[_0x6d49('0x31')];_0x5e94c2[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x5e94c2[_0x6d49('0x3c')]=qs[_0x6d49('0x33')](_[_0x6d49('0x3d')](_0x210dfc[_0x6d49('0x32')],_0x5a9b12[_0x6d49('0x33')]));if(_0x210dfc['query'][_0x6d49('0x3e')]){_0x5e94c2[_0x6d49('0x3c')]=_['merge'](_0x5e94c2[_0x6d49('0x3c')],{'$or':_[_0x6d49('0x2d')](_0x5e94c2['attributes'],function(_0x590a33){var _0x53f55d={};_0x53f55d[_0x590a33]={'$like':'%'+_0x210dfc['query'][_0x6d49('0x3e')]+'%'};return _0x53f55d;})});}_0x5e94c2=_['merge']({},_0x5e94c2,_0x210dfc[_0x6d49('0x42')]);return _0x433986[_0x6d49('0xf0')](_0x5e94c2);}})[_0x6d49('0x10')](function(_0x77e0dd){if(_0x77e0dd){_0x1ae23e=_0x77e0dd['length'];if(!_0x210dfc[_0x6d49('0x32')][_0x6d49('0x38')](_0x6d49('0x39'))){_0x5e94c2[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x210dfc[_0x6d49('0x32')][_0x6d49('0x22')]);_0x5e94c2[_0x6d49('0x1f')]=qs[_0x6d49('0x1f')](_0x210dfc['query'][_0x6d49('0x1f')]);}return _0x433986['getProactiveActions'](_0x5e94c2);}})[_0x6d49('0x10')](function(_0x2bc67f){if(_0x2bc67f){return _0x2bc67f?{'count':_0x1ae23e,'rows':_0x2bc67f}:null;}})[_0x6d49('0x10')](respondWithResult(_0x8d9680,null))[_0x6d49('0x1a')](handleError(_0x8d9680,null));};exports[_0x6d49('0x10d')]=function(_0x579d41,_0x382a69){var _0x5ab65f=_0x579d41[_0x6d49('0x32')][_0x6d49('0x10e')]===_0x6d49('0x10f')?_0x6d49('0x110'):_0x6d49('0x111');return db[_0x6d49('0x2e')]['find']({'attributes':['id',_0x5ab65f],'where':{'id':_0x579d41['params']['id']}})['then'](handleEntityNotFound(_0x382a69,null))['then'](function(_0xef9a7a){if(_0xef9a7a){var _0x2ccf8d=_0xef9a7a[_0x5ab65f];var _0x37e131=_0x2ccf8d&&_0x2ccf8d['items']?_0x2ccf8d[_0x6d49('0x112')]:[];_0x382a69['send']({'fromKey':_[_0x6d49('0x6a')](_0x2ccf8d[_0x6d49('0x113')])?undefined:_0x2ccf8d[_0x6d49('0x113')],'count':_0x37e131['length'],'rows':_0x37e131});}})['catch'](handleError(_0x382a69,null));};exports[_0x6d49('0x114')]=function(_0x2fbd67,_0xd96d46){var _0x17ff82={'raw':![],'where':{}};var _0x14787b={};var _0x524219={'count':0x0,'rows':[]};return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x2fbd67['params']['id']}})['then'](handleEntityNotFound(_0xd96d46,null))[_0x6d49('0x10')](function(_0x1eef76){if(_0x1eef76){_0x14787b[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['ChatOfflineMessage'][_0x6d49('0x2f')]);_0x14787b[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x2fbd67[_0x6d49('0x32')]);_0x14787b[_0x6d49('0x33')]=_[_0x6d49('0x34')](_0x14787b[_0x6d49('0x31')],_0x14787b[_0x6d49('0x32')]);_0x17ff82['attributes']=_[_0x6d49('0x34')](_0x14787b['model'],qs[_0x6d49('0x36')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x36')]));_0x17ff82[_0x6d49('0x35')]=_0x17ff82['attributes'][_0x6d49('0x37')]?_0x17ff82[_0x6d49('0x35')]:_0x14787b[_0x6d49('0x31')];if(!_0x2fbd67[_0x6d49('0x32')]['hasOwnProperty']('nolimit')){_0x17ff82['limit']=qs[_0x6d49('0x22')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x22')]);_0x17ff82['offset']=qs[_0x6d49('0x1f')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x1f')]);}_0x17ff82[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x3b')]);_0x17ff82[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x2fbd67[_0x6d49('0x32')],_0x14787b[_0x6d49('0x33')]));_0x17ff82[_0x6d49('0x3c')]['ChatWebsiteId']=_0x1eef76['id'];if(_0x2fbd67[_0x6d49('0x32')][_0x6d49('0x3e')]){_0x17ff82['where']=_['merge'](_0x17ff82[_0x6d49('0x3c')],{'$or':_['map'](_0x17ff82[_0x6d49('0x35')],function(_0x113ada){var _0x32643f={};_0x32643f[_0x113ada]={'$like':'%'+_0x2fbd67['query']['filter']+'%'};return _0x32643f;})});}_0x17ff82=_[_0x6d49('0x3f')]({},_0x17ff82,_0x2fbd67['options']);return db[_0x6d49('0xc0')]['count']({'where':_0x17ff82[_0x6d49('0x3c')]})['then'](function(_0x35eae1){_0x524219[_0x6d49('0x21')]=_0x35eae1;if(_0x2fbd67['query']['includeAll']){_0x17ff82[_0x6d49('0x47')]=[{'all':!![]}];}else{_0x17ff82[_0x6d49('0x47')]=[{'model':db[_0x6d49('0x78')],'as':_0x6d49('0x115'),'required':![]},{'model':db[_0x6d49('0xc8')],'as':_0x6d49('0x116'),'required':![]}];}return db[_0x6d49('0xc0')][_0x6d49('0x58')](_0x17ff82);})[_0x6d49('0x10')](function(_0x500204){_0x524219[_0x6d49('0x43')]=_0x500204;return _0x524219;});}})['then'](respondWithFilteredResult(_0xd96d46,_0x17ff82))[_0x6d49('0x1a')](handleError(_0xd96d46,null));};exports[_0x6d49('0x117')]=function(_0x3483d8,_0x3e39d0){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0x3483d8[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x3e39d0,null))[_0x6d49('0x10')](function(_0x599b18){if(_0x599b18){return _0x599b18[_0x6d49('0x117')](_0x3483d8['body'][_0x6d49('0x5e')],_[_0x6d49('0xdb')](_0x3483d8[_0x6d49('0x4a')],[_0x6d49('0x5e'),'id'])||{})[_0x6d49('0xa3')](function(_0x41d9f9){for(var _0x5b2010=0x0;_0x5b2010<_0x3483d8[_0x6d49('0x4a')][_0x6d49('0x5e')][_0x6d49('0x37')];_0x5b2010+=0x1){socket[_0x6d49('0x118')](_0x6d49('0x119'),{'UserId':Number(_0x3483d8[_0x6d49('0x4a')][_0x6d49('0x5e')][_0x5b2010]),'ChatWebsiteId':Number(_0x3483d8[_0x6d49('0x45')]['id'])});}return _0x41d9f9;});}})[_0x6d49('0x10')](respondWithResult(_0x3e39d0,null))[_0x6d49('0x1a')](handleError(_0x3e39d0,null));};exports[_0x6d49('0x11a')]=function(_0xd7d577,_0x5636c2){return db[_0x6d49('0x2e')][_0x6d49('0x48')]({'where':{'id':_0xd7d577[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x5636c2,null))['then'](function(_0x491431){if(_0x491431){return _0x491431[_0x6d49('0x11a')](_0xd7d577['query'][_0x6d49('0x5e')])[_0x6d49('0x10')](function(){if(_[_0x6d49('0x11b')](_0xd7d577['query']['ids'])){for(var _0x13cac8=0x0;_0x13cac8<_0xd7d577[_0x6d49('0x32')][_0x6d49('0x5e')][_0x6d49('0x37')];_0x13cac8+=0x1){socket[_0x6d49('0x118')]('userChatWebsite:remove',{'UserId':Number(_0xd7d577[_0x6d49('0x32')][_0x6d49('0x5e')][_0x13cac8]),'ChatWebsiteId':Number(_0xd7d577[_0x6d49('0x45')]['id'])});}}else{socket[_0x6d49('0x118')](_0x6d49('0x11c'),{'UserId':Number(_0xd7d577[_0x6d49('0x32')]['ids']),'ChatWebsiteId':Number(_0xd7d577[_0x6d49('0x45')]['id'])});}});}})[_0x6d49('0x10')](respondWithStatusCode(_0x5636c2,null))[_0x6d49('0x1a')](handleError(_0x5636c2,null));};exports[_0x6d49('0x11d')]=function(_0x210688,_0x55ebb3){var _0x1cd3ca={};var _0x30b06e={};var _0x43d388;var _0x4525a0;return db[_0x6d49('0x2e')][_0x6d49('0x56')]({'where':{'id':_0x210688[_0x6d49('0x45')]['id']}})[_0x6d49('0x10')](handleEntityNotFound(_0x55ebb3,null))[_0x6d49('0x10')](function(_0x556b76){if(_0x556b76){_0x43d388=_0x556b76;_0x30b06e[_0x6d49('0x31')]=_[_0x6d49('0x46')](db['User'][_0x6d49('0x2f')]);_0x30b06e[_0x6d49('0x32')]=_[_0x6d49('0x46')](_0x210688['query']);_0x30b06e['filters']=_[_0x6d49('0x34')](_0x30b06e[_0x6d49('0x31')],_0x30b06e['query']);_0x1cd3ca[_0x6d49('0x35')]=_[_0x6d49('0x34')](_0x30b06e[_0x6d49('0x31')],qs[_0x6d49('0x36')](_0x210688[_0x6d49('0x32')][_0x6d49('0x36')]));_0x1cd3ca[_0x6d49('0x35')]=_0x1cd3ca[_0x6d49('0x35')][_0x6d49('0x37')]?_0x1cd3ca[_0x6d49('0x35')]:_0x30b06e['model'];_0x1cd3ca[_0x6d49('0x3a')]=qs[_0x6d49('0x3b')](_0x210688[_0x6d49('0x32')]['sort']);_0x1cd3ca[_0x6d49('0x3c')]=qs['filters'](_[_0x6d49('0x3d')](_0x210688['query'],_0x30b06e[_0x6d49('0x33')]));if(_0x210688['query'][_0x6d49('0x3e')]){_0x1cd3ca[_0x6d49('0x3c')]=_[_0x6d49('0x3f')](_0x1cd3ca[_0x6d49('0x3c')],{'$or':_['map'](_0x1cd3ca[_0x6d49('0x35')],function(_0x4d31df){var _0x54e562={};_0x54e562[_0x4d31df]={'$like':'%'+_0x210688['query']['filter']+'%'};return _0x54e562;})});}_0x1cd3ca=_[_0x6d49('0x3f')]({},_0x1cd3ca,_0x210688[_0x6d49('0x42')]);return _0x43d388[_0x6d49('0x11d')](_0x1cd3ca);}})[_0x6d49('0x10')](function(_0x48c525){if(_0x48c525){_0x4525a0=_0x48c525[_0x6d49('0x37')];if(!_0x210688['query'][_0x6d49('0x38')]('nolimit')){_0x1cd3ca[_0x6d49('0x22')]=qs[_0x6d49('0x22')](_0x210688['query'][_0x6d49('0x22')]);_0x1cd3ca['offset']=qs[_0x6d49('0x1f')](_0x210688[_0x6d49('0x32')][_0x6d49('0x1f')]);}return _0x43d388[_0x6d49('0x11d')](_0x1cd3ca);}})['then'](function(_0xb71105){if(_0xb71105){return _0xb71105?{'count':_0x4525a0,'rows':_0xb71105}:null;}})[_0x6d49('0x10')](respondWithResult(_0x55ebb3,null))[_0x6d49('0x1a')](handleError(_0x55ebb3,null));};
\ No newline at end of file
index 8daa25a..78c8d64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeddd=['setMaxListeners','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatWebsite'];(function(_0x44d85d,_0x477ae2){var _0x55f365=function(_0x84b597){while(--_0x84b597){_0x44d85d['push'](_0x44d85d['shift']());}};_0x55f365(++_0x477ae2);}(_0xeddd,0x69));var _0xdedd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xeddd[_0x2641f9];return _0x585741;};'use strict';var EventEmitter=require(_0xdedd('0x0'));var ChatWebsite=require(_0xdedd('0x1'))['db'][_0xdedd('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xdedd('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xdedd('0x4'),'afterDestroy':'remove'};function emitEvent(_0x10de65){return function(_0xd2ff49,_0x56e22a,_0x37b819){ChatWebsiteEvents[_0xdedd('0x5')](_0x10de65+':'+_0xd2ff49['id'],_0xd2ff49);ChatWebsiteEvents[_0xdedd('0x5')](_0x10de65,_0xd2ff49);_0x37b819(null);};}for(var e in events){if(events[_0xdedd('0x6')](e)){var event=events[e];ChatWebsite[_0xdedd('0x7')](e,emitEvent(event));}}module[_0xdedd('0x8')]=ChatWebsiteEvents;
\ No newline at end of file
+var _0x294b=['events','ChatWebsite','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x460b0b,_0x2ddfc0){var _0x2a02c3=function(_0x401aba){while(--_0x401aba){_0x460b0b['push'](_0x460b0b['shift']());}};_0x2a02c3(++_0x2ddfc0);}(_0x294b,0xea));var _0xb294=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x294b[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb294('0x0'));var ChatWebsite=require('../../mysqldb')['db'][_0xb294('0x1')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xb294('0x2')](0x0);var events={'afterCreate':_0xb294('0x3'),'afterUpdate':_0xb294('0x4'),'afterDestroy':_0xb294('0x5')};function emitEvent(_0x417648){return function(_0x58fe24,_0x5c0237,_0xba5c68){ChatWebsiteEvents[_0xb294('0x6')](_0x417648+':'+_0x58fe24['id'],_0x58fe24);ChatWebsiteEvents[_0xb294('0x6')](_0x417648,_0x58fe24);_0xba5c68(null);};}for(var e in events){if(events[_0xb294('0x7')](e)){var event=events[e];ChatWebsite[_0xb294('0x8')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
index 045c761..9358695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x725d=['define','chat_websites','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatWebsite.attributes','exports'];(function(_0x5ee0ee,_0x3ce413){var _0x198093=function(_0x29dcc9){while(--_0x29dcc9){_0x5ee0ee['push'](_0x5ee0ee['shift']());}};_0x198093(++_0x3ce413);}(_0x725d,0x1ec));var _0xd725=function(_0x1deff2,_0x4a9388){_0x1deff2=_0x1deff2-0x0;var _0x5a651c=_0x725d[_0x1deff2];return _0x5a651c;};'use strict';var _=require(_0xd725('0x0'));var util=require(_0xd725('0x1'));var logger=require(_0xd725('0x2'))(_0xd725('0x3'));var moment=require(_0xd725('0x4'));var BPromise=require(_0xd725('0x5'));var rp=require(_0xd725('0x6'));var fs=require('fs');var path=require(_0xd725('0x7'));var rimraf=require(_0xd725('0x8'));var config=require(_0xd725('0x9'));var attributes=require(_0xd725('0xa'));module[_0xd725('0xb')]=function(_0x421ef8,_0x2c7da0){return _0x421ef8[_0xd725('0xc')]('ChatWebsite',attributes,{'tableName':_0xd725('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf9fc=['define','ChatWebsite','chat_websites','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x4e05df,_0x53eb7f){var _0x48b67d=function(_0x5cf362){while(--_0x5cf362){_0x4e05df['push'](_0x4e05df['shift']());}};_0x48b67d(++_0x53eb7f);}(_0xf9fc,0x1bd));var _0xcf9f=function(_0x10e2b1,_0x3ac400){_0x10e2b1=_0x10e2b1-0x0;var _0x43442a=_0xf9fc[_0x10e2b1];return _0x43442a;};'use strict';var _=require(_0xcf9f('0x0'));var util=require(_0xcf9f('0x1'));var logger=require(_0xcf9f('0x2'))(_0xcf9f('0x3'));var moment=require(_0xcf9f('0x4'));var BPromise=require('bluebird');var rp=require(_0xcf9f('0x5'));var fs=require('fs');var path=require(_0xcf9f('0x6'));var rimraf=require(_0xcf9f('0x7'));var config=require(_0xcf9f('0x8'));var attributes=require('./chatWebsite.attributes');module[_0xcf9f('0x9')]=function(_0x5f220f,_0x115f04){return _0x5f220f[_0xcf9f('0xa')](_0xcf9f('0xb'),attributes,{'tableName':_0xcf9f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 728319e..1cb9209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x924d=['error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./chatWebsite.socket','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent'];(function(_0x136846,_0xc9ba49){var _0x16e0d2=function(_0x1d7824){while(--_0x1d7824){_0x136846['push'](_0x136846['shift']());}};_0x16e0d2(++_0xc9ba49);}(_0x924d,0x1e5));var _0xd924=function(_0x27b7d2,_0x56c091){_0x27b7d2=_0x27b7d2-0x0;var _0x3ef6be=_0x924d[_0x27b7d2];return _0x3ef6be;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xd924('0x0'));var BPromise=require(_0xd924('0x1'));var rs=require(_0xd924('0x2'));var fs=require('fs');var Redis=require(_0xd924('0x3'));var db=require(_0xd924('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd924('0x5'))(_0xd924('0x6'));var config=require(_0xd924('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xd924('0x8')][_0xd924('0x9')]({'port':0x232a});config[_0xd924('0xa')]=_['defaults'](config[_0xd924('0xa')],{'host':_0xd924('0xb'),'port':0x18eb});var socket=require(_0xd924('0xc'))(new Redis(config[_0xd924('0xa')]));require(_0xd924('0xd'))['register'](socket);function respondWithRpcPromise(_0x5180b3,_0xbb629a,_0x164730){return new BPromise(function(_0x5399a2,_0x53e22a){return client[_0xd924('0xe')](_0x5180b3,_0x164730)[_0xd924('0xf')](function(_0x9bd609){logger[_0xd924('0x10')](_0xd924('0x11'),_0xbb629a,_0xd924('0x12'));logger['debug']('ChatWebsite,\x20%s,\x20%s,\x20%s',_0xbb629a,_0xd924('0x12'),JSON['stringify'](_0x9bd609));if(_0x9bd609[_0xd924('0x13')]){if(_0x9bd609[_0xd924('0x13')][_0xd924('0x14')]===0x1f4){logger[_0xd924('0x13')](_0xd924('0x11'),_0xbb629a,_0x9bd609[_0xd924('0x13')]['message']);return _0x53e22a(_0x9bd609[_0xd924('0x13')]['message']);}logger[_0xd924('0x13')](_0xd924('0x11'),_0xbb629a,_0x9bd609[_0xd924('0x13')][_0xd924('0x15')]);return _0x5399a2(_0x9bd609[_0xd924('0x13')][_0xd924('0x15')]);}else{logger[_0xd924('0x10')](_0xd924('0x11'),_0xbb629a,'request\x20sent');_0x5399a2(_0x9bd609[_0xd924('0x16')][_0xd924('0x15')]);}})[_0xd924('0x17')](function(_0x33d093){logger[_0xd924('0x13')](_0xd924('0x11'),_0xbb629a,_0x33d093);_0x53e22a(_0x33d093);});});}
\ No newline at end of file
+var _0xd142=['code','message','request\x20sent','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','ChatWebsite,\x20%s,\x20%s','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0xd142,0x17b));var _0x2d14=function(_0x121195,_0x2cd8b8){_0x121195=_0x121195-0x0;var _0x363aea=_0xd142[_0x121195];return _0x363aea;};'use strict';var _=require(_0x2d14('0x0'));var util=require('util');var moment=require(_0x2d14('0x1'));var BPromise=require('bluebird');var rs=require(_0x2d14('0x2'));var fs=require('fs');var Redis=require(_0x2d14('0x3'));var db=require(_0x2d14('0x4'))['db'];var utils=require(_0x2d14('0x5'));var logger=require(_0x2d14('0x6'))('rpc');var config=require(_0x2d14('0x7'));var jayson=require(_0x2d14('0x8'));var client=jayson[_0x2d14('0x9')]['http']({'port':0x232a});config[_0x2d14('0xa')]=_['defaults'](config[_0x2d14('0xa')],{'host':_0x2d14('0xb'),'port':0x18eb});var socket=require(_0x2d14('0xc'))(new Redis(config['redis']));require('./chatWebsite.socket')['register'](socket);function respondWithRpcPromise(_0x3bdf3b,_0x1a22e3,_0x399191){return new BPromise(function(_0xb98bf1,_0x5ca4f4){return client['request'](_0x3bdf3b,_0x399191)['then'](function(_0x1d3ac5){logger['info'](_0x2d14('0xd'),_0x1a22e3,'request\x20sent');logger[_0x2d14('0xe')](_0x2d14('0xf'),_0x1a22e3,'request\x20sent',JSON['stringify'](_0x1d3ac5));if(_0x1d3ac5[_0x2d14('0x10')]){if(_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x11')]===0x1f4){logger[_0x2d14('0x10')]('ChatWebsite,\x20%s,\x20%s',_0x1a22e3,_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);return _0x5ca4f4(_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);}logger['error'](_0x2d14('0xd'),_0x1a22e3,_0x1d3ac5[_0x2d14('0x10')][_0x2d14('0x12')]);return _0xb98bf1(_0x1d3ac5['error'][_0x2d14('0x12')]);}else{logger['info'](_0x2d14('0xd'),_0x1a22e3,_0x2d14('0x13'));_0xb98bf1(_0x1d3ac5[_0x2d14('0x14')][_0x2d14('0x12')]);}})[_0x2d14('0x15')](function(_0x35c9cf){logger[_0x2d14('0x10')](_0x2d14('0xd'),_0x1a22e3,_0x35c9cf);_0x5ca4f4(_0x35c9cf);});});}
\ No newline at end of file
index e68254e..5447216 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0d4e=['./chatWebsite.events','remove','emit','length','chatWebsite:'];(function(_0x14483e,_0x8b1ff0){var _0xa529a2=function(_0x124f68){while(--_0x124f68){_0x14483e['push'](_0x14483e['shift']());}};_0xa529a2(++_0x8b1ff0);}(_0x0d4e,0x1d6));var _0xe0d4=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x0d4e[_0x57b54c];return _0x59cc19;};'use strict';var ChatWebsiteEvents=require(_0xe0d4('0x0'));var events=['save',_0xe0d4('0x1'),'update'];function createListener(_0x4a6712,_0x50d1b3){return function(_0x2a5d6e){_0x50d1b3[_0xe0d4('0x2')](_0x4a6712,_0x2a5d6e);};}function removeListener(_0x4184b0,_0xe88038){return function(){ChatWebsiteEvents['removeListener'](_0x4184b0,_0xe88038);};}exports['register']=function(_0x3bc2c5){for(var _0x2abe9e=0x0,_0x325f75=events[_0xe0d4('0x3')];_0x2abe9e<_0x325f75;_0x2abe9e++){var _0x4c5ef6=events[_0x2abe9e];var _0x52d7a6=createListener(_0xe0d4('0x4')+_0x4c5ef6,_0x3bc2c5);ChatWebsiteEvents['on'](_0x4c5ef6,_0x52d7a6);}};
\ No newline at end of file
+var _0x0f2d=['save','remove','emit','register','chatWebsite:','./chatWebsite.events'];(function(_0x4da624,_0x363498){var _0x405bfd=function(_0x4459a1){while(--_0x4459a1){_0x4da624['push'](_0x4da624['shift']());}};_0x405bfd(++_0x363498);}(_0x0f2d,0x83));var _0xd0f2=function(_0x45f6a3,_0x1ba71d){_0x45f6a3=_0x45f6a3-0x0;var _0x4a4eaf=_0x0f2d[_0x45f6a3];return _0x4a4eaf;};'use strict';var ChatWebsiteEvents=require(_0xd0f2('0x0'));var events=[_0xd0f2('0x1'),_0xd0f2('0x2'),'update'];function createListener(_0x104aa2,_0x598787){return function(_0x1fcb8d){_0x598787[_0xd0f2('0x3')](_0x104aa2,_0x1fcb8d);};}function removeListener(_0x19c79b,_0x287c85){return function(){ChatWebsiteEvents['removeListener'](_0x19c79b,_0x287c85);};}exports[_0xd0f2('0x4')]=function(_0x17d907){for(var _0x2c0398=0x0,_0x191fa5=events['length'];_0x2c0398<_0x191fa5;_0x2c0398++){var _0x2cf44b=events[_0x2c0398];var _0x3cbaba=createListener(_0xd0f2('0x5')+_0x2cf44b,_0x17d907);ChatWebsiteEvents['on'](_0x2cf44b,_0x3cbaba);}};
\ No newline at end of file
index 689e8d6..fa797b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0be=['%s-%s','now','originalname','single','file','addLogo','server/files/images/avatars/','/:id/avatar','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','replace','extname','/:id/offline','offline','/:id/interactions','addInteraction','addProactiveActions','/:id/users','addAgents','put','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','getAvatar','/:id/system_avatar','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','/:id/proactive_actions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','getAgents','create','addDisposition','post','diskStorage','join','root','server/files/images/logos/','format'];(function(_0x514d7a,_0x4a76cd){var _0x42e333=function(_0x278166){while(--_0x278166){_0x514d7a['push'](_0x514d7a['shift']());}};_0x42e333(++_0x4a76cd);}(_0xa0be,0xfb));var _0xea0b=function(_0x25ca14,_0x36ce01){_0x25ca14=_0x25ca14-0x0;var _0x92f71=_0xa0be[_0x25ca14];return _0x92f71;};'use strict';var multer=require('multer');var util=require(_0xea0b('0x0'));var path=require('path');var timeout=require(_0xea0b('0x1'));var express=require('express');var router=express[_0xea0b('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xea0b('0x3'));var interaction=require(_0xea0b('0x4'));var config=require(_0xea0b('0x5'));var controller=require(_0xea0b('0x6'));router[_0xea0b('0x7')]('/',auth[_0xea0b('0x8')](),controller[_0xea0b('0x9')]);router[_0xea0b('0x7')](_0xea0b('0xa'),auth['isAuthenticated'](),controller[_0xea0b('0xb')]);router[_0xea0b('0x7')](_0xea0b('0xc'),auth['isAuthenticated'](),controller[_0xea0b('0xd')]);router[_0xea0b('0x7')](_0xea0b('0xe'),auth[_0xea0b('0x8')](),controller[_0xea0b('0xf')]);router[_0xea0b('0x7')](_0xea0b('0x10'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x11')]);router[_0xea0b('0x7')](_0xea0b('0x12'),controller[_0xea0b('0x13')]);router[_0xea0b('0x7')]('/:id/avatar',controller[_0xea0b('0x14')]);router[_0xea0b('0x7')]('/:id/customer_avatar',controller['getCustomerAvatar']);router[_0xea0b('0x7')](_0xea0b('0x15'),controller['getSystemAvatar']);router[_0xea0b('0x7')]('/:id/interactions',auth[_0xea0b('0x8')](),controller[_0xea0b('0x16')]);router[_0xea0b('0x7')](_0xea0b('0x17'),controller[_0xea0b('0x18')]);router[_0xea0b('0x7')](_0xea0b('0x19'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x1a')]);router['get'](_0xea0b('0x1b'),auth[_0xea0b('0x8')](),controller['getProactiveActions']);router[_0xea0b('0x7')](_0xea0b('0x1c'),controller[_0xea0b('0x1d')]);router[_0xea0b('0x7')](_0xea0b('0x1e'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x1f')]);router[_0xea0b('0x7')]('/:id/users',auth[_0xea0b('0x8')](),controller[_0xea0b('0x20')]);router['post']('/',auth[_0xea0b('0x8')](),controller[_0xea0b('0x21')]);router['post']('/:id/dispositions',auth[_0xea0b('0x8')](),controller[_0xea0b('0x22')]);router[_0xea0b('0x23')](_0xea0b('0x10'),auth[_0xea0b('0x8')](),controller['addAnswer']);var upload=multer({'storage':multer[_0xea0b('0x24')]({'destination':function(_0x5058db,_0x6157e0,_0x32a95b){_0x32a95b(null,path[_0xea0b('0x25')](config[_0xea0b('0x26')],_0xea0b('0x27')));},'filename':function(_0x55c168,_0x370c1c,_0x4d600a){_0x4d600a(null,util[_0xea0b('0x28')](_0xea0b('0x29'),Date[_0xea0b('0x2a')](),_0x370c1c[_0xea0b('0x2b')]));}})});router[_0xea0b('0x23')](_0xea0b('0x12'),upload[_0xea0b('0x2c')](_0xea0b('0x2d')),controller[_0xea0b('0x2e')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4138ba,_0x4c4330,_0x3ec688){_0x3ec688(null,path[_0xea0b('0x25')](config['root'],_0xea0b('0x2f')));},'filename':function(_0x11e490,_0x1b8ff2,_0xec078){_0xec078(null,util[_0xea0b('0x28')](_0xea0b('0x29'),Date['now'](),_0x1b8ff2[_0xea0b('0x2b')]));}})});router[_0xea0b('0x23')](_0xea0b('0x30'),upload['single'](_0xea0b('0x2d')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3e0900,_0x37bb5d,_0x233170){_0x233170(null,path[_0xea0b('0x25')](config['root'],_0xea0b('0x2f')));},'filename':function(_0x2b91b3,_0x3a1249,_0x199115){_0x199115(null,util[_0xea0b('0x28')]('%s-%s',Date[_0xea0b('0x2a')](),_0x3a1249[_0xea0b('0x2b')]));}})});router[_0xea0b('0x23')]('/:id/customer_avatar',upload[_0xea0b('0x2c')](_0xea0b('0x2d')),controller[_0xea0b('0x31')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x58b931,_0x2f5cb9,_0x3bdfe3){_0x3bdfe3(null,path[_0xea0b('0x25')](config[_0xea0b('0x26')],'server/files/images/avatars/'));},'filename':function(_0x1688f7,_0x1ecd99,_0x478385){_0x478385(null,util[_0xea0b('0x28')](_0xea0b('0x29'),Date[_0xea0b('0x2a')](),_0x1ecd99[_0xea0b('0x2b')]));}})});router['post'](_0xea0b('0x15'),upload[_0xea0b('0x2c')]('file'),controller[_0xea0b('0x32')]);router[_0xea0b('0x23')](_0xea0b('0x33'),controller[_0xea0b('0x34')]);const offlineUploadMulter=multer({'storage':multer[_0xea0b('0x24')]({'destination':function(_0x52098e,_0x5038f3,_0x5ccbb1){const _0x4c14bd=path[_0xea0b('0x25')](config[_0xea0b('0x26')],_0xea0b('0x35'),_0xea0b('0x36'),_0xea0b('0x37'));fs_extra['ensureDir'](_0x4c14bd,function(){_0x5ccbb1(null,_0x4c14bd);});},'filename':function(_0x4b7b43,_0x3fb5f5,_0x5afd04){const _0x5a23c7=_0x3fb5f5[_0xea0b('0x2b')][_0xea0b('0x38')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x956fa6=path[_0xea0b('0x39')](_0x5a23c7);const _0x211708=Date[_0xea0b('0x2a')]()+'-'+_0x5a23c7[_0xea0b('0x38')](_0x956fa6,'')+_0x956fa6;_0x5afd04(null,_0x211708);}})});router[_0xea0b('0x23')](_0xea0b('0x3a'),offlineUploadMulter['any'](),controller[_0xea0b('0x3b')]);router[_0xea0b('0x23')](_0xea0b('0x3c'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x3d')]);router['post'](_0xea0b('0x19'),auth[_0xea0b('0x8')](),controller['addApplications']);router['post'](_0xea0b('0x1b'),auth['isAuthenticated'](),controller[_0xea0b('0x3e')]);router['post'](_0xea0b('0x3f'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x40')]);router[_0xea0b('0x41')](_0xea0b('0xc'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x42')]);router[_0xea0b('0x43')]('/:id',auth[_0xea0b('0x8')](),controller[_0xea0b('0x44')]);router[_0xea0b('0x43')]('/:id/dispositions',auth[_0xea0b('0x8')](),controller[_0xea0b('0x45')]);router[_0xea0b('0x43')](_0xea0b('0x10'),auth[_0xea0b('0x8')](),controller[_0xea0b('0x46')]);router[_0xea0b('0x43')]('/:id/users',auth[_0xea0b('0x8')](),controller[_0xea0b('0x47')]);module[_0xea0b('0x48')]=router;
\ No newline at end of file
+var _0x75a9=['/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','/:id/snippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','getFields','/:id/offline_messages','getOfflineMessages','/:id/users','getAgents','create','post','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','format','%s-%s','single','file','addLogo','server/files/images/avatars/','now','addCustomerAvatar','addSystemAvatar','/:id/notify','notify','server/files','attachments','offline-chat','ensureDir','originalname','replace','extname','offline','addInteraction','/:id/proactive_actions','put','update','delete','destroy','removeDispositions','exports','util','path','express','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x75a9,0x151));var _0x975a=function(_0x477b00,_0x5cfde6){_0x477b00=_0x477b00-0x0;var _0x2e12c7=_0x75a9[_0x477b00];return _0x2e12c7;};'use strict';var multer=require('multer');var util=require(_0x975a('0x0'));var path=require(_0x975a('0x1'));var timeout=require('connect-timeout');var express=require(_0x975a('0x2'));var router=express['Router']();var fs_extra=require(_0x975a('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x975a('0x4'));var config=require(_0x975a('0x5'));var controller=require('./chatWebsite.controller');router[_0x975a('0x6')]('/',auth[_0x975a('0x7')](),controller[_0x975a('0x8')]);router[_0x975a('0x6')](_0x975a('0x9'),auth[_0x975a('0x7')](),controller[_0x975a('0xa')]);router[_0x975a('0x6')](_0x975a('0xb'),auth['isAuthenticated'](),controller[_0x975a('0xc')]);router[_0x975a('0x6')](_0x975a('0xd'),auth['isAuthenticated'](),controller[_0x975a('0xe')]);router[_0x975a('0x6')](_0x975a('0xf'),auth['isAuthenticated'](),controller[_0x975a('0x10')]);router[_0x975a('0x6')](_0x975a('0x11'),controller[_0x975a('0x12')]);router[_0x975a('0x6')](_0x975a('0x13'),controller['getAvatar']);router['get'](_0x975a('0x14'),controller[_0x975a('0x15')]);router[_0x975a('0x6')](_0x975a('0x16'),controller[_0x975a('0x17')]);router[_0x975a('0x6')](_0x975a('0x18'),auth[_0x975a('0x7')](),controller['getInteractions']);router[_0x975a('0x6')](_0x975a('0x19'),controller['getSnippet']);router[_0x975a('0x6')](_0x975a('0x1a'),auth[_0x975a('0x7')](),controller[_0x975a('0x1b')]);router[_0x975a('0x6')]('/:id/proactive_actions',auth[_0x975a('0x7')](),controller[_0x975a('0x1c')]);router['get'](_0x975a('0x1d'),controller[_0x975a('0x1e')]);router[_0x975a('0x6')](_0x975a('0x1f'),auth[_0x975a('0x7')](),controller[_0x975a('0x20')]);router[_0x975a('0x6')](_0x975a('0x21'),auth['isAuthenticated'](),controller[_0x975a('0x22')]);router['post']('/',auth[_0x975a('0x7')](),controller[_0x975a('0x23')]);router[_0x975a('0x24')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x975a('0x25')]);router[_0x975a('0x24')]('/:id/canned_answers',auth[_0x975a('0x7')](),controller[_0x975a('0x26')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x428d97,_0x1699a0,_0x409e75){_0x409e75(null,path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x2a')));},'filename':function(_0x3ae59,_0xe3a794,_0x52e09c){_0x52e09c(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date['now'](),_0xe3a794['originalname']));}})});router['post'](_0x975a('0x11'),upload[_0x975a('0x2d')](_0x975a('0x2e')),controller[_0x975a('0x2f')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x40a349,_0x286712,_0x4a35f6){_0x4a35f6(null,path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x30')));},'filename':function(_0x3505ea,_0x4a278b,_0x132f64){_0x132f64(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x4a278b['originalname']));}})});router[_0x975a('0x24')]('/:id/avatar',upload['single'](_0x975a('0x2e')),controller['addAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4bde24,_0xcb1d9b,_0xd46b0c){_0xd46b0c(null,path[_0x975a('0x28')](config['root'],'server/files/images/avatars/'));},'filename':function(_0x1a1242,_0x4f5285,_0x4a3d9e){_0x4a3d9e(null,util[_0x975a('0x2b')](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x4f5285['originalname']));}})});router[_0x975a('0x24')](_0x975a('0x14'),upload[_0x975a('0x2d')](_0x975a('0x2e')),controller[_0x975a('0x32')]);var upload=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x41bf2e,_0x52e559,_0xd35fe7){_0xd35fe7(null,path['join'](config[_0x975a('0x29')],_0x975a('0x30')));},'filename':function(_0x405876,_0x10b301,_0x150fc4){_0x150fc4(null,util['format'](_0x975a('0x2c'),Date[_0x975a('0x31')](),_0x10b301['originalname']));}})});router['post']('/:id/system_avatar',upload[_0x975a('0x2d')]('file'),controller[_0x975a('0x33')]);router[_0x975a('0x24')](_0x975a('0x34'),controller[_0x975a('0x35')]);const offlineUploadMulter=multer({'storage':multer[_0x975a('0x27')]({'destination':function(_0x740be0,_0x21558f,_0x167abb){const _0x53591a=path[_0x975a('0x28')](config[_0x975a('0x29')],_0x975a('0x36'),_0x975a('0x37'),_0x975a('0x38'));fs_extra[_0x975a('0x39')](_0x53591a,function(){_0x167abb(null,_0x53591a);});},'filename':function(_0x232ba2,_0x130593,_0x452613){const _0x2ade38=_0x130593[_0x975a('0x3a')][_0x975a('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x4c402f=path[_0x975a('0x3c')](_0x2ade38);const _0x416c37=Date[_0x975a('0x31')]()+'-'+_0x2ade38[_0x975a('0x3b')](_0x4c402f,'')+_0x4c402f;_0x452613(null,_0x416c37);}})});router[_0x975a('0x24')]('/:id/offline',offlineUploadMulter['any'](),controller[_0x975a('0x3d')]);router[_0x975a('0x24')](_0x975a('0x18'),auth['isAuthenticated'](),controller[_0x975a('0x3e')]);router[_0x975a('0x24')](_0x975a('0x1a'),auth['isAuthenticated'](),controller['addApplications']);router[_0x975a('0x24')](_0x975a('0x3f'),auth['isAuthenticated'](),controller['addProactiveActions']);router['post'](_0x975a('0x21'),auth[_0x975a('0x7')](),controller['addAgents']);router[_0x975a('0x40')](_0x975a('0xb'),auth[_0x975a('0x7')](),controller[_0x975a('0x41')]);router[_0x975a('0x42')](_0x975a('0xb'),auth[_0x975a('0x7')](),controller[_0x975a('0x43')]);router['delete'](_0x975a('0xd'),auth['isAuthenticated'](),controller[_0x975a('0x44')]);router[_0x975a('0x42')](_0x975a('0xf'),auth[_0x975a('0x7')](),controller['removeAnswers']);router[_0x975a('0x42')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module[_0x975a('0x45')]=router;
\ No newline at end of file
index 0349012..b442d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x383a=['Router','env','production','app','Client-Side\x20logger\x20not\x20found!','/client-logs','use','exports','beaver-logger/server','express','../components/auth/service','../config/environment'];(function(_0x2e883d,_0x270600){var _0x51e4db=function(_0x2b12ac){while(--_0x2b12ac){_0x2e883d['push'](_0x2e883d['shift']());}};_0x51e4db(++_0x270600);}(_0x383a,0xd4));var _0xa383=function(_0x26601e,_0x139a4c){_0x26601e=_0x26601e-0x0;var _0x116282=_0x383a[_0x26601e];return _0x116282;};var beaverLogger=require(_0xa383('0x0'));var express=require(_0xa383('0x1'));var auth=require(_0xa383('0x2'));var config=require(_0xa383('0x3'));var router=express[_0xa383('0x4')]();var isProduction=config[_0xa383('0x5')]===_0xa383('0x6')||![];function clientSideLogs(_0x4624a5,_0x52fca8,_0x4f3ca0){var _0xd7d8da=_0x4624a5[_0xa383('0x7')]['get']('client-side-logger');if(!_0xd7d8da){throw new Error(_0xa383('0x8'));}return beaverLogger['expressEndpoint']({'uri':_0xa383('0x9'),'logger':_0xd7d8da,'enableCors':!isProduction})(_0x4624a5,_0x52fca8,_0x4f3ca0);}router[_0xa383('0xa')](auth['isAuthenticated'](),clientSideLogs);module[_0xa383('0xb')]=router;
\ No newline at end of file
+var _0x1359=['express','../components/auth/service','../config/environment','production','app','get','client-side-logger','Client-Side\x20logger\x20not\x20found!','expressEndpoint','/client-logs','isAuthenticated','exports'];(function(_0x625c64,_0x53869a){var _0x262d13=function(_0x8fa361){while(--_0x8fa361){_0x625c64['push'](_0x625c64['shift']());}};_0x262d13(++_0x53869a);}(_0x1359,0x6c));var _0x9135=function(_0xcf36a9,_0xce6c4e){_0xcf36a9=_0xcf36a9-0x0;var _0x309776=_0x1359[_0xcf36a9];return _0x309776;};var beaverLogger=require('beaver-logger/server');var express=require(_0x9135('0x0'));var auth=require(_0x9135('0x1'));var config=require(_0x9135('0x2'));var router=express['Router']();var isProduction=config['env']===_0x9135('0x3')||![];function clientSideLogs(_0x3ff211,_0x5091c1,_0x3603e8){var _0x27e8f5=_0x3ff211[_0x9135('0x4')][_0x9135('0x5')](_0x9135('0x6'));if(!_0x27e8f5){throw new Error(_0x9135('0x7'));}return beaverLogger[_0x9135('0x8')]({'uri':_0x9135('0x9'),'logger':_0x27e8f5,'enableCors':!isProduction})(_0x3ff211,_0x5091c1,_0x3603e8);}router['use'](auth[_0x9135('0xa')](),clientSideLogs);module[_0x9135('0xb')]=router;
\ No newline at end of file
index c6296c7..7bd9c42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb90=['MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20client_secret','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','STRING','AmazonAWS','Google','MicrosoftAzure','ENUM','Dynamics365'];(function(_0x27c59c,_0x355b73){var _0x2ed45a=function(_0x3581d8){while(--_0x3581d8){_0x27c59c['push'](_0x27c59c['shift']());}};_0x2ed45a(++_0x355b73);}(_0xeb90,0x19d));var _0x0eb9=function(_0x34aafb,_0x533bc4){_0x34aafb=_0x34aafb-0x0;var _0x446e2f=_0xeb90[_0x34aafb];return _0x446e2f;};'use strict';var Sequelize=require(_0x0eb9('0x0'));module['exports']={'name':{'type':Sequelize[_0x0eb9('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM'](_0x0eb9('0x2'),_0x0eb9('0x3'),_0x0eb9('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0x0eb9('0x5')]('Outlook365',_0x0eb9('0x6'))},'data1':{'type':Sequelize[_0x0eb9('0x1')],'comment':_0x0eb9('0x7')},'data2':{'type':Sequelize[_0x0eb9('0x1')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0x0eb9('0x1')],'comment':_0x0eb9('0x8')},'data4':{'type':Sequelize[_0x0eb9('0x1')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0x0eb9('0x9')],'comment':_0x0eb9('0xa')},'data6':{'type':Sequelize[_0x0eb9('0x9')],'comment':'MicrosoftAzure\x20=>\x20refresh_token'},'data7':{'type':Sequelize['TEXT'],'comment':_0x0eb9('0xb')}};
\ No newline at end of file
+var _0x34ab=['ENUM','Google','MicrosoftAzure','MicrosoftAzure\x20=>\x20client_secret','MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING'];(function(_0x369e31,_0x5f1558){var _0x33b750=function(_0x264483){while(--_0x264483){_0x369e31['push'](_0x369e31['shift']());}};_0x33b750(++_0x5f1558);}(_0x34ab,0xed));var _0xb34a=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x34ab[_0x2235bf];return _0x4c3a64;};'use strict';var Sequelize=require(_0xb34a('0x0'));module[_0xb34a('0x1')]={'name':{'type':Sequelize[_0xb34a('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xb34a('0x3')]('AmazonAWS',_0xb34a('0x4'),_0xb34a('0x5')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('Outlook365','Dynamics365')},'data1':{'type':Sequelize[_0xb34a('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0xb34a('0x2')],'comment':'MicrosoftAzure\x20=>\x20tenant'},'data3':{'type':Sequelize[_0xb34a('0x2')],'comment':_0xb34a('0x6')},'data4':{'type':Sequelize['STRING'],'comment':_0xb34a('0x7')},'data5':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0x9')},'data6':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0xa')},'data7':{'type':Sequelize[_0xb34a('0x8')],'comment':_0xb34a('0xb')}};
\ No newline at end of file
index 149919e..be16585 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x135b=['body','values','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','create','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','from','state','ascii','parse','isValidIdToken','id_token','Unable\x20to\x20validate\x20id_token','del','code','data5','access_token','data6','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','offset','undefined','limit','count','Content-Range','update','then','destroy','error','stack','name','send','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','intersection','attributes','length','hasOwnProperty','nolimit','sort','filters','pick','filter','where','merge','includeAll','include','findAll','rows','service','MicrosoftAzure','decryptString','data3','show','params','keys','fields','options','find','catch'];(function(_0x1e3ee9,_0x2b0ffb){var _0x185bb8=function(_0x4c562b){while(--_0x4c562b){_0x1e3ee9['push'](_0x1e3ee9['shift']());}};_0x185bb8(++_0x2b0ffb);}(_0x135b,0x198));var _0xb135=function(_0x1b4e88,_0x392683){_0x1b4e88=_0x1b4e88-0x0;var _0x3e56f7=_0x135b[_0x1b4e88];return _0x3e56f7;};'use strict';var _=require(_0xb135('0x0'));var Redis=require(_0xb135('0x1'));var qs=require(_0xb135('0x2'));var encryptor=require(_0xb135('0x3'));var config=require(_0xb135('0x4'));var logger=require(_0xb135('0x5'))(_0xb135('0x6'));var db=require('../../mysqldb')['db'];var oauth=require('./cloudProvider.oauth');config[_0xb135('0x7')]=_[_0xb135('0x8')](config[_0xb135('0x7')],{'host':_0xb135('0x9'),'port':0x18eb});var socket=require(_0xb135('0xa'))(new Redis(config[_0xb135('0x7')]));var redis=new Redis(config[_0xb135('0x7')]);function respondWithStatusCode(_0x397fa7,_0x1da705){_0x1da705=_0x1da705||0xcc;return function(_0x56899b){if(_0x56899b){return _0x397fa7[_0xb135('0xb')](_0x1da705);}return _0x397fa7[_0xb135('0xc')](_0x1da705)[_0xb135('0xd')]();};}function respondWithResult(_0x5bcbee,_0x30326c){_0x30326c=_0x30326c||0xc8;return function(_0x201f7d){if(_0x201f7d){return _0x5bcbee[_0xb135('0xc')](_0x30326c)['json'](_0x201f7d);}};}function respondWithFilteredResult(_0x478db2,_0x468f47){return function(_0x16382b){if(_0x16382b){var _0x2f87d1=typeof _0x468f47[_0xb135('0xe')]===_0xb135('0xf')&&typeof _0x468f47[_0xb135('0x10')]===_0xb135('0xf');var _0x1e2fea=_0x16382b[_0xb135('0x11')];var _0x45d258=_0x2f87d1?0x0:_0x468f47['offset'];var _0x2ef83e=_0x2f87d1?_0x16382b[_0xb135('0x11')]:_0x468f47[_0xb135('0xe')]+_0x468f47[_0xb135('0x10')];var _0x179e95;if(_0x2ef83e>=_0x1e2fea){_0x2ef83e=_0x1e2fea;_0x179e95=0xc8;}else{_0x179e95=0xce;}_0x478db2['status'](_0x179e95);return _0x478db2['set'](_0xb135('0x12'),_0x45d258+'-'+_0x2ef83e+'/'+_0x1e2fea)['json'](_0x16382b);}return null;};}function saveUpdates(_0x3367a1){return function(_0x1326cd){if(_0x1326cd){return _0x1326cd[_0xb135('0x13')](_0x3367a1)[_0xb135('0x14')](function(_0x1d10f2){return _0x1d10f2;});}return null;};}function removeEntity(_0x557cc5){return function(_0x373199){if(_0x373199){return _0x373199[_0xb135('0x15')]()[_0xb135('0x14')](function(){_0x557cc5['status'](0xcc)[_0xb135('0xd')]();});}};}function handleEntityNotFound(_0x482aa5){return function(_0x1d55ac){if(!_0x1d55ac){_0x482aa5[_0xb135('0xb')](0x194);}return _0x1d55ac;};}function handleError(_0x3a0d8d,_0x134892){_0x134892=_0x134892||0x1f4;return function(_0x26f375){logger[_0xb135('0x16')](_0x26f375[_0xb135('0x17')]);if(_0x26f375[_0xb135('0x18')]){delete _0x26f375['name'];}_0x3a0d8d[_0xb135('0xc')](_0x134892)[_0xb135('0x19')](_0x26f375);};}function maskClientSecret(_0x298700){return _['padEnd'](_0x298700[_0xb135('0x1a')](0x0,0x3),0x14,'*');}exports[_0xb135('0x1b')]=function(_0x6659b2,_0x33a09e){var _0x52588e={},_0x1de102={},_0x2de3e9={'count':0x0,'rows':[]};var _0x4bd47=_[_0xb135('0x1c')](db[_0xb135('0x1d')][_0xb135('0x1e')],function(_0xca84db){return{'name':_0xca84db[_0xb135('0x1f')],'type':_0xca84db[_0xb135('0x20')][_0xb135('0x21')]};});_0x1de102[_0xb135('0x22')]=_[_0xb135('0x1c')](_0x4bd47,_0xb135('0x18'));_0x1de102[_0xb135('0x23')]=_['keys'](_0x6659b2['query']);_0x1de102['filters']=_[_0xb135('0x24')](_0x1de102['model'],_0x1de102[_0xb135('0x23')]);_0x52588e['attributes']=_[_0xb135('0x24')](_0x1de102[_0xb135('0x22')],qs['fields'](_0x6659b2[_0xb135('0x23')]['fields']));_0x52588e[_0xb135('0x25')]=_0x52588e[_0xb135('0x25')][_0xb135('0x26')]?_0x52588e[_0xb135('0x25')]:_0x1de102[_0xb135('0x22')];if(!_0x6659b2[_0xb135('0x23')][_0xb135('0x27')](_0xb135('0x28'))){_0x52588e[_0xb135('0x10')]=qs[_0xb135('0x10')](_0x6659b2[_0xb135('0x23')][_0xb135('0x10')]);_0x52588e[_0xb135('0xe')]=qs[_0xb135('0xe')](_0x6659b2['query'][_0xb135('0xe')]);}_0x52588e['order']=qs[_0xb135('0x29')](_0x6659b2[_0xb135('0x23')]['sort']);_0x52588e['where']=qs[_0xb135('0x2a')](_[_0xb135('0x2b')](_0x6659b2[_0xb135('0x23')],_0x1de102[_0xb135('0x2a')]),_0x4bd47);if(_0x6659b2[_0xb135('0x23')][_0xb135('0x2c')]){_0x52588e[_0xb135('0x2d')]=_[_0xb135('0x2e')](_0x52588e[_0xb135('0x2d')],{'$or':_['map'](_0x4bd47,function(_0x30c2c4){if(_0x30c2c4[_0xb135('0x20')]!=='VIRTUAL'){var _0x34049b={};_0x34049b[_0x30c2c4[_0xb135('0x18')]]={'$like':'%'+_0x6659b2[_0xb135('0x23')][_0xb135('0x2c')]+'%'};return _0x34049b;}})});}_0x52588e=_[_0xb135('0x2e')]({},_0x52588e,_0x6659b2['options']);var _0x44baa5={'where':_0x52588e[_0xb135('0x2d')]};return db[_0xb135('0x1d')]['count'](_0x44baa5)[_0xb135('0x14')](function(_0xb63eae){_0x2de3e9['count']=_0xb63eae;if(_0x6659b2[_0xb135('0x23')][_0xb135('0x2f')]){_0x52588e[_0xb135('0x30')]=[{'all':!![]}];}return db['CloudProvider'][_0xb135('0x31')](_0x52588e);})[_0xb135('0x14')](function(_0x416ad2){_0x2de3e9[_0xb135('0x32')]=_['map'](_0x416ad2,function(_0x7cc561){if(_0x7cc561[_0xb135('0x33')]===_0xb135('0x34')){var _0x550396=encryptor[_0xb135('0x35')](_0x7cc561[_0xb135('0x36')]);_0x7cc561[_0xb135('0x36')]=maskClientSecret(_0x550396);}return _0x7cc561;});return _0x2de3e9;})['then'](respondWithFilteredResult(_0x33a09e,_0x52588e))['catch'](handleError(_0x33a09e,null));};exports[_0xb135('0x37')]=function(_0x2078b9,_0x588a45){var _0x47cefe={'raw':!![],'where':{'id':_0x2078b9[_0xb135('0x38')]['id']}},_0x351e28={};_0x351e28[_0xb135('0x22')]=_['keys'](db['CloudProvider'][_0xb135('0x1e')]);_0x351e28[_0xb135('0x23')]=_[_0xb135('0x39')](_0x2078b9[_0xb135('0x23')]);_0x351e28[_0xb135('0x2a')]=_[_0xb135('0x24')](_0x351e28[_0xb135('0x22')],_0x351e28[_0xb135('0x23')]);_0x47cefe[_0xb135('0x25')]=_['intersection'](_0x351e28[_0xb135('0x22')],qs[_0xb135('0x3a')](_0x2078b9['query'][_0xb135('0x3a')]));_0x47cefe[_0xb135('0x25')]=_0x47cefe[_0xb135('0x25')][_0xb135('0x26')]?_0x47cefe['attributes']:_0x351e28[_0xb135('0x22')];if(_0x2078b9[_0xb135('0x23')][_0xb135('0x2f')]){_0x47cefe['include']=[{'all':!![]}];}_0x47cefe=_[_0xb135('0x2e')]({},_0x47cefe,_0x2078b9[_0xb135('0x3b')]);return db[_0xb135('0x1d')][_0xb135('0x3c')](_0x47cefe)[_0xb135('0x14')](handleEntityNotFound(_0x588a45,null))[_0xb135('0x14')](function(_0x5933de){if(_0x5933de[_0xb135('0x33')]===_0xb135('0x34')){var _0x425e7d=encryptor[_0xb135('0x35')](_0x5933de[_0xb135('0x36')]);_0x5933de[_0xb135('0x36')]=maskClientSecret(_0x425e7d);}return _0x5933de;})[_0xb135('0x14')](respondWithResult(_0x588a45,null))[_0xb135('0x3d')](handleError(_0x588a45,null));};exports['create']=function(_0x6bcf7e,_0x5b104a){if(!_0x6bcf7e['body'][_0xb135('0x18')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x6bcf7e[_0xb135('0x3e')]['service'])throw new Error('Service\x20parameter\x20not\x20specified');var _0x163c52=db[_0xb135('0x1d')][_0xb135('0x1e')]['service'][_0xb135('0x3f')];if(!_0x163c52['includes'](_0x6bcf7e[_0xb135('0x3e')][_0xb135('0x33')]))throw new Error(_0xb135('0x40')+_0x163c52[_0xb135('0x41')](',\x20'));if(_0x6bcf7e[_0xb135('0x3e')][_0xb135('0x33')]==='MicrosoftAzure'&&_0x6bcf7e['body'][_0xb135('0x36')]){_0x6bcf7e[_0xb135('0x3e')][_0xb135('0x36')]=encryptor[_0xb135('0x42')](_0x6bcf7e[_0xb135('0x3e')][_0xb135('0x36')]);}return db[_0xb135('0x1d')][_0xb135('0x43')](_0x6bcf7e[_0xb135('0x3e')],{})[_0xb135('0x14')](respondWithResult(_0x5b104a,0xc9))[_0xb135('0x3d')](handleError(_0x5b104a,null));};exports[_0xb135('0x13')]=function(_0x514381,_0x417ffa){if(_0x514381['body']['id']){delete _0x514381[_0xb135('0x3e')]['id'];}return db[_0xb135('0x1d')]['find']({'where':{'id':_0x514381[_0xb135('0x38')]['id']}})[_0xb135('0x14')](handleEntityNotFound(_0x417ffa,null))[_0xb135('0x14')](function(_0x11a752){if(_0x11a752[_0xb135('0x33')]===_0xb135('0x34')&&_0x514381['body'][_0xb135('0x36')]){_0x514381[_0xb135('0x3e')][_0xb135('0x36')]=encryptor['encryptString'](_0x514381[_0xb135('0x3e')][_0xb135('0x36')]);}return _0x11a752;})[_0xb135('0x14')](saveUpdates(_0x514381[_0xb135('0x3e')],null))[_0xb135('0x14')](respondWithResult(_0x417ffa,null))[_0xb135('0x3d')](handleError(_0x417ffa,null));};exports[_0xb135('0x15')]=function(_0x5ae396,_0x4e40d7){return db['CloudProvider']['find']({'where':{'id':_0x5ae396[_0xb135('0x38')]['id']}})['then'](handleEntityNotFound(_0x4e40d7,null))['then'](removeEntity(_0x4e40d7,null))['catch'](handleError(_0x4e40d7,null));};exports[_0xb135('0x44')]=function(_0x181c8c,_0x2d0fc5){return db[_0xb135('0x1d')][_0xb135('0x45')]({'where':{'id':_0x181c8c['params']['id']},'raw':!![]})[_0xb135('0x14')](function(_0x26aa32){if(!_0x26aa32)return _0x2d0fc5[_0xb135('0xb')](0x194);return{'url':oauth[_0xb135('0x46')](_0x26aa32,_0x181c8c[_0xb135('0x47')]['id'])};})[_0xb135('0x14')](respondWithResult(_0x2d0fc5,null))[_0xb135('0x3d')](handleError(_0x2d0fc5,null));};exports[_0xb135('0x48')]=function(_0x369d0e,_0x2fdd48){var _0x26cbe8=_0x369d0e[_0xb135('0x3e')];var _0x2fd5cb;var _0x3358f9;if(_0x26cbe8[_0xb135('0x16')])throw _0x26cbe8;redis[_0xb135('0x49')](_0x26cbe8['state'])[_0xb135('0x14')](function(_0x4fdef6){if(!_0x4fdef6)throw new Error(_0xb135('0x4a'));_0x2fd5cb=JSON['parse'](_0x4fdef6);var _0x128382=Buffer[_0xb135('0x4b')](_0x26cbe8[_0xb135('0x4c')],'base64')['toString'](_0xb135('0x4d'));_0x3358f9=JSON[_0xb135('0x4e')](_0x128382);if(!oauth[_0xb135('0x4f')](_0x26cbe8[_0xb135('0x50')],_0x2fd5cb['oauth2Claims']))throw new Error(_0xb135('0x51'));redis[_0xb135('0x52')](_0x26cbe8[_0xb135('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0x26cbe8[_0xb135('0x53')],_0x2fd5cb);})[_0xb135('0x14')](function(_0x18416b){_0x2fd5cb[_0xb135('0x54')]=_0x18416b[_0xb135('0x55')];_0x2fd5cb[_0xb135('0x56')]=_0x18416b['refresh_token'];return db[_0xb135('0x1d')][_0xb135('0x13')]({'data5':_0x2fd5cb[_0xb135('0x54')],'data6':_0x2fd5cb[_0xb135('0x56')]},{'where':{'id':_0x2fd5cb['id']}});})[_0xb135('0x14')](function(){oauth[_0xb135('0x57')](_0x2fd5cb);socket[_0xb135('0x58')](_0xb135('0x59'),{'id':_0x3358f9['id']});return;})['then'](respondWithStatusCode(_0x2fdd48,null))[_0xb135('0x3d')](function(_0x47ebe8){if(_0x3358f9){socket['emit'](_0xb135('0x5a'),{'id':_0x3358f9['id']});}if(!_0x2fd5cb){logger[_0xb135('0x16')]('Invalid\x20authentication\x20state\x20parameter',_0x47ebe8);return _0x2fdd48[_0xb135('0xc')](0x1f4)[_0xb135('0x19')](_0x47ebe8[_0xb135('0x5b')]);}logger[_0xb135('0x16')](_0xb135('0x5c'),_0x2fd5cb['id'],JSON[_0xb135('0x5d')](_0x47ebe8));});};
\ No newline at end of file
+var _0x3a55=['limit','undefined','count','set','Content-Range','json','update','end','stack','padEnd','slice','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','type','VIRTUAL','name','merge','options','then','includeAll','include','CloudProvider','findAll','rows','service','MicrosoftAzure','data3','show','params','find','decryptString','catch','create','body','Service\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','destroy','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','error','get','state','Invalid\x20state\x20parameter','from','base64','toString','ascii','parse','id_token','oauth2Claims','Unable\x20to\x20validate\x20id_token','del','getOauth2MicrosoftAccessToken','code','access_token','data6','data5','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../config/environment','../../config/logger','./cloudProvider.oauth','redis','localhost','socket.io-emitter','sendStatus','status','offset'];(function(_0x211f5f,_0xc6daac){var _0x4feb86=function(_0x30c168){while(--_0x30c168){_0x211f5f['push'](_0x211f5f['shift']());}};_0x4feb86(++_0xc6daac);}(_0x3a55,0x17c));var _0x53a5=function(_0x3df0d0,_0x32d817){_0x3df0d0=_0x3df0d0-0x0;var _0x257890=_0x3a55[_0x3df0d0];return _0x257890;};'use strict';var _=require(_0x53a5('0x0'));var Redis=require(_0x53a5('0x1'));var qs=require(_0x53a5('0x2'));var encryptor=require('../../components/encryptor');var config=require(_0x53a5('0x3'));var logger=require(_0x53a5('0x4'))('api');var db=require('../../mysqldb')['db'];var oauth=require(_0x53a5('0x5'));config[_0x53a5('0x6')]=_['defaults'](config[_0x53a5('0x6')],{'host':_0x53a5('0x7'),'port':0x18eb});var socket=require(_0x53a5('0x8'))(new Redis(config[_0x53a5('0x6')]));var redis=new Redis(config[_0x53a5('0x6')]);function respondWithStatusCode(_0x654ad6,_0x40295f){_0x40295f=_0x40295f||0xcc;return function(_0x1bd432){if(_0x1bd432){return _0x654ad6[_0x53a5('0x9')](_0x40295f);}return _0x654ad6[_0x53a5('0xa')](_0x40295f)['end']();};}function respondWithResult(_0x2a75fe,_0x41f838){_0x41f838=_0x41f838||0xc8;return function(_0x287c18){if(_0x287c18){return _0x2a75fe['status'](_0x41f838)['json'](_0x287c18);}};}function respondWithFilteredResult(_0x5a41c9,_0x1ab29f){return function(_0x197c09){if(_0x197c09){var _0x2da4e5=typeof _0x1ab29f[_0x53a5('0xb')]==='undefined'&&typeof _0x1ab29f[_0x53a5('0xc')]===_0x53a5('0xd');var _0x1fc178=_0x197c09[_0x53a5('0xe')];var _0x49eb16=_0x2da4e5?0x0:_0x1ab29f[_0x53a5('0xb')];var _0x5b4bb7=_0x2da4e5?_0x197c09[_0x53a5('0xe')]:_0x1ab29f[_0x53a5('0xb')]+_0x1ab29f['limit'];var _0x54e44d;if(_0x5b4bb7>=_0x1fc178){_0x5b4bb7=_0x1fc178;_0x54e44d=0xc8;}else{_0x54e44d=0xce;}_0x5a41c9['status'](_0x54e44d);return _0x5a41c9[_0x53a5('0xf')](_0x53a5('0x10'),_0x49eb16+'-'+_0x5b4bb7+'/'+_0x1fc178)[_0x53a5('0x11')](_0x197c09);}return null;};}function saveUpdates(_0x47abb1){return function(_0x502e7f){if(_0x502e7f){return _0x502e7f[_0x53a5('0x12')](_0x47abb1)['then'](function(_0x2b5159){return _0x2b5159;});}return null;};}function removeEntity(_0x5b0111){return function(_0x226195){if(_0x226195){return _0x226195['destroy']()['then'](function(){_0x5b0111[_0x53a5('0xa')](0xcc)[_0x53a5('0x13')]();});}};}function handleEntityNotFound(_0x3da66e){return function(_0xc3c29b){if(!_0xc3c29b){_0x3da66e[_0x53a5('0x9')](0x194);}return _0xc3c29b;};}function handleError(_0x47d130,_0x3d0afe){_0x3d0afe=_0x3d0afe||0x1f4;return function(_0x1d7ea7){logger['error'](_0x1d7ea7[_0x53a5('0x14')]);if(_0x1d7ea7['name']){delete _0x1d7ea7['name'];}_0x47d130[_0x53a5('0xa')](_0x3d0afe)['send'](_0x1d7ea7);};}function maskClientSecret(_0x22b765){return _[_0x53a5('0x15')](_0x22b765[_0x53a5('0x16')](0x0,0x3),0x14,'*');}exports['index']=function(_0x153c81,_0x1c50be){var _0x98265e={},_0x522ea7={},_0x3a509e={'count':0x0,'rows':[]};var _0x25df0a=_['map'](db['CloudProvider'][_0x53a5('0x17')],function(_0x56e3cd){return{'name':_0x56e3cd[_0x53a5('0x18')],'type':_0x56e3cd['type'][_0x53a5('0x19')]};});_0x522ea7[_0x53a5('0x1a')]=_[_0x53a5('0x1b')](_0x25df0a,'name');_0x522ea7[_0x53a5('0x1c')]=_[_0x53a5('0x1d')](_0x153c81[_0x53a5('0x1c')]);_0x522ea7[_0x53a5('0x1e')]=_[_0x53a5('0x1f')](_0x522ea7[_0x53a5('0x1a')],_0x522ea7['query']);_0x98265e[_0x53a5('0x20')]=_['intersection'](_0x522ea7['model'],qs['fields'](_0x153c81[_0x53a5('0x1c')][_0x53a5('0x21')]));_0x98265e[_0x53a5('0x20')]=_0x98265e[_0x53a5('0x20')][_0x53a5('0x22')]?_0x98265e[_0x53a5('0x20')]:_0x522ea7['model'];if(!_0x153c81[_0x53a5('0x1c')][_0x53a5('0x23')](_0x53a5('0x24'))){_0x98265e[_0x53a5('0xc')]=qs[_0x53a5('0xc')](_0x153c81[_0x53a5('0x1c')][_0x53a5('0xc')]);_0x98265e['offset']=qs[_0x53a5('0xb')](_0x153c81[_0x53a5('0x1c')][_0x53a5('0xb')]);}_0x98265e[_0x53a5('0x25')]=qs['sort'](_0x153c81[_0x53a5('0x1c')][_0x53a5('0x26')]);_0x98265e[_0x53a5('0x27')]=qs[_0x53a5('0x1e')](_['pick'](_0x153c81[_0x53a5('0x1c')],_0x522ea7[_0x53a5('0x1e')]),_0x25df0a);if(_0x153c81['query'][_0x53a5('0x28')]){_0x98265e[_0x53a5('0x27')]=_['merge'](_0x98265e['where'],{'$or':_[_0x53a5('0x1b')](_0x25df0a,function(_0x3dbe85){if(_0x3dbe85[_0x53a5('0x29')]!==_0x53a5('0x2a')){var _0x5c7928={};_0x5c7928[_0x3dbe85[_0x53a5('0x2b')]]={'$like':'%'+_0x153c81[_0x53a5('0x1c')][_0x53a5('0x28')]+'%'};return _0x5c7928;}})});}_0x98265e=_[_0x53a5('0x2c')]({},_0x98265e,_0x153c81[_0x53a5('0x2d')]);var _0x465ed8={'where':_0x98265e['where']};return db['CloudProvider'][_0x53a5('0xe')](_0x465ed8)[_0x53a5('0x2e')](function(_0x529ce7){_0x3a509e['count']=_0x529ce7;if(_0x153c81[_0x53a5('0x1c')][_0x53a5('0x2f')]){_0x98265e[_0x53a5('0x30')]=[{'all':!![]}];}return db[_0x53a5('0x31')][_0x53a5('0x32')](_0x98265e);})[_0x53a5('0x2e')](function(_0x38c804){_0x3a509e[_0x53a5('0x33')]=_['map'](_0x38c804,function(_0x4a2f89){if(_0x4a2f89[_0x53a5('0x34')]===_0x53a5('0x35')){var _0x31c101=encryptor['decryptString'](_0x4a2f89[_0x53a5('0x36')]);_0x4a2f89[_0x53a5('0x36')]=maskClientSecret(_0x31c101);}return _0x4a2f89;});return _0x3a509e;})[_0x53a5('0x2e')](respondWithFilteredResult(_0x1c50be,_0x98265e))['catch'](handleError(_0x1c50be,null));};exports[_0x53a5('0x37')]=function(_0x3cb38f,_0x56b36c){var _0x397c75={'raw':!![],'where':{'id':_0x3cb38f[_0x53a5('0x38')]['id']}},_0x460a1e={};_0x460a1e[_0x53a5('0x1a')]=_['keys'](db[_0x53a5('0x31')]['rawAttributes']);_0x460a1e[_0x53a5('0x1c')]=_['keys'](_0x3cb38f[_0x53a5('0x1c')]);_0x460a1e[_0x53a5('0x1e')]=_[_0x53a5('0x1f')](_0x460a1e[_0x53a5('0x1a')],_0x460a1e[_0x53a5('0x1c')]);_0x397c75['attributes']=_[_0x53a5('0x1f')](_0x460a1e[_0x53a5('0x1a')],qs[_0x53a5('0x21')](_0x3cb38f['query'][_0x53a5('0x21')]));_0x397c75['attributes']=_0x397c75[_0x53a5('0x20')][_0x53a5('0x22')]?_0x397c75['attributes']:_0x460a1e[_0x53a5('0x1a')];if(_0x3cb38f[_0x53a5('0x1c')]['includeAll']){_0x397c75[_0x53a5('0x30')]=[{'all':!![]}];}_0x397c75=_[_0x53a5('0x2c')]({},_0x397c75,_0x3cb38f[_0x53a5('0x2d')]);return db[_0x53a5('0x31')][_0x53a5('0x39')](_0x397c75)[_0x53a5('0x2e')](handleEntityNotFound(_0x56b36c,null))[_0x53a5('0x2e')](function(_0x10300c){if(_0x10300c[_0x53a5('0x34')]==='MicrosoftAzure'){var _0x585823=encryptor[_0x53a5('0x3a')](_0x10300c[_0x53a5('0x36')]);_0x10300c[_0x53a5('0x36')]=maskClientSecret(_0x585823);}return _0x10300c;})[_0x53a5('0x2e')](respondWithResult(_0x56b36c,null))[_0x53a5('0x3b')](handleError(_0x56b36c,null));};exports[_0x53a5('0x3c')]=function(_0x53aef1,_0x3f8d3b){if(!_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x2b')])throw new Error('Name\x20parameter\x20not\x20specified');if(!_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x34')])throw new Error(_0x53a5('0x3e'));var _0x4b9686=db[_0x53a5('0x31')]['rawAttributes'][_0x53a5('0x34')][_0x53a5('0x3f')];if(!_0x4b9686[_0x53a5('0x40')](_0x53aef1['body'][_0x53a5('0x34')]))throw new Error(_0x53a5('0x41')+_0x4b9686[_0x53a5('0x42')](',\x20'));if(_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x34')]===_0x53a5('0x35')&&_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]){_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]=encryptor[_0x53a5('0x43')](_0x53aef1[_0x53a5('0x3d')][_0x53a5('0x36')]);}return db['CloudProvider'][_0x53a5('0x3c')](_0x53aef1['body'],{})['then'](respondWithResult(_0x3f8d3b,0xc9))['catch'](handleError(_0x3f8d3b,null));};exports[_0x53a5('0x12')]=function(_0x3e5604,_0x32f52d){if(_0x3e5604[_0x53a5('0x3d')]['id']){delete _0x3e5604[_0x53a5('0x3d')]['id'];}return db[_0x53a5('0x31')][_0x53a5('0x39')]({'where':{'id':_0x3e5604['params']['id']}})['then'](handleEntityNotFound(_0x32f52d,null))['then'](function(_0x4102ed){if(_0x4102ed[_0x53a5('0x34')]===_0x53a5('0x35')&&_0x3e5604[_0x53a5('0x3d')][_0x53a5('0x36')]){_0x3e5604['body'][_0x53a5('0x36')]=encryptor['encryptString'](_0x3e5604['body']['data3']);}return _0x4102ed;})[_0x53a5('0x2e')](saveUpdates(_0x3e5604[_0x53a5('0x3d')],null))['then'](respondWithResult(_0x32f52d,null))[_0x53a5('0x3b')](handleError(_0x32f52d,null));};exports[_0x53a5('0x44')]=function(_0xa493e8,_0x452514){return db[_0x53a5('0x31')][_0x53a5('0x39')]({'where':{'id':_0xa493e8[_0x53a5('0x38')]['id']}})['then'](handleEntityNotFound(_0x452514,null))[_0x53a5('0x2e')](removeEntity(_0x452514,null))[_0x53a5('0x3b')](handleError(_0x452514,null));};exports['oauth2MicrosoftAuthorize']=function(_0x18ff77,_0x269cb2){return db[_0x53a5('0x31')][_0x53a5('0x45')]({'where':{'id':_0x18ff77[_0x53a5('0x38')]['id']},'raw':!![]})[_0x53a5('0x2e')](function(_0xb880e6){if(!_0xb880e6)return _0x269cb2['sendStatus'](0x194);return{'url':oauth[_0x53a5('0x46')](_0xb880e6,_0x18ff77[_0x53a5('0x47')]['id'])};})['then'](respondWithResult(_0x269cb2,null))[_0x53a5('0x3b')](handleError(_0x269cb2,null));};exports[_0x53a5('0x48')]=function(_0x55b186,_0xd065a){var _0x49268b=_0x55b186[_0x53a5('0x3d')];var _0x21e0e1;var _0x2f3460;if(_0x49268b[_0x53a5('0x49')])throw _0x49268b;redis[_0x53a5('0x4a')](_0x49268b[_0x53a5('0x4b')])['then'](function(_0x181bbb){if(!_0x181bbb)throw new Error(_0x53a5('0x4c'));_0x21e0e1=JSON['parse'](_0x181bbb);var _0xdc0df5=Buffer[_0x53a5('0x4d')](_0x49268b[_0x53a5('0x4b')],_0x53a5('0x4e'))[_0x53a5('0x4f')](_0x53a5('0x50'));_0x2f3460=JSON[_0x53a5('0x51')](_0xdc0df5);if(!oauth['isValidIdToken'](_0x49268b[_0x53a5('0x52')],_0x21e0e1[_0x53a5('0x53')]))throw new Error(_0x53a5('0x54'));redis[_0x53a5('0x55')](_0x49268b['state']);return oauth[_0x53a5('0x56')](_0x49268b[_0x53a5('0x57')],_0x21e0e1);})[_0x53a5('0x2e')](function(_0x2e6ea6){_0x21e0e1['data5']=_0x2e6ea6[_0x53a5('0x58')];_0x21e0e1[_0x53a5('0x59')]=_0x2e6ea6['refresh_token'];return db[_0x53a5('0x31')][_0x53a5('0x12')]({'data5':_0x21e0e1[_0x53a5('0x5a')],'data6':_0x21e0e1[_0x53a5('0x59')]},{'where':{'id':_0x21e0e1['id']}});})[_0x53a5('0x2e')](function(){oauth[_0x53a5('0x5b')](_0x21e0e1);socket[_0x53a5('0x5c')](_0x53a5('0x5d'),{'id':_0x2f3460['id']});return;})[_0x53a5('0x2e')](respondWithStatusCode(_0xd065a,null))[_0x53a5('0x3b')](function(_0x28b0f6){if(_0x2f3460){socket[_0x53a5('0x5c')]('microsoftAuthorization:error',{'id':_0x2f3460['id']});}if(!_0x21e0e1){logger['error'](_0x53a5('0x5e'),_0x28b0f6);return _0xd065a[_0x53a5('0xa')](0x1f4)['send'](_0x28b0f6[_0x53a5('0x5f')]);}logger['error'](_0x53a5('0x60'),_0x21e0e1['id'],JSON[_0x53a5('0x61')](_0x28b0f6));});};
\ No newline at end of file
index d5beeb8..ae4562c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4e8=['../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe4e8,0xd5));var _0x8e4e=function(_0x16c8c8,_0x5f00b3){_0x16c8c8=_0x16c8c8-0x0;var _0x3f5132=_0xe4e8[_0x16c8c8];return _0x3f5132;};'use strict';var _=require(_0x8e4e('0x0'));var util=require(_0x8e4e('0x1'));var logger=require(_0x8e4e('0x2'))(_0x8e4e('0x3'));var moment=require(_0x8e4e('0x4'));var BPromise=require(_0x8e4e('0x5'));var rp=require(_0x8e4e('0x6'));var fs=require('fs');var path=require(_0x8e4e('0x7'));var rimraf=require('rimraf');var config=require(_0x8e4e('0x8'));var attributes=require(_0x8e4e('0x9'));module['exports']=function(_0x31a03f,_0x17adca){return _0x31a03f[_0x8e4e('0xa')](_0x8e4e('0xb'),attributes,{'tableName':_0x8e4e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x12a9=['bluebird','request-promise','path','rimraf','../../config/environment','./cloudProvider.attributes','define','CloudProvider','cloud_providers','lodash','../../config/logger','api','moment'];(function(_0x189ee7,_0x86cdc2){var _0x6442ad=function(_0x4db069){while(--_0x4db069){_0x189ee7['push'](_0x189ee7['shift']());}};_0x6442ad(++_0x86cdc2);}(_0x12a9,0xcc));var _0x912a=function(_0x43578e,_0x21e84c){_0x43578e=_0x43578e-0x0;var _0x3c83e4=_0x12a9[_0x43578e];return _0x3c83e4;};'use strict';var _=require(_0x912a('0x0'));var util=require('util');var logger=require(_0x912a('0x1'))(_0x912a('0x2'));var moment=require(_0x912a('0x3'));var BPromise=require(_0x912a('0x4'));var rp=require(_0x912a('0x5'));var fs=require('fs');var path=require(_0x912a('0x6'));var rimraf=require(_0x912a('0x7'));var config=require(_0x912a('0x8'));var attributes=require(_0x912a('0x9'));module['exports']=function(_0x2de5e1,_0x7eb550){return _0x2de5e1[_0x912a('0xa')](_0x912a('0xb'),attributes,{'tableName':_0x912a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 152930e..92a67ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0896=['../../mysqldb','redis','defaults','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','profile','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','map','type','Dynamics365','data7','/.default','join','Outlook365','replace','{TENANT_ID}','data2','code','id_token','from','stringify','toString','base64','randomBytes','client_id','data1','response_type','redirect_uri','data4','response_mode','form_post','scope','state','nonce','prompt','key','value','oauth2/','decode','payload','iss','issuer','aud','audience','isAfter','unix','resolve','then','data3','findOne','refresh_token','decryptString','POST','data5','access_token','data6','CloudProvider','update','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','intervals','findAll','all','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','crypto','jsonwebtoken','ioredis','util','../../components/encryptor','../../config/environment','../../config/logger','../../config/schedule/cloud-provider'];(function(_0x41a86d,_0x1819bc){var _0x1bf9e9=function(_0x3fda6b){while(--_0x3fda6b){_0x41a86d['push'](_0x41a86d['shift']());}};_0x1bf9e9(++_0x1819bc);}(_0x0896,0x134));var _0x6089=function(_0x23f3dc,_0x53ca6d){_0x23f3dc=_0x23f3dc-0x0;var _0x4370e0=_0x0896[_0x23f3dc];return _0x4370e0;};'use strict';var _=require('lodash');var crypto=require(_0x6089('0x0'));var jwt=require(_0x6089('0x1'));var moment=require('moment');var Redis=require(_0x6089('0x2'));var rp=require('request-promise');var util=require(_0x6089('0x3'));var encryptor=require(_0x6089('0x4'));var config=require(_0x6089('0x5'));var logger=require(_0x6089('0x6'))('api');var schedule=require(_0x6089('0x7'));var db=require(_0x6089('0x8'))['db'];config[_0x6089('0x9')]=_[_0x6089('0xa')](config[_0x6089('0x9')],{'host':_0x6089('0xb'),'port':0x18eb});var redis=new Redis(config[_0x6089('0x9')]);var MICROSOFT_AUTH_URL=_0x6089('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x6089('0xd'),_0x6089('0xe'),'email',_0x6089('0xf'),_0x6089('0x10'),_0x6089('0x11'),_0x6089('0x12')],'Dynamics365':[_0x6089('0xd'),_0x6089('0xf')]};var MICROSOFT_AUTH_ENDPOINT=_0x6089('0x13');var MICROSOFT_TOKEN_ENDPOINT='/token';var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x37bc0d){var _0x1fee04=_[_0x6089('0x14')](AZURE_AUTH_SCOPES[_0x37bc0d[_0x6089('0x15')]]);if(_0x37bc0d[_0x6089('0x15')]===_0x6089('0x16'))_0x1fee04['push'](_0x37bc0d[_0x6089('0x17')]+_0x6089('0x18'));return _0x1fee04[_0x6089('0x19')]('\x20');}function getAccessTokenScope(_0x4e84d9){if(_0x4e84d9[_0x6089('0x15')]===_0x6089('0x1a'))return _0x6089('0x10');if(_0x4e84d9[_0x6089('0x15')]===_0x6089('0x16'))return _0x4e84d9[_0x6089('0x17')]+'/.default';}function generateMicrosoftAuthorizationUrl(_0x29419a,_0x28a923){var _0x3175bb=MICROSOFT_AUTH_URL[_0x6089('0x1b')](_0x6089('0x1c'),_0x29419a[_0x6089('0x1d')]);var _0x207fc2=[_0x6089('0x1e'),_0x6089('0x1f')];var _0x32170e=Buffer[_0x6089('0x20')](JSON[_0x6089('0x21')]({'id':_0x28a923}))[_0x6089('0x22')](_0x6089('0x23'));var _0x1b62a4=crypto[_0x6089('0x24')](0x10)['toString']('hex');var _0x2544ad=getAuthorizationScopes(_0x29419a);var _0x324a1a=[{'key':_0x6089('0x25'),'value':_0x29419a[_0x6089('0x26')]},{'key':_0x6089('0x27'),'value':encodeURIComponent(_0x207fc2[_0x6089('0x19')]('\x20'))},{'key':_0x6089('0x28'),'value':_0x29419a[_0x6089('0x29')]},{'key':_0x6089('0x2a'),'value':_0x6089('0x2b')},{'key':_0x6089('0x2c'),'value':encodeURIComponent(_0x2544ad)},{'key':_0x6089('0x2d'),'value':_0x32170e},{'key':_0x6089('0x2e'),'value':_0x1b62a4},{'key':_0x6089('0x2f'),'value':'login'}];var _0x48370d=_0x3175bb+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x6089('0x14')](_0x324a1a,function(_0x171226){return _0x171226[_0x6089('0x30')]+'='+_0x171226[_0x6089('0x31')];})[_0x6089('0x19')]('&');_0x29419a['oauth2Claims']={'issuer':_0x3175bb[_0x6089('0x1b')](_0x6089('0x32'),''),'audience':_0x29419a[_0x6089('0x26')],'state':_0x32170e,'nonce':_0x1b62a4};redis['set'](_0x32170e,JSON[_0x6089('0x21')](_0x29419a));return _0x48370d;}function isValidIdToken(_0x375e6d,_0x5a62e8){try{var _0x4faafd=jwt[_0x6089('0x33')](_0x375e6d,{'complete':!![]});var _0x4e646f=_0x4faafd[_0x6089('0x34')];if(_0x4e646f[_0x6089('0x35')]!==_0x5a62e8[_0x6089('0x36')])return![];if(_0x4e646f[_0x6089('0x37')]!==_0x5a62e8[_0x6089('0x38')])return![];if(_0x4e646f[_0x6089('0x2e')]!==_0x5a62e8['nonce'])return![];if(moment()[_0x6089('0x39')](moment[_0x6089('0x3a')](_0x4e646f['exp'])))return![];return!![];}catch(_0x67906f){throw _0x67906f;}}function refreshOauth2MicrosoftAccessToken(_0x14a67f){return Promise[_0x6089('0x3b')]()[_0x6089('0x3c')](function(){if(_0x14a67f[_0x6089('0x3d')])return _0x14a67f;return db['CloudProvider'][_0x6089('0x3e')]({'where':{'id':_0x14a67f['id']},'raw':!![]});})[_0x6089('0x3c')](function(_0x36e5cd){var _0x414e67={'grant_type':_0x6089('0x3f'),'refresh_token':_0x36e5cd['data6'],'scope':getAccessTokenScope(_0x36e5cd),'redirect_uri':_0x36e5cd[_0x6089('0x29')],'client_id':_0x36e5cd['data1'],'client_secret':encryptor[_0x6089('0x40')](_0x36e5cd[_0x6089('0x3d')])};var _0x2c6437={'method':_0x6089('0x41'),'uri':MICROSOFT_AUTH_URL[_0x6089('0x1b')](_0x6089('0x1c'),_0x36e5cd[_0x6089('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x414e67,'json':!![]};return rp(_0x2c6437);})[_0x6089('0x3c')](function(_0x133447){_0x14a67f[_0x6089('0x42')]=_0x133447[_0x6089('0x43')];_0x14a67f[_0x6089('0x44')]=_0x133447[_0x6089('0x3f')];return db[_0x6089('0x45')][_0x6089('0x46')]({'data5':_0x14a67f[_0x6089('0x42')],'data6':_0x14a67f[_0x6089('0x44')]},{'where':{'id':_0x14a67f['id']}});})['then'](function(){return _0x14a67f;})['catch'](function(_0x2a8e30){logger[_0x6089('0x47')](_0x6089('0x48'),_0x14a67f['id'],_0x2a8e30);});}function getOauth2MicrosoftAccessToken(_0x22b66b,_0x41eb74){var _0x506037={'grant_type':_0x6089('0x49'),'code':_0x22b66b,'scope':getAccessTokenScope(_0x41eb74),'redirect_uri':_0x41eb74[_0x6089('0x29')],'client_id':_0x41eb74['data1'],'client_secret':encryptor[_0x6089('0x40')](_0x41eb74[_0x6089('0x3d')])};var _0x2b9653={'method':_0x6089('0x41'),'uri':MICROSOFT_AUTH_URL[_0x6089('0x1b')]('{TENANT_ID}',_0x41eb74[_0x6089('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x506037,'json':!![]};return rp(_0x2b9653);}function startRefreshInterval(_0x259377){var _0x26ca4b=schedule[_0x6089('0x4a')];if(_0x26ca4b[_0x259377['id']])clearInterval(_0x26ca4b[_0x259377['id']]);_0x26ca4b[_0x259377['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x259377['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0x6089('0x4a')]=_0x26ca4b;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x6089('0x4b')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x6089('0x3c')](function(_0x41bb95){var _0x28df48=_0x41bb95[_0x6089('0x14')](function(_0x1b2c12){return refreshOauth2MicrosoftAccessToken(_0x1b2c12)[_0x6089('0x3c')](function(_0x45fbd0){startRefreshInterval(_0x45fbd0);});});return Promise[_0x6089('0x4c')](_0x28df48);})['catch'](function(_0x47e926){var _0x11adf7=_0x47e926?util[_0x6089('0x4d')](_0x47e926,{'showHidden':![],'depth':null}):'';logger['error'](_0x6089('0x4e'),_0x11adf7);});}module['exports']={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0xdbb5=['https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','offline_access','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/authorize','/token','map','type','push','/.default','Dynamics365','data7','code','toString','base64','randomBytes','client_id','data1','join','response_mode','form_post','scope','state','nonce','prompt','login','oauth2Claims','replace','stringify','decode','iss','issuer','aud','audience','isAfter','unix','exp','resolve','then','CloudProvider','refresh_token','data6','data4','data3','POST','{TENANT_ID}','data2','data5','access_token','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code','decryptString','intervals','bind','findAll','all','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','crypto','jsonwebtoken','moment','../../components/encryptor','../../config/environment','../../config/logger','api','../../config/schedule/cloud-provider','../../mysqldb','defaults','redis','localhost'];(function(_0x1d52ac,_0x14a509){var _0x1c56ce=function(_0x3014f0){while(--_0x3014f0){_0x1d52ac['push'](_0x1d52ac['shift']());}};_0x1c56ce(++_0x14a509);}(_0xdbb5,0x170));var _0x5dbb=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdbb5[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var crypto=require(_0x5dbb('0x0'));var jwt=require(_0x5dbb('0x1'));var moment=require(_0x5dbb('0x2'));var Redis=require('ioredis');var rp=require('request-promise');var util=require('util');var encryptor=require(_0x5dbb('0x3'));var config=require(_0x5dbb('0x4'));var logger=require(_0x5dbb('0x5'))(_0x5dbb('0x6'));var schedule=require(_0x5dbb('0x7'));var db=require(_0x5dbb('0x8'))['db'];config['redis']=_[_0x5dbb('0x9')](config[_0x5dbb('0xa')],{'host':_0x5dbb('0xb'),'port':0x18eb});var redis=new Redis(config['redis']);var MICROSOFT_AUTH_URL=_0x5dbb('0xc');var AZURE_AUTH_SCOPES={'Outlook365':[_0x5dbb('0xd'),'profile',_0x5dbb('0xe'),_0x5dbb('0xf'),_0x5dbb('0x10'),_0x5dbb('0x11'),_0x5dbb('0x12')],'Dynamics365':[_0x5dbb('0xd'),_0x5dbb('0xf')]};var MICROSOFT_AUTH_ENDPOINT=_0x5dbb('0x13');var MICROSOFT_TOKEN_ENDPOINT=_0x5dbb('0x14');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x5ddae4){var _0x44fbc8=_[_0x5dbb('0x15')](AZURE_AUTH_SCOPES[_0x5ddae4[_0x5dbb('0x16')]]);if(_0x5ddae4[_0x5dbb('0x16')]==='Dynamics365')_0x44fbc8[_0x5dbb('0x17')](_0x5ddae4['data7']+_0x5dbb('0x18'));return _0x44fbc8['join']('\x20');}function getAccessTokenScope(_0x3acc31){if(_0x3acc31[_0x5dbb('0x16')]==='Outlook365')return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x3acc31[_0x5dbb('0x16')]===_0x5dbb('0x19'))return _0x3acc31[_0x5dbb('0x1a')]+_0x5dbb('0x18');}function generateMicrosoftAuthorizationUrl(_0x41a7cf,_0xe1890){var _0x2e4d09=MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0x41a7cf['data2']);var _0x4f8543=[_0x5dbb('0x1b'),'id_token'];var _0x40fccc=Buffer['from'](JSON['stringify']({'id':_0xe1890}))[_0x5dbb('0x1c')](_0x5dbb('0x1d'));var _0x2e4d80=crypto[_0x5dbb('0x1e')](0x10)[_0x5dbb('0x1c')]('hex');var _0x1ed901=getAuthorizationScopes(_0x41a7cf);var _0x343953=[{'key':_0x5dbb('0x1f'),'value':_0x41a7cf[_0x5dbb('0x20')]},{'key':'response_type','value':encodeURIComponent(_0x4f8543[_0x5dbb('0x21')]('\x20'))},{'key':'redirect_uri','value':_0x41a7cf['data4']},{'key':_0x5dbb('0x22'),'value':_0x5dbb('0x23')},{'key':_0x5dbb('0x24'),'value':encodeURIComponent(_0x1ed901)},{'key':_0x5dbb('0x25'),'value':_0x40fccc},{'key':_0x5dbb('0x26'),'value':_0x2e4d80},{'key':_0x5dbb('0x27'),'value':_0x5dbb('0x28')}];var _0x222135=_0x2e4d09+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x5dbb('0x15')](_0x343953,function(_0x30180f){return _0x30180f['key']+'='+_0x30180f['value'];})[_0x5dbb('0x21')]('&');_0x41a7cf[_0x5dbb('0x29')]={'issuer':_0x2e4d09[_0x5dbb('0x2a')]('oauth2/',''),'audience':_0x41a7cf[_0x5dbb('0x20')],'state':_0x40fccc,'nonce':_0x2e4d80};redis['set'](_0x40fccc,JSON[_0x5dbb('0x2b')](_0x41a7cf));return _0x222135;}function isValidIdToken(_0x405491,_0x4a8ad1){try{var _0x3f2e1c=jwt[_0x5dbb('0x2c')](_0x405491,{'complete':!![]});var _0x36f5b6=_0x3f2e1c['payload'];if(_0x36f5b6[_0x5dbb('0x2d')]!==_0x4a8ad1[_0x5dbb('0x2e')])return![];if(_0x36f5b6[_0x5dbb('0x2f')]!==_0x4a8ad1[_0x5dbb('0x30')])return![];if(_0x36f5b6[_0x5dbb('0x26')]!==_0x4a8ad1[_0x5dbb('0x26')])return![];if(moment()[_0x5dbb('0x31')](moment[_0x5dbb('0x32')](_0x36f5b6[_0x5dbb('0x33')])))return![];return!![];}catch(_0x3d4b36){throw _0x3d4b36;}}function refreshOauth2MicrosoftAccessToken(_0x275810){return Promise[_0x5dbb('0x34')]()[_0x5dbb('0x35')](function(){if(_0x275810['data3'])return _0x275810;return db[_0x5dbb('0x36')]['findOne']({'where':{'id':_0x275810['id']},'raw':!![]});})[_0x5dbb('0x35')](function(_0x3a4a67){var _0x2161c1={'grant_type':_0x5dbb('0x37'),'refresh_token':_0x3a4a67[_0x5dbb('0x38')],'scope':getAccessTokenScope(_0x3a4a67),'redirect_uri':_0x3a4a67[_0x5dbb('0x39')],'client_id':_0x3a4a67[_0x5dbb('0x20')],'client_secret':encryptor['decryptString'](_0x3a4a67[_0x5dbb('0x3a')])};var _0x141b38={'method':_0x5dbb('0x3b'),'uri':MICROSOFT_AUTH_URL[_0x5dbb('0x2a')](_0x5dbb('0x3c'),_0x3a4a67[_0x5dbb('0x3d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x2161c1,'json':!![]};return rp(_0x141b38);})['then'](function(_0x17f60b){_0x275810[_0x5dbb('0x3e')]=_0x17f60b[_0x5dbb('0x3f')];_0x275810[_0x5dbb('0x38')]=_0x17f60b['refresh_token'];return db[_0x5dbb('0x36')][_0x5dbb('0x40')]({'data5':_0x275810['data5'],'data6':_0x275810[_0x5dbb('0x38')]},{'where':{'id':_0x275810['id']}});})['then'](function(){return _0x275810;})[_0x5dbb('0x41')](function(_0x32a8e7){logger[_0x5dbb('0x42')](_0x5dbb('0x43'),_0x275810['id'],_0x32a8e7);});}function getOauth2MicrosoftAccessToken(_0x58030e,_0x19612d){var _0xc96674={'grant_type':_0x5dbb('0x44'),'code':_0x58030e,'scope':getAccessTokenScope(_0x19612d),'redirect_uri':_0x19612d[_0x5dbb('0x39')],'client_id':_0x19612d[_0x5dbb('0x20')],'client_secret':encryptor[_0x5dbb('0x45')](_0x19612d[_0x5dbb('0x3a')])};var _0x8fbe33={'method':'POST','uri':MICROSOFT_AUTH_URL[_0x5dbb('0x2a')](_0x5dbb('0x3c'),_0x19612d['data2'])+MICROSOFT_TOKEN_ENDPOINT,'form':_0xc96674,'json':!![]};return rp(_0x8fbe33);}function startRefreshInterval(_0x4870dc){var _0x204b17=schedule[_0x5dbb('0x46')];if(_0x204b17[_0x4870dc['id']])clearInterval(_0x204b17[_0x4870dc['id']]);_0x204b17[_0x4870dc['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x5dbb('0x47')](this,{'id':_0x4870dc['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x204b17;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x5dbb('0x48')]({'where':{'data6':{'$ne':null}},'raw':!![]})[_0x5dbb('0x35')](function(_0x280278){var _0x8b8bf4=_0x280278[_0x5dbb('0x15')](function(_0x30e615){return refreshOauth2MicrosoftAccessToken(_0x30e615)[_0x5dbb('0x35')](function(_0x3ee00c){startRefreshInterval(_0x3ee00c);});});return Promise[_0x5dbb('0x49')](_0x8b8bf4);})[_0x5dbb('0x41')](function(_0x57bace){var _0x341a1a=_0x57bace?util['inspect'](_0x57bace,{'showHidden':![],'depth':null}):'';logger[_0x5dbb('0x42')](_0x5dbb('0x4a'),_0x341a1a);});}module[_0x5dbb('0x4b')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index 09fdea6..3151b6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb366=['code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','request','then','info','CloudProvider,\x20%s,\x20%s','debug','request\x20sent','stringify','error'];(function(_0x5d23be,_0x3b4f3c){var _0x4d60a9=function(_0x57dce7){while(--_0x57dce7){_0x5d23be['push'](_0x5d23be['shift']());}};_0x4d60a9(++_0x3b4f3c);}(_0xb366,0xa4));var _0x6b36=function(_0x5a74da,_0xb4b3e3){_0x5a74da=_0x5a74da-0x0;var _0x79fbc3=_0xb366[_0x5a74da];return _0x79fbc3;};'use strict';var _=require(_0x6b36('0x0'));var util=require('util');var moment=require(_0x6b36('0x1'));var BPromise=require(_0x6b36('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b36('0x3'));var db=require(_0x6b36('0x4'))['db'];var utils=require(_0x6b36('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x6b36('0x6'));var client=jayson[_0x6b36('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3997c0,_0x4fe38c,_0x4c6f4c){return new BPromise(function(_0x301a30,_0xee898a){return client[_0x6b36('0x8')](_0x3997c0,_0x4c6f4c)[_0x6b36('0x9')](function(_0x49c125){logger[_0x6b36('0xa')](_0x6b36('0xb'),_0x4fe38c,'request\x20sent');logger[_0x6b36('0xc')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x4fe38c,_0x6b36('0xd'),JSON[_0x6b36('0xe')](_0x49c125));if(_0x49c125[_0x6b36('0xf')]){if(_0x49c125[_0x6b36('0xf')][_0x6b36('0x10')]===0x1f4){logger[_0x6b36('0xf')]('CloudProvider,\x20%s,\x20%s',_0x4fe38c,_0x49c125[_0x6b36('0xf')][_0x6b36('0x11')]);return _0xee898a(_0x49c125['error'][_0x6b36('0x11')]);}logger['error'](_0x6b36('0xb'),_0x4fe38c,_0x49c125['error']['message']);return _0x301a30(_0x49c125['error'][_0x6b36('0x11')]);}else{logger[_0x6b36('0xa')](_0x6b36('0xb'),_0x4fe38c,'request\x20sent');_0x301a30(_0x49c125[_0x6b36('0x12')]['message']);}})[_0x6b36('0x13')](function(_0xf7b45a){logger[_0x6b36('0xf')]('CloudProvider,\x20%s,\x20%s',_0x4fe38c,_0xf7b45a);_0xee898a(_0xf7b45a);});});}
\ No newline at end of file
+var _0xce14=['code','message','result','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','CloudProvider,\x20%s,\x20%s','request\x20sent','CloudProvider,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x45df1c,_0x26abb5){var _0x2ead21=function(_0x2fea48){while(--_0x2fea48){_0x45df1c['push'](_0x45df1c['shift']());}};_0x2ead21(++_0x26abb5);}(_0xce14,0x17f));var _0x4ce1=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xce14[_0x2f5ac5];return _0x37c9a8;};'use strict';var _=require('lodash');var util=require(_0x4ce1('0x0'));var moment=require('moment');var BPromise=require(_0x4ce1('0x1'));var rs=require(_0x4ce1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4ce1('0x3'))['db'];var utils=require(_0x4ce1('0x4'));var logger=require(_0x4ce1('0x5'))(_0x4ce1('0x6'));var config=require(_0x4ce1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x4ce1('0x8')][_0x4ce1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f603d,_0x2b9923,_0x539c1d){return new BPromise(function(_0x256648,_0x2beed4){return client[_0x4ce1('0xa')](_0x1f603d,_0x539c1d)['then'](function(_0x1b5bd8){logger[_0x4ce1('0xb')](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));logger['debug'](_0x4ce1('0xe'),_0x2b9923,_0x4ce1('0xd'),JSON[_0x4ce1('0xf')](_0x1b5bd8));if(_0x1b5bd8[_0x4ce1('0x10')]){if(_0x1b5bd8['error'][_0x4ce1('0x11')]===0x1f4){logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x2beed4(_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);}logger[_0x4ce1('0x10')](_0x4ce1('0xc'),_0x2b9923,_0x1b5bd8[_0x4ce1('0x10')][_0x4ce1('0x12')]);return _0x256648(_0x1b5bd8['error'][_0x4ce1('0x12')]);}else{logger['info'](_0x4ce1('0xc'),_0x2b9923,_0x4ce1('0xd'));_0x256648(_0x1b5bd8[_0x4ce1('0x13')][_0x4ce1('0x12')]);}})['catch'](function(_0x221306){logger['error']('CloudProvider,\x20%s,\x20%s',_0x2b9923,_0x221306);_0x2beed4(_0x221306);});});}
\ No newline at end of file
index c7ef6f0..a1c9fe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['put','update','delete','destroy','/:id/oauth2/microsoft/authorize/','/oauth2/microsoft/callback','oauth2MicrosoftCallback','exports','Router','./cloudProvider.controller','get','isAuthenticated','/:id','post','create'];(function(_0x390f64,_0x26b400){var _0x148962=function(_0x9fd921){while(--_0x9fd921){_0x390f64['push'](_0x390f64['shift']());}};_0x148962(++_0x26b400);}(_0xadb5,0xad));var _0x5adb=function(_0x488c43,_0x43214b){_0x488c43=_0x488c43-0x0;var _0x2dbfca=_0xadb5[_0x488c43];return _0x2dbfca;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['index']);router[_0x5adb('0x2')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller['show']);router[_0x5adb('0x5')]('/',auth[_0x5adb('0x3')](),controller[_0x5adb('0x6')]);router[_0x5adb('0x7')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0x8')]);router[_0x5adb('0x9')](_0x5adb('0x4'),auth[_0x5adb('0x3')](),controller[_0x5adb('0xa')]);router[_0x5adb('0x2')](_0x5adb('0xb'),auth[_0x5adb('0x3')](),controller['oauth2MicrosoftAuthorize']);router['post'](_0x5adb('0xc'),controller[_0x5adb('0xd')]);module[_0x5adb('0xe')]=router;
\ No newline at end of file
+var _0xc4aa=['put','/:id','destroy','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','/oauth2/microsoft/callback','exports','express','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','show','post','create'];(function(_0x3be714,_0x38e9f4){var _0xcf112e=function(_0x15d9c2){while(--_0x15d9c2){_0x3be714['push'](_0x3be714['shift']());}};_0xcf112e(++_0x38e9f4);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xc4aa[_0x21549c];return _0x426cbd;};'use strict';var express=require(_0xac4a('0x0'));var router=express[_0xac4a('0x1')]();var auth=require(_0xac4a('0x2'));var controller=require(_0xac4a('0x3'));router[_0xac4a('0x4')]('/',auth[_0xac4a('0x5')](),controller['index']);router['get']('/:id',auth[_0xac4a('0x5')](),controller[_0xac4a('0x6')]);router[_0xac4a('0x7')]('/',auth[_0xac4a('0x5')](),controller[_0xac4a('0x8')]);router[_0xac4a('0x9')](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller['update']);router['delete'](_0xac4a('0xa'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xb')]);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x5')](),controller[_0xac4a('0xd')]);router['post'](_0xac4a('0xe'),controller['oauth2MicrosoftCallback']);module[_0xac4a('0xf')]=router;
\ No newline at end of file
index 2d6c600..8fbc117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c86=['name','STRING'];(function(_0x2fd160,_0x53c0d6){var _0x5c2031=function(_0x8ecfa5){while(--_0x8ecfa5){_0x2fd160['push'](_0x2fd160['shift']());}};_0x5c2031(++_0x53c0d6);}(_0x5c86,0x73));var _0x65c8=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x5c86[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x65c8('0x0')],'unique':_0x65c8('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x65c8('0x0')]},'companyId':{'type':Sequelize['STRING']},'website':{'type':Sequelize[_0x65c8('0x0')]},'phone':{'type':Sequelize[_0x65c8('0x0')]},'fax':{'type':Sequelize[_0x65c8('0x0')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x65c8('0x0')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x65c8('0x0')]},'country':{'type':Sequelize[_0x65c8('0x0')]},'email':{'type':Sequelize[_0x65c8('0x0')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x65c8('0x0')]},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0x65c8('0x0')]},'sCity':{'type':Sequelize[_0x65c8('0x0')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x65c8('0x0')]}};
\ No newline at end of file
+var _0xd5fa=['name','STRING','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd5fa,0x1ae));var _0xad5f=function(_0x2bf2e7,_0x1ce9f1){_0x2bf2e7=_0x2bf2e7-0x0;var _0x4ceb7f=_0xd5fa[_0x2bf2e7];return _0x4ceb7f;};'use strict';var Sequelize=require(_0xad5f('0x0'));module[_0xad5f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xad5f('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize['STRING']},'companyId':{'type':Sequelize[_0xad5f('0x3')]},'website':{'type':Sequelize[_0xad5f('0x3')]},'phone':{'type':Sequelize[_0xad5f('0x3')]},'fax':{'type':Sequelize[_0xad5f('0x3')]},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xad5f('0x3')]},'postalCode':{'type':Sequelize[_0xad5f('0x3')]},'city':{'type':Sequelize[_0xad5f('0x3')]},'country':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xad5f('0x3')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0xad5f('0x3')]},'sStreet':{'type':Sequelize[_0xad5f('0x3')]},'sPostalCode':{'type':Sequelize[_0xad5f('0x3')]},'sCity':{'type':Sequelize[_0xad5f('0x3')]},'sCountry':{'type':Sequelize[_0xad5f('0x3')]},'description':{'type':Sequelize[_0xad5f('0x3')]}};
\ No newline at end of file
index 5bd4eda..3a3c333 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x20c9=['role','Companies','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','ids','omit','getContacts','CmContact','pick','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','get','UserProfileResource','destroy','error','stack','name','send','CmCompany','describe','model','keys','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','map','options','includeAll','include','findAll','catch','show','params','rawAttributes','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x2820fc,_0x481318){var _0x1e1508=function(_0x144d5b){while(--_0x144d5b){_0x2820fc['push'](_0x2820fc['shift']());}};_0x1e1508(++_0x481318);}(_0x20c9,0x163));var _0x920c=function(_0x504df1,_0x289598){_0x504df1=_0x504df1-0x0;var _0x1063b5=_0x20c9[_0x504df1];return _0x1063b5;};'use strict';var emlformat=require(_0x920c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x920c('0x1'));var jsonpatch=require(_0x920c('0x2'));var rp=require('request-promise');var moment=require(_0x920c('0x3'));var BPromise=require(_0x920c('0x4'));var Mustache=require(_0x920c('0x5'));var util=require(_0x920c('0x6'));var path=require(_0x920c('0x7'));var sox=require(_0x920c('0x8'));var csv=require('to-csv');var ejs=require(_0x920c('0x9'));var fs=require('fs');var fs_extra=require(_0x920c('0xa'));var _=require('lodash');var squel=require(_0x920c('0xb'));var crypto=require(_0x920c('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x920c('0xd'));var toCsv=require(_0x920c('0xe'));var querystring=require(_0x920c('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x920c('0x10'));var qs=require(_0x920c('0x11'));var as=require(_0x920c('0x12'));var hardwareService=require(_0x920c('0x13'));var logger=require(_0x920c('0x14'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x920c('0x15'));var db=require(_0x920c('0x16'))['db'];function respondWithStatusCode(_0x5acc9f,_0x5e66c6){_0x5e66c6=_0x5e66c6||0xcc;return function(_0xcd93f9){if(_0xcd93f9){return _0x5acc9f[_0x920c('0x17')](_0x5e66c6);}return _0x5acc9f[_0x920c('0x18')](_0x5e66c6)[_0x920c('0x19')]();};}function respondWithResult(_0x2f45e8,_0x4e770a){_0x4e770a=_0x4e770a||0xc8;return function(_0x12d2a7){if(_0x12d2a7){return _0x2f45e8['status'](_0x4e770a)[_0x920c('0x1a')](_0x12d2a7);}};}function respondWithFilteredResult(_0x22bc2d,_0x5118cd){return function(_0x5588ad){if(_0x5588ad){var _0xbb4dde=typeof _0x5118cd[_0x920c('0x1b')]===_0x920c('0x1c')&&typeof _0x5118cd[_0x920c('0x1d')]===_0x920c('0x1c');var _0x4e2f8b=_0x5588ad[_0x920c('0x1e')];var _0x29e512=_0xbb4dde?0x0:_0x5118cd[_0x920c('0x1b')];var _0x451a95=_0xbb4dde?_0x5588ad[_0x920c('0x1e')]:_0x5118cd[_0x920c('0x1b')]+_0x5118cd[_0x920c('0x1d')];var _0x31d76c;if(_0x451a95>=_0x4e2f8b){_0x451a95=_0x4e2f8b;_0x31d76c=0xc8;}else{_0x31d76c=0xce;}_0x22bc2d['status'](_0x31d76c);return _0x22bc2d['set'](_0x920c('0x1f'),_0x29e512+'-'+_0x451a95+'/'+_0x4e2f8b)[_0x920c('0x1a')](_0x5588ad);}return null;};}function patchUpdates(_0x45c01a){return function(_0x1f8761){try{jsonpatch[_0x920c('0x20')](_0x1f8761,_0x45c01a,!![]);}catch(_0x27e9ec){return BPromise[_0x920c('0x21')](_0x27e9ec);}return _0x1f8761[_0x920c('0x22')]();};}function saveUpdates(_0x563d42,_0x99fa34){return function(_0x531866){if(_0x531866){return _0x531866[_0x920c('0x23')](_0x563d42)[_0x920c('0x24')](function(_0x55f088){return _0x55f088;});}return null;};}function removeEntity(_0x46cb5e,_0x53bd8a){return function(_0xf23862){if(_0xf23862){return _0xf23862['destroy']()[_0x920c('0x24')](function(){var _0x282a67=_0xf23862[_0x920c('0x25')]({'plain':!![]});var _0x44c607='Companies';return db[_0x920c('0x26')][_0x920c('0x27')]({'where':{'type':_0x44c607,'resourceId':_0x282a67['id']}})[_0x920c('0x24')](function(){return _0xf23862;});})['then'](function(){_0x46cb5e['status'](0xcc)[_0x920c('0x19')]();});}};}function handleEntityNotFound(_0x5c809b,_0x25dfb9){return function(_0x17246c){if(!_0x17246c){_0x5c809b[_0x920c('0x17')](0x194);}return _0x17246c;};}function handleError(_0xe4f268,_0xa925c6){_0xa925c6=_0xa925c6||0x1f4;return function(_0x3e622e){logger[_0x920c('0x28')](_0x3e622e[_0x920c('0x29')]);if(_0x3e622e[_0x920c('0x2a')]){delete _0x3e622e[_0x920c('0x2a')];}_0xe4f268[_0x920c('0x18')](_0xa925c6)[_0x920c('0x2b')](_0x3e622e);};}exports['index']=function(_0x251794,_0x40ed64){var _0x5738a5={},_0x79b61c={},_0x1cee08={'count':0x0,'rows':[]};return db[_0x920c('0x2c')][_0x920c('0x2d')]()[_0x920c('0x24')](function(_0x36fe0f){_0x79b61c[_0x920c('0x2e')]=_[_0x920c('0x2f')](_0x36fe0f);_0x79b61c[_0x920c('0x30')]=_[_0x920c('0x2f')](_0x251794[_0x920c('0x30')]);_0x79b61c['filters']=_['intersection'](_0x79b61c['model'],_0x79b61c[_0x920c('0x30')]);_0x5738a5[_0x920c('0x31')]=_[_0x920c('0x32')](_0x79b61c['model'],qs[_0x920c('0x33')](_0x251794['query']['fields']));_0x5738a5[_0x920c('0x31')]=_0x5738a5[_0x920c('0x31')][_0x920c('0x34')]?_0x5738a5[_0x920c('0x31')]:_0x79b61c['model'];if(!_0x251794['query'][_0x920c('0x35')](_0x920c('0x36'))){_0x5738a5['limit']=qs['limit'](_0x251794[_0x920c('0x30')][_0x920c('0x1d')]);_0x5738a5[_0x920c('0x1b')]=qs[_0x920c('0x1b')](_0x251794[_0x920c('0x30')][_0x920c('0x1b')]);}_0x5738a5[_0x920c('0x37')]=qs[_0x920c('0x38')](_0x251794[_0x920c('0x30')][_0x920c('0x38')]);_0x5738a5[_0x920c('0x39')]=qs['filters'](_['pick'](_0x251794[_0x920c('0x30')],_0x79b61c[_0x920c('0x3a')]),_0x36fe0f);if(_0x251794[_0x920c('0x30')][_0x920c('0x3b')]){_0x5738a5['where']=_[_0x920c('0x3c')](_0x5738a5[_0x920c('0x39')],{'$or':_[_0x920c('0x3d')](_0x5738a5['attributes'],function(_0x2ceedf){var _0x40cc1d={};_0x40cc1d[_0x2ceedf]={'$like':'%'+_0x251794[_0x920c('0x30')]['filter']+'%'};return _0x40cc1d;})});}_0x5738a5=_['merge']({},_0x5738a5,_0x251794[_0x920c('0x3e')]);var _0x16a59f={'where':_0x5738a5[_0x920c('0x39')]};return db[_0x920c('0x2c')][_0x920c('0x1e')](_0x16a59f)['then'](function(_0x2014c8){_0x1cee08['count']=_0x2014c8;if(_0x251794[_0x920c('0x30')][_0x920c('0x3f')]){_0x5738a5[_0x920c('0x40')]=[{'all':!![]}];}return db[_0x920c('0x2c')][_0x920c('0x41')](_0x5738a5);})['then'](function(_0x371cc5){_0x1cee08['rows']=_0x371cc5;return _0x1cee08;})[_0x920c('0x24')](respondWithFilteredResult(_0x40ed64,_0x5738a5))[_0x920c('0x42')](handleError(_0x40ed64,null));})[_0x920c('0x42')](handleError(_0x40ed64,null));};exports[_0x920c('0x43')]=function(_0x653dfa,_0x3d3898){var _0x103431={'raw':![],'where':{'id':_0x653dfa[_0x920c('0x44')]['id']}},_0x1f3f78={};_0x1f3f78[_0x920c('0x2e')]=_[_0x920c('0x2f')](db['CmCompany'][_0x920c('0x45')]);_0x1f3f78[_0x920c('0x30')]=_[_0x920c('0x2f')](_0x653dfa[_0x920c('0x30')]);_0x1f3f78[_0x920c('0x3a')]=_[_0x920c('0x32')](_0x1f3f78[_0x920c('0x2e')],_0x1f3f78['query']);_0x103431[_0x920c('0x31')]=_[_0x920c('0x32')](_0x1f3f78[_0x920c('0x2e')],qs[_0x920c('0x33')](_0x653dfa[_0x920c('0x30')]['fields']));_0x103431['attributes']=_0x103431[_0x920c('0x31')][_0x920c('0x34')]?_0x103431['attributes']:_0x1f3f78[_0x920c('0x2e')];if(_0x653dfa['query'][_0x920c('0x3f')]){_0x103431[_0x920c('0x40')]=[{'all':!![]}];}_0x103431=_['merge']({},_0x103431,_0x653dfa[_0x920c('0x3e')]);return db['CmCompany'][_0x920c('0x46')](_0x103431)[_0x920c('0x24')](handleEntityNotFound(_0x3d3898,null))[_0x920c('0x24')](respondWithResult(_0x3d3898,null))[_0x920c('0x42')](handleError(_0x3d3898,null));};exports[_0x920c('0x47')]=function(_0x5bc7a7,_0x36b75b){return db['CmCompany'][_0x920c('0x47')](_0x5bc7a7[_0x920c('0x48')],{})[_0x920c('0x24')](function(_0x70efa1){var _0x50660b=_0x5bc7a7[_0x920c('0x49')][_0x920c('0x25')]({'plain':!![]});if(!_0x50660b)throw new Error(_0x920c('0x4a'));if(_0x50660b[_0x920c('0x4b')]==='user'){var _0x411384=_0x70efa1[_0x920c('0x25')]({'plain':!![]});var _0x31809b=_0x920c('0x4c');return db[_0x920c('0x4d')][_0x920c('0x46')]({'where':{'name':_0x31809b,'userProfileId':_0x50660b[_0x920c('0x4e')]},'raw':!![]})[_0x920c('0x24')](function(_0x21a3a7){if(_0x21a3a7&&_0x21a3a7[_0x920c('0x4f')]===0x0){return db[_0x920c('0x26')][_0x920c('0x47')]({'name':_0x411384[_0x920c('0x2a')],'resourceId':_0x411384['id'],'type':_0x21a3a7[_0x920c('0x2a')],'sectionId':_0x21a3a7['id']},{})['then'](function(){return _0x70efa1;});}else{return _0x70efa1;}})[_0x920c('0x42')](function(_0x3257f3){logger[_0x920c('0x28')](_0x920c('0x50'),_0x3257f3);throw _0x3257f3;});}return _0x70efa1;})[_0x920c('0x24')](respondWithResult(_0x36b75b,0xc9))['catch'](handleError(_0x36b75b,null));};exports[_0x920c('0x23')]=function(_0x24b331,_0x3032e9){if(_0x24b331['body']['id']){delete _0x24b331['body']['id'];}return db[_0x920c('0x2c')]['find']({'where':{'id':_0x24b331[_0x920c('0x44')]['id']}})[_0x920c('0x24')](handleEntityNotFound(_0x3032e9,null))[_0x920c('0x24')](saveUpdates(_0x24b331[_0x920c('0x48')],null))[_0x920c('0x24')](respondWithResult(_0x3032e9,null))[_0x920c('0x42')](handleError(_0x3032e9,null));};exports['destroy']=function(_0x38cc49,_0x5cc1fb){return db[_0x920c('0x2c')][_0x920c('0x46')]({'where':{'id':_0x38cc49[_0x920c('0x44')]['id']}})[_0x920c('0x24')](handleEntityNotFound(_0x5cc1fb,null))[_0x920c('0x24')](removeEntity(_0x5cc1fb,null))['catch'](handleError(_0x5cc1fb,null));};exports[_0x920c('0x2d')]=function(_0x229d29,_0x2b8a05){return db[_0x920c('0x2c')][_0x920c('0x2d')]()['then'](respondWithResult(_0x2b8a05,null))[_0x920c('0x42')](handleError(_0x2b8a05,null));};exports['addContacts']=function(_0x69be80,_0x445e4a,_0x1dab47){return db['CmContact'][_0x920c('0x46')]({'where':{'id':_0x69be80[_0x920c('0x44')]['id']}})['then'](handleEntityNotFound(_0x445e4a,null))[_0x920c('0x24')](function(_0x5dc276){if(_0x5dc276){return _0x5dc276['addContacts'](_0x69be80[_0x920c('0x48')][_0x920c('0x51')],_[_0x920c('0x52')](_0x69be80[_0x920c('0x48')],[_0x920c('0x51'),'id'])||{});}})[_0x920c('0x24')](respondWithResult(_0x445e4a,null))[_0x920c('0x42')](handleError(_0x445e4a,null));};exports[_0x920c('0x53')]=function(_0x5e5611,_0x13eba0,_0x45872a){var _0x37511b={};var _0x377480={};var _0x52582a;var _0x51b825;return db[_0x920c('0x2c')]['findOne']({'where':{'id':_0x5e5611['params']['id']}})[_0x920c('0x24')](handleEntityNotFound(_0x13eba0,null))[_0x920c('0x24')](function(_0x10c260){if(_0x10c260){_0x52582a=_0x10c260;_0x377480['model']=_[_0x920c('0x2f')](db[_0x920c('0x54')]['rawAttributes']);_0x377480[_0x920c('0x30')]=_[_0x920c('0x2f')](_0x5e5611[_0x920c('0x30')]);_0x377480[_0x920c('0x3a')]=_[_0x920c('0x32')](_0x377480[_0x920c('0x2e')],_0x377480['query']);_0x37511b[_0x920c('0x31')]=_['intersection'](_0x377480['model'],qs[_0x920c('0x33')](_0x5e5611['query'][_0x920c('0x33')]));_0x37511b['attributes']=_0x37511b[_0x920c('0x31')][_0x920c('0x34')]?_0x37511b[_0x920c('0x31')]:_0x377480[_0x920c('0x2e')];_0x37511b['order']=qs[_0x920c('0x38')](_0x5e5611[_0x920c('0x30')][_0x920c('0x38')]);_0x37511b[_0x920c('0x39')]=qs[_0x920c('0x3a')](_[_0x920c('0x55')](_0x5e5611[_0x920c('0x30')],_0x377480['filters']));if(_0x5e5611[_0x920c('0x30')]['filter']){_0x37511b['where']=_['merge'](_0x37511b[_0x920c('0x39')],{'$or':_[_0x920c('0x3d')](_0x37511b[_0x920c('0x31')],function(_0x37735b){var _0x3215fd={};_0x3215fd[_0x37735b]={'$like':'%'+_0x5e5611[_0x920c('0x30')]['filter']+'%'};return _0x3215fd;})});}_0x37511b=_['merge']({},_0x37511b,_0x5e5611['options']);return _0x52582a[_0x920c('0x53')](_0x37511b);}})[_0x920c('0x24')](function(_0x464ac0){if(_0x464ac0){_0x51b825=_0x464ac0[_0x920c('0x34')];if(!_0x5e5611[_0x920c('0x30')][_0x920c('0x35')](_0x920c('0x36'))){_0x37511b[_0x920c('0x1d')]=qs[_0x920c('0x1d')](_0x5e5611['query']['limit']);_0x37511b[_0x920c('0x1b')]=qs[_0x920c('0x1b')](_0x5e5611['query'][_0x920c('0x1b')]);}return _0x52582a['getContacts'](_0x37511b);}})[_0x920c('0x24')](function(_0x292938){if(_0x292938){return _0x292938?{'count':_0x51b825,'rows':_0x292938}:null;}})[_0x920c('0x24')](respondWithResult(_0x13eba0,null))[_0x920c('0x42')](handleError(_0x13eba0,null));};
\ No newline at end of file
+var _0xdffe=['nolimit','sort','where','merge','map','filter','includeAll','include','findAll','rows','catch','params','rawAttributes','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','addContacts','ids','omit','getContacts','findOne','CmContact','options','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','get','Companies','UserProfileResource','end','error','stack','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x2145c0,_0x549319){var _0x4c613a=function(_0x4e7350){while(--_0x4e7350){_0x2145c0['push'](_0x2145c0['shift']());}};_0x4c613a(++_0x549319);}(_0xdffe,0xcc));var _0xedff=function(_0x265e81,_0x514eff){_0x265e81=_0x265e81-0x0;var _0x55b6b7=_0xdffe[_0x265e81];return _0x55b6b7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xedff('0x0'));var zipdir=require(_0xedff('0x1'));var jsonpatch=require(_0xedff('0x2'));var rp=require(_0xedff('0x3'));var moment=require('moment');var BPromise=require(_0xedff('0x4'));var Mustache=require(_0xedff('0x5'));var util=require(_0xedff('0x6'));var path=require(_0xedff('0x7'));var sox=require(_0xedff('0x8'));var csv=require(_0xedff('0x9'));var ejs=require(_0xedff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xedff('0xb'));var squel=require(_0xedff('0xc'));var crypto=require(_0xedff('0xd'));var jsforce=require(_0xedff('0xe'));var deskjs=require(_0xedff('0xf'));var toCsv=require('to-csv');var querystring=require(_0xedff('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xedff('0x11'));var qs=require(_0xedff('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xedff('0x13'))(_0xedff('0x14'));var utils=require(_0xedff('0x15'));var config=require(_0xedff('0x16'));var licenseUtil=require(_0xedff('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x566daa,_0x13219e){_0x13219e=_0x13219e||0xcc;return function(_0x80a3e0){if(_0x80a3e0){return _0x566daa['sendStatus'](_0x13219e);}return _0x566daa['status'](_0x13219e)['end']();};}function respondWithResult(_0x224429,_0x1cbc89){_0x1cbc89=_0x1cbc89||0xc8;return function(_0x388a42){if(_0x388a42){return _0x224429[_0xedff('0x18')](_0x1cbc89)['json'](_0x388a42);}};}function respondWithFilteredResult(_0x187e58,_0x521546){return function(_0x2dfc3b){if(_0x2dfc3b){var _0x3c8ac4=typeof _0x521546[_0xedff('0x19')]==='undefined'&&typeof _0x521546[_0xedff('0x1a')]===_0xedff('0x1b');var _0x475eac=_0x2dfc3b['count'];var _0x4aaf2e=_0x3c8ac4?0x0:_0x521546[_0xedff('0x19')];var _0x3e929b=_0x3c8ac4?_0x2dfc3b[_0xedff('0x1c')]:_0x521546['offset']+_0x521546[_0xedff('0x1a')];var _0xb3cc9a;if(_0x3e929b>=_0x475eac){_0x3e929b=_0x475eac;_0xb3cc9a=0xc8;}else{_0xb3cc9a=0xce;}_0x187e58[_0xedff('0x18')](_0xb3cc9a);return _0x187e58[_0xedff('0x1d')](_0xedff('0x1e'),_0x4aaf2e+'-'+_0x3e929b+'/'+_0x475eac)[_0xedff('0x1f')](_0x2dfc3b);}return null;};}function patchUpdates(_0x49b16a){return function(_0x5c94f3){try{jsonpatch[_0xedff('0x20')](_0x5c94f3,_0x49b16a,!![]);}catch(_0x4abeba){return BPromise[_0xedff('0x21')](_0x4abeba);}return _0x5c94f3[_0xedff('0x22')]();};}function saveUpdates(_0x12c417,_0x2f4e23){return function(_0x1da119){if(_0x1da119){return _0x1da119[_0xedff('0x23')](_0x12c417)[_0xedff('0x24')](function(_0x2742bb){return _0x2742bb;});}return null;};}function removeEntity(_0x46df1c,_0x4537b0){return function(_0x1fed6f){if(_0x1fed6f){return _0x1fed6f['destroy']()['then'](function(){var _0x667759=_0x1fed6f[_0xedff('0x25')]({'plain':!![]});var _0x19707e=_0xedff('0x26');return db[_0xedff('0x27')]['destroy']({'where':{'type':_0x19707e,'resourceId':_0x667759['id']}})[_0xedff('0x24')](function(){return _0x1fed6f;});})[_0xedff('0x24')](function(){_0x46df1c[_0xedff('0x18')](0xcc)[_0xedff('0x28')]();});}};}function handleEntityNotFound(_0x1d50d3,_0x372a0a){return function(_0x3fbb41){if(!_0x3fbb41){_0x1d50d3['sendStatus'](0x194);}return _0x3fbb41;};}function handleError(_0x3d9a77,_0x3a7bbf){_0x3a7bbf=_0x3a7bbf||0x1f4;return function(_0x10a043){logger[_0xedff('0x29')](_0x10a043[_0xedff('0x2a')]);if(_0x10a043[_0xedff('0x2b')]){delete _0x10a043[_0xedff('0x2b')];}_0x3d9a77[_0xedff('0x18')](_0x3a7bbf)[_0xedff('0x2c')](_0x10a043);};}exports[_0xedff('0x2d')]=function(_0x24e2a1,_0x411843){var _0x4f7344={},_0x4b58e9={},_0x1aae29={'count':0x0,'rows':[]};return db[_0xedff('0x2e')][_0xedff('0x2f')]()[_0xedff('0x24')](function(_0x2779b8){_0x4b58e9[_0xedff('0x30')]=_[_0xedff('0x31')](_0x2779b8);_0x4b58e9[_0xedff('0x32')]=_[_0xedff('0x31')](_0x24e2a1[_0xedff('0x32')]);_0x4b58e9[_0xedff('0x33')]=_[_0xedff('0x34')](_0x4b58e9['model'],_0x4b58e9[_0xedff('0x32')]);_0x4f7344[_0xedff('0x35')]=_[_0xedff('0x34')](_0x4b58e9[_0xedff('0x30')],qs[_0xedff('0x36')](_0x24e2a1[_0xedff('0x32')][_0xedff('0x36')]));_0x4f7344['attributes']=_0x4f7344['attributes'][_0xedff('0x37')]?_0x4f7344[_0xedff('0x35')]:_0x4b58e9['model'];if(!_0x24e2a1[_0xedff('0x32')][_0xedff('0x38')](_0xedff('0x39'))){_0x4f7344[_0xedff('0x1a')]=qs['limit'](_0x24e2a1[_0xedff('0x32')]['limit']);_0x4f7344[_0xedff('0x19')]=qs['offset'](_0x24e2a1['query'][_0xedff('0x19')]);}_0x4f7344['order']=qs['sort'](_0x24e2a1[_0xedff('0x32')][_0xedff('0x3a')]);_0x4f7344['where']=qs[_0xedff('0x33')](_['pick'](_0x24e2a1[_0xedff('0x32')],_0x4b58e9[_0xedff('0x33')]),_0x2779b8);if(_0x24e2a1[_0xedff('0x32')]['filter']){_0x4f7344[_0xedff('0x3b')]=_[_0xedff('0x3c')](_0x4f7344['where'],{'$or':_[_0xedff('0x3d')](_0x4f7344['attributes'],function(_0x9f808c){var _0x349d6e={};_0x349d6e[_0x9f808c]={'$like':'%'+_0x24e2a1[_0xedff('0x32')][_0xedff('0x3e')]+'%'};return _0x349d6e;})});}_0x4f7344=_[_0xedff('0x3c')]({},_0x4f7344,_0x24e2a1['options']);var _0x47e659={'where':_0x4f7344[_0xedff('0x3b')]};return db[_0xedff('0x2e')][_0xedff('0x1c')](_0x47e659)[_0xedff('0x24')](function(_0x5edaf4){_0x1aae29[_0xedff('0x1c')]=_0x5edaf4;if(_0x24e2a1['query'][_0xedff('0x3f')]){_0x4f7344[_0xedff('0x40')]=[{'all':!![]}];}return db[_0xedff('0x2e')][_0xedff('0x41')](_0x4f7344);})[_0xedff('0x24')](function(_0x3f037f){_0x1aae29[_0xedff('0x42')]=_0x3f037f;return _0x1aae29;})[_0xedff('0x24')](respondWithFilteredResult(_0x411843,_0x4f7344))[_0xedff('0x43')](handleError(_0x411843,null));})[_0xedff('0x43')](handleError(_0x411843,null));};exports['show']=function(_0x1fc8b8,_0x55f891){var _0x2b4e84={'raw':![],'where':{'id':_0x1fc8b8[_0xedff('0x44')]['id']}},_0x18f6ce={};_0x18f6ce[_0xedff('0x30')]=_[_0xedff('0x31')](db[_0xedff('0x2e')][_0xedff('0x45')]);_0x18f6ce[_0xedff('0x32')]=_[_0xedff('0x31')](_0x1fc8b8[_0xedff('0x32')]);_0x18f6ce[_0xedff('0x33')]=_['intersection'](_0x18f6ce['model'],_0x18f6ce[_0xedff('0x32')]);_0x2b4e84[_0xedff('0x35')]=_[_0xedff('0x34')](_0x18f6ce[_0xedff('0x30')],qs[_0xedff('0x36')](_0x1fc8b8['query'][_0xedff('0x36')]));_0x2b4e84[_0xedff('0x35')]=_0x2b4e84[_0xedff('0x35')][_0xedff('0x37')]?_0x2b4e84[_0xedff('0x35')]:_0x18f6ce['model'];if(_0x1fc8b8[_0xedff('0x32')][_0xedff('0x3f')]){_0x2b4e84[_0xedff('0x40')]=[{'all':!![]}];}_0x2b4e84=_[_0xedff('0x3c')]({},_0x2b4e84,_0x1fc8b8['options']);return db[_0xedff('0x2e')][_0xedff('0x46')](_0x2b4e84)['then'](handleEntityNotFound(_0x55f891,null))[_0xedff('0x24')](respondWithResult(_0x55f891,null))[_0xedff('0x43')](handleError(_0x55f891,null));};exports[_0xedff('0x47')]=function(_0x1d483e,_0xbc4e89){return db[_0xedff('0x2e')]['create'](_0x1d483e['body'],{})[_0xedff('0x24')](function(_0x26b1fd){var _0x1b925a=_0x1d483e[_0xedff('0x48')]['get']({'plain':!![]});if(!_0x1b925a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1b925a[_0xedff('0x49')]===_0xedff('0x48')){var _0xcde938=_0x26b1fd[_0xedff('0x25')]({'plain':!![]});var _0x573e7d=_0xedff('0x26');return db[_0xedff('0x4a')][_0xedff('0x46')]({'where':{'name':_0x573e7d,'userProfileId':_0x1b925a[_0xedff('0x4b')]},'raw':!![]})[_0xedff('0x24')](function(_0x3fbce5){if(_0x3fbce5&&_0x3fbce5[_0xedff('0x4c')]===0x0){return db['UserProfileResource']['create']({'name':_0xcde938['name'],'resourceId':_0xcde938['id'],'type':_0x3fbce5[_0xedff('0x2b')],'sectionId':_0x3fbce5['id']},{})['then'](function(){return _0x26b1fd;});}else{return _0x26b1fd;}})[_0xedff('0x43')](function(_0x6457cf){logger[_0xedff('0x29')](_0xedff('0x4d'),_0x6457cf);throw _0x6457cf;});}return _0x26b1fd;})[_0xedff('0x24')](respondWithResult(_0xbc4e89,0xc9))[_0xedff('0x43')](handleError(_0xbc4e89,null));};exports['update']=function(_0x4ab061,_0x1d80fa){if(_0x4ab061[_0xedff('0x4e')]['id']){delete _0x4ab061[_0xedff('0x4e')]['id'];}return db['CmCompany'][_0xedff('0x46')]({'where':{'id':_0x4ab061[_0xedff('0x44')]['id']}})['then'](handleEntityNotFound(_0x1d80fa,null))[_0xedff('0x24')](saveUpdates(_0x4ab061['body'],null))[_0xedff('0x24')](respondWithResult(_0x1d80fa,null))[_0xedff('0x43')](handleError(_0x1d80fa,null));};exports[_0xedff('0x4f')]=function(_0x579ccf,_0x44a1e2){return db[_0xedff('0x2e')]['find']({'where':{'id':_0x579ccf[_0xedff('0x44')]['id']}})[_0xedff('0x24')](handleEntityNotFound(_0x44a1e2,null))[_0xedff('0x24')](removeEntity(_0x44a1e2,null))[_0xedff('0x43')](handleError(_0x44a1e2,null));};exports['describe']=function(_0x1e6fee,_0x439404){return db[_0xedff('0x2e')]['describe']()['then'](respondWithResult(_0x439404,null))[_0xedff('0x43')](handleError(_0x439404,null));};exports[_0xedff('0x50')]=function(_0x33c3b7,_0x4d638a,_0x2e9e47){return db['CmContact'][_0xedff('0x46')]({'where':{'id':_0x33c3b7[_0xedff('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d638a,null))[_0xedff('0x24')](function(_0x183885){if(_0x183885){return _0x183885[_0xedff('0x50')](_0x33c3b7[_0xedff('0x4e')][_0xedff('0x51')],_[_0xedff('0x52')](_0x33c3b7[_0xedff('0x4e')],[_0xedff('0x51'),'id'])||{});}})['then'](respondWithResult(_0x4d638a,null))[_0xedff('0x43')](handleError(_0x4d638a,null));};exports[_0xedff('0x53')]=function(_0xc16c02,_0x1976e8,_0xba7870){var _0x414497={};var _0x49ce29={};var _0x4b4fde;var _0x1726c7;return db['CmCompany'][_0xedff('0x54')]({'where':{'id':_0xc16c02[_0xedff('0x44')]['id']}})[_0xedff('0x24')](handleEntityNotFound(_0x1976e8,null))[_0xedff('0x24')](function(_0x276b13){if(_0x276b13){_0x4b4fde=_0x276b13;_0x49ce29[_0xedff('0x30')]=_[_0xedff('0x31')](db[_0xedff('0x55')]['rawAttributes']);_0x49ce29[_0xedff('0x32')]=_[_0xedff('0x31')](_0xc16c02[_0xedff('0x32')]);_0x49ce29[_0xedff('0x33')]=_[_0xedff('0x34')](_0x49ce29[_0xedff('0x30')],_0x49ce29[_0xedff('0x32')]);_0x414497['attributes']=_[_0xedff('0x34')](_0x49ce29[_0xedff('0x30')],qs[_0xedff('0x36')](_0xc16c02['query'][_0xedff('0x36')]));_0x414497[_0xedff('0x35')]=_0x414497[_0xedff('0x35')][_0xedff('0x37')]?_0x414497[_0xedff('0x35')]:_0x49ce29[_0xedff('0x30')];_0x414497['order']=qs['sort'](_0xc16c02[_0xedff('0x32')][_0xedff('0x3a')]);_0x414497[_0xedff('0x3b')]=qs['filters'](_['pick'](_0xc16c02[_0xedff('0x32')],_0x49ce29[_0xedff('0x33')]));if(_0xc16c02[_0xedff('0x32')][_0xedff('0x3e')]){_0x414497[_0xedff('0x3b')]=_[_0xedff('0x3c')](_0x414497['where'],{'$or':_[_0xedff('0x3d')](_0x414497[_0xedff('0x35')],function(_0x1c2d5f){var _0x5f0de8={};_0x5f0de8[_0x1c2d5f]={'$like':'%'+_0xc16c02[_0xedff('0x32')][_0xedff('0x3e')]+'%'};return _0x5f0de8;})});}_0x414497=_[_0xedff('0x3c')]({},_0x414497,_0xc16c02[_0xedff('0x56')]);return _0x4b4fde[_0xedff('0x53')](_0x414497);}})['then'](function(_0x1dad93){if(_0x1dad93){_0x1726c7=_0x1dad93[_0xedff('0x37')];if(!_0xc16c02['query']['hasOwnProperty']('nolimit')){_0x414497[_0xedff('0x1a')]=qs[_0xedff('0x1a')](_0xc16c02[_0xedff('0x32')]['limit']);_0x414497['offset']=qs[_0xedff('0x19')](_0xc16c02[_0xedff('0x32')]['offset']);}return _0x4b4fde['getContacts'](_0x414497);}})[_0xedff('0x24')](function(_0x488819){if(_0x488819){return _0x488819?{'count':_0x1726c7,'rows':_0x488819}:null;}})['then'](respondWithResult(_0x1976e8,null))[_0xedff('0x43')](handleError(_0x1976e8,null));};
\ No newline at end of file
index 93a7363..6d39548 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x892c=['define','CmCompany','cm_companies','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./cmCompany.attributes'];(function(_0x158173,_0x14c6f1){var _0x130636=function(_0x5b48d4){while(--_0x5b48d4){_0x158173['push'](_0x158173['shift']());}};_0x130636(++_0x14c6f1);}(_0x892c,0x1c6));var _0xc892=function(_0x59af24,_0x201f0e){_0x59af24=_0x59af24-0x0;var _0x5d79d4=_0x892c[_0x59af24];return _0x5d79d4;};'use strict';var _=require(_0xc892('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xc892('0x1'));var moment=require(_0xc892('0x2'));var BPromise=require(_0xc892('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc892('0x4'));var rimraf=require(_0xc892('0x5'));var config=require(_0xc892('0x6'));var attributes=require(_0xc892('0x7'));module['exports']=function(_0x53039c,_0x5539bb){return _0x53039c[_0xc892('0x8')](_0xc892('0x9'),attributes,{'tableName':_0xc892('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41f7=['cm_companies','lodash','util','../../config/logger','api','moment','rimraf','../../config/environment','./cmCompany.attributes','CmCompany'];(function(_0x8a0c86,_0xfe68c1){var _0x4e2c86=function(_0xfa5fad){while(--_0xfa5fad){_0x8a0c86['push'](_0x8a0c86['shift']());}};_0x4e2c86(++_0xfe68c1);}(_0x41f7,0x14b));var _0x741f=function(_0x47edcc,_0x40d7d5){_0x47edcc=_0x47edcc-0x0;var _0x488421=_0x41f7[_0x47edcc];return _0x488421;};'use strict';var _=require(_0x741f('0x0'));var util=require(_0x741f('0x1'));var logger=require(_0x741f('0x2'))(_0x741f('0x3'));var moment=require(_0x741f('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x741f('0x5'));var config=require(_0x741f('0x6'));var attributes=require(_0x741f('0x7'));module['exports']=function(_0xffc848,_0x1d7f60){return _0xffc848['define'](_0x741f('0x8'),attributes,{'tableName':_0x741f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3b49f2f..5a63b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda01=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','CmCompany,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','catch','lodash'];(function(_0x11c7dd,_0x21161d){var _0x8dbaa=function(_0x47c712){while(--_0x47c712){_0x11c7dd['push'](_0x11c7dd['shift']());}};_0x8dbaa(++_0x21161d);}(_0xda01,0x149));var _0x1da0=function(_0x3ef7e6,_0x35bbde){_0x3ef7e6=_0x3ef7e6-0x0;var _0x64c634=_0xda01[_0x3ef7e6];return _0x64c634;};'use strict';var _=require(_0x1da0('0x0'));var util=require(_0x1da0('0x1'));var moment=require(_0x1da0('0x2'));var BPromise=require(_0x1da0('0x3'));var rs=require(_0x1da0('0x4'));var fs=require('fs');var Redis=require(_0x1da0('0x5'));var db=require(_0x1da0('0x6'))['db'];var utils=require(_0x1da0('0x7'));var logger=require('../../config/logger')(_0x1da0('0x8'));var config=require(_0x1da0('0x9'));var jayson=require(_0x1da0('0xa'));var client=jayson[_0x1da0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x474ecc,_0x1eb622,_0x405d72){return new BPromise(function(_0x376276,_0x4878fa){return client[_0x1da0('0xc')](_0x474ecc,_0x405d72)['then'](function(_0x2cfee7){logger['info'](_0x1da0('0xd'),_0x1eb622,_0x1da0('0xe'));logger[_0x1da0('0xf')]('CmCompany,\x20%s,\x20%s,\x20%s',_0x1eb622,'request\x20sent',JSON[_0x1da0('0x10')](_0x2cfee7));if(_0x2cfee7['error']){if(_0x2cfee7[_0x1da0('0x11')]['code']===0x1f4){logger[_0x1da0('0x11')](_0x1da0('0xd'),_0x1eb622,_0x2cfee7[_0x1da0('0x11')]['message']);return _0x4878fa(_0x2cfee7['error'][_0x1da0('0x12')]);}logger[_0x1da0('0x11')](_0x1da0('0xd'),_0x1eb622,_0x2cfee7[_0x1da0('0x11')][_0x1da0('0x12')]);return _0x376276(_0x2cfee7[_0x1da0('0x11')][_0x1da0('0x12')]);}else{logger[_0x1da0('0x13')]('CmCompany,\x20%s,\x20%s',_0x1eb622,'request\x20sent');_0x376276(_0x2cfee7[_0x1da0('0x14')][_0x1da0('0x12')]);}})[_0x1da0('0x15')](function(_0xa166d8){logger[_0x1da0('0x11')](_0x1da0('0xd'),_0x1eb622,_0xa166d8);_0x4878fa(_0xa166d8);});});}
\ No newline at end of file
+var _0xa605=['stringify','error','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0xa605,0x9f));var _0x5a60=function(_0x1659ef,_0x38c512){_0x1659ef=_0x1659ef-0x0;var _0x5cb60f=_0xa605[_0x1659ef];return _0x5cb60f;};'use strict';var _=require(_0x5a60('0x0'));var util=require(_0x5a60('0x1'));var moment=require(_0x5a60('0x2'));var BPromise=require(_0x5a60('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5a60('0x4'));var db=require(_0x5a60('0x5'))['db'];var utils=require(_0x5a60('0x6'));var logger=require(_0x5a60('0x7'))(_0x5a60('0x8'));var config=require('../../config/environment');var jayson=require(_0x5a60('0x9'));var client=jayson[_0x5a60('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7190b2,_0x17f348,_0x311302){return new BPromise(function(_0x2ecd9b,_0x88647f){return client['request'](_0x7190b2,_0x311302)[_0x5a60('0xb')](function(_0x3ce71c){logger[_0x5a60('0xc')](_0x5a60('0xd'),_0x17f348,_0x5a60('0xe'));logger[_0x5a60('0xf')](_0x5a60('0x10'),_0x17f348,_0x5a60('0xe'),JSON[_0x5a60('0x11')](_0x3ce71c));if(_0x3ce71c[_0x5a60('0x12')]){if(_0x3ce71c[_0x5a60('0x12')]['code']===0x1f4){logger[_0x5a60('0x12')](_0x5a60('0xd'),_0x17f348,_0x3ce71c['error'][_0x5a60('0x13')]);return _0x88647f(_0x3ce71c[_0x5a60('0x12')][_0x5a60('0x13')]);}logger[_0x5a60('0x12')](_0x5a60('0xd'),_0x17f348,_0x3ce71c[_0x5a60('0x12')]['message']);return _0x2ecd9b(_0x3ce71c[_0x5a60('0x12')]['message']);}else{logger[_0x5a60('0xc')]('CmCompany,\x20%s,\x20%s',_0x17f348,_0x5a60('0xe'));_0x2ecd9b(_0x3ce71c[_0x5a60('0x14')][_0x5a60('0x13')]);}})[_0x5a60('0x15')](function(_0x1bb049){logger['error']('CmCompany,\x20%s,\x20%s',_0x17f348,_0x1bb049);_0x88647f(_0x1bb049);});});}
\ No newline at end of file
index 09835d7..f920857 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d58=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','describe','/:id','show','/:id/contacts','getContacts','post','create','addContacts','update','delete'];(function(_0x1f9e96,_0x567642){var _0x3fcf87=function(_0x2a7747){while(--_0x2a7747){_0x1f9e96['push'](_0x1f9e96['shift']());}};_0x3fcf87(++_0x567642);}(_0x7d58,0xde));var _0x87d5=function(_0x533676,_0x2be01c){_0x533676=_0x533676-0x0;var _0x32f7bd=_0x7d58[_0x533676];return _0x32f7bd;};'use strict';var multer=require(_0x87d5('0x0'));var util=require(_0x87d5('0x1'));var path=require(_0x87d5('0x2'));var timeout=require('connect-timeout');var express=require(_0x87d5('0x3'));var router=express[_0x87d5('0x4')]();var fs_extra=require(_0x87d5('0x5'));var auth=require(_0x87d5('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmCompany.controller');router[_0x87d5('0x7')]('/',auth[_0x87d5('0x8')](),controller[_0x87d5('0x9')]);router[_0x87d5('0x7')]('/describe',auth[_0x87d5('0x8')](),controller[_0x87d5('0xa')]);router['get'](_0x87d5('0xb'),auth['isAuthenticated'](),controller[_0x87d5('0xc')]);router[_0x87d5('0x7')](_0x87d5('0xd'),auth[_0x87d5('0x8')](),controller[_0x87d5('0xe')]);router[_0x87d5('0xf')]('/',auth[_0x87d5('0x8')](),controller[_0x87d5('0x10')]);router[_0x87d5('0xf')](_0x87d5('0xd'),auth[_0x87d5('0x8')](),controller[_0x87d5('0x11')]);router['put'](_0x87d5('0xb'),auth[_0x87d5('0x8')](),controller[_0x87d5('0x12')]);router[_0x87d5('0x13')](_0x87d5('0xb'),auth['isAuthenticated'](),controller[_0x87d5('0x14')]);module[_0x87d5('0x15')]=router;
\ No newline at end of file
+var _0x780c=['getContacts','create','post','addContacts','delete','destroy','multer','util','Router','../../components/auth/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/contacts'];(function(_0x3a6a1d,_0x22a746){var _0x2356d4=function(_0x3b587a){while(--_0x3b587a){_0x3a6a1d['push'](_0x3a6a1d['shift']());}};_0x2356d4(++_0x22a746);}(_0x780c,0x15a));var _0xc780=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0x780c[_0x382a62];return _0x490a25;};'use strict';var multer=require(_0xc780('0x0'));var util=require(_0xc780('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc780('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xc780('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xc780('0x4'));var controller=require(_0xc780('0x5'));router[_0xc780('0x6')]('/',auth[_0xc780('0x7')](),controller[_0xc780('0x8')]);router[_0xc780('0x6')](_0xc780('0x9'),auth[_0xc780('0x7')](),controller[_0xc780('0xa')]);router[_0xc780('0x6')](_0xc780('0xb'),auth[_0xc780('0x7')](),controller[_0xc780('0xc')]);router[_0xc780('0x6')](_0xc780('0xd'),auth[_0xc780('0x7')](),controller[_0xc780('0xe')]);router['post']('/',auth[_0xc780('0x7')](),controller[_0xc780('0xf')]);router[_0xc780('0x10')]('/:id/contacts',auth[_0xc780('0x7')](),controller[_0xc780('0x11')]);router['put'](_0xc780('0xb'),auth[_0xc780('0x7')](),controller['update']);router[_0xc780('0x12')]('/:id',auth['isAuthenticated'](),controller[_0xc780('0x13')]);module['exports']=router;
\ No newline at end of file
index 078e3d1..ae86ac4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03de=['INTEGER','DATE','NOW','lodash','exports','STRING'];(function(_0x36e3bd,_0x201c77){var _0xdc68e=function(_0x3691c2){while(--_0x3691c2){_0x36e3bd['push'](_0x36e3bd['shift']());}};_0xdc68e(++_0x201c77);}(_0x03de,0x18f));var _0xe03d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03de[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe03d('0x0'));var Sequelize=require('sequelize');module[_0xe03d('0x1')]={'firstName':{'type':Sequelize[_0xe03d('0x2')],'allowNull':![]},'lastName':{'type':Sequelize[_0xe03d('0x2')]},'street':{'type':Sequelize[_0xe03d('0x2')]},'postalCode':{'type':Sequelize[_0xe03d('0x2')]},'city':{'type':Sequelize[_0xe03d('0x2')]},'country':{'type':Sequelize['STRING']},'dateOfBirth':{'type':Sequelize[_0xe03d('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xe03d('0x2')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xe03d('0x2')]},'url':{'type':Sequelize[_0xe03d('0x2')]},'facebook':{'type':Sequelize[_0xe03d('0x2')]},'fb_data':{'type':Sequelize['STRING']},'twitter':{'type':Sequelize['STRING']},'skype':{'type':Sequelize['STRING']},'teams':{'type':Sequelize['STRING']},'viber':{'type':Sequelize[_0xe03d('0x2')]},'line':{'type':Sequelize[_0xe03d('0x2')]},'wechat':{'type':Sequelize[_0xe03d('0x2')]},'telegram':{'type':Sequelize[_0xe03d('0x2')]},'UserId':{'type':Sequelize[_0xe03d('0x3')]},'AdditionalPhones':{'type':Sequelize['STRING']},'priority':{'type':Sequelize['INTEGER'](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xe03d('0x4')],'defaultValue':Sequelize[_0xe03d('0x5')]},'dialTimezone':{'type':Sequelize[_0xe03d('0x2')]},'utcOffset':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x958a=['sequelize','exports','STRING','TEXT','INTEGER','UNSIGNED','DATE','NOW','lodash'];(function(_0x4d7424,_0xfc2fb){var _0x558f8e=function(_0x1696ad){while(--_0x1696ad){_0x4d7424['push'](_0x4d7424['shift']());}};_0x558f8e(++_0xfc2fb);}(_0x958a,0xf2));var _0xa958=function(_0xadcc82,_0x1a1266){_0xadcc82=_0xadcc82-0x0;var _0x5b4a77=_0x958a[_0xadcc82];return _0x5b4a77;};'use strict';var _=require(_0xa958('0x0'));var Sequelize=require(_0xa958('0x1'));module[_0xa958('0x2')]={'firstName':{'type':Sequelize[_0xa958('0x3')],'allowNull':![]},'lastName':{'type':Sequelize[_0xa958('0x3')]},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize[_0xa958('0x3')]},'city':{'type':Sequelize[_0xa958('0x3')]},'country':{'type':Sequelize[_0xa958('0x3')]},'dateOfBirth':{'type':Sequelize[_0xa958('0x3')]},'description':{'type':Sequelize[_0xa958('0x4')]},'phone':{'type':Sequelize[_0xa958('0x3')]},'mobile':{'type':Sequelize[_0xa958('0x3')]},'fax':{'type':Sequelize[_0xa958('0x3')]},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xa958('0x3')]},'facebook':{'type':Sequelize[_0xa958('0x3')]},'fb_data':{'type':Sequelize[_0xa958('0x3')]},'twitter':{'type':Sequelize[_0xa958('0x3')]},'skype':{'type':Sequelize[_0xa958('0x3')]},'teams':{'type':Sequelize[_0xa958('0x3')]},'viber':{'type':Sequelize[_0xa958('0x3')]},'line':{'type':Sequelize[_0xa958('0x3')]},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xa958('0x3')]},'UserId':{'type':Sequelize[_0xa958('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xa958('0x3')]},'priority':{'type':Sequelize[_0xa958('0x5')](0x2)[_0xa958('0x6')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xa958('0x7')],'defaultValue':Sequelize[_0xa958('0x8')]},'dialTimezone':{'type':Sequelize[_0xa958('0x3')]},'utcOffset':{'type':Sequelize[_0xa958('0x5')]}};
\ No newline at end of file
index 0037346..96f1bf4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0x18a79d,_0x57bd2c){var _0x4f8848=function(_0x28af80){while(--_0x28af80){_0x18a79d['push'](_0x18a79d['shift']());}};_0x4f8848(++_0x57bd2c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
+var _0xa9e0=['source','destination','endtime','duration','note','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','UserId','fullname','alias','DESC','findAndCountAll','startCase','Website','Account','closedAt','disposition','secondDisposition','thirdDisposition','Owner','browserName','customerIp','osName','ratingType','subject','substatus','externalUrl','threadId','Interaction','flatten','reverse','value','slice','moment','bluebird','util','squel','ioredis','../../components/contacts','../../components/parsers/qs','../../config/logger','api','../../config/environment/shared','../../mysqldb','redis','localhost','./cmContact.socket','register','status','offset','undefined','limit','count','Content-Range','then','destroy','end','sendStatus','stack','name','describe','getOptions','findAll','query','user','catch','CmContact','find','params','tags','keys','startsWith','cf_','displayName','analytics','CmCustomField','length','columnName','custom','type','values','forEach','hasOwnProperty','body','from','get','isArray','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','ChatOfflineMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperFinal','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','isNil','timezones','utcOffset','additionalPhones','bulkCreate','duplicates','where','$or','push','ListId','findOrCreate','spread','all','show','Tag','color','tag','Phones','ContactItemType','ItemType','literal','Phones.OrderBy','$and','map','format','omit','cf_%d','isEmpty','cm_contacts','id\x20=\x20?','toParam','text','phone','getTags','model','rawAttributes','filters','intersection','attributes','fields','order','sort','pick','filter','merge','nolimit','setTags','findOne','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','contact\x20phone\x20exists','CmHopperAdditionalPhone','item','sequelize','`ItemType`.OrderBy','CmHopperId','ItemType.OrderBy','getAdditionalPhones','PHONE','duplicateAdditionalPhones','CmContactId','toContactId','rescheduleAdditionalPhones','ContactId','options','includeAll','include','getHopperHistories','CmHopperHistory','rows','getJscriptySessions','JscriptySessionReport','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','split','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','root','file','chmodSync','0777','child_process','fork','../../components/import/cm/csv','CompanyId','json','File\x20uploaded\x20correctly!','pid','send','path','meta','import','agent','binding','stringify','message','start\x20child\x20process\x20correctly!','error\x20child\x20process','importUpdates','User','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','-createdAt','resolve','channel','includes','toLowerCase','Invalid\x20channel','range','parse','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0xa9e0[_0xbb091];return _0x467a04;};'use strict';var moment=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var util=require(_0x0a9e('0x2'));var path=require('path');var fs=require('fs');var _=require('lodash');var squel=require(_0x0a9e('0x3'));var Papa=require('papaparse');var Redis=require(_0x0a9e('0x4'));var contacts=require(_0x0a9e('0x5'));var qs=require(_0x0a9e('0x6'));var logger=require(_0x0a9e('0x7'))(_0x0a9e('0x8'));var config=require('../../config/environment');var shared=require(_0x0a9e('0x9'));var db=require(_0x0a9e('0xa'))['db'];config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithResult(_0x307b3e,_0x3ab53f){_0x3ab53f=_0x3ab53f||0xc8;return function(_0xfeb75b){if(_0xfeb75b){return _0x307b3e[_0x0a9e('0xf')](_0x3ab53f)['json'](_0xfeb75b);}};}function respondWithFilteredResult(_0x50dfb2,_0x527cdd){return function(_0x4cfe67){if(_0x4cfe67){var _0x273d4d=typeof _0x527cdd[_0x0a9e('0x10')]===_0x0a9e('0x11')&&typeof _0x527cdd[_0x0a9e('0x12')]===_0x0a9e('0x11');var _0x69aeb7=_0x4cfe67['count'];var _0x4283ce=_0x273d4d?0x0:_0x527cdd[_0x0a9e('0x10')];var _0x2b4227=_0x273d4d?_0x4cfe67[_0x0a9e('0x13')]:_0x527cdd[_0x0a9e('0x10')]+_0x527cdd[_0x0a9e('0x12')];var _0x52a03d;if(_0x2b4227>=_0x69aeb7){_0x2b4227=_0x69aeb7;_0x52a03d=0xc8;}else{_0x52a03d=0xce;}_0x50dfb2[_0x0a9e('0xf')](_0x52a03d);return _0x50dfb2['set'](_0x0a9e('0x14'),_0x4283ce+'-'+_0x2b4227+'/'+_0x69aeb7)['json'](_0x4cfe67);}return null;};}function saveUpdates(_0x16033c){return function(_0x12066b){if(_0x12066b){return _0x12066b['update'](_0x16033c)[_0x0a9e('0x15')](function(_0x5a0a06){return _0x5a0a06;});}return null;};}function removeEntity(_0x459eb1){return function(_0x478723){if(_0x478723){return _0x478723[_0x0a9e('0x16')]()[_0x0a9e('0x15')](function(){_0x459eb1[_0x0a9e('0xf')](0xcc)[_0x0a9e('0x17')]();});}};}function handleEntityNotFound(_0x530eb7){return function(_0x20559e){if(!_0x20559e){_0x530eb7[_0x0a9e('0x18')](0x194);}return _0x20559e;};}function handleError(_0x112016,_0x1c696a){_0x1c696a=_0x1c696a||0x1f4;return function(_0x105080){logger['error'](_0x105080[_0x0a9e('0x19')]);if(_0x105080[_0x0a9e('0x1a')]){delete _0x105080['name'];}_0x112016[_0x0a9e('0xf')](_0x1c696a)['send'](_0x105080);};}exports['index']=function(_0x3a02e1,_0x432e56){var _0x38e7c4={};return contacts[_0x0a9e('0x1b')]()['then'](function(_0xfb6e48){_0x38e7c4=qs[_0x0a9e('0x1c')](_0xfb6e48,_0x3a02e1);return contacts[_0x0a9e('0x1d')](_0x3a02e1[_0x0a9e('0x1e')],_0x3a02e1[_0x0a9e('0x1f')],_0x38e7c4,_0xfb6e48);})[_0x0a9e('0x15')](respondWithFilteredResult(_0x432e56,_0x38e7c4))[_0x0a9e('0x20')](handleError(_0x432e56,null));};exports['destroy']=function(_0x59181e,_0x197ec0){return db[_0x0a9e('0x21')][_0x0a9e('0x22')]({'where':{'id':_0x59181e[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x197ec0,null))[_0x0a9e('0x15')](removeEntity(_0x197ec0,null))['catch'](handleError(_0x197ec0,null));};exports[_0x0a9e('0x1b')]=function(_0x5bfb33,_0x1dc186){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x140511){delete _0x140511[_0x0a9e('0x24')];for(var _0x11c3b6=0x0;_0x11c3b6<Object[_0x0a9e('0x25')](_0x140511)['length'];_0x11c3b6++){var _0x3652a7=Object[_0x0a9e('0x25')](_0x140511)[_0x11c3b6];if(!_[_0x0a9e('0x26')](_0x3652a7,_0x0a9e('0x27'))){_0x140511[_0x3652a7]['columnName']=_0x3652a7;_0x140511[_0x3652a7][_0x0a9e('0x28')]=_0x3652a7;}}return _0x140511;})[_0x0a9e('0x15')](function(_0x1843b2){var _0x824a4f={'where':Boolean(_0x5bfb33[_0x0a9e('0x1e')][_0x0a9e('0x29')])===!![]?undefined:{'$or':[{'ListId':_0x5bfb33[_0x0a9e('0x1e')]['id']},{'ListId':null}]},'raw':!![]};return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x824a4f)['then'](function(_0x426950){for(var _0x5d1e0e=0x0;_0x5d1e0e<_0x426950[_0x0a9e('0x2b')];_0x5d1e0e++){var _0x3ae878=_0x0a9e('0x27')+_0x426950[_0x5d1e0e]['id'];_0x1843b2[_0x3ae878][_0x0a9e('0x2c')]=_0x3ae878;_0x1843b2[_0x3ae878][_0x0a9e('0x28')]=_0x426950[_0x5d1e0e]['alias'];_0x1843b2[_0x3ae878][_0x0a9e('0x2d')]={'type':_0x426950[_0x5d1e0e][_0x0a9e('0x2e')],'values':_0x426950[_0x5d1e0e][_0x0a9e('0x2f')]};}Object[_0x0a9e('0x25')](_0x1843b2)[_0x0a9e('0x30')](function(_0x409319){if(!_0x1843b2[_0x409319][_0x0a9e('0x31')](_0x0a9e('0x2c'))){delete _0x1843b2[_0x409319];}});return _0x1843b2;});})['then'](respondWithResult(_0x1dc186,null))[_0x0a9e('0x20')](handleError(_0x1dc186,null));};exports['merge']=function(_0x2cc7a0,_0x14b13f){var _0x2b7e7f;var _0x3f3d41;var _0x567193;if(_0x2cc7a0[_0x0a9e('0x32')]['id']){delete _0x2cc7a0[_0x0a9e('0x32')]['id'];}return db[_0x0a9e('0x21')][_0x0a9e('0x1d')]({'where':{'id':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}})['then'](function(_0x24936a){if(_0x24936a){if(_0x24936a[_0x0a9e('0x2b')]!==0x2){return null;}_0x24936a[0x0]=_0x24936a[0x0][_0x0a9e('0x34')]({'plain':!![]});_0x24936a[0x1]=_0x24936a[0x1][_0x0a9e('0x34')]({'plain':!![]});delete _0x24936a[0x0]['id'];delete _0x24936a[0x1]['id'];return _['mergeWith'](_0x24936a[0x0],_0x24936a[0x1],function(_0x31916f,_0x3bfce8){if(Array[_0x0a9e('0x35')](_0x3bfce8)&&!_0x3bfce8['length']){return _0x31916f;}else if(!_0x3bfce8){return _0x31916f;}});}})[_0x0a9e('0x15')](handleEntityNotFound(_0x14b13f,null))[_0x0a9e('0x15')](function(_0x289467){if(_0x289467){if(_0x289467['tags']&&_['isArray'](_0x289467[_0x0a9e('0x24')])){_0x289467[_0x0a9e('0x24')]=_0x289467['tags'][_0x0a9e('0x36')]();}logger[_0x0a9e('0x37')](_0x0a9e('0x38'),_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body']['from']);return db[_0x0a9e('0x39')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x5b4f5e){logger[_0x0a9e('0x37')](_0x0a9e('0x3a'),_0x5b4f5e);return db[_0x0a9e('0x3b')][_0x0a9e('0x16')]({'where':{'ContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}})[_0x0a9e('0x15')](function(_0x23b089){logger[_0x0a9e('0x37')](_0x0a9e('0x3c'),_0x23b089);return db[_0x0a9e('0x21')][_0x0a9e('0x3d')](_0x289467);});});}})[_0x0a9e('0x15')](function(_0x37f6cc){if(_0x37f6cc){_0x2b7e7f=_0x37f6cc;_0x3f3d41={'ContactId':_0x2b7e7f['id']};_0x567193={'where':{'ContactId':[_0x2cc7a0['body']['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}};return db[_0x0a9e('0x3e')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x40')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x41')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x42')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x43')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x44')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x45')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x46')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x47')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x48')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x49')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4a')][_0x0a9e('0x3f')]({'CmContactId':_0x2b7e7f['id']},{'where':{'CmContactId':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0[_0x0a9e('0x32')][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4b')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['CmHopperHistory']['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4c')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4d')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4e')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db['FaxQueueReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x4f')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x50')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x51')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db['JscriptySessionReport'][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x52')]['update'](_0x3f3d41,_0x567193);}})[_0x0a9e('0x15')](function(){if(_0x2b7e7f){return db[_0x0a9e('0x53')]['update'](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x54')][_0x0a9e('0x3f')](_0x3f3d41,_0x567193);}})['then'](function(){if(_0x2b7e7f){return db[_0x0a9e('0x21')]['destroy']({'where':{'id':[_0x2cc7a0[_0x0a9e('0x32')]['to'],_0x2cc7a0['body'][_0x0a9e('0x33')]]}});}})['then'](function(){if(_0x2b7e7f){return _0x2b7e7f;}})['then'](respondWithResult(_0x14b13f,null))['catch'](handleError(_0x14b13f,null));};exports[_0x0a9e('0x3d')]=function(_0x47de4c,_0x2f7092){return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x232830){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]&&_[_0x0a9e('0x35')](_0x47de4c['body'][_0x0a9e('0x24')])){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')][_0x0a9e('0x2b')]){_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x24')]=_0x47de4c['body'][_0x0a9e('0x24')][_0x0a9e('0x36')](';')+';';}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}}else{_0x47de4c['body'][_0x0a9e('0x24')]=null;}if(!_['isNil'](_0x47de4c['body']['dialTimezone'])){var _0x273cb5=_0x47de4c['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x273cb5]))_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x273cb5]['utcOffset'];}return db[_0x0a9e('0x21')]['create'](_0x47de4c[_0x0a9e('0x32')],{'fields':_[_0x0a9e('0x25')](_0x232830),'raw':!![]});})[_0x0a9e('0x15')](function(_0x5adf8f){if(_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]){return insertAdditionalPhones(_0x5adf8f,_0x47de4c[_0x0a9e('0x32')][_0x0a9e('0x59')]);}else{return _0x5adf8f;}})['then'](respondWithResult(_0x2f7092,0xc9))[_0x0a9e('0x20')](handleError(_0x2f7092,null));};exports[_0x0a9e('0x5a')]=function(_0x54327c,_0x797b45){var _0x17e88c=0x0;var _0x88dcbf=0x0;var _0x409b29=0x0;var _0x401837=[];return db['CmContact'][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x281c7d){return BPromise['each'](_0x54327c[_0x0a9e('0x32')],function(_0x4f1e60){var _0x5211e3={'where':{'$or':[]},'defaults':_0x4f1e60,'fields':_[_0x0a9e('0x25')](_0x281c7d),'raw':!![]};if(_0x4f1e60[_0x0a9e('0x5b')]){for(var _0x9375fb=0x0;_0x9375fb<_0x4f1e60[_0x0a9e('0x5b')][_0x0a9e('0x2b')];_0x9375fb++){var _0xc8c264={};_0xc8c264[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]]=_0x4f1e60[_0x4f1e60[_0x0a9e('0x5b')][_0x9375fb]];_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5d')][_0x0a9e('0x5e')](_0xc8c264);}_0x5211e3[_0x0a9e('0x5c')][_0x0a9e('0x5f')]=_0x4f1e60[_0x0a9e('0x5f')];}return db[_0x0a9e('0x21')][_0x0a9e('0x60')](_0x5211e3)[_0x0a9e('0x61')](function(_0x4257c9,_0x5150a4){if(_0x5150a4){if(_0x4f1e60[_0x0a9e('0x31')](_0x0a9e('0x59'))){_0x401837[_0x0a9e('0x5e')]({'contact':_0x4257c9,'additionalPhones':_0x4f1e60['additionalPhones']});}_0x17e88c++;}else{_0x409b29++;}})[_0x0a9e('0x20')](function(){_0x88dcbf++;});});})[_0x0a9e('0x15')](function(_0x4b341d){if(_0x4b341d){if(_0x401837[_0x0a9e('0x2b')]>0x0){return new Promise(function(_0x56e31e){var _0x3ef315=[];for(var _0x427946=0x0;_0x427946<_0x401837[_0x0a9e('0x2b')];_0x427946++){_0x3ef315['push'](insertAdditionalPhones(_0x401837[_0x427946]['contact'],_0x401837[_0x427946]['additionalPhones']));}Promise[_0x0a9e('0x62')](_0x3ef315)[_0x0a9e('0x15')](function(){_0x56e31e(0x1);});})[_0x0a9e('0x15')](function(){return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};});}else{return{'success':_0x17e88c,'failure':_0x88dcbf,'duplicates':_0x409b29};}}})[_0x0a9e('0x15')](respondWithResult(_0x797b45,0xc9))[_0x0a9e('0x20')](handleError(_0x797b45,null));};exports[_0x0a9e('0x63')]=function(_0xeef20,_0x1a0677){var _0x5512d1;return db[_0x0a9e('0x21')][_0x0a9e('0x1b')]()[_0x0a9e('0x15')](function(_0x4a4fc7){return db[_0x0a9e('0x21')]['find']({'where':{'id':_0xeef20[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x0a9e('0x64')],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'required':_0xeef20[_0x0a9e('0x1e')][_0x0a9e('0x66')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x0a9e('0x67'),'where':{'CmContactId':_0xeef20[_0x0a9e('0x23')]['id']},'required':![],'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}]}],'order':[db['sequelize'][_0x0a9e('0x6a')](_0x0a9e('0x6b'))],'attributes':_[_0x0a9e('0x25')](_0x4a4fc7)});})[_0x0a9e('0x15')](function(_0x4abc8f){if(!_[_0x0a9e('0x56')](_0x4abc8f)){_0x5512d1=_0x4abc8f[_0x0a9e('0x34')]({'plain':!![]});var _0x30a4c7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4abc8f&&_0x4abc8f[_0x0a9e('0x5f')]){if(_0x4abc8f[_0x0a9e('0x5f')]){_0x30a4c7[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0x4abc8f[_0x0a9e('0x5f')]}});}}return db[_0x0a9e('0x2a')][_0x0a9e('0x1d')](_0x30a4c7);}})[_0x0a9e('0x15')](function(_0x25744a){if(!_[_0x0a9e('0x56')](_0x25744a)){return _['omit'](_0x5512d1,_[_0x0a9e('0x6d')](_0x25744a,function(_0x11da9c){return util[_0x0a9e('0x6e')]('cf_%d',_0x11da9c['id']);}));}})[_0x0a9e('0x15')](handleEntityNotFound(_0x1a0677,null))[_0x0a9e('0x15')](respondWithResult(_0x1a0677,null))[_0x0a9e('0x20')](handleError(_0x1a0677,null));};exports[_0x0a9e('0x3f')]=function(_0x56d650,_0x541e80){var _0x7ebea8;if(_0x56d650[_0x0a9e('0x32')]['id']){delete _0x56d650['body']['id'];}if(!_[_0x0a9e('0x56')](_0x56d650['body'][_0x0a9e('0x55')])){var _0x8ebf02=_0x56d650['body'][_0x0a9e('0x55')];if(!_[_0x0a9e('0x56')](shared[_0x0a9e('0x57')][_0x8ebf02]))_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x58')]=shared[_0x0a9e('0x57')][_0x8ebf02][_0x0a9e('0x58')];}return db['CmContact'][_0x0a9e('0x22')]({'where':{'id':_0x56d650[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x541e80,null))[_0x0a9e('0x15')](saveUpdates(_0x56d650['body'],null))[_0x0a9e('0x15')](function(_0xf0db1){_0x7ebea8=_0xf0db1;var _0x4bf3a5={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0xf0db1&&_0xf0db1[_0x0a9e('0x5f')]){if(_0xf0db1['ListId']){_0x4bf3a5[_0x0a9e('0x5c')][_0x0a9e('0x6c')][_0x0a9e('0x5e')]({'ListId':{'$ne':_0xf0db1[_0x0a9e('0x5f')]}});}}return db['CmCustomField']['findAll'](_0x4bf3a5);})[_0x0a9e('0x15')](function(_0x2b9c01){if(_0x2b9c01){return _[_0x0a9e('0x6f')](_['pickBy'](_0x56d650[_0x0a9e('0x32')],function(_0x36e975,_0x524e38){return _['startsWith'](_0x524e38,_0x0a9e('0x27'));}),_['map'](_0x2b9c01,function(_0x5ea541){return util['format'](_0x0a9e('0x70'),_0x5ea541['id']);}));}})[_0x0a9e('0x15')](function(_0x9044fe){if(_0x9044fe&&!_[_0x0a9e('0x71')](_0x9044fe)){var _0x3c6dd6=squel[_0x0a9e('0x3f')]()['table'](_0x0a9e('0x72'))['setFields'](_0x9044fe)[_0x0a9e('0x5c')](_0x0a9e('0x73'),_0x56d650[_0x0a9e('0x23')]['id'])[_0x0a9e('0x74')]();return db['sequelize'][_0x0a9e('0x1e')](_0x3c6dd6[_0x0a9e('0x75')],{'replacements':_0x3c6dd6[_0x0a9e('0x2f')]});}})['then'](function(){if(_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')]&&_0x7ebea8){return db[_0x0a9e('0x39')][_0x0a9e('0x3f')]({'phone':_0x56d650[_0x0a9e('0x32')][_0x0a9e('0x76')],'OrderBy':0x0},{'where':{'ContactId':_0x7ebea8['id']}});}})[_0x0a9e('0x15')](function(){return _0x7ebea8;})[_0x0a9e('0x15')](respondWithResult(_0x541e80,null))['catch'](handleError(_0x541e80,null));};exports[_0x0a9e('0x77')]=function(_0x3325c5,_0x589ff3){var _0x40e0f0={};var _0x982340={};var _0x3a1974;var _0x5a26c8;return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x3325c5[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x589ff3,null))[_0x0a9e('0x15')](function(_0x1f29bd){if(_0x1f29bd){_0x3a1974=_0x1f29bd;_0x982340[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x64')][_0x0a9e('0x79')]);_0x982340['query']=_[_0x0a9e('0x25')](_0x3325c5[_0x0a9e('0x1e')]);_0x982340[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],_0x982340[_0x0a9e('0x1e')]);_0x40e0f0[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x982340[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x40e0f0[_0x0a9e('0x7c')]=_0x40e0f0['attributes'][_0x0a9e('0x2b')]?_0x40e0f0[_0x0a9e('0x7c')]:_0x982340[_0x0a9e('0x78')];_0x40e0f0[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x3325c5['query'][_0x0a9e('0x7f')]);_0x40e0f0[_0x0a9e('0x5c')]=qs['filters'](_[_0x0a9e('0x80')](_0x3325c5['query'],_0x982340[_0x0a9e('0x7a')]));if(_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x40e0f0[_0x0a9e('0x5c')]=_['merge'](_0x40e0f0[_0x0a9e('0x5c')],{'$or':_['map'](_0x40e0f0[_0x0a9e('0x7c')],function(_0x3d0a77){var _0x5e5b89={};_0x5e5b89[_0x3d0a77]={'$like':'%'+_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x5e5b89;})});}_0x40e0f0=_[_0x0a9e('0x82')]({},_0x40e0f0,_0x3325c5['options']);return _0x3a1974['getTags'](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x6ba2be){if(_0x6ba2be){_0x5a26c8=_0x6ba2be[_0x0a9e('0x2b')];if(!_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x40e0f0[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3325c5[_0x0a9e('0x1e')]['limit']);_0x40e0f0[_0x0a9e('0x10')]=qs['offset'](_0x3325c5[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}return _0x3a1974[_0x0a9e('0x77')](_0x40e0f0);}})[_0x0a9e('0x15')](function(_0x1b61d5){if(_0x1b61d5){return _0x1b61d5?{'count':_0x5a26c8,'rows':_0x1b61d5}:null;}})['then'](respondWithResult(_0x589ff3,null))[_0x0a9e('0x20')](handleError(_0x589ff3,null));};exports[_0x0a9e('0x84')]=function(_0x2791c5,_0x2aa5f2){if(_0x2791c5[_0x0a9e('0x32')]['id']){delete _0x2791c5['body']['id'];}return db['CmContact'][_0x0a9e('0x85')]({'where':{'id':_0x2791c5['params']['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x2aa5f2,null))[_0x0a9e('0x15')](function(_0x4672e1){if(_0x4672e1){return _0x4672e1[_0x0a9e('0x84')](_0x2791c5[_0x0a9e('0x32')][_0x0a9e('0x86')]||[]);}return null;})['then'](respondWithResult(_0x2aa5f2,null))['catch'](handleError(_0x2aa5f2,null));};exports[_0x0a9e('0x87')]=function(_0x5dfbe2,_0x2469d1){var _0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](addAdditionalPhones(_0x5dfbe2['body']));Promise['all'](_0x5c689c)[_0x0a9e('0x15')](function(){_0x5c689c=[];_0x5c689c[_0x0a9e('0x5e')](deleteCmHopperPhones(_0x5dfbe2['body']['id']));_0x5c689c[_0x0a9e('0x5e')](addCmHopperPhones(_0x5dfbe2[_0x0a9e('0x32')]['id']));Promise[_0x0a9e('0x62')](_0x5c689c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x2469d1,null));});};function addAdditionalPhones(_0x5ab0bc){var _0x5505f4;return new Promise(function(_0x16449b){return db[_0x0a9e('0x4a')][_0x0a9e('0x16')]({'where':{'CmContactId':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){db[_0x0a9e('0x68')]['findAll']({'raw':!![],'attributes':['id',_0x0a9e('0x88')]})[_0x0a9e('0x15')](function(_0x5416a9){var _0x3c313d=[];for(var _0x19fd11=0x0;_0x19fd11<_0x5ab0bc[_0x0a9e('0x89')][_0x0a9e('0x2b')];_0x19fd11++){var _0x23b25b=_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?'':_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['ItemTypeId']?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:'';var _0x2ada60=_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11]['description'])?'':_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8c')];var _0x16ae1a=_0x23b25b+':'+_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')]+'§'+_0x2ada60;if(_[_0x0a9e('0x56')](_0x5505f4))_0x5505f4=_0x16ae1a;else _0x5505f4+=';'+_0x16ae1a;var _0x59e46f=null;var _0x1339d0=null;if(_0x5ab0bc[_0x0a9e('0x8a')]){if(!_[_0x0a9e('0x56')](_0x5ab0bc['item_types'][_0x19fd11])){_0x1339d0=_[_0x0a9e('0x22')](_0x5416a9,function(_0x59aa7b){return _0x59aa7b['id']===_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11];});if(!_['isNil'](_0x1339d0)){_0x59e46f=_0x1339d0[_0x0a9e('0x88')];}}}else{if(!_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11])){_0x1339d0=_['find'](_0x5416a9,function(_0xc9529d){return _0xc9529d['id']===_0x5ab0bc['items'][_0x19fd11][_0x0a9e('0x8b')];});if(!_[_0x0a9e('0x56')](_0x1339d0)){_0x59e46f=_0x19fd11;}}}if(_[_0x0a9e('0x56')](_0x59e46f)){_0x59e46f=0x64;}_0x3c313d[_0x0a9e('0x5e')](addAdditionalPhone(_0x5ab0bc['id'],_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x76')],_0x5ab0bc[_0x0a9e('0x8a')]?_[_0x0a9e('0x56')](_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11])?null:_0x5ab0bc[_0x0a9e('0x8a')][_0x19fd11]:_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]?_0x5ab0bc[_0x0a9e('0x89')][_0x19fd11][_0x0a9e('0x8b')]:null,_0x59e46f,_0x2ada60));}Promise[_0x0a9e('0x62')](_0x3c313d)[_0x0a9e('0x15')](function(){db['CmContact']['update']({'AdditionalPhones':_0x5505f4},{'where':{'id':_0x5ab0bc['id']}})[_0x0a9e('0x15')](function(){_0x16449b(0x1);});});});});});}function addAdditionalPhone(_0x5c4be0,_0x1d999b,_0x3428c9,_0x5d6b69,_0x1a3754){return db[_0x0a9e('0x4a')][_0x0a9e('0x22')]({'where':{'CmContactId':_0x5c4be0,'item':_0x1d999b}})[_0x0a9e('0x15')](function(_0x5585d5){if(_0x5585d5)logger[_0x0a9e('0x37')](_0x0a9e('0x8d'),_0x5585d5);else{db[_0x0a9e('0x4a')][_0x0a9e('0x3d')]({'CmContactId':_0x5c4be0,'item':_0x1d999b,'ItemTypeId':_0x3428c9,'OrderBy':_0x5d6b69,'ItemClass':'PHONE','description':_0x1a3754});}});}function deleteCmHopperPhones(_0x19e9ed){return new Promise(function(_0x1a0b08){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x19e9ed}})[_0x0a9e('0x15')](function(_0x270df8){db[_0x0a9e('0x8e')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x0a9e('0x6d')](_0x270df8,'id')}}});})[_0x0a9e('0x15')](function(){_0x1a0b08(0x1);});});}function addCmHopperPhones(_0x1d9b57){return new Promise(function(_0x1a7f58){return db[_0x0a9e('0x39')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x1d9b57}})[_0x0a9e('0x15')](function(_0x289e65){var _0x4795ae=[];_[_0x0a9e('0x6d')](_0x289e65,function(_0x1fcfe6){_0x4795ae[_0x0a9e('0x5e')](createCmHopperPhone(_0x1d9b57,_0x1fcfe6['id']));});Promise['all'](_0x4795ae)['then'](function(){_0x1a7f58(0x1);});});});}function createCmHopperPhone(_0x523d08,_0x1015aa){return new Promise(function(_0x4a70ce){db['CmContactHasItem'][_0x0a9e('0x1d')]({'raw':!![],'attributes':[_0x0a9e('0x8f'),_0x0a9e('0x88')],'where':{'CmContactId':_0x523d08,'ItemClass':'PHONE'},'include':[{'model':db[_0x0a9e('0x68')],'attributes':[_0x0a9e('0x88')],'as':_0x0a9e('0x69')}],'order':[_0x0a9e('0x88'),db[_0x0a9e('0x90')][_0x0a9e('0x6a')](_0x0a9e('0x91'))]})[_0x0a9e('0x15')](function(_0x3b5bda){var _0x5a1848=0x1;var _0x43c397=_['map'](_0x3b5bda,function(_0x138cf5){_0x138cf5[_0x0a9e('0x92')]=_0x1015aa;_0x138cf5[_0x0a9e('0x76')]=_0x138cf5[_0x0a9e('0x8f')];_0x138cf5[_0x0a9e('0x88')]=_0x5a1848;delete _0x138cf5[_0x0a9e('0x93')];_0x5a1848=_0x5a1848+0x1;return _0x138cf5;});return db['CmHopperAdditionalPhone'][_0x0a9e('0x5a')](_0x43c397,{});})[_0x0a9e('0x15')](function(){_0x4a70ce(0x1);});});}function insertAdditionalPhones(_0xe25eb5,_0x1af799){return new Promise(function(_0x51aa2f){var _0x2e4887=[];for(var _0x3c9135=0x0;_0x3c9135<_0x1af799[_0x0a9e('0x2b')];_0x3c9135++){var _0x1c9539=_0x1af799[_0x3c9135];_0x2e4887[_0x0a9e('0x5e')](parseContactItemType(_0x1c9539));}Promise[_0x0a9e('0x62')](_0x2e4887)[_0x0a9e('0x15')](function(){var _0x25931e={'id':_0xe25eb5['id'],'items':_0x1af799};return addAdditionalPhones(_0x25931e)[_0x0a9e('0x15')](function(){return addCmHopperPhones(_0xe25eb5['id']);});})[_0x0a9e('0x15')](function(){_0x51aa2f(_0xe25eb5);});});}function parseContactItemType(_0x57f0ad){return new Promise(function(_0x2272bc){if(_0x57f0ad[_0x0a9e('0x31')](_0x0a9e('0x8b'))){_0x2272bc(_0x57f0ad);}else{return db[_0x0a9e('0x68')][_0x0a9e('0x22')]({'where':{'name':_0x57f0ad[_0x0a9e('0x69')]}})[_0x0a9e('0x15')](function(_0x20ae21){if(_['isNil'](_0x20ae21))_0x57f0ad[_0x0a9e('0x8b')]=null;else _0x57f0ad[_0x0a9e('0x8b')]=_0x20ae21['id'];_0x2272bc(_0x57f0ad);});}});}exports[_0x0a9e('0x94')]=function(_0x5c65fc,_0x1402c7){return db[_0x0a9e('0x4a')][_0x0a9e('0x1d')]({'raw':!![],'where':{'CmContactId':_0x5c65fc[_0x0a9e('0x23')]['id'],'ItemClass':_0x0a9e('0x95')},'include':[{'model':db[_0x0a9e('0x68')],'as':_0x0a9e('0x69')}],'order':[[_0x0a9e('0x88')],[db[_0x0a9e('0x90')][_0x0a9e('0x6a')]('`ItemType`.OrderBy')]]})[_0x0a9e('0x15')](function(_0x446e6){return _0x446e6;})[_0x0a9e('0x15')](respondWithResult(_0x1402c7,null))[_0x0a9e('0x20')](handleError(_0x1402c7,null));};exports[_0x0a9e('0x96')]=function(_0x3942fd,_0x5cb48d){return db[_0x0a9e('0x4a')]['findAll']({'raw':!![],'where':{'CmContactId':_0x3942fd['body']['fromContactId']}})[_0x0a9e('0x15')](function(_0x3fa3f2){var _0x426cb4=_[_0x0a9e('0x6d')](_0x3fa3f2,function(_0x4d99a8){_0x4d99a8[_0x0a9e('0x97')]=_0x3942fd[_0x0a9e('0x32')][_0x0a9e('0x98')];return _0x4d99a8;});return db[_0x0a9e('0x4a')][_0x0a9e('0x5a')](_0x426cb4,{});})['then'](function(){return addCmHopperPhones(_0x3942fd['body'][_0x0a9e('0x98')]);})[_0x0a9e('0x15')](function(){return['ok'];})[_0x0a9e('0x15')](respondWithResult(_0x5cb48d,null))['catch'](handleError(_0x5cb48d,null));};exports[_0x0a9e('0x99')]=function(_0x248a9a,_0x422f0a){var _0x4cee8c=[];_0x4cee8c[_0x0a9e('0x5e')](createCmHopperPhone(_0x248a9a[_0x0a9e('0x32')]['id'],_0x248a9a[_0x0a9e('0x32')]['hopperId']));Promise[_0x0a9e('0x62')](_0x4cee8c)[_0x0a9e('0x15')](function(){return[0x1];})[_0x0a9e('0x15')](respondWithResult(_0x422f0a,null));};exports['getHoppers']=function(_0x549697,_0x53ef46){var _0x3b04fd={'raw':![],'where':{}};var _0x1f50db={};var _0xcbc73c={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')]['findOne']({'where':{'id':_0x549697[_0x0a9e('0x23')]['id']}})['then'](handleEntityNotFound(_0x53ef46,null))[_0x0a9e('0x15')](function(_0x2ff2ab){if(_0x2ff2ab){_0x1f50db[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x39')][_0x0a9e('0x79')]);_0x1f50db[_0x0a9e('0x1e')]=_['keys'](_0x549697[_0x0a9e('0x1e')]);_0x1f50db['filters']=_[_0x0a9e('0x7b')](_0x1f50db['model'],_0x1f50db[_0x0a9e('0x1e')]);_0x3b04fd['attributes']=_[_0x0a9e('0x7b')](_0x1f50db[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x3b04fd[_0x0a9e('0x7c')]=_0x3b04fd[_0x0a9e('0x7c')]['length']?_0x3b04fd[_0x0a9e('0x7c')]:_0x1f50db[_0x0a9e('0x78')];if(!_0x549697['query'][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x3b04fd['limit']=qs[_0x0a9e('0x12')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x3b04fd['offset']=qs[_0x0a9e('0x10')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x3b04fd[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x3b04fd[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x549697['query'],_0x1f50db[_0x0a9e('0x7a')]));_0x3b04fd['where'][_0x0a9e('0x9a')]=_0x2ff2ab['id'];if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x3b04fd[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x3b04fd[_0x0a9e('0x5c')],{'$or':_['map'](_0x3b04fd[_0x0a9e('0x7c')],function(_0x469035){var _0x2977a7={};_0x2977a7[_0x469035]={'$like':'%'+_0x549697['query'][_0x0a9e('0x81')]+'%'};return _0x2977a7;})});}_0x3b04fd=_[_0x0a9e('0x82')]({},_0x3b04fd,_0x549697[_0x0a9e('0x9b')]);return db[_0x0a9e('0x39')][_0x0a9e('0x13')]({'where':_0x3b04fd[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x5f2c51){_0xcbc73c[_0x0a9e('0x13')]=_0x5f2c51;if(_0x549697[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x3b04fd[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x39')][_0x0a9e('0x1d')](_0x3b04fd);})[_0x0a9e('0x15')](function(_0x5d6a48){_0xcbc73c['rows']=_0x5d6a48;return _0xcbc73c;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x53ef46,_0x3b04fd))[_0x0a9e('0x20')](handleError(_0x53ef46,null));};exports[_0x0a9e('0x9e')]=function(_0x1bf692,_0x40e2da){var _0x131da8={'raw':!![],'where':{}};var _0x609711={};var _0x584854={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x1bf692[_0x0a9e('0x23')]['id']}})[_0x0a9e('0x15')](handleEntityNotFound(_0x40e2da,null))[_0x0a9e('0x15')](function(_0x3c6082){if(_0x3c6082){_0x609711[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0x9f')][_0x0a9e('0x79')]);_0x609711[_0x0a9e('0x1e')]=_['keys'](_0x1bf692[_0x0a9e('0x1e')]);_0x609711[_0x0a9e('0x7a')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],_0x609711['query']);_0x131da8[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x609711[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x131da8[_0x0a9e('0x7c')]=_0x131da8[_0x0a9e('0x7c')]['length']?_0x131da8[_0x0a9e('0x7c')]:_0x609711[_0x0a9e('0x78')];if(!_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0x131da8['limit']=qs[_0x0a9e('0x12')](_0x1bf692[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x131da8['offset']=qs[_0x0a9e('0x10')](_0x1bf692[_0x0a9e('0x1e')]['offset']);}_0x131da8[_0x0a9e('0x7e')]=qs['sort'](_0x1bf692[_0x0a9e('0x1e')]['sort']);_0x131da8['where']=qs['filters'](_[_0x0a9e('0x80')](_0x1bf692[_0x0a9e('0x1e')],_0x609711[_0x0a9e('0x7a')]));_0x131da8[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x3c6082['id'];if(_0x1bf692[_0x0a9e('0x1e')]['filter']){_0x131da8[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x131da8[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x131da8[_0x0a9e('0x7c')],function(_0x18dccf){var _0x31c937={};_0x31c937[_0x18dccf]={'$like':'%'+_0x1bf692['query']['filter']+'%'};return _0x31c937;})});}_0x131da8=_[_0x0a9e('0x82')]({},_0x131da8,_0x1bf692['options']);return db[_0x0a9e('0x9f')][_0x0a9e('0x13')]({'where':_0x131da8[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x37a448){_0x584854[_0x0a9e('0x13')]=_0x37a448;if(_0x1bf692['query'][_0x0a9e('0x9c')]){_0x131da8['include']=[{'all':!![]}];}return db['CmHopperHistory'][_0x0a9e('0x1d')](_0x131da8);})['then'](function(_0x38dceb){_0x584854['rows']=_0x38dceb;return _0x584854;});}})['then'](respondWithFilteredResult(_0x40e2da,_0x131da8))[_0x0a9e('0x20')](handleError(_0x40e2da,null));};exports['getHopperFinals']=function(_0x24470a,_0x142e53){var _0xe1ab0d={'raw':!![],'where':{}};var _0x48f532={};var _0x4152cd={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x24470a['params']['id']}})['then'](handleEntityNotFound(_0x142e53,null))[_0x0a9e('0x15')](function(_0x948aab){if(_0x948aab){_0x48f532[_0x0a9e('0x78')]=_[_0x0a9e('0x25')](db[_0x0a9e('0x4b')][_0x0a9e('0x79')]);_0x48f532[_0x0a9e('0x1e')]=_[_0x0a9e('0x25')](_0x24470a[_0x0a9e('0x1e')]);_0x48f532[_0x0a9e('0x7a')]=_['intersection'](_0x48f532['model'],_0x48f532['query']);_0xe1ab0d[_0x0a9e('0x7c')]=_[_0x0a9e('0x7b')](_0x48f532[_0x0a9e('0x78')],qs[_0x0a9e('0x7d')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0xe1ab0d[_0x0a9e('0x7c')]=_0xe1ab0d[_0x0a9e('0x7c')]['length']?_0xe1ab0d['attributes']:_0x48f532[_0x0a9e('0x78')];if(!_0x24470a[_0x0a9e('0x1e')]['hasOwnProperty'](_0x0a9e('0x83'))){_0xe1ab0d[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0xe1ab0d[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0xe1ab0d[_0x0a9e('0x7e')]=qs[_0x0a9e('0x7f')](_0x24470a[_0x0a9e('0x1e')]['sort']);_0xe1ab0d[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_[_0x0a9e('0x80')](_0x24470a[_0x0a9e('0x1e')],_0x48f532[_0x0a9e('0x7a')]));_0xe1ab0d[_0x0a9e('0x5c')][_0x0a9e('0x9a')]=_0x948aab['id'];if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0xe1ab0d[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0xe1ab0d[_0x0a9e('0x5c')],{'$or':_['map'](_0xe1ab0d['attributes'],function(_0x3e5182){var _0x401207={};_0x401207[_0x3e5182]={'$like':'%'+_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x81')]+'%'};return _0x401207;})});}_0xe1ab0d=_[_0x0a9e('0x82')]({},_0xe1ab0d,_0x24470a[_0x0a9e('0x9b')]);return db[_0x0a9e('0x4b')]['count']({'where':_0xe1ab0d[_0x0a9e('0x5c')]})['then'](function(_0x26aa44){_0x4152cd[_0x0a9e('0x13')]=_0x26aa44;if(_0x24470a[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0xe1ab0d[_0x0a9e('0x9d')]=[{'all':!![]}];}return db[_0x0a9e('0x4b')][_0x0a9e('0x1d')](_0xe1ab0d);})[_0x0a9e('0x15')](function(_0xa7a754){_0x4152cd[_0x0a9e('0xa0')]=_0xa7a754;return _0x4152cd;});}})[_0x0a9e('0x15')](respondWithFilteredResult(_0x142e53,_0xe1ab0d))[_0x0a9e('0x20')](handleError(_0x142e53,null));};exports[_0x0a9e('0xa1')]=function(_0x3f7cb6,_0x3c8a9a){var _0x2d5e00={'raw':!![],'where':{}};var _0x5b78a8={};var _0x54cf62={'count':0x0,'rows':[]};return db[_0x0a9e('0x21')][_0x0a9e('0x85')]({'where':{'id':_0x3f7cb6['params']['id']}})['then'](handleEntityNotFound(_0x3c8a9a,null))[_0x0a9e('0x15')](function(_0x1feb9){if(_0x1feb9){_0x5b78a8[_0x0a9e('0x78')]=_['keys'](db[_0x0a9e('0xa2')]['rawAttributes']);_0x5b78a8[_0x0a9e('0x1e')]=_['keys'](_0x3f7cb6[_0x0a9e('0x1e')]);_0x5b78a8['filters']=_[_0x0a9e('0x7b')](_0x5b78a8[_0x0a9e('0x78')],_0x5b78a8[_0x0a9e('0x1e')]);_0x2d5e00['attributes']=_[_0x0a9e('0x7b')](_0x5b78a8['model'],qs['fields'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7d')]));_0x2d5e00[_0x0a9e('0x7c')]=_0x2d5e00[_0x0a9e('0x7c')][_0x0a9e('0x2b')]?_0x2d5e00[_0x0a9e('0x7c')]:_0x5b78a8[_0x0a9e('0x78')];if(!_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x31')](_0x0a9e('0x83'))){_0x2d5e00[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x12')]);_0x2d5e00[_0x0a9e('0x10')]=qs[_0x0a9e('0x10')](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}_0x2d5e00[_0x0a9e('0x7e')]=qs['sort'](_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x7f')]);_0x2d5e00[_0x0a9e('0x5c')]=qs[_0x0a9e('0x7a')](_['pick'](_0x3f7cb6['query'],_0x5b78a8['filters']));_0x2d5e00[_0x0a9e('0x5c')]['ContactId']=_0x1feb9['id'];if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x81')]){_0x2d5e00[_0x0a9e('0x5c')]=_[_0x0a9e('0x82')](_0x2d5e00[_0x0a9e('0x5c')],{'$or':_[_0x0a9e('0x6d')](_0x2d5e00[_0x0a9e('0x7c')],function(_0x1cc73e){var _0x2154d8={};_0x2154d8[_0x1cc73e]={'$like':'%'+_0x3f7cb6[_0x0a9e('0x1e')]['filter']+'%'};return _0x2154d8;})});}_0x2d5e00=_[_0x0a9e('0x82')]({},_0x2d5e00,_0x3f7cb6['options']);return db[_0x0a9e('0xa2')]['count']({'where':_0x2d5e00[_0x0a9e('0x5c')]})[_0x0a9e('0x15')](function(_0x216791){_0x54cf62['count']=_0x216791;if(_0x3f7cb6[_0x0a9e('0x1e')][_0x0a9e('0x9c')]){_0x2d5e00['include']=[{'all':!![]}];}return db['JscriptySessionReport'][_0x0a9e('0x1d')](_0x2d5e00);})[_0x0a9e('0x15')](function(_0x1262ff){_0x54cf62['rows']=_0x1262ff;return _0x54cf62;});}})['then'](respondWithFilteredResult(_0x3c8a9a,_0x2d5e00))['catch'](handleError(_0x3c8a9a,null));};exports[_0x0a9e('0xa3')]=function(_0x22c591,_0x2b7ba9){try{if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]){throw new Error(_0x0a9e('0xa6'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')]){throw new Error(_0x0a9e('0xa8'));}if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error(_0x0a9e('0xaa'));}var _0x1a74c4=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa5')]['split'](',');var _0xb33e27=_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')][_0x0a9e('0xab')](',');if(!_0x1a74c4[_0x0a9e('0x2b')]||!_0xb33e27[_0x0a9e('0x2b')]||_0x1a74c4['length']!==_0xb33e27[_0x0a9e('0x2b')]){throw new Error(_0x0a9e('0xac'));}_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')]=_[_0x0a9e('0xad')](_0x1a74c4,_0xb33e27);if(!_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x7d')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x22c591['body']['fields'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}var _0x5c2996=path[_0x0a9e('0x36')](config[_0x0a9e('0xb1')],'server/files/tmp',_0x22c591[_0x0a9e('0xb2')]['filename']);fs[_0x0a9e('0xb3')](_0x5c2996,parseInt(_0x0a9e('0xb4'),0x8));var _0x58c53c=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xb7')),[_0x5c2996,_0x22c591[_0x0a9e('0x32')]['binding_keys'],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xa7')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0x5f')],_0x22c591[_0x0a9e('0x32')][_0x0a9e('0xb8')],_0x22c591['body'][_0x0a9e('0x5b')],_0x22c591[_0x0a9e('0x32')]['socket_timestamp']]);return _0x2b7ba9[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xba'),'pid':_0x58c53c[_0x0a9e('0xbb')]});}catch(_0x3fae71){return _0x2b7ba9[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xbc')](_0x3fae71);}};exports['upload']=function(_0x49e1b8,_0x5a2013){var _0x55d764=fs['createReadStream'](_0x49e1b8[_0x0a9e('0xb2')][_0x0a9e('0xbd')]);Papa['parse'](_0x55d764,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x5c23aa){return _0x5a2013[_0x0a9e('0xf')](0xc8)['json']({'file':_0x49e1b8[_0x0a9e('0xb2')],'fields':_0x5c23aa[_0x0a9e('0xbe')][_0x0a9e('0x7d')]});}});};exports[_0x0a9e('0xbf')]=function(_0x336518,_0x14a683){return db['User'][_0x0a9e('0x1d')]({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})['then'](function(_0x44cdb8){var _0x1c0d54=![];if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xc1')]['phone']){throw new Error(_0x0a9e('0xae'));}if(!_0x336518['body'][_0x0a9e('0xc1')][_0x0a9e('0xaf')]){throw new Error('No\x20firstName\x20column\x20specified');}if(!_0x336518[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x78a398=require('child_process')[_0x0a9e('0xb6')](path[_0x0a9e('0x36')](__dirname,'../../components/import/cm/csv2'),[_0x336518[_0x0a9e('0x23')]['id'],JSON['stringify'](_0x336518[_0x0a9e('0x32')]),JSON[_0x0a9e('0xc2')](_0x44cdb8)]);_0x78a398['on'](_0x0a9e('0xc3'),function(){_0x1c0d54=!![];return _0x14a683[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x78a398[_0x0a9e('0xbb')]});});_0x78a398['on']('exit',function(_0x36318d){if(_0x36318d&&!_0x1c0d54){return _0x14a683[_0x0a9e('0xf')](0x1f4)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc5'),'pid':_0x78a398[_0x0a9e('0xbb')]});}});})['catch'](handleError(_0x14a683,null));};exports[_0x0a9e('0xc6')]=function(_0x49a6b2,_0x5d1159){return db[_0x0a9e('0xc7')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x0a9e('0xc0')}})[_0x0a9e('0x15')](function(_0x58d5fd){var _0x171a69=![];if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0x5f')]){throw new Error(_0x0a9e('0xa4'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xc1')][_0x0a9e('0x76')]){throw new Error(_0x0a9e('0xae'));}if(!_0x49a6b2[_0x0a9e('0x32')]['binding'][_0x0a9e('0xaf')]){throw new Error(_0x0a9e('0xb0'));}if(!_0x49a6b2[_0x0a9e('0x32')][_0x0a9e('0xa9')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0x38d95a=require(_0x0a9e('0xb5'))[_0x0a9e('0xb6')](path['join'](__dirname,_0x0a9e('0xc8')),[_0x49a6b2[_0x0a9e('0x23')]['id'],JSON[_0x0a9e('0xc2')](_0x49a6b2['body']),JSON[_0x0a9e('0xc2')](_0x58d5fd)]);_0x38d95a['on']('message',function(){_0x171a69=!![];return _0x5d1159[_0x0a9e('0xf')](0xc8)[_0x0a9e('0xb9')]({'message':_0x0a9e('0xc4'),'pid':_0x38d95a[_0x0a9e('0xbb')]});});_0x38d95a['on'](_0x0a9e('0xc9'),function(_0x1b86e6){if(_0x1b86e6&&!_0x171a69){return _0x5d1159[_0x0a9e('0xf')](0x1f4)['json']({'message':_0x0a9e('0xc5'),'pid':_0x38d95a[_0x0a9e('0xbb')]});}});})[_0x0a9e('0x20')](handleError(_0x5d1159,null));};exports[_0x0a9e('0xca')]=function(_0x1eb768,_0x117694){var _0x3a4def=[_0x0a9e('0xcb'),_0x0a9e('0xcc'),_0x0a9e('0xcd'),_0x0a9e('0xce'),_0x0a9e('0xcf'),_0x0a9e('0xd0'),_0x0a9e('0xd1')];var _0xdce963={'offset':0x0,'order':qs[_0x0a9e('0x7f')](_0x0a9e('0xd2'))},_0xfc4f={'count':0x0,'rows':[]};Promise[_0x0a9e('0xd3')]()[_0x0a9e('0x15')](function(){if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd4')]){if(!_[_0x0a9e('0xd5')](_0x3a4def,_0x1eb768['query'][_0x0a9e('0xd4')][_0x0a9e('0xd6')]())){throw new Error(_0x0a9e('0xd7'));}_0x3a4def=[_0x1eb768['query'][_0x0a9e('0xd4')]['toLowerCase']()];}if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){try{var _0x20a292=JSON[_0x0a9e('0xd9')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]);if(!moment(_0x20a292[_0x0a9e('0x33')])[_0x0a9e('0xda')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x20a292['to'])[_0x0a9e('0xda')]()){throw new Error(_0x0a9e('0xdb'));}}catch(_0x4d6f2d){throw new Error(_0x0a9e('0xdc'));}}if(!_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x31')]('nolimit')){_0xdce963[_0x0a9e('0x12')]=qs[_0x0a9e('0x12')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x12')]||0xa);_0xdce963['offset']=qs[_0x0a9e('0x10')](_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0x10')]);}var _0x2b8eed=_0x3a4def[_0x0a9e('0x6d')](function(_0x4ea917){if(_0x4ea917===_0x0a9e('0xd1')){var _0x3fc431={'attributes':['id','uniqueid',_0x0a9e('0x2e'),_0x0a9e('0xdd'),_0x0a9e('0xde'),'callerid','starttime',_0x0a9e('0xdf'),_0x0a9e('0xe0'),_0x0a9e('0xe1'),_0x0a9e('0xe2'),_0x0a9e('0xe3'),_0x0a9e('0xe4'),_0x0a9e('0xe5'),_0x0a9e('0xe6')],'where':{'ContactId':_0x1eb768['params']['id']},'include':[{'model':db['User'],'as':_0x0a9e('0xc7'),'attributes':['id','name',_0x0a9e('0xe7'),_0x0a9e('0xe8')]}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768['query'][_0x0a9e('0xd8')]){_0x3fc431[_0x0a9e('0x5c')]['createdAt']={'$gte':_0x20a292[_0x0a9e('0x33')],'$lte':_0x20a292['to']};}return db['VoiceCallReport'][_0x0a9e('0xea')](_0x3fc431)[_0x0a9e('0x15')](function(_0xd63c87){_0xfc4f[_0x0a9e('0x13')]+=_0xd63c87[_0x0a9e('0x13')];return _[_0x0a9e('0x6d')](_0xd63c87['rows'],function(_0x16d50b){var _0x580dd2=_0x16d50b[_0x0a9e('0x34')]({'plain':!![]});_0x580dd2[_0x0a9e('0xd4')]=_0x4ea917;if(_0x580dd2[_0x0a9e('0xc7')]){_0x580dd2[_0x0a9e('0xc7')]={'id':_0x580dd2[_0x0a9e('0xc7')]['id'],'name':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0x1a')],'fullname':_0x580dd2['User'][_0x0a9e('0xe7')],'alias':_0x580dd2[_0x0a9e('0xc7')][_0x0a9e('0xe8')]};}return _0x580dd2;});});}else{var _0x188231=_[_0x0a9e('0xeb')](_0x4ea917)+(_0x4ea917==='chat'?_0x0a9e('0xec'):_0x0a9e('0xed'));var _0x488d6c={'attributes':['id','closed',_0x0a9e('0xee'),_0x0a9e('0xe2'),_0x0a9e('0xe1'),_0x0a9e('0xef'),_0x0a9e('0xf0'),_0x0a9e('0xf1'),'UserId',_0x188231+'Id'],'where':{'ContactId':_0x1eb768[_0x0a9e('0x23')]['id']},'include':[{'model':db[_0x188231],'as':_0x0a9e('0xed'),'attributes':['id',_0x0a9e('0x1a'),'key']},{'model':db[_0x0a9e('0xc7')],'as':_0x0a9e('0xf2'),'attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0xe7')]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x0a9e('0x1a'),_0x0a9e('0x65')],'through':{'attributes':[]}}],'order':[[_0x0a9e('0xe2'),_0x0a9e('0xe9')]]};if(_0x1eb768[_0x0a9e('0x1e')][_0x0a9e('0xd8')]){_0x488d6c[_0x0a9e('0x5c')][_0x0a9e('0xe2')]={'$gte':_0x20a292['from'],'$lte':_0x20a292['to']};}switch(_0x4ea917){case _0x0a9e('0xcc'):_0x488d6c['attributes'][_0x0a9e('0x5e')](_0x0a9e('0xf3'),_0x0a9e('0xf4'),'customerPort','deviceModel',_0x0a9e('0xf5'),'ratingMessage',_0x0a9e('0xf6'),'ratingValue','referer');break;case _0x0a9e('0xcb'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf7'),_0x0a9e('0xf8'));break;case _0x0a9e('0xce'):_0x488d6c[_0x0a9e('0x7c')][_0x0a9e('0x5e')](_0x0a9e('0xf9'),_0x0a9e('0xfa'));break;}return db[_[_0x0a9e('0xeb')](_0x4ea917)+_0x0a9e('0xfb')][_0x0a9e('0xea')](_0x488d6c)['then'](function(_0x58f251){_0xfc4f[_0x0a9e('0x13')]+=_0x58f251['count'];return _[_0x0a9e('0x6d')](_0x58f251[_0x0a9e('0xa0')],function(_0x27be90){var _0x54befc=_0x27be90['get']({'plain':!![]});_0x54befc[_0x0a9e('0xd4')]=_0x4ea917;if(_0x54befc[_0x0a9e('0xf2')]){_0x54befc[_0x0a9e('0xf2')]={'id':_0x54befc[_0x0a9e('0xf2')]['id'],'name':_0x54befc[_0x0a9e('0xf2')][_0x0a9e('0x1a')],'fullname':_0x54befc[_0x0a9e('0xf2')]['fullname']};}return _0x54befc;});});}});return Promise[_0x0a9e('0x62')](_0x2b8eed);})['then'](function(_0x46b11b){return _(_0x46b11b)[_0x0a9e('0xfc')]()['sortBy'](_0x0a9e('0xe2'))[_0x0a9e('0xfd')]()[_0x0a9e('0xfe')]();})[_0x0a9e('0x15')](function(_0xb0fb60){_0xfc4f[_0x0a9e('0xa0')]=_0xdce963['limit']?_0xb0fb60[_0x0a9e('0xff')](_0xdce963[_0x0a9e('0x10')],_0xdce963[_0x0a9e('0x10')]+_0xdce963['limit']):_0xb0fb60;return _0xfc4f;})[_0x0a9e('0x15')](respondWithFilteredResult(_0x117694,_0xdce963))[_0x0a9e('0x20')](handleError(_0x117694,null));};
\ No newline at end of file
index 9ec8a73..d1550a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c56=['CmContact','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x24abb2,_0x2ba59e){var _0x4e59a9=function(_0x1c76a2){while(--_0x1c76a2){_0x24abb2['push'](_0x24abb2['shift']());}};_0x4e59a9(++_0x2ba59e);}(_0x6c56,0x148));var _0x66c5=function(_0x4a209a,_0x575ff9){_0x4a209a=_0x4a209a-0x0;var _0x4b3c20=_0x6c56[_0x4a209a];return _0x4b3c20;};'use strict';var EventEmitter=require(_0x66c5('0x0'));var CmContact=require(_0x66c5('0x1'))['db'][_0x66c5('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x66c5('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x66c5('0x4'),'afterDestroy':_0x66c5('0x5')};function emitEvent(_0x59b15b){return function(_0x19fffe,_0x4e51a7,_0x12c3d5){CmContactEvents[_0x66c5('0x6')](_0x59b15b+':'+_0x19fffe['id'],_0x19fffe);CmContactEvents[_0x66c5('0x6')](_0x59b15b,_0x19fffe);_0x12c3d5(null);};}for(var e in events){if(events[_0x66c5('0x7')](e)){var event=events[e];CmContact[_0x66c5('0x8')](e,emitEvent(event));}}module[_0x66c5('0x9')]=CmContactEvents;
\ No newline at end of file
+var _0x9e6b=['update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','CmContact','save'];(function(_0x263999,_0x477176){var _0x336996=function(_0x43c50a){while(--_0x43c50a){_0x263999['push'](_0x263999['shift']());}};_0x336996(++_0x477176);}(_0x9e6b,0x1d9));var _0xb9e6=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x9e6b[_0x5d6456];return _0x4d66c1;};'use strict';var EventEmitter=require(_0xb9e6('0x0'));var CmContact=require(_0xb9e6('0x1'))['db'][_0xb9e6('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb9e6('0x3'),'afterUpdate':_0xb9e6('0x4'),'afterDestroy':_0xb9e6('0x5')};function emitEvent(_0x5ba71f){return function(_0x3aba54,_0x33cc75,_0x293ee1){CmContactEvents[_0xb9e6('0x6')](_0x5ba71f+':'+_0x3aba54['id'],_0x3aba54);CmContactEvents[_0xb9e6('0x6')](_0x5ba71f,_0x3aba54);_0x293ee1(null);};}for(var e in events){if(events[_0xb9e6('0x7')](e)){var event=events[e];CmContact['hook'](e,emitEvent(event));}}module[_0xb9e6('0x8')]=CmContactEvents;
\ No newline at end of file
index 8e66d6e..ae729f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1788=['VoiceQueueId','push','all','info','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','../../config/environment/shared','define','CmContact','phone','fti_cm_contacts','mobile','email','FULLTEXT','utf8mb4_unicode_ci','models','get','cmContact','afterCreate','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','isNil','dialTimezone','then','timezones','utcOffset','add','minutes','format','ret','findOne','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopper','create','priority','callbackUniqueid','catch','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','ListId','Campaign','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','VoiceQueue','findAll','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','outbound','BlackLists','CmHopperBlack','error','always','cmContact,\x20%s,\x20%s','message','List\x20not\x20found','destroy','ContactId'];(function(_0x3cfacc,_0xc2e1da){var _0x578ed9=function(_0x4ad239){while(--_0x4ad239){_0x3cfacc['push'](_0x3cfacc['shift']());}};_0x578ed9(++_0xc2e1da);}(_0x1788,0x1b4));var _0x8178=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x1788[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x8178('0x0'));var util=require(_0x8178('0x1'));var logger=require(_0x8178('0x2'))('api');var moment=require(_0x8178('0x3'));var BPromise=require(_0x8178('0x4'));var rp=require(_0x8178('0x5'));var fs=require('fs');var path=require(_0x8178('0x6'));var rimraf=require(_0x8178('0x7'));var config=require(_0x8178('0x8'));var shared=require(_0x8178('0x9'));var attributes=require('./cmContact.attributes');module['exports']=function(_0x23106a,_0x3dbf6f){return _0x23106a[_0x8178('0xa')](_0x8178('0xb'),attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x8178('0xc'),'fields':['phone']},{'name':_0x8178('0xd'),'fields':['firstName','lastName',_0x8178('0xc'),_0x8178('0xe'),'fax',_0x8178('0xf')],'type':_0x8178('0x10')}],'timestamps':!![],'charset':'utf8mb4','collate':_0x8178('0x11'),'hooks':{'afterCreate':function(_0x3cd8ee,_0x28339b,_0x130364){var _0x1580e6=_0x23106a[_0x8178('0x12')];var _0x2b5fdd=_0x3cd8ee[_0x8178('0x13')]({'plain':!![]});function _0x4c9f08(){return function(_0x3ee709){logger['error'](_0x8178('0x14'),_0x8178('0x15'),util[_0x8178('0x16')](_0x3ee709,{'showHidden':![],'depth':null}));};}function _0x5f198d(_0x363199,_0xcd2bc9){var _0x146f20=_0xcd2bc9[_0x8178('0x17')]?_0xcd2bc9[_0x8178('0x17')]:moment()['format'](_0x8178('0x18'));return new BPromise(function(_0x245f6c,_0x37860a){if(_[_0x8178('0x19')](_0xcd2bc9[_0x8178('0x1a')])){_0x245f6c({'ret':_0x146f20});}else{_0x1580e6['VoiceQueue']['findOne']({'where':{'id':_0x363199['id']}})[_0x8178('0x1b')](function(_0x7c44ff){if(!_[_0x8178('0x19')](_0x7c44ff)){var _0x1190fb=_0x7c44ff[_0x8178('0x1a')];if(!_[_0x8178('0x19')](_0x1190fb)){var _0x5e96cf=shared[_0x8178('0x1c')];var _0x4acb7b=_0x5e96cf[_0x1190fb];var _0x34da6e=_0x5e96cf[_0xcd2bc9[_0x8178('0x1a')]];if(!_['isNil'](_0x4acb7b)&&!_[_0x8178('0x19')](_0x34da6e)){var _0x4f867e=_0x4acb7b['utcOffset']-_0x34da6e[_0x8178('0x1d')];_0x146f20=_0xcd2bc9[_0x8178('0x17')]?_0xcd2bc9[_0x8178('0x17')]:moment();var _0x7451ca=moment(_0x146f20)[_0x8178('0x1e')](_0x4f867e,_0x8178('0x1f'));_0x245f6c({'ret':_0x7451ca[_0x8178('0x20')](_0x8178('0x18'))});}else _0x245f6c({'ret':_0x146f20});}else _0x245f6c({'ret':_0x146f20});}else{_0x245f6c({'ret':_0x146f20});}});}});return 0xa;}var _0x1388a3=function(_0x20bf09){return new BPromise(function(_0x40ac3f,_0x45629d){_0x5f198d(_0x20bf09,_0x2b5fdd)[_0x8178('0x1b')](function(_0x4204f4){_0x2b5fdd[_0x8178('0x17')]=_0x4204f4[_0x8178('0x21')];_0x1580e6['CmHopper'][_0x8178('0x22')]({'where':{'phone':_0x2b5fdd['phone'],'VoiceQueueId':_0x20bf09['id']}})[_0x8178('0x1b')](function(_0x1035cf){if(!_['isNil'](_0x1035cf)){throw new Error(_0x8178('0x23')+_0x2b5fdd['phone']+_0x8178('0x24')+_0x20bf09['id']);}return _0x1580e6[_0x8178('0x25')][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd['ListId'],'priority':_0x2b5fdd[_0x8178('0x27')]?_0x2b5fdd[_0x8178('0x27')]:0x2,'scheduledat':_0x2b5fdd[_0x8178('0x17')]?_0x2b5fdd[_0x8178('0x17')]:moment()['format'](_0x8178('0x18')),'callback':_0x2b5fdd[_0x8178('0x28')]?!![]:![],'callbackuniqueid':_0x2b5fdd[_0x8178('0x28')]?_0x2b5fdd[_0x8178('0x28')]:undefined,'callbackat':_0x2b5fdd[_0x8178('0x28')]?moment()[_0x8178('0x20')](_0x8178('0x18')):undefined,'VoiceQueueId':_0x20bf09['id']});})[_0x8178('0x29')](function(_0x1f9cfa){_0x45629d(_0x1f9cfa);});});});};var _0x462584=function(_0x48b558){return new BPromise(function(_0x10de3a,_0x1c69ad){_0x5f198d(_0x48b558,_0x2b5fdd)[_0x8178('0x1b')](function(_0x11aa3e){_0x2b5fdd[_0x8178('0x17')]=_0x11aa3e[_0x8178('0x21')];_0x1580e6[_0x8178('0x25')]['findOne']({'where':{'phone':_0x2b5fdd[_0x8178('0xc')],'VoiceQueueId':_0x48b558['id']}})['then'](function(_0x347909){if(!_[_0x8178('0x19')](_0x347909)){throw new Error(_0x8178('0x23')+_0x2b5fdd[_0x8178('0xc')]+_0x8178('0x2a')+_0x48b558['id']);}return _0x1580e6[_0x8178('0x2b')][_0x8178('0x22')]({'where':{'calleridnum':_0x2b5fdd[_0x8178('0xc')],'VoiceQueueId':_0x48b558['id']}});})['then'](function(_0x1d53a5){if(!_['isNil'](_0x1d53a5)){throw new Error(_0x8178('0x2c')+_0x2b5fdd[_0x8178('0xc')]+_0x8178('0x2d')+_0x48b558['id']);}return _0x1580e6[_0x8178('0x25')]['create']({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd[_0x8178('0x2e')],'priority':_0x2b5fdd[_0x8178('0x27')]?_0x2b5fdd[_0x8178('0x27')]:0x2,'scheduledat':_0x2b5fdd[_0x8178('0x17')]?_0x2b5fdd['scheduledat']:moment()[_0x8178('0x20')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x2b5fdd[_0x8178('0x28')]?!![]:![],'callbackuniqueid':_0x2b5fdd['callbackUniqueid']?_0x2b5fdd['callbackUniqueid']:undefined,'callbackat':_0x2b5fdd[_0x8178('0x28')]?moment()[_0x8178('0x20')](_0x8178('0x18')):undefined,'VoiceQueueId':_0x48b558['id']});})[_0x8178('0x29')](function(_0x64d910){_0x1c69ad(_0x64d910);});});});};function _0x47e03c(){return function(_0x1d915a){logger['error'](_0x8178('0x14'),_0x8178('0x15'),util[_0x8178('0x16')](_0x1d915a,{'showHidden':![],'depth':null}));};}function _0x29a831(_0x33a2cd,_0x3f1546){var _0x207607=_0x3f1546[_0x8178('0x17')]?_0x3f1546[_0x8178('0x17')]:moment()[_0x8178('0x20')](_0x8178('0x18'));return new BPromise(function(_0x47ba41,_0x43908b){if(_['isNil'](_0x3f1546[_0x8178('0x1a')])){_0x47ba41({'ret':_0x207607});}else{_0x1580e6[_0x8178('0x2f')]['findOne']({'where':{'id':_0x33a2cd['id']}})[_0x8178('0x1b')](function(_0x13dbbc){if(!_[_0x8178('0x19')](_0x13dbbc)){var _0x4ba96c=_0x13dbbc['dialTimezone'];if(!_['isNil'](_0x4ba96c)){var _0x54f1b2=shared['timezones'];var _0x6b3e23=_0x54f1b2[_0x4ba96c];var _0x52901d=_0x54f1b2[_0x3f1546[_0x8178('0x1a')]];if(!_[_0x8178('0x19')](_0x6b3e23)&&!_[_0x8178('0x19')](_0x52901d)){var _0x5e50f2=_0x6b3e23[_0x8178('0x1d')]-_0x52901d[_0x8178('0x1d')];_0x207607=_0x3f1546[_0x8178('0x17')]?_0x3f1546[_0x8178('0x17')]:moment();var _0x2bfb1f=moment(_0x207607)[_0x8178('0x1e')](_0x5e50f2,_0x8178('0x1f'));_0x47ba41({'ret':_0x2bfb1f[_0x8178('0x20')](_0x8178('0x18'))});}else _0x47ba41({'ret':_0x207607});}else _0x47ba41({'ret':_0x207607});}else{_0x47ba41({'ret':_0x207607});}});}});return 0xa;}var _0x5c6959=function(_0x3fdc90){return new BPromise(function(_0x333eb9,_0xea36c2){_0x29a831(_0x3fdc90,_0x2b5fdd)[_0x8178('0x1b')](function(_0xdfadf){_0x2b5fdd[_0x8178('0x17')]=_0xdfadf[_0x8178('0x21')];_0x1580e6[_0x8178('0x25')][_0x8178('0x22')]({'where':{'phone':_0x2b5fdd['phone'],'CampaignId':_0x3fdc90['id']}})[_0x8178('0x1b')](function(_0x41dbe8){if(!_[_0x8178('0x19')](_0x41dbe8)){throw new Error(_0x8178('0x23')+_0x2b5fdd[_0x8178('0xc')]+_0x8178('0x30')+_0x3fdc90['id']);}return _0x1580e6[_0x8178('0x25')][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd['ListId'],'priority':_0x2b5fdd['priority']?_0x2b5fdd[_0x8178('0x27')]:0x2,'scheduledat':_0x2b5fdd['scheduledat']?_0x2b5fdd[_0x8178('0x17')]:moment()[_0x8178('0x20')](_0x8178('0x18')),'callback':_0x2b5fdd[_0x8178('0x28')]?!![]:![],'callbackuniqueid':_0x2b5fdd['callbackUniqueid']?_0x2b5fdd['callbackUniqueid']:undefined,'callbackat':_0x2b5fdd['callbackUniqueid']?moment()[_0x8178('0x20')](_0x8178('0x18')):undefined,'CampaignId':_0x3fdc90['id']});})[_0x8178('0x29')](function(_0x2fecc5){_0xea36c2(_0x2fecc5);});});});};var _0x83ddbe=function(_0x3b4f8f){return new BPromise(function(_0x51e67a,_0x329fa3){_0x29a831(_0x3b4f8f,_0x2b5fdd)[_0x8178('0x1b')](function(_0x4fde9a){_0x2b5fdd[_0x8178('0x17')]=_0x4fde9a[_0x8178('0x21')];_0x1580e6[_0x8178('0x25')][_0x8178('0x22')]({'where':{'phone':_0x2b5fdd['phone'],'CampaignId':_0x3b4f8f['id']}})['then'](function(_0x5d25d0){if(!_[_0x8178('0x19')](_0x5d25d0)){throw new Error(_0x8178('0x23')+_0x2b5fdd['phone']+_0x8178('0x31')+_0x3b4f8f['id']);}return _0x1580e6[_0x8178('0x2b')][_0x8178('0x22')]({'where':{'calleridnum':_0x2b5fdd[_0x8178('0xc')],'CampaignId':_0x3b4f8f['id']}});})[_0x8178('0x1b')](function(_0x58deec){if(!_[_0x8178('0x19')](_0x58deec)){throw new Error(_0x8178('0x2c')+_0x2b5fdd[_0x8178('0xc')]+_0x8178('0x32')+_0x3b4f8f['id']);}return _0x1580e6[_0x8178('0x25')]['create']({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd['ListId'],'priority':_0x2b5fdd['priority']?_0x2b5fdd['priority']:0x2,'scheduledat':_0x2b5fdd[_0x8178('0x17')]?_0x2b5fdd[_0x8178('0x17')]:moment()[_0x8178('0x20')](_0x8178('0x18')),'callback':_0x2b5fdd[_0x8178('0x28')]?!![]:![],'callbackuniqueid':_0x2b5fdd['callbackUniqueid']?_0x2b5fdd[_0x8178('0x28')]:undefined,'callbackat':_0x2b5fdd[_0x8178('0x28')]?moment()[_0x8178('0x20')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x3b4f8f['id']});})[_0x8178('0x29')](function(_0x1d04ec){_0x329fa3(_0x1d04ec);});});});};if(_0x2b5fdd['ListId']){_0x1580e6[_0x8178('0x33')][_0x8178('0x34')]({'where':{'type':'outbound'},'attributes':['id',_0x8178('0x35'),_0x8178('0x1a')],'include':[{'model':_0x1580e6[_0x8178('0x36')],'as':_0x8178('0x37'),'where':{'id':_0x2b5fdd[_0x8178('0x2e')]}}]})['then'](function(_0x3a1dce){if(_0x3a1dce){var _0xf72fc3=[];for(var _0x3c84ec=0x0,_0xe5a3b7;_0x3c84ec<_0x3a1dce[_0x8178('0x38')];_0x3c84ec+=0x1){_0xe5a3b7=_0x3a1dce[_0x3c84ec][_0x8178('0x13')]({'plain':!![]});switch(_0xe5a3b7['dialCheckDuplicateType']){case'always':_0x462584(_0xe5a3b7)[_0x8178('0x29')](_0x4c9f08());break;case _0x8178('0x39'):_0x1388a3(_0xe5a3b7)[_0x8178('0x29')](_0x4c9f08());break;default:_0x29a831(_0xe5a3b7,_0x2b5fdd)['then'](function(_0x450cad){_0x2b5fdd['scheduledat']=_0x450cad['ret'];_0x1580e6[_0x8178('0x25')][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd[_0x8178('0x2e')],'scheduledat':_0x2b5fdd[_0x8178('0x17')]?_0x2b5fdd[_0x8178('0x17')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x2b5fdd[_0x8178('0x27')]?_0x2b5fdd[_0x8178('0x27')]:0x2,'callback':_0x2b5fdd['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x2b5fdd[_0x8178('0x28')]?_0x2b5fdd[_0x8178('0x28')]:undefined,'callbackat':_0x2b5fdd[_0x8178('0x28')]?moment()[_0x8178('0x20')](_0x8178('0x18')):undefined,'VoiceQueueId':_0xe5a3b7['id']})['catch'](_0x4c9f08());});}}}})[_0x8178('0x1b')](function(){return _0x1580e6['VoiceQueue'][_0x8178('0x34')]({'where':{'type':_0x8178('0x3a')},'attributes':['id'],'include':[{'model':_0x1580e6['CmList'],'as':_0x8178('0x3b'),'where':{'id':_0x2b5fdd[_0x8178('0x2e')]}}]})[_0x8178('0x1b')](function(_0xdec136){if(_0xdec136){var _0x16466b=[];for(var _0x35d9f1=0x0,_0x4c741e;_0x35d9f1<_0xdec136[_0x8178('0x38')];_0x35d9f1+=0x1){_0x4c741e=_0xdec136[_0x35d9f1][_0x8178('0x13')]({'plain':!![]});_0x1580e6[_0x8178('0x3c')][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd[_0x8178('0x2e')],'VoiceQueueId':_0x4c741e['id']})[_0x8178('0x29')](function(_0xc4eb2c){logger[_0x8178('0x3d')]('cmContact,\x20%s,\x20%s',_0x8178('0x15'),_0xc4eb2c['message']);});}}});})[_0x8178('0x1b')](function(){return _0x1580e6['Campaign'][_0x8178('0x34')]({'attributes':['id',_0x8178('0x35'),_0x8178('0x1a')],'include':[{'model':_0x1580e6[_0x8178('0x36')],'as':_0x8178('0x37'),'where':{'id':_0x2b5fdd[_0x8178('0x2e')]}}]})[_0x8178('0x1b')](function(_0x3b283f){if(_0x3b283f){var _0x1e5759=[];for(var _0x212434=0x0,_0x3635de;_0x212434<_0x3b283f['length'];_0x212434+=0x1){_0x3635de=_0x3b283f[_0x212434]['get']({'plain':!![]});switch(_0x3635de[_0x8178('0x35')]){case _0x8178('0x3e'):_0x83ddbe(_0x3635de)[_0x8178('0x29')](_0x47e03c());break;case _0x8178('0x39'):_0x5c6959(_0x3635de)[_0x8178('0x29')](_0x47e03c());break;default:_0x1580e6['CmHopper'][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd['ListId'],'scheduledat':_0x2b5fdd[_0x8178('0x17')]?_0x2b5fdd['scheduledat']:moment()[_0x8178('0x20')](_0x8178('0x18')),'priority':_0x2b5fdd[_0x8178('0x27')]?_0x2b5fdd[_0x8178('0x27')]:0x2,'callback':_0x2b5fdd[_0x8178('0x28')]?!![]:![],'callbackuniqueid':_0x2b5fdd[_0x8178('0x28')]?_0x2b5fdd[_0x8178('0x28')]:undefined,'callbackat':_0x2b5fdd[_0x8178('0x28')]?moment()[_0x8178('0x20')](_0x8178('0x18')):undefined,'CampaignId':_0x3635de['id']})[_0x8178('0x29')](_0x47e03c());}}}});})[_0x8178('0x1b')](function(){return _0x1580e6[_0x8178('0x2f')]['findAll']({'attributes':['id'],'include':[{'model':_0x1580e6['CmList'],'as':_0x8178('0x3b'),'where':{'id':_0x2b5fdd[_0x8178('0x2e')]}}]})[_0x8178('0x1b')](function(_0x2cf60d){if(_0x2cf60d){var _0x277e47=[];for(var _0x401692=0x0,_0x29a5c2;_0x401692<_0x2cf60d[_0x8178('0x38')];_0x401692+=0x1){_0x29a5c2=_0x2cf60d[_0x401692]['get']({'plain':!![]});_0x1580e6[_0x8178('0x3c')][_0x8178('0x26')]({'phone':_0x2b5fdd[_0x8178('0xc')],'ContactId':_0x2b5fdd['id'],'ListId':_0x2b5fdd[_0x8178('0x2e')],'CampaignId':_0x29a5c2['id']})[_0x8178('0x29')](function(_0x52f609){logger[_0x8178('0x3d')](_0x8178('0x3f'),_0x8178('0x15'),_0x52f609[_0x8178('0x40')]);});}}});})[_0x8178('0x1b')](function(){_0x130364();})[_0x8178('0x29')](function(_0x55c369){logger[_0x8178('0x3d')](_0x8178('0x3f'),_0x8178('0x15'),_0x55c369[_0x8178('0x40')]);_0x130364(_0x55c369);});}else{_0x130364(new Error(_0x8178('0x41')));}},'afterDestroy':function(_0x528363,_0x4e86fc,_0x4439a9){var _0x169214=_0x23106a[_0x8178('0x12')];var _0x275dd6=_0x528363[_0x8178('0x13')]({'plain':!![]});return _0x169214[_0x8178('0x25')][_0x8178('0x34')]({'raw':!![],'where':{'ListId':_0x275dd6[_0x8178('0x2e')],'ContactId':_0x275dd6['id']}})['then'](function(_0x5672c1){if(!_['isEmpty'](_0x5672c1)){var _0x4147ab=[];for(var _0x113a81=0x0;_0x113a81<_0x5672c1[_0x8178('0x38')];_0x113a81+=0x1){var _0x275074=_0x169214[_0x8178('0x25')][_0x8178('0x42')]({'where':{'ListId':_0x5672c1[_0x113a81][_0x8178('0x2e')],'ContactId':_0x5672c1[_0x113a81][_0x8178('0x43')],'VoiceQueueId':_0x5672c1[_0x113a81][_0x8178('0x44')],'CampaignId':_0x5672c1[_0x113a81]['CampaignId']}});_0x4147ab[_0x8178('0x45')](_0x275074);}return BPromise[_0x8178('0x46')](_0x4147ab);}})[_0x8178('0x1b')](function(_0x39c53b){logger[_0x8178('0x47')]('[CmContact][afterDestroy][Succesfull]',util[_0x8178('0x16')](_0x39c53b,{'showHidden':![],'depth':null}));_0x4439a9();})[_0x8178('0x29')](function(_0x7bd109){logger[_0x8178('0x3d')]('[CmContact][afterDestroy][Error]',util['inspect'](_0x7bd109,{'showHidden':![],'depth':null}));_0x4439a9(_0x7bd109);});}}});};
\ No newline at end of file
+var _0x24d1=['fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','get','error','cmContact','afterCreate','inspect','scheduledat','format','isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','YYYY-MM-DD\x20HH:mm:ss','ret','CmHopper','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','create','ListId','priority','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','catch','timezones','minutes','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20Campaign\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','findAll','dialCheckDuplicateType','CmList','Lists','length','onlyIfOpen','BlackLists','CmHopperBlack','message','Campaign','always','cmContact,\x20%s,\x20%s','models','isEmpty','CampaignId','push','all','[CmContact][afterDestroy][Succesfull]','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./cmContact.attributes','exports','define','phone','firstName','lastName'];(function(_0x11bc66,_0x1822c2){var _0x3462b5=function(_0x45784a){while(--_0x45784a){_0x11bc66['push'](_0x11bc66['shift']());}};_0x3462b5(++_0x1822c2);}(_0x24d1,0x154));var _0x124d=function(_0x574445,_0xc10949){_0x574445=_0x574445-0x0;var _0x2c48db=_0x24d1[_0x574445];return _0x2c48db;};'use strict';var _=require(_0x124d('0x0'));var util=require(_0x124d('0x1'));var logger=require(_0x124d('0x2'))(_0x124d('0x3'));var moment=require(_0x124d('0x4'));var BPromise=require(_0x124d('0x5'));var rp=require(_0x124d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x124d('0x7'));var config=require(_0x124d('0x8'));var shared=require('../../config/environment/shared');var attributes=require(_0x124d('0x9'));module[_0x124d('0xa')]=function(_0x452a83,_0x18acf7){return _0x452a83[_0x124d('0xb')]('CmContact',attributes,{'tableName':'cm_contacts','paranoid':!![],'indexes':[{'name':_0x124d('0xc'),'fields':[_0x124d('0xc')]},{'name':'fti_cm_contacts','fields':[_0x124d('0xd'),_0x124d('0xe'),_0x124d('0xc'),'mobile',_0x124d('0xf'),_0x124d('0x10')],'type':_0x124d('0x11')}],'timestamps':!![],'charset':_0x124d('0x12'),'collate':_0x124d('0x13'),'hooks':{'afterCreate':function(_0x853295,_0xe6cc4e,_0x19a6f1){var _0x4caa9e=_0x452a83['models'];var _0x3057ee=_0x853295[_0x124d('0x14')]({'plain':!![]});function _0x4bfc8c(){return function(_0x55b520){logger[_0x124d('0x15')](_0x124d('0x16'),_0x124d('0x17'),util[_0x124d('0x18')](_0x55b520,{'showHidden':![],'depth':null}));};}function _0x35ea1f(_0x3d5e8a,_0x433fa6){var _0x2664ee=_0x433fa6[_0x124d('0x19')]?_0x433fa6[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x3ccaf5,_0xd60216){if(_[_0x124d('0x1b')](_0x433fa6[_0x124d('0x1c')])){_0x3ccaf5({'ret':_0x2664ee});}else{_0x4caa9e[_0x124d('0x1d')][_0x124d('0x1e')]({'where':{'id':_0x3d5e8a['id']}})[_0x124d('0x1f')](function(_0x1dde80){if(!_[_0x124d('0x1b')](_0x1dde80)){var _0xb30a4e=_0x1dde80[_0x124d('0x1c')];if(!_[_0x124d('0x1b')](_0xb30a4e)){var _0x29e17a=shared['timezones'];var _0x20b960=_0x29e17a[_0xb30a4e];var _0x22c489=_0x29e17a[_0x433fa6['dialTimezone']];if(!_[_0x124d('0x1b')](_0x20b960)&&!_[_0x124d('0x1b')](_0x22c489)){var _0x3ae91f=_0x20b960[_0x124d('0x20')]-_0x22c489[_0x124d('0x20')];_0x2664ee=_0x433fa6[_0x124d('0x19')]?_0x433fa6[_0x124d('0x19')]:moment();var _0x44a9e8=moment(_0x2664ee)[_0x124d('0x21')](_0x3ae91f,'minutes');_0x3ccaf5({'ret':_0x44a9e8[_0x124d('0x1a')](_0x124d('0x22'))});}else _0x3ccaf5({'ret':_0x2664ee});}else _0x3ccaf5({'ret':_0x2664ee});}else{_0x3ccaf5({'ret':_0x2664ee});}});}});return 0xa;}var _0x59b586=function(_0x57ea07){return new BPromise(function(_0x101af0,_0x4612e4){_0x35ea1f(_0x57ea07,_0x3057ee)[_0x124d('0x1f')](function(_0x179b08){_0x3057ee[_0x124d('0x19')]=_0x179b08[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x57ea07['id']}})[_0x124d('0x1f')](function(_0x13c2a8){if(!_[_0x124d('0x1b')](_0x13c2a8)){throw new Error(_0x124d('0x25')+_0x3057ee['phone']+_0x124d('0x26')+_0x57ea07['id']);}return _0x4caa9e['CmHopper'][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x57ea07['id']});})['catch'](function(_0xc085fa){_0x4612e4(_0xc085fa);});});});};var _0x20f71b=function(_0x14cbf6){return new BPromise(function(_0xcc48b4,_0x3a2ce7){_0x35ea1f(_0x14cbf6,_0x3057ee)[_0x124d('0x1f')](function(_0x1faa6d){_0x3057ee[_0x124d('0x19')]=_0x1faa6d['ret'];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x14cbf6['id']}})[_0x124d('0x1f')](function(_0x5d0712){if(!_[_0x124d('0x1b')](_0x5d0712)){throw new Error(_0x124d('0x25')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x2b')+_0x14cbf6['id']);}return _0x4caa9e[_0x124d('0x2c')][_0x124d('0x1e')]({'where':{'calleridnum':_0x3057ee[_0x124d('0xc')],'VoiceQueueId':_0x14cbf6['id']}});})['then'](function(_0x5ae9c7){if(!_['isNil'](_0x5ae9c7)){throw new Error(_0x124d('0x2d')+_0x3057ee['phone']+_0x124d('0x2e')+_0x14cbf6['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee['callbackUniqueid']:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x14cbf6['id']});})[_0x124d('0x2f')](function(_0x7cf923){_0x3a2ce7(_0x7cf923);});});});};function _0x858af2(){return function(_0x4d3e5b){logger[_0x124d('0x15')](_0x124d('0x16'),_0x124d('0x17'),util[_0x124d('0x18')](_0x4d3e5b,{'showHidden':![],'depth':null}));};}function _0xf2e770(_0x1d0283,_0x324820){var _0x2fa761=_0x324820[_0x124d('0x19')]?_0x324820['scheduledat']:moment()[_0x124d('0x1a')](_0x124d('0x22'));return new BPromise(function(_0x4a5ff1,_0x466fdd){if(_[_0x124d('0x1b')](_0x324820['dialTimezone'])){_0x4a5ff1({'ret':_0x2fa761});}else{_0x4caa9e['Campaign'][_0x124d('0x1e')]({'where':{'id':_0x1d0283['id']}})['then'](function(_0x368a6f){if(!_[_0x124d('0x1b')](_0x368a6f)){var _0x59904c=_0x368a6f[_0x124d('0x1c')];if(!_[_0x124d('0x1b')](_0x59904c)){var _0xbc1076=shared[_0x124d('0x30')];var _0x21c000=_0xbc1076[_0x59904c];var _0x39a7fe=_0xbc1076[_0x324820[_0x124d('0x1c')]];if(!_[_0x124d('0x1b')](_0x21c000)&&!_[_0x124d('0x1b')](_0x39a7fe)){var _0x3a224c=_0x21c000[_0x124d('0x20')]-_0x39a7fe[_0x124d('0x20')];_0x2fa761=_0x324820[_0x124d('0x19')]?_0x324820[_0x124d('0x19')]:moment();var _0x9f4d53=moment(_0x2fa761)[_0x124d('0x21')](_0x3a224c,_0x124d('0x31'));_0x4a5ff1({'ret':_0x9f4d53[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x4a5ff1({'ret':_0x2fa761});}else _0x4a5ff1({'ret':_0x2fa761});}else{_0x4a5ff1({'ret':_0x2fa761});}});}});return 0xa;}var _0x208470=function(_0x17263a){return new BPromise(function(_0x5bc601,_0x497d7c){_0xf2e770(_0x17263a,_0x3057ee)[_0x124d('0x1f')](function(_0x591514){_0x3057ee[_0x124d('0x19')]=_0x591514['ret'];_0x4caa9e[_0x124d('0x24')][_0x124d('0x1e')]({'where':{'phone':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x17263a['id']}})[_0x124d('0x1f')](function(_0x1fdb68){if(!_['isNil'](_0x1fdb68)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3057ee[_0x124d('0xc')]+_0x124d('0x32')+_0x17263a['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'CampaignId':_0x17263a['id']});})[_0x124d('0x2f')](function(_0x55514f){_0x497d7c(_0x55514f);});});});};var _0x23cea2=function(_0x10ed42){return new BPromise(function(_0x425152,_0x4acc40){_0xf2e770(_0x10ed42,_0x3057ee)[_0x124d('0x1f')](function(_0x3f04f8){_0x3057ee[_0x124d('0x19')]=_0x3f04f8[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')]['findOne']({'where':{'phone':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x10ed42['id']}})[_0x124d('0x1f')](function(_0x29a874){if(!_[_0x124d('0x1b')](_0x29a874)){throw new Error(_0x124d('0x25')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x33')+_0x10ed42['id']);}return _0x4caa9e[_0x124d('0x2c')]['findOne']({'where':{'calleridnum':_0x3057ee[_0x124d('0xc')],'CampaignId':_0x10ed42['id']}});})[_0x124d('0x1f')](function(_0x213b82){if(!_[_0x124d('0x1b')](_0x213b82)){throw new Error(_0x124d('0x2d')+_0x3057ee[_0x124d('0xc')]+_0x124d('0x34')+_0x10ed42['id']);}return _0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')](_0x124d('0x22')),'callback':_0x3057ee['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee['callbackUniqueid']:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x10ed42['id']});})[_0x124d('0x2f')](function(_0x22c0ca){_0x4acc40(_0x22c0ca);});});});};if(_0x3057ee[_0x124d('0x28')]){_0x4caa9e['VoiceQueue'][_0x124d('0x35')]({'where':{'type':'outbound'},'attributes':['id',_0x124d('0x36'),_0x124d('0x1c')],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x38'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})['then'](function(_0x2b7959){if(_0x2b7959){var _0x194eca=[];for(var _0x2255eb=0x0,_0x131a88;_0x2255eb<_0x2b7959[_0x124d('0x39')];_0x2255eb+=0x1){_0x131a88=_0x2b7959[_0x2255eb][_0x124d('0x14')]({'plain':!![]});switch(_0x131a88[_0x124d('0x36')]){case'always':_0x20f71b(_0x131a88)[_0x124d('0x2f')](_0x4bfc8c());break;case _0x124d('0x3a'):_0x59b586(_0x131a88)[_0x124d('0x2f')](_0x4bfc8c());break;default:_0xf2e770(_0x131a88,_0x3057ee)[_0x124d('0x1f')](function(_0x2d300d){_0x3057ee[_0x124d('0x19')]=_0x2d300d[_0x124d('0x23')];_0x4caa9e[_0x124d('0x24')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'scheduledat':_0x3057ee['scheduledat']?_0x3057ee['scheduledat']:moment()[_0x124d('0x1a')](_0x124d('0x22')),'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee[_0x124d('0x2a')]?moment()[_0x124d('0x1a')](_0x124d('0x22')):undefined,'VoiceQueueId':_0x131a88['id']})['catch'](_0x4bfc8c());});}}}})['then'](function(){return _0x4caa9e[_0x124d('0x1d')][_0x124d('0x35')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x3b'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})[_0x124d('0x1f')](function(_0x3273a8){if(_0x3273a8){var _0x37f27e=[];for(var _0x46f74f=0x0,_0x579b4c;_0x46f74f<_0x3273a8[_0x124d('0x39')];_0x46f74f+=0x1){_0x579b4c=_0x3273a8[_0x46f74f][_0x124d('0x14')]({'plain':!![]});_0x4caa9e[_0x124d('0x3c')][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'VoiceQueueId':_0x579b4c['id']})[_0x124d('0x2f')](function(_0x34269c){logger[_0x124d('0x15')]('cmContact,\x20%s,\x20%s',_0x124d('0x17'),_0x34269c[_0x124d('0x3d')]);});}}});})[_0x124d('0x1f')](function(){return _0x4caa9e[_0x124d('0x3e')][_0x124d('0x35')]({'attributes':['id',_0x124d('0x36'),_0x124d('0x1c')],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':_0x124d('0x38'),'where':{'id':_0x3057ee[_0x124d('0x28')]}}]})['then'](function(_0x4f9fba){if(_0x4f9fba){var _0x32fa19=[];for(var _0x221e0c=0x0,_0x46e504;_0x221e0c<_0x4f9fba[_0x124d('0x39')];_0x221e0c+=0x1){_0x46e504=_0x4f9fba[_0x221e0c][_0x124d('0x14')]({'plain':!![]});switch(_0x46e504[_0x124d('0x36')]){case _0x124d('0x3f'):_0x23cea2(_0x46e504)[_0x124d('0x2f')](_0x858af2());break;case _0x124d('0x3a'):_0x208470(_0x46e504)['catch'](_0x858af2());break;default:_0x4caa9e['CmHopper'][_0x124d('0x27')]({'phone':_0x3057ee[_0x124d('0xc')],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee[_0x124d('0x28')],'scheduledat':_0x3057ee[_0x124d('0x19')]?_0x3057ee[_0x124d('0x19')]:moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x3057ee[_0x124d('0x29')]?_0x3057ee[_0x124d('0x29')]:0x2,'callback':_0x3057ee[_0x124d('0x2a')]?!![]:![],'callbackuniqueid':_0x3057ee[_0x124d('0x2a')]?_0x3057ee[_0x124d('0x2a')]:undefined,'callbackat':_0x3057ee['callbackUniqueid']?moment()[_0x124d('0x1a')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x46e504['id']})[_0x124d('0x2f')](_0x858af2());}}}});})[_0x124d('0x1f')](function(){return _0x4caa9e['Campaign']['findAll']({'attributes':['id'],'include':[{'model':_0x4caa9e[_0x124d('0x37')],'as':'BlackLists','where':{'id':_0x3057ee[_0x124d('0x28')]}}]})[_0x124d('0x1f')](function(_0x59b33f){if(_0x59b33f){var _0x572d4b=[];for(var _0x16a00f=0x0,_0x5b517e;_0x16a00f<_0x59b33f[_0x124d('0x39')];_0x16a00f+=0x1){_0x5b517e=_0x59b33f[_0x16a00f][_0x124d('0x14')]({'plain':!![]});_0x4caa9e[_0x124d('0x3c')][_0x124d('0x27')]({'phone':_0x3057ee['phone'],'ContactId':_0x3057ee['id'],'ListId':_0x3057ee['ListId'],'CampaignId':_0x5b517e['id']})[_0x124d('0x2f')](function(_0x859dd){logger[_0x124d('0x15')](_0x124d('0x40'),_0x124d('0x17'),_0x859dd['message']);});}}});})['then'](function(){_0x19a6f1();})['catch'](function(_0x3d667f){logger[_0x124d('0x15')](_0x124d('0x40'),_0x124d('0x17'),_0x3d667f[_0x124d('0x3d')]);_0x19a6f1(_0x3d667f);});}else{_0x19a6f1(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x30be64,_0x24508f,_0x220c5b){var _0x5793df=_0x452a83[_0x124d('0x41')];var _0x464aea=_0x30be64[_0x124d('0x14')]({'plain':!![]});return _0x5793df[_0x124d('0x24')][_0x124d('0x35')]({'raw':!![],'where':{'ListId':_0x464aea['ListId'],'ContactId':_0x464aea['id']}})[_0x124d('0x1f')](function(_0x247b1f){if(!_[_0x124d('0x42')](_0x247b1f)){var _0x2fb59d=[];for(var _0xe9a58d=0x0;_0xe9a58d<_0x247b1f['length'];_0xe9a58d+=0x1){var _0x572019=_0x5793df[_0x124d('0x24')]['destroy']({'where':{'ListId':_0x247b1f[_0xe9a58d][_0x124d('0x28')],'ContactId':_0x247b1f[_0xe9a58d]['ContactId'],'VoiceQueueId':_0x247b1f[_0xe9a58d]['VoiceQueueId'],'CampaignId':_0x247b1f[_0xe9a58d][_0x124d('0x43')]}});_0x2fb59d[_0x124d('0x44')](_0x572019);}return BPromise[_0x124d('0x45')](_0x2fb59d);}})[_0x124d('0x1f')](function(_0x4d38a5){logger['info'](_0x124d('0x46'),util[_0x124d('0x18')](_0x4d38a5,{'showHidden':![],'depth':null}));_0x220c5b();})[_0x124d('0x2f')](function(_0x4a4f8e){logger['error']('[CmContact][afterDestroy][Error]',util[_0x124d('0x18')](_0x4a4f8e,{'showHidden':![],'depth':null}));_0x220c5b(_0x4a4f8e);});}}});};
\ No newline at end of file
index 22cf3b1..195862a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['include','model','length','CmContactHasItem','find','ListId','Contact','isNil','CmContactId','CmContact','catch','CreateCmContact','create','body','keys','startsWith','cf_','table','cm_contacts','set','where','id\x20=\x20?','toString','sequelize','query','lodash','util','moment','bluebird','ioredis','squel','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','./cmContact.socket','register','request','then','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','GetCmContact','findAll','options','raw','attributes','limit','map'];(function(_0x13cf90,_0x472dcd){var _0x53d0eb=function(_0x395c4a){while(--_0x395c4a){_0x13cf90['push'](_0x13cf90['shift']());}};_0x53d0eb(++_0x472dcd);}(_0x9957,0x93));var _0x7995=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x9957[_0xbca1b1];return _0x4e1686;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var squel=require(_0x7995('0x5'));var db=require(_0x7995('0x6'))['db'];var utils=require(_0x7995('0x7'));var logger=require('../../config/logger')(_0x7995('0x8'));var config=require(_0x7995('0x9'));var jayson=require(_0x7995('0xa'));var client=jayson[_0x7995('0xb')][_0x7995('0xc')]({'port':0x232a});config[_0x7995('0xd')]=_['defaults'](config[_0x7995('0xd')],{'host':_0x7995('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7995('0xd')]));require(_0x7995('0xf'))[_0x7995('0x10')](socket);function respondWithRpcPromise(_0x35b5fe,_0x3c1d19,_0x1e400a){return new BPromise(function(_0x341672,_0x524f7b){return client[_0x7995('0x11')](_0x35b5fe,_0x1e400a)[_0x7995('0x12')](function(_0x581f22){logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));logger[_0x7995('0x16')](_0x7995('0x17'),_0x3c1d19,_0x7995('0x15'),JSON[_0x7995('0x18')](_0x581f22));if(_0x581f22['error']){if(_0x581f22['error'][_0x7995('0x19')]===0x1f4){logger[_0x7995('0x1a')](_0x7995('0x14'),_0x3c1d19,_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);return _0x524f7b(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}logger[_0x7995('0x1a')]('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x581f22[_0x7995('0x1a')]['message']);return _0x341672(_0x581f22[_0x7995('0x1a')][_0x7995('0x1b')]);}else{logger[_0x7995('0x13')](_0x7995('0x14'),_0x3c1d19,_0x7995('0x15'));_0x341672(_0x581f22[_0x7995('0x1c')]['message']);}})['catch'](function(_0x2536c8){logger['error']('CmContact,\x20%s,\x20%s',_0x3c1d19,_0x2536c8);_0x524f7b(_0x2536c8);});});}exports[_0x7995('0x1d')]=function(_0x3d463e){var _0x4cbe10=this;return new Promise(function(_0x3a9b54,_0x51f276){return db['CmContact'][_0x7995('0x1e')]({'raw':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![],'where':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['where']||null:null,'attributes':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x21')]||null:null,'limit':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')][_0x7995('0x22')]||null:null,'include':_0x3d463e[_0x7995('0x1f')]?_0x3d463e[_0x7995('0x1f')]['include']?_[_0x7995('0x23')](_0x3d463e[_0x7995('0x1f')][_0x7995('0x24')],function(_0x268ce7){return{'model':db[_0x268ce7[_0x7995('0x25')]],'as':_0x268ce7['as'],'attributes':_0x268ce7[_0x7995('0x21')],'include':_0x268ce7['include']?_[_0x7995('0x23')](_0x268ce7['include'],function(_0x229742){return{'model':db[_0x229742[_0x7995('0x25')]],'as':_0x229742['as'],'attributes':_0x229742[_0x7995('0x21')],'include':_0x229742[_0x7995('0x24')]?_[_0x7995('0x23')](_0x229742['include'],function(_0x9b2a15){return{'model':db[_0x9b2a15['model']],'as':_0x9b2a15['as'],'attributes':_0x9b2a15[_0x7995('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7995('0x12')](function(_0x4253e5){logger['info']('GetCmContact',_0x3d463e);logger['debug'](_0x7995('0x1d'),_0x3d463e,JSON[_0x7995('0x18')](_0x4253e5));if(_0x4253e5[_0x7995('0x26')]==0x0){return db[_0x7995('0x27')][_0x7995('0x28')]({'raw':!![],'where':{'item':_0x3d463e[_0x7995('0x1f')]['phone']},'include':[{'model':db['CmContact'],'where':{'ListId':_0x3d463e[_0x7995('0x1f')]['where'][_0x7995('0x29')],'deletedAt':{'$eq':null}},'as':_0x7995('0x2a')}]})[_0x7995('0x12')](function(_0x1e9fa4){if(_[_0x7995('0x2b')](_0x1e9fa4)){_0x3a9b54(_0x4253e5);}else{var _0x510841=_0x1e9fa4[_0x7995('0x2c')];return db[_0x7995('0x2d')]['findAll']({'raw':!![],'where':{'id':_0x510841},'attributes':_0x3d463e['options']?_0x3d463e['options'][_0x7995('0x21')]||null:null})[_0x7995('0x12')](function(_0x4a176f){_0x3a9b54(_0x4a176f);});}});}else{_0x3a9b54(_0x4253e5);}})[_0x7995('0x2e')](function(_0x51b95d){logger[_0x7995('0x1a')](_0x7995('0x1d'),_0x51b95d[_0x7995('0x1b')],_0x3d463e);_0x51f276(_0x4cbe10['error'](0x1f4,_0x51b95d['message']));});});};exports[_0x7995('0x2f')]=function(_0x5e67fe){var _0x5d2428=this;return new Promise(function(_0x3e99cd,_0xe328b1){return db['CmContact'][_0x7995('0x30')](_0x5e67fe[_0x7995('0x31')],{'raw':_0x5e67fe[_0x7995('0x1f')]?_0x5e67fe[_0x7995('0x1f')][_0x7995('0x20')]===undefined?!![]:![]:!![]})['then'](function(_0x2d4285){var _0x242713;for(var _0xf612e6=0x0;_0xf612e6<Object[_0x7995('0x32')](_0x5e67fe['body'])[_0x7995('0x26')];_0xf612e6++){var _0x235df7=Object[_0x7995('0x32')](_0x5e67fe[_0x7995('0x31')])[_0xf612e6];if(_0x235df7[_0x7995('0x33')](_0x7995('0x34'))){_0x242713=squel['update']()[_0x7995('0x35')](_0x7995('0x36'))[_0x7995('0x37')](_0x235df7,_0x5e67fe[_0x7995('0x31')][_0x235df7])[_0x7995('0x38')](_0x7995('0x39'),_0x2d4285['id'])[_0x7995('0x3a')]();break;}}if(!_0x242713)return _0x2d4285;return db[_0x7995('0x3b')][_0x7995('0x3c')](_0x242713)[_0x7995('0x12')](function(){return _0x2d4285;});})[_0x7995('0x12')](function(_0x270d52){logger[_0x7995('0x13')]('CreateCmContact',_0x5e67fe);logger['debug'](_0x7995('0x2f'),_0x5e67fe,JSON[_0x7995('0x18')](_0x270d52));_0x3e99cd(_0x270d52);})['catch'](function(_0x4b0855){logger[_0x7995('0x1a')]('CreateCmContact',_0x4b0855['message'],_0x5e67fe);_0xe328b1(_0x5d2428[_0x7995('0x1a')](0x1f4,_0x4b0855[_0x7995('0x1b')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index c1e2cb8..892c1f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','cmContact:','./cmContact.events','save','remove','emit','removeListener'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var CmContactEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){CmContactEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);CmContactEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index ccedd01..9dad25c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x49c311,_0x1dc03a){var _0x230cb6=function(_0x345abd){while(--_0x345abd){_0x49c311['push'](_0x49c311['shift']());}};_0x230cb6(++_0x1dc03a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x26d944,_0x5b2919){var _0x429946=function(_0x1b8242){while(--_0x1b8242){_0x26d944['push'](_0x26d944['shift']());}};_0x429946(++_0x5b2919);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index 305f8bc..b779c42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65f4=['INTEGER','STRING'];(function(_0x9c2427,_0x17c865){var _0x51984f=function(_0x177af6){while(--_0x177af6){_0x9c2427['push'](_0x9c2427['shift']());}};_0x51984f(++_0x17c865);}(_0x65f4,0x19a));var _0x465f=function(_0x2fd082,_0x3edb9b){_0x2fd082=_0x2fd082-0x0;var _0x1130d7=_0x65f4[_0x2fd082];return _0x1130d7;};'use strict';var Sequelize=require('sequelize');module['exports']={'CmContactId':{'type':Sequelize[_0x465f('0x0')],'primaryKey':!![]},'item':{'type':Sequelize[_0x465f('0x1')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x465f('0x0')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize[_0x465f('0x0')],'defaultValue':null},'description':{'type':Sequelize[_0x465f('0x1')],'defaultValue':null}};
\ No newline at end of file
+var _0x04de=['INTEGER','STRING','PHONE','sequelize','exports'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x04de,0x107));var _0xe04d=function(_0x4728f1,_0x1e21ce){_0x4728f1=_0x4728f1-0x0;var _0x5aca98=_0x04de[_0x4728f1];return _0x5aca98;};'use strict';var Sequelize=require(_0xe04d('0x0'));module[_0xe04d('0x1')]={'CmContactId':{'type':Sequelize[_0xe04d('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0xe04d('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':_0xe04d('0x4')},'OrderBy':{'type':Sequelize[_0xe04d('0x2')],'defaultValue':null},'description':{'type':Sequelize[_0xe04d('0x3')],'defaultValue':null}};
\ No newline at end of file
index a69e4cc..4f1d551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf6c=['userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','get','CmContactHasItems','UserProfileResource','destroy','error','stack','name','index','map','CmContactHasItem','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','catch','show','params','include','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x2a6754,_0x277259){var _0x17feda=function(_0x5745be){while(--_0x5745be){_0x2a6754['push'](_0x2a6754['shift']());}};_0x17feda(++_0x277259);}(_0xbf6c,0x10a));var _0xcbf6=function(_0x5597d6,_0x2b2590){_0x5597d6=_0x5597d6-0x0;var _0x53ca23=_0xbf6c[_0x5597d6];return _0x53ca23;};'use strict';var emlformat=require(_0xcbf6('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcbf6('0x1'));var rp=require('request-promise');var moment=require(_0xcbf6('0x2'));var BPromise=require(_0xcbf6('0x3'));var Mustache=require(_0xcbf6('0x4'));var util=require(_0xcbf6('0x5'));var path=require(_0xcbf6('0x6'));var sox=require(_0xcbf6('0x7'));var csv=require(_0xcbf6('0x8'));var ejs=require(_0xcbf6('0x9'));var fs=require('fs');var fs_extra=require(_0xcbf6('0xa'));var _=require(_0xcbf6('0xb'));var squel=require(_0xcbf6('0xc'));var crypto=require('crypto');var jsforce=require(_0xcbf6('0xd'));var deskjs=require(_0xcbf6('0xe'));var toCsv=require('to-csv');var querystring=require(_0xcbf6('0xf'));var Papa=require(_0xcbf6('0x10'));var Redis=require(_0xcbf6('0x11'));var authService=require(_0xcbf6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xcbf6('0x13'));var hardwareService=require(_0xcbf6('0x14'));var logger=require('../../config/logger')(_0xcbf6('0x15'));var utils=require(_0xcbf6('0x16'));var config=require(_0xcbf6('0x17'));var licenseUtil=require(_0xcbf6('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x305747,_0x474382){_0x474382=_0x474382||0xcc;return function(_0x257ae6){if(_0x257ae6){return _0x305747[_0xcbf6('0x19')](_0x474382);}return _0x305747[_0xcbf6('0x1a')](_0x474382)[_0xcbf6('0x1b')]();};}function respondWithResult(_0x175188,_0x471d4d){_0x471d4d=_0x471d4d||0xc8;return function(_0x1afc80){if(_0x1afc80){return _0x175188[_0xcbf6('0x1a')](_0x471d4d)[_0xcbf6('0x1c')](_0x1afc80);}};}function respondWithFilteredResult(_0x540217,_0x249981){return function(_0x2272c2){if(_0x2272c2){var _0x4a7dd8=typeof _0x249981[_0xcbf6('0x1d')]===_0xcbf6('0x1e')&&typeof _0x249981[_0xcbf6('0x1f')]===_0xcbf6('0x1e');var _0x23202f=_0x2272c2[_0xcbf6('0x20')];var _0x5771de=_0x4a7dd8?0x0:_0x249981['offset'];var _0x340c82=_0x4a7dd8?_0x2272c2[_0xcbf6('0x20')]:_0x249981['offset']+_0x249981[_0xcbf6('0x1f')];var _0x382753;if(_0x340c82>=_0x23202f){_0x340c82=_0x23202f;_0x382753=0xc8;}else{_0x382753=0xce;}_0x540217[_0xcbf6('0x1a')](_0x382753);return _0x540217[_0xcbf6('0x21')](_0xcbf6('0x22'),_0x5771de+'-'+_0x340c82+'/'+_0x23202f)[_0xcbf6('0x1c')](_0x2272c2);}return null;};}function patchUpdates(_0x44753f){return function(_0x5a22ff){try{jsonpatch[_0xcbf6('0x23')](_0x5a22ff,_0x44753f,!![]);}catch(_0x2c4bce){return BPromise[_0xcbf6('0x24')](_0x2c4bce);}return _0x5a22ff[_0xcbf6('0x25')]();};}function saveUpdates(_0x4137b9,_0x154331){return function(_0x291ddb){if(_0x291ddb){return _0x291ddb['update'](_0x4137b9)['then'](function(_0x320507){return _0x320507;});}return null;};}function removeEntity(_0x1eec60,_0x4bf87b){return function(_0xd8e741){if(_0xd8e741){return _0xd8e741['destroy']()[_0xcbf6('0x26')](function(){var _0xd2df27=_0xd8e741[_0xcbf6('0x27')]({'plain':!![]});var _0x2f8b2b=_0xcbf6('0x28');return db[_0xcbf6('0x29')][_0xcbf6('0x2a')]({'where':{'type':_0x2f8b2b,'resourceId':_0xd2df27['id']}})[_0xcbf6('0x26')](function(){return _0xd8e741;});})[_0xcbf6('0x26')](function(){_0x1eec60['status'](0xcc)[_0xcbf6('0x1b')]();});}};}function handleEntityNotFound(_0x149a5e,_0x161994){return function(_0x1d1694){if(!_0x1d1694){_0x149a5e['sendStatus'](0x194);}return _0x1d1694;};}function handleError(_0x4a5558,_0x4bbcd5){_0x4bbcd5=_0x4bbcd5||0x1f4;return function(_0x5a8591){logger[_0xcbf6('0x2b')](_0x5a8591[_0xcbf6('0x2c')]);if(_0x5a8591[_0xcbf6('0x2d')]){delete _0x5a8591[_0xcbf6('0x2d')];}_0x4a5558[_0xcbf6('0x1a')](_0x4bbcd5)['send'](_0x5a8591);};}exports[_0xcbf6('0x2e')]=function(_0x1a967b,_0x29c8c8){var _0x163b83={},_0x25d549={},_0x802495={'count':0x0,'rows':[]};var _0x3711cb=_[_0xcbf6('0x2f')](db[_0xcbf6('0x30')][_0xcbf6('0x31')],function(_0x43a1e4){return{'name':_0x43a1e4[_0xcbf6('0x32')],'type':_0x43a1e4['type'][_0xcbf6('0x33')]};});_0x25d549[_0xcbf6('0x34')]=_[_0xcbf6('0x2f')](_0x3711cb,'name');_0x25d549[_0xcbf6('0x35')]=_[_0xcbf6('0x36')](_0x1a967b[_0xcbf6('0x35')]);_0x25d549[_0xcbf6('0x37')]=_[_0xcbf6('0x38')](_0x25d549['model'],_0x25d549[_0xcbf6('0x35')]);_0x163b83[_0xcbf6('0x39')]=_[_0xcbf6('0x38')](_0x25d549[_0xcbf6('0x34')],qs['fields'](_0x1a967b[_0xcbf6('0x35')][_0xcbf6('0x3a')]));_0x163b83[_0xcbf6('0x39')]=_0x163b83[_0xcbf6('0x39')][_0xcbf6('0x3b')]?_0x163b83[_0xcbf6('0x39')]:_0x25d549['model'];if(!_0x1a967b[_0xcbf6('0x35')][_0xcbf6('0x3c')]('nolimit')){_0x163b83[_0xcbf6('0x1f')]=qs[_0xcbf6('0x1f')](_0x1a967b[_0xcbf6('0x35')]['limit']);_0x163b83['offset']=qs[_0xcbf6('0x1d')](_0x1a967b[_0xcbf6('0x35')]['offset']);}_0x163b83[_0xcbf6('0x3d')]=qs[_0xcbf6('0x3e')](_0x1a967b[_0xcbf6('0x35')]['sort']);_0x163b83[_0xcbf6('0x3f')]=qs[_0xcbf6('0x37')](_[_0xcbf6('0x40')](_0x1a967b[_0xcbf6('0x35')],_0x25d549[_0xcbf6('0x37')]),_0x3711cb);if(_0x1a967b[_0xcbf6('0x35')][_0xcbf6('0x41')]){_0x163b83['where']=_[_0xcbf6('0x42')](_0x163b83[_0xcbf6('0x3f')],{'$or':_[_0xcbf6('0x2f')](_0x3711cb,function(_0x339383){if(_0x339383[_0xcbf6('0x43')]!=='VIRTUAL'){var _0x314cb4={};_0x314cb4[_0x339383[_0xcbf6('0x2d')]]={'$like':'%'+_0x1a967b[_0xcbf6('0x35')]['filter']+'%'};return _0x314cb4;}})});}_0x163b83=_[_0xcbf6('0x42')]({},_0x163b83,_0x1a967b[_0xcbf6('0x44')]);var _0x2419af={'where':_0x163b83[_0xcbf6('0x3f')]};return db['CmContactHasItem'][_0xcbf6('0x20')](_0x2419af)[_0xcbf6('0x26')](function(_0x5a787e){_0x802495[_0xcbf6('0x20')]=_0x5a787e;if(_0x1a967b[_0xcbf6('0x35')][_0xcbf6('0x45')]){_0x163b83['include']=[{'all':!![]}];}return db[_0xcbf6('0x30')][_0xcbf6('0x46')](_0x163b83);})[_0xcbf6('0x26')](function(_0x3b1710){_0x802495[_0xcbf6('0x47')]=_0x3b1710;return _0x802495;})['then'](respondWithFilteredResult(_0x29c8c8,_0x163b83))[_0xcbf6('0x48')](handleError(_0x29c8c8,null));};exports[_0xcbf6('0x49')]=function(_0x124e10,_0x5defb6){var _0x13a3fc={'raw':!![],'where':{'id':_0x124e10[_0xcbf6('0x4a')]['id']}},_0x43ff21={};_0x43ff21[_0xcbf6('0x34')]=_['keys'](db[_0xcbf6('0x30')][_0xcbf6('0x31')]);_0x43ff21[_0xcbf6('0x35')]=_[_0xcbf6('0x36')](_0x124e10[_0xcbf6('0x35')]);_0x43ff21[_0xcbf6('0x37')]=_[_0xcbf6('0x38')](_0x43ff21[_0xcbf6('0x34')],_0x43ff21[_0xcbf6('0x35')]);_0x13a3fc[_0xcbf6('0x39')]=_['intersection'](_0x43ff21[_0xcbf6('0x34')],qs[_0xcbf6('0x3a')](_0x124e10['query'][_0xcbf6('0x3a')]));_0x13a3fc[_0xcbf6('0x39')]=_0x13a3fc[_0xcbf6('0x39')][_0xcbf6('0x3b')]?_0x13a3fc[_0xcbf6('0x39')]:_0x43ff21[_0xcbf6('0x34')];if(_0x124e10[_0xcbf6('0x35')][_0xcbf6('0x45')]){_0x13a3fc[_0xcbf6('0x4b')]=[{'all':!![]}];}_0x13a3fc=_['merge']({},_0x13a3fc,_0x124e10[_0xcbf6('0x44')]);return db[_0xcbf6('0x30')][_0xcbf6('0x4c')](_0x13a3fc)[_0xcbf6('0x26')](handleEntityNotFound(_0x5defb6,null))[_0xcbf6('0x26')](respondWithResult(_0x5defb6,null))[_0xcbf6('0x48')](handleError(_0x5defb6,null));};exports[_0xcbf6('0x4d')]=function(_0x270397,_0x109df9){return db[_0xcbf6('0x30')]['create'](_0x270397['body'],{})['then'](function(_0x5aff97){var _0x178a50=_0x270397[_0xcbf6('0x4e')][_0xcbf6('0x27')]({'plain':!![]});if(!_0x178a50)throw new Error(_0xcbf6('0x4f'));if(_0x178a50[_0xcbf6('0x50')]===_0xcbf6('0x4e')){var _0x2c4757=_0x5aff97[_0xcbf6('0x27')]({'plain':!![]});var _0x365ebd=_0xcbf6('0x28');return db[_0xcbf6('0x51')]['find']({'where':{'name':_0x365ebd,'userProfileId':_0x178a50[_0xcbf6('0x52')]},'raw':!![]})['then'](function(_0x78b802){if(_0x78b802&&_0x78b802[_0xcbf6('0x53')]===0x0){return db[_0xcbf6('0x29')]['create']({'name':_0x2c4757[_0xcbf6('0x2d')],'resourceId':_0x2c4757['id'],'type':_0x78b802[_0xcbf6('0x2d')],'sectionId':_0x78b802['id']},{})['then'](function(){return _0x5aff97;});}else{return _0x5aff97;}})[_0xcbf6('0x48')](function(_0x3cafc9){logger[_0xcbf6('0x2b')](_0xcbf6('0x54'),_0x3cafc9);throw _0x3cafc9;});}return _0x5aff97;})['then'](respondWithResult(_0x109df9,0xc9))[_0xcbf6('0x48')](handleError(_0x109df9,null));};exports[_0xcbf6('0x55')]=function(_0x23768f,_0x364ff4){if(_0x23768f[_0xcbf6('0x56')]['id']){delete _0x23768f[_0xcbf6('0x56')]['id'];}return db[_0xcbf6('0x30')][_0xcbf6('0x4c')]({'where':{'id':_0x23768f[_0xcbf6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x364ff4,null))[_0xcbf6('0x26')](saveUpdates(_0x23768f[_0xcbf6('0x56')],null))[_0xcbf6('0x26')](respondWithResult(_0x364ff4,null))['catch'](handleError(_0x364ff4,null));};exports[_0xcbf6('0x2a')]=function(_0x9f71ab,_0x37945f){return db[_0xcbf6('0x30')]['find']({'where':{'id':_0x9f71ab[_0xcbf6('0x4a')]['id']}})['then'](handleEntityNotFound(_0x37945f,null))['then'](removeEntity(_0x37945f,null))[_0xcbf6('0x48')](handleError(_0x37945f,null));};
\ No newline at end of file
+var _0x3a57=['name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','query','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','filters','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','then','destroy','get','CmContactHasItems','stack'];(function(_0x57cfd4,_0x30823a){var _0xef983=function(_0x54ea2a){while(--_0x54ea2a){_0x57cfd4['push'](_0x57cfd4['shift']());}};_0xef983(++_0x30823a);}(_0x3a57,0x127));var _0x73a5=function(_0x5737df,_0x49e164){_0x5737df=_0x5737df-0x0;var _0x2456c6=_0x3a57[_0x5737df];return _0x2456c6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x73a5('0x0'));var zipdir=require(_0x73a5('0x1'));var jsonpatch=require(_0x73a5('0x2'));var rp=require(_0x73a5('0x3'));var moment=require(_0x73a5('0x4'));var BPromise=require(_0x73a5('0x5'));var Mustache=require(_0x73a5('0x6'));var util=require(_0x73a5('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x73a5('0x8'));var ejs=require(_0x73a5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x73a5('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x73a5('0xb'));var toCsv=require(_0x73a5('0x8'));var querystring=require('querystring');var Papa=require(_0x73a5('0xc'));var Redis=require('ioredis');var authService=require(_0x73a5('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x73a5('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x73a5('0xf'))(_0x73a5('0x10'));var utils=require(_0x73a5('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x73a5('0x12'));var db=require(_0x73a5('0x13'))['db'];function respondWithStatusCode(_0x53a363,_0x243285){_0x243285=_0x243285||0xcc;return function(_0x4d232d){if(_0x4d232d){return _0x53a363['sendStatus'](_0x243285);}return _0x53a363[_0x73a5('0x14')](_0x243285)[_0x73a5('0x15')]();};}function respondWithResult(_0x44e2f4,_0x39549a){_0x39549a=_0x39549a||0xc8;return function(_0x3b529d){if(_0x3b529d){return _0x44e2f4[_0x73a5('0x14')](_0x39549a)[_0x73a5('0x16')](_0x3b529d);}};}function respondWithFilteredResult(_0x220e55,_0x5bbc0e){return function(_0x5468bf){if(_0x5468bf){var _0x5a7986=typeof _0x5bbc0e['offset']===_0x73a5('0x17')&&typeof _0x5bbc0e['limit']==='undefined';var _0x2574cc=_0x5468bf[_0x73a5('0x18')];var _0x54b772=_0x5a7986?0x0:_0x5bbc0e[_0x73a5('0x19')];var _0x36bd17=_0x5a7986?_0x5468bf[_0x73a5('0x18')]:_0x5bbc0e[_0x73a5('0x19')]+_0x5bbc0e[_0x73a5('0x1a')];var _0x370b0b;if(_0x36bd17>=_0x2574cc){_0x36bd17=_0x2574cc;_0x370b0b=0xc8;}else{_0x370b0b=0xce;}_0x220e55['status'](_0x370b0b);return _0x220e55[_0x73a5('0x1b')](_0x73a5('0x1c'),_0x54b772+'-'+_0x36bd17+'/'+_0x2574cc)[_0x73a5('0x16')](_0x5468bf);}return null;};}function patchUpdates(_0x268a0b){return function(_0x16b42b){try{jsonpatch[_0x73a5('0x1d')](_0x16b42b,_0x268a0b,!![]);}catch(_0x11ebc7){return BPromise[_0x73a5('0x1e')](_0x11ebc7);}return _0x16b42b[_0x73a5('0x1f')]();};}function saveUpdates(_0x4b0374,_0x47f3e0){return function(_0xe3a88e){if(_0xe3a88e){return _0xe3a88e['update'](_0x4b0374)[_0x73a5('0x20')](function(_0xed43eb){return _0xed43eb;});}return null;};}function removeEntity(_0x4799f2,_0x46b362){return function(_0x42b8cc){if(_0x42b8cc){return _0x42b8cc[_0x73a5('0x21')]()[_0x73a5('0x20')](function(){var _0x326db3=_0x42b8cc[_0x73a5('0x22')]({'plain':!![]});var _0x672511=_0x73a5('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x672511,'resourceId':_0x326db3['id']}})[_0x73a5('0x20')](function(){return _0x42b8cc;});})[_0x73a5('0x20')](function(){_0x4799f2[_0x73a5('0x14')](0xcc)[_0x73a5('0x15')]();});}};}function handleEntityNotFound(_0x562419,_0xe1406e){return function(_0x5ad9ec){if(!_0x5ad9ec){_0x562419['sendStatus'](0x194);}return _0x5ad9ec;};}function handleError(_0x2831d7,_0x244656){_0x244656=_0x244656||0x1f4;return function(_0xb9869c){logger['error'](_0xb9869c[_0x73a5('0x24')]);if(_0xb9869c[_0x73a5('0x25')]){delete _0xb9869c[_0x73a5('0x25')];}_0x2831d7['status'](_0x244656)[_0x73a5('0x26')](_0xb9869c);};}exports[_0x73a5('0x27')]=function(_0x30a9fe,_0x2b1d57){var _0x14b67b={},_0x4e3f10={},_0x384ad5={'count':0x0,'rows':[]};var _0x183032=_[_0x73a5('0x28')](db[_0x73a5('0x29')][_0x73a5('0x2a')],function(_0x27d24c){return{'name':_0x27d24c[_0x73a5('0x2b')],'type':_0x27d24c[_0x73a5('0x2c')][_0x73a5('0x2d')]};});_0x4e3f10['model']=_[_0x73a5('0x28')](_0x183032,_0x73a5('0x25'));_0x4e3f10[_0x73a5('0x2e')]=_['keys'](_0x30a9fe['query']);_0x4e3f10['filters']=_['intersection'](_0x4e3f10[_0x73a5('0x2f')],_0x4e3f10[_0x73a5('0x2e')]);_0x14b67b['attributes']=_[_0x73a5('0x30')](_0x4e3f10[_0x73a5('0x2f')],qs[_0x73a5('0x31')](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x31')]));_0x14b67b[_0x73a5('0x32')]=_0x14b67b[_0x73a5('0x32')][_0x73a5('0x33')]?_0x14b67b[_0x73a5('0x32')]:_0x4e3f10[_0x73a5('0x2f')];if(!_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x34')](_0x73a5('0x35'))){_0x14b67b[_0x73a5('0x1a')]=qs[_0x73a5('0x1a')](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x1a')]);_0x14b67b[_0x73a5('0x19')]=qs[_0x73a5('0x19')](_0x30a9fe[_0x73a5('0x2e')]['offset']);}_0x14b67b[_0x73a5('0x36')]=qs['sort'](_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x37')]);_0x14b67b[_0x73a5('0x38')]=qs['filters'](_[_0x73a5('0x39')](_0x30a9fe[_0x73a5('0x2e')],_0x4e3f10['filters']),_0x183032);if(_0x30a9fe['query'][_0x73a5('0x3a')]){_0x14b67b[_0x73a5('0x38')]=_['merge'](_0x14b67b['where'],{'$or':_['map'](_0x183032,function(_0x39df91){if(_0x39df91[_0x73a5('0x2c')]!==_0x73a5('0x3b')){var _0x133bd1={};_0x133bd1[_0x39df91[_0x73a5('0x25')]]={'$like':'%'+_0x30a9fe[_0x73a5('0x2e')][_0x73a5('0x3a')]+'%'};return _0x133bd1;}})});}_0x14b67b=_['merge']({},_0x14b67b,_0x30a9fe[_0x73a5('0x3c')]);var _0x496490={'where':_0x14b67b[_0x73a5('0x38')]};return db['CmContactHasItem']['count'](_0x496490)[_0x73a5('0x20')](function(_0x1d492f){_0x384ad5[_0x73a5('0x18')]=_0x1d492f;if(_0x30a9fe['query'][_0x73a5('0x3d')]){_0x14b67b[_0x73a5('0x3e')]=[{'all':!![]}];}return db[_0x73a5('0x29')][_0x73a5('0x3f')](_0x14b67b);})['then'](function(_0x17aedb){_0x384ad5[_0x73a5('0x40')]=_0x17aedb;return _0x384ad5;})[_0x73a5('0x20')](respondWithFilteredResult(_0x2b1d57,_0x14b67b))['catch'](handleError(_0x2b1d57,null));};exports[_0x73a5('0x41')]=function(_0x1de4b8,_0x29fb2a){var _0x1a46f8={'raw':!![],'where':{'id':_0x1de4b8[_0x73a5('0x42')]['id']}},_0x4fa470={};_0x4fa470[_0x73a5('0x2f')]=_[_0x73a5('0x43')](db['CmContactHasItem']['rawAttributes']);_0x4fa470['query']=_[_0x73a5('0x43')](_0x1de4b8[_0x73a5('0x2e')]);_0x4fa470[_0x73a5('0x44')]=_[_0x73a5('0x30')](_0x4fa470['model'],_0x4fa470[_0x73a5('0x2e')]);_0x1a46f8['attributes']=_[_0x73a5('0x30')](_0x4fa470[_0x73a5('0x2f')],qs[_0x73a5('0x31')](_0x1de4b8[_0x73a5('0x2e')][_0x73a5('0x31')]));_0x1a46f8[_0x73a5('0x32')]=_0x1a46f8[_0x73a5('0x32')][_0x73a5('0x33')]?_0x1a46f8[_0x73a5('0x32')]:_0x4fa470[_0x73a5('0x2f')];if(_0x1de4b8[_0x73a5('0x2e')][_0x73a5('0x3d')]){_0x1a46f8[_0x73a5('0x3e')]=[{'all':!![]}];}_0x1a46f8=_[_0x73a5('0x45')]({},_0x1a46f8,_0x1de4b8['options']);return db['CmContactHasItem'][_0x73a5('0x46')](_0x1a46f8)['then'](handleEntityNotFound(_0x29fb2a,null))[_0x73a5('0x20')](respondWithResult(_0x29fb2a,null))[_0x73a5('0x47')](handleError(_0x29fb2a,null));};exports[_0x73a5('0x48')]=function(_0x5ed6a6,_0x4605e1){return db[_0x73a5('0x29')][_0x73a5('0x48')](_0x5ed6a6[_0x73a5('0x49')],{})['then'](function(_0x26c8c3){var _0x2d9a1d=_0x5ed6a6[_0x73a5('0x4a')][_0x73a5('0x22')]({'plain':!![]});if(!_0x2d9a1d)throw new Error(_0x73a5('0x4b'));if(_0x2d9a1d[_0x73a5('0x4c')]===_0x73a5('0x4a')){var _0x3da4b7=_0x26c8c3[_0x73a5('0x22')]({'plain':!![]});var _0x31dfa3=_0x73a5('0x23');return db['UserProfileSection'][_0x73a5('0x46')]({'where':{'name':_0x31dfa3,'userProfileId':_0x2d9a1d[_0x73a5('0x4d')]},'raw':!![]})['then'](function(_0x2d81a0){if(_0x2d81a0&&_0x2d81a0[_0x73a5('0x4e')]===0x0){return db[_0x73a5('0x4f')][_0x73a5('0x48')]({'name':_0x3da4b7['name'],'resourceId':_0x3da4b7['id'],'type':_0x2d81a0[_0x73a5('0x25')],'sectionId':_0x2d81a0['id']},{})[_0x73a5('0x20')](function(){return _0x26c8c3;});}else{return _0x26c8c3;}})['catch'](function(_0x344c4e){logger[_0x73a5('0x50')](_0x73a5('0x51'),_0x344c4e);throw _0x344c4e;});}return _0x26c8c3;})[_0x73a5('0x20')](respondWithResult(_0x4605e1,0xc9))[_0x73a5('0x47')](handleError(_0x4605e1,null));};exports[_0x73a5('0x52')]=function(_0x209c9e,_0x21a5de){if(_0x209c9e[_0x73a5('0x49')]['id']){delete _0x209c9e[_0x73a5('0x49')]['id'];}return db[_0x73a5('0x29')][_0x73a5('0x46')]({'where':{'id':_0x209c9e[_0x73a5('0x42')]['id']}})['then'](handleEntityNotFound(_0x21a5de,null))['then'](saveUpdates(_0x209c9e['body'],null))['then'](respondWithResult(_0x21a5de,null))['catch'](handleError(_0x21a5de,null));};exports['destroy']=function(_0x5440b3,_0x2752b0){return db[_0x73a5('0x29')][_0x73a5('0x46')]({'where':{'id':_0x5440b3[_0x73a5('0x42')]['id']}})[_0x73a5('0x20')](handleEntityNotFound(_0x2752b0,null))[_0x73a5('0x20')](removeEntity(_0x2752b0,null))[_0x73a5('0x47')](handleError(_0x2752b0,null));};
\ No newline at end of file
index bc7c677..3abb361 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0301=['exports','define','CmContactHasItem','util','../../config/logger','api','request-promise','rimraf','../../config/environment','./cmContactHasItem.attributes'];(function(_0x30838a,_0x448fe3){var _0x4b3cc3=function(_0x53eff4){while(--_0x53eff4){_0x30838a['push'](_0x30838a['shift']());}};_0x4b3cc3(++_0x448fe3);}(_0x0301,0x157));var _0x1030=function(_0x348db0,_0x103906){_0x348db0=_0x348db0-0x0;var _0x405e55=_0x0301[_0x348db0];return _0x405e55;};'use strict';var _=require('lodash');var util=require(_0x1030('0x0'));var logger=require(_0x1030('0x1'))(_0x1030('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1030('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1030('0x4'));var config=require(_0x1030('0x5'));var attributes=require(_0x1030('0x6'));module[_0x1030('0x7')]=function(_0x5baf4c,_0x5dbad5){return _0x5baf4c[_0x1030('0x8')](_0x1030('0x9'),attributes,{'tableName':'cm_contact_has_items','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x219c=['path','../../config/environment','./cmContactHasItem.attributes','exports','define','CmContactHasItem','cm_contact_has_items','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x4fd80a,_0x1d71d5){var _0x433edd=function(_0x582752){while(--_0x582752){_0x4fd80a['push'](_0x4fd80a['shift']());}};_0x433edd(++_0x1d71d5);}(_0x219c,0x163));var _0xc219=function(_0x1b7cba,_0x526c43){_0x1b7cba=_0x1b7cba-0x0;var _0x59ac7d=_0x219c[_0x1b7cba];return _0x59ac7d;};'use strict';var _=require(_0xc219('0x0'));var util=require(_0xc219('0x1'));var logger=require(_0xc219('0x2'))('api');var moment=require('moment');var BPromise=require(_0xc219('0x3'));var rp=require(_0xc219('0x4'));var fs=require('fs');var path=require(_0xc219('0x5'));var rimraf=require('rimraf');var config=require(_0xc219('0x6'));var attributes=require(_0xc219('0x7'));module[_0xc219('0x8')]=function(_0x3f90a0,_0xf6834){return _0x3f90a0[_0xc219('0x9')](_0xc219('0xa'),attributes,{'tableName':_0xc219('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dec0095..8083736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa187=['http','request','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x55be62,_0x1c4d2a){var _0x2a0f80=function(_0x4c9733){while(--_0x4c9733){_0x55be62['push'](_0x55be62['shift']());}};_0x2a0f80(++_0x1c4d2a);}(_0xa187,0x14d));var _0x7a18=function(_0x3ddf16,_0x76f985){_0x3ddf16=_0x3ddf16-0x0;var _0x353de4=_0xa187[_0x3ddf16];return _0x353de4;};'use strict';var _=require(_0x7a18('0x0'));var util=require(_0x7a18('0x1'));var moment=require(_0x7a18('0x2'));var BPromise=require(_0x7a18('0x3'));var rs=require(_0x7a18('0x4'));var fs=require('fs');var Redis=require(_0x7a18('0x5'));var db=require(_0x7a18('0x6'))['db'];var utils=require(_0x7a18('0x7'));var logger=require(_0x7a18('0x8'))(_0x7a18('0x9'));var config=require(_0x7a18('0xa'));var jayson=require(_0x7a18('0xb'));var client=jayson['client'][_0x7a18('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x46b522,_0x32371b,_0x579a01){return new BPromise(function(_0x15d1e3,_0x572795){return client[_0x7a18('0xd')](_0x46b522,_0x579a01)['then'](function(_0x6be056){logger[_0x7a18('0xe')](_0x7a18('0xf'),_0x32371b,_0x7a18('0x10'));logger[_0x7a18('0x11')]('CmContactHasItem,\x20%s,\x20%s,\x20%s',_0x32371b,_0x7a18('0x10'),JSON[_0x7a18('0x12')](_0x6be056));if(_0x6be056[_0x7a18('0x13')]){if(_0x6be056[_0x7a18('0x13')][_0x7a18('0x14')]===0x1f4){logger['error']('CmContactHasItem,\x20%s,\x20%s',_0x32371b,_0x6be056[_0x7a18('0x13')][_0x7a18('0x15')]);return _0x572795(_0x6be056[_0x7a18('0x13')][_0x7a18('0x15')]);}logger['error'](_0x7a18('0xf'),_0x32371b,_0x6be056[_0x7a18('0x13')][_0x7a18('0x15')]);return _0x15d1e3(_0x6be056['error']['message']);}else{logger[_0x7a18('0xe')](_0x7a18('0xf'),_0x32371b,_0x7a18('0x10'));_0x15d1e3(_0x6be056[_0x7a18('0x16')][_0x7a18('0x15')]);}})['catch'](function(_0x497d76){logger[_0x7a18('0x13')](_0x7a18('0xf'),_0x32371b,_0x497d76);_0x572795(_0x497d76);});});}
\ No newline at end of file
+var _0x80a1=['client','request','then','CmContactHasItem,\x20%s,\x20%s','request\x20sent','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise'];(function(_0x2c03ae,_0x9ef2a6){var _0x2f4ec3=function(_0x442849){while(--_0x442849){_0x2c03ae['push'](_0x2c03ae['shift']());}};_0x2f4ec3(++_0x9ef2a6);}(_0x80a1,0x8b));var _0x180a=function(_0x4783dd,_0x4a0018){_0x4783dd=_0x4783dd-0x0;var _0xaeff9=_0x80a1[_0x4783dd];return _0xaeff9;};'use strict';var _=require(_0x180a('0x0'));var util=require(_0x180a('0x1'));var moment=require(_0x180a('0x2'));var BPromise=require(_0x180a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x180a('0x4'));var db=require(_0x180a('0x5'))['db'];var utils=require(_0x180a('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x180a('0x7'));var client=jayson[_0x180a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d9874,_0x598000,_0x3e6475){return new BPromise(function(_0x1dfdd1,_0x5a2e73){return client[_0x180a('0x9')](_0x2d9874,_0x3e6475)[_0x180a('0xa')](function(_0xcc018){logger['info'](_0x180a('0xb'),_0x598000,_0x180a('0xc'));logger['debug'](_0x180a('0xd'),_0x598000,_0x180a('0xc'),JSON[_0x180a('0xe')](_0xcc018));if(_0xcc018['error']){if(_0xcc018['error'][_0x180a('0xf')]===0x1f4){logger[_0x180a('0x10')](_0x180a('0xb'),_0x598000,_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);return _0x5a2e73(_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);}logger[_0x180a('0x10')](_0x180a('0xb'),_0x598000,_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);return _0x1dfdd1(_0xcc018[_0x180a('0x10')][_0x180a('0x11')]);}else{logger[_0x180a('0x12')](_0x180a('0xb'),_0x598000,_0x180a('0xc'));_0x1dfdd1(_0xcc018[_0x180a('0x13')][_0x180a('0x11')]);}})[_0x180a('0x14')](function(_0x5dcc3e){logger['error']('CmContactHasItem,\x20%s,\x20%s',_0x598000,_0x5dcc3e);_0x5a2e73(_0x5dcc3e);});});}
\ No newline at end of file
index b50c430..88a86c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7b=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy'];(function(_0x1abb09,_0x18ee91){var _0xea1c07=function(_0x38f42c){while(--_0x38f42c){_0x1abb09['push'](_0x1abb09['shift']());}};_0xea1c07(++_0x18ee91);}(_0x1e7b,0x12d));var _0xb1e7=function(_0x5562fe,_0x4e809c){_0x5562fe=_0x5562fe-0x0;var _0x1829c7=_0x1e7b[_0x5562fe];return _0x1829c7;};'use strict';var multer=require(_0xb1e7('0x0'));var util=require(_0xb1e7('0x1'));var path=require('path');var timeout=require(_0xb1e7('0x2'));var express=require(_0xb1e7('0x3'));var router=express['Router']();var fs_extra=require(_0xb1e7('0x4'));var auth=require(_0xb1e7('0x5'));var interaction=require(_0xb1e7('0x6'));var config=require(_0xb1e7('0x7'));var controller=require('./cmContactHasItem.controller');router[_0xb1e7('0x8')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xa')]);router[_0xb1e7('0x8')](_0xb1e7('0xb'),auth['isAuthenticated'](),controller[_0xb1e7('0xc')]);router[_0xb1e7('0xd')]('/',auth[_0xb1e7('0x9')](),controller[_0xb1e7('0xe')]);router[_0xb1e7('0xf')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x10')]);router[_0xb1e7('0x11')](_0xb1e7('0xb'),auth[_0xb1e7('0x9')](),controller[_0xb1e7('0x12')]);module[_0xb1e7('0x13')]=router;
\ No newline at end of file
+var _0xacdd=['path','Router','../../components/auth/service','./cmContactHasItem.controller','get','isAuthenticated','index','/:id','show','create','put','update','delete','destroy','exports','util'];(function(_0x2b0a86,_0x2ecebd){var _0x955940=function(_0x1988f8){while(--_0x1988f8){_0x2b0a86['push'](_0x2b0a86['shift']());}};_0x955940(++_0x2ecebd);}(_0xacdd,0x16f));var _0xdacd=function(_0x12d79d,_0x3c4f12){_0x12d79d=_0x12d79d-0x0;var _0x5cbe01=_0xacdd[_0x12d79d];return _0x5cbe01;};'use strict';var multer=require('multer');var util=require(_0xdacd('0x0'));var path=require(_0xdacd('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xdacd('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xdacd('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdacd('0x4'));router[_0xdacd('0x5')]('/',auth[_0xdacd('0x6')](),controller[_0xdacd('0x7')]);router['get'](_0xdacd('0x8'),auth['isAuthenticated'](),controller[_0xdacd('0x9')]);router['post']('/',auth[_0xdacd('0x6')](),controller[_0xdacd('0xa')]);router[_0xdacd('0xb')](_0xdacd('0x8'),auth[_0xdacd('0x6')](),controller[_0xdacd('0xc')]);router[_0xdacd('0xd')](_0xdacd('0x8'),auth[_0xdacd('0x6')](),controller[_0xdacd('0xe')]);module[_0xdacd('0xf')]=router;
\ No newline at end of file
index 6997bfb..6966489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3bec=['STRING','setDataValue','name','TEXT','long','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','exports','getDataValue','alias'];(function(_0x1624f1,_0x27651f){var _0x2a78d8=function(_0x6e6f9f){while(--_0x6e6f9f){_0x1624f1['push'](_0x1624f1['shift']());}};_0x2a78d8(++_0x27651f);}(_0x3bec,0x19c));var _0xc3be=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x3bec[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xc3be('0x0'));var _=require('lodash');module[_0xc3be('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0xee795e){return this[_0xc3be('0x2')](_0xc3be('0x3'));}},'alias':{'type':Sequelize[_0xc3be('0x4')],'allowNull':![],'set':function(_0x5da9e3){this[_0xc3be('0x5')](_0xc3be('0x3'),_0x5da9e3?_0x5da9e3:this[_0xc3be('0x2')](_0xc3be('0x6')));}},'type':{'type':Sequelize[_0xc3be('0x4')],'allowNull':![]},'values':{'type':Sequelize[_0xc3be('0x7')](_0xc3be('0x8')),'get':function(){if(this[_0xc3be('0x2')]('type')==='select'){return JSON[_0xc3be('0x9')](this[_0xc3be('0x2')](_0xc3be('0xa')));}else{return this[_0xc3be('0x2')](_0xc3be('0xa'));}},'set':function(_0x2e1238){if(Array[_0xc3be('0xb')](_0x2e1238)){this[_0xc3be('0x5')](_0xc3be('0xa'),JSON[_0xc3be('0xc')](_0x2e1238));}else{this['setDataValue'](_0xc3be('0xa'),_0x2e1238);}}},'required':{'type':Sequelize[_0xc3be('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xc3be('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xc3be('0xe')](_0xc3be('0xf'))}};
\ No newline at end of file
+var _0xe40b=['long','select','parse','values','isArray','stringify','BOOLEAN','ENUM','voice','sequelize','exports','STRING','setDataValue','alias','getDataValue','name','TEXT'];(function(_0x48ae62,_0x3cfce7){var _0x2634a6=function(_0x17b9c7){while(--_0x17b9c7){_0x48ae62['push'](_0x48ae62['shift']());}};_0x2634a6(++_0x3cfce7);}(_0xe40b,0x108));var _0xbe40=function(_0x188826,_0x3abf8b){_0x188826=_0x188826-0x0;var _0x5ee0c2=_0xe40b[_0x188826];return _0x5ee0c2;};'use strict';var Sequelize=require(_0xbe40('0x0'));var _=require('lodash');module[_0xbe40('0x1')]={'name':{'type':Sequelize['VIRTUAL'],'get':function(_0x441d69){return this['getDataValue']('alias');}},'alias':{'type':Sequelize[_0xbe40('0x2')],'allowNull':![],'set':function(_0x4f5438){this[_0xbe40('0x3')](_0xbe40('0x4'),_0x4f5438?_0x4f5438:this[_0xbe40('0x5')](_0xbe40('0x6')));}},'type':{'type':Sequelize[_0xbe40('0x2')],'allowNull':![]},'values':{'type':Sequelize[_0xbe40('0x7')](_0xbe40('0x8')),'get':function(){if(this[_0xbe40('0x5')]('type')===_0xbe40('0x9')){return JSON[_0xbe40('0xa')](this[_0xbe40('0x5')](_0xbe40('0xb')));}else{return this[_0xbe40('0x5')](_0xbe40('0xb'));}},'set':function(_0x10fe04){if(Array[_0xbe40('0xc')](_0x10fe04)){this[_0xbe40('0x3')]('values',JSON[_0xbe40('0xd')](_0x10fe04));}else{this[_0xbe40('0x3')](_0xbe40('0xb'),_0x10fe04);}}},'required':{'type':Sequelize[_0xbe40('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xbe40('0xe')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xbe40('0xf')](_0xbe40('0x10'))}};
\ No newline at end of file
index 02b1c97..c7a2748 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb331=['name','send','map','rawAttributes','fieldName','key','model','differenceBy','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','CmCustomField','includeAll','include','rows','catch','show','options','find','body','params','create','sequelize','transaction','TEXT','number','Sequelize','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','destroy','then','error','stack'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xb331,0x87));var _0x1b33=function(_0x4d14a0,_0x47627d){_0x4d14a0=_0x4d14a0-0x0;var _0x12e3c7=_0xb331[_0x4d14a0];return _0x12e3c7;};'use strict';var emlformat=require(_0x1b33('0x0'));var rimraf=require(_0x1b33('0x1'));var zipdir=require(_0x1b33('0x2'));var jsonpatch=require(_0x1b33('0x3'));var rp=require(_0x1b33('0x4'));var moment=require(_0x1b33('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x1b33('0x6'));var util=require(_0x1b33('0x7'));var path=require('path');var sox=require(_0x1b33('0x8'));var csv=require(_0x1b33('0x9'));var ejs=require(_0x1b33('0xa'));var fs=require('fs');var fs_extra=require(_0x1b33('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x1b33('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1b33('0xd'));var toCsv=require(_0x1b33('0x9'));var querystring=require(_0x1b33('0xe'));var Papa=require('papaparse');var Redis=require(_0x1b33('0xf'));var authService=require(_0x1b33('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x1b33('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1b33('0x12'))(_0x1b33('0x13'));var utils=require(_0x1b33('0x14'));var config=require(_0x1b33('0x15'));var licenseUtil=require(_0x1b33('0x16'));var db=require(_0x1b33('0x17'))['db'];function respondWithStatusCode(_0x2552e5,_0x4c0e23){_0x4c0e23=_0x4c0e23||0xcc;return function(_0x2f0182){if(_0x2f0182){return _0x2552e5[_0x1b33('0x18')](_0x4c0e23);}return _0x2552e5[_0x1b33('0x19')](_0x4c0e23)[_0x1b33('0x1a')]();};}function respondWithResult(_0x423f4d,_0x3b09af){_0x3b09af=_0x3b09af||0xc8;return function(_0x29c902){if(_0x29c902){return _0x423f4d[_0x1b33('0x19')](_0x3b09af)['json'](_0x29c902);}};}function respondWithFilteredResult(_0x36ead6,_0x578e45){return function(_0x4efd8c){if(_0x4efd8c){var _0x2dbbfc=typeof _0x578e45[_0x1b33('0x1b')]===_0x1b33('0x1c')&&typeof _0x578e45[_0x1b33('0x1d')]===_0x1b33('0x1c');var _0xc851cf=_0x4efd8c['count'];var _0x10de0e=_0x2dbbfc?0x0:_0x578e45[_0x1b33('0x1b')];var _0x145f33=_0x2dbbfc?_0x4efd8c[_0x1b33('0x1e')]:_0x578e45['offset']+_0x578e45[_0x1b33('0x1d')];var _0x5c8fd8;if(_0x145f33>=_0xc851cf){_0x145f33=_0xc851cf;_0x5c8fd8=0xc8;}else{_0x5c8fd8=0xce;}_0x36ead6[_0x1b33('0x19')](_0x5c8fd8);return _0x36ead6['set'](_0x1b33('0x1f'),_0x10de0e+'-'+_0x145f33+'/'+_0xc851cf)[_0x1b33('0x20')](_0x4efd8c);}return null;};}function patchUpdates(_0x5a170b){return function(_0x1d3563){try{jsonpatch[_0x1b33('0x21')](_0x1d3563,_0x5a170b,!![]);}catch(_0x37ee75){return BPromise[_0x1b33('0x22')](_0x37ee75);}return _0x1d3563[_0x1b33('0x23')]();};}function saveUpdates(_0x260e7e,_0x5a5c32){return function(_0x66a322){if(_0x66a322){return _0x66a322[_0x1b33('0x24')](_0x260e7e)['then'](function(_0x4f918f){return _0x4f918f;});}return null;};}function removeEntity(_0x158747,_0x4d6b17){return function(_0x2417d){if(_0x2417d){return _0x2417d[_0x1b33('0x25')]()[_0x1b33('0x26')](function(){_0x158747[_0x1b33('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f64b1,_0x204733){return function(_0xa3c033){if(!_0xa3c033){_0x4f64b1[_0x1b33('0x18')](0x194);}return _0xa3c033;};}function handleError(_0x2a71bb,_0x442f38){_0x442f38=_0x442f38||0x1f4;return function(_0x5d639e){logger[_0x1b33('0x27')](_0x5d639e[_0x1b33('0x28')]);if(_0x5d639e[_0x1b33('0x29')]){delete _0x5d639e[_0x1b33('0x29')];}_0x2a71bb[_0x1b33('0x19')](_0x442f38)[_0x1b33('0x2a')](_0x5d639e);};}exports['index']=function(_0x3db493,_0x5a6c66){var _0x15b291={},_0x45f5eb={},_0x4e1f4b={'count':0x0,'rows':[]};var _0xeb2107=_[_0x1b33('0x2b')](db['CmCustomField'][_0x1b33('0x2c')],function(_0x5de9e7){return{'name':_0x5de9e7[_0x1b33('0x2d')],'type':_0x5de9e7['type'][_0x1b33('0x2e')]};});_0x45f5eb[_0x1b33('0x2f')]=_[_0x1b33('0x30')](_['map'](_0xeb2107,'name'),['name']);_0x45f5eb[_0x1b33('0x31')]=_[_0x1b33('0x32')](_0x3db493[_0x1b33('0x31')]);_0x45f5eb[_0x1b33('0x33')]=_[_0x1b33('0x34')](_0x45f5eb[_0x1b33('0x2f')],_0x45f5eb[_0x1b33('0x31')]);_0x15b291['attributes']=_[_0x1b33('0x34')](_0x45f5eb[_0x1b33('0x2f')],qs[_0x1b33('0x35')](_0x3db493['query'][_0x1b33('0x35')]));_0x15b291[_0x1b33('0x36')]=_0x15b291[_0x1b33('0x36')][_0x1b33('0x37')]?_0x15b291[_0x1b33('0x36')]:_0x45f5eb[_0x1b33('0x2f')];if(!_0x3db493['query'][_0x1b33('0x38')](_0x1b33('0x39'))){_0x15b291[_0x1b33('0x1d')]=qs[_0x1b33('0x1d')](_0x3db493[_0x1b33('0x31')][_0x1b33('0x1d')]);_0x15b291[_0x1b33('0x1b')]=qs[_0x1b33('0x1b')](_0x3db493['query'][_0x1b33('0x1b')]);}_0x15b291['order']=qs[_0x1b33('0x3a')](_0x3db493['query'][_0x1b33('0x3a')]);_0x15b291[_0x1b33('0x3b')]=qs[_0x1b33('0x33')](_[_0x1b33('0x3c')](_0x3db493[_0x1b33('0x31')],_0x45f5eb[_0x1b33('0x33')]),_0xeb2107);if(_0x3db493[_0x1b33('0x31')][_0x1b33('0x3d')]){_0x15b291['where']=_[_0x1b33('0x3e')](_0x15b291[_0x1b33('0x3b')],{'$or':_['map'](_0xeb2107,function(_0x36d623){if(_0x36d623[_0x1b33('0x3f')]!=='VIRTUAL'){var _0x3b5dca={};_0x3b5dca[_0x36d623[_0x1b33('0x29')]]={'$like':'%'+_0x3db493[_0x1b33('0x31')][_0x1b33('0x3d')]+'%'};return _0x3b5dca;}})});}_0x15b291=_[_0x1b33('0x3e')]({},_0x15b291,_0x3db493['options']);var _0x7ba47a={'where':_0x15b291['where']};return db[_0x1b33('0x40')][_0x1b33('0x1e')](_0x7ba47a)[_0x1b33('0x26')](function(_0x2faede){_0x4e1f4b['count']=_0x2faede;if(_0x3db493[_0x1b33('0x31')][_0x1b33('0x41')]){_0x15b291[_0x1b33('0x42')]=[{'all':!![]}];}return db[_0x1b33('0x40')]['findAll'](_0x15b291);})[_0x1b33('0x26')](function(_0x23bccd){_0x4e1f4b[_0x1b33('0x43')]=_0x23bccd;return _0x4e1f4b;})[_0x1b33('0x26')](respondWithFilteredResult(_0x5a6c66,_0x15b291))[_0x1b33('0x44')](handleError(_0x5a6c66,null));};exports[_0x1b33('0x45')]=function(_0x2d0fa1,_0x23145d){var _0x6571d={'raw':!![],'where':{'id':_0x2d0fa1['params']['id']}},_0x2ce365={};_0x2ce365[_0x1b33('0x2f')]=_['keys'](db[_0x1b33('0x40')]['rawAttributes']);_0x2ce365[_0x1b33('0x31')]=_['keys'](_0x2d0fa1[_0x1b33('0x31')]);_0x2ce365[_0x1b33('0x33')]=_[_0x1b33('0x34')](_0x2ce365[_0x1b33('0x2f')],_0x2ce365[_0x1b33('0x31')]);_0x6571d['attributes']=_[_0x1b33('0x34')](_0x2ce365[_0x1b33('0x2f')],qs['fields'](_0x2d0fa1['query'][_0x1b33('0x35')]));_0x6571d[_0x1b33('0x36')]=_0x6571d[_0x1b33('0x36')]['length']?_0x6571d[_0x1b33('0x36')]:_0x2ce365['model'];if(_0x2d0fa1[_0x1b33('0x31')][_0x1b33('0x41')]){_0x6571d[_0x1b33('0x42')]=[{'all':!![]}];}_0x6571d=_[_0x1b33('0x3e')]({},_0x6571d,_0x2d0fa1[_0x1b33('0x46')]);return db[_0x1b33('0x40')][_0x1b33('0x47')](_0x6571d)[_0x1b33('0x26')](handleEntityNotFound(_0x23145d,null))[_0x1b33('0x26')](respondWithResult(_0x23145d,null))[_0x1b33('0x44')](handleError(_0x23145d,null));};exports['update']=function(_0x46ce4f,_0x3782f2){if(_0x46ce4f[_0x1b33('0x48')]['id']){delete _0x46ce4f['body']['id'];}return db[_0x1b33('0x40')][_0x1b33('0x47')]({'where':{'id':_0x46ce4f[_0x1b33('0x49')]['id']}})[_0x1b33('0x26')](handleEntityNotFound(_0x3782f2,null))[_0x1b33('0x26')](saveUpdates(_0x46ce4f[_0x1b33('0x48')],null))[_0x1b33('0x26')](respondWithResult(_0x3782f2,null))[_0x1b33('0x44')](handleError(_0x3782f2,null));};exports[_0x1b33('0x25')]=function(_0x31c54a,_0x6c4086){return db[_0x1b33('0x40')]['find']({'where':{'id':_0x31c54a[_0x1b33('0x49')]['id']}})[_0x1b33('0x26')](handleEntityNotFound(_0x6c4086,null))[_0x1b33('0x26')](removeEntity(_0x6c4086,null))['catch'](handleError(_0x6c4086,null));};exports[_0x1b33('0x4a')]=function(_0x20989c,_0x2f688b){var _0x2542dd;return db[_0x1b33('0x4b')][_0x1b33('0x4c')](function(_0x1a080b){return db[_0x1b33('0x40')][_0x1b33('0x4a')](_0x20989c[_0x1b33('0x48')],{'transaction':_0x1a080b})['then'](function(_0x378bdb){_0x2542dd=_0x378bdb;var _0x2b1b99={'type':db['Sequelize'][_0x1b33('0x4d')],'transaction':_0x1a080b};switch(_0x20989c[_0x1b33('0x48')][_0x1b33('0x3f')]){case'text':_0x2b1b99[_0x1b33('0x3f')]=db['Sequelize'][_0x1b33('0x4d')];break;case _0x1b33('0x4e'):_0x2b1b99[_0x1b33('0x3f')]=db[_0x1b33('0x4f')][_0x1b33('0x50')];break;case'switch':_0x2b1b99['type']=db[_0x1b33('0x4f')][_0x1b33('0x51')];_0x2b1b99[_0x1b33('0x52')]=![];break;default:}return db[_0x1b33('0x4b')][_0x1b33('0x53')][_0x1b33('0x54')](_0x1b33('0x55'),util[_0x1b33('0x56')](_0x1b33('0x57'),_0x2542dd['id']),_0x2b1b99);})[_0x1b33('0x26')](function(){return _0x2542dd;});})['then'](respondWithResult(_0x2f688b,0xc9))[_0x1b33('0x44')](handleError(_0x2f688b,null));};
\ No newline at end of file
+var _0x54e0=['count','set','Content-Range','reject','update','then','destroy','error','stack','name','send','map','CmCustomField','fieldName','type','key','model','differenceBy','query','filters','intersection','attributes','fields','length','order','sort','where','filter','merge','VIRTUAL','include','rows','catch','show','params','keys','rawAttributes','includeAll','find','body','create','sequelize','TEXT','text','Sequelize','INTEGER','switch','BOOLEAN','queryInterface','addColumn','cm_contacts','cf_%d','eml-format','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit'];(function(_0x3a8e81,_0x3be9f6){var _0x2c8d80=function(_0x306751){while(--_0x306751){_0x3a8e81['push'](_0x3a8e81['shift']());}};_0x2c8d80(++_0x3be9f6);}(_0x54e0,0x84));var _0x054e=function(_0x4049f5,_0x3a53d2){_0x4049f5=_0x4049f5-0x0;var _0x6ca3c=_0x54e0[_0x4049f5];return _0x6ca3c;};'use strict';var emlformat=require(_0x054e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x054e('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x054e('0x2'));var Mustache=require(_0x054e('0x3'));var util=require(_0x054e('0x4'));var path=require('path');var sox=require(_0x054e('0x5'));var csv=require(_0x054e('0x6'));var ejs=require(_0x054e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x054e('0x8'));var crypto=require(_0x054e('0x9'));var jsforce=require(_0x054e('0xa'));var deskjs=require(_0x054e('0xb'));var toCsv=require('to-csv');var querystring=require(_0x054e('0xc'));var Papa=require(_0x054e('0xd'));var Redis=require(_0x054e('0xe'));var authService=require(_0x054e('0xf'));var qs=require(_0x054e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x054e('0x11'))('api');var utils=require(_0x054e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x054e('0x13'));var db=require(_0x054e('0x14'))['db'];function respondWithStatusCode(_0xcb4e62,_0x46f9eb){_0x46f9eb=_0x46f9eb||0xcc;return function(_0x386f4d){if(_0x386f4d){return _0xcb4e62[_0x054e('0x15')](_0x46f9eb);}return _0xcb4e62['status'](_0x46f9eb)[_0x054e('0x16')]();};}function respondWithResult(_0x3fa03e,_0x245255){_0x245255=_0x245255||0xc8;return function(_0x27cfc1){if(_0x27cfc1){return _0x3fa03e[_0x054e('0x17')](_0x245255)[_0x054e('0x18')](_0x27cfc1);}};}function respondWithFilteredResult(_0x56360b,_0x19c882){return function(_0x37738e){if(_0x37738e){var _0x25d36c=typeof _0x19c882[_0x054e('0x19')]===_0x054e('0x1a')&&typeof _0x19c882[_0x054e('0x1b')]==='undefined';var _0x3fcb6f=_0x37738e['count'];var _0x22ce06=_0x25d36c?0x0:_0x19c882['offset'];var _0x2ad392=_0x25d36c?_0x37738e[_0x054e('0x1c')]:_0x19c882[_0x054e('0x19')]+_0x19c882[_0x054e('0x1b')];var _0x561fba;if(_0x2ad392>=_0x3fcb6f){_0x2ad392=_0x3fcb6f;_0x561fba=0xc8;}else{_0x561fba=0xce;}_0x56360b[_0x054e('0x17')](_0x561fba);return _0x56360b[_0x054e('0x1d')](_0x054e('0x1e'),_0x22ce06+'-'+_0x2ad392+'/'+_0x3fcb6f)['json'](_0x37738e);}return null;};}function patchUpdates(_0x537155){return function(_0x44e8c5){try{jsonpatch['apply'](_0x44e8c5,_0x537155,!![]);}catch(_0x284cc){return BPromise[_0x054e('0x1f')](_0x284cc);}return _0x44e8c5['save']();};}function saveUpdates(_0x2b457d,_0x2cc37b){return function(_0xa348c0){if(_0xa348c0){return _0xa348c0[_0x054e('0x20')](_0x2b457d)[_0x054e('0x21')](function(_0x1457ff){return _0x1457ff;});}return null;};}function removeEntity(_0x3583be,_0x4947d2){return function(_0x5eb9cd){if(_0x5eb9cd){return _0x5eb9cd[_0x054e('0x22')]()[_0x054e('0x21')](function(){_0x3583be[_0x054e('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2d8f00,_0x36f911){return function(_0x43998a){if(!_0x43998a){_0x2d8f00[_0x054e('0x15')](0x194);}return _0x43998a;};}function handleError(_0x20e17c,_0x9a670b){_0x9a670b=_0x9a670b||0x1f4;return function(_0x46ddd0){logger[_0x054e('0x23')](_0x46ddd0[_0x054e('0x24')]);if(_0x46ddd0[_0x054e('0x25')]){delete _0x46ddd0[_0x054e('0x25')];}_0x20e17c[_0x054e('0x17')](_0x9a670b)[_0x054e('0x26')](_0x46ddd0);};}exports['index']=function(_0x3d698f,_0xeadf36){var _0x24ed80={},_0x3435c5={},_0xb1f5b2={'count':0x0,'rows':[]};var _0x53d589=_[_0x054e('0x27')](db[_0x054e('0x28')]['rawAttributes'],function(_0x396081){return{'name':_0x396081[_0x054e('0x29')],'type':_0x396081[_0x054e('0x2a')][_0x054e('0x2b')]};});_0x3435c5[_0x054e('0x2c')]=_[_0x054e('0x2d')](_['map'](_0x53d589,_0x054e('0x25')),[_0x054e('0x25')]);_0x3435c5['query']=_['keys'](_0x3d698f[_0x054e('0x2e')]);_0x3435c5[_0x054e('0x2f')]=_[_0x054e('0x30')](_0x3435c5[_0x054e('0x2c')],_0x3435c5['query']);_0x24ed80[_0x054e('0x31')]=_[_0x054e('0x30')](_0x3435c5[_0x054e('0x2c')],qs[_0x054e('0x32')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x32')]));_0x24ed80[_0x054e('0x31')]=_0x24ed80[_0x054e('0x31')][_0x054e('0x33')]?_0x24ed80[_0x054e('0x31')]:_0x3435c5[_0x054e('0x2c')];if(!_0x3d698f[_0x054e('0x2e')]['hasOwnProperty']('nolimit')){_0x24ed80[_0x054e('0x1b')]=qs['limit'](_0x3d698f[_0x054e('0x2e')][_0x054e('0x1b')]);_0x24ed80['offset']=qs[_0x054e('0x19')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x19')]);}_0x24ed80[_0x054e('0x34')]=qs[_0x054e('0x35')](_0x3d698f[_0x054e('0x2e')][_0x054e('0x35')]);_0x24ed80[_0x054e('0x36')]=qs[_0x054e('0x2f')](_['pick'](_0x3d698f['query'],_0x3435c5[_0x054e('0x2f')]),_0x53d589);if(_0x3d698f[_0x054e('0x2e')][_0x054e('0x37')]){_0x24ed80['where']=_[_0x054e('0x38')](_0x24ed80[_0x054e('0x36')],{'$or':_['map'](_0x53d589,function(_0x1ad32f){if(_0x1ad32f[_0x054e('0x2a')]!==_0x054e('0x39')){var _0x49b01a={};_0x49b01a[_0x1ad32f[_0x054e('0x25')]]={'$like':'%'+_0x3d698f[_0x054e('0x2e')][_0x054e('0x37')]+'%'};return _0x49b01a;}})});}_0x24ed80=_['merge']({},_0x24ed80,_0x3d698f['options']);var _0xee7052={'where':_0x24ed80['where']};return db[_0x054e('0x28')]['count'](_0xee7052)[_0x054e('0x21')](function(_0x354373){_0xb1f5b2[_0x054e('0x1c')]=_0x354373;if(_0x3d698f[_0x054e('0x2e')]['includeAll']){_0x24ed80[_0x054e('0x3a')]=[{'all':!![]}];}return db[_0x054e('0x28')]['findAll'](_0x24ed80);})[_0x054e('0x21')](function(_0x2dfb67){_0xb1f5b2[_0x054e('0x3b')]=_0x2dfb67;return _0xb1f5b2;})[_0x054e('0x21')](respondWithFilteredResult(_0xeadf36,_0x24ed80))[_0x054e('0x3c')](handleError(_0xeadf36,null));};exports[_0x054e('0x3d')]=function(_0x304f8f,_0x4de522){var _0x4d70fb={'raw':!![],'where':{'id':_0x304f8f[_0x054e('0x3e')]['id']}},_0x26b8ba={};_0x26b8ba[_0x054e('0x2c')]=_[_0x054e('0x3f')](db[_0x054e('0x28')][_0x054e('0x40')]);_0x26b8ba['query']=_[_0x054e('0x3f')](_0x304f8f[_0x054e('0x2e')]);_0x26b8ba[_0x054e('0x2f')]=_[_0x054e('0x30')](_0x26b8ba[_0x054e('0x2c')],_0x26b8ba['query']);_0x4d70fb[_0x054e('0x31')]=_[_0x054e('0x30')](_0x26b8ba[_0x054e('0x2c')],qs['fields'](_0x304f8f[_0x054e('0x2e')][_0x054e('0x32')]));_0x4d70fb[_0x054e('0x31')]=_0x4d70fb[_0x054e('0x31')]['length']?_0x4d70fb['attributes']:_0x26b8ba[_0x054e('0x2c')];if(_0x304f8f[_0x054e('0x2e')][_0x054e('0x41')]){_0x4d70fb['include']=[{'all':!![]}];}_0x4d70fb=_[_0x054e('0x38')]({},_0x4d70fb,_0x304f8f['options']);return db[_0x054e('0x28')][_0x054e('0x42')](_0x4d70fb)[_0x054e('0x21')](handleEntityNotFound(_0x4de522,null))[_0x054e('0x21')](respondWithResult(_0x4de522,null))['catch'](handleError(_0x4de522,null));};exports[_0x054e('0x20')]=function(_0x3ca79e,_0x7dbfd2){if(_0x3ca79e[_0x054e('0x43')]['id']){delete _0x3ca79e['body']['id'];}return db['CmCustomField'][_0x054e('0x42')]({'where':{'id':_0x3ca79e[_0x054e('0x3e')]['id']}})[_0x054e('0x21')](handleEntityNotFound(_0x7dbfd2,null))[_0x054e('0x21')](saveUpdates(_0x3ca79e[_0x054e('0x43')],null))['then'](respondWithResult(_0x7dbfd2,null))[_0x054e('0x3c')](handleError(_0x7dbfd2,null));};exports[_0x054e('0x22')]=function(_0x11e0e2,_0x493cca){return db['CmCustomField'][_0x054e('0x42')]({'where':{'id':_0x11e0e2[_0x054e('0x3e')]['id']}})[_0x054e('0x21')](handleEntityNotFound(_0x493cca,null))['then'](removeEntity(_0x493cca,null))[_0x054e('0x3c')](handleError(_0x493cca,null));};exports[_0x054e('0x44')]=function(_0x29f5ca,_0x3c33cb){var _0x216704;return db[_0x054e('0x45')]['transaction'](function(_0x18d9e8){return db[_0x054e('0x28')][_0x054e('0x44')](_0x29f5ca[_0x054e('0x43')],{'transaction':_0x18d9e8})[_0x054e('0x21')](function(_0x234196){_0x216704=_0x234196;var _0x1d3804={'type':db['Sequelize'][_0x054e('0x46')],'transaction':_0x18d9e8};switch(_0x29f5ca['body']['type']){case _0x054e('0x47'):_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x46')];break;case'number':_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x49')];break;case _0x054e('0x4a'):_0x1d3804[_0x054e('0x2a')]=db[_0x054e('0x48')][_0x054e('0x4b')];_0x1d3804['defaultValue']=![];break;default:}return db[_0x054e('0x45')][_0x054e('0x4c')][_0x054e('0x4d')](_0x054e('0x4e'),util['format'](_0x054e('0x4f'),_0x216704['id']),_0x1d3804);})[_0x054e('0x21')](function(){return _0x216704;});})[_0x054e('0x21')](respondWithResult(_0x3c33cb,0xc9))['catch'](handleError(_0x3c33cb,null));};
\ No newline at end of file
index 541edcf..ae649f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa4=['define','CmCustomField','cm_custom_fields','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./cmCustomField.attributes','exports'];(function(_0x26fbfe,_0x3b165b){var _0x3f582d=function(_0x27de3b){while(--_0x27de3b){_0x26fbfe['push'](_0x26fbfe['shift']());}};_0x3f582d(++_0x3b165b);}(_0x0aa4,0x1f1));var _0x40aa=function(_0x56b7df,_0x3e54bd){_0x56b7df=_0x56b7df-0x0;var _0x41a7e1=_0x0aa4[_0x56b7df];return _0x41a7e1;};'use strict';var _=require(_0x40aa('0x0'));var util=require('util');var logger=require(_0x40aa('0x1'))(_0x40aa('0x2'));var moment=require(_0x40aa('0x3'));var BPromise=require(_0x40aa('0x4'));var rp=require(_0x40aa('0x5'));var fs=require('fs');var path=require(_0x40aa('0x6'));var rimraf=require(_0x40aa('0x7'));var config=require('../../config/environment');var attributes=require(_0x40aa('0x8'));module[_0x40aa('0x9')]=function(_0x2fd182,_0x35e004){return _0x2fd182[_0x40aa('0xa')](_0x40aa('0xb'),attributes,{'tableName':_0x40aa('0xc'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x188b=['util','../../config/logger','moment','bluebird','rimraf','./cmCustomField.attributes','define','cm_custom_fields'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x188b,0xa8));var _0xb188=function(_0x8f4a6c,_0x2b859e){_0x8f4a6c=_0x8f4a6c-0x0;var _0x1ba938=_0x188b[_0x8f4a6c];return _0x1ba938;};'use strict';var _=require('lodash');var util=require(_0xb188('0x0'));var logger=require(_0xb188('0x1'))('api');var moment=require(_0xb188('0x2'));var BPromise=require(_0xb188('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb188('0x4'));var config=require('../../config/environment');var attributes=require(_0xb188('0x5'));module['exports']=function(_0x44d464,_0x3a99e7){return _0x44d464[_0xb188('0x6')]('CmCustomField',attributes,{'tableName':_0xb188('0x7'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e376871..4294e1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda9a=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','bluebird'];(function(_0x5723df,_0x2d874a){var _0x137cbb=function(_0x3a6779){while(--_0x3a6779){_0x5723df['push'](_0x5723df['shift']());}};_0x137cbb(++_0x2d874a);}(_0xda9a,0x1a3));var _0xada9=function(_0x3b6652,_0x32486d){_0x3b6652=_0x3b6652-0x0;var _0x14d39f=_0xda9a[_0x3b6652];return _0x14d39f;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xada9('0x0'));var rs=require(_0xada9('0x1'));var fs=require('fs');var Redis=require(_0xada9('0x2'));var db=require(_0xada9('0x3'))['db'];var utils=require(_0xada9('0x4'));var logger=require(_0xada9('0x5'))(_0xada9('0x6'));var config=require(_0xada9('0x7'));var jayson=require(_0xada9('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x7240a3,_0x25f3a1,_0xf37fb7){return new BPromise(function(_0x2fd9c8,_0x2dd841){return client['request'](_0x7240a3,_0xf37fb7)[_0xada9('0x9')](function(_0x405200){logger['info'](_0xada9('0xa'),_0x25f3a1,_0xada9('0xb'));logger[_0xada9('0xc')](_0xada9('0xd'),_0x25f3a1,_0xada9('0xb'),JSON[_0xada9('0xe')](_0x405200));if(_0x405200[_0xada9('0xf')]){if(_0x405200[_0xada9('0xf')][_0xada9('0x10')]===0x1f4){logger[_0xada9('0xf')](_0xada9('0xa'),_0x25f3a1,_0x405200[_0xada9('0xf')]['message']);return _0x2dd841(_0x405200[_0xada9('0xf')]['message']);}logger[_0xada9('0xf')](_0xada9('0xa'),_0x25f3a1,_0x405200['error'][_0xada9('0x11')]);return _0x2fd9c8(_0x405200['error'][_0xada9('0x11')]);}else{logger[_0xada9('0x12')](_0xada9('0xa'),_0x25f3a1,'request\x20sent');_0x2fd9c8(_0x405200[_0xada9('0x13')][_0xada9('0x11')]);}})[_0xada9('0x14')](function(_0x52c9d1){logger[_0xada9('0xf')](_0xada9('0xa'),_0x25f3a1,_0x52c9d1);_0x2dd841(_0x52c9d1);});});}
\ No newline at end of file
+var _0x829a=['CmCustomField,\x20%s,\x20%s','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then'];(function(_0x539770,_0x3d4913){var _0x4a49b5=function(_0x54006c){while(--_0x54006c){_0x539770['push'](_0x539770['shift']());}};_0x4a49b5(++_0x3d4913);}(_0x829a,0xee));var _0xa829=function(_0x2479f5,_0x290689){_0x2479f5=_0x2479f5-0x0;var _0x5af45f=_0x829a[_0x2479f5];return _0x5af45f;};'use strict';var _=require(_0xa829('0x0'));var util=require('util');var moment=require(_0xa829('0x1'));var BPromise=require(_0xa829('0x2'));var rs=require(_0xa829('0x3'));var fs=require('fs');var Redis=require(_0xa829('0x4'));var db=require(_0xa829('0x5'))['db'];var utils=require(_0xa829('0x6'));var logger=require(_0xa829('0x7'))(_0xa829('0x8'));var config=require(_0xa829('0x9'));var jayson=require(_0xa829('0xa'));var client=jayson[_0xa829('0xb')][_0xa829('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2710b1,_0xfddc51,_0xdff586){return new BPromise(function(_0x527c0a,_0xd55c9e){return client[_0xa829('0xd')](_0x2710b1,_0xdff586)[_0xa829('0xe')](function(_0x2c08f7){logger['info'](_0xa829('0xf'),_0xfddc51,_0xa829('0x10'));logger[_0xa829('0x11')](_0xa829('0x12'),_0xfddc51,_0xa829('0x10'),JSON['stringify'](_0x2c08f7));if(_0x2c08f7[_0xa829('0x13')]){if(_0x2c08f7[_0xa829('0x13')]['code']===0x1f4){logger[_0xa829('0x13')](_0xa829('0xf'),_0xfddc51,_0x2c08f7['error'][_0xa829('0x14')]);return _0xd55c9e(_0x2c08f7['error'][_0xa829('0x14')]);}logger[_0xa829('0x13')]('CmCustomField,\x20%s,\x20%s',_0xfddc51,_0x2c08f7[_0xa829('0x13')][_0xa829('0x14')]);return _0x527c0a(_0x2c08f7[_0xa829('0x13')]['message']);}else{logger['info']('CmCustomField,\x20%s,\x20%s',_0xfddc51,_0xa829('0x10'));_0x527c0a(_0x2c08f7[_0xa829('0x15')][_0xa829('0x14')]);}})[_0xa829('0x16')](function(_0x547a37){logger['error'](_0xa829('0xf'),_0xfddc51,_0x547a37);_0xd55c9e(_0x547a37);});});}
\ No newline at end of file
index 6c6659c..dc2ee40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8a=['update','delete','/:id','exports','util','path','express','Router','../../components/auth/service','isAuthenticated','index','get','show','post','put'];(function(_0x452d6a,_0x24c4b0){var _0x512067=function(_0x48aef2){while(--_0x48aef2){_0x452d6a['push'](_0x452d6a['shift']());}};_0x512067(++_0x24c4b0);}(_0x2e8a,0xc7));var _0xa2e8=function(_0x2803dc,_0x1cdaf1){_0x2803dc=_0x2803dc-0x0;var _0x552ae4=_0x2e8a[_0x2803dc];return _0x552ae4;};'use strict';var multer=require('multer');var util=require(_0xa2e8('0x0'));var path=require(_0xa2e8('0x1'));var timeout=require('connect-timeout');var express=require(_0xa2e8('0x2'));var router=express[_0xa2e8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xa2e8('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./cmCustomField.controller');router['get']('/',auth[_0xa2e8('0x5')](),controller[_0xa2e8('0x6')]);router[_0xa2e8('0x7')]('/:id',auth[_0xa2e8('0x5')](),controller[_0xa2e8('0x8')]);router[_0xa2e8('0x9')]('/',auth[_0xa2e8('0x5')](),controller['create']);router[_0xa2e8('0xa')]('/:id',auth[_0xa2e8('0x5')](),controller[_0xa2e8('0xb')]);router[_0xa2e8('0xc')](_0xa2e8('0xd'),auth[_0xa2e8('0x5')](),controller['destroy']);module[_0xa2e8('0xe')]=router;
\ No newline at end of file
+var _0x02a7=['../../config/environment','./cmCustomField.controller','isAuthenticated','get','/:id','show','post','create','delete','destroy','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x24ea0a,_0x4d57b9){var _0x753156=function(_0x807f7c){while(--_0x807f7c){_0x24ea0a['push'](_0x24ea0a['shift']());}};_0x753156(++_0x4d57b9);}(_0x02a7,0x7a));var _0x702a=function(_0x5b87cf,_0x17a225){_0x5b87cf=_0x5b87cf-0x0;var _0xe07b42=_0x02a7[_0x5b87cf];return _0xe07b42;};'use strict';var multer=require('multer');var util=require(_0x702a('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x702a('0x1'));var router=express[_0x702a('0x2')]();var fs_extra=require(_0x702a('0x3'));var auth=require(_0x702a('0x4'));var interaction=require(_0x702a('0x5'));var config=require(_0x702a('0x6'));var controller=require(_0x702a('0x7'));router['get']('/',auth[_0x702a('0x8')](),controller['index']);router[_0x702a('0x9')](_0x702a('0xa'),auth[_0x702a('0x8')](),controller[_0x702a('0xb')]);router[_0x702a('0xc')]('/',auth[_0x702a('0x8')](),controller[_0x702a('0xd')]);router['put'](_0x702a('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x702a('0xe')](_0x702a('0xa'),auth[_0x702a('0x8')](),controller[_0x702a('0xf')]);module['exports']=router;
\ No newline at end of file
index 0216c73..07a52a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69f4=['exports','BOOLEAN','format','YYYY-MM-DD\x20HH:mm:ss','INTEGER','DATE','UNSIGNED','contactListQueue','STRING','moment'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x69f4,0xc7));var _0x469f=function(_0x1c0630,_0x11f37a){_0x1c0630=_0x1c0630-0x0;var _0x1125a3=_0x69f4[_0x1c0630];return _0x1125a3;};'use strict';var moment=require(_0x469f('0x0'));var Sequelize=require('sequelize');module[_0x469f('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x469f('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x469f('0x3')](_0x469f('0x4'))},'countbusyretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0x469f('0x6')]},'priority':{'type':Sequelize[_0x469f('0x5')](0x2)[_0x469f('0x7')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x469f('0x2')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x469f('0x5')],'unique':_0x469f('0x8')},'ListId':{'type':Sequelize[_0x469f('0x5')],'unique':_0x469f('0x8')},'UserId':{'type':Sequelize[_0x469f('0x5')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x469f('0x8')},'CampaignId':{'type':Sequelize[_0x469f('0x5')]},'countnosuchnumberretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x469f('0x5')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0x469f('0x5')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x469f('0x9')]},'recallmeNotifiedDate':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x2fd1=['INTEGER','STRING','UNSIGNED','contactListQueue','sequelize','exports','BOOLEAN','DATE','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x275caa,_0x166d5e){var _0x28d670=function(_0x2a20e1){while(--_0x2a20e1){_0x275caa['push'](_0x275caa['shift']());}};_0x28d670(++_0x166d5e);}(_0x2fd1,0x162));var _0x12fd=function(_0x21e6f1,_0x4d5eb5){_0x21e6f1=_0x21e6f1-0x0;var _0x44a394=_0x2fd1[_0x21e6f1];return _0x44a394;};'use strict';var moment=require('moment');var Sequelize=require(_0x12fd('0x0'));module[_0x12fd('0x1')]={'phone':{'type':Sequelize['STRING'],'allowNull':![]},'active':{'type':Sequelize[_0x12fd('0x2')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x12fd('0x3')],'defaultValue':moment()[_0x12fd('0x4')](_0x12fd('0x5'))},'countbusyretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x12fd('0x2')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x12fd('0x7')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x12fd('0x3')]},'priority':{'type':Sequelize[_0x12fd('0x6')](0x2)[_0x12fd('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'UserId':{'type':Sequelize[_0x12fd('0x6')]},'VoiceQueueId':{'type':Sequelize['INTEGER'],'unique':_0x12fd('0x9')},'CampaignId':{'type':Sequelize[_0x12fd('0x6')]},'countnosuchnumberretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x12fd('0x6')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize['STRING']},'recallmeNotifiedDate':{'type':Sequelize[_0x12fd('0x3')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index 4c72945..5c6965d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1670=['scheduledat','recallme','LOCK','UPDATE','Contact','CmCompany','Company','CmList','getPreviewRecall','findOne','Queue','dialActive','getOpenContacts','getVoiceQueues','CmHopper,\x20%s,\x20%s,\x20%s','timezones','push','utcOffset','getTimezone','moment','lodash','../../config/logger','../../config/environment','../../mysqldb','json','offset','undefined','limit','count','status','set','Content-Range','update','sendStatus','error','stack','name','index','map','CmHopper','rawAttributes','fieldName','type','key','model','query','keys','intersection','filters','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$like','$notLike','$notILike','$contains','$contained','$any','fields','attributes','length','sort','where','pick','merge','VIRTUAL','filter','then','include','findAll','rows','catch','show','params','includeAll','options','create','body','find','describe','VoiceQueueId','CampaignId','VoiceQueue','Campaign','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','membername','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','end','getPreview','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','transaction','format','user','value','direction','isEmpty','priority','scheduledAt','DESC','ASC','literal','hopperIds','COALESCE(CmHopper.UserId,\x200)\x20DESC'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1670,0x9a));var _0x0167=function(_0x2c8208,_0x3600de){_0x2c8208=_0x2c8208-0x0;var _0x56afa7=_0x1670[_0x2c8208];return _0x56afa7;};'use strict';var moment=require(_0x0167('0x0'));var _=require(_0x0167('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0x0167('0x2'))('api');var shared=require(_0x0167('0x3'));var db=require(_0x0167('0x4'))['db'];function respondWithResult(_0x377590,_0x6f87ae){_0x6f87ae=_0x6f87ae||0xc8;return function(_0x5786d8){if(_0x5786d8){return _0x377590['status'](_0x6f87ae)[_0x0167('0x5')](_0x5786d8);}};}function respondWithFilteredResult(_0x1ae650,_0x295e51){return function(_0x3e1507){if(_0x3e1507){var _0x2120f2=typeof _0x295e51[_0x0167('0x6')]===_0x0167('0x7')&&typeof _0x295e51[_0x0167('0x8')]==='undefined';var _0x4c6b78=_0x3e1507[_0x0167('0x9')];var _0x178f5f=_0x2120f2?0x0:_0x295e51[_0x0167('0x6')];var _0x1632d4=_0x2120f2?_0x3e1507[_0x0167('0x9')]:_0x295e51[_0x0167('0x6')]+_0x295e51[_0x0167('0x8')];var _0x194af9;if(_0x1632d4>=_0x4c6b78){_0x1632d4=_0x4c6b78;_0x194af9=0xc8;}else{_0x194af9=0xce;}_0x1ae650[_0x0167('0xa')](_0x194af9);return _0x1ae650[_0x0167('0xb')](_0x0167('0xc'),_0x178f5f+'-'+_0x1632d4+'/'+_0x4c6b78)[_0x0167('0x5')](_0x3e1507);}return null;};}function saveUpdates(_0x34ac02,_0x2ebfa3){return function(_0x570965){if(_0x570965){return _0x570965[_0x0167('0xd')](_0x34ac02)['then'](function(_0x25e5d4){return _0x25e5d4;});}return null;};}function handleEntityNotFound(_0x5eb5f9,_0x7744d1){return function(_0x39e644){if(!_0x39e644){_0x5eb5f9[_0x0167('0xe')](0x194);}return _0x39e644;};}function handleError(_0x57c0e0,_0x50c1a3){_0x50c1a3=_0x50c1a3||0x1f4;return function(_0x547dea){logger[_0x0167('0xf')](_0x547dea[_0x0167('0x10')]);if(_0x547dea['name']){delete _0x547dea[_0x0167('0x11')];}_0x57c0e0['status'](_0x50c1a3)['send'](_0x547dea);};}exports[_0x0167('0x12')]=function(_0x574f04,_0x22f07c){var _0x4c0e4f={},_0x16094a={},_0x2740b5={'count':0x0,'rows':[]};var _0x170207=_[_0x0167('0x13')](db[_0x0167('0x14')][_0x0167('0x15')],function(_0xa384d9){return{'name':_0xa384d9[_0x0167('0x16')],'type':_0xa384d9[_0x0167('0x17')][_0x0167('0x18')]};});_0x16094a[_0x0167('0x19')]=_[_0x0167('0x13')](_0x170207,'name');_0x16094a[_0x0167('0x1a')]=_[_0x0167('0x1b')](_0x574f04[_0x0167('0x1a')]);_0x16094a['filters']=_[_0x0167('0x1c')](_0x16094a[_0x0167('0x19')],_0x16094a[_0x0167('0x1a')]);_0x16094a[_0x0167('0x1d')]=_['concat'](_0x16094a[_0x0167('0x1d')],['$and',_0x0167('0x1e'),_0x0167('0x1f'),_0x0167('0x20'),_0x0167('0x21'),_0x0167('0x22'),_0x0167('0x23'),_0x0167('0x24'),'$not',_0x0167('0x25'),_0x0167('0x26'),_0x0167('0x27'),'$notIn',_0x0167('0x28'),_0x0167('0x29'),'$iLike',_0x0167('0x2a'),_0x0167('0x28'),'$overlap',_0x0167('0x2b'),_0x0167('0x2c'),_0x0167('0x2d')]);_0x4c0e4f['attributes']=_[_0x0167('0x1c')](_0x16094a[_0x0167('0x19')],qs['fields'](_0x574f04['query'][_0x0167('0x2e')]));_0x4c0e4f[_0x0167('0x2f')]=_0x4c0e4f[_0x0167('0x2f')][_0x0167('0x30')]?_0x4c0e4f['attributes']:_0x16094a['model'];if(!_0x574f04[_0x0167('0x1a')]['hasOwnProperty']('nolimit')){_0x4c0e4f[_0x0167('0x8')]=qs[_0x0167('0x8')](_0x574f04[_0x0167('0x1a')][_0x0167('0x8')]);_0x4c0e4f[_0x0167('0x6')]=qs[_0x0167('0x6')](_0x574f04[_0x0167('0x1a')]['offset']);}_0x4c0e4f['order']=qs[_0x0167('0x31')](_0x574f04[_0x0167('0x1a')][_0x0167('0x31')]);_0x4c0e4f[_0x0167('0x32')]=qs[_0x0167('0x1d')](_[_0x0167('0x33')](_0x574f04['query'],_0x16094a[_0x0167('0x1d')]),_0x170207);if(_0x574f04['query']['filter']){_0x4c0e4f[_0x0167('0x32')]=_[_0x0167('0x34')](_0x4c0e4f[_0x0167('0x32')],{'$or':_['map'](_0x170207,function(_0x29355d){if(_0x29355d[_0x0167('0x17')]!==_0x0167('0x35')){var _0xb0cc5c={};_0xb0cc5c[_0x29355d['name']]={'$like':'%'+_0x574f04[_0x0167('0x1a')][_0x0167('0x36')]+'%'};return _0xb0cc5c;}})});}_0x4c0e4f=_[_0x0167('0x34')]({},_0x4c0e4f,_0x574f04['options']);var _0x2ba723={'where':_0x4c0e4f[_0x0167('0x32')]};return db[_0x0167('0x14')][_0x0167('0x9')](_0x2ba723)[_0x0167('0x37')](function(_0x5ef495){_0x2740b5[_0x0167('0x9')]=_0x5ef495;if(_0x574f04[_0x0167('0x1a')]['includeAll']){_0x4c0e4f[_0x0167('0x38')]=[{'all':!![]}];}return db[_0x0167('0x14')][_0x0167('0x39')](_0x4c0e4f);})[_0x0167('0x37')](function(_0x1280b4){_0x2740b5[_0x0167('0x3a')]=_0x1280b4;return _0x2740b5;})['then'](respondWithFilteredResult(_0x22f07c,_0x4c0e4f))[_0x0167('0x3b')](handleError(_0x22f07c,null));};exports[_0x0167('0x3c')]=function(_0x3bf14c,_0x34981a){var _0x49dc4d={'raw':!![],'where':{'id':_0x3bf14c[_0x0167('0x3d')]['id']}},_0x42cfe1={};_0x42cfe1['model']=_[_0x0167('0x1b')](db[_0x0167('0x14')][_0x0167('0x15')]);_0x42cfe1['query']=_[_0x0167('0x1b')](_0x3bf14c[_0x0167('0x1a')]);_0x42cfe1[_0x0167('0x1d')]=_[_0x0167('0x1c')](_0x42cfe1[_0x0167('0x19')],_0x42cfe1[_0x0167('0x1a')]);_0x49dc4d[_0x0167('0x2f')]=_[_0x0167('0x1c')](_0x42cfe1['model'],qs[_0x0167('0x2e')](_0x3bf14c['query'][_0x0167('0x2e')]));_0x49dc4d[_0x0167('0x2f')]=_0x49dc4d[_0x0167('0x2f')]['length']?_0x49dc4d['attributes']:_0x42cfe1['model'];if(_0x3bf14c[_0x0167('0x1a')][_0x0167('0x3e')]){_0x49dc4d[_0x0167('0x38')]=[{'all':!![]}];}_0x49dc4d=_[_0x0167('0x34')]({},_0x49dc4d,_0x3bf14c[_0x0167('0x3f')]);return db[_0x0167('0x14')]['find'](_0x49dc4d)['then'](handleEntityNotFound(_0x34981a,null))['then'](respondWithResult(_0x34981a,null))[_0x0167('0x3b')](handleError(_0x34981a,null));};exports['create']=function(_0x117123,_0x20c350){return db[_0x0167('0x14')][_0x0167('0x40')](_0x117123['body'],{})[_0x0167('0x37')](respondWithResult(_0x20c350,0xc9))[_0x0167('0x3b')](handleError(_0x20c350,null));};exports[_0x0167('0xd')]=function(_0x431cb7,_0x2c910a){if(_0x431cb7[_0x0167('0x41')]['id']){delete _0x431cb7[_0x0167('0x41')]['id'];}return db[_0x0167('0x14')][_0x0167('0x42')]({'where':{'id':_0x431cb7[_0x0167('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2c910a,null))['then'](saveUpdates(_0x431cb7[_0x0167('0x41')],null))['then'](respondWithResult(_0x2c910a,null))[_0x0167('0x3b')](handleError(_0x2c910a,null));};exports['describe']=function(_0x2c3efc,_0x52b720){return db[_0x0167('0x14')][_0x0167('0x43')]()['then'](respondWithResult(_0x52b720,null))['catch'](handleError(_0x52b720,null));};exports['destroy']=function(_0x174a7a,_0x55aaa0){var _0x5e3746;var _0x18d29d=_0x174a7a['params']['id'];return db[_0x0167('0x14')][_0x0167('0x42')]({'where':{'id':_0x174a7a[_0x0167('0x3d')]['id']}})['then'](handleEntityNotFound(_0x55aaa0,null))[_0x0167('0x37')](function(_0x5d1bbd){if(_0x5d1bbd){return _0x5d1bbd['destroy']()['then'](function(_0xecc47d){return _0xecc47d;});}})[_0x0167('0x37')](function(_0x3bb496){_0x5e3746=_0x3bb496;if(_0x3bb496){if(_0x3bb496[_0x0167('0x44')]||_0x3bb496[_0x0167('0x45')]){return db[_0x3bb496['VoiceQueueId']?_0x0167('0x46'):_0x0167('0x47')][_0x0167('0x42')]({'where':{'id':_0x3bb496[_0x0167('0x44')]?_0x3bb496['VoiceQueueId']:_0x3bb496['CampaignId']},'attributes':['id',_0x0167('0x11')],'raw':!![]});}}})['then'](function(_0x3a9e01){var _0x1deb9c={};if(_0x3a9e01){_[_0x0167('0x34')](_0x1deb9c,_[_0x0167('0x48')](_0x5e3746[_0x0167('0x49')],[_0x0167('0x4a'),_0x0167('0x4b'),'id']));_0x1deb9c[_0x0167('0x4c')]=0x15;_0x1deb9c[_0x0167('0x4d')]=_0x0167('0x4e');_0x1deb9c['campaign']=_0x3a9e01['name'];_0x1deb9c[_0x0167('0x4f')]=_0x174a7a['user'][_0x0167('0x11')];_0x1deb9c[_0x0167('0x50')]=_0x174a7a['user']['id'];_0x1deb9c[_0x0167('0x4e')]=!![];_0x1deb9c[_0x0167('0x51')]=moment()['format'](_0x0167('0x52'));_0x1deb9c[_0x0167('0x53')]=_0x5e3746[_0x0167('0x54')];_0x1deb9c[_0x0167('0x55')]=_0x5e3746['VoiceQueueId']?_0x0167('0x56'):_0x0167('0x57');return db[_0x0167('0x58')]['find']({'where':{'id':_0x1deb9c[_0x0167('0x59')]},'attributes':[_0x0167('0x5a'),_0x0167('0x5b')]})[_0x0167('0x37')](function(_0x35ceda){if(!_[_0x0167('0x5c')](_0x55aaa0)&&!_[_0x0167('0x5c')](_0x35ceda[_0x0167('0x5a')])){_0x1deb9c[_0x0167('0x5d')]=_0x35ceda['firstName'];if(!_[_0x0167('0x5c')](_0x35ceda[_0x0167('0x5b')])){_0x1deb9c[_0x0167('0x5d')]+='\x20'+_0x35ceda[_0x0167('0x5b')];}}})[_0x0167('0x5e')](function(){return db[_0x0167('0x5f')]['create'](_0x1deb9c);});}})[_0x0167('0x37')](function(_0x4da582){return db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':_0x18d29d}});})[_0x0167('0x37')](function(){return _0x55aaa0[_0x0167('0xa')](0xcc)[_0x0167('0x60')]();})[_0x0167('0x3b')](handleError(_0x55aaa0,null));};exports[_0x0167('0x61')]=function(_0x5ad0ba,_0x20140b){var _0x38994f=[];return db['CmContact'][_0x0167('0x43')]()[_0x0167('0x37')](function(_0x3c46a0){_0x38994f=_[_0x0167('0x1b')](_0x3c46a0);return _0x5ad0ba['user']['getVoiceQueues']({'where':{'type':_0x0167('0x62'),'dialActive':!![],'dialMethod':_0x0167('0x63')},'attributes':['id',_0x0167('0x64'),_0x0167('0x65')],'raw':!![]});})[_0x0167('0x37')](function(_0x123df4){if(_0x123df4&&_0x123df4[_0x0167('0x30')]){return db[_0x0167('0x66')][_0x0167('0x67')](function(_0x3b5c80){var _0x5ed240={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0167('0x68')](_0x0167('0x52'))},'VoiceQueueId':{'$in':_[_0x0167('0x13')](_0x123df4,'id')},'$or':[{'UserId':null},{'UserId':_0x5ad0ba[_0x0167('0x69')]['id']}]};var _0x3b56ec={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x123df4)[_0x0167('0x36')]([_0x0167('0x65'),0x0])['map']('id')[_0x0167('0x6a')]()},'$or':[{'UserId':null},{'UserId':_0x5ad0ba[_0x0167('0x69')]['id']}]};var _0x547538={'$or':[_0x5ed240,_0x3b56ec]};var _0x1c46ce=[];if(_0x5ad0ba['body'][_0x0167('0x6b')]&&_0x5ad0ba[_0x0167('0x41')][_0x0167('0x6b')]==='prev'){if(!_[_0x0167('0x6c')](_0x5ad0ba[_0x0167('0x41')]['hopperIds'])){_0x547538['id']={'$in':_0x5ad0ba[_0x0167('0x41')]['hopperIds']};}_0x1c46ce=[[_0x0167('0x6d'),'ASC'],[_0x0167('0x6e'),_0x123df4[0x0][_0x0167('0x64')]==='ASC'?_0x0167('0x6f'):_0x0167('0x70')],db[_0x0167('0x66')][_0x0167('0x71')]('COALESCE(CmHopper.UserId,\x200)\x20ASC'),['id','DESC']];}else{if(!_[_0x0167('0x6c')](_0x5ad0ba[_0x0167('0x41')][_0x0167('0x72')])){_0x547538['id']={'$notIn':_0x5ad0ba[_0x0167('0x41')]['hopperIds']};}_0x1c46ce=[[_0x0167('0x6d'),'DESC'],[_0x0167('0x6e'),_0x123df4[0x0]['dialOrderByScheduledAt']],db['sequelize'][_0x0167('0x71')](_0x0167('0x73')),['id',_0x0167('0x70')]];}return db[_0x0167('0x14')]['findOne']({'attributes':['id',_0x0167('0x74'),_0x0167('0x54'),_0x0167('0x75')],'where':_0x547538,'order':_0x1c46ce,'transaction':_0x3b5c80,'lock':_0x3b5c80[_0x0167('0x76')][_0x0167('0x77')],'include':[{'model':db[_0x0167('0x58')],'as':_0x0167('0x78'),'attributes':_0x38994f,'include':[{'model':db[_0x0167('0x79')],'as':_0x0167('0x7a'),'attributes':['id','name']}]},{'model':db[_0x0167('0x7b')],'as':'List','attributes':['id',_0x0167('0x11')]},{'model':db[_0x0167('0x46')],'as':'Queue','attributes':['id','name','dialActive']}]})[_0x0167('0x37')](function(_0x383085){if(_0x383085){return _0x383085['update']({'UserId':_0x5ad0ba['user']['id']},{'transaction':_0x3b5c80});}});});}})[_0x0167('0x37')](handleEntityNotFound(_0x20140b,null))[_0x0167('0x37')](respondWithResult(_0x20140b,null))['catch'](handleError(_0x20140b,null));};exports[_0x0167('0x7c')]=function(_0x255f88,_0x19c717,_0x30d32e){var _0x426bf4=[];var _0x3c0bca=_0x255f88['params']['id'];var _0x25b543=_0x255f88[_0x0167('0x69')]['id'];return db['CmContact'][_0x0167('0x43')]()[_0x0167('0x37')](function(_0xa7b06b){_0x426bf4=_[_0x0167('0x1b')](_0xa7b06b);return db[_0x0167('0x66')]['transaction'](function(_0x52bed0){const _0x557693={'id':_0x3c0bca};return db[_0x0167('0x14')][_0x0167('0x7d')]({'attributes':['id',_0x0167('0x74'),_0x0167('0x75')],'where':_0x557693,'transaction':_0x52bed0,'lock':_0x52bed0[_0x0167('0x76')]['UPDATE'],'include':[{'model':db[_0x0167('0x58')],'as':_0x0167('0x78'),'attributes':_0x426bf4,'include':[{'model':db[_0x0167('0x79')],'as':_0x0167('0x7a'),'attributes':['id',_0x0167('0x11')]}]},{'model':db[_0x0167('0x7b')],'as':'List','attributes':['id','name']},{'model':db[_0x0167('0x46')],'as':_0x0167('0x7e'),'attributes':['id','name',_0x0167('0x7f')]}]})[_0x0167('0x37')](function(_0x442e99){if(_0x442e99){return _0x442e99[_0x0167('0xd')]({'UserId':_0x25b543},{'transaction':_0x52bed0});}});});})[_0x0167('0x37')](handleEntityNotFound(_0x19c717,null))[_0x0167('0x37')](respondWithResult(_0x19c717,null))[_0x0167('0x3b')](handleError(_0x19c717,null));};exports[_0x0167('0x80')]=function(_0x4ba0c4,_0x427a7e){return _0x4ba0c4[_0x0167('0x69')][_0x0167('0x81')]({'where':{'type':_0x0167('0x62'),'dialActive':!![],'dialMethod':_0x0167('0x63')},'attributes':['id'],'raw':!![]})[_0x0167('0x37')](function(_0x344120){if(_0x344120&&_0x344120['length']){return db[_0x0167('0x14')][_0x0167('0x9')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x0167('0x13')](_0x344120,'id')},'$or':[{'UserId':null},{'UserId':_0x4ba0c4[_0x0167('0x69')]['id']}]}});}return 0x0;})[_0x0167('0x37')](function(_0x11cf46){if(!_['isNil'](_0x11cf46)&&_['isNumber'](_0x11cf46)){return _0x427a7e[_0x0167('0xa')](0xc8)['json']({'contacts':_0x11cf46});}else{logger['error'](_0x0167('0x82'),_0x0167('0x80'),0x194,'entity\x20not\x20found');_0x427a7e['sendStatus'](0x194);}})[_0x0167('0x3b')](handleError(_0x427a7e,null));};exports['getTimezones']=function(_0x1a1eba,_0x19adef){var _0x9980e3=shared[_0x0167('0x83')];var _0x3c5cdf=[];_[_0x0167('0x13')](_0x9980e3,function(_0x189f8a){_0x3c5cdf[_0x0167('0x84')]({'id':_0x189f8a[_0x0167('0x11')],'name':_0x189f8a[_0x0167('0x11')],'utcOffset':_0x189f8a[_0x0167('0x85')]});});return _0x19adef['status'](0xc8)['json']({'tz':_0x3c5cdf});};exports[_0x0167('0x86')]=function(_0x15ad6e,_0x2fb81e){var _0x5b0e7b=shared[_0x0167('0x83')];var _0x6421b0={};if(!_[_0x0167('0x5c')](_0x5b0e7b[_0x15ad6e[_0x0167('0x41')]['id']]))_0x6421b0=_0x5b0e7b[_0x15ad6e[_0x0167('0x41')]['id']];return _0x2fb81e[_0x0167('0xa')](0xc8)['json'](_0x6421b0);};
\ No newline at end of file
+var _0xa990=['describe','destroy','find','CampaignId','VoiceQueueId','VoiceQueue','Campaign','omit','dataValues','updatedAt','state','statedesc','deleted','campaign','user','UserId','deletedat','YYYY-MM-DD\x20HH:mm:ss','phone','campaigntype','queue','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','CmHopperFinal','getPreview','getVoiceQueues','outbound','preview','dialPreviewAutoRecallMe','sequelize','format','value','direction','prev','isEmpty','hopperIds','priority','ASC','DESC','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','scheduledAt','dialOrderByScheduledAt','findOne','scheduledat','recallme','LOCK','UPDATE','CmCompany','Company','List','Queue','dialActive','getPreviewRecall','transaction','CmList','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','set','update','then','sendStatus','error','stack','name','index','map','CmHopper','rawAttributes','type','model','keys','query','filters','intersection','concat','$gt','$gte','$lt','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$any','attributes','fields','length','order','sort','where','pick','filter','VIRTUAL','merge','options','count','includeAll','rows','catch','show','include','create','body','params'];(function(_0x4bc339,_0x1922f7){var _0x21fd47=function(_0x2a7412){while(--_0x2a7412){_0x4bc339['push'](_0x4bc339['shift']());}};_0x21fd47(++_0x1922f7);}(_0xa990,0xc9));var _0x0a99=function(_0x1ceaa7,_0x1ed565){_0x1ceaa7=_0x1ceaa7-0x0;var _0x21d8cc=_0xa990[_0x1ceaa7];return _0x21d8cc;};'use strict';var moment=require(_0x0a99('0x0'));var _=require(_0x0a99('0x1'));var qs=require(_0x0a99('0x2'));var logger=require(_0x0a99('0x3'))(_0x0a99('0x4'));var shared=require(_0x0a99('0x5'));var db=require(_0x0a99('0x6'))['db'];function respondWithResult(_0x394f1c,_0x4d4992){_0x4d4992=_0x4d4992||0xc8;return function(_0x4d1781){if(_0x4d1781){return _0x394f1c[_0x0a99('0x7')](_0x4d4992)[_0x0a99('0x8')](_0x4d1781);}};}function respondWithFilteredResult(_0xfdb594,_0x320560){return function(_0x45b195){if(_0x45b195){var _0x398d95=typeof _0x320560[_0x0a99('0x9')]===_0x0a99('0xa')&&typeof _0x320560[_0x0a99('0xb')]===_0x0a99('0xa');var _0x1eaa2a=_0x45b195['count'];var _0x813e91=_0x398d95?0x0:_0x320560[_0x0a99('0x9')];var _0x5b5ec3=_0x398d95?_0x45b195['count']:_0x320560[_0x0a99('0x9')]+_0x320560[_0x0a99('0xb')];var _0x1eb2bd;if(_0x5b5ec3>=_0x1eaa2a){_0x5b5ec3=_0x1eaa2a;_0x1eb2bd=0xc8;}else{_0x1eb2bd=0xce;}_0xfdb594[_0x0a99('0x7')](_0x1eb2bd);return _0xfdb594[_0x0a99('0xc')]('Content-Range',_0x813e91+'-'+_0x5b5ec3+'/'+_0x1eaa2a)[_0x0a99('0x8')](_0x45b195);}return null;};}function saveUpdates(_0x3aaaad,_0x57ab88){return function(_0xb6a34d){if(_0xb6a34d){return _0xb6a34d[_0x0a99('0xd')](_0x3aaaad)[_0x0a99('0xe')](function(_0x2bbf1a){return _0x2bbf1a;});}return null;};}function handleEntityNotFound(_0x346061,_0x23d018){return function(_0x18c124){if(!_0x18c124){_0x346061[_0x0a99('0xf')](0x194);}return _0x18c124;};}function handleError(_0x4b6946,_0x5a17e1){_0x5a17e1=_0x5a17e1||0x1f4;return function(_0x2c40db){logger[_0x0a99('0x10')](_0x2c40db[_0x0a99('0x11')]);if(_0x2c40db['name']){delete _0x2c40db[_0x0a99('0x12')];}_0x4b6946['status'](_0x5a17e1)['send'](_0x2c40db);};}exports[_0x0a99('0x13')]=function(_0x3bab16,_0x3de006){var _0x544c2={},_0x572ce5={},_0x564ae9={'count':0x0,'rows':[]};var _0x27a14f=_[_0x0a99('0x14')](db[_0x0a99('0x15')][_0x0a99('0x16')],function(_0x5e6c7e){return{'name':_0x5e6c7e['fieldName'],'type':_0x5e6c7e[_0x0a99('0x17')]['key']};});_0x572ce5[_0x0a99('0x18')]=_['map'](_0x27a14f,_0x0a99('0x12'));_0x572ce5['query']=_[_0x0a99('0x19')](_0x3bab16[_0x0a99('0x1a')]);_0x572ce5[_0x0a99('0x1b')]=_[_0x0a99('0x1c')](_0x572ce5[_0x0a99('0x18')],_0x572ce5[_0x0a99('0x1a')]);_0x572ce5[_0x0a99('0x1b')]=_[_0x0a99('0x1d')](_0x572ce5[_0x0a99('0x1b')],['$and','$or',_0x0a99('0x1e'),_0x0a99('0x1f'),_0x0a99('0x20'),'$lte','$ne',_0x0a99('0x21'),_0x0a99('0x22'),_0x0a99('0x23'),_0x0a99('0x24'),_0x0a99('0x25'),_0x0a99('0x26'),_0x0a99('0x27'),_0x0a99('0x28'),_0x0a99('0x29'),'$notILike',_0x0a99('0x27'),'$overlap','$contains','$contained',_0x0a99('0x2a')]);_0x544c2[_0x0a99('0x2b')]=_[_0x0a99('0x1c')](_0x572ce5[_0x0a99('0x18')],qs[_0x0a99('0x2c')](_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x2c')]));_0x544c2['attributes']=_0x544c2[_0x0a99('0x2b')][_0x0a99('0x2d')]?_0x544c2[_0x0a99('0x2b')]:_0x572ce5[_0x0a99('0x18')];if(!_0x3bab16['query']['hasOwnProperty']('nolimit')){_0x544c2[_0x0a99('0xb')]=qs[_0x0a99('0xb')](_0x3bab16[_0x0a99('0x1a')]['limit']);_0x544c2[_0x0a99('0x9')]=qs[_0x0a99('0x9')](_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x9')]);}_0x544c2[_0x0a99('0x2e')]=qs[_0x0a99('0x2f')](_0x3bab16[_0x0a99('0x1a')]['sort']);_0x544c2[_0x0a99('0x30')]=qs[_0x0a99('0x1b')](_[_0x0a99('0x31')](_0x3bab16[_0x0a99('0x1a')],_0x572ce5[_0x0a99('0x1b')]),_0x27a14f);if(_0x3bab16['query'][_0x0a99('0x32')]){_0x544c2['where']=_['merge'](_0x544c2['where'],{'$or':_['map'](_0x27a14f,function(_0x155a14){if(_0x155a14['type']!==_0x0a99('0x33')){var _0x3d5e0f={};_0x3d5e0f[_0x155a14[_0x0a99('0x12')]]={'$like':'%'+_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x32')]+'%'};return _0x3d5e0f;}})});}_0x544c2=_[_0x0a99('0x34')]({},_0x544c2,_0x3bab16[_0x0a99('0x35')]);var _0x3bc3fc={'where':_0x544c2[_0x0a99('0x30')]};return db[_0x0a99('0x15')][_0x0a99('0x36')](_0x3bc3fc)[_0x0a99('0xe')](function(_0x472850){_0x564ae9['count']=_0x472850;if(_0x3bab16[_0x0a99('0x1a')][_0x0a99('0x37')]){_0x544c2['include']=[{'all':!![]}];}return db[_0x0a99('0x15')]['findAll'](_0x544c2);})[_0x0a99('0xe')](function(_0x563fbc){_0x564ae9[_0x0a99('0x38')]=_0x563fbc;return _0x564ae9;})[_0x0a99('0xe')](respondWithFilteredResult(_0x3de006,_0x544c2))[_0x0a99('0x39')](handleError(_0x3de006,null));};exports[_0x0a99('0x3a')]=function(_0x4a5c58,_0x19774f){var _0x11e046={'raw':!![],'where':{'id':_0x4a5c58['params']['id']}},_0x3b7efc={};_0x3b7efc[_0x0a99('0x18')]=_[_0x0a99('0x19')](db[_0x0a99('0x15')][_0x0a99('0x16')]);_0x3b7efc['query']=_[_0x0a99('0x19')](_0x4a5c58['query']);_0x3b7efc['filters']=_[_0x0a99('0x1c')](_0x3b7efc['model'],_0x3b7efc[_0x0a99('0x1a')]);_0x11e046['attributes']=_[_0x0a99('0x1c')](_0x3b7efc[_0x0a99('0x18')],qs[_0x0a99('0x2c')](_0x4a5c58[_0x0a99('0x1a')]['fields']));_0x11e046[_0x0a99('0x2b')]=_0x11e046[_0x0a99('0x2b')][_0x0a99('0x2d')]?_0x11e046[_0x0a99('0x2b')]:_0x3b7efc['model'];if(_0x4a5c58['query']['includeAll']){_0x11e046[_0x0a99('0x3b')]=[{'all':!![]}];}_0x11e046=_['merge']({},_0x11e046,_0x4a5c58[_0x0a99('0x35')]);return db['CmHopper']['find'](_0x11e046)['then'](handleEntityNotFound(_0x19774f,null))['then'](respondWithResult(_0x19774f,null))[_0x0a99('0x39')](handleError(_0x19774f,null));};exports['create']=function(_0x3e6213,_0x78cd0c){return db['CmHopper'][_0x0a99('0x3c')](_0x3e6213[_0x0a99('0x3d')],{})['then'](respondWithResult(_0x78cd0c,0xc9))[_0x0a99('0x39')](handleError(_0x78cd0c,null));};exports['update']=function(_0x3107bc,_0x278454){if(_0x3107bc['body']['id']){delete _0x3107bc[_0x0a99('0x3d')]['id'];}return db['CmHopper']['find']({'where':{'id':_0x3107bc[_0x0a99('0x3e')]['id']}})[_0x0a99('0xe')](handleEntityNotFound(_0x278454,null))[_0x0a99('0xe')](saveUpdates(_0x3107bc[_0x0a99('0x3d')],null))[_0x0a99('0xe')](respondWithResult(_0x278454,null))['catch'](handleError(_0x278454,null));};exports[_0x0a99('0x3f')]=function(_0x174298,_0x4525d1){return db[_0x0a99('0x15')][_0x0a99('0x3f')]()[_0x0a99('0xe')](respondWithResult(_0x4525d1,null))[_0x0a99('0x39')](handleError(_0x4525d1,null));};exports[_0x0a99('0x40')]=function(_0x1cd328,_0x1621d9){var _0x52c754;var _0x50e04f=_0x1cd328[_0x0a99('0x3e')]['id'];return db[_0x0a99('0x15')][_0x0a99('0x41')]({'where':{'id':_0x1cd328[_0x0a99('0x3e')]['id']}})[_0x0a99('0xe')](handleEntityNotFound(_0x1621d9,null))[_0x0a99('0xe')](function(_0x5cda7d){if(_0x5cda7d){return _0x5cda7d[_0x0a99('0x40')]()[_0x0a99('0xe')](function(_0x55fee0){return _0x55fee0;});}})[_0x0a99('0xe')](function(_0x474e8b){_0x52c754=_0x474e8b;if(_0x474e8b){if(_0x474e8b['VoiceQueueId']||_0x474e8b[_0x0a99('0x42')]){return db[_0x474e8b[_0x0a99('0x43')]?_0x0a99('0x44'):_0x0a99('0x45')][_0x0a99('0x41')]({'where':{'id':_0x474e8b[_0x0a99('0x43')]?_0x474e8b[_0x0a99('0x43')]:_0x474e8b['CampaignId']},'attributes':['id',_0x0a99('0x12')],'raw':!![]});}}})[_0x0a99('0xe')](function(_0x1e9e9d){var _0x5a6762={};if(_0x1e9e9d){_[_0x0a99('0x34')](_0x5a6762,_[_0x0a99('0x46')](_0x52c754[_0x0a99('0x47')],['createdAt',_0x0a99('0x48'),'id']));_0x5a6762[_0x0a99('0x49')]=0x15;_0x5a6762[_0x0a99('0x4a')]=_0x0a99('0x4b');_0x5a6762[_0x0a99('0x4c')]=_0x1e9e9d[_0x0a99('0x12')];_0x5a6762['membername']=_0x1cd328[_0x0a99('0x4d')]['name'];_0x5a6762[_0x0a99('0x4e')]=_0x1cd328[_0x0a99('0x4d')]['id'];_0x5a6762[_0x0a99('0x4b')]=!![];_0x5a6762[_0x0a99('0x4f')]=moment()['format'](_0x0a99('0x50'));_0x5a6762['calleridnum']=_0x52c754[_0x0a99('0x51')];_0x5a6762[_0x0a99('0x52')]=_0x52c754[_0x0a99('0x43')]?_0x0a99('0x53'):_0x0a99('0x54');return db[_0x0a99('0x55')][_0x0a99('0x41')]({'where':{'id':_0x5a6762[_0x0a99('0x56')]},'attributes':[_0x0a99('0x57'),_0x0a99('0x58')]})[_0x0a99('0xe')](function(_0x3f2e09){if(!_[_0x0a99('0x59')](_0x1621d9)&&!_['isNil'](_0x3f2e09[_0x0a99('0x57')])){_0x5a6762[_0x0a99('0x5a')]=_0x3f2e09[_0x0a99('0x57')];if(!_['isNil'](_0x3f2e09[_0x0a99('0x58')])){_0x5a6762[_0x0a99('0x5a')]+='\x20'+_0x3f2e09[_0x0a99('0x58')];}}})['finally'](function(){return db[_0x0a99('0x5b')][_0x0a99('0x3c')](_0x5a6762);});}})[_0x0a99('0xe')](function(_0x144032){return db['CmHopperAdditionalPhone'][_0x0a99('0x40')]({'where':{'CmHopperId':_0x50e04f}});})[_0x0a99('0xe')](function(){return _0x1621d9[_0x0a99('0x7')](0xcc)['end']();})['catch'](handleError(_0x1621d9,null));};exports[_0x0a99('0x5c')]=function(_0x528a5d,_0x53b1f4){var _0x5406a7=[];return db[_0x0a99('0x55')]['describe']()[_0x0a99('0xe')](function(_0x436942){_0x5406a7=_[_0x0a99('0x19')](_0x436942);return _0x528a5d[_0x0a99('0x4d')][_0x0a99('0x5d')]({'where':{'type':_0x0a99('0x5e'),'dialActive':!![],'dialMethod':_0x0a99('0x5f')},'attributes':['id','dialOrderByScheduledAt',_0x0a99('0x60')],'raw':!![]});})[_0x0a99('0xe')](function(_0x2d3b63){if(_0x2d3b63&&_0x2d3b63['length']){return db[_0x0a99('0x61')]['transaction'](function(_0x2109db){var _0x51d18a={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0a99('0x62')](_0x0a99('0x50'))},'VoiceQueueId':{'$in':_['map'](_0x2d3b63,'id')},'$or':[{'UserId':null},{'UserId':_0x528a5d[_0x0a99('0x4d')]['id']}]};var _0x4ce300={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2d3b63)[_0x0a99('0x32')]([_0x0a99('0x60'),0x0])[_0x0a99('0x14')]('id')[_0x0a99('0x63')]()},'$or':[{'UserId':null},{'UserId':_0x528a5d[_0x0a99('0x4d')]['id']}]};var _0x9b52c7={'$or':[_0x51d18a,_0x4ce300]};var _0x44aa5d=[];if(_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x64')]&&_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x64')]===_0x0a99('0x65')){if(!_[_0x0a99('0x66')](_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x67')])){_0x9b52c7['id']={'$in':_0x528a5d[_0x0a99('0x3d')][_0x0a99('0x67')]};}_0x44aa5d=[[_0x0a99('0x68'),'ASC'],['scheduledAt',_0x2d3b63[0x0]['dialOrderByScheduledAt']===_0x0a99('0x69')?_0x0a99('0x6a'):_0x0a99('0x69')],db['sequelize'][_0x0a99('0x6b')](_0x0a99('0x6c')),['id',_0x0a99('0x6a')]];}else{if(!_[_0x0a99('0x66')](_0x528a5d['body'][_0x0a99('0x67')])){_0x9b52c7['id']={'$notIn':_0x528a5d[_0x0a99('0x3d')]['hopperIds']};}_0x44aa5d=[['priority',_0x0a99('0x6a')],[_0x0a99('0x6d'),_0x2d3b63[0x0][_0x0a99('0x6e')]],db[_0x0a99('0x61')][_0x0a99('0x6b')]('COALESCE(CmHopper.UserId,\x200)\x20DESC'),['id','ASC']];}return db[_0x0a99('0x15')][_0x0a99('0x6f')]({'attributes':['id',_0x0a99('0x70'),_0x0a99('0x51'),_0x0a99('0x71')],'where':_0x9b52c7,'order':_0x44aa5d,'transaction':_0x2109db,'lock':_0x2109db[_0x0a99('0x72')][_0x0a99('0x73')],'include':[{'model':db[_0x0a99('0x55')],'as':'Contact','attributes':_0x5406a7,'include':[{'model':db[_0x0a99('0x74')],'as':_0x0a99('0x75'),'attributes':['id',_0x0a99('0x12')]}]},{'model':db['CmList'],'as':_0x0a99('0x76'),'attributes':['id','name']},{'model':db[_0x0a99('0x44')],'as':_0x0a99('0x77'),'attributes':['id',_0x0a99('0x12'),_0x0a99('0x78')]}]})['then'](function(_0x3435e3){if(_0x3435e3){return _0x3435e3[_0x0a99('0xd')]({'UserId':_0x528a5d[_0x0a99('0x4d')]['id']},{'transaction':_0x2109db});}});});}})[_0x0a99('0xe')](handleEntityNotFound(_0x53b1f4,null))[_0x0a99('0xe')](respondWithResult(_0x53b1f4,null))[_0x0a99('0x39')](handleError(_0x53b1f4,null));};exports[_0x0a99('0x79')]=function(_0x4c6a12,_0x656dd,_0x31950f){var _0x436163=[];var _0x2bae3d=_0x4c6a12['params']['id'];var _0x1a40e9=_0x4c6a12['user']['id'];return db['CmContact'][_0x0a99('0x3f')]()[_0x0a99('0xe')](function(_0x3bed6e){_0x436163=_[_0x0a99('0x19')](_0x3bed6e);return db[_0x0a99('0x61')][_0x0a99('0x7a')](function(_0x24a389){const _0x353660={'id':_0x2bae3d};return db['CmHopper'][_0x0a99('0x6f')]({'attributes':['id','scheduledat','recallme'],'where':_0x353660,'transaction':_0x24a389,'lock':_0x24a389['LOCK'][_0x0a99('0x73')],'include':[{'model':db[_0x0a99('0x55')],'as':'Contact','attributes':_0x436163,'include':[{'model':db['CmCompany'],'as':_0x0a99('0x75'),'attributes':['id',_0x0a99('0x12')]}]},{'model':db[_0x0a99('0x7b')],'as':_0x0a99('0x76'),'attributes':['id',_0x0a99('0x12')]},{'model':db[_0x0a99('0x44')],'as':_0x0a99('0x77'),'attributes':['id',_0x0a99('0x12'),_0x0a99('0x78')]}]})['then'](function(_0x51627a){if(_0x51627a){return _0x51627a[_0x0a99('0xd')]({'UserId':_0x1a40e9},{'transaction':_0x24a389});}});});})[_0x0a99('0xe')](handleEntityNotFound(_0x656dd,null))[_0x0a99('0xe')](respondWithResult(_0x656dd,null))[_0x0a99('0x39')](handleError(_0x656dd,null));};exports[_0x0a99('0x7c')]=function(_0x22b737,_0x3a6773){return _0x22b737['user']['getVoiceQueues']({'where':{'type':_0x0a99('0x5e'),'dialActive':!![],'dialMethod':_0x0a99('0x5f')},'attributes':['id'],'raw':!![]})['then'](function(_0x587442){if(_0x587442&&_0x587442[_0x0a99('0x2d')]){return db['CmHopper'][_0x0a99('0x36')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x0a99('0x62')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_['map'](_0x587442,'id')},'$or':[{'UserId':null},{'UserId':_0x22b737[_0x0a99('0x4d')]['id']}]}});}return 0x0;})['then'](function(_0x17436d){if(!_['isNil'](_0x17436d)&&_[_0x0a99('0x7d')](_0x17436d)){return _0x3a6773[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')]({'contacts':_0x17436d});}else{logger[_0x0a99('0x10')](_0x0a99('0x7e'),_0x0a99('0x7c'),0x194,_0x0a99('0x7f'));_0x3a6773[_0x0a99('0xf')](0x194);}})[_0x0a99('0x39')](handleError(_0x3a6773,null));};exports[_0x0a99('0x80')]=function(_0x2d3efa,_0xe18018){var _0x51df2a=shared[_0x0a99('0x81')];var _0x2f4d34=[];_[_0x0a99('0x14')](_0x51df2a,function(_0x25c31b){_0x2f4d34[_0x0a99('0x82')]({'id':_0x25c31b[_0x0a99('0x12')],'name':_0x25c31b[_0x0a99('0x12')],'utcOffset':_0x25c31b[_0x0a99('0x83')]});});return _0xe18018[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')]({'tz':_0x2f4d34});};exports['getTimezone']=function(_0x5607f1,_0x505a2c){var _0x59228e=shared[_0x0a99('0x81')];var _0x38932f={};if(!_[_0x0a99('0x59')](_0x59228e[_0x5607f1[_0x0a99('0x3d')]['id']]))_0x38932f=_0x59228e[_0x5607f1[_0x0a99('0x3d')]['id']];return _0x505a2c[_0x0a99('0x7')](0xc8)[_0x0a99('0x8')](_0x38932f);};
\ No newline at end of file
index bb5b589..f21a3bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['define','scheduledat','phone','priority','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x21ac84,_0x250f8c){var _0x23204e=function(_0x21ee66){while(--_0x21ee66){_0x21ac84['push'](_0x21ac84['shift']());}};_0x23204e(++_0x250f8c);}(_0xf494,0x1c6));var _0x4f49=function(_0x133956,_0x165339){_0x133956=_0x133956-0x0;var _0x29571a=_0xf494[_0x133956];return _0x29571a;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('CmHopper',attributes,{'tableName':'cm_hopper','paranoid':![],'indexes':[{'name':_0x4f49('0xc'),'fields':[_0x4f49('0xc')]},{'name':_0x4f49('0xd'),'fields':[_0x4f49('0xd')]},{'name':_0x4f49('0xe'),'fields':[_0x4f49('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc6ac=['./cmHopper.attributes','exports','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x34694a,_0x43f9c5){_0x34694a=_0x34694a-0x0;var _0x13f8f2=_0xc6ac[_0x34694a];return _0x13f8f2;};'use strict';var _=require(_0xcc6a('0x0'));var util=require(_0xcc6a('0x1'));var logger=require(_0xcc6a('0x2'))(_0xcc6a('0x3'));var moment=require(_0xcc6a('0x4'));var BPromise=require(_0xcc6a('0x5'));var rp=require(_0xcc6a('0x6'));var fs=require('fs');var path=require(_0xcc6a('0x7'));var rimraf=require(_0xcc6a('0x8'));var config=require(_0xcc6a('0x9'));var attributes=require(_0xcc6a('0xa'));module[_0xcc6a('0xb')]=function(_0x12330e,_0x197bd7){return _0x12330e['define'](_0xcc6a('0xc'),attributes,{'tableName':_0xcc6a('0xd'),'paranoid':![],'indexes':[{'name':_0xcc6a('0xe'),'fields':['scheduledat']},{'name':_0xcc6a('0xf'),'fields':[_0xcc6a('0xf')]},{'name':_0xcc6a('0x10'),'fields':[_0xcc6a('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index d7367b0..4ceec9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0fa=['sequelize','literal','`scheduledat`\x20>=\x20','\x22%s\x22','format','\x20,\x201,\x20null','contactsRescheduled','CountReScheduled','GetContactRecallMe','order','LOCK','length','GetCmHopperPreview','Contact','GetContactByPhone','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','User','voicePause','List','NOW()','CmHopperHandlePreviewRecallNotifications','util','bluebird','../../mysqldb','../../config/logger','GetCmHopper','CmHopper','options','raw','where','attributes','limit','include','map','model','then','info','stringify','catch','error','message','ShowCmHopper','find','debug','CreateCmHopper','create','body','UpdateCmHopper','update','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','describe','transaction','findAll','CmContact','Agent','name','push','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','GetContactDialer','destroy','MoveContactManagedDialer','COUNT'];(function(_0x1ccca0,_0x3eb2ad){var _0x52d571=function(_0x2bf1a7){while(--_0x2bf1a7){_0x1ccca0['push'](_0x1ccca0['shift']());}};_0x52d571(++_0x3eb2ad);}(_0xc0fa,0xfa));var _0xac0f=function(_0x463a03,_0x13914f){_0x463a03=_0x463a03-0x0;var _0x5baa30=_0xc0fa[_0x463a03];return _0x5baa30;};'use strict';var _=require('lodash');var util=require(_0xac0f('0x0'));var moment=require('moment');var BPromise=require(_0xac0f('0x1'));var db=require(_0xac0f('0x2'))['db'];var logger=require(_0xac0f('0x3'))('rpc');exports[_0xac0f('0x4')]=function(_0x165a27){var _0x22b996=this;return new Promise(function(_0x4ef708,_0x584e15){return db[_0xac0f('0x5')]['findAll']({'raw':_0x165a27['options']?_0x165a27[_0xac0f('0x6')][_0xac0f('0x7')]===undefined?!![]:![]:!![],'where':_0x165a27[_0xac0f('0x6')]?_0x165a27[_0xac0f('0x6')][_0xac0f('0x8')]||null:null,'attributes':_0x165a27['options']?_0x165a27[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'limit':_0x165a27['options']?_0x165a27[_0xac0f('0x6')][_0xac0f('0xa')]||null:null,'include':_0x165a27[_0xac0f('0x6')]?_0x165a27['options'][_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x165a27[_0xac0f('0x6')][_0xac0f('0xb')],function(_0x32652){return{'model':db[_0x32652[_0xac0f('0xd')]],'as':_0x32652['as'],'attributes':_0x32652['attributes'],'include':_0x32652['include']?_[_0xac0f('0xc')](_0x32652[_0xac0f('0xb')],function(_0x45cccf){return{'model':db[_0x45cccf[_0xac0f('0xd')]],'as':_0x45cccf['as'],'attributes':_0x45cccf['attributes'],'include':_0x45cccf[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x45cccf[_0xac0f('0xb')],function(_0x5f11f5){return{'model':db[_0x5f11f5['model']],'as':_0x5f11f5['as'],'attributes':_0x5f11f5['attributes']};}):[]};}):[]};}):[]:[]})[_0xac0f('0xe')](function(_0xc5d02a){logger[_0xac0f('0xf')](_0xac0f('0x4'),_0x165a27);logger['debug']('GetCmHopper',_0x165a27,JSON[_0xac0f('0x10')](_0xc5d02a));_0x4ef708(_0xc5d02a);})[_0xac0f('0x11')](function(_0x3bc82c){logger[_0xac0f('0x12')]('GetCmHopper',_0x3bc82c['message'],_0x165a27);_0x584e15(_0x22b996['error'](0x1f4,_0x3bc82c[_0xac0f('0x13')]));});});};exports[_0xac0f('0x14')]=function(_0x1d5281){var _0x7f3c49=this;return new Promise(function(_0x3ab42b,_0x12d935){return db[_0xac0f('0x5')][_0xac0f('0x15')]({'raw':_0x1d5281[_0xac0f('0x6')]?_0x1d5281[_0xac0f('0x6')][_0xac0f('0x7')]===undefined?!![]:![]:!![],'where':_0x1d5281[_0xac0f('0x6')]?_0x1d5281[_0xac0f('0x6')][_0xac0f('0x8')]||null:null,'attributes':_0x1d5281[_0xac0f('0x6')]?_0x1d5281[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'include':_0x1d5281[_0xac0f('0x6')]?_0x1d5281['options'][_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x1d5281[_0xac0f('0x6')][_0xac0f('0xb')],function(_0x2559b3){return{'model':db[_0x2559b3[_0xac0f('0xd')]],'as':_0x2559b3['as'],'attributes':_0x2559b3['attributes'],'include':_0x2559b3[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x2559b3[_0xac0f('0xb')],function(_0x30dd53){return{'model':db[_0x30dd53[_0xac0f('0xd')]],'as':_0x30dd53['as'],'attributes':_0x30dd53[_0xac0f('0x9')],'include':_0x30dd53[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x30dd53[_0xac0f('0xb')],function(_0x4d32ed){return{'model':db[_0x4d32ed['model']],'as':_0x4d32ed['as'],'attributes':_0x4d32ed[_0xac0f('0x9')]};}):[]};}):[]};}):[]:[]})[_0xac0f('0xe')](function(_0x432734){logger['info'](_0xac0f('0x14'),_0x1d5281);logger[_0xac0f('0x16')]('ShowCmHopper',_0x1d5281,JSON[_0xac0f('0x10')](_0x432734));_0x3ab42b(_0x432734);})[_0xac0f('0x11')](function(_0x378424){logger['error'](_0xac0f('0x14'),_0x378424[_0xac0f('0x13')],_0x1d5281);_0x12d935(_0x7f3c49[_0xac0f('0x12')](0x1f4,_0x378424[_0xac0f('0x13')]));});});};exports[_0xac0f('0x17')]=function(_0x26f5af){var _0x4847a7=this;return new Promise(function(_0x356194,_0x49bf75){return db['CmHopper'][_0xac0f('0x18')](_0x26f5af[_0xac0f('0x19')],{'raw':_0x26f5af[_0xac0f('0x6')]?_0x26f5af[_0xac0f('0x6')][_0xac0f('0x7')]===undefined?!![]:![]:!![]})[_0xac0f('0xe')](function(_0x5d9983){logger[_0xac0f('0xf')](_0xac0f('0x17'),_0x26f5af);logger[_0xac0f('0x16')](_0xac0f('0x17'),_0x26f5af,JSON[_0xac0f('0x10')](_0x5d9983));_0x356194(_0x5d9983);})['catch'](function(_0x1f750e){logger[_0xac0f('0x12')](_0xac0f('0x17'),_0x1f750e['message'],_0x26f5af);_0x49bf75(_0x4847a7[_0xac0f('0x12')](0x1f4,_0x1f750e['message']));});});};exports[_0xac0f('0x1a')]=function(_0xab1836){var _0x3f37a0=this;return new Promise(function(_0x15054a,_0x27cd2d){return db[_0xac0f('0x5')][_0xac0f('0x1b')](_0xab1836[_0xac0f('0x19')],{'raw':_0xab1836[_0xac0f('0x6')]?_0xab1836[_0xac0f('0x6')][_0xac0f('0x7')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xab1836['options']?_0xab1836['options'][_0xac0f('0x8')]||null:null,'attributes':_0xab1836[_0xac0f('0x6')]?_0xab1836[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'limit':_0xab1836[_0xac0f('0x6')]?_0xab1836[_0xac0f('0x6')][_0xac0f('0xa')]||null:null})[_0xac0f('0xe')](function(_0x4e3ac6){logger[_0xac0f('0xf')](_0xac0f('0x1a'),_0xab1836);logger[_0xac0f('0xf')](_0xac0f('0x1c'),JSON[_0xac0f('0x10')](_0xab1836[_0xac0f('0x6')][_0xac0f('0x8')]),_0xab1836[_0xac0f('0x19')][_0xac0f('0x1d')]);logger[_0xac0f('0x16')](_0xac0f('0x1a'),_0xab1836,JSON[_0xac0f('0x10')](_0x4e3ac6));_0x15054a(_0x4e3ac6);})[_0xac0f('0x11')](function(_0x179642){logger['error']('UpdateCmHopper',_0x179642[_0xac0f('0x13')],_0xab1836);_0x27cd2d(_0x3f37a0[_0xac0f('0x12')](0x1f4,_0x179642[_0xac0f('0x13')]));});});};exports['DestroyCmHopper']=function(_0x1fa886){var _0x17530c=this;return new Promise(function(_0x14f93f,_0x3c37f8){return db[_0xac0f('0x5')]['destroy']({'where':_0x1fa886[_0xac0f('0x6')]?_0x1fa886[_0xac0f('0x6')][_0xac0f('0x8')]||null:null})[_0xac0f('0xe')](function(_0x2e6291){logger['info'](_0xac0f('0x1e'),_0x1fa886);logger[_0xac0f('0x16')](_0xac0f('0x1e'),_0x1fa886,JSON['stringify'](_0x2e6291));_0x14f93f(_0x2e6291);})['catch'](function(_0x178d2f){logger[_0xac0f('0x12')](_0xac0f('0x1e'),_0x178d2f[_0xac0f('0x13')],_0x1fa886);_0x3c37f8(_0x17530c[_0xac0f('0x12')](0x1f4,_0x178d2f['message']));});});};exports['GetContactDialer']=function(_0x13b5e7){var _0x375540=this;return new Promise(function(_0x5d55ce,_0x572db4){return db['CmContact'][_0xac0f('0x1f')]()[_0xac0f('0xe')](function(_0x46b514){return db['sequelize'][_0xac0f('0x20')](function(_0x50aceb){return db['CmHopper'][_0xac0f('0x21')]({'where':_0x13b5e7['options']?_0x13b5e7['options'][_0xac0f('0x8')]||null:null,'attributes':_0x13b5e7[_0xac0f('0x6')]?_0x13b5e7[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'limit':_0x13b5e7[_0xac0f('0x6')]?_0x13b5e7[_0xac0f('0x6')][_0xac0f('0xa')]||null:null,'order':_0x13b5e7['options']?_0x13b5e7['options']['order']||null:null,'transaction':_0x50aceb,'lock':_0x50aceb['LOCK']['UPDATE'],'include':[{'model':db[_0xac0f('0x22')],'as':'Contact','attributes':_['keys'](_0x46b514)},{'model':db['User'],'as':_0xac0f('0x23'),'attributes':['id',_0xac0f('0x24'),'voicePause']}]})[_0xac0f('0xe')](function(_0x128da7){var _0x355e4f=[];var _0x2b58ee=[];for(var _0x25b67d=0x0;_0x25b67d<_0x128da7['length'];_0x25b67d+=0x1){var _0x5d87cb=_0x128da7[_0x25b67d]['UserId'];if(_0x5d87cb===null){_0x355e4f[_0xac0f('0x25')](_0x128da7[_0x25b67d]['update'](_0x13b5e7[_0xac0f('0x19')],{'transaction':_0x50aceb}));}else if(!_0x2b58ee[_0xac0f('0x26')](_0x5d87cb)){_0x2b58ee['push'](_0x5d87cb);_0x355e4f['push'](_0x128da7[_0x25b67d]['update'](_0x13b5e7[_0xac0f('0x19')],{'transaction':_0x50aceb}));}}return BPromise[_0xac0f('0x27')](_0x355e4f);});})['then'](function(_0xe6778b){logger[_0xac0f('0xf')]('GetContactDialer',_0x13b5e7);if(_0xe6778b['length']>0x0){logger[_0xac0f('0xf')](_0xac0f('0x28'),_0xe6778b[0x0][_0xac0f('0x29')]['id'],_0xe6778b[0x0][_0xac0f('0x29')]['ContactId'],_0xe6778b[0x0]['dataValues'][_0xac0f('0x1d')]);}logger[_0xac0f('0x16')](_0xac0f('0x2a'),_0x13b5e7,JSON[_0xac0f('0x10')](_0xe6778b));_0x5d55ce(_0xe6778b);})[_0xac0f('0x11')](function(_0x27503c){logger[_0xac0f('0x12')](_0xac0f('0x2a'),_0x27503c[_0xac0f('0x13')],_0x13b5e7);_0x572db4(_0x375540[_0xac0f('0x12')](0x1f4,_0x27503c[_0xac0f('0x13')]));});});});};exports['MoveContactManagedDialer']=function(_0x444ca8){var _0x5afa85=this;return new Promise(function(_0x9a2282,_0xbe3441){return db['sequelize'][_0xac0f('0x20')](function(_0x189cfb){return db['CmHopperFinal'][_0xac0f('0x18')](_0x444ca8[_0xac0f('0x19')],{'raw':_0x444ca8[_0xac0f('0x6')]?_0x444ca8['options'][_0xac0f('0x7')]===undefined?!![]:![]:!![],'transaction':_0x189cfb})[_0xac0f('0xe')](function(){logger['info']('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xac0f('0x10')](_0x444ca8[_0xac0f('0x6')][_0xac0f('0x8')]),_0x444ca8[_0xac0f('0x6')]['where'][_0xac0f('0x1d')]);return db[_0xac0f('0x5')][_0xac0f('0x2b')]({'where':_0x444ca8[_0xac0f('0x6')]?_0x444ca8['options']['where']||null:null,'transaction':_0x189cfb});});})[_0xac0f('0xe')](function(_0x58e63e){logger['info'](_0xac0f('0x2c'),_0x444ca8);logger[_0xac0f('0x16')](_0xac0f('0x2c'),_0x444ca8,JSON['stringify'](_0x58e63e));_0x9a2282(_0x58e63e);})[_0xac0f('0x11')](function(_0x2b9182){logger[_0xac0f('0x12')]('MoveContactManagedDialer',_0x2b9182[_0xac0f('0x13')],_0x444ca8);_0xbe3441(_0x5afa85['error'](0x1f4,_0x2b9182[_0xac0f('0x13')]));});});};exports['CountReScheduled']=function(_0xd434cb){var _0x1e79d8=this;return new Promise(function(_0x21571d,_0x2b546d){return db[_0xac0f('0x5')]['findAll']({'raw':_0xd434cb[_0xac0f('0x6')]?_0xd434cb['options'][_0xac0f('0x7')]===undefined?!![]:![]:!![],'where':_0xd434cb[_0xac0f('0x6')]?_0xd434cb[_0xac0f('0x6')]['where']||null:null,'attributes':[[db['sequelize']['fn'](_0xac0f('0x2d'),db['sequelize']['fn']('IF',db[_0xac0f('0x2e')][_0xac0f('0x2f')](_0xac0f('0x30')+util['format'](_0xac0f('0x31'),moment()[_0xac0f('0x32')]('YYYY-MM-DD\x20HH:mm:ss'))+_0xac0f('0x33')))),_0xac0f('0x34')]]})[_0xac0f('0xe')](function(_0x517e70){logger[_0xac0f('0xf')](_0xac0f('0x35'),_0xd434cb);logger['debug'](_0xac0f('0x35'),_0xd434cb,JSON[_0xac0f('0x10')](_0x517e70));_0x21571d(_0x517e70);})[_0xac0f('0x11')](function(_0x5e2afa){logger[_0xac0f('0x12')](_0xac0f('0x35'),_0x5e2afa['message'],_0xd434cb);_0x2b546d(_0x1e79d8['error'](0x1f4,_0x5e2afa[_0xac0f('0x13')]));});});};exports[_0xac0f('0x36')]=function(_0x3486cf){var _0xca3ae0=this;return new Promise(function(_0x44c493,_0x117e5e){return db[_0xac0f('0x22')][_0xac0f('0x1f')]()[_0xac0f('0xe')](function(){return db[_0xac0f('0x2e')]['transaction'](function(_0x48eac2){return db[_0xac0f('0x5')][_0xac0f('0x21')]({'where':_0x3486cf[_0xac0f('0x6')]?_0x3486cf['options'][_0xac0f('0x8')]||null:null,'attributes':_0x3486cf[_0xac0f('0x6')]?_0x3486cf[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'limit':0x1,'order':_0x3486cf[_0xac0f('0x6')]?_0x3486cf[_0xac0f('0x6')][_0xac0f('0x37')]||null:null,'group':db[_0xac0f('0x5')]['UserId'],'transaction':_0x48eac2,'lock':_0x48eac2[_0xac0f('0x38')]['UPDATE'],'include':_0x3486cf[_0xac0f('0x6')]?_0x3486cf[_0xac0f('0x6')][_0xac0f('0xb')]?_['map'](_0x3486cf[_0xac0f('0x6')]['include'],function(_0x3caace){return{'model':db[_0x3caace[_0xac0f('0xd')]],'as':_0x3caace['as'],'attributes':_0x3caace['attributes'],'include':_0x3caace[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x3caace[_0xac0f('0xb')],function(_0x4a2b7e){return{'model':db[_0x4a2b7e[_0xac0f('0xd')]],'as':_0x4a2b7e['as'],'attributes':_0x4a2b7e['attributes'],'include':_0x4a2b7e[_0xac0f('0xb')]?_['map'](_0x4a2b7e[_0xac0f('0xb')],function(_0x4950b9){return{'model':db[_0x4950b9[_0xac0f('0xd')]],'as':_0x4950b9['as'],'attributes':_0x4950b9['attributes']};}):[]};}):[]};}):[]:[]})[_0xac0f('0xe')](function(_0xf94619){var _0x5eeb2c=[];for(var _0xdcd38b=0x0;_0xdcd38b<_0xf94619[_0xac0f('0x39')];_0xdcd38b+=0x1){_0x5eeb2c[_0xac0f('0x25')](_0xf94619[_0xdcd38b][_0xac0f('0x1b')](_0x3486cf[_0xac0f('0x19')],{'transaction':_0x48eac2}));}return BPromise[_0xac0f('0x27')](_0x5eeb2c);});})['then'](function(_0x285b9a){logger['info']('GetContactRecallMe',_0x3486cf);logger['debug'](_0xac0f('0x36'),_0x3486cf,JSON[_0xac0f('0x10')](_0x285b9a));_0x44c493(_0x285b9a);})[_0xac0f('0x11')](function(_0x33d18b){logger[_0xac0f('0x12')](_0xac0f('0x36'),_0x33d18b[_0xac0f('0x13')],_0x3486cf);_0x117e5e(_0xca3ae0[_0xac0f('0x12')](0x1f4,_0x33d18b[_0xac0f('0x13')]));});});});};exports[_0xac0f('0x3a')]=function(_0x52c1cb){var _0x4e698c=this;return new Promise(function(_0x1137c0,_0x14adf2){db[_0xac0f('0x22')]['describe']()['then'](function(_0x4a22d6){return db['CmHopper'][_0xac0f('0x21')]({'raw':_0x52c1cb[_0xac0f('0x6')]?_0x52c1cb['options'][_0xac0f('0x7')]===undefined?!![]:![]:!![],'where':_0x52c1cb[_0xac0f('0x6')]?_0x52c1cb[_0xac0f('0x6')][_0xac0f('0x8')]||null:null,'attributes':_0x52c1cb['options']?_0x52c1cb[_0xac0f('0x6')][_0xac0f('0x9')]||null:null,'limit':_0x52c1cb[_0xac0f('0x6')]?_0x52c1cb['options'][_0xac0f('0xa')]||null:null,'include':_0x52c1cb[_0xac0f('0x6')]?_0x52c1cb[_0xac0f('0x6')][_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x52c1cb[_0xac0f('0x6')]['include'],function(_0x112ffe){return{'model':db[_0x112ffe[_0xac0f('0xd')]],'as':_0x112ffe['as'],'attributes':_0x112ffe['as']===_0xac0f('0x3b')?_['keys'](_0x4a22d6):_0x112ffe['attributes'],'include':_0x112ffe[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x112ffe[_0xac0f('0xb')],function(_0x3372f1){return{'model':db[_0x3372f1[_0xac0f('0xd')]],'as':_0x3372f1['as'],'attributes':_0x3372f1[_0xac0f('0x9')],'include':_0x3372f1[_0xac0f('0xb')]?_[_0xac0f('0xc')](_0x3372f1[_0xac0f('0xb')],function(_0xb0c70d){return{'model':db[_0xb0c70d[_0xac0f('0xd')]],'as':_0xb0c70d['as'],'attributes':_0xb0c70d['attributes']};}):[]};}):[]};}):[]:[]})[_0xac0f('0xe')](function(_0x595610){logger[_0xac0f('0xf')](_0xac0f('0x4'),_0x52c1cb);logger[_0xac0f('0x16')](_0xac0f('0x4'),_0x52c1cb,JSON['stringify'](_0x595610));_0x1137c0(_0x595610);})['catch'](function(_0x3ae44c){logger[_0xac0f('0x12')](_0xac0f('0x4'),_0x3ae44c[_0xac0f('0x13')],_0x52c1cb);_0x14adf2(_0x4e698c[_0xac0f('0x12')](0x1f4,_0x3ae44c['message']));});});});};exports[_0xac0f('0x3c')]=function(_0x6717e5){var _0x223e0a=this;return new Promise(function(_0x145bf3,_0xcaa1e4){return db[_0xac0f('0x22')]['findOne']({'raw':!![],'where':{'phone':_0x6717e5[_0xac0f('0x6')][_0xac0f('0x8')][_0xac0f('0x3d')]},'attributes':['id',_0xac0f('0x3e')],'order':[['id',_0xac0f('0x3f')]]})['then'](function(_0x181886){logger[_0xac0f('0xf')]('getContactByPhone',_0x6717e5);logger[_0xac0f('0x16')](_0xac0f('0x40'),_0x6717e5,JSON['stringify'](_0x181886));_0x145bf3(_0x181886);})['catch'](function(_0xad2ac6){logger[_0xac0f('0x12')](_0xac0f('0x40'),_0xad2ac6['message'],_0x6717e5);_0xcaa1e4(_0x223e0a[_0xac0f('0x12')](0x1f4,_0xad2ac6[_0xac0f('0x13')]));});});};exports[_0xac0f('0x41')]=function(_0xf19616){var _0x468536=this;return new Promise(function(_0x46ffa7,_0x5bbf46){return db[_0xac0f('0x2e')]['transaction'](function(_0x2d18f3){var _0x3af094=_0xf19616[_0xac0f('0x6')]&&_0xf19616[_0xac0f('0x6')]['where']?_0xf19616[_0xac0f('0x6')][_0xac0f('0x8')]:{};return db['CmHopper'][_0xac0f('0x1b')](_0xf19616[_0xac0f('0x19')],{'where':_0x3af094,'transaction':_0x2d18f3})[_0xac0f('0xe')](function(_0x5b73b6){logger['info'](_0xac0f('0x41'),_0xf19616);logger['debug'](_0xac0f('0x41'),_0xf19616,JSON['stringify'](_0x5b73b6));_0x46ffa7(_0x5b73b6);})[_0xac0f('0x11')](function(_0x49d6ad){logger['error'](_0xac0f('0x41'),_0x49d6ad[_0xac0f('0x13')],_0xf19616);_0x5bbf46(_0x468536[_0xac0f('0x12')](0x1f4,_0x49d6ad['message']));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x2c21cf){var _0x6de3b1=this;var _0x4cdbf2=_0x2c21cf[_0xac0f('0x19')][_0xac0f('0x8')]['voiceQueueIds'];var _0x20aa67=_0x2c21cf['body']['where']['interval'];var _0x1f1c58=_0x2c21cf[_0xac0f('0x19')][_0xac0f('0x8')][_0xac0f('0x42')];return new Promise(function(_0x497154,_0x285196){return db[_0xac0f('0x5')][_0xac0f('0x21')]({'where':{'voiceQueueId':{'$in':_0x4cdbf2},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db['sequelize'][_0xac0f('0x2f')](_0xac0f('0x43')+_0x20aa67+_0xac0f('0x44')),'$gt':db[_0xac0f('0x2e')][_0xac0f('0x2f')]('NOW()')}},'UserId':{'$in':_0x1f1c58}},'include':[{'model':db['CmContact'],'as':_0xac0f('0x3b')},{'model':db[_0xac0f('0x45')],'as':_0xac0f('0x23'),'attributes':['id',_0xac0f('0x24'),_0xac0f('0x46')]},{'model':db['CmList'],'as':_0xac0f('0x47')}]})[_0xac0f('0xe')](function(_0x594126){if(_0x594126[_0xac0f('0x39')]>0x0){return db['sequelize'][_0xac0f('0x20')](function(_0x4b1403){return db[_0xac0f('0x5')][_0xac0f('0x1b')]({'recallmeNotifiedDate':db[_0xac0f('0x2e')][_0xac0f('0x2f')](_0xac0f('0x48'))},{'where':{'id':{'$in':_['map'](_0x594126,'id')}},'transaction':_0x4b1403})[_0xac0f('0xe')](function(){_0x497154(_0x594126);})[_0xac0f('0x11')](function(_0x441359){logger[_0xac0f('0x12')]('CmHopperHandlePreviewRecallNotifications',_0x441359[_0xac0f('0x13')],_0x2c21cf);_0x285196(_0x6de3b1[_0xac0f('0x12')](0x1f4,_0x441359['message']));});})[_0xac0f('0x11')](function(_0x2170bf){logger[_0xac0f('0x12')](_0xac0f('0x49'),_0x2170bf[_0xac0f('0x13')],_0x2c21cf);_0x285196(_0x6de3b1['error'](0x1f4,_0x2170bf[_0xac0f('0x13')]));});}else{_0x497154(_0x594126);}});});};
\ No newline at end of file
+var _0xa71d=['CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','findAll','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetContactByPhone','findOne','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','literal','NOW()\x20+\x20INTERVAL\x20','NOW()','User','List','lodash','util','../../mysqldb','../../config/logger','rpc','GetCmHopper','options','raw','where','attributes','limit','include','map','model','then','info','stringify','error','message','ShowCmHopper','CmHopper','find','debug','create','body','CreateCmHopper','catch','UpdateCmHopper','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','sequelize','transaction','order','LOCK','UPDATE','Contact','keys','Agent','name','voicePause','length','UserId','update','includes','push','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer'];(function(_0x26dd76,_0x56d8d1){var _0x493254=function(_0x5a729a){while(--_0x5a729a){_0x26dd76['push'](_0x26dd76['shift']());}};_0x493254(++_0x56d8d1);}(_0xa71d,0xbd));var _0xda71=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0xa71d[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xda71('0x0'));var util=require(_0xda71('0x1'));var moment=require('moment');var BPromise=require('bluebird');var db=require(_0xda71('0x2'))['db'];var logger=require(_0xda71('0x3'))(_0xda71('0x4'));exports[_0xda71('0x5')]=function(_0x2e7648){var _0x2fd854=this;return new Promise(function(_0x1fdea2,_0x123a07){return db['CmHopper']['findAll']({'raw':_0x2e7648['options']?_0x2e7648[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0xa')]||null:null,'include':_0x2e7648[_0xda71('0x6')]?_0x2e7648[_0xda71('0x6')][_0xda71('0xb')]?_[_0xda71('0xc')](_0x2e7648[_0xda71('0x6')][_0xda71('0xb')],function(_0x156d41){return{'model':db[_0x156d41[_0xda71('0xd')]],'as':_0x156d41['as'],'attributes':_0x156d41[_0xda71('0x9')],'include':_0x156d41[_0xda71('0xb')]?_[_0xda71('0xc')](_0x156d41[_0xda71('0xb')],function(_0x267400){return{'model':db[_0x267400['model']],'as':_0x267400['as'],'attributes':_0x267400[_0xda71('0x9')],'include':_0x267400[_0xda71('0xb')]?_[_0xda71('0xc')](_0x267400[_0xda71('0xb')],function(_0x26c108){return{'model':db[_0x26c108[_0xda71('0xd')]],'as':_0x26c108['as'],'attributes':_0x26c108[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x593000){logger[_0xda71('0xf')]('GetCmHopper',_0x2e7648);logger['debug']('GetCmHopper',_0x2e7648,JSON[_0xda71('0x10')](_0x593000));_0x1fdea2(_0x593000);})['catch'](function(_0x4f203b){logger[_0xda71('0x11')]('GetCmHopper',_0x4f203b[_0xda71('0x12')],_0x2e7648);_0x123a07(_0x2fd854['error'](0x1f4,_0x4f203b[_0xda71('0x12')]));});});};exports[_0xda71('0x13')]=function(_0x6eb140){var _0x2ff2f3=this;return new Promise(function(_0x4a7fda,_0x419f46){return db[_0xda71('0x14')][_0xda71('0x15')]({'raw':_0x6eb140[_0xda71('0x6')]?_0x6eb140[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options'][_0xda71('0x8')]||null:null,'attributes':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options']['attributes']||null:null,'include':_0x6eb140[_0xda71('0x6')]?_0x6eb140['options'][_0xda71('0xb')]?_[_0xda71('0xc')](_0x6eb140[_0xda71('0x6')]['include'],function(_0x2baf34){return{'model':db[_0x2baf34[_0xda71('0xd')]],'as':_0x2baf34['as'],'attributes':_0x2baf34[_0xda71('0x9')],'include':_0x2baf34[_0xda71('0xb')]?_[_0xda71('0xc')](_0x2baf34[_0xda71('0xb')],function(_0xc55b58){return{'model':db[_0xc55b58[_0xda71('0xd')]],'as':_0xc55b58['as'],'attributes':_0xc55b58[_0xda71('0x9')],'include':_0xc55b58[_0xda71('0xb')]?_[_0xda71('0xc')](_0xc55b58[_0xda71('0xb')],function(_0x22fb0c){return{'model':db[_0x22fb0c[_0xda71('0xd')]],'as':_0x22fb0c['as'],'attributes':_0x22fb0c[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x1fe2fb){logger[_0xda71('0xf')](_0xda71('0x13'),_0x6eb140);logger[_0xda71('0x16')](_0xda71('0x13'),_0x6eb140,JSON[_0xda71('0x10')](_0x1fe2fb));_0x4a7fda(_0x1fe2fb);})['catch'](function(_0x238fa6){logger[_0xda71('0x11')](_0xda71('0x13'),_0x238fa6[_0xda71('0x12')],_0x6eb140);_0x419f46(_0x2ff2f3[_0xda71('0x11')](0x1f4,_0x238fa6[_0xda71('0x12')]));});});};exports['CreateCmHopper']=function(_0x5a361a){var _0x57a3be=this;return new Promise(function(_0x35abcd,_0x393d09){return db[_0xda71('0x14')][_0xda71('0x17')](_0x5a361a[_0xda71('0x18')],{'raw':_0x5a361a[_0xda71('0x6')]?_0x5a361a[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![]})[_0xda71('0xe')](function(_0x90442f){logger[_0xda71('0xf')]('CreateCmHopper',_0x5a361a);logger[_0xda71('0x16')](_0xda71('0x19'),_0x5a361a,JSON[_0xda71('0x10')](_0x90442f));_0x35abcd(_0x90442f);})[_0xda71('0x1a')](function(_0x614d17){logger[_0xda71('0x11')](_0xda71('0x19'),_0x614d17[_0xda71('0x12')],_0x5a361a);_0x393d09(_0x57a3be[_0xda71('0x11')](0x1f4,_0x614d17[_0xda71('0x12')]));});});};exports[_0xda71('0x1b')]=function(_0x5cb5f8){var _0x3eba41=this;return new Promise(function(_0x221285,_0x1758b5){return db[_0xda71('0x14')]['update'](_0x5cb5f8[_0xda71('0x18')],{'raw':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8['options'][_0xda71('0x8')]||null:null,'attributes':_0x5cb5f8['options']?_0x5cb5f8[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x5cb5f8[_0xda71('0x6')]?_0x5cb5f8[_0xda71('0x6')]['limit']||null:null})['then'](function(_0x3c6cf2){logger[_0xda71('0xf')]('UpdateCmHopper',_0x5cb5f8);logger[_0xda71('0xf')]('UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0xda71('0x10')](_0x5cb5f8['options']['where']),_0x5cb5f8[_0xda71('0x18')]['active']);logger[_0xda71('0x16')](_0xda71('0x1b'),_0x5cb5f8,JSON[_0xda71('0x10')](_0x3c6cf2));_0x221285(_0x3c6cf2);})['catch'](function(_0x464545){logger[_0xda71('0x11')](_0xda71('0x1b'),_0x464545['message'],_0x5cb5f8);_0x1758b5(_0x3eba41[_0xda71('0x11')](0x1f4,_0x464545['message']));});});};exports[_0xda71('0x1c')]=function(_0x131b06){var _0x1bccdc=this;return new Promise(function(_0x3bee70,_0x4159dd){return db['CmHopper'][_0xda71('0x1d')]({'where':_0x131b06[_0xda71('0x6')]?_0x131b06['options'][_0xda71('0x8')]||null:null})[_0xda71('0xe')](function(_0x22db30){logger[_0xda71('0xf')]('DestroyCmHopper',_0x131b06);logger[_0xda71('0x16')](_0xda71('0x1c'),_0x131b06,JSON['stringify'](_0x22db30));_0x3bee70(_0x22db30);})[_0xda71('0x1a')](function(_0x4b1067){logger[_0xda71('0x11')]('DestroyCmHopper',_0x4b1067[_0xda71('0x12')],_0x131b06);_0x4159dd(_0x1bccdc[_0xda71('0x11')](0x1f4,_0x4b1067[_0xda71('0x12')]));});});};exports[_0xda71('0x1e')]=function(_0x5111da){var _0x38a814=this;return new Promise(function(_0x1d1e7e,_0x188490){return db[_0xda71('0x1f')][_0xda71('0x20')]()[_0xda71('0xe')](function(_0x1601d6){return db[_0xda71('0x21')][_0xda71('0x22')](function(_0xa034c9){return db[_0xda71('0x14')]['findAll']({'where':_0x5111da[_0xda71('0x6')]?_0x5111da[_0xda71('0x6')]['where']||null:null,'attributes':_0x5111da[_0xda71('0x6')]?_0x5111da['options'][_0xda71('0x9')]||null:null,'limit':_0x5111da[_0xda71('0x6')]?_0x5111da['options'][_0xda71('0xa')]||null:null,'order':_0x5111da['options']?_0x5111da[_0xda71('0x6')][_0xda71('0x23')]||null:null,'transaction':_0xa034c9,'lock':_0xa034c9[_0xda71('0x24')][_0xda71('0x25')],'include':[{'model':db[_0xda71('0x1f')],'as':_0xda71('0x26'),'attributes':_[_0xda71('0x27')](_0x1601d6)},{'model':db['User'],'as':_0xda71('0x28'),'attributes':['id',_0xda71('0x29'),_0xda71('0x2a')]}]})['then'](function(_0x3e7771){var _0x25113b=[];var _0x52af35=[];for(var _0x960398=0x0;_0x960398<_0x3e7771[_0xda71('0x2b')];_0x960398+=0x1){var _0x1ab90e=_0x3e7771[_0x960398][_0xda71('0x2c')];if(_0x1ab90e===null){_0x25113b['push'](_0x3e7771[_0x960398][_0xda71('0x2d')](_0x5111da['body'],{'transaction':_0xa034c9}));}else if(!_0x52af35[_0xda71('0x2e')](_0x1ab90e)){_0x52af35[_0xda71('0x2f')](_0x1ab90e);_0x25113b[_0xda71('0x2f')](_0x3e7771[_0x960398][_0xda71('0x2d')](_0x5111da['body'],{'transaction':_0xa034c9}));}}return BPromise[_0xda71('0x30')](_0x25113b);});})[_0xda71('0xe')](function(_0x5ebbe6){logger[_0xda71('0xf')](_0xda71('0x1e'),_0x5111da);if(_0x5ebbe6['length']>0x0){logger[_0xda71('0xf')](_0xda71('0x31'),_0x5ebbe6[0x0][_0xda71('0x32')]['id'],_0x5ebbe6[0x0][_0xda71('0x32')][_0xda71('0x33')],_0x5ebbe6[0x0][_0xda71('0x32')][_0xda71('0x34')]);}logger['debug'](_0xda71('0x1e'),_0x5111da,JSON['stringify'](_0x5ebbe6));_0x1d1e7e(_0x5ebbe6);})['catch'](function(_0x5e77f7){logger['error'](_0xda71('0x1e'),_0x5e77f7['message'],_0x5111da);_0x188490(_0x38a814['error'](0x1f4,_0x5e77f7[_0xda71('0x12')]));});});});};exports[_0xda71('0x35')]=function(_0x225143){var _0x4ac4f1=this;return new Promise(function(_0x151ae4,_0x43624b){return db['sequelize'][_0xda71('0x22')](function(_0x222593){return db[_0xda71('0x36')][_0xda71('0x17')](_0x225143[_0xda71('0x18')],{'raw':_0x225143[_0xda71('0x6')]?_0x225143[_0xda71('0x6')]['raw']===undefined?!![]:![]:!![],'transaction':_0x222593})[_0xda71('0xe')](function(){logger['info'](_0xda71('0x37'),JSON[_0xda71('0x10')](_0x225143['options'][_0xda71('0x8')]),_0x225143[_0xda71('0x6')][_0xda71('0x8')]['active']);return db['CmHopper'][_0xda71('0x1d')]({'where':_0x225143[_0xda71('0x6')]?_0x225143['options']['where']||null:null,'transaction':_0x222593});});})['then'](function(_0xe2330e){logger[_0xda71('0xf')](_0xda71('0x35'),_0x225143);logger['debug'](_0xda71('0x35'),_0x225143,JSON[_0xda71('0x10')](_0xe2330e));_0x151ae4(_0xe2330e);})[_0xda71('0x1a')](function(_0x18927a){logger[_0xda71('0x11')](_0xda71('0x35'),_0x18927a[_0xda71('0x12')],_0x225143);_0x43624b(_0x4ac4f1[_0xda71('0x11')](0x1f4,_0x18927a[_0xda71('0x12')]));});});};exports[_0xda71('0x38')]=function(_0x3dbfb){var _0x4cda4f=this;return new Promise(function(_0xfa4c48,_0x5a76e9){return db[_0xda71('0x14')][_0xda71('0x39')]({'raw':_0x3dbfb[_0xda71('0x6')]?_0x3dbfb[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x3dbfb[_0xda71('0x6')]?_0x3dbfb[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':[[db[_0xda71('0x21')]['fn'](_0xda71('0x3a'),db[_0xda71('0x21')]['fn']('IF',db[_0xda71('0x21')]['literal'](_0xda71('0x3b')+util[_0xda71('0x3c')](_0xda71('0x3d'),moment()[_0xda71('0x3c')](_0xda71('0x3e')))+_0xda71('0x3f')))),_0xda71('0x40')]]})[_0xda71('0xe')](function(_0x17a1af){logger[_0xda71('0xf')](_0xda71('0x38'),_0x3dbfb);logger[_0xda71('0x16')](_0xda71('0x38'),_0x3dbfb,JSON[_0xda71('0x10')](_0x17a1af));_0xfa4c48(_0x17a1af);})['catch'](function(_0x17e8d7){logger['error'](_0xda71('0x38'),_0x17e8d7[_0xda71('0x12')],_0x3dbfb);_0x5a76e9(_0x4cda4f['error'](0x1f4,_0x17e8d7['message']));});});};exports[_0xda71('0x41')]=function(_0x3ab779){var _0x13b39b=this;return new Promise(function(_0x587eff,_0x31c1cc){return db[_0xda71('0x1f')][_0xda71('0x20')]()['then'](function(){return db['sequelize'][_0xda71('0x22')](function(_0xd5f96c){return db[_0xda71('0x14')][_0xda71('0x39')]({'where':_0x3ab779[_0xda71('0x6')]?_0x3ab779[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x3ab779[_0xda71('0x6')]?_0x3ab779[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':0x1,'order':_0x3ab779[_0xda71('0x6')]?_0x3ab779['options'][_0xda71('0x23')]||null:null,'group':db[_0xda71('0x14')][_0xda71('0x2c')],'transaction':_0xd5f96c,'lock':_0xd5f96c[_0xda71('0x24')][_0xda71('0x25')],'include':_0x3ab779['options']?_0x3ab779[_0xda71('0x6')][_0xda71('0xb')]?_[_0xda71('0xc')](_0x3ab779[_0xda71('0x6')][_0xda71('0xb')],function(_0x16e172){return{'model':db[_0x16e172[_0xda71('0xd')]],'as':_0x16e172['as'],'attributes':_0x16e172[_0xda71('0x9')],'include':_0x16e172[_0xda71('0xb')]?_[_0xda71('0xc')](_0x16e172[_0xda71('0xb')],function(_0x661ed0){return{'model':db[_0x661ed0[_0xda71('0xd')]],'as':_0x661ed0['as'],'attributes':_0x661ed0['attributes'],'include':_0x661ed0[_0xda71('0xb')]?_[_0xda71('0xc')](_0x661ed0[_0xda71('0xb')],function(_0x1fea66){return{'model':db[_0x1fea66[_0xda71('0xd')]],'as':_0x1fea66['as'],'attributes':_0x1fea66[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x5f2b2d){var _0x29eb2b=[];for(var _0x4a85af=0x0;_0x4a85af<_0x5f2b2d['length'];_0x4a85af+=0x1){_0x29eb2b[_0xda71('0x2f')](_0x5f2b2d[_0x4a85af][_0xda71('0x2d')](_0x3ab779[_0xda71('0x18')],{'transaction':_0xd5f96c}));}return BPromise[_0xda71('0x30')](_0x29eb2b);});})[_0xda71('0xe')](function(_0x501faa){logger[_0xda71('0xf')]('GetContactRecallMe',_0x3ab779);logger[_0xda71('0x16')](_0xda71('0x41'),_0x3ab779,JSON['stringify'](_0x501faa));_0x587eff(_0x501faa);})['catch'](function(_0x4bbcf8){logger['error'](_0xda71('0x41'),_0x4bbcf8['message'],_0x3ab779);_0x31c1cc(_0x13b39b[_0xda71('0x11')](0x1f4,_0x4bbcf8[_0xda71('0x12')]));});});});};exports['GetCmHopperPreview']=function(_0x4aba76){var _0x29c0ad=this;return new Promise(function(_0x2a907e,_0x98b202){db[_0xda71('0x1f')][_0xda71('0x20')]()['then'](function(_0x2b31ea){return db[_0xda71('0x14')][_0xda71('0x39')]({'raw':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x7')]===undefined?!![]:![]:!![],'where':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x8')]||null:null,'attributes':_0x4aba76[_0xda71('0x6')]?_0x4aba76[_0xda71('0x6')][_0xda71('0x9')]||null:null,'limit':_0x4aba76['options']?_0x4aba76[_0xda71('0x6')][_0xda71('0xa')]||null:null,'include':_0x4aba76['options']?_0x4aba76[_0xda71('0x6')][_0xda71('0xb')]?_['map'](_0x4aba76['options'][_0xda71('0xb')],function(_0x487863){return{'model':db[_0x487863['model']],'as':_0x487863['as'],'attributes':_0x487863['as']===_0xda71('0x26')?_[_0xda71('0x27')](_0x2b31ea):_0x487863[_0xda71('0x9')],'include':_0x487863['include']?_[_0xda71('0xc')](_0x487863[_0xda71('0xb')],function(_0x2a393b){return{'model':db[_0x2a393b[_0xda71('0xd')]],'as':_0x2a393b['as'],'attributes':_0x2a393b[_0xda71('0x9')],'include':_0x2a393b[_0xda71('0xb')]?_[_0xda71('0xc')](_0x2a393b[_0xda71('0xb')],function(_0x1302c7){return{'model':db[_0x1302c7['model']],'as':_0x1302c7['as'],'attributes':_0x1302c7[_0xda71('0x9')]};}):[]};}):[]};}):[]:[]})[_0xda71('0xe')](function(_0x28dff1){logger['info']('GetCmHopper',_0x4aba76);logger['debug'](_0xda71('0x5'),_0x4aba76,JSON[_0xda71('0x10')](_0x28dff1));_0x2a907e(_0x28dff1);})['catch'](function(_0xc45ff2){logger[_0xda71('0x11')](_0xda71('0x5'),_0xc45ff2[_0xda71('0x12')],_0x4aba76);_0x98b202(_0x29c0ad['error'](0x1f4,_0xc45ff2[_0xda71('0x12')]));});});});};exports[_0xda71('0x42')]=function(_0x235ff7){var _0x4e9e73=this;return new Promise(function(_0x36fd14,_0x378a1b){return db[_0xda71('0x1f')][_0xda71('0x43')]({'raw':!![],'where':{'phone':_0x235ff7[_0xda71('0x6')]['where']['phone']},'attributes':['id',_0xda71('0x44')],'order':[['id',_0xda71('0x45')]]})[_0xda71('0xe')](function(_0x5d4b87){logger['info']('getContactByPhone',_0x235ff7);logger[_0xda71('0x16')](_0xda71('0x46'),_0x235ff7,JSON[_0xda71('0x10')](_0x5d4b87));_0x36fd14(_0x5d4b87);})[_0xda71('0x1a')](function(_0x2d062a){logger[_0xda71('0x11')](_0xda71('0x46'),_0x2d062a[_0xda71('0x12')],_0x235ff7);_0x378a1b(_0x4e9e73[_0xda71('0x11')](0x1f4,_0x2d062a[_0xda71('0x12')]));});});};exports['ResetActiveCalls']=function(_0x4eb034){var _0x209e7d=this;return new Promise(function(_0x3a9eda,_0x4460cd){return db['sequelize']['transaction'](function(_0x40ed54){var _0x1cc937=_0x4eb034[_0xda71('0x6')]&&_0x4eb034[_0xda71('0x6')][_0xda71('0x8')]?_0x4eb034[_0xda71('0x6')][_0xda71('0x8')]:{};return db[_0xda71('0x14')][_0xda71('0x2d')](_0x4eb034[_0xda71('0x18')],{'where':_0x1cc937,'transaction':_0x40ed54})[_0xda71('0xe')](function(_0x45883a){logger[_0xda71('0xf')]('ResetActiveCalls',_0x4eb034);logger[_0xda71('0x16')]('ResetActiveCalls',_0x4eb034,JSON[_0xda71('0x10')](_0x45883a));_0x3a9eda(_0x45883a);})[_0xda71('0x1a')](function(_0x4e39da){logger[_0xda71('0x11')](_0xda71('0x47'),_0x4e39da['message'],_0x4eb034);_0x4460cd(_0x209e7d['error'](0x1f4,_0x4e39da[_0xda71('0x12')]));});});});};exports[_0xda71('0x48')]=function(_0x53f053){var _0x531529=this;var _0x41a359=_0x53f053[_0xda71('0x18')]['where'][_0xda71('0x49')];var _0x5eea96=_0x53f053['body'][_0xda71('0x8')][_0xda71('0x4a')];var _0x45bb99=_0x53f053[_0xda71('0x18')][_0xda71('0x8')][_0xda71('0x4b')];return new Promise(function(_0x3f1ff1,_0x4c85bb){return db[_0xda71('0x14')][_0xda71('0x39')]({'where':{'voiceQueueId':{'$in':_0x41a359},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4d')+_0x5eea96+'\x20MINUTE'),'$gt':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4e'))}},'UserId':{'$in':_0x45bb99}},'include':[{'model':db['CmContact'],'as':_0xda71('0x26')},{'model':db[_0xda71('0x4f')],'as':_0xda71('0x28'),'attributes':['id','name',_0xda71('0x2a')]},{'model':db['CmList'],'as':_0xda71('0x50')}]})[_0xda71('0xe')](function(_0x49a877){if(_0x49a877[_0xda71('0x2b')]>0x0){return db[_0xda71('0x21')]['transaction'](function(_0x426bef){return db[_0xda71('0x14')][_0xda71('0x2d')]({'recallmeNotifiedDate':db[_0xda71('0x21')][_0xda71('0x4c')](_0xda71('0x4e'))},{'where':{'id':{'$in':_[_0xda71('0xc')](_0x49a877,'id')}},'transaction':_0x426bef})['then'](function(){_0x3f1ff1(_0x49a877);})[_0xda71('0x1a')](function(_0x3ed2a8){logger[_0xda71('0x11')]('CmHopperHandlePreviewRecallNotifications',_0x3ed2a8[_0xda71('0x12')],_0x53f053);_0x4c85bb(_0x531529[_0xda71('0x11')](0x1f4,_0x3ed2a8[_0xda71('0x12')]));});})[_0xda71('0x1a')](function(_0x23fe0c){logger[_0xda71('0x11')](_0xda71('0x48'),_0x23fe0c[_0xda71('0x12')],_0x53f053);_0x4c85bb(_0x531529['error'](0x1f4,_0x23fe0c[_0xda71('0x12')]));});}else{_0x3f1ff1(_0x49a877);}});});};
\ No newline at end of file
index 835594f..c6902c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa121=['describe','getOpenContacts','/timezones','getTimezones','/:id','show','/:id/previewrecall','getPreviewRecall','post','create','/preview','getPreview','getTimezone','put','delete','destroy','exports','express','Router','../../components/auth/service','get','isAuthenticated','index'];(function(_0x5c5f9a,_0x5d5d85){var _0x507bc5=function(_0x228945){while(--_0x228945){_0x5c5f9a['push'](_0x5c5f9a['shift']());}};_0x507bc5(++_0x5d5d85);}(_0xa121,0x1c6));var _0x1a12=function(_0x4b0e6a,_0x2abb9c){_0x4b0e6a=_0x4b0e6a-0x0;var _0x4c5def=_0xa121[_0x4b0e6a];return _0x4c5def;};'use strict';var express=require(_0x1a12('0x0'));var router=express[_0x1a12('0x1')]();var auth=require(_0x1a12('0x2'));var controller=require('./cmHopper.controller');router[_0x1a12('0x3')]('/',auth[_0x1a12('0x4')](),controller[_0x1a12('0x5')]);router['get']('/describe',auth[_0x1a12('0x4')](),controller[_0x1a12('0x6')]);router['get']('/opencontacts',auth[_0x1a12('0x4')](),controller[_0x1a12('0x7')]);router[_0x1a12('0x3')](_0x1a12('0x8'),auth[_0x1a12('0x4')](),controller[_0x1a12('0x9')]);router[_0x1a12('0x3')](_0x1a12('0xa'),auth[_0x1a12('0x4')](),controller[_0x1a12('0xb')]);router['get'](_0x1a12('0xc'),auth['isAuthenticated'](),controller[_0x1a12('0xd')]);router[_0x1a12('0xe')]('/',auth[_0x1a12('0x4')](),controller[_0x1a12('0xf')]);router[_0x1a12('0xe')](_0x1a12('0x10'),auth[_0x1a12('0x4')](),controller[_0x1a12('0x11')]);router[_0x1a12('0xe')]('/timezone',auth[_0x1a12('0x4')](),controller[_0x1a12('0x12')]);router[_0x1a12('0x13')](_0x1a12('0xa'),auth[_0x1a12('0x4')](),controller['update']);router[_0x1a12('0x14')](_0x1a12('0xa'),auth[_0x1a12('0x4')](),controller[_0x1a12('0x15')]);module[_0x1a12('0x16')]=router;
\ No newline at end of file
+var _0x515c=['isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/timezones','/:id','show','/:id/previewrecall','post','create','/preview','getPreview','/timezone','delete','destroy','exports','express','Router','../../components/auth/service','./cmHopper.controller','get'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x515c,0xca));var _0xc515=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x515c[_0x20a584];return _0x4b41a8;};'use strict';var express=require(_0xc515('0x0'));var router=express[_0xc515('0x1')]();var auth=require(_0xc515('0x2'));var controller=require(_0xc515('0x3'));router[_0xc515('0x4')]('/',auth[_0xc515('0x5')](),controller[_0xc515('0x6')]);router[_0xc515('0x4')](_0xc515('0x7'),auth[_0xc515('0x5')](),controller[_0xc515('0x8')]);router[_0xc515('0x4')](_0xc515('0x9'),auth['isAuthenticated'](),controller[_0xc515('0xa')]);router[_0xc515('0x4')](_0xc515('0xb'),auth[_0xc515('0x5')](),controller['getTimezones']);router['get'](_0xc515('0xc'),auth[_0xc515('0x5')](),controller[_0xc515('0xd')]);router[_0xc515('0x4')](_0xc515('0xe'),auth[_0xc515('0x5')](),controller['getPreviewRecall']);router[_0xc515('0xf')]('/',auth[_0xc515('0x5')](),controller[_0xc515('0x10')]);router[_0xc515('0xf')](_0xc515('0x11'),auth[_0xc515('0x5')](),controller[_0xc515('0x12')]);router[_0xc515('0xf')](_0xc515('0x13'),auth['isAuthenticated'](),controller['getTimezone']);router['put'](_0xc515('0xc'),auth[_0xc515('0x5')](),controller['update']);router[_0xc515('0x14')]('/:id',auth['isAuthenticated'](),controller[_0xc515('0x15')]);module[_0xc515('0x16')]=router;
\ No newline at end of file
index df41002..a566635 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5d6=['format','YYYY-MM-DD\x20HH:mm:ss','sequelize','exports','INTEGER'];(function(_0x3b3f4f,_0x403216){var _0x174dbe=function(_0x30e333){while(--_0x30e333){_0x3b3f4f['push'](_0x3b3f4f['shift']());}};_0x174dbe(++_0x403216);}(_0xd5d6,0x1ab));var _0x6d5d=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0xd5d6[_0x494d1f];return _0x457b6e;};'use strict';var moment=require('moment');var Sequelize=require(_0x6d5d('0x0'));module[_0x6d5d('0x1')]={'CmHopperId':{'type':Sequelize[_0x6d5d('0x2')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x6d5d('0x3')](_0x6d5d('0x4'))},'countbusyretry':{'type':Sequelize[_0x6d5d('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x6d5d('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x6d5d('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x6d5d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x91d7=['exports','INTEGER','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','moment','sequelize'];(function(_0x13b442,_0x448c33){var _0x49d09c=function(_0x477277){while(--_0x477277){_0x13b442['push'](_0x13b442['shift']());}};_0x49d09c(++_0x448c33);}(_0x91d7,0xc6));var _0x791d=function(_0x22fbca,_0x2ac57c){_0x22fbca=_0x22fbca-0x0;var _0x5d6158=_0x91d7[_0x22fbca];return _0x5d6158;};'use strict';var moment=require(_0x791d('0x0'));var Sequelize=require(_0x791d('0x1'));module[_0x791d('0x2')]={'CmHopperId':{'type':Sequelize[_0x791d('0x3')]},'phone':{'type':Sequelize[_0x791d('0x4')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x791d('0x5')],'defaultValue':moment()[_0x791d('0x6')](_0x791d('0x7'))},'countbusyretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x791d('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index ad4d7e8..b244fcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42dd=['sendStatus','end','json','undefined','limit','count','offset','status','set','apply','reject','update','then','get','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','CmHopperAdditionalPhone','includeAll','include','rows','show','params','intersection','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x42dd,0x18b));var _0xd42d=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x42dd[_0x173441];return _0x2423a8;};'use strict';var emlformat=require(_0xd42d('0x0'));var rimraf=require(_0xd42d('0x1'));var zipdir=require(_0xd42d('0x2'));var jsonpatch=require(_0xd42d('0x3'));var rp=require(_0xd42d('0x4'));var moment=require(_0xd42d('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd42d('0x6'));var path=require(_0xd42d('0x7'));var sox=require(_0xd42d('0x8'));var csv=require('to-csv');var ejs=require(_0xd42d('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd42d('0xa'));var squel=require(_0xd42d('0xb'));var crypto=require('crypto');var jsforce=require(_0xd42d('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xd42d('0xd'));var querystring=require(_0xd42d('0xe'));var Papa=require(_0xd42d('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd42d('0x10'));var as=require(_0xd42d('0x11'));var hardwareService=require(_0xd42d('0x12'));var logger=require(_0xd42d('0x13'))(_0xd42d('0x14'));var utils=require(_0xd42d('0x15'));var config=require(_0xd42d('0x16'));var licenseUtil=require(_0xd42d('0x17'));var db=require(_0xd42d('0x18'))['db'];function respondWithStatusCode(_0x27a160,_0x2dbf38){_0x2dbf38=_0x2dbf38||0xcc;return function(_0x303841){if(_0x303841){return _0x27a160[_0xd42d('0x19')](_0x2dbf38);}return _0x27a160['status'](_0x2dbf38)[_0xd42d('0x1a')]();};}function respondWithResult(_0x21701e,_0x13d039){_0x13d039=_0x13d039||0xc8;return function(_0x532179){if(_0x532179){return _0x21701e['status'](_0x13d039)[_0xd42d('0x1b')](_0x532179);}};}function respondWithFilteredResult(_0x119667,_0x5ebe58){return function(_0x577872){if(_0x577872){var _0xa0421b=typeof _0x5ebe58['offset']===_0xd42d('0x1c')&&typeof _0x5ebe58[_0xd42d('0x1d')]===_0xd42d('0x1c');var _0x2ae7b3=_0x577872['count'];var _0x6840b9=_0xa0421b?0x0:_0x5ebe58['offset'];var _0x325f63=_0xa0421b?_0x577872[_0xd42d('0x1e')]:_0x5ebe58[_0xd42d('0x1f')]+_0x5ebe58[_0xd42d('0x1d')];var _0x2336e8;if(_0x325f63>=_0x2ae7b3){_0x325f63=_0x2ae7b3;_0x2336e8=0xc8;}else{_0x2336e8=0xce;}_0x119667[_0xd42d('0x20')](_0x2336e8);return _0x119667[_0xd42d('0x21')]('Content-Range',_0x6840b9+'-'+_0x325f63+'/'+_0x2ae7b3)[_0xd42d('0x1b')](_0x577872);}return null;};}function patchUpdates(_0x304d81){return function(_0x144999){try{jsonpatch[_0xd42d('0x22')](_0x144999,_0x304d81,!![]);}catch(_0x1dd5ed){return BPromise[_0xd42d('0x23')](_0x1dd5ed);}return _0x144999['save']();};}function saveUpdates(_0x418076,_0x3a1ba4){return function(_0x4ea08c){if(_0x4ea08c){return _0x4ea08c[_0xd42d('0x24')](_0x418076)['then'](function(_0x3a7f27){return _0x3a7f27;});}return null;};}function removeEntity(_0x39b295,_0x504fec){return function(_0x833131){if(_0x833131){return _0x833131['destroy']()[_0xd42d('0x25')](function(){var _0xc767f1=_0x833131[_0xd42d('0x26')]({'plain':!![]});var _0x2b2b76='CmHopperAdditionalPhones';return db[_0xd42d('0x27')]['destroy']({'where':{'type':_0x2b2b76,'resourceId':_0xc767f1['id']}})['then'](function(){return _0x833131;});})[_0xd42d('0x25')](function(){_0x39b295[_0xd42d('0x20')](0xcc)[_0xd42d('0x1a')]();});}};}function handleEntityNotFound(_0x5f0fbe,_0x445760){return function(_0x2bd6c2){if(!_0x2bd6c2){_0x5f0fbe['sendStatus'](0x194);}return _0x2bd6c2;};}function handleError(_0x1ec00e,_0x46d9f1){_0x46d9f1=_0x46d9f1||0x1f4;return function(_0x2c2bc7){logger[_0xd42d('0x28')](_0x2c2bc7[_0xd42d('0x29')]);if(_0x2c2bc7[_0xd42d('0x2a')]){delete _0x2c2bc7[_0xd42d('0x2a')];}_0x1ec00e[_0xd42d('0x20')](_0x46d9f1)[_0xd42d('0x2b')](_0x2c2bc7);};}exports[_0xd42d('0x2c')]=function(_0x408616,_0x5809ed){var _0x3cef46={},_0x34cd23={},_0x2de68e={'count':0x0,'rows':[]};var _0x52989d=_[_0xd42d('0x2d')](db['CmHopperAdditionalPhone'][_0xd42d('0x2e')],function(_0x330b6f){return{'name':_0x330b6f[_0xd42d('0x2f')],'type':_0x330b6f[_0xd42d('0x30')][_0xd42d('0x31')]};});_0x34cd23[_0xd42d('0x32')]=_['map'](_0x52989d,_0xd42d('0x2a'));_0x34cd23[_0xd42d('0x33')]=_[_0xd42d('0x34')](_0x408616['query']);_0x34cd23[_0xd42d('0x35')]=_['intersection'](_0x34cd23[_0xd42d('0x32')],_0x34cd23[_0xd42d('0x33')]);_0x3cef46[_0xd42d('0x36')]=_['intersection'](_0x34cd23[_0xd42d('0x32')],qs[_0xd42d('0x37')](_0x408616['query'][_0xd42d('0x37')]));_0x3cef46[_0xd42d('0x36')]=_0x3cef46[_0xd42d('0x36')][_0xd42d('0x38')]?_0x3cef46[_0xd42d('0x36')]:_0x34cd23[_0xd42d('0x32')];if(!_0x408616[_0xd42d('0x33')][_0xd42d('0x39')](_0xd42d('0x3a'))){_0x3cef46['limit']=qs[_0xd42d('0x1d')](_0x408616[_0xd42d('0x33')][_0xd42d('0x1d')]);_0x3cef46['offset']=qs[_0xd42d('0x1f')](_0x408616[_0xd42d('0x33')][_0xd42d('0x1f')]);}_0x3cef46[_0xd42d('0x3b')]=qs[_0xd42d('0x3c')](_0x408616[_0xd42d('0x33')][_0xd42d('0x3c')]);_0x3cef46[_0xd42d('0x3d')]=qs['filters'](_[_0xd42d('0x3e')](_0x408616[_0xd42d('0x33')],_0x34cd23['filters']),_0x52989d);if(_0x408616[_0xd42d('0x33')][_0xd42d('0x3f')]){_0x3cef46[_0xd42d('0x3d')]=_[_0xd42d('0x40')](_0x3cef46[_0xd42d('0x3d')],{'$or':_[_0xd42d('0x2d')](_0x52989d,function(_0x589f90){if(_0x589f90[_0xd42d('0x30')]!=='VIRTUAL'){var _0xbd69dc={};_0xbd69dc[_0x589f90[_0xd42d('0x2a')]]={'$like':'%'+_0x408616[_0xd42d('0x33')][_0xd42d('0x3f')]+'%'};return _0xbd69dc;}})});}_0x3cef46=_['merge']({},_0x3cef46,_0x408616['options']);var _0x4d8edf={'where':_0x3cef46[_0xd42d('0x3d')]};return db[_0xd42d('0x41')]['count'](_0x4d8edf)[_0xd42d('0x25')](function(_0x4d69e4){_0x2de68e['count']=_0x4d69e4;if(_0x408616[_0xd42d('0x33')][_0xd42d('0x42')]){_0x3cef46[_0xd42d('0x43')]=[{'all':!![]}];}return db[_0xd42d('0x41')]['findAll'](_0x3cef46);})['then'](function(_0x18b13b){_0x2de68e[_0xd42d('0x44')]=_0x18b13b;return _0x2de68e;})['then'](respondWithFilteredResult(_0x5809ed,_0x3cef46))['catch'](handleError(_0x5809ed,null));};exports[_0xd42d('0x45')]=function(_0x4e7158,_0x1d10b0){var _0x437eb3={'raw':!![],'where':{'id':_0x4e7158[_0xd42d('0x46')]['id']}},_0x19c690={};_0x19c690[_0xd42d('0x32')]=_[_0xd42d('0x34')](db[_0xd42d('0x41')]['rawAttributes']);_0x19c690[_0xd42d('0x33')]=_[_0xd42d('0x34')](_0x4e7158[_0xd42d('0x33')]);_0x19c690[_0xd42d('0x35')]=_[_0xd42d('0x47')](_0x19c690[_0xd42d('0x32')],_0x19c690[_0xd42d('0x33')]);_0x437eb3[_0xd42d('0x36')]=_[_0xd42d('0x47')](_0x19c690['model'],qs[_0xd42d('0x37')](_0x4e7158['query']['fields']));_0x437eb3[_0xd42d('0x36')]=_0x437eb3[_0xd42d('0x36')][_0xd42d('0x38')]?_0x437eb3[_0xd42d('0x36')]:_0x19c690['model'];if(_0x4e7158[_0xd42d('0x33')]['includeAll']){_0x437eb3[_0xd42d('0x43')]=[{'all':!![]}];}_0x437eb3=_[_0xd42d('0x40')]({},_0x437eb3,_0x4e7158[_0xd42d('0x48')]);return db[_0xd42d('0x41')][_0xd42d('0x49')](_0x437eb3)[_0xd42d('0x25')](handleEntityNotFound(_0x1d10b0,null))[_0xd42d('0x25')](respondWithResult(_0x1d10b0,null))[_0xd42d('0x4a')](handleError(_0x1d10b0,null));};exports[_0xd42d('0x4b')]=function(_0xdd32fe,_0x1d5a67){return db[_0xd42d('0x41')][_0xd42d('0x4b')](_0xdd32fe[_0xd42d('0x4c')],{})[_0xd42d('0x25')](function(_0x5ea7bf){var _0x4e8f79=_0xdd32fe[_0xd42d('0x4d')][_0xd42d('0x26')]({'plain':!![]});if(!_0x4e8f79)throw new Error(_0xd42d('0x4e'));if(_0x4e8f79[_0xd42d('0x4f')]==='user'){var _0x6119c=_0x5ea7bf[_0xd42d('0x26')]({'plain':!![]});var _0xbe126c='CmHopperAdditionalPhones';return db['UserProfileSection']['find']({'where':{'name':_0xbe126c,'userProfileId':_0x4e8f79[_0xd42d('0x50')]},'raw':!![]})[_0xd42d('0x25')](function(_0x53bbfe){if(_0x53bbfe&&_0x53bbfe[_0xd42d('0x51')]===0x0){return db['UserProfileResource'][_0xd42d('0x4b')]({'name':_0x6119c[_0xd42d('0x2a')],'resourceId':_0x6119c['id'],'type':_0x53bbfe[_0xd42d('0x2a')],'sectionId':_0x53bbfe['id']},{})[_0xd42d('0x25')](function(){return _0x5ea7bf;});}else{return _0x5ea7bf;}})['catch'](function(_0x33290e){logger['error'](_0xd42d('0x52'),_0x33290e);throw _0x33290e;});}return _0x5ea7bf;})['then'](respondWithResult(_0x1d5a67,0xc9))[_0xd42d('0x4a')](handleError(_0x1d5a67,null));};exports[_0xd42d('0x24')]=function(_0x50731a,_0x13d025){if(_0x50731a[_0xd42d('0x4c')]['id']){delete _0x50731a[_0xd42d('0x4c')]['id'];}return db[_0xd42d('0x41')]['find']({'where':{'id':_0x50731a['params']['id']}})['then'](handleEntityNotFound(_0x13d025,null))[_0xd42d('0x25')](saveUpdates(_0x50731a[_0xd42d('0x4c')],null))[_0xd42d('0x25')](respondWithResult(_0x13d025,null))[_0xd42d('0x4a')](handleError(_0x13d025,null));};exports[_0xd42d('0x53')]=function(_0xc70104,_0x3a0e99){return db['CmHopperAdditionalPhone'][_0xd42d('0x49')]({'where':{'id':_0xc70104['params']['id']}})[_0xd42d('0x25')](handleEntityNotFound(_0x3a0e99,null))['then'](removeEntity(_0x3a0e99,null))[_0xd42d('0x4a')](handleError(_0x3a0e99,null));};
\ No newline at end of file
+var _0x36fa=['request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/license/util','end','status','json','limit','undefined','offset','count','apply','then','destroy','get','CmHopperAdditionalPhones','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','CmHopperAdditionalPhone','includeAll','include','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x36fa,0xf5));var _0xa36f=function(_0x5c809a,_0x3d5bc9){_0x5c809a=_0x5c809a-0x0;var _0x41def9=_0x36fa[_0x5c809a];return _0x41def9;};'use strict';var emlformat=require(_0xa36f('0x0'));var rimraf=require(_0xa36f('0x1'));var zipdir=require(_0xa36f('0x2'));var jsonpatch=require(_0xa36f('0x3'));var rp=require(_0xa36f('0x4'));var moment=require('moment');var BPromise=require(_0xa36f('0x5'));var Mustache=require(_0xa36f('0x6'));var util=require(_0xa36f('0x7'));var path=require(_0xa36f('0x8'));var sox=require(_0xa36f('0x9'));var csv=require(_0xa36f('0xa'));var ejs=require(_0xa36f('0xb'));var fs=require('fs');var fs_extra=require(_0xa36f('0xc'));var _=require(_0xa36f('0xd'));var squel=require('squel');var crypto=require(_0xa36f('0xe'));var jsforce=require(_0xa36f('0xf'));var deskjs=require(_0xa36f('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa36f('0x11'));var Papa=require('papaparse');var Redis=require(_0xa36f('0x12'));var authService=require(_0xa36f('0x13'));var qs=require(_0xa36f('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa36f('0x15'));var logger=require(_0xa36f('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xa36f('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x955fe5,_0x3230a5){_0x3230a5=_0x3230a5||0xcc;return function(_0x16f8d0){if(_0x16f8d0){return _0x955fe5['sendStatus'](_0x3230a5);}return _0x955fe5['status'](_0x3230a5)[_0xa36f('0x18')]();};}function respondWithResult(_0x35655f,_0x4dbf60){_0x4dbf60=_0x4dbf60||0xc8;return function(_0x15de9d){if(_0x15de9d){return _0x35655f[_0xa36f('0x19')](_0x4dbf60)[_0xa36f('0x1a')](_0x15de9d);}};}function respondWithFilteredResult(_0x40acdd,_0x5a61e1){return function(_0x222277){if(_0x222277){var _0x5a731f=typeof _0x5a61e1['offset']==='undefined'&&typeof _0x5a61e1[_0xa36f('0x1b')]===_0xa36f('0x1c');var _0x99640a=_0x222277['count'];var _0x1d9f77=_0x5a731f?0x0:_0x5a61e1[_0xa36f('0x1d')];var _0x3097f8=_0x5a731f?_0x222277[_0xa36f('0x1e')]:_0x5a61e1[_0xa36f('0x1d')]+_0x5a61e1[_0xa36f('0x1b')];var _0x3ccd7d;if(_0x3097f8>=_0x99640a){_0x3097f8=_0x99640a;_0x3ccd7d=0xc8;}else{_0x3ccd7d=0xce;}_0x40acdd['status'](_0x3ccd7d);return _0x40acdd['set']('Content-Range',_0x1d9f77+'-'+_0x3097f8+'/'+_0x99640a)[_0xa36f('0x1a')](_0x222277);}return null;};}function patchUpdates(_0xb981a9){return function(_0x3c809){try{jsonpatch[_0xa36f('0x1f')](_0x3c809,_0xb981a9,!![]);}catch(_0x1d39c7){return BPromise['reject'](_0x1d39c7);}return _0x3c809['save']();};}function saveUpdates(_0x213ccc,_0x56c17b){return function(_0x318599){if(_0x318599){return _0x318599['update'](_0x213ccc)[_0xa36f('0x20')](function(_0x23911c){return _0x23911c;});}return null;};}function removeEntity(_0x2b4b9f,_0x8666cd){return function(_0xeb45b1){if(_0xeb45b1){return _0xeb45b1[_0xa36f('0x21')]()['then'](function(){var _0x2cff33=_0xeb45b1[_0xa36f('0x22')]({'plain':!![]});var _0x4f124f=_0xa36f('0x23');return db['UserProfileResource']['destroy']({'where':{'type':_0x4f124f,'resourceId':_0x2cff33['id']}})['then'](function(){return _0xeb45b1;});})[_0xa36f('0x20')](function(){_0x2b4b9f[_0xa36f('0x19')](0xcc)[_0xa36f('0x18')]();});}};}function handleEntityNotFound(_0x1e3d27,_0x5a5ffa){return function(_0x40b579){if(!_0x40b579){_0x1e3d27[_0xa36f('0x24')](0x194);}return _0x40b579;};}function handleError(_0x38850b,_0x397e8c){_0x397e8c=_0x397e8c||0x1f4;return function(_0x4be6f7){logger[_0xa36f('0x25')](_0x4be6f7[_0xa36f('0x26')]);if(_0x4be6f7[_0xa36f('0x27')]){delete _0x4be6f7[_0xa36f('0x27')];}_0x38850b[_0xa36f('0x19')](_0x397e8c)[_0xa36f('0x28')](_0x4be6f7);};}exports[_0xa36f('0x29')]=function(_0x504168,_0x43df71){var _0x3b7b44={},_0x33eaa5={},_0x52752f={'count':0x0,'rows':[]};var _0x35405b=_[_0xa36f('0x2a')](db['CmHopperAdditionalPhone'][_0xa36f('0x2b')],function(_0x482047){return{'name':_0x482047[_0xa36f('0x2c')],'type':_0x482047[_0xa36f('0x2d')][_0xa36f('0x2e')]};});_0x33eaa5[_0xa36f('0x2f')]=_[_0xa36f('0x2a')](_0x35405b,_0xa36f('0x27'));_0x33eaa5[_0xa36f('0x30')]=_[_0xa36f('0x31')](_0x504168[_0xa36f('0x30')]);_0x33eaa5['filters']=_[_0xa36f('0x32')](_0x33eaa5[_0xa36f('0x2f')],_0x33eaa5[_0xa36f('0x30')]);_0x3b7b44[_0xa36f('0x33')]=_[_0xa36f('0x32')](_0x33eaa5[_0xa36f('0x2f')],qs[_0xa36f('0x34')](_0x504168[_0xa36f('0x30')][_0xa36f('0x34')]));_0x3b7b44[_0xa36f('0x33')]=_0x3b7b44['attributes'][_0xa36f('0x35')]?_0x3b7b44[_0xa36f('0x33')]:_0x33eaa5[_0xa36f('0x2f')];if(!_0x504168[_0xa36f('0x30')][_0xa36f('0x36')](_0xa36f('0x37'))){_0x3b7b44[_0xa36f('0x1b')]=qs['limit'](_0x504168[_0xa36f('0x30')]['limit']);_0x3b7b44[_0xa36f('0x1d')]=qs[_0xa36f('0x1d')](_0x504168['query'][_0xa36f('0x1d')]);}_0x3b7b44[_0xa36f('0x38')]=qs['sort'](_0x504168['query'][_0xa36f('0x39')]);_0x3b7b44[_0xa36f('0x3a')]=qs[_0xa36f('0x3b')](_[_0xa36f('0x3c')](_0x504168[_0xa36f('0x30')],_0x33eaa5[_0xa36f('0x3b')]),_0x35405b);if(_0x504168[_0xa36f('0x30')][_0xa36f('0x3d')]){_0x3b7b44[_0xa36f('0x3a')]=_['merge'](_0x3b7b44['where'],{'$or':_[_0xa36f('0x2a')](_0x35405b,function(_0xe2c507){if(_0xe2c507[_0xa36f('0x2d')]!==_0xa36f('0x3e')){var _0x1a4f07={};_0x1a4f07[_0xe2c507[_0xa36f('0x27')]]={'$like':'%'+_0x504168[_0xa36f('0x30')][_0xa36f('0x3d')]+'%'};return _0x1a4f07;}})});}_0x3b7b44=_[_0xa36f('0x3f')]({},_0x3b7b44,_0x504168[_0xa36f('0x40')]);var _0x2909bf={'where':_0x3b7b44[_0xa36f('0x3a')]};return db[_0xa36f('0x41')][_0xa36f('0x1e')](_0x2909bf)[_0xa36f('0x20')](function(_0xd54014){_0x52752f['count']=_0xd54014;if(_0x504168[_0xa36f('0x30')][_0xa36f('0x42')]){_0x3b7b44[_0xa36f('0x43')]=[{'all':!![]}];}return db[_0xa36f('0x41')][_0xa36f('0x44')](_0x3b7b44);})['then'](function(_0x1af9ac){_0x52752f[_0xa36f('0x45')]=_0x1af9ac;return _0x52752f;})[_0xa36f('0x20')](respondWithFilteredResult(_0x43df71,_0x3b7b44))[_0xa36f('0x46')](handleError(_0x43df71,null));};exports[_0xa36f('0x47')]=function(_0x14c297,_0xa1e97b){var _0x1ab343={'raw':!![],'where':{'id':_0x14c297[_0xa36f('0x48')]['id']}},_0x2d987a={};_0x2d987a['model']=_['keys'](db['CmHopperAdditionalPhone'][_0xa36f('0x2b')]);_0x2d987a[_0xa36f('0x30')]=_['keys'](_0x14c297['query']);_0x2d987a['filters']=_['intersection'](_0x2d987a[_0xa36f('0x2f')],_0x2d987a[_0xa36f('0x30')]);_0x1ab343['attributes']=_[_0xa36f('0x32')](_0x2d987a[_0xa36f('0x2f')],qs[_0xa36f('0x34')](_0x14c297[_0xa36f('0x30')][_0xa36f('0x34')]));_0x1ab343[_0xa36f('0x33')]=_0x1ab343[_0xa36f('0x33')]['length']?_0x1ab343[_0xa36f('0x33')]:_0x2d987a['model'];if(_0x14c297['query'][_0xa36f('0x42')]){_0x1ab343[_0xa36f('0x43')]=[{'all':!![]}];}_0x1ab343=_[_0xa36f('0x3f')]({},_0x1ab343,_0x14c297['options']);return db[_0xa36f('0x41')][_0xa36f('0x49')](_0x1ab343)['then'](handleEntityNotFound(_0xa1e97b,null))[_0xa36f('0x20')](respondWithResult(_0xa1e97b,null))[_0xa36f('0x46')](handleError(_0xa1e97b,null));};exports[_0xa36f('0x4a')]=function(_0x1add8e,_0x270b74){return db[_0xa36f('0x41')][_0xa36f('0x4a')](_0x1add8e[_0xa36f('0x4b')],{})[_0xa36f('0x20')](function(_0xedb317){var _0x5a4993=_0x1add8e['user']['get']({'plain':!![]});if(!_0x5a4993)throw new Error(_0xa36f('0x4c'));if(_0x5a4993[_0xa36f('0x4d')]==='user'){var _0x304b1=_0xedb317[_0xa36f('0x22')]({'plain':!![]});var _0x5d6405='CmHopperAdditionalPhones';return db[_0xa36f('0x4e')][_0xa36f('0x49')]({'where':{'name':_0x5d6405,'userProfileId':_0x5a4993[_0xa36f('0x4f')]},'raw':!![]})[_0xa36f('0x20')](function(_0x94ab36){if(_0x94ab36&&_0x94ab36[_0xa36f('0x50')]===0x0){return db['UserProfileResource'][_0xa36f('0x4a')]({'name':_0x304b1[_0xa36f('0x27')],'resourceId':_0x304b1['id'],'type':_0x94ab36[_0xa36f('0x27')],'sectionId':_0x94ab36['id']},{})[_0xa36f('0x20')](function(){return _0xedb317;});}else{return _0xedb317;}})[_0xa36f('0x46')](function(_0x3ed1ed){logger['error'](_0xa36f('0x51'),_0x3ed1ed);throw _0x3ed1ed;});}return _0xedb317;})[_0xa36f('0x20')](respondWithResult(_0x270b74,0xc9))[_0xa36f('0x46')](handleError(_0x270b74,null));};exports[_0xa36f('0x52')]=function(_0x3d3d29,_0x6f4ac8){if(_0x3d3d29[_0xa36f('0x4b')]['id']){delete _0x3d3d29[_0xa36f('0x4b')]['id'];}return db[_0xa36f('0x41')][_0xa36f('0x49')]({'where':{'id':_0x3d3d29[_0xa36f('0x48')]['id']}})[_0xa36f('0x20')](handleEntityNotFound(_0x6f4ac8,null))[_0xa36f('0x20')](saveUpdates(_0x3d3d29['body'],null))['then'](respondWithResult(_0x6f4ac8,null))[_0xa36f('0x46')](handleError(_0x6f4ac8,null));};exports[_0xa36f('0x21')]=function(_0x4f3e33,_0x166b0c){return db['CmHopperAdditionalPhone'][_0xa36f('0x49')]({'where':{'id':_0x4f3e33[_0xa36f('0x48')]['id']}})[_0xa36f('0x20')](handleEntityNotFound(_0x166b0c,null))[_0xa36f('0x20')](removeEntity(_0x166b0c,null))['catch'](handleError(_0x166b0c,null));};
\ No newline at end of file
index 92e4cdb..25a6d2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa34e=['./cmHopperAdditionalPhone.attributes','exports','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','util','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x395dc0,_0x3e1799){var _0x5c77d8=function(_0x32d9ad){while(--_0x32d9ad){_0x395dc0['push'](_0x395dc0['shift']());}};_0x5c77d8(++_0x3e1799);}(_0xa34e,0x17a));var _0xea34=function(_0x42e1ec,_0x19aacc){_0x42e1ec=_0x42e1ec-0x0;var _0xe8c124=_0xa34e[_0x42e1ec];return _0xe8c124;};'use strict';var _=require(_0xea34('0x0'));var util=require(_0xea34('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xea34('0x2'));var BPromise=require(_0xea34('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xea34('0x4'));var rimraf=require(_0xea34('0x5'));var config=require(_0xea34('0x6'));var attributes=require(_0xea34('0x7'));module[_0xea34('0x8')]=function(_0x1996b1,_0x4bf94c){return _0x1996b1['define'](_0xea34('0x9'),attributes,{'tableName':_0xea34('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe436=['lodash','util','api','bluebird','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','exports','define','CmHopperAdditionalPhone','cm_hopper_additional_phones'];(function(_0x11ba46,_0x1d6752){var _0x1c8c6f=function(_0x4cf96f){while(--_0x4cf96f){_0x11ba46['push'](_0x11ba46['shift']());}};_0x1c8c6f(++_0x1d6752);}(_0xe436,0x1ef));var _0x6e43=function(_0x1b5b22,_0x332a4d){_0x1b5b22=_0x1b5b22-0x0;var _0x3e4384=_0xe436[_0x1b5b22];return _0x3e4384;};'use strict';var _=require(_0x6e43('0x0'));var util=require(_0x6e43('0x1'));var logger=require('../../config/logger')(_0x6e43('0x2'));var moment=require('moment');var BPromise=require(_0x6e43('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6e43('0x4'));var config=require(_0x6e43('0x5'));var attributes=require(_0x6e43('0x6'));module[_0x6e43('0x7')]=function(_0x5c7f9a,_0x5a1017){return _0x5c7f9a[_0x6e43('0x8')](_0x6e43('0x9'),attributes,{'tableName':_0x6e43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43b4c3f..11aec62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d5=['VerifyAdditionalPhones','CmHopper','ContactId','body','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','findOne','OrderBy','ASC','countbusyretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','entity','countcongestionretry','countmachineretry','countagentrejectretry','SwapAdditionalPhones','waitTime','duration','isNil','scheduledat','add','minutes','phone','createdAt','updatedAt','sequelize','transaction','update','activateAdditionalPhone','IncrementPreviewCounters','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','CmHopperAdditionalPhone,\x20%s,\x20%s','message','result','catch'];(function(_0x4d920b,_0x30f1c4){var _0x1a6220=function(_0x37f487){while(--_0x37f487){_0x4d920b['push'](_0x4d920b['shift']());}};_0x1a6220(++_0x30f1c4);}(_0x47d5,0x1eb));var _0x547d=function(_0x532dd0,_0xff1a19){_0x532dd0=_0x532dd0-0x0;var _0x10fef2=_0x47d5[_0x532dd0];return _0x10fef2;};'use strict';var _=require('lodash');var util=require(_0x547d('0x0'));var moment=require(_0x547d('0x1'));var BPromise=require('bluebird');var rs=require(_0x547d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x547d('0x3'));var logger=require(_0x547d('0x4'))(_0x547d('0x5'));var config=require(_0x547d('0x6'));var jayson=require(_0x547d('0x7'));var client=jayson[_0x547d('0x8')][_0x547d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x54e2f9,_0x39946e,_0x4f823c){return new BPromise(function(_0x2144f8,_0x288666){return client[_0x547d('0xa')](_0x54e2f9,_0x4f823c)[_0x547d('0xb')](function(_0x1dc790){logger[_0x547d('0xc')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x39946e,_0x547d('0xd'));logger['debug'](_0x547d('0xe'),_0x39946e,_0x547d('0xd'),JSON[_0x547d('0xf')](_0x1dc790));if(_0x1dc790[_0x547d('0x10')]){if(_0x1dc790[_0x547d('0x10')][_0x547d('0x11')]===0x1f4){logger[_0x547d('0x10')](_0x547d('0x12'),_0x39946e,_0x1dc790[_0x547d('0x10')][_0x547d('0x13')]);return _0x288666(_0x1dc790[_0x547d('0x10')][_0x547d('0x13')]);}logger['error'](_0x547d('0x12'),_0x39946e,_0x1dc790['error'][_0x547d('0x13')]);return _0x2144f8(_0x1dc790[_0x547d('0x10')][_0x547d('0x13')]);}else{logger['info'](_0x547d('0x12'),_0x39946e,_0x547d('0xd'));_0x2144f8(_0x1dc790[_0x547d('0x14')][_0x547d('0x13')]);}})[_0x547d('0x15')](function(_0x5b815b){logger[_0x547d('0x10')](_0x547d('0x12'),_0x39946e,_0x5b815b);_0x288666(_0x5b815b);});});}exports[_0x547d('0x16')]=function(_0x34ac2b){var _0x52d227=this;return new Promise(function(_0x11ffdc,_0x4b7afc){return db[_0x547d('0x17')]['findOne']({'raw':!![],'where':{'ContactId':_0x34ac2b['body'][_0x547d('0x18')],'ListId':_0x34ac2b[_0x547d('0x19')][_0x547d('0x1a')],'VoiceQueueId':_0x34ac2b[_0x547d('0x19')]['VoiceQueueId']===undefined?null:_0x34ac2b[_0x547d('0x19')][_0x547d('0x1b')],'CampaignId':_0x34ac2b['body'][_0x547d('0x1c')]===undefined?null:_0x34ac2b[_0x547d('0x19')][_0x547d('0x1c')]}})['then'](function(_0x10857b){if(_0x10857b!=null){return db[_0x547d('0x1d')][_0x547d('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x10857b['id'],'OrderBy':{'$gt':_0x10857b['OrderBy']}},'order':[[_0x547d('0x1f'),_0x547d('0x20')]]})[_0x547d('0xb')](function(_0x6894c7){var _0x17131e=0x0;if(_0x6894c7){if(_0x6894c7[_0x547d('0x21')]+_0x6894c7['countcongestionretry']+_0x6894c7[_0x547d('0x22')]+_0x6894c7[_0x547d('0x23')]+_0x6894c7[_0x547d('0x24')]+_0x6894c7[_0x547d('0x25')]+_0x6894c7['countmachineretry']+_0x6894c7['countagentrejectretry']<_0x34ac2b[_0x547d('0x26')]['dialGlobalMaxRetry'])_0x17131e=0x1;_0x11ffdc({'additional':_0x17131e});}else{return db['CmHopperAdditionalPhone'][_0x547d('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x10857b['id']},'order':[[_0x547d('0x1f'),_0x547d('0x20')]]})[_0x547d('0xb')](function(_0x46584c){var _0x22f411=0x0;if(_0x46584c){if(_0x46584c[_0x547d('0x21')]+_0x46584c[_0x547d('0x27')]+_0x46584c[_0x547d('0x22')]+_0x46584c[_0x547d('0x23')]+_0x46584c[_0x547d('0x24')]+_0x46584c[_0x547d('0x25')]+_0x46584c[_0x547d('0x28')]+_0x46584c[_0x547d('0x29')]<_0x34ac2b[_0x547d('0x26')]['dialGlobalMaxRetry'])_0x22f411=0x1;_0x11ffdc({'additional':_0x22f411});}else{_0x11ffdc({'additional':0x0});}})[_0x547d('0x15')](function(_0x32efce){logger['error'](_0x547d('0x16'),_0x32efce[_0x547d('0x13')]);_0x4b7afc(_0x52d227[_0x547d('0x10')](0x1f4,_0x32efce[_0x547d('0x13')]));});}})[_0x547d('0x15')](function(_0xb0bf0){logger['error'](_0x547d('0x16'),_0xb0bf0[_0x547d('0x13')]);_0x4b7afc(_0x52d227[_0x547d('0x10')](0x1f4,_0xb0bf0['message']));});}else _0x11ffdc({'additional':0x0});});});};exports[_0x547d('0x2a')]=function(_0x566e56){var _0x3c1ce7=this;return new Promise(function(_0x258f48,_0x579d27){return db[_0x547d('0x17')][_0x547d('0x1e')]({'raw':!![],'where':{'ContactId':_0x566e56[_0x547d('0x19')][_0x547d('0x18')],'ListId':_0x566e56['body'][_0x547d('0x1a')],'VoiceQueueId':_0x566e56['body'][_0x547d('0x1b')]===undefined?null:_0x566e56[_0x547d('0x19')][_0x547d('0x1b')],'CampaignId':_0x566e56[_0x547d('0x19')][_0x547d('0x1c')]===undefined?null:_0x566e56[_0x547d('0x19')][_0x547d('0x1c')]}})['then'](function(_0x502363){if(_0x502363!=null){return db['CmHopperAdditionalPhone'][_0x547d('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x502363['id'],'OrderBy':{'$gte':_0x502363[_0x547d('0x1f')]}},'order':[[_0x547d('0x1f'),_0x547d('0x20')]]})[_0x547d('0xb')](function(_0x398e48){if(_0x398e48)return activateAdditionalPhone(_0x502363,_0x566e56[_0x547d('0x19')],_0x398e48,_0x566e56['duration'],_0x566e56[_0x547d('0x2b')])[_0x547d('0xb')](function(_0x514da9){_0x258f48(_0x514da9);});else{return db[_0x547d('0x1d')][_0x547d('0x1e')]({'raw':!![],'where':{'CmHopperId':_0x502363['id']},'order':[[_0x547d('0x1f'),_0x547d('0x20')]]})['then'](function(_0x5cd843){if(_0x5cd843)return activateAdditionalPhone(_0x502363,_0x566e56[_0x547d('0x19')],_0x5cd843,_0x566e56[_0x547d('0x2c')],_0x566e56['waitTime'])[_0x547d('0xb')](function(_0x162045){_0x258f48(_0x162045);});else{_0x258f48({'id':_0x502363['id'],'phone':''});}})[_0x547d('0x15')](function(_0x2a21f4){logger[_0x547d('0x10')](_0x547d('0x16'),_0x2a21f4[_0x547d('0x13')]);_0x579d27(_0x3c1ce7[_0x547d('0x10')](0x1f4,_0x2a21f4[_0x547d('0x13')]));});}})[_0x547d('0x15')](function(_0x15258a){logger[_0x547d('0x10')](_0x547d('0x16'),_0x15258a[_0x547d('0x13')]);_0x579d27(_0x3c1ce7[_0x547d('0x10')](0x1f4,_0x15258a[_0x547d('0x13')]));});}else _0x258f48(0x1);});});};function activateAdditionalPhone(_0xb13fbb,_0x2c2f8a,_0x2aba43,_0x1a2bdc,_0x4b3035){return new Promise(function(_0x1ecfd0,_0x11f78b){var _0x4eae85;if(_[_0x547d('0x2d')](_0x2aba43['scheduledat'])){_0x2aba43[_0x547d('0x2e')]=moment();}if(moment()>moment(_0x2aba43[_0x547d('0x2e')])){_0x4eae85=moment()[_0x547d('0x2f')](_0x4b3035||0x3,_0x547d('0x30'));}else{if(_0x2aba43[_0x547d('0x1f')]==0x0){_0x4eae85=moment(_0x2aba43[_0x547d('0x2e')]);}else{_0x4eae85=moment()[_0x547d('0x2f')](_0x4b3035||0x3,_0x547d('0x30'));}}if(_['isNil'](_0x4eae85)){_0x4eae85=moment()[_0x547d('0x2f')](_0x4b3035||0x3,'minutes');}var _0x270b95={'phone':_0xb13fbb[_0x547d('0x31')],'active':0x0,'OrderBy':_[_0x547d('0x2d')](_0xb13fbb[_0x547d('0x1f')])?0x0:_0xb13fbb[_0x547d('0x1f')],'scheduledat':moment()[_0x547d('0x2f')](_0x1a2bdc||0x1,_0x547d('0x30')),'countbusyretry':_0x2c2f8a['countbusyretry'],'countcongestionretry':_0x2c2f8a['countcongestionretry'],'countnoanswerretry':_0x2c2f8a['countnoanswerretry'],'countnosuchnumberretry':_0x2c2f8a['countnosuchnumberretry'],'countdropretry':_0x2c2f8a[_0x547d('0x24')],'countabandonedretry':_0x2c2f8a[_0x547d('0x25')],'countmachineretry':_0x2c2f8a[_0x547d('0x28')],'countagentrejectretry':_0x2c2f8a['countagentrejectretry'],'createdAt':_0x2c2f8a[_0x547d('0x32')],'updatedAt':_0x2c2f8a[_0x547d('0x33')]};var _0x1eac02={'CmHopperId':_0xb13fbb['id'],'phone':_0x2aba43[_0x547d('0x31')],'active':0x0,'OrderBy':_[_0x547d('0x2d')](_0x2aba43[_0x547d('0x1f')])?0x0:_0x2aba43[_0x547d('0x1f')],'scheduledat':_0x4eae85,'countbusyretry':_0x2aba43[_0x547d('0x21')],'countcongestionretry':_0x2aba43[_0x547d('0x27')],'countnoanswerretry':_0x2aba43[_0x547d('0x22')],'countnosuchnumberretry':_0x2aba43[_0x547d('0x23')],'countdropretry':_0x2aba43['countdropretry'],'countabandonedretry':_0x2aba43[_0x547d('0x25')],'countmachineretry':_0x2aba43['countmachineretry'],'countagentrejectretry':_0x2aba43[_0x547d('0x29')],'createdAt':_0x2aba43[_0x547d('0x32')],'updatedAt':_0x2aba43[_0x547d('0x33')]};return db[_0x547d('0x34')][_0x547d('0x35')](function(_0x2c6026){return db[_0x547d('0x1d')][_0x547d('0x36')](_0x270b95,{'where':{'id':_0x2aba43['id']}},{'transaction':_0x2c6026})[_0x547d('0xb')](function(){return db[_0x547d('0x17')][_0x547d('0x36')](_0x1eac02,{'where':{'id':_0xb13fbb['id']}},{'transaction':_0x2c6026});});})[_0x547d('0xb')](function(_0xa8d713){_0x1ecfd0({'id':_0xb13fbb['id'],'phone':_0x2aba43['phone']});})[_0x547d('0x15')](function(_0x4e3c5e){logger[_0x547d('0x10')](_0x547d('0x37'),_0x4e3c5e['message']);_0x11f78b({'error':_0x4e3c5e[_0x547d('0x13')]});});});}exports[_0x547d('0x38')]=function(_0x3b97da){var _0x2d8c50=this;return new Promise(function(_0x4accf9,_0x216068){return db[_0x547d('0x17')][_0x547d('0x36')](_0x3b97da[_0x547d('0x19')]['field'],{'where':{'id':_0x3b97da[_0x547d('0x19')]['id']}})[_0x547d('0xb')](function(_0x1fe98d){_0x4accf9(_0x1fe98d);})[_0x547d('0x15')](function(_0xaec957){logger[_0x547d('0x10')]('IncrementPreviewCounters',_0xaec957[_0x547d('0x13')]);_0x216068(_0x2d8c50[_0x547d('0x10')](0x1f4,_0xaec957[_0x547d('0x13')]));});});};
\ No newline at end of file
+var _0x3140=['http','request','then','info','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','VerifyAdditionalPhones','findOne','body','ContactId','ListId','VoiceQueueId','CmHopperAdditionalPhone','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','ASC','SwapAdditionalPhones','CampaignId','waitTime','duration','scheduledat','add','minutes','isNil','phone','createdAt','updatedAt','sequelize','transaction','update','CmHopper','activateAdditionalPhone','IncrementPreviewCounters','field','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x3140,0xa2));var _0x0314=function(_0x9765f2,_0x4fe9c6){_0x9765f2=_0x9765f2-0x0;var _0x27c61c=_0x3140[_0x9765f2];return _0x27c61c;};'use strict';var _=require('lodash');var util=require(_0x0314('0x0'));var moment=require('moment');var BPromise=require(_0x0314('0x1'));var rs=require(_0x0314('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0314('0x3'))['db'];var utils=require(_0x0314('0x4'));var logger=require(_0x0314('0x5'))(_0x0314('0x6'));var config=require(_0x0314('0x7'));var jayson=require(_0x0314('0x8'));var client=jayson['client'][_0x0314('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x64c3b,_0x114727,_0x34434d){return new BPromise(function(_0x55b7c1,_0x398d9d){return client[_0x0314('0xa')](_0x64c3b,_0x34434d)[_0x0314('0xb')](function(_0x45b441){logger[_0x0314('0xc')](_0x0314('0xd'),_0x114727,_0x0314('0xe'));logger['debug']('CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s',_0x114727,_0x0314('0xe'),JSON[_0x0314('0xf')](_0x45b441));if(_0x45b441[_0x0314('0x10')]){if(_0x45b441[_0x0314('0x10')]['code']===0x1f4){logger[_0x0314('0x10')](_0x0314('0xd'),_0x114727,_0x45b441['error']['message']);return _0x398d9d(_0x45b441[_0x0314('0x10')][_0x0314('0x11')]);}logger[_0x0314('0x10')](_0x0314('0xd'),_0x114727,_0x45b441[_0x0314('0x10')][_0x0314('0x11')]);return _0x55b7c1(_0x45b441[_0x0314('0x10')]['message']);}else{logger[_0x0314('0xc')](_0x0314('0xd'),_0x114727,'request\x20sent');_0x55b7c1(_0x45b441[_0x0314('0x12')][_0x0314('0x11')]);}})[_0x0314('0x13')](function(_0x420b84){logger[_0x0314('0x10')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x114727,_0x420b84);_0x398d9d(_0x420b84);});});}exports[_0x0314('0x14')]=function(_0x2fff2f){var _0x26d882=this;return new Promise(function(_0x13bad4,_0x4e5a33){return db['CmHopper'][_0x0314('0x15')]({'raw':!![],'where':{'ContactId':_0x2fff2f[_0x0314('0x16')][_0x0314('0x17')],'ListId':_0x2fff2f['body'][_0x0314('0x18')],'VoiceQueueId':_0x2fff2f[_0x0314('0x16')][_0x0314('0x19')]===undefined?null:_0x2fff2f[_0x0314('0x16')][_0x0314('0x19')],'CampaignId':_0x2fff2f[_0x0314('0x16')]['CampaignId']===undefined?null:_0x2fff2f[_0x0314('0x16')]['CampaignId']}})[_0x0314('0xb')](function(_0x4aeb7e){if(_0x4aeb7e!=null){return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x4aeb7e['id'],'OrderBy':{'$gt':_0x4aeb7e[_0x0314('0x1b')]}},'order':[[_0x0314('0x1b'),'ASC']]})[_0x0314('0xb')](function(_0x191358){var _0x1b6e23=0x0;if(_0x191358){if(_0x191358[_0x0314('0x1c')]+_0x191358[_0x0314('0x1d')]+_0x191358[_0x0314('0x1e')]+_0x191358[_0x0314('0x1f')]+_0x191358[_0x0314('0x20')]+_0x191358[_0x0314('0x21')]+_0x191358[_0x0314('0x22')]+_0x191358[_0x0314('0x23')]<_0x2fff2f[_0x0314('0x24')][_0x0314('0x25')])_0x1b6e23=0x1;_0x13bad4({'additional':_0x1b6e23});}else{return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x4aeb7e['id']},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x8ac564){var _0x3c67f4=0x0;if(_0x8ac564){if(_0x8ac564[_0x0314('0x1c')]+_0x8ac564[_0x0314('0x1d')]+_0x8ac564[_0x0314('0x1e')]+_0x8ac564[_0x0314('0x1f')]+_0x8ac564[_0x0314('0x20')]+_0x8ac564[_0x0314('0x21')]+_0x8ac564[_0x0314('0x22')]+_0x8ac564[_0x0314('0x23')]<_0x2fff2f['entity'][_0x0314('0x25')])_0x3c67f4=0x1;_0x13bad4({'additional':_0x3c67f4});}else{_0x13bad4({'additional':0x0});}})[_0x0314('0x13')](function(_0x3699e4){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3699e4[_0x0314('0x11')]);_0x4e5a33(_0x26d882[_0x0314('0x10')](0x1f4,_0x3699e4['message']));});}})[_0x0314('0x13')](function(_0xa478b3){logger['error']('VerifyAdditionalPhones',_0xa478b3[_0x0314('0x11')]);_0x4e5a33(_0x26d882[_0x0314('0x10')](0x1f4,_0xa478b3[_0x0314('0x11')]));});}else _0x13bad4({'additional':0x0});});});};exports[_0x0314('0x27')]=function(_0x17c6b1){var _0x33e70b=this;return new Promise(function(_0xf754a0,_0x5304d8){return db['CmHopper'][_0x0314('0x15')]({'raw':!![],'where':{'ContactId':_0x17c6b1['body'][_0x0314('0x17')],'ListId':_0x17c6b1[_0x0314('0x16')]['ListId'],'VoiceQueueId':_0x17c6b1['body'][_0x0314('0x19')]===undefined?null:_0x17c6b1[_0x0314('0x16')]['VoiceQueueId'],'CampaignId':_0x17c6b1['body'][_0x0314('0x28')]===undefined?null:_0x17c6b1[_0x0314('0x16')][_0x0314('0x28')]}})[_0x0314('0xb')](function(_0x2a67bd){if(_0x2a67bd!=null){return db[_0x0314('0x1a')][_0x0314('0x15')]({'raw':!![],'where':{'CmHopperId':_0x2a67bd['id'],'OrderBy':{'$gte':_0x2a67bd[_0x0314('0x1b')]}},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x5e8469){if(_0x5e8469)return activateAdditionalPhone(_0x2a67bd,_0x17c6b1['body'],_0x5e8469,_0x17c6b1['duration'],_0x17c6b1[_0x0314('0x29')])[_0x0314('0xb')](function(_0xbb650a){_0xf754a0(_0xbb650a);});else{return db[_0x0314('0x1a')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x2a67bd['id']},'order':[[_0x0314('0x1b'),_0x0314('0x26')]]})[_0x0314('0xb')](function(_0x233d4a){if(_0x233d4a)return activateAdditionalPhone(_0x2a67bd,_0x17c6b1[_0x0314('0x16')],_0x233d4a,_0x17c6b1[_0x0314('0x2a')],_0x17c6b1[_0x0314('0x29')])[_0x0314('0xb')](function(_0x1c108e){_0xf754a0(_0x1c108e);});else{_0xf754a0({'id':_0x2a67bd['id'],'phone':''});}})[_0x0314('0x13')](function(_0x3dda6f){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3dda6f[_0x0314('0x11')]);_0x5304d8(_0x33e70b[_0x0314('0x10')](0x1f4,_0x3dda6f[_0x0314('0x11')]));});}})[_0x0314('0x13')](function(_0x3a6d55){logger[_0x0314('0x10')](_0x0314('0x14'),_0x3a6d55[_0x0314('0x11')]);_0x5304d8(_0x33e70b[_0x0314('0x10')](0x1f4,_0x3a6d55['message']));});}else _0xf754a0(0x1);});});};function activateAdditionalPhone(_0x42229c,_0x493dd8,_0x473521,_0xbe682f,_0x5ad64e){return new Promise(function(_0x557507,_0x36b378){var _0x222662;if(_['isNil'](_0x473521['scheduledat'])){_0x473521[_0x0314('0x2b')]=moment();}if(moment()>moment(_0x473521['scheduledat'])){_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}else{if(_0x473521['OrderBy']==0x0){_0x222662=moment(_0x473521['scheduledat']);}else{_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}}if(_[_0x0314('0x2e')](_0x222662)){_0x222662=moment()[_0x0314('0x2c')](_0x5ad64e||0x3,_0x0314('0x2d'));}var _0x29aeb6={'phone':_0x42229c[_0x0314('0x2f')],'active':0x0,'OrderBy':_[_0x0314('0x2e')](_0x42229c[_0x0314('0x1b')])?0x0:_0x42229c[_0x0314('0x1b')],'scheduledat':moment()[_0x0314('0x2c')](_0xbe682f||0x1,_0x0314('0x2d')),'countbusyretry':_0x493dd8[_0x0314('0x1c')],'countcongestionretry':_0x493dd8['countcongestionretry'],'countnoanswerretry':_0x493dd8[_0x0314('0x1e')],'countnosuchnumberretry':_0x493dd8[_0x0314('0x1f')],'countdropretry':_0x493dd8['countdropretry'],'countabandonedretry':_0x493dd8[_0x0314('0x21')],'countmachineretry':_0x493dd8[_0x0314('0x22')],'countagentrejectretry':_0x493dd8[_0x0314('0x23')],'createdAt':_0x493dd8[_0x0314('0x30')],'updatedAt':_0x493dd8[_0x0314('0x31')]};var _0x53fc98={'CmHopperId':_0x42229c['id'],'phone':_0x473521[_0x0314('0x2f')],'active':0x0,'OrderBy':_[_0x0314('0x2e')](_0x473521[_0x0314('0x1b')])?0x0:_0x473521[_0x0314('0x1b')],'scheduledat':_0x222662,'countbusyretry':_0x473521[_0x0314('0x1c')],'countcongestionretry':_0x473521[_0x0314('0x1d')],'countnoanswerretry':_0x473521['countnoanswerretry'],'countnosuchnumberretry':_0x473521[_0x0314('0x1f')],'countdropretry':_0x473521[_0x0314('0x20')],'countabandonedretry':_0x473521[_0x0314('0x21')],'countmachineretry':_0x473521['countmachineretry'],'countagentrejectretry':_0x473521[_0x0314('0x23')],'createdAt':_0x473521[_0x0314('0x30')],'updatedAt':_0x473521['updatedAt']};return db[_0x0314('0x32')][_0x0314('0x33')](function(_0x4b6eb1){return db[_0x0314('0x1a')][_0x0314('0x34')](_0x29aeb6,{'where':{'id':_0x473521['id']}},{'transaction':_0x4b6eb1})[_0x0314('0xb')](function(){return db[_0x0314('0x35')][_0x0314('0x34')](_0x53fc98,{'where':{'id':_0x42229c['id']}},{'transaction':_0x4b6eb1});});})[_0x0314('0xb')](function(_0x27030d){_0x557507({'id':_0x42229c['id'],'phone':_0x473521[_0x0314('0x2f')]});})['catch'](function(_0x4daf08){logger[_0x0314('0x10')](_0x0314('0x36'),_0x4daf08['message']);_0x36b378({'error':_0x4daf08[_0x0314('0x11')]});});});}exports[_0x0314('0x37')]=function(_0x2d8fdb){var _0x56a65c=this;return new Promise(function(_0x2ac759,_0x437c60){return db[_0x0314('0x35')][_0x0314('0x34')](_0x2d8fdb[_0x0314('0x16')][_0x0314('0x38')],{'where':{'id':_0x2d8fdb[_0x0314('0x16')]['id']}})[_0x0314('0xb')](function(_0x1c63bd){_0x2ac759(_0x1c63bd);})[_0x0314('0x13')](function(_0x4e3458){logger['error']('IncrementPreviewCounters',_0x4e3458[_0x0314('0x11')]);_0x437c60(_0x56a65c['error'](0x1f4,_0x4e3458[_0x0314('0x11')]));});});};
\ No newline at end of file
index eb87ea8..2115a57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4d=['destroy','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','./cmHopperAdditionalPhone.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete'];(function(_0x24e265,_0x48d1e9){var _0x7fc2a2=function(_0x5d5248){while(--_0x5d5248){_0x24e265['push'](_0x24e265['shift']());}};_0x7fc2a2(++_0x48d1e9);}(_0x1c4d,0x19f));var _0xd1c4=function(_0x1eba12,_0x327d6c){_0x1eba12=_0x1eba12-0x0;var _0x302aa4=_0x1c4d[_0x1eba12];return _0x302aa4;};'use strict';var multer=require(_0xd1c4('0x0'));var util=require(_0xd1c4('0x1'));var path=require('path');var timeout=require(_0xd1c4('0x2'));var express=require('express');var router=express[_0xd1c4('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd1c4('0x4'));var interaction=require(_0xd1c4('0x5'));var config=require('../../config/environment');var controller=require(_0xd1c4('0x6'));router[_0xd1c4('0x7')]('/',auth['isAuthenticated'](),controller[_0xd1c4('0x8')]);router[_0xd1c4('0x7')](_0xd1c4('0x9'),auth[_0xd1c4('0xa')](),controller[_0xd1c4('0xb')]);router[_0xd1c4('0xc')]('/',auth['isAuthenticated'](),controller[_0xd1c4('0xd')]);router[_0xd1c4('0xe')](_0xd1c4('0x9'),auth[_0xd1c4('0xa')](),controller[_0xd1c4('0xf')]);router[_0xd1c4('0x10')]('/:id',auth[_0xd1c4('0xa')](),controller[_0xd1c4('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x655c=['../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x655c,0x15e));var _0xc655=function(_0x1c2ff9,_0x3ea117){_0x1c2ff9=_0x1c2ff9-0x0;var _0x587607=_0x655c[_0x1c2ff9];return _0x587607;};'use strict';var multer=require(_0xc655('0x0'));var util=require(_0xc655('0x1'));var path=require('path');var timeout=require(_0xc655('0x2'));var express=require(_0xc655('0x3'));var router=express[_0xc655('0x4')]();var fs_extra=require(_0xc655('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc655('0x6'));var config=require(_0xc655('0x7'));var controller=require(_0xc655('0x8'));router[_0xc655('0x9')]('/',auth[_0xc655('0xa')](),controller[_0xc655('0xb')]);router[_0xc655('0x9')](_0xc655('0xc'),auth[_0xc655('0xa')](),controller[_0xc655('0xd')]);router[_0xc655('0xe')]('/',auth[_0xc655('0xa')](),controller[_0xc655('0xf')]);router[_0xc655('0x10')]('/:id',auth[_0xc655('0xa')](),controller[_0xc655('0x11')]);router[_0xc655('0x12')](_0xc655('0xc'),auth[_0xc655('0xa')](),controller[_0xc655('0x13')]);module[_0xc655('0x14')]=router;
\ No newline at end of file
index b61911a..24388ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c1a=['STRING','INTEGER','contactListQueue','moment','sequelize','exports'];(function(_0x2b0102,_0xe3da2e){var _0x22e6e1=function(_0x5c18fb){while(--_0x5c18fb){_0x2b0102['push'](_0x2b0102['shift']());}};_0x22e6e1(++_0xe3da2e);}(_0x7c1a,0x159));var _0xa7c1=function(_0x170436,_0x90563c){_0x170436=_0x170436-0x0;var _0x4794d8=_0x7c1a[_0x170436];return _0x4794d8;};'use strict';var moment=require(_0xa7c1('0x0'));var Sequelize=require(_0xa7c1('0x1'));module[_0xa7c1('0x2')]={'phone':{'type':Sequelize[_0xa7c1('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize[_0xa7c1('0x4')],'unique':_0xa7c1('0x5')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0xa7c1('0x5')},'VoiceQueueId':{'type':Sequelize[_0xa7c1('0x4')],'unique':'contactListQueue'}};
\ No newline at end of file
+var _0xb715=['contactListQueue','sequelize','STRING','INTEGER'];(function(_0xd292c1,_0x296792){var _0x41504a=function(_0x2b4263){while(--_0x2b4263){_0xd292c1['push'](_0xd292c1['shift']());}};_0x41504a(++_0x296792);}(_0xb715,0x16d));var _0x5b71=function(_0x3ca0df,_0x447d9b){_0x3ca0df=_0x3ca0df-0x0;var _0x27bfce=_0xb715[_0x3ca0df];return _0x27bfce;};'use strict';var moment=require('moment');var Sequelize=require(_0x5b71('0x0'));module['exports']={'phone':{'type':Sequelize[_0x5b71('0x1')],'allowNull':![]},'ContactId':{'type':Sequelize[_0x5b71('0x2')],'unique':'contactListQueue'},'ListId':{'type':Sequelize[_0x5b71('0x2')],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x5b71('0x2')],'unique':_0x5b71('0x3')}};
\ No newline at end of file
index bd1d505..8c629ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaecc=['bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','map','rawAttributes','key','model','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','CmHopperBlack','keys','length','find','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x5b79fe,_0x3dad90){var _0x17d865=function(_0x5ef0dd){while(--_0x5ef0dd){_0x5b79fe['push'](_0x5b79fe['shift']());}};_0x17d865(++_0x3dad90);}(_0xaecc,0x172));var _0xcaec=function(_0x4c4b3a,_0xdffe34){_0x4c4b3a=_0x4c4b3a-0x0;var _0x18bd63=_0xaecc[_0x4c4b3a];return _0x18bd63;};'use strict';var emlformat=require(_0xcaec('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcaec('0x1'));var jsonpatch=require(_0xcaec('0x2'));var rp=require(_0xcaec('0x3'));var moment=require(_0xcaec('0x4'));var BPromise=require(_0xcaec('0x5'));var Mustache=require(_0xcaec('0x6'));var util=require(_0xcaec('0x7'));var path=require('path');var sox=require(_0xcaec('0x8'));var csv=require(_0xcaec('0x9'));var ejs=require(_0xcaec('0xa'));var fs=require('fs');var fs_extra=require(_0xcaec('0xb'));var _=require(_0xcaec('0xc'));var squel=require(_0xcaec('0xd'));var crypto=require(_0xcaec('0xe'));var jsforce=require(_0xcaec('0xf'));var deskjs=require(_0xcaec('0x10'));var toCsv=require('to-csv');var querystring=require(_0xcaec('0x11'));var Papa=require(_0xcaec('0x12'));var Redis=require(_0xcaec('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xcaec('0x14'));var as=require(_0xcaec('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xcaec('0x16'))('api');var utils=require(_0xcaec('0x17'));var config=require(_0xcaec('0x18'));var licenseUtil=require(_0xcaec('0x19'));var db=require(_0xcaec('0x1a'))['db'];function respondWithStatusCode(_0xd68ff2,_0x4e72f7){_0x4e72f7=_0x4e72f7||0xcc;return function(_0x1c3715){if(_0x1c3715){return _0xd68ff2[_0xcaec('0x1b')](_0x4e72f7);}return _0xd68ff2[_0xcaec('0x1c')](_0x4e72f7)['end']();};}function respondWithResult(_0x2d8596,_0x452a01){_0x452a01=_0x452a01||0xc8;return function(_0x1a6777){if(_0x1a6777){return _0x2d8596['status'](_0x452a01)[_0xcaec('0x1d')](_0x1a6777);}};}function respondWithFilteredResult(_0x1272c9,_0xa30e97){return function(_0x5440ba){if(_0x5440ba){var _0x3b3e99=typeof _0xa30e97[_0xcaec('0x1e')]===_0xcaec('0x1f')&&typeof _0xa30e97[_0xcaec('0x20')]==='undefined';var _0x2899ed=_0x5440ba[_0xcaec('0x21')];var _0x19b83b=_0x3b3e99?0x0:_0xa30e97[_0xcaec('0x1e')];var _0x250f13=_0x3b3e99?_0x5440ba['count']:_0xa30e97[_0xcaec('0x1e')]+_0xa30e97[_0xcaec('0x20')];var _0x542655;if(_0x250f13>=_0x2899ed){_0x250f13=_0x2899ed;_0x542655=0xc8;}else{_0x542655=0xce;}_0x1272c9[_0xcaec('0x1c')](_0x542655);return _0x1272c9[_0xcaec('0x22')](_0xcaec('0x23'),_0x19b83b+'-'+_0x250f13+'/'+_0x2899ed)[_0xcaec('0x1d')](_0x5440ba);}return null;};}function patchUpdates(_0x2d72eb){return function(_0x40d2de){try{jsonpatch[_0xcaec('0x24')](_0x40d2de,_0x2d72eb,!![]);}catch(_0x30312e){return BPromise[_0xcaec('0x25')](_0x30312e);}return _0x40d2de[_0xcaec('0x26')]();};}function saveUpdates(_0x319196,_0x42683a){return function(_0x517cf2){if(_0x517cf2){return _0x517cf2[_0xcaec('0x27')](_0x319196)[_0xcaec('0x28')](function(_0x22b82b){return _0x22b82b;});}return null;};}function removeEntity(_0x429355,_0x381399){return function(_0x1b4f07){if(_0x1b4f07){return _0x1b4f07[_0xcaec('0x29')]()[_0xcaec('0x28')](function(){_0x429355[_0xcaec('0x1c')](0xcc)[_0xcaec('0x2a')]();});}};}function handleEntityNotFound(_0x8baeec,_0x23e22a){return function(_0x4f8371){if(!_0x4f8371){_0x8baeec['sendStatus'](0x194);}return _0x4f8371;};}function handleError(_0x3da95a,_0x38d500){_0x38d500=_0x38d500||0x1f4;return function(_0x24b7af){logger['error'](_0x24b7af[_0xcaec('0x2b')]);if(_0x24b7af[_0xcaec('0x2c')]){delete _0x24b7af['name'];}_0x3da95a[_0xcaec('0x1c')](_0x38d500)['send'](_0x24b7af);};}exports['index']=function(_0x4aa29d,_0x203099){var _0x3c3df8={},_0xf07371={},_0x3d4f41={'count':0x0,'rows':[]};var _0x10a584=_[_0xcaec('0x2d')](db['CmHopperBlack'][_0xcaec('0x2e')],function(_0x23a86f){return{'name':_0x23a86f['fieldName'],'type':_0x23a86f['type'][_0xcaec('0x2f')]};});_0xf07371[_0xcaec('0x30')]=_[_0xcaec('0x2d')](_0x10a584,_0xcaec('0x2c'));_0xf07371[_0xcaec('0x31')]=_['keys'](_0x4aa29d['query']);_0xf07371[_0xcaec('0x32')]=_[_0xcaec('0x33')](_0xf07371['model'],_0xf07371[_0xcaec('0x31')]);_0x3c3df8['attributes']=_[_0xcaec('0x33')](_0xf07371[_0xcaec('0x30')],qs[_0xcaec('0x34')](_0x4aa29d['query'][_0xcaec('0x34')]));_0x3c3df8[_0xcaec('0x35')]=_0x3c3df8['attributes']['length']?_0x3c3df8[_0xcaec('0x35')]:_0xf07371[_0xcaec('0x30')];if(!_0x4aa29d[_0xcaec('0x31')][_0xcaec('0x36')]('nolimit')){_0x3c3df8['limit']=qs[_0xcaec('0x20')](_0x4aa29d['query'][_0xcaec('0x20')]);_0x3c3df8[_0xcaec('0x1e')]=qs[_0xcaec('0x1e')](_0x4aa29d[_0xcaec('0x31')]['offset']);}_0x3c3df8[_0xcaec('0x37')]=qs[_0xcaec('0x38')](_0x4aa29d['query'][_0xcaec('0x38')]);_0x3c3df8[_0xcaec('0x39')]=qs[_0xcaec('0x32')](_['pick'](_0x4aa29d['query'],_0xf07371[_0xcaec('0x32')]),_0x10a584);if(_0x4aa29d[_0xcaec('0x31')]['filter']){_0x3c3df8[_0xcaec('0x39')]=_[_0xcaec('0x3a')](_0x3c3df8[_0xcaec('0x39')],{'$or':_['map'](_0x10a584,function(_0x119671){if(_0x119671[_0xcaec('0x3b')]!==_0xcaec('0x3c')){var _0x4679d9={};_0x4679d9[_0x119671[_0xcaec('0x2c')]]={'$like':'%'+_0x4aa29d[_0xcaec('0x31')][_0xcaec('0x3d')]+'%'};return _0x4679d9;}})});}_0x3c3df8=_[_0xcaec('0x3a')]({},_0x3c3df8,_0x4aa29d[_0xcaec('0x3e')]);var _0x3038c2={'where':_0x3c3df8[_0xcaec('0x39')]};return db['CmHopperBlack'][_0xcaec('0x21')](_0x3038c2)[_0xcaec('0x28')](function(_0x26d207){_0x3d4f41[_0xcaec('0x21')]=_0x26d207;if(_0x4aa29d[_0xcaec('0x31')][_0xcaec('0x3f')]){_0x3c3df8[_0xcaec('0x40')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xcaec('0x41')](_0x3c3df8);})[_0xcaec('0x28')](function(_0x2f7f7f){_0x3d4f41['rows']=_0x2f7f7f;return _0x3d4f41;})[_0xcaec('0x28')](respondWithFilteredResult(_0x203099,_0x3c3df8))[_0xcaec('0x42')](handleError(_0x203099,null));};exports[_0xcaec('0x43')]=function(_0xccde48,_0x38f52c){var _0x24997f={'raw':!![],'where':{'id':_0xccde48[_0xcaec('0x44')]['id']}},_0x43e849={};_0x43e849[_0xcaec('0x30')]=_['keys'](db[_0xcaec('0x45')][_0xcaec('0x2e')]);_0x43e849[_0xcaec('0x31')]=_[_0xcaec('0x46')](_0xccde48[_0xcaec('0x31')]);_0x43e849[_0xcaec('0x32')]=_[_0xcaec('0x33')](_0x43e849[_0xcaec('0x30')],_0x43e849['query']);_0x24997f[_0xcaec('0x35')]=_['intersection'](_0x43e849[_0xcaec('0x30')],qs[_0xcaec('0x34')](_0xccde48[_0xcaec('0x31')][_0xcaec('0x34')]));_0x24997f['attributes']=_0x24997f[_0xcaec('0x35')][_0xcaec('0x47')]?_0x24997f[_0xcaec('0x35')]:_0x43e849[_0xcaec('0x30')];if(_0xccde48[_0xcaec('0x31')]['includeAll']){_0x24997f[_0xcaec('0x40')]=[{'all':!![]}];}_0x24997f=_[_0xcaec('0x3a')]({},_0x24997f,_0xccde48['options']);return db[_0xcaec('0x45')][_0xcaec('0x48')](_0x24997f)[_0xcaec('0x28')](handleEntityNotFound(_0x38f52c,null))['then'](respondWithResult(_0x38f52c,null))[_0xcaec('0x42')](handleError(_0x38f52c,null));};exports[_0xcaec('0x27')]=function(_0x219ab7,_0x40bdee){if(_0x219ab7[_0xcaec('0x49')]['id']){delete _0x219ab7[_0xcaec('0x49')]['id'];}return db[_0xcaec('0x45')][_0xcaec('0x48')]({'where':{'id':_0x219ab7[_0xcaec('0x44')]['id']}})[_0xcaec('0x28')](handleEntityNotFound(_0x40bdee,null))['then'](saveUpdates(_0x219ab7[_0xcaec('0x49')],null))[_0xcaec('0x28')](respondWithResult(_0x40bdee,null))[_0xcaec('0x42')](handleError(_0x40bdee,null));};exports[_0xcaec('0x29')]=function(_0x9ef618,_0x4d4a64){return db['CmHopperBlack']['find']({'where':{'id':_0x9ef618[_0xcaec('0x44')]['id']}})['then'](handleEntityNotFound(_0x4d4a64,null))[_0xcaec('0x28')](removeEntity(_0x4d4a64,null))[_0xcaec('0x42')](handleError(_0x4d4a64,null));};exports[_0xcaec('0x4a')]=function(_0x152a61,_0x2ff825){return db[_0xcaec('0x45')]['describe']()[_0xcaec('0x28')](respondWithResult(_0x2ff825,null))[_0xcaec('0x42')](handleError(_0x2ff825,null));};
\ No newline at end of file
+var _0x272a=['show','params','rawAttributes','includeAll','find','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','map','filter','options','CmHopperBlack','include','findAll','rows','catch'];(function(_0x5d5c49,_0x528f94){var _0x41cb72=function(_0x4fe8e2){while(--_0x4fe8e2){_0x5d5c49['push'](_0x5d5c49['shift']());}};_0x41cb72(++_0x528f94);}(_0x272a,0x132));var _0xa272=function(_0x4f3204,_0x532aa0){_0x4f3204=_0x4f3204-0x0;var _0x3cc521=_0x272a[_0x4f3204];return _0x3cc521;};'use strict';var emlformat=require(_0xa272('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa272('0x1'));var jsonpatch=require(_0xa272('0x2'));var rp=require(_0xa272('0x3'));var moment=require(_0xa272('0x4'));var BPromise=require(_0xa272('0x5'));var Mustache=require(_0xa272('0x6'));var util=require(_0xa272('0x7'));var path=require(_0xa272('0x8'));var sox=require(_0xa272('0x9'));var csv=require(_0xa272('0xa'));var ejs=require(_0xa272('0xb'));var fs=require('fs');var fs_extra=require(_0xa272('0xc'));var _=require(_0xa272('0xd'));var squel=require(_0xa272('0xe'));var crypto=require('crypto');var jsforce=require(_0xa272('0xf'));var deskjs=require(_0xa272('0x10'));var toCsv=require(_0xa272('0xa'));var querystring=require('querystring');var Papa=require(_0xa272('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa272('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa272('0x13'));var logger=require(_0xa272('0x14'))(_0xa272('0x15'));var utils=require(_0xa272('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xa272('0x17'));var db=require(_0xa272('0x18'))['db'];function respondWithStatusCode(_0x434b34,_0x44f92e){_0x44f92e=_0x44f92e||0xcc;return function(_0x461210){if(_0x461210){return _0x434b34['sendStatus'](_0x44f92e);}return _0x434b34[_0xa272('0x19')](_0x44f92e)[_0xa272('0x1a')]();};}function respondWithResult(_0x5d5ee6,_0x5ef847){_0x5ef847=_0x5ef847||0xc8;return function(_0x131bba){if(_0x131bba){return _0x5d5ee6[_0xa272('0x19')](_0x5ef847)['json'](_0x131bba);}};}function respondWithFilteredResult(_0x38da0d,_0x571c96){return function(_0x658261){if(_0x658261){var _0x4ddee6=typeof _0x571c96[_0xa272('0x1b')]===_0xa272('0x1c')&&typeof _0x571c96[_0xa272('0x1d')]===_0xa272('0x1c');var _0x34171e=_0x658261[_0xa272('0x1e')];var _0x8406a3=_0x4ddee6?0x0:_0x571c96[_0xa272('0x1b')];var _0x4cc65d=_0x4ddee6?_0x658261['count']:_0x571c96[_0xa272('0x1b')]+_0x571c96[_0xa272('0x1d')];var _0x4bd420;if(_0x4cc65d>=_0x34171e){_0x4cc65d=_0x34171e;_0x4bd420=0xc8;}else{_0x4bd420=0xce;}_0x38da0d[_0xa272('0x19')](_0x4bd420);return _0x38da0d[_0xa272('0x1f')](_0xa272('0x20'),_0x8406a3+'-'+_0x4cc65d+'/'+_0x34171e)['json'](_0x658261);}return null;};}function patchUpdates(_0x1cccff){return function(_0x19760b){try{jsonpatch[_0xa272('0x21')](_0x19760b,_0x1cccff,!![]);}catch(_0x13eeb7){return BPromise['reject'](_0x13eeb7);}return _0x19760b[_0xa272('0x22')]();};}function saveUpdates(_0x5e67a9,_0x578cb9){return function(_0x489d94){if(_0x489d94){return _0x489d94[_0xa272('0x23')](_0x5e67a9)[_0xa272('0x24')](function(_0xe7b1a5){return _0xe7b1a5;});}return null;};}function removeEntity(_0x173b1c,_0x59ee62){return function(_0x209b8d){if(_0x209b8d){return _0x209b8d[_0xa272('0x25')]()[_0xa272('0x24')](function(){_0x173b1c[_0xa272('0x19')](0xcc)[_0xa272('0x1a')]();});}};}function handleEntityNotFound(_0x3908c2,_0x1992d4){return function(_0x3bd59a){if(!_0x3bd59a){_0x3908c2[_0xa272('0x26')](0x194);}return _0x3bd59a;};}function handleError(_0x58569e,_0x440c59){_0x440c59=_0x440c59||0x1f4;return function(_0x24004b){logger[_0xa272('0x27')](_0x24004b[_0xa272('0x28')]);if(_0x24004b[_0xa272('0x29')]){delete _0x24004b[_0xa272('0x29')];}_0x58569e[_0xa272('0x19')](_0x440c59)[_0xa272('0x2a')](_0x24004b);};}exports[_0xa272('0x2b')]=function(_0x2e8c84,_0x54f19f){var _0x539639={},_0x11daeb={},_0x156125={'count':0x0,'rows':[]};var _0x2485fd=_['map'](db['CmHopperBlack']['rawAttributes'],function(_0x37d43b){return{'name':_0x37d43b[_0xa272('0x2c')],'type':_0x37d43b[_0xa272('0x2d')]['key']};});_0x11daeb[_0xa272('0x2e')]=_['map'](_0x2485fd,_0xa272('0x29'));_0x11daeb['query']=_[_0xa272('0x2f')](_0x2e8c84['query']);_0x11daeb[_0xa272('0x30')]=_[_0xa272('0x31')](_0x11daeb[_0xa272('0x2e')],_0x11daeb[_0xa272('0x32')]);_0x539639[_0xa272('0x33')]=_[_0xa272('0x31')](_0x11daeb['model'],qs[_0xa272('0x34')](_0x2e8c84[_0xa272('0x32')][_0xa272('0x34')]));_0x539639[_0xa272('0x33')]=_0x539639[_0xa272('0x33')][_0xa272('0x35')]?_0x539639[_0xa272('0x33')]:_0x11daeb['model'];if(!_0x2e8c84[_0xa272('0x32')][_0xa272('0x36')](_0xa272('0x37'))){_0x539639['limit']=qs[_0xa272('0x1d')](_0x2e8c84[_0xa272('0x32')]['limit']);_0x539639[_0xa272('0x1b')]=qs[_0xa272('0x1b')](_0x2e8c84['query'][_0xa272('0x1b')]);}_0x539639[_0xa272('0x38')]=qs['sort'](_0x2e8c84[_0xa272('0x32')][_0xa272('0x39')]);_0x539639[_0xa272('0x3a')]=qs[_0xa272('0x30')](_[_0xa272('0x3b')](_0x2e8c84[_0xa272('0x32')],_0x11daeb[_0xa272('0x30')]),_0x2485fd);if(_0x2e8c84[_0xa272('0x32')]['filter']){_0x539639[_0xa272('0x3a')]=_[_0xa272('0x3c')](_0x539639[_0xa272('0x3a')],{'$or':_[_0xa272('0x3d')](_0x2485fd,function(_0x1bc070){if(_0x1bc070[_0xa272('0x2d')]!=='VIRTUAL'){var _0x3d1b72={};_0x3d1b72[_0x1bc070[_0xa272('0x29')]]={'$like':'%'+_0x2e8c84[_0xa272('0x32')][_0xa272('0x3e')]+'%'};return _0x3d1b72;}})});}_0x539639=_[_0xa272('0x3c')]({},_0x539639,_0x2e8c84[_0xa272('0x3f')]);var _0x297625={'where':_0x539639['where']};return db[_0xa272('0x40')][_0xa272('0x1e')](_0x297625)[_0xa272('0x24')](function(_0x4bfab4){_0x156125[_0xa272('0x1e')]=_0x4bfab4;if(_0x2e8c84[_0xa272('0x32')]['includeAll']){_0x539639[_0xa272('0x41')]=[{'all':!![]}];}return db[_0xa272('0x40')][_0xa272('0x42')](_0x539639);})[_0xa272('0x24')](function(_0x40865d){_0x156125[_0xa272('0x43')]=_0x40865d;return _0x156125;})['then'](respondWithFilteredResult(_0x54f19f,_0x539639))[_0xa272('0x44')](handleError(_0x54f19f,null));};exports[_0xa272('0x45')]=function(_0x3a8320,_0x2570fe){var _0x203071={'raw':!![],'where':{'id':_0x3a8320[_0xa272('0x46')]['id']}},_0x59f073={};_0x59f073[_0xa272('0x2e')]=_[_0xa272('0x2f')](db[_0xa272('0x40')][_0xa272('0x47')]);_0x59f073[_0xa272('0x32')]=_[_0xa272('0x2f')](_0x3a8320['query']);_0x59f073['filters']=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],_0x59f073[_0xa272('0x32')]);_0x203071[_0xa272('0x33')]=_[_0xa272('0x31')](_0x59f073[_0xa272('0x2e')],qs['fields'](_0x3a8320[_0xa272('0x32')]['fields']));_0x203071['attributes']=_0x203071[_0xa272('0x33')]['length']?_0x203071[_0xa272('0x33')]:_0x59f073[_0xa272('0x2e')];if(_0x3a8320[_0xa272('0x32')][_0xa272('0x48')]){_0x203071['include']=[{'all':!![]}];}_0x203071=_['merge']({},_0x203071,_0x3a8320['options']);return db[_0xa272('0x40')][_0xa272('0x49')](_0x203071)[_0xa272('0x24')](handleEntityNotFound(_0x2570fe,null))[_0xa272('0x24')](respondWithResult(_0x2570fe,null))[_0xa272('0x44')](handleError(_0x2570fe,null));};exports[_0xa272('0x23')]=function(_0x36fff9,_0xa3689a){if(_0x36fff9[_0xa272('0x4a')]['id']){delete _0x36fff9['body']['id'];}return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x36fff9[_0xa272('0x46')]['id']}})[_0xa272('0x24')](handleEntityNotFound(_0xa3689a,null))[_0xa272('0x24')](saveUpdates(_0x36fff9['body'],null))[_0xa272('0x24')](respondWithResult(_0xa3689a,null))[_0xa272('0x44')](handleError(_0xa3689a,null));};exports[_0xa272('0x25')]=function(_0x208edd,_0x27a5fe){return db[_0xa272('0x40')][_0xa272('0x49')]({'where':{'id':_0x208edd[_0xa272('0x46')]['id']}})[_0xa272('0x24')](handleEntityNotFound(_0x27a5fe,null))['then'](removeEntity(_0x27a5fe,null))['catch'](handleError(_0x27a5fe,null));};exports['describe']=function(_0x2534f7,_0x3303c7){return db[_0xa272('0x40')]['describe']()[_0xa272('0x24')](respondWithResult(_0x3303c7,null))[_0xa272('0x44')](handleError(_0x3303c7,null));};
\ No newline at end of file
index 945a4f4..3339f66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee0c=['request-promise','path','exports','define','CmHopperBlack','cm_hopper_black','lodash','util','../../config/logger','api','moment'];(function(_0x191c2b,_0x2f6455){var _0x38dbee=function(_0x14c982){while(--_0x14c982){_0x191c2b['push'](_0x191c2b['shift']());}};_0x38dbee(++_0x2f6455);}(_0xee0c,0x124));var _0xcee0=function(_0x16fd18,_0x4fd96e){_0x16fd18=_0x16fd18-0x0;var _0x8a50bf=_0xee0c[_0x16fd18];return _0x8a50bf;};'use strict';var _=require(_0xcee0('0x0'));var util=require(_0xcee0('0x1'));var logger=require(_0xcee0('0x2'))(_0xcee0('0x3'));var moment=require(_0xcee0('0x4'));var BPromise=require('bluebird');var rp=require(_0xcee0('0x5'));var fs=require('fs');var path=require(_0xcee0('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopperBlack.attributes');module[_0xcee0('0x7')]=function(_0x132853,_0x34cec8){return _0x132853[_0xcee0('0x8')](_0xcee0('0x9'),attributes,{'tableName':_0xcee0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe0a4=['./cmHopperBlack.attributes','exports','define','CmHopperBlack','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x554aa4,_0xbd0d16){var _0x43f22a=function(_0x289d3e){while(--_0x289d3e){_0x554aa4['push'](_0x554aa4['shift']());}};_0x43f22a(++_0xbd0d16);}(_0xe0a4,0x10c));var _0x4e0a=function(_0x36dc43,_0x4c07f2){_0x36dc43=_0x36dc43-0x0;var _0x182891=_0xe0a4[_0x36dc43];return _0x182891;};'use strict';var _=require(_0x4e0a('0x0'));var util=require('util');var logger=require(_0x4e0a('0x1'))(_0x4e0a('0x2'));var moment=require(_0x4e0a('0x3'));var BPromise=require(_0x4e0a('0x4'));var rp=require(_0x4e0a('0x5'));var fs=require('fs');var path=require(_0x4e0a('0x6'));var rimraf=require('rimraf');var config=require(_0x4e0a('0x7'));var attributes=require(_0x4e0a('0x8'));module[_0x4e0a('0x9')]=function(_0x43f3dd,_0x109714){return _0x43f3dd[_0x4e0a('0xa')](_0x4e0a('0xb'),attributes,{'tableName':'cm_hopper_black','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 12029e0..b65555c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd209=['update','body','UpdateCmHopperBlack','catch','destroy','DestroyCmHopperBlack','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','CmHopperBlack,\x20%s,\x20%s','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','GetCmHopperBlack','options','raw','where','attributes','limit','include','map','model','CmHopperBlack'];(function(_0x2d089f,_0x4148b7){var _0x16497c=function(_0x1f3241){while(--_0x1f3241){_0x2d089f['push'](_0x2d089f['shift']());}};_0x16497c(++_0x4148b7);}(_0xd209,0x7b));var _0x9d20=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0xd209[_0x21aec3];return _0x288bbc;};'use strict';var _=require('lodash');var util=require(_0x9d20('0x0'));var moment=require(_0x9d20('0x1'));var BPromise=require(_0x9d20('0x2'));var rs=require(_0x9d20('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9d20('0x4'))['db'];var utils=require(_0x9d20('0x5'));var logger=require(_0x9d20('0x6'))(_0x9d20('0x7'));var config=require(_0x9d20('0x8'));var jayson=require(_0x9d20('0x9'));var client=jayson[_0x9d20('0xa')][_0x9d20('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x33754c,_0x62e625,_0x32157a){return new BPromise(function(_0x5141e6,_0x4d6c4c){return client['request'](_0x33754c,_0x32157a)[_0x9d20('0xc')](function(_0x33f79d){logger[_0x9d20('0xd')](_0x9d20('0xe'),_0x62e625,'request\x20sent');logger[_0x9d20('0xf')](_0x9d20('0x10'),_0x62e625,'request\x20sent',JSON[_0x9d20('0x11')](_0x33f79d));if(_0x33f79d[_0x9d20('0x12')]){if(_0x33f79d[_0x9d20('0x12')][_0x9d20('0x13')]===0x1f4){logger[_0x9d20('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x62e625,_0x33f79d[_0x9d20('0x12')]['message']);return _0x4d6c4c(_0x33f79d[_0x9d20('0x12')]['message']);}logger[_0x9d20('0x12')]('CmHopperBlack,\x20%s,\x20%s',_0x62e625,_0x33f79d['error'][_0x9d20('0x14')]);return _0x5141e6(_0x33f79d[_0x9d20('0x12')][_0x9d20('0x14')]);}else{logger[_0x9d20('0xd')](_0x9d20('0xe'),_0x62e625,_0x9d20('0x15'));_0x5141e6(_0x33f79d[_0x9d20('0x16')][_0x9d20('0x14')]);}})['catch'](function(_0x580b4f){logger[_0x9d20('0x12')](_0x9d20('0xe'),_0x62e625,_0x580b4f);_0x4d6c4c(_0x580b4f);});});}exports[_0x9d20('0x17')]=function(_0x14596b){var _0x18988f=this;return new Promise(function(_0x4f1de4,_0x59c886){return db['CmHopperBlack']['findAll']({'raw':_0x14596b[_0x9d20('0x18')]?_0x14596b[_0x9d20('0x18')][_0x9d20('0x19')]===undefined?!![]:![]:!![],'where':_0x14596b[_0x9d20('0x18')]?_0x14596b[_0x9d20('0x18')][_0x9d20('0x1a')]||null:null,'attributes':_0x14596b[_0x9d20('0x18')]?_0x14596b[_0x9d20('0x18')][_0x9d20('0x1b')]||null:null,'limit':_0x14596b['options']?_0x14596b['options'][_0x9d20('0x1c')]||null:null,'include':_0x14596b[_0x9d20('0x18')]?_0x14596b[_0x9d20('0x18')][_0x9d20('0x1d')]?_[_0x9d20('0x1e')](_0x14596b[_0x9d20('0x18')][_0x9d20('0x1d')],function(_0x44919a){return{'model':db[_0x44919a['model']],'as':_0x44919a['as'],'attributes':_0x44919a[_0x9d20('0x1b')],'include':_0x44919a[_0x9d20('0x1d')]?_[_0x9d20('0x1e')](_0x44919a[_0x9d20('0x1d')],function(_0x48269b){return{'model':db[_0x48269b[_0x9d20('0x1f')]],'as':_0x48269b['as'],'attributes':_0x48269b[_0x9d20('0x1b')],'include':_0x48269b[_0x9d20('0x1d')]?_['map'](_0x48269b['include'],function(_0x11eadb){return{'model':db[_0x11eadb[_0x9d20('0x1f')]],'as':_0x11eadb['as'],'attributes':_0x11eadb['attributes']};}):[]};}):[]};}):[]:[]})[_0x9d20('0xc')](function(_0x542704){logger[_0x9d20('0xd')]('GetCmHopperBlack',_0x14596b);logger[_0x9d20('0xf')]('GetCmHopperBlack',_0x14596b,JSON[_0x9d20('0x11')](_0x542704));_0x4f1de4(_0x542704);})['catch'](function(_0x8eaac8){logger['error']('GetCmHopperBlack',_0x8eaac8[_0x9d20('0x14')],_0x14596b);_0x59c886(_0x18988f[_0x9d20('0x12')](0x1f4,_0x8eaac8[_0x9d20('0x14')]));});});};exports['UpdateCmHopperBlack']=function(_0x1b9cd6){var _0x5133b7=this;return new Promise(function(_0xb25140,_0x49a265){return db[_0x9d20('0x20')][_0x9d20('0x21')](_0x1b9cd6[_0x9d20('0x22')],{'raw':_0x1b9cd6[_0x9d20('0x18')]?_0x1b9cd6['options'][_0x9d20('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b9cd6[_0x9d20('0x18')]?_0x1b9cd6[_0x9d20('0x18')][_0x9d20('0x1a')]||null:null,'attributes':_0x1b9cd6[_0x9d20('0x18')]?_0x1b9cd6['options'][_0x9d20('0x1b')]||null:null,'limit':_0x1b9cd6[_0x9d20('0x18')]?_0x1b9cd6[_0x9d20('0x18')][_0x9d20('0x1c')]||null:null})[_0x9d20('0xc')](function(_0x440b57){logger[_0x9d20('0xd')](_0x9d20('0x23'),_0x1b9cd6);logger[_0x9d20('0xf')]('UpdateCmHopperBlack',_0x1b9cd6,JSON['stringify'](_0x440b57));_0xb25140(_0x440b57);})[_0x9d20('0x24')](function(_0x390354){logger[_0x9d20('0x12')](_0x9d20('0x23'),_0x390354[_0x9d20('0x14')],_0x1b9cd6);_0x49a265(_0x5133b7[_0x9d20('0x12')](0x1f4,_0x390354[_0x9d20('0x14')]));});});};exports['DestroyCmHopperBlack']=function(_0x2cb8c9){var _0x4a845c=this;return new Promise(function(_0x2d1a01,_0xa5cc11){return db[_0x9d20('0x20')][_0x9d20('0x25')]({'where':_0x2cb8c9[_0x9d20('0x18')]?_0x2cb8c9[_0x9d20('0x18')][_0x9d20('0x1a')]||null:null})[_0x9d20('0xc')](function(_0x19aafd){logger[_0x9d20('0xd')](_0x9d20('0x26'),_0x2cb8c9);logger[_0x9d20('0xf')]('DestroyCmHopperBlack',_0x2cb8c9,JSON[_0x9d20('0x11')](_0x19aafd));_0x2d1a01(_0x19aafd);})[_0x9d20('0x24')](function(_0x228b9e){logger[_0x9d20('0x12')]('DestroyCmHopperBlack',_0x228b9e[_0x9d20('0x14')],_0x2cb8c9);_0xa5cc11(_0x4a845c[_0x9d20('0x12')](0x1f4,_0x228b9e[_0x9d20('0x14')]));});});};
\ No newline at end of file
+var _0x4fa9=['request\x20sent','stringify','error','code','message','catch','GetCmHopperBlack','options','where','attributes','limit','map','include','model','UpdateCmHopperBlack','CmHopperBlack','update','body','raw','debug','DestroyCmHopperBlack','destroy','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s'];(function(_0x605c18,_0x199929){var _0x49dfaf=function(_0x8ed18a){while(--_0x8ed18a){_0x605c18['push'](_0x605c18['shift']());}};_0x49dfaf(++_0x199929);}(_0x4fa9,0x1ad));var _0x94fa=function(_0x2393bf,_0x5ccd6f){_0x2393bf=_0x2393bf-0x0;var _0x548062=_0x4fa9[_0x2393bf];return _0x548062;};'use strict';var _=require(_0x94fa('0x0'));var util=require('util');var moment=require(_0x94fa('0x1'));var BPromise=require(_0x94fa('0x2'));var rs=require(_0x94fa('0x3'));var fs=require('fs');var Redis=require(_0x94fa('0x4'));var db=require(_0x94fa('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x94fa('0x6'))('rpc');var config=require(_0x94fa('0x7'));var jayson=require(_0x94fa('0x8'));var client=jayson[_0x94fa('0x9')][_0x94fa('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x215754,_0x34548a,_0x1b0773){return new BPromise(function(_0x33071d,_0x1d7e9b){return client[_0x94fa('0xb')](_0x215754,_0x1b0773)[_0x94fa('0xc')](function(_0x33cbf0){logger[_0x94fa('0xd')](_0x94fa('0xe'),_0x34548a,_0x94fa('0xf'));logger['debug']('CmHopperBlack,\x20%s,\x20%s,\x20%s',_0x34548a,_0x94fa('0xf'),JSON[_0x94fa('0x10')](_0x33cbf0));if(_0x33cbf0['error']){if(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x12')]===0x1f4){logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);return _0x1d7e9b(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);}logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);return _0x33071d(_0x33cbf0[_0x94fa('0x11')][_0x94fa('0x13')]);}else{logger[_0x94fa('0xd')]('CmHopperBlack,\x20%s,\x20%s',_0x34548a,'request\x20sent');_0x33071d(_0x33cbf0['result'][_0x94fa('0x13')]);}})[_0x94fa('0x14')](function(_0x36b971){logger[_0x94fa('0x11')](_0x94fa('0xe'),_0x34548a,_0x36b971);_0x1d7e9b(_0x36b971);});});}exports[_0x94fa('0x15')]=function(_0x40f355){var _0x388e7d=this;return new Promise(function(_0x4a98c8,_0x10a8ce){return db['CmHopperBlack']['findAll']({'raw':_0x40f355['options']?_0x40f355[_0x94fa('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x40f355[_0x94fa('0x16')]?_0x40f355[_0x94fa('0x16')][_0x94fa('0x17')]||null:null,'attributes':_0x40f355['options']?_0x40f355[_0x94fa('0x16')][_0x94fa('0x18')]||null:null,'limit':_0x40f355[_0x94fa('0x16')]?_0x40f355[_0x94fa('0x16')][_0x94fa('0x19')]||null:null,'include':_0x40f355[_0x94fa('0x16')]?_0x40f355['options']['include']?_[_0x94fa('0x1a')](_0x40f355['options'][_0x94fa('0x1b')],function(_0x5af0b9){return{'model':db[_0x5af0b9[_0x94fa('0x1c')]],'as':_0x5af0b9['as'],'attributes':_0x5af0b9['attributes'],'include':_0x5af0b9[_0x94fa('0x1b')]?_[_0x94fa('0x1a')](_0x5af0b9[_0x94fa('0x1b')],function(_0x2c54c9){return{'model':db[_0x2c54c9[_0x94fa('0x1c')]],'as':_0x2c54c9['as'],'attributes':_0x2c54c9[_0x94fa('0x18')],'include':_0x2c54c9[_0x94fa('0x1b')]?_[_0x94fa('0x1a')](_0x2c54c9[_0x94fa('0x1b')],function(_0x17d295){return{'model':db[_0x17d295['model']],'as':_0x17d295['as'],'attributes':_0x17d295[_0x94fa('0x18')]};}):[]};}):[]};}):[]:[]})[_0x94fa('0xc')](function(_0x31c6e0){logger[_0x94fa('0xd')](_0x94fa('0x15'),_0x40f355);logger['debug'](_0x94fa('0x15'),_0x40f355,JSON[_0x94fa('0x10')](_0x31c6e0));_0x4a98c8(_0x31c6e0);})[_0x94fa('0x14')](function(_0x433834){logger[_0x94fa('0x11')](_0x94fa('0x15'),_0x433834['message'],_0x40f355);_0x10a8ce(_0x388e7d['error'](0x1f4,_0x433834[_0x94fa('0x13')]));});});};exports[_0x94fa('0x1d')]=function(_0x4834fe){var _0x4ba4b3=this;return new Promise(function(_0xe71834,_0x38a800){return db[_0x94fa('0x1e')][_0x94fa('0x1f')](_0x4834fe[_0x94fa('0x20')],{'raw':_0x4834fe[_0x94fa('0x16')]?_0x4834fe['options'][_0x94fa('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4834fe[_0x94fa('0x16')]?_0x4834fe[_0x94fa('0x16')]['where']||null:null,'attributes':_0x4834fe[_0x94fa('0x16')]?_0x4834fe[_0x94fa('0x16')][_0x94fa('0x18')]||null:null,'limit':_0x4834fe[_0x94fa('0x16')]?_0x4834fe['options']['limit']||null:null})[_0x94fa('0xc')](function(_0x40346c){logger[_0x94fa('0xd')](_0x94fa('0x1d'),_0x4834fe);logger[_0x94fa('0x22')](_0x94fa('0x1d'),_0x4834fe,JSON[_0x94fa('0x10')](_0x40346c));_0xe71834(_0x40346c);})[_0x94fa('0x14')](function(_0x572372){logger['error']('UpdateCmHopperBlack',_0x572372[_0x94fa('0x13')],_0x4834fe);_0x38a800(_0x4ba4b3[_0x94fa('0x11')](0x1f4,_0x572372[_0x94fa('0x13')]));});});};exports[_0x94fa('0x23')]=function(_0x57ea21){var _0x1662bd=this;return new Promise(function(_0x233bfd,_0xfae64d){return db['CmHopperBlack'][_0x94fa('0x24')]({'where':_0x57ea21[_0x94fa('0x16')]?_0x57ea21[_0x94fa('0x16')][_0x94fa('0x17')]||null:null})['then'](function(_0x100629){logger[_0x94fa('0xd')](_0x94fa('0x23'),_0x57ea21);logger['debug']('DestroyCmHopperBlack',_0x57ea21,JSON[_0x94fa('0x10')](_0x100629));_0x233bfd(_0x100629);})[_0x94fa('0x14')](function(_0x3d6563){logger[_0x94fa('0x11')](_0x94fa('0x23'),_0x3d6563['message'],_0x57ea21);_0xfae64d(_0x1662bd[_0x94fa('0x11')](0x1f4,_0x3d6563[_0x94fa('0x13')]));});});};
\ No newline at end of file
index 1dd230f..3c8d1bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fd4=['put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','describe','/:id'];(function(_0x1460e4,_0x297ba4){var _0x4ef818=function(_0x44775b){while(--_0x44775b){_0x1460e4['push'](_0x1460e4['shift']());}};_0x4ef818(++_0x297ba4);}(_0x9fd4,0x16c));var _0x49fd=function(_0x5a35c2,_0x25015b){_0x5a35c2=_0x5a35c2-0x0;var _0x53902d=_0x9fd4[_0x5a35c2];return _0x53902d;};'use strict';var multer=require(_0x49fd('0x0'));var util=require(_0x49fd('0x1'));var path=require(_0x49fd('0x2'));var timeout=require(_0x49fd('0x3'));var express=require(_0x49fd('0x4'));var router=express[_0x49fd('0x5')]();var fs_extra=require(_0x49fd('0x6'));var auth=require(_0x49fd('0x7'));var interaction=require(_0x49fd('0x8'));var config=require('../../config/environment');var controller=require('./cmHopperBlack.controller');router[_0x49fd('0x9')]('/',auth[_0x49fd('0xa')](),controller[_0x49fd('0xb')]);router[_0x49fd('0x9')]('/describe',auth[_0x49fd('0xa')](),controller[_0x49fd('0xc')]);router[_0x49fd('0x9')](_0x49fd('0xd'),auth[_0x49fd('0xa')](),controller['show']);router[_0x49fd('0xe')](_0x49fd('0xd'),auth[_0x49fd('0xa')](),controller[_0x49fd('0xf')]);router[_0x49fd('0x10')](_0x49fd('0xd'),auth[_0x49fd('0xa')](),controller['destroy']);module[_0x49fd('0x11')]=router;
\ No newline at end of file
+var _0x4745=['isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index'];(function(_0x516a3e,_0x5e19bb){var _0x5d7c88=function(_0x531272){while(--_0x531272){_0x516a3e['push'](_0x516a3e['shift']());}};_0x5d7c88(++_0x5e19bb);}(_0x4745,0x1e7));var _0x5474=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0x4745[_0x25bea7];return _0x175952;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller['destroy']);module[_0x5474('0x13')]=router;
\ No newline at end of file
index 2a47d89..6d7bd7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc52d=['STRING','DATE','setDataValue','diff','seconds','BOOLEAN','moment','INTEGER'];(function(_0x4179e2,_0xf2dbb){var _0x24cb50=function(_0x3b7899){while(--_0x3b7899){_0x4179e2['push'](_0x4179e2['shift']());}};_0x24cb50(++_0xf2dbb);}(_0xc52d,0xe6));var _0xdc52=function(_0x5c53b1,_0x2f8af8){_0x5c53b1=_0x5c53b1-0x0;var _0x43fa61=_0xc52d[_0x5c53b1];return _0x43fa61;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xdc52('0x0'));module['exports']={'state':{'type':Sequelize[_0xdc52('0x1')](0x2)},'statedesc':{'type':Sequelize[_0xdc52('0x2')]},'scheduledat':{'type':Sequelize[_0xdc52('0x3')]},'countbusyretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xdc52('0x2')]},'originatecalleridnum':{'type':Sequelize[_0xdc52('0x2')]},'originatecalleridname':{'type':Sequelize[_0xdc52('0x2')]},'calleridnum':{'type':Sequelize[_0xdc52('0x2')]},'calleridname':{'type':Sequelize[_0xdc52('0x2')]},'starttime':{'type':Sequelize[_0xdc52('0x3')]},'responsetime':{'type':Sequelize[_0xdc52('0x3')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize[_0xdc52('0x3')]},'endtime':{'type':Sequelize['DATE']},'ringtime':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xdc52('0x2')]},'campaign':{'type':Sequelize[_0xdc52('0x2')]},'campaigntype':{'type':Sequelize[_0xdc52('0x2')]},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0xdc52('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xdc52('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'dispositionat':{'type':Sequelize[_0xdc52('0x3')],'set':function(_0x190ca0){var _0x546ea6=this['getDataValue']('endtime');if(_0x546ea6&&_0x190ca0){this[_0xdc52('0x4')]('followuptime',moment(_0x190ca0)[_0xdc52('0x5')](moment(_0x546ea6),_0xdc52('0x6')));}}},'amd':{'type':Sequelize[_0xdc52('0x7')],'defaultValue':![]},'fax':{'type':Sequelize[_0xdc52('0x7')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xdc52('0x7')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xdc52('0x7')],'defaultValue':![]},'rescheduledat':{'type':Sequelize['DATE']},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xdc52('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xdc52('0x3')]},'deleted':{'type':Sequelize[_0xdc52('0x2')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xdc52('0x3')]},'recallme':{'type':Sequelize[_0xdc52('0x7')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xdc52('0x3')]},'countnosuchnumberretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xdc52('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x473f=['followuptime','diff','BOOLEAN','sequelize','moment','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue'];(function(_0x35639c,_0xfba17c){var _0x1ca47a=function(_0x523339){while(--_0x523339){_0x35639c['push'](_0x35639c['shift']());}};_0x1ca47a(++_0xfba17c);}(_0x473f,0x1cb));var _0xf473=function(_0x1a29a6,_0x1a7ebd){_0x1a29a6=_0x1a29a6-0x0;var _0x283c71=_0x473f[_0x1a29a6];return _0x283c71;};'use strict';var Sequelize=require(_0xf473('0x0'));var moment=require(_0xf473('0x1'));module[_0xf473('0x2')]={'state':{'type':Sequelize[_0xf473('0x3')](0x2)},'statedesc':{'type':Sequelize[_0xf473('0x4')]},'scheduledat':{'type':Sequelize[_0xf473('0x5')]},'countbusyretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf473('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xf473('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf473('0x4')]},'calleridnum':{'type':Sequelize[_0xf473('0x4')]},'calleridname':{'type':Sequelize[_0xf473('0x4')]},'starttime':{'type':Sequelize[_0xf473('0x5')]},'responsetime':{'type':Sequelize[_0xf473('0x5')]},'answertime':{'type':Sequelize[_0xf473('0x5')]},'droptime':{'type':Sequelize[_0xf473('0x5')]},'endtime':{'type':Sequelize[_0xf473('0x5')]},'ringtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf473('0x4')]},'membername':{'type':Sequelize[_0xf473('0x4')]},'reason':{'type':Sequelize[_0xf473('0x4')]},'disposition':{'type':Sequelize[_0xf473('0x4')]},'secondDisposition':{'type':Sequelize[_0xf473('0x4')]},'thirdDisposition':{'type':Sequelize[_0xf473('0x4')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x1e51fc){var _0x22da9f=this[_0xf473('0x6')](_0xf473('0x7'));if(_0x22da9f&&_0x1e51fc){this[_0xf473('0x8')](_0xf473('0x9'),moment(_0x1e51fc)[_0xf473('0xa')](moment(_0x22da9f),'seconds'));}}},'amd':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xf473('0x5')]},'callback':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf473('0x4')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf473('0x5')]},'deleted':{'type':Sequelize[_0xf473('0x4')],'defaultValue':null},'deletedat':{'type':Sequelize[_0xf473('0x5')]},'recallme':{'type':Sequelize[_0xf473('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xf473('0x5')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf473('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 819c889..6ea2003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['ejs','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','CmHopperFinal','includeAll','rows','catch','show','params','intersection','include','find','describe','body','uniqueid','findAll','sequelize','literal','noSuchContacts','COUNT','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x200,\x201,\x20null','busyContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','`state`\x20=\x2022,\x201,\x20null','moveContactsQueueCampaignHopperFinal','cm_hopper','fromQuery','phone','scheduledAt','ListId','VoiceQueueId','updatedAt','select','field','NOW()','ANY_VALUE(ContactId)','ContactId','ANY_VALUE(ListId)','createdAt','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','from','calleridnum','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','insert','into','CampaignId','ANY_VALUE(calleridnum)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','CmHopper','findOne','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv'];(function(_0x5c6d2,_0x1d4644){var _0x426a7f=function(_0x39497d){while(--_0x39497d){_0x5c6d2['push'](_0x5c6d2['shift']());}};_0x426a7f(++_0x1d4644);}(_0x0295,0x1f0));var _0x5029=function(_0x34022f,_0x21134c){_0x34022f=_0x34022f-0x0;var _0x1bebdf=_0x0295[_0x34022f];return _0x1bebdf;};'use strict';var emlformat=require(_0x5029('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x5029('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x5029('0x2'));var Mustache=require(_0x5029('0x3'));var util=require(_0x5029('0x4'));var path=require(_0x5029('0x5'));var sox=require(_0x5029('0x6'));var csv=require(_0x5029('0x7'));var ejs=require(_0x5029('0x8'));var fs=require('fs');var fs_extra=require(_0x5029('0x9'));var _=require(_0x5029('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x5029('0xb'));var toCsv=require('to-csv');var querystring=require(_0x5029('0xc'));var Papa=require('papaparse');var Redis=require(_0x5029('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x5029('0xe'));var as=require(_0x5029('0xf'));var hardwareService=require(_0x5029('0x10'));var logger=require('../../config/logger')(_0x5029('0x11'));var utils=require(_0x5029('0x12'));var config=require(_0x5029('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x5029('0x14'))['db'];function respondWithStatusCode(_0x2442b2,_0x4cced9){_0x4cced9=_0x4cced9||0xcc;return function(_0x4fa22d){if(_0x4fa22d){return _0x2442b2['sendStatus'](_0x4cced9);}return _0x2442b2['status'](_0x4cced9)[_0x5029('0x15')]();};}function respondWithResult(_0x2e0369,_0x12c237){_0x12c237=_0x12c237||0xc8;return function(_0x434630){if(_0x434630){return _0x2e0369[_0x5029('0x16')](_0x12c237)[_0x5029('0x17')](_0x434630);}};}function respondWithFilteredResult(_0xe278b7,_0x317c20){return function(_0x10bf55){if(_0x10bf55){var _0x326923=typeof _0x317c20[_0x5029('0x18')]===_0x5029('0x19')&&typeof _0x317c20[_0x5029('0x1a')]===_0x5029('0x19');var _0x343918=_0x10bf55['count'];var _0x1ed567=_0x326923?0x0:_0x317c20[_0x5029('0x18')];var _0x35de81=_0x326923?_0x10bf55[_0x5029('0x1b')]:_0x317c20[_0x5029('0x18')]+_0x317c20[_0x5029('0x1a')];var _0xaba461;if(_0x35de81>=_0x343918){_0x35de81=_0x343918;_0xaba461=0xc8;}else{_0xaba461=0xce;}_0xe278b7['status'](_0xaba461);return _0xe278b7[_0x5029('0x1c')]('Content-Range',_0x1ed567+'-'+_0x35de81+'/'+_0x343918)[_0x5029('0x17')](_0x10bf55);}return null;};}function patchUpdates(_0x8a414c){return function(_0x2710aa){try{jsonpatch[_0x5029('0x1d')](_0x2710aa,_0x8a414c,!![]);}catch(_0x4b5854){return BPromise['reject'](_0x4b5854);}return _0x2710aa[_0x5029('0x1e')]();};}function saveUpdates(_0x4a49b6,_0x3f657d){return function(_0x853a34){if(_0x853a34){return _0x853a34[_0x5029('0x1f')](_0x4a49b6)[_0x5029('0x20')](function(_0x16bd22){return _0x16bd22;});}return null;};}function removeEntity(_0x3a3e52,_0x125c26){return function(_0x356dac){if(_0x356dac){return _0x356dac[_0x5029('0x21')]()['then'](function(){_0x3a3e52['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x588d90,_0x45666c){return function(_0x51093c){if(!_0x51093c){_0x588d90['sendStatus'](0x194);}return _0x51093c;};}function handleError(_0x181da0,_0x1e7e61){_0x1e7e61=_0x1e7e61||0x1f4;return function(_0x36d810){logger['error'](_0x36d810[_0x5029('0x22')]);if(_0x36d810[_0x5029('0x23')]){delete _0x36d810['name'];}_0x181da0[_0x5029('0x16')](_0x1e7e61)[_0x5029('0x24')](_0x36d810);};}exports[_0x5029('0x25')]=function(_0x4a24b9,_0x32da06){var _0x251f99={},_0xe5313e={},_0x4b6f92={'count':0x0,'rows':[]};var _0x2cedf6=_[_0x5029('0x26')](db['CmHopperFinal'][_0x5029('0x27')],function(_0x25032b){return{'name':_0x25032b[_0x5029('0x28')],'type':_0x25032b[_0x5029('0x29')][_0x5029('0x2a')]};});_0xe5313e[_0x5029('0x2b')]=_[_0x5029('0x26')](_0x2cedf6,_0x5029('0x23'));_0xe5313e[_0x5029('0x2c')]=_[_0x5029('0x2d')](_0x4a24b9[_0x5029('0x2c')]);_0xe5313e[_0x5029('0x2e')]=_['intersection'](_0xe5313e[_0x5029('0x2b')],_0xe5313e['query']);_0x251f99[_0x5029('0x2f')]=_['intersection'](_0xe5313e['model'],qs[_0x5029('0x30')](_0x4a24b9[_0x5029('0x2c')][_0x5029('0x30')]));_0x251f99['attributes']=_0x251f99[_0x5029('0x2f')][_0x5029('0x31')]?_0x251f99[_0x5029('0x2f')]:_0xe5313e[_0x5029('0x2b')];if(!_0x4a24b9[_0x5029('0x2c')][_0x5029('0x32')](_0x5029('0x33'))){_0x251f99[_0x5029('0x1a')]=qs[_0x5029('0x1a')](_0x4a24b9['query'][_0x5029('0x1a')]);_0x251f99[_0x5029('0x18')]=qs[_0x5029('0x18')](_0x4a24b9[_0x5029('0x2c')]['offset']);}_0x251f99[_0x5029('0x34')]=qs[_0x5029('0x35')](_0x4a24b9[_0x5029('0x2c')]['sort']);_0x251f99['where']=qs[_0x5029('0x2e')](_[_0x5029('0x36')](_0x4a24b9['query'],_0xe5313e['filters']),_0x2cedf6);if(_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]){_0x251f99[_0x5029('0x38')]=_[_0x5029('0x39')](_0x251f99[_0x5029('0x38')],{'$or':_[_0x5029('0x26')](_0x2cedf6,function(_0x3cb84e){if(_0x3cb84e[_0x5029('0x29')]!==_0x5029('0x3a')){var _0x3effa4={};_0x3effa4[_0x3cb84e[_0x5029('0x23')]]={'$like':'%'+_0x4a24b9[_0x5029('0x2c')][_0x5029('0x37')]+'%'};return _0x3effa4;}})});}_0x251f99=_[_0x5029('0x39')]({},_0x251f99,_0x4a24b9['options']);var _0x57c2b5={'where':_0x251f99[_0x5029('0x38')]};return db[_0x5029('0x3b')][_0x5029('0x1b')](_0x57c2b5)['then'](function(_0x32d8a3){_0x4b6f92[_0x5029('0x1b')]=_0x32d8a3;if(_0x4a24b9['query'][_0x5029('0x3c')]){_0x251f99['include']=[{'all':!![]}];}return db[_0x5029('0x3b')]['findAll'](_0x251f99);})[_0x5029('0x20')](function(_0x359838){_0x4b6f92[_0x5029('0x3d')]=_0x359838;return _0x4b6f92;})[_0x5029('0x20')](respondWithFilteredResult(_0x32da06,_0x251f99))[_0x5029('0x3e')](handleError(_0x32da06,null));};exports[_0x5029('0x3f')]=function(_0x4b2219,_0x1021ea){var _0x2ae047={'raw':!![],'where':{'id':_0x4b2219[_0x5029('0x40')]['id']}},_0x5a3e4d={};_0x5a3e4d[_0x5029('0x2b')]=_[_0x5029('0x2d')](db[_0x5029('0x3b')][_0x5029('0x27')]);_0x5a3e4d[_0x5029('0x2c')]=_['keys'](_0x4b2219[_0x5029('0x2c')]);_0x5a3e4d[_0x5029('0x2e')]=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],_0x5a3e4d[_0x5029('0x2c')]);_0x2ae047['attributes']=_[_0x5029('0x41')](_0x5a3e4d[_0x5029('0x2b')],qs[_0x5029('0x30')](_0x4b2219[_0x5029('0x2c')][_0x5029('0x30')]));_0x2ae047[_0x5029('0x2f')]=_0x2ae047[_0x5029('0x2f')][_0x5029('0x31')]?_0x2ae047[_0x5029('0x2f')]:_0x5a3e4d['model'];if(_0x4b2219[_0x5029('0x2c')][_0x5029('0x3c')]){_0x2ae047[_0x5029('0x42')]=[{'all':!![]}];}_0x2ae047=_[_0x5029('0x39')]({},_0x2ae047,_0x4b2219['options']);return db['CmHopperFinal'][_0x5029('0x43')](_0x2ae047)[_0x5029('0x20')](handleEntityNotFound(_0x1021ea,null))[_0x5029('0x20')](respondWithResult(_0x1021ea,null))[_0x5029('0x3e')](handleError(_0x1021ea,null));};exports[_0x5029('0x44')]=function(_0x3dfc08,_0x2bb7fc){return db[_0x5029('0x3b')][_0x5029('0x44')]()[_0x5029('0x20')](respondWithResult(_0x2bb7fc,null))[_0x5029('0x3e')](handleError(_0x2bb7fc,null));};exports[_0x5029('0x1f')]=function(_0x449ef5,_0x18f1f5){if(_0x449ef5[_0x5029('0x45')][_0x5029('0x46')]){delete _0x449ef5[_0x5029('0x45')][_0x5029('0x46')];}return db[_0x5029('0x3b')][_0x5029('0x43')]({'where':{'uniqueid':_0x449ef5[_0x5029('0x40')]['id']}})['then'](handleEntityNotFound(_0x18f1f5,null))[_0x5029('0x20')](saveUpdates(_0x449ef5['body'],null))[_0x5029('0x20')](respondWithResult(_0x18f1f5,null))[_0x5029('0x3e')](handleError(_0x18f1f5,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x5343c6,_0x319bff,_0x5e739d){return db['CmHopperFinal'][_0x5029('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x5343c6[_0x5029('0x40')]['id']},'attributes':[[db[_0x5029('0x48')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x200,\x201,\x20null'))),_0x5029('0x4a')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x4c')))),_0x5029('0x4d')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')]['literal'](_0x5029('0x4e')))),'busyContacts'],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')]['literal']('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x5029('0x4f')],[db['sequelize']['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x50')))),_0x5029('0x51')],[db['sequelize']['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x2022,\x201,\x20null'))),_0x5029('0x52')],[db[_0x5029('0x48')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x53')))),_0x5029('0x54')]]})['then'](handleEntityNotFound(_0x319bff,null))[_0x5029('0x20')](respondWithResult(_0x319bff,null))[_0x5029('0x3e')](handleError(_0x319bff,null));};exports[_0x5029('0x55')]=function(_0x2aebb3,_0x3a82f7,_0x26f56f){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x2aebb3[_0x5029('0x40')]['id']},'attributes':[[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x56')))),_0x5029('0x4a')],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')]('`state`\x20=\x203,\x201,\x20null'))),_0x5029('0x4d')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x4e')))),_0x5029('0x57')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')][_0x5029('0x49')](_0x5029('0x58')))),_0x5029('0x59')],[db[_0x5029('0x48')]['fn']('COUNT',db[_0x5029('0x48')]['fn']('IF',db['sequelize'][_0x5029('0x49')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x5029('0x4f')],[db['sequelize']['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db['sequelize'][_0x5029('0x49')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x5029('0x51')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db['sequelize']['fn']('IF',db[_0x5029('0x48')]['literal'](_0x5029('0x5a')))),_0x5029('0x52')],[db[_0x5029('0x48')]['fn'](_0x5029('0x4b'),db[_0x5029('0x48')]['fn']('IF',db['sequelize'][_0x5029('0x49')](_0x5029('0x53')))),'answeringMachine']]})[_0x5029('0x20')](handleEntityNotFound(_0x3a82f7,null))[_0x5029('0x20')](respondWithResult(_0x3a82f7,null))[_0x5029('0x3e')](handleError(_0x3a82f7,null));};exports[_0x5029('0x5b')]=function(_0x9b1c13,_0x1bd1c6,_0x5bd84e){return db['VoiceQueue'][_0x5029('0x43')]({'where':{'id':_0x9b1c13['params']['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x1bd1c6,null))[_0x5029('0x20')](function(_0x58db57){var _0x181956;if(_0x58db57){_0x181956=squel['insert']()['into'](_0x5029('0x5c'))[_0x5029('0x5d')]([_0x5029('0x5e'),_0x5029('0x5f'),'ContactId',_0x5029('0x60'),_0x5029('0x61'),'createdAt',_0x5029('0x62')],squel[_0x5029('0x63')]()['field']('ANY_VALUE(calleridnum)','phone')[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x5f'))[_0x5029('0x64')](_0x5029('0x66'),_0x5029('0x67'))[_0x5029('0x64')](_0x5029('0x68'),_0x5029('0x60'))['field']('ANY_VALUE(VoiceQueueId)',_0x5029('0x61'))[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x69'))[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x62'))['from'](_0x5029('0x6a'))[_0x5029('0x38')](_0x5029('0x6b'),_0x9b1c13['params']['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x6d'),_0x9b1c13['body'][_0x5029('0x6e')][_0x5029('0x6c')]())[_0x5029('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')[_0x5029('0x38')](_0x5029('0x6f'),squel['select']()[_0x5029('0x64')](_0x5029('0x5e'))[_0x5029('0x70')](_0x5029('0x5c'))[_0x5029('0x38')]('VoiceQueueId\x20=\x20?',_0x9b1c13[_0x5029('0x40')]['id'][_0x5029('0x6c')]()))[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()['field'](_0x5029('0x71'))[_0x5029('0x70')](_0x5029('0x6a'))['where'](_0x5029('0x6b'),_0x9b1c13[_0x5029('0x40')]['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x72')))[_0x5029('0x73')](_0x5029('0x67')))['toString']();return db[_0x5029('0x48')][_0x5029('0x2c')](_0x181956);}return[];})[_0x5029('0x20')](respondWithResult(_0x1bd1c6,null))[_0x5029('0x3e')](handleError(_0x1bd1c6,null));};exports[_0x5029('0x74')]=function(_0x4c40d1,_0x209c83,_0x443070){return db[_0x5029('0x75')]['find']({'where':{'id':_0x4c40d1[_0x5029('0x40')]['id']}})[_0x5029('0x20')](handleEntityNotFound(_0x209c83,null))['then'](function(_0x5c8bd4){var _0x524825;if(_0x5c8bd4){_0x524825=squel[_0x5029('0x76')]()[_0x5029('0x77')](_0x5029('0x5c'))[_0x5029('0x5d')]([_0x5029('0x5e'),'scheduledAt',_0x5029('0x67'),_0x5029('0x60'),_0x5029('0x78'),'createdAt','updatedAt'],squel[_0x5029('0x63')]()[_0x5029('0x64')](_0x5029('0x79'),_0x5029('0x5e'))['field'](_0x5029('0x65'),_0x5029('0x5f'))[_0x5029('0x64')](_0x5029('0x66'),_0x5029('0x67'))[_0x5029('0x64')](_0x5029('0x68'),_0x5029('0x60'))['field'](_0x5029('0x7a'),'CampaignId')['field'](_0x5029('0x65'),'createdAt')[_0x5029('0x64')](_0x5029('0x65'),_0x5029('0x62'))[_0x5029('0x70')](_0x5029('0x6a'))[_0x5029('0x38')](_0x5029('0x7b'),_0x4c40d1[_0x5029('0x40')]['id']['toString']())['where'](_0x5029('0x6d'),_0x4c40d1['body']['state'][_0x5029('0x6c')]())['where']('calleridnum\x20IS\x20NOT\x20NULL')[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()[_0x5029('0x64')](_0x5029('0x5e'))['from'](_0x5029('0x5c'))[_0x5029('0x38')](_0x5029('0x7b'),_0x4c40d1['params']['id'][_0x5029('0x6c')]()))[_0x5029('0x38')](_0x5029('0x6f'),squel[_0x5029('0x63')]()[_0x5029('0x64')]('calleridnum')['from'](_0x5029('0x6a'))[_0x5029('0x38')]('CampaignId\x20=\x20?',_0x4c40d1[_0x5029('0x40')]['id'][_0x5029('0x6c')]())[_0x5029('0x38')](_0x5029('0x72')))[_0x5029('0x73')](_0x5029('0x67')))[_0x5029('0x6c')]();return db[_0x5029('0x48')]['query'](_0x524825);}return[];})['then'](respondWithResult(_0x209c83,null))[_0x5029('0x3e')](handleError(_0x209c83,null));};exports['checkContactHopper']=function(_0x20a259,_0x5e5f88,_0x36fdce){return db[_0x5029('0x7c')][_0x5029('0x7d')]({'where':{'VoiceQueueId':_0x20a259['body'][_0x5029('0x61')],'CampaignId':_0x20a259[_0x5029('0x45')][_0x5029('0x78')],'ContactId':_0x20a259['body'][_0x5029('0x67')]}})[_0x5029('0x20')](handleEntityNotFound(_0x5e5f88,null))[_0x5029('0x20')](function(_0x4421bd){if(_0x4421bd){return _0x4421bd;}return null;})[_0x5029('0x20')](respondWithResult(_0x5e5f88,null))[_0x5029('0x3e')](handleError(_0x5e5f88,null));};
\ No newline at end of file
+var _0x2542=['Content-Range','apply','update','then','error','stack','name','index','map','CmHopperFinal','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','describe','body','uniqueid','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','`state`\x20=\x203,\x201,\x20null','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','noSuchContacts','`state`\x20=\x208,\x201,\x20null','congestionContacts','abandonedContacts','VoiceQueue','into','fromQuery','phone','ListId','VoiceQueueId','createdAt','updatedAt','field','ANY_VALUE(calleridnum)','scheduledAt','ContactId','ANY_VALUE(ListId)','NOW()','from','cm_hopper_final','VoiceQueueId\x20=\x20?','state\x20=\x20?','state','toString','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','select','calleridnum','group','moveContactsIvrCampaignHopperFinal','Campaign','CampaignId','ANY_VALUE(ContactId)','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','cm_hopper','state\x20=\x204','checkContactHopper','CmHopper','findOne','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','limit','undefined','count','set'];(function(_0x11d72f,_0x38723a){var _0x26c028=function(_0x4dd2e4){while(--_0x4dd2e4){_0x11d72f['push'](_0x11d72f['shift']());}};_0x26c028(++_0x38723a);}(_0x2542,0x169));var _0x2254=function(_0xdd3f9a,_0x4d9fbc){_0xdd3f9a=_0xdd3f9a-0x0;var _0x4186f3=_0x2542[_0xdd3f9a];return _0x4186f3;};'use strict';var emlformat=require(_0x2254('0x0'));var rimraf=require(_0x2254('0x1'));var zipdir=require(_0x2254('0x2'));var jsonpatch=require(_0x2254('0x3'));var rp=require('request-promise');var moment=require(_0x2254('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2254('0x5'));var util=require(_0x2254('0x6'));var path=require(_0x2254('0x7'));var sox=require(_0x2254('0x8'));var csv=require(_0x2254('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2254('0xa'));var _=require(_0x2254('0xb'));var squel=require(_0x2254('0xc'));var crypto=require(_0x2254('0xd'));var jsforce=require(_0x2254('0xe'));var deskjs=require(_0x2254('0xf'));var toCsv=require(_0x2254('0x9'));var querystring=require(_0x2254('0x10'));var Papa=require(_0x2254('0x11'));var Redis=require(_0x2254('0x12'));var authService=require(_0x2254('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x2254('0x14'));var hardwareService=require(_0x2254('0x15'));var logger=require(_0x2254('0x16'))(_0x2254('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2254('0x18'));var db=require(_0x2254('0x19'))['db'];function respondWithStatusCode(_0x116b70,_0xdcb670){_0xdcb670=_0xdcb670||0xcc;return function(_0x3c326b){if(_0x3c326b){return _0x116b70[_0x2254('0x1a')](_0xdcb670);}return _0x116b70['status'](_0xdcb670)[_0x2254('0x1b')]();};}function respondWithResult(_0x7c7ab0,_0x504749){_0x504749=_0x504749||0xc8;return function(_0x2f4de){if(_0x2f4de){return _0x7c7ab0[_0x2254('0x1c')](_0x504749)[_0x2254('0x1d')](_0x2f4de);}};}function respondWithFilteredResult(_0x145272,_0x26285a){return function(_0xbc5548){if(_0xbc5548){var _0x50f137=typeof _0x26285a[_0x2254('0x1e')]==='undefined'&&typeof _0x26285a[_0x2254('0x1f')]===_0x2254('0x20');var _0x170ffa=_0xbc5548[_0x2254('0x21')];var _0x1ae11e=_0x50f137?0x0:_0x26285a[_0x2254('0x1e')];var _0x497724=_0x50f137?_0xbc5548['count']:_0x26285a['offset']+_0x26285a[_0x2254('0x1f')];var _0x3a79f8;if(_0x497724>=_0x170ffa){_0x497724=_0x170ffa;_0x3a79f8=0xc8;}else{_0x3a79f8=0xce;}_0x145272[_0x2254('0x1c')](_0x3a79f8);return _0x145272[_0x2254('0x22')](_0x2254('0x23'),_0x1ae11e+'-'+_0x497724+'/'+_0x170ffa)[_0x2254('0x1d')](_0xbc5548);}return null;};}function patchUpdates(_0x487f72){return function(_0x28381e){try{jsonpatch[_0x2254('0x24')](_0x28381e,_0x487f72,!![]);}catch(_0x906cde){return BPromise['reject'](_0x906cde);}return _0x28381e['save']();};}function saveUpdates(_0x5bd982,_0x1e8a98){return function(_0x559af4){if(_0x559af4){return _0x559af4[_0x2254('0x25')](_0x5bd982)['then'](function(_0x5713e4){return _0x5713e4;});}return null;};}function removeEntity(_0x4d8faf,_0x540020){return function(_0x5e5edb){if(_0x5e5edb){return _0x5e5edb['destroy']()[_0x2254('0x26')](function(){_0x4d8faf[_0x2254('0x1c')](0xcc)[_0x2254('0x1b')]();});}};}function handleEntityNotFound(_0x265467,_0x13522d){return function(_0x1349c9){if(!_0x1349c9){_0x265467['sendStatus'](0x194);}return _0x1349c9;};}function handleError(_0x4a8274,_0x1ada42){_0x1ada42=_0x1ada42||0x1f4;return function(_0x4f6877){logger[_0x2254('0x27')](_0x4f6877[_0x2254('0x28')]);if(_0x4f6877[_0x2254('0x29')]){delete _0x4f6877[_0x2254('0x29')];}_0x4a8274[_0x2254('0x1c')](_0x1ada42)['send'](_0x4f6877);};}exports[_0x2254('0x2a')]=function(_0x2a789b,_0x21285d){var _0x37af8b={},_0x13366a={},_0x377c41={'count':0x0,'rows':[]};var _0x3214a7=_[_0x2254('0x2b')](db[_0x2254('0x2c')][_0x2254('0x2d')],function(_0x21c641){return{'name':_0x21c641[_0x2254('0x2e')],'type':_0x21c641[_0x2254('0x2f')][_0x2254('0x30')]};});_0x13366a[_0x2254('0x31')]=_[_0x2254('0x2b')](_0x3214a7,_0x2254('0x29'));_0x13366a[_0x2254('0x32')]=_[_0x2254('0x33')](_0x2a789b['query']);_0x13366a[_0x2254('0x34')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],_0x13366a[_0x2254('0x32')]);_0x37af8b[_0x2254('0x36')]=_[_0x2254('0x35')](_0x13366a[_0x2254('0x31')],qs[_0x2254('0x37')](_0x2a789b[_0x2254('0x32')]['fields']));_0x37af8b[_0x2254('0x36')]=_0x37af8b[_0x2254('0x36')]['length']?_0x37af8b[_0x2254('0x36')]:_0x13366a[_0x2254('0x31')];if(!_0x2a789b[_0x2254('0x32')][_0x2254('0x38')]('nolimit')){_0x37af8b['limit']=qs[_0x2254('0x1f')](_0x2a789b['query'][_0x2254('0x1f')]);_0x37af8b[_0x2254('0x1e')]=qs[_0x2254('0x1e')](_0x2a789b[_0x2254('0x32')][_0x2254('0x1e')]);}_0x37af8b[_0x2254('0x39')]=qs[_0x2254('0x3a')](_0x2a789b['query'][_0x2254('0x3a')]);_0x37af8b[_0x2254('0x3b')]=qs[_0x2254('0x34')](_[_0x2254('0x3c')](_0x2a789b[_0x2254('0x32')],_0x13366a[_0x2254('0x34')]),_0x3214a7);if(_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]){_0x37af8b[_0x2254('0x3b')]=_[_0x2254('0x3e')](_0x37af8b['where'],{'$or':_[_0x2254('0x2b')](_0x3214a7,function(_0xde3e4a){if(_0xde3e4a[_0x2254('0x2f')]!==_0x2254('0x3f')){var _0x4c7cc3={};_0x4c7cc3[_0xde3e4a[_0x2254('0x29')]]={'$like':'%'+_0x2a789b[_0x2254('0x32')][_0x2254('0x3d')]+'%'};return _0x4c7cc3;}})});}_0x37af8b=_[_0x2254('0x3e')]({},_0x37af8b,_0x2a789b[_0x2254('0x40')]);var _0x2602db={'where':_0x37af8b[_0x2254('0x3b')]};return db[_0x2254('0x2c')]['count'](_0x2602db)[_0x2254('0x26')](function(_0x5c15d7){_0x377c41[_0x2254('0x21')]=_0x5c15d7;if(_0x2a789b[_0x2254('0x32')][_0x2254('0x41')]){_0x37af8b[_0x2254('0x42')]=[{'all':!![]}];}return db[_0x2254('0x2c')][_0x2254('0x43')](_0x37af8b);})[_0x2254('0x26')](function(_0x568ec9){_0x377c41[_0x2254('0x44')]=_0x568ec9;return _0x377c41;})[_0x2254('0x26')](respondWithFilteredResult(_0x21285d,_0x37af8b))[_0x2254('0x45')](handleError(_0x21285d,null));};exports[_0x2254('0x46')]=function(_0x40d4da,_0x57cda2){var _0x22bb98={'raw':!![],'where':{'id':_0x40d4da[_0x2254('0x47')]['id']}},_0x1dec43={};_0x1dec43[_0x2254('0x31')]=_[_0x2254('0x33')](db['CmHopperFinal'][_0x2254('0x2d')]);_0x1dec43['query']=_[_0x2254('0x33')](_0x40d4da[_0x2254('0x32')]);_0x1dec43[_0x2254('0x34')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],_0x1dec43[_0x2254('0x32')]);_0x22bb98[_0x2254('0x36')]=_[_0x2254('0x35')](_0x1dec43[_0x2254('0x31')],qs[_0x2254('0x37')](_0x40d4da[_0x2254('0x32')][_0x2254('0x37')]));_0x22bb98[_0x2254('0x36')]=_0x22bb98['attributes'][_0x2254('0x48')]?_0x22bb98[_0x2254('0x36')]:_0x1dec43[_0x2254('0x31')];if(_0x40d4da['query'][_0x2254('0x41')]){_0x22bb98[_0x2254('0x42')]=[{'all':!![]}];}_0x22bb98=_[_0x2254('0x3e')]({},_0x22bb98,_0x40d4da[_0x2254('0x40')]);return db[_0x2254('0x2c')][_0x2254('0x49')](_0x22bb98)[_0x2254('0x26')](handleEntityNotFound(_0x57cda2,null))[_0x2254('0x26')](respondWithResult(_0x57cda2,null))[_0x2254('0x45')](handleError(_0x57cda2,null));};exports['describe']=function(_0x239ba0,_0x405eb2){return db[_0x2254('0x2c')][_0x2254('0x4a')]()[_0x2254('0x26')](respondWithResult(_0x405eb2,null))[_0x2254('0x45')](handleError(_0x405eb2,null));};exports[_0x2254('0x25')]=function(_0x438922,_0x3ac691){if(_0x438922[_0x2254('0x4b')]['uniqueid']){delete _0x438922[_0x2254('0x4b')][_0x2254('0x4c')];}return db['CmHopperFinal'][_0x2254('0x49')]({'where':{'uniqueid':_0x438922[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x3ac691,null))[_0x2254('0x26')](saveUpdates(_0x438922['body'],null))[_0x2254('0x26')](respondWithResult(_0x3ac691,null))[_0x2254('0x45')](handleError(_0x3ac691,null));};exports['countContactsQueueCampaignHopperFinal']=function(_0x26d01a,_0x3f0670,_0x23014b){return db[_0x2254('0x2c')]['findAll']({'raw':![],'where':{'VoiceQueueId':_0x26d01a[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db['sequelize'][_0x2254('0x4f')](_0x2254('0x50')))),'noSuchContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x51')))),_0x2254('0x52')],[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x208,\x201,\x20null'))),'congestionContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x55')))),_0x2254('0x56')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),'abandonedContacts'],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x59')))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x3f0670,null))[_0x2254('0x26')](respondWithResult(_0x3f0670,null))[_0x2254('0x45')](handleError(_0x3f0670,null));};exports[_0x2254('0x5b')]=function(_0x399ba2,_0x179cf1,_0x5b8909){return db[_0x2254('0x2c')][_0x2254('0x43')]({'raw':![],'where':{'CampaignId':_0x399ba2[_0x2254('0x47')]['id']},'attributes':[[db[_0x2254('0x4d')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')](_0x2254('0x50')))),_0x2254('0x5c')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x53')))),_0x2254('0x54')],[db['sequelize']['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize']['literal'](_0x2254('0x5d')))),_0x2254('0x5e')],[db['sequelize']['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x2254('0x56')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db[_0x2254('0x4d')]['fn']('IF',db['sequelize'][_0x2254('0x4f')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x2254('0x5f')],[db[_0x2254('0x4d')]['fn']('COUNT',db[_0x2254('0x4d')]['fn']('IF',db[_0x2254('0x4d')]['literal'](_0x2254('0x57')))),_0x2254('0x58')],[db[_0x2254('0x4d')]['fn'](_0x2254('0x4e'),db['sequelize']['fn']('IF',db[_0x2254('0x4d')][_0x2254('0x4f')]('`state`\x20=\x2019,\x201,\x20null'))),_0x2254('0x5a')]]})[_0x2254('0x26')](handleEntityNotFound(_0x179cf1,null))['then'](respondWithResult(_0x179cf1,null))[_0x2254('0x45')](handleError(_0x179cf1,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0x7075b1,_0x516595,_0x3cbd35){return db[_0x2254('0x60')]['find']({'where':{'id':_0x7075b1[_0x2254('0x47')]['id']}})['then'](handleEntityNotFound(_0x516595,null))[_0x2254('0x26')](function(_0x3e6070){var _0x38294d;if(_0x3e6070){_0x38294d=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),'scheduledAt','ContactId',_0x2254('0x64'),_0x2254('0x65'),_0x2254('0x66'),_0x2254('0x67')],squel['select']()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')]('NOW()',_0x2254('0x6a'))[_0x2254('0x68')]('ANY_VALUE(ContactId)',_0x2254('0x6b'))['field'](_0x2254('0x6c'),'ListId')['field']('ANY_VALUE(VoiceQueueId)',_0x2254('0x65'))['field'](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),_0x2254('0x67'))[_0x2254('0x6e')](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x70'),_0x7075b1['params']['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x7075b1[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')](_0x2254('0x75'),squel[_0x2254('0x76')]()['field'](_0x2254('0x63'))[_0x2254('0x6e')]('cm_hopper')[_0x2254('0x3b')]('VoiceQueueId\x20=\x20?',_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]()))['where'](_0x2254('0x75'),squel['select']()[_0x2254('0x68')](_0x2254('0x77'))[_0x2254('0x6e')](_0x2254('0x6f'))['where'](_0x2254('0x70'),_0x7075b1[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')]('state\x20=\x204'))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x38294d);}return[];})['then'](respondWithResult(_0x516595,null))['catch'](handleError(_0x516595,null));};exports[_0x2254('0x79')]=function(_0x2f3650,_0x1a3fd9,_0x3058d9){return db[_0x2254('0x7a')][_0x2254('0x49')]({'where':{'id':_0x2f3650[_0x2254('0x47')]['id']}})[_0x2254('0x26')](handleEntityNotFound(_0x1a3fd9,null))[_0x2254('0x26')](function(_0x5df20f){var _0x10c44;if(_0x5df20f){_0x10c44=squel['insert']()[_0x2254('0x61')]('cm_hopper')[_0x2254('0x62')]([_0x2254('0x63'),_0x2254('0x6a'),'ContactId',_0x2254('0x64'),_0x2254('0x7b'),_0x2254('0x66'),_0x2254('0x67')],squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x69'),_0x2254('0x63'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x6a'))[_0x2254('0x68')](_0x2254('0x7c'),'ContactId')[_0x2254('0x68')]('ANY_VALUE(ListId)',_0x2254('0x64'))[_0x2254('0x68')](_0x2254('0x7d'),_0x2254('0x7b'))[_0x2254('0x68')](_0x2254('0x6d'),_0x2254('0x66'))['field'](_0x2254('0x6d'),'updatedAt')[_0x2254('0x6e')]('cm_hopper_final')[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id']['toString']())[_0x2254('0x3b')](_0x2254('0x71'),_0x2f3650[_0x2254('0x4b')][_0x2254('0x72')][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x74'))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel['select']()[_0x2254('0x68')]('phone')[_0x2254('0x6e')](_0x2254('0x7f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]()))[_0x2254('0x3b')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x2254('0x76')]()[_0x2254('0x68')](_0x2254('0x77'))['from'](_0x2254('0x6f'))[_0x2254('0x3b')](_0x2254('0x7e'),_0x2f3650[_0x2254('0x47')]['id'][_0x2254('0x73')]())[_0x2254('0x3b')](_0x2254('0x80')))[_0x2254('0x78')](_0x2254('0x6b')))['toString']();return db[_0x2254('0x4d')][_0x2254('0x32')](_0x10c44);}return[];})['then'](respondWithResult(_0x1a3fd9,null))['catch'](handleError(_0x1a3fd9,null));};exports[_0x2254('0x81')]=function(_0x54339e,_0x226c19,_0x10645f){return db[_0x2254('0x82')][_0x2254('0x83')]({'where':{'VoiceQueueId':_0x54339e[_0x2254('0x4b')][_0x2254('0x65')],'CampaignId':_0x54339e[_0x2254('0x4b')][_0x2254('0x7b')],'ContactId':_0x54339e['body']['ContactId']}})[_0x2254('0x26')](handleEntityNotFound(_0x226c19,null))[_0x2254('0x26')](function(_0x1e8617){if(_0x1e8617){return _0x1e8617;}return null;})[_0x2254('0x26')](respondWithResult(_0x226c19,null))[_0x2254('0x45')](handleError(_0x226c19,null));};
\ No newline at end of file
index 379f3b3..774dff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x346b=['lodash','util','../../config/logger','api','path','exports','define','cm_hopper_final','calleridnum','uniqueid'];(function(_0x38382f,_0x51183d){var _0x152e8b=function(_0x45dc28){while(--_0x45dc28){_0x38382f['push'](_0x38382f['shift']());}};_0x152e8b(++_0x51183d);}(_0x346b,0xdc));var _0xb346=function(_0x4c14aa,_0x5bf58d){_0x4c14aa=_0x4c14aa-0x0;var _0x14a7ab=_0x346b[_0x4c14aa];return _0x14a7ab;};'use strict';var _=require(_0xb346('0x0'));var util=require(_0xb346('0x1'));var logger=require(_0xb346('0x2'))(_0xb346('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xb346('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./cmHopperFinal.attributes');module[_0xb346('0x5')]=function(_0x496c25,_0x70bf02){return _0x496c25[_0xb346('0x6')]('CmHopperFinal',attributes,{'tableName':_0xb346('0x7'),'paranoid':![],'indexes':[{'name':_0xb346('0x8'),'fields':[_0xb346('0x8')]},{'name':_0xb346('0x9'),'fields':[_0xb346('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3057=['./cmHopperFinal.attributes','exports','define','cm_hopper_final','uniqueid','lodash','api','moment','bluebird','rimraf','../../config/environment'];(function(_0xa9aecd,_0x111340){var _0x5cc7dd=function(_0xe6bf4d){while(--_0xe6bf4d){_0xa9aecd['push'](_0xa9aecd['shift']());}};_0x5cc7dd(++_0x111340);}(_0x3057,0x1bd));var _0x7305=function(_0x513b3d,_0x5d0731){_0x513b3d=_0x513b3d-0x0;var _0x1cdf9e=_0x3057[_0x513b3d];return _0x1cdf9e;};'use strict';var _=require(_0x7305('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7305('0x1'));var moment=require(_0x7305('0x2'));var BPromise=require(_0x7305('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7305('0x4'));var config=require(_0x7305('0x5'));var attributes=require(_0x7305('0x6'));module[_0x7305('0x7')]=function(_0x19903c,_0x283ddb){return _0x19903c[_0x7305('0x8')]('CmHopperFinal',attributes,{'tableName':_0x7305('0x9'),'paranoid':![],'indexes':[{'name':'calleridnum','fields':['calleridnum']},{'name':_0x7305('0xa'),'fields':[_0x7305('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 2ada84d..8bab9ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0xbf1161,_0x48f658){var _0x5464c8=function(_0x416411){while(--_0x416411){_0xbf1161['push'](_0xbf1161['shift']());}};_0x5464c8(++_0x48f658);}(_0xb10b,0x12a));var _0xbb10=function(_0x47adb8,_0x591ccc){_0x47adb8=_0x47adb8-0x0;var _0x4689a8=_0xb10b[_0x47adb8];return _0x4689a8;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
+var _0xb10b=['debug','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmHopperFinal,\x20%s,\x20%s','CmHopperFinal,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','CreateCmHopperFinal','CmHopperFinal','create','options','raw'];(function(_0x136833,_0x46b675){var _0x4074eb=function(_0x560316){while(--_0x560316){_0x136833['push'](_0x136833['shift']());}};_0x4074eb(++_0x46b675);}(_0xb10b,0x12a));var _0xbb10=function(_0x1c1913,_0x1d1b59){_0x1c1913=_0x1c1913-0x0;var _0x3b352a=_0xb10b[_0x1c1913];return _0x3b352a;};'use strict';var _=require(_0xbb10('0x0'));var util=require('util');var moment=require(_0xbb10('0x1'));var BPromise=require(_0xbb10('0x2'));var rs=require(_0xbb10('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xbb10('0x4'))['db'];var utils=require(_0xbb10('0x5'));var logger=require(_0xbb10('0x6'))(_0xbb10('0x7'));var config=require(_0xbb10('0x8'));var jayson=require(_0xbb10('0x9'));var client=jayson['client'][_0xbb10('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3cdd53,_0x513741,_0x1b9e94){return new BPromise(function(_0x3fb675,_0x21370f){return client[_0xbb10('0xb')](_0x3cdd53,_0x1b9e94)[_0xbb10('0xc')](function(_0x1ce33e){logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,'request\x20sent');logger['debug'](_0xbb10('0xf'),_0x513741,_0xbb10('0x10'),JSON[_0xbb10('0x11')](_0x1ce33e));if(_0x1ce33e['error']){if(_0x1ce33e[_0xbb10('0x12')]['code']===0x1f4){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x21370f(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}logger['error'](_0xbb10('0xe'),_0x513741,_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);return _0x3fb675(_0x1ce33e[_0xbb10('0x12')][_0xbb10('0x13')]);}else{logger[_0xbb10('0xd')](_0xbb10('0xe'),_0x513741,_0xbb10('0x10'));_0x3fb675(_0x1ce33e[_0xbb10('0x14')][_0xbb10('0x13')]);}})['catch'](function(_0x2eca0f){logger[_0xbb10('0x12')](_0xbb10('0xe'),_0x513741,_0x2eca0f);_0x21370f(_0x2eca0f);});});}exports[_0xbb10('0x15')]=function(_0x378da8){var _0x1682a4=this;return new Promise(function(_0x575cca,_0x30efc6){return db[_0xbb10('0x16')][_0xbb10('0x17')](_0x378da8['body'],{'raw':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![]})[_0xbb10('0xc')](function(_0xdf237d){logger[_0xbb10('0xd')]('CreateCmHopperFinal',_0x378da8);logger[_0xbb10('0x1a')](_0xbb10('0x15'),_0x378da8,JSON['stringify'](_0xdf237d));_0x575cca(_0xdf237d);})['catch'](function(_0x8e2b97){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x8e2b97[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x8e2b97[_0xbb10('0x13')]));});});};
\ No newline at end of file
index aad3dfa..f2252c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1c7=['../../config/environment','get','isAuthenticated','/describe','/:id','show','/voice/queue/countAttributes/:id','countContactsQueueCampaignHopperFinal','countContactsIvrCampaignHopperFinal','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','post','/checkContactHopper','checkContactHopper','update','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe1c7,0x71));var _0x7e1c=function(_0x496333,_0x1c47d6){_0x496333=_0x496333-0x0;var _0x44256e=_0xe1c7[_0x496333];return _0x44256e;};'use strict';var multer=require(_0x7e1c('0x0'));var util=require('util');var path=require(_0x7e1c('0x1'));var timeout=require(_0x7e1c('0x2'));var express=require('express');var router=express[_0x7e1c('0x3')]();var fs_extra=require(_0x7e1c('0x4'));var auth=require(_0x7e1c('0x5'));var interaction=require(_0x7e1c('0x6'));var config=require(_0x7e1c('0x7'));var controller=require('./cmHopperFinal.controller');router[_0x7e1c('0x8')]('/',auth[_0x7e1c('0x9')](),controller['index']);router[_0x7e1c('0x8')](_0x7e1c('0xa'),auth[_0x7e1c('0x9')](),controller['describe']);router[_0x7e1c('0x8')](_0x7e1c('0xb'),auth[_0x7e1c('0x9')](),controller[_0x7e1c('0xc')]);router['get'](_0x7e1c('0xd'),auth[_0x7e1c('0x9')](),controller[_0x7e1c('0xe')]);router['get']('/campaign/countAttributes/:id',auth[_0x7e1c('0x9')](),controller[_0x7e1c('0xf')]);router['post']('/voice/queue/moveContacts/:id',auth[_0x7e1c('0x9')](),controller[_0x7e1c('0x10')]);router['post'](_0x7e1c('0x11'),auth[_0x7e1c('0x9')](),controller[_0x7e1c('0x12')]);router[_0x7e1c('0x13')](_0x7e1c('0x14'),auth[_0x7e1c('0x9')](),controller[_0x7e1c('0x15')]);router['put']('/:id',auth[_0x7e1c('0x9')](),controller[_0x7e1c('0x16')]);module[_0x7e1c('0x17')]=router;
\ No newline at end of file
+var _0x21f8=['/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','/checkContactHopper','put','update','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperFinal.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x2c883c,_0x248bfb){var _0x1e7bc7=function(_0x2b5dad){while(--_0x2b5dad){_0x2c883c['push'](_0x2c883c['shift']());}};_0x1e7bc7(++_0x248bfb);}(_0x21f8,0x179));var _0x821f=function(_0x380a3f,_0x202483){_0x380a3f=_0x380a3f-0x0;var _0x2b4eca=_0x21f8[_0x380a3f];return _0x2b4eca;};'use strict';var multer=require(_0x821f('0x0'));var util=require(_0x821f('0x1'));var path=require(_0x821f('0x2'));var timeout=require(_0x821f('0x3'));var express=require(_0x821f('0x4'));var router=express[_0x821f('0x5')]();var fs_extra=require(_0x821f('0x6'));var auth=require(_0x821f('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x821f('0x8'));var controller=require(_0x821f('0x9'));router[_0x821f('0xa')]('/',auth[_0x821f('0xb')](),controller[_0x821f('0xc')]);router[_0x821f('0xa')](_0x821f('0xd'),auth['isAuthenticated'](),controller[_0x821f('0xe')]);router[_0x821f('0xa')](_0x821f('0xf'),auth['isAuthenticated'](),controller[_0x821f('0x10')]);router[_0x821f('0xa')](_0x821f('0x11'),auth[_0x821f('0xb')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x821f('0xa')](_0x821f('0x12'),auth[_0x821f('0xb')](),controller[_0x821f('0x13')]);router[_0x821f('0x14')](_0x821f('0x15'),auth[_0x821f('0xb')](),controller['moveContactsQueueCampaignHopperFinal']);router[_0x821f('0x14')](_0x821f('0x16'),auth['isAuthenticated'](),controller[_0x821f('0x17')]);router[_0x821f('0x14')](_0x821f('0x18'),auth[_0x821f('0xb')](),controller['checkContactHopper']);router[_0x821f('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x821f('0x1a')]);module[_0x821f('0x1b')]=router;
\ No newline at end of file
index 4cd4af7..ddf2b73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e5b=['STRING','DATE','BOOLEAN','sequelize','exports','INTEGER'];(function(_0xe4f667,_0x187e21){var _0x24bfa4=function(_0x430541){while(--_0x430541){_0xe4f667['push'](_0xe4f667['shift']());}};_0x24bfa4(++_0x187e21);}(_0x7e5b,0x9f));var _0xb7e5=function(_0x5183aa,_0xd72818){_0x5183aa=_0x5183aa-0x0;var _0x2d4421=_0x7e5b[_0x5183aa];return _0x2d4421;};'use strict';var Sequelize=require(_0xb7e5('0x0'));module[_0xb7e5('0x1')]={'state':{'type':Sequelize[_0xb7e5('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xb7e5('0x3')]},'scheduledat':{'type':Sequelize[_0xb7e5('0x4')]},'countbusyretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize['STRING']},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0xb7e5('0x3')]},'calleridnum':{'type':Sequelize[_0xb7e5('0x3')]},'calleridname':{'type':Sequelize[_0xb7e5('0x3')]},'starttime':{'type':Sequelize[_0xb7e5('0x4')]},'responsetime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xb7e5('0x4')]},'droptime':{'type':Sequelize[_0xb7e5('0x4')]},'endtime':{'type':Sequelize[_0xb7e5('0x4')]},'ringtime':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xb7e5('0x3')]},'reason':{'type':Sequelize[_0xb7e5('0x3')]},'amd':{'type':Sequelize[_0xb7e5('0x5')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callback':{'type':Sequelize[_0xb7e5('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xb7e5('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xb7e5('0x4')]},'edited':{'type':Sequelize[_0xb7e5('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xb7e5('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xb7e5('0x3')]}};
\ No newline at end of file
+var _0x52df=['STRING','BOOLEAN','sequelize','exports','INTEGER','DATE'];(function(_0x2b63a0,_0x14fc48){var _0x4f0434=function(_0x8cba9e){while(--_0x8cba9e){_0x2b63a0['push'](_0x2b63a0['shift']());}};_0x4f0434(++_0x14fc48);}(_0x52df,0x92));var _0xf52d=function(_0x14b5a5,_0x231b3a){_0x14b5a5=_0x14b5a5-0x0;var _0x2a7706=_0x52df[_0x14b5a5];return _0x2a7706;};'use strict';var Sequelize=require(_0xf52d('0x0'));module[_0xf52d('0x1')]={'state':{'type':Sequelize[_0xf52d('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize[_0xf52d('0x3')]},'countbusyretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xf52d('0x4')]},'originatecalleridnum':{'type':Sequelize[_0xf52d('0x4')]},'originatecalleridname':{'type':Sequelize[_0xf52d('0x4')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xf52d('0x4')]},'starttime':{'type':Sequelize[_0xf52d('0x3')]},'responsetime':{'type':Sequelize[_0xf52d('0x3')]},'answertime':{'type':Sequelize[_0xf52d('0x3')]},'droptime':{'type':Sequelize[_0xf52d('0x3')]},'endtime':{'type':Sequelize[_0xf52d('0x3')]},'ringtime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xf52d('0x4')]},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0xf52d('0x4')]},'membername':{'type':Sequelize[_0xf52d('0x4')]},'reason':{'type':Sequelize[_0xf52d('0x4')]},'amd':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fax':{'type':Sequelize[_0xf52d('0x5')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf52d('0x3')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0xf52d('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf52d('0x2')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xf52d('0x4')]}};
\ No newline at end of file
index e52f149..48d2191 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x848a=['to-csv','ejs','fs-extra','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','offset','apply','reject','save','update','destroy','then','sendStatus','stack','index','fieldName','type','key','model','name','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','VIRTUAL','merge','options','CmHopperHistory','includeAll','include','findAll','catch','find','create','body','describe','uniqueid','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x848a,0x89));var _0xa848=function(_0x36d703,_0x55b354){_0x36d703=_0x36d703-0x0;var _0x12c909=_0x848a[_0x36d703];return _0x12c909;};'use strict';var emlformat=require(_0xa848('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa848('0x1'));var jsonpatch=require(_0xa848('0x2'));var rp=require(_0xa848('0x3'));var moment=require(_0xa848('0x4'));var BPromise=require(_0xa848('0x5'));var Mustache=require(_0xa848('0x6'));var util=require(_0xa848('0x7'));var path=require(_0xa848('0x8'));var sox=require('sox');var csv=require(_0xa848('0x9'));var ejs=require(_0xa848('0xa'));var fs=require('fs');var fs_extra=require(_0xa848('0xb'));var _=require('lodash');var squel=require(_0xa848('0xc'));var crypto=require('crypto');var jsforce=require(_0xa848('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa848('0xe'));var Redis=require(_0xa848('0xf'));var authService=require(_0xa848('0x10'));var qs=require(_0xa848('0x11'));var as=require(_0xa848('0x12'));var hardwareService=require(_0xa848('0x13'));var logger=require('../../config/logger')(_0xa848('0x14'));var utils=require(_0xa848('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xa848('0x16'));var db=require(_0xa848('0x17'))['db'];function respondWithStatusCode(_0x19f03b,_0x485a67){_0x485a67=_0x485a67||0xcc;return function(_0x4c7010){if(_0x4c7010){return _0x19f03b['sendStatus'](_0x485a67);}return _0x19f03b[_0xa848('0x18')](_0x485a67)[_0xa848('0x19')]();};}function respondWithResult(_0x41889b,_0x3a6c8d){_0x3a6c8d=_0x3a6c8d||0xc8;return function(_0xfd7a42){if(_0xfd7a42){return _0x41889b['status'](_0x3a6c8d)[_0xa848('0x1a')](_0xfd7a42);}};}function respondWithFilteredResult(_0x4c2d1e,_0x370cae){return function(_0x2fd01c){if(_0x2fd01c){var _0x1980af=typeof _0x370cae['offset']===_0xa848('0x1b')&&typeof _0x370cae[_0xa848('0x1c')]==='undefined';var _0x431021=_0x2fd01c[_0xa848('0x1d')];var _0x17ddb1=_0x1980af?0x0:_0x370cae[_0xa848('0x1e')];var _0x3b9de6=_0x1980af?_0x2fd01c[_0xa848('0x1d')]:_0x370cae[_0xa848('0x1e')]+_0x370cae[_0xa848('0x1c')];var _0x2eaeee;if(_0x3b9de6>=_0x431021){_0x3b9de6=_0x431021;_0x2eaeee=0xc8;}else{_0x2eaeee=0xce;}_0x4c2d1e['status'](_0x2eaeee);return _0x4c2d1e['set']('Content-Range',_0x17ddb1+'-'+_0x3b9de6+'/'+_0x431021)[_0xa848('0x1a')](_0x2fd01c);}return null;};}function patchUpdates(_0x3c04ea){return function(_0x28ba1c){try{jsonpatch[_0xa848('0x1f')](_0x28ba1c,_0x3c04ea,!![]);}catch(_0x14ff57){return BPromise[_0xa848('0x20')](_0x14ff57);}return _0x28ba1c[_0xa848('0x21')]();};}function saveUpdates(_0x327cd2,_0x55adf7){return function(_0x5a093d){if(_0x5a093d){return _0x5a093d[_0xa848('0x22')](_0x327cd2)['then'](function(_0x697651){return _0x697651;});}return null;};}function removeEntity(_0x21014a,_0x7c97ec){return function(_0x1f8aa7){if(_0x1f8aa7){return _0x1f8aa7[_0xa848('0x23')]()[_0xa848('0x24')](function(){_0x21014a[_0xa848('0x18')](0xcc)[_0xa848('0x19')]();});}};}function handleEntityNotFound(_0x13adc8,_0x48af99){return function(_0x212f30){if(!_0x212f30){_0x13adc8[_0xa848('0x25')](0x194);}return _0x212f30;};}function handleError(_0x502c84,_0x3c2094){_0x3c2094=_0x3c2094||0x1f4;return function(_0x2d4547){logger['error'](_0x2d4547[_0xa848('0x26')]);if(_0x2d4547['name']){delete _0x2d4547['name'];}_0x502c84[_0xa848('0x18')](_0x3c2094)['send'](_0x2d4547);};}exports[_0xa848('0x27')]=function(_0x4b0c04,_0xcbf437){var _0x3d0403={},_0x32631d={},_0x2fca18={'count':0x0,'rows':[]};var _0x28cfc5=_['map'](db['CmHopperHistory']['rawAttributes'],function(_0x1ce42d){return{'name':_0x1ce42d[_0xa848('0x28')],'type':_0x1ce42d[_0xa848('0x29')][_0xa848('0x2a')]};});_0x32631d[_0xa848('0x2b')]=_['map'](_0x28cfc5,_0xa848('0x2c'));_0x32631d[_0xa848('0x2d')]=_[_0xa848('0x2e')](_0x4b0c04[_0xa848('0x2d')]);_0x32631d['filters']=_[_0xa848('0x2f')](_0x32631d[_0xa848('0x2b')],_0x32631d[_0xa848('0x2d')]);_0x3d0403['attributes']=_['intersection'](_0x32631d[_0xa848('0x2b')],qs[_0xa848('0x30')](_0x4b0c04[_0xa848('0x2d')][_0xa848('0x30')]));_0x3d0403[_0xa848('0x31')]=_0x3d0403[_0xa848('0x31')][_0xa848('0x32')]?_0x3d0403['attributes']:_0x32631d[_0xa848('0x2b')];if(!_0x4b0c04['query'][_0xa848('0x33')](_0xa848('0x34'))){_0x3d0403[_0xa848('0x1c')]=qs[_0xa848('0x1c')](_0x4b0c04[_0xa848('0x2d')][_0xa848('0x1c')]);_0x3d0403[_0xa848('0x1e')]=qs[_0xa848('0x1e')](_0x4b0c04[_0xa848('0x2d')][_0xa848('0x1e')]);}_0x3d0403['order']=qs[_0xa848('0x35')](_0x4b0c04[_0xa848('0x2d')][_0xa848('0x35')]);_0x3d0403[_0xa848('0x36')]=qs[_0xa848('0x37')](_[_0xa848('0x38')](_0x4b0c04[_0xa848('0x2d')],_0x32631d[_0xa848('0x37')]),_0x28cfc5);if(_0x4b0c04[_0xa848('0x2d')][_0xa848('0x39')]){_0x3d0403['where']=_['merge'](_0x3d0403[_0xa848('0x36')],{'$or':_[_0xa848('0x3a')](_0x28cfc5,function(_0x41faba){if(_0x41faba[_0xa848('0x29')]!==_0xa848('0x3b')){var _0x689492={};_0x689492[_0x41faba[_0xa848('0x2c')]]={'$like':'%'+_0x4b0c04[_0xa848('0x2d')]['filter']+'%'};return _0x689492;}})});}_0x3d0403=_[_0xa848('0x3c')]({},_0x3d0403,_0x4b0c04[_0xa848('0x3d')]);var _0x34f1c8={'where':_0x3d0403['where']};return db[_0xa848('0x3e')][_0xa848('0x1d')](_0x34f1c8)[_0xa848('0x24')](function(_0x2b4af0){_0x2fca18[_0xa848('0x1d')]=_0x2b4af0;if(_0x4b0c04[_0xa848('0x2d')][_0xa848('0x3f')]){_0x3d0403[_0xa848('0x40')]=[{'all':!![]}];}return db[_0xa848('0x3e')][_0xa848('0x41')](_0x3d0403);})[_0xa848('0x24')](function(_0x5e4246){_0x2fca18['rows']=_0x5e4246;return _0x2fca18;})[_0xa848('0x24')](respondWithFilteredResult(_0xcbf437,_0x3d0403))[_0xa848('0x42')](handleError(_0xcbf437,null));};exports['show']=function(_0xf582,_0x4983d){var _0x443095={'raw':!![],'where':{'id':_0xf582['params']['id']}},_0x437c6={};_0x437c6[_0xa848('0x2b')]=_[_0xa848('0x2e')](db[_0xa848('0x3e')]['rawAttributes']);_0x437c6['query']=_[_0xa848('0x2e')](_0xf582[_0xa848('0x2d')]);_0x437c6['filters']=_[_0xa848('0x2f')](_0x437c6[_0xa848('0x2b')],_0x437c6[_0xa848('0x2d')]);_0x443095[_0xa848('0x31')]=_[_0xa848('0x2f')](_0x437c6['model'],qs['fields'](_0xf582[_0xa848('0x2d')][_0xa848('0x30')]));_0x443095[_0xa848('0x31')]=_0x443095[_0xa848('0x31')][_0xa848('0x32')]?_0x443095[_0xa848('0x31')]:_0x437c6[_0xa848('0x2b')];if(_0xf582['query'][_0xa848('0x3f')]){_0x443095[_0xa848('0x40')]=[{'all':!![]}];}_0x443095=_[_0xa848('0x3c')]({},_0x443095,_0xf582[_0xa848('0x3d')]);return db[_0xa848('0x3e')][_0xa848('0x43')](_0x443095)[_0xa848('0x24')](handleEntityNotFound(_0x4983d,null))[_0xa848('0x24')](respondWithResult(_0x4983d,null))[_0xa848('0x42')](handleError(_0x4983d,null));};exports[_0xa848('0x44')]=function(_0x4e87c4,_0x23d037){return db[_0xa848('0x3e')][_0xa848('0x44')](_0x4e87c4[_0xa848('0x45')],{})[_0xa848('0x24')](respondWithResult(_0x23d037,0xc9))[_0xa848('0x42')](handleError(_0x23d037,null));};exports[_0xa848('0x46')]=function(_0x32c6c8,_0xba582f){return db[_0xa848('0x3e')][_0xa848('0x46')]()[_0xa848('0x24')](respondWithResult(_0xba582f,null))['catch'](handleError(_0xba582f,null));};exports[_0xa848('0x22')]=function(_0x433632,_0x19401b){if(_0x433632[_0xa848('0x45')][_0xa848('0x47')]){delete _0x433632[_0xa848('0x45')][_0xa848('0x47')];}return db[_0xa848('0x3e')][_0xa848('0x43')]({'where':{'uniqueid':_0x433632[_0xa848('0x48')]['id']}})['then'](handleEntityNotFound(_0x19401b,null))[_0xa848('0x24')](saveUpdates(_0x433632[_0xa848('0x45')],null))[_0xa848('0x24')](respondWithResult(_0x19401b,null))[_0xa848('0x42')](handleError(_0x19401b,null));};
\ No newline at end of file
+var _0x4ba1=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','limit','count','set','Content-Range','apply','update','then','destroy','end','error','name','send','index','CmHopperHistory','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','map','merge','options','includeAll','include','rows','catch','show','params','find','create','describe','body','uniqueid'];(function(_0x2dfbd4,_0x1effa3){var _0x10c8e6=function(_0x15e1d1){while(--_0x15e1d1){_0x2dfbd4['push'](_0x2dfbd4['shift']());}};_0x10c8e6(++_0x1effa3);}(_0x4ba1,0x92));var _0x14ba=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x4ba1[_0x1d1779];return _0x2377e9;};'use strict';var emlformat=require(_0x14ba('0x0'));var rimraf=require(_0x14ba('0x1'));var zipdir=require(_0x14ba('0x2'));var jsonpatch=require(_0x14ba('0x3'));var rp=require('request-promise');var moment=require(_0x14ba('0x4'));var BPromise=require(_0x14ba('0x5'));var Mustache=require(_0x14ba('0x6'));var util=require('util');var path=require(_0x14ba('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x14ba('0x8'));var _=require(_0x14ba('0x9'));var squel=require('squel');var crypto=require(_0x14ba('0xa'));var jsforce=require(_0x14ba('0xb'));var deskjs=require(_0x14ba('0xc'));var toCsv=require(_0x14ba('0xd'));var querystring=require(_0x14ba('0xe'));var Papa=require(_0x14ba('0xf'));var Redis=require(_0x14ba('0x10'));var authService=require(_0x14ba('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x14ba('0x12'));var hardwareService=require(_0x14ba('0x13'));var logger=require(_0x14ba('0x14'))(_0x14ba('0x15'));var utils=require(_0x14ba('0x16'));var config=require(_0x14ba('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x14ba('0x18'))['db'];function respondWithStatusCode(_0x580ef9,_0x803b4d){_0x803b4d=_0x803b4d||0xcc;return function(_0x2d7fb2){if(_0x2d7fb2){return _0x580ef9[_0x14ba('0x19')](_0x803b4d);}return _0x580ef9[_0x14ba('0x1a')](_0x803b4d)['end']();};}function respondWithResult(_0x50a9e5,_0x173b25){_0x173b25=_0x173b25||0xc8;return function(_0x25cf5d){if(_0x25cf5d){return _0x50a9e5[_0x14ba('0x1a')](_0x173b25)[_0x14ba('0x1b')](_0x25cf5d);}};}function respondWithFilteredResult(_0x19bf9e,_0x31ea46){return function(_0x24bd33){if(_0x24bd33){var _0x1a5f03=typeof _0x31ea46[_0x14ba('0x1c')]==='undefined'&&typeof _0x31ea46[_0x14ba('0x1d')]==='undefined';var _0x88c510=_0x24bd33[_0x14ba('0x1e')];var _0x59d024=_0x1a5f03?0x0:_0x31ea46[_0x14ba('0x1c')];var _0x3dc4bc=_0x1a5f03?_0x24bd33['count']:_0x31ea46[_0x14ba('0x1c')]+_0x31ea46[_0x14ba('0x1d')];var _0x4af90b;if(_0x3dc4bc>=_0x88c510){_0x3dc4bc=_0x88c510;_0x4af90b=0xc8;}else{_0x4af90b=0xce;}_0x19bf9e['status'](_0x4af90b);return _0x19bf9e[_0x14ba('0x1f')](_0x14ba('0x20'),_0x59d024+'-'+_0x3dc4bc+'/'+_0x88c510)[_0x14ba('0x1b')](_0x24bd33);}return null;};}function patchUpdates(_0x128c38){return function(_0x8876ef){try{jsonpatch[_0x14ba('0x21')](_0x8876ef,_0x128c38,!![]);}catch(_0x469193){return BPromise['reject'](_0x469193);}return _0x8876ef['save']();};}function saveUpdates(_0x1fd01b,_0x2a03a3){return function(_0x12421a){if(_0x12421a){return _0x12421a[_0x14ba('0x22')](_0x1fd01b)[_0x14ba('0x23')](function(_0x1c2189){return _0x1c2189;});}return null;};}function removeEntity(_0xc6d6e0,_0x5c9cfe){return function(_0xa0a7d9){if(_0xa0a7d9){return _0xa0a7d9[_0x14ba('0x24')]()[_0x14ba('0x23')](function(){_0xc6d6e0[_0x14ba('0x1a')](0xcc)[_0x14ba('0x25')]();});}};}function handleEntityNotFound(_0x2c2223,_0x5295f5){return function(_0x2a5ea7){if(!_0x2a5ea7){_0x2c2223[_0x14ba('0x19')](0x194);}return _0x2a5ea7;};}function handleError(_0x1b82ee,_0x521e23){_0x521e23=_0x521e23||0x1f4;return function(_0x58da53){logger[_0x14ba('0x26')](_0x58da53['stack']);if(_0x58da53[_0x14ba('0x27')]){delete _0x58da53['name'];}_0x1b82ee[_0x14ba('0x1a')](_0x521e23)[_0x14ba('0x28')](_0x58da53);};}exports[_0x14ba('0x29')]=function(_0x530d4e,_0x6f30be){var _0x2eda6f={},_0x39760c={},_0x229085={'count':0x0,'rows':[]};var _0x1a10a3=_['map'](db[_0x14ba('0x2a')][_0x14ba('0x2b')],function(_0x3e9b43){return{'name':_0x3e9b43['fieldName'],'type':_0x3e9b43[_0x14ba('0x2c')]['key']};});_0x39760c[_0x14ba('0x2d')]=_['map'](_0x1a10a3,'name');_0x39760c[_0x14ba('0x2e')]=_[_0x14ba('0x2f')](_0x530d4e[_0x14ba('0x2e')]);_0x39760c['filters']=_[_0x14ba('0x30')](_0x39760c['model'],_0x39760c[_0x14ba('0x2e')]);_0x2eda6f[_0x14ba('0x31')]=_[_0x14ba('0x30')](_0x39760c['model'],qs[_0x14ba('0x32')](_0x530d4e[_0x14ba('0x2e')]['fields']));_0x2eda6f[_0x14ba('0x31')]=_0x2eda6f[_0x14ba('0x31')][_0x14ba('0x33')]?_0x2eda6f['attributes']:_0x39760c[_0x14ba('0x2d')];if(!_0x530d4e['query'][_0x14ba('0x34')](_0x14ba('0x35'))){_0x2eda6f[_0x14ba('0x1d')]=qs[_0x14ba('0x1d')](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x1d')]);_0x2eda6f[_0x14ba('0x1c')]=qs[_0x14ba('0x1c')](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x1c')]);}_0x2eda6f['order']=qs['sort'](_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x36')]);_0x2eda6f[_0x14ba('0x37')]=qs[_0x14ba('0x38')](_[_0x14ba('0x39')](_0x530d4e[_0x14ba('0x2e')],_0x39760c[_0x14ba('0x38')]),_0x1a10a3);if(_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x3a')]){_0x2eda6f[_0x14ba('0x37')]=_['merge'](_0x2eda6f[_0x14ba('0x37')],{'$or':_[_0x14ba('0x3b')](_0x1a10a3,function(_0x314fdb){if(_0x314fdb['type']!=='VIRTUAL'){var _0x49aac2={};_0x49aac2[_0x314fdb['name']]={'$like':'%'+_0x530d4e[_0x14ba('0x2e')]['filter']+'%'};return _0x49aac2;}})});}_0x2eda6f=_[_0x14ba('0x3c')]({},_0x2eda6f,_0x530d4e[_0x14ba('0x3d')]);var _0x361429={'where':_0x2eda6f[_0x14ba('0x37')]};return db[_0x14ba('0x2a')][_0x14ba('0x1e')](_0x361429)['then'](function(_0xf31101){_0x229085[_0x14ba('0x1e')]=_0xf31101;if(_0x530d4e[_0x14ba('0x2e')][_0x14ba('0x3e')]){_0x2eda6f[_0x14ba('0x3f')]=[{'all':!![]}];}return db[_0x14ba('0x2a')]['findAll'](_0x2eda6f);})[_0x14ba('0x23')](function(_0x5dc945){_0x229085[_0x14ba('0x40')]=_0x5dc945;return _0x229085;})[_0x14ba('0x23')](respondWithFilteredResult(_0x6f30be,_0x2eda6f))[_0x14ba('0x41')](handleError(_0x6f30be,null));};exports[_0x14ba('0x42')]=function(_0x56756f,_0x467610){var _0x3665f9={'raw':!![],'where':{'id':_0x56756f[_0x14ba('0x43')]['id']}},_0x50ec94={};_0x50ec94[_0x14ba('0x2d')]=_[_0x14ba('0x2f')](db[_0x14ba('0x2a')][_0x14ba('0x2b')]);_0x50ec94[_0x14ba('0x2e')]=_['keys'](_0x56756f[_0x14ba('0x2e')]);_0x50ec94[_0x14ba('0x38')]=_[_0x14ba('0x30')](_0x50ec94[_0x14ba('0x2d')],_0x50ec94[_0x14ba('0x2e')]);_0x3665f9[_0x14ba('0x31')]=_['intersection'](_0x50ec94[_0x14ba('0x2d')],qs['fields'](_0x56756f[_0x14ba('0x2e')][_0x14ba('0x32')]));_0x3665f9[_0x14ba('0x31')]=_0x3665f9['attributes']['length']?_0x3665f9[_0x14ba('0x31')]:_0x50ec94['model'];if(_0x56756f['query'][_0x14ba('0x3e')]){_0x3665f9[_0x14ba('0x3f')]=[{'all':!![]}];}_0x3665f9=_[_0x14ba('0x3c')]({},_0x3665f9,_0x56756f[_0x14ba('0x3d')]);return db['CmHopperHistory'][_0x14ba('0x44')](_0x3665f9)['then'](handleEntityNotFound(_0x467610,null))[_0x14ba('0x23')](respondWithResult(_0x467610,null))['catch'](handleError(_0x467610,null));};exports[_0x14ba('0x45')]=function(_0x566403,_0x3ed203){return db[_0x14ba('0x2a')][_0x14ba('0x45')](_0x566403['body'],{})[_0x14ba('0x23')](respondWithResult(_0x3ed203,0xc9))[_0x14ba('0x41')](handleError(_0x3ed203,null));};exports['describe']=function(_0x2c4103,_0x463261){return db['CmHopperHistory'][_0x14ba('0x46')]()[_0x14ba('0x23')](respondWithResult(_0x463261,null))[_0x14ba('0x41')](handleError(_0x463261,null));};exports[_0x14ba('0x22')]=function(_0x5e2a1e,_0x466779){if(_0x5e2a1e[_0x14ba('0x47')][_0x14ba('0x48')]){delete _0x5e2a1e[_0x14ba('0x47')][_0x14ba('0x48')];}return db[_0x14ba('0x2a')]['find']({'where':{'uniqueid':_0x5e2a1e[_0x14ba('0x43')]['id']}})['then'](handleEntityNotFound(_0x466779,null))[_0x14ba('0x23')](saveUpdates(_0x5e2a1e[_0x14ba('0x47')],null))[_0x14ba('0x23')](respondWithResult(_0x466779,null))[_0x14ba('0x41')](handleError(_0x466779,null));};
\ No newline at end of file
index 7c6540d..b071a19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0eeb=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','./cmHopperHistory.attributes','exports','define','cm_hopper_history','endtime'];(function(_0x1a9e78,_0x180720){var _0x113e06=function(_0x229c64){while(--_0x229c64){_0x1a9e78['push'](_0x1a9e78['shift']());}};_0x113e06(++_0x180720);}(_0x0eeb,0xc5));var _0xb0ee=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0eeb[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xb0ee('0x0'));var util=require(_0xb0ee('0x1'));var logger=require(_0xb0ee('0x2'))(_0xb0ee('0x3'));var moment=require(_0xb0ee('0x4'));var BPromise=require(_0xb0ee('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xb0ee('0x6'));var config=require(_0xb0ee('0x7'));var attributes=require(_0xb0ee('0x8'));module[_0xb0ee('0x9')]=function(_0x209dda,_0x453fa4){return _0x209dda[_0xb0ee('0xa')]('CmHopperHistory',attributes,{'tableName':_0xb0ee('0xb'),'paranoid':![],'indexes':[{'name':'endtime','fields':[_0xb0ee('0xc')]},{'name':_0xb0ee('0xd'),'fields':[_0xb0ee('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xee9c=['endtime','uniqueid','util','../../config/logger','api','moment','path','rimraf','exports','define','CmHopperHistory'];(function(_0x227ff4,_0x2d3a58){var _0x9208d6=function(_0x1b5319){while(--_0x1b5319){_0x227ff4['push'](_0x227ff4['shift']());}};_0x9208d6(++_0x2d3a58);}(_0xee9c,0x1e6));var _0xcee9=function(_0x3fe042,_0x1106f7){_0x3fe042=_0x3fe042-0x0;var _0x7d4a1f=_0xee9c[_0x3fe042];return _0x7d4a1f;};'use strict';var _=require('lodash');var util=require(_0xcee9('0x0'));var logger=require(_0xcee9('0x1'))(_0xcee9('0x2'));var moment=require(_0xcee9('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xcee9('0x4'));var rimraf=require(_0xcee9('0x5'));var config=require('../../config/environment');var attributes=require('./cmHopperHistory.attributes');module[_0xcee9('0x6')]=function(_0x547ea0,_0x2e438b){return _0x547ea0[_0xcee9('0x7')](_0xcee9('0x8'),attributes,{'tableName':'cm_hopper_history','paranoid':![],'indexes':[{'name':'endtime','fields':[_0xcee9('0x9')]},{'name':_0xcee9('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e4edcce..804c0a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x950a=['findAll','options','COUNT','sequelize','predictiveIntervalTotalCalls','literal','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','AVG','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','outboundNoSuchCallsDay','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','`state`\x20=\x204,\x201,\x20null','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateCmHopperHistory','CmHopperHistory','create','body','raw','then','AvgHandleTime'];(function(_0x17b6ab,_0xe0a38e){var _0x23959b=function(_0x55a295){while(--_0x55a295){_0x17b6ab['push'](_0x17b6ab['shift']());}};_0x23959b(++_0xe0a38e);}(_0x950a,0x174));var _0xa950=function(_0x343199,_0x262b29){_0x343199=_0x343199-0x0;var _0x145d52=_0x950a[_0x343199];return _0x145d52;};'use strict';var _=require(_0xa950('0x0'));var util=require(_0xa950('0x1'));var moment=require(_0xa950('0x2'));var BPromise=require('bluebird');var rs=require(_0xa950('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xa950('0x4'));var logger=require(_0xa950('0x5'))(_0xa950('0x6'));var config=require(_0xa950('0x7'));var jayson=require(_0xa950('0x8'));var client=jayson[_0xa950('0x9')][_0xa950('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x57e8ff,_0x426c4d,_0x11bd04){return new BPromise(function(_0x13f2de,_0x713f2b){return client[_0xa950('0xb')](_0x57e8ff,_0x11bd04)['then'](function(_0x595a04){logger['info'](_0xa950('0xc'),_0x426c4d,_0xa950('0xd'));logger[_0xa950('0xe')](_0xa950('0xf'),_0x426c4d,_0xa950('0xd'),JSON[_0xa950('0x10')](_0x595a04));if(_0x595a04[_0xa950('0x11')]){if(_0x595a04[_0xa950('0x11')][_0xa950('0x12')]===0x1f4){logger[_0xa950('0x11')]('CmHopperHistory,\x20%s,\x20%s',_0x426c4d,_0x595a04['error']['message']);return _0x713f2b(_0x595a04[_0xa950('0x11')][_0xa950('0x13')]);}logger[_0xa950('0x11')]('CmHopperHistory,\x20%s,\x20%s',_0x426c4d,_0x595a04[_0xa950('0x11')]['message']);return _0x13f2de(_0x595a04[_0xa950('0x11')]['message']);}else{logger[_0xa950('0x14')](_0xa950('0xc'),_0x426c4d,_0xa950('0xd'));_0x13f2de(_0x595a04[_0xa950('0x15')]['message']);}})[_0xa950('0x16')](function(_0x4c5c5d){logger[_0xa950('0x11')]('CmHopperHistory,\x20%s,\x20%s',_0x426c4d,_0x4c5c5d);_0x713f2b(_0x4c5c5d);});});}exports[_0xa950('0x17')]=function(_0x1f961e){var _0x473182=this;return new Promise(function(_0x4bdb54,_0x297e82){return db[_0xa950('0x18')][_0xa950('0x19')](_0x1f961e[_0xa950('0x1a')],{'raw':_0x1f961e['options']?_0x1f961e['options'][_0xa950('0x1b')]===undefined?!![]:![]:!![]})[_0xa950('0x1c')](function(_0x255dfc){logger[_0xa950('0x14')]('CreateCmHopperHistory',_0x1f961e);logger[_0xa950('0xe')](_0xa950('0x17'),_0x1f961e,JSON[_0xa950('0x10')](_0x255dfc));_0x4bdb54(_0x255dfc);})[_0xa950('0x16')](function(_0x1062f1){logger[_0xa950('0x11')](_0xa950('0x17'),_0x1062f1['message'],_0x1f961e);_0x297e82(_0x473182[_0xa950('0x11')](0x1f4,_0x1062f1['message']));});});};exports[_0xa950('0x1d')]=function(_0x2451b4){var _0xd04c9c=this;return new Promise(function(_0x5f5104,_0x5a21fb){return db[_0xa950('0x18')][_0xa950('0x1e')]({'raw':_0x2451b4[_0xa950('0x1f')]?_0x2451b4[_0xa950('0x1f')][_0xa950('0x1b')]===undefined?!![]:![]:!![],'where':_0x2451b4[_0xa950('0x1f')]?_0x2451b4['options']['where']||null:null,'attributes':[[db['sequelize']['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['col']('id')),_0xa950('0x22')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')]('`state`\x20=\x204,\x201,\x20null'))),_0xa950('0x24')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db['sequelize']['fn']('IF',db['sequelize'][_0xa950('0x23')]('`state`\x20=\x2010,\x201,\x20null'))),_0xa950('0x25')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')]['literal'](_0xa950('0x26')))),'predictiveIntervalDroppedCallsCallersExit'],[db[_0xa950('0x21')]['fn'](_0xa950('0x27'),db[_0xa950('0x21')]['fn']('IF',db['sequelize'][_0xa950('0x23')]('`state`\x20=\x204,\x20`holdtime`,\x20null'))),'predictiveIntervalAvgHoldtime'],[db[_0xa950('0x21')]['fn'](_0xa950('0x27'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x28')))),_0xa950('0x29')]]})[_0xa950('0x1c')](function(_0x468f88){logger[_0xa950('0x14')](_0xa950('0x1d'),_0x2451b4);logger['debug'](_0xa950('0x1d'),_0x2451b4,JSON[_0xa950('0x10')](_0x468f88));_0x5f5104(_0x468f88);})[_0xa950('0x16')](function(_0x4bbc97){logger[_0xa950('0x11')](_0xa950('0x1d'),_0x4bbc97[_0xa950('0x13')],_0x2451b4);_0x5a21fb(_0xd04c9c[_0xa950('0x11')](0x1f4,_0x4bbc97[_0xa950('0x13')]));});});};exports[_0xa950('0x2a')]=function(_0x2a9f8e){var _0x651199=this;return new Promise(function(_0x32fb63,_0x4d9959){return db['CmHopperHistory'][_0xa950('0x1e')]({'raw':_0x2a9f8e[_0xa950('0x1f')]?_0x2a9f8e[_0xa950('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x2a9f8e[_0xa950('0x1f')]?_0x2a9f8e['options']['where']||null:null,'attributes':[[_0xa950('0x2b'),_0xa950('0x2c')],[db['sequelize']['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')]('`state`\x20=\x200,\x201,\x20null'))),_0xa950('0x2d')],[db[_0xa950('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x2e')))),_0xa950('0x2f')],[db['sequelize']['fn']('COUNT',db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x30')))),'outboundAnswerCallsDay'],[db[_0xa950('0x21')]['fn']('COUNT',db[_0xa950('0x21')]['fn']('IF',db['sequelize']['literal'](_0xa950('0x31')))),_0xa950('0x32')],[db[_0xa950('0x21')]['fn']('COUNT',db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x33')))),_0xa950('0x34')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x35')))),'outboundDropCallsDayTimeout'],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')]['literal'](_0xa950('0x36')))),_0xa950('0x37')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db['sequelize'][_0xa950('0x23')]('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x38')))),_0xa950('0x39')],[db['sequelize']['fn'](_0xa950('0x20'),db['sequelize']['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x3a')))),'outboundOriginateFailureCallsDay'],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['fn']('IF',db['sequelize'][_0xa950('0x23')](_0xa950('0x3b')))),_0xa950('0x3c')],[db[_0xa950('0x21')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x3d')))),_0xa950('0x3e')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db['sequelize']['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')](_0xa950('0x3f')))),'outboundRejectCallsDay'],[db[_0xa950('0x21')]['fn']('COUNT',db[_0xa950('0x21')]['fn']('IF',db['sequelize'][_0xa950('0x23')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0xa950('0x40')]],'group':[_0xa950('0x2b')]})['then'](function(_0x17482e){logger[_0xa950('0x14')](_0xa950('0x2a'),_0x2a9f8e);logger[_0xa950('0xe')]('GetVoiceQueueHopperHistory',_0x2a9f8e,JSON['stringify'](_0x17482e));_0x32fb63(_0x17482e);})['catch'](function(_0xdd402){logger[_0xa950('0x11')](_0xa950('0x2a'),_0xdd402[_0xa950('0x13')],_0x2a9f8e);_0x4d9959(_0x651199[_0xa950('0x11')](0x1f4,_0xdd402[_0xa950('0x13')]));});});};exports[_0xa950('0x41')]=function(_0x1c3705){var _0x483599=this;return new Promise(function(_0x4fdbb4,_0x4b508f){return db[_0xa950('0x18')][_0xa950('0x1e')]({'raw':_0x1c3705[_0xa950('0x1f')]?_0x1c3705[_0xa950('0x1f')][_0xa950('0x1b')]===undefined?!![]:![]:!![],'where':_0x1c3705[_0xa950('0x1f')]?_0x1c3705[_0xa950('0x1f')]['where']||null:null,'attributes':[[_0xa950('0x2b'),_0xa950('0x2c')],[db[_0xa950('0x21')]['fn'](_0xa950('0x20'),db[_0xa950('0x21')]['col']('id')),_0xa950('0x42')],[db[_0xa950('0x21')]['fn']('COUNT',db[_0xa950('0x21')]['fn']('IF',db[_0xa950('0x21')][_0xa950('0x23')]('`state`\x20=\x204,\x201,\x20null'))),'ivrAnswerCallsDay']],'group':['campaign']})[_0xa950('0x1c')](function(_0x4e732a){logger[_0xa950('0x14')](_0xa950('0x41'),_0x1c3705);logger[_0xa950('0xe')](_0xa950('0x41'),_0x1c3705,JSON[_0xa950('0x10')](_0x4e732a));_0x4fdbb4(_0x4e732a);})[_0xa950('0x16')](function(_0x36cab8){logger[_0xa950('0x11')]('GetCampaignHopperHistory',_0x36cab8[_0xa950('0x13')],_0x1c3705);_0x4b508f(_0x483599[_0xa950('0x11')](0x1f4,_0x36cab8[_0xa950('0x13')]));});});};
\ No newline at end of file
+var _0x78f0=['predictiveIntervalTotalCalls','COUNT','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','GetVoiceQueueHopperHistory','campaign','name','`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','outboundDropCallsDayCallersExit','`state`\x20=\x2012,\x201,\x20null','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','outboundReCallsDay','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','CmHopperHistory,\x20%s,\x20%s,\x20%s','error','code','message','result','CreateCmHopperHistory','CmHopperHistory','create','body','options','debug','stringify','catch','AvgHandleTime','findAll','raw','where','sequelize','col'];(function(_0x2f1343,_0x59bd6a){var _0x2d8268=function(_0x2844e9){while(--_0x2844e9){_0x2f1343['push'](_0x2f1343['shift']());}};_0x2d8268(++_0x59bd6a);}(_0x78f0,0x15d));var _0x078f=function(_0x1d3cea,_0x16cfe6){_0x1d3cea=_0x1d3cea-0x0;var _0x44da18=_0x78f0[_0x1d3cea];return _0x44da18;};'use strict';var _=require(_0x078f('0x0'));var util=require(_0x078f('0x1'));var moment=require(_0x078f('0x2'));var BPromise=require(_0x078f('0x3'));var rs=require(_0x078f('0x4'));var fs=require('fs');var Redis=require(_0x078f('0x5'));var db=require(_0x078f('0x6'))['db'];var utils=require(_0x078f('0x7'));var logger=require('../../config/logger')(_0x078f('0x8'));var config=require(_0x078f('0x9'));var jayson=require(_0x078f('0xa'));var client=jayson[_0x078f('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x728cfe,_0x205510,_0x4a7db3){return new BPromise(function(_0x2ef013,_0x1901e3){return client[_0x078f('0xc')](_0x728cfe,_0x4a7db3)[_0x078f('0xd')](function(_0x7e87f){logger[_0x078f('0xe')](_0x078f('0xf'),_0x205510,_0x078f('0x10'));logger['debug'](_0x078f('0x11'),_0x205510,_0x078f('0x10'),JSON['stringify'](_0x7e87f));if(_0x7e87f[_0x078f('0x12')]){if(_0x7e87f[_0x078f('0x12')][_0x078f('0x13')]===0x1f4){logger[_0x078f('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x205510,_0x7e87f['error'][_0x078f('0x14')]);return _0x1901e3(_0x7e87f[_0x078f('0x12')][_0x078f('0x14')]);}logger[_0x078f('0x12')]('CmHopperHistory,\x20%s,\x20%s',_0x205510,_0x7e87f[_0x078f('0x12')][_0x078f('0x14')]);return _0x2ef013(_0x7e87f['error'][_0x078f('0x14')]);}else{logger[_0x078f('0xe')](_0x078f('0xf'),_0x205510,_0x078f('0x10'));_0x2ef013(_0x7e87f[_0x078f('0x15')][_0x078f('0x14')]);}})['catch'](function(_0x56bad2){logger[_0x078f('0x12')](_0x078f('0xf'),_0x205510,_0x56bad2);_0x1901e3(_0x56bad2);});});}exports[_0x078f('0x16')]=function(_0x19a182){var _0x201560=this;return new Promise(function(_0x25bb2d,_0xb8af8c){return db[_0x078f('0x17')][_0x078f('0x18')](_0x19a182[_0x078f('0x19')],{'raw':_0x19a182[_0x078f('0x1a')]?_0x19a182[_0x078f('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0x078f('0xd')](function(_0x52c74f){logger['info'](_0x078f('0x16'),_0x19a182);logger[_0x078f('0x1b')](_0x078f('0x16'),_0x19a182,JSON[_0x078f('0x1c')](_0x52c74f));_0x25bb2d(_0x52c74f);})[_0x078f('0x1d')](function(_0x2c6db4){logger[_0x078f('0x12')](_0x078f('0x16'),_0x2c6db4[_0x078f('0x14')],_0x19a182);_0xb8af8c(_0x201560['error'](0x1f4,_0x2c6db4[_0x078f('0x14')]));});});};exports[_0x078f('0x1e')]=function(_0x363cce){var _0x5a41c9=this;return new Promise(function(_0x484f7e,_0x3e5aa8){return db[_0x078f('0x17')][_0x078f('0x1f')]({'raw':_0x363cce[_0x078f('0x1a')]?_0x363cce[_0x078f('0x1a')][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x363cce[_0x078f('0x1a')]?_0x363cce['options'][_0x078f('0x21')]||null:null,'attributes':[[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')][_0x078f('0x23')]('id')),_0x078f('0x24')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x27')))),_0x078f('0x28')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x29')))),_0x078f('0x2a')],[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')]['fn']('IF',db['sequelize']['literal'](_0x078f('0x2b')))),_0x078f('0x2c')],[db[_0x078f('0x22')]['fn'](_0x078f('0x2d'),db['sequelize']['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x2e')))),_0x078f('0x2f')],[db[_0x078f('0x22')]['fn']('AVG',db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal']('`state`\x20=\x204,\x20`talktime`,\x20null'))),_0x078f('0x30')]]})[_0x078f('0xd')](function(_0x52d891){logger[_0x078f('0xe')](_0x078f('0x1e'),_0x363cce);logger[_0x078f('0x1b')]('AvgHandleTime',_0x363cce,JSON[_0x078f('0x1c')](_0x52d891));_0x484f7e(_0x52d891);})[_0x078f('0x1d')](function(_0x392037){logger[_0x078f('0x12')](_0x078f('0x1e'),_0x392037[_0x078f('0x14')],_0x363cce);_0x3e5aa8(_0x5a41c9['error'](0x1f4,_0x392037[_0x078f('0x14')]));});});};exports[_0x078f('0x31')]=function(_0x407895){var _0x99f89d=this;return new Promise(function(_0x4ef5dc,_0x474a46){return db[_0x078f('0x17')][_0x078f('0x1f')]({'raw':_0x407895[_0x078f('0x1a')]?_0x407895[_0x078f('0x1a')][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x407895[_0x078f('0x1a')]?_0x407895[_0x078f('0x1a')][_0x078f('0x21')]||null:null,'attributes':[[_0x078f('0x32'),_0x078f('0x33')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')]('`state`\x20=\x200,\x201,\x20null'))),'outboundNoSuchCallsDay'],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x34')))),_0x078f('0x35')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x078f('0x27')))),_0x078f('0x36')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x37')))),_0x078f('0x38')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db['sequelize'][_0x078f('0x26')]('`state`\x20=\x208,\x201,\x20null'))),_0x078f('0x39')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x3a')))),_0x078f('0x3b')],[db['sequelize']['fn'](_0x078f('0x25'),db['sequelize']['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x3c')))),_0x078f('0x3d')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x3e')))),_0x078f('0x3f')],[db['sequelize']['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x40')))),_0x078f('0x41')],[db[_0x078f('0x22')]['fn']('COUNT',db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')]('`state`\x20=\x2014,\x201,\x20null'))),_0x078f('0x42')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x43')))),_0x078f('0x44')],[db['sequelize']['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x45')))),_0x078f('0x46')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')][_0x078f('0x26')](_0x078f('0x47')))),'outboundRejectCallsDay'],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db['sequelize'][_0x078f('0x26')](_0x078f('0x48')))),_0x078f('0x49')]],'group':[_0x078f('0x32')]})['then'](function(_0x3badef){logger[_0x078f('0xe')]('GetVoiceQueueHopperHistory',_0x407895);logger[_0x078f('0x1b')]('GetVoiceQueueHopperHistory',_0x407895,JSON[_0x078f('0x1c')](_0x3badef));_0x4ef5dc(_0x3badef);})[_0x078f('0x1d')](function(_0x46561d){logger['error']('GetVoiceQueueHopperHistory',_0x46561d['message'],_0x407895);_0x474a46(_0x99f89d[_0x078f('0x12')](0x1f4,_0x46561d['message']));});});};exports[_0x078f('0x4a')]=function(_0x5bc135){var _0x38b069=this;return new Promise(function(_0x1109af,_0xa9e662){return db[_0x078f('0x17')]['findAll']({'raw':_0x5bc135[_0x078f('0x1a')]?_0x5bc135['options'][_0x078f('0x20')]===undefined?!![]:![]:!![],'where':_0x5bc135[_0x078f('0x1a')]?_0x5bc135['options'][_0x078f('0x21')]||null:null,'attributes':[[_0x078f('0x32'),_0x078f('0x33')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')][_0x078f('0x23')]('id')),_0x078f('0x4b')],[db[_0x078f('0x22')]['fn'](_0x078f('0x25'),db[_0x078f('0x22')]['fn']('IF',db[_0x078f('0x22')]['literal'](_0x078f('0x27')))),_0x078f('0x4c')]],'group':['campaign']})['then'](function(_0x244ba5){logger['info']('GetCampaignHopperHistory',_0x5bc135);logger[_0x078f('0x1b')](_0x078f('0x4a'),_0x5bc135,JSON[_0x078f('0x1c')](_0x244ba5));_0x1109af(_0x244ba5);})['catch'](function(_0x20d6f7){logger['error'](_0x078f('0x4a'),_0x20d6f7[_0x078f('0x14')],_0x5bc135);_0xa9e662(_0x38b069[_0x078f('0x12')](0x1f4,_0x20d6f7[_0x078f('0x14')]));});});};
\ No newline at end of file
index 164aed0..f572415 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d94=['/:id','show','update','util','path','express','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get','isAuthenticated','index','describe'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x6d94,0x148));var _0x46d9=function(_0x2ab175,_0x4715a9){_0x2ab175=_0x2ab175-0x0;var _0x212e36=_0x6d94[_0x2ab175];return _0x212e36;};'use strict';var multer=require('multer');var util=require(_0x46d9('0x0'));var path=require(_0x46d9('0x1'));var timeout=require('connect-timeout');var express=require(_0x46d9('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x46d9('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x46d9('0x4'));var controller=require(_0x46d9('0x5'));router[_0x46d9('0x6')]('/',auth[_0x46d9('0x7')](),controller[_0x46d9('0x8')]);router[_0x46d9('0x6')]('/describe',auth[_0x46d9('0x7')](),controller[_0x46d9('0x9')]);router['get'](_0x46d9('0xa'),auth[_0x46d9('0x7')](),controller[_0x46d9('0xb')]);router['post']('/',auth[_0x46d9('0x7')](),controller['create']);router['put'](_0x46d9('0xa'),auth['isAuthenticated'](),controller[_0x46d9('0xc')]);module['exports']=router;
\ No newline at end of file
+var _0x03ef=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperHistory.controller','get','index','/describe','isAuthenticated','/:id','show','create','put','exports'];(function(_0x7d5a8b,_0x2aedef){var _0x56ac46=function(_0x55a1ab){while(--_0x55a1ab){_0x7d5a8b['push'](_0x7d5a8b['shift']());}};_0x56ac46(++_0x2aedef);}(_0x03ef,0x169));var _0xf03e=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x03ef[_0x1928c9];return _0x51b5fb;};'use strict';var multer=require(_0xf03e('0x0'));var util=require(_0xf03e('0x1'));var path=require(_0xf03e('0x2'));var timeout=require(_0xf03e('0x3'));var express=require(_0xf03e('0x4'));var router=express['Router']();var fs_extra=require(_0xf03e('0x5'));var auth=require(_0xf03e('0x6'));var interaction=require(_0xf03e('0x7'));var config=require(_0xf03e('0x8'));var controller=require(_0xf03e('0x9'));router[_0xf03e('0xa')]('/',auth['isAuthenticated'](),controller[_0xf03e('0xb')]);router[_0xf03e('0xa')](_0xf03e('0xc'),auth[_0xf03e('0xd')](),controller['describe']);router[_0xf03e('0xa')](_0xf03e('0xe'),auth[_0xf03e('0xd')](),controller[_0xf03e('0xf')]);router['post']('/',auth[_0xf03e('0xd')](),controller[_0xf03e('0x10')]);router[_0xf03e('0x11')](_0xf03e('0xe'),auth[_0xf03e('0xd')](),controller['update']);module[_0xf03e('0x12')]=router;
\ No newline at end of file
index e5991c7..8150cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa7c=['sequelize','STRING'];(function(_0x3c957d,_0x40d8f3){var _0x46ab64=function(_0x470663){while(--_0x470663){_0x3c957d['push'](_0x3c957d['shift']());}};_0x46ab64(++_0x40d8f3);}(_0xaa7c,0x1ec));var _0xcaa7=function(_0x2cb9c3,_0xacf68f){_0x2cb9c3=_0x2cb9c3-0x0;var _0x1a3440=_0xaa7c[_0x2cb9c3];return _0x1a3440;};'use strict';var Sequelize=require(_0xcaa7('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']},'dialPrefix':{'type':Sequelize[_0xcaa7('0x1')]}};
\ No newline at end of file
+var _0xe94a=['exports','STRING','sequelize'];(function(_0x4fb7f5,_0x65876){var _0x2bf949=function(_0x23aab7){while(--_0x23aab7){_0x4fb7f5['push'](_0x4fb7f5['shift']());}};_0x2bf949(++_0x65876);}(_0xe94a,0x1c7));var _0xae94=function(_0x565fed,_0xb85768){_0x565fed=_0x565fed-0x0;var _0x3e018f=_0xe94a[_0x565fed];return _0x3e018f;};'use strict';var Sequelize=require(_0xae94('0x0'));module[_0xae94('0x1')]={'name':{'type':Sequelize[_0xae94('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xae94('0x2')]},'dialPrefix':{'type':Sequelize[_0xae94('0x2')]}};
\ No newline at end of file
index 3449dfe..0bf03b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa6f=['number','INTEGER','switch','defaultValue','queryInterface','addColumn','cf_%s','getCustomFields','findAndCountAll','getGlobalCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','redis','socket.io-emitter','./cmList.socket','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','get','Lists','UserProfileResource','end','stack','name','send','index','map','CmList','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','params','describe','addDisposition','ListId','Disposition','findOne','includeAll','removeDispositions','ids','addContacts','CmContact','tags','isArray','join','push','omit','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','concat','format','cf_%d','order','raw','getContactsCsv','ContactItemType','OrderBy','select','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','field','c.cf_','customField_','alias','item','from','cm_contact_has_items','ItemTypeId\x20=\x20?','CmContactId\x20=\x20c.id','description','description_additionalPhone_','each','toString','isEmpty','writeFileSync','/tmp/list_%d_%s.csv','attachment;\x20filename=','list_%d_%s.csv','setHeader','Content-type','text/csv','download','addCustomField','sequelize','transaction','addCustomFields','Sequelize','TEXT'];(function(_0x32d709,_0x5a3680){var _0x55ca94=function(_0x5498b5){while(--_0x5498b5){_0x32d709['push'](_0x32d709['shift']());}};_0x55ca94(++_0x5a3680);}(_0xfa6f,0x163));var _0xffa6=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xfa6f[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0xffa6('0x0'));var rimraf=require(_0xffa6('0x1'));var zipdir=require(_0xffa6('0x2'));var jsonpatch=require(_0xffa6('0x3'));var rp=require('request-promise');var moment=require(_0xffa6('0x4'));var BPromise=require(_0xffa6('0x5'));var Mustache=require('mustache');var util=require(_0xffa6('0x6'));var path=require(_0xffa6('0x7'));var sox=require('sox');var csv=require(_0xffa6('0x8'));var ejs=require(_0xffa6('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xffa6('0xa'));var squel=require(_0xffa6('0xb'));var crypto=require(_0xffa6('0xc'));var jsforce=require(_0xffa6('0xd'));var deskjs=require(_0xffa6('0xe'));var toCsv=require(_0xffa6('0x8'));var querystring=require(_0xffa6('0xf'));var Papa=require(_0xffa6('0x10'));var Redis=require(_0xffa6('0x11'));var authService=require(_0xffa6('0x12'));var qs=require(_0xffa6('0x13'));var as=require(_0xffa6('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xffa6('0x15'));var utils=require(_0xffa6('0x16'));var config=require(_0xffa6('0x17'));var licenseUtil=require(_0xffa6('0x18'));var db=require('../../mysqldb')['db'];var csv_results;config[_0xffa6('0x19')]=_['defaults'](config[_0xffa6('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xffa6('0x1a'))(new Redis(config[_0xffa6('0x19')]));require(_0xffa6('0x1b'))['register'](socket);function respondWithStatusCode(_0x16b86d,_0xcfc87c){_0xcfc87c=_0xcfc87c||0xcc;return function(_0x521d88){if(_0x521d88){return _0x16b86d[_0xffa6('0x1c')](_0xcfc87c);}return _0x16b86d['status'](_0xcfc87c)['end']();};}function respondWithResult(_0x520d8d,_0x1e5666){_0x1e5666=_0x1e5666||0xc8;return function(_0x13a3c4){if(_0x13a3c4){return _0x520d8d[_0xffa6('0x1d')](_0x1e5666)[_0xffa6('0x1e')](_0x13a3c4);}};}function respondWithFilteredResult(_0xc2fa31,_0x1c157e){return function(_0x5d1f95){if(_0x5d1f95){var _0x5cfdb5=typeof _0x1c157e[_0xffa6('0x1f')]===_0xffa6('0x20')&&typeof _0x1c157e[_0xffa6('0x21')]===_0xffa6('0x20');var _0x1ff7c2=_0x5d1f95[_0xffa6('0x22')];var _0x5edd36=_0x5cfdb5?0x0:_0x1c157e[_0xffa6('0x1f')];var _0x47df0b=_0x5cfdb5?_0x5d1f95[_0xffa6('0x22')]:_0x1c157e[_0xffa6('0x1f')]+_0x1c157e[_0xffa6('0x21')];var _0x4c5dbe;if(_0x47df0b>=_0x1ff7c2){_0x47df0b=_0x1ff7c2;_0x4c5dbe=0xc8;}else{_0x4c5dbe=0xce;}_0xc2fa31[_0xffa6('0x1d')](_0x4c5dbe);return _0xc2fa31[_0xffa6('0x23')](_0xffa6('0x24'),_0x5edd36+'-'+_0x47df0b+'/'+_0x1ff7c2)[_0xffa6('0x1e')](_0x5d1f95);}return null;};}function patchUpdates(_0x354377){return function(_0x5718b3){try{jsonpatch['apply'](_0x5718b3,_0x354377,!![]);}catch(_0x2b38e7){return BPromise[_0xffa6('0x25')](_0x2b38e7);}return _0x5718b3[_0xffa6('0x26')]();};}function saveUpdates(_0x3263b8,_0x442a43){return function(_0x1cf2b7){if(_0x1cf2b7){return _0x1cf2b7['update'](_0x3263b8)[_0xffa6('0x27')](function(_0x4eebff){return _0x4eebff;});}return null;};}function removeEntity(_0x508f71,_0x3f20dc){return function(_0x17cdaf){if(_0x17cdaf){return _0x17cdaf[_0xffa6('0x28')]()['then'](function(){var _0x20d9d7=_0x17cdaf[_0xffa6('0x29')]({'plain':!![]});var _0x204a87=_0xffa6('0x2a');return db[_0xffa6('0x2b')][_0xffa6('0x28')]({'where':{'type':_0x204a87,'resourceId':_0x20d9d7['id']}})['then'](function(){return _0x17cdaf;});})['then'](function(){_0x508f71['status'](0xcc)[_0xffa6('0x2c')]();});}};}function handleEntityNotFound(_0xc9bb1a,_0x3173c3){return function(_0x565526){if(!_0x565526){_0xc9bb1a['sendStatus'](0x194);}return _0x565526;};}function handleError(_0x2b034a,_0x498085){_0x498085=_0x498085||0x1f4;return function(_0xccd741){logger['error'](_0xccd741[_0xffa6('0x2d')]);if(_0xccd741['name']){delete _0xccd741[_0xffa6('0x2e')];}_0x2b034a[_0xffa6('0x1d')](_0x498085)[_0xffa6('0x2f')](_0xccd741);};}exports[_0xffa6('0x30')]=function(_0x32ffe1,_0x70a280){var _0x327a79={},_0xa42341={},_0x697a41={'count':0x0,'rows':[]};var _0x2e3e4a=_[_0xffa6('0x31')](db[_0xffa6('0x32')][_0xffa6('0x33')],function(_0x3a2407){return{'name':_0x3a2407[_0xffa6('0x34')],'type':_0x3a2407[_0xffa6('0x35')][_0xffa6('0x36')]};});_0xa42341[_0xffa6('0x37')]=_[_0xffa6('0x31')](_0x2e3e4a,'name');_0xa42341[_0xffa6('0x38')]=_[_0xffa6('0x39')](_0x32ffe1[_0xffa6('0x38')]);_0xa42341[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0xa42341[_0xffa6('0x37')],_0xa42341[_0xffa6('0x38')]);_0x327a79[_0xffa6('0x3c')]=_[_0xffa6('0x3b')](_0xa42341[_0xffa6('0x37')],qs[_0xffa6('0x3d')](_0x32ffe1[_0xffa6('0x38')][_0xffa6('0x3d')]));_0x327a79[_0xffa6('0x3c')]=_0x327a79['attributes'][_0xffa6('0x3e')]?_0x327a79['attributes']:_0xa42341[_0xffa6('0x37')];if(!_0x32ffe1['query'][_0xffa6('0x3f')](_0xffa6('0x40'))){_0x327a79['limit']=qs[_0xffa6('0x21')](_0x32ffe1[_0xffa6('0x38')]['limit']);_0x327a79[_0xffa6('0x1f')]=qs[_0xffa6('0x1f')](_0x32ffe1['query'][_0xffa6('0x1f')]);}_0x327a79['order']=qs['sort'](_0x32ffe1[_0xffa6('0x38')][_0xffa6('0x41')]);_0x327a79[_0xffa6('0x42')]=qs[_0xffa6('0x3a')](_[_0xffa6('0x43')](_0x32ffe1[_0xffa6('0x38')],_0xa42341[_0xffa6('0x3a')]),_0x2e3e4a);if(_0x32ffe1[_0xffa6('0x38')][_0xffa6('0x44')]){_0x327a79[_0xffa6('0x42')]=_[_0xffa6('0x45')](_0x327a79['where'],{'$or':_[_0xffa6('0x31')](_0x2e3e4a,function(_0x4a718a){if(_0x4a718a[_0xffa6('0x35')]!==_0xffa6('0x46')){var _0x13be83={};_0x13be83[_0x4a718a[_0xffa6('0x2e')]]={'$like':'%'+_0x32ffe1[_0xffa6('0x38')]['filter']+'%'};return _0x13be83;}})});}_0x327a79=_[_0xffa6('0x45')]({},_0x327a79,_0x32ffe1[_0xffa6('0x47')]);var _0x2a47f0={'where':_0x327a79[_0xffa6('0x42')]};return db[_0xffa6('0x32')]['count'](_0x2a47f0)[_0xffa6('0x27')](function(_0x10a768){_0x697a41[_0xffa6('0x22')]=_0x10a768;if(_0x32ffe1[_0xffa6('0x38')]['includeAll']){_0x327a79[_0xffa6('0x48')]=[{'all':!![]}];}return db[_0xffa6('0x32')][_0xffa6('0x49')](_0x327a79);})['then'](function(_0x476d4c){_0x697a41[_0xffa6('0x4a')]=_0x476d4c;return _0x697a41;})[_0xffa6('0x27')](respondWithFilteredResult(_0x70a280,_0x327a79))[_0xffa6('0x4b')](handleError(_0x70a280,null));};exports[_0xffa6('0x4c')]=function(_0x492800,_0x119315){var _0x97daac={'raw':![],'where':{'id':_0x492800['params']['id']}},_0x10768b={};_0x10768b[_0xffa6('0x37')]=_[_0xffa6('0x39')](db['CmList'][_0xffa6('0x33')]);_0x10768b[_0xffa6('0x38')]=_[_0xffa6('0x39')](_0x492800['query']);_0x10768b[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0x10768b[_0xffa6('0x37')],_0x10768b[_0xffa6('0x38')]);_0x97daac[_0xffa6('0x3c')]=_[_0xffa6('0x3b')](_0x10768b[_0xffa6('0x37')],qs[_0xffa6('0x3d')](_0x492800['query'][_0xffa6('0x3d')]));_0x97daac[_0xffa6('0x3c')]=_0x97daac['attributes']['length']?_0x97daac[_0xffa6('0x3c')]:_0x10768b['model'];if(_0x492800[_0xffa6('0x38')]['includeAll']){_0x97daac[_0xffa6('0x48')]=[{'all':!![]}];}_0x97daac=_['merge']({},_0x97daac,_0x492800[_0xffa6('0x47')]);return db[_0xffa6('0x32')]['find'](_0x97daac)['then'](handleEntityNotFound(_0x119315,null))[_0xffa6('0x27')](respondWithResult(_0x119315,null))[_0xffa6('0x4b')](handleError(_0x119315,null));};exports[_0xffa6('0x4d')]=function(_0x12d07a,_0x550aa9){return db[_0xffa6('0x32')]['create'](_0x12d07a[_0xffa6('0x4e')],{})['then'](function(_0x37236b){var _0x2bb279=_0x12d07a[_0xffa6('0x4f')][_0xffa6('0x29')]({'plain':!![]});if(!_0x2bb279)throw new Error(_0xffa6('0x50'));if(_0x2bb279[_0xffa6('0x51')]===_0xffa6('0x4f')){var _0x56e06c=_0x37236b[_0xffa6('0x29')]({'plain':!![]});var _0x53d57f=_0xffa6('0x2a');return db['UserProfileSection']['find']({'where':{'name':_0x53d57f,'userProfileId':_0x2bb279[_0xffa6('0x52')]},'raw':!![]})[_0xffa6('0x27')](function(_0x392f79){if(_0x392f79&&_0x392f79[_0xffa6('0x53')]===0x0){return db['UserProfileResource'][_0xffa6('0x4d')]({'name':_0x56e06c[_0xffa6('0x2e')],'resourceId':_0x56e06c['id'],'type':_0x392f79[_0xffa6('0x2e')],'sectionId':_0x392f79['id']},{})[_0xffa6('0x27')](function(){return _0x37236b;});}else{return _0x37236b;}})['catch'](function(_0x3e59c5){logger[_0xffa6('0x54')](_0xffa6('0x55'),_0x3e59c5);throw _0x3e59c5;});}return _0x37236b;})[_0xffa6('0x27')](respondWithResult(_0x550aa9,0xc9))[_0xffa6('0x4b')](handleError(_0x550aa9,null));};exports[_0xffa6('0x56')]=function(_0x5b7f3d,_0x4857c3){if(_0x5b7f3d[_0xffa6('0x4e')]['id']){delete _0x5b7f3d[_0xffa6('0x4e')]['id'];}return db[_0xffa6('0x32')][_0xffa6('0x57')]({'where':{'id':_0x5b7f3d[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x4857c3,null))[_0xffa6('0x27')](saveUpdates(_0x5b7f3d['body'],null))[_0xffa6('0x27')](respondWithResult(_0x4857c3,null))['catch'](handleError(_0x4857c3,null));};exports[_0xffa6('0x28')]=function(_0x2ae2db,_0x472323){return db[_0xffa6('0x32')][_0xffa6('0x57')]({'where':{'id':_0x2ae2db[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x472323,null))[_0xffa6('0x27')](removeEntity(_0x472323,null))[_0xffa6('0x4b')](handleError(_0x472323,null));};exports[_0xffa6('0x59')]=function(_0x3edb9e,_0x5696e0){return db[_0xffa6('0x32')]['describe']()['then'](respondWithResult(_0x5696e0,null))['catch'](handleError(_0x5696e0,null));};exports[_0xffa6('0x5a')]=function(_0x15b9d0,_0x55053f,_0xfabfec){if(_0x15b9d0[_0xffa6('0x4e')]['id']){delete _0x15b9d0['body']['id'];}return db[_0xffa6('0x32')][_0xffa6('0x57')]({'where':{'id':_0x15b9d0[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x55053f,null))[_0xffa6('0x27')](function(_0x2f8cad){if(_0x2f8cad){_0x15b9d0[_0xffa6('0x4e')][_0xffa6('0x5b')]=_0x2f8cad['id'];return db[_0xffa6('0x5c')]['create'](_0x15b9d0[_0xffa6('0x4e')]);}})[_0xffa6('0x27')](respondWithResult(_0x55053f,null))[_0xffa6('0x4b')](handleError(_0x55053f,null));};exports['getDispositions']=function(_0x3ebd09,_0x45f28e,_0x42e240){var _0x2685f3={'raw':![],'where':{}};var _0x23c7ab={};var _0x2daf6e={'count':0x0,'rows':[]};return db['CmList'][_0xffa6('0x5d')]({'where':{'id':_0x3ebd09['params']['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x45f28e,null))[_0xffa6('0x27')](function(_0x22fc64){if(_0x22fc64){_0x23c7ab['model']=_[_0xffa6('0x39')](db[_0xffa6('0x5c')][_0xffa6('0x33')]);_0x23c7ab[_0xffa6('0x38')]=_[_0xffa6('0x39')](_0x3ebd09['query']);_0x23c7ab[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0x23c7ab['model'],_0x23c7ab['query']);_0x2685f3['attributes']=_[_0xffa6('0x3b')](_0x23c7ab['model'],qs[_0xffa6('0x3d')](_0x3ebd09[_0xffa6('0x38')][_0xffa6('0x3d')]));_0x2685f3[_0xffa6('0x3c')]=_0x2685f3[_0xffa6('0x3c')]['length']?_0x2685f3[_0xffa6('0x3c')]:_0x23c7ab[_0xffa6('0x37')];if(!_0x3ebd09[_0xffa6('0x38')][_0xffa6('0x3f')]('nolimit')){_0x2685f3[_0xffa6('0x21')]=qs[_0xffa6('0x21')](_0x3ebd09[_0xffa6('0x38')]['limit']);_0x2685f3['offset']=qs[_0xffa6('0x1f')](_0x3ebd09['query']['offset']);}_0x2685f3['order']=qs[_0xffa6('0x41')](_0x3ebd09[_0xffa6('0x38')][_0xffa6('0x41')]);_0x2685f3[_0xffa6('0x42')]=qs['filters'](_['pick'](_0x3ebd09[_0xffa6('0x38')],_0x23c7ab['filters']));_0x2685f3[_0xffa6('0x42')][_0xffa6('0x5b')]=_0x22fc64['id'];if(_0x3ebd09[_0xffa6('0x38')]['filter']){_0x2685f3[_0xffa6('0x42')]=_[_0xffa6('0x45')](_0x2685f3[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x2685f3[_0xffa6('0x3c')],function(_0x5301ab){var _0x58d982={};_0x58d982[_0x5301ab]={'$like':'%'+_0x3ebd09[_0xffa6('0x38')][_0xffa6('0x44')]+'%'};return _0x58d982;})});}_0x2685f3=_['merge']({},_0x2685f3,_0x3ebd09[_0xffa6('0x47')]);return db[_0xffa6('0x5c')][_0xffa6('0x22')]({'where':_0x2685f3[_0xffa6('0x42')]})[_0xffa6('0x27')](function(_0xe1355){_0x2daf6e['count']=_0xe1355;if(_0x3ebd09[_0xffa6('0x38')][_0xffa6('0x5e')]){_0x2685f3[_0xffa6('0x48')]=[{'all':!![]}];}return db[_0xffa6('0x5c')][_0xffa6('0x49')](_0x2685f3);})['then'](function(_0x178b5f){_0x2daf6e[_0xffa6('0x4a')]=_0x178b5f;return _0x2daf6e;});}})[_0xffa6('0x27')](respondWithFilteredResult(_0x45f28e,_0x2685f3))[_0xffa6('0x4b')](handleError(_0x45f28e,null));};exports[_0xffa6('0x5f')]=function(_0x3f6e19,_0x2a577a,_0x9a3816){return db[_0xffa6('0x32')]['find']({'where':{'id':_0x3f6e19['params']['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x2a577a,null))[_0xffa6('0x27')](function(_0x5d7da6){if(_0x5d7da6){return _0x5d7da6['removeDispositions'](_0x3f6e19['query'][_0xffa6('0x60')]);}})[_0xffa6('0x27')](respondWithStatusCode(_0x2a577a,null))['catch'](handleError(_0x2a577a,null));};exports[_0xffa6('0x61')]=function(_0x3e5fcf,_0x417ebe,_0x163d89){return db[_0xffa6('0x32')]['find']({'where':{'id':_0x3e5fcf[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x417ebe,null))[_0xffa6('0x27')](function(_0x1516c6){if(_0x1516c6){var _0x16449f=[];var _0x28ca66={'success':[],'errors':[]};return db[_0xffa6('0x62')][_0xffa6('0x59')]()[_0xffa6('0x27')](function(_0x2adba5){if(_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')]&&_[_0xffa6('0x64')](_0x3e5fcf['body'][_0xffa6('0x63')])){if(_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')][_0xffa6('0x3e')]){_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')]=_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')][_0xffa6('0x65')](';')+';';}else{_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')]=null;}}else{_0x3e5fcf[_0xffa6('0x4e')][_0xffa6('0x63')]=null;}if(_0x3e5fcf[_0xffa6('0x4e')]&&_[_0xffa6('0x64')](_0x3e5fcf[_0xffa6('0x4e')])){for(var _0x1f74c4=0x0;_0x1f74c4<_0x3e5fcf['body']['length'];_0x1f74c4+=0x1){_0x3e5fcf[_0xffa6('0x4e')][_0x1f74c4]['ListId']=_0x3e5fcf[_0xffa6('0x58')]['id'];_0x16449f[_0xffa6('0x66')](_0x3e5fcf['body'][_0x1f74c4]);}return BPromise['each'](_0x16449f,function(_0x576437){return db[_0xffa6('0x62')][_0xffa6('0x4d')](_[_0xffa6('0x67')](_0x576437,[_0xffa6('0x60'),'id'])||{},{'fields':_[_0xffa6('0x39')](_0x2adba5),'raw':!![]})[_0xffa6('0x27')](function(_0x2f417a){_0x28ca66[_0xffa6('0x68')]['push'](_0x2f417a[_0xffa6('0x69')]);})['catch'](function(_0x3f05ed){_0x28ca66[_0xffa6('0x6a')][_0xffa6('0x66')]({'data':_0x576437,'error':_0x3f05ed[_0xffa6('0x6b')]});});})['then'](function(_0x38449b){return _0x28ca66;})[_0xffa6('0x4b')](function(_0x2dab3b){return _0x2dab3b;});}else{_0x417ebe[_0xffa6('0x1d')](0x190)[_0xffa6('0x1e')]({'message':_0xffa6('0x6c')});}});}})[_0xffa6('0x27')](respondWithResult(_0x417ebe,null))[_0xffa6('0x4b')](handleError(_0x417ebe,null));};exports[_0xffa6('0x6d')]=function(_0x3c53de,_0x2dfbaa,_0xfe83d){var _0x146995;return db[_0xffa6('0x32')][_0xffa6('0x57')]({'where':{'id':_0x3c53de[_0xffa6('0x58')]['id']},'include':[{'model':db[_0xffa6('0x6e')],'as':_0xffa6('0x6f')}]})['then'](handleEntityNotFound(_0x2dfbaa,null))[_0xffa6('0x27')](function(_0x10fd23){if(_0x10fd23){_0x146995=_0x10fd23;return db['CmContact'][_0xffa6('0x33')];}})[_0xffa6('0x27')](function(_0x12a20b){if(_0x12a20b){var _0x174942={};var _0x4b6031={};_0x4b6031[_0xffa6('0x37')]=_[_0xffa6('0x70')](_[_0xffa6('0x39')](_0x12a20b),_['map'](_0x146995[_0xffa6('0x6f')],function(_0x3038a0){return util[_0xffa6('0x71')](_0xffa6('0x72'),_0x3038a0['id']);}));_0x4b6031['query']=_[_0xffa6('0x39')](_0x3c53de[_0xffa6('0x38')]);_0x4b6031['filters']=_[_0xffa6('0x3b')](_0x4b6031[_0xffa6('0x37')],_0x4b6031[_0xffa6('0x38')]);_0x174942['attributes']=_['intersection'](_0x4b6031[_0xffa6('0x37')],qs['fields'](_0x3c53de[_0xffa6('0x38')]['fields']));_0x174942[_0xffa6('0x3c')]=_0x174942[_0xffa6('0x3c')][_0xffa6('0x3e')]?_0x174942[_0xffa6('0x3c')]:_0x4b6031[_0xffa6('0x37')];if(!_0x3c53de[_0xffa6('0x38')][_0xffa6('0x3f')](_0xffa6('0x40'))){_0x174942[_0xffa6('0x21')]=qs[_0xffa6('0x21')](_0x3c53de[_0xffa6('0x38')][_0xffa6('0x21')]);_0x174942[_0xffa6('0x1f')]=qs[_0xffa6('0x1f')](_0x3c53de['query'][_0xffa6('0x1f')]);}_0x174942[_0xffa6('0x73')]=qs['sort'](_0x3c53de[_0xffa6('0x38')][_0xffa6('0x41')]);_0x174942[_0xffa6('0x42')]=qs[_0xffa6('0x3a')](_[_0xffa6('0x43')](_0x3c53de[_0xffa6('0x38')],_0x4b6031[_0xffa6('0x3a')]));_0x174942[_0xffa6('0x74')]=!![];if(_0x3c53de[_0xffa6('0x38')][_0xffa6('0x44')]){_0x174942[_0xffa6('0x42')]=_['merge'](_0x174942[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x174942[_0xffa6('0x3c')],function(_0x1f3a84){var _0x260fe5={};_0x260fe5[_0x1f3a84]={'$like':'%'+_0x3c53de['query'][_0xffa6('0x44')]+'%'};return _0x260fe5;})});}_0x174942=_[_0xffa6('0x45')]({},_0x174942,_0x3c53de['options']);return _0x146995[_0xffa6('0x6d')](_0x174942);}})[_0xffa6('0x27')](respondWithResult(_0x2dfbaa,null))['catch'](handleError(_0x2dfbaa,null));};exports[_0xffa6('0x75')]=function(_0x4c8fc1,_0x51d5b1,_0x144d89){var _0xe86fa4;var _0xb9f3fb;var _0x5df0a1;var _0x1383c3=_0x4c8fc1[_0xffa6('0x58')]['id'];csv_results=[];return db[_0xffa6('0x76')]['findAll']({'attributes':['id',_0xffa6('0x2e')],'raw':!![],'order':[_0xffa6('0x77')]})['then'](function(_0x3459c7){_0xe86fa4=_0x3459c7;var _0x2ed00f=_['keys'](db[_0xffa6('0x62')][_0xffa6('0x33')]);return db[_0xffa6('0x6e')][_0xffa6('0x49')]({'raw':!![],'attributes':['id','alias']})[_0xffa6('0x27')](function(_0x1676a7){_0xb9f3fb=_0x1676a7;var _0x113a18=squel[_0xffa6('0x78')]()['fields'](_0x2ed00f)['from']('cm_contacts','c')['where'](_0xffa6('0x79'),_0x1383c3)[_0xffa6('0x42')](_0xffa6('0x7a'))[_0xffa6('0x7b')]();for(var _0x37f706=0x0;_0x37f706<_0xb9f3fb[_0xffa6('0x3e')];_0x37f706++){_0x113a18[_0xffa6('0x7c')](_0xffa6('0x7d')+_0xb9f3fb[_0x37f706]['id'],_0xffa6('0x7e')+_0xb9f3fb[_0x37f706][_0xffa6('0x7f')]);}for(var _0x37f706=0x0;_0x37f706<_0xe86fa4[_0xffa6('0x3e')];_0x37f706++){_0x113a18[_0xffa6('0x7c')](squel[_0xffa6('0x78')]()[_0xffa6('0x7c')](_0xffa6('0x80'))[_0xffa6('0x81')](_0xffa6('0x82'))[_0xffa6('0x42')](_0xffa6('0x83'),_0xe86fa4[_0x37f706]['id'])[_0xffa6('0x42')](_0xffa6('0x84')),'additionalPhone_'+_0xe86fa4[_0x37f706][_0xffa6('0x2e')]);_0x113a18['field'](squel[_0xffa6('0x78')]()[_0xffa6('0x7c')](_0xffa6('0x85'))[_0xffa6('0x81')](_0xffa6('0x82'))[_0xffa6('0x42')](_0xffa6('0x83'),_0xe86fa4[_0x37f706]['id'])[_0xffa6('0x42')](_0xffa6('0x84')),_0xffa6('0x86')+_0xe86fa4[_0x37f706][_0xffa6('0x2e')]);}var _0x24dea3=[];_0x24dea3[_0xffa6('0x66')](_0x113a18['toString']());BPromise[_0xffa6('0x87')](_0x24dea3,handleQuery)[_0xffa6('0x27')](function(_0x58a9de){handleQuery(_0x113a18[_0xffa6('0x88')]());var _0x31b33b=csv_results[0x0];if(!_[_0xffa6('0x89')](_0x31b33b)){var _0xf1aefa=toCsv(_0x31b33b);var _0x26f804=Date['now']();fs[_0xffa6('0x8a')](util[_0xffa6('0x71')](_0xffa6('0x8b'),_0x1383c3,_0x26f804),_0xf1aefa);_0x51d5b1['setHeader']('Content-disposition',_0xffa6('0x8c')+util[_0xffa6('0x71')](_0xffa6('0x8d'),_0x1383c3,_0x26f804));_0x51d5b1[_0xffa6('0x8e')](_0xffa6('0x8f'),_0xffa6('0x90'));return _0x51d5b1[_0xffa6('0x91')](util['format'](_0xffa6('0x8b'),_0x1383c3,_0x26f804));}else{return _0x51d5b1['sendStatus'](0xcc);}});});});};exports[_0xffa6('0x92')]=function(_0x41fb3e,_0x3db178,_0x43a7c9){var _0x4afe3b;delete _0x41fb3e[_0xffa6('0x4e')]['id'];return db[_0xffa6('0x32')]['findOne']({'where':{'id':_0x41fb3e[_0xffa6('0x58')]['id']}})['then'](handleEntityNotFound(_0x3db178,null))[_0xffa6('0x27')](function(_0x56be58){if(_0x56be58){return db[_0xffa6('0x93')][_0xffa6('0x94')](function(_0x37951f){return db[_0xffa6('0x6e')][_0xffa6('0x4d')](_0x41fb3e[_0xffa6('0x4e')],{'transaction':_0x37951f})[_0xffa6('0x27')](function(_0x398880){_0x4afe3b=_0x398880;return _0x56be58[_0xffa6('0x95')](_0x398880,{'transaction':_0x37951f});})['then'](function(){var _0x2139c8={'type':db[_0xffa6('0x96')][_0xffa6('0x97')],'transaction':_0x37951f};switch(_0x41fb3e[_0xffa6('0x4e')][_0xffa6('0x35')]){case'text':_0x2139c8[_0xffa6('0x35')]=db[_0xffa6('0x96')][_0xffa6('0x97')];break;case _0xffa6('0x98'):_0x2139c8[_0xffa6('0x35')]=db['Sequelize'][_0xffa6('0x99')];break;case _0xffa6('0x9a'):_0x2139c8[_0xffa6('0x35')]=db[_0xffa6('0x96')]['BOOLEAN'];_0x2139c8[_0xffa6('0x9b')]=![];break;default:}return db[_0xffa6('0x93')][_0xffa6('0x9c')][_0xffa6('0x9d')]('cm_contacts',util[_0xffa6('0x71')](_0xffa6('0x9e'),_0x4afe3b['id']),_0x2139c8);})[_0xffa6('0x27')](function(){return _0x4afe3b;});});}})[_0xffa6('0x27')](respondWithResult(_0x3db178,null))[_0xffa6('0x4b')](handleError(_0x3db178,null));};exports[_0xffa6('0x9f')]=function(_0x2c208e,_0x5c4795,_0x39fff9){var _0x143f5b={};var _0x1b13a9={};var _0x22cd79;var _0x2cf54b;return db[_0xffa6('0x32')][_0xffa6('0x5d')]({'where':{'id':_0x2c208e[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x5c4795,null))['then'](function(_0x514610){if(_0x514610){_0x22cd79=_0x514610;_0x1b13a9['model']=_['keys'](db['CmCustomField'][_0xffa6('0x33')]);_0x1b13a9[_0xffa6('0x38')]=_[_0xffa6('0x39')](_0x2c208e[_0xffa6('0x38')]);_0x1b13a9['filters']=_[_0xffa6('0x3b')](_0x1b13a9[_0xffa6('0x37')],_0x1b13a9[_0xffa6('0x38')]);_0x143f5b[_0xffa6('0x3c')]=_[_0xffa6('0x3b')](_0x1b13a9[_0xffa6('0x37')],qs[_0xffa6('0x3d')](_0x2c208e['query'][_0xffa6('0x3d')]));_0x143f5b[_0xffa6('0x3c')]=_0x143f5b['attributes'][_0xffa6('0x3e')]?_0x143f5b[_0xffa6('0x3c')]:_0x1b13a9[_0xffa6('0x37')];_0x143f5b[_0xffa6('0x73')]=qs[_0xffa6('0x41')](_0x2c208e[_0xffa6('0x38')]['sort']);_0x143f5b['where']=qs[_0xffa6('0x3a')](_[_0xffa6('0x43')](_0x2c208e[_0xffa6('0x38')],_0x1b13a9['filters']));_0x143f5b[_0xffa6('0x42')]=_[_0xffa6('0x45')](_0x143f5b[_0xffa6('0x42')],{'$or':[{'ListId':_0x514610['id']},{'ListId':null}]});if(_0x2c208e[_0xffa6('0x38')]['filter']){_0x143f5b[_0xffa6('0x42')]=_['merge'](_0x143f5b[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x143f5b[_0xffa6('0x3c')],function(_0x137d01){var _0x5af9c5={};_0x5af9c5[_0x137d01]={'$like':'%'+_0x2c208e[_0xffa6('0x38')][_0xffa6('0x44')]+'%'};return _0x5af9c5;})});}_0x143f5b=_[_0xffa6('0x45')]({},_0x143f5b,_0x2c208e[_0xffa6('0x47')]);return db[_0xffa6('0x6e')][_0xffa6('0xa0')](_0x143f5b);}})[_0xffa6('0x27')](respondWithResult(_0x5c4795,null))[_0xffa6('0x4b')](handleError(_0x5c4795,null));};exports[_0xffa6('0xa1')]=function(_0x1eed47,_0x2c122e){return db[_0xffa6('0x6e')][_0xffa6('0xa0')]({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x2c122e,null))[_0xffa6('0x27')](function(_0x30ff0c){return _0x30ff0c;})['then'](respondWithResult(_0x2c122e,null))['catch'](handleError(_0x2c122e,null));};exports[_0xffa6('0xa2')]=function(_0x1e9178,_0x3941d5,_0x2bc766){return db[_0xffa6('0x32')]['find']({'where':{'id':_0x1e9178[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x3941d5,null))[_0xffa6('0x27')](function(_0x1b0681){if(_0x1b0681){return _0x1b0681['addAgents'](_0x1e9178[_0xffa6('0x4e')][_0xffa6('0x60')],_[_0xffa6('0x67')](_0x1e9178[_0xffa6('0x4e')],[_0xffa6('0x60'),'id'])||{})[_0xffa6('0xa3')](function(_0x1d5390){for(var _0x20d530=0x0;_0x20d530<_0x1e9178['body'][_0xffa6('0x60')][_0xffa6('0x3e')];_0x20d530+=0x1){socket[_0xffa6('0xa4')](_0xffa6('0xa5'),{'UserId':Number(_0x1e9178[_0xffa6('0x4e')][_0xffa6('0x60')][_0x20d530]),'CmListId':Number(_0x1e9178[_0xffa6('0x58')]['id'])});}return _0x1d5390;});}})['then'](respondWithResult(_0x3941d5,null))[_0xffa6('0x4b')](handleError(_0x3941d5,null));};exports[_0xffa6('0xa6')]=function(_0x5c23b7,_0x1ba51d,_0x542b8e){return db[_0xffa6('0x32')][_0xffa6('0x57')]({'where':{'id':_0x5c23b7['params']['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x1ba51d,null))[_0xffa6('0x27')](function(_0x50bfa6){if(_0x50bfa6){return _0x50bfa6[_0xffa6('0xa6')](_0x5c23b7[_0xffa6('0x38')]['ids'])[_0xffa6('0x27')](function(){if(_[_0xffa6('0x64')](_0x5c23b7[_0xffa6('0x38')][_0xffa6('0x60')])){for(var _0x1bd615=0x0;_0x1bd615<_0x5c23b7[_0xffa6('0x38')]['ids']['length'];_0x1bd615+=0x1){socket[_0xffa6('0xa4')](_0xffa6('0xa7'),{'UserId':Number(_0x5c23b7[_0xffa6('0x38')]['ids'][_0x1bd615]),'CmListId':Number(_0x5c23b7[_0xffa6('0x58')]['id'])});}}else{socket[_0xffa6('0xa4')]('userCmList:remove',{'UserId':Number(_0x5c23b7[_0xffa6('0x38')][_0xffa6('0x60')]),'CmListId':Number(_0x5c23b7[_0xffa6('0x58')]['id'])});}});}})[_0xffa6('0x27')](respondWithStatusCode(_0x1ba51d,null))[_0xffa6('0x4b')](handleError(_0x1ba51d,null));};exports[_0xffa6('0xa8')]=function(_0x55aa8e,_0x29721b,_0xb8b0d2){var _0x5aed4d={};var _0x5be6e2={};var _0x5b6acc;var _0x58b53f;return db['CmList'][_0xffa6('0x5d')]({'where':{'id':_0x55aa8e[_0xffa6('0x58')]['id']}})[_0xffa6('0x27')](handleEntityNotFound(_0x29721b,null))[_0xffa6('0x27')](function(_0x294308){if(_0x294308){_0x5b6acc=_0x294308;_0x5be6e2[_0xffa6('0x37')]=_[_0xffa6('0x39')](db['User'][_0xffa6('0x33')]);_0x5be6e2[_0xffa6('0x38')]=_[_0xffa6('0x39')](_0x55aa8e[_0xffa6('0x38')]);_0x5be6e2[_0xffa6('0x3a')]=_[_0xffa6('0x3b')](_0x5be6e2[_0xffa6('0x37')],_0x5be6e2[_0xffa6('0x38')]);_0x5aed4d[_0xffa6('0x3c')]=_[_0xffa6('0x3b')](_0x5be6e2[_0xffa6('0x37')],qs[_0xffa6('0x3d')](_0x55aa8e[_0xffa6('0x38')]['fields']));_0x5aed4d[_0xffa6('0x3c')]=_0x5aed4d[_0xffa6('0x3c')][_0xffa6('0x3e')]?_0x5aed4d[_0xffa6('0x3c')]:_0x5be6e2[_0xffa6('0x37')];_0x5aed4d[_0xffa6('0x73')]=qs[_0xffa6('0x41')](_0x55aa8e['query'][_0xffa6('0x41')]);_0x5aed4d[_0xffa6('0x42')]=qs['filters'](_[_0xffa6('0x43')](_0x55aa8e[_0xffa6('0x38')],_0x5be6e2[_0xffa6('0x3a')]));if(_0x55aa8e[_0xffa6('0x38')][_0xffa6('0x44')]){_0x5aed4d[_0xffa6('0x42')]=_['merge'](_0x5aed4d[_0xffa6('0x42')],{'$or':_[_0xffa6('0x31')](_0x5aed4d[_0xffa6('0x3c')],function(_0x28d766){var _0x1ad5d2={};_0x1ad5d2[_0x28d766]={'$like':'%'+_0x55aa8e[_0xffa6('0x38')][_0xffa6('0x44')]+'%'};return _0x1ad5d2;})});}_0x5aed4d=_[_0xffa6('0x45')]({},_0x5aed4d,_0x55aa8e[_0xffa6('0x47')]);return _0x5b6acc[_0xffa6('0xa8')](_0x5aed4d);}})[_0xffa6('0x27')](function(_0x23aecb){if(_0x23aecb){_0x58b53f=_0x23aecb[_0xffa6('0x3e')];if(!_0x55aa8e[_0xffa6('0x38')][_0xffa6('0x3f')](_0xffa6('0x40'))){_0x5aed4d[_0xffa6('0x21')]=qs[_0xffa6('0x21')](_0x55aa8e[_0xffa6('0x38')][_0xffa6('0x21')]);_0x5aed4d[_0xffa6('0x1f')]=qs[_0xffa6('0x1f')](_0x55aa8e[_0xffa6('0x38')]['offset']);}return _0x5b6acc[_0xffa6('0xa8')](_0x5aed4d);}})['then'](function(_0x1c06f3){if(_0x1c06f3){return _0x1c06f3?{'count':_0x58b53f,'rows':_0x1c06f3}:null;}})[_0xffa6('0x27')](respondWithResult(_0x29721b,null))[_0xffa6('0x4b')](handleError(_0x29721b,null));};function handleQuery(_0x574ab1){logger['info'](_0x574ab1);return db[_0xffa6('0x93')][_0xffa6('0x38')](_0x574ab1)[_0xffa6('0xa3')](function(_0xd42a09){csv_results[_0xffa6('0x66')](_0xd42a09);})['catch'](function(_0x3b54b8){logger['error'](_0x3b54b8[_0xffa6('0x6b')]);});}
\ No newline at end of file
+var _0x741a=['defaultValue','addColumn','cf_%s','getCustomFields','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','User','info','eml-format','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./cmList.socket','register','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Lists','UserProfileResource','error','name','send','index','map','rawAttributes','fieldName','key','query','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','CmList','findAll','rows','catch','show','params','keys','intersection','includeAll','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','Disposition','getDispositions','findOne','removeDispositions','addContacts','CmContact','tags','isArray','push','omit','ids','success','dataValues','errors','message','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','raw','ContactItemType','OrderBy','alias','select','from','cm_contacts','c.ListId\x20=\x20?','c.deletedAt\x20is\x20null','distinct','c.cf_','customField_','field','cm_contact_has_items','ItemTypeId\x20=\x20?','additionalPhone_','description','toString','isEmpty','now','writeFileSync','format','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','transaction','addCustomFields','TEXT','type','text','Sequelize','INTEGER','switch','BOOLEAN'];(function(_0x147949,_0x1fa37f){var _0xeff9a1=function(_0x149137){while(--_0x149137){_0x147949['push'](_0x147949['shift']());}};_0xeff9a1(++_0x1fa37f);}(_0x741a,0xb1));var _0xa741=function(_0x594609,_0x30836c){_0x594609=_0x594609-0x0;var _0x1550ff=_0x741a[_0x594609];return _0x1550ff;};'use strict';var emlformat=require(_0xa741('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa741('0x1'));var rp=require(_0xa741('0x2'));var moment=require(_0xa741('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xa741('0x4'));var util=require('util');var path=require(_0xa741('0x5'));var sox=require(_0xa741('0x6'));var csv=require(_0xa741('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa741('0x8'));var _=require(_0xa741('0x9'));var squel=require('squel');var crypto=require(_0xa741('0xa'));var jsforce=require(_0xa741('0xb'));var deskjs=require(_0xa741('0xc'));var toCsv=require(_0xa741('0x7'));var querystring=require(_0xa741('0xd'));var Papa=require('papaparse');var Redis=require(_0xa741('0xe'));var authService=require(_0xa741('0xf'));var qs=require(_0xa741('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa741('0x11'));var config=require(_0xa741('0x12'));var licenseUtil=require(_0xa741('0x13'));var db=require(_0xa741('0x14'))['db'];var csv_results;config[_0xa741('0x15')]=_['defaults'](config[_0xa741('0x15')],{'host':_0xa741('0x16'),'port':0x18eb});var socket=require(_0xa741('0x17'))(new Redis(config[_0xa741('0x15')]));require(_0xa741('0x18'))[_0xa741('0x19')](socket);function respondWithStatusCode(_0x800c84,_0x144a64){_0x144a64=_0x144a64||0xcc;return function(_0x56c11e){if(_0x56c11e){return _0x800c84[_0xa741('0x1a')](_0x144a64);}return _0x800c84['status'](_0x144a64)[_0xa741('0x1b')]();};}function respondWithResult(_0x26bebe,_0x179ba0){_0x179ba0=_0x179ba0||0xc8;return function(_0x408316){if(_0x408316){return _0x26bebe[_0xa741('0x1c')](_0x179ba0)[_0xa741('0x1d')](_0x408316);}};}function respondWithFilteredResult(_0x4d1835,_0x2d97ec){return function(_0x457dde){if(_0x457dde){var _0x1d0930=typeof _0x2d97ec[_0xa741('0x1e')]===_0xa741('0x1f')&&typeof _0x2d97ec[_0xa741('0x20')]==='undefined';var _0x4acac3=_0x457dde[_0xa741('0x21')];var _0x45a1ce=_0x1d0930?0x0:_0x2d97ec[_0xa741('0x1e')];var _0x189946=_0x1d0930?_0x457dde[_0xa741('0x21')]:_0x2d97ec['offset']+_0x2d97ec[_0xa741('0x20')];var _0x169bf8;if(_0x189946>=_0x4acac3){_0x189946=_0x4acac3;_0x169bf8=0xc8;}else{_0x169bf8=0xce;}_0x4d1835[_0xa741('0x1c')](_0x169bf8);return _0x4d1835[_0xa741('0x22')](_0xa741('0x23'),_0x45a1ce+'-'+_0x189946+'/'+_0x4acac3)[_0xa741('0x1d')](_0x457dde);}return null;};}function patchUpdates(_0x4a0527){return function(_0x5ce014){try{jsonpatch[_0xa741('0x24')](_0x5ce014,_0x4a0527,!![]);}catch(_0x3d6442){return BPromise['reject'](_0x3d6442);}return _0x5ce014[_0xa741('0x25')]();};}function saveUpdates(_0x1abb38,_0x1ac84d){return function(_0x5c438e){if(_0x5c438e){return _0x5c438e[_0xa741('0x26')](_0x1abb38)[_0xa741('0x27')](function(_0x3489aa){return _0x3489aa;});}return null;};}function removeEntity(_0x5b2555,_0x1c1987){return function(_0x3fb8fa){if(_0x3fb8fa){return _0x3fb8fa[_0xa741('0x28')]()[_0xa741('0x27')](function(){var _0x274ef9=_0x3fb8fa[_0xa741('0x29')]({'plain':!![]});var _0x476447=_0xa741('0x2a');return db[_0xa741('0x2b')]['destroy']({'where':{'type':_0x476447,'resourceId':_0x274ef9['id']}})[_0xa741('0x27')](function(){return _0x3fb8fa;});})[_0xa741('0x27')](function(){_0x5b2555[_0xa741('0x1c')](0xcc)[_0xa741('0x1b')]();});}};}function handleEntityNotFound(_0x4fbd62,_0x4eb940){return function(_0x182244){if(!_0x182244){_0x4fbd62[_0xa741('0x1a')](0x194);}return _0x182244;};}function handleError(_0x300dd6,_0x146f16){_0x146f16=_0x146f16||0x1f4;return function(_0x15a4c9){logger[_0xa741('0x2c')](_0x15a4c9['stack']);if(_0x15a4c9[_0xa741('0x2d')]){delete _0x15a4c9[_0xa741('0x2d')];}_0x300dd6[_0xa741('0x1c')](_0x146f16)[_0xa741('0x2e')](_0x15a4c9);};}exports[_0xa741('0x2f')]=function(_0x2ff08d,_0x570c85){var _0x40badd={},_0x6bf062={},_0x1d8d24={'count':0x0,'rows':[]};var _0x4c0652=_[_0xa741('0x30')](db['CmList'][_0xa741('0x31')],function(_0x174eb0){return{'name':_0x174eb0[_0xa741('0x32')],'type':_0x174eb0['type'][_0xa741('0x33')]};});_0x6bf062['model']=_[_0xa741('0x30')](_0x4c0652,_0xa741('0x2d'));_0x6bf062[_0xa741('0x34')]=_['keys'](_0x2ff08d['query']);_0x6bf062['filters']=_['intersection'](_0x6bf062[_0xa741('0x35')],_0x6bf062[_0xa741('0x34')]);_0x40badd[_0xa741('0x36')]=_['intersection'](_0x6bf062['model'],qs[_0xa741('0x37')](_0x2ff08d[_0xa741('0x34')]['fields']));_0x40badd[_0xa741('0x36')]=_0x40badd['attributes'][_0xa741('0x38')]?_0x40badd['attributes']:_0x6bf062[_0xa741('0x35')];if(!_0x2ff08d[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x40badd[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x2ff08d[_0xa741('0x34')]['limit']);_0x40badd[_0xa741('0x1e')]=qs[_0xa741('0x1e')](_0x2ff08d[_0xa741('0x34')][_0xa741('0x1e')]);}_0x40badd[_0xa741('0x3b')]=qs[_0xa741('0x3c')](_0x2ff08d[_0xa741('0x34')]['sort']);_0x40badd[_0xa741('0x3d')]=qs['filters'](_[_0xa741('0x3e')](_0x2ff08d[_0xa741('0x34')],_0x6bf062[_0xa741('0x3f')]),_0x4c0652);if(_0x2ff08d[_0xa741('0x34')][_0xa741('0x40')]){_0x40badd[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x40badd[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x4c0652,function(_0x2674da){if(_0x2674da['type']!==_0xa741('0x42')){var _0x57cfa5={};_0x57cfa5[_0x2674da[_0xa741('0x2d')]]={'$like':'%'+_0x2ff08d[_0xa741('0x34')][_0xa741('0x40')]+'%'};return _0x57cfa5;}})});}_0x40badd=_['merge']({},_0x40badd,_0x2ff08d[_0xa741('0x43')]);var _0x486f1d={'where':_0x40badd[_0xa741('0x3d')]};return db['CmList'][_0xa741('0x21')](_0x486f1d)[_0xa741('0x27')](function(_0x2d74df){_0x1d8d24[_0xa741('0x21')]=_0x2d74df;if(_0x2ff08d[_0xa741('0x34')]['includeAll']){_0x40badd[_0xa741('0x44')]=[{'all':!![]}];}return db[_0xa741('0x45')][_0xa741('0x46')](_0x40badd);})[_0xa741('0x27')](function(_0x4dae2f){_0x1d8d24[_0xa741('0x47')]=_0x4dae2f;return _0x1d8d24;})[_0xa741('0x27')](respondWithFilteredResult(_0x570c85,_0x40badd))[_0xa741('0x48')](handleError(_0x570c85,null));};exports[_0xa741('0x49')]=function(_0x25f3fd,_0x52aa47){var _0x5a1f9b={'raw':![],'where':{'id':_0x25f3fd[_0xa741('0x4a')]['id']}},_0x418002={};_0x418002[_0xa741('0x35')]=_[_0xa741('0x4b')](db[_0xa741('0x45')][_0xa741('0x31')]);_0x418002[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x25f3fd[_0xa741('0x34')]);_0x418002[_0xa741('0x3f')]=_[_0xa741('0x4c')](_0x418002[_0xa741('0x35')],_0x418002['query']);_0x5a1f9b[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x418002['model'],qs[_0xa741('0x37')](_0x25f3fd[_0xa741('0x34')][_0xa741('0x37')]));_0x5a1f9b[_0xa741('0x36')]=_0x5a1f9b[_0xa741('0x36')][_0xa741('0x38')]?_0x5a1f9b[_0xa741('0x36')]:_0x418002[_0xa741('0x35')];if(_0x25f3fd[_0xa741('0x34')][_0xa741('0x4d')]){_0x5a1f9b[_0xa741('0x44')]=[{'all':!![]}];}_0x5a1f9b=_[_0xa741('0x41')]({},_0x5a1f9b,_0x25f3fd[_0xa741('0x43')]);return db['CmList']['find'](_0x5a1f9b)[_0xa741('0x27')](handleEntityNotFound(_0x52aa47,null))[_0xa741('0x27')](respondWithResult(_0x52aa47,null))[_0xa741('0x48')](handleError(_0x52aa47,null));};exports[_0xa741('0x4e')]=function(_0x4b95f0,_0x3560ed){return db[_0xa741('0x45')]['create'](_0x4b95f0[_0xa741('0x4f')],{})[_0xa741('0x27')](function(_0x296bb0){var _0xc7e2bf=_0x4b95f0[_0xa741('0x50')]['get']({'plain':!![]});if(!_0xc7e2bf)throw new Error(_0xa741('0x51'));if(_0xc7e2bf[_0xa741('0x52')]===_0xa741('0x50')){var _0xbe7307=_0x296bb0['get']({'plain':!![]});var _0xf231ce=_0xa741('0x2a');return db[_0xa741('0x53')][_0xa741('0x54')]({'where':{'name':_0xf231ce,'userProfileId':_0xc7e2bf[_0xa741('0x55')]},'raw':!![]})['then'](function(_0x2b5ce8){if(_0x2b5ce8&&_0x2b5ce8[_0xa741('0x56')]===0x0){return db[_0xa741('0x2b')][_0xa741('0x4e')]({'name':_0xbe7307[_0xa741('0x2d')],'resourceId':_0xbe7307['id'],'type':_0x2b5ce8['name'],'sectionId':_0x2b5ce8['id']},{})[_0xa741('0x27')](function(){return _0x296bb0;});}else{return _0x296bb0;}})[_0xa741('0x48')](function(_0x570942){logger[_0xa741('0x2c')](_0xa741('0x57'),_0x570942);throw _0x570942;});}return _0x296bb0;})[_0xa741('0x27')](respondWithResult(_0x3560ed,0xc9))[_0xa741('0x48')](handleError(_0x3560ed,null));};exports[_0xa741('0x26')]=function(_0x405e4c,_0x4559b6){if(_0x405e4c[_0xa741('0x4f')]['id']){delete _0x405e4c[_0xa741('0x4f')]['id'];}return db['CmList'][_0xa741('0x54')]({'where':{'id':_0x405e4c['params']['id']}})['then'](handleEntityNotFound(_0x4559b6,null))[_0xa741('0x27')](saveUpdates(_0x405e4c['body'],null))[_0xa741('0x27')](respondWithResult(_0x4559b6,null))['catch'](handleError(_0x4559b6,null));};exports[_0xa741('0x28')]=function(_0x3c9d1f,_0xeb27d7){return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x3c9d1f[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0xeb27d7,null))[_0xa741('0x27')](removeEntity(_0xeb27d7,null))[_0xa741('0x48')](handleError(_0xeb27d7,null));};exports[_0xa741('0x58')]=function(_0x80799c,_0x5c86d3){return db['CmList'][_0xa741('0x58')]()['then'](respondWithResult(_0x5c86d3,null))[_0xa741('0x48')](handleError(_0x5c86d3,null));};exports[_0xa741('0x59')]=function(_0x4ed18d,_0xe87c5b,_0x11b54d){if(_0x4ed18d[_0xa741('0x4f')]['id']){delete _0x4ed18d['body']['id'];}return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x4ed18d[_0xa741('0x4a')]['id']}})['then'](handleEntityNotFound(_0xe87c5b,null))[_0xa741('0x27')](function(_0x2f0be4){if(_0x2f0be4){_0x4ed18d[_0xa741('0x4f')][_0xa741('0x5a')]=_0x2f0be4['id'];return db[_0xa741('0x5b')][_0xa741('0x4e')](_0x4ed18d[_0xa741('0x4f')]);}})[_0xa741('0x27')](respondWithResult(_0xe87c5b,null))[_0xa741('0x48')](handleError(_0xe87c5b,null));};exports[_0xa741('0x5c')]=function(_0x51dcf5,_0x3c936b,_0x27e9d3){var _0x3f8da6={'raw':![],'where':{}};var _0x3e1680={};var _0x5aa5f3={'count':0x0,'rows':[]};return db['CmList'][_0xa741('0x5d')]({'where':{'id':_0x51dcf5[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x3c936b,null))[_0xa741('0x27')](function(_0x10c53d){if(_0x10c53d){_0x3e1680['model']=_['keys'](db['Disposition'][_0xa741('0x31')]);_0x3e1680['query']=_[_0xa741('0x4b')](_0x51dcf5[_0xa741('0x34')]);_0x3e1680[_0xa741('0x3f')]=_['intersection'](_0x3e1680[_0xa741('0x35')],_0x3e1680[_0xa741('0x34')]);_0x3f8da6[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x3e1680[_0xa741('0x35')],qs[_0xa741('0x37')](_0x51dcf5['query'][_0xa741('0x37')]));_0x3f8da6[_0xa741('0x36')]=_0x3f8da6['attributes'][_0xa741('0x38')]?_0x3f8da6['attributes']:_0x3e1680[_0xa741('0x35')];if(!_0x51dcf5[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x3f8da6['limit']=qs[_0xa741('0x20')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x20')]);_0x3f8da6['offset']=qs[_0xa741('0x1e')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x1e')]);}_0x3f8da6[_0xa741('0x3b')]=qs[_0xa741('0x3c')](_0x51dcf5[_0xa741('0x34')][_0xa741('0x3c')]);_0x3f8da6['where']=qs[_0xa741('0x3f')](_['pick'](_0x51dcf5['query'],_0x3e1680[_0xa741('0x3f')]));_0x3f8da6['where'][_0xa741('0x5a')]=_0x10c53d['id'];if(_0x51dcf5['query'][_0xa741('0x40')]){_0x3f8da6['where']=_['merge'](_0x3f8da6[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x3f8da6[_0xa741('0x36')],function(_0x2e0f5b){var _0x1a55db={};_0x1a55db[_0x2e0f5b]={'$like':'%'+_0x51dcf5[_0xa741('0x34')]['filter']+'%'};return _0x1a55db;})});}_0x3f8da6=_['merge']({},_0x3f8da6,_0x51dcf5[_0xa741('0x43')]);return db[_0xa741('0x5b')][_0xa741('0x21')]({'where':_0x3f8da6[_0xa741('0x3d')]})[_0xa741('0x27')](function(_0x138a4d){_0x5aa5f3[_0xa741('0x21')]=_0x138a4d;if(_0x51dcf5[_0xa741('0x34')]['includeAll']){_0x3f8da6['include']=[{'all':!![]}];}return db['Disposition'][_0xa741('0x46')](_0x3f8da6);})[_0xa741('0x27')](function(_0x11398d){_0x5aa5f3['rows']=_0x11398d;return _0x5aa5f3;});}})[_0xa741('0x27')](respondWithFilteredResult(_0x3c936b,_0x3f8da6))[_0xa741('0x48')](handleError(_0x3c936b,null));};exports['removeDispositions']=function(_0x183a27,_0x1e3e49,_0x23c03b){return db['CmList']['find']({'where':{'id':_0x183a27[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x1e3e49,null))[_0xa741('0x27')](function(_0xd722fe){if(_0xd722fe){return _0xd722fe[_0xa741('0x5e')](_0x183a27[_0xa741('0x34')]['ids']);}})[_0xa741('0x27')](respondWithStatusCode(_0x1e3e49,null))['catch'](handleError(_0x1e3e49,null));};exports[_0xa741('0x5f')]=function(_0x318c4b,_0x2b9d51,_0x3ca23b){return db['CmList'][_0xa741('0x54')]({'where':{'id':_0x318c4b[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2b9d51,null))[_0xa741('0x27')](function(_0x1df4c0){if(_0x1df4c0){var _0x28fa40=[];var _0x52e7f6={'success':[],'errors':[]};return db[_0xa741('0x60')][_0xa741('0x58')]()[_0xa741('0x27')](function(_0x6a5669){if(_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]&&_['isArray'](_0x318c4b[_0xa741('0x4f')]['tags'])){if(_0x318c4b[_0xa741('0x4f')]['tags'][_0xa741('0x38')]){_0x318c4b['body'][_0xa741('0x61')]=_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]['join'](';')+';';}else{_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]=null;}}else{_0x318c4b[_0xa741('0x4f')][_0xa741('0x61')]=null;}if(_0x318c4b[_0xa741('0x4f')]&&_[_0xa741('0x62')](_0x318c4b['body'])){for(var _0x28e0c5=0x0;_0x28e0c5<_0x318c4b[_0xa741('0x4f')][_0xa741('0x38')];_0x28e0c5+=0x1){_0x318c4b['body'][_0x28e0c5]['ListId']=_0x318c4b[_0xa741('0x4a')]['id'];_0x28fa40[_0xa741('0x63')](_0x318c4b[_0xa741('0x4f')][_0x28e0c5]);}return BPromise['each'](_0x28fa40,function(_0x5875c8){return db[_0xa741('0x60')]['create'](_[_0xa741('0x64')](_0x5875c8,[_0xa741('0x65'),'id'])||{},{'fields':_[_0xa741('0x4b')](_0x6a5669),'raw':!![]})[_0xa741('0x27')](function(_0x4d7cae){_0x52e7f6[_0xa741('0x66')][_0xa741('0x63')](_0x4d7cae[_0xa741('0x67')]);})[_0xa741('0x48')](function(_0x4b6d2f){_0x52e7f6[_0xa741('0x68')][_0xa741('0x63')]({'data':_0x5875c8,'error':_0x4b6d2f[_0xa741('0x69')]});});})[_0xa741('0x27')](function(_0x44b673){return _0x52e7f6;})[_0xa741('0x48')](function(_0x1e228a){return _0x1e228a;});}else{_0x2b9d51[_0xa741('0x1c')](0x190)['json']({'message':_0xa741('0x6a')});}});}})[_0xa741('0x27')](respondWithResult(_0x2b9d51,null))[_0xa741('0x48')](handleError(_0x2b9d51,null));};exports[_0xa741('0x6b')]=function(_0x474cc3,_0x5487cc,_0x1562b5){var _0x596e00;return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x474cc3[_0xa741('0x4a')]['id']},'include':[{'model':db[_0xa741('0x6c')],'as':_0xa741('0x6d')}]})[_0xa741('0x27')](handleEntityNotFound(_0x5487cc,null))[_0xa741('0x27')](function(_0x2c1a35){if(_0x2c1a35){_0x596e00=_0x2c1a35;return db[_0xa741('0x60')][_0xa741('0x31')];}})[_0xa741('0x27')](function(_0x31c963){if(_0x31c963){var _0x6a6cda={};var _0x38116f={};_0x38116f[_0xa741('0x35')]=_['concat'](_[_0xa741('0x4b')](_0x31c963),_['map'](_0x596e00[_0xa741('0x6d')],function(_0x1ce503){return util['format']('cf_%d',_0x1ce503['id']);}));_0x38116f[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x474cc3[_0xa741('0x34')]);_0x38116f[_0xa741('0x3f')]=_['intersection'](_0x38116f[_0xa741('0x35')],_0x38116f[_0xa741('0x34')]);_0x6a6cda[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x38116f[_0xa741('0x35')],qs[_0xa741('0x37')](_0x474cc3[_0xa741('0x34')]['fields']));_0x6a6cda[_0xa741('0x36')]=_0x6a6cda['attributes']['length']?_0x6a6cda[_0xa741('0x36')]:_0x38116f[_0xa741('0x35')];if(!_0x474cc3[_0xa741('0x34')][_0xa741('0x39')](_0xa741('0x3a'))){_0x6a6cda[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x474cc3[_0xa741('0x34')][_0xa741('0x20')]);_0x6a6cda[_0xa741('0x1e')]=qs[_0xa741('0x1e')](_0x474cc3[_0xa741('0x34')][_0xa741('0x1e')]);}_0x6a6cda['order']=qs[_0xa741('0x3c')](_0x474cc3['query'][_0xa741('0x3c')]);_0x6a6cda['where']=qs[_0xa741('0x3f')](_['pick'](_0x474cc3[_0xa741('0x34')],_0x38116f[_0xa741('0x3f')]));_0x6a6cda[_0xa741('0x6e')]=!![];if(_0x474cc3[_0xa741('0x34')][_0xa741('0x40')]){_0x6a6cda[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x6a6cda['where'],{'$or':_[_0xa741('0x30')](_0x6a6cda[_0xa741('0x36')],function(_0x337d90){var _0x3c9f0b={};_0x3c9f0b[_0x337d90]={'$like':'%'+_0x474cc3[_0xa741('0x34')][_0xa741('0x40')]+'%'};return _0x3c9f0b;})});}_0x6a6cda=_[_0xa741('0x41')]({},_0x6a6cda,_0x474cc3[_0xa741('0x43')]);return _0x596e00['getContacts'](_0x6a6cda);}})['then'](respondWithResult(_0x5487cc,null))[_0xa741('0x48')](handleError(_0x5487cc,null));};exports['getContactsCsv']=function(_0x2ec53e,_0x558d79,_0x5e3efe){var _0x2ac812;var _0x1f9611;var _0x14fb60;var _0x59d81b=_0x2ec53e[_0xa741('0x4a')]['id'];csv_results=[];return db[_0xa741('0x6f')][_0xa741('0x46')]({'attributes':['id',_0xa741('0x2d')],'raw':!![],'order':[_0xa741('0x70')]})[_0xa741('0x27')](function(_0x125130){_0x2ac812=_0x125130;var _0x232187=_[_0xa741('0x4b')](db[_0xa741('0x60')][_0xa741('0x31')]);return db[_0xa741('0x6c')]['findAll']({'raw':!![],'attributes':['id',_0xa741('0x71')]})['then'](function(_0x102202){_0x1f9611=_0x102202;var _0x53043a=squel[_0xa741('0x72')]()[_0xa741('0x37')](_0x232187)[_0xa741('0x73')](_0xa741('0x74'),'c')[_0xa741('0x3d')](_0xa741('0x75'),_0x59d81b)[_0xa741('0x3d')](_0xa741('0x76'))[_0xa741('0x77')]();for(var _0x494f7e=0x0;_0x494f7e<_0x1f9611[_0xa741('0x38')];_0x494f7e++){_0x53043a['field'](_0xa741('0x78')+_0x1f9611[_0x494f7e]['id'],_0xa741('0x79')+_0x1f9611[_0x494f7e][_0xa741('0x71')]);}for(var _0x494f7e=0x0;_0x494f7e<_0x2ac812[_0xa741('0x38')];_0x494f7e++){_0x53043a[_0xa741('0x7a')](squel[_0xa741('0x72')]()[_0xa741('0x7a')]('item')[_0xa741('0x73')](_0xa741('0x7b'))[_0xa741('0x3d')](_0xa741('0x7c'),_0x2ac812[_0x494f7e]['id'])[_0xa741('0x3d')]('CmContactId\x20=\x20c.id'),_0xa741('0x7d')+_0x2ac812[_0x494f7e][_0xa741('0x2d')]);_0x53043a[_0xa741('0x7a')](squel['select']()[_0xa741('0x7a')](_0xa741('0x7e'))['from'](_0xa741('0x7b'))[_0xa741('0x3d')]('ItemTypeId\x20=\x20?',_0x2ac812[_0x494f7e]['id'])[_0xa741('0x3d')]('CmContactId\x20=\x20c.id'),'description_additionalPhone_'+_0x2ac812[_0x494f7e][_0xa741('0x2d')]);}var _0x159174=[];_0x159174[_0xa741('0x63')](_0x53043a['toString']());BPromise['each'](_0x159174,handleQuery)[_0xa741('0x27')](function(_0x176898){handleQuery(_0x53043a[_0xa741('0x7f')]());var _0x377b5c=csv_results[0x0];if(!_[_0xa741('0x80')](_0x377b5c)){var _0x3bc4b7=toCsv(_0x377b5c);var _0x4ce289=Date[_0xa741('0x81')]();fs[_0xa741('0x82')](util[_0xa741('0x83')]('/tmp/list_%d_%s.csv',_0x59d81b,_0x4ce289),_0x3bc4b7);_0x558d79[_0xa741('0x84')](_0xa741('0x85'),_0xa741('0x86')+util['format'](_0xa741('0x87'),_0x59d81b,_0x4ce289));_0x558d79[_0xa741('0x84')](_0xa741('0x88'),_0xa741('0x89'));return _0x558d79[_0xa741('0x8a')](util[_0xa741('0x83')](_0xa741('0x8b'),_0x59d81b,_0x4ce289));}else{return _0x558d79[_0xa741('0x1a')](0xcc);}});});});};exports[_0xa741('0x8c')]=function(_0x16afec,_0x510f3b,_0xd39320){var _0x3c78aa;delete _0x16afec[_0xa741('0x4f')]['id'];return db[_0xa741('0x45')]['findOne']({'where':{'id':_0x16afec['params']['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x510f3b,null))[_0xa741('0x27')](function(_0x497287){if(_0x497287){return db[_0xa741('0x8d')][_0xa741('0x8e')](function(_0x2aa041){return db[_0xa741('0x6c')][_0xa741('0x4e')](_0x16afec[_0xa741('0x4f')],{'transaction':_0x2aa041})['then'](function(_0x30d7a4){_0x3c78aa=_0x30d7a4;return _0x497287[_0xa741('0x8f')](_0x30d7a4,{'transaction':_0x2aa041});})['then'](function(){var _0x129ca1={'type':db['Sequelize'][_0xa741('0x90')],'transaction':_0x2aa041};switch(_0x16afec[_0xa741('0x4f')][_0xa741('0x91')]){case _0xa741('0x92'):_0x129ca1['type']=db[_0xa741('0x93')][_0xa741('0x90')];break;case'number':_0x129ca1[_0xa741('0x91')]=db[_0xa741('0x93')][_0xa741('0x94')];break;case _0xa741('0x95'):_0x129ca1['type']=db[_0xa741('0x93')][_0xa741('0x96')];_0x129ca1[_0xa741('0x97')]=![];break;default:}return db[_0xa741('0x8d')]['queryInterface'][_0xa741('0x98')](_0xa741('0x74'),util[_0xa741('0x83')](_0xa741('0x99'),_0x3c78aa['id']),_0x129ca1);})[_0xa741('0x27')](function(){return _0x3c78aa;});});}})[_0xa741('0x27')](respondWithResult(_0x510f3b,null))[_0xa741('0x48')](handleError(_0x510f3b,null));};exports[_0xa741('0x9a')]=function(_0x4a369d,_0x5b650b,_0xdf2d90){var _0x51cfeb={};var _0x50146a={};var _0x263163;var _0x4106bc;return db[_0xa741('0x45')]['findOne']({'where':{'id':_0x4a369d[_0xa741('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5b650b,null))[_0xa741('0x27')](function(_0x2951fe){if(_0x2951fe){_0x263163=_0x2951fe;_0x50146a[_0xa741('0x35')]=_[_0xa741('0x4b')](db['CmCustomField']['rawAttributes']);_0x50146a[_0xa741('0x34')]=_['keys'](_0x4a369d[_0xa741('0x34')]);_0x50146a['filters']=_[_0xa741('0x4c')](_0x50146a['model'],_0x50146a[_0xa741('0x34')]);_0x51cfeb[_0xa741('0x36')]=_[_0xa741('0x4c')](_0x50146a[_0xa741('0x35')],qs[_0xa741('0x37')](_0x4a369d[_0xa741('0x34')]['fields']));_0x51cfeb[_0xa741('0x36')]=_0x51cfeb[_0xa741('0x36')]['length']?_0x51cfeb['attributes']:_0x50146a[_0xa741('0x35')];_0x51cfeb[_0xa741('0x3b')]=qs['sort'](_0x4a369d[_0xa741('0x34')][_0xa741('0x3c')]);_0x51cfeb[_0xa741('0x3d')]=qs[_0xa741('0x3f')](_[_0xa741('0x3e')](_0x4a369d[_0xa741('0x34')],_0x50146a['filters']));_0x51cfeb[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x51cfeb[_0xa741('0x3d')],{'$or':[{'ListId':_0x2951fe['id']},{'ListId':null}]});if(_0x4a369d[_0xa741('0x34')]['filter']){_0x51cfeb[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x51cfeb[_0xa741('0x3d')],{'$or':_[_0xa741('0x30')](_0x51cfeb[_0xa741('0x36')],function(_0x4cc866){var _0x5f3c3d={};_0x5f3c3d[_0x4cc866]={'$like':'%'+_0x4a369d['query'][_0xa741('0x40')]+'%'};return _0x5f3c3d;})});}_0x51cfeb=_[_0xa741('0x41')]({},_0x51cfeb,_0x4a369d['options']);return db[_0xa741('0x6c')]['findAndCountAll'](_0x51cfeb);}})[_0xa741('0x27')](respondWithResult(_0x5b650b,null))[_0xa741('0x48')](handleError(_0x5b650b,null));};exports['getGlobalCustomFields']=function(_0x1288a3,_0x58d531){return db['CmCustomField']['findAndCountAll']({'where':{'ListId':null}})['then'](handleEntityNotFound(_0x58d531,null))[_0xa741('0x27')](function(_0xf4a3e5){return _0xf4a3e5;})['then'](respondWithResult(_0x58d531,null))[_0xa741('0x48')](handleError(_0x58d531,null));};exports['addAgents']=function(_0x563850,_0x2035f8,_0x108482){return db[_0xa741('0x45')][_0xa741('0x54')]({'where':{'id':_0x563850['params']['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2035f8,null))[_0xa741('0x27')](function(_0xe40e0b){if(_0xe40e0b){return _0xe40e0b[_0xa741('0x9b')](_0x563850[_0xa741('0x4f')][_0xa741('0x65')],_['omit'](_0x563850[_0xa741('0x4f')],[_0xa741('0x65'),'id'])||{})[_0xa741('0x9c')](function(_0x10d3c0){for(var _0x3515ac=0x0;_0x3515ac<_0x563850[_0xa741('0x4f')][_0xa741('0x65')]['length'];_0x3515ac+=0x1){socket[_0xa741('0x9d')](_0xa741('0x9e'),{'UserId':Number(_0x563850[_0xa741('0x4f')]['ids'][_0x3515ac]),'CmListId':Number(_0x563850[_0xa741('0x4a')]['id'])});}return _0x10d3c0;});}})['then'](respondWithResult(_0x2035f8,null))[_0xa741('0x48')](handleError(_0x2035f8,null));};exports['removeAgents']=function(_0x2784e0,_0x466f00,_0x18e19a){return db[_0xa741('0x45')]['find']({'where':{'id':_0x2784e0[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x466f00,null))[_0xa741('0x27')](function(_0x2e80d5){if(_0x2e80d5){return _0x2e80d5[_0xa741('0x9f')](_0x2784e0[_0xa741('0x34')][_0xa741('0x65')])[_0xa741('0x27')](function(){if(_[_0xa741('0x62')](_0x2784e0[_0xa741('0x34')][_0xa741('0x65')])){for(var _0x31ac72=0x0;_0x31ac72<_0x2784e0[_0xa741('0x34')][_0xa741('0x65')]['length'];_0x31ac72+=0x1){socket[_0xa741('0x9d')](_0xa741('0xa0'),{'UserId':Number(_0x2784e0['query'][_0xa741('0x65')][_0x31ac72]),'CmListId':Number(_0x2784e0[_0xa741('0x4a')]['id'])});}}else{socket['emit'](_0xa741('0xa0'),{'UserId':Number(_0x2784e0[_0xa741('0x34')][_0xa741('0x65')]),'CmListId':Number(_0x2784e0[_0xa741('0x4a')]['id'])});}});}})[_0xa741('0x27')](respondWithStatusCode(_0x466f00,null))['catch'](handleError(_0x466f00,null));};exports[_0xa741('0xa1')]=function(_0x345759,_0x2915d9,_0x4a5ea0){var _0x34639c={};var _0x4751a3={};var _0x2c10ec;var _0x1f719d;return db['CmList'][_0xa741('0x5d')]({'where':{'id':_0x345759[_0xa741('0x4a')]['id']}})[_0xa741('0x27')](handleEntityNotFound(_0x2915d9,null))['then'](function(_0x1ca88f){if(_0x1ca88f){_0x2c10ec=_0x1ca88f;_0x4751a3[_0xa741('0x35')]=_[_0xa741('0x4b')](db[_0xa741('0xa2')][_0xa741('0x31')]);_0x4751a3[_0xa741('0x34')]=_[_0xa741('0x4b')](_0x345759[_0xa741('0x34')]);_0x4751a3[_0xa741('0x3f')]=_[_0xa741('0x4c')](_0x4751a3[_0xa741('0x35')],_0x4751a3[_0xa741('0x34')]);_0x34639c[_0xa741('0x36')]=_['intersection'](_0x4751a3[_0xa741('0x35')],qs[_0xa741('0x37')](_0x345759[_0xa741('0x34')][_0xa741('0x37')]));_0x34639c[_0xa741('0x36')]=_0x34639c[_0xa741('0x36')]['length']?_0x34639c[_0xa741('0x36')]:_0x4751a3[_0xa741('0x35')];_0x34639c['order']=qs[_0xa741('0x3c')](_0x345759['query']['sort']);_0x34639c[_0xa741('0x3d')]=qs[_0xa741('0x3f')](_[_0xa741('0x3e')](_0x345759[_0xa741('0x34')],_0x4751a3[_0xa741('0x3f')]));if(_0x345759[_0xa741('0x34')][_0xa741('0x40')]){_0x34639c[_0xa741('0x3d')]=_[_0xa741('0x41')](_0x34639c[_0xa741('0x3d')],{'$or':_['map'](_0x34639c[_0xa741('0x36')],function(_0x47f886){var _0x20fad2={};_0x20fad2[_0x47f886]={'$like':'%'+_0x345759[_0xa741('0x34')]['filter']+'%'};return _0x20fad2;})});}_0x34639c=_['merge']({},_0x34639c,_0x345759[_0xa741('0x43')]);return _0x2c10ec[_0xa741('0xa1')](_0x34639c);}})[_0xa741('0x27')](function(_0x54ce7d){if(_0x54ce7d){_0x1f719d=_0x54ce7d[_0xa741('0x38')];if(!_0x345759[_0xa741('0x34')]['hasOwnProperty'](_0xa741('0x3a'))){_0x34639c[_0xa741('0x20')]=qs[_0xa741('0x20')](_0x345759[_0xa741('0x34')]['limit']);_0x34639c[_0xa741('0x1e')]=qs['offset'](_0x345759[_0xa741('0x34')][_0xa741('0x1e')]);}return _0x2c10ec[_0xa741('0xa1')](_0x34639c);}})[_0xa741('0x27')](function(_0x1e062c){if(_0x1e062c){return _0x1e062c?{'count':_0x1f719d,'rows':_0x1e062c}:null;}})[_0xa741('0x27')](respondWithResult(_0x2915d9,null))[_0xa741('0x48')](handleError(_0x2915d9,null));};function handleQuery(_0x2723bd){logger[_0xa741('0xa3')](_0x2723bd);return db['sequelize'][_0xa741('0x34')](_0x2723bd)['spread'](function(_0x463a61){csv_results[_0xa741('0x63')](_0x463a61);})[_0xa741('0x48')](function(_0x51215f){logger['error'](_0x51215f[_0xa741('0x69')]);});}
\ No newline at end of file
index 5d05d5a..587d46c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ca=['events','../../mysqldb','update','remove','emit','hasOwnProperty','hook'];(function(_0x79b649,_0x2115b3){var _0x1af9b1=function(_0x153c9f){while(--_0x153c9f){_0x79b649['push'](_0x79b649['shift']());}};_0x1af9b1(++_0x2115b3);}(_0x55ca,0x126));var _0xa55c=function(_0x13ae3b,_0x4ddd7c){_0x13ae3b=_0x13ae3b-0x0;var _0x145764=_0x55ca[_0x13ae3b];return _0x145764;};'use strict';var EventEmitter=require(_0xa55c('0x0'));var CmList=require(_0xa55c('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xa55c('0x2'),'afterDestroy':_0xa55c('0x3')};function emitEvent(_0x5dc716){return function(_0x3b478a,_0x2db02a,_0xcb02e3){CmListEvents[_0xa55c('0x4')](_0x5dc716+':'+_0x3b478a['id'],_0x3b478a);CmListEvents[_0xa55c('0x4')](_0x5dc716,_0x3b478a);_0xcb02e3(null);};}for(var e in events){if(events[_0xa55c('0x5')](e)){var event=events[e];CmList[_0xa55c('0x6')](e,emitEvent(event));}}module['exports']=CmListEvents;
\ No newline at end of file
+var _0xe14b=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','emit'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xe14b,0x93));var _0xbe14=function(_0x4e905a,_0x54b7b4){_0x4e905a=_0x4e905a-0x0;var _0x617c31=_0xe14b[_0x4e905a];return _0x617c31;};'use strict';var EventEmitter=require(_0xbe14('0x0'));var CmList=require(_0xbe14('0x1'))['db']['CmList'];var CmListEvents=new EventEmitter();CmListEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xbe14('0x2'),'afterUpdate':_0xbe14('0x3'),'afterDestroy':'remove'};function emitEvent(_0x7d3665){return function(_0x5ce8fb,_0x496c04,_0x1833e3){CmListEvents[_0xbe14('0x4')](_0x7d3665+':'+_0x5ce8fb['id'],_0x5ce8fb);CmListEvents[_0xbe14('0x4')](_0x7d3665,_0x5ce8fb);_0x1833e3(null);};}for(var e in events){if(events[_0xbe14('0x5')](e)){var event=events[e];CmList[_0xbe14('0x6')](e,emitEvent(event));}}module[_0xbe14('0x7')]=CmListEvents;
\ No newline at end of file
index d36cf98..e3e0997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f7a=['CmList','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmList.attributes','exports','define'];(function(_0x22cc16,_0x1f4fa2){var _0x399b70=function(_0x34d464){while(--_0x34d464){_0x22cc16['push'](_0x22cc16['shift']());}};_0x399b70(++_0x1f4fa2);}(_0x6f7a,0x1ae));var _0xa6f7=function(_0x2a655d,_0x56a557){_0x2a655d=_0x2a655d-0x0;var _0x24d4dd=_0x6f7a[_0x2a655d];return _0x24d4dd;};'use strict';var _=require(_0xa6f7('0x0'));var util=require(_0xa6f7('0x1'));var logger=require(_0xa6f7('0x2'))(_0xa6f7('0x3'));var moment=require('moment');var BPromise=require(_0xa6f7('0x4'));var rp=require(_0xa6f7('0x5'));var fs=require('fs');var path=require(_0xa6f7('0x6'));var rimraf=require(_0xa6f7('0x7'));var config=require(_0xa6f7('0x8'));var attributes=require(_0xa6f7('0x9'));module[_0xa6f7('0xa')]=function(_0x20cccd,_0x1fdd5f){return _0x20cccd[_0xa6f7('0xb')](_0xa6f7('0xc'),attributes,{'tableName':'cm_lists','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x750a=['path','rimraf','../../config/environment','./cmList.attributes','exports','define','CmList','cm_lists','util','moment','bluebird','request-promise'];(function(_0x2b0f7e,_0x4a1843){var _0x38137e=function(_0x50af0c){while(--_0x50af0c){_0x2b0f7e['push'](_0x2b0f7e['shift']());}};_0x38137e(++_0x4a1843);}(_0x750a,0x140));var _0xa750=function(_0x35a6da,_0x2e43df){_0x35a6da=_0x35a6da-0x0;var _0x5119e6=_0x750a[_0x35a6da];return _0x5119e6;};'use strict';var _=require('lodash');var util=require(_0xa750('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xa750('0x1'));var BPromise=require(_0xa750('0x2'));var rp=require(_0xa750('0x3'));var fs=require('fs');var path=require(_0xa750('0x4'));var rimraf=require(_0xa750('0x5'));var config=require(_0xa750('0x6'));var attributes=require(_0xa750('0x7'));module[_0xa750('0x8')]=function(_0x10b4d9,_0x2497df){return _0x10b4d9[_0xa750('0x9')](_0xa750('0xa'),attributes,{'tableName':_0xa750('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e964058..0d0f59a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf71d=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','localhost','socket.io-emitter','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','moment','bluebird'];(function(_0x3f66a9,_0x235b1c){var _0x328e76=function(_0x5ef037){while(--_0x5ef037){_0x3f66a9['push'](_0x3f66a9['shift']());}};_0x328e76(++_0x235b1c);}(_0xf71d,0x195));var _0xdf71=function(_0x209ec9,_0x30378c){_0x209ec9=_0x209ec9-0x0;var _0x129b1b=_0xf71d[_0x209ec9];return _0x129b1b;};'use strict';var _=require('lodash');var util=require(_0xdf71('0x0'));var moment=require(_0xdf71('0x1'));var BPromise=require(_0xdf71('0x2'));var rs=require(_0xdf71('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xdf71('0x4'))['db'];var utils=require(_0xdf71('0x5'));var logger=require(_0xdf71('0x6'))('rpc');var config=require(_0xdf71('0x7'));var jayson=require(_0xdf71('0x8'));var client=jayson[_0xdf71('0x9')][_0xdf71('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':_0xdf71('0xb'),'port':0x18eb});var socket=require(_0xdf71('0xc'))(new Redis(config['redis']));require('./cmList.socket')[_0xdf71('0xd')](socket);function respondWithRpcPromise(_0x44b9c7,_0x1c6a63,_0x26c85e){return new BPromise(function(_0x425890,_0x11339e){return client[_0xdf71('0xe')](_0x44b9c7,_0x26c85e)[_0xdf71('0xf')](function(_0x5538c8){logger[_0xdf71('0x10')](_0xdf71('0x11'),_0x1c6a63,_0xdf71('0x12'));logger['debug'](_0xdf71('0x13'),_0x1c6a63,'request\x20sent',JSON['stringify'](_0x5538c8));if(_0x5538c8[_0xdf71('0x14')]){if(_0x5538c8['error']['code']===0x1f4){logger[_0xdf71('0x14')](_0xdf71('0x11'),_0x1c6a63,_0x5538c8[_0xdf71('0x14')][_0xdf71('0x15')]);return _0x11339e(_0x5538c8[_0xdf71('0x14')][_0xdf71('0x15')]);}logger['error'](_0xdf71('0x11'),_0x1c6a63,_0x5538c8['error']['message']);return _0x425890(_0x5538c8[_0xdf71('0x14')][_0xdf71('0x15')]);}else{logger[_0xdf71('0x10')](_0xdf71('0x11'),_0x1c6a63,_0xdf71('0x12'));_0x425890(_0x5538c8[_0xdf71('0x16')][_0xdf71('0x15')]);}})[_0xdf71('0x17')](function(_0x37d3b4){logger[_0xdf71('0x14')](_0xdf71('0x11'),_0x1c6a63,_0x37d3b4);_0x11339e(_0x37d3b4);});});}
\ No newline at end of file
+var _0x1d16=['info','debug','stringify','error','code','CmList,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./cmList.socket','register','request','then'];(function(_0x59a0e4,_0x492f2c){var _0x64e2f9=function(_0x42df1e){while(--_0x42df1e){_0x59a0e4['push'](_0x59a0e4['shift']());}};_0x64e2f9(++_0x492f2c);}(_0x1d16,0x128));var _0x61d1=function(_0x20a005,_0x3267c4){_0x20a005=_0x20a005-0x0;var _0x318723=_0x1d16[_0x20a005];return _0x318723;};'use strict';var _=require(_0x61d1('0x0'));var util=require(_0x61d1('0x1'));var moment=require('moment');var BPromise=require(_0x61d1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x61d1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x61d1('0x4'));var logger=require('../../config/logger')(_0x61d1('0x5'));var config=require(_0x61d1('0x6'));var jayson=require(_0x61d1('0x7'));var client=jayson[_0x61d1('0x8')][_0x61d1('0x9')]({'port':0x232a});config[_0x61d1('0xa')]=_[_0x61d1('0xb')](config[_0x61d1('0xa')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x61d1('0xc'))[_0x61d1('0xd')](socket);function respondWithRpcPromise(_0x4bbce0,_0x220cbd,_0x9678e8){return new BPromise(function(_0x185fb7,_0x33f62e){return client[_0x61d1('0xe')](_0x4bbce0,_0x9678e8)[_0x61d1('0xf')](function(_0xb22f7b){logger[_0x61d1('0x10')]('CmList,\x20%s,\x20%s',_0x220cbd,'request\x20sent');logger[_0x61d1('0x11')]('CmList,\x20%s,\x20%s,\x20%s',_0x220cbd,'request\x20sent',JSON[_0x61d1('0x12')](_0xb22f7b));if(_0xb22f7b['error']){if(_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x14')]===0x1f4){logger[_0x61d1('0x13')](_0x61d1('0x15'),_0x220cbd,_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);return _0x33f62e(_0xb22f7b[_0x61d1('0x13')]['message']);}logger[_0x61d1('0x13')](_0x61d1('0x15'),_0x220cbd,_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);return _0x185fb7(_0xb22f7b[_0x61d1('0x13')][_0x61d1('0x16')]);}else{logger[_0x61d1('0x10')](_0x61d1('0x15'),_0x220cbd,_0x61d1('0x17'));_0x185fb7(_0xb22f7b[_0x61d1('0x18')][_0x61d1('0x16')]);}})[_0x61d1('0x19')](function(_0x231a46){logger[_0x61d1('0x13')]('CmList,\x20%s,\x20%s',_0x220cbd,_0x231a46);_0x33f62e(_0x231a46);});});}
\ No newline at end of file
index 8fc8cd0..a93b519 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1316=['length','cmList:','./cmList.events','save','remove','removeListener'];(function(_0x50f392,_0x1d8441){var _0x5926f2=function(_0x17df32){while(--_0x17df32){_0x50f392['push'](_0x50f392['shift']());}};_0x5926f2(++_0x1d8441);}(_0x1316,0x164));var _0x6131=function(_0x38a39e,_0x316c2e){_0x38a39e=_0x38a39e-0x0;var _0x1f89c0=_0x1316[_0x38a39e];return _0x1f89c0;};'use strict';var CmListEvents=require(_0x6131('0x0'));var events=[_0x6131('0x1'),_0x6131('0x2'),'update'];function createListener(_0x364c01,_0x17c436){return function(_0x1cb7ed){_0x17c436['emit'](_0x364c01,_0x1cb7ed);};}function removeListener(_0x30d2be,_0x5da51f){return function(){CmListEvents[_0x6131('0x3')](_0x30d2be,_0x5da51f);};}exports['register']=function(_0x10de2b){for(var _0x52fc69=0x0,_0x221b8d=events[_0x6131('0x4')];_0x52fc69<_0x221b8d;_0x52fc69++){var _0x140664=events[_0x52fc69];var _0x46e1c5=createListener(_0x6131('0x5')+_0x140664,_0x10de2b);CmListEvents['on'](_0x140664,_0x46e1c5);}};
\ No newline at end of file
+var _0xf113=['emit','removeListener','register','cmList:','save','remove','update'];(function(_0x188a73,_0x4e7590){var _0x572eef=function(_0x2cf0ff){while(--_0x2cf0ff){_0x188a73['push'](_0x188a73['shift']());}};_0x572eef(++_0x4e7590);}(_0xf113,0x74));var _0x3f11=function(_0x41ccec,_0x273430){_0x41ccec=_0x41ccec-0x0;var _0x5c3eb2=_0xf113[_0x41ccec];return _0x5c3eb2;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x3f11('0x0'),_0x3f11('0x1'),_0x3f11('0x2')];function createListener(_0x16bd05,_0x3d8086){return function(_0x52e72d){_0x3d8086[_0x3f11('0x3')](_0x16bd05,_0x52e72d);};}function removeListener(_0x3a0464,_0x257912){return function(){CmListEvents[_0x3f11('0x4')](_0x3a0464,_0x257912);};}exports[_0x3f11('0x5')]=function(_0x372296){for(var _0x1010d6=0x0,_0x5b2df4=events['length'];_0x1010d6<_0x5b2df4;_0x1010d6++){var _0x182f52=events[_0x1010d6];var _0x1c90c8=createListener(_0x3f11('0x6')+_0x182f52,_0x372296);CmListEvents['on'](_0x182f52,_0x1c90c8);}};
\ No newline at end of file
index 1caa36d..55c6df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2180=['getDispositions','/:id/contacts','getContacts','/:id/fields','getCustomFields','/:id/users','getAgents','post','create','addContacts','addCustomField','destroy','removeDispositions','removeAgents','exports','util','express','Router','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/global_fields','/:id','show','/:id/dispositions'];(function(_0x31feb1,_0xeb2734){var _0x58232c=function(_0x3b039b){while(--_0x3b039b){_0x31feb1['push'](_0x31feb1['shift']());}};_0x58232c(++_0xeb2734);}(_0x2180,0xa0));var _0x0218=function(_0x4c80d7,_0x2bef29){_0x4c80d7=_0x4c80d7-0x0;var _0x3c5095=_0x2180[_0x4c80d7];return _0x3c5095;};'use strict';var multer=require('multer');var util=require(_0x0218('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0218('0x1'));var router=express[_0x0218('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x0218('0x3'));var config=require(_0x0218('0x4'));var controller=require(_0x0218('0x5'));router[_0x0218('0x6')]('/',auth[_0x0218('0x7')](),controller[_0x0218('0x8')]);router['get']('/describe',auth[_0x0218('0x7')](),controller[_0x0218('0x9')]);router[_0x0218('0x6')](_0x0218('0xa'),auth[_0x0218('0x7')](),controller['getGlobalCustomFields']);router['get'](_0x0218('0xb'),auth[_0x0218('0x7')](),controller[_0x0218('0xc')]);router['get'](_0x0218('0xd'),auth[_0x0218('0x7')](),controller[_0x0218('0xe')]);router[_0x0218('0x6')](_0x0218('0xf'),auth[_0x0218('0x7')](),controller[_0x0218('0x10')]);router[_0x0218('0x6')]('/:id/contacts/csv',auth[_0x0218('0x7')](),controller['getContactsCsv']);router[_0x0218('0x6')](_0x0218('0x11'),auth['isAuthenticated'](),controller[_0x0218('0x12')]);router[_0x0218('0x6')](_0x0218('0x13'),auth['isAuthenticated'](),controller[_0x0218('0x14')]);router[_0x0218('0x15')]('/',auth[_0x0218('0x7')](),controller[_0x0218('0x16')]);router[_0x0218('0x15')](_0x0218('0xd'),auth[_0x0218('0x7')](),controller['addDisposition']);router[_0x0218('0x15')]('/:id/contacts',auth[_0x0218('0x7')](),controller[_0x0218('0x17')]);router[_0x0218('0x15')](_0x0218('0x11'),auth[_0x0218('0x7')](),controller[_0x0218('0x18')]);router['post'](_0x0218('0x13'),auth[_0x0218('0x7')](),controller['addAgents']);router['put'](_0x0218('0xb'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0218('0x7')](),controller[_0x0218('0x19')]);router['delete'](_0x0218('0xd'),auth['isAuthenticated'](),controller[_0x0218('0x1a')]);router['delete']('/:id/users',auth['isAuthenticated'](),controller[_0x0218('0x1b')]);module[_0x0218('0x1c')]=router;
\ No newline at end of file
+var _0xbdb8=['addContacts','/:id/fields','addCustomField','addAgents','put','update','destroy','removeDispositions','delete','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','/:id/contacts/csv','getContactsCsv','getCustomFields','/:id/users','post'];(function(_0x38ce4c,_0xfdbe8c){var _0x5d4544=function(_0x503537){while(--_0x503537){_0x38ce4c['push'](_0x38ce4c['shift']());}};_0x5d4544(++_0xfdbe8c);}(_0xbdb8,0x89));var _0x8bdb=function(_0x22241f,_0x48bd97){_0x22241f=_0x22241f-0x0;var _0x16c966=_0xbdb8[_0x22241f];return _0x16c966;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x8bdb('0x0'));var timeout=require(_0x8bdb('0x1'));var express=require('express');var router=express[_0x8bdb('0x2')]();var fs_extra=require(_0x8bdb('0x3'));var auth=require(_0x8bdb('0x4'));var interaction=require(_0x8bdb('0x5'));var config=require(_0x8bdb('0x6'));var controller=require(_0x8bdb('0x7'));router[_0x8bdb('0x8')]('/',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xa')]);router[_0x8bdb('0x8')](_0x8bdb('0xb'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xc')]);router[_0x8bdb('0x8')]('/global_fields',auth[_0x8bdb('0x9')](),controller['getGlobalCustomFields']);router['get'](_0x8bdb('0xd'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0xe')]);router[_0x8bdb('0x8')](_0x8bdb('0xf'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x10')]);router[_0x8bdb('0x8')](_0x8bdb('0x11'),auth['isAuthenticated'](),controller['getContacts']);router[_0x8bdb('0x8')](_0x8bdb('0x12'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x13')]);router['get']('/:id/fields',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x14')]);router[_0x8bdb('0x8')](_0x8bdb('0x15'),auth['isAuthenticated'](),controller['getAgents']);router['post']('/',auth[_0x8bdb('0x9')](),controller['create']);router[_0x8bdb('0x16')](_0x8bdb('0xf'),auth[_0x8bdb('0x9')](),controller['addDisposition']);router[_0x8bdb('0x16')]('/:id/contacts',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x17')]);router['post'](_0x8bdb('0x18'),auth['isAuthenticated'](),controller[_0x8bdb('0x19')]);router[_0x8bdb('0x16')]('/:id/users',auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x1a')]);router[_0x8bdb('0x1b')]('/:id',auth['isAuthenticated'](),controller[_0x8bdb('0x1c')]);router['delete'](_0x8bdb('0xd'),auth[_0x8bdb('0x9')](),controller[_0x8bdb('0x1d')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x8bdb('0x1e')]);router[_0x8bdb('0x1f')](_0x8bdb('0x15'),auth[_0x8bdb('0x9')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index 12ff03f..99116c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85ee=['VIRTUAL','getDataValue','STRING','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x85ee,0x7b));var _0xe85e=function(_0x487b80,_0x46177a){_0x487b80=_0x487b80-0x0;var _0x4c3ebc=_0x85ee[_0x487b80];return _0x4c3ebc;};'use strict';var Sequelize=require('sequelize');module[_0xe85e('0x0')]={'name':{'type':Sequelize[_0xe85e('0x1')],'get':function(_0x268d70){return this[_0xe85e('0x2')]('field');}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0xe85e('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0x1a05=['STRING','sequelize','VIRTUAL','getDataValue','field'];(function(_0x54d4a8,_0x585a59){var _0x3b321b=function(_0x245c6a){while(--_0x245c6a){_0x54d4a8['push'](_0x54d4a8['shift']());}};_0x3b321b(++_0x585a59);}(_0x1a05,0x12d));var _0x51a0=function(_0x4fbcf3,_0x508a70){_0x4fbcf3=_0x4fbcf3-0x0;var _0x4e087e=_0x1a05[_0x4fbcf3];return _0x4e087e;};'use strict';var Sequelize=require(_0x51a0('0x0'));module['exports']={'name':{'type':Sequelize[_0x51a0('0x1')],'get':function(_0xe5d648){return this[_0x51a0('0x2')](_0x51a0('0x3'));}},'field':{'type':Sequelize[_0x51a0('0x4')],'allowNull':![]},'operator':{'type':Sequelize[_0x51a0('0x4')],'allowNull':![]},'value':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 72ecd59..d0e83dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','then','destroy','error','name','send','update','body','Condition','find','catch','params'];(function(_0x1e066f,_0x46d87e){var _0x54a6be=function(_0x123eb5){while(--_0x123eb5){_0x1e066f['push'](_0x1e066f['shift']());}};_0x54a6be(++_0x46d87e);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var emlformat=require(_0x7995('0x0'));var rimraf=require(_0x7995('0x1'));var zipdir=require(_0x7995('0x2'));var jsonpatch=require(_0x7995('0x3'));var rp=require('request-promise');var moment=require(_0x7995('0x4'));var BPromise=require(_0x7995('0x5'));var Mustache=require(_0x7995('0x6'));var util=require(_0x7995('0x7'));var path=require('path');var sox=require(_0x7995('0x8'));var csv=require(_0x7995('0x9'));var ejs=require(_0x7995('0xa'));var fs=require('fs');var fs_extra=require(_0x7995('0xb'));var _=require(_0x7995('0xc'));var squel=require(_0x7995('0xd'));var crypto=require('crypto');var jsforce=require(_0x7995('0xe'));var deskjs=require(_0x7995('0xf'));var toCsv=require('to-csv');var querystring=require(_0x7995('0x10'));var Papa=require(_0x7995('0x11'));var Redis=require(_0x7995('0x12'));var authService=require(_0x7995('0x13'));var qs=require(_0x7995('0x14'));var as=require(_0x7995('0x15'));var hardwareService=require(_0x7995('0x16'));var logger=require('../../config/logger')(_0x7995('0x17'));var utils=require(_0x7995('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x7995('0x19'));var db=require(_0x7995('0x1a'))['db'];function respondWithStatusCode(_0x19a27e,_0x385f00){_0x385f00=_0x385f00||0xcc;return function(_0x281576){if(_0x281576){return _0x19a27e[_0x7995('0x1b')](_0x385f00);}return _0x19a27e[_0x7995('0x1c')](_0x385f00)['end']();};}function respondWithResult(_0x58f5ad,_0x2b4e94){_0x2b4e94=_0x2b4e94||0xc8;return function(_0x2233dd){if(_0x2233dd){return _0x58f5ad[_0x7995('0x1c')](_0x2b4e94)[_0x7995('0x1d')](_0x2233dd);}};}function respondWithFilteredResult(_0x3f1d3e,_0x1a5310){return function(_0x2202ce){if(_0x2202ce){var _0x41cbf0=typeof _0x1a5310['offset']===_0x7995('0x1e')&&typeof _0x1a5310['limit']===_0x7995('0x1e');var _0x37f297=_0x2202ce[_0x7995('0x1f')];var _0x291317=_0x41cbf0?0x0:_0x1a5310[_0x7995('0x20')];var _0x37a7d4=_0x41cbf0?_0x2202ce['count']:_0x1a5310['offset']+_0x1a5310[_0x7995('0x21')];var _0x5e6f90;if(_0x37a7d4>=_0x37f297){_0x37a7d4=_0x37f297;_0x5e6f90=0xc8;}else{_0x5e6f90=0xce;}_0x3f1d3e['status'](_0x5e6f90);return _0x3f1d3e[_0x7995('0x22')](_0x7995('0x23'),_0x291317+'-'+_0x37a7d4+'/'+_0x37f297)['json'](_0x2202ce);}return null;};}function patchUpdates(_0x3a9b54){return function(_0x51f276){try{jsonpatch['apply'](_0x51f276,_0x3a9b54,!![]);}catch(_0x3e4c54){return BPromise[_0x7995('0x24')](_0x3e4c54);}return _0x51f276[_0x7995('0x25')]();};}function saveUpdates(_0x1a8568,_0x460924){return function(_0x1c278a){if(_0x1c278a){return _0x1c278a['update'](_0x1a8568)[_0x7995('0x26')](function(_0x46ee4b){return _0x46ee4b;});}return null;};}function removeEntity(_0x204507,_0x285437){return function(_0x563799){if(_0x563799){return _0x563799[_0x7995('0x27')]()[_0x7995('0x26')](function(){_0x204507[_0x7995('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x39df42,_0x34e70c){return function(_0x401dc3){if(!_0x401dc3){_0x39df42[_0x7995('0x1b')](0x194);}return _0x401dc3;};}function handleError(_0x3a3fcf,_0x2a307e){_0x2a307e=_0x2a307e||0x1f4;return function(_0x56691a){logger[_0x7995('0x28')](_0x56691a['stack']);if(_0x56691a[_0x7995('0x29')]){delete _0x56691a[_0x7995('0x29')];}_0x3a3fcf[_0x7995('0x1c')](_0x2a307e)[_0x7995('0x2a')](_0x56691a);};}exports[_0x7995('0x2b')]=function(_0x4b6f99,_0x9b2a15){if(_0x4b6f99['body']['id']){delete _0x4b6f99[_0x7995('0x2c')]['id'];}return db[_0x7995('0x2d')][_0x7995('0x2e')]({'where':{'id':_0x4b6f99['params']['id']}})['then'](handleEntityNotFound(_0x9b2a15,null))['then'](saveUpdates(_0x4b6f99[_0x7995('0x2c')],null))[_0x7995('0x26')](respondWithResult(_0x9b2a15,null))[_0x7995('0x2f')](handleError(_0x9b2a15,null));};exports[_0x7995('0x27')]=function(_0x2e3493,_0x1ca460){return db['Condition']['find']({'where':{'id':_0x2e3493[_0x7995('0x30')]['id']}})['then'](handleEntityNotFound(_0x1ca460,null))[_0x7995('0x26')](removeEntity(_0x1ca460,null))[_0x7995('0x2f')](handleError(_0x1ca460,null));};
\ No newline at end of file
+var _0x7a54=['sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','body','Condition','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0xb0b72f,_0xdb1686){var _0x184107=function(_0x413273){while(--_0x413273){_0xb0b72f['push'](_0xb0b72f['shift']());}};_0x184107(++_0xdb1686);}(_0x7a54,0x106));var _0x47a5=function(_0x248d5e,_0x40a586){_0x248d5e=_0x248d5e-0x0;var _0x40615f=_0x7a54[_0x248d5e];return _0x40615f;};'use strict';var emlformat=require(_0x47a5('0x0'));var rimraf=require(_0x47a5('0x1'));var zipdir=require(_0x47a5('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x47a5('0x3'));var moment=require(_0x47a5('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x47a5('0x5'));var util=require(_0x47a5('0x6'));var path=require(_0x47a5('0x7'));var sox=require(_0x47a5('0x8'));var csv=require(_0x47a5('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x47a5('0xa'));var _=require('lodash');var squel=require(_0x47a5('0xb'));var crypto=require(_0x47a5('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x47a5('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x47a5('0xe'));var authService=require(_0x47a5('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x47a5('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x47a5('0x11'));var utils=require(_0x47a5('0x12'));var config=require(_0x47a5('0x13'));var licenseUtil=require(_0x47a5('0x14'));var db=require(_0x47a5('0x15'))['db'];function respondWithStatusCode(_0xd308b8,_0x1eae59){_0x1eae59=_0x1eae59||0xcc;return function(_0x5beb89){if(_0x5beb89){return _0xd308b8[_0x47a5('0x16')](_0x1eae59);}return _0xd308b8[_0x47a5('0x17')](_0x1eae59)[_0x47a5('0x18')]();};}function respondWithResult(_0x711793,_0x139f25){_0x139f25=_0x139f25||0xc8;return function(_0x620ee9){if(_0x620ee9){return _0x711793[_0x47a5('0x17')](_0x139f25)[_0x47a5('0x19')](_0x620ee9);}};}function respondWithFilteredResult(_0x4e99a8,_0x362359){return function(_0x11faf5){if(_0x11faf5){var _0x3b001e=typeof _0x362359[_0x47a5('0x1a')]===_0x47a5('0x1b')&&typeof _0x362359['limit']==='undefined';var _0x138bc0=_0x11faf5['count'];var _0x5247fd=_0x3b001e?0x0:_0x362359[_0x47a5('0x1a')];var _0xaf70a6=_0x3b001e?_0x11faf5[_0x47a5('0x1c')]:_0x362359[_0x47a5('0x1a')]+_0x362359[_0x47a5('0x1d')];var _0x12b98e;if(_0xaf70a6>=_0x138bc0){_0xaf70a6=_0x138bc0;_0x12b98e=0xc8;}else{_0x12b98e=0xce;}_0x4e99a8[_0x47a5('0x17')](_0x12b98e);return _0x4e99a8[_0x47a5('0x1e')](_0x47a5('0x1f'),_0x5247fd+'-'+_0xaf70a6+'/'+_0x138bc0)['json'](_0x11faf5);}return null;};}function patchUpdates(_0x1570bc){return function(_0xf160ba){try{jsonpatch['apply'](_0xf160ba,_0x1570bc,!![]);}catch(_0x2b0360){return BPromise[_0x47a5('0x20')](_0x2b0360);}return _0xf160ba[_0x47a5('0x21')]();};}function saveUpdates(_0x4c5910,_0xb8ae6c){return function(_0x2f142b){if(_0x2f142b){return _0x2f142b[_0x47a5('0x22')](_0x4c5910)[_0x47a5('0x23')](function(_0x5ef1b1){return _0x5ef1b1;});}return null;};}function removeEntity(_0xe2dea9,_0x385687){return function(_0x513981){if(_0x513981){return _0x513981[_0x47a5('0x24')]()[_0x47a5('0x23')](function(){_0xe2dea9[_0x47a5('0x17')](0xcc)[_0x47a5('0x18')]();});}};}function handleEntityNotFound(_0x3abd6a,_0x50bf17){return function(_0x53078a){if(!_0x53078a){_0x3abd6a[_0x47a5('0x16')](0x194);}return _0x53078a;};}function handleError(_0x5686db,_0x1ea9c8){_0x1ea9c8=_0x1ea9c8||0x1f4;return function(_0x5b6c4e){logger[_0x47a5('0x25')](_0x5b6c4e[_0x47a5('0x26')]);if(_0x5b6c4e[_0x47a5('0x27')]){delete _0x5b6c4e[_0x47a5('0x27')];}_0x5686db[_0x47a5('0x17')](_0x1ea9c8)[_0x47a5('0x28')](_0x5b6c4e);};}exports[_0x47a5('0x22')]=function(_0x136b14,_0x16631f){if(_0x136b14[_0x47a5('0x29')]['id']){delete _0x136b14[_0x47a5('0x29')]['id'];}return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x136b14['params']['id']}})[_0x47a5('0x23')](handleEntityNotFound(_0x16631f,null))['then'](saveUpdates(_0x136b14[_0x47a5('0x29')],null))[_0x47a5('0x23')](respondWithResult(_0x16631f,null))[_0x47a5('0x2c')](handleError(_0x16631f,null));};exports['destroy']=function(_0x256650,_0x625952){return db[_0x47a5('0x2a')][_0x47a5('0x2b')]({'where':{'id':_0x256650['params']['id']}})['then'](handleEntityNotFound(_0x625952,null))[_0x47a5('0x23')](removeEntity(_0x625952,null))[_0x47a5('0x2c')](handleError(_0x625952,null));};
\ No newline at end of file
index 35de1cf..6fec192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a1a=['api','moment','request-promise','path','rimraf','../../config/environment','./condition.attributes','define','Condition','tools_conditions','lodash','util','../../config/logger'];(function(_0x34e5c9,_0x1db328){var _0x772b2d=function(_0x261e9c){while(--_0x261e9c){_0x34e5c9['push'](_0x34e5c9['shift']());}};_0x772b2d(++_0x1db328);}(_0x9a1a,0xe7));var _0xa9a1=function(_0x227a9d,_0x344409){_0x227a9d=_0x227a9d-0x0;var _0x33ae58=_0x9a1a[_0x227a9d];return _0x33ae58;};'use strict';var _=require(_0xa9a1('0x0'));var util=require(_0xa9a1('0x1'));var logger=require(_0xa9a1('0x2'))(_0xa9a1('0x3'));var moment=require(_0xa9a1('0x4'));var BPromise=require('bluebird');var rp=require(_0xa9a1('0x5'));var fs=require('fs');var path=require(_0xa9a1('0x6'));var rimraf=require(_0xa9a1('0x7'));var config=require(_0xa9a1('0x8'));var attributes=require(_0xa9a1('0x9'));module['exports']=function(_0x11af4a,_0xa990bd){return _0x11af4a[_0xa9a1('0xa')](_0xa9a1('0xb'),attributes,{'tableName':_0xa9a1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x62aa=['define','Condition','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./condition.attributes'];(function(_0x2fcf18,_0x10009a){var _0x4c68cc=function(_0x444002){while(--_0x444002){_0x2fcf18['push'](_0x2fcf18['shift']());}};_0x4c68cc(++_0x10009a);}(_0x62aa,0x6e));var _0xa62a=function(_0x54d5e1,_0x3fc1d4){_0x54d5e1=_0x54d5e1-0x0;var _0x76a20b=_0x62aa[_0x54d5e1];return _0x76a20b;};'use strict';var _=require(_0xa62a('0x0'));var util=require(_0xa62a('0x1'));var logger=require(_0xa62a('0x2'))(_0xa62a('0x3'));var moment=require(_0xa62a('0x4'));var BPromise=require(_0xa62a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa62a('0x6'));var rimraf=require(_0xa62a('0x7'));var config=require(_0xa62a('0x8'));var attributes=require(_0xa62a('0x9'));module['exports']=function(_0x4e886d,_0x5d94bf){return _0x4e886d[_0xa62a('0xa')](_0xa62a('0xb'),attributes,{'tableName':'tools_conditions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index aefaf75..33c2915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x113c=['result','catch','lodash','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','then','info','Condition,\x20%s,\x20%s','request\x20sent','debug','error','code','message'];(function(_0x349701,_0x5f30c2){var _0x53ad26=function(_0x1090af){while(--_0x1090af){_0x349701['push'](_0x349701['shift']());}};_0x53ad26(++_0x5f30c2);}(_0x113c,0xec));var _0xc113=function(_0x263345,_0x7d713e){_0x263345=_0x263345-0x0;var _0x9aa4c1=_0x113c[_0x263345];return _0x9aa4c1;};'use strict';var _=require(_0xc113('0x0'));var util=require('util');var moment=require(_0xc113('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc113('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xc113('0x3'));var logger=require(_0xc113('0x4'))(_0xc113('0x5'));var config=require(_0xc113('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc113('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x131886,_0xb6e82b,_0x56d871){return new BPromise(function(_0x73c0b7,_0x599715){return client['request'](_0x131886,_0x56d871)[_0xc113('0x8')](function(_0x3ae783){logger[_0xc113('0x9')](_0xc113('0xa'),_0xb6e82b,_0xc113('0xb'));logger[_0xc113('0xc')]('Condition,\x20%s,\x20%s,\x20%s',_0xb6e82b,_0xc113('0xb'),JSON['stringify'](_0x3ae783));if(_0x3ae783[_0xc113('0xd')]){if(_0x3ae783[_0xc113('0xd')][_0xc113('0xe')]===0x1f4){logger[_0xc113('0xd')]('Condition,\x20%s,\x20%s',_0xb6e82b,_0x3ae783[_0xc113('0xd')]['message']);return _0x599715(_0x3ae783[_0xc113('0xd')][_0xc113('0xf')]);}logger['error'](_0xc113('0xa'),_0xb6e82b,_0x3ae783['error'][_0xc113('0xf')]);return _0x73c0b7(_0x3ae783[_0xc113('0xd')]['message']);}else{logger[_0xc113('0x9')](_0xc113('0xa'),_0xb6e82b,'request\x20sent');_0x73c0b7(_0x3ae783[_0xc113('0x10')][_0xc113('0xf')]);}})[_0xc113('0x11')](function(_0x3d8c30){logger[_0xc113('0xd')](_0xc113('0xa'),_0xb6e82b,_0x3d8c30);_0x599715(_0x3d8c30);});});}
\ No newline at end of file
+var _0x414d=['stringify','error','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Condition,\x20%s,\x20%s','request\x20sent','Condition,\x20%s,\x20%s,\x20%s'];(function(_0x591db7,_0x150445){var _0x4ad760=function(_0x5dd24e){while(--_0x5dd24e){_0x591db7['push'](_0x591db7['shift']());}};_0x4ad760(++_0x150445);}(_0x414d,0x190));var _0xd414=function(_0x3a7a50,_0xf3ba4b){_0x3a7a50=_0x3a7a50-0x0;var _0x2f8187=_0x414d[_0x3a7a50];return _0x2f8187;};'use strict';var _=require('lodash');var util=require(_0xd414('0x0'));var moment=require(_0xd414('0x1'));var BPromise=require(_0xd414('0x2'));var rs=require(_0xd414('0x3'));var fs=require('fs');var Redis=require(_0xd414('0x4'));var db=require(_0xd414('0x5'))['db'];var utils=require(_0xd414('0x6'));var logger=require(_0xd414('0x7'))(_0xd414('0x8'));var config=require(_0xd414('0x9'));var jayson=require(_0xd414('0xa'));var client=jayson['client'][_0xd414('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x40a8bf,_0x5e3d0c,_0x3703cd){return new BPromise(function(_0x13ac3f,_0x4f8887){return client[_0xd414('0xc')](_0x40a8bf,_0x3703cd)[_0xd414('0xd')](function(_0xe73a0a){logger[_0xd414('0xe')](_0xd414('0xf'),_0x5e3d0c,_0xd414('0x10'));logger['debug'](_0xd414('0x11'),_0x5e3d0c,'request\x20sent',JSON[_0xd414('0x12')](_0xe73a0a));if(_0xe73a0a[_0xd414('0x13')]){if(_0xe73a0a[_0xd414('0x13')]['code']===0x1f4){logger[_0xd414('0x13')](_0xd414('0xf'),_0x5e3d0c,_0xe73a0a['error'][_0xd414('0x14')]);return _0x4f8887(_0xe73a0a[_0xd414('0x13')][_0xd414('0x14')]);}logger[_0xd414('0x13')]('Condition,\x20%s,\x20%s',_0x5e3d0c,_0xe73a0a[_0xd414('0x13')]['message']);return _0x13ac3f(_0xe73a0a['error'][_0xd414('0x14')]);}else{logger['info'](_0xd414('0xf'),_0x5e3d0c,'request\x20sent');_0x13ac3f(_0xe73a0a['result']['message']);}})[_0xd414('0x15')](function(_0x2a205a){logger[_0xd414('0x13')](_0xd414('0xf'),_0x5e3d0c,_0x2a205a);_0x4f8887(_0x2a205a);});});}
\ No newline at end of file
index f1586bc..c3c5ba7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa57a=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated','update','delete','destroy','exports','util','connect-timeout'];(function(_0x5b5eb4,_0x117c87){var _0x42af53=function(_0xdf6fcb){while(--_0xdf6fcb){_0x5b5eb4['push'](_0x5b5eb4['shift']());}};_0x42af53(++_0x117c87);}(_0xa57a,0x194));var _0xaa57=function(_0x2a73f7,_0x2e9257){_0x2a73f7=_0x2a73f7-0x0;var _0x758c4c=_0xa57a[_0x2a73f7];return _0x758c4c;};'use strict';var multer=require('multer');var util=require(_0xaa57('0x0'));var path=require('path');var timeout=require(_0xaa57('0x1'));var express=require(_0xaa57('0x2'));var router=express['Router']();var fs_extra=require(_0xaa57('0x3'));var auth=require(_0xaa57('0x4'));var interaction=require(_0xaa57('0x5'));var config=require(_0xaa57('0x6'));var controller=require('./condition.controller');router[_0xaa57('0x7')](_0xaa57('0x8'),auth[_0xaa57('0x9')](),controller[_0xaa57('0xa')]);router[_0xaa57('0xb')]('/:id',auth[_0xaa57('0x9')](),controller[_0xaa57('0xc')]);module[_0xaa57('0xd')]=router;
\ No newline at end of file
+var _0xf05f=['./condition.controller','put','/:id','isAuthenticated','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5bb3d9,_0x2912cb){var _0x5dcdae=function(_0x3b2aa1){while(--_0x3b2aa1){_0x5bb3d9['push'](_0x5bb3d9['shift']());}};_0x5dcdae(++_0x2912cb);}(_0xf05f,0xcb));var _0xff05=function(_0x45513d,_0x108ef2){_0x45513d=_0x45513d-0x0;var _0x1ea633=_0xf05f[_0x45513d];return _0x1ea633;};'use strict';var multer=require(_0xff05('0x0'));var util=require(_0xff05('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xff05('0x2')]();var fs_extra=require(_0xff05('0x3'));var auth=require(_0xff05('0x4'));var interaction=require(_0xff05('0x5'));var config=require(_0xff05('0x6'));var controller=require(_0xff05('0x7'));router[_0xff05('0x8')](_0xff05('0x9'),auth[_0xff05('0xa')](),controller['update']);router[_0xff05('0xb')](_0xff05('0x9'),auth[_0xff05('0xa')](),controller[_0xff05('0xc')]);module[_0xff05('0xd')]=router;
\ No newline at end of file
index df18e62..cb02664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7460=['STRING','name','INTEGER','sequelize','exports'];(function(_0x7fc28,_0x17f193){var _0x57d19a=function(_0x350238){while(--_0x350238){_0x7fc28['push'](_0x7fc28['shift']());}};_0x57d19a(++_0x17f193);}(_0x7460,0x11b));var _0x0746=function(_0xbf1132,_0x176b34){_0xbf1132=_0xbf1132-0x0;var _0xe63ce4=_0x7460[_0xbf1132];return _0xe63ce4;};'use strict';var Sequelize=require(_0x0746('0x0'));module[_0x0746('0x1')]={'name':{'type':Sequelize[_0x0746('0x2')],'allowNull':![],'unique':_0x0746('0x3')},'OrderBy':{'type':Sequelize[_0x0746('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x0746('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0xfd4b=['name','INTEGER','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfd4b,0x10a));var _0xbfd4=function(_0x48f5b6,_0x2ffecf){_0x48f5b6=_0x48f5b6-0x0;var _0x85b577=_0xfd4b[_0x48f5b6];return _0x85b577;};'use strict';var Sequelize=require('sequelize');module[_0xbfd4('0x0')]={'name':{'type':Sequelize[_0xbfd4('0x1')],'allowNull':![],'unique':_0xbfd4('0x2')},'OrderBy':{'type':Sequelize[_0xbfd4('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0xbfd4('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 51fda40..6ece080 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32f4=['Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','CmContactHasItem','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','get','ContactItemTypes','UserProfileResource','end','stack','name','send','index','map','ContactItemType','rawAttributes','fieldName','type','query','filters','intersection','model','attributes','fields','nolimit','limit','sort','where','pick','filter','includeAll','include','findAll','rows','catch','show','params','keys','length','merge','options','find','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x32f4,0x154));var _0x432f=function(_0x551317,_0x21eb24){_0x551317=_0x551317-0x0;var _0x14bf35=_0x32f4[_0x551317];return _0x14bf35;};'use strict';var emlformat=require(_0x432f('0x0'));var rimraf=require(_0x432f('0x1'));var zipdir=require(_0x432f('0x2'));var jsonpatch=require(_0x432f('0x3'));var rp=require('request-promise');var moment=require(_0x432f('0x4'));var BPromise=require(_0x432f('0x5'));var Mustache=require('mustache');var util=require(_0x432f('0x6'));var path=require(_0x432f('0x7'));var sox=require(_0x432f('0x8'));var csv=require(_0x432f('0x9'));var ejs=require(_0x432f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x432f('0xb'));var crypto=require(_0x432f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x432f('0xd'));var toCsv=require('to-csv');var querystring=require(_0x432f('0xe'));var Papa=require(_0x432f('0xf'));var Redis=require(_0x432f('0x10'));var authService=require(_0x432f('0x11'));var qs=require(_0x432f('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x432f('0x13'));var logger=require('../../config/logger')(_0x432f('0x14'));var utils=require('../../config/utils');var config=require(_0x432f('0x15'));var licenseUtil=require(_0x432f('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x457389,_0x29f7d2){_0x29f7d2=_0x29f7d2||0xcc;return function(_0x52e40f){if(_0x52e40f){return _0x457389[_0x432f('0x17')](_0x29f7d2);}return _0x457389[_0x432f('0x18')](_0x29f7d2)['end']();};}function respondWithResult(_0x48a4db,_0x28d9e9){_0x28d9e9=_0x28d9e9||0xc8;return function(_0x44756d){if(_0x44756d){return _0x48a4db[_0x432f('0x18')](_0x28d9e9)[_0x432f('0x19')](_0x44756d);}};}function respondWithFilteredResult(_0x419bfe,_0x4f91c5){return function(_0x175ba7){if(_0x175ba7){var _0x2f0708=typeof _0x4f91c5[_0x432f('0x1a')]===_0x432f('0x1b')&&typeof _0x4f91c5['limit']===_0x432f('0x1b');var _0x30f231=_0x175ba7[_0x432f('0x1c')];var _0x243cf=_0x2f0708?0x0:_0x4f91c5[_0x432f('0x1a')];var _0x129582=_0x2f0708?_0x175ba7['count']:_0x4f91c5[_0x432f('0x1a')]+_0x4f91c5['limit'];var _0x3d545d;if(_0x129582>=_0x30f231){_0x129582=_0x30f231;_0x3d545d=0xc8;}else{_0x3d545d=0xce;}_0x419bfe[_0x432f('0x18')](_0x3d545d);return _0x419bfe[_0x432f('0x1d')](_0x432f('0x1e'),_0x243cf+'-'+_0x129582+'/'+_0x30f231)[_0x432f('0x19')](_0x175ba7);}return null;};}function patchUpdates(_0xf1f5d){return function(_0x10f39b){try{jsonpatch[_0x432f('0x1f')](_0x10f39b,_0xf1f5d,!![]);}catch(_0x693eb3){return BPromise[_0x432f('0x20')](_0x693eb3);}return _0x10f39b[_0x432f('0x21')]();};}function saveUpdates(_0x3446fd,_0x4dd230){return function(_0x5940bd){if(_0x5940bd){return _0x5940bd[_0x432f('0x22')](_0x3446fd)['then'](function(_0x28968e){return _0x28968e;});}return null;};}function removeEntity(_0x5b9c70,_0x37f136){return function(_0x175d1b){if(_0x175d1b){return _0x175d1b[_0x432f('0x23')]()[_0x432f('0x24')](function(){var _0x2f84a7=_0x175d1b[_0x432f('0x25')]({'plain':!![]});var _0x59f352=_0x432f('0x26');return db[_0x432f('0x27')]['destroy']({'where':{'type':_0x59f352,'resourceId':_0x2f84a7['id']}})[_0x432f('0x24')](function(){return _0x175d1b;});})[_0x432f('0x24')](function(){_0x5b9c70[_0x432f('0x18')](0xcc)[_0x432f('0x28')]();});}};}function handleEntityNotFound(_0x44839,_0x781862){return function(_0x138a6a){if(!_0x138a6a){_0x44839['sendStatus'](0x194);}return _0x138a6a;};}function handleError(_0x294bfe,_0x4eeae1){_0x4eeae1=_0x4eeae1||0x1f4;return function(_0x1f1fdd){logger['error'](_0x1f1fdd[_0x432f('0x29')]);if(_0x1f1fdd['name']){delete _0x1f1fdd[_0x432f('0x2a')];}_0x294bfe['status'](_0x4eeae1)[_0x432f('0x2b')](_0x1f1fdd);};}exports[_0x432f('0x2c')]=function(_0x263cd8,_0x59c1ab){var _0x6a116e={},_0x24406a={},_0x48139b={'count':0x0,'rows':[]};var _0x5ee0fa=_[_0x432f('0x2d')](db[_0x432f('0x2e')][_0x432f('0x2f')],function(_0x3581c2){return{'name':_0x3581c2[_0x432f('0x30')],'type':_0x3581c2[_0x432f('0x31')]['key']};});_0x24406a['model']=_[_0x432f('0x2d')](_0x5ee0fa,_0x432f('0x2a'));_0x24406a[_0x432f('0x32')]=_['keys'](_0x263cd8[_0x432f('0x32')]);_0x24406a[_0x432f('0x33')]=_[_0x432f('0x34')](_0x24406a[_0x432f('0x35')],_0x24406a[_0x432f('0x32')]);_0x6a116e[_0x432f('0x36')]=_[_0x432f('0x34')](_0x24406a[_0x432f('0x35')],qs['fields'](_0x263cd8['query'][_0x432f('0x37')]));_0x6a116e[_0x432f('0x36')]=_0x6a116e['attributes']['length']?_0x6a116e['attributes']:_0x24406a[_0x432f('0x35')];if(!_0x263cd8[_0x432f('0x32')]['hasOwnProperty'](_0x432f('0x38'))){_0x6a116e[_0x432f('0x39')]=qs[_0x432f('0x39')](_0x263cd8['query'][_0x432f('0x39')]);_0x6a116e[_0x432f('0x1a')]=qs['offset'](_0x263cd8[_0x432f('0x32')][_0x432f('0x1a')]);}_0x6a116e['order']=qs[_0x432f('0x3a')](_0x263cd8[_0x432f('0x32')][_0x432f('0x3a')]);_0x6a116e[_0x432f('0x3b')]=qs[_0x432f('0x33')](_[_0x432f('0x3c')](_0x263cd8[_0x432f('0x32')],_0x24406a[_0x432f('0x33')]),_0x5ee0fa);if(_0x263cd8[_0x432f('0x32')][_0x432f('0x3d')]){_0x6a116e[_0x432f('0x3b')]=_['merge'](_0x6a116e[_0x432f('0x3b')],{'$or':_['map'](_0x5ee0fa,function(_0x1550fc){if(_0x1550fc[_0x432f('0x31')]!=='VIRTUAL'){var _0x43d836={};_0x43d836[_0x1550fc['name']]={'$like':'%'+_0x263cd8[_0x432f('0x32')][_0x432f('0x3d')]+'%'};return _0x43d836;}})});}_0x6a116e=_['merge']({},_0x6a116e,_0x263cd8['options']);var _0xbd4240={'where':_0x6a116e[_0x432f('0x3b')]};return db[_0x432f('0x2e')][_0x432f('0x1c')](_0xbd4240)[_0x432f('0x24')](function(_0x513a57){_0x48139b['count']=_0x513a57;if(_0x263cd8['query'][_0x432f('0x3e')]){_0x6a116e[_0x432f('0x3f')]=[{'all':!![]}];}return db['ContactItemType'][_0x432f('0x40')](_0x6a116e);})[_0x432f('0x24')](function(_0x41c90c){_0x48139b[_0x432f('0x41')]=_0x41c90c;return _0x48139b;})[_0x432f('0x24')](respondWithFilteredResult(_0x59c1ab,_0x6a116e))[_0x432f('0x42')](handleError(_0x59c1ab,null));};exports[_0x432f('0x43')]=function(_0x1a2be2,_0x1c5f87){var _0x5c6298={'raw':!![],'where':{'id':_0x1a2be2[_0x432f('0x44')]['id']}},_0x247b63={};_0x247b63['model']=_[_0x432f('0x45')](db[_0x432f('0x2e')][_0x432f('0x2f')]);_0x247b63[_0x432f('0x32')]=_[_0x432f('0x45')](_0x1a2be2[_0x432f('0x32')]);_0x247b63[_0x432f('0x33')]=_[_0x432f('0x34')](_0x247b63[_0x432f('0x35')],_0x247b63[_0x432f('0x32')]);_0x5c6298[_0x432f('0x36')]=_[_0x432f('0x34')](_0x247b63[_0x432f('0x35')],qs[_0x432f('0x37')](_0x1a2be2['query']['fields']));_0x5c6298[_0x432f('0x36')]=_0x5c6298[_0x432f('0x36')][_0x432f('0x46')]?_0x5c6298[_0x432f('0x36')]:_0x247b63[_0x432f('0x35')];if(_0x1a2be2['query'][_0x432f('0x3e')]){_0x5c6298[_0x432f('0x3f')]=[{'all':!![]}];}_0x5c6298=_[_0x432f('0x47')]({},_0x5c6298,_0x1a2be2[_0x432f('0x48')]);return db[_0x432f('0x2e')][_0x432f('0x49')](_0x5c6298)[_0x432f('0x24')](handleEntityNotFound(_0x1c5f87,null))['then'](respondWithResult(_0x1c5f87,null))[_0x432f('0x42')](handleError(_0x1c5f87,null));};exports[_0x432f('0x4a')]=function(_0x359853,_0x547bd0){return db[_0x432f('0x2e')][_0x432f('0x4a')](_0x359853['body'],{})['then'](function(_0x3b2021){var _0x24f244=_0x359853['user']['get']({'plain':!![]});if(!_0x24f244)throw new Error(_0x432f('0x4b'));if(_0x24f244['role']===_0x432f('0x4c')){var _0x66b80e=_0x3b2021['get']({'plain':!![]});var _0x12f2f7='ContactItemTypes';return db[_0x432f('0x4d')][_0x432f('0x49')]({'where':{'name':_0x12f2f7,'userProfileId':_0x24f244[_0x432f('0x4e')]},'raw':!![]})[_0x432f('0x24')](function(_0x3051ea){if(_0x3051ea&&_0x3051ea[_0x432f('0x4f')]===0x0){return db['UserProfileResource'][_0x432f('0x4a')]({'name':_0x66b80e['name'],'resourceId':_0x66b80e['id'],'type':_0x3051ea[_0x432f('0x2a')],'sectionId':_0x3051ea['id']},{})[_0x432f('0x24')](function(){return _0x3b2021;});}else{return _0x3b2021;}})[_0x432f('0x42')](function(_0x21ae8c){logger['error'](_0x432f('0x50'),_0x21ae8c);throw _0x21ae8c;});}return _0x3b2021;})[_0x432f('0x24')](respondWithResult(_0x547bd0,0xc9))[_0x432f('0x42')](handleError(_0x547bd0,null));};exports[_0x432f('0x22')]=function(_0x13aced,_0x2a26bd){if(_0x13aced[_0x432f('0x51')]['id']){delete _0x13aced['body']['id'];}return db['ContactItemType'][_0x432f('0x49')]({'where':{'id':_0x13aced[_0x432f('0x44')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x2a26bd,null))[_0x432f('0x24')](saveUpdates(_0x13aced[_0x432f('0x51')],null))[_0x432f('0x24')](respondWithResult(_0x2a26bd,null))['catch'](handleError(_0x2a26bd,null));};exports[_0x432f('0x23')]=function(_0x545035,_0x4e96d8){return db[_0x432f('0x2e')][_0x432f('0x49')]({'where':{'id':_0x545035[_0x432f('0x44')]['id']}})[_0x432f('0x24')](handleEntityNotFound(_0x4e96d8,null))[_0x432f('0x24')](db[_0x432f('0x52')]['update']({'ItemTypeId':null},{'where':{'ItemTypeId':_0x545035[_0x432f('0x44')]['id']}}))[_0x432f('0x24')](removeEntity(_0x4e96d8,null))['catch'](handleError(_0x4e96d8,null));};
\ No newline at end of file
+var _0x93e9=['send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','options','ContactItemType','includeAll','include','rows','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','update','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','then','destroy','get','ContactItemTypes','UserProfileResource','error','stack','name'];(function(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_0x93e9,0xcc));var _0x993e=function(_0x5d9a28,_0x1bf0bf){_0x5d9a28=_0x5d9a28-0x0;var _0x1a0fcd=_0x93e9[_0x5d9a28];return _0x1a0fcd;};'use strict';var emlformat=require(_0x993e('0x0'));var rimraf=require(_0x993e('0x1'));var zipdir=require(_0x993e('0x2'));var jsonpatch=require(_0x993e('0x3'));var rp=require(_0x993e('0x4'));var moment=require(_0x993e('0x5'));var BPromise=require(_0x993e('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x993e('0x7'));var sox=require(_0x993e('0x8'));var csv=require(_0x993e('0x9'));var ejs=require(_0x993e('0xa'));var fs=require('fs');var fs_extra=require(_0x993e('0xb'));var _=require(_0x993e('0xc'));var squel=require(_0x993e('0xd'));var crypto=require(_0x993e('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x993e('0xf'));var toCsv=require(_0x993e('0x9'));var querystring=require(_0x993e('0x10'));var Papa=require(_0x993e('0x11'));var Redis=require(_0x993e('0x12'));var authService=require(_0x993e('0x13'));var qs=require(_0x993e('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x993e('0x15'));var logger=require(_0x993e('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x993e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x993e('0x18'))['db'];function respondWithStatusCode(_0x5d5c0d,_0x4c2707){_0x4c2707=_0x4c2707||0xcc;return function(_0x31ece2){if(_0x31ece2){return _0x5d5c0d[_0x993e('0x19')](_0x4c2707);}return _0x5d5c0d[_0x993e('0x1a')](_0x4c2707)[_0x993e('0x1b')]();};}function respondWithResult(_0x3e082b,_0x397b42){_0x397b42=_0x397b42||0xc8;return function(_0x34ddda){if(_0x34ddda){return _0x3e082b[_0x993e('0x1a')](_0x397b42)[_0x993e('0x1c')](_0x34ddda);}};}function respondWithFilteredResult(_0xa43a4e,_0x1a7726){return function(_0x135771){if(_0x135771){var _0x3df0e7=typeof _0x1a7726[_0x993e('0x1d')]===_0x993e('0x1e')&&typeof _0x1a7726[_0x993e('0x1f')]===_0x993e('0x1e');var _0x526e06=_0x135771[_0x993e('0x20')];var _0x1acd21=_0x3df0e7?0x0:_0x1a7726[_0x993e('0x1d')];var _0x3d6109=_0x3df0e7?_0x135771[_0x993e('0x20')]:_0x1a7726[_0x993e('0x1d')]+_0x1a7726['limit'];var _0x11cd41;if(_0x3d6109>=_0x526e06){_0x3d6109=_0x526e06;_0x11cd41=0xc8;}else{_0x11cd41=0xce;}_0xa43a4e[_0x993e('0x1a')](_0x11cd41);return _0xa43a4e[_0x993e('0x21')](_0x993e('0x22'),_0x1acd21+'-'+_0x3d6109+'/'+_0x526e06)[_0x993e('0x1c')](_0x135771);}return null;};}function patchUpdates(_0x425ab4){return function(_0x29e48d){try{jsonpatch[_0x993e('0x23')](_0x29e48d,_0x425ab4,!![]);}catch(_0x4bbe9c){return BPromise[_0x993e('0x24')](_0x4bbe9c);}return _0x29e48d['save']();};}function saveUpdates(_0x11f6f4,_0x37ff57){return function(_0x32b09e){if(_0x32b09e){return _0x32b09e['update'](_0x11f6f4)[_0x993e('0x25')](function(_0x13db4e){return _0x13db4e;});}return null;};}function removeEntity(_0xfba00f,_0x1c52fd){return function(_0x3b45ef){if(_0x3b45ef){return _0x3b45ef[_0x993e('0x26')]()[_0x993e('0x25')](function(){var _0x3ad96f=_0x3b45ef[_0x993e('0x27')]({'plain':!![]});var _0x18f6ac=_0x993e('0x28');return db[_0x993e('0x29')]['destroy']({'where':{'type':_0x18f6ac,'resourceId':_0x3ad96f['id']}})[_0x993e('0x25')](function(){return _0x3b45ef;});})[_0x993e('0x25')](function(){_0xfba00f['status'](0xcc)[_0x993e('0x1b')]();});}};}function handleEntityNotFound(_0x4f5cc1,_0x14a0c7){return function(_0xa03fbd){if(!_0xa03fbd){_0x4f5cc1[_0x993e('0x19')](0x194);}return _0xa03fbd;};}function handleError(_0x2ff973,_0x5c7507){_0x5c7507=_0x5c7507||0x1f4;return function(_0x48d457){logger[_0x993e('0x2a')](_0x48d457[_0x993e('0x2b')]);if(_0x48d457['name']){delete _0x48d457[_0x993e('0x2c')];}_0x2ff973[_0x993e('0x1a')](_0x5c7507)[_0x993e('0x2d')](_0x48d457);};}exports['index']=function(_0x2495b7,_0x9e0309){var _0x1f5d51={},_0x1fa8a5={},_0x2599ec={'count':0x0,'rows':[]};var _0x54da4e=_[_0x993e('0x2e')](db['ContactItemType'][_0x993e('0x2f')],function(_0x5ba163){return{'name':_0x5ba163[_0x993e('0x30')],'type':_0x5ba163['type'][_0x993e('0x31')]};});_0x1fa8a5[_0x993e('0x32')]=_[_0x993e('0x2e')](_0x54da4e,_0x993e('0x2c'));_0x1fa8a5[_0x993e('0x33')]=_[_0x993e('0x34')](_0x2495b7['query']);_0x1fa8a5[_0x993e('0x35')]=_['intersection'](_0x1fa8a5['model'],_0x1fa8a5[_0x993e('0x33')]);_0x1f5d51['attributes']=_[_0x993e('0x36')](_0x1fa8a5[_0x993e('0x32')],qs[_0x993e('0x37')](_0x2495b7[_0x993e('0x33')][_0x993e('0x37')]));_0x1f5d51[_0x993e('0x38')]=_0x1f5d51[_0x993e('0x38')][_0x993e('0x39')]?_0x1f5d51[_0x993e('0x38')]:_0x1fa8a5[_0x993e('0x32')];if(!_0x2495b7[_0x993e('0x33')][_0x993e('0x3a')](_0x993e('0x3b'))){_0x1f5d51[_0x993e('0x1f')]=qs[_0x993e('0x1f')](_0x2495b7['query'][_0x993e('0x1f')]);_0x1f5d51[_0x993e('0x1d')]=qs[_0x993e('0x1d')](_0x2495b7[_0x993e('0x33')][_0x993e('0x1d')]);}_0x1f5d51[_0x993e('0x3c')]=qs[_0x993e('0x3d')](_0x2495b7[_0x993e('0x33')][_0x993e('0x3d')]);_0x1f5d51['where']=qs[_0x993e('0x35')](_['pick'](_0x2495b7[_0x993e('0x33')],_0x1fa8a5[_0x993e('0x35')]),_0x54da4e);if(_0x2495b7[_0x993e('0x33')][_0x993e('0x3e')]){_0x1f5d51[_0x993e('0x3f')]=_[_0x993e('0x40')](_0x1f5d51[_0x993e('0x3f')],{'$or':_[_0x993e('0x2e')](_0x54da4e,function(_0x4f057e){if(_0x4f057e[_0x993e('0x41')]!=='VIRTUAL'){var _0x180ad4={};_0x180ad4[_0x4f057e['name']]={'$like':'%'+_0x2495b7[_0x993e('0x33')][_0x993e('0x3e')]+'%'};return _0x180ad4;}})});}_0x1f5d51=_[_0x993e('0x40')]({},_0x1f5d51,_0x2495b7[_0x993e('0x42')]);var _0x39424a={'where':_0x1f5d51[_0x993e('0x3f')]};return db[_0x993e('0x43')][_0x993e('0x20')](_0x39424a)['then'](function(_0xe64c){_0x2599ec['count']=_0xe64c;if(_0x2495b7['query'][_0x993e('0x44')]){_0x1f5d51[_0x993e('0x45')]=[{'all':!![]}];}return db[_0x993e('0x43')]['findAll'](_0x1f5d51);})[_0x993e('0x25')](function(_0x40719d){_0x2599ec[_0x993e('0x46')]=_0x40719d;return _0x2599ec;})['then'](respondWithFilteredResult(_0x9e0309,_0x1f5d51))['catch'](handleError(_0x9e0309,null));};exports['show']=function(_0x3f29c8,_0x1adb09){var _0x254f74={'raw':!![],'where':{'id':_0x3f29c8[_0x993e('0x47')]['id']}},_0x539c9d={};_0x539c9d[_0x993e('0x32')]=_['keys'](db[_0x993e('0x43')][_0x993e('0x2f')]);_0x539c9d['query']=_[_0x993e('0x34')](_0x3f29c8[_0x993e('0x33')]);_0x539c9d[_0x993e('0x35')]=_['intersection'](_0x539c9d['model'],_0x539c9d['query']);_0x254f74[_0x993e('0x38')]=_[_0x993e('0x36')](_0x539c9d[_0x993e('0x32')],qs[_0x993e('0x37')](_0x3f29c8['query'][_0x993e('0x37')]));_0x254f74[_0x993e('0x38')]=_0x254f74[_0x993e('0x38')][_0x993e('0x39')]?_0x254f74[_0x993e('0x38')]:_0x539c9d[_0x993e('0x32')];if(_0x3f29c8['query']['includeAll']){_0x254f74[_0x993e('0x45')]=[{'all':!![]}];}_0x254f74=_[_0x993e('0x40')]({},_0x254f74,_0x3f29c8['options']);return db['ContactItemType'][_0x993e('0x48')](_0x254f74)[_0x993e('0x25')](handleEntityNotFound(_0x1adb09,null))[_0x993e('0x25')](respondWithResult(_0x1adb09,null))[_0x993e('0x49')](handleError(_0x1adb09,null));};exports[_0x993e('0x4a')]=function(_0x256ce3,_0x5b18e3){return db[_0x993e('0x43')]['create'](_0x256ce3[_0x993e('0x4b')],{})[_0x993e('0x25')](function(_0x28cf3b){var _0x402e37=_0x256ce3[_0x993e('0x4c')][_0x993e('0x27')]({'plain':!![]});if(!_0x402e37)throw new Error(_0x993e('0x4d'));if(_0x402e37[_0x993e('0x4e')]==='user'){var _0x23f09c=_0x28cf3b[_0x993e('0x27')]({'plain':!![]});var _0x8b1516='ContactItemTypes';return db[_0x993e('0x4f')]['find']({'where':{'name':_0x8b1516,'userProfileId':_0x402e37[_0x993e('0x50')]},'raw':!![]})[_0x993e('0x25')](function(_0x5cd41a){if(_0x5cd41a&&_0x5cd41a[_0x993e('0x51')]===0x0){return db[_0x993e('0x29')]['create']({'name':_0x23f09c[_0x993e('0x2c')],'resourceId':_0x23f09c['id'],'type':_0x5cd41a[_0x993e('0x2c')],'sectionId':_0x5cd41a['id']},{})[_0x993e('0x25')](function(){return _0x28cf3b;});}else{return _0x28cf3b;}})[_0x993e('0x49')](function(_0x2e368e){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2e368e);throw _0x2e368e;});}return _0x28cf3b;})['then'](respondWithResult(_0x5b18e3,0xc9))[_0x993e('0x49')](handleError(_0x5b18e3,null));};exports[_0x993e('0x52')]=function(_0x42af4f,_0x2c3df7){if(_0x42af4f[_0x993e('0x4b')]['id']){delete _0x42af4f[_0x993e('0x4b')]['id'];}return db['ContactItemType'][_0x993e('0x48')]({'where':{'id':_0x42af4f[_0x993e('0x47')]['id']}})[_0x993e('0x25')](handleEntityNotFound(_0x2c3df7,null))['then'](saveUpdates(_0x42af4f[_0x993e('0x4b')],null))['then'](respondWithResult(_0x2c3df7,null))['catch'](handleError(_0x2c3df7,null));};exports[_0x993e('0x26')]=function(_0x37d7b1,_0x511641){return db[_0x993e('0x43')]['find']({'where':{'id':_0x37d7b1[_0x993e('0x47')]['id']}})[_0x993e('0x25')](handleEntityNotFound(_0x511641,null))['then'](db['CmContactHasItem'][_0x993e('0x52')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x37d7b1[_0x993e('0x47')]['id']}}))[_0x993e('0x25')](removeEntity(_0x511641,null))[_0x993e('0x49')](handleError(_0x511641,null));};
\ No newline at end of file
index 3312cd3..b531d3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ca0=['path','exports','define','tools_contact_item_types','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x3fa100,_0x3c5ae5){var _0x371fce=function(_0x1d9d9a){while(--_0x1d9d9a){_0x3fa100['push'](_0x3fa100['shift']());}};_0x371fce(++_0x3c5ae5);}(_0x2ca0,0x112));var _0x02ca=function(_0x5a27e8,_0x492a2f){_0x5a27e8=_0x5a27e8-0x0;var _0x4e38f7=_0x2ca0[_0x5a27e8];return _0x4e38f7;};'use strict';var _=require(_0x02ca('0x0'));var util=require(_0x02ca('0x1'));var logger=require(_0x02ca('0x2'))(_0x02ca('0x3'));var moment=require('moment');var BPromise=require(_0x02ca('0x4'));var rp=require(_0x02ca('0x5'));var fs=require('fs');var path=require(_0x02ca('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./contactItemType.attributes');module[_0x02ca('0x7')]=function(_0x38fa5d,_0x1307e4){return _0x38fa5d[_0x02ca('0x8')]('ContactItemType',attributes,{'tableName':_0x02ca('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x295e=['define','ContactItemType','tools_contact_item_types','util','../../config/logger','api','moment','bluebird','rimraf','./contactItemType.attributes'];(function(_0x44b005,_0x51199e){var _0x304f0b=function(_0x5a810e){while(--_0x5a810e){_0x44b005['push'](_0x44b005['shift']());}};_0x304f0b(++_0x51199e);}(_0x295e,0x16b));var _0xe295=function(_0x10a3cf,_0x48e4b3){_0x10a3cf=_0x10a3cf-0x0;var _0x227855=_0x295e[_0x10a3cf];return _0x227855;};'use strict';var _=require('lodash');var util=require(_0xe295('0x0'));var logger=require(_0xe295('0x1'))(_0xe295('0x2'));var moment=require(_0xe295('0x3'));var BPromise=require(_0xe295('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe295('0x5'));var config=require('../../config/environment');var attributes=require(_0xe295('0x6'));module['exports']=function(_0x3e585a,_0x3c0604){return _0x3e585a[_0xe295('0x7')](_0xe295('0x8'),attributes,{'tableName':_0xe295('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7ed2836..f7acc5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7872=['ContactItemType,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','then','info','debug','request\x20sent','stringify','error','code'];(function(_0x411bbc,_0x4e1ff7){var _0x5d5227=function(_0x2ab311){while(--_0x2ab311){_0x411bbc['push'](_0x411bbc['shift']());}};_0x5d5227(++_0x4e1ff7);}(_0x7872,0x193));var _0x2787=function(_0x1fa4ea,_0x13892a){_0x1fa4ea=_0x1fa4ea-0x0;var _0x5ecc8c=_0x7872[_0x1fa4ea];return _0x5ecc8c;};'use strict';var _=require(_0x2787('0x0'));var util=require(_0x2787('0x1'));var moment=require(_0x2787('0x2'));var BPromise=require('bluebird');var rs=require(_0x2787('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2787('0x4'))['db'];var utils=require(_0x2787('0x5'));var logger=require('../../config/logger')(_0x2787('0x6'));var config=require(_0x2787('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2787('0x8')][_0x2787('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x102cd8,_0x56b049,_0x508d39){return new BPromise(function(_0x5ba648,_0x2f2058){return client['request'](_0x102cd8,_0x508d39)[_0x2787('0xa')](function(_0x2e3abe){logger[_0x2787('0xb')]('ContactItemType,\x20%s,\x20%s',_0x56b049,'request\x20sent');logger[_0x2787('0xc')]('ContactItemType,\x20%s,\x20%s,\x20%s',_0x56b049,_0x2787('0xd'),JSON[_0x2787('0xe')](_0x2e3abe));if(_0x2e3abe[_0x2787('0xf')]){if(_0x2e3abe[_0x2787('0xf')][_0x2787('0x10')]===0x1f4){logger[_0x2787('0xf')](_0x2787('0x11'),_0x56b049,_0x2e3abe['error']['message']);return _0x2f2058(_0x2e3abe[_0x2787('0xf')][_0x2787('0x12')]);}logger['error'](_0x2787('0x11'),_0x56b049,_0x2e3abe[_0x2787('0xf')][_0x2787('0x12')]);return _0x5ba648(_0x2e3abe['error'][_0x2787('0x12')]);}else{logger[_0x2787('0xb')](_0x2787('0x11'),_0x56b049,_0x2787('0xd'));_0x5ba648(_0x2e3abe[_0x2787('0x13')]['message']);}})[_0x2787('0x14')](function(_0x3adccb){logger[_0x2787('0xf')](_0x2787('0x11'),_0x56b049,_0x3adccb);_0x2f2058(_0x3adccb);});});}
\ No newline at end of file
+var _0x8856=['client','request','info','ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise'];(function(_0x53af27,_0x12b16c){var _0x1d3634=function(_0x185da0){while(--_0x185da0){_0x53af27['push'](_0x53af27['shift']());}};_0x1d3634(++_0x12b16c);}(_0x8856,0xe2));var _0x6885=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x8856[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x6885('0x0'));var util=require(_0x6885('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6885('0x2'));var fs=require('fs');var Redis=require(_0x6885('0x3'));var db=require(_0x6885('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x6885('0x5'));var config=require(_0x6885('0x6'));var jayson=require(_0x6885('0x7'));var client=jayson[_0x6885('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3652b3,_0x5901bb,_0x577019){return new BPromise(function(_0x5a6ccc,_0x232121){return client[_0x6885('0x9')](_0x3652b3,_0x577019)['then'](function(_0x4f6106){logger[_0x6885('0xa')](_0x6885('0xb'),_0x5901bb,_0x6885('0xc'));logger[_0x6885('0xd')](_0x6885('0xe'),_0x5901bb,_0x6885('0xc'),JSON['stringify'](_0x4f6106));if(_0x4f6106[_0x6885('0xf')]){if(_0x4f6106[_0x6885('0xf')]['code']===0x1f4){logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x4f6106[_0x6885('0xf')][_0x6885('0x10')]);return _0x232121(_0x4f6106['error'][_0x6885('0x10')]);}logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x4f6106[_0x6885('0xf')]['message']);return _0x5a6ccc(_0x4f6106['error'][_0x6885('0x10')]);}else{logger[_0x6885('0xa')](_0x6885('0xb'),_0x5901bb,_0x6885('0xc'));_0x5a6ccc(_0x4f6106['result'][_0x6885('0x10')]);}})[_0x6885('0x11')](function(_0x235d7b){logger[_0x6885('0xf')](_0x6885('0xb'),_0x5901bb,_0x235d7b);_0x232121(_0x235d7b);});});}
\ No newline at end of file
index 02e0aa2..ed88f79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef8d=['path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','isAuthenticated','get','show','post','create','put','/:id','update','destroy','multer','util'];(function(_0x17516d,_0x2efe23){var _0x47389d=function(_0x215d50){while(--_0x215d50){_0x17516d['push'](_0x17516d['shift']());}};_0x47389d(++_0x2efe23);}(_0xef8d,0x1d9));var _0xdef8=function(_0x27efcf,_0x320952){_0x27efcf=_0x27efcf-0x0;var _0xdb0237=_0xef8d[_0x27efcf];return _0xdb0237;};'use strict';var multer=require(_0xdef8('0x0'));var util=require(_0xdef8('0x1'));var path=require(_0xdef8('0x2'));var timeout=require(_0xdef8('0x3'));var express=require(_0xdef8('0x4'));var router=express[_0xdef8('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xdef8('0x6'));var interaction=require(_0xdef8('0x7'));var config=require(_0xdef8('0x8'));var controller=require(_0xdef8('0x9'));router['get']('/',auth[_0xdef8('0xa')](),controller['index']);router[_0xdef8('0xb')]('/:id',auth[_0xdef8('0xa')](),controller[_0xdef8('0xc')]);router[_0xdef8('0xd')]('/',auth[_0xdef8('0xa')](),controller[_0xdef8('0xe')]);router[_0xdef8('0xf')](_0xdef8('0x10'),auth[_0xdef8('0xa')](),controller[_0xdef8('0x11')]);router['delete'](_0xdef8('0x10'),auth[_0xdef8('0xa')](),controller[_0xdef8('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xff8a=['get','isAuthenticated','index','/:id','create','update','destroy','exports','multer','connect-timeout','express','Router','../../components/auth/service','./contactItemType.controller'];(function(_0x3f5ef6,_0x4394dc){var _0x4b36b0=function(_0x1f750f){while(--_0x1f750f){_0x3f5ef6['push'](_0x3f5ef6['shift']());}};_0x4b36b0(++_0x4394dc);}(_0xff8a,0x86));var _0xaff8=function(_0x423ab0,_0x58ac42){_0x423ab0=_0x423ab0-0x0;var _0x519d9e=_0xff8a[_0x423ab0];return _0x519d9e;};'use strict';var multer=require(_0xaff8('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xaff8('0x1'));var express=require(_0xaff8('0x2'));var router=express[_0xaff8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xaff8('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xaff8('0x5'));router[_0xaff8('0x6')]('/',auth[_0xaff8('0x7')](),controller[_0xaff8('0x8')]);router['get'](_0xaff8('0x9'),auth[_0xaff8('0x7')](),controller['show']);router['post']('/',auth[_0xaff8('0x7')](),controller[_0xaff8('0xa')]);router['put'](_0xaff8('0x9'),auth[_0xaff8('0x7')](),controller[_0xaff8('0xb')]);router['delete'](_0xaff8('0x9'),auth['isAuthenticated'](),controller[_0xaff8('0xc')]);module[_0xaff8('0xd')]=router;
\ No newline at end of file
index 797363c..593ea3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x4b9bef,_0x3dc0cb){var _0x2815ee=function(_0x4073dd){while(--_0x4073dd){_0x4b9bef['push'](_0x4b9bef['shift']());}};_0x2815ee(++_0x3dc0cb);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xe706=['STRING','sequelize','exports'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xe706,0xa3));var _0x6e70=function(_0x197a8a,_0x2f70dd){_0x197a8a=_0x197a8a-0x0;var _0x3624c0=_0xe706[_0x197a8a];return _0x3624c0;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'name':{'type':Sequelize[_0x6e70('0x2')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x6e70('0x2')]}};
\ No newline at end of file
index 7a7c1b3..207e557 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2494=['../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboard.socket','sendStatus','status','json','offset','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','get','CustomDashboards','end','error','stack','name','index','map','Dashboard','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','UserProfileResource','catch','clone','rawAttributes','omit','createdAt','updatedAt','body','role','UserProfileSection','type','attrs','https://','custom','attrPath','value','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','DashboardId','getItems','findOne','DashboardItem','order','pick','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api'];(function(_0xdef717,_0x2fda4c){var _0x2d0fe5=function(_0x5c3fa4){while(--_0x5c3fa4){_0xdef717['push'](_0xdef717['shift']());}};_0x2d0fe5(++_0x2fda4c);}(_0x2494,0x171));var _0x4249=function(_0x5e4732,_0x259177){_0x5e4732=_0x5e4732-0x0;var _0x11124a=_0x2494[_0x5e4732];return _0x11124a;};'use strict';var emlformat=require(_0x4249('0x0'));var rimraf=require(_0x4249('0x1'));var zipdir=require(_0x4249('0x2'));var jsonpatch=require(_0x4249('0x3'));var rp=require(_0x4249('0x4'));var moment=require(_0x4249('0x5'));var BPromise=require(_0x4249('0x6'));var Mustache=require(_0x4249('0x7'));var util=require('util');var path=require('path');var sox=require(_0x4249('0x8'));var csv=require(_0x4249('0x9'));var ejs=require(_0x4249('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4249('0xb'));var squel=require('squel');var crypto=require(_0x4249('0xc'));var jsforce=require(_0x4249('0xd'));var deskjs=require(_0x4249('0xe'));var toCsv=require(_0x4249('0x9'));var querystring=require('querystring');var Papa=require(_0x4249('0xf'));var Redis=require(_0x4249('0x10'));var authService=require(_0x4249('0x11'));var qs=require(_0x4249('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x4249('0x13'))(_0x4249('0x14'));var utils=require(_0x4249('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x4249('0x16'));var db=require(_0x4249('0x17'))['db'];config[_0x4249('0x18')]=_[_0x4249('0x19')](config[_0x4249('0x18')],{'host':_0x4249('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4249('0x1b'))['register'](socket);function respondWithStatusCode(_0x4f4f2c,_0x192363){_0x192363=_0x192363||0xcc;return function(_0x1c3930){if(_0x1c3930){return _0x4f4f2c[_0x4249('0x1c')](_0x192363);}return _0x4f4f2c[_0x4249('0x1d')](_0x192363)['end']();};}function respondWithResult(_0x24def5,_0x281872){_0x281872=_0x281872||0xc8;return function(_0x16bcef){if(_0x16bcef){return _0x24def5[_0x4249('0x1d')](_0x281872)[_0x4249('0x1e')](_0x16bcef);}};}function respondWithFilteredResult(_0x4d4d9b,_0x35ab26){return function(_0x3ed05f){if(_0x3ed05f){var _0x5cb400=typeof _0x35ab26[_0x4249('0x1f')]==='undefined'&&typeof _0x35ab26['limit']==='undefined';var _0x4167e5=_0x3ed05f[_0x4249('0x20')];var _0x4ee2a0=_0x5cb400?0x0:_0x35ab26[_0x4249('0x1f')];var _0xe41d66=_0x5cb400?_0x3ed05f[_0x4249('0x20')]:_0x35ab26[_0x4249('0x1f')]+_0x35ab26[_0x4249('0x21')];var _0x23808c;if(_0xe41d66>=_0x4167e5){_0xe41d66=_0x4167e5;_0x23808c=0xc8;}else{_0x23808c=0xce;}_0x4d4d9b[_0x4249('0x1d')](_0x23808c);return _0x4d4d9b[_0x4249('0x22')](_0x4249('0x23'),_0x4ee2a0+'-'+_0xe41d66+'/'+_0x4167e5)['json'](_0x3ed05f);}return null;};}function patchUpdates(_0x1511e8){return function(_0x77fdd8){try{jsonpatch[_0x4249('0x24')](_0x77fdd8,_0x1511e8,!![]);}catch(_0x3e67e2){return BPromise[_0x4249('0x25')](_0x3e67e2);}return _0x77fdd8[_0x4249('0x26')]();};}function saveUpdates(_0x1cdbcf,_0x37fd68){return function(_0x120499){if(_0x120499){return _0x120499[_0x4249('0x27')](_0x1cdbcf)[_0x4249('0x28')](function(_0x44d9f5){return _0x44d9f5;});}return null;};}function removeEntity(_0x25116c,_0x253749){return function(_0xbcd598){if(_0xbcd598){return _0xbcd598[_0x4249('0x29')]()[_0x4249('0x28')](function(){var _0x208bab=_0xbcd598[_0x4249('0x2a')]({'plain':!![]});var _0x12f445=_0x4249('0x2b');return db['UserProfileResource'][_0x4249('0x29')]({'where':{'type':_0x12f445,'resourceId':_0x208bab['id']}})[_0x4249('0x28')](function(){return _0xbcd598;});})[_0x4249('0x28')](function(){_0x25116c[_0x4249('0x1d')](0xcc)[_0x4249('0x2c')]();});}};}function handleEntityNotFound(_0x268839,_0x36a245){return function(_0x3fff4f){if(!_0x3fff4f){_0x268839[_0x4249('0x1c')](0x194);}return _0x3fff4f;};}function handleError(_0x193607,_0x50d7eb){_0x50d7eb=_0x50d7eb||0x1f4;return function(_0x5eea05){logger[_0x4249('0x2d')](_0x5eea05[_0x4249('0x2e')]);if(_0x5eea05[_0x4249('0x2f')]){delete _0x5eea05['name'];}_0x193607[_0x4249('0x1d')](_0x50d7eb)['send'](_0x5eea05);};}exports[_0x4249('0x30')]=function(_0x513407,_0xf50374){var _0x1c1810={},_0xe3d517={},_0x162107={'count':0x0,'rows':[]};var _0x1bb828=_[_0x4249('0x31')](db[_0x4249('0x32')]['rawAttributes'],function(_0x4a64ed){return{'name':_0x4a64ed[_0x4249('0x33')],'type':_0x4a64ed['type'][_0x4249('0x34')]};});_0xe3d517['model']=_['map'](_0x1bb828,'name');_0xe3d517[_0x4249('0x35')]=_[_0x4249('0x36')](_0x513407['query']);_0xe3d517[_0x4249('0x37')]=_[_0x4249('0x38')](_0xe3d517[_0x4249('0x39')],_0xe3d517[_0x4249('0x35')]);_0x1c1810[_0x4249('0x3a')]=_[_0x4249('0x38')](_0xe3d517['model'],qs[_0x4249('0x3b')](_0x513407['query'][_0x4249('0x3b')]));_0x1c1810[_0x4249('0x3a')]=_0x1c1810[_0x4249('0x3a')][_0x4249('0x3c')]?_0x1c1810[_0x4249('0x3a')]:_0xe3d517['model'];if(!_0x513407[_0x4249('0x35')][_0x4249('0x3d')](_0x4249('0x3e'))){_0x1c1810['limit']=qs[_0x4249('0x21')](_0x513407[_0x4249('0x35')]['limit']);_0x1c1810[_0x4249('0x1f')]=qs['offset'](_0x513407[_0x4249('0x35')][_0x4249('0x1f')]);}_0x1c1810['order']=qs[_0x4249('0x3f')](_0x513407[_0x4249('0x35')][_0x4249('0x3f')]);_0x1c1810[_0x4249('0x40')]=qs['filters'](_['pick'](_0x513407[_0x4249('0x35')],_0xe3d517['filters']),_0x1bb828);if(_0x513407[_0x4249('0x35')][_0x4249('0x41')]){_0x1c1810[_0x4249('0x40')]=_[_0x4249('0x42')](_0x1c1810[_0x4249('0x40')],{'$or':_['map'](_0x1bb828,function(_0x5d4360){if(_0x5d4360['type']!==_0x4249('0x43')){var _0x507234={};_0x507234[_0x5d4360[_0x4249('0x2f')]]={'$like':'%'+_0x513407['query']['filter']+'%'};return _0x507234;}})});}_0x1c1810=_[_0x4249('0x42')]({},_0x1c1810,_0x513407[_0x4249('0x44')]);var _0x11c133={'where':_0x1c1810[_0x4249('0x40')]};return db['Dashboard']['count'](_0x11c133)[_0x4249('0x28')](function(_0x463a73){_0x162107['count']=_0x463a73;if(_0x513407[_0x4249('0x35')][_0x4249('0x45')]){_0x1c1810[_0x4249('0x46')]=[{'all':!![]}];}return db['Dashboard'][_0x4249('0x47')](_0x1c1810);})['then'](function(_0x2673eb){_0x162107[_0x4249('0x48')]=_0x2673eb;return _0x162107;})[_0x4249('0x28')](respondWithFilteredResult(_0xf50374,_0x1c1810))['catch'](handleError(_0xf50374,null));};exports[_0x4249('0x49')]=function(_0x571ec0,_0x3749b1){var _0x47f396={'raw':![],'where':{'id':_0x571ec0[_0x4249('0x4a')]['id']}},_0x3f47bf={};_0x3f47bf['model']=_[_0x4249('0x36')](db[_0x4249('0x32')]['rawAttributes']);_0x3f47bf[_0x4249('0x35')]=_['keys'](_0x571ec0[_0x4249('0x35')]);_0x3f47bf['filters']=_[_0x4249('0x38')](_0x3f47bf['model'],_0x3f47bf[_0x4249('0x35')]);_0x47f396[_0x4249('0x3a')]=_['intersection'](_0x3f47bf['model'],qs[_0x4249('0x3b')](_0x571ec0['query'][_0x4249('0x3b')]));_0x47f396[_0x4249('0x3a')]=_0x47f396['attributes'][_0x4249('0x3c')]?_0x47f396[_0x4249('0x3a')]:_0x3f47bf[_0x4249('0x39')];if(_0x571ec0[_0x4249('0x35')][_0x4249('0x45')]){_0x47f396[_0x4249('0x46')]=[{'all':!![]}];}_0x47f396=_[_0x4249('0x42')]({},_0x47f396,_0x571ec0['options']);return db[_0x4249('0x32')][_0x4249('0x4b')](_0x47f396)[_0x4249('0x28')](handleEntityNotFound(_0x3749b1,null))[_0x4249('0x28')](respondWithResult(_0x3749b1,null))['catch'](handleError(_0x3749b1,null));};exports[_0x4249('0x4c')]=function(_0x12ec7e,_0x2c7465){return db[_0x4249('0x32')][_0x4249('0x4c')](_0x12ec7e['body'],{})[_0x4249('0x28')](function(_0x34bca0){var _0x31ad98=_0x12ec7e[_0x4249('0x4d')]['get']({'plain':!![]});if(!_0x31ad98)throw new Error(_0x4249('0x4e'));if(_0x31ad98['role']===_0x4249('0x4d')){var _0x3fb34e=_0x34bca0[_0x4249('0x2a')]({'plain':!![]});var _0x5a7444=_0x4249('0x2b');return db['UserProfileSection'][_0x4249('0x4b')]({'where':{'name':_0x5a7444,'userProfileId':_0x31ad98[_0x4249('0x4f')]},'raw':!![]})[_0x4249('0x28')](function(_0x33a5d4){if(_0x33a5d4&&_0x33a5d4[_0x4249('0x50')]===0x0){return db[_0x4249('0x51')]['create']({'name':_0x3fb34e['name'],'resourceId':_0x3fb34e['id'],'type':_0x33a5d4[_0x4249('0x2f')],'sectionId':_0x33a5d4['id']},{})['then'](function(){return _0x34bca0;});}else{return _0x34bca0;}})[_0x4249('0x52')](function(_0x5a8897){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a8897);throw _0x5a8897;});}return _0x34bca0;})[_0x4249('0x28')](respondWithResult(_0x2c7465,0xc9))['catch'](handleError(_0x2c7465,null));};exports[_0x4249('0x53')]=function(_0x2efef9,_0x672cc2){var _0x742b52={'where':{'id':_0x2efef9['params']['id']}},_0xca53a3={};_0xca53a3['model']=_['keys'](db[_0x4249('0x32')][_0x4249('0x54')]);_0x742b52[_0x4249('0x3a')]=_[_0x4249('0x38')](_0xca53a3[_0x4249('0x39')],qs[_0x4249('0x3b')](_0x2efef9['query'][_0x4249('0x3b')]));_0x742b52['attributes']=_0x742b52[_0x4249('0x3a')][_0x4249('0x3c')]?_0x742b52[_0x4249('0x3a')]:_0xca53a3['model'];if(_0x2efef9[_0x4249('0x35')][_0x4249('0x45')]){_0x742b52[_0x4249('0x46')]=[{'all':!![]}];}_0x742b52=_[_0x4249('0x42')]({},_0x742b52,_0x2efef9['options']);return db['Dashboard'][_0x4249('0x4b')](_0x742b52)['then'](handleEntityNotFound(_0x672cc2,null))[_0x4249('0x28')](function(_0x5994fb){if(_0x5994fb){var _0x53f58a=_0x5994fb[_0x4249('0x2a')]({'plain':!![]});_0x53f58a=qs[_0x4249('0x55')](_0x53f58a,['id',_0x4249('0x56'),_0x4249('0x57')]);_0x2efef9['body']=_[_0x4249('0x55')](_0x2efef9['body'],['id',_0x4249('0x56'),_0x4249('0x57')]);return db[_0x4249('0x32')][_0x4249('0x4c')](_['merge'](_0x53f58a,_0x2efef9[_0x4249('0x58')]),{'include':_0x2efef9[_0x4249('0x35')][_0x4249('0x45')]?[{'all':!![]}]:undefined})[_0x4249('0x28')](function(_0x4aa224){var _0x5b785b=_0x2efef9['user'][_0x4249('0x2a')]({'plain':!![]});if(!_0x5b785b)throw new Error(_0x4249('0x4e'));if(_0x5b785b[_0x4249('0x59')]===_0x4249('0x4d')){var _0x24d9ad=_0x4aa224[_0x4249('0x2a')]({'plain':!![]});var _0xc48a7c=_0x4249('0x2b');return db[_0x4249('0x5a')][_0x4249('0x4b')]({'where':{'name':_0xc48a7c,'userProfileId':_0x5b785b[_0x4249('0x4f')]},'raw':!![]})['then'](function(_0x3699b7){if(_0x3699b7&&_0x3699b7[_0x4249('0x50')]===0x0){return db[_0x4249('0x51')]['create']({'name':_0x24d9ad[_0x4249('0x2f')],'resourceId':_0x24d9ad['id'],'type':_0x3699b7[_0x4249('0x2f')],'sectionId':_0x3699b7['id']},{})['then'](function(){return _0x4aa224;});}else{return _0x4aa224;}})['catch'](function(_0x509108){logger[_0x4249('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x509108);throw _0x509108;});}return _0x4aa224;});}})[_0x4249('0x28')](respondWithResult(_0x672cc2,0xc9))[_0x4249('0x52')](handleError(_0x672cc2,null));};exports[_0x4249('0x27')]=function(_0xe4540e,_0x2031c1){if(_0xe4540e[_0x4249('0x58')]['id']){delete _0xe4540e[_0x4249('0x58')]['id'];}return db[_0x4249('0x32')][_0x4249('0x4b')]({'where':{'id':_0xe4540e[_0x4249('0x4a')]['id']}})[_0x4249('0x28')](handleEntityNotFound(_0x2031c1,null))[_0x4249('0x28')](saveUpdates(_0xe4540e['body'],null))[_0x4249('0x28')](respondWithResult(_0x2031c1,null))[_0x4249('0x52')](handleError(_0x2031c1,null));};exports['destroy']=function(_0x598435,_0x5efcd2){return db[_0x4249('0x32')]['find']({'where':{'id':_0x598435['params']['id']}})[_0x4249('0x28')](handleEntityNotFound(_0x5efcd2,null))[_0x4249('0x28')](removeEntity(_0x5efcd2,null))['catch'](handleError(_0x5efcd2,null));};function widgetAttributes(_0x249d0d){try{switch(_0x249d0d[_0x4249('0x5b')]){case'iframe':return[{'name':'attrUrl','value':_0x249d0d['attrUrl']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d['attrs'][0x0]['value']:undefined)||_0x4249('0x5d')}];case _0x4249('0x5e'):return[{'name':_0x4249('0x5f'),'value':_0x249d0d[_0x4249('0x5f')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d[_0x4249('0x5c')][0x0][_0x4249('0x60')]:undefined)||''}];case _0x4249('0x61'):return[{'name':_0x4249('0x62'),'value':_0x249d0d[_0x4249('0x62')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x0]?_0x249d0d[_0x4249('0x5c')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0x4249('0x63'),'value':_0x249d0d[_0x4249('0x63')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x1]?_0x249d0d[_0x4249('0x5c')][0x1][_0x4249('0x60')]:undefined)||_0x4249('0x64')},{'name':_0x4249('0x65'),'value':_0x249d0d[_0x4249('0x65')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x2]?_0x249d0d['attrs'][0x2][_0x4249('0x60')]:undefined)||0xc}];case _0x4249('0x66'):return[{'name':'attrMetric','value':_0x249d0d[_0x4249('0x67')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d[_0x4249('0x5c')][0x0][_0x4249('0x60')]:undefined)||_0x4249('0x68')},{'name':'attrVoiceQueues','value':_0x249d0d[_0x4249('0x69')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x1]?_0x249d0d[_0x4249('0x5c')][0x1][_0x4249('0x60')]:undefined)||[]},{'name':_0x4249('0x65'),'value':_0x249d0d[_0x4249('0x65')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x2]?_0x249d0d[_0x4249('0x5c')][0x2][_0x4249('0x60')]:undefined)||0x14},{'name':'attrChannel','value':_0x249d0d[_0x4249('0x6a')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x3]?_0x249d0d[_0x4249('0x5c')][0x3][_0x4249('0x60')]:undefined)||_0x4249('0x6b')},{'name':_0x4249('0x6c'),'value':_0x249d0d[_0x4249('0x6c')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x4]?_0x249d0d[_0x4249('0x5c')][0x4]['value']:undefined)||''},{'name':_0x4249('0x6d'),'value':_0x249d0d[_0x4249('0x6d')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x5]?_0x249d0d[_0x4249('0x5c')][0x5][_0x4249('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x249d0d[_0x4249('0x6e')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x6]?_0x249d0d[_0x4249('0x5c')][0x6][_0x4249('0x60')]:undefined)||''},{'name':_0x4249('0x6f'),'value':_0x249d0d['attrOpenchannelAccounts']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x7]?_0x249d0d[_0x4249('0x5c')][0x7]['value']:undefined)||''},{'name':_0x4249('0x70'),'value':_0x249d0d[_0x4249('0x70')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x8]?_0x249d0d[_0x4249('0x5c')][0x8][_0x4249('0x60')]:undefined)||''},{'name':_0x4249('0x71'),'value':_0x249d0d['attrChatWebsites']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x9]?_0x249d0d[_0x4249('0x5c')][0x9]['value']:undefined)||''}];case _0x4249('0x72'):case _0x4249('0x73'):return[{'name':_0x4249('0x74'),'value':_0x249d0d[_0x4249('0x74')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d[_0x4249('0x5c')][0x0][_0x4249('0x60')]:undefined)||'total'},{'name':'attrSerie2','value':_0x249d0d[_0x4249('0x75')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x1]?_0x249d0d['attrs'][0x1]['value']:undefined)||null},{'name':_0x4249('0x76'),'value':_0x249d0d[_0x4249('0x76')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x2]?_0x249d0d[_0x4249('0x5c')][0x2][_0x4249('0x60')]:undefined)||null},{'name':_0x4249('0x69'),'value':_0x249d0d['attrVoiceQueues']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x3]?_0x249d0d[_0x4249('0x5c')][0x3][_0x4249('0x60')]:undefined)||[]},{'name':_0x4249('0x6a'),'value':_0x249d0d['attrChannel']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x4]?_0x249d0d['attrs'][0x4][_0x4249('0x60')]:undefined)||_0x4249('0x6b')},{'name':_0x4249('0x6c'),'value':_0x249d0d['attrEmailAccounts']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x5]?_0x249d0d[_0x4249('0x5c')][0x5]['value']:undefined)||''},{'name':_0x4249('0x6d'),'value':_0x249d0d[_0x4249('0x6d')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x6]?_0x249d0d[_0x4249('0x5c')][0x6][_0x4249('0x60')]:undefined)||''},{'name':_0x4249('0x6e'),'value':_0x249d0d[_0x4249('0x6e')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x7]?_0x249d0d[_0x4249('0x5c')][0x7][_0x4249('0x60')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x249d0d[_0x4249('0x6f')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d['attrs'][0x8]?_0x249d0d[_0x4249('0x5c')][0x8][_0x4249('0x60')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x249d0d['attrWhatsappAccounts']||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x9]?_0x249d0d[_0x4249('0x5c')][0x9][_0x4249('0x60')]:undefined)||''},{'name':_0x4249('0x71'),'value':_0x249d0d[_0x4249('0x71')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0xa]?_0x249d0d[_0x4249('0x5c')][0xa]['value']:undefined)||''}];case _0x4249('0x77'):return[{'name':_0x4249('0x78'),'type':_0x249d0d[_0x4249('0x79')]||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d[_0x4249('0x5c')][0x0][_0x4249('0x5b')]:undefined)||null,'value':_0x249d0d['attrReport']||(_0x249d0d[_0x4249('0x5c')]&&_0x249d0d[_0x4249('0x5c')][0x0]?_0x249d0d[_0x4249('0x5c')][0x0][_0x4249('0x60')]:undefined)||null},{'name':'attrRefresh','value':_0x249d0d[_0x4249('0x7a')]||(_0x249d0d['attrs']&&_0x249d0d[_0x4249('0x5c')][0x1]?_0x249d0d[_0x4249('0x5c')][0x1][_0x4249('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x2ceb4c){logger[_0x4249('0x2d')](_0x4249('0x7b'),JSON['stringify'](_0x2ceb4c));return[];}}exports['addItem']=function(_0x4a1311,_0x45b251,_0x857052){if(_0x4a1311[_0x4249('0x58')]['id']){delete _0x4a1311['body']['id'];}return db[_0x4249('0x32')][_0x4249('0x4b')]({'where':{'id':_0x4a1311[_0x4249('0x4a')]['id']}})[_0x4249('0x28')](handleEntityNotFound(_0x45b251,null))[_0x4249('0x28')](function(_0x10ba4c){if(_0x10ba4c){_0x4a1311['body'][_0x4249('0x7c')]=_0x10ba4c['id'];_0x4a1311[_0x4249('0x58')][_0x4249('0x5c')]=widgetAttributes(_0x4a1311[_0x4249('0x58')]);return db['DashboardItem']['create'](_0x4a1311[_0x4249('0x58')]);}})[_0x4249('0x28')](respondWithResult(_0x45b251,null))[_0x4249('0x52')](handleError(_0x45b251,null));};exports[_0x4249('0x7d')]=function(_0x465b0d,_0x403e19,_0x4a9775){var _0x2445af={};var _0x49fc00={};var _0x3e7bce;var _0x31401e;return db[_0x4249('0x32')][_0x4249('0x7e')]({'where':{'id':_0x465b0d['params']['id']}})['then'](handleEntityNotFound(_0x403e19,null))[_0x4249('0x28')](function(_0x1702c9){if(_0x1702c9){_0x3e7bce=_0x1702c9;_0x49fc00[_0x4249('0x39')]=_[_0x4249('0x36')](db[_0x4249('0x7f')][_0x4249('0x54')]);_0x49fc00[_0x4249('0x35')]=_['keys'](_0x465b0d['query']);_0x49fc00[_0x4249('0x37')]=_[_0x4249('0x38')](_0x49fc00[_0x4249('0x39')],_0x49fc00[_0x4249('0x35')]);_0x2445af[_0x4249('0x3a')]=_[_0x4249('0x38')](_0x49fc00[_0x4249('0x39')],qs[_0x4249('0x3b')](_0x465b0d[_0x4249('0x35')][_0x4249('0x3b')]));_0x2445af[_0x4249('0x3a')]=_0x2445af['attributes'][_0x4249('0x3c')]?_0x2445af[_0x4249('0x3a')]:_0x49fc00['model'];_0x2445af[_0x4249('0x80')]=qs['sort'](_0x465b0d[_0x4249('0x35')][_0x4249('0x3f')]);_0x2445af[_0x4249('0x40')]=qs[_0x4249('0x37')](_[_0x4249('0x81')](_0x465b0d['query'],_0x49fc00['filters']));if(_0x465b0d[_0x4249('0x35')][_0x4249('0x41')]){_0x2445af['where']=_[_0x4249('0x42')](_0x2445af[_0x4249('0x40')],{'$or':_[_0x4249('0x31')](_0x2445af[_0x4249('0x3a')],function(_0x4e6c52){var _0xb1803c={};_0xb1803c[_0x4e6c52]={'$like':'%'+_0x465b0d[_0x4249('0x35')]['filter']+'%'};return _0xb1803c;})});}_0x2445af=_[_0x4249('0x42')]({},_0x2445af,_0x465b0d[_0x4249('0x44')]);return _0x3e7bce[_0x4249('0x7d')](_0x2445af);}})[_0x4249('0x28')](function(_0x3ab047){if(_0x3ab047){_0x31401e=_0x3ab047['length'];if(!_0x465b0d[_0x4249('0x35')][_0x4249('0x3d')]('nolimit')){_0x2445af[_0x4249('0x21')]=qs['limit'](_0x465b0d[_0x4249('0x35')][_0x4249('0x21')]);_0x2445af[_0x4249('0x1f')]=qs[_0x4249('0x1f')](_0x465b0d[_0x4249('0x35')][_0x4249('0x1f')]);}return _0x3e7bce['getItems'](_0x2445af);}})['then'](function(_0xec928c){if(_0xec928c){return _0xec928c?{'count':_0x31401e,'rows':_0xec928c}:null;}})['then'](respondWithResult(_0x403e19,null))[_0x4249('0x52')](handleError(_0x403e19,null));};
\ No newline at end of file
+var _0xc3fe=['keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','show','params','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','updatedAt','createdAt','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','addItem','DashboardId','DashboardItem','getItems','findOne','nolimit','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','update','then','destroy','get','CustomDashboards','UserProfileResource','error','stack','name','send','index','map','Dashboard','rawAttributes','fieldName','key','query'];(function(_0x4a02bf,_0x19ec55){var _0x57f0f4=function(_0x20a74c){while(--_0x20a74c){_0x4a02bf['push'](_0x4a02bf['shift']());}};_0x57f0f4(++_0x19ec55);}(_0xc3fe,0x155));var _0xec3f=function(_0x5702da,_0x2c574f){_0x5702da=_0x5702da-0x0;var _0x20c67e=_0xc3fe[_0x5702da];return _0x20c67e;};'use strict';var emlformat=require(_0xec3f('0x0'));var rimraf=require(_0xec3f('0x1'));var zipdir=require(_0xec3f('0x2'));var jsonpatch=require(_0xec3f('0x3'));var rp=require('request-promise');var moment=require(_0xec3f('0x4'));var BPromise=require(_0xec3f('0x5'));var Mustache=require(_0xec3f('0x6'));var util=require(_0xec3f('0x7'));var path=require(_0xec3f('0x8'));var sox=require(_0xec3f('0x9'));var csv=require(_0xec3f('0xa'));var ejs=require(_0xec3f('0xb'));var fs=require('fs');var fs_extra=require(_0xec3f('0xc'));var _=require(_0xec3f('0xd'));var squel=require(_0xec3f('0xe'));var crypto=require(_0xec3f('0xf'));var jsforce=require(_0xec3f('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xec3f('0xa'));var querystring=require(_0xec3f('0x11'));var Papa=require('papaparse');var Redis=require(_0xec3f('0x12'));var authService=require(_0xec3f('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xec3f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xec3f('0x15'));var utils=require(_0xec3f('0x16'));var config=require(_0xec3f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xec3f('0x18'))['db'];config[_0xec3f('0x19')]=_[_0xec3f('0x1a')](config[_0xec3f('0x19')],{'host':_0xec3f('0x1b'),'port':0x18eb});var socket=require(_0xec3f('0x1c'))(new Redis(config[_0xec3f('0x19')]));require(_0xec3f('0x1d'))[_0xec3f('0x1e')](socket);function respondWithStatusCode(_0x5ed450,_0x21a051){_0x21a051=_0x21a051||0xcc;return function(_0x509d28){if(_0x509d28){return _0x5ed450[_0xec3f('0x1f')](_0x21a051);}return _0x5ed450[_0xec3f('0x20')](_0x21a051)[_0xec3f('0x21')]();};}function respondWithResult(_0x29b160,_0x496b86){_0x496b86=_0x496b86||0xc8;return function(_0xbd9ee5){if(_0xbd9ee5){return _0x29b160['status'](_0x496b86)[_0xec3f('0x22')](_0xbd9ee5);}};}function respondWithFilteredResult(_0x586cb6,_0x5e9e80){return function(_0x2454cb){if(_0x2454cb){var _0x1e3c39=typeof _0x5e9e80[_0xec3f('0x23')]==='undefined'&&typeof _0x5e9e80['limit']===_0xec3f('0x24');var _0x4b847e=_0x2454cb['count'];var _0x115bcc=_0x1e3c39?0x0:_0x5e9e80[_0xec3f('0x23')];var _0x591899=_0x1e3c39?_0x2454cb[_0xec3f('0x25')]:_0x5e9e80[_0xec3f('0x23')]+_0x5e9e80['limit'];var _0x58b791;if(_0x591899>=_0x4b847e){_0x591899=_0x4b847e;_0x58b791=0xc8;}else{_0x58b791=0xce;}_0x586cb6[_0xec3f('0x20')](_0x58b791);return _0x586cb6[_0xec3f('0x26')](_0xec3f('0x27'),_0x115bcc+'-'+_0x591899+'/'+_0x4b847e)[_0xec3f('0x22')](_0x2454cb);}return null;};}function patchUpdates(_0x967b47){return function(_0x4f1d9d){try{jsonpatch['apply'](_0x4f1d9d,_0x967b47,!![]);}catch(_0x3c5417){return BPromise[_0xec3f('0x28')](_0x3c5417);}return _0x4f1d9d['save']();};}function saveUpdates(_0x41adb6,_0x151da6){return function(_0x1f3403){if(_0x1f3403){return _0x1f3403[_0xec3f('0x29')](_0x41adb6)[_0xec3f('0x2a')](function(_0x80be47){return _0x80be47;});}return null;};}function removeEntity(_0x1d0362,_0x267361){return function(_0x276487){if(_0x276487){return _0x276487[_0xec3f('0x2b')]()[_0xec3f('0x2a')](function(){var _0x41799d=_0x276487[_0xec3f('0x2c')]({'plain':!![]});var _0x332284=_0xec3f('0x2d');return db[_0xec3f('0x2e')][_0xec3f('0x2b')]({'where':{'type':_0x332284,'resourceId':_0x41799d['id']}})[_0xec3f('0x2a')](function(){return _0x276487;});})[_0xec3f('0x2a')](function(){_0x1d0362['status'](0xcc)[_0xec3f('0x21')]();});}};}function handleEntityNotFound(_0x9fc85,_0x3767b7){return function(_0x3936b6){if(!_0x3936b6){_0x9fc85[_0xec3f('0x1f')](0x194);}return _0x3936b6;};}function handleError(_0xf089f5,_0x2f670f){_0x2f670f=_0x2f670f||0x1f4;return function(_0x5da586){logger[_0xec3f('0x2f')](_0x5da586[_0xec3f('0x30')]);if(_0x5da586[_0xec3f('0x31')]){delete _0x5da586['name'];}_0xf089f5[_0xec3f('0x20')](_0x2f670f)[_0xec3f('0x32')](_0x5da586);};}exports[_0xec3f('0x33')]=function(_0x4d7044,_0x5558e9){var _0xc6dd83={},_0x3974eb={},_0x580e64={'count':0x0,'rows':[]};var _0x148336=_[_0xec3f('0x34')](db[_0xec3f('0x35')][_0xec3f('0x36')],function(_0x501d04){return{'name':_0x501d04[_0xec3f('0x37')],'type':_0x501d04['type'][_0xec3f('0x38')]};});_0x3974eb['model']=_[_0xec3f('0x34')](_0x148336,_0xec3f('0x31'));_0x3974eb[_0xec3f('0x39')]=_[_0xec3f('0x3a')](_0x4d7044[_0xec3f('0x39')]);_0x3974eb[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x3974eb[_0xec3f('0x3d')],_0x3974eb[_0xec3f('0x39')]);_0xc6dd83[_0xec3f('0x3e')]=_['intersection'](_0x3974eb['model'],qs['fields'](_0x4d7044[_0xec3f('0x39')][_0xec3f('0x3f')]));_0xc6dd83[_0xec3f('0x3e')]=_0xc6dd83[_0xec3f('0x3e')][_0xec3f('0x40')]?_0xc6dd83[_0xec3f('0x3e')]:_0x3974eb[_0xec3f('0x3d')];if(!_0x4d7044[_0xec3f('0x39')][_0xec3f('0x41')]('nolimit')){_0xc6dd83[_0xec3f('0x42')]=qs[_0xec3f('0x42')](_0x4d7044['query'][_0xec3f('0x42')]);_0xc6dd83['offset']=qs[_0xec3f('0x23')](_0x4d7044[_0xec3f('0x39')]['offset']);}_0xc6dd83[_0xec3f('0x43')]=qs[_0xec3f('0x44')](_0x4d7044['query'][_0xec3f('0x44')]);_0xc6dd83[_0xec3f('0x45')]=qs[_0xec3f('0x3b')](_[_0xec3f('0x46')](_0x4d7044[_0xec3f('0x39')],_0x3974eb['filters']),_0x148336);if(_0x4d7044['query'][_0xec3f('0x47')]){_0xc6dd83[_0xec3f('0x45')]=_['merge'](_0xc6dd83[_0xec3f('0x45')],{'$or':_[_0xec3f('0x34')](_0x148336,function(_0x1dca2d){if(_0x1dca2d[_0xec3f('0x48')]!==_0xec3f('0x49')){var _0x3a6620={};_0x3a6620[_0x1dca2d['name']]={'$like':'%'+_0x4d7044[_0xec3f('0x39')][_0xec3f('0x47')]+'%'};return _0x3a6620;}})});}_0xc6dd83=_[_0xec3f('0x4a')]({},_0xc6dd83,_0x4d7044[_0xec3f('0x4b')]);var _0x2da9c2={'where':_0xc6dd83[_0xec3f('0x45')]};return db[_0xec3f('0x35')]['count'](_0x2da9c2)['then'](function(_0x333327){_0x580e64[_0xec3f('0x25')]=_0x333327;if(_0x4d7044[_0xec3f('0x39')][_0xec3f('0x4c')]){_0xc6dd83[_0xec3f('0x4d')]=[{'all':!![]}];}return db[_0xec3f('0x35')][_0xec3f('0x4e')](_0xc6dd83);})[_0xec3f('0x2a')](function(_0x56fe8e){_0x580e64['rows']=_0x56fe8e;return _0x580e64;})['then'](respondWithFilteredResult(_0x5558e9,_0xc6dd83))['catch'](handleError(_0x5558e9,null));};exports[_0xec3f('0x4f')]=function(_0x483251,_0x5af5f7){var _0x48e517={'raw':![],'where':{'id':_0x483251[_0xec3f('0x50')]['id']}},_0x38f5dc={};_0x38f5dc[_0xec3f('0x3d')]=_['keys'](db['Dashboard'][_0xec3f('0x36')]);_0x38f5dc['query']=_[_0xec3f('0x3a')](_0x483251[_0xec3f('0x39')]);_0x38f5dc[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x38f5dc[_0xec3f('0x3d')],_0x38f5dc[_0xec3f('0x39')]);_0x48e517[_0xec3f('0x3e')]=_[_0xec3f('0x3c')](_0x38f5dc['model'],qs[_0xec3f('0x3f')](_0x483251[_0xec3f('0x39')][_0xec3f('0x3f')]));_0x48e517[_0xec3f('0x3e')]=_0x48e517[_0xec3f('0x3e')][_0xec3f('0x40')]?_0x48e517[_0xec3f('0x3e')]:_0x38f5dc['model'];if(_0x483251[_0xec3f('0x39')]['includeAll']){_0x48e517[_0xec3f('0x4d')]=[{'all':!![]}];}_0x48e517=_[_0xec3f('0x4a')]({},_0x48e517,_0x483251['options']);return db[_0xec3f('0x35')][_0xec3f('0x51')](_0x48e517)['then'](handleEntityNotFound(_0x5af5f7,null))[_0xec3f('0x2a')](respondWithResult(_0x5af5f7,null))[_0xec3f('0x52')](handleError(_0x5af5f7,null));};exports[_0xec3f('0x53')]=function(_0x67eaec,_0x2c606b){return db[_0xec3f('0x35')][_0xec3f('0x53')](_0x67eaec[_0xec3f('0x54')],{})['then'](function(_0x3e7e4c){var _0x1c6c9b=_0x67eaec[_0xec3f('0x55')][_0xec3f('0x2c')]({'plain':!![]});if(!_0x1c6c9b)throw new Error(_0xec3f('0x56'));if(_0x1c6c9b[_0xec3f('0x57')]===_0xec3f('0x55')){var _0x439bb5=_0x3e7e4c['get']({'plain':!![]});var _0x5567e0=_0xec3f('0x2d');return db[_0xec3f('0x58')][_0xec3f('0x51')]({'where':{'name':_0x5567e0,'userProfileId':_0x1c6c9b[_0xec3f('0x59')]},'raw':!![]})['then'](function(_0x2c7260){if(_0x2c7260&&_0x2c7260[_0xec3f('0x5a')]===0x0){return db[_0xec3f('0x2e')][_0xec3f('0x53')]({'name':_0x439bb5[_0xec3f('0x31')],'resourceId':_0x439bb5['id'],'type':_0x2c7260[_0xec3f('0x31')],'sectionId':_0x2c7260['id']},{})[_0xec3f('0x2a')](function(){return _0x3e7e4c;});}else{return _0x3e7e4c;}})['catch'](function(_0x1ffd3c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ffd3c);throw _0x1ffd3c;});}return _0x3e7e4c;})[_0xec3f('0x2a')](respondWithResult(_0x2c606b,0xc9))[_0xec3f('0x52')](handleError(_0x2c606b,null));};exports['clone']=function(_0x59dc9a,_0x28b649){var _0x253fba={'where':{'id':_0x59dc9a['params']['id']}},_0x16d58e={};_0x16d58e[_0xec3f('0x3d')]=_['keys'](db['Dashboard'][_0xec3f('0x36')]);_0x253fba[_0xec3f('0x3e')]=_[_0xec3f('0x3c')](_0x16d58e[_0xec3f('0x3d')],qs[_0xec3f('0x3f')](_0x59dc9a['query'][_0xec3f('0x3f')]));_0x253fba[_0xec3f('0x3e')]=_0x253fba[_0xec3f('0x3e')]['length']?_0x253fba[_0xec3f('0x3e')]:_0x16d58e[_0xec3f('0x3d')];if(_0x59dc9a[_0xec3f('0x39')]['includeAll']){_0x253fba[_0xec3f('0x4d')]=[{'all':!![]}];}_0x253fba=_[_0xec3f('0x4a')]({},_0x253fba,_0x59dc9a[_0xec3f('0x4b')]);return db[_0xec3f('0x35')][_0xec3f('0x51')](_0x253fba)[_0xec3f('0x2a')](handleEntityNotFound(_0x28b649,null))['then'](function(_0x41c0d4){if(_0x41c0d4){var _0x4b7f0c=_0x41c0d4[_0xec3f('0x2c')]({'plain':!![]});_0x4b7f0c=qs['omit'](_0x4b7f0c,['id','createdAt',_0xec3f('0x5b')]);_0x59dc9a[_0xec3f('0x54')]=_['omit'](_0x59dc9a['body'],['id',_0xec3f('0x5c'),_0xec3f('0x5b')]);return db[_0xec3f('0x35')][_0xec3f('0x53')](_[_0xec3f('0x4a')](_0x4b7f0c,_0x59dc9a[_0xec3f('0x54')]),{'include':_0x59dc9a['query'][_0xec3f('0x4c')]?[{'all':!![]}]:undefined})[_0xec3f('0x2a')](function(_0xa9b532){var _0x30d784=_0x59dc9a[_0xec3f('0x55')][_0xec3f('0x2c')]({'plain':!![]});if(!_0x30d784)throw new Error(_0xec3f('0x56'));if(_0x30d784[_0xec3f('0x57')]==='user'){var _0x40a510=_0xa9b532['get']({'plain':!![]});var _0x403afa=_0xec3f('0x2d');return db[_0xec3f('0x58')][_0xec3f('0x51')]({'where':{'name':_0x403afa,'userProfileId':_0x30d784['userProfileId']},'raw':!![]})[_0xec3f('0x2a')](function(_0x5b2369){if(_0x5b2369&&_0x5b2369['autoAssociation']===0x0){return db[_0xec3f('0x2e')][_0xec3f('0x53')]({'name':_0x40a510['name'],'resourceId':_0x40a510['id'],'type':_0x5b2369['name'],'sectionId':_0x5b2369['id']},{})['then'](function(){return _0xa9b532;});}else{return _0xa9b532;}})[_0xec3f('0x52')](function(_0x45f70b){logger[_0xec3f('0x2f')](_0xec3f('0x5d'),_0x45f70b);throw _0x45f70b;});}return _0xa9b532;});}})['then'](respondWithResult(_0x28b649,0xc9))[_0xec3f('0x52')](handleError(_0x28b649,null));};exports[_0xec3f('0x29')]=function(_0x1fc990,_0x148da4){if(_0x1fc990[_0xec3f('0x54')]['id']){delete _0x1fc990[_0xec3f('0x54')]['id'];}return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x1fc990[_0xec3f('0x50')]['id']}})['then'](handleEntityNotFound(_0x148da4,null))[_0xec3f('0x2a')](saveUpdates(_0x1fc990[_0xec3f('0x54')],null))[_0xec3f('0x2a')](respondWithResult(_0x148da4,null))['catch'](handleError(_0x148da4,null));};exports['destroy']=function(_0x30222b,_0x219fb6){return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x30222b['params']['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x219fb6,null))[_0xec3f('0x2a')](removeEntity(_0x219fb6,null))[_0xec3f('0x52')](handleError(_0x219fb6,null));};function widgetAttributes(_0x57b98a){try{switch(_0x57b98a[_0xec3f('0x48')]){case'iframe':return[{'name':_0xec3f('0x5e'),'value':_0x57b98a[_0xec3f('0x5e')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x61')}];case'custom':return[{'name':_0xec3f('0x62'),'value':_0x57b98a[_0xec3f('0x62')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x63'):return[{'name':'attrHourFormat','value':_0x57b98a[_0xec3f('0x64')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0]['value']:undefined)||'HH:mm:ss'},{'name':_0xec3f('0x65'),'value':_0x57b98a[_0xec3f('0x65')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||_0xec3f('0x66')},{'name':_0xec3f('0x67'),'value':_0x57b98a['attrFontSize']||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a['attrs'][0x2][_0xec3f('0x60')]:undefined)||0xc}];case _0xec3f('0x68'):return[{'name':_0xec3f('0x69'),'value':_0x57b98a[_0xec3f('0x69')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x6a')},{'name':'attrVoiceQueues','value':_0x57b98a[_0xec3f('0x6b')]||(_0x57b98a['attrs']&&_0x57b98a['attrs'][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||[]},{'name':_0xec3f('0x67'),'value':_0x57b98a[_0xec3f('0x67')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a['attrs'][0x2][_0xec3f('0x60')]:undefined)||0x14},{'name':_0xec3f('0x6c'),'value':_0x57b98a[_0xec3f('0x6c')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x3]?_0x57b98a[_0xec3f('0x5f')][0x3]['value']:undefined)||_0xec3f('0x6d')},{'name':'attrEmailAccounts','value':_0x57b98a[_0xec3f('0x6e')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x4]?_0x57b98a[_0xec3f('0x5f')][0x4][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x6f'),'value':_0x57b98a[_0xec3f('0x6f')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x5]?_0x57b98a['attrs'][0x5]['value']:undefined)||''},{'name':_0xec3f('0x70'),'value':_0x57b98a[_0xec3f('0x70')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x6]?_0x57b98a['attrs'][0x6][_0xec3f('0x60')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x57b98a[_0xec3f('0x71')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x7]?_0x57b98a[_0xec3f('0x5f')][0x7]['value']:undefined)||''},{'name':_0xec3f('0x72'),'value':_0x57b98a[_0xec3f('0x72')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x8]?_0x57b98a['attrs'][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x57b98a[_0xec3f('0x73')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x9]?_0x57b98a[_0xec3f('0x5f')][0x9][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x74'):case _0xec3f('0x75'):return[{'name':_0xec3f('0x76'),'value':_0x57b98a[_0xec3f('0x76')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||_0xec3f('0x6a')},{'name':_0xec3f('0x77'),'value':_0x57b98a[_0xec3f('0x77')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x1]?_0x57b98a[_0xec3f('0x5f')][0x1][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x78'),'value':_0x57b98a['attrSerie3']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x2]?_0x57b98a[_0xec3f('0x5f')][0x2][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x6b'),'value':_0x57b98a[_0xec3f('0x6b')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x3]?_0x57b98a[_0xec3f('0x5f')][0x3][_0xec3f('0x60')]:undefined)||[]},{'name':_0xec3f('0x6c'),'value':_0x57b98a['attrChannel']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x4]?_0x57b98a['attrs'][0x4][_0xec3f('0x60')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x57b98a['attrEmailAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x5]?_0x57b98a['attrs'][0x5][_0xec3f('0x60')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x57b98a['attrFaxAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x6]?_0x57b98a[_0xec3f('0x5f')][0x6][_0xec3f('0x60')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x57b98a[_0xec3f('0x70')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x7]?_0x57b98a[_0xec3f('0x5f')][0x7][_0xec3f('0x60')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x57b98a['attrOpenchannelAccounts']||(_0x57b98a['attrs']&&_0x57b98a['attrs'][0x8]?_0x57b98a[_0xec3f('0x5f')][0x8][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x72'),'value':_0x57b98a['attrWhatsappAccounts']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a['attrs'][0x9]?_0x57b98a['attrs'][0x9][_0xec3f('0x60')]:undefined)||''},{'name':_0xec3f('0x73'),'value':_0x57b98a[_0xec3f('0x73')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0xa]?_0x57b98a[_0xec3f('0x5f')][0xa][_0xec3f('0x60')]:undefined)||''}];case _0xec3f('0x79'):return[{'name':'attrReport','type':_0x57b98a[_0xec3f('0x7a')]||(_0x57b98a['attrs']&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a['attrs'][0x0]['type']:undefined)||null,'value':_0x57b98a[_0xec3f('0x7b')]||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x0]?_0x57b98a[_0xec3f('0x5f')][0x0][_0xec3f('0x60')]:undefined)||null},{'name':_0xec3f('0x7c'),'value':_0x57b98a['attrRefresh']||(_0x57b98a[_0xec3f('0x5f')]&&_0x57b98a[_0xec3f('0x5f')][0x1]?_0x57b98a['attrs'][0x1][_0xec3f('0x60')]:undefined)||0x0}];default:return[];}}catch(_0x42e06f){logger['error'](_0xec3f('0x7d'),JSON[_0xec3f('0x7e')](_0x42e06f));return[];}}exports[_0xec3f('0x7f')]=function(_0x2072b9,_0x1e7088,_0x26dff2){if(_0x2072b9['body']['id']){delete _0x2072b9[_0xec3f('0x54')]['id'];}return db[_0xec3f('0x35')][_0xec3f('0x51')]({'where':{'id':_0x2072b9[_0xec3f('0x50')]['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x1e7088,null))[_0xec3f('0x2a')](function(_0x4761ce){if(_0x4761ce){_0x2072b9[_0xec3f('0x54')][_0xec3f('0x80')]=_0x4761ce['id'];_0x2072b9['body'][_0xec3f('0x5f')]=widgetAttributes(_0x2072b9[_0xec3f('0x54')]);return db[_0xec3f('0x81')][_0xec3f('0x53')](_0x2072b9[_0xec3f('0x54')]);}})[_0xec3f('0x2a')](respondWithResult(_0x1e7088,null))['catch'](handleError(_0x1e7088,null));};exports[_0xec3f('0x82')]=function(_0x2d0841,_0x1fa8d0,_0x54728c){var _0x399c72={};var _0x364ec6={};var _0xbf2758;var _0xd5e0c9;return db['Dashboard'][_0xec3f('0x83')]({'where':{'id':_0x2d0841['params']['id']}})[_0xec3f('0x2a')](handleEntityNotFound(_0x1fa8d0,null))[_0xec3f('0x2a')](function(_0xbfa0db){if(_0xbfa0db){_0xbf2758=_0xbfa0db;_0x364ec6[_0xec3f('0x3d')]=_[_0xec3f('0x3a')](db[_0xec3f('0x81')][_0xec3f('0x36')]);_0x364ec6[_0xec3f('0x39')]=_[_0xec3f('0x3a')](_0x2d0841[_0xec3f('0x39')]);_0x364ec6[_0xec3f('0x3b')]=_[_0xec3f('0x3c')](_0x364ec6[_0xec3f('0x3d')],_0x364ec6['query']);_0x399c72['attributes']=_['intersection'](_0x364ec6[_0xec3f('0x3d')],qs['fields'](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x3f')]));_0x399c72[_0xec3f('0x3e')]=_0x399c72[_0xec3f('0x3e')][_0xec3f('0x40')]?_0x399c72[_0xec3f('0x3e')]:_0x364ec6['model'];_0x399c72['order']=qs[_0xec3f('0x44')](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x44')]);_0x399c72['where']=qs[_0xec3f('0x3b')](_[_0xec3f('0x46')](_0x2d0841[_0xec3f('0x39')],_0x364ec6['filters']));if(_0x2d0841[_0xec3f('0x39')]['filter']){_0x399c72[_0xec3f('0x45')]=_[_0xec3f('0x4a')](_0x399c72[_0xec3f('0x45')],{'$or':_['map'](_0x399c72[_0xec3f('0x3e')],function(_0x98b912){var _0x203ff9={};_0x203ff9[_0x98b912]={'$like':'%'+_0x2d0841[_0xec3f('0x39')][_0xec3f('0x47')]+'%'};return _0x203ff9;})});}_0x399c72=_['merge']({},_0x399c72,_0x2d0841[_0xec3f('0x4b')]);return _0xbf2758[_0xec3f('0x82')](_0x399c72);}})[_0xec3f('0x2a')](function(_0x57a6b8){if(_0x57a6b8){_0xd5e0c9=_0x57a6b8['length'];if(!_0x2d0841[_0xec3f('0x39')]['hasOwnProperty'](_0xec3f('0x84'))){_0x399c72[_0xec3f('0x42')]=qs[_0xec3f('0x42')](_0x2d0841['query'][_0xec3f('0x42')]);_0x399c72['offset']=qs[_0xec3f('0x23')](_0x2d0841[_0xec3f('0x39')][_0xec3f('0x23')]);}return _0xbf2758[_0xec3f('0x82')](_0x399c72);}})[_0xec3f('0x2a')](function(_0x474b89){if(_0x474b89){return _0x474b89?{'count':_0xd5e0c9,'rows':_0x474b89}:null;}})[_0xec3f('0x2a')](respondWithResult(_0x1fa8d0,null))[_0xec3f('0x52')](handleError(_0x1fa8d0,null));};
\ No newline at end of file
index a32496d..cff8d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x184a=['Dashboard','setMaxListeners','save','remove','emit','hook','events'];(function(_0x5c7174,_0x4954d3){var _0x33cec3=function(_0x3d75c6){while(--_0x3d75c6){_0x5c7174['push'](_0x5c7174['shift']());}};_0x33cec3(++_0x4954d3);}(_0x184a,0x16b));var _0xa184=function(_0x96bb1f,_0x261d0c){_0x96bb1f=_0x96bb1f-0x0;var _0x504f48=_0x184a[_0x96bb1f];return _0x504f48;};'use strict';var EventEmitter=require(_0xa184('0x0'));var Dashboard=require('../../mysqldb')['db'][_0xa184('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents[_0xa184('0x2')](0x0);var events={'afterCreate':_0xa184('0x3'),'afterUpdate':'update','afterDestroy':_0xa184('0x4')};function emitEvent(_0x1d2ef7){return function(_0x87e562,_0x2d49c6,_0x442467){DashboardEvents[_0xa184('0x5')](_0x1d2ef7+':'+_0x87e562['id'],_0x87e562);DashboardEvents[_0xa184('0x5')](_0x1d2ef7,_0x87e562);_0x442467(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard[_0xa184('0x6')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
+var _0x7286=['remove','emit','hasOwnProperty','hook','events','../../mysqldb','Dashboard','setMaxListeners','save'];(function(_0x56564a,_0x363039){var _0x593718=function(_0x561a55){while(--_0x561a55){_0x56564a['push'](_0x56564a['shift']());}};_0x593718(++_0x363039);}(_0x7286,0xca));var _0x6728=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0x7286[_0x599f41];return _0x2e4d58;};'use strict';var EventEmitter=require(_0x6728('0x0'));var Dashboard=require(_0x6728('0x1'))['db'][_0x6728('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents[_0x6728('0x3')](0x0);var events={'afterCreate':_0x6728('0x4'),'afterUpdate':'update','afterDestroy':_0x6728('0x5')};function emitEvent(_0x2d0cac){return function(_0x21f700,_0x4db10b,_0x1e167a){DashboardEvents[_0x6728('0x6')](_0x2d0cac+':'+_0x21f700['id'],_0x21f700);DashboardEvents['emit'](_0x2d0cac,_0x21f700);_0x1e167a(null);};}for(var e in events){if(events[_0x6728('0x7')](e)){var event=events[e];Dashboard[_0x6728('0x8')](e,emitEvent(event));}}module['exports']=DashboardEvents;
\ No newline at end of file
index b2be3c6..db18df9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda44=['bluebird','request-promise','path','rimraf','../../config/environment','./dashboard.attributes','define','Dashboard','dashboards','lodash','util','../../config/logger','api','moment'];(function(_0x4e4519,_0x392ae){var _0x340044=function(_0x11721f){while(--_0x11721f){_0x4e4519['push'](_0x4e4519['shift']());}};_0x340044(++_0x392ae);}(_0xda44,0x175));var _0x4da4=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xda44[_0x465028];return _0xb783d4;};'use strict';var _=require(_0x4da4('0x0'));var util=require(_0x4da4('0x1'));var logger=require(_0x4da4('0x2'))(_0x4da4('0x3'));var moment=require(_0x4da4('0x4'));var BPromise=require(_0x4da4('0x5'));var rp=require(_0x4da4('0x6'));var fs=require('fs');var path=require(_0x4da4('0x7'));var rimraf=require(_0x4da4('0x8'));var config=require(_0x4da4('0x9'));var attributes=require(_0x4da4('0xa'));module['exports']=function(_0x4fc154,_0x4291c3){return _0x4fc154[_0x4da4('0xb')](_0x4da4('0xc'),attributes,{'tableName':_0x4da4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6856=['moment','bluebird','rimraf','../../config/environment','exports','define','Dashboard','dashboards','util','api'];(function(_0x18038f,_0xd441){var _0x1713a8=function(_0x5db039){while(--_0x5db039){_0x18038f['push'](_0x18038f['shift']());}};_0x1713a8(++_0xd441);}(_0x6856,0x13e));var _0x6685=function(_0x31d861,_0x1149a4){_0x31d861=_0x31d861-0x0;var _0x1415ea=_0x6856[_0x31d861];return _0x1415ea;};'use strict';var _=require('lodash');var util=require(_0x6685('0x0'));var logger=require('../../config/logger')(_0x6685('0x1'));var moment=require(_0x6685('0x2'));var BPromise=require(_0x6685('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x6685('0x4'));var config=require(_0x6685('0x5'));var attributes=require('./dashboard.attributes');module[_0x6685('0x6')]=function(_0x5e9152,_0x2162dd){return _0x5e9152[_0x6685('0x7')](_0x6685('0x8'),attributes,{'tableName':_0x6685('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c799e45..c873b2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x546d=['debug','Dashboard,\x20%s,\x20%s,\x20%s','stringify','error','code','Dashboard,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','jayson/promise','defaults','redis','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','request\x20sent'];(function(_0x5ed15b,_0x45f94e){var _0x30e261=function(_0x3eebd0){while(--_0x3eebd0){_0x5ed15b['push'](_0x5ed15b['shift']());}};_0x30e261(++_0x45f94e);}(_0x546d,0x132));var _0xd546=function(_0x4c33d5,_0x19446b){_0x4c33d5=_0x4c33d5-0x0;var _0x3b0abd=_0x546d[_0x4c33d5];return _0x3b0abd;};'use strict';var _=require(_0xd546('0x0'));var util=require(_0xd546('0x1'));var moment=require(_0xd546('0x2'));var BPromise=require(_0xd546('0x3'));var rs=require(_0xd546('0x4'));var fs=require('fs');var Redis=require(_0xd546('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd546('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xd546('0x7'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xd546('0x8')](config[_0xd546('0x9')],{'host':_0xd546('0xa'),'port':0x18eb});var socket=require(_0xd546('0xb'))(new Redis(config['redis']));require(_0xd546('0xc'))[_0xd546('0xd')](socket);function respondWithRpcPromise(_0x25348a,_0x8d027c,_0x4347b7){return new BPromise(function(_0x312831,_0x56107d){return client[_0xd546('0xe')](_0x25348a,_0x4347b7)[_0xd546('0xf')](function(_0x18827d){logger[_0xd546('0x10')]('Dashboard,\x20%s,\x20%s',_0x8d027c,_0xd546('0x11'));logger[_0xd546('0x12')](_0xd546('0x13'),_0x8d027c,_0xd546('0x11'),JSON[_0xd546('0x14')](_0x18827d));if(_0x18827d[_0xd546('0x15')]){if(_0x18827d['error'][_0xd546('0x16')]===0x1f4){logger['error'](_0xd546('0x17'),_0x8d027c,_0x18827d[_0xd546('0x15')][_0xd546('0x18')]);return _0x56107d(_0x18827d[_0xd546('0x15')][_0xd546('0x18')]);}logger[_0xd546('0x15')](_0xd546('0x17'),_0x8d027c,_0x18827d[_0xd546('0x15')][_0xd546('0x18')]);return _0x312831(_0x18827d['error'][_0xd546('0x18')]);}else{logger[_0xd546('0x10')]('Dashboard,\x20%s,\x20%s',_0x8d027c,'request\x20sent');_0x312831(_0x18827d[_0xd546('0x19')]['message']);}})[_0xd546('0x1a')](function(_0x1f173c){logger['error'](_0xd546('0x17'),_0x8d027c,_0x1f173c);_0x56107d(_0x1f173c);});});}
\ No newline at end of file
+var _0x6c51=['error','Dashboard,\x20%s,\x20%s','message','result','catch','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','register','request','then','info','debug','request\x20sent','stringify'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x6c51,0x19a));var _0x16c5=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6c51[_0x501510];return _0x1e6ee5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x16c5('0x0'));var BPromise=require('bluebird');var rs=require(_0x16c5('0x1'));var fs=require('fs');var Redis=require(_0x16c5('0x2'));var db=require(_0x16c5('0x3'))['db'];var utils=require(_0x16c5('0x4'));var logger=require(_0x16c5('0x5'))(_0x16c5('0x6'));var config=require(_0x16c5('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x16c5('0x8')][_0x16c5('0x9')]({'port':0x232a});config[_0x16c5('0xa')]=_[_0x16c5('0xb')](config[_0x16c5('0xa')],{'host':_0x16c5('0xc'),'port':0x18eb});var socket=require(_0x16c5('0xd'))(new Redis(config[_0x16c5('0xa')]));require(_0x16c5('0xe'))[_0x16c5('0xf')](socket);function respondWithRpcPromise(_0x2a646c,_0x12b2b9,_0x1bd3b7){return new BPromise(function(_0x418b6c,_0x5efbd8){return client[_0x16c5('0x10')](_0x2a646c,_0x1bd3b7)[_0x16c5('0x11')](function(_0x465b67){logger[_0x16c5('0x12')]('Dashboard,\x20%s,\x20%s',_0x12b2b9,'request\x20sent');logger[_0x16c5('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x12b2b9,_0x16c5('0x14'),JSON[_0x16c5('0x15')](_0x465b67));if(_0x465b67[_0x16c5('0x16')]){if(_0x465b67[_0x16c5('0x16')]['code']===0x1f4){logger[_0x16c5('0x16')](_0x16c5('0x17'),_0x12b2b9,_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);return _0x5efbd8(_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);}logger[_0x16c5('0x16')](_0x16c5('0x17'),_0x12b2b9,_0x465b67[_0x16c5('0x16')][_0x16c5('0x18')]);return _0x418b6c(_0x465b67['error'][_0x16c5('0x18')]);}else{logger[_0x16c5('0x12')](_0x16c5('0x17'),_0x12b2b9,_0x16c5('0x14'));_0x418b6c(_0x465b67[_0x16c5('0x19')][_0x16c5('0x18')]);}})[_0x16c5('0x1a')](function(_0x1e6212){logger['error'](_0x16c5('0x17'),_0x12b2b9,_0x1e6212);_0x5efbd8(_0x1e6212);});});}
\ No newline at end of file
index 9ce621f..6fc103d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc407=['register','length','dashboard:','./dashboard.events','save','remove','update','removeListener'];(function(_0x4ccf7f,_0x161ffd){var _0x1953f0=function(_0xfd2ca6){while(--_0xfd2ca6){_0x4ccf7f['push'](_0x4ccf7f['shift']());}};_0x1953f0(++_0x161ffd);}(_0xc407,0xeb));var _0x7c40=function(_0x59b439,_0x14ae7b){_0x59b439=_0x59b439-0x0;var _0x521ea3=_0xc407[_0x59b439];return _0x521ea3;};'use strict';var DashboardEvents=require(_0x7c40('0x0'));var events=[_0x7c40('0x1'),_0x7c40('0x2'),_0x7c40('0x3')];function createListener(_0x28360f,_0x58aab9){return function(_0x5958f4){_0x58aab9['emit'](_0x28360f,_0x5958f4);};}function removeListener(_0x4c2013,_0x383646){return function(){DashboardEvents[_0x7c40('0x4')](_0x4c2013,_0x383646);};}exports[_0x7c40('0x5')]=function(_0x3f393b){for(var _0x288a43=0x0,_0x35e742=events[_0x7c40('0x6')];_0x288a43<_0x35e742;_0x288a43++){var _0xc5f903=events[_0x288a43];var _0x400007=createListener(_0x7c40('0x7')+_0xc5f903,_0x3f393b);DashboardEvents['on'](_0xc5f903,_0x400007);}};
\ No newline at end of file
+var _0x1fce=['register','length','dashboard:','./dashboard.events','save','remove','update','removeListener'];(function(_0x364997,_0x3ce8bd){var _0x27e571=function(_0x433e6b){while(--_0x433e6b){_0x364997['push'](_0x364997['shift']());}};_0x27e571(++_0x3ce8bd);}(_0x1fce,0xdb));var _0xe1fc=function(_0x16db8b,_0xca7d28){_0x16db8b=_0x16db8b-0x0;var _0x5ba017=_0x1fce[_0x16db8b];return _0x5ba017;};'use strict';var DashboardEvents=require(_0xe1fc('0x0'));var events=[_0xe1fc('0x1'),_0xe1fc('0x2'),_0xe1fc('0x3')];function createListener(_0x5df3e2,_0x2cbb60){return function(_0x261c8a){_0x2cbb60['emit'](_0x5df3e2,_0x261c8a);};}function removeListener(_0x48a8ce,_0x7b3c3f){return function(){DashboardEvents[_0xe1fc('0x4')](_0x48a8ce,_0x7b3c3f);};}exports[_0xe1fc('0x5')]=function(_0x33b786){for(var _0xac0558=0x0,_0x4eb9c6=events[_0xe1fc('0x6')];_0xac0558<_0x4eb9c6;_0xac0558++){var _0x31d811=events[_0xac0558];var _0x458e0a=createListener(_0xe1fc('0x7')+_0x31d811,_0x33b786);DashboardEvents['on'](_0x31d811,_0x458e0a);}};
\ No newline at end of file
index d104157..e4a82c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75f0=['put','update','delete','destroy','exports','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','show','getItems','post','create','clone','/:id/items','addItem'];(function(_0x14fad0,_0x278d75){var _0x5c665f=function(_0xe43a83){while(--_0xe43a83){_0x14fad0['push'](_0x14fad0['shift']());}};_0x5c665f(++_0x278d75);}(_0x75f0,0xc5));var _0x075f=function(_0x179fdf,_0x53b69d){_0x179fdf=_0x179fdf-0x0;var _0x13777c=_0x75f0[_0x179fdf];return _0x13777c;};'use strict';var multer=require('multer');var util=require(_0x075f('0x0'));var path=require(_0x075f('0x1'));var timeout=require(_0x075f('0x2'));var express=require('express');var router=express[_0x075f('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x075f('0x4'));var interaction=require(_0x075f('0x5'));var config=require(_0x075f('0x6'));var controller=require(_0x075f('0x7'));router[_0x075f('0x8')]('/',auth[_0x075f('0x9')](),controller[_0x075f('0xa')]);router[_0x075f('0x8')](_0x075f('0xb'),auth[_0x075f('0x9')](),controller[_0x075f('0xc')]);router[_0x075f('0x8')]('/:id/items',auth[_0x075f('0x9')](),controller[_0x075f('0xd')]);router[_0x075f('0xe')]('/',auth[_0x075f('0x9')](),controller[_0x075f('0xf')]);router['post']('/:id/clone',auth[_0x075f('0x9')](),controller[_0x075f('0x10')]);router[_0x075f('0xe')](_0x075f('0x11'),auth[_0x075f('0x9')](),controller[_0x075f('0x12')]);router[_0x075f('0x13')](_0x075f('0xb'),auth[_0x075f('0x9')](),controller[_0x075f('0x14')]);router[_0x075f('0x15')](_0x075f('0xb'),auth[_0x075f('0x9')](),controller[_0x075f('0x16')]);module[_0x075f('0x17')]=router;
\ No newline at end of file
+var _0xdf5e=['./dashboard.controller','get','isAuthenticated','index','/:id','show','/:id/items','post','create','clone','addItem','update','delete','destroy','path','connect-timeout','express','fs-extra','../../config/environment'];(function(_0x16fda4,_0x39ee5e){var _0x43a676=function(_0x2bfae2){while(--_0x2bfae2){_0x16fda4['push'](_0x16fda4['shift']());}};_0x43a676(++_0x39ee5e);}(_0xdf5e,0x12b));var _0xedf5=function(_0x2defb5,_0x1cda14){_0x2defb5=_0x2defb5-0x0;var _0x229c53=_0xdf5e[_0x2defb5];return _0x229c53;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xedf5('0x0'));var timeout=require(_0xedf5('0x1'));var express=require(_0xedf5('0x2'));var router=express['Router']();var fs_extra=require(_0xedf5('0x3'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xedf5('0x4'));var controller=require(_0xedf5('0x5'));router[_0xedf5('0x6')]('/',auth[_0xedf5('0x7')](),controller[_0xedf5('0x8')]);router[_0xedf5('0x6')](_0xedf5('0x9'),auth['isAuthenticated'](),controller[_0xedf5('0xa')]);router['get'](_0xedf5('0xb'),auth[_0xedf5('0x7')](),controller['getItems']);router[_0xedf5('0xc')]('/',auth[_0xedf5('0x7')](),controller[_0xedf5('0xd')]);router['post']('/:id/clone',auth[_0xedf5('0x7')](),controller[_0xedf5('0xe')]);router['post'](_0xedf5('0xb'),auth[_0xedf5('0x7')](),controller[_0xedf5('0xf')]);router['put'](_0xedf5('0x9'),auth[_0xedf5('0x7')](),controller[_0xedf5('0x10')]);router[_0xedf5('0x11')]('/:id',auth[_0xedf5('0x7')](),controller[_0xedf5('0x12')]);module['exports']=router;
\ No newline at end of file
index 0bab1f9..df28824 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['lodash','STRING','long','parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','sequelize','squel'];(function(_0x40ac5e,_0x2de228){var _0x2839d6=function(_0x123d47){while(--_0x123d47){_0x40ac5e['push'](_0x40ac5e['shift']());}};_0x2839d6(++_0x2de228);}(_0x7a54,0x106));var _0x47a5=function(_0x3f4764,_0x414718){_0x3f4764=_0x3f4764-0x0;var _0x3b2914=_0x7a54[_0x3f4764];return _0x3b2914;};'use strict';var Sequelize=require(_0x47a5('0x0'));var squel=require(_0x47a5('0x1'));var _=require(_0x47a5('0x2'));module['exports']={'title':{'type':Sequelize[_0x47a5('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x47a5('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x47a5('0x4')),'get':function(){try{return JSON[_0x47a5('0x5')](this[_0x47a5('0x6')](_0x47a5('0x7')));}catch(_0xfdf934){return[];}},'set':function(_0x545a97){try{this[_0x47a5('0x8')]('attrs',JSON[_0x47a5('0x9')](_0x545a97));}catch(_0x30e405){this['setDataValue'](_0x47a5('0x7'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x47a5('0xa')]},'col':{'type':Sequelize[_0x47a5('0xa')]},'background':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x47a5('0xb'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x47a5('0x3')]},'titleFontSize':{'type':Sequelize[_0x47a5('0xa')],'defaultValue':0xc}};
\ No newline at end of file
+var _0x4975=['parse','getDataValue','attrs','setDataValue','stringify','INTEGER','#ffffff','#2196f3','sequelize','lodash','exports','STRING','TEXT','long'];(function(_0x221827,_0x4ea786){var _0xd1de18=function(_0x4d41a9){while(--_0x4d41a9){_0x221827['push'](_0x221827['shift']());}};_0xd1de18(++_0x4ea786);}(_0x4975,0x86));var _0x5497=function(_0x8a83ef,_0x1ee179){_0x8a83ef=_0x8a83ef-0x0;var _0x10e2ce=_0x4975[_0x8a83ef];return _0x10e2ce;};'use strict';var Sequelize=require(_0x5497('0x0'));var squel=require('squel');var _=require(_0x5497('0x1'));module[_0x5497('0x2')]={'title':{'type':Sequelize[_0x5497('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0x5497('0x3')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0x5497('0x4')](_0x5497('0x5')),'get':function(){try{return JSON[_0x5497('0x6')](this[_0x5497('0x7')](_0x5497('0x8')));}catch(_0x5d5272){return[];}},'set':function(_0x539a27){try{this[_0x5497('0x9')]('attrs',JSON[_0x5497('0xa')](_0x539a27));}catch(_0x674a2a){this[_0x5497('0x9')]('attrs',JSON[_0x5497('0xa')]([]));}}},'sizeX':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0x5497('0xb')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5497('0xb')]},'col':{'type':Sequelize[_0x5497('0xb')]},'background':{'type':Sequelize[_0x5497('0x3')],'allowNull':![],'defaultValue':_0x5497('0xc'),'validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5497('0x3')],'allowNull':![],'defaultValue':_0x5497('0xd'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5497('0x3')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index c3ac610..2144076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x496e=['intersection','fields','attributes','length','includeAll','include','merge','find','catch','destroy','iframe','attrUrl','attrs','value','https://','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','stringify','body','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./dashboardItem.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','sendStatus','error','stack','name','send','params','model','DashboardItem','query','keys','filters'];(function(_0x22356b,_0x36f66e){var _0x3514d4=function(_0x4fb2cc){while(--_0x4fb2cc){_0x22356b['push'](_0x22356b['shift']());}};_0x3514d4(++_0x36f66e);}(_0x496e,0x1a0));var _0xe496=function(_0xc1fc58,_0x1b1b8a){_0xc1fc58=_0xc1fc58-0x0;var _0x529162=_0x496e[_0xc1fc58];return _0x529162;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe496('0x0'));var zipdir=require(_0xe496('0x1'));var jsonpatch=require(_0xe496('0x2'));var rp=require(_0xe496('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xe496('0x4'));var path=require('path');var sox=require(_0xe496('0x5'));var csv=require(_0xe496('0x6'));var ejs=require(_0xe496('0x7'));var fs=require('fs');var fs_extra=require(_0xe496('0x8'));var _=require(_0xe496('0x9'));var squel=require(_0xe496('0xa'));var crypto=require(_0xe496('0xb'));var jsforce=require(_0xe496('0xc'));var deskjs=require(_0xe496('0xd'));var toCsv=require(_0xe496('0x6'));var querystring=require(_0xe496('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe496('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe496('0x10'));var hardwareService=require(_0xe496('0x11'));var logger=require(_0xe496('0x12'))(_0xe496('0x13'));var utils=require(_0xe496('0x14'));var config=require(_0xe496('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xe496('0x16')]=_[_0xe496('0x17')](config['redis'],{'host':_0xe496('0x18'),'port':0x18eb});var socket=require(_0xe496('0x19'))(new Redis(config[_0xe496('0x16')]));require(_0xe496('0x1a'))['register'](socket);function respondWithStatusCode(_0xfa63a3,_0x487b50){_0x487b50=_0x487b50||0xcc;return function(_0xddb0f){if(_0xddb0f){return _0xfa63a3['sendStatus'](_0x487b50);}return _0xfa63a3[_0xe496('0x1b')](_0x487b50)[_0xe496('0x1c')]();};}function respondWithResult(_0x16adfd,_0x46cc5b){_0x46cc5b=_0x46cc5b||0xc8;return function(_0x5b91a2){if(_0x5b91a2){return _0x16adfd[_0xe496('0x1b')](_0x46cc5b)[_0xe496('0x1d')](_0x5b91a2);}};}function respondWithFilteredResult(_0x5268a2,_0x2733dd){return function(_0x29d07c){if(_0x29d07c){var _0x3d3bd6=typeof _0x2733dd[_0xe496('0x1e')]===_0xe496('0x1f')&&typeof _0x2733dd[_0xe496('0x20')]===_0xe496('0x1f');var _0x360a48=_0x29d07c[_0xe496('0x21')];var _0x1993cd=_0x3d3bd6?0x0:_0x2733dd[_0xe496('0x1e')];var _0x3f6436=_0x3d3bd6?_0x29d07c[_0xe496('0x21')]:_0x2733dd['offset']+_0x2733dd[_0xe496('0x20')];var _0x33a497;if(_0x3f6436>=_0x360a48){_0x3f6436=_0x360a48;_0x33a497=0xc8;}else{_0x33a497=0xce;}_0x5268a2[_0xe496('0x1b')](_0x33a497);return _0x5268a2[_0xe496('0x22')](_0xe496('0x23'),_0x1993cd+'-'+_0x3f6436+'/'+_0x360a48)[_0xe496('0x1d')](_0x29d07c);}return null;};}function patchUpdates(_0x3fb384){return function(_0x2337c7){try{jsonpatch['apply'](_0x2337c7,_0x3fb384,!![]);}catch(_0x1af1da){return BPromise['reject'](_0x1af1da);}return _0x2337c7['save']();};}function saveUpdates(_0x4fc3ce,_0x16c08d){return function(_0x26863e){if(_0x26863e){return _0x26863e[_0xe496('0x24')](_0x4fc3ce)[_0xe496('0x25')](function(_0x541173){return _0x541173;});}return null;};}function removeEntity(_0x3f114d,_0x2d122e){return function(_0x25cd2c){if(_0x25cd2c){return _0x25cd2c['destroy']()[_0xe496('0x25')](function(){_0x3f114d[_0xe496('0x1b')](0xcc)[_0xe496('0x1c')]();});}};}function handleEntityNotFound(_0x57dc9d,_0x4701f0){return function(_0x9eb3ab){if(!_0x9eb3ab){_0x57dc9d[_0xe496('0x26')](0x194);}return _0x9eb3ab;};}function handleError(_0xf736dd,_0x5a1d84){_0x5a1d84=_0x5a1d84||0x1f4;return function(_0x2c6ee6){logger[_0xe496('0x27')](_0x2c6ee6[_0xe496('0x28')]);if(_0x2c6ee6[_0xe496('0x29')]){delete _0x2c6ee6[_0xe496('0x29')];}_0xf736dd[_0xe496('0x1b')](_0x5a1d84)[_0xe496('0x2a')](_0x2c6ee6);};}exports['show']=function(_0x24cc17,_0x3b80f7){var _0x11432d={'raw':![],'where':{'id':_0x24cc17[_0xe496('0x2b')]['id']}},_0x3fa5bc={};_0x3fa5bc[_0xe496('0x2c')]=_['keys'](db[_0xe496('0x2d')]['rawAttributes']);_0x3fa5bc[_0xe496('0x2e')]=_[_0xe496('0x2f')](_0x24cc17[_0xe496('0x2e')]);_0x3fa5bc[_0xe496('0x30')]=_[_0xe496('0x31')](_0x3fa5bc[_0xe496('0x2c')],_0x3fa5bc[_0xe496('0x2e')]);_0x11432d['attributes']=_[_0xe496('0x31')](_0x3fa5bc['model'],qs['fields'](_0x24cc17['query'][_0xe496('0x32')]));_0x11432d[_0xe496('0x33')]=_0x11432d[_0xe496('0x33')][_0xe496('0x34')]?_0x11432d[_0xe496('0x33')]:_0x3fa5bc[_0xe496('0x2c')];if(_0x24cc17[_0xe496('0x2e')][_0xe496('0x35')]){_0x11432d[_0xe496('0x36')]=[{'all':!![]}];}_0x11432d=_[_0xe496('0x37')]({},_0x11432d,_0x24cc17['options']);return db[_0xe496('0x2d')][_0xe496('0x38')](_0x11432d)['then'](handleEntityNotFound(_0x3b80f7,null))['then'](respondWithResult(_0x3b80f7,null))[_0xe496('0x39')](handleError(_0x3b80f7,null));};exports[_0xe496('0x3a')]=function(_0xf5b212,_0x591bee){return db[_0xe496('0x2d')][_0xe496('0x38')]({'where':{'id':_0xf5b212[_0xe496('0x2b')]['id']}})['then'](handleEntityNotFound(_0x591bee,null))[_0xe496('0x25')](removeEntity(_0x591bee,null))[_0xe496('0x39')](handleError(_0x591bee,null));};function widgetAttributes(_0x23fd16){try{switch(_0x23fd16['type']){case _0xe496('0x3b'):return[{'name':_0xe496('0x3c'),'value':_0x23fd16[_0xe496('0x3c')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16[_0xe496('0x3d')][0x0][_0xe496('0x3e')]:undefined)||_0xe496('0x3f')}];case'custom':return[{'name':_0xe496('0x40'),'value':_0x23fd16[_0xe496('0x40')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16[_0xe496('0x3d')][0x0]['value']:undefined)||''}];case _0xe496('0x41'):return[{'name':_0xe496('0x42'),'value':_0x23fd16[_0xe496('0x42')]||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16[_0xe496('0x3d')][0x0]['value']:undefined)||_0xe496('0x43')},{'name':_0xe496('0x44'),'value':_0x23fd16['attrTimezone']||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x1]?_0x23fd16['attrs'][0x1][_0xe496('0x3e')]:undefined)||_0xe496('0x45')},{'name':_0xe496('0x46'),'value':_0x23fd16[_0xe496('0x46')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x2]?_0x23fd16[_0xe496('0x3d')][0x2]['value']:undefined)||0xc}];case _0xe496('0x47'):return[{'name':_0xe496('0x48'),'value':_0x23fd16[_0xe496('0x48')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16['attrs'][0x0][_0xe496('0x3e')]:undefined)||_0xe496('0x49')},{'name':'attrVoiceQueues','value':_0x23fd16[_0xe496('0x4a')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x1]?_0x23fd16['attrs'][0x1][_0xe496('0x3e')]:undefined)||[]},{'name':_0xe496('0x46'),'value':_0x23fd16['attrFontSize']||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x2]?_0x23fd16['attrs'][0x2][_0xe496('0x3e')]:undefined)||0x14},{'name':'attrChannel','value':_0x23fd16[_0xe496('0x4b')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x3]?_0x23fd16[_0xe496('0x3d')][0x3][_0xe496('0x3e')]:undefined)||_0xe496('0x4c')},{'name':'attrEmailAccounts','value':_0x23fd16[_0xe496('0x4d')]||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x4]?_0x23fd16['attrs'][0x4]['value']:undefined)||''},{'name':_0xe496('0x4e'),'value':_0x23fd16[_0xe496('0x4e')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x5]?_0x23fd16['attrs'][0x5][_0xe496('0x3e')]:undefined)||''},{'name':_0xe496('0x4f'),'value':_0x23fd16[_0xe496('0x4f')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x6]?_0x23fd16[_0xe496('0x3d')][0x6][_0xe496('0x3e')]:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x23fd16[_0xe496('0x50')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x7]?_0x23fd16[_0xe496('0x3d')][0x7][_0xe496('0x3e')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x23fd16[_0xe496('0x51')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x8]?_0x23fd16[_0xe496('0x3d')][0x8][_0xe496('0x3e')]:undefined)||''},{'name':_0xe496('0x52'),'value':_0x23fd16[_0xe496('0x52')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x9]?_0x23fd16[_0xe496('0x3d')][0x9][_0xe496('0x3e')]:undefined)||''}];case'multibar-chart':case _0xe496('0x53'):return[{'name':'attrSerie1','value':_0x23fd16[_0xe496('0x54')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16['attrs'][0x0]?_0x23fd16[_0xe496('0x3d')][0x0]['value']:undefined)||_0xe496('0x49')},{'name':_0xe496('0x55'),'value':_0x23fd16[_0xe496('0x55')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16['attrs'][0x1]?_0x23fd16[_0xe496('0x3d')][0x1][_0xe496('0x3e')]:undefined)||null},{'name':'attrSerie3','value':_0x23fd16['attrSerie3']||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x2]?_0x23fd16[_0xe496('0x3d')][0x2][_0xe496('0x3e')]:undefined)||null},{'name':'attrVoiceQueues','value':_0x23fd16[_0xe496('0x4a')]||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x3]?_0x23fd16[_0xe496('0x3d')][0x3][_0xe496('0x3e')]:undefined)||[]},{'name':'attrChannel','value':_0x23fd16[_0xe496('0x4b')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x4]?_0x23fd16[_0xe496('0x3d')][0x4][_0xe496('0x3e')]:undefined)||_0xe496('0x4c')},{'name':_0xe496('0x4d'),'value':_0x23fd16['attrEmailAccounts']||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16['attrs'][0x5]?_0x23fd16[_0xe496('0x3d')][0x5][_0xe496('0x3e')]:undefined)||''},{'name':_0xe496('0x4e'),'value':_0x23fd16[_0xe496('0x4e')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16['attrs'][0x6]?_0x23fd16[_0xe496('0x3d')][0x6][_0xe496('0x3e')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x23fd16[_0xe496('0x4f')]||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x7]?_0x23fd16[_0xe496('0x3d')][0x7]['value']:undefined)||''},{'name':'attrOpenchannelAccounts','value':_0x23fd16[_0xe496('0x50')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x8]?_0x23fd16[_0xe496('0x3d')][0x8]['value']:undefined)||''},{'name':_0xe496('0x51'),'value':_0x23fd16[_0xe496('0x51')]||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0x9]?_0x23fd16[_0xe496('0x3d')][0x9][_0xe496('0x3e')]:undefined)||''},{'name':_0xe496('0x52'),'value':_0x23fd16['attrChatWebsites']||(_0x23fd16['attrs']&&_0x23fd16[_0xe496('0x3d')][0xa]?_0x23fd16['attrs'][0xa][_0xe496('0x3e')]:undefined)||''}];case _0xe496('0x56'):return[{'name':_0xe496('0x57'),'type':_0x23fd16[_0xe496('0x58')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16[_0xe496('0x3d')][0x0]['type']:undefined)||null,'value':_0x23fd16[_0xe496('0x57')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16[_0xe496('0x3d')][0x0]?_0x23fd16[_0xe496('0x3d')][0x0][_0xe496('0x3e')]:undefined)||null},{'name':_0xe496('0x59'),'value':_0x23fd16[_0xe496('0x59')]||(_0x23fd16[_0xe496('0x3d')]&&_0x23fd16['attrs'][0x1]?_0x23fd16[_0xe496('0x3d')][0x1][_0xe496('0x3e')]:undefined)||0x0}];default:return[];}}catch(_0x59585b){logger[_0xe496('0x27')](_0xe496('0x5a'),JSON[_0xe496('0x5b')](_0x59585b));return[];}}exports['create']=function(_0x27c56f,_0x4d867b){if(_0x27c56f[_0xe496('0x5c')]){_0x27c56f[_0xe496('0x5c')]['attrs']=widgetAttributes(_0x27c56f[_0xe496('0x5c')]);}return db[_0xe496('0x2d')]['create'](_0x27c56f[_0xe496('0x5c')],{})[_0xe496('0x25')](respondWithResult(_0x4d867b,0xc9))[_0xe496('0x39')](handleError(_0x4d867b,null));};exports[_0xe496('0x24')]=function(_0x4a365f,_0x2241d1){if(_0x4a365f['body']['id']){delete _0x4a365f[_0xe496('0x5c')]['id'];}_0x4a365f[_0xe496('0x5c')][_0xe496('0x3d')]=widgetAttributes(_0x4a365f[_0xe496('0x5c')]);return db[_0xe496('0x2d')][_0xe496('0x38')]({'where':{'id':_0x4a365f['params']['id']}})['then'](handleEntityNotFound(_0x2241d1,null))[_0xe496('0x25')](saveUpdates(_0x4a365f[_0xe496('0x5c')],null))[_0xe496('0x25')](respondWithResult(_0x2241d1,null))[_0xe496('0x39')](handleError(_0x2241d1,null));};
\ No newline at end of file
+var _0x4e83=['0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','attrSerie3','web-report','reportType','type','attrReport','attrRefresh','widgetAttributes:\x20%s','stringify','body','create','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','to-csv','ejs','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','show','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','catch','find','params','iframe','attrUrl','attrs','custom','attrPath','value','clock','attrHourFormat','HH:mm:ss','attrTimezone'];(function(_0x393e6c,_0x4f2f55){var _0x2842cb=function(_0x2e3fd1){while(--_0x2e3fd1){_0x393e6c['push'](_0x393e6c['shift']());}};_0x2842cb(++_0x4f2f55);}(_0x4e83,0x1ae));var _0x34e8=function(_0x22ffbf,_0x16f31e){_0x22ffbf=_0x22ffbf-0x0;var _0x360c17=_0x4e83[_0x22ffbf];return _0x360c17;};'use strict';var emlformat=require(_0x34e8('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x34e8('0x1'));var jsonpatch=require(_0x34e8('0x2'));var rp=require(_0x34e8('0x3'));var moment=require(_0x34e8('0x4'));var BPromise=require(_0x34e8('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x34e8('0x6'));var ejs=require(_0x34e8('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x34e8('0x8'));var squel=require(_0x34e8('0x9'));var crypto=require(_0x34e8('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x34e8('0xb'));var toCsv=require(_0x34e8('0x6'));var querystring=require(_0x34e8('0xc'));var Papa=require('papaparse');var Redis=require(_0x34e8('0xd'));var authService=require(_0x34e8('0xe'));var qs=require(_0x34e8('0xf'));var as=require(_0x34e8('0x10'));var hardwareService=require(_0x34e8('0x11'));var logger=require(_0x34e8('0x12'))(_0x34e8('0x13'));var utils=require(_0x34e8('0x14'));var config=require(_0x34e8('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x34e8('0x16'))['db'];config[_0x34e8('0x17')]=_['defaults'](config[_0x34e8('0x17')],{'host':_0x34e8('0x18'),'port':0x18eb});var socket=require(_0x34e8('0x19'))(new Redis(config[_0x34e8('0x17')]));require(_0x34e8('0x1a'))[_0x34e8('0x1b')](socket);function respondWithStatusCode(_0x21f234,_0x621c31){_0x621c31=_0x621c31||0xcc;return function(_0x4498d0){if(_0x4498d0){return _0x21f234['sendStatus'](_0x621c31);}return _0x21f234[_0x34e8('0x1c')](_0x621c31)[_0x34e8('0x1d')]();};}function respondWithResult(_0x36adfb,_0x332735){_0x332735=_0x332735||0xc8;return function(_0x3772d7){if(_0x3772d7){return _0x36adfb['status'](_0x332735)[_0x34e8('0x1e')](_0x3772d7);}};}function respondWithFilteredResult(_0x37b6ae,_0x2d080a){return function(_0x708dd4){if(_0x708dd4){var _0x381484=typeof _0x2d080a[_0x34e8('0x1f')]===_0x34e8('0x20')&&typeof _0x2d080a[_0x34e8('0x21')]===_0x34e8('0x20');var _0x19b9a4=_0x708dd4[_0x34e8('0x22')];var _0x53b90a=_0x381484?0x0:_0x2d080a[_0x34e8('0x1f')];var _0x368706=_0x381484?_0x708dd4[_0x34e8('0x22')]:_0x2d080a[_0x34e8('0x1f')]+_0x2d080a[_0x34e8('0x21')];var _0x188055;if(_0x368706>=_0x19b9a4){_0x368706=_0x19b9a4;_0x188055=0xc8;}else{_0x188055=0xce;}_0x37b6ae[_0x34e8('0x1c')](_0x188055);return _0x37b6ae[_0x34e8('0x23')]('Content-Range',_0x53b90a+'-'+_0x368706+'/'+_0x19b9a4)[_0x34e8('0x1e')](_0x708dd4);}return null;};}function patchUpdates(_0x20c7d3){return function(_0x4a3086){try{jsonpatch[_0x34e8('0x24')](_0x4a3086,_0x20c7d3,!![]);}catch(_0x592c0e){return BPromise[_0x34e8('0x25')](_0x592c0e);}return _0x4a3086[_0x34e8('0x26')]();};}function saveUpdates(_0x43c689,_0x51f28e){return function(_0x58cb2f){if(_0x58cb2f){return _0x58cb2f[_0x34e8('0x27')](_0x43c689)[_0x34e8('0x28')](function(_0xb8c9f){return _0xb8c9f;});}return null;};}function removeEntity(_0x2dad57,_0x2e29fb){return function(_0xe098f4){if(_0xe098f4){return _0xe098f4[_0x34e8('0x29')]()['then'](function(){_0x2dad57[_0x34e8('0x1c')](0xcc)[_0x34e8('0x1d')]();});}};}function handleEntityNotFound(_0x46c2a0,_0x277457){return function(_0xe77c9e){if(!_0xe77c9e){_0x46c2a0[_0x34e8('0x2a')](0x194);}return _0xe77c9e;};}function handleError(_0x21f31e,_0xae7ab8){_0xae7ab8=_0xae7ab8||0x1f4;return function(_0x2b445a){logger[_0x34e8('0x2b')](_0x2b445a[_0x34e8('0x2c')]);if(_0x2b445a[_0x34e8('0x2d')]){delete _0x2b445a[_0x34e8('0x2d')];}_0x21f31e[_0x34e8('0x1c')](_0xae7ab8)[_0x34e8('0x2e')](_0x2b445a);};}exports[_0x34e8('0x2f')]=function(_0x2eb565,_0x5c20db){var _0x3e7e42={'raw':![],'where':{'id':_0x2eb565['params']['id']}},_0x1a3146={};_0x1a3146[_0x34e8('0x30')]=_[_0x34e8('0x31')](db[_0x34e8('0x32')][_0x34e8('0x33')]);_0x1a3146[_0x34e8('0x34')]=_[_0x34e8('0x31')](_0x2eb565[_0x34e8('0x34')]);_0x1a3146[_0x34e8('0x35')]=_[_0x34e8('0x36')](_0x1a3146[_0x34e8('0x30')],_0x1a3146[_0x34e8('0x34')]);_0x3e7e42[_0x34e8('0x37')]=_[_0x34e8('0x36')](_0x1a3146[_0x34e8('0x30')],qs[_0x34e8('0x38')](_0x2eb565[_0x34e8('0x34')][_0x34e8('0x38')]));_0x3e7e42['attributes']=_0x3e7e42[_0x34e8('0x37')][_0x34e8('0x39')]?_0x3e7e42['attributes']:_0x1a3146[_0x34e8('0x30')];if(_0x2eb565[_0x34e8('0x34')][_0x34e8('0x3a')]){_0x3e7e42[_0x34e8('0x3b')]=[{'all':!![]}];}_0x3e7e42=_[_0x34e8('0x3c')]({},_0x3e7e42,_0x2eb565[_0x34e8('0x3d')]);return db[_0x34e8('0x32')]['find'](_0x3e7e42)['then'](handleEntityNotFound(_0x5c20db,null))[_0x34e8('0x28')](respondWithResult(_0x5c20db,null))[_0x34e8('0x3e')](handleError(_0x5c20db,null));};exports[_0x34e8('0x29')]=function(_0x5988b4,_0x32f216){return db[_0x34e8('0x32')][_0x34e8('0x3f')]({'where':{'id':_0x5988b4[_0x34e8('0x40')]['id']}})[_0x34e8('0x28')](handleEntityNotFound(_0x32f216,null))[_0x34e8('0x28')](removeEntity(_0x32f216,null))[_0x34e8('0x3e')](handleError(_0x32f216,null));};function widgetAttributes(_0x2e4fce){try{switch(_0x2e4fce['type']){case _0x34e8('0x41'):return[{'name':_0x34e8('0x42'),'value':_0x2e4fce[_0x34e8('0x42')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0]['value']:undefined)||'https://'}];case _0x34e8('0x44'):return[{'name':_0x34e8('0x45'),'value':_0x2e4fce['attrPath']||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x47'):return[{'name':_0x34e8('0x48'),'value':_0x2e4fce[_0x34e8('0x48')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce['attrs'][0x0]['value']:undefined)||_0x34e8('0x49')},{'name':'attrTimezone','value':_0x2e4fce[_0x34e8('0x4a')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1]['value']:undefined)||_0x34e8('0x4b')},{'name':_0x34e8('0x4c'),'value':_0x2e4fce[_0x34e8('0x4c')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce['attrs'][0x2][_0x34e8('0x46')]:undefined)||0xc}];case'counter':return[{'name':_0x34e8('0x4d'),'value':_0x2e4fce[_0x34e8('0x4d')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||_0x34e8('0x4e')},{'name':'attrVoiceQueues','value':_0x2e4fce[_0x34e8('0x4f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x1]?_0x2e4fce['attrs'][0x1][_0x34e8('0x46')]:undefined)||[]},{'name':'attrFontSize','value':_0x2e4fce[_0x34e8('0x4c')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce[_0x34e8('0x43')][0x2]['value']:undefined)||0x14},{'name':_0x34e8('0x50'),'value':_0x2e4fce['attrChannel']||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x3]?_0x2e4fce[_0x34e8('0x43')][0x3][_0x34e8('0x46')]:undefined)||_0x34e8('0x51')},{'name':_0x34e8('0x52'),'value':_0x2e4fce[_0x34e8('0x52')]||(_0x2e4fce['attrs']&&_0x2e4fce['attrs'][0x4]?_0x2e4fce[_0x34e8('0x43')][0x4][_0x34e8('0x46')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x2e4fce[_0x34e8('0x53')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x5]?_0x2e4fce['attrs'][0x5][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x54'),'value':_0x2e4fce['attrSmsAccounts']||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x6]?_0x2e4fce['attrs'][0x6][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x55'),'value':_0x2e4fce[_0x34e8('0x55')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x7]?_0x2e4fce[_0x34e8('0x43')][0x7][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x56'),'value':_0x2e4fce[_0x34e8('0x56')]||(_0x2e4fce['attrs']&&_0x2e4fce['attrs'][0x8]?_0x2e4fce[_0x34e8('0x43')][0x8][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x57'),'value':_0x2e4fce[_0x34e8('0x57')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x9]?_0x2e4fce[_0x34e8('0x43')][0x9][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x58'):case'pie-chart':return[{'name':'attrSerie1','value':_0x2e4fce[_0x34e8('0x59')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0][_0x34e8('0x46')]:undefined)||_0x34e8('0x4e')},{'name':'attrSerie2','value':_0x2e4fce[_0x34e8('0x5a')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1][_0x34e8('0x46')]:undefined)||null},{'name':_0x34e8('0x5b'),'value':_0x2e4fce[_0x34e8('0x5b')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x2]?_0x2e4fce[_0x34e8('0x43')][0x2][_0x34e8('0x46')]:undefined)||null},{'name':_0x34e8('0x4f'),'value':_0x2e4fce[_0x34e8('0x4f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x3]?_0x2e4fce[_0x34e8('0x43')][0x3][_0x34e8('0x46')]:undefined)||[]},{'name':_0x34e8('0x50'),'value':_0x2e4fce[_0x34e8('0x50')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x4]?_0x2e4fce[_0x34e8('0x43')][0x4][_0x34e8('0x46')]:undefined)||_0x34e8('0x51')},{'name':_0x34e8('0x52'),'value':_0x2e4fce[_0x34e8('0x52')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x5]?_0x2e4fce[_0x34e8('0x43')][0x5][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x53'),'value':_0x2e4fce[_0x34e8('0x53')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x6]?_0x2e4fce[_0x34e8('0x43')][0x6][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x54'),'value':_0x2e4fce[_0x34e8('0x54')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x7]?_0x2e4fce[_0x34e8('0x43')][0x7][_0x34e8('0x46')]:undefined)||''},{'name':_0x34e8('0x55'),'value':_0x2e4fce[_0x34e8('0x55')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x8]?_0x2e4fce[_0x34e8('0x43')][0x8]['value']:undefined)||''},{'name':_0x34e8('0x56'),'value':_0x2e4fce['attrWhatsappAccounts']||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x9]?_0x2e4fce['attrs'][0x9][_0x34e8('0x46')]:undefined)||''},{'name':'attrChatWebsites','value':_0x2e4fce[_0x34e8('0x57')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0xa]?_0x2e4fce[_0x34e8('0x43')][0xa][_0x34e8('0x46')]:undefined)||''}];case _0x34e8('0x5c'):return[{'name':'attrReport','type':_0x2e4fce[_0x34e8('0x5d')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce[_0x34e8('0x43')][0x0]?_0x2e4fce['attrs'][0x0][_0x34e8('0x5e')]:undefined)||null,'value':_0x2e4fce[_0x34e8('0x5f')]||(_0x2e4fce[_0x34e8('0x43')]&&_0x2e4fce['attrs'][0x0]?_0x2e4fce[_0x34e8('0x43')][0x0]['value']:undefined)||null},{'name':_0x34e8('0x60'),'value':_0x2e4fce[_0x34e8('0x60')]||(_0x2e4fce['attrs']&&_0x2e4fce[_0x34e8('0x43')][0x1]?_0x2e4fce[_0x34e8('0x43')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0x4d1ad9){logger['error'](_0x34e8('0x61'),JSON[_0x34e8('0x62')](_0x4d1ad9));return[];}}exports['create']=function(_0x32e199,_0x41cbed){if(_0x32e199[_0x34e8('0x63')]){_0x32e199[_0x34e8('0x63')][_0x34e8('0x43')]=widgetAttributes(_0x32e199[_0x34e8('0x63')]);}return db[_0x34e8('0x32')][_0x34e8('0x64')](_0x32e199[_0x34e8('0x63')],{})[_0x34e8('0x28')](respondWithResult(_0x41cbed,0xc9))[_0x34e8('0x3e')](handleError(_0x41cbed,null));};exports['update']=function(_0x1ddd9c,_0x6baa1c){if(_0x1ddd9c['body']['id']){delete _0x1ddd9c[_0x34e8('0x63')]['id'];}_0x1ddd9c[_0x34e8('0x63')]['attrs']=widgetAttributes(_0x1ddd9c['body']);return db[_0x34e8('0x32')]['find']({'where':{'id':_0x1ddd9c['params']['id']}})['then'](handleEntityNotFound(_0x6baa1c,null))[_0x34e8('0x28')](saveUpdates(_0x1ddd9c['body'],null))[_0x34e8('0x28')](respondWithResult(_0x6baa1c,null))[_0x34e8('0x3e')](handleError(_0x6baa1c,null));};
\ No newline at end of file
index aba4728..4fcdb8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x566a=['DashboardItem','setMaxListeners','save','remove','hasOwnProperty','hook','exports','events'];(function(_0x5672a0,_0x20189a){var _0x54dea6=function(_0x5ac11b){while(--_0x5ac11b){_0x5672a0['push'](_0x5672a0['shift']());}};_0x54dea6(++_0x20189a);}(_0x566a,0x9f));var _0xa566=function(_0x52a99c,_0x16b4f7){_0x52a99c=_0x52a99c-0x0;var _0x42bdc0=_0x566a[_0x52a99c];return _0x42bdc0;};'use strict';var EventEmitter=require(_0xa566('0x0'));var DashboardItem=require('../../mysqldb')['db'][_0xa566('0x1')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xa566('0x2')](0x0);var events={'afterCreate':_0xa566('0x3'),'afterUpdate':'update','afterDestroy':_0xa566('0x4')};function emitEvent(_0x403e99){return function(_0x79497e,_0x2052c5,_0x42419c){DashboardItemEvents['emit'](_0x403e99+':'+_0x79497e['id'],_0x79497e);DashboardItemEvents['emit'](_0x403e99,_0x79497e);_0x42419c(null);};}for(var e in events){if(events[_0xa566('0x5')](e)){var event=events[e];DashboardItem[_0xa566('0x6')](e,emitEvent(event));}}module[_0xa566('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0x847d=['hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x9df36,_0xaf99ba){var _0x3a74b9=function(_0x2e9ece){while(--_0x2e9ece){_0x9df36['push'](_0x9df36['shift']());}};_0x3a74b9(++_0xaf99ba);}(_0x847d,0x142));var _0xd847=function(_0x631a3c,_0x1b61b6){_0x631a3c=_0x631a3c-0x0;var _0x2bdfa3=_0x847d[_0x631a3c];return _0x2bdfa3;};'use strict';var EventEmitter=require(_0xd847('0x0'));var DashboardItem=require(_0xd847('0x1'))['db'][_0xd847('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0xd847('0x3')](0x0);var events={'afterCreate':_0xd847('0x4'),'afterUpdate':'update','afterDestroy':_0xd847('0x5')};function emitEvent(_0x4961e4){return function(_0x30431e,_0x143daf,_0x3d0bd2){DashboardItemEvents['emit'](_0x4961e4+':'+_0x30431e['id'],_0x30431e);DashboardItemEvents[_0xd847('0x6')](_0x4961e4,_0x30431e);_0x3d0bd2(null);};}for(var e in events){if(events[_0xd847('0x7')](e)){var event=events[e];DashboardItem[_0xd847('0x8')](e,emitEvent(event));}}module[_0xd847('0x9')]=DashboardItemEvents;
\ No newline at end of file
index 0d58f75..9d335f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x843b=['dashboard_items','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./dashboardItem.attributes','exports','define','DashboardItem'];(function(_0x4ca466,_0x2632cb){var _0x4b9284=function(_0x309a27){while(--_0x309a27){_0x4ca466['push'](_0x4ca466['shift']());}};_0x4b9284(++_0x2632cb);}(_0x843b,0xc5));var _0xb843=function(_0x1028eb,_0x488b3f){_0x1028eb=_0x1028eb-0x0;var _0x20a1df=_0x843b[_0x1028eb];return _0x20a1df;};'use strict';var _=require(_0xb843('0x0'));var util=require(_0xb843('0x1'));var logger=require(_0xb843('0x2'))('api');var moment=require(_0xb843('0x3'));var BPromise=require(_0xb843('0x4'));var rp=require(_0xb843('0x5'));var fs=require('fs');var path=require(_0xb843('0x6'));var rimraf=require(_0xb843('0x7'));var config=require(_0xb843('0x8'));var attributes=require(_0xb843('0x9'));module[_0xb843('0xa')]=function(_0x2ad5f3,_0x3987db){return _0x2ad5f3[_0xb843('0xb')](_0xb843('0xc'),attributes,{'tableName':_0xb843('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0a16=['request-promise','path','rimraf','./dashboardItem.attributes','exports','define','DashboardItem','dashboard_items','../../config/logger','api','bluebird'];(function(_0x3cd30b,_0x70fad5){var _0x56fcfe=function(_0x3bc8c4){while(--_0x3bc8c4){_0x3cd30b['push'](_0x3cd30b['shift']());}};_0x56fcfe(++_0x70fad5);}(_0x0a16,0x17e));var _0x60a1=function(_0x63e59d,_0x1696a7){_0x63e59d=_0x63e59d-0x0;var _0x5f4893=_0x0a16[_0x63e59d];return _0x5f4893;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x60a1('0x0'))(_0x60a1('0x1'));var moment=require('moment');var BPromise=require(_0x60a1('0x2'));var rp=require(_0x60a1('0x3'));var fs=require('fs');var path=require(_0x60a1('0x4'));var rimraf=require(_0x60a1('0x5'));var config=require('../../config/environment');var attributes=require(_0x60a1('0x6'));module[_0x60a1('0x7')]=function(_0x5c0e2b,_0x24b93d){return _0x5c0e2b[_0x60a1('0x8')](_0x60a1('0x9'),attributes,{'tableName':_0x60a1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5837e62..0e2ca25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8da9=['defaults','redis','localhost','socket.io-emitter','./dashboardItem.socket','register','request','then','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x409458,_0x5f4e8c){var _0xe3f00=function(_0x158402){while(--_0x158402){_0x409458['push'](_0x409458['shift']());}};_0xe3f00(++_0x5f4e8c);}(_0x8da9,0x186));var _0x98da=function(_0x456f35,_0x124842){_0x456f35=_0x456f35-0x0;var _0x2e65dd=_0x8da9[_0x456f35];return _0x2e65dd;};'use strict';var _=require(_0x98da('0x0'));var util=require(_0x98da('0x1'));var moment=require(_0x98da('0x2'));var BPromise=require(_0x98da('0x3'));var rs=require(_0x98da('0x4'));var fs=require('fs');var Redis=require(_0x98da('0x5'));var db=require(_0x98da('0x6'))['db'];var utils=require(_0x98da('0x7'));var logger=require(_0x98da('0x8'))(_0x98da('0x9'));var config=require(_0x98da('0xa'));var jayson=require('jayson/promise');var client=jayson[_0x98da('0xb')][_0x98da('0xc')]({'port':0x232a});config['redis']=_[_0x98da('0xd')](config[_0x98da('0xe')],{'host':_0x98da('0xf'),'port':0x18eb});var socket=require(_0x98da('0x10'))(new Redis(config[_0x98da('0xe')]));require(_0x98da('0x11'))[_0x98da('0x12')](socket);function respondWithRpcPromise(_0x5405f4,_0x2948c3,_0x33122c){return new BPromise(function(_0x56d799,_0x25c7d6){return client[_0x98da('0x13')](_0x5405f4,_0x33122c)[_0x98da('0x14')](function(_0x8b71b8){logger['info'](_0x98da('0x15'),_0x2948c3,_0x98da('0x16'));logger[_0x98da('0x17')](_0x98da('0x18'),_0x2948c3,_0x98da('0x16'),JSON[_0x98da('0x19')](_0x8b71b8));if(_0x8b71b8[_0x98da('0x1a')]){if(_0x8b71b8[_0x98da('0x1a')]['code']===0x1f4){logger['error']('DashboardItem,\x20%s,\x20%s',_0x2948c3,_0x8b71b8[_0x98da('0x1a')]['message']);return _0x25c7d6(_0x8b71b8['error'][_0x98da('0x1b')]);}logger[_0x98da('0x1a')](_0x98da('0x15'),_0x2948c3,_0x8b71b8['error']['message']);return _0x56d799(_0x8b71b8[_0x98da('0x1a')][_0x98da('0x1b')]);}else{logger[_0x98da('0x1c')]('DashboardItem,\x20%s,\x20%s',_0x2948c3,'request\x20sent');_0x56d799(_0x8b71b8[_0x98da('0x1d')]['message']);}})[_0x98da('0x1e')](function(_0x43416c){logger['error'](_0x98da('0x15'),_0x2948c3,_0x43416c);_0x25c7d6(_0x43416c);});});}
\ No newline at end of file
+var _0x792d=['request','info','request\x20sent','debug','DashboardItem,\x20%s,\x20%s,\x20%s','stringify','error','code','DashboardItem,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','./dashboardItem.socket','register'];(function(_0x19b6f5,_0x367239){var _0x5f429f=function(_0xe1000b){while(--_0xe1000b){_0x19b6f5['push'](_0x19b6f5['shift']());}};_0x5f429f(++_0x367239);}(_0x792d,0x123));var _0xd792=function(_0xa5a364,_0x250a50){_0xa5a364=_0xa5a364-0x0;var _0xdcf40f=_0x792d[_0xa5a364];return _0xdcf40f;};'use strict';var _=require(_0xd792('0x0'));var util=require(_0xd792('0x1'));var moment=require(_0xd792('0x2'));var BPromise=require(_0xd792('0x3'));var rs=require(_0xd792('0x4'));var fs=require('fs');var Redis=require(_0xd792('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xd792('0x6'));var logger=require(_0xd792('0x7'))(_0xd792('0x8'));var config=require(_0xd792('0x9'));var jayson=require(_0xd792('0xa'));var client=jayson['client'][_0xd792('0xb')]({'port':0x232a});config[_0xd792('0xc')]=_[_0xd792('0xd')](config[_0xd792('0xc')],{'host':_0xd792('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd792('0xc')]));require(_0xd792('0xf'))[_0xd792('0x10')](socket);function respondWithRpcPromise(_0x4654bd,_0x27a160,_0x454c9e){return new BPromise(function(_0x5e312e,_0x1f18b8){return client[_0xd792('0x11')](_0x4654bd,_0x454c9e)['then'](function(_0x1ac2ef){logger[_0xd792('0x12')]('DashboardItem,\x20%s,\x20%s',_0x27a160,_0xd792('0x13'));logger[_0xd792('0x14')](_0xd792('0x15'),_0x27a160,'request\x20sent',JSON[_0xd792('0x16')](_0x1ac2ef));if(_0x1ac2ef[_0xd792('0x17')]){if(_0x1ac2ef[_0xd792('0x17')][_0xd792('0x18')]===0x1f4){logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x1ac2ef[_0xd792('0x17')]['message']);return _0x1f18b8(_0x1ac2ef['error'][_0xd792('0x1a')]);}logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x1ac2ef['error'][_0xd792('0x1a')]);return _0x5e312e(_0x1ac2ef[_0xd792('0x17')][_0xd792('0x1a')]);}else{logger[_0xd792('0x12')](_0xd792('0x19'),_0x27a160,_0xd792('0x13'));_0x5e312e(_0x1ac2ef['result']['message']);}})[_0xd792('0x1b')](function(_0x763307){logger[_0xd792('0x17')](_0xd792('0x19'),_0x27a160,_0x763307);_0x1f18b8(_0x763307);});});}
\ No newline at end of file
index a883d42..c56a732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f26=['save','remove','update','emit','register','length','dashboardItem:'];(function(_0x2e8cbf,_0x36c592){var _0x28ce66=function(_0x3a0941){while(--_0x3a0941){_0x2e8cbf['push'](_0x2e8cbf['shift']());}};_0x28ce66(++_0x36c592);}(_0x6f26,0x12d));var _0x66f2=function(_0x1de390,_0x202934){_0x1de390=_0x1de390-0x0;var _0x195f29=_0x6f26[_0x1de390];return _0x195f29;};'use strict';var DashboardItemEvents=require('./dashboardItem.events');var events=[_0x66f2('0x0'),_0x66f2('0x1'),_0x66f2('0x2')];function createListener(_0x5b4714,_0x55f3f7){return function(_0x31eada){_0x55f3f7[_0x66f2('0x3')](_0x5b4714,_0x31eada);};}function removeListener(_0x39028c,_0x48fca7){return function(){DashboardItemEvents['removeListener'](_0x39028c,_0x48fca7);};}exports[_0x66f2('0x4')]=function(_0x4c6c6d){for(var _0x4a6478=0x0,_0x34d836=events[_0x66f2('0x5')];_0x4a6478<_0x34d836;_0x4a6478++){var _0x1ba4f7=events[_0x4a6478];var _0x5c85a1=createListener(_0x66f2('0x6')+_0x1ba4f7,_0x4c6c6d);DashboardItemEvents['on'](_0x1ba4f7,_0x5c85a1);}};
\ No newline at end of file
+var _0x1cc8=['./dashboardItem.events','save','remove','update','register','dashboardItem:'];(function(_0x431eae,_0xc1ef29){var _0x5c07b2=function(_0x419212){while(--_0x419212){_0x431eae['push'](_0x431eae['shift']());}};_0x5c07b2(++_0xc1ef29);}(_0x1cc8,0x198));var _0x81cc=function(_0x1f28c1,_0x4ebeaa){_0x1f28c1=_0x1f28c1-0x0;var _0xd44fe2=_0x1cc8[_0x1f28c1];return _0xd44fe2;};'use strict';var DashboardItemEvents=require(_0x81cc('0x0'));var events=[_0x81cc('0x1'),_0x81cc('0x2'),_0x81cc('0x3')];function createListener(_0x38c535,_0x315f2a){return function(_0x42ff09){_0x315f2a['emit'](_0x38c535,_0x42ff09);};}function removeListener(_0x47135a,_0x32625e){return function(){DashboardItemEvents['removeListener'](_0x47135a,_0x32625e);};}exports[_0x81cc('0x4')]=function(_0x44c288){for(var _0xab7023=0x0,_0x247cc1=events['length'];_0xab7023<_0x247cc1;_0xab7023++){var _0x51fd40=events[_0xab7023];var _0x5d8949=createListener(_0x81cc('0x5')+_0x51fd40,_0x44c288);DashboardItemEvents['on'](_0x51fd40,_0x5d8949);}};
\ No newline at end of file
index 8ea8907..465b5e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x425f=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./dashboardItem.controller','show','post','isAuthenticated','create','/:id','update','delete','destroy'];(function(_0x9faea2,_0x5b5fdb){var _0x499532=function(_0x1b3a76){while(--_0x1b3a76){_0x9faea2['push'](_0x9faea2['shift']());}};_0x499532(++_0x5b5fdb);}(_0x425f,0xee));var _0xf425=function(_0x2f0104,_0x55225a){_0x2f0104=_0x2f0104-0x0;var _0xcb3cce=_0x425f[_0x2f0104];return _0xcb3cce;};'use strict';var multer=require('multer');var util=require(_0xf425('0x0'));var path=require(_0xf425('0x1'));var timeout=require(_0xf425('0x2'));var express=require(_0xf425('0x3'));var router=express[_0xf425('0x4')]();var fs_extra=require(_0xf425('0x5'));var auth=require(_0xf425('0x6'));var interaction=require(_0xf425('0x7'));var config=require('../../config/environment');var controller=require(_0xf425('0x8'));router['get']('/:id',auth['isAuthenticated'](),controller[_0xf425('0x9')]);router[_0xf425('0xa')]('/',auth[_0xf425('0xb')](),controller[_0xf425('0xc')]);router['put'](_0xf425('0xd'),auth[_0xf425('0xb')](),controller[_0xf425('0xe')]);router[_0xf425('0xf')](_0xf425('0xd'),auth['isAuthenticated'](),controller[_0xf425('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xfe78=['../../components/interaction/service','../../config/environment','./dashboardItem.controller','/:id','isAuthenticated','show','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x33a948,_0x363a39){var _0x9dbb38=function(_0xc0d1e5){while(--_0xc0d1e5){_0x33a948['push'](_0x33a948['shift']());}};_0x9dbb38(++_0x363a39);}(_0xfe78,0x91));var _0x8fe7=function(_0x5aacc8,_0x405af7){_0x5aacc8=_0x5aacc8-0x0;var _0x32fb1e=_0xfe78[_0x5aacc8];return _0x32fb1e;};'use strict';var multer=require(_0x8fe7('0x0'));var util=require(_0x8fe7('0x1'));var path=require(_0x8fe7('0x2'));var timeout=require(_0x8fe7('0x3'));var express=require('express');var router=express[_0x8fe7('0x4')]();var fs_extra=require(_0x8fe7('0x5'));var auth=require(_0x8fe7('0x6'));var interaction=require(_0x8fe7('0x7'));var config=require(_0x8fe7('0x8'));var controller=require(_0x8fe7('0x9'));router['get'](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xc')]);router['post']('/',auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xd')]);router[_0x8fe7('0xe')](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0xf')]);router[_0x8fe7('0x10')](_0x8fe7('0xa'),auth[_0x8fe7('0xb')](),controller[_0x8fe7('0x11')]);module[_0x8fe7('0x12')]=router;
\ No newline at end of file
index 9f96f2e..45eb3f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ffe=['STRING','ENUM','first','second','third','exports'];(function(_0x369ee0,_0x57a15c){var _0x493a06=function(_0x570aaf){while(--_0x570aaf){_0x369ee0['push'](_0x369ee0['shift']());}};_0x493a06(++_0x57a15c);}(_0x2ffe,0x173));var _0xe2ff=function(_0x214fb4,_0x18f95f){_0x214fb4=_0x214fb4-0x0;var _0x5be811=_0x2ffe[_0x214fb4];return _0x5be811;};'use strict';var Sequelize=require('sequelize');module[_0xe2ff('0x0')]={'name':{'type':Sequelize[_0xe2ff('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0xe2ff('0x2')](_0xe2ff('0x3'),_0xe2ff('0x4'),_0xe2ff('0x5')),'allowNull':![],'defaultValue':'first'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x12a5=['STRING','ENUM','first','third','sequelize','exports'];(function(_0x468b55,_0x413fe1){var _0x1f5e45=function(_0x5c7f74){while(--_0x5c7f74){_0x468b55['push'](_0x468b55['shift']());}};_0x1f5e45(++_0x413fe1);}(_0x12a5,0x118));var _0x512a=function(_0x1b3744,_0x45cbb5){_0x1b3744=_0x1b3744-0x0;var _0x367dd2=_0x12a5[_0x1b3744];return _0x367dd2;};'use strict';var Sequelize=require(_0x512a('0x0'));module[_0x512a('0x1')]={'name':{'type':Sequelize[_0x512a('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0x512a('0x3')](_0x512a('0x4'),'second',_0x512a('0x5')),'allowNull':![],'defaultValue':_0x512a('0x4')},'description':{'type':Sequelize[_0x512a('0x2')]}};
\ No newline at end of file
index db9b825..1a8eb3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ec7=['userProfileId','autoAssociation','body','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','destroy','then','get','Dispositions','UserProfileResource','error','stack','name','index','map','Disposition','rawAttributes','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','include','catch','show','params','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x19a79d,_0xaa0f70){var _0x4ae495=function(_0x5790ce){while(--_0x5790ce){_0x19a79d['push'](_0x19a79d['shift']());}};_0x4ae495(++_0xaa0f70);}(_0x7ec7,0x1a2));var _0x77ec=function(_0x26d318,_0x119518){_0x26d318=_0x26d318-0x0;var _0x2136f4=_0x7ec7[_0x26d318];return _0x2136f4;};'use strict';var emlformat=require(_0x77ec('0x0'));var rimraf=require(_0x77ec('0x1'));var zipdir=require(_0x77ec('0x2'));var jsonpatch=require(_0x77ec('0x3'));var rp=require('request-promise');var moment=require(_0x77ec('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x77ec('0x5'));var util=require(_0x77ec('0x6'));var path=require(_0x77ec('0x7'));var sox=require(_0x77ec('0x8'));var csv=require(_0x77ec('0x9'));var ejs=require(_0x77ec('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x77ec('0xb'));var squel=require('squel');var crypto=require(_0x77ec('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x77ec('0xd'));var toCsv=require(_0x77ec('0x9'));var querystring=require(_0x77ec('0xe'));var Papa=require(_0x77ec('0xf'));var Redis=require(_0x77ec('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x77ec('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x77ec('0x12'));var logger=require('../../config/logger')(_0x77ec('0x13'));var utils=require(_0x77ec('0x14'));var config=require(_0x77ec('0x15'));var licenseUtil=require(_0x77ec('0x16'));var db=require(_0x77ec('0x17'))['db'];function respondWithStatusCode(_0x4933ed,_0x13463e){_0x13463e=_0x13463e||0xcc;return function(_0x3b6cb8){if(_0x3b6cb8){return _0x4933ed[_0x77ec('0x18')](_0x13463e);}return _0x4933ed[_0x77ec('0x19')](_0x13463e)[_0x77ec('0x1a')]();};}function respondWithResult(_0x45a009,_0x162dbb){_0x162dbb=_0x162dbb||0xc8;return function(_0x3147dc){if(_0x3147dc){return _0x45a009[_0x77ec('0x19')](_0x162dbb)['json'](_0x3147dc);}};}function respondWithFilteredResult(_0x4257bb,_0x35d30f){return function(_0x290b41){if(_0x290b41){var _0x275271=typeof _0x35d30f[_0x77ec('0x1b')]==='undefined'&&typeof _0x35d30f[_0x77ec('0x1c')]===_0x77ec('0x1d');var _0xbb38e3=_0x290b41['count'];var _0x5492b6=_0x275271?0x0:_0x35d30f[_0x77ec('0x1b')];var _0x1bdb1f=_0x275271?_0x290b41[_0x77ec('0x1e')]:_0x35d30f[_0x77ec('0x1b')]+_0x35d30f[_0x77ec('0x1c')];var _0x1739a6;if(_0x1bdb1f>=_0xbb38e3){_0x1bdb1f=_0xbb38e3;_0x1739a6=0xc8;}else{_0x1739a6=0xce;}_0x4257bb[_0x77ec('0x19')](_0x1739a6);return _0x4257bb[_0x77ec('0x1f')](_0x77ec('0x20'),_0x5492b6+'-'+_0x1bdb1f+'/'+_0xbb38e3)[_0x77ec('0x21')](_0x290b41);}return null;};}function patchUpdates(_0x525711){return function(_0x391103){try{jsonpatch[_0x77ec('0x22')](_0x391103,_0x525711,!![]);}catch(_0x559190){return BPromise[_0x77ec('0x23')](_0x559190);}return _0x391103[_0x77ec('0x24')]();};}function saveUpdates(_0x28fc56,_0x5b45b0){return function(_0x70e96){if(_0x70e96){return _0x70e96[_0x77ec('0x25')](_0x28fc56)['then'](function(_0x49701f){return _0x49701f;});}return null;};}function removeEntity(_0x2f6eda,_0x394529){return function(_0x4c54c7){if(_0x4c54c7){return _0x4c54c7[_0x77ec('0x26')]()[_0x77ec('0x27')](function(){var _0x7dd51d=_0x4c54c7[_0x77ec('0x28')]({'plain':!![]});var _0x5f2826=_0x77ec('0x29');return db[_0x77ec('0x2a')][_0x77ec('0x26')]({'where':{'type':_0x5f2826,'resourceId':_0x7dd51d['id']}})[_0x77ec('0x27')](function(){return _0x4c54c7;});})[_0x77ec('0x27')](function(){_0x2f6eda[_0x77ec('0x19')](0xcc)[_0x77ec('0x1a')]();});}};}function handleEntityNotFound(_0x1b97c1,_0x5ec4c5){return function(_0x490b6a){if(!_0x490b6a){_0x1b97c1[_0x77ec('0x18')](0x194);}return _0x490b6a;};}function handleError(_0x117886,_0x231255){_0x231255=_0x231255||0x1f4;return function(_0x4ffcc6){logger[_0x77ec('0x2b')](_0x4ffcc6[_0x77ec('0x2c')]);if(_0x4ffcc6[_0x77ec('0x2d')]){delete _0x4ffcc6[_0x77ec('0x2d')];}_0x117886['status'](_0x231255)['send'](_0x4ffcc6);};}exports[_0x77ec('0x2e')]=function(_0x24b0a5,_0x2f7e0c){var _0x2fe795={},_0x19347c={},_0x29eb85={'count':0x0,'rows':[]};var _0x415038=_[_0x77ec('0x2f')](db[_0x77ec('0x30')][_0x77ec('0x31')],function(_0x1582a3){return{'name':_0x1582a3['fieldName'],'type':_0x1582a3[_0x77ec('0x32')][_0x77ec('0x33')]};});_0x19347c['model']=_[_0x77ec('0x2f')](_0x415038,_0x77ec('0x2d'));_0x19347c[_0x77ec('0x34')]=_[_0x77ec('0x35')](_0x24b0a5[_0x77ec('0x34')]);_0x19347c['filters']=_['intersection'](_0x19347c[_0x77ec('0x36')],_0x19347c[_0x77ec('0x34')]);_0x2fe795[_0x77ec('0x37')]=_[_0x77ec('0x38')](_0x19347c[_0x77ec('0x36')],qs[_0x77ec('0x39')](_0x24b0a5[_0x77ec('0x34')][_0x77ec('0x39')]));_0x2fe795[_0x77ec('0x37')]=_0x2fe795['attributes'][_0x77ec('0x3a')]?_0x2fe795[_0x77ec('0x37')]:_0x19347c[_0x77ec('0x36')];if(!_0x24b0a5[_0x77ec('0x34')][_0x77ec('0x3b')](_0x77ec('0x3c'))){_0x2fe795[_0x77ec('0x1c')]=qs[_0x77ec('0x1c')](_0x24b0a5[_0x77ec('0x34')]['limit']);_0x2fe795[_0x77ec('0x1b')]=qs[_0x77ec('0x1b')](_0x24b0a5[_0x77ec('0x34')][_0x77ec('0x1b')]);}_0x2fe795[_0x77ec('0x3d')]=qs['sort'](_0x24b0a5[_0x77ec('0x34')]['sort']);_0x2fe795['where']=qs[_0x77ec('0x3e')](_[_0x77ec('0x3f')](_0x24b0a5['query'],_0x19347c['filters']),_0x415038);if(_0x24b0a5['query'][_0x77ec('0x40')]){_0x2fe795[_0x77ec('0x41')]=_[_0x77ec('0x42')](_0x2fe795[_0x77ec('0x41')],{'$or':_[_0x77ec('0x2f')](_0x415038,function(_0x3cee70){if(_0x3cee70[_0x77ec('0x32')]!==_0x77ec('0x43')){var _0x2c8ab2={};_0x2c8ab2[_0x3cee70[_0x77ec('0x2d')]]={'$like':'%'+_0x24b0a5['query'][_0x77ec('0x40')]+'%'};return _0x2c8ab2;}})});}_0x2fe795=_[_0x77ec('0x42')]({},_0x2fe795,_0x24b0a5[_0x77ec('0x44')]);var _0x3013a3={'where':_0x2fe795[_0x77ec('0x41')]};return db[_0x77ec('0x30')][_0x77ec('0x1e')](_0x3013a3)[_0x77ec('0x27')](function(_0x4c6ad5){_0x29eb85[_0x77ec('0x1e')]=_0x4c6ad5;if(_0x24b0a5['query'][_0x77ec('0x45')]){_0x2fe795[_0x77ec('0x46')]=[{'all':!![]}];}return db[_0x77ec('0x30')]['findAll'](_0x2fe795);})['then'](function(_0xa7e37a){_0x29eb85['rows']=_0xa7e37a;return _0x29eb85;})[_0x77ec('0x27')](respondWithFilteredResult(_0x2f7e0c,_0x2fe795))[_0x77ec('0x47')](handleError(_0x2f7e0c,null));};exports[_0x77ec('0x48')]=function(_0x247196,_0x3e85fd){var _0x327b41={'raw':!![],'where':{'id':_0x247196[_0x77ec('0x49')]['id']}},_0x2909d0={};_0x2909d0[_0x77ec('0x36')]=_[_0x77ec('0x35')](db['Disposition']['rawAttributes']);_0x2909d0[_0x77ec('0x34')]=_[_0x77ec('0x35')](_0x247196[_0x77ec('0x34')]);_0x2909d0[_0x77ec('0x3e')]=_[_0x77ec('0x38')](_0x2909d0[_0x77ec('0x36')],_0x2909d0[_0x77ec('0x34')]);_0x327b41[_0x77ec('0x37')]=_[_0x77ec('0x38')](_0x2909d0['model'],qs['fields'](_0x247196[_0x77ec('0x34')]['fields']));_0x327b41[_0x77ec('0x37')]=_0x327b41[_0x77ec('0x37')][_0x77ec('0x3a')]?_0x327b41[_0x77ec('0x37')]:_0x2909d0[_0x77ec('0x36')];if(_0x247196[_0x77ec('0x34')][_0x77ec('0x45')]){_0x327b41[_0x77ec('0x46')]=[{'all':!![]}];}_0x327b41=_['merge']({},_0x327b41,_0x247196[_0x77ec('0x44')]);return db[_0x77ec('0x30')][_0x77ec('0x4a')](_0x327b41)[_0x77ec('0x27')](handleEntityNotFound(_0x3e85fd,null))[_0x77ec('0x27')](respondWithResult(_0x3e85fd,null))[_0x77ec('0x47')](handleError(_0x3e85fd,null));};exports[_0x77ec('0x4b')]=function(_0x372beb,_0x806eb5){return db['Disposition'][_0x77ec('0x4b')](_0x372beb['body'],{})['then'](function(_0x3e50b7){var _0x1847cf=_0x372beb[_0x77ec('0x4c')]['get']({'plain':!![]});if(!_0x1847cf)throw new Error(_0x77ec('0x4d'));if(_0x1847cf[_0x77ec('0x4e')]===_0x77ec('0x4c')){var _0x3f0898=_0x3e50b7[_0x77ec('0x28')]({'plain':!![]});var _0x587dc9=_0x77ec('0x29');return db[_0x77ec('0x4f')][_0x77ec('0x4a')]({'where':{'name':_0x587dc9,'userProfileId':_0x1847cf[_0x77ec('0x50')]},'raw':!![]})['then'](function(_0x36953d){if(_0x36953d&&_0x36953d[_0x77ec('0x51')]===0x0){return db[_0x77ec('0x2a')][_0x77ec('0x4b')]({'name':_0x3f0898[_0x77ec('0x2d')],'resourceId':_0x3f0898['id'],'type':_0x36953d[_0x77ec('0x2d')],'sectionId':_0x36953d['id']},{})['then'](function(){return _0x3e50b7;});}else{return _0x3e50b7;}})[_0x77ec('0x47')](function(_0x2877c4){logger[_0x77ec('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2877c4);throw _0x2877c4;});}return _0x3e50b7;})[_0x77ec('0x27')](respondWithResult(_0x806eb5,0xc9))[_0x77ec('0x47')](handleError(_0x806eb5,null));};exports[_0x77ec('0x25')]=function(_0x405f7c,_0x294c9d){if(_0x405f7c['body']['id']){delete _0x405f7c[_0x77ec('0x52')]['id'];}return db[_0x77ec('0x30')][_0x77ec('0x4a')]({'where':{'id':_0x405f7c['params']['id']}})[_0x77ec('0x27')](handleEntityNotFound(_0x294c9d,null))['then'](saveUpdates(_0x405f7c[_0x77ec('0x52')],null))['then'](respondWithResult(_0x294c9d,null))[_0x77ec('0x47')](handleError(_0x294c9d,null));};exports[_0x77ec('0x26')]=function(_0x2fb369,_0x4d2161){return db[_0x77ec('0x30')][_0x77ec('0x4a')]({'where':{'id':_0x2fb369[_0x77ec('0x49')]['id']}})['then'](handleEntityNotFound(_0x4d2161,null))[_0x77ec('0x27')](removeEntity(_0x4d2161,null))[_0x77ec('0x47')](handleError(_0x4d2161,null));};
\ No newline at end of file
+var _0x38ec=['body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','index','map','Disposition','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','includeAll','include','findAll','rows','catch','params','options','find','create','user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update'];(function(_0x11ec09,_0x24e078){var _0x410d64=function(_0x1a026a){while(--_0x1a026a){_0x11ec09['push'](_0x11ec09['shift']());}};_0x410d64(++_0x24e078);}(_0x38ec,0xfa));var _0xc38e=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x38ec[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xc38e('0x0'));var rimraf=require(_0xc38e('0x1'));var zipdir=require(_0xc38e('0x2'));var jsonpatch=require(_0xc38e('0x3'));var rp=require(_0xc38e('0x4'));var moment=require(_0xc38e('0x5'));var BPromise=require(_0xc38e('0x6'));var Mustache=require(_0xc38e('0x7'));var util=require(_0xc38e('0x8'));var path=require('path');var sox=require(_0xc38e('0x9'));var csv=require(_0xc38e('0xa'));var ejs=require(_0xc38e('0xb'));var fs=require('fs');var fs_extra=require(_0xc38e('0xc'));var _=require(_0xc38e('0xd'));var squel=require(_0xc38e('0xe'));var crypto=require(_0xc38e('0xf'));var jsforce=require(_0xc38e('0x10'));var deskjs=require(_0xc38e('0x11'));var toCsv=require(_0xc38e('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc38e('0x12'));var authService=require(_0xc38e('0x13'));var qs=require(_0xc38e('0x14'));var as=require(_0xc38e('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc38e('0x16'))(_0xc38e('0x17'));var utils=require('../../config/utils');var config=require(_0xc38e('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x259a4d,_0x3e90ab){_0x3e90ab=_0x3e90ab||0xcc;return function(_0x3c808d){if(_0x3c808d){return _0x259a4d[_0xc38e('0x19')](_0x3e90ab);}return _0x259a4d[_0xc38e('0x1a')](_0x3e90ab)[_0xc38e('0x1b')]();};}function respondWithResult(_0x32273a,_0x33e11a){_0x33e11a=_0x33e11a||0xc8;return function(_0x4f6f89){if(_0x4f6f89){return _0x32273a[_0xc38e('0x1a')](_0x33e11a)[_0xc38e('0x1c')](_0x4f6f89);}};}function respondWithFilteredResult(_0x5cb21f,_0x10fee9){return function(_0x13c707){if(_0x13c707){var _0x1d189f=typeof _0x10fee9[_0xc38e('0x1d')]==='undefined'&&typeof _0x10fee9[_0xc38e('0x1e')]===_0xc38e('0x1f');var _0x38be21=_0x13c707[_0xc38e('0x20')];var _0x29a89b=_0x1d189f?0x0:_0x10fee9[_0xc38e('0x1d')];var _0x14d09f=_0x1d189f?_0x13c707[_0xc38e('0x20')]:_0x10fee9[_0xc38e('0x1d')]+_0x10fee9[_0xc38e('0x1e')];var _0x38e4af;if(_0x14d09f>=_0x38be21){_0x14d09f=_0x38be21;_0x38e4af=0xc8;}else{_0x38e4af=0xce;}_0x5cb21f[_0xc38e('0x1a')](_0x38e4af);return _0x5cb21f['set'](_0xc38e('0x21'),_0x29a89b+'-'+_0x14d09f+'/'+_0x38be21)[_0xc38e('0x1c')](_0x13c707);}return null;};}function patchUpdates(_0x5d8a6c){return function(_0x48e7d4){try{jsonpatch[_0xc38e('0x22')](_0x48e7d4,_0x5d8a6c,!![]);}catch(_0x16f781){return BPromise[_0xc38e('0x23')](_0x16f781);}return _0x48e7d4[_0xc38e('0x24')]();};}function saveUpdates(_0x135f77,_0x45ad96){return function(_0x4bdd5d){if(_0x4bdd5d){return _0x4bdd5d['update'](_0x135f77)[_0xc38e('0x25')](function(_0x388918){return _0x388918;});}return null;};}function removeEntity(_0x4cf9d3,_0xcc1fa){return function(_0x538398){if(_0x538398){return _0x538398[_0xc38e('0x26')]()[_0xc38e('0x25')](function(){var _0x12528c=_0x538398[_0xc38e('0x27')]({'plain':!![]});var _0x35c2de=_0xc38e('0x28');return db[_0xc38e('0x29')]['destroy']({'where':{'type':_0x35c2de,'resourceId':_0x12528c['id']}})['then'](function(){return _0x538398;});})['then'](function(){_0x4cf9d3[_0xc38e('0x1a')](0xcc)[_0xc38e('0x1b')]();});}};}function handleEntityNotFound(_0x3a6203,_0x2b3963){return function(_0x19b6c3){if(!_0x19b6c3){_0x3a6203[_0xc38e('0x19')](0x194);}return _0x19b6c3;};}function handleError(_0x26e70d,_0x2621b2){_0x2621b2=_0x2621b2||0x1f4;return function(_0x76853f){logger[_0xc38e('0x2a')](_0x76853f[_0xc38e('0x2b')]);if(_0x76853f[_0xc38e('0x2c')]){delete _0x76853f[_0xc38e('0x2c')];}_0x26e70d[_0xc38e('0x1a')](_0x2621b2)['send'](_0x76853f);};}exports[_0xc38e('0x2d')]=function(_0x105a8a,_0x35e567){var _0x1f9200={},_0x1880ed={},_0x6dea58={'count':0x0,'rows':[]};var _0x4b2128=_[_0xc38e('0x2e')](db[_0xc38e('0x2f')][_0xc38e('0x30')],function(_0x2eb3a5){return{'name':_0x2eb3a5[_0xc38e('0x31')],'type':_0x2eb3a5[_0xc38e('0x32')][_0xc38e('0x33')]};});_0x1880ed[_0xc38e('0x34')]=_[_0xc38e('0x2e')](_0x4b2128,_0xc38e('0x2c'));_0x1880ed[_0xc38e('0x35')]=_[_0xc38e('0x36')](_0x105a8a[_0xc38e('0x35')]);_0x1880ed[_0xc38e('0x37')]=_[_0xc38e('0x38')](_0x1880ed[_0xc38e('0x34')],_0x1880ed['query']);_0x1f9200['attributes']=_[_0xc38e('0x38')](_0x1880ed[_0xc38e('0x34')],qs[_0xc38e('0x39')](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x39')]));_0x1f9200[_0xc38e('0x3a')]=_0x1f9200['attributes'][_0xc38e('0x3b')]?_0x1f9200[_0xc38e('0x3a')]:_0x1880ed[_0xc38e('0x34')];if(!_0x105a8a[_0xc38e('0x35')][_0xc38e('0x3c')](_0xc38e('0x3d'))){_0x1f9200[_0xc38e('0x1e')]=qs[_0xc38e('0x1e')](_0x105a8a[_0xc38e('0x35')]['limit']);_0x1f9200[_0xc38e('0x1d')]=qs['offset'](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x1d')]);}_0x1f9200[_0xc38e('0x3e')]=qs[_0xc38e('0x3f')](_0x105a8a[_0xc38e('0x35')][_0xc38e('0x3f')]);_0x1f9200[_0xc38e('0x40')]=qs[_0xc38e('0x37')](_[_0xc38e('0x41')](_0x105a8a[_0xc38e('0x35')],_0x1880ed[_0xc38e('0x37')]),_0x4b2128);if(_0x105a8a[_0xc38e('0x35')]['filter']){_0x1f9200[_0xc38e('0x40')]=_[_0xc38e('0x42')](_0x1f9200[_0xc38e('0x40')],{'$or':_[_0xc38e('0x2e')](_0x4b2128,function(_0x4a5b19){if(_0x4a5b19[_0xc38e('0x32')]!=='VIRTUAL'){var _0x18a805={};_0x18a805[_0x4a5b19[_0xc38e('0x2c')]]={'$like':'%'+_0x105a8a[_0xc38e('0x35')]['filter']+'%'};return _0x18a805;}})});}_0x1f9200=_['merge']({},_0x1f9200,_0x105a8a['options']);var _0x502365={'where':_0x1f9200[_0xc38e('0x40')]};return db['Disposition'][_0xc38e('0x20')](_0x502365)['then'](function(_0xc879d3){_0x6dea58[_0xc38e('0x20')]=_0xc879d3;if(_0x105a8a[_0xc38e('0x35')][_0xc38e('0x43')]){_0x1f9200[_0xc38e('0x44')]=[{'all':!![]}];}return db['Disposition'][_0xc38e('0x45')](_0x1f9200);})[_0xc38e('0x25')](function(_0x42287c){_0x6dea58[_0xc38e('0x46')]=_0x42287c;return _0x6dea58;})[_0xc38e('0x25')](respondWithFilteredResult(_0x35e567,_0x1f9200))[_0xc38e('0x47')](handleError(_0x35e567,null));};exports['show']=function(_0xead33f,_0x3f51ef){var _0x1bf043={'raw':!![],'where':{'id':_0xead33f[_0xc38e('0x48')]['id']}},_0x4fd907={};_0x4fd907[_0xc38e('0x34')]=_['keys'](db[_0xc38e('0x2f')]['rawAttributes']);_0x4fd907['query']=_[_0xc38e('0x36')](_0xead33f[_0xc38e('0x35')]);_0x4fd907[_0xc38e('0x37')]=_['intersection'](_0x4fd907['model'],_0x4fd907[_0xc38e('0x35')]);_0x1bf043[_0xc38e('0x3a')]=_[_0xc38e('0x38')](_0x4fd907[_0xc38e('0x34')],qs[_0xc38e('0x39')](_0xead33f[_0xc38e('0x35')][_0xc38e('0x39')]));_0x1bf043[_0xc38e('0x3a')]=_0x1bf043[_0xc38e('0x3a')]['length']?_0x1bf043['attributes']:_0x4fd907['model'];if(_0xead33f[_0xc38e('0x35')][_0xc38e('0x43')]){_0x1bf043[_0xc38e('0x44')]=[{'all':!![]}];}_0x1bf043=_[_0xc38e('0x42')]({},_0x1bf043,_0xead33f[_0xc38e('0x49')]);return db[_0xc38e('0x2f')][_0xc38e('0x4a')](_0x1bf043)[_0xc38e('0x25')](handleEntityNotFound(_0x3f51ef,null))[_0xc38e('0x25')](respondWithResult(_0x3f51ef,null))[_0xc38e('0x47')](handleError(_0x3f51ef,null));};exports[_0xc38e('0x4b')]=function(_0x3c93,_0x28ae3a){return db['Disposition'][_0xc38e('0x4b')](_0x3c93['body'],{})[_0xc38e('0x25')](function(_0x290404){var _0x3c1ac4=_0x3c93[_0xc38e('0x4c')][_0xc38e('0x27')]({'plain':!![]});if(!_0x3c1ac4)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3c1ac4[_0xc38e('0x4d')]===_0xc38e('0x4c')){var _0x1d95e9=_0x290404[_0xc38e('0x27')]({'plain':!![]});var _0x4df5d4='Dispositions';return db['UserProfileSection'][_0xc38e('0x4a')]({'where':{'name':_0x4df5d4,'userProfileId':_0x3c1ac4[_0xc38e('0x4e')]},'raw':!![]})['then'](function(_0x143a17){if(_0x143a17&&_0x143a17[_0xc38e('0x4f')]===0x0){return db['UserProfileResource']['create']({'name':_0x1d95e9[_0xc38e('0x2c')],'resourceId':_0x1d95e9['id'],'type':_0x143a17[_0xc38e('0x2c')],'sectionId':_0x143a17['id']},{})['then'](function(){return _0x290404;});}else{return _0x290404;}})[_0xc38e('0x47')](function(_0x41881a){logger[_0xc38e('0x2a')](_0xc38e('0x50'),_0x41881a);throw _0x41881a;});}return _0x290404;})['then'](respondWithResult(_0x28ae3a,0xc9))[_0xc38e('0x47')](handleError(_0x28ae3a,null));};exports[_0xc38e('0x51')]=function(_0xba6652,_0x1cf4c7){if(_0xba6652[_0xc38e('0x52')]['id']){delete _0xba6652[_0xc38e('0x52')]['id'];}return db['Disposition'][_0xc38e('0x4a')]({'where':{'id':_0xba6652[_0xc38e('0x48')]['id']}})['then'](handleEntityNotFound(_0x1cf4c7,null))['then'](saveUpdates(_0xba6652['body'],null))[_0xc38e('0x25')](respondWithResult(_0x1cf4c7,null))[_0xc38e('0x47')](handleError(_0x1cf4c7,null));};exports['destroy']=function(_0x38c5ce,_0x17916d){return db[_0xc38e('0x2f')][_0xc38e('0x4a')]({'where':{'id':_0x38c5ce[_0xc38e('0x48')]['id']}})[_0xc38e('0x25')](handleEntityNotFound(_0x17916d,null))[_0xc38e('0x25')](removeEntity(_0x17916d,null))[_0xc38e('0x47')](handleError(_0x17916d,null));};
\ No newline at end of file
index fdab8b7..ecb7e23 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8555=['WhatsappAccountId','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','Disposition','name_voice','name','name_chat','ChatWebsiteId','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp'];(function(_0x1e371f,_0x361627){var _0x4671ef=function(_0x1309f9){while(--_0x1309f9){_0x1e371f['push'](_0x1e371f['shift']());}};_0x4671ef(++_0x361627);}(_0x8555,0xc1));var _0x5855=function(_0x4011fe,_0x497486){_0x4011fe=_0x4011fe-0x0;var _0x340542=_0x8555[_0x4011fe];return _0x340542;};'use strict';var _=require(_0x5855('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5855('0x1'));var moment=require(_0x5855('0x2'));var BPromise=require(_0x5855('0x3'));var rp=require(_0x5855('0x4'));var fs=require('fs');var path=require(_0x5855('0x5'));var rimraf=require(_0x5855('0x6'));var config=require(_0x5855('0x7'));var attributes=require('./disposition.attributes');module[_0x5855('0x8')]=function(_0xdd9df4,_0x207894){return _0xdd9df4['define'](_0x5855('0x9'),attributes,{'tableName':'tools_dispositions','paranoid':![],'indexes':[{'unique':!![],'name':_0x5855('0xa'),'fields':[_0x5855('0xb'),'ListId']},{'unique':!![],'name':_0x5855('0xc'),'fields':[_0x5855('0xb'),_0x5855('0xd')]},{'unique':!![],'name':_0x5855('0xe'),'fields':[_0x5855('0xb'),_0x5855('0xf')]},{'unique':!![],'name':_0x5855('0x10'),'fields':[_0x5855('0xb'),_0x5855('0x11')]},{'unique':!![],'name':_0x5855('0x12'),'fields':[_0x5855('0xb'),_0x5855('0x13')]},{'unique':!![],'name':_0x5855('0x14'),'fields':['name',_0x5855('0x15')]},{'unique':!![],'name':_0x5855('0x16'),'fields':[_0x5855('0xb'),_0x5855('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd8cc=['bluebird','request-promise','path','rimraf','../../config/environment','./disposition.attributes','define','Disposition','tools_dispositions','name_voice','name','name_chat','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','api','moment'];(function(_0x3187f1,_0x4b86b9){var _0x547d6b=function(_0x16e680){while(--_0x16e680){_0x3187f1['push'](_0x3187f1['shift']());}};_0x547d6b(++_0x4b86b9);}(_0xd8cc,0x1e1));var _0xcd8c=function(_0x2d486b,_0x5f213c){_0x2d486b=_0x2d486b-0x0;var _0x4291d1=_0xd8cc[_0x2d486b];return _0x4291d1;};'use strict';var _=require(_0xcd8c('0x0'));var util=require(_0xcd8c('0x1'));var logger=require(_0xcd8c('0x2'))(_0xcd8c('0x3'));var moment=require(_0xcd8c('0x4'));var BPromise=require(_0xcd8c('0x5'));var rp=require(_0xcd8c('0x6'));var fs=require('fs');var path=require(_0xcd8c('0x7'));var rimraf=require(_0xcd8c('0x8'));var config=require(_0xcd8c('0x9'));var attributes=require(_0xcd8c('0xa'));module['exports']=function(_0x21cedd,_0x4732c1){return _0x21cedd[_0xcd8c('0xb')](_0xcd8c('0xc'),attributes,{'tableName':_0xcd8c('0xd'),'paranoid':![],'indexes':[{'unique':!![],'name':_0xcd8c('0xe'),'fields':[_0xcd8c('0xf'),'ListId']},{'unique':!![],'name':_0xcd8c('0x10'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xcd8c('0x11'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x12')]},{'unique':!![],'name':_0xcd8c('0x13'),'fields':['name',_0xcd8c('0x14')]},{'unique':!![],'name':_0xcd8c('0x15'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x16')]},{'unique':!![],'name':_0xcd8c('0x17'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x18')]},{'unique':!![],'name':_0xcd8c('0x19'),'fields':[_0xcd8c('0xf'),_0xcd8c('0x1a')]}],'timestamps':!![]});};
\ No newline at end of file
index bcd3bdb..5246e34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x5f1436,_0x1dd84c){var _0x5ce631=function(_0x55079b){while(--_0x55079b){_0x5f1436['push'](_0x5f1436['shift']());}};_0x5ce631(++_0x1dd84c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
+var _0xa9e0=['http','info','Disposition,\x20%s,\x20%s','request\x20sent','debug','Disposition,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x28b525,_0x47dfa2){var _0x20915f=function(_0x478f19){while(--_0x478f19){_0x28b525['push'](_0x28b525['shift']());}};_0x20915f(++_0x47dfa2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}
\ No newline at end of file
index 396fb59..2ed169c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71a1=['put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','show','post','create'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x71a1,0x1eb));var _0x171a=function(_0x11341c,_0x599caa){_0x11341c=_0x11341c-0x0;var _0x5dd5de=_0x71a1[_0x11341c];return _0x5dd5de;};'use strict';var multer=require(_0x171a('0x0'));var util=require(_0x171a('0x1'));var path=require(_0x171a('0x2'));var timeout=require(_0x171a('0x3'));var express=require(_0x171a('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x171a('0x5'));var interaction=require(_0x171a('0x6'));var config=require('../../config/environment');var controller=require('./disposition.controller');router[_0x171a('0x7')]('/',auth[_0x171a('0x8')](),controller['index']);router[_0x171a('0x7')](_0x171a('0x9'),auth[_0x171a('0x8')](),controller[_0x171a('0xa')]);router[_0x171a('0xb')]('/',auth[_0x171a('0x8')](),controller[_0x171a('0xc')]);router[_0x171a('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x171a('0xe')]);router[_0x171a('0xf')](_0x171a('0x9'),auth[_0x171a('0x8')](),controller[_0x171a('0x10')]);module[_0x171a('0x11')]=router;
\ No newline at end of file
+var _0x9b60=['put','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x9b60,0x147));var _0x09b6=function(_0x2578af,_0x408e3d){_0x2578af=_0x2578af-0x0;var _0x3a2a1b=_0x9b60[_0x2578af];return _0x3a2a1b;};'use strict';var multer=require(_0x09b6('0x0'));var util=require(_0x09b6('0x1'));var path=require(_0x09b6('0x2'));var timeout=require('connect-timeout');var express=require(_0x09b6('0x3'));var router=express[_0x09b6('0x4')]();var fs_extra=require(_0x09b6('0x5'));var auth=require(_0x09b6('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x09b6('0x7'));var controller=require('./disposition.controller');router['get']('/',auth[_0x09b6('0x8')](),controller[_0x09b6('0x9')]);router[_0x09b6('0xa')](_0x09b6('0xb'),auth[_0x09b6('0x8')](),controller[_0x09b6('0xc')]);router[_0x09b6('0xd')]('/',auth[_0x09b6('0x8')](),controller[_0x09b6('0xe')]);router[_0x09b6('0xf')]('/:id',auth[_0x09b6('0x8')](),controller[_0x09b6('0x10')]);router[_0x09b6('0x11')](_0x09b6('0xb'),auth['isAuthenticated'](),controller[_0x09b6('0x12')]);module['exports']=router;
\ No newline at end of file
index 6b0058c..e134e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7df5=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','xCALLY\x20Motion\x20Fax','localstationid','7200','9600','12000','4800','14400','INTEGER','ENUM','SIP','IAX','KHOMP','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x200aa5,_0x197802){var _0x458200=function(_0x594959){while(--_0x594959){_0x200aa5['push'](_0x200aa5['shift']());}};_0x458200(++_0x197802);}(_0x7df5,0xd1));var _0x57df=function(_0x462999,_0x24d200){_0x462999=_0x462999-0x0;var _0x4b1366=_0x7df5[_0x462999];return _0x4b1366;};'use strict';var Sequelize=require(_0x57df('0x0'));module[_0x57df('0x1')]={'name':{'type':Sequelize[_0x57df('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x57df('0x2')]},'ecm':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes'},'headerinfo':{'type':Sequelize[_0x57df('0x2')],'defaultValue':_0x57df('0x3')},'localstationid':{'type':Sequelize[_0x57df('0x2')],'unique':_0x57df('0x4')},'minrate':{'type':Sequelize['ENUM']('2400','4800',_0x57df('0x5'),_0x57df('0x6'),_0x57df('0x7'),'14400'),'defaultValue':_0x57df('0x8')},'maxrate':{'type':Sequelize['ENUM']('2400',_0x57df('0x8'),_0x57df('0x5'),_0x57df('0x6'),_0x57df('0x7'),_0x57df('0x9')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0x57df('0x2')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0x57df('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0x57df('0x2')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0x57df('0xa')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0x57df('0xb')](_0x57df('0xc'),_0x57df('0xd'),'DADHI',_0x57df('0xe')),'defaultValue':_0x57df('0xc')},'key':{'type':Sequelize[_0x57df('0x2')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x57df('0xf')],'defaultValue':function(){return _0x57df('0x10');}},'notificationSound':{'type':Sequelize[_0x57df('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x57df('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x57df('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x57df('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x57df('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0x57df('0x12')},'mandatoryDisposition':{'type':Sequelize[_0x57df('0x11')],'defaultValue':![],'comment':_0x57df('0x13'),'set':function(_0x151faf){if(!_0x151faf)this[_0x57df('0x14')](_0x57df('0x15'),null);this[_0x57df('0x14')](_0x57df('0x16'),_0x151faf);}}};
\ No newline at end of file
+var _0x362a=['mandatoryDisposition','exports','STRING','yes','xCALLY\x20Motion\x20Fax','localstationid','ENUM','4800','9600','12000','2400','14400','INTEGER','SIP','IAX','DADHI','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x362a,0xb5));var _0xa362=function(_0x282026,_0x15f1e8){_0x282026=_0x282026-0x0;var _0x201157=_0x362a[_0x282026];return _0x201157;};'use strict';var Sequelize=require('sequelize');module[_0xa362('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xa362('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0xa362('0x2'),'no'),'defaultValue':_0xa362('0x2')},'headerinfo':{'type':Sequelize[_0xa362('0x1')],'defaultValue':_0xa362('0x3')},'localstationid':{'type':Sequelize[_0xa362('0x1')],'unique':_0xa362('0x4')},'minrate':{'type':Sequelize[_0xa362('0x5')]('2400',_0xa362('0x6'),'7200',_0xa362('0x7'),_0xa362('0x8'),'14400'),'defaultValue':_0xa362('0x6')},'maxrate':{'type':Sequelize[_0xa362('0x5')](_0xa362('0x9'),_0xa362('0x6'),'7200',_0xa362('0x7'),_0xa362('0x8'),_0xa362('0xa')),'defaultValue':_0xa362('0xa')},'modem':{'type':Sequelize[_0xa362('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize[_0xa362('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xa362('0xb')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize['ENUM'](_0xa362('0xc'),_0xa362('0xd'),_0xa362('0xe'),'KHOMP'),'defaultValue':'SIP'},'key':{'type':Sequelize[_0xa362('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xa362('0xf')],'defaultValue':function(){return _0xa362('0x10');}},'notificationSound':{'type':Sequelize[_0xa362('0x11')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa362('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa362('0xb')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa362('0xb')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xa362('0x11')],'defaultValue':![],'comment':_0xa362('0x12'),'set':function(_0x52fb77){if(!_0x52fb77)this['setDataValue']('mandatoryDispositionPauseId',null);this['setDataValue'](_0xa362('0x13'),_0x52fb77);}}};
\ No newline at end of file
index dae6655..f72f50b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba20=['filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','FaxAccount','includeAll','include','findAll','show','params','length','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','options','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','order','rows','removeAnswers','addInteraction','omit','getInteractions','FaxInteraction','CmContact','Contact','Owner','Tag','color','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','getApplications','context','from-voip-provider','exten','localstationid','app','system','Fax\x20Extension','priority','push','Answer','CDR(type)=inbound-fax','Set','ecm','gateway','faxdetect','headerinfo','maxrate','modem','t38timeout','FAXOPT(','/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d','ReceiveFax','addAccountApplications','VoiceExtension','updateAccountApplications','tech','key','createdAt','ListId','getMessages','FaxMessage','$gte','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','path','from','format','\x22%s\x22\x20<%s>','fax','List\x20not\x20found','Send\x20Fax\x20failed','user','out','filename','Messages','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','User','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./faxAccount.socket','jayson/promise','client','http','info','FaxAccount,\x20%s,\x20%s','debug','FaxAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','reject','save','update','destroy','get','UserProfileResource','then','stack','name','send','index','Pause','mandatoryDispositionPause','rawAttributes','fieldName','model','map','query','keys'];(function(_0x3233c3,_0x15e5fa){var _0x36029b=function(_0xe3dd12){while(--_0xe3dd12){_0x3233c3['push'](_0x3233c3['shift']());}};_0x36029b(++_0x15e5fa);}(_0xba20,0x14d));var _0x0ba2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xba20[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x0ba2('0x0'));var rimraf=require(_0x0ba2('0x1'));var zipdir=require(_0x0ba2('0x2'));var jsonpatch=require(_0x0ba2('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0ba2('0x4'));var Mustache=require(_0x0ba2('0x5'));var util=require(_0x0ba2('0x6'));var path=require('path');var sox=require(_0x0ba2('0x7'));var csv=require(_0x0ba2('0x8'));var ejs=require(_0x0ba2('0x9'));var fs=require('fs');var fs_extra=require(_0x0ba2('0xa'));var _=require(_0x0ba2('0xb'));var squel=require(_0x0ba2('0xc'));var crypto=require('crypto');var jsforce=require(_0x0ba2('0xd'));var deskjs=require(_0x0ba2('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0ba2('0xf'));var Redis=require(_0x0ba2('0x10'));var authService=require(_0x0ba2('0x11'));var qs=require(_0x0ba2('0x12'));var as=require(_0x0ba2('0x13'));var hardwareService=require(_0x0ba2('0x14'));var logger=require(_0x0ba2('0x15'))(_0x0ba2('0x16'));var utils=require('../../config/utils');var config=require(_0x0ba2('0x17'));var licenseUtil=require(_0x0ba2('0x18'));var db=require(_0x0ba2('0x19'))['db'];config[_0x0ba2('0x1a')]=_['defaults'](config[_0x0ba2('0x1a')],{'host':_0x0ba2('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0ba2('0x1a')]));require(_0x0ba2('0x1c'))['register'](socket);var jayson=require(_0x0ba2('0x1d'));var client=jayson[_0x0ba2('0x1e')][_0x0ba2('0x1f')]({'port':0x232c});var client9002=jayson[_0x0ba2('0x1e')][_0x0ba2('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x1b4c31,_0xbb4ea1,_0x387eb9,_0x5306cf){return new BPromise(function(_0xece074,_0x228ec4){var _0x448075=_0x5306cf||client;return _0x448075['request'](_0x1b4c31,_0x387eb9)['then'](function(_0x5b716b){logger[_0x0ba2('0x20')](_0x0ba2('0x21'),_0xbb4ea1,'request\x20sent');logger[_0x0ba2('0x22')](_0x0ba2('0x23'),_0xbb4ea1,_0x0ba2('0x24'),JSON['stringify'](_0x5b716b));if(_0x5b716b[_0x0ba2('0x25')]){if(_0x5b716b['error'][_0x0ba2('0x26')]===0x1f4){logger[_0x0ba2('0x25')](_0x0ba2('0x21'),_0xbb4ea1,_0x5b716b[_0x0ba2('0x25')][_0x0ba2('0x27')]);return _0x228ec4(_0x5b716b[_0x0ba2('0x25')]['message']);}logger['error'](_0x0ba2('0x21'),_0xbb4ea1,_0x5b716b['error']['message']);return _0xece074(_0x5b716b[_0x0ba2('0x25')][_0x0ba2('0x27')]);}else{logger[_0x0ba2('0x20')](_0x0ba2('0x21'),_0xbb4ea1,_0x0ba2('0x24'));_0xece074(_0x5b716b['result']['message']);}})['catch'](function(_0x4e0b8c){logger[_0x0ba2('0x25')](_0x0ba2('0x21'),_0xbb4ea1,_0x4e0b8c);_0x228ec4(_0x4e0b8c);});});}function respondWithStatusCode(_0x579360,_0x3998f1){_0x3998f1=_0x3998f1||0xcc;return function(_0x223463){if(_0x223463){return _0x579360[_0x0ba2('0x28')](_0x3998f1);}return _0x579360[_0x0ba2('0x29')](_0x3998f1)[_0x0ba2('0x2a')]();};}function respondWithResult(_0x532b10,_0x3cf2c3){_0x3cf2c3=_0x3cf2c3||0xc8;return function(_0x441986){if(_0x441986){return _0x532b10[_0x0ba2('0x29')](_0x3cf2c3)['json'](_0x441986);}};}function respondWithFilteredResult(_0x20bd41,_0x2d672e){return function(_0x2ffeb1){if(_0x2ffeb1){var _0x56f611=typeof _0x2d672e[_0x0ba2('0x2b')]===_0x0ba2('0x2c')&&typeof _0x2d672e['limit']===_0x0ba2('0x2c');var _0xade362=_0x2ffeb1[_0x0ba2('0x2d')];var _0x4c271e=_0x56f611?0x0:_0x2d672e[_0x0ba2('0x2b')];var _0x394366=_0x56f611?_0x2ffeb1[_0x0ba2('0x2d')]:_0x2d672e[_0x0ba2('0x2b')]+_0x2d672e[_0x0ba2('0x2e')];var _0x220696;if(_0x394366>=_0xade362){_0x394366=_0xade362;_0x220696=0xc8;}else{_0x220696=0xce;}_0x20bd41[_0x0ba2('0x29')](_0x220696);return _0x20bd41[_0x0ba2('0x2f')](_0x0ba2('0x30'),_0x4c271e+'-'+_0x394366+'/'+_0xade362)[_0x0ba2('0x31')](_0x2ffeb1);}return null;};}function patchUpdates(_0xcbd3dd){return function(_0x21c5b6){try{jsonpatch['apply'](_0x21c5b6,_0xcbd3dd,!![]);}catch(_0xcbe960){return BPromise[_0x0ba2('0x32')](_0xcbe960);}return _0x21c5b6[_0x0ba2('0x33')]();};}function saveUpdates(_0x5a3c77,_0x4e1f80){return function(_0xab1c69){if(_0xab1c69){return _0xab1c69[_0x0ba2('0x34')](_0x5a3c77)['then'](function(_0x46edca){return _0x46edca;});}return null;};}function removeEntity(_0x542680,_0xdd06fb){return function(_0x2e90f8){if(_0x2e90f8){return _0x2e90f8[_0x0ba2('0x35')]()['then'](function(){var _0x2bc096=_0x2e90f8[_0x0ba2('0x36')]({'plain':!![]});var _0x596810='FaxAccounts';return db[_0x0ba2('0x37')][_0x0ba2('0x35')]({'where':{'type':_0x596810,'resourceId':_0x2bc096['id']}})[_0x0ba2('0x38')](function(){return _0x2e90f8;});})[_0x0ba2('0x38')](function(){_0x542680[_0x0ba2('0x29')](0xcc)[_0x0ba2('0x2a')]();});}};}function handleEntityNotFound(_0x15b810,_0x5e7eaf){return function(_0x393b48){if(!_0x393b48){_0x15b810[_0x0ba2('0x28')](0x194);}return _0x393b48;};}function handleError(_0x50966a,_0x51f05f){_0x51f05f=_0x51f05f||0x1f4;return function(_0x462624){logger[_0x0ba2('0x25')](_0x462624[_0x0ba2('0x39')]);if(_0x462624[_0x0ba2('0x3a')]){delete _0x462624[_0x0ba2('0x3a')];}_0x50966a[_0x0ba2('0x29')](_0x51f05f)[_0x0ba2('0x3b')](_0x462624);};}exports[_0x0ba2('0x3c')]=function(_0x41daaf,_0x36f050){var _0x2cf644={'include':[{'model':db[_0x0ba2('0x3d')],'as':_0x0ba2('0x3e')}]},_0x1fd845={},_0x50700d={'count':0x0,'rows':[]};var _0xd2bc33=_['map'](db['FaxAccount'][_0x0ba2('0x3f')],function(_0x35d180){return{'name':_0x35d180[_0x0ba2('0x40')],'type':_0x35d180['type']['key']};});_0x1fd845[_0x0ba2('0x41')]=_[_0x0ba2('0x42')](_0xd2bc33,'name');_0x1fd845[_0x0ba2('0x43')]=_[_0x0ba2('0x44')](_0x41daaf[_0x0ba2('0x43')]);_0x1fd845[_0x0ba2('0x45')]=_[_0x0ba2('0x46')](_0x1fd845[_0x0ba2('0x41')],_0x1fd845[_0x0ba2('0x43')]);_0x2cf644[_0x0ba2('0x47')]=_[_0x0ba2('0x46')](_0x1fd845['model'],qs[_0x0ba2('0x48')](_0x41daaf['query'][_0x0ba2('0x48')]));_0x2cf644['attributes']=_0x2cf644[_0x0ba2('0x47')]['length']?_0x2cf644[_0x0ba2('0x47')]:_0x1fd845[_0x0ba2('0x41')];if(!_0x41daaf[_0x0ba2('0x43')][_0x0ba2('0x49')](_0x0ba2('0x4a'))){_0x2cf644[_0x0ba2('0x2e')]=qs[_0x0ba2('0x2e')](_0x41daaf['query']['limit']);_0x2cf644['offset']=qs[_0x0ba2('0x2b')](_0x41daaf[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}_0x2cf644['order']=qs[_0x0ba2('0x4b')](_0x41daaf[_0x0ba2('0x43')]['sort']);_0x2cf644[_0x0ba2('0x4c')]=qs[_0x0ba2('0x45')](_[_0x0ba2('0x4d')](_0x41daaf[_0x0ba2('0x43')],_0x1fd845['filters']),_0xd2bc33);if(_0x41daaf['query'][_0x0ba2('0x4e')]){_0x2cf644[_0x0ba2('0x4c')]=_[_0x0ba2('0x4f')](_0x2cf644[_0x0ba2('0x4c')],{'$or':_[_0x0ba2('0x42')](_0xd2bc33,function(_0x453e19){if(_0x453e19[_0x0ba2('0x50')]!=='VIRTUAL'){var _0x2b6e93={};_0x2b6e93[_0x453e19[_0x0ba2('0x3a')]]={'$like':'%'+_0x41daaf['query'][_0x0ba2('0x4e')]+'%'};return _0x2b6e93;}})});}_0x2cf644=_[_0x0ba2('0x4f')]({},_0x2cf644,_0x41daaf['options']);var _0x75f5bb={'where':_0x2cf644[_0x0ba2('0x4c')]};return db[_0x0ba2('0x51')][_0x0ba2('0x2d')](_0x75f5bb)['then'](function(_0x6e1934){_0x50700d[_0x0ba2('0x2d')]=_0x6e1934;if(_0x41daaf[_0x0ba2('0x43')][_0x0ba2('0x52')]){_0x2cf644[_0x0ba2('0x53')]=[{'all':!![]}];}return db[_0x0ba2('0x51')][_0x0ba2('0x54')](_0x2cf644);})['then'](function(_0x137d78){_0x50700d['rows']=_0x137d78;return _0x50700d;})[_0x0ba2('0x38')](respondWithFilteredResult(_0x36f050,_0x2cf644))['catch'](handleError(_0x36f050,null));};exports[_0x0ba2('0x55')]=function(_0x522688,_0x360dcb){var _0x3d1966={'raw':![],'where':{'id':_0x522688[_0x0ba2('0x56')]['id']},'include':[{'model':db[_0x0ba2('0x3d')],'as':'mandatoryDispositionPause'}]},_0x2e3d1a={};_0x2e3d1a[_0x0ba2('0x41')]=_[_0x0ba2('0x44')](db[_0x0ba2('0x51')][_0x0ba2('0x3f')]);_0x2e3d1a[_0x0ba2('0x43')]=_[_0x0ba2('0x44')](_0x522688[_0x0ba2('0x43')]);_0x2e3d1a[_0x0ba2('0x45')]=_['intersection'](_0x2e3d1a['model'],_0x2e3d1a[_0x0ba2('0x43')]);_0x3d1966['attributes']=_[_0x0ba2('0x46')](_0x2e3d1a[_0x0ba2('0x41')],qs[_0x0ba2('0x48')](_0x522688[_0x0ba2('0x43')][_0x0ba2('0x48')]));_0x3d1966['attributes']=_0x3d1966['attributes'][_0x0ba2('0x57')]?_0x3d1966['attributes']:_0x2e3d1a['model'];if(_0x522688[_0x0ba2('0x43')]['includeAll']){_0x3d1966[_0x0ba2('0x53')]=[{'all':!![]}];}_0x3d1966=_[_0x0ba2('0x4f')]({},_0x3d1966,_0x522688['options']);return db[_0x0ba2('0x51')]['find'](_0x3d1966)['then'](handleEntityNotFound(_0x360dcb,null))['then'](respondWithResult(_0x360dcb,null))['catch'](handleError(_0x360dcb,null));};exports[_0x0ba2('0x58')]=function(_0x2d73d4,_0x44913b){return db[_0x0ba2('0x51')][_0x0ba2('0x58')](_0x2d73d4[_0x0ba2('0x59')],{})[_0x0ba2('0x38')](function(_0x1867c9){var _0x2da214=_0x2d73d4['user']['get']({'plain':!![]});if(!_0x2da214)throw new Error(_0x0ba2('0x5a'));if(_0x2da214[_0x0ba2('0x5b')]==='user'){var _0x175d42=_0x1867c9[_0x0ba2('0x36')]({'plain':!![]});var _0x5d1c14='FaxAccounts';return db[_0x0ba2('0x5c')][_0x0ba2('0x5d')]({'where':{'name':_0x5d1c14,'userProfileId':_0x2da214[_0x0ba2('0x5e')]},'raw':!![]})[_0x0ba2('0x38')](function(_0x1a17d6){if(_0x1a17d6&&_0x1a17d6[_0x0ba2('0x5f')]===0x0){return db[_0x0ba2('0x37')][_0x0ba2('0x58')]({'name':_0x175d42['name'],'resourceId':_0x175d42['id'],'type':_0x1a17d6[_0x0ba2('0x3a')],'sectionId':_0x1a17d6['id']},{})[_0x0ba2('0x38')](function(){return _0x1867c9;});}else{return _0x1867c9;}})[_0x0ba2('0x60')](function(_0x2b516d){logger[_0x0ba2('0x25')](_0x0ba2('0x61'),_0x2b516d);throw _0x2b516d;});}return _0x1867c9;})[_0x0ba2('0x38')](respondWithResult(_0x44913b,0xc9))[_0x0ba2('0x60')](handleError(_0x44913b,null));};exports[_0x0ba2('0x34')]=function(_0x18e271,_0x4590c5){if(_0x18e271[_0x0ba2('0x59')]['id']){delete _0x18e271[_0x0ba2('0x59')]['id'];}return db[_0x0ba2('0x51')]['find']({'where':{'id':_0x18e271['params']['id']},'include':[{'model':db[_0x0ba2('0x3d')],'as':'mandatoryDispositionPause'}]})[_0x0ba2('0x38')](handleEntityNotFound(_0x4590c5,null))[_0x0ba2('0x38')](saveUpdates(_0x18e271[_0x0ba2('0x59')],null))[_0x0ba2('0x38')](respondWithResult(_0x4590c5,null))[_0x0ba2('0x60')](handleError(_0x4590c5,null));};exports['destroy']=function(_0x493afb,_0x3c1272){return db[_0x0ba2('0x51')][_0x0ba2('0x5d')]({'where':{'id':_0x493afb['params']['id']}})['then'](handleEntityNotFound(_0x3c1272,null))['then'](removeEntity(_0x3c1272,null))[_0x0ba2('0x60')](handleError(_0x3c1272,null));};exports[_0x0ba2('0x62')]=function(_0x9ae7b2,_0x49b066){return db[_0x0ba2('0x51')][_0x0ba2('0x62')]()[_0x0ba2('0x38')](respondWithResult(_0x49b066,null))['catch'](handleError(_0x49b066,null));};exports[_0x0ba2('0x63')]=function(_0x58e531,_0x2558ef,_0x462dba){if(_0x58e531[_0x0ba2('0x59')]['id']){delete _0x58e531[_0x0ba2('0x59')]['id'];}return db[_0x0ba2('0x51')]['find']({'where':{'id':_0x58e531[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x2558ef,null))[_0x0ba2('0x38')](function(_0x760c43){if(_0x760c43){_0x58e531['body'][_0x0ba2('0x64')]=_0x760c43['id'];return db[_0x0ba2('0x65')][_0x0ba2('0x58')](_0x58e531[_0x0ba2('0x59')]);}})['then'](respondWithResult(_0x2558ef,null))['catch'](handleError(_0x2558ef,null));};exports[_0x0ba2('0x66')]=function(_0x9fe40c,_0x42b79a,_0x2202ee){var _0x13eb1e={'raw':![],'where':{}};var _0x3041a8={};var _0x2d0030={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0ba2('0x67')]({'where':{'id':_0x9fe40c['params']['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x42b79a,null))['then'](function(_0x4d433e){if(_0x4d433e){_0x3041a8[_0x0ba2('0x41')]=_['keys'](db[_0x0ba2('0x65')][_0x0ba2('0x3f')]);_0x3041a8['query']=_[_0x0ba2('0x44')](_0x9fe40c[_0x0ba2('0x43')]);_0x3041a8['filters']=_[_0x0ba2('0x46')](_0x3041a8[_0x0ba2('0x41')],_0x3041a8['query']);_0x13eb1e[_0x0ba2('0x47')]=_[_0x0ba2('0x46')](_0x3041a8[_0x0ba2('0x41')],qs['fields'](_0x9fe40c['query'][_0x0ba2('0x48')]));_0x13eb1e[_0x0ba2('0x47')]=_0x13eb1e['attributes']['length']?_0x13eb1e[_0x0ba2('0x47')]:_0x3041a8['model'];if(!_0x9fe40c[_0x0ba2('0x43')]['hasOwnProperty']('nolimit')){_0x13eb1e[_0x0ba2('0x2e')]=qs['limit'](_0x9fe40c[_0x0ba2('0x43')]['limit']);_0x13eb1e['offset']=qs[_0x0ba2('0x2b')](_0x9fe40c[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}_0x13eb1e['order']=qs[_0x0ba2('0x4b')](_0x9fe40c['query'][_0x0ba2('0x4b')]);_0x13eb1e[_0x0ba2('0x4c')]=qs[_0x0ba2('0x45')](_[_0x0ba2('0x4d')](_0x9fe40c['query'],_0x3041a8[_0x0ba2('0x45')]));_0x13eb1e['where'][_0x0ba2('0x64')]=_0x4d433e['id'];if(_0x9fe40c[_0x0ba2('0x43')][_0x0ba2('0x4e')]){_0x13eb1e['where']=_[_0x0ba2('0x4f')](_0x13eb1e[_0x0ba2('0x4c')],{'$or':_[_0x0ba2('0x42')](_0x13eb1e[_0x0ba2('0x47')],function(_0x4875b0){var _0x304d62={};_0x304d62[_0x4875b0]={'$like':'%'+_0x9fe40c[_0x0ba2('0x43')][_0x0ba2('0x4e')]+'%'};return _0x304d62;})});}_0x13eb1e=_[_0x0ba2('0x4f')]({},_0x13eb1e,_0x9fe40c[_0x0ba2('0x68')]);return db[_0x0ba2('0x65')][_0x0ba2('0x2d')]({'where':_0x13eb1e[_0x0ba2('0x4c')]})[_0x0ba2('0x38')](function(_0x13ec01){_0x2d0030[_0x0ba2('0x2d')]=_0x13ec01;if(_0x9fe40c['query'][_0x0ba2('0x52')]){_0x13eb1e[_0x0ba2('0x53')]=[{'all':!![]}];}return db[_0x0ba2('0x65')][_0x0ba2('0x54')](_0x13eb1e);})[_0x0ba2('0x38')](function(_0x664bfe){_0x2d0030['rows']=_0x664bfe;return _0x2d0030;});}})[_0x0ba2('0x38')](respondWithFilteredResult(_0x42b79a,_0x13eb1e))[_0x0ba2('0x60')](handleError(_0x42b79a,null));};exports[_0x0ba2('0x69')]=function(_0x1e78e7,_0x298c26,_0x30d87c){return db[_0x0ba2('0x51')][_0x0ba2('0x5d')]({'where':{'id':_0x1e78e7[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x298c26,null))[_0x0ba2('0x38')](function(_0x96b318){if(_0x96b318){return _0x96b318[_0x0ba2('0x69')](_0x1e78e7[_0x0ba2('0x43')][_0x0ba2('0x6a')]);}})[_0x0ba2('0x38')](respondWithStatusCode(_0x298c26,null))['catch'](handleError(_0x298c26,null));};exports[_0x0ba2('0x6b')]=function(_0x345448,_0x82fbd8,_0x1e167d){if(_0x345448['body']['id']){delete _0x345448[_0x0ba2('0x59')]['id'];}return db[_0x0ba2('0x51')][_0x0ba2('0x5d')]({'where':{'id':_0x345448[_0x0ba2('0x56')]['id']}})['then'](handleEntityNotFound(_0x82fbd8,null))[_0x0ba2('0x38')](function(_0x15166c){if(_0x15166c){_0x345448[_0x0ba2('0x59')][_0x0ba2('0x64')]=_0x15166c['id'];return db[_0x0ba2('0x6c')][_0x0ba2('0x58')](_0x345448['body']);}})[_0x0ba2('0x38')](respondWithResult(_0x82fbd8,null))[_0x0ba2('0x60')](handleError(_0x82fbd8,null));};exports[_0x0ba2('0x6d')]=function(_0x57712b,_0x3c0c8c,_0x509dc6){var _0x3f33d3={'raw':![],'where':{}};var _0x51e612={};var _0x4bacd0={'count':0x0,'rows':[]};return db[_0x0ba2('0x51')][_0x0ba2('0x67')]({'where':{'id':_0x57712b['params']['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x3c0c8c,null))[_0x0ba2('0x38')](function(_0x141a3a){if(_0x141a3a){_0x51e612['model']=_[_0x0ba2('0x44')](db['CannedAnswer'][_0x0ba2('0x3f')]);_0x51e612[_0x0ba2('0x43')]=_[_0x0ba2('0x44')](_0x57712b['query']);_0x51e612['filters']=_[_0x0ba2('0x46')](_0x51e612[_0x0ba2('0x41')],_0x51e612[_0x0ba2('0x43')]);_0x3f33d3[_0x0ba2('0x47')]=_['intersection'](_0x51e612['model'],qs['fields'](_0x57712b[_0x0ba2('0x43')]['fields']));_0x3f33d3[_0x0ba2('0x47')]=_0x3f33d3[_0x0ba2('0x47')]['length']?_0x3f33d3['attributes']:_0x51e612['model'];if(!_0x57712b[_0x0ba2('0x43')][_0x0ba2('0x49')](_0x0ba2('0x4a'))){_0x3f33d3[_0x0ba2('0x2e')]=qs[_0x0ba2('0x2e')](_0x57712b['query'][_0x0ba2('0x2e')]);_0x3f33d3[_0x0ba2('0x2b')]=qs[_0x0ba2('0x2b')](_0x57712b[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}_0x3f33d3[_0x0ba2('0x6e')]=qs[_0x0ba2('0x4b')](_0x57712b['query'][_0x0ba2('0x4b')]);_0x3f33d3[_0x0ba2('0x4c')]=qs[_0x0ba2('0x45')](_['pick'](_0x57712b[_0x0ba2('0x43')],_0x51e612[_0x0ba2('0x45')]));_0x3f33d3['where']['FaxAccountId']=_0x141a3a['id'];if(_0x57712b[_0x0ba2('0x43')]['filter']){_0x3f33d3[_0x0ba2('0x4c')]=_[_0x0ba2('0x4f')](_0x3f33d3[_0x0ba2('0x4c')],{'$or':_[_0x0ba2('0x42')](_0x3f33d3[_0x0ba2('0x47')],function(_0x4a894b){var _0x33958f={};_0x33958f[_0x4a894b]={'$like':'%'+_0x57712b[_0x0ba2('0x43')]['filter']+'%'};return _0x33958f;})});}_0x3f33d3=_[_0x0ba2('0x4f')]({},_0x3f33d3,_0x57712b[_0x0ba2('0x68')]);return db[_0x0ba2('0x6c')][_0x0ba2('0x2d')]({'where':_0x3f33d3[_0x0ba2('0x4c')]})[_0x0ba2('0x38')](function(_0x5983ea){_0x4bacd0[_0x0ba2('0x2d')]=_0x5983ea;if(_0x57712b[_0x0ba2('0x43')]['includeAll']){_0x3f33d3[_0x0ba2('0x53')]=[{'all':!![]}];}return db[_0x0ba2('0x6c')][_0x0ba2('0x54')](_0x3f33d3);})[_0x0ba2('0x38')](function(_0x4f4716){_0x4bacd0[_0x0ba2('0x6f')]=_0x4f4716;return _0x4bacd0;});}})[_0x0ba2('0x38')](respondWithFilteredResult(_0x3c0c8c,_0x3f33d3))['catch'](handleError(_0x3c0c8c,null));};exports[_0x0ba2('0x70')]=function(_0x1fe03a,_0x29ce3d,_0x220e4d){return db['FaxAccount']['find']({'where':{'id':_0x1fe03a[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x29ce3d,null))[_0x0ba2('0x38')](function(_0x36ce22){if(_0x36ce22){return _0x36ce22[_0x0ba2('0x70')](_0x1fe03a[_0x0ba2('0x43')][_0x0ba2('0x6a')]);}})['then'](respondWithStatusCode(_0x29ce3d,null))['catch'](handleError(_0x29ce3d,null));};exports[_0x0ba2('0x71')]=function(_0x959ea1,_0x2c532a,_0x341480){return db['FaxInteraction'][_0x0ba2('0x5d')]({'where':{'id':_0x959ea1['params']['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x2c532a,null))['then'](function(_0x513128){if(_0x513128){return _0x513128[_0x0ba2('0x71')](_0x959ea1[_0x0ba2('0x59')][_0x0ba2('0x6a')],_[_0x0ba2('0x72')](_0x959ea1[_0x0ba2('0x59')],['ids','id'])||{});}})[_0x0ba2('0x38')](respondWithResult(_0x2c532a,null))[_0x0ba2('0x60')](handleError(_0x2c532a,null));};exports[_0x0ba2('0x73')]=function(_0x1d6527,_0x2f71ca,_0x225ef2){var _0x32f485={'raw':![],'where':{}};var _0x2ae1e5={};var _0x89f3e1={'count':0x0,'rows':[]};return db[_0x0ba2('0x51')]['findOne']({'where':{'id':_0x1d6527[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x2f71ca,null))[_0x0ba2('0x38')](function(_0x4cda26){if(_0x4cda26){_0x2ae1e5['model']=_[_0x0ba2('0x44')](db[_0x0ba2('0x74')][_0x0ba2('0x3f')]);_0x2ae1e5['query']=_[_0x0ba2('0x44')](_0x1d6527['query']);_0x2ae1e5['filters']=_['intersection'](_0x2ae1e5[_0x0ba2('0x41')],_0x2ae1e5[_0x0ba2('0x43')]);_0x32f485[_0x0ba2('0x47')]=_[_0x0ba2('0x46')](_0x2ae1e5[_0x0ba2('0x41')],qs[_0x0ba2('0x48')](_0x1d6527[_0x0ba2('0x43')][_0x0ba2('0x48')]));_0x32f485[_0x0ba2('0x47')]=_0x32f485[_0x0ba2('0x47')][_0x0ba2('0x57')]?_0x32f485[_0x0ba2('0x47')]:_0x2ae1e5[_0x0ba2('0x41')];if(!_0x1d6527[_0x0ba2('0x43')]['hasOwnProperty'](_0x0ba2('0x4a'))){_0x32f485[_0x0ba2('0x2e')]=qs[_0x0ba2('0x2e')](_0x1d6527['query'][_0x0ba2('0x2e')]);_0x32f485['offset']=qs[_0x0ba2('0x2b')](_0x1d6527[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}_0x32f485[_0x0ba2('0x6e')]=qs[_0x0ba2('0x4b')](_0x1d6527[_0x0ba2('0x43')][_0x0ba2('0x4b')]);_0x32f485[_0x0ba2('0x4c')]=qs[_0x0ba2('0x45')](_[_0x0ba2('0x4d')](_0x1d6527[_0x0ba2('0x43')],_0x2ae1e5[_0x0ba2('0x45')]));_0x32f485['where'][_0x0ba2('0x64')]=_0x4cda26['id'];if(_0x1d6527['query'][_0x0ba2('0x4e')]){_0x32f485[_0x0ba2('0x4c')]=_[_0x0ba2('0x4f')](_0x32f485['where'],{'$or':_[_0x0ba2('0x42')](_0x32f485[_0x0ba2('0x47')],function(_0x20bf75){var _0x347243={};_0x347243[_0x20bf75]={'$like':'%'+_0x1d6527[_0x0ba2('0x43')]['filter']+'%'};return _0x347243;})});}_0x32f485=_[_0x0ba2('0x4f')]({},_0x32f485,_0x1d6527[_0x0ba2('0x68')]);return db['FaxInteraction'][_0x0ba2('0x2d')]({'where':_0x32f485[_0x0ba2('0x4c')]})[_0x0ba2('0x38')](function(_0x15b6c6){_0x89f3e1['count']=_0x15b6c6;if(_0x1d6527[_0x0ba2('0x43')][_0x0ba2('0x52')]){_0x32f485[_0x0ba2('0x53')]=[{'model':db[_0x0ba2('0x75')],'as':_0x0ba2('0x76'),'required':![]},{'model':db['User'],'as':_0x0ba2('0x77'),'attributes':[_0x0ba2('0x3a'),'fullname','internal'],'required':![]},{'model':db[_0x0ba2('0x78')],'as':'Tags','attributes':['id',_0x0ba2('0x3a'),_0x0ba2('0x79')],'where':_0x1d6527[_0x0ba2('0x43')]['tag']?{'id':_0x1d6527['query'][_0x0ba2('0x7a')]}:undefined,'required':_0x1d6527['query'][_0x0ba2('0x7a')]?!![]:![]}];}return db[_0x0ba2('0x74')][_0x0ba2('0x54')](_0x32f485);})[_0x0ba2('0x38')](function(_0x38ceff){_0x89f3e1['rows']=_0x38ceff;return _0x89f3e1;});}})[_0x0ba2('0x38')](respondWithFilteredResult(_0x2f71ca,_0x32f485))[_0x0ba2('0x60')](handleError(_0x2f71ca,null));};exports[_0x0ba2('0x7b')]=function(_0x322f21,_0x3c8703){var _0x3902d6=_0x322f21[_0x0ba2('0x56')]['id'];var _0x2ced66=_0x322f21[_0x0ba2('0x59')];var _0x48f8d8=0xc8;var _0x37c47b=null;return db[_0x0ba2('0x7c')][_0x0ba2('0x7d')]({'isolationLevel':db[_0x0ba2('0x7c')]['Transaction'][_0x0ba2('0x7e')][_0x0ba2('0x7f')]},function(_0x1fc72f){return db[_0x0ba2('0x51')]['findOne']({'where':{'id':_0x3902d6},'transaction':_0x1fc72f})['then'](function(_0x44375b){if(_0x44375b){return db[_0x0ba2('0x80')][_0x0ba2('0x35')]({'where':{'FaxAccountId':_0x3902d6},'transaction':_0x1fc72f})[_0x0ba2('0x38')](function(){var _0x2517dc=_[_0x0ba2('0x42')](_0x2ced66,function(_0x4cabec){_0x4cabec[_0x0ba2('0x64')]=_0x3902d6;return _0x4cabec;});return db[_0x0ba2('0x80')][_0x0ba2('0x81')](_0x2517dc,{'transaction':_0x1fc72f});});}else{_0x48f8d8=0x194;_0x37c47b=[];}});})['then'](function(){if(_0x48f8d8!==0x194){return db[_0x0ba2('0x80')][_0x0ba2('0x82')]({'where':{'FaxAccountId':_0x3902d6},'order':'priority'})[_0x0ba2('0x38')](function(_0xb3b8af){_0x37c47b=_0xb3b8af;});}})[_0x0ba2('0x60')](function(_0x2a69e3){_0x48f8d8=0x1f4;logger['error'](_0x2a69e3[_0x0ba2('0x39')]);if(_0x2a69e3['name']){delete _0x2a69e3['name'];}_0x37c47b=_0x2a69e3;})['finally'](function(){if(_0x37c47b===null){_0x3c8703[_0x0ba2('0x28')](_0x48f8d8);}else{if(_0x48f8d8===0x1f4){_0x3c8703[_0x0ba2('0x29')](_0x48f8d8)[_0x0ba2('0x3b')](_0x37c47b);}else{_0x3c8703[_0x0ba2('0x29')](_0x48f8d8)[_0x0ba2('0x31')](_0x37c47b);}}});};exports[_0x0ba2('0x83')]=function(_0x513742,_0x4ec463,_0x189a07){var _0x5cda7e={};var _0x4e1abb={};var _0x52ab98;var _0x4e6320;return db['FaxAccount']['findOne']({'where':{'id':_0x513742[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x4ec463,null))['then'](function(_0x12c848){if(_0x12c848){_0x52ab98=_0x12c848;_0x4e1abb['model']=_['keys'](db[_0x0ba2('0x80')][_0x0ba2('0x3f')]);_0x4e1abb[_0x0ba2('0x43')]=_['keys'](_0x513742[_0x0ba2('0x43')]);_0x4e1abb[_0x0ba2('0x45')]=_['intersection'](_0x4e1abb[_0x0ba2('0x41')],_0x4e1abb[_0x0ba2('0x43')]);_0x5cda7e['attributes']=_[_0x0ba2('0x46')](_0x4e1abb[_0x0ba2('0x41')],qs['fields'](_0x513742['query'][_0x0ba2('0x48')]));_0x5cda7e[_0x0ba2('0x47')]=_0x5cda7e[_0x0ba2('0x47')]['length']?_0x5cda7e[_0x0ba2('0x47')]:_0x4e1abb['model'];_0x5cda7e[_0x0ba2('0x6e')]=qs[_0x0ba2('0x4b')](_0x513742[_0x0ba2('0x43')][_0x0ba2('0x4b')]);_0x5cda7e[_0x0ba2('0x4c')]=qs[_0x0ba2('0x45')](_['pick'](_0x513742[_0x0ba2('0x43')],_0x4e1abb[_0x0ba2('0x45')]));if(_0x513742[_0x0ba2('0x43')][_0x0ba2('0x4e')]){_0x5cda7e[_0x0ba2('0x4c')]=_[_0x0ba2('0x4f')](_0x5cda7e[_0x0ba2('0x4c')],{'$or':_[_0x0ba2('0x42')](_0x5cda7e[_0x0ba2('0x47')],function(_0x36b2ec){var _0x49ef90={};_0x49ef90[_0x36b2ec]={'$like':'%'+_0x513742['query']['filter']+'%'};return _0x49ef90;})});}_0x5cda7e=_[_0x0ba2('0x4f')]({},_0x5cda7e,_0x513742[_0x0ba2('0x68')]);return _0x52ab98['getApplications'](_0x5cda7e);}})[_0x0ba2('0x38')](function(_0x425a98){if(_0x425a98){_0x4e6320=_0x425a98[_0x0ba2('0x57')];if(!_0x513742[_0x0ba2('0x43')][_0x0ba2('0x49')](_0x0ba2('0x4a'))){_0x5cda7e[_0x0ba2('0x2e')]=qs[_0x0ba2('0x2e')](_0x513742['query'][_0x0ba2('0x2e')]);_0x5cda7e['offset']=qs[_0x0ba2('0x2b')](_0x513742[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}return _0x52ab98[_0x0ba2('0x83')](_0x5cda7e);}})[_0x0ba2('0x38')](function(_0x3328b8){if(_0x3328b8){return _0x3328b8?{'count':_0x4e6320,'rows':_0x3328b8}:null;}})[_0x0ba2('0x38')](respondWithResult(_0x4ec463,null))[_0x0ba2('0x60')](handleError(_0x4ec463,null));};function Extension(_0x2f50df,_0x54ce67,_0x1f5cf7,_0x2fe066){this[_0x0ba2('0x84')]=_0x0ba2('0x85');this[_0x0ba2('0x86')]=_0x2f50df[_0x0ba2('0x87')];this[_0x0ba2('0x88')]=_0x2fe066;this[_0x0ba2('0x50')]=_0x0ba2('0x89');this['description']=_0x0ba2('0x8a');this[_0x0ba2('0x64')]=_0x2f50df['id'];this[_0x0ba2('0x8b')]=_0x54ce67;this['appdata']=_0x1f5cf7;}function createExtensionsReciveFax(_0x163ed1){var _0x140b44=0x1;var _0x1ae6ab=[];_0x1ae6ab[_0x0ba2('0x8c')](new Extension(_0x163ed1,_0x140b44,'',_0x0ba2('0x8d')));_0x140b44+=0x1;_0x1ae6ab[_0x0ba2('0x8c')](new Extension(_0x163ed1,_0x140b44,_0x0ba2('0x8e'),_0x0ba2('0x8f')));_0x140b44+=0x1;for(var _0xfded2f in _0x163ed1){if(_0x163ed1[_0x0ba2('0x49')](_0xfded2f)&&(_0xfded2f===_0x0ba2('0x90')||_0xfded2f===_0x0ba2('0x87')||_0xfded2f===_0x0ba2('0x91')||_0xfded2f===_0x0ba2('0x92')||_0xfded2f===_0x0ba2('0x93')||_0xfded2f===_0x0ba2('0x94')||_0xfded2f==='minrate'||_0xfded2f===_0x0ba2('0x95')||_0xfded2f===_0x0ba2('0x96'))){_0x1ae6ab[_0x0ba2('0x8c')](new Extension(_0x163ed1,_0x140b44,_0x0ba2('0x97')+_0xfded2f+')='+_0x163ed1[_0xfded2f],_0x0ba2('0x8f')));_0x140b44+=0x1;}}_0x1ae6ab['push'](new Extension(_0x163ed1,_0x140b44,'6','Wait'));_0x140b44+=0x1;_0x1ae6ab[_0x0ba2('0x8c')](new Extension(_0x163ed1,_0x140b44,_0x0ba2('0x98'),_0x0ba2('0x99')));_0x140b44=0x0;return _0x1ae6ab;}exports[_0x0ba2('0x9a')]=function(_0x994ef3,_0x757a00,_0x5dcf6e){var _0x1ab9f1;return db[_0x0ba2('0x7c')]['transaction'](function(_0x31652b){return db[_0x0ba2('0x51')]['create'](_0x994ef3[_0x0ba2('0x59')],{'transaction':_0x31652b})[_0x0ba2('0x38')](function(_0x519ac2){_0x1ab9f1=_0x519ac2[_0x0ba2('0x36')]({'plain':!![]});return db[_0x0ba2('0x9b')][_0x0ba2('0x81')](createExtensionsReciveFax(_0x1ab9f1),{'transaction':_0x31652b});});})[_0x0ba2('0x38')](function(){return _0x1ab9f1;})[_0x0ba2('0x38')](respondWithResult(_0x757a00,null))['catch'](handleError(_0x757a00,null));};exports[_0x0ba2('0x9c')]=function(_0x40deab,_0x52fc75,_0x5ecdf6){var _0x502607;return db['sequelize'][_0x0ba2('0x7d')](function(_0x46fb20){return db[_0x0ba2('0x51')][_0x0ba2('0x34')](_0x40deab[_0x0ba2('0x59')],{'where':{'id':_0x40deab[_0x0ba2('0x59')]['id']},'transaction':_0x46fb20})['then'](function(_0x3c28d0){return db[_0x0ba2('0x9b')]['destroy']({'where':{'FaxAccountId':_0x40deab['body']['id']},'transaction':_0x46fb20})[_0x0ba2('0x38')](function(_0x210fd7){return db[_0x0ba2('0x9b')][_0x0ba2('0x81')](createExtensionsReciveFax(_[_0x0ba2('0x72')](_0x40deab['body'],[_0x0ba2('0x9d'),_0x0ba2('0x9e'),_0x0ba2('0x9f'),'updatedAt','TrunkId',_0x0ba2('0xa0')])),{'transaction':_0x46fb20});});});})[_0x0ba2('0x38')](function(){return db[_0x0ba2('0x51')]['findById'](_0x40deab['body']['id']);})[_0x0ba2('0x38')](respondWithResult(_0x52fc75,null))[_0x0ba2('0x60')](handleError(_0x52fc75,null));};exports[_0x0ba2('0xa1')]=function(_0xa3c99,_0x2f4109,_0x5371a4){var _0x38d497={'raw':!![],'where':{}};var _0x3caf51={};var _0x31723b={'count':0x0,'rows':[]};return db['FaxAccount'][_0x0ba2('0x67')]({'where':{'id':_0xa3c99[_0x0ba2('0x56')]['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x2f4109,null))['then'](function(_0x16589d){if(_0x16589d){_0x3caf51['model']=_['keys'](db[_0x0ba2('0xa2')][_0x0ba2('0x3f')]);_0x3caf51['query']=_[_0x0ba2('0x44')](_0xa3c99[_0x0ba2('0x43')]);_0x3caf51['filters']=_[_0x0ba2('0x46')](_0x3caf51[_0x0ba2('0x41')],_0x3caf51[_0x0ba2('0x43')]);_0x38d497[_0x0ba2('0x47')]=_['intersection'](_0x3caf51[_0x0ba2('0x41')],qs[_0x0ba2('0x48')](_0xa3c99['query'][_0x0ba2('0x48')]));_0x38d497['attributes']=_0x38d497[_0x0ba2('0x47')]['length']?_0x38d497[_0x0ba2('0x47')]:_0x3caf51[_0x0ba2('0x41')];if(!_0xa3c99['query'][_0x0ba2('0x49')]('nolimit')){_0x38d497[_0x0ba2('0x2e')]=qs[_0x0ba2('0x2e')](_0xa3c99[_0x0ba2('0x43')][_0x0ba2('0x2e')]);_0x38d497[_0x0ba2('0x2b')]=qs[_0x0ba2('0x2b')](_0xa3c99['query'][_0x0ba2('0x2b')]);}_0x38d497[_0x0ba2('0x6e')]=qs[_0x0ba2('0x4b')](_0xa3c99[_0x0ba2('0x43')][_0x0ba2('0x4b')]);_0x38d497['where']=qs[_0x0ba2('0x45')](_[_0x0ba2('0x4d')](_0xa3c99[_0x0ba2('0x43')],_0x3caf51[_0x0ba2('0x45')]));_0x38d497[_0x0ba2('0x4c')]['FaxAccountId']=_0x16589d['id'];if(_0xa3c99[_0x0ba2('0x43')][_0x0ba2('0x4e')]){_0x38d497['where']=_['merge'](_0x38d497['where'],{'$or':_[_0x0ba2('0x42')](_0x38d497[_0x0ba2('0x47')],function(_0x2350bb){var _0x2eadab={};_0x2eadab[_0x2350bb]={'$like':'%'+_0xa3c99[_0x0ba2('0x43')][_0x0ba2('0x4e')]+'%'};return _0x2eadab;})});}if(_0xa3c99['query'][_0x0ba2('0xa3')]){var _0x1e66d5=_0xa3c99[_0x0ba2('0x43')][_0x0ba2('0xa3')]['split'](',');var _0x739041={};_0x739041[_0x1e66d5[0x0]]={'$gte':moment(_0x1e66d5[0x1])['format'](_0x0ba2('0xa4'))};_0x38d497['where']=_[_0x0ba2('0x4f')](_0x38d497['where'],_0x739041);}_0x38d497=_[_0x0ba2('0x4f')]({},_0x38d497,_0xa3c99[_0x0ba2('0x68')]);return db[_0x0ba2('0xa2')][_0x0ba2('0x2d')]({'where':_0x38d497[_0x0ba2('0x4c')]})[_0x0ba2('0x38')](function(_0x1ef3a4){_0x31723b[_0x0ba2('0x2d')]=_0x1ef3a4;if(_0xa3c99['query'][_0x0ba2('0x52')]){_0x38d497[_0x0ba2('0x53')]=[{'all':!![]}];}return db['FaxMessage'][_0x0ba2('0x54')](_0x38d497);})['then'](function(_0x33ff8f){_0x31723b[_0x0ba2('0x6f')]=_0x33ff8f;return _0x31723b;});}})['then'](respondWithFilteredResult(_0x2f4109,_0x38d497))[_0x0ba2('0x60')](handleError(_0x2f4109,null));};exports['send']=function(_0x580df0,_0x32d8e2,_0x215634){var _0x5a7560,_0x146909={},_0x2411ec;if(_0x580df0[_0x0ba2('0x59')]['to']){_0x2411ec=_0x580df0[_0x0ba2('0x59')]['to'][0x0];}return db['FaxAccount'][_0x0ba2('0x5d')]({'where':{'id':_0x580df0['params']['id']},'include':[{'model':db[_0x0ba2('0xa5')],'as':_0x0ba2('0xa6'),'include':[{'model':db['CmContact'],'as':_0x0ba2('0xa7'),'where':{'fax':_0x2411ec},'limit':0x1,'order':[[_0x0ba2('0xa8'),_0x0ba2('0xa9')]]}]}]})[_0x0ba2('0x38')](handleEntityNotFound(_0x32d8e2,null))[_0x0ba2('0x38')](function(_0x14910b){_0x5a7560=_0x14910b;if(_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')]&&_0x580df0['body']['attachments'][_0x0ba2('0x57')]){for(var _0x1a7fea=0x0;_0x1a7fea<_0x580df0['body']['attachments'][_0x0ba2('0x57')];_0x1a7fea+=0x1){_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][_0x1a7fea]={'filename':_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][_0x1a7fea][_0x0ba2('0x3a')],'id':_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][_0x1a7fea]['id'],'path':path[_0x0ba2('0xab')](config[_0x0ba2('0xac')],_0x0ba2('0xad'),_0x580df0[_0x0ba2('0x59')]['attachments'][_0x1a7fea][_0x0ba2('0xae')])};}}return respondWithRpcPromise('CheckAfterSend',_0x0ba2('0xaf'),{'FaxAccountId':_[_0x0ba2('0xb0')](_0x580df0[_0x0ba2('0x56')]['id'])?undefined:_0x580df0[_0x0ba2('0x56')]['id'],'path':_[_0x0ba2('0xb0')](_0x580df0[_0x0ba2('0x59')]['attachments'][0x0][_0x0ba2('0xb1')])?undefined:_0x580df0[_0x0ba2('0x59')]['attachments'][0x0][_0x0ba2('0xb1')],'fax':_['isNil'](_0x580df0[_0x0ba2('0x59')]['to'][0x0])?undefined:_0x580df0[_0x0ba2('0x59')]['to'][0x0]},client9002);})[_0x0ba2('0x38')](function(){if(_0x5a7560){if(_[_0x0ba2('0xb0')](_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xb2')])){_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xb2')]=util[_0x0ba2('0xb3')](_0x0ba2('0xb4'),_0x5a7560[_0x0ba2('0x3a')],_0x5a7560[_0x0ba2('0xb5')]);}if(_0x5a7560['List']){if(_0x5a7560[_0x0ba2('0xa6')][_0x0ba2('0xa7')][_0x0ba2('0x57')]){return _0x5a7560[_0x0ba2('0xa6')][_0x0ba2('0xa7')][0x0];}else{return db[_0x0ba2('0x75')]['create'](_['defaults'](_0x580df0['body'],{'firstName':_0x580df0['body']['to'][0x0],'phone':_0x580df0['body']['to'][0x0],'fax':_0x580df0['body']['to'][0x0],'ListId':_0x5a7560[_0x0ba2('0xa0')]}));}}else{throw new Error(_0x0ba2('0xb6'));}}else{throw new Error(_0x0ba2('0xb7'));}})['then'](function(_0x227be6){if(_0x227be6){return db['FaxInteraction'][_0x0ba2('0x5d')]({'where':{'ContactId':_0x227be6['id'],'closed':![],'FaxAccountId':_0x5a7560['id']}})[_0x0ba2('0x38')](function(_0x70ae45){if(_0x70ae45){return[_0x70ae45,![]];}return db[_0x0ba2('0x74')][_0x0ba2('0x58')]({'UserId':_0x580df0[_0x0ba2('0xb8')]['id'],'ContactId':_0x227be6['id'],'FaxAccountId':_0x5a7560['id'],'fax':_0x580df0[_0x0ba2('0x59')]['to'][0x0],'firstMsgDirection':_0x0ba2('0xb9'),'Messages':[_['merge'](_0x580df0[_0x0ba2('0x59')],{'read':![],'body':_0x580df0[_0x0ba2('0x59')]['attachments'][0x0][_0x0ba2('0xba')],'FaxAccountId':_0x5a7560['id'],'UserId':_0x580df0['user']['id'],'ContactId':_0x227be6['id'],'AttachmentId':_0x580df0['body'][_0x0ba2('0xaa')][0x0]['id']})]},{'include':[{'model':db[_0x0ba2('0xa2')],'as':_0x0ba2('0xbb')}]})[_0x0ba2('0x38')](function(_0x52ae9f){return[_0x52ae9f,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x0ba2('0xbc')](function(_0x25fb5c,_0x4bf2b1){if(_0x4bf2b1){return _0x25fb5c;}return db['FaxMessage'][_0x0ba2('0x58')]({'direction':_0x0ba2('0xb9'),'read':![],'body':_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][0x0][_0x0ba2('0xba')],'FaxAccountId':_0x5a7560['id'],'FaxInteractionId':_0x25fb5c['id'],'UserId':_0x580df0['user']['id'],'ContactId':_0x25fb5c[_0x0ba2('0xbd')],'AttachmentId':_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][0x0]['id']})[_0x0ba2('0x38')](function(_0x46029e){_0x25fb5c[_0x0ba2('0xbe')][_0x0ba2('0xbb')]=[];_0x25fb5c[_0x0ba2('0xbe')][_0x0ba2('0xbb')][_0x0ba2('0x8c')](_0x46029e[_0x0ba2('0xbe')]);return _0x25fb5c;});})[_0x0ba2('0x38')](function(_0x3dd204){respondWithRpcPromise(_0x0ba2('0xbf'),_0x0ba2('0xbf'),{'FaxAccountId':_[_0x0ba2('0xb0')](_0x580df0[_0x0ba2('0x56')]['id'])?undefined:_0x580df0[_0x0ba2('0x56')]['id'],'path':_['isNil'](_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][0x0][_0x0ba2('0xb1')])?undefined:_0x580df0[_0x0ba2('0x59')][_0x0ba2('0xaa')][0x0][_0x0ba2('0xb1')],'fax':_[_0x0ba2('0xb0')](_0x580df0[_0x0ba2('0x59')]['to'][0x0])?undefined:_0x580df0['body']['to'][0x0],'AttachmentId':_0x580df0[_0x0ba2('0x59')]['attachments'][0x0]['id']},client9002)[_0x0ba2('0x38')](function(_0xd17400){logger[_0x0ba2('0x20')](_0x0ba2('0xc0'),_0xd17400);})[_0x0ba2('0x60')](function(_0x4a0e28){logger['info'](_0x0ba2('0xc0'),_0x4a0e28);});return _0x3dd204;})[_0x0ba2('0x38')](respondWithResult(_0x32d8e2,null))[_0x0ba2('0x60')](handleError(_0x32d8e2,null));};exports[_0x0ba2('0xc1')]=function(_0x19460f,_0x4fa46c,_0x39cc7f){return db[_0x0ba2('0x51')][_0x0ba2('0x5d')]({'where':{'id':_0x19460f['params']['id']}})['then'](handleEntityNotFound(_0x4fa46c,null))['then'](function(_0x25ed1a){if(_0x25ed1a){return _0x25ed1a[_0x0ba2('0xc1')](_0x19460f[_0x0ba2('0x59')][_0x0ba2('0x6a')],_[_0x0ba2('0x72')](_0x19460f[_0x0ba2('0x59')],[_0x0ba2('0x6a'),'id'])||{})[_0x0ba2('0xbc')](function(_0x825283){for(var _0xa9b86e=0x0;_0xa9b86e<_0x19460f[_0x0ba2('0x59')][_0x0ba2('0x6a')][_0x0ba2('0x57')];_0xa9b86e+=0x1){socket[_0x0ba2('0xc2')](_0x0ba2('0xc3'),{'UserId':Number(_0x19460f[_0x0ba2('0x59')][_0x0ba2('0x6a')][_0xa9b86e]),'FaxAccountId':Number(_0x19460f['params']['id'])});}return _0x825283;});}})[_0x0ba2('0x38')](respondWithResult(_0x4fa46c,null))[_0x0ba2('0x60')](handleError(_0x4fa46c,null));};exports['removeAgents']=function(_0x63ed9f,_0x29e081,_0x3bf24d){return db['FaxAccount'][_0x0ba2('0x5d')]({'where':{'id':_0x63ed9f['params']['id']}})[_0x0ba2('0x38')](handleEntityNotFound(_0x29e081,null))[_0x0ba2('0x38')](function(_0x599caa){if(_0x599caa){return _0x599caa[_0x0ba2('0xc4')](_0x63ed9f[_0x0ba2('0x43')][_0x0ba2('0x6a')])[_0x0ba2('0x38')](function(){if(_[_0x0ba2('0xc5')](_0x63ed9f[_0x0ba2('0x43')]['ids'])){for(var _0x2afba5=0x0;_0x2afba5<_0x63ed9f[_0x0ba2('0x43')][_0x0ba2('0x6a')]['length'];_0x2afba5+=0x1){socket[_0x0ba2('0xc2')](_0x0ba2('0xc6'),{'UserId':Number(_0x63ed9f[_0x0ba2('0x43')][_0x0ba2('0x6a')][_0x2afba5]),'FaxAccountId':Number(_0x63ed9f[_0x0ba2('0x56')]['id'])});}}else{socket['emit'](_0x0ba2('0xc6'),{'UserId':Number(_0x63ed9f[_0x0ba2('0x43')][_0x0ba2('0x6a')]),'FaxAccountId':Number(_0x63ed9f[_0x0ba2('0x56')]['id'])});}});}})[_0x0ba2('0x38')](respondWithStatusCode(_0x29e081,null))[_0x0ba2('0x60')](handleError(_0x29e081,null));};exports[_0x0ba2('0xc7')]=function(_0x61af96,_0x535a3c,_0x5e7a63){var _0x5b591b={};var _0x113f2b={};var _0x464269;var _0x5c4287;return db[_0x0ba2('0x51')][_0x0ba2('0x67')]({'where':{'id':_0x61af96['params']['id']}})['then'](handleEntityNotFound(_0x535a3c,null))['then'](function(_0x559de6){if(_0x559de6){_0x464269=_0x559de6;_0x113f2b['model']=_['keys'](db[_0x0ba2('0xc8')][_0x0ba2('0x3f')]);_0x113f2b[_0x0ba2('0x43')]=_[_0x0ba2('0x44')](_0x61af96[_0x0ba2('0x43')]);_0x113f2b[_0x0ba2('0x45')]=_['intersection'](_0x113f2b[_0x0ba2('0x41')],_0x113f2b['query']);_0x5b591b['attributes']=_[_0x0ba2('0x46')](_0x113f2b['model'],qs[_0x0ba2('0x48')](_0x61af96[_0x0ba2('0x43')][_0x0ba2('0x48')]));_0x5b591b[_0x0ba2('0x47')]=_0x5b591b['attributes'][_0x0ba2('0x57')]?_0x5b591b[_0x0ba2('0x47')]:_0x113f2b[_0x0ba2('0x41')];_0x5b591b['order']=qs['sort'](_0x61af96[_0x0ba2('0x43')][_0x0ba2('0x4b')]);_0x5b591b['where']=qs['filters'](_[_0x0ba2('0x4d')](_0x61af96[_0x0ba2('0x43')],_0x113f2b[_0x0ba2('0x45')]));if(_0x61af96['query'][_0x0ba2('0x4e')]){_0x5b591b[_0x0ba2('0x4c')]=_[_0x0ba2('0x4f')](_0x5b591b[_0x0ba2('0x4c')],{'$or':_['map'](_0x5b591b['attributes'],function(_0x1800f9){var _0x4b9d06={};_0x4b9d06[_0x1800f9]={'$like':'%'+_0x61af96[_0x0ba2('0x43')][_0x0ba2('0x4e')]+'%'};return _0x4b9d06;})});}_0x5b591b=_['merge']({},_0x5b591b,_0x61af96[_0x0ba2('0x68')]);return _0x464269['getAgents'](_0x5b591b);}})[_0x0ba2('0x38')](function(_0x5c258f){if(_0x5c258f){_0x5c4287=_0x5c258f[_0x0ba2('0x57')];if(!_0x61af96['query']['hasOwnProperty']('nolimit')){_0x5b591b[_0x0ba2('0x2e')]=qs['limit'](_0x61af96[_0x0ba2('0x43')][_0x0ba2('0x2e')]);_0x5b591b[_0x0ba2('0x2b')]=qs[_0x0ba2('0x2b')](_0x61af96[_0x0ba2('0x43')][_0x0ba2('0x2b')]);}return _0x464269[_0x0ba2('0xc7')](_0x5b591b);}})['then'](function(_0x6c0676){if(_0x6c0676){return _0x6c0676?{'count':_0x5c4287,'rows':_0x6c0676}:null;}})['then'](respondWithResult(_0x535a3c,null))[_0x0ba2('0x60')](handleError(_0x535a3c,null));};
\ No newline at end of file
+var _0x752f=['CheckAfterSend','isNil','\x22%s\x22\x20<%s>','fax','List','List\x20not\x20found','Send\x20Fax\x20failed','filename','Messages','Contact\x20not\x20found','spread','out','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxAccount.socket','jayson/promise','client','http','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','get','UserProfileResource','destroy','end','stack','name','send','mandatoryDispositionPause','map','FaxAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','where','filter','merge','VIRTUAL','options','include','rows','show','params','Pause','length','includeAll','find','create','body','user','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','hasOwnProperty','order','sort','findAll','removeDispositions','addAnswer','CannedAnswer','getAnswers','pick','removeAnswers','ids','FaxInteraction','omit','getInteractions','CmContact','Contact','User','Owner','fullname','internal','Tag','Tags','tag','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','findAndCountAll','priority','finally','getApplications','context','from-voip-provider','localstationid','app','system','description','appdata','push','Answer','CDR(type)=inbound-fax','gateway','faxdetect','headerinfo','maxrate','minrate','modem','t38timeout','FAXOPT(','Set','Wait','ReceiveFax','addAccountApplications','bulkCreate','updateAccountApplications','VoiceExtension','tech','createdAt','updatedAt','TrunkId','ListId','findById','$gte','format','YYYY-MM-DD\x20HH:mm:ss','FaxMessage','CmList','Contacts','DESC','attachments','join','server/files/attachments','basename'];(function(_0x5bfe0f,_0x11617b){var _0x42c33b=function(_0x30dc41){while(--_0x30dc41){_0x5bfe0f['push'](_0x5bfe0f['shift']());}};_0x42c33b(++_0x11617b);}(_0x752f,0xe0));var _0xf752=function(_0x105271,_0x7fd534){_0x105271=_0x105271-0x0;var _0x5a887c=_0x752f[_0x105271];return _0x5a887c;};'use strict';var emlformat=require(_0xf752('0x0'));var rimraf=require(_0xf752('0x1'));var zipdir=require(_0xf752('0x2'));var jsonpatch=require(_0xf752('0x3'));var rp=require(_0xf752('0x4'));var moment=require(_0xf752('0x5'));var BPromise=require(_0xf752('0x6'));var Mustache=require(_0xf752('0x7'));var util=require(_0xf752('0x8'));var path=require(_0xf752('0x9'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf752('0xa'));var fs=require('fs');var fs_extra=require(_0xf752('0xb'));var _=require(_0xf752('0xc'));var squel=require(_0xf752('0xd'));var crypto=require(_0xf752('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xf752('0xf'));var toCsv=require(_0xf752('0x10'));var querystring=require(_0xf752('0x11'));var Papa=require('papaparse');var Redis=require(_0xf752('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xf752('0x13'));var as=require(_0xf752('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf752('0x15'))('api');var utils=require(_0xf752('0x16'));var config=require(_0xf752('0x17'));var licenseUtil=require(_0xf752('0x18'));var db=require(_0xf752('0x19'))['db'];config['redis']=_[_0xf752('0x1a')](config[_0xf752('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xf752('0x1c'))(new Redis(config[_0xf752('0x1b')]));require(_0xf752('0x1d'))['register'](socket);var jayson=require(_0xf752('0x1e'));var client=jayson[_0xf752('0x1f')][_0xf752('0x20')]({'port':0x232c});var client9002=jayson[_0xf752('0x1f')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1f879c,_0xdb94ad,_0x302c99,_0x3ec91c){return new BPromise(function(_0x5896eb,_0x1da22b){var _0x367e0c=_0x3ec91c||client;return _0x367e0c[_0xf752('0x21')](_0x1f879c,_0x302c99)[_0xf752('0x22')](function(_0x5f434d){logger[_0xf752('0x23')](_0xf752('0x24'),_0xdb94ad,_0xf752('0x25'));logger[_0xf752('0x26')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0xdb94ad,_0xf752('0x25'),JSON[_0xf752('0x27')](_0x5f434d));if(_0x5f434d[_0xf752('0x28')]){if(_0x5f434d[_0xf752('0x28')][_0xf752('0x29')]===0x1f4){logger[_0xf752('0x28')]('FaxAccount,\x20%s,\x20%s',_0xdb94ad,_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);return _0x1da22b(_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);}logger['error'](_0xf752('0x24'),_0xdb94ad,_0x5f434d[_0xf752('0x28')]['message']);return _0x5896eb(_0x5f434d[_0xf752('0x28')][_0xf752('0x2a')]);}else{logger[_0xf752('0x23')](_0xf752('0x24'),_0xdb94ad,'request\x20sent');_0x5896eb(_0x5f434d[_0xf752('0x2b')][_0xf752('0x2a')]);}})[_0xf752('0x2c')](function(_0x15e750){logger[_0xf752('0x28')](_0xf752('0x24'),_0xdb94ad,_0x15e750);_0x1da22b(_0x15e750);});});}function respondWithStatusCode(_0xa5941f,_0x56d126){_0x56d126=_0x56d126||0xcc;return function(_0x17e261){if(_0x17e261){return _0xa5941f[_0xf752('0x2d')](_0x56d126);}return _0xa5941f['status'](_0x56d126)['end']();};}function respondWithResult(_0x570a48,_0x36acc1){_0x36acc1=_0x36acc1||0xc8;return function(_0x429dc8){if(_0x429dc8){return _0x570a48[_0xf752('0x2e')](_0x36acc1)[_0xf752('0x2f')](_0x429dc8);}};}function respondWithFilteredResult(_0x2508f9,_0xdcf72d){return function(_0x1e7ca6){if(_0x1e7ca6){var _0x856948=typeof _0xdcf72d[_0xf752('0x30')]===_0xf752('0x31')&&typeof _0xdcf72d[_0xf752('0x32')]===_0xf752('0x31');var _0x3ef8bc=_0x1e7ca6[_0xf752('0x33')];var _0x167d98=_0x856948?0x0:_0xdcf72d[_0xf752('0x30')];var _0x113428=_0x856948?_0x1e7ca6['count']:_0xdcf72d['offset']+_0xdcf72d[_0xf752('0x32')];var _0x521228;if(_0x113428>=_0x3ef8bc){_0x113428=_0x3ef8bc;_0x521228=0xc8;}else{_0x521228=0xce;}_0x2508f9[_0xf752('0x2e')](_0x521228);return _0x2508f9['set'](_0xf752('0x34'),_0x167d98+'-'+_0x113428+'/'+_0x3ef8bc)['json'](_0x1e7ca6);}return null;};}function patchUpdates(_0x55008a){return function(_0xf0d826){try{jsonpatch['apply'](_0xf0d826,_0x55008a,!![]);}catch(_0x54ef96){return BPromise[_0xf752('0x35')](_0x54ef96);}return _0xf0d826[_0xf752('0x36')]();};}function saveUpdates(_0x3cf651,_0x36a511){return function(_0x318653){if(_0x318653){return _0x318653[_0xf752('0x37')](_0x3cf651)['then'](function(_0x520b22){return _0x520b22;});}return null;};}function removeEntity(_0x2a246c,_0x5a0d55){return function(_0x33b6f1){if(_0x33b6f1){return _0x33b6f1['destroy']()[_0xf752('0x22')](function(){var _0x28fa1d=_0x33b6f1[_0xf752('0x38')]({'plain':!![]});var _0x509f92='FaxAccounts';return db[_0xf752('0x39')][_0xf752('0x3a')]({'where':{'type':_0x509f92,'resourceId':_0x28fa1d['id']}})[_0xf752('0x22')](function(){return _0x33b6f1;});})[_0xf752('0x22')](function(){_0x2a246c['status'](0xcc)[_0xf752('0x3b')]();});}};}function handleEntityNotFound(_0x591d95,_0x3ea680){return function(_0x171227){if(!_0x171227){_0x591d95[_0xf752('0x2d')](0x194);}return _0x171227;};}function handleError(_0x2b4692,_0x35c8f0){_0x35c8f0=_0x35c8f0||0x1f4;return function(_0x1d8f4e){logger[_0xf752('0x28')](_0x1d8f4e[_0xf752('0x3c')]);if(_0x1d8f4e[_0xf752('0x3d')]){delete _0x1d8f4e[_0xf752('0x3d')];}_0x2b4692[_0xf752('0x2e')](_0x35c8f0)[_0xf752('0x3e')](_0x1d8f4e);};}exports['index']=function(_0x334ac7,_0x2e5d7d){var _0x44caa7={'include':[{'model':db['Pause'],'as':_0xf752('0x3f')}]},_0x350755={},_0x21ac58={'count':0x0,'rows':[]};var _0xb7b8ea=_[_0xf752('0x40')](db[_0xf752('0x41')][_0xf752('0x42')],function(_0x4bbd41){return{'name':_0x4bbd41[_0xf752('0x43')],'type':_0x4bbd41[_0xf752('0x44')][_0xf752('0x45')]};});_0x350755[_0xf752('0x46')]=_['map'](_0xb7b8ea,_0xf752('0x3d'));_0x350755[_0xf752('0x47')]=_[_0xf752('0x48')](_0x334ac7['query']);_0x350755[_0xf752('0x49')]=_[_0xf752('0x4a')](_0x350755['model'],_0x350755['query']);_0x44caa7[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x350755['model'],qs['fields'](_0x334ac7['query'][_0xf752('0x4c')]));_0x44caa7[_0xf752('0x4b')]=_0x44caa7[_0xf752('0x4b')]['length']?_0x44caa7[_0xf752('0x4b')]:_0x350755['model'];if(!_0x334ac7[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x44caa7[_0xf752('0x32')]=qs['limit'](_0x334ac7[_0xf752('0x47')][_0xf752('0x32')]);_0x44caa7[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x334ac7[_0xf752('0x47')][_0xf752('0x30')]);}_0x44caa7['order']=qs['sort'](_0x334ac7[_0xf752('0x47')]['sort']);_0x44caa7[_0xf752('0x4e')]=qs[_0xf752('0x49')](_['pick'](_0x334ac7['query'],_0x350755[_0xf752('0x49')]),_0xb7b8ea);if(_0x334ac7[_0xf752('0x47')][_0xf752('0x4f')]){_0x44caa7[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x44caa7['where'],{'$or':_[_0xf752('0x40')](_0xb7b8ea,function(_0x49600b){if(_0x49600b['type']!==_0xf752('0x51')){var _0x97206e={};_0x97206e[_0x49600b['name']]={'$like':'%'+_0x334ac7['query'][_0xf752('0x4f')]+'%'};return _0x97206e;}})});}_0x44caa7=_[_0xf752('0x50')]({},_0x44caa7,_0x334ac7[_0xf752('0x52')]);var _0x49d9ee={'where':_0x44caa7[_0xf752('0x4e')]};return db[_0xf752('0x41')][_0xf752('0x33')](_0x49d9ee)[_0xf752('0x22')](function(_0xd14827){_0x21ac58[_0xf752('0x33')]=_0xd14827;if(_0x334ac7[_0xf752('0x47')]['includeAll']){_0x44caa7[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0x41')]['findAll'](_0x44caa7);})[_0xf752('0x22')](function(_0x40a471){_0x21ac58[_0xf752('0x54')]=_0x40a471;return _0x21ac58;})[_0xf752('0x22')](respondWithFilteredResult(_0x2e5d7d,_0x44caa7))[_0xf752('0x2c')](handleError(_0x2e5d7d,null));};exports[_0xf752('0x55')]=function(_0x4da21f,_0x4befe3){var _0x17000d={'raw':![],'where':{'id':_0x4da21f[_0xf752('0x56')]['id']},'include':[{'model':db[_0xf752('0x57')],'as':_0xf752('0x3f')}]},_0x350406={};_0x350406[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x41')]['rawAttributes']);_0x350406[_0xf752('0x47')]=_[_0xf752('0x48')](_0x4da21f[_0xf752('0x47')]);_0x350406['filters']=_[_0xf752('0x4a')](_0x350406['model'],_0x350406[_0xf752('0x47')]);_0x17000d[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x350406[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x4da21f[_0xf752('0x47')]['fields']));_0x17000d['attributes']=_0x17000d[_0xf752('0x4b')][_0xf752('0x58')]?_0x17000d['attributes']:_0x350406[_0xf752('0x46')];if(_0x4da21f[_0xf752('0x47')][_0xf752('0x59')]){_0x17000d[_0xf752('0x53')]=[{'all':!![]}];}_0x17000d=_[_0xf752('0x50')]({},_0x17000d,_0x4da21f[_0xf752('0x52')]);return db[_0xf752('0x41')][_0xf752('0x5a')](_0x17000d)[_0xf752('0x22')](handleEntityNotFound(_0x4befe3,null))['then'](respondWithResult(_0x4befe3,null))['catch'](handleError(_0x4befe3,null));};exports['create']=function(_0x247d89,_0x269b79){return db['FaxAccount'][_0xf752('0x5b')](_0x247d89[_0xf752('0x5c')],{})[_0xf752('0x22')](function(_0x45409c){var _0x1f7131=_0x247d89[_0xf752('0x5d')][_0xf752('0x38')]({'plain':!![]});if(!_0x1f7131)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1f7131['role']===_0xf752('0x5d')){var _0x1ab441=_0x45409c[_0xf752('0x38')]({'plain':!![]});var _0x6cb8a5=_0xf752('0x5e');return db[_0xf752('0x5f')][_0xf752('0x5a')]({'where':{'name':_0x6cb8a5,'userProfileId':_0x1f7131[_0xf752('0x60')]},'raw':!![]})[_0xf752('0x22')](function(_0x3567ea){if(_0x3567ea&&_0x3567ea[_0xf752('0x61')]===0x0){return db[_0xf752('0x39')][_0xf752('0x5b')]({'name':_0x1ab441['name'],'resourceId':_0x1ab441['id'],'type':_0x3567ea[_0xf752('0x3d')],'sectionId':_0x3567ea['id']},{})[_0xf752('0x22')](function(){return _0x45409c;});}else{return _0x45409c;}})[_0xf752('0x2c')](function(_0x2718b0){logger[_0xf752('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x2718b0);throw _0x2718b0;});}return _0x45409c;})['then'](respondWithResult(_0x269b79,0xc9))[_0xf752('0x2c')](handleError(_0x269b79,null));};exports['update']=function(_0x5e9717,_0x56c8db){if(_0x5e9717['body']['id']){delete _0x5e9717['body']['id'];}return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x5e9717[_0xf752('0x56')]['id']},'include':[{'model':db['Pause'],'as':_0xf752('0x3f')}]})['then'](handleEntityNotFound(_0x56c8db,null))[_0xf752('0x22')](saveUpdates(_0x5e9717['body'],null))[_0xf752('0x22')](respondWithResult(_0x56c8db,null))[_0xf752('0x2c')](handleError(_0x56c8db,null));};exports[_0xf752('0x3a')]=function(_0x4e56f0,_0x1d5eb7){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x4e56f0[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x1d5eb7,null))[_0xf752('0x22')](removeEntity(_0x1d5eb7,null))['catch'](handleError(_0x1d5eb7,null));};exports[_0xf752('0x62')]=function(_0x221f32,_0x5f251b){return db[_0xf752('0x41')][_0xf752('0x62')]()[_0xf752('0x22')](respondWithResult(_0x5f251b,null))[_0xf752('0x2c')](handleError(_0x5f251b,null));};exports[_0xf752('0x63')]=function(_0x494d9a,_0x59c808,_0x2a5af9){if(_0x494d9a[_0xf752('0x5c')]['id']){delete _0x494d9a[_0xf752('0x5c')]['id'];}return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x494d9a[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x59c808,null))[_0xf752('0x22')](function(_0x41a504){if(_0x41a504){_0x494d9a[_0xf752('0x5c')][_0xf752('0x64')]=_0x41a504['id'];return db[_0xf752('0x65')][_0xf752('0x5b')](_0x494d9a['body']);}})[_0xf752('0x22')](respondWithResult(_0x59c808,null))[_0xf752('0x2c')](handleError(_0x59c808,null));};exports[_0xf752('0x66')]=function(_0x19dd2b,_0x3a6a2e,_0x6ad4af){var _0x25c583={'raw':![],'where':{}};var _0x3156e9={};var _0x164308={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x19dd2b[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x3a6a2e,null))[_0xf752('0x22')](function(_0x5d34fb){if(_0x5d34fb){_0x3156e9[_0xf752('0x46')]=_['keys'](db[_0xf752('0x65')][_0xf752('0x42')]);_0x3156e9[_0xf752('0x47')]=_[_0xf752('0x48')](_0x19dd2b[_0xf752('0x47')]);_0x3156e9[_0xf752('0x49')]=_[_0xf752('0x4a')](_0x3156e9['model'],_0x3156e9[_0xf752('0x47')]);_0x25c583[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x3156e9[_0xf752('0x46')],qs['fields'](_0x19dd2b['query'][_0xf752('0x4c')]));_0x25c583[_0xf752('0x4b')]=_0x25c583[_0xf752('0x4b')]['length']?_0x25c583[_0xf752('0x4b')]:_0x3156e9['model'];if(!_0x19dd2b['query'][_0xf752('0x68')](_0xf752('0x4d'))){_0x25c583[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x19dd2b[_0xf752('0x47')]['limit']);_0x25c583[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x19dd2b['query'][_0xf752('0x30')]);}_0x25c583[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x19dd2b[_0xf752('0x47')][_0xf752('0x6a')]);_0x25c583[_0xf752('0x4e')]=qs[_0xf752('0x49')](_['pick'](_0x19dd2b[_0xf752('0x47')],_0x3156e9[_0xf752('0x49')]));_0x25c583[_0xf752('0x4e')]['FaxAccountId']=_0x5d34fb['id'];if(_0x19dd2b[_0xf752('0x47')][_0xf752('0x4f')]){_0x25c583['where']=_['merge'](_0x25c583[_0xf752('0x4e')],{'$or':_['map'](_0x25c583[_0xf752('0x4b')],function(_0x216469){var _0x500027={};_0x500027[_0x216469]={'$like':'%'+_0x19dd2b[_0xf752('0x47')]['filter']+'%'};return _0x500027;})});}_0x25c583=_[_0xf752('0x50')]({},_0x25c583,_0x19dd2b[_0xf752('0x52')]);return db[_0xf752('0x65')][_0xf752('0x33')]({'where':_0x25c583[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x5d81da){_0x164308[_0xf752('0x33')]=_0x5d81da;if(_0x19dd2b[_0xf752('0x47')][_0xf752('0x59')]){_0x25c583[_0xf752('0x53')]=[{'all':!![]}];}return db['Disposition'][_0xf752('0x6b')](_0x25c583);})['then'](function(_0xb294d8){_0x164308[_0xf752('0x54')]=_0xb294d8;return _0x164308;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x3a6a2e,_0x25c583))['catch'](handleError(_0x3a6a2e,null));};exports['removeDispositions']=function(_0xbf579a,_0xdbdd7d,_0x3efccb){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0xbf579a['params']['id']}})['then'](handleEntityNotFound(_0xdbdd7d,null))[_0xf752('0x22')](function(_0x2b259e){if(_0x2b259e){return _0x2b259e[_0xf752('0x6c')](_0xbf579a[_0xf752('0x47')]['ids']);}})[_0xf752('0x22')](respondWithStatusCode(_0xdbdd7d,null))[_0xf752('0x2c')](handleError(_0xdbdd7d,null));};exports[_0xf752('0x6d')]=function(_0xd33476,_0x1b1901,_0xeafef4){if(_0xd33476['body']['id']){delete _0xd33476['body']['id'];}return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0xd33476['params']['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x1b1901,null))[_0xf752('0x22')](function(_0x1e2d2d){if(_0x1e2d2d){_0xd33476[_0xf752('0x5c')][_0xf752('0x64')]=_0x1e2d2d['id'];return db[_0xf752('0x6e')][_0xf752('0x5b')](_0xd33476[_0xf752('0x5c')]);}})[_0xf752('0x22')](respondWithResult(_0x1b1901,null))[_0xf752('0x2c')](handleError(_0x1b1901,null));};exports[_0xf752('0x6f')]=function(_0x4a344f,_0x126134,_0x19de03){var _0x2499dc={'raw':![],'where':{}};var _0x58b669={};var _0x379b3e={'count':0x0,'rows':[]};return db['FaxAccount'][_0xf752('0x67')]({'where':{'id':_0x4a344f[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x126134,null))[_0xf752('0x22')](function(_0x567893){if(_0x567893){_0x58b669[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x6e')][_0xf752('0x42')]);_0x58b669[_0xf752('0x47')]=_[_0xf752('0x48')](_0x4a344f[_0xf752('0x47')]);_0x58b669[_0xf752('0x49')]=_['intersection'](_0x58b669['model'],_0x58b669[_0xf752('0x47')]);_0x2499dc[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x58b669[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x4a344f['query'][_0xf752('0x4c')]));_0x2499dc[_0xf752('0x4b')]=_0x2499dc[_0xf752('0x4b')][_0xf752('0x58')]?_0x2499dc[_0xf752('0x4b')]:_0x58b669[_0xf752('0x46')];if(!_0x4a344f[_0xf752('0x47')]['hasOwnProperty']('nolimit')){_0x2499dc[_0xf752('0x32')]=qs['limit'](_0x4a344f[_0xf752('0x47')][_0xf752('0x32')]);_0x2499dc[_0xf752('0x30')]=qs['offset'](_0x4a344f[_0xf752('0x47')][_0xf752('0x30')]);}_0x2499dc['order']=qs[_0xf752('0x6a')](_0x4a344f[_0xf752('0x47')][_0xf752('0x6a')]);_0x2499dc[_0xf752('0x4e')]=qs['filters'](_[_0xf752('0x70')](_0x4a344f[_0xf752('0x47')],_0x58b669[_0xf752('0x49')]));_0x2499dc[_0xf752('0x4e')][_0xf752('0x64')]=_0x567893['id'];if(_0x4a344f['query']['filter']){_0x2499dc[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x2499dc['where'],{'$or':_[_0xf752('0x40')](_0x2499dc[_0xf752('0x4b')],function(_0x1579b6){var _0x510ed2={};_0x510ed2[_0x1579b6]={'$like':'%'+_0x4a344f[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x510ed2;})});}_0x2499dc=_[_0xf752('0x50')]({},_0x2499dc,_0x4a344f[_0xf752('0x52')]);return db[_0xf752('0x6e')][_0xf752('0x33')]({'where':_0x2499dc[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x33861c){_0x379b3e[_0xf752('0x33')]=_0x33861c;if(_0x4a344f[_0xf752('0x47')]['includeAll']){_0x2499dc[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0x6e')]['findAll'](_0x2499dc);})[_0xf752('0x22')](function(_0x46445a){_0x379b3e['rows']=_0x46445a;return _0x379b3e;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x126134,_0x2499dc))['catch'](handleError(_0x126134,null));};exports[_0xf752('0x71')]=function(_0x34cdd1,_0x244c05,_0x580583){return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x34cdd1[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x244c05,null))[_0xf752('0x22')](function(_0x32a77f){if(_0x32a77f){return _0x32a77f[_0xf752('0x71')](_0x34cdd1[_0xf752('0x47')][_0xf752('0x72')]);}})[_0xf752('0x22')](respondWithStatusCode(_0x244c05,null))[_0xf752('0x2c')](handleError(_0x244c05,null));};exports['addInteraction']=function(_0x572b64,_0x585230,_0x44539e){return db[_0xf752('0x73')]['find']({'where':{'id':_0x572b64[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x585230,null))['then'](function(_0x3a6d0f){if(_0x3a6d0f){return _0x3a6d0f['addInteraction'](_0x572b64[_0xf752('0x5c')]['ids'],_[_0xf752('0x74')](_0x572b64[_0xf752('0x5c')],[_0xf752('0x72'),'id'])||{});}})[_0xf752('0x22')](respondWithResult(_0x585230,null))[_0xf752('0x2c')](handleError(_0x585230,null));};exports[_0xf752('0x75')]=function(_0x963374,_0x36b15b,_0x53d846){var _0x166f1b={'raw':![],'where':{}};var _0x4634dd={};var _0x45f08b={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x963374['params']['id']}})['then'](handleEntityNotFound(_0x36b15b,null))[_0xf752('0x22')](function(_0x3964cc){if(_0x3964cc){_0x4634dd[_0xf752('0x46')]=_[_0xf752('0x48')](db[_0xf752('0x73')]['rawAttributes']);_0x4634dd['query']=_[_0xf752('0x48')](_0x963374[_0xf752('0x47')]);_0x4634dd[_0xf752('0x49')]=_['intersection'](_0x4634dd[_0xf752('0x46')],_0x4634dd['query']);_0x166f1b[_0xf752('0x4b')]=_[_0xf752('0x4a')](_0x4634dd['model'],qs['fields'](_0x963374[_0xf752('0x47')][_0xf752('0x4c')]));_0x166f1b[_0xf752('0x4b')]=_0x166f1b[_0xf752('0x4b')]['length']?_0x166f1b['attributes']:_0x4634dd[_0xf752('0x46')];if(!_0x963374[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x166f1b[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x963374['query'][_0xf752('0x32')]);_0x166f1b[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x963374['query'][_0xf752('0x30')]);}_0x166f1b[_0xf752('0x69')]=qs['sort'](_0x963374[_0xf752('0x47')][_0xf752('0x6a')]);_0x166f1b[_0xf752('0x4e')]=qs['filters'](_['pick'](_0x963374[_0xf752('0x47')],_0x4634dd[_0xf752('0x49')]));_0x166f1b[_0xf752('0x4e')][_0xf752('0x64')]=_0x3964cc['id'];if(_0x963374['query'][_0xf752('0x4f')]){_0x166f1b[_0xf752('0x4e')]=_['merge'](_0x166f1b['where'],{'$or':_[_0xf752('0x40')](_0x166f1b[_0xf752('0x4b')],function(_0x53c78d){var _0x551183={};_0x551183[_0x53c78d]={'$like':'%'+_0x963374[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x551183;})});}_0x166f1b=_[_0xf752('0x50')]({},_0x166f1b,_0x963374[_0xf752('0x52')]);return db[_0xf752('0x73')][_0xf752('0x33')]({'where':_0x166f1b[_0xf752('0x4e')]})['then'](function(_0x1c7d75){_0x45f08b[_0xf752('0x33')]=_0x1c7d75;if(_0x963374[_0xf752('0x47')][_0xf752('0x59')]){_0x166f1b[_0xf752('0x53')]=[{'model':db[_0xf752('0x76')],'as':_0xf752('0x77'),'required':![]},{'model':db[_0xf752('0x78')],'as':_0xf752('0x79'),'attributes':[_0xf752('0x3d'),_0xf752('0x7a'),_0xf752('0x7b')],'required':![]},{'model':db[_0xf752('0x7c')],'as':_0xf752('0x7d'),'attributes':['id','name','color'],'where':_0x963374['query'][_0xf752('0x7e')]?{'id':_0x963374['query'][_0xf752('0x7e')]}:undefined,'required':_0x963374['query'][_0xf752('0x7e')]?!![]:![]}];}return db[_0xf752('0x73')][_0xf752('0x6b')](_0x166f1b);})[_0xf752('0x22')](function(_0x17ba3d){_0x45f08b['rows']=_0x17ba3d;return _0x45f08b;});}})[_0xf752('0x22')](respondWithFilteredResult(_0x36b15b,_0x166f1b))[_0xf752('0x2c')](handleError(_0x36b15b,null));};exports[_0xf752('0x7f')]=function(_0x4835b3,_0x554b86){var _0x395b98=_0x4835b3['params']['id'];var _0x14eebe=_0x4835b3['body'];var _0x327f3b=0xc8;var _0x53060a=null;return db['sequelize'][_0xf752('0x80')]({'isolationLevel':db[_0xf752('0x81')][_0xf752('0x82')][_0xf752('0x83')][_0xf752('0x84')]},function(_0x305ae7){return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x395b98},'transaction':_0x305ae7})['then'](function(_0x60f936){if(_0x60f936){return db[_0xf752('0x85')][_0xf752('0x3a')]({'where':{'FaxAccountId':_0x395b98},'transaction':_0x305ae7})[_0xf752('0x22')](function(){var _0x280d6e=_[_0xf752('0x40')](_0x14eebe,function(_0x1bb4af){_0x1bb4af['FaxAccountId']=_0x395b98;return _0x1bb4af;});return db[_0xf752('0x85')]['bulkCreate'](_0x280d6e,{'transaction':_0x305ae7});});}else{_0x327f3b=0x194;_0x53060a=[];}});})[_0xf752('0x22')](function(){if(_0x327f3b!==0x194){return db[_0xf752('0x85')][_0xf752('0x86')]({'where':{'FaxAccountId':_0x395b98},'order':_0xf752('0x87')})[_0xf752('0x22')](function(_0x21d044){_0x53060a=_0x21d044;});}})['catch'](function(_0x4adbf6){_0x327f3b=0x1f4;logger[_0xf752('0x28')](_0x4adbf6['stack']);if(_0x4adbf6[_0xf752('0x3d')]){delete _0x4adbf6[_0xf752('0x3d')];}_0x53060a=_0x4adbf6;})[_0xf752('0x88')](function(){if(_0x53060a===null){_0x554b86['sendStatus'](_0x327f3b);}else{if(_0x327f3b===0x1f4){_0x554b86['status'](_0x327f3b)[_0xf752('0x3e')](_0x53060a);}else{_0x554b86[_0xf752('0x2e')](_0x327f3b)['json'](_0x53060a);}}});};exports['getApplications']=function(_0x3f5508,_0x44c9f2,_0x1cae27){var _0x42d611={};var _0x47844b={};var _0xf404c1;var _0x51a605;return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x3f5508[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x44c9f2,null))['then'](function(_0x54caea){if(_0x54caea){_0xf404c1=_0x54caea;_0x47844b[_0xf752('0x46')]=_[_0xf752('0x48')](db['FaxApplication'][_0xf752('0x42')]);_0x47844b[_0xf752('0x47')]=_[_0xf752('0x48')](_0x3f5508['query']);_0x47844b['filters']=_[_0xf752('0x4a')](_0x47844b[_0xf752('0x46')],_0x47844b['query']);_0x42d611['attributes']=_[_0xf752('0x4a')](_0x47844b[_0xf752('0x46')],qs[_0xf752('0x4c')](_0x3f5508[_0xf752('0x47')][_0xf752('0x4c')]));_0x42d611[_0xf752('0x4b')]=_0x42d611[_0xf752('0x4b')][_0xf752('0x58')]?_0x42d611[_0xf752('0x4b')]:_0x47844b[_0xf752('0x46')];_0x42d611[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x3f5508[_0xf752('0x47')][_0xf752('0x6a')]);_0x42d611[_0xf752('0x4e')]=qs[_0xf752('0x49')](_[_0xf752('0x70')](_0x3f5508['query'],_0x47844b[_0xf752('0x49')]));if(_0x3f5508[_0xf752('0x47')][_0xf752('0x4f')]){_0x42d611['where']=_[_0xf752('0x50')](_0x42d611['where'],{'$or':_[_0xf752('0x40')](_0x42d611[_0xf752('0x4b')],function(_0x32c585){var _0xdbbc2a={};_0xdbbc2a[_0x32c585]={'$like':'%'+_0x3f5508[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0xdbbc2a;})});}_0x42d611=_[_0xf752('0x50')]({},_0x42d611,_0x3f5508[_0xf752('0x52')]);return _0xf404c1['getApplications'](_0x42d611);}})[_0xf752('0x22')](function(_0x255df4){if(_0x255df4){_0x51a605=_0x255df4[_0xf752('0x58')];if(!_0x3f5508['query']['hasOwnProperty']('nolimit')){_0x42d611[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x3f5508[_0xf752('0x47')]['limit']);_0x42d611[_0xf752('0x30')]=qs[_0xf752('0x30')](_0x3f5508[_0xf752('0x47')][_0xf752('0x30')]);}return _0xf404c1[_0xf752('0x89')](_0x42d611);}})[_0xf752('0x22')](function(_0x41bb61){if(_0x41bb61){return _0x41bb61?{'count':_0x51a605,'rows':_0x41bb61}:null;}})[_0xf752('0x22')](respondWithResult(_0x44c9f2,null))[_0xf752('0x2c')](handleError(_0x44c9f2,null));};function Extension(_0x5626aa,_0x3a2928,_0x36f94f,_0x1c8454){this[_0xf752('0x8a')]=_0xf752('0x8b');this['exten']=_0x5626aa[_0xf752('0x8c')];this[_0xf752('0x8d')]=_0x1c8454;this[_0xf752('0x44')]=_0xf752('0x8e');this[_0xf752('0x8f')]='Fax\x20Extension';this[_0xf752('0x64')]=_0x5626aa['id'];this['priority']=_0x3a2928;this[_0xf752('0x90')]=_0x36f94f;}function createExtensionsReciveFax(_0x1a3874){var _0x23349f=0x1;var _0x14a5f4=[];_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'',_0xf752('0x92')));_0x23349f+=0x1;_0x14a5f4['push'](new Extension(_0x1a3874,_0x23349f,_0xf752('0x93'),'Set'));_0x23349f+=0x1;for(var _0x1cfe98 in _0x1a3874){if(_0x1a3874[_0xf752('0x68')](_0x1cfe98)&&(_0x1cfe98==='ecm'||_0x1cfe98===_0xf752('0x8c')||_0x1cfe98===_0xf752('0x94')||_0x1cfe98===_0xf752('0x95')||_0x1cfe98===_0xf752('0x96')||_0x1cfe98===_0xf752('0x97')||_0x1cfe98===_0xf752('0x98')||_0x1cfe98===_0xf752('0x99')||_0x1cfe98===_0xf752('0x9a'))){_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,_0xf752('0x9b')+_0x1cfe98+')='+_0x1a3874[_0x1cfe98],_0xf752('0x9c')));_0x23349f+=0x1;}}_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'6',_0xf752('0x9d')));_0x23349f+=0x1;_0x14a5f4[_0xf752('0x91')](new Extension(_0x1a3874,_0x23349f,'/var/opt/motion2/server/files/attachments/fax-${CALLERID(num)}-${CUT(UNIQUEID,.,1)}-${CUT(UNIQUEID,.,2)}-${STRFTIME(,,%C%y%m%d%H%M%S)}-rx.tif,d',_0xf752('0x9e')));_0x23349f=0x0;return _0x14a5f4;}exports[_0xf752('0x9f')]=function(_0x15a18d,_0x4ab9a9,_0x4ef70e){var _0x1c502e;return db[_0xf752('0x81')][_0xf752('0x80')](function(_0x127a4e){return db[_0xf752('0x41')][_0xf752('0x5b')](_0x15a18d[_0xf752('0x5c')],{'transaction':_0x127a4e})[_0xf752('0x22')](function(_0x156db3){_0x1c502e=_0x156db3[_0xf752('0x38')]({'plain':!![]});return db['VoiceExtension'][_0xf752('0xa0')](createExtensionsReciveFax(_0x1c502e),{'transaction':_0x127a4e});});})[_0xf752('0x22')](function(){return _0x1c502e;})['then'](respondWithResult(_0x4ab9a9,null))[_0xf752('0x2c')](handleError(_0x4ab9a9,null));};exports[_0xf752('0xa1')]=function(_0x6d4235,_0x4e815e,_0x2f772b){var _0x2104ab;return db[_0xf752('0x81')][_0xf752('0x80')](function(_0x4511f8){return db[_0xf752('0x41')][_0xf752('0x37')](_0x6d4235[_0xf752('0x5c')],{'where':{'id':_0x6d4235['body']['id']},'transaction':_0x4511f8})[_0xf752('0x22')](function(_0x2c2d2e){return db[_0xf752('0xa2')][_0xf752('0x3a')]({'where':{'FaxAccountId':_0x6d4235[_0xf752('0x5c')]['id']},'transaction':_0x4511f8})['then'](function(_0x1beee9){return db[_0xf752('0xa2')][_0xf752('0xa0')](createExtensionsReciveFax(_['omit'](_0x6d4235['body'],[_0xf752('0xa3'),_0xf752('0x45'),_0xf752('0xa4'),_0xf752('0xa5'),_0xf752('0xa6'),_0xf752('0xa7')])),{'transaction':_0x4511f8});});});})[_0xf752('0x22')](function(){return db[_0xf752('0x41')][_0xf752('0xa8')](_0x6d4235['body']['id']);})[_0xf752('0x22')](respondWithResult(_0x4e815e,null))['catch'](handleError(_0x4e815e,null));};exports['getMessages']=function(_0xafc51f,_0x2481cf,_0x3b8f79){var _0x371373={'raw':!![],'where':{}};var _0x1b6271={};var _0x201732={'count':0x0,'rows':[]};return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0xafc51f[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x2481cf,null))['then'](function(_0x1d90f3){if(_0x1d90f3){_0x1b6271[_0xf752('0x46')]=_[_0xf752('0x48')](db['FaxMessage'][_0xf752('0x42')]);_0x1b6271[_0xf752('0x47')]=_['keys'](_0xafc51f[_0xf752('0x47')]);_0x1b6271['filters']=_[_0xf752('0x4a')](_0x1b6271['model'],_0x1b6271['query']);_0x371373['attributes']=_[_0xf752('0x4a')](_0x1b6271['model'],qs[_0xf752('0x4c')](_0xafc51f[_0xf752('0x47')][_0xf752('0x4c')]));_0x371373[_0xf752('0x4b')]=_0x371373[_0xf752('0x4b')]['length']?_0x371373[_0xf752('0x4b')]:_0x1b6271[_0xf752('0x46')];if(!_0xafc51f[_0xf752('0x47')][_0xf752('0x68')](_0xf752('0x4d'))){_0x371373['limit']=qs[_0xf752('0x32')](_0xafc51f[_0xf752('0x47')]['limit']);_0x371373[_0xf752('0x30')]=qs[_0xf752('0x30')](_0xafc51f[_0xf752('0x47')][_0xf752('0x30')]);}_0x371373[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0xafc51f[_0xf752('0x47')]['sort']);_0x371373[_0xf752('0x4e')]=qs['filters'](_[_0xf752('0x70')](_0xafc51f['query'],_0x1b6271[_0xf752('0x49')]));_0x371373[_0xf752('0x4e')][_0xf752('0x64')]=_0x1d90f3['id'];if(_0xafc51f[_0xf752('0x47')][_0xf752('0x4f')]){_0x371373['where']=_['merge'](_0x371373[_0xf752('0x4e')],{'$or':_[_0xf752('0x40')](_0x371373[_0xf752('0x4b')],function(_0x5e8ffb){var _0x551eed={};_0x551eed[_0x5e8ffb]={'$like':'%'+_0xafc51f[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x551eed;})});}if(_0xafc51f[_0xf752('0x47')][_0xf752('0xa9')]){var _0x39526b=_0xafc51f[_0xf752('0x47')][_0xf752('0xa9')]['split'](',');var _0x19845e={};_0x19845e[_0x39526b[0x0]]={'$gte':moment(_0x39526b[0x1])[_0xf752('0xaa')](_0xf752('0xab'))};_0x371373[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x371373[_0xf752('0x4e')],_0x19845e);}_0x371373=_['merge']({},_0x371373,_0xafc51f[_0xf752('0x52')]);return db[_0xf752('0xac')]['count']({'where':_0x371373[_0xf752('0x4e')]})[_0xf752('0x22')](function(_0x3a24d6){_0x201732[_0xf752('0x33')]=_0x3a24d6;if(_0xafc51f[_0xf752('0x47')][_0xf752('0x59')]){_0x371373[_0xf752('0x53')]=[{'all':!![]}];}return db[_0xf752('0xac')][_0xf752('0x6b')](_0x371373);})[_0xf752('0x22')](function(_0x11d00d){_0x201732[_0xf752('0x54')]=_0x11d00d;return _0x201732;});}})['then'](respondWithFilteredResult(_0x2481cf,_0x371373))['catch'](handleError(_0x2481cf,null));};exports[_0xf752('0x3e')]=function(_0x18959c,_0x56769e,_0x40b403){var _0x34cbb0,_0x4d2c0e={},_0x8dd4a8;if(_0x18959c[_0xf752('0x5c')]['to']){_0x8dd4a8=_0x18959c[_0xf752('0x5c')]['to'][0x0];}return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x18959c[_0xf752('0x56')]['id']},'include':[{'model':db[_0xf752('0xad')],'as':'List','include':[{'model':db[_0xf752('0x76')],'as':_0xf752('0xae'),'where':{'fax':_0x8dd4a8},'limit':0x1,'order':[[_0xf752('0xa5'),_0xf752('0xaf')]]}]}]})[_0xf752('0x22')](handleEntityNotFound(_0x56769e,null))[_0xf752('0x22')](function(_0x42b59b){_0x34cbb0=_0x42b59b;if(_0x18959c[_0xf752('0x5c')]['attachments']&&_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][_0xf752('0x58')]){for(var _0x39876c=0x0;_0x39876c<_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][_0xf752('0x58')];_0x39876c+=0x1){_0x18959c[_0xf752('0x5c')]['attachments'][_0x39876c]={'filename':_0x18959c['body'][_0xf752('0xb0')][_0x39876c]['name'],'id':_0x18959c['body'][_0xf752('0xb0')][_0x39876c]['id'],'path':path[_0xf752('0xb1')](config['root'],_0xf752('0xb2'),_0x18959c[_0xf752('0x5c')]['attachments'][_0x39876c][_0xf752('0xb3')])};}}return respondWithRpcPromise('CheckAfterSend',_0xf752('0xb4'),{'FaxAccountId':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x56')]['id'])?undefined:_0x18959c[_0xf752('0x56')]['id'],'path':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['attachments'][0x0]['path'])?undefined:_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0]['path'],'fax':_['isNil'](_0x18959c[_0xf752('0x5c')]['to'][0x0])?undefined:_0x18959c[_0xf752('0x5c')]['to'][0x0]},client9002);})['then'](function(){if(_0x34cbb0){if(_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['from'])){_0x18959c['body']['from']=util[_0xf752('0xaa')](_0xf752('0xb6'),_0x34cbb0[_0xf752('0x3d')],_0x34cbb0[_0xf752('0xb7')]);}if(_0x34cbb0[_0xf752('0xb8')]){if(_0x34cbb0['List'][_0xf752('0xae')][_0xf752('0x58')]){return _0x34cbb0['List']['Contacts'][0x0];}else{return db[_0xf752('0x76')]['create'](_[_0xf752('0x1a')](_0x18959c['body'],{'firstName':_0x18959c[_0xf752('0x5c')]['to'][0x0],'phone':_0x18959c[_0xf752('0x5c')]['to'][0x0],'fax':_0x18959c[_0xf752('0x5c')]['to'][0x0],'ListId':_0x34cbb0[_0xf752('0xa7')]}));}}else{throw new Error(_0xf752('0xb9'));}}else{throw new Error(_0xf752('0xba'));}})[_0xf752('0x22')](function(_0x17b3d1){if(_0x17b3d1){return db['FaxInteraction'][_0xf752('0x5a')]({'where':{'ContactId':_0x17b3d1['id'],'closed':![],'FaxAccountId':_0x34cbb0['id']}})[_0xf752('0x22')](function(_0x3d717c){if(_0x3d717c){return[_0x3d717c,![]];}return db[_0xf752('0x73')][_0xf752('0x5b')]({'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x17b3d1['id'],'FaxAccountId':_0x34cbb0['id'],'fax':_0x18959c[_0xf752('0x5c')]['to'][0x0],'firstMsgDirection':'out','Messages':[_['merge'](_0x18959c['body'],{'read':![],'body':_0x18959c[_0xf752('0x5c')]['attachments'][0x0][_0xf752('0xbb')],'FaxAccountId':_0x34cbb0['id'],'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x17b3d1['id'],'AttachmentId':_0x18959c[_0xf752('0x5c')]['attachments'][0x0]['id']})]},{'include':[{'model':db[_0xf752('0xac')],'as':_0xf752('0xbc')}]})[_0xf752('0x22')](function(_0x2a26a9){return[_0x2a26a9,!![]];});});}else{throw new Error(_0xf752('0xbd'));}})[_0xf752('0xbe')](function(_0x5958a8,_0x5cfd07){if(_0x5cfd07){return _0x5958a8;}return db[_0xf752('0xac')][_0xf752('0x5b')]({'direction':_0xf752('0xbf'),'read':![],'body':_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0][_0xf752('0xbb')],'FaxAccountId':_0x34cbb0['id'],'FaxInteractionId':_0x5958a8['id'],'UserId':_0x18959c[_0xf752('0x5d')]['id'],'ContactId':_0x5958a8[_0xf752('0xc0')],'AttachmentId':_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0]['id']})[_0xf752('0x22')](function(_0x845a50){_0x5958a8[_0xf752('0xc1')][_0xf752('0xbc')]=[];_0x5958a8[_0xf752('0xc1')][_0xf752('0xbc')][_0xf752('0x91')](_0x845a50[_0xf752('0xc1')]);return _0x5958a8;});})[_0xf752('0x22')](function(_0x475a45){respondWithRpcPromise(_0xf752('0xc2'),'SendFax',{'FaxAccountId':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x56')]['id'])?undefined:_0x18959c[_0xf752('0x56')]['id'],'path':_[_0xf752('0xb5')](_0x18959c['body'][_0xf752('0xb0')][0x0][_0xf752('0x9')])?undefined:_0x18959c[_0xf752('0x5c')][_0xf752('0xb0')][0x0][_0xf752('0x9')],'fax':_[_0xf752('0xb5')](_0x18959c[_0xf752('0x5c')]['to'][0x0])?undefined:_0x18959c[_0xf752('0x5c')]['to'][0x0],'AttachmentId':_0x18959c['body']['attachments'][0x0]['id']},client9002)[_0xf752('0x22')](function(_0x100245){logger[_0xf752('0x23')](_0xf752('0xc3'),_0x100245);})[_0xf752('0x2c')](function(_0x53462f){logger[_0xf752('0x23')](_0xf752('0xc3'),_0x53462f);});return _0x475a45;})['then'](respondWithResult(_0x56769e,null))[_0xf752('0x2c')](handleError(_0x56769e,null));};exports[_0xf752('0xc4')]=function(_0x787615,_0x176be7,_0x50bba4){return db['FaxAccount'][_0xf752('0x5a')]({'where':{'id':_0x787615[_0xf752('0x56')]['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x176be7,null))[_0xf752('0x22')](function(_0x1a90f3){if(_0x1a90f3){return _0x1a90f3[_0xf752('0xc4')](_0x787615[_0xf752('0x5c')][_0xf752('0x72')],_[_0xf752('0x74')](_0x787615['body'],['ids','id'])||{})['spread'](function(_0x42e342){for(var _0x510661=0x0;_0x510661<_0x787615[_0xf752('0x5c')][_0xf752('0x72')][_0xf752('0x58')];_0x510661+=0x1){socket[_0xf752('0xc5')](_0xf752('0xc6'),{'UserId':Number(_0x787615[_0xf752('0x5c')][_0xf752('0x72')][_0x510661]),'FaxAccountId':Number(_0x787615[_0xf752('0x56')]['id'])});}return _0x42e342;});}})[_0xf752('0x22')](respondWithResult(_0x176be7,null))[_0xf752('0x2c')](handleError(_0x176be7,null));};exports['removeAgents']=function(_0x130acb,_0x353d5a,_0x48eec3){return db[_0xf752('0x41')][_0xf752('0x5a')]({'where':{'id':_0x130acb[_0xf752('0x56')]['id']}})['then'](handleEntityNotFound(_0x353d5a,null))['then'](function(_0x2b30df){if(_0x2b30df){return _0x2b30df[_0xf752('0xc7')](_0x130acb[_0xf752('0x47')][_0xf752('0x72')])['then'](function(){if(_['isArray'](_0x130acb['query'][_0xf752('0x72')])){for(var _0x2130ac=0x0;_0x2130ac<_0x130acb[_0xf752('0x47')][_0xf752('0x72')][_0xf752('0x58')];_0x2130ac+=0x1){socket['emit'](_0xf752('0xc8'),{'UserId':Number(_0x130acb[_0xf752('0x47')][_0xf752('0x72')][_0x2130ac]),'FaxAccountId':Number(_0x130acb['params']['id'])});}}else{socket[_0xf752('0xc5')](_0xf752('0xc8'),{'UserId':Number(_0x130acb[_0xf752('0x47')][_0xf752('0x72')]),'FaxAccountId':Number(_0x130acb[_0xf752('0x56')]['id'])});}});}})[_0xf752('0x22')](respondWithStatusCode(_0x353d5a,null))[_0xf752('0x2c')](handleError(_0x353d5a,null));};exports[_0xf752('0xc9')]=function(_0x279d54,_0x4baa06,_0x47b004){var _0x3bc82b={};var _0x578a49={};var _0x569778;var _0x3abdf1;return db[_0xf752('0x41')][_0xf752('0x67')]({'where':{'id':_0x279d54['params']['id']}})[_0xf752('0x22')](handleEntityNotFound(_0x4baa06,null))[_0xf752('0x22')](function(_0x266ca6){if(_0x266ca6){_0x569778=_0x266ca6;_0x578a49[_0xf752('0x46')]=_['keys'](db['User'][_0xf752('0x42')]);_0x578a49[_0xf752('0x47')]=_[_0xf752('0x48')](_0x279d54['query']);_0x578a49[_0xf752('0x49')]=_['intersection'](_0x578a49[_0xf752('0x46')],_0x578a49['query']);_0x3bc82b[_0xf752('0x4b')]=_['intersection'](_0x578a49['model'],qs[_0xf752('0x4c')](_0x279d54[_0xf752('0x47')][_0xf752('0x4c')]));_0x3bc82b['attributes']=_0x3bc82b['attributes']['length']?_0x3bc82b['attributes']:_0x578a49[_0xf752('0x46')];_0x3bc82b[_0xf752('0x69')]=qs[_0xf752('0x6a')](_0x279d54[_0xf752('0x47')][_0xf752('0x6a')]);_0x3bc82b[_0xf752('0x4e')]=qs[_0xf752('0x49')](_[_0xf752('0x70')](_0x279d54[_0xf752('0x47')],_0x578a49[_0xf752('0x49')]));if(_0x279d54[_0xf752('0x47')][_0xf752('0x4f')]){_0x3bc82b[_0xf752('0x4e')]=_[_0xf752('0x50')](_0x3bc82b['where'],{'$or':_['map'](_0x3bc82b['attributes'],function(_0x45652a){var _0x4497fe={};_0x4497fe[_0x45652a]={'$like':'%'+_0x279d54[_0xf752('0x47')][_0xf752('0x4f')]+'%'};return _0x4497fe;})});}_0x3bc82b=_[_0xf752('0x50')]({},_0x3bc82b,_0x279d54['options']);return _0x569778[_0xf752('0xc9')](_0x3bc82b);}})['then'](function(_0x15aee6){if(_0x15aee6){_0x3abdf1=_0x15aee6[_0xf752('0x58')];if(!_0x279d54[_0xf752('0x47')]['hasOwnProperty'](_0xf752('0x4d'))){_0x3bc82b[_0xf752('0x32')]=qs[_0xf752('0x32')](_0x279d54['query']['limit']);_0x3bc82b['offset']=qs[_0xf752('0x30')](_0x279d54['query'][_0xf752('0x30')]);}return _0x569778[_0xf752('0xc9')](_0x3bc82b);}})['then'](function(_0x36354a){if(_0x36354a){return _0x36354a?{'count':_0x3abdf1,'rows':_0x36354a}:null;}})[_0xf752('0x22')](respondWithResult(_0x4baa06,null))[_0xf752('0x2c')](handleError(_0x4baa06,null));};
\ No newline at end of file
index ddc4f26..77a0a1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18df=['hook','exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x110424,_0xa077fb){var _0x2ef599=function(_0x19b933){while(--_0x19b933){_0x110424['push'](_0x110424['shift']());}};_0x2ef599(++_0xa077fb);}(_0x18df,0x1b2));var _0xf18d=function(_0x3e000a,_0x84f846){_0x3e000a=_0x3e000a-0x0;var _0x2e119e=_0x18df[_0x3e000a];return _0x2e119e;};'use strict';var EventEmitter=require(_0xf18d('0x0'));var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xf18d('0x1')](0x0);var events={'afterCreate':_0xf18d('0x2'),'afterUpdate':_0xf18d('0x3'),'afterDestroy':_0xf18d('0x4')};function emitEvent(_0x58e89c){return function(_0x38ec4e,_0x124a0b,_0x10be93){FaxAccountEvents[_0xf18d('0x5')](_0x58e89c+':'+_0x38ec4e['id'],_0x38ec4e);FaxAccountEvents[_0xf18d('0x5')](_0x58e89c,_0x38ec4e);_0x10be93(null);};}for(var e in events){if(events[_0xf18d('0x6')](e)){var event=events[e];FaxAccount[_0xf18d('0x7')](e,emitEvent(event));}}module[_0xf18d('0x8')]=FaxAccountEvents;
\ No newline at end of file
+var _0xd8c4=['update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xd8c4,0xd8));var _0x4d8c=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xd8c4[_0x46e363];return _0x3fb059;};'use strict';var EventEmitter=require('events');var FaxAccount=require('../../mysqldb')['db']['FaxAccount'];var FaxAccountEvents=new EventEmitter();FaxAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x4d8c('0x0'),'afterDestroy':_0x4d8c('0x1')};function emitEvent(_0x1139b2){return function(_0x4041cc,_0x26703a,_0x16b3c5){FaxAccountEvents[_0x4d8c('0x2')](_0x1139b2+':'+_0x4041cc['id'],_0x4041cc);FaxAccountEvents[_0x4d8c('0x2')](_0x1139b2,_0x4041cc);_0x16b3c5(null);};}for(var e in events){if(events[_0x4d8c('0x3')](e)){var event=events[e];FaxAccount[_0x4d8c('0x4')](e,emitEvent(event));}}module[_0x4d8c('0x5')]=FaxAccountEvents;
\ No newline at end of file
index 4151700..31c0b9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc1d=['lodash','util','api','moment','request-promise','path','rimraf','./faxAccount.attributes','define','FaxAccount','fax_accounts'];(function(_0x210718,_0x247b55){var _0x541bfc=function(_0x5dbcad){while(--_0x5dbcad){_0x210718['push'](_0x210718['shift']());}};_0x541bfc(++_0x247b55);}(_0xdc1d,0x1c3));var _0xddc1=function(_0x4f3044,_0x18dd88){_0x4f3044=_0x4f3044-0x0;var _0x1efa50=_0xdc1d[_0x4f3044];return _0x1efa50;};'use strict';var _=require(_0xddc1('0x0'));var util=require(_0xddc1('0x1'));var logger=require('../../config/logger')(_0xddc1('0x2'));var moment=require(_0xddc1('0x3'));var BPromise=require('bluebird');var rp=require(_0xddc1('0x4'));var fs=require('fs');var path=require(_0xddc1('0x5'));var rimraf=require(_0xddc1('0x6'));var config=require('../../config/environment');var attributes=require(_0xddc1('0x7'));module['exports']=function(_0xf397dc,_0x22ed41){return _0xf397dc[_0xddc1('0x8')](_0xddc1('0x9'),attributes,{'tableName':_0xddc1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf72f=['api','bluebird','path','rimraf','../../config/environment','./faxAccount.attributes','define','FaxAccount','fax_accounts','lodash','util','../../config/logger'];(function(_0x1147ac,_0x15d8d3){var _0x1c30d1=function(_0x4b948a){while(--_0x4b948a){_0x1147ac['push'](_0x1147ac['shift']());}};_0x1c30d1(++_0x15d8d3);}(_0xf72f,0xed));var _0xff72=function(_0x2a147c,_0x2b8164){_0x2a147c=_0x2a147c-0x0;var _0x3a29c3=_0xf72f[_0x2a147c];return _0x3a29c3;};'use strict';var _=require(_0xff72('0x0'));var util=require(_0xff72('0x1'));var logger=require(_0xff72('0x2'))(_0xff72('0x3'));var moment=require('moment');var BPromise=require(_0xff72('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xff72('0x5'));var rimraf=require(_0xff72('0x6'));var config=require(_0xff72('0x7'));var attributes=require(_0xff72('0x8'));module['exports']=function(_0x1b99b0,_0xf2dfc1){return _0x1b99b0[_0xff72('0x9')](_0xff72('0xa'),attributes,{'tableName':_0xff72('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 03c45b5..76db939 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x238c=['limit','include','model','attributes','map','GetFaxAccount','body','fax','CmContact','describe','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','CompanyId','ListId','isNil','from','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','account','CmList','Contacts','DESC','FaxApplication','applications','Applications','list','List','length','defaults','FaxInteraction','create','Contact\x20not\x20found','get','autoclose','push','close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','unshift','name','waitForTheAssignedAgent','Start','startRouting','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','FaxAccount','findAll','raw','options'];(function(_0x3cc4bc,_0x43040f){var _0x2977a7=function(_0x3e34ca){while(--_0x3e34ca){_0x3cc4bc['push'](_0x3cc4bc['shift']());}};_0x2977a7(++_0x43040f);}(_0x238c,0x1a2));var _0xc238=function(_0x451999,_0x1b3908){_0x451999=_0x451999-0x0;var _0x1b696e=_0x238c[_0x451999];return _0x1b696e;};'use strict';var _=require(_0xc238('0x0'));var util=require(_0xc238('0x1'));var moment=require(_0xc238('0x2'));var BPromise=require(_0xc238('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc238('0x4'));var db=require(_0xc238('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xc238('0x6'))('rpc');var config=require(_0xc238('0x7'));var jayson=require(_0xc238('0x8'));var client=jayson[_0xc238('0x9')]['http']({'port':0x232c});config[_0xc238('0xa')]=_['defaults'](config[_0xc238('0xa')],{'host':_0xc238('0xb'),'port':0x18eb});var socket=require(_0xc238('0xc'))(new Redis(config['redis']));require(_0xc238('0xd'))[_0xc238('0xe')](socket);function respondWithRpcPromise(_0x24c174,_0x5e3278,_0x45a3a9){return new BPromise(function(_0x5ee4a5,_0x182e55){return client[_0xc238('0xf')](_0x24c174,_0x45a3a9)[_0xc238('0x10')](function(_0x235461){logger[_0xc238('0x11')](_0xc238('0x12'),_0x5e3278,_0xc238('0x13'));logger[_0xc238('0x14')](_0xc238('0x15'),_0x5e3278,_0xc238('0x13'),JSON[_0xc238('0x16')](_0x235461));if(_0x235461[_0xc238('0x17')]){if(_0x235461[_0xc238('0x17')][_0xc238('0x18')]===0x1f4){logger[_0xc238('0x17')]('FaxAccount,\x20%s,\x20%s',_0x5e3278,_0x235461[_0xc238('0x17')]['message']);return _0x182e55(_0x235461['error'][_0xc238('0x19')]);}logger[_0xc238('0x17')](_0xc238('0x12'),_0x5e3278,_0x235461[_0xc238('0x17')][_0xc238('0x19')]);return _0x5ee4a5(_0x235461[_0xc238('0x17')][_0xc238('0x19')]);}else{logger[_0xc238('0x11')]('FaxAccount,\x20%s,\x20%s',_0x5e3278,_0xc238('0x13'));_0x5ee4a5(_0x235461[_0xc238('0x1a')][_0xc238('0x19')]);}})[_0xc238('0x1b')](function(_0x44d473){logger[_0xc238('0x17')](_0xc238('0x12'),_0x5e3278,_0x44d473);_0x182e55(_0x44d473);});});}exports['GetFaxAccount']=function(_0x165674){var _0x6d6d95=this;return new Promise(function(_0xa922db,_0xc74dc8){return db[_0xc238('0x1c')][_0xc238('0x1d')]({'raw':_0x165674['options']?_0x165674['options'][_0xc238('0x1e')]===undefined?!![]:![]:!![],'where':_0x165674['options']?_0x165674['options']['where']||null:null,'attributes':_0x165674[_0xc238('0x1f')]?_0x165674[_0xc238('0x1f')]['attributes']||null:null,'limit':_0x165674['options']?_0x165674[_0xc238('0x1f')][_0xc238('0x20')]||null:null,'include':_0x165674['options']?_0x165674[_0xc238('0x1f')][_0xc238('0x21')]?_['map'](_0x165674[_0xc238('0x1f')][_0xc238('0x21')],function(_0x2405e1){return{'model':db[_0x2405e1[_0xc238('0x22')]],'as':_0x2405e1['as'],'attributes':_0x2405e1[_0xc238('0x23')],'include':_0x2405e1['include']?_[_0xc238('0x24')](_0x2405e1['include'],function(_0x53d565){return{'model':db[_0x53d565[_0xc238('0x22')]],'as':_0x53d565['as'],'attributes':_0x53d565[_0xc238('0x23')],'include':_0x53d565[_0xc238('0x21')]?_[_0xc238('0x24')](_0x53d565[_0xc238('0x21')],function(_0x4d0c3f){return{'model':db[_0x4d0c3f[_0xc238('0x22')]],'as':_0x4d0c3f['as'],'attributes':_0x4d0c3f['attributes']};}):[]};}):[]};}):[]:[]})[_0xc238('0x10')](function(_0x2fed6b){logger[_0xc238('0x11')](_0xc238('0x25'),_0x165674);logger[_0xc238('0x14')]('GetFaxAccount',_0x165674,JSON[_0xc238('0x16')](_0x2fed6b));_0xa922db(_0x2fed6b);})[_0xc238('0x1b')](function(_0x4acec7){logger['error'](_0xc238('0x25'),_0x4acec7[_0xc238('0x19')],_0x165674);_0xc74dc8(_0x6d6d95[_0xc238('0x17')](0x1f4,_0x4acec7[_0xc238('0x19')]));});});};exports['NotifyFaxAccount']=function(_0x51d2ea,_0x10e8ed,_0x390692){var _0x558dee=this;return new Promise(function(_0x4d4bf8,_0x5376f5){var _0x4f4a2e={'body':_0x51d2ea[_0xc238('0x26')],'channel':_0xc238('0x27')};var _0x15e3e2=[];var _0x23e9ba=[];var _0x37b812={};return db[_0xc238('0x28')][_0xc238('0x29')]()[_0xc238('0x10')](function(_0xc9a46d){if(!_0xc9a46d){throw new db[(_0xc238('0x2a'))][(_0xc238('0x2b'))](_0xc238('0x2c'));}_0x15e3e2=_[_0xc238('0x2d')](_['keys'](_0xc9a46d),[_0xc238('0x2e'),_0xc238('0x2f')]);_0x23e9ba=_[_0xc238('0x2d')](_[_0xc238('0x30')](_0xc9a46d),[_0xc238('0x2e'),'updatedAt',_0xc238('0x31'),_0xc238('0x32')]);if(_0x51d2ea[_0xc238('0x26')]['id']){delete _0x51d2ea[_0xc238('0x26')]['id'];}if(_[_0xc238('0x33')](_0x51d2ea[_0xc238('0x26')][_0xc238('0x34')])){throw new db['Sequelize']['ValidationError']('from\x20is\x20mandatory');}if(_[_0xc238('0x33')](_0x51d2ea[_0xc238('0x26')][_0xc238('0x26')])||_0x51d2ea[_0xc238('0x26')][_0xc238('0x26')]===''){throw new db[(_0xc238('0x2a'))]['ValidationError'](_0xc238('0x35'));}if(_[_0xc238('0x33')](_0x51d2ea[_0xc238('0x26')][_0xc238('0x36')])){throw new db['Sequelize'][(_0xc238('0x2b'))](_0xc238('0x37')+_0x23e9ba);}if(!_[_0xc238('0x38')](_0x23e9ba,_0x51d2ea[_0xc238('0x26')]['mapKey'])){throw new db[(_0xc238('0x2a'))][(_0xc238('0x2b'))](_0xc238('0x39')+_0x23e9ba);}_0x37b812[_0x51d2ea[_0xc238('0x26')][_0xc238('0x36')]]=_0x51d2ea[_0xc238('0x26')][_0xc238('0x34')];})[_0xc238('0x10')](function(){return db['FaxAccount'][_0xc238('0x3a')]({'where':{'id':_0x51d2ea[_0xc238('0x3b')]['id']},'include':[{'model':db[_0xc238('0x3c')],'as':'List','include':[{'model':db[_0xc238('0x28')],'as':_0xc238('0x3d'),'where':_0x37b812,'limit':0x1,'order':[[_0xc238('0x2f'),_0xc238('0x3e')]]}]},{'model':db[_0xc238('0x3f')],'as':'Applications'}]});})[_0xc238('0x10')](function(_0x320f08){if(_0x320f08&&_0x320f08['List']){var _0x4949dd=_0x320f08['get']({'plain':!![]});_0x4f4a2e[_0xc238('0x3b')]=_0x4949dd;_0x4f4a2e[_0xc238('0x40')]=_0x4949dd[_0xc238('0x41')];_0x4f4a2e[_0xc238('0x42')]=_0x4949dd[_0xc238('0x43')];_0x4f4a2e[_0xc238('0x40')]=_['orderBy'](_0x4f4a2e[_0xc238('0x40')],['priority'],['asc']);if(_0x4f4a2e[_0xc238('0x3b')][_0xc238('0x41')]){delete _0x4f4a2e['account']['Applications'];}if(_0x4f4a2e[_0xc238('0x3b')][_0xc238('0x43')]&&_0x4f4a2e['account'][_0xc238('0x43')][_0xc238('0x3d')][_0xc238('0x44')]){return _0x4f4a2e[_0xc238('0x3b')][_0xc238('0x43')][_0xc238('0x3d')][0x0];}var _0x447697=_[_0xc238('0x45')](_0x51d2ea['body'],{'firstName':_0x51d2ea['body']['from'],'ListId':_0x4949dd[_0xc238('0x32')]});_0x447697[_0x51d2ea['body'][_0xc238('0x36')]]=_0x51d2ea[_0xc238('0x26')][_0xc238('0x34')];return db[_0xc238('0x28')]['create'](_0x447697,{'fields':_0x15e3e2,'raw':!![]});}})[_0xc238('0x10')](function(_0x1530cf){_0x4f4a2e['contact']=_0x1530cf;if(_0x1530cf){var _0xa18db={'ContactId':_0x1530cf['id'],'FaxAccountId':_0x51d2ea[_0xc238('0x3b')]['id'],'fax':_0x1530cf['fax']};return db[_0xc238('0x46')]['find']({'where':{'ContactId':_0x1530cf['id'],'closed':![],'FaxAccountId':_0x51d2ea[_0xc238('0x3b')]['id']}})['then'](function(_0x20afd0){if(_0x20afd0){return[_0x20afd0,![]];}return db['FaxInteraction'][_0xc238('0x47')](_0xa18db)[_0xc238('0x10')](function(_0x548dab){return[_0x548dab,!![]];});});}else{throw new Error(_0xc238('0x48'));}})['spread'](function(_0x11f6b7,_0x383a7b){var _0x546f67=_0x11f6b7[_0xc238('0x49')]({'plain':!![]});if(_0x383a7b){if(_0x4f4a2e[_0xc238('0x3b')][_0xc238('0x4a')]){_0x4f4a2e[_0xc238('0x40')][_0xc238('0x4b')]({'id':0x0,'priority':_0x4f4a2e[_0xc238('0x40')]['length']+0x1,'app':_0xc238('0x4c'),'appdata':_0xc238('0x4d'),'interval':_0xc238('0x4e')});}_0x546f67[_0xc238('0x4f')]=!![];}else{_0x546f67[_0xc238('0x4f')]=![];}_0x4f4a2e[_0xc238('0x50')]=_0x546f67;return db[_0xc238('0x51')][_0xc238('0x47')]({'body':_0x51d2ea[_0xc238('0x26')]['body'],'FaxAccountId':_0x51d2ea[_0xc238('0x3b')]['id'],'FaxInteractionId':_0x11f6b7['id'],'direction':'in','ContactId':_0x11f6b7[_0xc238('0x52')],'AttachmentId':_0x51d2ea['body'][_0xc238('0x53')]});})[_0xc238('0x10')](function(_0x3b19d7){_0x4f4a2e[_0xc238('0x19')]=_0x3b19d7;if(_0x4f4a2e[_0xc238('0x50')][_0xc238('0x54')]){return db['User'][_0xc238('0x3a')]({'attributes':['id','name'],'where':{'id':_0x4f4a2e[_0xc238('0x50')]['UserId']}})['then'](function(_0x43b657){if(_0x43b657){_0x4f4a2e[_0xc238('0x40')][_0xc238('0x55')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x43b657[_0xc238('0x56')]+','+(_0x4f4a2e[_0xc238('0x3b')][_0xc238('0x57')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xc238('0x58'),_0xc238('0x59'),_0x4f4a2e);});}return respondWithRpcPromise(_0xc238('0x58'),_0xc238('0x59'),_0x4f4a2e);})[_0xc238('0x10')](function(_0x144848){_0x4d4bf8(_0x144848);})['catch'](function(_0x137e90){_0x5376f5(_0x558dee[_0xc238('0x17')](0x1f4,_0x137e90[_0xc238('0x19')]));});});};
\ No newline at end of file
+var _0x7818=['redis','defaults','localhost','./faxAccount.socket','then','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','GetFaxAccount','FaxAccount','options','raw','attributes','limit','include','map','model','NotifyFaxAccount','body','fax','CmContact','describe','Sequelize','no\x20available\x20attributes','keys','createdAt','updatedAt','difference','CompanyId','ListId','isNil','from','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','find','CmList','Contacts','DESC','FaxApplication','Applications','get','account','applications','list','List','orderBy','priority','length','create','contact','FaxInteraction','Contact\x20not\x20found','spread','autoclose','push','close','unmanaged','*,*,*,*','created','FaxMessage','ContactId','AttachmentId','interaction','User','name','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x1cad4c,_0x3461a2){var _0x436b7d=function(_0x27c283){while(--_0x27c283){_0x1cad4c['push'](_0x1cad4c['shift']());}};_0x436b7d(++_0x3461a2);}(_0x7818,0x103));var _0x8781=function(_0x319aee,_0x1d6917){_0x319aee=_0x319aee-0x0;var _0xcd9d3a=_0x7818[_0x319aee];return _0xcd9d3a;};'use strict';var _=require('lodash');var util=require(_0x8781('0x0'));var moment=require(_0x8781('0x1'));var BPromise=require(_0x8781('0x2'));var rs=require(_0x8781('0x3'));var fs=require('fs');var Redis=require(_0x8781('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8781('0x5'));var logger=require(_0x8781('0x6'))(_0x8781('0x7'));var config=require(_0x8781('0x8'));var jayson=require(_0x8781('0x9'));var client=jayson['client'][_0x8781('0xa')]({'port':0x232c});config[_0x8781('0xb')]=_[_0x8781('0xc')](config[_0x8781('0xb')],{'host':_0x8781('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8781('0xb')]));require(_0x8781('0xe'))['register'](socket);function respondWithRpcPromise(_0x4ba256,_0x28b9cc,_0x84abbe){return new BPromise(function(_0x2827e6,_0x8f6647){return client['request'](_0x4ba256,_0x84abbe)[_0x8781('0xf')](function(_0x265e88){logger['info'](_0x8781('0x10'),_0x28b9cc,_0x8781('0x11'));logger[_0x8781('0x12')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x28b9cc,'request\x20sent',JSON[_0x8781('0x13')](_0x265e88));if(_0x265e88[_0x8781('0x14')]){if(_0x265e88[_0x8781('0x14')][_0x8781('0x15')]===0x1f4){logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x265e88[_0x8781('0x14')][_0x8781('0x16')]);return _0x8f6647(_0x265e88[_0x8781('0x14')]['message']);}logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x265e88[_0x8781('0x14')]['message']);return _0x2827e6(_0x265e88[_0x8781('0x14')][_0x8781('0x16')]);}else{logger[_0x8781('0x17')](_0x8781('0x10'),_0x28b9cc,_0x8781('0x11'));_0x2827e6(_0x265e88['result'][_0x8781('0x16')]);}})[_0x8781('0x18')](function(_0x4f7e0f){logger[_0x8781('0x14')](_0x8781('0x10'),_0x28b9cc,_0x4f7e0f);_0x8f6647(_0x4f7e0f);});});}exports[_0x8781('0x19')]=function(_0x28fd57){var _0x18825d=this;return new Promise(function(_0x1bcbb9,_0x58bd0a){return db[_0x8781('0x1a')]['findAll']({'raw':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1c')]===undefined?!![]:![]:!![],'where':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')]['where']||null:null,'attributes':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1d')]||null:null,'limit':_0x28fd57[_0x8781('0x1b')]?_0x28fd57[_0x8781('0x1b')][_0x8781('0x1e')]||null:null,'include':_0x28fd57[_0x8781('0x1b')]?_0x28fd57['options'][_0x8781('0x1f')]?_[_0x8781('0x20')](_0x28fd57[_0x8781('0x1b')][_0x8781('0x1f')],function(_0x2f5698){return{'model':db[_0x2f5698[_0x8781('0x21')]],'as':_0x2f5698['as'],'attributes':_0x2f5698[_0x8781('0x1d')],'include':_0x2f5698[_0x8781('0x1f')]?_['map'](_0x2f5698[_0x8781('0x1f')],function(_0x323c07){return{'model':db[_0x323c07['model']],'as':_0x323c07['as'],'attributes':_0x323c07[_0x8781('0x1d')],'include':_0x323c07[_0x8781('0x1f')]?_[_0x8781('0x20')](_0x323c07['include'],function(_0x281eb0){return{'model':db[_0x281eb0['model']],'as':_0x281eb0['as'],'attributes':_0x281eb0[_0x8781('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x8781('0xf')](function(_0xc3896a){logger[_0x8781('0x17')](_0x8781('0x19'),_0x28fd57);logger[_0x8781('0x12')]('GetFaxAccount',_0x28fd57,JSON[_0x8781('0x13')](_0xc3896a));_0x1bcbb9(_0xc3896a);})[_0x8781('0x18')](function(_0x6c48e9){logger['error'](_0x8781('0x19'),_0x6c48e9[_0x8781('0x16')],_0x28fd57);_0x58bd0a(_0x18825d[_0x8781('0x14')](0x1f4,_0x6c48e9[_0x8781('0x16')]));});});};exports[_0x8781('0x22')]=function(_0x1ed966,_0x4a7676,_0x2ec1ed){var _0x315312=this;return new Promise(function(_0x365be4,_0xb4d37c){var _0x4b26e3={'body':_0x1ed966[_0x8781('0x23')],'channel':_0x8781('0x24')};var _0x50d617=[];var _0x49acc7=[];var _0x3e093a={};return db[_0x8781('0x25')][_0x8781('0x26')]()['then'](function(_0x3a44ae){if(!_0x3a44ae){throw new db[(_0x8781('0x27'))]['ValidationError'](_0x8781('0x28'));}_0x50d617=_['difference'](_[_0x8781('0x29')](_0x3a44ae),[_0x8781('0x2a'),_0x8781('0x2b')]);_0x49acc7=_[_0x8781('0x2c')](_[_0x8781('0x29')](_0x3a44ae),[_0x8781('0x2a'),_0x8781('0x2b'),_0x8781('0x2d'),_0x8781('0x2e')]);if(_0x1ed966[_0x8781('0x23')]['id']){delete _0x1ed966[_0x8781('0x23')]['id'];}if(_[_0x8781('0x2f')](_0x1ed966['body'][_0x8781('0x30')])){throw new db['Sequelize'][(_0x8781('0x31'))](_0x8781('0x32'));}if(_[_0x8781('0x2f')](_0x1ed966[_0x8781('0x23')][_0x8781('0x23')])||_0x1ed966[_0x8781('0x23')][_0x8781('0x23')]===''){throw new db[(_0x8781('0x27'))][(_0x8781('0x31'))](_0x8781('0x33'));}if(_[_0x8781('0x2f')](_0x1ed966[_0x8781('0x23')]['mapKey'])){throw new db[(_0x8781('0x27'))][(_0x8781('0x31'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x49acc7);}if(!_['includes'](_0x49acc7,_0x1ed966['body'][_0x8781('0x34')])){throw new db['Sequelize'][(_0x8781('0x31'))](_0x8781('0x35')+_0x49acc7);}_0x3e093a[_0x1ed966[_0x8781('0x23')][_0x8781('0x34')]]=_0x1ed966[_0x8781('0x23')]['from'];})['then'](function(){return db[_0x8781('0x1a')][_0x8781('0x36')]({'where':{'id':_0x1ed966['account']['id']},'include':[{'model':db[_0x8781('0x37')],'as':'List','include':[{'model':db['CmContact'],'as':_0x8781('0x38'),'where':_0x3e093a,'limit':0x1,'order':[[_0x8781('0x2b'),_0x8781('0x39')]]}]},{'model':db[_0x8781('0x3a')],'as':_0x8781('0x3b')}]});})['then'](function(_0x17e89c){if(_0x17e89c&&_0x17e89c['List']){var _0x4d9c1d=_0x17e89c[_0x8781('0x3c')]({'plain':!![]});_0x4b26e3[_0x8781('0x3d')]=_0x4d9c1d;_0x4b26e3[_0x8781('0x3e')]=_0x4d9c1d[_0x8781('0x3b')];_0x4b26e3[_0x8781('0x3f')]=_0x4d9c1d[_0x8781('0x40')];_0x4b26e3[_0x8781('0x3e')]=_[_0x8781('0x41')](_0x4b26e3[_0x8781('0x3e')],[_0x8781('0x42')],['asc']);if(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x3b')]){delete _0x4b26e3[_0x8781('0x3d')][_0x8781('0x3b')];}if(_0x4b26e3['account'][_0x8781('0x40')]&&_0x4b26e3[_0x8781('0x3d')][_0x8781('0x40')][_0x8781('0x38')][_0x8781('0x43')]){return _0x4b26e3['account']['List'][_0x8781('0x38')][0x0];}var _0x49e818=_['defaults'](_0x1ed966[_0x8781('0x23')],{'firstName':_0x1ed966[_0x8781('0x23')][_0x8781('0x30')],'ListId':_0x4d9c1d[_0x8781('0x2e')]});_0x49e818[_0x1ed966[_0x8781('0x23')][_0x8781('0x34')]]=_0x1ed966[_0x8781('0x23')][_0x8781('0x30')];return db['CmContact'][_0x8781('0x44')](_0x49e818,{'fields':_0x50d617,'raw':!![]});}})[_0x8781('0xf')](function(_0x353392){_0x4b26e3[_0x8781('0x45')]=_0x353392;if(_0x353392){var _0x6632c0={'ContactId':_0x353392['id'],'FaxAccountId':_0x1ed966['account']['id'],'fax':_0x353392['fax']};return db[_0x8781('0x46')][_0x8781('0x36')]({'where':{'ContactId':_0x353392['id'],'closed':![],'FaxAccountId':_0x1ed966['account']['id']}})[_0x8781('0xf')](function(_0x2cd4d7){if(_0x2cd4d7){return[_0x2cd4d7,![]];}return db[_0x8781('0x46')]['create'](_0x6632c0)[_0x8781('0xf')](function(_0x18465f){return[_0x18465f,!![]];});});}else{throw new Error(_0x8781('0x47'));}})[_0x8781('0x48')](function(_0x1aaacd,_0x239c34){var _0x42591a=_0x1aaacd[_0x8781('0x3c')]({'plain':!![]});if(_0x239c34){if(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x49')]){_0x4b26e3[_0x8781('0x3e')][_0x8781('0x4a')]({'id':0x0,'priority':_0x4b26e3['applications'][_0x8781('0x43')]+0x1,'app':_0x8781('0x4b'),'appdata':_0x8781('0x4c'),'interval':_0x8781('0x4d')});}_0x42591a[_0x8781('0x4e')]=!![];}else{_0x42591a[_0x8781('0x4e')]=![];}_0x4b26e3['interaction']=_0x42591a;return db[_0x8781('0x4f')]['create']({'body':_0x1ed966[_0x8781('0x23')]['body'],'FaxAccountId':_0x1ed966[_0x8781('0x3d')]['id'],'FaxInteractionId':_0x1aaacd['id'],'direction':'in','ContactId':_0x1aaacd[_0x8781('0x50')],'AttachmentId':_0x1ed966[_0x8781('0x23')][_0x8781('0x51')]});})[_0x8781('0xf')](function(_0x538a24){_0x4b26e3[_0x8781('0x16')]=_0x538a24;if(_0x4b26e3[_0x8781('0x52')]['UserId']){return db[_0x8781('0x53')][_0x8781('0x36')]({'attributes':['id',_0x8781('0x54')],'where':{'id':_0x4b26e3['interaction'][_0x8781('0x55')]}})[_0x8781('0xf')](function(_0x1e9e9e){if(_0x1e9e9e){_0x4b26e3[_0x8781('0x3e')][_0x8781('0x56')]({'id':0x0,'priority':0x0,'app':_0x8781('0x57'),'appdata':_0x1e9e9e[_0x8781('0x54')]+','+(_0x4b26e3[_0x8781('0x3d')][_0x8781('0x58')]||0xa),'interval':_0x8781('0x4d')});}return respondWithRpcPromise('Start',_0x8781('0x59'),_0x4b26e3);});}return respondWithRpcPromise('Start',_0x8781('0x59'),_0x4b26e3);})[_0x8781('0xf')](function(_0x5cc0fd){_0x365be4(_0x5cc0fd);})[_0x8781('0x18')](function(_0x4f64ec){_0xb4d37c(_0x315312[_0x8781('0x14')](0x1f4,_0x4f64ec[_0x8781('0x16')]));});});};
\ No newline at end of file
index 1e44405..525c09e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b2=['save','remove','update','removeListener','length','faxAccount:','./faxAccount.events'];(function(_0x4d0daa,_0x424974){var _0x402529=function(_0x47e03d){while(--_0x47e03d){_0x4d0daa['push'](_0x4d0daa['shift']());}};_0x402529(++_0x424974);}(_0x42b2,0xae));var _0x242b=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x42b2[_0x2a6809];return _0x11c371;};'use strict';var FaxAccountEvents=require(_0x242b('0x0'));var events=[_0x242b('0x1'),_0x242b('0x2'),_0x242b('0x3')];function createListener(_0x46731b,_0x1185cc){return function(_0x414ba5){_0x1185cc['emit'](_0x46731b,_0x414ba5);};}function removeListener(_0x1ece9a,_0x221bf3){return function(){FaxAccountEvents[_0x242b('0x4')](_0x1ece9a,_0x221bf3);};}exports['register']=function(_0x498be6){for(var _0x369dd2=0x0,_0x2bfed1=events[_0x242b('0x5')];_0x369dd2<_0x2bfed1;_0x369dd2++){var _0x13ef19=events[_0x369dd2];var _0x29bf1d=createListener(_0x242b('0x6')+_0x13ef19,_0x498be6);FaxAccountEvents['on'](_0x13ef19,_0x29bf1d);}};
\ No newline at end of file
+var _0x0622=['length','faxAccount:','./faxAccount.events','save','remove','update','emit','register'];(function(_0x582168,_0x4f33d4){var _0x461464=function(_0x3c0d18){while(--_0x3c0d18){_0x582168['push'](_0x582168['shift']());}};_0x461464(++_0x4f33d4);}(_0x0622,0x15a));var _0x2062=function(_0x493552,_0x2cd527){_0x493552=_0x493552-0x0;var _0x243ea8=_0x0622[_0x493552];return _0x243ea8;};'use strict';var FaxAccountEvents=require(_0x2062('0x0'));var events=[_0x2062('0x1'),_0x2062('0x2'),_0x2062('0x3')];function createListener(_0x357901,_0x557b78){return function(_0x481b60){_0x557b78[_0x2062('0x4')](_0x357901,_0x481b60);};}function removeListener(_0x43128e,_0x56791e){return function(){FaxAccountEvents['removeListener'](_0x43128e,_0x56791e);};}exports[_0x2062('0x5')]=function(_0x2036d8){for(var _0x18eba6=0x0,_0x3df12f=events[_0x2062('0x6')];_0x18eba6<_0x3df12f;_0x18eba6++){var _0x1177fe=events[_0x18eba6];var _0x333347=createListener(_0x2062('0x7')+_0x1177fe,_0x2036d8);FaxAccountEvents['on'](_0x1177fe,_0x333347);}};
\ No newline at end of file
index b2e3b77..6a7f885 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x276993,_0x340745){var _0x1f6207=function(_0x27e94e){while(--_0x27e94e){_0x276993['push'](_0x276993['shift']());}};_0x1f6207(++_0x340745);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxAccount.controller','get','index','/describe','show','/:id/dispositions','isAuthenticated','getDispositions','/:id/interactions','getInteractions','/:id/applications','/:id/messages','getMessages','/:id/users','getAgents','post','addDisposition','/:id/canned_answers','addAnswer','addInteraction','addApplications','addAccountApplications','/updateaccountapplications','/:id/send','send','addAgents','put','/:id','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path'];(function(_0x149016,_0x374450){var _0x326a70=function(_0x5ed00a){while(--_0x5ed00a){_0x149016['push'](_0x149016['shift']());}};_0x326a70(++_0x374450);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/canned_answers',auth['isAuthenticated'](),controller['getAnswers']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getApplications']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['post']('/',auth[_0x0a9e('0xd')](),controller['create']);router[_0x0a9e('0x16')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router['post'](_0x0a9e('0x18'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x16')](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1a')]);router[_0x0a9e('0x16')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x16')]('/addaccountapplications',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router['post'](_0x0a9e('0x1d'),auth['isAuthenticated'](),controller['updateAccountApplications']);router[_0x0a9e('0x16')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['post'](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0x22'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x24')]);router[_0x0a9e('0x25')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x26')]);router['delete'](_0x0a9e('0x18'),auth['isAuthenticated'](),controller[_0x0a9e('0x27')]);router[_0x0a9e('0x25')](_0x0a9e('0x14'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x28')]);module[_0x0a9e('0x29')]=router;
\ No newline at end of file
index 95e25ec..baa6106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf586=['noop','STRING','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x47177e,_0x4ea6d0){var _0x477ae8=function(_0x6b5457){while(--_0x6b5457){_0x47177e['push'](_0x47177e['shift']());}};_0x477ae8(++_0x4ea6d0);}(_0xf586,0x1d1));var _0x6f58=function(_0xfee10f,_0x53470e){_0xfee10f=_0xfee10f-0x0;var _0xb91051=_0xf586[_0xfee10f];return _0xb91051;};'use strict';var Sequelize=require(_0x6f58('0x0'));module[_0x6f58('0x1')]={'priority':{'type':Sequelize[_0x6f58('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x6f58('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x6f58('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x6f58('0x5')}};
\ No newline at end of file
+var _0xef3a=['noop','TEXT','*,*,*,*','exports','INTEGER','STRING'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xef3a,0xe1));var _0xaef3=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0xef3a[_0x4c8a8f];return _0x404500;};'use strict';var Sequelize=require('sequelize');module[_0xaef3('0x0')]={'priority':{'type':Sequelize[_0xaef3('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xaef3('0x2')],'allowNull':![],'defaultValue':_0xaef3('0x3')},'appdata':{'type':Sequelize[_0xaef3('0x4')]()},'description':{'type':Sequelize[_0xaef3('0x2')]},'interval':{'type':Sequelize[_0xaef3('0x2')],'defaultValue':_0xaef3('0x5')}};
\ No newline at end of file
index 875b8a9..012869d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x607b=['includeAll','include','findAll','rows','catch','create','body','params','find','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','save','update','then','destroy','error','name','send','map','FaxApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','sort','where','pick','filter','merge','options'];(function(_0x553a87,_0x1d621f){var _0x12d1e6=function(_0x41ae48){while(--_0x41ae48){_0x553a87['push'](_0x553a87['shift']());}};_0x12d1e6(++_0x1d621f);}(_0x607b,0x131));var _0xb607=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x607b[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require(_0xb607('0x0'));var rimraf=require(_0xb607('0x1'));var zipdir=require(_0xb607('0x2'));var jsonpatch=require(_0xb607('0x3'));var rp=require(_0xb607('0x4'));var moment=require(_0xb607('0x5'));var BPromise=require(_0xb607('0x6'));var Mustache=require(_0xb607('0x7'));var util=require('util');var path=require(_0xb607('0x8'));var sox=require(_0xb607('0x9'));var csv=require(_0xb607('0xa'));var ejs=require(_0xb607('0xb'));var fs=require('fs');var fs_extra=require(_0xb607('0xc'));var _=require(_0xb607('0xd'));var squel=require('squel');var crypto=require(_0xb607('0xe'));var jsforce=require(_0xb607('0xf'));var deskjs=require(_0xb607('0x10'));var toCsv=require(_0xb607('0xa'));var querystring=require(_0xb607('0x11'));var Papa=require('papaparse');var Redis=require(_0xb607('0x12'));var authService=require(_0xb607('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb607('0x14'));var logger=require('../../config/logger')(_0xb607('0x15'));var utils=require(_0xb607('0x16'));var config=require(_0xb607('0x17'));var licenseUtil=require(_0xb607('0x18'));var db=require(_0xb607('0x19'))['db'];function respondWithStatusCode(_0x5d7db1,_0x14ba53){_0x14ba53=_0x14ba53||0xcc;return function(_0x3c36a4){if(_0x3c36a4){return _0x5d7db1[_0xb607('0x1a')](_0x14ba53);}return _0x5d7db1[_0xb607('0x1b')](_0x14ba53)[_0xb607('0x1c')]();};}function respondWithResult(_0x3a2bb5,_0x3b7a4c){_0x3b7a4c=_0x3b7a4c||0xc8;return function(_0x1f3cf6){if(_0x1f3cf6){return _0x3a2bb5['status'](_0x3b7a4c)['json'](_0x1f3cf6);}};}function respondWithFilteredResult(_0x3d3ff3,_0x4f0e3e){return function(_0x1c38a4){if(_0x1c38a4){var _0x18e081=typeof _0x4f0e3e['offset']===_0xb607('0x1d')&&typeof _0x4f0e3e[_0xb607('0x1e')]===_0xb607('0x1d');var _0x73bf9=_0x1c38a4[_0xb607('0x1f')];var _0x5bd0d0=_0x18e081?0x0:_0x4f0e3e[_0xb607('0x20')];var _0x780547=_0x18e081?_0x1c38a4[_0xb607('0x1f')]:_0x4f0e3e[_0xb607('0x20')]+_0x4f0e3e[_0xb607('0x1e')];var _0x4cbca3;if(_0x780547>=_0x73bf9){_0x780547=_0x73bf9;_0x4cbca3=0xc8;}else{_0x4cbca3=0xce;}_0x3d3ff3['status'](_0x4cbca3);return _0x3d3ff3[_0xb607('0x21')](_0xb607('0x22'),_0x5bd0d0+'-'+_0x780547+'/'+_0x73bf9)[_0xb607('0x23')](_0x1c38a4);}return null;};}function patchUpdates(_0x21507a){return function(_0x1206c1){try{jsonpatch[_0xb607('0x24')](_0x1206c1,_0x21507a,!![]);}catch(_0x48472c){return BPromise['reject'](_0x48472c);}return _0x1206c1[_0xb607('0x25')]();};}function saveUpdates(_0x2a4df7,_0x1e0229){return function(_0x12fdd9){if(_0x12fdd9){return _0x12fdd9[_0xb607('0x26')](_0x2a4df7)[_0xb607('0x27')](function(_0x338a08){return _0x338a08;});}return null;};}function removeEntity(_0x3680e5,_0x4fa1b9){return function(_0x17465b){if(_0x17465b){return _0x17465b[_0xb607('0x28')]()[_0xb607('0x27')](function(){_0x3680e5[_0xb607('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x25d493,_0x46a568){return function(_0x4aadad){if(!_0x4aadad){_0x25d493['sendStatus'](0x194);}return _0x4aadad;};}function handleError(_0x372410,_0x5cf183){_0x5cf183=_0x5cf183||0x1f4;return function(_0x5d0d32){logger[_0xb607('0x29')](_0x5d0d32['stack']);if(_0x5d0d32[_0xb607('0x2a')]){delete _0x5d0d32[_0xb607('0x2a')];}_0x372410[_0xb607('0x1b')](_0x5cf183)[_0xb607('0x2b')](_0x5d0d32);};}exports['index']=function(_0x54a248,_0x4140bc){var _0xd4acb2={},_0x1cc00e={},_0x4d7b13={'count':0x0,'rows':[]};var _0x22e724=_[_0xb607('0x2c')](db[_0xb607('0x2d')][_0xb607('0x2e')],function(_0x417d05){return{'name':_0x417d05[_0xb607('0x2f')],'type':_0x417d05[_0xb607('0x30')][_0xb607('0x31')]};});_0x1cc00e[_0xb607('0x32')]=_['map'](_0x22e724,_0xb607('0x2a'));_0x1cc00e[_0xb607('0x33')]=_[_0xb607('0x34')](_0x54a248[_0xb607('0x33')]);_0x1cc00e[_0xb607('0x35')]=_['intersection'](_0x1cc00e[_0xb607('0x32')],_0x1cc00e[_0xb607('0x33')]);_0xd4acb2[_0xb607('0x36')]=_[_0xb607('0x37')](_0x1cc00e[_0xb607('0x32')],qs[_0xb607('0x38')](_0x54a248[_0xb607('0x33')][_0xb607('0x38')]));_0xd4acb2[_0xb607('0x36')]=_0xd4acb2[_0xb607('0x36')][_0xb607('0x39')]?_0xd4acb2[_0xb607('0x36')]:_0x1cc00e[_0xb607('0x32')];if(!_0x54a248[_0xb607('0x33')][_0xb607('0x3a')]('nolimit')){_0xd4acb2[_0xb607('0x1e')]=qs[_0xb607('0x1e')](_0x54a248[_0xb607('0x33')]['limit']);_0xd4acb2[_0xb607('0x20')]=qs[_0xb607('0x20')](_0x54a248[_0xb607('0x33')][_0xb607('0x20')]);}_0xd4acb2['order']=qs[_0xb607('0x3b')](_0x54a248[_0xb607('0x33')][_0xb607('0x3b')]);_0xd4acb2[_0xb607('0x3c')]=qs[_0xb607('0x35')](_[_0xb607('0x3d')](_0x54a248[_0xb607('0x33')],_0x1cc00e[_0xb607('0x35')]),_0x22e724);if(_0x54a248[_0xb607('0x33')][_0xb607('0x3e')]){_0xd4acb2[_0xb607('0x3c')]=_[_0xb607('0x3f')](_0xd4acb2[_0xb607('0x3c')],{'$or':_['map'](_0x22e724,function(_0x274be4){if(_0x274be4['type']!=='VIRTUAL'){var _0x5eeadc={};_0x5eeadc[_0x274be4[_0xb607('0x2a')]]={'$like':'%'+_0x54a248[_0xb607('0x33')][_0xb607('0x3e')]+'%'};return _0x5eeadc;}})});}_0xd4acb2=_[_0xb607('0x3f')]({},_0xd4acb2,_0x54a248[_0xb607('0x40')]);var _0x4caf23={'where':_0xd4acb2[_0xb607('0x3c')]};return db['FaxApplication'][_0xb607('0x1f')](_0x4caf23)[_0xb607('0x27')](function(_0x3a3bf1){_0x4d7b13['count']=_0x3a3bf1;if(_0x54a248['query'][_0xb607('0x41')]){_0xd4acb2[_0xb607('0x42')]=[{'all':!![]}];}return db[_0xb607('0x2d')][_0xb607('0x43')](_0xd4acb2);})[_0xb607('0x27')](function(_0x360a83){_0x4d7b13[_0xb607('0x44')]=_0x360a83;return _0x4d7b13;})[_0xb607('0x27')](respondWithFilteredResult(_0x4140bc,_0xd4acb2))[_0xb607('0x45')](handleError(_0x4140bc,null));};exports['show']=function(_0x53b667,_0x2cc7fb){var _0x47262d={'raw':!![],'where':{'id':_0x53b667['params']['id']}},_0x46f07f={};_0x46f07f[_0xb607('0x32')]=_[_0xb607('0x34')](db[_0xb607('0x2d')]['rawAttributes']);_0x46f07f[_0xb607('0x33')]=_[_0xb607('0x34')](_0x53b667[_0xb607('0x33')]);_0x46f07f['filters']=_[_0xb607('0x37')](_0x46f07f['model'],_0x46f07f[_0xb607('0x33')]);_0x47262d[_0xb607('0x36')]=_[_0xb607('0x37')](_0x46f07f['model'],qs[_0xb607('0x38')](_0x53b667['query'][_0xb607('0x38')]));_0x47262d[_0xb607('0x36')]=_0x47262d['attributes'][_0xb607('0x39')]?_0x47262d[_0xb607('0x36')]:_0x46f07f[_0xb607('0x32')];if(_0x53b667[_0xb607('0x33')][_0xb607('0x41')]){_0x47262d['include']=[{'all':!![]}];}_0x47262d=_['merge']({},_0x47262d,_0x53b667[_0xb607('0x40')]);return db[_0xb607('0x2d')]['find'](_0x47262d)[_0xb607('0x27')](handleEntityNotFound(_0x2cc7fb,null))[_0xb607('0x27')](respondWithResult(_0x2cc7fb,null))['catch'](handleError(_0x2cc7fb,null));};exports[_0xb607('0x46')]=function(_0x362826,_0x373236){return db[_0xb607('0x2d')][_0xb607('0x46')](_0x362826[_0xb607('0x47')],{})[_0xb607('0x27')](respondWithResult(_0x373236,0xc9))[_0xb607('0x45')](handleError(_0x373236,null));};exports[_0xb607('0x26')]=function(_0x4dc196,_0x5c5f71){if(_0x4dc196['body']['id']){delete _0x4dc196['body']['id'];}return db['FaxApplication']['find']({'where':{'id':_0x4dc196[_0xb607('0x48')]['id']}})[_0xb607('0x27')](handleEntityNotFound(_0x5c5f71,null))[_0xb607('0x27')](saveUpdates(_0x4dc196[_0xb607('0x47')],null))['then'](respondWithResult(_0x5c5f71,null))[_0xb607('0x45')](handleError(_0x5c5f71,null));};exports[_0xb607('0x28')]=function(_0x2afd7b,_0x4f2583){return db[_0xb607('0x2d')][_0xb607('0x49')]({'where':{'id':_0x2afd7b[_0xb607('0x48')]['id']}})[_0xb607('0x27')](handleEntityNotFound(_0x4f2583,null))['then'](removeEntity(_0x4f2583,null))['catch'](handleError(_0x4f2583,null));};
\ No newline at end of file
+var _0x7cf0=['status','json','undefined','limit','count','offset','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','FaxApplication','includeAll','include','findAll','catch','show','create','body','find','params','rimraf','zip-dir','fast-json-patch','request-promise','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','end'];(function(_0x1893ea,_0x425667){var _0x83c724=function(_0x19a218){while(--_0x19a218){_0x1893ea['push'](_0x1893ea['shift']());}};_0x83c724(++_0x425667);}(_0x7cf0,0x150));var _0x07cf=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x7cf0[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x07cf('0x0'));var zipdir=require(_0x07cf('0x1'));var jsonpatch=require(_0x07cf('0x2'));var rp=require(_0x07cf('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x07cf('0x4'));var util=require('util');var path=require('path');var sox=require(_0x07cf('0x5'));var csv=require(_0x07cf('0x6'));var ejs=require(_0x07cf('0x7'));var fs=require('fs');var fs_extra=require(_0x07cf('0x8'));var _=require(_0x07cf('0x9'));var squel=require(_0x07cf('0xa'));var crypto=require('crypto');var jsforce=require(_0x07cf('0xb'));var deskjs=require(_0x07cf('0xc'));var toCsv=require(_0x07cf('0x6'));var querystring=require(_0x07cf('0xd'));var Papa=require(_0x07cf('0xe'));var Redis=require(_0x07cf('0xf'));var authService=require(_0x07cf('0x10'));var qs=require(_0x07cf('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x07cf('0x12'));var logger=require(_0x07cf('0x13'))('api');var utils=require(_0x07cf('0x14'));var config=require(_0x07cf('0x15'));var licenseUtil=require(_0x07cf('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xc9f40e,_0xb7641e){_0xb7641e=_0xb7641e||0xcc;return function(_0x102cba){if(_0x102cba){return _0xc9f40e['sendStatus'](_0xb7641e);}return _0xc9f40e['status'](_0xb7641e)[_0x07cf('0x17')]();};}function respondWithResult(_0x544b53,_0x2962b7){_0x2962b7=_0x2962b7||0xc8;return function(_0x1f1e09){if(_0x1f1e09){return _0x544b53[_0x07cf('0x18')](_0x2962b7)[_0x07cf('0x19')](_0x1f1e09);}};}function respondWithFilteredResult(_0x5bc98a,_0x1cf2c3){return function(_0x445909){if(_0x445909){var _0x5eea7b=typeof _0x1cf2c3['offset']===_0x07cf('0x1a')&&typeof _0x1cf2c3[_0x07cf('0x1b')]===_0x07cf('0x1a');var _0x403042=_0x445909[_0x07cf('0x1c')];var _0x268658=_0x5eea7b?0x0:_0x1cf2c3[_0x07cf('0x1d')];var _0x2f1cec=_0x5eea7b?_0x445909[_0x07cf('0x1c')]:_0x1cf2c3[_0x07cf('0x1d')]+_0x1cf2c3[_0x07cf('0x1b')];var _0x19e238;if(_0x2f1cec>=_0x403042){_0x2f1cec=_0x403042;_0x19e238=0xc8;}else{_0x19e238=0xce;}_0x5bc98a[_0x07cf('0x18')](_0x19e238);return _0x5bc98a[_0x07cf('0x1e')](_0x07cf('0x1f'),_0x268658+'-'+_0x2f1cec+'/'+_0x403042)[_0x07cf('0x19')](_0x445909);}return null;};}function patchUpdates(_0x2f07a5){return function(_0x448e1f){try{jsonpatch[_0x07cf('0x20')](_0x448e1f,_0x2f07a5,!![]);}catch(_0x26a36f){return BPromise['reject'](_0x26a36f);}return _0x448e1f[_0x07cf('0x21')]();};}function saveUpdates(_0x1d2cc5,_0x24a084){return function(_0x27a175){if(_0x27a175){return _0x27a175[_0x07cf('0x22')](_0x1d2cc5)['then'](function(_0x218c89){return _0x218c89;});}return null;};}function removeEntity(_0x580031,_0x32794b){return function(_0x59a45c){if(_0x59a45c){return _0x59a45c[_0x07cf('0x23')]()[_0x07cf('0x24')](function(){_0x580031[_0x07cf('0x18')](0xcc)[_0x07cf('0x17')]();});}};}function handleEntityNotFound(_0x4a67b7,_0x2b3569){return function(_0x4f00a1){if(!_0x4f00a1){_0x4a67b7['sendStatus'](0x194);}return _0x4f00a1;};}function handleError(_0xe84f47,_0x1c819a){_0x1c819a=_0x1c819a||0x1f4;return function(_0x18cefe){logger[_0x07cf('0x25')](_0x18cefe[_0x07cf('0x26')]);if(_0x18cefe[_0x07cf('0x27')]){delete _0x18cefe['name'];}_0xe84f47[_0x07cf('0x18')](_0x1c819a)[_0x07cf('0x28')](_0x18cefe);};}exports[_0x07cf('0x29')]=function(_0x3623c2,_0x1c631e){var _0x237bb6={},_0x2cc832={},_0x421205={'count':0x0,'rows':[]};var _0x480b10=_['map'](db['FaxApplication'][_0x07cf('0x2a')],function(_0x9db2be){return{'name':_0x9db2be[_0x07cf('0x2b')],'type':_0x9db2be[_0x07cf('0x2c')][_0x07cf('0x2d')]};});_0x2cc832['model']=_[_0x07cf('0x2e')](_0x480b10,_0x07cf('0x27'));_0x2cc832[_0x07cf('0x2f')]=_[_0x07cf('0x30')](_0x3623c2['query']);_0x2cc832[_0x07cf('0x31')]=_[_0x07cf('0x32')](_0x2cc832[_0x07cf('0x33')],_0x2cc832[_0x07cf('0x2f')]);_0x237bb6[_0x07cf('0x34')]=_[_0x07cf('0x32')](_0x2cc832['model'],qs[_0x07cf('0x35')](_0x3623c2['query'][_0x07cf('0x35')]));_0x237bb6[_0x07cf('0x34')]=_0x237bb6[_0x07cf('0x34')][_0x07cf('0x36')]?_0x237bb6[_0x07cf('0x34')]:_0x2cc832[_0x07cf('0x33')];if(!_0x3623c2[_0x07cf('0x2f')]['hasOwnProperty'](_0x07cf('0x37'))){_0x237bb6[_0x07cf('0x1b')]=qs[_0x07cf('0x1b')](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x1b')]);_0x237bb6['offset']=qs['offset'](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x1d')]);}_0x237bb6[_0x07cf('0x38')]=qs[_0x07cf('0x39')](_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x39')]);_0x237bb6[_0x07cf('0x3a')]=qs[_0x07cf('0x31')](_['pick'](_0x3623c2[_0x07cf('0x2f')],_0x2cc832['filters']),_0x480b10);if(_0x3623c2['query'][_0x07cf('0x3b')]){_0x237bb6[_0x07cf('0x3a')]=_[_0x07cf('0x3c')](_0x237bb6[_0x07cf('0x3a')],{'$or':_[_0x07cf('0x2e')](_0x480b10,function(_0x158ce6){if(_0x158ce6[_0x07cf('0x2c')]!=='VIRTUAL'){var _0x4483b4={};_0x4483b4[_0x158ce6[_0x07cf('0x27')]]={'$like':'%'+_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x3b')]+'%'};return _0x4483b4;}})});}_0x237bb6=_[_0x07cf('0x3c')]({},_0x237bb6,_0x3623c2[_0x07cf('0x3d')]);var _0x45a15e={'where':_0x237bb6[_0x07cf('0x3a')]};return db[_0x07cf('0x3e')][_0x07cf('0x1c')](_0x45a15e)[_0x07cf('0x24')](function(_0x22a090){_0x421205[_0x07cf('0x1c')]=_0x22a090;if(_0x3623c2[_0x07cf('0x2f')][_0x07cf('0x3f')]){_0x237bb6[_0x07cf('0x40')]=[{'all':!![]}];}return db[_0x07cf('0x3e')][_0x07cf('0x41')](_0x237bb6);})[_0x07cf('0x24')](function(_0x43472f){_0x421205['rows']=_0x43472f;return _0x421205;})['then'](respondWithFilteredResult(_0x1c631e,_0x237bb6))[_0x07cf('0x42')](handleError(_0x1c631e,null));};exports[_0x07cf('0x43')]=function(_0x4f3c8c,_0x592fe6){var _0xadc740={'raw':!![],'where':{'id':_0x4f3c8c['params']['id']}},_0x26bb80={};_0x26bb80[_0x07cf('0x33')]=_[_0x07cf('0x30')](db['FaxApplication'][_0x07cf('0x2a')]);_0x26bb80[_0x07cf('0x2f')]=_[_0x07cf('0x30')](_0x4f3c8c[_0x07cf('0x2f')]);_0x26bb80[_0x07cf('0x31')]=_['intersection'](_0x26bb80[_0x07cf('0x33')],_0x26bb80[_0x07cf('0x2f')]);_0xadc740[_0x07cf('0x34')]=_[_0x07cf('0x32')](_0x26bb80[_0x07cf('0x33')],qs[_0x07cf('0x35')](_0x4f3c8c[_0x07cf('0x2f')][_0x07cf('0x35')]));_0xadc740[_0x07cf('0x34')]=_0xadc740['attributes'][_0x07cf('0x36')]?_0xadc740[_0x07cf('0x34')]:_0x26bb80[_0x07cf('0x33')];if(_0x4f3c8c[_0x07cf('0x2f')][_0x07cf('0x3f')]){_0xadc740[_0x07cf('0x40')]=[{'all':!![]}];}_0xadc740=_[_0x07cf('0x3c')]({},_0xadc740,_0x4f3c8c[_0x07cf('0x3d')]);return db['FaxApplication']['find'](_0xadc740)[_0x07cf('0x24')](handleEntityNotFound(_0x592fe6,null))[_0x07cf('0x24')](respondWithResult(_0x592fe6,null))[_0x07cf('0x42')](handleError(_0x592fe6,null));};exports[_0x07cf('0x44')]=function(_0x4c9958,_0x4f9104){return db[_0x07cf('0x3e')]['create'](_0x4c9958[_0x07cf('0x45')],{})['then'](respondWithResult(_0x4f9104,0xc9))[_0x07cf('0x42')](handleError(_0x4f9104,null));};exports[_0x07cf('0x22')]=function(_0x4fd8a9,_0x1c13d2){if(_0x4fd8a9[_0x07cf('0x45')]['id']){delete _0x4fd8a9[_0x07cf('0x45')]['id'];}return db[_0x07cf('0x3e')][_0x07cf('0x46')]({'where':{'id':_0x4fd8a9['params']['id']}})[_0x07cf('0x24')](handleEntityNotFound(_0x1c13d2,null))['then'](saveUpdates(_0x4fd8a9[_0x07cf('0x45')],null))[_0x07cf('0x24')](respondWithResult(_0x1c13d2,null))['catch'](handleError(_0x1c13d2,null));};exports[_0x07cf('0x23')]=function(_0x1b0e7b,_0x5de85a){return db[_0x07cf('0x3e')][_0x07cf('0x46')]({'where':{'id':_0x1b0e7b[_0x07cf('0x47')]['id']}})[_0x07cf('0x24')](handleEntityNotFound(_0x5de85a,null))[_0x07cf('0x24')](removeEntity(_0x5de85a,null))[_0x07cf('0x42')](handleError(_0x5de85a,null));};
\ No newline at end of file
index b706a82..88c44be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c40=['api','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','utf8mb4','utf8mb4_unicode_ci','util','../../config/logger'];(function(_0x5af6d8,_0x51857c){var _0x441d0a=function(_0x2eddba){while(--_0x2eddba){_0x5af6d8['push'](_0x5af6d8['shift']());}};_0x441d0a(++_0x51857c);}(_0x5c40,0x15e));var _0x05c4=function(_0x567e9e,_0x37ca69){_0x567e9e=_0x567e9e-0x0;var _0x2de44e=_0x5c40[_0x567e9e];return _0x2de44e;};'use strict';var _=require('lodash');var util=require(_0x05c4('0x0'));var logger=require(_0x05c4('0x1'))(_0x05c4('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x05c4('0x3'));var attributes=require(_0x05c4('0x4'));module[_0x05c4('0x5')]=function(_0x23164b,_0x2df004){return _0x23164b[_0x05c4('0x6')](_0x05c4('0x7'),attributes,{'tableName':_0x05c4('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x05c4('0x9'),'collate':_0x05c4('0xa')});};
\ No newline at end of file
+var _0x5671=['FaxApplication','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./faxApplication.attributes','exports'];(function(_0x8da403,_0x437957){var _0x4d00cc=function(_0x29de3f){while(--_0x29de3f){_0x8da403['push'](_0x8da403['shift']());}};_0x4d00cc(++_0x437957);}(_0x5671,0xf2));var _0x1567=function(_0xfa75b5,_0x5cbe19){_0xfa75b5=_0xfa75b5-0x0;var _0x1c1911=_0x5671[_0xfa75b5];return _0x1c1911;};'use strict';var _=require(_0x1567('0x0'));var util=require(_0x1567('0x1'));var logger=require(_0x1567('0x2'))(_0x1567('0x3'));var moment=require(_0x1567('0x4'));var BPromise=require(_0x1567('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x1567('0x6'));var rimraf=require(_0x1567('0x7'));var config=require('../../config/environment');var attributes=require(_0x1567('0x8'));module[_0x1567('0x9')]=function(_0x8e3097,_0x21745a){return _0x8e3097['define'](_0x1567('0xa'),attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x1567('0xb')});};
\ No newline at end of file
index 0dc45af..a81f828 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e5=['request\x20sent','debug','stringify','error','code','FaxApplication,\x20%s,\x20%s','message','result','catch','UpdateFaxApplication','body','options','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','then','info'];(function(_0x4f72d8,_0x470fd7){var _0x44ef7a=function(_0x4a36d2){while(--_0x4a36d2){_0x4f72d8['push'](_0x4f72d8['shift']());}};_0x44ef7a(++_0x470fd7);}(_0x49e5,0x196));var _0x549e=function(_0x10711b,_0x439ba6){_0x10711b=_0x10711b-0x0;var _0x3955ff=_0x49e5[_0x10711b];return _0x3955ff;};'use strict';var _=require(_0x549e('0x0'));var util=require(_0x549e('0x1'));var moment=require(_0x549e('0x2'));var BPromise=require(_0x549e('0x3'));var rs=require(_0x549e('0x4'));var fs=require('fs');var Redis=require(_0x549e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x549e('0x6'));var logger=require(_0x549e('0x7'))(_0x549e('0x8'));var config=require(_0x549e('0x9'));var jayson=require(_0x549e('0xa'));var client=jayson['client'][_0x549e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ee59d,_0x1f22c7,_0x4c0e06){return new BPromise(function(_0x4baf3c,_0x16bde3){return client['request'](_0x2ee59d,_0x4c0e06)[_0x549e('0xc')](function(_0x4ced36){logger[_0x549e('0xd')]('FaxApplication,\x20%s,\x20%s',_0x1f22c7,_0x549e('0xe'));logger[_0x549e('0xf')]('FaxApplication,\x20%s,\x20%s,\x20%s',_0x1f22c7,'request\x20sent',JSON[_0x549e('0x10')](_0x4ced36));if(_0x4ced36['error']){if(_0x4ced36[_0x549e('0x11')][_0x549e('0x12')]===0x1f4){logger['error'](_0x549e('0x13'),_0x1f22c7,_0x4ced36[_0x549e('0x11')][_0x549e('0x14')]);return _0x16bde3(_0x4ced36[_0x549e('0x11')]['message']);}logger[_0x549e('0x11')](_0x549e('0x13'),_0x1f22c7,_0x4ced36[_0x549e('0x11')][_0x549e('0x14')]);return _0x4baf3c(_0x4ced36[_0x549e('0x11')]['message']);}else{logger[_0x549e('0xd')](_0x549e('0x13'),_0x1f22c7,_0x549e('0xe'));_0x4baf3c(_0x4ced36[_0x549e('0x15')][_0x549e('0x14')]);}})[_0x549e('0x16')](function(_0x31183c){logger['error'](_0x549e('0x13'),_0x1f22c7,_0x31183c);_0x16bde3(_0x31183c);});});}exports[_0x549e('0x17')]=function(_0x209c5b){var _0x2d858d=this;return new Promise(function(_0xd0ac55,_0x1763a5){return db['FaxApplication']['update'](_0x209c5b[_0x549e('0x18')],{'raw':_0x209c5b[_0x549e('0x19')]?_0x209c5b[_0x549e('0x19')][_0x549e('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x209c5b[_0x549e('0x19')]?_0x209c5b[_0x549e('0x19')][_0x549e('0x1b')]||null:null,'attributes':_0x209c5b[_0x549e('0x19')]?_0x209c5b[_0x549e('0x19')][_0x549e('0x1c')]||null:null,'limit':_0x209c5b[_0x549e('0x19')]?_0x209c5b[_0x549e('0x19')][_0x549e('0x1d')]||null:null})[_0x549e('0xc')](function(_0x441457){logger[_0x549e('0xd')](_0x549e('0x17'),_0x209c5b);logger[_0x549e('0xf')]('UpdateFaxApplication',_0x209c5b,JSON[_0x549e('0x10')](_0x441457));_0xd0ac55(_0x441457);})[_0x549e('0x16')](function(_0x261a92){logger[_0x549e('0x11')](_0x549e('0x17'),_0x261a92['message'],_0x209c5b);_0x1763a5(_0x2d858d[_0x549e('0x11')](0x1f4,_0x261a92[_0x549e('0x14')]));});});};
\ No newline at end of file
+var _0xf404=['then','info','FaxApplication,\x20%s,\x20%s','request\x20sent','FaxApplication,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','UpdateFaxApplication','FaxApplication','update','body','options','where','attributes','limit','lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','jayson/promise','http','request'];(function(_0x12c0ee,_0x528c3e){var _0x3cb7e7=function(_0x5d4135){while(--_0x5d4135){_0x12c0ee['push'](_0x12c0ee['shift']());}};_0x3cb7e7(++_0x528c3e);}(_0xf404,0x120));var _0x4f40=function(_0x5e6ba3,_0x20b172){_0x5e6ba3=_0x5e6ba3-0x0;var _0x270fed=_0xf404[_0x5e6ba3];return _0x270fed;};'use strict';var _=require(_0x4f40('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4f40('0x1'));var rs=require(_0x4f40('0x2'));var fs=require('fs');var Redis=require(_0x4f40('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4f40('0x4'));var logger=require('../../config/logger')(_0x4f40('0x5'));var config=require('../../config/environment');var jayson=require(_0x4f40('0x6'));var client=jayson['client'][_0x4f40('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1aea28,_0x1d65c8,_0x45970a){return new BPromise(function(_0x23e3eb,_0x1ae1d7){return client[_0x4f40('0x8')](_0x1aea28,_0x45970a)[_0x4f40('0x9')](function(_0x102700){logger[_0x4f40('0xa')](_0x4f40('0xb'),_0x1d65c8,_0x4f40('0xc'));logger['debug'](_0x4f40('0xd'),_0x1d65c8,_0x4f40('0xc'),JSON['stringify'](_0x102700));if(_0x102700['error']){if(_0x102700['error'][_0x4f40('0xe')]===0x1f4){logger[_0x4f40('0xf')](_0x4f40('0xb'),_0x1d65c8,_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);return _0x1ae1d7(_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);}logger[_0x4f40('0xf')](_0x4f40('0xb'),_0x1d65c8,_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);return _0x23e3eb(_0x102700[_0x4f40('0xf')][_0x4f40('0x10')]);}else{logger[_0x4f40('0xa')]('FaxApplication,\x20%s,\x20%s',_0x1d65c8,_0x4f40('0xc'));_0x23e3eb(_0x102700[_0x4f40('0x11')]['message']);}})[_0x4f40('0x12')](function(_0x1406c6){logger['error'](_0x4f40('0xb'),_0x1d65c8,_0x1406c6);_0x1ae1d7(_0x1406c6);});});}exports[_0x4f40('0x13')]=function(_0x2a8017){var _0xa038ab=this;return new Promise(function(_0x20f34a,_0x501269){return db[_0x4f40('0x14')][_0x4f40('0x15')](_0x2a8017[_0x4f40('0x16')],{'raw':_0x2a8017['options']?_0x2a8017[_0x4f40('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2a8017[_0x4f40('0x17')]?_0x2a8017['options'][_0x4f40('0x18')]||null:null,'attributes':_0x2a8017[_0x4f40('0x17')]?_0x2a8017[_0x4f40('0x17')][_0x4f40('0x19')]||null:null,'limit':_0x2a8017['options']?_0x2a8017['options'][_0x4f40('0x1a')]||null:null})['then'](function(_0x334f42){logger[_0x4f40('0xa')]('UpdateFaxApplication',_0x2a8017);logger['debug'](_0x4f40('0x13'),_0x2a8017,JSON['stringify'](_0x334f42));_0x20f34a(_0x334f42);})[_0x4f40('0x12')](function(_0x264af6){logger[_0x4f40('0xf')](_0x4f40('0x13'),_0x264af6[_0x4f40('0x10')],_0x2a8017);_0x501269(_0xa038ab[_0x4f40('0xf')](0x1f4,_0x264af6['message']));});});};
\ No newline at end of file
index a1edb3f..7e116be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','get','show','post','/:id','update','delete','destroy','exports','multer','util'];(function(_0x37b768,_0x349d37){var _0x7ce433=function(_0x19913f){while(--_0x19913f){_0x37b768['push'](_0x37b768['shift']());}};_0x7ce433(++_0x349d37);}(_0xb62e,0x1de));var _0xeb62=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xb62e[_0xbca1b1];return _0x4e1686;};'use strict';var multer=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var path=require(_0xeb62('0x2'));var timeout=require(_0xeb62('0x3'));var express=require('express');var router=express[_0xeb62('0x4')]();var fs_extra=require(_0xeb62('0x5'));var auth=require(_0xeb62('0x6'));var interaction=require(_0xeb62('0x7'));var config=require(_0xeb62('0x8'));var controller=require(_0xeb62('0x9'));router['get']('/',auth[_0xeb62('0xa')](),controller[_0xeb62('0xb')]);router[_0xeb62('0xc')]('/:id',auth[_0xeb62('0xa')](),controller[_0xeb62('0xd')]);router[_0xeb62('0xe')]('/',auth[_0xeb62('0xa')](),controller['create']);router['put'](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x10')]);router[_0xeb62('0x11')](_0xeb62('0xf'),auth[_0xeb62('0xa')](),controller[_0xeb62('0x12')]);module[_0xeb62('0x13')]=router;
\ No newline at end of file
+var _0x4fc2=['show','post','create','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./faxApplication.controller','isAuthenticated','index','/:id'];(function(_0xfb02c9,_0x43c274){var _0x9afb71=function(_0x56dff0){while(--_0x56dff0){_0xfb02c9['push'](_0xfb02c9['shift']());}};_0x9afb71(++_0x43c274);}(_0x4fc2,0x111));var _0x24fc=function(_0x986fec,_0x5bd00f){_0x986fec=_0x986fec-0x0;var _0x50db2f=_0x4fc2[_0x986fec];return _0x50db2f;};'use strict';var multer=require(_0x24fc('0x0'));var util=require(_0x24fc('0x1'));var path=require(_0x24fc('0x2'));var timeout=require(_0x24fc('0x3'));var express=require('express');var router=express[_0x24fc('0x4')]();var fs_extra=require(_0x24fc('0x5'));var auth=require(_0x24fc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x24fc('0x7'));var controller=require(_0x24fc('0x8'));router['get']('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xa')]);router['get'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xc')]);router[_0x24fc('0xd')]('/',auth[_0x24fc('0x9')](),controller[_0x24fc('0xe')]);router['put'](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0xf')]);router[_0x24fc('0x10')](_0x24fc('0xb'),auth[_0x24fc('0x9')](),controller[_0x24fc('0x11')]);module[_0x24fc('0x12')]=router;
\ No newline at end of file
index ebc3af2..10371fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7258=['out','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0xb60781,_0x24e11c){var _0x1b2329=function(_0x5b9764){while(--_0x5b9764){_0xb60781['push'](_0xb60781['shift']());}};_0x1b2329(++_0x24e11c);}(_0x7258,0x127));var _0x8725=function(_0x1c0269,_0x5cc4b6){_0x1c0269=_0x1c0269-0x0;var _0x473260=_0x7258[_0x1c0269];return _0x473260;};'use strict';var Sequelize=require('sequelize');module[_0x8725('0x0')]={'closed':{'type':Sequelize[_0x8725('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8725('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x8725('0x3')]},'thirdDisposition':{'type':Sequelize[_0x8725('0x3')]},'note':{'type':Sequelize['STRING']},'read1stAt':{'type':Sequelize[_0x8725('0x2')]},'fax':{'type':Sequelize[_0x8725('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8725('0x4')]('in',_0x8725('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8725('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0x0bfe=['out','exports','BOOLEAN','DATE','STRING','ENUM'];(function(_0xbd4eb7,_0x527b62){var _0x1bf52c=function(_0x599786){while(--_0x599786){_0xbd4eb7['push'](_0xbd4eb7['shift']());}};_0x1bf52c(++_0x527b62);}(_0x0bfe,0x1e1));var _0xe0bf=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0bfe[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0xe0bf('0x0')]={'closed':{'type':Sequelize[_0xe0bf('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xe0bf('0x2')]},'disposition':{'type':Sequelize[_0xe0bf('0x3')]},'secondDisposition':{'type':Sequelize[_0xe0bf('0x3')]},'thirdDisposition':{'type':Sequelize[_0xe0bf('0x3')]},'note':{'type':Sequelize[_0xe0bf('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'fax':{'type':Sequelize[_0xe0bf('0x3')]},'firstMsgDirection':{'type':Sequelize[_0xe0bf('0x4')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xe0bf('0x2')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0xe0bf('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index d9f3c9c..c7db472 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x16d0=['faxInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','existsSync','pipe','createWriteStream','basename','resolve','log','unlinkSync','rimraf','moment','bluebird','util','path','lodash','../../components/interaction/service','../../config/logger','api','../../config/environment','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','map','FaxInteraction','rawAttributes','fieldName','key','getOptions','findAll','fax','query','user','show','params','keys','filters','intersection','model','attributes','fields','length','includeAll','include','options','find','catch','create','body','describe','addMessage','FaxMessage','ids','omit','findOne','hasOwnProperty','order','sort','pick','where','filter','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','setTags','spread','Tag','color','emit'];(function(_0x5255fd,_0x528c02){var _0x540a61=function(_0x391e0c){while(--_0x391e0c){_0x5255fd['push'](_0x5255fd['shift']());}};_0x540a61(++_0x528c02);}(_0x16d0,0x80));var _0x016d=function(_0x59c147,_0x32b9a0){_0x59c147=_0x59c147-0x0;var _0x4a4f6c=_0x16d0[_0x59c147];return _0x4a4f6c;};'use strict';var rimraf=require(_0x016d('0x0'));var zipdir=require('zip-dir');var moment=require(_0x016d('0x1'));var BPromise=require(_0x016d('0x2'));var util=require(_0x016d('0x3'));var path=require(_0x016d('0x4'));var fs=require('fs');var _=require(_0x016d('0x5'));var Redis=require('ioredis');var interaction=require(_0x016d('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x016d('0x7'))(_0x016d('0x8'));var config=require(_0x016d('0x9'));var db=require('../../mysqldb')['db'];config[_0x016d('0xa')]=_[_0x016d('0xb')](config[_0x016d('0xa')],{'host':_0x016d('0xc'),'port':0x18eb});var socket=require(_0x016d('0xd'))(new Redis(config[_0x016d('0xa')]));require('./faxInteraction.socket')[_0x016d('0xe')](socket);function respondWithStatusCode(_0x4d4a1d,_0x4c52be){_0x4c52be=_0x4c52be||0xcc;return function(_0x14a3b1){if(_0x14a3b1){return _0x4d4a1d[_0x016d('0xf')](_0x4c52be);}return _0x4d4a1d[_0x016d('0x10')](_0x4c52be)[_0x016d('0x11')]();};}function respondWithResult(_0x3b73d3,_0x268db8){_0x268db8=_0x268db8||0xc8;return function(_0x1d7a98){if(_0x1d7a98){return _0x3b73d3[_0x016d('0x10')](_0x268db8)[_0x016d('0x12')](_0x1d7a98);}};}function respondWithFilteredResult(_0x1d602f,_0x1cb0d3){return function(_0x2690d1){if(_0x2690d1){var _0x360d57=typeof _0x1cb0d3[_0x016d('0x13')]===_0x016d('0x14')&&typeof _0x1cb0d3[_0x016d('0x15')]===_0x016d('0x14');var _0xf7d6f6=_0x2690d1[_0x016d('0x16')];var _0x41da4b=_0x360d57?0x0:_0x1cb0d3['offset'];var _0x59648a=_0x360d57?_0x2690d1[_0x016d('0x16')]:_0x1cb0d3[_0x016d('0x13')]+_0x1cb0d3[_0x016d('0x15')];var _0x29888e;if(_0x59648a>=_0xf7d6f6){_0x59648a=_0xf7d6f6;_0x29888e=0xc8;}else{_0x29888e=0xce;}_0x1d602f[_0x016d('0x10')](_0x29888e);return _0x1d602f[_0x016d('0x17')](_0x016d('0x18'),_0x41da4b+'-'+_0x59648a+'/'+_0xf7d6f6)[_0x016d('0x12')](_0x2690d1);}return null;};}function saveUpdates(_0x57142f){return function(_0x1972a9){if(_0x1972a9){return _0x1972a9[_0x016d('0x19')](_0x57142f)[_0x016d('0x1a')](function(_0x511e73){return _0x511e73;});}return null;};}function removeEntity(_0x2d2d39){return function(_0x1ab3b5){if(_0x1ab3b5){return _0x1ab3b5[_0x016d('0x1b')]()['then'](function(){_0x2d2d39[_0x016d('0x10')](0xcc)[_0x016d('0x11')]();});}};}function handleEntityNotFound(_0xb4aa1c){return function(_0x1c65a9){if(!_0x1c65a9){_0xb4aa1c[_0x016d('0xf')](0x194);}return _0x1c65a9;};}function handleError(_0x3af111,_0xc8a0f9){_0xc8a0f9=_0xc8a0f9||0x1f4;return function(_0x363b4d){logger[_0x016d('0x1c')](_0x363b4d[_0x016d('0x1d')]);if(_0x363b4d[_0x016d('0x1e')]){delete _0x363b4d[_0x016d('0x1e')];}_0x3af111['status'](_0xc8a0f9)[_0x016d('0x1f')](_0x363b4d);};}exports['index']=function(_0x3905ed,_0x4f93d3){var _0x2a1933={};var _0x5e5f99=_[_0x016d('0x20')](db[_0x016d('0x21')][_0x016d('0x22')],function(_0xe310cf){return{'name':_0xe310cf[_0x016d('0x23')],'type':_0xe310cf['type'][_0x016d('0x24')]};});_0x2a1933=qs[_0x016d('0x25')](_0x5e5f99,_0x3905ed);return interaction[_0x016d('0x26')](_0x016d('0x27'),_0x3905ed[_0x016d('0x28')],_0x3905ed[_0x016d('0x29')],_0x2a1933,_0x5e5f99)[_0x016d('0x1a')](respondWithFilteredResult(_0x4f93d3,_0x2a1933))['catch'](handleError(_0x4f93d3,null));};exports[_0x016d('0x2a')]=function(_0x15d1ec,_0x3be98d){var _0x4220df={'raw':![],'where':{'id':_0x15d1ec[_0x016d('0x2b')]['id']}},_0x41971b={};_0x41971b['model']=_[_0x016d('0x2c')](db[_0x016d('0x21')][_0x016d('0x22')]);_0x41971b[_0x016d('0x28')]=_['keys'](_0x15d1ec['query']);_0x41971b[_0x016d('0x2d')]=_[_0x016d('0x2e')](_0x41971b[_0x016d('0x2f')],_0x41971b['query']);_0x4220df[_0x016d('0x30')]=_[_0x016d('0x2e')](_0x41971b[_0x016d('0x2f')],qs[_0x016d('0x31')](_0x15d1ec[_0x016d('0x28')][_0x016d('0x31')]));_0x4220df[_0x016d('0x30')]=_0x4220df['attributes'][_0x016d('0x32')]?_0x4220df[_0x016d('0x30')]:_0x41971b[_0x016d('0x2f')];if(_0x15d1ec[_0x016d('0x28')][_0x016d('0x33')]){_0x4220df[_0x016d('0x34')]=[{'all':!![]}];}_0x4220df=_['merge']({},_0x4220df,_0x15d1ec[_0x016d('0x35')]);return db['FaxInteraction'][_0x016d('0x36')](_0x4220df)[_0x016d('0x1a')](handleEntityNotFound(_0x3be98d,null))[_0x016d('0x1a')](respondWithResult(_0x3be98d,null))[_0x016d('0x37')](handleError(_0x3be98d,null));};exports[_0x016d('0x38')]=function(_0x426cd6,_0x3c68a8){return db['FaxInteraction'][_0x016d('0x38')](_0x426cd6[_0x016d('0x39')],{})[_0x016d('0x1a')](respondWithResult(_0x3c68a8,0xc9))[_0x016d('0x37')](handleError(_0x3c68a8,null));};exports[_0x016d('0x19')]=function(_0x25b9dd,_0x4923b7){if(_0x25b9dd[_0x016d('0x39')]['id']){delete _0x25b9dd['body']['id'];}return db[_0x016d('0x21')]['find']({'where':{'id':_0x25b9dd['params']['id']}})['then'](handleEntityNotFound(_0x4923b7,null))[_0x016d('0x1a')](saveUpdates(_0x25b9dd['body'],null))[_0x016d('0x1a')](respondWithResult(_0x4923b7,null))[_0x016d('0x37')](handleError(_0x4923b7,null));};exports[_0x016d('0x1b')]=function(_0x23f1ed,_0x264307){return db[_0x016d('0x21')][_0x016d('0x36')]({'where':{'id':_0x23f1ed[_0x016d('0x2b')]['id']}})[_0x016d('0x1a')](handleEntityNotFound(_0x264307,null))[_0x016d('0x1a')](removeEntity(_0x264307,null))[_0x016d('0x37')](handleError(_0x264307,null));};exports[_0x016d('0x3a')]=function(_0x3f75e7,_0x4882c7){return db[_0x016d('0x21')][_0x016d('0x3a')]()[_0x016d('0x1a')](respondWithResult(_0x4882c7,null))[_0x016d('0x37')](handleError(_0x4882c7,null));};exports[_0x016d('0x3b')]=function(_0x404d49,_0x5797c9){return db[_0x016d('0x3c')][_0x016d('0x36')]({'where':{'id':_0x404d49[_0x016d('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5797c9,null))['then'](function(_0x18c68b){if(_0x18c68b){return _0x18c68b['addMessage'](_0x404d49[_0x016d('0x39')][_0x016d('0x3d')],_[_0x016d('0x3e')](_0x404d49[_0x016d('0x39')],[_0x016d('0x3d'),'id'])||{});}})[_0x016d('0x1a')](respondWithResult(_0x5797c9,null))[_0x016d('0x37')](handleError(_0x5797c9,null));};exports['getMessages']=function(_0x22de18,_0x4a103b){var _0x1e7c4b={'raw':![],'where':{}};var _0x598cfd={};var _0x254493={'count':0x0,'rows':[]};return db[_0x016d('0x21')][_0x016d('0x3f')]({'where':{'id':_0x22de18[_0x016d('0x2b')]['id']}})[_0x016d('0x1a')](handleEntityNotFound(_0x4a103b,null))['then'](function(_0x54e8ec){if(_0x54e8ec){_0x598cfd[_0x016d('0x2f')]=_[_0x016d('0x2c')](db[_0x016d('0x3c')]['rawAttributes']);_0x598cfd[_0x016d('0x28')]=_[_0x016d('0x2c')](_0x22de18['query']);_0x598cfd['filters']=_[_0x016d('0x2e')](_0x598cfd[_0x016d('0x2f')],_0x598cfd[_0x016d('0x28')]);_0x1e7c4b[_0x016d('0x30')]=_[_0x016d('0x2e')](_0x598cfd[_0x016d('0x2f')],qs['fields'](_0x22de18['query'][_0x016d('0x31')]));_0x1e7c4b['attributes']=_0x1e7c4b['attributes'][_0x016d('0x32')]?_0x1e7c4b[_0x016d('0x30')]:_0x598cfd[_0x016d('0x2f')];if(!_0x22de18[_0x016d('0x28')][_0x016d('0x40')]('nolimit')){_0x1e7c4b['limit']=qs[_0x016d('0x15')](_0x22de18[_0x016d('0x28')][_0x016d('0x15')]);_0x1e7c4b[_0x016d('0x13')]=qs[_0x016d('0x13')](_0x22de18[_0x016d('0x28')][_0x016d('0x13')]);}_0x1e7c4b[_0x016d('0x41')]=qs['sort'](_0x22de18[_0x016d('0x28')][_0x016d('0x42')]);_0x1e7c4b['where']=qs[_0x016d('0x2d')](_[_0x016d('0x43')](_0x22de18[_0x016d('0x28')],_0x598cfd[_0x016d('0x2d')]));_0x1e7c4b[_0x016d('0x44')]['FaxInteractionId']=_0x54e8ec['id'];if(_0x22de18['query']['filter']){_0x1e7c4b[_0x016d('0x44')]=_['merge'](_0x1e7c4b[_0x016d('0x44')],{'$or':_['map'](_0x1e7c4b[_0x016d('0x30')],function(_0x4a5485){var _0x58df09={};_0x58df09[_0x4a5485]={'$like':'%'+_0x22de18[_0x016d('0x28')][_0x016d('0x45')]+'%'};return _0x58df09;})});}if(_0x22de18[_0x016d('0x28')][_0x016d('0x46')]){var _0x3aa926=_0x22de18[_0x016d('0x28')][_0x016d('0x46')][_0x016d('0x47')](',');var _0x19b41e={};_0x19b41e[_0x3aa926[0x0]]={'$gte':moment(_0x3aa926[0x1])[_0x016d('0x48')](_0x016d('0x49'))};_0x1e7c4b[_0x016d('0x44')]=_['merge'](_0x1e7c4b[_0x016d('0x44')],_0x19b41e);}_0x1e7c4b=_[_0x016d('0x4a')]({},_0x1e7c4b,_0x22de18[_0x016d('0x35')]);return db['FaxMessage']['count']({'where':_0x1e7c4b[_0x016d('0x44')]})[_0x016d('0x1a')](function(_0x578081){_0x254493['count']=_0x578081;if(_0x22de18[_0x016d('0x28')]['includeAll']){_0x1e7c4b[_0x016d('0x34')]=[{'all':!![]}];}return db[_0x016d('0x3c')][_0x016d('0x26')](_0x1e7c4b);})[_0x016d('0x1a')](function(_0xb4e8fe){_0x254493[_0x016d('0x4b')]=_0xb4e8fe;return _0x254493;});}})[_0x016d('0x1a')](respondWithFilteredResult(_0x4a103b,_0x1e7c4b))[_0x016d('0x37')](handleError(_0x4a103b,null));};exports[_0x016d('0x4c')]=function(_0x38a7b1,_0x4affb2){return db[_0x016d('0x21')][_0x016d('0x36')]({'where':{'id':_0x38a7b1[_0x016d('0x2b')]['id']}})[_0x016d('0x1a')](handleEntityNotFound(_0x4affb2,null))['then'](function(_0x2c0b7c){if(_0x2c0b7c){return _0x2c0b7c[_0x016d('0x4d')](_0x38a7b1[_0x016d('0x39')][_0x016d('0x3d')],_[_0x016d('0x3e')](_0x38a7b1[_0x016d('0x39')],[_0x016d('0x3d'),'id'])||{})[_0x016d('0x4e')](function(){return db[_0x016d('0x4f')][_0x016d('0x26')]({'attributes':['id',_0x016d('0x1e'),_0x016d('0x50')],'where':{'id':_0x38a7b1['body']['ids']}});})[_0x016d('0x1a')](function(_0x27679e){socket[_0x016d('0x51')](_0x016d('0x52'),{'id':Number(_0x38a7b1['params']['id']),'tags':_0x27679e||[]});return{'id':Number(_0x38a7b1[_0x016d('0x2b')]['id']),'tags':_0x27679e||[]};});}})[_0x016d('0x1a')](respondWithResult(_0x4affb2,null))[_0x016d('0x37')](handleError(_0x4affb2,null));};exports[_0x016d('0x53')]=function(_0x203eb2,_0x391aae){return db['FaxInteraction'][_0x016d('0x36')]({'where':{'id':_0x203eb2[_0x016d('0x2b')]['id']}})[_0x016d('0x1a')](handleEntityNotFound(_0x391aae,null))[_0x016d('0x1a')](function(_0x508fed){if(_0x508fed){return _0x508fed[_0x016d('0x53')](_0x203eb2[_0x016d('0x28')]['ids']);}})[_0x016d('0x1a')](respondWithStatusCode(_0x391aae,null))['catch'](handleError(_0x391aae,null));};exports['download']=function(_0x49876e,_0x2f8c6e){var _0x83257e=moment()[_0x016d('0x54')]()[_0x016d('0x55')]();var _0x4af7d6=path[_0x016d('0x56')](config[_0x016d('0x57')],_0x016d('0x58'),_0x016d('0x59'),_0x016d('0x5a'));var _0x39534b=path[_0x016d('0x56')](config[_0x016d('0x57')],_0x016d('0x58'),_0x016d('0x59'),_0x016d('0x5b'));var _0x5a03ad=path[_0x016d('0x56')](_0x4af7d6,_0x83257e);var _0x4f8286=util[_0x016d('0x48')](_0x016d('0x5c'),_0x49876e[_0x016d('0x2b')]['id'],_0x83257e);var _0x4c2a68=path['join'](_0x4af7d6,_0x4f8286);var _0x4bcbf6=[];_0x4bcbf6['push']({'model':db['Attachment'],'as':_0x016d('0x5d'),'raw':!![]});var _0x9f1a54=[{'model':db['FaxMessage'],'as':_0x016d('0x5e'),'attributes':['id',_0x016d('0x39'),_0x016d('0x5f')],'include':_0x4bcbf6}];return db[_0x016d('0x21')]['find']({'where':{'id':_0x49876e[_0x016d('0x2b')]['id']},'include':_0x9f1a54})['then'](handleEntityNotFound(_0x2f8c6e,null))[_0x016d('0x1a')](function(_0x1727ef){if(_0x1727ef&&_0x1727ef[_0x016d('0x5e')]){var _0x31acec=_0x1727ef[_0x016d('0x60')]({'plain':!![]});fs[_0x016d('0x61')](_0x5a03ad);for(var _0x420069=0x0;_0x420069<_0x31acec[_0x016d('0x5e')]['length'];_0x420069++){var _0x3a43f9=_0x31acec['Messages'][_0x420069][_0x016d('0x5d')];if(_0x3a43f9){var _0x53dea9=path[_0x016d('0x56')](_0x39534b,_0x3a43f9['basename']);if(fs[_0x016d('0x62')](_0x53dea9)){fs['createReadStream'](_0x53dea9)[_0x016d('0x63')](fs[_0x016d('0x64')](path[_0x016d('0x56')](_0x5a03ad,_0x3a43f9[_0x016d('0x65')])));}}}return BPromise[_0x016d('0x66')]()[_0x016d('0x1a')](function(){return new BPromise(function(_0x5e8641,_0x3b3556){zipdir(_0x5a03ad,{'saveTo':_0x4c2a68},function(_0x5406bd,_0x360962){if(_0x5406bd)return _0x3b3556(_0x5406bd);return _0x5e8641(_0x360962);});})[_0x016d('0x1a')](function(){return new BPromise(function(_0x5b1482,_0x22f4f9){rimraf(_0x5a03ad,function(_0x5ed99c){if(_0x5ed99c)_0x22f4f9(_0x5ed99c);return _0x5b1482();});});})[_0x016d('0x1a')](function(){return _0x2f8c6e['download'](_0x4c2a68,_0x4f8286,function(_0x535298){if(_0x535298){console[_0x016d('0x67')]('err',_0x535298);}else{fs[_0x016d('0x68')](_0x4c2a68);}});});});}else{return _0x2f8c6e[_0x016d('0xf')](0xc8);}})[_0x016d('0x37')](handleError(_0x2f8c6e,null));};
\ No newline at end of file
+var _0x8662=['defaults','localhost','socket.io-emitter','./faxInteraction.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','then','destroy','stack','name','send','index','map','FaxInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','fax','query','catch','show','params','model','keys','intersection','attributes','fields','length','includeAll','include','merge','options','create','body','find','describe','addMessage','FaxMessage','omit','ids','findOne','filters','order','sort','where','filter','$gte','split','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','spread','Tag','emit','faxInteractionTags:save','removeTags','download','join','server','files','tmp','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','existsSync','createReadStream','createWriteStream','basename','resolve','err','unlinkSync','rimraf','bluebird','util','path','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis'];(function(_0x516510,_0x48f18a){var _0x5c5246=function(_0x3ea365){while(--_0x3ea365){_0x516510['push'](_0x516510['shift']());}};_0x5c5246(++_0x48f18a);}(_0x8662,0x180));var _0x2866=function(_0x1421e2,_0x3de428){_0x1421e2=_0x1421e2-0x0;var _0x5459de=_0x8662[_0x1421e2];return _0x5459de;};'use strict';var rimraf=require(_0x2866('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x2866('0x1'));var util=require(_0x2866('0x2'));var path=require(_0x2866('0x3'));var fs=require('fs');var _=require(_0x2866('0x4'));var Redis=require(_0x2866('0x5'));var interaction=require(_0x2866('0x6'));var qs=require(_0x2866('0x7'));var logger=require('../../config/logger')(_0x2866('0x8'));var config=require(_0x2866('0x9'));var db=require(_0x2866('0xa'))['db'];config[_0x2866('0xb')]=_[_0x2866('0xc')](config[_0x2866('0xb')],{'host':_0x2866('0xd'),'port':0x18eb});var socket=require(_0x2866('0xe'))(new Redis(config[_0x2866('0xb')]));require(_0x2866('0xf'))[_0x2866('0x10')](socket);function respondWithStatusCode(_0x11d208,_0xccd611){_0xccd611=_0xccd611||0xcc;return function(_0x1658f7){if(_0x1658f7){return _0x11d208[_0x2866('0x11')](_0xccd611);}return _0x11d208[_0x2866('0x12')](_0xccd611)[_0x2866('0x13')]();};}function respondWithResult(_0x8437f9,_0x3212f9){_0x3212f9=_0x3212f9||0xc8;return function(_0x5ac76e){if(_0x5ac76e){return _0x8437f9[_0x2866('0x12')](_0x3212f9)[_0x2866('0x14')](_0x5ac76e);}};}function respondWithFilteredResult(_0x48ced0,_0x21edcb){return function(_0x34a25f){if(_0x34a25f){var _0x46a614=typeof _0x21edcb[_0x2866('0x15')]===_0x2866('0x16')&&typeof _0x21edcb[_0x2866('0x17')]===_0x2866('0x16');var _0x17b29b=_0x34a25f[_0x2866('0x18')];var _0x2c8273=_0x46a614?0x0:_0x21edcb[_0x2866('0x15')];var _0x9829cf=_0x46a614?_0x34a25f['count']:_0x21edcb[_0x2866('0x15')]+_0x21edcb[_0x2866('0x17')];var _0x5a1c08;if(_0x9829cf>=_0x17b29b){_0x9829cf=_0x17b29b;_0x5a1c08=0xc8;}else{_0x5a1c08=0xce;}_0x48ced0['status'](_0x5a1c08);return _0x48ced0[_0x2866('0x19')](_0x2866('0x1a'),_0x2c8273+'-'+_0x9829cf+'/'+_0x17b29b)[_0x2866('0x14')](_0x34a25f);}return null;};}function saveUpdates(_0x3c4c0b){return function(_0x31348e){if(_0x31348e){return _0x31348e['update'](_0x3c4c0b)[_0x2866('0x1b')](function(_0x533018){return _0x533018;});}return null;};}function removeEntity(_0x5d301e){return function(_0x3ad6e9){if(_0x3ad6e9){return _0x3ad6e9[_0x2866('0x1c')]()[_0x2866('0x1b')](function(){_0x5d301e[_0x2866('0x12')](0xcc)[_0x2866('0x13')]();});}};}function handleEntityNotFound(_0x16b5ff){return function(_0x122734){if(!_0x122734){_0x16b5ff[_0x2866('0x11')](0x194);}return _0x122734;};}function handleError(_0x2fdbaa,_0xbc6968){_0xbc6968=_0xbc6968||0x1f4;return function(_0x296d7d){logger['error'](_0x296d7d[_0x2866('0x1d')]);if(_0x296d7d[_0x2866('0x1e')]){delete _0x296d7d[_0x2866('0x1e')];}_0x2fdbaa[_0x2866('0x12')](_0xbc6968)[_0x2866('0x1f')](_0x296d7d);};}exports[_0x2866('0x20')]=function(_0x296935,_0x2edba3){var _0x1db48a={};var _0x2acea3=_[_0x2866('0x21')](db[_0x2866('0x22')][_0x2866('0x23')],function(_0x1c88f8){return{'name':_0x1c88f8[_0x2866('0x24')],'type':_0x1c88f8[_0x2866('0x25')][_0x2866('0x26')]};});_0x1db48a=qs[_0x2866('0x27')](_0x2acea3,_0x296935);return interaction[_0x2866('0x28')](_0x2866('0x29'),_0x296935[_0x2866('0x2a')],_0x296935['user'],_0x1db48a,_0x2acea3)[_0x2866('0x1b')](respondWithFilteredResult(_0x2edba3,_0x1db48a))[_0x2866('0x2b')](handleError(_0x2edba3,null));};exports[_0x2866('0x2c')]=function(_0x529741,_0x548e54){var _0x7e0f21={'raw':![],'where':{'id':_0x529741[_0x2866('0x2d')]['id']}},_0x391af3={};_0x391af3[_0x2866('0x2e')]=_['keys'](db[_0x2866('0x22')]['rawAttributes']);_0x391af3['query']=_[_0x2866('0x2f')](_0x529741[_0x2866('0x2a')]);_0x391af3['filters']=_[_0x2866('0x30')](_0x391af3[_0x2866('0x2e')],_0x391af3[_0x2866('0x2a')]);_0x7e0f21[_0x2866('0x31')]=_[_0x2866('0x30')](_0x391af3[_0x2866('0x2e')],qs[_0x2866('0x32')](_0x529741[_0x2866('0x2a')][_0x2866('0x32')]));_0x7e0f21[_0x2866('0x31')]=_0x7e0f21['attributes'][_0x2866('0x33')]?_0x7e0f21[_0x2866('0x31')]:_0x391af3[_0x2866('0x2e')];if(_0x529741[_0x2866('0x2a')][_0x2866('0x34')]){_0x7e0f21[_0x2866('0x35')]=[{'all':!![]}];}_0x7e0f21=_[_0x2866('0x36')]({},_0x7e0f21,_0x529741[_0x2866('0x37')]);return db[_0x2866('0x22')]['find'](_0x7e0f21)['then'](handleEntityNotFound(_0x548e54,null))[_0x2866('0x1b')](respondWithResult(_0x548e54,null))[_0x2866('0x2b')](handleError(_0x548e54,null));};exports[_0x2866('0x38')]=function(_0x3c6a68,_0x50b272){return db[_0x2866('0x22')][_0x2866('0x38')](_0x3c6a68[_0x2866('0x39')],{})[_0x2866('0x1b')](respondWithResult(_0x50b272,0xc9))[_0x2866('0x2b')](handleError(_0x50b272,null));};exports['update']=function(_0x4085f3,_0x52bebf){if(_0x4085f3['body']['id']){delete _0x4085f3['body']['id'];}return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x4085f3[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x52bebf,null))[_0x2866('0x1b')](saveUpdates(_0x4085f3['body'],null))[_0x2866('0x1b')](respondWithResult(_0x52bebf,null))[_0x2866('0x2b')](handleError(_0x52bebf,null));};exports[_0x2866('0x1c')]=function(_0x525d8b,_0x45c871){return db['FaxInteraction'][_0x2866('0x3a')]({'where':{'id':_0x525d8b[_0x2866('0x2d')]['id']}})['then'](handleEntityNotFound(_0x45c871,null))['then'](removeEntity(_0x45c871,null))['catch'](handleError(_0x45c871,null));};exports['describe']=function(_0x33b7be,_0x2db646){return db[_0x2866('0x22')][_0x2866('0x3b')]()[_0x2866('0x1b')](respondWithResult(_0x2db646,null))[_0x2866('0x2b')](handleError(_0x2db646,null));};exports[_0x2866('0x3c')]=function(_0x24d49c,_0x5b4f28){return db[_0x2866('0x3d')][_0x2866('0x3a')]({'where':{'id':_0x24d49c[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x5b4f28,null))['then'](function(_0x1295ac){if(_0x1295ac){return _0x1295ac[_0x2866('0x3c')](_0x24d49c[_0x2866('0x39')]['ids'],_[_0x2866('0x3e')](_0x24d49c['body'],[_0x2866('0x3f'),'id'])||{});}})['then'](respondWithResult(_0x5b4f28,null))[_0x2866('0x2b')](handleError(_0x5b4f28,null));};exports['getMessages']=function(_0x1dd97c,_0x233a2f){var _0x3e7e02={'raw':![],'where':{}};var _0x43bb6f={};var _0x559771={'count':0x0,'rows':[]};return db[_0x2866('0x22')][_0x2866('0x40')]({'where':{'id':_0x1dd97c[_0x2866('0x2d')]['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x233a2f,null))['then'](function(_0x4bf39d){if(_0x4bf39d){_0x43bb6f[_0x2866('0x2e')]=_[_0x2866('0x2f')](db[_0x2866('0x3d')][_0x2866('0x23')]);_0x43bb6f['query']=_[_0x2866('0x2f')](_0x1dd97c[_0x2866('0x2a')]);_0x43bb6f[_0x2866('0x41')]=_[_0x2866('0x30')](_0x43bb6f[_0x2866('0x2e')],_0x43bb6f[_0x2866('0x2a')]);_0x3e7e02[_0x2866('0x31')]=_[_0x2866('0x30')](_0x43bb6f[_0x2866('0x2e')],qs[_0x2866('0x32')](_0x1dd97c[_0x2866('0x2a')][_0x2866('0x32')]));_0x3e7e02['attributes']=_0x3e7e02[_0x2866('0x31')][_0x2866('0x33')]?_0x3e7e02['attributes']:_0x43bb6f[_0x2866('0x2e')];if(!_0x1dd97c['query']['hasOwnProperty']('nolimit')){_0x3e7e02[_0x2866('0x17')]=qs[_0x2866('0x17')](_0x1dd97c['query'][_0x2866('0x17')]);_0x3e7e02[_0x2866('0x15')]=qs['offset'](_0x1dd97c['query'][_0x2866('0x15')]);}_0x3e7e02[_0x2866('0x42')]=qs[_0x2866('0x43')](_0x1dd97c[_0x2866('0x2a')][_0x2866('0x43')]);_0x3e7e02[_0x2866('0x44')]=qs['filters'](_['pick'](_0x1dd97c[_0x2866('0x2a')],_0x43bb6f[_0x2866('0x41')]));_0x3e7e02[_0x2866('0x44')]['FaxInteractionId']=_0x4bf39d['id'];if(_0x1dd97c[_0x2866('0x2a')][_0x2866('0x45')]){_0x3e7e02[_0x2866('0x44')]=_[_0x2866('0x36')](_0x3e7e02[_0x2866('0x44')],{'$or':_['map'](_0x3e7e02[_0x2866('0x31')],function(_0x45269b){var _0x4adc18={};_0x4adc18[_0x45269b]={'$like':'%'+_0x1dd97c[_0x2866('0x2a')][_0x2866('0x45')]+'%'};return _0x4adc18;})});}if(_0x1dd97c[_0x2866('0x2a')]['$gte']){var _0x443362=_0x1dd97c[_0x2866('0x2a')][_0x2866('0x46')][_0x2866('0x47')](',');var _0x3c5daa={};_0x3c5daa[_0x443362[0x0]]={'$gte':moment(_0x443362[0x1])['format'](_0x2866('0x48'))};_0x3e7e02['where']=_[_0x2866('0x36')](_0x3e7e02[_0x2866('0x44')],_0x3c5daa);}_0x3e7e02=_[_0x2866('0x36')]({},_0x3e7e02,_0x1dd97c[_0x2866('0x37')]);return db[_0x2866('0x3d')][_0x2866('0x18')]({'where':_0x3e7e02[_0x2866('0x44')]})[_0x2866('0x1b')](function(_0x581ed6){_0x559771[_0x2866('0x18')]=_0x581ed6;if(_0x1dd97c[_0x2866('0x2a')][_0x2866('0x34')]){_0x3e7e02[_0x2866('0x35')]=[{'all':!![]}];}return db['FaxMessage'][_0x2866('0x28')](_0x3e7e02);})[_0x2866('0x1b')](function(_0x293194){_0x559771[_0x2866('0x49')]=_0x293194;return _0x559771;});}})[_0x2866('0x1b')](respondWithFilteredResult(_0x233a2f,_0x3e7e02))[_0x2866('0x2b')](handleError(_0x233a2f,null));};exports[_0x2866('0x4a')]=function(_0x32c672,_0x36c43e){return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x32c672['params']['id']}})[_0x2866('0x1b')](handleEntityNotFound(_0x36c43e,null))['then'](function(_0x1ee359){if(_0x1ee359){return _0x1ee359['setTags'](_0x32c672[_0x2866('0x39')][_0x2866('0x3f')],_[_0x2866('0x3e')](_0x32c672[_0x2866('0x39')],[_0x2866('0x3f'),'id'])||{})[_0x2866('0x4b')](function(){return db[_0x2866('0x4c')]['findAll']({'attributes':['id',_0x2866('0x1e'),'color'],'where':{'id':_0x32c672[_0x2866('0x39')][_0x2866('0x3f')]}});})[_0x2866('0x1b')](function(_0x2f4920){socket[_0x2866('0x4d')](_0x2866('0x4e'),{'id':Number(_0x32c672[_0x2866('0x2d')]['id']),'tags':_0x2f4920||[]});return{'id':Number(_0x32c672[_0x2866('0x2d')]['id']),'tags':_0x2f4920||[]};});}})[_0x2866('0x1b')](respondWithResult(_0x36c43e,null))[_0x2866('0x2b')](handleError(_0x36c43e,null));};exports[_0x2866('0x4f')]=function(_0x5be5c0,_0xd425a0){return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x5be5c0['params']['id']}})['then'](handleEntityNotFound(_0xd425a0,null))[_0x2866('0x1b')](function(_0x127ba4){if(_0x127ba4){return _0x127ba4[_0x2866('0x4f')](_0x5be5c0[_0x2866('0x2a')][_0x2866('0x3f')]);}})[_0x2866('0x1b')](respondWithStatusCode(_0xd425a0,null))[_0x2866('0x2b')](handleError(_0xd425a0,null));};exports[_0x2866('0x50')]=function(_0x170020,_0x262d91){var _0x79cb81=moment()['unix']()['toString']();var _0x3143e4=path[_0x2866('0x51')](config['root'],_0x2866('0x52'),_0x2866('0x53'),_0x2866('0x54'));var _0x1a3c9f=path[_0x2866('0x51')](config['root'],_0x2866('0x52'),_0x2866('0x53'),_0x2866('0x55'));var _0x54e081=path['join'](_0x3143e4,_0x79cb81);var _0x3deb39=util['format'](_0x2866('0x56'),_0x170020[_0x2866('0x2d')]['id'],_0x79cb81);var _0x52bd99=path[_0x2866('0x51')](_0x3143e4,_0x3deb39);var _0x2d4dac=[];_0x2d4dac['push']({'model':db[_0x2866('0x57')],'as':_0x2866('0x57'),'raw':!![]});var _0x12f04e=[{'model':db[_0x2866('0x3d')],'as':_0x2866('0x58'),'attributes':['id',_0x2866('0x39'),_0x2866('0x59')],'include':_0x2d4dac}];return db[_0x2866('0x22')][_0x2866('0x3a')]({'where':{'id':_0x170020['params']['id']},'include':_0x12f04e})[_0x2866('0x1b')](handleEntityNotFound(_0x262d91,null))[_0x2866('0x1b')](function(_0x4c4546){if(_0x4c4546&&_0x4c4546[_0x2866('0x58')]){var _0x2d9220=_0x4c4546[_0x2866('0x5a')]({'plain':!![]});fs[_0x2866('0x5b')](_0x54e081);for(var _0x5f22f5=0x0;_0x5f22f5<_0x2d9220[_0x2866('0x58')][_0x2866('0x33')];_0x5f22f5++){var _0x5e76b4=_0x2d9220[_0x2866('0x58')][_0x5f22f5][_0x2866('0x57')];if(_0x5e76b4){var _0x501c47=path[_0x2866('0x51')](_0x1a3c9f,_0x5e76b4['basename']);if(fs[_0x2866('0x5c')](_0x501c47)){fs[_0x2866('0x5d')](_0x501c47)['pipe'](fs[_0x2866('0x5e')](path[_0x2866('0x51')](_0x54e081,_0x5e76b4[_0x2866('0x5f')])));}}}return BPromise[_0x2866('0x60')]()['then'](function(){return new BPromise(function(_0x4710f4,_0x243621){zipdir(_0x54e081,{'saveTo':_0x52bd99},function(_0x47a24e,_0x2a959a){if(_0x47a24e)return _0x243621(_0x47a24e);return _0x4710f4(_0x2a959a);});})['then'](function(){return new BPromise(function(_0x44f359,_0x3ba304){rimraf(_0x54e081,function(_0x1e3214){if(_0x1e3214)_0x3ba304(_0x1e3214);return _0x44f359();});});})[_0x2866('0x1b')](function(){return _0x262d91[_0x2866('0x50')](_0x52bd99,_0x3deb39,function(_0x1f95a6){if(_0x1f95a6){console['log'](_0x2866('0x61'),_0x1f95a6);}else{fs[_0x2866('0x62')](_0x52bd99);}});});});}else{return _0x262d91[_0x2866('0x11')](0xc8);}})[_0x2866('0x2b')](handleError(_0x262d91,null));};
\ No newline at end of file
index 4866e23..60bd2c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a6=['save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','exports','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0x2e752b,_0x5cb17d){var _0x40a0b4=function(_0x11365a){while(--_0x11365a){_0x2e752b['push'](_0x2e752b['shift']());}};_0x40a0b4(++_0x5cb17d);}(_0x54a6,0x13f));var _0x654a=function(_0x13d95b,_0x4652c2){_0x13d95b=_0x13d95b-0x0;var _0x3fec5d=_0x54a6[_0x13d95b];return _0x3fec5d;};'use strict';var EventEmitter=require(_0x654a('0x0'));var FaxInteraction=require(_0x654a('0x1'))['db']['FaxInteraction'];var FaxMessage=require(_0x654a('0x1'))['db'][_0x654a('0x2')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x654a('0x3')](0x0);var events={'afterCreate':_0x654a('0x4'),'afterUpdate':_0x654a('0x5'),'afterDestroy':_0x654a('0x6')};function emitEvent(_0x137579){return function(_0x30f973,_0x1daa6d,_0x923d19){_0x30f973[_0x654a('0x7')]({'attributes':['id'],'raw':!![]})[_0x654a('0x8')](function(_0x3a12c5){_0x30f973[_0x654a('0x9')](_0x654a('0xa'),_0x3a12c5[_0x654a('0xb')](function(_0x232553){return{'id':_0x232553['id']};}));return FaxMessage[_0x654a('0xc')]({'where':{'FaxInteractionId':_0x30f973['id'],'direction':'in','read':![]},'raw':!![]});})[_0x654a('0x8')](function(_0x1ff6cc){_0x30f973[_0x654a('0x9')](_0x654a('0xd'),_0x1ff6cc[_0x654a('0xe')]);FaxInteractionEvents[_0x654a('0xf')](_0x137579+':'+_0x30f973['id'],_0x30f973);FaxInteractionEvents[_0x654a('0xf')](_0x137579,_0x30f973);_0x923d19(null);})[_0x654a('0x10')](_0x923d19(null));};}for(var e in events){if(events[_0x654a('0x11')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0x654a('0x12')]=FaxInteractionEvents;
\ No newline at end of file
+var _0x793f=['unreadMessages','length','emit','catch','exports','events','../../mysqldb','FaxInteraction','FaxMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','map'];(function(_0x2a9580,_0x381627){var _0x3414ea=function(_0x50fbf0){while(--_0x50fbf0){_0x2a9580['push'](_0x2a9580['shift']());}};_0x3414ea(++_0x381627);}(_0x793f,0x1d0));var _0xf793=function(_0x3e5a85,_0x41e242){_0x3e5a85=_0x3e5a85-0x0;var _0x499a76=_0x793f[_0x3e5a85];return _0x499a76;};'use strict';var EventEmitter=require(_0xf793('0x0'));var FaxInteraction=require(_0xf793('0x1'))['db'][_0xf793('0x2')];var FaxMessage=require('../../mysqldb')['db'][_0xf793('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0xf793('0x4')](0x0);var events={'afterCreate':_0xf793('0x5'),'afterUpdate':_0xf793('0x6'),'afterDestroy':_0xf793('0x7')};function emitEvent(_0x393c6b){return function(_0x3fc4af,_0x18f303,_0x4d0a08){_0x3fc4af['getUsers']({'attributes':['id'],'raw':!![]})[_0xf793('0x8')](function(_0x38cadc){_0x3fc4af[_0xf793('0x9')](_0xf793('0xa'),_0x38cadc[_0xf793('0xb')](function(_0x3edd46){return{'id':_0x3edd46['id']};}));return FaxMessage['findAll']({'where':{'FaxInteractionId':_0x3fc4af['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf793('0x8')](function(_0x2005f6){_0x3fc4af[_0xf793('0x9')](_0xf793('0xc'),_0x2005f6[_0xf793('0xd')]);FaxInteractionEvents['emit'](_0x393c6b+':'+_0x3fc4af['id'],_0x3fc4af);FaxInteractionEvents[_0xf793('0xe')](_0x393c6b,_0x3fc4af);_0x4d0a08(null);})[_0xf793('0xf')](_0x4d0a08(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module[_0xf793('0x10')]=FaxInteractionEvents;
\ No newline at end of file
index 52a81a7..151d5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ca0=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','exports','define','FaxInteraction','fax_interactions','changed','closedAt'];(function(_0x4588bd,_0x57222b){var _0x1becaa=function(_0x2ec59d){while(--_0x2ec59d){_0x4588bd['push'](_0x4588bd['shift']());}};_0x1becaa(++_0x57222b);}(_0x7ca0,0xe2));var _0x07ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7ca0[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x07ca('0x0'));var util=require(_0x07ca('0x1'));var logger=require(_0x07ca('0x2'))(_0x07ca('0x3'));var moment=require(_0x07ca('0x4'));var BPromise=require('bluebird');var rp=require(_0x07ca('0x5'));var fs=require('fs');var path=require(_0x07ca('0x6'));var rimraf=require('rimraf');var config=require(_0x07ca('0x7'));var attributes=require('./faxInteraction.attributes');module[_0x07ca('0x8')]=function(_0xcf9765,_0x4109e8){return _0xcf9765[_0x07ca('0x9')](_0x07ca('0xa'),attributes,{'tableName':_0x07ca('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2441a2,_0x1de96c,_0x200369){if(_0x2441a2[_0x07ca('0xc')]('closed')){_0x2441a2[_0x07ca('0xd')]=moment()['format'](_0x07ca('0xe'));}_0x200369(null,_0x2441a2);}}});};
\ No newline at end of file
+var _0x3c54=['FaxInteraction','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','moment','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define'];(function(_0x52147d,_0x1aa7c9){var _0x51cc95=function(_0x2778c4){while(--_0x2778c4){_0x52147d['push'](_0x52147d['shift']());}};_0x51cc95(++_0x1aa7c9);}(_0x3c54,0x6c));var _0x43c5=function(_0x3e186d,_0x3621db){_0x3e186d=_0x3e186d-0x0;var _0x8feb7e=_0x3c54[_0x3e186d];return _0x8feb7e;};'use strict';var _=require(_0x43c5('0x0'));var util=require(_0x43c5('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x43c5('0x2'));var BPromise=require('bluebird');var rp=require(_0x43c5('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x43c5('0x4'));var config=require(_0x43c5('0x5'));var attributes=require(_0x43c5('0x6'));module[_0x43c5('0x7')]=function(_0x129511,_0x3f2175){return _0x129511[_0x43c5('0x8')](_0x43c5('0x9'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0xb9041d,_0x3f8998,_0x5b4ddf){if(_0xb9041d['changed'](_0x43c5('0xa'))){_0xb9041d[_0x43c5('0xb')]=moment()['format'](_0x43c5('0xc'));}_0x5b4ddf(null,_0xb9041d);}}});};
\ No newline at end of file
index 4ee6828..f09f3a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateFaxInteraction','FaxInteraction','update','body','options','raw','where','attributes','limit','catch','AddTagsToFaxInteraction','addTags'];(function(_0x3d20db,_0xf7c56a){var _0x98510e=function(_0xf79c5a){while(--_0xf79c5a){_0x3d20db['push'](_0x3d20db['shift']());}};_0x98510e(++_0xf7c56a);}(_0xc900,0x1f3));var _0x0c90=function(_0x1b3a93,_0x45f7fd){_0x1b3a93=_0x1b3a93-0x0;var _0x12baea=_0xc900[_0x1b3a93];return _0x12baea;};'use strict';var _=require(_0x0c90('0x0'));var util=require(_0x0c90('0x1'));var moment=require(_0x0c90('0x2'));var BPromise=require(_0x0c90('0x3'));var rs=require(_0x0c90('0x4'));var fs=require('fs');var Redis=require(_0x0c90('0x5'));var db=require(_0x0c90('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0c90('0x7'))(_0x0c90('0x8'));var config=require(_0x0c90('0x9'));var jayson=require(_0x0c90('0xa'));var client=jayson[_0x0c90('0xb')][_0x0c90('0xc')]({'port':0x232a});config[_0x0c90('0xd')]=_['defaults'](config['redis'],{'host':_0x0c90('0xe'),'port':0x18eb});var socket=require(_0x0c90('0xf'))(new Redis(config[_0x0c90('0xd')]));require(_0x0c90('0x10'))[_0x0c90('0x11')](socket);function respondWithRpcPromise(_0x34b767,_0x3af693,_0x3c13d3){return new BPromise(function(_0x1cbd45,_0x53428b){return client[_0x0c90('0x12')](_0x34b767,_0x3c13d3)[_0x0c90('0x13')](function(_0x1b61e1){logger[_0x0c90('0x14')](_0x0c90('0x15'),_0x3af693,_0x0c90('0x16'));logger[_0x0c90('0x17')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x3af693,_0x0c90('0x16'),JSON[_0x0c90('0x18')](_0x1b61e1));if(_0x1b61e1[_0x0c90('0x19')]){if(_0x1b61e1[_0x0c90('0x19')][_0x0c90('0x1a')]===0x1f4){logger[_0x0c90('0x19')](_0x0c90('0x15'),_0x3af693,_0x1b61e1[_0x0c90('0x19')][_0x0c90('0x1b')]);return _0x53428b(_0x1b61e1[_0x0c90('0x19')][_0x0c90('0x1b')]);}logger[_0x0c90('0x19')](_0x0c90('0x15'),_0x3af693,_0x1b61e1[_0x0c90('0x19')][_0x0c90('0x1b')]);return _0x1cbd45(_0x1b61e1[_0x0c90('0x19')][_0x0c90('0x1b')]);}else{logger[_0x0c90('0x14')](_0x0c90('0x15'),_0x3af693,'request\x20sent');_0x1cbd45(_0x1b61e1[_0x0c90('0x1c')]['message']);}})['catch'](function(_0x4e335b){logger['error'](_0x0c90('0x15'),_0x3af693,_0x4e335b);_0x53428b(_0x4e335b);});});}exports[_0x0c90('0x1d')]=function(_0x498bbe){var _0x3130b1=this;return new Promise(function(_0xafd30a,_0x58e56b){return db[_0x0c90('0x1e')][_0x0c90('0x1f')](_0x498bbe[_0x0c90('0x20')],{'raw':_0x498bbe[_0x0c90('0x21')]?_0x498bbe[_0x0c90('0x21')][_0x0c90('0x22')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x498bbe[_0x0c90('0x21')]?_0x498bbe[_0x0c90('0x21')][_0x0c90('0x23')]||null:null,'attributes':_0x498bbe[_0x0c90('0x21')]?_0x498bbe['options'][_0x0c90('0x24')]||null:null,'limit':_0x498bbe[_0x0c90('0x21')]?_0x498bbe['options'][_0x0c90('0x25')]||null:null})[_0x0c90('0x13')](function(_0x9880fa){logger[_0x0c90('0x14')](_0x0c90('0x1d'),_0x498bbe);logger[_0x0c90('0x17')](_0x0c90('0x1d'),_0x498bbe,JSON[_0x0c90('0x18')](_0x9880fa));_0xafd30a(_0x9880fa);})[_0x0c90('0x26')](function(_0x4f7d55){logger[_0x0c90('0x19')](_0x0c90('0x1d'),_0x4f7d55[_0x0c90('0x1b')],_0x498bbe);_0x58e56b(_0x3130b1[_0x0c90('0x19')](0x1f4,_0x4f7d55[_0x0c90('0x1b')]));});});};exports[_0x0c90('0x27')]=function(_0x4f643c){return new Promise(function(_0x5ee011,_0x14976d){return db[_0x0c90('0x1e')]['find']({'where':_0x4f643c[_0x0c90('0x21')]?_0x4f643c[_0x0c90('0x21')][_0x0c90('0x23')]||null:null})[_0x0c90('0x13')](function(_0x285fc6){if(_0x285fc6){return _0x285fc6[_0x0c90('0x28')](_0x4f643c[_0x0c90('0x20')]['ids'],_[_0x0c90('0x29')](_0x4f643c['body'],[_0x0c90('0x2a'),'id'])||{});}})[_0x0c90('0x2b')](function(_0x5dcf7a){logger[_0x0c90('0x14')](_0x0c90('0x2c'),_0x4f643c);logger[_0x0c90('0x17')](_0x0c90('0x2c'),_0x4f643c,JSON[_0x0c90('0x18')](_0x5dcf7a));_0x5ee011(_0x5dcf7a);})[_0x0c90('0x26')](function(_0x4bf7ba){logger[_0x0c90('0x19')](_0x0c90('0x2c'),_0x4bf7ba['message'],_0x4f643c);_0x14976d(_this['error'](0x1f4,_0x4bf7ba[_0x0c90('0x1b')]));});});};
\ No newline at end of file
+var _0xb1bf=['../../config/utils','../../config/logger','rpc','../../config/environment','client','defaults','redis','localhost','./faxInteraction.socket','register','request','then','request\x20sent','debug','stringify','error','code','FaxInteraction,\x20%s,\x20%s','message','info','catch','UpdateFaxInteraction','FaxInteraction','update','options','raw','where','find','addTags','body','ids','omit','spread','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb1bf,0x13a));var _0xfb1b=function(_0x249ca5,_0x45c491){_0x249ca5=_0x249ca5-0x0;var _0x627edd=_0xb1bf[_0x249ca5];return _0x627edd;};'use strict';var _=require('lodash');var util=require(_0xfb1b('0x0'));var moment=require(_0xfb1b('0x1'));var BPromise=require(_0xfb1b('0x2'));var rs=require(_0xfb1b('0x3'));var fs=require('fs');var Redis=require(_0xfb1b('0x4'));var db=require(_0xfb1b('0x5'))['db'];var utils=require(_0xfb1b('0x6'));var logger=require(_0xfb1b('0x7'))(_0xfb1b('0x8'));var config=require(_0xfb1b('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xfb1b('0xa')]['http']({'port':0x232a});config['redis']=_[_0xfb1b('0xb')](config[_0xfb1b('0xc')],{'host':_0xfb1b('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xfb1b('0xe'))[_0xfb1b('0xf')](socket);function respondWithRpcPromise(_0x101422,_0x10a4a,_0x50cd6b){return new BPromise(function(_0x38ffc6,_0x786826){return client[_0xfb1b('0x10')](_0x101422,_0x50cd6b)[_0xfb1b('0x11')](function(_0x4ae635){logger['info']('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'));logger[_0xfb1b('0x13')]('FaxInteraction,\x20%s,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'),JSON[_0xfb1b('0x14')](_0x4ae635));if(_0x4ae635[_0xfb1b('0x15')]){if(_0x4ae635['error'][_0xfb1b('0x16')]===0x1f4){logger[_0xfb1b('0x15')](_0xfb1b('0x17'),_0x10a4a,_0x4ae635['error'][_0xfb1b('0x18')]);return _0x786826(_0x4ae635[_0xfb1b('0x15')]['message']);}logger[_0xfb1b('0x15')](_0xfb1b('0x17'),_0x10a4a,_0x4ae635[_0xfb1b('0x15')][_0xfb1b('0x18')]);return _0x38ffc6(_0x4ae635['error'][_0xfb1b('0x18')]);}else{logger[_0xfb1b('0x19')]('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0xfb1b('0x12'));_0x38ffc6(_0x4ae635['result'][_0xfb1b('0x18')]);}})[_0xfb1b('0x1a')](function(_0x24847f){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x10a4a,_0x24847f);_0x786826(_0x24847f);});});}exports[_0xfb1b('0x1b')]=function(_0x50f4af){var _0x453467=this;return new Promise(function(_0x38e4d1,_0x520ddd){return db[_0xfb1b('0x1c')][_0xfb1b('0x1d')](_0x50f4af['body'],{'raw':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')][_0xfb1b('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af['options'][_0xfb1b('0x20')]||null:null,'attributes':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')]['attributes']||null:null,'limit':_0x50f4af[_0xfb1b('0x1e')]?_0x50f4af[_0xfb1b('0x1e')]['limit']||null:null})[_0xfb1b('0x11')](function(_0x3d3cc4){logger[_0xfb1b('0x19')](_0xfb1b('0x1b'),_0x50f4af);logger['debug'](_0xfb1b('0x1b'),_0x50f4af,JSON[_0xfb1b('0x14')](_0x3d3cc4));_0x38e4d1(_0x3d3cc4);})[_0xfb1b('0x1a')](function(_0x4298dc){logger['error'](_0xfb1b('0x1b'),_0x4298dc[_0xfb1b('0x18')],_0x50f4af);_0x520ddd(_0x453467['error'](0x1f4,_0x4298dc['message']));});});};exports['AddTagsToFaxInteraction']=function(_0x301529){return new Promise(function(_0x2db320,_0x4ac0ea){return db[_0xfb1b('0x1c')][_0xfb1b('0x21')]({'where':_0x301529[_0xfb1b('0x1e')]?_0x301529[_0xfb1b('0x1e')]['where']||null:null})[_0xfb1b('0x11')](function(_0x2d42e4){if(_0x2d42e4){return _0x2d42e4[_0xfb1b('0x22')](_0x301529[_0xfb1b('0x23')][_0xfb1b('0x24')],_[_0xfb1b('0x25')](_0x301529['body'],[_0xfb1b('0x24'),'id'])||{});}})[_0xfb1b('0x26')](function(_0x348cf6){logger[_0xfb1b('0x19')](_0xfb1b('0x27'),_0x301529);logger[_0xfb1b('0x13')](_0xfb1b('0x27'),_0x301529,JSON[_0xfb1b('0x14')](_0x348cf6));_0x2db320(_0x348cf6);})[_0xfb1b('0x1a')](function(_0x175ebc){logger['error'](_0xfb1b('0x27'),_0x175ebc[_0xfb1b('0x18')],_0x301529);_0x4ac0ea(_this[_0xfb1b('0x15')](0x1f4,_0x175ebc['message']));});});};
\ No newline at end of file
index 7f24743..f0113f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4d4=['remove','update','removeListener','length'];(function(_0x107b24,_0x461a4a){var _0x1a5817=function(_0x492ef3){while(--_0x492ef3){_0x107b24['push'](_0x107b24['shift']());}};_0x1a5817(++_0x461a4a);}(_0xb4d4,0xd8));var _0x4b4d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb4d4[_0x3dd15e];return _0x231fd0;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=['save',_0x4b4d('0x0'),_0x4b4d('0x1')];function createListener(_0x23cb4a,_0x4c08ed){return function(_0x1d056b){_0x4c08ed['emit'](_0x23cb4a,_0x1d056b);};}function removeListener(_0x4dd214,_0x53a53f){return function(){FaxInteractionEvents[_0x4b4d('0x2')](_0x4dd214,_0x53a53f);};}exports['register']=function(_0x32552b){for(var _0x5c1016=0x0,_0x55641f=events[_0x4b4d('0x3')];_0x5c1016<_0x55641f;_0x5c1016++){var _0x48a511=events[_0x5c1016];var _0x14f47f=createListener('faxInteraction:'+_0x48a511,_0x32552b);FaxInteractionEvents['on'](_0x48a511,_0x14f47f);}};
\ No newline at end of file
+var _0x832c=['save','remove','update','emit','removeListener','register','faxInteraction:'];(function(_0x1b999d,_0xae4119){var _0x354fe0=function(_0x472ffd){while(--_0x472ffd){_0x1b999d['push'](_0x1b999d['shift']());}};_0x354fe0(++_0xae4119);}(_0x832c,0x134));var _0xc832=function(_0x416ef5,_0x430832){_0x416ef5=_0x416ef5-0x0;var _0x4270a8=_0x832c[_0x416ef5];return _0x4270a8;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=[_0xc832('0x0'),_0xc832('0x1'),_0xc832('0x2')];function createListener(_0x5c2e3d,_0x2cd86c){return function(_0xc81095){_0x2cd86c[_0xc832('0x3')](_0x5c2e3d,_0xc81095);};}function removeListener(_0x4dab41,_0x4d2a94){return function(){FaxInteractionEvents[_0xc832('0x4')](_0x4dab41,_0x4d2a94);};}exports[_0xc832('0x5')]=function(_0xcda3c6){for(var _0x1878c2=0x0,_0x480e26=events['length'];_0x1878c2<_0x480e26;_0x1878c2++){var _0x3fb036=events[_0x1878c2];var _0xef0f9f=createListener(_0xc832('0x6')+_0x3fb036,_0xcda3c6);FaxInteractionEvents['on'](_0x3fb036,_0xef0f9f);}};
\ No newline at end of file
index 40ff8e4..8061d91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ec=['post','create','addMessage','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','download'];(function(_0x19e0fe,_0x5e093f){var _0x62ac24=function(_0x46b540){while(--_0x46b540){_0x19e0fe['push'](_0x19e0fe['shift']());}};_0x62ac24(++_0x5e093f);}(_0x15ec,0x6f));var _0xc15e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0x15ec[_0x220dbb];return _0x2b77de;};'use strict';var multer=require(_0xc15e('0x0'));var util=require(_0xc15e('0x1'));var path=require(_0xc15e('0x2'));var timeout=require(_0xc15e('0x3'));var express=require(_0xc15e('0x4'));var router=express[_0xc15e('0x5')]();var fs_extra=require(_0xc15e('0x6'));var auth=require(_0xc15e('0x7'));var interaction=require(_0xc15e('0x8'));var config=require(_0xc15e('0x9'));var controller=require(_0xc15e('0xa'));router[_0xc15e('0xb')]('/',auth[_0xc15e('0xc')](),controller[_0xc15e('0xd')]);router[_0xc15e('0xb')](_0xc15e('0xe'),auth[_0xc15e('0xc')](),controller[_0xc15e('0xf')]);router[_0xc15e('0xb')](_0xc15e('0x10'),auth[_0xc15e('0xc')](),controller[_0xc15e('0x11')]);router[_0xc15e('0xb')](_0xc15e('0x12'),auth[_0xc15e('0xc')](),controller[_0xc15e('0x13')]);router[_0xc15e('0xb')]('/:id/download',auth[_0xc15e('0xc')](),controller[_0xc15e('0x14')]);router[_0xc15e('0x15')]('/',auth[_0xc15e('0xc')](),controller[_0xc15e('0x16')]);router[_0xc15e('0x15')](_0xc15e('0x12'),auth[_0xc15e('0xc')](),controller[_0xc15e('0x17')]);router[_0xc15e('0x15')](_0xc15e('0x18'),auth['isAuthenticated'](),interaction[_0xc15e('0x19')](_0xc15e('0x1a'),_0xc15e('0x1b')),controller[_0xc15e('0x1c')]);router[_0xc15e('0x1d')](_0xc15e('0x10'),auth[_0xc15e('0xc')](),interaction[_0xc15e('0x19')](_0xc15e('0x1a'),'faxinteraction:update'),controller[_0xc15e('0x1e')]);router[_0xc15e('0x1f')](_0xc15e('0x10'),auth[_0xc15e('0xc')](),interaction[_0xc15e('0x19')](_0xc15e('0x1a'),'faxinteraction:destroy'),controller['destroy']);router[_0xc15e('0x1f')](_0xc15e('0x18'),auth[_0xc15e('0xc')](),controller['removeTags']);module[_0xc15e('0x20')]=router;
\ No newline at end of file
+var _0x6278=['delete','faxinteraction:destroy','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./faxInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','/:id/download','create','post','/:id/tags','tracked','fax','faxinteraction:addtags','addTags','faxinteraction:update','update'];(function(_0x1af482,_0x1af5b7){var _0x7e7580=function(_0x5ed4a7){while(--_0x5ed4a7){_0x1af482['push'](_0x1af482['shift']());}};_0x7e7580(++_0x1af5b7);}(_0x6278,0x7c));var _0x8627=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x6278[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require(_0x8627('0x0'));var util=require(_0x8627('0x1'));var path=require(_0x8627('0x2'));var timeout=require(_0x8627('0x3'));var express=require(_0x8627('0x4'));var router=express[_0x8627('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8627('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8627('0x7'));var controller=require(_0x8627('0x8'));router[_0x8627('0x9')]('/',auth[_0x8627('0xa')](),controller[_0x8627('0xb')]);router[_0x8627('0x9')]('/describe',auth['isAuthenticated'](),controller[_0x8627('0xc')]);router['get'](_0x8627('0xd'),auth['isAuthenticated'](),controller[_0x8627('0xe')]);router[_0x8627('0x9')](_0x8627('0xf'),auth[_0x8627('0xa')](),controller['getMessages']);router[_0x8627('0x9')](_0x8627('0x10'),auth['isAuthenticated'](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x8627('0x11')]);router[_0x8627('0x12')](_0x8627('0xf'),auth[_0x8627('0xa')](),controller['addMessage']);router[_0x8627('0x12')](_0x8627('0x13'),auth[_0x8627('0xa')](),interaction[_0x8627('0x14')](_0x8627('0x15'),_0x8627('0x16')),controller[_0x8627('0x17')]);router['put']('/:id',auth['isAuthenticated'](),interaction[_0x8627('0x14')]('fax',_0x8627('0x18')),controller[_0x8627('0x19')]);router[_0x8627('0x1a')]('/:id',auth[_0x8627('0xa')](),interaction[_0x8627('0x14')]('fax',_0x8627('0x1b')),controller[_0x8627('0x1c')]);router[_0x8627('0x1a')](_0x8627('0x13'),auth[_0x8627('0xa')](),controller['removeTags']);module[_0x8627('0x1d')]=router;
\ No newline at end of file
index edd576f..e4396f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5645=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','out'];(function(_0x42d69d,_0x4a014e){var _0x27d15b=function(_0x2d2ead){while(--_0x2d2ead){_0x42d69d['push'](_0x42d69d['shift']());}};_0x27d15b(++_0x4a014e);}(_0x5645,0x19e));var _0x5564=function(_0x415a3b,_0x22a6b1){_0x415a3b=_0x415a3b-0x0;var _0xe84651=_0x5645[_0x415a3b];return _0xe84651;};'use strict';var Sequelize=require(_0x5564('0x0'));module[_0x5564('0x1')]={'body':{'type':Sequelize[_0x5564('0x2')](_0x5564('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x5564('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x5564('0x5')),'defaultValue':_0x5564('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x5564('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0x5564('0x6')]}};
\ No newline at end of file
+var _0x4bc3=['TEXT','DATE','sequelize','exports','medium','BOOLEAN','out'];(function(_0x283304,_0x318b3b){var _0x568be4=function(_0x3e8188){while(--_0x3e8188){_0x283304['push'](_0x283304['shift']());}};_0x568be4(++_0x318b3b);}(_0x4bc3,0x16e));var _0x34bc=function(_0x381589,_0x27a707){_0x381589=_0x381589-0x0;var _0x2a075d=_0x4bc3[_0x381589];return _0x2a075d;};'use strict';var Sequelize=require(_0x34bc('0x0'));module[_0x34bc('0x1')]={'body':{'type':Sequelize['TEXT'](_0x34bc('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x34bc('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x34bc('0x4')),'defaultValue':_0x34bc('0x4'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x34bc('0x5')],'defaultValue':null},'readAt':{'type':Sequelize[_0x34bc('0x6')]}};
\ No newline at end of file
index ed2fa03..a605fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7000=['register','jayson/promise','http','client','request','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','reject','save','then','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','order','sort','where','filters','pick','merge','type','VIRTUAL','filter','options','FaxMessage','findAll','rows','show','params','includeAll','include','find','body','describe','fax','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','get','FaxInteraction','FaxInteractionId','update','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','Sequelize','SELECT','contact','User','agent','email','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','../../config/logger','fax-interactions','rejectMessage','QueryTypes','fullname','internal','rejectmessage','create','CmContact','findOne','Attachment','SendFax','FaxAccountId','basename','AttachmentId','download','join','server','files','attachments','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','./faxMessage.socket'];(function(_0x377ebd,_0xddb478){var _0x2abe4c=function(_0x20c093){while(--_0x20c093){_0x377ebd['push'](_0x377ebd['shift']());}};_0x2abe4c(++_0xddb478);}(_0x7000,0x109));var _0x0700=function(_0x2583b2,_0x45a743){_0x2583b2=_0x2583b2-0x0;var _0xc1b07c=_0x7000[_0x2583b2];return _0xc1b07c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0700('0x0'));var zipdir=require(_0x0700('0x1'));var jsonpatch=require(_0x0700('0x2'));var rp=require(_0x0700('0x3'));var moment=require(_0x0700('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x0700('0x5'));var util=require(_0x0700('0x6'));var path=require(_0x0700('0x7'));var sox=require(_0x0700('0x8'));var csv=require('to-csv');var ejs=require(_0x0700('0x9'));var fs=require('fs');var fs_extra=require(_0x0700('0xa'));var _=require(_0x0700('0xb'));var squel=require(_0x0700('0xc'));var crypto=require(_0x0700('0xd'));var jsforce=require(_0x0700('0xe'));var deskjs=require(_0x0700('0xf'));var toCsv=require(_0x0700('0x10'));var querystring=require(_0x0700('0x11'));var Papa=require(_0x0700('0x12'));var Redis=require(_0x0700('0x13'));var authService=require(_0x0700('0x14'));var qs=require(_0x0700('0x15'));var as=require(_0x0700('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0700('0x17'));var utils=require(_0x0700('0x18'));var config=require(_0x0700('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x0700('0x1a'))['db'];config[_0x0700('0x1b')]=_[_0x0700('0x1c')](config[_0x0700('0x1b')],{'host':_0x0700('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x0700('0x1b')]));require(_0x0700('0x1e'))[_0x0700('0x1f')](socket);var jayson=require(_0x0700('0x20'));var client=jayson['client'][_0x0700('0x21')]({'port':0x232c});var client9002=jayson[_0x0700('0x22')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f7bca,_0x51bb12,_0x279f9e,_0x5cb67e){return new BPromise(function(_0x335297,_0x3dffca){var _0x930a2a=_0x5cb67e||client;return _0x930a2a[_0x0700('0x23')](_0x3f7bca,_0x279f9e)['then'](function(_0x3721fa){logger[_0x0700('0x24')](_0x0700('0x25'),_0x51bb12,_0x0700('0x26'));logger[_0x0700('0x27')](_0x0700('0x28'),_0x51bb12,'request\x20sent',JSON[_0x0700('0x29')](_0x3721fa));if(_0x3721fa[_0x0700('0x2a')]){if(_0x3721fa['error'][_0x0700('0x2b')]===0x1f4){logger[_0x0700('0x2a')](_0x0700('0x25'),_0x51bb12,_0x3721fa[_0x0700('0x2a')][_0x0700('0x2c')]);return _0x3dffca(_0x3721fa[_0x0700('0x2a')]['message']);}logger[_0x0700('0x2a')]('FaxMessage,\x20%s,\x20%s',_0x51bb12,_0x3721fa[_0x0700('0x2a')]['message']);return _0x335297(_0x3721fa[_0x0700('0x2a')][_0x0700('0x2c')]);}else{logger[_0x0700('0x24')](_0x0700('0x25'),_0x51bb12,_0x0700('0x26'));_0x335297(_0x3721fa[_0x0700('0x2d')][_0x0700('0x2c')]);}})[_0x0700('0x2e')](function(_0x2b8fdd){logger['error'](_0x0700('0x25'),_0x51bb12,_0x2b8fdd);_0x3dffca(_0x2b8fdd);});});}function respondWithStatusCode(_0x3c1644,_0x46d054){_0x46d054=_0x46d054||0xcc;return function(_0x4aa9e6){if(_0x4aa9e6){return _0x3c1644[_0x0700('0x2f')](_0x46d054);}return _0x3c1644['status'](_0x46d054)[_0x0700('0x30')]();};}function respondWithResult(_0x1b861b,_0x34812c){_0x34812c=_0x34812c||0xc8;return function(_0x2d2ece){if(_0x2d2ece){return _0x1b861b[_0x0700('0x31')](_0x34812c)[_0x0700('0x32')](_0x2d2ece);}};}function respondWithFilteredResult(_0x4c9d3b,_0x4aac50){return function(_0x844d81){if(_0x844d81){var _0x41ed54=typeof _0x4aac50[_0x0700('0x33')]==='undefined'&&typeof _0x4aac50[_0x0700('0x34')]===_0x0700('0x35');var _0x5f06cb=_0x844d81[_0x0700('0x36')];var _0x31e630=_0x41ed54?0x0:_0x4aac50[_0x0700('0x33')];var _0x315151=_0x41ed54?_0x844d81['count']:_0x4aac50['offset']+_0x4aac50[_0x0700('0x34')];var _0x1b3cc0;if(_0x315151>=_0x5f06cb){_0x315151=_0x5f06cb;_0x1b3cc0=0xc8;}else{_0x1b3cc0=0xce;}_0x4c9d3b[_0x0700('0x31')](_0x1b3cc0);return _0x4c9d3b[_0x0700('0x37')]('Content-Range',_0x31e630+'-'+_0x315151+'/'+_0x5f06cb)[_0x0700('0x32')](_0x844d81);}return null;};}function patchUpdates(_0x4841ce){return function(_0x244cfb){try{jsonpatch[_0x0700('0x38')](_0x244cfb,_0x4841ce,!![]);}catch(_0x38a860){return BPromise[_0x0700('0x39')](_0x38a860);}return _0x244cfb[_0x0700('0x3a')]();};}function saveUpdates(_0xa1b775,_0x3f1cf9){return function(_0x51595b){if(_0x51595b){return _0x51595b['update'](_0xa1b775)[_0x0700('0x3b')](function(_0x4c27a8){return _0x4c27a8;});}return null;};}function removeEntity(_0x239f09,_0x4e706c){return function(_0x220b3a){if(_0x220b3a){return _0x220b3a['destroy']()[_0x0700('0x3b')](function(){_0x239f09[_0x0700('0x31')](0xcc)['end']();});}};}function handleEntityNotFound(_0xb65950,_0x10be05){return function(_0xf12202){if(!_0xf12202){_0xb65950[_0x0700('0x2f')](0x194);}return _0xf12202;};}function handleError(_0x1d47b1,_0x58d6ae){_0x58d6ae=_0x58d6ae||0x1f4;return function(_0x1947e4){logger[_0x0700('0x2a')](_0x1947e4['stack']);if(_0x1947e4[_0x0700('0x3c')]){delete _0x1947e4[_0x0700('0x3c')];}_0x1d47b1[_0x0700('0x31')](_0x58d6ae)[_0x0700('0x3d')](_0x1947e4);};}exports[_0x0700('0x3e')]=function(_0x537cda,_0x42bd64){var _0x16f5d1={},_0x4fed31={},_0xcf918d={'count':0x0,'rows':[]};var _0x482b45=_[_0x0700('0x3f')](db['FaxMessage'][_0x0700('0x40')],function(_0x12460c){return{'name':_0x12460c[_0x0700('0x41')],'type':_0x12460c['type'][_0x0700('0x42')]};});_0x4fed31[_0x0700('0x43')]=_[_0x0700('0x3f')](_0x482b45,_0x0700('0x3c'));_0x4fed31[_0x0700('0x44')]=_[_0x0700('0x45')](_0x537cda['query']);_0x4fed31['filters']=_[_0x0700('0x46')](_0x4fed31['model'],_0x4fed31[_0x0700('0x44')]);_0x16f5d1[_0x0700('0x47')]=_[_0x0700('0x46')](_0x4fed31[_0x0700('0x43')],qs[_0x0700('0x48')](_0x537cda[_0x0700('0x44')]['fields']));_0x16f5d1['attributes']=_0x16f5d1[_0x0700('0x47')][_0x0700('0x49')]?_0x16f5d1[_0x0700('0x47')]:_0x4fed31[_0x0700('0x43')];if(!_0x537cda[_0x0700('0x44')]['hasOwnProperty']('nolimit')){_0x16f5d1[_0x0700('0x34')]=qs[_0x0700('0x34')](_0x537cda[_0x0700('0x44')]['limit']);_0x16f5d1['offset']=qs[_0x0700('0x33')](_0x537cda['query']['offset']);}_0x16f5d1[_0x0700('0x4a')]=qs[_0x0700('0x4b')](_0x537cda[_0x0700('0x44')][_0x0700('0x4b')]);_0x16f5d1[_0x0700('0x4c')]=qs[_0x0700('0x4d')](_[_0x0700('0x4e')](_0x537cda[_0x0700('0x44')],_0x4fed31['filters']),_0x482b45);if(_0x537cda[_0x0700('0x44')]['filter']){_0x16f5d1[_0x0700('0x4c')]=_[_0x0700('0x4f')](_0x16f5d1[_0x0700('0x4c')],{'$or':_['map'](_0x482b45,function(_0xeb7ac9){if(_0xeb7ac9[_0x0700('0x50')]!==_0x0700('0x51')){var _0x52bf0e={};_0x52bf0e[_0xeb7ac9[_0x0700('0x3c')]]={'$like':'%'+_0x537cda['query'][_0x0700('0x52')]+'%'};return _0x52bf0e;}})});}_0x16f5d1=_[_0x0700('0x4f')]({},_0x16f5d1,_0x537cda[_0x0700('0x53')]);var _0x34e8d8={'where':_0x16f5d1[_0x0700('0x4c')]};return db['FaxMessage']['count'](_0x34e8d8)['then'](function(_0x29b7ce){_0xcf918d[_0x0700('0x36')]=_0x29b7ce;if(_0x537cda[_0x0700('0x44')]['includeAll']){_0x16f5d1['include']=[{'all':!![]}];}return db[_0x0700('0x54')][_0x0700('0x55')](_0x16f5d1);})[_0x0700('0x3b')](function(_0x59a0c6){_0xcf918d[_0x0700('0x56')]=_0x59a0c6;return _0xcf918d;})[_0x0700('0x3b')](respondWithFilteredResult(_0x42bd64,_0x16f5d1))['catch'](handleError(_0x42bd64,null));};exports[_0x0700('0x57')]=function(_0x352a91,_0x502e9c){var _0x46474f={'raw':!![],'where':{'id':_0x352a91[_0x0700('0x58')]['id']}},_0x2af5fc={};_0x2af5fc[_0x0700('0x43')]=_[_0x0700('0x45')](db[_0x0700('0x54')][_0x0700('0x40')]);_0x2af5fc[_0x0700('0x44')]=_['keys'](_0x352a91[_0x0700('0x44')]);_0x2af5fc[_0x0700('0x4d')]=_[_0x0700('0x46')](_0x2af5fc[_0x0700('0x43')],_0x2af5fc[_0x0700('0x44')]);_0x46474f[_0x0700('0x47')]=_[_0x0700('0x46')](_0x2af5fc['model'],qs[_0x0700('0x48')](_0x352a91[_0x0700('0x44')][_0x0700('0x48')]));_0x46474f[_0x0700('0x47')]=_0x46474f[_0x0700('0x47')][_0x0700('0x49')]?_0x46474f[_0x0700('0x47')]:_0x2af5fc[_0x0700('0x43')];if(_0x352a91[_0x0700('0x44')][_0x0700('0x59')]){_0x46474f[_0x0700('0x5a')]=[{'all':!![]}];}_0x46474f=_[_0x0700('0x4f')]({},_0x46474f,_0x352a91[_0x0700('0x53')]);return db['FaxMessage'][_0x0700('0x5b')](_0x46474f)[_0x0700('0x3b')](handleEntityNotFound(_0x502e9c,null))['then'](respondWithResult(_0x502e9c,null))[_0x0700('0x2e')](handleError(_0x502e9c,null));};exports['update']=function(_0x3d33a7,_0xc5bcc9){if(_0x3d33a7[_0x0700('0x5c')]['id']){delete _0x3d33a7[_0x0700('0x5c')]['id'];}return db[_0x0700('0x54')][_0x0700('0x5b')]({'where':{'id':_0x3d33a7[_0x0700('0x58')]['id']}})[_0x0700('0x3b')](handleEntityNotFound(_0xc5bcc9,null))[_0x0700('0x3b')](saveUpdates(_0x3d33a7['body'],null))[_0x0700('0x3b')](respondWithResult(_0xc5bcc9,null))[_0x0700('0x2e')](handleError(_0xc5bcc9,null));};exports['destroy']=function(_0x4d7da3,_0x4896b2){return db[_0x0700('0x54')][_0x0700('0x5b')]({'where':{'id':_0x4d7da3['params']['id']}})[_0x0700('0x3b')](handleEntityNotFound(_0x4896b2,null))['then'](removeEntity(_0x4896b2,null))['catch'](handleError(_0x4896b2,null));};exports[_0x0700('0x5d')]=function(_0x1bac1e,_0x470e21){return db[_0x0700('0x54')][_0x0700('0x5d')]()['then'](respondWithResult(_0x470e21,null))['catch'](handleError(_0x470e21,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports['accept']=function(_0x1955ea,_0x4c43ae,_0x1fc1f4){var _0x4462a6={'agent':{},'channel':_0x0700('0x5e')};if(_0x1955ea[_0x0700('0x5c')]['id']){delete _0x1955ea[_0x0700('0x5c')]['id'];}_0x1955ea['body'][_0x0700('0x5f')]=!![];_0x1955ea['body'][_0x0700('0x60')]=moment()[_0x0700('0x61')](_0x0700('0x62'));_0x1955ea[_0x0700('0x5c')][_0x0700('0x63')]=_0x1955ea[_0x0700('0x5c')]['UserId']||_0x1955ea['user']['id'];_0x4462a6['agent']['id']=_0x1955ea[_0x0700('0x5c')][_0x0700('0x63')];return db[_0x0700('0x54')][_0x0700('0x5b')]({'where':{'id':_0x1955ea[_0x0700('0x58')]['id'],'UserId':null}})[_0x0700('0x3b')](handleEntityNotFound(_0x4c43ae,null))[_0x0700('0x3b')](saveUpdates(_0x1955ea[_0x0700('0x5c')],null))[_0x0700('0x3b')](function(_0x46c91e){if(_0x46c91e){_0x4462a6[_0x0700('0x2c')]=_0x46c91e[_0x0700('0x64')]({'plain':!![]});return db[_0x0700('0x65')][_0x0700('0x5b')]({'where':{'id':_0x46c91e[_0x0700('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x4c43ae,null))[_0x0700('0x3b')](function(_0x2a26fe){if(_0x2a26fe){return _0x2a26fe[_0x0700('0x67')]({'UserId':_0x1955ea[_0x0700('0x5c')][_0x0700('0x63')],'read1stAt':_[_0x0700('0x68')](_0x2a26fe[_0x0700('0x69')])?moment()[_0x0700('0x61')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x0700('0x3b')](function(_0xf5538f){if(_0xf5538f){_0x4462a6[_0x0700('0x6a')]=_0xf5538f['get']({'plain':!![]});interaction_log[_0x0700('0x24')](_0x0700('0x6b'),_0x1955ea[_0x0700('0x6c')]['id'],_0x1955ea['user']['name'],_0x1955ea['user'][_0x0700('0x6d')],_0x4462a6[_0x0700('0x6a')]['id'],_0x1955ea[_0x0700('0x5c')]?JSON['stringify'](_0x1955ea[_0x0700('0x5c')]):_0x0700('0x6e'));return respondWithRpcPromise(_0x0700('0x6f'),_0x0700('0x70'),_0x4462a6);}return null;})[_0x0700('0x3b')](function(_0x47c4f4){var _0x2ed39d='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x47c4f4[_0x0700('0x2c')][_0x0700('0x71')];return db[_0x0700('0x72')][_0x0700('0x44')](_0x2ed39d,{'type':db[_0x0700('0x73')]['QueryTypes'][_0x0700('0x74')],'raw':!![]})['then'](function(_0x4a7eec){return _0x4a7eec;});})[_0x0700('0x3b')](function(_0x5c8728){if(_0x5c8728){_0x4462a6[_0x0700('0x2c')][_0x0700('0x75')]=_0x5c8728[0x0];if(!_0x1955ea[_0x0700('0x5c')][_0x0700('0x63')])return;return db[_0x0700('0x76')]['find']({'where':{'id':_0x1955ea[_0x0700('0x5c')][_0x0700('0x63')],'role':_0x0700('0x77')},'attributes':['id',_0x0700('0x3c'),'fullname',_0x0700('0x78'),'internal'],'raw':!![]});}return null;})['then'](function(_0x30ee8e){if(!_0x30ee8e)return null;_0x4462a6[_0x0700('0x2c')][_0x0700('0x77')]=_0x30ee8e;return _0x4462a6;})['then'](function(_0x3a3710){if(_0x3a3710){if(_0x1955ea[_0x0700('0x5c')][_0x0700('0x79')]){_0x4462a6[_0x0700('0x2c')][_0x0700('0x7a')]=util[_0x0700('0x61')]('SIP/%s',_0x1955ea[_0x0700('0x6c')][_0x0700('0x3c')]);_0x4462a6['message'][_0x0700('0x7b')]=_0x4462a6['channel'];_0x4462a6['message'][_0x0700('0x7c')]=_0x4462a6[_0x0700('0x7b')];_0x4462a6['message'][_0x0700('0x7d')]='accept';return respondWithRpcPromise(_0x0700('0x7e'),'EventManager',{'event':_0x0700('0x7f'),'message':_0x4462a6[_0x0700('0x2c')]},client9002)[_0x0700('0x3b')](function(){return _0x4462a6;});}return _0x4462a6;}return null;})[_0x0700('0x3b')](respondWithResult(_0x4c43ae,null))[_0x0700('0x2e')](handleError(_0x4c43ae,null));};var interaction_log=require(_0x0700('0x80'))(_0x0700('0x81'));exports[_0x0700('0x39')]=function(_0x189333,_0x420853,_0x5b53a5){var _0x139377={'agent':{},'channel':'fax'};if(_0x189333[_0x0700('0x5c')]['id']){delete _0x189333[_0x0700('0x5c')]['id'];}_0x189333[_0x0700('0x5c')][_0x0700('0x63')]=_0x189333[_0x0700('0x5c')][_0x0700('0x63')]||_0x189333['user']['id'];_0x139377[_0x0700('0x77')]['id']=_0x189333[_0x0700('0x5c')][_0x0700('0x63')];return db['FaxMessage'][_0x0700('0x5b')]({'where':{'id':_0x189333['params']['id'],'UserId':null}})[_0x0700('0x3b')](handleEntityNotFound(_0x420853,null))[_0x0700('0x3b')](function(_0x2021c7){if(_0x2021c7){_0x139377['message']=_0x2021c7['get']({'plain':!![]});return db['FaxInteraction'][_0x0700('0x5b')]({'where':{'id':_0x2021c7[_0x0700('0x66')]}});}return null;})[_0x0700('0x3b')](handleEntityNotFound(_0x420853,null))[_0x0700('0x3b')](function(_0x5e3827){if(_0x5e3827){_0x139377[_0x0700('0x6a')]=_0x5e3827[_0x0700('0x64')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x189333[_0x0700('0x6c')]['id'],_0x189333[_0x0700('0x6c')][_0x0700('0x3c')],_0x189333[_0x0700('0x6c')]['role'],_0x139377[_0x0700('0x6a')]['id'],_0x189333[_0x0700('0x5c')]?JSON[_0x0700('0x29')](_0x189333[_0x0700('0x5c')]):_0x0700('0x6e'));return respondWithRpcPromise('RejectMessage',_0x0700('0x82'),_0x139377);}return null;})[_0x0700('0x3b')](function(_0x25d291){var _0x32608a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x25d291[_0x0700('0x2c')][_0x0700('0x71')];return db[_0x0700('0x72')][_0x0700('0x44')](_0x32608a,{'type':db[_0x0700('0x73')][_0x0700('0x83')][_0x0700('0x74')],'raw':!![]})['then'](function(_0x31d088){return _0x31d088;});})[_0x0700('0x3b')](function(_0x3264b7){if(_0x3264b7){_0x139377[_0x0700('0x2c')]['contact']=_0x3264b7[0x0];if(!_0x189333[_0x0700('0x5c')][_0x0700('0x63')])return;return db[_0x0700('0x76')][_0x0700('0x5b')]({'where':{'id':_0x189333[_0x0700('0x5c')][_0x0700('0x63')],'role':'agent'},'attributes':['id',_0x0700('0x3c'),_0x0700('0x84'),_0x0700('0x78'),_0x0700('0x85')],'raw':!![]});}return null;})['then'](function(_0x279532){if(!_0x279532)return null;_0x139377[_0x0700('0x2c')]['agent']=_0x279532;return _0x139377;})[_0x0700('0x3b')](function(_0x18a5f6){if(_0x18a5f6){_0x18a5f6[_0x0700('0x2c')][_0x0700('0x7a')]=util[_0x0700('0x61')]('SIP/%s',_0x189333[_0x0700('0x6c')]['name']);_0x18a5f6[_0x0700('0x2c')][_0x0700('0x7b')]=_0x139377['channel'];_0x18a5f6['message'][_0x0700('0x7c')]=_0x139377['channel'];_0x18a5f6[_0x0700('0x2c')][_0x0700('0x7d')]=_0x0700('0x39');respondWithRpcPromise(_0x0700('0x7e'),'EventManager',{'event':_0x0700('0x86'),'message':_0x18a5f6[_0x0700('0x2c')]},client9002);return _0x139377;}return null;})[_0x0700('0x3b')](respondWithResult(_0x420853,null))[_0x0700('0x2e')](handleError(_0x420853,null));};exports[_0x0700('0x87')]=function(_0x3ebaad,_0x2803f5){var _0x40b399;return db[_0x0700('0x54')]['create'](_0x3ebaad[_0x0700('0x5c')],{})[_0x0700('0x3b')](function(_0x474f0){_0x40b399=_0x474f0;return db[_0x0700('0x88')][_0x0700('0x89')]({'where':{'id':_0x40b399[_0x0700('0x71')]}});})[_0x0700('0x3b')](function(_0x1f6a07){if(_[_0x0700('0x68')](_0x1f6a07)){return;}else{_0x40b399['fax']=_0x1f6a07['fax'];return db[_0x0700('0x8a')][_0x0700('0x89')]({'where':{'id':_0x40b399['AttachmentId']}});}})[_0x0700('0x3b')](function(_0x1e24a6){return respondWithRpcPromise(_0x0700('0x8b'),'SendFax',{'FaxAccountId':_[_0x0700('0x68')](_0x3ebaad[_0x0700('0x5c')])?undefined:_0x3ebaad[_0x0700('0x5c')][_0x0700('0x8c')],'path':_[_0x0700('0x68')](_0x1e24a6)?undefined:util[_0x0700('0x61')]('/var/opt/motion2/server/files/attachments/%s',_0x1e24a6[_0x0700('0x8d')]),'fax':_[_0x0700('0x68')](_0x40b399[_0x0700('0x5e')])?undefined:_0x40b399['fax'],'AttachmentId':_0x40b399[_0x0700('0x8e')]},client9002);})[_0x0700('0x3b')](respondWithResult(_0x2803f5,0xc9))[_0x0700('0x2e')](handleError(_0x2803f5,null));};exports[_0x0700('0x8f')]=function(_0x526f54,_0x381daf){var _0x4013dc=path[_0x0700('0x90')](config['root'],_0x0700('0x91'),_0x0700('0x92'),_0x0700('0x93'));return db[_0x0700('0x54')]['find']({'where':{'id':_0x526f54['params']['id']},'include':[{'model':db[_0x0700('0x8a')],'as':_0x0700('0x8a')}]})[_0x0700('0x3b')](handleEntityNotFound(_0x381daf,null))['then'](function(_0x39c399){if(_0x39c399){return _0x381daf[_0x0700('0x8f')](path[_0x0700('0x90')](_0x4013dc,_0x39c399[_0x0700('0x8a')][_0x0700('0x8d')]));}})[_0x0700('0x2e')](handleError(_0x381daf,null));};
\ No newline at end of file
+var _0xaff5=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','http','request','then','FaxMessage,\x20%s,\x20%s','FaxMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','stack','name','send','index','rawAttributes','type','key','model','map','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','pick','merge','where','VIRTUAL','options','includeAll','include','FaxMessage','params','keys','length','find','body','destroy','describe','fax-interactions','accept','fax','read','readAt','format','UserId','user','agent','get','FaxInteraction','FaxInteractionId','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','event','EventManager','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','interface','motionChannel','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','isNil','download','join','root','server','files','attachments','basename','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaff5,0x1a4));var _0x5aff=function(_0x2ef505,_0x210e76){_0x2ef505=_0x2ef505-0x0;var _0x3029d8=_0xaff5[_0x2ef505];return _0x3029d8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5aff('0x0'));var zipdir=require(_0x5aff('0x1'));var jsonpatch=require(_0x5aff('0x2'));var rp=require('request-promise');var moment=require(_0x5aff('0x3'));var BPromise=require(_0x5aff('0x4'));var Mustache=require(_0x5aff('0x5'));var util=require(_0x5aff('0x6'));var path=require(_0x5aff('0x7'));var sox=require(_0x5aff('0x8'));var csv=require(_0x5aff('0x9'));var ejs=require(_0x5aff('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x5aff('0xb'));var squel=require(_0x5aff('0xc'));var crypto=require(_0x5aff('0xd'));var jsforce=require(_0x5aff('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x5aff('0xf'));var qs=require(_0x5aff('0x10'));var as=require(_0x5aff('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5aff('0x12'))(_0x5aff('0x13'));var utils=require(_0x5aff('0x14'));var config=require(_0x5aff('0x15'));var licenseUtil=require(_0x5aff('0x16'));var db=require(_0x5aff('0x17'))['db'];config['redis']=_[_0x5aff('0x18')](config[_0x5aff('0x19')],{'host':_0x5aff('0x1a'),'port':0x18eb});var socket=require(_0x5aff('0x1b'))(new Redis(config[_0x5aff('0x19')]));require(_0x5aff('0x1c'))[_0x5aff('0x1d')](socket);var jayson=require(_0x5aff('0x1e'));var client=jayson[_0x5aff('0x1f')][_0x5aff('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x5aff('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x5bcfc0,_0x250778,_0x44f97b,_0x41d5fb){return new BPromise(function(_0x3eb95b,_0x508f2c){var _0x296af2=_0x41d5fb||client;return _0x296af2[_0x5aff('0x21')](_0x5bcfc0,_0x44f97b)[_0x5aff('0x22')](function(_0x12fb5b){logger['info'](_0x5aff('0x23'),_0x250778,'request\x20sent');logger['debug'](_0x5aff('0x24'),_0x250778,_0x5aff('0x25'),JSON[_0x5aff('0x26')](_0x12fb5b));if(_0x12fb5b[_0x5aff('0x27')]){if(_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x28')]===0x1f4){logger['error'](_0x5aff('0x23'),_0x250778,_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x29')]);return _0x508f2c(_0x12fb5b[_0x5aff('0x27')][_0x5aff('0x29')]);}logger['error'](_0x5aff('0x23'),_0x250778,_0x12fb5b[_0x5aff('0x27')]['message']);return _0x3eb95b(_0x12fb5b[_0x5aff('0x27')]['message']);}else{logger[_0x5aff('0x2a')](_0x5aff('0x23'),_0x250778,'request\x20sent');_0x3eb95b(_0x12fb5b[_0x5aff('0x2b')][_0x5aff('0x29')]);}})[_0x5aff('0x2c')](function(_0x29f4fc){logger[_0x5aff('0x27')](_0x5aff('0x23'),_0x250778,_0x29f4fc);_0x508f2c(_0x29f4fc);});});}function respondWithStatusCode(_0x174b12,_0x35ee9f){_0x35ee9f=_0x35ee9f||0xcc;return function(_0x35d616){if(_0x35d616){return _0x174b12[_0x5aff('0x2d')](_0x35ee9f);}return _0x174b12[_0x5aff('0x2e')](_0x35ee9f)[_0x5aff('0x2f')]();};}function respondWithResult(_0x239416,_0x39bc5e){_0x39bc5e=_0x39bc5e||0xc8;return function(_0x324432){if(_0x324432){return _0x239416['status'](_0x39bc5e)['json'](_0x324432);}};}function respondWithFilteredResult(_0x2bc3f3,_0xbfc9f8){return function(_0x4f99a0){if(_0x4f99a0){var _0x18022e=typeof _0xbfc9f8[_0x5aff('0x30')]===_0x5aff('0x31')&&typeof _0xbfc9f8['limit']===_0x5aff('0x31');var _0x1d2af6=_0x4f99a0[_0x5aff('0x32')];var _0x1a2471=_0x18022e?0x0:_0xbfc9f8[_0x5aff('0x30')];var _0x17d9be=_0x18022e?_0x4f99a0[_0x5aff('0x32')]:_0xbfc9f8[_0x5aff('0x30')]+_0xbfc9f8['limit'];var _0x4b61ea;if(_0x17d9be>=_0x1d2af6){_0x17d9be=_0x1d2af6;_0x4b61ea=0xc8;}else{_0x4b61ea=0xce;}_0x2bc3f3[_0x5aff('0x2e')](_0x4b61ea);return _0x2bc3f3[_0x5aff('0x33')](_0x5aff('0x34'),_0x1a2471+'-'+_0x17d9be+'/'+_0x1d2af6)[_0x5aff('0x35')](_0x4f99a0);}return null;};}function patchUpdates(_0xf2c13c){return function(_0x5f02b1){try{jsonpatch[_0x5aff('0x36')](_0x5f02b1,_0xf2c13c,!![]);}catch(_0xf3fe4f){return BPromise[_0x5aff('0x37')](_0xf3fe4f);}return _0x5f02b1[_0x5aff('0x38')]();};}function saveUpdates(_0x9d2de6,_0x34c7bc){return function(_0x403849){if(_0x403849){return _0x403849[_0x5aff('0x39')](_0x9d2de6)['then'](function(_0xfb7591){return _0xfb7591;});}return null;};}function removeEntity(_0x3c50ea,_0x3f0829){return function(_0x5c7686){if(_0x5c7686){return _0x5c7686['destroy']()['then'](function(){_0x3c50ea[_0x5aff('0x2e')](0xcc)[_0x5aff('0x2f')]();});}};}function handleEntityNotFound(_0x1d4738,_0x2e7d99){return function(_0xe50557){if(!_0xe50557){_0x1d4738[_0x5aff('0x2d')](0x194);}return _0xe50557;};}function handleError(_0x92de64,_0x264b0a){_0x264b0a=_0x264b0a||0x1f4;return function(_0x3f2ee){logger[_0x5aff('0x27')](_0x3f2ee[_0x5aff('0x3a')]);if(_0x3f2ee[_0x5aff('0x3b')]){delete _0x3f2ee['name'];}_0x92de64[_0x5aff('0x2e')](_0x264b0a)[_0x5aff('0x3c')](_0x3f2ee);};}exports[_0x5aff('0x3d')]=function(_0x3cf3eb,_0x45e0a4){var _0x168bf0={},_0x506cde={},_0xfde434={'count':0x0,'rows':[]};var _0x45ed88=_['map'](db['FaxMessage'][_0x5aff('0x3e')],function(_0x35451d){return{'name':_0x35451d['fieldName'],'type':_0x35451d[_0x5aff('0x3f')][_0x5aff('0x40')]};});_0x506cde[_0x5aff('0x41')]=_[_0x5aff('0x42')](_0x45ed88,'name');_0x506cde[_0x5aff('0x43')]=_['keys'](_0x3cf3eb['query']);_0x506cde[_0x5aff('0x44')]=_[_0x5aff('0x45')](_0x506cde[_0x5aff('0x41')],_0x506cde[_0x5aff('0x43')]);_0x168bf0[_0x5aff('0x46')]=_[_0x5aff('0x45')](_0x506cde[_0x5aff('0x41')],qs[_0x5aff('0x47')](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x47')]));_0x168bf0['attributes']=_0x168bf0[_0x5aff('0x46')]['length']?_0x168bf0['attributes']:_0x506cde['model'];if(!_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x48')](_0x5aff('0x49'))){_0x168bf0[_0x5aff('0x4a')]=qs[_0x5aff('0x4a')](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x4a')]);_0x168bf0[_0x5aff('0x30')]=qs[_0x5aff('0x30')](_0x3cf3eb[_0x5aff('0x43')]['offset']);}_0x168bf0['order']=qs['sort'](_0x3cf3eb[_0x5aff('0x43')][_0x5aff('0x4b')]);_0x168bf0['where']=qs[_0x5aff('0x44')](_[_0x5aff('0x4c')](_0x3cf3eb['query'],_0x506cde['filters']),_0x45ed88);if(_0x3cf3eb[_0x5aff('0x43')]['filter']){_0x168bf0['where']=_[_0x5aff('0x4d')](_0x168bf0[_0x5aff('0x4e')],{'$or':_[_0x5aff('0x42')](_0x45ed88,function(_0x52ff54){if(_0x52ff54['type']!==_0x5aff('0x4f')){var _0x3a9982={};_0x3a9982[_0x52ff54[_0x5aff('0x3b')]]={'$like':'%'+_0x3cf3eb['query']['filter']+'%'};return _0x3a9982;}})});}_0x168bf0=_[_0x5aff('0x4d')]({},_0x168bf0,_0x3cf3eb[_0x5aff('0x50')]);var _0x41acc0={'where':_0x168bf0[_0x5aff('0x4e')]};return db['FaxMessage'][_0x5aff('0x32')](_0x41acc0)[_0x5aff('0x22')](function(_0x422ed9){_0xfde434[_0x5aff('0x32')]=_0x422ed9;if(_0x3cf3eb['query'][_0x5aff('0x51')]){_0x168bf0[_0x5aff('0x52')]=[{'all':!![]}];}return db[_0x5aff('0x53')]['findAll'](_0x168bf0);})['then'](function(_0x1dec0b){_0xfde434['rows']=_0x1dec0b;return _0xfde434;})['then'](respondWithFilteredResult(_0x45e0a4,_0x168bf0))['catch'](handleError(_0x45e0a4,null));};exports['show']=function(_0x20e32c,_0x2ac198){var _0x5cdc76={'raw':!![],'where':{'id':_0x20e32c[_0x5aff('0x54')]['id']}},_0x5f4f57={};_0x5f4f57[_0x5aff('0x41')]=_[_0x5aff('0x55')](db['FaxMessage'][_0x5aff('0x3e')]);_0x5f4f57[_0x5aff('0x43')]=_[_0x5aff('0x55')](_0x20e32c[_0x5aff('0x43')]);_0x5f4f57[_0x5aff('0x44')]=_['intersection'](_0x5f4f57[_0x5aff('0x41')],_0x5f4f57[_0x5aff('0x43')]);_0x5cdc76['attributes']=_['intersection'](_0x5f4f57['model'],qs[_0x5aff('0x47')](_0x20e32c[_0x5aff('0x43')]['fields']));_0x5cdc76[_0x5aff('0x46')]=_0x5cdc76['attributes'][_0x5aff('0x56')]?_0x5cdc76[_0x5aff('0x46')]:_0x5f4f57[_0x5aff('0x41')];if(_0x20e32c[_0x5aff('0x43')][_0x5aff('0x51')]){_0x5cdc76['include']=[{'all':!![]}];}_0x5cdc76=_[_0x5aff('0x4d')]({},_0x5cdc76,_0x20e32c['options']);return db[_0x5aff('0x53')][_0x5aff('0x57')](_0x5cdc76)[_0x5aff('0x22')](handleEntityNotFound(_0x2ac198,null))['then'](respondWithResult(_0x2ac198,null))[_0x5aff('0x2c')](handleError(_0x2ac198,null));};exports[_0x5aff('0x39')]=function(_0x4ccdbb,_0x26aff4){if(_0x4ccdbb[_0x5aff('0x58')]['id']){delete _0x4ccdbb['body']['id'];}return db[_0x5aff('0x53')]['find']({'where':{'id':_0x4ccdbb['params']['id']}})[_0x5aff('0x22')](handleEntityNotFound(_0x26aff4,null))[_0x5aff('0x22')](saveUpdates(_0x4ccdbb['body'],null))['then'](respondWithResult(_0x26aff4,null))[_0x5aff('0x2c')](handleError(_0x26aff4,null));};exports[_0x5aff('0x59')]=function(_0x54294f,_0x4a57e3){return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x54294f[_0x5aff('0x54')]['id']}})[_0x5aff('0x22')](handleEntityNotFound(_0x4a57e3,null))[_0x5aff('0x22')](removeEntity(_0x4a57e3,null))[_0x5aff('0x2c')](handleError(_0x4a57e3,null));};exports[_0x5aff('0x5a')]=function(_0x34064a,_0x5c6b86){return db['FaxMessage'][_0x5aff('0x5a')]()[_0x5aff('0x22')](respondWithResult(_0x5c6b86,null))[_0x5aff('0x2c')](handleError(_0x5c6b86,null));};var interaction_log=require(_0x5aff('0x12'))(_0x5aff('0x5b'));exports[_0x5aff('0x5c')]=function(_0xc18139,_0x2ce40f,_0x5cdcbf){var _0x465410={'agent':{},'channel':_0x5aff('0x5d')};if(_0xc18139['body']['id']){delete _0xc18139[_0x5aff('0x58')]['id'];}_0xc18139[_0x5aff('0x58')][_0x5aff('0x5e')]=!![];_0xc18139[_0x5aff('0x58')][_0x5aff('0x5f')]=moment()[_0x5aff('0x60')]('YYYY-MM-DD\x20HH:mm:ss');_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')]=_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')]||_0xc18139[_0x5aff('0x62')]['id'];_0x465410[_0x5aff('0x63')]['id']=_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')];return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0xc18139[_0x5aff('0x54')]['id'],'UserId':null}})[_0x5aff('0x22')](handleEntityNotFound(_0x2ce40f,null))[_0x5aff('0x22')](saveUpdates(_0xc18139['body'],null))['then'](function(_0x2f1256){if(_0x2f1256){_0x465410[_0x5aff('0x29')]=_0x2f1256[_0x5aff('0x64')]({'plain':!![]});return db[_0x5aff('0x65')][_0x5aff('0x57')]({'where':{'id':_0x2f1256[_0x5aff('0x66')]}});}return null;})[_0x5aff('0x22')](handleEntityNotFound(_0x2ce40f,null))[_0x5aff('0x22')](function(_0x194846){if(_0x194846){return _0x194846[_0x5aff('0x39')]({'UserId':_0xc18139['body'][_0x5aff('0x61')],'read1stAt':_['isNil'](_0x194846[_0x5aff('0x67')])?moment()[_0x5aff('0x60')](_0x5aff('0x68')):undefined});}return null;})['then'](function(_0x360dff){if(_0x360dff){_0x465410[_0x5aff('0x69')]=_0x360dff[_0x5aff('0x64')]({'plain':!![]});interaction_log[_0x5aff('0x2a')]('[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0xc18139['user']['id'],_0xc18139[_0x5aff('0x62')][_0x5aff('0x3b')],_0xc18139[_0x5aff('0x62')][_0x5aff('0x6a')],_0x465410['interaction']['id'],_0xc18139[_0x5aff('0x58')]?JSON[_0x5aff('0x26')](_0xc18139[_0x5aff('0x58')]):_0x5aff('0x6b'));return respondWithRpcPromise(_0x5aff('0x6c'),_0x5aff('0x6d'),_0x465410);}return null;})['then'](function(_0x532b6c){var _0x3346b5=_0x5aff('0x6e')+_0x532b6c['message'][_0x5aff('0x6f')];return db[_0x5aff('0x70')][_0x5aff('0x43')](_0x3346b5,{'type':db[_0x5aff('0x71')][_0x5aff('0x72')][_0x5aff('0x73')],'raw':!![]})[_0x5aff('0x22')](function(_0x4585f4){return _0x4585f4;});})[_0x5aff('0x22')](function(_0x3d35a0){if(_0x3d35a0){_0x465410[_0x5aff('0x29')][_0x5aff('0x74')]=_0x3d35a0[0x0];if(!_0xc18139[_0x5aff('0x58')][_0x5aff('0x61')])return;return db[_0x5aff('0x75')][_0x5aff('0x57')]({'where':{'id':_0xc18139[_0x5aff('0x58')]['UserId'],'role':'agent'},'attributes':['id',_0x5aff('0x3b'),_0x5aff('0x76'),_0x5aff('0x77'),_0x5aff('0x78')],'raw':!![]});}return null;})['then'](function(_0x5c1867){if(!_0x5c1867)return null;_0x465410['message'][_0x5aff('0x63')]=_0x5c1867;return _0x465410;})[_0x5aff('0x22')](function(_0x5e995e){if(_0x5e995e){if(_0xc18139[_0x5aff('0x58')][_0x5aff('0x79')]){_0x465410[_0x5aff('0x29')]['interface']=util[_0x5aff('0x60')](_0x5aff('0x7a'),_0xc18139[_0x5aff('0x62')][_0x5aff('0x3b')]);_0x465410[_0x5aff('0x29')]['channel']=_0x465410[_0x5aff('0x7b')];_0x465410['message']['motionChannel']=_0x465410['channel'];_0x465410['message'][_0x5aff('0x7c')]=_0x5aff('0x5c');return respondWithRpcPromise(_0x5aff('0x7d'),_0x5aff('0x7d'),{'event':'acceptmessage','message':_0x465410[_0x5aff('0x29')]},client9002)[_0x5aff('0x22')](function(){return _0x465410;});}return _0x465410;}return null;})[_0x5aff('0x22')](respondWithResult(_0x2ce40f,null))[_0x5aff('0x2c')](handleError(_0x2ce40f,null));};var interaction_log=require('../../config/logger')('fax-interactions');exports[_0x5aff('0x37')]=function(_0x4b459a,_0x486da9,_0x70768f){var _0x267622={'agent':{},'channel':_0x5aff('0x5d')};if(_0x4b459a[_0x5aff('0x58')]['id']){delete _0x4b459a[_0x5aff('0x58')]['id'];}_0x4b459a['body'][_0x5aff('0x61')]=_0x4b459a['body'][_0x5aff('0x61')]||_0x4b459a['user']['id'];_0x267622[_0x5aff('0x63')]['id']=_0x4b459a[_0x5aff('0x58')][_0x5aff('0x61')];return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x4b459a[_0x5aff('0x54')]['id'],'UserId':null}})[_0x5aff('0x22')](handleEntityNotFound(_0x486da9,null))[_0x5aff('0x22')](function(_0x4d6023){if(_0x4d6023){_0x267622[_0x5aff('0x29')]=_0x4d6023[_0x5aff('0x64')]({'plain':!![]});return db[_0x5aff('0x65')]['find']({'where':{'id':_0x4d6023['FaxInteractionId']}});}return null;})[_0x5aff('0x22')](handleEntityNotFound(_0x486da9,null))[_0x5aff('0x22')](function(_0x2ca2c9){if(_0x2ca2c9){_0x267622[_0x5aff('0x69')]=_0x2ca2c9[_0x5aff('0x64')]({'plain':!![]});interaction_log['info'](_0x5aff('0x7e'),_0x4b459a['user']['id'],_0x4b459a['user'][_0x5aff('0x3b')],_0x4b459a[_0x5aff('0x62')][_0x5aff('0x6a')],_0x267622[_0x5aff('0x69')]['id'],_0x4b459a[_0x5aff('0x58')]?JSON['stringify'](_0x4b459a[_0x5aff('0x58')]):_0x5aff('0x6b'));return respondWithRpcPromise(_0x5aff('0x7f'),_0x5aff('0x80'),_0x267622);}return null;})[_0x5aff('0x22')](function(_0x5b1ee1){var _0x17bea2='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b1ee1[_0x5aff('0x29')]['ContactId'];return db['sequelize'][_0x5aff('0x43')](_0x17bea2,{'type':db[_0x5aff('0x71')]['QueryTypes']['SELECT'],'raw':!![]})['then'](function(_0x51b9d2){return _0x51b9d2;});})[_0x5aff('0x22')](function(_0x8a4c8f){if(_0x8a4c8f){_0x267622[_0x5aff('0x29')][_0x5aff('0x74')]=_0x8a4c8f[0x0];if(!_0x4b459a[_0x5aff('0x58')]['UserId'])return;return db[_0x5aff('0x75')][_0x5aff('0x57')]({'where':{'id':_0x4b459a[_0x5aff('0x58')]['UserId'],'role':'agent'},'attributes':['id','name',_0x5aff('0x76'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x2dd817){if(!_0x2dd817)return null;_0x267622[_0x5aff('0x29')][_0x5aff('0x63')]=_0x2dd817;return _0x267622;})['then'](function(_0x48fab9){if(_0x48fab9){_0x48fab9[_0x5aff('0x29')][_0x5aff('0x81')]=util[_0x5aff('0x60')](_0x5aff('0x7a'),_0x4b459a[_0x5aff('0x62')][_0x5aff('0x3b')]);_0x48fab9[_0x5aff('0x29')][_0x5aff('0x7b')]=_0x267622[_0x5aff('0x7b')];_0x48fab9[_0x5aff('0x29')][_0x5aff('0x82')]=_0x267622[_0x5aff('0x7b')];_0x48fab9[_0x5aff('0x29')][_0x5aff('0x7c')]=_0x5aff('0x37');respondWithRpcPromise(_0x5aff('0x7d'),_0x5aff('0x7d'),{'event':_0x5aff('0x83'),'message':_0x48fab9[_0x5aff('0x29')]},client9002);return _0x267622;}return null;})['then'](respondWithResult(_0x486da9,null))['catch'](handleError(_0x486da9,null));};exports['create']=function(_0x9dfda7,_0x32f947){var _0x15140f;return db['FaxMessage'][_0x5aff('0x84')](_0x9dfda7[_0x5aff('0x58')],{})[_0x5aff('0x22')](function(_0x3808fb){_0x15140f=_0x3808fb;return db[_0x5aff('0x85')][_0x5aff('0x86')]({'where':{'id':_0x15140f[_0x5aff('0x6f')]}});})[_0x5aff('0x22')](function(_0x4a1b68){if(_['isNil'](_0x4a1b68)){return;}else{_0x15140f[_0x5aff('0x5d')]=_0x4a1b68[_0x5aff('0x5d')];return db[_0x5aff('0x87')]['findOne']({'where':{'id':_0x15140f[_0x5aff('0x88')]}});}})['then'](function(_0x454989){return respondWithRpcPromise('SendFax',_0x5aff('0x89'),{'FaxAccountId':_['isNil'](_0x9dfda7['body'])?undefined:_0x9dfda7['body']['FaxAccountId'],'path':_[_0x5aff('0x8a')](_0x454989)?undefined:util['format']('/var/opt/motion2/server/files/attachments/%s',_0x454989['basename']),'fax':_['isNil'](_0x15140f['fax'])?undefined:_0x15140f[_0x5aff('0x5d')],'AttachmentId':_0x15140f[_0x5aff('0x88')]},client9002);})[_0x5aff('0x22')](respondWithResult(_0x32f947,0xc9))[_0x5aff('0x2c')](handleError(_0x32f947,null));};exports[_0x5aff('0x8b')]=function(_0x5606db,_0x412fd9){var _0x116ae2=path[_0x5aff('0x8c')](config[_0x5aff('0x8d')],_0x5aff('0x8e'),_0x5aff('0x8f'),_0x5aff('0x90'));return db[_0x5aff('0x53')][_0x5aff('0x57')]({'where':{'id':_0x5606db['params']['id']},'include':[{'model':db[_0x5aff('0x87')],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x412fd9,null))[_0x5aff('0x22')](function(_0x341947){if(_0x341947){return _0x412fd9[_0x5aff('0x8b')](path[_0x5aff('0x8c')](_0x116ae2,_0x341947[_0x5aff('0x87')][_0x5aff('0x91')]));}})['catch'](handleError(_0x412fd9,null));};
\ No newline at end of file
index 2cbbbc0..fa7284b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e65=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','FaxMessage','setMaxListeners'];(function(_0xdd27d1,_0xb6f0da){var _0x58220e=function(_0x52bbff){while(--_0x52bbff){_0xdd27d1['push'](_0xdd27d1['shift']());}};_0x58220e(++_0xb6f0da);}(_0x2e65,0x193));var _0x52e6=function(_0x86b219,_0x43038f){_0x86b219=_0x86b219-0x0;var _0x1f320c=_0x2e65[_0x86b219];return _0x1f320c;};'use strict';var EventEmitter=require(_0x52e6('0x0'));var FaxMessage=require(_0x52e6('0x1'))['db'][_0x52e6('0x2')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0x52e6('0x3')](0x0);var events={'afterCreate':_0x52e6('0x4'),'afterUpdate':_0x52e6('0x5'),'afterDestroy':_0x52e6('0x6')};function emitEvent(_0x74e40d){return function(_0x47912f,_0x383919,_0x12ee44){FaxMessageEvents[_0x52e6('0x7')](_0x74e40d+':'+_0x47912f['id'],_0x47912f);FaxMessageEvents[_0x52e6('0x7')](_0x74e40d,_0x47912f);_0x12ee44(null);};}for(var e in events){if(events[_0x52e6('0x8')](e)){var event=events[e];FaxMessage[_0x52e6('0x9')](e,emitEvent(event));}}module[_0x52e6('0xa')]=FaxMessageEvents;
\ No newline at end of file
+var _0x39e6=['update','remove','emit','hasOwnProperty','hook','exports','events','FaxMessage'];(function(_0x4b9d59,_0xb7c319){var _0x28adad=function(_0xeb248a){while(--_0xeb248a){_0x4b9d59['push'](_0x4b9d59['shift']());}};_0x28adad(++_0xb7c319);}(_0x39e6,0x9e));var _0x639e=function(_0x2b2758,_0x2296b3){_0x2b2758=_0x2b2758-0x0;var _0x4353ba=_0x39e6[_0x2b2758];return _0x4353ba;};'use strict';var EventEmitter=require(_0x639e('0x0'));var FaxMessage=require('../../mysqldb')['db'][_0x639e('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x639e('0x2'),'afterDestroy':_0x639e('0x3')};function emitEvent(_0x529394){return function(_0x467229,_0x207d6a,_0x199e72){FaxMessageEvents[_0x639e('0x4')](_0x529394+':'+_0x467229['id'],_0x467229);FaxMessageEvents[_0x639e('0x4')](_0x529394,_0x467229);_0x199e72(null);};}for(var e in events){if(events[_0x639e('0x5')](e)){var event=events[e];FaxMessage[_0x639e('0x6')](e,emitEvent(event));}}module[_0x639e('0x7')]=FaxMessageEvents;
\ No newline at end of file
index f0a54ef..a9b25ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa729=['./faxMessage.attributes','exports','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','get','direction','toLowerCase','out','secret','UserId','findOne','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0xa729,0x19b));var _0x9a72=function(_0x4992be,_0x555abf){_0x4992be=_0x4992be-0x0;var _0x39e44e=_0xa729[_0x4992be];return _0x39e44e;};'use strict';var _=require(_0x9a72('0x0'));var util=require(_0x9a72('0x1'));var logger=require(_0x9a72('0x2'))(_0x9a72('0x3'));var moment=require(_0x9a72('0x4'));var BPromise=require('bluebird');var rp=require(_0x9a72('0x5'));var fs=require('fs');var path=require(_0x9a72('0x6'));var rimraf=require(_0x9a72('0x7'));var config=require(_0x9a72('0x8'));var attributes=require(_0x9a72('0x9'));module[_0x9a72('0xa')]=function(_0x4a08c7,_0x4aa2d5){return _0x4a08c7[_0x9a72('0xb')](_0x9a72('0xc'),attributes,{'tableName':_0x9a72('0xd'),'paranoid':![],'indexes':[{'name':_0x9a72('0xe'),'fields':[_0x9a72('0xf')],'type':_0x9a72('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0xf76c48,_0x23462b,_0x27da5){var _0x2f7d22=_0x4a08c7['models'];var _0x45b1fd=_0xf76c48[_0x9a72('0x11')]({'plain':!![]});if(_0x45b1fd[_0x9a72('0x12')]['toLowerCase']()==='in'||_0x45b1fd['direction'][_0x9a72('0x13')]()===_0x9a72('0x14')&&!_0x45b1fd[_0x9a72('0x15')]&&!_['isNil'](_0x45b1fd[_0x9a72('0x16')])){_0x2f7d22['FaxInteraction'][_0x9a72('0x17')]({'where':{'id':_0x45b1fd['FaxInteractionId']}})[_0x9a72('0x18')](function(_0x137dd0){if(_0x137dd0){_0x137dd0[_0x9a72('0x19')]({'lastMsgAt':_0x45b1fd['createdAt'],'lastMsgDirection':_0x45b1fd[_0x9a72('0x12')][_0x9a72('0x13')]()});}})[_0x9a72('0x1a')](function(_0x125c4a){console[_0x9a72('0x1b')](_0x125c4a);});}_0x27da5();}},'charset':_0x9a72('0x1c'),'collate':_0x9a72('0x1d')});};
\ No newline at end of file
+var _0x8af4=['get','direction','toLowerCase','secret','isNil','findOne','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','path','rimraf','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','body','FULLTEXT','models'];(function(_0x4ce239,_0x2a0d64){var _0x52d4e5=function(_0x1d8817){while(--_0x1d8817){_0x4ce239['push'](_0x4ce239['shift']());}};_0x52d4e5(++_0x2a0d64);}(_0x8af4,0x111));var _0x48af=function(_0x3fb05b,_0x473ea3){_0x3fb05b=_0x3fb05b-0x0;var _0x36c70b=_0x8af4[_0x3fb05b];return _0x36c70b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x48af('0x0'))('api');var moment=require(_0x48af('0x1'));var BPromise=require(_0x48af('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x48af('0x3'));var rimraf=require(_0x48af('0x4'));var config=require('../../config/environment');var attributes=require(_0x48af('0x5'));module[_0x48af('0x6')]=function(_0x3a3cff,_0x3e9619){return _0x3a3cff[_0x48af('0x7')](_0x48af('0x8'),attributes,{'tableName':_0x48af('0x9'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x48af('0xa')],'type':_0x48af('0xb')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x12b9ea,_0x318f58,_0x4eaa39){var _0x31301f=_0x3a3cff[_0x48af('0xc')];var _0x428786=_0x12b9ea[_0x48af('0xd')]({'plain':!![]});if(_0x428786[_0x48af('0xe')]['toLowerCase']()==='in'||_0x428786['direction'][_0x48af('0xf')]()==='out'&&!_0x428786[_0x48af('0x10')]&&!_[_0x48af('0x11')](_0x428786['UserId'])){_0x31301f['FaxInteraction'][_0x48af('0x12')]({'where':{'id':_0x428786[_0x48af('0x13')]}})[_0x48af('0x14')](function(_0x42524a){if(_0x42524a){_0x42524a[_0x48af('0x15')]({'lastMsgAt':_0x428786[_0x48af('0x16')],'lastMsgDirection':_0x428786[_0x48af('0xe')]['toLowerCase']()});}})[_0x48af('0x17')](function(_0x51d17f){console[_0x48af('0x18')](_0x51d17f);});}_0x4eaa39();}},'charset':'utf8mb4','collate':_0x48af('0x19')});};
\ No newline at end of file
index 7a4f4f2..7db306d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54ef=['../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','defaults','localhost','./faxMessage.socket','request','then','info','request\x20sent','stringify','error','FaxMessage,\x20%s,\x20%s','message','result','catch','FaxMessage','create','body','options','raw','CreateFaxMessage','UpdateFaxMessage','where','attributes','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb'];(function(_0x2e8d63,_0x4d6f2a){var _0x114beb=function(_0x5a8b3f){while(--_0x5a8b3f){_0x2e8d63['push'](_0x2e8d63['shift']());}};_0x114beb(++_0x4d6f2a);}(_0x54ef,0x112));var _0xf54e=function(_0x3b89b1,_0x1931b5){_0x3b89b1=_0x3b89b1-0x0;var _0x4186db=_0x54ef[_0x3b89b1];return _0x4186db;};'use strict';var _=require(_0xf54e('0x0'));var util=require(_0xf54e('0x1'));var moment=require(_0xf54e('0x2'));var BPromise=require('bluebird');var rs=require(_0xf54e('0x3'));var fs=require('fs');var Redis=require(_0xf54e('0x4'));var db=require(_0xf54e('0x5'))['db'];var utils=require(_0xf54e('0x6'));var logger=require(_0xf54e('0x7'))(_0xf54e('0x8'));var config=require(_0xf54e('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xf54e('0xa')]({'port':0x232a});config[_0xf54e('0xb')]=_[_0xf54e('0xc')](config['redis'],{'host':_0xf54e('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf54e('0xb')]));require(_0xf54e('0xe'))['register'](socket);function respondWithRpcPromise(_0x26fc3e,_0xefa1c0,_0x6b9e61){return new BPromise(function(_0x3ecfb3,_0x5f232a){return client[_0xf54e('0xf')](_0x26fc3e,_0x6b9e61)[_0xf54e('0x10')](function(_0x143d66){logger[_0xf54e('0x11')]('FaxMessage,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'));logger['debug']('FaxMessage,\x20%s,\x20%s,\x20%s',_0xefa1c0,_0xf54e('0x12'),JSON[_0xf54e('0x13')](_0x143d66));if(_0x143d66[_0xf54e('0x14')]){if(_0x143d66[_0xf54e('0x14')]['code']===0x1f4){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);return _0x5f232a(_0x143d66['error'][_0xf54e('0x16')]);}logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x143d66['error']['message']);return _0x3ecfb3(_0x143d66[_0xf54e('0x14')][_0xf54e('0x16')]);}else{logger[_0xf54e('0x11')](_0xf54e('0x15'),_0xefa1c0,_0xf54e('0x12'));_0x3ecfb3(_0x143d66[_0xf54e('0x17')][_0xf54e('0x16')]);}})[_0xf54e('0x18')](function(_0x1dcc04){logger[_0xf54e('0x14')](_0xf54e('0x15'),_0xefa1c0,_0x1dcc04);_0x5f232a(_0x1dcc04);});});}exports['CreateFaxMessage']=function(_0x48a7e1){var _0x23e14=this;return new Promise(function(_0x59f338,_0x3e1556){return db[_0xf54e('0x19')][_0xf54e('0x1a')](_0x48a7e1[_0xf54e('0x1b')],{'raw':_0x48a7e1[_0xf54e('0x1c')]?_0x48a7e1[_0xf54e('0x1c')][_0xf54e('0x1d')]===undefined?!![]:![]:!![]})[_0xf54e('0x10')](function(_0x3c0169){logger[_0xf54e('0x11')](_0xf54e('0x1e'),_0x48a7e1);logger['debug'](_0xf54e('0x1e'),_0x48a7e1,JSON['stringify'](_0x3c0169));_0x59f338(_0x3c0169);})[_0xf54e('0x18')](function(_0x272df6){logger[_0xf54e('0x14')](_0xf54e('0x1e'),_0x272df6[_0xf54e('0x16')],_0x48a7e1);_0x3e1556(_0x23e14[_0xf54e('0x14')](0x1f4,_0x272df6[_0xf54e('0x16')]));});});};exports[_0xf54e('0x1f')]=function(_0x2342a9){var _0x33457f=this;return new Promise(function(_0xf6cdd7,_0x39c0ae){return db[_0xf54e('0x19')]['update'](_0x2342a9[_0xf54e('0x1b')],{'raw':_0x2342a9['options']?_0x2342a9[_0xf54e('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x20')]||null:null,'attributes':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9[_0xf54e('0x1c')][_0xf54e('0x21')]||null:null,'limit':_0x2342a9[_0xf54e('0x1c')]?_0x2342a9['options']['limit']||null:null})[_0xf54e('0x10')](function(_0x258d29){logger[_0xf54e('0x11')](_0xf54e('0x1f'),_0x2342a9);logger[_0xf54e('0x22')](_0xf54e('0x1f'),_0x2342a9,JSON[_0xf54e('0x13')](_0x258d29));_0xf6cdd7(_0x258d29);})[_0xf54e('0x18')](function(_0x3ae704){logger[_0xf54e('0x14')]('UpdateFaxMessage',_0x3ae704['message'],_0x2342a9);_0x39c0ae(_0x33457f[_0xf54e('0x14')](0x1f4,_0x3ae704[_0xf54e('0x16')]));});});};
\ No newline at end of file
+var _0x55e0=['moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./faxMessage.socket','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateFaxMessage','FaxMessage','create','body','options','raw','then','UpdateFaxMessage','update','where','attributes','limit','lodash','util'];(function(_0x76364b,_0xc07164){var _0x2589cf=function(_0x132869){while(--_0x132869){_0x76364b['push'](_0x76364b['shift']());}};_0x2589cf(++_0xc07164);}(_0x55e0,0xdc));var _0x055e=function(_0x28f228,_0x182029){_0x28f228=_0x28f228-0x0;var _0x2ea11a=_0x55e0[_0x28f228];return _0x2ea11a;};'use strict';var _=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var moment=require(_0x055e('0x2'));var BPromise=require(_0x055e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x055e('0x4'))['db'];var utils=require(_0x055e('0x5'));var logger=require(_0x055e('0x6'))(_0x055e('0x7'));var config=require(_0x055e('0x8'));var jayson=require(_0x055e('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x055e('0xa')]=_['defaults'](config[_0x055e('0xa')],{'host':_0x055e('0xb'),'port':0x18eb});var socket=require(_0x055e('0xc'))(new Redis(config[_0x055e('0xa')]));require(_0x055e('0xd'))['register'](socket);function respondWithRpcPromise(_0x40779c,_0xd67814,_0xb816c){return new BPromise(function(_0xa0d384,_0x238068){return client['request'](_0x40779c,_0xb816c)['then'](function(_0x187cce){logger['info'](_0x055e('0xe'),_0xd67814,_0x055e('0xf'));logger[_0x055e('0x10')](_0x055e('0x11'),_0xd67814,_0x055e('0xf'),JSON[_0x055e('0x12')](_0x187cce));if(_0x187cce[_0x055e('0x13')]){if(_0x187cce['error'][_0x055e('0x14')]===0x1f4){logger[_0x055e('0x13')](_0x055e('0xe'),_0xd67814,_0x187cce[_0x055e('0x13')][_0x055e('0x15')]);return _0x238068(_0x187cce['error'][_0x055e('0x15')]);}logger[_0x055e('0x13')](_0x055e('0xe'),_0xd67814,_0x187cce['error'][_0x055e('0x15')]);return _0xa0d384(_0x187cce[_0x055e('0x13')][_0x055e('0x15')]);}else{logger[_0x055e('0x16')](_0x055e('0xe'),_0xd67814,'request\x20sent');_0xa0d384(_0x187cce[_0x055e('0x17')][_0x055e('0x15')]);}})[_0x055e('0x18')](function(_0x2ed6fb){logger['error'](_0x055e('0xe'),_0xd67814,_0x2ed6fb);_0x238068(_0x2ed6fb);});});}exports[_0x055e('0x19')]=function(_0x58e44a){var _0xe2b7b5=this;return new Promise(function(_0x4412f9,_0x10258f){return db[_0x055e('0x1a')][_0x055e('0x1b')](_0x58e44a[_0x055e('0x1c')],{'raw':_0x58e44a['options']?_0x58e44a[_0x055e('0x1d')][_0x055e('0x1e')]===undefined?!![]:![]:!![]})[_0x055e('0x1f')](function(_0x5930ff){logger[_0x055e('0x16')](_0x055e('0x19'),_0x58e44a);logger[_0x055e('0x10')](_0x055e('0x19'),_0x58e44a,JSON['stringify'](_0x5930ff));_0x4412f9(_0x5930ff);})[_0x055e('0x18')](function(_0x56c372){logger[_0x055e('0x13')](_0x055e('0x19'),_0x56c372[_0x055e('0x15')],_0x58e44a);_0x10258f(_0xe2b7b5[_0x055e('0x13')](0x1f4,_0x56c372[_0x055e('0x15')]));});});};exports[_0x055e('0x20')]=function(_0x58caf9){var _0x2fb49b=this;return new Promise(function(_0x1f90a9,_0x2a82f8){return db['FaxMessage'][_0x055e('0x21')](_0x58caf9[_0x055e('0x1c')],{'raw':_0x58caf9[_0x055e('0x1d')]?_0x58caf9[_0x055e('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x58caf9[_0x055e('0x1d')]?_0x58caf9['options'][_0x055e('0x22')]||null:null,'attributes':_0x58caf9[_0x055e('0x1d')]?_0x58caf9[_0x055e('0x1d')][_0x055e('0x23')]||null:null,'limit':_0x58caf9[_0x055e('0x1d')]?_0x58caf9['options'][_0x055e('0x24')]||null:null})[_0x055e('0x1f')](function(_0x293062){logger[_0x055e('0x16')](_0x055e('0x20'),_0x58caf9);logger[_0x055e('0x10')](_0x055e('0x20'),_0x58caf9,JSON[_0x055e('0x12')](_0x293062));_0x1f90a9(_0x293062);})['catch'](function(_0x26d1c2){logger[_0x055e('0x13')]('UpdateFaxMessage',_0x26d1c2[_0x055e('0x15')],_0x58caf9);_0x2a82f8(_0x2fb49b[_0x055e('0x13')](0x1f4,_0x26d1c2[_0x055e('0x15')]));});});};
\ No newline at end of file
index 7581065..ca688d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3588=['save','update','emit','register','length','faxMessage:','./faxMessage.events'];(function(_0x157f7e,_0x432daa){var _0xcfa55e=function(_0x2b97ca){while(--_0x2b97ca){_0x157f7e['push'](_0x157f7e['shift']());}};_0xcfa55e(++_0x432daa);}(_0x3588,0xe6));var _0x8358=function(_0x433c11,_0x509a13){_0x433c11=_0x433c11-0x0;var _0x1bbb06=_0x3588[_0x433c11];return _0x1bbb06;};'use strict';var FaxMessageEvents=require(_0x8358('0x0'));var events=[_0x8358('0x1'),'remove',_0x8358('0x2')];function createListener(_0x1090a0,_0x13d261){return function(_0x4cf20d){_0x13d261[_0x8358('0x3')](_0x1090a0,_0x4cf20d);};}function removeListener(_0x59bea5,_0x3b1041){return function(){FaxMessageEvents['removeListener'](_0x59bea5,_0x3b1041);};}exports[_0x8358('0x4')]=function(_0x109cd1){for(var _0x291b59=0x0,_0x21695c=events[_0x8358('0x5')];_0x291b59<_0x21695c;_0x291b59++){var _0x1f8a57=events[_0x291b59];var _0x4860b4=createListener(_0x8358('0x6')+_0x1f8a57,_0x109cd1);FaxMessageEvents['on'](_0x1f8a57,_0x4860b4);}};
\ No newline at end of file
+var _0x1d63=['update','removeListener','register','length','save','remove'];(function(_0x284e50,_0xb0e470){var _0x76ba8f=function(_0x48dcea){while(--_0x48dcea){_0x284e50['push'](_0x284e50['shift']());}};_0x76ba8f(++_0xb0e470);}(_0x1d63,0xbe));var _0x31d6=function(_0x2a6173,_0x1eaed5){_0x2a6173=_0x2a6173-0x0;var _0x3747ea=_0x1d63[_0x2a6173];return _0x3747ea;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=[_0x31d6('0x0'),_0x31d6('0x1'),_0x31d6('0x2')];function createListener(_0xeebbd1,_0x551a57){return function(_0x6b4539){_0x551a57['emit'](_0xeebbd1,_0x6b4539);};}function removeListener(_0x3c024a,_0x238188){return function(){FaxMessageEvents[_0x31d6('0x3')](_0x3c024a,_0x238188);};}exports[_0x31d6('0x4')]=function(_0x5eaab5){for(var _0x3fe210=0x0,_0x4cc975=events[_0x31d6('0x5')];_0x3fe210<_0x4cc975;_0x3fe210++){var _0x598e49=events[_0x3fe210];var _0x3f17f0=createListener('faxMessage:'+_0x598e49,_0x5eaab5);FaxMessageEvents['on'](_0x598e49,_0x3f17f0);}};
\ No newline at end of file
index 0cab259..1b40cca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa75b=['get','isAuthenticated','index','/describe','show','/:id/download','download','post','tracked','fax','faxmessage:create','create','put','/:id','/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller'];(function(_0x445bf3,_0x18e7a7){var _0x305d97=function(_0x303c24){while(--_0x303c24){_0x445bf3['push'](_0x445bf3['shift']());}};_0x305d97(++_0x18e7a7);}(_0xa75b,0x170));var _0xba75=function(_0x323157,_0x4ec29d){_0x323157=_0x323157-0x0;var _0x549768=_0xa75b[_0x323157];return _0x549768;};'use strict';var multer=require(_0xba75('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xba75('0x1'));var express=require(_0xba75('0x2'));var router=express[_0xba75('0x3')]();var fs_extra=require(_0xba75('0x4'));var auth=require(_0xba75('0x5'));var interaction=require(_0xba75('0x6'));var config=require(_0xba75('0x7'));var controller=require(_0xba75('0x8'));router[_0xba75('0x9')]('/',auth[_0xba75('0xa')](),controller[_0xba75('0xb')]);router[_0xba75('0x9')](_0xba75('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0xba75('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xba75('0xd')]);router['get'](_0xba75('0xe'),auth[_0xba75('0xa')](),controller[_0xba75('0xf')]);router[_0xba75('0x10')]('/',auth[_0xba75('0xa')](),interaction[_0xba75('0x11')](_0xba75('0x12'),_0xba75('0x13')),controller[_0xba75('0x14')]);router[_0xba75('0x15')](_0xba75('0x16'),auth[_0xba75('0xa')](),controller['update']);router['put'](_0xba75('0x17'),auth['isAuthenticated'](),controller[_0xba75('0x18')]);router[_0xba75('0x15')](_0xba75('0x19'),auth[_0xba75('0xa')](),controller['reject']);router[_0xba75('0x1a')](_0xba75('0x16'),auth[_0xba75('0xa')](),controller[_0xba75('0x1b')]);module[_0xba75('0x1c')]=router;
\ No newline at end of file
+var _0x593e=['../../components/auth/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','index','/describe','describe','show','download','post','fax','faxmessage:create','create','put','/:id','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x1fe8be,_0x5e7860){var _0x1449bb=function(_0x17b23e){while(--_0x17b23e){_0x1fe8be['push'](_0x1fe8be['shift']());}};_0x1449bb(++_0x5e7860);}(_0x593e,0xcb));var _0xe593=function(_0x83dbda,_0x3eae21){_0x83dbda=_0x83dbda-0x0;var _0x223395=_0x593e[_0x83dbda];return _0x223395;};'use strict';var multer=require(_0xe593('0x0'));var util=require(_0xe593('0x1'));var path=require(_0xe593('0x2'));var timeout=require(_0xe593('0x3'));var express=require(_0xe593('0x4'));var router=express[_0xe593('0x5')]();var fs_extra=require(_0xe593('0x6'));var auth=require(_0xe593('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe593('0x8'));var controller=require(_0xe593('0x9'));router[_0xe593('0xa')]('/',auth[_0xe593('0xb')](),controller[_0xe593('0xc')]);router[_0xe593('0xa')](_0xe593('0xd'),auth[_0xe593('0xb')](),controller[_0xe593('0xe')]);router[_0xe593('0xa')]('/:id',auth[_0xe593('0xb')](),controller[_0xe593('0xf')]);router[_0xe593('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0xe593('0x10')]);router[_0xe593('0x11')]('/',auth[_0xe593('0xb')](),interaction['tracked'](_0xe593('0x12'),_0xe593('0x13')),controller[_0xe593('0x14')]);router[_0xe593('0x15')](_0xe593('0x16'),auth[_0xe593('0xb')](),controller[_0xe593('0x17')]);router[_0xe593('0x15')](_0xe593('0x18'),auth[_0xe593('0xb')](),controller['accept']);router[_0xe593('0x15')](_0xe593('0x19'),auth['isAuthenticated'](),controller[_0xe593('0x1a')]);router[_0xe593('0x1b')]('/:id',auth[_0xe593('0xb')](),controller[_0xe593('0x1c')]);module[_0xe593('0x1d')]=router;
\ No newline at end of file
index c4126c2..06cbf47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6811=['roundrobin','sequelize','exports','STRING','name','INTEGER','ENUM','rrmemory','beepall'];(function(_0x12f4d5,_0xd944df){var _0x3446b8=function(_0x3d937a){while(--_0x3d937a){_0x12f4d5['push'](_0x12f4d5['shift']());}};_0x3446b8(++_0xd944df);}(_0x6811,0x121));var _0x1681=function(_0x602436,_0xbf433){_0x602436=_0x602436-0x0;var _0x504c33=_0x6811[_0x602436];return _0x504c33;};'use strict';var Sequelize=require(_0x1681('0x0'));module[_0x1681('0x1')]={'name':{'type':Sequelize[_0x1681('0x2')],'unique':_0x1681('0x3'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x1681('0x2')]},'timeout':{'type':Sequelize[_0x1681('0x4')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x1681('0x5')](_0x1681('0x6'),_0x1681('0x7'),_0x1681('0x8')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb35e=['ENUM','beepall','roundrobin','exports','STRING','name','INTEGER'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb35e,0x96));var _0xeb35=function(_0x2b6bad,_0x520ad2){_0x2b6bad=_0x2b6bad-0x0;var _0x4efc2b=_0xb35e[_0x2b6bad];return _0x4efc2b;};'use strict';var Sequelize=require('sequelize');module[_0xeb35('0x0')]={'name':{'type':Sequelize[_0xeb35('0x1')],'unique':_0xeb35('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xeb35('0x1')]},'timeout':{'type':Sequelize[_0xeb35('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xeb35('0x4')]('rrmemory',_0xeb35('0x5'),_0xeb35('0x6')),'allowNull':![]},'lastAgent':{'type':Sequelize[_0xeb35('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 529da6d..3ab73f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e87=['every','TeamId','union','compact','value','sequelize','isEmpty','removeAgents','emit','userFaxQueue:remove','addAgents','spread','isArray','getAgents','rimraf','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','fs-extra','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','redis','socket.io-emitter','./faxQueue.socket','register','sendStatus','status','end','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','destroy','get','FaxQueues','UserProfileResource','error','name','send','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','FaxQueue','includeAll','include','findAll','show','params','keys','rawAttributes','find','catch','body','role','user','UserProfileSection','userProfileId','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','UserFaxQueue','hasOwnProperty','FaxQueueId','User','UserId','agent','faxPause','updatedAt','rows','format','%s/%s','SIP','createdAt','getTeams','findOne','addTeams','ids','Team','Agents','online','interface','transaction','each','findOrCreate','forEach','userFaxQueue:save','removeTeams','field','tq.TeamId','from','team_has_fax_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT'];(function(_0x458fe1,_0xe673b1){var _0x49fa05=function(_0x3aba54){while(--_0x3aba54){_0x458fe1['push'](_0x458fe1['shift']());}};_0x49fa05(++_0xe673b1);}(_0x5e87,0x1ac));var _0x75e8=function(_0x302400,_0x3c66ad){_0x302400=_0x302400-0x0;var _0x26ed52=_0x5e87[_0x302400];return _0x26ed52;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x75e8('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x75e8('0x1'));var rp=require(_0x75e8('0x2'));var moment=require('moment');var BPromise=require(_0x75e8('0x3'));var Mustache=require(_0x75e8('0x4'));var util=require('util');var path=require('path');var sox=require(_0x75e8('0x5'));var csv=require(_0x75e8('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75e8('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x75e8('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x75e8('0x9'));var toCsv=require(_0x75e8('0x6'));var querystring=require(_0x75e8('0xa'));var Papa=require('papaparse');var Redis=require(_0x75e8('0xb'));var authService=require(_0x75e8('0xc'));var qs=require(_0x75e8('0xd'));var as=require(_0x75e8('0xe'));var hardwareService=require(_0x75e8('0xf'));var logger=require('../../config/logger')(_0x75e8('0x10'));var utils=require(_0x75e8('0x11'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x75e8('0x12')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x75e8('0x13'))(new Redis(config[_0x75e8('0x12')]));require(_0x75e8('0x14'))[_0x75e8('0x15')](socket);function respondWithStatusCode(_0x503f92,_0x410fef){_0x410fef=_0x410fef||0xcc;return function(_0x8a967e){if(_0x8a967e){return _0x503f92[_0x75e8('0x16')](_0x410fef);}return _0x503f92[_0x75e8('0x17')](_0x410fef)[_0x75e8('0x18')]();};}function respondWithResult(_0x2442e8,_0x1a5ea2){_0x1a5ea2=_0x1a5ea2||0xc8;return function(_0x239d88){if(_0x239d88){return _0x2442e8[_0x75e8('0x17')](_0x1a5ea2)['json'](_0x239d88);}};}function respondWithFilteredResult(_0x21fca5,_0xafe5a9){return function(_0x3b1528){if(_0x3b1528){var _0x57e5a5=typeof _0xafe5a9['offset']===_0x75e8('0x19')&&typeof _0xafe5a9[_0x75e8('0x1a')]===_0x75e8('0x19');var _0x868cc=_0x3b1528['count'];var _0x187f26=_0x57e5a5?0x0:_0xafe5a9[_0x75e8('0x1b')];var _0x2d02de=_0x57e5a5?_0x3b1528[_0x75e8('0x1c')]:_0xafe5a9[_0x75e8('0x1b')]+_0xafe5a9[_0x75e8('0x1a')];var _0x1c0fce;if(_0x2d02de>=_0x868cc){_0x2d02de=_0x868cc;_0x1c0fce=0xc8;}else{_0x1c0fce=0xce;}_0x21fca5['status'](_0x1c0fce);return _0x21fca5[_0x75e8('0x1d')](_0x75e8('0x1e'),_0x187f26+'-'+_0x2d02de+'/'+_0x868cc)['json'](_0x3b1528);}return null;};}function patchUpdates(_0x263f5f){return function(_0x16c413){try{jsonpatch[_0x75e8('0x1f')](_0x16c413,_0x263f5f,!![]);}catch(_0x2558da){return BPromise[_0x75e8('0x20')](_0x2558da);}return _0x16c413[_0x75e8('0x21')]();};}function saveUpdates(_0x508199,_0x3f49c2){return function(_0x37dcd3){if(_0x37dcd3){return _0x37dcd3[_0x75e8('0x22')](_0x508199)[_0x75e8('0x23')](function(_0x4ede8b){return _0x4ede8b;});}return null;};}function removeEntity(_0x4913e8,_0x67b2f4){return function(_0x2dde34){if(_0x2dde34){return _0x2dde34[_0x75e8('0x24')]()[_0x75e8('0x23')](function(){var _0x3d68b2=_0x2dde34[_0x75e8('0x25')]({'plain':!![]});var _0x137c61=_0x75e8('0x26');return db[_0x75e8('0x27')]['destroy']({'where':{'type':_0x137c61,'resourceId':_0x3d68b2['id']}})['then'](function(){return _0x2dde34;});})[_0x75e8('0x23')](function(){_0x4913e8[_0x75e8('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2ea446,_0x7748ff){return function(_0x44aada){if(!_0x44aada){_0x2ea446[_0x75e8('0x16')](0x194);}return _0x44aada;};}function handleError(_0x529dca,_0x27cf39){_0x27cf39=_0x27cf39||0x1f4;return function(_0x49e77c){logger[_0x75e8('0x28')](_0x49e77c['stack']);if(_0x49e77c['name']){delete _0x49e77c[_0x75e8('0x29')];}_0x529dca['status'](_0x27cf39)[_0x75e8('0x2a')](_0x49e77c);};}exports[_0x75e8('0x2b')]=function(_0x42dba6,_0x55f5a8){var _0x1afc30={},_0x5f51b6={},_0x58478f={'count':0x0,'rows':[]};var _0x329d34=_[_0x75e8('0x2c')](db['FaxQueue']['rawAttributes'],function(_0x2d8d43){return{'name':_0x2d8d43[_0x75e8('0x2d')],'type':_0x2d8d43[_0x75e8('0x2e')][_0x75e8('0x2f')]};});_0x5f51b6[_0x75e8('0x30')]=_[_0x75e8('0x2c')](_0x329d34,_0x75e8('0x29'));_0x5f51b6[_0x75e8('0x31')]=_['keys'](_0x42dba6[_0x75e8('0x31')]);_0x5f51b6[_0x75e8('0x32')]=_[_0x75e8('0x33')](_0x5f51b6[_0x75e8('0x30')],_0x5f51b6['query']);_0x1afc30[_0x75e8('0x34')]=_[_0x75e8('0x33')](_0x5f51b6['model'],qs[_0x75e8('0x35')](_0x42dba6[_0x75e8('0x31')]['fields']));_0x1afc30['attributes']=_0x1afc30[_0x75e8('0x34')][_0x75e8('0x36')]?_0x1afc30[_0x75e8('0x34')]:_0x5f51b6[_0x75e8('0x30')];if(!_0x42dba6[_0x75e8('0x31')]['hasOwnProperty'](_0x75e8('0x37'))){_0x1afc30[_0x75e8('0x1a')]=qs[_0x75e8('0x1a')](_0x42dba6[_0x75e8('0x31')][_0x75e8('0x1a')]);_0x1afc30[_0x75e8('0x1b')]=qs[_0x75e8('0x1b')](_0x42dba6[_0x75e8('0x31')][_0x75e8('0x1b')]);}_0x1afc30[_0x75e8('0x38')]=qs[_0x75e8('0x39')](_0x42dba6[_0x75e8('0x31')][_0x75e8('0x39')]);_0x1afc30[_0x75e8('0x3a')]=qs['filters'](_[_0x75e8('0x3b')](_0x42dba6[_0x75e8('0x31')],_0x5f51b6[_0x75e8('0x32')]),_0x329d34);if(_0x42dba6[_0x75e8('0x31')][_0x75e8('0x3c')]){_0x1afc30[_0x75e8('0x3a')]=_[_0x75e8('0x3d')](_0x1afc30[_0x75e8('0x3a')],{'$or':_[_0x75e8('0x2c')](_0x329d34,function(_0x2ebcf2){if(_0x2ebcf2[_0x75e8('0x2e')]!==_0x75e8('0x3e')){var _0xc4e117={};_0xc4e117[_0x2ebcf2[_0x75e8('0x29')]]={'$like':'%'+_0x42dba6[_0x75e8('0x31')][_0x75e8('0x3c')]+'%'};return _0xc4e117;}})});}_0x1afc30=_[_0x75e8('0x3d')]({},_0x1afc30,_0x42dba6[_0x75e8('0x3f')]);var _0x9e0292={'where':_0x1afc30[_0x75e8('0x3a')]};return db[_0x75e8('0x40')]['count'](_0x9e0292)[_0x75e8('0x23')](function(_0x3228b8){_0x58478f['count']=_0x3228b8;if(_0x42dba6[_0x75e8('0x31')][_0x75e8('0x41')]){_0x1afc30[_0x75e8('0x42')]=[{'all':!![]}];}return db[_0x75e8('0x40')][_0x75e8('0x43')](_0x1afc30);})[_0x75e8('0x23')](function(_0x44065f){_0x58478f['rows']=_0x44065f;return _0x58478f;})['then'](respondWithFilteredResult(_0x55f5a8,_0x1afc30))['catch'](handleError(_0x55f5a8,null));};exports[_0x75e8('0x44')]=function(_0x3aedb4,_0x41f70e){var _0x2c3568={'raw':!![],'where':{'id':_0x3aedb4[_0x75e8('0x45')]['id']}},_0xf8c5f8={};_0xf8c5f8[_0x75e8('0x30')]=_[_0x75e8('0x46')](db['FaxQueue'][_0x75e8('0x47')]);_0xf8c5f8[_0x75e8('0x31')]=_['keys'](_0x3aedb4[_0x75e8('0x31')]);_0xf8c5f8[_0x75e8('0x32')]=_['intersection'](_0xf8c5f8[_0x75e8('0x30')],_0xf8c5f8[_0x75e8('0x31')]);_0x2c3568[_0x75e8('0x34')]=_[_0x75e8('0x33')](_0xf8c5f8[_0x75e8('0x30')],qs[_0x75e8('0x35')](_0x3aedb4[_0x75e8('0x31')][_0x75e8('0x35')]));_0x2c3568[_0x75e8('0x34')]=_0x2c3568[_0x75e8('0x34')][_0x75e8('0x36')]?_0x2c3568[_0x75e8('0x34')]:_0xf8c5f8[_0x75e8('0x30')];if(_0x3aedb4[_0x75e8('0x31')][_0x75e8('0x41')]){_0x2c3568['include']=[{'all':!![]}];}_0x2c3568=_[_0x75e8('0x3d')]({},_0x2c3568,_0x3aedb4[_0x75e8('0x3f')]);return db[_0x75e8('0x40')][_0x75e8('0x48')](_0x2c3568)['then'](handleEntityNotFound(_0x41f70e,null))[_0x75e8('0x23')](respondWithResult(_0x41f70e,null))[_0x75e8('0x49')](handleError(_0x41f70e,null));};exports['create']=function(_0x3aeaaf,_0x536320){return db['FaxQueue']['create'](_0x3aeaaf[_0x75e8('0x4a')],{})['then'](function(_0x320e47){var _0xc722d6=_0x3aeaaf['user'][_0x75e8('0x25')]({'plain':!![]});if(!_0xc722d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xc722d6[_0x75e8('0x4b')]===_0x75e8('0x4c')){var _0x173028=_0x320e47['get']({'plain':!![]});var _0x3abce6=_0x75e8('0x26');return db[_0x75e8('0x4d')][_0x75e8('0x48')]({'where':{'name':_0x3abce6,'userProfileId':_0xc722d6[_0x75e8('0x4e')]},'raw':!![]})[_0x75e8('0x23')](function(_0x295578){if(_0x295578&&_0x295578[_0x75e8('0x4f')]===0x0){return db[_0x75e8('0x27')][_0x75e8('0x50')]({'name':_0x173028[_0x75e8('0x29')],'resourceId':_0x173028['id'],'type':_0x295578[_0x75e8('0x29')],'sectionId':_0x295578['id']},{})[_0x75e8('0x23')](function(){return _0x320e47;});}else{return _0x320e47;}})[_0x75e8('0x49')](function(_0x2cdae4){logger[_0x75e8('0x28')](_0x75e8('0x51'),_0x2cdae4);throw _0x2cdae4;});}return _0x320e47;})[_0x75e8('0x23')](respondWithResult(_0x536320,0xc9))[_0x75e8('0x49')](handleError(_0x536320,null));};exports['update']=function(_0x98b423,_0x13184f){if(_0x98b423[_0x75e8('0x4a')]['id']){delete _0x98b423[_0x75e8('0x4a')]['id'];}return db[_0x75e8('0x40')][_0x75e8('0x48')]({'where':{'id':_0x98b423[_0x75e8('0x45')]['id']}})[_0x75e8('0x23')](handleEntityNotFound(_0x13184f,null))[_0x75e8('0x23')](saveUpdates(_0x98b423['body'],null))[_0x75e8('0x23')](respondWithResult(_0x13184f,null))[_0x75e8('0x49')](handleError(_0x13184f,null));};exports[_0x75e8('0x24')]=function(_0x1ba19f,_0x3e56ee){return db[_0x75e8('0x40')][_0x75e8('0x48')]({'where':{'id':_0x1ba19f['params']['id']}})[_0x75e8('0x23')](handleEntityNotFound(_0x3e56ee,null))[_0x75e8('0x23')](removeEntity(_0x3e56ee,null))['catch'](handleError(_0x3e56ee,null));};exports[_0x75e8('0x52')]=function(_0x46fbe4,_0x1f9ed2){return db[_0x75e8('0x40')][_0x75e8('0x52')]()[_0x75e8('0x23')](respondWithResult(_0x1f9ed2,null))[_0x75e8('0x49')](handleError(_0x1f9ed2,null));};exports[_0x75e8('0x53')]=function(_0x59bb4d,_0x4e3af6,_0x1b6d35){var _0x3cfec6={'raw':!![],'where':{}},_0x4918ef={},_0x7c1dd2;return db[_0x75e8('0x40')]['findOne']({'where':{'id':_0x59bb4d[_0x75e8('0x45')]['id']}})[_0x75e8('0x23')](handleEntityNotFound(_0x4e3af6,null))['then'](function(_0x3e58e4){if(_0x3e58e4){_0x7c1dd2=_0x3e58e4[_0x75e8('0x25')]({'plain':!![]});_0x4918ef['model']=_['keys'](db[_0x75e8('0x54')][_0x75e8('0x47')]);_0x4918ef['query']=_[_0x75e8('0x46')](_0x59bb4d['query']);_0x4918ef[_0x75e8('0x32')]=_[_0x75e8('0x33')](_0x4918ef[_0x75e8('0x30')],_0x4918ef[_0x75e8('0x31')]);_0x3cfec6[_0x75e8('0x34')]=_[_0x75e8('0x33')](_0x4918ef['model'],qs['fields'](_0x59bb4d[_0x75e8('0x31')]['fields']));_0x3cfec6[_0x75e8('0x34')]=_0x3cfec6[_0x75e8('0x34')][_0x75e8('0x36')]?_0x3cfec6['attributes']:_0x4918ef['model'];if(!_0x59bb4d[_0x75e8('0x31')][_0x75e8('0x55')](_0x75e8('0x37'))){_0x3cfec6[_0x75e8('0x1a')]=qs['limit'](_0x59bb4d[_0x75e8('0x31')]['limit']);_0x3cfec6[_0x75e8('0x1b')]=qs['offset'](_0x59bb4d['query']['offset']);}_0x3cfec6[_0x75e8('0x38')]=qs[_0x75e8('0x39')](_0x59bb4d[_0x75e8('0x31')][_0x75e8('0x39')]);_0x3cfec6[_0x75e8('0x3a')]=qs[_0x75e8('0x32')](_[_0x75e8('0x3b')](_0x59bb4d[_0x75e8('0x31')],_0x4918ef[_0x75e8('0x32')]));_0x3cfec6['where'][_0x75e8('0x56')]=_0x3e58e4['id'];if(_0x59bb4d[_0x75e8('0x31')][_0x75e8('0x3c')]){_0x3cfec6[_0x75e8('0x3a')]=_['merge'](_0x3cfec6['where'],{'$or':_[_0x75e8('0x2c')](_0x3cfec6[_0x75e8('0x34')],function(_0x2d7ace){var _0x5e1869={};_0x5e1869[_0x2d7ace]={'$like':'%'+_0x59bb4d[_0x75e8('0x31')]['filter']+'%'};return _0x5e1869;})});}_0x3cfec6=_[_0x75e8('0x3d')]({},_0x3cfec6,_0x59bb4d[_0x75e8('0x3f')]);return db[_0x75e8('0x54')][_0x75e8('0x43')](_0x3cfec6);}})[_0x75e8('0x23')](function(_0x3c27f9){if(_0x3c27f9){return db[_0x75e8('0x57')]['findAndCountAll']({'where':{'id':_[_0x75e8('0x2c')](_0x3c27f9,_0x75e8('0x58')),'role':_0x75e8('0x59')},'attributes':['id','name',_0x75e8('0x5a'),_0x75e8('0x5b'),'createdAt']});}})[_0x75e8('0x23')](function(_0x2c6b0d){if(_0x2c6b0d){return{'count':_0x2c6b0d[_0x75e8('0x1c')],'rows':_[_0x75e8('0x2c')](_0x2c6b0d[_0x75e8('0x5c')],function(_0x52282a){return{'membername':_0x52282a[_0x75e8('0x29')],'UserId':_0x52282a['id'],'queue_name':_0x7c1dd2['name'],'FaxQueueId':_0x7c1dd2['id'],'interface':util[_0x75e8('0x5d')](_0x75e8('0x5e'),_0x75e8('0x5f'),_0x52282a[_0x75e8('0x29')]),'penalty':0x0,'paused':_0x52282a[_0x75e8('0x5a')],'createdAt':_0x52282a[_0x75e8('0x60')],'updatedAt':_0x52282a[_0x75e8('0x5b')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x75e8('0x23')](respondWithFilteredResult(_0x4e3af6,_0x3cfec6))[_0x75e8('0x49')](handleError(_0x4e3af6,null));};exports[_0x75e8('0x61')]=function(_0x20a813,_0x23a770,_0x32942d){var _0x561bd9={};var _0x50fe2c={};var _0x9b3a2a;var _0x3fe766;return db[_0x75e8('0x40')][_0x75e8('0x62')]({'where':{'id':_0x20a813[_0x75e8('0x45')]['id']}})['then'](handleEntityNotFound(_0x23a770,null))['then'](function(_0x17973d){if(_0x17973d){_0x9b3a2a=_0x17973d;_0x50fe2c[_0x75e8('0x30')]=_['keys'](db['Team'][_0x75e8('0x47')]);_0x50fe2c['query']=_[_0x75e8('0x46')](_0x20a813['query']);_0x50fe2c[_0x75e8('0x32')]=_[_0x75e8('0x33')](_0x50fe2c['model'],_0x50fe2c[_0x75e8('0x31')]);_0x561bd9[_0x75e8('0x34')]=_['intersection'](_0x50fe2c[_0x75e8('0x30')],qs[_0x75e8('0x35')](_0x20a813[_0x75e8('0x31')][_0x75e8('0x35')]));_0x561bd9[_0x75e8('0x34')]=_0x561bd9[_0x75e8('0x34')][_0x75e8('0x36')]?_0x561bd9[_0x75e8('0x34')]:_0x50fe2c[_0x75e8('0x30')];_0x561bd9[_0x75e8('0x38')]=qs[_0x75e8('0x39')](_0x20a813[_0x75e8('0x31')][_0x75e8('0x39')]);_0x561bd9[_0x75e8('0x3a')]=qs[_0x75e8('0x32')](_[_0x75e8('0x3b')](_0x20a813[_0x75e8('0x31')],_0x50fe2c['filters']));if(_0x20a813['query'][_0x75e8('0x3c')]){_0x561bd9[_0x75e8('0x3a')]=_[_0x75e8('0x3d')](_0x561bd9['where'],{'$or':_['map'](_0x561bd9[_0x75e8('0x34')],function(_0x229a0e){var _0xeb68dd={};_0xeb68dd[_0x229a0e]={'$like':'%'+_0x20a813['query']['filter']+'%'};return _0xeb68dd;})});}_0x561bd9=_[_0x75e8('0x3d')]({},_0x561bd9,_0x20a813['options']);return _0x9b3a2a[_0x75e8('0x61')](_0x561bd9);}})[_0x75e8('0x23')](function(_0x46d2ee){if(_0x46d2ee){_0x3fe766=_0x46d2ee[_0x75e8('0x36')];if(!_0x20a813[_0x75e8('0x31')][_0x75e8('0x55')](_0x75e8('0x37'))){_0x561bd9['limit']=qs['limit'](_0x20a813['query']['limit']);_0x561bd9[_0x75e8('0x1b')]=qs[_0x75e8('0x1b')](_0x20a813[_0x75e8('0x31')]['offset']);}return _0x9b3a2a[_0x75e8('0x61')](_0x561bd9);}})[_0x75e8('0x23')](function(_0x598fc0){if(_0x598fc0){return _0x598fc0?{'count':_0x3fe766,'rows':_0x598fc0}:null;}})[_0x75e8('0x23')](respondWithResult(_0x23a770,null))['catch'](handleError(_0x23a770,null));};exports[_0x75e8('0x63')]=function(_0x3d307a,_0x50a92c,_0x52bdc1){var _0x588803=_0x3d307a[_0x75e8('0x4a')][_0x75e8('0x64')];return db[_0x75e8('0x65')][_0x75e8('0x43')]({'where':{'id':_0x588803},'attributes':['id'],'include':[{'model':db[_0x75e8('0x57')],'as':_0x75e8('0x66'),'attributes':['id',_0x75e8('0x29'),_0x75e8('0x67'),'voicePause',_0x75e8('0x68')],'raw':!![]}]})[_0x75e8('0x23')](function(_0x26b2df){if(_0x26b2df){var _0x59c15f=_['flatMap'](_0x26b2df,function(_0x4dfc99){var _0x4e4dea=_0x4dfc99[_0x75e8('0x25')]({'plain':!![]});return _0x4e4dea[_0x75e8('0x66')];});return db['FaxQueue'][_0x75e8('0x48')]({'where':{'id':_0x3d307a[_0x75e8('0x45')]['id']}})['then'](function(_0x229e0d){return db['sequelize'][_0x75e8('0x69')](function(_0x2bb1c7){return _0x229e0d[_0x75e8('0x63')](_0x588803,{'transaction':_0x2bb1c7})['then'](function(){return BPromise[_0x75e8('0x6a')](_0x59c15f,function(_0x578f71){return db[_0x75e8('0x54')][_0x75e8('0x6b')]({'where':{'UserId':_0x578f71['id'],'FaxQueueId':_0x3d307a[_0x75e8('0x45')]['id']},'transaction':_0x2bb1c7});});})[_0x75e8('0x23')](function(){_0x59c15f[_0x75e8('0x6c')](function(_0x3da565){socket['emit'](_0x75e8('0x6d'),{'UserId':_0x3da565['id'],'FaxQueueId':_0x229e0d['id']});});});});});}})[_0x75e8('0x23')](respondWithStatusCode(_0x50a92c,null))[_0x75e8('0x49')](handleError(_0x50a92c,null));};exports[_0x75e8('0x6e')]=function(_0xca339f,_0x2f921a,_0x50c4dd){return db[_0x75e8('0x65')]['findAll']({'where':{'id':_0xca339f[_0x75e8('0x31')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x75e8('0x66'),'attributes':['id'],'raw':!![]}]})[_0x75e8('0x23')](handleEntityNotFound(_0x2f921a,null))[_0x75e8('0x23')](function(_0x713dcf){var _0x322493=_[_0x75e8('0x2c')](_0x713dcf,'id');var _0x2f840e=[];var _0x2be526=[];var _0x5a1d42=squel['select']();_0x5a1d42[_0x75e8('0x6f')](_0x75e8('0x70'))[_0x75e8('0x71')](_0x75e8('0x72'),'tq')['join'](_0x75e8('0x73'),'ut',_0x75e8('0x74'))[_0x75e8('0x3a')](_0x75e8('0x75'),_0xca339f[_0x75e8('0x45')]['id']);for(var _0x264fc3=0x0;_0x264fc3<_0x713dcf[_0x75e8('0x36')];_0x264fc3+=0x1){let _0x77a170=_0x713dcf[_0x264fc3];for(var _0x1a80b7=0x0;_0x1a80b7<_0x77a170[_0x75e8('0x66')]['length'];_0x1a80b7+=0x1){let _0x2b35a4=_0x77a170[_0x75e8('0x66')][_0x1a80b7];var _0x2842f0=_0x5a1d42[_0x75e8('0x76')]();_0x2842f0[_0x75e8('0x3a')](_0x75e8('0x77'),_0x2b35a4['id']);_0x2be526[_0x75e8('0x78')](db['sequelize'][_0x75e8('0x31')](_0x2842f0[_0x75e8('0x79')](),{'type':db['sequelize'][_0x75e8('0x7a')][_0x75e8('0x7b')]})['then'](function(_0x56d7ca){if(_0x56d7ca['length']===0x1){return _0x2b35a4['id'];}else{var _0x3381b1=_[_0x75e8('0x7c')](_['map'](_0x56d7ca,_0x75e8('0x7d')),function(_0x461eae){return _['includes'](_0x322493,_0x461eae);});if(_0x3381b1){return _0x2b35a4['id'];}}}));}}return BPromise['all'](_0x2be526)[_0x75e8('0x23')](function(_0x568ad1){_0x2f840e=_(_0x2f840e)[_0x75e8('0x7e')](_0x568ad1)[_0x75e8('0x7f')]()[_0x75e8('0x80')]();return db[_0x75e8('0x40')][_0x75e8('0x48')]({'where':{'id':_0xca339f[_0x75e8('0x45')]['id']}})[_0x75e8('0x23')](function(_0x3880e9){return db[_0x75e8('0x81')]['transaction'](function(_0x9e3dfa){return _0x3880e9[_0x75e8('0x6e')](_0xca339f['query'][_0x75e8('0x64')],{'transaction':_0x9e3dfa})[_0x75e8('0x23')](function(){if(!_[_0x75e8('0x82')](_0x2f840e)){return _0x3880e9[_0x75e8('0x83')](_0x2f840e,{'transaction':_0x9e3dfa});}})['then'](function(){_0x2f840e[_0x75e8('0x6c')](function(_0x50b46e){socket[_0x75e8('0x84')](_0x75e8('0x85'),{'UserId':_0x50b46e,'FaxQueueId':_0x3880e9['id']});});});});});});})[_0x75e8('0x23')](respondWithStatusCode(_0x2f921a,null))[_0x75e8('0x49')](handleError(_0x2f921a,null));};exports[_0x75e8('0x86')]=function(_0xc45af4,_0x4f200b,_0x4cd389){return db[_0x75e8('0x40')][_0x75e8('0x48')]({'where':{'id':_0xc45af4[_0x75e8('0x45')]['id']}})['then'](handleEntityNotFound(_0x4f200b,null))['then'](function(_0x5bc960){if(_0x5bc960){return _0x5bc960[_0x75e8('0x86')](_0xc45af4['body'][_0x75e8('0x64')],_['omit'](_0xc45af4[_0x75e8('0x4a')],[_0x75e8('0x64'),'id'])||{})[_0x75e8('0x87')](function(_0x412577){for(var _0x30d183=0x0;_0x30d183<_0xc45af4[_0x75e8('0x4a')]['ids'][_0x75e8('0x36')];_0x30d183+=0x1){socket[_0x75e8('0x84')]('userFaxQueue:save',{'UserId':Number(_0xc45af4[_0x75e8('0x4a')][_0x75e8('0x64')][_0x30d183]),'FaxQueueId':Number(_0xc45af4['params']['id'])});}return _0x412577;});}})[_0x75e8('0x23')](respondWithResult(_0x4f200b,null))[_0x75e8('0x49')](handleError(_0x4f200b,null));};exports[_0x75e8('0x83')]=function(_0x2cb13a,_0x4f1c70,_0x48e502){return db[_0x75e8('0x40')][_0x75e8('0x48')]({'where':{'id':_0x2cb13a[_0x75e8('0x45')]['id']}})['then'](handleEntityNotFound(_0x4f1c70,null))[_0x75e8('0x23')](function(_0x115e91){if(_0x115e91){return _0x115e91[_0x75e8('0x83')](_0x2cb13a['query']['ids'])[_0x75e8('0x23')](function(){if(_[_0x75e8('0x88')](_0x2cb13a['query'][_0x75e8('0x64')])){for(var _0x58f235=0x0;_0x58f235<_0x2cb13a[_0x75e8('0x31')][_0x75e8('0x64')]['length'];_0x58f235+=0x1){socket['emit'](_0x75e8('0x85'),{'UserId':Number(_0x2cb13a[_0x75e8('0x31')]['ids'][_0x58f235]),'FaxQueueId':Number(_0x2cb13a[_0x75e8('0x45')]['id'])});}}else{socket[_0x75e8('0x84')](_0x75e8('0x85'),{'UserId':Number(_0x2cb13a[_0x75e8('0x31')][_0x75e8('0x64')]),'FaxQueueId':Number(_0x2cb13a[_0x75e8('0x45')]['id'])});}});}})[_0x75e8('0x23')](respondWithStatusCode(_0x4f1c70,null))[_0x75e8('0x49')](handleError(_0x4f1c70,null));};exports[_0x75e8('0x89')]=function(_0x48006a,_0x272670,_0x110409){var _0x370623={};var _0x3335a0={};var _0x493bba;var _0x35d362;return db[_0x75e8('0x40')]['findOne']({'where':{'id':_0x48006a['params']['id']}})['then'](handleEntityNotFound(_0x272670,null))[_0x75e8('0x23')](function(_0x45972c){if(_0x45972c){_0x493bba=_0x45972c;_0x3335a0[_0x75e8('0x30')]=_[_0x75e8('0x46')](db[_0x75e8('0x57')][_0x75e8('0x47')]);_0x3335a0[_0x75e8('0x31')]=_['keys'](_0x48006a[_0x75e8('0x31')]);_0x3335a0[_0x75e8('0x32')]=_[_0x75e8('0x33')](_0x3335a0['model'],_0x3335a0[_0x75e8('0x31')]);_0x370623[_0x75e8('0x34')]=_['intersection'](_0x3335a0[_0x75e8('0x30')],qs['fields'](_0x48006a[_0x75e8('0x31')][_0x75e8('0x35')]));_0x370623[_0x75e8('0x34')]=_0x370623['attributes'][_0x75e8('0x36')]?_0x370623['attributes']:_0x3335a0[_0x75e8('0x30')];_0x370623['order']=qs['sort'](_0x48006a['query'][_0x75e8('0x39')]);_0x370623[_0x75e8('0x3a')]=qs[_0x75e8('0x32')](_[_0x75e8('0x3b')](_0x48006a[_0x75e8('0x31')],_0x3335a0[_0x75e8('0x32')]));if(_0x48006a[_0x75e8('0x31')][_0x75e8('0x3c')]){_0x370623['where']=_['merge'](_0x370623['where'],{'$or':_[_0x75e8('0x2c')](_0x370623[_0x75e8('0x34')],function(_0x4775dd){var _0x26d427={};_0x26d427[_0x4775dd]={'$like':'%'+_0x48006a[_0x75e8('0x31')]['filter']+'%'};return _0x26d427;})});}_0x370623=_['merge']({},_0x370623,_0x48006a[_0x75e8('0x3f')]);return _0x493bba[_0x75e8('0x89')](_0x370623);}})[_0x75e8('0x23')](function(_0x2543bd){if(_0x2543bd){_0x35d362=_0x2543bd['length'];if(!_0x48006a[_0x75e8('0x31')][_0x75e8('0x55')](_0x75e8('0x37'))){_0x370623[_0x75e8('0x1a')]=qs[_0x75e8('0x1a')](_0x48006a[_0x75e8('0x31')][_0x75e8('0x1a')]);_0x370623[_0x75e8('0x1b')]=qs[_0x75e8('0x1b')](_0x48006a[_0x75e8('0x31')]['offset']);}return _0x493bba['getAgents'](_0x370623);}})['then'](function(_0x2b5bf8){if(_0x2b5bf8){return _0x2b5bf8?{'count':_0x35d362,'rows':_0x2b5bf8}:null;}})[_0x75e8('0x23')](respondWithResult(_0x272670,null))[_0x75e8('0x49')](handleError(_0x272670,null));};
\ No newline at end of file
+var _0x3477=['params','describe','getMembers','UserFaxQueue','length','order','FaxQueueId','findAll','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','findOne','getTeams','ids','Team','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','removeTeams','select','field','from','join','user_has_teams','FaxQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','compact','value','isEmpty','removeAgents','addAgents','omit','spread','emit','userFaxQueue:save','isArray','userFaxQueue:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','./faxQueue.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','FaxQueues','error','stack','name','map','FaxQueue','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','rows','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x3477,0x156));var _0x7347=function(_0x27399d,_0x53323c){_0x27399d=_0x27399d-0x0;var _0x3295cb=_0x3477[_0x27399d];return _0x3295cb;};'use strict';var emlformat=require(_0x7347('0x0'));var rimraf=require(_0x7347('0x1'));var zipdir=require(_0x7347('0x2'));var jsonpatch=require(_0x7347('0x3'));var rp=require(_0x7347('0x4'));var moment=require(_0x7347('0x5'));var BPromise=require(_0x7347('0x6'));var Mustache=require(_0x7347('0x7'));var util=require(_0x7347('0x8'));var path=require('path');var sox=require(_0x7347('0x9'));var csv=require('to-csv');var ejs=require(_0x7347('0xa'));var fs=require('fs');var fs_extra=require(_0x7347('0xb'));var _=require(_0x7347('0xc'));var squel=require(_0x7347('0xd'));var crypto=require('crypto');var jsforce=require(_0x7347('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x7347('0xf'));var querystring=require(_0x7347('0x10'));var Papa=require(_0x7347('0x11'));var Redis=require(_0x7347('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x7347('0x13'));var as=require(_0x7347('0x14'));var hardwareService=require(_0x7347('0x15'));var logger=require(_0x7347('0x16'))(_0x7347('0x17'));var utils=require('../../config/utils');var config=require(_0x7347('0x18'));var licenseUtil=require(_0x7347('0x19'));var db=require('../../mysqldb')['db'];config[_0x7347('0x1a')]=_[_0x7347('0x1b')](config[_0x7347('0x1a')],{'host':_0x7347('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7347('0x1a')]));require(_0x7347('0x1d'))['register'](socket);function respondWithStatusCode(_0x277323,_0x4981fb){_0x4981fb=_0x4981fb||0xcc;return function(_0x211d83){if(_0x211d83){return _0x277323[_0x7347('0x1e')](_0x4981fb);}return _0x277323[_0x7347('0x1f')](_0x4981fb)[_0x7347('0x20')]();};}function respondWithResult(_0x35b455,_0x570dcd){_0x570dcd=_0x570dcd||0xc8;return function(_0x2c2765){if(_0x2c2765){return _0x35b455[_0x7347('0x1f')](_0x570dcd)[_0x7347('0x21')](_0x2c2765);}};}function respondWithFilteredResult(_0x4389bc,_0x3947df){return function(_0x2b8abb){if(_0x2b8abb){var _0x2703f9=typeof _0x3947df[_0x7347('0x22')]==='undefined'&&typeof _0x3947df[_0x7347('0x23')]===_0x7347('0x24');var _0x2d610c=_0x2b8abb[_0x7347('0x25')];var _0x587fd8=_0x2703f9?0x0:_0x3947df[_0x7347('0x22')];var _0x2306f6=_0x2703f9?_0x2b8abb[_0x7347('0x25')]:_0x3947df[_0x7347('0x22')]+_0x3947df['limit'];var _0x396d36;if(_0x2306f6>=_0x2d610c){_0x2306f6=_0x2d610c;_0x396d36=0xc8;}else{_0x396d36=0xce;}_0x4389bc[_0x7347('0x1f')](_0x396d36);return _0x4389bc[_0x7347('0x26')](_0x7347('0x27'),_0x587fd8+'-'+_0x2306f6+'/'+_0x2d610c)['json'](_0x2b8abb);}return null;};}function patchUpdates(_0x9e1df1){return function(_0x2a3769){try{jsonpatch[_0x7347('0x28')](_0x2a3769,_0x9e1df1,!![]);}catch(_0x323fd8){return BPromise[_0x7347('0x29')](_0x323fd8);}return _0x2a3769['save']();};}function saveUpdates(_0x401add,_0x89b9e2){return function(_0x2572f7){if(_0x2572f7){return _0x2572f7[_0x7347('0x2a')](_0x401add)[_0x7347('0x2b')](function(_0x419d48){return _0x419d48;});}return null;};}function removeEntity(_0x29ecc0,_0x10a2f5){return function(_0x47afb2){if(_0x47afb2){return _0x47afb2[_0x7347('0x2c')]()[_0x7347('0x2b')](function(){var _0x1af4b5=_0x47afb2[_0x7347('0x2d')]({'plain':!![]});var _0x4d538f=_0x7347('0x2e');return db['UserProfileResource']['destroy']({'where':{'type':_0x4d538f,'resourceId':_0x1af4b5['id']}})[_0x7347('0x2b')](function(){return _0x47afb2;});})[_0x7347('0x2b')](function(){_0x29ecc0[_0x7347('0x1f')](0xcc)[_0x7347('0x20')]();});}};}function handleEntityNotFound(_0x294d7e,_0x3f5beb){return function(_0x49f551){if(!_0x49f551){_0x294d7e[_0x7347('0x1e')](0x194);}return _0x49f551;};}function handleError(_0x5bd763,_0xefbdc5){_0xefbdc5=_0xefbdc5||0x1f4;return function(_0xe89472){logger[_0x7347('0x2f')](_0xe89472[_0x7347('0x30')]);if(_0xe89472[_0x7347('0x31')]){delete _0xe89472[_0x7347('0x31')];}_0x5bd763[_0x7347('0x1f')](_0xefbdc5)['send'](_0xe89472);};}exports['index']=function(_0x3c4ab9,_0x516782){var _0x31380d={},_0x55fc66={},_0x53dd31={'count':0x0,'rows':[]};var _0x5861fc=_[_0x7347('0x32')](db[_0x7347('0x33')][_0x7347('0x34')],function(_0x2cb0f0){return{'name':_0x2cb0f0[_0x7347('0x35')],'type':_0x2cb0f0['type']['key']};});_0x55fc66['model']=_[_0x7347('0x32')](_0x5861fc,_0x7347('0x31'));_0x55fc66[_0x7347('0x36')]=_[_0x7347('0x37')](_0x3c4ab9[_0x7347('0x36')]);_0x55fc66[_0x7347('0x38')]=_[_0x7347('0x39')](_0x55fc66[_0x7347('0x3a')],_0x55fc66['query']);_0x31380d[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x55fc66[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x3c4ab9[_0x7347('0x36')]['fields']));_0x31380d[_0x7347('0x3b')]=_0x31380d[_0x7347('0x3b')]['length']?_0x31380d[_0x7347('0x3b')]:_0x55fc66[_0x7347('0x3a')];if(!_0x3c4ab9[_0x7347('0x36')][_0x7347('0x3d')](_0x7347('0x3e'))){_0x31380d[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x3c4ab9[_0x7347('0x36')]['limit']);_0x31380d[_0x7347('0x22')]=qs[_0x7347('0x22')](_0x3c4ab9[_0x7347('0x36')][_0x7347('0x22')]);}_0x31380d['order']=qs[_0x7347('0x3f')](_0x3c4ab9['query'][_0x7347('0x3f')]);_0x31380d[_0x7347('0x40')]=qs['filters'](_[_0x7347('0x41')](_0x3c4ab9['query'],_0x55fc66[_0x7347('0x38')]),_0x5861fc);if(_0x3c4ab9[_0x7347('0x36')][_0x7347('0x42')]){_0x31380d[_0x7347('0x40')]=_[_0x7347('0x43')](_0x31380d['where'],{'$or':_[_0x7347('0x32')](_0x5861fc,function(_0x59646c){if(_0x59646c[_0x7347('0x44')]!=='VIRTUAL'){var _0x528925={};_0x528925[_0x59646c[_0x7347('0x31')]]={'$like':'%'+_0x3c4ab9['query'][_0x7347('0x42')]+'%'};return _0x528925;}})});}_0x31380d=_['merge']({},_0x31380d,_0x3c4ab9[_0x7347('0x45')]);var _0x1082bc={'where':_0x31380d[_0x7347('0x40')]};return db[_0x7347('0x33')]['count'](_0x1082bc)[_0x7347('0x2b')](function(_0x4271d1){_0x53dd31[_0x7347('0x25')]=_0x4271d1;if(_0x3c4ab9[_0x7347('0x36')][_0x7347('0x46')]){_0x31380d[_0x7347('0x47')]=[{'all':!![]}];}return db[_0x7347('0x33')]['findAll'](_0x31380d);})[_0x7347('0x2b')](function(_0x809944){_0x53dd31[_0x7347('0x48')]=_0x809944;return _0x53dd31;})[_0x7347('0x2b')](respondWithFilteredResult(_0x516782,_0x31380d))[_0x7347('0x49')](handleError(_0x516782,null));};exports[_0x7347('0x4a')]=function(_0x58f353,_0x8227dd){var _0x2c5dc5={'raw':!![],'where':{'id':_0x58f353['params']['id']}},_0x24b9db={};_0x24b9db[_0x7347('0x3a')]=_[_0x7347('0x37')](db[_0x7347('0x33')][_0x7347('0x34')]);_0x24b9db[_0x7347('0x36')]=_[_0x7347('0x37')](_0x58f353[_0x7347('0x36')]);_0x24b9db[_0x7347('0x38')]=_['intersection'](_0x24b9db[_0x7347('0x3a')],_0x24b9db[_0x7347('0x36')]);_0x2c5dc5[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x24b9db[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x58f353['query'][_0x7347('0x3c')]));_0x2c5dc5[_0x7347('0x3b')]=_0x2c5dc5[_0x7347('0x3b')]['length']?_0x2c5dc5[_0x7347('0x3b')]:_0x24b9db['model'];if(_0x58f353[_0x7347('0x36')]['includeAll']){_0x2c5dc5[_0x7347('0x47')]=[{'all':!![]}];}_0x2c5dc5=_[_0x7347('0x43')]({},_0x2c5dc5,_0x58f353[_0x7347('0x45')]);return db[_0x7347('0x33')][_0x7347('0x4b')](_0x2c5dc5)[_0x7347('0x2b')](handleEntityNotFound(_0x8227dd,null))[_0x7347('0x2b')](respondWithResult(_0x8227dd,null))['catch'](handleError(_0x8227dd,null));};exports[_0x7347('0x4c')]=function(_0x4ff59b,_0x299843){return db[_0x7347('0x33')][_0x7347('0x4c')](_0x4ff59b[_0x7347('0x4d')],{})[_0x7347('0x2b')](function(_0x12577c){var _0x41c72a=_0x4ff59b['user'][_0x7347('0x2d')]({'plain':!![]});if(!_0x41c72a)throw new Error(_0x7347('0x4e'));if(_0x41c72a[_0x7347('0x4f')]===_0x7347('0x50')){var _0x25cb50=_0x12577c['get']({'plain':!![]});var _0x13d48d='FaxQueues';return db[_0x7347('0x51')]['find']({'where':{'name':_0x13d48d,'userProfileId':_0x41c72a[_0x7347('0x52')]},'raw':!![]})[_0x7347('0x2b')](function(_0xfc2c1f){if(_0xfc2c1f&&_0xfc2c1f['autoAssociation']===0x0){return db['UserProfileResource'][_0x7347('0x4c')]({'name':_0x25cb50[_0x7347('0x31')],'resourceId':_0x25cb50['id'],'type':_0xfc2c1f[_0x7347('0x31')],'sectionId':_0xfc2c1f['id']},{})[_0x7347('0x2b')](function(){return _0x12577c;});}else{return _0x12577c;}})[_0x7347('0x49')](function(_0x47c790){logger[_0x7347('0x2f')](_0x7347('0x53'),_0x47c790);throw _0x47c790;});}return _0x12577c;})[_0x7347('0x2b')](respondWithResult(_0x299843,0xc9))[_0x7347('0x49')](handleError(_0x299843,null));};exports[_0x7347('0x2a')]=function(_0x40d7d0,_0x209b9f){if(_0x40d7d0[_0x7347('0x4d')]['id']){delete _0x40d7d0['body']['id'];}return db[_0x7347('0x33')][_0x7347('0x4b')]({'where':{'id':_0x40d7d0[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x209b9f,null))[_0x7347('0x2b')](saveUpdates(_0x40d7d0[_0x7347('0x4d')],null))[_0x7347('0x2b')](respondWithResult(_0x209b9f,null))[_0x7347('0x49')](handleError(_0x209b9f,null));};exports[_0x7347('0x2c')]=function(_0x2b6d22,_0x33b11f){return db['FaxQueue'][_0x7347('0x4b')]({'where':{'id':_0x2b6d22[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x33b11f,null))[_0x7347('0x2b')](removeEntity(_0x33b11f,null))['catch'](handleError(_0x33b11f,null));};exports[_0x7347('0x55')]=function(_0xb371bf,_0x199ac6){return db['FaxQueue']['describe']()['then'](respondWithResult(_0x199ac6,null))[_0x7347('0x49')](handleError(_0x199ac6,null));};exports[_0x7347('0x56')]=function(_0x1322ab,_0x1f54d9,_0x411a03){var _0x8c9eae={'raw':!![],'where':{}},_0x1e8e87={},_0x3da131;return db[_0x7347('0x33')]['findOne']({'where':{'id':_0x1322ab[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x1f54d9,null))[_0x7347('0x2b')](function(_0x4e4151){if(_0x4e4151){_0x3da131=_0x4e4151[_0x7347('0x2d')]({'plain':!![]});_0x1e8e87['model']=_[_0x7347('0x37')](db[_0x7347('0x57')][_0x7347('0x34')]);_0x1e8e87['query']=_['keys'](_0x1322ab[_0x7347('0x36')]);_0x1e8e87[_0x7347('0x38')]=_[_0x7347('0x39')](_0x1e8e87[_0x7347('0x3a')],_0x1e8e87[_0x7347('0x36')]);_0x8c9eae[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x1e8e87[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x1322ab[_0x7347('0x36')][_0x7347('0x3c')]));_0x8c9eae[_0x7347('0x3b')]=_0x8c9eae[_0x7347('0x3b')][_0x7347('0x58')]?_0x8c9eae['attributes']:_0x1e8e87[_0x7347('0x3a')];if(!_0x1322ab['query'][_0x7347('0x3d')](_0x7347('0x3e'))){_0x8c9eae[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x1322ab['query']['limit']);_0x8c9eae['offset']=qs['offset'](_0x1322ab[_0x7347('0x36')][_0x7347('0x22')]);}_0x8c9eae[_0x7347('0x59')]=qs['sort'](_0x1322ab['query'][_0x7347('0x3f')]);_0x8c9eae['where']=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x1322ab[_0x7347('0x36')],_0x1e8e87[_0x7347('0x38')]));_0x8c9eae[_0x7347('0x40')][_0x7347('0x5a')]=_0x4e4151['id'];if(_0x1322ab[_0x7347('0x36')][_0x7347('0x42')]){_0x8c9eae[_0x7347('0x40')]=_[_0x7347('0x43')](_0x8c9eae['where'],{'$or':_[_0x7347('0x32')](_0x8c9eae['attributes'],function(_0x4326cc){var _0x418005={};_0x418005[_0x4326cc]={'$like':'%'+_0x1322ab[_0x7347('0x36')]['filter']+'%'};return _0x418005;})});}_0x8c9eae=_[_0x7347('0x43')]({},_0x8c9eae,_0x1322ab[_0x7347('0x45')]);return db[_0x7347('0x57')][_0x7347('0x5b')](_0x8c9eae);}})[_0x7347('0x2b')](function(_0x28079a){if(_0x28079a){return db[_0x7347('0x5c')][_0x7347('0x5d')]({'where':{'id':_[_0x7347('0x32')](_0x28079a,_0x7347('0x5e')),'role':_0x7347('0x5f')},'attributes':['id','name',_0x7347('0x60'),_0x7347('0x61'),_0x7347('0x62')]});}})[_0x7347('0x2b')](function(_0x3a4185){if(_0x3a4185){return{'count':_0x3a4185[_0x7347('0x25')],'rows':_[_0x7347('0x32')](_0x3a4185[_0x7347('0x48')],function(_0x3d38ae){return{'membername':_0x3d38ae[_0x7347('0x31')],'UserId':_0x3d38ae['id'],'queue_name':_0x3da131['name'],'FaxQueueId':_0x3da131['id'],'interface':util[_0x7347('0x63')](_0x7347('0x64'),_0x7347('0x65'),_0x3d38ae[_0x7347('0x31')]),'penalty':0x0,'paused':_0x3d38ae[_0x7347('0x60')],'createdAt':_0x3d38ae[_0x7347('0x62')],'updatedAt':_0x3d38ae['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7347('0x2b')](respondWithFilteredResult(_0x1f54d9,_0x8c9eae))[_0x7347('0x49')](handleError(_0x1f54d9,null));};exports['getTeams']=function(_0x4fec2b,_0x31e784,_0x158a70){var _0x2416c2={};var _0x32e91f={};var _0x180407;var _0x577bb6;return db['FaxQueue'][_0x7347('0x66')]({'where':{'id':_0x4fec2b['params']['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x31e784,null))[_0x7347('0x2b')](function(_0x54698c){if(_0x54698c){_0x180407=_0x54698c;_0x32e91f[_0x7347('0x3a')]=_[_0x7347('0x37')](db['Team'][_0x7347('0x34')]);_0x32e91f[_0x7347('0x36')]=_[_0x7347('0x37')](_0x4fec2b[_0x7347('0x36')]);_0x32e91f[_0x7347('0x38')]=_['intersection'](_0x32e91f['model'],_0x32e91f['query']);_0x2416c2[_0x7347('0x3b')]=_[_0x7347('0x39')](_0x32e91f[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x4fec2b['query'][_0x7347('0x3c')]));_0x2416c2[_0x7347('0x3b')]=_0x2416c2[_0x7347('0x3b')][_0x7347('0x58')]?_0x2416c2[_0x7347('0x3b')]:_0x32e91f[_0x7347('0x3a')];_0x2416c2[_0x7347('0x59')]=qs[_0x7347('0x3f')](_0x4fec2b['query'][_0x7347('0x3f')]);_0x2416c2[_0x7347('0x40')]=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x4fec2b[_0x7347('0x36')],_0x32e91f['filters']));if(_0x4fec2b[_0x7347('0x36')][_0x7347('0x42')]){_0x2416c2[_0x7347('0x40')]=_['merge'](_0x2416c2[_0x7347('0x40')],{'$or':_['map'](_0x2416c2[_0x7347('0x3b')],function(_0x308552){var _0x1d5bd5={};_0x1d5bd5[_0x308552]={'$like':'%'+_0x4fec2b[_0x7347('0x36')][_0x7347('0x42')]+'%'};return _0x1d5bd5;})});}_0x2416c2=_[_0x7347('0x43')]({},_0x2416c2,_0x4fec2b[_0x7347('0x45')]);return _0x180407[_0x7347('0x67')](_0x2416c2);}})['then'](function(_0x34d6f9){if(_0x34d6f9){_0x577bb6=_0x34d6f9[_0x7347('0x58')];if(!_0x4fec2b['query']['hasOwnProperty'](_0x7347('0x3e'))){_0x2416c2[_0x7347('0x23')]=qs['limit'](_0x4fec2b['query'][_0x7347('0x23')]);_0x2416c2['offset']=qs[_0x7347('0x22')](_0x4fec2b[_0x7347('0x36')]['offset']);}return _0x180407[_0x7347('0x67')](_0x2416c2);}})[_0x7347('0x2b')](function(_0x149646){if(_0x149646){return _0x149646?{'count':_0x577bb6,'rows':_0x149646}:null;}})[_0x7347('0x2b')](respondWithResult(_0x31e784,null))[_0x7347('0x49')](handleError(_0x31e784,null));};exports['addTeams']=function(_0x527db7,_0x2821b9,_0x97b5be){var _0x3c4b2e=_0x527db7['body'][_0x7347('0x68')];return db[_0x7347('0x69')]['findAll']({'where':{'id':_0x3c4b2e},'attributes':['id'],'include':[{'model':db['User'],'as':_0x7347('0x6a'),'attributes':['id','name',_0x7347('0x6b'),_0x7347('0x6c'),_0x7347('0x6d')],'raw':!![]}]})[_0x7347('0x2b')](function(_0x3579de){if(_0x3579de){var _0x3c9207=_[_0x7347('0x6e')](_0x3579de,function(_0x283e6b){var _0x25cac6=_0x283e6b['get']({'plain':!![]});return _0x25cac6[_0x7347('0x6a')];});return db[_0x7347('0x33')][_0x7347('0x4b')]({'where':{'id':_0x527db7[_0x7347('0x54')]['id']}})['then'](function(_0x5a827f){return db[_0x7347('0x6f')][_0x7347('0x70')](function(_0x481d67){return _0x5a827f['addTeams'](_0x3c4b2e,{'transaction':_0x481d67})[_0x7347('0x2b')](function(){return BPromise[_0x7347('0x71')](_0x3c9207,function(_0x25c40b){return db['UserFaxQueue'][_0x7347('0x72')]({'where':{'UserId':_0x25c40b['id'],'FaxQueueId':_0x527db7[_0x7347('0x54')]['id']},'transaction':_0x481d67});});})['then'](function(){_0x3c9207[_0x7347('0x73')](function(_0x2f270d){socket['emit']('userFaxQueue:save',{'UserId':_0x2f270d['id'],'FaxQueueId':_0x5a827f['id']});});});});});}})[_0x7347('0x2b')](respondWithStatusCode(_0x2821b9,null))[_0x7347('0x49')](handleError(_0x2821b9,null));};exports[_0x7347('0x74')]=function(_0xac206,_0x133b66,_0x2e698a){return db[_0x7347('0x69')][_0x7347('0x5b')]({'where':{'id':_0xac206[_0x7347('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x7347('0x5c')],'as':_0x7347('0x6a'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x133b66,null))['then'](function(_0x2e386e){var _0x24b9ba=_['map'](_0x2e386e,'id');var _0x488bad=[];var _0x26a1b8=[];var _0x1db6f0=squel[_0x7347('0x75')]();_0x1db6f0[_0x7347('0x76')]('tq.TeamId')[_0x7347('0x77')]('team_has_fax_queues','tq')[_0x7347('0x78')](_0x7347('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7347('0x40')](_0x7347('0x7a'),_0xac206[_0x7347('0x54')]['id']);for(var _0x2b27e1=0x0;_0x2b27e1<_0x2e386e[_0x7347('0x58')];_0x2b27e1+=0x1){let _0xc0c41c=_0x2e386e[_0x2b27e1];for(var _0x28928=0x0;_0x28928<_0xc0c41c[_0x7347('0x6a')][_0x7347('0x58')];_0x28928+=0x1){let _0x4cfe3c=_0xc0c41c[_0x7347('0x6a')][_0x28928];var _0x35e100=_0x1db6f0[_0x7347('0x7b')]();_0x35e100[_0x7347('0x40')](_0x7347('0x7c'),_0x4cfe3c['id']);_0x26a1b8['push'](db[_0x7347('0x6f')][_0x7347('0x36')](_0x35e100[_0x7347('0x7d')](),{'type':db[_0x7347('0x6f')]['QueryTypes'][_0x7347('0x7e')]})[_0x7347('0x2b')](function(_0x3d5898){if(_0x3d5898[_0x7347('0x58')]===0x1){return _0x4cfe3c['id'];}else{var _0x532b62=_[_0x7347('0x7f')](_['map'](_0x3d5898,_0x7347('0x80')),function(_0x3f4459){return _['includes'](_0x24b9ba,_0x3f4459);});if(_0x532b62){return _0x4cfe3c['id'];}}}));}}return BPromise[_0x7347('0x81')](_0x26a1b8)[_0x7347('0x2b')](function(_0xfbd419){_0x488bad=_(_0x488bad)['union'](_0xfbd419)[_0x7347('0x82')]()[_0x7347('0x83')]();return db[_0x7347('0x33')]['find']({'where':{'id':_0xac206[_0x7347('0x54')]['id']}})['then'](function(_0x2257b5){return db[_0x7347('0x6f')][_0x7347('0x70')](function(_0x535a34){return _0x2257b5[_0x7347('0x74')](_0xac206['query'][_0x7347('0x68')],{'transaction':_0x535a34})[_0x7347('0x2b')](function(){if(!_[_0x7347('0x84')](_0x488bad)){return _0x2257b5[_0x7347('0x85')](_0x488bad,{'transaction':_0x535a34});}})[_0x7347('0x2b')](function(){_0x488bad['forEach'](function(_0x11c974){socket['emit']('userFaxQueue:remove',{'UserId':_0x11c974,'FaxQueueId':_0x2257b5['id']});});});});});});})[_0x7347('0x2b')](respondWithStatusCode(_0x133b66,null))[_0x7347('0x49')](handleError(_0x133b66,null));};exports[_0x7347('0x86')]=function(_0x494274,_0x547dda,_0x411b16){return db[_0x7347('0x33')]['find']({'where':{'id':_0x494274[_0x7347('0x54')]['id']}})['then'](handleEntityNotFound(_0x547dda,null))[_0x7347('0x2b')](function(_0x19464d){if(_0x19464d){return _0x19464d[_0x7347('0x86')](_0x494274[_0x7347('0x4d')][_0x7347('0x68')],_[_0x7347('0x87')](_0x494274['body'],[_0x7347('0x68'),'id'])||{})[_0x7347('0x88')](function(_0x3677a3){for(var _0x3db7a2=0x0;_0x3db7a2<_0x494274[_0x7347('0x4d')][_0x7347('0x68')][_0x7347('0x58')];_0x3db7a2+=0x1){socket[_0x7347('0x89')](_0x7347('0x8a'),{'UserId':Number(_0x494274['body'][_0x7347('0x68')][_0x3db7a2]),'FaxQueueId':Number(_0x494274['params']['id'])});}return _0x3677a3;});}})[_0x7347('0x2b')](respondWithResult(_0x547dda,null))['catch'](handleError(_0x547dda,null));};exports[_0x7347('0x85')]=function(_0x53ff37,_0x53d2dc,_0x14405a){return db['FaxQueue'][_0x7347('0x4b')]({'where':{'id':_0x53ff37[_0x7347('0x54')]['id']}})['then'](handleEntityNotFound(_0x53d2dc,null))[_0x7347('0x2b')](function(_0x3d0588){if(_0x3d0588){return _0x3d0588[_0x7347('0x85')](_0x53ff37[_0x7347('0x36')][_0x7347('0x68')])[_0x7347('0x2b')](function(){if(_[_0x7347('0x8b')](_0x53ff37[_0x7347('0x36')][_0x7347('0x68')])){for(var _0x429ab6=0x0;_0x429ab6<_0x53ff37['query'][_0x7347('0x68')][_0x7347('0x58')];_0x429ab6+=0x1){socket[_0x7347('0x89')](_0x7347('0x8c'),{'UserId':Number(_0x53ff37[_0x7347('0x36')]['ids'][_0x429ab6]),'FaxQueueId':Number(_0x53ff37[_0x7347('0x54')]['id'])});}}else{socket[_0x7347('0x89')]('userFaxQueue:remove',{'UserId':Number(_0x53ff37[_0x7347('0x36')][_0x7347('0x68')]),'FaxQueueId':Number(_0x53ff37[_0x7347('0x54')]['id'])});}});}})[_0x7347('0x2b')](respondWithStatusCode(_0x53d2dc,null))[_0x7347('0x49')](handleError(_0x53d2dc,null));};exports[_0x7347('0x8d')]=function(_0x3f676b,_0x49a908,_0x351a84){var _0x3ea2aa={};var _0x120de6={};var _0x414092;var _0x902290;return db['FaxQueue'][_0x7347('0x66')]({'where':{'id':_0x3f676b[_0x7347('0x54')]['id']}})[_0x7347('0x2b')](handleEntityNotFound(_0x49a908,null))[_0x7347('0x2b')](function(_0x524ac7){if(_0x524ac7){_0x414092=_0x524ac7;_0x120de6[_0x7347('0x3a')]=_[_0x7347('0x37')](db[_0x7347('0x5c')][_0x7347('0x34')]);_0x120de6[_0x7347('0x36')]=_[_0x7347('0x37')](_0x3f676b[_0x7347('0x36')]);_0x120de6['filters']=_[_0x7347('0x39')](_0x120de6[_0x7347('0x3a')],_0x120de6[_0x7347('0x36')]);_0x3ea2aa['attributes']=_[_0x7347('0x39')](_0x120de6[_0x7347('0x3a')],qs[_0x7347('0x3c')](_0x3f676b[_0x7347('0x36')][_0x7347('0x3c')]));_0x3ea2aa[_0x7347('0x3b')]=_0x3ea2aa[_0x7347('0x3b')]['length']?_0x3ea2aa[_0x7347('0x3b')]:_0x120de6['model'];_0x3ea2aa['order']=qs[_0x7347('0x3f')](_0x3f676b[_0x7347('0x36')][_0x7347('0x3f')]);_0x3ea2aa[_0x7347('0x40')]=qs[_0x7347('0x38')](_[_0x7347('0x41')](_0x3f676b[_0x7347('0x36')],_0x120de6[_0x7347('0x38')]));if(_0x3f676b[_0x7347('0x36')][_0x7347('0x42')]){_0x3ea2aa['where']=_[_0x7347('0x43')](_0x3ea2aa[_0x7347('0x40')],{'$or':_[_0x7347('0x32')](_0x3ea2aa[_0x7347('0x3b')],function(_0x4e70a0){var _0x143b58={};_0x143b58[_0x4e70a0]={'$like':'%'+_0x3f676b[_0x7347('0x36')][_0x7347('0x42')]+'%'};return _0x143b58;})});}_0x3ea2aa=_[_0x7347('0x43')]({},_0x3ea2aa,_0x3f676b['options']);return _0x414092[_0x7347('0x8d')](_0x3ea2aa);}})[_0x7347('0x2b')](function(_0x24559b){if(_0x24559b){_0x902290=_0x24559b[_0x7347('0x58')];if(!_0x3f676b[_0x7347('0x36')]['hasOwnProperty'](_0x7347('0x3e'))){_0x3ea2aa[_0x7347('0x23')]=qs[_0x7347('0x23')](_0x3f676b[_0x7347('0x36')][_0x7347('0x23')]);_0x3ea2aa[_0x7347('0x22')]=qs[_0x7347('0x22')](_0x3f676b['query'][_0x7347('0x22')]);}return _0x414092[_0x7347('0x8d')](_0x3ea2aa);}})[_0x7347('0x2b')](function(_0x2015b7){if(_0x2015b7){return _0x2015b7?{'count':_0x902290,'rows':_0x2015b7}:null;}})[_0x7347('0x2b')](respondWithResult(_0x49a908,null))[_0x7347('0x49')](handleError(_0x49a908,null));};
\ No newline at end of file
index c285368..bf850cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87b4=['hook','exports','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty'];(function(_0x2740bb,_0x481689){var _0x3c757a=function(_0xf53b90){while(--_0xf53b90){_0x2740bb['push'](_0x2740bb['shift']());}};_0x3c757a(++_0x481689);}(_0x87b4,0xc2));var _0x487b=function(_0x212961,_0x24b949){_0x212961=_0x212961-0x0;var _0x43e323=_0x87b4[_0x212961];return _0x43e323;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x487b('0x0'))['db']['FaxQueue'];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x487b('0x1')](0x0);var events={'afterCreate':_0x487b('0x2'),'afterUpdate':'update','afterDestroy':_0x487b('0x3')};function emitEvent(_0x40fba3){return function(_0x1fbe79,_0x2b14d5,_0x558227){FaxQueueEvents[_0x487b('0x4')](_0x40fba3+':'+_0x1fbe79['id'],_0x1fbe79);FaxQueueEvents['emit'](_0x40fba3,_0x1fbe79);_0x558227(null);};}for(var e in events){if(events[_0x487b('0x5')](e)){var event=events[e];FaxQueue[_0x487b('0x6')](e,emitEvent(event));}}module[_0x487b('0x7')]=FaxQueueEvents;
\ No newline at end of file
+var _0x6685=['remove','emit','hook','exports','../../mysqldb','FaxQueue','save'];(function(_0x5e386f,_0xbbf83c){var _0xc92e39=function(_0x32223d){while(--_0x32223d){_0x5e386f['push'](_0x5e386f['shift']());}};_0xc92e39(++_0xbbf83c);}(_0x6685,0x97));var _0x5668=function(_0x180f9a,_0x74b711){_0x180f9a=_0x180f9a-0x0;var _0x4344e3=_0x6685[_0x180f9a];return _0x4344e3;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0x5668('0x0'))['db'][_0x5668('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x5668('0x2'),'afterUpdate':'update','afterDestroy':_0x5668('0x3')};function emitEvent(_0x274e37){return function(_0x234d22,_0xc0f018,_0x4d7b40){FaxQueueEvents[_0x5668('0x4')](_0x274e37+':'+_0x234d22['id'],_0x234d22);FaxQueueEvents['emit'](_0x274e37,_0x234d22);_0x4d7b40(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x5668('0x5')](e,emitEvent(event));}}module[_0x5668('0x6')]=FaxQueueEvents;
\ No newline at end of file
index 0572f79..89c10ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0bfd=['request-promise','path','rimraf','./faxQueue.attributes','define','FaxQueue','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x55db1d,_0x2b843e){var _0xac8d7f=function(_0x24793a){while(--_0x24793a){_0x55db1d['push'](_0x55db1d['shift']());}};_0xac8d7f(++_0x2b843e);}(_0x0bfd,0x11a));var _0xd0bf=function(_0x4e7528,_0x5ad3c5){_0x4e7528=_0x4e7528-0x0;var _0x52fa95=_0x0bfd[_0x4e7528];return _0x52fa95;};'use strict';var _=require(_0xd0bf('0x0'));var util=require(_0xd0bf('0x1'));var logger=require(_0xd0bf('0x2'))(_0xd0bf('0x3'));var moment=require(_0xd0bf('0x4'));var BPromise=require(_0xd0bf('0x5'));var rp=require(_0xd0bf('0x6'));var fs=require('fs');var path=require(_0xd0bf('0x7'));var rimraf=require(_0xd0bf('0x8'));var config=require('../../config/environment');var attributes=require(_0xd0bf('0x9'));module['exports']=function(_0xbd0697,_0x334d5f){return _0xbd0697[_0xd0bf('0xa')](_0xd0bf('0xb'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1518=['define','FaxQueue','fax_queues','lodash','util','path','rimraf','../../config/environment','./faxQueue.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1518,0x143));var _0x8151=function(_0x6cd057,_0x445806){_0x6cd057=_0x6cd057-0x0;var _0x914b63=_0x1518[_0x6cd057];return _0x914b63;};'use strict';var _=require(_0x8151('0x0'));var util=require(_0x8151('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8151('0x2'));var rimraf=require(_0x8151('0x3'));var config=require(_0x8151('0x4'));var attributes=require(_0x8151('0x5'));module[_0x8151('0x6')]=function(_0x1187bd,_0x12b90d){return _0x1187bd[_0x8151('0x7')](_0x8151('0x8'),attributes,{'tableName':_0x8151('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e7e7f15..8721649 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccef=['map','include','ShowFaxQueue','find','raw','where','model','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./faxQueue.socket','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','options','attributes','limit'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xccef,0x19e));var _0xfcce=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xccef[_0x21a9d9];return _0x46adce;};'use strict';var _=require('lodash');var util=require(_0xfcce('0x0'));var moment=require('moment');var BPromise=require(_0xfcce('0x1'));var rs=require(_0xfcce('0x2'));var fs=require('fs');var Redis=require(_0xfcce('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcce('0x4'));var logger=require(_0xfcce('0x5'))(_0xfcce('0x6'));var config=require(_0xfcce('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfcce('0x8')]({'port':0x232a});config[_0xfcce('0x9')]=_['defaults'](config[_0xfcce('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xfcce('0xa'))(new Redis(config[_0xfcce('0x9')]));require(_0xfcce('0xb'))[_0xfcce('0xc')](socket);function respondWithRpcPromise(_0x20e219,_0x38a051,_0x17323e){return new BPromise(function(_0x52a06b,_0x392c4b){return client[_0xfcce('0xd')](_0x20e219,_0x17323e)[_0xfcce('0xe')](function(_0x143254){logger[_0xfcce('0xf')](_0xfcce('0x10'),_0x38a051,_0xfcce('0x11'));logger[_0xfcce('0x12')]('FaxQueue,\x20%s,\x20%s,\x20%s',_0x38a051,_0xfcce('0x11'),JSON[_0xfcce('0x13')](_0x143254));if(_0x143254[_0xfcce('0x14')]){if(_0x143254[_0xfcce('0x14')][_0xfcce('0x15')]===0x1f4){logger[_0xfcce('0x14')](_0xfcce('0x10'),_0x38a051,_0x143254[_0xfcce('0x14')][_0xfcce('0x16')]);return _0x392c4b(_0x143254[_0xfcce('0x14')][_0xfcce('0x16')]);}logger[_0xfcce('0x14')](_0xfcce('0x10'),_0x38a051,_0x143254[_0xfcce('0x14')][_0xfcce('0x16')]);return _0x52a06b(_0x143254[_0xfcce('0x14')][_0xfcce('0x16')]);}else{logger[_0xfcce('0xf')](_0xfcce('0x10'),_0x38a051,_0xfcce('0x11'));_0x52a06b(_0x143254[_0xfcce('0x17')]['message']);}})[_0xfcce('0x18')](function(_0x5231bd){logger[_0xfcce('0x14')](_0xfcce('0x10'),_0x38a051,_0x5231bd);_0x392c4b(_0x5231bd);});});}exports[_0xfcce('0x19')]=function(_0x4e6df2){var _0x2f31fe=this;return new Promise(function(_0x8cee3f,_0x5eb445){return db[_0xfcce('0x1a')]['findAll']({'raw':_0x4e6df2[_0xfcce('0x1b')]?_0x4e6df2[_0xfcce('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4e6df2[_0xfcce('0x1b')]?_0x4e6df2[_0xfcce('0x1b')]['where']||null:null,'attributes':_0x4e6df2[_0xfcce('0x1b')]?_0x4e6df2[_0xfcce('0x1b')][_0xfcce('0x1c')]||null:null,'limit':_0x4e6df2[_0xfcce('0x1b')]?_0x4e6df2['options'][_0xfcce('0x1d')]||null:null,'include':_0x4e6df2[_0xfcce('0x1b')]?_0x4e6df2['options']['include']?_[_0xfcce('0x1e')](_0x4e6df2[_0xfcce('0x1b')][_0xfcce('0x1f')],function(_0x1e8e6e){return{'model':db[_0x1e8e6e['model']],'as':_0x1e8e6e['as'],'attributes':_0x1e8e6e[_0xfcce('0x1c')],'include':_0x1e8e6e['include']?_['map'](_0x1e8e6e[_0xfcce('0x1f')],function(_0x5d95f0){return{'model':db[_0x5d95f0['model']],'as':_0x5d95f0['as'],'attributes':_0x5d95f0['attributes'],'include':_0x5d95f0[_0xfcce('0x1f')]?_[_0xfcce('0x1e')](_0x5d95f0[_0xfcce('0x1f')],function(_0x4040cf){return{'model':db[_0x4040cf['model']],'as':_0x4040cf['as'],'attributes':_0x4040cf[_0xfcce('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x559586){logger[_0xfcce('0xf')]('GetFaxQueue',_0x4e6df2);logger[_0xfcce('0x12')](_0xfcce('0x19'),_0x4e6df2,JSON[_0xfcce('0x13')](_0x559586));_0x8cee3f(_0x559586);})[_0xfcce('0x18')](function(_0x24229e){logger[_0xfcce('0x14')](_0xfcce('0x19'),_0x24229e['message'],_0x4e6df2);_0x5eb445(_0x2f31fe[_0xfcce('0x14')](0x1f4,_0x24229e[_0xfcce('0x16')]));});});};exports[_0xfcce('0x20')]=function(_0x29409d){var _0x4ae8c7=this;return new Promise(function(_0x3df5a9,_0x1f97b2){return db[_0xfcce('0x1a')][_0xfcce('0x21')]({'raw':_0x29409d[_0xfcce('0x1b')]?_0x29409d['options'][_0xfcce('0x22')]===undefined?!![]:![]:!![],'where':_0x29409d[_0xfcce('0x1b')]?_0x29409d[_0xfcce('0x1b')][_0xfcce('0x23')]||null:null,'attributes':_0x29409d[_0xfcce('0x1b')]?_0x29409d[_0xfcce('0x1b')][_0xfcce('0x1c')]||null:null,'include':_0x29409d['options']?_0x29409d[_0xfcce('0x1b')][_0xfcce('0x1f')]?_[_0xfcce('0x1e')](_0x29409d[_0xfcce('0x1b')]['include'],function(_0x446410){return{'model':db[_0x446410['model']],'as':_0x446410['as'],'attributes':_0x446410[_0xfcce('0x1c')],'include':_0x446410[_0xfcce('0x1f')]?_['map'](_0x446410[_0xfcce('0x1f')],function(_0x221a08){return{'model':db[_0x221a08[_0xfcce('0x24')]],'as':_0x221a08['as'],'attributes':_0x221a08['attributes'],'include':_0x221a08[_0xfcce('0x1f')]?_[_0xfcce('0x1e')](_0x221a08[_0xfcce('0x1f')],function(_0x14f6ff){return{'model':db[_0x14f6ff[_0xfcce('0x24')]],'as':_0x14f6ff['as'],'attributes':_0x14f6ff[_0xfcce('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xfcce('0xe')](function(_0xa88e30){logger[_0xfcce('0xf')]('ShowFaxQueue',_0x29409d);logger[_0xfcce('0x12')](_0xfcce('0x20'),_0x29409d,JSON['stringify'](_0xa88e30));_0x3df5a9(_0xa88e30);})[_0xfcce('0x18')](function(_0x24c80d){logger['error'](_0xfcce('0x20'),_0x24c80d[_0xfcce('0x16')],_0x29409d);_0x1f97b2(_0x4ae8c7[_0xfcce('0x14')](0x1f4,_0x24c80d[_0xfcce('0x16')]));});});};
\ No newline at end of file
+var _0xc010=['then','stringify','ShowFaxQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','redis','socket.io-emitter','register','info','FaxQueue,\x20%s,\x20%s','request\x20sent','debug','FaxQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetFaxQueue','FaxQueue','options','raw','where','attributes','limit','include','map','model'];(function(_0x538543,_0x22103f){var _0x5030a3=function(_0x4e855e){while(--_0x4e855e){_0x538543['push'](_0x538543['shift']());}};_0x5030a3(++_0x22103f);}(_0xc010,0x16b));var _0x0c01=function(_0x15f0eb,_0x190944){_0x15f0eb=_0x15f0eb-0x0;var _0x3e60a3=_0xc010[_0x15f0eb];return _0x3e60a3;};'use strict';var _=require(_0x0c01('0x0'));var util=require(_0x0c01('0x1'));var moment=require(_0x0c01('0x2'));var BPromise=require(_0x0c01('0x3'));var rs=require(_0x0c01('0x4'));var fs=require('fs');var Redis=require(_0x0c01('0x5'));var db=require(_0x0c01('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x0c01('0x7'))(_0x0c01('0x8'));var config=require(_0x0c01('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0c01('0xa')]['http']({'port':0x232a});config[_0x0c01('0xb')]=_['defaults'](config[_0x0c01('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x0c01('0xc'))(new Redis(config[_0x0c01('0xb')]));require('./faxQueue.socket')[_0x0c01('0xd')](socket);function respondWithRpcPromise(_0x2f16ca,_0x1c0e15,_0x3f5b9e){return new BPromise(function(_0x57b8d0,_0x562c1e){return client['request'](_0x2f16ca,_0x3f5b9e)['then'](function(_0x4678cb){logger[_0x0c01('0xe')](_0x0c01('0xf'),_0x1c0e15,_0x0c01('0x10'));logger[_0x0c01('0x11')](_0x0c01('0x12'),_0x1c0e15,_0x0c01('0x10'),JSON['stringify'](_0x4678cb));if(_0x4678cb['error']){if(_0x4678cb[_0x0c01('0x13')]['code']===0x1f4){logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);return _0x562c1e(_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);}logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x4678cb[_0x0c01('0x13')]['message']);return _0x57b8d0(_0x4678cb[_0x0c01('0x13')][_0x0c01('0x14')]);}else{logger[_0x0c01('0xe')](_0x0c01('0xf'),_0x1c0e15,_0x0c01('0x10'));_0x57b8d0(_0x4678cb[_0x0c01('0x15')][_0x0c01('0x14')]);}})[_0x0c01('0x16')](function(_0x266430){logger[_0x0c01('0x13')](_0x0c01('0xf'),_0x1c0e15,_0x266430);_0x562c1e(_0x266430);});});}exports[_0x0c01('0x17')]=function(_0x226674){var _0x3efa3a=this;return new Promise(function(_0x322e09,_0x5abb24){return db[_0x0c01('0x18')]['findAll']({'raw':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1a')]===undefined?!![]:![]:!![],'where':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1b')]||null:null,'attributes':_0x226674['options']?_0x226674['options'][_0x0c01('0x1c')]||null:null,'limit':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1d')]||null:null,'include':_0x226674[_0x0c01('0x19')]?_0x226674[_0x0c01('0x19')][_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x226674[_0x0c01('0x19')][_0x0c01('0x1e')],function(_0x122272){return{'model':db[_0x122272[_0x0c01('0x20')]],'as':_0x122272['as'],'attributes':_0x122272[_0x0c01('0x1c')],'include':_0x122272['include']?_[_0x0c01('0x1f')](_0x122272['include'],function(_0x5eafc5){return{'model':db[_0x5eafc5['model']],'as':_0x5eafc5['as'],'attributes':_0x5eafc5[_0x0c01('0x1c')],'include':_0x5eafc5[_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x5eafc5['include'],function(_0x1c3184){return{'model':db[_0x1c3184[_0x0c01('0x20')]],'as':_0x1c3184['as'],'attributes':_0x1c3184[_0x0c01('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x0c01('0x21')](function(_0x3f4edc){logger[_0x0c01('0xe')]('GetFaxQueue',_0x226674);logger['debug'](_0x0c01('0x17'),_0x226674,JSON[_0x0c01('0x22')](_0x3f4edc));_0x322e09(_0x3f4edc);})[_0x0c01('0x16')](function(_0x599621){logger[_0x0c01('0x13')](_0x0c01('0x17'),_0x599621[_0x0c01('0x14')],_0x226674);_0x5abb24(_0x3efa3a[_0x0c01('0x13')](0x1f4,_0x599621['message']));});});};exports['ShowFaxQueue']=function(_0x6a71c6){var _0x103a3d=this;return new Promise(function(_0x4ad442,_0x26f0e7){return db[_0x0c01('0x18')]['find']({'raw':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1a')]===undefined?!![]:![]:!![],'where':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1b')]||null:null,'attributes':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1c')]||null:null,'include':_0x6a71c6[_0x0c01('0x19')]?_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1e')]?_['map'](_0x6a71c6[_0x0c01('0x19')][_0x0c01('0x1e')],function(_0x26de26){return{'model':db[_0x26de26[_0x0c01('0x20')]],'as':_0x26de26['as'],'attributes':_0x26de26[_0x0c01('0x1c')],'include':_0x26de26['include']?_[_0x0c01('0x1f')](_0x26de26[_0x0c01('0x1e')],function(_0x8880c2){return{'model':db[_0x8880c2['model']],'as':_0x8880c2['as'],'attributes':_0x8880c2[_0x0c01('0x1c')],'include':_0x8880c2[_0x0c01('0x1e')]?_[_0x0c01('0x1f')](_0x8880c2[_0x0c01('0x1e')],function(_0x2eb02a){return{'model':db[_0x2eb02a[_0x0c01('0x20')]],'as':_0x2eb02a['as'],'attributes':_0x2eb02a['attributes']};}):[]};}):[]};}):[]:[]})[_0x0c01('0x21')](function(_0xe74c4e){logger[_0x0c01('0xe')](_0x0c01('0x23'),_0x6a71c6);logger[_0x0c01('0x11')]('ShowFaxQueue',_0x6a71c6,JSON['stringify'](_0xe74c4e));_0x4ad442(_0xe74c4e);})[_0x0c01('0x16')](function(_0x5a8c2a){logger['error'](_0x0c01('0x23'),_0x5a8c2a[_0x0c01('0x14')],_0x6a71c6);_0x26f0e7(_0x103a3d[_0x0c01('0x13')](0x1f4,_0x5a8c2a[_0x0c01('0x14')]));});});};
\ No newline at end of file
index a4ebb47..7785c49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x938d=['./faxQueue.events','save','update','removeListener','length'];(function(_0x5324a2,_0x55f16c){var _0x4f9892=function(_0xa384e){while(--_0xa384e){_0x5324a2['push'](_0x5324a2['shift']());}};_0x4f9892(++_0x55f16c);}(_0x938d,0x122));var _0xd938=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x938d[_0x3dd15e];return _0x231fd0;};'use strict';var FaxQueueEvents=require(_0xd938('0x0'));var events=[_0xd938('0x1'),'remove',_0xd938('0x2')];function createListener(_0x29cf5f,_0x221132){return function(_0x5349c7){_0x221132['emit'](_0x29cf5f,_0x5349c7);};}function removeListener(_0xc9f24b,_0x429911){return function(){FaxQueueEvents[_0xd938('0x3')](_0xc9f24b,_0x429911);};}exports['register']=function(_0x3a81d2){for(var _0xb5e113=0x0,_0x1ed46b=events[_0xd938('0x4')];_0xb5e113<_0x1ed46b;_0xb5e113++){var _0x678164=events[_0xb5e113];var _0x419e0b=createListener('faxQueue:'+_0x678164,_0x3a81d2);FaxQueueEvents['on'](_0x678164,_0x419e0b);}};
\ No newline at end of file
+var _0xd1f9=['emit','removeListener','length','faxQueue:','remove','update'];(function(_0x19f2a8,_0x1bc840){var _0x596237=function(_0x4afbad){while(--_0x4afbad){_0x19f2a8['push'](_0x19f2a8['shift']());}};_0x596237(++_0x1bc840);}(_0xd1f9,0x88));var _0x9d1f=function(_0x302d0b,_0x2c7dbb){_0x302d0b=_0x302d0b-0x0;var _0x3b9e1d=_0xd1f9[_0x302d0b];return _0x3b9e1d;};'use strict';var FaxQueueEvents=require('./faxQueue.events');var events=['save',_0x9d1f('0x0'),_0x9d1f('0x1')];function createListener(_0x3ebd6f,_0x1b7dcf){return function(_0x2814e4){_0x1b7dcf[_0x9d1f('0x2')](_0x3ebd6f,_0x2814e4);};}function removeListener(_0x283b14,_0xf56850){return function(){FaxQueueEvents[_0x9d1f('0x3')](_0x283b14,_0xf56850);};}exports['register']=function(_0x3c4bad){for(var _0x1a72d8=0x0,_0x2c146b=events[_0x9d1f('0x4')];_0x1a72d8<_0x2c146b;_0x1a72d8++){var _0x10ce17=events[_0x1a72d8];var _0x270b08=createListener(_0x9d1f('0x5')+_0x10ce17,_0x3c4bad);FaxQueueEvents['on'](_0x10ce17,_0x270b08);}};
\ No newline at end of file
index 67614aa..1051816 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa751=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getAgents','post','/:id/users','addAgents','put','/:id','destroy','delete','removeAgents','exports','multer','util','path','connect-timeout','Router'];(function(_0xeb67cb,_0x3facda){var _0xc8fe96=function(_0x4074a2){while(--_0x4074a2){_0xeb67cb['push'](_0xeb67cb['shift']());}};_0xc8fe96(++_0x3facda);}(_0xa751,0x175));var _0x1a75=function(_0x1eb201,_0x4101e0){_0x1eb201=_0x1eb201-0x0;var _0x4cbe3c=_0xa751[_0x1eb201];return _0x4cbe3c;};'use strict';var multer=require(_0x1a75('0x0'));var util=require(_0x1a75('0x1'));var path=require(_0x1a75('0x2'));var timeout=require(_0x1a75('0x3'));var express=require('express');var router=express[_0x1a75('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x1a75('0x5'));var interaction=require(_0x1a75('0x6'));var config=require(_0x1a75('0x7'));var controller=require('./faxQueue.controller');router[_0x1a75('0x8')]('/',auth[_0x1a75('0x9')](),controller[_0x1a75('0xa')]);router[_0x1a75('0x8')](_0x1a75('0xb'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xc')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x1a75('0xd')]);router[_0x1a75('0x8')](_0x1a75('0xe'),auth[_0x1a75('0x9')](),controller[_0x1a75('0xf')]);router[_0x1a75('0x8')](_0x1a75('0x10'),auth[_0x1a75('0x9')](),controller['getTeams']);router['get']('/:id/users',auth[_0x1a75('0x9')](),controller[_0x1a75('0x11')]);router[_0x1a75('0x12')]('/',auth[_0x1a75('0x9')](),controller['create']);router['post'](_0x1a75('0x10'),auth[_0x1a75('0x9')](),controller['addTeams']);router[_0x1a75('0x12')](_0x1a75('0x13'),auth['isAuthenticated'](),controller[_0x1a75('0x14')]);router[_0x1a75('0x15')](_0x1a75('0x16'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1a75('0x16'),auth[_0x1a75('0x9')](),controller[_0x1a75('0x17')]);router[_0x1a75('0x18')](_0x1a75('0x10'),auth[_0x1a75('0x9')](),controller['removeTeams']);router[_0x1a75('0x18')]('/:id/users',auth['isAuthenticated'](),controller[_0x1a75('0x19')]);module[_0x1a75('0x1a')]=router;
\ No newline at end of file
+var _0x7ee1=['destroy','removeTeams','removeAgents','multer','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./faxQueue.controller','get','index','isAuthenticated','/:id','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','update','delete'];(function(_0x117473,_0x485375){var _0x38711a=function(_0x33e119){while(--_0x33e119){_0x117473['push'](_0x117473['shift']());}};_0x38711a(++_0x485375);}(_0x7ee1,0x8d));var _0x17ee=function(_0x5c1058,_0x3779c3){_0x5c1058=_0x5c1058-0x0;var _0x265798=_0x7ee1[_0x5c1058];return _0x265798;};'use strict';var multer=require(_0x17ee('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x17ee('0x1'));var router=express[_0x17ee('0x2')]();var fs_extra=require(_0x17ee('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x17ee('0x4'));var config=require(_0x17ee('0x5'));var controller=require(_0x17ee('0x6'));router[_0x17ee('0x7')]('/',auth['isAuthenticated'](),controller[_0x17ee('0x8')]);router[_0x17ee('0x7')]('/describe',auth[_0x17ee('0x9')](),controller['describe']);router[_0x17ee('0x7')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller['show']);router['get']('/:id/members',auth[_0x17ee('0x9')](),controller['getMembers']);router[_0x17ee('0x7')](_0x17ee('0xb'),auth[_0x17ee('0x9')](),controller[_0x17ee('0xc')]);router['get'](_0x17ee('0xd'),auth['isAuthenticated'](),controller[_0x17ee('0xe')]);router[_0x17ee('0xf')]('/',auth[_0x17ee('0x9')](),controller[_0x17ee('0x10')]);router[_0x17ee('0xf')](_0x17ee('0xb'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x11')]);router[_0x17ee('0xf')](_0x17ee('0xd'),auth[_0x17ee('0x9')](),controller['addAgents']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x17ee('0x12')]);router[_0x17ee('0x13')](_0x17ee('0xa'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x14')]);router[_0x17ee('0x13')](_0x17ee('0xb'),auth['isAuthenticated'](),controller[_0x17ee('0x15')]);router[_0x17ee('0x13')](_0x17ee('0xd'),auth[_0x17ee('0x9')](),controller[_0x17ee('0x16')]);module['exports']=router;
\ No newline at end of file
index 09abf60..392a9cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x06dc=['DATE','sequelize','exports','STRING'];(function(_0x350079,_0x510691){var _0x220852=function(_0x4e7d34){while(--_0x4e7d34){_0x350079['push'](_0x350079['shift']());}};_0x220852(++_0x510691);}(_0x06dc,0x89));var _0xc06d=function(_0x286bfb,_0x46ac3c){_0x286bfb=_0x286bfb-0x0;var _0x52b683=_0x06dc[_0x286bfb];return _0x52b683;};'use strict';var moment=require('moment');var Sequelize=require(_0xc06d('0x0'));module[_0xc06d('0x1')]={'uniqueid':{'type':Sequelize[_0xc06d('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xc06d('0x2')]},'joinAt':{'type':Sequelize[_0xc06d('0x3')]},'leaveAt':{'type':Sequelize[_0xc06d('0x3')]},'acceptAt':{'type':Sequelize[_0xc06d('0x3')]},'exitAt':{'type':Sequelize[_0xc06d('0x3')]},'reason':{'type':Sequelize[_0xc06d('0x2')]}};
\ No newline at end of file
+var _0x1923=['DATE','sequelize','exports','STRING'];(function(_0x4a3898,_0x4c9853){var _0x25ceb0=function(_0x528b6d){while(--_0x528b6d){_0x4a3898['push'](_0x4a3898['shift']());}};_0x25ceb0(++_0x4c9853);}(_0x1923,0x71));var _0x3192=function(_0xb751c2,_0x1f61a9){_0xb751c2=_0xb751c2-0x0;var _0x2a03b4=_0x1923[_0xb751c2];return _0x2a03b4;};'use strict';var moment=require('moment');var Sequelize=require(_0x3192('0x0'));module[_0x3192('0x1')]={'uniqueid':{'type':Sequelize[_0x3192('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x3192('0x2')]},'joinAt':{'type':Sequelize[_0x3192('0x3')]},'leaveAt':{'type':Sequelize[_0x3192('0x3')]},'acceptAt':{'type':Sequelize[_0x3192('0x3')]},'exitAt':{'type':Sequelize[_0x3192('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 8662bdd..14e9644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa73a=['papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error','map','FaxQueueReport','rawAttributes','type','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','VIRTUAL','name','includeAll','include','findAll','rows','show','params','length','options','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring'];(function(_0xfb4a69,_0x2820af){var _0x53cfde=function(_0x46c0d6){while(--_0x46c0d6){_0xfb4a69['push'](_0xfb4a69['shift']());}};_0x53cfde(++_0x2820af);}(_0xa73a,0x82));var _0xaa73=function(_0x4bacb6,_0x2b299d){_0x4bacb6=_0x4bacb6-0x0;var _0x58c029=_0xa73a[_0x4bacb6];return _0x58c029;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa73('0x0'));var zipdir=require(_0xaa73('0x1'));var jsonpatch=require(_0xaa73('0x2'));var rp=require(_0xaa73('0x3'));var moment=require(_0xaa73('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xaa73('0x5'));var sox=require(_0xaa73('0x6'));var csv=require(_0xaa73('0x7'));var ejs=require(_0xaa73('0x8'));var fs=require('fs');var fs_extra=require(_0xaa73('0x9'));var _=require(_0xaa73('0xa'));var squel=require(_0xaa73('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xaa73('0xc'));var toCsv=require(_0xaa73('0x7'));var querystring=require(_0xaa73('0xd'));var Papa=require(_0xaa73('0xe'));var Redis=require(_0xaa73('0xf'));var authService=require(_0xaa73('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaa73('0x11'));var logger=require('../../config/logger')(_0xaa73('0x12'));var utils=require('../../config/utils');var config=require(_0xaa73('0x13'));var licenseUtil=require(_0xaa73('0x14'));var db=require(_0xaa73('0x15'))['db'];function respondWithStatusCode(_0x3bfcfa,_0x44915e){_0x44915e=_0x44915e||0xcc;return function(_0x213aa1){if(_0x213aa1){return _0x3bfcfa['sendStatus'](_0x44915e);}return _0x3bfcfa[_0xaa73('0x16')](_0x44915e)[_0xaa73('0x17')]();};}function respondWithResult(_0x29128f,_0x457922){_0x457922=_0x457922||0xc8;return function(_0xc4a8e){if(_0xc4a8e){return _0x29128f[_0xaa73('0x16')](_0x457922)[_0xaa73('0x18')](_0xc4a8e);}};}function respondWithFilteredResult(_0x626226,_0x339c82){return function(_0x5a4174){if(_0x5a4174){var _0x409d07=typeof _0x339c82['offset']===_0xaa73('0x19')&&typeof _0x339c82[_0xaa73('0x1a')]===_0xaa73('0x19');var _0x4af9df=_0x5a4174['count'];var _0x3ce616=_0x409d07?0x0:_0x339c82['offset'];var _0x9ec989=_0x409d07?_0x5a4174[_0xaa73('0x1b')]:_0x339c82['offset']+_0x339c82[_0xaa73('0x1a')];var _0x48420a;if(_0x9ec989>=_0x4af9df){_0x9ec989=_0x4af9df;_0x48420a=0xc8;}else{_0x48420a=0xce;}_0x626226[_0xaa73('0x16')](_0x48420a);return _0x626226[_0xaa73('0x1c')](_0xaa73('0x1d'),_0x3ce616+'-'+_0x9ec989+'/'+_0x4af9df)[_0xaa73('0x18')](_0x5a4174);}return null;};}function patchUpdates(_0x4de045){return function(_0x551790){try{jsonpatch['apply'](_0x551790,_0x4de045,!![]);}catch(_0xf43dd0){return BPromise[_0xaa73('0x1e')](_0xf43dd0);}return _0x551790[_0xaa73('0x1f')]();};}function saveUpdates(_0x24ce6b,_0x53b746){return function(_0x5ac0c5){if(_0x5ac0c5){return _0x5ac0c5[_0xaa73('0x20')](_0x24ce6b)[_0xaa73('0x21')](function(_0x27243f){return _0x27243f;});}return null;};}function removeEntity(_0x2d7798,_0x346d57){return function(_0x482795){if(_0x482795){return _0x482795[_0xaa73('0x22')]()[_0xaa73('0x21')](function(){_0x2d7798[_0xaa73('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3cae16,_0x88731){return function(_0x2e34a8){if(!_0x2e34a8){_0x3cae16[_0xaa73('0x23')](0x194);}return _0x2e34a8;};}function handleError(_0x3af228,_0x1253aa){_0x1253aa=_0x1253aa||0x1f4;return function(_0x1ed112){logger[_0xaa73('0x24')](_0x1ed112['stack']);if(_0x1ed112['name']){delete _0x1ed112['name'];}_0x3af228[_0xaa73('0x16')](_0x1253aa)['send'](_0x1ed112);};}exports['index']=function(_0x5617da,_0x7b7f86){var _0x344e31={},_0x5613a4={},_0x532ded={'count':0x0,'rows':[]};var _0x5ce12c=_[_0xaa73('0x25')](db[_0xaa73('0x26')][_0xaa73('0x27')],function(_0xa9c83d){return{'name':_0xa9c83d['fieldName'],'type':_0xa9c83d[_0xaa73('0x28')]['key']};});_0x5613a4[_0xaa73('0x29')]=_['map'](_0x5ce12c,'name');_0x5613a4[_0xaa73('0x2a')]=_[_0xaa73('0x2b')](_0x5617da[_0xaa73('0x2a')]);_0x5613a4[_0xaa73('0x2c')]=_['intersection'](_0x5613a4[_0xaa73('0x29')],_0x5613a4[_0xaa73('0x2a')]);_0x344e31[_0xaa73('0x2d')]=_[_0xaa73('0x2e')](_0x5613a4[_0xaa73('0x29')],qs[_0xaa73('0x2f')](_0x5617da[_0xaa73('0x2a')][_0xaa73('0x2f')]));_0x344e31[_0xaa73('0x2d')]=_0x344e31['attributes']['length']?_0x344e31['attributes']:_0x5613a4[_0xaa73('0x29')];if(!_0x5617da[_0xaa73('0x2a')][_0xaa73('0x30')](_0xaa73('0x31'))){_0x344e31[_0xaa73('0x1a')]=qs[_0xaa73('0x1a')](_0x5617da[_0xaa73('0x2a')][_0xaa73('0x1a')]);_0x344e31[_0xaa73('0x32')]=qs[_0xaa73('0x32')](_0x5617da['query']['offset']);}_0x344e31[_0xaa73('0x33')]=qs[_0xaa73('0x34')](_0x5617da[_0xaa73('0x2a')][_0xaa73('0x34')]);_0x344e31[_0xaa73('0x35')]=qs[_0xaa73('0x2c')](_[_0xaa73('0x36')](_0x5617da[_0xaa73('0x2a')],_0x5613a4['filters']),_0x5ce12c);if(_0x5617da[_0xaa73('0x2a')][_0xaa73('0x37')]){_0x344e31[_0xaa73('0x35')]=_[_0xaa73('0x38')](_0x344e31[_0xaa73('0x35')],{'$or':_[_0xaa73('0x25')](_0x5ce12c,function(_0x478ef9){if(_0x478ef9[_0xaa73('0x28')]!==_0xaa73('0x39')){var _0x3127db={};_0x3127db[_0x478ef9[_0xaa73('0x3a')]]={'$like':'%'+_0x5617da['query'][_0xaa73('0x37')]+'%'};return _0x3127db;}})});}_0x344e31=_['merge']({},_0x344e31,_0x5617da['options']);var _0x1f0e92={'where':_0x344e31[_0xaa73('0x35')]};return db['FaxQueueReport']['count'](_0x1f0e92)['then'](function(_0x48f3e2){_0x532ded[_0xaa73('0x1b')]=_0x48f3e2;if(_0x5617da[_0xaa73('0x2a')][_0xaa73('0x3b')]){_0x344e31[_0xaa73('0x3c')]=[{'all':!![]}];}return db['FaxQueueReport'][_0xaa73('0x3d')](_0x344e31);})[_0xaa73('0x21')](function(_0x44d331){_0x532ded[_0xaa73('0x3e')]=_0x44d331;return _0x532ded;})[_0xaa73('0x21')](respondWithFilteredResult(_0x7b7f86,_0x344e31))['catch'](handleError(_0x7b7f86,null));};exports[_0xaa73('0x3f')]=function(_0x11ac57,_0x28d590){var _0x534e41={'raw':!![],'where':{'id':_0x11ac57[_0xaa73('0x40')]['id']}},_0x3ba022={};_0x3ba022[_0xaa73('0x29')]=_[_0xaa73('0x2b')](db[_0xaa73('0x26')][_0xaa73('0x27')]);_0x3ba022[_0xaa73('0x2a')]=_[_0xaa73('0x2b')](_0x11ac57['query']);_0x3ba022[_0xaa73('0x2c')]=_[_0xaa73('0x2e')](_0x3ba022[_0xaa73('0x29')],_0x3ba022[_0xaa73('0x2a')]);_0x534e41[_0xaa73('0x2d')]=_[_0xaa73('0x2e')](_0x3ba022[_0xaa73('0x29')],qs['fields'](_0x11ac57['query'][_0xaa73('0x2f')]));_0x534e41[_0xaa73('0x2d')]=_0x534e41[_0xaa73('0x2d')][_0xaa73('0x41')]?_0x534e41[_0xaa73('0x2d')]:_0x3ba022['model'];if(_0x11ac57[_0xaa73('0x2a')][_0xaa73('0x3b')]){_0x534e41[_0xaa73('0x3c')]=[{'all':!![]}];}_0x534e41=_[_0xaa73('0x38')]({},_0x534e41,_0x11ac57[_0xaa73('0x42')]);return db[_0xaa73('0x26')][_0xaa73('0x43')](_0x534e41)[_0xaa73('0x21')](handleEntityNotFound(_0x28d590,null))['then'](respondWithResult(_0x28d590,null))[_0xaa73('0x44')](handleError(_0x28d590,null));};exports[_0xaa73('0x45')]=function(_0x48fbdb,_0x5d9a5b){return db[_0xaa73('0x26')]['create'](_0x48fbdb[_0xaa73('0x46')],{})['then'](respondWithResult(_0x5d9a5b,0xc9))['catch'](handleError(_0x5d9a5b,null));};exports[_0xaa73('0x20')]=function(_0x3d386b,_0x2dd8e0){if(_0x3d386b[_0xaa73('0x46')]['id']){delete _0x3d386b[_0xaa73('0x46')]['id'];}return db[_0xaa73('0x26')][_0xaa73('0x43')]({'where':{'id':_0x3d386b[_0xaa73('0x40')]['id']}})['then'](handleEntityNotFound(_0x2dd8e0,null))[_0xaa73('0x21')](saveUpdates(_0x3d386b[_0xaa73('0x46')],null))['then'](respondWithResult(_0x2dd8e0,null))[_0xaa73('0x44')](handleError(_0x2dd8e0,null));};exports[_0xaa73('0x22')]=function(_0x14bda5,_0x4ac6c8){return db['FaxQueueReport']['find']({'where':{'id':_0x14bda5[_0xaa73('0x40')]['id']}})['then'](handleEntityNotFound(_0x4ac6c8,null))['then'](removeEntity(_0x4ac6c8,null))[_0xaa73('0x44')](handleError(_0x4ac6c8,null));};exports['describe']=function(_0x326ca4,_0x4ca2b7){return db['FaxQueueReport'][_0xaa73('0x47')]()['then'](respondWithResult(_0x4ca2b7,null))[_0xaa73('0x44')](handleError(_0x4ca2b7,null));};
\ No newline at end of file
+var _0x6822=['pick','filter','VIRTUAL','options','include','rows','catch','show','params','keys','includeAll','merge','create','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','apply','reject','save','update','then','destroy','stack','name','send','index','map','FaxQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where'];(function(_0x2595a6,_0x48fc45){var _0x460197=function(_0x18f9db){while(--_0x18f9db){_0x2595a6['push'](_0x2595a6['shift']());}};_0x460197(++_0x48fc45);}(_0x6822,0x18c));var _0x2682=function(_0xe14bee,_0x2233a8){_0xe14bee=_0xe14bee-0x0;var _0x4280ba=_0x6822[_0xe14bee];return _0x4280ba;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2682('0x0'));var zipdir=require(_0x2682('0x1'));var jsonpatch=require(_0x2682('0x2'));var rp=require(_0x2682('0x3'));var moment=require('moment');var BPromise=require(_0x2682('0x4'));var Mustache=require(_0x2682('0x5'));var util=require(_0x2682('0x6'));var path=require(_0x2682('0x7'));var sox=require(_0x2682('0x8'));var csv=require(_0x2682('0x9'));var ejs=require(_0x2682('0xa'));var fs=require('fs');var fs_extra=require(_0x2682('0xb'));var _=require(_0x2682('0xc'));var squel=require(_0x2682('0xd'));var crypto=require(_0x2682('0xe'));var jsforce=require(_0x2682('0xf'));var deskjs=require(_0x2682('0x10'));var toCsv=require(_0x2682('0x9'));var querystring=require('querystring');var Papa=require(_0x2682('0x11'));var Redis=require(_0x2682('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2682('0x13'));var logger=require(_0x2682('0x14'))('api');var utils=require(_0x2682('0x15'));var config=require(_0x2682('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2682('0x17'))['db'];function respondWithStatusCode(_0x2b29eb,_0x1feca6){_0x1feca6=_0x1feca6||0xcc;return function(_0x2cd01f){if(_0x2cd01f){return _0x2b29eb[_0x2682('0x18')](_0x1feca6);}return _0x2b29eb[_0x2682('0x19')](_0x1feca6)[_0x2682('0x1a')]();};}function respondWithResult(_0x41ec1c,_0xfb9e0c){_0xfb9e0c=_0xfb9e0c||0xc8;return function(_0x18dab9){if(_0x18dab9){return _0x41ec1c[_0x2682('0x19')](_0xfb9e0c)[_0x2682('0x1b')](_0x18dab9);}};}function respondWithFilteredResult(_0x412a0c,_0x1ac17b){return function(_0x212aaf){if(_0x212aaf){var _0x545ba8=typeof _0x1ac17b['offset']===_0x2682('0x1c')&&typeof _0x1ac17b[_0x2682('0x1d')]===_0x2682('0x1c');var _0x4df201=_0x212aaf[_0x2682('0x1e')];var _0x494946=_0x545ba8?0x0:_0x1ac17b[_0x2682('0x1f')];var _0x19391e=_0x545ba8?_0x212aaf[_0x2682('0x1e')]:_0x1ac17b[_0x2682('0x1f')]+_0x1ac17b[_0x2682('0x1d')];var _0x34cf1d;if(_0x19391e>=_0x4df201){_0x19391e=_0x4df201;_0x34cf1d=0xc8;}else{_0x34cf1d=0xce;}_0x412a0c['status'](_0x34cf1d);return _0x412a0c[_0x2682('0x20')]('Content-Range',_0x494946+'-'+_0x19391e+'/'+_0x4df201)[_0x2682('0x1b')](_0x212aaf);}return null;};}function patchUpdates(_0x2e03e6){return function(_0x348924){try{jsonpatch[_0x2682('0x21')](_0x348924,_0x2e03e6,!![]);}catch(_0x23641e){return BPromise[_0x2682('0x22')](_0x23641e);}return _0x348924[_0x2682('0x23')]();};}function saveUpdates(_0x49c98a,_0x57ae26){return function(_0x599726){if(_0x599726){return _0x599726[_0x2682('0x24')](_0x49c98a)[_0x2682('0x25')](function(_0x518c65){return _0x518c65;});}return null;};}function removeEntity(_0xa27b38,_0x35aa4c){return function(_0x2b2d81){if(_0x2b2d81){return _0x2b2d81[_0x2682('0x26')]()['then'](function(){_0xa27b38[_0x2682('0x19')](0xcc)[_0x2682('0x1a')]();});}};}function handleEntityNotFound(_0x361791,_0x1d541e){return function(_0x431fbd){if(!_0x431fbd){_0x361791[_0x2682('0x18')](0x194);}return _0x431fbd;};}function handleError(_0x5d325b,_0x4afd1d){_0x4afd1d=_0x4afd1d||0x1f4;return function(_0x48eee6){logger['error'](_0x48eee6[_0x2682('0x27')]);if(_0x48eee6[_0x2682('0x28')]){delete _0x48eee6[_0x2682('0x28')];}_0x5d325b[_0x2682('0x19')](_0x4afd1d)[_0x2682('0x29')](_0x48eee6);};}exports[_0x2682('0x2a')]=function(_0x893e02,_0x90f2ec){var _0x591660={},_0x9384b5={},_0x8b809b={'count':0x0,'rows':[]};var _0x545543=_[_0x2682('0x2b')](db[_0x2682('0x2c')][_0x2682('0x2d')],function(_0x226b98){return{'name':_0x226b98[_0x2682('0x2e')],'type':_0x226b98[_0x2682('0x2f')][_0x2682('0x30')]};});_0x9384b5[_0x2682('0x31')]=_[_0x2682('0x2b')](_0x545543,_0x2682('0x28'));_0x9384b5[_0x2682('0x32')]=_['keys'](_0x893e02[_0x2682('0x32')]);_0x9384b5[_0x2682('0x33')]=_[_0x2682('0x34')](_0x9384b5[_0x2682('0x31')],_0x9384b5[_0x2682('0x32')]);_0x591660['attributes']=_['intersection'](_0x9384b5[_0x2682('0x31')],qs[_0x2682('0x35')](_0x893e02[_0x2682('0x32')]['fields']));_0x591660[_0x2682('0x36')]=_0x591660[_0x2682('0x36')][_0x2682('0x37')]?_0x591660[_0x2682('0x36')]:_0x9384b5['model'];if(!_0x893e02['query'][_0x2682('0x38')]('nolimit')){_0x591660[_0x2682('0x1d')]=qs[_0x2682('0x1d')](_0x893e02[_0x2682('0x32')][_0x2682('0x1d')]);_0x591660[_0x2682('0x1f')]=qs[_0x2682('0x1f')](_0x893e02['query']['offset']);}_0x591660[_0x2682('0x39')]=qs['sort'](_0x893e02[_0x2682('0x32')][_0x2682('0x3a')]);_0x591660[_0x2682('0x3b')]=qs[_0x2682('0x33')](_[_0x2682('0x3c')](_0x893e02[_0x2682('0x32')],_0x9384b5[_0x2682('0x33')]),_0x545543);if(_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]){_0x591660[_0x2682('0x3b')]=_['merge'](_0x591660[_0x2682('0x3b')],{'$or':_['map'](_0x545543,function(_0x5a812d){if(_0x5a812d[_0x2682('0x2f')]!==_0x2682('0x3e')){var _0x3ea618={};_0x3ea618[_0x5a812d[_0x2682('0x28')]]={'$like':'%'+_0x893e02[_0x2682('0x32')][_0x2682('0x3d')]+'%'};return _0x3ea618;}})});}_0x591660=_['merge']({},_0x591660,_0x893e02[_0x2682('0x3f')]);var _0x19099d={'where':_0x591660[_0x2682('0x3b')]};return db[_0x2682('0x2c')][_0x2682('0x1e')](_0x19099d)['then'](function(_0x1f46cf){_0x8b809b['count']=_0x1f46cf;if(_0x893e02[_0x2682('0x32')]['includeAll']){_0x591660[_0x2682('0x40')]=[{'all':!![]}];}return db[_0x2682('0x2c')]['findAll'](_0x591660);})[_0x2682('0x25')](function(_0x392c4b){_0x8b809b[_0x2682('0x41')]=_0x392c4b;return _0x8b809b;})[_0x2682('0x25')](respondWithFilteredResult(_0x90f2ec,_0x591660))[_0x2682('0x42')](handleError(_0x90f2ec,null));};exports[_0x2682('0x43')]=function(_0x34a6c3,_0x209da8){var _0x34adb0={'raw':!![],'where':{'id':_0x34a6c3[_0x2682('0x44')]['id']}},_0x16ba45={};_0x16ba45[_0x2682('0x31')]=_['keys'](db['FaxQueueReport'][_0x2682('0x2d')]);_0x16ba45[_0x2682('0x32')]=_[_0x2682('0x45')](_0x34a6c3[_0x2682('0x32')]);_0x16ba45[_0x2682('0x33')]=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],_0x16ba45['query']);_0x34adb0['attributes']=_[_0x2682('0x34')](_0x16ba45[_0x2682('0x31')],qs[_0x2682('0x35')](_0x34a6c3[_0x2682('0x32')][_0x2682('0x35')]));_0x34adb0['attributes']=_0x34adb0['attributes'][_0x2682('0x37')]?_0x34adb0[_0x2682('0x36')]:_0x16ba45[_0x2682('0x31')];if(_0x34a6c3[_0x2682('0x32')][_0x2682('0x46')]){_0x34adb0[_0x2682('0x40')]=[{'all':!![]}];}_0x34adb0=_[_0x2682('0x47')]({},_0x34adb0,_0x34a6c3[_0x2682('0x3f')]);return db[_0x2682('0x2c')]['find'](_0x34adb0)[_0x2682('0x25')](handleEntityNotFound(_0x209da8,null))['then'](respondWithResult(_0x209da8,null))['catch'](handleError(_0x209da8,null));};exports[_0x2682('0x48')]=function(_0x29243c,_0x487779){return db['FaxQueueReport'][_0x2682('0x48')](_0x29243c[_0x2682('0x49')],{})[_0x2682('0x25')](respondWithResult(_0x487779,0xc9))[_0x2682('0x42')](handleError(_0x487779,null));};exports[_0x2682('0x24')]=function(_0xf3cd03,_0x28805b){if(_0xf3cd03[_0x2682('0x49')]['id']){delete _0xf3cd03[_0x2682('0x49')]['id'];}return db[_0x2682('0x2c')]['find']({'where':{'id':_0xf3cd03[_0x2682('0x44')]['id']}})[_0x2682('0x25')](handleEntityNotFound(_0x28805b,null))['then'](saveUpdates(_0xf3cd03[_0x2682('0x49')],null))[_0x2682('0x25')](respondWithResult(_0x28805b,null))['catch'](handleError(_0x28805b,null));};exports['destroy']=function(_0x1d9c4e,_0x2379c3){return db[_0x2682('0x2c')][_0x2682('0x4a')]({'where':{'id':_0x1d9c4e[_0x2682('0x44')]['id']}})['then'](handleEntityNotFound(_0x2379c3,null))['then'](removeEntity(_0x2379c3,null))[_0x2682('0x42')](handleError(_0x2379c3,null));};exports[_0x2682('0x4b')]=function(_0x416cab,_0x58c9cd){return db[_0x2682('0x2c')]['describe']()[_0x2682('0x25')](respondWithResult(_0x58c9cd,null))[_0x2682('0x42')](handleError(_0x58c9cd,null));};
\ No newline at end of file
index 460f4ed..1c3ef03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['api','moment','bluebird','request-promise','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','report_fax_queue','uniqueid','lodash','../../config/logger'];(function(_0x8307e3,_0x48eb78){var _0x492db9=function(_0x1284f7){while(--_0x1284f7){_0x8307e3['push'](_0x8307e3['shift']());}};_0x492db9(++_0x48eb78);}(_0x7217,0x19e));var _0x7721=function(_0x3ce3c,_0x319337){_0x3ce3c=_0x3ce3c-0x0;var _0x55a2c9=_0x7217[_0x3ce3c];return _0x55a2c9;};'use strict';var _=require(_0x7721('0x0'));var util=require('util');var logger=require(_0x7721('0x1'))(_0x7721('0x2'));var moment=require(_0x7721('0x3'));var BPromise=require(_0x7721('0x4'));var rp=require(_0x7721('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7721('0x6'));var attributes=require(_0x7721('0x7'));module[_0x7721('0x8')]=function(_0x3fe47c,_0xb239e0){return _0x3fe47c[_0x7721('0x9')](_0x7721('0xa'),attributes,{'tableName':_0x7721('0xb'),'paranoid':![],'indexes':[{'name':_0x7721('0xc'),'fields':[_0x7721('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5fab=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','FaxQueueReport','report_fax_queue','uniqueid','lodash','util','api'];(function(_0x5ef1bf,_0xb595c){var _0x5b1cc5=function(_0x4fc65b){while(--_0x4fc65b){_0x5ef1bf['push'](_0x5ef1bf['shift']());}};_0x5b1cc5(++_0xb595c);}(_0x5fab,0x177));var _0xb5fa=function(_0x5cfdd8,_0x27555c){_0x5cfdd8=_0x5cfdd8-0x0;var _0x4fd729=_0x5fab[_0x5cfdd8];return _0x4fd729;};'use strict';var _=require(_0xb5fa('0x0'));var util=require(_0xb5fa('0x1'));var logger=require('../../config/logger')(_0xb5fa('0x2'));var moment=require(_0xb5fa('0x3'));var BPromise=require(_0xb5fa('0x4'));var rp=require(_0xb5fa('0x5'));var fs=require('fs');var path=require(_0xb5fa('0x6'));var rimraf=require(_0xb5fa('0x7'));var config=require(_0xb5fa('0x8'));var attributes=require(_0xb5fa('0x9'));module[_0xb5fa('0xa')]=function(_0x44df89,_0x4a0249){return _0x44df89['define'](_0xb5fa('0xb'),attributes,{'tableName':_0xb5fa('0xc'),'paranoid':![],'indexes':[{'name':_0xb5fa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index af74c3e..f7cddf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d7=['error','FaxQueueReport,\x20%s,\x20%s','message','result','CreateFaxQueueReport','FaxQueueReport','options','update','raw','limit','UpdateFaxQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0xf9d7,0x1eb));var _0x7f9d=function(_0x29e91f,_0x19746f){_0x29e91f=_0x29e91f-0x0;var _0x96024=_0xf9d7[_0x29e91f];return _0x96024;};'use strict';var _=require(_0x7f9d('0x0'));var util=require(_0x7f9d('0x1'));var moment=require(_0x7f9d('0x2'));var BPromise=require(_0x7f9d('0x3'));var rs=require(_0x7f9d('0x4'));var fs=require('fs');var Redis=require(_0x7f9d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f9d('0x6'));var logger=require(_0x7f9d('0x7'))(_0x7f9d('0x8'));var config=require('../../config/environment');var jayson=require(_0x7f9d('0x9'));var client=jayson[_0x7f9d('0xa')][_0x7f9d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2c0ab5,_0x98eaa4,_0x29cd3b){return new BPromise(function(_0xa4324b,_0x1f556b){return client[_0x7f9d('0xc')](_0x2c0ab5,_0x29cd3b)[_0x7f9d('0xd')](function(_0x4c1974){logger[_0x7f9d('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x98eaa4,'request\x20sent');logger[_0x7f9d('0xf')](_0x7f9d('0x10'),_0x98eaa4,_0x7f9d('0x11'),JSON[_0x7f9d('0x12')](_0x4c1974));if(_0x4c1974[_0x7f9d('0x13')]){if(_0x4c1974[_0x7f9d('0x13')]['code']===0x1f4){logger['error'](_0x7f9d('0x14'),_0x98eaa4,_0x4c1974['error'][_0x7f9d('0x15')]);return _0x1f556b(_0x4c1974['error'][_0x7f9d('0x15')]);}logger['error'](_0x7f9d('0x14'),_0x98eaa4,_0x4c1974[_0x7f9d('0x13')][_0x7f9d('0x15')]);return _0xa4324b(_0x4c1974[_0x7f9d('0x13')][_0x7f9d('0x15')]);}else{logger['info'](_0x7f9d('0x14'),_0x98eaa4,_0x7f9d('0x11'));_0xa4324b(_0x4c1974[_0x7f9d('0x16')][_0x7f9d('0x15')]);}})['catch'](function(_0x51ba40){logger[_0x7f9d('0x13')](_0x7f9d('0x14'),_0x98eaa4,_0x51ba40);_0x1f556b(_0x51ba40);});});}exports[_0x7f9d('0x17')]=function(_0x18599e){var _0x38fedd=this;return new Promise(function(_0x25fa7a,_0x580926){return db[_0x7f9d('0x18')]['create'](_0x18599e['body'],{'raw':_0x18599e['options']?_0x18599e[_0x7f9d('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x7f9d('0xd')](function(_0x367755){logger['info'](_0x7f9d('0x17'),_0x18599e);logger[_0x7f9d('0xf')](_0x7f9d('0x17'),_0x18599e,JSON['stringify'](_0x367755));_0x25fa7a(_0x367755);})['catch'](function(_0x4c9047){logger[_0x7f9d('0x13')](_0x7f9d('0x17'),_0x4c9047['message'],_0x18599e);_0x580926(_0x38fedd[_0x7f9d('0x13')](0x1f4,_0x4c9047['message']));});});};exports['UpdateFaxQueueReport']=function(_0x411da7){var _0xf520ce=this;return new Promise(function(_0x162a65,_0x24f111){return db[_0x7f9d('0x18')][_0x7f9d('0x1a')](_0x411da7['body'],{'raw':_0x411da7[_0x7f9d('0x19')]?_0x411da7[_0x7f9d('0x19')][_0x7f9d('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x411da7[_0x7f9d('0x19')]?_0x411da7[_0x7f9d('0x19')]['where']||null:null,'attributes':_0x411da7[_0x7f9d('0x19')]?_0x411da7[_0x7f9d('0x19')]['attributes']||null:null,'limit':_0x411da7[_0x7f9d('0x19')]?_0x411da7[_0x7f9d('0x19')][_0x7f9d('0x1c')]||null:null})[_0x7f9d('0xd')](function(_0x173704){logger[_0x7f9d('0xe')](_0x7f9d('0x1d'),_0x411da7);logger[_0x7f9d('0xf')]('UpdateFaxQueueReport',_0x411da7,JSON[_0x7f9d('0x12')](_0x173704));_0x162a65(_0x173704);})['catch'](function(_0xf8b9a1){logger[_0x7f9d('0x13')](_0x7f9d('0x1d'),_0xf8b9a1[_0x7f9d('0x15')],_0x411da7);_0x24f111(_0xf520ce[_0x7f9d('0x13')](0x1f4,_0xf8b9a1[_0x7f9d('0x15')]));});});};
\ No newline at end of file
+var _0xfabe=['error','message','FaxQueueReport,\x20%s,\x20%s','result','catch','CreateFaxQueueReport','create','body','options','raw','FaxQueueReport','update','where','attributes','limit','UpdateFaxQueueReport','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x1d1b15,_0x5ef518){var _0x1801d3=function(_0x50d56e){while(--_0x50d56e){_0x1d1b15['push'](_0x1d1b15['shift']());}};_0x1801d3(++_0x5ef518);}(_0xfabe,0x1b4));var _0xefab=function(_0x4c5e41,_0x768ce7){_0x4c5e41=_0x4c5e41-0x0;var _0x2f28bb=_0xfabe[_0x4c5e41];return _0x2f28bb;};'use strict';var _=require(_0xefab('0x0'));var util=require(_0xefab('0x1'));var moment=require(_0xefab('0x2'));var BPromise=require(_0xefab('0x3'));var rs=require(_0xefab('0x4'));var fs=require('fs');var Redis=require(_0xefab('0x5'));var db=require(_0xefab('0x6'))['db'];var utils=require(_0xefab('0x7'));var logger=require(_0xefab('0x8'))(_0xefab('0x9'));var config=require('../../config/environment');var jayson=require(_0xefab('0xa'));var client=jayson[_0xefab('0xb')][_0xefab('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x34889d,_0x3e6916,_0x94e456){return new BPromise(function(_0x3b1a10,_0x5a16a2){return client['request'](_0x34889d,_0x94e456)[_0xefab('0xd')](function(_0x1eee6d){logger[_0xefab('0xe')]('FaxQueueReport,\x20%s,\x20%s',_0x3e6916,_0xefab('0xf'));logger[_0xefab('0x10')](_0xefab('0x11'),_0x3e6916,_0xefab('0xf'),JSON[_0xefab('0x12')](_0x1eee6d));if(_0x1eee6d['error']){if(_0x1eee6d[_0xefab('0x13')]['code']===0x1f4){logger[_0xefab('0x13')]('FaxQueueReport,\x20%s,\x20%s',_0x3e6916,_0x1eee6d['error'][_0xefab('0x14')]);return _0x5a16a2(_0x1eee6d[_0xefab('0x13')][_0xefab('0x14')]);}logger[_0xefab('0x13')](_0xefab('0x15'),_0x3e6916,_0x1eee6d[_0xefab('0x13')][_0xefab('0x14')]);return _0x3b1a10(_0x1eee6d['error']['message']);}else{logger[_0xefab('0xe')](_0xefab('0x15'),_0x3e6916,'request\x20sent');_0x3b1a10(_0x1eee6d[_0xefab('0x16')][_0xefab('0x14')]);}})[_0xefab('0x17')](function(_0x767121){logger['error'](_0xefab('0x15'),_0x3e6916,_0x767121);_0x5a16a2(_0x767121);});});}exports[_0xefab('0x18')]=function(_0x4d23d8){var _0x1f5d52=this;return new Promise(function(_0x1a4553,_0x380ac8){return db['FaxQueueReport'][_0xefab('0x19')](_0x4d23d8[_0xefab('0x1a')],{'raw':_0x4d23d8[_0xefab('0x1b')]?_0x4d23d8['options'][_0xefab('0x1c')]===undefined?!![]:![]:!![]})[_0xefab('0xd')](function(_0x4f5094){logger['info'](_0xefab('0x18'),_0x4d23d8);logger[_0xefab('0x10')]('CreateFaxQueueReport',_0x4d23d8,JSON[_0xefab('0x12')](_0x4f5094));_0x1a4553(_0x4f5094);})['catch'](function(_0xaa2aee){logger[_0xefab('0x13')](_0xefab('0x18'),_0xaa2aee['message'],_0x4d23d8);_0x380ac8(_0x1f5d52[_0xefab('0x13')](0x1f4,_0xaa2aee[_0xefab('0x14')]));});});};exports['UpdateFaxQueueReport']=function(_0x5bf61f){var _0x545970=this;return new Promise(function(_0x13263a,_0x217865){return db[_0xefab('0x1d')][_0xefab('0x1e')](_0x5bf61f['body'],{'raw':_0x5bf61f['options']?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x1f')]||null:null,'attributes':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f[_0xefab('0x1b')][_0xefab('0x20')]||null:null,'limit':_0x5bf61f[_0xefab('0x1b')]?_0x5bf61f['options'][_0xefab('0x21')]||null:null})['then'](function(_0x48481e){logger[_0xefab('0xe')](_0xefab('0x22'),_0x5bf61f);logger[_0xefab('0x10')](_0xefab('0x22'),_0x5bf61f,JSON[_0xefab('0x12')](_0x48481e));_0x13263a(_0x48481e);})['catch'](function(_0x4b8621){logger[_0xefab('0x13')]('UpdateFaxQueueReport',_0x4b8621[_0xefab('0x14')],_0x5bf61f);_0x217865(_0x545970[_0xefab('0x13')](0x1f4,_0x4b8621[_0xefab('0x14')]));});});};
\ No newline at end of file
index 9ec9dc7..ed83115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2255=['/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','isAuthenticated','index','get','/describe','describe'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x2255,0xa3));var _0x5225=function(_0x380a1d,_0x2c35dd){_0x380a1d=_0x380a1d-0x0;var _0x5ef300=_0x2255[_0x380a1d];return _0x5ef300;};'use strict';var multer=require(_0x5225('0x0'));var util=require(_0x5225('0x1'));var path=require(_0x5225('0x2'));var timeout=require(_0x5225('0x3'));var express=require(_0x5225('0x4'));var router=express[_0x5225('0x5')]();var fs_extra=require(_0x5225('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5225('0x7'));var controller=require('./faxQueueReport.controller');router['get']('/',auth[_0x5225('0x8')](),controller[_0x5225('0x9')]);router[_0x5225('0xa')](_0x5225('0xb'),auth[_0x5225('0x8')](),controller[_0x5225('0xc')]);router[_0x5225('0xa')](_0x5225('0xd'),auth['isAuthenticated'](),controller[_0x5225('0xe')]);router[_0x5225('0xf')]('/',auth[_0x5225('0x8')](),controller[_0x5225('0x10')]);router[_0x5225('0x11')]('/:id',auth[_0x5225('0x8')](),controller[_0x5225('0x12')]);router[_0x5225('0x13')](_0x5225('0xd'),auth['isAuthenticated'](),controller[_0x5225('0x14')]);module[_0x5225('0x15')]=router;
\ No newline at end of file
+var _0x5127=['exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./faxQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete','destroy'];(function(_0x2e4aa2,_0x11956a){var _0x5e6092=function(_0x4c12c2){while(--_0x4c12c2){_0x2e4aa2['push'](_0x2e4aa2['shift']());}};_0x5e6092(++_0x11956a);}(_0x5127,0x190));var _0x7512=function(_0x17882c,_0x4b964b){_0x17882c=_0x17882c-0x0;var _0x355a59=_0x5127[_0x17882c];return _0x355a59;};'use strict';var multer=require(_0x7512('0x0'));var util=require(_0x7512('0x1'));var path=require(_0x7512('0x2'));var timeout=require(_0x7512('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x7512('0x4'));var auth=require(_0x7512('0x5'));var interaction=require(_0x7512('0x6'));var config=require('../../config/environment');var controller=require(_0x7512('0x7'));router[_0x7512('0x8')]('/',auth[_0x7512('0x9')](),controller[_0x7512('0xa')]);router['get'](_0x7512('0xb'),auth['isAuthenticated'](),controller[_0x7512('0xc')]);router[_0x7512('0x8')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller[_0x7512('0xe')]);router[_0x7512('0xf')]('/',auth['isAuthenticated'](),controller[_0x7512('0x10')]);router[_0x7512('0x11')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller['update']);router[_0x7512('0x12')](_0x7512('0xd'),auth[_0x7512('0x9')](),controller[_0x7512('0x13')]);module[_0x7512('0x14')]=router;
\ No newline at end of file
index 62e1472..81051e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x496738,_0x3f1a9f){var _0xee1381=function(_0x4dc50c){while(--_0x4dc50c){_0x496738['push'](_0x496738['shift']());}};_0xee1381(++_0x3f1a9f);}(_0x9bde,0xe1));var _0xe9bd=function(_0x26b34a,_0x3a6148){_0x26b34a=_0x26b34a-0x0;var _0x47d800=_0x9bde[_0x26b34a];return _0x47d800;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0x34e8=['queue','DATE','NOW','moment','sequelize','exports','STRING','account','agent'];(function(_0x1d2cf2,_0x4f6aad){var _0xe5f313=function(_0xd42d92){while(--_0xd42d92){_0x1d2cf2['push'](_0x1d2cf2['shift']());}};_0xe5f313(++_0x4f6aad);}(_0x34e8,0x12c));var _0x834e=function(_0x510410,_0xa5ea64){_0x510410=_0x510410-0x0;var _0x4b0500=_0x34e8[_0x510410];return _0x4b0500;};'use strict';var moment=require(_0x834e('0x0'));var Sequelize=require(_0x834e('0x1'));module[_0x834e('0x2')]={'uniqueid':{'type':Sequelize[_0x834e('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x834e('0x4'),_0x834e('0x5'),_0x834e('0x6')),'allowNull':![],'defaultValue':_0x834e('0x6')},'transferredAt':{'type':Sequelize[_0x834e('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x834e('0x8')]}};
\ No newline at end of file
index b342d2a..3fd2ed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ba6=['findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','fast-json-patch','moment','bluebird','mustache','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','save','update','then','error','stack','name','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','includeAll','include'];(function(_0x3cc3fc,_0x537cf1){var _0x37f6ef=function(_0x12448d){while(--_0x12448d){_0x3cc3fc['push'](_0x3cc3fc['shift']());}};_0x37f6ef(++_0x537cf1);}(_0x6ba6,0x133));var _0x66ba=function(_0x2af627,_0x33d47f){_0x2af627=_0x2af627-0x0;var _0x14eda9=_0x6ba6[_0x2af627];return _0x14eda9;};'use strict';var emlformat=require(_0x66ba('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x66ba('0x1'));var rp=require('request-promise');var moment=require(_0x66ba('0x2'));var BPromise=require(_0x66ba('0x3'));var Mustache=require(_0x66ba('0x4'));var util=require('util');var path=require('path');var sox=require(_0x66ba('0x5'));var csv=require(_0x66ba('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x66ba('0x7'));var _=require(_0x66ba('0x8'));var squel=require(_0x66ba('0x9'));var crypto=require(_0x66ba('0xa'));var jsforce=require(_0x66ba('0xb'));var deskjs=require(_0x66ba('0xc'));var toCsv=require(_0x66ba('0x6'));var querystring=require(_0x66ba('0xd'));var Papa=require(_0x66ba('0xe'));var Redis=require(_0x66ba('0xf'));var authService=require(_0x66ba('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x66ba('0x11'));var hardwareService=require(_0x66ba('0x12'));var logger=require(_0x66ba('0x13'))(_0x66ba('0x14'));var utils=require(_0x66ba('0x15'));var config=require(_0x66ba('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x66ba('0x17'))['db'];function respondWithStatusCode(_0x5d85e8,_0x16c35a){_0x16c35a=_0x16c35a||0xcc;return function(_0x18c26c){if(_0x18c26c){return _0x5d85e8[_0x66ba('0x18')](_0x16c35a);}return _0x5d85e8[_0x66ba('0x19')](_0x16c35a)[_0x66ba('0x1a')]();};}function respondWithResult(_0x43a938,_0x31564d){_0x31564d=_0x31564d||0xc8;return function(_0x146adb){if(_0x146adb){return _0x43a938[_0x66ba('0x19')](_0x31564d)['json'](_0x146adb);}};}function respondWithFilteredResult(_0x41b70a,_0x1b2c81){return function(_0x544326){if(_0x544326){var _0x5e9550=typeof _0x1b2c81[_0x66ba('0x1b')]===_0x66ba('0x1c')&&typeof _0x1b2c81['limit']===_0x66ba('0x1c');var _0x11b444=_0x544326[_0x66ba('0x1d')];var _0x1a80ed=_0x5e9550?0x0:_0x1b2c81[_0x66ba('0x1b')];var _0x55c554=_0x5e9550?_0x544326[_0x66ba('0x1d')]:_0x1b2c81[_0x66ba('0x1b')]+_0x1b2c81[_0x66ba('0x1e')];var _0xbbedef;if(_0x55c554>=_0x11b444){_0x55c554=_0x11b444;_0xbbedef=0xc8;}else{_0xbbedef=0xce;}_0x41b70a['status'](_0xbbedef);return _0x41b70a['set']('Content-Range',_0x1a80ed+'-'+_0x55c554+'/'+_0x11b444)['json'](_0x544326);}return null;};}function patchUpdates(_0xae83c0){return function(_0x50571e){try{jsonpatch['apply'](_0x50571e,_0xae83c0,!![]);}catch(_0x2bc59c){return BPromise['reject'](_0x2bc59c);}return _0x50571e[_0x66ba('0x1f')]();};}function saveUpdates(_0x3e3040,_0x22e465){return function(_0x107992){if(_0x107992){return _0x107992[_0x66ba('0x20')](_0x3e3040)[_0x66ba('0x21')](function(_0x2bc3a8){return _0x2bc3a8;});}return null;};}function removeEntity(_0x5d1632,_0x39d916){return function(_0x1f594c){if(_0x1f594c){return _0x1f594c['destroy']()[_0x66ba('0x21')](function(){_0x5d1632[_0x66ba('0x19')](0xcc)[_0x66ba('0x1a')]();});}};}function handleEntityNotFound(_0x571e02,_0x3fcc76){return function(_0x5188a0){if(!_0x5188a0){_0x571e02[_0x66ba('0x18')](0x194);}return _0x5188a0;};}function handleError(_0x47e10e,_0x2f0986){_0x2f0986=_0x2f0986||0x1f4;return function(_0x4e029b){logger[_0x66ba('0x22')](_0x4e029b[_0x66ba('0x23')]);if(_0x4e029b[_0x66ba('0x24')]){delete _0x4e029b[_0x66ba('0x24')];}_0x47e10e['status'](_0x2f0986)[_0x66ba('0x25')](_0x4e029b);};}exports[_0x66ba('0x26')]=function(_0x212196,_0x57fcaa){var _0x415d95={},_0x300f78={},_0x51bfe5={'count':0x0,'rows':[]};var _0x5e7f82=_[_0x66ba('0x27')](db[_0x66ba('0x28')][_0x66ba('0x29')],function(_0x3a3299){return{'name':_0x3a3299[_0x66ba('0x2a')],'type':_0x3a3299[_0x66ba('0x2b')][_0x66ba('0x2c')]};});_0x300f78[_0x66ba('0x2d')]=_[_0x66ba('0x27')](_0x5e7f82,_0x66ba('0x24'));_0x300f78[_0x66ba('0x2e')]=_['keys'](_0x212196[_0x66ba('0x2e')]);_0x300f78['filters']=_[_0x66ba('0x2f')](_0x300f78['model'],_0x300f78['query']);_0x415d95[_0x66ba('0x30')]=_[_0x66ba('0x2f')](_0x300f78['model'],qs[_0x66ba('0x31')](_0x212196[_0x66ba('0x2e')][_0x66ba('0x31')]));_0x415d95[_0x66ba('0x30')]=_0x415d95[_0x66ba('0x30')]['length']?_0x415d95['attributes']:_0x300f78[_0x66ba('0x2d')];if(!_0x212196['query'][_0x66ba('0x32')](_0x66ba('0x33'))){_0x415d95[_0x66ba('0x1e')]=qs[_0x66ba('0x1e')](_0x212196[_0x66ba('0x2e')][_0x66ba('0x1e')]);_0x415d95[_0x66ba('0x1b')]=qs[_0x66ba('0x1b')](_0x212196[_0x66ba('0x2e')][_0x66ba('0x1b')]);}_0x415d95[_0x66ba('0x34')]=qs[_0x66ba('0x35')](_0x212196['query']['sort']);_0x415d95[_0x66ba('0x36')]=qs['filters'](_[_0x66ba('0x37')](_0x212196[_0x66ba('0x2e')],_0x300f78[_0x66ba('0x38')]),_0x5e7f82);if(_0x212196[_0x66ba('0x2e')][_0x66ba('0x39')]){_0x415d95[_0x66ba('0x36')]=_[_0x66ba('0x3a')](_0x415d95[_0x66ba('0x36')],{'$or':_['map'](_0x5e7f82,function(_0x50f722){if(_0x50f722[_0x66ba('0x2b')]!==_0x66ba('0x3b')){var _0x4b6c68={};_0x4b6c68[_0x50f722[_0x66ba('0x24')]]={'$like':'%'+_0x212196[_0x66ba('0x2e')][_0x66ba('0x39')]+'%'};return _0x4b6c68;}})});}_0x415d95=_['merge']({},_0x415d95,_0x212196[_0x66ba('0x3c')]);var _0x3287db={'where':_0x415d95[_0x66ba('0x36')]};return db[_0x66ba('0x28')][_0x66ba('0x1d')](_0x3287db)[_0x66ba('0x21')](function(_0x1c129b){_0x51bfe5[_0x66ba('0x1d')]=_0x1c129b;if(_0x212196[_0x66ba('0x2e')][_0x66ba('0x3d')]){_0x415d95[_0x66ba('0x3e')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x66ba('0x3f')](_0x415d95);})[_0x66ba('0x21')](function(_0x497a0a){_0x51bfe5[_0x66ba('0x40')]=_0x497a0a;return _0x51bfe5;})[_0x66ba('0x21')](respondWithFilteredResult(_0x57fcaa,_0x415d95))[_0x66ba('0x41')](handleError(_0x57fcaa,null));};exports[_0x66ba('0x42')]=function(_0x405d56,_0x289fb3){var _0x2ac260={'raw':!![],'where':{'id':_0x405d56[_0x66ba('0x43')]['id']}},_0x1f58aa={};_0x1f58aa[_0x66ba('0x2d')]=_['keys'](db['FaxTransferReport']['rawAttributes']);_0x1f58aa[_0x66ba('0x2e')]=_[_0x66ba('0x44')](_0x405d56[_0x66ba('0x2e')]);_0x1f58aa[_0x66ba('0x38')]=_['intersection'](_0x1f58aa[_0x66ba('0x2d')],_0x1f58aa[_0x66ba('0x2e')]);_0x2ac260['attributes']=_['intersection'](_0x1f58aa[_0x66ba('0x2d')],qs[_0x66ba('0x31')](_0x405d56[_0x66ba('0x2e')][_0x66ba('0x31')]));_0x2ac260[_0x66ba('0x30')]=_0x2ac260[_0x66ba('0x30')][_0x66ba('0x45')]?_0x2ac260[_0x66ba('0x30')]:_0x1f58aa[_0x66ba('0x2d')];if(_0x405d56[_0x66ba('0x2e')]['includeAll']){_0x2ac260[_0x66ba('0x3e')]=[{'all':!![]}];}_0x2ac260=_[_0x66ba('0x3a')]({},_0x2ac260,_0x405d56[_0x66ba('0x3c')]);return db[_0x66ba('0x28')][_0x66ba('0x46')](_0x2ac260)[_0x66ba('0x21')](handleEntityNotFound(_0x289fb3,null))[_0x66ba('0x21')](respondWithResult(_0x289fb3,null))['catch'](handleError(_0x289fb3,null));};exports[_0x66ba('0x47')]=function(_0x49c61c,_0x59fa28){return db[_0x66ba('0x28')][_0x66ba('0x47')](_0x49c61c[_0x66ba('0x48')],{})[_0x66ba('0x21')](respondWithResult(_0x59fa28,0xc9))[_0x66ba('0x41')](handleError(_0x59fa28,null));};exports[_0x66ba('0x20')]=function(_0x275836,_0x585306){if(_0x275836[_0x66ba('0x48')]['id']){delete _0x275836[_0x66ba('0x48')]['id'];}return db[_0x66ba('0x28')][_0x66ba('0x46')]({'where':{'id':_0x275836['params']['id']}})[_0x66ba('0x21')](handleEntityNotFound(_0x585306,null))[_0x66ba('0x21')](saveUpdates(_0x275836[_0x66ba('0x48')],null))[_0x66ba('0x21')](respondWithResult(_0x585306,null))[_0x66ba('0x41')](handleError(_0x585306,null));};exports['destroy']=function(_0x12f93e,_0x24d906){return db[_0x66ba('0x28')][_0x66ba('0x46')]({'where':{'id':_0x12f93e[_0x66ba('0x43')]['id']}})[_0x66ba('0x21')](handleEntityNotFound(_0x24d906,null))[_0x66ba('0x21')](removeEntity(_0x24d906,null))[_0x66ba('0x41')](handleError(_0x24d906,null));};exports[_0x66ba('0x49')]=function(_0x1ea27a,_0x3001bd){return db[_0x66ba('0x28')]['describe']()[_0x66ba('0x21')](respondWithResult(_0x3001bd,null))[_0x66ba('0x41')](handleError(_0x3001bd,null));};
\ No newline at end of file
+var _0x5972=['sort','where','pick','filter','merge','VIRTUAL','options','include','rows','show','includeAll','find','create','catch','update','body','params','describe','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x35da42,_0x5c2610){var _0x370035=function(_0x546db5){while(--_0x546db5){_0x35da42['push'](_0x35da42['shift']());}};_0x370035(++_0x5c2610);}(_0x5972,0x13e));var _0x2597=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x5972[_0x3da832];return _0xe602f2;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2597('0x0'));var jsonpatch=require(_0x2597('0x1'));var rp=require('request-promise');var moment=require(_0x2597('0x2'));var BPromise=require(_0x2597('0x3'));var Mustache=require(_0x2597('0x4'));var util=require(_0x2597('0x5'));var path=require(_0x2597('0x6'));var sox=require(_0x2597('0x7'));var csv=require(_0x2597('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2597('0x9'));var _=require('lodash');var squel=require(_0x2597('0xa'));var crypto=require(_0x2597('0xb'));var jsforce=require(_0x2597('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x2597('0xd'));var Papa=require(_0x2597('0xe'));var Redis=require(_0x2597('0xf'));var authService=require(_0x2597('0x10'));var qs=require(_0x2597('0x11'));var as=require(_0x2597('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2597('0x13'))(_0x2597('0x14'));var utils=require(_0x2597('0x15'));var config=require(_0x2597('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x2597('0x17'))['db'];function respondWithStatusCode(_0x534ed6,_0x36f3df){_0x36f3df=_0x36f3df||0xcc;return function(_0x3dc4d2){if(_0x3dc4d2){return _0x534ed6[_0x2597('0x18')](_0x36f3df);}return _0x534ed6[_0x2597('0x19')](_0x36f3df)[_0x2597('0x1a')]();};}function respondWithResult(_0x20a8d9,_0x396a66){_0x396a66=_0x396a66||0xc8;return function(_0x288a5d){if(_0x288a5d){return _0x20a8d9[_0x2597('0x19')](_0x396a66)[_0x2597('0x1b')](_0x288a5d);}};}function respondWithFilteredResult(_0x464de9,_0x50ad42){return function(_0x3b6b24){if(_0x3b6b24){var _0x11acb5=typeof _0x50ad42[_0x2597('0x1c')]==='undefined'&&typeof _0x50ad42[_0x2597('0x1d')]==='undefined';var _0x294693=_0x3b6b24[_0x2597('0x1e')];var _0x291ea7=_0x11acb5?0x0:_0x50ad42[_0x2597('0x1c')];var _0x2d12df=_0x11acb5?_0x3b6b24[_0x2597('0x1e')]:_0x50ad42[_0x2597('0x1c')]+_0x50ad42[_0x2597('0x1d')];var _0x58b1f0;if(_0x2d12df>=_0x294693){_0x2d12df=_0x294693;_0x58b1f0=0xc8;}else{_0x58b1f0=0xce;}_0x464de9[_0x2597('0x19')](_0x58b1f0);return _0x464de9['set'](_0x2597('0x1f'),_0x291ea7+'-'+_0x2d12df+'/'+_0x294693)['json'](_0x3b6b24);}return null;};}function patchUpdates(_0x7fbbb8){return function(_0x5cb060){try{jsonpatch[_0x2597('0x20')](_0x5cb060,_0x7fbbb8,!![]);}catch(_0x26ab1){return BPromise[_0x2597('0x21')](_0x26ab1);}return _0x5cb060[_0x2597('0x22')]();};}function saveUpdates(_0x1f547d,_0x339886){return function(_0x2b92f4){if(_0x2b92f4){return _0x2b92f4['update'](_0x1f547d)[_0x2597('0x23')](function(_0x15356b){return _0x15356b;});}return null;};}function removeEntity(_0x2c98f4,_0x4746f1){return function(_0x5ca6d4){if(_0x5ca6d4){return _0x5ca6d4[_0x2597('0x24')]()[_0x2597('0x23')](function(){_0x2c98f4[_0x2597('0x19')](0xcc)[_0x2597('0x1a')]();});}};}function handleEntityNotFound(_0x3da9c3,_0x4d5c9f){return function(_0x319761){if(!_0x319761){_0x3da9c3[_0x2597('0x18')](0x194);}return _0x319761;};}function handleError(_0x102705,_0x5cf3a3){_0x5cf3a3=_0x5cf3a3||0x1f4;return function(_0x235dc3){logger[_0x2597('0x25')](_0x235dc3[_0x2597('0x26')]);if(_0x235dc3['name']){delete _0x235dc3[_0x2597('0x27')];}_0x102705[_0x2597('0x19')](_0x5cf3a3)[_0x2597('0x28')](_0x235dc3);};}exports['index']=function(_0x525646,_0x18b313){var _0x4ae530={},_0x38caf9={},_0x540264={'count':0x0,'rows':[]};var _0x52299f=_[_0x2597('0x29')](db[_0x2597('0x2a')][_0x2597('0x2b')],function(_0x9a67c4){return{'name':_0x9a67c4['fieldName'],'type':_0x9a67c4[_0x2597('0x2c')][_0x2597('0x2d')]};});_0x38caf9[_0x2597('0x2e')]=_['map'](_0x52299f,_0x2597('0x27'));_0x38caf9[_0x2597('0x2f')]=_[_0x2597('0x30')](_0x525646['query']);_0x38caf9[_0x2597('0x31')]=_[_0x2597('0x32')](_0x38caf9[_0x2597('0x2e')],_0x38caf9[_0x2597('0x2f')]);_0x4ae530[_0x2597('0x33')]=_[_0x2597('0x32')](_0x38caf9['model'],qs[_0x2597('0x34')](_0x525646[_0x2597('0x2f')][_0x2597('0x34')]));_0x4ae530[_0x2597('0x33')]=_0x4ae530[_0x2597('0x33')][_0x2597('0x35')]?_0x4ae530['attributes']:_0x38caf9[_0x2597('0x2e')];if(!_0x525646[_0x2597('0x2f')][_0x2597('0x36')](_0x2597('0x37'))){_0x4ae530[_0x2597('0x1d')]=qs[_0x2597('0x1d')](_0x525646['query'][_0x2597('0x1d')]);_0x4ae530['offset']=qs[_0x2597('0x1c')](_0x525646[_0x2597('0x2f')][_0x2597('0x1c')]);}_0x4ae530[_0x2597('0x38')]=qs[_0x2597('0x39')](_0x525646['query'][_0x2597('0x39')]);_0x4ae530[_0x2597('0x3a')]=qs[_0x2597('0x31')](_[_0x2597('0x3b')](_0x525646[_0x2597('0x2f')],_0x38caf9[_0x2597('0x31')]),_0x52299f);if(_0x525646[_0x2597('0x2f')][_0x2597('0x3c')]){_0x4ae530['where']=_[_0x2597('0x3d')](_0x4ae530[_0x2597('0x3a')],{'$or':_[_0x2597('0x29')](_0x52299f,function(_0x32806a){if(_0x32806a[_0x2597('0x2c')]!==_0x2597('0x3e')){var _0x472244={};_0x472244[_0x32806a[_0x2597('0x27')]]={'$like':'%'+_0x525646[_0x2597('0x2f')][_0x2597('0x3c')]+'%'};return _0x472244;}})});}_0x4ae530=_[_0x2597('0x3d')]({},_0x4ae530,_0x525646[_0x2597('0x3f')]);var _0x241c3d={'where':_0x4ae530['where']};return db['FaxTransferReport']['count'](_0x241c3d)[_0x2597('0x23')](function(_0xc5e316){_0x540264[_0x2597('0x1e')]=_0xc5e316;if(_0x525646[_0x2597('0x2f')]['includeAll']){_0x4ae530[_0x2597('0x40')]=[{'all':!![]}];}return db['FaxTransferReport']['findAll'](_0x4ae530);})[_0x2597('0x23')](function(_0x17946d){_0x540264[_0x2597('0x41')]=_0x17946d;return _0x540264;})[_0x2597('0x23')](respondWithFilteredResult(_0x18b313,_0x4ae530))['catch'](handleError(_0x18b313,null));};exports[_0x2597('0x42')]=function(_0x555a4f,_0x5a96f9){var _0x3c185c={'raw':!![],'where':{'id':_0x555a4f['params']['id']}},_0x3c2aa8={};_0x3c2aa8[_0x2597('0x2e')]=_['keys'](db[_0x2597('0x2a')][_0x2597('0x2b')]);_0x3c2aa8[_0x2597('0x2f')]=_[_0x2597('0x30')](_0x555a4f[_0x2597('0x2f')]);_0x3c2aa8['filters']=_[_0x2597('0x32')](_0x3c2aa8[_0x2597('0x2e')],_0x3c2aa8[_0x2597('0x2f')]);_0x3c185c[_0x2597('0x33')]=_[_0x2597('0x32')](_0x3c2aa8[_0x2597('0x2e')],qs['fields'](_0x555a4f[_0x2597('0x2f')]['fields']));_0x3c185c[_0x2597('0x33')]=_0x3c185c[_0x2597('0x33')][_0x2597('0x35')]?_0x3c185c[_0x2597('0x33')]:_0x3c2aa8[_0x2597('0x2e')];if(_0x555a4f[_0x2597('0x2f')][_0x2597('0x43')]){_0x3c185c[_0x2597('0x40')]=[{'all':!![]}];}_0x3c185c=_['merge']({},_0x3c185c,_0x555a4f[_0x2597('0x3f')]);return db['FaxTransferReport'][_0x2597('0x44')](_0x3c185c)[_0x2597('0x23')](handleEntityNotFound(_0x5a96f9,null))[_0x2597('0x23')](respondWithResult(_0x5a96f9,null))['catch'](handleError(_0x5a96f9,null));};exports['create']=function(_0x26147d,_0x3606b5){return db[_0x2597('0x2a')][_0x2597('0x45')](_0x26147d['body'],{})[_0x2597('0x23')](respondWithResult(_0x3606b5,0xc9))[_0x2597('0x46')](handleError(_0x3606b5,null));};exports[_0x2597('0x47')]=function(_0x5c8d4d,_0x1b4e25){if(_0x5c8d4d[_0x2597('0x48')]['id']){delete _0x5c8d4d[_0x2597('0x48')]['id'];}return db[_0x2597('0x2a')][_0x2597('0x44')]({'where':{'id':_0x5c8d4d[_0x2597('0x49')]['id']}})[_0x2597('0x23')](handleEntityNotFound(_0x1b4e25,null))[_0x2597('0x23')](saveUpdates(_0x5c8d4d[_0x2597('0x48')],null))['then'](respondWithResult(_0x1b4e25,null))[_0x2597('0x46')](handleError(_0x1b4e25,null));};exports['destroy']=function(_0x51de48,_0x5d828a){return db[_0x2597('0x2a')]['find']({'where':{'id':_0x51de48[_0x2597('0x49')]['id']}})['then'](handleEntityNotFound(_0x5d828a,null))[_0x2597('0x23')](removeEntity(_0x5d828a,null))[_0x2597('0x46')](handleError(_0x5d828a,null));};exports[_0x2597('0x4a')]=function(_0x4f5345,_0x4c0a9d){return db[_0x2597('0x2a')][_0x2597('0x4a')]()[_0x2597('0x23')](respondWithResult(_0x4c0a9d,null))[_0x2597('0x46')](handleError(_0x4c0a9d,null));};
\ No newline at end of file
index 90aa16f..3033f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26f0=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger'];(function(_0x56bf62,_0x3787f6){var _0x3f71d7=function(_0x444300){while(--_0x444300){_0x56bf62['push'](_0x56bf62['shift']());}};_0x3f71d7(++_0x3787f6);}(_0x26f0,0xf4));var _0x026f=function(_0x4bbb60,_0x2506e4){_0x4bbb60=_0x4bbb60-0x0;var _0x4735b1=_0x26f0[_0x4bbb60];return _0x4735b1;};'use strict';var _=require(_0x026f('0x0'));var util=require(_0x026f('0x1'));var logger=require(_0x026f('0x2'))(_0x026f('0x3'));var moment=require('moment');var BPromise=require(_0x026f('0x4'));var rp=require(_0x026f('0x5'));var fs=require('fs');var path=require(_0x026f('0x6'));var rimraf=require(_0x026f('0x7'));var config=require(_0x026f('0x8'));var attributes=require('./faxTransferReport.attributes');module[_0x026f('0x9')]=function(_0x57cf6f,_0x4206b3){return _0x57cf6f['define'](_0x026f('0xa'),attributes,{'tableName':_0x026f('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x026f('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9158=['./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','lodash','util','../../config/logger','moment','request-promise','../../config/environment'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x9158,0x16e));var _0x8915=function(_0x4c9f48,_0x1dcee8){_0x4c9f48=_0x4c9f48-0x0;var _0x39f33a=_0x9158[_0x4c9f48];return _0x39f33a;};'use strict';var _=require(_0x8915('0x0'));var util=require(_0x8915('0x1'));var logger=require(_0x8915('0x2'))('api');var moment=require(_0x8915('0x3'));var BPromise=require('bluebird');var rp=require(_0x8915('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8915('0x5'));var attributes=require(_0x8915('0x6'));module[_0x8915('0x7')]=function(_0x2cad3f,_0x455248){return _0x2cad3f[_0x8915('0x8')](_0x8915('0x9'),attributes,{'tableName':_0x8915('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8915('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 4dc9705..4075321 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7828=['code','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x5ecbdf,_0x405953){var _0x46fdcb=function(_0x92134a){while(--_0x92134a){_0x5ecbdf['push'](_0x5ecbdf['shift']());}};_0x46fdcb(++_0x405953);}(_0x7828,0x1bc));var _0x8782=function(_0x259e04,_0x1944f8){_0x259e04=_0x259e04-0x0;var _0x566381=_0x7828[_0x259e04];return _0x566381;};'use strict';var _=require(_0x8782('0x0'));var util=require(_0x8782('0x1'));var moment=require(_0x8782('0x2'));var BPromise=require('bluebird');var rs=require(_0x8782('0x3'));var fs=require('fs');var Redis=require(_0x8782('0x4'));var db=require(_0x8782('0x5'))['db'];var utils=require(_0x8782('0x6'));var logger=require(_0x8782('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x8782('0x8'));var client=jayson[_0x8782('0x9')][_0x8782('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4fb898,_0x4455a3,_0x2413bf){return new BPromise(function(_0x3b86a2,_0xfbe454){return client[_0x8782('0xb')](_0x4fb898,_0x2413bf)[_0x8782('0xc')](function(_0x1d9f74){logger[_0x8782('0xd')](_0x8782('0xe'),_0x4455a3,'request\x20sent');logger['debug']('FaxTransferReport,\x20%s,\x20%s,\x20%s',_0x4455a3,_0x8782('0xf'),JSON[_0x8782('0x10')](_0x1d9f74));if(_0x1d9f74[_0x8782('0x11')]){if(_0x1d9f74['error'][_0x8782('0x12')]===0x1f4){logger[_0x8782('0x11')](_0x8782('0xe'),_0x4455a3,_0x1d9f74[_0x8782('0x11')][_0x8782('0x13')]);return _0xfbe454(_0x1d9f74[_0x8782('0x11')][_0x8782('0x13')]);}logger['error'](_0x8782('0xe'),_0x4455a3,_0x1d9f74[_0x8782('0x11')]['message']);return _0x3b86a2(_0x1d9f74[_0x8782('0x11')][_0x8782('0x13')]);}else{logger['info']('FaxTransferReport,\x20%s,\x20%s',_0x4455a3,'request\x20sent');_0x3b86a2(_0x1d9f74[_0x8782('0x14')]['message']);}})[_0x8782('0x15')](function(_0x344cbd){logger[_0x8782('0x11')](_0x8782('0xe'),_0x4455a3,_0x344cbd);_0xfbe454(_0x344cbd);});});}
\ No newline at end of file
+var _0x3ccc=['request\x20sent','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','FaxTransferReport,\x20%s,\x20%s','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','then','info'];(function(_0x487eda,_0x7129b){var _0x21593f=function(_0x371469){while(--_0x371469){_0x487eda['push'](_0x487eda['shift']());}};_0x21593f(++_0x7129b);}(_0x3ccc,0xce));var _0xc3cc=function(_0x5ce781,_0x736b15){_0x5ce781=_0x5ce781-0x0;var _0xa70499=_0x3ccc[_0x5ce781];return _0xa70499;};'use strict';var _=require(_0xc3cc('0x0'));var util=require(_0xc3cc('0x1'));var moment=require(_0xc3cc('0x2'));var BPromise=require(_0xc3cc('0x3'));var rs=require(_0xc3cc('0x4'));var fs=require('fs');var Redis=require(_0xc3cc('0x5'));var db=require(_0xc3cc('0x6'))['db'];var utils=require(_0xc3cc('0x7'));var logger=require('../../config/logger')(_0xc3cc('0x8'));var config=require(_0xc3cc('0x9'));var jayson=require(_0xc3cc('0xa'));var client=jayson[_0xc3cc('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50e7c9,_0x59a630,_0x1804b5){return new BPromise(function(_0x2b5c43,_0x3f1dab){return client['request'](_0x50e7c9,_0x1804b5)[_0xc3cc('0xc')](function(_0x35341e){logger[_0xc3cc('0xd')]('FaxTransferReport,\x20%s,\x20%s',_0x59a630,_0xc3cc('0xe'));logger['debug'](_0xc3cc('0xf'),_0x59a630,_0xc3cc('0xe'),JSON['stringify'](_0x35341e));if(_0x35341e['error']){if(_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x11')]===0x1f4){logger['error'](_0xc3cc('0x12'),_0x59a630,_0x35341e['error'][_0xc3cc('0x13')]);return _0x3f1dab(_0x35341e[_0xc3cc('0x10')]['message']);}logger['error'](_0xc3cc('0x12'),_0x59a630,_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x13')]);return _0x2b5c43(_0x35341e[_0xc3cc('0x10')][_0xc3cc('0x13')]);}else{logger['info'](_0xc3cc('0x12'),_0x59a630,_0xc3cc('0xe'));_0x2b5c43(_0x35341e['result'][_0xc3cc('0x13')]);}})['catch'](function(_0xa56fc6){logger[_0xc3cc('0x10')]('FaxTransferReport,\x20%s,\x20%s',_0x59a630,_0xa56fc6);_0x3f1dab(_0xa56fc6);});});}
\ No newline at end of file
index abb6dee..964f5e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed0b=['post','create','put','update','delete','destroy','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show'];(function(_0x1b5231,_0x2c4358){var _0xa43730=function(_0x5483e4){while(--_0x5483e4){_0x1b5231['push'](_0x1b5231['shift']());}};_0xa43730(++_0x2c4358);}(_0xed0b,0x16e));var _0xbed0=function(_0x10004e,_0xd701e6){_0x10004e=_0x10004e-0x0;var _0x5af990=_0xed0b[_0x10004e];return _0x5af990;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xbed0('0x0'));var timeout=require(_0xbed0('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xbed0('0x2'));var auth=require(_0xbed0('0x3'));var interaction=require(_0xbed0('0x4'));var config=require(_0xbed0('0x5'));var controller=require(_0xbed0('0x6'));router[_0xbed0('0x7')]('/',auth[_0xbed0('0x8')](),controller[_0xbed0('0x9')]);router[_0xbed0('0x7')](_0xbed0('0xa'),auth[_0xbed0('0x8')](),controller[_0xbed0('0xb')]);router[_0xbed0('0x7')](_0xbed0('0xc'),auth[_0xbed0('0x8')](),controller[_0xbed0('0xd')]);router[_0xbed0('0xe')]('/',auth['isAuthenticated'](),controller[_0xbed0('0xf')]);router[_0xbed0('0x10')](_0xbed0('0xc'),auth[_0xbed0('0x8')](),controller[_0xbed0('0x11')]);router[_0xbed0('0x12')]('/:id',auth[_0xbed0('0x8')](),controller[_0xbed0('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xcacf=['show','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1d572d,_0x5b7f4c){var _0x34cc05=function(_0xa82e60){while(--_0xa82e60){_0x1d572d['push'](_0x1d572d['shift']());}};_0x34cc05(++_0x5b7f4c);}(_0xcacf,0x139));var _0xfcac=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xcacf[_0x3054be];return _0x3df150;};'use strict';var multer=require(_0xfcac('0x0'));var util=require(_0xfcac('0x1'));var path=require(_0xfcac('0x2'));var timeout=require(_0xfcac('0x3'));var express=require(_0xfcac('0x4'));var router=express[_0xfcac('0x5')]();var fs_extra=require(_0xfcac('0x6'));var auth=require(_0xfcac('0x7'));var interaction=require(_0xfcac('0x8'));var config=require(_0xfcac('0x9'));var controller=require(_0xfcac('0xa'));router[_0xfcac('0xb')]('/',auth[_0xfcac('0xc')](),controller[_0xfcac('0xd')]);router[_0xfcac('0xb')](_0xfcac('0xe'),auth[_0xfcac('0xc')](),controller[_0xfcac('0xf')]);router[_0xfcac('0xb')](_0xfcac('0x10'),auth[_0xfcac('0xc')](),controller[_0xfcac('0x11')]);router['post']('/',auth[_0xfcac('0xc')](),controller['create']);router['put']('/:id',auth[_0xfcac('0xc')](),controller[_0xfcac('0x12')]);router[_0xfcac('0x13')]('/:id',auth[_0xfcac('0xc')](),controller[_0xfcac('0x14')]);module[_0xfcac('0x15')]=router;
\ No newline at end of file
index 6efc11f..098d8c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc87d=['put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc87d,0x19b));var _0xdc87=function(_0x37f7b7,_0x3cf4d8){_0x37f7b7=_0x37f7b7-0x0;var _0x3c4497=_0xc87d[_0x37f7b7];return _0x3c4497;};'use strict';var multer=require(_0xdc87('0x0'));var util=require(_0xdc87('0x1'));var path=require(_0xdc87('0x2'));var timeout=require(_0xdc87('0x3'));var express=require(_0xdc87('0x4'));var router=express[_0xdc87('0x5')]();var fs_extra=require(_0xdc87('0x6'));var auth=require(_0xdc87('0x7'));var interaction=require(_0xdc87('0x8'));var config=require(_0xdc87('0x9'));var controller=require(_0xdc87('0xa'));router[_0xdc87('0xb')]('/',auth[_0xdc87('0xc')](),controller[_0xdc87('0xd')]);router[_0xdc87('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xdc87('0xe')]);router[_0xdc87('0xb')](_0xdc87('0xf'),auth[_0xdc87('0xc')](),controller[_0xdc87('0x10')]);router[_0xdc87('0xb')]('/:id/fields',auth['isAuthenticated'](),controller[_0xdc87('0x11')]);router[_0xdc87('0x12')]('/',auth[_0xdc87('0xc')](),controller[_0xdc87('0x13')]);router[_0xdc87('0x12')](_0xdc87('0xf'),auth[_0xdc87('0xc')](),controller[_0xdc87('0x14')]);router[_0xdc87('0x15')](_0xdc87('0x16'),auth['isAuthenticated'](),controller[_0xdc87('0x17')]);router[_0xdc87('0x18')](_0xdc87('0x16'),auth['isAuthenticated'](),controller[_0xdc87('0x19')]);module[_0xdc87('0x1a')]=router;
\ No newline at end of file
+var _0x9425=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','post','create','addConfiguration','update','delete','destroy','exports','multer','path'];(function(_0x2b70f8,_0x361789){var _0x2f741e=function(_0x50d901){while(--_0x50d901){_0x2b70f8['push'](_0x2b70f8['shift']());}};_0x2f741e(++_0x361789);}(_0x9425,0x6c));var _0x5942=function(_0xe7c85,_0x17109a){_0xe7c85=_0xe7c85-0x0;var _0x2beef9=_0x9425[_0xe7c85];return _0x2beef9;};'use strict';var multer=require(_0x5942('0x0'));var util=require('util');var path=require(_0x5942('0x1'));var timeout=require(_0x5942('0x2'));var express=require(_0x5942('0x3'));var router=express[_0x5942('0x4')]();var fs_extra=require(_0x5942('0x5'));var auth=require(_0x5942('0x6'));var interaction=require(_0x5942('0x7'));var config=require('../../config/environment');var controller=require('./intDeskAccount.controller');router[_0x5942('0x8')]('/',auth[_0x5942('0x9')](),controller[_0x5942('0xa')]);router[_0x5942('0x8')](_0x5942('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x5942('0x8')](_0x5942('0xc'),auth[_0x5942('0x9')](),controller[_0x5942('0xd')]);router['get'](_0x5942('0xe'),auth[_0x5942('0x9')](),controller['getFields']);router[_0x5942('0xf')]('/',auth[_0x5942('0x9')](),controller[_0x5942('0x10')]);router['post'](_0x5942('0xc'),auth[_0x5942('0x9')](),controller[_0x5942('0x11')]);router['put'](_0x5942('0xb'),auth[_0x5942('0x9')](),controller[_0x5942('0x12')]);router[_0x5942('0x13')](_0x5942('0xb'),auth['isAuthenticated'](),controller[_0x5942('0x14')]);module[_0x5942('0x15')]=router;
\ No newline at end of file
index 0940545..722ef48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x813e=['integrationTab','newTab','STRING','ENUM','basic'];(function(_0x35acf5,_0x4577af){var _0x3ffed3=function(_0x58d47c){while(--_0x58d47c){_0x35acf5['push'](_0x35acf5['shift']());}};_0x3ffed3(++_0x4577af);}(_0x813e,0x18d));var _0xe813=function(_0x1cd51f,_0x297954){_0x1cd51f=_0x1cd51f-0x0;var _0x54208a=_0x813e[_0x1cd51f];return _0x54208a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xe813('0x0')]},'description':{'type':Sequelize[_0xe813('0x0')]},'username':{'type':Sequelize[_0xe813('0x0')]},'remoteUri':{'type':Sequelize[_0xe813('0x0')]},'authType':{'type':Sequelize[_0xe813('0x1')]('basic'),'defaultValue':_0xe813('0x2')},'password':{'type':Sequelize[_0xe813('0x0')]},'consumerKey':{'type':Sequelize[_0xe813('0x0')]},'consumerSecret':{'type':Sequelize[_0xe813('0x0')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0xe813('0x0')]},'serverUrl':{'type':Sequelize[_0xe813('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe813('0x3'),_0xe813('0x4')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x0e98=['STRING','ENUM','basic','newTab','integrationTab','sequelize','exports'];(function(_0x1b3755,_0xff5eef){var _0x4ed465=function(_0x16c900){while(--_0x16c900){_0x1b3755['push'](_0x1b3755['shift']());}};_0x4ed465(++_0xff5eef);}(_0x0e98,0x1cc));var _0x80e9=function(_0x641a1a,_0xa363e){_0x641a1a=_0x641a1a-0x0;var _0x2f34cc=_0x0e98[_0x641a1a];return _0x2f34cc;};'use strict';var Sequelize=require(_0x80e9('0x0'));module[_0x80e9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x80e9('0x2')]},'username':{'type':Sequelize[_0x80e9('0x2')]},'remoteUri':{'type':Sequelize[_0x80e9('0x2')]},'authType':{'type':Sequelize[_0x80e9('0x3')]('basic'),'defaultValue':_0x80e9('0x4')},'password':{'type':Sequelize[_0x80e9('0x2')]},'consumerKey':{'type':Sequelize[_0x80e9('0x2')]},'consumerSecret':{'type':Sequelize[_0x80e9('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x80e9('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x80e9('0x5')),'defaultValue':_0x80e9('0x6')}};
\ No newline at end of file
index 7863e0f..e215830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc946=['consumerKey','consumerSecret','tokenSecret','substring','lastIndexOf','GET','format','%s/custom_fields','application/json','basic','headers','Authorization','Basic\x20%s','%s:%s','toString','base64','concat','entries','active','label','test','statusCode','getFields','stringify','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','count','set','Content-Range','save','update','sendStatus','error','stack','name','send','index','map','DeskAccount','rawAttributes','fieldName','type','model','keys','filters','intersection','query','attributes','fields','length','nolimit','limit','sort','where','pick','filter','merge','options','then','include','findAll','rows','catch','params','includeAll','find','create','body','getConfigurations','findOne','order','hasOwnProperty','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','DeskConfiguration','Subjects','DeskField','remoteUri','authType','username','password'];(function(_0x4e9628,_0x250573){var _0x27bc8c=function(_0xb3b7ae){while(--_0xb3b7ae){_0x4e9628['push'](_0x4e9628['shift']());}};_0x27bc8c(++_0x250573);}(_0xc946,0x1e4));var _0x6c94=function(_0x29fc06,_0x24a97f){_0x29fc06=_0x29fc06-0x0;var _0x2a37ea=_0xc946[_0x29fc06];return _0x2a37ea;};'use strict';var emlformat=require(_0x6c94('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6c94('0x1'));var jsonpatch=require(_0x6c94('0x2'));var rp=require(_0x6c94('0x3'));var moment=require(_0x6c94('0x4'));var BPromise=require(_0x6c94('0x5'));var Mustache=require(_0x6c94('0x6'));var util=require('util');var path=require(_0x6c94('0x7'));var sox=require(_0x6c94('0x8'));var csv=require(_0x6c94('0x9'));var ejs=require(_0x6c94('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6c94('0xb'));var squel=require(_0x6c94('0xc'));var crypto=require(_0x6c94('0xd'));var jsforce=require(_0x6c94('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6c94('0x9'));var querystring=require('querystring');var Papa=require(_0x6c94('0xf'));var Redis=require(_0x6c94('0x10'));var authService=require(_0x6c94('0x11'));var qs=require(_0x6c94('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6c94('0x13'));var logger=require(_0x6c94('0x14'))(_0x6c94('0x15'));var utils=require(_0x6c94('0x16'));var config=require(_0x6c94('0x17'));var licenseUtil=require(_0x6c94('0x18'));var db=require(_0x6c94('0x19'))['db'];var integrations=require(_0x6c94('0x1a'));function respondWithStatusCode(_0x32076d,_0x47b1f0){_0x47b1f0=_0x47b1f0||0xcc;return function(_0x30f569){if(_0x30f569){return _0x32076d['sendStatus'](_0x47b1f0);}return _0x32076d[_0x6c94('0x1b')](_0x47b1f0)[_0x6c94('0x1c')]();};}function respondWithResult(_0x20e6b0,_0x58869c){_0x58869c=_0x58869c||0xc8;return function(_0x2e03bc){if(_0x2e03bc){return _0x20e6b0[_0x6c94('0x1b')](_0x58869c)[_0x6c94('0x1d')](_0x2e03bc);}};}function respondWithFilteredResult(_0x52277d,_0x4447f7){return function(_0x4ecc9a){if(_0x4ecc9a){var _0x1b29c0=typeof _0x4447f7[_0x6c94('0x1e')]===_0x6c94('0x1f')&&typeof _0x4447f7['limit']===_0x6c94('0x1f');var _0x14a709=_0x4ecc9a[_0x6c94('0x20')];var _0x8e37d1=_0x1b29c0?0x0:_0x4447f7[_0x6c94('0x1e')];var _0x2d049c=_0x1b29c0?_0x4ecc9a[_0x6c94('0x20')]:_0x4447f7[_0x6c94('0x1e')]+_0x4447f7['limit'];var _0x123595;if(_0x2d049c>=_0x14a709){_0x2d049c=_0x14a709;_0x123595=0xc8;}else{_0x123595=0xce;}_0x52277d[_0x6c94('0x1b')](_0x123595);return _0x52277d[_0x6c94('0x21')](_0x6c94('0x22'),_0x8e37d1+'-'+_0x2d049c+'/'+_0x14a709)[_0x6c94('0x1d')](_0x4ecc9a);}return null;};}function patchUpdates(_0xb7dfc8){return function(_0x1775bd){try{jsonpatch['apply'](_0x1775bd,_0xb7dfc8,!![]);}catch(_0x32afc3){return BPromise['reject'](_0x32afc3);}return _0x1775bd[_0x6c94('0x23')]();};}function saveUpdates(_0x20668a,_0x10e19b){return function(_0x350293){if(_0x350293){return _0x350293[_0x6c94('0x24')](_0x20668a)['then'](function(_0x12e97e){return _0x12e97e;});}return null;};}function removeEntity(_0x57cacb,_0x4b9eb4){return function(_0x32749e){if(_0x32749e){return _0x32749e['destroy']()['then'](function(){_0x57cacb['status'](0xcc)[_0x6c94('0x1c')]();});}};}function handleEntityNotFound(_0x3447c8,_0x3acc4e){return function(_0x293bff){if(!_0x293bff){_0x3447c8[_0x6c94('0x25')](0x194);}return _0x293bff;};}function handleError(_0x385814,_0x59bb58){_0x59bb58=_0x59bb58||0x1f4;return function(_0x4ab289){logger[_0x6c94('0x26')](_0x4ab289[_0x6c94('0x27')]);if(_0x4ab289[_0x6c94('0x28')]){delete _0x4ab289[_0x6c94('0x28')];}_0x385814[_0x6c94('0x1b')](_0x59bb58)[_0x6c94('0x29')](_0x4ab289);};}exports[_0x6c94('0x2a')]=function(_0x52657d,_0x3bfc07){var _0x40f7ea={},_0x2ea1d4={},_0x4bc0a4={'count':0x0,'rows':[]};var _0x238299=_[_0x6c94('0x2b')](db[_0x6c94('0x2c')][_0x6c94('0x2d')],function(_0x1c877a){return{'name':_0x1c877a[_0x6c94('0x2e')],'type':_0x1c877a[_0x6c94('0x2f')]['key']};});_0x2ea1d4[_0x6c94('0x30')]=_[_0x6c94('0x2b')](_0x238299,_0x6c94('0x28'));_0x2ea1d4['query']=_[_0x6c94('0x31')](_0x52657d['query']);_0x2ea1d4[_0x6c94('0x32')]=_[_0x6c94('0x33')](_0x2ea1d4['model'],_0x2ea1d4[_0x6c94('0x34')]);_0x40f7ea[_0x6c94('0x35')]=_[_0x6c94('0x33')](_0x2ea1d4['model'],qs[_0x6c94('0x36')](_0x52657d['query'][_0x6c94('0x36')]));_0x40f7ea[_0x6c94('0x35')]=_0x40f7ea[_0x6c94('0x35')][_0x6c94('0x37')]?_0x40f7ea[_0x6c94('0x35')]:_0x2ea1d4['model'];if(!_0x52657d[_0x6c94('0x34')]['hasOwnProperty'](_0x6c94('0x38'))){_0x40f7ea[_0x6c94('0x39')]=qs['limit'](_0x52657d[_0x6c94('0x34')][_0x6c94('0x39')]);_0x40f7ea['offset']=qs[_0x6c94('0x1e')](_0x52657d[_0x6c94('0x34')][_0x6c94('0x1e')]);}_0x40f7ea['order']=qs[_0x6c94('0x3a')](_0x52657d[_0x6c94('0x34')][_0x6c94('0x3a')]);_0x40f7ea[_0x6c94('0x3b')]=qs[_0x6c94('0x32')](_[_0x6c94('0x3c')](_0x52657d[_0x6c94('0x34')],_0x2ea1d4['filters']),_0x238299);if(_0x52657d[_0x6c94('0x34')][_0x6c94('0x3d')]){_0x40f7ea[_0x6c94('0x3b')]=_[_0x6c94('0x3e')](_0x40f7ea[_0x6c94('0x3b')],{'$or':_[_0x6c94('0x2b')](_0x238299,function(_0x2a2e51){if(_0x2a2e51[_0x6c94('0x2f')]!=='VIRTUAL'){var _0x588b81={};_0x588b81[_0x2a2e51[_0x6c94('0x28')]]={'$like':'%'+_0x52657d[_0x6c94('0x34')][_0x6c94('0x3d')]+'%'};return _0x588b81;}})});}_0x40f7ea=_[_0x6c94('0x3e')]({},_0x40f7ea,_0x52657d[_0x6c94('0x3f')]);var _0x2706b6={'where':_0x40f7ea[_0x6c94('0x3b')]};return db['DeskAccount'][_0x6c94('0x20')](_0x2706b6)[_0x6c94('0x40')](function(_0xebc736){_0x4bc0a4[_0x6c94('0x20')]=_0xebc736;if(_0x52657d['query']['includeAll']){_0x40f7ea[_0x6c94('0x41')]=[{'all':!![]}];}return db['DeskAccount'][_0x6c94('0x42')](_0x40f7ea);})[_0x6c94('0x40')](function(_0x5a08f){_0x4bc0a4[_0x6c94('0x43')]=_0x5a08f;return _0x4bc0a4;})[_0x6c94('0x40')](respondWithFilteredResult(_0x3bfc07,_0x40f7ea))[_0x6c94('0x44')](handleError(_0x3bfc07,null));};exports['show']=function(_0x55d4da,_0x51431e){var _0x23ff3d={'raw':![],'where':{'id':_0x55d4da[_0x6c94('0x45')]['id']}},_0xcef414={};_0xcef414['model']=_[_0x6c94('0x31')](db[_0x6c94('0x2c')]['rawAttributes']);_0xcef414[_0x6c94('0x34')]=_[_0x6c94('0x31')](_0x55d4da['query']);_0xcef414['filters']=_[_0x6c94('0x33')](_0xcef414['model'],_0xcef414[_0x6c94('0x34')]);_0x23ff3d['attributes']=_[_0x6c94('0x33')](_0xcef414['model'],qs['fields'](_0x55d4da[_0x6c94('0x34')]['fields']));_0x23ff3d[_0x6c94('0x35')]=_0x23ff3d[_0x6c94('0x35')][_0x6c94('0x37')]?_0x23ff3d[_0x6c94('0x35')]:_0xcef414['model'];if(_0x55d4da[_0x6c94('0x34')][_0x6c94('0x46')]){_0x23ff3d[_0x6c94('0x41')]=[{'all':!![]}];}_0x23ff3d=_[_0x6c94('0x3e')]({},_0x23ff3d,_0x55d4da['options']);return db[_0x6c94('0x2c')][_0x6c94('0x47')](_0x23ff3d)[_0x6c94('0x40')](handleEntityNotFound(_0x51431e,null))[_0x6c94('0x40')](respondWithResult(_0x51431e,null))['catch'](handleError(_0x51431e,null));};exports[_0x6c94('0x48')]=function(_0x1bde31,_0x570462){return db[_0x6c94('0x2c')][_0x6c94('0x48')](_0x1bde31['body'],{})['then'](respondWithResult(_0x570462,0xc9))['catch'](handleError(_0x570462,null));};exports['update']=function(_0x5907e3,_0x2ae0b8){if(_0x5907e3[_0x6c94('0x49')]['id']){delete _0x5907e3[_0x6c94('0x49')]['id'];}return db[_0x6c94('0x2c')][_0x6c94('0x47')]({'where':{'id':_0x5907e3[_0x6c94('0x45')]['id']}})['then'](handleEntityNotFound(_0x2ae0b8,null))[_0x6c94('0x40')](saveUpdates(_0x5907e3[_0x6c94('0x49')],null))[_0x6c94('0x40')](respondWithResult(_0x2ae0b8,null))[_0x6c94('0x44')](handleError(_0x2ae0b8,null));};exports['destroy']=function(_0xecbfdf,_0xf9b6b8){return db[_0x6c94('0x2c')][_0x6c94('0x47')]({'where':{'id':_0xecbfdf[_0x6c94('0x45')]['id']}})[_0x6c94('0x40')](handleEntityNotFound(_0xf9b6b8,null))[_0x6c94('0x40')](removeEntity(_0xf9b6b8,null))['catch'](handleError(_0xf9b6b8,null));};exports[_0x6c94('0x4a')]=function(_0x230a8b,_0x5d08ec,_0x1be8ee){var _0x28eb94={};var _0x39713c={};var _0x41b6a4;var _0x43bf89;return db['DeskAccount'][_0x6c94('0x4b')]({'where':{'id':_0x230a8b[_0x6c94('0x45')]['id']}})[_0x6c94('0x40')](handleEntityNotFound(_0x5d08ec,null))[_0x6c94('0x40')](function(_0x511346){if(_0x511346){_0x41b6a4=_0x511346;_0x39713c[_0x6c94('0x30')]=_['keys'](db['DeskConfiguration'][_0x6c94('0x2d')]);_0x39713c['query']=_[_0x6c94('0x31')](_0x230a8b['query']);_0x39713c[_0x6c94('0x32')]=_[_0x6c94('0x33')](_0x39713c[_0x6c94('0x30')],_0x39713c[_0x6c94('0x34')]);_0x28eb94[_0x6c94('0x35')]=_['intersection'](_0x39713c[_0x6c94('0x30')],qs[_0x6c94('0x36')](_0x230a8b['query'][_0x6c94('0x36')]));_0x28eb94[_0x6c94('0x35')]=_0x28eb94[_0x6c94('0x35')][_0x6c94('0x37')]?_0x28eb94['attributes']:_0x39713c[_0x6c94('0x30')];_0x28eb94[_0x6c94('0x4c')]=qs[_0x6c94('0x3a')](_0x230a8b['query']['sort']);_0x28eb94[_0x6c94('0x3b')]=qs['filters'](_[_0x6c94('0x3c')](_0x230a8b['query'],_0x39713c['filters']));if(_0x230a8b[_0x6c94('0x34')]['filter']){_0x28eb94[_0x6c94('0x3b')]=_[_0x6c94('0x3e')](_0x28eb94[_0x6c94('0x3b')],{'$or':_[_0x6c94('0x2b')](_0x28eb94[_0x6c94('0x35')],function(_0x56d5c){var _0x4ca388={};_0x4ca388[_0x56d5c]={'$like':'%'+_0x230a8b[_0x6c94('0x34')][_0x6c94('0x3d')]+'%'};return _0x4ca388;})});}_0x28eb94=_['merge']({},_0x28eb94,_0x230a8b[_0x6c94('0x3f')]);return _0x41b6a4[_0x6c94('0x4a')](_0x28eb94);}})['then'](function(_0x37b1cd){if(_0x37b1cd){_0x43bf89=_0x37b1cd[_0x6c94('0x37')];if(!_0x230a8b[_0x6c94('0x34')][_0x6c94('0x4d')](_0x6c94('0x38'))){_0x28eb94[_0x6c94('0x39')]=qs[_0x6c94('0x39')](_0x230a8b['query'][_0x6c94('0x39')]);_0x28eb94[_0x6c94('0x1e')]=qs[_0x6c94('0x1e')](_0x230a8b[_0x6c94('0x34')][_0x6c94('0x1e')]);}return _0x41b6a4[_0x6c94('0x4a')](_0x28eb94);}})['then'](function(_0x506f8e){if(_0x506f8e){return _0x506f8e?{'count':_0x43bf89,'rows':_0x506f8e}:null;}})[_0x6c94('0x40')](respondWithResult(_0x5d08ec,null))['catch'](handleError(_0x5d08ec,null));};exports[_0x6c94('0x4e')]=function(_0x26e989,_0x9ba9f5,_0x4b8638){if(_0x26e989[_0x6c94('0x49')]['id']){delete _0x26e989[_0x6c94('0x49')]['id'];}return db[_0x6c94('0x2c')][_0x6c94('0x4b')]({'where':{'id':_0x26e989['params']['id']}})[_0x6c94('0x40')](handleEntityNotFound(_0x9ba9f5,null))[_0x6c94('0x40')](function(_0x38164a){if(_0x38164a){_0x26e989[_0x6c94('0x49')][_0x6c94('0x4f')]=_0x38164a['id'];_0x26e989[_0x6c94('0x49')]['Subjects']=integrations[_0x6c94('0x50')](_0x26e989['body'][_0x6c94('0x51')],_0x26e989[_0x6c94('0x49')][_0x6c94('0x2f')]);_0x26e989[_0x6c94('0x49')][_0x6c94('0x52')]=integrations[_0x6c94('0x53')](_0x26e989[_0x6c94('0x49')][_0x6c94('0x51')],_0x26e989[_0x6c94('0x49')]['type']);return db[_0x6c94('0x54')][_0x6c94('0x48')](_0x26e989['body'],{'include':[{'model':db['DeskField'],'as':_0x6c94('0x55')},{'model':db[_0x6c94('0x56')],'as':'Descriptions'}]});}return null;})[_0x6c94('0x40')](respondWithResult(_0x9ba9f5,null))['catch'](handleError(_0x9ba9f5,null));};exports['getFields']=function(_0x1dbb68,_0x51f8fb,_0x2eec76){var _0x527c3c=[{'name':'priority','label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x2a83cd='';return db[_0x6c94('0x2c')][_0x6c94('0x4b')]({'where':{'id':_0x1dbb68[_0x6c94('0x45')]['id']},'attributes':['id',_0x6c94('0x57'),_0x6c94('0x58'),_0x6c94('0x59'),_0x6c94('0x5a'),_0x6c94('0x5b'),_0x6c94('0x5c'),'token',_0x6c94('0x5d')]})[_0x6c94('0x40')](handleEntityNotFound(_0x51f8fb,null))[_0x6c94('0x40')](function(_0x463d8c){if(_0x463d8c){_0x2a83cd=_0x463d8c[_0x6c94('0x57')];var _0x520de9=_0x2a83cd['slice'](-0x1);if(_0x520de9==='/'){_0x2a83cd=_0x2a83cd[_0x6c94('0x5e')](0x0,_0x2a83cd[_0x6c94('0x5f')](_0x520de9));}var _0x16e5af={'method':_0x6c94('0x60'),'uri':util[_0x6c94('0x61')](_0x6c94('0x62'),_0x2a83cd),'headers':{'Content-Type':_0x6c94('0x63'),'Accept':_0x6c94('0x63')},'json':!![]};if(_0x463d8c['authType']===_0x6c94('0x64')){_0x16e5af[_0x6c94('0x65')][_0x6c94('0x66')]=util[_0x6c94('0x61')](_0x6c94('0x67'),new Buffer(util[_0x6c94('0x61')](_0x6c94('0x68'),_0x463d8c[_0x6c94('0x59')],_0x463d8c[_0x6c94('0x5a')]))[_0x6c94('0x69')](_0x6c94('0x6a')));}return rp(_0x16e5af)[_0x6c94('0x40')](function(_0x73765){return _0x527c3c[_0x6c94('0x6b')](_['map'](_0x73765['_embedded'][_0x6c94('0x6c')],function(_0x2833d7){return{'id':_0x2833d7[_0x6c94('0x28')],'name':_0x2833d7[_0x6c94('0x28')],'type':_0x2833d7[_0x6c94('0x2f')],'active':_0x2833d7[_0x6c94('0x6d')],'label':_0x2833d7[_0x6c94('0x6e')],'custom':!![]};}));});}})[_0x6c94('0x40')](function(_0x471bc9){return{'count':_0x471bc9[_0x6c94('0x37')],'rows':_0x471bc9};})[_0x6c94('0x40')](respondWithResult(_0x51f8fb,null))[_0x6c94('0x44')](function(_0x43cd4b){var _0x6f2905=_0x1dbb68['query'][_0x6c94('0x6f')]?0x1f4:_0x43cd4b[_0x6c94('0x70')]||0x1f4;logger[_0x6c94('0x26')]('getFields,\x20%s,\x20%s,\x20%s',_0x6c94('0x71'),_0x6f2905,JSON[_0x6c94('0x72')](_0x43cd4b));delete _0x43cd4b[_0x6c94('0x28')];if(_0x6f2905===0x191){_0x6f2905=0x190;}_0x51f8fb['status'](_0x6f2905)[_0x6c94('0x29')](_0x1dbb68[_0x6c94('0x34')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x43cd4b['statusCode']}:_0x43cd4b);});};
\ No newline at end of file
+var _0x00af=['jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','status','json','offset','undefined','count','Content-Range','reject','save','update','then','destroy','end','stack','index','map','DeskAccount','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','fields','attributes','length','nolimit','limit','order','sort','filters','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','find','create','body','params','findOne','DeskConfiguration','pick','getConfigurations','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','DeskField','Descriptions','getFields','remoteUri','authType','username','password','consumerKey','consumerSecret','token','tokenSecret','substring','%s/custom_fields','application/json','basic','Authorization','Basic\x20%s','format','%s:%s','toString','base64','concat','_embedded','entries','active','label','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','zip-dir','request-promise','moment','bluebird','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2daef6,_0xcac228){var _0x62d030=function(_0x26a7d6){while(--_0x26a7d6){_0x2daef6['push'](_0x2daef6['shift']());}};_0x62d030(++_0xcac228);}(_0x00af,0xd3));var _0xf00a=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x00af[_0xbca1b1];return _0x4e1686;};'use strict';var emlformat=require(_0xf00a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf00a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf00a('0x2'));var moment=require(_0xf00a('0x3'));var BPromise=require(_0xf00a('0x4'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xf00a('0x5'));var ejs=require(_0xf00a('0x6'));var fs=require('fs');var fs_extra=require(_0xf00a('0x7'));var _=require(_0xf00a('0x8'));var squel=require(_0xf00a('0x9'));var crypto=require(_0xf00a('0xa'));var jsforce=require(_0xf00a('0xb'));var deskjs=require(_0xf00a('0xc'));var toCsv=require(_0xf00a('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf00a('0xd'));var authService=require(_0xf00a('0xe'));var qs=require(_0xf00a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf00a('0x10'));var logger=require(_0xf00a('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xf00a('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0xf00a('0x13'))['db'];var integrations=require(_0xf00a('0x14'));function respondWithStatusCode(_0x5a841b,_0x49d806){_0x49d806=_0x49d806||0xcc;return function(_0x403391){if(_0x403391){return _0x5a841b[_0xf00a('0x15')](_0x49d806);}return _0x5a841b['status'](_0x49d806)['end']();};}function respondWithResult(_0x49b1c6,_0x1cbc78){_0x1cbc78=_0x1cbc78||0xc8;return function(_0x436356){if(_0x436356){return _0x49b1c6[_0xf00a('0x16')](_0x1cbc78)[_0xf00a('0x17')](_0x436356);}};}function respondWithFilteredResult(_0x579d9e,_0x2adf55){return function(_0x1786d4){if(_0x1786d4){var _0x1157ea=typeof _0x2adf55[_0xf00a('0x18')]==='undefined'&&typeof _0x2adf55['limit']===_0xf00a('0x19');var _0x4ae0b9=_0x1786d4[_0xf00a('0x1a')];var _0x2b4a0f=_0x1157ea?0x0:_0x2adf55[_0xf00a('0x18')];var _0x3bf85d=_0x1157ea?_0x1786d4[_0xf00a('0x1a')]:_0x2adf55[_0xf00a('0x18')]+_0x2adf55['limit'];var _0x2a1c86;if(_0x3bf85d>=_0x4ae0b9){_0x3bf85d=_0x4ae0b9;_0x2a1c86=0xc8;}else{_0x2a1c86=0xce;}_0x579d9e['status'](_0x2a1c86);return _0x579d9e['set'](_0xf00a('0x1b'),_0x2b4a0f+'-'+_0x3bf85d+'/'+_0x4ae0b9)[_0xf00a('0x17')](_0x1786d4);}return null;};}function patchUpdates(_0x36f969){return function(_0x2c383f){try{jsonpatch['apply'](_0x2c383f,_0x36f969,!![]);}catch(_0x3ef229){return BPromise[_0xf00a('0x1c')](_0x3ef229);}return _0x2c383f[_0xf00a('0x1d')]();};}function saveUpdates(_0xd13174,_0x4e5efd){return function(_0xc71da8){if(_0xc71da8){return _0xc71da8[_0xf00a('0x1e')](_0xd13174)[_0xf00a('0x1f')](function(_0x502754){return _0x502754;});}return null;};}function removeEntity(_0x59b210,_0x38f431){return function(_0x40e322){if(_0x40e322){return _0x40e322[_0xf00a('0x20')]()[_0xf00a('0x1f')](function(){_0x59b210[_0xf00a('0x16')](0xcc)[_0xf00a('0x21')]();});}};}function handleEntityNotFound(_0x4012ce,_0x13cdcf){return function(_0x236e43){if(!_0x236e43){_0x4012ce['sendStatus'](0x194);}return _0x236e43;};}function handleError(_0x47b1ce,_0x2cfe09){_0x2cfe09=_0x2cfe09||0x1f4;return function(_0x41047f){logger['error'](_0x41047f[_0xf00a('0x22')]);if(_0x41047f['name']){delete _0x41047f['name'];}_0x47b1ce[_0xf00a('0x16')](_0x2cfe09)['send'](_0x41047f);};}exports[_0xf00a('0x23')]=function(_0x235614,_0x2fbdc7){var _0x4f7804={},_0x17b2d9={},_0x1fba47={'count':0x0,'rows':[]};var _0x35a515=_[_0xf00a('0x24')](db[_0xf00a('0x25')][_0xf00a('0x26')],function(_0x3c08ed){return{'name':_0x3c08ed[_0xf00a('0x27')],'type':_0x3c08ed[_0xf00a('0x28')][_0xf00a('0x29')]};});_0x17b2d9[_0xf00a('0x2a')]=_[_0xf00a('0x24')](_0x35a515,_0xf00a('0x2b'));_0x17b2d9[_0xf00a('0x2c')]=_[_0xf00a('0x2d')](_0x235614[_0xf00a('0x2c')]);_0x17b2d9['filters']=_[_0xf00a('0x2e')](_0x17b2d9[_0xf00a('0x2a')],_0x17b2d9['query']);_0x4f7804['attributes']=_[_0xf00a('0x2e')](_0x17b2d9[_0xf00a('0x2a')],qs['fields'](_0x235614['query'][_0xf00a('0x2f')]));_0x4f7804[_0xf00a('0x30')]=_0x4f7804['attributes'][_0xf00a('0x31')]?_0x4f7804[_0xf00a('0x30')]:_0x17b2d9[_0xf00a('0x2a')];if(!_0x235614[_0xf00a('0x2c')]['hasOwnProperty'](_0xf00a('0x32'))){_0x4f7804[_0xf00a('0x33')]=qs[_0xf00a('0x33')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x33')]);_0x4f7804[_0xf00a('0x18')]=qs[_0xf00a('0x18')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x18')]);}_0x4f7804[_0xf00a('0x34')]=qs[_0xf00a('0x35')](_0x235614[_0xf00a('0x2c')][_0xf00a('0x35')]);_0x4f7804['where']=qs[_0xf00a('0x36')](_['pick'](_0x235614[_0xf00a('0x2c')],_0x17b2d9[_0xf00a('0x36')]),_0x35a515);if(_0x235614[_0xf00a('0x2c')][_0xf00a('0x37')]){_0x4f7804[_0xf00a('0x38')]=_[_0xf00a('0x39')](_0x4f7804[_0xf00a('0x38')],{'$or':_['map'](_0x35a515,function(_0x50a3b9){if(_0x50a3b9[_0xf00a('0x28')]!==_0xf00a('0x3a')){var _0x456f8d={};_0x456f8d[_0x50a3b9[_0xf00a('0x2b')]]={'$like':'%'+_0x235614[_0xf00a('0x2c')][_0xf00a('0x37')]+'%'};return _0x456f8d;}})});}_0x4f7804=_[_0xf00a('0x39')]({},_0x4f7804,_0x235614[_0xf00a('0x3b')]);var _0x3a9405={'where':_0x4f7804[_0xf00a('0x38')]};return db[_0xf00a('0x25')][_0xf00a('0x1a')](_0x3a9405)[_0xf00a('0x1f')](function(_0x16caa6){_0x1fba47[_0xf00a('0x1a')]=_0x16caa6;if(_0x235614[_0xf00a('0x2c')]['includeAll']){_0x4f7804[_0xf00a('0x3c')]=[{'all':!![]}];}return db[_0xf00a('0x25')][_0xf00a('0x3d')](_0x4f7804);})[_0xf00a('0x1f')](function(_0x191b19){_0x1fba47[_0xf00a('0x3e')]=_0x191b19;return _0x1fba47;})[_0xf00a('0x1f')](respondWithFilteredResult(_0x2fbdc7,_0x4f7804))[_0xf00a('0x3f')](handleError(_0x2fbdc7,null));};exports[_0xf00a('0x40')]=function(_0x33e12f,_0x1f3b8c){var _0x345098={'raw':![],'where':{'id':_0x33e12f['params']['id']}},_0x43ccea={};_0x43ccea[_0xf00a('0x2a')]=_[_0xf00a('0x2d')](db['DeskAccount'][_0xf00a('0x26')]);_0x43ccea[_0xf00a('0x2c')]=_['keys'](_0x33e12f['query']);_0x43ccea['filters']=_[_0xf00a('0x2e')](_0x43ccea[_0xf00a('0x2a')],_0x43ccea['query']);_0x345098['attributes']=_[_0xf00a('0x2e')](_0x43ccea[_0xf00a('0x2a')],qs[_0xf00a('0x2f')](_0x33e12f[_0xf00a('0x2c')][_0xf00a('0x2f')]));_0x345098['attributes']=_0x345098[_0xf00a('0x30')][_0xf00a('0x31')]?_0x345098[_0xf00a('0x30')]:_0x43ccea[_0xf00a('0x2a')];if(_0x33e12f[_0xf00a('0x2c')][_0xf00a('0x41')]){_0x345098[_0xf00a('0x3c')]=[{'all':!![]}];}_0x345098=_[_0xf00a('0x39')]({},_0x345098,_0x33e12f[_0xf00a('0x3b')]);return db['DeskAccount'][_0xf00a('0x42')](_0x345098)['then'](handleEntityNotFound(_0x1f3b8c,null))[_0xf00a('0x1f')](respondWithResult(_0x1f3b8c,null))[_0xf00a('0x3f')](handleError(_0x1f3b8c,null));};exports[_0xf00a('0x43')]=function(_0x2b74bf,_0xc1098c){return db[_0xf00a('0x25')][_0xf00a('0x43')](_0x2b74bf[_0xf00a('0x44')],{})[_0xf00a('0x1f')](respondWithResult(_0xc1098c,0xc9))[_0xf00a('0x3f')](handleError(_0xc1098c,null));};exports[_0xf00a('0x1e')]=function(_0x309098,_0x485936){if(_0x309098[_0xf00a('0x44')]['id']){delete _0x309098[_0xf00a('0x44')]['id'];}return db[_0xf00a('0x25')]['find']({'where':{'id':_0x309098[_0xf00a('0x45')]['id']}})['then'](handleEntityNotFound(_0x485936,null))[_0xf00a('0x1f')](saveUpdates(_0x309098['body'],null))[_0xf00a('0x1f')](respondWithResult(_0x485936,null))[_0xf00a('0x3f')](handleError(_0x485936,null));};exports[_0xf00a('0x20')]=function(_0x5df6d4,_0x5a9926){return db[_0xf00a('0x25')][_0xf00a('0x42')]({'where':{'id':_0x5df6d4[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x5a9926,null))[_0xf00a('0x1f')](removeEntity(_0x5a9926,null))[_0xf00a('0x3f')](handleError(_0x5a9926,null));};exports['getConfigurations']=function(_0x3d5dd6,_0x27d6cb,_0x10d536){var _0x4ec6be={};var _0x5d312a={};var _0x57f17b;var _0x556ee3;return db[_0xf00a('0x25')][_0xf00a('0x46')]({'where':{'id':_0x3d5dd6[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x27d6cb,null))['then'](function(_0x442f81){if(_0x442f81){_0x57f17b=_0x442f81;_0x5d312a[_0xf00a('0x2a')]=_['keys'](db[_0xf00a('0x47')][_0xf00a('0x26')]);_0x5d312a[_0xf00a('0x2c')]=_['keys'](_0x3d5dd6[_0xf00a('0x2c')]);_0x5d312a[_0xf00a('0x36')]=_['intersection'](_0x5d312a[_0xf00a('0x2a')],_0x5d312a[_0xf00a('0x2c')]);_0x4ec6be['attributes']=_[_0xf00a('0x2e')](_0x5d312a['model'],qs[_0xf00a('0x2f')](_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x2f')]));_0x4ec6be[_0xf00a('0x30')]=_0x4ec6be[_0xf00a('0x30')][_0xf00a('0x31')]?_0x4ec6be[_0xf00a('0x30')]:_0x5d312a[_0xf00a('0x2a')];_0x4ec6be[_0xf00a('0x34')]=qs[_0xf00a('0x35')](_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x35')]);_0x4ec6be[_0xf00a('0x38')]=qs[_0xf00a('0x36')](_[_0xf00a('0x48')](_0x3d5dd6[_0xf00a('0x2c')],_0x5d312a[_0xf00a('0x36')]));if(_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x37')]){_0x4ec6be[_0xf00a('0x38')]=_[_0xf00a('0x39')](_0x4ec6be[_0xf00a('0x38')],{'$or':_[_0xf00a('0x24')](_0x4ec6be[_0xf00a('0x30')],function(_0x4699a7){var _0x52072c={};_0x52072c[_0x4699a7]={'$like':'%'+_0x3d5dd6['query'][_0xf00a('0x37')]+'%'};return _0x52072c;})});}_0x4ec6be=_[_0xf00a('0x39')]({},_0x4ec6be,_0x3d5dd6[_0xf00a('0x3b')]);return _0x57f17b[_0xf00a('0x49')](_0x4ec6be);}})['then'](function(_0x3dae1a){if(_0x3dae1a){_0x556ee3=_0x3dae1a[_0xf00a('0x31')];if(!_0x3d5dd6[_0xf00a('0x2c')][_0xf00a('0x4a')](_0xf00a('0x32'))){_0x4ec6be['limit']=qs[_0xf00a('0x33')](_0x3d5dd6[_0xf00a('0x2c')]['limit']);_0x4ec6be['offset']=qs[_0xf00a('0x18')](_0x3d5dd6['query'][_0xf00a('0x18')]);}return _0x57f17b['getConfigurations'](_0x4ec6be);}})[_0xf00a('0x1f')](function(_0x453147){if(_0x453147){return _0x453147?{'count':_0x556ee3,'rows':_0x453147}:null;}})[_0xf00a('0x1f')](respondWithResult(_0x27d6cb,null))[_0xf00a('0x3f')](handleError(_0x27d6cb,null));};exports[_0xf00a('0x4b')]=function(_0x27c2d7,_0x3a8204,_0x1f9c5c){if(_0x27c2d7['body']['id']){delete _0x27c2d7['body']['id'];}return db[_0xf00a('0x25')][_0xf00a('0x46')]({'where':{'id':_0x27c2d7[_0xf00a('0x45')]['id']}})[_0xf00a('0x1f')](handleEntityNotFound(_0x3a8204,null))['then'](function(_0x227fe5){if(_0x227fe5){_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4c')]=_0x227fe5['id'];_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4d')]=integrations[_0xf00a('0x4e')](_0x27c2d7['body']['channel'],_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x28')]);_0x27c2d7['body']['Descriptions']=integrations['getDescriptions'](_0x27c2d7[_0xf00a('0x44')][_0xf00a('0x4f')],_0x27c2d7['body'][_0xf00a('0x28')]);return db[_0xf00a('0x47')][_0xf00a('0x43')](_0x27c2d7['body'],{'include':[{'model':db[_0xf00a('0x50')],'as':_0xf00a('0x4d')},{'model':db[_0xf00a('0x50')],'as':_0xf00a('0x51')}]});}return null;})[_0xf00a('0x1f')](respondWithResult(_0x3a8204,null))[_0xf00a('0x3f')](handleError(_0x3a8204,null));};exports[_0xf00a('0x52')]=function(_0x3e9673,_0x4a0816,_0x105ebd){var _0xbb6fda=[{'name':'priority','label':'priority','custom':![],'options':[{'name':0x1,'value':0x1},{'name':0x2,'value':0x2},{'name':0x3,'value':0x3},{'name':0x4,'value':0x4},{'name':0x5,'value':0x5},{'name':0x6,'value':0x6},{'name':0x7,'value':0x7},{'name':0x8,'value':0x8},{'name':0x9,'value':0x9},{'name':0xa,'value':0xa}]}];var _0x3ae58c='';return db[_0xf00a('0x25')]['findOne']({'where':{'id':_0x3e9673[_0xf00a('0x45')]['id']},'attributes':['id',_0xf00a('0x53'),_0xf00a('0x54'),_0xf00a('0x55'),_0xf00a('0x56'),_0xf00a('0x57'),_0xf00a('0x58'),_0xf00a('0x59'),_0xf00a('0x5a')]})[_0xf00a('0x1f')](handleEntityNotFound(_0x4a0816,null))[_0xf00a('0x1f')](function(_0x7a937c){if(_0x7a937c){_0x3ae58c=_0x7a937c['remoteUri'];var _0x3abe41=_0x3ae58c['slice'](-0x1);if(_0x3abe41==='/'){_0x3ae58c=_0x3ae58c[_0xf00a('0x5b')](0x0,_0x3ae58c['lastIndexOf'](_0x3abe41));}var _0x5b4a90={'method':'GET','uri':util['format'](_0xf00a('0x5c'),_0x3ae58c),'headers':{'Content-Type':_0xf00a('0x5d'),'Accept':_0xf00a('0x5d')},'json':!![]};if(_0x7a937c[_0xf00a('0x54')]===_0xf00a('0x5e')){_0x5b4a90['headers'][_0xf00a('0x5f')]=util['format'](_0xf00a('0x60'),new Buffer(util[_0xf00a('0x61')](_0xf00a('0x62'),_0x7a937c[_0xf00a('0x55')],_0x7a937c[_0xf00a('0x56')]))[_0xf00a('0x63')](_0xf00a('0x64')));}return rp(_0x5b4a90)[_0xf00a('0x1f')](function(_0x4652ea){return _0xbb6fda[_0xf00a('0x65')](_[_0xf00a('0x24')](_0x4652ea[_0xf00a('0x66')][_0xf00a('0x67')],function(_0x1f1a66){return{'id':_0x1f1a66[_0xf00a('0x2b')],'name':_0x1f1a66['name'],'type':_0x1f1a66[_0xf00a('0x28')],'active':_0x1f1a66[_0xf00a('0x68')],'label':_0x1f1a66[_0xf00a('0x69')],'custom':!![]};}));});}})['then'](function(_0x21ee5e){return{'count':_0x21ee5e[_0xf00a('0x31')],'rows':_0x21ee5e};})[_0xf00a('0x1f')](respondWithResult(_0x4a0816,null))[_0xf00a('0x3f')](function(_0x474e9d){var _0x42b2fc=_0x3e9673[_0xf00a('0x2c')][_0xf00a('0x6a')]?0x1f4:_0x474e9d['statusCode']||0x1f4;logger['error'](_0xf00a('0x6b'),_0xf00a('0x52'),_0x42b2fc,JSON[_0xf00a('0x6c')](_0x474e9d));delete _0x474e9d[_0xf00a('0x2b')];if(_0x42b2fc===0x191){_0x42b2fc=0x190;}_0x4a0816[_0xf00a('0x16')](_0x42b2fc)['send'](_0x3e9673['query']['test']?{'message':_0xf00a('0x6d'),'statusCode':_0x474e9d[_0xf00a('0x6e')]}:_0x474e9d);});};
\ No newline at end of file
index 2dd907a..65cfa2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x446f=['rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','DeskAccount','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3c6310,_0x13601d){var _0x320122=function(_0x596176){while(--_0x596176){_0x3c6310['push'](_0x3c6310['shift']());}};_0x320122(++_0x13601d);}(_0x446f,0x84));var _0xf446=function(_0x4b77c8,_0x32a7ad){_0x4b77c8=_0x4b77c8-0x0;var _0xee40a7=_0x446f[_0x4b77c8];return _0xee40a7;};'use strict';var _=require(_0xf446('0x0'));var util=require(_0xf446('0x1'));var logger=require(_0xf446('0x2'))(_0xf446('0x3'));var moment=require(_0xf446('0x4'));var BPromise=require(_0xf446('0x5'));var rp=require(_0xf446('0x6'));var fs=require('fs');var path=require(_0xf446('0x7'));var rimraf=require(_0xf446('0x8'));var config=require(_0xf446('0x9'));var attributes=require(_0xf446('0xa'));var integrations=require(_0xf446('0xb'));module['exports']=function(_0x410426,_0x342bad){return _0x410426[_0xf446('0xc')](_0xf446('0xd'),attributes,{'tableName':'int_desk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe7c5=['lodash','util','../../config/logger','moment','bluebird','request-promise','rimraf','../../config/environment','./intDeskAccount.attributes','../../components/integrations/configuration','define','int_desk_accounts'];(function(_0x3051e,_0xaa2fb1){var _0x480159=function(_0x5a3ef8){while(--_0x5a3ef8){_0x3051e['push'](_0x3051e['shift']());}};_0x480159(++_0xaa2fb1);}(_0xe7c5,0xc0));var _0x5e7c=function(_0x1804ae,_0x33570b){_0x1804ae=_0x1804ae-0x0;var _0x5e5161=_0xe7c5[_0x1804ae];return _0x5e5161;};'use strict';var _=require(_0x5e7c('0x0'));var util=require(_0x5e7c('0x1'));var logger=require(_0x5e7c('0x2'))('api');var moment=require(_0x5e7c('0x3'));var BPromise=require(_0x5e7c('0x4'));var rp=require(_0x5e7c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5e7c('0x6'));var config=require(_0x5e7c('0x7'));var attributes=require(_0x5e7c('0x8'));var integrations=require(_0x5e7c('0x9'));module['exports']=function(_0x3956b9,_0x4f3808){return _0x3956b9[_0x5e7c('0xa')]('DeskAccount',attributes,{'tableName':_0x5e7c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a4f1665..34e2ee2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x74d0=['catch','DeskAccount','findAll','options','raw','where','attributes','include','map','model','GetDeskAccount','ShowDeskAccount','find','lodash','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result'];(function(_0x3b0037,_0xb9e081){var _0x23ce2a=function(_0x10c5ec){while(--_0x10c5ec){_0x3b0037['push'](_0x3b0037['shift']());}};_0x23ce2a(++_0xb9e081);}(_0x74d0,0x1e9));var _0x074d=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x74d0[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x074d('0x0'));var util=require('util');var moment=require(_0x074d('0x1'));var BPromise=require(_0x074d('0x2'));var rs=require(_0x074d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x074d('0x4'))(_0x074d('0x5'));var config=require(_0x074d('0x6'));var jayson=require(_0x074d('0x7'));var client=jayson[_0x074d('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2d779a,_0x14b9d5,_0xdcb34){return new BPromise(function(_0x17cd6e,_0x4d7b6d){return client[_0x074d('0x9')](_0x2d779a,_0xdcb34)[_0x074d('0xa')](function(_0x1ca975){logger[_0x074d('0xb')](_0x074d('0xc'),_0x14b9d5,_0x074d('0xd'));logger[_0x074d('0xe')](_0x074d('0xf'),_0x14b9d5,_0x074d('0xd'),JSON[_0x074d('0x10')](_0x1ca975));if(_0x1ca975['error']){if(_0x1ca975['error'][_0x074d('0x11')]===0x1f4){logger[_0x074d('0x12')]('DeskAccount,\x20%s,\x20%s',_0x14b9d5,_0x1ca975[_0x074d('0x12')][_0x074d('0x13')]);return _0x4d7b6d(_0x1ca975['error']['message']);}logger[_0x074d('0x12')]('DeskAccount,\x20%s,\x20%s',_0x14b9d5,_0x1ca975[_0x074d('0x12')][_0x074d('0x13')]);return _0x17cd6e(_0x1ca975['error']['message']);}else{logger[_0x074d('0xb')](_0x074d('0xc'),_0x14b9d5,_0x074d('0xd'));_0x17cd6e(_0x1ca975[_0x074d('0x14')][_0x074d('0x13')]);}})[_0x074d('0x15')](function(_0x1dc017){logger[_0x074d('0x12')](_0x074d('0xc'),_0x14b9d5,_0x1dc017);_0x4d7b6d(_0x1dc017);});});}exports['GetDeskAccount']=function(_0x535151){var _0x266341=this;return new Promise(function(_0x40ce2d,_0x403dd9){return db[_0x074d('0x16')][_0x074d('0x17')]({'raw':_0x535151[_0x074d('0x18')]?_0x535151[_0x074d('0x18')][_0x074d('0x19')]===undefined?!![]:![]:!![],'where':_0x535151['options']?_0x535151[_0x074d('0x18')][_0x074d('0x1a')]||null:null,'attributes':_0x535151['options']?_0x535151[_0x074d('0x18')][_0x074d('0x1b')]||null:null,'limit':_0x535151[_0x074d('0x18')]?_0x535151['options']['limit']||null:null,'include':_0x535151['options']?_0x535151[_0x074d('0x18')][_0x074d('0x1c')]?_[_0x074d('0x1d')](_0x535151[_0x074d('0x18')]['include'],function(_0x2af518){return{'model':db[_0x2af518[_0x074d('0x1e')]],'as':_0x2af518['as'],'attributes':_0x2af518[_0x074d('0x1b')],'include':_0x2af518['include']?_['map'](_0x2af518[_0x074d('0x1c')],function(_0x1e17c9){return{'model':db[_0x1e17c9[_0x074d('0x1e')]],'as':_0x1e17c9['as'],'attributes':_0x1e17c9[_0x074d('0x1b')],'include':_0x1e17c9['include']?_['map'](_0x1e17c9['include'],function(_0xb8a04e){return{'model':db[_0xb8a04e[_0x074d('0x1e')]],'as':_0xb8a04e['as'],'attributes':_0xb8a04e[_0x074d('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x074d('0xa')](function(_0x180882){logger[_0x074d('0xb')](_0x074d('0x1f'),_0x535151);logger['debug'](_0x074d('0x1f'),_0x535151,JSON[_0x074d('0x10')](_0x180882));_0x40ce2d(_0x180882);})['catch'](function(_0x17cbf3){logger[_0x074d('0x12')]('GetDeskAccount',_0x17cbf3['message'],_0x535151);_0x403dd9(_0x266341[_0x074d('0x12')](0x1f4,_0x17cbf3[_0x074d('0x13')]));});});};exports[_0x074d('0x20')]=function(_0x5c4da3){var _0x181f9b=this;return new Promise(function(_0x4d3b12,_0x10f7fb){return db[_0x074d('0x16')][_0x074d('0x21')]({'raw':_0x5c4da3[_0x074d('0x18')]?_0x5c4da3['options'][_0x074d('0x19')]===undefined?!![]:![]:!![],'where':_0x5c4da3[_0x074d('0x18')]?_0x5c4da3['options'][_0x074d('0x1a')]||null:null,'attributes':_0x5c4da3[_0x074d('0x18')]?_0x5c4da3[_0x074d('0x18')]['attributes']||null:null,'include':_0x5c4da3['options']?_0x5c4da3[_0x074d('0x18')][_0x074d('0x1c')]?_[_0x074d('0x1d')](_0x5c4da3['options']['include'],function(_0x4cd779){return{'model':db[_0x4cd779[_0x074d('0x1e')]],'as':_0x4cd779['as'],'attributes':_0x4cd779[_0x074d('0x1b')],'include':_0x4cd779[_0x074d('0x1c')]?_['map'](_0x4cd779[_0x074d('0x1c')],function(_0x5edb1b){return{'model':db[_0x5edb1b[_0x074d('0x1e')]],'as':_0x5edb1b['as'],'attributes':_0x5edb1b[_0x074d('0x1b')],'include':_0x5edb1b['include']?_[_0x074d('0x1d')](_0x5edb1b['include'],function(_0x589002){return{'model':db[_0x589002[_0x074d('0x1e')]],'as':_0x589002['as'],'attributes':_0x589002[_0x074d('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x158759){logger[_0x074d('0xb')](_0x074d('0x20'),_0x5c4da3);logger[_0x074d('0xe')](_0x074d('0x20'),_0x5c4da3,JSON['stringify'](_0x158759));_0x4d3b12(_0x158759);})[_0x074d('0x15')](function(_0x1c2de9){logger['error'](_0x074d('0x20'),_0x1c2de9[_0x074d('0x13')],_0x5c4da3);_0x10f7fb(_0x181f9b[_0x074d('0x12')](0x1f4,_0x1c2de9[_0x074d('0x13')]));});});};
\ No newline at end of file
+var _0xc2c2=['where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','findAll','options','include','map','model','attributes','GetDeskAccount','ShowDeskAccount','raw'];(function(_0x296860,_0x5ac07c){var _0x23e273=function(_0x509e97){while(--_0x509e97){_0x296860['push'](_0x296860['shift']());}};_0x23e273(++_0x5ac07c);}(_0xc2c2,0x67));var _0x2c2c=function(_0x414d48,_0x45ec69){_0x414d48=_0x414d48-0x0;var _0x1996ac=_0xc2c2[_0x414d48];return _0x1996ac;};'use strict';var _=require(_0x2c2c('0x0'));var util=require(_0x2c2c('0x1'));var moment=require(_0x2c2c('0x2'));var BPromise=require('bluebird');var rs=require(_0x2c2c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2c2c('0x4'))['db'];var utils=require(_0x2c2c('0x5'));var logger=require(_0x2c2c('0x6'))(_0x2c2c('0x7'));var config=require(_0x2c2c('0x8'));var jayson=require(_0x2c2c('0x9'));var client=jayson[_0x2c2c('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x420ccd,_0x198864,_0x1f9312){return new BPromise(function(_0x453a6b,_0x58a10d){return client[_0x2c2c('0xb')](_0x420ccd,_0x1f9312)[_0x2c2c('0xc')](function(_0x5b1939){logger[_0x2c2c('0xd')](_0x2c2c('0xe'),_0x198864,_0x2c2c('0xf'));logger[_0x2c2c('0x10')](_0x2c2c('0x11'),_0x198864,_0x2c2c('0xf'),JSON[_0x2c2c('0x12')](_0x5b1939));if(_0x5b1939['error']){if(_0x5b1939[_0x2c2c('0x13')][_0x2c2c('0x14')]===0x1f4){logger[_0x2c2c('0x13')]('DeskAccount,\x20%s,\x20%s',_0x198864,_0x5b1939['error'][_0x2c2c('0x15')]);return _0x58a10d(_0x5b1939[_0x2c2c('0x13')]['message']);}logger[_0x2c2c('0x13')](_0x2c2c('0xe'),_0x198864,_0x5b1939[_0x2c2c('0x13')][_0x2c2c('0x15')]);return _0x453a6b(_0x5b1939[_0x2c2c('0x13')]['message']);}else{logger[_0x2c2c('0xd')]('DeskAccount,\x20%s,\x20%s',_0x198864,_0x2c2c('0xf'));_0x453a6b(_0x5b1939[_0x2c2c('0x16')]['message']);}})[_0x2c2c('0x17')](function(_0x9bdaf6){logger['error'](_0x2c2c('0xe'),_0x198864,_0x9bdaf6);_0x58a10d(_0x9bdaf6);});});}exports['GetDeskAccount']=function(_0x538a45){var _0x3e6c5a=this;return new Promise(function(_0x3bed1e,_0x58c06d){return db['DeskAccount'][_0x2c2c('0x18')]({'raw':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x538a45['options']?_0x538a45[_0x2c2c('0x19')]['where']||null:null,'attributes':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['attributes']||null:null,'limit':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')]['limit']||null:null,'include':_0x538a45[_0x2c2c('0x19')]?_0x538a45[_0x2c2c('0x19')][_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x538a45[_0x2c2c('0x19')]['include'],function(_0x22cd7f){return{'model':db[_0x22cd7f[_0x2c2c('0x1c')]],'as':_0x22cd7f['as'],'attributes':_0x22cd7f[_0x2c2c('0x1d')],'include':_0x22cd7f[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x22cd7f[_0x2c2c('0x1a')],function(_0x599e7c){return{'model':db[_0x599e7c['model']],'as':_0x599e7c['as'],'attributes':_0x599e7c['attributes'],'include':_0x599e7c['include']?_[_0x2c2c('0x1b')](_0x599e7c[_0x2c2c('0x1a')],function(_0x115c4f){return{'model':db[_0x115c4f[_0x2c2c('0x1c')]],'as':_0x115c4f['as'],'attributes':_0x115c4f[_0x2c2c('0x1d')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1780f4){logger[_0x2c2c('0xd')]('GetDeskAccount',_0x538a45);logger[_0x2c2c('0x10')]('GetDeskAccount',_0x538a45,JSON[_0x2c2c('0x12')](_0x1780f4));_0x3bed1e(_0x1780f4);})[_0x2c2c('0x17')](function(_0x229be5){logger[_0x2c2c('0x13')](_0x2c2c('0x1e'),_0x229be5['message'],_0x538a45);_0x58c06d(_0x3e6c5a['error'](0x1f4,_0x229be5[_0x2c2c('0x15')]));});});};exports[_0x2c2c('0x1f')]=function(_0x214f42){var _0x2d1ed0=this;return new Promise(function(_0xefb00f,_0x390d00){return db['DeskAccount']['find']({'raw':_0x214f42[_0x2c2c('0x19')]?_0x214f42['options'][_0x2c2c('0x20')]===undefined?!![]:![]:!![],'where':_0x214f42[_0x2c2c('0x19')]?_0x214f42['options'][_0x2c2c('0x21')]||null:null,'attributes':_0x214f42[_0x2c2c('0x19')]?_0x214f42[_0x2c2c('0x19')]['attributes']||null:null,'include':_0x214f42['options']?_0x214f42[_0x2c2c('0x19')]['include']?_[_0x2c2c('0x1b')](_0x214f42[_0x2c2c('0x19')][_0x2c2c('0x1a')],function(_0xd9e4ec){return{'model':db[_0xd9e4ec[_0x2c2c('0x1c')]],'as':_0xd9e4ec['as'],'attributes':_0xd9e4ec[_0x2c2c('0x1d')],'include':_0xd9e4ec[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0xd9e4ec[_0x2c2c('0x1a')],function(_0x48b3b8){return{'model':db[_0x48b3b8[_0x2c2c('0x1c')]],'as':_0x48b3b8['as'],'attributes':_0x48b3b8[_0x2c2c('0x1d')],'include':_0x48b3b8[_0x2c2c('0x1a')]?_[_0x2c2c('0x1b')](_0x48b3b8['include'],function(_0x45561d){return{'model':db[_0x45561d[_0x2c2c('0x1c')]],'as':_0x45561d['as'],'attributes':_0x45561d['attributes']};}):[]};}):[]};}):[]:[]})[_0x2c2c('0xc')](function(_0x11feed){logger[_0x2c2c('0xd')]('ShowDeskAccount',_0x214f42);logger[_0x2c2c('0x10')](_0x2c2c('0x1f'),_0x214f42,JSON['stringify'](_0x11feed));_0xefb00f(_0x11feed);})[_0x2c2c('0x17')](function(_0x15c646){logger[_0x2c2c('0x13')](_0x2c2c('0x1f'),_0x15c646[_0x2c2c('0x15')],_0x214f42);_0x390d00(_0x2d1ed0[_0x2c2c('0x13')](0x1f4,_0x15c646['message']));});});};
\ No newline at end of file
index 5cc2f94..2ed7848 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['getTags','post','create','setTags','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intDeskConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getSubjects','/:id/descriptions','/:id/tags'];(function(_0x28e4ea,_0xa46c7){var _0x50c6ca=function(_0x5de4d6){while(--_0x5de4d6){_0x28e4ea['push'](_0x28e4ea['shift']());}};_0x50c6ca(++_0xa46c7);}(_0xedd9,0xfc));var _0x9edd=function(_0x422e50,_0x225a37){_0x422e50=_0x422e50-0x0;var _0x1fcd12=_0xedd9[_0x422e50];return _0x1fcd12;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['getFields']);router[_0x9edd('0x9')]('/:id/subjects',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['get'](_0x9edd('0x10'),auth[_0x9edd('0xa')](),controller['getDescriptions']);router[_0x9edd('0x9')](_0x9edd('0x11'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')]('/:id/tags',auth[_0x9edd('0xa')](),controller[_0x9edd('0x15')]);router[_0x9edd('0x16')](_0x9edd('0xc'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x17')]);router[_0x9edd('0x18')](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x19')]);module[_0x9edd('0x1a')]=router;
\ No newline at end of file
+var _0x55ca=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','setTags','put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/interaction/service'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x55ca,0x126));var _0xa55c=function(_0x50e593,_0x3ae998){_0x50e593=_0x50e593-0x0;var _0x3821d0=_0x55ca[_0x50e593];return _0x3821d0;};'use strict';var multer=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa55c('0x2')]();var fs_extra=require(_0xa55c('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var controller=require(_0xa55c('0x6'));router[_0xa55c('0x7')]('/',auth[_0xa55c('0x8')](),controller[_0xa55c('0x9')]);router[_0xa55c('0x7')]('/:id',auth[_0xa55c('0x8')](),controller[_0xa55c('0xa')]);router['get'](_0xa55c('0xb'),auth[_0xa55c('0x8')](),controller['getFields']);router['get'](_0xa55c('0xc'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xd')]);router[_0xa55c('0x7')](_0xa55c('0xe'),auth[_0xa55c('0x8')](),controller[_0xa55c('0xf')]);router[_0xa55c('0x7')](_0xa55c('0x10'),auth[_0xa55c('0x8')](),controller['getTags']);router['post']('/',auth[_0xa55c('0x8')](),controller['create']);router['post']('/:id/tags',auth[_0xa55c('0x8')](),controller[_0xa55c('0x11')]);router[_0xa55c('0x12')](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x14')]);router['delete'](_0xa55c('0x13'),auth[_0xa55c('0x8')](),controller[_0xa55c('0x15')]);module[_0xa55c('0x16')]=router;
\ No newline at end of file
index b4a72aa..10f4d90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1784=['exports','STRING'];(function(_0x9d0b59,_0x4e715c){var _0x4015b0=function(_0x2f4f0c){while(--_0x2f4f0c){_0x9d0b59['push'](_0x9d0b59['shift']());}};_0x4015b0(++_0x4e715c);}(_0x1784,0x72));var _0x4178=function(_0x186591,_0x41385c){_0x186591=_0x186591-0x0;var _0x54d42d=_0x1784[_0x186591];return _0x54d42d;};'use strict';var Sequelize=require('sequelize');module[_0x4178('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4178('0x1')]}};
\ No newline at end of file
+var _0x531c=['exports','STRING','sequelize'];(function(_0x1b6186,_0x1ec7f2){var _0x186121=function(_0x1748a8){while(--_0x1748a8){_0x1b6186['push'](_0x1b6186['shift']());}};_0x186121(++_0x1ec7f2);}(_0x531c,0x119));var _0xc531=function(_0x478349,_0x4e11b2){_0x478349=_0x478349-0x0;var _0x564ad3=_0x531c[_0x478349];return _0x564ad3;};'use strict';var Sequelize=require(_0xc531('0x0'));module[_0xc531('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xc531('0x2')]}};
\ No newline at end of file
index e7f9dec..0af8f5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x256d=['destroy','error','stack','name','map','type','key','model','query','keys','filters','intersection','attributes','fields','sort','where','filter','VIRTUAL','options','DeskConfiguration','includeAll','findAll','show','params','length','merge','find','catch','create','body','getFields','findOne','DeskField','rawAttributes','order','pick','hasOwnProperty','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','apply','update','then'];(function(_0x514c15,_0x486901){var _0x16283e=function(_0x53b7d0){while(--_0x53b7d0){_0x514c15['push'](_0x514c15['shift']());}};_0x16283e(++_0x486901);}(_0x256d,0xca));var _0xd256=function(_0x126fb9,_0x122c59){_0x126fb9=_0x126fb9-0x0;var _0xc8a3b1=_0x256d[_0x126fb9];return _0xc8a3b1;};'use strict';var emlformat=require(_0xd256('0x0'));var rimraf=require(_0xd256('0x1'));var zipdir=require(_0xd256('0x2'));var jsonpatch=require(_0xd256('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd256('0x4'));var Mustache=require(_0xd256('0x5'));var util=require(_0xd256('0x6'));var path=require(_0xd256('0x7'));var sox=require(_0xd256('0x8'));var csv=require(_0xd256('0x9'));var ejs=require(_0xd256('0xa'));var fs=require('fs');var fs_extra=require(_0xd256('0xb'));var _=require('lodash');var squel=require(_0xd256('0xc'));var crypto=require('crypto');var jsforce=require(_0xd256('0xd'));var deskjs=require(_0xd256('0xe'));var toCsv=require(_0xd256('0x9'));var querystring=require(_0xd256('0xf'));var Papa=require('papaparse');var Redis=require(_0xd256('0x10'));var authService=require(_0xd256('0x11'));var qs=require(_0xd256('0x12'));var as=require(_0xd256('0x13'));var hardwareService=require(_0xd256('0x14'));var logger=require(_0xd256('0x15'))(_0xd256('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd256('0x17'));var db=require(_0xd256('0x18'))['db'];function respondWithStatusCode(_0x4fb3df,_0x11c85e){_0x11c85e=_0x11c85e||0xcc;return function(_0x1c2241){if(_0x1c2241){return _0x4fb3df['sendStatus'](_0x11c85e);}return _0x4fb3df[_0xd256('0x19')](_0x11c85e)[_0xd256('0x1a')]();};}function respondWithResult(_0xb92e60,_0x3ceb86){_0x3ceb86=_0x3ceb86||0xc8;return function(_0x3cc1ea){if(_0x3cc1ea){return _0xb92e60[_0xd256('0x19')](_0x3ceb86)['json'](_0x3cc1ea);}};}function respondWithFilteredResult(_0x81e30a,_0x256e76){return function(_0x2b4d3a){if(_0x2b4d3a){var _0xbb071f=typeof _0x256e76[_0xd256('0x1b')]===_0xd256('0x1c')&&typeof _0x256e76[_0xd256('0x1d')]===_0xd256('0x1c');var _0x110f06=_0x2b4d3a[_0xd256('0x1e')];var _0x40b2e8=_0xbb071f?0x0:_0x256e76['offset'];var _0xbc7574=_0xbb071f?_0x2b4d3a[_0xd256('0x1e')]:_0x256e76[_0xd256('0x1b')]+_0x256e76[_0xd256('0x1d')];var _0x562d39;if(_0xbc7574>=_0x110f06){_0xbc7574=_0x110f06;_0x562d39=0xc8;}else{_0x562d39=0xce;}_0x81e30a[_0xd256('0x19')](_0x562d39);return _0x81e30a[_0xd256('0x1f')]('Content-Range',_0x40b2e8+'-'+_0xbc7574+'/'+_0x110f06)['json'](_0x2b4d3a);}return null;};}function patchUpdates(_0x46843a){return function(_0x588236){try{jsonpatch[_0xd256('0x20')](_0x588236,_0x46843a,!![]);}catch(_0x326e14){return BPromise['reject'](_0x326e14);}return _0x588236['save']();};}function saveUpdates(_0x1b3b97,_0x2a2e74){return function(_0x622a84){if(_0x622a84){return _0x622a84[_0xd256('0x21')](_0x1b3b97)[_0xd256('0x22')](function(_0x4348db){return _0x4348db;});}return null;};}function removeEntity(_0x51fac5,_0x4f7103){return function(_0x1f2ddf){if(_0x1f2ddf){return _0x1f2ddf[_0xd256('0x23')]()['then'](function(){_0x51fac5[_0xd256('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7f932f,_0x291bc8){return function(_0x51cc42){if(!_0x51cc42){_0x7f932f['sendStatus'](0x194);}return _0x51cc42;};}function handleError(_0x3e7cfd,_0x3f1175){_0x3f1175=_0x3f1175||0x1f4;return function(_0xfa4cc3){logger[_0xd256('0x24')](_0xfa4cc3[_0xd256('0x25')]);if(_0xfa4cc3[_0xd256('0x26')]){delete _0xfa4cc3[_0xd256('0x26')];}_0x3e7cfd[_0xd256('0x19')](_0x3f1175)['send'](_0xfa4cc3);};}exports['index']=function(_0xea8961,_0x5c5078){var _0x26062a={},_0x10c483={},_0x2ccc49={'count':0x0,'rows':[]};var _0x547199=_[_0xd256('0x27')](db['DeskConfiguration']['rawAttributes'],function(_0x37de36){return{'name':_0x37de36['fieldName'],'type':_0x37de36[_0xd256('0x28')][_0xd256('0x29')]};});_0x10c483[_0xd256('0x2a')]=_['map'](_0x547199,'name');_0x10c483[_0xd256('0x2b')]=_[_0xd256('0x2c')](_0xea8961[_0xd256('0x2b')]);_0x10c483[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x10c483[_0xd256('0x2a')],_0x10c483[_0xd256('0x2b')]);_0x26062a[_0xd256('0x2f')]=_[_0xd256('0x2e')](_0x10c483['model'],qs[_0xd256('0x30')](_0xea8961[_0xd256('0x2b')][_0xd256('0x30')]));_0x26062a[_0xd256('0x2f')]=_0x26062a[_0xd256('0x2f')]['length']?_0x26062a[_0xd256('0x2f')]:_0x10c483[_0xd256('0x2a')];if(!_0xea8961[_0xd256('0x2b')]['hasOwnProperty']('nolimit')){_0x26062a[_0xd256('0x1d')]=qs[_0xd256('0x1d')](_0xea8961[_0xd256('0x2b')][_0xd256('0x1d')]);_0x26062a[_0xd256('0x1b')]=qs[_0xd256('0x1b')](_0xea8961[_0xd256('0x2b')][_0xd256('0x1b')]);}_0x26062a['order']=qs[_0xd256('0x31')](_0xea8961[_0xd256('0x2b')][_0xd256('0x31')]);_0x26062a[_0xd256('0x32')]=qs[_0xd256('0x2d')](_['pick'](_0xea8961[_0xd256('0x2b')],_0x10c483[_0xd256('0x2d')]),_0x547199);if(_0xea8961[_0xd256('0x2b')][_0xd256('0x33')]){_0x26062a[_0xd256('0x32')]=_['merge'](_0x26062a[_0xd256('0x32')],{'$or':_['map'](_0x547199,function(_0x32c177){if(_0x32c177['type']!==_0xd256('0x34')){var _0x564b38={};_0x564b38[_0x32c177['name']]={'$like':'%'+_0xea8961['query'][_0xd256('0x33')]+'%'};return _0x564b38;}})});}_0x26062a=_['merge']({},_0x26062a,_0xea8961[_0xd256('0x35')]);var _0x3d12fd={'where':_0x26062a['where']};return db[_0xd256('0x36')][_0xd256('0x1e')](_0x3d12fd)['then'](function(_0x4cebea){_0x2ccc49['count']=_0x4cebea;if(_0xea8961[_0xd256('0x2b')][_0xd256('0x37')]){_0x26062a['include']=[{'all':!![]}];}return db[_0xd256('0x36')][_0xd256('0x38')](_0x26062a);})[_0xd256('0x22')](function(_0x55324b){_0x2ccc49['rows']=_0x55324b;return _0x2ccc49;})[_0xd256('0x22')](respondWithFilteredResult(_0x5c5078,_0x26062a))['catch'](handleError(_0x5c5078,null));};exports[_0xd256('0x39')]=function(_0x3cd92a,_0x343961){var _0x4d87b2={'raw':![],'where':{'id':_0x3cd92a[_0xd256('0x3a')]['id']}},_0x2ef8d8={};_0x2ef8d8[_0xd256('0x2a')]=_['keys'](db[_0xd256('0x36')]['rawAttributes']);_0x2ef8d8[_0xd256('0x2b')]=_[_0xd256('0x2c')](_0x3cd92a[_0xd256('0x2b')]);_0x2ef8d8[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x2ef8d8[_0xd256('0x2a')],_0x2ef8d8[_0xd256('0x2b')]);_0x4d87b2[_0xd256('0x2f')]=_['intersection'](_0x2ef8d8[_0xd256('0x2a')],qs['fields'](_0x3cd92a[_0xd256('0x2b')]['fields']));_0x4d87b2['attributes']=_0x4d87b2[_0xd256('0x2f')][_0xd256('0x3b')]?_0x4d87b2['attributes']:_0x2ef8d8['model'];if(_0x3cd92a[_0xd256('0x2b')]['includeAll']){_0x4d87b2['include']=[{'all':!![]}];}_0x4d87b2=_[_0xd256('0x3c')]({},_0x4d87b2,_0x3cd92a['options']);return db[_0xd256('0x36')][_0xd256('0x3d')](_0x4d87b2)[_0xd256('0x22')](handleEntityNotFound(_0x343961,null))['then'](respondWithResult(_0x343961,null))[_0xd256('0x3e')](handleError(_0x343961,null));};exports['create']=function(_0x13c79e,_0x9fc1c4){return db['DeskConfiguration'][_0xd256('0x3f')](_0x13c79e[_0xd256('0x40')],{})[_0xd256('0x22')](respondWithResult(_0x9fc1c4,0xc9))[_0xd256('0x3e')](handleError(_0x9fc1c4,null));};exports[_0xd256('0x21')]=function(_0x57df17,_0x2e6428){if(_0x57df17[_0xd256('0x40')]['id']){delete _0x57df17[_0xd256('0x40')]['id'];}return db[_0xd256('0x36')]['find']({'where':{'id':_0x57df17[_0xd256('0x3a')]['id']}})[_0xd256('0x22')](handleEntityNotFound(_0x2e6428,null))[_0xd256('0x22')](saveUpdates(_0x57df17[_0xd256('0x40')],null))[_0xd256('0x22')](respondWithResult(_0x2e6428,null))[_0xd256('0x3e')](handleError(_0x2e6428,null));};exports[_0xd256('0x23')]=function(_0x4eabcd,_0x2821be){return db[_0xd256('0x36')][_0xd256('0x3d')]({'where':{'id':_0x4eabcd['params']['id']}})[_0xd256('0x22')](handleEntityNotFound(_0x2821be,null))['then'](removeEntity(_0x2821be,null))[_0xd256('0x3e')](handleError(_0x2821be,null));};exports[_0xd256('0x41')]=function(_0x3098c5,_0x133a48,_0x4af313){var _0x2bce6a={};var _0x31b994={};var _0x43f054;var _0x481105;return db[_0xd256('0x36')][_0xd256('0x42')]({'where':{'id':_0x3098c5[_0xd256('0x3a')]['id']}})['then'](handleEntityNotFound(_0x133a48,null))[_0xd256('0x22')](function(_0x1ce6b2){if(_0x1ce6b2){_0x43f054=_0x1ce6b2;_0x31b994[_0xd256('0x2a')]=_[_0xd256('0x2c')](db[_0xd256('0x43')][_0xd256('0x44')]);_0x31b994['query']=_['keys'](_0x3098c5[_0xd256('0x2b')]);_0x31b994[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x31b994['model'],_0x31b994['query']);_0x2bce6a[_0xd256('0x2f')]=_['intersection'](_0x31b994['model'],qs[_0xd256('0x30')](_0x3098c5[_0xd256('0x2b')]['fields']));_0x2bce6a[_0xd256('0x2f')]=_0x2bce6a[_0xd256('0x2f')][_0xd256('0x3b')]?_0x2bce6a['attributes']:_0x31b994[_0xd256('0x2a')];_0x2bce6a[_0xd256('0x45')]=qs[_0xd256('0x31')](_0x3098c5['query'][_0xd256('0x31')]);_0x2bce6a[_0xd256('0x32')]=qs[_0xd256('0x2d')](_[_0xd256('0x46')](_0x3098c5[_0xd256('0x2b')],_0x31b994['filters']));if(_0x3098c5[_0xd256('0x2b')]['filter']){_0x2bce6a['where']=_[_0xd256('0x3c')](_0x2bce6a[_0xd256('0x32')],{'$or':_['map'](_0x2bce6a[_0xd256('0x2f')],function(_0x28e2aa){var _0x5a77cf={};_0x5a77cf[_0x28e2aa]={'$like':'%'+_0x3098c5[_0xd256('0x2b')][_0xd256('0x33')]+'%'};return _0x5a77cf;})});}_0x2bce6a=_[_0xd256('0x3c')]({},_0x2bce6a,_0x3098c5['options']);return _0x43f054['getFields'](_0x2bce6a);}})[_0xd256('0x22')](function(_0x136b11){if(_0x136b11){_0x481105=_0x136b11[_0xd256('0x3b')];if(!_0x3098c5[_0xd256('0x2b')][_0xd256('0x47')](_0xd256('0x48'))){_0x2bce6a[_0xd256('0x1d')]=qs['limit'](_0x3098c5[_0xd256('0x2b')][_0xd256('0x1d')]);_0x2bce6a[_0xd256('0x1b')]=qs[_0xd256('0x1b')](_0x3098c5[_0xd256('0x2b')][_0xd256('0x1b')]);}return _0x43f054[_0xd256('0x41')](_0x2bce6a);}})['then'](function(_0x356e30){if(_0x356e30){return _0x356e30?{'count':_0x481105,'rows':_0x356e30}:null;}})[_0xd256('0x22')](respondWithResult(_0x133a48,null))[_0xd256('0x3e')](handleError(_0x133a48,null));};exports[_0xd256('0x49')]=function(_0x356878,_0x13a3ba,_0x2b0c20){var _0x25dc55={};var _0x33d35d={};var _0x140754;var _0x4dcbb4;return db[_0xd256('0x36')][_0xd256('0x42')]({'where':{'id':_0x356878[_0xd256('0x3a')]['id']}})[_0xd256('0x22')](handleEntityNotFound(_0x13a3ba,null))['then'](function(_0x108120){if(_0x108120){_0x140754=_0x108120;_0x33d35d[_0xd256('0x2a')]=_['keys'](db[_0xd256('0x43')][_0xd256('0x44')]);_0x33d35d['query']=_[_0xd256('0x2c')](_0x356878[_0xd256('0x2b')]);_0x33d35d[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x33d35d['model'],_0x33d35d['query']);_0x25dc55[_0xd256('0x2f')]=_[_0xd256('0x2e')](_0x33d35d[_0xd256('0x2a')],qs[_0xd256('0x30')](_0x356878[_0xd256('0x2b')][_0xd256('0x30')]));_0x25dc55[_0xd256('0x2f')]=_0x25dc55[_0xd256('0x2f')][_0xd256('0x3b')]?_0x25dc55[_0xd256('0x2f')]:_0x33d35d[_0xd256('0x2a')];_0x25dc55[_0xd256('0x45')]=qs['sort'](_0x356878[_0xd256('0x2b')][_0xd256('0x31')]);_0x25dc55['where']=qs['filters'](_[_0xd256('0x46')](_0x356878[_0xd256('0x2b')],_0x33d35d['filters']));if(_0x356878['query'][_0xd256('0x33')]){_0x25dc55[_0xd256('0x32')]=_[_0xd256('0x3c')](_0x25dc55[_0xd256('0x32')],{'$or':_['map'](_0x25dc55['attributes'],function(_0x54de8e){var _0x409ec6={};_0x409ec6[_0x54de8e]={'$like':'%'+_0x356878[_0xd256('0x2b')]['filter']+'%'};return _0x409ec6;})});}_0x25dc55=_[_0xd256('0x3c')]({},_0x25dc55,_0x356878[_0xd256('0x35')]);return _0x140754['getSubjects'](_0x25dc55);}})['then'](function(_0x2a8df6){if(_0x2a8df6){_0x4dcbb4=_0x2a8df6['length'];if(!_0x356878[_0xd256('0x2b')][_0xd256('0x47')]('nolimit')){_0x25dc55[_0xd256('0x1d')]=qs['limit'](_0x356878['query'][_0xd256('0x1d')]);_0x25dc55[_0xd256('0x1b')]=qs[_0xd256('0x1b')](_0x356878['query']['offset']);}return _0x140754[_0xd256('0x49')](_0x25dc55);}})[_0xd256('0x22')](function(_0x51a0f6){if(_0x51a0f6){return _0x51a0f6?{'count':_0x4dcbb4,'rows':_0x51a0f6}:null;}})[_0xd256('0x22')](respondWithResult(_0x13a3ba,null))[_0xd256('0x3e')](handleError(_0x13a3ba,null));};exports[_0xd256('0x4a')]=function(_0x48ef97,_0x1a7c01,_0x3b020d){var _0x37da46={};var _0x2ecbf6={};var _0x1cb85b;var _0x1183d9;return db[_0xd256('0x36')][_0xd256('0x42')]({'where':{'id':_0x48ef97[_0xd256('0x3a')]['id']}})['then'](handleEntityNotFound(_0x1a7c01,null))[_0xd256('0x22')](function(_0x3f85c4){if(_0x3f85c4){_0x1cb85b=_0x3f85c4;_0x2ecbf6[_0xd256('0x2a')]=_['keys'](db[_0xd256('0x43')][_0xd256('0x44')]);_0x2ecbf6['query']=_[_0xd256('0x2c')](_0x48ef97['query']);_0x2ecbf6[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x2ecbf6[_0xd256('0x2a')],_0x2ecbf6['query']);_0x37da46['attributes']=_['intersection'](_0x2ecbf6[_0xd256('0x2a')],qs[_0xd256('0x30')](_0x48ef97[_0xd256('0x2b')][_0xd256('0x30')]));_0x37da46[_0xd256('0x2f')]=_0x37da46[_0xd256('0x2f')][_0xd256('0x3b')]?_0x37da46[_0xd256('0x2f')]:_0x2ecbf6[_0xd256('0x2a')];_0x37da46[_0xd256('0x45')]=qs[_0xd256('0x31')](_0x48ef97[_0xd256('0x2b')]['sort']);_0x37da46[_0xd256('0x32')]=qs[_0xd256('0x2d')](_[_0xd256('0x46')](_0x48ef97[_0xd256('0x2b')],_0x2ecbf6['filters']));if(_0x48ef97[_0xd256('0x2b')][_0xd256('0x33')]){_0x37da46['where']=_[_0xd256('0x3c')](_0x37da46[_0xd256('0x32')],{'$or':_[_0xd256('0x27')](_0x37da46[_0xd256('0x2f')],function(_0x59ba08){var _0x31c1bd={};_0x31c1bd[_0x59ba08]={'$like':'%'+_0x48ef97[_0xd256('0x2b')]['filter']+'%'};return _0x31c1bd;})});}_0x37da46=_['merge']({},_0x37da46,_0x48ef97[_0xd256('0x35')]);return _0x1cb85b['getDescriptions'](_0x37da46);}})[_0xd256('0x22')](function(_0xe11d74){if(_0xe11d74){_0x1183d9=_0xe11d74[_0xd256('0x3b')];if(!_0x48ef97['query'][_0xd256('0x47')](_0xd256('0x48'))){_0x37da46[_0xd256('0x1d')]=qs[_0xd256('0x1d')](_0x48ef97[_0xd256('0x2b')][_0xd256('0x1d')]);_0x37da46[_0xd256('0x1b')]=qs['offset'](_0x48ef97[_0xd256('0x2b')][_0xd256('0x1b')]);}return _0x1cb85b[_0xd256('0x4a')](_0x37da46);}})[_0xd256('0x22')](function(_0x98b344){if(_0x98b344){return _0x98b344?{'count':_0x1183d9,'rows':_0x98b344}:null;}})['then'](respondWithResult(_0x1a7c01,null))[_0xd256('0x3e')](handleError(_0x1a7c01,null));};exports[_0xd256('0x4b')]=function(_0x53a568,_0xf23747,_0x7f241b){var _0x2f7a3b={};var _0x4de656={};var _0x13ebf3;var _0x30c188;return db[_0xd256('0x36')][_0xd256('0x42')]({'where':{'id':_0x53a568['params']['id']}})['then'](handleEntityNotFound(_0xf23747,null))[_0xd256('0x22')](function(_0x4e022c){if(_0x4e022c){_0x13ebf3=_0x4e022c;_0x4de656[_0xd256('0x2a')]=_[_0xd256('0x2c')](db[_0xd256('0x4c')]['rawAttributes']);_0x4de656[_0xd256('0x2b')]=_[_0xd256('0x2c')](_0x53a568['query']);_0x4de656[_0xd256('0x2d')]=_[_0xd256('0x2e')](_0x4de656[_0xd256('0x2a')],_0x4de656[_0xd256('0x2b')]);_0x2f7a3b[_0xd256('0x2f')]=_['intersection'](_0x4de656[_0xd256('0x2a')],qs['fields'](_0x53a568[_0xd256('0x2b')][_0xd256('0x30')]));_0x2f7a3b[_0xd256('0x2f')]=_0x2f7a3b[_0xd256('0x2f')]['length']?_0x2f7a3b[_0xd256('0x2f')]:_0x4de656[_0xd256('0x2a')];_0x2f7a3b[_0xd256('0x45')]=qs[_0xd256('0x31')](_0x53a568[_0xd256('0x2b')]['sort']);_0x2f7a3b[_0xd256('0x32')]=qs[_0xd256('0x2d')](_[_0xd256('0x46')](_0x53a568[_0xd256('0x2b')],_0x4de656['filters']));if(_0x53a568[_0xd256('0x2b')][_0xd256('0x33')]){_0x2f7a3b[_0xd256('0x32')]=_[_0xd256('0x3c')](_0x2f7a3b[_0xd256('0x32')],{'$or':_['map'](_0x2f7a3b[_0xd256('0x2f')],function(_0x5d02b3){var _0x4d038c={};_0x4d038c[_0x5d02b3]={'$like':'%'+_0x53a568[_0xd256('0x2b')]['filter']+'%'};return _0x4d038c;})});}_0x2f7a3b=_[_0xd256('0x3c')]({},_0x2f7a3b,_0x53a568[_0xd256('0x35')]);return _0x13ebf3['getTags'](_0x2f7a3b);}})['then'](function(_0x906fd7){if(_0x906fd7){_0x30c188=_0x906fd7[_0xd256('0x3b')];if(!_0x53a568['query'][_0xd256('0x47')](_0xd256('0x48'))){_0x2f7a3b[_0xd256('0x1d')]=qs[_0xd256('0x1d')](_0x53a568['query']['limit']);_0x2f7a3b[_0xd256('0x1b')]=qs[_0xd256('0x1b')](_0x53a568[_0xd256('0x2b')][_0xd256('0x1b')]);}return _0x13ebf3[_0xd256('0x4b')](_0x2f7a3b);}})[_0xd256('0x22')](function(_0x2c1ae9){if(_0x2c1ae9){return _0x2c1ae9?{'count':_0x30c188,'rows':_0x2c1ae9}:null;}})[_0xd256('0x22')](respondWithResult(_0xf23747,null))['catch'](handleError(_0xf23747,null));};exports[_0xd256('0x4d')]=function(_0x561dcc,_0x2dbdd6,_0x1f1473){if(_0x561dcc['body']['id']){delete _0x561dcc['body']['id'];}return db[_0xd256('0x36')]['findOne']({'where':{'id':_0x561dcc[_0xd256('0x3a')]['id']}})[_0xd256('0x22')](handleEntityNotFound(_0x2dbdd6,null))[_0xd256('0x22')](function(_0x4dfa20){if(_0x4dfa20){return _0x4dfa20[_0xd256('0x4d')](_0x561dcc[_0xd256('0x40')][_0xd256('0x4e')]||[]);}return null;})[_0xd256('0x22')](respondWithResult(_0x2dbdd6,null))[_0xd256('0x3e')](handleError(_0x2dbdd6,null));};
\ No newline at end of file
+var _0x363c=['getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','update','destroy','then','error','stack','name','send','map','DeskConfiguration','rawAttributes','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','pick','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','filters','options','find','create','body','findOne','DeskField','length','order','filter'];(function(_0x22e9fe,_0x3d019f){var _0x47cd19=function(_0x8fd5fc){while(--_0x8fd5fc){_0x22e9fe['push'](_0x22e9fe['shift']());}};_0x47cd19(++_0x3d019f);}(_0x363c,0xb5));var _0xc363=function(_0x4167f9,_0x510705){_0x4167f9=_0x4167f9-0x0;var _0x47be4d=_0x363c[_0x4167f9];return _0x47be4d;};'use strict';var emlformat=require(_0xc363('0x0'));var rimraf=require(_0xc363('0x1'));var zipdir=require(_0xc363('0x2'));var jsonpatch=require(_0xc363('0x3'));var rp=require(_0xc363('0x4'));var moment=require(_0xc363('0x5'));var BPromise=require(_0xc363('0x6'));var Mustache=require('mustache');var util=require(_0xc363('0x7'));var path=require('path');var sox=require(_0xc363('0x8'));var csv=require(_0xc363('0x9'));var ejs=require(_0xc363('0xa'));var fs=require('fs');var fs_extra=require(_0xc363('0xb'));var _=require(_0xc363('0xc'));var squel=require(_0xc363('0xd'));var crypto=require(_0xc363('0xe'));var jsforce=require(_0xc363('0xf'));var deskjs=require(_0xc363('0x10'));var toCsv=require(_0xc363('0x9'));var querystring=require(_0xc363('0x11'));var Papa=require(_0xc363('0x12'));var Redis=require(_0xc363('0x13'));var authService=require(_0xc363('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc363('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc363('0x16'))(_0xc363('0x17'));var utils=require(_0xc363('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xc363('0x19'));var db=require(_0xc363('0x1a'))['db'];function respondWithStatusCode(_0x357ebc,_0x3c7ad3){_0x3c7ad3=_0x3c7ad3||0xcc;return function(_0x4051bd){if(_0x4051bd){return _0x357ebc[_0xc363('0x1b')](_0x3c7ad3);}return _0x357ebc[_0xc363('0x1c')](_0x3c7ad3)[_0xc363('0x1d')]();};}function respondWithResult(_0x3ebf58,_0x9bbf04){_0x9bbf04=_0x9bbf04||0xc8;return function(_0x419bdf){if(_0x419bdf){return _0x3ebf58['status'](_0x9bbf04)[_0xc363('0x1e')](_0x419bdf);}};}function respondWithFilteredResult(_0x1d96f9,_0x2522ca){return function(_0x3a23e2){if(_0x3a23e2){var _0x42e4c9=typeof _0x2522ca[_0xc363('0x1f')]===_0xc363('0x20')&&typeof _0x2522ca[_0xc363('0x21')]===_0xc363('0x20');var _0x246638=_0x3a23e2['count'];var _0x30ed19=_0x42e4c9?0x0:_0x2522ca['offset'];var _0x580c66=_0x42e4c9?_0x3a23e2[_0xc363('0x22')]:_0x2522ca[_0xc363('0x1f')]+_0x2522ca[_0xc363('0x21')];var _0xd106d7;if(_0x580c66>=_0x246638){_0x580c66=_0x246638;_0xd106d7=0xc8;}else{_0xd106d7=0xce;}_0x1d96f9[_0xc363('0x1c')](_0xd106d7);return _0x1d96f9[_0xc363('0x23')](_0xc363('0x24'),_0x30ed19+'-'+_0x580c66+'/'+_0x246638)[_0xc363('0x1e')](_0x3a23e2);}return null;};}function patchUpdates(_0x47d005){return function(_0x25e0b6){try{jsonpatch['apply'](_0x25e0b6,_0x47d005,!![]);}catch(_0x42e2f2){return BPromise[_0xc363('0x25')](_0x42e2f2);}return _0x25e0b6['save']();};}function saveUpdates(_0x11062a,_0x12afae){return function(_0x346310){if(_0x346310){return _0x346310[_0xc363('0x26')](_0x11062a)['then'](function(_0x1244c1){return _0x1244c1;});}return null;};}function removeEntity(_0x58efab,_0x11886a){return function(_0x95804c){if(_0x95804c){return _0x95804c[_0xc363('0x27')]()[_0xc363('0x28')](function(){_0x58efab[_0xc363('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ca6af,_0x25e0db){return function(_0x92d35c){if(!_0x92d35c){_0x1ca6af[_0xc363('0x1b')](0x194);}return _0x92d35c;};}function handleError(_0x399912,_0x5ab052){_0x5ab052=_0x5ab052||0x1f4;return function(_0x447cc0){logger[_0xc363('0x29')](_0x447cc0[_0xc363('0x2a')]);if(_0x447cc0[_0xc363('0x2b')]){delete _0x447cc0['name'];}_0x399912[_0xc363('0x1c')](_0x5ab052)[_0xc363('0x2c')](_0x447cc0);};}exports['index']=function(_0x365b3c,_0x21e278){var _0x514842={},_0x41e935={},_0x246dc1={'count':0x0,'rows':[]};var _0x4fd64e=_[_0xc363('0x2d')](db[_0xc363('0x2e')][_0xc363('0x2f')],function(_0x481f08){return{'name':_0x481f08['fieldName'],'type':_0x481f08['type'][_0xc363('0x30')]};});_0x41e935[_0xc363('0x31')]=_[_0xc363('0x2d')](_0x4fd64e,_0xc363('0x2b'));_0x41e935[_0xc363('0x32')]=_[_0xc363('0x33')](_0x365b3c['query']);_0x41e935['filters']=_[_0xc363('0x34')](_0x41e935[_0xc363('0x31')],_0x41e935[_0xc363('0x32')]);_0x514842['attributes']=_[_0xc363('0x34')](_0x41e935[_0xc363('0x31')],qs[_0xc363('0x35')](_0x365b3c[_0xc363('0x32')][_0xc363('0x35')]));_0x514842['attributes']=_0x514842[_0xc363('0x36')]['length']?_0x514842[_0xc363('0x36')]:_0x41e935[_0xc363('0x31')];if(!_0x365b3c['query'][_0xc363('0x37')](_0xc363('0x38'))){_0x514842[_0xc363('0x21')]=qs[_0xc363('0x21')](_0x365b3c[_0xc363('0x32')][_0xc363('0x21')]);_0x514842['offset']=qs[_0xc363('0x1f')](_0x365b3c[_0xc363('0x32')][_0xc363('0x1f')]);}_0x514842['order']=qs[_0xc363('0x39')](_0x365b3c[_0xc363('0x32')]['sort']);_0x514842[_0xc363('0x3a')]=qs['filters'](_[_0xc363('0x3b')](_0x365b3c[_0xc363('0x32')],_0x41e935['filters']),_0x4fd64e);if(_0x365b3c['query']['filter']){_0x514842[_0xc363('0x3a')]=_['merge'](_0x514842[_0xc363('0x3a')],{'$or':_[_0xc363('0x2d')](_0x4fd64e,function(_0x3a8826){if(_0x3a8826[_0xc363('0x3c')]!==_0xc363('0x3d')){var _0x4c2ecc={};_0x4c2ecc[_0x3a8826[_0xc363('0x2b')]]={'$like':'%'+_0x365b3c[_0xc363('0x32')]['filter']+'%'};return _0x4c2ecc;}})});}_0x514842=_[_0xc363('0x3e')]({},_0x514842,_0x365b3c['options']);var _0x2a3c6d={'where':_0x514842[_0xc363('0x3a')]};return db[_0xc363('0x2e')]['count'](_0x2a3c6d)[_0xc363('0x28')](function(_0x2a876f){_0x246dc1[_0xc363('0x22')]=_0x2a876f;if(_0x365b3c[_0xc363('0x32')][_0xc363('0x3f')]){_0x514842[_0xc363('0x40')]=[{'all':!![]}];}return db[_0xc363('0x2e')][_0xc363('0x41')](_0x514842);})['then'](function(_0x412fb5){_0x246dc1[_0xc363('0x42')]=_0x412fb5;return _0x246dc1;})[_0xc363('0x28')](respondWithFilteredResult(_0x21e278,_0x514842))[_0xc363('0x43')](handleError(_0x21e278,null));};exports[_0xc363('0x44')]=function(_0x12d40e,_0x35a6d3){var _0x226fd7={'raw':![],'where':{'id':_0x12d40e[_0xc363('0x45')]['id']}},_0x1ba527={};_0x1ba527[_0xc363('0x31')]=_[_0xc363('0x33')](db['DeskConfiguration'][_0xc363('0x2f')]);_0x1ba527[_0xc363('0x32')]=_[_0xc363('0x33')](_0x12d40e[_0xc363('0x32')]);_0x1ba527[_0xc363('0x46')]=_['intersection'](_0x1ba527[_0xc363('0x31')],_0x1ba527[_0xc363('0x32')]);_0x226fd7[_0xc363('0x36')]=_[_0xc363('0x34')](_0x1ba527[_0xc363('0x31')],qs[_0xc363('0x35')](_0x12d40e[_0xc363('0x32')][_0xc363('0x35')]));_0x226fd7[_0xc363('0x36')]=_0x226fd7[_0xc363('0x36')]['length']?_0x226fd7[_0xc363('0x36')]:_0x1ba527[_0xc363('0x31')];if(_0x12d40e['query'][_0xc363('0x3f')]){_0x226fd7[_0xc363('0x40')]=[{'all':!![]}];}_0x226fd7=_[_0xc363('0x3e')]({},_0x226fd7,_0x12d40e[_0xc363('0x47')]);return db['DeskConfiguration'][_0xc363('0x48')](_0x226fd7)[_0xc363('0x28')](handleEntityNotFound(_0x35a6d3,null))[_0xc363('0x28')](respondWithResult(_0x35a6d3,null))['catch'](handleError(_0x35a6d3,null));};exports[_0xc363('0x49')]=function(_0x59e44e,_0x42a92b){return db[_0xc363('0x2e')][_0xc363('0x49')](_0x59e44e[_0xc363('0x4a')],{})[_0xc363('0x28')](respondWithResult(_0x42a92b,0xc9))['catch'](handleError(_0x42a92b,null));};exports['update']=function(_0x49f9c1,_0x135701){if(_0x49f9c1[_0xc363('0x4a')]['id']){delete _0x49f9c1[_0xc363('0x4a')]['id'];}return db[_0xc363('0x2e')]['find']({'where':{'id':_0x49f9c1['params']['id']}})['then'](handleEntityNotFound(_0x135701,null))['then'](saveUpdates(_0x49f9c1[_0xc363('0x4a')],null))[_0xc363('0x28')](respondWithResult(_0x135701,null))[_0xc363('0x43')](handleError(_0x135701,null));};exports[_0xc363('0x27')]=function(_0x572c05,_0x182e7f){return db[_0xc363('0x2e')][_0xc363('0x48')]({'where':{'id':_0x572c05[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x182e7f,null))[_0xc363('0x28')](removeEntity(_0x182e7f,null))['catch'](handleError(_0x182e7f,null));};exports['getFields']=function(_0x28dab4,_0x18e114,_0x507ba6){var _0x2fc401={};var _0x1fa1a3={};var _0x530951;var _0x30e4b5;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x28dab4[_0xc363('0x45')]['id']}})['then'](handleEntityNotFound(_0x18e114,null))[_0xc363('0x28')](function(_0x40a07f){if(_0x40a07f){_0x530951=_0x40a07f;_0x1fa1a3['model']=_[_0xc363('0x33')](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x1fa1a3[_0xc363('0x32')]=_[_0xc363('0x33')](_0x28dab4['query']);_0x1fa1a3[_0xc363('0x46')]=_['intersection'](_0x1fa1a3[_0xc363('0x31')],_0x1fa1a3[_0xc363('0x32')]);_0x2fc401[_0xc363('0x36')]=_[_0xc363('0x34')](_0x1fa1a3[_0xc363('0x31')],qs[_0xc363('0x35')](_0x28dab4[_0xc363('0x32')]['fields']));_0x2fc401['attributes']=_0x2fc401[_0xc363('0x36')][_0xc363('0x4d')]?_0x2fc401['attributes']:_0x1fa1a3['model'];_0x2fc401[_0xc363('0x4e')]=qs[_0xc363('0x39')](_0x28dab4[_0xc363('0x32')][_0xc363('0x39')]);_0x2fc401[_0xc363('0x3a')]=qs[_0xc363('0x46')](_['pick'](_0x28dab4[_0xc363('0x32')],_0x1fa1a3['filters']));if(_0x28dab4['query'][_0xc363('0x4f')]){_0x2fc401['where']=_[_0xc363('0x3e')](_0x2fc401[_0xc363('0x3a')],{'$or':_[_0xc363('0x2d')](_0x2fc401['attributes'],function(_0x27959f){var _0x712230={};_0x712230[_0x27959f]={'$like':'%'+_0x28dab4[_0xc363('0x32')]['filter']+'%'};return _0x712230;})});}_0x2fc401=_['merge']({},_0x2fc401,_0x28dab4[_0xc363('0x47')]);return _0x530951[_0xc363('0x50')](_0x2fc401);}})['then'](function(_0x3003ff){if(_0x3003ff){_0x30e4b5=_0x3003ff['length'];if(!_0x28dab4[_0xc363('0x32')]['hasOwnProperty']('nolimit')){_0x2fc401[_0xc363('0x21')]=qs['limit'](_0x28dab4[_0xc363('0x32')][_0xc363('0x21')]);_0x2fc401[_0xc363('0x1f')]=qs['offset'](_0x28dab4[_0xc363('0x32')][_0xc363('0x1f')]);}return _0x530951[_0xc363('0x50')](_0x2fc401);}})[_0xc363('0x28')](function(_0x527c7d){if(_0x527c7d){return _0x527c7d?{'count':_0x30e4b5,'rows':_0x527c7d}:null;}})[_0xc363('0x28')](respondWithResult(_0x18e114,null))[_0xc363('0x43')](handleError(_0x18e114,null));};exports[_0xc363('0x51')]=function(_0x1d2384,_0x4ac194,_0x17593d){var _0x1119fe={};var _0x323292={};var _0x4a9621;var _0x52eda4;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x1d2384[_0xc363('0x45')]['id']}})['then'](handleEntityNotFound(_0x4ac194,null))[_0xc363('0x28')](function(_0x5eed7d){if(_0x5eed7d){_0x4a9621=_0x5eed7d;_0x323292['model']=_['keys'](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x323292[_0xc363('0x32')]=_['keys'](_0x1d2384['query']);_0x323292[_0xc363('0x46')]=_['intersection'](_0x323292[_0xc363('0x31')],_0x323292[_0xc363('0x32')]);_0x1119fe[_0xc363('0x36')]=_[_0xc363('0x34')](_0x323292[_0xc363('0x31')],qs[_0xc363('0x35')](_0x1d2384['query'][_0xc363('0x35')]));_0x1119fe[_0xc363('0x36')]=_0x1119fe[_0xc363('0x36')][_0xc363('0x4d')]?_0x1119fe['attributes']:_0x323292[_0xc363('0x31')];_0x1119fe[_0xc363('0x4e')]=qs['sort'](_0x1d2384[_0xc363('0x32')][_0xc363('0x39')]);_0x1119fe[_0xc363('0x3a')]=qs['filters'](_[_0xc363('0x3b')](_0x1d2384[_0xc363('0x32')],_0x323292[_0xc363('0x46')]));if(_0x1d2384['query']['filter']){_0x1119fe[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x1119fe[_0xc363('0x3a')],{'$or':_['map'](_0x1119fe[_0xc363('0x36')],function(_0x3a4121){var _0x12e0fa={};_0x12e0fa[_0x3a4121]={'$like':'%'+_0x1d2384[_0xc363('0x32')][_0xc363('0x4f')]+'%'};return _0x12e0fa;})});}_0x1119fe=_[_0xc363('0x3e')]({},_0x1119fe,_0x1d2384['options']);return _0x4a9621['getSubjects'](_0x1119fe);}})['then'](function(_0x32d266){if(_0x32d266){_0x52eda4=_0x32d266[_0xc363('0x4d')];if(!_0x1d2384['query'][_0xc363('0x37')](_0xc363('0x38'))){_0x1119fe[_0xc363('0x21')]=qs['limit'](_0x1d2384[_0xc363('0x32')]['limit']);_0x1119fe[_0xc363('0x1f')]=qs['offset'](_0x1d2384[_0xc363('0x32')][_0xc363('0x1f')]);}return _0x4a9621[_0xc363('0x51')](_0x1119fe);}})[_0xc363('0x28')](function(_0x4719f9){if(_0x4719f9){return _0x4719f9?{'count':_0x52eda4,'rows':_0x4719f9}:null;}})['then'](respondWithResult(_0x4ac194,null))[_0xc363('0x43')](handleError(_0x4ac194,null));};exports['getDescriptions']=function(_0x3feb66,_0x169a0e,_0x32085a){var _0x3dc8ca={};var _0x382bf1={};var _0x4eca50;var _0x488c3c;return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x3feb66['params']['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x169a0e,null))[_0xc363('0x28')](function(_0x553ac7){if(_0x553ac7){_0x4eca50=_0x553ac7;_0x382bf1[_0xc363('0x31')]=_['keys'](db[_0xc363('0x4c')][_0xc363('0x2f')]);_0x382bf1['query']=_[_0xc363('0x33')](_0x3feb66['query']);_0x382bf1['filters']=_['intersection'](_0x382bf1[_0xc363('0x31')],_0x382bf1[_0xc363('0x32')]);_0x3dc8ca[_0xc363('0x36')]=_[_0xc363('0x34')](_0x382bf1['model'],qs[_0xc363('0x35')](_0x3feb66[_0xc363('0x32')][_0xc363('0x35')]));_0x3dc8ca[_0xc363('0x36')]=_0x3dc8ca[_0xc363('0x36')][_0xc363('0x4d')]?_0x3dc8ca['attributes']:_0x382bf1[_0xc363('0x31')];_0x3dc8ca[_0xc363('0x4e')]=qs[_0xc363('0x39')](_0x3feb66[_0xc363('0x32')][_0xc363('0x39')]);_0x3dc8ca[_0xc363('0x3a')]=qs[_0xc363('0x46')](_[_0xc363('0x3b')](_0x3feb66[_0xc363('0x32')],_0x382bf1[_0xc363('0x46')]));if(_0x3feb66['query'][_0xc363('0x4f')]){_0x3dc8ca[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x3dc8ca[_0xc363('0x3a')],{'$or':_['map'](_0x3dc8ca['attributes'],function(_0x584577){var _0x5b4a83={};_0x5b4a83[_0x584577]={'$like':'%'+_0x3feb66[_0xc363('0x32')][_0xc363('0x4f')]+'%'};return _0x5b4a83;})});}_0x3dc8ca=_['merge']({},_0x3dc8ca,_0x3feb66[_0xc363('0x47')]);return _0x4eca50[_0xc363('0x52')](_0x3dc8ca);}})[_0xc363('0x28')](function(_0x40a099){if(_0x40a099){_0x488c3c=_0x40a099['length'];if(!_0x3feb66[_0xc363('0x32')]['hasOwnProperty'](_0xc363('0x38'))){_0x3dc8ca[_0xc363('0x21')]=qs[_0xc363('0x21')](_0x3feb66['query'][_0xc363('0x21')]);_0x3dc8ca[_0xc363('0x1f')]=qs[_0xc363('0x1f')](_0x3feb66[_0xc363('0x32')]['offset']);}return _0x4eca50[_0xc363('0x52')](_0x3dc8ca);}})['then'](function(_0x154609){if(_0x154609){return _0x154609?{'count':_0x488c3c,'rows':_0x154609}:null;}})['then'](respondWithResult(_0x169a0e,null))[_0xc363('0x43')](handleError(_0x169a0e,null));};exports[_0xc363('0x53')]=function(_0x4992ef,_0x15b8ae,_0x52afa0){var _0x11a984={};var _0xcb1654={};var _0xf0cf;var _0x41030b;return db['DeskConfiguration']['findOne']({'where':{'id':_0x4992ef[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x15b8ae,null))[_0xc363('0x28')](function(_0x4dbae4){if(_0x4dbae4){_0xf0cf=_0x4dbae4;_0xcb1654[_0xc363('0x31')]=_[_0xc363('0x33')](db[_0xc363('0x54')]['rawAttributes']);_0xcb1654[_0xc363('0x32')]=_[_0xc363('0x33')](_0x4992ef[_0xc363('0x32')]);_0xcb1654['filters']=_[_0xc363('0x34')](_0xcb1654[_0xc363('0x31')],_0xcb1654[_0xc363('0x32')]);_0x11a984['attributes']=_[_0xc363('0x34')](_0xcb1654[_0xc363('0x31')],qs['fields'](_0x4992ef[_0xc363('0x32')][_0xc363('0x35')]));_0x11a984[_0xc363('0x36')]=_0x11a984[_0xc363('0x36')]['length']?_0x11a984['attributes']:_0xcb1654[_0xc363('0x31')];_0x11a984['order']=qs[_0xc363('0x39')](_0x4992ef[_0xc363('0x32')][_0xc363('0x39')]);_0x11a984[_0xc363('0x3a')]=qs[_0xc363('0x46')](_['pick'](_0x4992ef['query'],_0xcb1654[_0xc363('0x46')]));if(_0x4992ef[_0xc363('0x32')][_0xc363('0x4f')]){_0x11a984[_0xc363('0x3a')]=_[_0xc363('0x3e')](_0x11a984['where'],{'$or':_[_0xc363('0x2d')](_0x11a984[_0xc363('0x36')],function(_0x2bade7){var _0x4afb49={};_0x4afb49[_0x2bade7]={'$like':'%'+_0x4992ef[_0xc363('0x32')]['filter']+'%'};return _0x4afb49;})});}_0x11a984=_[_0xc363('0x3e')]({},_0x11a984,_0x4992ef['options']);return _0xf0cf['getTags'](_0x11a984);}})[_0xc363('0x28')](function(_0x55c604){if(_0x55c604){_0x41030b=_0x55c604['length'];if(!_0x4992ef[_0xc363('0x32')][_0xc363('0x37')]('nolimit')){_0x11a984['limit']=qs[_0xc363('0x21')](_0x4992ef[_0xc363('0x32')]['limit']);_0x11a984[_0xc363('0x1f')]=qs[_0xc363('0x1f')](_0x4992ef[_0xc363('0x32')][_0xc363('0x1f')]);}return _0xf0cf[_0xc363('0x53')](_0x11a984);}})['then'](function(_0x1c818e){if(_0x1c818e){return _0x1c818e?{'count':_0x41030b,'rows':_0x1c818e}:null;}})['then'](respondWithResult(_0x15b8ae,null))[_0xc363('0x43')](handleError(_0x15b8ae,null));};exports[_0xc363('0x55')]=function(_0x6161dd,_0x45d80a,_0x5dd91c){if(_0x6161dd['body']['id']){delete _0x6161dd[_0xc363('0x4a')]['id'];}return db[_0xc363('0x2e')][_0xc363('0x4b')]({'where':{'id':_0x6161dd[_0xc363('0x45')]['id']}})[_0xc363('0x28')](handleEntityNotFound(_0x45d80a,null))[_0xc363('0x28')](function(_0x5db954){if(_0x5db954){return _0x5db954['setTags'](_0x6161dd['body'][_0xc363('0x56')]||[]);}return null;})[_0xc363('0x28')](respondWithResult(_0x45d80a,null))[_0xc363('0x43')](handleError(_0x45d80a,null));};
\ No newline at end of file
index 463e85a..6d635f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d0c=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDeskConfiguration.attributes','DeskConfiguration','int_desk_configurations','lodash','util'];(function(_0xf2ba9c,_0x574c2a){var _0x5b43a1=function(_0x4051ac){while(--_0x4051ac){_0xf2ba9c['push'](_0xf2ba9c['shift']());}};_0x5b43a1(++_0x574c2a);}(_0x6d0c,0x8d));var _0xc6d0=function(_0x457608,_0x1100f9){_0x457608=_0x457608-0x0;var _0x1e5eed=_0x6d0c[_0x457608];return _0x1e5eed;};'use strict';var _=require(_0xc6d0('0x0'));var util=require(_0xc6d0('0x1'));var logger=require(_0xc6d0('0x2'))(_0xc6d0('0x3'));var moment=require(_0xc6d0('0x4'));var BPromise=require(_0xc6d0('0x5'));var rp=require(_0xc6d0('0x6'));var fs=require('fs');var path=require(_0xc6d0('0x7'));var rimraf=require(_0xc6d0('0x8'));var config=require(_0xc6d0('0x9'));var attributes=require(_0xc6d0('0xa'));module['exports']=function(_0x1529b0,_0x484f0f){return _0x1529b0['define'](_0xc6d0('0xb'),attributes,{'tableName':_0xc6d0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8386=['exports','define','DeskConfiguration','int_desk_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x5738a3,_0x2876c7){var _0x3e9bc0=function(_0x5c6e6e){while(--_0x5c6e6e){_0x5738a3['push'](_0x5738a3['shift']());}};_0x3e9bc0(++_0x2876c7);}(_0x8386,0xfb));var _0x6838=function(_0x133d84,_0x2941a9){_0x133d84=_0x133d84-0x0;var _0x113559=_0x8386[_0x133d84];return _0x113559;};'use strict';var _=require(_0x6838('0x0'));var util=require(_0x6838('0x1'));var logger=require(_0x6838('0x2'))(_0x6838('0x3'));var moment=require('moment');var BPromise=require(_0x6838('0x4'));var rp=require(_0x6838('0x5'));var fs=require('fs');var path=require(_0x6838('0x6'));var rimraf=require(_0x6838('0x7'));var config=require(_0x6838('0x8'));var attributes=require('./intDeskConfiguration.attributes');module[_0x6838('0x9')]=function(_0x2a394a,_0x2bd9f0){return _0x2a394a[_0x6838('0xa')](_0x6838('0xb'),attributes,{'tableName':_0x6838('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c9609d..7101d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4d0=['then','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request'];(function(_0x3cfe21,_0x5035b8){var _0x19a810=function(_0x1d1258){while(--_0x1d1258){_0x3cfe21['push'](_0x3cfe21['shift']());}};_0x19a810(++_0x5035b8);}(_0xd4d0,0x6d));var _0x0d4d=function(_0x4026ce,_0x19b4b2){_0x4026ce=_0x4026ce-0x0;var _0x34e3fe=_0xd4d0[_0x4026ce];return _0x34e3fe;};'use strict';var _=require(_0x0d4d('0x0'));var util=require('util');var moment=require(_0x0d4d('0x1'));var BPromise=require(_0x0d4d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0d4d('0x3'))['db'];var utils=require(_0x0d4d('0x4'));var logger=require(_0x0d4d('0x5'))('rpc');var config=require(_0x0d4d('0x6'));var jayson=require(_0x0d4d('0x7'));var client=jayson[_0x0d4d('0x8')][_0x0d4d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3c1ad0,_0x38f96b,_0x296db5){return new BPromise(function(_0x5c35ef,_0x1ff00b){return client[_0x0d4d('0xa')](_0x3c1ad0,_0x296db5)[_0x0d4d('0xb')](function(_0x64a879){logger['info'](_0x0d4d('0xc'),_0x38f96b,_0x0d4d('0xd'));logger[_0x0d4d('0xe')](_0x0d4d('0xf'),_0x38f96b,_0x0d4d('0xd'),JSON['stringify'](_0x64a879));if(_0x64a879['error']){if(_0x64a879[_0x0d4d('0x10')][_0x0d4d('0x11')]===0x1f4){logger[_0x0d4d('0x10')](_0x0d4d('0xc'),_0x38f96b,_0x64a879[_0x0d4d('0x10')][_0x0d4d('0x12')]);return _0x1ff00b(_0x64a879['error']['message']);}logger[_0x0d4d('0x10')]('DeskConfiguration,\x20%s,\x20%s',_0x38f96b,_0x64a879[_0x0d4d('0x10')]['message']);return _0x5c35ef(_0x64a879[_0x0d4d('0x10')][_0x0d4d('0x12')]);}else{logger['info']('DeskConfiguration,\x20%s,\x20%s',_0x38f96b,_0x0d4d('0xd'));_0x5c35ef(_0x64a879['result'][_0x0d4d('0x12')]);}})[_0x0d4d('0x13')](function(_0x333ac0){logger['error'](_0x0d4d('0xc'),_0x38f96b,_0x333ac0);_0x1ff00b(_0x333ac0);});});}
\ No newline at end of file
+var _0x0d8b=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','client','http','request','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3e6729,_0x16d4af){var _0x535bcd=function(_0x5e6c5f){while(--_0x5e6c5f){_0x3e6729['push'](_0x3e6729['shift']());}};_0x535bcd(++_0x16d4af);}(_0x0d8b,0x1e6));var _0xb0d8=function(_0x81f000,_0x15df85){_0x81f000=_0x81f000-0x0;var _0x337aa2=_0x0d8b[_0x81f000];return _0x337aa2;};'use strict';var _=require('lodash');var util=require(_0xb0d8('0x0'));var moment=require(_0xb0d8('0x1'));var BPromise=require(_0xb0d8('0x2'));var rs=require(_0xb0d8('0x3'));var fs=require('fs');var Redis=require(_0xb0d8('0x4'));var db=require(_0xb0d8('0x5'))['db'];var utils=require(_0xb0d8('0x6'));var logger=require('../../config/logger')(_0xb0d8('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb0d8('0x8')][_0xb0d8('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2c13be,_0x243b42,_0x326bad){return new BPromise(function(_0x24b91d,_0x2281e7){return client[_0xb0d8('0xa')](_0x2c13be,_0x326bad)[_0xb0d8('0xb')](function(_0x481a66){logger[_0xb0d8('0xc')](_0xb0d8('0xd'),_0x243b42,_0xb0d8('0xe'));logger[_0xb0d8('0xf')](_0xb0d8('0x10'),_0x243b42,'request\x20sent',JSON[_0xb0d8('0x11')](_0x481a66));if(_0x481a66[_0xb0d8('0x12')]){if(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x13')]===0x1f4){logger[_0xb0d8('0x12')](_0xb0d8('0xd'),_0x243b42,_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);return _0x2281e7(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);}logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x243b42,_0x481a66['error'][_0xb0d8('0x14')]);return _0x24b91d(_0x481a66[_0xb0d8('0x12')][_0xb0d8('0x14')]);}else{logger[_0xb0d8('0xc')](_0xb0d8('0xd'),_0x243b42,_0xb0d8('0xe'));_0x24b91d(_0x481a66[_0xb0d8('0x15')][_0xb0d8('0x14')]);}})[_0xb0d8('0x16')](function(_0x326f42){logger['error'](_0xb0d8('0xd'),_0x243b42,_0x326f42);_0x2281e7(_0x326f42);});});}
\ No newline at end of file
index 9f0ff86..3662860 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3713=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','get','/:id','show','create','update','delete'];(function(_0x520da7,_0x3f49cb){var _0x462a2d=function(_0x2ab1d4){while(--_0x2ab1d4){_0x520da7['push'](_0x520da7['shift']());}};_0x462a2d(++_0x3f49cb);}(_0x3713,0xa2));var _0x3371=function(_0x592dcd,_0x369200){_0x592dcd=_0x592dcd-0x0;var _0x2888c0=_0x3713[_0x592dcd];return _0x2888c0;};'use strict';var multer=require(_0x3371('0x0'));var util=require(_0x3371('0x1'));var path=require(_0x3371('0x2'));var timeout=require(_0x3371('0x3'));var express=require(_0x3371('0x4'));var router=express[_0x3371('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3371('0x6'));var interaction=require(_0x3371('0x7'));var config=require(_0x3371('0x8'));var controller=require(_0x3371('0x9'));router['get']('/',auth[_0x3371('0xa')](),controller[_0x3371('0xb')]);router[_0x3371('0xc')](_0x3371('0xd'),auth[_0x3371('0xa')](),controller[_0x3371('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x3371('0xf')]);router['put'](_0x3371('0xd'),auth[_0x3371('0xa')](),controller[_0x3371('0x10')]);router[_0x3371('0x11')](_0x3371('0xd'),auth['isAuthenticated'](),controller[_0x3371('0x12')]);module[_0x3371('0x13')]=router;
\ No newline at end of file
+var _0x0d64=['create','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post'];(function(_0x393cc5,_0x1722b1){var _0x46756d=function(_0x25f7d5){while(--_0x25f7d5){_0x393cc5['push'](_0x393cc5['shift']());}};_0x46756d(++_0x1722b1);}(_0x0d64,0x17f));var _0x40d6=function(_0x19c67c,_0x253239){_0x19c67c=_0x19c67c-0x0;var _0x4b304b=_0x0d64[_0x19c67c];return _0x4b304b;};'use strict';var multer=require(_0x40d6('0x0'));var util=require(_0x40d6('0x1'));var path=require(_0x40d6('0x2'));var timeout=require(_0x40d6('0x3'));var express=require(_0x40d6('0x4'));var router=express[_0x40d6('0x5')]();var fs_extra=require(_0x40d6('0x6'));var auth=require(_0x40d6('0x7'));var interaction=require(_0x40d6('0x8'));var config=require(_0x40d6('0x9'));var controller=require('./intDeskField.controller');router[_0x40d6('0xa')]('/',auth[_0x40d6('0xb')](),controller[_0x40d6('0xc')]);router[_0x40d6('0xa')](_0x40d6('0xd'),auth[_0x40d6('0xb')](),controller[_0x40d6('0xe')]);router[_0x40d6('0xf')]('/',auth['isAuthenticated'](),controller[_0x40d6('0x10')]);router[_0x40d6('0x11')](_0x40d6('0xd'),auth['isAuthenticated'](),controller[_0x40d6('0x12')]);router[_0x40d6('0x13')](_0x40d6('0xd'),auth[_0x40d6('0xb')](),controller['destroy']);module[_0x40d6('0x14')]=router;
\ No newline at end of file
index c7cb574..1edd791 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b6c=['ENUM','variable','customVariable','picklist','string','STRING','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7b6c,0xfb));var _0xc7b6=function(_0x39f989,_0x2365d7){_0x39f989=_0x39f989-0x0;var _0x3816f6=_0x7b6c[_0x39f989];return _0x3816f6;};'use strict';var Sequelize=require('sequelize');module[_0xc7b6('0x0')]={'type':{'type':Sequelize[_0xc7b6('0x1')]('string',_0xc7b6('0x2'),_0xc7b6('0x3'),'keyValue',_0xc7b6('0x4')),'defaultValue':_0xc7b6('0x5')},'content':{'type':Sequelize[_0xc7b6('0x6')]},'key':{'type':Sequelize[_0xc7b6('0x6')]},'keyType':{'type':Sequelize[_0xc7b6('0x1')](_0xc7b6('0x5'),_0xc7b6('0x2'),_0xc7b6('0x3'))},'keyContent':{'type':Sequelize[_0xc7b6('0x6')]},'idField':{'type':Sequelize[_0xc7b6('0x6')]},'nameField':{'type':Sequelize[_0xc7b6('0x6')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xc7b6('0x6')]}};
\ No newline at end of file
+var _0xb182=['string','variable','customVariable','keyValue','STRING','sequelize','exports','ENUM'];(function(_0x38537f,_0x252124){var _0x141e23=function(_0x2809b5){while(--_0x2809b5){_0x38537f['push'](_0x38537f['shift']());}};_0x141e23(++_0x252124);}(_0xb182,0xdd));var _0x2b18=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0xb182[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require(_0x2b18('0x0'));module[_0x2b18('0x1')]={'type':{'type':Sequelize[_0x2b18('0x2')](_0x2b18('0x3'),_0x2b18('0x4'),_0x2b18('0x5'),_0x2b18('0x6'),'picklist'),'defaultValue':_0x2b18('0x3')},'content':{'type':Sequelize[_0x2b18('0x7')]},'key':{'type':Sequelize[_0x2b18('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x2b18('0x3'),'variable',_0x2b18('0x5'))},'keyContent':{'type':Sequelize[_0x2b18('0x7')]},'idField':{'type':Sequelize[_0x2b18('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 825ed0f..feab09c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fee=['pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','create','body','find','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','set','Content-Range','reject','update','then','destroy','error','stack','name','map','DeskField','rawAttributes','fieldName','model','keys','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x760a23,_0x43352a){var _0x5ef632=function(_0x552402){while(--_0x552402){_0x760a23['push'](_0x760a23['shift']());}};_0x5ef632(++_0x43352a);}(_0x1fee,0x1de));var _0xe1fe=function(_0x4b3a11,_0x488bb2){_0x4b3a11=_0x4b3a11-0x0;var _0x32960d=_0x1fee[_0x4b3a11];return _0x32960d;};'use strict';var emlformat=require(_0xe1fe('0x0'));var rimraf=require(_0xe1fe('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe1fe('0x2'));var rp=require(_0xe1fe('0x3'));var moment=require(_0xe1fe('0x4'));var BPromise=require(_0xe1fe('0x5'));var Mustache=require(_0xe1fe('0x6'));var util=require(_0xe1fe('0x7'));var path=require('path');var sox=require(_0xe1fe('0x8'));var csv=require(_0xe1fe('0x9'));var ejs=require(_0xe1fe('0xa'));var fs=require('fs');var fs_extra=require(_0xe1fe('0xb'));var _=require(_0xe1fe('0xc'));var squel=require(_0xe1fe('0xd'));var crypto=require(_0xe1fe('0xe'));var jsforce=require(_0xe1fe('0xf'));var deskjs=require(_0xe1fe('0x10'));var toCsv=require(_0xe1fe('0x9'));var querystring=require(_0xe1fe('0x11'));var Papa=require(_0xe1fe('0x12'));var Redis=require(_0xe1fe('0x13'));var authService=require(_0xe1fe('0x14'));var qs=require(_0xe1fe('0x15'));var as=require(_0xe1fe('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe1fe('0x17'))('api');var utils=require(_0xe1fe('0x18'));var config=require(_0xe1fe('0x19'));var licenseUtil=require(_0xe1fe('0x1a'));var db=require(_0xe1fe('0x1b'))['db'];function respondWithStatusCode(_0x45ad5a,_0x31692a){_0x31692a=_0x31692a||0xcc;return function(_0x519ee3){if(_0x519ee3){return _0x45ad5a[_0xe1fe('0x1c')](_0x31692a);}return _0x45ad5a['status'](_0x31692a)[_0xe1fe('0x1d')]();};}function respondWithResult(_0x5cdb67,_0x2cd710){_0x2cd710=_0x2cd710||0xc8;return function(_0x2063e1){if(_0x2063e1){return _0x5cdb67['status'](_0x2cd710)[_0xe1fe('0x1e')](_0x2063e1);}};}function respondWithFilteredResult(_0x4c76e9,_0x3c28f1){return function(_0x49de71){if(_0x49de71){var _0x41dacd=typeof _0x3c28f1[_0xe1fe('0x1f')]===_0xe1fe('0x20')&&typeof _0x3c28f1[_0xe1fe('0x21')]==='undefined';var _0x527fc4=_0x49de71['count'];var _0x311eec=_0x41dacd?0x0:_0x3c28f1[_0xe1fe('0x1f')];var _0x128f3e=_0x41dacd?_0x49de71[_0xe1fe('0x22')]:_0x3c28f1[_0xe1fe('0x1f')]+_0x3c28f1[_0xe1fe('0x21')];var _0x1d277a;if(_0x128f3e>=_0x527fc4){_0x128f3e=_0x527fc4;_0x1d277a=0xc8;}else{_0x1d277a=0xce;}_0x4c76e9[_0xe1fe('0x23')](_0x1d277a);return _0x4c76e9[_0xe1fe('0x24')](_0xe1fe('0x25'),_0x311eec+'-'+_0x128f3e+'/'+_0x527fc4)[_0xe1fe('0x1e')](_0x49de71);}return null;};}function patchUpdates(_0x326177){return function(_0x3f0f20){try{jsonpatch['apply'](_0x3f0f20,_0x326177,!![]);}catch(_0x51f7ab){return BPromise[_0xe1fe('0x26')](_0x51f7ab);}return _0x3f0f20['save']();};}function saveUpdates(_0x3d5b34,_0x12d507){return function(_0xd55d41){if(_0xd55d41){return _0xd55d41[_0xe1fe('0x27')](_0x3d5b34)[_0xe1fe('0x28')](function(_0x2b7e05){return _0x2b7e05;});}return null;};}function removeEntity(_0x237cae,_0x519402){return function(_0x2aefe6){if(_0x2aefe6){return _0x2aefe6[_0xe1fe('0x29')]()['then'](function(){_0x237cae[_0xe1fe('0x23')](0xcc)[_0xe1fe('0x1d')]();});}};}function handleEntityNotFound(_0x1ebd78,_0x129e28){return function(_0x159918){if(!_0x159918){_0x1ebd78[_0xe1fe('0x1c')](0x194);}return _0x159918;};}function handleError(_0x308944,_0x388393){_0x388393=_0x388393||0x1f4;return function(_0x58bcd0){logger[_0xe1fe('0x2a')](_0x58bcd0[_0xe1fe('0x2b')]);if(_0x58bcd0[_0xe1fe('0x2c')]){delete _0x58bcd0[_0xe1fe('0x2c')];}_0x308944['status'](_0x388393)['send'](_0x58bcd0);};}exports['index']=function(_0x25f941,_0x1fc946){var _0xea7729={},_0x14f3c9={},_0x449e72={'count':0x0,'rows':[]};var _0x5b3ca8=_[_0xe1fe('0x2d')](db[_0xe1fe('0x2e')][_0xe1fe('0x2f')],function(_0x2ad82d){return{'name':_0x2ad82d[_0xe1fe('0x30')],'type':_0x2ad82d['type']['key']};});_0x14f3c9[_0xe1fe('0x31')]=_[_0xe1fe('0x2d')](_0x5b3ca8,_0xe1fe('0x2c'));_0x14f3c9['query']=_[_0xe1fe('0x32')](_0x25f941[_0xe1fe('0x33')]);_0x14f3c9[_0xe1fe('0x34')]=_['intersection'](_0x14f3c9['model'],_0x14f3c9[_0xe1fe('0x33')]);_0xea7729[_0xe1fe('0x35')]=_['intersection'](_0x14f3c9[_0xe1fe('0x31')],qs[_0xe1fe('0x36')](_0x25f941['query'][_0xe1fe('0x36')]));_0xea7729['attributes']=_0xea7729['attributes'][_0xe1fe('0x37')]?_0xea7729[_0xe1fe('0x35')]:_0x14f3c9[_0xe1fe('0x31')];if(!_0x25f941[_0xe1fe('0x33')][_0xe1fe('0x38')](_0xe1fe('0x39'))){_0xea7729[_0xe1fe('0x21')]=qs[_0xe1fe('0x21')](_0x25f941['query'][_0xe1fe('0x21')]);_0xea7729[_0xe1fe('0x1f')]=qs[_0xe1fe('0x1f')](_0x25f941[_0xe1fe('0x33')][_0xe1fe('0x1f')]);}_0xea7729[_0xe1fe('0x3a')]=qs[_0xe1fe('0x3b')](_0x25f941[_0xe1fe('0x33')][_0xe1fe('0x3b')]);_0xea7729[_0xe1fe('0x3c')]=qs[_0xe1fe('0x34')](_[_0xe1fe('0x3d')](_0x25f941[_0xe1fe('0x33')],_0x14f3c9[_0xe1fe('0x34')]),_0x5b3ca8);if(_0x25f941[_0xe1fe('0x33')][_0xe1fe('0x3e')]){_0xea7729[_0xe1fe('0x3c')]=_[_0xe1fe('0x3f')](_0xea7729['where'],{'$or':_['map'](_0x5b3ca8,function(_0x1747ec){if(_0x1747ec[_0xe1fe('0x40')]!==_0xe1fe('0x41')){var _0x367e5e={};_0x367e5e[_0x1747ec[_0xe1fe('0x2c')]]={'$like':'%'+_0x25f941['query'][_0xe1fe('0x3e')]+'%'};return _0x367e5e;}})});}_0xea7729=_[_0xe1fe('0x3f')]({},_0xea7729,_0x25f941['options']);var _0x35dc0d={'where':_0xea7729[_0xe1fe('0x3c')]};return db[_0xe1fe('0x2e')][_0xe1fe('0x22')](_0x35dc0d)[_0xe1fe('0x28')](function(_0x55bce9){_0x449e72[_0xe1fe('0x22')]=_0x55bce9;if(_0x25f941[_0xe1fe('0x33')][_0xe1fe('0x42')]){_0xea7729[_0xe1fe('0x43')]=[{'all':!![]}];}return db[_0xe1fe('0x2e')][_0xe1fe('0x44')](_0xea7729);})[_0xe1fe('0x28')](function(_0x126e3e){_0x449e72[_0xe1fe('0x45')]=_0x126e3e;return _0x449e72;})[_0xe1fe('0x28')](respondWithFilteredResult(_0x1fc946,_0xea7729))[_0xe1fe('0x46')](handleError(_0x1fc946,null));};exports[_0xe1fe('0x47')]=function(_0x314bda,_0x16de55){var _0x45c229={'raw':!![],'where':{'id':_0x314bda[_0xe1fe('0x48')]['id']}},_0x4bb7bf={};_0x4bb7bf[_0xe1fe('0x31')]=_[_0xe1fe('0x32')](db['DeskField'][_0xe1fe('0x2f')]);_0x4bb7bf[_0xe1fe('0x33')]=_[_0xe1fe('0x32')](_0x314bda[_0xe1fe('0x33')]);_0x4bb7bf[_0xe1fe('0x34')]=_['intersection'](_0x4bb7bf[_0xe1fe('0x31')],_0x4bb7bf[_0xe1fe('0x33')]);_0x45c229[_0xe1fe('0x35')]=_['intersection'](_0x4bb7bf[_0xe1fe('0x31')],qs[_0xe1fe('0x36')](_0x314bda[_0xe1fe('0x33')][_0xe1fe('0x36')]));_0x45c229[_0xe1fe('0x35')]=_0x45c229[_0xe1fe('0x35')]['length']?_0x45c229[_0xe1fe('0x35')]:_0x4bb7bf[_0xe1fe('0x31')];if(_0x314bda[_0xe1fe('0x33')][_0xe1fe('0x42')]){_0x45c229['include']=[{'all':!![]}];}_0x45c229=_['merge']({},_0x45c229,_0x314bda[_0xe1fe('0x49')]);return db[_0xe1fe('0x2e')]['find'](_0x45c229)[_0xe1fe('0x28')](handleEntityNotFound(_0x16de55,null))['then'](respondWithResult(_0x16de55,null))['catch'](handleError(_0x16de55,null));};exports[_0xe1fe('0x4a')]=function(_0x2546f6,_0xefe0a9){return db[_0xe1fe('0x2e')][_0xe1fe('0x4a')](_0x2546f6['body'],{})[_0xe1fe('0x28')](respondWithResult(_0xefe0a9,0xc9))[_0xe1fe('0x46')](handleError(_0xefe0a9,null));};exports[_0xe1fe('0x27')]=function(_0x4bafba,_0x3a7345){if(_0x4bafba['body']['id']){delete _0x4bafba[_0xe1fe('0x4b')]['id'];}return db[_0xe1fe('0x2e')][_0xe1fe('0x4c')]({'where':{'id':_0x4bafba[_0xe1fe('0x48')]['id']}})[_0xe1fe('0x28')](handleEntityNotFound(_0x3a7345,null))[_0xe1fe('0x28')](saveUpdates(_0x4bafba['body'],null))['then'](respondWithResult(_0x3a7345,null))[_0xe1fe('0x46')](handleError(_0x3a7345,null));};exports[_0xe1fe('0x29')]=function(_0x3ae384,_0x361683){return db[_0xe1fe('0x2e')]['find']({'where':{'id':_0x3ae384[_0xe1fe('0x48')]['id']}})['then'](handleEntityNotFound(_0x361683,null))[_0xe1fe('0x28')](removeEntity(_0x361683,null))['catch'](handleError(_0x361683,null));};
\ No newline at end of file
+var _0xa2c8=['catch','show','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','end','stack','name','send','index','DeskField','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include'];(function(_0x337748,_0x402b05){var _0x3bb03f=function(_0x2fcdf4){while(--_0x2fcdf4){_0x337748['push'](_0x337748['shift']());}};_0x3bb03f(++_0x402b05);}(_0xa2c8,0x99));var _0x8a2c=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xa2c8[_0x14add3];return _0x4a174f;};'use strict';var emlformat=require(_0x8a2c('0x0'));var rimraf=require(_0x8a2c('0x1'));var zipdir=require(_0x8a2c('0x2'));var jsonpatch=require(_0x8a2c('0x3'));var rp=require(_0x8a2c('0x4'));var moment=require(_0x8a2c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8a2c('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x8a2c('0x7'));var ejs=require(_0x8a2c('0x8'));var fs=require('fs');var fs_extra=require(_0x8a2c('0x9'));var _=require(_0x8a2c('0xa'));var squel=require('squel');var crypto=require(_0x8a2c('0xb'));var jsforce=require(_0x8a2c('0xc'));var deskjs=require(_0x8a2c('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8a2c('0xe'));var authService=require(_0x8a2c('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x8a2c('0x10'));var hardwareService=require(_0x8a2c('0x11'));var logger=require(_0x8a2c('0x12'))(_0x8a2c('0x13'));var utils=require(_0x8a2c('0x14'));var config=require(_0x8a2c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x8a2c('0x16'))['db'];function respondWithStatusCode(_0x27f040,_0x4b18eb){_0x4b18eb=_0x4b18eb||0xcc;return function(_0xec4883){if(_0xec4883){return _0x27f040[_0x8a2c('0x17')](_0x4b18eb);}return _0x27f040['status'](_0x4b18eb)['end']();};}function respondWithResult(_0x545fb0,_0x4c7eac){_0x4c7eac=_0x4c7eac||0xc8;return function(_0x16bff7){if(_0x16bff7){return _0x545fb0[_0x8a2c('0x18')](_0x4c7eac)[_0x8a2c('0x19')](_0x16bff7);}};}function respondWithFilteredResult(_0x4f02e1,_0x4e8d08){return function(_0xc9d4c7){if(_0xc9d4c7){var _0x8594b4=typeof _0x4e8d08[_0x8a2c('0x1a')]===_0x8a2c('0x1b')&&typeof _0x4e8d08[_0x8a2c('0x1c')]===_0x8a2c('0x1b');var _0x3d82a5=_0xc9d4c7[_0x8a2c('0x1d')];var _0x48d922=_0x8594b4?0x0:_0x4e8d08['offset'];var _0x41226b=_0x8594b4?_0xc9d4c7[_0x8a2c('0x1d')]:_0x4e8d08[_0x8a2c('0x1a')]+_0x4e8d08[_0x8a2c('0x1c')];var _0x2e7e0b;if(_0x41226b>=_0x3d82a5){_0x41226b=_0x3d82a5;_0x2e7e0b=0xc8;}else{_0x2e7e0b=0xce;}_0x4f02e1[_0x8a2c('0x18')](_0x2e7e0b);return _0x4f02e1[_0x8a2c('0x1e')]('Content-Range',_0x48d922+'-'+_0x41226b+'/'+_0x3d82a5)[_0x8a2c('0x19')](_0xc9d4c7);}return null;};}function patchUpdates(_0x4a8d1e){return function(_0x29efe9){try{jsonpatch[_0x8a2c('0x1f')](_0x29efe9,_0x4a8d1e,!![]);}catch(_0x17a645){return BPromise[_0x8a2c('0x20')](_0x17a645);}return _0x29efe9[_0x8a2c('0x21')]();};}function saveUpdates(_0x292c02,_0xa77550){return function(_0x10c951){if(_0x10c951){return _0x10c951[_0x8a2c('0x22')](_0x292c02)[_0x8a2c('0x23')](function(_0x49454f){return _0x49454f;});}return null;};}function removeEntity(_0x2d89cb,_0x5acc49){return function(_0x26c80c){if(_0x26c80c){return _0x26c80c[_0x8a2c('0x24')]()[_0x8a2c('0x23')](function(){_0x2d89cb[_0x8a2c('0x18')](0xcc)[_0x8a2c('0x25')]();});}};}function handleEntityNotFound(_0x305949,_0x53fdb3){return function(_0x4be02e){if(!_0x4be02e){_0x305949[_0x8a2c('0x17')](0x194);}return _0x4be02e;};}function handleError(_0x2a2758,_0x1a2ea6){_0x1a2ea6=_0x1a2ea6||0x1f4;return function(_0x292103){logger['error'](_0x292103[_0x8a2c('0x26')]);if(_0x292103[_0x8a2c('0x27')]){delete _0x292103[_0x8a2c('0x27')];}_0x2a2758[_0x8a2c('0x18')](_0x1a2ea6)[_0x8a2c('0x28')](_0x292103);};}exports[_0x8a2c('0x29')]=function(_0x57c59e,_0x326da5){var _0x28ad48={},_0xbe6057={},_0x4ee754={'count':0x0,'rows':[]};var _0x2414c5=_['map'](db[_0x8a2c('0x2a')]['rawAttributes'],function(_0x56d753){return{'name':_0x56d753[_0x8a2c('0x2b')],'type':_0x56d753[_0x8a2c('0x2c')]['key']};});_0xbe6057[_0x8a2c('0x2d')]=_[_0x8a2c('0x2e')](_0x2414c5,_0x8a2c('0x27'));_0xbe6057['query']=_[_0x8a2c('0x2f')](_0x57c59e[_0x8a2c('0x30')]);_0xbe6057[_0x8a2c('0x31')]=_[_0x8a2c('0x32')](_0xbe6057[_0x8a2c('0x2d')],_0xbe6057['query']);_0x28ad48[_0x8a2c('0x33')]=_[_0x8a2c('0x32')](_0xbe6057[_0x8a2c('0x2d')],qs[_0x8a2c('0x34')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x34')]));_0x28ad48['attributes']=_0x28ad48[_0x8a2c('0x33')][_0x8a2c('0x35')]?_0x28ad48['attributes']:_0xbe6057[_0x8a2c('0x2d')];if(!_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x36')](_0x8a2c('0x37'))){_0x28ad48[_0x8a2c('0x1c')]=qs[_0x8a2c('0x1c')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x1c')]);_0x28ad48[_0x8a2c('0x1a')]=qs['offset'](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x1a')]);}_0x28ad48[_0x8a2c('0x38')]=qs[_0x8a2c('0x39')](_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x39')]);_0x28ad48['where']=qs[_0x8a2c('0x31')](_[_0x8a2c('0x3a')](_0x57c59e[_0x8a2c('0x30')],_0xbe6057['filters']),_0x2414c5);if(_0x57c59e[_0x8a2c('0x30')][_0x8a2c('0x3b')]){_0x28ad48[_0x8a2c('0x3c')]=_[_0x8a2c('0x3d')](_0x28ad48[_0x8a2c('0x3c')],{'$or':_['map'](_0x2414c5,function(_0x4f254a){if(_0x4f254a[_0x8a2c('0x2c')]!==_0x8a2c('0x3e')){var _0x5da273={};_0x5da273[_0x4f254a[_0x8a2c('0x27')]]={'$like':'%'+_0x57c59e[_0x8a2c('0x30')]['filter']+'%'};return _0x5da273;}})});}_0x28ad48=_['merge']({},_0x28ad48,_0x57c59e[_0x8a2c('0x3f')]);var _0xe2a338={'where':_0x28ad48['where']};return db[_0x8a2c('0x2a')][_0x8a2c('0x1d')](_0xe2a338)[_0x8a2c('0x23')](function(_0x1f844f){_0x4ee754[_0x8a2c('0x1d')]=_0x1f844f;if(_0x57c59e['query'][_0x8a2c('0x40')]){_0x28ad48[_0x8a2c('0x41')]=[{'all':!![]}];}return db['DeskField']['findAll'](_0x28ad48);})[_0x8a2c('0x23')](function(_0x19b741){_0x4ee754['rows']=_0x19b741;return _0x4ee754;})[_0x8a2c('0x23')](respondWithFilteredResult(_0x326da5,_0x28ad48))[_0x8a2c('0x42')](handleError(_0x326da5,null));};exports[_0x8a2c('0x43')]=function(_0x1fd19c,_0x28dcc7){var _0x5a7c17={'raw':!![],'where':{'id':_0x1fd19c[_0x8a2c('0x44')]['id']}},_0x9a67f2={};_0x9a67f2[_0x8a2c('0x2d')]=_['keys'](db[_0x8a2c('0x2a')][_0x8a2c('0x45')]);_0x9a67f2[_0x8a2c('0x30')]=_[_0x8a2c('0x2f')](_0x1fd19c['query']);_0x9a67f2[_0x8a2c('0x31')]=_[_0x8a2c('0x32')](_0x9a67f2[_0x8a2c('0x2d')],_0x9a67f2[_0x8a2c('0x30')]);_0x5a7c17[_0x8a2c('0x33')]=_[_0x8a2c('0x32')](_0x9a67f2[_0x8a2c('0x2d')],qs[_0x8a2c('0x34')](_0x1fd19c[_0x8a2c('0x30')][_0x8a2c('0x34')]));_0x5a7c17[_0x8a2c('0x33')]=_0x5a7c17[_0x8a2c('0x33')][_0x8a2c('0x35')]?_0x5a7c17['attributes']:_0x9a67f2[_0x8a2c('0x2d')];if(_0x1fd19c['query']['includeAll']){_0x5a7c17[_0x8a2c('0x41')]=[{'all':!![]}];}_0x5a7c17=_[_0x8a2c('0x3d')]({},_0x5a7c17,_0x1fd19c[_0x8a2c('0x3f')]);return db['DeskField'][_0x8a2c('0x46')](_0x5a7c17)[_0x8a2c('0x23')](handleEntityNotFound(_0x28dcc7,null))[_0x8a2c('0x23')](respondWithResult(_0x28dcc7,null))[_0x8a2c('0x42')](handleError(_0x28dcc7,null));};exports[_0x8a2c('0x47')]=function(_0x5e4f63,_0xf71ed4){return db[_0x8a2c('0x2a')][_0x8a2c('0x47')](_0x5e4f63[_0x8a2c('0x48')],{})['then'](respondWithResult(_0xf71ed4,0xc9))[_0x8a2c('0x42')](handleError(_0xf71ed4,null));};exports['update']=function(_0x3d1a49,_0x31af59){if(_0x3d1a49[_0x8a2c('0x48')]['id']){delete _0x3d1a49[_0x8a2c('0x48')]['id'];}return db[_0x8a2c('0x2a')][_0x8a2c('0x46')]({'where':{'id':_0x3d1a49[_0x8a2c('0x44')]['id']}})['then'](handleEntityNotFound(_0x31af59,null))[_0x8a2c('0x23')](saveUpdates(_0x3d1a49[_0x8a2c('0x48')],null))[_0x8a2c('0x23')](respondWithResult(_0x31af59,null))[_0x8a2c('0x42')](handleError(_0x31af59,null));};exports['destroy']=function(_0x220a9e,_0x5df377){return db[_0x8a2c('0x2a')][_0x8a2c('0x46')]({'where':{'id':_0x220a9e[_0x8a2c('0x44')]['id']}})[_0x8a2c('0x23')](handleEntityNotFound(_0x5df377,null))[_0x8a2c('0x23')](removeEntity(_0x5df377,null))['catch'](handleError(_0x5df377,null));};
\ No newline at end of file
index 06747f5..002aa31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35fb=['idField','FieldId','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','DeskField','int_desk_fields'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x35fb,0x13a));var _0xb35f=function(_0x11f5ff,_0xa0ef18){_0x11f5ff=_0x11f5ff-0x0;var _0x46eefb=_0x35fb[_0x11f5ff];return _0x46eefb;};'use strict';var _=require('lodash');var util=require(_0xb35f('0x0'));var logger=require(_0xb35f('0x1'))(_0xb35f('0x2'));var moment=require(_0xb35f('0x3'));var BPromise=require(_0xb35f('0x4'));var rp=require(_0xb35f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb35f('0x6'));var config=require('../../config/environment');var attributes=require('./intDeskField.attributes');module[_0xb35f('0x7')]=function(_0x5eff93,_0x2efd1c){return _0x5eff93[_0xb35f('0x8')](_0xb35f('0x9'),attributes,{'tableName':_0xb35f('0xa'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0xb35f('0xb'),_0xb35f('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf465=['request-promise','path','../../config/environment','./intDeskField.attributes','exports','define','int_desk_fields','desk_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xf465,0xba));var _0x5f46=function(_0x4020c2,_0x3e1095){_0x4020c2=_0x4020c2-0x0;var _0xe585f4=_0xf465[_0x4020c2];return _0xe585f4;};'use strict';var _=require(_0x5f46('0x0'));var util=require(_0x5f46('0x1'));var logger=require(_0x5f46('0x2'))(_0x5f46('0x3'));var moment=require(_0x5f46('0x4'));var BPromise=require(_0x5f46('0x5'));var rp=require(_0x5f46('0x6'));var fs=require('fs');var path=require(_0x5f46('0x7'));var rimraf=require('rimraf');var config=require(_0x5f46('0x8'));var attributes=require(_0x5f46('0x9'));module[_0x5f46('0xa')]=function(_0x3b52af,_0x33526a){return _0x3b52af[_0x5f46('0xb')]('DeskField',attributes,{'tableName':_0x5f46('0xc'),'paranoid':![],'indexes':[{'name':_0x5f46('0xd'),'fields':[_0x5f46('0xe'),_0x5f46('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7c287e5..1150c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca4=['request','then','info','DeskField,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','client','http'];(function(_0x1a8040,_0x93074a){var _0xec59e0=function(_0xbf387e){while(--_0xbf387e){_0x1a8040['push'](_0x1a8040['shift']());}};_0xec59e0(++_0x93074a);}(_0x4ca4,0x11c));var _0x44ca=function(_0xcb9a49,_0x2bb75a){_0xcb9a49=_0xcb9a49-0x0;var _0x43d838=_0x4ca4[_0xcb9a49];return _0x43d838;};'use strict';var _=require(_0x44ca('0x0'));var util=require(_0x44ca('0x1'));var moment=require(_0x44ca('0x2'));var BPromise=require(_0x44ca('0x3'));var rs=require(_0x44ca('0x4'));var fs=require('fs');var Redis=require(_0x44ca('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x44ca('0x6'));var logger=require(_0x44ca('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x44ca('0x8')][_0x44ca('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45b6d6,_0x19f069,_0xc3881e){return new BPromise(function(_0x214851,_0x4d0f78){return client[_0x44ca('0xa')](_0x45b6d6,_0xc3881e)[_0x44ca('0xb')](function(_0x5f0260){logger[_0x44ca('0xc')](_0x44ca('0xd'),_0x19f069,'request\x20sent');logger[_0x44ca('0xe')]('DeskField,\x20%s,\x20%s,\x20%s',_0x19f069,_0x44ca('0xf'),JSON[_0x44ca('0x10')](_0x5f0260));if(_0x5f0260[_0x44ca('0x11')]){if(_0x5f0260[_0x44ca('0x11')][_0x44ca('0x12')]===0x1f4){logger[_0x44ca('0x11')](_0x44ca('0xd'),_0x19f069,_0x5f0260['error'][_0x44ca('0x13')]);return _0x4d0f78(_0x5f0260['error'][_0x44ca('0x13')]);}logger['error']('DeskField,\x20%s,\x20%s',_0x19f069,_0x5f0260['error']['message']);return _0x214851(_0x5f0260[_0x44ca('0x11')]['message']);}else{logger[_0x44ca('0xc')](_0x44ca('0xd'),_0x19f069,_0x44ca('0xf'));_0x214851(_0x5f0260['result'][_0x44ca('0x13')]);}})[_0x44ca('0x14')](function(_0x2259d5){logger['error']('DeskField,\x20%s,\x20%s',_0x19f069,_0x2259d5);_0x4d0f78(_0x2259d5);});});}
\ No newline at end of file
+var _0x79e3=['randomstring','../../mysqldb','../../config/logger','client','http','request','info','DeskField,\x20%s,\x20%s','request\x20sent','debug','DeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','bluebird'];(function(_0x51d144,_0x46251e){var _0x310821=function(_0x2d9b18){while(--_0x2d9b18){_0x51d144['push'](_0x51d144['shift']());}};_0x310821(++_0x46251e);}(_0x79e3,0xb2));var _0x379e=function(_0xec2973,_0x58deff){_0xec2973=_0xec2973-0x0;var _0x59576c=_0x79e3[_0xec2973];return _0x59576c;};'use strict';var _=require('lodash');var util=require(_0x379e('0x0'));var moment=require('moment');var BPromise=require(_0x379e('0x1'));var rs=require(_0x379e('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x379e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x379e('0x4'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x379e('0x5')][_0x379e('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x2c9637,_0x5f41ed,_0x45c918){return new BPromise(function(_0x3f0aa6,_0x2bd97a){return client[_0x379e('0x7')](_0x2c9637,_0x45c918)['then'](function(_0x3ff691){logger[_0x379e('0x8')](_0x379e('0x9'),_0x5f41ed,_0x379e('0xa'));logger[_0x379e('0xb')](_0x379e('0xc'),_0x5f41ed,_0x379e('0xa'),JSON[_0x379e('0xd')](_0x3ff691));if(_0x3ff691[_0x379e('0xe')]){if(_0x3ff691[_0x379e('0xe')]['code']===0x1f4){logger[_0x379e('0xe')]('DeskField,\x20%s,\x20%s',_0x5f41ed,_0x3ff691[_0x379e('0xe')]['message']);return _0x2bd97a(_0x3ff691[_0x379e('0xe')][_0x379e('0xf')]);}logger[_0x379e('0xe')](_0x379e('0x9'),_0x5f41ed,_0x3ff691['error']['message']);return _0x3f0aa6(_0x3ff691[_0x379e('0xe')][_0x379e('0xf')]);}else{logger[_0x379e('0x8')](_0x379e('0x9'),_0x5f41ed,_0x379e('0xa'));_0x3f0aa6(_0x3ff691[_0x379e('0x10')][_0x379e('0xf')]);}})[_0x379e('0x11')](function(_0x2ea30a){logger[_0x379e('0xe')](_0x379e('0x9'),_0x5f41ed,_0x2ea30a);_0x2bd97a(_0x2ea30a);});});}
\ No newline at end of file
index 3516bec..633752d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bff=['getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/configurations'];(function(_0x56aa66,_0x1ddf52){var _0xeba9ff=function(_0x5467b5){while(--_0x5467b5){_0x56aa66['push'](_0x56aa66['shift']());}};_0xeba9ff(++_0x1ddf52);}(_0x1bff,0x93));var _0xf1bf=function(_0x1e1020,_0xd64a27){_0x1e1020=_0x1e1020-0x0;var _0x464719=_0x1bff[_0x1e1020];return _0x464719;};'use strict';var multer=require(_0xf1bf('0x0'));var util=require(_0xf1bf('0x1'));var path=require(_0xf1bf('0x2'));var timeout=require('connect-timeout');var express=require(_0xf1bf('0x3'));var router=express['Router']();var fs_extra=require(_0xf1bf('0x4'));var auth=require(_0xf1bf('0x5'));var interaction=require(_0xf1bf('0x6'));var config=require(_0xf1bf('0x7'));var controller=require('./intDynamics365Account.controller');router[_0xf1bf('0x8')]('/',auth[_0xf1bf('0x9')](),controller[_0xf1bf('0xa')]);router[_0xf1bf('0x8')](_0xf1bf('0xb'),auth[_0xf1bf('0x9')](),controller[_0xf1bf('0xc')]);router[_0xf1bf('0x8')](_0xf1bf('0xd'),auth['isAuthenticated'](),controller[_0xf1bf('0xe')]);router['get'](_0xf1bf('0xf'),auth[_0xf1bf('0x9')](),controller[_0xf1bf('0x10')]);router[_0xf1bf('0x11')]('/',auth[_0xf1bf('0x9')](),controller[_0xf1bf('0x12')]);router[_0xf1bf('0x11')](_0xf1bf('0xd'),auth['isAuthenticated'](),controller[_0xf1bf('0x13')]);router[_0xf1bf('0x14')](_0xf1bf('0xb'),auth[_0xf1bf('0x9')](),controller[_0xf1bf('0x15')]);router[_0xf1bf('0x16')](_0xf1bf('0xb'),auth[_0xf1bf('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x130b=['post','addConfiguration','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','/:id','isAuthenticated','show','getConfigurations','/:id/fields','getFields','create'];(function(_0x1a00d2,_0x2747ca){var _0x30dcb0=function(_0x422afb){while(--_0x422afb){_0x1a00d2['push'](_0x1a00d2['shift']());}};_0x30dcb0(++_0x2747ca);}(_0x130b,0x90));var _0xb130=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0x130b[_0x122096];return _0x3d1966;};'use strict';var multer=require(_0xb130('0x0'));var util=require(_0xb130('0x1'));var path=require(_0xb130('0x2'));var timeout=require('connect-timeout');var express=require(_0xb130('0x3'));var router=express[_0xb130('0x4')]();var fs_extra=require(_0xb130('0x5'));var auth=require(_0xb130('0x6'));var interaction=require(_0xb130('0x7'));var config=require(_0xb130('0x8'));var controller=require(_0xb130('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xb130('0xa'),auth[_0xb130('0xb')](),controller[_0xb130('0xc')]);router['get']('/:id/configurations',auth[_0xb130('0xb')](),controller[_0xb130('0xd')]);router['get'](_0xb130('0xe'),auth['isAuthenticated'](),controller[_0xb130('0xf')]);router['post']('/',auth[_0xb130('0xb')](),controller[_0xb130('0x10')]);router[_0xb130('0x11')]('/:id/configurations',auth[_0xb130('0xb')](),controller[_0xb130('0x12')]);router[_0xb130('0x13')](_0xb130('0xa'),auth[_0xb130('0xb')](),controller[_0xb130('0x14')]);router[_0xb130('0x15')](_0xb130('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0xb130('0x16')]=router;
\ No newline at end of file
index 29f0934..fadfd52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb091=['exports','STRING'];(function(_0x2898cb,_0x1b2bad){var _0x3539b4=function(_0x5aba97){while(--_0x5aba97){_0x2898cb['push'](_0x2898cb['shift']());}};_0x3539b4(++_0x1b2bad);}(_0xb091,0x16e));var _0x1b09=function(_0x3ddf03,_0x3a5f8f){_0x3ddf03=_0x3ddf03-0x0;var _0x11b876=_0xb091[_0x3ddf03];return _0x11b876;};'use strict';var Sequelize=require('sequelize');module[_0x1b09('0x0')]={'name':{'type':Sequelize[_0x1b09('0x1')]},'username':{'type':Sequelize[_0x1b09('0x1')]},'password':{'type':Sequelize[_0x1b09('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'tenantId':{'type':Sequelize[_0x1b09('0x1')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x1b09('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x1b09('0x1')]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4986=['STRING','BOOLEAN','sequelize','exports'];(function(_0x11c06e,_0x1cb9c7){var _0x20a7dc=function(_0xd192db){while(--_0xd192db){_0x11c06e['push'](_0x11c06e['shift']());}};_0x20a7dc(++_0x1cb9c7);}(_0x4986,0x6e));var _0x6498=function(_0x27fcda,_0xffe100){_0x27fcda=_0x27fcda-0x0;var _0x3cc539=_0x4986[_0x27fcda];return _0x3cc539;};'use strict';var Sequelize=require(_0x6498('0x0'));module[_0x6498('0x1')]={'name':{'type':Sequelize[_0x6498('0x2')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x6498('0x2')]},'tenantId':{'type':Sequelize[_0x6498('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0x6498('0x2')]},'serverUrl':{'type':Sequelize[_0x6498('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x6498('0x2')]},'modernAuthentication':{'type':Sequelize[_0x6498('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 71445e2..51a753c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbca8=['OptionSet','Options','Label','UserLocalizedLabel','Value','LogicalName','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','TrueOption','true','FalseOption',')/Microsoft.Dynamics.CRM.','request-promise','util','lodash','../../components/parsers/qs','../../config/logger','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined','limit','count','set','Content-Range','update','then','end','sendStatus','stack','name','index','map','Dynamics365Account','rawAttributes','fieldName','type','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','findAll','show','params','catch','create','body','find','getConfigurations','findOne','pick','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','Dynamics365Configuration','Dynamics365Field','Subjects','substring','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','PhoneCall','title','description','customerid','ownerid','caseorigincode','subject','phonenumber','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','contractidname','createdbyexternalpartyyominame','createdbyname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','customeridtype','customeridyominame','emailaddress','entitlementidname','entityimage_timestamp','exchangerate','firstresponsebykpiidname','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','overriddencreatedon','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','password','remoteUri','tenantId','clientSecret','CloudProvider','data7','modernAuthentication','access_token','data5','POST','https://login.microsoftonline.com/','/oauth2/token','clientId','username','4.0','value','MetadataId','GET','EntityDefinitions(','Attributes','remove','includes','forEach','@odata.type','PicklistAttributeMetadata','all','push','lastIndexOf','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','test','statusCode','send',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Bearer\x20'];(function(_0x1bc30d,_0x6faa50){var _0x54e4a3=function(_0x3afb51){while(--_0x3afb51){_0x1bc30d['push'](_0x1bc30d['shift']());}};_0x54e4a3(++_0x6faa50);}(_0xbca8,0xcc));var _0x8bca=function(_0x4bd8de,_0x584bc1){_0x4bd8de=_0x4bd8de-0x0;var _0x489958=_0xbca8[_0x4bd8de];return _0x489958;};'use strict';var rp=require(_0x8bca('0x0'));var util=require(_0x8bca('0x1'));var _=require(_0x8bca('0x2'));var qs=require(_0x8bca('0x3'));var logger=require(_0x8bca('0x4'))('api');var db=require(_0x8bca('0x5'))['db'];var integrations=require(_0x8bca('0x6'));function respondWithResult(_0x34d392,_0x5cafc7){_0x5cafc7=_0x5cafc7||0xc8;return function(_0x4c2ac8){if(_0x4c2ac8){return _0x34d392[_0x8bca('0x7')](_0x5cafc7)[_0x8bca('0x8')](_0x4c2ac8);}};}function respondWithFilteredResult(_0x318474,_0x348ddd){return function(_0x4b3267){if(_0x4b3267){var _0x3fdccf=typeof _0x348ddd[_0x8bca('0x9')]===_0x8bca('0xa')&&typeof _0x348ddd[_0x8bca('0xb')]===_0x8bca('0xa');var _0xe266ca=_0x4b3267[_0x8bca('0xc')];var _0x4ee4a0=_0x3fdccf?0x0:_0x348ddd['offset'];var _0x18c1ca=_0x3fdccf?_0x4b3267[_0x8bca('0xc')]:_0x348ddd['offset']+_0x348ddd['limit'];var _0x31afa0;if(_0x18c1ca>=_0xe266ca){_0x18c1ca=_0xe266ca;_0x31afa0=0xc8;}else{_0x31afa0=0xce;}_0x318474['status'](_0x31afa0);return _0x318474[_0x8bca('0xd')](_0x8bca('0xe'),_0x4ee4a0+'-'+_0x18c1ca+'/'+_0xe266ca)['json'](_0x4b3267);}return null;};}function saveUpdates(_0x62c6d1){return function(_0x1fe1b5){if(_0x1fe1b5){return _0x1fe1b5[_0x8bca('0xf')](_0x62c6d1)[_0x8bca('0x10')](function(_0x5d32dc){return _0x5d32dc;});}return null;};}function removeEntity(_0x4bbf5c){return function(_0x250d09){if(_0x250d09){return _0x250d09['destroy']()[_0x8bca('0x10')](function(){_0x4bbf5c[_0x8bca('0x7')](0xcc)[_0x8bca('0x11')]();});}};}function handleEntityNotFound(_0x2e3633){return function(_0x1c3590){if(!_0x1c3590){_0x2e3633[_0x8bca('0x12')](0x194);}return _0x1c3590;};}function handleError(_0x487305,_0x586eca){_0x586eca=_0x586eca||0x1f4;return function(_0x11037e){logger['error'](_0x11037e[_0x8bca('0x13')]);if(_0x11037e[_0x8bca('0x14')]){delete _0x11037e['name'];}_0x487305['status'](_0x586eca)['send'](_0x11037e);};}exports[_0x8bca('0x15')]=function(_0xcc6ee5,_0x4e9dd3){var _0x1a834c={},_0x599c9e={},_0x47b27c={'count':0x0,'rows':[]};var _0x5e95e4=_[_0x8bca('0x16')](db[_0x8bca('0x17')][_0x8bca('0x18')],function(_0xaaee66){return{'name':_0xaaee66[_0x8bca('0x19')],'type':_0xaaee66[_0x8bca('0x1a')]['key']};});_0x599c9e[_0x8bca('0x1b')]=_[_0x8bca('0x16')](_0x5e95e4,_0x8bca('0x14'));_0x599c9e['query']=_[_0x8bca('0x1c')](_0xcc6ee5['query']);_0x599c9e[_0x8bca('0x1d')]=_['intersection'](_0x599c9e[_0x8bca('0x1b')],_0x599c9e[_0x8bca('0x1e')]);_0x1a834c[_0x8bca('0x1f')]=_[_0x8bca('0x20')](_0x599c9e[_0x8bca('0x1b')],qs[_0x8bca('0x21')](_0xcc6ee5[_0x8bca('0x1e')]['fields']));_0x1a834c['attributes']=_0x1a834c[_0x8bca('0x1f')][_0x8bca('0x22')]?_0x1a834c['attributes']:_0x599c9e[_0x8bca('0x1b')];if(!_0xcc6ee5[_0x8bca('0x1e')][_0x8bca('0x23')](_0x8bca('0x24'))){_0x1a834c[_0x8bca('0xb')]=qs['limit'](_0xcc6ee5[_0x8bca('0x1e')]['limit']);_0x1a834c[_0x8bca('0x9')]=qs['offset'](_0xcc6ee5[_0x8bca('0x1e')][_0x8bca('0x9')]);}_0x1a834c[_0x8bca('0x25')]=qs[_0x8bca('0x26')](_0xcc6ee5['query'][_0x8bca('0x26')]);_0x1a834c[_0x8bca('0x27')]=qs[_0x8bca('0x1d')](_['pick'](_0xcc6ee5['query'],_0x599c9e['filters']),_0x5e95e4);if(_0xcc6ee5[_0x8bca('0x1e')][_0x8bca('0x28')]){_0x1a834c[_0x8bca('0x27')]=_['merge'](_0x1a834c[_0x8bca('0x27')],{'$or':_[_0x8bca('0x16')](_0x5e95e4,function(_0x5d147b){if(_0x5d147b[_0x8bca('0x1a')]!==_0x8bca('0x29')){var _0x21b1f1={};_0x21b1f1[_0x5d147b[_0x8bca('0x14')]]={'$like':'%'+_0xcc6ee5[_0x8bca('0x1e')]['filter']+'%'};return _0x21b1f1;}})});}_0x1a834c=_[_0x8bca('0x2a')]({},_0x1a834c,_0xcc6ee5[_0x8bca('0x2b')]);var _0x462b12={'where':_0x1a834c[_0x8bca('0x27')]};return db[_0x8bca('0x17')]['count'](_0x462b12)[_0x8bca('0x10')](function(_0x5cb82d){_0x47b27c['count']=_0x5cb82d;if(_0xcc6ee5[_0x8bca('0x1e')][_0x8bca('0x2c')]){_0x1a834c['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x8bca('0x2d')](_0x1a834c);})[_0x8bca('0x10')](function(_0x3baef6){_0x47b27c['rows']=_0x3baef6;return _0x47b27c;})[_0x8bca('0x10')](respondWithFilteredResult(_0x4e9dd3,_0x1a834c))['catch'](handleError(_0x4e9dd3,null));};exports[_0x8bca('0x2e')]=function(_0x18dee5,_0x49f0d3){var _0x269669={'raw':![],'where':{'id':_0x18dee5[_0x8bca('0x2f')]['id']}},_0x2d5a2f={};_0x2d5a2f['model']=_[_0x8bca('0x1c')](db[_0x8bca('0x17')]['rawAttributes']);_0x2d5a2f['query']=_[_0x8bca('0x1c')](_0x18dee5[_0x8bca('0x1e')]);_0x2d5a2f['filters']=_['intersection'](_0x2d5a2f[_0x8bca('0x1b')],_0x2d5a2f[_0x8bca('0x1e')]);_0x269669[_0x8bca('0x1f')]=_[_0x8bca('0x20')](_0x2d5a2f[_0x8bca('0x1b')],qs[_0x8bca('0x21')](_0x18dee5['query'][_0x8bca('0x21')]));_0x269669[_0x8bca('0x1f')]=_0x269669[_0x8bca('0x1f')][_0x8bca('0x22')]?_0x269669[_0x8bca('0x1f')]:_0x2d5a2f[_0x8bca('0x1b')];if(_0x18dee5[_0x8bca('0x1e')][_0x8bca('0x2c')]){_0x269669['include']=[{'all':!![]}];}_0x269669=_['merge']({},_0x269669,_0x18dee5[_0x8bca('0x2b')]);return db[_0x8bca('0x17')]['find'](_0x269669)[_0x8bca('0x10')](handleEntityNotFound(_0x49f0d3,null))[_0x8bca('0x10')](respondWithResult(_0x49f0d3,null))[_0x8bca('0x30')](handleError(_0x49f0d3,null));};exports[_0x8bca('0x31')]=function(_0x476521,_0x2b7a7c){return db[_0x8bca('0x17')][_0x8bca('0x31')](_0x476521[_0x8bca('0x32')],{})['then'](respondWithResult(_0x2b7a7c,0xc9))[_0x8bca('0x30')](handleError(_0x2b7a7c,null));};exports['update']=function(_0x1c8ff8,_0x1f529f){if(_0x1c8ff8[_0x8bca('0x32')]['id']){delete _0x1c8ff8[_0x8bca('0x32')]['id'];}return db[_0x8bca('0x17')][_0x8bca('0x33')]({'where':{'id':_0x1c8ff8['params']['id']}})[_0x8bca('0x10')](handleEntityNotFound(_0x1f529f,null))[_0x8bca('0x10')](saveUpdates(_0x1c8ff8['body'],null))[_0x8bca('0x10')](respondWithResult(_0x1f529f,null))['catch'](handleError(_0x1f529f,null));};exports['destroy']=function(_0x5cb9f0,_0x5add4a){return db[_0x8bca('0x17')][_0x8bca('0x33')]({'where':{'id':_0x5cb9f0[_0x8bca('0x2f')]['id']}})[_0x8bca('0x10')](handleEntityNotFound(_0x5add4a,null))['then'](removeEntity(_0x5add4a,null))[_0x8bca('0x30')](handleError(_0x5add4a,null));};exports[_0x8bca('0x34')]=function(_0x3ebc12,_0x2f0d32){var _0x5636d3={};var _0x103d04={};var _0x3b279e;var _0x39835e;return db[_0x8bca('0x17')][_0x8bca('0x35')]({'where':{'id':_0x3ebc12[_0x8bca('0x2f')]['id']}})[_0x8bca('0x10')](handleEntityNotFound(_0x2f0d32,null))[_0x8bca('0x10')](function(_0x4b8ce1){if(_0x4b8ce1){_0x3b279e=_0x4b8ce1;_0x103d04[_0x8bca('0x1b')]=_[_0x8bca('0x1c')](db['Dynamics365Configuration']['rawAttributes']);_0x103d04[_0x8bca('0x1e')]=_[_0x8bca('0x1c')](_0x3ebc12[_0x8bca('0x1e')]);_0x103d04['filters']=_[_0x8bca('0x20')](_0x103d04[_0x8bca('0x1b')],_0x103d04['query']);_0x5636d3[_0x8bca('0x1f')]=_[_0x8bca('0x20')](_0x103d04[_0x8bca('0x1b')],qs[_0x8bca('0x21')](_0x3ebc12['query'][_0x8bca('0x21')]));_0x5636d3[_0x8bca('0x1f')]=_0x5636d3['attributes'][_0x8bca('0x22')]?_0x5636d3[_0x8bca('0x1f')]:_0x103d04[_0x8bca('0x1b')];_0x5636d3['order']=qs['sort'](_0x3ebc12['query'][_0x8bca('0x26')]);_0x5636d3['where']=qs[_0x8bca('0x1d')](_[_0x8bca('0x36')](_0x3ebc12['query'],_0x103d04[_0x8bca('0x1d')]));if(_0x3ebc12[_0x8bca('0x1e')]['filter']){_0x5636d3[_0x8bca('0x27')]=_[_0x8bca('0x2a')](_0x5636d3['where'],{'$or':_['map'](_0x5636d3['attributes'],function(_0x1b5992){var _0x2a4a81={};_0x2a4a81[_0x1b5992]={'$like':'%'+_0x3ebc12[_0x8bca('0x1e')][_0x8bca('0x28')]+'%'};return _0x2a4a81;})});}_0x5636d3=_['merge']({},_0x5636d3,_0x3ebc12[_0x8bca('0x2b')]);return _0x3b279e[_0x8bca('0x34')](_0x5636d3);}})[_0x8bca('0x10')](function(_0xff48b7){if(_0xff48b7){_0x39835e=_0xff48b7[_0x8bca('0x22')];if(!_0x3ebc12[_0x8bca('0x1e')][_0x8bca('0x23')](_0x8bca('0x24'))){_0x5636d3[_0x8bca('0xb')]=qs[_0x8bca('0xb')](_0x3ebc12[_0x8bca('0x1e')][_0x8bca('0xb')]);_0x5636d3[_0x8bca('0x9')]=qs[_0x8bca('0x9')](_0x3ebc12[_0x8bca('0x1e')]['offset']);}return _0x3b279e[_0x8bca('0x34')](_0x5636d3);}})[_0x8bca('0x10')](function(_0x480fe8){if(_0x480fe8){return _0x480fe8?{'count':_0x39835e,'rows':_0x480fe8}:null;}})[_0x8bca('0x10')](respondWithResult(_0x2f0d32,null))[_0x8bca('0x30')](handleError(_0x2f0d32,null));};exports[_0x8bca('0x37')]=function(_0xcb64fc,_0xc2825d){if(_0xcb64fc[_0x8bca('0x32')]['id']){delete _0xcb64fc[_0x8bca('0x32')]['id'];}return db[_0x8bca('0x17')][_0x8bca('0x35')]({'where':{'id':_0xcb64fc[_0x8bca('0x2f')]['id']}})[_0x8bca('0x10')](handleEntityNotFound(_0xc2825d,null))['then'](function(_0x452122){if(_0x452122){_0xcb64fc[_0x8bca('0x32')][_0x8bca('0x38')]=_0x452122['id'];_0xcb64fc[_0x8bca('0x32')]['Subjects']=integrations[_0x8bca('0x39')](_0xcb64fc[_0x8bca('0x32')][_0x8bca('0x3a')],_0xcb64fc[_0x8bca('0x32')]['type']);_0xcb64fc[_0x8bca('0x32')][_0x8bca('0x3b')]=integrations[_0x8bca('0x3c')](_0xcb64fc[_0x8bca('0x32')][_0x8bca('0x3a')],_0xcb64fc[_0x8bca('0x32')][_0x8bca('0x1a')]);return db[_0x8bca('0x3d')]['create'](_0xcb64fc['body'],{'include':[{'model':db[_0x8bca('0x3e')],'as':_0x8bca('0x3f')},{'model':db[_0x8bca('0x3e')],'as':_0x8bca('0x3b')}]});}return null;})[_0x8bca('0x10')](respondWithResult(_0xc2825d,null))[_0x8bca('0x30')](handleError(_0xc2825d,null));};function sanitizeRemoteUri(_0x56d1b3){var _0x306321=_0x56d1b3['slice'](-0x1);if(_0x306321==='/')return _0x56d1b3[_0x8bca('0x40')](0x0,_0x56d1b3['lastIndexOf'](_0x306321));return _0x56d1b3;}function getWebApiUrl(_0x58beb3){return util['format'](_0x8bca('0x41'),_0x58beb3);}exports[_0x8bca('0x42')]=function(_0x9cc051,_0x10da15){var _0x153116=_0x9cc051['query'][_0x8bca('0x43')];var _0x307283=_0x153116===_0x8bca('0x44')?_0x8bca('0x45'):_0x8bca('0x46');var _0x1133fe='';var _0x49eef3='';var _0x5c4d3a='';var _0x15a74a='';var _0x392fc6='';var _0x4ec6c9='';var _0x377fc7='';var _0x3e9ae7='';var _0x3aa6e3=[_0x8bca('0x47'),_0x8bca('0x48'),_0x8bca('0x49'),_0x8bca('0x4a'),_0x8bca('0x4b'),_0x8bca('0x4c'),_0x8bca('0x4d'),'regardingobjectid','directioncode',_0x8bca('0x4e')];var _0x3f49dd=[_0x8bca('0x4f'),_0x8bca('0x50'),_0x8bca('0x51'),_0x8bca('0x52'),_0x8bca('0x53'),'contactidyominame',_0x8bca('0x54'),_0x8bca('0x55'),'createdbyexternalpartyname',_0x8bca('0x56'),_0x8bca('0x57'),_0x8bca('0x58'),_0x8bca('0x59'),'createdonbehalfbyname',_0x8bca('0x5a'),_0x8bca('0x5b'),_0x8bca('0x5c'),_0x8bca('0x5d'),_0x8bca('0x5e'),_0x8bca('0x5f'),_0x8bca('0x60'),'entityimage_url','escalatedon',_0x8bca('0x61'),_0x8bca('0x62'),_0x8bca('0x63'),_0x8bca('0x64'),_0x8bca('0x65'),_0x8bca('0x66'),_0x8bca('0x67'),'masteridname',_0x8bca('0x68'),_0x8bca('0x69'),_0x8bca('0x6a'),_0x8bca('0x6b'),_0x8bca('0x6c'),_0x8bca('0x6d'),'modifiedonbehalfbyyominame',_0x8bca('0x6e'),_0x8bca('0x6f'),_0x8bca('0x70'),'onholdtime',_0x8bca('0x71'),_0x8bca('0x72'),'owneridtype',_0x8bca('0x73'),_0x8bca('0x74'),_0x8bca('0x75'),_0x8bca('0x76'),_0x8bca('0x77'),'productidname',_0x8bca('0x78'),_0x8bca('0x79'),_0x8bca('0x7a'),_0x8bca('0x7b'),_0x8bca('0x7c'),_0x8bca('0x7d'),'sentimentvalue',_0x8bca('0x7e'),_0x8bca('0x7f'),_0x8bca('0x80'),_0x8bca('0x81'),_0x8bca('0x82'),'subjectidname',_0x8bca('0x83'),_0x8bca('0x84'),_0x8bca('0x85'),_0x8bca('0x86'),_0x8bca('0x87'),_0x8bca('0x88')];var _0x4f46b1=_0x3aa6e3[_0x8bca('0x89')](_0x3f49dd);return db[_0x8bca('0x17')][_0x8bca('0x35')]({'where':{'id':_0x9cc051['params']['id']},'attributes':['id','username',_0x8bca('0x8a'),_0x8bca('0x8b'),_0x8bca('0x8c'),'clientId',_0x8bca('0x8d'),'modernAuthentication'],'include':[{'model':db[_0x8bca('0x8e')],'as':'CloudProvider','attributes':['id','data5',_0x8bca('0x8f')]}]})[_0x8bca('0x10')](handleEntityNotFound(_0x10da15,null))[_0x8bca('0x10')](function(_0x57ae60){if(_0x57ae60){if(_0x57ae60[_0x8bca('0x90')]){_0x57ae60[_0x8bca('0x91')]=_0x57ae60['CloudProvider'][_0x8bca('0x92')];_0x3e9ae7=sanitizeRemoteUri(_0x57ae60['CloudProvider'][_0x8bca('0x8f')]);_0x377fc7=getWebApiUrl(_0x3e9ae7);return _0x57ae60;}_0x3e9ae7=sanitizeRemoteUri(_0x57ae60['remoteUri']);_0x377fc7=getWebApiUrl(_0x3e9ae7);var _0x49e138={'method':_0x8bca('0x93'),'uri':_0x8bca('0x94')+_0x57ae60['tenantId']+_0x8bca('0x95'),'form':{'client_id':_0x57ae60[_0x8bca('0x96')],'resource':_0x3e9ae7,'username':_0x57ae60[_0x8bca('0x97')],'password':_0x57ae60[_0x8bca('0x8a')],'grant_type':_0x8bca('0x8a'),'client_secret':_0x57ae60[_0x8bca('0x8d')]},'json':!![]};return rp(_0x49e138);}})['then'](function(_0x5a9e8e){_0x4ec6c9=_0x5a9e8e[_0x8bca('0x91')];var _0x478b8b={'method':'GET','uri':encodeURI(_0x377fc7+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x307283+'\x27'),'headers':{'Authorization':'Bearer\x20'+_0x4ec6c9,'If-None-Match':null,'OData-Version':_0x8bca('0x98')},'json':!![]};return rp(_0x478b8b);})['then'](function(_0x1c0362){var _0x31ec52=_0x1c0362[_0x8bca('0x99')][0x0];var _0x4010af=_0x31ec52[_0x8bca('0x9a')];var _0x323ac2={'method':_0x8bca('0x9b'),'uri':_0x377fc7+_0x8bca('0x9c')+_0x4010af+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':'Bearer\x20'+_0x4ec6c9,'If-None-Match':null,'OData-Version':_0x8bca('0x98')},'json':!![]};return rp(_0x323ac2);})[_0x8bca('0x10')](function(_0x398e94){_0x1133fe=_0x398e94;_0x49eef3=_0x1133fe[_0x8bca('0x9d')];_0x49eef3=_[_0x8bca('0x9e')](_0x49eef3,function(_0x23f6e4){return!_0x4f46b1[_0x8bca('0x9f')](_0x23f6e4['LogicalName']);});var _0x32776e=[];var _0x2422d5=[];_0x49eef3[_0x8bca('0xa0')](function(_0x1ec1b4){if(_0x1ec1b4[_0x8bca('0xa1')]){var _0x4ee538=_0x1ec1b4['@odata.type'][_0x8bca('0x40')](_0x1ec1b4[_0x8bca('0xa1')]['lastIndexOf']('.')+0x1);if(_0x4ee538===_0x8bca('0xa2')){_0x32776e['push'](getSelectList(_0x377fc7,_0x153116,_0x2422d5,_0x1133fe[_0x8bca('0x9a')],_0x1ec1b4[_0x8bca('0x9a')],_0x4ec6c9));}}});return Promise[_0x8bca('0xa3')](_0x32776e);})[_0x8bca('0x10')](function(_0x5f165){_0x5c4d3a=_0x5f165[0x0];var _0x153ff1=[];var _0x1455fd=[];_0x49eef3[_0x8bca('0xa0')](function(_0x1aedf5){if(!_['isNil'](_0x1aedf5[_0x8bca('0xa1')])){var _0x38b0d0=_0x1aedf5[_0x8bca('0xa1')][_0x8bca('0x40')](_0x1aedf5[_0x8bca('0xa1')]['lastIndexOf']('.')+0x1);if(_0x38b0d0==='BooleanAttributeMetadata'){_0x153ff1[_0x8bca('0xa4')](getBooleanList(_0x377fc7,_0x153116,_0x1455fd,_0x1133fe[_0x8bca('0x9a')],_0x1aedf5['MetadataId'],_0x4ec6c9));}}});return Promise[_0x8bca('0xa3')](_0x153ff1);})[_0x8bca('0x10')](function(_0x188c7f){_0x15a74a=_0x188c7f[0x0];var _0x3dde74=[];var _0x48597c=[];_0x49eef3['forEach'](function(_0x109169){if(_0x109169[_0x8bca('0xa1')]){var _0x319387=_0x109169[_0x8bca('0xa1')][_0x8bca('0x40')](_0x109169[_0x8bca('0xa1')][_0x8bca('0xa5')]('.')+0x1);if(_0x319387===_0x8bca('0xa6')||_0x319387===_0x8bca('0xa7')||_0x319387==='BigIntAttributeMetadata'||_0x319387===_0x8bca('0xa8')||_0x319387===_0x8bca('0xa9')||_0x319387==='DateTimeAttributeMetadata'||_0x319387===_0x8bca('0xaa')||_0x319387===_0x8bca('0xab')||_0x319387===_0x8bca('0xac')||_0x319387==='DecimalAttributeMetadata'){_0x3dde74[_0x8bca('0xa4')](getInputList(_0x377fc7,_0x153116,_0x319387,_0x48597c,_0x1133fe[_0x8bca('0x9a')],_0x109169['MetadataId'],_0x4ec6c9));}}});return Promise[_0x8bca('0xa3')](_0x3dde74);})[_0x8bca('0x10')](function(_0x3bea36){_0x392fc6=_0x3bea36[0x0];var _0x327d1d=_0x5c4d3a[_0x8bca('0x89')](_0x15a74a)['concat'](_0x392fc6);var _0x46a6e2={'count':_0x327d1d[_0x8bca('0x22')],'rows':_0x327d1d};return _0x46a6e2;})[_0x8bca('0x10')](respondWithResult(_0x10da15,null))[_0x8bca('0x30')](function(_0x2b357a){var _0x49454c=_0x9cc051[_0x8bca('0x1e')][_0x8bca('0xad')]?0x1f4:_0x2b357a[_0x8bca('0xae')]||0x1f4;logger['error'](_0x2b357a['stack']);delete _0x2b357a['name'];if(_0x49454c===0x191){_0x49454c=0x190;}_0x10da15[_0x8bca('0x7')](_0x49454c)[_0x8bca('0xaf')](_0x9cc051[_0x8bca('0x1e')][_0x8bca('0xad')]?{'message':'Wrong\x20credentials','statusCode':_0x2b357a['statusCode']}:_0x2b357a);});};function getSelectList(_0x2043bc,_0x1acee9,_0x1eb10b,_0x327dfa,_0x5e47bb,_0x559ae9){var _0x187300={'method':'GET','uri':_0x2043bc+_0x8bca('0x9c')+_0x327dfa+_0x8bca('0xb0')+_0x5e47bb+_0x8bca('0xb1')+_0x8bca('0xb2'),'headers':{'Authorization':_0x8bca('0xb3')+_0x559ae9,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x187300)['then'](function(_0x395891){var _0x43304a=[];var _0x2ee3e9=_0x395891[_0x8bca('0xb4')][_0x8bca('0xb5')];_0x2ee3e9['forEach'](function(_0x49e6f0){_0x43304a[_0x8bca('0xa4')]({'name':_0x49e6f0[_0x8bca('0xb6')][_0x8bca('0xb7')][_0x8bca('0xb6')],'value':String(_0x49e6f0[_0x8bca('0xb8')])});});var _0x4065e7={'id':_0x1acee9+'_'+_0x395891[_0x8bca('0xb9')],'name':_0x395891[_0x8bca('0xba')][_0x8bca('0xb7')][_0x8bca('0xb6')],'custom':![],'options':_0x43304a};_0x1eb10b[_0x8bca('0xa4')](_0x4065e7);return _0x1eb10b;});}function getBooleanList(_0x915813,_0x2ae92f,_0x4ae084,_0x5d2927,_0x44496c,_0xd929ca){var _0x5dbd2e={'method':_0x8bca('0x9b'),'uri':_0x915813+_0x8bca('0x9c')+_0x5d2927+_0x8bca('0xb0')+_0x44496c+_0x8bca('0xbb'),'headers':{'Authorization':_0x8bca('0xb3')+_0xd929ca,'If-None-Match':null,'OData-Version':_0x8bca('0x98')},'json':!![]};return rp(_0x5dbd2e)[_0x8bca('0x10')](function(_0x1a5a65){var _0x194f58=[];_0x194f58[_0x8bca('0xa4')]({'name':_0x1a5a65['OptionSet'][_0x8bca('0xbc')][_0x8bca('0xb6')][_0x8bca('0xb7')][_0x8bca('0xb6')],'value':_0x8bca('0xbd')},{'name':_0x1a5a65[_0x8bca('0xb4')][_0x8bca('0xbe')][_0x8bca('0xb6')][_0x8bca('0xb7')][_0x8bca('0xb6')],'value':'false'});var _0x465933={'id':_0x2ae92f+'_'+_0x1a5a65[_0x8bca('0xb9')],'name':_0x1a5a65[_0x8bca('0xba')]['UserLocalizedLabel'][_0x8bca('0xb6')],'custom':![],'options':_0x194f58};_0x4ae084[_0x8bca('0xa4')](_0x465933);return _0x4ae084;});}function getInputList(_0x300c7e,_0x1f0fb6,_0x310ba9,_0x1e2d90,_0x1d3bb8,_0x400d91,_0x34a02d){var _0x3f8460={'method':_0x8bca('0x9b'),'uri':_0x300c7e+_0x8bca('0x9c')+_0x1d3bb8+_0x8bca('0xb0')+_0x400d91+_0x8bca('0xbf')+_0x310ba9+'?$select=DisplayName,LogicalName','headers':{'Authorization':_0x8bca('0xb3')+_0x34a02d,'If-None-Match':null,'OData-Version':_0x8bca('0x98')},'json':!![]};return rp(_0x3f8460)[_0x8bca('0x10')](function(_0x32fa2c){var _0x46c0d6={'id':_0x1f0fb6+'_'+_0x32fa2c['LogicalName'],'name':_0x32fa2c['DisplayName']['UserLocalizedLabel']?_0x32fa2c[_0x8bca('0xba')][_0x8bca('0xb7')][_0x8bca('0xb6')]:_0x32fa2c[_0x8bca('0xb9')],'custom':![],'options':[]};_0x1e2d90[_0x8bca('0xa4')](_0x46c0d6);return _0x1e2d90;});}
\ No newline at end of file
+var _0x8830=['@odata.type','push','all','forEach','isNil','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','Wrong\x20credentials','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','Options','Label','UserLocalizedLabel','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','TrueOption','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','?$select=DisplayName,LogicalName','request-promise','util','lodash','../../components/parsers/qs','api','../../components/integrations/configuration','json','offset','undefined','limit','count','status','set','update','destroy','then','end','sendStatus','error','stack','name','send','Dynamics365Account','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','Dynamics365Configuration','Dynamics365Field','slice','substring','lastIndexOf','format','%s/api/data/v9.0/','incident','title','description','customerid','caseorigincode','subject','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidyominame','contractdetailidname','contractidname','createdbyname','createdon','createdonbehalfbyyominame','customeridname','customeridyominame','entitlementidname','entityimage_timestamp','entityimage_url','followupby','importsequencenumber','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyname','modifiedon','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','numberofchildincidents','onholdtime','owneridname','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','resolveby','resolvebykpiidname','responseby','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','traversedpath','utcconversiontimezonecode','versionnumber','username','password','tenantId','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','POST','/oauth2/token','GET','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','includes','LogicalName'];(function(_0x3242f8,_0x452998){var _0x47e17f=function(_0x4caf30){while(--_0x4caf30){_0x3242f8['push'](_0x3242f8['shift']());}};_0x47e17f(++_0x452998);}(_0x8830,0x181));var _0x0883=function(_0xd13a68,_0x11eb15){_0xd13a68=_0xd13a68-0x0;var _0x376631=_0x8830[_0xd13a68];return _0x376631;};'use strict';var rp=require(_0x0883('0x0'));var util=require(_0x0883('0x1'));var _=require(_0x0883('0x2'));var qs=require(_0x0883('0x3'));var logger=require('../../config/logger')(_0x0883('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0x0883('0x5'));function respondWithResult(_0x711297,_0x433f26){_0x433f26=_0x433f26||0xc8;return function(_0x3e597b){if(_0x3e597b){return _0x711297['status'](_0x433f26)[_0x0883('0x6')](_0x3e597b);}};}function respondWithFilteredResult(_0x45b832,_0x2e9384){return function(_0x503b86){if(_0x503b86){var _0x3da72f=typeof _0x2e9384[_0x0883('0x7')]===_0x0883('0x8')&&typeof _0x2e9384[_0x0883('0x9')]===_0x0883('0x8');var _0x2d6500=_0x503b86[_0x0883('0xa')];var _0x108984=_0x3da72f?0x0:_0x2e9384[_0x0883('0x7')];var _0x1ca124=_0x3da72f?_0x503b86[_0x0883('0xa')]:_0x2e9384[_0x0883('0x7')]+_0x2e9384['limit'];var _0x21c1d3;if(_0x1ca124>=_0x2d6500){_0x1ca124=_0x2d6500;_0x21c1d3=0xc8;}else{_0x21c1d3=0xce;}_0x45b832[_0x0883('0xb')](_0x21c1d3);return _0x45b832[_0x0883('0xc')]('Content-Range',_0x108984+'-'+_0x1ca124+'/'+_0x2d6500)[_0x0883('0x6')](_0x503b86);}return null;};}function saveUpdates(_0x559942){return function(_0x49b1e8){if(_0x49b1e8){return _0x49b1e8[_0x0883('0xd')](_0x559942)['then'](function(_0x1f26c0){return _0x1f26c0;});}return null;};}function removeEntity(_0x431d93){return function(_0x56bcf8){if(_0x56bcf8){return _0x56bcf8[_0x0883('0xe')]()[_0x0883('0xf')](function(){_0x431d93[_0x0883('0xb')](0xcc)[_0x0883('0x10')]();});}};}function handleEntityNotFound(_0x3d4d7a){return function(_0x399f22){if(!_0x399f22){_0x3d4d7a[_0x0883('0x11')](0x194);}return _0x399f22;};}function handleError(_0x1fb81d,_0x5165e7){_0x5165e7=_0x5165e7||0x1f4;return function(_0x4dc614){logger[_0x0883('0x12')](_0x4dc614[_0x0883('0x13')]);if(_0x4dc614[_0x0883('0x14')]){delete _0x4dc614['name'];}_0x1fb81d['status'](_0x5165e7)[_0x0883('0x15')](_0x4dc614);};}exports['index']=function(_0x146794,_0x473341){var _0x205435={},_0x35da48={},_0x468c79={'count':0x0,'rows':[]};var _0xa8c242=_['map'](db[_0x0883('0x16')][_0x0883('0x17')],function(_0x15836e){return{'name':_0x15836e[_0x0883('0x18')],'type':_0x15836e[_0x0883('0x19')][_0x0883('0x1a')]};});_0x35da48[_0x0883('0x1b')]=_[_0x0883('0x1c')](_0xa8c242,_0x0883('0x14'));_0x35da48[_0x0883('0x1d')]=_[_0x0883('0x1e')](_0x146794[_0x0883('0x1d')]);_0x35da48[_0x0883('0x1f')]=_[_0x0883('0x20')](_0x35da48[_0x0883('0x1b')],_0x35da48['query']);_0x205435[_0x0883('0x21')]=_[_0x0883('0x20')](_0x35da48[_0x0883('0x1b')],qs[_0x0883('0x22')](_0x146794[_0x0883('0x1d')][_0x0883('0x22')]));_0x205435[_0x0883('0x21')]=_0x205435[_0x0883('0x21')]['length']?_0x205435[_0x0883('0x21')]:_0x35da48[_0x0883('0x1b')];if(!_0x146794['query'][_0x0883('0x23')](_0x0883('0x24'))){_0x205435[_0x0883('0x9')]=qs['limit'](_0x146794[_0x0883('0x1d')]['limit']);_0x205435['offset']=qs[_0x0883('0x7')](_0x146794['query'][_0x0883('0x7')]);}_0x205435[_0x0883('0x25')]=qs['sort'](_0x146794[_0x0883('0x1d')][_0x0883('0x26')]);_0x205435[_0x0883('0x27')]=qs[_0x0883('0x1f')](_[_0x0883('0x28')](_0x146794[_0x0883('0x1d')],_0x35da48[_0x0883('0x1f')]),_0xa8c242);if(_0x146794['query'][_0x0883('0x29')]){_0x205435[_0x0883('0x27')]=_[_0x0883('0x2a')](_0x205435[_0x0883('0x27')],{'$or':_[_0x0883('0x1c')](_0xa8c242,function(_0x4e0009){if(_0x4e0009['type']!==_0x0883('0x2b')){var _0x4e9900={};_0x4e9900[_0x4e0009[_0x0883('0x14')]]={'$like':'%'+_0x146794[_0x0883('0x1d')][_0x0883('0x29')]+'%'};return _0x4e9900;}})});}_0x205435=_[_0x0883('0x2a')]({},_0x205435,_0x146794[_0x0883('0x2c')]);var _0x35de32={'where':_0x205435[_0x0883('0x27')]};return db[_0x0883('0x16')][_0x0883('0xa')](_0x35de32)[_0x0883('0xf')](function(_0x43c7b3){_0x468c79[_0x0883('0xa')]=_0x43c7b3;if(_0x146794[_0x0883('0x1d')][_0x0883('0x2d')]){_0x205435[_0x0883('0x2e')]=[{'all':!![]}];}return db[_0x0883('0x16')][_0x0883('0x2f')](_0x205435);})[_0x0883('0xf')](function(_0x486740){_0x468c79[_0x0883('0x30')]=_0x486740;return _0x468c79;})['then'](respondWithFilteredResult(_0x473341,_0x205435))[_0x0883('0x31')](handleError(_0x473341,null));};exports[_0x0883('0x32')]=function(_0x1b6a91,_0x204b49){var _0x1f15cc={'raw':![],'where':{'id':_0x1b6a91[_0x0883('0x33')]['id']}},_0x41d2e0={};_0x41d2e0['model']=_[_0x0883('0x1e')](db[_0x0883('0x16')][_0x0883('0x17')]);_0x41d2e0['query']=_[_0x0883('0x1e')](_0x1b6a91['query']);_0x41d2e0[_0x0883('0x1f')]=_[_0x0883('0x20')](_0x41d2e0['model'],_0x41d2e0[_0x0883('0x1d')]);_0x1f15cc[_0x0883('0x21')]=_[_0x0883('0x20')](_0x41d2e0['model'],qs['fields'](_0x1b6a91[_0x0883('0x1d')][_0x0883('0x22')]));_0x1f15cc[_0x0883('0x21')]=_0x1f15cc[_0x0883('0x21')][_0x0883('0x34')]?_0x1f15cc[_0x0883('0x21')]:_0x41d2e0[_0x0883('0x1b')];if(_0x1b6a91[_0x0883('0x1d')]['includeAll']){_0x1f15cc[_0x0883('0x2e')]=[{'all':!![]}];}_0x1f15cc=_[_0x0883('0x2a')]({},_0x1f15cc,_0x1b6a91['options']);return db[_0x0883('0x16')][_0x0883('0x35')](_0x1f15cc)['then'](handleEntityNotFound(_0x204b49,null))['then'](respondWithResult(_0x204b49,null))['catch'](handleError(_0x204b49,null));};exports[_0x0883('0x36')]=function(_0x34bc19,_0x39d29d){return db[_0x0883('0x16')]['create'](_0x34bc19[_0x0883('0x37')],{})[_0x0883('0xf')](respondWithResult(_0x39d29d,0xc9))[_0x0883('0x31')](handleError(_0x39d29d,null));};exports['update']=function(_0x5160a5,_0x3cc1f3){if(_0x5160a5['body']['id']){delete _0x5160a5[_0x0883('0x37')]['id'];}return db[_0x0883('0x16')]['find']({'where':{'id':_0x5160a5[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x3cc1f3,null))[_0x0883('0xf')](saveUpdates(_0x5160a5['body'],null))[_0x0883('0xf')](respondWithResult(_0x3cc1f3,null))[_0x0883('0x31')](handleError(_0x3cc1f3,null));};exports[_0x0883('0xe')]=function(_0x6b5ddc,_0x405ba7){return db['Dynamics365Account']['find']({'where':{'id':_0x6b5ddc[_0x0883('0x33')]['id']}})['then'](handleEntityNotFound(_0x405ba7,null))[_0x0883('0xf')](removeEntity(_0x405ba7,null))[_0x0883('0x31')](handleError(_0x405ba7,null));};exports[_0x0883('0x38')]=function(_0x23cd0e,_0x2baef3){var _0xf551f3={};var _0x5f0200={};var _0x5d646d;var _0x339841;return db[_0x0883('0x16')][_0x0883('0x39')]({'where':{'id':_0x23cd0e[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x2baef3,null))[_0x0883('0xf')](function(_0x5e7cd9){if(_0x5e7cd9){_0x5d646d=_0x5e7cd9;_0x5f0200[_0x0883('0x1b')]=_[_0x0883('0x1e')](db['Dynamics365Configuration'][_0x0883('0x17')]);_0x5f0200['query']=_['keys'](_0x23cd0e[_0x0883('0x1d')]);_0x5f0200['filters']=_['intersection'](_0x5f0200[_0x0883('0x1b')],_0x5f0200['query']);_0xf551f3[_0x0883('0x21')]=_[_0x0883('0x20')](_0x5f0200[_0x0883('0x1b')],qs[_0x0883('0x22')](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x22')]));_0xf551f3['attributes']=_0xf551f3[_0x0883('0x21')]['length']?_0xf551f3['attributes']:_0x5f0200[_0x0883('0x1b')];_0xf551f3[_0x0883('0x25')]=qs[_0x0883('0x26')](_0x23cd0e['query'][_0x0883('0x26')]);_0xf551f3[_0x0883('0x27')]=qs['filters'](_[_0x0883('0x28')](_0x23cd0e[_0x0883('0x1d')],_0x5f0200[_0x0883('0x1f')]));if(_0x23cd0e[_0x0883('0x1d')][_0x0883('0x29')]){_0xf551f3[_0x0883('0x27')]=_[_0x0883('0x2a')](_0xf551f3[_0x0883('0x27')],{'$or':_['map'](_0xf551f3[_0x0883('0x21')],function(_0x13e096){var _0x425f83={};_0x425f83[_0x13e096]={'$like':'%'+_0x23cd0e['query']['filter']+'%'};return _0x425f83;})});}_0xf551f3=_[_0x0883('0x2a')]({},_0xf551f3,_0x23cd0e[_0x0883('0x2c')]);return _0x5d646d[_0x0883('0x38')](_0xf551f3);}})[_0x0883('0xf')](function(_0x510a39){if(_0x510a39){_0x339841=_0x510a39[_0x0883('0x34')];if(!_0x23cd0e[_0x0883('0x1d')][_0x0883('0x23')](_0x0883('0x24'))){_0xf551f3[_0x0883('0x9')]=qs['limit'](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x9')]);_0xf551f3['offset']=qs[_0x0883('0x7')](_0x23cd0e[_0x0883('0x1d')][_0x0883('0x7')]);}return _0x5d646d['getConfigurations'](_0xf551f3);}})[_0x0883('0xf')](function(_0x4bc02c){if(_0x4bc02c){return _0x4bc02c?{'count':_0x339841,'rows':_0x4bc02c}:null;}})[_0x0883('0xf')](respondWithResult(_0x2baef3,null))['catch'](handleError(_0x2baef3,null));};exports[_0x0883('0x3a')]=function(_0x18bba7,_0x1d3468){if(_0x18bba7[_0x0883('0x37')]['id']){delete _0x18bba7[_0x0883('0x37')]['id'];}return db[_0x0883('0x16')][_0x0883('0x39')]({'where':{'id':_0x18bba7[_0x0883('0x33')]['id']}})[_0x0883('0xf')](handleEntityNotFound(_0x1d3468,null))[_0x0883('0xf')](function(_0x352956){if(_0x352956){_0x18bba7['body'][_0x0883('0x3b')]=_0x352956['id'];_0x18bba7[_0x0883('0x37')][_0x0883('0x3c')]=integrations[_0x0883('0x3d')](_0x18bba7['body'][_0x0883('0x3e')],_0x18bba7[_0x0883('0x37')][_0x0883('0x19')]);_0x18bba7['body'][_0x0883('0x3f')]=integrations['getDescriptions'](_0x18bba7[_0x0883('0x37')][_0x0883('0x3e')],_0x18bba7[_0x0883('0x37')][_0x0883('0x19')]);return db[_0x0883('0x40')][_0x0883('0x36')](_0x18bba7[_0x0883('0x37')],{'include':[{'model':db[_0x0883('0x41')],'as':_0x0883('0x3c')},{'model':db[_0x0883('0x41')],'as':_0x0883('0x3f')}]});}return null;})[_0x0883('0xf')](respondWithResult(_0x1d3468,null))['catch'](handleError(_0x1d3468,null));};function sanitizeRemoteUri(_0x3e0acd){var _0x577f10=_0x3e0acd[_0x0883('0x42')](-0x1);if(_0x577f10==='/')return _0x3e0acd[_0x0883('0x43')](0x0,_0x3e0acd[_0x0883('0x44')](_0x577f10));return _0x3e0acd;}function getWebApiUrl(_0xd31eb1){return util[_0x0883('0x45')](_0x0883('0x46'),_0xd31eb1);}exports['getFields']=function(_0x4f0b25,_0x2f3b79){var _0x2d2fa8=_0x4f0b25[_0x0883('0x1d')]['ticketType'];var _0x1f3aae=_0x2d2fa8===_0x0883('0x47')?'Incident':'PhoneCall';var _0x304ebd='';var _0x12b35a='';var _0x48f617='';var _0xce7ffb='';var _0x266fe1='';var _0x369cff='';var _0x212f69='';var _0x215dfc='';var _0x3f7176=[_0x0883('0x48'),_0x0883('0x49'),_0x0883('0x4a'),'ownerid',_0x0883('0x4b'),_0x0883('0x4c'),'phonenumber',_0x0883('0x4d'),_0x0883('0x4e'),_0x0883('0x4f')];var _0x5b84c7=[_0x0883('0x50'),_0x0883('0x51'),_0x0883('0x52'),'billedserviceunits','contactidname',_0x0883('0x53'),_0x0883('0x54'),_0x0883('0x55'),'createdbyexternalpartyname','createdbyexternalpartyyominame',_0x0883('0x56'),'createdbyyominame',_0x0883('0x57'),'createdonbehalfbyname',_0x0883('0x58'),_0x0883('0x59'),'customeridtype',_0x0883('0x5a'),'emailaddress',_0x0883('0x5b'),_0x0883('0x5c'),_0x0883('0x5d'),'escalatedon','exchangerate','firstresponsebykpiidname',_0x0883('0x5e'),_0x0883('0x5f'),_0x0883('0x60'),_0x0883('0x61'),_0x0883('0x62'),'masteridname',_0x0883('0x63'),_0x0883('0x64'),_0x0883('0x65'),'modifiedbyyominame',_0x0883('0x66'),'modifiedonbehalfbyname',_0x0883('0x67'),_0x0883('0x68'),_0x0883('0x69'),_0x0883('0x6a'),_0x0883('0x6b'),'overriddencreatedon',_0x0883('0x6c'),'owneridtype',_0x0883('0x6d'),_0x0883('0x6e'),_0x0883('0x6f'),_0x0883('0x70'),_0x0883('0x71'),'productidname','productserialnumber',_0x0883('0x72'),_0x0883('0x73'),_0x0883('0x74'),'responsiblecontactidname',_0x0883('0x75'),_0x0883('0x76'),_0x0883('0x77'),'slaname',_0x0883('0x78'),'statecode',_0x0883('0x79'),_0x0883('0x7a'),_0x0883('0x7b'),_0x0883('0x7c'),'transactioncurrencyidname',_0x0883('0x7d'),_0x0883('0x7e'),_0x0883('0x7f')];var _0x3e4ed6=_0x3f7176['concat'](_0x5b84c7);return db['Dynamics365Account'][_0x0883('0x39')]({'where':{'id':_0x4f0b25[_0x0883('0x33')]['id']},'attributes':['id',_0x0883('0x80'),_0x0883('0x81'),'remoteUri',_0x0883('0x82'),_0x0883('0x83'),_0x0883('0x84'),_0x0883('0x85')],'include':[{'model':db[_0x0883('0x86')],'as':_0x0883('0x86'),'attributes':['id',_0x0883('0x87'),_0x0883('0x88')]}]})['then'](handleEntityNotFound(_0x2f3b79,null))[_0x0883('0xf')](function(_0x2d475a){if(_0x2d475a){if(_0x2d475a[_0x0883('0x85')]){_0x2d475a['access_token']=_0x2d475a[_0x0883('0x86')][_0x0883('0x87')];_0x215dfc=sanitizeRemoteUri(_0x2d475a['CloudProvider'][_0x0883('0x88')]);_0x212f69=getWebApiUrl(_0x215dfc);return _0x2d475a;}_0x215dfc=sanitizeRemoteUri(_0x2d475a['remoteUri']);_0x212f69=getWebApiUrl(_0x215dfc);var _0x1f83c1={'method':_0x0883('0x89'),'uri':'https://login.microsoftonline.com/'+_0x2d475a[_0x0883('0x82')]+_0x0883('0x8a'),'form':{'client_id':_0x2d475a[_0x0883('0x83')],'resource':_0x215dfc,'username':_0x2d475a[_0x0883('0x80')],'password':_0x2d475a[_0x0883('0x81')],'grant_type':'password','client_secret':_0x2d475a[_0x0883('0x84')]},'json':!![]};return rp(_0x1f83c1);}})['then'](function(_0x403eac){_0x369cff=_0x403eac['access_token'];var _0x43f8b6={'method':_0x0883('0x8b'),'uri':encodeURI(_0x212f69+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x1f3aae+'\x27'),'headers':{'Authorization':_0x0883('0x8c')+_0x369cff,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x43f8b6);})['then'](function(_0x51a9d4){var _0x211b1c=_0x51a9d4[_0x0883('0x8e')][0x0];var _0x5f4326=_0x211b1c[_0x0883('0x8f')];var _0x101f45={'method':_0x0883('0x8b'),'uri':_0x212f69+_0x0883('0x90')+_0x5f4326+_0x0883('0x91'),'headers':{'Authorization':_0x0883('0x8c')+_0x369cff,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x101f45);})[_0x0883('0xf')](function(_0x9c2894){_0x304ebd=_0x9c2894;_0x12b35a=_0x304ebd[_0x0883('0x92')];_0x12b35a=_['remove'](_0x12b35a,function(_0x18c04c){return!_0x3e4ed6[_0x0883('0x93')](_0x18c04c[_0x0883('0x94')]);});var _0x2998fa=[];var _0x518f75=[];_0x12b35a['forEach'](function(_0x513af3){if(_0x513af3[_0x0883('0x95')]){var _0x2d72ae=_0x513af3[_0x0883('0x95')][_0x0883('0x43')](_0x513af3[_0x0883('0x95')][_0x0883('0x44')]('.')+0x1);if(_0x2d72ae==='PicklistAttributeMetadata'){_0x2998fa[_0x0883('0x96')](getSelectList(_0x212f69,_0x2d2fa8,_0x518f75,_0x304ebd[_0x0883('0x8f')],_0x513af3[_0x0883('0x8f')],_0x369cff));}}});return Promise[_0x0883('0x97')](_0x2998fa);})[_0x0883('0xf')](function(_0x21b361){_0x48f617=_0x21b361[0x0];var _0x311bc4=[];var _0x3d7df0=[];_0x12b35a[_0x0883('0x98')](function(_0x9efcfb){if(!_[_0x0883('0x99')](_0x9efcfb[_0x0883('0x95')])){var _0x2c14f2=_0x9efcfb['@odata.type'][_0x0883('0x43')](_0x9efcfb[_0x0883('0x95')][_0x0883('0x44')]('.')+0x1);if(_0x2c14f2==='BooleanAttributeMetadata'){_0x311bc4[_0x0883('0x96')](getBooleanList(_0x212f69,_0x2d2fa8,_0x3d7df0,_0x304ebd[_0x0883('0x8f')],_0x9efcfb[_0x0883('0x8f')],_0x369cff));}}});return Promise['all'](_0x311bc4);})['then'](function(_0x44c405){_0xce7ffb=_0x44c405[0x0];var _0x5302a0=[];var _0xf07fac=[];_0x12b35a[_0x0883('0x98')](function(_0x56fd1e){if(_0x56fd1e[_0x0883('0x95')]){var _0x190a1f=_0x56fd1e['@odata.type'][_0x0883('0x43')](_0x56fd1e[_0x0883('0x95')]['lastIndexOf']('.')+0x1);if(_0x190a1f==='StringAttributeMetadata'||_0x190a1f==='DoubleAttributeMetadata'||_0x190a1f===_0x0883('0x9a')||_0x190a1f===_0x0883('0x9b')||_0x190a1f===_0x0883('0x9c')||_0x190a1f==='DateTimeAttributeMetadata'||_0x190a1f==='StatusAttributeMetadata'||_0x190a1f===_0x0883('0x9d')||_0x190a1f===_0x0883('0x9e')||_0x190a1f===_0x0883('0x9f')){_0x5302a0['push'](getInputList(_0x212f69,_0x2d2fa8,_0x190a1f,_0xf07fac,_0x304ebd[_0x0883('0x8f')],_0x56fd1e[_0x0883('0x8f')],_0x369cff));}}});return Promise[_0x0883('0x97')](_0x5302a0);})[_0x0883('0xf')](function(_0x5e7b6b){_0x266fe1=_0x5e7b6b[0x0];var _0x69a2ef=_0x48f617[_0x0883('0xa0')](_0xce7ffb)[_0x0883('0xa0')](_0x266fe1);var _0x155ac6={'count':_0x69a2ef[_0x0883('0x34')],'rows':_0x69a2ef};return _0x155ac6;})[_0x0883('0xf')](respondWithResult(_0x2f3b79,null))[_0x0883('0x31')](function(_0x2b9637){var _0x46a4a5=_0x4f0b25[_0x0883('0x1d')][_0x0883('0xa1')]?0x1f4:_0x2b9637['statusCode']||0x1f4;logger[_0x0883('0x12')](_0x2b9637[_0x0883('0x13')]);delete _0x2b9637[_0x0883('0x14')];if(_0x46a4a5===0x191){_0x46a4a5=0x190;}_0x2f3b79[_0x0883('0xb')](_0x46a4a5)['send'](_0x4f0b25['query']['test']?{'message':_0x0883('0xa2'),'statusCode':_0x2b9637[_0x0883('0xa3')]}:_0x2b9637);});};function getSelectList(_0x4e226a,_0x5c71f4,_0x4d6162,_0x1f9e80,_0x4756ed,_0x3dce8b){var _0x1ac76e={'method':_0x0883('0x8b'),'uri':_0x4e226a+_0x0883('0x90')+_0x1f9e80+_0x0883('0xa4')+_0x4756ed+_0x0883('0xa5')+'$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','headers':{'Authorization':_0x0883('0x8c')+_0x3dce8b,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x1ac76e)[_0x0883('0xf')](function(_0x526e4b){var _0x2112fe=[];var _0x1d455f=_0x526e4b['OptionSet'][_0x0883('0xa6')];_0x1d455f[_0x0883('0x98')](function(_0x264404){_0x2112fe[_0x0883('0x96')]({'name':_0x264404[_0x0883('0xa7')][_0x0883('0xa8')]['Label'],'value':String(_0x264404['Value'])});});var _0x242147={'id':_0x5c71f4+'_'+_0x526e4b[_0x0883('0x94')],'name':_0x526e4b[_0x0883('0xa9')][_0x0883('0xa8')][_0x0883('0xa7')],'custom':![],'options':_0x2112fe};_0x4d6162[_0x0883('0x96')](_0x242147);return _0x4d6162;});}function getBooleanList(_0x384aab,_0x40be35,_0x141202,_0x146bcf,_0x4d8a93,_0x5b04fc){var _0x576cba={'method':'GET','uri':_0x384aab+_0x0883('0x90')+_0x146bcf+_0x0883('0xa4')+_0x4d8a93+_0x0883('0xaa'),'headers':{'Authorization':_0x0883('0x8c')+_0x5b04fc,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x576cba)[_0x0883('0xf')](function(_0x275004){var _0x1f7bf0=[];_0x1f7bf0['push']({'name':_0x275004[_0x0883('0xab')][_0x0883('0xac')][_0x0883('0xa7')][_0x0883('0xa8')][_0x0883('0xa7')],'value':_0x0883('0xad')},{'name':_0x275004['OptionSet'][_0x0883('0xae')][_0x0883('0xa7')][_0x0883('0xa8')][_0x0883('0xa7')],'value':_0x0883('0xaf')});var _0x47e6ce={'id':_0x40be35+'_'+_0x275004[_0x0883('0x94')],'name':_0x275004[_0x0883('0xa9')][_0x0883('0xa8')][_0x0883('0xa7')],'custom':![],'options':_0x1f7bf0};_0x141202[_0x0883('0x96')](_0x47e6ce);return _0x141202;});}function getInputList(_0xd69705,_0x21b396,_0x30a068,_0x176277,_0x3a960d,_0x5d3a84,_0x759803){var _0x4f22ec={'method':'GET','uri':_0xd69705+_0x0883('0x90')+_0x3a960d+')/Attributes('+_0x5d3a84+_0x0883('0xb0')+_0x30a068+_0x0883('0xb1'),'headers':{'Authorization':_0x0883('0x8c')+_0x759803,'If-None-Match':null,'OData-Version':_0x0883('0x8d')},'json':!![]};return rp(_0x4f22ec)['then'](function(_0x35b7a1){var _0x47c9dd={'id':_0x21b396+'_'+_0x35b7a1['LogicalName'],'name':_0x35b7a1[_0x0883('0xa9')][_0x0883('0xa8')]?_0x35b7a1[_0x0883('0xa9')]['UserLocalizedLabel']['Label']:_0x35b7a1['LogicalName'],'custom':![],'options':[]};_0x176277['push'](_0x47c9dd);return _0x176277;});}
\ No newline at end of file
index f239ab0..ba5476f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['Dynamics365Account','int_dynamics365_accounts','util','../../config/logger','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0x48d4e9,_0x3e9c90){var _0x3b6dff=function(_0x3dd492){while(--_0x3dd492){_0x48d4e9['push'](_0x48d4e9['shift']());}};_0x3b6dff(++_0x3e9c90);}(_0x757a,0xde));var _0xa757=function(_0x1f2842,_0x5418f3){_0x1f2842=_0x1f2842-0x0;var _0x2a939f=_0x757a[_0x1f2842];return _0x2a939f;};'use strict';var _=require('lodash');var util=require(_0xa757('0x0'));var logger=require(_0xa757('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa757('0x2'));var fs=require('fs');var path=require(_0xa757('0x3'));var rimraf=require(_0xa757('0x4'));var config=require(_0xa757('0x5'));var attributes=require(_0xa757('0x6'));var integrations=require(_0xa757('0x7'));module['exports']=function(_0xae0e7c,_0x4343b6){return _0xae0e7c['define'](_0xa757('0x8'),attributes,{'tableName':_0xa757('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));var integrations=require(_0x3071('0x8'));module[_0x3071('0x9')]=function(_0x41cf76,_0x1d3dd6){return _0x41cf76[_0x3071('0xa')](_0x3071('0xb'),attributes,{'tableName':_0x3071('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2d4dc87..7e488e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb538=['options','raw','where','attributes','limit','map','include','model','GetDynamics365Account','debug','ShowDynamics365Account','find','lodash','util','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','info','stringify','error','code','Dynamics365Account,\x20%s,\x20%s','message','request\x20sent','result','catch','Dynamics365Account','findAll'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xb538,0x1da));var _0x8b53=function(_0x4e060d,_0x12265e){_0x4e060d=_0x4e060d-0x0;var _0x563fc6=_0xb538[_0x4e060d];return _0x563fc6;};'use strict';var _=require(_0x8b53('0x0'));var util=require(_0x8b53('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8b53('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8b53('0x3'));var logger=require('../../config/logger')(_0x8b53('0x4'));var config=require(_0x8b53('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8b53('0x6')][_0x8b53('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a7ccc,_0x26784a,_0x42cb6e){return new BPromise(function(_0x1b8ea1,_0x1201d8){return client[_0x8b53('0x8')](_0x1a7ccc,_0x42cb6e)[_0x8b53('0x9')](function(_0x593e66){logger[_0x8b53('0xa')]('Dynamics365Account,\x20%s,\x20%s',_0x26784a,'request\x20sent');logger['debug']('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x26784a,'request\x20sent',JSON[_0x8b53('0xb')](_0x593e66));if(_0x593e66[_0x8b53('0xc')]){if(_0x593e66[_0x8b53('0xc')][_0x8b53('0xd')]===0x1f4){logger[_0x8b53('0xc')](_0x8b53('0xe'),_0x26784a,_0x593e66[_0x8b53('0xc')][_0x8b53('0xf')]);return _0x1201d8(_0x593e66[_0x8b53('0xc')][_0x8b53('0xf')]);}logger['error'](_0x8b53('0xe'),_0x26784a,_0x593e66[_0x8b53('0xc')][_0x8b53('0xf')]);return _0x1b8ea1(_0x593e66[_0x8b53('0xc')][_0x8b53('0xf')]);}else{logger['info'](_0x8b53('0xe'),_0x26784a,_0x8b53('0x10'));_0x1b8ea1(_0x593e66[_0x8b53('0x11')][_0x8b53('0xf')]);}})[_0x8b53('0x12')](function(_0x312fbb){logger[_0x8b53('0xc')](_0x8b53('0xe'),_0x26784a,_0x312fbb);_0x1201d8(_0x312fbb);});});}exports['GetDynamics365Account']=function(_0x40841f){var _0x44fd11=this;return new Promise(function(_0x1fd5b8,_0x1e6e6b){return db[_0x8b53('0x13')][_0x8b53('0x14')]({'raw':_0x40841f[_0x8b53('0x15')]?_0x40841f['options'][_0x8b53('0x16')]===undefined?!![]:![]:!![],'where':_0x40841f[_0x8b53('0x15')]?_0x40841f[_0x8b53('0x15')][_0x8b53('0x17')]||null:null,'attributes':_0x40841f[_0x8b53('0x15')]?_0x40841f[_0x8b53('0x15')][_0x8b53('0x18')]||null:null,'limit':_0x40841f['options']?_0x40841f[_0x8b53('0x15')][_0x8b53('0x19')]||null:null,'include':_0x40841f[_0x8b53('0x15')]?_0x40841f[_0x8b53('0x15')]['include']?_[_0x8b53('0x1a')](_0x40841f[_0x8b53('0x15')]['include'],function(_0x15494d){return{'model':db[_0x15494d['model']],'as':_0x15494d['as'],'attributes':_0x15494d[_0x8b53('0x18')],'include':_0x15494d['include']?_[_0x8b53('0x1a')](_0x15494d[_0x8b53('0x1b')],function(_0x5125b5){return{'model':db[_0x5125b5[_0x8b53('0x1c')]],'as':_0x5125b5['as'],'attributes':_0x5125b5[_0x8b53('0x18')],'include':_0x5125b5[_0x8b53('0x1b')]?_[_0x8b53('0x1a')](_0x5125b5['include'],function(_0x5900b3){return{'model':db[_0x5900b3[_0x8b53('0x1c')]],'as':_0x5900b3['as'],'attributes':_0x5900b3[_0x8b53('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8b53('0x9')](function(_0x5739b3){logger['info'](_0x8b53('0x1d'),_0x40841f);logger[_0x8b53('0x1e')](_0x8b53('0x1d'),_0x40841f,JSON[_0x8b53('0xb')](_0x5739b3));_0x1fd5b8(_0x5739b3);})[_0x8b53('0x12')](function(_0x26cb3c){logger[_0x8b53('0xc')](_0x8b53('0x1d'),_0x26cb3c['message'],_0x40841f);_0x1e6e6b(_0x44fd11['error'](0x1f4,_0x26cb3c[_0x8b53('0xf')]));});});};exports[_0x8b53('0x1f')]=function(_0xd97493){var _0x486940=this;return new Promise(function(_0x9859c4,_0x1bd478){return db['Dynamics365Account'][_0x8b53('0x20')]({'raw':_0xd97493[_0x8b53('0x15')]?_0xd97493[_0x8b53('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0xd97493[_0x8b53('0x15')]?_0xd97493['options'][_0x8b53('0x17')]||null:null,'attributes':_0xd97493[_0x8b53('0x15')]?_0xd97493[_0x8b53('0x15')]['attributes']||null:null,'include':_0xd97493[_0x8b53('0x15')]?_0xd97493['options']['include']?_[_0x8b53('0x1a')](_0xd97493[_0x8b53('0x15')][_0x8b53('0x1b')],function(_0x5677b1){return{'model':db[_0x5677b1['model']],'as':_0x5677b1['as'],'attributes':_0x5677b1[_0x8b53('0x18')],'include':_0x5677b1[_0x8b53('0x1b')]?_[_0x8b53('0x1a')](_0x5677b1[_0x8b53('0x1b')],function(_0x623a02){return{'model':db[_0x623a02['model']],'as':_0x623a02['as'],'attributes':_0x623a02[_0x8b53('0x18')],'include':_0x623a02[_0x8b53('0x1b')]?_['map'](_0x623a02['include'],function(_0x52df4b){return{'model':db[_0x52df4b[_0x8b53('0x1c')]],'as':_0x52df4b['as'],'attributes':_0x52df4b[_0x8b53('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8b53('0x9')](function(_0x403bc4){logger['info'](_0x8b53('0x1f'),_0xd97493);logger[_0x8b53('0x1e')](_0x8b53('0x1f'),_0xd97493,JSON[_0x8b53('0xb')](_0x403bc4));_0x9859c4(_0x403bc4);})[_0x8b53('0x12')](function(_0x23ca88){logger[_0x8b53('0xc')]('ShowDynamics365Account',_0x23ca88['message'],_0xd97493);_0x1bd478(_0x486940['error'](0x1f4,_0x23ca88[_0x8b53('0xf')]));});});};
\ No newline at end of file
+var _0x5168=['ShowDynamics365Account','raw','where','catch','moment','randomstring','ioredis','../../config/utils','rpc','jayson/promise','client','http','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result','GetDynamics365Account','Dynamics365Account','findAll','options','attributes','limit','map','include','model','stringify'];(function(_0x157e72,_0x970f93){var _0x39afff=function(_0x133a9b){while(--_0x133a9b){_0x157e72['push'](_0x157e72['shift']());}};_0x39afff(++_0x970f93);}(_0x5168,0x1c4));var _0x8516=function(_0x4edf43,_0x44cbc0){_0x4edf43=_0x4edf43-0x0;var _0x2e9f98=_0x5168[_0x4edf43];return _0x2e9f98;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8516('0x0'));var BPromise=require('bluebird');var rs=require(_0x8516('0x1'));var fs=require('fs');var Redis=require(_0x8516('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8516('0x3'));var logger=require('../../config/logger')(_0x8516('0x4'));var config=require('../../config/environment');var jayson=require(_0x8516('0x5'));var client=jayson[_0x8516('0x6')][_0x8516('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x14e403,_0x5a4f76,_0x2e12a4){return new BPromise(function(_0x5160f3,_0x6ea2c1){return client['request'](_0x14e403,_0x2e12a4)[_0x8516('0x8')](function(_0x41ca69){logger[_0x8516('0x9')](_0x8516('0xa'),_0x5a4f76,_0x8516('0xb'));logger[_0x8516('0xc')](_0x8516('0xd'),_0x5a4f76,_0x8516('0xb'),JSON['stringify'](_0x41ca69));if(_0x41ca69[_0x8516('0xe')]){if(_0x41ca69[_0x8516('0xe')][_0x8516('0xf')]===0x1f4){logger[_0x8516('0xe')](_0x8516('0xa'),_0x5a4f76,_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);return _0x6ea2c1(_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);}logger['error'](_0x8516('0xa'),_0x5a4f76,_0x41ca69['error'][_0x8516('0x10')]);return _0x5160f3(_0x41ca69[_0x8516('0xe')][_0x8516('0x10')]);}else{logger['info'](_0x8516('0xa'),_0x5a4f76,'request\x20sent');_0x5160f3(_0x41ca69[_0x8516('0x11')][_0x8516('0x10')]);}})['catch'](function(_0x4227b9){logger[_0x8516('0xe')]('Dynamics365Account,\x20%s,\x20%s',_0x5a4f76,_0x4227b9);_0x6ea2c1(_0x4227b9);});});}exports[_0x8516('0x12')]=function(_0x51f138){var _0x128d8e=this;return new Promise(function(_0x3b8c24,_0x9a649d){return db[_0x8516('0x13')][_0x8516('0x14')]({'raw':_0x51f138[_0x8516('0x15')]?_0x51f138['options']['raw']===undefined?!![]:![]:!![],'where':_0x51f138['options']?_0x51f138[_0x8516('0x15')]['where']||null:null,'attributes':_0x51f138[_0x8516('0x15')]?_0x51f138[_0x8516('0x15')][_0x8516('0x16')]||null:null,'limit':_0x51f138[_0x8516('0x15')]?_0x51f138[_0x8516('0x15')][_0x8516('0x17')]||null:null,'include':_0x51f138['options']?_0x51f138[_0x8516('0x15')]['include']?_[_0x8516('0x18')](_0x51f138[_0x8516('0x15')][_0x8516('0x19')],function(_0x1f0df4){return{'model':db[_0x1f0df4[_0x8516('0x1a')]],'as':_0x1f0df4['as'],'attributes':_0x1f0df4[_0x8516('0x16')],'include':_0x1f0df4[_0x8516('0x19')]?_['map'](_0x1f0df4[_0x8516('0x19')],function(_0x144e65){return{'model':db[_0x144e65[_0x8516('0x1a')]],'as':_0x144e65['as'],'attributes':_0x144e65[_0x8516('0x16')],'include':_0x144e65[_0x8516('0x19')]?_[_0x8516('0x18')](_0x144e65[_0x8516('0x19')],function(_0x58a8cc){return{'model':db[_0x58a8cc[_0x8516('0x1a')]],'as':_0x58a8cc['as'],'attributes':_0x58a8cc['attributes']};}):[]};}):[]};}):[]:[]})[_0x8516('0x8')](function(_0x52c966){logger[_0x8516('0x9')](_0x8516('0x12'),_0x51f138);logger[_0x8516('0xc')](_0x8516('0x12'),_0x51f138,JSON[_0x8516('0x1b')](_0x52c966));_0x3b8c24(_0x52c966);})['catch'](function(_0x193bba){logger[_0x8516('0xe')](_0x8516('0x12'),_0x193bba[_0x8516('0x10')],_0x51f138);_0x9a649d(_0x128d8e['error'](0x1f4,_0x193bba[_0x8516('0x10')]));});});};exports[_0x8516('0x1c')]=function(_0x30207b){var _0x2c71da=this;return new Promise(function(_0x387825,_0x5392b6){return db['Dynamics365Account']['find']({'raw':_0x30207b[_0x8516('0x15')]?_0x30207b[_0x8516('0x15')][_0x8516('0x1d')]===undefined?!![]:![]:!![],'where':_0x30207b[_0x8516('0x15')]?_0x30207b[_0x8516('0x15')][_0x8516('0x1e')]||null:null,'attributes':_0x30207b['options']?_0x30207b[_0x8516('0x15')][_0x8516('0x16')]||null:null,'include':_0x30207b['options']?_0x30207b['options'][_0x8516('0x19')]?_[_0x8516('0x18')](_0x30207b[_0x8516('0x15')][_0x8516('0x19')],function(_0x5ad945){return{'model':db[_0x5ad945[_0x8516('0x1a')]],'as':_0x5ad945['as'],'attributes':_0x5ad945[_0x8516('0x16')],'include':_0x5ad945['include']?_[_0x8516('0x18')](_0x5ad945['include'],function(_0x4b9a0c){return{'model':db[_0x4b9a0c[_0x8516('0x1a')]],'as':_0x4b9a0c['as'],'attributes':_0x4b9a0c[_0x8516('0x16')],'include':_0x4b9a0c[_0x8516('0x19')]?_['map'](_0x4b9a0c[_0x8516('0x19')],function(_0x336af9){return{'model':db[_0x336af9['model']],'as':_0x336af9['as'],'attributes':_0x336af9[_0x8516('0x16')]};}):[]};}):[]};}):[]:[]})[_0x8516('0x8')](function(_0x1262f9){logger[_0x8516('0x9')]('ShowDynamics365Account',_0x30207b);logger['debug']('ShowDynamics365Account',_0x30207b,JSON[_0x8516('0x1b')](_0x1262f9));_0x387825(_0x1262f9);})[_0x8516('0x1f')](function(_0x41062a){logger[_0x8516('0xe')](_0x8516('0x1c'),_0x41062a[_0x8516('0x10')],_0x30207b);_0x5392b6(_0x2c71da[_0x8516('0xe')](0x1f4,_0x41062a[_0x8516('0x10')]));});});};
\ No newline at end of file
index d4e14c2..4f3c76c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75ea=['show','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','update','delete','destroy','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','isAuthenticated','index','get','/:id'];(function(_0x5b0766,_0x1cc5e1){var _0x52c5e7=function(_0xb155fc){while(--_0xb155fc){_0x5b0766['push'](_0x5b0766['shift']());}};_0x52c5e7(++_0x1cc5e1);}(_0x75ea,0x7d));var _0xa75e=function(_0x3471e6,_0x3511c0){_0x3471e6=_0x3471e6-0x0;var _0xe1066f=_0x75ea[_0x3471e6];return _0xe1066f;};'use strict';var multer=require(_0xa75e('0x0'));var util=require(_0xa75e('0x1'));var path=require('path');var timeout=require(_0xa75e('0x2'));var express=require(_0xa75e('0x3'));var router=express['Router']();var fs_extra=require(_0xa75e('0x4'));var auth=require(_0xa75e('0x5'));var interaction=require(_0xa75e('0x6'));var config=require(_0xa75e('0x7'));var controller=require(_0xa75e('0x8'));router['get']('/',auth[_0xa75e('0x9')](),controller[_0xa75e('0xa')]);router[_0xa75e('0xb')](_0xa75e('0xc'),auth[_0xa75e('0x9')](),controller[_0xa75e('0xd')]);router[_0xa75e('0xb')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router['get'](_0xa75e('0xe'),auth['isAuthenticated'](),controller[_0xa75e('0xf')]);router['get'](_0xa75e('0x10'),auth[_0xa75e('0x9')](),controller['getDescriptions']);router[_0xa75e('0x11')]('/',auth[_0xa75e('0x9')](),controller[_0xa75e('0x12')]);router[_0xa75e('0x13')](_0xa75e('0xc'),auth[_0xa75e('0x9')](),controller[_0xa75e('0x14')]);router[_0xa75e('0x15')](_0xa75e('0xc'),auth['isAuthenticated'](),controller[_0xa75e('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x1fda=['destroy','exports','multer','util','express','fs-extra','../../components/auth/service','../../config/environment','./intDynamics365Configuration.controller','get','isAuthenticated','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','put','/:id','update'];(function(_0x2692fd,_0x42a642){var _0x3d01e2=function(_0x522c67){while(--_0x522c67){_0x2692fd['push'](_0x2692fd['shift']());}};_0x3d01e2(++_0x42a642);}(_0x1fda,0x74));var _0xa1fd=function(_0x40646e,_0x2b7664){_0x40646e=_0x40646e-0x0;var _0x5911a0=_0x1fda[_0x40646e];return _0x5911a0;};'use strict';var multer=require(_0xa1fd('0x0'));var util=require(_0xa1fd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xa1fd('0x2'));var router=express['Router']();var fs_extra=require(_0xa1fd('0x3'));var auth=require(_0xa1fd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa1fd('0x5'));var controller=require(_0xa1fd('0x6'));router[_0xa1fd('0x7')]('/',auth[_0xa1fd('0x8')](),controller['index']);router[_0xa1fd('0x7')]('/:id',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0x9')]);router[_0xa1fd('0x7')](_0xa1fd('0xa'),auth['isAuthenticated'](),controller['getFields']);router['get']('/:id/subjects',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0xb')]);router['get'](_0xa1fd('0xc'),auth[_0xa1fd('0x8')](),controller[_0xa1fd('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xa1fd('0xe')](_0xa1fd('0xf'),auth['isAuthenticated'](),controller[_0xa1fd('0x10')]);router['delete']('/:id',auth[_0xa1fd('0x8')](),controller[_0xa1fd('0x11')]);module[_0xa1fd('0x12')]=router;
\ No newline at end of file
index 22f36c3..7e6be88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8251=['BOOLEAN','exports','STRING','ENUM','phonecall','incident'];(function(_0x546aaf,_0x1ed138){var _0x1cbf6d=function(_0x36c837){while(--_0x36c837){_0x546aaf['push'](_0x546aaf['shift']());}};_0x1cbf6d(++_0x1ed138);}(_0x8251,0x9d));var _0x1825=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x8251[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0x1825('0x0')]={'name':{'type':Sequelize[_0x1825('0x1')]},'description':{'type':Sequelize[_0x1825('0x1')]},'ticketType':{'type':Sequelize[_0x1825('0x2')]('incident',_0x1825('0x3')),'defaultValue':_0x1825('0x4')},'moduleCreate':{'type':Sequelize[_0x1825('0x2')]('contact','nothing'),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0x1825('0x1')],'allowNull':!![]},'openNewTab':{'type':Sequelize[_0x1825('0x5')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9a3a=['sequelize','STRING','ENUM','incident','contact','nothing'];(function(_0x1b2ec9,_0x4c215e){var _0x5d5771=function(_0x379683){while(--_0x379683){_0x1b2ec9['push'](_0x1b2ec9['shift']());}};_0x5d5771(++_0x4c215e);}(_0x9a3a,0x19e));var _0xa9a3=function(_0x362f3b,_0x922e47){_0x362f3b=_0x362f3b-0x0;var _0xb27236=_0x9a3a[_0x362f3b];return _0xb27236;};'use strict';var Sequelize=require(_0xa9a3('0x0'));module['exports']={'name':{'type':Sequelize[_0xa9a3('0x1')]},'description':{'type':Sequelize[_0xa9a3('0x1')]},'ticketType':{'type':Sequelize[_0xa9a3('0x2')](_0xa9a3('0x3'),'phonecall'),'defaultValue':_0xa9a3('0x3')},'moduleCreate':{'type':Sequelize[_0xa9a3('0x2')](_0xa9a3('0x4'),_0xa9a3('0x5')),'defaultValue':'contact','allowNull':![]},'additionalSearchContact':{'type':Sequelize['STRING'],'allowNull':!![]},'openNewTab':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index a50774f..4dcec80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc7b=['getFields','findOne','Dynamics365Field','hasOwnProperty','getSubjects','getDescriptions','pick','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','Dynamics365Configuration','model','map','name','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','options','include','rows','catch','params','rawAttributes','includeAll','find','create','body'];(function(_0x3218fd,_0x174164){var _0x5dd1e6=function(_0x3b4700){while(--_0x3b4700){_0x3218fd['push'](_0x3218fd['shift']());}};_0x5dd1e6(++_0x174164);}(_0xfc7b,0x1f1));var _0xbfc7=function(_0x3531d0,_0x2d7fa6){_0x3531d0=_0x3531d0-0x0;var _0x5edec8=_0xfc7b[_0x3531d0];return _0x5edec8;};'use strict';var emlformat=require(_0xbfc7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbfc7('0x1'));var jsonpatch=require(_0xbfc7('0x2'));var rp=require(_0xbfc7('0x3'));var moment=require(_0xbfc7('0x4'));var BPromise=require(_0xbfc7('0x5'));var Mustache=require(_0xbfc7('0x6'));var util=require(_0xbfc7('0x7'));var path=require('path');var sox=require(_0xbfc7('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbfc7('0x9'));var toCsv=require(_0xbfc7('0xa'));var querystring=require(_0xbfc7('0xb'));var Papa=require('papaparse');var Redis=require(_0xbfc7('0xc'));var authService=require(_0xbfc7('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0xbfc7('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfc7('0xf'))('api');var utils=require(_0xbfc7('0x10'));var config=require(_0xbfc7('0x11'));var licenseUtil=require(_0xbfc7('0x12'));var db=require(_0xbfc7('0x13'))['db'];function respondWithStatusCode(_0x26c95c,_0xe96b7b){_0xe96b7b=_0xe96b7b||0xcc;return function(_0x443e09){if(_0x443e09){return _0x26c95c['sendStatus'](_0xe96b7b);}return _0x26c95c[_0xbfc7('0x14')](_0xe96b7b)[_0xbfc7('0x15')]();};}function respondWithResult(_0x1565ba,_0x4665b8){_0x4665b8=_0x4665b8||0xc8;return function(_0x43148b){if(_0x43148b){return _0x1565ba[_0xbfc7('0x14')](_0x4665b8)[_0xbfc7('0x16')](_0x43148b);}};}function respondWithFilteredResult(_0x14efd4,_0x128f0f){return function(_0x232234){if(_0x232234){var _0x4b6252=typeof _0x128f0f[_0xbfc7('0x17')]===_0xbfc7('0x18')&&typeof _0x128f0f[_0xbfc7('0x19')]===_0xbfc7('0x18');var _0x4897e6=_0x232234['count'];var _0x1a6c90=_0x4b6252?0x0:_0x128f0f[_0xbfc7('0x17')];var _0x5a864d=_0x4b6252?_0x232234[_0xbfc7('0x1a')]:_0x128f0f[_0xbfc7('0x17')]+_0x128f0f[_0xbfc7('0x19')];var _0x4a851f;if(_0x5a864d>=_0x4897e6){_0x5a864d=_0x4897e6;_0x4a851f=0xc8;}else{_0x4a851f=0xce;}_0x14efd4[_0xbfc7('0x14')](_0x4a851f);return _0x14efd4[_0xbfc7('0x1b')](_0xbfc7('0x1c'),_0x1a6c90+'-'+_0x5a864d+'/'+_0x4897e6)[_0xbfc7('0x16')](_0x232234);}return null;};}function patchUpdates(_0x5397f2){return function(_0x3201d7){try{jsonpatch[_0xbfc7('0x1d')](_0x3201d7,_0x5397f2,!![]);}catch(_0x4eefd5){return BPromise[_0xbfc7('0x1e')](_0x4eefd5);}return _0x3201d7['save']();};}function saveUpdates(_0x1ba060,_0x56dce7){return function(_0x4d69b4){if(_0x4d69b4){return _0x4d69b4[_0xbfc7('0x1f')](_0x1ba060)[_0xbfc7('0x20')](function(_0x270dfa){return _0x270dfa;});}return null;};}function removeEntity(_0x2773aa,_0x4c957e){return function(_0x862bb){if(_0x862bb){return _0x862bb[_0xbfc7('0x21')]()['then'](function(){_0x2773aa['status'](0xcc)[_0xbfc7('0x15')]();});}};}function handleEntityNotFound(_0xf71ff0,_0x5d683c){return function(_0x5219ff){if(!_0x5219ff){_0xf71ff0['sendStatus'](0x194);}return _0x5219ff;};}function handleError(_0x1caf38,_0x2434df){_0x2434df=_0x2434df||0x1f4;return function(_0x1be031){logger['error'](_0x1be031[_0xbfc7('0x22')]);if(_0x1be031['name']){delete _0x1be031['name'];}_0x1caf38[_0xbfc7('0x14')](_0x2434df)['send'](_0x1be031);};}exports['index']=function(_0x480760,_0x469019){var _0x206c18={},_0x53c9e7={},_0x3304b3={'count':0x0,'rows':[]};var _0x577ed0=_['map'](db[_0xbfc7('0x23')]['rawAttributes'],function(_0x275178){return{'name':_0x275178['fieldName'],'type':_0x275178['type']['key']};});_0x53c9e7[_0xbfc7('0x24')]=_[_0xbfc7('0x25')](_0x577ed0,_0xbfc7('0x26'));_0x53c9e7[_0xbfc7('0x27')]=_[_0xbfc7('0x28')](_0x480760[_0xbfc7('0x27')]);_0x53c9e7[_0xbfc7('0x29')]=_[_0xbfc7('0x2a')](_0x53c9e7['model'],_0x53c9e7[_0xbfc7('0x27')]);_0x206c18[_0xbfc7('0x2b')]=_['intersection'](_0x53c9e7['model'],qs['fields'](_0x480760[_0xbfc7('0x27')][_0xbfc7('0x2c')]));_0x206c18[_0xbfc7('0x2b')]=_0x206c18['attributes'][_0xbfc7('0x2d')]?_0x206c18[_0xbfc7('0x2b')]:_0x53c9e7[_0xbfc7('0x24')];if(!_0x480760[_0xbfc7('0x27')]['hasOwnProperty'](_0xbfc7('0x2e'))){_0x206c18[_0xbfc7('0x19')]=qs[_0xbfc7('0x19')](_0x480760[_0xbfc7('0x27')]['limit']);_0x206c18[_0xbfc7('0x17')]=qs[_0xbfc7('0x17')](_0x480760[_0xbfc7('0x27')]['offset']);}_0x206c18[_0xbfc7('0x2f')]=qs[_0xbfc7('0x30')](_0x480760[_0xbfc7('0x27')]['sort']);_0x206c18[_0xbfc7('0x31')]=qs['filters'](_['pick'](_0x480760['query'],_0x53c9e7[_0xbfc7('0x29')]),_0x577ed0);if(_0x480760['query'][_0xbfc7('0x32')]){_0x206c18[_0xbfc7('0x31')]=_[_0xbfc7('0x33')](_0x206c18[_0xbfc7('0x31')],{'$or':_[_0xbfc7('0x25')](_0x577ed0,function(_0x272c9a){if(_0x272c9a['type']!==_0xbfc7('0x34')){var _0x3035b4={};_0x3035b4[_0x272c9a[_0xbfc7('0x26')]]={'$like':'%'+_0x480760['query'][_0xbfc7('0x32')]+'%'};return _0x3035b4;}})});}_0x206c18=_[_0xbfc7('0x33')]({},_0x206c18,_0x480760[_0xbfc7('0x35')]);var _0x31836c={'where':_0x206c18[_0xbfc7('0x31')]};return db[_0xbfc7('0x23')]['count'](_0x31836c)[_0xbfc7('0x20')](function(_0x322bf1){_0x3304b3['count']=_0x322bf1;if(_0x480760['query']['includeAll']){_0x206c18[_0xbfc7('0x36')]=[{'all':!![]}];}return db[_0xbfc7('0x23')]['findAll'](_0x206c18);})[_0xbfc7('0x20')](function(_0x48c9ca){_0x3304b3[_0xbfc7('0x37')]=_0x48c9ca;return _0x3304b3;})[_0xbfc7('0x20')](respondWithFilteredResult(_0x469019,_0x206c18))[_0xbfc7('0x38')](handleError(_0x469019,null));};exports['show']=function(_0x363720,_0xe2ded2){var _0x1253fa={'raw':![],'where':{'id':_0x363720[_0xbfc7('0x39')]['id']}},_0x315f49={};_0x315f49['model']=_[_0xbfc7('0x28')](db[_0xbfc7('0x23')][_0xbfc7('0x3a')]);_0x315f49[_0xbfc7('0x27')]=_[_0xbfc7('0x28')](_0x363720[_0xbfc7('0x27')]);_0x315f49['filters']=_[_0xbfc7('0x2a')](_0x315f49[_0xbfc7('0x24')],_0x315f49['query']);_0x1253fa[_0xbfc7('0x2b')]=_[_0xbfc7('0x2a')](_0x315f49[_0xbfc7('0x24')],qs['fields'](_0x363720[_0xbfc7('0x27')]['fields']));_0x1253fa[_0xbfc7('0x2b')]=_0x1253fa[_0xbfc7('0x2b')]['length']?_0x1253fa['attributes']:_0x315f49[_0xbfc7('0x24')];if(_0x363720[_0xbfc7('0x27')][_0xbfc7('0x3b')]){_0x1253fa['include']=[{'all':!![]}];}_0x1253fa=_[_0xbfc7('0x33')]({},_0x1253fa,_0x363720['options']);return db[_0xbfc7('0x23')][_0xbfc7('0x3c')](_0x1253fa)[_0xbfc7('0x20')](handleEntityNotFound(_0xe2ded2,null))[_0xbfc7('0x20')](respondWithResult(_0xe2ded2,null))[_0xbfc7('0x38')](handleError(_0xe2ded2,null));};exports[_0xbfc7('0x3d')]=function(_0x47e7da,_0x3b0a4e){return db[_0xbfc7('0x23')][_0xbfc7('0x3d')](_0x47e7da['body'],{})[_0xbfc7('0x20')](respondWithResult(_0x3b0a4e,0xc9))['catch'](handleError(_0x3b0a4e,null));};exports[_0xbfc7('0x1f')]=function(_0x54d83b,_0x192df8){if(_0x54d83b[_0xbfc7('0x3e')]['id']){delete _0x54d83b[_0xbfc7('0x3e')]['id'];}return db[_0xbfc7('0x23')][_0xbfc7('0x3c')]({'where':{'id':_0x54d83b[_0xbfc7('0x39')]['id']}})[_0xbfc7('0x20')](handleEntityNotFound(_0x192df8,null))[_0xbfc7('0x20')](saveUpdates(_0x54d83b[_0xbfc7('0x3e')],null))[_0xbfc7('0x20')](respondWithResult(_0x192df8,null))[_0xbfc7('0x38')](handleError(_0x192df8,null));};exports[_0xbfc7('0x21')]=function(_0x498acd,_0x47af0f){return db[_0xbfc7('0x23')][_0xbfc7('0x3c')]({'where':{'id':_0x498acd[_0xbfc7('0x39')]['id']}})[_0xbfc7('0x20')](handleEntityNotFound(_0x47af0f,null))['then'](removeEntity(_0x47af0f,null))[_0xbfc7('0x38')](handleError(_0x47af0f,null));};exports[_0xbfc7('0x3f')]=function(_0x296efa,_0x479d50,_0x401489){var _0x27d46c={};var _0x499dee={};var _0x10f184;var _0x3d9687;return db[_0xbfc7('0x23')][_0xbfc7('0x40')]({'where':{'id':_0x296efa[_0xbfc7('0x39')]['id']}})['then'](handleEntityNotFound(_0x479d50,null))[_0xbfc7('0x20')](function(_0x18d948){if(_0x18d948){_0x10f184=_0x18d948;_0x499dee[_0xbfc7('0x24')]=_[_0xbfc7('0x28')](db[_0xbfc7('0x41')][_0xbfc7('0x3a')]);_0x499dee[_0xbfc7('0x27')]=_['keys'](_0x296efa[_0xbfc7('0x27')]);_0x499dee[_0xbfc7('0x29')]=_[_0xbfc7('0x2a')](_0x499dee[_0xbfc7('0x24')],_0x499dee[_0xbfc7('0x27')]);_0x27d46c[_0xbfc7('0x2b')]=_[_0xbfc7('0x2a')](_0x499dee[_0xbfc7('0x24')],qs[_0xbfc7('0x2c')](_0x296efa['query'][_0xbfc7('0x2c')]));_0x27d46c[_0xbfc7('0x2b')]=_0x27d46c[_0xbfc7('0x2b')][_0xbfc7('0x2d')]?_0x27d46c[_0xbfc7('0x2b')]:_0x499dee[_0xbfc7('0x24')];_0x27d46c[_0xbfc7('0x2f')]=qs['sort'](_0x296efa[_0xbfc7('0x27')][_0xbfc7('0x30')]);_0x27d46c['where']=qs[_0xbfc7('0x29')](_['pick'](_0x296efa[_0xbfc7('0x27')],_0x499dee[_0xbfc7('0x29')]));if(_0x296efa[_0xbfc7('0x27')][_0xbfc7('0x32')]){_0x27d46c[_0xbfc7('0x31')]=_[_0xbfc7('0x33')](_0x27d46c[_0xbfc7('0x31')],{'$or':_[_0xbfc7('0x25')](_0x27d46c[_0xbfc7('0x2b')],function(_0x1b53d7){var _0x2e472f={};_0x2e472f[_0x1b53d7]={'$like':'%'+_0x296efa['query'][_0xbfc7('0x32')]+'%'};return _0x2e472f;})});}_0x27d46c=_[_0xbfc7('0x33')]({},_0x27d46c,_0x296efa['options']);return _0x10f184[_0xbfc7('0x3f')](_0x27d46c);}})[_0xbfc7('0x20')](function(_0x4daccc){if(_0x4daccc){_0x3d9687=_0x4daccc[_0xbfc7('0x2d')];if(!_0x296efa[_0xbfc7('0x27')][_0xbfc7('0x42')](_0xbfc7('0x2e'))){_0x27d46c[_0xbfc7('0x19')]=qs['limit'](_0x296efa[_0xbfc7('0x27')][_0xbfc7('0x19')]);_0x27d46c[_0xbfc7('0x17')]=qs[_0xbfc7('0x17')](_0x296efa[_0xbfc7('0x27')][_0xbfc7('0x17')]);}return _0x10f184[_0xbfc7('0x3f')](_0x27d46c);}})[_0xbfc7('0x20')](function(_0x3e4144){if(_0x3e4144){return _0x3e4144?{'count':_0x3d9687,'rows':_0x3e4144}:null;}})[_0xbfc7('0x20')](respondWithResult(_0x479d50,null))[_0xbfc7('0x38')](handleError(_0x479d50,null));};exports['getSubjects']=function(_0x1ea22a,_0x40d63f,_0x117d68){var _0x50254f={};var _0x185f62={};var _0x699cb8;var _0x5e43c6;return db[_0xbfc7('0x23')]['findOne']({'where':{'id':_0x1ea22a[_0xbfc7('0x39')]['id']}})['then'](handleEntityNotFound(_0x40d63f,null))[_0xbfc7('0x20')](function(_0x8c83e8){if(_0x8c83e8){_0x699cb8=_0x8c83e8;_0x185f62[_0xbfc7('0x24')]=_[_0xbfc7('0x28')](db[_0xbfc7('0x41')][_0xbfc7('0x3a')]);_0x185f62[_0xbfc7('0x27')]=_[_0xbfc7('0x28')](_0x1ea22a[_0xbfc7('0x27')]);_0x185f62[_0xbfc7('0x29')]=_['intersection'](_0x185f62[_0xbfc7('0x24')],_0x185f62[_0xbfc7('0x27')]);_0x50254f[_0xbfc7('0x2b')]=_[_0xbfc7('0x2a')](_0x185f62[_0xbfc7('0x24')],qs[_0xbfc7('0x2c')](_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x2c')]));_0x50254f[_0xbfc7('0x2b')]=_0x50254f[_0xbfc7('0x2b')][_0xbfc7('0x2d')]?_0x50254f['attributes']:_0x185f62['model'];_0x50254f[_0xbfc7('0x2f')]=qs[_0xbfc7('0x30')](_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x30')]);_0x50254f[_0xbfc7('0x31')]=qs[_0xbfc7('0x29')](_['pick'](_0x1ea22a['query'],_0x185f62['filters']));if(_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x32')]){_0x50254f[_0xbfc7('0x31')]=_['merge'](_0x50254f['where'],{'$or':_['map'](_0x50254f[_0xbfc7('0x2b')],function(_0xe5a5d6){var _0xe8731e={};_0xe8731e[_0xe5a5d6]={'$like':'%'+_0x1ea22a[_0xbfc7('0x27')]['filter']+'%'};return _0xe8731e;})});}_0x50254f=_[_0xbfc7('0x33')]({},_0x50254f,_0x1ea22a[_0xbfc7('0x35')]);return _0x699cb8['getSubjects'](_0x50254f);}})[_0xbfc7('0x20')](function(_0x4e3902){if(_0x4e3902){_0x5e43c6=_0x4e3902[_0xbfc7('0x2d')];if(!_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x42')]('nolimit')){_0x50254f[_0xbfc7('0x19')]=qs[_0xbfc7('0x19')](_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x19')]);_0x50254f[_0xbfc7('0x17')]=qs[_0xbfc7('0x17')](_0x1ea22a[_0xbfc7('0x27')][_0xbfc7('0x17')]);}return _0x699cb8[_0xbfc7('0x43')](_0x50254f);}})[_0xbfc7('0x20')](function(_0x54a5ef){if(_0x54a5ef){return _0x54a5ef?{'count':_0x5e43c6,'rows':_0x54a5ef}:null;}})[_0xbfc7('0x20')](respondWithResult(_0x40d63f,null))[_0xbfc7('0x38')](handleError(_0x40d63f,null));};exports[_0xbfc7('0x44')]=function(_0x392ea2,_0x32cb43,_0xb922e3){var _0x48943f={};var _0x52c3dd={};var _0x499cb7;var _0x4c501c;return db[_0xbfc7('0x23')][_0xbfc7('0x40')]({'where':{'id':_0x392ea2[_0xbfc7('0x39')]['id']}})[_0xbfc7('0x20')](handleEntityNotFound(_0x32cb43,null))[_0xbfc7('0x20')](function(_0x4aedd8){if(_0x4aedd8){_0x499cb7=_0x4aedd8;_0x52c3dd[_0xbfc7('0x24')]=_['keys'](db[_0xbfc7('0x41')][_0xbfc7('0x3a')]);_0x52c3dd[_0xbfc7('0x27')]=_[_0xbfc7('0x28')](_0x392ea2['query']);_0x52c3dd[_0xbfc7('0x29')]=_[_0xbfc7('0x2a')](_0x52c3dd[_0xbfc7('0x24')],_0x52c3dd[_0xbfc7('0x27')]);_0x48943f[_0xbfc7('0x2b')]=_[_0xbfc7('0x2a')](_0x52c3dd[_0xbfc7('0x24')],qs[_0xbfc7('0x2c')](_0x392ea2[_0xbfc7('0x27')][_0xbfc7('0x2c')]));_0x48943f[_0xbfc7('0x2b')]=_0x48943f['attributes'][_0xbfc7('0x2d')]?_0x48943f[_0xbfc7('0x2b')]:_0x52c3dd[_0xbfc7('0x24')];_0x48943f['order']=qs[_0xbfc7('0x30')](_0x392ea2[_0xbfc7('0x27')]['sort']);_0x48943f['where']=qs[_0xbfc7('0x29')](_[_0xbfc7('0x45')](_0x392ea2['query'],_0x52c3dd[_0xbfc7('0x29')]));if(_0x392ea2[_0xbfc7('0x27')][_0xbfc7('0x32')]){_0x48943f[_0xbfc7('0x31')]=_[_0xbfc7('0x33')](_0x48943f['where'],{'$or':_[_0xbfc7('0x25')](_0x48943f['attributes'],function(_0x3f7043){var _0x1d8438={};_0x1d8438[_0x3f7043]={'$like':'%'+_0x392ea2[_0xbfc7('0x27')]['filter']+'%'};return _0x1d8438;})});}_0x48943f=_[_0xbfc7('0x33')]({},_0x48943f,_0x392ea2[_0xbfc7('0x35')]);return _0x499cb7['getDescriptions'](_0x48943f);}})[_0xbfc7('0x20')](function(_0x201e41){if(_0x201e41){_0x4c501c=_0x201e41[_0xbfc7('0x2d')];if(!_0x392ea2['query'][_0xbfc7('0x42')]('nolimit')){_0x48943f[_0xbfc7('0x19')]=qs['limit'](_0x392ea2['query']['limit']);_0x48943f['offset']=qs['offset'](_0x392ea2[_0xbfc7('0x27')][_0xbfc7('0x17')]);}return _0x499cb7['getDescriptions'](_0x48943f);}})[_0xbfc7('0x20')](function(_0x2cdd9b){if(_0x2cdd9b){return _0x2cdd9b?{'count':_0x4c501c,'rows':_0x2cdd9b}:null;}})[_0xbfc7('0x20')](respondWithResult(_0x32cb43,null))['catch'](handleError(_0x32cb43,null));};
\ No newline at end of file
+var _0xc30d=['limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','Dynamics365Configuration','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','findAll','params','keys','find','catch','create','body','getFields','findOne','Dynamics365Field','hasOwnProperty','getSubjects','map','getDescriptions','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset'];(function(_0x35f15b,_0x387db3){var _0x262619=function(_0x4467b9){while(--_0x4467b9){_0x35f15b['push'](_0x35f15b['shift']());}};_0x262619(++_0x387db3);}(_0xc30d,0x170));var _0xdc30=function(_0x1966f3,_0x210ea3){_0x1966f3=_0x1966f3-0x0;var _0x17575f=_0xc30d[_0x1966f3];return _0x17575f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xdc30('0x0'));var rp=require('request-promise');var moment=require(_0xdc30('0x1'));var BPromise=require(_0xdc30('0x2'));var Mustache=require(_0xdc30('0x3'));var util=require(_0xdc30('0x4'));var path=require('path');var sox=require(_0xdc30('0x5'));var csv=require(_0xdc30('0x6'));var ejs=require(_0xdc30('0x7'));var fs=require('fs');var fs_extra=require(_0xdc30('0x8'));var _=require('lodash');var squel=require(_0xdc30('0x9'));var crypto=require(_0xdc30('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xdc30('0xb'));var toCsv=require('to-csv');var querystring=require(_0xdc30('0xc'));var Papa=require('papaparse');var Redis=require(_0xdc30('0xd'));var authService=require(_0xdc30('0xe'));var qs=require(_0xdc30('0xf'));var as=require(_0xdc30('0x10'));var hardwareService=require(_0xdc30('0x11'));var logger=require(_0xdc30('0x12'))(_0xdc30('0x13'));var utils=require(_0xdc30('0x14'));var config=require(_0xdc30('0x15'));var licenseUtil=require(_0xdc30('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x212291,_0xb9fba2){_0xb9fba2=_0xb9fba2||0xcc;return function(_0xc4fd3e){if(_0xc4fd3e){return _0x212291[_0xdc30('0x17')](_0xb9fba2);}return _0x212291[_0xdc30('0x18')](_0xb9fba2)['end']();};}function respondWithResult(_0x1b068e,_0x1fbc24){_0x1fbc24=_0x1fbc24||0xc8;return function(_0x202965){if(_0x202965){return _0x1b068e[_0xdc30('0x18')](_0x1fbc24)[_0xdc30('0x19')](_0x202965);}};}function respondWithFilteredResult(_0x24bf87,_0x1a1697){return function(_0x239f01){if(_0x239f01){var _0x22a4a3=typeof _0x1a1697[_0xdc30('0x1a')]==='undefined'&&typeof _0x1a1697[_0xdc30('0x1b')]===_0xdc30('0x1c');var _0x24e1cd=_0x239f01['count'];var _0x280b96=_0x22a4a3?0x0:_0x1a1697[_0xdc30('0x1a')];var _0x32da12=_0x22a4a3?_0x239f01[_0xdc30('0x1d')]:_0x1a1697[_0xdc30('0x1a')]+_0x1a1697[_0xdc30('0x1b')];var _0x54bc1d;if(_0x32da12>=_0x24e1cd){_0x32da12=_0x24e1cd;_0x54bc1d=0xc8;}else{_0x54bc1d=0xce;}_0x24bf87[_0xdc30('0x18')](_0x54bc1d);return _0x24bf87[_0xdc30('0x1e')](_0xdc30('0x1f'),_0x280b96+'-'+_0x32da12+'/'+_0x24e1cd)[_0xdc30('0x19')](_0x239f01);}return null;};}function patchUpdates(_0x4d2aac){return function(_0x1cd864){try{jsonpatch[_0xdc30('0x20')](_0x1cd864,_0x4d2aac,!![]);}catch(_0x385556){return BPromise[_0xdc30('0x21')](_0x385556);}return _0x1cd864[_0xdc30('0x22')]();};}function saveUpdates(_0x591b85,_0x381733){return function(_0x4c2344){if(_0x4c2344){return _0x4c2344[_0xdc30('0x23')](_0x591b85)[_0xdc30('0x24')](function(_0x45497f){return _0x45497f;});}return null;};}function removeEntity(_0x38548c,_0x5b77e9){return function(_0x36c226){if(_0x36c226){return _0x36c226[_0xdc30('0x25')]()['then'](function(){_0x38548c['status'](0xcc)[_0xdc30('0x26')]();});}};}function handleEntityNotFound(_0x559698,_0x29d65a){return function(_0x125ee9){if(!_0x125ee9){_0x559698['sendStatus'](0x194);}return _0x125ee9;};}function handleError(_0x3da193,_0x1de1f2){_0x1de1f2=_0x1de1f2||0x1f4;return function(_0x174ad0){logger[_0xdc30('0x27')](_0x174ad0[_0xdc30('0x28')]);if(_0x174ad0[_0xdc30('0x29')]){delete _0x174ad0[_0xdc30('0x29')];}_0x3da193['status'](_0x1de1f2)[_0xdc30('0x2a')](_0x174ad0);};}exports[_0xdc30('0x2b')]=function(_0x4549f0,_0x4956b3){var _0x55181b={},_0x979708={},_0x8efbe2={'count':0x0,'rows':[]};var _0x4612fc=_['map'](db[_0xdc30('0x2c')][_0xdc30('0x2d')],function(_0x287ebe){return{'name':_0x287ebe['fieldName'],'type':_0x287ebe[_0xdc30('0x2e')][_0xdc30('0x2f')]};});_0x979708[_0xdc30('0x30')]=_['map'](_0x4612fc,_0xdc30('0x29'));_0x979708[_0xdc30('0x31')]=_['keys'](_0x4549f0[_0xdc30('0x31')]);_0x979708[_0xdc30('0x32')]=_['intersection'](_0x979708[_0xdc30('0x30')],_0x979708[_0xdc30('0x31')]);_0x55181b[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0x979708[_0xdc30('0x30')],qs[_0xdc30('0x35')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x35')]));_0x55181b['attributes']=_0x55181b['attributes'][_0xdc30('0x36')]?_0x55181b['attributes']:_0x979708[_0xdc30('0x30')];if(!_0x4549f0['query']['hasOwnProperty'](_0xdc30('0x37'))){_0x55181b[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x4549f0['query'][_0xdc30('0x1b')]);_0x55181b[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x1a')]);}_0x55181b[_0xdc30('0x38')]=qs[_0xdc30('0x39')](_0x4549f0[_0xdc30('0x31')][_0xdc30('0x39')]);_0x55181b[_0xdc30('0x3a')]=qs['filters'](_[_0xdc30('0x3b')](_0x4549f0['query'],_0x979708[_0xdc30('0x32')]),_0x4612fc);if(_0x4549f0['query'][_0xdc30('0x3c')]){_0x55181b[_0xdc30('0x3a')]=_[_0xdc30('0x3d')](_0x55181b[_0xdc30('0x3a')],{'$or':_['map'](_0x4612fc,function(_0x466fc8){if(_0x466fc8[_0xdc30('0x2e')]!==_0xdc30('0x3e')){var _0x279a97={};_0x279a97[_0x466fc8[_0xdc30('0x29')]]={'$like':'%'+_0x4549f0['query'][_0xdc30('0x3c')]+'%'};return _0x279a97;}})});}_0x55181b=_['merge']({},_0x55181b,_0x4549f0[_0xdc30('0x3f')]);var _0x49f56f={'where':_0x55181b[_0xdc30('0x3a')]};return db[_0xdc30('0x2c')][_0xdc30('0x1d')](_0x49f56f)[_0xdc30('0x24')](function(_0xf534af){_0x8efbe2[_0xdc30('0x1d')]=_0xf534af;if(_0x4549f0[_0xdc30('0x31')]['includeAll']){_0x55181b[_0xdc30('0x40')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0xdc30('0x41')](_0x55181b);})[_0xdc30('0x24')](function(_0x238518){_0x8efbe2['rows']=_0x238518;return _0x8efbe2;})[_0xdc30('0x24')](respondWithFilteredResult(_0x4956b3,_0x55181b))['catch'](handleError(_0x4956b3,null));};exports['show']=function(_0x2b8615,_0x284847){var _0x570665={'raw':![],'where':{'id':_0x2b8615[_0xdc30('0x42')]['id']}},_0xdb2410={};_0xdb2410[_0xdc30('0x30')]=_[_0xdc30('0x43')](db[_0xdc30('0x2c')][_0xdc30('0x2d')]);_0xdb2410[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x2b8615[_0xdc30('0x31')]);_0xdb2410['filters']=_['intersection'](_0xdb2410['model'],_0xdb2410['query']);_0x570665[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0xdb2410['model'],qs[_0xdc30('0x35')](_0x2b8615[_0xdc30('0x31')]['fields']));_0x570665[_0xdc30('0x33')]=_0x570665[_0xdc30('0x33')][_0xdc30('0x36')]?_0x570665[_0xdc30('0x33')]:_0xdb2410[_0xdc30('0x30')];if(_0x2b8615['query']['includeAll']){_0x570665['include']=[{'all':!![]}];}_0x570665=_[_0xdc30('0x3d')]({},_0x570665,_0x2b8615[_0xdc30('0x3f')]);return db[_0xdc30('0x2c')][_0xdc30('0x44')](_0x570665)['then'](handleEntityNotFound(_0x284847,null))[_0xdc30('0x24')](respondWithResult(_0x284847,null))[_0xdc30('0x45')](handleError(_0x284847,null));};exports['create']=function(_0x2e09bc,_0x47ebad){return db[_0xdc30('0x2c')][_0xdc30('0x46')](_0x2e09bc['body'],{})[_0xdc30('0x24')](respondWithResult(_0x47ebad,0xc9))['catch'](handleError(_0x47ebad,null));};exports[_0xdc30('0x23')]=function(_0xad21e0,_0x2bd220){if(_0xad21e0[_0xdc30('0x47')]['id']){delete _0xad21e0[_0xdc30('0x47')]['id'];}return db[_0xdc30('0x2c')][_0xdc30('0x44')]({'where':{'id':_0xad21e0[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x2bd220,null))[_0xdc30('0x24')](saveUpdates(_0xad21e0[_0xdc30('0x47')],null))[_0xdc30('0x24')](respondWithResult(_0x2bd220,null))[_0xdc30('0x45')](handleError(_0x2bd220,null));};exports[_0xdc30('0x25')]=function(_0xa559a7,_0xbba9ed){return db['Dynamics365Configuration']['find']({'where':{'id':_0xa559a7[_0xdc30('0x42')]['id']}})['then'](handleEntityNotFound(_0xbba9ed,null))['then'](removeEntity(_0xbba9ed,null))[_0xdc30('0x45')](handleError(_0xbba9ed,null));};exports[_0xdc30('0x48')]=function(_0x5d14ff,_0x382ab1,_0x25553e){var _0x288a64={};var _0x327086={};var _0x1a53c6;var _0x453eac;return db[_0xdc30('0x2c')][_0xdc30('0x49')]({'where':{'id':_0x5d14ff[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x382ab1,null))['then'](function(_0x6779c9){if(_0x6779c9){_0x1a53c6=_0x6779c9;_0x327086['model']=_[_0xdc30('0x43')](db[_0xdc30('0x4a')][_0xdc30('0x2d')]);_0x327086[_0xdc30('0x31')]=_['keys'](_0x5d14ff[_0xdc30('0x31')]);_0x327086[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0x327086[_0xdc30('0x30')],_0x327086[_0xdc30('0x31')]);_0x288a64['attributes']=_['intersection'](_0x327086[_0xdc30('0x30')],qs[_0xdc30('0x35')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x35')]));_0x288a64[_0xdc30('0x33')]=_0x288a64[_0xdc30('0x33')][_0xdc30('0x36')]?_0x288a64[_0xdc30('0x33')]:_0x327086[_0xdc30('0x30')];_0x288a64['order']=qs[_0xdc30('0x39')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x39')]);_0x288a64['where']=qs['filters'](_[_0xdc30('0x3b')](_0x5d14ff[_0xdc30('0x31')],_0x327086[_0xdc30('0x32')]));if(_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x288a64['where']=_[_0xdc30('0x3d')](_0x288a64[_0xdc30('0x3a')],{'$or':_['map'](_0x288a64['attributes'],function(_0x54606c){var _0x371819={};_0x371819[_0x54606c]={'$like':'%'+_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x371819;})});}_0x288a64=_[_0xdc30('0x3d')]({},_0x288a64,_0x5d14ff['options']);return _0x1a53c6[_0xdc30('0x48')](_0x288a64);}})['then'](function(_0x439e21){if(_0x439e21){_0x453eac=_0x439e21[_0xdc30('0x36')];if(!_0x5d14ff['query'][_0xdc30('0x4b')]('nolimit')){_0x288a64[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x1b')]);_0x288a64[_0xdc30('0x1a')]=qs['offset'](_0x5d14ff[_0xdc30('0x31')][_0xdc30('0x1a')]);}return _0x1a53c6[_0xdc30('0x48')](_0x288a64);}})[_0xdc30('0x24')](function(_0x31a1c7){if(_0x31a1c7){return _0x31a1c7?{'count':_0x453eac,'rows':_0x31a1c7}:null;}})[_0xdc30('0x24')](respondWithResult(_0x382ab1,null))[_0xdc30('0x45')](handleError(_0x382ab1,null));};exports[_0xdc30('0x4c')]=function(_0x162d1f,_0x5c780c,_0x53e4fe){var _0x47d0d6={};var _0xb5d4b2={};var _0x3832be;var _0x3c941e;return db[_0xdc30('0x2c')]['findOne']({'where':{'id':_0x162d1f[_0xdc30('0x42')]['id']}})[_0xdc30('0x24')](handleEntityNotFound(_0x5c780c,null))[_0xdc30('0x24')](function(_0x293ea6){if(_0x293ea6){_0x3832be=_0x293ea6;_0xb5d4b2['model']=_[_0xdc30('0x43')](db['Dynamics365Field'][_0xdc30('0x2d')]);_0xb5d4b2[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x162d1f[_0xdc30('0x31')]);_0xb5d4b2[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0xb5d4b2['model'],_0xb5d4b2[_0xdc30('0x31')]);_0x47d0d6[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0xb5d4b2[_0xdc30('0x30')],qs['fields'](_0x162d1f['query'][_0xdc30('0x35')]));_0x47d0d6[_0xdc30('0x33')]=_0x47d0d6[_0xdc30('0x33')][_0xdc30('0x36')]?_0x47d0d6[_0xdc30('0x33')]:_0xb5d4b2['model'];_0x47d0d6['order']=qs['sort'](_0x162d1f[_0xdc30('0x31')]['sort']);_0x47d0d6['where']=qs['filters'](_[_0xdc30('0x3b')](_0x162d1f[_0xdc30('0x31')],_0xb5d4b2[_0xdc30('0x32')]));if(_0x162d1f[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x47d0d6[_0xdc30('0x3a')]=_[_0xdc30('0x3d')](_0x47d0d6[_0xdc30('0x3a')],{'$or':_[_0xdc30('0x4d')](_0x47d0d6[_0xdc30('0x33')],function(_0x1329ee){var _0x4d7276={};_0x4d7276[_0x1329ee]={'$like':'%'+_0x162d1f[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x4d7276;})});}_0x47d0d6=_['merge']({},_0x47d0d6,_0x162d1f[_0xdc30('0x3f')]);return _0x3832be[_0xdc30('0x4c')](_0x47d0d6);}})[_0xdc30('0x24')](function(_0x31a45a){if(_0x31a45a){_0x3c941e=_0x31a45a[_0xdc30('0x36')];if(!_0x162d1f[_0xdc30('0x31')][_0xdc30('0x4b')]('nolimit')){_0x47d0d6[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x162d1f[_0xdc30('0x31')][_0xdc30('0x1b')]);_0x47d0d6[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x162d1f[_0xdc30('0x31')][_0xdc30('0x1a')]);}return _0x3832be['getSubjects'](_0x47d0d6);}})[_0xdc30('0x24')](function(_0x29e3d0){if(_0x29e3d0){return _0x29e3d0?{'count':_0x3c941e,'rows':_0x29e3d0}:null;}})['then'](respondWithResult(_0x5c780c,null))[_0xdc30('0x45')](handleError(_0x5c780c,null));};exports[_0xdc30('0x4e')]=function(_0x53b532,_0x4ea2f6,_0x1415fe){var _0x644dcf={};var _0x1e62eb={};var _0x25debe;var _0x2dbd45;return db[_0xdc30('0x2c')][_0xdc30('0x49')]({'where':{'id':_0x53b532[_0xdc30('0x42')]['id']}})['then'](handleEntityNotFound(_0x4ea2f6,null))[_0xdc30('0x24')](function(_0x5ed010){if(_0x5ed010){_0x25debe=_0x5ed010;_0x1e62eb['model']=_[_0xdc30('0x43')](db[_0xdc30('0x4a')][_0xdc30('0x2d')]);_0x1e62eb[_0xdc30('0x31')]=_[_0xdc30('0x43')](_0x53b532[_0xdc30('0x31')]);_0x1e62eb[_0xdc30('0x32')]=_[_0xdc30('0x34')](_0x1e62eb[_0xdc30('0x30')],_0x1e62eb[_0xdc30('0x31')]);_0x644dcf[_0xdc30('0x33')]=_[_0xdc30('0x34')](_0x1e62eb['model'],qs[_0xdc30('0x35')](_0x53b532['query'][_0xdc30('0x35')]));_0x644dcf[_0xdc30('0x33')]=_0x644dcf[_0xdc30('0x33')]['length']?_0x644dcf['attributes']:_0x1e62eb[_0xdc30('0x30')];_0x644dcf[_0xdc30('0x38')]=qs[_0xdc30('0x39')](_0x53b532[_0xdc30('0x31')][_0xdc30('0x39')]);_0x644dcf['where']=qs[_0xdc30('0x32')](_[_0xdc30('0x3b')](_0x53b532[_0xdc30('0x31')],_0x1e62eb['filters']));if(_0x53b532[_0xdc30('0x31')][_0xdc30('0x3c')]){_0x644dcf[_0xdc30('0x3a')]=_['merge'](_0x644dcf[_0xdc30('0x3a')],{'$or':_['map'](_0x644dcf[_0xdc30('0x33')],function(_0x58db88){var _0x5ed919={};_0x5ed919[_0x58db88]={'$like':'%'+_0x53b532[_0xdc30('0x31')][_0xdc30('0x3c')]+'%'};return _0x5ed919;})});}_0x644dcf=_[_0xdc30('0x3d')]({},_0x644dcf,_0x53b532[_0xdc30('0x3f')]);return _0x25debe[_0xdc30('0x4e')](_0x644dcf);}})['then'](function(_0xa4f81b){if(_0xa4f81b){_0x2dbd45=_0xa4f81b[_0xdc30('0x36')];if(!_0x53b532['query'][_0xdc30('0x4b')](_0xdc30('0x37'))){_0x644dcf[_0xdc30('0x1b')]=qs[_0xdc30('0x1b')](_0x53b532[_0xdc30('0x31')]['limit']);_0x644dcf[_0xdc30('0x1a')]=qs[_0xdc30('0x1a')](_0x53b532['query'][_0xdc30('0x1a')]);}return _0x25debe[_0xdc30('0x4e')](_0x644dcf);}})['then'](function(_0x80d1df){if(_0x80d1df){return _0x80d1df?{'count':_0x2dbd45,'rows':_0x80d1df}:null;}})[_0xdc30('0x24')](respondWithResult(_0x4ea2f6,null))[_0xdc30('0x45')](handleError(_0x4ea2f6,null));};
\ No newline at end of file
index a3e568b..cf70a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a19=['lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Configuration.attributes','exports','define'];(function(_0x4c12ec,_0x2e9103){var _0x3ae42c=function(_0x5a728f){while(--_0x5a728f){_0x4c12ec['push'](_0x4c12ec['shift']());}};_0x3ae42c(++_0x2e9103);}(_0x9a19,0x114));var _0x99a1=function(_0x3c0dcc,_0x18c419){_0x3c0dcc=_0x3c0dcc-0x0;var _0x1a224c=_0x9a19[_0x3c0dcc];return _0x1a224c;};'use strict';var _=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var logger=require(_0x99a1('0x2'))('api');var moment=require(_0x99a1('0x3'));var BPromise=require(_0x99a1('0x4'));var rp=require(_0x99a1('0x5'));var fs=require('fs');var path=require(_0x99a1('0x6'));var rimraf=require(_0x99a1('0x7'));var config=require(_0x99a1('0x8'));var attributes=require(_0x99a1('0x9'));module[_0x99a1('0xa')]=function(_0x3eff4a,_0xff0240){return _0x3eff4a[_0x99a1('0xb')]('Dynamics365Configuration',attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./intDynamics365Configuration.attributes','exports','define','int_dynamics365_configurations','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x368e09,_0x2c1517){var _0x14b7df=function(_0x5002af){while(--_0x5002af){_0x368e09['push'](_0x368e09['shift']());}};_0x14b7df(++_0x2c1517);}(_0x55ca,0x126));var _0xa55c=function(_0x5ad0d7,_0x2645f8){_0x5ad0d7=_0x5ad0d7-0x0;var _0xd83bd=_0x55ca[_0x5ad0d7];return _0xd83bd;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('Dynamics365Configuration',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3de3beb..bd35ae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f32=['code','Dynamics365Configuration,\x20%s,\x20%s','message','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','debug','stringify','error'];(function(_0x19159a,_0x1cb5c3){var _0xa677f4=function(_0x24bb85){while(--_0x24bb85){_0x19159a['push'](_0x19159a['shift']());}};_0xa677f4(++_0x1cb5c3);}(_0x9f32,0x154));var _0x29f3=function(_0x47a5c5,_0x106018){_0x47a5c5=_0x47a5c5-0x0;var _0x41816b=_0x9f32[_0x47a5c5];return _0x41816b;};'use strict';var _=require('lodash');var util=require(_0x29f3('0x0'));var moment=require('moment');var BPromise=require(_0x29f3('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x29f3('0x2'));var db=require(_0x29f3('0x3'))['db'];var utils=require(_0x29f3('0x4'));var logger=require(_0x29f3('0x5'))(_0x29f3('0x6'));var config=require(_0x29f3('0x7'));var jayson=require(_0x29f3('0x8'));var client=jayson[_0x29f3('0x9')][_0x29f3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xcc1feb,_0x2a125f,_0x2507f7){return new BPromise(function(_0x101c92,_0x2d11ba){return client['request'](_0xcc1feb,_0x2507f7)[_0x29f3('0xb')](function(_0x44da5f){logger[_0x29f3('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2a125f,_0x29f3('0xd'));logger[_0x29f3('0xe')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x2a125f,_0x29f3('0xd'),JSON[_0x29f3('0xf')](_0x44da5f));if(_0x44da5f[_0x29f3('0x10')]){if(_0x44da5f[_0x29f3('0x10')][_0x29f3('0x11')]===0x1f4){logger[_0x29f3('0x10')](_0x29f3('0x12'),_0x2a125f,_0x44da5f[_0x29f3('0x10')][_0x29f3('0x13')]);return _0x2d11ba(_0x44da5f[_0x29f3('0x10')][_0x29f3('0x13')]);}logger[_0x29f3('0x10')](_0x29f3('0x12'),_0x2a125f,_0x44da5f[_0x29f3('0x10')]['message']);return _0x101c92(_0x44da5f[_0x29f3('0x10')][_0x29f3('0x13')]);}else{logger[_0x29f3('0xc')]('Dynamics365Configuration,\x20%s,\x20%s',_0x2a125f,_0x29f3('0xd'));_0x101c92(_0x44da5f['result']['message']);}})[_0x29f3('0x14')](function(_0x1c1932){logger['error'](_0x29f3('0x12'),_0x2a125f,_0x1c1932);_0x2d11ba(_0x1c1932);});});}
\ No newline at end of file
+var _0x7edf=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x3aa53a,_0x3fefc9){var _0x25acfd=function(_0x66f54){while(--_0x66f54){_0x3aa53a['push'](_0x3aa53a['shift']());}};_0x25acfd(++_0x3fefc9);}(_0x7edf,0xe7));var _0xf7ed=function(_0x267c52,_0x3c0df3){_0x267c52=_0x267c52-0x0;var _0x46c47b=_0x7edf[_0x267c52];return _0x46c47b;};'use strict';var _=require(_0xf7ed('0x0'));var util=require(_0xf7ed('0x1'));var moment=require(_0xf7ed('0x2'));var BPromise=require(_0xf7ed('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf7ed('0x4'));var db=require(_0xf7ed('0x5'))['db'];var utils=require(_0xf7ed('0x6'));var logger=require(_0xf7ed('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf7ed('0x8'));var client=jayson[_0xf7ed('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37d46c,_0x19d1f5,_0x2d9ed6){return new BPromise(function(_0x432e09,_0x44f821){return client['request'](_0x37d46c,_0x2d9ed6)['then'](function(_0x1b7aa2){logger['info'](_0xf7ed('0xa'),_0x19d1f5,_0xf7ed('0xb'));logger[_0xf7ed('0xc')]('Dynamics365Configuration,\x20%s,\x20%s,\x20%s',_0x19d1f5,_0xf7ed('0xb'),JSON[_0xf7ed('0xd')](_0x1b7aa2));if(_0x1b7aa2[_0xf7ed('0xe')]){if(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0xf')]===0x1f4){logger['error'](_0xf7ed('0xa'),_0x19d1f5,_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);return _0x44f821(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);}logger[_0xf7ed('0xe')](_0xf7ed('0xa'),_0x19d1f5,_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);return _0x432e09(_0x1b7aa2[_0xf7ed('0xe')][_0xf7ed('0x10')]);}else{logger['info'](_0xf7ed('0xa'),_0x19d1f5,_0xf7ed('0xb'));_0x432e09(_0x1b7aa2[_0xf7ed('0x11')]['message']);}})[_0xf7ed('0x12')](function(_0x17be58){logger[_0xf7ed('0xe')]('Dynamics365Configuration,\x20%s,\x20%s',_0x19d1f5,_0x17be58);_0x44f821(_0x17be58);});});}
\ No newline at end of file
index 3250274..dc19f0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c12=['destroy','util','path','express','fs-extra','../../components/interaction/service','./intDynamics365Field.controller','get','index','/:id','show','post','isAuthenticated','create','put','update','delete'];(function(_0x474c1c,_0x3622a5){var _0x432b68=function(_0x410275){while(--_0x410275){_0x474c1c['push'](_0x474c1c['shift']());}};_0x432b68(++_0x3622a5);}(_0x4c12,0x9a));var _0x24c1=function(_0x204ad4,_0x502841){_0x204ad4=_0x204ad4-0x0;var _0x50675f=_0x4c12[_0x204ad4];return _0x50675f;};'use strict';var multer=require('multer');var util=require(_0x24c1('0x0'));var path=require(_0x24c1('0x1'));var timeout=require('connect-timeout');var express=require(_0x24c1('0x2'));var router=express['Router']();var fs_extra=require(_0x24c1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x24c1('0x4'));var config=require('../../config/environment');var controller=require(_0x24c1('0x5'));router[_0x24c1('0x6')]('/',auth['isAuthenticated'](),controller[_0x24c1('0x7')]);router[_0x24c1('0x6')](_0x24c1('0x8'),auth['isAuthenticated'](),controller[_0x24c1('0x9')]);router[_0x24c1('0xa')]('/',auth[_0x24c1('0xb')](),controller[_0x24c1('0xc')]);router[_0x24c1('0xd')](_0x24c1('0x8'),auth[_0x24c1('0xb')](),controller[_0x24c1('0xe')]);router[_0x24c1('0xf')](_0x24c1('0x8'),auth[_0x24c1('0xb')](),controller[_0x24c1('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9558=['../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','show','create','put','/:id','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x4a047b,_0x2ef8e9){var _0x203e9c=function(_0x12390e){while(--_0x12390e){_0x4a047b['push'](_0x4a047b['shift']());}};_0x203e9c(++_0x2ef8e9);}(_0x9558,0x119));var _0x8955=function(_0x31850b,_0x4584c1){_0x31850b=_0x31850b-0x0;var _0x292dfc=_0x9558[_0x31850b];return _0x292dfc;};'use strict';var multer=require(_0x8955('0x0'));var util=require(_0x8955('0x1'));var path=require(_0x8955('0x2'));var timeout=require(_0x8955('0x3'));var express=require(_0x8955('0x4'));var router=express[_0x8955('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8955('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x8955('0x7'));var controller=require(_0x8955('0x8'));router[_0x8955('0x9')]('/',auth[_0x8955('0xa')](),controller['index']);router[_0x8955('0x9')]('/:id',auth[_0x8955('0xa')](),controller[_0x8955('0xb')]);router['post']('/',auth[_0x8955('0xa')](),controller[_0x8955('0xc')]);router[_0x8955('0xd')](_0x8955('0xe'),auth[_0x8955('0xa')](),controller[_0x8955('0xf')]);router[_0x8955('0x10')]('/:id',auth[_0x8955('0xa')](),controller['destroy']);module[_0x8955('0x11')]=router;
\ No newline at end of file
index 53b547f..f907ed3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b59=['BOOLEAN','sequelize','exports','string','customVariable','picklist','STRING','ENUM','variable'];(function(_0x144863,_0x4503fd){var _0x2dd2b7=function(_0x181035){while(--_0x181035){_0x144863['push'](_0x144863['shift']());}};_0x2dd2b7(++_0x4503fd);}(_0x9b59,0x106));var _0x99b5=function(_0x568687,_0x339acc){_0x568687=_0x568687-0x0;var _0x3a1008=_0x9b59[_0x568687];return _0x3a1008;};'use strict';var Sequelize=require(_0x99b5('0x0'));module[_0x99b5('0x1')]={'type':{'type':Sequelize['ENUM'](_0x99b5('0x2'),'variable',_0x99b5('0x3'),'keyValue',_0x99b5('0x4')),'defaultValue':_0x99b5('0x2')},'content':{'type':Sequelize[_0x99b5('0x5')]},'key':{'type':Sequelize[_0x99b5('0x5')]},'keyType':{'type':Sequelize[_0x99b5('0x6')]('string',_0x99b5('0x7'),_0x99b5('0x3'))},'keyContent':{'type':Sequelize[_0x99b5('0x5')]},'idField':{'type':Sequelize[_0x99b5('0x5')]},'nameField':{'type':Sequelize[_0x99b5('0x5')]},'customField':{'type':Sequelize[_0x99b5('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x99b5('0x5')]}};
\ No newline at end of file
+var _0xe36a=['BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','picklist','STRING'];(function(_0x5cc8b9,_0x20e3c3){var _0x58892e=function(_0x87457a){while(--_0x87457a){_0x5cc8b9['push'](_0x5cc8b9['shift']());}};_0x58892e(++_0x20e3c3);}(_0xe36a,0x1ba));var _0xae36=function(_0x687ddc,_0x2092fa){_0x687ddc=_0x687ddc-0x0;var _0x441991=_0xe36a[_0x687ddc];return _0x441991;};'use strict';var Sequelize=require(_0xae36('0x0'));module[_0xae36('0x1')]={'type':{'type':Sequelize[_0xae36('0x2')](_0xae36('0x3'),_0xae36('0x4'),_0xae36('0x5'),'keyValue',_0xae36('0x6')),'defaultValue':_0xae36('0x3')},'content':{'type':Sequelize[_0xae36('0x7')]},'key':{'type':Sequelize[_0xae36('0x7')]},'keyType':{'type':Sequelize[_0xae36('0x2')](_0xae36('0x3'),_0xae36('0x4'),_0xae36('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xae36('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xae36('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4476d5f..1e0463c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c5c=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','set','Content-Range','save','update','destroy','then','end','error','stack','name','index','map','Dynamics365Field','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','include','findAll','rows','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x2a6c5d,_0xb75cb8){var _0x5b2b6b=function(_0x4fea6b){while(--_0x4fea6b){_0x2a6c5d['push'](_0x2a6c5d['shift']());}};_0x5b2b6b(++_0xb75cb8);}(_0x6c5c,0x113));var _0xc6c5=function(_0x39e8cb,_0x2d096f){_0x39e8cb=_0x39e8cb-0x0;var _0x4168fa=_0x6c5c[_0x39e8cb];return _0x4168fa;};'use strict';var emlformat=require(_0xc6c5('0x0'));var rimraf=require(_0xc6c5('0x1'));var zipdir=require(_0xc6c5('0x2'));var jsonpatch=require(_0xc6c5('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc6c5('0x4'));var Mustache=require(_0xc6c5('0x5'));var util=require(_0xc6c5('0x6'));var path=require(_0xc6c5('0x7'));var sox=require(_0xc6c5('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc6c5('0x9'));var _=require(_0xc6c5('0xa'));var squel=require(_0xc6c5('0xb'));var crypto=require('crypto');var jsforce=require(_0xc6c5('0xc'));var deskjs=require(_0xc6c5('0xd'));var toCsv=require(_0xc6c5('0xe'));var querystring=require(_0xc6c5('0xf'));var Papa=require(_0xc6c5('0x10'));var Redis=require(_0xc6c5('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc6c5('0x12'));var as=require(_0xc6c5('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc6c5('0x14'))(_0xc6c5('0x15'));var utils=require(_0xc6c5('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xc6c5('0x17'))['db'];function respondWithStatusCode(_0x20e7a6,_0x18be3e){_0x18be3e=_0x18be3e||0xcc;return function(_0x12a8fd){if(_0x12a8fd){return _0x20e7a6[_0xc6c5('0x18')](_0x18be3e);}return _0x20e7a6[_0xc6c5('0x19')](_0x18be3e)['end']();};}function respondWithResult(_0x3e5c55,_0x19db05){_0x19db05=_0x19db05||0xc8;return function(_0xea44d8){if(_0xea44d8){return _0x3e5c55[_0xc6c5('0x19')](_0x19db05)[_0xc6c5('0x1a')](_0xea44d8);}};}function respondWithFilteredResult(_0x4a70a5,_0x4fe3fd){return function(_0x4492b2){if(_0x4492b2){var _0x515161=typeof _0x4fe3fd[_0xc6c5('0x1b')]==='undefined'&&typeof _0x4fe3fd['limit']===_0xc6c5('0x1c');var _0x5d0fe2=_0x4492b2[_0xc6c5('0x1d')];var _0xf76024=_0x515161?0x0:_0x4fe3fd['offset'];var _0x27a174=_0x515161?_0x4492b2['count']:_0x4fe3fd[_0xc6c5('0x1b')]+_0x4fe3fd[_0xc6c5('0x1e')];var _0x105a80;if(_0x27a174>=_0x5d0fe2){_0x27a174=_0x5d0fe2;_0x105a80=0xc8;}else{_0x105a80=0xce;}_0x4a70a5[_0xc6c5('0x19')](_0x105a80);return _0x4a70a5[_0xc6c5('0x1f')](_0xc6c5('0x20'),_0xf76024+'-'+_0x27a174+'/'+_0x5d0fe2)[_0xc6c5('0x1a')](_0x4492b2);}return null;};}function patchUpdates(_0x45f5bf){return function(_0x5eb2ae){try{jsonpatch['apply'](_0x5eb2ae,_0x45f5bf,!![]);}catch(_0x3ed846){return BPromise['reject'](_0x3ed846);}return _0x5eb2ae[_0xc6c5('0x21')]();};}function saveUpdates(_0x1ffebc,_0x4c7218){return function(_0x2be394){if(_0x2be394){return _0x2be394[_0xc6c5('0x22')](_0x1ffebc)['then'](function(_0x522fd6){return _0x522fd6;});}return null;};}function removeEntity(_0x36aec4,_0x3c71d3){return function(_0xcc1a2a){if(_0xcc1a2a){return _0xcc1a2a[_0xc6c5('0x23')]()[_0xc6c5('0x24')](function(){_0x36aec4['status'](0xcc)[_0xc6c5('0x25')]();});}};}function handleEntityNotFound(_0x6982dd,_0x26affc){return function(_0x52ca3d){if(!_0x52ca3d){_0x6982dd['sendStatus'](0x194);}return _0x52ca3d;};}function handleError(_0x3d4350,_0x210333){_0x210333=_0x210333||0x1f4;return function(_0x1383eb){logger[_0xc6c5('0x26')](_0x1383eb[_0xc6c5('0x27')]);if(_0x1383eb[_0xc6c5('0x28')]){delete _0x1383eb[_0xc6c5('0x28')];}_0x3d4350[_0xc6c5('0x19')](_0x210333)['send'](_0x1383eb);};}exports[_0xc6c5('0x29')]=function(_0xdc9962,_0x110a22){var _0x497d11={},_0x4f9c75={},_0x3c868b={'count':0x0,'rows':[]};var _0x309c0d=_[_0xc6c5('0x2a')](db[_0xc6c5('0x2b')][_0xc6c5('0x2c')],function(_0x9aca21){return{'name':_0x9aca21[_0xc6c5('0x2d')],'type':_0x9aca21['type'][_0xc6c5('0x2e')]};});_0x4f9c75[_0xc6c5('0x2f')]=_[_0xc6c5('0x2a')](_0x309c0d,_0xc6c5('0x28'));_0x4f9c75[_0xc6c5('0x30')]=_[_0xc6c5('0x31')](_0xdc9962[_0xc6c5('0x30')]);_0x4f9c75[_0xc6c5('0x32')]=_[_0xc6c5('0x33')](_0x4f9c75['model'],_0x4f9c75[_0xc6c5('0x30')]);_0x497d11[_0xc6c5('0x34')]=_[_0xc6c5('0x33')](_0x4f9c75[_0xc6c5('0x2f')],qs[_0xc6c5('0x35')](_0xdc9962[_0xc6c5('0x30')][_0xc6c5('0x35')]));_0x497d11['attributes']=_0x497d11[_0xc6c5('0x34')][_0xc6c5('0x36')]?_0x497d11[_0xc6c5('0x34')]:_0x4f9c75[_0xc6c5('0x2f')];if(!_0xdc9962[_0xc6c5('0x30')]['hasOwnProperty'](_0xc6c5('0x37'))){_0x497d11[_0xc6c5('0x1e')]=qs[_0xc6c5('0x1e')](_0xdc9962[_0xc6c5('0x30')]['limit']);_0x497d11[_0xc6c5('0x1b')]=qs[_0xc6c5('0x1b')](_0xdc9962[_0xc6c5('0x30')][_0xc6c5('0x1b')]);}_0x497d11[_0xc6c5('0x38')]=qs[_0xc6c5('0x39')](_0xdc9962[_0xc6c5('0x30')][_0xc6c5('0x39')]);_0x497d11[_0xc6c5('0x3a')]=qs['filters'](_['pick'](_0xdc9962[_0xc6c5('0x30')],_0x4f9c75['filters']),_0x309c0d);if(_0xdc9962[_0xc6c5('0x30')][_0xc6c5('0x3b')]){_0x497d11[_0xc6c5('0x3a')]=_[_0xc6c5('0x3c')](_0x497d11[_0xc6c5('0x3a')],{'$or':_[_0xc6c5('0x2a')](_0x309c0d,function(_0x2a4a7e){if(_0x2a4a7e[_0xc6c5('0x3d')]!==_0xc6c5('0x3e')){var _0x4a8ba0={};_0x4a8ba0[_0x2a4a7e[_0xc6c5('0x28')]]={'$like':'%'+_0xdc9962[_0xc6c5('0x30')][_0xc6c5('0x3b')]+'%'};return _0x4a8ba0;}})});}_0x497d11=_[_0xc6c5('0x3c')]({},_0x497d11,_0xdc9962['options']);var _0x1a56df={'where':_0x497d11['where']};return db[_0xc6c5('0x2b')][_0xc6c5('0x1d')](_0x1a56df)[_0xc6c5('0x24')](function(_0x3be46f){_0x3c868b[_0xc6c5('0x1d')]=_0x3be46f;if(_0xdc9962[_0xc6c5('0x30')]['includeAll']){_0x497d11[_0xc6c5('0x3f')]=[{'all':!![]}];}return db[_0xc6c5('0x2b')][_0xc6c5('0x40')](_0x497d11);})[_0xc6c5('0x24')](function(_0x5cfd47){_0x3c868b[_0xc6c5('0x41')]=_0x5cfd47;return _0x3c868b;})[_0xc6c5('0x24')](respondWithFilteredResult(_0x110a22,_0x497d11))[_0xc6c5('0x42')](handleError(_0x110a22,null));};exports[_0xc6c5('0x43')]=function(_0x543c64,_0x303fc5){var _0x1c2817={'raw':!![],'where':{'id':_0x543c64['params']['id']}},_0x5bb046={};_0x5bb046[_0xc6c5('0x2f')]=_[_0xc6c5('0x31')](db['Dynamics365Field']['rawAttributes']);_0x5bb046[_0xc6c5('0x30')]=_[_0xc6c5('0x31')](_0x543c64['query']);_0x5bb046[_0xc6c5('0x32')]=_[_0xc6c5('0x33')](_0x5bb046[_0xc6c5('0x2f')],_0x5bb046[_0xc6c5('0x30')]);_0x1c2817[_0xc6c5('0x34')]=_['intersection'](_0x5bb046['model'],qs[_0xc6c5('0x35')](_0x543c64[_0xc6c5('0x30')][_0xc6c5('0x35')]));_0x1c2817['attributes']=_0x1c2817[_0xc6c5('0x34')][_0xc6c5('0x36')]?_0x1c2817[_0xc6c5('0x34')]:_0x5bb046['model'];if(_0x543c64['query']['includeAll']){_0x1c2817[_0xc6c5('0x3f')]=[{'all':!![]}];}_0x1c2817=_[_0xc6c5('0x3c')]({},_0x1c2817,_0x543c64[_0xc6c5('0x44')]);return db[_0xc6c5('0x2b')][_0xc6c5('0x45')](_0x1c2817)['then'](handleEntityNotFound(_0x303fc5,null))[_0xc6c5('0x24')](respondWithResult(_0x303fc5,null))[_0xc6c5('0x42')](handleError(_0x303fc5,null));};exports[_0xc6c5('0x46')]=function(_0x2ceafc,_0x1543fc){return db['Dynamics365Field'][_0xc6c5('0x46')](_0x2ceafc[_0xc6c5('0x47')],{})[_0xc6c5('0x24')](respondWithResult(_0x1543fc,0xc9))[_0xc6c5('0x42')](handleError(_0x1543fc,null));};exports[_0xc6c5('0x22')]=function(_0x2b792a,_0x7ec7ff){if(_0x2b792a[_0xc6c5('0x47')]['id']){delete _0x2b792a['body']['id'];}return db[_0xc6c5('0x2b')][_0xc6c5('0x45')]({'where':{'id':_0x2b792a['params']['id']}})[_0xc6c5('0x24')](handleEntityNotFound(_0x7ec7ff,null))[_0xc6c5('0x24')](saveUpdates(_0x2b792a[_0xc6c5('0x47')],null))[_0xc6c5('0x24')](respondWithResult(_0x7ec7ff,null))[_0xc6c5('0x42')](handleError(_0x7ec7ff,null));};exports['destroy']=function(_0x37bd70,_0x123bba){return db[_0xc6c5('0x2b')][_0xc6c5('0x45')]({'where':{'id':_0x37bd70[_0xc6c5('0x48')]['id']}})[_0xc6c5('0x24')](handleEntityNotFound(_0x123bba,null))[_0xc6c5('0x24')](removeEntity(_0x123bba,null))[_0xc6c5('0x42')](handleError(_0x123bba,null));};
\ No newline at end of file
+var _0xad5e=['bluebird','util','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','hasOwnProperty','sort','pick','where','merge','VIRTUAL','options','Dynamics365Field','include','show','params','keys','fields','find','catch','create','body','rimraf','fast-json-patch','request-promise','moment'];(function(_0x314c89,_0x3c50a1){var _0x29926b=function(_0x1eb3cf){while(--_0x1eb3cf){_0x314c89['push'](_0x314c89['shift']());}};_0x29926b(++_0x3c50a1);}(_0xad5e,0x18e));var _0xead5=function(_0x3d3379,_0x4c9bc1){_0x3d3379=_0x3d3379-0x0;var _0x358633=_0xad5e[_0x3d3379];return _0x358633;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xead5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xead5('0x1'));var rp=require(_0xead5('0x2'));var moment=require(_0xead5('0x3'));var BPromise=require(_0xead5('0x4'));var Mustache=require('mustache');var util=require(_0xead5('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xead5('0x6'));var fs=require('fs');var fs_extra=require(_0xead5('0x7'));var _=require(_0xead5('0x8'));var squel=require(_0xead5('0x9'));var crypto=require('crypto');var jsforce=require(_0xead5('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xead5('0xb'));var querystring=require('querystring');var Papa=require(_0xead5('0xc'));var Redis=require(_0xead5('0xd'));var authService=require(_0xead5('0xe'));var qs=require(_0xead5('0xf'));var as=require(_0xead5('0x10'));var hardwareService=require(_0xead5('0x11'));var logger=require(_0xead5('0x12'))(_0xead5('0x13'));var utils=require(_0xead5('0x14'));var config=require(_0xead5('0x15'));var licenseUtil=require(_0xead5('0x16'));var db=require(_0xead5('0x17'))['db'];function respondWithStatusCode(_0x360ba7,_0x4d6cc7){_0x4d6cc7=_0x4d6cc7||0xcc;return function(_0x25e355){if(_0x25e355){return _0x360ba7[_0xead5('0x18')](_0x4d6cc7);}return _0x360ba7[_0xead5('0x19')](_0x4d6cc7)[_0xead5('0x1a')]();};}function respondWithResult(_0x5e4c7c,_0x3401c0){_0x3401c0=_0x3401c0||0xc8;return function(_0x51caa2){if(_0x51caa2){return _0x5e4c7c[_0xead5('0x19')](_0x3401c0)['json'](_0x51caa2);}};}function respondWithFilteredResult(_0x19316b,_0x556275){return function(_0x4620cc){if(_0x4620cc){var _0x2b57c2=typeof _0x556275[_0xead5('0x1b')]==='undefined'&&typeof _0x556275[_0xead5('0x1c')]==='undefined';var _0x754202=_0x4620cc['count'];var _0x6194ad=_0x2b57c2?0x0:_0x556275[_0xead5('0x1b')];var _0x3b60f8=_0x2b57c2?_0x4620cc[_0xead5('0x1d')]:_0x556275[_0xead5('0x1b')]+_0x556275[_0xead5('0x1c')];var _0x5dac56;if(_0x3b60f8>=_0x754202){_0x3b60f8=_0x754202;_0x5dac56=0xc8;}else{_0x5dac56=0xce;}_0x19316b[_0xead5('0x19')](_0x5dac56);return _0x19316b[_0xead5('0x1e')](_0xead5('0x1f'),_0x6194ad+'-'+_0x3b60f8+'/'+_0x754202)[_0xead5('0x20')](_0x4620cc);}return null;};}function patchUpdates(_0x4915c3){return function(_0x44576e){try{jsonpatch['apply'](_0x44576e,_0x4915c3,!![]);}catch(_0x57c69d){return BPromise['reject'](_0x57c69d);}return _0x44576e['save']();};}function saveUpdates(_0x2eaf9f,_0x166697){return function(_0x4421d6){if(_0x4421d6){return _0x4421d6[_0xead5('0x21')](_0x2eaf9f)[_0xead5('0x22')](function(_0x8ee372){return _0x8ee372;});}return null;};}function removeEntity(_0x442ef8,_0x4095dd){return function(_0x9e0ec0){if(_0x9e0ec0){return _0x9e0ec0[_0xead5('0x23')]()[_0xead5('0x22')](function(){_0x442ef8[_0xead5('0x19')](0xcc)[_0xead5('0x1a')]();});}};}function handleEntityNotFound(_0x32985d,_0x4c8580){return function(_0x1c7fd3){if(!_0x1c7fd3){_0x32985d[_0xead5('0x18')](0x194);}return _0x1c7fd3;};}function handleError(_0x48f50a,_0x170209){_0x170209=_0x170209||0x1f4;return function(_0x23ed79){logger[_0xead5('0x24')](_0x23ed79[_0xead5('0x25')]);if(_0x23ed79[_0xead5('0x26')]){delete _0x23ed79[_0xead5('0x26')];}_0x48f50a[_0xead5('0x19')](_0x170209)[_0xead5('0x27')](_0x23ed79);};}exports['index']=function(_0x234569,_0xa0d922){var _0x2e1c93={},_0x271b90={},_0x3ce2a2={'count':0x0,'rows':[]};var _0x2f2ec6=_[_0xead5('0x28')](db['Dynamics365Field'][_0xead5('0x29')],function(_0x598666){return{'name':_0x598666[_0xead5('0x2a')],'type':_0x598666[_0xead5('0x2b')][_0xead5('0x2c')]};});_0x271b90[_0xead5('0x2d')]=_[_0xead5('0x28')](_0x2f2ec6,'name');_0x271b90['query']=_['keys'](_0x234569[_0xead5('0x2e')]);_0x271b90[_0xead5('0x2f')]=_[_0xead5('0x30')](_0x271b90[_0xead5('0x2d')],_0x271b90['query']);_0x2e1c93[_0xead5('0x31')]=_['intersection'](_0x271b90[_0xead5('0x2d')],qs['fields'](_0x234569[_0xead5('0x2e')]['fields']));_0x2e1c93[_0xead5('0x31')]=_0x2e1c93[_0xead5('0x31')]['length']?_0x2e1c93[_0xead5('0x31')]:_0x271b90[_0xead5('0x2d')];if(!_0x234569[_0xead5('0x2e')][_0xead5('0x32')]('nolimit')){_0x2e1c93['limit']=qs[_0xead5('0x1c')](_0x234569['query']['limit']);_0x2e1c93[_0xead5('0x1b')]=qs[_0xead5('0x1b')](_0x234569[_0xead5('0x2e')][_0xead5('0x1b')]);}_0x2e1c93['order']=qs[_0xead5('0x33')](_0x234569['query'][_0xead5('0x33')]);_0x2e1c93['where']=qs[_0xead5('0x2f')](_[_0xead5('0x34')](_0x234569[_0xead5('0x2e')],_0x271b90[_0xead5('0x2f')]),_0x2f2ec6);if(_0x234569[_0xead5('0x2e')]['filter']){_0x2e1c93[_0xead5('0x35')]=_[_0xead5('0x36')](_0x2e1c93[_0xead5('0x35')],{'$or':_[_0xead5('0x28')](_0x2f2ec6,function(_0x3c0753){if(_0x3c0753[_0xead5('0x2b')]!==_0xead5('0x37')){var _0x569589={};_0x569589[_0x3c0753[_0xead5('0x26')]]={'$like':'%'+_0x234569[_0xead5('0x2e')]['filter']+'%'};return _0x569589;}})});}_0x2e1c93=_[_0xead5('0x36')]({},_0x2e1c93,_0x234569[_0xead5('0x38')]);var _0x322676={'where':_0x2e1c93['where']};return db[_0xead5('0x39')]['count'](_0x322676)['then'](function(_0x24d7fe){_0x3ce2a2[_0xead5('0x1d')]=_0x24d7fe;if(_0x234569[_0xead5('0x2e')]['includeAll']){_0x2e1c93[_0xead5('0x3a')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x2e1c93);})[_0xead5('0x22')](function(_0x58fddf){_0x3ce2a2['rows']=_0x58fddf;return _0x3ce2a2;})['then'](respondWithFilteredResult(_0xa0d922,_0x2e1c93))['catch'](handleError(_0xa0d922,null));};exports[_0xead5('0x3b')]=function(_0xad8a16,_0x5f174b){var _0x4667ea={'raw':!![],'where':{'id':_0xad8a16[_0xead5('0x3c')]['id']}},_0x5f1e52={};_0x5f1e52['model']=_[_0xead5('0x3d')](db[_0xead5('0x39')][_0xead5('0x29')]);_0x5f1e52['query']=_[_0xead5('0x3d')](_0xad8a16['query']);_0x5f1e52[_0xead5('0x2f')]=_[_0xead5('0x30')](_0x5f1e52[_0xead5('0x2d')],_0x5f1e52[_0xead5('0x2e')]);_0x4667ea[_0xead5('0x31')]=_['intersection'](_0x5f1e52['model'],qs[_0xead5('0x3e')](_0xad8a16['query'][_0xead5('0x3e')]));_0x4667ea[_0xead5('0x31')]=_0x4667ea[_0xead5('0x31')]['length']?_0x4667ea[_0xead5('0x31')]:_0x5f1e52[_0xead5('0x2d')];if(_0xad8a16[_0xead5('0x2e')]['includeAll']){_0x4667ea[_0xead5('0x3a')]=[{'all':!![]}];}_0x4667ea=_[_0xead5('0x36')]({},_0x4667ea,_0xad8a16[_0xead5('0x38')]);return db[_0xead5('0x39')][_0xead5('0x3f')](_0x4667ea)[_0xead5('0x22')](handleEntityNotFound(_0x5f174b,null))[_0xead5('0x22')](respondWithResult(_0x5f174b,null))[_0xead5('0x40')](handleError(_0x5f174b,null));};exports[_0xead5('0x41')]=function(_0x5201b5,_0x729b8){return db[_0xead5('0x39')][_0xead5('0x41')](_0x5201b5['body'],{})[_0xead5('0x22')](respondWithResult(_0x729b8,0xc9))[_0xead5('0x40')](handleError(_0x729b8,null));};exports['update']=function(_0xa24f8d,_0xc4041a){if(_0xa24f8d[_0xead5('0x42')]['id']){delete _0xa24f8d[_0xead5('0x42')]['id'];}return db['Dynamics365Field'][_0xead5('0x3f')]({'where':{'id':_0xa24f8d[_0xead5('0x3c')]['id']}})[_0xead5('0x22')](handleEntityNotFound(_0xc4041a,null))[_0xead5('0x22')](saveUpdates(_0xa24f8d[_0xead5('0x42')],null))[_0xead5('0x22')](respondWithResult(_0xc4041a,null))[_0xead5('0x40')](handleError(_0xc4041a,null));};exports[_0xead5('0x23')]=function(_0x1fae77,_0x141950){return db[_0xead5('0x39')][_0xead5('0x3f')]({'where':{'id':_0x1fae77[_0xead5('0x3c')]['id']}})[_0xead5('0x22')](handleEntityNotFound(_0x141950,null))['then'](removeEntity(_0x141950,null))[_0xead5('0x40')](handleError(_0x141950,null));};
\ No newline at end of file
index 3d9a286..8055a79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c0=['Dynamics365Field','int_dynamics365_fields','idField','FieldId','util','api','bluebird','path','rimraf','../../config/environment','./intDynamics365Field.attributes','define'];(function(_0x1070b3,_0x5348d3){var _0x16e491=function(_0x1bfed5){while(--_0x1bfed5){_0x1070b3['push'](_0x1070b3['shift']());}};_0x16e491(++_0x5348d3);}(_0x33c0,0x160));var _0x033c=function(_0x1ad770,_0x28bd83){_0x1ad770=_0x1ad770-0x0;var _0x42132f=_0x33c0[_0x1ad770];return _0x42132f;};'use strict';var _=require('lodash');var util=require(_0x033c('0x0'));var logger=require('../../config/logger')(_0x033c('0x1'));var moment=require('moment');var BPromise=require(_0x033c('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x033c('0x3'));var rimraf=require(_0x033c('0x4'));var config=require(_0x033c('0x5'));var attributes=require(_0x033c('0x6'));module['exports']=function(_0x25d04f,_0x2ce6a7){return _0x25d04f[_0x033c('0x7')](_0x033c('0x8'),attributes,{'tableName':_0x033c('0x9'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':[_0x033c('0xa'),_0x033c('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf005=['bluebird','request-promise','path','rimraf','exports','define','int_dynamics365_fields','dynamics365_unique_index','FieldId','../../config/logger','api','moment'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xf005,0x11d));var _0x5f00=function(_0x43cbb0,_0x2d1fa8){_0x43cbb0=_0x43cbb0-0x0;var _0x5ce87e=_0xf005[_0x43cbb0];return _0x5ce87e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5f00('0x0'))(_0x5f00('0x1'));var moment=require(_0x5f00('0x2'));var BPromise=require(_0x5f00('0x3'));var rp=require(_0x5f00('0x4'));var fs=require('fs');var path=require(_0x5f00('0x5'));var rimraf=require(_0x5f00('0x6'));var config=require('../../config/environment');var attributes=require('./intDynamics365Field.attributes');module[_0x5f00('0x7')]=function(_0x5e7a48,_0x5508d6){return _0x5e7a48[_0x5f00('0x8')]('Dynamics365Field',attributes,{'tableName':_0x5f00('0x9'),'paranoid':![],'indexes':[{'name':_0x5f00('0xa'),'fields':['idField',_0x5f00('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index dd06e7a..7b41579 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3046=['request','then','info','Dynamics365Field,\x20%s,\x20%s','request\x20sent','Dynamics365Field,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x5966e2,_0x32749b){var _0x347a5c=function(_0x4d6ae1){while(--_0x4d6ae1){_0x5966e2['push'](_0x5966e2['shift']());}};_0x347a5c(++_0x32749b);}(_0x3046,0x180));var _0x6304=function(_0x2f7e9c,_0x1888a2){_0x2f7e9c=_0x2f7e9c-0x0;var _0x2c50aa=_0x3046[_0x2f7e9c];return _0x2c50aa;};'use strict';var _=require(_0x6304('0x0'));var util=require(_0x6304('0x1'));var moment=require(_0x6304('0x2'));var BPromise=require(_0x6304('0x3'));var rs=require(_0x6304('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6304('0x5'))['db'];var utils=require(_0x6304('0x6'));var logger=require(_0x6304('0x7'))('rpc');var config=require(_0x6304('0x8'));var jayson=require(_0x6304('0x9'));var client=jayson[_0x6304('0xa')][_0x6304('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c124f,_0x2bfb99,_0x4f24a8){return new BPromise(function(_0x4af249,_0x3b29e1){return client[_0x6304('0xc')](_0x5c124f,_0x4f24a8)[_0x6304('0xd')](function(_0x58557e){logger[_0x6304('0xe')](_0x6304('0xf'),_0x2bfb99,_0x6304('0x10'));logger['debug'](_0x6304('0x11'),_0x2bfb99,_0x6304('0x10'),JSON[_0x6304('0x12')](_0x58557e));if(_0x58557e[_0x6304('0x13')]){if(_0x58557e[_0x6304('0x13')][_0x6304('0x14')]===0x1f4){logger['error'](_0x6304('0xf'),_0x2bfb99,_0x58557e[_0x6304('0x13')]['message']);return _0x3b29e1(_0x58557e[_0x6304('0x13')][_0x6304('0x15')]);}logger['error']('Dynamics365Field,\x20%s,\x20%s',_0x2bfb99,_0x58557e['error'][_0x6304('0x15')]);return _0x4af249(_0x58557e[_0x6304('0x13')]['message']);}else{logger[_0x6304('0xe')](_0x6304('0xf'),_0x2bfb99,_0x6304('0x10'));_0x4af249(_0x58557e['result'][_0x6304('0x15')]);}})['catch'](function(_0x9fdd4){logger[_0x6304('0x13')](_0x6304('0xf'),_0x2bfb99,_0x9fdd4);_0x3b29e1(_0x9fdd4);});});}
\ No newline at end of file
+var _0x1137=['Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','code','error','message','request\x20sent','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x3330e4,_0x24dad5){var _0xd68da8=function(_0x412163){while(--_0x412163){_0x3330e4['push'](_0x3330e4['shift']());}};_0xd68da8(++_0x24dad5);}(_0x1137,0x1ec));var _0x7113=function(_0x120376,_0x571898){_0x120376=_0x120376-0x0;var _0x28c529=_0x1137[_0x120376];return _0x28c529;};'use strict';var _=require('lodash');var util=require(_0x7113('0x0'));var moment=require(_0x7113('0x1'));var BPromise=require(_0x7113('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7113('0x3'));var db=require(_0x7113('0x4'))['db'];var utils=require(_0x7113('0x5'));var logger=require(_0x7113('0x6'))(_0x7113('0x7'));var config=require(_0x7113('0x8'));var jayson=require(_0x7113('0x9'));var client=jayson[_0x7113('0xa')][_0x7113('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4d46c4,_0x845199,_0x513609){return new BPromise(function(_0x5c82ad,_0x5e8f4b){return client['request'](_0x4d46c4,_0x513609)[_0x7113('0xc')](function(_0x86f68b){logger[_0x7113('0xd')](_0x7113('0xe'),_0x845199,'request\x20sent');logger[_0x7113('0xf')](_0x7113('0x10'),_0x845199,'request\x20sent',JSON['stringify'](_0x86f68b));if(_0x86f68b['error']){if(_0x86f68b['error'][_0x7113('0x11')]===0x1f4){logger['error'](_0x7113('0xe'),_0x845199,_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);return _0x5e8f4b(_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);}logger[_0x7113('0x12')]('Dynamics365Field,\x20%s,\x20%s',_0x845199,_0x86f68b[_0x7113('0x12')]['message']);return _0x5c82ad(_0x86f68b[_0x7113('0x12')][_0x7113('0x13')]);}else{logger[_0x7113('0xd')](_0x7113('0xe'),_0x845199,_0x7113('0x14'));_0x5c82ad(_0x86f68b[_0x7113('0x15')][_0x7113('0x13')]);}})[_0x7113('0x16')](function(_0x5dd6a6){logger[_0x7113('0x12')](_0x7113('0xe'),_0x845199,_0x5dd6a6);_0x5e8f4b(_0x5dd6a6);});});}
\ No newline at end of file
index 0765fab..8107284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0b5=['addConfiguration','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','isAuthenticated','index','get','show','getConfigurations','/:id/fields','getFields','post','create','/:id/configurations'];(function(_0x10952c,_0x31b1f9){var _0x1e6df4=function(_0x34d1c7){while(--_0x34d1c7){_0x10952c['push'](_0x10952c['shift']());}};_0x1e6df4(++_0x31b1f9);}(_0xf0b5,0x18f));var _0x5f0b=function(_0x504439,_0x592c72){_0x504439=_0x504439-0x0;var _0x22a0e0=_0xf0b5[_0x504439];return _0x22a0e0;};'use strict';var multer=require(_0x5f0b('0x0'));var util=require(_0x5f0b('0x1'));var path=require(_0x5f0b('0x2'));var timeout=require(_0x5f0b('0x3'));var express=require(_0x5f0b('0x4'));var router=express[_0x5f0b('0x5')]();var fs_extra=require(_0x5f0b('0x6'));var auth=require(_0x5f0b('0x7'));var interaction=require(_0x5f0b('0x8'));var config=require(_0x5f0b('0x9'));var controller=require(_0x5f0b('0xa'));router['get']('/',auth[_0x5f0b('0xb')](),controller[_0x5f0b('0xc')]);router[_0x5f0b('0xd')]('/:id',auth[_0x5f0b('0xb')](),controller[_0x5f0b('0xe')]);router[_0x5f0b('0xd')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x5f0b('0xf')]);router[_0x5f0b('0xd')](_0x5f0b('0x10'),auth['isAuthenticated'](),controller[_0x5f0b('0x11')]);router[_0x5f0b('0x12')]('/',auth[_0x5f0b('0xb')](),controller[_0x5f0b('0x13')]);router['post'](_0x5f0b('0x14'),auth['isAuthenticated'](),controller[_0x5f0b('0x15')]);router[_0x5f0b('0x16')](_0x5f0b('0x17'),auth[_0x5f0b('0xb')](),controller[_0x5f0b('0x18')]);router[_0x5f0b('0x19')]('/:id',auth['isAuthenticated'](),controller[_0x5f0b('0x1a')]);module[_0x5f0b('0x1b')]=router;
\ No newline at end of file
+var _0xa07a=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','/:id','delete'];(function(_0x378f75,_0x13a8ed){var _0x90addc=function(_0x3f4849){while(--_0x3f4849){_0x378f75['push'](_0x378f75['shift']());}};_0x90addc(++_0x13a8ed);}(_0xa07a,0xb2));var _0xaa07=function(_0x3ced1e,_0xfb6834){_0x3ced1e=_0x3ced1e-0x0;var _0x4c35f9=_0xa07a[_0x3ced1e];return _0x4c35f9;};'use strict';var multer=require(_0xaa07('0x0'));var util=require(_0xaa07('0x1'));var path=require(_0xaa07('0x2'));var timeout=require(_0xaa07('0x3'));var express=require(_0xaa07('0x4'));var router=express[_0xaa07('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xaa07('0x6'));var interaction=require(_0xaa07('0x7'));var config=require(_0xaa07('0x8'));var controller=require('./intFreshdeskAccount.controller');router[_0xaa07('0x9')]('/',auth[_0xaa07('0xa')](),controller[_0xaa07('0xb')]);router[_0xaa07('0x9')]('/:id',auth[_0xaa07('0xa')](),controller[_0xaa07('0xc')]);router['get'](_0xaa07('0xd'),auth[_0xaa07('0xa')](),controller[_0xaa07('0xe')]);router[_0xaa07('0x9')](_0xaa07('0xf'),auth[_0xaa07('0xa')](),controller[_0xaa07('0x10')]);router[_0xaa07('0x11')]('/',auth[_0xaa07('0xa')](),controller['create']);router['post'](_0xaa07('0xd'),auth['isAuthenticated'](),controller['addConfiguration']);router['put'](_0xaa07('0x12'),auth[_0xaa07('0xa')](),controller['update']);router[_0xaa07('0x13')](_0xaa07('0x12'),auth['isAuthenticated'](),controller[_0xaa07('0x14')]);module[_0xaa07('0x15')]=router;
\ No newline at end of file
index 6aab685..467b5af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['sequelize','exports','STRING','username','remoteUri'];(function(_0x5aedbc,_0x41eab8){var _0xc9a701=function(_0x3e965e){while(--_0x3e965e){_0x5aedbc['push'](_0x5aedbc['shift']());}};_0xc9a701(++_0x41eab8);}(_0x781d,0x14a));var _0xd781=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0x781d[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0xd781('0x0'));module[_0xd781('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xd781('0x2')],'unique':_0xd781('0x3')},'apiKey':{'type':Sequelize[_0xd781('0x2')]},'remoteUri':{'type':Sequelize[_0xd781('0x2')],'unique':_0xd781('0x4')},'serverUrl':{'type':Sequelize[_0xd781('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x0424=['username','STRING'];(function(_0x36af33,_0x561f9f){var _0x467676=function(_0x553072){while(--_0x553072){_0x36af33['push'](_0x36af33['shift']());}};_0x467676(++_0x561f9f);}(_0x0424,0x159));var _0x4042=function(_0xcc6ce4,_0x2979cf){_0xcc6ce4=_0xcc6ce4-0x0;var _0x29566e=_0x0424[_0xcc6ce4];return _0x29566e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x4042('0x0')]},'description':{'type':Sequelize[_0x4042('0x0')]},'username':{'type':Sequelize[_0x4042('0x0')],'unique':_0x4042('0x1')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x4042('0x0')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index a8d63b7..02dada2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50c1=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','destroy','then','error','name','index','map','FreshdeskAccount','rawAttributes','fieldName','type','key','keys','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','params','find','create','body','findOne','FreshdeskConfiguration','getConfigurations','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','getFields','remoteUri','slice','substring','lastIndexOf','GET','%s/%s','api/v2/ticket_fields','format','Basic\x20%s','%s:X','toString','base64','requester','subject','agent','priority','source','ticket_type','group','remove','default','custom_text','custom_dropdown','choices','capitalize','test','statusCode','stringify','send','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x187ee1,_0x3fd1e6){var _0x388160=function(_0x542dd2){while(--_0x542dd2){_0x187ee1['push'](_0x187ee1['shift']());}};_0x388160(++_0x3fd1e6);}(_0x50c1,0x1b6));var _0x150c=function(_0x3ca2dd,_0x56fd93){_0x3ca2dd=_0x3ca2dd-0x0;var _0x5d5b7a=_0x50c1[_0x3ca2dd];return _0x5d5b7a;};'use strict';var emlformat=require(_0x150c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x150c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x150c('0x2'));var moment=require(_0x150c('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x150c('0x4'));var util=require(_0x150c('0x5'));var path=require(_0x150c('0x6'));var sox=require(_0x150c('0x7'));var csv=require('to-csv');var ejs=require(_0x150c('0x8'));var fs=require('fs');var fs_extra=require(_0x150c('0x9'));var _=require('lodash');var squel=require(_0x150c('0xa'));var crypto=require(_0x150c('0xb'));var jsforce=require(_0x150c('0xc'));var deskjs=require(_0x150c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x150c('0xe'));var Papa=require(_0x150c('0xf'));var Redis=require(_0x150c('0x10'));var authService=require(_0x150c('0x11'));var qs=require(_0x150c('0x12'));var as=require(_0x150c('0x13'));var hardwareService=require(_0x150c('0x14'));var logger=require('../../config/logger')(_0x150c('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x150c('0x16'));var db=require(_0x150c('0x17'))['db'];var integrations=require(_0x150c('0x18'));function respondWithStatusCode(_0x110e2f,_0x1d9959){_0x1d9959=_0x1d9959||0xcc;return function(_0x1c42b2){if(_0x1c42b2){return _0x110e2f[_0x150c('0x19')](_0x1d9959);}return _0x110e2f[_0x150c('0x1a')](_0x1d9959)[_0x150c('0x1b')]();};}function respondWithResult(_0x50c0a7,_0x5d6950){_0x5d6950=_0x5d6950||0xc8;return function(_0x5412ca){if(_0x5412ca){return _0x50c0a7[_0x150c('0x1a')](_0x5d6950)[_0x150c('0x1c')](_0x5412ca);}};}function respondWithFilteredResult(_0x269861,_0x168e47){return function(_0x2add86){if(_0x2add86){var _0x11ff13=typeof _0x168e47['offset']===_0x150c('0x1d')&&typeof _0x168e47[_0x150c('0x1e')]==='undefined';var _0x46c10e=_0x2add86[_0x150c('0x1f')];var _0x5bc046=_0x11ff13?0x0:_0x168e47[_0x150c('0x20')];var _0x460221=_0x11ff13?_0x2add86['count']:_0x168e47[_0x150c('0x20')]+_0x168e47['limit'];var _0x21149b;if(_0x460221>=_0x46c10e){_0x460221=_0x46c10e;_0x21149b=0xc8;}else{_0x21149b=0xce;}_0x269861['status'](_0x21149b);return _0x269861['set']('Content-Range',_0x5bc046+'-'+_0x460221+'/'+_0x46c10e)[_0x150c('0x1c')](_0x2add86);}return null;};}function patchUpdates(_0x2d4e47){return function(_0x256f7c){try{jsonpatch[_0x150c('0x21')](_0x256f7c,_0x2d4e47,!![]);}catch(_0x1fd1e7){return BPromise[_0x150c('0x22')](_0x1fd1e7);}return _0x256f7c[_0x150c('0x23')]();};}function saveUpdates(_0x3eff82,_0x8b1177){return function(_0xce2eca){if(_0xce2eca){return _0xce2eca['update'](_0x3eff82)['then'](function(_0x1b0c6c){return _0x1b0c6c;});}return null;};}function removeEntity(_0x3afccf,_0x4061c5){return function(_0x25e31c){if(_0x25e31c){return _0x25e31c[_0x150c('0x24')]()[_0x150c('0x25')](function(){_0x3afccf[_0x150c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x92d995,_0x186b29){return function(_0x551806){if(!_0x551806){_0x92d995[_0x150c('0x19')](0x194);}return _0x551806;};}function handleError(_0x4c1da9,_0x42ecb1){_0x42ecb1=_0x42ecb1||0x1f4;return function(_0x1fdd94){logger[_0x150c('0x26')](_0x1fdd94['stack']);if(_0x1fdd94[_0x150c('0x27')]){delete _0x1fdd94[_0x150c('0x27')];}_0x4c1da9[_0x150c('0x1a')](_0x42ecb1)['send'](_0x1fdd94);};}exports[_0x150c('0x28')]=function(_0x5721d7,_0x54eaf7){var _0xd94002={},_0x59f362={},_0x5b7bb5={'count':0x0,'rows':[]};var _0x425764=_[_0x150c('0x29')](db[_0x150c('0x2a')][_0x150c('0x2b')],function(_0x3a042c){return{'name':_0x3a042c[_0x150c('0x2c')],'type':_0x3a042c[_0x150c('0x2d')][_0x150c('0x2e')]};});_0x59f362['model']=_[_0x150c('0x29')](_0x425764,_0x150c('0x27'));_0x59f362['query']=_[_0x150c('0x2f')](_0x5721d7[_0x150c('0x30')]);_0x59f362['filters']=_['intersection'](_0x59f362[_0x150c('0x31')],_0x59f362[_0x150c('0x30')]);_0xd94002[_0x150c('0x32')]=_[_0x150c('0x33')](_0x59f362[_0x150c('0x31')],qs[_0x150c('0x34')](_0x5721d7['query'][_0x150c('0x34')]));_0xd94002[_0x150c('0x32')]=_0xd94002[_0x150c('0x32')][_0x150c('0x35')]?_0xd94002['attributes']:_0x59f362[_0x150c('0x31')];if(!_0x5721d7['query'][_0x150c('0x36')](_0x150c('0x37'))){_0xd94002[_0x150c('0x1e')]=qs['limit'](_0x5721d7[_0x150c('0x30')][_0x150c('0x1e')]);_0xd94002[_0x150c('0x20')]=qs[_0x150c('0x20')](_0x5721d7[_0x150c('0x30')][_0x150c('0x20')]);}_0xd94002[_0x150c('0x38')]=qs['sort'](_0x5721d7[_0x150c('0x30')][_0x150c('0x39')]);_0xd94002[_0x150c('0x3a')]=qs[_0x150c('0x3b')](_['pick'](_0x5721d7[_0x150c('0x30')],_0x59f362[_0x150c('0x3b')]),_0x425764);if(_0x5721d7[_0x150c('0x30')][_0x150c('0x3c')]){_0xd94002[_0x150c('0x3a')]=_['merge'](_0xd94002[_0x150c('0x3a')],{'$or':_['map'](_0x425764,function(_0x47fcf4){if(_0x47fcf4[_0x150c('0x2d')]!==_0x150c('0x3d')){var _0x454e05={};_0x454e05[_0x47fcf4['name']]={'$like':'%'+_0x5721d7[_0x150c('0x30')][_0x150c('0x3c')]+'%'};return _0x454e05;}})});}_0xd94002=_[_0x150c('0x3e')]({},_0xd94002,_0x5721d7[_0x150c('0x3f')]);var _0x242157={'where':_0xd94002[_0x150c('0x3a')]};return db[_0x150c('0x2a')][_0x150c('0x1f')](_0x242157)[_0x150c('0x25')](function(_0x52cb4e){_0x5b7bb5['count']=_0x52cb4e;if(_0x5721d7[_0x150c('0x30')][_0x150c('0x40')]){_0xd94002[_0x150c('0x41')]=[{'all':!![]}];}return db['FreshdeskAccount'][_0x150c('0x42')](_0xd94002);})[_0x150c('0x25')](function(_0x1b16ef){_0x5b7bb5[_0x150c('0x43')]=_0x1b16ef;return _0x5b7bb5;})['then'](respondWithFilteredResult(_0x54eaf7,_0xd94002))[_0x150c('0x44')](handleError(_0x54eaf7,null));};exports['show']=function(_0x4b5d21,_0x2b3d27){var _0x3b6e03={'raw':![],'where':{'id':_0x4b5d21[_0x150c('0x45')]['id']}},_0x4f9a73={};_0x4f9a73[_0x150c('0x31')]=_[_0x150c('0x2f')](db[_0x150c('0x2a')]['rawAttributes']);_0x4f9a73[_0x150c('0x30')]=_[_0x150c('0x2f')](_0x4b5d21[_0x150c('0x30')]);_0x4f9a73[_0x150c('0x3b')]=_[_0x150c('0x33')](_0x4f9a73[_0x150c('0x31')],_0x4f9a73[_0x150c('0x30')]);_0x3b6e03['attributes']=_[_0x150c('0x33')](_0x4f9a73[_0x150c('0x31')],qs['fields'](_0x4b5d21[_0x150c('0x30')]['fields']));_0x3b6e03[_0x150c('0x32')]=_0x3b6e03[_0x150c('0x32')][_0x150c('0x35')]?_0x3b6e03[_0x150c('0x32')]:_0x4f9a73[_0x150c('0x31')];if(_0x4b5d21['query'][_0x150c('0x40')]){_0x3b6e03[_0x150c('0x41')]=[{'all':!![]}];}_0x3b6e03=_[_0x150c('0x3e')]({},_0x3b6e03,_0x4b5d21[_0x150c('0x3f')]);return db[_0x150c('0x2a')][_0x150c('0x46')](_0x3b6e03)[_0x150c('0x25')](handleEntityNotFound(_0x2b3d27,null))[_0x150c('0x25')](respondWithResult(_0x2b3d27,null))['catch'](handleError(_0x2b3d27,null));};exports['create']=function(_0x46c159,_0xd9bb6f){return db[_0x150c('0x2a')][_0x150c('0x47')](_0x46c159[_0x150c('0x48')],{})[_0x150c('0x25')](respondWithResult(_0xd9bb6f,0xc9))[_0x150c('0x44')](handleError(_0xd9bb6f,null));};exports['update']=function(_0x3f39da,_0x254e55){if(_0x3f39da[_0x150c('0x48')]['id']){delete _0x3f39da[_0x150c('0x48')]['id'];}return db[_0x150c('0x2a')]['find']({'where':{'id':_0x3f39da[_0x150c('0x45')]['id']}})['then'](handleEntityNotFound(_0x254e55,null))['then'](saveUpdates(_0x3f39da[_0x150c('0x48')],null))[_0x150c('0x25')](respondWithResult(_0x254e55,null))['catch'](handleError(_0x254e55,null));};exports[_0x150c('0x24')]=function(_0x141e66,_0x41b668){return db['FreshdeskAccount'][_0x150c('0x46')]({'where':{'id':_0x141e66['params']['id']}})[_0x150c('0x25')](handleEntityNotFound(_0x41b668,null))[_0x150c('0x25')](removeEntity(_0x41b668,null))[_0x150c('0x44')](handleError(_0x41b668,null));};exports['getConfigurations']=function(_0x344e81,_0x46146d,_0x5e0218){var _0x1a5351={};var _0x4f06ec={};var _0x4205c5;var _0x13f84d;return db['FreshdeskAccount'][_0x150c('0x49')]({'where':{'id':_0x344e81[_0x150c('0x45')]['id']}})[_0x150c('0x25')](handleEntityNotFound(_0x46146d,null))[_0x150c('0x25')](function(_0x36540e){if(_0x36540e){_0x4205c5=_0x36540e;_0x4f06ec[_0x150c('0x31')]=_[_0x150c('0x2f')](db[_0x150c('0x4a')]['rawAttributes']);_0x4f06ec[_0x150c('0x30')]=_[_0x150c('0x2f')](_0x344e81[_0x150c('0x30')]);_0x4f06ec['filters']=_['intersection'](_0x4f06ec[_0x150c('0x31')],_0x4f06ec[_0x150c('0x30')]);_0x1a5351[_0x150c('0x32')]=_['intersection'](_0x4f06ec[_0x150c('0x31')],qs[_0x150c('0x34')](_0x344e81['query'][_0x150c('0x34')]));_0x1a5351[_0x150c('0x32')]=_0x1a5351[_0x150c('0x32')]['length']?_0x1a5351['attributes']:_0x4f06ec[_0x150c('0x31')];_0x1a5351[_0x150c('0x38')]=qs[_0x150c('0x39')](_0x344e81[_0x150c('0x30')][_0x150c('0x39')]);_0x1a5351[_0x150c('0x3a')]=qs[_0x150c('0x3b')](_['pick'](_0x344e81[_0x150c('0x30')],_0x4f06ec[_0x150c('0x3b')]));if(_0x344e81[_0x150c('0x30')]['filter']){_0x1a5351[_0x150c('0x3a')]=_[_0x150c('0x3e')](_0x1a5351[_0x150c('0x3a')],{'$or':_[_0x150c('0x29')](_0x1a5351[_0x150c('0x32')],function(_0x4a8290){var _0x2e28cc={};_0x2e28cc[_0x4a8290]={'$like':'%'+_0x344e81['query'][_0x150c('0x3c')]+'%'};return _0x2e28cc;})});}_0x1a5351=_['merge']({},_0x1a5351,_0x344e81[_0x150c('0x3f')]);return _0x4205c5[_0x150c('0x4b')](_0x1a5351);}})[_0x150c('0x25')](function(_0xd5311e){if(_0xd5311e){_0x13f84d=_0xd5311e[_0x150c('0x35')];if(!_0x344e81['query'][_0x150c('0x36')](_0x150c('0x37'))){_0x1a5351['limit']=qs[_0x150c('0x1e')](_0x344e81[_0x150c('0x30')]['limit']);_0x1a5351[_0x150c('0x20')]=qs[_0x150c('0x20')](_0x344e81[_0x150c('0x30')][_0x150c('0x20')]);}return _0x4205c5[_0x150c('0x4b')](_0x1a5351);}})[_0x150c('0x25')](function(_0x3e2a79){if(_0x3e2a79){return _0x3e2a79?{'count':_0x13f84d,'rows':_0x3e2a79}:null;}})['then'](respondWithResult(_0x46146d,null))[_0x150c('0x44')](handleError(_0x46146d,null));};exports[_0x150c('0x4c')]=function(_0x580957,_0x2e60b8,_0x22732b){if(_0x580957['body']['id']){delete _0x580957[_0x150c('0x48')]['id'];}return db[_0x150c('0x2a')]['findOne']({'where':{'id':_0x580957[_0x150c('0x45')]['id']}})[_0x150c('0x25')](handleEntityNotFound(_0x2e60b8,null))[_0x150c('0x25')](function(_0x3474d7){if(_0x3474d7){_0x580957[_0x150c('0x48')][_0x150c('0x4d')]=_0x3474d7['id'];_0x580957[_0x150c('0x48')][_0x150c('0x4e')]=integrations[_0x150c('0x4f')](_0x580957[_0x150c('0x48')][_0x150c('0x50')],_0x580957[_0x150c('0x48')][_0x150c('0x2d')]);_0x580957[_0x150c('0x48')][_0x150c('0x51')]=integrations[_0x150c('0x52')](_0x580957[_0x150c('0x48')][_0x150c('0x50')],_0x580957[_0x150c('0x48')][_0x150c('0x2d')]);return db[_0x150c('0x4a')][_0x150c('0x47')](_0x580957[_0x150c('0x48')],{'include':[{'model':db['FreshdeskField'],'as':'Subjects'},{'model':db['FreshdeskField'],'as':'Descriptions'}]});}return null;})[_0x150c('0x25')](respondWithResult(_0x2e60b8,null))[_0x150c('0x44')](handleError(_0x2e60b8,null));};exports[_0x150c('0x53')]=function(_0x3ccdaa,_0x114a3c,_0x1a4067){var _0x5875cf='';return db[_0x150c('0x2a')][_0x150c('0x49')]({'where':{'id':_0x3ccdaa[_0x150c('0x45')]['id']},'attributes':['id',_0x150c('0x54'),'apiKey']})[_0x150c('0x25')](handleEntityNotFound(_0x114a3c,null))[_0x150c('0x25')](function(_0x386433){if(_0x386433){_0x5875cf=_0x386433[_0x150c('0x54')];var _0x5f28ab=_0x5875cf[_0x150c('0x55')](-0x1);if(_0x5f28ab==='/'){_0x5875cf=_0x5875cf[_0x150c('0x56')](0x0,_0x5875cf[_0x150c('0x57')](_0x5f28ab));}return rp({'method':_0x150c('0x58'),'uri':util['format'](_0x150c('0x59'),_0x5875cf,_0x150c('0x5a')),'headers':{'Authorization':util[_0x150c('0x5b')](_0x150c('0x5c'),new Buffer(util['format'](_0x150c('0x5d'),_0x386433['apiKey']))[_0x150c('0x5e')](_0x150c('0x5f')))},'json':!![]});}})['then'](function(_0x1f23c7){if(_0x1f23c7){var _0xb85648=[_0x150c('0x60'),_0x150c('0x61'),_0x150c('0x62'),'description',_0x150c('0x1a'),_0x150c('0x63'),'group',_0x150c('0x64'),_0x150c('0x65'),_0x150c('0x66'),'company'];_[_0x150c('0x67')](_0x1f23c7,function(_0x2a8ec9){return _0xb85648['includes'](_0x2a8ec9[_0x150c('0x27')])||!_0x2a8ec9[_0x150c('0x68')]&&_0x2a8ec9[_0x150c('0x2d')]!==_0x150c('0x69')&&_0x2a8ec9[_0x150c('0x2d')]!==_0x150c('0x6a');});return{'count':_0x1f23c7[_0x150c('0x35')],'rows':_[_0x150c('0x29')](_0x1f23c7,function(_0x1108d8){return{'id':_0x1108d8[_0x150c('0x27')],'name':_0x1108d8['label'],'custom':!_0x1108d8[_0x150c('0x68')],'options':_0x1108d8[_0x150c('0x6b')]?_[_0x150c('0x29')](_0x1108d8[_0x150c('0x6b')],function(_0x536849){return{'name':_[_0x150c('0x6c')](_0x536849),'value':_0x536849};}):[]};})};}})['then'](respondWithResult(_0x114a3c,null))[_0x150c('0x44')](function(_0x41dc17){var _0x57357e=_0x3ccdaa[_0x150c('0x30')][_0x150c('0x6d')]?0x1f4:_0x41dc17[_0x150c('0x6e')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x150c('0x53'),_0x57357e,JSON[_0x150c('0x6f')](_0x41dc17));delete _0x41dc17[_0x150c('0x27')];if(_0x57357e===0x191){_0x57357e=0x190;}_0x114a3c[_0x150c('0x1a')](_0x57357e)[_0x150c('0x70')](_0x3ccdaa[_0x150c('0x30')][_0x150c('0x6d')]?{'message':_0x150c('0x71'),'statusCode':_0x41dc17[_0x150c('0x6e')]}:_0x41dc17);});};
\ No newline at end of file
+var _0xb627=['fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','offset','limit','count','Content-Range','json','reject','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','FreshdeskAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','find','create','body','params','getConfigurations','rawAttributes','nolimit','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshdeskField','Subjects','findOne','remoteUri','slice','lastIndexOf','GET','format','%s/%s','api/v2/ticket_fields','apiKey','toString','base64','subject','agent','description','group','source','ticket_type','company','remove','includes','custom_dropdown','label','choices','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','send','eml-format','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv'];(function(_0x32cee8,_0x31c4b1){var _0x350970=function(_0x5cc901){while(--_0x5cc901){_0x32cee8['push'](_0x32cee8['shift']());}};_0x350970(++_0x31c4b1);}(_0xb627,0x144));var _0x7b62=function(_0x293bf5,_0x3613f6){_0x293bf5=_0x293bf5-0x0;var _0x30390c=_0xb627[_0x293bf5];return _0x30390c;};'use strict';var emlformat=require(_0x7b62('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7b62('0x1'));var rp=require('request-promise');var moment=require(_0x7b62('0x2'));var BPromise=require(_0x7b62('0x3'));var Mustache=require(_0x7b62('0x4'));var util=require(_0x7b62('0x5'));var path=require(_0x7b62('0x6'));var sox=require(_0x7b62('0x7'));var csv=require(_0x7b62('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7b62('0x9'));var _=require('lodash');var squel=require(_0x7b62('0xa'));var crypto=require(_0x7b62('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7b62('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7b62('0xd'));var Papa=require(_0x7b62('0xe'));var Redis=require(_0x7b62('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7b62('0x10'));var as=require(_0x7b62('0x11'));var hardwareService=require(_0x7b62('0x12'));var logger=require(_0x7b62('0x13'))(_0x7b62('0x14'));var utils=require(_0x7b62('0x15'));var config=require(_0x7b62('0x16'));var licenseUtil=require(_0x7b62('0x17'));var db=require(_0x7b62('0x18'))['db'];var integrations=require(_0x7b62('0x19'));function respondWithStatusCode(_0x2559c2,_0x2faaed){_0x2faaed=_0x2faaed||0xcc;return function(_0x413eb4){if(_0x413eb4){return _0x2559c2['sendStatus'](_0x2faaed);}return _0x2559c2[_0x7b62('0x1a')](_0x2faaed)['end']();};}function respondWithResult(_0xf53c12,_0x509d9f){_0x509d9f=_0x509d9f||0xc8;return function(_0x4602aa){if(_0x4602aa){return _0xf53c12['status'](_0x509d9f)['json'](_0x4602aa);}};}function respondWithFilteredResult(_0x38fed5,_0x4a0cdc){return function(_0x3f9afa){if(_0x3f9afa){var _0x44781f=typeof _0x4a0cdc[_0x7b62('0x1b')]==='undefined'&&typeof _0x4a0cdc[_0x7b62('0x1c')]==='undefined';var _0x315198=_0x3f9afa[_0x7b62('0x1d')];var _0x4cc586=_0x44781f?0x0:_0x4a0cdc[_0x7b62('0x1b')];var _0x5d8a48=_0x44781f?_0x3f9afa[_0x7b62('0x1d')]:_0x4a0cdc[_0x7b62('0x1b')]+_0x4a0cdc[_0x7b62('0x1c')];var _0xa3b79b;if(_0x5d8a48>=_0x315198){_0x5d8a48=_0x315198;_0xa3b79b=0xc8;}else{_0xa3b79b=0xce;}_0x38fed5[_0x7b62('0x1a')](_0xa3b79b);return _0x38fed5['set'](_0x7b62('0x1e'),_0x4cc586+'-'+_0x5d8a48+'/'+_0x315198)[_0x7b62('0x1f')](_0x3f9afa);}return null;};}function patchUpdates(_0x429cbb){return function(_0x124287){try{jsonpatch['apply'](_0x124287,_0x429cbb,!![]);}catch(_0x49a81f){return BPromise[_0x7b62('0x20')](_0x49a81f);}return _0x124287[_0x7b62('0x21')]();};}function saveUpdates(_0x136b61,_0x4c9c51){return function(_0x4d79be){if(_0x4d79be){return _0x4d79be[_0x7b62('0x22')](_0x136b61)[_0x7b62('0x23')](function(_0x185457){return _0x185457;});}return null;};}function removeEntity(_0x499f95,_0x498677){return function(_0x5644e0){if(_0x5644e0){return _0x5644e0[_0x7b62('0x24')]()[_0x7b62('0x23')](function(){_0x499f95[_0x7b62('0x1a')](0xcc)[_0x7b62('0x25')]();});}};}function handleEntityNotFound(_0x590089,_0x5144d1){return function(_0x128886){if(!_0x128886){_0x590089[_0x7b62('0x26')](0x194);}return _0x128886;};}function handleError(_0x4dea41,_0x490d68){_0x490d68=_0x490d68||0x1f4;return function(_0x33f7b6){logger[_0x7b62('0x27')](_0x33f7b6[_0x7b62('0x28')]);if(_0x33f7b6[_0x7b62('0x29')]){delete _0x33f7b6[_0x7b62('0x29')];}_0x4dea41[_0x7b62('0x1a')](_0x490d68)['send'](_0x33f7b6);};}exports[_0x7b62('0x2a')]=function(_0x1428c4,_0x5a20fb){var _0x2b4981={},_0x120f10={},_0x5cc467={'count':0x0,'rows':[]};var _0x34af87=_[_0x7b62('0x2b')](db[_0x7b62('0x2c')]['rawAttributes'],function(_0x38ef7a){return{'name':_0x38ef7a[_0x7b62('0x2d')],'type':_0x38ef7a[_0x7b62('0x2e')][_0x7b62('0x2f')]};});_0x120f10[_0x7b62('0x30')]=_[_0x7b62('0x2b')](_0x34af87,_0x7b62('0x29'));_0x120f10[_0x7b62('0x31')]=_[_0x7b62('0x32')](_0x1428c4[_0x7b62('0x31')]);_0x120f10[_0x7b62('0x33')]=_[_0x7b62('0x34')](_0x120f10[_0x7b62('0x30')],_0x120f10['query']);_0x2b4981[_0x7b62('0x35')]=_[_0x7b62('0x34')](_0x120f10[_0x7b62('0x30')],qs[_0x7b62('0x36')](_0x1428c4[_0x7b62('0x31')]['fields']));_0x2b4981['attributes']=_0x2b4981[_0x7b62('0x35')][_0x7b62('0x37')]?_0x2b4981[_0x7b62('0x35')]:_0x120f10['model'];if(!_0x1428c4[_0x7b62('0x31')][_0x7b62('0x38')]('nolimit')){_0x2b4981[_0x7b62('0x1c')]=qs[_0x7b62('0x1c')](_0x1428c4[_0x7b62('0x31')]['limit']);_0x2b4981[_0x7b62('0x1b')]=qs[_0x7b62('0x1b')](_0x1428c4['query'][_0x7b62('0x1b')]);}_0x2b4981[_0x7b62('0x39')]=qs[_0x7b62('0x3a')](_0x1428c4['query'][_0x7b62('0x3a')]);_0x2b4981[_0x7b62('0x3b')]=qs[_0x7b62('0x33')](_[_0x7b62('0x3c')](_0x1428c4[_0x7b62('0x31')],_0x120f10[_0x7b62('0x33')]),_0x34af87);if(_0x1428c4[_0x7b62('0x31')][_0x7b62('0x3d')]){_0x2b4981[_0x7b62('0x3b')]=_[_0x7b62('0x3e')](_0x2b4981[_0x7b62('0x3b')],{'$or':_[_0x7b62('0x2b')](_0x34af87,function(_0x26d12e){if(_0x26d12e[_0x7b62('0x2e')]!==_0x7b62('0x3f')){var _0x25ac52={};_0x25ac52[_0x26d12e[_0x7b62('0x29')]]={'$like':'%'+_0x1428c4[_0x7b62('0x31')][_0x7b62('0x3d')]+'%'};return _0x25ac52;}})});}_0x2b4981=_[_0x7b62('0x3e')]({},_0x2b4981,_0x1428c4[_0x7b62('0x40')]);var _0x4d67a3={'where':_0x2b4981['where']};return db[_0x7b62('0x2c')][_0x7b62('0x1d')](_0x4d67a3)[_0x7b62('0x23')](function(_0x5f29b6){_0x5cc467[_0x7b62('0x1d')]=_0x5f29b6;if(_0x1428c4[_0x7b62('0x31')][_0x7b62('0x41')]){_0x2b4981[_0x7b62('0x42')]=[{'all':!![]}];}return db[_0x7b62('0x2c')]['findAll'](_0x2b4981);})['then'](function(_0x511196){_0x5cc467[_0x7b62('0x43')]=_0x511196;return _0x5cc467;})[_0x7b62('0x23')](respondWithFilteredResult(_0x5a20fb,_0x2b4981))[_0x7b62('0x44')](handleError(_0x5a20fb,null));};exports['show']=function(_0x51f4aa,_0x2cb421){var _0x391975={'raw':![],'where':{'id':_0x51f4aa['params']['id']}},_0x399b81={};_0x399b81[_0x7b62('0x30')]=_[_0x7b62('0x32')](db[_0x7b62('0x2c')]['rawAttributes']);_0x399b81[_0x7b62('0x31')]=_['keys'](_0x51f4aa[_0x7b62('0x31')]);_0x399b81[_0x7b62('0x33')]=_['intersection'](_0x399b81[_0x7b62('0x30')],_0x399b81[_0x7b62('0x31')]);_0x391975[_0x7b62('0x35')]=_['intersection'](_0x399b81[_0x7b62('0x30')],qs['fields'](_0x51f4aa[_0x7b62('0x31')]['fields']));_0x391975[_0x7b62('0x35')]=_0x391975[_0x7b62('0x35')][_0x7b62('0x37')]?_0x391975['attributes']:_0x399b81[_0x7b62('0x30')];if(_0x51f4aa[_0x7b62('0x31')][_0x7b62('0x41')]){_0x391975[_0x7b62('0x42')]=[{'all':!![]}];}_0x391975=_[_0x7b62('0x3e')]({},_0x391975,_0x51f4aa[_0x7b62('0x40')]);return db[_0x7b62('0x2c')][_0x7b62('0x45')](_0x391975)[_0x7b62('0x23')](handleEntityNotFound(_0x2cb421,null))[_0x7b62('0x23')](respondWithResult(_0x2cb421,null))[_0x7b62('0x44')](handleError(_0x2cb421,null));};exports[_0x7b62('0x46')]=function(_0xa56c8c,_0x3708f3){return db[_0x7b62('0x2c')][_0x7b62('0x46')](_0xa56c8c['body'],{})['then'](respondWithResult(_0x3708f3,0xc9))[_0x7b62('0x44')](handleError(_0x3708f3,null));};exports['update']=function(_0x56e1f8,_0x482b8f){if(_0x56e1f8[_0x7b62('0x47')]['id']){delete _0x56e1f8[_0x7b62('0x47')]['id'];}return db[_0x7b62('0x2c')][_0x7b62('0x45')]({'where':{'id':_0x56e1f8['params']['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x482b8f,null))[_0x7b62('0x23')](saveUpdates(_0x56e1f8[_0x7b62('0x47')],null))['then'](respondWithResult(_0x482b8f,null))['catch'](handleError(_0x482b8f,null));};exports['destroy']=function(_0x42e480,_0x2fcc38){return db[_0x7b62('0x2c')][_0x7b62('0x45')]({'where':{'id':_0x42e480[_0x7b62('0x48')]['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x2fcc38,null))[_0x7b62('0x23')](removeEntity(_0x2fcc38,null))[_0x7b62('0x44')](handleError(_0x2fcc38,null));};exports[_0x7b62('0x49')]=function(_0x100a83,_0x4c1359,_0x22204b){var _0x58cc2e={};var _0x2313e2={};var _0x13c7eb;var _0x39d087;return db['FreshdeskAccount']['findOne']({'where':{'id':_0x100a83['params']['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x4c1359,null))[_0x7b62('0x23')](function(_0x281b6f){if(_0x281b6f){_0x13c7eb=_0x281b6f;_0x2313e2[_0x7b62('0x30')]=_[_0x7b62('0x32')](db['FreshdeskConfiguration'][_0x7b62('0x4a')]);_0x2313e2[_0x7b62('0x31')]=_[_0x7b62('0x32')](_0x100a83[_0x7b62('0x31')]);_0x2313e2['filters']=_[_0x7b62('0x34')](_0x2313e2[_0x7b62('0x30')],_0x2313e2[_0x7b62('0x31')]);_0x58cc2e[_0x7b62('0x35')]=_[_0x7b62('0x34')](_0x2313e2[_0x7b62('0x30')],qs[_0x7b62('0x36')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x36')]));_0x58cc2e['attributes']=_0x58cc2e['attributes']['length']?_0x58cc2e[_0x7b62('0x35')]:_0x2313e2[_0x7b62('0x30')];_0x58cc2e['order']=qs[_0x7b62('0x3a')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x3a')]);_0x58cc2e[_0x7b62('0x3b')]=qs[_0x7b62('0x33')](_[_0x7b62('0x3c')](_0x100a83[_0x7b62('0x31')],_0x2313e2['filters']));if(_0x100a83[_0x7b62('0x31')][_0x7b62('0x3d')]){_0x58cc2e[_0x7b62('0x3b')]=_[_0x7b62('0x3e')](_0x58cc2e[_0x7b62('0x3b')],{'$or':_[_0x7b62('0x2b')](_0x58cc2e[_0x7b62('0x35')],function(_0x4bfa05){var _0x48928d={};_0x48928d[_0x4bfa05]={'$like':'%'+_0x100a83[_0x7b62('0x31')][_0x7b62('0x3d')]+'%'};return _0x48928d;})});}_0x58cc2e=_[_0x7b62('0x3e')]({},_0x58cc2e,_0x100a83['options']);return _0x13c7eb[_0x7b62('0x49')](_0x58cc2e);}})[_0x7b62('0x23')](function(_0x171108){if(_0x171108){_0x39d087=_0x171108['length'];if(!_0x100a83['query'][_0x7b62('0x38')](_0x7b62('0x4b'))){_0x58cc2e['limit']=qs[_0x7b62('0x1c')](_0x100a83[_0x7b62('0x31')][_0x7b62('0x1c')]);_0x58cc2e['offset']=qs[_0x7b62('0x1b')](_0x100a83['query'][_0x7b62('0x1b')]);}return _0x13c7eb[_0x7b62('0x49')](_0x58cc2e);}})[_0x7b62('0x23')](function(_0x345b7f){if(_0x345b7f){return _0x345b7f?{'count':_0x39d087,'rows':_0x345b7f}:null;}})[_0x7b62('0x23')](respondWithResult(_0x4c1359,null))[_0x7b62('0x44')](handleError(_0x4c1359,null));};exports[_0x7b62('0x4c')]=function(_0x38e5f4,_0x87759a,_0x2062c8){if(_0x38e5f4[_0x7b62('0x47')]['id']){delete _0x38e5f4[_0x7b62('0x47')]['id'];}return db[_0x7b62('0x2c')]['findOne']({'where':{'id':_0x38e5f4[_0x7b62('0x48')]['id']}})[_0x7b62('0x23')](handleEntityNotFound(_0x87759a,null))[_0x7b62('0x23')](function(_0x53f467){if(_0x53f467){_0x38e5f4['body'][_0x7b62('0x4d')]=_0x53f467['id'];_0x38e5f4['body']['Subjects']=integrations[_0x7b62('0x4e')](_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x4f')],_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x2e')]);_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x50')]=integrations[_0x7b62('0x51')](_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x4f')],_0x38e5f4[_0x7b62('0x47')][_0x7b62('0x2e')]);return db['FreshdeskConfiguration'][_0x7b62('0x46')](_0x38e5f4['body'],{'include':[{'model':db[_0x7b62('0x52')],'as':_0x7b62('0x53')},{'model':db['FreshdeskField'],'as':_0x7b62('0x50')}]});}return null;})['then'](respondWithResult(_0x87759a,null))[_0x7b62('0x44')](handleError(_0x87759a,null));};exports['getFields']=function(_0xf98f04,_0xd58cea,_0x4ceff7){var _0x102722='';return db[_0x7b62('0x2c')][_0x7b62('0x54')]({'where':{'id':_0xf98f04[_0x7b62('0x48')]['id']},'attributes':['id',_0x7b62('0x55'),'apiKey']})[_0x7b62('0x23')](handleEntityNotFound(_0xd58cea,null))[_0x7b62('0x23')](function(_0x5ea45c){if(_0x5ea45c){_0x102722=_0x5ea45c[_0x7b62('0x55')];var _0x2c1e73=_0x102722[_0x7b62('0x56')](-0x1);if(_0x2c1e73==='/'){_0x102722=_0x102722['substring'](0x0,_0x102722[_0x7b62('0x57')](_0x2c1e73));}return rp({'method':_0x7b62('0x58'),'uri':util[_0x7b62('0x59')](_0x7b62('0x5a'),_0x102722,_0x7b62('0x5b')),'headers':{'Authorization':util[_0x7b62('0x59')]('Basic\x20%s',new Buffer(util[_0x7b62('0x59')]('%s:X',_0x5ea45c[_0x7b62('0x5c')]))[_0x7b62('0x5d')](_0x7b62('0x5e')))},'json':!![]});}})[_0x7b62('0x23')](function(_0x34e33f){if(_0x34e33f){var _0x4330b0=['requester',_0x7b62('0x5f'),_0x7b62('0x60'),_0x7b62('0x61'),_0x7b62('0x1a'),'priority',_0x7b62('0x62'),_0x7b62('0x63'),_0x7b62('0x64'),_0x7b62('0x62'),_0x7b62('0x65')];_[_0x7b62('0x66')](_0x34e33f,function(_0x52cc4d){return _0x4330b0[_0x7b62('0x67')](_0x52cc4d[_0x7b62('0x29')])||!_0x52cc4d['default']&&_0x52cc4d[_0x7b62('0x2e')]!=='custom_text'&&_0x52cc4d['type']!==_0x7b62('0x68');});return{'count':_0x34e33f['length'],'rows':_[_0x7b62('0x2b')](_0x34e33f,function(_0x3b5635){return{'id':_0x3b5635[_0x7b62('0x29')],'name':_0x3b5635[_0x7b62('0x69')],'custom':!_0x3b5635['default'],'options':_0x3b5635[_0x7b62('0x6a')]?_[_0x7b62('0x2b')](_0x3b5635[_0x7b62('0x6a')],function(_0x12c371){return{'name':_['capitalize'](_0x12c371),'value':_0x12c371};}):[]};})};}})[_0x7b62('0x23')](respondWithResult(_0xd58cea,null))[_0x7b62('0x44')](function(_0x28fd98){var _0x27ee8f=_0xf98f04[_0x7b62('0x31')]['test']?0x1f4:_0x28fd98[_0x7b62('0x6b')]||0x1f4;logger[_0x7b62('0x27')](_0x7b62('0x6c'),_0x7b62('0x6d'),_0x27ee8f,JSON['stringify'](_0x28fd98));delete _0x28fd98['name'];if(_0x27ee8f===0x191){_0x27ee8f=0x190;}_0xd58cea['status'](_0x27ee8f)[_0x7b62('0x6e')](_0xf98f04['query']['test']?{'message':'Wrong\x20credentials','statusCode':_0x28fd98[_0x7b62('0x6b')]}:_0x28fd98);});};
\ No newline at end of file
index f0a4a45..4aa9e35 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec16=['path','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','define','lodash','util','api','moment','bluebird','request-promise'];(function(_0x2775f4,_0x10ddd4){var _0x377a51=function(_0x357ce5){while(--_0x357ce5){_0x2775f4['push'](_0x2775f4['shift']());}};_0x377a51(++_0x10ddd4);}(_0xec16,0xd6));var _0x6ec1=function(_0x52a8da,_0x5d9213){_0x52a8da=_0x52a8da-0x0;var _0x5e9460=_0xec16[_0x52a8da];return _0x5e9460;};'use strict';var _=require(_0x6ec1('0x0'));var util=require(_0x6ec1('0x1'));var logger=require('../../config/logger')(_0x6ec1('0x2'));var moment=require(_0x6ec1('0x3'));var BPromise=require(_0x6ec1('0x4'));var rp=require(_0x6ec1('0x5'));var fs=require('fs');var path=require(_0x6ec1('0x6'));var rimraf=require('rimraf');var config=require(_0x6ec1('0x7'));var attributes=require(_0x6ec1('0x8'));var integrations=require(_0x6ec1('0x9'));module['exports']=function(_0x496ea7,_0x5f03dd){return _0x496ea7[_0x6ec1('0xa')]('FreshdeskAccount',attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5999=['bluebird','request-promise','path','rimraf','../../config/environment','./intFreshdeskAccount.attributes','../../components/integrations/configuration','exports','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','moment'];(function(_0x1bcedb,_0x38d186){var _0x53acdf=function(_0x29db98){while(--_0x29db98){_0x1bcedb['push'](_0x1bcedb['shift']());}};_0x53acdf(++_0x38d186);}(_0x5999,0x1bc));var _0x9599=function(_0x49285c,_0x1e9630){_0x49285c=_0x49285c-0x0;var _0x27a131=_0x5999[_0x49285c];return _0x27a131;};'use strict';var _=require(_0x9599('0x0'));var util=require(_0x9599('0x1'));var logger=require(_0x9599('0x2'))('api');var moment=require(_0x9599('0x3'));var BPromise=require(_0x9599('0x4'));var rp=require(_0x9599('0x5'));var fs=require('fs');var path=require(_0x9599('0x6'));var rimraf=require(_0x9599('0x7'));var config=require(_0x9599('0x8'));var attributes=require(_0x9599('0x9'));var integrations=require(_0x9599('0xa'));module[_0x9599('0xb')]=function(_0x4071f3,_0x1809a1){return _0x4071f3['define'](_0x9599('0xc'),attributes,{'tableName':_0x9599('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a00044a..ee22f4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f1e=['error','code','message','result','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','where','attributes','limit','include','model','map','ShowFreshdeskAccount','find','raw','lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','request\x20sent','stringify'];(function(_0xe33285,_0x7f474){var _0x31ca6b=function(_0x51b2a6){while(--_0x51b2a6){_0xe33285['push'](_0xe33285['shift']());}};_0x31ca6b(++_0x7f474);}(_0x6f1e,0x1e0));var _0xe6f1=function(_0xb66df,_0x4fb5ce){_0xb66df=_0xb66df-0x0;var _0x42a702=_0x6f1e[_0xb66df];return _0x42a702;};'use strict';var _=require(_0xe6f1('0x0'));var util=require(_0xe6f1('0x1'));var moment=require('moment');var BPromise=require(_0xe6f1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe6f1('0x3'));var logger=require(_0xe6f1('0x4'))(_0xe6f1('0x5'));var config=require(_0xe6f1('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe6f1('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5bf151,_0x36ebb2,_0x234fd6){return new BPromise(function(_0x50b450,_0x338066){return client[_0xe6f1('0x8')](_0x5bf151,_0x234fd6)[_0xe6f1('0x9')](function(_0x2ea4fc){logger[_0xe6f1('0xa')](_0xe6f1('0xb'),_0x36ebb2,'request\x20sent');logger[_0xe6f1('0xc')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x36ebb2,_0xe6f1('0xd'),JSON[_0xe6f1('0xe')](_0x2ea4fc));if(_0x2ea4fc['error']){if(_0x2ea4fc[_0xe6f1('0xf')][_0xe6f1('0x10')]===0x1f4){logger[_0xe6f1('0xf')](_0xe6f1('0xb'),_0x36ebb2,_0x2ea4fc['error']['message']);return _0x338066(_0x2ea4fc[_0xe6f1('0xf')][_0xe6f1('0x11')]);}logger[_0xe6f1('0xf')](_0xe6f1('0xb'),_0x36ebb2,_0x2ea4fc['error'][_0xe6f1('0x11')]);return _0x50b450(_0x2ea4fc[_0xe6f1('0xf')][_0xe6f1('0x11')]);}else{logger['info'](_0xe6f1('0xb'),_0x36ebb2,'request\x20sent');_0x50b450(_0x2ea4fc[_0xe6f1('0x12')][_0xe6f1('0x11')]);}})[_0xe6f1('0x13')](function(_0x25df4e){logger['error'](_0xe6f1('0xb'),_0x36ebb2,_0x25df4e);_0x338066(_0x25df4e);});});}exports[_0xe6f1('0x14')]=function(_0x5b6052){var _0x543998=this;return new Promise(function(_0x4208ee,_0x4a5e0c){return db[_0xe6f1('0x15')][_0xe6f1('0x16')]({'raw':_0x5b6052['options']?_0x5b6052[_0xe6f1('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x5b6052[_0xe6f1('0x17')]?_0x5b6052[_0xe6f1('0x17')][_0xe6f1('0x18')]||null:null,'attributes':_0x5b6052[_0xe6f1('0x17')]?_0x5b6052[_0xe6f1('0x17')][_0xe6f1('0x19')]||null:null,'limit':_0x5b6052[_0xe6f1('0x17')]?_0x5b6052['options'][_0xe6f1('0x1a')]||null:null,'include':_0x5b6052['options']?_0x5b6052[_0xe6f1('0x17')][_0xe6f1('0x1b')]?_['map'](_0x5b6052[_0xe6f1('0x17')]['include'],function(_0x20fd37){return{'model':db[_0x20fd37[_0xe6f1('0x1c')]],'as':_0x20fd37['as'],'attributes':_0x20fd37[_0xe6f1('0x19')],'include':_0x20fd37[_0xe6f1('0x1b')]?_[_0xe6f1('0x1d')](_0x20fd37['include'],function(_0xe415f){return{'model':db[_0xe415f['model']],'as':_0xe415f['as'],'attributes':_0xe415f[_0xe6f1('0x19')],'include':_0xe415f[_0xe6f1('0x1b')]?_[_0xe6f1('0x1d')](_0xe415f[_0xe6f1('0x1b')],function(_0x407c1a){return{'model':db[_0x407c1a[_0xe6f1('0x1c')]],'as':_0x407c1a['as'],'attributes':_0x407c1a[_0xe6f1('0x19')]};}):[]};}):[]};}):[]:[]})[_0xe6f1('0x9')](function(_0x325578){logger[_0xe6f1('0xa')](_0xe6f1('0x14'),_0x5b6052);logger[_0xe6f1('0xc')](_0xe6f1('0x14'),_0x5b6052,JSON['stringify'](_0x325578));_0x4208ee(_0x325578);})[_0xe6f1('0x13')](function(_0x4f35a4){logger[_0xe6f1('0xf')]('GetFreshdeskAccount',_0x4f35a4[_0xe6f1('0x11')],_0x5b6052);_0x4a5e0c(_0x543998[_0xe6f1('0xf')](0x1f4,_0x4f35a4['message']));});});};exports[_0xe6f1('0x1e')]=function(_0x32b48e){var _0x3eb90f=this;return new Promise(function(_0x5f3775,_0x45fba2){return db[_0xe6f1('0x15')][_0xe6f1('0x1f')]({'raw':_0x32b48e['options']?_0x32b48e['options'][_0xe6f1('0x20')]===undefined?!![]:![]:!![],'where':_0x32b48e['options']?_0x32b48e[_0xe6f1('0x17')][_0xe6f1('0x18')]||null:null,'attributes':_0x32b48e[_0xe6f1('0x17')]?_0x32b48e[_0xe6f1('0x17')][_0xe6f1('0x19')]||null:null,'include':_0x32b48e['options']?_0x32b48e[_0xe6f1('0x17')][_0xe6f1('0x1b')]?_[_0xe6f1('0x1d')](_0x32b48e[_0xe6f1('0x17')][_0xe6f1('0x1b')],function(_0x529db5){return{'model':db[_0x529db5[_0xe6f1('0x1c')]],'as':_0x529db5['as'],'attributes':_0x529db5['attributes'],'include':_0x529db5['include']?_['map'](_0x529db5[_0xe6f1('0x1b')],function(_0x1b396f){return{'model':db[_0x1b396f[_0xe6f1('0x1c')]],'as':_0x1b396f['as'],'attributes':_0x1b396f[_0xe6f1('0x19')],'include':_0x1b396f[_0xe6f1('0x1b')]?_[_0xe6f1('0x1d')](_0x1b396f[_0xe6f1('0x1b')],function(_0x31c0af){return{'model':db[_0x31c0af['model']],'as':_0x31c0af['as'],'attributes':_0x31c0af['attributes']};}):[]};}):[]};}):[]:[]})[_0xe6f1('0x9')](function(_0x1e386d){logger['info'](_0xe6f1('0x1e'),_0x32b48e);logger[_0xe6f1('0xc')](_0xe6f1('0x1e'),_0x32b48e,JSON[_0xe6f1('0xe')](_0x1e386d));_0x5f3775(_0x1e386d);})[_0xe6f1('0x13')](function(_0x162081){logger[_0xe6f1('0xf')](_0xe6f1('0x1e'),_0x162081[_0xe6f1('0x11')],_0x32b48e);_0x45fba2(_0x3eb90f[_0xe6f1('0xf')](0x1f4,_0x162081[_0xe6f1('0x11')]));});});};
\ No newline at end of file
+var _0x3bca=['ShowFreshdeskAccount','find','where','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetFreshdeskAccount','FreshdeskAccount','findAll','options','raw','attributes','include','map','model'];(function(_0x31960e,_0x2e52c3){var _0x275961=function(_0x40af69){while(--_0x40af69){_0x31960e['push'](_0x31960e['shift']());}};_0x275961(++_0x2e52c3);}(_0x3bca,0x1d1));var _0xa3bc=function(_0x316461,_0x4bd698){_0x316461=_0x316461-0x0;var _0x249bea=_0x3bca[_0x316461];return _0x249bea;};'use strict';var _=require('lodash');var util=require(_0xa3bc('0x0'));var moment=require(_0xa3bc('0x1'));var BPromise=require(_0xa3bc('0x2'));var rs=require(_0xa3bc('0x3'));var fs=require('fs');var Redis=require(_0xa3bc('0x4'));var db=require(_0xa3bc('0x5'))['db'];var utils=require(_0xa3bc('0x6'));var logger=require('../../config/logger')(_0xa3bc('0x7'));var config=require('../../config/environment');var jayson=require(_0xa3bc('0x8'));var client=jayson['client'][_0xa3bc('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x13a9c5,_0x45a207,_0x50e414){return new BPromise(function(_0x28c828,_0x552fce){return client[_0xa3bc('0xa')](_0x13a9c5,_0x50e414)[_0xa3bc('0xb')](function(_0x283168){logger[_0xa3bc('0xc')](_0xa3bc('0xd'),_0x45a207,_0xa3bc('0xe'));logger[_0xa3bc('0xf')]('FreshdeskAccount,\x20%s,\x20%s,\x20%s',_0x45a207,_0xa3bc('0xe'),JSON[_0xa3bc('0x10')](_0x283168));if(_0x283168[_0xa3bc('0x11')]){if(_0x283168[_0xa3bc('0x11')][_0xa3bc('0x12')]===0x1f4){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x45a207,_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);return _0x552fce(_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);}logger[_0xa3bc('0x11')](_0xa3bc('0xd'),_0x45a207,_0x283168[_0xa3bc('0x11')][_0xa3bc('0x13')]);return _0x28c828(_0x283168['error'][_0xa3bc('0x13')]);}else{logger[_0xa3bc('0xc')](_0xa3bc('0xd'),_0x45a207,_0xa3bc('0xe'));_0x28c828(_0x283168['result'][_0xa3bc('0x13')]);}})[_0xa3bc('0x14')](function(_0x257ec3){logger['error'](_0xa3bc('0xd'),_0x45a207,_0x257ec3);_0x552fce(_0x257ec3);});});}exports[_0xa3bc('0x15')]=function(_0x44a42c){var _0x1dc598=this;return new Promise(function(_0x30cc4b,_0x2980b3){return db[_0xa3bc('0x16')][_0xa3bc('0x17')]({'raw':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x19')]===undefined?!![]:![]:!![],'where':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c['options']['where']||null:null,'attributes':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c['options'][_0xa3bc('0x1a')]||null:null,'limit':_0x44a42c[_0xa3bc('0x18')]?_0x44a42c[_0xa3bc('0x18')]['limit']||null:null,'include':_0x44a42c['options']?_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x44a42c[_0xa3bc('0x18')][_0xa3bc('0x1b')],function(_0x2f68ce){return{'model':db[_0x2f68ce['model']],'as':_0x2f68ce['as'],'attributes':_0x2f68ce[_0xa3bc('0x1a')],'include':_0x2f68ce[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x2f68ce[_0xa3bc('0x1b')],function(_0xd4a232){return{'model':db[_0xd4a232[_0xa3bc('0x1d')]],'as':_0xd4a232['as'],'attributes':_0xd4a232['attributes'],'include':_0xd4a232[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0xd4a232[_0xa3bc('0x1b')],function(_0x470225){return{'model':db[_0x470225[_0xa3bc('0x1d')]],'as':_0x470225['as'],'attributes':_0x470225[_0xa3bc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3bc('0xb')](function(_0x21279e){logger[_0xa3bc('0xc')](_0xa3bc('0x15'),_0x44a42c);logger[_0xa3bc('0xf')](_0xa3bc('0x15'),_0x44a42c,JSON['stringify'](_0x21279e));_0x30cc4b(_0x21279e);})[_0xa3bc('0x14')](function(_0x1c90ff){logger['error'](_0xa3bc('0x15'),_0x1c90ff[_0xa3bc('0x13')],_0x44a42c);_0x2980b3(_0x1dc598[_0xa3bc('0x11')](0x1f4,_0x1c90ff['message']));});});};exports[_0xa3bc('0x1e')]=function(_0x3c1b4c){var _0x1b0b37=this;return new Promise(function(_0x395600,_0x54a41d){return db[_0xa3bc('0x16')][_0xa3bc('0x1f')]({'raw':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')][_0xa3bc('0x20')]||null:null,'attributes':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c['options']['attributes']||null:null,'include':_0x3c1b4c[_0xa3bc('0x18')]?_0x3c1b4c[_0xa3bc('0x18')][_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x3c1b4c['options'][_0xa3bc('0x1b')],function(_0x262929){return{'model':db[_0x262929[_0xa3bc('0x1d')]],'as':_0x262929['as'],'attributes':_0x262929[_0xa3bc('0x1a')],'include':_0x262929[_0xa3bc('0x1b')]?_[_0xa3bc('0x1c')](_0x262929[_0xa3bc('0x1b')],function(_0x16d0c7){return{'model':db[_0x16d0c7['model']],'as':_0x16d0c7['as'],'attributes':_0x16d0c7[_0xa3bc('0x1a')],'include':_0x16d0c7[_0xa3bc('0x1b')]?_['map'](_0x16d0c7[_0xa3bc('0x1b')],function(_0x22a09c){return{'model':db[_0x22a09c[_0xa3bc('0x1d')]],'as':_0x22a09c['as'],'attributes':_0x22a09c[_0xa3bc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xa3bc('0xb')](function(_0x593931){logger[_0xa3bc('0xc')](_0xa3bc('0x1e'),_0x3c1b4c);logger[_0xa3bc('0xf')]('ShowFreshdeskAccount',_0x3c1b4c,JSON[_0xa3bc('0x10')](_0x593931));_0x395600(_0x593931);})['catch'](function(_0x7ce75a){logger[_0xa3bc('0x11')]('ShowFreshdeskAccount',_0x7ce75a[_0xa3bc('0x13')],_0x3c1b4c);_0x54a41d(_0x1b0b37[_0xa3bc('0x11')](0x1f4,_0x7ce75a[_0xa3bc('0x13')]));});});};
\ No newline at end of file
index 28a908e..f5a6ca9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31a3=['getTags','post','setTags','put','/:id','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../config/environment','./intFreshdeskConfiguration.controller','isAuthenticated','index','show','get','getFields','/:id/subjects','/:id/descriptions','/:id/tags'];(function(_0x3b8995,_0x37dd10){var _0x24e13b=function(_0x68b2ae){while(--_0x68b2ae){_0x3b8995['push'](_0x3b8995['shift']());}};_0x24e13b(++_0x37dd10);}(_0x31a3,0x129));var _0x331a=function(_0xea897b,_0x269096){_0xea897b=_0xea897b-0x0;var _0x8a736e=_0x31a3[_0xea897b];return _0x8a736e;};'use strict';var multer=require(_0x331a('0x0'));var util=require(_0x331a('0x1'));var path=require('path');var timeout=require(_0x331a('0x2'));var express=require(_0x331a('0x3'));var router=express['Router']();var fs_extra=require(_0x331a('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x331a('0x5'));var controller=require(_0x331a('0x6'));router['get']('/',auth[_0x331a('0x7')](),controller[_0x331a('0x8')]);router['get']('/:id',auth[_0x331a('0x7')](),controller[_0x331a('0x9')]);router[_0x331a('0xa')]('/:id/fields',auth[_0x331a('0x7')](),controller[_0x331a('0xb')]);router[_0x331a('0xa')](_0x331a('0xc'),auth['isAuthenticated'](),controller['getSubjects']);router[_0x331a('0xa')](_0x331a('0xd'),auth[_0x331a('0x7')](),controller['getDescriptions']);router[_0x331a('0xa')](_0x331a('0xe'),auth[_0x331a('0x7')](),controller[_0x331a('0xf')]);router[_0x331a('0x10')]('/',auth[_0x331a('0x7')](),controller['create']);router[_0x331a('0x10')](_0x331a('0xe'),auth[_0x331a('0x7')](),controller[_0x331a('0x11')]);router[_0x331a('0x12')](_0x331a('0x13'),auth['isAuthenticated'](),controller[_0x331a('0x14')]);router[_0x331a('0x15')](_0x331a('0x13'),auth[_0x331a('0x7')](),controller[_0x331a('0x16')]);module[_0x331a('0x17')]=router;
\ No newline at end of file
+var _0xe189=['getFields','/:id/subjects','getSubjects','/:id/descriptions','/:id/tags','getTags','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','/:id','show','isAuthenticated'];(function(_0x4dd0a7,_0xb4399f){var _0x487e9b=function(_0x355738){while(--_0x355738){_0x4dd0a7['push'](_0x4dd0a7['shift']());}};_0x487e9b(++_0xb4399f);}(_0xe189,0x174));var _0x9e18=function(_0x39054f,_0x133a62){_0x39054f=_0x39054f-0x0;var _0x20e17f=_0xe189[_0x39054f];return _0x20e17f;};'use strict';var multer=require(_0x9e18('0x0'));var util=require('util');var path=require(_0x9e18('0x1'));var timeout=require(_0x9e18('0x2'));var express=require(_0x9e18('0x3'));var router=express[_0x9e18('0x4')]();var fs_extra=require(_0x9e18('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9e18('0x6'));var config=require('../../config/environment');var controller=require(_0x9e18('0x7'));router[_0x9e18('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x9e18('0x9'),auth['isAuthenticated'](),controller[_0x9e18('0xa')]);router[_0x9e18('0x8')]('/:id/fields',auth[_0x9e18('0xb')](),controller[_0x9e18('0xc')]);router[_0x9e18('0x8')](_0x9e18('0xd'),auth[_0x9e18('0xb')](),controller[_0x9e18('0xe')]);router[_0x9e18('0x8')](_0x9e18('0xf'),auth[_0x9e18('0xb')](),controller['getDescriptions']);router[_0x9e18('0x8')](_0x9e18('0x10'),auth['isAuthenticated'](),controller[_0x9e18('0x11')]);router['post']('/',auth[_0x9e18('0xb')](),controller[_0x9e18('0x12')]);router['post']('/:id/tags',auth['isAuthenticated'](),controller['setTags']);router[_0x9e18('0x13')]('/:id',auth[_0x9e18('0xb')](),controller[_0x9e18('0x14')]);router[_0x9e18('0x15')](_0x9e18('0x9'),auth[_0x9e18('0xb')](),controller[_0x9e18('0x16')]);module[_0x9e18('0x17')]=router;
\ No newline at end of file
index 88f9fc5..d4d6a99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc833=['exports','STRING','sequelize'];(function(_0x4a663b,_0x4eb317){var _0x219741=function(_0x3e845f){while(--_0x3e845f){_0x4a663b['push'](_0x4a663b['shift']());}};_0x219741(++_0x4eb317);}(_0xc833,0x7a));var _0x3c83=function(_0x51b006,_0x327644){_0x51b006=_0x51b006-0x0;var _0x77c65c=_0xc833[_0x51b006];return _0x77c65c;};'use strict';var Sequelize=require(_0x3c83('0x0'));module[_0x3c83('0x1')]={'name':{'type':Sequelize[_0x3c83('0x2')]},'description':{'type':Sequelize[_0x3c83('0x2')]}};
\ No newline at end of file
+var _0x3463=['sequelize','exports','STRING'];(function(_0x1928c9,_0x13a6d1){var _0x51b5fb=function(_0x24cf70){while(--_0x24cf70){_0x1928c9['push'](_0x1928c9['shift']());}};_0x51b5fb(++_0x13a6d1);}(_0x3463,0xd5));var _0x3346=function(_0x43a6cd,_0x503d1a){_0x43a6cd=_0x43a6cd-0x0;var _0x5acb36=_0x3463[_0x43a6cd];return _0x5acb36;};'use strict';var Sequelize=require(_0x3346('0x0'));module[_0x3346('0x1')]={'name':{'type':Sequelize[_0x3346('0x2')]},'description':{'type':Sequelize[_0x3346('0x2')]}};
\ No newline at end of file
index ae0e382..7f34a75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc16=['desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','then','destroy','stack','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','includeAll','include','find','create','body','catch','update','params','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','setTags','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','fs-extra','lodash','squel','crypto'];(function(_0xaff1bd,_0x5380c4){var _0x52ad89=function(_0x50720e){while(--_0x50720e){_0xaff1bd['push'](_0xaff1bd['shift']());}};_0x52ad89(++_0x5380c4);}(_0xdc16,0x19c));var _0x6dc1=function(_0x29e0eb,_0x9acb52){_0x29e0eb=_0x29e0eb-0x0;var _0x597d2d=_0xdc16[_0x29e0eb];return _0x597d2d;};'use strict';var emlformat=require(_0x6dc1('0x0'));var rimraf=require(_0x6dc1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6dc1('0x2'));var rp=require(_0x6dc1('0x3'));var moment=require(_0x6dc1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x6dc1('0x5'));var util=require(_0x6dc1('0x6'));var path=require(_0x6dc1('0x7'));var sox=require(_0x6dc1('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6dc1('0x9'));var _=require(_0x6dc1('0xa'));var squel=require(_0x6dc1('0xb'));var crypto=require(_0x6dc1('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6dc1('0xd'));var toCsv=require('to-csv');var querystring=require(_0x6dc1('0xe'));var Papa=require(_0x6dc1('0xf'));var Redis=require('ioredis');var authService=require(_0x6dc1('0x10'));var qs=require(_0x6dc1('0x11'));var as=require(_0x6dc1('0x12'));var hardwareService=require(_0x6dc1('0x13'));var logger=require('../../config/logger')(_0x6dc1('0x14'));var utils=require(_0x6dc1('0x15'));var config=require(_0x6dc1('0x16'));var licenseUtil=require(_0x6dc1('0x17'));var db=require(_0x6dc1('0x18'))['db'];function respondWithStatusCode(_0x2558e5,_0x25ce49){_0x25ce49=_0x25ce49||0xcc;return function(_0x47eb9a){if(_0x47eb9a){return _0x2558e5[_0x6dc1('0x19')](_0x25ce49);}return _0x2558e5[_0x6dc1('0x1a')](_0x25ce49)[_0x6dc1('0x1b')]();};}function respondWithResult(_0xfd3e1b,_0x329d66){_0x329d66=_0x329d66||0xc8;return function(_0x41287c){if(_0x41287c){return _0xfd3e1b[_0x6dc1('0x1a')](_0x329d66)[_0x6dc1('0x1c')](_0x41287c);}};}function respondWithFilteredResult(_0x175b9a,_0x9e0a15){return function(_0x55baac){if(_0x55baac){var _0x4a90d8=typeof _0x9e0a15['offset']===_0x6dc1('0x1d')&&typeof _0x9e0a15['limit']==='undefined';var _0x24abad=_0x55baac[_0x6dc1('0x1e')];var _0x89be51=_0x4a90d8?0x0:_0x9e0a15[_0x6dc1('0x1f')];var _0x12bc69=_0x4a90d8?_0x55baac['count']:_0x9e0a15[_0x6dc1('0x1f')]+_0x9e0a15[_0x6dc1('0x20')];var _0x24450d;if(_0x12bc69>=_0x24abad){_0x12bc69=_0x24abad;_0x24450d=0xc8;}else{_0x24450d=0xce;}_0x175b9a[_0x6dc1('0x1a')](_0x24450d);return _0x175b9a[_0x6dc1('0x21')](_0x6dc1('0x22'),_0x89be51+'-'+_0x12bc69+'/'+_0x24abad)[_0x6dc1('0x1c')](_0x55baac);}return null;};}function patchUpdates(_0x3b90fc){return function(_0x1a55d5){try{jsonpatch[_0x6dc1('0x23')](_0x1a55d5,_0x3b90fc,!![]);}catch(_0x1853fe){return BPromise['reject'](_0x1853fe);}return _0x1a55d5[_0x6dc1('0x24')]();};}function saveUpdates(_0x33c7b6,_0x11de32){return function(_0x3cc2f4){if(_0x3cc2f4){return _0x3cc2f4['update'](_0x33c7b6)[_0x6dc1('0x25')](function(_0x55db97){return _0x55db97;});}return null;};}function removeEntity(_0x17965e,_0x388bd9){return function(_0x3c023b){if(_0x3c023b){return _0x3c023b[_0x6dc1('0x26')]()[_0x6dc1('0x25')](function(){_0x17965e[_0x6dc1('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52b5c1,_0x13f4a9){return function(_0x4fe902){if(!_0x4fe902){_0x52b5c1['sendStatus'](0x194);}return _0x4fe902;};}function handleError(_0x237127,_0x42fd72){_0x42fd72=_0x42fd72||0x1f4;return function(_0x47eeec){logger['error'](_0x47eeec[_0x6dc1('0x27')]);if(_0x47eeec['name']){delete _0x47eeec['name'];}_0x237127[_0x6dc1('0x1a')](_0x42fd72)[_0x6dc1('0x28')](_0x47eeec);};}exports[_0x6dc1('0x29')]=function(_0xc3c8a5,_0x23fbcc){var _0xa087f7={},_0x383e98={},_0x1a7645={'count':0x0,'rows':[]};var _0x589a4a=_[_0x6dc1('0x2a')](db[_0x6dc1('0x2b')][_0x6dc1('0x2c')],function(_0x35754a){return{'name':_0x35754a[_0x6dc1('0x2d')],'type':_0x35754a[_0x6dc1('0x2e')][_0x6dc1('0x2f')]};});_0x383e98[_0x6dc1('0x30')]=_[_0x6dc1('0x2a')](_0x589a4a,_0x6dc1('0x31'));_0x383e98[_0x6dc1('0x32')]=_[_0x6dc1('0x33')](_0xc3c8a5[_0x6dc1('0x32')]);_0x383e98[_0x6dc1('0x34')]=_[_0x6dc1('0x35')](_0x383e98['model'],_0x383e98[_0x6dc1('0x32')]);_0xa087f7[_0x6dc1('0x36')]=_[_0x6dc1('0x35')](_0x383e98['model'],qs[_0x6dc1('0x37')](_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x37')]));_0xa087f7[_0x6dc1('0x36')]=_0xa087f7[_0x6dc1('0x36')][_0x6dc1('0x38')]?_0xa087f7[_0x6dc1('0x36')]:_0x383e98[_0x6dc1('0x30')];if(!_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x39')]('nolimit')){_0xa087f7['limit']=qs[_0x6dc1('0x20')](_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x20')]);_0xa087f7['offset']=qs[_0x6dc1('0x1f')](_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x1f')]);}_0xa087f7[_0x6dc1('0x3a')]=qs[_0x6dc1('0x3b')](_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x3b')]);_0xa087f7[_0x6dc1('0x3c')]=qs[_0x6dc1('0x34')](_[_0x6dc1('0x3d')](_0xc3c8a5[_0x6dc1('0x32')],_0x383e98['filters']),_0x589a4a);if(_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x3e')]){_0xa087f7['where']=_[_0x6dc1('0x3f')](_0xa087f7[_0x6dc1('0x3c')],{'$or':_[_0x6dc1('0x2a')](_0x589a4a,function(_0xc1eef9){if(_0xc1eef9['type']!==_0x6dc1('0x40')){var _0x4db0d1={};_0x4db0d1[_0xc1eef9['name']]={'$like':'%'+_0xc3c8a5[_0x6dc1('0x32')][_0x6dc1('0x3e')]+'%'};return _0x4db0d1;}})});}_0xa087f7=_[_0x6dc1('0x3f')]({},_0xa087f7,_0xc3c8a5[_0x6dc1('0x41')]);var _0x50cce9={'where':_0xa087f7[_0x6dc1('0x3c')]};return db['FreshdeskConfiguration']['count'](_0x50cce9)[_0x6dc1('0x25')](function(_0x3efd18){_0x1a7645['count']=_0x3efd18;if(_0xc3c8a5['query']['includeAll']){_0xa087f7['include']=[{'all':!![]}];}return db[_0x6dc1('0x2b')][_0x6dc1('0x42')](_0xa087f7);})[_0x6dc1('0x25')](function(_0x1d24b2){_0x1a7645[_0x6dc1('0x43')]=_0x1d24b2;return _0x1a7645;})['then'](respondWithFilteredResult(_0x23fbcc,_0xa087f7))['catch'](handleError(_0x23fbcc,null));};exports[_0x6dc1('0x44')]=function(_0x16d802,_0x3f8079){var _0x4d1fb4={'raw':![],'where':{'id':_0x16d802['params']['id']}},_0x1a7afa={};_0x1a7afa[_0x6dc1('0x30')]=_['keys'](db['FreshdeskConfiguration'][_0x6dc1('0x2c')]);_0x1a7afa[_0x6dc1('0x32')]=_[_0x6dc1('0x33')](_0x16d802[_0x6dc1('0x32')]);_0x1a7afa[_0x6dc1('0x34')]=_[_0x6dc1('0x35')](_0x1a7afa[_0x6dc1('0x30')],_0x1a7afa[_0x6dc1('0x32')]);_0x4d1fb4[_0x6dc1('0x36')]=_[_0x6dc1('0x35')](_0x1a7afa[_0x6dc1('0x30')],qs[_0x6dc1('0x37')](_0x16d802['query'][_0x6dc1('0x37')]));_0x4d1fb4['attributes']=_0x4d1fb4[_0x6dc1('0x36')][_0x6dc1('0x38')]?_0x4d1fb4[_0x6dc1('0x36')]:_0x1a7afa[_0x6dc1('0x30')];if(_0x16d802[_0x6dc1('0x32')][_0x6dc1('0x45')]){_0x4d1fb4[_0x6dc1('0x46')]=[{'all':!![]}];}_0x4d1fb4=_[_0x6dc1('0x3f')]({},_0x4d1fb4,_0x16d802[_0x6dc1('0x41')]);return db[_0x6dc1('0x2b')][_0x6dc1('0x47')](_0x4d1fb4)[_0x6dc1('0x25')](handleEntityNotFound(_0x3f8079,null))[_0x6dc1('0x25')](respondWithResult(_0x3f8079,null))['catch'](handleError(_0x3f8079,null));};exports[_0x6dc1('0x48')]=function(_0x171a08,_0x8a4c16){return db[_0x6dc1('0x2b')][_0x6dc1('0x48')](_0x171a08[_0x6dc1('0x49')],{})[_0x6dc1('0x25')](respondWithResult(_0x8a4c16,0xc9))[_0x6dc1('0x4a')](handleError(_0x8a4c16,null));};exports[_0x6dc1('0x4b')]=function(_0x148159,_0x1eb38a){if(_0x148159['body']['id']){delete _0x148159[_0x6dc1('0x49')]['id'];}return db[_0x6dc1('0x2b')][_0x6dc1('0x47')]({'where':{'id':_0x148159[_0x6dc1('0x4c')]['id']}})['then'](handleEntityNotFound(_0x1eb38a,null))['then'](saveUpdates(_0x148159[_0x6dc1('0x49')],null))[_0x6dc1('0x25')](respondWithResult(_0x1eb38a,null))[_0x6dc1('0x4a')](handleError(_0x1eb38a,null));};exports[_0x6dc1('0x26')]=function(_0x49e329,_0x199833){return db[_0x6dc1('0x2b')][_0x6dc1('0x47')]({'where':{'id':_0x49e329[_0x6dc1('0x4c')]['id']}})[_0x6dc1('0x25')](handleEntityNotFound(_0x199833,null))['then'](removeEntity(_0x199833,null))[_0x6dc1('0x4a')](handleError(_0x199833,null));};exports[_0x6dc1('0x4d')]=function(_0x149515,_0x126b5c,_0x19a704){var _0x1abffb={};var _0x31bbfb={};var _0x2dc41b;var _0x487368;return db['FreshdeskConfiguration'][_0x6dc1('0x4e')]({'where':{'id':_0x149515[_0x6dc1('0x4c')]['id']}})[_0x6dc1('0x25')](handleEntityNotFound(_0x126b5c,null))[_0x6dc1('0x25')](function(_0x31c0b8){if(_0x31c0b8){_0x2dc41b=_0x31c0b8;_0x31bbfb[_0x6dc1('0x30')]=_[_0x6dc1('0x33')](db[_0x6dc1('0x4f')][_0x6dc1('0x2c')]);_0x31bbfb[_0x6dc1('0x32')]=_['keys'](_0x149515['query']);_0x31bbfb[_0x6dc1('0x34')]=_[_0x6dc1('0x35')](_0x31bbfb['model'],_0x31bbfb[_0x6dc1('0x32')]);_0x1abffb['attributes']=_[_0x6dc1('0x35')](_0x31bbfb['model'],qs[_0x6dc1('0x37')](_0x149515[_0x6dc1('0x32')][_0x6dc1('0x37')]));_0x1abffb[_0x6dc1('0x36')]=_0x1abffb[_0x6dc1('0x36')]['length']?_0x1abffb[_0x6dc1('0x36')]:_0x31bbfb['model'];_0x1abffb[_0x6dc1('0x3a')]=qs['sort'](_0x149515['query'][_0x6dc1('0x3b')]);_0x1abffb['where']=qs[_0x6dc1('0x34')](_[_0x6dc1('0x3d')](_0x149515[_0x6dc1('0x32')],_0x31bbfb[_0x6dc1('0x34')]));if(_0x149515[_0x6dc1('0x32')][_0x6dc1('0x3e')]){_0x1abffb['where']=_[_0x6dc1('0x3f')](_0x1abffb['where'],{'$or':_[_0x6dc1('0x2a')](_0x1abffb[_0x6dc1('0x36')],function(_0x7f8df8){var _0x13c7ea={};_0x13c7ea[_0x7f8df8]={'$like':'%'+_0x149515['query'][_0x6dc1('0x3e')]+'%'};return _0x13c7ea;})});}_0x1abffb=_[_0x6dc1('0x3f')]({},_0x1abffb,_0x149515[_0x6dc1('0x41')]);return _0x2dc41b[_0x6dc1('0x4d')](_0x1abffb);}})[_0x6dc1('0x25')](function(_0x468f04){if(_0x468f04){_0x487368=_0x468f04[_0x6dc1('0x38')];if(!_0x149515[_0x6dc1('0x32')][_0x6dc1('0x39')](_0x6dc1('0x50'))){_0x1abffb[_0x6dc1('0x20')]=qs[_0x6dc1('0x20')](_0x149515['query'][_0x6dc1('0x20')]);_0x1abffb[_0x6dc1('0x1f')]=qs[_0x6dc1('0x1f')](_0x149515[_0x6dc1('0x32')][_0x6dc1('0x1f')]);}return _0x2dc41b['getFields'](_0x1abffb);}})[_0x6dc1('0x25')](function(_0x17c804){if(_0x17c804){return _0x17c804?{'count':_0x487368,'rows':_0x17c804}:null;}})['then'](respondWithResult(_0x126b5c,null))[_0x6dc1('0x4a')](handleError(_0x126b5c,null));};exports[_0x6dc1('0x51')]=function(_0x3e4f38,_0xb80e57,_0x56482f){var _0x12c460={};var _0x2fb363={};var _0x1482db;var _0x348de5;return db['FreshdeskConfiguration'][_0x6dc1('0x4e')]({'where':{'id':_0x3e4f38[_0x6dc1('0x4c')]['id']}})[_0x6dc1('0x25')](handleEntityNotFound(_0xb80e57,null))['then'](function(_0xb916ed){if(_0xb916ed){_0x1482db=_0xb916ed;_0x2fb363[_0x6dc1('0x30')]=_[_0x6dc1('0x33')](db['FreshdeskField'][_0x6dc1('0x2c')]);_0x2fb363[_0x6dc1('0x32')]=_[_0x6dc1('0x33')](_0x3e4f38[_0x6dc1('0x32')]);_0x2fb363[_0x6dc1('0x34')]=_[_0x6dc1('0x35')](_0x2fb363[_0x6dc1('0x30')],_0x2fb363[_0x6dc1('0x32')]);_0x12c460[_0x6dc1('0x36')]=_[_0x6dc1('0x35')](_0x2fb363['model'],qs[_0x6dc1('0x37')](_0x3e4f38['query'][_0x6dc1('0x37')]));_0x12c460[_0x6dc1('0x36')]=_0x12c460[_0x6dc1('0x36')][_0x6dc1('0x38')]?_0x12c460[_0x6dc1('0x36')]:_0x2fb363[_0x6dc1('0x30')];_0x12c460[_0x6dc1('0x3a')]=qs[_0x6dc1('0x3b')](_0x3e4f38[_0x6dc1('0x32')][_0x6dc1('0x3b')]);_0x12c460[_0x6dc1('0x3c')]=qs['filters'](_[_0x6dc1('0x3d')](_0x3e4f38[_0x6dc1('0x32')],_0x2fb363[_0x6dc1('0x34')]));if(_0x3e4f38[_0x6dc1('0x32')][_0x6dc1('0x3e')]){_0x12c460['where']=_[_0x6dc1('0x3f')](_0x12c460[_0x6dc1('0x3c')],{'$or':_[_0x6dc1('0x2a')](_0x12c460[_0x6dc1('0x36')],function(_0x18424e){var _0x477cfc={};_0x477cfc[_0x18424e]={'$like':'%'+_0x3e4f38[_0x6dc1('0x32')][_0x6dc1('0x3e')]+'%'};return _0x477cfc;})});}_0x12c460=_[_0x6dc1('0x3f')]({},_0x12c460,_0x3e4f38[_0x6dc1('0x41')]);return _0x1482db[_0x6dc1('0x51')](_0x12c460);}})['then'](function(_0x283a68){if(_0x283a68){_0x348de5=_0x283a68[_0x6dc1('0x38')];if(!_0x3e4f38[_0x6dc1('0x32')]['hasOwnProperty'](_0x6dc1('0x50'))){_0x12c460[_0x6dc1('0x20')]=qs[_0x6dc1('0x20')](_0x3e4f38['query']['limit']);_0x12c460[_0x6dc1('0x1f')]=qs[_0x6dc1('0x1f')](_0x3e4f38[_0x6dc1('0x32')]['offset']);}return _0x1482db[_0x6dc1('0x51')](_0x12c460);}})[_0x6dc1('0x25')](function(_0x4fa1f6){if(_0x4fa1f6){return _0x4fa1f6?{'count':_0x348de5,'rows':_0x4fa1f6}:null;}})[_0x6dc1('0x25')](respondWithResult(_0xb80e57,null))['catch'](handleError(_0xb80e57,null));};exports[_0x6dc1('0x52')]=function(_0x1d85b5,_0x40df2d,_0xdae94a){var _0x339808={};var _0x2eea93={};var _0x26b23f;var _0x55c365;return db['FreshdeskConfiguration'][_0x6dc1('0x4e')]({'where':{'id':_0x1d85b5[_0x6dc1('0x4c')]['id']}})[_0x6dc1('0x25')](handleEntityNotFound(_0x40df2d,null))['then'](function(_0x3e7bcb){if(_0x3e7bcb){_0x26b23f=_0x3e7bcb;_0x2eea93[_0x6dc1('0x30')]=_['keys'](db[_0x6dc1('0x4f')]['rawAttributes']);_0x2eea93['query']=_[_0x6dc1('0x33')](_0x1d85b5[_0x6dc1('0x32')]);_0x2eea93[_0x6dc1('0x34')]=_[_0x6dc1('0x35')](_0x2eea93[_0x6dc1('0x30')],_0x2eea93[_0x6dc1('0x32')]);_0x339808[_0x6dc1('0x36')]=_[_0x6dc1('0x35')](_0x2eea93[_0x6dc1('0x30')],qs[_0x6dc1('0x37')](_0x1d85b5['query'][_0x6dc1('0x37')]));_0x339808['attributes']=_0x339808[_0x6dc1('0x36')]['length']?_0x339808[_0x6dc1('0x36')]:_0x2eea93['model'];_0x339808[_0x6dc1('0x3a')]=qs['sort'](_0x1d85b5[_0x6dc1('0x32')][_0x6dc1('0x3b')]);_0x339808[_0x6dc1('0x3c')]=qs[_0x6dc1('0x34')](_['pick'](_0x1d85b5[_0x6dc1('0x32')],_0x2eea93[_0x6dc1('0x34')]));if(_0x1d85b5[_0x6dc1('0x32')][_0x6dc1('0x3e')]){_0x339808[_0x6dc1('0x3c')]=_[_0x6dc1('0x3f')](_0x339808[_0x6dc1('0x3c')],{'$or':_[_0x6dc1('0x2a')](_0x339808[_0x6dc1('0x36')],function(_0x3b9990){var _0x21dbc2={};_0x21dbc2[_0x3b9990]={'$like':'%'+_0x1d85b5[_0x6dc1('0x32')][_0x6dc1('0x3e')]+'%'};return _0x21dbc2;})});}_0x339808=_[_0x6dc1('0x3f')]({},_0x339808,_0x1d85b5[_0x6dc1('0x41')]);return _0x26b23f[_0x6dc1('0x52')](_0x339808);}})[_0x6dc1('0x25')](function(_0x49d27e){if(_0x49d27e){_0x55c365=_0x49d27e['length'];if(!_0x1d85b5[_0x6dc1('0x32')]['hasOwnProperty'](_0x6dc1('0x50'))){_0x339808[_0x6dc1('0x20')]=qs[_0x6dc1('0x20')](_0x1d85b5[_0x6dc1('0x32')][_0x6dc1('0x20')]);_0x339808['offset']=qs[_0x6dc1('0x1f')](_0x1d85b5[_0x6dc1('0x32')][_0x6dc1('0x1f')]);}return _0x26b23f[_0x6dc1('0x52')](_0x339808);}})[_0x6dc1('0x25')](function(_0x43d81c){if(_0x43d81c){return _0x43d81c?{'count':_0x55c365,'rows':_0x43d81c}:null;}})[_0x6dc1('0x25')](respondWithResult(_0x40df2d,null))['catch'](handleError(_0x40df2d,null));};exports[_0x6dc1('0x53')]=function(_0x4251cf,_0x28c199,_0x494b46){var _0x18d77a={};var _0xd1fc73={};var _0x1120a9;var _0x5394e1;return db[_0x6dc1('0x2b')]['findOne']({'where':{'id':_0x4251cf['params']['id']}})[_0x6dc1('0x25')](handleEntityNotFound(_0x28c199,null))[_0x6dc1('0x25')](function(_0x2bb5bb){if(_0x2bb5bb){_0x1120a9=_0x2bb5bb;_0xd1fc73['model']=_[_0x6dc1('0x33')](db['Tag']['rawAttributes']);_0xd1fc73['query']=_['keys'](_0x4251cf[_0x6dc1('0x32')]);_0xd1fc73['filters']=_[_0x6dc1('0x35')](_0xd1fc73[_0x6dc1('0x30')],_0xd1fc73[_0x6dc1('0x32')]);_0x18d77a['attributes']=_[_0x6dc1('0x35')](_0xd1fc73[_0x6dc1('0x30')],qs[_0x6dc1('0x37')](_0x4251cf['query'][_0x6dc1('0x37')]));_0x18d77a['attributes']=_0x18d77a[_0x6dc1('0x36')][_0x6dc1('0x38')]?_0x18d77a['attributes']:_0xd1fc73[_0x6dc1('0x30')];_0x18d77a[_0x6dc1('0x3a')]=qs[_0x6dc1('0x3b')](_0x4251cf[_0x6dc1('0x32')][_0x6dc1('0x3b')]);_0x18d77a[_0x6dc1('0x3c')]=qs[_0x6dc1('0x34')](_['pick'](_0x4251cf[_0x6dc1('0x32')],_0xd1fc73[_0x6dc1('0x34')]));if(_0x4251cf[_0x6dc1('0x32')][_0x6dc1('0x3e')]){_0x18d77a[_0x6dc1('0x3c')]=_[_0x6dc1('0x3f')](_0x18d77a[_0x6dc1('0x3c')],{'$or':_['map'](_0x18d77a['attributes'],function(_0x3662d0){var _0x3d4da2={};_0x3d4da2[_0x3662d0]={'$like':'%'+_0x4251cf[_0x6dc1('0x32')][_0x6dc1('0x3e')]+'%'};return _0x3d4da2;})});}_0x18d77a=_[_0x6dc1('0x3f')]({},_0x18d77a,_0x4251cf[_0x6dc1('0x41')]);return _0x1120a9['getTags'](_0x18d77a);}})['then'](function(_0x2430ef){if(_0x2430ef){_0x5394e1=_0x2430ef[_0x6dc1('0x38')];if(!_0x4251cf[_0x6dc1('0x32')][_0x6dc1('0x39')]('nolimit')){_0x18d77a[_0x6dc1('0x20')]=qs[_0x6dc1('0x20')](_0x4251cf[_0x6dc1('0x32')]['limit']);_0x18d77a['offset']=qs[_0x6dc1('0x1f')](_0x4251cf[_0x6dc1('0x32')]['offset']);}return _0x1120a9[_0x6dc1('0x53')](_0x18d77a);}})[_0x6dc1('0x25')](function(_0xea1915){if(_0xea1915){return _0xea1915?{'count':_0x5394e1,'rows':_0xea1915}:null;}})[_0x6dc1('0x25')](respondWithResult(_0x28c199,null))['catch'](handleError(_0x28c199,null));};exports[_0x6dc1('0x54')]=function(_0x1efe52,_0x180034,_0x8794c3){if(_0x1efe52[_0x6dc1('0x49')]['id']){delete _0x1efe52[_0x6dc1('0x49')]['id'];}return db[_0x6dc1('0x2b')][_0x6dc1('0x4e')]({'where':{'id':_0x1efe52[_0x6dc1('0x4c')]['id']}})['then'](handleEntityNotFound(_0x180034,null))[_0x6dc1('0x25')](function(_0x3cc5d6){if(_0x3cc5d6){return _0x3cc5d6[_0x6dc1('0x54')](_0x1efe52['body']['ids']||[]);}return null;})[_0x6dc1('0x25')](respondWithResult(_0x180034,null))['catch'](handleError(_0x180034,null));};
\ No newline at end of file
+var _0x4954=['to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','limit','count','offset','status','set','Content-Range','apply','reject','save','update','then','sendStatus','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','merge','options','findAll','rows','catch','show','params','keys','includeAll','include','find','create','body','destroy','getFields','findOne','FreshdeskField','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','path','sox'];(function(_0x7dda55,_0x3ea1c9){var _0x515db5=function(_0x111c5e){while(--_0x111c5e){_0x7dda55['push'](_0x7dda55['shift']());}};_0x515db5(++_0x3ea1c9);}(_0x4954,0x1a1));var _0x4495=function(_0x28dced,_0x55cacf){_0x28dced=_0x28dced-0x0;var _0x339e8a=_0x4954[_0x28dced];return _0x339e8a;};'use strict';var emlformat=require(_0x4495('0x0'));var rimraf=require(_0x4495('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4495('0x2'));var rp=require(_0x4495('0x3'));var moment=require('moment');var BPromise=require(_0x4495('0x4'));var Mustache=require('mustache');var util=require(_0x4495('0x5'));var path=require(_0x4495('0x6'));var sox=require(_0x4495('0x7'));var csv=require(_0x4495('0x8'));var ejs=require(_0x4495('0x9'));var fs=require('fs');var fs_extra=require(_0x4495('0xa'));var _=require(_0x4495('0xb'));var squel=require('squel');var crypto=require(_0x4495('0xc'));var jsforce=require(_0x4495('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x4495('0x8'));var querystring=require(_0x4495('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4495('0xf'));var qs=require(_0x4495('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4495('0x11'));var logger=require('../../config/logger')(_0x4495('0x12'));var utils=require(_0x4495('0x13'));var config=require(_0x4495('0x14'));var licenseUtil=require(_0x4495('0x15'));var db=require(_0x4495('0x16'))['db'];function respondWithStatusCode(_0x3a4d00,_0xe238e0){_0xe238e0=_0xe238e0||0xcc;return function(_0x267104){if(_0x267104){return _0x3a4d00['sendStatus'](_0xe238e0);}return _0x3a4d00['status'](_0xe238e0)[_0x4495('0x17')]();};}function respondWithResult(_0xb97245,_0x2f9daf){_0x2f9daf=_0x2f9daf||0xc8;return function(_0xe9f881){if(_0xe9f881){return _0xb97245['status'](_0x2f9daf)[_0x4495('0x18')](_0xe9f881);}};}function respondWithFilteredResult(_0x30c237,_0x19d091){return function(_0x2bf158){if(_0x2bf158){var _0xd47f27=typeof _0x19d091['offset']===_0x4495('0x19')&&typeof _0x19d091[_0x4495('0x1a')]===_0x4495('0x19');var _0xcc4d14=_0x2bf158[_0x4495('0x1b')];var _0x5f4df7=_0xd47f27?0x0:_0x19d091['offset'];var _0x4d36bc=_0xd47f27?_0x2bf158[_0x4495('0x1b')]:_0x19d091[_0x4495('0x1c')]+_0x19d091[_0x4495('0x1a')];var _0x29587a;if(_0x4d36bc>=_0xcc4d14){_0x4d36bc=_0xcc4d14;_0x29587a=0xc8;}else{_0x29587a=0xce;}_0x30c237[_0x4495('0x1d')](_0x29587a);return _0x30c237[_0x4495('0x1e')](_0x4495('0x1f'),_0x5f4df7+'-'+_0x4d36bc+'/'+_0xcc4d14)['json'](_0x2bf158);}return null;};}function patchUpdates(_0x339e5b){return function(_0x52397b){try{jsonpatch[_0x4495('0x20')](_0x52397b,_0x339e5b,!![]);}catch(_0x1b5c7f){return BPromise[_0x4495('0x21')](_0x1b5c7f);}return _0x52397b[_0x4495('0x22')]();};}function saveUpdates(_0x45cad3,_0x12dff8){return function(_0x37051e){if(_0x37051e){return _0x37051e[_0x4495('0x23')](_0x45cad3)[_0x4495('0x24')](function(_0x56e914){return _0x56e914;});}return null;};}function removeEntity(_0x3ae912,_0x583da2){return function(_0x394b3a){if(_0x394b3a){return _0x394b3a['destroy']()['then'](function(){_0x3ae912[_0x4495('0x1d')](0xcc)[_0x4495('0x17')]();});}};}function handleEntityNotFound(_0x1d65ac,_0x37e472){return function(_0x25e5c6){if(!_0x25e5c6){_0x1d65ac[_0x4495('0x25')](0x194);}return _0x25e5c6;};}function handleError(_0x3cac3e,_0x270135){_0x270135=_0x270135||0x1f4;return function(_0x408acd){logger['error'](_0x408acd[_0x4495('0x26')]);if(_0x408acd[_0x4495('0x27')]){delete _0x408acd[_0x4495('0x27')];}_0x3cac3e['status'](_0x270135)[_0x4495('0x28')](_0x408acd);};}exports[_0x4495('0x29')]=function(_0x8c90f1,_0x2a74cc){var _0x5f3631={},_0x3cc2c0={},_0x563198={'count':0x0,'rows':[]};var _0x19af19=_['map'](db[_0x4495('0x2a')][_0x4495('0x2b')],function(_0x5edc3f){return{'name':_0x5edc3f[_0x4495('0x2c')],'type':_0x5edc3f[_0x4495('0x2d')][_0x4495('0x2e')]};});_0x3cc2c0[_0x4495('0x2f')]=_[_0x4495('0x30')](_0x19af19,_0x4495('0x27'));_0x3cc2c0['query']=_['keys'](_0x8c90f1[_0x4495('0x31')]);_0x3cc2c0[_0x4495('0x32')]=_['intersection'](_0x3cc2c0[_0x4495('0x2f')],_0x3cc2c0['query']);_0x5f3631[_0x4495('0x33')]=_[_0x4495('0x34')](_0x3cc2c0[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x8c90f1['query'][_0x4495('0x35')]));_0x5f3631[_0x4495('0x33')]=_0x5f3631[_0x4495('0x33')][_0x4495('0x36')]?_0x5f3631['attributes']:_0x3cc2c0[_0x4495('0x2f')];if(!_0x8c90f1['query'][_0x4495('0x37')]('nolimit')){_0x5f3631[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x1a')]);_0x5f3631[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x1c')]);}_0x5f3631[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x8c90f1[_0x4495('0x31')][_0x4495('0x39')]);_0x5f3631[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x8c90f1[_0x4495('0x31')],_0x3cc2c0[_0x4495('0x32')]),_0x19af19);if(_0x8c90f1[_0x4495('0x31')]['filter']){_0x5f3631[_0x4495('0x3a')]=_['merge'](_0x5f3631[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x19af19,function(_0x166d4c){if(_0x166d4c[_0x4495('0x2d')]!==_0x4495('0x3c')){var _0x53d880={};_0x53d880[_0x166d4c[_0x4495('0x27')]]={'$like':'%'+_0x8c90f1[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x53d880;}})});}_0x5f3631=_[_0x4495('0x3e')]({},_0x5f3631,_0x8c90f1[_0x4495('0x3f')]);var _0x2fe2a6={'where':_0x5f3631[_0x4495('0x3a')]};return db[_0x4495('0x2a')][_0x4495('0x1b')](_0x2fe2a6)[_0x4495('0x24')](function(_0x430d05){_0x563198[_0x4495('0x1b')]=_0x430d05;if(_0x8c90f1[_0x4495('0x31')]['includeAll']){_0x5f3631['include']=[{'all':!![]}];}return db[_0x4495('0x2a')][_0x4495('0x40')](_0x5f3631);})[_0x4495('0x24')](function(_0x109d5e){_0x563198[_0x4495('0x41')]=_0x109d5e;return _0x563198;})[_0x4495('0x24')](respondWithFilteredResult(_0x2a74cc,_0x5f3631))[_0x4495('0x42')](handleError(_0x2a74cc,null));};exports[_0x4495('0x43')]=function(_0x5171be,_0x6ec786){var _0x2e1f89={'raw':![],'where':{'id':_0x5171be[_0x4495('0x44')]['id']}},_0x21ad56={};_0x21ad56[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x2a')][_0x4495('0x2b')]);_0x21ad56[_0x4495('0x31')]=_['keys'](_0x5171be['query']);_0x21ad56['filters']=_[_0x4495('0x34')](_0x21ad56[_0x4495('0x2f')],_0x21ad56[_0x4495('0x31')]);_0x2e1f89[_0x4495('0x33')]=_[_0x4495('0x34')](_0x21ad56[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x5171be[_0x4495('0x31')][_0x4495('0x35')]));_0x2e1f89[_0x4495('0x33')]=_0x2e1f89['attributes']['length']?_0x2e1f89[_0x4495('0x33')]:_0x21ad56[_0x4495('0x2f')];if(_0x5171be[_0x4495('0x31')][_0x4495('0x46')]){_0x2e1f89[_0x4495('0x47')]=[{'all':!![]}];}_0x2e1f89=_[_0x4495('0x3e')]({},_0x2e1f89,_0x5171be[_0x4495('0x3f')]);return db[_0x4495('0x2a')][_0x4495('0x48')](_0x2e1f89)[_0x4495('0x24')](handleEntityNotFound(_0x6ec786,null))['then'](respondWithResult(_0x6ec786,null))[_0x4495('0x42')](handleError(_0x6ec786,null));};exports[_0x4495('0x49')]=function(_0x4be075,_0x5b81ca){return db[_0x4495('0x2a')][_0x4495('0x49')](_0x4be075['body'],{})[_0x4495('0x24')](respondWithResult(_0x5b81ca,0xc9))['catch'](handleError(_0x5b81ca,null));};exports[_0x4495('0x23')]=function(_0x1521c6,_0x32d4d0){if(_0x1521c6[_0x4495('0x4a')]['id']){delete _0x1521c6['body']['id'];}return db[_0x4495('0x2a')][_0x4495('0x48')]({'where':{'id':_0x1521c6[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x32d4d0,null))[_0x4495('0x24')](saveUpdates(_0x1521c6[_0x4495('0x4a')],null))[_0x4495('0x24')](respondWithResult(_0x32d4d0,null))[_0x4495('0x42')](handleError(_0x32d4d0,null));};exports[_0x4495('0x4b')]=function(_0x580099,_0x25e590){return db[_0x4495('0x2a')]['find']({'where':{'id':_0x580099['params']['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x25e590,null))[_0x4495('0x24')](removeEntity(_0x25e590,null))[_0x4495('0x42')](handleError(_0x25e590,null));};exports[_0x4495('0x4c')]=function(_0x256c3b,_0x430b26,_0x4ea55a){var _0x2c6cab={};var _0x3e3f87={};var _0x291c2e;var _0x5cf556;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x256c3b[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x430b26,null))[_0x4495('0x24')](function(_0x5d3ea1){if(_0x5d3ea1){_0x291c2e=_0x5d3ea1;_0x3e3f87[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x3e3f87['query']=_[_0x4495('0x45')](_0x256c3b[_0x4495('0x31')]);_0x3e3f87[_0x4495('0x32')]=_[_0x4495('0x34')](_0x3e3f87[_0x4495('0x2f')],_0x3e3f87[_0x4495('0x31')]);_0x2c6cab['attributes']=_['intersection'](_0x3e3f87[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x256c3b['query'][_0x4495('0x35')]));_0x2c6cab['attributes']=_0x2c6cab['attributes'][_0x4495('0x36')]?_0x2c6cab[_0x4495('0x33')]:_0x3e3f87[_0x4495('0x2f')];_0x2c6cab[_0x4495('0x38')]=qs['sort'](_0x256c3b[_0x4495('0x31')][_0x4495('0x39')]);_0x2c6cab[_0x4495('0x3a')]=qs[_0x4495('0x32')](_['pick'](_0x256c3b[_0x4495('0x31')],_0x3e3f87[_0x4495('0x32')]));if(_0x256c3b[_0x4495('0x31')][_0x4495('0x3d')]){_0x2c6cab[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x2c6cab[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x2c6cab['attributes'],function(_0x57e20b){var _0x44817e={};_0x44817e[_0x57e20b]={'$like':'%'+_0x256c3b[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x44817e;})});}_0x2c6cab=_['merge']({},_0x2c6cab,_0x256c3b[_0x4495('0x3f')]);return _0x291c2e[_0x4495('0x4c')](_0x2c6cab);}})[_0x4495('0x24')](function(_0x19846a){if(_0x19846a){_0x5cf556=_0x19846a[_0x4495('0x36')];if(!_0x256c3b['query'][_0x4495('0x37')](_0x4495('0x4f'))){_0x2c6cab[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x256c3b[_0x4495('0x31')][_0x4495('0x1a')]);_0x2c6cab[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x256c3b[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x291c2e['getFields'](_0x2c6cab);}})[_0x4495('0x24')](function(_0x2b01b2){if(_0x2b01b2){return _0x2b01b2?{'count':_0x5cf556,'rows':_0x2b01b2}:null;}})[_0x4495('0x24')](respondWithResult(_0x430b26,null))[_0x4495('0x42')](handleError(_0x430b26,null));};exports[_0x4495('0x50')]=function(_0x461602,_0x13545a,_0x2009f0){var _0x4373d7={};var _0x15c4d9={};var _0x3fb5c4;var _0x4e5a35;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x461602[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x13545a,null))[_0x4495('0x24')](function(_0x3dc68b){if(_0x3dc68b){_0x3fb5c4=_0x3dc68b;_0x15c4d9[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x15c4d9[_0x4495('0x31')]=_[_0x4495('0x45')](_0x461602[_0x4495('0x31')]);_0x15c4d9[_0x4495('0x32')]=_[_0x4495('0x34')](_0x15c4d9[_0x4495('0x2f')],_0x15c4d9['query']);_0x4373d7['attributes']=_['intersection'](_0x15c4d9[_0x4495('0x2f')],qs['fields'](_0x461602['query'][_0x4495('0x35')]));_0x4373d7[_0x4495('0x33')]=_0x4373d7['attributes'][_0x4495('0x36')]?_0x4373d7['attributes']:_0x15c4d9[_0x4495('0x2f')];_0x4373d7[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x461602[_0x4495('0x31')][_0x4495('0x39')]);_0x4373d7[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x461602['query'],_0x15c4d9['filters']));if(_0x461602['query'][_0x4495('0x3d')]){_0x4373d7[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x4373d7[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x4373d7[_0x4495('0x33')],function(_0x1c6dd9){var _0x343dcd={};_0x343dcd[_0x1c6dd9]={'$like':'%'+_0x461602[_0x4495('0x31')]['filter']+'%'};return _0x343dcd;})});}_0x4373d7=_[_0x4495('0x3e')]({},_0x4373d7,_0x461602[_0x4495('0x3f')]);return _0x3fb5c4['getSubjects'](_0x4373d7);}})[_0x4495('0x24')](function(_0x2b6b3b){if(_0x2b6b3b){_0x4e5a35=_0x2b6b3b['length'];if(!_0x461602['query'][_0x4495('0x37')]('nolimit')){_0x4373d7[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x461602[_0x4495('0x31')][_0x4495('0x1a')]);_0x4373d7['offset']=qs['offset'](_0x461602[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x3fb5c4[_0x4495('0x50')](_0x4373d7);}})[_0x4495('0x24')](function(_0x4abd71){if(_0x4abd71){return _0x4abd71?{'count':_0x4e5a35,'rows':_0x4abd71}:null;}})[_0x4495('0x24')](respondWithResult(_0x13545a,null))[_0x4495('0x42')](handleError(_0x13545a,null));};exports[_0x4495('0x51')]=function(_0x474c45,_0x32260f,_0x504a30){var _0x16d45d={};var _0x1c66bb={};var _0x438cd1;var _0x2bf921;return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x474c45[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x32260f,null))['then'](function(_0xf4956c){if(_0xf4956c){_0x438cd1=_0xf4956c;_0x1c66bb[_0x4495('0x2f')]=_['keys'](db[_0x4495('0x4e')][_0x4495('0x2b')]);_0x1c66bb[_0x4495('0x31')]=_[_0x4495('0x45')](_0x474c45[_0x4495('0x31')]);_0x1c66bb[_0x4495('0x32')]=_[_0x4495('0x34')](_0x1c66bb[_0x4495('0x2f')],_0x1c66bb[_0x4495('0x31')]);_0x16d45d['attributes']=_[_0x4495('0x34')](_0x1c66bb[_0x4495('0x2f')],qs[_0x4495('0x35')](_0x474c45['query'][_0x4495('0x35')]));_0x16d45d[_0x4495('0x33')]=_0x16d45d['attributes'][_0x4495('0x36')]?_0x16d45d[_0x4495('0x33')]:_0x1c66bb['model'];_0x16d45d[_0x4495('0x38')]=qs[_0x4495('0x39')](_0x474c45[_0x4495('0x31')]['sort']);_0x16d45d[_0x4495('0x3a')]=qs[_0x4495('0x32')](_[_0x4495('0x3b')](_0x474c45['query'],_0x1c66bb[_0x4495('0x32')]));if(_0x474c45[_0x4495('0x31')][_0x4495('0x3d')]){_0x16d45d[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x16d45d['where'],{'$or':_[_0x4495('0x30')](_0x16d45d[_0x4495('0x33')],function(_0x23707d){var _0x48edca={};_0x48edca[_0x23707d]={'$like':'%'+_0x474c45[_0x4495('0x31')][_0x4495('0x3d')]+'%'};return _0x48edca;})});}_0x16d45d=_['merge']({},_0x16d45d,_0x474c45['options']);return _0x438cd1[_0x4495('0x51')](_0x16d45d);}})[_0x4495('0x24')](function(_0xc8a595){if(_0xc8a595){_0x2bf921=_0xc8a595[_0x4495('0x36')];if(!_0x474c45[_0x4495('0x31')][_0x4495('0x37')]('nolimit')){_0x16d45d[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x474c45[_0x4495('0x31')][_0x4495('0x1a')]);_0x16d45d[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x474c45['query']['offset']);}return _0x438cd1[_0x4495('0x51')](_0x16d45d);}})['then'](function(_0x44d34a){if(_0x44d34a){return _0x44d34a?{'count':_0x2bf921,'rows':_0x44d34a}:null;}})[_0x4495('0x24')](respondWithResult(_0x32260f,null))[_0x4495('0x42')](handleError(_0x32260f,null));};exports[_0x4495('0x52')]=function(_0x29eb37,_0x40b41a,_0xa13235){var _0x40669f={};var _0x49a625={};var _0x2b7487;var _0x23c743;return db[_0x4495('0x2a')]['findOne']({'where':{'id':_0x29eb37[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x40b41a,null))['then'](function(_0x53abe9){if(_0x53abe9){_0x2b7487=_0x53abe9;_0x49a625[_0x4495('0x2f')]=_[_0x4495('0x45')](db[_0x4495('0x53')][_0x4495('0x2b')]);_0x49a625[_0x4495('0x31')]=_[_0x4495('0x45')](_0x29eb37[_0x4495('0x31')]);_0x49a625['filters']=_[_0x4495('0x34')](_0x49a625[_0x4495('0x2f')],_0x49a625[_0x4495('0x31')]);_0x40669f[_0x4495('0x33')]=_['intersection'](_0x49a625[_0x4495('0x2f')],qs['fields'](_0x29eb37['query'][_0x4495('0x35')]));_0x40669f[_0x4495('0x33')]=_0x40669f['attributes'][_0x4495('0x36')]?_0x40669f[_0x4495('0x33')]:_0x49a625[_0x4495('0x2f')];_0x40669f['order']=qs[_0x4495('0x39')](_0x29eb37[_0x4495('0x31')][_0x4495('0x39')]);_0x40669f[_0x4495('0x3a')]=qs['filters'](_[_0x4495('0x3b')](_0x29eb37['query'],_0x49a625[_0x4495('0x32')]));if(_0x29eb37[_0x4495('0x31')][_0x4495('0x3d')]){_0x40669f[_0x4495('0x3a')]=_[_0x4495('0x3e')](_0x40669f[_0x4495('0x3a')],{'$or':_[_0x4495('0x30')](_0x40669f[_0x4495('0x33')],function(_0x444ffa){var _0x37d129={};_0x37d129[_0x444ffa]={'$like':'%'+_0x29eb37['query'][_0x4495('0x3d')]+'%'};return _0x37d129;})});}_0x40669f=_[_0x4495('0x3e')]({},_0x40669f,_0x29eb37[_0x4495('0x3f')]);return _0x2b7487[_0x4495('0x52')](_0x40669f);}})[_0x4495('0x24')](function(_0x1fedd5){if(_0x1fedd5){_0x23c743=_0x1fedd5['length'];if(!_0x29eb37[_0x4495('0x31')][_0x4495('0x37')](_0x4495('0x4f'))){_0x40669f[_0x4495('0x1a')]=qs[_0x4495('0x1a')](_0x29eb37[_0x4495('0x31')][_0x4495('0x1a')]);_0x40669f[_0x4495('0x1c')]=qs[_0x4495('0x1c')](_0x29eb37[_0x4495('0x31')][_0x4495('0x1c')]);}return _0x2b7487[_0x4495('0x52')](_0x40669f);}})[_0x4495('0x24')](function(_0x651944){if(_0x651944){return _0x651944?{'count':_0x23c743,'rows':_0x651944}:null;}})[_0x4495('0x24')](respondWithResult(_0x40b41a,null))[_0x4495('0x42')](handleError(_0x40b41a,null));};exports[_0x4495('0x54')]=function(_0x3b24b1,_0x3d649d,_0x562b6b){if(_0x3b24b1[_0x4495('0x4a')]['id']){delete _0x3b24b1[_0x4495('0x4a')]['id'];}return db[_0x4495('0x2a')][_0x4495('0x4d')]({'where':{'id':_0x3b24b1[_0x4495('0x44')]['id']}})[_0x4495('0x24')](handleEntityNotFound(_0x3d649d,null))['then'](function(_0x1240ab){if(_0x1240ab){return _0x1240ab['setTags'](_0x3b24b1['body']['ids']||[]);}return null;})['then'](respondWithResult(_0x3d649d,null))[_0x4495('0x42')](handleError(_0x3d649d,null));};
\ No newline at end of file
index 6908181..0adad5a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47c3=['path','rimraf','./intFreshdeskConfiguration.attributes','FreshdeskConfiguration','lodash','util','api','moment','request-promise'];(function(_0x112db5,_0x38a06d){var _0x1d7d06=function(_0x44571e){while(--_0x44571e){_0x112db5['push'](_0x112db5['shift']());}};_0x1d7d06(++_0x38a06d);}(_0x47c3,0x1ab));var _0x347c=function(_0xc3776,_0x306a6f){_0xc3776=_0xc3776-0x0;var _0x52a884=_0x47c3[_0xc3776];return _0x52a884;};'use strict';var _=require(_0x347c('0x0'));var util=require(_0x347c('0x1'));var logger=require('../../config/logger')(_0x347c('0x2'));var moment=require(_0x347c('0x3'));var BPromise=require('bluebird');var rp=require(_0x347c('0x4'));var fs=require('fs');var path=require(_0x347c('0x5'));var rimraf=require(_0x347c('0x6'));var config=require('../../config/environment');var attributes=require(_0x347c('0x7'));module['exports']=function(_0x15006c,_0x623f79){return _0x15006c['define'](_0x347c('0x8'),attributes,{'tableName':'int_freshdesk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f48=['int_freshdesk_configurations','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','define','FreshdeskConfiguration'];(function(_0x422b1c,_0x401cd1){var _0x4ae0ec=function(_0x3a34de){while(--_0x3a34de){_0x422b1c['push'](_0x422b1c['shift']());}};_0x4ae0ec(++_0x401cd1);}(_0x8f48,0x12c));var _0x88f4=function(_0x3ab0ac,_0x1ea9cf){_0x3ab0ac=_0x3ab0ac-0x0;var _0x1f743d=_0x8f48[_0x3ab0ac];return _0x1f743d;};'use strict';var _=require(_0x88f4('0x0'));var util=require(_0x88f4('0x1'));var logger=require(_0x88f4('0x2'))(_0x88f4('0x3'));var moment=require(_0x88f4('0x4'));var BPromise=require(_0x88f4('0x5'));var rp=require(_0x88f4('0x6'));var fs=require('fs');var path=require(_0x88f4('0x7'));var rimraf=require('rimraf');var config=require(_0x88f4('0x8'));var attributes=require(_0x88f4('0x9'));module['exports']=function(_0x32ccbe,_0x54d208){return _0x32ccbe[_0x88f4('0xa')](_0x88f4('0xb'),attributes,{'tableName':_0x88f4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 542f7c7..8876c17 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ae=['message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info','request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x17f762,_0x4caa7e){var _0x2a2407=function(_0x5d7e76){while(--_0x5d7e76){_0x17f762['push'](_0x17f762['shift']());}};_0x2a2407(++_0x4caa7e);}(_0x98ae,0x13d));var _0xe98a=function(_0x39b980,_0x2ada2e){_0x39b980=_0x39b980-0x0;var _0x24e259=_0x98ae[_0x39b980];return _0x24e259;};'use strict';var _=require(_0xe98a('0x0'));var util=require(_0xe98a('0x1'));var moment=require(_0xe98a('0x2'));var BPromise=require(_0xe98a('0x3'));var rs=require(_0xe98a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe98a('0x5'))['db'];var utils=require(_0xe98a('0x6'));var logger=require(_0xe98a('0x7'))('rpc');var config=require(_0xe98a('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe98a('0x9')][_0xe98a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c7b1e,_0xfd6d71,_0x2ed526){return new BPromise(function(_0x31ecb7,_0x319fa4){return client['request'](_0x4c7b1e,_0x2ed526)[_0xe98a('0xb')](function(_0x45a7d0){logger[_0xe98a('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s',_0xfd6d71,_0xe98a('0xd'));logger[_0xe98a('0xe')](_0xe98a('0xf'),_0xfd6d71,'request\x20sent',JSON[_0xe98a('0x10')](_0x45a7d0));if(_0x45a7d0[_0xe98a('0x11')]){if(_0x45a7d0[_0xe98a('0x11')]['code']===0x1f4){logger[_0xe98a('0x11')](_0xe98a('0x12'),_0xfd6d71,_0x45a7d0['error'][_0xe98a('0x13')]);return _0x319fa4(_0x45a7d0[_0xe98a('0x11')][_0xe98a('0x13')]);}logger[_0xe98a('0x11')](_0xe98a('0x12'),_0xfd6d71,_0x45a7d0[_0xe98a('0x11')][_0xe98a('0x13')]);return _0x31ecb7(_0x45a7d0['error'][_0xe98a('0x13')]);}else{logger['info'](_0xe98a('0x12'),_0xfd6d71,_0xe98a('0xd'));_0x31ecb7(_0x45a7d0[_0xe98a('0x14')][_0xe98a('0x13')]);}})['catch'](function(_0x14ee3d){logger[_0xe98a('0x11')]('FreshdeskConfiguration,\x20%s,\x20%s',_0xfd6d71,_0x14ee3d);_0x319fa4(_0x14ee3d);});});}
\ No newline at end of file
+var _0x4288=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','FreshdeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','bluebird'];(function(_0x307d8d,_0x23e7a6){var _0x6b3e12=function(_0x48d02a){while(--_0x48d02a){_0x307d8d['push'](_0x307d8d['shift']());}};_0x6b3e12(++_0x23e7a6);}(_0x4288,0x12b));var _0x8428=function(_0x2f1ef8,_0x104ddb){_0x2f1ef8=_0x2f1ef8-0x0;var _0x597a82=_0x4288[_0x2f1ef8];return _0x597a82;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x8428('0x0'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8428('0x1'));var db=require(_0x8428('0x2'))['db'];var utils=require(_0x8428('0x3'));var logger=require(_0x8428('0x4'))('rpc');var config=require(_0x8428('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x8428('0x6')][_0x8428('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xd7aaf8,_0x360df7,_0x2f83c2){return new BPromise(function(_0x55cce8,_0x296bf2){return client[_0x8428('0x8')](_0xd7aaf8,_0x2f83c2)[_0x8428('0x9')](function(_0x3c8b18){logger['info'](_0x8428('0xa'),_0x360df7,_0x8428('0xb'));logger[_0x8428('0xc')]('FreshdeskConfiguration,\x20%s,\x20%s,\x20%s',_0x360df7,_0x8428('0xb'),JSON[_0x8428('0xd')](_0x3c8b18));if(_0x3c8b18['error']){if(_0x3c8b18[_0x8428('0xe')][_0x8428('0xf')]===0x1f4){logger[_0x8428('0xe')](_0x8428('0xa'),_0x360df7,_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);return _0x296bf2(_0x3c8b18['error'][_0x8428('0x10')]);}logger[_0x8428('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x360df7,_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);return _0x55cce8(_0x3c8b18[_0x8428('0xe')][_0x8428('0x10')]);}else{logger[_0x8428('0x11')](_0x8428('0xa'),_0x360df7,'request\x20sent');_0x55cce8(_0x3c8b18[_0x8428('0x12')]['message']);}})[_0x8428('0x13')](function(_0x8b05d3){logger[_0x8428('0xe')](_0x8428('0xa'),_0x360df7,_0x8b05d3);_0x296bf2(_0x8b05d3);});});}
\ No newline at end of file
index b1310d6..ca07ded 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2851=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x49a6a5,_0x48eda5){var _0x4f0cdc=function(_0x34704b){while(--_0x34704b){_0x49a6a5['push'](_0x49a6a5['shift']());}};_0x4f0cdc(++_0x48eda5);}(_0x2851,0x159));var _0x1285=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x2851[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x1285('0x0'));var util=require(_0x1285('0x1'));var path=require(_0x1285('0x2'));var timeout=require(_0x1285('0x3'));var express=require(_0x1285('0x4'));var router=express[_0x1285('0x5')]();var fs_extra=require(_0x1285('0x6'));var auth=require(_0x1285('0x7'));var interaction=require(_0x1285('0x8'));var config=require(_0x1285('0x9'));var controller=require(_0x1285('0xa'));router[_0x1285('0xb')]('/',auth[_0x1285('0xc')](),controller[_0x1285('0xd')]);router[_0x1285('0xb')](_0x1285('0xe'),auth['isAuthenticated'](),controller[_0x1285('0xf')]);router[_0x1285('0x10')]('/',auth[_0x1285('0xc')](),controller[_0x1285('0x11')]);router[_0x1285('0x12')](_0x1285('0xe'),auth[_0x1285('0xc')](),controller['update']);router[_0x1285('0x13')](_0x1285('0xe'),auth[_0x1285('0xc')](),controller[_0x1285('0x14')]);module[_0x1285('0x15')]=router;
\ No newline at end of file
+var _0x6e38=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','exports','multer'];(function(_0x227166,_0x168fb9){var _0x1b9fb3=function(_0xb91a4a){while(--_0xb91a4a){_0x227166['push'](_0x227166['shift']());}};_0x1b9fb3(++_0x168fb9);}(_0x6e38,0xef));var _0x86e3=function(_0x144039,_0x270430){_0x144039=_0x144039-0x0;var _0x38ab69=_0x6e38[_0x144039];return _0x38ab69;};'use strict';var multer=require(_0x86e3('0x0'));var util=require(_0x86e3('0x1'));var path=require(_0x86e3('0x2'));var timeout=require('connect-timeout');var express=require(_0x86e3('0x3'));var router=express[_0x86e3('0x4')]();var fs_extra=require(_0x86e3('0x5'));var auth=require(_0x86e3('0x6'));var interaction=require(_0x86e3('0x7'));var config=require(_0x86e3('0x8'));var controller=require(_0x86e3('0x9'));router[_0x86e3('0xa')]('/',auth[_0x86e3('0xb')](),controller[_0x86e3('0xc')]);router['get'](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller[_0x86e3('0xe')]);router[_0x86e3('0xf')]('/',auth[_0x86e3('0xb')](),controller[_0x86e3('0x10')]);router[_0x86e3('0x11')](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller['update']);router[_0x86e3('0x12')](_0x86e3('0xd'),auth[_0x86e3('0xb')](),controller['destroy']);module[_0x86e3('0x13')]=router;
\ No newline at end of file
index 80253e0..8bb84bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda70=['customVariable','ENUM','string','variable','keyValue','picklist','STRING'];(function(_0xc036bb,_0x5cab81){var _0x523ab9=function(_0x2eed72){while(--_0x2eed72){_0xc036bb['push'](_0xc036bb['shift']());}};_0x523ab9(++_0x5cab81);}(_0xda70,0x166));var _0x0da7=function(_0x3fa631,_0x24392c){_0x3fa631=_0x3fa631-0x0;var _0x5c9dec=_0xda70[_0x3fa631];return _0x5c9dec;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x0da7('0x0')](_0x0da7('0x1'),_0x0da7('0x2'),'customVariable',_0x0da7('0x3'),_0x0da7('0x4')),'defaultValue':_0x0da7('0x1')},'content':{'type':Sequelize[_0x0da7('0x5')]},'key':{'type':Sequelize[_0x0da7('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x0da7('0x1'),'variable',_0x0da7('0x6'))},'keyContent':{'type':Sequelize[_0x0da7('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9f35=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable'];(function(_0x35411a,_0x3b87aa){var _0x4ac652=function(_0x12d6b5){while(--_0x12d6b5){_0x35411a['push'](_0x35411a['shift']());}};_0x4ac652(++_0x3b87aa);}(_0x9f35,0xdb));var _0x59f3=function(_0x153c5e,_0x589a66){_0x153c5e=_0x153c5e-0x0;var _0x3c592f=_0x9f35[_0x153c5e];return _0x3c592f;};'use strict';var Sequelize=require(_0x59f3('0x0'));module[_0x59f3('0x1')]={'type':{'type':Sequelize[_0x59f3('0x2')](_0x59f3('0x3'),_0x59f3('0x4'),_0x59f3('0x5'),'keyValue',_0x59f3('0x6')),'defaultValue':_0x59f3('0x3')},'content':{'type':Sequelize[_0x59f3('0x7')]},'key':{'type':Sequelize[_0x59f3('0x7')]},'keyType':{'type':Sequelize['ENUM'](_0x59f3('0x3'),_0x59f3('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0x59f3('0x7')]},'idField':{'type':Sequelize[_0x59f3('0x7')]},'nameField':{'type':Sequelize[_0x59f3('0x7')]},'customField':{'type':Sequelize[_0x59f3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x59f3('0x7')]}};
\ No newline at end of file
index 795e770..2c27233 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5b5=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x3862a4,_0xe3099b){var _0x406da4=function(_0x8300f6){while(--_0x8300f6){_0x3862a4['push'](_0x3862a4['shift']());}};_0x406da4(++_0xe3099b);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x2d8d69,_0x8e47ff){_0x2d8d69=_0x2d8d69-0x0;var _0x39ae22=_0xe5b5[_0x2d8d69];return _0x39ae22;};'use strict';var emlformat=require(_0x5e5b('0x0'));var rimraf=require(_0x5e5b('0x1'));var zipdir=require(_0x5e5b('0x2'));var jsonpatch=require(_0x5e5b('0x3'));var rp=require(_0x5e5b('0x4'));var moment=require(_0x5e5b('0x5'));var BPromise=require(_0x5e5b('0x6'));var Mustache=require(_0x5e5b('0x7'));var util=require(_0x5e5b('0x8'));var path=require(_0x5e5b('0x9'));var sox=require(_0x5e5b('0xa'));var csv=require(_0x5e5b('0xb'));var ejs=require(_0x5e5b('0xc'));var fs=require('fs');var fs_extra=require(_0x5e5b('0xd'));var _=require(_0x5e5b('0xe'));var squel=require(_0x5e5b('0xf'));var crypto=require(_0x5e5b('0x10'));var jsforce=require(_0x5e5b('0x11'));var deskjs=require(_0x5e5b('0x12'));var toCsv=require(_0x5e5b('0xb'));var querystring=require(_0x5e5b('0x13'));var Papa=require(_0x5e5b('0x14'));var Redis=require(_0x5e5b('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x5e5b('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e5b('0x17'));var logger=require(_0x5e5b('0x18'))(_0x5e5b('0x19'));var utils=require(_0x5e5b('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x310f71,_0x18434e){_0x18434e=_0x18434e||0xcc;return function(_0x4559a0){if(_0x4559a0){return _0x310f71[_0x5e5b('0x1b')](_0x18434e);}return _0x310f71[_0x5e5b('0x1c')](_0x18434e)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x2e331d,_0x49edd0){_0x49edd0=_0x49edd0||0xc8;return function(_0x2b37fa){if(_0x2b37fa){return _0x2e331d[_0x5e5b('0x1c')](_0x49edd0)['json'](_0x2b37fa);}};}function respondWithFilteredResult(_0x227417,_0x578c14){return function(_0x4e9509){if(_0x4e9509){var _0x13a1cb=typeof _0x578c14[_0x5e5b('0x1e')]===_0x5e5b('0x1f')&&typeof _0x578c14['limit']===_0x5e5b('0x1f');var _0x4d490c=_0x4e9509[_0x5e5b('0x20')];var _0x45a091=_0x13a1cb?0x0:_0x578c14['offset'];var _0xe5aa6b=_0x13a1cb?_0x4e9509[_0x5e5b('0x20')]:_0x578c14[_0x5e5b('0x1e')]+_0x578c14['limit'];var _0x2bf0b7;if(_0xe5aa6b>=_0x4d490c){_0xe5aa6b=_0x4d490c;_0x2bf0b7=0xc8;}else{_0x2bf0b7=0xce;}_0x227417[_0x5e5b('0x1c')](_0x2bf0b7);return _0x227417['set'](_0x5e5b('0x21'),_0x45a091+'-'+_0xe5aa6b+'/'+_0x4d490c)[_0x5e5b('0x22')](_0x4e9509);}return null;};}function patchUpdates(_0x3c488e){return function(_0x2d8252){try{jsonpatch[_0x5e5b('0x23')](_0x2d8252,_0x3c488e,!![]);}catch(_0x33d61b){return BPromise[_0x5e5b('0x24')](_0x33d61b);}return _0x2d8252[_0x5e5b('0x25')]();};}function saveUpdates(_0x4a78e3,_0x512e46){return function(_0x256a00){if(_0x256a00){return _0x256a00[_0x5e5b('0x26')](_0x4a78e3)[_0x5e5b('0x27')](function(_0xe1c268){return _0xe1c268;});}return null;};}function removeEntity(_0x2e38ed,_0x28cd95){return function(_0x135c6c){if(_0x135c6c){return _0x135c6c[_0x5e5b('0x28')]()[_0x5e5b('0x27')](function(){_0x2e38ed[_0x5e5b('0x1c')](0xcc)[_0x5e5b('0x1d')]();});}};}function handleEntityNotFound(_0x4da321,_0x1ebb11){return function(_0x75800d){if(!_0x75800d){_0x4da321[_0x5e5b('0x1b')](0x194);}return _0x75800d;};}function handleError(_0x5a2ba8,_0x988e5d){_0x988e5d=_0x988e5d||0x1f4;return function(_0xdb2863){logger['error'](_0xdb2863[_0x5e5b('0x29')]);if(_0xdb2863[_0x5e5b('0x2a')]){delete _0xdb2863[_0x5e5b('0x2a')];}_0x5a2ba8[_0x5e5b('0x1c')](_0x988e5d)[_0x5e5b('0x2b')](_0xdb2863);};}exports[_0x5e5b('0x2c')]=function(_0x2cb695,_0x2b4351){var _0x3f6b25={},_0x42da3b={},_0xcb272c={'count':0x0,'rows':[]};var _0x28157a=_['map'](db['FreshdeskField'][_0x5e5b('0x2d')],function(_0x289f54){return{'name':_0x289f54[_0x5e5b('0x2e')],'type':_0x289f54[_0x5e5b('0x2f')][_0x5e5b('0x30')]};});_0x42da3b['model']=_[_0x5e5b('0x31')](_0x28157a,'name');_0x42da3b[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x2cb695[_0x5e5b('0x32')]);_0x42da3b[_0x5e5b('0x34')]=_['intersection'](_0x42da3b[_0x5e5b('0x35')],_0x42da3b[_0x5e5b('0x32')]);_0x3f6b25['attributes']=_[_0x5e5b('0x36')](_0x42da3b[_0x5e5b('0x35')],qs[_0x5e5b('0x37')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x3f6b25[_0x5e5b('0x38')]=_0x3f6b25[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x3f6b25['attributes']:_0x42da3b[_0x5e5b('0x35')];if(!_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3a')](_0x5e5b('0x3b'))){_0x3f6b25[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3c')](_0x2cb695['query']['limit']);_0x3f6b25[_0x5e5b('0x1e')]=qs[_0x5e5b('0x1e')](_0x2cb695[_0x5e5b('0x32')]['offset']);}_0x3f6b25[_0x5e5b('0x3d')]=qs[_0x5e5b('0x3e')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3e')]);_0x3f6b25['where']=qs[_0x5e5b('0x34')](_[_0x5e5b('0x3f')](_0x2cb695['query'],_0x42da3b['filters']),_0x28157a);if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]){_0x3f6b25[_0x5e5b('0x41')]=_['merge'](_0x3f6b25[_0x5e5b('0x41')],{'$or':_['map'](_0x28157a,function(_0x5cb741){if(_0x5cb741[_0x5e5b('0x2f')]!==_0x5e5b('0x42')){var _0xef0295={};_0xef0295[_0x5cb741[_0x5e5b('0x2a')]]={'$like':'%'+_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]+'%'};return _0xef0295;}})});}_0x3f6b25=_[_0x5e5b('0x43')]({},_0x3f6b25,_0x2cb695[_0x5e5b('0x44')]);var _0x1034fa={'where':_0x3f6b25['where']};return db[_0x5e5b('0x45')][_0x5e5b('0x20')](_0x1034fa)['then'](function(_0x204487){_0xcb272c['count']=_0x204487;if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x46')]){_0x3f6b25[_0x5e5b('0x47')]=[{'all':!![]}];}return db[_0x5e5b('0x45')][_0x5e5b('0x48')](_0x3f6b25);})[_0x5e5b('0x27')](function(_0x371550){_0xcb272c[_0x5e5b('0x49')]=_0x371550;return _0xcb272c;})[_0x5e5b('0x27')](respondWithFilteredResult(_0x2b4351,_0x3f6b25))[_0x5e5b('0x4a')](handleError(_0x2b4351,null));};exports[_0x5e5b('0x4b')]=function(_0x4e6fe2,_0x2b81dd){var _0x40e8ce={'raw':!![],'where':{'id':_0x4e6fe2['params']['id']}},_0x46fec9={};_0x46fec9[_0x5e5b('0x35')]=_[_0x5e5b('0x33')](db['FreshdeskField'][_0x5e5b('0x2d')]);_0x46fec9[_0x5e5b('0x32')]=_['keys'](_0x4e6fe2[_0x5e5b('0x32')]);_0x46fec9['filters']=_['intersection'](_0x46fec9['model'],_0x46fec9[_0x5e5b('0x32')]);_0x40e8ce['attributes']=_[_0x5e5b('0x36')](_0x46fec9['model'],qs[_0x5e5b('0x37')](_0x4e6fe2[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x40e8ce[_0x5e5b('0x38')]=_0x40e8ce[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x40e8ce[_0x5e5b('0x38')]:_0x46fec9['model'];if(_0x4e6fe2['query'][_0x5e5b('0x46')]){_0x40e8ce['include']=[{'all':!![]}];}_0x40e8ce=_['merge']({},_0x40e8ce,_0x4e6fe2['options']);return db[_0x5e5b('0x45')]['find'](_0x40e8ce)[_0x5e5b('0x27')](handleEntityNotFound(_0x2b81dd,null))[_0x5e5b('0x27')](respondWithResult(_0x2b81dd,null))[_0x5e5b('0x4a')](handleError(_0x2b81dd,null));};exports[_0x5e5b('0x4c')]=function(_0x2982e7,_0x192445){return db['FreshdeskField'][_0x5e5b('0x4c')](_0x2982e7[_0x5e5b('0x4d')],{})['then'](respondWithResult(_0x192445,0xc9))[_0x5e5b('0x4a')](handleError(_0x192445,null));};exports['update']=function(_0x41e4b3,_0x36d8fa){if(_0x41e4b3[_0x5e5b('0x4d')]['id']){delete _0x41e4b3[_0x5e5b('0x4d')]['id'];}return db['FreshdeskField'][_0x5e5b('0x4e')]({'where':{'id':_0x41e4b3[_0x5e5b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x36d8fa,null))[_0x5e5b('0x27')](saveUpdates(_0x41e4b3[_0x5e5b('0x4d')],null))[_0x5e5b('0x27')](respondWithResult(_0x36d8fa,null))[_0x5e5b('0x4a')](handleError(_0x36d8fa,null));};exports[_0x5e5b('0x28')]=function(_0x5ae8d0,_0x50fc9c){return db[_0x5e5b('0x45')][_0x5e5b('0x4e')]({'where':{'id':_0x5ae8d0['params']['id']}})[_0x5e5b('0x27')](handleEntityNotFound(_0x50fc9c,null))[_0x5e5b('0x27')](removeEntity(_0x50fc9c,null))[_0x5e5b('0x4a')](handleError(_0x50fc9c,null));};
\ No newline at end of file
+var _0xe5b5=['ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','count','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','FreshdeskField','includeAll','include','findAll','rows','catch','show','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse'];(function(_0x260ac1,_0x4eed3b){var _0x3fcad8=function(_0x28987a){while(--_0x28987a){_0x260ac1['push'](_0x260ac1['shift']());}};_0x3fcad8(++_0x4eed3b);}(_0xe5b5,0x12b));var _0x5e5b=function(_0x28d225,_0x43be18){_0x28d225=_0x28d225-0x0;var _0x1f79e1=_0xe5b5[_0x28d225];return _0x1f79e1;};'use strict';var emlformat=require(_0x5e5b('0x0'));var rimraf=require(_0x5e5b('0x1'));var zipdir=require(_0x5e5b('0x2'));var jsonpatch=require(_0x5e5b('0x3'));var rp=require(_0x5e5b('0x4'));var moment=require(_0x5e5b('0x5'));var BPromise=require(_0x5e5b('0x6'));var Mustache=require(_0x5e5b('0x7'));var util=require(_0x5e5b('0x8'));var path=require(_0x5e5b('0x9'));var sox=require(_0x5e5b('0xa'));var csv=require(_0x5e5b('0xb'));var ejs=require(_0x5e5b('0xc'));var fs=require('fs');var fs_extra=require(_0x5e5b('0xd'));var _=require(_0x5e5b('0xe'));var squel=require(_0x5e5b('0xf'));var crypto=require(_0x5e5b('0x10'));var jsforce=require(_0x5e5b('0x11'));var deskjs=require(_0x5e5b('0x12'));var toCsv=require(_0x5e5b('0xb'));var querystring=require(_0x5e5b('0x13'));var Papa=require(_0x5e5b('0x14'));var Redis=require(_0x5e5b('0x15'));var authService=require('../../components/auth/service');var qs=require(_0x5e5b('0x16'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5e5b('0x17'));var logger=require(_0x5e5b('0x18'))(_0x5e5b('0x19'));var utils=require(_0x5e5b('0x1a'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x310f71,_0x18434e){_0x18434e=_0x18434e||0xcc;return function(_0x4559a0){if(_0x4559a0){return _0x310f71[_0x5e5b('0x1b')](_0x18434e);}return _0x310f71[_0x5e5b('0x1c')](_0x18434e)[_0x5e5b('0x1d')]();};}function respondWithResult(_0x2e331d,_0x49edd0){_0x49edd0=_0x49edd0||0xc8;return function(_0x2b37fa){if(_0x2b37fa){return _0x2e331d[_0x5e5b('0x1c')](_0x49edd0)['json'](_0x2b37fa);}};}function respondWithFilteredResult(_0x227417,_0x578c14){return function(_0x4e9509){if(_0x4e9509){var _0x13a1cb=typeof _0x578c14[_0x5e5b('0x1e')]===_0x5e5b('0x1f')&&typeof _0x578c14['limit']===_0x5e5b('0x1f');var _0x4d490c=_0x4e9509[_0x5e5b('0x20')];var _0x45a091=_0x13a1cb?0x0:_0x578c14['offset'];var _0xe5aa6b=_0x13a1cb?_0x4e9509[_0x5e5b('0x20')]:_0x578c14[_0x5e5b('0x1e')]+_0x578c14['limit'];var _0x2bf0b7;if(_0xe5aa6b>=_0x4d490c){_0xe5aa6b=_0x4d490c;_0x2bf0b7=0xc8;}else{_0x2bf0b7=0xce;}_0x227417[_0x5e5b('0x1c')](_0x2bf0b7);return _0x227417['set'](_0x5e5b('0x21'),_0x45a091+'-'+_0xe5aa6b+'/'+_0x4d490c)[_0x5e5b('0x22')](_0x4e9509);}return null;};}function patchUpdates(_0x3c488e){return function(_0x2d8252){try{jsonpatch[_0x5e5b('0x23')](_0x2d8252,_0x3c488e,!![]);}catch(_0x33d61b){return BPromise[_0x5e5b('0x24')](_0x33d61b);}return _0x2d8252[_0x5e5b('0x25')]();};}function saveUpdates(_0x4a78e3,_0x512e46){return function(_0x256a00){if(_0x256a00){return _0x256a00[_0x5e5b('0x26')](_0x4a78e3)[_0x5e5b('0x27')](function(_0xe1c268){return _0xe1c268;});}return null;};}function removeEntity(_0x2e38ed,_0x28cd95){return function(_0x135c6c){if(_0x135c6c){return _0x135c6c[_0x5e5b('0x28')]()[_0x5e5b('0x27')](function(){_0x2e38ed[_0x5e5b('0x1c')](0xcc)[_0x5e5b('0x1d')]();});}};}function handleEntityNotFound(_0x4da321,_0x1ebb11){return function(_0x75800d){if(!_0x75800d){_0x4da321[_0x5e5b('0x1b')](0x194);}return _0x75800d;};}function handleError(_0x5a2ba8,_0x988e5d){_0x988e5d=_0x988e5d||0x1f4;return function(_0xdb2863){logger['error'](_0xdb2863[_0x5e5b('0x29')]);if(_0xdb2863[_0x5e5b('0x2a')]){delete _0xdb2863[_0x5e5b('0x2a')];}_0x5a2ba8[_0x5e5b('0x1c')](_0x988e5d)[_0x5e5b('0x2b')](_0xdb2863);};}exports[_0x5e5b('0x2c')]=function(_0x2cb695,_0x2b4351){var _0x3f6b25={},_0x42da3b={},_0xcb272c={'count':0x0,'rows':[]};var _0x28157a=_['map'](db['FreshdeskField'][_0x5e5b('0x2d')],function(_0x289f54){return{'name':_0x289f54[_0x5e5b('0x2e')],'type':_0x289f54[_0x5e5b('0x2f')][_0x5e5b('0x30')]};});_0x42da3b['model']=_[_0x5e5b('0x31')](_0x28157a,'name');_0x42da3b[_0x5e5b('0x32')]=_[_0x5e5b('0x33')](_0x2cb695[_0x5e5b('0x32')]);_0x42da3b[_0x5e5b('0x34')]=_['intersection'](_0x42da3b[_0x5e5b('0x35')],_0x42da3b[_0x5e5b('0x32')]);_0x3f6b25['attributes']=_[_0x5e5b('0x36')](_0x42da3b[_0x5e5b('0x35')],qs[_0x5e5b('0x37')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x3f6b25[_0x5e5b('0x38')]=_0x3f6b25[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x3f6b25['attributes']:_0x42da3b[_0x5e5b('0x35')];if(!_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3a')](_0x5e5b('0x3b'))){_0x3f6b25[_0x5e5b('0x3c')]=qs[_0x5e5b('0x3c')](_0x2cb695['query']['limit']);_0x3f6b25[_0x5e5b('0x1e')]=qs[_0x5e5b('0x1e')](_0x2cb695[_0x5e5b('0x32')]['offset']);}_0x3f6b25[_0x5e5b('0x3d')]=qs[_0x5e5b('0x3e')](_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x3e')]);_0x3f6b25['where']=qs[_0x5e5b('0x34')](_[_0x5e5b('0x3f')](_0x2cb695['query'],_0x42da3b['filters']),_0x28157a);if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]){_0x3f6b25[_0x5e5b('0x41')]=_['merge'](_0x3f6b25[_0x5e5b('0x41')],{'$or':_['map'](_0x28157a,function(_0x5cb741){if(_0x5cb741[_0x5e5b('0x2f')]!==_0x5e5b('0x42')){var _0xef0295={};_0xef0295[_0x5cb741[_0x5e5b('0x2a')]]={'$like':'%'+_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x40')]+'%'};return _0xef0295;}})});}_0x3f6b25=_[_0x5e5b('0x43')]({},_0x3f6b25,_0x2cb695[_0x5e5b('0x44')]);var _0x1034fa={'where':_0x3f6b25['where']};return db[_0x5e5b('0x45')][_0x5e5b('0x20')](_0x1034fa)['then'](function(_0x204487){_0xcb272c['count']=_0x204487;if(_0x2cb695[_0x5e5b('0x32')][_0x5e5b('0x46')]){_0x3f6b25[_0x5e5b('0x47')]=[{'all':!![]}];}return db[_0x5e5b('0x45')][_0x5e5b('0x48')](_0x3f6b25);})[_0x5e5b('0x27')](function(_0x371550){_0xcb272c[_0x5e5b('0x49')]=_0x371550;return _0xcb272c;})[_0x5e5b('0x27')](respondWithFilteredResult(_0x2b4351,_0x3f6b25))[_0x5e5b('0x4a')](handleError(_0x2b4351,null));};exports[_0x5e5b('0x4b')]=function(_0x4e6fe2,_0x2b81dd){var _0x40e8ce={'raw':!![],'where':{'id':_0x4e6fe2['params']['id']}},_0x46fec9={};_0x46fec9[_0x5e5b('0x35')]=_[_0x5e5b('0x33')](db['FreshdeskField'][_0x5e5b('0x2d')]);_0x46fec9[_0x5e5b('0x32')]=_['keys'](_0x4e6fe2[_0x5e5b('0x32')]);_0x46fec9['filters']=_['intersection'](_0x46fec9['model'],_0x46fec9[_0x5e5b('0x32')]);_0x40e8ce['attributes']=_[_0x5e5b('0x36')](_0x46fec9['model'],qs[_0x5e5b('0x37')](_0x4e6fe2[_0x5e5b('0x32')][_0x5e5b('0x37')]));_0x40e8ce[_0x5e5b('0x38')]=_0x40e8ce[_0x5e5b('0x38')][_0x5e5b('0x39')]?_0x40e8ce[_0x5e5b('0x38')]:_0x46fec9['model'];if(_0x4e6fe2['query'][_0x5e5b('0x46')]){_0x40e8ce['include']=[{'all':!![]}];}_0x40e8ce=_['merge']({},_0x40e8ce,_0x4e6fe2['options']);return db[_0x5e5b('0x45')]['find'](_0x40e8ce)[_0x5e5b('0x27')](handleEntityNotFound(_0x2b81dd,null))[_0x5e5b('0x27')](respondWithResult(_0x2b81dd,null))[_0x5e5b('0x4a')](handleError(_0x2b81dd,null));};exports[_0x5e5b('0x4c')]=function(_0x2982e7,_0x192445){return db['FreshdeskField'][_0x5e5b('0x4c')](_0x2982e7[_0x5e5b('0x4d')],{})['then'](respondWithResult(_0x192445,0xc9))[_0x5e5b('0x4a')](handleError(_0x192445,null));};exports['update']=function(_0x41e4b3,_0x36d8fa){if(_0x41e4b3[_0x5e5b('0x4d')]['id']){delete _0x41e4b3[_0x5e5b('0x4d')]['id'];}return db['FreshdeskField'][_0x5e5b('0x4e')]({'where':{'id':_0x41e4b3[_0x5e5b('0x4f')]['id']}})['then'](handleEntityNotFound(_0x36d8fa,null))[_0x5e5b('0x27')](saveUpdates(_0x41e4b3[_0x5e5b('0x4d')],null))[_0x5e5b('0x27')](respondWithResult(_0x36d8fa,null))[_0x5e5b('0x4a')](handleError(_0x36d8fa,null));};exports[_0x5e5b('0x28')]=function(_0x5ae8d0,_0x50fc9c){return db[_0x5e5b('0x45')][_0x5e5b('0x4e')]({'where':{'id':_0x5ae8d0['params']['id']}})[_0x5e5b('0x27')](handleEntityNotFound(_0x50fc9c,null))[_0x5e5b('0x27')](removeEntity(_0x50fc9c,null))[_0x5e5b('0x4a')](handleError(_0x50fc9c,null));};
\ No newline at end of file
index ccd94ef..574fb25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2113=['lodash','util','api','moment','path','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','FieldId'];(function(_0x199572,_0x33e667){var _0x13cfa3=function(_0x53c075){while(--_0x53c075){_0x199572['push'](_0x199572['shift']());}};_0x13cfa3(++_0x33e667);}(_0x2113,0x140));var _0x3211=function(_0xacc8a9,_0x41a361){_0xacc8a9=_0xacc8a9-0x0;var _0x2c15e3=_0x2113[_0xacc8a9];return _0x2c15e3;};'use strict';var _=require(_0x3211('0x0'));var util=require(_0x3211('0x1'));var logger=require('../../config/logger')(_0x3211('0x2'));var moment=require(_0x3211('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3211('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3211('0x5'));module['exports']=function(_0x3a3f10,_0x54837c){return _0x3a3f10[_0x3211('0x6')](_0x3211('0x7'),attributes,{'tableName':_0x3211('0x8'),'paranoid':![],'indexes':[{'name':'freshdesk_unique_index','fields':['idField',_0x3211('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0694=['./intFreshdeskField.attributes','exports','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','lodash','util','../../config/logger','api','path','../../config/environment'];(function(_0x234ae1,_0x42bdd6){var _0x227ba0=function(_0x1f6531){while(--_0x1f6531){_0x234ae1['push'](_0x234ae1['shift']());}};_0x227ba0(++_0x42bdd6);}(_0x0694,0x180));var _0x4069=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0x0694[_0x45e98e];return _0x374dba;};'use strict';var _=require(_0x4069('0x0'));var util=require(_0x4069('0x1'));var logger=require(_0x4069('0x2'))(_0x4069('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4069('0x4'));var rimraf=require('rimraf');var config=require(_0x4069('0x5'));var attributes=require(_0x4069('0x6'));module[_0x4069('0x7')]=function(_0x485cd5,_0x44458d){return _0x485cd5[_0x4069('0x8')](_0x4069('0x9'),attributes,{'tableName':_0x4069('0xa'),'paranoid':![],'indexes':[{'name':_0x4069('0xb'),'fields':[_0x4069('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index caafe8c..e58a30e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3915=['client','then','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise'];(function(_0x4f8acf,_0x4c723d){var _0x26b570=function(_0x486852){while(--_0x486852){_0x4f8acf['push'](_0x4f8acf['shift']());}};_0x26b570(++_0x4c723d);}(_0x3915,0x97));var _0x5391=function(_0x45aa72,_0x8af642){_0x45aa72=_0x45aa72-0x0;var _0x75adaa=_0x3915[_0x45aa72];return _0x75adaa;};'use strict';var _=require(_0x5391('0x0'));var util=require(_0x5391('0x1'));var moment=require(_0x5391('0x2'));var BPromise=require(_0x5391('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5391('0x4'));var db=require(_0x5391('0x5'))['db'];var utils=require(_0x5391('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x5391('0x7'));var jayson=require(_0x5391('0x8'));var client=jayson[_0x5391('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x23c502,_0x19b0bc,_0x53a114){return new BPromise(function(_0x194fcf,_0x76b879){return client['request'](_0x23c502,_0x53a114)[_0x5391('0xa')](function(_0x425b99){logger['info'](_0x5391('0xb'),_0x19b0bc,_0x5391('0xc'));logger[_0x5391('0xd')](_0x5391('0xe'),_0x19b0bc,'request\x20sent',JSON[_0x5391('0xf')](_0x425b99));if(_0x425b99[_0x5391('0x10')]){if(_0x425b99[_0x5391('0x10')]['code']===0x1f4){logger['error'](_0x5391('0xb'),_0x19b0bc,_0x425b99[_0x5391('0x10')][_0x5391('0x11')]);return _0x76b879(_0x425b99[_0x5391('0x10')][_0x5391('0x11')]);}logger[_0x5391('0x10')](_0x5391('0xb'),_0x19b0bc,_0x425b99[_0x5391('0x10')]['message']);return _0x194fcf(_0x425b99[_0x5391('0x10')][_0x5391('0x11')]);}else{logger[_0x5391('0x12')](_0x5391('0xb'),_0x19b0bc,_0x5391('0xc'));_0x194fcf(_0x425b99[_0x5391('0x13')][_0x5391('0x11')]);}})['catch'](function(_0x5ed7b6){logger[_0x5391('0x10')](_0x5391('0xb'),_0x19b0bc,_0x5ed7b6);_0x76b879(_0x5ed7b6);});});}
\ No newline at end of file
+var _0xdef6=['request\x20sent','stringify','error','code','message','result','catch','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','FreshdeskField,\x20%s,\x20%s','debug','FreshdeskField,\x20%s,\x20%s,\x20%s'];(function(_0x36c5b0,_0x5001da){var _0xf19333=function(_0x1e880a){while(--_0x1e880a){_0x36c5b0['push'](_0x36c5b0['shift']());}};_0xf19333(++_0x5001da);}(_0xdef6,0x11b));var _0x6def=function(_0x678ed,_0x339833){_0x678ed=_0x678ed-0x0;var _0x2c709c=_0xdef6[_0x678ed];return _0x2c709c;};'use strict';var _=require(_0x6def('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6def('0x1'));var rs=require(_0x6def('0x2'));var fs=require('fs');var Redis=require(_0x6def('0x3'));var db=require(_0x6def('0x4'))['db'];var utils=require(_0x6def('0x5'));var logger=require(_0x6def('0x6'))(_0x6def('0x7'));var config=require('../../config/environment');var jayson=require(_0x6def('0x8'));var client=jayson[_0x6def('0x9')][_0x6def('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x47e764,_0x49d238,_0x50a9a5){return new BPromise(function(_0x38f505,_0x28cdf0){return client[_0x6def('0xb')](_0x47e764,_0x50a9a5)[_0x6def('0xc')](function(_0x297cc0){logger['info'](_0x6def('0xd'),_0x49d238,'request\x20sent');logger[_0x6def('0xe')](_0x6def('0xf'),_0x49d238,_0x6def('0x10'),JSON[_0x6def('0x11')](_0x297cc0));if(_0x297cc0['error']){if(_0x297cc0[_0x6def('0x12')][_0x6def('0x13')]===0x1f4){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x297cc0[_0x6def('0x12')]['message']);return _0x28cdf0(_0x297cc0['error'][_0x6def('0x14')]);}logger[_0x6def('0x12')]('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x297cc0['error'][_0x6def('0x14')]);return _0x38f505(_0x297cc0[_0x6def('0x12')][_0x6def('0x14')]);}else{logger['info'](_0x6def('0xd'),_0x49d238,'request\x20sent');_0x38f505(_0x297cc0[_0x6def('0x15')]['message']);}})[_0x6def('0x16')](function(_0x4be12c){logger['error']('FreshdeskField,\x20%s,\x20%s',_0x49d238,_0x4be12c);_0x28cdf0(_0x4be12c);});});}
\ No newline at end of file
index 6c667b5..7b2a27d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc900=['../../config/environment','./intFreshsalesAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','/:id','update','delete','destroy','exports','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x51cdf1,_0x5ed52d){var _0x4a2cff=function(_0x245f2e){while(--_0x245f2e){_0x51cdf1['push'](_0x51cdf1['shift']());}};_0x4a2cff(++_0x5ed52d);}(_0xc900,0xb3));var _0x0c90=function(_0x552e2d,_0x2c6149){_0x552e2d=_0x552e2d-0x0;var _0x1ea426=_0xc900[_0x552e2d];return _0x1ea426;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x0c90('0x0'));var timeout=require(_0x0c90('0x1'));var express=require(_0x0c90('0x2'));var router=express['Router']();var fs_extra=require(_0x0c90('0x3'));var auth=require(_0x0c90('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x0c90('0x5'));var controller=require(_0x0c90('0x6'));router[_0x0c90('0x7')]('/',auth[_0x0c90('0x8')](),controller[_0x0c90('0x9')]);router[_0x0c90('0x7')]('/:id',auth[_0x0c90('0x8')](),controller[_0x0c90('0xa')]);router[_0x0c90('0x7')](_0x0c90('0xb'),auth[_0x0c90('0x8')](),controller[_0x0c90('0xc')]);router[_0x0c90('0x7')](_0x0c90('0xd'),auth[_0x0c90('0x8')](),controller[_0x0c90('0xe')]);router[_0x0c90('0xf')]('/',auth[_0x0c90('0x8')](),controller[_0x0c90('0x10')]);router['post'](_0x0c90('0xb'),auth['isAuthenticated'](),controller[_0x0c90('0x11')]);router['put'](_0x0c90('0x12'),auth[_0x0c90('0x8')](),controller[_0x0c90('0x13')]);router[_0x0c90('0x14')](_0x0c90('0x12'),auth['isAuthenticated'](),controller[_0x0c90('0x15')]);module[_0x0c90('0x16')]=router;
\ No newline at end of file
+var _0x76dc=['../../components/interaction/service','get','isAuthenticated','index','show','getConfigurations','post','create','/:id/configurations','addConfiguration','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x4ab301,_0x3d5bee){var _0x42da46=function(_0x440204){while(--_0x440204){_0x4ab301['push'](_0x4ab301['shift']());}};_0x42da46(++_0x3d5bee);}(_0x76dc,0x1f2));var _0xc76d=function(_0xac85f9,_0x4a82bc){_0xac85f9=_0xac85f9-0x0;var _0x41f516=_0x76dc[_0xac85f9];return _0x41f516;};'use strict';var multer=require(_0xc76d('0x0'));var util=require(_0xc76d('0x1'));var path=require(_0xc76d('0x2'));var timeout=require(_0xc76d('0x3'));var express=require('express');var router=express[_0xc76d('0x4')]();var fs_extra=require(_0xc76d('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc76d('0x6'));var config=require('../../config/environment');var controller=require('./intFreshsalesAccount.controller');router[_0xc76d('0x7')]('/',auth[_0xc76d('0x8')](),controller[_0xc76d('0x9')]);router['get']('/:id',auth[_0xc76d('0x8')](),controller[_0xc76d('0xa')]);router[_0xc76d('0x7')]('/:id/configurations',auth['isAuthenticated'](),controller[_0xc76d('0xb')]);router[_0xc76d('0x7')]('/:id/fields',auth[_0xc76d('0x8')](),controller['getFields']);router[_0xc76d('0xc')]('/',auth[_0xc76d('0x8')](),controller[_0xc76d('0xd')]);router[_0xc76d('0xc')](_0xc76d('0xe'),auth[_0xc76d('0x8')](),controller[_0xc76d('0xf')]);router[_0xc76d('0x10')](_0xc76d('0x11'),auth[_0xc76d('0x8')](),controller[_0xc76d('0x12')]);router[_0xc76d('0x13')](_0xc76d('0x11'),auth[_0xc76d('0x8')](),controller['destroy']);module[_0xc76d('0x14')]=router;
\ No newline at end of file
index 585be2e..7b8d673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb3b=['sequelize','exports','STRING'];(function(_0x257642,_0x270a80){var _0x3d813b=function(_0x2a1c8a){while(--_0x2a1c8a){_0x257642['push'](_0x257642['shift']());}};_0x3d813b(++_0x270a80);}(_0xeb3b,0x19e));var _0xbeb3=function(_0x4b7f28,_0x27d23a){_0x4b7f28=_0x4b7f28-0x0;var _0xf5b553=_0xeb3b[_0x4b7f28];return _0xf5b553;};'use strict';var Sequelize=require(_0xbeb3('0x0'));module[_0xbeb3('0x1')]={'name':{'type':Sequelize[_0xbeb3('0x2')]},'description':{'type':Sequelize[_0xbeb3('0x2')]},'username':{'type':Sequelize[_0xbeb3('0x2')],'unique':'username'},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0xbeb3('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xbeb3('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x1775=['STRING','username','remoteUri','exports'];(function(_0x5e499c,_0x33cd82){var _0x116cd1=function(_0x253209){while(--_0x253209){_0x5e499c['push'](_0x5e499c['shift']());}};_0x116cd1(++_0x33cd82);}(_0x1775,0x1db));var _0x5177=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1775[_0x502c7d];return _0x30b7ed;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'name':{'type':Sequelize[_0x5177('0x1')]},'description':{'type':Sequelize[_0x5177('0x1')]},'username':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x2')},'apiKey':{'type':Sequelize[_0x5177('0x1')]},'remoteUri':{'type':Sequelize[_0x5177('0x1')],'unique':_0x5177('0x3')},'serverUrl':{'type':Sequelize[_0x5177('0x1')],'allowNull':![]}};
\ No newline at end of file
index b292a26..6a44c3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc252=['util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','apply','save','update','destroy','then','error','name','send','index','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','type','VIRTUAL','FreshsalesAccount','includeAll','include','params','options','find','catch','create','body','getConfigurations','FreshsalesConfiguration','map','addConfiguration','findOne','AccountId','getSubjects','channel','FreshsalesField','Descriptions','getFields','username','remoteUri','slice','substring','lastIndexOf','%s%s','/api/selector/owners','Token\x20token=','users','Requested\x20Resource\x20not\x20Found','test','statusCode','stringify','zip-dir','request-promise','moment','bluebird','mustache'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0xc252,0x112));var _0x2c25=function(_0xbffe69,_0x495110){_0xbffe69=_0xbffe69-0x0;var _0x4f0db9=_0xc252[_0xbffe69];return _0x4f0db9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x2c25('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2c25('0x1'));var moment=require(_0x2c25('0x2'));var BPromise=require(_0x2c25('0x3'));var Mustache=require(_0x2c25('0x4'));var util=require(_0x2c25('0x5'));var path=require(_0x2c25('0x6'));var sox=require('sox');var csv=require(_0x2c25('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c25('0x8'));var _=require(_0x2c25('0x9'));var squel=require(_0x2c25('0xa'));var crypto=require(_0x2c25('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x2c25('0xc'));var toCsv=require(_0x2c25('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2c25('0xd'));var authService=require(_0x2c25('0xe'));var qs=require(_0x2c25('0xf'));var as=require(_0x2c25('0x10'));var hardwareService=require(_0x2c25('0x11'));var logger=require('../../config/logger')(_0x2c25('0x12'));var utils=require(_0x2c25('0x13'));var config=require(_0x2c25('0x14'));var licenseUtil=require(_0x2c25('0x15'));var db=require(_0x2c25('0x16'))['db'];var integrations=require(_0x2c25('0x17'));function respondWithStatusCode(_0x34aedb,_0xcec285){_0xcec285=_0xcec285||0xcc;return function(_0x39d72f){if(_0x39d72f){return _0x34aedb['sendStatus'](_0xcec285);}return _0x34aedb[_0x2c25('0x18')](_0xcec285)[_0x2c25('0x19')]();};}function respondWithResult(_0x4a0951,_0x58bac1){_0x58bac1=_0x58bac1||0xc8;return function(_0x32a5d7){if(_0x32a5d7){return _0x4a0951[_0x2c25('0x18')](_0x58bac1)[_0x2c25('0x1a')](_0x32a5d7);}};}function respondWithFilteredResult(_0x32b299,_0x5b3601){return function(_0x32e9eb){if(_0x32e9eb){var _0x16e930=typeof _0x5b3601[_0x2c25('0x1b')]==='undefined'&&typeof _0x5b3601[_0x2c25('0x1c')]===_0x2c25('0x1d');var _0x71e29c=_0x32e9eb[_0x2c25('0x1e')];var _0x573d50=_0x16e930?0x0:_0x5b3601[_0x2c25('0x1b')];var _0x5d807c=_0x16e930?_0x32e9eb[_0x2c25('0x1e')]:_0x5b3601[_0x2c25('0x1b')]+_0x5b3601[_0x2c25('0x1c')];var _0x2bf1a0;if(_0x5d807c>=_0x71e29c){_0x5d807c=_0x71e29c;_0x2bf1a0=0xc8;}else{_0x2bf1a0=0xce;}_0x32b299[_0x2c25('0x18')](_0x2bf1a0);return _0x32b299['set']('Content-Range',_0x573d50+'-'+_0x5d807c+'/'+_0x71e29c)[_0x2c25('0x1a')](_0x32e9eb);}return null;};}function patchUpdates(_0x3af672){return function(_0x3f1100){try{jsonpatch[_0x2c25('0x1f')](_0x3f1100,_0x3af672,!![]);}catch(_0x54a388){return BPromise['reject'](_0x54a388);}return _0x3f1100[_0x2c25('0x20')]();};}function saveUpdates(_0x178372,_0x324e1b){return function(_0x15f04e){if(_0x15f04e){return _0x15f04e[_0x2c25('0x21')](_0x178372)['then'](function(_0x257343){return _0x257343;});}return null;};}function removeEntity(_0x1afaeb,_0x45ec71){return function(_0x5e2483){if(_0x5e2483){return _0x5e2483[_0x2c25('0x22')]()[_0x2c25('0x23')](function(){_0x1afaeb[_0x2c25('0x18')](0xcc)[_0x2c25('0x19')]();});}};}function handleEntityNotFound(_0x3210e2,_0x327bd6){return function(_0x28d6f4){if(!_0x28d6f4){_0x3210e2['sendStatus'](0x194);}return _0x28d6f4;};}function handleError(_0x33b9b1,_0x756dbd){_0x756dbd=_0x756dbd||0x1f4;return function(_0x3ac3d3){logger[_0x2c25('0x24')](_0x3ac3d3['stack']);if(_0x3ac3d3[_0x2c25('0x25')]){delete _0x3ac3d3['name'];}_0x33b9b1[_0x2c25('0x18')](_0x756dbd)[_0x2c25('0x26')](_0x3ac3d3);};}exports[_0x2c25('0x27')]=function(_0x427521,_0xd11eb){var _0x3de5dc={},_0xf92b4a={},_0x365eb6={'count':0x0,'rows':[]};var _0x53f14a=_['map'](db['FreshsalesAccount'][_0x2c25('0x28')],function(_0x1d1481){return{'name':_0x1d1481[_0x2c25('0x29')],'type':_0x1d1481['type'][_0x2c25('0x2a')]};});_0xf92b4a[_0x2c25('0x2b')]=_['map'](_0x53f14a,'name');_0xf92b4a[_0x2c25('0x2c')]=_[_0x2c25('0x2d')](_0x427521[_0x2c25('0x2c')]);_0xf92b4a[_0x2c25('0x2e')]=_['intersection'](_0xf92b4a[_0x2c25('0x2b')],_0xf92b4a[_0x2c25('0x2c')]);_0x3de5dc[_0x2c25('0x2f')]=_[_0x2c25('0x30')](_0xf92b4a['model'],qs[_0x2c25('0x31')](_0x427521[_0x2c25('0x2c')][_0x2c25('0x31')]));_0x3de5dc['attributes']=_0x3de5dc[_0x2c25('0x2f')][_0x2c25('0x32')]?_0x3de5dc[_0x2c25('0x2f')]:_0xf92b4a[_0x2c25('0x2b')];if(!_0x427521['query'][_0x2c25('0x33')]('nolimit')){_0x3de5dc[_0x2c25('0x1c')]=qs[_0x2c25('0x1c')](_0x427521[_0x2c25('0x2c')][_0x2c25('0x1c')]);_0x3de5dc[_0x2c25('0x1b')]=qs[_0x2c25('0x1b')](_0x427521['query']['offset']);}_0x3de5dc[_0x2c25('0x34')]=qs[_0x2c25('0x35')](_0x427521[_0x2c25('0x2c')][_0x2c25('0x35')]);_0x3de5dc[_0x2c25('0x36')]=qs[_0x2c25('0x2e')](_[_0x2c25('0x37')](_0x427521['query'],_0xf92b4a['filters']),_0x53f14a);if(_0x427521[_0x2c25('0x2c')][_0x2c25('0x38')]){_0x3de5dc[_0x2c25('0x36')]=_[_0x2c25('0x39')](_0x3de5dc['where'],{'$or':_['map'](_0x53f14a,function(_0x22db49){if(_0x22db49[_0x2c25('0x3a')]!==_0x2c25('0x3b')){var _0x5d9f18={};_0x5d9f18[_0x22db49[_0x2c25('0x25')]]={'$like':'%'+_0x427521[_0x2c25('0x2c')][_0x2c25('0x38')]+'%'};return _0x5d9f18;}})});}_0x3de5dc=_[_0x2c25('0x39')]({},_0x3de5dc,_0x427521['options']);var _0x1c0a0f={'where':_0x3de5dc[_0x2c25('0x36')]};return db[_0x2c25('0x3c')]['count'](_0x1c0a0f)[_0x2c25('0x23')](function(_0x495d23){_0x365eb6[_0x2c25('0x1e')]=_0x495d23;if(_0x427521['query'][_0x2c25('0x3d')]){_0x3de5dc[_0x2c25('0x3e')]=[{'all':!![]}];}return db[_0x2c25('0x3c')]['findAll'](_0x3de5dc);})[_0x2c25('0x23')](function(_0x2f416a){_0x365eb6['rows']=_0x2f416a;return _0x365eb6;})['then'](respondWithFilteredResult(_0xd11eb,_0x3de5dc))['catch'](handleError(_0xd11eb,null));};exports['show']=function(_0x5de15f,_0x36f07e){var _0x49bfbf={'raw':![],'where':{'id':_0x5de15f[_0x2c25('0x3f')]['id']}},_0x1aeadb={};_0x1aeadb[_0x2c25('0x2b')]=_['keys'](db['FreshsalesAccount']['rawAttributes']);_0x1aeadb[_0x2c25('0x2c')]=_[_0x2c25('0x2d')](_0x5de15f[_0x2c25('0x2c')]);_0x1aeadb[_0x2c25('0x2e')]=_[_0x2c25('0x30')](_0x1aeadb[_0x2c25('0x2b')],_0x1aeadb[_0x2c25('0x2c')]);_0x49bfbf[_0x2c25('0x2f')]=_[_0x2c25('0x30')](_0x1aeadb['model'],qs[_0x2c25('0x31')](_0x5de15f[_0x2c25('0x2c')][_0x2c25('0x31')]));_0x49bfbf[_0x2c25('0x2f')]=_0x49bfbf['attributes']['length']?_0x49bfbf[_0x2c25('0x2f')]:_0x1aeadb[_0x2c25('0x2b')];if(_0x5de15f[_0x2c25('0x2c')][_0x2c25('0x3d')]){_0x49bfbf[_0x2c25('0x3e')]=[{'all':!![]}];}_0x49bfbf=_[_0x2c25('0x39')]({},_0x49bfbf,_0x5de15f[_0x2c25('0x40')]);return db[_0x2c25('0x3c')][_0x2c25('0x41')](_0x49bfbf)[_0x2c25('0x23')](handleEntityNotFound(_0x36f07e,null))['then'](respondWithResult(_0x36f07e,null))[_0x2c25('0x42')](handleError(_0x36f07e,null));};exports[_0x2c25('0x43')]=function(_0x227daf,_0x15a664){return db['FreshsalesAccount'][_0x2c25('0x43')](_0x227daf[_0x2c25('0x44')],{})[_0x2c25('0x23')](respondWithResult(_0x15a664,0xc9))['catch'](handleError(_0x15a664,null));};exports[_0x2c25('0x21')]=function(_0xa7688f,_0x46472f){if(_0xa7688f[_0x2c25('0x44')]['id']){delete _0xa7688f['body']['id'];}return db['FreshsalesAccount']['find']({'where':{'id':_0xa7688f[_0x2c25('0x3f')]['id']}})['then'](handleEntityNotFound(_0x46472f,null))['then'](saveUpdates(_0xa7688f[_0x2c25('0x44')],null))['then'](respondWithResult(_0x46472f,null))['catch'](handleError(_0x46472f,null));};exports['destroy']=function(_0x47983b,_0x49c431){return db['FreshsalesAccount'][_0x2c25('0x41')]({'where':{'id':_0x47983b[_0x2c25('0x3f')]['id']}})[_0x2c25('0x23')](handleEntityNotFound(_0x49c431,null))[_0x2c25('0x23')](removeEntity(_0x49c431,null))[_0x2c25('0x42')](handleError(_0x49c431,null));};exports[_0x2c25('0x45')]=function(_0x133f70,_0x5399b9,_0x101ea0){var _0x4ff503={};var _0x26347d={};var _0x5b5937;var _0xe176d8;return db[_0x2c25('0x3c')]['findOne']({'where':{'id':_0x133f70[_0x2c25('0x3f')]['id']}})[_0x2c25('0x23')](handleEntityNotFound(_0x5399b9,null))['then'](function(_0x25ac84){if(_0x25ac84){_0x5b5937=_0x25ac84;_0x26347d['model']=_[_0x2c25('0x2d')](db[_0x2c25('0x46')]['rawAttributes']);_0x26347d[_0x2c25('0x2c')]=_['keys'](_0x133f70[_0x2c25('0x2c')]);_0x26347d['filters']=_[_0x2c25('0x30')](_0x26347d['model'],_0x26347d['query']);_0x4ff503[_0x2c25('0x2f')]=_[_0x2c25('0x30')](_0x26347d[_0x2c25('0x2b')],qs[_0x2c25('0x31')](_0x133f70['query'][_0x2c25('0x31')]));_0x4ff503[_0x2c25('0x2f')]=_0x4ff503['attributes'][_0x2c25('0x32')]?_0x4ff503[_0x2c25('0x2f')]:_0x26347d['model'];_0x4ff503['order']=qs[_0x2c25('0x35')](_0x133f70[_0x2c25('0x2c')][_0x2c25('0x35')]);_0x4ff503[_0x2c25('0x36')]=qs['filters'](_[_0x2c25('0x37')](_0x133f70['query'],_0x26347d[_0x2c25('0x2e')]));if(_0x133f70[_0x2c25('0x2c')]['filter']){_0x4ff503['where']=_['merge'](_0x4ff503[_0x2c25('0x36')],{'$or':_[_0x2c25('0x47')](_0x4ff503[_0x2c25('0x2f')],function(_0x3a02d1){var _0x314636={};_0x314636[_0x3a02d1]={'$like':'%'+_0x133f70[_0x2c25('0x2c')][_0x2c25('0x38')]+'%'};return _0x314636;})});}_0x4ff503=_['merge']({},_0x4ff503,_0x133f70[_0x2c25('0x40')]);return _0x5b5937[_0x2c25('0x45')](_0x4ff503);}})['then'](function(_0x331af1){if(_0x331af1){_0xe176d8=_0x331af1[_0x2c25('0x32')];if(!_0x133f70[_0x2c25('0x2c')]['hasOwnProperty']('nolimit')){_0x4ff503[_0x2c25('0x1c')]=qs[_0x2c25('0x1c')](_0x133f70[_0x2c25('0x2c')]['limit']);_0x4ff503[_0x2c25('0x1b')]=qs['offset'](_0x133f70[_0x2c25('0x2c')]['offset']);}return _0x5b5937[_0x2c25('0x45')](_0x4ff503);}})[_0x2c25('0x23')](function(_0x5e2d5d){if(_0x5e2d5d){return _0x5e2d5d?{'count':_0xe176d8,'rows':_0x5e2d5d}:null;}})[_0x2c25('0x23')](respondWithResult(_0x5399b9,null))[_0x2c25('0x42')](handleError(_0x5399b9,null));};exports[_0x2c25('0x48')]=function(_0x11300c,_0x1fba8e,_0x3a6734){if(_0x11300c[_0x2c25('0x44')]['id']){delete _0x11300c[_0x2c25('0x44')]['id'];}return db[_0x2c25('0x3c')][_0x2c25('0x49')]({'where':{'id':_0x11300c[_0x2c25('0x3f')]['id']}})['then'](handleEntityNotFound(_0x1fba8e,null))[_0x2c25('0x23')](function(_0x380042){if(_0x380042){_0x11300c[_0x2c25('0x44')][_0x2c25('0x4a')]=_0x380042['id'];_0x11300c[_0x2c25('0x44')]['Subjects']=integrations[_0x2c25('0x4b')](_0x11300c[_0x2c25('0x44')][_0x2c25('0x4c')],_0x11300c[_0x2c25('0x44')][_0x2c25('0x3a')]);_0x11300c['body']['Descriptions']=integrations['getDescriptions'](_0x11300c[_0x2c25('0x44')]['channel'],_0x11300c[_0x2c25('0x44')][_0x2c25('0x3a')]);return db[_0x2c25('0x46')][_0x2c25('0x43')](_0x11300c[_0x2c25('0x44')],{'include':[{'model':db[_0x2c25('0x4d')],'as':'Subjects'},{'model':db[_0x2c25('0x4d')],'as':_0x2c25('0x4e')}]});}return null;})['then'](respondWithResult(_0x1fba8e,null))['catch'](handleError(_0x1fba8e,null));};exports[_0x2c25('0x4f')]=function(_0x552dae,_0x470e77,_0x39c1d4){var _0x266215='';var _0x5e5735='';return db['FreshsalesAccount'][_0x2c25('0x49')]({'where':{'id':_0x552dae[_0x2c25('0x3f')]['id']},'attributes':['id',_0x2c25('0x50'),_0x2c25('0x51'),'apiKey']})[_0x2c25('0x23')](handleEntityNotFound(_0x470e77,null))['then'](function(_0x169df2){if(_0x169df2){_0x5e5735=_0x169df2['username'];_0x266215=_0x169df2[_0x2c25('0x51')];var _0x55a0fa=_0x169df2[_0x2c25('0x51')][_0x2c25('0x52')](-0x1);if(_0x55a0fa==='/'){_0x266215=_0x266215[_0x2c25('0x53')](0x0,_0x266215[_0x2c25('0x54')](_0x55a0fa));}return rp({'method':'GET','uri':util['format'](_0x2c25('0x55'),_0x266215,_0x2c25('0x56')),'headers':{'Authorization':_0x2c25('0x57')+_0x169df2['apiKey']},'json':!![]});}})[_0x2c25('0x23')](function(_0x5f4ad7){if(_0x5f4ad7){var _0x288ef4=_0x5f4ad7[_0x2c25('0x58')];var _0x4ced8f=![];var _0x420d1c=null;for(_0x420d1c=0x0;_0x420d1c<_0x288ef4[_0x2c25('0x32')];_0x420d1c++){if(_0x288ef4[_0x420d1c]['email']===_0x5e5735){_0x4ced8f=!![];}}if(_0x4ced8f){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x2c25('0x59')});}}})[_0x2c25('0x23')](respondWithResult(_0x470e77,null))[_0x2c25('0x42')](function(_0x5e2b88){var _0x23e309=_0x552dae[_0x2c25('0x2c')][_0x2c25('0x5a')]?0x1f4:_0x5e2b88[_0x2c25('0x5b')]||0x1f4;logger[_0x2c25('0x24')]('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x23e309,JSON[_0x2c25('0x5c')](_0x5e2b88));delete _0x5e2b88[_0x2c25('0x25')];if(_0x23e309===0x191){_0x23e309=0x190;}_0x470e77[_0x2c25('0x18')](_0x23e309)[_0x2c25('0x26')](_0x552dae['query'][_0x2c25('0x5a')]?{'message':'Wrong\x20credentials','statusCode':_0x5e2b88['statusCode']}:_0x5e2b88);});};
\ No newline at end of file
+var _0x4f6b=['query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','includeAll','include','FreshsalesAccount','findAll','rows','show','keys','options','find','create','body','catch','params','destroy','getConfigurations','findOne','FreshsalesConfiguration','merge','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshsalesField','Descriptions','getFields','username','remoteUri','slice','substring','lastIndexOf','format','%s%s','/api/selector/owners','Token\x20token=','apiKey','users','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','offset','limit','count','set','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','key','model'];(function(_0x263a74,_0xc31414){var _0x2aa86c=function(_0x382896){while(--_0x382896){_0x263a74['push'](_0x263a74['shift']());}};_0x2aa86c(++_0xc31414);}(_0x4f6b,0x9b));var _0xb4f6=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4f6b[_0x3bf83f];return _0x22c4a9;};'use strict';var emlformat=require(_0xb4f6('0x0'));var rimraf=require(_0xb4f6('0x1'));var zipdir=require(_0xb4f6('0x2'));var jsonpatch=require(_0xb4f6('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb4f6('0x4'));var Mustache=require(_0xb4f6('0x5'));var util=require('util');var path=require(_0xb4f6('0x6'));var sox=require(_0xb4f6('0x7'));var csv=require(_0xb4f6('0x8'));var ejs=require(_0xb4f6('0x9'));var fs=require('fs');var fs_extra=require(_0xb4f6('0xa'));var _=require(_0xb4f6('0xb'));var squel=require(_0xb4f6('0xc'));var crypto=require(_0xb4f6('0xd'));var jsforce=require(_0xb4f6('0xe'));var deskjs=require(_0xb4f6('0xf'));var toCsv=require(_0xb4f6('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xb4f6('0x10'));var authService=require(_0xb4f6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xb4f6('0x12'));var hardwareService=require(_0xb4f6('0x13'));var logger=require(_0xb4f6('0x14'))('api');var utils=require(_0xb4f6('0x15'));var config=require(_0xb4f6('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xadf8af,_0x530547){_0x530547=_0x530547||0xcc;return function(_0x51ef3b){if(_0x51ef3b){return _0xadf8af[_0xb4f6('0x17')](_0x530547);}return _0xadf8af[_0xb4f6('0x18')](_0x530547)[_0xb4f6('0x19')]();};}function respondWithResult(_0x38e051,_0x388d86){_0x388d86=_0x388d86||0xc8;return function(_0x44cd01){if(_0x44cd01){return _0x38e051[_0xb4f6('0x18')](_0x388d86)[_0xb4f6('0x1a')](_0x44cd01);}};}function respondWithFilteredResult(_0x2b9d55,_0x1f27ef){return function(_0x2cecd8){if(_0x2cecd8){var _0x1e33d9=typeof _0x1f27ef[_0xb4f6('0x1b')]==='undefined'&&typeof _0x1f27ef[_0xb4f6('0x1c')]==='undefined';var _0x5c3e6b=_0x2cecd8[_0xb4f6('0x1d')];var _0x4ae3f8=_0x1e33d9?0x0:_0x1f27ef[_0xb4f6('0x1b')];var _0x25d0f6=_0x1e33d9?_0x2cecd8['count']:_0x1f27ef['offset']+_0x1f27ef[_0xb4f6('0x1c')];var _0x39b1ac;if(_0x25d0f6>=_0x5c3e6b){_0x25d0f6=_0x5c3e6b;_0x39b1ac=0xc8;}else{_0x39b1ac=0xce;}_0x2b9d55[_0xb4f6('0x18')](_0x39b1ac);return _0x2b9d55[_0xb4f6('0x1e')]('Content-Range',_0x4ae3f8+'-'+_0x25d0f6+'/'+_0x5c3e6b)[_0xb4f6('0x1a')](_0x2cecd8);}return null;};}function patchUpdates(_0x5d0e59){return function(_0x85150f){try{jsonpatch[_0xb4f6('0x1f')](_0x85150f,_0x5d0e59,!![]);}catch(_0x28ec82){return BPromise['reject'](_0x28ec82);}return _0x85150f[_0xb4f6('0x20')]();};}function saveUpdates(_0x1f1bf2,_0x4f5dbb){return function(_0x100e98){if(_0x100e98){return _0x100e98[_0xb4f6('0x21')](_0x1f1bf2)[_0xb4f6('0x22')](function(_0xb91a02){return _0xb91a02;});}return null;};}function removeEntity(_0x19fbba,_0x356936){return function(_0x404b06){if(_0x404b06){return _0x404b06['destroy']()[_0xb4f6('0x22')](function(){_0x19fbba['status'](0xcc)[_0xb4f6('0x19')]();});}};}function handleEntityNotFound(_0x13ff1c,_0x184865){return function(_0x3347e6){if(!_0x3347e6){_0x13ff1c[_0xb4f6('0x17')](0x194);}return _0x3347e6;};}function handleError(_0x1190c9,_0x266236){_0x266236=_0x266236||0x1f4;return function(_0x1ac888){logger[_0xb4f6('0x23')](_0x1ac888[_0xb4f6('0x24')]);if(_0x1ac888[_0xb4f6('0x25')]){delete _0x1ac888[_0xb4f6('0x25')];}_0x1190c9[_0xb4f6('0x18')](_0x266236)[_0xb4f6('0x26')](_0x1ac888);};}exports[_0xb4f6('0x27')]=function(_0x55f061,_0x55590a){var _0x210290={},_0x159807={},_0x2972a6={'count':0x0,'rows':[]};var _0x3cc362=_[_0xb4f6('0x28')](db['FreshsalesAccount'][_0xb4f6('0x29')],function(_0x9f31ff){return{'name':_0x9f31ff[_0xb4f6('0x2a')],'type':_0x9f31ff['type'][_0xb4f6('0x2b')]};});_0x159807[_0xb4f6('0x2c')]=_[_0xb4f6('0x28')](_0x3cc362,_0xb4f6('0x25'));_0x159807['query']=_['keys'](_0x55f061[_0xb4f6('0x2d')]);_0x159807[_0xb4f6('0x2e')]=_[_0xb4f6('0x2f')](_0x159807[_0xb4f6('0x2c')],_0x159807['query']);_0x210290['attributes']=_['intersection'](_0x159807[_0xb4f6('0x2c')],qs[_0xb4f6('0x30')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x210290[_0xb4f6('0x31')]=_0x210290[_0xb4f6('0x31')][_0xb4f6('0x32')]?_0x210290['attributes']:_0x159807['model'];if(!_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x33')](_0xb4f6('0x34'))){_0x210290[_0xb4f6('0x1c')]=qs[_0xb4f6('0x1c')](_0x55f061[_0xb4f6('0x2d')]['limit']);_0x210290[_0xb4f6('0x1b')]=qs[_0xb4f6('0x1b')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x1b')]);}_0x210290[_0xb4f6('0x35')]=qs[_0xb4f6('0x36')](_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x36')]);_0x210290[_0xb4f6('0x37')]=qs['filters'](_[_0xb4f6('0x38')](_0x55f061['query'],_0x159807[_0xb4f6('0x2e')]),_0x3cc362);if(_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x39')]){_0x210290['where']=_['merge'](_0x210290[_0xb4f6('0x37')],{'$or':_[_0xb4f6('0x28')](_0x3cc362,function(_0x15603d){if(_0x15603d[_0xb4f6('0x3a')]!==_0xb4f6('0x3b')){var _0x3be583={};_0x3be583[_0x15603d[_0xb4f6('0x25')]]={'$like':'%'+_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x39')]+'%'};return _0x3be583;}})});}_0x210290=_['merge']({},_0x210290,_0x55f061['options']);var _0x38ad35={'where':_0x210290['where']};return db['FreshsalesAccount'][_0xb4f6('0x1d')](_0x38ad35)[_0xb4f6('0x22')](function(_0x41e46a){_0x2972a6[_0xb4f6('0x1d')]=_0x41e46a;if(_0x55f061[_0xb4f6('0x2d')][_0xb4f6('0x3c')]){_0x210290[_0xb4f6('0x3d')]=[{'all':!![]}];}return db[_0xb4f6('0x3e')][_0xb4f6('0x3f')](_0x210290);})[_0xb4f6('0x22')](function(_0x1c5a96){_0x2972a6[_0xb4f6('0x40')]=_0x1c5a96;return _0x2972a6;})['then'](respondWithFilteredResult(_0x55590a,_0x210290))['catch'](handleError(_0x55590a,null));};exports[_0xb4f6('0x41')]=function(_0x43700d,_0x1b2b8d){var _0x515a5e={'raw':![],'where':{'id':_0x43700d['params']['id']}},_0x47b8c3={};_0x47b8c3[_0xb4f6('0x2c')]=_[_0xb4f6('0x42')](db['FreshsalesAccount'][_0xb4f6('0x29')]);_0x47b8c3['query']=_[_0xb4f6('0x42')](_0x43700d['query']);_0x47b8c3[_0xb4f6('0x2e')]=_[_0xb4f6('0x2f')](_0x47b8c3[_0xb4f6('0x2c')],_0x47b8c3[_0xb4f6('0x2d')]);_0x515a5e[_0xb4f6('0x31')]=_[_0xb4f6('0x2f')](_0x47b8c3[_0xb4f6('0x2c')],qs['fields'](_0x43700d[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x515a5e[_0xb4f6('0x31')]=_0x515a5e[_0xb4f6('0x31')]['length']?_0x515a5e[_0xb4f6('0x31')]:_0x47b8c3['model'];if(_0x43700d['query'][_0xb4f6('0x3c')]){_0x515a5e['include']=[{'all':!![]}];}_0x515a5e=_['merge']({},_0x515a5e,_0x43700d[_0xb4f6('0x43')]);return db[_0xb4f6('0x3e')][_0xb4f6('0x44')](_0x515a5e)[_0xb4f6('0x22')](handleEntityNotFound(_0x1b2b8d,null))['then'](respondWithResult(_0x1b2b8d,null))['catch'](handleError(_0x1b2b8d,null));};exports[_0xb4f6('0x45')]=function(_0x1218f2,_0x3a3be5){return db['FreshsalesAccount'][_0xb4f6('0x45')](_0x1218f2[_0xb4f6('0x46')],{})[_0xb4f6('0x22')](respondWithResult(_0x3a3be5,0xc9))[_0xb4f6('0x47')](handleError(_0x3a3be5,null));};exports['update']=function(_0x45207d,_0x570722){if(_0x45207d[_0xb4f6('0x46')]['id']){delete _0x45207d['body']['id'];}return db['FreshsalesAccount'][_0xb4f6('0x44')]({'where':{'id':_0x45207d[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x570722,null))[_0xb4f6('0x22')](saveUpdates(_0x45207d[_0xb4f6('0x46')],null))['then'](respondWithResult(_0x570722,null))['catch'](handleError(_0x570722,null));};exports[_0xb4f6('0x49')]=function(_0x1a244a,_0x4c6f1a){return db[_0xb4f6('0x3e')][_0xb4f6('0x44')]({'where':{'id':_0x1a244a[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x4c6f1a,null))['then'](removeEntity(_0x4c6f1a,null))['catch'](handleError(_0x4c6f1a,null));};exports[_0xb4f6('0x4a')]=function(_0x206c7c,_0x200405,_0x1518e8){var _0x57d312={};var _0x38b0eb={};var _0x551861;var _0x51bbeb;return db[_0xb4f6('0x3e')][_0xb4f6('0x4b')]({'where':{'id':_0x206c7c['params']['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x200405,null))[_0xb4f6('0x22')](function(_0x3e1768){if(_0x3e1768){_0x551861=_0x3e1768;_0x38b0eb[_0xb4f6('0x2c')]=_[_0xb4f6('0x42')](db[_0xb4f6('0x4c')][_0xb4f6('0x29')]);_0x38b0eb['query']=_['keys'](_0x206c7c[_0xb4f6('0x2d')]);_0x38b0eb[_0xb4f6('0x2e')]=_['intersection'](_0x38b0eb[_0xb4f6('0x2c')],_0x38b0eb[_0xb4f6('0x2d')]);_0x57d312[_0xb4f6('0x31')]=_[_0xb4f6('0x2f')](_0x38b0eb[_0xb4f6('0x2c')],qs['fields'](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x30')]));_0x57d312[_0xb4f6('0x31')]=_0x57d312['attributes']['length']?_0x57d312[_0xb4f6('0x31')]:_0x38b0eb[_0xb4f6('0x2c')];_0x57d312['order']=qs[_0xb4f6('0x36')](_0x206c7c['query'][_0xb4f6('0x36')]);_0x57d312[_0xb4f6('0x37')]=qs['filters'](_['pick'](_0x206c7c[_0xb4f6('0x2d')],_0x38b0eb['filters']));if(_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x39')]){_0x57d312[_0xb4f6('0x37')]=_[_0xb4f6('0x4d')](_0x57d312[_0xb4f6('0x37')],{'$or':_[_0xb4f6('0x28')](_0x57d312[_0xb4f6('0x31')],function(_0x483af5){var _0x3d1e4f={};_0x3d1e4f[_0x483af5]={'$like':'%'+_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x39')]+'%'};return _0x3d1e4f;})});}_0x57d312=_[_0xb4f6('0x4d')]({},_0x57d312,_0x206c7c['options']);return _0x551861[_0xb4f6('0x4a')](_0x57d312);}})[_0xb4f6('0x22')](function(_0x1b4358){if(_0x1b4358){_0x51bbeb=_0x1b4358[_0xb4f6('0x32')];if(!_0x206c7c[_0xb4f6('0x2d')]['hasOwnProperty'](_0xb4f6('0x34'))){_0x57d312[_0xb4f6('0x1c')]=qs[_0xb4f6('0x1c')](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x1c')]);_0x57d312[_0xb4f6('0x1b')]=qs[_0xb4f6('0x1b')](_0x206c7c[_0xb4f6('0x2d')][_0xb4f6('0x1b')]);}return _0x551861['getConfigurations'](_0x57d312);}})[_0xb4f6('0x22')](function(_0x2b0e02){if(_0x2b0e02){return _0x2b0e02?{'count':_0x51bbeb,'rows':_0x2b0e02}:null;}})[_0xb4f6('0x22')](respondWithResult(_0x200405,null))[_0xb4f6('0x47')](handleError(_0x200405,null));};exports['addConfiguration']=function(_0x29e0ab,_0x5bb4c1,_0x34f7d7){if(_0x29e0ab[_0xb4f6('0x46')]['id']){delete _0x29e0ab[_0xb4f6('0x46')]['id'];}return db[_0xb4f6('0x3e')][_0xb4f6('0x4b')]({'where':{'id':_0x29e0ab[_0xb4f6('0x48')]['id']}})[_0xb4f6('0x22')](handleEntityNotFound(_0x5bb4c1,null))[_0xb4f6('0x22')](function(_0x1e2bef){if(_0x1e2bef){_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x4e')]=_0x1e2bef['id'];_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x4f')]=integrations[_0xb4f6('0x50')](_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x51')],_0x29e0ab[_0xb4f6('0x46')][_0xb4f6('0x3a')]);_0x29e0ab['body']['Descriptions']=integrations[_0xb4f6('0x52')](_0x29e0ab['body']['channel'],_0x29e0ab['body']['type']);return db['FreshsalesConfiguration'][_0xb4f6('0x45')](_0x29e0ab['body'],{'include':[{'model':db[_0xb4f6('0x53')],'as':'Subjects'},{'model':db[_0xb4f6('0x53')],'as':_0xb4f6('0x54')}]});}return null;})[_0xb4f6('0x22')](respondWithResult(_0x5bb4c1,null))[_0xb4f6('0x47')](handleError(_0x5bb4c1,null));};exports[_0xb4f6('0x55')]=function(_0xe4fccf,_0x566ac8,_0x579324){var _0x5e854a='';var _0x81bfa7='';return db[_0xb4f6('0x3e')]['findOne']({'where':{'id':_0xe4fccf[_0xb4f6('0x48')]['id']},'attributes':['id',_0xb4f6('0x56'),_0xb4f6('0x57'),'apiKey']})[_0xb4f6('0x22')](handleEntityNotFound(_0x566ac8,null))[_0xb4f6('0x22')](function(_0x457d0a){if(_0x457d0a){_0x81bfa7=_0x457d0a['username'];_0x5e854a=_0x457d0a[_0xb4f6('0x57')];var _0x11fe39=_0x457d0a[_0xb4f6('0x57')][_0xb4f6('0x58')](-0x1);if(_0x11fe39==='/'){_0x5e854a=_0x5e854a[_0xb4f6('0x59')](0x0,_0x5e854a[_0xb4f6('0x5a')](_0x11fe39));}return rp({'method':'GET','uri':util[_0xb4f6('0x5b')](_0xb4f6('0x5c'),_0x5e854a,_0xb4f6('0x5d')),'headers':{'Authorization':_0xb4f6('0x5e')+_0x457d0a[_0xb4f6('0x5f')]},'json':!![]});}})[_0xb4f6('0x22')](function(_0x1fb23d){if(_0x1fb23d){var _0x5d54c5=_0x1fb23d[_0xb4f6('0x60')];var _0x5188be=![];var _0x3397cc=null;for(_0x3397cc=0x0;_0x3397cc<_0x5d54c5[_0xb4f6('0x32')];_0x3397cc++){if(_0x5d54c5[_0x3397cc]['email']===_0x81bfa7){_0x5188be=!![];}}if(_0x5188be){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xb4f6('0x22')](respondWithResult(_0x566ac8,null))[_0xb4f6('0x47')](function(_0x267e14){var _0x2368ce=_0xe4fccf[_0xb4f6('0x2d')][_0xb4f6('0x61')]?0x1f4:_0x267e14[_0xb4f6('0x62')]||0x1f4;logger[_0xb4f6('0x23')]('getFields,\x20%s,\x20%s,\x20%s',_0xb4f6('0x55'),_0x2368ce,JSON['stringify'](_0x267e14));delete _0x267e14[_0xb4f6('0x25')];if(_0x2368ce===0x191){_0x2368ce=0x190;}_0x566ac8[_0xb4f6('0x18')](_0x2368ce)[_0xb4f6('0x26')](_0xe4fccf['query'][_0xb4f6('0x61')]?{'message':_0xb4f6('0x63'),'statusCode':_0x267e14[_0xb4f6('0x62')]}:_0x267e14);});};
\ No newline at end of file
index a588efb..ff5fc60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a5a=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','define','FreshsalesAccount','int_freshsales_accounts','lodash','util'];(function(_0x1faaa1,_0x1568dd){var _0x994ec=function(_0x298ef4){while(--_0x298ef4){_0x1faaa1['push'](_0x1faaa1['shift']());}};_0x994ec(++_0x1568dd);}(_0x9a5a,0x194));var _0xa9a5=function(_0x48ea03,_0x3735fb){_0x48ea03=_0x48ea03-0x0;var _0x5ae05d=_0x9a5a[_0x48ea03];return _0x5ae05d;};'use strict';var _=require(_0xa9a5('0x0'));var util=require(_0xa9a5('0x1'));var logger=require(_0xa9a5('0x2'))(_0xa9a5('0x3'));var moment=require(_0xa9a5('0x4'));var BPromise=require('bluebird');var rp=require(_0xa9a5('0x5'));var fs=require('fs');var path=require(_0xa9a5('0x6'));var rimraf=require(_0xa9a5('0x7'));var config=require(_0xa9a5('0x8'));var attributes=require(_0xa9a5('0x9'));var integrations=require(_0xa9a5('0xa'));module['exports']=function(_0xb0ccd9,_0x37e93b){return _0xb0ccd9[_0xa9a5('0xb')](_0xa9a5('0xc'),attributes,{'tableName':_0xa9a5('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7096=['rimraf','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','FreshsalesAccount','int_freshsales_accounts','util','api','bluebird','request-promise','path'];(function(_0x22a492,_0x537d8a){var _0x50a30e=function(_0x351200){while(--_0x351200){_0x22a492['push'](_0x22a492['shift']());}};_0x50a30e(++_0x537d8a);}(_0x7096,0x10c));var _0x6709=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0x7096[_0x55f8b4];return _0x2475f9;};'use strict';var _=require('lodash');var util=require(_0x6709('0x0'));var logger=require('../../config/logger')(_0x6709('0x1'));var moment=require('moment');var BPromise=require(_0x6709('0x2'));var rp=require(_0x6709('0x3'));var fs=require('fs');var path=require(_0x6709('0x4'));var rimraf=require(_0x6709('0x5'));var config=require(_0x6709('0x6'));var attributes=require(_0x6709('0x7'));var integrations=require(_0x6709('0x8'));module[_0x6709('0x9')]=function(_0xa35832,_0x3e2223){return _0xa35832[_0x6709('0xa')](_0x6709('0xb'),attributes,{'tableName':_0x6709('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0a9bc47..1221cd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd046=['ioredis','../../config/logger','../../config/environment','http','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','catch','GetFreshsalesAccount','FreshsalesAccount','findAll','options','raw','where','attributes','limit','map','include','model','then','debug','find','ShowFreshsalesAccount','util','moment','bluebird'];(function(_0x128112,_0x68c508){var _0x886a9d=function(_0x57d590){while(--_0x57d590){_0x128112['push'](_0x128112['shift']());}};_0x886a9d(++_0x68c508);}(_0xd046,0x129));var _0x6d04=function(_0x3ff410,_0x4c00c5){_0x3ff410=_0x3ff410-0x0;var _0x1101a6=_0xd046[_0x3ff410];return _0x1101a6;};'use strict';var _=require('lodash');var util=require(_0x6d04('0x0'));var moment=require(_0x6d04('0x1'));var BPromise=require(_0x6d04('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6d04('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x6d04('0x4'))('rpc');var config=require(_0x6d04('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x6d04('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x1968c4,_0x4f83bc,_0x569c7b){return new BPromise(function(_0x2e2c01,_0x42aa22){return client['request'](_0x1968c4,_0x569c7b)['then'](function(_0x27a3d6){logger['info'](_0x6d04('0x7'),_0x4f83bc,'request\x20sent');logger['debug']('FreshsalesAccount,\x20%s,\x20%s,\x20%s',_0x4f83bc,_0x6d04('0x8'),JSON[_0x6d04('0x9')](_0x27a3d6));if(_0x27a3d6[_0x6d04('0xa')]){if(_0x27a3d6[_0x6d04('0xa')]['code']===0x1f4){logger[_0x6d04('0xa')](_0x6d04('0x7'),_0x4f83bc,_0x27a3d6[_0x6d04('0xa')][_0x6d04('0xb')]);return _0x42aa22(_0x27a3d6[_0x6d04('0xa')][_0x6d04('0xb')]);}logger[_0x6d04('0xa')](_0x6d04('0x7'),_0x4f83bc,_0x27a3d6[_0x6d04('0xa')][_0x6d04('0xb')]);return _0x2e2c01(_0x27a3d6[_0x6d04('0xa')][_0x6d04('0xb')]);}else{logger[_0x6d04('0xc')](_0x6d04('0x7'),_0x4f83bc,_0x6d04('0x8'));_0x2e2c01(_0x27a3d6[_0x6d04('0xd')][_0x6d04('0xb')]);}})[_0x6d04('0xe')](function(_0xed5538){logger[_0x6d04('0xa')](_0x6d04('0x7'),_0x4f83bc,_0xed5538);_0x42aa22(_0xed5538);});});}exports[_0x6d04('0xf')]=function(_0x2bc798){var _0x3ad325=this;return new Promise(function(_0x4e93b5,_0x3657a1){return db[_0x6d04('0x10')][_0x6d04('0x11')]({'raw':_0x2bc798[_0x6d04('0x12')]?_0x2bc798[_0x6d04('0x12')][_0x6d04('0x13')]===undefined?!![]:![]:!![],'where':_0x2bc798[_0x6d04('0x12')]?_0x2bc798[_0x6d04('0x12')][_0x6d04('0x14')]||null:null,'attributes':_0x2bc798[_0x6d04('0x12')]?_0x2bc798[_0x6d04('0x12')][_0x6d04('0x15')]||null:null,'limit':_0x2bc798[_0x6d04('0x12')]?_0x2bc798['options'][_0x6d04('0x16')]||null:null,'include':_0x2bc798[_0x6d04('0x12')]?_0x2bc798['options']['include']?_[_0x6d04('0x17')](_0x2bc798[_0x6d04('0x12')][_0x6d04('0x18')],function(_0xe8f198){return{'model':db[_0xe8f198[_0x6d04('0x19')]],'as':_0xe8f198['as'],'attributes':_0xe8f198[_0x6d04('0x15')],'include':_0xe8f198[_0x6d04('0x18')]?_[_0x6d04('0x17')](_0xe8f198[_0x6d04('0x18')],function(_0x38e90f){return{'model':db[_0x38e90f[_0x6d04('0x19')]],'as':_0x38e90f['as'],'attributes':_0x38e90f[_0x6d04('0x15')],'include':_0x38e90f[_0x6d04('0x18')]?_[_0x6d04('0x17')](_0x38e90f['include'],function(_0x1dc29b){return{'model':db[_0x1dc29b[_0x6d04('0x19')]],'as':_0x1dc29b['as'],'attributes':_0x1dc29b[_0x6d04('0x15')]};}):[]};}):[]};}):[]:[]})[_0x6d04('0x1a')](function(_0x4256a3){logger[_0x6d04('0xc')]('GetFreshsalesAccount',_0x2bc798);logger[_0x6d04('0x1b')](_0x6d04('0xf'),_0x2bc798,JSON[_0x6d04('0x9')](_0x4256a3));_0x4e93b5(_0x4256a3);})[_0x6d04('0xe')](function(_0x2ed2bb){logger['error']('GetFreshsalesAccount',_0x2ed2bb['message'],_0x2bc798);_0x3657a1(_0x3ad325['error'](0x1f4,_0x2ed2bb[_0x6d04('0xb')]));});});};exports['ShowFreshsalesAccount']=function(_0x43eb48){var _0x4ed123=this;return new Promise(function(_0x26be38,_0xee1291){return db[_0x6d04('0x10')][_0x6d04('0x1c')]({'raw':_0x43eb48[_0x6d04('0x12')]?_0x43eb48[_0x6d04('0x12')][_0x6d04('0x13')]===undefined?!![]:![]:!![],'where':_0x43eb48[_0x6d04('0x12')]?_0x43eb48[_0x6d04('0x12')][_0x6d04('0x14')]||null:null,'attributes':_0x43eb48['options']?_0x43eb48['options'][_0x6d04('0x15')]||null:null,'include':_0x43eb48[_0x6d04('0x12')]?_0x43eb48[_0x6d04('0x12')][_0x6d04('0x18')]?_['map'](_0x43eb48[_0x6d04('0x12')][_0x6d04('0x18')],function(_0x40758d){return{'model':db[_0x40758d[_0x6d04('0x19')]],'as':_0x40758d['as'],'attributes':_0x40758d['attributes'],'include':_0x40758d[_0x6d04('0x18')]?_[_0x6d04('0x17')](_0x40758d[_0x6d04('0x18')],function(_0x184da2){return{'model':db[_0x184da2[_0x6d04('0x19')]],'as':_0x184da2['as'],'attributes':_0x184da2[_0x6d04('0x15')],'include':_0x184da2[_0x6d04('0x18')]?_[_0x6d04('0x17')](_0x184da2[_0x6d04('0x18')],function(_0x67e455){return{'model':db[_0x67e455[_0x6d04('0x19')]],'as':_0x67e455['as'],'attributes':_0x67e455[_0x6d04('0x15')]};}):[]};}):[]};}):[]:[]})[_0x6d04('0x1a')](function(_0x2c2203){logger[_0x6d04('0xc')]('ShowFreshsalesAccount',_0x43eb48);logger[_0x6d04('0x1b')]('ShowFreshsalesAccount',_0x43eb48,JSON[_0x6d04('0x9')](_0x2c2203));_0x26be38(_0x2c2203);})[_0x6d04('0xe')](function(_0x4c1908){logger[_0x6d04('0xa')](_0x6d04('0x1d'),_0x4c1908[_0x6d04('0xb')],_0x43eb48);_0xee1291(_0x4ed123[_0x6d04('0xa')](0x1f4,_0x4c1908[_0x6d04('0xb')]));});});};
\ No newline at end of file
+var _0x77e6=['result','catch','FreshsalesAccount','findAll','options','where','attributes','limit','include','model','map','GetFreshsalesAccount','ShowFreshsalesAccount','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesAccount,\x20%s,\x20%s','message'];(function(_0x5a7547,_0x5e3f7a){var _0x3c8a86=function(_0x3a68b3){while(--_0x3a68b3){_0x5a7547['push'](_0x5a7547['shift']());}};_0x3c8a86(++_0x5e3f7a);}(_0x77e6,0x1a6));var _0x677e=function(_0x28aaf2,_0xfa515){_0x28aaf2=_0x28aaf2-0x0;var _0x2962ad=_0x77e6[_0x28aaf2];return _0x2962ad;};'use strict';var _=require(_0x677e('0x0'));var util=require(_0x677e('0x1'));var moment=require(_0x677e('0x2'));var BPromise=require(_0x677e('0x3'));var rs=require(_0x677e('0x4'));var fs=require('fs');var Redis=require(_0x677e('0x5'));var db=require(_0x677e('0x6'))['db'];var utils=require(_0x677e('0x7'));var logger=require('../../config/logger')(_0x677e('0x8'));var config=require(_0x677e('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x677e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x40d314,_0x4d1a57,_0x5a5dd3){return new BPromise(function(_0x2eb40c,_0x4c519f){return client[_0x677e('0xb')](_0x40d314,_0x5a5dd3)[_0x677e('0xc')](function(_0x552931){logger[_0x677e('0xd')]('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x677e('0xe'));logger[_0x677e('0xf')](_0x677e('0x10'),_0x4d1a57,_0x677e('0xe'),JSON[_0x677e('0x11')](_0x552931));if(_0x552931[_0x677e('0x12')]){if(_0x552931[_0x677e('0x12')][_0x677e('0x13')]===0x1f4){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x552931[_0x677e('0x12')][_0x677e('0x15')]);return _0x4c519f(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}logger['error']('FreshsalesAccount,\x20%s,\x20%s',_0x4d1a57,_0x552931['error'][_0x677e('0x15')]);return _0x2eb40c(_0x552931[_0x677e('0x12')][_0x677e('0x15')]);}else{logger[_0x677e('0xd')](_0x677e('0x14'),_0x4d1a57,_0x677e('0xe'));_0x2eb40c(_0x552931[_0x677e('0x16')][_0x677e('0x15')]);}})[_0x677e('0x17')](function(_0x32d306){logger[_0x677e('0x12')](_0x677e('0x14'),_0x4d1a57,_0x32d306);_0x4c519f(_0x32d306);});});}exports['GetFreshsalesAccount']=function(_0x1c5124){var _0x2ef2bf=this;return new Promise(function(_0x385b06,_0x221b6d){return db[_0x677e('0x18')][_0x677e('0x19')]({'raw':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1b')]||null:null,'attributes':_0x1c5124['options']?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'limit':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')][_0x677e('0x1d')]||null:null,'include':_0x1c5124[_0x677e('0x1a')]?_0x1c5124[_0x677e('0x1a')]['include']?_['map'](_0x1c5124['options'][_0x677e('0x1e')],function(_0x154fce){return{'model':db[_0x154fce[_0x677e('0x1f')]],'as':_0x154fce['as'],'attributes':_0x154fce[_0x677e('0x1c')],'include':_0x154fce[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x154fce[_0x677e('0x1e')],function(_0x42f2b8){return{'model':db[_0x42f2b8[_0x677e('0x1f')]],'as':_0x42f2b8['as'],'attributes':_0x42f2b8[_0x677e('0x1c')],'include':_0x42f2b8['include']?_['map'](_0x42f2b8[_0x677e('0x1e')],function(_0x184f68){return{'model':db[_0x184f68['model']],'as':_0x184f68['as'],'attributes':_0x184f68[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0xf6b3ad){logger[_0x677e('0xd')](_0x677e('0x21'),_0x1c5124);logger[_0x677e('0xf')]('GetFreshsalesAccount',_0x1c5124,JSON[_0x677e('0x11')](_0xf6b3ad));_0x385b06(_0xf6b3ad);})[_0x677e('0x17')](function(_0xeca8e2){logger[_0x677e('0x12')](_0x677e('0x21'),_0xeca8e2[_0x677e('0x15')],_0x1c5124);_0x221b6d(_0x2ef2bf[_0x677e('0x12')](0x1f4,_0xeca8e2[_0x677e('0x15')]));});});};exports[_0x677e('0x22')]=function(_0x4c5113){var _0x22ccfb=this;return new Promise(function(_0x3cac19,_0x2fb815){return db[_0x677e('0x18')][_0x677e('0x23')]({'raw':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x24')]===undefined?!![]:![]:!![],'where':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')]['where']||null:null,'attributes':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1c')]||null:null,'include':_0x4c5113[_0x677e('0x1a')]?_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')]?_['map'](_0x4c5113[_0x677e('0x1a')][_0x677e('0x1e')],function(_0x2d0bc0){return{'model':db[_0x2d0bc0['model']],'as':_0x2d0bc0['as'],'attributes':_0x2d0bc0[_0x677e('0x1c')],'include':_0x2d0bc0[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x2d0bc0[_0x677e('0x1e')],function(_0x35c945){return{'model':db[_0x35c945['model']],'as':_0x35c945['as'],'attributes':_0x35c945[_0x677e('0x1c')],'include':_0x35c945[_0x677e('0x1e')]?_[_0x677e('0x20')](_0x35c945[_0x677e('0x1e')],function(_0x548b22){return{'model':db[_0x548b22[_0x677e('0x1f')]],'as':_0x548b22['as'],'attributes':_0x548b22[_0x677e('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x677e('0xc')](function(_0x576443){logger['info'](_0x677e('0x22'),_0x4c5113);logger[_0x677e('0xf')]('ShowFreshsalesAccount',_0x4c5113,JSON[_0x677e('0x11')](_0x576443));_0x3cac19(_0x576443);})[_0x677e('0x17')](function(_0x497dca){logger['error'](_0x677e('0x22'),_0x497dca[_0x677e('0x15')],_0x4c5113);_0x2fb815(_0x22ccfb['error'](0x1f4,_0x497dca['message']));});});};
\ No newline at end of file
index 5612c2d..6d41e3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cbc=['create','/:id','update','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','get','index','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','post'];(function(_0x10a39e,_0x33a33e){var _0x12ccab=function(_0x421f7d){while(--_0x421f7d){_0x10a39e['push'](_0x10a39e['shift']());}};_0x12ccab(++_0x33a33e);}(_0x5cbc,0x1a2));var _0xc5cb=function(_0x182102,_0x1ae491){_0x182102=_0x182102-0x0;var _0x3aa4ee=_0x5cbc[_0x182102];return _0x3aa4ee;};'use strict';var multer=require('multer');var util=require(_0xc5cb('0x0'));var path=require(_0xc5cb('0x1'));var timeout=require('connect-timeout');var express=require(_0xc5cb('0x2'));var router=express[_0xc5cb('0x3')]();var fs_extra=require(_0xc5cb('0x4'));var auth=require(_0xc5cb('0x5'));var interaction=require(_0xc5cb('0x6'));var config=require(_0xc5cb('0x7'));var controller=require(_0xc5cb('0x8'));router[_0xc5cb('0x9')]('/',auth['isAuthenticated'](),controller[_0xc5cb('0xa')]);router[_0xc5cb('0x9')]('/:id',auth[_0xc5cb('0xb')](),controller[_0xc5cb('0xc')]);router[_0xc5cb('0x9')](_0xc5cb('0xd'),auth[_0xc5cb('0xb')](),controller[_0xc5cb('0xe')]);router['get'](_0xc5cb('0xf'),auth['isAuthenticated'](),controller[_0xc5cb('0x10')]);router[_0xc5cb('0x9')](_0xc5cb('0x11'),auth['isAuthenticated'](),controller['getFields']);router[_0xc5cb('0x12')]('/',auth[_0xc5cb('0xb')](),controller[_0xc5cb('0x13')]);router['put'](_0xc5cb('0x14'),auth['isAuthenticated'](),controller[_0xc5cb('0x15')]);router['delete'](_0xc5cb('0x14'),auth['isAuthenticated'](),controller['destroy']);module[_0xc5cb('0x16')]=router;
\ No newline at end of file
+var _0x27ae=['destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesConfiguration.controller','isAuthenticated','index','get','/:id','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','post','update','delete'];(function(_0x15dea7,_0x59f6b9){var _0x21aa62=function(_0xbe03b6){while(--_0xbe03b6){_0x15dea7['push'](_0x15dea7['shift']());}};_0x21aa62(++_0x59f6b9);}(_0x27ae,0xaa));var _0xe27a=function(_0x33b08,_0x1bf73d){_0x33b08=_0x33b08-0x0;var _0x214fce=_0x27ae[_0x33b08];return _0x214fce;};'use strict';var multer=require(_0xe27a('0x0'));var util=require(_0xe27a('0x1'));var path=require(_0xe27a('0x2'));var timeout=require(_0xe27a('0x3'));var express=require(_0xe27a('0x4'));var router=express['Router']();var fs_extra=require(_0xe27a('0x5'));var auth=require(_0xe27a('0x6'));var interaction=require(_0xe27a('0x7'));var config=require(_0xe27a('0x8'));var controller=require(_0xe27a('0x9'));router['get']('/',auth[_0xe27a('0xa')](),controller[_0xe27a('0xb')]);router[_0xe27a('0xc')](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller['show']);router[_0xe27a('0xc')](_0xe27a('0xe'),auth['isAuthenticated'](),controller[_0xe27a('0xf')]);router[_0xe27a('0xc')]('/:id/descriptions',auth[_0xe27a('0xa')](),controller[_0xe27a('0x10')]);router[_0xe27a('0xc')](_0xe27a('0x11'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x12')]);router[_0xe27a('0x13')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x14')]);router[_0xe27a('0x15')](_0xe27a('0xd'),auth[_0xe27a('0xa')](),controller[_0xe27a('0x16')]);module[_0xe27a('0x17')]=router;
\ No newline at end of file
index f250ed1..d0ff1a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde97=['sequelize','exports','STRING'];(function(_0x2882d0,_0x200dcc){var _0x40e067=function(_0x5191b2){while(--_0x5191b2){_0x2882d0['push'](_0x2882d0['shift']());}};_0x40e067(++_0x200dcc);}(_0xde97,0x1d1));var _0x7de9=function(_0x685346,_0x3ef2e5){_0x685346=_0x685346-0x0;var _0x52e15b=_0xde97[_0x685346];return _0x52e15b;};'use strict';var Sequelize=require(_0x7de9('0x0'));module[_0x7de9('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7de9('0x2')]}};
\ No newline at end of file
+var _0xca61=['STRING','sequelize','exports'];(function(_0x4393ed,_0x2f5a6a){var _0x4105cf=function(_0x2ed57d){while(--_0x2ed57d){_0x4393ed['push'](_0x4393ed['shift']());}};_0x4105cf(++_0x2f5a6a);}(_0xca61,0xbb));var _0x1ca6=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xca61[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x1ca6('0x0'));module[_0x1ca6('0x1')]={'name':{'type':Sequelize[_0x1ca6('0x2')]},'description':{'type':Sequelize[_0x1ca6('0x2')]}};
\ No newline at end of file
index 0d083a5..634b081 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd29b=['FreshsalesField','hasOwnProperty','getDescriptions','getFields','zip-dir','request-promise','moment','util','path','fs-extra','lodash','crypto','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','limit','undefined','count','set','apply','save','update','then','sendStatus','error','name','send','index','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','options','where','includeAll','include','rows','show','merge','find','catch','body','params','destroy','findOne'];(function(_0x548627,_0x4ec392){var _0x844a84=function(_0x2ffdd2){while(--_0x2ffdd2){_0x548627['push'](_0x548627['shift']());}};_0x844a84(++_0x4ec392);}(_0xd29b,0x167));var _0xbd29=function(_0xfc5c2b,_0x15e0ac){_0xfc5c2b=_0xfc5c2b-0x0;var _0x398816=_0xd29b[_0xfc5c2b];return _0x398816;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xbd29('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbd29('0x1'));var moment=require(_0xbd29('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbd29('0x3'));var path=require(_0xbd29('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd29('0x5'));var _=require(_0xbd29('0x6'));var squel=require('squel');var crypto=require(_0xbd29('0x7'));var jsforce=require(_0xbd29('0x8'));var deskjs=require('desk.js');var toCsv=require(_0xbd29('0x9'));var querystring=require(_0xbd29('0xa'));var Papa=require('papaparse');var Redis=require(_0xbd29('0xb'));var authService=require(_0xbd29('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0xbd29('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xbd29('0xe'))(_0xbd29('0xf'));var utils=require(_0xbd29('0x10'));var config=require(_0xbd29('0x11'));var licenseUtil=require('../../config/license/util');var db=require(_0xbd29('0x12'))['db'];function respondWithStatusCode(_0xb51ba1,_0xce7600){_0xce7600=_0xce7600||0xcc;return function(_0x5cb378){if(_0x5cb378){return _0xb51ba1['sendStatus'](_0xce7600);}return _0xb51ba1[_0xbd29('0x13')](_0xce7600)[_0xbd29('0x14')]();};}function respondWithResult(_0x54ed65,_0x259196){_0x259196=_0x259196||0xc8;return function(_0x34f431){if(_0x34f431){return _0x54ed65[_0xbd29('0x13')](_0x259196)['json'](_0x34f431);}};}function respondWithFilteredResult(_0x2f15b4,_0x3a4c1d){return function(_0x40512b){if(_0x40512b){var _0x16bcda=typeof _0x3a4c1d[_0xbd29('0x15')]==='undefined'&&typeof _0x3a4c1d[_0xbd29('0x16')]===_0xbd29('0x17');var _0x2a2a57=_0x40512b[_0xbd29('0x18')];var _0x5d0d01=_0x16bcda?0x0:_0x3a4c1d[_0xbd29('0x15')];var _0x1dff9d=_0x16bcda?_0x40512b[_0xbd29('0x18')]:_0x3a4c1d[_0xbd29('0x15')]+_0x3a4c1d[_0xbd29('0x16')];var _0x19cad8;if(_0x1dff9d>=_0x2a2a57){_0x1dff9d=_0x2a2a57;_0x19cad8=0xc8;}else{_0x19cad8=0xce;}_0x2f15b4[_0xbd29('0x13')](_0x19cad8);return _0x2f15b4[_0xbd29('0x19')]('Content-Range',_0x5d0d01+'-'+_0x1dff9d+'/'+_0x2a2a57)['json'](_0x40512b);}return null;};}function patchUpdates(_0x487dc9){return function(_0x3bf7bb){try{jsonpatch[_0xbd29('0x1a')](_0x3bf7bb,_0x487dc9,!![]);}catch(_0x162cba){return BPromise['reject'](_0x162cba);}return _0x3bf7bb[_0xbd29('0x1b')]();};}function saveUpdates(_0x414f6e,_0x477b52){return function(_0x30216e){if(_0x30216e){return _0x30216e[_0xbd29('0x1c')](_0x414f6e)[_0xbd29('0x1d')](function(_0x593a7a){return _0x593a7a;});}return null;};}function removeEntity(_0x37d832,_0x368eaf){return function(_0x2b0604){if(_0x2b0604){return _0x2b0604['destroy']()[_0xbd29('0x1d')](function(){_0x37d832['status'](0xcc)[_0xbd29('0x14')]();});}};}function handleEntityNotFound(_0x151a83,_0xacc2b4){return function(_0x2ad429){if(!_0x2ad429){_0x151a83[_0xbd29('0x1e')](0x194);}return _0x2ad429;};}function handleError(_0x3b6487,_0x180ed0){_0x180ed0=_0x180ed0||0x1f4;return function(_0x47d6af){logger[_0xbd29('0x1f')](_0x47d6af['stack']);if(_0x47d6af[_0xbd29('0x20')]){delete _0x47d6af[_0xbd29('0x20')];}_0x3b6487[_0xbd29('0x13')](_0x180ed0)[_0xbd29('0x21')](_0x47d6af);};}exports[_0xbd29('0x22')]=function(_0x45d7f5,_0x569503){var _0x28474a={},_0x2ab14b={},_0x5de655={'count':0x0,'rows':[]};var _0x43c02f=_[_0xbd29('0x23')](db[_0xbd29('0x24')][_0xbd29('0x25')],function(_0x5af012){return{'name':_0x5af012[_0xbd29('0x26')],'type':_0x5af012[_0xbd29('0x27')][_0xbd29('0x28')]};});_0x2ab14b[_0xbd29('0x29')]=_[_0xbd29('0x23')](_0x43c02f,_0xbd29('0x20'));_0x2ab14b[_0xbd29('0x2a')]=_[_0xbd29('0x2b')](_0x45d7f5['query']);_0x2ab14b['filters']=_[_0xbd29('0x2c')](_0x2ab14b[_0xbd29('0x29')],_0x2ab14b[_0xbd29('0x2a')]);_0x28474a[_0xbd29('0x2d')]=_['intersection'](_0x2ab14b[_0xbd29('0x29')],qs[_0xbd29('0x2e')](_0x45d7f5['query'][_0xbd29('0x2e')]));_0x28474a[_0xbd29('0x2d')]=_0x28474a[_0xbd29('0x2d')][_0xbd29('0x2f')]?_0x28474a[_0xbd29('0x2d')]:_0x2ab14b['model'];if(!_0x45d7f5[_0xbd29('0x2a')]['hasOwnProperty'](_0xbd29('0x30'))){_0x28474a[_0xbd29('0x16')]=qs[_0xbd29('0x16')](_0x45d7f5[_0xbd29('0x2a')]['limit']);_0x28474a[_0xbd29('0x15')]=qs['offset'](_0x45d7f5[_0xbd29('0x2a')][_0xbd29('0x15')]);}_0x28474a[_0xbd29('0x31')]=qs[_0xbd29('0x32')](_0x45d7f5[_0xbd29('0x2a')]['sort']);_0x28474a['where']=qs[_0xbd29('0x33')](_[_0xbd29('0x34')](_0x45d7f5[_0xbd29('0x2a')],_0x2ab14b[_0xbd29('0x33')]),_0x43c02f);if(_0x45d7f5[_0xbd29('0x2a')][_0xbd29('0x35')]){_0x28474a['where']=_['merge'](_0x28474a['where'],{'$or':_[_0xbd29('0x23')](_0x43c02f,function(_0xe6f0b0){if(_0xe6f0b0[_0xbd29('0x27')]!=='VIRTUAL'){var _0x602045={};_0x602045[_0xe6f0b0[_0xbd29('0x20')]]={'$like':'%'+_0x45d7f5[_0xbd29('0x2a')][_0xbd29('0x35')]+'%'};return _0x602045;}})});}_0x28474a=_['merge']({},_0x28474a,_0x45d7f5[_0xbd29('0x36')]);var _0x4f956a={'where':_0x28474a[_0xbd29('0x37')]};return db[_0xbd29('0x24')][_0xbd29('0x18')](_0x4f956a)['then'](function(_0x2f522a){_0x5de655[_0xbd29('0x18')]=_0x2f522a;if(_0x45d7f5[_0xbd29('0x2a')][_0xbd29('0x38')]){_0x28474a[_0xbd29('0x39')]=[{'all':!![]}];}return db[_0xbd29('0x24')]['findAll'](_0x28474a);})[_0xbd29('0x1d')](function(_0x5a813d){_0x5de655[_0xbd29('0x3a')]=_0x5a813d;return _0x5de655;})[_0xbd29('0x1d')](respondWithFilteredResult(_0x569503,_0x28474a))['catch'](handleError(_0x569503,null));};exports[_0xbd29('0x3b')]=function(_0x4855e8,_0x430b73){var _0x46d416={'raw':![],'where':{'id':_0x4855e8['params']['id']}},_0x1aa444={};_0x1aa444[_0xbd29('0x29')]=_['keys'](db['FreshsalesConfiguration'][_0xbd29('0x25')]);_0x1aa444['query']=_[_0xbd29('0x2b')](_0x4855e8['query']);_0x1aa444[_0xbd29('0x33')]=_[_0xbd29('0x2c')](_0x1aa444[_0xbd29('0x29')],_0x1aa444[_0xbd29('0x2a')]);_0x46d416[_0xbd29('0x2d')]=_['intersection'](_0x1aa444[_0xbd29('0x29')],qs[_0xbd29('0x2e')](_0x4855e8[_0xbd29('0x2a')][_0xbd29('0x2e')]));_0x46d416['attributes']=_0x46d416[_0xbd29('0x2d')][_0xbd29('0x2f')]?_0x46d416[_0xbd29('0x2d')]:_0x1aa444[_0xbd29('0x29')];if(_0x4855e8[_0xbd29('0x2a')][_0xbd29('0x38')]){_0x46d416[_0xbd29('0x39')]=[{'all':!![]}];}_0x46d416=_[_0xbd29('0x3c')]({},_0x46d416,_0x4855e8[_0xbd29('0x36')]);return db[_0xbd29('0x24')][_0xbd29('0x3d')](_0x46d416)[_0xbd29('0x1d')](handleEntityNotFound(_0x430b73,null))[_0xbd29('0x1d')](respondWithResult(_0x430b73,null))[_0xbd29('0x3e')](handleError(_0x430b73,null));};exports['create']=function(_0xdddf51,_0x5d7e80){return db[_0xbd29('0x24')]['create'](_0xdddf51[_0xbd29('0x3f')],{})[_0xbd29('0x1d')](respondWithResult(_0x5d7e80,0xc9))['catch'](handleError(_0x5d7e80,null));};exports[_0xbd29('0x1c')]=function(_0x4e8ced,_0x5e5b14){if(_0x4e8ced[_0xbd29('0x3f')]['id']){delete _0x4e8ced[_0xbd29('0x3f')]['id'];}return db[_0xbd29('0x24')][_0xbd29('0x3d')]({'where':{'id':_0x4e8ced[_0xbd29('0x40')]['id']}})[_0xbd29('0x1d')](handleEntityNotFound(_0x5e5b14,null))[_0xbd29('0x1d')](saveUpdates(_0x4e8ced[_0xbd29('0x3f')],null))['then'](respondWithResult(_0x5e5b14,null))[_0xbd29('0x3e')](handleError(_0x5e5b14,null));};exports[_0xbd29('0x41')]=function(_0x1e65ef,_0xecbe4f){return db['FreshsalesConfiguration'][_0xbd29('0x3d')]({'where':{'id':_0x1e65ef[_0xbd29('0x40')]['id']}})['then'](handleEntityNotFound(_0xecbe4f,null))[_0xbd29('0x1d')](removeEntity(_0xecbe4f,null))[_0xbd29('0x3e')](handleError(_0xecbe4f,null));};exports['getSubjects']=function(_0x5b2f97,_0x355579,_0x2506ca){var _0x397d4d={};var _0x4acaa0={};var _0x394935;var _0x11092b;return db['FreshsalesConfiguration'][_0xbd29('0x42')]({'where':{'id':_0x5b2f97['params']['id']}})['then'](handleEntityNotFound(_0x355579,null))[_0xbd29('0x1d')](function(_0x5856b4){if(_0x5856b4){_0x394935=_0x5856b4;_0x4acaa0[_0xbd29('0x29')]=_['keys'](db[_0xbd29('0x43')][_0xbd29('0x25')]);_0x4acaa0['query']=_[_0xbd29('0x2b')](_0x5b2f97['query']);_0x4acaa0[_0xbd29('0x33')]=_[_0xbd29('0x2c')](_0x4acaa0['model'],_0x4acaa0['query']);_0x397d4d[_0xbd29('0x2d')]=_[_0xbd29('0x2c')](_0x4acaa0['model'],qs[_0xbd29('0x2e')](_0x5b2f97[_0xbd29('0x2a')]['fields']));_0x397d4d[_0xbd29('0x2d')]=_0x397d4d['attributes'][_0xbd29('0x2f')]?_0x397d4d['attributes']:_0x4acaa0[_0xbd29('0x29')];_0x397d4d[_0xbd29('0x31')]=qs[_0xbd29('0x32')](_0x5b2f97[_0xbd29('0x2a')][_0xbd29('0x32')]);_0x397d4d['where']=qs[_0xbd29('0x33')](_['pick'](_0x5b2f97['query'],_0x4acaa0['filters']));if(_0x5b2f97['query']['filter']){_0x397d4d[_0xbd29('0x37')]=_[_0xbd29('0x3c')](_0x397d4d[_0xbd29('0x37')],{'$or':_['map'](_0x397d4d[_0xbd29('0x2d')],function(_0x36e121){var _0x26a927={};_0x26a927[_0x36e121]={'$like':'%'+_0x5b2f97['query'][_0xbd29('0x35')]+'%'};return _0x26a927;})});}_0x397d4d=_[_0xbd29('0x3c')]({},_0x397d4d,_0x5b2f97[_0xbd29('0x36')]);return _0x394935['getSubjects'](_0x397d4d);}})[_0xbd29('0x1d')](function(_0x55821b){if(_0x55821b){_0x11092b=_0x55821b[_0xbd29('0x2f')];if(!_0x5b2f97[_0xbd29('0x2a')][_0xbd29('0x44')](_0xbd29('0x30'))){_0x397d4d[_0xbd29('0x16')]=qs[_0xbd29('0x16')](_0x5b2f97[_0xbd29('0x2a')][_0xbd29('0x16')]);_0x397d4d[_0xbd29('0x15')]=qs[_0xbd29('0x15')](_0x5b2f97[_0xbd29('0x2a')][_0xbd29('0x15')]);}return _0x394935['getSubjects'](_0x397d4d);}})[_0xbd29('0x1d')](function(_0x477a6d){if(_0x477a6d){return _0x477a6d?{'count':_0x11092b,'rows':_0x477a6d}:null;}})[_0xbd29('0x1d')](respondWithResult(_0x355579,null))['catch'](handleError(_0x355579,null));};exports['getDescriptions']=function(_0x33d4fd,_0x5c01c9,_0x429382){var _0x13c262={};var _0x48707b={};var _0x126196;var _0x568bbe;return db[_0xbd29('0x24')][_0xbd29('0x42')]({'where':{'id':_0x33d4fd[_0xbd29('0x40')]['id']}})[_0xbd29('0x1d')](handleEntityNotFound(_0x5c01c9,null))['then'](function(_0xe7bed8){if(_0xe7bed8){_0x126196=_0xe7bed8;_0x48707b['model']=_[_0xbd29('0x2b')](db[_0xbd29('0x43')][_0xbd29('0x25')]);_0x48707b[_0xbd29('0x2a')]=_[_0xbd29('0x2b')](_0x33d4fd[_0xbd29('0x2a')]);_0x48707b[_0xbd29('0x33')]=_[_0xbd29('0x2c')](_0x48707b['model'],_0x48707b['query']);_0x13c262['attributes']=_[_0xbd29('0x2c')](_0x48707b[_0xbd29('0x29')],qs['fields'](_0x33d4fd[_0xbd29('0x2a')][_0xbd29('0x2e')]));_0x13c262[_0xbd29('0x2d')]=_0x13c262[_0xbd29('0x2d')][_0xbd29('0x2f')]?_0x13c262[_0xbd29('0x2d')]:_0x48707b['model'];_0x13c262[_0xbd29('0x31')]=qs[_0xbd29('0x32')](_0x33d4fd[_0xbd29('0x2a')]['sort']);_0x13c262['where']=qs['filters'](_['pick'](_0x33d4fd[_0xbd29('0x2a')],_0x48707b[_0xbd29('0x33')]));if(_0x33d4fd[_0xbd29('0x2a')]['filter']){_0x13c262[_0xbd29('0x37')]=_[_0xbd29('0x3c')](_0x13c262[_0xbd29('0x37')],{'$or':_[_0xbd29('0x23')](_0x13c262['attributes'],function(_0x36eb06){var _0x318ac5={};_0x318ac5[_0x36eb06]={'$like':'%'+_0x33d4fd[_0xbd29('0x2a')][_0xbd29('0x35')]+'%'};return _0x318ac5;})});}_0x13c262=_[_0xbd29('0x3c')]({},_0x13c262,_0x33d4fd[_0xbd29('0x36')]);return _0x126196[_0xbd29('0x45')](_0x13c262);}})['then'](function(_0x474d56){if(_0x474d56){_0x568bbe=_0x474d56[_0xbd29('0x2f')];if(!_0x33d4fd[_0xbd29('0x2a')][_0xbd29('0x44')](_0xbd29('0x30'))){_0x13c262[_0xbd29('0x16')]=qs[_0xbd29('0x16')](_0x33d4fd[_0xbd29('0x2a')][_0xbd29('0x16')]);_0x13c262[_0xbd29('0x15')]=qs[_0xbd29('0x15')](_0x33d4fd[_0xbd29('0x2a')][_0xbd29('0x15')]);}return _0x126196[_0xbd29('0x45')](_0x13c262);}})[_0xbd29('0x1d')](function(_0x23bbfc){if(_0x23bbfc){return _0x23bbfc?{'count':_0x568bbe,'rows':_0x23bbfc}:null;}})[_0xbd29('0x1d')](respondWithResult(_0x5c01c9,null))[_0xbd29('0x3e')](handleError(_0x5c01c9,null));};exports[_0xbd29('0x46')]=function(_0x4977ea,_0x51075c,_0xda4f64){var _0x3d9a09={};var _0x1507e3={};var _0x144819;var _0xc554d5;return db[_0xbd29('0x24')][_0xbd29('0x42')]({'where':{'id':_0x4977ea['params']['id']}})[_0xbd29('0x1d')](handleEntityNotFound(_0x51075c,null))[_0xbd29('0x1d')](function(_0x67901){if(_0x67901){_0x144819=_0x67901;_0x1507e3['model']=_[_0xbd29('0x2b')](db[_0xbd29('0x43')][_0xbd29('0x25')]);_0x1507e3[_0xbd29('0x2a')]=_['keys'](_0x4977ea[_0xbd29('0x2a')]);_0x1507e3['filters']=_[_0xbd29('0x2c')](_0x1507e3[_0xbd29('0x29')],_0x1507e3[_0xbd29('0x2a')]);_0x3d9a09['attributes']=_[_0xbd29('0x2c')](_0x1507e3[_0xbd29('0x29')],qs[_0xbd29('0x2e')](_0x4977ea[_0xbd29('0x2a')]['fields']));_0x3d9a09[_0xbd29('0x2d')]=_0x3d9a09[_0xbd29('0x2d')][_0xbd29('0x2f')]?_0x3d9a09[_0xbd29('0x2d')]:_0x1507e3[_0xbd29('0x29')];_0x3d9a09[_0xbd29('0x31')]=qs['sort'](_0x4977ea[_0xbd29('0x2a')][_0xbd29('0x32')]);_0x3d9a09[_0xbd29('0x37')]=qs[_0xbd29('0x33')](_[_0xbd29('0x34')](_0x4977ea[_0xbd29('0x2a')],_0x1507e3[_0xbd29('0x33')]));if(_0x4977ea[_0xbd29('0x2a')]['filter']){_0x3d9a09[_0xbd29('0x37')]=_[_0xbd29('0x3c')](_0x3d9a09[_0xbd29('0x37')],{'$or':_['map'](_0x3d9a09[_0xbd29('0x2d')],function(_0x2701e0){var _0x4e0f22={};_0x4e0f22[_0x2701e0]={'$like':'%'+_0x4977ea['query'][_0xbd29('0x35')]+'%'};return _0x4e0f22;})});}_0x3d9a09=_[_0xbd29('0x3c')]({},_0x3d9a09,_0x4977ea[_0xbd29('0x36')]);return _0x144819['getFields'](_0x3d9a09);}})[_0xbd29('0x1d')](function(_0x13bba2){if(_0x13bba2){_0xc554d5=_0x13bba2[_0xbd29('0x2f')];if(!_0x4977ea['query'][_0xbd29('0x44')](_0xbd29('0x30'))){_0x3d9a09[_0xbd29('0x16')]=qs['limit'](_0x4977ea[_0xbd29('0x2a')]['limit']);_0x3d9a09[_0xbd29('0x15')]=qs[_0xbd29('0x15')](_0x4977ea[_0xbd29('0x2a')][_0xbd29('0x15')]);}return _0x144819[_0xbd29('0x46')](_0x3d9a09);}})[_0xbd29('0x1d')](function(_0xf746f){if(_0xf746f){return _0xf746f?{'count':_0xc554d5,'rows':_0xf746f}:null;}})[_0xbd29('0x1d')](respondWithResult(_0x51075c,null))[_0xbd29('0x3e')](handleError(_0x51075c,null));};
\ No newline at end of file
+var _0x23c8=['offset','count','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesConfiguration','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','catch','FreshsalesField','nolimit','getSubjects','getDescriptions','findOne','order','getFields','eml-format','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','limit'];(function(_0x1f8057,_0x29937c){var _0x530ae5=function(_0x1870ea){while(--_0x1870ea){_0x1f8057['push'](_0x1f8057['shift']());}};_0x530ae5(++_0x29937c);}(_0x23c8,0x1d0));var _0x823c=function(_0x4b7d3a,_0x649715){_0x4b7d3a=_0x4b7d3a-0x0;var _0x5de19b=_0x23c8[_0x4b7d3a];return _0x5de19b;};'use strict';var emlformat=require(_0x823c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x823c('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x823c('0x2'));var BPromise=require(_0x823c('0x3'));var Mustache=require(_0x823c('0x4'));var util=require(_0x823c('0x5'));var path=require(_0x823c('0x6'));var sox=require('sox');var csv=require(_0x823c('0x7'));var ejs=require(_0x823c('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x823c('0x9'));var squel=require('squel');var crypto=require(_0x823c('0xa'));var jsforce=require(_0x823c('0xb'));var deskjs=require(_0x823c('0xc'));var toCsv=require(_0x823c('0x7'));var querystring=require('querystring');var Papa=require(_0x823c('0xd'));var Redis=require(_0x823c('0xe'));var authService=require(_0x823c('0xf'));var qs=require(_0x823c('0x10'));var as=require(_0x823c('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x823c('0x12'))(_0x823c('0x13'));var utils=require(_0x823c('0x14'));var config=require(_0x823c('0x15'));var licenseUtil=require(_0x823c('0x16'));var db=require(_0x823c('0x17'))['db'];function respondWithStatusCode(_0xb23067,_0x33b13f){_0x33b13f=_0x33b13f||0xcc;return function(_0x196422){if(_0x196422){return _0xb23067['sendStatus'](_0x33b13f);}return _0xb23067['status'](_0x33b13f)[_0x823c('0x18')]();};}function respondWithResult(_0xfde604,_0x2b5cf5){_0x2b5cf5=_0x2b5cf5||0xc8;return function(_0x9a3b35){if(_0x9a3b35){return _0xfde604[_0x823c('0x19')](_0x2b5cf5)['json'](_0x9a3b35);}};}function respondWithFilteredResult(_0x2712e7,_0x43c6c3){return function(_0x548408){if(_0x548408){var _0x131988=typeof _0x43c6c3['offset']===_0x823c('0x1a')&&typeof _0x43c6c3[_0x823c('0x1b')]==='undefined';var _0x41bb2e=_0x548408['count'];var _0x17f9d8=_0x131988?0x0:_0x43c6c3[_0x823c('0x1c')];var _0x2653cd=_0x131988?_0x548408[_0x823c('0x1d')]:_0x43c6c3[_0x823c('0x1c')]+_0x43c6c3[_0x823c('0x1b')];var _0x37da51;if(_0x2653cd>=_0x41bb2e){_0x2653cd=_0x41bb2e;_0x37da51=0xc8;}else{_0x37da51=0xce;}_0x2712e7[_0x823c('0x19')](_0x37da51);return _0x2712e7[_0x823c('0x1e')](_0x823c('0x1f'),_0x17f9d8+'-'+_0x2653cd+'/'+_0x41bb2e)[_0x823c('0x20')](_0x548408);}return null;};}function patchUpdates(_0x1ee4ba){return function(_0x374080){try{jsonpatch[_0x823c('0x21')](_0x374080,_0x1ee4ba,!![]);}catch(_0xce85b1){return BPromise[_0x823c('0x22')](_0xce85b1);}return _0x374080[_0x823c('0x23')]();};}function saveUpdates(_0x33f276,_0x3ca43a){return function(_0x2fdabf){if(_0x2fdabf){return _0x2fdabf[_0x823c('0x24')](_0x33f276)[_0x823c('0x25')](function(_0x2697b5){return _0x2697b5;});}return null;};}function removeEntity(_0x4bf15c,_0x477afc){return function(_0x6a76ef){if(_0x6a76ef){return _0x6a76ef[_0x823c('0x26')]()[_0x823c('0x25')](function(){_0x4bf15c['status'](0xcc)[_0x823c('0x18')]();});}};}function handleEntityNotFound(_0x1cee63,_0x24c9b3){return function(_0xcb3cca){if(!_0xcb3cca){_0x1cee63['sendStatus'](0x194);}return _0xcb3cca;};}function handleError(_0x32f8f6,_0x116560){_0x116560=_0x116560||0x1f4;return function(_0x351aa7){logger[_0x823c('0x27')](_0x351aa7[_0x823c('0x28')]);if(_0x351aa7['name']){delete _0x351aa7[_0x823c('0x29')];}_0x32f8f6[_0x823c('0x19')](_0x116560)[_0x823c('0x2a')](_0x351aa7);};}exports['index']=function(_0x2e7ceb,_0x37a554){var _0x365895={},_0x4e721d={},_0x37ecd3={'count':0x0,'rows':[]};var _0x2ba14d=_[_0x823c('0x2b')](db[_0x823c('0x2c')][_0x823c('0x2d')],function(_0x444502){return{'name':_0x444502[_0x823c('0x2e')],'type':_0x444502[_0x823c('0x2f')][_0x823c('0x30')]};});_0x4e721d['model']=_[_0x823c('0x2b')](_0x2ba14d,'name');_0x4e721d[_0x823c('0x31')]=_[_0x823c('0x32')](_0x2e7ceb[_0x823c('0x31')]);_0x4e721d[_0x823c('0x33')]=_[_0x823c('0x34')](_0x4e721d[_0x823c('0x35')],_0x4e721d[_0x823c('0x31')]);_0x365895[_0x823c('0x36')]=_['intersection'](_0x4e721d['model'],qs['fields'](_0x2e7ceb['query'][_0x823c('0x37')]));_0x365895[_0x823c('0x36')]=_0x365895[_0x823c('0x36')][_0x823c('0x38')]?_0x365895[_0x823c('0x36')]:_0x4e721d[_0x823c('0x35')];if(!_0x2e7ceb['query'][_0x823c('0x39')]('nolimit')){_0x365895['limit']=qs[_0x823c('0x1b')](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x1b')]);_0x365895[_0x823c('0x1c')]=qs['offset'](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x1c')]);}_0x365895['order']=qs[_0x823c('0x3a')](_0x2e7ceb[_0x823c('0x31')][_0x823c('0x3a')]);_0x365895['where']=qs['filters'](_[_0x823c('0x3b')](_0x2e7ceb['query'],_0x4e721d[_0x823c('0x33')]),_0x2ba14d);if(_0x2e7ceb[_0x823c('0x31')]['filter']){_0x365895[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x365895['where'],{'$or':_['map'](_0x2ba14d,function(_0x42e068){if(_0x42e068[_0x823c('0x2f')]!==_0x823c('0x3e')){var _0x1e805b={};_0x1e805b[_0x42e068[_0x823c('0x29')]]={'$like':'%'+_0x2e7ceb['query'][_0x823c('0x3f')]+'%'};return _0x1e805b;}})});}_0x365895=_[_0x823c('0x3d')]({},_0x365895,_0x2e7ceb[_0x823c('0x40')]);var _0x37e5cb={'where':_0x365895[_0x823c('0x3c')]};return db['FreshsalesConfiguration']['count'](_0x37e5cb)['then'](function(_0x11e1de){_0x37ecd3[_0x823c('0x1d')]=_0x11e1de;if(_0x2e7ceb[_0x823c('0x31')][_0x823c('0x41')]){_0x365895[_0x823c('0x42')]=[{'all':!![]}];}return db[_0x823c('0x2c')][_0x823c('0x43')](_0x365895);})['then'](function(_0x4fd867){_0x37ecd3[_0x823c('0x44')]=_0x4fd867;return _0x37ecd3;})[_0x823c('0x25')](respondWithFilteredResult(_0x37a554,_0x365895))['catch'](handleError(_0x37a554,null));};exports[_0x823c('0x45')]=function(_0x1b51df,_0x3a864e){var _0x485ff6={'raw':![],'where':{'id':_0x1b51df[_0x823c('0x46')]['id']}},_0x2c01bd={};_0x2c01bd[_0x823c('0x35')]=_[_0x823c('0x32')](db['FreshsalesConfiguration'][_0x823c('0x2d')]);_0x2c01bd[_0x823c('0x31')]=_[_0x823c('0x32')](_0x1b51df['query']);_0x2c01bd[_0x823c('0x33')]=_[_0x823c('0x34')](_0x2c01bd[_0x823c('0x35')],_0x2c01bd[_0x823c('0x31')]);_0x485ff6[_0x823c('0x36')]=_['intersection'](_0x2c01bd[_0x823c('0x35')],qs[_0x823c('0x37')](_0x1b51df[_0x823c('0x31')][_0x823c('0x37')]));_0x485ff6[_0x823c('0x36')]=_0x485ff6[_0x823c('0x36')][_0x823c('0x38')]?_0x485ff6[_0x823c('0x36')]:_0x2c01bd[_0x823c('0x35')];if(_0x1b51df['query']['includeAll']){_0x485ff6[_0x823c('0x42')]=[{'all':!![]}];}_0x485ff6=_[_0x823c('0x3d')]({},_0x485ff6,_0x1b51df[_0x823c('0x40')]);return db['FreshsalesConfiguration'][_0x823c('0x47')](_0x485ff6)[_0x823c('0x25')](handleEntityNotFound(_0x3a864e,null))[_0x823c('0x25')](respondWithResult(_0x3a864e,null))['catch'](handleError(_0x3a864e,null));};exports[_0x823c('0x48')]=function(_0x5953f9,_0x4d8c3a){return db[_0x823c('0x2c')]['create'](_0x5953f9[_0x823c('0x49')],{})[_0x823c('0x25')](respondWithResult(_0x4d8c3a,0xc9))[_0x823c('0x4a')](handleError(_0x4d8c3a,null));};exports[_0x823c('0x24')]=function(_0x1c715a,_0x101362){if(_0x1c715a[_0x823c('0x49')]['id']){delete _0x1c715a[_0x823c('0x49')]['id'];}return db['FreshsalesConfiguration'][_0x823c('0x47')]({'where':{'id':_0x1c715a[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x101362,null))['then'](saveUpdates(_0x1c715a['body'],null))[_0x823c('0x25')](respondWithResult(_0x101362,null))[_0x823c('0x4a')](handleError(_0x101362,null));};exports[_0x823c('0x26')]=function(_0x235394,_0x509d6e){return db['FreshsalesConfiguration'][_0x823c('0x47')]({'where':{'id':_0x235394[_0x823c('0x46')]['id']}})['then'](handleEntityNotFound(_0x509d6e,null))[_0x823c('0x25')](removeEntity(_0x509d6e,null))[_0x823c('0x4a')](handleError(_0x509d6e,null));};exports['getSubjects']=function(_0x149f73,_0x35433f,_0x1c1275){var _0x3d0b36={};var _0x40b17e={};var _0xfb850b;var _0x1ea73b;return db[_0x823c('0x2c')]['findOne']({'where':{'id':_0x149f73[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x35433f,null))[_0x823c('0x25')](function(_0x2fa464){if(_0x2fa464){_0xfb850b=_0x2fa464;_0x40b17e[_0x823c('0x35')]=_[_0x823c('0x32')](db[_0x823c('0x4b')]['rawAttributes']);_0x40b17e[_0x823c('0x31')]=_['keys'](_0x149f73[_0x823c('0x31')]);_0x40b17e[_0x823c('0x33')]=_[_0x823c('0x34')](_0x40b17e[_0x823c('0x35')],_0x40b17e[_0x823c('0x31')]);_0x3d0b36[_0x823c('0x36')]=_[_0x823c('0x34')](_0x40b17e[_0x823c('0x35')],qs['fields'](_0x149f73['query']['fields']));_0x3d0b36['attributes']=_0x3d0b36[_0x823c('0x36')][_0x823c('0x38')]?_0x3d0b36[_0x823c('0x36')]:_0x40b17e[_0x823c('0x35')];_0x3d0b36['order']=qs['sort'](_0x149f73[_0x823c('0x31')][_0x823c('0x3a')]);_0x3d0b36[_0x823c('0x3c')]=qs['filters'](_[_0x823c('0x3b')](_0x149f73[_0x823c('0x31')],_0x40b17e[_0x823c('0x33')]));if(_0x149f73[_0x823c('0x31')][_0x823c('0x3f')]){_0x3d0b36[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x3d0b36['where'],{'$or':_[_0x823c('0x2b')](_0x3d0b36[_0x823c('0x36')],function(_0x1a678b){var _0x1cbfd={};_0x1cbfd[_0x1a678b]={'$like':'%'+_0x149f73[_0x823c('0x31')][_0x823c('0x3f')]+'%'};return _0x1cbfd;})});}_0x3d0b36=_[_0x823c('0x3d')]({},_0x3d0b36,_0x149f73[_0x823c('0x40')]);return _0xfb850b['getSubjects'](_0x3d0b36);}})['then'](function(_0x439375){if(_0x439375){_0x1ea73b=_0x439375[_0x823c('0x38')];if(!_0x149f73[_0x823c('0x31')]['hasOwnProperty'](_0x823c('0x4c'))){_0x3d0b36['limit']=qs[_0x823c('0x1b')](_0x149f73[_0x823c('0x31')][_0x823c('0x1b')]);_0x3d0b36[_0x823c('0x1c')]=qs[_0x823c('0x1c')](_0x149f73[_0x823c('0x31')][_0x823c('0x1c')]);}return _0xfb850b[_0x823c('0x4d')](_0x3d0b36);}})[_0x823c('0x25')](function(_0x3357f9){if(_0x3357f9){return _0x3357f9?{'count':_0x1ea73b,'rows':_0x3357f9}:null;}})[_0x823c('0x25')](respondWithResult(_0x35433f,null))[_0x823c('0x4a')](handleError(_0x35433f,null));};exports[_0x823c('0x4e')]=function(_0x4dfa59,_0x3aba09,_0x559921){var _0x28f4f6={};var _0x143bef={};var _0x3c5956;var _0x4dd885;return db[_0x823c('0x2c')][_0x823c('0x4f')]({'where':{'id':_0x4dfa59[_0x823c('0x46')]['id']}})[_0x823c('0x25')](handleEntityNotFound(_0x3aba09,null))[_0x823c('0x25')](function(_0x2d761e){if(_0x2d761e){_0x3c5956=_0x2d761e;_0x143bef[_0x823c('0x35')]=_[_0x823c('0x32')](db['FreshsalesField']['rawAttributes']);_0x143bef[_0x823c('0x31')]=_['keys'](_0x4dfa59['query']);_0x143bef['filters']=_[_0x823c('0x34')](_0x143bef[_0x823c('0x35')],_0x143bef[_0x823c('0x31')]);_0x28f4f6[_0x823c('0x36')]=_['intersection'](_0x143bef[_0x823c('0x35')],qs['fields'](_0x4dfa59[_0x823c('0x31')]['fields']));_0x28f4f6[_0x823c('0x36')]=_0x28f4f6['attributes'][_0x823c('0x38')]?_0x28f4f6[_0x823c('0x36')]:_0x143bef[_0x823c('0x35')];_0x28f4f6[_0x823c('0x50')]=qs['sort'](_0x4dfa59['query']['sort']);_0x28f4f6['where']=qs[_0x823c('0x33')](_['pick'](_0x4dfa59[_0x823c('0x31')],_0x143bef[_0x823c('0x33')]));if(_0x4dfa59[_0x823c('0x31')][_0x823c('0x3f')]){_0x28f4f6[_0x823c('0x3c')]=_[_0x823c('0x3d')](_0x28f4f6['where'],{'$or':_[_0x823c('0x2b')](_0x28f4f6[_0x823c('0x36')],function(_0xc95bc4){var _0x2270e1={};_0x2270e1[_0xc95bc4]={'$like':'%'+_0x4dfa59[_0x823c('0x31')][_0x823c('0x3f')]+'%'};return _0x2270e1;})});}_0x28f4f6=_[_0x823c('0x3d')]({},_0x28f4f6,_0x4dfa59[_0x823c('0x40')]);return _0x3c5956[_0x823c('0x4e')](_0x28f4f6);}})['then'](function(_0x45d138){if(_0x45d138){_0x4dd885=_0x45d138[_0x823c('0x38')];if(!_0x4dfa59['query'][_0x823c('0x39')](_0x823c('0x4c'))){_0x28f4f6[_0x823c('0x1b')]=qs[_0x823c('0x1b')](_0x4dfa59[_0x823c('0x31')]['limit']);_0x28f4f6[_0x823c('0x1c')]=qs['offset'](_0x4dfa59[_0x823c('0x31')][_0x823c('0x1c')]);}return _0x3c5956['getDescriptions'](_0x28f4f6);}})['then'](function(_0x2db3c4){if(_0x2db3c4){return _0x2db3c4?{'count':_0x4dd885,'rows':_0x2db3c4}:null;}})[_0x823c('0x25')](respondWithResult(_0x3aba09,null))[_0x823c('0x4a')](handleError(_0x3aba09,null));};exports[_0x823c('0x51')]=function(_0xd8e51a,_0x560abd,_0x50ca94){var _0x59c688={};var _0x2ff5f4={};var _0x5027fa;var _0x42d0e2;return db[_0x823c('0x2c')][_0x823c('0x4f')]({'where':{'id':_0xd8e51a['params']['id']}})['then'](handleEntityNotFound(_0x560abd,null))[_0x823c('0x25')](function(_0x5a7522){if(_0x5a7522){_0x5027fa=_0x5a7522;_0x2ff5f4[_0x823c('0x35')]=_['keys'](db[_0x823c('0x4b')]['rawAttributes']);_0x2ff5f4[_0x823c('0x31')]=_[_0x823c('0x32')](_0xd8e51a['query']);_0x2ff5f4[_0x823c('0x33')]=_[_0x823c('0x34')](_0x2ff5f4[_0x823c('0x35')],_0x2ff5f4[_0x823c('0x31')]);_0x59c688[_0x823c('0x36')]=_[_0x823c('0x34')](_0x2ff5f4['model'],qs[_0x823c('0x37')](_0xd8e51a[_0x823c('0x31')][_0x823c('0x37')]));_0x59c688[_0x823c('0x36')]=_0x59c688[_0x823c('0x36')]['length']?_0x59c688[_0x823c('0x36')]:_0x2ff5f4[_0x823c('0x35')];_0x59c688['order']=qs[_0x823c('0x3a')](_0xd8e51a['query'][_0x823c('0x3a')]);_0x59c688['where']=qs[_0x823c('0x33')](_['pick'](_0xd8e51a[_0x823c('0x31')],_0x2ff5f4['filters']));if(_0xd8e51a[_0x823c('0x31')][_0x823c('0x3f')]){_0x59c688['where']=_[_0x823c('0x3d')](_0x59c688[_0x823c('0x3c')],{'$or':_[_0x823c('0x2b')](_0x59c688[_0x823c('0x36')],function(_0x58f132){var _0x3338b7={};_0x3338b7[_0x58f132]={'$like':'%'+_0xd8e51a['query']['filter']+'%'};return _0x3338b7;})});}_0x59c688=_[_0x823c('0x3d')]({},_0x59c688,_0xd8e51a['options']);return _0x5027fa[_0x823c('0x51')](_0x59c688);}})[_0x823c('0x25')](function(_0x5e43f7){if(_0x5e43f7){_0x42d0e2=_0x5e43f7[_0x823c('0x38')];if(!_0xd8e51a[_0x823c('0x31')]['hasOwnProperty'](_0x823c('0x4c'))){_0x59c688[_0x823c('0x1b')]=qs[_0x823c('0x1b')](_0xd8e51a[_0x823c('0x31')][_0x823c('0x1b')]);_0x59c688[_0x823c('0x1c')]=qs[_0x823c('0x1c')](_0xd8e51a['query'][_0x823c('0x1c')]);}return _0x5027fa[_0x823c('0x51')](_0x59c688);}})[_0x823c('0x25')](function(_0x428fd9){if(_0x428fd9){return _0x428fd9?{'count':_0x42d0e2,'rows':_0x428fd9}:null;}})[_0x823c('0x25')](respondWithResult(_0x560abd,null))[_0x823c('0x4a')](handleError(_0x560abd,null));};
\ No newline at end of file
index 6a584b2..9b9daa6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84f7=['request-promise','path','rimraf','./intFreshsalesConfiguration.attributes','exports','define','FreshsalesConfiguration','util','../../config/logger','api','moment','bluebird'];(function(_0x11cbb5,_0x390441){var _0x54b8d3=function(_0x162ca2){while(--_0x162ca2){_0x11cbb5['push'](_0x11cbb5['shift']());}};_0x54b8d3(++_0x390441);}(_0x84f7,0x11b));var _0x784f=function(_0x49c057,_0xc808ed){_0x49c057=_0x49c057-0x0;var _0xd8f0e6=_0x84f7[_0x49c057];return _0xd8f0e6;};'use strict';var _=require('lodash');var util=require(_0x784f('0x0'));var logger=require(_0x784f('0x1'))(_0x784f('0x2'));var moment=require(_0x784f('0x3'));var BPromise=require(_0x784f('0x4'));var rp=require(_0x784f('0x5'));var fs=require('fs');var path=require(_0x784f('0x6'));var rimraf=require(_0x784f('0x7'));var config=require('../../config/environment');var attributes=require(_0x784f('0x8'));module[_0x784f('0x9')]=function(_0x493641,_0x555fc8){return _0x493641[_0x784f('0xa')](_0x784f('0xb'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa87d=['moment','bluebird','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','define','FreshsalesConfiguration','lodash','util','../../config/logger'];(function(_0x3ba5cb,_0x496e4a){var _0x4d31a6=function(_0x19ac0b){while(--_0x19ac0b){_0x3ba5cb['push'](_0x3ba5cb['shift']());}};_0x4d31a6(++_0x496e4a);}(_0xa87d,0x197));var _0xda87=function(_0x28a83c,_0x180fc5){_0x28a83c=_0x28a83c-0x0;var _0x53c01c=_0xa87d[_0x28a83c];return _0x53c01c;};'use strict';var _=require(_0xda87('0x0'));var util=require(_0xda87('0x1'));var logger=require(_0xda87('0x2'))('api');var moment=require(_0xda87('0x3'));var BPromise=require(_0xda87('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xda87('0x5'));var config=require(_0xda87('0x6'));var attributes=require(_0xda87('0x7'));module['exports']=function(_0x16d8b6,_0x31b5e8){return _0x16d8b6[_0xda87('0x8')](_0xda87('0x9'),attributes,{'tableName':'int_freshsales_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ed7005..54b138c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49c4=['then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x49c4,0x114));var _0x449c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x49c4[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x449c('0x0'));var util=require(_0x449c('0x1'));var moment=require('moment');var BPromise=require(_0x449c('0x2'));var rs=require(_0x449c('0x3'));var fs=require('fs');var Redis=require(_0x449c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x449c('0x5'));var logger=require(_0x449c('0x6'))(_0x449c('0x7'));var config=require(_0x449c('0x8'));var jayson=require(_0x449c('0x9'));var client=jayson[_0x449c('0xa')][_0x449c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x72c48f,_0x4aeabf,_0x5d7702){return new BPromise(function(_0x542e9a,_0x243724){return client['request'](_0x72c48f,_0x5d7702)[_0x449c('0xc')](function(_0x4f9e4a){logger[_0x449c('0xd')](_0x449c('0xe'),_0x4aeabf,_0x449c('0xf'));logger[_0x449c('0x10')](_0x449c('0x11'),_0x4aeabf,_0x449c('0xf'),JSON[_0x449c('0x12')](_0x4f9e4a));if(_0x4f9e4a[_0x449c('0x13')]){if(_0x4f9e4a[_0x449c('0x13')][_0x449c('0x14')]===0x1f4){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x4aeabf,_0x4f9e4a[_0x449c('0x13')]['message']);return _0x243724(_0x4f9e4a[_0x449c('0x13')][_0x449c('0x15')]);}logger[_0x449c('0x13')](_0x449c('0xe'),_0x4aeabf,_0x4f9e4a[_0x449c('0x13')]['message']);return _0x542e9a(_0x4f9e4a[_0x449c('0x13')][_0x449c('0x15')]);}else{logger[_0x449c('0xd')](_0x449c('0xe'),_0x4aeabf,_0x449c('0xf'));_0x542e9a(_0x4f9e4a[_0x449c('0x16')][_0x449c('0x15')]);}})[_0x449c('0x17')](function(_0x145ab7){logger[_0x449c('0x13')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x4aeabf,_0x145ab7);_0x243724(_0x145ab7);});});}
\ No newline at end of file
+var _0xd3f2=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x500462,_0x476ff3){var _0x56f775=function(_0x58988a){while(--_0x58988a){_0x500462['push'](_0x500462['shift']());}};_0x56f775(++_0x476ff3);}(_0xd3f2,0x182));var _0x2d3f=function(_0x3cac8c,_0x33413e){_0x3cac8c=_0x3cac8c-0x0;var _0x2dd9a8=_0xd3f2[_0x3cac8c];return _0x2dd9a8;};'use strict';var _=require('lodash');var util=require(_0x2d3f('0x0'));var moment=require(_0x2d3f('0x1'));var BPromise=require(_0x2d3f('0x2'));var rs=require(_0x2d3f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2d3f('0x4'))['db'];var utils=require(_0x2d3f('0x5'));var logger=require(_0x2d3f('0x6'))(_0x2d3f('0x7'));var config=require(_0x2d3f('0x8'));var jayson=require(_0x2d3f('0x9'));var client=jayson[_0x2d3f('0xa')][_0x2d3f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x48c549,_0x1cfa7e,_0x155670){return new BPromise(function(_0x590665,_0x4c9295){return client['request'](_0x48c549,_0x155670)['then'](function(_0x4e2a58){logger[_0x2d3f('0xc')](_0x2d3f('0xd'),_0x1cfa7e,_0x2d3f('0xe'));logger[_0x2d3f('0xf')](_0x2d3f('0x10'),_0x1cfa7e,_0x2d3f('0xe'),JSON[_0x2d3f('0x11')](_0x4e2a58));if(_0x4e2a58[_0x2d3f('0x12')]){if(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x13')]===0x1f4){logger['error'](_0x2d3f('0xd'),_0x1cfa7e,_0x4e2a58['error'][_0x2d3f('0x14')]);return _0x4c9295(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);}logger[_0x2d3f('0x12')](_0x2d3f('0xd'),_0x1cfa7e,_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);return _0x590665(_0x4e2a58[_0x2d3f('0x12')][_0x2d3f('0x14')]);}else{logger[_0x2d3f('0xc')](_0x2d3f('0xd'),_0x1cfa7e,_0x2d3f('0xe'));_0x590665(_0x4e2a58[_0x2d3f('0x15')][_0x2d3f('0x14')]);}})[_0x2d3f('0x16')](function(_0x5e9ab3){logger[_0x2d3f('0x12')](_0x2d3f('0xd'),_0x1cfa7e,_0x5e9ab3);_0x4c9295(_0x5e9ab3);});});}
\ No newline at end of file
index 27166d7..d1391a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f94=['exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','post','put','update','delete'];(function(_0x46de08,_0x350a03){var _0x11dcff=function(_0x213b4d){while(--_0x213b4d){_0x46de08['push'](_0x46de08['shift']());}};_0x11dcff(++_0x350a03);}(_0x9f94,0x1e7));var _0x49f9=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x9f94[_0x4a9fb1];return _0x348672;};'use strict';var multer=require(_0x49f9('0x0'));var util=require(_0x49f9('0x1'));var path=require(_0x49f9('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x49f9('0x3')]();var fs_extra=require(_0x49f9('0x4'));var auth=require(_0x49f9('0x5'));var interaction=require(_0x49f9('0x6'));var config=require(_0x49f9('0x7'));var controller=require('./intFreshsalesField.controller');router[_0x49f9('0x8')]('/',auth[_0x49f9('0x9')](),controller[_0x49f9('0xa')]);router[_0x49f9('0x8')](_0x49f9('0xb'),auth[_0x49f9('0x9')](),controller[_0x49f9('0xc')]);router[_0x49f9('0xd')]('/',auth['isAuthenticated'](),controller['create']);router[_0x49f9('0xe')]('/:id',auth[_0x49f9('0x9')](),controller[_0x49f9('0xf')]);router[_0x49f9('0x10')]('/:id',auth[_0x49f9('0x9')](),controller['destroy']);module[_0x49f9('0x11')]=router;
\ No newline at end of file
+var _0x2621=['/:id','show','create','put','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','get','isAuthenticated','index'];(function(_0x3d55a4,_0x57d61b){var _0x38c5c4=function(_0x1e0daa){while(--_0x1e0daa){_0x3d55a4['push'](_0x3d55a4['shift']());}};_0x38c5c4(++_0x57d61b);}(_0x2621,0x1d2));var _0x1262=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2621[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x1262('0x0'));var util=require(_0x1262('0x1'));var path=require(_0x1262('0x2'));var timeout=require(_0x1262('0x3'));var express=require(_0x1262('0x4'));var router=express[_0x1262('0x5')]();var fs_extra=require(_0x1262('0x6'));var auth=require(_0x1262('0x7'));var interaction=require(_0x1262('0x8'));var config=require(_0x1262('0x9'));var controller=require(_0x1262('0xa'));router[_0x1262('0xb')]('/',auth[_0x1262('0xc')](),controller[_0x1262('0xd')]);router['get'](_0x1262('0xe'),auth['isAuthenticated'](),controller[_0x1262('0xf')]);router['post']('/',auth[_0x1262('0xc')](),controller[_0x1262('0x10')]);router[_0x1262('0x11')]('/:id',auth[_0x1262('0xc')](),controller['update']);router[_0x1262('0x12')](_0x1262('0xe'),auth['isAuthenticated'](),controller['destroy']);module[_0x1262('0x13')]=router;
\ No newline at end of file
index 3ef5bc8..32a338a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7da6=['customVariable','BOOLEAN','sequelize','exports','ENUM','variable','keyValue','picklist','string','STRING'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x7da6,0x19c));var _0x67da=function(_0x39772f,_0x5605cb){_0x39772f=_0x39772f-0x0;var _0xc9edbf=_0x7da6[_0x39772f];return _0xc9edbf;};'use strict';var Sequelize=require(_0x67da('0x0'));module[_0x67da('0x1')]={'type':{'type':Sequelize[_0x67da('0x2')]('string',_0x67da('0x3'),'customVariable',_0x67da('0x4'),_0x67da('0x5')),'defaultValue':_0x67da('0x6')},'content':{'type':Sequelize[_0x67da('0x7')]},'key':{'type':Sequelize[_0x67da('0x7')]},'keyType':{'type':Sequelize[_0x67da('0x2')](_0x67da('0x6'),_0x67da('0x3'),_0x67da('0x8'))},'keyContent':{'type':Sequelize[_0x67da('0x7')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x67da('0x7')]},'customField':{'type':Sequelize[_0x67da('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8cf7=['customVariable','STRING','BOOLEAN','sequelize','exports','string','variable'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x8cf7,0x137));var _0x78cf=function(_0x473ba9,_0x50dd88){_0x473ba9=_0x473ba9-0x0;var _0x3d3255=_0x8cf7[_0x473ba9];return _0x3d3255;};'use strict';var Sequelize=require(_0x78cf('0x0'));module[_0x78cf('0x1')]={'type':{'type':Sequelize['ENUM'](_0x78cf('0x2'),_0x78cf('0x3'),_0x78cf('0x4'),'keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x78cf('0x5')]},'key':{'type':Sequelize[_0x78cf('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0x78cf('0x2'),_0x78cf('0x3'),_0x78cf('0x4'))},'keyContent':{'type':Sequelize[_0x78cf('0x5')]},'idField':{'type':Sequelize[_0x78cf('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x78cf('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x78cf('0x5')]}};
\ No newline at end of file
index 5320e61..85ceb25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58e0=['request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','fields','length','include','find','create','body','eml-format','zip-dir','fast-json-patch'];(function(_0x28f4cb,_0x17286a){var _0x33c790=function(_0x390d67){while(--_0x390d67){_0x28f4cb['push'](_0x28f4cb['shift']());}};_0x33c790(++_0x17286a);}(_0x58e0,0x129));var _0x058e=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0x58e0[_0x1a7846];return _0x48049;};'use strict';var emlformat=require(_0x058e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x058e('0x1'));var jsonpatch=require(_0x058e('0x2'));var rp=require(_0x058e('0x3'));var moment=require(_0x058e('0x4'));var BPromise=require(_0x058e('0x5'));var Mustache=require(_0x058e('0x6'));var util=require('util');var path=require('path');var sox=require(_0x058e('0x7'));var csv=require(_0x058e('0x8'));var ejs=require(_0x058e('0x9'));var fs=require('fs');var fs_extra=require(_0x058e('0xa'));var _=require(_0x058e('0xb'));var squel=require('squel');var crypto=require(_0x058e('0xc'));var jsforce=require(_0x058e('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x058e('0xe'));var Papa=require(_0x058e('0xf'));var Redis=require(_0x058e('0x10'));var authService=require(_0x058e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x058e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x058e('0x13'))(_0x058e('0x14'));var utils=require(_0x058e('0x15'));var config=require(_0x058e('0x16'));var licenseUtil=require(_0x058e('0x17'));var db=require(_0x058e('0x18'))['db'];function respondWithStatusCode(_0x478965,_0x5992fd){_0x5992fd=_0x5992fd||0xcc;return function(_0x38f15f){if(_0x38f15f){return _0x478965[_0x058e('0x19')](_0x5992fd);}return _0x478965[_0x058e('0x1a')](_0x5992fd)[_0x058e('0x1b')]();};}function respondWithResult(_0x32a9d9,_0x25194c){_0x25194c=_0x25194c||0xc8;return function(_0x5d6a6d){if(_0x5d6a6d){return _0x32a9d9['status'](_0x25194c)[_0x058e('0x1c')](_0x5d6a6d);}};}function respondWithFilteredResult(_0x395a6d,_0xad8032){return function(_0xf7f7bf){if(_0xf7f7bf){var _0x4ed4f5=typeof _0xad8032[_0x058e('0x1d')]===_0x058e('0x1e')&&typeof _0xad8032[_0x058e('0x1f')]===_0x058e('0x1e');var _0x48bb41=_0xf7f7bf[_0x058e('0x20')];var _0x3d0dc5=_0x4ed4f5?0x0:_0xad8032['offset'];var _0x13a01c=_0x4ed4f5?_0xf7f7bf['count']:_0xad8032['offset']+_0xad8032['limit'];var _0x5f0e66;if(_0x13a01c>=_0x48bb41){_0x13a01c=_0x48bb41;_0x5f0e66=0xc8;}else{_0x5f0e66=0xce;}_0x395a6d[_0x058e('0x1a')](_0x5f0e66);return _0x395a6d[_0x058e('0x21')]('Content-Range',_0x3d0dc5+'-'+_0x13a01c+'/'+_0x48bb41)[_0x058e('0x1c')](_0xf7f7bf);}return null;};}function patchUpdates(_0x5cfded){return function(_0x8cee1a){try{jsonpatch[_0x058e('0x22')](_0x8cee1a,_0x5cfded,!![]);}catch(_0x3dd1fa){return BPromise[_0x058e('0x23')](_0x3dd1fa);}return _0x8cee1a[_0x058e('0x24')]();};}function saveUpdates(_0x3e3b68,_0x20419){return function(_0x10e2dd){if(_0x10e2dd){return _0x10e2dd[_0x058e('0x25')](_0x3e3b68)[_0x058e('0x26')](function(_0x408954){return _0x408954;});}return null;};}function removeEntity(_0x5cce5e,_0x27d083){return function(_0x29d99a){if(_0x29d99a){return _0x29d99a[_0x058e('0x27')]()[_0x058e('0x26')](function(){_0x5cce5e[_0x058e('0x1a')](0xcc)[_0x058e('0x1b')]();});}};}function handleEntityNotFound(_0xdfcff6,_0x337917){return function(_0x345dbe){if(!_0x345dbe){_0xdfcff6[_0x058e('0x19')](0x194);}return _0x345dbe;};}function handleError(_0x347200,_0x4de29e){_0x4de29e=_0x4de29e||0x1f4;return function(_0x14556a){logger[_0x058e('0x28')](_0x14556a[_0x058e('0x29')]);if(_0x14556a[_0x058e('0x2a')]){delete _0x14556a[_0x058e('0x2a')];}_0x347200[_0x058e('0x1a')](_0x4de29e)[_0x058e('0x2b')](_0x14556a);};}exports['index']=function(_0x1a73d3,_0x2f31cc){var _0x33e634={},_0x58dafd={},_0x25e76a={'count':0x0,'rows':[]};var _0x1348fc=_[_0x058e('0x2c')](db[_0x058e('0x2d')][_0x058e('0x2e')],function(_0x226f20){return{'name':_0x226f20[_0x058e('0x2f')],'type':_0x226f20[_0x058e('0x30')]['key']};});_0x58dafd[_0x058e('0x31')]=_['map'](_0x1348fc,'name');_0x58dafd[_0x058e('0x32')]=_[_0x058e('0x33')](_0x1a73d3['query']);_0x58dafd[_0x058e('0x34')]=_[_0x058e('0x35')](_0x58dafd[_0x058e('0x31')],_0x58dafd['query']);_0x33e634[_0x058e('0x36')]=_[_0x058e('0x35')](_0x58dafd['model'],qs['fields'](_0x1a73d3[_0x058e('0x32')]['fields']));_0x33e634[_0x058e('0x36')]=_0x33e634[_0x058e('0x36')]['length']?_0x33e634[_0x058e('0x36')]:_0x58dafd[_0x058e('0x31')];if(!_0x1a73d3[_0x058e('0x32')]['hasOwnProperty'](_0x058e('0x37'))){_0x33e634['limit']=qs[_0x058e('0x1f')](_0x1a73d3['query'][_0x058e('0x1f')]);_0x33e634[_0x058e('0x1d')]=qs[_0x058e('0x1d')](_0x1a73d3[_0x058e('0x32')][_0x058e('0x1d')]);}_0x33e634['order']=qs['sort'](_0x1a73d3[_0x058e('0x32')][_0x058e('0x38')]);_0x33e634[_0x058e('0x39')]=qs[_0x058e('0x34')](_[_0x058e('0x3a')](_0x1a73d3[_0x058e('0x32')],_0x58dafd['filters']),_0x1348fc);if(_0x1a73d3[_0x058e('0x32')][_0x058e('0x3b')]){_0x33e634['where']=_[_0x058e('0x3c')](_0x33e634[_0x058e('0x39')],{'$or':_[_0x058e('0x2c')](_0x1348fc,function(_0x3052ab){if(_0x3052ab['type']!==_0x058e('0x3d')){var _0x405db3={};_0x405db3[_0x3052ab[_0x058e('0x2a')]]={'$like':'%'+_0x1a73d3[_0x058e('0x32')][_0x058e('0x3b')]+'%'};return _0x405db3;}})});}_0x33e634=_[_0x058e('0x3c')]({},_0x33e634,_0x1a73d3[_0x058e('0x3e')]);var _0x15d4f8={'where':_0x33e634[_0x058e('0x39')]};return db['FreshsalesField'][_0x058e('0x20')](_0x15d4f8)[_0x058e('0x26')](function(_0x2931c6){_0x25e76a[_0x058e('0x20')]=_0x2931c6;if(_0x1a73d3[_0x058e('0x32')][_0x058e('0x3f')]){_0x33e634['include']=[{'all':!![]}];}return db[_0x058e('0x2d')][_0x058e('0x40')](_0x33e634);})[_0x058e('0x26')](function(_0x1ec247){_0x25e76a[_0x058e('0x41')]=_0x1ec247;return _0x25e76a;})[_0x058e('0x26')](respondWithFilteredResult(_0x2f31cc,_0x33e634))[_0x058e('0x42')](handleError(_0x2f31cc,null));};exports[_0x058e('0x43')]=function(_0x269bcb,_0x425144){var _0x447307={'raw':!![],'where':{'id':_0x269bcb[_0x058e('0x44')]['id']}},_0x895e31={};_0x895e31['model']=_[_0x058e('0x33')](db['FreshsalesField']['rawAttributes']);_0x895e31[_0x058e('0x32')]=_[_0x058e('0x33')](_0x269bcb[_0x058e('0x32')]);_0x895e31[_0x058e('0x34')]=_[_0x058e('0x35')](_0x895e31[_0x058e('0x31')],_0x895e31['query']);_0x447307[_0x058e('0x36')]=_[_0x058e('0x35')](_0x895e31[_0x058e('0x31')],qs[_0x058e('0x45')](_0x269bcb['query'][_0x058e('0x45')]));_0x447307[_0x058e('0x36')]=_0x447307[_0x058e('0x36')][_0x058e('0x46')]?_0x447307[_0x058e('0x36')]:_0x895e31[_0x058e('0x31')];if(_0x269bcb[_0x058e('0x32')][_0x058e('0x3f')]){_0x447307[_0x058e('0x47')]=[{'all':!![]}];}_0x447307=_[_0x058e('0x3c')]({},_0x447307,_0x269bcb[_0x058e('0x3e')]);return db[_0x058e('0x2d')][_0x058e('0x48')](_0x447307)[_0x058e('0x26')](handleEntityNotFound(_0x425144,null))['then'](respondWithResult(_0x425144,null))[_0x058e('0x42')](handleError(_0x425144,null));};exports[_0x058e('0x49')]=function(_0x153df5,_0x37cadf){return db[_0x058e('0x2d')][_0x058e('0x49')](_0x153df5[_0x058e('0x4a')],{})[_0x058e('0x26')](respondWithResult(_0x37cadf,0xc9))[_0x058e('0x42')](handleError(_0x37cadf,null));};exports['update']=function(_0x1e6ca4,_0x44435b){if(_0x1e6ca4[_0x058e('0x4a')]['id']){delete _0x1e6ca4[_0x058e('0x4a')]['id'];}return db[_0x058e('0x2d')][_0x058e('0x48')]({'where':{'id':_0x1e6ca4[_0x058e('0x44')]['id']}})['then'](handleEntityNotFound(_0x44435b,null))[_0x058e('0x26')](saveUpdates(_0x1e6ca4[_0x058e('0x4a')],null))[_0x058e('0x26')](respondWithResult(_0x44435b,null))[_0x058e('0x42')](handleError(_0x44435b,null));};exports['destroy']=function(_0x153424,_0x3af0e6){return db[_0x058e('0x2d')][_0x058e('0x48')]({'where':{'id':_0x153424[_0x058e('0x44')]['id']}})[_0x058e('0x26')](handleEntityNotFound(_0x3af0e6,null))[_0x058e('0x26')](removeEntity(_0x3af0e6,null))['catch'](handleError(_0x3af0e6,null));};
\ No newline at end of file
+var _0x1cdb=['../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','name','FreshsalesField','rawAttributes','fieldName','type','model','map','query','filters','intersection','fields','attributes','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','findAll','show','keys','includeAll','include','find','catch','create','body','params','eml-format','rimraf','request-promise','moment','bluebird','mustache','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1cdb,0x1cf));var _0xb1cd=function(_0x277dd3,_0x402364){_0x277dd3=_0x277dd3-0x0;var _0xea7c73=_0x1cdb[_0x277dd3];return _0xea7c73;};'use strict';var emlformat=require(_0xb1cd('0x0'));var rimraf=require(_0xb1cd('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb1cd('0x2'));var moment=require(_0xb1cd('0x3'));var BPromise=require(_0xb1cd('0x4'));var Mustache=require(_0xb1cd('0x5'));var util=require('util');var path=require(_0xb1cd('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb1cd('0x7'));var fs=require('fs');var fs_extra=require(_0xb1cd('0x8'));var _=require(_0xb1cd('0x9'));var squel=require(_0xb1cd('0xa'));var crypto=require('crypto');var jsforce=require(_0xb1cd('0xb'));var deskjs=require(_0xb1cd('0xc'));var toCsv=require(_0xb1cd('0xd'));var querystring=require(_0xb1cd('0xe'));var Papa=require(_0xb1cd('0xf'));var Redis=require('ioredis');var authService=require(_0xb1cd('0x10'));var qs=require(_0xb1cd('0x11'));var as=require(_0xb1cd('0x12'));var hardwareService=require(_0xb1cd('0x13'));var logger=require(_0xb1cd('0x14'))(_0xb1cd('0x15'));var utils=require('../../config/utils');var config=require(_0xb1cd('0x16'));var licenseUtil=require(_0xb1cd('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x106984,_0x5a768c){_0x5a768c=_0x5a768c||0xcc;return function(_0x27725f){if(_0x27725f){return _0x106984[_0xb1cd('0x18')](_0x5a768c);}return _0x106984[_0xb1cd('0x19')](_0x5a768c)[_0xb1cd('0x1a')]();};}function respondWithResult(_0x394ece,_0x473754){_0x473754=_0x473754||0xc8;return function(_0x1d5f57){if(_0x1d5f57){return _0x394ece['status'](_0x473754)[_0xb1cd('0x1b')](_0x1d5f57);}};}function respondWithFilteredResult(_0x2be995,_0x38a663){return function(_0x213194){if(_0x213194){var _0xd79a09=typeof _0x38a663[_0xb1cd('0x1c')]==='undefined'&&typeof _0x38a663[_0xb1cd('0x1d')]==='undefined';var _0x59bfc3=_0x213194[_0xb1cd('0x1e')];var _0x4a1805=_0xd79a09?0x0:_0x38a663[_0xb1cd('0x1c')];var _0x81c5c4=_0xd79a09?_0x213194[_0xb1cd('0x1e')]:_0x38a663[_0xb1cd('0x1c')]+_0x38a663[_0xb1cd('0x1d')];var _0xd9ad21;if(_0x81c5c4>=_0x59bfc3){_0x81c5c4=_0x59bfc3;_0xd9ad21=0xc8;}else{_0xd9ad21=0xce;}_0x2be995['status'](_0xd9ad21);return _0x2be995[_0xb1cd('0x1f')](_0xb1cd('0x20'),_0x4a1805+'-'+_0x81c5c4+'/'+_0x59bfc3)[_0xb1cd('0x1b')](_0x213194);}return null;};}function patchUpdates(_0x2c73f1){return function(_0x15998e){try{jsonpatch['apply'](_0x15998e,_0x2c73f1,!![]);}catch(_0x51cc6a){return BPromise[_0xb1cd('0x21')](_0x51cc6a);}return _0x15998e[_0xb1cd('0x22')]();};}function saveUpdates(_0x19ed06,_0x3b7185){return function(_0x56361c){if(_0x56361c){return _0x56361c[_0xb1cd('0x23')](_0x19ed06)[_0xb1cd('0x24')](function(_0xd9362f){return _0xd9362f;});}return null;};}function removeEntity(_0x15ab11,_0x3f0905){return function(_0x3d052e){if(_0x3d052e){return _0x3d052e[_0xb1cd('0x25')]()[_0xb1cd('0x24')](function(){_0x15ab11[_0xb1cd('0x19')](0xcc)[_0xb1cd('0x1a')]();});}};}function handleEntityNotFound(_0x4139d8,_0x2e79f3){return function(_0x3f7bfb){if(!_0x3f7bfb){_0x4139d8[_0xb1cd('0x18')](0x194);}return _0x3f7bfb;};}function handleError(_0xb65449,_0x55cd4a){_0x55cd4a=_0x55cd4a||0x1f4;return function(_0x30674d){logger['error'](_0x30674d['stack']);if(_0x30674d[_0xb1cd('0x26')]){delete _0x30674d[_0xb1cd('0x26')];}_0xb65449[_0xb1cd('0x19')](_0x55cd4a)['send'](_0x30674d);};}exports['index']=function(_0x1f21e8,_0x2871ca){var _0x56ca52={},_0x273953={},_0x30aaf2={'count':0x0,'rows':[]};var _0x31d802=_['map'](db[_0xb1cd('0x27')][_0xb1cd('0x28')],function(_0x152d83){return{'name':_0x152d83[_0xb1cd('0x29')],'type':_0x152d83[_0xb1cd('0x2a')]['key']};});_0x273953[_0xb1cd('0x2b')]=_[_0xb1cd('0x2c')](_0x31d802,'name');_0x273953[_0xb1cd('0x2d')]=_['keys'](_0x1f21e8[_0xb1cd('0x2d')]);_0x273953[_0xb1cd('0x2e')]=_[_0xb1cd('0x2f')](_0x273953['model'],_0x273953[_0xb1cd('0x2d')]);_0x56ca52['attributes']=_['intersection'](_0x273953['model'],qs[_0xb1cd('0x30')](_0x1f21e8[_0xb1cd('0x2d')]['fields']));_0x56ca52[_0xb1cd('0x31')]=_0x56ca52[_0xb1cd('0x31')]['length']?_0x56ca52[_0xb1cd('0x31')]:_0x273953[_0xb1cd('0x2b')];if(!_0x1f21e8[_0xb1cd('0x2d')]['hasOwnProperty'](_0xb1cd('0x32'))){_0x56ca52['limit']=qs[_0xb1cd('0x1d')](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x1d')]);_0x56ca52[_0xb1cd('0x1c')]=qs['offset'](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x1c')]);}_0x56ca52[_0xb1cd('0x33')]=qs['sort'](_0x1f21e8[_0xb1cd('0x2d')][_0xb1cd('0x34')]);_0x56ca52['where']=qs[_0xb1cd('0x2e')](_[_0xb1cd('0x35')](_0x1f21e8[_0xb1cd('0x2d')],_0x273953['filters']),_0x31d802);if(_0x1f21e8['query'][_0xb1cd('0x36')]){_0x56ca52['where']=_['merge'](_0x56ca52[_0xb1cd('0x37')],{'$or':_['map'](_0x31d802,function(_0x3bef6d){if(_0x3bef6d[_0xb1cd('0x2a')]!==_0xb1cd('0x38')){var _0x97f0f1={};_0x97f0f1[_0x3bef6d[_0xb1cd('0x26')]]={'$like':'%'+_0x1f21e8['query'][_0xb1cd('0x36')]+'%'};return _0x97f0f1;}})});}_0x56ca52=_[_0xb1cd('0x39')]({},_0x56ca52,_0x1f21e8[_0xb1cd('0x3a')]);var _0x3a2cdb={'where':_0x56ca52['where']};return db[_0xb1cd('0x27')][_0xb1cd('0x1e')](_0x3a2cdb)[_0xb1cd('0x24')](function(_0x2156e9){_0x30aaf2[_0xb1cd('0x1e')]=_0x2156e9;if(_0x1f21e8['query']['includeAll']){_0x56ca52['include']=[{'all':!![]}];}return db['FreshsalesField'][_0xb1cd('0x3b')](_0x56ca52);})[_0xb1cd('0x24')](function(_0x167d26){_0x30aaf2['rows']=_0x167d26;return _0x30aaf2;})[_0xb1cd('0x24')](respondWithFilteredResult(_0x2871ca,_0x56ca52))['catch'](handleError(_0x2871ca,null));};exports[_0xb1cd('0x3c')]=function(_0x3003bc,_0x1f8b80){var _0x488cd7={'raw':!![],'where':{'id':_0x3003bc['params']['id']}},_0x51c598={};_0x51c598['model']=_[_0xb1cd('0x3d')](db[_0xb1cd('0x27')][_0xb1cd('0x28')]);_0x51c598['query']=_[_0xb1cd('0x3d')](_0x3003bc['query']);_0x51c598[_0xb1cd('0x2e')]=_[_0xb1cd('0x2f')](_0x51c598['model'],_0x51c598[_0xb1cd('0x2d')]);_0x488cd7[_0xb1cd('0x31')]=_[_0xb1cd('0x2f')](_0x51c598['model'],qs['fields'](_0x3003bc['query']['fields']));_0x488cd7[_0xb1cd('0x31')]=_0x488cd7[_0xb1cd('0x31')]['length']?_0x488cd7[_0xb1cd('0x31')]:_0x51c598[_0xb1cd('0x2b')];if(_0x3003bc[_0xb1cd('0x2d')][_0xb1cd('0x3e')]){_0x488cd7[_0xb1cd('0x3f')]=[{'all':!![]}];}_0x488cd7=_[_0xb1cd('0x39')]({},_0x488cd7,_0x3003bc[_0xb1cd('0x3a')]);return db[_0xb1cd('0x27')][_0xb1cd('0x40')](_0x488cd7)[_0xb1cd('0x24')](handleEntityNotFound(_0x1f8b80,null))[_0xb1cd('0x24')](respondWithResult(_0x1f8b80,null))[_0xb1cd('0x41')](handleError(_0x1f8b80,null));};exports[_0xb1cd('0x42')]=function(_0x200800,_0x560c34){return db[_0xb1cd('0x27')][_0xb1cd('0x42')](_0x200800['body'],{})['then'](respondWithResult(_0x560c34,0xc9))['catch'](handleError(_0x560c34,null));};exports[_0xb1cd('0x23')]=function(_0x3d8408,_0x25c2f2){if(_0x3d8408[_0xb1cd('0x43')]['id']){delete _0x3d8408[_0xb1cd('0x43')]['id'];}return db[_0xb1cd('0x27')]['find']({'where':{'id':_0x3d8408[_0xb1cd('0x44')]['id']}})[_0xb1cd('0x24')](handleEntityNotFound(_0x25c2f2,null))[_0xb1cd('0x24')](saveUpdates(_0x3d8408[_0xb1cd('0x43')],null))[_0xb1cd('0x24')](respondWithResult(_0x25c2f2,null))[_0xb1cd('0x41')](handleError(_0x25c2f2,null));};exports['destroy']=function(_0x393ef9,_0x3a70b3){return db[_0xb1cd('0x27')][_0xb1cd('0x40')]({'where':{'id':_0x393ef9[_0xb1cd('0x44')]['id']}})[_0xb1cd('0x24')](handleEntityNotFound(_0x3a70b3,null))[_0xb1cd('0x24')](removeEntity(_0x3a70b3,null))[_0xb1cd('0x41')](handleError(_0x3a70b3,null));};
\ No newline at end of file
index 39d21e2..d126b6f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32d5=['api','moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','FreshsalesField','idField','lodash','util','../../config/logger'];(function(_0x4d46e9,_0x4da04e){var _0x4ce40d=function(_0x54905e){while(--_0x54905e){_0x4d46e9['push'](_0x4d46e9['shift']());}};_0x4ce40d(++_0x4da04e);}(_0x32d5,0x1aa));var _0x532d=function(_0x1796f3,_0x196d7c){_0x1796f3=_0x1796f3-0x0;var _0x453f3c=_0x32d5[_0x1796f3];return _0x453f3c;};'use strict';var _=require(_0x532d('0x0'));var util=require(_0x532d('0x1'));var logger=require(_0x532d('0x2'))(_0x532d('0x3'));var moment=require(_0x532d('0x4'));var BPromise=require(_0x532d('0x5'));var rp=require(_0x532d('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x532d('0x7'));var config=require(_0x532d('0x8'));var attributes=require('./intFreshsalesField.attributes');module[_0x532d('0x9')]=function(_0x2b1142,_0x2995e2){return _0x2b1142[_0x532d('0xa')](_0x532d('0xb'),attributes,{'tableName':'int_freshsales_fields','paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0x532d('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x078f=['freshsales_unique_index','idField','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./intFreshsalesField.attributes','exports','define','FreshsalesField','int_freshsales_fields'];(function(_0x396e8c,_0x40b46f){var _0x1415c2=function(_0x4e93ee){while(--_0x4e93ee){_0x396e8c['push'](_0x396e8c['shift']());}};_0x1415c2(++_0x40b46f);}(_0x078f,0x1b4));var _0xf078=function(_0x2fd910,_0x3dc7d1){_0x2fd910=_0x2fd910-0x0;var _0xd313d4=_0x078f[_0x2fd910];return _0xd313d4;};'use strict';var _=require('lodash');var util=require(_0xf078('0x0'));var logger=require(_0xf078('0x1'))('api');var moment=require(_0xf078('0x2'));var BPromise=require(_0xf078('0x3'));var rp=require(_0xf078('0x4'));var fs=require('fs');var path=require(_0xf078('0x5'));var rimraf=require('rimraf');var config=require(_0xf078('0x6'));var attributes=require(_0xf078('0x7'));module[_0xf078('0x8')]=function(_0x44b961,_0x1fb253){return _0x44b961[_0xf078('0x9')](_0xf078('0xa'),attributes,{'tableName':_0xf078('0xb'),'paranoid':![],'indexes':[{'name':_0xf078('0xc'),'fields':[_0xf078('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 899cf06..01f3740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','message','FreshsalesField,\x20%s,\x20%s','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0xa61208,_0x209d3e){var _0x4c229c=function(_0x17b83c){while(--_0x17b83c){_0xa61208['push'](_0xa61208['shift']());}};_0x4c229c(++_0x209d3e);}(_0x5fc3,0xa8));var _0x35fc=function(_0x4d180c,_0x45c68e){_0x4d180c=_0x4d180c-0x0;var _0x49b57e=_0x5fc3[_0x4d180c];return _0x49b57e;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('FreshsalesField,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('FreshsalesField,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('FreshsalesField,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}
\ No newline at end of file
+var _0x1261=['then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','FreshsalesField,\x20%s,\x20%s,\x20%s','error','code','message','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request'];(function(_0x8b271e,_0x592546){var _0x4be140=function(_0x3f4c36){while(--_0x3f4c36){_0x8b271e['push'](_0x8b271e['shift']());}};_0x4be140(++_0x592546);}(_0x1261,0x144));var _0x1126=function(_0x3ed091,_0x3491d4){_0x3ed091=_0x3ed091-0x0;var _0x49f07c=_0x1261[_0x3ed091];return _0x49f07c;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var moment=require(_0x1126('0x1'));var BPromise=require(_0x1126('0x2'));var rs=require(_0x1126('0x3'));var fs=require('fs');var Redis=require(_0x1126('0x4'));var db=require(_0x1126('0x5'))['db'];var utils=require(_0x1126('0x6'));var logger=require(_0x1126('0x7'))(_0x1126('0x8'));var config=require(_0x1126('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x1126('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x907180,_0x4f239c,_0x17e5f0){return new BPromise(function(_0x28772d,_0x245be9){return client[_0x1126('0xb')](_0x907180,_0x17e5f0)[_0x1126('0xc')](function(_0x59cfa1){logger[_0x1126('0xd')](_0x1126('0xe'),_0x4f239c,_0x1126('0xf'));logger['debug'](_0x1126('0x10'),_0x4f239c,'request\x20sent',JSON['stringify'](_0x59cfa1));if(_0x59cfa1[_0x1126('0x11')]){if(_0x59cfa1['error'][_0x1126('0x12')]===0x1f4){logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);return _0x245be9(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}logger[_0x1126('0x11')](_0x1126('0xe'),_0x4f239c,_0x59cfa1['error']['message']);return _0x28772d(_0x59cfa1[_0x1126('0x11')][_0x1126('0x13')]);}else{logger[_0x1126('0xd')]('FreshsalesField,\x20%s,\x20%s',_0x4f239c,_0x1126('0xf'));_0x28772d(_0x59cfa1['result'][_0x1126('0x13')]);}})[_0x1126('0x14')](function(_0x257b5f){logger['error'](_0x1126('0xe'),_0x4f239c,_0x257b5f);_0x245be9(_0x257b5f);});});}
\ No newline at end of file
index cf2ce33..db999c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x138859,_0x2d04a3){var _0x271497=function(_0x1ca916){while(--_0x1ca916){_0x138859['push'](_0x138859['shift']());}};_0x271497(++_0x2d04a3);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x2adee3,_0x35300d){var _0x29c021=function(_0x47accb){while(--_0x47accb){_0x2adee3['push'](_0x2adee3['shift']());}};_0x29c021(++_0x35300d);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index f5b912f..c649e93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaac4=['sequelize','exports','STRING','username','integrationTab','newTab'];(function(_0x46b135,_0x66252d){var _0x2b1cd3=function(_0x564332){while(--_0x564332){_0x46b135['push'](_0x46b135['shift']());}};_0x2b1cd3(++_0x66252d);}(_0xaac4,0x6c));var _0x4aac=function(_0xaf25ae,_0x2001c1){_0xaf25ae=_0xaf25ae-0x0;var _0x49732d=_0xaac4[_0xaf25ae];return _0x49732d;};'use strict';var Sequelize=require(_0x4aac('0x0'));module[_0x4aac('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x4aac('0x2')]},'username':{'type':Sequelize[_0x4aac('0x2')],'unique':_0x4aac('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0x4aac('0x2')]},'clientId':{'type':Sequelize[_0x4aac('0x2')]},'clientSecret':{'type':Sequelize[_0x4aac('0x2')]},'securityToken':{'type':Sequelize[_0x4aac('0x2')]},'serverUrl':{'type':Sequelize[_0x4aac('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x4aac('0x4'),_0x4aac('0x5')),'defaultValue':_0x4aac('0x4')}};
\ No newline at end of file
+var _0xf51f=['newTab','sequelize','exports','STRING','ENUM','integrationTab'];(function(_0x290612,_0x264e17){var _0x44aade=function(_0x3358d9){while(--_0x3358d9){_0x290612['push'](_0x290612['shift']());}};_0x44aade(++_0x264e17);}(_0xf51f,0x19f));var _0xff51=function(_0x437d7f,_0x1feb46){_0x437d7f=_0x437d7f-0x0;var _0x31058c=_0xf51f[_0x437d7f];return _0x31058c;};'use strict';var Sequelize=require(_0xff51('0x0'));module[_0xff51('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xff51('0x2')]},'username':{'type':Sequelize[_0xff51('0x2')],'unique':'username'},'remoteUri':{'type':Sequelize[_0xff51('0x2')]},'password':{'type':Sequelize[_0xff51('0x2')]},'clientId':{'type':Sequelize[_0xff51('0x2')]},'clientSecret':{'type':Sequelize[_0xff51('0x2')]},'securityToken':{'type':Sequelize[_0xff51('0x2')]},'serverUrl':{'type':Sequelize[_0xff51('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xff51('0x3')](_0xff51('0x4'),_0xff51('0x5')),'defaultValue':_0xff51('0x4')}};
\ No newline at end of file
index 829f589..362fcba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x489f=['update','destroy','then','error','stack','name','send','index','SalesforceAccount','rawAttributes','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','type','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','getConfigurations','SalesforceConfiguration','nolimit','findOne','AccountId','getSubjects','channel','SalesforceField','getFields','Task','clientId','password','securityToken','slice','lastIndexOf','Connection','clientSecret','login','username','concat','ticketType','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','int','picklist','boolean','email','textarea','phone','remove','includes','custom','picklistValues','label','True','true','False','false','statusCode','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','reject','save'];(function(_0x300868,_0x15c7ab){var _0x129d72=function(_0x3ffd99){while(--_0x3ffd99){_0x300868['push'](_0x300868['shift']());}};_0x129d72(++_0x15c7ab);}(_0x489f,0xd4));var _0xf489=function(_0x320df0,_0x25de28){_0x320df0=_0x320df0-0x0;var _0x3a34c9=_0x489f[_0x320df0];return _0x3a34c9;};'use strict';var emlformat=require(_0xf489('0x0'));var rimraf=require(_0xf489('0x1'));var zipdir=require(_0xf489('0x2'));var jsonpatch=require(_0xf489('0x3'));var rp=require('request-promise');var moment=require(_0xf489('0x4'));var BPromise=require(_0xf489('0x5'));var Mustache=require('mustache');var util=require(_0xf489('0x6'));var path=require(_0xf489('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xf489('0x8'));var fs=require('fs');var fs_extra=require(_0xf489('0x9'));var _=require(_0xf489('0xa'));var squel=require(_0xf489('0xb'));var crypto=require(_0xf489('0xc'));var jsforce=require(_0xf489('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xf489('0xe'));var Papa=require('papaparse');var Redis=require(_0xf489('0xf'));var authService=require(_0xf489('0x10'));var qs=require(_0xf489('0x11'));var as=require(_0xf489('0x12'));var hardwareService=require(_0xf489('0x13'));var logger=require(_0xf489('0x14'))('api');var utils=require(_0xf489('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf489('0x16'));var db=require(_0xf489('0x17'))['db'];var integrations=require(_0xf489('0x18'));function respondWithStatusCode(_0x14a021,_0x2551f2){_0x2551f2=_0x2551f2||0xcc;return function(_0x1317c7){if(_0x1317c7){return _0x14a021[_0xf489('0x19')](_0x2551f2);}return _0x14a021[_0xf489('0x1a')](_0x2551f2)[_0xf489('0x1b')]();};}function respondWithResult(_0xc77da3,_0x59b7f5){_0x59b7f5=_0x59b7f5||0xc8;return function(_0x511e70){if(_0x511e70){return _0xc77da3['status'](_0x59b7f5)[_0xf489('0x1c')](_0x511e70);}};}function respondWithFilteredResult(_0x56a4a3,_0x540782){return function(_0x414c96){if(_0x414c96){var _0x1248ad=typeof _0x540782[_0xf489('0x1d')]===_0xf489('0x1e')&&typeof _0x540782[_0xf489('0x1f')]===_0xf489('0x1e');var _0x458755=_0x414c96['count'];var _0xdfd8d3=_0x1248ad?0x0:_0x540782[_0xf489('0x1d')];var _0x3f4b6e=_0x1248ad?_0x414c96['count']:_0x540782[_0xf489('0x1d')]+_0x540782['limit'];var _0x5abd4d;if(_0x3f4b6e>=_0x458755){_0x3f4b6e=_0x458755;_0x5abd4d=0xc8;}else{_0x5abd4d=0xce;}_0x56a4a3['status'](_0x5abd4d);return _0x56a4a3[_0xf489('0x20')](_0xf489('0x21'),_0xdfd8d3+'-'+_0x3f4b6e+'/'+_0x458755)[_0xf489('0x1c')](_0x414c96);}return null;};}function patchUpdates(_0x5a8e52){return function(_0x3d468d){try{jsonpatch['apply'](_0x3d468d,_0x5a8e52,!![]);}catch(_0x7e0b84){return BPromise[_0xf489('0x22')](_0x7e0b84);}return _0x3d468d[_0xf489('0x23')]();};}function saveUpdates(_0x42ec96,_0x2e80c8){return function(_0x1b995c){if(_0x1b995c){return _0x1b995c[_0xf489('0x24')](_0x42ec96)['then'](function(_0x1734c2){return _0x1734c2;});}return null;};}function removeEntity(_0x318b2f,_0x7d8682){return function(_0x115b39){if(_0x115b39){return _0x115b39[_0xf489('0x25')]()[_0xf489('0x26')](function(){_0x318b2f['status'](0xcc)[_0xf489('0x1b')]();});}};}function handleEntityNotFound(_0x5699cd,_0x16c814){return function(_0x38480d){if(!_0x38480d){_0x5699cd[_0xf489('0x19')](0x194);}return _0x38480d;};}function handleError(_0x1df784,_0x2bdbab){_0x2bdbab=_0x2bdbab||0x1f4;return function(_0x7a0ba4){logger[_0xf489('0x27')](_0x7a0ba4[_0xf489('0x28')]);if(_0x7a0ba4[_0xf489('0x29')]){delete _0x7a0ba4[_0xf489('0x29')];}_0x1df784[_0xf489('0x1a')](_0x2bdbab)[_0xf489('0x2a')](_0x7a0ba4);};}exports[_0xf489('0x2b')]=function(_0x36fd0d,_0x21decf){var _0x1ff620={},_0x16b87b={},_0x4f4574={'count':0x0,'rows':[]};var _0x17f4ea=_['map'](db[_0xf489('0x2c')][_0xf489('0x2d')],function(_0xf56056){return{'name':_0xf56056['fieldName'],'type':_0xf56056['type'][_0xf489('0x2e')]};});_0x16b87b[_0xf489('0x2f')]=_[_0xf489('0x30')](_0x17f4ea,_0xf489('0x29'));_0x16b87b[_0xf489('0x31')]=_[_0xf489('0x32')](_0x36fd0d[_0xf489('0x31')]);_0x16b87b[_0xf489('0x33')]=_[_0xf489('0x34')](_0x16b87b[_0xf489('0x2f')],_0x16b87b[_0xf489('0x31')]);_0x1ff620[_0xf489('0x35')]=_[_0xf489('0x34')](_0x16b87b[_0xf489('0x2f')],qs['fields'](_0x36fd0d['query'][_0xf489('0x36')]));_0x1ff620[_0xf489('0x35')]=_0x1ff620[_0xf489('0x35')][_0xf489('0x37')]?_0x1ff620[_0xf489('0x35')]:_0x16b87b['model'];if(!_0x36fd0d[_0xf489('0x31')][_0xf489('0x38')]('nolimit')){_0x1ff620[_0xf489('0x1f')]=qs['limit'](_0x36fd0d[_0xf489('0x31')][_0xf489('0x1f')]);_0x1ff620[_0xf489('0x1d')]=qs['offset'](_0x36fd0d[_0xf489('0x31')]['offset']);}_0x1ff620[_0xf489('0x39')]=qs[_0xf489('0x3a')](_0x36fd0d['query'][_0xf489('0x3a')]);_0x1ff620[_0xf489('0x3b')]=qs['filters'](_[_0xf489('0x3c')](_0x36fd0d[_0xf489('0x31')],_0x16b87b[_0xf489('0x33')]),_0x17f4ea);if(_0x36fd0d[_0xf489('0x31')]['filter']){_0x1ff620['where']=_['merge'](_0x1ff620[_0xf489('0x3b')],{'$or':_[_0xf489('0x30')](_0x17f4ea,function(_0x551062){if(_0x551062[_0xf489('0x3d')]!==_0xf489('0x3e')){var _0x3b800b={};_0x3b800b[_0x551062[_0xf489('0x29')]]={'$like':'%'+_0x36fd0d[_0xf489('0x31')][_0xf489('0x3f')]+'%'};return _0x3b800b;}})});}_0x1ff620=_['merge']({},_0x1ff620,_0x36fd0d[_0xf489('0x40')]);var _0x486a7e={'where':_0x1ff620[_0xf489('0x3b')]};return db['SalesforceAccount'][_0xf489('0x41')](_0x486a7e)[_0xf489('0x26')](function(_0x138d39){_0x4f4574['count']=_0x138d39;if(_0x36fd0d['query'][_0xf489('0x42')]){_0x1ff620[_0xf489('0x43')]=[{'all':!![]}];}return db[_0xf489('0x2c')][_0xf489('0x44')](_0x1ff620);})[_0xf489('0x26')](function(_0x26a854){_0x4f4574[_0xf489('0x45')]=_0x26a854;return _0x4f4574;})[_0xf489('0x26')](respondWithFilteredResult(_0x21decf,_0x1ff620))[_0xf489('0x46')](handleError(_0x21decf,null));};exports[_0xf489('0x47')]=function(_0x55ffb5,_0x105ef5){var _0x1c41e9={'raw':![],'where':{'id':_0x55ffb5[_0xf489('0x48')]['id']}},_0x47b534={};_0x47b534[_0xf489('0x2f')]=_[_0xf489('0x32')](db[_0xf489('0x2c')][_0xf489('0x2d')]);_0x47b534[_0xf489('0x31')]=_['keys'](_0x55ffb5[_0xf489('0x31')]);_0x47b534['filters']=_['intersection'](_0x47b534['model'],_0x47b534[_0xf489('0x31')]);_0x1c41e9[_0xf489('0x35')]=_[_0xf489('0x34')](_0x47b534[_0xf489('0x2f')],qs['fields'](_0x55ffb5['query'][_0xf489('0x36')]));_0x1c41e9[_0xf489('0x35')]=_0x1c41e9[_0xf489('0x35')][_0xf489('0x37')]?_0x1c41e9[_0xf489('0x35')]:_0x47b534[_0xf489('0x2f')];if(_0x55ffb5['query']['includeAll']){_0x1c41e9['include']=[{'all':!![]}];}_0x1c41e9=_[_0xf489('0x49')]({},_0x1c41e9,_0x55ffb5[_0xf489('0x40')]);return db['SalesforceAccount'][_0xf489('0x4a')](_0x1c41e9)[_0xf489('0x26')](handleEntityNotFound(_0x105ef5,null))[_0xf489('0x26')](respondWithResult(_0x105ef5,null))['catch'](handleError(_0x105ef5,null));};exports['create']=function(_0x12117d,_0x25cd03){return db['SalesforceAccount'][_0xf489('0x4b')](_0x12117d[_0xf489('0x4c')],{})[_0xf489('0x26')](respondWithResult(_0x25cd03,0xc9))[_0xf489('0x46')](handleError(_0x25cd03,null));};exports[_0xf489('0x24')]=function(_0x1e2688,_0x3671f3){if(_0x1e2688[_0xf489('0x4c')]['id']){delete _0x1e2688['body']['id'];}return db[_0xf489('0x2c')]['find']({'where':{'id':_0x1e2688[_0xf489('0x48')]['id']}})[_0xf489('0x26')](handleEntityNotFound(_0x3671f3,null))[_0xf489('0x26')](saveUpdates(_0x1e2688[_0xf489('0x4c')],null))['then'](respondWithResult(_0x3671f3,null))[_0xf489('0x46')](handleError(_0x3671f3,null));};exports['destroy']=function(_0x5a6c15,_0x5d80d6){return db['SalesforceAccount'][_0xf489('0x4a')]({'where':{'id':_0x5a6c15[_0xf489('0x48')]['id']}})[_0xf489('0x26')](handleEntityNotFound(_0x5d80d6,null))[_0xf489('0x26')](removeEntity(_0x5d80d6,null))[_0xf489('0x46')](handleError(_0x5d80d6,null));};exports[_0xf489('0x4d')]=function(_0x2103e8,_0x5d969b,_0x365718){var _0x26d2ea={};var _0x4c944d={};var _0x2b625a;var _0x55159b;return db['SalesforceAccount']['findOne']({'where':{'id':_0x2103e8[_0xf489('0x48')]['id']}})['then'](handleEntityNotFound(_0x5d969b,null))[_0xf489('0x26')](function(_0x2007c9){if(_0x2007c9){_0x2b625a=_0x2007c9;_0x4c944d[_0xf489('0x2f')]=_[_0xf489('0x32')](db[_0xf489('0x4e')][_0xf489('0x2d')]);_0x4c944d[_0xf489('0x31')]=_[_0xf489('0x32')](_0x2103e8[_0xf489('0x31')]);_0x4c944d[_0xf489('0x33')]=_['intersection'](_0x4c944d['model'],_0x4c944d['query']);_0x26d2ea[_0xf489('0x35')]=_[_0xf489('0x34')](_0x4c944d[_0xf489('0x2f')],qs[_0xf489('0x36')](_0x2103e8['query'][_0xf489('0x36')]));_0x26d2ea[_0xf489('0x35')]=_0x26d2ea[_0xf489('0x35')][_0xf489('0x37')]?_0x26d2ea[_0xf489('0x35')]:_0x4c944d[_0xf489('0x2f')];_0x26d2ea['order']=qs[_0xf489('0x3a')](_0x2103e8[_0xf489('0x31')]['sort']);_0x26d2ea[_0xf489('0x3b')]=qs[_0xf489('0x33')](_[_0xf489('0x3c')](_0x2103e8[_0xf489('0x31')],_0x4c944d[_0xf489('0x33')]));if(_0x2103e8[_0xf489('0x31')]['filter']){_0x26d2ea[_0xf489('0x3b')]=_[_0xf489('0x49')](_0x26d2ea['where'],{'$or':_[_0xf489('0x30')](_0x26d2ea[_0xf489('0x35')],function(_0x8f9329){var _0x2f8dcc={};_0x2f8dcc[_0x8f9329]={'$like':'%'+_0x2103e8[_0xf489('0x31')][_0xf489('0x3f')]+'%'};return _0x2f8dcc;})});}_0x26d2ea=_[_0xf489('0x49')]({},_0x26d2ea,_0x2103e8['options']);return _0x2b625a[_0xf489('0x4d')](_0x26d2ea);}})[_0xf489('0x26')](function(_0x362830){if(_0x362830){_0x55159b=_0x362830[_0xf489('0x37')];if(!_0x2103e8[_0xf489('0x31')][_0xf489('0x38')](_0xf489('0x4f'))){_0x26d2ea[_0xf489('0x1f')]=qs[_0xf489('0x1f')](_0x2103e8[_0xf489('0x31')]['limit']);_0x26d2ea['offset']=qs['offset'](_0x2103e8[_0xf489('0x31')][_0xf489('0x1d')]);}return _0x2b625a[_0xf489('0x4d')](_0x26d2ea);}})[_0xf489('0x26')](function(_0x19541d){if(_0x19541d){return _0x19541d?{'count':_0x55159b,'rows':_0x19541d}:null;}})[_0xf489('0x26')](respondWithResult(_0x5d969b,null))[_0xf489('0x46')](handleError(_0x5d969b,null));};exports['addConfiguration']=function(_0xbf1770,_0x535caa,_0x55b6be){if(_0xbf1770['body']['id']){delete _0xbf1770[_0xf489('0x4c')]['id'];}return db[_0xf489('0x2c')][_0xf489('0x50')]({'where':{'id':_0xbf1770[_0xf489('0x48')]['id']}})[_0xf489('0x26')](handleEntityNotFound(_0x535caa,null))[_0xf489('0x26')](function(_0x3553e3){if(_0x3553e3){_0xbf1770[_0xf489('0x4c')][_0xf489('0x51')]=_0x3553e3['id'];_0xbf1770[_0xf489('0x4c')]['Subjects']=integrations[_0xf489('0x52')](_0xbf1770[_0xf489('0x4c')][_0xf489('0x53')],_0xbf1770[_0xf489('0x4c')][_0xf489('0x3d')]);_0xbf1770[_0xf489('0x4c')]['Descriptions']=integrations['getDescriptions'](_0xbf1770[_0xf489('0x4c')][_0xf489('0x53')],_0xbf1770['body']['type']);return db[_0xf489('0x4e')][_0xf489('0x4b')](_0xbf1770[_0xf489('0x4c')],{'include':[{'model':db[_0xf489('0x54')],'as':'Subjects'},{'model':db[_0xf489('0x54')],'as':'Descriptions'}]});}return null;})[_0xf489('0x26')](respondWithResult(_0x535caa,null))['catch'](handleError(_0x535caa,null));};exports[_0xf489('0x55')]=function(_0x1d5dc0,_0x1d1926,_0x300726){var _0x348ecc;var _0x59a864='';var _0x200a56=_0xf489('0x56');return db[_0xf489('0x2c')][_0xf489('0x50')]({'where':{'id':_0x1d5dc0[_0xf489('0x48')]['id']},'attributes':['id','remoteUri',_0xf489('0x57'),'clientSecret','username',_0xf489('0x58'),_0xf489('0x59')]})[_0xf489('0x26')](handleEntityNotFound(_0x1d1926,null))[_0xf489('0x26')](function(_0x2bb4ec){if(_0x2bb4ec){_0x59a864=_0x2bb4ec['remoteUri'];var _0x3c789f=_0x59a864[_0xf489('0x5a')](-0x1);if(_0x3c789f==='/'){_0x59a864=_0x59a864['substring'](0x0,_0x59a864[_0xf489('0x5b')](_0x3c789f));}_0x348ecc=new jsforce[(_0xf489('0x5c'))]({'oauth2':{'loginUrl':_0x59a864,'clientId':_0x2bb4ec['clientId'],'clientSecret':_0x2bb4ec[_0xf489('0x5d')]}});return _0x348ecc[_0xf489('0x5e')](_0x2bb4ec[_0xf489('0x5f')],_0x2bb4ec[_0xf489('0x58')][_0xf489('0x60')](_0x2bb4ec[_0xf489('0x59')]));}})[_0xf489('0x26')](function(_0x51c909){if(_0x51c909){if(!_['isNil'](_0x1d5dc0[_0xf489('0x31')][_0xf489('0x61')])){_0x200a56=_0x1d5dc0[_0xf489('0x31')][_0xf489('0x61')];}return _0x348ecc['sobject'](_0x200a56)[_0xf489('0x62')]();}})[_0xf489('0x26')](function(_0x25e9cc){var _0x67ceab=[_0xf489('0x63'),_0xf489('0x64'),_0xf489('0x65'),_0xf489('0x66'),'Subject',_0xf489('0x67')];var _0x58e6a0=[_0xf489('0x68'),_0xf489('0x69'),_0xf489('0x6a'),_0xf489('0x6b'),_0xf489('0x6c'),_0xf489('0x6d'),_0xf489('0x6e')];if(_0x25e9cc){_[_0xf489('0x6f')](_0x25e9cc[_0xf489('0x36')],function(_0x475648){return _0x67ceab[_0xf489('0x70')](_0x475648['name'])||!_0x58e6a0[_0xf489('0x70')](_0x475648['type']);});return{'count':_0x25e9cc[_0xf489('0x36')][_0xf489('0x37')],'rows':_[_0xf489('0x30')](_0x25e9cc[_0xf489('0x36')],function(_0x4b2632){return{'id':_0x4b2632[_0xf489('0x29')],'name':_0x4b2632['label'],'custom':_0x4b2632[_0xf489('0x71')],'options':_0x4b2632[_0xf489('0x72')][_0xf489('0x37')]>0x0?_['map'](_0x4b2632[_0xf489('0x72')],function(_0x327511){return{'name':_0x327511[_0xf489('0x73')],'value':_0x327511['value']};}):_0x4b2632[_0xf489('0x3d')]==_0xf489('0x6b')?[{'name':_0xf489('0x74'),'value':_0xf489('0x75')},{'name':_0xf489('0x76'),'value':_0xf489('0x77')}]:[]};})};}})[_0xf489('0x26')](respondWithResult(_0x1d1926,null))[_0xf489('0x46')](function(_0x1ee858){var _0x42f874=_0x1d5dc0['query']['test']?0x1f4:_0x1ee858[_0xf489('0x78')]||0x1f4;logger[_0xf489('0x27')](_0xf489('0x79'),_0xf489('0x55'),_0x42f874,JSON['stringify'](_0x1ee858));delete _0x1ee858[_0xf489('0x29')];if(_0x42f874===0x191){_0x42f874=0x190;}_0x1d1926[_0xf489('0x1a')](_0x42f874)[_0xf489('0x2a')](_0x1d5dc0[_0xf489('0x31')][_0xf489('0x7a')]?{'message':_0xf489('0x7b'),'statusCode':_0x1ee858[_0xf489('0x78')]}:_0x1ee858);});};
\ No newline at end of file
+var _0x001b=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','count','offset','set','json','reject','update','then','destroy','sendStatus','stack','name','index','map','SalesforceAccount','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','show','params','keys','find','create','body','catch','getConfigurations','findOne','SalesforceConfiguration','sort','pick','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SalesforceField','getFields','Task','clientId','clientSecret','password','securityToken','remoteUri','slice','lastIndexOf','username','concat','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','Description','string','int','picklist','boolean','textarea','phone','remove','includes','label','custom','picklistValues','value','false','test','getFields,\x20%s,\x20%s,\x20%s','send','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','sox','fs-extra','lodash','squel','crypto','to-csv','papaparse'];(function(_0x1ced8b,_0x53442e){var _0x5717ac=function(_0x56fba9){while(--_0x56fba9){_0x1ced8b['push'](_0x1ced8b['shift']());}};_0x5717ac(++_0x53442e);}(_0x001b,0x160));var _0xb001=function(_0x434ab2,_0x4dac1e){_0x434ab2=_0x434ab2-0x0;var _0x206b10=_0x001b[_0x434ab2];return _0x206b10;};'use strict';var emlformat=require(_0xb001('0x0'));var rimraf=require(_0xb001('0x1'));var zipdir=require(_0xb001('0x2'));var jsonpatch=require(_0xb001('0x3'));var rp=require(_0xb001('0x4'));var moment=require(_0xb001('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb001('0x6'));var util=require('util');var path=require('path');var sox=require(_0xb001('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb001('0x8'));var _=require(_0xb001('0x9'));var squel=require(_0xb001('0xa'));var crypto=require(_0xb001('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb001('0xc'));var querystring=require('querystring');var Papa=require(_0xb001('0xd'));var Redis=require(_0xb001('0xe'));var authService=require(_0xb001('0xf'));var qs=require(_0xb001('0x10'));var as=require(_0xb001('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb001('0x12'))(_0xb001('0x13'));var utils=require(_0xb001('0x14'));var config=require(_0xb001('0x15'));var licenseUtil=require(_0xb001('0x16'));var db=require(_0xb001('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x1b8a5c,_0x421065){_0x421065=_0x421065||0xcc;return function(_0x3be03f){if(_0x3be03f){return _0x1b8a5c['sendStatus'](_0x421065);}return _0x1b8a5c['status'](_0x421065)[_0xb001('0x18')]();};}function respondWithResult(_0x5c2cec,_0x2f8e18){_0x2f8e18=_0x2f8e18||0xc8;return function(_0x42805b){if(_0x42805b){return _0x5c2cec[_0xb001('0x19')](_0x2f8e18)['json'](_0x42805b);}};}function respondWithFilteredResult(_0x57e024,_0x360294){return function(_0xe3a808){if(_0xe3a808){var _0x128d89=typeof _0x360294['offset']==='undefined'&&typeof _0x360294['limit']===_0xb001('0x1a');var _0x24eb4b=_0xe3a808[_0xb001('0x1b')];var _0x27c24=_0x128d89?0x0:_0x360294['offset'];var _0x1d1b8e=_0x128d89?_0xe3a808[_0xb001('0x1b')]:_0x360294[_0xb001('0x1c')]+_0x360294['limit'];var _0x1198ae;if(_0x1d1b8e>=_0x24eb4b){_0x1d1b8e=_0x24eb4b;_0x1198ae=0xc8;}else{_0x1198ae=0xce;}_0x57e024['status'](_0x1198ae);return _0x57e024[_0xb001('0x1d')]('Content-Range',_0x27c24+'-'+_0x1d1b8e+'/'+_0x24eb4b)[_0xb001('0x1e')](_0xe3a808);}return null;};}function patchUpdates(_0x1ee3fb){return function(_0x573696){try{jsonpatch['apply'](_0x573696,_0x1ee3fb,!![]);}catch(_0x524fff){return BPromise[_0xb001('0x1f')](_0x524fff);}return _0x573696['save']();};}function saveUpdates(_0x23b289,_0x27899c){return function(_0x58b813){if(_0x58b813){return _0x58b813[_0xb001('0x20')](_0x23b289)[_0xb001('0x21')](function(_0x4b6f65){return _0x4b6f65;});}return null;};}function removeEntity(_0x284f93,_0x1e7b17){return function(_0x2fcfb9){if(_0x2fcfb9){return _0x2fcfb9[_0xb001('0x22')]()[_0xb001('0x21')](function(){_0x284f93[_0xb001('0x19')](0xcc)[_0xb001('0x18')]();});}};}function handleEntityNotFound(_0x104309,_0x305c43){return function(_0x173543){if(!_0x173543){_0x104309[_0xb001('0x23')](0x194);}return _0x173543;};}function handleError(_0x81bfe,_0x55ec4f){_0x55ec4f=_0x55ec4f||0x1f4;return function(_0x8bba06){logger['error'](_0x8bba06[_0xb001('0x24')]);if(_0x8bba06[_0xb001('0x25')]){delete _0x8bba06[_0xb001('0x25')];}_0x81bfe[_0xb001('0x19')](_0x55ec4f)['send'](_0x8bba06);};}exports[_0xb001('0x26')]=function(_0x277536,_0x6cba11){var _0x510646={},_0xc6fded={},_0x2cc575={'count':0x0,'rows':[]};var _0x57f589=_[_0xb001('0x27')](db[_0xb001('0x28')][_0xb001('0x29')],function(_0x34a863){return{'name':_0x34a863[_0xb001('0x2a')],'type':_0x34a863[_0xb001('0x2b')][_0xb001('0x2c')]};});_0xc6fded[_0xb001('0x2d')]=_[_0xb001('0x27')](_0x57f589,_0xb001('0x25'));_0xc6fded['query']=_['keys'](_0x277536[_0xb001('0x2e')]);_0xc6fded[_0xb001('0x2f')]=_[_0xb001('0x30')](_0xc6fded['model'],_0xc6fded[_0xb001('0x2e')]);_0x510646[_0xb001('0x31')]=_[_0xb001('0x30')](_0xc6fded[_0xb001('0x2d')],qs[_0xb001('0x32')](_0x277536['query']['fields']));_0x510646['attributes']=_0x510646[_0xb001('0x31')][_0xb001('0x33')]?_0x510646[_0xb001('0x31')]:_0xc6fded['model'];if(!_0x277536[_0xb001('0x2e')][_0xb001('0x34')](_0xb001('0x35'))){_0x510646['limit']=qs['limit'](_0x277536[_0xb001('0x2e')][_0xb001('0x36')]);_0x510646['offset']=qs['offset'](_0x277536[_0xb001('0x2e')][_0xb001('0x1c')]);}_0x510646[_0xb001('0x37')]=qs['sort'](_0x277536[_0xb001('0x2e')]['sort']);_0x510646[_0xb001('0x38')]=qs['filters'](_['pick'](_0x277536['query'],_0xc6fded[_0xb001('0x2f')]),_0x57f589);if(_0x277536[_0xb001('0x2e')][_0xb001('0x39')]){_0x510646[_0xb001('0x38')]=_[_0xb001('0x3a')](_0x510646['where'],{'$or':_['map'](_0x57f589,function(_0x1673d8){if(_0x1673d8[_0xb001('0x2b')]!==_0xb001('0x3b')){var _0x5f3535={};_0x5f3535[_0x1673d8[_0xb001('0x25')]]={'$like':'%'+_0x277536[_0xb001('0x2e')][_0xb001('0x39')]+'%'};return _0x5f3535;}})});}_0x510646=_['merge']({},_0x510646,_0x277536[_0xb001('0x3c')]);var _0x1104ab={'where':_0x510646['where']};return db[_0xb001('0x28')][_0xb001('0x1b')](_0x1104ab)[_0xb001('0x21')](function(_0x447bc6){_0x2cc575[_0xb001('0x1b')]=_0x447bc6;if(_0x277536[_0xb001('0x2e')][_0xb001('0x3d')]){_0x510646[_0xb001('0x3e')]=[{'all':!![]}];}return db['SalesforceAccount'][_0xb001('0x3f')](_0x510646);})['then'](function(_0x4c6df2){_0x2cc575['rows']=_0x4c6df2;return _0x2cc575;})[_0xb001('0x21')](respondWithFilteredResult(_0x6cba11,_0x510646))['catch'](handleError(_0x6cba11,null));};exports[_0xb001('0x40')]=function(_0x6cf457,_0x1cbf52){var _0x278722={'raw':![],'where':{'id':_0x6cf457[_0xb001('0x41')]['id']}},_0x430c0e={};_0x430c0e[_0xb001('0x2d')]=_[_0xb001('0x42')](db[_0xb001('0x28')]['rawAttributes']);_0x430c0e[_0xb001('0x2e')]=_[_0xb001('0x42')](_0x6cf457[_0xb001('0x2e')]);_0x430c0e[_0xb001('0x2f')]=_[_0xb001('0x30')](_0x430c0e['model'],_0x430c0e['query']);_0x278722[_0xb001('0x31')]=_[_0xb001('0x30')](_0x430c0e[_0xb001('0x2d')],qs[_0xb001('0x32')](_0x6cf457[_0xb001('0x2e')]['fields']));_0x278722[_0xb001('0x31')]=_0x278722['attributes'][_0xb001('0x33')]?_0x278722[_0xb001('0x31')]:_0x430c0e[_0xb001('0x2d')];if(_0x6cf457[_0xb001('0x2e')][_0xb001('0x3d')]){_0x278722[_0xb001('0x3e')]=[{'all':!![]}];}_0x278722=_[_0xb001('0x3a')]({},_0x278722,_0x6cf457[_0xb001('0x3c')]);return db[_0xb001('0x28')][_0xb001('0x43')](_0x278722)[_0xb001('0x21')](handleEntityNotFound(_0x1cbf52,null))['then'](respondWithResult(_0x1cbf52,null))['catch'](handleError(_0x1cbf52,null));};exports[_0xb001('0x44')]=function(_0xfe9c83,_0x102ac0){return db[_0xb001('0x28')][_0xb001('0x44')](_0xfe9c83[_0xb001('0x45')],{})['then'](respondWithResult(_0x102ac0,0xc9))[_0xb001('0x46')](handleError(_0x102ac0,null));};exports[_0xb001('0x20')]=function(_0x255b3a,_0x36c057){if(_0x255b3a[_0xb001('0x45')]['id']){delete _0x255b3a[_0xb001('0x45')]['id'];}return db[_0xb001('0x28')]['find']({'where':{'id':_0x255b3a[_0xb001('0x41')]['id']}})['then'](handleEntityNotFound(_0x36c057,null))[_0xb001('0x21')](saveUpdates(_0x255b3a['body'],null))[_0xb001('0x21')](respondWithResult(_0x36c057,null))['catch'](handleError(_0x36c057,null));};exports[_0xb001('0x22')]=function(_0x5b0b8d,_0x49af94){return db[_0xb001('0x28')]['find']({'where':{'id':_0x5b0b8d[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x49af94,null))[_0xb001('0x21')](removeEntity(_0x49af94,null))['catch'](handleError(_0x49af94,null));};exports[_0xb001('0x47')]=function(_0xe8eaff,_0x4fe6d9,_0x3d8421){var _0x3459eb={};var _0x25290e={};var _0x5cba4c;var _0x4fdfae;return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0xe8eaff[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x4fe6d9,null))[_0xb001('0x21')](function(_0x4691ba){if(_0x4691ba){_0x5cba4c=_0x4691ba;_0x25290e['model']=_[_0xb001('0x42')](db[_0xb001('0x49')][_0xb001('0x29')]);_0x25290e[_0xb001('0x2e')]=_[_0xb001('0x42')](_0xe8eaff[_0xb001('0x2e')]);_0x25290e['filters']=_['intersection'](_0x25290e[_0xb001('0x2d')],_0x25290e[_0xb001('0x2e')]);_0x3459eb[_0xb001('0x31')]=_[_0xb001('0x30')](_0x25290e[_0xb001('0x2d')],qs['fields'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x32')]));_0x3459eb[_0xb001('0x31')]=_0x3459eb[_0xb001('0x31')]['length']?_0x3459eb[_0xb001('0x31')]:_0x25290e['model'];_0x3459eb[_0xb001('0x37')]=qs['sort'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x4a')]);_0x3459eb[_0xb001('0x38')]=qs[_0xb001('0x2f')](_[_0xb001('0x4b')](_0xe8eaff[_0xb001('0x2e')],_0x25290e[_0xb001('0x2f')]));if(_0xe8eaff[_0xb001('0x2e')][_0xb001('0x39')]){_0x3459eb[_0xb001('0x38')]=_['merge'](_0x3459eb[_0xb001('0x38')],{'$or':_['map'](_0x3459eb[_0xb001('0x31')],function(_0x1037e0){var _0x216daf={};_0x216daf[_0x1037e0]={'$like':'%'+_0xe8eaff['query'][_0xb001('0x39')]+'%'};return _0x216daf;})});}_0x3459eb=_[_0xb001('0x3a')]({},_0x3459eb,_0xe8eaff[_0xb001('0x3c')]);return _0x5cba4c[_0xb001('0x47')](_0x3459eb);}})['then'](function(_0x4914ff){if(_0x4914ff){_0x4fdfae=_0x4914ff[_0xb001('0x33')];if(!_0xe8eaff[_0xb001('0x2e')][_0xb001('0x34')](_0xb001('0x35'))){_0x3459eb[_0xb001('0x36')]=qs['limit'](_0xe8eaff['query'][_0xb001('0x36')]);_0x3459eb['offset']=qs['offset'](_0xe8eaff[_0xb001('0x2e')][_0xb001('0x1c')]);}return _0x5cba4c[_0xb001('0x47')](_0x3459eb);}})[_0xb001('0x21')](function(_0x4e985f){if(_0x4e985f){return _0x4e985f?{'count':_0x4fdfae,'rows':_0x4e985f}:null;}})['then'](respondWithResult(_0x4fe6d9,null))[_0xb001('0x46')](handleError(_0x4fe6d9,null));};exports['addConfiguration']=function(_0xa9b928,_0x2c6651,_0x1c17ba){if(_0xa9b928[_0xb001('0x45')]['id']){delete _0xa9b928[_0xb001('0x45')]['id'];}return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0xa9b928[_0xb001('0x41')]['id']}})[_0xb001('0x21')](handleEntityNotFound(_0x2c6651,null))[_0xb001('0x21')](function(_0x29a774){if(_0x29a774){_0xa9b928[_0xb001('0x45')][_0xb001('0x4c')]=_0x29a774['id'];_0xa9b928[_0xb001('0x45')][_0xb001('0x4d')]=integrations[_0xb001('0x4e')](_0xa9b928['body'][_0xb001('0x4f')],_0xa9b928[_0xb001('0x45')][_0xb001('0x2b')]);_0xa9b928[_0xb001('0x45')][_0xb001('0x50')]=integrations[_0xb001('0x51')](_0xa9b928[_0xb001('0x45')][_0xb001('0x4f')],_0xa9b928[_0xb001('0x45')][_0xb001('0x2b')]);return db[_0xb001('0x49')]['create'](_0xa9b928[_0xb001('0x45')],{'include':[{'model':db[_0xb001('0x52')],'as':_0xb001('0x4d')},{'model':db[_0xb001('0x52')],'as':_0xb001('0x50')}]});}return null;})[_0xb001('0x21')](respondWithResult(_0x2c6651,null))['catch'](handleError(_0x2c6651,null));};exports[_0xb001('0x53')]=function(_0x116705,_0x49e7eb,_0x2be5cc){var _0x1558ce;var _0x4b36e4='';var _0x228663=_0xb001('0x54');return db[_0xb001('0x28')][_0xb001('0x48')]({'where':{'id':_0x116705[_0xb001('0x41')]['id']},'attributes':['id','remoteUri',_0xb001('0x55'),_0xb001('0x56'),'username',_0xb001('0x57'),_0xb001('0x58')]})['then'](handleEntityNotFound(_0x49e7eb,null))['then'](function(_0x1e6aea){if(_0x1e6aea){_0x4b36e4=_0x1e6aea[_0xb001('0x59')];var _0x18a841=_0x4b36e4[_0xb001('0x5a')](-0x1);if(_0x18a841==='/'){_0x4b36e4=_0x4b36e4['substring'](0x0,_0x4b36e4[_0xb001('0x5b')](_0x18a841));}_0x1558ce=new jsforce['Connection']({'oauth2':{'loginUrl':_0x4b36e4,'clientId':_0x1e6aea[_0xb001('0x55')],'clientSecret':_0x1e6aea[_0xb001('0x56')]}});return _0x1558ce['login'](_0x1e6aea[_0xb001('0x5c')],_0x1e6aea[_0xb001('0x57')][_0xb001('0x5d')](_0x1e6aea[_0xb001('0x58')]));}})[_0xb001('0x21')](function(_0x2d95d4){if(_0x2d95d4){if(!_[_0xb001('0x5e')](_0x116705[_0xb001('0x2e')]['ticketType'])){_0x228663=_0x116705['query'][_0xb001('0x5f')];}return _0x1558ce[_0xb001('0x60')](_0x228663)[_0xb001('0x61')]();}})['then'](function(_0xea5a40){var _0x1eb551=[_0xb001('0x62'),_0xb001('0x63'),_0xb001('0x64'),_0xb001('0x65'),_0xb001('0x66'),_0xb001('0x67')];var _0x159e7c=[_0xb001('0x68'),_0xb001('0x69'),_0xb001('0x6a'),_0xb001('0x6b'),'email',_0xb001('0x6c'),_0xb001('0x6d')];if(_0xea5a40){_[_0xb001('0x6e')](_0xea5a40[_0xb001('0x32')],function(_0x14b051){return _0x1eb551[_0xb001('0x6f')](_0x14b051[_0xb001('0x25')])||!_0x159e7c[_0xb001('0x6f')](_0x14b051[_0xb001('0x2b')]);});return{'count':_0xea5a40[_0xb001('0x32')][_0xb001('0x33')],'rows':_['map'](_0xea5a40['fields'],function(_0x54ad1f){return{'id':_0x54ad1f['name'],'name':_0x54ad1f[_0xb001('0x70')],'custom':_0x54ad1f[_0xb001('0x71')],'options':_0x54ad1f[_0xb001('0x72')][_0xb001('0x33')]>0x0?_[_0xb001('0x27')](_0x54ad1f[_0xb001('0x72')],function(_0x136ae3){return{'name':_0x136ae3['label'],'value':_0x136ae3[_0xb001('0x73')]};}):_0x54ad1f[_0xb001('0x2b')]=='boolean'?[{'name':'True','value':'true'},{'name':'False','value':_0xb001('0x74')}]:[]};})};}})[_0xb001('0x21')](respondWithResult(_0x49e7eb,null))[_0xb001('0x46')](function(_0x10f9f6){var _0x2f1623=_0x116705[_0xb001('0x2e')][_0xb001('0x75')]?0x1f4:_0x10f9f6['statusCode']||0x1f4;logger['error'](_0xb001('0x76'),_0xb001('0x53'),_0x2f1623,JSON['stringify'](_0x10f9f6));delete _0x10f9f6[_0xb001('0x25')];if(_0x2f1623===0x191){_0x2f1623=0x190;}_0x49e7eb[_0xb001('0x19')](_0x2f1623)[_0xb001('0x77')](_0x116705[_0xb001('0x2e')][_0xb001('0x75')]?{'message':_0xb001('0x78'),'statusCode':_0x10f9f6[_0xb001('0x79')]}:_0x10f9f6);});};
\ No newline at end of file
index 0e5f6b0..9576ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf9a=['rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','define','lodash','../../config/logger','api','moment','request-promise','path'];(function(_0x9fc17,_0x23c0ab){var _0x33e21c=function(_0x465e4c){while(--_0x465e4c){_0x9fc17['push'](_0x9fc17['shift']());}};_0x33e21c(++_0x23c0ab);}(_0xbf9a,0x7e));var _0xabf9=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xbf9a[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0xabf9('0x0'));var util=require('util');var logger=require(_0xabf9('0x1'))(_0xabf9('0x2'));var moment=require(_0xabf9('0x3'));var BPromise=require('bluebird');var rp=require(_0xabf9('0x4'));var fs=require('fs');var path=require(_0xabf9('0x5'));var rimraf=require(_0xabf9('0x6'));var config=require(_0xabf9('0x7'));var attributes=require(_0xabf9('0x8'));var integrations=require(_0xabf9('0x9'));module['exports']=function(_0x1848dc,_0xb73b5a){return _0x1848dc[_0xabf9('0xa')]('SalesforceAccount',attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5568=['int_salesforce_accounts','util','api','bluebird','request-promise','path','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x431fec,_0x2545ee){var _0x4febac=function(_0x5443ee){while(--_0x5443ee){_0x431fec['push'](_0x431fec['shift']());}};_0x4febac(++_0x2545ee);}(_0x5568,0x6f));var _0x8556=function(_0x29e710,_0x362b44){_0x29e710=_0x29e710-0x0;var _0x122e67=_0x5568[_0x29e710];return _0x122e67;};'use strict';var _=require('lodash');var util=require(_0x8556('0x0'));var logger=require('../../config/logger')(_0x8556('0x1'));var moment=require('moment');var BPromise=require(_0x8556('0x2'));var rp=require(_0x8556('0x3'));var fs=require('fs');var path=require(_0x8556('0x4'));var rimraf=require('rimraf');var config=require(_0x8556('0x5'));var attributes=require(_0x8556('0x6'));var integrations=require(_0x8556('0x7'));module[_0x8556('0x8')]=function(_0x48d377,_0x3dfe0a){return _0x48d377[_0x8556('0x9')]('SalesforceAccount',attributes,{'tableName':_0x8556('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83d72af..027ca1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc1c6=['bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','where','limit','include','map','attributes','model','stringify','ShowSalesforceAccount','find','raw','lodash','moment'];(function(_0x49cb71,_0x2f0149){var _0x3a50fd=function(_0x48c304){while(--_0x48c304){_0x49cb71['push'](_0x49cb71['shift']());}};_0x3a50fd(++_0x2f0149);}(_0xc1c6,0xd0));var _0x6c1c=function(_0x3168ed,_0x105719){_0x3168ed=_0x3168ed-0x0;var _0x2e7550=_0xc1c6[_0x3168ed];return _0x2e7550;};'use strict';var _=require(_0x6c1c('0x0'));var util=require('util');var moment=require(_0x6c1c('0x1'));var BPromise=require(_0x6c1c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6c1c('0x3'));var db=require(_0x6c1c('0x4'))['db'];var utils=require(_0x6c1c('0x5'));var logger=require(_0x6c1c('0x6'))(_0x6c1c('0x7'));var config=require(_0x6c1c('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6c1c('0x9')][_0x6c1c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x34b382,_0x2df10e,_0x4e15b6){return new BPromise(function(_0x331fb5,_0x5da5b0){return client['request'](_0x34b382,_0x4e15b6)[_0x6c1c('0xb')](function(_0x3ffdca){logger[_0x6c1c('0xc')](_0x6c1c('0xd'),_0x2df10e,_0x6c1c('0xe'));logger[_0x6c1c('0xf')](_0x6c1c('0x10'),_0x2df10e,_0x6c1c('0xe'),JSON['stringify'](_0x3ffdca));if(_0x3ffdca[_0x6c1c('0x11')]){if(_0x3ffdca[_0x6c1c('0x11')][_0x6c1c('0x12')]===0x1f4){logger[_0x6c1c('0x11')](_0x6c1c('0xd'),_0x2df10e,_0x3ffdca[_0x6c1c('0x11')][_0x6c1c('0x13')]);return _0x5da5b0(_0x3ffdca[_0x6c1c('0x11')][_0x6c1c('0x13')]);}logger[_0x6c1c('0x11')]('SalesforceAccount,\x20%s,\x20%s',_0x2df10e,_0x3ffdca[_0x6c1c('0x11')][_0x6c1c('0x13')]);return _0x331fb5(_0x3ffdca['error'][_0x6c1c('0x13')]);}else{logger['info'](_0x6c1c('0xd'),_0x2df10e,_0x6c1c('0xe'));_0x331fb5(_0x3ffdca['result']['message']);}})[_0x6c1c('0x14')](function(_0x29617c){logger[_0x6c1c('0x11')](_0x6c1c('0xd'),_0x2df10e,_0x29617c);_0x5da5b0(_0x29617c);});});}exports[_0x6c1c('0x15')]=function(_0xda41bc){var _0x44fadc=this;return new Promise(function(_0x4ddf01,_0x4e508f){return db[_0x6c1c('0x16')][_0x6c1c('0x17')]({'raw':_0xda41bc[_0x6c1c('0x18')]?_0xda41bc['options']['raw']===undefined?!![]:![]:!![],'where':_0xda41bc[_0x6c1c('0x18')]?_0xda41bc['options'][_0x6c1c('0x19')]||null:null,'attributes':_0xda41bc[_0x6c1c('0x18')]?_0xda41bc[_0x6c1c('0x18')]['attributes']||null:null,'limit':_0xda41bc[_0x6c1c('0x18')]?_0xda41bc[_0x6c1c('0x18')][_0x6c1c('0x1a')]||null:null,'include':_0xda41bc['options']?_0xda41bc[_0x6c1c('0x18')][_0x6c1c('0x1b')]?_[_0x6c1c('0x1c')](_0xda41bc['options'][_0x6c1c('0x1b')],function(_0xdba07d){return{'model':db[_0xdba07d['model']],'as':_0xdba07d['as'],'attributes':_0xdba07d[_0x6c1c('0x1d')],'include':_0xdba07d[_0x6c1c('0x1b')]?_[_0x6c1c('0x1c')](_0xdba07d[_0x6c1c('0x1b')],function(_0x31af49){return{'model':db[_0x31af49[_0x6c1c('0x1e')]],'as':_0x31af49['as'],'attributes':_0x31af49[_0x6c1c('0x1d')],'include':_0x31af49['include']?_[_0x6c1c('0x1c')](_0x31af49[_0x6c1c('0x1b')],function(_0x449dbe){return{'model':db[_0x449dbe[_0x6c1c('0x1e')]],'as':_0x449dbe['as'],'attributes':_0x449dbe[_0x6c1c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6c1c('0xb')](function(_0x2c2471){logger[_0x6c1c('0xc')](_0x6c1c('0x15'),_0xda41bc);logger['debug'](_0x6c1c('0x15'),_0xda41bc,JSON[_0x6c1c('0x1f')](_0x2c2471));_0x4ddf01(_0x2c2471);})[_0x6c1c('0x14')](function(_0x1873b9){logger[_0x6c1c('0x11')](_0x6c1c('0x15'),_0x1873b9[_0x6c1c('0x13')],_0xda41bc);_0x4e508f(_0x44fadc[_0x6c1c('0x11')](0x1f4,_0x1873b9['message']));});});};exports[_0x6c1c('0x20')]=function(_0x3f5000){var _0x54f8ae=this;return new Promise(function(_0x1ff8b1,_0x578687){return db[_0x6c1c('0x16')][_0x6c1c('0x21')]({'raw':_0x3f5000[_0x6c1c('0x18')]?_0x3f5000[_0x6c1c('0x18')][_0x6c1c('0x22')]===undefined?!![]:![]:!![],'where':_0x3f5000['options']?_0x3f5000[_0x6c1c('0x18')][_0x6c1c('0x19')]||null:null,'attributes':_0x3f5000['options']?_0x3f5000[_0x6c1c('0x18')][_0x6c1c('0x1d')]||null:null,'include':_0x3f5000[_0x6c1c('0x18')]?_0x3f5000[_0x6c1c('0x18')][_0x6c1c('0x1b')]?_[_0x6c1c('0x1c')](_0x3f5000[_0x6c1c('0x18')][_0x6c1c('0x1b')],function(_0x354029){return{'model':db[_0x354029[_0x6c1c('0x1e')]],'as':_0x354029['as'],'attributes':_0x354029[_0x6c1c('0x1d')],'include':_0x354029['include']?_['map'](_0x354029[_0x6c1c('0x1b')],function(_0x3c9dae){return{'model':db[_0x3c9dae['model']],'as':_0x3c9dae['as'],'attributes':_0x3c9dae[_0x6c1c('0x1d')],'include':_0x3c9dae['include']?_[_0x6c1c('0x1c')](_0x3c9dae[_0x6c1c('0x1b')],function(_0x1076d3){return{'model':db[_0x1076d3[_0x6c1c('0x1e')]],'as':_0x1076d3['as'],'attributes':_0x1076d3[_0x6c1c('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x6c1c('0xb')](function(_0x4dbf7b){logger[_0x6c1c('0xc')](_0x6c1c('0x20'),_0x3f5000);logger[_0x6c1c('0xf')](_0x6c1c('0x20'),_0x3f5000,JSON[_0x6c1c('0x1f')](_0x4dbf7b));_0x1ff8b1(_0x4dbf7b);})[_0x6c1c('0x14')](function(_0x56ddc4){logger[_0x6c1c('0x11')](_0x6c1c('0x20'),_0x56ddc4[_0x6c1c('0x13')],_0x3f5000);_0x578687(_0x54f8ae[_0x6c1c('0x11')](0x1f4,_0x56ddc4[_0x6c1c('0x13')]));});});};
\ No newline at end of file
+var _0x1015=['attributes','limit','map','include','model','then','GetSalesforceAccount','ShowSalesforceAccount','SalesforceAccount','find','raw','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','SalesforceAccount,\x20%s,\x20%s','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','findAll','options'];(function(_0x48cb10,_0x3e4b72){var _0x577890=function(_0x5797af){while(--_0x5797af){_0x48cb10['push'](_0x48cb10['shift']());}};_0x577890(++_0x3e4b72);}(_0x1015,0xca));var _0x5101=function(_0x373b40,_0x419ad1){_0x373b40=_0x373b40-0x0;var _0x1e7e2b=_0x1015[_0x373b40];return _0x1e7e2b;};'use strict';var _=require(_0x5101('0x0'));var util=require(_0x5101('0x1'));var moment=require(_0x5101('0x2'));var BPromise=require('bluebird');var rs=require(_0x5101('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5101('0x4'))['db'];var utils=require(_0x5101('0x5'));var logger=require(_0x5101('0x6'))(_0x5101('0x7'));var config=require(_0x5101('0x8'));var jayson=require(_0x5101('0x9'));var client=jayson[_0x5101('0xa')][_0x5101('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5c28a1,_0x30084d,_0x5b77d1){return new BPromise(function(_0x8f77ae,_0x532bfd){return client[_0x5101('0xc')](_0x5c28a1,_0x5b77d1)['then'](function(_0x19698e){logger['info'](_0x5101('0xd'),_0x30084d,'request\x20sent');logger[_0x5101('0xe')](_0x5101('0xf'),_0x30084d,_0x5101('0x10'),JSON[_0x5101('0x11')](_0x19698e));if(_0x19698e[_0x5101('0x12')]){if(_0x19698e[_0x5101('0x12')][_0x5101('0x13')]===0x1f4){logger[_0x5101('0x12')](_0x5101('0xd'),_0x30084d,_0x19698e[_0x5101('0x12')]['message']);return _0x532bfd(_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);}logger[_0x5101('0x12')]('SalesforceAccount,\x20%s,\x20%s',_0x30084d,_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);return _0x8f77ae(_0x19698e[_0x5101('0x12')][_0x5101('0x14')]);}else{logger[_0x5101('0x15')](_0x5101('0xd'),_0x30084d,'request\x20sent');_0x8f77ae(_0x19698e[_0x5101('0x16')][_0x5101('0x14')]);}})[_0x5101('0x17')](function(_0x1a3037){logger[_0x5101('0x12')](_0x5101('0xd'),_0x30084d,_0x1a3037);_0x532bfd(_0x1a3037);});});}exports['GetSalesforceAccount']=function(_0x41619a){var _0x183ada=this;return new Promise(function(_0x318f6f,_0x28e0e5){return db['SalesforceAccount'][_0x5101('0x18')]({'raw':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x41619a[_0x5101('0x19')]?_0x41619a['options']['where']||null:null,'attributes':_0x41619a['options']?_0x41619a[_0x5101('0x19')][_0x5101('0x1a')]||null:null,'limit':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')][_0x5101('0x1b')]||null:null,'include':_0x41619a[_0x5101('0x19')]?_0x41619a[_0x5101('0x19')]['include']?_[_0x5101('0x1c')](_0x41619a[_0x5101('0x19')][_0x5101('0x1d')],function(_0x27b5fb){return{'model':db[_0x27b5fb['model']],'as':_0x27b5fb['as'],'attributes':_0x27b5fb['attributes'],'include':_0x27b5fb[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x27b5fb[_0x5101('0x1d')],function(_0x3f6ee6){return{'model':db[_0x3f6ee6['model']],'as':_0x3f6ee6['as'],'attributes':_0x3f6ee6[_0x5101('0x1a')],'include':_0x3f6ee6[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x3f6ee6[_0x5101('0x1d')],function(_0x35d68a){return{'model':db[_0x35d68a[_0x5101('0x1e')]],'as':_0x35d68a['as'],'attributes':_0x35d68a[_0x5101('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5101('0x1f')](function(_0x2d7332){logger[_0x5101('0x15')](_0x5101('0x20'),_0x41619a);logger[_0x5101('0xe')]('GetSalesforceAccount',_0x41619a,JSON[_0x5101('0x11')](_0x2d7332));_0x318f6f(_0x2d7332);})[_0x5101('0x17')](function(_0x31f5b2){logger[_0x5101('0x12')]('GetSalesforceAccount',_0x31f5b2[_0x5101('0x14')],_0x41619a);_0x28e0e5(_0x183ada[_0x5101('0x12')](0x1f4,_0x31f5b2['message']));});});};exports[_0x5101('0x21')]=function(_0x2aa6c1){var _0x3d1888=this;return new Promise(function(_0x15da5f,_0x3afdad){return db[_0x5101('0x22')][_0x5101('0x23')]({'raw':_0x2aa6c1[_0x5101('0x19')]?_0x2aa6c1[_0x5101('0x19')][_0x5101('0x24')]===undefined?!![]:![]:!![],'where':_0x2aa6c1['options']?_0x2aa6c1['options'][_0x5101('0x25')]||null:null,'attributes':_0x2aa6c1['options']?_0x2aa6c1['options'][_0x5101('0x1a')]||null:null,'include':_0x2aa6c1[_0x5101('0x19')]?_0x2aa6c1[_0x5101('0x19')][_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x2aa6c1['options'][_0x5101('0x1d')],function(_0x298859){return{'model':db[_0x298859[_0x5101('0x1e')]],'as':_0x298859['as'],'attributes':_0x298859[_0x5101('0x1a')],'include':_0x298859[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x298859[_0x5101('0x1d')],function(_0x347f97){return{'model':db[_0x347f97[_0x5101('0x1e')]],'as':_0x347f97['as'],'attributes':_0x347f97[_0x5101('0x1a')],'include':_0x347f97[_0x5101('0x1d')]?_[_0x5101('0x1c')](_0x347f97['include'],function(_0x2dcc3f){return{'model':db[_0x2dcc3f[_0x5101('0x1e')]],'as':_0x2dcc3f['as'],'attributes':_0x2dcc3f[_0x5101('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x5101('0x1f')](function(_0x3d91d4){logger[_0x5101('0x15')](_0x5101('0x21'),_0x2aa6c1);logger[_0x5101('0xe')](_0x5101('0x21'),_0x2aa6c1,JSON['stringify'](_0x3d91d4));_0x15da5f(_0x3d91d4);})[_0x5101('0x17')](function(_0x2c1f38){logger[_0x5101('0x12')](_0x5101('0x21'),_0x2c1f38[_0x5101('0x14')],_0x2aa6c1);_0x3afdad(_0x3d1888['error'](0x1f4,_0x2c1f38['message']));});});};
\ No newline at end of file
index e95e5d2..a550382 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','util'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0xdb28,0x106));var _0x8db2=function(_0x417e67,_0x43feb0){_0x417e67=_0x417e67-0x0;var _0x3cb0d7=_0xdb28[_0x417e67];return _0x3cb0d7;};'use strict';var multer=require(_0x8db2('0x0'));var util=require(_0x8db2('0x1'));var path=require(_0x8db2('0x2'));var timeout=require(_0x8db2('0x3'));var express=require('express');var router=express[_0x8db2('0x4')]();var fs_extra=require(_0x8db2('0x5'));var auth=require(_0x8db2('0x6'));var interaction=require(_0x8db2('0x7'));var config=require(_0x8db2('0x8'));var controller=require('./intSalesforceConfiguration.controller');router[_0x8db2('0x9')]('/',auth[_0x8db2('0xa')](),controller['index']);router['get'](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xc')]);router[_0x8db2('0x9')](_0x8db2('0xd'),auth[_0x8db2('0xa')](),controller[_0x8db2('0xe')]);router['get'](_0x8db2('0xf'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x10')]);router['get'](_0x8db2('0x11'),auth[_0x8db2('0xa')](),controller['getDescriptions']);router[_0x8db2('0x12')]('/',auth[_0x8db2('0xa')](),controller[_0x8db2('0x13')]);router[_0x8db2('0x14')](_0x8db2('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x8db2('0x15')](_0x8db2('0xb'),auth[_0x8db2('0xa')](),controller[_0x8db2('0x16')]);module[_0x8db2('0x17')]=router;
\ No newline at end of file
+var _0x7a54=['getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','index','/:id','isAuthenticated','/:id/subjects'];(function(_0x5a42c5,_0x3d8961){var _0x512425=function(_0x2a86e4){while(--_0x2a86e4){_0x5a42c5['push'](_0x5a42c5['shift']());}};_0x512425(++_0x3d8961);}(_0x7a54,0x106));var _0x47a5=function(_0x5a552e,_0x330f53){_0x5a552e=_0x5a552e-0x0;var _0x4d41c8=_0x7a54[_0x5a552e];return _0x4d41c8;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0x9')]('/:id/fields',auth['isAuthenticated'](),controller['getFields']);router[_0x47a5('0x9')](_0x47a5('0xd'),auth['isAuthenticated'](),controller[_0x47a5('0xe')]);router['get']('/:id/descriptions',auth[_0x47a5('0xc')](),controller[_0x47a5('0xf')]);router[_0x47a5('0x10')]('/',auth[_0x47a5('0xc')](),controller[_0x47a5('0x11')]);router[_0x47a5('0x12')](_0x47a5('0xb'),auth['isAuthenticated'](),controller[_0x47a5('0x13')]);router[_0x47a5('0x14')](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller[_0x47a5('0x15')]);module[_0x47a5('0x16')]=router;
\ No newline at end of file
index 3e9d74c..6446cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeea4=['contact','account_contact_lead','account','contact_lead','nothing','lead','sequelize','exports','STRING','ENUM','Task','Case'];(function(_0x28286e,_0xd8c672){var _0x3a253e=function(_0x1830e7){while(--_0x1830e7){_0x28286e['push'](_0x28286e['shift']());}};_0x3a253e(++_0xd8c672);}(_0xeea4,0x19e));var _0x4eea=function(_0x364010,_0x270fc8){_0x364010=_0x364010-0x0;var _0x598af0=_0xeea4[_0x364010];return _0x598af0;};'use strict';var Sequelize=require(_0x4eea('0x0'));module[_0x4eea('0x1')]={'name':{'type':Sequelize[_0x4eea('0x2')]},'description':{'type':Sequelize[_0x4eea('0x2')]},'ticketType':{'type':Sequelize[_0x4eea('0x3')](_0x4eea('0x4'),_0x4eea('0x5')),'defaultValue':_0x4eea('0x4')},'moduleSearch':{'type':Sequelize[_0x4eea('0x3')]('contact_lead',_0x4eea('0x6'),'lead',_0x4eea('0x7'),_0x4eea('0x8')),'defaultValue':_0x4eea('0x9')},'moduleCreate':{'type':Sequelize['ENUM'](_0x4eea('0xa'),_0x4eea('0x6'),'lead',_0x4eea('0x8')),'defaultValue':_0x4eea('0xb')},'leadId':{'type':Sequelize[_0x4eea('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x4eea('0x2')]},'additionalSearchContact':{'type':Sequelize['STRING']},'additionalSearchLead':{'type':Sequelize[_0x4eea('0x2')]}};
\ No newline at end of file
+var _0xd353=['Task','contact_lead','contact','lead','account_contact_lead','account','sequelize','exports','STRING','ENUM'];(function(_0x54c355,_0x31674d){var _0x40af27=function(_0x43e00f){while(--_0x43e00f){_0x54c355['push'](_0x54c355['shift']());}};_0x40af27(++_0x31674d);}(_0xd353,0x7e));var _0x3d35=function(_0x5509d4,_0x5c0b29){_0x5509d4=_0x5509d4-0x0;var _0x31f764=_0xd353[_0x5509d4];return _0x31f764;};'use strict';var Sequelize=require(_0x3d35('0x0'));module[_0x3d35('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3d35('0x2')]},'ticketType':{'type':Sequelize[_0x3d35('0x3')]('Task','Case'),'defaultValue':_0x3d35('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0x3d35('0x5'),_0x3d35('0x6'),_0x3d35('0x7'),_0x3d35('0x8'),_0x3d35('0x9')),'defaultValue':_0x3d35('0x5')},'moduleCreate':{'type':Sequelize[_0x3d35('0x3')]('nothing',_0x3d35('0x6'),_0x3d35('0x7'),_0x3d35('0x9')),'defaultValue':_0x3d35('0x7')},'leadId':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchAccount':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchContact':{'type':Sequelize[_0x3d35('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x3d35('0x2')]}};
\ No newline at end of file
index bb2e40f..477b78d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd89=['jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','sendStatus','status','json','offset','count','limit','set','apply','reject','save','update','destroy','then','end','error','stack','name','send','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','fields','attributes','length','hasOwnProperty','order','sort','filters','pick','where','merge','filter','options','includeAll','include','findAll','rows','catch','params','find','create','body','getFields','getSubjects','findOne','SalesforceField','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto'];(function(_0x2ac91f,_0xac417f){var _0x469b9a=function(_0xdfc08e){while(--_0xdfc08e){_0x2ac91f['push'](_0x2ac91f['shift']());}};_0x469b9a(++_0xac417f);}(_0xcd89,0xe1));var _0x9cd8=function(_0x9a8a60,_0x3da559){_0x9a8a60=_0x9a8a60-0x0;var _0x49b339=_0xcd89[_0x9a8a60];return _0x49b339;};'use strict';var emlformat=require(_0x9cd8('0x0'));var rimraf=require(_0x9cd8('0x1'));var zipdir=require(_0x9cd8('0x2'));var jsonpatch=require(_0x9cd8('0x3'));var rp=require(_0x9cd8('0x4'));var moment=require('moment');var BPromise=require(_0x9cd8('0x5'));var Mustache=require(_0x9cd8('0x6'));var util=require('util');var path=require(_0x9cd8('0x7'));var sox=require(_0x9cd8('0x8'));var csv=require(_0x9cd8('0x9'));var ejs=require(_0x9cd8('0xa'));var fs=require('fs');var fs_extra=require(_0x9cd8('0xb'));var _=require(_0x9cd8('0xc'));var squel=require(_0x9cd8('0xd'));var crypto=require(_0x9cd8('0xe'));var jsforce=require(_0x9cd8('0xf'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x9cd8('0x10'));var Papa=require(_0x9cd8('0x11'));var Redis=require(_0x9cd8('0x12'));var authService=require(_0x9cd8('0x13'));var qs=require(_0x9cd8('0x14'));var as=require(_0x9cd8('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9cd8('0x16'))('api');var utils=require(_0x9cd8('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x9cd8('0x18'))['db'];function respondWithStatusCode(_0x3db3d5,_0x873de0){_0x873de0=_0x873de0||0xcc;return function(_0x425cef){if(_0x425cef){return _0x3db3d5[_0x9cd8('0x19')](_0x873de0);}return _0x3db3d5['status'](_0x873de0)['end']();};}function respondWithResult(_0x5ac494,_0x20cddb){_0x20cddb=_0x20cddb||0xc8;return function(_0x455c3a){if(_0x455c3a){return _0x5ac494[_0x9cd8('0x1a')](_0x20cddb)[_0x9cd8('0x1b')](_0x455c3a);}};}function respondWithFilteredResult(_0x29aaf0,_0x1f2f2c){return function(_0x1169f9){if(_0x1169f9){var _0x2fe745=typeof _0x1f2f2c[_0x9cd8('0x1c')]==='undefined'&&typeof _0x1f2f2c['limit']==='undefined';var _0x53b0cf=_0x1169f9[_0x9cd8('0x1d')];var _0x15dffb=_0x2fe745?0x0:_0x1f2f2c[_0x9cd8('0x1c')];var _0x42fe1d=_0x2fe745?_0x1169f9[_0x9cd8('0x1d')]:_0x1f2f2c[_0x9cd8('0x1c')]+_0x1f2f2c[_0x9cd8('0x1e')];var _0xfda305;if(_0x42fe1d>=_0x53b0cf){_0x42fe1d=_0x53b0cf;_0xfda305=0xc8;}else{_0xfda305=0xce;}_0x29aaf0['status'](_0xfda305);return _0x29aaf0[_0x9cd8('0x1f')]('Content-Range',_0x15dffb+'-'+_0x42fe1d+'/'+_0x53b0cf)[_0x9cd8('0x1b')](_0x1169f9);}return null;};}function patchUpdates(_0x54ed87){return function(_0xcff39d){try{jsonpatch[_0x9cd8('0x20')](_0xcff39d,_0x54ed87,!![]);}catch(_0x504118){return BPromise[_0x9cd8('0x21')](_0x504118);}return _0xcff39d[_0x9cd8('0x22')]();};}function saveUpdates(_0x175b73,_0x331104){return function(_0x8f7b5e){if(_0x8f7b5e){return _0x8f7b5e[_0x9cd8('0x23')](_0x175b73)['then'](function(_0x41d0b6){return _0x41d0b6;});}return null;};}function removeEntity(_0x246181,_0x1b516d){return function(_0x4f3cc2){if(_0x4f3cc2){return _0x4f3cc2[_0x9cd8('0x24')]()[_0x9cd8('0x25')](function(){_0x246181[_0x9cd8('0x1a')](0xcc)[_0x9cd8('0x26')]();});}};}function handleEntityNotFound(_0x2a7b1,_0x46d053){return function(_0x5aeeb4){if(!_0x5aeeb4){_0x2a7b1[_0x9cd8('0x19')](0x194);}return _0x5aeeb4;};}function handleError(_0x49700e,_0x210a95){_0x210a95=_0x210a95||0x1f4;return function(_0x370bd8){logger[_0x9cd8('0x27')](_0x370bd8[_0x9cd8('0x28')]);if(_0x370bd8[_0x9cd8('0x29')]){delete _0x370bd8['name'];}_0x49700e[_0x9cd8('0x1a')](_0x210a95)[_0x9cd8('0x2a')](_0x370bd8);};}exports['index']=function(_0x276624,_0x580835){var _0x37c23a={},_0x3308e4={},_0xf402b7={'count':0x0,'rows':[]};var _0x2be8e9=_['map'](db[_0x9cd8('0x2b')][_0x9cd8('0x2c')],function(_0x110189){return{'name':_0x110189[_0x9cd8('0x2d')],'type':_0x110189[_0x9cd8('0x2e')][_0x9cd8('0x2f')]};});_0x3308e4[_0x9cd8('0x30')]=_[_0x9cd8('0x31')](_0x2be8e9,_0x9cd8('0x29'));_0x3308e4[_0x9cd8('0x32')]=_[_0x9cd8('0x33')](_0x276624[_0x9cd8('0x32')]);_0x3308e4['filters']=_[_0x9cd8('0x34')](_0x3308e4[_0x9cd8('0x30')],_0x3308e4[_0x9cd8('0x32')]);_0x37c23a['attributes']=_['intersection'](_0x3308e4[_0x9cd8('0x30')],qs['fields'](_0x276624['query'][_0x9cd8('0x35')]));_0x37c23a[_0x9cd8('0x36')]=_0x37c23a[_0x9cd8('0x36')][_0x9cd8('0x37')]?_0x37c23a['attributes']:_0x3308e4[_0x9cd8('0x30')];if(!_0x276624[_0x9cd8('0x32')][_0x9cd8('0x38')]('nolimit')){_0x37c23a[_0x9cd8('0x1e')]=qs['limit'](_0x276624[_0x9cd8('0x32')]['limit']);_0x37c23a[_0x9cd8('0x1c')]=qs[_0x9cd8('0x1c')](_0x276624['query']['offset']);}_0x37c23a[_0x9cd8('0x39')]=qs[_0x9cd8('0x3a')](_0x276624['query'][_0x9cd8('0x3a')]);_0x37c23a['where']=qs[_0x9cd8('0x3b')](_[_0x9cd8('0x3c')](_0x276624[_0x9cd8('0x32')],_0x3308e4[_0x9cd8('0x3b')]),_0x2be8e9);if(_0x276624[_0x9cd8('0x32')]['filter']){_0x37c23a[_0x9cd8('0x3d')]=_[_0x9cd8('0x3e')](_0x37c23a[_0x9cd8('0x3d')],{'$or':_[_0x9cd8('0x31')](_0x2be8e9,function(_0x36058e){if(_0x36058e[_0x9cd8('0x2e')]!=='VIRTUAL'){var _0x5ebb6d={};_0x5ebb6d[_0x36058e[_0x9cd8('0x29')]]={'$like':'%'+_0x276624[_0x9cd8('0x32')][_0x9cd8('0x3f')]+'%'};return _0x5ebb6d;}})});}_0x37c23a=_['merge']({},_0x37c23a,_0x276624[_0x9cd8('0x40')]);var _0x4f7b69={'where':_0x37c23a[_0x9cd8('0x3d')]};return db['SalesforceConfiguration'][_0x9cd8('0x1d')](_0x4f7b69)['then'](function(_0x2c9b9c){_0xf402b7[_0x9cd8('0x1d')]=_0x2c9b9c;if(_0x276624['query'][_0x9cd8('0x41')]){_0x37c23a[_0x9cd8('0x42')]=[{'all':!![]}];}return db[_0x9cd8('0x2b')][_0x9cd8('0x43')](_0x37c23a);})[_0x9cd8('0x25')](function(_0x4a9b0c){_0xf402b7[_0x9cd8('0x44')]=_0x4a9b0c;return _0xf402b7;})[_0x9cd8('0x25')](respondWithFilteredResult(_0x580835,_0x37c23a))[_0x9cd8('0x45')](handleError(_0x580835,null));};exports['show']=function(_0x5eff90,_0x243483){var _0x6abb8={'raw':![],'where':{'id':_0x5eff90[_0x9cd8('0x46')]['id']}},_0x7b74f6={};_0x7b74f6[_0x9cd8('0x30')]=_[_0x9cd8('0x33')](db[_0x9cd8('0x2b')][_0x9cd8('0x2c')]);_0x7b74f6[_0x9cd8('0x32')]=_[_0x9cd8('0x33')](_0x5eff90['query']);_0x7b74f6[_0x9cd8('0x3b')]=_[_0x9cd8('0x34')](_0x7b74f6[_0x9cd8('0x30')],_0x7b74f6['query']);_0x6abb8[_0x9cd8('0x36')]=_['intersection'](_0x7b74f6[_0x9cd8('0x30')],qs[_0x9cd8('0x35')](_0x5eff90[_0x9cd8('0x32')][_0x9cd8('0x35')]));_0x6abb8[_0x9cd8('0x36')]=_0x6abb8[_0x9cd8('0x36')][_0x9cd8('0x37')]?_0x6abb8[_0x9cd8('0x36')]:_0x7b74f6[_0x9cd8('0x30')];if(_0x5eff90[_0x9cd8('0x32')]['includeAll']){_0x6abb8['include']=[{'all':!![]}];}_0x6abb8=_[_0x9cd8('0x3e')]({},_0x6abb8,_0x5eff90[_0x9cd8('0x40')]);return db[_0x9cd8('0x2b')][_0x9cd8('0x47')](_0x6abb8)['then'](handleEntityNotFound(_0x243483,null))[_0x9cd8('0x25')](respondWithResult(_0x243483,null))[_0x9cd8('0x45')](handleError(_0x243483,null));};exports[_0x9cd8('0x48')]=function(_0x4e3aae,_0x118eba){return db[_0x9cd8('0x2b')][_0x9cd8('0x48')](_0x4e3aae[_0x9cd8('0x49')],{})[_0x9cd8('0x25')](respondWithResult(_0x118eba,0xc9))[_0x9cd8('0x45')](handleError(_0x118eba,null));};exports[_0x9cd8('0x23')]=function(_0x35d1d4,_0x4d4f84){if(_0x35d1d4[_0x9cd8('0x49')]['id']){delete _0x35d1d4[_0x9cd8('0x49')]['id'];}return db[_0x9cd8('0x2b')][_0x9cd8('0x47')]({'where':{'id':_0x35d1d4[_0x9cd8('0x46')]['id']}})[_0x9cd8('0x25')](handleEntityNotFound(_0x4d4f84,null))[_0x9cd8('0x25')](saveUpdates(_0x35d1d4['body'],null))[_0x9cd8('0x25')](respondWithResult(_0x4d4f84,null))[_0x9cd8('0x45')](handleError(_0x4d4f84,null));};exports[_0x9cd8('0x24')]=function(_0x2430a0,_0x46990b){return db[_0x9cd8('0x2b')][_0x9cd8('0x47')]({'where':{'id':_0x2430a0[_0x9cd8('0x46')]['id']}})[_0x9cd8('0x25')](handleEntityNotFound(_0x46990b,null))['then'](removeEntity(_0x46990b,null))[_0x9cd8('0x45')](handleError(_0x46990b,null));};exports['getFields']=function(_0x72f124,_0x1293c9,_0x4ea05){var _0x2b10f9={};var _0x325493={};var _0x248429;var _0x4f13f4;return db[_0x9cd8('0x2b')]['findOne']({'where':{'id':_0x72f124[_0x9cd8('0x46')]['id']}})[_0x9cd8('0x25')](handleEntityNotFound(_0x1293c9,null))[_0x9cd8('0x25')](function(_0x478b75){if(_0x478b75){_0x248429=_0x478b75;_0x325493['model']=_[_0x9cd8('0x33')](db['SalesforceField']['rawAttributes']);_0x325493[_0x9cd8('0x32')]=_[_0x9cd8('0x33')](_0x72f124[_0x9cd8('0x32')]);_0x325493[_0x9cd8('0x3b')]=_[_0x9cd8('0x34')](_0x325493[_0x9cd8('0x30')],_0x325493[_0x9cd8('0x32')]);_0x2b10f9[_0x9cd8('0x36')]=_['intersection'](_0x325493['model'],qs['fields'](_0x72f124[_0x9cd8('0x32')][_0x9cd8('0x35')]));_0x2b10f9[_0x9cd8('0x36')]=_0x2b10f9[_0x9cd8('0x36')]['length']?_0x2b10f9[_0x9cd8('0x36')]:_0x325493[_0x9cd8('0x30')];_0x2b10f9[_0x9cd8('0x39')]=qs[_0x9cd8('0x3a')](_0x72f124[_0x9cd8('0x32')][_0x9cd8('0x3a')]);_0x2b10f9[_0x9cd8('0x3d')]=qs[_0x9cd8('0x3b')](_[_0x9cd8('0x3c')](_0x72f124['query'],_0x325493[_0x9cd8('0x3b')]));if(_0x72f124[_0x9cd8('0x32')]['filter']){_0x2b10f9[_0x9cd8('0x3d')]=_[_0x9cd8('0x3e')](_0x2b10f9[_0x9cd8('0x3d')],{'$or':_[_0x9cd8('0x31')](_0x2b10f9[_0x9cd8('0x36')],function(_0x988bef){var _0x481e50={};_0x481e50[_0x988bef]={'$like':'%'+_0x72f124[_0x9cd8('0x32')][_0x9cd8('0x3f')]+'%'};return _0x481e50;})});}_0x2b10f9=_[_0x9cd8('0x3e')]({},_0x2b10f9,_0x72f124[_0x9cd8('0x40')]);return _0x248429[_0x9cd8('0x4a')](_0x2b10f9);}})['then'](function(_0x191a7){if(_0x191a7){_0x4f13f4=_0x191a7['length'];if(!_0x72f124[_0x9cd8('0x32')][_0x9cd8('0x38')]('nolimit')){_0x2b10f9[_0x9cd8('0x1e')]=qs['limit'](_0x72f124['query'][_0x9cd8('0x1e')]);_0x2b10f9[_0x9cd8('0x1c')]=qs[_0x9cd8('0x1c')](_0x72f124[_0x9cd8('0x32')]['offset']);}return _0x248429[_0x9cd8('0x4a')](_0x2b10f9);}})[_0x9cd8('0x25')](function(_0x14ce9b){if(_0x14ce9b){return _0x14ce9b?{'count':_0x4f13f4,'rows':_0x14ce9b}:null;}})['then'](respondWithResult(_0x1293c9,null))['catch'](handleError(_0x1293c9,null));};exports[_0x9cd8('0x4b')]=function(_0x13eb75,_0x18a906,_0x236959){var _0x4efe84={};var _0x18ae39={};var _0x3e3618;var _0x117182;return db['SalesforceConfiguration'][_0x9cd8('0x4c')]({'where':{'id':_0x13eb75[_0x9cd8('0x46')]['id']}})['then'](handleEntityNotFound(_0x18a906,null))[_0x9cd8('0x25')](function(_0xf0dcff){if(_0xf0dcff){_0x3e3618=_0xf0dcff;_0x18ae39['model']=_[_0x9cd8('0x33')](db[_0x9cd8('0x4d')][_0x9cd8('0x2c')]);_0x18ae39[_0x9cd8('0x32')]=_[_0x9cd8('0x33')](_0x13eb75[_0x9cd8('0x32')]);_0x18ae39[_0x9cd8('0x3b')]=_[_0x9cd8('0x34')](_0x18ae39[_0x9cd8('0x30')],_0x18ae39[_0x9cd8('0x32')]);_0x4efe84[_0x9cd8('0x36')]=_[_0x9cd8('0x34')](_0x18ae39[_0x9cd8('0x30')],qs['fields'](_0x13eb75[_0x9cd8('0x32')]['fields']));_0x4efe84[_0x9cd8('0x36')]=_0x4efe84[_0x9cd8('0x36')]['length']?_0x4efe84['attributes']:_0x18ae39[_0x9cd8('0x30')];_0x4efe84[_0x9cd8('0x39')]=qs['sort'](_0x13eb75['query']['sort']);_0x4efe84['where']=qs[_0x9cd8('0x3b')](_[_0x9cd8('0x3c')](_0x13eb75[_0x9cd8('0x32')],_0x18ae39[_0x9cd8('0x3b')]));if(_0x13eb75['query'][_0x9cd8('0x3f')]){_0x4efe84[_0x9cd8('0x3d')]=_[_0x9cd8('0x3e')](_0x4efe84['where'],{'$or':_[_0x9cd8('0x31')](_0x4efe84[_0x9cd8('0x36')],function(_0x55a296){var _0x471805={};_0x471805[_0x55a296]={'$like':'%'+_0x13eb75[_0x9cd8('0x32')][_0x9cd8('0x3f')]+'%'};return _0x471805;})});}_0x4efe84=_[_0x9cd8('0x3e')]({},_0x4efe84,_0x13eb75[_0x9cd8('0x40')]);return _0x3e3618[_0x9cd8('0x4b')](_0x4efe84);}})[_0x9cd8('0x25')](function(_0x278fb5){if(_0x278fb5){_0x117182=_0x278fb5['length'];if(!_0x13eb75[_0x9cd8('0x32')][_0x9cd8('0x38')](_0x9cd8('0x4e'))){_0x4efe84[_0x9cd8('0x1e')]=qs[_0x9cd8('0x1e')](_0x13eb75['query']['limit']);_0x4efe84[_0x9cd8('0x1c')]=qs[_0x9cd8('0x1c')](_0x13eb75[_0x9cd8('0x32')]['offset']);}return _0x3e3618['getSubjects'](_0x4efe84);}})['then'](function(_0x5824bf){if(_0x5824bf){return _0x5824bf?{'count':_0x117182,'rows':_0x5824bf}:null;}})[_0x9cd8('0x25')](respondWithResult(_0x18a906,null))[_0x9cd8('0x45')](handleError(_0x18a906,null));};exports[_0x9cd8('0x4f')]=function(_0x55214b,_0x16422e,_0x179877){var _0x5c918f={};var _0xb31fcb={};var _0x9e7f69;var _0x56d118;return db['SalesforceConfiguration'][_0x9cd8('0x4c')]({'where':{'id':_0x55214b[_0x9cd8('0x46')]['id']}})['then'](handleEntityNotFound(_0x16422e,null))[_0x9cd8('0x25')](function(_0x1e84ee){if(_0x1e84ee){_0x9e7f69=_0x1e84ee;_0xb31fcb[_0x9cd8('0x30')]=_[_0x9cd8('0x33')](db[_0x9cd8('0x4d')][_0x9cd8('0x2c')]);_0xb31fcb[_0x9cd8('0x32')]=_[_0x9cd8('0x33')](_0x55214b[_0x9cd8('0x32')]);_0xb31fcb[_0x9cd8('0x3b')]=_[_0x9cd8('0x34')](_0xb31fcb['model'],_0xb31fcb[_0x9cd8('0x32')]);_0x5c918f[_0x9cd8('0x36')]=_[_0x9cd8('0x34')](_0xb31fcb['model'],qs['fields'](_0x55214b[_0x9cd8('0x32')]['fields']));_0x5c918f[_0x9cd8('0x36')]=_0x5c918f[_0x9cd8('0x36')][_0x9cd8('0x37')]?_0x5c918f['attributes']:_0xb31fcb['model'];_0x5c918f[_0x9cd8('0x39')]=qs['sort'](_0x55214b[_0x9cd8('0x32')]['sort']);_0x5c918f[_0x9cd8('0x3d')]=qs[_0x9cd8('0x3b')](_['pick'](_0x55214b[_0x9cd8('0x32')],_0xb31fcb[_0x9cd8('0x3b')]));if(_0x55214b[_0x9cd8('0x32')][_0x9cd8('0x3f')]){_0x5c918f[_0x9cd8('0x3d')]=_['merge'](_0x5c918f[_0x9cd8('0x3d')],{'$or':_[_0x9cd8('0x31')](_0x5c918f[_0x9cd8('0x36')],function(_0x354edd){var _0x21fdf5={};_0x21fdf5[_0x354edd]={'$like':'%'+_0x55214b[_0x9cd8('0x32')]['filter']+'%'};return _0x21fdf5;})});}_0x5c918f=_[_0x9cd8('0x3e')]({},_0x5c918f,_0x55214b[_0x9cd8('0x40')]);return _0x9e7f69[_0x9cd8('0x4f')](_0x5c918f);}})[_0x9cd8('0x25')](function(_0xcc87c3){if(_0xcc87c3){_0x56d118=_0xcc87c3[_0x9cd8('0x37')];if(!_0x55214b[_0x9cd8('0x32')][_0x9cd8('0x38')](_0x9cd8('0x4e'))){_0x5c918f[_0x9cd8('0x1e')]=qs['limit'](_0x55214b[_0x9cd8('0x32')]['limit']);_0x5c918f[_0x9cd8('0x1c')]=qs[_0x9cd8('0x1c')](_0x55214b[_0x9cd8('0x32')][_0x9cd8('0x1c')]);}return _0x9e7f69[_0x9cd8('0x4f')](_0x5c918f);}})['then'](function(_0x43c176){if(_0x43c176){return _0x43c176?{'count':_0x56d118,'rows':_0x43c176}:null;}})[_0x9cd8('0x25')](respondWithResult(_0x16422e,null))[_0x9cd8('0x45')](handleError(_0x16422e,null));};
\ No newline at end of file
+var _0xe14b=['lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','json','apply','save','update','then','error','stack','name','send','map','SalesforceConfiguration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','length','attributes','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','destroy','getFields','findOne','SalesforceField','getSubjects','getDescriptions','eml-format','rimraf','request-promise','moment','mustache','sox','to-csv','ejs','fs-extra'];(function(_0x57ec13,_0x510a1c){var _0x527de3=function(_0x1a77b6){while(--_0x1a77b6){_0x57ec13['push'](_0x57ec13['shift']());}};_0x527de3(++_0x510a1c);}(_0xe14b,0x93));var _0xbe14=function(_0x24f799,_0x1223f1){_0x24f799=_0x24f799-0x0;var _0x3979bf=_0xe14b[_0x24f799];return _0x3979bf;};'use strict';var emlformat=require(_0xbe14('0x0'));var rimraf=require(_0xbe14('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbe14('0x2'));var moment=require(_0xbe14('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xbe14('0x4'));var util=require('util');var path=require('path');var sox=require(_0xbe14('0x5'));var csv=require(_0xbe14('0x6'));var ejs=require(_0xbe14('0x7'));var fs=require('fs');var fs_extra=require(_0xbe14('0x8'));var _=require(_0xbe14('0x9'));var squel=require(_0xbe14('0xa'));var crypto=require(_0xbe14('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xbe14('0xc'));var Papa=require(_0xbe14('0xd'));var Redis=require(_0xbe14('0xe'));var authService=require(_0xbe14('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe14('0x10'));var logger=require(_0xbe14('0x11'))('api');var utils=require(_0xbe14('0x12'));var config=require(_0xbe14('0x13'));var licenseUtil=require(_0xbe14('0x14'));var db=require(_0xbe14('0x15'))['db'];function respondWithStatusCode(_0x27792f,_0x3b898d){_0x3b898d=_0x3b898d||0xcc;return function(_0x23a730){if(_0x23a730){return _0x27792f[_0xbe14('0x16')](_0x3b898d);}return _0x27792f[_0xbe14('0x17')](_0x3b898d)[_0xbe14('0x18')]();};}function respondWithResult(_0x1e4826,_0x33fd54){_0x33fd54=_0x33fd54||0xc8;return function(_0x813399){if(_0x813399){return _0x1e4826['status'](_0x33fd54)['json'](_0x813399);}};}function respondWithFilteredResult(_0x3f58f5,_0x3dc4a9){return function(_0xf4ac9){if(_0xf4ac9){var _0x37ce4e=typeof _0x3dc4a9['offset']===_0xbe14('0x19')&&typeof _0x3dc4a9[_0xbe14('0x1a')]===_0xbe14('0x19');var _0x123ede=_0xf4ac9[_0xbe14('0x1b')];var _0x29ab73=_0x37ce4e?0x0:_0x3dc4a9[_0xbe14('0x1c')];var _0x5ea1f8=_0x37ce4e?_0xf4ac9[_0xbe14('0x1b')]:_0x3dc4a9[_0xbe14('0x1c')]+_0x3dc4a9[_0xbe14('0x1a')];var _0x433459;if(_0x5ea1f8>=_0x123ede){_0x5ea1f8=_0x123ede;_0x433459=0xc8;}else{_0x433459=0xce;}_0x3f58f5[_0xbe14('0x17')](_0x433459);return _0x3f58f5[_0xbe14('0x1d')]('Content-Range',_0x29ab73+'-'+_0x5ea1f8+'/'+_0x123ede)[_0xbe14('0x1e')](_0xf4ac9);}return null;};}function patchUpdates(_0x4a1bbd){return function(_0x417c8d){try{jsonpatch[_0xbe14('0x1f')](_0x417c8d,_0x4a1bbd,!![]);}catch(_0x188ec4){return BPromise['reject'](_0x188ec4);}return _0x417c8d[_0xbe14('0x20')]();};}function saveUpdates(_0x56d845,_0x3c1c85){return function(_0x56e80c){if(_0x56e80c){return _0x56e80c[_0xbe14('0x21')](_0x56d845)['then'](function(_0x274018){return _0x274018;});}return null;};}function removeEntity(_0x3d3608,_0x505dbd){return function(_0x2da350){if(_0x2da350){return _0x2da350['destroy']()[_0xbe14('0x22')](function(){_0x3d3608['status'](0xcc)[_0xbe14('0x18')]();});}};}function handleEntityNotFound(_0x5fa043,_0x1ee9c1){return function(_0x39cc81){if(!_0x39cc81){_0x5fa043[_0xbe14('0x16')](0x194);}return _0x39cc81;};}function handleError(_0x2703f5,_0x55d001){_0x55d001=_0x55d001||0x1f4;return function(_0x1822e0){logger[_0xbe14('0x23')](_0x1822e0[_0xbe14('0x24')]);if(_0x1822e0[_0xbe14('0x25')]){delete _0x1822e0['name'];}_0x2703f5[_0xbe14('0x17')](_0x55d001)[_0xbe14('0x26')](_0x1822e0);};}exports['index']=function(_0x3c3613,_0x3b3e84){var _0x1c7cc7={},_0x19252f={},_0x34d648={'count':0x0,'rows':[]};var _0x36d4b2=_[_0xbe14('0x27')](db[_0xbe14('0x28')][_0xbe14('0x29')],function(_0x16a159){return{'name':_0x16a159[_0xbe14('0x2a')],'type':_0x16a159[_0xbe14('0x2b')][_0xbe14('0x2c')]};});_0x19252f[_0xbe14('0x2d')]=_[_0xbe14('0x27')](_0x36d4b2,_0xbe14('0x25'));_0x19252f[_0xbe14('0x2e')]=_[_0xbe14('0x2f')](_0x3c3613[_0xbe14('0x2e')]);_0x19252f[_0xbe14('0x30')]=_['intersection'](_0x19252f[_0xbe14('0x2d')],_0x19252f['query']);_0x1c7cc7['attributes']=_[_0xbe14('0x31')](_0x19252f['model'],qs[_0xbe14('0x32')](_0x3c3613[_0xbe14('0x2e')]['fields']));_0x1c7cc7['attributes']=_0x1c7cc7['attributes'][_0xbe14('0x33')]?_0x1c7cc7[_0xbe14('0x34')]:_0x19252f['model'];if(!_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x1c7cc7[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x3c3613['query']['limit']);_0x1c7cc7[_0xbe14('0x1c')]=qs['offset'](_0x3c3613['query']['offset']);}_0x1c7cc7[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x1c7cc7[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x3c3613[_0xbe14('0x2e')],_0x19252f[_0xbe14('0x30')]),_0x36d4b2);if(_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x1c7cc7[_0xbe14('0x39')]=_['merge'](_0x1c7cc7['where'],{'$or':_[_0xbe14('0x27')](_0x36d4b2,function(_0x2951e1){if(_0x2951e1[_0xbe14('0x2b')]!=='VIRTUAL'){var _0x326329={};_0x326329[_0x2951e1[_0xbe14('0x25')]]={'$like':'%'+_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x326329;}})});}_0x1c7cc7=_[_0xbe14('0x3c')]({},_0x1c7cc7,_0x3c3613[_0xbe14('0x3d')]);var _0x19fa30={'where':_0x1c7cc7[_0xbe14('0x39')]};return db[_0xbe14('0x28')]['count'](_0x19fa30)[_0xbe14('0x22')](function(_0x841b71){_0x34d648[_0xbe14('0x1b')]=_0x841b71;if(_0x3c3613[_0xbe14('0x2e')][_0xbe14('0x3e')]){_0x1c7cc7[_0xbe14('0x3f')]=[{'all':!![]}];}return db['SalesforceConfiguration'][_0xbe14('0x40')](_0x1c7cc7);})[_0xbe14('0x22')](function(_0x1220c9){_0x34d648[_0xbe14('0x41')]=_0x1220c9;return _0x34d648;})['then'](respondWithFilteredResult(_0x3b3e84,_0x1c7cc7))['catch'](handleError(_0x3b3e84,null));};exports[_0xbe14('0x42')]=function(_0xe417b,_0x3272ae){var _0x51c859={'raw':![],'where':{'id':_0xe417b[_0xbe14('0x43')]['id']}},_0x5d5318={};_0x5d5318['model']=_['keys'](db[_0xbe14('0x28')][_0xbe14('0x29')]);_0x5d5318[_0xbe14('0x2e')]=_['keys'](_0xe417b['query']);_0x5d5318['filters']=_[_0xbe14('0x31')](_0x5d5318[_0xbe14('0x2d')],_0x5d5318[_0xbe14('0x2e')]);_0x51c859['attributes']=_[_0xbe14('0x31')](_0x5d5318[_0xbe14('0x2d')],qs[_0xbe14('0x32')](_0xe417b[_0xbe14('0x2e')]['fields']));_0x51c859['attributes']=_0x51c859[_0xbe14('0x34')][_0xbe14('0x33')]?_0x51c859[_0xbe14('0x34')]:_0x5d5318[_0xbe14('0x2d')];if(_0xe417b[_0xbe14('0x2e')]['includeAll']){_0x51c859['include']=[{'all':!![]}];}_0x51c859=_[_0xbe14('0x3c')]({},_0x51c859,_0xe417b[_0xbe14('0x3d')]);return db[_0xbe14('0x28')][_0xbe14('0x44')](_0x51c859)['then'](handleEntityNotFound(_0x3272ae,null))[_0xbe14('0x22')](respondWithResult(_0x3272ae,null))[_0xbe14('0x45')](handleError(_0x3272ae,null));};exports['create']=function(_0x396e40,_0x2a35e5){return db[_0xbe14('0x28')][_0xbe14('0x46')](_0x396e40['body'],{})['then'](respondWithResult(_0x2a35e5,0xc9))[_0xbe14('0x45')](handleError(_0x2a35e5,null));};exports[_0xbe14('0x21')]=function(_0x4a1a37,_0x5acf90){if(_0x4a1a37[_0xbe14('0x47')]['id']){delete _0x4a1a37[_0xbe14('0x47')]['id'];}return db[_0xbe14('0x28')][_0xbe14('0x44')]({'where':{'id':_0x4a1a37[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x5acf90,null))[_0xbe14('0x22')](saveUpdates(_0x4a1a37['body'],null))[_0xbe14('0x22')](respondWithResult(_0x5acf90,null))[_0xbe14('0x45')](handleError(_0x5acf90,null));};exports[_0xbe14('0x48')]=function(_0x22b1f8,_0x2fc073){return db['SalesforceConfiguration'][_0xbe14('0x44')]({'where':{'id':_0x22b1f8[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x2fc073,null))[_0xbe14('0x22')](removeEntity(_0x2fc073,null))[_0xbe14('0x45')](handleError(_0x2fc073,null));};exports[_0xbe14('0x49')]=function(_0x505829,_0x5aeea9,_0x3a49f7){var _0x2bde72={};var _0x1c078d={};var _0x48554a;var _0x497b00;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x505829['params']['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x5aeea9,null))[_0xbe14('0x22')](function(_0x50c2a0){if(_0x50c2a0){_0x48554a=_0x50c2a0;_0x1c078d[_0xbe14('0x2d')]=_['keys'](db[_0xbe14('0x4b')][_0xbe14('0x29')]);_0x1c078d[_0xbe14('0x2e')]=_['keys'](_0x505829[_0xbe14('0x2e')]);_0x1c078d[_0xbe14('0x30')]=_['intersection'](_0x1c078d[_0xbe14('0x2d')],_0x1c078d[_0xbe14('0x2e')]);_0x2bde72[_0xbe14('0x34')]=_[_0xbe14('0x31')](_0x1c078d[_0xbe14('0x2d')],qs['fields'](_0x505829[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x2bde72[_0xbe14('0x34')]=_0x2bde72[_0xbe14('0x34')][_0xbe14('0x33')]?_0x2bde72[_0xbe14('0x34')]:_0x1c078d[_0xbe14('0x2d')];_0x2bde72['order']=qs[_0xbe14('0x38')](_0x505829[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x2bde72[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x505829[_0xbe14('0x2e')],_0x1c078d[_0xbe14('0x30')]));if(_0x505829[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x2bde72[_0xbe14('0x39')]=_['merge'](_0x2bde72['where'],{'$or':_['map'](_0x2bde72[_0xbe14('0x34')],function(_0x1bfcbf){var _0x2f4e52={};_0x2f4e52[_0x1bfcbf]={'$like':'%'+_0x505829[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x2f4e52;})});}_0x2bde72=_[_0xbe14('0x3c')]({},_0x2bde72,_0x505829[_0xbe14('0x3d')]);return _0x48554a[_0xbe14('0x49')](_0x2bde72);}})[_0xbe14('0x22')](function(_0x451b0b){if(_0x451b0b){_0x497b00=_0x451b0b[_0xbe14('0x33')];if(!_0x505829[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x2bde72[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x505829[_0xbe14('0x2e')][_0xbe14('0x1a')]);_0x2bde72[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x505829['query'][_0xbe14('0x1c')]);}return _0x48554a[_0xbe14('0x49')](_0x2bde72);}})[_0xbe14('0x22')](function(_0x46b49c){if(_0x46b49c){return _0x46b49c?{'count':_0x497b00,'rows':_0x46b49c}:null;}})[_0xbe14('0x22')](respondWithResult(_0x5aeea9,null))[_0xbe14('0x45')](handleError(_0x5aeea9,null));};exports[_0xbe14('0x4c')]=function(_0x310311,_0x23cb36,_0x100d43){var _0x5917d5={};var _0x18be56={};var _0x442ec4;var _0x2d4dd4;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x310311['params']['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x23cb36,null))[_0xbe14('0x22')](function(_0x3d186b){if(_0x3d186b){_0x442ec4=_0x3d186b;_0x18be56[_0xbe14('0x2d')]=_[_0xbe14('0x2f')](db['SalesforceField'][_0xbe14('0x29')]);_0x18be56[_0xbe14('0x2e')]=_[_0xbe14('0x2f')](_0x310311[_0xbe14('0x2e')]);_0x18be56[_0xbe14('0x30')]=_[_0xbe14('0x31')](_0x18be56[_0xbe14('0x2d')],_0x18be56[_0xbe14('0x2e')]);_0x5917d5['attributes']=_[_0xbe14('0x31')](_0x18be56[_0xbe14('0x2d')],qs[_0xbe14('0x32')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x5917d5[_0xbe14('0x34')]=_0x5917d5[_0xbe14('0x34')]['length']?_0x5917d5['attributes']:_0x18be56[_0xbe14('0x2d')];_0x5917d5[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x5917d5[_0xbe14('0x39')]=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x310311['query'],_0x18be56['filters']));if(_0x310311[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x5917d5[_0xbe14('0x39')]=_['merge'](_0x5917d5[_0xbe14('0x39')],{'$or':_[_0xbe14('0x27')](_0x5917d5[_0xbe14('0x34')],function(_0x1797dd){var _0x468e9f={};_0x468e9f[_0x1797dd]={'$like':'%'+_0x310311[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x468e9f;})});}_0x5917d5=_['merge']({},_0x5917d5,_0x310311[_0xbe14('0x3d')]);return _0x442ec4[_0xbe14('0x4c')](_0x5917d5);}})[_0xbe14('0x22')](function(_0x3afc5a){if(_0x3afc5a){_0x2d4dd4=_0x3afc5a[_0xbe14('0x33')];if(!_0x310311[_0xbe14('0x2e')][_0xbe14('0x35')]('nolimit')){_0x5917d5[_0xbe14('0x1a')]=qs[_0xbe14('0x1a')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x1a')]);_0x5917d5[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x310311[_0xbe14('0x2e')][_0xbe14('0x1c')]);}return _0x442ec4['getSubjects'](_0x5917d5);}})[_0xbe14('0x22')](function(_0x401968){if(_0x401968){return _0x401968?{'count':_0x2d4dd4,'rows':_0x401968}:null;}})[_0xbe14('0x22')](respondWithResult(_0x23cb36,null))[_0xbe14('0x45')](handleError(_0x23cb36,null));};exports[_0xbe14('0x4d')]=function(_0x17576b,_0x4d59ce,_0x176099){var _0x175213={};var _0x1edc66={};var _0x1b23a1;var _0x508455;return db[_0xbe14('0x28')][_0xbe14('0x4a')]({'where':{'id':_0x17576b[_0xbe14('0x43')]['id']}})[_0xbe14('0x22')](handleEntityNotFound(_0x4d59ce,null))[_0xbe14('0x22')](function(_0x3d54e4){if(_0x3d54e4){_0x1b23a1=_0x3d54e4;_0x1edc66[_0xbe14('0x2d')]=_['keys'](db[_0xbe14('0x4b')]['rawAttributes']);_0x1edc66[_0xbe14('0x2e')]=_['keys'](_0x17576b[_0xbe14('0x2e')]);_0x1edc66[_0xbe14('0x30')]=_[_0xbe14('0x31')](_0x1edc66['model'],_0x1edc66[_0xbe14('0x2e')]);_0x175213[_0xbe14('0x34')]=_[_0xbe14('0x31')](_0x1edc66['model'],qs[_0xbe14('0x32')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x32')]));_0x175213[_0xbe14('0x34')]=_0x175213['attributes'][_0xbe14('0x33')]?_0x175213[_0xbe14('0x34')]:_0x1edc66[_0xbe14('0x2d')];_0x175213[_0xbe14('0x37')]=qs[_0xbe14('0x38')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x38')]);_0x175213['where']=qs[_0xbe14('0x30')](_[_0xbe14('0x3a')](_0x17576b[_0xbe14('0x2e')],_0x1edc66['filters']));if(_0x17576b[_0xbe14('0x2e')][_0xbe14('0x3b')]){_0x175213[_0xbe14('0x39')]=_['merge'](_0x175213[_0xbe14('0x39')],{'$or':_[_0xbe14('0x27')](_0x175213['attributes'],function(_0x2be969){var _0x49990b={};_0x49990b[_0x2be969]={'$like':'%'+_0x17576b[_0xbe14('0x2e')][_0xbe14('0x3b')]+'%'};return _0x49990b;})});}_0x175213=_['merge']({},_0x175213,_0x17576b['options']);return _0x1b23a1[_0xbe14('0x4d')](_0x175213);}})[_0xbe14('0x22')](function(_0x29287a){if(_0x29287a){_0x508455=_0x29287a['length'];if(!_0x17576b[_0xbe14('0x2e')][_0xbe14('0x35')](_0xbe14('0x36'))){_0x175213[_0xbe14('0x1a')]=qs['limit'](_0x17576b['query'][_0xbe14('0x1a')]);_0x175213[_0xbe14('0x1c')]=qs[_0xbe14('0x1c')](_0x17576b[_0xbe14('0x2e')][_0xbe14('0x1c')]);}return _0x1b23a1[_0xbe14('0x4d')](_0x175213);}})[_0xbe14('0x22')](function(_0x4e5a63){if(_0x4e5a63){return _0x4e5a63?{'count':_0x508455,'rows':_0x4e5a63}:null;}})[_0xbe14('0x22')](respondWithResult(_0x4d59ce,null))['catch'](handleError(_0x4d59ce,null));};
\ No newline at end of file
index f37fea7..9e8c0cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ca=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','lodash','util','api'];(function(_0x42ead6,_0x1c1b1c){var _0xdadbff=function(_0x400edc){while(--_0x400edc){_0x42ead6['push'](_0x42ead6['shift']());}};_0xdadbff(++_0x1c1b1c);}(_0x94ca,0x111));var _0xa94c=function(_0x1f8fa4,_0xbb785){_0x1f8fa4=_0x1f8fa4-0x0;var _0x2ff529=_0x94ca[_0x1f8fa4];return _0x2ff529;};'use strict';var _=require(_0xa94c('0x0'));var util=require(_0xa94c('0x1'));var logger=require('../../config/logger')(_0xa94c('0x2'));var moment=require(_0xa94c('0x3'));var BPromise=require(_0xa94c('0x4'));var rp=require(_0xa94c('0x5'));var fs=require('fs');var path=require(_0xa94c('0x6'));var rimraf=require(_0xa94c('0x7'));var config=require(_0xa94c('0x8'));var attributes=require(_0xa94c('0x9'));module['exports']=function(_0x69d7b8,_0x49474e){return _0x69d7b8[_0xa94c('0xa')](_0xa94c('0xb'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x79aa=['int_salesforce_configurations','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','SalesforceConfiguration'];(function(_0x3818f0,_0x328080){var _0x5466cb=function(_0x50932c){while(--_0x50932c){_0x3818f0['push'](_0x3818f0['shift']());}};_0x5466cb(++_0x328080);}(_0x79aa,0x177));var _0xa79a=function(_0x290907,_0x1e8855){_0x290907=_0x290907-0x0;var _0x4d5e48=_0x79aa[_0x290907];return _0x4d5e48;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xa79a('0x0'))(_0xa79a('0x1'));var moment=require(_0xa79a('0x2'));var BPromise=require(_0xa79a('0x3'));var rp=require(_0xa79a('0x4'));var fs=require('fs');var path=require(_0xa79a('0x5'));var rimraf=require(_0xa79a('0x6'));var config=require(_0xa79a('0x7'));var attributes=require('./intSalesforceConfiguration.attributes');module['exports']=function(_0x184682,_0x5b8d4d){return _0x184682[_0xa79a('0x8')](_0xa79a('0x9'),attributes,{'tableName':_0xa79a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fddafaf..ce43f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfece=['stringify','error','code','message','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x465fa1,_0x46b71d){var _0x2d05f5=function(_0x159c87){while(--_0x159c87){_0x465fa1['push'](_0x465fa1['shift']());}};_0x2d05f5(++_0x46b71d);}(_0xfece,0xf5));var _0xefec=function(_0x2175a6,_0x5075f8){_0x2175a6=_0x2175a6-0x0;var _0x460f6=_0xfece[_0x2175a6];return _0x460f6;};'use strict';var _=require(_0xefec('0x0'));var util=require(_0xefec('0x1'));var moment=require('moment');var BPromise=require(_0xefec('0x2'));var rs=require(_0xefec('0x3'));var fs=require('fs');var Redis=require(_0xefec('0x4'));var db=require(_0xefec('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xefec('0x6'))('rpc');var config=require(_0xefec('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xefec('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x52cbc4,_0x51b973,_0x5f5133){return new BPromise(function(_0x4f8544,_0x445cce){return client[_0xefec('0x9')](_0x52cbc4,_0x5f5133)[_0xefec('0xa')](function(_0x4354c0){logger[_0xefec('0xb')](_0xefec('0xc'),_0x51b973,_0xefec('0xd'));logger[_0xefec('0xe')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x51b973,_0xefec('0xd'),JSON[_0xefec('0xf')](_0x4354c0));if(_0x4354c0[_0xefec('0x10')]){if(_0x4354c0[_0xefec('0x10')][_0xefec('0x11')]===0x1f4){logger[_0xefec('0x10')](_0xefec('0xc'),_0x51b973,_0x4354c0['error'][_0xefec('0x12')]);return _0x445cce(_0x4354c0[_0xefec('0x10')][_0xefec('0x12')]);}logger['error'](_0xefec('0xc'),_0x51b973,_0x4354c0['error'][_0xefec('0x12')]);return _0x4f8544(_0x4354c0['error'][_0xefec('0x12')]);}else{logger[_0xefec('0xb')](_0xefec('0xc'),_0x51b973,_0xefec('0xd'));_0x4f8544(_0x4354c0['result'][_0xefec('0x12')]);}})[_0xefec('0x13')](function(_0x2577e9){logger[_0xefec('0x10')](_0xefec('0xc'),_0x51b973,_0x2577e9);_0x445cce(_0x2577e9);});});}
\ No newline at end of file
+var _0x9bab=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','http','info','SalesforceConfiguration,\x20%s,\x20%s','debug','stringify','error','message','request\x20sent','result','catch','lodash'];(function(_0x3e061d,_0x59fa63){var _0xbb3fa2=function(_0x1b1c9a){while(--_0x1b1c9a){_0x3e061d['push'](_0x3e061d['shift']());}};_0xbb3fa2(++_0x59fa63);}(_0x9bab,0x1cb));var _0xb9ba=function(_0x4d6740,_0x55b1c3){_0x4d6740=_0x4d6740-0x0;var _0x418154=_0x9bab[_0x4d6740];return _0x418154;};'use strict';var _=require(_0xb9ba('0x0'));var util=require(_0xb9ba('0x1'));var moment=require(_0xb9ba('0x2'));var BPromise=require(_0xb9ba('0x3'));var rs=require(_0xb9ba('0x4'));var fs=require('fs');var Redis=require(_0xb9ba('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb9ba('0x6'));var logger=require(_0xb9ba('0x7'))(_0xb9ba('0x8'));var config=require(_0xb9ba('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb9ba('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b78c2,_0x3e41ea,_0xdbf524){return new BPromise(function(_0x4371d8,_0x4dbaba){return client['request'](_0x2b78c2,_0xdbf524)['then'](function(_0x6999){logger[_0xb9ba('0xb')](_0xb9ba('0xc'),_0x3e41ea,'request\x20sent');logger[_0xb9ba('0xd')]('SalesforceConfiguration,\x20%s,\x20%s,\x20%s',_0x3e41ea,'request\x20sent',JSON[_0xb9ba('0xe')](_0x6999));if(_0x6999[_0xb9ba('0xf')]){if(_0x6999[_0xb9ba('0xf')]['code']===0x1f4){logger[_0xb9ba('0xf')](_0xb9ba('0xc'),_0x3e41ea,_0x6999['error']['message']);return _0x4dbaba(_0x6999[_0xb9ba('0xf')][_0xb9ba('0x10')]);}logger[_0xb9ba('0xf')](_0xb9ba('0xc'),_0x3e41ea,_0x6999['error'][_0xb9ba('0x10')]);return _0x4371d8(_0x6999[_0xb9ba('0xf')][_0xb9ba('0x10')]);}else{logger[_0xb9ba('0xb')](_0xb9ba('0xc'),_0x3e41ea,_0xb9ba('0x11'));_0x4371d8(_0x6999[_0xb9ba('0x12')][_0xb9ba('0x10')]);}})[_0xb9ba('0x13')](function(_0x508461){logger[_0xb9ba('0xf')]('SalesforceConfiguration,\x20%s,\x20%s',_0x3e41ea,_0x508461);_0x4dbaba(_0x508461);});});}
\ No newline at end of file
index aa66e84..dd16bd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x368f=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','get','isAuthenticated','post','put','/:id','update','destroy','exports','multer','util','express','Router','fs-extra'];(function(_0x482484,_0x4b2f85){var _0x49c432=function(_0x59a46b){while(--_0x59a46b){_0x482484['push'](_0x482484['shift']());}};_0x49c432(++_0x4b2f85);}(_0x368f,0x12d));var _0xf368=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x368f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xf368('0x0'));var util=require(_0xf368('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf368('0x2'));var router=express[_0xf368('0x3')]();var fs_extra=require(_0xf368('0x4'));var auth=require(_0xf368('0x5'));var interaction=require(_0xf368('0x6'));var config=require(_0xf368('0x7'));var controller=require(_0xf368('0x8'));router[_0xf368('0x9')]('/',auth[_0xf368('0xa')](),controller['index']);router[_0xf368('0x9')]('/:id',auth[_0xf368('0xa')](),controller['show']);router[_0xf368('0xb')]('/',auth[_0xf368('0xa')](),controller['create']);router[_0xf368('0xc')](_0xf368('0xd'),auth[_0xf368('0xa')](),controller[_0xf368('0xe')]);router['delete'](_0xf368('0xd'),auth[_0xf368('0xa')](),controller[_0xf368('0xf')]);module[_0xf368('0x10')]=router;
\ No newline at end of file
+var _0x4e5e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceField.controller','isAuthenticated','get','/:id','show','create','put','delete','destroy','exports','connect-timeout','Router','fs-extra'];(function(_0x2a5245,_0x164c03){var _0x144461=function(_0x5b2fb2){while(--_0x5b2fb2){_0x2a5245['push'](_0x2a5245['shift']());}};_0x144461(++_0x164c03);}(_0x4e5e,0x10d));var _0xe4e5=function(_0x12db83,_0x1cb1ae){_0x12db83=_0x12db83-0x0;var _0x5a1863=_0x4e5e[_0x12db83];return _0x5a1863;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xe4e5('0x0'));var express=require('express');var router=express[_0xe4e5('0x1')]();var fs_extra=require(_0xe4e5('0x2'));var auth=require(_0xe4e5('0x3'));var interaction=require(_0xe4e5('0x4'));var config=require(_0xe4e5('0x5'));var controller=require(_0xe4e5('0x6'));router['get']('/',auth[_0xe4e5('0x7')](),controller['index']);router[_0xe4e5('0x8')](_0xe4e5('0x9'),auth[_0xe4e5('0x7')](),controller[_0xe4e5('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0xe4e5('0xb')]);router[_0xe4e5('0xc')](_0xe4e5('0x9'),auth[_0xe4e5('0x7')](),controller['update']);router[_0xe4e5('0xd')]('/:id',auth[_0xe4e5('0x7')](),controller[_0xe4e5('0xe')]);module[_0xe4e5('0xf')]=router;
\ No newline at end of file
index fe688dd..ae2c2b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6717=['ENUM','string','variable','customVariable','keyValue','picklist','STRING','exports'];(function(_0x412d81,_0x2a2dd7){var _0x10019d=function(_0x44bcbe){while(--_0x44bcbe){_0x412d81['push'](_0x412d81['shift']());}};_0x10019d(++_0x2a2dd7);}(_0x6717,0xcf));var _0x7671=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6717[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module[_0x7671('0x0')]={'type':{'type':Sequelize[_0x7671('0x1')](_0x7671('0x2'),_0x7671('0x3'),_0x7671('0x4'),_0x7671('0x5'),_0x7671('0x6')),'defaultValue':_0x7671('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x7671('0x1')](_0x7671('0x2'),_0x7671('0x3'),'customVariable')},'keyContent':{'type':Sequelize[_0x7671('0x7')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0x7671('0x7')]}};
\ No newline at end of file
+var _0x11f9=['variable','keyValue','picklist','string','STRING','customVariable','sequelize','ENUM'];(function(_0x293a7b,_0x33ae9b){var _0x3fabb=function(_0xb0c88f){while(--_0xb0c88f){_0x293a7b['push'](_0x293a7b['shift']());}};_0x3fabb(++_0x33ae9b);}(_0x11f9,0xa6));var _0x911f=function(_0x25d020,_0x1ea8ef){_0x25d020=_0x25d020-0x0;var _0x1d2d88=_0x11f9[_0x25d020];return _0x1d2d88;};'use strict';var Sequelize=require(_0x911f('0x0'));module['exports']={'type':{'type':Sequelize[_0x911f('0x1')]('string',_0x911f('0x2'),'customVariable',_0x911f('0x3'),_0x911f('0x4')),'defaultValue':_0x911f('0x5')},'content':{'type':Sequelize[_0x911f('0x6')]},'key':{'type':Sequelize[_0x911f('0x6')]},'keyType':{'type':Sequelize['ENUM']('string',_0x911f('0x2'),_0x911f('0x7'))},'keyContent':{'type':Sequelize[_0x911f('0x6')]},'idField':{'type':Sequelize[_0x911f('0x6')]},'variableName':{'type':Sequelize[_0x911f('0x6')]}};
\ No newline at end of file
index a1098d8..b68d9a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x78a3=['destroy','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','apply','reject','update','then','end','name','send','index','map','rawAttributes','fieldName','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','SalesforceField','findAll','rows','show','params','keys','find','catch','create','body'];(function(_0x35841f,_0x3c96c7){var _0x1604ad=function(_0x4a9a57){while(--_0x4a9a57){_0x35841f['push'](_0x35841f['shift']());}};_0x1604ad(++_0x3c96c7);}(_0x78a3,0x1a5));var _0x378a=function(_0x1c9c24,_0x2a517b){_0x1c9c24=_0x1c9c24-0x0;var _0x349c69=_0x78a3[_0x1c9c24];return _0x349c69;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x378a('0x0'));var zipdir=require(_0x378a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x378a('0x2'));var moment=require('moment');var BPromise=require(_0x378a('0x3'));var Mustache=require(_0x378a('0x4'));var util=require('util');var path=require(_0x378a('0x5'));var sox=require(_0x378a('0x6'));var csv=require(_0x378a('0x7'));var ejs=require(_0x378a('0x8'));var fs=require('fs');var fs_extra=require(_0x378a('0x9'));var _=require(_0x378a('0xa'));var squel=require('squel');var crypto=require(_0x378a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x378a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x378a('0xd'));var Papa=require('papaparse');var Redis=require(_0x378a('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x378a('0xf'));var hardwareService=require(_0x378a('0x10'));var logger=require(_0x378a('0x11'))('api');var utils=require(_0x378a('0x12'));var config=require(_0x378a('0x13'));var licenseUtil=require(_0x378a('0x14'));var db=require(_0x378a('0x15'))['db'];function respondWithStatusCode(_0x850d1e,_0x4ba94c){_0x4ba94c=_0x4ba94c||0xcc;return function(_0x4f5d79){if(_0x4f5d79){return _0x850d1e[_0x378a('0x16')](_0x4ba94c);}return _0x850d1e[_0x378a('0x17')](_0x4ba94c)['end']();};}function respondWithResult(_0x487624,_0x471995){_0x471995=_0x471995||0xc8;return function(_0x315db5){if(_0x315db5){return _0x487624[_0x378a('0x17')](_0x471995)[_0x378a('0x18')](_0x315db5);}};}function respondWithFilteredResult(_0x51ce76,_0x79d953){return function(_0x4e3176){if(_0x4e3176){var _0x4fe336=typeof _0x79d953[_0x378a('0x19')]===_0x378a('0x1a')&&typeof _0x79d953['limit']===_0x378a('0x1a');var _0x256232=_0x4e3176[_0x378a('0x1b')];var _0x448a92=_0x4fe336?0x0:_0x79d953['offset'];var _0x4cce64=_0x4fe336?_0x4e3176[_0x378a('0x1b')]:_0x79d953[_0x378a('0x19')]+_0x79d953[_0x378a('0x1c')];var _0x323cd9;if(_0x4cce64>=_0x256232){_0x4cce64=_0x256232;_0x323cd9=0xc8;}else{_0x323cd9=0xce;}_0x51ce76[_0x378a('0x17')](_0x323cd9);return _0x51ce76['set'](_0x378a('0x1d'),_0x448a92+'-'+_0x4cce64+'/'+_0x256232)[_0x378a('0x18')](_0x4e3176);}return null;};}function patchUpdates(_0x1c2310){return function(_0x555188){try{jsonpatch[_0x378a('0x1e')](_0x555188,_0x1c2310,!![]);}catch(_0x2b0082){return BPromise[_0x378a('0x1f')](_0x2b0082);}return _0x555188['save']();};}function saveUpdates(_0x5598dc,_0x5ddaf1){return function(_0x506e99){if(_0x506e99){return _0x506e99[_0x378a('0x20')](_0x5598dc)[_0x378a('0x21')](function(_0x59f939){return _0x59f939;});}return null;};}function removeEntity(_0x25ed39,_0x4247e7){return function(_0x43c4cd){if(_0x43c4cd){return _0x43c4cd['destroy']()['then'](function(){_0x25ed39[_0x378a('0x17')](0xcc)[_0x378a('0x22')]();});}};}function handleEntityNotFound(_0x201c1d,_0x2c4fbe){return function(_0x560ce1){if(!_0x560ce1){_0x201c1d[_0x378a('0x16')](0x194);}return _0x560ce1;};}function handleError(_0x2c830e,_0xe6eaba){_0xe6eaba=_0xe6eaba||0x1f4;return function(_0x28228c){logger['error'](_0x28228c['stack']);if(_0x28228c[_0x378a('0x23')]){delete _0x28228c[_0x378a('0x23')];}_0x2c830e[_0x378a('0x17')](_0xe6eaba)[_0x378a('0x24')](_0x28228c);};}exports[_0x378a('0x25')]=function(_0x1383d6,_0x2c77d2){var _0x42f6f7={},_0x42cf20={},_0x3bcef5={'count':0x0,'rows':[]};var _0x246a74=_[_0x378a('0x26')](db['SalesforceField'][_0x378a('0x27')],function(_0x59f830){return{'name':_0x59f830[_0x378a('0x28')],'type':_0x59f830[_0x378a('0x29')]['key']};});_0x42cf20[_0x378a('0x2a')]=_['map'](_0x246a74,_0x378a('0x23'));_0x42cf20[_0x378a('0x2b')]=_['keys'](_0x1383d6['query']);_0x42cf20['filters']=_['intersection'](_0x42cf20[_0x378a('0x2a')],_0x42cf20['query']);_0x42f6f7[_0x378a('0x2c')]=_[_0x378a('0x2d')](_0x42cf20[_0x378a('0x2a')],qs['fields'](_0x1383d6[_0x378a('0x2b')][_0x378a('0x2e')]));_0x42f6f7['attributes']=_0x42f6f7[_0x378a('0x2c')][_0x378a('0x2f')]?_0x42f6f7[_0x378a('0x2c')]:_0x42cf20['model'];if(!_0x1383d6['query'][_0x378a('0x30')](_0x378a('0x31'))){_0x42f6f7['limit']=qs[_0x378a('0x1c')](_0x1383d6[_0x378a('0x2b')][_0x378a('0x1c')]);_0x42f6f7['offset']=qs[_0x378a('0x19')](_0x1383d6[_0x378a('0x2b')][_0x378a('0x19')]);}_0x42f6f7['order']=qs[_0x378a('0x32')](_0x1383d6['query'][_0x378a('0x32')]);_0x42f6f7[_0x378a('0x33')]=qs[_0x378a('0x34')](_['pick'](_0x1383d6[_0x378a('0x2b')],_0x42cf20[_0x378a('0x34')]),_0x246a74);if(_0x1383d6[_0x378a('0x2b')][_0x378a('0x35')]){_0x42f6f7[_0x378a('0x33')]=_['merge'](_0x42f6f7[_0x378a('0x33')],{'$or':_['map'](_0x246a74,function(_0x2f0a8a){if(_0x2f0a8a[_0x378a('0x29')]!==_0x378a('0x36')){var _0x1b5c23={};_0x1b5c23[_0x2f0a8a[_0x378a('0x23')]]={'$like':'%'+_0x1383d6[_0x378a('0x2b')][_0x378a('0x35')]+'%'};return _0x1b5c23;}})});}_0x42f6f7=_[_0x378a('0x37')]({},_0x42f6f7,_0x1383d6[_0x378a('0x38')]);var _0x554f80={'where':_0x42f6f7['where']};return db['SalesforceField'][_0x378a('0x1b')](_0x554f80)[_0x378a('0x21')](function(_0x1068ea){_0x3bcef5['count']=_0x1068ea;if(_0x1383d6[_0x378a('0x2b')][_0x378a('0x39')]){_0x42f6f7[_0x378a('0x3a')]=[{'all':!![]}];}return db[_0x378a('0x3b')][_0x378a('0x3c')](_0x42f6f7);})[_0x378a('0x21')](function(_0x203b47){_0x3bcef5[_0x378a('0x3d')]=_0x203b47;return _0x3bcef5;})[_0x378a('0x21')](respondWithFilteredResult(_0x2c77d2,_0x42f6f7))['catch'](handleError(_0x2c77d2,null));};exports[_0x378a('0x3e')]=function(_0x4a8d34,_0x21d36b){var _0xb7eed4={'raw':!![],'where':{'id':_0x4a8d34[_0x378a('0x3f')]['id']}},_0x25df58={};_0x25df58['model']=_[_0x378a('0x40')](db[_0x378a('0x3b')][_0x378a('0x27')]);_0x25df58[_0x378a('0x2b')]=_[_0x378a('0x40')](_0x4a8d34[_0x378a('0x2b')]);_0x25df58[_0x378a('0x34')]=_['intersection'](_0x25df58['model'],_0x25df58[_0x378a('0x2b')]);_0xb7eed4['attributes']=_[_0x378a('0x2d')](_0x25df58[_0x378a('0x2a')],qs[_0x378a('0x2e')](_0x4a8d34[_0x378a('0x2b')][_0x378a('0x2e')]));_0xb7eed4[_0x378a('0x2c')]=_0xb7eed4[_0x378a('0x2c')]['length']?_0xb7eed4[_0x378a('0x2c')]:_0x25df58[_0x378a('0x2a')];if(_0x4a8d34[_0x378a('0x2b')][_0x378a('0x39')]){_0xb7eed4[_0x378a('0x3a')]=[{'all':!![]}];}_0xb7eed4=_[_0x378a('0x37')]({},_0xb7eed4,_0x4a8d34[_0x378a('0x38')]);return db['SalesforceField'][_0x378a('0x41')](_0xb7eed4)[_0x378a('0x21')](handleEntityNotFound(_0x21d36b,null))['then'](respondWithResult(_0x21d36b,null))[_0x378a('0x42')](handleError(_0x21d36b,null));};exports[_0x378a('0x43')]=function(_0x2af220,_0x26be8c){return db[_0x378a('0x3b')][_0x378a('0x43')](_0x2af220['body'],{})['then'](respondWithResult(_0x26be8c,0xc9))['catch'](handleError(_0x26be8c,null));};exports['update']=function(_0x548359,_0x166451){if(_0x548359[_0x378a('0x44')]['id']){delete _0x548359['body']['id'];}return db['SalesforceField'][_0x378a('0x41')]({'where':{'id':_0x548359['params']['id']}})[_0x378a('0x21')](handleEntityNotFound(_0x166451,null))['then'](saveUpdates(_0x548359['body'],null))[_0x378a('0x21')](respondWithResult(_0x166451,null))[_0x378a('0x42')](handleError(_0x166451,null));};exports[_0x378a('0x45')]=function(_0x5112ab,_0x3f02cb){return db[_0x378a('0x3b')]['find']({'where':{'id':_0x5112ab['params']['id']}})['then'](handleEntityNotFound(_0x3f02cb,null))['then'](removeEntity(_0x3f02cb,null))[_0x378a('0x42')](handleError(_0x3f02cb,null));};
\ No newline at end of file
+var _0xbedf=['apply','reject','update','then','end','stack','name','send','index','map','SalesforceField','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','nolimit','order','sort','where','filters','filter','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','length','merge','create','body','find','destroy','params','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','count','limit','set','Content-Range'];(function(_0x17ddcf,_0xf29e0c){var _0xaf20d9=function(_0x139001){while(--_0x139001){_0x17ddcf['push'](_0x17ddcf['shift']());}};_0xaf20d9(++_0xf29e0c);}(_0xbedf,0x15e));var _0xfbed=function(_0x1f1cc7,_0x26f365){_0x1f1cc7=_0x1f1cc7-0x0;var _0x5f49e9=_0xbedf[_0x1f1cc7];return _0x5f49e9;};'use strict';var emlformat=require(_0xfbed('0x0'));var rimraf=require(_0xfbed('0x1'));var zipdir=require(_0xfbed('0x2'));var jsonpatch=require(_0xfbed('0x3'));var rp=require('request-promise');var moment=require(_0xfbed('0x4'));var BPromise=require(_0xfbed('0x5'));var Mustache=require(_0xfbed('0x6'));var util=require('util');var path=require(_0xfbed('0x7'));var sox=require(_0xfbed('0x8'));var csv=require(_0xfbed('0x9'));var ejs=require(_0xfbed('0xa'));var fs=require('fs');var fs_extra=require(_0xfbed('0xb'));var _=require(_0xfbed('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfbed('0xd'));var deskjs=require(_0xfbed('0xe'));var toCsv=require(_0xfbed('0x9'));var querystring=require(_0xfbed('0xf'));var Papa=require(_0xfbed('0x10'));var Redis=require(_0xfbed('0x11'));var authService=require(_0xfbed('0x12'));var qs=require(_0xfbed('0x13'));var as=require(_0xfbed('0x14'));var hardwareService=require(_0xfbed('0x15'));var logger=require(_0xfbed('0x16'))(_0xfbed('0x17'));var utils=require(_0xfbed('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xfbed('0x19'));var db=require(_0xfbed('0x1a'))['db'];function respondWithStatusCode(_0xe16fa,_0x3bb958){_0x3bb958=_0x3bb958||0xcc;return function(_0x28f342){if(_0x28f342){return _0xe16fa[_0xfbed('0x1b')](_0x3bb958);}return _0xe16fa['status'](_0x3bb958)['end']();};}function respondWithResult(_0x41223f,_0x59cd1f){_0x59cd1f=_0x59cd1f||0xc8;return function(_0x54c824){if(_0x54c824){return _0x41223f[_0xfbed('0x1c')](_0x59cd1f)[_0xfbed('0x1d')](_0x54c824);}};}function respondWithFilteredResult(_0x1fc7eb,_0x34480c){return function(_0xb61e6d){if(_0xb61e6d){var _0x20536b=typeof _0x34480c[_0xfbed('0x1e')]==='undefined'&&typeof _0x34480c['limit']==='undefined';var _0x10ccbf=_0xb61e6d[_0xfbed('0x1f')];var _0x4d5b0c=_0x20536b?0x0:_0x34480c[_0xfbed('0x1e')];var _0x6c0c2=_0x20536b?_0xb61e6d[_0xfbed('0x1f')]:_0x34480c[_0xfbed('0x1e')]+_0x34480c[_0xfbed('0x20')];var _0x1ba0a4;if(_0x6c0c2>=_0x10ccbf){_0x6c0c2=_0x10ccbf;_0x1ba0a4=0xc8;}else{_0x1ba0a4=0xce;}_0x1fc7eb[_0xfbed('0x1c')](_0x1ba0a4);return _0x1fc7eb[_0xfbed('0x21')](_0xfbed('0x22'),_0x4d5b0c+'-'+_0x6c0c2+'/'+_0x10ccbf)['json'](_0xb61e6d);}return null;};}function patchUpdates(_0x51742b){return function(_0x3749f4){try{jsonpatch[_0xfbed('0x23')](_0x3749f4,_0x51742b,!![]);}catch(_0x4f9ce2){return BPromise[_0xfbed('0x24')](_0x4f9ce2);}return _0x3749f4['save']();};}function saveUpdates(_0x533ca3,_0xeee0a6){return function(_0x84582a){if(_0x84582a){return _0x84582a[_0xfbed('0x25')](_0x533ca3)[_0xfbed('0x26')](function(_0x3d7185){return _0x3d7185;});}return null;};}function removeEntity(_0x32096c,_0x25667){return function(_0x3038d1){if(_0x3038d1){return _0x3038d1['destroy']()[_0xfbed('0x26')](function(){_0x32096c[_0xfbed('0x1c')](0xcc)[_0xfbed('0x27')]();});}};}function handleEntityNotFound(_0x135d8d,_0x57af8a){return function(_0x29807d){if(!_0x29807d){_0x135d8d[_0xfbed('0x1b')](0x194);}return _0x29807d;};}function handleError(_0x5a6e54,_0x19b1e2){_0x19b1e2=_0x19b1e2||0x1f4;return function(_0x1ea4a9){logger['error'](_0x1ea4a9[_0xfbed('0x28')]);if(_0x1ea4a9[_0xfbed('0x29')]){delete _0x1ea4a9['name'];}_0x5a6e54[_0xfbed('0x1c')](_0x19b1e2)[_0xfbed('0x2a')](_0x1ea4a9);};}exports[_0xfbed('0x2b')]=function(_0x41db9a,_0x380959){var _0x1431b1={},_0x2e7f91={},_0x3a9ec8={'count':0x0,'rows':[]};var _0xd84f38=_[_0xfbed('0x2c')](db[_0xfbed('0x2d')][_0xfbed('0x2e')],function(_0x1fd61c){return{'name':_0x1fd61c[_0xfbed('0x2f')],'type':_0x1fd61c[_0xfbed('0x30')][_0xfbed('0x31')]};});_0x2e7f91[_0xfbed('0x32')]=_[_0xfbed('0x2c')](_0xd84f38,_0xfbed('0x29'));_0x2e7f91['query']=_[_0xfbed('0x33')](_0x41db9a[_0xfbed('0x34')]);_0x2e7f91['filters']=_[_0xfbed('0x35')](_0x2e7f91['model'],_0x2e7f91[_0xfbed('0x34')]);_0x1431b1[_0xfbed('0x36')]=_[_0xfbed('0x35')](_0x2e7f91[_0xfbed('0x32')],qs['fields'](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x37')]));_0x1431b1['attributes']=_0x1431b1['attributes']['length']?_0x1431b1[_0xfbed('0x36')]:_0x2e7f91[_0xfbed('0x32')];if(!_0x41db9a[_0xfbed('0x34')]['hasOwnProperty'](_0xfbed('0x38'))){_0x1431b1[_0xfbed('0x20')]=qs[_0xfbed('0x20')](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x20')]);_0x1431b1['offset']=qs[_0xfbed('0x1e')](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x1e')]);}_0x1431b1[_0xfbed('0x39')]=qs['sort'](_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3a')]);_0x1431b1[_0xfbed('0x3b')]=qs[_0xfbed('0x3c')](_['pick'](_0x41db9a[_0xfbed('0x34')],_0x2e7f91['filters']),_0xd84f38);if(_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3d')]){_0x1431b1[_0xfbed('0x3b')]=_['merge'](_0x1431b1[_0xfbed('0x3b')],{'$or':_[_0xfbed('0x2c')](_0xd84f38,function(_0x36dc4c){if(_0x36dc4c['type']!==_0xfbed('0x3e')){var _0x49adb3={};_0x49adb3[_0x36dc4c['name']]={'$like':'%'+_0x41db9a[_0xfbed('0x34')][_0xfbed('0x3d')]+'%'};return _0x49adb3;}})});}_0x1431b1=_['merge']({},_0x1431b1,_0x41db9a[_0xfbed('0x3f')]);var _0x70ba1={'where':_0x1431b1[_0xfbed('0x3b')]};return db[_0xfbed('0x2d')][_0xfbed('0x1f')](_0x70ba1)[_0xfbed('0x26')](function(_0x17aab3){_0x3a9ec8[_0xfbed('0x1f')]=_0x17aab3;if(_0x41db9a[_0xfbed('0x34')][_0xfbed('0x40')]){_0x1431b1[_0xfbed('0x41')]=[{'all':!![]}];}return db[_0xfbed('0x2d')][_0xfbed('0x42')](_0x1431b1);})[_0xfbed('0x26')](function(_0x4fb286){_0x3a9ec8[_0xfbed('0x43')]=_0x4fb286;return _0x3a9ec8;})[_0xfbed('0x26')](respondWithFilteredResult(_0x380959,_0x1431b1))[_0xfbed('0x44')](handleError(_0x380959,null));};exports[_0xfbed('0x45')]=function(_0x5ef7d2,_0x3672ae){var _0x2e1875={'raw':!![],'where':{'id':_0x5ef7d2['params']['id']}},_0x7d2190={};_0x7d2190[_0xfbed('0x32')]=_[_0xfbed('0x33')](db['SalesforceField']['rawAttributes']);_0x7d2190[_0xfbed('0x34')]=_['keys'](_0x5ef7d2[_0xfbed('0x34')]);_0x7d2190['filters']=_[_0xfbed('0x35')](_0x7d2190[_0xfbed('0x32')],_0x7d2190[_0xfbed('0x34')]);_0x2e1875['attributes']=_[_0xfbed('0x35')](_0x7d2190[_0xfbed('0x32')],qs[_0xfbed('0x37')](_0x5ef7d2[_0xfbed('0x34')][_0xfbed('0x37')]));_0x2e1875[_0xfbed('0x36')]=_0x2e1875['attributes'][_0xfbed('0x46')]?_0x2e1875[_0xfbed('0x36')]:_0x7d2190[_0xfbed('0x32')];if(_0x5ef7d2[_0xfbed('0x34')][_0xfbed('0x40')]){_0x2e1875['include']=[{'all':!![]}];}_0x2e1875=_[_0xfbed('0x47')]({},_0x2e1875,_0x5ef7d2[_0xfbed('0x3f')]);return db[_0xfbed('0x2d')]['find'](_0x2e1875)[_0xfbed('0x26')](handleEntityNotFound(_0x3672ae,null))['then'](respondWithResult(_0x3672ae,null))[_0xfbed('0x44')](handleError(_0x3672ae,null));};exports[_0xfbed('0x48')]=function(_0x4e0d79,_0x2875a8){return db[_0xfbed('0x2d')]['create'](_0x4e0d79['body'],{})[_0xfbed('0x26')](respondWithResult(_0x2875a8,0xc9))[_0xfbed('0x44')](handleError(_0x2875a8,null));};exports[_0xfbed('0x25')]=function(_0x5db0b8,_0x70dace){if(_0x5db0b8[_0xfbed('0x49')]['id']){delete _0x5db0b8[_0xfbed('0x49')]['id'];}return db[_0xfbed('0x2d')][_0xfbed('0x4a')]({'where':{'id':_0x5db0b8['params']['id']}})['then'](handleEntityNotFound(_0x70dace,null))[_0xfbed('0x26')](saveUpdates(_0x5db0b8['body'],null))[_0xfbed('0x26')](respondWithResult(_0x70dace,null))[_0xfbed('0x44')](handleError(_0x70dace,null));};exports[_0xfbed('0x4b')]=function(_0x4e48bb,_0x1a4ba1){return db[_0xfbed('0x2d')][_0xfbed('0x4a')]({'where':{'id':_0x4e48bb[_0xfbed('0x4c')]['id']}})[_0xfbed('0x26')](handleEntityNotFound(_0x1a4ba1,null))[_0xfbed('0x26')](removeEntity(_0x1a4ba1,null))[_0xfbed('0x44')](handleError(_0x1a4ba1,null));};
\ No newline at end of file
index 0bda016..2c4c202 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6f1=['define','SalesforceField','int_salesforce_fields','salesforce_unique_index','FieldId','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xe6f1,0x12b));var _0x1e6f=function(_0x58df61,_0x263bda){_0x58df61=_0x58df61-0x0;var _0x2af205=_0xe6f1[_0x58df61];return _0x2af205;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1e6f('0x0'))(_0x1e6f('0x1'));var moment=require('moment');var BPromise=require(_0x1e6f('0x2'));var rp=require(_0x1e6f('0x3'));var fs=require('fs');var path=require(_0x1e6f('0x4'));var rimraf=require(_0x1e6f('0x5'));var config=require(_0x1e6f('0x6'));var attributes=require(_0x1e6f('0x7'));module[_0x1e6f('0x8')]=function(_0x5b28d5,_0x4fb8b4){return _0x5b28d5[_0x1e6f('0x9')](_0x1e6f('0xa'),attributes,{'tableName':_0x1e6f('0xb'),'paranoid':![],'indexes':[{'name':_0x1e6f('0xc'),'fields':['idField',_0x1e6f('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8279=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceField.attributes','exports','define','int_salesforce_fields','salesforce_unique_index','idField','FieldId','lodash'];(function(_0x38229d,_0x4e00d8){var _0x159435=function(_0x40cf4a){while(--_0x40cf4a){_0x38229d['push'](_0x38229d['shift']());}};_0x159435(++_0x4e00d8);}(_0x8279,0x1bf));var _0x9827=function(_0x33a596,_0x3e085d){_0x33a596=_0x33a596-0x0;var _0x22586c=_0x8279[_0x33a596];return _0x22586c;};'use strict';var _=require(_0x9827('0x0'));var util=require(_0x9827('0x1'));var logger=require('../../config/logger')(_0x9827('0x2'));var moment=require(_0x9827('0x3'));var BPromise=require(_0x9827('0x4'));var rp=require(_0x9827('0x5'));var fs=require('fs');var path=require(_0x9827('0x6'));var rimraf=require(_0x9827('0x7'));var config=require(_0x9827('0x8'));var attributes=require(_0x9827('0x9'));module[_0x9827('0xa')]=function(_0x480a27,_0x4f3fd5){return _0x480a27[_0x9827('0xb')]('SalesforceField',attributes,{'tableName':_0x9827('0xc'),'paranoid':![],'indexes':[{'name':_0x9827('0xd'),'fields':[_0x9827('0xe'),_0x9827('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 55d399e..9b5ee85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf67c=['request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','result','message','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http'];(function(_0x903228,_0x42c429){var _0xcec81d=function(_0x4da97a){while(--_0x4da97a){_0x903228['push'](_0x903228['shift']());}};_0xcec81d(++_0x42c429);}(_0xf67c,0x17c));var _0xcf67=function(_0x5f25e9,_0x2c0498){_0x5f25e9=_0x5f25e9-0x0;var _0x2d4487=_0xf67c[_0x5f25e9];return _0x2d4487;};'use strict';var _=require(_0xcf67('0x0'));var util=require('util');var moment=require(_0xcf67('0x1'));var BPromise=require(_0xcf67('0x2'));var rs=require(_0xcf67('0x3'));var fs=require('fs');var Redis=require(_0xcf67('0x4'));var db=require(_0xcf67('0x5'))['db'];var utils=require(_0xcf67('0x6'));var logger=require(_0xcf67('0x7'))('rpc');var config=require(_0xcf67('0x8'));var jayson=require(_0xcf67('0x9'));var client=jayson['client'][_0xcf67('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x43a64a,_0x3088c2,_0xfa9def){return new BPromise(function(_0x4813ed,_0x48ec11){return client[_0xcf67('0xb')](_0x43a64a,_0xfa9def)[_0xcf67('0xc')](function(_0x282ea8){logger[_0xcf67('0xd')](_0xcf67('0xe'),_0x3088c2,_0xcf67('0xf'));logger[_0xcf67('0x10')](_0xcf67('0x11'),_0x3088c2,'request\x20sent',JSON[_0xcf67('0x12')](_0x282ea8));if(_0x282ea8[_0xcf67('0x13')]){if(_0x282ea8[_0xcf67('0x13')][_0xcf67('0x14')]===0x1f4){logger['error'](_0xcf67('0xe'),_0x3088c2,_0x282ea8[_0xcf67('0x13')]['message']);return _0x48ec11(_0x282ea8[_0xcf67('0x13')]['message']);}logger[_0xcf67('0x13')](_0xcf67('0xe'),_0x3088c2,_0x282ea8[_0xcf67('0x13')]['message']);return _0x4813ed(_0x282ea8['error']['message']);}else{logger['info']('SalesforceField,\x20%s,\x20%s',_0x3088c2,_0xcf67('0xf'));_0x4813ed(_0x282ea8[_0xcf67('0x15')][_0xcf67('0x16')]);}})['catch'](function(_0x11818a){logger[_0xcf67('0x13')](_0xcf67('0xe'),_0x3088c2,_0x11818a);_0x48ec11(_0x11818a);});});}
\ No newline at end of file
+var _0x5ea1=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','util'];(function(_0xd50047,_0x5463a3){var _0x1ad381=function(_0x304c3d){while(--_0x304c3d){_0xd50047['push'](_0xd50047['shift']());}};_0x1ad381(++_0x5463a3);}(_0x5ea1,0x1b8));var _0x15ea=function(_0x54bf70,_0x82f211){_0x54bf70=_0x54bf70-0x0;var _0x2a3037=_0x5ea1[_0x54bf70];return _0x2a3037;};'use strict';var _=require('lodash');var util=require(_0x15ea('0x0'));var moment=require(_0x15ea('0x1'));var BPromise=require(_0x15ea('0x2'));var rs=require(_0x15ea('0x3'));var fs=require('fs');var Redis=require(_0x15ea('0x4'));var db=require(_0x15ea('0x5'))['db'];var utils=require(_0x15ea('0x6'));var logger=require(_0x15ea('0x7'))(_0x15ea('0x8'));var config=require(_0x15ea('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x15ea('0xa')][_0x15ea('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x182b00,_0x5e67ea,_0x2ed927){return new BPromise(function(_0x31ae5d,_0x1499ec){return client[_0x15ea('0xc')](_0x182b00,_0x2ed927)['then'](function(_0x19cf60){logger[_0x15ea('0xd')](_0x15ea('0xe'),_0x5e67ea,_0x15ea('0xf'));logger['debug'](_0x15ea('0x10'),_0x5e67ea,'request\x20sent',JSON[_0x15ea('0x11')](_0x19cf60));if(_0x19cf60[_0x15ea('0x12')]){if(_0x19cf60[_0x15ea('0x12')][_0x15ea('0x13')]===0x1f4){logger['error'](_0x15ea('0xe'),_0x5e67ea,_0x19cf60[_0x15ea('0x12')][_0x15ea('0x14')]);return _0x1499ec(_0x19cf60[_0x15ea('0x12')]['message']);}logger[_0x15ea('0x12')]('SalesforceField,\x20%s,\x20%s',_0x5e67ea,_0x19cf60[_0x15ea('0x12')][_0x15ea('0x14')]);return _0x31ae5d(_0x19cf60['error'][_0x15ea('0x14')]);}else{logger['info'](_0x15ea('0xe'),_0x5e67ea,_0x15ea('0xf'));_0x31ae5d(_0x19cf60['result'][_0x15ea('0x14')]);}})['catch'](function(_0x3382dd){logger[_0x15ea('0x12')](_0x15ea('0xe'),_0x5e67ea,_0x3382dd);_0x1499ec(_0x3382dd);});});}
\ No newline at end of file
index 1f0603b..95cdd5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x518d=['path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','exports','multer','util'];(function(_0x5d897a,_0x5ee145){var _0x56d8a8=function(_0xb87fdd){while(--_0xb87fdd){_0x5d897a['push'](_0x5d897a['shift']());}};_0x56d8a8(++_0x5ee145);}(_0x518d,0x140));var _0xd518=function(_0xe31c3d,_0x1aeed6){_0xe31c3d=_0xe31c3d-0x0;var _0x7c777e=_0x518d[_0xe31c3d];return _0x7c777e;};'use strict';var multer=require(_0xd518('0x0'));var util=require(_0xd518('0x1'));var path=require(_0xd518('0x2'));var timeout=require('connect-timeout');var express=require(_0xd518('0x3'));var router=express[_0xd518('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd518('0x5'));var interaction=require(_0xd518('0x6'));var config=require(_0xd518('0x7'));var controller=require(_0xd518('0x8'));router[_0xd518('0x9')]('/',auth[_0xd518('0xa')](),controller[_0xd518('0xb')]);router[_0xd518('0x9')](_0xd518('0xc'),auth[_0xd518('0xa')](),controller['show']);router[_0xd518('0x9')](_0xd518('0xd'),auth['isAuthenticated'](),controller[_0xd518('0xe')]);router[_0xd518('0x9')](_0xd518('0xf'),auth['isAuthenticated'](),controller[_0xd518('0x10')]);router[_0xd518('0x11')]('/',auth[_0xd518('0xa')](),controller[_0xd518('0x12')]);router[_0xd518('0x11')](_0xd518('0xd'),auth['isAuthenticated'](),controller[_0xd518('0x13')]);router[_0xd518('0x14')](_0xd518('0xc'),auth[_0xd518('0xa')](),controller[_0xd518('0x15')]);router['delete']('/:id',auth[_0xd518('0xa')](),controller['destroy']);module[_0xd518('0x16')]=router;
\ No newline at end of file
+var _0xc9fb=['delete','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','index','get','/:id','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','addConfiguration','put','update'];(function(_0x108905,_0x3b4002){var _0x3dc0c1=function(_0x508676){while(--_0x508676){_0x108905['push'](_0x108905['shift']());}};_0x3dc0c1(++_0x3b4002);}(_0xc9fb,0x148));var _0xbc9f=function(_0x10b3b3,_0x1f776d){_0x10b3b3=_0x10b3b3-0x0;var _0x298f49=_0xc9fb[_0x10b3b3];return _0x298f49;};'use strict';var multer=require(_0xbc9f('0x0'));var util=require(_0xbc9f('0x1'));var path=require(_0xbc9f('0x2'));var timeout=require('connect-timeout');var express=require(_0xbc9f('0x3'));var router=express['Router']();var fs_extra=require(_0xbc9f('0x4'));var auth=require(_0xbc9f('0x5'));var interaction=require(_0xbc9f('0x6'));var config=require(_0xbc9f('0x7'));var controller=require(_0xbc9f('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xbc9f('0x9')]);router[_0xbc9f('0xa')](_0xbc9f('0xb'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0xd')]);router[_0xbc9f('0xa')](_0xbc9f('0xe'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0xf')]);router['get'](_0xbc9f('0x10'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x11')]);router[_0xbc9f('0x12')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xbc9f('0xe'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x13')]);router[_0xbc9f('0x14')](_0xbc9f('0xb'),auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x15')]);router[_0xbc9f('0x16')]('/:id',auth[_0xbc9f('0xc')](),controller[_0xbc9f('0x17')]);module[_0xbc9f('0x18')]=router;
\ No newline at end of file
index 97e8072..9315598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd26=['username','exports','STRING'];(function(_0x4a7e98,_0x250137){var _0x27d10d=function(_0x378768){while(--_0x378768){_0x4a7e98['push'](_0x4a7e98['shift']());}};_0x27d10d(++_0x250137);}(_0xcd26,0x19f));var _0x6cd2=function(_0x460150,_0x232949){_0x460150=_0x460150-0x0;var _0x340677=_0xcd26[_0x460150];return _0x340677;};'use strict';var Sequelize=require('sequelize');module[_0x6cd2('0x0')]={'name':{'type':Sequelize[_0x6cd2('0x1')]},'description':{'type':Sequelize[_0x6cd2('0x1')]},'username':{'type':Sequelize[_0x6cd2('0x1')],'unique':_0x6cd2('0x2')},'password':{'type':Sequelize[_0x6cd2('0x1')]},'email':{'type':Sequelize[_0x6cd2('0x1')]},'remoteUri':{'type':Sequelize[_0x6cd2('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0x6cd2('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xdb5a=['remoteUri','sequelize','exports','STRING','username'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xdb5a,0xb5));var _0xadb5=function(_0x4979dd,_0x3519ab){_0x4979dd=_0x4979dd-0x0;var _0x11d624=_0xdb5a[_0x4979dd];return _0x11d624;};'use strict';var Sequelize=require(_0xadb5('0x0'));module[_0xadb5('0x1')]={'name':{'type':Sequelize[_0xadb5('0x2')]},'description':{'type':Sequelize[_0xadb5('0x2')]},'username':{'type':Sequelize['STRING'],'unique':_0xadb5('0x3')},'password':{'type':Sequelize[_0xadb5('0x2')]},'email':{'type':Sequelize[_0xadb5('0x2')]},'remoteUri':{'type':Sequelize[_0xadb5('0x2')],'unique':_0xadb5('0x4')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index 8a5e22c..e3dc85e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3c9=['nolimit','order','sort','where','pick','VIRTUAL','options','includeAll','include','findAll','rows','params','merge','find','catch','create','body','update','ServicenowConfiguration','filter','getConfigurations','addConfiguration','AccountId','getSubjects','channel','type','Descriptions','getDescriptions','ServicenowField','Subjects','getFields','knowledge','subcategory','close_code','notify','incident_state','severity','category','parent','made_sla','caused_by','watch_list','upon_reject','sys_updated_on','hold_reason','approval_history','resolved_by','sys_updated_by','user_input','sys_created_on','state','sys_created_by','closed_at','cmdb_ci','delivery_plan','impact','active','work_notes_list','priority','time_worked','expected_start','opened_at','group_list','reopened_time','caller_id','approval_set','work_notes','short_description','work_start','assignment_group','business_stc','calendar_duration','close_notes','closed_by','follow_up','parent_incident','contact_type','reopened_by','urgency','problem_id','company','activity_due','assigned_to','sla_due','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','location','findOne','password','remoteUri','serverUrl','slice','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','username','GET','result','log','incident\x20table\x20objects','assign','forEach','internalType','label','push','all','TCL:\x20_object','remove','concat','ServiceNow\x20error:\x20','test','Wrong\x20credentials','statusCode','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','ejs','fs-extra','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','destroy','then','stack','name','index','ServicenowAccount','rawAttributes','fieldName','key','model','map','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty'];(function(_0x35181c,_0x82694a){var _0xe14bf9=function(_0x2be9b7){while(--_0x2be9b7){_0x35181c['push'](_0x35181c['shift']());}};_0xe14bf9(++_0x82694a);}(_0xe3c9,0x1e6));var _0x9e3c=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0xe3c9[_0x1694f5];return _0x5b4321;};'use strict';var emlformat=require(_0x9e3c('0x0'));var rimraf=require(_0x9e3c('0x1'));var zipdir=require(_0x9e3c('0x2'));var jsonpatch=require(_0x9e3c('0x3'));var rp=require(_0x9e3c('0x4'));var moment=require(_0x9e3c('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x9e3c('0x6'));var util=require(_0x9e3c('0x7'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9e3c('0x8'));var fs=require('fs');var fs_extra=require(_0x9e3c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x9e3c('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x9e3c('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x9e3c('0xc'));var authService=require(_0x9e3c('0xd'));var qs=require(_0x9e3c('0xe'));var as=require(_0x9e3c('0xf'));var hardwareService=require(_0x9e3c('0x10'));var logger=require(_0x9e3c('0x11'))(_0x9e3c('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9e3c('0x13'));var db=require(_0x9e3c('0x14'))['db'];var integrations=require(_0x9e3c('0x15'));function respondWithStatusCode(_0x4f9fa1,_0xdb7c7c){_0xdb7c7c=_0xdb7c7c||0xcc;return function(_0x395da2){if(_0x395da2){return _0x4f9fa1[_0x9e3c('0x16')](_0xdb7c7c);}return _0x4f9fa1[_0x9e3c('0x17')](_0xdb7c7c)[_0x9e3c('0x18')]();};}function respondWithResult(_0x1daf66,_0xe3d551){_0xe3d551=_0xe3d551||0xc8;return function(_0xe1e4cf){if(_0xe1e4cf){return _0x1daf66[_0x9e3c('0x17')](_0xe3d551)[_0x9e3c('0x19')](_0xe1e4cf);}};}function respondWithFilteredResult(_0x19c2d4,_0x47e35a){return function(_0x32856a){if(_0x32856a){var _0x3c8475=typeof _0x47e35a[_0x9e3c('0x1a')]===_0x9e3c('0x1b')&&typeof _0x47e35a[_0x9e3c('0x1c')]===_0x9e3c('0x1b');var _0x31b179=_0x32856a[_0x9e3c('0x1d')];var _0x8bf929=_0x3c8475?0x0:_0x47e35a[_0x9e3c('0x1a')];var _0x8db352=_0x3c8475?_0x32856a[_0x9e3c('0x1d')]:_0x47e35a[_0x9e3c('0x1a')]+_0x47e35a[_0x9e3c('0x1c')];var _0xcd6628;if(_0x8db352>=_0x31b179){_0x8db352=_0x31b179;_0xcd6628=0xc8;}else{_0xcd6628=0xce;}_0x19c2d4[_0x9e3c('0x17')](_0xcd6628);return _0x19c2d4[_0x9e3c('0x1e')](_0x9e3c('0x1f'),_0x8bf929+'-'+_0x8db352+'/'+_0x31b179)[_0x9e3c('0x19')](_0x32856a);}return null;};}function patchUpdates(_0x3c2d78){return function(_0x4b4379){try{jsonpatch[_0x9e3c('0x20')](_0x4b4379,_0x3c2d78,!![]);}catch(_0x3fdf80){return BPromise[_0x9e3c('0x21')](_0x3fdf80);}return _0x4b4379[_0x9e3c('0x22')]();};}function saveUpdates(_0x15e27c,_0x3bfc4c){return function(_0x446790){if(_0x446790){return _0x446790['update'](_0x15e27c)['then'](function(_0x2d98cc){return _0x2d98cc;});}return null;};}function removeEntity(_0x44e9b6,_0x26dbb1){return function(_0x578700){if(_0x578700){return _0x578700[_0x9e3c('0x23')]()[_0x9e3c('0x24')](function(){_0x44e9b6['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x347903,_0x3d3500){return function(_0x3c1745){if(!_0x3c1745){_0x347903[_0x9e3c('0x16')](0x194);}return _0x3c1745;};}function handleError(_0x35df30,_0x2fdad9){_0x2fdad9=_0x2fdad9||0x1f4;return function(_0x3c2b37){logger['error'](_0x3c2b37[_0x9e3c('0x25')]);if(_0x3c2b37[_0x9e3c('0x26')]){delete _0x3c2b37[_0x9e3c('0x26')];}_0x35df30[_0x9e3c('0x17')](_0x2fdad9)['send'](_0x3c2b37);};}exports[_0x9e3c('0x27')]=function(_0x18f3bc,_0x14db91){var _0x2d098a={},_0xabe58d={},_0xd85a3f={'count':0x0,'rows':[]};var _0x1f09a1=_['map'](db[_0x9e3c('0x28')][_0x9e3c('0x29')],function(_0x4003fe){return{'name':_0x4003fe[_0x9e3c('0x2a')],'type':_0x4003fe['type'][_0x9e3c('0x2b')]};});_0xabe58d[_0x9e3c('0x2c')]=_[_0x9e3c('0x2d')](_0x1f09a1,'name');_0xabe58d['query']=_[_0x9e3c('0x2e')](_0x18f3bc[_0x9e3c('0x2f')]);_0xabe58d[_0x9e3c('0x30')]=_['intersection'](_0xabe58d['model'],_0xabe58d[_0x9e3c('0x2f')]);_0x2d098a['attributes']=_[_0x9e3c('0x31')](_0xabe58d['model'],qs[_0x9e3c('0x32')](_0x18f3bc['query'][_0x9e3c('0x32')]));_0x2d098a[_0x9e3c('0x33')]=_0x2d098a[_0x9e3c('0x33')][_0x9e3c('0x34')]?_0x2d098a[_0x9e3c('0x33')]:_0xabe58d[_0x9e3c('0x2c')];if(!_0x18f3bc[_0x9e3c('0x2f')][_0x9e3c('0x35')](_0x9e3c('0x36'))){_0x2d098a['limit']=qs[_0x9e3c('0x1c')](_0x18f3bc[_0x9e3c('0x2f')][_0x9e3c('0x1c')]);_0x2d098a[_0x9e3c('0x1a')]=qs[_0x9e3c('0x1a')](_0x18f3bc[_0x9e3c('0x2f')][_0x9e3c('0x1a')]);}_0x2d098a[_0x9e3c('0x37')]=qs[_0x9e3c('0x38')](_0x18f3bc['query'][_0x9e3c('0x38')]);_0x2d098a[_0x9e3c('0x39')]=qs[_0x9e3c('0x30')](_[_0x9e3c('0x3a')](_0x18f3bc[_0x9e3c('0x2f')],_0xabe58d[_0x9e3c('0x30')]),_0x1f09a1);if(_0x18f3bc['query']['filter']){_0x2d098a[_0x9e3c('0x39')]=_['merge'](_0x2d098a[_0x9e3c('0x39')],{'$or':_[_0x9e3c('0x2d')](_0x1f09a1,function(_0x1cdfba){if(_0x1cdfba['type']!==_0x9e3c('0x3b')){var _0x1457c2={};_0x1457c2[_0x1cdfba[_0x9e3c('0x26')]]={'$like':'%'+_0x18f3bc[_0x9e3c('0x2f')]['filter']+'%'};return _0x1457c2;}})});}_0x2d098a=_['merge']({},_0x2d098a,_0x18f3bc[_0x9e3c('0x3c')]);var _0x3430d6={'where':_0x2d098a[_0x9e3c('0x39')]};return db[_0x9e3c('0x28')][_0x9e3c('0x1d')](_0x3430d6)[_0x9e3c('0x24')](function(_0x290c17){_0xd85a3f['count']=_0x290c17;if(_0x18f3bc[_0x9e3c('0x2f')][_0x9e3c('0x3d')]){_0x2d098a[_0x9e3c('0x3e')]=[{'all':!![]}];}return db['ServicenowAccount'][_0x9e3c('0x3f')](_0x2d098a);})[_0x9e3c('0x24')](function(_0x34ad5c){_0xd85a3f[_0x9e3c('0x40')]=_0x34ad5c;return _0xd85a3f;})[_0x9e3c('0x24')](respondWithFilteredResult(_0x14db91,_0x2d098a))['catch'](handleError(_0x14db91,null));};exports['show']=function(_0x28a871,_0x1e7d9f){var _0x343fc0={'raw':![],'where':{'id':_0x28a871[_0x9e3c('0x41')]['id']}},_0x5b9430={};_0x5b9430[_0x9e3c('0x2c')]=_['keys'](db[_0x9e3c('0x28')][_0x9e3c('0x29')]);_0x5b9430[_0x9e3c('0x2f')]=_[_0x9e3c('0x2e')](_0x28a871[_0x9e3c('0x2f')]);_0x5b9430[_0x9e3c('0x30')]=_[_0x9e3c('0x31')](_0x5b9430[_0x9e3c('0x2c')],_0x5b9430[_0x9e3c('0x2f')]);_0x343fc0[_0x9e3c('0x33')]=_[_0x9e3c('0x31')](_0x5b9430[_0x9e3c('0x2c')],qs[_0x9e3c('0x32')](_0x28a871['query']['fields']));_0x343fc0[_0x9e3c('0x33')]=_0x343fc0['attributes'][_0x9e3c('0x34')]?_0x343fc0[_0x9e3c('0x33')]:_0x5b9430['model'];if(_0x28a871[_0x9e3c('0x2f')][_0x9e3c('0x3d')]){_0x343fc0['include']=[{'all':!![]}];}_0x343fc0=_[_0x9e3c('0x42')]({},_0x343fc0,_0x28a871['options']);return db[_0x9e3c('0x28')][_0x9e3c('0x43')](_0x343fc0)[_0x9e3c('0x24')](handleEntityNotFound(_0x1e7d9f,null))[_0x9e3c('0x24')](respondWithResult(_0x1e7d9f,null))[_0x9e3c('0x44')](handleError(_0x1e7d9f,null));};exports[_0x9e3c('0x45')]=function(_0x1e463b,_0x12c4f8){return db[_0x9e3c('0x28')][_0x9e3c('0x45')](_0x1e463b[_0x9e3c('0x46')],{})[_0x9e3c('0x24')](respondWithResult(_0x12c4f8,0xc9))[_0x9e3c('0x44')](handleError(_0x12c4f8,null));};exports[_0x9e3c('0x47')]=function(_0x3644ca,_0x4d878c){if(_0x3644ca[_0x9e3c('0x46')]['id']){delete _0x3644ca['body']['id'];}return db['ServicenowAccount'][_0x9e3c('0x43')]({'where':{'id':_0x3644ca['params']['id']}})[_0x9e3c('0x24')](handleEntityNotFound(_0x4d878c,null))[_0x9e3c('0x24')](saveUpdates(_0x3644ca[_0x9e3c('0x46')],null))[_0x9e3c('0x24')](respondWithResult(_0x4d878c,null))['catch'](handleError(_0x4d878c,null));};exports[_0x9e3c('0x23')]=function(_0x1adad1,_0x2166da){return db[_0x9e3c('0x28')][_0x9e3c('0x43')]({'where':{'id':_0x1adad1['params']['id']}})[_0x9e3c('0x24')](handleEntityNotFound(_0x2166da,null))[_0x9e3c('0x24')](removeEntity(_0x2166da,null))[_0x9e3c('0x44')](handleError(_0x2166da,null));};exports['getConfigurations']=function(_0x50d87e,_0x516d87,_0x559919){var _0x1b4fb5={};var _0x1f7cba={};var _0x5f1773;var _0x46427c;return db[_0x9e3c('0x28')]['findOne']({'where':{'id':_0x50d87e[_0x9e3c('0x41')]['id']}})[_0x9e3c('0x24')](handleEntityNotFound(_0x516d87,null))[_0x9e3c('0x24')](function(_0x271c47){if(_0x271c47){_0x5f1773=_0x271c47;_0x1f7cba[_0x9e3c('0x2c')]=_[_0x9e3c('0x2e')](db[_0x9e3c('0x48')][_0x9e3c('0x29')]);_0x1f7cba[_0x9e3c('0x2f')]=_[_0x9e3c('0x2e')](_0x50d87e[_0x9e3c('0x2f')]);_0x1f7cba['filters']=_[_0x9e3c('0x31')](_0x1f7cba[_0x9e3c('0x2c')],_0x1f7cba['query']);_0x1b4fb5[_0x9e3c('0x33')]=_[_0x9e3c('0x31')](_0x1f7cba[_0x9e3c('0x2c')],qs[_0x9e3c('0x32')](_0x50d87e[_0x9e3c('0x2f')][_0x9e3c('0x32')]));_0x1b4fb5[_0x9e3c('0x33')]=_0x1b4fb5[_0x9e3c('0x33')]['length']?_0x1b4fb5[_0x9e3c('0x33')]:_0x1f7cba[_0x9e3c('0x2c')];_0x1b4fb5[_0x9e3c('0x37')]=qs['sort'](_0x50d87e['query']['sort']);_0x1b4fb5[_0x9e3c('0x39')]=qs[_0x9e3c('0x30')](_[_0x9e3c('0x3a')](_0x50d87e[_0x9e3c('0x2f')],_0x1f7cba['filters']));if(_0x50d87e['query'][_0x9e3c('0x49')]){_0x1b4fb5[_0x9e3c('0x39')]=_[_0x9e3c('0x42')](_0x1b4fb5[_0x9e3c('0x39')],{'$or':_[_0x9e3c('0x2d')](_0x1b4fb5[_0x9e3c('0x33')],function(_0x4dd839){var _0x269f4a={};_0x269f4a[_0x4dd839]={'$like':'%'+_0x50d87e[_0x9e3c('0x2f')][_0x9e3c('0x49')]+'%'};return _0x269f4a;})});}_0x1b4fb5=_[_0x9e3c('0x42')]({},_0x1b4fb5,_0x50d87e[_0x9e3c('0x3c')]);return _0x5f1773['getConfigurations'](_0x1b4fb5);}})[_0x9e3c('0x24')](function(_0x416a41){if(_0x416a41){_0x46427c=_0x416a41[_0x9e3c('0x34')];if(!_0x50d87e[_0x9e3c('0x2f')][_0x9e3c('0x35')](_0x9e3c('0x36'))){_0x1b4fb5[_0x9e3c('0x1c')]=qs[_0x9e3c('0x1c')](_0x50d87e[_0x9e3c('0x2f')][_0x9e3c('0x1c')]);_0x1b4fb5[_0x9e3c('0x1a')]=qs[_0x9e3c('0x1a')](_0x50d87e[_0x9e3c('0x2f')][_0x9e3c('0x1a')]);}return _0x5f1773[_0x9e3c('0x4a')](_0x1b4fb5);}})[_0x9e3c('0x24')](function(_0x2e0fd4){if(_0x2e0fd4){return _0x2e0fd4?{'count':_0x46427c,'rows':_0x2e0fd4}:null;}})[_0x9e3c('0x24')](respondWithResult(_0x516d87,null))[_0x9e3c('0x44')](handleError(_0x516d87,null));};exports[_0x9e3c('0x4b')]=function(_0x2bd839,_0x874f49,_0x9ad2d4){if(_0x2bd839[_0x9e3c('0x46')]['id']){delete _0x2bd839[_0x9e3c('0x46')]['id'];}return db[_0x9e3c('0x28')]['findOne']({'where':{'id':_0x2bd839[_0x9e3c('0x41')]['id']}})['then'](handleEntityNotFound(_0x874f49,null))[_0x9e3c('0x24')](function(_0x47c344){if(_0x47c344){_0x2bd839['body'][_0x9e3c('0x4c')]=_0x47c344['id'];_0x2bd839[_0x9e3c('0x46')]['Subjects']=integrations[_0x9e3c('0x4d')](_0x2bd839['body'][_0x9e3c('0x4e')],_0x2bd839[_0x9e3c('0x46')][_0x9e3c('0x4f')]);_0x2bd839['body'][_0x9e3c('0x50')]=integrations[_0x9e3c('0x51')](_0x2bd839[_0x9e3c('0x46')][_0x9e3c('0x4e')],_0x2bd839['body'][_0x9e3c('0x4f')]);return db[_0x9e3c('0x48')][_0x9e3c('0x45')](_0x2bd839[_0x9e3c('0x46')],{'include':[{'model':db[_0x9e3c('0x52')],'as':_0x9e3c('0x53')},{'model':db['ServicenowField'],'as':'Descriptions'}]});}return null;})[_0x9e3c('0x24')](respondWithResult(_0x874f49,null))[_0x9e3c('0x44')](handleError(_0x874f49,null));};exports[_0x9e3c('0x54')]=function(_0x449f25,_0x3235ca,_0x1cb783){var _0x5d0ae6=['made_sla','hold_reason',_0x9e3c('0x55'),_0x9e3c('0x56'),_0x9e3c('0x57'),_0x9e3c('0x58'),_0x9e3c('0x59'),_0x9e3c('0x5a'),_0x9e3c('0x5b')];var _0x485d61=[_0x9e3c('0x5c'),_0x9e3c('0x5d'),_0x9e3c('0x5e'),_0x9e3c('0x5f'),_0x9e3c('0x60'),_0x9e3c('0x61'),'child_incidents',_0x9e3c('0x62'),_0x9e3c('0x63'),'number',_0x9e3c('0x64'),_0x9e3c('0x65'),'opened_by',_0x9e3c('0x66'),_0x9e3c('0x67'),'sys_domain',_0x9e3c('0x68'),_0x9e3c('0x69'),'knowledge',_0x9e3c('0x37'),'calendar_stc',_0x9e3c('0x6a'),_0x9e3c('0x6b'),_0x9e3c('0x6c'),_0x9e3c('0x6d'),_0x9e3c('0x6e'),_0x9e3c('0x6f'),'business_service',_0x9e3c('0x70'),'sys_domain_path','rfc',_0x9e3c('0x71'),_0x9e3c('0x72'),_0x9e3c('0x73'),'business_duration',_0x9e3c('0x74'),'work_end',_0x9e3c('0x75'),'resolved_at',_0x9e3c('0x76'),_0x9e3c('0x77'),'subcategory',_0x9e3c('0x78'),_0x9e3c('0x79'),_0x9e3c('0x57'),'correlation_display','delivery_task',_0x9e3c('0x7a'),_0x9e3c('0x7b'),_0x9e3c('0x7c'),'additional_assignee_list','description',_0x9e3c('0x7d'),_0x9e3c('0x58'),'sys_class_name',_0x9e3c('0x7e'),_0x9e3c('0x7f'),_0x9e3c('0x80'),_0x9e3c('0x81'),'sys_id',_0x9e3c('0x82'),_0x9e3c('0x83'),_0x9e3c('0x59'),_0x9e3c('0x84'),_0x9e3c('0x85'),_0x9e3c('0x86'),'reassignment_count',_0x9e3c('0x87'),_0x9e3c('0x88'),_0x9e3c('0x5a'),'comments',_0x9e3c('0x89'),'approval',_0x9e3c('0x8a'),_0x9e3c('0x8b'),_0x9e3c('0x8c'),_0x9e3c('0x8d'),_0x9e3c('0x8e'),_0x9e3c('0x8f'),'upon_approval','correlation_id',_0x9e3c('0x90'),_0x9e3c('0x5b')];var _0x5030d0='';var _0xb31f70='';var _0x3566e0=[];var _0x5e8a55='';var _0x19f6e4='';var _0x247a96=[];var _0x4a0fce='';var _0x483b65='';var _0x5b3ca2={};var _0x4755d4='';return db['ServicenowAccount'][_0x9e3c('0x91')]({'where':{'id':_0x449f25['params']['id']},'attributes':['id','username',_0x9e3c('0x92'),'email',_0x9e3c('0x93'),_0x9e3c('0x94')]})['then'](handleEntityNotFound(_0x3235ca,null))['then'](function(_0x19f55f){if(_0x19f55f){_0x4755d4=_0x19f55f['remoteUri'];var _0xb6f8bb=_0x4755d4[_0x9e3c('0x95')](-0x1);if(_0xb6f8bb==='/'){_0x4755d4=_0x4755d4['substring'](0x0,_0x4755d4[_0x9e3c('0x96')](_0xb6f8bb));}_0x483b65=util[_0x9e3c('0x97')](_0x9e3c('0x98'),_0x4755d4);_0x4a0fce=util[_0x9e3c('0x97')](_0x9e3c('0x99'),_0x4755d4);_0x5b3ca2={'user':_0x19f55f[_0x9e3c('0x9a')],'pass':_0x19f55f[_0x9e3c('0x92')]};var _0x3f92b3={'method':_0x9e3c('0x9b'),'uri':_0x483b65+'incident?sysparm_display_value=all','auth':_0x5b3ca2,'json':!![]};return rp(_0x3f92b3);}})[_0x9e3c('0x24')](function(_0x23e9ac){if(_0x23e9ac[_0x9e3c('0x9c')][_0x9e3c('0x34')]>0x0){_0x5030d0=_0x23e9ac['result'];}console[_0x9e3c('0x9d')](_0x9e3c('0x9e'),_0x5030d0);_0x247a96=[];_0xb31f70=Object[_0x9e3c('0x9f')]([],_0x5030d0);_['remove'](_0xb31f70,function(_0x2ff4ef){return!_0x5d0ae6['includes'](_0x2ff4ef[_0x9e3c('0x26')]);});_0xb31f70[_0x9e3c('0xa0')](function(_0x446f7c){var _0x217c95=createFieldObject(_0x4a0fce,_0x5b3ca2,_0x446f7c[_0x9e3c('0xa1')],_0x446f7c[_0x9e3c('0x26')],_0x446f7c[_0x9e3c('0xa2')],![]);_0x247a96[_0x9e3c('0xa3')](_0x217c95);});return Promise[_0x9e3c('0xa4')](_0x247a96);})[_0x9e3c('0x24')](function(_0x20baf2){_0x3566e0=_0x20baf2;_0x5e8a55=Object[_0x9e3c('0x9f')]([],_0x5030d0);console[_0x9e3c('0x9d')](_0x9e3c('0xa5'),_0x5030d0);_[_0x9e3c('0xa6')](_0x5e8a55,function(_0x7209fc){return _0x485d61['includes'](_0x7209fc['name']);});console[_0x9e3c('0x9d')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x5e8a55);_0x247a96=[];_0x5e8a55[_0x9e3c('0xa0')](function(_0x2859c7){var _0x468669=createFieldObject(_0x4a0fce,_0x5b3ca2,_0x2859c7[_0x9e3c('0xa1')],_0x2859c7[_0x9e3c('0x26')],_0x2859c7[_0x9e3c('0xa2')],!![]);_0x247a96[_0x9e3c('0xa3')](_0x468669);});return Promise[_0x9e3c('0xa4')](_0x247a96);})['then'](function(_0x1b82c3){_0x19f6e4=_0x1b82c3;var _0x4a41e5=_0x3566e0[_0x9e3c('0xa7')](_0x19f6e4);return{'count':_0x4a41e5['length'],'rows':_0x4a41e5};})['then'](respondWithResult(_0x3235ca,null))[_0x9e3c('0x44')](function(_0x4038c4){console[_0x9e3c('0x9d')](_0x9e3c('0xa8')+_0x4038c4);var _0x16b6d6=_0x449f25[_0x9e3c('0x2f')][_0x9e3c('0xa9')]?0x1f4:_0x4038c4['statusCode']||0x1f4;logger['error'](_0x4038c4[_0x9e3c('0x25')]);delete _0x4038c4[_0x9e3c('0x26')];if(_0x16b6d6===0x191){_0x16b6d6=0x190;}_0x3235ca['status'](_0x16b6d6)['send'](_0x449f25['query'][_0x9e3c('0xa9')]?{'message':_0x9e3c('0xaa'),'statusCode':_0x4038c4[_0x9e3c('0xab')]}:_0x4038c4);});};function createFieldObject(_0x4a4a31,_0x3dfecc,_0x389d0c,_0x4e7d71,_0x15cf4c,_0x5c116a){return new Promise(function(_0x53f392,_0x430f27){var _0x1b3f6e={'id':_0x4e7d71,'name':_0x15cf4c,'custom':_0x5c116a};if(_0x389d0c===_0x9e3c('0xac')){_0x1b3f6e[_0x9e3c('0x3c')]=[{'name':_0x9e3c('0xad'),'value':_0x9e3c('0xae')},{'name':_0x9e3c('0xaf'),'value':_0x9e3c('0xb0')}];_0x53f392(_0x1b3f6e);}else{var _0x59bbfc={'method':_0x9e3c('0x9b'),'uri':_0x4a4a31+_0x9e3c('0xb1')+_0x4e7d71,'auth':_0x3dfecc,'json':!![]};return rp(_0x59bbfc)[_0x9e3c('0x24')](function(_0x18e316){var _0x57315f=[];if(_0x18e316[_0x9e3c('0x9c')][_0x9e3c('0x34')]>0x0){_0x18e316[_0x9e3c('0x9c')][_0x9e3c('0xa0')](function(_0x39fdc9){if(_0x39fdc9[_0x9e3c('0xb2')]===_0x9e3c('0xb0')){var _0x1f4ae1={'name':_0x39fdc9['label'],'value':_0x39fdc9[_0x9e3c('0xb3')]};_0x57315f['push'](_0x1f4ae1);}});}_0x1b3f6e[_0x9e3c('0x3c')]=_0x57315f;if(_0x1b3f6e['options'][_0x9e3c('0x34')]>0x0){_0x53f392(_0x1b3f6e);}else{if(_0x5c116a==![]){_0x53f392();}else{_0x53f392(_0x1b3f6e);}}});}});}
\ No newline at end of file
+var _0x7aa8=['eml-format','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','update','then','error','name','send','index','ServicenowAccount','rawAttributes','fieldName','map','query','keys','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','destroy','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','type','ServicenowConfiguration','ServicenowField','getFields','made_sla','hold_reason','knowledge','subcategory','close_code','notify','severity','category','parent','caused_by','watch_list','upon_reject','child_incidents','approval_history','resolved_by','opened_by','user_input','state','sys_created_by','calendar_stc','cmdb_ci','impact','work_notes_list','business_service','time_worked','expected_start','opened_at','business_duration','group_list','work_end','reopened_time','resolved_at','caller_id','work_notes','correlation_display','delivery_task','work_start','assignment_group','additional_assignee_list','description','calendar_duration','close_notes','closed_by','follow_up','contact_type','urgency','problem_id','company','activity_due','assigned_to','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','correlation_id','location','username','email','remoteUri','substring','lastIndexOf','format','%s/api/now/doc/table/schema/','%s/api/now/table/','password','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','forEach','internalType','label','all','includes','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','push','concat','test','statusCode','stack','boolean','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','value'];(function(_0x1ce0c8,_0x1bf13a){var _0x194f0d=function(_0x275093){while(--_0x275093){_0x1ce0c8['push'](_0x1ce0c8['shift']());}};_0x194f0d(++_0x1bf13a);}(_0x7aa8,0x166));var _0x87aa=function(_0x5d6370,_0x5deb7d){_0x5d6370=_0x5d6370-0x0;var _0x53e4bd=_0x7aa8[_0x5d6370];return _0x53e4bd;};'use strict';var emlformat=require(_0x87aa('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87aa('0x1'));var jsonpatch=require(_0x87aa('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x87aa('0x3'));var Mustache=require(_0x87aa('0x4'));var util=require(_0x87aa('0x5'));var path=require(_0x87aa('0x6'));var sox=require(_0x87aa('0x7'));var csv=require(_0x87aa('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x87aa('0x9'));var _=require(_0x87aa('0xa'));var squel=require(_0x87aa('0xb'));var crypto=require('crypto');var jsforce=require(_0x87aa('0xc'));var deskjs=require(_0x87aa('0xd'));var toCsv=require(_0x87aa('0x8'));var querystring=require(_0x87aa('0xe'));var Papa=require(_0x87aa('0xf'));var Redis=require('ioredis');var authService=require(_0x87aa('0x10'));var qs=require(_0x87aa('0x11'));var as=require(_0x87aa('0x12'));var hardwareService=require(_0x87aa('0x13'));var logger=require(_0x87aa('0x14'))(_0x87aa('0x15'));var utils=require(_0x87aa('0x16'));var config=require(_0x87aa('0x17'));var licenseUtil=require(_0x87aa('0x18'));var db=require(_0x87aa('0x19'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x376f42,_0x1e3842){_0x1e3842=_0x1e3842||0xcc;return function(_0x22d811){if(_0x22d811){return _0x376f42[_0x87aa('0x1a')](_0x1e3842);}return _0x376f42[_0x87aa('0x1b')](_0x1e3842)[_0x87aa('0x1c')]();};}function respondWithResult(_0x450e6f,_0x15dae0){_0x15dae0=_0x15dae0||0xc8;return function(_0x2630d0){if(_0x2630d0){return _0x450e6f['status'](_0x15dae0)['json'](_0x2630d0);}};}function respondWithFilteredResult(_0x4bbc8a,_0x22e571){return function(_0x35a19e){if(_0x35a19e){var _0x118774=typeof _0x22e571[_0x87aa('0x1d')]===_0x87aa('0x1e')&&typeof _0x22e571[_0x87aa('0x1f')]===_0x87aa('0x1e');var _0x3c5c63=_0x35a19e[_0x87aa('0x20')];var _0x4de6ec=_0x118774?0x0:_0x22e571[_0x87aa('0x1d')];var _0x574e2b=_0x118774?_0x35a19e[_0x87aa('0x20')]:_0x22e571['offset']+_0x22e571[_0x87aa('0x1f')];var _0x41c7cf;if(_0x574e2b>=_0x3c5c63){_0x574e2b=_0x3c5c63;_0x41c7cf=0xc8;}else{_0x41c7cf=0xce;}_0x4bbc8a['status'](_0x41c7cf);return _0x4bbc8a['set']('Content-Range',_0x4de6ec+'-'+_0x574e2b+'/'+_0x3c5c63)[_0x87aa('0x21')](_0x35a19e);}return null;};}function patchUpdates(_0x34ab0f){return function(_0x44c0a9){try{jsonpatch[_0x87aa('0x22')](_0x44c0a9,_0x34ab0f,!![]);}catch(_0x3c644d){return BPromise[_0x87aa('0x23')](_0x3c644d);}return _0x44c0a9['save']();};}function saveUpdates(_0x243e5d,_0x310881){return function(_0x19a7e1){if(_0x19a7e1){return _0x19a7e1[_0x87aa('0x24')](_0x243e5d)[_0x87aa('0x25')](function(_0x1aa4aa){return _0x1aa4aa;});}return null;};}function removeEntity(_0x6407c6,_0x4fa84b){return function(_0x308124){if(_0x308124){return _0x308124['destroy']()[_0x87aa('0x25')](function(){_0x6407c6[_0x87aa('0x1b')](0xcc)[_0x87aa('0x1c')]();});}};}function handleEntityNotFound(_0x19037a,_0x5b606d){return function(_0x1dcaaa){if(!_0x1dcaaa){_0x19037a[_0x87aa('0x1a')](0x194);}return _0x1dcaaa;};}function handleError(_0x2d2d1c,_0x3feef5){_0x3feef5=_0x3feef5||0x1f4;return function(_0x407dda){logger[_0x87aa('0x26')](_0x407dda['stack']);if(_0x407dda[_0x87aa('0x27')]){delete _0x407dda[_0x87aa('0x27')];}_0x2d2d1c[_0x87aa('0x1b')](_0x3feef5)[_0x87aa('0x28')](_0x407dda);};}exports[_0x87aa('0x29')]=function(_0x1b24a6,_0x389f4c){var _0x45734e={},_0x3397d2={},_0x3e9cdf={'count':0x0,'rows':[]};var _0xfa7f73=_['map'](db[_0x87aa('0x2a')][_0x87aa('0x2b')],function(_0xf9fe87){return{'name':_0xf9fe87[_0x87aa('0x2c')],'type':_0xf9fe87['type']['key']};});_0x3397d2['model']=_[_0x87aa('0x2d')](_0xfa7f73,_0x87aa('0x27'));_0x3397d2[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x1b24a6[_0x87aa('0x2e')]);_0x3397d2['filters']=_[_0x87aa('0x30')](_0x3397d2[_0x87aa('0x31')],_0x3397d2['query']);_0x45734e[_0x87aa('0x32')]=_['intersection'](_0x3397d2['model'],qs['fields'](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x33')]));_0x45734e['attributes']=_0x45734e[_0x87aa('0x32')]['length']?_0x45734e[_0x87aa('0x32')]:_0x3397d2[_0x87aa('0x31')];if(!_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x34')](_0x87aa('0x35'))){_0x45734e[_0x87aa('0x1f')]=qs[_0x87aa('0x1f')](_0x1b24a6['query'][_0x87aa('0x1f')]);_0x45734e[_0x87aa('0x1d')]=qs[_0x87aa('0x1d')](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x1d')]);}_0x45734e[_0x87aa('0x36')]=qs[_0x87aa('0x37')](_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x37')]);_0x45734e[_0x87aa('0x38')]=qs['filters'](_[_0x87aa('0x39')](_0x1b24a6[_0x87aa('0x2e')],_0x3397d2[_0x87aa('0x3a')]),_0xfa7f73);if(_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x3b')]){_0x45734e[_0x87aa('0x38')]=_[_0x87aa('0x3c')](_0x45734e[_0x87aa('0x38')],{'$or':_['map'](_0xfa7f73,function(_0x4c5793){if(_0x4c5793['type']!=='VIRTUAL'){var _0x50dfa0={};_0x50dfa0[_0x4c5793[_0x87aa('0x27')]]={'$like':'%'+_0x1b24a6['query'][_0x87aa('0x3b')]+'%'};return _0x50dfa0;}})});}_0x45734e=_[_0x87aa('0x3c')]({},_0x45734e,_0x1b24a6[_0x87aa('0x3d')]);var _0x4ef56e={'where':_0x45734e[_0x87aa('0x38')]};return db[_0x87aa('0x2a')][_0x87aa('0x20')](_0x4ef56e)['then'](function(_0x1bd061){_0x3e9cdf[_0x87aa('0x20')]=_0x1bd061;if(_0x1b24a6[_0x87aa('0x2e')][_0x87aa('0x3e')]){_0x45734e[_0x87aa('0x3f')]=[{'all':!![]}];}return db[_0x87aa('0x2a')][_0x87aa('0x40')](_0x45734e);})[_0x87aa('0x25')](function(_0x1e1e0e){_0x3e9cdf[_0x87aa('0x41')]=_0x1e1e0e;return _0x3e9cdf;})['then'](respondWithFilteredResult(_0x389f4c,_0x45734e))[_0x87aa('0x42')](handleError(_0x389f4c,null));};exports[_0x87aa('0x43')]=function(_0x309dbe,_0x53df59){var _0x759cab={'raw':![],'where':{'id':_0x309dbe[_0x87aa('0x44')]['id']}},_0x7fc2b5={};_0x7fc2b5['model']=_[_0x87aa('0x2f')](db[_0x87aa('0x2a')][_0x87aa('0x2b')]);_0x7fc2b5[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x309dbe[_0x87aa('0x2e')]);_0x7fc2b5[_0x87aa('0x3a')]=_[_0x87aa('0x30')](_0x7fc2b5[_0x87aa('0x31')],_0x7fc2b5['query']);_0x759cab[_0x87aa('0x32')]=_[_0x87aa('0x30')](_0x7fc2b5[_0x87aa('0x31')],qs['fields'](_0x309dbe[_0x87aa('0x2e')][_0x87aa('0x33')]));_0x759cab[_0x87aa('0x32')]=_0x759cab['attributes'][_0x87aa('0x45')]?_0x759cab[_0x87aa('0x32')]:_0x7fc2b5[_0x87aa('0x31')];if(_0x309dbe['query'][_0x87aa('0x3e')]){_0x759cab[_0x87aa('0x3f')]=[{'all':!![]}];}_0x759cab=_[_0x87aa('0x3c')]({},_0x759cab,_0x309dbe[_0x87aa('0x3d')]);return db[_0x87aa('0x2a')][_0x87aa('0x46')](_0x759cab)[_0x87aa('0x25')](handleEntityNotFound(_0x53df59,null))['then'](respondWithResult(_0x53df59,null))[_0x87aa('0x42')](handleError(_0x53df59,null));};exports[_0x87aa('0x47')]=function(_0x34ec3a,_0x2195ca){return db[_0x87aa('0x2a')][_0x87aa('0x47')](_0x34ec3a[_0x87aa('0x48')],{})[_0x87aa('0x25')](respondWithResult(_0x2195ca,0xc9))[_0x87aa('0x42')](handleError(_0x2195ca,null));};exports[_0x87aa('0x24')]=function(_0x1c2e15,_0x2e59d2){if(_0x1c2e15[_0x87aa('0x48')]['id']){delete _0x1c2e15[_0x87aa('0x48')]['id'];}return db[_0x87aa('0x2a')]['find']({'where':{'id':_0x1c2e15[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x2e59d2,null))[_0x87aa('0x25')](saveUpdates(_0x1c2e15['body'],null))[_0x87aa('0x25')](respondWithResult(_0x2e59d2,null))[_0x87aa('0x42')](handleError(_0x2e59d2,null));};exports[_0x87aa('0x49')]=function(_0x5b2795,_0x581002){return db['ServicenowAccount'][_0x87aa('0x46')]({'where':{'id':_0x5b2795[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x581002,null))[_0x87aa('0x25')](removeEntity(_0x581002,null))['catch'](handleError(_0x581002,null));};exports[_0x87aa('0x4a')]=function(_0x44b362,_0x35cf56,_0x70ead5){var _0x4cd384={};var _0x391e1c={};var _0x5affbe;var _0x272b9a;return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x44b362[_0x87aa('0x44')]['id']}})['then'](handleEntityNotFound(_0x35cf56,null))[_0x87aa('0x25')](function(_0xe2b04){if(_0xe2b04){_0x5affbe=_0xe2b04;_0x391e1c[_0x87aa('0x31')]=_[_0x87aa('0x2f')](db['ServicenowConfiguration'][_0x87aa('0x2b')]);_0x391e1c[_0x87aa('0x2e')]=_[_0x87aa('0x2f')](_0x44b362[_0x87aa('0x2e')]);_0x391e1c['filters']=_[_0x87aa('0x30')](_0x391e1c[_0x87aa('0x31')],_0x391e1c[_0x87aa('0x2e')]);_0x4cd384['attributes']=_['intersection'](_0x391e1c['model'],qs['fields'](_0x44b362['query'][_0x87aa('0x33')]));_0x4cd384[_0x87aa('0x32')]=_0x4cd384['attributes'][_0x87aa('0x45')]?_0x4cd384[_0x87aa('0x32')]:_0x391e1c['model'];_0x4cd384[_0x87aa('0x36')]=qs['sort'](_0x44b362[_0x87aa('0x2e')][_0x87aa('0x37')]);_0x4cd384[_0x87aa('0x38')]=qs[_0x87aa('0x3a')](_[_0x87aa('0x39')](_0x44b362[_0x87aa('0x2e')],_0x391e1c[_0x87aa('0x3a')]));if(_0x44b362[_0x87aa('0x2e')][_0x87aa('0x3b')]){_0x4cd384[_0x87aa('0x38')]=_['merge'](_0x4cd384['where'],{'$or':_[_0x87aa('0x2d')](_0x4cd384['attributes'],function(_0x821aaf){var _0x4c3905={};_0x4c3905[_0x821aaf]={'$like':'%'+_0x44b362[_0x87aa('0x2e')][_0x87aa('0x3b')]+'%'};return _0x4c3905;})});}_0x4cd384=_[_0x87aa('0x3c')]({},_0x4cd384,_0x44b362['options']);return _0x5affbe[_0x87aa('0x4a')](_0x4cd384);}})[_0x87aa('0x25')](function(_0x424c02){if(_0x424c02){_0x272b9a=_0x424c02[_0x87aa('0x45')];if(!_0x44b362[_0x87aa('0x2e')][_0x87aa('0x34')](_0x87aa('0x35'))){_0x4cd384[_0x87aa('0x1f')]=qs['limit'](_0x44b362[_0x87aa('0x2e')][_0x87aa('0x1f')]);_0x4cd384[_0x87aa('0x1d')]=qs[_0x87aa('0x1d')](_0x44b362['query']['offset']);}return _0x5affbe['getConfigurations'](_0x4cd384);}})[_0x87aa('0x25')](function(_0xe91b7a){if(_0xe91b7a){return _0xe91b7a?{'count':_0x272b9a,'rows':_0xe91b7a}:null;}})[_0x87aa('0x25')](respondWithResult(_0x35cf56,null))[_0x87aa('0x42')](handleError(_0x35cf56,null));};exports[_0x87aa('0x4c')]=function(_0x3a64c4,_0x3d3c0d,_0x5449f6){if(_0x3a64c4[_0x87aa('0x48')]['id']){delete _0x3a64c4[_0x87aa('0x48')]['id'];}return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x3a64c4[_0x87aa('0x44')]['id']}})[_0x87aa('0x25')](handleEntityNotFound(_0x3d3c0d,null))[_0x87aa('0x25')](function(_0x1e75fe){if(_0x1e75fe){_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x4d')]=_0x1e75fe['id'];_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x4e')]=integrations[_0x87aa('0x4f')](_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x50')],_0x3a64c4[_0x87aa('0x48')]['type']);_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x51')]=integrations['getDescriptions'](_0x3a64c4['body'][_0x87aa('0x50')],_0x3a64c4[_0x87aa('0x48')][_0x87aa('0x52')]);return db[_0x87aa('0x53')][_0x87aa('0x47')](_0x3a64c4[_0x87aa('0x48')],{'include':[{'model':db['ServicenowField'],'as':_0x87aa('0x4e')},{'model':db[_0x87aa('0x54')],'as':_0x87aa('0x51')}]});}return null;})['then'](respondWithResult(_0x3d3c0d,null))[_0x87aa('0x42')](handleError(_0x3d3c0d,null));};exports[_0x87aa('0x55')]=function(_0x725be5,_0x41d319,_0x158f9d){var _0x133637=[_0x87aa('0x56'),_0x87aa('0x57'),_0x87aa('0x58'),_0x87aa('0x59'),_0x87aa('0x5a'),_0x87aa('0x5b'),'incident_state',_0x87aa('0x5c'),_0x87aa('0x5d')];var _0x4f7228=[_0x87aa('0x5e'),_0x87aa('0x56'),_0x87aa('0x5f'),_0x87aa('0x60'),_0x87aa('0x61'),'sys_updated_on',_0x87aa('0x62'),'hold_reason',_0x87aa('0x63'),'number',_0x87aa('0x64'),'sys_updated_by',_0x87aa('0x65'),_0x87aa('0x66'),'sys_created_on','sys_domain',_0x87aa('0x67'),_0x87aa('0x68'),'knowledge',_0x87aa('0x36'),_0x87aa('0x69'),'closed_at',_0x87aa('0x6a'),'delivery_plan',_0x87aa('0x6b'),'active',_0x87aa('0x6c'),_0x87aa('0x6d'),'priority','sys_domain_path','rfc',_0x87aa('0x6e'),_0x87aa('0x6f'),_0x87aa('0x70'),_0x87aa('0x71'),_0x87aa('0x72'),_0x87aa('0x73'),_0x87aa('0x74'),_0x87aa('0x75'),_0x87aa('0x76'),'approval_set',_0x87aa('0x59'),_0x87aa('0x77'),'short_description',_0x87aa('0x5a'),_0x87aa('0x78'),_0x87aa('0x79'),_0x87aa('0x7a'),_0x87aa('0x7b'),'business_stc',_0x87aa('0x7c'),_0x87aa('0x7d'),_0x87aa('0x7e'),'notify','sys_class_name',_0x87aa('0x7f'),_0x87aa('0x80'),_0x87aa('0x81'),'parent_incident','sys_id',_0x87aa('0x82'),'reopened_by','incident_state',_0x87aa('0x83'),_0x87aa('0x84'),_0x87aa('0x85'),'reassignment_count',_0x87aa('0x86'),_0x87aa('0x87'),'severity','comments','sla_due',_0x87aa('0x88'),_0x87aa('0x89'),_0x87aa('0x8a'),_0x87aa('0x8b'),_0x87aa('0x8c'),_0x87aa('0x8d'),'escalation','upon_approval',_0x87aa('0x8e'),_0x87aa('0x8f'),_0x87aa('0x5d')];var _0x29aca0='';var _0x3ee5cf='';var _0xf8019b=[];var _0x4aa641='';var _0x9bb5c5='';var _0x2abb4e=[];var _0xb947b='';var _0x4190ba='';var _0x13ff21={};var _0x1983a5='';return db[_0x87aa('0x2a')][_0x87aa('0x4b')]({'where':{'id':_0x725be5[_0x87aa('0x44')]['id']},'attributes':['id',_0x87aa('0x90'),'password',_0x87aa('0x91'),_0x87aa('0x92'),'serverUrl']})[_0x87aa('0x25')](handleEntityNotFound(_0x41d319,null))[_0x87aa('0x25')](function(_0x1a41ba){if(_0x1a41ba){_0x1983a5=_0x1a41ba[_0x87aa('0x92')];var _0x14e9a4=_0x1983a5['slice'](-0x1);if(_0x14e9a4==='/'){_0x1983a5=_0x1983a5[_0x87aa('0x93')](0x0,_0x1983a5[_0x87aa('0x94')](_0x14e9a4));}_0x4190ba=util[_0x87aa('0x95')](_0x87aa('0x96'),_0x1983a5);_0xb947b=util[_0x87aa('0x95')](_0x87aa('0x97'),_0x1983a5);_0x13ff21={'user':_0x1a41ba[_0x87aa('0x90')],'pass':_0x1a41ba[_0x87aa('0x98')]};var _0x2da6d2={'method':_0x87aa('0x99'),'uri':_0x4190ba+_0x87aa('0x9a'),'auth':_0x13ff21,'json':!![]};return rp(_0x2da6d2);}})[_0x87aa('0x25')](function(_0x3664b9){if(_0x3664b9['result'][_0x87aa('0x45')]>0x0){_0x29aca0=_0x3664b9[_0x87aa('0x9b')];}console[_0x87aa('0x9c')](_0x87aa('0x9d'),_0x29aca0);_0x2abb4e=[];_0x3ee5cf=Object[_0x87aa('0x9e')]([],_0x29aca0);_[_0x87aa('0x9f')](_0x3ee5cf,function(_0x2f3ebb){return!_0x133637['includes'](_0x2f3ebb[_0x87aa('0x27')]);});_0x3ee5cf[_0x87aa('0xa0')](function(_0x5a5041){var _0x34443d=createFieldObject(_0xb947b,_0x13ff21,_0x5a5041[_0x87aa('0xa1')],_0x5a5041[_0x87aa('0x27')],_0x5a5041[_0x87aa('0xa2')],![]);_0x2abb4e['push'](_0x34443d);});return Promise[_0x87aa('0xa3')](_0x2abb4e);})['then'](function(_0x2739c4){_0xf8019b=_0x2739c4;_0x4aa641=Object[_0x87aa('0x9e')]([],_0x29aca0);console[_0x87aa('0x9c')]('TCL:\x20_object',_0x29aca0);_[_0x87aa('0x9f')](_0x4aa641,function(_0x2f72a4){return _0x4f7228[_0x87aa('0xa4')](_0x2f72a4['name']);});console[_0x87aa('0x9c')](_0x87aa('0xa5'),_0x4aa641);_0x2abb4e=[];_0x4aa641[_0x87aa('0xa0')](function(_0x8d5ea8){var _0x580795=createFieldObject(_0xb947b,_0x13ff21,_0x8d5ea8[_0x87aa('0xa1')],_0x8d5ea8[_0x87aa('0x27')],_0x8d5ea8['label'],!![]);_0x2abb4e[_0x87aa('0xa6')](_0x580795);});return Promise[_0x87aa('0xa3')](_0x2abb4e);})[_0x87aa('0x25')](function(_0x5e06ea){_0x9bb5c5=_0x5e06ea;var _0x27147a=_0xf8019b[_0x87aa('0xa7')](_0x9bb5c5);return{'count':_0x27147a[_0x87aa('0x45')],'rows':_0x27147a};})[_0x87aa('0x25')](respondWithResult(_0x41d319,null))[_0x87aa('0x42')](function(_0x1d2633){console[_0x87aa('0x9c')]('ServiceNow\x20error:\x20'+_0x1d2633);var _0x365a43=_0x725be5['query'][_0x87aa('0xa8')]?0x1f4:_0x1d2633[_0x87aa('0xa9')]||0x1f4;logger[_0x87aa('0x26')](_0x1d2633[_0x87aa('0xaa')]);delete _0x1d2633[_0x87aa('0x27')];if(_0x365a43===0x191){_0x365a43=0x190;}_0x41d319[_0x87aa('0x1b')](_0x365a43)['send'](_0x725be5[_0x87aa('0x2e')][_0x87aa('0xa8')]?{'message':'Wrong\x20credentials','statusCode':_0x1d2633[_0x87aa('0xa9')]}:_0x1d2633);});};function createFieldObject(_0x45121d,_0x38b0e7,_0x1460eb,_0xde635d,_0x2d1eae,_0x37fa29){return new Promise(function(_0x4d352a,_0x17eb83){var _0x5625c7={'id':_0xde635d,'name':_0x2d1eae,'custom':_0x37fa29};if(_0x1460eb===_0x87aa('0xab')){_0x5625c7[_0x87aa('0x3d')]=[{'name':_0x87aa('0xac'),'value':_0x87aa('0xad')},{'name':_0x87aa('0xae'),'value':_0x87aa('0xaf')}];_0x4d352a(_0x5625c7);}else{var _0xe02613={'method':_0x87aa('0x99'),'uri':_0x45121d+_0x87aa('0xb0')+_0xde635d,'auth':_0x38b0e7,'json':!![]};return rp(_0xe02613)[_0x87aa('0x25')](function(_0xc008cd){var _0x1f667b=[];if(_0xc008cd[_0x87aa('0x9b')][_0x87aa('0x45')]>0x0){_0xc008cd[_0x87aa('0x9b')][_0x87aa('0xa0')](function(_0x3ebde8){if(_0x3ebde8[_0x87aa('0xb1')]===_0x87aa('0xaf')){var _0x360c20={'name':_0x3ebde8['label'],'value':_0x3ebde8[_0x87aa('0xb2')]};_0x1f667b[_0x87aa('0xa6')](_0x360c20);}});}_0x5625c7[_0x87aa('0x3d')]=_0x1f667b;if(_0x5625c7[_0x87aa('0x3d')]['length']>0x0){_0x4d352a(_0x5625c7);}else{if(_0x37fa29==![]){_0x4d352a();}else{_0x4d352a(_0x5625c7);}}});}});}
\ No newline at end of file
index 011f90a..d7b4d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fb=['../../components/integrations/configuration','define','int_servicenow_accounts','lodash','util','../../config/logger','api','path','rimraf','./intServicenowAccount.attributes'];(function(_0x442b68,_0x11bb13){var _0x224ba7=function(_0x3b6246){while(--_0x3b6246){_0x442b68['push'](_0x442b68['shift']());}};_0x224ba7(++_0x11bb13);}(_0xd8fb,0x99));var _0xbd8f=function(_0x14cbde,_0x215749){_0x14cbde=_0x14cbde-0x0;var _0x3679e2=_0xd8fb[_0x14cbde];return _0x3679e2;};'use strict';var _=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var logger=require(_0xbd8f('0x2'))(_0xbd8f('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xbd8f('0x4'));var rimraf=require(_0xbd8f('0x5'));var config=require('../../config/environment');var attributes=require(_0xbd8f('0x6'));var integrations=require(_0xbd8f('0x7'));module['exports']=function(_0x33d541,_0x4e97cf){return _0x33d541[_0xbd8f('0x8')]('ServicenowAccount',attributes,{'tableName':_0xbd8f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4c7=['moment','request-promise','path','rimraf','../../config/environment','./intServicenowAccount.attributes','exports','ServicenowAccount','int_servicenow_accounts','lodash','util','../../config/logger','api'];(function(_0x1d41a2,_0x33011b){var _0x241d1c=function(_0x1c8b0a){while(--_0x1c8b0a){_0x1d41a2['push'](_0x1d41a2['shift']());}};_0x241d1c(++_0x33011b);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x2d70c,_0x284b4b){_0x2d70c=_0x2d70c-0x0;var _0x2a1337=_0xb4c7[_0x2d70c];return _0x2a1337;};'use strict';var _=require(_0x7b4c('0x0'));var util=require(_0x7b4c('0x1'));var logger=require(_0x7b4c('0x2'))(_0x7b4c('0x3'));var moment=require(_0x7b4c('0x4'));var BPromise=require('bluebird');var rp=require(_0x7b4c('0x5'));var fs=require('fs');var path=require(_0x7b4c('0x6'));var rimraf=require(_0x7b4c('0x7'));var config=require(_0x7b4c('0x8'));var attributes=require(_0x7b4c('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x7b4c('0xa')]=function(_0x10e197,_0x2dd5c7){return _0x10e197['define'](_0x7b4c('0xb'),attributes,{'tableName':_0x7b4c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b4a526e..42775c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5465=['request\x20sent','debug','stringify','error','code','message','result','catch','GetServicenowAccount','findAll','options','raw','where','attributes','limit','include','map','model','then','ShowServicenowAccount','ServicenowAccount','lodash','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ServicenowAccount,\x20%s,\x20%s'];(function(_0x38b8bd,_0x39822a){var _0x5a3760=function(_0x4b6f3a){while(--_0x4b6f3a){_0x38b8bd['push'](_0x38b8bd['shift']());}};_0x5a3760(++_0x39822a);}(_0x5465,0x150));var _0x5546=function(_0x18d9fe,_0x33f8df){_0x18d9fe=_0x18d9fe-0x0;var _0x19005d=_0x5465[_0x18d9fe];return _0x19005d;};'use strict';var _=require(_0x5546('0x0'));var util=require(_0x5546('0x1'));var moment=require(_0x5546('0x2'));var BPromise=require(_0x5546('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5546('0x4'));var logger=require(_0x5546('0x5'))(_0x5546('0x6'));var config=require(_0x5546('0x7'));var jayson=require(_0x5546('0x8'));var client=jayson[_0x5546('0x9')][_0x5546('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4d5445,_0x8f4898,_0x9fe109){return new BPromise(function(_0x1fbde4,_0x45292b){return client[_0x5546('0xb')](_0x4d5445,_0x9fe109)['then'](function(_0x273ae1){logger[_0x5546('0xc')](_0x5546('0xd'),_0x8f4898,_0x5546('0xe'));logger[_0x5546('0xf')]('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x8f4898,_0x5546('0xe'),JSON[_0x5546('0x10')](_0x273ae1));if(_0x273ae1[_0x5546('0x11')]){if(_0x273ae1[_0x5546('0x11')][_0x5546('0x12')]===0x1f4){logger[_0x5546('0x11')]('ServicenowAccount,\x20%s,\x20%s',_0x8f4898,_0x273ae1['error'][_0x5546('0x13')]);return _0x45292b(_0x273ae1[_0x5546('0x11')]['message']);}logger[_0x5546('0x11')](_0x5546('0xd'),_0x8f4898,_0x273ae1[_0x5546('0x11')]['message']);return _0x1fbde4(_0x273ae1['error']['message']);}else{logger[_0x5546('0xc')](_0x5546('0xd'),_0x8f4898,'request\x20sent');_0x1fbde4(_0x273ae1[_0x5546('0x14')][_0x5546('0x13')]);}})[_0x5546('0x15')](function(_0xb982ee){logger['error'](_0x5546('0xd'),_0x8f4898,_0xb982ee);_0x45292b(_0xb982ee);});});}exports[_0x5546('0x16')]=function(_0x38605b){var _0x271b6f=this;return new Promise(function(_0x416324,_0x3b3fa7){return db['ServicenowAccount'][_0x5546('0x17')]({'raw':_0x38605b[_0x5546('0x18')]?_0x38605b['options'][_0x5546('0x19')]===undefined?!![]:![]:!![],'where':_0x38605b[_0x5546('0x18')]?_0x38605b[_0x5546('0x18')][_0x5546('0x1a')]||null:null,'attributes':_0x38605b['options']?_0x38605b[_0x5546('0x18')][_0x5546('0x1b')]||null:null,'limit':_0x38605b[_0x5546('0x18')]?_0x38605b['options'][_0x5546('0x1c')]||null:null,'include':_0x38605b[_0x5546('0x18')]?_0x38605b[_0x5546('0x18')]['include']?_['map'](_0x38605b['options'][_0x5546('0x1d')],function(_0x2f5dc2){return{'model':db[_0x2f5dc2['model']],'as':_0x2f5dc2['as'],'attributes':_0x2f5dc2['attributes'],'include':_0x2f5dc2[_0x5546('0x1d')]?_[_0x5546('0x1e')](_0x2f5dc2['include'],function(_0x4fa72b){return{'model':db[_0x4fa72b['model']],'as':_0x4fa72b['as'],'attributes':_0x4fa72b[_0x5546('0x1b')],'include':_0x4fa72b['include']?_[_0x5546('0x1e')](_0x4fa72b[_0x5546('0x1d')],function(_0x53b7cc){return{'model':db[_0x53b7cc[_0x5546('0x1f')]],'as':_0x53b7cc['as'],'attributes':_0x53b7cc['attributes']};}):[]};}):[]};}):[]:[]})[_0x5546('0x20')](function(_0x36363a){logger[_0x5546('0xc')](_0x5546('0x16'),_0x38605b);logger['debug'](_0x5546('0x16'),_0x38605b,JSON[_0x5546('0x10')](_0x36363a));_0x416324(_0x36363a);})[_0x5546('0x15')](function(_0x4d1b88){logger[_0x5546('0x11')](_0x5546('0x16'),_0x4d1b88['message'],_0x38605b);_0x3b3fa7(_0x271b6f[_0x5546('0x11')](0x1f4,_0x4d1b88['message']));});});};exports[_0x5546('0x21')]=function(_0x403af3){var _0x309b42=this;return new Promise(function(_0x909841,_0x2e1350){return db[_0x5546('0x22')]['find']({'raw':_0x403af3[_0x5546('0x18')]?_0x403af3['options'][_0x5546('0x19')]===undefined?!![]:![]:!![],'where':_0x403af3[_0x5546('0x18')]?_0x403af3[_0x5546('0x18')][_0x5546('0x1a')]||null:null,'attributes':_0x403af3[_0x5546('0x18')]?_0x403af3[_0x5546('0x18')][_0x5546('0x1b')]||null:null,'include':_0x403af3['options']?_0x403af3['options'][_0x5546('0x1d')]?_[_0x5546('0x1e')](_0x403af3[_0x5546('0x18')]['include'],function(_0x2a5eda){return{'model':db[_0x2a5eda[_0x5546('0x1f')]],'as':_0x2a5eda['as'],'attributes':_0x2a5eda[_0x5546('0x1b')],'include':_0x2a5eda[_0x5546('0x1d')]?_['map'](_0x2a5eda[_0x5546('0x1d')],function(_0x16ac7f){return{'model':db[_0x16ac7f[_0x5546('0x1f')]],'as':_0x16ac7f['as'],'attributes':_0x16ac7f[_0x5546('0x1b')],'include':_0x16ac7f[_0x5546('0x1d')]?_[_0x5546('0x1e')](_0x16ac7f[_0x5546('0x1d')],function(_0x1c4ca5){return{'model':db[_0x1c4ca5['model']],'as':_0x1c4ca5['as'],'attributes':_0x1c4ca5[_0x5546('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5bd5da){logger['info']('ShowServicenowAccount',_0x403af3);logger[_0x5546('0xf')]('ShowServicenowAccount',_0x403af3,JSON[_0x5546('0x10')](_0x5bd5da));_0x909841(_0x5bd5da);})[_0x5546('0x15')](function(_0xa2f00f){logger[_0x5546('0x11')](_0x5546('0x21'),_0xa2f00f[_0x5546('0x13')],_0x403af3);_0x2e1350(_0x309b42[_0x5546('0x11')](0x1f4,_0xa2f00f[_0x5546('0x13')]));});});};
\ No newline at end of file
+var _0x313b=['ServicenowAccount','findAll','options','where','attributes','limit','include','map','model','debug','ShowServicenowAccount','find','raw','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount'];(function(_0x1cc511,_0x524379){var _0x32dbc3=function(_0x57b4e9){while(--_0x57b4e9){_0x1cc511['push'](_0x1cc511['shift']());}};_0x32dbc3(++_0x524379);}(_0x313b,0x199));var _0xb313=function(_0x58977e,_0x24b117){_0x58977e=_0x58977e-0x0;var _0x2b7d4e=_0x313b[_0x58977e];return _0x2b7d4e;};'use strict';var _=require(_0xb313('0x0'));var util=require(_0xb313('0x1'));var moment=require(_0xb313('0x2'));var BPromise=require(_0xb313('0x3'));var rs=require(_0xb313('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb313('0x5'));var logger=require(_0xb313('0x6'))(_0xb313('0x7'));var config=require(_0xb313('0x8'));var jayson=require(_0xb313('0x9'));var client=jayson[_0xb313('0xa')][_0xb313('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x51241e,_0x1b59b9,_0x5405f2){return new BPromise(function(_0x591224,_0x58e32e){return client['request'](_0x51241e,_0x5405f2)[_0xb313('0xc')](function(_0x1c1715){logger[_0xb313('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x1b59b9,_0xb313('0xe'));logger['debug']('ServicenowAccount,\x20%s,\x20%s,\x20%s',_0x1b59b9,_0xb313('0xe'),JSON[_0xb313('0xf')](_0x1c1715));if(_0x1c1715[_0xb313('0x10')]){if(_0x1c1715[_0xb313('0x10')][_0xb313('0x11')]===0x1f4){logger['error'](_0xb313('0x12'),_0x1b59b9,_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);return _0x58e32e(_0x1c1715['error'][_0xb313('0x13')]);}logger[_0xb313('0x10')](_0xb313('0x12'),_0x1b59b9,_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);return _0x591224(_0x1c1715[_0xb313('0x10')][_0xb313('0x13')]);}else{logger[_0xb313('0xd')]('ServicenowAccount,\x20%s,\x20%s',_0x1b59b9,'request\x20sent');_0x591224(_0x1c1715[_0xb313('0x14')][_0xb313('0x13')]);}})[_0xb313('0x15')](function(_0x426fa9){logger[_0xb313('0x10')](_0xb313('0x12'),_0x1b59b9,_0x426fa9);_0x58e32e(_0x426fa9);});});}exports[_0xb313('0x16')]=function(_0x579410){var _0x24408d=this;return new Promise(function(_0xccaa1f,_0x29e600){return db[_0xb313('0x17')][_0xb313('0x18')]({'raw':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')][_0xb313('0x1a')]||null:null,'attributes':_0x579410[_0xb313('0x19')]?_0x579410['options'][_0xb313('0x1b')]||null:null,'limit':_0x579410[_0xb313('0x19')]?_0x579410[_0xb313('0x19')][_0xb313('0x1c')]||null:null,'include':_0x579410['options']?_0x579410[_0xb313('0x19')]['include']?_['map'](_0x579410[_0xb313('0x19')][_0xb313('0x1d')],function(_0x4c9913){return{'model':db[_0x4c9913['model']],'as':_0x4c9913['as'],'attributes':_0x4c9913[_0xb313('0x1b')],'include':_0x4c9913[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0x4c9913['include'],function(_0xb8d6b1){return{'model':db[_0xb8d6b1[_0xb313('0x1f')]],'as':_0xb8d6b1['as'],'attributes':_0xb8d6b1[_0xb313('0x1b')],'include':_0xb8d6b1[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0xb8d6b1[_0xb313('0x1d')],function(_0x2189bb){return{'model':db[_0x2189bb[_0xb313('0x1f')]],'as':_0x2189bb['as'],'attributes':_0x2189bb[_0xb313('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb313('0xc')](function(_0x595212){logger['info'](_0xb313('0x16'),_0x579410);logger[_0xb313('0x20')](_0xb313('0x16'),_0x579410,JSON['stringify'](_0x595212));_0xccaa1f(_0x595212);})[_0xb313('0x15')](function(_0x1d5683){logger['error'](_0xb313('0x16'),_0x1d5683['message'],_0x579410);_0x29e600(_0x24408d[_0xb313('0x10')](0x1f4,_0x1d5683[_0xb313('0x13')]));});});};exports[_0xb313('0x21')]=function(_0x3d356e){var _0x356eea=this;return new Promise(function(_0x424f24,_0x3cb921){return db['ServicenowAccount'][_0xb313('0x22')]({'raw':_0x3d356e['options']?_0x3d356e[_0xb313('0x19')][_0xb313('0x23')]===undefined?!![]:![]:!![],'where':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['where']||null:null,'attributes':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['attributes']||null:null,'include':_0x3d356e[_0xb313('0x19')]?_0x3d356e[_0xb313('0x19')]['include']?_[_0xb313('0x1e')](_0x3d356e[_0xb313('0x19')][_0xb313('0x1d')],function(_0xd4e9cc){return{'model':db[_0xd4e9cc[_0xb313('0x1f')]],'as':_0xd4e9cc['as'],'attributes':_0xd4e9cc[_0xb313('0x1b')],'include':_0xd4e9cc[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0xd4e9cc['include'],function(_0x30023d){return{'model':db[_0x30023d[_0xb313('0x1f')]],'as':_0x30023d['as'],'attributes':_0x30023d['attributes'],'include':_0x30023d[_0xb313('0x1d')]?_[_0xb313('0x1e')](_0x30023d[_0xb313('0x1d')],function(_0x582f33){return{'model':db[_0x582f33['model']],'as':_0x582f33['as'],'attributes':_0x582f33[_0xb313('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xb313('0xc')](function(_0xfeabea){logger['info'](_0xb313('0x21'),_0x3d356e);logger[_0xb313('0x20')](_0xb313('0x21'),_0x3d356e,JSON[_0xb313('0xf')](_0xfeabea));_0x424f24(_0xfeabea);})[_0xb313('0x15')](function(_0x4594f5){logger['error'](_0xb313('0x21'),_0x4594f5[_0xb313('0x13')],_0x3d356e);_0x3cb921(_0x356eea[_0xb313('0x10')](0x1f4,_0x4594f5[_0xb313('0x13')]));});});};
\ No newline at end of file
index 11fcdb2..8314549 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa81b=['put','update','delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post'];(function(_0x2e2a44,_0x1b1515){var _0x19c520=function(_0xd42377){while(--_0xd42377){_0x2e2a44['push'](_0x2e2a44['shift']());}};_0x19c520(++_0x1b1515);}(_0xa81b,0x6d));var _0xba81=function(_0x5498b8,_0x3fd10c){_0x5498b8=_0x5498b8-0x0;var _0x13c31c=_0xa81b[_0x5498b8];return _0x13c31c;};'use strict';var multer=require(_0xba81('0x0'));var util=require(_0xba81('0x1'));var path=require(_0xba81('0x2'));var timeout=require('connect-timeout');var express=require(_0xba81('0x3'));var router=express[_0xba81('0x4')]();var fs_extra=require(_0xba81('0x5'));var auth=require(_0xba81('0x6'));var interaction=require(_0xba81('0x7'));var config=require('../../config/environment');var controller=require(_0xba81('0x8'));router[_0xba81('0x9')]('/',auth[_0xba81('0xa')](),controller[_0xba81('0xb')]);router[_0xba81('0x9')](_0xba81('0xc'),auth[_0xba81('0xa')](),controller[_0xba81('0xd')]);router['get'](_0xba81('0xe'),auth[_0xba81('0xa')](),controller[_0xba81('0xf')]);router[_0xba81('0x9')](_0xba81('0x10'),auth[_0xba81('0xa')](),controller[_0xba81('0x11')]);router['get'](_0xba81('0x12'),auth[_0xba81('0xa')](),controller[_0xba81('0x13')]);router[_0xba81('0x14')]('/',auth[_0xba81('0xa')](),controller['create']);router[_0xba81('0x15')]('/:id',auth[_0xba81('0xa')](),controller[_0xba81('0x16')]);router[_0xba81('0x17')](_0xba81('0xc'),auth[_0xba81('0xa')](),controller[_0xba81('0x18')]);module[_0xba81('0x19')]=router;
\ No newline at end of file
+var _0x644d=['create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','./intServicenowConfiguration.controller','get','index','/:id','isAuthenticated','show','getFields','/:id/subjects','getSubjects','/:id/descriptions'];(function(_0x2a6293,_0x29d312){var _0x1fcba2=function(_0x352193){while(--_0x352193){_0x2a6293['push'](_0x2a6293['shift']());}};_0x1fcba2(++_0x29d312);}(_0x644d,0xed));var _0xd644=function(_0x264b9b,_0xa1181e){_0x264b9b=_0x264b9b-0x0;var _0x4c7a0e=_0x644d[_0x264b9b];return _0x4c7a0e;};'use strict';var multer=require(_0xd644('0x0'));var util=require('util');var path=require(_0xd644('0x1'));var timeout=require('connect-timeout');var express=require(_0xd644('0x2'));var router=express[_0xd644('0x3')]();var fs_extra=require(_0xd644('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xd644('0x5'));router[_0xd644('0x6')]('/',auth['isAuthenticated'](),controller[_0xd644('0x7')]);router[_0xd644('0x6')](_0xd644('0x8'),auth[_0xd644('0x9')](),controller[_0xd644('0xa')]);router[_0xd644('0x6')]('/:id/fields',auth['isAuthenticated'](),controller[_0xd644('0xb')]);router[_0xd644('0x6')](_0xd644('0xc'),auth[_0xd644('0x9')](),controller[_0xd644('0xd')]);router[_0xd644('0x6')](_0xd644('0xe'),auth[_0xd644('0x9')](),controller['getDescriptions']);router['post']('/',auth[_0xd644('0x9')](),controller[_0xd644('0xf')]);router[_0xd644('0x10')](_0xd644('0x8'),auth[_0xd644('0x9')](),controller[_0xd644('0x11')]);router[_0xd644('0x12')](_0xd644('0x8'),auth['isAuthenticated'](),controller[_0xd644('0x13')]);module[_0xd644('0x14')]=router;
\ No newline at end of file
index 7703470..ef9f966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa453=['sequelize','STRING'];(function(_0x27e416,_0x58bf17){var _0xd8a50e=function(_0x32fec7){while(--_0x32fec7){_0x27e416['push'](_0x27e416['shift']());}};_0xd8a50e(++_0x58bf17);}(_0xa453,0x1d4));var _0x3a45=function(_0x3a562e,_0x3a3391){_0x3a562e=_0x3a562e-0x0;var _0x26e310=_0xa453[_0x3a562e];return _0x26e310;};'use strict';var Sequelize=require(_0x3a45('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3a45('0x1')]}};
\ No newline at end of file
+var _0x32f8=['sequelize','exports','STRING'];(function(_0x28c0ac,_0x4b016f){var _0x4906fa=function(_0x44501c){while(--_0x44501c){_0x28c0ac['push'](_0x28c0ac['shift']());}};_0x4906fa(++_0x4b016f);}(_0x32f8,0x8d));var _0x832f=function(_0x501951,_0x388f47){_0x501951=_0x501951-0x0;var _0x3afd49=_0x32f8[_0x501951];return _0x3afd49;};'use strict';var Sequelize=require(_0x832f('0x0'));module[_0x832f('0x1')]={'name':{'type':Sequelize[_0x832f('0x2')]},'description':{'type':Sequelize[_0x832f('0x2')]}};
\ No newline at end of file
index 863597d..80cbaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ff2=['sort','filters','pick','filter','where','merge','options','includeAll','findAll','catch','show','params','include','find','create','body','destroy','getFields','ServicenowField','getSubjects','nolimit','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','papaparse','../../components/auth/service','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','apply','reject','save','update','then','error','send','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','key','name','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','order'];(function(_0x372b72,_0x333bf9){var _0x4ed832=function(_0x491aea){while(--_0x491aea){_0x372b72['push'](_0x372b72['shift']());}};_0x4ed832(++_0x333bf9);}(_0x9ff2,0x1e5));var _0x29ff=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0x9ff2[_0x173d7e];return _0x2220d6;};'use strict';var emlformat=require(_0x29ff('0x0'));var rimraf=require(_0x29ff('0x1'));var zipdir=require(_0x29ff('0x2'));var jsonpatch=require(_0x29ff('0x3'));var rp=require(_0x29ff('0x4'));var moment=require(_0x29ff('0x5'));var BPromise=require(_0x29ff('0x6'));var Mustache=require('mustache');var util=require(_0x29ff('0x7'));var path=require(_0x29ff('0x8'));var sox=require(_0x29ff('0x9'));var csv=require('to-csv');var ejs=require(_0x29ff('0xa'));var fs=require('fs');var fs_extra=require(_0x29ff('0xb'));var _=require('lodash');var squel=require(_0x29ff('0xc'));var crypto=require(_0x29ff('0xd'));var jsforce=require(_0x29ff('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x29ff('0xf'));var querystring=require('querystring');var Papa=require(_0x29ff('0x10'));var Redis=require('ioredis');var authService=require(_0x29ff('0x11'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x29ff('0x12'));var utils=require(_0x29ff('0x13'));var config=require(_0x29ff('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x29ff('0x15'))['db'];function respondWithStatusCode(_0x47baf8,_0x4c823a){_0x4c823a=_0x4c823a||0xcc;return function(_0x32ab27){if(_0x32ab27){return _0x47baf8[_0x29ff('0x16')](_0x4c823a);}return _0x47baf8[_0x29ff('0x17')](_0x4c823a)[_0x29ff('0x18')]();};}function respondWithResult(_0x1ee726,_0x41bf5c){_0x41bf5c=_0x41bf5c||0xc8;return function(_0x127108){if(_0x127108){return _0x1ee726['status'](_0x41bf5c)[_0x29ff('0x19')](_0x127108);}};}function respondWithFilteredResult(_0x4f229d,_0x45e436){return function(_0x505659){if(_0x505659){var _0x15279e=typeof _0x45e436['offset']===_0x29ff('0x1a')&&typeof _0x45e436[_0x29ff('0x1b')]==='undefined';var _0x5289af=_0x505659[_0x29ff('0x1c')];var _0x4caaaa=_0x15279e?0x0:_0x45e436[_0x29ff('0x1d')];var _0x54c5b0=_0x15279e?_0x505659[_0x29ff('0x1c')]:_0x45e436[_0x29ff('0x1d')]+_0x45e436[_0x29ff('0x1b')];var _0x40449a;if(_0x54c5b0>=_0x5289af){_0x54c5b0=_0x5289af;_0x40449a=0xc8;}else{_0x40449a=0xce;}_0x4f229d[_0x29ff('0x17')](_0x40449a);return _0x4f229d['set']('Content-Range',_0x4caaaa+'-'+_0x54c5b0+'/'+_0x5289af)['json'](_0x505659);}return null;};}function patchUpdates(_0x2da103){return function(_0xe5b67d){try{jsonpatch[_0x29ff('0x1e')](_0xe5b67d,_0x2da103,!![]);}catch(_0x85da9d){return BPromise[_0x29ff('0x1f')](_0x85da9d);}return _0xe5b67d[_0x29ff('0x20')]();};}function saveUpdates(_0x353c9c,_0x59d662){return function(_0x388ba5){if(_0x388ba5){return _0x388ba5[_0x29ff('0x21')](_0x353c9c)[_0x29ff('0x22')](function(_0x370a3d){return _0x370a3d;});}return null;};}function removeEntity(_0x56f3e2,_0x40286f){return function(_0x1c0a1e){if(_0x1c0a1e){return _0x1c0a1e['destroy']()[_0x29ff('0x22')](function(){_0x56f3e2[_0x29ff('0x17')](0xcc)[_0x29ff('0x18')]();});}};}function handleEntityNotFound(_0x5749fa,_0x2d8299){return function(_0x4c2d03){if(!_0x4c2d03){_0x5749fa[_0x29ff('0x16')](0x194);}return _0x4c2d03;};}function handleError(_0x358749,_0x27fa81){_0x27fa81=_0x27fa81||0x1f4;return function(_0x2a1aa5){logger[_0x29ff('0x23')](_0x2a1aa5['stack']);if(_0x2a1aa5['name']){delete _0x2a1aa5['name'];}_0x358749[_0x29ff('0x17')](_0x27fa81)[_0x29ff('0x24')](_0x2a1aa5);};}exports[_0x29ff('0x25')]=function(_0x36f7fc,_0x20825e){var _0x447a16={},_0x4f9fcc={},_0x57ce1e={'count':0x0,'rows':[]};var _0x44fbd0=_[_0x29ff('0x26')](db[_0x29ff('0x27')][_0x29ff('0x28')],function(_0x287a89){return{'name':_0x287a89[_0x29ff('0x29')],'type':_0x287a89[_0x29ff('0x2a')][_0x29ff('0x2b')]};});_0x4f9fcc['model']=_[_0x29ff('0x26')](_0x44fbd0,_0x29ff('0x2c'));_0x4f9fcc[_0x29ff('0x2d')]=_[_0x29ff('0x2e')](_0x36f7fc[_0x29ff('0x2d')]);_0x4f9fcc['filters']=_[_0x29ff('0x2f')](_0x4f9fcc[_0x29ff('0x30')],_0x4f9fcc['query']);_0x447a16[_0x29ff('0x31')]=_['intersection'](_0x4f9fcc[_0x29ff('0x30')],qs[_0x29ff('0x32')](_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x32')]));_0x447a16[_0x29ff('0x31')]=_0x447a16[_0x29ff('0x31')][_0x29ff('0x33')]?_0x447a16[_0x29ff('0x31')]:_0x4f9fcc[_0x29ff('0x30')];if(!_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x34')]('nolimit')){_0x447a16[_0x29ff('0x1b')]=qs['limit'](_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x1b')]);_0x447a16[_0x29ff('0x1d')]=qs['offset'](_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x1d')]);}_0x447a16[_0x29ff('0x35')]=qs[_0x29ff('0x36')](_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x36')]);_0x447a16['where']=qs[_0x29ff('0x37')](_[_0x29ff('0x38')](_0x36f7fc['query'],_0x4f9fcc['filters']),_0x44fbd0);if(_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x39')]){_0x447a16['where']=_['merge'](_0x447a16[_0x29ff('0x3a')],{'$or':_[_0x29ff('0x26')](_0x44fbd0,function(_0x4bbb6b){if(_0x4bbb6b[_0x29ff('0x2a')]!=='VIRTUAL'){var _0x202e37={};_0x202e37[_0x4bbb6b['name']]={'$like':'%'+_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x39')]+'%'};return _0x202e37;}})});}_0x447a16=_[_0x29ff('0x3b')]({},_0x447a16,_0x36f7fc[_0x29ff('0x3c')]);var _0x46bd60={'where':_0x447a16['where']};return db[_0x29ff('0x27')]['count'](_0x46bd60)[_0x29ff('0x22')](function(_0x4d0538){_0x57ce1e['count']=_0x4d0538;if(_0x36f7fc[_0x29ff('0x2d')][_0x29ff('0x3d')]){_0x447a16['include']=[{'all':!![]}];}return db[_0x29ff('0x27')][_0x29ff('0x3e')](_0x447a16);})[_0x29ff('0x22')](function(_0x37d505){_0x57ce1e['rows']=_0x37d505;return _0x57ce1e;})[_0x29ff('0x22')](respondWithFilteredResult(_0x20825e,_0x447a16))[_0x29ff('0x3f')](handleError(_0x20825e,null));};exports[_0x29ff('0x40')]=function(_0x35f6e4,_0x975b3a){var _0x5f03d4={'raw':![],'where':{'id':_0x35f6e4[_0x29ff('0x41')]['id']}},_0x3dd0cc={};_0x3dd0cc[_0x29ff('0x30')]=_[_0x29ff('0x2e')](db[_0x29ff('0x27')]['rawAttributes']);_0x3dd0cc['query']=_[_0x29ff('0x2e')](_0x35f6e4[_0x29ff('0x2d')]);_0x3dd0cc[_0x29ff('0x37')]=_[_0x29ff('0x2f')](_0x3dd0cc[_0x29ff('0x30')],_0x3dd0cc[_0x29ff('0x2d')]);_0x5f03d4[_0x29ff('0x31')]=_['intersection'](_0x3dd0cc[_0x29ff('0x30')],qs[_0x29ff('0x32')](_0x35f6e4[_0x29ff('0x2d')][_0x29ff('0x32')]));_0x5f03d4[_0x29ff('0x31')]=_0x5f03d4[_0x29ff('0x31')][_0x29ff('0x33')]?_0x5f03d4[_0x29ff('0x31')]:_0x3dd0cc[_0x29ff('0x30')];if(_0x35f6e4[_0x29ff('0x2d')][_0x29ff('0x3d')]){_0x5f03d4[_0x29ff('0x42')]=[{'all':!![]}];}_0x5f03d4=_[_0x29ff('0x3b')]({},_0x5f03d4,_0x35f6e4[_0x29ff('0x3c')]);return db['ServicenowConfiguration'][_0x29ff('0x43')](_0x5f03d4)[_0x29ff('0x22')](handleEntityNotFound(_0x975b3a,null))[_0x29ff('0x22')](respondWithResult(_0x975b3a,null))[_0x29ff('0x3f')](handleError(_0x975b3a,null));};exports[_0x29ff('0x44')]=function(_0x58e78d,_0x5029c0){return db[_0x29ff('0x27')][_0x29ff('0x44')](_0x58e78d['body'],{})['then'](respondWithResult(_0x5029c0,0xc9))[_0x29ff('0x3f')](handleError(_0x5029c0,null));};exports[_0x29ff('0x21')]=function(_0x3910ba,_0x402110){if(_0x3910ba[_0x29ff('0x45')]['id']){delete _0x3910ba[_0x29ff('0x45')]['id'];}return db[_0x29ff('0x27')]['find']({'where':{'id':_0x3910ba['params']['id']}})[_0x29ff('0x22')](handleEntityNotFound(_0x402110,null))[_0x29ff('0x22')](saveUpdates(_0x3910ba['body'],null))['then'](respondWithResult(_0x402110,null))[_0x29ff('0x3f')](handleError(_0x402110,null));};exports[_0x29ff('0x46')]=function(_0x2669da,_0x3e5ef4){return db[_0x29ff('0x27')][_0x29ff('0x43')]({'where':{'id':_0x2669da[_0x29ff('0x41')]['id']}})['then'](handleEntityNotFound(_0x3e5ef4,null))['then'](removeEntity(_0x3e5ef4,null))[_0x29ff('0x3f')](handleError(_0x3e5ef4,null));};exports[_0x29ff('0x47')]=function(_0x52f8f0,_0x33339d,_0x16bb4f){var _0x26beb2={};var _0x2e2e5b={};var _0x1845b1;var _0x58be83;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x52f8f0[_0x29ff('0x41')]['id']}})[_0x29ff('0x22')](handleEntityNotFound(_0x33339d,null))[_0x29ff('0x22')](function(_0x534528){if(_0x534528){_0x1845b1=_0x534528;_0x2e2e5b['model']=_[_0x29ff('0x2e')](db[_0x29ff('0x48')][_0x29ff('0x28')]);_0x2e2e5b[_0x29ff('0x2d')]=_[_0x29ff('0x2e')](_0x52f8f0[_0x29ff('0x2d')]);_0x2e2e5b[_0x29ff('0x37')]=_['intersection'](_0x2e2e5b[_0x29ff('0x30')],_0x2e2e5b[_0x29ff('0x2d')]);_0x26beb2[_0x29ff('0x31')]=_[_0x29ff('0x2f')](_0x2e2e5b['model'],qs[_0x29ff('0x32')](_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x32')]));_0x26beb2[_0x29ff('0x31')]=_0x26beb2[_0x29ff('0x31')]['length']?_0x26beb2[_0x29ff('0x31')]:_0x2e2e5b[_0x29ff('0x30')];_0x26beb2[_0x29ff('0x35')]=qs[_0x29ff('0x36')](_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x36')]);_0x26beb2[_0x29ff('0x3a')]=qs[_0x29ff('0x37')](_[_0x29ff('0x38')](_0x52f8f0[_0x29ff('0x2d')],_0x2e2e5b[_0x29ff('0x37')]));if(_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x39')]){_0x26beb2[_0x29ff('0x3a')]=_[_0x29ff('0x3b')](_0x26beb2[_0x29ff('0x3a')],{'$or':_[_0x29ff('0x26')](_0x26beb2[_0x29ff('0x31')],function(_0x2eed8a){var _0x11d399={};_0x11d399[_0x2eed8a]={'$like':'%'+_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x39')]+'%'};return _0x11d399;})});}_0x26beb2=_[_0x29ff('0x3b')]({},_0x26beb2,_0x52f8f0[_0x29ff('0x3c')]);return _0x1845b1[_0x29ff('0x47')](_0x26beb2);}})[_0x29ff('0x22')](function(_0x20783a){if(_0x20783a){_0x58be83=_0x20783a[_0x29ff('0x33')];if(!_0x52f8f0[_0x29ff('0x2d')]['hasOwnProperty']('nolimit')){_0x26beb2[_0x29ff('0x1b')]=qs[_0x29ff('0x1b')](_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x1b')]);_0x26beb2[_0x29ff('0x1d')]=qs['offset'](_0x52f8f0[_0x29ff('0x2d')][_0x29ff('0x1d')]);}return _0x1845b1['getFields'](_0x26beb2);}})[_0x29ff('0x22')](function(_0x3e4338){if(_0x3e4338){return _0x3e4338?{'count':_0x58be83,'rows':_0x3e4338}:null;}})['then'](respondWithResult(_0x33339d,null))['catch'](handleError(_0x33339d,null));};exports[_0x29ff('0x49')]=function(_0x3eb392,_0x59234d,_0xe8a6e2){var _0x252e5c={};var _0xa3ff2={};var _0x582e63;var _0x21cb31;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x3eb392[_0x29ff('0x41')]['id']}})['then'](handleEntityNotFound(_0x59234d,null))[_0x29ff('0x22')](function(_0x30a971){if(_0x30a971){_0x582e63=_0x30a971;_0xa3ff2['model']=_[_0x29ff('0x2e')](db['ServicenowField'][_0x29ff('0x28')]);_0xa3ff2[_0x29ff('0x2d')]=_['keys'](_0x3eb392['query']);_0xa3ff2[_0x29ff('0x37')]=_[_0x29ff('0x2f')](_0xa3ff2[_0x29ff('0x30')],_0xa3ff2['query']);_0x252e5c[_0x29ff('0x31')]=_['intersection'](_0xa3ff2[_0x29ff('0x30')],qs[_0x29ff('0x32')](_0x3eb392[_0x29ff('0x2d')][_0x29ff('0x32')]));_0x252e5c['attributes']=_0x252e5c['attributes'][_0x29ff('0x33')]?_0x252e5c['attributes']:_0xa3ff2[_0x29ff('0x30')];_0x252e5c[_0x29ff('0x35')]=qs[_0x29ff('0x36')](_0x3eb392[_0x29ff('0x2d')]['sort']);_0x252e5c[_0x29ff('0x3a')]=qs['filters'](_[_0x29ff('0x38')](_0x3eb392[_0x29ff('0x2d')],_0xa3ff2[_0x29ff('0x37')]));if(_0x3eb392['query']['filter']){_0x252e5c[_0x29ff('0x3a')]=_[_0x29ff('0x3b')](_0x252e5c[_0x29ff('0x3a')],{'$or':_[_0x29ff('0x26')](_0x252e5c[_0x29ff('0x31')],function(_0x1667b9){var _0x54a4f9={};_0x54a4f9[_0x1667b9]={'$like':'%'+_0x3eb392[_0x29ff('0x2d')][_0x29ff('0x39')]+'%'};return _0x54a4f9;})});}_0x252e5c=_[_0x29ff('0x3b')]({},_0x252e5c,_0x3eb392[_0x29ff('0x3c')]);return _0x582e63[_0x29ff('0x49')](_0x252e5c);}})[_0x29ff('0x22')](function(_0x451e23){if(_0x451e23){_0x21cb31=_0x451e23[_0x29ff('0x33')];if(!_0x3eb392[_0x29ff('0x2d')][_0x29ff('0x34')](_0x29ff('0x4a'))){_0x252e5c[_0x29ff('0x1b')]=qs['limit'](_0x3eb392[_0x29ff('0x2d')][_0x29ff('0x1b')]);_0x252e5c[_0x29ff('0x1d')]=qs[_0x29ff('0x1d')](_0x3eb392[_0x29ff('0x2d')][_0x29ff('0x1d')]);}return _0x582e63[_0x29ff('0x49')](_0x252e5c);}})[_0x29ff('0x22')](function(_0x4a5a53){if(_0x4a5a53){return _0x4a5a53?{'count':_0x21cb31,'rows':_0x4a5a53}:null;}})[_0x29ff('0x22')](respondWithResult(_0x59234d,null))[_0x29ff('0x3f')](handleError(_0x59234d,null));};exports['getDescriptions']=function(_0x2ff048,_0x551c08,_0x525f6b){var _0x2f0913={};var _0x275066={};var _0xe16250;var _0x5c58f2;return db[_0x29ff('0x27')][_0x29ff('0x4b')]({'where':{'id':_0x2ff048[_0x29ff('0x41')]['id']}})[_0x29ff('0x22')](handleEntityNotFound(_0x551c08,null))[_0x29ff('0x22')](function(_0x10befb){if(_0x10befb){_0xe16250=_0x10befb;_0x275066['model']=_[_0x29ff('0x2e')](db['ServicenowField'][_0x29ff('0x28')]);_0x275066[_0x29ff('0x2d')]=_[_0x29ff('0x2e')](_0x2ff048[_0x29ff('0x2d')]);_0x275066[_0x29ff('0x37')]=_['intersection'](_0x275066['model'],_0x275066[_0x29ff('0x2d')]);_0x2f0913[_0x29ff('0x31')]=_[_0x29ff('0x2f')](_0x275066[_0x29ff('0x30')],qs[_0x29ff('0x32')](_0x2ff048[_0x29ff('0x2d')][_0x29ff('0x32')]));_0x2f0913[_0x29ff('0x31')]=_0x2f0913[_0x29ff('0x31')]['length']?_0x2f0913[_0x29ff('0x31')]:_0x275066[_0x29ff('0x30')];_0x2f0913[_0x29ff('0x35')]=qs[_0x29ff('0x36')](_0x2ff048['query']['sort']);_0x2f0913['where']=qs[_0x29ff('0x37')](_[_0x29ff('0x38')](_0x2ff048[_0x29ff('0x2d')],_0x275066[_0x29ff('0x37')]));if(_0x2ff048[_0x29ff('0x2d')][_0x29ff('0x39')]){_0x2f0913[_0x29ff('0x3a')]=_[_0x29ff('0x3b')](_0x2f0913[_0x29ff('0x3a')],{'$or':_[_0x29ff('0x26')](_0x2f0913[_0x29ff('0x31')],function(_0x57972c){var _0x4f7b8f={};_0x4f7b8f[_0x57972c]={'$like':'%'+_0x2ff048[_0x29ff('0x2d')][_0x29ff('0x39')]+'%'};return _0x4f7b8f;})});}_0x2f0913=_[_0x29ff('0x3b')]({},_0x2f0913,_0x2ff048[_0x29ff('0x3c')]);return _0xe16250['getDescriptions'](_0x2f0913);}})['then'](function(_0x44c648){if(_0x44c648){_0x5c58f2=_0x44c648[_0x29ff('0x33')];if(!_0x2ff048[_0x29ff('0x2d')]['hasOwnProperty'](_0x29ff('0x4a'))){_0x2f0913[_0x29ff('0x1b')]=qs[_0x29ff('0x1b')](_0x2ff048[_0x29ff('0x2d')][_0x29ff('0x1b')]);_0x2f0913[_0x29ff('0x1d')]=qs[_0x29ff('0x1d')](_0x2ff048['query'][_0x29ff('0x1d')]);}return _0xe16250[_0x29ff('0x4c')](_0x2f0913);}})[_0x29ff('0x22')](function(_0x4b076b){if(_0x4b076b){return _0x4b076b?{'count':_0x5c58f2,'rows':_0x4b076b}:null;}})['then'](respondWithResult(_0x551c08,null))[_0x29ff('0x3f')](handleError(_0x551c08,null));};
\ No newline at end of file
+var _0xd30a=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','Content-Range','apply','reject','then','end','error','stack','name','map','ServicenowConfiguration','type','key','model','query','keys','fields','attributes','length','hasOwnProperty','nolimit','order','where','filters','filter','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','merge','options','create','update','body','find','getFields','findOne','ServicenowField','rawAttributes','sort','pick','getSubjects','getDescriptions','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis'];(function(_0x31e1c1,_0x5b01f8){var _0x555aa9=function(_0x20fbd1){while(--_0x20fbd1){_0x31e1c1['push'](_0x31e1c1['shift']());}};_0x555aa9(++_0x5b01f8);}(_0xd30a,0x1bd));var _0xad30=function(_0x1e7b16,_0x4607a1){_0x1e7b16=_0x1e7b16-0x0;var _0x37fadc=_0xd30a[_0x1e7b16];return _0x37fadc;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xad30('0x0'));var jsonpatch=require(_0xad30('0x1'));var rp=require(_0xad30('0x2'));var moment=require(_0xad30('0x3'));var BPromise=require(_0xad30('0x4'));var Mustache=require(_0xad30('0x5'));var util=require(_0xad30('0x6'));var path=require(_0xad30('0x7'));var sox=require(_0xad30('0x8'));var csv=require(_0xad30('0x9'));var ejs=require(_0xad30('0xa'));var fs=require('fs');var fs_extra=require(_0xad30('0xb'));var _=require(_0xad30('0xc'));var squel=require(_0xad30('0xd'));var crypto=require('crypto');var jsforce=require(_0xad30('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xad30('0x9'));var querystring=require('querystring');var Papa=require(_0xad30('0xf'));var Redis=require(_0xad30('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xad30('0x11'));var as=require(_0xad30('0x12'));var hardwareService=require(_0xad30('0x13'));var logger=require('../../config/logger')(_0xad30('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xad30('0x15'));var db=require(_0xad30('0x16'))['db'];function respondWithStatusCode(_0x36169e,_0x1972d1){_0x1972d1=_0x1972d1||0xcc;return function(_0x2c569c){if(_0x2c569c){return _0x36169e[_0xad30('0x17')](_0x1972d1);}return _0x36169e[_0xad30('0x18')](_0x1972d1)['end']();};}function respondWithResult(_0x958676,_0xd07097){_0xd07097=_0xd07097||0xc8;return function(_0x4dc75a){if(_0x4dc75a){return _0x958676[_0xad30('0x18')](_0xd07097)[_0xad30('0x19')](_0x4dc75a);}};}function respondWithFilteredResult(_0x521a5b,_0x59d7de){return function(_0x3d4baf){if(_0x3d4baf){var _0x187593=typeof _0x59d7de[_0xad30('0x1a')]==='undefined'&&typeof _0x59d7de[_0xad30('0x1b')]===_0xad30('0x1c');var _0x58d9f2=_0x3d4baf['count'];var _0x35b1bb=_0x187593?0x0:_0x59d7de[_0xad30('0x1a')];var _0x2ee82c=_0x187593?_0x3d4baf[_0xad30('0x1d')]:_0x59d7de['offset']+_0x59d7de['limit'];var _0x1f378b;if(_0x2ee82c>=_0x58d9f2){_0x2ee82c=_0x58d9f2;_0x1f378b=0xc8;}else{_0x1f378b=0xce;}_0x521a5b[_0xad30('0x18')](_0x1f378b);return _0x521a5b['set'](_0xad30('0x1e'),_0x35b1bb+'-'+_0x2ee82c+'/'+_0x58d9f2)[_0xad30('0x19')](_0x3d4baf);}return null;};}function patchUpdates(_0x54321d){return function(_0xd89bd3){try{jsonpatch[_0xad30('0x1f')](_0xd89bd3,_0x54321d,!![]);}catch(_0x2cc60e){return BPromise[_0xad30('0x20')](_0x2cc60e);}return _0xd89bd3['save']();};}function saveUpdates(_0x270b5,_0x54a0e7){return function(_0x599983){if(_0x599983){return _0x599983['update'](_0x270b5)[_0xad30('0x21')](function(_0x15521c){return _0x15521c;});}return null;};}function removeEntity(_0x5adb56,_0x16086d){return function(_0x4fde27){if(_0x4fde27){return _0x4fde27['destroy']()['then'](function(){_0x5adb56[_0xad30('0x18')](0xcc)[_0xad30('0x22')]();});}};}function handleEntityNotFound(_0x4fb909,_0x566908){return function(_0x2ef697){if(!_0x2ef697){_0x4fb909[_0xad30('0x17')](0x194);}return _0x2ef697;};}function handleError(_0x26e0bd,_0x1eca7a){_0x1eca7a=_0x1eca7a||0x1f4;return function(_0x251800){logger[_0xad30('0x23')](_0x251800[_0xad30('0x24')]);if(_0x251800[_0xad30('0x25')]){delete _0x251800[_0xad30('0x25')];}_0x26e0bd['status'](_0x1eca7a)['send'](_0x251800);};}exports['index']=function(_0x14fb6e,_0x1d4581){var _0x29c67b={},_0x3b6ecf={},_0x353714={'count':0x0,'rows':[]};var _0x372f09=_[_0xad30('0x26')](db[_0xad30('0x27')]['rawAttributes'],function(_0x22f2ba){return{'name':_0x22f2ba['fieldName'],'type':_0x22f2ba[_0xad30('0x28')][_0xad30('0x29')]};});_0x3b6ecf[_0xad30('0x2a')]=_[_0xad30('0x26')](_0x372f09,_0xad30('0x25'));_0x3b6ecf[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x14fb6e[_0xad30('0x2b')]);_0x3b6ecf['filters']=_['intersection'](_0x3b6ecf[_0xad30('0x2a')],_0x3b6ecf[_0xad30('0x2b')]);_0x29c67b['attributes']=_['intersection'](_0x3b6ecf[_0xad30('0x2a')],qs[_0xad30('0x2d')](_0x14fb6e[_0xad30('0x2b')][_0xad30('0x2d')]));_0x29c67b[_0xad30('0x2e')]=_0x29c67b['attributes'][_0xad30('0x2f')]?_0x29c67b[_0xad30('0x2e')]:_0x3b6ecf[_0xad30('0x2a')];if(!_0x14fb6e[_0xad30('0x2b')][_0xad30('0x30')](_0xad30('0x31'))){_0x29c67b[_0xad30('0x1b')]=qs[_0xad30('0x1b')](_0x14fb6e['query'][_0xad30('0x1b')]);_0x29c67b[_0xad30('0x1a')]=qs['offset'](_0x14fb6e[_0xad30('0x2b')]['offset']);}_0x29c67b[_0xad30('0x32')]=qs['sort'](_0x14fb6e[_0xad30('0x2b')]['sort']);_0x29c67b[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x14fb6e[_0xad30('0x2b')],_0x3b6ecf['filters']),_0x372f09);if(_0x14fb6e['query'][_0xad30('0x35')]){_0x29c67b[_0xad30('0x33')]=_['merge'](_0x29c67b[_0xad30('0x33')],{'$or':_[_0xad30('0x26')](_0x372f09,function(_0x235217){if(_0x235217[_0xad30('0x28')]!==_0xad30('0x36')){var _0xed77bd={};_0xed77bd[_0x235217['name']]={'$like':'%'+_0x14fb6e[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0xed77bd;}})});}_0x29c67b=_['merge']({},_0x29c67b,_0x14fb6e['options']);var _0x29ef83={'where':_0x29c67b['where']};return db[_0xad30('0x27')][_0xad30('0x1d')](_0x29ef83)['then'](function(_0xed3786){_0x353714[_0xad30('0x1d')]=_0xed3786;if(_0x14fb6e[_0xad30('0x2b')][_0xad30('0x37')]){_0x29c67b[_0xad30('0x38')]=[{'all':!![]}];}return db[_0xad30('0x27')][_0xad30('0x39')](_0x29c67b);})[_0xad30('0x21')](function(_0x5b6f8c){_0x353714[_0xad30('0x3a')]=_0x5b6f8c;return _0x353714;})[_0xad30('0x21')](respondWithFilteredResult(_0x1d4581,_0x29c67b))[_0xad30('0x3b')](handleError(_0x1d4581,null));};exports[_0xad30('0x3c')]=function(_0x328e5b,_0x3f6d8e){var _0x2c3f84={'raw':![],'where':{'id':_0x328e5b[_0xad30('0x3d')]['id']}},_0x385507={};_0x385507[_0xad30('0x2a')]=_['keys'](db['ServicenowConfiguration']['rawAttributes']);_0x385507['query']=_[_0xad30('0x2c')](_0x328e5b[_0xad30('0x2b')]);_0x385507['filters']=_['intersection'](_0x385507[_0xad30('0x2a')],_0x385507['query']);_0x2c3f84[_0xad30('0x2e')]=_[_0xad30('0x3e')](_0x385507[_0xad30('0x2a')],qs['fields'](_0x328e5b[_0xad30('0x2b')]['fields']));_0x2c3f84[_0xad30('0x2e')]=_0x2c3f84[_0xad30('0x2e')][_0xad30('0x2f')]?_0x2c3f84[_0xad30('0x2e')]:_0x385507[_0xad30('0x2a')];if(_0x328e5b[_0xad30('0x2b')][_0xad30('0x37')]){_0x2c3f84[_0xad30('0x38')]=[{'all':!![]}];}_0x2c3f84=_[_0xad30('0x3f')]({},_0x2c3f84,_0x328e5b[_0xad30('0x40')]);return db['ServicenowConfiguration']['find'](_0x2c3f84)[_0xad30('0x21')](handleEntityNotFound(_0x3f6d8e,null))[_0xad30('0x21')](respondWithResult(_0x3f6d8e,null))[_0xad30('0x3b')](handleError(_0x3f6d8e,null));};exports[_0xad30('0x41')]=function(_0x34f621,_0x2b7550){return db[_0xad30('0x27')][_0xad30('0x41')](_0x34f621['body'],{})[_0xad30('0x21')](respondWithResult(_0x2b7550,0xc9))[_0xad30('0x3b')](handleError(_0x2b7550,null));};exports[_0xad30('0x42')]=function(_0x310fa5,_0x2d221c){if(_0x310fa5[_0xad30('0x43')]['id']){delete _0x310fa5[_0xad30('0x43')]['id'];}return db[_0xad30('0x27')]['find']({'where':{'id':_0x310fa5[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x2d221c,null))[_0xad30('0x21')](saveUpdates(_0x310fa5[_0xad30('0x43')],null))[_0xad30('0x21')](respondWithResult(_0x2d221c,null))[_0xad30('0x3b')](handleError(_0x2d221c,null));};exports['destroy']=function(_0x2d95e4,_0x375dd6){return db['ServicenowConfiguration'][_0xad30('0x44')]({'where':{'id':_0x2d95e4[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x375dd6,null))['then'](removeEntity(_0x375dd6,null))[_0xad30('0x3b')](handleError(_0x375dd6,null));};exports[_0xad30('0x45')]=function(_0x4ef002,_0x5a5099,_0x4e65b9){var _0x558112={};var _0x1adedd={};var _0x4b0bd3;var _0x4d5d5;return db[_0xad30('0x27')][_0xad30('0x46')]({'where':{'id':_0x4ef002['params']['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x5a5099,null))[_0xad30('0x21')](function(_0x59e8eb){if(_0x59e8eb){_0x4b0bd3=_0x59e8eb;_0x1adedd['model']=_[_0xad30('0x2c')](db[_0xad30('0x47')][_0xad30('0x48')]);_0x1adedd[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x4ef002['query']);_0x1adedd[_0xad30('0x34')]=_[_0xad30('0x3e')](_0x1adedd[_0xad30('0x2a')],_0x1adedd[_0xad30('0x2b')]);_0x558112['attributes']=_['intersection'](_0x1adedd[_0xad30('0x2a')],qs[_0xad30('0x2d')](_0x4ef002[_0xad30('0x2b')][_0xad30('0x2d')]));_0x558112[_0xad30('0x2e')]=_0x558112[_0xad30('0x2e')][_0xad30('0x2f')]?_0x558112[_0xad30('0x2e')]:_0x1adedd[_0xad30('0x2a')];_0x558112[_0xad30('0x32')]=qs[_0xad30('0x49')](_0x4ef002['query']['sort']);_0x558112['where']=qs[_0xad30('0x34')](_[_0xad30('0x4a')](_0x4ef002[_0xad30('0x2b')],_0x1adedd['filters']));if(_0x4ef002['query'][_0xad30('0x35')]){_0x558112['where']=_[_0xad30('0x3f')](_0x558112[_0xad30('0x33')],{'$or':_['map'](_0x558112['attributes'],function(_0x47e17a){var _0x31fb9d={};_0x31fb9d[_0x47e17a]={'$like':'%'+_0x4ef002[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0x31fb9d;})});}_0x558112=_[_0xad30('0x3f')]({},_0x558112,_0x4ef002[_0xad30('0x40')]);return _0x4b0bd3[_0xad30('0x45')](_0x558112);}})[_0xad30('0x21')](function(_0x3c5d63){if(_0x3c5d63){_0x4d5d5=_0x3c5d63[_0xad30('0x2f')];if(!_0x4ef002[_0xad30('0x2b')][_0xad30('0x30')]('nolimit')){_0x558112[_0xad30('0x1b')]=qs['limit'](_0x4ef002[_0xad30('0x2b')]['limit']);_0x558112[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x4ef002[_0xad30('0x2b')][_0xad30('0x1a')]);}return _0x4b0bd3['getFields'](_0x558112);}})[_0xad30('0x21')](function(_0x5b197f){if(_0x5b197f){return _0x5b197f?{'count':_0x4d5d5,'rows':_0x5b197f}:null;}})[_0xad30('0x21')](respondWithResult(_0x5a5099,null))[_0xad30('0x3b')](handleError(_0x5a5099,null));};exports[_0xad30('0x4b')]=function(_0x3386b4,_0x3b830b,_0x14ffd1){var _0x29ddcc={};var _0x5aafec={};var _0x20361c;var _0xc3d251;return db['ServicenowConfiguration'][_0xad30('0x46')]({'where':{'id':_0x3386b4['params']['id']}})['then'](handleEntityNotFound(_0x3b830b,null))['then'](function(_0x33c9b9){if(_0x33c9b9){_0x20361c=_0x33c9b9;_0x5aafec[_0xad30('0x2a')]=_[_0xad30('0x2c')](db[_0xad30('0x47')][_0xad30('0x48')]);_0x5aafec[_0xad30('0x2b')]=_['keys'](_0x3386b4[_0xad30('0x2b')]);_0x5aafec[_0xad30('0x34')]=_['intersection'](_0x5aafec[_0xad30('0x2a')],_0x5aafec[_0xad30('0x2b')]);_0x29ddcc['attributes']=_['intersection'](_0x5aafec['model'],qs[_0xad30('0x2d')](_0x3386b4[_0xad30('0x2b')]['fields']));_0x29ddcc[_0xad30('0x2e')]=_0x29ddcc[_0xad30('0x2e')][_0xad30('0x2f')]?_0x29ddcc[_0xad30('0x2e')]:_0x5aafec['model'];_0x29ddcc['order']=qs[_0xad30('0x49')](_0x3386b4['query'][_0xad30('0x49')]);_0x29ddcc[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x3386b4[_0xad30('0x2b')],_0x5aafec['filters']));if(_0x3386b4[_0xad30('0x2b')][_0xad30('0x35')]){_0x29ddcc['where']=_[_0xad30('0x3f')](_0x29ddcc[_0xad30('0x33')],{'$or':_[_0xad30('0x26')](_0x29ddcc[_0xad30('0x2e')],function(_0x5caa25){var _0x384a6b={};_0x384a6b[_0x5caa25]={'$like':'%'+_0x3386b4[_0xad30('0x2b')]['filter']+'%'};return _0x384a6b;})});}_0x29ddcc=_['merge']({},_0x29ddcc,_0x3386b4[_0xad30('0x40')]);return _0x20361c[_0xad30('0x4b')](_0x29ddcc);}})[_0xad30('0x21')](function(_0x191dd6){if(_0x191dd6){_0xc3d251=_0x191dd6[_0xad30('0x2f')];if(!_0x3386b4['query'][_0xad30('0x30')](_0xad30('0x31'))){_0x29ddcc[_0xad30('0x1b')]=qs[_0xad30('0x1b')](_0x3386b4[_0xad30('0x2b')][_0xad30('0x1b')]);_0x29ddcc[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x3386b4[_0xad30('0x2b')]['offset']);}return _0x20361c[_0xad30('0x4b')](_0x29ddcc);}})[_0xad30('0x21')](function(_0x523875){if(_0x523875){return _0x523875?{'count':_0xc3d251,'rows':_0x523875}:null;}})[_0xad30('0x21')](respondWithResult(_0x3b830b,null))[_0xad30('0x3b')](handleError(_0x3b830b,null));};exports[_0xad30('0x4c')]=function(_0x458692,_0x4eccf4,_0x3b9493){var _0x2a05af={};var _0x41599d={};var _0x5d5f4f;var _0x33347b;return db[_0xad30('0x27')][_0xad30('0x46')]({'where':{'id':_0x458692[_0xad30('0x3d')]['id']}})[_0xad30('0x21')](handleEntityNotFound(_0x4eccf4,null))[_0xad30('0x21')](function(_0x2fb8b3){if(_0x2fb8b3){_0x5d5f4f=_0x2fb8b3;_0x41599d[_0xad30('0x2a')]=_['keys'](db[_0xad30('0x47')][_0xad30('0x48')]);_0x41599d[_0xad30('0x2b')]=_[_0xad30('0x2c')](_0x458692[_0xad30('0x2b')]);_0x41599d['filters']=_[_0xad30('0x3e')](_0x41599d['model'],_0x41599d['query']);_0x2a05af['attributes']=_['intersection'](_0x41599d['model'],qs[_0xad30('0x2d')](_0x458692[_0xad30('0x2b')]['fields']));_0x2a05af[_0xad30('0x2e')]=_0x2a05af[_0xad30('0x2e')][_0xad30('0x2f')]?_0x2a05af[_0xad30('0x2e')]:_0x41599d['model'];_0x2a05af[_0xad30('0x32')]=qs[_0xad30('0x49')](_0x458692[_0xad30('0x2b')]['sort']);_0x2a05af[_0xad30('0x33')]=qs[_0xad30('0x34')](_['pick'](_0x458692[_0xad30('0x2b')],_0x41599d[_0xad30('0x34')]));if(_0x458692[_0xad30('0x2b')][_0xad30('0x35')]){_0x2a05af[_0xad30('0x33')]=_[_0xad30('0x3f')](_0x2a05af['where'],{'$or':_[_0xad30('0x26')](_0x2a05af[_0xad30('0x2e')],function(_0x559c2d){var _0x165f1c={};_0x165f1c[_0x559c2d]={'$like':'%'+_0x458692[_0xad30('0x2b')][_0xad30('0x35')]+'%'};return _0x165f1c;})});}_0x2a05af=_['merge']({},_0x2a05af,_0x458692[_0xad30('0x40')]);return _0x5d5f4f['getDescriptions'](_0x2a05af);}})[_0xad30('0x21')](function(_0x30f843){if(_0x30f843){_0x33347b=_0x30f843['length'];if(!_0x458692['query']['hasOwnProperty'](_0xad30('0x31'))){_0x2a05af[_0xad30('0x1b')]=qs['limit'](_0x458692['query']['limit']);_0x2a05af[_0xad30('0x1a')]=qs[_0xad30('0x1a')](_0x458692[_0xad30('0x2b')][_0xad30('0x1a')]);}return _0x5d5f4f['getDescriptions'](_0x2a05af);}})[_0xad30('0x21')](function(_0x13c520){if(_0x13c520){return _0x13c520?{'count':_0x33347b,'rows':_0x13c520}:null;}})['then'](respondWithResult(_0x4eccf4,null))[_0xad30('0x3b')](handleError(_0x4eccf4,null));};
\ No newline at end of file
index ed1dde5..271465d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f56=['int_servicenow_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x14dfe9,_0x226b44){var _0x41cbb6=function(_0x157d1c){while(--_0x157d1c){_0x14dfe9['push'](_0x14dfe9['shift']());}};_0x41cbb6(++_0x226b44);}(_0x2f56,0xb5));var _0x62f5=function(_0x21d16e,_0x4dad0c){_0x21d16e=_0x21d16e-0x0;var _0x59b9af=_0x2f56[_0x21d16e];return _0x59b9af;};'use strict';var _=require(_0x62f5('0x0'));var util=require(_0x62f5('0x1'));var logger=require(_0x62f5('0x2'))(_0x62f5('0x3'));var moment=require('moment');var BPromise=require(_0x62f5('0x4'));var rp=require(_0x62f5('0x5'));var fs=require('fs');var path=require(_0x62f5('0x6'));var rimraf=require(_0x62f5('0x7'));var config=require(_0x62f5('0x8'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x62f5('0x9')]=function(_0x3c6ce8,_0x15fc7e){return _0x3c6ce8[_0x62f5('0xa')]('ServicenowConfiguration',attributes,{'tableName':_0x62f5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1bd1=['int_servicenow_configurations','lodash','util','../../config/logger','moment','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration'];(function(_0xb0c5ad,_0x460e60){var _0x23ae7a=function(_0x3e8e65){while(--_0x3e8e65){_0xb0c5ad['push'](_0xb0c5ad['shift']());}};_0x23ae7a(++_0x460e60);}(_0x1bd1,0x123));var _0x11bd=function(_0x245217,_0x2083a1){_0x245217=_0x245217-0x0;var _0x3e53fe=_0x1bd1[_0x245217];return _0x3e53fe;};'use strict';var _=require(_0x11bd('0x0'));var util=require(_0x11bd('0x1'));var logger=require(_0x11bd('0x2'))('api');var moment=require(_0x11bd('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x11bd('0x4'));var attributes=require(_0x11bd('0x5'));module[_0x11bd('0x6')]=function(_0x612ff3,_0x57c032){return _0x612ff3[_0x11bd('0x7')](_0x11bd('0x8'),attributes,{'tableName':_0x11bd('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d2bcbf4..b641001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc50d=['ServicenowConfiguration,\x20%s,\x20%s,\x20%s','error','message','catch','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','ServicenowConfiguration,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x53c256,_0x382a24){var _0x25feb6=function(_0x2652fd){while(--_0x2652fd){_0x53c256['push'](_0x53c256['shift']());}};_0x25feb6(++_0x382a24);}(_0xc50d,0x94));var _0xdc50=function(_0x2ef829,_0x3433d4){_0x2ef829=_0x2ef829-0x0;var _0x2e4c02=_0xc50d[_0x2ef829];return _0x2e4c02;};'use strict';var _=require('lodash');var util=require(_0xdc50('0x0'));var moment=require(_0xdc50('0x1'));var BPromise=require('bluebird');var rs=require(_0xdc50('0x2'));var fs=require('fs');var Redis=require(_0xdc50('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xdc50('0x4'));var logger=require(_0xdc50('0x5'))('rpc');var config=require(_0xdc50('0x6'));var jayson=require(_0xdc50('0x7'));var client=jayson['client'][_0xdc50('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5c3b69,_0x1af6ad,_0x8eeeab){return new BPromise(function(_0x26c59a,_0x1d69f5){return client['request'](_0x5c3b69,_0x8eeeab)[_0xdc50('0x9')](function(_0x13bc44){logger[_0xdc50('0xa')](_0xdc50('0xb'),_0x1af6ad,_0xdc50('0xc'));logger[_0xdc50('0xd')](_0xdc50('0xe'),_0x1af6ad,'request\x20sent',JSON['stringify'](_0x13bc44));if(_0x13bc44[_0xdc50('0xf')]){if(_0x13bc44[_0xdc50('0xf')]['code']===0x1f4){logger[_0xdc50('0xf')]('ServicenowConfiguration,\x20%s,\x20%s',_0x1af6ad,_0x13bc44[_0xdc50('0xf')]['message']);return _0x1d69f5(_0x13bc44[_0xdc50('0xf')][_0xdc50('0x10')]);}logger['error'](_0xdc50('0xb'),_0x1af6ad,_0x13bc44[_0xdc50('0xf')][_0xdc50('0x10')]);return _0x26c59a(_0x13bc44[_0xdc50('0xf')][_0xdc50('0x10')]);}else{logger[_0xdc50('0xa')]('ServicenowConfiguration,\x20%s,\x20%s',_0x1af6ad,_0xdc50('0xc'));_0x26c59a(_0x13bc44['result'][_0xdc50('0x10')]);}})[_0xdc50('0x11')](function(_0x328b9d){logger['error'](_0xdc50('0xb'),_0x1af6ad,_0x328b9d);_0x1d69f5(_0x328b9d);});});}
\ No newline at end of file
+var _0x621f=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','ServicenowConfiguration,\x20%s,\x20%s','debug','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird'];(function(_0x47e18d,_0x4f7d82){var _0x27f907=function(_0xb53e5d){while(--_0xb53e5d){_0x47e18d['push'](_0x47e18d['shift']());}};_0x27f907(++_0x4f7d82);}(_0x621f,0x128));var _0xf621=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x621f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf621('0x0'));var util=require(_0xf621('0x1'));var moment=require('moment');var BPromise=require(_0xf621('0x2'));var rs=require(_0xf621('0x3'));var fs=require('fs');var Redis=require(_0xf621('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf621('0x5'));var logger=require(_0xf621('0x6'))(_0xf621('0x7'));var config=require(_0xf621('0x8'));var jayson=require(_0xf621('0x9'));var client=jayson[_0xf621('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x34acae,_0x545f38,_0x38fe85){return new BPromise(function(_0x88e735,_0x13012c){return client['request'](_0x34acae,_0x38fe85)[_0xf621('0xb')](function(_0x3b7d1c){logger[_0xf621('0xc')](_0xf621('0xd'),_0x545f38,'request\x20sent');logger[_0xf621('0xe')](_0xf621('0xf'),_0x545f38,_0xf621('0x10'),JSON[_0xf621('0x11')](_0x3b7d1c));if(_0x3b7d1c['error']){if(_0x3b7d1c[_0xf621('0x12')][_0xf621('0x13')]===0x1f4){logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0x3b7d1c['error']['message']);return _0x13012c(_0x3b7d1c[_0xf621('0x12')][_0xf621('0x14')]);}logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0x3b7d1c[_0xf621('0x12')]['message']);return _0x88e735(_0x3b7d1c[_0xf621('0x12')]['message']);}else{logger[_0xf621('0xc')]('ServicenowConfiguration,\x20%s,\x20%s',_0x545f38,'request\x20sent');_0x88e735(_0x3b7d1c[_0xf621('0x15')][_0xf621('0x14')]);}})[_0xf621('0x16')](function(_0xd5f0ef){logger[_0xf621('0x12')](_0xf621('0xd'),_0x545f38,_0xd5f0ef);_0x13012c(_0xd5f0ef);});});}
\ No newline at end of file
index f4779c8..49c90ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe101=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show','post','isAuthenticated','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x241099,_0x2997a9){var _0x164e96=function(_0x2975e4){while(--_0x2975e4){_0x241099['push'](_0x241099['shift']());}};_0x164e96(++_0x2997a9);}(_0xe101,0xf1));var _0x1e10=function(_0x145ca9,_0x1b9505){_0x145ca9=_0x145ca9-0x0;var _0x130d47=_0xe101[_0x145ca9];return _0x130d47;};'use strict';var multer=require('multer');var util=require(_0x1e10('0x0'));var path=require(_0x1e10('0x1'));var timeout=require(_0x1e10('0x2'));var express=require(_0x1e10('0x3'));var router=express[_0x1e10('0x4')]();var fs_extra=require(_0x1e10('0x5'));var auth=require(_0x1e10('0x6'));var interaction=require(_0x1e10('0x7'));var config=require(_0x1e10('0x8'));var controller=require('./intServicenowField.controller');router[_0x1e10('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1e10('0x9')](_0x1e10('0xa'),auth['isAuthenticated'](),controller[_0x1e10('0xb')]);router[_0x1e10('0xc')]('/',auth[_0x1e10('0xd')](),controller['create']);router[_0x1e10('0xe')](_0x1e10('0xa'),auth[_0x1e10('0xd')](),controller[_0x1e10('0xf')]);router[_0x1e10('0x10')]('/:id',auth[_0x1e10('0xd')](),controller[_0x1e10('0x11')]);module[_0x1e10('0x12')]=router;
\ No newline at end of file
+var _0xf41c=['./intServicenowField.controller','get','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x5c3068,_0x22bd33){var _0x116971=function(_0x398c40){while(--_0x398c40){_0x5c3068['push'](_0x5c3068['shift']());}};_0x116971(++_0x22bd33);}(_0xf41c,0xae));var _0xcf41=function(_0x2d0721,_0x404500){_0x2d0721=_0x2d0721-0x0;var _0x1b8b98=_0xf41c[_0x2d0721];return _0x1b8b98;};'use strict';var multer=require('multer');var util=require(_0xcf41('0x0'));var path=require('path');var timeout=require(_0xcf41('0x1'));var express=require(_0xcf41('0x2'));var router=express[_0xcf41('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcf41('0x4'));var config=require(_0xcf41('0x5'));var controller=require(_0xcf41('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xcf41('0x7')](_0xcf41('0x8'),auth[_0xcf41('0x9')](),controller[_0xcf41('0xa')]);router[_0xcf41('0xb')]('/',auth['isAuthenticated'](),controller[_0xcf41('0xc')]);router[_0xcf41('0xd')](_0xcf41('0x8'),auth['isAuthenticated'](),controller[_0xcf41('0xe')]);router[_0xcf41('0xf')](_0xcf41('0x8'),auth[_0xcf41('0x9')](),controller[_0xcf41('0x10')]);module[_0xcf41('0x11')]=router;
\ No newline at end of file
index 4b9f61b..0661c10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b5=['BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','STRING'];(function(_0x3034ce,_0x1421b6){var _0x4bc0e3=function(_0x49a5ca){while(--_0x49a5ca){_0x3034ce['push'](_0x3034ce['shift']());}};_0x4bc0e3(++_0x1421b6);}(_0x55b5,0x1b1));var _0x555b=function(_0x4d8ee0,_0x10edb2){_0x4d8ee0=_0x4d8ee0-0x0;var _0x352fae=_0x55b5[_0x4d8ee0];return _0x352fae;};'use strict';var Sequelize=require('sequelize');module[_0x555b('0x0')]={'type':{'type':Sequelize[_0x555b('0x1')](_0x555b('0x2'),_0x555b('0x3'),_0x555b('0x4'),_0x555b('0x5'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x555b('0x6')]},'key':{'type':Sequelize[_0x555b('0x6')]},'keyType':{'type':Sequelize[_0x555b('0x1')]('string','variable','customVariable')},'keyContent':{'type':Sequelize[_0x555b('0x6')]},'idField':{'type':Sequelize[_0x555b('0x6')]},'nameField':{'type':Sequelize[_0x555b('0x6')]},'customField':{'type':Sequelize[_0x555b('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x555b('0x6')]}};
\ No newline at end of file
+var _0x7b19=['string','STRING','BOOLEAN','sequelize','ENUM'];(function(_0x437da2,_0x45053a){var _0x345cef=function(_0x137efd){while(--_0x137efd){_0x437da2['push'](_0x437da2['shift']());}};_0x345cef(++_0x45053a);}(_0x7b19,0xdf));var _0x97b1=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x7b19[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0x97b1('0x0'));module['exports']={'type':{'type':Sequelize[_0x97b1('0x1')](_0x97b1('0x2'),'variable','customVariable','keyValue','picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0x97b1('0x3')]},'key':{'type':Sequelize[_0x97b1('0x3')]},'keyType':{'type':Sequelize[_0x97b1('0x1')](_0x97b1('0x2'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x97b1('0x3')]},'idField':{'type':Sequelize[_0x97b1('0x3')]},'nameField':{'type':Sequelize[_0x97b1('0x3')]},'customField':{'type':Sequelize[_0x97b1('0x4')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x97b1('0x3')]}};
\ No newline at end of file
index 867bee1..a05c6a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ac9=['limit','count','offset','apply','reject','save','update','destroy','stack','name','send','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','map','VIRTUAL','options','ServicenowField','then','includeAll','include','findAll','rows','catch','create','body','find','params','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined'];(function(_0x8e8ca7,_0x5a5e07){var _0x561381=function(_0x2f4bda){while(--_0x2f4bda){_0x8e8ca7['push'](_0x8e8ca7['shift']());}};_0x561381(++_0x5a5e07);}(_0x3ac9,0x111));var _0x93ac=function(_0x1d046a,_0x30db41){_0x1d046a=_0x1d046a-0x0;var _0x2c0b0c=_0x3ac9[_0x1d046a];return _0x2c0b0c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x93ac('0x0'));var zipdir=require(_0x93ac('0x1'));var jsonpatch=require(_0x93ac('0x2'));var rp=require(_0x93ac('0x3'));var moment=require(_0x93ac('0x4'));var BPromise=require(_0x93ac('0x5'));var Mustache=require(_0x93ac('0x6'));var util=require(_0x93ac('0x7'));var path=require('path');var sox=require(_0x93ac('0x8'));var csv=require('to-csv');var ejs=require(_0x93ac('0x9'));var fs=require('fs');var fs_extra=require(_0x93ac('0xa'));var _=require(_0x93ac('0xb'));var squel=require(_0x93ac('0xc'));var crypto=require('crypto');var jsforce=require(_0x93ac('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x93ac('0xe'));var querystring=require('querystring');var Papa=require(_0x93ac('0xf'));var Redis=require('ioredis');var authService=require(_0x93ac('0x10'));var qs=require(_0x93ac('0x11'));var as=require(_0x93ac('0x12'));var hardwareService=require(_0x93ac('0x13'));var logger=require(_0x93ac('0x14'))(_0x93ac('0x15'));var utils=require(_0x93ac('0x16'));var config=require(_0x93ac('0x17'));var licenseUtil=require(_0x93ac('0x18'));var db=require(_0x93ac('0x19'))['db'];function respondWithStatusCode(_0x31b81f,_0xd0d36d){_0xd0d36d=_0xd0d36d||0xcc;return function(_0x213ad9){if(_0x213ad9){return _0x31b81f[_0x93ac('0x1a')](_0xd0d36d);}return _0x31b81f[_0x93ac('0x1b')](_0xd0d36d)[_0x93ac('0x1c')]();};}function respondWithResult(_0x3528e2,_0x3093a7){_0x3093a7=_0x3093a7||0xc8;return function(_0x5e3afc){if(_0x5e3afc){return _0x3528e2['status'](_0x3093a7)[_0x93ac('0x1d')](_0x5e3afc);}};}function respondWithFilteredResult(_0x3691a1,_0x524fc9){return function(_0x57c92f){if(_0x57c92f){var _0x3bba02=typeof _0x524fc9['offset']===_0x93ac('0x1e')&&typeof _0x524fc9[_0x93ac('0x1f')]===_0x93ac('0x1e');var _0x47771c=_0x57c92f[_0x93ac('0x20')];var _0x38028e=_0x3bba02?0x0:_0x524fc9[_0x93ac('0x21')];var _0xce7ade=_0x3bba02?_0x57c92f[_0x93ac('0x20')]:_0x524fc9[_0x93ac('0x21')]+_0x524fc9['limit'];var _0x22c14c;if(_0xce7ade>=_0x47771c){_0xce7ade=_0x47771c;_0x22c14c=0xc8;}else{_0x22c14c=0xce;}_0x3691a1[_0x93ac('0x1b')](_0x22c14c);return _0x3691a1['set']('Content-Range',_0x38028e+'-'+_0xce7ade+'/'+_0x47771c)[_0x93ac('0x1d')](_0x57c92f);}return null;};}function patchUpdates(_0x5ffcea){return function(_0x2032ca){try{jsonpatch[_0x93ac('0x22')](_0x2032ca,_0x5ffcea,!![]);}catch(_0x161875){return BPromise[_0x93ac('0x23')](_0x161875);}return _0x2032ca[_0x93ac('0x24')]();};}function saveUpdates(_0x5471c6,_0x365c95){return function(_0x46c414){if(_0x46c414){return _0x46c414[_0x93ac('0x25')](_0x5471c6)['then'](function(_0x13f7f0){return _0x13f7f0;});}return null;};}function removeEntity(_0x10c5e0,_0x4453d7){return function(_0x4241e1){if(_0x4241e1){return _0x4241e1[_0x93ac('0x26')]()['then'](function(){_0x10c5e0[_0x93ac('0x1b')](0xcc)[_0x93ac('0x1c')]();});}};}function handleEntityNotFound(_0x69230d,_0x1103ce){return function(_0x234515){if(!_0x234515){_0x69230d['sendStatus'](0x194);}return _0x234515;};}function handleError(_0x2bb3b7,_0x578c78){_0x578c78=_0x578c78||0x1f4;return function(_0x226a2e){logger['error'](_0x226a2e[_0x93ac('0x27')]);if(_0x226a2e[_0x93ac('0x28')]){delete _0x226a2e[_0x93ac('0x28')];}_0x2bb3b7[_0x93ac('0x1b')](_0x578c78)[_0x93ac('0x29')](_0x226a2e);};}exports['index']=function(_0x4d9cb5,_0x4c2cdb){var _0x3d886e={},_0x191ede={},_0x2b4b91={'count':0x0,'rows':[]};var _0x1d20e1=_['map'](db['ServicenowField'][_0x93ac('0x2a')],function(_0x5ab402){return{'name':_0x5ab402[_0x93ac('0x2b')],'type':_0x5ab402[_0x93ac('0x2c')][_0x93ac('0x2d')]};});_0x191ede['model']=_['map'](_0x1d20e1,_0x93ac('0x28'));_0x191ede[_0x93ac('0x2e')]=_[_0x93ac('0x2f')](_0x4d9cb5[_0x93ac('0x2e')]);_0x191ede[_0x93ac('0x30')]=_['intersection'](_0x191ede['model'],_0x191ede[_0x93ac('0x2e')]);_0x3d886e['attributes']=_[_0x93ac('0x31')](_0x191ede[_0x93ac('0x32')],qs[_0x93ac('0x33')](_0x4d9cb5[_0x93ac('0x2e')][_0x93ac('0x33')]));_0x3d886e[_0x93ac('0x34')]=_0x3d886e[_0x93ac('0x34')][_0x93ac('0x35')]?_0x3d886e[_0x93ac('0x34')]:_0x191ede[_0x93ac('0x32')];if(!_0x4d9cb5[_0x93ac('0x2e')][_0x93ac('0x36')](_0x93ac('0x37'))){_0x3d886e[_0x93ac('0x1f')]=qs[_0x93ac('0x1f')](_0x4d9cb5['query']['limit']);_0x3d886e[_0x93ac('0x21')]=qs[_0x93ac('0x21')](_0x4d9cb5[_0x93ac('0x2e')][_0x93ac('0x21')]);}_0x3d886e[_0x93ac('0x38')]=qs[_0x93ac('0x39')](_0x4d9cb5[_0x93ac('0x2e')][_0x93ac('0x39')]);_0x3d886e[_0x93ac('0x3a')]=qs[_0x93ac('0x30')](_[_0x93ac('0x3b')](_0x4d9cb5[_0x93ac('0x2e')],_0x191ede['filters']),_0x1d20e1);if(_0x4d9cb5['query'][_0x93ac('0x3c')]){_0x3d886e[_0x93ac('0x3a')]=_[_0x93ac('0x3d')](_0x3d886e[_0x93ac('0x3a')],{'$or':_[_0x93ac('0x3e')](_0x1d20e1,function(_0x285460){if(_0x285460['type']!==_0x93ac('0x3f')){var _0x381a5b={};_0x381a5b[_0x285460['name']]={'$like':'%'+_0x4d9cb5[_0x93ac('0x2e')][_0x93ac('0x3c')]+'%'};return _0x381a5b;}})});}_0x3d886e=_[_0x93ac('0x3d')]({},_0x3d886e,_0x4d9cb5[_0x93ac('0x40')]);var _0x20b224={'where':_0x3d886e[_0x93ac('0x3a')]};return db[_0x93ac('0x41')][_0x93ac('0x20')](_0x20b224)[_0x93ac('0x42')](function(_0x4c9fd6){_0x2b4b91[_0x93ac('0x20')]=_0x4c9fd6;if(_0x4d9cb5['query'][_0x93ac('0x43')]){_0x3d886e[_0x93ac('0x44')]=[{'all':!![]}];}return db[_0x93ac('0x41')][_0x93ac('0x45')](_0x3d886e);})[_0x93ac('0x42')](function(_0x7f0223){_0x2b4b91[_0x93ac('0x46')]=_0x7f0223;return _0x2b4b91;})[_0x93ac('0x42')](respondWithFilteredResult(_0x4c2cdb,_0x3d886e))[_0x93ac('0x47')](handleError(_0x4c2cdb,null));};exports['show']=function(_0x41101c,_0x473312){var _0x745b27={'raw':!![],'where':{'id':_0x41101c['params']['id']}},_0x42c325={};_0x42c325[_0x93ac('0x32')]=_[_0x93ac('0x2f')](db['ServicenowField'][_0x93ac('0x2a')]);_0x42c325[_0x93ac('0x2e')]=_[_0x93ac('0x2f')](_0x41101c[_0x93ac('0x2e')]);_0x42c325['filters']=_[_0x93ac('0x31')](_0x42c325[_0x93ac('0x32')],_0x42c325['query']);_0x745b27[_0x93ac('0x34')]=_[_0x93ac('0x31')](_0x42c325[_0x93ac('0x32')],qs[_0x93ac('0x33')](_0x41101c['query'][_0x93ac('0x33')]));_0x745b27[_0x93ac('0x34')]=_0x745b27['attributes']['length']?_0x745b27['attributes']:_0x42c325[_0x93ac('0x32')];if(_0x41101c[_0x93ac('0x2e')][_0x93ac('0x43')]){_0x745b27['include']=[{'all':!![]}];}_0x745b27=_[_0x93ac('0x3d')]({},_0x745b27,_0x41101c[_0x93ac('0x40')]);return db[_0x93ac('0x41')]['find'](_0x745b27)[_0x93ac('0x42')](handleEntityNotFound(_0x473312,null))[_0x93ac('0x42')](respondWithResult(_0x473312,null))[_0x93ac('0x47')](handleError(_0x473312,null));};exports[_0x93ac('0x48')]=function(_0x3c57b7,_0x1f02cf){return db[_0x93ac('0x41')][_0x93ac('0x48')](_0x3c57b7['body'],{})[_0x93ac('0x42')](respondWithResult(_0x1f02cf,0xc9))['catch'](handleError(_0x1f02cf,null));};exports[_0x93ac('0x25')]=function(_0x2e6283,_0x304848){if(_0x2e6283[_0x93ac('0x49')]['id']){delete _0x2e6283[_0x93ac('0x49')]['id'];}return db[_0x93ac('0x41')][_0x93ac('0x4a')]({'where':{'id':_0x2e6283[_0x93ac('0x4b')]['id']}})[_0x93ac('0x42')](handleEntityNotFound(_0x304848,null))[_0x93ac('0x42')](saveUpdates(_0x2e6283[_0x93ac('0x49')],null))[_0x93ac('0x42')](respondWithResult(_0x304848,null))[_0x93ac('0x47')](handleError(_0x304848,null));};exports[_0x93ac('0x26')]=function(_0x38de2c,_0x2604c1){return db[_0x93ac('0x41')][_0x93ac('0x4a')]({'where':{'id':_0x38de2c[_0x93ac('0x4b')]['id']}})[_0x93ac('0x42')](handleEntityNotFound(_0x2604c1,null))[_0x93ac('0x42')](removeEntity(_0x2604c1,null))[_0x93ac('0x47')](handleError(_0x2604c1,null));};
\ No newline at end of file
+var _0xdefc=['apply','save','update','destroy','then','error','stack','name','send','index','map','ServicenowField','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','keys','include','find','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','end','status','json','offset','undefined','count','set','Content-Range'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdefc,0x78));var _0xcdef=function(_0x2ea9fd,_0x45d80b){_0x2ea9fd=_0x2ea9fd-0x0;var _0x27d18e=_0xdefc[_0x2ea9fd];return _0x27d18e;};'use strict';var emlformat=require(_0xcdef('0x0'));var rimraf=require(_0xcdef('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xcdef('0x2'));var rp=require(_0xcdef('0x3'));var moment=require(_0xcdef('0x4'));var BPromise=require(_0xcdef('0x5'));var Mustache=require(_0xcdef('0x6'));var util=require(_0xcdef('0x7'));var path=require(_0xcdef('0x8'));var sox=require(_0xcdef('0x9'));var csv=require(_0xcdef('0xa'));var ejs=require(_0xcdef('0xb'));var fs=require('fs');var fs_extra=require(_0xcdef('0xc'));var _=require(_0xcdef('0xd'));var squel=require(_0xcdef('0xe'));var crypto=require(_0xcdef('0xf'));var jsforce=require(_0xcdef('0x10'));var deskjs=require(_0xcdef('0x11'));var toCsv=require(_0xcdef('0xa'));var querystring=require(_0xcdef('0x12'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xcdef('0x13'));var qs=require(_0xcdef('0x14'));var as=require(_0xcdef('0x15'));var hardwareService=require(_0xcdef('0x16'));var logger=require(_0xcdef('0x17'))(_0xcdef('0x18'));var utils=require(_0xcdef('0x19'));var config=require(_0xcdef('0x1a'));var licenseUtil=require(_0xcdef('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a530e,_0xa7fde1){_0xa7fde1=_0xa7fde1||0xcc;return function(_0x113177){if(_0x113177){return _0x1a530e['sendStatus'](_0xa7fde1);}return _0x1a530e['status'](_0xa7fde1)[_0xcdef('0x1c')]();};}function respondWithResult(_0x50c50e,_0x28e7d4){_0x28e7d4=_0x28e7d4||0xc8;return function(_0x509bc6){if(_0x509bc6){return _0x50c50e[_0xcdef('0x1d')](_0x28e7d4)[_0xcdef('0x1e')](_0x509bc6);}};}function respondWithFilteredResult(_0x116498,_0x53c4aa){return function(_0x40c9b0){if(_0x40c9b0){var _0x23ecd5=typeof _0x53c4aa[_0xcdef('0x1f')]===_0xcdef('0x20')&&typeof _0x53c4aa['limit']===_0xcdef('0x20');var _0x59e2cc=_0x40c9b0[_0xcdef('0x21')];var _0x441fd9=_0x23ecd5?0x0:_0x53c4aa[_0xcdef('0x1f')];var _0x94aa06=_0x23ecd5?_0x40c9b0[_0xcdef('0x21')]:_0x53c4aa[_0xcdef('0x1f')]+_0x53c4aa['limit'];var _0xcb984a;if(_0x94aa06>=_0x59e2cc){_0x94aa06=_0x59e2cc;_0xcb984a=0xc8;}else{_0xcb984a=0xce;}_0x116498[_0xcdef('0x1d')](_0xcb984a);return _0x116498[_0xcdef('0x22')](_0xcdef('0x23'),_0x441fd9+'-'+_0x94aa06+'/'+_0x59e2cc)[_0xcdef('0x1e')](_0x40c9b0);}return null;};}function patchUpdates(_0x221282){return function(_0x55e810){try{jsonpatch[_0xcdef('0x24')](_0x55e810,_0x221282,!![]);}catch(_0x176cdb){return BPromise['reject'](_0x176cdb);}return _0x55e810[_0xcdef('0x25')]();};}function saveUpdates(_0x50aa96,_0x494600){return function(_0x1a77db){if(_0x1a77db){return _0x1a77db[_0xcdef('0x26')](_0x50aa96)['then'](function(_0x564433){return _0x564433;});}return null;};}function removeEntity(_0x3fda98,_0x263d58){return function(_0x3e05a7){if(_0x3e05a7){return _0x3e05a7[_0xcdef('0x27')]()[_0xcdef('0x28')](function(){_0x3fda98[_0xcdef('0x1d')](0xcc)[_0xcdef('0x1c')]();});}};}function handleEntityNotFound(_0x1f9db7,_0x389fad){return function(_0x4d9f06){if(!_0x4d9f06){_0x1f9db7['sendStatus'](0x194);}return _0x4d9f06;};}function handleError(_0x417e5f,_0x20eb7c){_0x20eb7c=_0x20eb7c||0x1f4;return function(_0x2ab1a5){logger[_0xcdef('0x29')](_0x2ab1a5[_0xcdef('0x2a')]);if(_0x2ab1a5[_0xcdef('0x2b')]){delete _0x2ab1a5[_0xcdef('0x2b')];}_0x417e5f['status'](_0x20eb7c)[_0xcdef('0x2c')](_0x2ab1a5);};}exports[_0xcdef('0x2d')]=function(_0x50374b,_0x18d195){var _0x3c0201={},_0x14470b={},_0x38af7b={'count':0x0,'rows':[]};var _0x111995=_[_0xcdef('0x2e')](db[_0xcdef('0x2f')][_0xcdef('0x30')],function(_0x388c98){return{'name':_0x388c98[_0xcdef('0x31')],'type':_0x388c98[_0xcdef('0x32')][_0xcdef('0x33')]};});_0x14470b[_0xcdef('0x34')]=_[_0xcdef('0x2e')](_0x111995,_0xcdef('0x2b'));_0x14470b[_0xcdef('0x35')]=_['keys'](_0x50374b['query']);_0x14470b[_0xcdef('0x36')]=_[_0xcdef('0x37')](_0x14470b[_0xcdef('0x34')],_0x14470b[_0xcdef('0x35')]);_0x3c0201['attributes']=_[_0xcdef('0x37')](_0x14470b[_0xcdef('0x34')],qs[_0xcdef('0x38')](_0x50374b[_0xcdef('0x35')]['fields']));_0x3c0201[_0xcdef('0x39')]=_0x3c0201[_0xcdef('0x39')][_0xcdef('0x3a')]?_0x3c0201[_0xcdef('0x39')]:_0x14470b['model'];if(!_0x50374b[_0xcdef('0x35')]['hasOwnProperty']('nolimit')){_0x3c0201['limit']=qs[_0xcdef('0x3b')](_0x50374b[_0xcdef('0x35')][_0xcdef('0x3b')]);_0x3c0201[_0xcdef('0x1f')]=qs['offset'](_0x50374b[_0xcdef('0x35')][_0xcdef('0x1f')]);}_0x3c0201[_0xcdef('0x3c')]=qs[_0xcdef('0x3d')](_0x50374b['query'][_0xcdef('0x3d')]);_0x3c0201[_0xcdef('0x3e')]=qs[_0xcdef('0x36')](_[_0xcdef('0x3f')](_0x50374b[_0xcdef('0x35')],_0x14470b[_0xcdef('0x36')]),_0x111995);if(_0x50374b[_0xcdef('0x35')][_0xcdef('0x40')]){_0x3c0201[_0xcdef('0x3e')]=_[_0xcdef('0x41')](_0x3c0201[_0xcdef('0x3e')],{'$or':_['map'](_0x111995,function(_0x1f0d96){if(_0x1f0d96[_0xcdef('0x32')]!==_0xcdef('0x42')){var _0x422fd0={};_0x422fd0[_0x1f0d96[_0xcdef('0x2b')]]={'$like':'%'+_0x50374b[_0xcdef('0x35')][_0xcdef('0x40')]+'%'};return _0x422fd0;}})});}_0x3c0201=_['merge']({},_0x3c0201,_0x50374b[_0xcdef('0x43')]);var _0x4abe17={'where':_0x3c0201[_0xcdef('0x3e')]};return db[_0xcdef('0x2f')][_0xcdef('0x21')](_0x4abe17)[_0xcdef('0x28')](function(_0x232e15){_0x38af7b[_0xcdef('0x21')]=_0x232e15;if(_0x50374b[_0xcdef('0x35')][_0xcdef('0x44')]){_0x3c0201['include']=[{'all':!![]}];}return db[_0xcdef('0x2f')][_0xcdef('0x45')](_0x3c0201);})[_0xcdef('0x28')](function(_0x34c86c){_0x38af7b[_0xcdef('0x46')]=_0x34c86c;return _0x38af7b;})[_0xcdef('0x28')](respondWithFilteredResult(_0x18d195,_0x3c0201))[_0xcdef('0x47')](handleError(_0x18d195,null));};exports[_0xcdef('0x48')]=function(_0x2fcb35,_0x2c7dec){var _0x2fd29d={'raw':!![],'where':{'id':_0x2fcb35[_0xcdef('0x49')]['id']}},_0x477d2e={};_0x477d2e[_0xcdef('0x34')]=_[_0xcdef('0x4a')](db['ServicenowField'][_0xcdef('0x30')]);_0x477d2e['query']=_['keys'](_0x2fcb35[_0xcdef('0x35')]);_0x477d2e[_0xcdef('0x36')]=_[_0xcdef('0x37')](_0x477d2e[_0xcdef('0x34')],_0x477d2e[_0xcdef('0x35')]);_0x2fd29d[_0xcdef('0x39')]=_[_0xcdef('0x37')](_0x477d2e[_0xcdef('0x34')],qs[_0xcdef('0x38')](_0x2fcb35[_0xcdef('0x35')][_0xcdef('0x38')]));_0x2fd29d[_0xcdef('0x39')]=_0x2fd29d[_0xcdef('0x39')][_0xcdef('0x3a')]?_0x2fd29d[_0xcdef('0x39')]:_0x477d2e[_0xcdef('0x34')];if(_0x2fcb35[_0xcdef('0x35')][_0xcdef('0x44')]){_0x2fd29d[_0xcdef('0x4b')]=[{'all':!![]}];}_0x2fd29d=_[_0xcdef('0x41')]({},_0x2fd29d,_0x2fcb35[_0xcdef('0x43')]);return db[_0xcdef('0x2f')][_0xcdef('0x4c')](_0x2fd29d)[_0xcdef('0x28')](handleEntityNotFound(_0x2c7dec,null))[_0xcdef('0x28')](respondWithResult(_0x2c7dec,null))[_0xcdef('0x47')](handleError(_0x2c7dec,null));};exports['create']=function(_0x57f538,_0x56abb2){return db[_0xcdef('0x2f')]['create'](_0x57f538['body'],{})[_0xcdef('0x28')](respondWithResult(_0x56abb2,0xc9))['catch'](handleError(_0x56abb2,null));};exports[_0xcdef('0x26')]=function(_0x1d78ce,_0x5a6c8e){if(_0x1d78ce[_0xcdef('0x4d')]['id']){delete _0x1d78ce['body']['id'];}return db['ServicenowField']['find']({'where':{'id':_0x1d78ce[_0xcdef('0x49')]['id']}})['then'](handleEntityNotFound(_0x5a6c8e,null))['then'](saveUpdates(_0x1d78ce[_0xcdef('0x4d')],null))[_0xcdef('0x28')](respondWithResult(_0x5a6c8e,null))[_0xcdef('0x47')](handleError(_0x5a6c8e,null));};exports[_0xcdef('0x27')]=function(_0x340b56,_0x2d0621){return db[_0xcdef('0x2f')]['find']({'where':{'id':_0x340b56[_0xcdef('0x49')]['id']}})[_0xcdef('0x28')](handleEntityNotFound(_0x2d0621,null))[_0xcdef('0x28')](removeEntity(_0x2d0621,null))['catch'](handleError(_0x2d0621,null));};
\ No newline at end of file
index 3ee61fc..5abb605 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4677=['define','servicenow_unique_index','idField','lodash','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./intServicenowField.attributes','exports'];(function(_0x120ab6,_0xc5d29){var _0x1faf95=function(_0x3211a8){while(--_0x3211a8){_0x120ab6['push'](_0x120ab6['shift']());}};_0x1faf95(++_0xc5d29);}(_0x4677,0x155));var _0x7467=function(_0x45dc4b,_0x39080d){_0x45dc4b=_0x45dc4b-0x0;var _0x4109ce=_0x4677[_0x45dc4b];return _0x4109ce;};'use strict';var _=require(_0x7467('0x0'));var util=require('util');var logger=require(_0x7467('0x1'))(_0x7467('0x2'));var moment=require(_0x7467('0x3'));var BPromise=require('bluebird');var rp=require(_0x7467('0x4'));var fs=require('fs');var path=require(_0x7467('0x5'));var rimraf=require(_0x7467('0x6'));var config=require(_0x7467('0x7'));var attributes=require(_0x7467('0x8'));module[_0x7467('0x9')]=function(_0x36fc81,_0x40a9c6){return _0x36fc81[_0x7467('0xa')]('ServicenowField',attributes,{'tableName':'int_servicenow_fields','paranoid':![],'indexes':[{'name':_0x7467('0xb'),'fields':[_0x7467('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d98=['request-promise','path','../../config/environment','./intServicenowField.attributes','exports','int_servicenow_fields','servicenow_unique_index','idField','util','../../config/logger','api','moment','bluebird'];(function(_0x24d22a,_0x4a578e){var _0xddc66c=function(_0x3a26e2){while(--_0x3a26e2){_0x24d22a['push'](_0x24d22a['shift']());}};_0xddc66c(++_0x4a578e);}(_0x6d98,0x1dc));var _0x86d9=function(_0x1c5532,_0x51f490){_0x1c5532=_0x1c5532-0x0;var _0x2adf79=_0x6d98[_0x1c5532];return _0x2adf79;};'use strict';var _=require('lodash');var util=require(_0x86d9('0x0'));var logger=require(_0x86d9('0x1'))(_0x86d9('0x2'));var moment=require(_0x86d9('0x3'));var BPromise=require(_0x86d9('0x4'));var rp=require(_0x86d9('0x5'));var fs=require('fs');var path=require(_0x86d9('0x6'));var rimraf=require('rimraf');var config=require(_0x86d9('0x7'));var attributes=require(_0x86d9('0x8'));module[_0x86d9('0x9')]=function(_0x15c148,_0x316e46){return _0x15c148['define']('ServicenowField',attributes,{'tableName':_0x86d9('0xa'),'paranoid':![],'indexes':[{'name':_0x86d9('0xb'),'fields':[_0x86d9('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 3c75c4e..83943e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['ServicenowField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x29e2f3,_0xbbf81a){var _0xf5aff4=function(_0x255a9a){while(--_0x255a9a){_0x29e2f3['push'](_0x29e2f3['shift']());}};_0xf5aff4(++_0xbbf81a);}(_0xf4eb,0xec));var _0xbf4e=function(_0x4b5aa7,_0x234a45){_0x4b5aa7=_0x4b5aa7-0x0;var _0x4b0ab2=_0xf4eb[_0x4b5aa7];return _0x4b0ab2;};'use strict';var _=require(_0xbf4e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf4e('0x1'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf4e('0x2'))(_0xbf4e('0x3'));var config=require(_0xbf4e('0x4'));var jayson=require(_0xbf4e('0x5'));var client=jayson[_0xbf4e('0x6')][_0xbf4e('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x15b99f,_0x540736,_0x449d55){return new BPromise(function(_0x5013c2,_0x5e23d4){return client[_0xbf4e('0x8')](_0x15b99f,_0x449d55)[_0xbf4e('0x9')](function(_0xcc4097){logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));logger[_0xbf4e('0xd')]('ServicenowField,\x20%s,\x20%s,\x20%s',_0x540736,'request\x20sent',JSON[_0xbf4e('0xe')](_0xcc4097));if(_0xcc4097['error']){if(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x10')]===0x1f4){logger['error'](_0xbf4e('0xb'),_0x540736,_0xcc4097['error']['message']);return _0x5e23d4(_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);}logger[_0xbf4e('0xf')](_0xbf4e('0xb'),_0x540736,_0xcc4097[_0xbf4e('0xf')][_0xbf4e('0x11')]);return _0x5013c2(_0xcc4097['error']['message']);}else{logger[_0xbf4e('0xa')](_0xbf4e('0xb'),_0x540736,_0xbf4e('0xc'));_0x5013c2(_0xcc4097['result'][_0xbf4e('0x11')]);}})[_0xbf4e('0x12')](function(_0x912fc0){logger[_0xbf4e('0xf')]('ServicenowField,\x20%s,\x20%s',_0x540736,_0x912fc0);_0x5e23d4(_0x912fc0);});});}
\ No newline at end of file
+var _0xac4a=['ServicenowField,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','then','info','debug','ServicenowField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0xac4a,0x13f));var _0xaac4=function(_0x35793d,_0x192258){_0x35793d=_0x35793d-0x0;var _0xdd6781=_0xac4a[_0x35793d];return _0xdd6781;};'use strict';var _=require(_0xaac4('0x0'));var util=require(_0xaac4('0x1'));var moment=require(_0xaac4('0x2'));var BPromise=require(_0xaac4('0x3'));var rs=require(_0xaac4('0x4'));var fs=require('fs');var Redis=require(_0xaac4('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xaac4('0x6'))(_0xaac4('0x7'));var config=require(_0xaac4('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xaac4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1cdfc5,_0x5870e8,_0x1e4283){return new BPromise(function(_0x27354c,_0x567295){return client['request'](_0x1cdfc5,_0x1e4283)[_0xaac4('0xa')](function(_0x50d114){logger[_0xaac4('0xb')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,'request\x20sent');logger[_0xaac4('0xc')](_0xaac4('0xd'),_0x5870e8,_0xaac4('0xe'),JSON[_0xaac4('0xf')](_0x50d114));if(_0x50d114[_0xaac4('0x10')]){if(_0x50d114['error']['code']===0x1f4){logger[_0xaac4('0x10')](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')]['message']);return _0x567295(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}logger['error'](_0xaac4('0x11'),_0x5870e8,_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);return _0x27354c(_0x50d114[_0xaac4('0x10')][_0xaac4('0x12')]);}else{logger[_0xaac4('0xb')](_0xaac4('0x11'),_0x5870e8,_0xaac4('0xe'));_0x27354c(_0x50d114[_0xaac4('0x13')][_0xaac4('0x12')]);}})[_0xaac4('0x14')](function(_0x1766c2){logger[_0xaac4('0x10')]('ServicenowField,\x20%s,\x20%s',_0x5870e8,_0x1766c2);_0x567295(_0x1766c2);});});}
\ No newline at end of file
index 6c695c5..7b34c77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x229d82,_0x10d753){var _0x382e5f=function(_0x474ee9){while(--_0x474ee9){_0x229d82['push'](_0x229d82['shift']());}};_0x382e5f(++_0x10d753);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0x9957=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path'];(function(_0x186f5f,_0xd1072f){var _0x44c212=function(_0x16bb07){while(--_0x16bb07){_0x186f5f['push'](_0x186f5f['shift']());}};_0x44c212(++_0xd1072f);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x11')]('/',auth['isAuthenticated'](),controller[_0x7995('0x12')]);router[_0x7995('0x11')]('/:id/configurations',auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x7995('0x17')]);module[_0x7995('0x18')]=router;
\ No newline at end of file
index 07f3786..43f6535 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0xa9bd44,_0x3526b8){var _0x29b7e5=function(_0x2ac703){while(--_0x2ac703){_0xa9bd44['push'](_0xa9bd44['shift']());}};_0x29b7e5(++_0x3526b8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x3852f7,_0x25a058){var _0x4aef18=function(_0x57fae5){while(--_0x57fae5){_0x3852f7['push'](_0x3852f7['shift']());}};_0x4aef18(++_0x25a058);}(_0xa9e0,0x123));var _0x0a9e=function(_0xbca1b1,_0x33f0ce){_0xbca1b1=_0xbca1b1-0x0;var _0x4e1686=_0xa9e0[_0xbca1b1];return _0x4e1686;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'name':{'type':Sequelize[_0x0a9e('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING'],'unique':_0x0a9e('0x3')},'password':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0a9e('0x2')],'unique':_0x0a9e('0x4')},'serverUrl':{'type':Sequelize[_0x0a9e('0x2')],'allowNull':![]}};
\ No newline at end of file
index 2175f42..2820b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e44=['values','module_fields','remove','includes','label','value','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','limit','sort','pick','filter','where','merge','options','SugarcrmAccount','includeAll','include','findAll','catch','show','params','keys','rawAttributes','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','order','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','getFields','assigned_user_id','created_by','duration_hours','parent_id','direction','username','password','remoteUri','slice','substring','POST','%s%s','login','JSON','stringify','xCALLY\x20Motion\x20Integration','Invalid\x20Login','Password\x20Expired','/service/v4_1/rest.php','get_module_fields','Calls'];(function(_0x88cd7b,_0x4c884c){var _0x56fcc8=function(_0x513b3d){while(--_0x513b3d){_0x88cd7b['push'](_0x88cd7b['shift']());}};_0x56fcc8(++_0x4c884c);}(_0x4e44,0xf4));var _0x44e4=function(_0x2f0fa9,_0x1f521b){_0x2f0fa9=_0x2f0fa9-0x0;var _0x144677=_0x4e44[_0x2f0fa9];return _0x144677;};'use strict';var emlformat=require(_0x44e4('0x0'));var rimraf=require(_0x44e4('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x44e4('0x2'));var rp=require('request-promise');var moment=require(_0x44e4('0x3'));var BPromise=require(_0x44e4('0x4'));var Mustache=require(_0x44e4('0x5'));var util=require(_0x44e4('0x6'));var path=require(_0x44e4('0x7'));var sox=require('sox');var csv=require(_0x44e4('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x44e4('0x9'));var squel=require(_0x44e4('0xa'));var crypto=require('crypto');var jsforce=require(_0x44e4('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44e4('0xc'));var Papa=require(_0x44e4('0xd'));var Redis=require(_0x44e4('0xe'));var authService=require(_0x44e4('0xf'));var qs=require(_0x44e4('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x44e4('0x11'));var logger=require(_0x44e4('0x12'))(_0x44e4('0x13'));var utils=require(_0x44e4('0x14'));var config=require(_0x44e4('0x15'));var licenseUtil=require(_0x44e4('0x16'));var db=require(_0x44e4('0x17'))['db'];var integrations=require(_0x44e4('0x18'));function respondWithStatusCode(_0xc1063,_0x5cb56e){_0x5cb56e=_0x5cb56e||0xcc;return function(_0x421c47){if(_0x421c47){return _0xc1063[_0x44e4('0x19')](_0x5cb56e);}return _0xc1063[_0x44e4('0x1a')](_0x5cb56e)[_0x44e4('0x1b')]();};}function respondWithResult(_0x43c45f,_0x29d115){_0x29d115=_0x29d115||0xc8;return function(_0x11ffc3){if(_0x11ffc3){return _0x43c45f[_0x44e4('0x1a')](_0x29d115)[_0x44e4('0x1c')](_0x11ffc3);}};}function respondWithFilteredResult(_0x1f703e,_0x5e53a9){return function(_0x47f284){if(_0x47f284){var _0xb33d3=typeof _0x5e53a9[_0x44e4('0x1d')]===_0x44e4('0x1e')&&typeof _0x5e53a9['limit']===_0x44e4('0x1e');var _0x407660=_0x47f284[_0x44e4('0x1f')];var _0x289417=_0xb33d3?0x0:_0x5e53a9[_0x44e4('0x1d')];var _0x408f3a=_0xb33d3?_0x47f284[_0x44e4('0x1f')]:_0x5e53a9[_0x44e4('0x1d')]+_0x5e53a9['limit'];var _0x467476;if(_0x408f3a>=_0x407660){_0x408f3a=_0x407660;_0x467476=0xc8;}else{_0x467476=0xce;}_0x1f703e[_0x44e4('0x1a')](_0x467476);return _0x1f703e[_0x44e4('0x20')](_0x44e4('0x21'),_0x289417+'-'+_0x408f3a+'/'+_0x407660)[_0x44e4('0x1c')](_0x47f284);}return null;};}function patchUpdates(_0x2ab131){return function(_0x360a5b){try{jsonpatch['apply'](_0x360a5b,_0x2ab131,!![]);}catch(_0x8b43f9){return BPromise[_0x44e4('0x22')](_0x8b43f9);}return _0x360a5b[_0x44e4('0x23')]();};}function saveUpdates(_0x28317f,_0x475fd1){return function(_0x126d80){if(_0x126d80){return _0x126d80[_0x44e4('0x24')](_0x28317f)[_0x44e4('0x25')](function(_0x2fb611){return _0x2fb611;});}return null;};}function removeEntity(_0x6164fe,_0xbdfb4a){return function(_0x2d9699){if(_0x2d9699){return _0x2d9699[_0x44e4('0x26')]()['then'](function(){_0x6164fe[_0x44e4('0x1a')](0xcc)[_0x44e4('0x1b')]();});}};}function handleEntityNotFound(_0x2838dd,_0x59476c){return function(_0x40bc1c){if(!_0x40bc1c){_0x2838dd[_0x44e4('0x19')](0x194);}return _0x40bc1c;};}function handleError(_0x36dbff,_0xa01a83){_0xa01a83=_0xa01a83||0x1f4;return function(_0xddfe2e){logger[_0x44e4('0x27')](_0xddfe2e[_0x44e4('0x28')]);if(_0xddfe2e['name']){delete _0xddfe2e[_0x44e4('0x29')];}_0x36dbff[_0x44e4('0x1a')](_0xa01a83)[_0x44e4('0x2a')](_0xddfe2e);};}exports[_0x44e4('0x2b')]=function(_0x10f2e4,_0x38e1f3){var _0x56357a={},_0x1a21e4={},_0x117da6={'count':0x0,'rows':[]};var _0x2bee78=_[_0x44e4('0x2c')](db['SugarcrmAccount']['rawAttributes'],function(_0x105968){return{'name':_0x105968['fieldName'],'type':_0x105968[_0x44e4('0x2d')][_0x44e4('0x2e')]};});_0x1a21e4[_0x44e4('0x2f')]=_[_0x44e4('0x2c')](_0x2bee78,_0x44e4('0x29'));_0x1a21e4[_0x44e4('0x30')]=_['keys'](_0x10f2e4['query']);_0x1a21e4[_0x44e4('0x31')]=_[_0x44e4('0x32')](_0x1a21e4[_0x44e4('0x2f')],_0x1a21e4[_0x44e4('0x30')]);_0x56357a[_0x44e4('0x33')]=_[_0x44e4('0x32')](_0x1a21e4['model'],qs[_0x44e4('0x34')](_0x10f2e4[_0x44e4('0x30')][_0x44e4('0x34')]));_0x56357a['attributes']=_0x56357a[_0x44e4('0x33')][_0x44e4('0x35')]?_0x56357a[_0x44e4('0x33')]:_0x1a21e4[_0x44e4('0x2f')];if(!_0x10f2e4[_0x44e4('0x30')]['hasOwnProperty'](_0x44e4('0x36'))){_0x56357a[_0x44e4('0x37')]=qs[_0x44e4('0x37')](_0x10f2e4[_0x44e4('0x30')][_0x44e4('0x37')]);_0x56357a[_0x44e4('0x1d')]=qs['offset'](_0x10f2e4[_0x44e4('0x30')][_0x44e4('0x1d')]);}_0x56357a['order']=qs[_0x44e4('0x38')](_0x10f2e4[_0x44e4('0x30')]['sort']);_0x56357a['where']=qs['filters'](_[_0x44e4('0x39')](_0x10f2e4[_0x44e4('0x30')],_0x1a21e4[_0x44e4('0x31')]),_0x2bee78);if(_0x10f2e4[_0x44e4('0x30')][_0x44e4('0x3a')]){_0x56357a['where']=_['merge'](_0x56357a[_0x44e4('0x3b')],{'$or':_[_0x44e4('0x2c')](_0x2bee78,function(_0x52fe66){if(_0x52fe66['type']!=='VIRTUAL'){var _0x513d21={};_0x513d21[_0x52fe66[_0x44e4('0x29')]]={'$like':'%'+_0x10f2e4[_0x44e4('0x30')]['filter']+'%'};return _0x513d21;}})});}_0x56357a=_[_0x44e4('0x3c')]({},_0x56357a,_0x10f2e4[_0x44e4('0x3d')]);var _0x3b795d={'where':_0x56357a[_0x44e4('0x3b')]};return db[_0x44e4('0x3e')][_0x44e4('0x1f')](_0x3b795d)[_0x44e4('0x25')](function(_0x3f28fa){_0x117da6[_0x44e4('0x1f')]=_0x3f28fa;if(_0x10f2e4[_0x44e4('0x30')][_0x44e4('0x3f')]){_0x56357a[_0x44e4('0x40')]=[{'all':!![]}];}return db[_0x44e4('0x3e')][_0x44e4('0x41')](_0x56357a);})[_0x44e4('0x25')](function(_0x297906){_0x117da6['rows']=_0x297906;return _0x117da6;})[_0x44e4('0x25')](respondWithFilteredResult(_0x38e1f3,_0x56357a))[_0x44e4('0x42')](handleError(_0x38e1f3,null));};exports[_0x44e4('0x43')]=function(_0x12871b,_0x4720e7){var _0xe75f05={'raw':![],'where':{'id':_0x12871b[_0x44e4('0x44')]['id']}},_0x33d3f5={};_0x33d3f5[_0x44e4('0x2f')]=_[_0x44e4('0x45')](db[_0x44e4('0x3e')][_0x44e4('0x46')]);_0x33d3f5[_0x44e4('0x30')]=_[_0x44e4('0x45')](_0x12871b['query']);_0x33d3f5[_0x44e4('0x31')]=_['intersection'](_0x33d3f5[_0x44e4('0x2f')],_0x33d3f5[_0x44e4('0x30')]);_0xe75f05['attributes']=_['intersection'](_0x33d3f5['model'],qs[_0x44e4('0x34')](_0x12871b[_0x44e4('0x30')][_0x44e4('0x34')]));_0xe75f05[_0x44e4('0x33')]=_0xe75f05[_0x44e4('0x33')][_0x44e4('0x35')]?_0xe75f05['attributes']:_0x33d3f5[_0x44e4('0x2f')];if(_0x12871b[_0x44e4('0x30')][_0x44e4('0x3f')]){_0xe75f05[_0x44e4('0x40')]=[{'all':!![]}];}_0xe75f05=_['merge']({},_0xe75f05,_0x12871b[_0x44e4('0x3d')]);return db[_0x44e4('0x3e')][_0x44e4('0x47')](_0xe75f05)['then'](handleEntityNotFound(_0x4720e7,null))[_0x44e4('0x25')](respondWithResult(_0x4720e7,null))[_0x44e4('0x42')](handleError(_0x4720e7,null));};exports[_0x44e4('0x48')]=function(_0x29b91f,_0x2684e2){return db[_0x44e4('0x3e')][_0x44e4('0x48')](_0x29b91f[_0x44e4('0x49')],{})[_0x44e4('0x25')](respondWithResult(_0x2684e2,0xc9))['catch'](handleError(_0x2684e2,null));};exports[_0x44e4('0x24')]=function(_0x32b383,_0x1965d2){if(_0x32b383['body']['id']){delete _0x32b383[_0x44e4('0x49')]['id'];}return db[_0x44e4('0x3e')][_0x44e4('0x47')]({'where':{'id':_0x32b383['params']['id']}})[_0x44e4('0x25')](handleEntityNotFound(_0x1965d2,null))[_0x44e4('0x25')](saveUpdates(_0x32b383[_0x44e4('0x49')],null))[_0x44e4('0x25')](respondWithResult(_0x1965d2,null))[_0x44e4('0x42')](handleError(_0x1965d2,null));};exports[_0x44e4('0x26')]=function(_0x52e1c7,_0x3bbf5c){return db[_0x44e4('0x3e')][_0x44e4('0x47')]({'where':{'id':_0x52e1c7[_0x44e4('0x44')]['id']}})[_0x44e4('0x25')](handleEntityNotFound(_0x3bbf5c,null))[_0x44e4('0x25')](removeEntity(_0x3bbf5c,null))[_0x44e4('0x42')](handleError(_0x3bbf5c,null));};exports[_0x44e4('0x4a')]=function(_0xe44eb6,_0x4c1594,_0x20764d){var _0x5360c4={};var _0x1377bf={};var _0x1f081d;var _0x25bccc;return db['SugarcrmAccount'][_0x44e4('0x4b')]({'where':{'id':_0xe44eb6['params']['id']}})[_0x44e4('0x25')](handleEntityNotFound(_0x4c1594,null))[_0x44e4('0x25')](function(_0x4e74de){if(_0x4e74de){_0x1f081d=_0x4e74de;_0x1377bf[_0x44e4('0x2f')]=_[_0x44e4('0x45')](db[_0x44e4('0x4c')]['rawAttributes']);_0x1377bf[_0x44e4('0x30')]=_[_0x44e4('0x45')](_0xe44eb6[_0x44e4('0x30')]);_0x1377bf['filters']=_[_0x44e4('0x32')](_0x1377bf[_0x44e4('0x2f')],_0x1377bf['query']);_0x5360c4['attributes']=_['intersection'](_0x1377bf[_0x44e4('0x2f')],qs[_0x44e4('0x34')](_0xe44eb6[_0x44e4('0x30')]['fields']));_0x5360c4[_0x44e4('0x33')]=_0x5360c4[_0x44e4('0x33')][_0x44e4('0x35')]?_0x5360c4[_0x44e4('0x33')]:_0x1377bf[_0x44e4('0x2f')];_0x5360c4[_0x44e4('0x4d')]=qs['sort'](_0xe44eb6[_0x44e4('0x30')]['sort']);_0x5360c4[_0x44e4('0x3b')]=qs[_0x44e4('0x31')](_[_0x44e4('0x39')](_0xe44eb6[_0x44e4('0x30')],_0x1377bf[_0x44e4('0x31')]));if(_0xe44eb6[_0x44e4('0x30')][_0x44e4('0x3a')]){_0x5360c4['where']=_[_0x44e4('0x3c')](_0x5360c4[_0x44e4('0x3b')],{'$or':_[_0x44e4('0x2c')](_0x5360c4[_0x44e4('0x33')],function(_0x4ae574){var _0x1a5452={};_0x1a5452[_0x4ae574]={'$like':'%'+_0xe44eb6[_0x44e4('0x30')][_0x44e4('0x3a')]+'%'};return _0x1a5452;})});}_0x5360c4=_[_0x44e4('0x3c')]({},_0x5360c4,_0xe44eb6[_0x44e4('0x3d')]);return _0x1f081d['getConfigurations'](_0x5360c4);}})[_0x44e4('0x25')](function(_0x24751d){if(_0x24751d){_0x25bccc=_0x24751d['length'];if(!_0xe44eb6[_0x44e4('0x30')]['hasOwnProperty']('nolimit')){_0x5360c4['limit']=qs['limit'](_0xe44eb6[_0x44e4('0x30')]['limit']);_0x5360c4[_0x44e4('0x1d')]=qs[_0x44e4('0x1d')](_0xe44eb6[_0x44e4('0x30')]['offset']);}return _0x1f081d[_0x44e4('0x4a')](_0x5360c4);}})[_0x44e4('0x25')](function(_0x1a97ae){if(_0x1a97ae){return _0x1a97ae?{'count':_0x25bccc,'rows':_0x1a97ae}:null;}})[_0x44e4('0x25')](respondWithResult(_0x4c1594,null))[_0x44e4('0x42')](handleError(_0x4c1594,null));};exports['addConfiguration']=function(_0x49d649,_0x14da20,_0x2bcf7d){if(_0x49d649[_0x44e4('0x49')]['id']){delete _0x49d649[_0x44e4('0x49')]['id'];}return db['SugarcrmAccount'][_0x44e4('0x4b')]({'where':{'id':_0x49d649[_0x44e4('0x44')]['id']}})[_0x44e4('0x25')](handleEntityNotFound(_0x14da20,null))[_0x44e4('0x25')](function(_0xf9d31){if(_0xf9d31){_0x49d649['body'][_0x44e4('0x4e')]=_0xf9d31['id'];_0x49d649['body'][_0x44e4('0x4f')]=integrations[_0x44e4('0x50')](_0x49d649[_0x44e4('0x49')][_0x44e4('0x51')],_0x49d649[_0x44e4('0x49')][_0x44e4('0x2d')]);_0x49d649[_0x44e4('0x49')][_0x44e4('0x52')]=integrations[_0x44e4('0x53')](_0x49d649['body'][_0x44e4('0x51')],_0x49d649[_0x44e4('0x49')][_0x44e4('0x2d')]);return db[_0x44e4('0x4c')][_0x44e4('0x48')](_0x49d649[_0x44e4('0x49')],{'include':[{'model':db[_0x44e4('0x54')],'as':_0x44e4('0x4f')},{'model':db[_0x44e4('0x54')],'as':'Descriptions'}]});}return null;})[_0x44e4('0x25')](respondWithResult(_0x14da20,null))[_0x44e4('0x42')](handleError(_0x14da20,null));};exports[_0x44e4('0x55')]=function(_0x1e584c,_0x5a5aca,_0x22f59b){var _0xf6969c='';var _0x58d33c=['id','name',_0x44e4('0x56'),_0x44e4('0x57'),'description','date_start',_0x44e4('0x58'),'duration_minutes',_0x44e4('0x59'),'parent_type','parent_name',_0x44e4('0x5a')];return db[_0x44e4('0x3e')][_0x44e4('0x4b')]({'where':{'id':_0x1e584c[_0x44e4('0x44')]['id']},'attributes':['id',_0x44e4('0x5b'),_0x44e4('0x5c'),_0x44e4('0x5d')]})[_0x44e4('0x25')](handleEntityNotFound(_0x5a5aca,null))['then'](function(_0x3937ca){if(_0x3937ca){_0xf6969c=_0x3937ca[_0x44e4('0x5d')];var _0x168f44=_0xf6969c[_0x44e4('0x5e')](-0x1);if(_0x168f44==='/'){_0xf6969c=_0xf6969c[_0x44e4('0x5f')](0x0,_0xf6969c['lastIndexOf'](_0x168f44));}return rp({'method':_0x44e4('0x60'),'uri':util['format'](_0x44e4('0x61'),_0xf6969c,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x44e4('0x62'),'input_type':_0x44e4('0x63'),'response_type':_0x44e4('0x63'),'rest_data':JSON[_0x44e4('0x64')]({'user_auth':{'user_name':_0x3937ca[_0x44e4('0x5b')],'password':_0x3937ca['password'],'encryption':'PLAIN'},'application':_0x44e4('0x65')})}});}})[_0x44e4('0x25')](function(_0x81c25e){if(_0x81c25e&&_0x81c25e['name']!==_0x44e4('0x66')&&_0x81c25e[_0x44e4('0x29')]!==_0x44e4('0x67')){return rp({'method':'POST','uri':util['format']('%s%s',_0xf6969c,_0x44e4('0x68')),'json':!![],'form':{'method':_0x44e4('0x69'),'input_type':_0x44e4('0x63'),'response_type':_0x44e4('0x63'),'rest_data':JSON[_0x44e4('0x64')]({'session':_0x81c25e['id'],'module_name':_0x44e4('0x6a')})}})['then'](function(_0x3a5443){if(_0x3a5443){var _0x55b72b=_[_0x44e4('0x6b')](_0x3a5443[_0x44e4('0x6c')]);_[_0x44e4('0x6d')](_0x55b72b,function(_0x389ca4){return _0x58d33c[_0x44e4('0x6e')](_0x389ca4[_0x44e4('0x29')]);});return{'count':_0x55b72b[_0x44e4('0x35')],'rows':_['map'](_0x55b72b,function(_0x59adaf){return{'id':_0x59adaf[_0x44e4('0x29')],'name':_0x59adaf[_0x44e4('0x6f')],'custom':_['endsWith'](_0x59adaf[_0x44e4('0x29')],'_c')?!![]:![],'options':_0x59adaf[_0x44e4('0x3d')]?_[_0x44e4('0x2c')](_[_0x44e4('0x6b')](_0x59adaf['options']),function(_0x22e3c4){return{'name':_0x22e3c4[_0x44e4('0x70')],'value':_0x22e3c4[_0x44e4('0x29')]};}):[]};})};}})['then'](respondWithResult(_0x5a5aca,null))['catch'](function(_0x309109){var _0xc246f=_0x1e584c[_0x44e4('0x30')][_0x44e4('0x71')]?0x1f4:_0x309109[_0x44e4('0x72')]||0x1f4;logger['error'](_0x44e4('0x73'),_0x44e4('0x55'),_0xc246f,JSON[_0x44e4('0x64')](_0x309109));delete _0x309109[_0x44e4('0x29')];if(_0xc246f===0x191){_0xc246f=0x190;}_0x5a5aca[_0x44e4('0x1a')](_0xc246f)[_0x44e4('0x2a')](_0x1e584c[_0x44e4('0x30')][_0x44e4('0x71')]?{'message':_0x44e4('0x74'),'statusCode':_0x309109[_0x44e4('0x72')]}:_0x309109);});}else{var _0x46536d=0x1f4;_0x5a5aca[_0x44e4('0x1a')](_0x46536d)['send']({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0x951c=['count','limit','set','save','update','then','end','sendStatus','error','stack','name','send','index','map','SugarcrmAccount','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','catch','show','params','fields','length','find','create','body','getConfigurations','SugarcrmConfiguration','addConfiguration','findOne','AccountId','getSubjects','Descriptions','getDescriptions','channel','SugarcrmField','Subjects','getFields','assigned_user_id','description','duration_hours','duration_minutes','parent_type','parent_name','username','password','remoteUri','slice','substring','lastIndexOf','POST','%s%s','/service/v4_1/rest.php','login','JSON','stringify','Invalid\x20Login','format','get_module_fields','Calls','values','module_fields','remove','includes','label','endsWith','value','test','statusCode','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','json','offset','undefined'];(function(_0x26b0c0,_0x47892d){var _0x1bb9e5=function(_0x1a7c18){while(--_0x1a7c18){_0x26b0c0['push'](_0x26b0c0['shift']());}};_0x1bb9e5(++_0x47892d);}(_0x951c,0xcd));var _0xc951=function(_0x37661a,_0x1522f7){_0x37661a=_0x37661a-0x0;var _0x12b09a=_0x951c[_0x37661a];return _0x12b09a;};'use strict';var emlformat=require(_0xc951('0x0'));var rimraf=require(_0xc951('0x1'));var zipdir=require(_0xc951('0x2'));var jsonpatch=require(_0xc951('0x3'));var rp=require(_0xc951('0x4'));var moment=require(_0xc951('0x5'));var BPromise=require(_0xc951('0x6'));var Mustache=require(_0xc951('0x7'));var util=require('util');var path=require(_0xc951('0x8'));var sox=require(_0xc951('0x9'));var csv=require(_0xc951('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc951('0xb'));var _=require(_0xc951('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc951('0xd'));var toCsv=require(_0xc951('0xa'));var querystring=require(_0xc951('0xe'));var Papa=require('papaparse');var Redis=require(_0xc951('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc951('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc951('0x11'));var logger=require(_0xc951('0x12'))(_0xc951('0x13'));var utils=require(_0xc951('0x14'));var config=require(_0xc951('0x15'));var licenseUtil=require(_0xc951('0x16'));var db=require(_0xc951('0x17'))['db'];var integrations=require(_0xc951('0x18'));function respondWithStatusCode(_0x1b7c1e,_0xd57b63){_0xd57b63=_0xd57b63||0xcc;return function(_0x28dc51){if(_0x28dc51){return _0x1b7c1e['sendStatus'](_0xd57b63);}return _0x1b7c1e[_0xc951('0x19')](_0xd57b63)['end']();};}function respondWithResult(_0x394bbb,_0x1c32d2){_0x1c32d2=_0x1c32d2||0xc8;return function(_0xf5b33){if(_0xf5b33){return _0x394bbb[_0xc951('0x19')](_0x1c32d2)[_0xc951('0x1a')](_0xf5b33);}};}function respondWithFilteredResult(_0x22f405,_0x5462dc){return function(_0x3f9b3f){if(_0x3f9b3f){var _0x3d1cfc=typeof _0x5462dc[_0xc951('0x1b')]===_0xc951('0x1c')&&typeof _0x5462dc['limit']===_0xc951('0x1c');var _0xb225b5=_0x3f9b3f[_0xc951('0x1d')];var _0x453dbb=_0x3d1cfc?0x0:_0x5462dc[_0xc951('0x1b')];var _0x157fa5=_0x3d1cfc?_0x3f9b3f['count']:_0x5462dc[_0xc951('0x1b')]+_0x5462dc[_0xc951('0x1e')];var _0x1fc70b;if(_0x157fa5>=_0xb225b5){_0x157fa5=_0xb225b5;_0x1fc70b=0xc8;}else{_0x1fc70b=0xce;}_0x22f405[_0xc951('0x19')](_0x1fc70b);return _0x22f405[_0xc951('0x1f')]('Content-Range',_0x453dbb+'-'+_0x157fa5+'/'+_0xb225b5)['json'](_0x3f9b3f);}return null;};}function patchUpdates(_0x1b4a40){return function(_0xf219d8){try{jsonpatch['apply'](_0xf219d8,_0x1b4a40,!![]);}catch(_0x5a86ad){return BPromise['reject'](_0x5a86ad);}return _0xf219d8[_0xc951('0x20')]();};}function saveUpdates(_0x1abed2,_0x5a58f2){return function(_0x2a02e2){if(_0x2a02e2){return _0x2a02e2[_0xc951('0x21')](_0x1abed2)[_0xc951('0x22')](function(_0x39f2a6){return _0x39f2a6;});}return null;};}function removeEntity(_0x2ca2f7,_0x4ac53d){return function(_0x57f157){if(_0x57f157){return _0x57f157['destroy']()[_0xc951('0x22')](function(){_0x2ca2f7[_0xc951('0x19')](0xcc)[_0xc951('0x23')]();});}};}function handleEntityNotFound(_0x1b8837,_0x454968){return function(_0x3a19bd){if(!_0x3a19bd){_0x1b8837[_0xc951('0x24')](0x194);}return _0x3a19bd;};}function handleError(_0x4ffffc,_0x21cded){_0x21cded=_0x21cded||0x1f4;return function(_0x87a9e7){logger[_0xc951('0x25')](_0x87a9e7[_0xc951('0x26')]);if(_0x87a9e7[_0xc951('0x27')]){delete _0x87a9e7[_0xc951('0x27')];}_0x4ffffc['status'](_0x21cded)[_0xc951('0x28')](_0x87a9e7);};}exports[_0xc951('0x29')]=function(_0x5bca8d,_0x126264){var _0x16cfcd={},_0x4ac45a={},_0xf679dc={'count':0x0,'rows':[]};var _0x38efa6=_[_0xc951('0x2a')](db[_0xc951('0x2b')][_0xc951('0x2c')],function(_0x11a399){return{'name':_0x11a399[_0xc951('0x2d')],'type':_0x11a399[_0xc951('0x2e')][_0xc951('0x2f')]};});_0x4ac45a[_0xc951('0x30')]=_['map'](_0x38efa6,_0xc951('0x27'));_0x4ac45a['query']=_[_0xc951('0x31')](_0x5bca8d[_0xc951('0x32')]);_0x4ac45a[_0xc951('0x33')]=_[_0xc951('0x34')](_0x4ac45a[_0xc951('0x30')],_0x4ac45a[_0xc951('0x32')]);_0x16cfcd[_0xc951('0x35')]=_[_0xc951('0x34')](_0x4ac45a[_0xc951('0x30')],qs['fields'](_0x5bca8d[_0xc951('0x32')]['fields']));_0x16cfcd[_0xc951('0x35')]=_0x16cfcd[_0xc951('0x35')]['length']?_0x16cfcd[_0xc951('0x35')]:_0x4ac45a[_0xc951('0x30')];if(!_0x5bca8d[_0xc951('0x32')][_0xc951('0x36')]('nolimit')){_0x16cfcd[_0xc951('0x1e')]=qs['limit'](_0x5bca8d[_0xc951('0x32')][_0xc951('0x1e')]);_0x16cfcd['offset']=qs[_0xc951('0x1b')](_0x5bca8d[_0xc951('0x32')][_0xc951('0x1b')]);}_0x16cfcd[_0xc951('0x37')]=qs[_0xc951('0x38')](_0x5bca8d[_0xc951('0x32')]['sort']);_0x16cfcd[_0xc951('0x39')]=qs['filters'](_[_0xc951('0x3a')](_0x5bca8d[_0xc951('0x32')],_0x4ac45a[_0xc951('0x33')]),_0x38efa6);if(_0x5bca8d[_0xc951('0x32')][_0xc951('0x3b')]){_0x16cfcd['where']=_['merge'](_0x16cfcd[_0xc951('0x39')],{'$or':_[_0xc951('0x2a')](_0x38efa6,function(_0x4085cd){if(_0x4085cd[_0xc951('0x2e')]!==_0xc951('0x3c')){var _0x5cf99a={};_0x5cf99a[_0x4085cd[_0xc951('0x27')]]={'$like':'%'+_0x5bca8d[_0xc951('0x32')]['filter']+'%'};return _0x5cf99a;}})});}_0x16cfcd=_[_0xc951('0x3d')]({},_0x16cfcd,_0x5bca8d[_0xc951('0x3e')]);var _0x2fbd13={'where':_0x16cfcd[_0xc951('0x39')]};return db[_0xc951('0x2b')]['count'](_0x2fbd13)[_0xc951('0x22')](function(_0x48d41b){_0xf679dc[_0xc951('0x1d')]=_0x48d41b;if(_0x5bca8d[_0xc951('0x32')][_0xc951('0x3f')]){_0x16cfcd[_0xc951('0x40')]=[{'all':!![]}];}return db[_0xc951('0x2b')]['findAll'](_0x16cfcd);})[_0xc951('0x22')](function(_0x1a575c){_0xf679dc['rows']=_0x1a575c;return _0xf679dc;})[_0xc951('0x22')](respondWithFilteredResult(_0x126264,_0x16cfcd))[_0xc951('0x41')](handleError(_0x126264,null));};exports[_0xc951('0x42')]=function(_0xd8c9aa,_0xe2e263){var _0xebdb22={'raw':![],'where':{'id':_0xd8c9aa[_0xc951('0x43')]['id']}},_0x6a663b={};_0x6a663b[_0xc951('0x30')]=_[_0xc951('0x31')](db['SugarcrmAccount'][_0xc951('0x2c')]);_0x6a663b[_0xc951('0x32')]=_['keys'](_0xd8c9aa['query']);_0x6a663b[_0xc951('0x33')]=_['intersection'](_0x6a663b[_0xc951('0x30')],_0x6a663b[_0xc951('0x32')]);_0xebdb22[_0xc951('0x35')]=_[_0xc951('0x34')](_0x6a663b[_0xc951('0x30')],qs[_0xc951('0x44')](_0xd8c9aa[_0xc951('0x32')]['fields']));_0xebdb22['attributes']=_0xebdb22[_0xc951('0x35')][_0xc951('0x45')]?_0xebdb22['attributes']:_0x6a663b[_0xc951('0x30')];if(_0xd8c9aa['query'][_0xc951('0x3f')]){_0xebdb22[_0xc951('0x40')]=[{'all':!![]}];}_0xebdb22=_[_0xc951('0x3d')]({},_0xebdb22,_0xd8c9aa[_0xc951('0x3e')]);return db[_0xc951('0x2b')][_0xc951('0x46')](_0xebdb22)[_0xc951('0x22')](handleEntityNotFound(_0xe2e263,null))[_0xc951('0x22')](respondWithResult(_0xe2e263,null))['catch'](handleError(_0xe2e263,null));};exports[_0xc951('0x47')]=function(_0x1f114c,_0x59c5b7){return db['SugarcrmAccount']['create'](_0x1f114c['body'],{})[_0xc951('0x22')](respondWithResult(_0x59c5b7,0xc9))[_0xc951('0x41')](handleError(_0x59c5b7,null));};exports[_0xc951('0x21')]=function(_0x2f290b,_0x2fe0f9){if(_0x2f290b[_0xc951('0x48')]['id']){delete _0x2f290b[_0xc951('0x48')]['id'];}return db[_0xc951('0x2b')][_0xc951('0x46')]({'where':{'id':_0x2f290b['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x2fe0f9,null))[_0xc951('0x22')](saveUpdates(_0x2f290b[_0xc951('0x48')],null))[_0xc951('0x22')](respondWithResult(_0x2fe0f9,null))[_0xc951('0x41')](handleError(_0x2fe0f9,null));};exports['destroy']=function(_0x3edbc1,_0xda15){return db[_0xc951('0x2b')][_0xc951('0x46')]({'where':{'id':_0x3edbc1['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0xda15,null))[_0xc951('0x22')](removeEntity(_0xda15,null))[_0xc951('0x41')](handleError(_0xda15,null));};exports[_0xc951('0x49')]=function(_0x3da5d0,_0x3faa79,_0xe881cf){var _0x55774e={};var _0x27f5db={};var _0x2feed3;var _0x1dd71a;return db[_0xc951('0x2b')]['findOne']({'where':{'id':_0x3da5d0[_0xc951('0x43')]['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x3faa79,null))[_0xc951('0x22')](function(_0x1f02a0){if(_0x1f02a0){_0x2feed3=_0x1f02a0;_0x27f5db[_0xc951('0x30')]=_[_0xc951('0x31')](db[_0xc951('0x4a')][_0xc951('0x2c')]);_0x27f5db[_0xc951('0x32')]=_[_0xc951('0x31')](_0x3da5d0[_0xc951('0x32')]);_0x27f5db[_0xc951('0x33')]=_[_0xc951('0x34')](_0x27f5db[_0xc951('0x30')],_0x27f5db['query']);_0x55774e[_0xc951('0x35')]=_[_0xc951('0x34')](_0x27f5db[_0xc951('0x30')],qs['fields'](_0x3da5d0[_0xc951('0x32')]['fields']));_0x55774e[_0xc951('0x35')]=_0x55774e[_0xc951('0x35')]['length']?_0x55774e[_0xc951('0x35')]:_0x27f5db[_0xc951('0x30')];_0x55774e[_0xc951('0x37')]=qs[_0xc951('0x38')](_0x3da5d0[_0xc951('0x32')][_0xc951('0x38')]);_0x55774e[_0xc951('0x39')]=qs['filters'](_[_0xc951('0x3a')](_0x3da5d0[_0xc951('0x32')],_0x27f5db['filters']));if(_0x3da5d0[_0xc951('0x32')][_0xc951('0x3b')]){_0x55774e['where']=_[_0xc951('0x3d')](_0x55774e['where'],{'$or':_[_0xc951('0x2a')](_0x55774e[_0xc951('0x35')],function(_0x504514){var _0x36b3ff={};_0x36b3ff[_0x504514]={'$like':'%'+_0x3da5d0[_0xc951('0x32')][_0xc951('0x3b')]+'%'};return _0x36b3ff;})});}_0x55774e=_[_0xc951('0x3d')]({},_0x55774e,_0x3da5d0[_0xc951('0x3e')]);return _0x2feed3['getConfigurations'](_0x55774e);}})[_0xc951('0x22')](function(_0xf8e108){if(_0xf8e108){_0x1dd71a=_0xf8e108['length'];if(!_0x3da5d0['query'][_0xc951('0x36')]('nolimit')){_0x55774e[_0xc951('0x1e')]=qs[_0xc951('0x1e')](_0x3da5d0[_0xc951('0x32')][_0xc951('0x1e')]);_0x55774e['offset']=qs[_0xc951('0x1b')](_0x3da5d0[_0xc951('0x32')]['offset']);}return _0x2feed3[_0xc951('0x49')](_0x55774e);}})[_0xc951('0x22')](function(_0x421b15){if(_0x421b15){return _0x421b15?{'count':_0x1dd71a,'rows':_0x421b15}:null;}})[_0xc951('0x22')](respondWithResult(_0x3faa79,null))[_0xc951('0x41')](handleError(_0x3faa79,null));};exports[_0xc951('0x4b')]=function(_0x148cbf,_0x1e44ce,_0x42c752){if(_0x148cbf[_0xc951('0x48')]['id']){delete _0x148cbf[_0xc951('0x48')]['id'];}return db['SugarcrmAccount'][_0xc951('0x4c')]({'where':{'id':_0x148cbf['params']['id']}})[_0xc951('0x22')](handleEntityNotFound(_0x1e44ce,null))['then'](function(_0x1cad17){if(_0x1cad17){_0x148cbf[_0xc951('0x48')][_0xc951('0x4d')]=_0x1cad17['id'];_0x148cbf[_0xc951('0x48')]['Subjects']=integrations[_0xc951('0x4e')](_0x148cbf[_0xc951('0x48')]['channel'],_0x148cbf[_0xc951('0x48')][_0xc951('0x2e')]);_0x148cbf[_0xc951('0x48')][_0xc951('0x4f')]=integrations[_0xc951('0x50')](_0x148cbf[_0xc951('0x48')][_0xc951('0x51')],_0x148cbf[_0xc951('0x48')][_0xc951('0x2e')]);return db[_0xc951('0x4a')][_0xc951('0x47')](_0x148cbf[_0xc951('0x48')],{'include':[{'model':db[_0xc951('0x52')],'as':_0xc951('0x53')},{'model':db[_0xc951('0x52')],'as':_0xc951('0x4f')}]});}return null;})['then'](respondWithResult(_0x1e44ce,null))[_0xc951('0x41')](handleError(_0x1e44ce,null));};exports[_0xc951('0x54')]=function(_0x4e1c23,_0x478668,_0xa457ee){var _0x2d6e79='';var _0x223928=['id','name',_0xc951('0x55'),'created_by',_0xc951('0x56'),'date_start',_0xc951('0x57'),_0xc951('0x58'),'parent_id',_0xc951('0x59'),_0xc951('0x5a'),'direction'];return db[_0xc951('0x2b')][_0xc951('0x4c')]({'where':{'id':_0x4e1c23[_0xc951('0x43')]['id']},'attributes':['id',_0xc951('0x5b'),_0xc951('0x5c'),_0xc951('0x5d')]})[_0xc951('0x22')](handleEntityNotFound(_0x478668,null))[_0xc951('0x22')](function(_0x4ef3ea){if(_0x4ef3ea){_0x2d6e79=_0x4ef3ea[_0xc951('0x5d')];var _0x5bdac9=_0x2d6e79[_0xc951('0x5e')](-0x1);if(_0x5bdac9==='/'){_0x2d6e79=_0x2d6e79[_0xc951('0x5f')](0x0,_0x2d6e79[_0xc951('0x60')](_0x5bdac9));}return rp({'method':_0xc951('0x61'),'uri':util['format'](_0xc951('0x62'),_0x2d6e79,_0xc951('0x63')),'json':!![],'form':{'method':_0xc951('0x64'),'input_type':'JSON','response_type':_0xc951('0x65'),'rest_data':JSON[_0xc951('0x66')]({'user_auth':{'user_name':_0x4ef3ea[_0xc951('0x5b')],'password':_0x4ef3ea[_0xc951('0x5c')],'encryption':'PLAIN'},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0xc951('0x22')](function(_0x1d7e6d){if(_0x1d7e6d&&_0x1d7e6d[_0xc951('0x27')]!==_0xc951('0x67')&&_0x1d7e6d['name']!=='Password\x20Expired'){return rp({'method':_0xc951('0x61'),'uri':util[_0xc951('0x68')](_0xc951('0x62'),_0x2d6e79,_0xc951('0x63')),'json':!![],'form':{'method':_0xc951('0x69'),'input_type':_0xc951('0x65'),'response_type':_0xc951('0x65'),'rest_data':JSON[_0xc951('0x66')]({'session':_0x1d7e6d['id'],'module_name':_0xc951('0x6a')})}})[_0xc951('0x22')](function(_0x4633e3){if(_0x4633e3){var _0x4b7ac6=_[_0xc951('0x6b')](_0x4633e3[_0xc951('0x6c')]);_[_0xc951('0x6d')](_0x4b7ac6,function(_0x3cd8c9){return _0x223928[_0xc951('0x6e')](_0x3cd8c9['name']);});return{'count':_0x4b7ac6[_0xc951('0x45')],'rows':_[_0xc951('0x2a')](_0x4b7ac6,function(_0x38700c){return{'id':_0x38700c[_0xc951('0x27')],'name':_0x38700c[_0xc951('0x6f')],'custom':_[_0xc951('0x70')](_0x38700c[_0xc951('0x27')],'_c')?!![]:![],'options':_0x38700c[_0xc951('0x3e')]?_[_0xc951('0x2a')](_[_0xc951('0x6b')](_0x38700c[_0xc951('0x3e')]),function(_0x3d3c8e){return{'name':_0x3d3c8e[_0xc951('0x71')],'value':_0x3d3c8e[_0xc951('0x27')]};}):[]};})};}})['then'](respondWithResult(_0x478668,null))[_0xc951('0x41')](function(_0x444d89){var _0x116dfc=_0x4e1c23[_0xc951('0x32')][_0xc951('0x72')]?0x1f4:_0x444d89[_0xc951('0x73')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x116dfc,JSON[_0xc951('0x66')](_0x444d89));delete _0x444d89[_0xc951('0x27')];if(_0x116dfc===0x191){_0x116dfc=0x190;}_0x478668[_0xc951('0x19')](_0x116dfc)[_0xc951('0x28')](_0x4e1c23[_0xc951('0x32')][_0xc951('0x72')]?{'message':_0xc951('0x74'),'statusCode':_0x444d89[_0xc951('0x73')]}:_0x444d89);});}else{var _0x35ce96=0x1f4;_0x478668[_0xc951('0x19')](_0x35ce96)[_0xc951('0x28')]({'message':_0xc951('0x74'),'statusCode':0x190});}});};
\ No newline at end of file
index 4d48bfa..7645e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x845f=['bluebird','request-promise','path','rimraf','../../components/integrations/configuration','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','moment'];(function(_0x34ede4,_0x519750){var _0x49a9c3=function(_0x1ccaf9){while(--_0x1ccaf9){_0x34ede4['push'](_0x34ede4['shift']());}};_0x49a9c3(++_0x519750);}(_0x845f,0x1b8));var _0xf845=function(_0x35885a,_0x42fed7){_0x35885a=_0x35885a-0x0;var _0xe86249=_0x845f[_0x35885a];return _0xe86249;};'use strict';var _=require(_0xf845('0x0'));var util=require(_0xf845('0x1'));var logger=require(_0xf845('0x2'))('api');var moment=require(_0xf845('0x3'));var BPromise=require(_0xf845('0x4'));var rp=require(_0xf845('0x5'));var fs=require('fs');var path=require(_0xf845('0x6'));var rimraf=require(_0xf845('0x7'));var config=require('../../config/environment');var attributes=require('./intSugarcrmAccount.attributes');var integrations=require(_0xf845('0x8'));module[_0xf845('0x9')]=function(_0x1efcaa,_0x21cea){return _0x1efcaa['define'](_0xf845('0xa'),attributes,{'tableName':_0xf845('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7f93=['SugarcrmAccount','int_sugarcrm_accounts','lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x5108e3,_0x52b591){var _0x1aa9b6=function(_0x35040c){while(--_0x35040c){_0x5108e3['push'](_0x5108e3['shift']());}};_0x1aa9b6(++_0x52b591);}(_0x7f93,0x1a6));var _0x37f9=function(_0xbccf41,_0x3bfba4){_0xbccf41=_0xbccf41-0x0;var _0x2101d6=_0x7f93[_0xbccf41];return _0x2101d6;};'use strict';var _=require(_0x37f9('0x0'));var util=require(_0x37f9('0x1'));var logger=require('../../config/logger')(_0x37f9('0x2'));var moment=require(_0x37f9('0x3'));var BPromise=require(_0x37f9('0x4'));var rp=require(_0x37f9('0x5'));var fs=require('fs');var path=require(_0x37f9('0x6'));var rimraf=require(_0x37f9('0x7'));var config=require(_0x37f9('0x8'));var attributes=require(_0x37f9('0x9'));var integrations=require(_0x37f9('0xa'));module[_0x37f9('0xb')]=function(_0x2b272f,_0x5e1cbe){return _0x2b272f[_0x37f9('0xc')](_0x37f9('0xd'),attributes,{'tableName':_0x37f9('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 19da180..edddf78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60bd=['SugarcrmAccount','findAll','raw','options','where','attributes','limit','include','map','model','then','find','ShowSugarcrmAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','request','info','SugarcrmAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','GetSugarcrmAccount'];(function(_0x23c314,_0x467489){var _0x39e586=function(_0x25f647){while(--_0x25f647){_0x23c314['push'](_0x23c314['shift']());}};_0x39e586(++_0x467489);}(_0x60bd,0xd3));var _0xd60b=function(_0x3adc9a,_0x715dba){_0x3adc9a=_0x3adc9a-0x0;var _0x27b069=_0x60bd[_0x3adc9a];return _0x27b069;};'use strict';var _=require(_0xd60b('0x0'));var util=require(_0xd60b('0x1'));var moment=require(_0xd60b('0x2'));var BPromise=require(_0xd60b('0x3'));var rs=require(_0xd60b('0x4'));var fs=require('fs');var Redis=require(_0xd60b('0x5'));var db=require(_0xd60b('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xd60b('0x7'));var config=require(_0xd60b('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x11adfb,_0x13e06d,_0x3aee20){return new BPromise(function(_0x3a0040,_0x15f4ad){return client[_0xd60b('0x9')](_0x11adfb,_0x3aee20)['then'](function(_0x4e3d32){logger[_0xd60b('0xa')](_0xd60b('0xb'),_0x13e06d,'request\x20sent');logger[_0xd60b('0xc')]('SugarcrmAccount,\x20%s,\x20%s,\x20%s',_0x13e06d,_0xd60b('0xd'),JSON[_0xd60b('0xe')](_0x4e3d32));if(_0x4e3d32[_0xd60b('0xf')]){if(_0x4e3d32['error']['code']===0x1f4){logger[_0xd60b('0xf')](_0xd60b('0xb'),_0x13e06d,_0x4e3d32[_0xd60b('0xf')]['message']);return _0x15f4ad(_0x4e3d32[_0xd60b('0xf')][_0xd60b('0x10')]);}logger[_0xd60b('0xf')](_0xd60b('0xb'),_0x13e06d,_0x4e3d32[_0xd60b('0xf')][_0xd60b('0x10')]);return _0x3a0040(_0x4e3d32[_0xd60b('0xf')][_0xd60b('0x10')]);}else{logger[_0xd60b('0xa')](_0xd60b('0xb'),_0x13e06d,_0xd60b('0xd'));_0x3a0040(_0x4e3d32[_0xd60b('0x11')][_0xd60b('0x10')]);}})[_0xd60b('0x12')](function(_0x281d7c){logger[_0xd60b('0xf')](_0xd60b('0xb'),_0x13e06d,_0x281d7c);_0x15f4ad(_0x281d7c);});});}exports[_0xd60b('0x13')]=function(_0x8a3ec0){var _0x1eb008=this;return new Promise(function(_0x1e6053,_0x21eda0){return db[_0xd60b('0x14')][_0xd60b('0x15')]({'raw':_0x8a3ec0['options']?_0x8a3ec0['options'][_0xd60b('0x16')]===undefined?!![]:![]:!![],'where':_0x8a3ec0['options']?_0x8a3ec0[_0xd60b('0x17')][_0xd60b('0x18')]||null:null,'attributes':_0x8a3ec0[_0xd60b('0x17')]?_0x8a3ec0[_0xd60b('0x17')][_0xd60b('0x19')]||null:null,'limit':_0x8a3ec0[_0xd60b('0x17')]?_0x8a3ec0['options'][_0xd60b('0x1a')]||null:null,'include':_0x8a3ec0['options']?_0x8a3ec0[_0xd60b('0x17')][_0xd60b('0x1b')]?_[_0xd60b('0x1c')](_0x8a3ec0[_0xd60b('0x17')][_0xd60b('0x1b')],function(_0xde98ab){return{'model':db[_0xde98ab[_0xd60b('0x1d')]],'as':_0xde98ab['as'],'attributes':_0xde98ab[_0xd60b('0x19')],'include':_0xde98ab[_0xd60b('0x1b')]?_['map'](_0xde98ab[_0xd60b('0x1b')],function(_0x1e2aa1){return{'model':db[_0x1e2aa1['model']],'as':_0x1e2aa1['as'],'attributes':_0x1e2aa1[_0xd60b('0x19')],'include':_0x1e2aa1['include']?_[_0xd60b('0x1c')](_0x1e2aa1['include'],function(_0x324a2e){return{'model':db[_0x324a2e[_0xd60b('0x1d')]],'as':_0x324a2e['as'],'attributes':_0x324a2e[_0xd60b('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd60b('0x1e')](function(_0x3b2370){logger[_0xd60b('0xa')](_0xd60b('0x13'),_0x8a3ec0);logger[_0xd60b('0xc')](_0xd60b('0x13'),_0x8a3ec0,JSON[_0xd60b('0xe')](_0x3b2370));_0x1e6053(_0x3b2370);})[_0xd60b('0x12')](function(_0x5d0575){logger[_0xd60b('0xf')](_0xd60b('0x13'),_0x5d0575['message'],_0x8a3ec0);_0x21eda0(_0x1eb008['error'](0x1f4,_0x5d0575[_0xd60b('0x10')]));});});};exports['ShowSugarcrmAccount']=function(_0x21a21b){var _0x5664e8=this;return new Promise(function(_0x3719ea,_0xdc4348){return db[_0xd60b('0x14')][_0xd60b('0x1f')]({'raw':_0x21a21b[_0xd60b('0x17')]?_0x21a21b[_0xd60b('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x21a21b['options']?_0x21a21b[_0xd60b('0x17')][_0xd60b('0x18')]||null:null,'attributes':_0x21a21b[_0xd60b('0x17')]?_0x21a21b[_0xd60b('0x17')][_0xd60b('0x19')]||null:null,'include':_0x21a21b['options']?_0x21a21b[_0xd60b('0x17')]['include']?_['map'](_0x21a21b[_0xd60b('0x17')][_0xd60b('0x1b')],function(_0x20bd6b){return{'model':db[_0x20bd6b[_0xd60b('0x1d')]],'as':_0x20bd6b['as'],'attributes':_0x20bd6b['attributes'],'include':_0x20bd6b[_0xd60b('0x1b')]?_[_0xd60b('0x1c')](_0x20bd6b[_0xd60b('0x1b')],function(_0x4f348d){return{'model':db[_0x4f348d['model']],'as':_0x4f348d['as'],'attributes':_0x4f348d[_0xd60b('0x19')],'include':_0x4f348d[_0xd60b('0x1b')]?_[_0xd60b('0x1c')](_0x4f348d['include'],function(_0x2d8cf0){return{'model':db[_0x2d8cf0[_0xd60b('0x1d')]],'as':_0x2d8cf0['as'],'attributes':_0x2d8cf0[_0xd60b('0x19')]};}):[]};}):[]};}):[]:[]})[_0xd60b('0x1e')](function(_0x5dcdb5){logger[_0xd60b('0xa')](_0xd60b('0x20'),_0x21a21b);logger[_0xd60b('0xc')](_0xd60b('0x20'),_0x21a21b,JSON['stringify'](_0x5dcdb5));_0x3719ea(_0x5dcdb5);})[_0xd60b('0x12')](function(_0x5dff49){logger['error'](_0xd60b('0x20'),_0x5dff49[_0xd60b('0x10')],_0x21a21b);_0xdc4348(_0x5664e8[_0xd60b('0xf')](0x1f4,_0x5dff49[_0xd60b('0x10')]));});});};
\ No newline at end of file
+var _0x2ffd=['SugarcrmAccount','options','raw','where','limit','include','map','model','attributes','ShowSugarcrmAccount','find','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','SugarcrmAccount,\x20%s,\x20%s','SugarcrmAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','GetSugarcrmAccount'];(function(_0x4d04e9,_0x110efd){var _0x5665fb=function(_0x4bc9f0){while(--_0x4bc9f0){_0x4d04e9['push'](_0x4d04e9['shift']());}};_0x5665fb(++_0x110efd);}(_0x2ffd,0x113));var _0xd2ff=function(_0x4cf579,_0x4aa150){_0x4cf579=_0x4cf579-0x0;var _0x89676e=_0x2ffd[_0x4cf579];return _0x89676e;};'use strict';var _=require('lodash');var util=require(_0xd2ff('0x0'));var moment=require('moment');var BPromise=require(_0xd2ff('0x1'));var rs=require(_0xd2ff('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd2ff('0x3'))['db'];var utils=require(_0xd2ff('0x4'));var logger=require(_0xd2ff('0x5'))(_0xd2ff('0x6'));var config=require(_0xd2ff('0x7'));var jayson=require(_0xd2ff('0x8'));var client=jayson[_0xd2ff('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x388164,_0x36c8c8,_0x5a51c4){return new BPromise(function(_0x1b7b94,_0x18054b){return client[_0xd2ff('0xa')](_0x388164,_0x5a51c4)[_0xd2ff('0xb')](function(_0x24fb6b){logger[_0xd2ff('0xc')](_0xd2ff('0xd'),_0x36c8c8,'request\x20sent');logger['debug'](_0xd2ff('0xe'),_0x36c8c8,_0xd2ff('0xf'),JSON[_0xd2ff('0x10')](_0x24fb6b));if(_0x24fb6b[_0xd2ff('0x11')]){if(_0x24fb6b['error'][_0xd2ff('0x12')]===0x1f4){logger[_0xd2ff('0x11')](_0xd2ff('0xd'),_0x36c8c8,_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);return _0x18054b(_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);}logger[_0xd2ff('0x11')]('SugarcrmAccount,\x20%s,\x20%s',_0x36c8c8,_0x24fb6b[_0xd2ff('0x11')][_0xd2ff('0x13')]);return _0x1b7b94(_0x24fb6b[_0xd2ff('0x11')]['message']);}else{logger[_0xd2ff('0xc')](_0xd2ff('0xd'),_0x36c8c8,_0xd2ff('0xf'));_0x1b7b94(_0x24fb6b['result'][_0xd2ff('0x13')]);}})[_0xd2ff('0x14')](function(_0x27f6ed){logger[_0xd2ff('0x11')](_0xd2ff('0xd'),_0x36c8c8,_0x27f6ed);_0x18054b(_0x27f6ed);});});}exports[_0xd2ff('0x15')]=function(_0x3b115a){var _0x1eb0dc=this;return new Promise(function(_0x4a4dca,_0x593d67){return db[_0xd2ff('0x16')]['findAll']({'raw':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x18')]===undefined?!![]:![]:!![],'where':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x19')]||null:null,'attributes':_0x3b115a['options']?_0x3b115a[_0xd2ff('0x17')]['attributes']||null:null,'limit':_0x3b115a['options']?_0x3b115a[_0xd2ff('0x17')][_0xd2ff('0x1a')]||null:null,'include':_0x3b115a[_0xd2ff('0x17')]?_0x3b115a['options'][_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x3b115a[_0xd2ff('0x17')]['include'],function(_0x5a8491){return{'model':db[_0x5a8491[_0xd2ff('0x1d')]],'as':_0x5a8491['as'],'attributes':_0x5a8491['attributes'],'include':_0x5a8491[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x5a8491[_0xd2ff('0x1b')],function(_0xda2b94){return{'model':db[_0xda2b94[_0xd2ff('0x1d')]],'as':_0xda2b94['as'],'attributes':_0xda2b94[_0xd2ff('0x1e')],'include':_0xda2b94[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0xda2b94[_0xd2ff('0x1b')],function(_0x40c206){return{'model':db[_0x40c206['model']],'as':_0x40c206['as'],'attributes':_0x40c206[_0xd2ff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd2ff('0xb')](function(_0x399428){logger[_0xd2ff('0xc')]('GetSugarcrmAccount',_0x3b115a);logger['debug'](_0xd2ff('0x15'),_0x3b115a,JSON[_0xd2ff('0x10')](_0x399428));_0x4a4dca(_0x399428);})[_0xd2ff('0x14')](function(_0x3af6da){logger[_0xd2ff('0x11')](_0xd2ff('0x15'),_0x3af6da['message'],_0x3b115a);_0x593d67(_0x1eb0dc[_0xd2ff('0x11')](0x1f4,_0x3af6da[_0xd2ff('0x13')]));});});};exports[_0xd2ff('0x1f')]=function(_0xc98ea3){var _0x226510=this;return new Promise(function(_0x535c14,_0x2cb2d5){return db[_0xd2ff('0x16')][_0xd2ff('0x20')]({'raw':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0xc98ea3['options']?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x19')]||null:null,'attributes':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x1e')]||null:null,'include':_0xc98ea3[_0xd2ff('0x17')]?_0xc98ea3[_0xd2ff('0x17')][_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0xc98ea3['options'][_0xd2ff('0x1b')],function(_0x1345f1){return{'model':db[_0x1345f1['model']],'as':_0x1345f1['as'],'attributes':_0x1345f1[_0xd2ff('0x1e')],'include':_0x1345f1[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x1345f1[_0xd2ff('0x1b')],function(_0x570357){return{'model':db[_0x570357['model']],'as':_0x570357['as'],'attributes':_0x570357[_0xd2ff('0x1e')],'include':_0x570357[_0xd2ff('0x1b')]?_[_0xd2ff('0x1c')](_0x570357['include'],function(_0x12fa2a){return{'model':db[_0x12fa2a[_0xd2ff('0x1d')]],'as':_0x12fa2a['as'],'attributes':_0x12fa2a[_0xd2ff('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xd2ff('0xb')](function(_0x1f4af1){logger['info'](_0xd2ff('0x1f'),_0xc98ea3);logger['debug'](_0xd2ff('0x1f'),_0xc98ea3,JSON[_0xd2ff('0x10')](_0x1f4af1));_0x535c14(_0x1f4af1);})['catch'](function(_0x577a74){logger[_0xd2ff('0x11')](_0xd2ff('0x1f'),_0x577a74[_0xd2ff('0x13')],_0xc98ea3);_0x2cb2d5(_0x226510[_0xd2ff('0x11')](0x1f4,_0x577a74[_0xd2ff('0x13')]));});});};
\ No newline at end of file
index 60e9fd6..aa99f3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf497=['exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','show','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','post','put','/:id','update','delete','destroy'];(function(_0x4ea911,_0x1e3ba8){var _0x5db975=function(_0x4bf693){while(--_0x4bf693){_0x4ea911['push'](_0x4ea911['shift']());}};_0x5db975(++_0x1e3ba8);}(_0xf497,0x97));var _0x7f49=function(_0x27a9be,_0x2afa06){_0x27a9be=_0x27a9be-0x0;var _0x365c49=_0xf497[_0x27a9be];return _0x365c49;};'use strict';var multer=require(_0x7f49('0x0'));var util=require(_0x7f49('0x1'));var path=require(_0x7f49('0x2'));var timeout=require(_0x7f49('0x3'));var express=require(_0x7f49('0x4'));var router=express[_0x7f49('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7f49('0x6'));var interaction=require(_0x7f49('0x7'));var config=require(_0x7f49('0x8'));var controller=require(_0x7f49('0x9'));router[_0x7f49('0xa')]('/',auth[_0x7f49('0xb')](),controller['index']);router[_0x7f49('0xa')]('/:id',auth[_0x7f49('0xb')](),controller[_0x7f49('0xc')]);router['get'](_0x7f49('0xd'),auth[_0x7f49('0xb')](),controller[_0x7f49('0xe')]);router[_0x7f49('0xa')]('/:id/subjects',auth[_0x7f49('0xb')](),controller[_0x7f49('0xf')]);router[_0x7f49('0xa')](_0x7f49('0x10'),auth[_0x7f49('0xb')](),controller[_0x7f49('0x11')]);router[_0x7f49('0x12')]('/',auth[_0x7f49('0xb')](),controller['create']);router[_0x7f49('0x13')](_0x7f49('0x14'),auth['isAuthenticated'](),controller[_0x7f49('0x15')]);router[_0x7f49('0x16')](_0x7f49('0x14'),auth[_0x7f49('0xb')](),controller[_0x7f49('0x17')]);module[_0x7f49('0x18')]=router;
\ No newline at end of file
+var _0x5b2f=['delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update'];(function(_0x20db93,_0x3226d1){var _0x3602e4=function(_0x4f83cd){while(--_0x4f83cd){_0x20db93['push'](_0x20db93['shift']());}};_0x3602e4(++_0x3226d1);}(_0x5b2f,0x16e));var _0xf5b2=function(_0x4b13ce,_0x339cb0){_0x4b13ce=_0x4b13ce-0x0;var _0x427d4b=_0x5b2f[_0x4b13ce];return _0x427d4b;};'use strict';var multer=require(_0xf5b2('0x0'));var util=require(_0xf5b2('0x1'));var path=require(_0xf5b2('0x2'));var timeout=require(_0xf5b2('0x3'));var express=require('express');var router=express[_0xf5b2('0x4')]();var fs_extra=require(_0xf5b2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf5b2('0x6'));var config=require(_0xf5b2('0x7'));var controller=require(_0xf5b2('0x8'));router[_0xf5b2('0x9')]('/',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xb')]);router['get'](_0xf5b2('0xc'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xd')]);router['get'](_0xf5b2('0xe'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0xf')]);router[_0xf5b2('0x9')](_0xf5b2('0x10'),auth['isAuthenticated'](),controller[_0xf5b2('0x11')]);router[_0xf5b2('0x9')](_0xf5b2('0x12'),auth['isAuthenticated'](),controller[_0xf5b2('0x13')]);router[_0xf5b2('0x14')]('/',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x15')]);router[_0xf5b2('0x16')]('/:id',auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x17')]);router[_0xf5b2('0x18')](_0xf5b2('0xc'),auth[_0xf5b2('0xa')](),controller[_0xf5b2('0x19')]);module['exports']=router;
\ No newline at end of file
index e1aae5c..7937aed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa224=['sequelize','exports','STRING'];(function(_0x43b584,_0x20a6bd){var _0x48f27b=function(_0x1eeb77){while(--_0x1eeb77){_0x43b584['push'](_0x43b584['shift']());}};_0x48f27b(++_0x20a6bd);}(_0xa224,0xfc));var _0x4a22=function(_0x5c4942,_0x1b85cf){_0x5c4942=_0x5c4942-0x0;var _0xd57bdb=_0xa224[_0x5c4942];return _0xd57bdb;};'use strict';var Sequelize=require(_0x4a22('0x0'));module[_0x4a22('0x1')]={'name':{'type':Sequelize[_0x4a22('0x2')]},'description':{'type':Sequelize[_0x4a22('0x2')]}};
\ No newline at end of file
+var _0xfff3=['sequelize','exports','STRING'];(function(_0x409bfb,_0x582aab){var _0x217d7f=function(_0x18154d){while(--_0x18154d){_0x409bfb['push'](_0x409bfb['shift']());}};_0x217d7f(++_0x582aab);}(_0xfff3,0x6c));var _0x3fff=function(_0x49436b,_0x5a61ef){_0x49436b=_0x49436b-0x0;var _0x5e77c9=_0xfff3[_0x49436b];return _0x5e77c9;};'use strict';var Sequelize=require(_0x3fff('0x0'));module[_0x3fff('0x1')]={'name':{'type':Sequelize[_0x3fff('0x2')]},'description':{'type':Sequelize[_0x3fff('0x2')]}};
\ No newline at end of file
index 255d86a..6867c43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ce3=['type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getFields','findOne','SugarcrmField','hasOwnProperty','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','limit','undefined','offset','count','set','Content-Range','apply','reject','save','update','destroy','then','error','name','send','index','map','SugarcrmConfiguration','rawAttributes','key','query','keys','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','pick','filter','merge'];(function(_0x5f3472,_0x504db9){var _0x8636da=function(_0x459a4d){while(--_0x459a4d){_0x5f3472['push'](_0x5f3472['shift']());}};_0x8636da(++_0x504db9);}(_0x7ce3,0x10f));var _0x37ce=function(_0x264aac,_0x4ffc6c){_0x264aac=_0x264aac-0x0;var _0xd1c2c6=_0x7ce3[_0x264aac];return _0xd1c2c6;};'use strict';var emlformat=require(_0x37ce('0x0'));var rimraf=require(_0x37ce('0x1'));var zipdir=require(_0x37ce('0x2'));var jsonpatch=require(_0x37ce('0x3'));var rp=require('request-promise');var moment=require(_0x37ce('0x4'));var BPromise=require(_0x37ce('0x5'));var Mustache=require(_0x37ce('0x6'));var util=require('util');var path=require('path');var sox=require(_0x37ce('0x7'));var csv=require(_0x37ce('0x8'));var ejs=require(_0x37ce('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37ce('0xa'));var squel=require('squel');var crypto=require(_0x37ce('0xb'));var jsforce=require(_0x37ce('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x37ce('0x8'));var querystring=require(_0x37ce('0xd'));var Papa=require(_0x37ce('0xe'));var Redis=require(_0x37ce('0xf'));var authService=require(_0x37ce('0x10'));var qs=require(_0x37ce('0x11'));var as=require(_0x37ce('0x12'));var hardwareService=require(_0x37ce('0x13'));var logger=require(_0x37ce('0x14'))(_0x37ce('0x15'));var utils=require(_0x37ce('0x16'));var config=require(_0x37ce('0x17'));var licenseUtil=require(_0x37ce('0x18'));var db=require(_0x37ce('0x19'))['db'];function respondWithStatusCode(_0x559d0b,_0x4de445){_0x4de445=_0x4de445||0xcc;return function(_0x1997e3){if(_0x1997e3){return _0x559d0b[_0x37ce('0x1a')](_0x4de445);}return _0x559d0b[_0x37ce('0x1b')](_0x4de445)[_0x37ce('0x1c')]();};}function respondWithResult(_0x41dc2f,_0x815b19){_0x815b19=_0x815b19||0xc8;return function(_0xc15efe){if(_0xc15efe){return _0x41dc2f[_0x37ce('0x1b')](_0x815b19)[_0x37ce('0x1d')](_0xc15efe);}};}function respondWithFilteredResult(_0x4fdb06,_0x42779d){return function(_0x188525){if(_0x188525){var _0x31103f=typeof _0x42779d['offset']==='undefined'&&typeof _0x42779d[_0x37ce('0x1e')]===_0x37ce('0x1f');var _0x1399b0=_0x188525['count'];var _0x11fa13=_0x31103f?0x0:_0x42779d[_0x37ce('0x20')];var _0x93e891=_0x31103f?_0x188525[_0x37ce('0x21')]:_0x42779d['offset']+_0x42779d[_0x37ce('0x1e')];var _0x3dc356;if(_0x93e891>=_0x1399b0){_0x93e891=_0x1399b0;_0x3dc356=0xc8;}else{_0x3dc356=0xce;}_0x4fdb06[_0x37ce('0x1b')](_0x3dc356);return _0x4fdb06[_0x37ce('0x22')](_0x37ce('0x23'),_0x11fa13+'-'+_0x93e891+'/'+_0x1399b0)[_0x37ce('0x1d')](_0x188525);}return null;};}function patchUpdates(_0x36d019){return function(_0x45d5d1){try{jsonpatch[_0x37ce('0x24')](_0x45d5d1,_0x36d019,!![]);}catch(_0x2fab9f){return BPromise[_0x37ce('0x25')](_0x2fab9f);}return _0x45d5d1[_0x37ce('0x26')]();};}function saveUpdates(_0x2783f2,_0x10b148){return function(_0x267a8d){if(_0x267a8d){return _0x267a8d[_0x37ce('0x27')](_0x2783f2)['then'](function(_0x47a5c6){return _0x47a5c6;});}return null;};}function removeEntity(_0x27e76a,_0x1f294b){return function(_0x5b1361){if(_0x5b1361){return _0x5b1361[_0x37ce('0x28')]()[_0x37ce('0x29')](function(){_0x27e76a[_0x37ce('0x1b')](0xcc)[_0x37ce('0x1c')]();});}};}function handleEntityNotFound(_0x4d6e33,_0x4b7b4d){return function(_0x23dc03){if(!_0x23dc03){_0x4d6e33[_0x37ce('0x1a')](0x194);}return _0x23dc03;};}function handleError(_0x380f63,_0x4589ac){_0x4589ac=_0x4589ac||0x1f4;return function(_0x59d2ac){logger[_0x37ce('0x2a')](_0x59d2ac['stack']);if(_0x59d2ac[_0x37ce('0x2b')]){delete _0x59d2ac[_0x37ce('0x2b')];}_0x380f63[_0x37ce('0x1b')](_0x4589ac)[_0x37ce('0x2c')](_0x59d2ac);};}exports[_0x37ce('0x2d')]=function(_0x41a129,_0x12a3de){var _0x22561f={},_0x563e24={},_0x455c2c={'count':0x0,'rows':[]};var _0x189b72=_[_0x37ce('0x2e')](db[_0x37ce('0x2f')][_0x37ce('0x30')],function(_0x38de6c){return{'name':_0x38de6c['fieldName'],'type':_0x38de6c['type'][_0x37ce('0x31')]};});_0x563e24['model']=_[_0x37ce('0x2e')](_0x189b72,_0x37ce('0x2b'));_0x563e24[_0x37ce('0x32')]=_[_0x37ce('0x33')](_0x41a129[_0x37ce('0x32')]);_0x563e24[_0x37ce('0x34')]=_[_0x37ce('0x35')](_0x563e24['model'],_0x563e24[_0x37ce('0x32')]);_0x22561f[_0x37ce('0x36')]=_[_0x37ce('0x35')](_0x563e24[_0x37ce('0x37')],qs[_0x37ce('0x38')](_0x41a129[_0x37ce('0x32')][_0x37ce('0x38')]));_0x22561f[_0x37ce('0x36')]=_0x22561f[_0x37ce('0x36')][_0x37ce('0x39')]?_0x22561f[_0x37ce('0x36')]:_0x563e24['model'];if(!_0x41a129['query']['hasOwnProperty'](_0x37ce('0x3a'))){_0x22561f[_0x37ce('0x1e')]=qs[_0x37ce('0x1e')](_0x41a129[_0x37ce('0x32')][_0x37ce('0x1e')]);_0x22561f[_0x37ce('0x20')]=qs[_0x37ce('0x20')](_0x41a129[_0x37ce('0x32')]['offset']);}_0x22561f[_0x37ce('0x3b')]=qs[_0x37ce('0x3c')](_0x41a129[_0x37ce('0x32')]['sort']);_0x22561f[_0x37ce('0x3d')]=qs[_0x37ce('0x34')](_[_0x37ce('0x3e')](_0x41a129[_0x37ce('0x32')],_0x563e24['filters']),_0x189b72);if(_0x41a129[_0x37ce('0x32')][_0x37ce('0x3f')]){_0x22561f[_0x37ce('0x3d')]=_[_0x37ce('0x40')](_0x22561f[_0x37ce('0x3d')],{'$or':_['map'](_0x189b72,function(_0x367bf3){if(_0x367bf3[_0x37ce('0x41')]!==_0x37ce('0x42')){var _0x177803={};_0x177803[_0x367bf3[_0x37ce('0x2b')]]={'$like':'%'+_0x41a129[_0x37ce('0x32')]['filter']+'%'};return _0x177803;}})});}_0x22561f=_[_0x37ce('0x40')]({},_0x22561f,_0x41a129['options']);var _0x53f1c5={'where':_0x22561f['where']};return db[_0x37ce('0x2f')][_0x37ce('0x21')](_0x53f1c5)[_0x37ce('0x29')](function(_0x596489){_0x455c2c['count']=_0x596489;if(_0x41a129[_0x37ce('0x32')][_0x37ce('0x43')]){_0x22561f[_0x37ce('0x44')]=[{'all':!![]}];}return db[_0x37ce('0x2f')][_0x37ce('0x45')](_0x22561f);})[_0x37ce('0x29')](function(_0x23f825){_0x455c2c[_0x37ce('0x46')]=_0x23f825;return _0x455c2c;})[_0x37ce('0x29')](respondWithFilteredResult(_0x12a3de,_0x22561f))[_0x37ce('0x47')](handleError(_0x12a3de,null));};exports[_0x37ce('0x48')]=function(_0x11e90d,_0x10d00d){var _0x1bd2fd={'raw':![],'where':{'id':_0x11e90d[_0x37ce('0x49')]['id']}},_0x42fec8={};_0x42fec8[_0x37ce('0x37')]=_[_0x37ce('0x33')](db[_0x37ce('0x2f')]['rawAttributes']);_0x42fec8['query']=_[_0x37ce('0x33')](_0x11e90d[_0x37ce('0x32')]);_0x42fec8['filters']=_[_0x37ce('0x35')](_0x42fec8[_0x37ce('0x37')],_0x42fec8[_0x37ce('0x32')]);_0x1bd2fd['attributes']=_[_0x37ce('0x35')](_0x42fec8['model'],qs[_0x37ce('0x38')](_0x11e90d[_0x37ce('0x32')][_0x37ce('0x38')]));_0x1bd2fd[_0x37ce('0x36')]=_0x1bd2fd[_0x37ce('0x36')][_0x37ce('0x39')]?_0x1bd2fd['attributes']:_0x42fec8[_0x37ce('0x37')];if(_0x11e90d[_0x37ce('0x32')][_0x37ce('0x43')]){_0x1bd2fd['include']=[{'all':!![]}];}_0x1bd2fd=_[_0x37ce('0x40')]({},_0x1bd2fd,_0x11e90d[_0x37ce('0x4a')]);return db[_0x37ce('0x2f')][_0x37ce('0x4b')](_0x1bd2fd)[_0x37ce('0x29')](handleEntityNotFound(_0x10d00d,null))[_0x37ce('0x29')](respondWithResult(_0x10d00d,null))[_0x37ce('0x47')](handleError(_0x10d00d,null));};exports['create']=function(_0x137064,_0x5b5352){return db['SugarcrmConfiguration'][_0x37ce('0x4c')](_0x137064[_0x37ce('0x4d')],{})[_0x37ce('0x29')](respondWithResult(_0x5b5352,0xc9))[_0x37ce('0x47')](handleError(_0x5b5352,null));};exports[_0x37ce('0x27')]=function(_0x5a0948,_0x2732d3){if(_0x5a0948[_0x37ce('0x4d')]['id']){delete _0x5a0948[_0x37ce('0x4d')]['id'];}return db[_0x37ce('0x2f')][_0x37ce('0x4b')]({'where':{'id':_0x5a0948[_0x37ce('0x49')]['id']}})[_0x37ce('0x29')](handleEntityNotFound(_0x2732d3,null))['then'](saveUpdates(_0x5a0948[_0x37ce('0x4d')],null))['then'](respondWithResult(_0x2732d3,null))[_0x37ce('0x47')](handleError(_0x2732d3,null));};exports[_0x37ce('0x28')]=function(_0x2d8722,_0x348620){return db['SugarcrmConfiguration'][_0x37ce('0x4b')]({'where':{'id':_0x2d8722['params']['id']}})[_0x37ce('0x29')](handleEntityNotFound(_0x348620,null))['then'](removeEntity(_0x348620,null))[_0x37ce('0x47')](handleError(_0x348620,null));};exports[_0x37ce('0x4e')]=function(_0x2708dd,_0x419888,_0xdf0172){var _0x4bf80d={};var _0x3da18d={};var _0x8a11b5;var _0x22cba0;return db[_0x37ce('0x2f')][_0x37ce('0x4f')]({'where':{'id':_0x2708dd[_0x37ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x419888,null))[_0x37ce('0x29')](function(_0x58cb08){if(_0x58cb08){_0x8a11b5=_0x58cb08;_0x3da18d[_0x37ce('0x37')]=_[_0x37ce('0x33')](db[_0x37ce('0x50')][_0x37ce('0x30')]);_0x3da18d[_0x37ce('0x32')]=_['keys'](_0x2708dd[_0x37ce('0x32')]);_0x3da18d['filters']=_[_0x37ce('0x35')](_0x3da18d['model'],_0x3da18d['query']);_0x4bf80d[_0x37ce('0x36')]=_[_0x37ce('0x35')](_0x3da18d[_0x37ce('0x37')],qs[_0x37ce('0x38')](_0x2708dd[_0x37ce('0x32')][_0x37ce('0x38')]));_0x4bf80d[_0x37ce('0x36')]=_0x4bf80d[_0x37ce('0x36')][_0x37ce('0x39')]?_0x4bf80d[_0x37ce('0x36')]:_0x3da18d[_0x37ce('0x37')];_0x4bf80d[_0x37ce('0x3b')]=qs['sort'](_0x2708dd['query']['sort']);_0x4bf80d[_0x37ce('0x3d')]=qs['filters'](_[_0x37ce('0x3e')](_0x2708dd[_0x37ce('0x32')],_0x3da18d['filters']));if(_0x2708dd['query'][_0x37ce('0x3f')]){_0x4bf80d[_0x37ce('0x3d')]=_['merge'](_0x4bf80d['where'],{'$or':_[_0x37ce('0x2e')](_0x4bf80d[_0x37ce('0x36')],function(_0x40d0bd){var _0x309ccd={};_0x309ccd[_0x40d0bd]={'$like':'%'+_0x2708dd['query'][_0x37ce('0x3f')]+'%'};return _0x309ccd;})});}_0x4bf80d=_[_0x37ce('0x40')]({},_0x4bf80d,_0x2708dd[_0x37ce('0x4a')]);return _0x8a11b5[_0x37ce('0x4e')](_0x4bf80d);}})[_0x37ce('0x29')](function(_0xdde83b){if(_0xdde83b){_0x22cba0=_0xdde83b[_0x37ce('0x39')];if(!_0x2708dd[_0x37ce('0x32')][_0x37ce('0x51')](_0x37ce('0x3a'))){_0x4bf80d['limit']=qs[_0x37ce('0x1e')](_0x2708dd[_0x37ce('0x32')][_0x37ce('0x1e')]);_0x4bf80d[_0x37ce('0x20')]=qs[_0x37ce('0x20')](_0x2708dd[_0x37ce('0x32')][_0x37ce('0x20')]);}return _0x8a11b5['getFields'](_0x4bf80d);}})[_0x37ce('0x29')](function(_0x5bee92){if(_0x5bee92){return _0x5bee92?{'count':_0x22cba0,'rows':_0x5bee92}:null;}})['then'](respondWithResult(_0x419888,null))[_0x37ce('0x47')](handleError(_0x419888,null));};exports[_0x37ce('0x52')]=function(_0x1b4255,_0x57551c,_0x4aaf6b){var _0x689bc0={};var _0x2743f6={};var _0x2ef4b0;var _0x37b37a;return db[_0x37ce('0x2f')][_0x37ce('0x4f')]({'where':{'id':_0x1b4255[_0x37ce('0x49')]['id']}})['then'](handleEntityNotFound(_0x57551c,null))[_0x37ce('0x29')](function(_0x27a257){if(_0x27a257){_0x2ef4b0=_0x27a257;_0x2743f6['model']=_['keys'](db[_0x37ce('0x50')][_0x37ce('0x30')]);_0x2743f6[_0x37ce('0x32')]=_['keys'](_0x1b4255[_0x37ce('0x32')]);_0x2743f6[_0x37ce('0x34')]=_[_0x37ce('0x35')](_0x2743f6['model'],_0x2743f6[_0x37ce('0x32')]);_0x689bc0['attributes']=_['intersection'](_0x2743f6['model'],qs['fields'](_0x1b4255['query'][_0x37ce('0x38')]));_0x689bc0[_0x37ce('0x36')]=_0x689bc0['attributes'][_0x37ce('0x39')]?_0x689bc0[_0x37ce('0x36')]:_0x2743f6[_0x37ce('0x37')];_0x689bc0[_0x37ce('0x3b')]=qs[_0x37ce('0x3c')](_0x1b4255[_0x37ce('0x32')][_0x37ce('0x3c')]);_0x689bc0['where']=qs[_0x37ce('0x34')](_['pick'](_0x1b4255[_0x37ce('0x32')],_0x2743f6['filters']));if(_0x1b4255['query'][_0x37ce('0x3f')]){_0x689bc0['where']=_['merge'](_0x689bc0[_0x37ce('0x3d')],{'$or':_[_0x37ce('0x2e')](_0x689bc0['attributes'],function(_0x3e97e3){var _0x4e86ca={};_0x4e86ca[_0x3e97e3]={'$like':'%'+_0x1b4255['query'][_0x37ce('0x3f')]+'%'};return _0x4e86ca;})});}_0x689bc0=_['merge']({},_0x689bc0,_0x1b4255[_0x37ce('0x4a')]);return _0x2ef4b0[_0x37ce('0x52')](_0x689bc0);}})[_0x37ce('0x29')](function(_0x9b8017){if(_0x9b8017){_0x37b37a=_0x9b8017[_0x37ce('0x39')];if(!_0x1b4255[_0x37ce('0x32')]['hasOwnProperty'](_0x37ce('0x3a'))){_0x689bc0[_0x37ce('0x1e')]=qs[_0x37ce('0x1e')](_0x1b4255['query']['limit']);_0x689bc0['offset']=qs[_0x37ce('0x20')](_0x1b4255[_0x37ce('0x32')][_0x37ce('0x20')]);}return _0x2ef4b0[_0x37ce('0x52')](_0x689bc0);}})[_0x37ce('0x29')](function(_0x391c85){if(_0x391c85){return _0x391c85?{'count':_0x37b37a,'rows':_0x391c85}:null;}})[_0x37ce('0x29')](respondWithResult(_0x57551c,null))[_0x37ce('0x47')](handleError(_0x57551c,null));};exports[_0x37ce('0x53')]=function(_0x103f11,_0x1d2a0b,_0x212190){var _0x2afcbf={};var _0x299f69={};var _0x4dbc17;var _0x15d410;return db['SugarcrmConfiguration'][_0x37ce('0x4f')]({'where':{'id':_0x103f11[_0x37ce('0x49')]['id']}})[_0x37ce('0x29')](handleEntityNotFound(_0x1d2a0b,null))['then'](function(_0x57b9d8){if(_0x57b9d8){_0x4dbc17=_0x57b9d8;_0x299f69[_0x37ce('0x37')]=_[_0x37ce('0x33')](db['SugarcrmField']['rawAttributes']);_0x299f69[_0x37ce('0x32')]=_[_0x37ce('0x33')](_0x103f11['query']);_0x299f69['filters']=_[_0x37ce('0x35')](_0x299f69[_0x37ce('0x37')],_0x299f69[_0x37ce('0x32')]);_0x2afcbf[_0x37ce('0x36')]=_[_0x37ce('0x35')](_0x299f69[_0x37ce('0x37')],qs[_0x37ce('0x38')](_0x103f11[_0x37ce('0x32')][_0x37ce('0x38')]));_0x2afcbf['attributes']=_0x2afcbf[_0x37ce('0x36')][_0x37ce('0x39')]?_0x2afcbf[_0x37ce('0x36')]:_0x299f69[_0x37ce('0x37')];_0x2afcbf[_0x37ce('0x3b')]=qs[_0x37ce('0x3c')](_0x103f11[_0x37ce('0x32')][_0x37ce('0x3c')]);_0x2afcbf[_0x37ce('0x3d')]=qs[_0x37ce('0x34')](_[_0x37ce('0x3e')](_0x103f11[_0x37ce('0x32')],_0x299f69[_0x37ce('0x34')]));if(_0x103f11['query'][_0x37ce('0x3f')]){_0x2afcbf['where']=_[_0x37ce('0x40')](_0x2afcbf[_0x37ce('0x3d')],{'$or':_[_0x37ce('0x2e')](_0x2afcbf['attributes'],function(_0x125f40){var _0x1bbf91={};_0x1bbf91[_0x125f40]={'$like':'%'+_0x103f11[_0x37ce('0x32')][_0x37ce('0x3f')]+'%'};return _0x1bbf91;})});}_0x2afcbf=_[_0x37ce('0x40')]({},_0x2afcbf,_0x103f11[_0x37ce('0x4a')]);return _0x4dbc17[_0x37ce('0x53')](_0x2afcbf);}})[_0x37ce('0x29')](function(_0x1f1f9d){if(_0x1f1f9d){_0x15d410=_0x1f1f9d[_0x37ce('0x39')];if(!_0x103f11[_0x37ce('0x32')][_0x37ce('0x51')](_0x37ce('0x3a'))){_0x2afcbf['limit']=qs[_0x37ce('0x1e')](_0x103f11['query'][_0x37ce('0x1e')]);_0x2afcbf[_0x37ce('0x20')]=qs['offset'](_0x103f11[_0x37ce('0x32')]['offset']);}return _0x4dbc17[_0x37ce('0x53')](_0x2afcbf);}})[_0x37ce('0x29')](function(_0xa63174){if(_0xa63174){return _0xa63174?{'count':_0x15d410,'rows':_0xa63174}:null;}})[_0x37ce('0x29')](respondWithResult(_0x1d2a0b,null))['catch'](handleError(_0x1d2a0b,null));};
\ No newline at end of file
+var _0x6853=['json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','name','send','index','map','SugarcrmConfiguration','key','query','keys','filters','intersection','model','attributes','fields','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','length','catch','create','body','find','params','getFields','findOne','SugarcrmField','rawAttributes','hasOwnProperty','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x4c9e3a,_0x1ea80e){var _0x2e10b7=function(_0x5f32e7){while(--_0x5f32e7){_0x4c9e3a['push'](_0x4c9e3a['shift']());}};_0x2e10b7(++_0x1ea80e);}(_0x6853,0x11b));var _0x3685=function(_0x256207,_0x494d43){_0x256207=_0x256207-0x0;var _0x888a8c=_0x6853[_0x256207];return _0x888a8c;};'use strict';var emlformat=require(_0x3685('0x0'));var rimraf=require(_0x3685('0x1'));var zipdir=require(_0x3685('0x2'));var jsonpatch=require(_0x3685('0x3'));var rp=require('request-promise');var moment=require(_0x3685('0x4'));var BPromise=require(_0x3685('0x5'));var Mustache=require('mustache');var util=require(_0x3685('0x6'));var path=require('path');var sox=require(_0x3685('0x7'));var csv=require(_0x3685('0x8'));var ejs=require(_0x3685('0x9'));var fs=require('fs');var fs_extra=require(_0x3685('0xa'));var _=require(_0x3685('0xb'));var squel=require(_0x3685('0xc'));var crypto=require(_0x3685('0xd'));var jsforce=require(_0x3685('0xe'));var deskjs=require(_0x3685('0xf'));var toCsv=require(_0x3685('0x8'));var querystring=require('querystring');var Papa=require(_0x3685('0x10'));var Redis=require(_0x3685('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x3685('0x12'));var as=require(_0x3685('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x3685('0x14'));var db=require(_0x3685('0x15'))['db'];function respondWithStatusCode(_0x55bbf7,_0x29deb0){_0x29deb0=_0x29deb0||0xcc;return function(_0x3b4ffe){if(_0x3b4ffe){return _0x55bbf7[_0x3685('0x16')](_0x29deb0);}return _0x55bbf7[_0x3685('0x17')](_0x29deb0)[_0x3685('0x18')]();};}function respondWithResult(_0x5a07aa,_0x4864d5){_0x4864d5=_0x4864d5||0xc8;return function(_0x1a5a2c){if(_0x1a5a2c){return _0x5a07aa['status'](_0x4864d5)[_0x3685('0x19')](_0x1a5a2c);}};}function respondWithFilteredResult(_0x121d4a,_0x12333e){return function(_0xdd2226){if(_0xdd2226){var _0x34f8f1=typeof _0x12333e[_0x3685('0x1a')]===_0x3685('0x1b')&&typeof _0x12333e[_0x3685('0x1c')]===_0x3685('0x1b');var _0x59ff01=_0xdd2226[_0x3685('0x1d')];var _0x41e830=_0x34f8f1?0x0:_0x12333e[_0x3685('0x1a')];var _0x50dc99=_0x34f8f1?_0xdd2226[_0x3685('0x1d')]:_0x12333e['offset']+_0x12333e[_0x3685('0x1c')];var _0x4184bb;if(_0x50dc99>=_0x59ff01){_0x50dc99=_0x59ff01;_0x4184bb=0xc8;}else{_0x4184bb=0xce;}_0x121d4a[_0x3685('0x17')](_0x4184bb);return _0x121d4a[_0x3685('0x1e')]('Content-Range',_0x41e830+'-'+_0x50dc99+'/'+_0x59ff01)[_0x3685('0x19')](_0xdd2226);}return null;};}function patchUpdates(_0x5b092c){return function(_0x4c525a){try{jsonpatch[_0x3685('0x1f')](_0x4c525a,_0x5b092c,!![]);}catch(_0x23c5fa){return BPromise[_0x3685('0x20')](_0x23c5fa);}return _0x4c525a[_0x3685('0x21')]();};}function saveUpdates(_0x2748af,_0x34adaf){return function(_0x55dd59){if(_0x55dd59){return _0x55dd59[_0x3685('0x22')](_0x2748af)[_0x3685('0x23')](function(_0x5e3c54){return _0x5e3c54;});}return null;};}function removeEntity(_0x1c7091,_0xa5a74a){return function(_0x20317d){if(_0x20317d){return _0x20317d[_0x3685('0x24')]()[_0x3685('0x23')](function(){_0x1c7091[_0x3685('0x17')](0xcc)[_0x3685('0x18')]();});}};}function handleEntityNotFound(_0x240b3a,_0x204591){return function(_0x128ff6){if(!_0x128ff6){_0x240b3a[_0x3685('0x16')](0x194);}return _0x128ff6;};}function handleError(_0x266576,_0x3f8250){_0x3f8250=_0x3f8250||0x1f4;return function(_0x1da878){logger[_0x3685('0x25')](_0x1da878['stack']);if(_0x1da878[_0x3685('0x26')]){delete _0x1da878['name'];}_0x266576[_0x3685('0x17')](_0x3f8250)[_0x3685('0x27')](_0x1da878);};}exports[_0x3685('0x28')]=function(_0x55f877,_0x5d2a51){var _0x12eedb={},_0x400c15={},_0x7001d={'count':0x0,'rows':[]};var _0x556d88=_[_0x3685('0x29')](db[_0x3685('0x2a')]['rawAttributes'],function(_0x48977a){return{'name':_0x48977a['fieldName'],'type':_0x48977a['type'][_0x3685('0x2b')]};});_0x400c15['model']=_[_0x3685('0x29')](_0x556d88,'name');_0x400c15[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x55f877['query']);_0x400c15[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x400c15[_0x3685('0x30')],_0x400c15[_0x3685('0x2c')]);_0x12eedb[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x400c15[_0x3685('0x30')],qs[_0x3685('0x32')](_0x55f877[_0x3685('0x2c')][_0x3685('0x32')]));_0x12eedb[_0x3685('0x31')]=_0x12eedb[_0x3685('0x31')]['length']?_0x12eedb['attributes']:_0x400c15[_0x3685('0x30')];if(!_0x55f877[_0x3685('0x2c')]['hasOwnProperty']('nolimit')){_0x12eedb[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x55f877[_0x3685('0x2c')]['limit']);_0x12eedb['offset']=qs[_0x3685('0x1a')](_0x55f877[_0x3685('0x2c')][_0x3685('0x1a')]);}_0x12eedb[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x55f877[_0x3685('0x2c')]['sort']);_0x12eedb[_0x3685('0x35')]=qs['filters'](_[_0x3685('0x36')](_0x55f877[_0x3685('0x2c')],_0x400c15[_0x3685('0x2e')]),_0x556d88);if(_0x55f877[_0x3685('0x2c')][_0x3685('0x37')]){_0x12eedb[_0x3685('0x35')]=_[_0x3685('0x38')](_0x12eedb['where'],{'$or':_[_0x3685('0x29')](_0x556d88,function(_0x2dbcd0){if(_0x2dbcd0[_0x3685('0x39')]!==_0x3685('0x3a')){var _0x5943cc={};_0x5943cc[_0x2dbcd0['name']]={'$like':'%'+_0x55f877['query'][_0x3685('0x37')]+'%'};return _0x5943cc;}})});}_0x12eedb=_[_0x3685('0x38')]({},_0x12eedb,_0x55f877[_0x3685('0x3b')]);var _0x1ef888={'where':_0x12eedb[_0x3685('0x35')]};return db[_0x3685('0x2a')]['count'](_0x1ef888)[_0x3685('0x23')](function(_0x3beeb2){_0x7001d[_0x3685('0x1d')]=_0x3beeb2;if(_0x55f877['query'][_0x3685('0x3c')]){_0x12eedb[_0x3685('0x3d')]=[{'all':!![]}];}return db[_0x3685('0x2a')]['findAll'](_0x12eedb);})['then'](function(_0x196d70){_0x7001d[_0x3685('0x3e')]=_0x196d70;return _0x7001d;})[_0x3685('0x23')](respondWithFilteredResult(_0x5d2a51,_0x12eedb))['catch'](handleError(_0x5d2a51,null));};exports['show']=function(_0x2ca947,_0x36804a){var _0x2d30f0={'raw':![],'where':{'id':_0x2ca947['params']['id']}},_0x523ade={};_0x523ade[_0x3685('0x30')]=_['keys'](db[_0x3685('0x2a')]['rawAttributes']);_0x523ade['query']=_[_0x3685('0x2d')](_0x2ca947[_0x3685('0x2c')]);_0x523ade[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x523ade[_0x3685('0x30')],_0x523ade[_0x3685('0x2c')]);_0x2d30f0[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x523ade['model'],qs['fields'](_0x2ca947[_0x3685('0x2c')][_0x3685('0x32')]));_0x2d30f0[_0x3685('0x31')]=_0x2d30f0['attributes'][_0x3685('0x3f')]?_0x2d30f0[_0x3685('0x31')]:_0x523ade[_0x3685('0x30')];if(_0x2ca947[_0x3685('0x2c')][_0x3685('0x3c')]){_0x2d30f0['include']=[{'all':!![]}];}_0x2d30f0=_[_0x3685('0x38')]({},_0x2d30f0,_0x2ca947['options']);return db['SugarcrmConfiguration']['find'](_0x2d30f0)['then'](handleEntityNotFound(_0x36804a,null))[_0x3685('0x23')](respondWithResult(_0x36804a,null))[_0x3685('0x40')](handleError(_0x36804a,null));};exports[_0x3685('0x41')]=function(_0x1779aa,_0x341dce){return db[_0x3685('0x2a')][_0x3685('0x41')](_0x1779aa['body'],{})[_0x3685('0x23')](respondWithResult(_0x341dce,0xc9))['catch'](handleError(_0x341dce,null));};exports['update']=function(_0x3715b0,_0x202f5a){if(_0x3715b0[_0x3685('0x42')]['id']){delete _0x3715b0[_0x3685('0x42')]['id'];}return db[_0x3685('0x2a')]['find']({'where':{'id':_0x3715b0['params']['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x202f5a,null))[_0x3685('0x23')](saveUpdates(_0x3715b0['body'],null))[_0x3685('0x23')](respondWithResult(_0x202f5a,null))[_0x3685('0x40')](handleError(_0x202f5a,null));};exports[_0x3685('0x24')]=function(_0x5d7d13,_0x32feb1){return db['SugarcrmConfiguration'][_0x3685('0x43')]({'where':{'id':_0x5d7d13[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x32feb1,null))[_0x3685('0x23')](removeEntity(_0x32feb1,null))['catch'](handleError(_0x32feb1,null));};exports[_0x3685('0x45')]=function(_0x8ed443,_0x1ab0aa,_0x124437){var _0x5b1cd7={};var _0x439da0={};var _0x57d556;var _0x326b0d;return db['SugarcrmConfiguration'][_0x3685('0x46')]({'where':{'id':_0x8ed443['params']['id']}})['then'](handleEntityNotFound(_0x1ab0aa,null))[_0x3685('0x23')](function(_0x1b8d83){if(_0x1b8d83){_0x57d556=_0x1b8d83;_0x439da0['model']=_[_0x3685('0x2d')](db[_0x3685('0x47')][_0x3685('0x48')]);_0x439da0[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x8ed443[_0x3685('0x2c')]);_0x439da0['filters']=_[_0x3685('0x2f')](_0x439da0['model'],_0x439da0[_0x3685('0x2c')]);_0x5b1cd7[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x439da0[_0x3685('0x30')],qs[_0x3685('0x32')](_0x8ed443['query'][_0x3685('0x32')]));_0x5b1cd7[_0x3685('0x31')]=_0x5b1cd7[_0x3685('0x31')][_0x3685('0x3f')]?_0x5b1cd7[_0x3685('0x31')]:_0x439da0[_0x3685('0x30')];_0x5b1cd7[_0x3685('0x33')]=qs['sort'](_0x8ed443['query']['sort']);_0x5b1cd7[_0x3685('0x35')]=qs['filters'](_[_0x3685('0x36')](_0x8ed443[_0x3685('0x2c')],_0x439da0['filters']));if(_0x8ed443[_0x3685('0x2c')]['filter']){_0x5b1cd7[_0x3685('0x35')]=_['merge'](_0x5b1cd7[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x5b1cd7[_0x3685('0x31')],function(_0xa300fc){var _0x4fded4={};_0x4fded4[_0xa300fc]={'$like':'%'+_0x8ed443[_0x3685('0x2c')][_0x3685('0x37')]+'%'};return _0x4fded4;})});}_0x5b1cd7=_[_0x3685('0x38')]({},_0x5b1cd7,_0x8ed443[_0x3685('0x3b')]);return _0x57d556[_0x3685('0x45')](_0x5b1cd7);}})[_0x3685('0x23')](function(_0x5f5a6e){if(_0x5f5a6e){_0x326b0d=_0x5f5a6e[_0x3685('0x3f')];if(!_0x8ed443[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x5b1cd7[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x8ed443[_0x3685('0x2c')][_0x3685('0x1c')]);_0x5b1cd7[_0x3685('0x1a')]=qs[_0x3685('0x1a')](_0x8ed443[_0x3685('0x2c')][_0x3685('0x1a')]);}return _0x57d556['getFields'](_0x5b1cd7);}})[_0x3685('0x23')](function(_0x3ceb04){if(_0x3ceb04){return _0x3ceb04?{'count':_0x326b0d,'rows':_0x3ceb04}:null;}})[_0x3685('0x23')](respondWithResult(_0x1ab0aa,null))[_0x3685('0x40')](handleError(_0x1ab0aa,null));};exports[_0x3685('0x4b')]=function(_0x2e7a20,_0x33a620,_0x5cc845){var _0x1011c8={};var _0x188d0f={};var _0x13fae3;var _0x5bb4d2;return db['SugarcrmConfiguration'][_0x3685('0x46')]({'where':{'id':_0x2e7a20[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0x33a620,null))['then'](function(_0x5a6f7c){if(_0x5a6f7c){_0x13fae3=_0x5a6f7c;_0x188d0f['model']=_[_0x3685('0x2d')](db[_0x3685('0x47')]['rawAttributes']);_0x188d0f[_0x3685('0x2c')]=_['keys'](_0x2e7a20[_0x3685('0x2c')]);_0x188d0f[_0x3685('0x2e')]=_['intersection'](_0x188d0f[_0x3685('0x30')],_0x188d0f[_0x3685('0x2c')]);_0x1011c8[_0x3685('0x31')]=_['intersection'](_0x188d0f[_0x3685('0x30')],qs[_0x3685('0x32')](_0x2e7a20[_0x3685('0x2c')]['fields']));_0x1011c8[_0x3685('0x31')]=_0x1011c8[_0x3685('0x31')]['length']?_0x1011c8['attributes']:_0x188d0f[_0x3685('0x30')];_0x1011c8[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x2e7a20[_0x3685('0x2c')]['sort']);_0x1011c8[_0x3685('0x35')]=qs[_0x3685('0x2e')](_[_0x3685('0x36')](_0x2e7a20[_0x3685('0x2c')],_0x188d0f[_0x3685('0x2e')]));if(_0x2e7a20['query'][_0x3685('0x37')]){_0x1011c8[_0x3685('0x35')]=_['merge'](_0x1011c8[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x1011c8[_0x3685('0x31')],function(_0x2a23f4){var _0x5db012={};_0x5db012[_0x2a23f4]={'$like':'%'+_0x2e7a20[_0x3685('0x2c')][_0x3685('0x37')]+'%'};return _0x5db012;})});}_0x1011c8=_[_0x3685('0x38')]({},_0x1011c8,_0x2e7a20[_0x3685('0x3b')]);return _0x13fae3['getSubjects'](_0x1011c8);}})[_0x3685('0x23')](function(_0x95a09){if(_0x95a09){_0x5bb4d2=_0x95a09[_0x3685('0x3f')];if(!_0x2e7a20[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x1011c8[_0x3685('0x1c')]=qs[_0x3685('0x1c')](_0x2e7a20[_0x3685('0x2c')][_0x3685('0x1c')]);_0x1011c8['offset']=qs[_0x3685('0x1a')](_0x2e7a20['query'][_0x3685('0x1a')]);}return _0x13fae3[_0x3685('0x4b')](_0x1011c8);}})[_0x3685('0x23')](function(_0x452eb2){if(_0x452eb2){return _0x452eb2?{'count':_0x5bb4d2,'rows':_0x452eb2}:null;}})[_0x3685('0x23')](respondWithResult(_0x33a620,null))[_0x3685('0x40')](handleError(_0x33a620,null));};exports[_0x3685('0x4c')]=function(_0x158dd1,_0xda8eb8,_0x205eaf){var _0x37bf0a={};var _0x40b2f2={};var _0x4be16c;var _0x386a36;return db[_0x3685('0x2a')][_0x3685('0x46')]({'where':{'id':_0x158dd1[_0x3685('0x44')]['id']}})[_0x3685('0x23')](handleEntityNotFound(_0xda8eb8,null))['then'](function(_0x36fef8){if(_0x36fef8){_0x4be16c=_0x36fef8;_0x40b2f2[_0x3685('0x30')]=_[_0x3685('0x2d')](db[_0x3685('0x47')]['rawAttributes']);_0x40b2f2[_0x3685('0x2c')]=_[_0x3685('0x2d')](_0x158dd1[_0x3685('0x2c')]);_0x40b2f2[_0x3685('0x2e')]=_[_0x3685('0x2f')](_0x40b2f2[_0x3685('0x30')],_0x40b2f2[_0x3685('0x2c')]);_0x37bf0a[_0x3685('0x31')]=_[_0x3685('0x2f')](_0x40b2f2[_0x3685('0x30')],qs[_0x3685('0x32')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x32')]));_0x37bf0a[_0x3685('0x31')]=_0x37bf0a[_0x3685('0x31')]['length']?_0x37bf0a[_0x3685('0x31')]:_0x40b2f2[_0x3685('0x30')];_0x37bf0a[_0x3685('0x33')]=qs[_0x3685('0x34')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x34')]);_0x37bf0a['where']=qs[_0x3685('0x2e')](_['pick'](_0x158dd1[_0x3685('0x2c')],_0x40b2f2[_0x3685('0x2e')]));if(_0x158dd1[_0x3685('0x2c')]['filter']){_0x37bf0a[_0x3685('0x35')]=_['merge'](_0x37bf0a[_0x3685('0x35')],{'$or':_[_0x3685('0x29')](_0x37bf0a[_0x3685('0x31')],function(_0x4e743c){var _0x4b0311={};_0x4b0311[_0x4e743c]={'$like':'%'+_0x158dd1['query'][_0x3685('0x37')]+'%'};return _0x4b0311;})});}_0x37bf0a=_[_0x3685('0x38')]({},_0x37bf0a,_0x158dd1[_0x3685('0x3b')]);return _0x4be16c[_0x3685('0x4c')](_0x37bf0a);}})['then'](function(_0x145985){if(_0x145985){_0x386a36=_0x145985[_0x3685('0x3f')];if(!_0x158dd1[_0x3685('0x2c')][_0x3685('0x49')](_0x3685('0x4a'))){_0x37bf0a['limit']=qs[_0x3685('0x1c')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x1c')]);_0x37bf0a[_0x3685('0x1a')]=qs[_0x3685('0x1a')](_0x158dd1[_0x3685('0x2c')][_0x3685('0x1a')]);}return _0x4be16c[_0x3685('0x4c')](_0x37bf0a);}})[_0x3685('0x23')](function(_0x12d8fd){if(_0x12d8fd){return _0x12d8fd?{'count':_0x386a36,'rows':_0x12d8fd}:null;}})[_0x3685('0x23')](respondWithResult(_0xda8eb8,null))[_0x3685('0x40')](handleError(_0xda8eb8,null));};
\ No newline at end of file
index d05b6db..67e69ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x596b=['exports','SugarcrmConfiguration','int_sugarcrm_configurations','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./intSugarcrmConfiguration.attributes'];(function(_0x2b2c5e,_0x5b4f51){var _0xbeff1e=function(_0x2e0034){while(--_0x2e0034){_0x2b2c5e['push'](_0x2b2c5e['shift']());}};_0xbeff1e(++_0x5b4f51);}(_0x596b,0xd4));var _0xb596=function(_0x3a47b3,_0x182e59){_0x3a47b3=_0x3a47b3-0x0;var _0x551551=_0x596b[_0x3a47b3];return _0x551551;};'use strict';var _=require('lodash');var util=require(_0xb596('0x0'));var logger=require(_0xb596('0x1'))(_0xb596('0x2'));var moment=require(_0xb596('0x3'));var BPromise=require('bluebird');var rp=require(_0xb596('0x4'));var fs=require('fs');var path=require(_0xb596('0x5'));var rimraf=require('rimraf');var config=require(_0xb596('0x6'));var attributes=require(_0xb596('0x7'));module[_0xb596('0x8')]=function(_0x336706,_0x1e7fa6){return _0x336706['define'](_0xb596('0x9'),attributes,{'tableName':_0xb596('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3718=['path','rimraf','../../config/environment','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','util','moment','bluebird','request-promise'];(function(_0xf20acc,_0x3503e4){var _0x32fe32=function(_0x40c86d){while(--_0x40c86d){_0xf20acc['push'](_0xf20acc['shift']());}};_0x32fe32(++_0x3503e4);}(_0x3718,0x14d));var _0x8371=function(_0x53eeaf,_0x1aadae){_0x53eeaf=_0x53eeaf-0x0;var _0x201b44=_0x3718[_0x53eeaf];return _0x201b44;};'use strict';var _=require(_0x8371('0x0'));var util=require(_0x8371('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x8371('0x2'));var BPromise=require(_0x8371('0x3'));var rp=require(_0x8371('0x4'));var fs=require('fs');var path=require(_0x8371('0x5'));var rimraf=require(_0x8371('0x6'));var config=require(_0x8371('0x7'));var attributes=require(_0x8371('0x8'));module[_0x8371('0x9')]=function(_0x57f9c5,_0x285be6){return _0x57f9c5[_0x8371('0xa')](_0x8371('0xb'),attributes,{'tableName':_0x8371('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f588138..c1c65c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x037a=['request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3492ad,_0x58c7bb){var _0x503562=function(_0x4d26f5){while(--_0x4d26f5){_0x3492ad['push'](_0x3492ad['shift']());}};_0x503562(++_0x58c7bb);}(_0x037a,0x8f));var _0xa037=function(_0x1bf29f,_0x114ad4){_0x1bf29f=_0x1bf29f-0x0;var _0x234c5e=_0x037a[_0x1bf29f];return _0x234c5e;};'use strict';var _=require(_0xa037('0x0'));var util=require(_0xa037('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa037('0x2'));var db=require(_0xa037('0x3'))['db'];var utils=require(_0xa037('0x4'));var logger=require(_0xa037('0x5'))(_0xa037('0x6'));var config=require(_0xa037('0x7'));var jayson=require(_0xa037('0x8'));var client=jayson[_0xa037('0x9')][_0xa037('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x472de9,_0x7c1a00,_0x112094){return new BPromise(function(_0x56c614,_0x27259e){return client[_0xa037('0xb')](_0x472de9,_0x112094)[_0xa037('0xc')](function(_0x59432b){logger[_0xa037('0xd')](_0xa037('0xe'),_0x7c1a00,_0xa037('0xf'));logger[_0xa037('0x10')]('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x7c1a00,_0xa037('0xf'),JSON[_0xa037('0x11')](_0x59432b));if(_0x59432b['error']){if(_0x59432b[_0xa037('0x12')]['code']===0x1f4){logger[_0xa037('0x12')](_0xa037('0xe'),_0x7c1a00,_0x59432b[_0xa037('0x12')][_0xa037('0x13')]);return _0x27259e(_0x59432b[_0xa037('0x12')]['message']);}logger[_0xa037('0x12')](_0xa037('0xe'),_0x7c1a00,_0x59432b[_0xa037('0x12')][_0xa037('0x13')]);return _0x56c614(_0x59432b[_0xa037('0x12')]['message']);}else{logger[_0xa037('0xd')](_0xa037('0xe'),_0x7c1a00,_0xa037('0xf'));_0x56c614(_0x59432b[_0xa037('0x14')][_0xa037('0x13')]);}})[_0xa037('0x15')](function(_0x9d642b){logger[_0xa037('0x12')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x7c1a00,_0x9d642b);_0x27259e(_0x9d642b);});});}
\ No newline at end of file
+var _0xb0c5=['rpc','jayson/promise','client','http','request','then','SugarcrmConfiguration,\x20%s,\x20%s','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0xd8132d,_0x391385){var _0x13a720=function(_0x2f887b){while(--_0x2f887b){_0xd8132d['push'](_0xd8132d['shift']());}};_0x13a720(++_0x391385);}(_0xb0c5,0x10d));var _0x5b0c=function(_0x5db2f4,_0x2157d7){_0x5db2f4=_0x5db2f4-0x0;var _0x529d9c=_0xb0c5[_0x5db2f4];return _0x529d9c;};'use strict';var _=require(_0x5b0c('0x0'));var util=require(_0x5b0c('0x1'));var moment=require(_0x5b0c('0x2'));var BPromise=require(_0x5b0c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5b0c('0x4'));var db=require(_0x5b0c('0x5'))['db'];var utils=require(_0x5b0c('0x6'));var logger=require('../../config/logger')(_0x5b0c('0x7'));var config=require('../../config/environment');var jayson=require(_0x5b0c('0x8'));var client=jayson[_0x5b0c('0x9')][_0x5b0c('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x479f32,_0x182193,_0xc1f234){return new BPromise(function(_0x5b01d5,_0x27b159){return client[_0x5b0c('0xb')](_0x479f32,_0xc1f234)[_0x5b0c('0xc')](function(_0x255741){logger['info'](_0x5b0c('0xd'),_0x182193,'request\x20sent');logger[_0x5b0c('0xe')](_0x5b0c('0xf'),_0x182193,_0x5b0c('0x10'),JSON[_0x5b0c('0x11')](_0x255741));if(_0x255741[_0x5b0c('0x12')]){if(_0x255741[_0x5b0c('0x12')][_0x5b0c('0x13')]===0x1f4){logger[_0x5b0c('0x12')](_0x5b0c('0xd'),_0x182193,_0x255741[_0x5b0c('0x12')][_0x5b0c('0x14')]);return _0x27b159(_0x255741['error'][_0x5b0c('0x14')]);}logger[_0x5b0c('0x12')](_0x5b0c('0xd'),_0x182193,_0x255741['error'][_0x5b0c('0x14')]);return _0x5b01d5(_0x255741[_0x5b0c('0x12')][_0x5b0c('0x14')]);}else{logger[_0x5b0c('0x15')](_0x5b0c('0xd'),_0x182193,_0x5b0c('0x10'));_0x5b01d5(_0x255741[_0x5b0c('0x16')]['message']);}})['catch'](function(_0x3b4263){logger['error']('SugarcrmConfiguration,\x20%s,\x20%s',_0x182193,_0x3b4263);_0x27b159(_0x3b4263);});});}
\ No newline at end of file
index 8fb687d..5efa079 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4685=['../../components/interaction/service','../../config/environment','./intSugarcrmField.controller','get','isAuthenticated','index','/:id','show','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xecbf7a,_0x41cd6f){var _0x42feda=function(_0x2da0d1){while(--_0x2da0d1){_0xecbf7a['push'](_0xecbf7a['shift']());}};_0x42feda(++_0x41cd6f);}(_0x4685,0xdf));var _0x5468=function(_0x1105be,_0x11cd14){_0x1105be=_0x1105be-0x0;var _0x59db74=_0x4685[_0x1105be];return _0x59db74;};'use strict';var multer=require(_0x5468('0x0'));var util=require(_0x5468('0x1'));var path=require(_0x5468('0x2'));var timeout=require(_0x5468('0x3'));var express=require(_0x5468('0x4'));var router=express[_0x5468('0x5')]();var fs_extra=require(_0x5468('0x6'));var auth=require(_0x5468('0x7'));var interaction=require(_0x5468('0x8'));var config=require(_0x5468('0x9'));var controller=require(_0x5468('0xa'));router[_0x5468('0xb')]('/',auth[_0x5468('0xc')](),controller[_0x5468('0xd')]);router[_0x5468('0xb')](_0x5468('0xe'),auth[_0x5468('0xc')](),controller[_0x5468('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x5468('0x10')](_0x5468('0xe'),auth['isAuthenticated'](),controller[_0x5468('0x11')]);router[_0x5468('0x12')](_0x5468('0xe'),auth[_0x5468('0xc')](),controller[_0x5468('0x13')]);module[_0x5468('0x14')]=router;
\ No newline at end of file
+var _0xbe78=['util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','exports'];(function(_0x29dcbe,_0x425602){var _0x2aed65=function(_0x518ac0){while(--_0x518ac0){_0x29dcbe['push'](_0x29dcbe['shift']());}};_0x2aed65(++_0x425602);}(_0xbe78,0x168));var _0x8be7=function(_0x29c37f,_0x32bb1d){_0x29c37f=_0x29c37f-0x0;var _0x3c2495=_0xbe78[_0x29c37f];return _0x3c2495;};'use strict';var multer=require('multer');var util=require(_0x8be7('0x0'));var path=require(_0x8be7('0x1'));var timeout=require(_0x8be7('0x2'));var express=require('express');var router=express[_0x8be7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x8be7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x8be7('0x5'));var controller=require('./intSugarcrmField.controller');router[_0x8be7('0x6')]('/',auth['isAuthenticated'](),controller[_0x8be7('0x7')]);router[_0x8be7('0x6')](_0x8be7('0x8'),auth[_0x8be7('0x9')](),controller[_0x8be7('0xa')]);router[_0x8be7('0xb')]('/',auth[_0x8be7('0x9')](),controller[_0x8be7('0xc')]);router[_0x8be7('0xd')](_0x8be7('0x8'),auth[_0x8be7('0x9')](),controller['update']);router['delete'](_0x8be7('0x8'),auth['isAuthenticated'](),controller['destroy']);module[_0x8be7('0xe')]=router;
\ No newline at end of file
index f20a130..75d0b89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e06=['variable','customVariable','STRING','BOOLEAN','string'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x8e06,0x11c));var _0x68e0=function(_0x3921a4,_0x2be82c){_0x3921a4=_0x3921a4-0x0;var _0x79fe81=_0x8e06[_0x3921a4];return _0x79fe81;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x68e0('0x0'),_0x68e0('0x1'),_0x68e0('0x2'),'keyValue','picklist'),'defaultValue':_0x68e0('0x0')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x68e0('0x3')]},'keyType':{'type':Sequelize['ENUM'](_0x68e0('0x0'),'variable','customVariable')},'keyContent':{'type':Sequelize[_0x68e0('0x3')]},'idField':{'type':Sequelize[_0x68e0('0x3')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x68e0('0x4')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x9012=['STRING','BOOLEAN','exports','ENUM','string','variable','customVariable','keyValue','picklist'];(function(_0x8d913d,_0x1f5c31){var _0x22359d=function(_0x5b1c4d){while(--_0x5b1c4d){_0x8d913d['push'](_0x8d913d['shift']());}};_0x22359d(++_0x1f5c31);}(_0x9012,0x1b2));var _0x2901=function(_0x4fa0ea,_0x2cd534){_0x4fa0ea=_0x4fa0ea-0x0;var _0x51d027=_0x9012[_0x4fa0ea];return _0x51d027;};'use strict';var Sequelize=require('sequelize');module[_0x2901('0x0')]={'type':{'type':Sequelize[_0x2901('0x1')](_0x2901('0x2'),_0x2901('0x3'),_0x2901('0x4'),_0x2901('0x5'),_0x2901('0x6')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x2901('0x7')]},'keyType':{'type':Sequelize[_0x2901('0x1')](_0x2901('0x2'),_0x2901('0x3'),_0x2901('0x4'))},'keyContent':{'type':Sequelize[_0x2901('0x7')]},'idField':{'type':Sequelize[_0x2901('0x7')]},'nameField':{'type':Sequelize[_0x2901('0x7')]},'customField':{'type':Sequelize[_0x2901('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x2901('0x7')]}};
\ No newline at end of file
index 9a13a3c..bafc542 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3695=['crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SugarcrmField','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','options','includeAll','include','rows','show','params','rawAttributes','merge','create','catch','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x4d5227,_0x355eb6){var _0x4b40e8=function(_0x298dad){while(--_0x298dad){_0x4d5227['push'](_0x4d5227['shift']());}};_0x4b40e8(++_0x355eb6);}(_0x3695,0x92));var _0x5369=function(_0x47307d,_0x4bd71c){_0x47307d=_0x47307d-0x0;var _0x555f6f=_0x3695[_0x47307d];return _0x555f6f;};'use strict';var emlformat=require(_0x5369('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x5369('0x1'));var jsonpatch=require(_0x5369('0x2'));var rp=require(_0x5369('0x3'));var moment=require(_0x5369('0x4'));var BPromise=require(_0x5369('0x5'));var Mustache=require(_0x5369('0x6'));var util=require(_0x5369('0x7'));var path=require(_0x5369('0x8'));var sox=require('sox');var csv=require(_0x5369('0x9'));var ejs=require(_0x5369('0xa'));var fs=require('fs');var fs_extra=require(_0x5369('0xb'));var _=require(_0x5369('0xc'));var squel=require(_0x5369('0xd'));var crypto=require(_0x5369('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x5369('0xf'));var toCsv=require(_0x5369('0x9'));var querystring=require('querystring');var Papa=require(_0x5369('0x10'));var Redis=require(_0x5369('0x11'));var authService=require(_0x5369('0x12'));var qs=require(_0x5369('0x13'));var as=require(_0x5369('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5369('0x15'))(_0x5369('0x16'));var utils=require(_0x5369('0x17'));var config=require(_0x5369('0x18'));var licenseUtil=require(_0x5369('0x19'));var db=require(_0x5369('0x1a'))['db'];function respondWithStatusCode(_0xf51572,_0x1505b2){_0x1505b2=_0x1505b2||0xcc;return function(_0x9f62e4){if(_0x9f62e4){return _0xf51572[_0x5369('0x1b')](_0x1505b2);}return _0xf51572['status'](_0x1505b2)[_0x5369('0x1c')]();};}function respondWithResult(_0x4426cb,_0x34b04c){_0x34b04c=_0x34b04c||0xc8;return function(_0x271f12){if(_0x271f12){return _0x4426cb[_0x5369('0x1d')](_0x34b04c)[_0x5369('0x1e')](_0x271f12);}};}function respondWithFilteredResult(_0x4c132b,_0x21786d){return function(_0x10d727){if(_0x10d727){var _0xd6c86b=typeof _0x21786d[_0x5369('0x1f')]===_0x5369('0x20')&&typeof _0x21786d[_0x5369('0x21')]==='undefined';var _0x102ef3=_0x10d727[_0x5369('0x22')];var _0x218dcd=_0xd6c86b?0x0:_0x21786d[_0x5369('0x1f')];var _0x9737e6=_0xd6c86b?_0x10d727['count']:_0x21786d[_0x5369('0x1f')]+_0x21786d[_0x5369('0x21')];var _0x31f6f0;if(_0x9737e6>=_0x102ef3){_0x9737e6=_0x102ef3;_0x31f6f0=0xc8;}else{_0x31f6f0=0xce;}_0x4c132b[_0x5369('0x1d')](_0x31f6f0);return _0x4c132b[_0x5369('0x23')](_0x5369('0x24'),_0x218dcd+'-'+_0x9737e6+'/'+_0x102ef3)[_0x5369('0x1e')](_0x10d727);}return null;};}function patchUpdates(_0x37385a){return function(_0x391876){try{jsonpatch[_0x5369('0x25')](_0x391876,_0x37385a,!![]);}catch(_0x8a5da4){return BPromise[_0x5369('0x26')](_0x8a5da4);}return _0x391876[_0x5369('0x27')]();};}function saveUpdates(_0x30f9de,_0x5a0d8c){return function(_0x562ec6){if(_0x562ec6){return _0x562ec6[_0x5369('0x28')](_0x30f9de)[_0x5369('0x29')](function(_0x53214b){return _0x53214b;});}return null;};}function removeEntity(_0x58d7d2,_0x46cad9){return function(_0x2ce380){if(_0x2ce380){return _0x2ce380[_0x5369('0x2a')]()[_0x5369('0x29')](function(){_0x58d7d2['status'](0xcc)[_0x5369('0x1c')]();});}};}function handleEntityNotFound(_0x3bfb00,_0x310595){return function(_0x2ef2b4){if(!_0x2ef2b4){_0x3bfb00[_0x5369('0x1b')](0x194);}return _0x2ef2b4;};}function handleError(_0x28855c,_0x43df9a){_0x43df9a=_0x43df9a||0x1f4;return function(_0x590407){logger[_0x5369('0x2b')](_0x590407[_0x5369('0x2c')]);if(_0x590407[_0x5369('0x2d')]){delete _0x590407['name'];}_0x28855c[_0x5369('0x1d')](_0x43df9a)[_0x5369('0x2e')](_0x590407);};}exports[_0x5369('0x2f')]=function(_0x54a6b7,_0x254350){var _0x30c88a={},_0xc23442={},_0xe1b263={'count':0x0,'rows':[]};var _0x1f0ad9=_[_0x5369('0x30')](db[_0x5369('0x31')]['rawAttributes'],function(_0x10bddc){return{'name':_0x10bddc[_0x5369('0x32')],'type':_0x10bddc['type']['key']};});_0xc23442[_0x5369('0x33')]=_['map'](_0x1f0ad9,_0x5369('0x2d'));_0xc23442[_0x5369('0x34')]=_[_0x5369('0x35')](_0x54a6b7[_0x5369('0x34')]);_0xc23442[_0x5369('0x36')]=_[_0x5369('0x37')](_0xc23442[_0x5369('0x33')],_0xc23442[_0x5369('0x34')]);_0x30c88a[_0x5369('0x38')]=_['intersection'](_0xc23442['model'],qs['fields'](_0x54a6b7[_0x5369('0x34')][_0x5369('0x39')]));_0x30c88a[_0x5369('0x38')]=_0x30c88a[_0x5369('0x38')][_0x5369('0x3a')]?_0x30c88a['attributes']:_0xc23442[_0x5369('0x33')];if(!_0x54a6b7[_0x5369('0x34')][_0x5369('0x3b')](_0x5369('0x3c'))){_0x30c88a['limit']=qs[_0x5369('0x21')](_0x54a6b7['query'][_0x5369('0x21')]);_0x30c88a[_0x5369('0x1f')]=qs[_0x5369('0x1f')](_0x54a6b7[_0x5369('0x34')][_0x5369('0x1f')]);}_0x30c88a[_0x5369('0x3d')]=qs[_0x5369('0x3e')](_0x54a6b7[_0x5369('0x34')][_0x5369('0x3e')]);_0x30c88a['where']=qs[_0x5369('0x36')](_[_0x5369('0x3f')](_0x54a6b7[_0x5369('0x34')],_0xc23442[_0x5369('0x36')]),_0x1f0ad9);if(_0x54a6b7[_0x5369('0x34')][_0x5369('0x40')]){_0x30c88a[_0x5369('0x41')]=_['merge'](_0x30c88a[_0x5369('0x41')],{'$or':_[_0x5369('0x30')](_0x1f0ad9,function(_0x578651){if(_0x578651[_0x5369('0x42')]!==_0x5369('0x43')){var _0x5ad5c4={};_0x5ad5c4[_0x578651['name']]={'$like':'%'+_0x54a6b7[_0x5369('0x34')][_0x5369('0x40')]+'%'};return _0x5ad5c4;}})});}_0x30c88a=_['merge']({},_0x30c88a,_0x54a6b7[_0x5369('0x44')]);var _0x4f5b49={'where':_0x30c88a[_0x5369('0x41')]};return db[_0x5369('0x31')][_0x5369('0x22')](_0x4f5b49)[_0x5369('0x29')](function(_0x5dbc29){_0xe1b263[_0x5369('0x22')]=_0x5dbc29;if(_0x54a6b7['query'][_0x5369('0x45')]){_0x30c88a[_0x5369('0x46')]=[{'all':!![]}];}return db['SugarcrmField']['findAll'](_0x30c88a);})[_0x5369('0x29')](function(_0x48be4b){_0xe1b263[_0x5369('0x47')]=_0x48be4b;return _0xe1b263;})[_0x5369('0x29')](respondWithFilteredResult(_0x254350,_0x30c88a))['catch'](handleError(_0x254350,null));};exports[_0x5369('0x48')]=function(_0x583d1e,_0x1c8303){var _0x56108e={'raw':!![],'where':{'id':_0x583d1e[_0x5369('0x49')]['id']}},_0x2d4e32={};_0x2d4e32['model']=_['keys'](db[_0x5369('0x31')][_0x5369('0x4a')]);_0x2d4e32['query']=_[_0x5369('0x35')](_0x583d1e[_0x5369('0x34')]);_0x2d4e32['filters']=_['intersection'](_0x2d4e32['model'],_0x2d4e32[_0x5369('0x34')]);_0x56108e[_0x5369('0x38')]=_[_0x5369('0x37')](_0x2d4e32['model'],qs[_0x5369('0x39')](_0x583d1e['query'][_0x5369('0x39')]));_0x56108e[_0x5369('0x38')]=_0x56108e['attributes'][_0x5369('0x3a')]?_0x56108e[_0x5369('0x38')]:_0x2d4e32[_0x5369('0x33')];if(_0x583d1e[_0x5369('0x34')]['includeAll']){_0x56108e[_0x5369('0x46')]=[{'all':!![]}];}_0x56108e=_[_0x5369('0x4b')]({},_0x56108e,_0x583d1e[_0x5369('0x44')]);return db[_0x5369('0x31')]['find'](_0x56108e)[_0x5369('0x29')](handleEntityNotFound(_0x1c8303,null))[_0x5369('0x29')](respondWithResult(_0x1c8303,null))['catch'](handleError(_0x1c8303,null));};exports['create']=function(_0x20cfc0,_0x205b90){return db['SugarcrmField'][_0x5369('0x4c')](_0x20cfc0['body'],{})[_0x5369('0x29')](respondWithResult(_0x205b90,0xc9))[_0x5369('0x4d')](handleError(_0x205b90,null));};exports[_0x5369('0x28')]=function(_0x1b66ca,_0x2466a5){if(_0x1b66ca['body']['id']){delete _0x1b66ca[_0x5369('0x4e')]['id'];}return db[_0x5369('0x31')][_0x5369('0x4f')]({'where':{'id':_0x1b66ca[_0x5369('0x49')]['id']}})['then'](handleEntityNotFound(_0x2466a5,null))[_0x5369('0x29')](saveUpdates(_0x1b66ca[_0x5369('0x4e')],null))[_0x5369('0x29')](respondWithResult(_0x2466a5,null))[_0x5369('0x4d')](handleError(_0x2466a5,null));};exports[_0x5369('0x2a')]=function(_0x350ca8,_0x26500f){return db['SugarcrmField'][_0x5369('0x4f')]({'where':{'id':_0x350ca8['params']['id']}})[_0x5369('0x29')](handleEntityNotFound(_0x26500f,null))[_0x5369('0x29')](removeEntity(_0x26500f,null))[_0x5369('0x4d')](handleError(_0x26500f,null));};
\ No newline at end of file
+var _0x2fd7=['fast-json-patch','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','name','send','index','SugarcrmField','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','keys','length','find','create','body','update','params','eml-format','zip-dir'];(function(_0x3880ad,_0x141fda){var _0xed4f7=function(_0x5a71fb){while(--_0x5a71fb){_0x3880ad['push'](_0x3880ad['shift']());}};_0xed4f7(++_0x141fda);}(_0x2fd7,0x11a));var _0x72fd=function(_0x3c8e3e,_0x1734ec){_0x3c8e3e=_0x3c8e3e-0x0;var _0x574b4e=_0x2fd7[_0x3c8e3e];return _0x574b4e;};'use strict';var emlformat=require(_0x72fd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x72fd('0x1'));var jsonpatch=require(_0x72fd('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x72fd('0x3'));var sox=require(_0x72fd('0x4'));var csv=require(_0x72fd('0x5'));var ejs=require(_0x72fd('0x6'));var fs=require('fs');var fs_extra=require(_0x72fd('0x7'));var _=require(_0x72fd('0x8'));var squel=require(_0x72fd('0x9'));var crypto=require(_0x72fd('0xa'));var jsforce=require(_0x72fd('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x72fd('0xc'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x72fd('0xd'));var qs=require(_0x72fd('0xe'));var as=require(_0x72fd('0xf'));var hardwareService=require(_0x72fd('0x10'));var logger=require(_0x72fd('0x11'))('api');var utils=require(_0x72fd('0x12'));var config=require(_0x72fd('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x72fd('0x14'))['db'];function respondWithStatusCode(_0x4d6e5e,_0x5170a9){_0x5170a9=_0x5170a9||0xcc;return function(_0x3f717e){if(_0x3f717e){return _0x4d6e5e[_0x72fd('0x15')](_0x5170a9);}return _0x4d6e5e[_0x72fd('0x16')](_0x5170a9)[_0x72fd('0x17')]();};}function respondWithResult(_0x4706d6,_0x492a85){_0x492a85=_0x492a85||0xc8;return function(_0x307d2e){if(_0x307d2e){return _0x4706d6[_0x72fd('0x16')](_0x492a85)[_0x72fd('0x18')](_0x307d2e);}};}function respondWithFilteredResult(_0x40357f,_0x149b7c){return function(_0x25b8fc){if(_0x25b8fc){var _0x2f3505=typeof _0x149b7c[_0x72fd('0x19')]===_0x72fd('0x1a')&&typeof _0x149b7c[_0x72fd('0x1b')]===_0x72fd('0x1a');var _0x4fe8ee=_0x25b8fc[_0x72fd('0x1c')];var _0x4a9661=_0x2f3505?0x0:_0x149b7c[_0x72fd('0x19')];var _0x4b7c52=_0x2f3505?_0x25b8fc[_0x72fd('0x1c')]:_0x149b7c[_0x72fd('0x19')]+_0x149b7c[_0x72fd('0x1b')];var _0x2c9ea8;if(_0x4b7c52>=_0x4fe8ee){_0x4b7c52=_0x4fe8ee;_0x2c9ea8=0xc8;}else{_0x2c9ea8=0xce;}_0x40357f[_0x72fd('0x16')](_0x2c9ea8);return _0x40357f[_0x72fd('0x1d')]('Content-Range',_0x4a9661+'-'+_0x4b7c52+'/'+_0x4fe8ee)[_0x72fd('0x18')](_0x25b8fc);}return null;};}function patchUpdates(_0x37b562){return function(_0x3a72db){try{jsonpatch[_0x72fd('0x1e')](_0x3a72db,_0x37b562,!![]);}catch(_0x35a23c){return BPromise[_0x72fd('0x1f')](_0x35a23c);}return _0x3a72db[_0x72fd('0x20')]();};}function saveUpdates(_0x3b8e15,_0x2f76d1){return function(_0x11c4fd){if(_0x11c4fd){return _0x11c4fd['update'](_0x3b8e15)[_0x72fd('0x21')](function(_0x2098ee){return _0x2098ee;});}return null;};}function removeEntity(_0x44c386,_0x22a134){return function(_0x627241){if(_0x627241){return _0x627241[_0x72fd('0x22')]()[_0x72fd('0x21')](function(){_0x44c386[_0x72fd('0x16')](0xcc)[_0x72fd('0x17')]();});}};}function handleEntityNotFound(_0x15f914,_0x1c8274){return function(_0x2094eb){if(!_0x2094eb){_0x15f914[_0x72fd('0x15')](0x194);}return _0x2094eb;};}function handleError(_0x471db9,_0x3ed002){_0x3ed002=_0x3ed002||0x1f4;return function(_0x34106b){logger[_0x72fd('0x23')](_0x34106b['stack']);if(_0x34106b[_0x72fd('0x24')]){delete _0x34106b[_0x72fd('0x24')];}_0x471db9['status'](_0x3ed002)[_0x72fd('0x25')](_0x34106b);};}exports[_0x72fd('0x26')]=function(_0x37d512,_0x37b1ba){var _0x5ebd22={},_0x3d8206={},_0x2401b2={'count':0x0,'rows':[]};var _0x95588a=_['map'](db[_0x72fd('0x27')][_0x72fd('0x28')],function(_0x46a2dc){return{'name':_0x46a2dc[_0x72fd('0x29')],'type':_0x46a2dc[_0x72fd('0x2a')]['key']};});_0x3d8206['model']=_[_0x72fd('0x2b')](_0x95588a,_0x72fd('0x24'));_0x3d8206[_0x72fd('0x2c')]=_['keys'](_0x37d512[_0x72fd('0x2c')]);_0x3d8206[_0x72fd('0x2d')]=_[_0x72fd('0x2e')](_0x3d8206[_0x72fd('0x2f')],_0x3d8206[_0x72fd('0x2c')]);_0x5ebd22[_0x72fd('0x30')]=_[_0x72fd('0x2e')](_0x3d8206[_0x72fd('0x2f')],qs[_0x72fd('0x31')](_0x37d512[_0x72fd('0x2c')]['fields']));_0x5ebd22[_0x72fd('0x30')]=_0x5ebd22[_0x72fd('0x30')]['length']?_0x5ebd22[_0x72fd('0x30')]:_0x3d8206[_0x72fd('0x2f')];if(!_0x37d512[_0x72fd('0x2c')][_0x72fd('0x32')](_0x72fd('0x33'))){_0x5ebd22['limit']=qs[_0x72fd('0x1b')](_0x37d512[_0x72fd('0x2c')]['limit']);_0x5ebd22[_0x72fd('0x19')]=qs['offset'](_0x37d512[_0x72fd('0x2c')]['offset']);}_0x5ebd22[_0x72fd('0x34')]=qs[_0x72fd('0x35')](_0x37d512[_0x72fd('0x2c')]['sort']);_0x5ebd22[_0x72fd('0x36')]=qs['filters'](_['pick'](_0x37d512['query'],_0x3d8206['filters']),_0x95588a);if(_0x37d512[_0x72fd('0x2c')][_0x72fd('0x37')]){_0x5ebd22[_0x72fd('0x36')]=_[_0x72fd('0x38')](_0x5ebd22[_0x72fd('0x36')],{'$or':_[_0x72fd('0x2b')](_0x95588a,function(_0x409bf8){if(_0x409bf8[_0x72fd('0x2a')]!==_0x72fd('0x39')){var _0x1a5bf8={};_0x1a5bf8[_0x409bf8['name']]={'$like':'%'+_0x37d512[_0x72fd('0x2c')][_0x72fd('0x37')]+'%'};return _0x1a5bf8;}})});}_0x5ebd22=_['merge']({},_0x5ebd22,_0x37d512[_0x72fd('0x3a')]);var _0x4441d9={'where':_0x5ebd22[_0x72fd('0x36')]};return db['SugarcrmField'][_0x72fd('0x1c')](_0x4441d9)[_0x72fd('0x21')](function(_0xd62f1e){_0x2401b2[_0x72fd('0x1c')]=_0xd62f1e;if(_0x37d512['query'][_0x72fd('0x3b')]){_0x5ebd22[_0x72fd('0x3c')]=[{'all':!![]}];}return db['SugarcrmField']['findAll'](_0x5ebd22);})[_0x72fd('0x21')](function(_0x1a7ad8){_0x2401b2[_0x72fd('0x3d')]=_0x1a7ad8;return _0x2401b2;})['then'](respondWithFilteredResult(_0x37b1ba,_0x5ebd22))[_0x72fd('0x3e')](handleError(_0x37b1ba,null));};exports[_0x72fd('0x3f')]=function(_0x52e4b7,_0x1fd708){var _0x31c830={'raw':!![],'where':{'id':_0x52e4b7['params']['id']}},_0x335347={};_0x335347['model']=_[_0x72fd('0x40')](db[_0x72fd('0x27')][_0x72fd('0x28')]);_0x335347[_0x72fd('0x2c')]=_['keys'](_0x52e4b7[_0x72fd('0x2c')]);_0x335347[_0x72fd('0x2d')]=_[_0x72fd('0x2e')](_0x335347[_0x72fd('0x2f')],_0x335347[_0x72fd('0x2c')]);_0x31c830[_0x72fd('0x30')]=_[_0x72fd('0x2e')](_0x335347['model'],qs[_0x72fd('0x31')](_0x52e4b7[_0x72fd('0x2c')][_0x72fd('0x31')]));_0x31c830[_0x72fd('0x30')]=_0x31c830[_0x72fd('0x30')][_0x72fd('0x41')]?_0x31c830[_0x72fd('0x30')]:_0x335347[_0x72fd('0x2f')];if(_0x52e4b7[_0x72fd('0x2c')][_0x72fd('0x3b')]){_0x31c830[_0x72fd('0x3c')]=[{'all':!![]}];}_0x31c830=_['merge']({},_0x31c830,_0x52e4b7[_0x72fd('0x3a')]);return db['SugarcrmField'][_0x72fd('0x42')](_0x31c830)[_0x72fd('0x21')](handleEntityNotFound(_0x1fd708,null))[_0x72fd('0x21')](respondWithResult(_0x1fd708,null))[_0x72fd('0x3e')](handleError(_0x1fd708,null));};exports[_0x72fd('0x43')]=function(_0x158b6c,_0x493ffa){return db['SugarcrmField']['create'](_0x158b6c[_0x72fd('0x44')],{})[_0x72fd('0x21')](respondWithResult(_0x493ffa,0xc9))[_0x72fd('0x3e')](handleError(_0x493ffa,null));};exports[_0x72fd('0x45')]=function(_0x248589,_0x48c644){if(_0x248589[_0x72fd('0x44')]['id']){delete _0x248589[_0x72fd('0x44')]['id'];}return db[_0x72fd('0x27')][_0x72fd('0x42')]({'where':{'id':_0x248589[_0x72fd('0x46')]['id']}})[_0x72fd('0x21')](handleEntityNotFound(_0x48c644,null))[_0x72fd('0x21')](saveUpdates(_0x248589[_0x72fd('0x44')],null))[_0x72fd('0x21')](respondWithResult(_0x48c644,null))[_0x72fd('0x3e')](handleError(_0x48c644,null));};exports[_0x72fd('0x22')]=function(_0x406ff8,_0x260d37){return db[_0x72fd('0x27')][_0x72fd('0x42')]({'where':{'id':_0x406ff8[_0x72fd('0x46')]['id']}})['then'](handleEntityNotFound(_0x260d37,null))[_0x72fd('0x21')](removeEntity(_0x260d37,null))[_0x72fd('0x3e')](handleError(_0x260d37,null));};
\ No newline at end of file
index 617edb6..714df10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85f4=['util','../../config/logger','moment','path','rimraf','./intSugarcrmField.attributes','exports','define','SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash'];(function(_0xc694f3,_0x4a5a35){var _0x32f671=function(_0x19003a){while(--_0x19003a){_0xc694f3['push'](_0xc694f3['shift']());}};_0x32f671(++_0x4a5a35);}(_0x85f4,0x133));var _0x485f=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0x85f4[_0x56482c];return _0x5aae7a;};'use strict';var _=require(_0x485f('0x0'));var util=require(_0x485f('0x1'));var logger=require(_0x485f('0x2'))('api');var moment=require(_0x485f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x485f('0x4'));var rimraf=require(_0x485f('0x5'));var config=require('../../config/environment');var attributes=require(_0x485f('0x6'));module[_0x485f('0x7')]=function(_0x41bfe3,_0x165555){return _0x41bfe3[_0x485f('0x8')](_0x485f('0x9'),attributes,{'tableName':_0x485f('0xa'),'paranoid':![],'indexes':[{'name':_0x485f('0xb'),'fields':[_0x485f('0xc'),_0x485f('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x239d=['SugarcrmField','int_sugarcrm_fields','sugarcrm_unique_index','idField','FieldId','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define'];(function(_0x122fee,_0x42134b){var _0x2a6c58=function(_0x2b511a){while(--_0x2b511a){_0x122fee['push'](_0x122fee['shift']());}};_0x2a6c58(++_0x42134b);}(_0x239d,0x1e5));var _0xd239=function(_0x2fa81f,_0x497703){_0x2fa81f=_0x2fa81f-0x0;var _0x58c755=_0x239d[_0x2fa81f];return _0x58c755;};'use strict';var _=require(_0xd239('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xd239('0x1'));var moment=require(_0xd239('0x2'));var BPromise=require(_0xd239('0x3'));var rp=require(_0xd239('0x4'));var fs=require('fs');var path=require(_0xd239('0x5'));var rimraf=require(_0xd239('0x6'));var config=require(_0xd239('0x7'));var attributes=require(_0xd239('0x8'));module[_0xd239('0x9')]=function(_0x3d846f,_0x46704c){return _0x3d846f[_0xd239('0xa')](_0xd239('0xb'),attributes,{'tableName':_0xd239('0xc'),'paranoid':![],'indexes':[{'name':_0xd239('0xd'),'fields':[_0xd239('0xe'),_0xd239('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index bc78083..1ae1b1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3546=['../../mysqldb','../../config/utils','rpc','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0xb874a2,_0x4eaad7){var _0x4cae28=function(_0x5644aa){while(--_0x5644aa){_0xb874a2['push'](_0xb874a2['shift']());}};_0x4cae28(++_0x4eaad7);}(_0x3546,0x1ea));var _0x6354=function(_0x1e48d3,_0x5d8c43){_0x1e48d3=_0x1e48d3-0x0;var _0x2852b1=_0x3546[_0x1e48d3];return _0x2852b1;};'use strict';var _=require(_0x6354('0x0'));var util=require('util');var moment=require(_0x6354('0x1'));var BPromise=require(_0x6354('0x2'));var rs=require(_0x6354('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6354('0x4'))['db'];var utils=require(_0x6354('0x5'));var logger=require('../../config/logger')(_0x6354('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x670d12,_0x49d4cc,_0x1f67c5){return new BPromise(function(_0x76ca4e,_0x5f743d){return client[_0x6354('0x7')](_0x670d12,_0x1f67c5)[_0x6354('0x8')](function(_0x938db2){logger[_0x6354('0x9')](_0x6354('0xa'),_0x49d4cc,_0x6354('0xb'));logger['debug'](_0x6354('0xc'),_0x49d4cc,'request\x20sent',JSON[_0x6354('0xd')](_0x938db2));if(_0x938db2['error']){if(_0x938db2[_0x6354('0xe')][_0x6354('0xf')]===0x1f4){logger[_0x6354('0xe')](_0x6354('0xa'),_0x49d4cc,_0x938db2[_0x6354('0xe')][_0x6354('0x10')]);return _0x5f743d(_0x938db2[_0x6354('0xe')]['message']);}logger[_0x6354('0xe')]('SugarcrmField,\x20%s,\x20%s',_0x49d4cc,_0x938db2[_0x6354('0xe')][_0x6354('0x10')]);return _0x76ca4e(_0x938db2[_0x6354('0xe')][_0x6354('0x10')]);}else{logger[_0x6354('0x9')]('SugarcrmField,\x20%s,\x20%s',_0x49d4cc,_0x6354('0xb'));_0x76ca4e(_0x938db2[_0x6354('0x11')][_0x6354('0x10')]);}})[_0x6354('0x12')](function(_0x38b355){logger['error'](_0x6354('0xa'),_0x49d4cc,_0x38b355);_0x5f743d(_0x38b355);});});}
\ No newline at end of file
+var _0x8054=['debug','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SugarcrmField,\x20%s,\x20%s'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8054,0x1c0));var _0x4805=function(_0x40e2d4,_0x55b5a8){_0x40e2d4=_0x40e2d4-0x0;var _0x204346=_0x8054[_0x40e2d4];return _0x204346;};'use strict';var _=require(_0x4805('0x0'));var util=require(_0x4805('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x4805('0x2'));var fs=require('fs');var Redis=require(_0x4805('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4805('0x4'));var logger=require(_0x4805('0x5'))(_0x4805('0x6'));var config=require(_0x4805('0x7'));var jayson=require(_0x4805('0x8'));var client=jayson[_0x4805('0x9')][_0x4805('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x55b8db,_0x1f0a1b,_0x357235){return new BPromise(function(_0x508ea3,_0x3d2cfa){return client['request'](_0x55b8db,_0x357235)[_0x4805('0xb')](function(_0x38a0ae){logger[_0x4805('0xc')](_0x4805('0xd'),_0x1f0a1b,'request\x20sent');logger[_0x4805('0xe')](_0x4805('0xf'),_0x1f0a1b,'request\x20sent',JSON[_0x4805('0x10')](_0x38a0ae));if(_0x38a0ae[_0x4805('0x11')]){if(_0x38a0ae['error'][_0x4805('0x12')]===0x1f4){logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);return _0x3d2cfa(_0x38a0ae['error'][_0x4805('0x13')]);}logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);return _0x508ea3(_0x38a0ae[_0x4805('0x11')][_0x4805('0x13')]);}else{logger[_0x4805('0xc')](_0x4805('0xd'),_0x1f0a1b,'request\x20sent');_0x508ea3(_0x38a0ae[_0x4805('0x14')][_0x4805('0x13')]);}})[_0x4805('0x15')](function(_0x2921cb){logger[_0x4805('0x11')](_0x4805('0xd'),_0x1f0a1b,_0x2921cb);_0x3d2cfa(_0x2921cb);});});}
\ No newline at end of file
index 7b247a3..f0cbbbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf296=['exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intVtigerAccount.controller','get','index','isAuthenticated','show','/:id/configurations','getConfigurations','getFields','create','addConfiguration','/:id','update','delete','destroy'];(function(_0x2f07ec,_0x22fa5d){var _0x488796=function(_0x3859d9){while(--_0x3859d9){_0x2f07ec['push'](_0x2f07ec['shift']());}};_0x488796(++_0x22fa5d);}(_0xf296,0x94));var _0x6f29=function(_0x4cdbc8,_0x4d8e1d){_0x4cdbc8=_0x4cdbc8-0x0;var _0x311448=_0xf296[_0x4cdbc8];return _0x311448;};'use strict';var multer=require(_0x6f29('0x0'));var util=require(_0x6f29('0x1'));var path=require('path');var timeout=require(_0x6f29('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x6f29('0x3'));var auth=require(_0x6f29('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6f29('0x5'));var controller=require(_0x6f29('0x6'));router[_0x6f29('0x7')]('/',auth['isAuthenticated'](),controller[_0x6f29('0x8')]);router[_0x6f29('0x7')]('/:id',auth[_0x6f29('0x9')](),controller[_0x6f29('0xa')]);router[_0x6f29('0x7')](_0x6f29('0xb'),auth[_0x6f29('0x9')](),controller[_0x6f29('0xc')]);router[_0x6f29('0x7')]('/:id/fields',auth['isAuthenticated'](),controller[_0x6f29('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6f29('0xe')]);router['post'](_0x6f29('0xb'),auth[_0x6f29('0x9')](),controller[_0x6f29('0xf')]);router['put'](_0x6f29('0x10'),auth[_0x6f29('0x9')](),controller[_0x6f29('0x11')]);router[_0x6f29('0x12')](_0x6f29('0x10'),auth['isAuthenticated'](),controller[_0x6f29('0x13')]);module[_0x6f29('0x14')]=router;
\ No newline at end of file
+var _0x9d3e=['show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','/:id','isAuthenticated'];(function(_0x2e9f25,_0x297e94){var _0x262d37=function(_0x2d6eff){while(--_0x2d6eff){_0x2e9f25['push'](_0x2e9f25['shift']());}};_0x262d37(++_0x297e94);}(_0x9d3e,0xd5));var _0xe9d3=function(_0x39118c,_0x1a03ed){_0x39118c=_0x39118c-0x0;var _0x2be2b0=_0x9d3e[_0x39118c];return _0x2be2b0;};'use strict';var multer=require(_0xe9d3('0x0'));var util=require('util');var path=require(_0xe9d3('0x1'));var timeout=require('connect-timeout');var express=require(_0xe9d3('0x2'));var router=express[_0xe9d3('0x3')]();var fs_extra=require(_0xe9d3('0x4'));var auth=require(_0xe9d3('0x5'));var interaction=require(_0xe9d3('0x6'));var config=require(_0xe9d3('0x7'));var controller=require(_0xe9d3('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0xe9d3('0x9')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xc')]);router[_0xe9d3('0x9')](_0xe9d3('0xd'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0xe')]);router[_0xe9d3('0x9')](_0xe9d3('0xf'),auth['isAuthenticated'](),controller[_0xe9d3('0x10')]);router['post']('/',auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x11')]);router[_0xe9d3('0x12')](_0xe9d3('0xd'),auth['isAuthenticated'](),controller[_0xe9d3('0x13')]);router[_0xe9d3('0x14')](_0xe9d3('0xa'),auth['isAuthenticated'](),controller[_0xe9d3('0x15')]);router[_0xe9d3('0x16')](_0xe9d3('0xa'),auth[_0xe9d3('0xb')](),controller[_0xe9d3('0x17')]);module[_0xe9d3('0x18')]=router;
\ No newline at end of file
index 992353c..647bb86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ec6=['STRING','HelpDesk','sequelize','exports'];(function(_0x334d8c,_0xfe847d){var _0x5e4902=function(_0x4b0e77){while(--_0x4b0e77){_0x334d8c['push'](_0x334d8c['shift']());}};_0x5e4902(++_0xfe847d);}(_0x8ec6,0x18e));var _0x68ec=function(_0x40aea0,_0x54b5e5){_0x40aea0=_0x40aea0-0x0;var _0x5f4432=_0x8ec6[_0x40aea0];return _0x5f4432;};'use strict';var Sequelize=require(_0x68ec('0x0'));module[_0x68ec('0x1')]={'name':{'type':Sequelize[_0x68ec('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x68ec('0x2')]},'username':{'type':Sequelize[_0x68ec('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x68ec('0x2')],'allowNull':![],'defaultValue':_0x68ec('0x3')},'remoteUri':{'type':Sequelize[_0x68ec('0x2')],'allowNull':![]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'accessKey':{'type':Sequelize[_0x68ec('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x091f=['exports','STRING','HelpDesk','sequelize'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0x091f,0x14f));var _0xf091=function(_0x254761,_0x550307){_0x254761=_0x254761-0x0;var _0x4236de=_0x091f[_0x254761];return _0x4236de;};'use strict';var Sequelize=require(_0xf091('0x0'));module[_0xf091('0x1')]={'name':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf091('0x2')]},'username':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'moduleName':{'type':Sequelize[_0xf091('0x2')],'allowNull':![],'defaultValue':_0xf091('0x3')},'remoteUri':{'type':Sequelize['STRING'],'allowNull':![]},'serverUrl':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]},'accessKey':{'type':Sequelize[_0xf091('0x2')],'allowNull':![]}};
\ No newline at end of file
index 44c6588..2772f49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x139c=['startsWith','cf_','picklist','picklistValues','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','getFields','stringify','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','apply','reject','save','destroy','error','stack','name','send','index','VtigerAccount','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','then','includeAll','include','rows','catch','show','params','options','find','create','body','getConfigurations','findOne','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','VtigerField','md5','moduleName','remoteUri','serverUrl','accessKey','username','slice','substring','lastIndexOf','format','%s/webservice.php','getchallenge','login','result','token','GET','describe','success','autogenerated','reference','owner','remove','label'];(function(_0x24db39,_0x268284){var _0x38dad8=function(_0x316c21){while(--_0x316c21){_0x24db39['push'](_0x24db39['shift']());}};_0x38dad8(++_0x268284);}(_0x139c,0x1eb));var _0xc139=function(_0x4dc11e,_0x39159e){_0x4dc11e=_0x4dc11e-0x0;var _0x9f0390=_0x139c[_0x4dc11e];return _0x9f0390;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc139('0x0'));var zipdir=require(_0xc139('0x1'));var jsonpatch=require(_0xc139('0x2'));var rp=require('request-promise');var moment=require(_0xc139('0x3'));var BPromise=require(_0xc139('0x4'));var Mustache=require(_0xc139('0x5'));var util=require(_0xc139('0x6'));var path=require(_0xc139('0x7'));var sox=require(_0xc139('0x8'));var csv=require(_0xc139('0x9'));var ejs=require(_0xc139('0xa'));var fs=require('fs');var fs_extra=require(_0xc139('0xb'));var _=require(_0xc139('0xc'));var squel=require(_0xc139('0xd'));var crypto=require(_0xc139('0xe'));var jsforce=require(_0xc139('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc139('0x9'));var querystring=require(_0xc139('0x10'));var Papa=require(_0xc139('0x11'));var Redis=require(_0xc139('0x12'));var authService=require(_0xc139('0x13'));var qs=require(_0xc139('0x14'));var as=require(_0xc139('0x15'));var hardwareService=require(_0xc139('0x16'));var logger=require(_0xc139('0x17'))(_0xc139('0x18'));var utils=require(_0xc139('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xc139('0x1a'));var db=require(_0xc139('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0xd945e,_0x57c29a){_0x57c29a=_0x57c29a||0xcc;return function(_0x192392){if(_0x192392){return _0xd945e[_0xc139('0x1c')](_0x57c29a);}return _0xd945e['status'](_0x57c29a)[_0xc139('0x1d')]();};}function respondWithResult(_0x4cbaa2,_0x100e9c){_0x100e9c=_0x100e9c||0xc8;return function(_0x88a3d6){if(_0x88a3d6){return _0x4cbaa2[_0xc139('0x1e')](_0x100e9c)['json'](_0x88a3d6);}};}function respondWithFilteredResult(_0x1f8108,_0x56b6bd){return function(_0x7ae1b4){if(_0x7ae1b4){var _0x4d6bc2=typeof _0x56b6bd[_0xc139('0x1f')]===_0xc139('0x20')&&typeof _0x56b6bd[_0xc139('0x21')]===_0xc139('0x20');var _0x368047=_0x7ae1b4[_0xc139('0x22')];var _0x104f39=_0x4d6bc2?0x0:_0x56b6bd[_0xc139('0x1f')];var _0x4c84a6=_0x4d6bc2?_0x7ae1b4[_0xc139('0x22')]:_0x56b6bd['offset']+_0x56b6bd[_0xc139('0x21')];var _0xd4ad54;if(_0x4c84a6>=_0x368047){_0x4c84a6=_0x368047;_0xd4ad54=0xc8;}else{_0xd4ad54=0xce;}_0x1f8108['status'](_0xd4ad54);return _0x1f8108[_0xc139('0x23')]('Content-Range',_0x104f39+'-'+_0x4c84a6+'/'+_0x368047)['json'](_0x7ae1b4);}return null;};}function patchUpdates(_0xa587b1){return function(_0x1a9c04){try{jsonpatch[_0xc139('0x24')](_0x1a9c04,_0xa587b1,!![]);}catch(_0x11fffc){return BPromise[_0xc139('0x25')](_0x11fffc);}return _0x1a9c04[_0xc139('0x26')]();};}function saveUpdates(_0x293505,_0x32da0e){return function(_0xcc9a64){if(_0xcc9a64){return _0xcc9a64['update'](_0x293505)['then'](function(_0xce3e38){return _0xce3e38;});}return null;};}function removeEntity(_0x2c5ee6,_0x208461){return function(_0x40b12a){if(_0x40b12a){return _0x40b12a[_0xc139('0x27')]()['then'](function(){_0x2c5ee6[_0xc139('0x1e')](0xcc)[_0xc139('0x1d')]();});}};}function handleEntityNotFound(_0x2c6621,_0x405fac){return function(_0x3b7ee9){if(!_0x3b7ee9){_0x2c6621[_0xc139('0x1c')](0x194);}return _0x3b7ee9;};}function handleError(_0x3bfdf6,_0x5fb4b9){_0x5fb4b9=_0x5fb4b9||0x1f4;return function(_0x4a7145){logger[_0xc139('0x28')](_0x4a7145[_0xc139('0x29')]);if(_0x4a7145[_0xc139('0x2a')]){delete _0x4a7145[_0xc139('0x2a')];}_0x3bfdf6[_0xc139('0x1e')](_0x5fb4b9)[_0xc139('0x2b')](_0x4a7145);};}exports[_0xc139('0x2c')]=function(_0x5a0434,_0x518a6e){var _0x1578f4={},_0x55ff9a={},_0x3047a5={'count':0x0,'rows':[]};var _0xf7769f=_['map'](db[_0xc139('0x2d')][_0xc139('0x2e')],function(_0x11b646){return{'name':_0x11b646[_0xc139('0x2f')],'type':_0x11b646[_0xc139('0x30')][_0xc139('0x31')]};});_0x55ff9a[_0xc139('0x32')]=_[_0xc139('0x33')](_0xf7769f,_0xc139('0x2a'));_0x55ff9a[_0xc139('0x34')]=_[_0xc139('0x35')](_0x5a0434[_0xc139('0x34')]);_0x55ff9a[_0xc139('0x36')]=_[_0xc139('0x37')](_0x55ff9a[_0xc139('0x32')],_0x55ff9a[_0xc139('0x34')]);_0x1578f4[_0xc139('0x38')]=_['intersection'](_0x55ff9a[_0xc139('0x32')],qs[_0xc139('0x39')](_0x5a0434[_0xc139('0x34')][_0xc139('0x39')]));_0x1578f4[_0xc139('0x38')]=_0x1578f4['attributes'][_0xc139('0x3a')]?_0x1578f4[_0xc139('0x38')]:_0x55ff9a[_0xc139('0x32')];if(!_0x5a0434['query'][_0xc139('0x3b')]('nolimit')){_0x1578f4['limit']=qs[_0xc139('0x21')](_0x5a0434[_0xc139('0x34')][_0xc139('0x21')]);_0x1578f4['offset']=qs[_0xc139('0x1f')](_0x5a0434['query'][_0xc139('0x1f')]);}_0x1578f4[_0xc139('0x3c')]=qs[_0xc139('0x3d')](_0x5a0434[_0xc139('0x34')][_0xc139('0x3d')]);_0x1578f4[_0xc139('0x3e')]=qs[_0xc139('0x36')](_[_0xc139('0x3f')](_0x5a0434[_0xc139('0x34')],_0x55ff9a['filters']),_0xf7769f);if(_0x5a0434[_0xc139('0x34')][_0xc139('0x40')]){_0x1578f4[_0xc139('0x3e')]=_['merge'](_0x1578f4[_0xc139('0x3e')],{'$or':_[_0xc139('0x33')](_0xf7769f,function(_0x357d5c){if(_0x357d5c[_0xc139('0x30')]!==_0xc139('0x41')){var _0x304bfd={};_0x304bfd[_0x357d5c[_0xc139('0x2a')]]={'$like':'%'+_0x5a0434['query']['filter']+'%'};return _0x304bfd;}})});}_0x1578f4=_[_0xc139('0x42')]({},_0x1578f4,_0x5a0434['options']);var _0x2751bf={'where':_0x1578f4[_0xc139('0x3e')]};return db['VtigerAccount'][_0xc139('0x22')](_0x2751bf)[_0xc139('0x43')](function(_0x290c02){_0x3047a5['count']=_0x290c02;if(_0x5a0434[_0xc139('0x34')][_0xc139('0x44')]){_0x1578f4[_0xc139('0x45')]=[{'all':!![]}];}return db[_0xc139('0x2d')]['findAll'](_0x1578f4);})['then'](function(_0x396500){_0x3047a5[_0xc139('0x46')]=_0x396500;return _0x3047a5;})[_0xc139('0x43')](respondWithFilteredResult(_0x518a6e,_0x1578f4))[_0xc139('0x47')](handleError(_0x518a6e,null));};exports[_0xc139('0x48')]=function(_0x49d3ca,_0x43bcc2){var _0x421bd5={'raw':![],'where':{'id':_0x49d3ca[_0xc139('0x49')]['id']}},_0x36600e={};_0x36600e[_0xc139('0x32')]=_['keys'](db[_0xc139('0x2d')][_0xc139('0x2e')]);_0x36600e['query']=_[_0xc139('0x35')](_0x49d3ca['query']);_0x36600e[_0xc139('0x36')]=_[_0xc139('0x37')](_0x36600e['model'],_0x36600e[_0xc139('0x34')]);_0x421bd5['attributes']=_['intersection'](_0x36600e[_0xc139('0x32')],qs[_0xc139('0x39')](_0x49d3ca[_0xc139('0x34')][_0xc139('0x39')]));_0x421bd5[_0xc139('0x38')]=_0x421bd5[_0xc139('0x38')]['length']?_0x421bd5[_0xc139('0x38')]:_0x36600e[_0xc139('0x32')];if(_0x49d3ca['query'][_0xc139('0x44')]){_0x421bd5['include']=[{'all':!![]}];}_0x421bd5=_[_0xc139('0x42')]({},_0x421bd5,_0x49d3ca[_0xc139('0x4a')]);return db[_0xc139('0x2d')][_0xc139('0x4b')](_0x421bd5)[_0xc139('0x43')](handleEntityNotFound(_0x43bcc2,null))[_0xc139('0x43')](respondWithResult(_0x43bcc2,null))[_0xc139('0x47')](handleError(_0x43bcc2,null));};exports[_0xc139('0x4c')]=function(_0x145334,_0x1e6c75){return db[_0xc139('0x2d')][_0xc139('0x4c')](_0x145334[_0xc139('0x4d')],{})['then'](respondWithResult(_0x1e6c75,0xc9))[_0xc139('0x47')](handleError(_0x1e6c75,null));};exports['update']=function(_0x392322,_0xc0d10b){if(_0x392322[_0xc139('0x4d')]['id']){delete _0x392322[_0xc139('0x4d')]['id'];}return db[_0xc139('0x2d')][_0xc139('0x4b')]({'where':{'id':_0x392322['params']['id']}})[_0xc139('0x43')](handleEntityNotFound(_0xc0d10b,null))['then'](saveUpdates(_0x392322[_0xc139('0x4d')],null))[_0xc139('0x43')](respondWithResult(_0xc0d10b,null))['catch'](handleError(_0xc0d10b,null));};exports[_0xc139('0x27')]=function(_0x5e745a,_0x2ed339){return db[_0xc139('0x2d')][_0xc139('0x4b')]({'where':{'id':_0x5e745a[_0xc139('0x49')]['id']}})[_0xc139('0x43')](handleEntityNotFound(_0x2ed339,null))[_0xc139('0x43')](removeEntity(_0x2ed339,null))[_0xc139('0x47')](handleError(_0x2ed339,null));};exports[_0xc139('0x4e')]=function(_0x2a2865,_0x2b5bc7,_0x5822f4){var _0x392986={};var _0x560aac={};var _0x446e4c;var _0x236e2f;return db[_0xc139('0x2d')][_0xc139('0x4f')]({'where':{'id':_0x2a2865[_0xc139('0x49')]['id']}})[_0xc139('0x43')](handleEntityNotFound(_0x2b5bc7,null))[_0xc139('0x43')](function(_0x4aaf84){if(_0x4aaf84){_0x446e4c=_0x4aaf84;_0x560aac[_0xc139('0x32')]=_[_0xc139('0x35')](db['VtigerConfiguration'][_0xc139('0x2e')]);_0x560aac['query']=_[_0xc139('0x35')](_0x2a2865[_0xc139('0x34')]);_0x560aac[_0xc139('0x36')]=_[_0xc139('0x37')](_0x560aac['model'],_0x560aac['query']);_0x392986[_0xc139('0x38')]=_['intersection'](_0x560aac[_0xc139('0x32')],qs[_0xc139('0x39')](_0x2a2865[_0xc139('0x34')]['fields']));_0x392986['attributes']=_0x392986['attributes'][_0xc139('0x3a')]?_0x392986['attributes']:_0x560aac['model'];_0x392986['order']=qs[_0xc139('0x3d')](_0x2a2865['query'][_0xc139('0x3d')]);_0x392986[_0xc139('0x3e')]=qs[_0xc139('0x36')](_['pick'](_0x2a2865[_0xc139('0x34')],_0x560aac[_0xc139('0x36')]));if(_0x2a2865[_0xc139('0x34')][_0xc139('0x40')]){_0x392986[_0xc139('0x3e')]=_[_0xc139('0x42')](_0x392986[_0xc139('0x3e')],{'$or':_[_0xc139('0x33')](_0x392986[_0xc139('0x38')],function(_0x342289){var _0x25d3d2={};_0x25d3d2[_0x342289]={'$like':'%'+_0x2a2865[_0xc139('0x34')][_0xc139('0x40')]+'%'};return _0x25d3d2;})});}_0x392986=_[_0xc139('0x42')]({},_0x392986,_0x2a2865['options']);return _0x446e4c[_0xc139('0x4e')](_0x392986);}})[_0xc139('0x43')](function(_0x3bfa42){if(_0x3bfa42){_0x236e2f=_0x3bfa42[_0xc139('0x3a')];if(!_0x2a2865[_0xc139('0x34')][_0xc139('0x3b')]('nolimit')){_0x392986[_0xc139('0x21')]=qs[_0xc139('0x21')](_0x2a2865['query'][_0xc139('0x21')]);_0x392986[_0xc139('0x1f')]=qs['offset'](_0x2a2865[_0xc139('0x34')][_0xc139('0x1f')]);}return _0x446e4c[_0xc139('0x4e')](_0x392986);}})[_0xc139('0x43')](function(_0x1bbeb4){if(_0x1bbeb4){return _0x1bbeb4?{'count':_0x236e2f,'rows':_0x1bbeb4}:null;}})[_0xc139('0x43')](respondWithResult(_0x2b5bc7,null))['catch'](handleError(_0x2b5bc7,null));};exports[_0xc139('0x50')]=function(_0x5771c2,_0xe1e0c7,_0x49f742){if(_0x5771c2['body']['id']){delete _0x5771c2['body']['id'];}return db[_0xc139('0x2d')][_0xc139('0x4f')]({'where':{'id':_0x5771c2[_0xc139('0x49')]['id']}})[_0xc139('0x43')](handleEntityNotFound(_0xe1e0c7,null))[_0xc139('0x43')](function(_0x3da03f){if(_0x3da03f){_0x5771c2[_0xc139('0x4d')][_0xc139('0x51')]=_0x3da03f['id'];_0x5771c2[_0xc139('0x4d')][_0xc139('0x52')]=integrations[_0xc139('0x53')](_0x5771c2[_0xc139('0x4d')]['channel'],_0x5771c2[_0xc139('0x4d')][_0xc139('0x30')]);_0x5771c2[_0xc139('0x4d')][_0xc139('0x54')]=integrations['getDescriptions'](_0x5771c2[_0xc139('0x4d')]['channel'],_0x5771c2[_0xc139('0x4d')][_0xc139('0x30')]);return db['VtigerConfiguration']['create'](_0x5771c2[_0xc139('0x4d')],{'include':[{'model':db[_0xc139('0x55')],'as':_0xc139('0x52')},{'model':db[_0xc139('0x55')],'as':_0xc139('0x54')}]});}return null;})[_0xc139('0x43')](respondWithResult(_0xe1e0c7,null))[_0xc139('0x47')](handleError(_0xe1e0c7,null));};var md5=require(_0xc139('0x56'));exports['getFields']=function(_0x175395,_0x4ced8b,_0x49c15c){var _0x8431fb=null;var _0x1e1bdc=null;var _0x37f548=null;var _0x5d0474=null;var _0x4c8002='';return db[_0xc139('0x2d')][_0xc139('0x4f')]({'where':{'id':_0x175395[_0xc139('0x49')]['id']},'attributes':['id',_0xc139('0x2a'),'username','description',_0xc139('0x57'),_0xc139('0x58'),_0xc139('0x59'),_0xc139('0x5a')]})[_0xc139('0x43')](handleEntityNotFound(_0x4ced8b,null))[_0xc139('0x43')](function(_0x1e3e8b){if(_0x1e3e8b){_0x8431fb=_0x1e3e8b[_0xc139('0x5b')];_0x1e1bdc=_0x1e3e8b[_0xc139('0x5a')];_0x37f548=_0x1e3e8b[_0xc139('0x57')];_0x4c8002=_0x1e3e8b[_0xc139('0x58')];var _0x448054=_0x4c8002[_0xc139('0x5c')](-0x1);if(_0x448054==='/'){_0x4c8002=_0x4c8002[_0xc139('0x5d')](0x0,_0x4c8002[_0xc139('0x5e')](_0x448054));}_0x5d0474=util[_0xc139('0x5f')](_0xc139('0x60'),_0x4c8002);var _0x5fff76={'method':'GET','uri':_0x5d0474,'qs':{'operation':_0xc139('0x61'),'username':_0x1e3e8b[_0xc139('0x5b')]},'json':!![]};return rp(_0x5fff76);}})[_0xc139('0x43')](function(_0x442189){if(_0x442189['success']){var _0x5a366e={'method':'POST','uri':_0x5d0474,'form':{'operation':_0xc139('0x62'),'username':_0x8431fb,'accessKey':md5(_0x442189[_0xc139('0x63')][_0xc139('0x64')]+_0x1e1bdc)},'json':!![]};return rp(_0x5a366e);}})[_0xc139('0x43')](function(_0x34e586){if(_0x34e586['success']){var _0x2716b0={'method':_0xc139('0x65'),'uri':_0x5d0474,'qs':{'operation':_0xc139('0x66'),'username':_0x8431fb,'sessionName':_0x34e586[_0xc139('0x63')]['sessionName'],'elementType':_0x37f548},'json':!![]};return rp(_0x2716b0);}})[_0xc139('0x43')](function(_0x368481){if(_0x368481[_0xc139('0x67')]){var _0x3bc3e7=[_0xc139('0x68'),_0xc139('0x69'),_0xc139('0x6a')];_[_0xc139('0x6b')](_0x368481[_0xc139('0x63')][_0xc139('0x39')],function(_0x5adcf1){return _0x3bc3e7['includes'](_0x5adcf1[_0xc139('0x30')][_0xc139('0x2a')]);});_[_0xc139('0x6b')](_0x368481[_0xc139('0x63')][_0xc139('0x39')],function(_0x2b3262){return _0x2b3262['editable']==='false';});return{'count':_0x368481[_0xc139('0x63')][_0xc139('0x39')][_0xc139('0x3a')],'rows':_[_0xc139('0x33')](_0x368481['result'][_0xc139('0x39')],function(_0x1ffc67){return{'id':_0x1ffc67[_0xc139('0x2a')],'name':_0x1ffc67[_0xc139('0x6c')],'custom':_[_0xc139('0x6d')](_0x1ffc67[_0xc139('0x2a')],_0xc139('0x6e'))?!![]:![],'options':_0x1ffc67[_0xc139('0x30')][_0xc139('0x2a')]===_0xc139('0x6f')&&_0x1ffc67[_0xc139('0x30')]['picklistValues'][_0xc139('0x3a')]>0x0?_[_0xc139('0x33')](_0x1ffc67[_0xc139('0x30')][_0xc139('0x70')],function(_0x48720b){return{'name':_0x48720b[_0xc139('0x6c')],'value':_0x48720b['value']};}):[]};})};}})[_0xc139('0x43')](respondWithResult(_0x4ced8b,null))[_0xc139('0x47')](function(_0x54d61d){console['log'](_0xc139('0x71')+_0x54d61d);var _0x1c2e4b=_0x175395[_0xc139('0x34')][_0xc139('0x72')]?0x1f4:_0x54d61d[_0xc139('0x73')]||0x1f4;logger[_0xc139('0x28')](_0xc139('0x74'),_0xc139('0x75'),_0x1c2e4b,JSON[_0xc139('0x76')](_0x54d61d));delete _0x54d61d[_0xc139('0x2a')];if(_0x1c2e4b===0x191){_0x1c2e4b=0x190;}_0x4ced8b[_0xc139('0x1e')](_0x1c2e4b)[_0xc139('0x2b')](_0x175395[_0xc139('0x34')]['test']?{'message':_0xc139('0x77'),'statusCode':_0x54d61d[_0xc139('0x73')]}:_0x54d61d);});};
\ No newline at end of file
+var _0x6cf2=['cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','set','Content-Range','apply','reject','update','destroy','then','error','stack','name','send','index','map','VtigerAccount','rawAttributes','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','include','findAll','rows','catch','show','params','keys','create','body','find','getConfigurations','findOne','VtigerConfiguration','pick','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','VtigerField','md5','getFields','username','description','moduleName','remoteUri','serverUrl','accessKey','slice','lastIndexOf','format','%s/webservice.php','GET','getchallenge','success','POST','login','result','token','describe','sessionName','autogenerated','remove','includes','editable','false','label','startsWith'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x6cf2,0x87));var _0x26cf=function(_0x5a0f41,_0x3f931d){_0x5a0f41=_0x5a0f41-0x0;var _0x1cb1fb=_0x6cf2[_0x5a0f41];return _0x1cb1fb;};'use strict';var emlformat=require(_0x26cf('0x0'));var rimraf=require(_0x26cf('0x1'));var zipdir=require(_0x26cf('0x2'));var jsonpatch=require(_0x26cf('0x3'));var rp=require('request-promise');var moment=require(_0x26cf('0x4'));var BPromise=require(_0x26cf('0x5'));var Mustache=require(_0x26cf('0x6'));var util=require(_0x26cf('0x7'));var path=require(_0x26cf('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x26cf('0x9'));var fs=require('fs');var fs_extra=require(_0x26cf('0xa'));var _=require(_0x26cf('0xb'));var squel=require(_0x26cf('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x26cf('0xd'));var querystring=require('querystring');var Papa=require(_0x26cf('0xe'));var Redis=require(_0x26cf('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x26cf('0x10'));var as=require(_0x26cf('0x11'));var hardwareService=require(_0x26cf('0x12'));var logger=require(_0x26cf('0x13'))(_0x26cf('0x14'));var utils=require(_0x26cf('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x26cf('0x16'));var db=require(_0x26cf('0x17'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x3a5e19,_0x92d0af){_0x92d0af=_0x92d0af||0xcc;return function(_0x32d833){if(_0x32d833){return _0x3a5e19[_0x26cf('0x18')](_0x92d0af);}return _0x3a5e19[_0x26cf('0x19')](_0x92d0af)[_0x26cf('0x1a')]();};}function respondWithResult(_0x53a05d,_0x5b0aa9){_0x5b0aa9=_0x5b0aa9||0xc8;return function(_0x2af5fa){if(_0x2af5fa){return _0x53a05d[_0x26cf('0x19')](_0x5b0aa9)[_0x26cf('0x1b')](_0x2af5fa);}};}function respondWithFilteredResult(_0x1b0013,_0x17abfb){return function(_0x58cb46){if(_0x58cb46){var _0x5e4cd5=typeof _0x17abfb[_0x26cf('0x1c')]==='undefined'&&typeof _0x17abfb['limit']==='undefined';var _0x43b696=_0x58cb46['count'];var _0xe85efe=_0x5e4cd5?0x0:_0x17abfb[_0x26cf('0x1c')];var _0x15e7de=_0x5e4cd5?_0x58cb46['count']:_0x17abfb[_0x26cf('0x1c')]+_0x17abfb[_0x26cf('0x1d')];var _0x22261e;if(_0x15e7de>=_0x43b696){_0x15e7de=_0x43b696;_0x22261e=0xc8;}else{_0x22261e=0xce;}_0x1b0013[_0x26cf('0x19')](_0x22261e);return _0x1b0013[_0x26cf('0x1e')](_0x26cf('0x1f'),_0xe85efe+'-'+_0x15e7de+'/'+_0x43b696)[_0x26cf('0x1b')](_0x58cb46);}return null;};}function patchUpdates(_0x1fef7b){return function(_0x1eec11){try{jsonpatch[_0x26cf('0x20')](_0x1eec11,_0x1fef7b,!![]);}catch(_0x2b7361){return BPromise[_0x26cf('0x21')](_0x2b7361);}return _0x1eec11['save']();};}function saveUpdates(_0x383907,_0xa339d2){return function(_0x390014){if(_0x390014){return _0x390014[_0x26cf('0x22')](_0x383907)['then'](function(_0x415c72){return _0x415c72;});}return null;};}function removeEntity(_0x3d436d,_0x1f80df){return function(_0xfb93d0){if(_0xfb93d0){return _0xfb93d0[_0x26cf('0x23')]()[_0x26cf('0x24')](function(){_0x3d436d[_0x26cf('0x19')](0xcc)[_0x26cf('0x1a')]();});}};}function handleEntityNotFound(_0x3ceb11,_0x173038){return function(_0x331822){if(!_0x331822){_0x3ceb11[_0x26cf('0x18')](0x194);}return _0x331822;};}function handleError(_0x33bbfa,_0x3ec263){_0x3ec263=_0x3ec263||0x1f4;return function(_0x1f7cd7){logger[_0x26cf('0x25')](_0x1f7cd7[_0x26cf('0x26')]);if(_0x1f7cd7['name']){delete _0x1f7cd7[_0x26cf('0x27')];}_0x33bbfa[_0x26cf('0x19')](_0x3ec263)[_0x26cf('0x28')](_0x1f7cd7);};}exports[_0x26cf('0x29')]=function(_0x3fc316,_0x2ee506){var _0x5b3725={},_0x3931b6={},_0x51ad93={'count':0x0,'rows':[]};var _0x5aae29=_[_0x26cf('0x2a')](db[_0x26cf('0x2b')][_0x26cf('0x2c')],function(_0x389a6f){return{'name':_0x389a6f['fieldName'],'type':_0x389a6f[_0x26cf('0x2d')][_0x26cf('0x2e')]};});_0x3931b6['model']=_[_0x26cf('0x2a')](_0x5aae29,_0x26cf('0x27'));_0x3931b6[_0x26cf('0x2f')]=_['keys'](_0x3fc316[_0x26cf('0x2f')]);_0x3931b6[_0x26cf('0x30')]=_[_0x26cf('0x31')](_0x3931b6[_0x26cf('0x32')],_0x3931b6[_0x26cf('0x2f')]);_0x5b3725[_0x26cf('0x33')]=_['intersection'](_0x3931b6[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0x3fc316['query'][_0x26cf('0x34')]));_0x5b3725[_0x26cf('0x33')]=_0x5b3725[_0x26cf('0x33')][_0x26cf('0x35')]?_0x5b3725[_0x26cf('0x33')]:_0x3931b6[_0x26cf('0x32')];if(!_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x36')](_0x26cf('0x37'))){_0x5b3725['limit']=qs[_0x26cf('0x1d')](_0x3fc316['query'][_0x26cf('0x1d')]);_0x5b3725['offset']=qs[_0x26cf('0x1c')](_0x3fc316[_0x26cf('0x2f')]['offset']);}_0x5b3725[_0x26cf('0x38')]=qs[_0x26cf('0x39')](_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x39')]);_0x5b3725[_0x26cf('0x3a')]=qs[_0x26cf('0x30')](_['pick'](_0x3fc316[_0x26cf('0x2f')],_0x3931b6['filters']),_0x5aae29);if(_0x3fc316[_0x26cf('0x2f')][_0x26cf('0x3b')]){_0x5b3725[_0x26cf('0x3a')]=_[_0x26cf('0x3c')](_0x5b3725[_0x26cf('0x3a')],{'$or':_[_0x26cf('0x2a')](_0x5aae29,function(_0xce529){if(_0xce529[_0x26cf('0x2d')]!==_0x26cf('0x3d')){var _0x29eac8={};_0x29eac8[_0xce529['name']]={'$like':'%'+_0x3fc316[_0x26cf('0x2f')]['filter']+'%'};return _0x29eac8;}})});}_0x5b3725=_[_0x26cf('0x3c')]({},_0x5b3725,_0x3fc316[_0x26cf('0x3e')]);var _0x4fbdc5={'where':_0x5b3725['where']};return db[_0x26cf('0x2b')][_0x26cf('0x3f')](_0x4fbdc5)[_0x26cf('0x24')](function(_0x41ef41){_0x51ad93['count']=_0x41ef41;if(_0x3fc316[_0x26cf('0x2f')]['includeAll']){_0x5b3725[_0x26cf('0x40')]=[{'all':!![]}];}return db[_0x26cf('0x2b')][_0x26cf('0x41')](_0x5b3725);})[_0x26cf('0x24')](function(_0x173bd5){_0x51ad93[_0x26cf('0x42')]=_0x173bd5;return _0x51ad93;})[_0x26cf('0x24')](respondWithFilteredResult(_0x2ee506,_0x5b3725))[_0x26cf('0x43')](handleError(_0x2ee506,null));};exports[_0x26cf('0x44')]=function(_0x46298e,_0x1d4d77){var _0x101623={'raw':![],'where':{'id':_0x46298e[_0x26cf('0x45')]['id']}},_0x558863={};_0x558863['model']=_['keys'](db[_0x26cf('0x2b')][_0x26cf('0x2c')]);_0x558863[_0x26cf('0x2f')]=_[_0x26cf('0x46')](_0x46298e[_0x26cf('0x2f')]);_0x558863[_0x26cf('0x30')]=_[_0x26cf('0x31')](_0x558863[_0x26cf('0x32')],_0x558863['query']);_0x101623[_0x26cf('0x33')]=_[_0x26cf('0x31')](_0x558863[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0x46298e[_0x26cf('0x2f')][_0x26cf('0x34')]));_0x101623[_0x26cf('0x33')]=_0x101623['attributes'][_0x26cf('0x35')]?_0x101623[_0x26cf('0x33')]:_0x558863['model'];if(_0x46298e[_0x26cf('0x2f')]['includeAll']){_0x101623[_0x26cf('0x40')]=[{'all':!![]}];}_0x101623=_[_0x26cf('0x3c')]({},_0x101623,_0x46298e[_0x26cf('0x3e')]);return db[_0x26cf('0x2b')]['find'](_0x101623)[_0x26cf('0x24')](handleEntityNotFound(_0x1d4d77,null))[_0x26cf('0x24')](respondWithResult(_0x1d4d77,null))[_0x26cf('0x43')](handleError(_0x1d4d77,null));};exports[_0x26cf('0x47')]=function(_0x352731,_0x467ec0){return db[_0x26cf('0x2b')][_0x26cf('0x47')](_0x352731[_0x26cf('0x48')],{})[_0x26cf('0x24')](respondWithResult(_0x467ec0,0xc9))['catch'](handleError(_0x467ec0,null));};exports[_0x26cf('0x22')]=function(_0x5da6e8,_0x50ee63){if(_0x5da6e8[_0x26cf('0x48')]['id']){delete _0x5da6e8['body']['id'];}return db['VtigerAccount']['find']({'where':{'id':_0x5da6e8[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x50ee63,null))[_0x26cf('0x24')](saveUpdates(_0x5da6e8[_0x26cf('0x48')],null))[_0x26cf('0x24')](respondWithResult(_0x50ee63,null))[_0x26cf('0x43')](handleError(_0x50ee63,null));};exports[_0x26cf('0x23')]=function(_0x29c1ce,_0x149c85){return db['VtigerAccount'][_0x26cf('0x49')]({'where':{'id':_0x29c1ce[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x149c85,null))['then'](removeEntity(_0x149c85,null))[_0x26cf('0x43')](handleError(_0x149c85,null));};exports[_0x26cf('0x4a')]=function(_0xf31abf,_0x3082b9,_0x54b0e3){var _0x12c272={};var _0x407dce={};var _0x55bfcd;var _0x215dfc;return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0xf31abf[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x3082b9,null))[_0x26cf('0x24')](function(_0x19db9c){if(_0x19db9c){_0x55bfcd=_0x19db9c;_0x407dce[_0x26cf('0x32')]=_['keys'](db[_0x26cf('0x4c')][_0x26cf('0x2c')]);_0x407dce[_0x26cf('0x2f')]=_[_0x26cf('0x46')](_0xf31abf[_0x26cf('0x2f')]);_0x407dce[_0x26cf('0x30')]=_['intersection'](_0x407dce[_0x26cf('0x32')],_0x407dce[_0x26cf('0x2f')]);_0x12c272[_0x26cf('0x33')]=_[_0x26cf('0x31')](_0x407dce[_0x26cf('0x32')],qs[_0x26cf('0x34')](_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x34')]));_0x12c272[_0x26cf('0x33')]=_0x12c272[_0x26cf('0x33')][_0x26cf('0x35')]?_0x12c272[_0x26cf('0x33')]:_0x407dce['model'];_0x12c272[_0x26cf('0x38')]=qs[_0x26cf('0x39')](_0xf31abf['query'][_0x26cf('0x39')]);_0x12c272[_0x26cf('0x3a')]=qs[_0x26cf('0x30')](_[_0x26cf('0x4d')](_0xf31abf['query'],_0x407dce[_0x26cf('0x30')]));if(_0xf31abf[_0x26cf('0x2f')]['filter']){_0x12c272[_0x26cf('0x3a')]=_[_0x26cf('0x3c')](_0x12c272[_0x26cf('0x3a')],{'$or':_[_0x26cf('0x2a')](_0x12c272[_0x26cf('0x33')],function(_0x4a6c4f){var _0x25ec12={};_0x25ec12[_0x4a6c4f]={'$like':'%'+_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x3b')]+'%'};return _0x25ec12;})});}_0x12c272=_[_0x26cf('0x3c')]({},_0x12c272,_0xf31abf[_0x26cf('0x3e')]);return _0x55bfcd['getConfigurations'](_0x12c272);}})[_0x26cf('0x24')](function(_0x3140f1){if(_0x3140f1){_0x215dfc=_0x3140f1[_0x26cf('0x35')];if(!_0xf31abf['query']['hasOwnProperty'](_0x26cf('0x37'))){_0x12c272['limit']=qs[_0x26cf('0x1d')](_0xf31abf['query'][_0x26cf('0x1d')]);_0x12c272[_0x26cf('0x1c')]=qs[_0x26cf('0x1c')](_0xf31abf[_0x26cf('0x2f')][_0x26cf('0x1c')]);}return _0x55bfcd[_0x26cf('0x4a')](_0x12c272);}})[_0x26cf('0x24')](function(_0x7804d9){if(_0x7804d9){return _0x7804d9?{'count':_0x215dfc,'rows':_0x7804d9}:null;}})[_0x26cf('0x24')](respondWithResult(_0x3082b9,null))['catch'](handleError(_0x3082b9,null));};exports[_0x26cf('0x4e')]=function(_0x496cd6,_0x5ed0a1,_0x52f1e4){if(_0x496cd6[_0x26cf('0x48')]['id']){delete _0x496cd6[_0x26cf('0x48')]['id'];}return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0x496cd6[_0x26cf('0x45')]['id']}})[_0x26cf('0x24')](handleEntityNotFound(_0x5ed0a1,null))[_0x26cf('0x24')](function(_0x5e2e9e){if(_0x5e2e9e){_0x496cd6[_0x26cf('0x48')][_0x26cf('0x4f')]=_0x5e2e9e['id'];_0x496cd6['body'][_0x26cf('0x50')]=integrations[_0x26cf('0x51')](_0x496cd6[_0x26cf('0x48')][_0x26cf('0x52')],_0x496cd6[_0x26cf('0x48')]['type']);_0x496cd6[_0x26cf('0x48')][_0x26cf('0x53')]=integrations['getDescriptions'](_0x496cd6[_0x26cf('0x48')]['channel'],_0x496cd6[_0x26cf('0x48')][_0x26cf('0x2d')]);return db[_0x26cf('0x4c')][_0x26cf('0x47')](_0x496cd6['body'],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x26cf('0x54')],'as':_0x26cf('0x53')}]});}return null;})[_0x26cf('0x24')](respondWithResult(_0x5ed0a1,null))[_0x26cf('0x43')](handleError(_0x5ed0a1,null));};var md5=require(_0x26cf('0x55'));exports[_0x26cf('0x56')]=function(_0x4ba75b,_0x181c76,_0x536ff8){var _0x2f6117=null;var _0x3dab2c=null;var _0x568e2d=null;var _0x162ef9=null;var _0x53a30e='';return db[_0x26cf('0x2b')][_0x26cf('0x4b')]({'where':{'id':_0x4ba75b[_0x26cf('0x45')]['id']},'attributes':['id',_0x26cf('0x27'),_0x26cf('0x57'),_0x26cf('0x58'),_0x26cf('0x59'),_0x26cf('0x5a'),_0x26cf('0x5b'),_0x26cf('0x5c')]})[_0x26cf('0x24')](handleEntityNotFound(_0x181c76,null))[_0x26cf('0x24')](function(_0x17685e){if(_0x17685e){_0x2f6117=_0x17685e[_0x26cf('0x57')];_0x3dab2c=_0x17685e[_0x26cf('0x5c')];_0x568e2d=_0x17685e[_0x26cf('0x59')];_0x53a30e=_0x17685e[_0x26cf('0x5a')];var _0x3f4ef3=_0x53a30e[_0x26cf('0x5d')](-0x1);if(_0x3f4ef3==='/'){_0x53a30e=_0x53a30e['substring'](0x0,_0x53a30e[_0x26cf('0x5e')](_0x3f4ef3));}_0x162ef9=util[_0x26cf('0x5f')](_0x26cf('0x60'),_0x53a30e);var _0x2e5695={'method':_0x26cf('0x61'),'uri':_0x162ef9,'qs':{'operation':_0x26cf('0x62'),'username':_0x17685e['username']},'json':!![]};return rp(_0x2e5695);}})[_0x26cf('0x24')](function(_0xeccb30){if(_0xeccb30[_0x26cf('0x63')]){var _0x7b834={'method':_0x26cf('0x64'),'uri':_0x162ef9,'form':{'operation':_0x26cf('0x65'),'username':_0x2f6117,'accessKey':md5(_0xeccb30[_0x26cf('0x66')][_0x26cf('0x67')]+_0x3dab2c)},'json':!![]};return rp(_0x7b834);}})[_0x26cf('0x24')](function(_0x1a1a1c){if(_0x1a1a1c[_0x26cf('0x63')]){var _0x2861a3={'method':_0x26cf('0x61'),'uri':_0x162ef9,'qs':{'operation':_0x26cf('0x68'),'username':_0x2f6117,'sessionName':_0x1a1a1c[_0x26cf('0x66')][_0x26cf('0x69')],'elementType':_0x568e2d},'json':!![]};return rp(_0x2861a3);}})[_0x26cf('0x24')](function(_0x6328c9){if(_0x6328c9[_0x26cf('0x63')]){var _0x1f7198=[_0x26cf('0x6a'),'reference','owner'];_[_0x26cf('0x6b')](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x388456){return _0x1f7198[_0x26cf('0x6c')](_0x388456[_0x26cf('0x2d')]['name']);});_['remove'](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x3e109d){return _0x3e109d[_0x26cf('0x6d')]===_0x26cf('0x6e');});return{'count':_0x6328c9['result'][_0x26cf('0x34')][_0x26cf('0x35')],'rows':_[_0x26cf('0x2a')](_0x6328c9[_0x26cf('0x66')][_0x26cf('0x34')],function(_0x5d337d){return{'id':_0x5d337d[_0x26cf('0x27')],'name':_0x5d337d[_0x26cf('0x6f')],'custom':_[_0x26cf('0x70')](_0x5d337d['name'],_0x26cf('0x71'))?!![]:![],'options':_0x5d337d[_0x26cf('0x2d')]['name']===_0x26cf('0x72')&&_0x5d337d[_0x26cf('0x2d')]['picklistValues']['length']>0x0?_[_0x26cf('0x2a')](_0x5d337d[_0x26cf('0x2d')][_0x26cf('0x73')],function(_0x2adaf1){return{'name':_0x2adaf1['label'],'value':_0x2adaf1[_0x26cf('0x74')]};}):[]};})};}})[_0x26cf('0x24')](respondWithResult(_0x181c76,null))[_0x26cf('0x43')](function(_0x389edd){console[_0x26cf('0x75')](_0x26cf('0x76')+_0x389edd);var _0x24abbf=_0x4ba75b[_0x26cf('0x2f')][_0x26cf('0x77')]?0x1f4:_0x389edd[_0x26cf('0x78')]||0x1f4;logger[_0x26cf('0x25')](_0x26cf('0x79'),_0x26cf('0x56'),_0x24abbf,JSON[_0x26cf('0x7a')](_0x389edd));delete _0x389edd[_0x26cf('0x27')];if(_0x24abbf===0x191){_0x24abbf=0x190;}_0x181c76[_0x26cf('0x19')](_0x24abbf)['send'](_0x4ba75b['query'][_0x26cf('0x77')]?{'message':_0x26cf('0x7b'),'statusCode':_0x389edd[_0x26cf('0x78')]}:_0x389edd);});};
\ No newline at end of file
index 112b74a..bbef185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad74=['bluebird','path','rimraf','../../config/environment','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','../../config/logger','api','moment'];(function(_0x4ccfbc,_0x353f7b){var _0x5315ff=function(_0x4115f1){while(--_0x4115f1){_0x4ccfbc['push'](_0x4ccfbc['shift']());}};_0x5315ff(++_0x353f7b);}(_0xad74,0x106));var _0x4ad7=function(_0x55f9af,_0xfd306d){_0x55f9af=_0x55f9af-0x0;var _0x286fad=_0xad74[_0x55f9af];return _0x286fad;};'use strict';var _=require(_0x4ad7('0x0'));var util=require('util');var logger=require(_0x4ad7('0x1'))(_0x4ad7('0x2'));var moment=require(_0x4ad7('0x3'));var BPromise=require(_0x4ad7('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4ad7('0x5'));var rimraf=require(_0x4ad7('0x6'));var config=require(_0x4ad7('0x7'));var attributes=require(_0x4ad7('0x8'));var integrations=require(_0x4ad7('0x9'));module[_0x4ad7('0xa')]=function(_0x1e5c30,_0x156ae9){return _0x1e5c30[_0x4ad7('0xb')](_0x4ad7('0xc'),attributes,{'tableName':_0x4ad7('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f22=['path','rimraf','./intVtigerAccount.attributes','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','api','moment','request-promise'];(function(_0x50ef24,_0x25f200){var _0x40a0a7=function(_0xb9838c){while(--_0xb9838c){_0x50ef24['push'](_0x50ef24['shift']());}};_0x40a0a7(++_0x25f200);}(_0x8f22,0x1b8));var _0x28f2=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x8f22[_0x3ab51d];return _0x29a04e;};'use strict';var _=require(_0x28f2('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x28f2('0x1'));var moment=require(_0x28f2('0x2'));var BPromise=require('bluebird');var rp=require(_0x28f2('0x3'));var fs=require('fs');var path=require(_0x28f2('0x4'));var rimraf=require(_0x28f2('0x5'));var config=require('../../config/environment');var attributes=require(_0x28f2('0x6'));var integrations=require(_0x28f2('0x7'));module[_0x28f2('0x8')]=function(_0x8463d,_0x49e25e){return _0x8463d[_0x28f2('0x9')](_0x28f2('0xa'),attributes,{'tableName':_0x28f2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bbd2c82..20005cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb58b=['model','map','debug','catch','ShowVtigerAccount','find','where','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include'];(function(_0x1e4150,_0x55b02a){var _0x1ce3ee=function(_0x59324e){while(--_0x59324e){_0x1e4150['push'](_0x1e4150['shift']());}};_0x1ce3ee(++_0x55b02a);}(_0xb58b,0x1f1));var _0xbb58=function(_0x4f98b8,_0x3b077d){_0x4f98b8=_0x4f98b8-0x0;var _0x1e64a1=_0xb58b[_0x4f98b8];return _0x1e64a1;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}exports[_0xbb58('0x14')]=function(_0x3134ea){var _0x48f3e0=this;return new Promise(function(_0xbee66,_0x497653){return db[_0xbb58('0x15')][_0xbb58('0x16')]({'raw':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')]['where']||null:null,'attributes':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'limit':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1a')]||null:null,'include':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x3134ea[_0xbb58('0x17')]['include'],function(_0x21964d){return{'model':db[_0x21964d[_0xbb58('0x1c')]],'as':_0x21964d['as'],'attributes':_0x21964d[_0xbb58('0x19')],'include':_0x21964d[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x21964d[_0xbb58('0x1b')],function(_0x2d556a){return{'model':db[_0x2d556a[_0xbb58('0x1c')]],'as':_0x2d556a['as'],'attributes':_0x2d556a['attributes'],'include':_0x2d556a[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x2d556a[_0xbb58('0x1b')],function(_0x129094){return{'model':db[_0x129094[_0xbb58('0x1c')]],'as':_0x129094['as'],'attributes':_0x129094[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb58('0xa')](function(_0x2ce7c3){logger[_0xbb58('0xb')](_0xbb58('0x14'),_0x3134ea);logger[_0xbb58('0x1e')](_0xbb58('0x14'),_0x3134ea,JSON[_0xbb58('0xf')](_0x2ce7c3));_0xbee66(_0x2ce7c3);})[_0xbb58('0x1f')](function(_0x3559b6){logger['error'](_0xbb58('0x14'),_0x3559b6[_0xbb58('0x12')],_0x3134ea);_0x497653(_0x48f3e0[_0xbb58('0x10')](0x1f4,_0x3559b6[_0xbb58('0x12')]));});});};exports[_0xbb58('0x20')]=function(_0x9d379f){var _0x1ba526=this;return new Promise(function(_0x643e0e,_0x3f8db3){return db['VtigerAccount'][_0xbb58('0x21')]({'raw':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x22')]||null:null,'attributes':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'include':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x9d379f['options']['include'],function(_0x1def9f){return{'model':db[_0x1def9f[_0xbb58('0x1c')]],'as':_0x1def9f['as'],'attributes':_0x1def9f[_0xbb58('0x19')],'include':_0x1def9f[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x1def9f[_0xbb58('0x1b')],function(_0x3093bf){return{'model':db[_0x3093bf[_0xbb58('0x1c')]],'as':_0x3093bf['as'],'attributes':_0x3093bf['attributes'],'include':_0x3093bf[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x3093bf['include'],function(_0x33ec68){return{'model':db[_0x33ec68['model']],'as':_0x33ec68['as'],'attributes':_0x33ec68[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x86372e){logger[_0xbb58('0xb')]('ShowVtigerAccount',_0x9d379f);logger[_0xbb58('0x1e')](_0xbb58('0x20'),_0x9d379f,JSON[_0xbb58('0xf')](_0x86372e));_0x643e0e(_0x86372e);})[_0xbb58('0x1f')](function(_0x1b86a6){logger[_0xbb58('0x10')](_0xbb58('0x20'),_0x1b86a6[_0xbb58('0x12')],_0x9d379f);_0x3f8db3(_0x1ba526['error'](0x1f4,_0x1b86a6[_0xbb58('0x12')]));});});};
\ No newline at end of file
+var _0xb58b=['model','map','debug','catch','ShowVtigerAccount','find','where','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','VtigerAccount,\x20%s,\x20%s','request\x20sent','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVtigerAccount','VtigerAccount','findAll','options','raw','attributes','limit','include'];(function(_0x4e783c,_0x51a362){var _0x2fbd6d=function(_0x513e00){while(--_0x513e00){_0x4e783c['push'](_0x4e783c['shift']());}};_0x2fbd6d(++_0x51a362);}(_0xb58b,0x1f1));var _0xbb58=function(_0x544d3e,_0x123c10){_0x544d3e=_0x544d3e-0x0;var _0x9dfbfa=_0xb58b[_0x544d3e];return _0x9dfbfa;};'use strict';var _=require('lodash');var util=require(_0xbb58('0x0'));var moment=require(_0xbb58('0x1'));var BPromise=require(_0xbb58('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbb58('0x3'));var db=require(_0xbb58('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbb58('0x5'))('rpc');var config=require(_0xbb58('0x6'));var jayson=require(_0xbb58('0x7'));var client=jayson[_0xbb58('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27cbda,_0x323066,_0xe874f2){return new BPromise(function(_0x5d7fe8,_0xd94f1){return client[_0xbb58('0x9')](_0x27cbda,_0xe874f2)[_0xbb58('0xa')](function(_0x36ca50){logger[_0xbb58('0xb')](_0xbb58('0xc'),_0x323066,_0xbb58('0xd'));logger['debug'](_0xbb58('0xe'),_0x323066,'request\x20sent',JSON[_0xbb58('0xf')](_0x36ca50));if(_0x36ca50[_0xbb58('0x10')]){if(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x11')]===0x1f4){logger['error'](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0xd94f1(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}logger[_0xbb58('0x10')](_0xbb58('0xc'),_0x323066,_0x36ca50[_0xbb58('0x10')]['message']);return _0x5d7fe8(_0x36ca50[_0xbb58('0x10')][_0xbb58('0x12')]);}else{logger['info']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0xbb58('0xd'));_0x5d7fe8(_0x36ca50[_0xbb58('0x13')][_0xbb58('0x12')]);}})['catch'](function(_0x5edc97){logger['error']('VtigerAccount,\x20%s,\x20%s',_0x323066,_0x5edc97);_0xd94f1(_0x5edc97);});});}exports[_0xbb58('0x14')]=function(_0x3134ea){var _0x48f3e0=this;return new Promise(function(_0xbee66,_0x497653){return db[_0xbb58('0x15')][_0xbb58('0x16')]({'raw':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')]['where']||null:null,'attributes':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'limit':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1a')]||null:null,'include':_0x3134ea[_0xbb58('0x17')]?_0x3134ea[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x3134ea[_0xbb58('0x17')]['include'],function(_0x21964d){return{'model':db[_0x21964d[_0xbb58('0x1c')]],'as':_0x21964d['as'],'attributes':_0x21964d[_0xbb58('0x19')],'include':_0x21964d[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x21964d[_0xbb58('0x1b')],function(_0x2d556a){return{'model':db[_0x2d556a[_0xbb58('0x1c')]],'as':_0x2d556a['as'],'attributes':_0x2d556a['attributes'],'include':_0x2d556a[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x2d556a[_0xbb58('0x1b')],function(_0x129094){return{'model':db[_0x129094[_0xbb58('0x1c')]],'as':_0x129094['as'],'attributes':_0x129094[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbb58('0xa')](function(_0x2ce7c3){logger[_0xbb58('0xb')](_0xbb58('0x14'),_0x3134ea);logger[_0xbb58('0x1e')](_0xbb58('0x14'),_0x3134ea,JSON[_0xbb58('0xf')](_0x2ce7c3));_0xbee66(_0x2ce7c3);})[_0xbb58('0x1f')](function(_0x3559b6){logger['error'](_0xbb58('0x14'),_0x3559b6[_0xbb58('0x12')],_0x3134ea);_0x497653(_0x48f3e0[_0xbb58('0x10')](0x1f4,_0x3559b6[_0xbb58('0x12')]));});});};exports[_0xbb58('0x20')]=function(_0x9d379f){var _0x1ba526=this;return new Promise(function(_0x643e0e,_0x3f8db3){return db['VtigerAccount'][_0xbb58('0x21')]({'raw':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x18')]===undefined?!![]:![]:!![],'where':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x22')]||null:null,'attributes':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x19')]||null:null,'include':_0x9d379f[_0xbb58('0x17')]?_0x9d379f[_0xbb58('0x17')][_0xbb58('0x1b')]?_['map'](_0x9d379f['options']['include'],function(_0x1def9f){return{'model':db[_0x1def9f[_0xbb58('0x1c')]],'as':_0x1def9f['as'],'attributes':_0x1def9f[_0xbb58('0x19')],'include':_0x1def9f[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x1def9f[_0xbb58('0x1b')],function(_0x3093bf){return{'model':db[_0x3093bf[_0xbb58('0x1c')]],'as':_0x3093bf['as'],'attributes':_0x3093bf['attributes'],'include':_0x3093bf[_0xbb58('0x1b')]?_[_0xbb58('0x1d')](_0x3093bf['include'],function(_0x33ec68){return{'model':db[_0x33ec68['model']],'as':_0x33ec68['as'],'attributes':_0x33ec68[_0xbb58('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x86372e){logger[_0xbb58('0xb')]('ShowVtigerAccount',_0x9d379f);logger[_0xbb58('0x1e')](_0xbb58('0x20'),_0x9d379f,JSON[_0xbb58('0xf')](_0x86372e));_0x643e0e(_0x86372e);})[_0xbb58('0x1f')](function(_0x1b86a6){logger[_0xbb58('0x10')](_0xbb58('0x20'),_0x1b86a6[_0xbb58('0x12')],_0x9d379f);_0x3f8db3(_0x1ba526['error'](0x1f4,_0x1b86a6[_0xbb58('0x12')]));});});};
\ No newline at end of file
index e176183..b6f328c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9110=['get','/:id','isAuthenticated','getSubjects','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x24a20d,_0x5b08cb){var _0x13e76f=function(_0x2593b7){while(--_0x2593b7){_0x24a20d['push'](_0x24a20d['shift']());}};_0x13e76f(++_0x5b08cb);}(_0x9110,0x175));var _0x0911=function(_0x2c4cee,_0xed54d6){_0x2c4cee=_0x2c4cee-0x0;var _0x4cad54=_0x9110[_0x2c4cee];return _0x4cad54;};'use strict';var multer=require(_0x0911('0x0'));var util=require('util');var path=require(_0x0911('0x1'));var timeout=require('connect-timeout');var express=require(_0x0911('0x2'));var router=express[_0x0911('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0911('0x4'));var interaction=require(_0x0911('0x5'));var config=require(_0x0911('0x6'));var controller=require('./intVtigerConfiguration.controller');router[_0x0911('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x0911('0x7')](_0x0911('0x8'),auth[_0x0911('0x9')](),controller['show']);router[_0x0911('0x7')]('/:id/fields',auth[_0x0911('0x9')](),controller['getFields']);router[_0x0911('0x7')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x0911('0xa')]);router[_0x0911('0x7')](_0x0911('0xb'),auth[_0x0911('0x9')](),controller[_0x0911('0xc')]);router[_0x0911('0xd')]('/',auth[_0x0911('0x9')](),controller[_0x0911('0xe')]);router[_0x0911('0xf')](_0x0911('0x8'),auth['isAuthenticated'](),controller[_0x0911('0x10')]);router[_0x0911('0x11')](_0x0911('0x8'),auth['isAuthenticated'](),controller[_0x0911('0x12')]);module[_0x0911('0x13')]=router;
\ No newline at end of file
+var _0xa58c=['create','put','delete','destroy','path','express','fs-extra','../../components/interaction/service','./intVtigerConfiguration.controller','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','post'];(function(_0x2fd1e5,_0x1932f3){var _0x1d1d22=function(_0x7448a4){while(--_0x7448a4){_0x2fd1e5['push'](_0x2fd1e5['shift']());}};_0x1d1d22(++_0x1932f3);}(_0xa58c,0x1a6));var _0xca58=function(_0x5288bf,_0x2b21ee){_0x5288bf=_0x5288bf-0x0;var _0x52adf4=_0xa58c[_0x5288bf];return _0x52adf4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xca58('0x0'));var timeout=require('connect-timeout');var express=require(_0xca58('0x1'));var router=express['Router']();var fs_extra=require(_0xca58('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xca58('0x3'));var config=require('../../config/environment');var controller=require(_0xca58('0x4'));router[_0xca58('0x5')]('/',auth[_0xca58('0x6')](),controller[_0xca58('0x7')]);router[_0xca58('0x5')](_0xca58('0x8'),auth[_0xca58('0x6')](),controller[_0xca58('0x9')]);router[_0xca58('0x5')](_0xca58('0xa'),auth[_0xca58('0x6')](),controller[_0xca58('0xb')]);router[_0xca58('0x5')](_0xca58('0xc'),auth[_0xca58('0x6')](),controller['getSubjects']);router[_0xca58('0x5')](_0xca58('0xd'),auth[_0xca58('0x6')](),controller['getDescriptions']);router[_0xca58('0xe')]('/',auth[_0xca58('0x6')](),controller[_0xca58('0xf')]);router[_0xca58('0x10')]('/:id',auth[_0xca58('0x6')](),controller['update']);router[_0xca58('0x11')]('/:id',auth[_0xca58('0x6')](),controller[_0xca58('0x12')]);module['exports']=router;
\ No newline at end of file
index 85b39a4..abadd56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52c9=['exports','STRING','sequelize'];(function(_0x4a1e96,_0x143e6b){var _0x5acea9=function(_0x1e1677){while(--_0x1e1677){_0x4a1e96['push'](_0x4a1e96['shift']());}};_0x5acea9(++_0x143e6b);}(_0x52c9,0xe3));var _0x952c=function(_0x4ac13f,_0x351e32){_0x4ac13f=_0x4ac13f-0x0;var _0x310041=_0x52c9[_0x4ac13f];return _0x310041;};'use strict';var Sequelize=require(_0x952c('0x0'));module[_0x952c('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x952c('0x2')]}};
\ No newline at end of file
+var _0xa884=['sequelize','STRING'];(function(_0x41dfac,_0x278319){var _0x12900b=function(_0x3324cd){while(--_0x3324cd){_0x41dfac['push'](_0x41dfac['shift']());}};_0x12900b(++_0x278319);}(_0xa884,0xb2));var _0x4a88=function(_0xa1e3e3,_0x29fe0e){_0xa1e3e3=_0xa1e3e3-0x0;var _0xc980e9=_0xa884[_0xa1e3e3];return _0xc980e9;};'use strict';var Sequelize=require(_0x4a88('0x0'));module['exports']={'name':{'type':Sequelize[_0x4a88('0x1')]},'description':{'type':Sequelize[_0x4a88('0x1')]}};
\ No newline at end of file
index b3ff712..c3443dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1210=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','json','apply','reject','save','update','then','destroy','end','error','name','send','index','map','VtigerConfiguration','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create','body','getFields','findOne','VtigerField','rawAttributes','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x1f99a0,_0x50b73d){var _0x1e0849=function(_0x41e764){while(--_0x41e764){_0x1f99a0['push'](_0x1f99a0['shift']());}};_0x1e0849(++_0x50b73d);}(_0x1210,0x188));var _0x0121=function(_0x576d8a,_0x2d7bde){_0x576d8a=_0x576d8a-0x0;var _0x3dc3ef=_0x1210[_0x576d8a];return _0x3dc3ef;};'use strict';var emlformat=require(_0x0121('0x0'));var rimraf=require(_0x0121('0x1'));var zipdir=require(_0x0121('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x0121('0x3'));var moment=require(_0x0121('0x4'));var BPromise=require(_0x0121('0x5'));var Mustache=require(_0x0121('0x6'));var util=require(_0x0121('0x7'));var path=require(_0x0121('0x8'));var sox=require(_0x0121('0x9'));var csv=require(_0x0121('0xa'));var ejs=require(_0x0121('0xb'));var fs=require('fs');var fs_extra=require(_0x0121('0xc'));var _=require(_0x0121('0xd'));var squel=require(_0x0121('0xe'));var crypto=require(_0x0121('0xf'));var jsforce=require(_0x0121('0x10'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x0121('0x11'));var Papa=require(_0x0121('0x12'));var Redis=require('ioredis');var authService=require(_0x0121('0x13'));var qs=require(_0x0121('0x14'));var as=require(_0x0121('0x15'));var hardwareService=require(_0x0121('0x16'));var logger=require('../../config/logger')(_0x0121('0x17'));var utils=require(_0x0121('0x18'));var config=require(_0x0121('0x19'));var licenseUtil=require(_0x0121('0x1a'));var db=require(_0x0121('0x1b'))['db'];function respondWithStatusCode(_0x25c7b1,_0x5b41d7){_0x5b41d7=_0x5b41d7||0xcc;return function(_0x46caa7){if(_0x46caa7){return _0x25c7b1[_0x0121('0x1c')](_0x5b41d7);}return _0x25c7b1[_0x0121('0x1d')](_0x5b41d7)['end']();};}function respondWithResult(_0x4e7c9d,_0x1e8f9e){_0x1e8f9e=_0x1e8f9e||0xc8;return function(_0x3a2539){if(_0x3a2539){return _0x4e7c9d[_0x0121('0x1d')](_0x1e8f9e)['json'](_0x3a2539);}};}function respondWithFilteredResult(_0x102989,_0x28c6ea){return function(_0x511f01){if(_0x511f01){var _0x38404c=typeof _0x28c6ea[_0x0121('0x1e')]===_0x0121('0x1f')&&typeof _0x28c6ea[_0x0121('0x20')]===_0x0121('0x1f');var _0x59cded=_0x511f01[_0x0121('0x21')];var _0x4ff3fb=_0x38404c?0x0:_0x28c6ea['offset'];var _0x16a496=_0x38404c?_0x511f01[_0x0121('0x21')]:_0x28c6ea[_0x0121('0x1e')]+_0x28c6ea['limit'];var _0x461374;if(_0x16a496>=_0x59cded){_0x16a496=_0x59cded;_0x461374=0xc8;}else{_0x461374=0xce;}_0x102989[_0x0121('0x1d')](_0x461374);return _0x102989[_0x0121('0x22')]('Content-Range',_0x4ff3fb+'-'+_0x16a496+'/'+_0x59cded)[_0x0121('0x23')](_0x511f01);}return null;};}function patchUpdates(_0x17aefa){return function(_0x4dbeea){try{jsonpatch[_0x0121('0x24')](_0x4dbeea,_0x17aefa,!![]);}catch(_0xd976b4){return BPromise[_0x0121('0x25')](_0xd976b4);}return _0x4dbeea[_0x0121('0x26')]();};}function saveUpdates(_0x688472,_0x384a60){return function(_0x492aa0){if(_0x492aa0){return _0x492aa0[_0x0121('0x27')](_0x688472)[_0x0121('0x28')](function(_0x3cdf22){return _0x3cdf22;});}return null;};}function removeEntity(_0x419e5c,_0x4d1cf3){return function(_0x47c9d2){if(_0x47c9d2){return _0x47c9d2[_0x0121('0x29')]()[_0x0121('0x28')](function(){_0x419e5c['status'](0xcc)[_0x0121('0x2a')]();});}};}function handleEntityNotFound(_0x1f2cbe,_0x4608c8){return function(_0x3fa746){if(!_0x3fa746){_0x1f2cbe[_0x0121('0x1c')](0x194);}return _0x3fa746;};}function handleError(_0x3f82eb,_0x5540f8){_0x5540f8=_0x5540f8||0x1f4;return function(_0x4ea48b){logger[_0x0121('0x2b')](_0x4ea48b['stack']);if(_0x4ea48b[_0x0121('0x2c')]){delete _0x4ea48b['name'];}_0x3f82eb[_0x0121('0x1d')](_0x5540f8)[_0x0121('0x2d')](_0x4ea48b);};}exports[_0x0121('0x2e')]=function(_0x2d8abb,_0x1aa5e7){var _0x5ae177={},_0x3385cc={},_0xe9cbf3={'count':0x0,'rows':[]};var _0x6d2160=_[_0x0121('0x2f')](db[_0x0121('0x30')]['rawAttributes'],function(_0x2b42fc){return{'name':_0x2b42fc['fieldName'],'type':_0x2b42fc[_0x0121('0x31')]['key']};});_0x3385cc[_0x0121('0x32')]=_[_0x0121('0x2f')](_0x6d2160,_0x0121('0x2c'));_0x3385cc[_0x0121('0x33')]=_[_0x0121('0x34')](_0x2d8abb['query']);_0x3385cc['filters']=_[_0x0121('0x35')](_0x3385cc['model'],_0x3385cc[_0x0121('0x33')]);_0x5ae177[_0x0121('0x36')]=_[_0x0121('0x35')](_0x3385cc[_0x0121('0x32')],qs[_0x0121('0x37')](_0x2d8abb[_0x0121('0x33')]['fields']));_0x5ae177[_0x0121('0x36')]=_0x5ae177['attributes'][_0x0121('0x38')]?_0x5ae177['attributes']:_0x3385cc[_0x0121('0x32')];if(!_0x2d8abb[_0x0121('0x33')][_0x0121('0x39')](_0x0121('0x3a'))){_0x5ae177[_0x0121('0x20')]=qs[_0x0121('0x20')](_0x2d8abb[_0x0121('0x33')][_0x0121('0x20')]);_0x5ae177[_0x0121('0x1e')]=qs[_0x0121('0x1e')](_0x2d8abb[_0x0121('0x33')]['offset']);}_0x5ae177[_0x0121('0x3b')]=qs[_0x0121('0x3c')](_0x2d8abb['query'][_0x0121('0x3c')]);_0x5ae177[_0x0121('0x3d')]=qs[_0x0121('0x3e')](_[_0x0121('0x3f')](_0x2d8abb['query'],_0x3385cc[_0x0121('0x3e')]),_0x6d2160);if(_0x2d8abb[_0x0121('0x33')][_0x0121('0x40')]){_0x5ae177[_0x0121('0x3d')]=_['merge'](_0x5ae177[_0x0121('0x3d')],{'$or':_[_0x0121('0x2f')](_0x6d2160,function(_0x425b58){if(_0x425b58[_0x0121('0x31')]!==_0x0121('0x41')){var _0x254364={};_0x254364[_0x425b58['name']]={'$like':'%'+_0x2d8abb[_0x0121('0x33')][_0x0121('0x40')]+'%'};return _0x254364;}})});}_0x5ae177=_[_0x0121('0x42')]({},_0x5ae177,_0x2d8abb[_0x0121('0x43')]);var _0xb921e2={'where':_0x5ae177['where']};return db['VtigerConfiguration'][_0x0121('0x21')](_0xb921e2)[_0x0121('0x28')](function(_0x5226b2){_0xe9cbf3[_0x0121('0x21')]=_0x5226b2;if(_0x2d8abb[_0x0121('0x33')][_0x0121('0x44')]){_0x5ae177[_0x0121('0x45')]=[{'all':!![]}];}return db[_0x0121('0x30')]['findAll'](_0x5ae177);})[_0x0121('0x28')](function(_0x48dee){_0xe9cbf3[_0x0121('0x46')]=_0x48dee;return _0xe9cbf3;})[_0x0121('0x28')](respondWithFilteredResult(_0x1aa5e7,_0x5ae177))[_0x0121('0x47')](handleError(_0x1aa5e7,null));};exports[_0x0121('0x48')]=function(_0x61b17a,_0x13d2f8){var _0x40ab36={'raw':![],'where':{'id':_0x61b17a[_0x0121('0x49')]['id']}},_0x5d639b={};_0x5d639b[_0x0121('0x32')]=_[_0x0121('0x34')](db['VtigerConfiguration']['rawAttributes']);_0x5d639b[_0x0121('0x33')]=_[_0x0121('0x34')](_0x61b17a[_0x0121('0x33')]);_0x5d639b[_0x0121('0x3e')]=_[_0x0121('0x35')](_0x5d639b[_0x0121('0x32')],_0x5d639b[_0x0121('0x33')]);_0x40ab36['attributes']=_[_0x0121('0x35')](_0x5d639b[_0x0121('0x32')],qs[_0x0121('0x37')](_0x61b17a[_0x0121('0x33')][_0x0121('0x37')]));_0x40ab36[_0x0121('0x36')]=_0x40ab36[_0x0121('0x36')][_0x0121('0x38')]?_0x40ab36[_0x0121('0x36')]:_0x5d639b[_0x0121('0x32')];if(_0x61b17a['query']['includeAll']){_0x40ab36[_0x0121('0x45')]=[{'all':!![]}];}_0x40ab36=_[_0x0121('0x42')]({},_0x40ab36,_0x61b17a[_0x0121('0x43')]);return db[_0x0121('0x30')][_0x0121('0x4a')](_0x40ab36)[_0x0121('0x28')](handleEntityNotFound(_0x13d2f8,null))[_0x0121('0x28')](respondWithResult(_0x13d2f8,null))[_0x0121('0x47')](handleError(_0x13d2f8,null));};exports[_0x0121('0x4b')]=function(_0x41c9f2,_0x48c511){return db['VtigerConfiguration']['create'](_0x41c9f2['body'],{})[_0x0121('0x28')](respondWithResult(_0x48c511,0xc9))[_0x0121('0x47')](handleError(_0x48c511,null));};exports['update']=function(_0x4005e2,_0x5dd917){if(_0x4005e2[_0x0121('0x4c')]['id']){delete _0x4005e2[_0x0121('0x4c')]['id'];}return db[_0x0121('0x30')][_0x0121('0x4a')]({'where':{'id':_0x4005e2[_0x0121('0x49')]['id']}})[_0x0121('0x28')](handleEntityNotFound(_0x5dd917,null))[_0x0121('0x28')](saveUpdates(_0x4005e2[_0x0121('0x4c')],null))[_0x0121('0x28')](respondWithResult(_0x5dd917,null))[_0x0121('0x47')](handleError(_0x5dd917,null));};exports[_0x0121('0x29')]=function(_0x373f48,_0x47432c){return db[_0x0121('0x30')][_0x0121('0x4a')]({'where':{'id':_0x373f48[_0x0121('0x49')]['id']}})['then'](handleEntityNotFound(_0x47432c,null))[_0x0121('0x28')](removeEntity(_0x47432c,null))[_0x0121('0x47')](handleError(_0x47432c,null));};exports[_0x0121('0x4d')]=function(_0x4da0d4,_0x4a1403,_0x418673){var _0x5c3263={};var _0x4870ae={};var _0x372ae3;var _0x504b69;return db[_0x0121('0x30')][_0x0121('0x4e')]({'where':{'id':_0x4da0d4[_0x0121('0x49')]['id']}})['then'](handleEntityNotFound(_0x4a1403,null))[_0x0121('0x28')](function(_0x5dd519){if(_0x5dd519){_0x372ae3=_0x5dd519;_0x4870ae[_0x0121('0x32')]=_[_0x0121('0x34')](db[_0x0121('0x4f')][_0x0121('0x50')]);_0x4870ae['query']=_['keys'](_0x4da0d4['query']);_0x4870ae['filters']=_[_0x0121('0x35')](_0x4870ae[_0x0121('0x32')],_0x4870ae[_0x0121('0x33')]);_0x5c3263[_0x0121('0x36')]=_[_0x0121('0x35')](_0x4870ae[_0x0121('0x32')],qs['fields'](_0x4da0d4[_0x0121('0x33')][_0x0121('0x37')]));_0x5c3263['attributes']=_0x5c3263[_0x0121('0x36')][_0x0121('0x38')]?_0x5c3263[_0x0121('0x36')]:_0x4870ae[_0x0121('0x32')];_0x5c3263[_0x0121('0x3b')]=qs['sort'](_0x4da0d4['query'][_0x0121('0x3c')]);_0x5c3263[_0x0121('0x3d')]=qs['filters'](_[_0x0121('0x3f')](_0x4da0d4['query'],_0x4870ae[_0x0121('0x3e')]));if(_0x4da0d4[_0x0121('0x33')][_0x0121('0x40')]){_0x5c3263[_0x0121('0x3d')]=_[_0x0121('0x42')](_0x5c3263[_0x0121('0x3d')],{'$or':_[_0x0121('0x2f')](_0x5c3263['attributes'],function(_0x4846ea){var _0x19a632={};_0x19a632[_0x4846ea]={'$like':'%'+_0x4da0d4['query']['filter']+'%'};return _0x19a632;})});}_0x5c3263=_[_0x0121('0x42')]({},_0x5c3263,_0x4da0d4[_0x0121('0x43')]);return _0x372ae3['getFields'](_0x5c3263);}})['then'](function(_0x396607){if(_0x396607){_0x504b69=_0x396607[_0x0121('0x38')];if(!_0x4da0d4[_0x0121('0x33')][_0x0121('0x39')](_0x0121('0x3a'))){_0x5c3263[_0x0121('0x20')]=qs[_0x0121('0x20')](_0x4da0d4[_0x0121('0x33')][_0x0121('0x20')]);_0x5c3263[_0x0121('0x1e')]=qs[_0x0121('0x1e')](_0x4da0d4[_0x0121('0x33')][_0x0121('0x1e')]);}return _0x372ae3[_0x0121('0x4d')](_0x5c3263);}})[_0x0121('0x28')](function(_0x238d17){if(_0x238d17){return _0x238d17?{'count':_0x504b69,'rows':_0x238d17}:null;}})['then'](respondWithResult(_0x4a1403,null))[_0x0121('0x47')](handleError(_0x4a1403,null));};exports[_0x0121('0x51')]=function(_0x354a26,_0x3449f8,_0x2469c4){var _0x130d15={};var _0xd73b3f={};var _0x3bb82f;var _0x271e0c;return db[_0x0121('0x30')][_0x0121('0x4e')]({'where':{'id':_0x354a26[_0x0121('0x49')]['id']}})['then'](handleEntityNotFound(_0x3449f8,null))[_0x0121('0x28')](function(_0xc1400f){if(_0xc1400f){_0x3bb82f=_0xc1400f;_0xd73b3f[_0x0121('0x32')]=_[_0x0121('0x34')](db[_0x0121('0x4f')][_0x0121('0x50')]);_0xd73b3f[_0x0121('0x33')]=_[_0x0121('0x34')](_0x354a26[_0x0121('0x33')]);_0xd73b3f[_0x0121('0x3e')]=_[_0x0121('0x35')](_0xd73b3f[_0x0121('0x32')],_0xd73b3f[_0x0121('0x33')]);_0x130d15[_0x0121('0x36')]=_[_0x0121('0x35')](_0xd73b3f[_0x0121('0x32')],qs[_0x0121('0x37')](_0x354a26[_0x0121('0x33')][_0x0121('0x37')]));_0x130d15['attributes']=_0x130d15['attributes']['length']?_0x130d15[_0x0121('0x36')]:_0xd73b3f[_0x0121('0x32')];_0x130d15[_0x0121('0x3b')]=qs[_0x0121('0x3c')](_0x354a26[_0x0121('0x33')][_0x0121('0x3c')]);_0x130d15[_0x0121('0x3d')]=qs[_0x0121('0x3e')](_['pick'](_0x354a26[_0x0121('0x33')],_0xd73b3f['filters']));if(_0x354a26[_0x0121('0x33')][_0x0121('0x40')]){_0x130d15[_0x0121('0x3d')]=_['merge'](_0x130d15[_0x0121('0x3d')],{'$or':_[_0x0121('0x2f')](_0x130d15[_0x0121('0x36')],function(_0x5bbf59){var _0x3d26b0={};_0x3d26b0[_0x5bbf59]={'$like':'%'+_0x354a26[_0x0121('0x33')][_0x0121('0x40')]+'%'};return _0x3d26b0;})});}_0x130d15=_['merge']({},_0x130d15,_0x354a26[_0x0121('0x43')]);return _0x3bb82f[_0x0121('0x51')](_0x130d15);}})['then'](function(_0xf9f192){if(_0xf9f192){_0x271e0c=_0xf9f192['length'];if(!_0x354a26['query'][_0x0121('0x39')]('nolimit')){_0x130d15[_0x0121('0x20')]=qs[_0x0121('0x20')](_0x354a26['query']['limit']);_0x130d15[_0x0121('0x1e')]=qs[_0x0121('0x1e')](_0x354a26[_0x0121('0x33')][_0x0121('0x1e')]);}return _0x3bb82f[_0x0121('0x51')](_0x130d15);}})['then'](function(_0x16e6b8){if(_0x16e6b8){return _0x16e6b8?{'count':_0x271e0c,'rows':_0x16e6b8}:null;}})['then'](respondWithResult(_0x3449f8,null))[_0x0121('0x47')](handleError(_0x3449f8,null));};exports['getDescriptions']=function(_0x18a162,_0x504a72,_0x393979){var _0x264259={};var _0x35fd51={};var _0x36ccd7;var _0x42652f;return db[_0x0121('0x30')][_0x0121('0x4e')]({'where':{'id':_0x18a162[_0x0121('0x49')]['id']}})[_0x0121('0x28')](handleEntityNotFound(_0x504a72,null))[_0x0121('0x28')](function(_0x45460c){if(_0x45460c){_0x36ccd7=_0x45460c;_0x35fd51[_0x0121('0x32')]=_[_0x0121('0x34')](db[_0x0121('0x4f')][_0x0121('0x50')]);_0x35fd51[_0x0121('0x33')]=_['keys'](_0x18a162['query']);_0x35fd51[_0x0121('0x3e')]=_[_0x0121('0x35')](_0x35fd51[_0x0121('0x32')],_0x35fd51[_0x0121('0x33')]);_0x264259[_0x0121('0x36')]=_[_0x0121('0x35')](_0x35fd51[_0x0121('0x32')],qs['fields'](_0x18a162['query'][_0x0121('0x37')]));_0x264259[_0x0121('0x36')]=_0x264259[_0x0121('0x36')][_0x0121('0x38')]?_0x264259[_0x0121('0x36')]:_0x35fd51[_0x0121('0x32')];_0x264259[_0x0121('0x3b')]=qs[_0x0121('0x3c')](_0x18a162[_0x0121('0x33')]['sort']);_0x264259[_0x0121('0x3d')]=qs['filters'](_[_0x0121('0x3f')](_0x18a162[_0x0121('0x33')],_0x35fd51[_0x0121('0x3e')]));if(_0x18a162[_0x0121('0x33')][_0x0121('0x40')]){_0x264259[_0x0121('0x3d')]=_[_0x0121('0x42')](_0x264259[_0x0121('0x3d')],{'$or':_[_0x0121('0x2f')](_0x264259[_0x0121('0x36')],function(_0x39f681){var _0x23b09c={};_0x23b09c[_0x39f681]={'$like':'%'+_0x18a162[_0x0121('0x33')][_0x0121('0x40')]+'%'};return _0x23b09c;})});}_0x264259=_[_0x0121('0x42')]({},_0x264259,_0x18a162[_0x0121('0x43')]);return _0x36ccd7['getDescriptions'](_0x264259);}})[_0x0121('0x28')](function(_0x35e152){if(_0x35e152){_0x42652f=_0x35e152[_0x0121('0x38')];if(!_0x18a162[_0x0121('0x33')][_0x0121('0x39')](_0x0121('0x3a'))){_0x264259[_0x0121('0x20')]=qs['limit'](_0x18a162[_0x0121('0x33')]['limit']);_0x264259['offset']=qs['offset'](_0x18a162['query'][_0x0121('0x1e')]);}return _0x36ccd7[_0x0121('0x52')](_0x264259);}})[_0x0121('0x28')](function(_0x5823af){if(_0x5823af){return _0x5823af?{'count':_0x42652f,'rows':_0x5823af}:null;}})[_0x0121('0x28')](respondWithResult(_0x504a72,null))[_0x0121('0x47')](handleError(_0x504a72,null));};
\ No newline at end of file
+var _0x68fc=['mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','name','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','attributes','fields','length','nolimit','sort','filter','VIRTUAL','merge','where','count','include','VtigerConfiguration','findAll','catch','show','keys','includeAll','find','create','body','params','findOne','VtigerField','order','pick','options','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x68fc,0x9d));var _0xc68f=function(_0x24fff0,_0x3f887e){_0x24fff0=_0x24fff0-0x0;var _0x1dfa55=_0x68fc[_0x24fff0];return _0x1dfa55;};'use strict';var emlformat=require(_0xc68f('0x0'));var rimraf=require(_0xc68f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc68f('0x2'));var rp=require(_0xc68f('0x3'));var moment=require(_0xc68f('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc68f('0x5'));var util=require(_0xc68f('0x6'));var path=require(_0xc68f('0x7'));var sox=require(_0xc68f('0x8'));var csv=require(_0xc68f('0x9'));var ejs=require(_0xc68f('0xa'));var fs=require('fs');var fs_extra=require(_0xc68f('0xb'));var _=require(_0xc68f('0xc'));var squel=require(_0xc68f('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc68f('0xe'));var toCsv=require(_0xc68f('0x9'));var querystring=require(_0xc68f('0xf'));var Papa=require(_0xc68f('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc68f('0x11'));var as=require(_0xc68f('0x12'));var hardwareService=require(_0xc68f('0x13'));var logger=require(_0xc68f('0x14'))(_0xc68f('0x15'));var utils=require(_0xc68f('0x16'));var config=require(_0xc68f('0x17'));var licenseUtil=require(_0xc68f('0x18'));var db=require(_0xc68f('0x19'))['db'];function respondWithStatusCode(_0x592e15,_0x52e445){_0x52e445=_0x52e445||0xcc;return function(_0xf02fdc){if(_0xf02fdc){return _0x592e15[_0xc68f('0x1a')](_0x52e445);}return _0x592e15[_0xc68f('0x1b')](_0x52e445)[_0xc68f('0x1c')]();};}function respondWithResult(_0x1a1872,_0x372d7e){_0x372d7e=_0x372d7e||0xc8;return function(_0x190755){if(_0x190755){return _0x1a1872[_0xc68f('0x1b')](_0x372d7e)['json'](_0x190755);}};}function respondWithFilteredResult(_0x471a9a,_0x6b62ed){return function(_0x5ac49e){if(_0x5ac49e){var _0x3210f2=typeof _0x6b62ed[_0xc68f('0x1d')]===_0xc68f('0x1e')&&typeof _0x6b62ed[_0xc68f('0x1f')]===_0xc68f('0x1e');var _0x3b564=_0x5ac49e['count'];var _0x1bf828=_0x3210f2?0x0:_0x6b62ed[_0xc68f('0x1d')];var _0x2945e2=_0x3210f2?_0x5ac49e['count']:_0x6b62ed[_0xc68f('0x1d')]+_0x6b62ed[_0xc68f('0x1f')];var _0x1cc78e;if(_0x2945e2>=_0x3b564){_0x2945e2=_0x3b564;_0x1cc78e=0xc8;}else{_0x1cc78e=0xce;}_0x471a9a[_0xc68f('0x1b')](_0x1cc78e);return _0x471a9a[_0xc68f('0x20')](_0xc68f('0x21'),_0x1bf828+'-'+_0x2945e2+'/'+_0x3b564)[_0xc68f('0x22')](_0x5ac49e);}return null;};}function patchUpdates(_0x441867){return function(_0x23e3de){try{jsonpatch[_0xc68f('0x23')](_0x23e3de,_0x441867,!![]);}catch(_0x2af3f7){return BPromise[_0xc68f('0x24')](_0x2af3f7);}return _0x23e3de[_0xc68f('0x25')]();};}function saveUpdates(_0x151747,_0x3f0123){return function(_0x415e96){if(_0x415e96){return _0x415e96[_0xc68f('0x26')](_0x151747)[_0xc68f('0x27')](function(_0x54938a){return _0x54938a;});}return null;};}function removeEntity(_0x4b2770,_0x374859){return function(_0x39d2bd){if(_0x39d2bd){return _0x39d2bd[_0xc68f('0x28')]()[_0xc68f('0x27')](function(){_0x4b2770['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c8623,_0x44b013){return function(_0x116d56){if(!_0x116d56){_0x1c8623['sendStatus'](0x194);}return _0x116d56;};}function handleError(_0x9a996b,_0x208bd0){_0x208bd0=_0x208bd0||0x1f4;return function(_0x2fd04d){logger[_0xc68f('0x29')](_0x2fd04d['stack']);if(_0x2fd04d[_0xc68f('0x2a')]){delete _0x2fd04d[_0xc68f('0x2a')];}_0x9a996b[_0xc68f('0x1b')](_0x208bd0)['send'](_0x2fd04d);};}exports['index']=function(_0x191436,_0x1bba22){var _0x47de0b={},_0x2731db={},_0xfbe7c0={'count':0x0,'rows':[]};var _0x5a5b25=_['map'](db['VtigerConfiguration'][_0xc68f('0x2b')],function(_0x3fce4a){return{'name':_0x3fce4a[_0xc68f('0x2c')],'type':_0x3fce4a[_0xc68f('0x2d')][_0xc68f('0x2e')]};});_0x2731db[_0xc68f('0x2f')]=_[_0xc68f('0x30')](_0x5a5b25,_0xc68f('0x2a'));_0x2731db[_0xc68f('0x31')]=_['keys'](_0x191436[_0xc68f('0x31')]);_0x2731db[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x2731db[_0xc68f('0x2f')],_0x2731db[_0xc68f('0x31')]);_0x47de0b[_0xc68f('0x34')]=_['intersection'](_0x2731db[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x191436[_0xc68f('0x31')]['fields']));_0x47de0b[_0xc68f('0x34')]=_0x47de0b[_0xc68f('0x34')][_0xc68f('0x36')]?_0x47de0b[_0xc68f('0x34')]:_0x2731db['model'];if(!_0x191436[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x47de0b['limit']=qs['limit'](_0x191436[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x47de0b[_0xc68f('0x1d')]=qs['offset'](_0x191436['query'][_0xc68f('0x1d')]);}_0x47de0b['order']=qs[_0xc68f('0x38')](_0x191436['query'][_0xc68f('0x38')]);_0x47de0b['where']=qs['filters'](_['pick'](_0x191436[_0xc68f('0x31')],_0x2731db['filters']),_0x5a5b25);if(_0x191436[_0xc68f('0x31')][_0xc68f('0x39')]){_0x47de0b['where']=_['merge'](_0x47de0b['where'],{'$or':_[_0xc68f('0x30')](_0x5a5b25,function(_0x4056d2){if(_0x4056d2[_0xc68f('0x2d')]!==_0xc68f('0x3a')){var _0x396cad={};_0x396cad[_0x4056d2[_0xc68f('0x2a')]]={'$like':'%'+_0x191436[_0xc68f('0x31')][_0xc68f('0x39')]+'%'};return _0x396cad;}})});}_0x47de0b=_[_0xc68f('0x3b')]({},_0x47de0b,_0x191436['options']);var _0x270fe6={'where':_0x47de0b[_0xc68f('0x3c')]};return db['VtigerConfiguration']['count'](_0x270fe6)[_0xc68f('0x27')](function(_0xb0f3e2){_0xfbe7c0[_0xc68f('0x3d')]=_0xb0f3e2;if(_0x191436[_0xc68f('0x31')]['includeAll']){_0x47de0b[_0xc68f('0x3e')]=[{'all':!![]}];}return db[_0xc68f('0x3f')][_0xc68f('0x40')](_0x47de0b);})[_0xc68f('0x27')](function(_0x21f3ed){_0xfbe7c0['rows']=_0x21f3ed;return _0xfbe7c0;})[_0xc68f('0x27')](respondWithFilteredResult(_0x1bba22,_0x47de0b))[_0xc68f('0x41')](handleError(_0x1bba22,null));};exports[_0xc68f('0x42')]=function(_0x5c9255,_0x3df415){var _0x303f39={'raw':![],'where':{'id':_0x5c9255['params']['id']}},_0x52fd06={};_0x52fd06['model']=_[_0xc68f('0x43')](db[_0xc68f('0x3f')][_0xc68f('0x2b')]);_0x52fd06[_0xc68f('0x31')]=_[_0xc68f('0x43')](_0x5c9255[_0xc68f('0x31')]);_0x52fd06['filters']=_[_0xc68f('0x33')](_0x52fd06['model'],_0x52fd06['query']);_0x303f39[_0xc68f('0x34')]=_['intersection'](_0x52fd06[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x5c9255[_0xc68f('0x31')][_0xc68f('0x35')]));_0x303f39[_0xc68f('0x34')]=_0x303f39[_0xc68f('0x34')][_0xc68f('0x36')]?_0x303f39[_0xc68f('0x34')]:_0x52fd06['model'];if(_0x5c9255['query'][_0xc68f('0x44')]){_0x303f39[_0xc68f('0x3e')]=[{'all':!![]}];}_0x303f39=_[_0xc68f('0x3b')]({},_0x303f39,_0x5c9255['options']);return db['VtigerConfiguration'][_0xc68f('0x45')](_0x303f39)['then'](handleEntityNotFound(_0x3df415,null))['then'](respondWithResult(_0x3df415,null))['catch'](handleError(_0x3df415,null));};exports['create']=function(_0x4c6fd8,_0x544b69){return db[_0xc68f('0x3f')][_0xc68f('0x46')](_0x4c6fd8[_0xc68f('0x47')],{})['then'](respondWithResult(_0x544b69,0xc9))['catch'](handleError(_0x544b69,null));};exports[_0xc68f('0x26')]=function(_0x41c7b6,_0x27e0e6){if(_0x41c7b6[_0xc68f('0x47')]['id']){delete _0x41c7b6[_0xc68f('0x47')]['id'];}return db[_0xc68f('0x3f')][_0xc68f('0x45')]({'where':{'id':_0x41c7b6[_0xc68f('0x48')]['id']}})['then'](handleEntityNotFound(_0x27e0e6,null))[_0xc68f('0x27')](saveUpdates(_0x41c7b6[_0xc68f('0x47')],null))[_0xc68f('0x27')](respondWithResult(_0x27e0e6,null))[_0xc68f('0x41')](handleError(_0x27e0e6,null));};exports[_0xc68f('0x28')]=function(_0x2db56f,_0x1fa8cd){return db[_0xc68f('0x3f')][_0xc68f('0x45')]({'where':{'id':_0x2db56f[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x1fa8cd,null))[_0xc68f('0x27')](removeEntity(_0x1fa8cd,null))[_0xc68f('0x41')](handleError(_0x1fa8cd,null));};exports['getFields']=function(_0x13e573,_0x88200e,_0x58a419){var _0x544dc7={};var _0x2b952={};var _0x3ee99f;var _0x47e150;return db['VtigerConfiguration'][_0xc68f('0x49')]({'where':{'id':_0x13e573['params']['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x88200e,null))[_0xc68f('0x27')](function(_0x26779f){if(_0x26779f){_0x3ee99f=_0x26779f;_0x2b952[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db[_0xc68f('0x4a')][_0xc68f('0x2b')]);_0x2b952['query']=_[_0xc68f('0x43')](_0x13e573[_0xc68f('0x31')]);_0x2b952['filters']=_[_0xc68f('0x33')](_0x2b952['model'],_0x2b952['query']);_0x544dc7[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x2b952[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x13e573[_0xc68f('0x31')][_0xc68f('0x35')]));_0x544dc7['attributes']=_0x544dc7[_0xc68f('0x34')][_0xc68f('0x36')]?_0x544dc7[_0xc68f('0x34')]:_0x2b952['model'];_0x544dc7[_0xc68f('0x4b')]=qs[_0xc68f('0x38')](_0x13e573['query'][_0xc68f('0x38')]);_0x544dc7[_0xc68f('0x3c')]=qs[_0xc68f('0x32')](_[_0xc68f('0x4c')](_0x13e573['query'],_0x2b952['filters']));if(_0x13e573[_0xc68f('0x31')][_0xc68f('0x39')]){_0x544dc7[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x544dc7[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x544dc7['attributes'],function(_0x446123){var _0x3db8ac={};_0x3db8ac[_0x446123]={'$like':'%'+_0x13e573[_0xc68f('0x31')][_0xc68f('0x39')]+'%'};return _0x3db8ac;})});}_0x544dc7=_[_0xc68f('0x3b')]({},_0x544dc7,_0x13e573[_0xc68f('0x4d')]);return _0x3ee99f[_0xc68f('0x4e')](_0x544dc7);}})[_0xc68f('0x27')](function(_0x1ede44){if(_0x1ede44){_0x47e150=_0x1ede44[_0xc68f('0x36')];if(!_0x13e573[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x544dc7['limit']=qs[_0xc68f('0x1f')](_0x13e573[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x544dc7[_0xc68f('0x1d')]=qs['offset'](_0x13e573[_0xc68f('0x31')]['offset']);}return _0x3ee99f[_0xc68f('0x4e')](_0x544dc7);}})[_0xc68f('0x27')](function(_0x1e8da0){if(_0x1e8da0){return _0x1e8da0?{'count':_0x47e150,'rows':_0x1e8da0}:null;}})['then'](respondWithResult(_0x88200e,null))['catch'](handleError(_0x88200e,null));};exports[_0xc68f('0x4f')]=function(_0x22ed18,_0x40b249,_0x4c4a19){var _0x432a78={};var _0x39d4b7={};var _0x3c909e;var _0x5402b3;return db[_0xc68f('0x3f')]['findOne']({'where':{'id':_0x22ed18[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x40b249,null))[_0xc68f('0x27')](function(_0x2ef4ef){if(_0x2ef4ef){_0x3c909e=_0x2ef4ef;_0x39d4b7[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db[_0xc68f('0x4a')][_0xc68f('0x2b')]);_0x39d4b7['query']=_[_0xc68f('0x43')](_0x22ed18['query']);_0x39d4b7[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x39d4b7[_0xc68f('0x2f')],_0x39d4b7[_0xc68f('0x31')]);_0x432a78[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x39d4b7[_0xc68f('0x2f')],qs['fields'](_0x22ed18['query']['fields']));_0x432a78[_0xc68f('0x34')]=_0x432a78[_0xc68f('0x34')][_0xc68f('0x36')]?_0x432a78[_0xc68f('0x34')]:_0x39d4b7[_0xc68f('0x2f')];_0x432a78[_0xc68f('0x4b')]=qs[_0xc68f('0x38')](_0x22ed18['query'][_0xc68f('0x38')]);_0x432a78[_0xc68f('0x3c')]=qs[_0xc68f('0x32')](_[_0xc68f('0x4c')](_0x22ed18['query'],_0x39d4b7['filters']));if(_0x22ed18[_0xc68f('0x31')][_0xc68f('0x39')]){_0x432a78[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x432a78[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x432a78[_0xc68f('0x34')],function(_0x38b1e0){var _0x48d0d7={};_0x48d0d7[_0x38b1e0]={'$like':'%'+_0x22ed18['query'][_0xc68f('0x39')]+'%'};return _0x48d0d7;})});}_0x432a78=_[_0xc68f('0x3b')]({},_0x432a78,_0x22ed18['options']);return _0x3c909e[_0xc68f('0x4f')](_0x432a78);}})[_0xc68f('0x27')](function(_0x1c464d){if(_0x1c464d){_0x5402b3=_0x1c464d[_0xc68f('0x36')];if(!_0x22ed18[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x432a78[_0xc68f('0x1f')]=qs[_0xc68f('0x1f')](_0x22ed18[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x432a78[_0xc68f('0x1d')]=qs[_0xc68f('0x1d')](_0x22ed18[_0xc68f('0x31')]['offset']);}return _0x3c909e[_0xc68f('0x4f')](_0x432a78);}})[_0xc68f('0x27')](function(_0xd2ba9e){if(_0xd2ba9e){return _0xd2ba9e?{'count':_0x5402b3,'rows':_0xd2ba9e}:null;}})['then'](respondWithResult(_0x40b249,null))[_0xc68f('0x41')](handleError(_0x40b249,null));};exports[_0xc68f('0x50')]=function(_0x254eb2,_0x5d9c2b,_0x482c18){var _0x979bfe={};var _0x4a7f32={};var _0x2e3a01;var _0xcd8323;return db[_0xc68f('0x3f')][_0xc68f('0x49')]({'where':{'id':_0x254eb2[_0xc68f('0x48')]['id']}})[_0xc68f('0x27')](handleEntityNotFound(_0x5d9c2b,null))[_0xc68f('0x27')](function(_0x46511b){if(_0x46511b){_0x2e3a01=_0x46511b;_0x4a7f32[_0xc68f('0x2f')]=_[_0xc68f('0x43')](db['VtigerField'][_0xc68f('0x2b')]);_0x4a7f32['query']=_[_0xc68f('0x43')](_0x254eb2['query']);_0x4a7f32[_0xc68f('0x32')]=_[_0xc68f('0x33')](_0x4a7f32[_0xc68f('0x2f')],_0x4a7f32[_0xc68f('0x31')]);_0x979bfe[_0xc68f('0x34')]=_[_0xc68f('0x33')](_0x4a7f32[_0xc68f('0x2f')],qs[_0xc68f('0x35')](_0x254eb2['query'][_0xc68f('0x35')]));_0x979bfe[_0xc68f('0x34')]=_0x979bfe[_0xc68f('0x34')]['length']?_0x979bfe[_0xc68f('0x34')]:_0x4a7f32['model'];_0x979bfe[_0xc68f('0x4b')]=qs['sort'](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x38')]);_0x979bfe['where']=qs['filters'](_['pick'](_0x254eb2['query'],_0x4a7f32['filters']));if(_0x254eb2[_0xc68f('0x31')][_0xc68f('0x39')]){_0x979bfe[_0xc68f('0x3c')]=_[_0xc68f('0x3b')](_0x979bfe[_0xc68f('0x3c')],{'$or':_[_0xc68f('0x30')](_0x979bfe['attributes'],function(_0x3a1c85){var _0x1dd4b6={};_0x1dd4b6[_0x3a1c85]={'$like':'%'+_0x254eb2['query'][_0xc68f('0x39')]+'%'};return _0x1dd4b6;})});}_0x979bfe=_[_0xc68f('0x3b')]({},_0x979bfe,_0x254eb2[_0xc68f('0x4d')]);return _0x2e3a01[_0xc68f('0x50')](_0x979bfe);}})[_0xc68f('0x27')](function(_0x2338a0){if(_0x2338a0){_0xcd8323=_0x2338a0[_0xc68f('0x36')];if(!_0x254eb2[_0xc68f('0x31')]['hasOwnProperty'](_0xc68f('0x37'))){_0x979bfe[_0xc68f('0x1f')]=qs[_0xc68f('0x1f')](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x1f')]);_0x979bfe[_0xc68f('0x1d')]=qs[_0xc68f('0x1d')](_0x254eb2[_0xc68f('0x31')][_0xc68f('0x1d')]);}return _0x2e3a01[_0xc68f('0x50')](_0x979bfe);}})[_0xc68f('0x27')](function(_0x238dfb){if(_0x238dfb){return _0x238dfb?{'count':_0xcd8323,'rows':_0x238dfb}:null;}})[_0xc68f('0x27')](respondWithResult(_0x5d9c2b,null))['catch'](handleError(_0x5d9c2b,null));};
\ No newline at end of file
index fb216b4..66ae46f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c62=['api','moment','request-promise','path','rimraf','../../config/environment','./intVtigerConfiguration.attributes','exports','define','int_vtiger_configurations','lodash','util'];(function(_0x1bb07a,_0x202ed1){var _0x52ff00=function(_0x55f251){while(--_0x55f251){_0x1bb07a['push'](_0x1bb07a['shift']());}};_0x52ff00(++_0x202ed1);}(_0x0c62,0x6a));var _0x20c6=function(_0x344a2c,_0xb81f43){_0x344a2c=_0x344a2c-0x0;var _0x2408a4=_0x0c62[_0x344a2c];return _0x2408a4;};'use strict';var _=require(_0x20c6('0x0'));var util=require(_0x20c6('0x1'));var logger=require('../../config/logger')(_0x20c6('0x2'));var moment=require(_0x20c6('0x3'));var BPromise=require('bluebird');var rp=require(_0x20c6('0x4'));var fs=require('fs');var path=require(_0x20c6('0x5'));var rimraf=require(_0x20c6('0x6'));var config=require(_0x20c6('0x7'));var attributes=require(_0x20c6('0x8'));module[_0x20c6('0x9')]=function(_0x4d5b4b,_0x4e855b){return _0x4d5b4b[_0x20c6('0xa')]('VtigerConfiguration',attributes,{'tableName':_0x20c6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb529=['int_vtiger_configurations','lodash','util','api','moment','bluebird','request-promise','path','./intVtigerConfiguration.attributes','exports','define','VtigerConfiguration'];(function(_0x143bf5,_0x457a1f){var _0x479db1=function(_0x10c79e){while(--_0x10c79e){_0x143bf5['push'](_0x143bf5['shift']());}};_0x479db1(++_0x457a1f);}(_0xb529,0xa9));var _0x9b52=function(_0x299aed,_0x284438){_0x299aed=_0x299aed-0x0;var _0x24292a=_0xb529[_0x299aed];return _0x24292a;};'use strict';var _=require(_0x9b52('0x0'));var util=require(_0x9b52('0x1'));var logger=require('../../config/logger')(_0x9b52('0x2'));var moment=require(_0x9b52('0x3'));var BPromise=require(_0x9b52('0x4'));var rp=require(_0x9b52('0x5'));var fs=require('fs');var path=require(_0x9b52('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9b52('0x7'));module[_0x9b52('0x8')]=function(_0x4c9d99,_0x44e262){return _0x4c9d99[_0x9b52('0x9')](_0x9b52('0xa'),attributes,{'tableName':_0x9b52('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f842549..d44931d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3afc=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','bluebird'];(function(_0x20cc55,_0x10e04d){var _0x55bf68=function(_0x212119){while(--_0x212119){_0x20cc55['push'](_0x20cc55['shift']());}};_0x55bf68(++_0x10e04d);}(_0x3afc,0x162));var _0xc3af=function(_0x2395a4,_0x54572e){_0x2395a4=_0x2395a4-0x0;var _0x55905b=_0x3afc[_0x2395a4];return _0x55905b;};'use strict';var _=require(_0xc3af('0x0'));var util=require(_0xc3af('0x1'));var moment=require('moment');var BPromise=require(_0xc3af('0x2'));var rs=require(_0xc3af('0x3'));var fs=require('fs');var Redis=require(_0xc3af('0x4'));var db=require(_0xc3af('0x5'))['db'];var utils=require(_0xc3af('0x6'));var logger=require(_0xc3af('0x7'))('rpc');var config=require(_0xc3af('0x8'));var jayson=require(_0xc3af('0x9'));var client=jayson[_0xc3af('0xa')][_0xc3af('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38b869,_0x1d564d,_0x3393bf){return new BPromise(function(_0x147a43,_0x4b1a77){return client[_0xc3af('0xc')](_0x38b869,_0x3393bf)[_0xc3af('0xd')](function(_0x4bf58c){logger[_0xc3af('0xe')](_0xc3af('0xf'),_0x1d564d,'request\x20sent');logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x1d564d,'request\x20sent',JSON[_0xc3af('0x10')](_0x4bf58c));if(_0x4bf58c['error']){if(_0x4bf58c[_0xc3af('0x11')][_0xc3af('0x12')]===0x1f4){logger[_0xc3af('0x11')](_0xc3af('0xf'),_0x1d564d,_0x4bf58c['error'][_0xc3af('0x13')]);return _0x4b1a77(_0x4bf58c[_0xc3af('0x11')][_0xc3af('0x13')]);}logger['error'](_0xc3af('0xf'),_0x1d564d,_0x4bf58c[_0xc3af('0x11')]['message']);return _0x147a43(_0x4bf58c[_0xc3af('0x11')][_0xc3af('0x13')]);}else{logger[_0xc3af('0xe')](_0xc3af('0xf'),_0x1d564d,'request\x20sent');_0x147a43(_0x4bf58c[_0xc3af('0x14')]['message']);}})['catch'](function(_0x28935e){logger[_0xc3af('0x11')](_0xc3af('0xf'),_0x1d564d,_0x28935e);_0x4b1a77(_0x28935e);});});}
\ No newline at end of file
+var _0x4290=['ioredis','../../config/logger','jayson/promise','client','http','request','then','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','randomstring'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x4290,0x74));var _0x0429=function(_0x51aea3,_0x5af6dd){_0x51aea3=_0x51aea3-0x0;var _0xe3311e=_0x4290[_0x51aea3];return _0xe3311e;};'use strict';var _=require(_0x0429('0x0'));var util=require(_0x0429('0x1'));var moment=require(_0x0429('0x2'));var BPromise=require('bluebird');var rs=require(_0x0429('0x3'));var fs=require('fs');var Redis=require(_0x0429('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0429('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x0429('0x6'));var client=jayson[_0x0429('0x7')][_0x0429('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x86bbe,_0x2564be,_0x514e26){return new BPromise(function(_0x45cf96,_0x4067fb){return client[_0x0429('0x9')](_0x86bbe,_0x514e26)[_0x0429('0xa')](function(_0x4d3c11){logger[_0x0429('0xb')](_0x0429('0xc'),_0x2564be,_0x0429('0xd'));logger[_0x0429('0xe')]('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x2564be,_0x0429('0xd'),JSON[_0x0429('0xf')](_0x4d3c11));if(_0x4d3c11[_0x0429('0x10')]){if(_0x4d3c11['error']['code']===0x1f4){logger[_0x0429('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x2564be,_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);return _0x4067fb(_0x4d3c11[_0x0429('0x10')]['message']);}logger[_0x0429('0x10')]('VtigerConfiguration,\x20%s,\x20%s',_0x2564be,_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);return _0x45cf96(_0x4d3c11[_0x0429('0x10')][_0x0429('0x11')]);}else{logger[_0x0429('0xb')](_0x0429('0xc'),_0x2564be,_0x0429('0xd'));_0x45cf96(_0x4d3c11[_0x0429('0x12')][_0x0429('0x11')]);}})[_0x0429('0x13')](function(_0x44b806){logger[_0x0429('0x10')](_0x0429('0xc'),_0x2564be,_0x44b806);_0x4067fb(_0x44b806);});});}
\ No newline at end of file
index 2a4afb9..7f88acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9be=['update','delete','destroy','multer','util','path','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','put'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xf9be,0x16b));var _0xef9b=function(_0x19b3f8,_0x150751){_0x19b3f8=_0x19b3f8-0x0;var _0x22c3a1=_0xf9be[_0x19b3f8];return _0x22c3a1;};'use strict';var multer=require(_0xef9b('0x0'));var util=require(_0xef9b('0x1'));var path=require(_0xef9b('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xef9b('0x3'));var config=require('../../config/environment');var controller=require('./intVtigerField.controller');router[_0xef9b('0x4')]('/',auth[_0xef9b('0x5')](),controller[_0xef9b('0x6')]);router['get'](_0xef9b('0x7'),auth[_0xef9b('0x5')](),controller[_0xef9b('0x8')]);router[_0xef9b('0x9')]('/',auth[_0xef9b('0x5')](),controller[_0xef9b('0xa')]);router[_0xef9b('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xef9b('0xc')]);router[_0xef9b('0xd')]('/:id',auth[_0xef9b('0x5')](),controller[_0xef9b('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xdbfa=['create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','./intVtigerField.controller','post','isAuthenticated'];(function(_0x132558,_0x521d93){var _0x34f138=function(_0x3e3541){while(--_0x3e3541){_0x132558['push'](_0x132558['shift']());}};_0x34f138(++_0x521d93);}(_0xdbfa,0x1b9));var _0xadbf=function(_0xc99edb,_0x47e80c){_0xc99edb=_0xc99edb-0x0;var _0x3920bf=_0xdbfa[_0xc99edb];return _0x3920bf;};'use strict';var multer=require(_0xadbf('0x0'));var util=require(_0xadbf('0x1'));var path=require(_0xadbf('0x2'));var timeout=require(_0xadbf('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xadbf('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xadbf('0x5'));var config=require('../../config/environment');var controller=require(_0xadbf('0x6'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xadbf('0x7')]('/',auth[_0xadbf('0x8')](),controller[_0xadbf('0x9')]);router[_0xadbf('0xa')](_0xadbf('0xb'),auth[_0xadbf('0x8')](),controller[_0xadbf('0xc')]);router['delete']('/:id',auth[_0xadbf('0x8')](),controller[_0xadbf('0xd')]);module[_0xadbf('0xe')]=router;
\ No newline at end of file
index 68b92d1..91bca21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x340a=['keyValue','picklist','STRING','sequelize','exports','ENUM','string','variable'];(function(_0x3fba82,_0x26ef45){var _0x22ae3a=function(_0x564aae){while(--_0x564aae){_0x3fba82['push'](_0x3fba82['shift']());}};_0x22ae3a(++_0x26ef45);}(_0x340a,0x123));var _0xa340=function(_0x4e6eaf,_0x1133ce){_0x4e6eaf=_0x4e6eaf-0x0;var _0x167368=_0x340a[_0x4e6eaf];return _0x167368;};'use strict';var Sequelize=require(_0xa340('0x0'));module[_0xa340('0x1')]={'type':{'type':Sequelize[_0xa340('0x2')](_0xa340('0x3'),_0xa340('0x4'),'customVariable',_0xa340('0x5'),_0xa340('0x6')),'defaultValue':_0xa340('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0xa340('0x7')]},'keyType':{'type':Sequelize[_0xa340('0x2')](_0xa340('0x3'),_0xa340('0x4'),'customVariable')},'keyContent':{'type':Sequelize[_0xa340('0x7')]},'idField':{'type':Sequelize[_0xa340('0x7')]},'nameField':{'type':Sequelize[_0xa340('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xa340('0x7')]}};
\ No newline at end of file
+var _0xb454=['string','variable','customVariable','keyValue','picklist','STRING','BOOLEAN','sequelize','exports','ENUM'];(function(_0x4ffd20,_0x1e83b6){var _0x49b5e2=function(_0xfdd1a6){while(--_0xfdd1a6){_0x4ffd20['push'](_0x4ffd20['shift']());}};_0x49b5e2(++_0x1e83b6);}(_0xb454,0x165));var _0x4b45=function(_0x3b150c,_0x2f93f8){_0x3b150c=_0x3b150c-0x0;var _0x5cd414=_0xb454[_0x3b150c];return _0x5cd414;};'use strict';var Sequelize=require(_0x4b45('0x0'));module[_0x4b45('0x1')]={'type':{'type':Sequelize[_0x4b45('0x2')](_0x4b45('0x3'),_0x4b45('0x4'),_0x4b45('0x5'),_0x4b45('0x6'),_0x4b45('0x7')),'defaultValue':'string'},'content':{'type':Sequelize[_0x4b45('0x8')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4b45('0x2')](_0x4b45('0x3'),_0x4b45('0x4'),_0x4b45('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4b45('0x8')]},'nameField':{'type':Sequelize[_0x4b45('0x8')]},'customField':{'type':Sequelize[_0x4b45('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x4b45('0x8')]}};
\ No newline at end of file
index f8977ef..96a790a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab30=['json','offset','undefined','count','limit','set','Content-Range','save','then','destroy','error','name','send','index','map','VtigerField','rawAttributes','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','keys','options','find','create','body','update','eml-format','rimraf','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end'];(function(_0x4fd4d4,_0x176a09){var _0x365fbf=function(_0x37ddd1){while(--_0x37ddd1){_0x4fd4d4['push'](_0x4fd4d4['shift']());}};_0x365fbf(++_0x176a09);}(_0xab30,0x15a));var _0x0ab3=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0xab30[_0x2641f9];return _0x585741;};'use strict';var emlformat=require(_0x0ab3('0x0'));var rimraf=require(_0x0ab3('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0ab3('0x2'));var moment=require(_0x0ab3('0x3'));var BPromise=require(_0x0ab3('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0ab3('0x5'));var sox=require(_0x0ab3('0x6'));var csv=require(_0x0ab3('0x7'));var ejs=require(_0x0ab3('0x8'));var fs=require('fs');var fs_extra=require(_0x0ab3('0x9'));var _=require(_0x0ab3('0xa'));var squel=require(_0x0ab3('0xb'));var crypto=require(_0x0ab3('0xc'));var jsforce=require(_0x0ab3('0xd'));var deskjs=require(_0x0ab3('0xe'));var toCsv=require(_0x0ab3('0x7'));var querystring=require(_0x0ab3('0xf'));var Papa=require(_0x0ab3('0x10'));var Redis=require(_0x0ab3('0x11'));var authService=require(_0x0ab3('0x12'));var qs=require(_0x0ab3('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0ab3('0x14'));var logger=require(_0x0ab3('0x15'))(_0x0ab3('0x16'));var utils=require(_0x0ab3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x0ab3('0x18'));var db=require(_0x0ab3('0x19'))['db'];function respondWithStatusCode(_0xddbcab,_0x103ef9){_0x103ef9=_0x103ef9||0xcc;return function(_0xbeabb6){if(_0xbeabb6){return _0xddbcab[_0x0ab3('0x1a')](_0x103ef9);}return _0xddbcab[_0x0ab3('0x1b')](_0x103ef9)[_0x0ab3('0x1c')]();};}function respondWithResult(_0x5ab602,_0x3bb486){_0x3bb486=_0x3bb486||0xc8;return function(_0x156468){if(_0x156468){return _0x5ab602[_0x0ab3('0x1b')](_0x3bb486)[_0x0ab3('0x1d')](_0x156468);}};}function respondWithFilteredResult(_0x440de4,_0x5b8a4c){return function(_0x21ed0d){if(_0x21ed0d){var _0x2fe0b1=typeof _0x5b8a4c[_0x0ab3('0x1e')]===_0x0ab3('0x1f')&&typeof _0x5b8a4c['limit']==='undefined';var _0x5af522=_0x21ed0d['count'];var _0x41f782=_0x2fe0b1?0x0:_0x5b8a4c[_0x0ab3('0x1e')];var _0x535a2b=_0x2fe0b1?_0x21ed0d[_0x0ab3('0x20')]:_0x5b8a4c[_0x0ab3('0x1e')]+_0x5b8a4c[_0x0ab3('0x21')];var _0x2eb4b2;if(_0x535a2b>=_0x5af522){_0x535a2b=_0x5af522;_0x2eb4b2=0xc8;}else{_0x2eb4b2=0xce;}_0x440de4['status'](_0x2eb4b2);return _0x440de4[_0x0ab3('0x22')](_0x0ab3('0x23'),_0x41f782+'-'+_0x535a2b+'/'+_0x5af522)['json'](_0x21ed0d);}return null;};}function patchUpdates(_0x3e17d5){return function(_0x2536d3){try{jsonpatch['apply'](_0x2536d3,_0x3e17d5,!![]);}catch(_0x1509df){return BPromise['reject'](_0x1509df);}return _0x2536d3[_0x0ab3('0x24')]();};}function saveUpdates(_0x354464,_0x2a4103){return function(_0xed533c){if(_0xed533c){return _0xed533c['update'](_0x354464)[_0x0ab3('0x25')](function(_0x358416){return _0x358416;});}return null;};}function removeEntity(_0x4eade5,_0x469373){return function(_0x16eec9){if(_0x16eec9){return _0x16eec9[_0x0ab3('0x26')]()[_0x0ab3('0x25')](function(){_0x4eade5[_0x0ab3('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x73c960,_0x5df3da){return function(_0x3503dc){if(!_0x3503dc){_0x73c960[_0x0ab3('0x1a')](0x194);}return _0x3503dc;};}function handleError(_0x1c65c0,_0x33f63c){_0x33f63c=_0x33f63c||0x1f4;return function(_0x2661a8){logger[_0x0ab3('0x27')](_0x2661a8['stack']);if(_0x2661a8[_0x0ab3('0x28')]){delete _0x2661a8[_0x0ab3('0x28')];}_0x1c65c0[_0x0ab3('0x1b')](_0x33f63c)[_0x0ab3('0x29')](_0x2661a8);};}exports[_0x0ab3('0x2a')]=function(_0x138c1d,_0xef5fe0){var _0x357807={},_0x1bffec={},_0x1bb3db={'count':0x0,'rows':[]};var _0x2f71b3=_[_0x0ab3('0x2b')](db[_0x0ab3('0x2c')][_0x0ab3('0x2d')],function(_0x6f748){return{'name':_0x6f748['fieldName'],'type':_0x6f748[_0x0ab3('0x2e')]['key']};});_0x1bffec[_0x0ab3('0x2f')]=_['map'](_0x2f71b3,_0x0ab3('0x28'));_0x1bffec[_0x0ab3('0x30')]=_['keys'](_0x138c1d[_0x0ab3('0x30')]);_0x1bffec[_0x0ab3('0x31')]=_[_0x0ab3('0x32')](_0x1bffec['model'],_0x1bffec[_0x0ab3('0x30')]);_0x357807[_0x0ab3('0x33')]=_[_0x0ab3('0x32')](_0x1bffec['model'],qs[_0x0ab3('0x34')](_0x138c1d['query'][_0x0ab3('0x34')]));_0x357807[_0x0ab3('0x33')]=_0x357807[_0x0ab3('0x33')][_0x0ab3('0x35')]?_0x357807[_0x0ab3('0x33')]:_0x1bffec[_0x0ab3('0x2f')];if(!_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x36')](_0x0ab3('0x37'))){_0x357807[_0x0ab3('0x21')]=qs[_0x0ab3('0x21')](_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x21')]);_0x357807[_0x0ab3('0x1e')]=qs[_0x0ab3('0x1e')](_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x1e')]);}_0x357807[_0x0ab3('0x38')]=qs['sort'](_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x39')]);_0x357807[_0x0ab3('0x3a')]=qs[_0x0ab3('0x31')](_[_0x0ab3('0x3b')](_0x138c1d[_0x0ab3('0x30')],_0x1bffec[_0x0ab3('0x31')]),_0x2f71b3);if(_0x138c1d['query'][_0x0ab3('0x3c')]){_0x357807[_0x0ab3('0x3a')]=_[_0x0ab3('0x3d')](_0x357807['where'],{'$or':_[_0x0ab3('0x2b')](_0x2f71b3,function(_0x38c9a6){if(_0x38c9a6[_0x0ab3('0x2e')]!==_0x0ab3('0x3e')){var _0x379960={};_0x379960[_0x38c9a6[_0x0ab3('0x28')]]={'$like':'%'+_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x3c')]+'%'};return _0x379960;}})});}_0x357807=_[_0x0ab3('0x3d')]({},_0x357807,_0x138c1d['options']);var _0x27d4e2={'where':_0x357807[_0x0ab3('0x3a')]};return db['VtigerField'][_0x0ab3('0x20')](_0x27d4e2)[_0x0ab3('0x25')](function(_0xd1aa5c){_0x1bb3db['count']=_0xd1aa5c;if(_0x138c1d[_0x0ab3('0x30')][_0x0ab3('0x3f')]){_0x357807[_0x0ab3('0x40')]=[{'all':!![]}];}return db[_0x0ab3('0x2c')][_0x0ab3('0x41')](_0x357807);})[_0x0ab3('0x25')](function(_0x5acdb5){_0x1bb3db[_0x0ab3('0x42')]=_0x5acdb5;return _0x1bb3db;})[_0x0ab3('0x25')](respondWithFilteredResult(_0xef5fe0,_0x357807))[_0x0ab3('0x43')](handleError(_0xef5fe0,null));};exports['show']=function(_0x1388ad,_0x37feac){var _0x274b60={'raw':!![],'where':{'id':_0x1388ad[_0x0ab3('0x44')]['id']}},_0x4fed58={};_0x4fed58['model']=_['keys'](db[_0x0ab3('0x2c')][_0x0ab3('0x2d')]);_0x4fed58[_0x0ab3('0x30')]=_[_0x0ab3('0x45')](_0x1388ad[_0x0ab3('0x30')]);_0x4fed58[_0x0ab3('0x31')]=_[_0x0ab3('0x32')](_0x4fed58['model'],_0x4fed58[_0x0ab3('0x30')]);_0x274b60[_0x0ab3('0x33')]=_[_0x0ab3('0x32')](_0x4fed58[_0x0ab3('0x2f')],qs[_0x0ab3('0x34')](_0x1388ad[_0x0ab3('0x30')][_0x0ab3('0x34')]));_0x274b60[_0x0ab3('0x33')]=_0x274b60[_0x0ab3('0x33')][_0x0ab3('0x35')]?_0x274b60[_0x0ab3('0x33')]:_0x4fed58[_0x0ab3('0x2f')];if(_0x1388ad[_0x0ab3('0x30')][_0x0ab3('0x3f')]){_0x274b60[_0x0ab3('0x40')]=[{'all':!![]}];}_0x274b60=_[_0x0ab3('0x3d')]({},_0x274b60,_0x1388ad[_0x0ab3('0x46')]);return db[_0x0ab3('0x2c')][_0x0ab3('0x47')](_0x274b60)[_0x0ab3('0x25')](handleEntityNotFound(_0x37feac,null))['then'](respondWithResult(_0x37feac,null))[_0x0ab3('0x43')](handleError(_0x37feac,null));};exports[_0x0ab3('0x48')]=function(_0x2c0cfd,_0xc553f4){return db['VtigerField'][_0x0ab3('0x48')](_0x2c0cfd[_0x0ab3('0x49')],{})[_0x0ab3('0x25')](respondWithResult(_0xc553f4,0xc9))[_0x0ab3('0x43')](handleError(_0xc553f4,null));};exports[_0x0ab3('0x4a')]=function(_0x1704be,_0x3aae39){if(_0x1704be[_0x0ab3('0x49')]['id']){delete _0x1704be[_0x0ab3('0x49')]['id'];}return db['VtigerField'][_0x0ab3('0x47')]({'where':{'id':_0x1704be['params']['id']}})[_0x0ab3('0x25')](handleEntityNotFound(_0x3aae39,null))[_0x0ab3('0x25')](saveUpdates(_0x1704be[_0x0ab3('0x49')],null))[_0x0ab3('0x25')](respondWithResult(_0x3aae39,null))[_0x0ab3('0x43')](handleError(_0x3aae39,null));};exports[_0x0ab3('0x26')]=function(_0x57874c,_0x198d96){return db[_0x0ab3('0x2c')][_0x0ab3('0x47')]({'where':{'id':_0x57874c['params']['id']}})['then'](handleEntityNotFound(_0x198d96,null))['then'](removeEntity(_0x198d96,null))[_0x0ab3('0x43')](handleError(_0x198d96,null));};
\ No newline at end of file
+var _0x78e6=['squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','name','send','index','map','VtigerField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra'];(function(_0x3e4c5c,_0x59b4a3){var _0x22d6de=function(_0x3679f4){while(--_0x3679f4){_0x3e4c5c['push'](_0x3e4c5c['shift']());}};_0x22d6de(++_0x59b4a3);}(_0x78e6,0xcc));var _0x678e=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x78e6[_0x3e5086];return _0xfeb102;};'use strict';var emlformat=require(_0x678e('0x0'));var rimraf=require(_0x678e('0x1'));var zipdir=require(_0x678e('0x2'));var jsonpatch=require(_0x678e('0x3'));var rp=require(_0x678e('0x4'));var moment=require(_0x678e('0x5'));var BPromise=require(_0x678e('0x6'));var Mustache=require(_0x678e('0x7'));var util=require('util');var path=require(_0x678e('0x8'));var sox=require(_0x678e('0x9'));var csv=require(_0x678e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x678e('0xb'));var _=require('lodash');var squel=require(_0x678e('0xc'));var crypto=require('crypto');var jsforce=require(_0x678e('0xd'));var deskjs=require(_0x678e('0xe'));var toCsv=require('to-csv');var querystring=require(_0x678e('0xf'));var Papa=require(_0x678e('0x10'));var Redis=require(_0x678e('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x678e('0x12'));var hardwareService=require(_0x678e('0x13'));var logger=require(_0x678e('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x678e('0x15'));var licenseUtil=require(_0x678e('0x16'));var db=require(_0x678e('0x17'))['db'];function respondWithStatusCode(_0x13bf8b,_0x292ba6){_0x292ba6=_0x292ba6||0xcc;return function(_0x2810d6){if(_0x2810d6){return _0x13bf8b[_0x678e('0x18')](_0x292ba6);}return _0x13bf8b['status'](_0x292ba6)[_0x678e('0x19')]();};}function respondWithResult(_0x53a14a,_0x5b5191){_0x5b5191=_0x5b5191||0xc8;return function(_0x45d040){if(_0x45d040){return _0x53a14a[_0x678e('0x1a')](_0x5b5191)['json'](_0x45d040);}};}function respondWithFilteredResult(_0x42a5c3,_0x1f4d63){return function(_0x506493){if(_0x506493){var _0x12aca7=typeof _0x1f4d63['offset']===_0x678e('0x1b')&&typeof _0x1f4d63[_0x678e('0x1c')]==='undefined';var _0x4bb161=_0x506493[_0x678e('0x1d')];var _0x31bf2a=_0x12aca7?0x0:_0x1f4d63[_0x678e('0x1e')];var _0x46c896=_0x12aca7?_0x506493[_0x678e('0x1d')]:_0x1f4d63[_0x678e('0x1e')]+_0x1f4d63[_0x678e('0x1c')];var _0x3eb500;if(_0x46c896>=_0x4bb161){_0x46c896=_0x4bb161;_0x3eb500=0xc8;}else{_0x3eb500=0xce;}_0x42a5c3['status'](_0x3eb500);return _0x42a5c3[_0x678e('0x1f')](_0x678e('0x20'),_0x31bf2a+'-'+_0x46c896+'/'+_0x4bb161)['json'](_0x506493);}return null;};}function patchUpdates(_0x2cc569){return function(_0x598179){try{jsonpatch[_0x678e('0x21')](_0x598179,_0x2cc569,!![]);}catch(_0x976daa){return BPromise[_0x678e('0x22')](_0x976daa);}return _0x598179[_0x678e('0x23')]();};}function saveUpdates(_0x569547,_0x115a47){return function(_0x12208a){if(_0x12208a){return _0x12208a[_0x678e('0x24')](_0x569547)[_0x678e('0x25')](function(_0x2535a8){return _0x2535a8;});}return null;};}function removeEntity(_0x57d7a4,_0x3d9190){return function(_0x993602){if(_0x993602){return _0x993602['destroy']()[_0x678e('0x25')](function(){_0x57d7a4[_0x678e('0x1a')](0xcc)[_0x678e('0x19')]();});}};}function handleEntityNotFound(_0x9752b0,_0x43c342){return function(_0x34e904){if(!_0x34e904){_0x9752b0[_0x678e('0x18')](0x194);}return _0x34e904;};}function handleError(_0x243567,_0x353278){_0x353278=_0x353278||0x1f4;return function(_0x21e040){logger[_0x678e('0x26')](_0x21e040['stack']);if(_0x21e040[_0x678e('0x27')]){delete _0x21e040[_0x678e('0x27')];}_0x243567[_0x678e('0x1a')](_0x353278)[_0x678e('0x28')](_0x21e040);};}exports[_0x678e('0x29')]=function(_0xa03e62,_0x28ecca){var _0x22afe7={},_0x2d7826={},_0x59cf24={'count':0x0,'rows':[]};var _0x4a401c=_[_0x678e('0x2a')](db[_0x678e('0x2b')][_0x678e('0x2c')],function(_0x4085){return{'name':_0x4085[_0x678e('0x2d')],'type':_0x4085[_0x678e('0x2e')][_0x678e('0x2f')]};});_0x2d7826[_0x678e('0x30')]=_[_0x678e('0x2a')](_0x4a401c,_0x678e('0x27'));_0x2d7826[_0x678e('0x31')]=_[_0x678e('0x32')](_0xa03e62[_0x678e('0x31')]);_0x2d7826[_0x678e('0x33')]=_['intersection'](_0x2d7826[_0x678e('0x30')],_0x2d7826[_0x678e('0x31')]);_0x22afe7['attributes']=_[_0x678e('0x34')](_0x2d7826['model'],qs[_0x678e('0x35')](_0xa03e62[_0x678e('0x31')][_0x678e('0x35')]));_0x22afe7['attributes']=_0x22afe7[_0x678e('0x36')][_0x678e('0x37')]?_0x22afe7[_0x678e('0x36')]:_0x2d7826[_0x678e('0x30')];if(!_0xa03e62[_0x678e('0x31')][_0x678e('0x38')](_0x678e('0x39'))){_0x22afe7['limit']=qs[_0x678e('0x1c')](_0xa03e62[_0x678e('0x31')][_0x678e('0x1c')]);_0x22afe7[_0x678e('0x1e')]=qs[_0x678e('0x1e')](_0xa03e62['query'][_0x678e('0x1e')]);}_0x22afe7['order']=qs[_0x678e('0x3a')](_0xa03e62['query'][_0x678e('0x3a')]);_0x22afe7[_0x678e('0x3b')]=qs[_0x678e('0x33')](_['pick'](_0xa03e62[_0x678e('0x31')],_0x2d7826['filters']),_0x4a401c);if(_0xa03e62[_0x678e('0x31')]['filter']){_0x22afe7['where']=_[_0x678e('0x3c')](_0x22afe7[_0x678e('0x3b')],{'$or':_[_0x678e('0x2a')](_0x4a401c,function(_0x221755){if(_0x221755['type']!==_0x678e('0x3d')){var _0x537ff4={};_0x537ff4[_0x221755[_0x678e('0x27')]]={'$like':'%'+_0xa03e62[_0x678e('0x31')]['filter']+'%'};return _0x537ff4;}})});}_0x22afe7=_[_0x678e('0x3c')]({},_0x22afe7,_0xa03e62[_0x678e('0x3e')]);var _0x523dcd={'where':_0x22afe7['where']};return db[_0x678e('0x2b')]['count'](_0x523dcd)[_0x678e('0x25')](function(_0x241c5b){_0x59cf24[_0x678e('0x1d')]=_0x241c5b;if(_0xa03e62['query'][_0x678e('0x3f')]){_0x22afe7[_0x678e('0x40')]=[{'all':!![]}];}return db[_0x678e('0x2b')][_0x678e('0x41')](_0x22afe7);})[_0x678e('0x25')](function(_0x3bb032){_0x59cf24['rows']=_0x3bb032;return _0x59cf24;})[_0x678e('0x25')](respondWithFilteredResult(_0x28ecca,_0x22afe7))[_0x678e('0x42')](handleError(_0x28ecca,null));};exports[_0x678e('0x43')]=function(_0x833d49,_0x40f296){var _0x371410={'raw':!![],'where':{'id':_0x833d49[_0x678e('0x44')]['id']}},_0x22118d={};_0x22118d['model']=_[_0x678e('0x32')](db[_0x678e('0x2b')][_0x678e('0x2c')]);_0x22118d['query']=_[_0x678e('0x32')](_0x833d49[_0x678e('0x31')]);_0x22118d[_0x678e('0x33')]=_[_0x678e('0x34')](_0x22118d[_0x678e('0x30')],_0x22118d[_0x678e('0x31')]);_0x371410[_0x678e('0x36')]=_[_0x678e('0x34')](_0x22118d['model'],qs[_0x678e('0x35')](_0x833d49[_0x678e('0x31')][_0x678e('0x35')]));_0x371410[_0x678e('0x36')]=_0x371410[_0x678e('0x36')][_0x678e('0x37')]?_0x371410[_0x678e('0x36')]:_0x22118d[_0x678e('0x30')];if(_0x833d49['query'][_0x678e('0x3f')]){_0x371410[_0x678e('0x40')]=[{'all':!![]}];}_0x371410=_[_0x678e('0x3c')]({},_0x371410,_0x833d49['options']);return db[_0x678e('0x2b')][_0x678e('0x45')](_0x371410)[_0x678e('0x25')](handleEntityNotFound(_0x40f296,null))[_0x678e('0x25')](respondWithResult(_0x40f296,null))[_0x678e('0x42')](handleError(_0x40f296,null));};exports[_0x678e('0x46')]=function(_0x19e51f,_0x4e2c97){return db[_0x678e('0x2b')]['create'](_0x19e51f['body'],{})[_0x678e('0x25')](respondWithResult(_0x4e2c97,0xc9))['catch'](handleError(_0x4e2c97,null));};exports[_0x678e('0x24')]=function(_0x1dfe61,_0x2856d2){if(_0x1dfe61['body']['id']){delete _0x1dfe61['body']['id'];}return db[_0x678e('0x2b')][_0x678e('0x45')]({'where':{'id':_0x1dfe61[_0x678e('0x44')]['id']}})[_0x678e('0x25')](handleEntityNotFound(_0x2856d2,null))['then'](saveUpdates(_0x1dfe61['body'],null))['then'](respondWithResult(_0x2856d2,null))[_0x678e('0x42')](handleError(_0x2856d2,null));};exports[_0x678e('0x47')]=function(_0x54411e,_0x13007a){return db[_0x678e('0x2b')][_0x678e('0x45')]({'where':{'id':_0x54411e[_0x678e('0x44')]['id']}})[_0x678e('0x25')](handleEntityNotFound(_0x13007a,null))['then'](removeEntity(_0x13007a,null))[_0x678e('0x42')](handleError(_0x13007a,null));};
\ No newline at end of file
index 31b97d6..6ca40db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd56a=['rimraf','./intVtigerField.attributes','exports','VtigerField','int_vtiger_fields','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','path'];(function(_0x344adc,_0x183c37){var _0x4014b2=function(_0xe809e5){while(--_0xe809e5){_0x344adc['push'](_0x344adc['shift']());}};_0x4014b2(++_0x183c37);}(_0xd56a,0x13b));var _0xad56=function(_0x4c3eb7,_0x53e68f){_0x4c3eb7=_0x4c3eb7-0x0;var _0xde4438=_0xd56a[_0x4c3eb7];return _0xde4438;};'use strict';var _=require(_0xad56('0x0'));var util=require(_0xad56('0x1'));var logger=require(_0xad56('0x2'))(_0xad56('0x3'));var moment=require(_0xad56('0x4'));var BPromise=require(_0xad56('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xad56('0x6'));var rimraf=require(_0xad56('0x7'));var config=require('../../config/environment');var attributes=require(_0xad56('0x8'));module[_0xad56('0x9')]=function(_0x41bfdf,_0x5d2048){return _0x41bfdf['define'](_0xad56('0xa'),attributes,{'tableName':_0xad56('0xb'),'paranoid':![],'indexes':[{'name':'vtiger_unique_index','fields':[_0xad56('0xc'),_0xad56('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x689e=['VtigerField','vtiger_unique_index','idField','lodash','../../config/logger','api','bluebird','request-promise','../../config/environment','./intVtigerField.attributes','exports','define'];(function(_0x52a6e6,_0x2d1243){var _0x10a5af=function(_0x407f3a){while(--_0x407f3a){_0x52a6e6['push'](_0x52a6e6['shift']());}};_0x10a5af(++_0x2d1243);}(_0x689e,0xff));var _0xe689=function(_0x2e8a34,_0x224b5c){_0x2e8a34=_0x2e8a34-0x0;var _0x1d853d=_0x689e[_0x2e8a34];return _0x1d853d;};'use strict';var _=require(_0xe689('0x0'));var util=require('util');var logger=require(_0xe689('0x1'))(_0xe689('0x2'));var moment=require('moment');var BPromise=require(_0xe689('0x3'));var rp=require(_0xe689('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xe689('0x5'));var attributes=require(_0xe689('0x6'));module[_0xe689('0x7')]=function(_0x229c08,_0x4de4aa){return _0x229c08[_0xe689('0x8')](_0xe689('0x9'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0xe689('0xa'),'fields':[_0xe689('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ddac568..81d45ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce5=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','info','VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','message','catch','lodash','moment','bluebird'];(function(_0x36ac01,_0x36165f){var _0x394d9a=function(_0x5a0e73){while(--_0x5a0e73){_0x36ac01['push'](_0x36ac01['shift']());}};_0x394d9a(++_0x36165f);}(_0x4ce5,0x1b2));var _0x54ce=function(_0x3b0164,_0x10c2ca){_0x3b0164=_0x3b0164-0x0;var _0x144659=_0x4ce5[_0x3b0164];return _0x144659;};'use strict';var _=require(_0x54ce('0x0'));var util=require('util');var moment=require(_0x54ce('0x1'));var BPromise=require(_0x54ce('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x54ce('0x3'))['db'];var utils=require(_0x54ce('0x4'));var logger=require(_0x54ce('0x5'))(_0x54ce('0x6'));var config=require(_0x54ce('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x54ce('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x33154e,_0xc1caec,_0x1f1ebb){return new BPromise(function(_0x5c65ed,_0x40c0e5){return client[_0x54ce('0x9')](_0x33154e,_0x1f1ebb)[_0x54ce('0xa')](function(_0x159741){logger[_0x54ce('0xb')](_0x54ce('0xc'),_0xc1caec,_0x54ce('0xd'));logger[_0x54ce('0xe')](_0x54ce('0xf'),_0xc1caec,'request\x20sent',JSON['stringify'](_0x159741));if(_0x159741[_0x54ce('0x10')]){if(_0x159741['error']['code']===0x1f4){logger[_0x54ce('0x10')](_0x54ce('0xc'),_0xc1caec,_0x159741[_0x54ce('0x10')]['message']);return _0x40c0e5(_0x159741[_0x54ce('0x10')]['message']);}logger['error'](_0x54ce('0xc'),_0xc1caec,_0x159741['error'][_0x54ce('0x11')]);return _0x5c65ed(_0x159741[_0x54ce('0x10')][_0x54ce('0x11')]);}else{logger['info'](_0x54ce('0xc'),_0xc1caec,_0x54ce('0xd'));_0x5c65ed(_0x159741['result'][_0x54ce('0x11')]);}})[_0x54ce('0x12')](function(_0x19c34c){logger['error'](_0x54ce('0xc'),_0xc1caec,_0x19c34c);_0x40c0e5(_0x19c34c);});});}
\ No newline at end of file
+var _0xdfcc=['VtigerField,\x20%s,\x20%s','request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','client','http','then','info'];(function(_0x8f6830,_0x7c8a1e){var _0x4ce2e5=function(_0x5b25ec){while(--_0x5b25ec){_0x8f6830['push'](_0x8f6830['shift']());}};_0x4ce2e5(++_0x7c8a1e);}(_0xdfcc,0x8d));var _0xcdfc=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xdfcc[_0xea8947];return _0x2455e9;};'use strict';var _=require(_0xcdfc('0x0'));var util=require(_0xcdfc('0x1'));var moment=require(_0xcdfc('0x2'));var BPromise=require('bluebird');var rs=require(_0xcdfc('0x3'));var fs=require('fs');var Redis=require(_0xcdfc('0x4'));var db=require(_0xcdfc('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xcdfc('0x6'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcdfc('0x7')][_0xcdfc('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4f942c,_0xcbb5a,_0x35a524){return new BPromise(function(_0x462f04,_0x2b8b7b){return client['request'](_0x4f942c,_0x35a524)[_0xcdfc('0x9')](function(_0x4b91d1){logger[_0xcdfc('0xa')](_0xcdfc('0xb'),_0xcbb5a,_0xcdfc('0xc'));logger[_0xcdfc('0xd')](_0xcdfc('0xe'),_0xcbb5a,_0xcdfc('0xc'),JSON['stringify'](_0x4b91d1));if(_0x4b91d1['error']){if(_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x10')]===0x1f4){logger['error'](_0xcdfc('0xb'),_0xcbb5a,_0x4b91d1[_0xcdfc('0xf')]['message']);return _0x2b8b7b(_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x11')]);}logger[_0xcdfc('0xf')]('VtigerField,\x20%s,\x20%s',_0xcbb5a,_0x4b91d1[_0xcdfc('0xf')][_0xcdfc('0x11')]);return _0x462f04(_0x4b91d1['error'][_0xcdfc('0x11')]);}else{logger[_0xcdfc('0xa')](_0xcdfc('0xb'),_0xcbb5a,'request\x20sent');_0x462f04(_0x4b91d1[_0xcdfc('0x12')][_0xcdfc('0x11')]);}})['catch'](function(_0x375ae5){logger[_0xcdfc('0xf')]('VtigerField,\x20%s,\x20%s',_0xcbb5a,_0x375ae5);_0x2b8b7b(_0x375ae5);});});}
\ No newline at end of file
index b5ec4eb..0958433 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebcb=['post','/:id/configurations','addConfiguration','put','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','getConfigurations','/:id/fields','getFields'];(function(_0x1314d4,_0xb0b16d){var _0x584ba5=function(_0x394269){while(--_0x394269){_0x1314d4['push'](_0x1314d4['shift']());}};_0x584ba5(++_0xb0b16d);}(_0xebcb,0x85));var _0xbebc=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0xebcb[_0x1bbc08];return _0x5d825b;};'use strict';var multer=require('multer');var util=require(_0xbebc('0x0'));var path=require(_0xbebc('0x1'));var timeout=require(_0xbebc('0x2'));var express=require(_0xbebc('0x3'));var router=express[_0xbebc('0x4')]();var fs_extra=require(_0xbebc('0x5'));var auth=require(_0xbebc('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbebc('0x7'));var controller=require('./intZendeskAccount.controller');router[_0xbebc('0x8')]('/',auth[_0xbebc('0x9')](),controller['index']);router['get'](_0xbebc('0xa'),auth[_0xbebc('0x9')](),controller['show']);router[_0xbebc('0x8')]('/:id/configurations',auth[_0xbebc('0x9')](),controller[_0xbebc('0xb')]);router[_0xbebc('0x8')](_0xbebc('0xc'),auth[_0xbebc('0x9')](),controller[_0xbebc('0xd')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0xbebc('0xe')](_0xbebc('0xf'),auth[_0xbebc('0x9')](),controller[_0xbebc('0x10')]);router[_0xbebc('0x11')]('/:id',auth[_0xbebc('0x9')](),controller[_0xbebc('0x12')]);router[_0xbebc('0x13')]('/:id',auth[_0xbebc('0x9')](),controller[_0xbebc('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x9295=['isAuthenticated','show','/:id/configurations','getConfigurations','getFields','post','create','update','delete','destroy','exports','multer','connect-timeout','express','../../config/environment','./intZendeskAccount.controller','get','/:id'];(function(_0x409c91,_0x47533c){var _0x844b39=function(_0x36b8f3){while(--_0x36b8f3){_0x409c91['push'](_0x409c91['shift']());}};_0x844b39(++_0x47533c);}(_0x9295,0x9b));var _0x5929=function(_0x26c6c5,_0x179634){_0x26c6c5=_0x26c6c5-0x0;var _0x1f0010=_0x9295[_0x26c6c5];return _0x1f0010;};'use strict';var multer=require(_0x5929('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5929('0x1'));var express=require(_0x5929('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5929('0x3'));var controller=require(_0x5929('0x4'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x5929('0x5')](_0x5929('0x6'),auth[_0x5929('0x7')](),controller[_0x5929('0x8')]);router[_0x5929('0x5')](_0x5929('0x9'),auth[_0x5929('0x7')](),controller[_0x5929('0xa')]);router[_0x5929('0x5')]('/:id/fields',auth['isAuthenticated'](),controller[_0x5929('0xb')]);router[_0x5929('0xc')]('/',auth[_0x5929('0x7')](),controller[_0x5929('0xd')]);router[_0x5929('0xc')]('/:id/configurations',auth[_0x5929('0x7')](),controller['addConfiguration']);router['put'](_0x5929('0x6'),auth['isAuthenticated'](),controller[_0x5929('0xe')]);router[_0x5929('0xf')]('/:id',auth[_0x5929('0x7')](),controller[_0x5929('0x10')]);module[_0x5929('0x11')]=router;
\ No newline at end of file
index 3a2669a..e21fe95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x627e=['integrationTab','newTab','sequelize','exports','STRING','token','password','ENUM'];(function(_0x37a52a,_0x37e3ed){var _0x2431cb=function(_0x582267){while(--_0x582267){_0x37a52a['push'](_0x37a52a['shift']());}};_0x2431cb(++_0x37e3ed);}(_0x627e,0x14a));var _0xe627=function(_0x1da11b,_0x2d5e1e){_0x1da11b=_0x1da11b-0x0;var _0x50e779=_0x627e[_0x1da11b];return _0x50e779;};'use strict';var Sequelize=require(_0xe627('0x0'));module[_0xe627('0x1')]={'name':{'type':Sequelize[_0xe627('0x2')]},'description':{'type':Sequelize[_0xe627('0x2')]},'username':{'type':Sequelize[_0xe627('0x2')],'unique':'username'},'password':{'type':Sequelize[_0xe627('0x2')]},'token':{'type':Sequelize[_0xe627('0x2')]},'remoteUri':{'type':Sequelize[_0xe627('0x2')],'unique':'remoteUri'},'authType':{'type':Sequelize['ENUM']('password',_0xe627('0x3')),'defaultValue':_0xe627('0x4')},'serverUrl':{'type':Sequelize[_0xe627('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xe627('0x5')](_0xe627('0x6'),_0xe627('0x7')),'defaultValue':'integrationTab'}};
\ No newline at end of file
+var _0x4fb4=['password','token','newTab','integrationTab','exports','STRING','username','remoteUri','ENUM'];(function(_0x2ceba7,_0x451ce4){var _0x5348eb=function(_0x3596fc){while(--_0x3596fc){_0x2ceba7['push'](_0x2ceba7['shift']());}};_0x5348eb(++_0x451ce4);}(_0x4fb4,0x190));var _0x44fb=function(_0x10f5f7,_0x11a6d2){_0x10f5f7=_0x10f5f7-0x0;var _0x497109=_0x4fb4[_0x10f5f7];return _0x497109;};'use strict';var Sequelize=require('sequelize');module[_0x44fb('0x0')]={'name':{'type':Sequelize[_0x44fb('0x1')]},'description':{'type':Sequelize[_0x44fb('0x1')]},'username':{'type':Sequelize[_0x44fb('0x1')],'unique':_0x44fb('0x2')},'password':{'type':Sequelize[_0x44fb('0x1')]},'token':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x44fb('0x1')],'unique':_0x44fb('0x3')},'authType':{'type':Sequelize[_0x44fb('0x4')](_0x44fb('0x5'),_0x44fb('0x6')),'defaultValue':_0x44fb('0x5')},'serverUrl':{'type':Sequelize[_0x44fb('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x44fb('0x4')]('integrationTab',_0x44fb('0x7')),'defaultValue':_0x44fb('0x8')}};
\ No newline at end of file
index 2848214..43fa201 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['undefined','count','Content-Range','apply','update','then','stack','index','map','ZendeskAccount','rawAttributes','fieldName','type','key','model','name','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','rows','catch','show','params','keys','includeAll','include','merge','options','find','create','body','destroy','getConfigurations','findOne','ZendeskConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','ZendeskField','Descriptions','getFields','username','password','token','remoteUri','substring','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','toString','base64','Sequelize','ValidationError','subject','description','assignee','remove','position','title','system_field_options','custom_field_options','test','statusCode','error','stringify','Wrong\x20credentials','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0xd64b,0xc1));var _0xbd64=function(_0x3d78b5,_0x4936ed){_0x3d78b5=_0x3d78b5-0x0;var _0x380d7b=_0xd64b[_0x3d78b5];return _0x380d7b;};'use strict';var emlformat=require(_0xbd64('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbd64('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbd64('0x2'));var moment=require(_0xbd64('0x3'));var BPromise=require(_0xbd64('0x4'));var Mustache=require(_0xbd64('0x5'));var util=require(_0xbd64('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbd64('0x7'));var _=require(_0xbd64('0x8'));var squel=require(_0xbd64('0x9'));var crypto=require(_0xbd64('0xa'));var jsforce=require(_0xbd64('0xb'));var deskjs=require(_0xbd64('0xc'));var toCsv=require(_0xbd64('0xd'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xbd64('0xe'));var authService=require(_0xbd64('0xf'));var qs=require(_0xbd64('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd64('0x11'));var logger=require(_0xbd64('0x12'))(_0xbd64('0x13'));var utils=require(_0xbd64('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xbd64('0x15'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbd64('0x16'));function respondWithStatusCode(_0x2729d8,_0x3a941c){_0x3a941c=_0x3a941c||0xcc;return function(_0x2183e2){if(_0x2183e2){return _0x2729d8[_0xbd64('0x17')](_0x3a941c);}return _0x2729d8[_0xbd64('0x18')](_0x3a941c)[_0xbd64('0x19')]();};}function respondWithResult(_0x269e2f,_0x2b5808){_0x2b5808=_0x2b5808||0xc8;return function(_0x4ae471){if(_0x4ae471){return _0x269e2f[_0xbd64('0x18')](_0x2b5808)[_0xbd64('0x1a')](_0x4ae471);}};}function respondWithFilteredResult(_0x3ff550,_0x32fd34){return function(_0x29fc16){if(_0x29fc16){var _0x49a914=typeof _0x32fd34[_0xbd64('0x1b')]==='undefined'&&typeof _0x32fd34[_0xbd64('0x1c')]===_0xbd64('0x1d');var _0x3aef70=_0x29fc16[_0xbd64('0x1e')];var _0x17d015=_0x49a914?0x0:_0x32fd34[_0xbd64('0x1b')];var _0xa5491d=_0x49a914?_0x29fc16[_0xbd64('0x1e')]:_0x32fd34['offset']+_0x32fd34[_0xbd64('0x1c')];var _0x1f618b;if(_0xa5491d>=_0x3aef70){_0xa5491d=_0x3aef70;_0x1f618b=0xc8;}else{_0x1f618b=0xce;}_0x3ff550['status'](_0x1f618b);return _0x3ff550['set'](_0xbd64('0x1f'),_0x17d015+'-'+_0xa5491d+'/'+_0x3aef70)[_0xbd64('0x1a')](_0x29fc16);}return null;};}function patchUpdates(_0x196d21){return function(_0x39e2eb){try{jsonpatch[_0xbd64('0x20')](_0x39e2eb,_0x196d21,!![]);}catch(_0x816e00){return BPromise['reject'](_0x816e00);}return _0x39e2eb['save']();};}function saveUpdates(_0x6038f,_0x41f2f){return function(_0x12f67b){if(_0x12f67b){return _0x12f67b[_0xbd64('0x21')](_0x6038f)['then'](function(_0x51d118){return _0x51d118;});}return null;};}function removeEntity(_0x28497c,_0x4afaff){return function(_0x46ab38){if(_0x46ab38){return _0x46ab38['destroy']()[_0xbd64('0x22')](function(){_0x28497c[_0xbd64('0x18')](0xcc)[_0xbd64('0x19')]();});}};}function handleEntityNotFound(_0x2d0993,_0x5ae417){return function(_0x9d0fb8){if(!_0x9d0fb8){_0x2d0993[_0xbd64('0x17')](0x194);}return _0x9d0fb8;};}function handleError(_0x13f527,_0x2a44d0){_0x2a44d0=_0x2a44d0||0x1f4;return function(_0x4d1563){logger['error'](_0x4d1563[_0xbd64('0x23')]);if(_0x4d1563['name']){delete _0x4d1563['name'];}_0x13f527[_0xbd64('0x18')](_0x2a44d0)['send'](_0x4d1563);};}exports[_0xbd64('0x24')]=function(_0x5300e8,_0x28199c){var _0x5d8c35={},_0x1db9f3={},_0x3c0eaf={'count':0x0,'rows':[]};var _0x3be63a=_[_0xbd64('0x25')](db[_0xbd64('0x26')][_0xbd64('0x27')],function(_0x4ed44a){return{'name':_0x4ed44a[_0xbd64('0x28')],'type':_0x4ed44a[_0xbd64('0x29')][_0xbd64('0x2a')]};});_0x1db9f3[_0xbd64('0x2b')]=_[_0xbd64('0x25')](_0x3be63a,_0xbd64('0x2c'));_0x1db9f3['query']=_['keys'](_0x5300e8[_0xbd64('0x2d')]);_0x1db9f3['filters']=_[_0xbd64('0x2e')](_0x1db9f3[_0xbd64('0x2b')],_0x1db9f3['query']);_0x5d8c35['attributes']=_[_0xbd64('0x2e')](_0x1db9f3['model'],qs['fields'](_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x5d8c35[_0xbd64('0x30')]=_0x5d8c35['attributes'][_0xbd64('0x31')]?_0x5d8c35['attributes']:_0x1db9f3[_0xbd64('0x2b')];if(!_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x32')](_0xbd64('0x33'))){_0x5d8c35[_0xbd64('0x1c')]=qs[_0xbd64('0x1c')](_0x5300e8['query']['limit']);_0x5d8c35[_0xbd64('0x1b')]=qs[_0xbd64('0x1b')](_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x1b')]);}_0x5d8c35[_0xbd64('0x34')]=qs[_0xbd64('0x35')](_0x5300e8['query']['sort']);_0x5d8c35[_0xbd64('0x36')]=qs[_0xbd64('0x37')](_[_0xbd64('0x38')](_0x5300e8['query'],_0x1db9f3['filters']),_0x3be63a);if(_0x5300e8[_0xbd64('0x2d')]['filter']){_0x5d8c35[_0xbd64('0x36')]=_['merge'](_0x5d8c35[_0xbd64('0x36')],{'$or':_[_0xbd64('0x25')](_0x3be63a,function(_0x550221){if(_0x550221[_0xbd64('0x29')]!=='VIRTUAL'){var _0x534091={};_0x534091[_0x550221[_0xbd64('0x2c')]]={'$like':'%'+_0x5300e8[_0xbd64('0x2d')][_0xbd64('0x39')]+'%'};return _0x534091;}})});}_0x5d8c35=_['merge']({},_0x5d8c35,_0x5300e8['options']);var _0x5d6bcf={'where':_0x5d8c35[_0xbd64('0x36')]};return db[_0xbd64('0x26')]['count'](_0x5d6bcf)[_0xbd64('0x22')](function(_0x34b19a){_0x3c0eaf[_0xbd64('0x1e')]=_0x34b19a;if(_0x5300e8[_0xbd64('0x2d')]['includeAll']){_0x5d8c35['include']=[{'all':!![]}];}return db[_0xbd64('0x26')]['findAll'](_0x5d8c35);})['then'](function(_0x231fa6){_0x3c0eaf[_0xbd64('0x3a')]=_0x231fa6;return _0x3c0eaf;})[_0xbd64('0x22')](respondWithFilteredResult(_0x28199c,_0x5d8c35))[_0xbd64('0x3b')](handleError(_0x28199c,null));};exports[_0xbd64('0x3c')]=function(_0x3155b3,_0x247775){var _0x762380={'raw':![],'where':{'id':_0x3155b3[_0xbd64('0x3d')]['id']}},_0x4870fd={};_0x4870fd[_0xbd64('0x2b')]=_['keys'](db[_0xbd64('0x26')][_0xbd64('0x27')]);_0x4870fd[_0xbd64('0x2d')]=_[_0xbd64('0x3e')](_0x3155b3[_0xbd64('0x2d')]);_0x4870fd[_0xbd64('0x37')]=_[_0xbd64('0x2e')](_0x4870fd['model'],_0x4870fd[_0xbd64('0x2d')]);_0x762380['attributes']=_[_0xbd64('0x2e')](_0x4870fd['model'],qs[_0xbd64('0x2f')](_0x3155b3[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x762380['attributes']=_0x762380[_0xbd64('0x30')]['length']?_0x762380['attributes']:_0x4870fd['model'];if(_0x3155b3[_0xbd64('0x2d')][_0xbd64('0x3f')]){_0x762380[_0xbd64('0x40')]=[{'all':!![]}];}_0x762380=_[_0xbd64('0x41')]({},_0x762380,_0x3155b3[_0xbd64('0x42')]);return db[_0xbd64('0x26')][_0xbd64('0x43')](_0x762380)['then'](handleEntityNotFound(_0x247775,null))[_0xbd64('0x22')](respondWithResult(_0x247775,null))[_0xbd64('0x3b')](handleError(_0x247775,null));};exports[_0xbd64('0x44')]=function(_0x4e5efe,_0x105bee){return db[_0xbd64('0x26')][_0xbd64('0x44')](_0x4e5efe[_0xbd64('0x45')],{})[_0xbd64('0x22')](respondWithResult(_0x105bee,0xc9))['catch'](handleError(_0x105bee,null));};exports[_0xbd64('0x21')]=function(_0x1a9ec8,_0x2a8011){if(_0x1a9ec8[_0xbd64('0x45')]['id']){delete _0x1a9ec8['body']['id'];}return db['ZendeskAccount'][_0xbd64('0x43')]({'where':{'id':_0x1a9ec8[_0xbd64('0x3d')]['id']}})[_0xbd64('0x22')](handleEntityNotFound(_0x2a8011,null))[_0xbd64('0x22')](saveUpdates(_0x1a9ec8[_0xbd64('0x45')],null))[_0xbd64('0x22')](respondWithResult(_0x2a8011,null))[_0xbd64('0x3b')](handleError(_0x2a8011,null));};exports[_0xbd64('0x46')]=function(_0x460158,_0x2709b2){return db[_0xbd64('0x26')][_0xbd64('0x43')]({'where':{'id':_0x460158[_0xbd64('0x3d')]['id']}})[_0xbd64('0x22')](handleEntityNotFound(_0x2709b2,null))[_0xbd64('0x22')](removeEntity(_0x2709b2,null))['catch'](handleError(_0x2709b2,null));};exports[_0xbd64('0x47')]=function(_0x4952db,_0x5ede67,_0x552c95){var _0x4aa662={};var _0xced0ca={};var _0x2f56df;var _0x5480f5;return db[_0xbd64('0x26')][_0xbd64('0x48')]({'where':{'id':_0x4952db[_0xbd64('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5ede67,null))[_0xbd64('0x22')](function(_0x371bad){if(_0x371bad){_0x2f56df=_0x371bad;_0xced0ca[_0xbd64('0x2b')]=_[_0xbd64('0x3e')](db[_0xbd64('0x49')][_0xbd64('0x27')]);_0xced0ca['query']=_['keys'](_0x4952db['query']);_0xced0ca[_0xbd64('0x37')]=_[_0xbd64('0x2e')](_0xced0ca[_0xbd64('0x2b')],_0xced0ca[_0xbd64('0x2d')]);_0x4aa662['attributes']=_[_0xbd64('0x2e')](_0xced0ca[_0xbd64('0x2b')],qs[_0xbd64('0x2f')](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x2f')]));_0x4aa662[_0xbd64('0x30')]=_0x4aa662['attributes'][_0xbd64('0x31')]?_0x4aa662[_0xbd64('0x30')]:_0xced0ca[_0xbd64('0x2b')];_0x4aa662[_0xbd64('0x34')]=qs[_0xbd64('0x35')](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x35')]);_0x4aa662[_0xbd64('0x36')]=qs[_0xbd64('0x37')](_[_0xbd64('0x38')](_0x4952db[_0xbd64('0x2d')],_0xced0ca[_0xbd64('0x37')]));if(_0x4952db['query']['filter']){_0x4aa662[_0xbd64('0x36')]=_[_0xbd64('0x41')](_0x4aa662['where'],{'$or':_['map'](_0x4aa662[_0xbd64('0x30')],function(_0x12bc56){var _0x49051a={};_0x49051a[_0x12bc56]={'$like':'%'+_0x4952db[_0xbd64('0x2d')][_0xbd64('0x39')]+'%'};return _0x49051a;})});}_0x4aa662=_[_0xbd64('0x41')]({},_0x4aa662,_0x4952db[_0xbd64('0x42')]);return _0x2f56df[_0xbd64('0x47')](_0x4aa662);}})[_0xbd64('0x22')](function(_0x2d788){if(_0x2d788){_0x5480f5=_0x2d788[_0xbd64('0x31')];if(!_0x4952db[_0xbd64('0x2d')]['hasOwnProperty'](_0xbd64('0x33'))){_0x4aa662[_0xbd64('0x1c')]=qs[_0xbd64('0x1c')](_0x4952db['query'][_0xbd64('0x1c')]);_0x4aa662[_0xbd64('0x1b')]=qs['offset'](_0x4952db[_0xbd64('0x2d')][_0xbd64('0x1b')]);}return _0x2f56df[_0xbd64('0x47')](_0x4aa662);}})[_0xbd64('0x22')](function(_0x3615bc){if(_0x3615bc){return _0x3615bc?{'count':_0x5480f5,'rows':_0x3615bc}:null;}})[_0xbd64('0x22')](respondWithResult(_0x5ede67,null))['catch'](handleError(_0x5ede67,null));};exports[_0xbd64('0x4a')]=function(_0x1f3bd0,_0xc57eb1,_0x28d899){if(_0x1f3bd0['body']['id']){delete _0x1f3bd0[_0xbd64('0x45')]['id'];}return db[_0xbd64('0x26')]['findOne']({'where':{'id':_0x1f3bd0[_0xbd64('0x3d')]['id']}})['then'](handleEntityNotFound(_0xc57eb1,null))[_0xbd64('0x22')](function(_0x10e269){if(_0x10e269){_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4b')]=_0x10e269['id'];_0x1f3bd0['body'][_0xbd64('0x4c')]=integrations[_0xbd64('0x4d')](_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4e')],_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x29')]);_0x1f3bd0['body']['Descriptions']=integrations['getDescriptions'](_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x4e')],_0x1f3bd0[_0xbd64('0x45')][_0xbd64('0x29')]);return db[_0xbd64('0x49')][_0xbd64('0x44')](_0x1f3bd0['body'],{'include':[{'model':db[_0xbd64('0x4f')],'as':_0xbd64('0x4c')},{'model':db[_0xbd64('0x4f')],'as':_0xbd64('0x50')}]});}return null;})[_0xbd64('0x22')](respondWithResult(_0xc57eb1,null))[_0xbd64('0x3b')](handleError(_0xc57eb1,null));};exports[_0xbd64('0x51')]=function(_0x3d7e47,_0x301f42,_0x18e724){var _0x32e611='';return db[_0xbd64('0x26')]['findOne']({'where':{'id':_0x3d7e47['params']['id']},'attributes':['id',_0xbd64('0x52'),_0xbd64('0x53'),_0xbd64('0x54'),'authType',_0xbd64('0x55')]})['then'](handleEntityNotFound(_0x301f42,null))[_0xbd64('0x22')](function(_0x36ebb5){if(_0x36ebb5){_0x32e611=_0x36ebb5[_0xbd64('0x55')];var _0x819774=_0x32e611['slice'](-0x1);if(_0x819774==='/'){_0x32e611=_0x32e611[_0xbd64('0x56')](0x0,_0x32e611['lastIndexOf'](_0x819774));}var _0x14f79e={'method':_0xbd64('0x57'),'uri':util[_0xbd64('0x58')](_0xbd64('0x59'),_0x32e611,_0xbd64('0x5a')),'json':!![]};switch(_0x36ebb5['authType']){case _0xbd64('0x53'):_0x14f79e[_0xbd64('0x5b')]={'Authorization':util['format'](_0xbd64('0x5c'),new Buffer(util[_0xbd64('0x58')](_0xbd64('0x5d'),_0x36ebb5[_0xbd64('0x52')],_0x36ebb5['password']))[_0xbd64('0x5e')]('base64'))};break;case _0xbd64('0x54'):_0x14f79e[_0xbd64('0x5b')]={'Authorization':util[_0xbd64('0x58')]('Basic\x20%s',new Buffer(util['format']('%s/token:%s',_0x36ebb5['username'],_0x36ebb5[_0xbd64('0x54')]))[_0xbd64('0x5e')](_0xbd64('0x5f')))};break;default:throw new db[(_0xbd64('0x60'))][(_0xbd64('0x61'))]('Unknown\x20authentication\x20type');}return rp(_0x14f79e);}})[_0xbd64('0x22')](function(_0x23de71){if(_0x23de71){var _0xac13e6=[_0xbd64('0x62'),_0xbd64('0x63'),'group',_0xbd64('0x64')];_[_0xbd64('0x65')](_0x23de71[_0xbd64('0x5a')],function(_0x808467){return _0xac13e6['includes'](_0x808467['type']);});return{'count':_0x23de71[_0xbd64('0x5a')][_0xbd64('0x31')],'rows':_[_0xbd64('0x25')](_0x23de71[_0xbd64('0x5a')],function(_0x18b0f0){return{'id':_0x18b0f0['id'],'name':_0x18b0f0[_0xbd64('0x66')]>0x7?_0x18b0f0[_0xbd64('0x67')]:_0x18b0f0[_0xbd64('0x29')],'custom':_0x18b0f0['position']>0x7?!![]:![],'options':_0x18b0f0[_0xbd64('0x68')]?_0x18b0f0['system_field_options']:_0x18b0f0[_0xbd64('0x69')]?_0x18b0f0[_0xbd64('0x69')]:[]};})};}})[_0xbd64('0x22')](respondWithResult(_0x301f42,null))['catch'](function(_0x15b625){var _0x5c30f9=_0x3d7e47['query'][_0xbd64('0x6a')]?0x1f4:_0x15b625[_0xbd64('0x6b')]||0x1f4;logger[_0xbd64('0x6c')]('getFields,\x20%s,\x20%s,\x20%s',_0xbd64('0x51'),_0x5c30f9,JSON[_0xbd64('0x6d')](_0x15b625));delete _0x15b625[_0xbd64('0x2c')];if(_0x5c30f9===0x191){_0x5c30f9=0x190;}_0x301f42[_0xbd64('0x18')](_0x5c30f9)['send'](_0x3d7e47[_0xbd64('0x2d')][_0xbd64('0x6a')]?{'message':_0xbd64('0x6e'),'statusCode':_0x15b625[_0xbd64('0x6b')]}:_0x15b625);});};
\ No newline at end of file
+var _0x7072=['model','query','keys','filters','intersection','attributes','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','ZendeskAccount','count','includeAll','findAll','catch','show','fields','length','include','find','create','body','params','getConfigurations','findOne','ZendeskConfiguration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','getDescriptions','ZendeskField','getFields','password','token','authType','remoteUri','slice','substring','GET','format','%s/%s','ticket_fields','headers','Basic\x20%s','%s:%s','username','toString','base64','%s/token:%s','Unknown\x20authentication\x20type','subject','description','assignee','remove','includes','position','title','system_field_options','custom_field_options','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type'];(function(_0x598fa0,_0x183280){var _0x29a6ab=function(_0x2f82f9){while(--_0x2f82f9){_0x598fa0['push'](_0x598fa0['shift']());}};_0x29a6ab(++_0x183280);}(_0x7072,0x138));var _0x2707=function(_0xa8883,_0x1f107f){_0xa8883=_0xa8883-0x0;var _0x479426=_0x7072[_0xa8883];return _0x479426;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2707('0x0'));var zipdir=require(_0x2707('0x1'));var jsonpatch=require(_0x2707('0x2'));var rp=require(_0x2707('0x3'));var moment=require(_0x2707('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2707('0x5'));var path=require('path');var sox=require(_0x2707('0x6'));var csv=require(_0x2707('0x7'));var ejs=require(_0x2707('0x8'));var fs=require('fs');var fs_extra=require(_0x2707('0x9'));var _=require(_0x2707('0xa'));var squel=require(_0x2707('0xb'));var crypto=require(_0x2707('0xc'));var jsforce=require(_0x2707('0xd'));var deskjs=require(_0x2707('0xe'));var toCsv=require(_0x2707('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x2707('0xf'));var authService=require(_0x2707('0x10'));var qs=require(_0x2707('0x11'));var as=require(_0x2707('0x12'));var hardwareService=require(_0x2707('0x13'));var logger=require(_0x2707('0x14'))(_0x2707('0x15'));var utils=require(_0x2707('0x16'));var config=require(_0x2707('0x17'));var licenseUtil=require(_0x2707('0x18'));var db=require(_0x2707('0x19'))['db'];var integrations=require(_0x2707('0x1a'));function respondWithStatusCode(_0x40d370,_0x5bf16e){_0x5bf16e=_0x5bf16e||0xcc;return function(_0x44c1d7){if(_0x44c1d7){return _0x40d370['sendStatus'](_0x5bf16e);}return _0x40d370[_0x2707('0x1b')](_0x5bf16e)[_0x2707('0x1c')]();};}function respondWithResult(_0xfe975c,_0x3a67f2){_0x3a67f2=_0x3a67f2||0xc8;return function(_0x13d9ac){if(_0x13d9ac){return _0xfe975c['status'](_0x3a67f2)[_0x2707('0x1d')](_0x13d9ac);}};}function respondWithFilteredResult(_0x1a687a,_0x2f6381){return function(_0x5d523f){if(_0x5d523f){var _0x1153d7=typeof _0x2f6381[_0x2707('0x1e')]===_0x2707('0x1f')&&typeof _0x2f6381[_0x2707('0x20')]===_0x2707('0x1f');var _0x27a3ea=_0x5d523f['count'];var _0x119ac4=_0x1153d7?0x0:_0x2f6381[_0x2707('0x1e')];var _0x4009f3=_0x1153d7?_0x5d523f['count']:_0x2f6381['offset']+_0x2f6381['limit'];var _0x1da4a6;if(_0x4009f3>=_0x27a3ea){_0x4009f3=_0x27a3ea;_0x1da4a6=0xc8;}else{_0x1da4a6=0xce;}_0x1a687a[_0x2707('0x1b')](_0x1da4a6);return _0x1a687a[_0x2707('0x21')](_0x2707('0x22'),_0x119ac4+'-'+_0x4009f3+'/'+_0x27a3ea)[_0x2707('0x1d')](_0x5d523f);}return null;};}function patchUpdates(_0x3c2935){return function(_0xab87f1){try{jsonpatch[_0x2707('0x23')](_0xab87f1,_0x3c2935,!![]);}catch(_0x1e50ea){return BPromise[_0x2707('0x24')](_0x1e50ea);}return _0xab87f1[_0x2707('0x25')]();};}function saveUpdates(_0x119df4,_0x454fde){return function(_0x1c0ffe){if(_0x1c0ffe){return _0x1c0ffe['update'](_0x119df4)[_0x2707('0x26')](function(_0x3b030a){return _0x3b030a;});}return null;};}function removeEntity(_0x46259e,_0x369e3a){return function(_0x378ca4){if(_0x378ca4){return _0x378ca4[_0x2707('0x27')]()['then'](function(){_0x46259e[_0x2707('0x1b')](0xcc)[_0x2707('0x1c')]();});}};}function handleEntityNotFound(_0x171add,_0x2ad386){return function(_0x5b763f){if(!_0x5b763f){_0x171add['sendStatus'](0x194);}return _0x5b763f;};}function handleError(_0x2dce16,_0x4ca05d){_0x4ca05d=_0x4ca05d||0x1f4;return function(_0x29dad2){logger[_0x2707('0x28')](_0x29dad2[_0x2707('0x29')]);if(_0x29dad2['name']){delete _0x29dad2[_0x2707('0x2a')];}_0x2dce16[_0x2707('0x1b')](_0x4ca05d)[_0x2707('0x2b')](_0x29dad2);};}exports['index']=function(_0x31e990,_0x42adf8){var _0x4a99ce={},_0xd63d3f={},_0x497c92={'count':0x0,'rows':[]};var _0x5aaffb=_[_0x2707('0x2c')](db['ZendeskAccount'][_0x2707('0x2d')],function(_0x3f153d){return{'name':_0x3f153d[_0x2707('0x2e')],'type':_0x3f153d[_0x2707('0x2f')]['key']};});_0xd63d3f[_0x2707('0x30')]=_[_0x2707('0x2c')](_0x5aaffb,_0x2707('0x2a'));_0xd63d3f[_0x2707('0x31')]=_[_0x2707('0x32')](_0x31e990[_0x2707('0x31')]);_0xd63d3f[_0x2707('0x33')]=_[_0x2707('0x34')](_0xd63d3f[_0x2707('0x30')],_0xd63d3f['query']);_0x4a99ce[_0x2707('0x35')]=_[_0x2707('0x34')](_0xd63d3f['model'],qs['fields'](_0x31e990['query']['fields']));_0x4a99ce['attributes']=_0x4a99ce[_0x2707('0x35')]['length']?_0x4a99ce['attributes']:_0xd63d3f[_0x2707('0x30')];if(!_0x31e990[_0x2707('0x31')]['hasOwnProperty'](_0x2707('0x36'))){_0x4a99ce[_0x2707('0x20')]=qs['limit'](_0x31e990['query'][_0x2707('0x20')]);_0x4a99ce[_0x2707('0x1e')]=qs['offset'](_0x31e990['query'][_0x2707('0x1e')]);}_0x4a99ce[_0x2707('0x37')]=qs['sort'](_0x31e990[_0x2707('0x31')][_0x2707('0x38')]);_0x4a99ce[_0x2707('0x39')]=qs[_0x2707('0x33')](_[_0x2707('0x3a')](_0x31e990[_0x2707('0x31')],_0xd63d3f['filters']),_0x5aaffb);if(_0x31e990[_0x2707('0x31')][_0x2707('0x3b')]){_0x4a99ce[_0x2707('0x39')]=_[_0x2707('0x3c')](_0x4a99ce[_0x2707('0x39')],{'$or':_[_0x2707('0x2c')](_0x5aaffb,function(_0x2700bf){if(_0x2700bf['type']!==_0x2707('0x3d')){var _0x2473e3={};_0x2473e3[_0x2700bf[_0x2707('0x2a')]]={'$like':'%'+_0x31e990[_0x2707('0x31')][_0x2707('0x3b')]+'%'};return _0x2473e3;}})});}_0x4a99ce=_[_0x2707('0x3c')]({},_0x4a99ce,_0x31e990[_0x2707('0x3e')]);var _0x39d9f6={'where':_0x4a99ce[_0x2707('0x39')]};return db[_0x2707('0x3f')][_0x2707('0x40')](_0x39d9f6)[_0x2707('0x26')](function(_0x2a221c){_0x497c92[_0x2707('0x40')]=_0x2a221c;if(_0x31e990[_0x2707('0x31')][_0x2707('0x41')]){_0x4a99ce['include']=[{'all':!![]}];}return db[_0x2707('0x3f')][_0x2707('0x42')](_0x4a99ce);})['then'](function(_0x358aa8){_0x497c92['rows']=_0x358aa8;return _0x497c92;})[_0x2707('0x26')](respondWithFilteredResult(_0x42adf8,_0x4a99ce))[_0x2707('0x43')](handleError(_0x42adf8,null));};exports[_0x2707('0x44')]=function(_0x1d69d3,_0x13e1c0){var _0xdeec24={'raw':![],'where':{'id':_0x1d69d3['params']['id']}},_0x26b464={};_0x26b464[_0x2707('0x30')]=_[_0x2707('0x32')](db['ZendeskAccount'][_0x2707('0x2d')]);_0x26b464[_0x2707('0x31')]=_[_0x2707('0x32')](_0x1d69d3['query']);_0x26b464['filters']=_[_0x2707('0x34')](_0x26b464[_0x2707('0x30')],_0x26b464['query']);_0xdeec24[_0x2707('0x35')]=_['intersection'](_0x26b464[_0x2707('0x30')],qs[_0x2707('0x45')](_0x1d69d3[_0x2707('0x31')][_0x2707('0x45')]));_0xdeec24['attributes']=_0xdeec24[_0x2707('0x35')][_0x2707('0x46')]?_0xdeec24[_0x2707('0x35')]:_0x26b464[_0x2707('0x30')];if(_0x1d69d3[_0x2707('0x31')][_0x2707('0x41')]){_0xdeec24[_0x2707('0x47')]=[{'all':!![]}];}_0xdeec24=_['merge']({},_0xdeec24,_0x1d69d3[_0x2707('0x3e')]);return db[_0x2707('0x3f')][_0x2707('0x48')](_0xdeec24)[_0x2707('0x26')](handleEntityNotFound(_0x13e1c0,null))[_0x2707('0x26')](respondWithResult(_0x13e1c0,null))['catch'](handleError(_0x13e1c0,null));};exports[_0x2707('0x49')]=function(_0x4a6eea,_0xf96f41){return db[_0x2707('0x3f')]['create'](_0x4a6eea[_0x2707('0x4a')],{})[_0x2707('0x26')](respondWithResult(_0xf96f41,0xc9))[_0x2707('0x43')](handleError(_0xf96f41,null));};exports['update']=function(_0x1a8034,_0x59c60f){if(_0x1a8034[_0x2707('0x4a')]['id']){delete _0x1a8034[_0x2707('0x4a')]['id'];}return db['ZendeskAccount'][_0x2707('0x48')]({'where':{'id':_0x1a8034[_0x2707('0x4b')]['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x59c60f,null))['then'](saveUpdates(_0x1a8034['body'],null))[_0x2707('0x26')](respondWithResult(_0x59c60f,null))[_0x2707('0x43')](handleError(_0x59c60f,null));};exports[_0x2707('0x27')]=function(_0x2515dc,_0x463bf){return db['ZendeskAccount']['find']({'where':{'id':_0x2515dc['params']['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x463bf,null))[_0x2707('0x26')](removeEntity(_0x463bf,null))[_0x2707('0x43')](handleError(_0x463bf,null));};exports[_0x2707('0x4c')]=function(_0x1ffcce,_0x5b622c,_0xa2c4c0){var _0x2df682={};var _0x5c99fd={};var _0x482ed1;var _0x3b41b2;return db[_0x2707('0x3f')][_0x2707('0x4d')]({'where':{'id':_0x1ffcce['params']['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x5b622c,null))[_0x2707('0x26')](function(_0x2a2a71){if(_0x2a2a71){_0x482ed1=_0x2a2a71;_0x5c99fd[_0x2707('0x30')]=_['keys'](db[_0x2707('0x4e')][_0x2707('0x2d')]);_0x5c99fd[_0x2707('0x31')]=_[_0x2707('0x32')](_0x1ffcce[_0x2707('0x31')]);_0x5c99fd[_0x2707('0x33')]=_[_0x2707('0x34')](_0x5c99fd[_0x2707('0x30')],_0x5c99fd[_0x2707('0x31')]);_0x2df682[_0x2707('0x35')]=_['intersection'](_0x5c99fd[_0x2707('0x30')],qs['fields'](_0x1ffcce['query'][_0x2707('0x45')]));_0x2df682['attributes']=_0x2df682['attributes'][_0x2707('0x46')]?_0x2df682[_0x2707('0x35')]:_0x5c99fd[_0x2707('0x30')];_0x2df682[_0x2707('0x37')]=qs[_0x2707('0x38')](_0x1ffcce[_0x2707('0x31')][_0x2707('0x38')]);_0x2df682[_0x2707('0x39')]=qs[_0x2707('0x33')](_[_0x2707('0x3a')](_0x1ffcce[_0x2707('0x31')],_0x5c99fd['filters']));if(_0x1ffcce['query']['filter']){_0x2df682[_0x2707('0x39')]=_[_0x2707('0x3c')](_0x2df682[_0x2707('0x39')],{'$or':_['map'](_0x2df682['attributes'],function(_0x33ce37){var _0x39c9b4={};_0x39c9b4[_0x33ce37]={'$like':'%'+_0x1ffcce[_0x2707('0x31')][_0x2707('0x3b')]+'%'};return _0x39c9b4;})});}_0x2df682=_[_0x2707('0x3c')]({},_0x2df682,_0x1ffcce['options']);return _0x482ed1['getConfigurations'](_0x2df682);}})[_0x2707('0x26')](function(_0x6a3e8d){if(_0x6a3e8d){_0x3b41b2=_0x6a3e8d[_0x2707('0x46')];if(!_0x1ffcce[_0x2707('0x31')][_0x2707('0x4f')](_0x2707('0x36'))){_0x2df682[_0x2707('0x20')]=qs[_0x2707('0x20')](_0x1ffcce[_0x2707('0x31')]['limit']);_0x2df682[_0x2707('0x1e')]=qs[_0x2707('0x1e')](_0x1ffcce[_0x2707('0x31')][_0x2707('0x1e')]);}return _0x482ed1[_0x2707('0x4c')](_0x2df682);}})[_0x2707('0x26')](function(_0x519042){if(_0x519042){return _0x519042?{'count':_0x3b41b2,'rows':_0x519042}:null;}})['then'](respondWithResult(_0x5b622c,null))[_0x2707('0x43')](handleError(_0x5b622c,null));};exports[_0x2707('0x50')]=function(_0x4eb8eb,_0x58fefc,_0x4f14e0){if(_0x4eb8eb['body']['id']){delete _0x4eb8eb[_0x2707('0x4a')]['id'];}return db[_0x2707('0x3f')]['findOne']({'where':{'id':_0x4eb8eb[_0x2707('0x4b')]['id']}})[_0x2707('0x26')](handleEntityNotFound(_0x58fefc,null))[_0x2707('0x26')](function(_0x5bad5a){if(_0x5bad5a){_0x4eb8eb['body'][_0x2707('0x51')]=_0x5bad5a['id'];_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x52')]=integrations[_0x2707('0x53')](_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x54')],_0x4eb8eb[_0x2707('0x4a')]['type']);_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x55')]=integrations[_0x2707('0x56')](_0x4eb8eb[_0x2707('0x4a')][_0x2707('0x54')],_0x4eb8eb[_0x2707('0x4a')]['type']);return db[_0x2707('0x4e')][_0x2707('0x49')](_0x4eb8eb[_0x2707('0x4a')],{'include':[{'model':db[_0x2707('0x57')],'as':_0x2707('0x52')},{'model':db[_0x2707('0x57')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x58fefc,null))[_0x2707('0x43')](handleError(_0x58fefc,null));};exports[_0x2707('0x58')]=function(_0x354322,_0x42da4e,_0x3ae5c6){var _0x2af149='';return db['ZendeskAccount']['findOne']({'where':{'id':_0x354322[_0x2707('0x4b')]['id']},'attributes':['id','username',_0x2707('0x59'),_0x2707('0x5a'),_0x2707('0x5b'),_0x2707('0x5c')]})[_0x2707('0x26')](handleEntityNotFound(_0x42da4e,null))[_0x2707('0x26')](function(_0x5bb260){if(_0x5bb260){_0x2af149=_0x5bb260[_0x2707('0x5c')];var _0x4787d7=_0x2af149[_0x2707('0x5d')](-0x1);if(_0x4787d7==='/'){_0x2af149=_0x2af149[_0x2707('0x5e')](0x0,_0x2af149['lastIndexOf'](_0x4787d7));}var _0x155c4f={'method':_0x2707('0x5f'),'uri':util[_0x2707('0x60')](_0x2707('0x61'),_0x2af149,_0x2707('0x62')),'json':!![]};switch(_0x5bb260['authType']){case _0x2707('0x59'):_0x155c4f[_0x2707('0x63')]={'Authorization':util[_0x2707('0x60')](_0x2707('0x64'),new Buffer(util[_0x2707('0x60')](_0x2707('0x65'),_0x5bb260[_0x2707('0x66')],_0x5bb260[_0x2707('0x59')]))[_0x2707('0x67')](_0x2707('0x68')))};break;case _0x2707('0x5a'):_0x155c4f[_0x2707('0x63')]={'Authorization':util[_0x2707('0x60')](_0x2707('0x64'),new Buffer(util[_0x2707('0x60')](_0x2707('0x69'),_0x5bb260[_0x2707('0x66')],_0x5bb260[_0x2707('0x5a')]))['toString'](_0x2707('0x68')))};break;default:throw new db['Sequelize']['ValidationError'](_0x2707('0x6a'));}return rp(_0x155c4f);}})[_0x2707('0x26')](function(_0x35a62c){if(_0x35a62c){var _0x11ac13=[_0x2707('0x6b'),_0x2707('0x6c'),'group',_0x2707('0x6d')];_[_0x2707('0x6e')](_0x35a62c[_0x2707('0x62')],function(_0x54009a){return _0x11ac13[_0x2707('0x6f')](_0x54009a[_0x2707('0x2f')]);});return{'count':_0x35a62c[_0x2707('0x62')][_0x2707('0x46')],'rows':_['map'](_0x35a62c[_0x2707('0x62')],function(_0x5c68d6){return{'id':_0x5c68d6['id'],'name':_0x5c68d6[_0x2707('0x70')]>0x7?_0x5c68d6[_0x2707('0x71')]:_0x5c68d6[_0x2707('0x2f')],'custom':_0x5c68d6[_0x2707('0x70')]>0x7?!![]:![],'options':_0x5c68d6[_0x2707('0x72')]?_0x5c68d6[_0x2707('0x72')]:_0x5c68d6[_0x2707('0x73')]?_0x5c68d6[_0x2707('0x73')]:[]};})};}})[_0x2707('0x26')](respondWithResult(_0x42da4e,null))['catch'](function(_0x4530bc){var _0x5a1a24=_0x354322[_0x2707('0x31')][_0x2707('0x74')]?0x1f4:_0x4530bc[_0x2707('0x75')]||0x1f4;logger[_0x2707('0x28')](_0x2707('0x76'),_0x2707('0x58'),_0x5a1a24,JSON['stringify'](_0x4530bc));delete _0x4530bc['name'];if(_0x5a1a24===0x191){_0x5a1a24=0x190;}_0x42da4e[_0x2707('0x1b')](_0x5a1a24)['send'](_0x354322[_0x2707('0x31')][_0x2707('0x74')]?{'message':_0x2707('0x77'),'statusCode':_0x4530bc[_0x2707('0x75')]}:_0x4530bc);});};
\ No newline at end of file
index 10628fa..fbd479f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7a3=['../../config/environment','./intZendeskAccount.attributes','exports','define','ZendeskAccount','int_zendesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x215f2c,_0x4dbda1){var _0x193f9d=function(_0x4f3b3f){while(--_0x4f3b3f){_0x215f2c['push'](_0x215f2c['shift']());}};_0x193f9d(++_0x4dbda1);}(_0xa7a3,0x102));var _0x3a7a=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xa7a3[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x3a7a('0x0'));var util=require(_0x3a7a('0x1'));var logger=require(_0x3a7a('0x2'))(_0x3a7a('0x3'));var moment=require(_0x3a7a('0x4'));var BPromise=require(_0x3a7a('0x5'));var rp=require(_0x3a7a('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3a7a('0x7'));var config=require(_0x3a7a('0x8'));var attributes=require(_0x3a7a('0x9'));var integrations=require('../../components/integrations/configuration');module[_0x3a7a('0xa')]=function(_0x27b03b,_0x20b6db){return _0x27b03b[_0x3a7a('0xb')](_0x3a7a('0xc'),attributes,{'tableName':_0x3a7a('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0d84=['rimraf','../../config/environment','./intZendeskAccount.attributes','../../components/integrations/configuration','define','ZendeskAccount','lodash','util','bluebird','request-promise','path'];(function(_0x4acf9a,_0x517ad1){var _0xd1bfd9=function(_0x40d56e){while(--_0x40d56e){_0x4acf9a['push'](_0x4acf9a['shift']());}};_0xd1bfd9(++_0x517ad1);}(_0x0d84,0x1ea));var _0x40d8=function(_0x34df9a,_0x14e0db){_0x34df9a=_0x34df9a-0x0;var _0x33b4e7=_0x0d84[_0x34df9a];return _0x33b4e7;};'use strict';var _=require(_0x40d8('0x0'));var util=require(_0x40d8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x40d8('0x2'));var rp=require(_0x40d8('0x3'));var fs=require('fs');var path=require(_0x40d8('0x4'));var rimraf=require(_0x40d8('0x5'));var config=require(_0x40d8('0x6'));var attributes=require(_0x40d8('0x7'));var integrations=require(_0x40d8('0x8'));module['exports']=function(_0x2180d4,_0xd92361){return _0x2180d4[_0x40d8('0x9')](_0x40d8('0xa'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 01f2b98..193172f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa245=['limit','include','model','map','GetZendeskAccount','stringify','ZendeskAccount','find','ShowZendeskAccount','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','message','result','catch','findAll','options','raw','where','attributes'];(function(_0x154b31,_0x2d12bc){var _0x1183d8=function(_0x5c9e27){while(--_0x5c9e27){_0x154b31['push'](_0x154b31['shift']());}};_0x1183d8(++_0x2d12bc);}(_0xa245,0x195));var _0x5a24=function(_0x1cc69f,_0x158209){_0x1cc69f=_0x1cc69f-0x0;var _0x3c7334=_0xa245[_0x1cc69f];return _0x3c7334;};'use strict';var _=require(_0x5a24('0x0'));var util=require(_0x5a24('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5a24('0x2'));var fs=require('fs');var Redis=require(_0x5a24('0x3'));var db=require(_0x5a24('0x4'))['db'];var utils=require(_0x5a24('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5a24('0x6')][_0x5a24('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x363f4a,_0x5d88ac,_0x448597){return new BPromise(function(_0xdcc422,_0xc6591d){return client[_0x5a24('0x8')](_0x363f4a,_0x448597)[_0x5a24('0x9')](function(_0x4190a1){logger[_0x5a24('0xa')](_0x5a24('0xb'),_0x5d88ac,'request\x20sent');logger[_0x5a24('0xc')](_0x5a24('0xd'),_0x5d88ac,_0x5a24('0xe'),JSON['stringify'](_0x4190a1));if(_0x4190a1[_0x5a24('0xf')]){if(_0x4190a1[_0x5a24('0xf')]['code']===0x1f4){logger[_0x5a24('0xf')](_0x5a24('0xb'),_0x5d88ac,_0x4190a1[_0x5a24('0xf')][_0x5a24('0x10')]);return _0xc6591d(_0x4190a1[_0x5a24('0xf')][_0x5a24('0x10')]);}logger[_0x5a24('0xf')](_0x5a24('0xb'),_0x5d88ac,_0x4190a1[_0x5a24('0xf')][_0x5a24('0x10')]);return _0xdcc422(_0x4190a1[_0x5a24('0xf')]['message']);}else{logger[_0x5a24('0xa')](_0x5a24('0xb'),_0x5d88ac,_0x5a24('0xe'));_0xdcc422(_0x4190a1[_0x5a24('0x11')][_0x5a24('0x10')]);}})[_0x5a24('0x12')](function(_0x5dcaef){logger[_0x5a24('0xf')](_0x5a24('0xb'),_0x5d88ac,_0x5dcaef);_0xc6591d(_0x5dcaef);});});}exports['GetZendeskAccount']=function(_0x3bfd6a){var _0x506f7c=this;return new Promise(function(_0x2aed95,_0x3bbade){return db['ZendeskAccount'][_0x5a24('0x13')]({'raw':_0x3bfd6a[_0x5a24('0x14')]?_0x3bfd6a[_0x5a24('0x14')][_0x5a24('0x15')]===undefined?!![]:![]:!![],'where':_0x3bfd6a['options']?_0x3bfd6a[_0x5a24('0x14')][_0x5a24('0x16')]||null:null,'attributes':_0x3bfd6a[_0x5a24('0x14')]?_0x3bfd6a[_0x5a24('0x14')][_0x5a24('0x17')]||null:null,'limit':_0x3bfd6a[_0x5a24('0x14')]?_0x3bfd6a[_0x5a24('0x14')][_0x5a24('0x18')]||null:null,'include':_0x3bfd6a['options']?_0x3bfd6a['options'][_0x5a24('0x19')]?_['map'](_0x3bfd6a[_0x5a24('0x14')][_0x5a24('0x19')],function(_0x17cdb0){return{'model':db[_0x17cdb0[_0x5a24('0x1a')]],'as':_0x17cdb0['as'],'attributes':_0x17cdb0[_0x5a24('0x17')],'include':_0x17cdb0[_0x5a24('0x19')]?_['map'](_0x17cdb0[_0x5a24('0x19')],function(_0x55f286){return{'model':db[_0x55f286['model']],'as':_0x55f286['as'],'attributes':_0x55f286[_0x5a24('0x17')],'include':_0x55f286[_0x5a24('0x19')]?_[_0x5a24('0x1b')](_0x55f286[_0x5a24('0x19')],function(_0x54507e){return{'model':db[_0x54507e[_0x5a24('0x1a')]],'as':_0x54507e['as'],'attributes':_0x54507e[_0x5a24('0x17')]};}):[]};}):[]};}):[]:[]})[_0x5a24('0x9')](function(_0x2f0d2b){logger[_0x5a24('0xa')](_0x5a24('0x1c'),_0x3bfd6a);logger[_0x5a24('0xc')](_0x5a24('0x1c'),_0x3bfd6a,JSON[_0x5a24('0x1d')](_0x2f0d2b));_0x2aed95(_0x2f0d2b);})[_0x5a24('0x12')](function(_0x25fb1c){logger[_0x5a24('0xf')](_0x5a24('0x1c'),_0x25fb1c[_0x5a24('0x10')],_0x3bfd6a);_0x3bbade(_0x506f7c['error'](0x1f4,_0x25fb1c[_0x5a24('0x10')]));});});};exports['ShowZendeskAccount']=function(_0x47237d){var _0x11153a=this;return new Promise(function(_0x58880c,_0x308cdf){return db[_0x5a24('0x1e')][_0x5a24('0x1f')]({'raw':_0x47237d['options']?_0x47237d['options']['raw']===undefined?!![]:![]:!![],'where':_0x47237d[_0x5a24('0x14')]?_0x47237d[_0x5a24('0x14')]['where']||null:null,'attributes':_0x47237d[_0x5a24('0x14')]?_0x47237d[_0x5a24('0x14')]['attributes']||null:null,'include':_0x47237d[_0x5a24('0x14')]?_0x47237d[_0x5a24('0x14')][_0x5a24('0x19')]?_[_0x5a24('0x1b')](_0x47237d[_0x5a24('0x14')][_0x5a24('0x19')],function(_0x329bee){return{'model':db[_0x329bee[_0x5a24('0x1a')]],'as':_0x329bee['as'],'attributes':_0x329bee['attributes'],'include':_0x329bee['include']?_[_0x5a24('0x1b')](_0x329bee[_0x5a24('0x19')],function(_0x2dbfe9){return{'model':db[_0x2dbfe9[_0x5a24('0x1a')]],'as':_0x2dbfe9['as'],'attributes':_0x2dbfe9[_0x5a24('0x17')],'include':_0x2dbfe9[_0x5a24('0x19')]?_['map'](_0x2dbfe9[_0x5a24('0x19')],function(_0x519947){return{'model':db[_0x519947['model']],'as':_0x519947['as'],'attributes':_0x519947[_0x5a24('0x17')]};}):[]};}):[]};}):[]:[]})[_0x5a24('0x9')](function(_0x39b7e6){logger[_0x5a24('0xa')]('ShowZendeskAccount',_0x47237d);logger['debug']('ShowZendeskAccount',_0x47237d,JSON[_0x5a24('0x1d')](_0x39b7e6));_0x58880c(_0x39b7e6);})[_0x5a24('0x12')](function(_0x4712ec){logger[_0x5a24('0xf')](_0x5a24('0x20'),_0x4712ec['message'],_0x47237d);_0x308cdf(_0x11153a[_0x5a24('0xf')](0x1f4,_0x4712ec[_0x5a24('0x10')]));});});};
\ No newline at end of file
+var _0x71ad=['attributes','limit','include','map','model','then','ShowZendeskAccount','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','jayson/promise','http','request','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','info','result','catch','GetZendeskAccount','ZendeskAccount','findAll','options','raw','where'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x71ad,0xee));var _0xd71a=function(_0x1a926b,_0x155165){_0x1a926b=_0x1a926b-0x0;var _0x3a12e5=_0x71ad[_0x1a926b];return _0x3a12e5;};'use strict';var _=require(_0xd71a('0x0'));var util=require(_0xd71a('0x1'));var moment=require('moment');var BPromise=require(_0xd71a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd71a('0x3'));var db=require(_0xd71a('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd71a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd71a('0x6'));var client=jayson['client'][_0xd71a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x371653,_0x1f603d,_0x9a3955){return new BPromise(function(_0x953723,_0x1591a7){return client[_0xd71a('0x8')](_0x371653,_0x9a3955)['then'](function(_0x26102d){logger['info']('ZendeskAccount,\x20%s,\x20%s',_0x1f603d,_0xd71a('0x9'));logger[_0xd71a('0xa')](_0xd71a('0xb'),_0x1f603d,_0xd71a('0x9'),JSON[_0xd71a('0xc')](_0x26102d));if(_0x26102d[_0xd71a('0xd')]){if(_0x26102d[_0xd71a('0xd')][_0xd71a('0xe')]===0x1f4){logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x26102d['error'][_0xd71a('0x10')]);return _0x1591a7(_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);}logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);return _0x953723(_0x26102d[_0xd71a('0xd')][_0xd71a('0x10')]);}else{logger[_0xd71a('0x11')](_0xd71a('0xf'),_0x1f603d,_0xd71a('0x9'));_0x953723(_0x26102d[_0xd71a('0x12')][_0xd71a('0x10')]);}})[_0xd71a('0x13')](function(_0x53904e){logger[_0xd71a('0xd')](_0xd71a('0xf'),_0x1f603d,_0x53904e);_0x1591a7(_0x53904e);});});}exports[_0xd71a('0x14')]=function(_0x5389fd){var _0x50cceb=this;return new Promise(function(_0x4e3832,_0x1188b6){return db[_0xd71a('0x15')][_0xd71a('0x16')]({'raw':_0x5389fd[_0xd71a('0x17')]?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x18')]===undefined?!![]:![]:!![],'where':_0x5389fd['options']?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x19')]||null:null,'attributes':_0x5389fd['options']?_0x5389fd['options'][_0xd71a('0x1a')]||null:null,'limit':_0x5389fd[_0xd71a('0x17')]?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1b')]||null:null,'include':_0x5389fd['options']?_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x5389fd[_0xd71a('0x17')][_0xd71a('0x1c')],function(_0xd5c0a0){return{'model':db[_0xd5c0a0[_0xd71a('0x1e')]],'as':_0xd5c0a0['as'],'attributes':_0xd5c0a0[_0xd71a('0x1a')],'include':_0xd5c0a0[_0xd71a('0x1c')]?_['map'](_0xd5c0a0[_0xd71a('0x1c')],function(_0x525ce9){return{'model':db[_0x525ce9[_0xd71a('0x1e')]],'as':_0x525ce9['as'],'attributes':_0x525ce9['attributes'],'include':_0x525ce9['include']?_[_0xd71a('0x1d')](_0x525ce9['include'],function(_0xef8f8c){return{'model':db[_0xef8f8c[_0xd71a('0x1e')]],'as':_0xef8f8c['as'],'attributes':_0xef8f8c[_0xd71a('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xd71a('0x1f')](function(_0x174209){logger[_0xd71a('0x11')]('GetZendeskAccount',_0x5389fd);logger[_0xd71a('0xa')](_0xd71a('0x14'),_0x5389fd,JSON[_0xd71a('0xc')](_0x174209));_0x4e3832(_0x174209);})[_0xd71a('0x13')](function(_0x953740){logger[_0xd71a('0xd')](_0xd71a('0x14'),_0x953740['message'],_0x5389fd);_0x1188b6(_0x50cceb[_0xd71a('0xd')](0x1f4,_0x953740['message']));});});};exports[_0xd71a('0x20')]=function(_0x4c5054){var _0x93a1fe=this;return new Promise(function(_0x191c4b,_0x5f55c5){return db[_0xd71a('0x15')]['find']({'raw':_0x4c5054[_0xd71a('0x17')]?_0x4c5054['options']['raw']===undefined?!![]:![]:!![],'where':_0x4c5054[_0xd71a('0x17')]?_0x4c5054['options'][_0xd71a('0x19')]||null:null,'attributes':_0x4c5054[_0xd71a('0x17')]?_0x4c5054[_0xd71a('0x17')]['attributes']||null:null,'include':_0x4c5054['options']?_0x4c5054[_0xd71a('0x17')][_0xd71a('0x1c')]?_['map'](_0x4c5054[_0xd71a('0x17')][_0xd71a('0x1c')],function(_0x17b5e1){return{'model':db[_0x17b5e1[_0xd71a('0x1e')]],'as':_0x17b5e1['as'],'attributes':_0x17b5e1[_0xd71a('0x1a')],'include':_0x17b5e1[_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x17b5e1[_0xd71a('0x1c')],function(_0x40a921){return{'model':db[_0x40a921[_0xd71a('0x1e')]],'as':_0x40a921['as'],'attributes':_0x40a921[_0xd71a('0x1a')],'include':_0x40a921[_0xd71a('0x1c')]?_[_0xd71a('0x1d')](_0x40a921[_0xd71a('0x1c')],function(_0x5b0215){return{'model':db[_0x5b0215[_0xd71a('0x1e')]],'as':_0x5b0215['as'],'attributes':_0x5b0215['attributes']};}):[]};}):[]};}):[]:[]})[_0xd71a('0x1f')](function(_0x2fd90b){logger['info'](_0xd71a('0x20'),_0x4c5054);logger[_0xd71a('0xa')](_0xd71a('0x20'),_0x4c5054,JSON['stringify'](_0x2fd90b));_0x191c4b(_0x2fd90b);})[_0xd71a('0x13')](function(_0x3b5dee){logger['error']('ShowZendeskAccount',_0x3b5dee[_0xd71a('0x10')],_0x4c5054);_0x5f55c5(_0x93a1fe[_0xd71a('0xd')](0x1f4,_0x3b5dee[_0xd71a('0x10')]));});});};
\ No newline at end of file
index 37bf9e8..2139469 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ffd=['update','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','post','put'];(function(_0xe38764,_0x28ce79){var _0x5979cf=function(_0x1fedef){while(--_0x1fedef){_0xe38764['push'](_0xe38764['shift']());}};_0x5979cf(++_0x28ce79);}(_0x9ffd,0xaa));var _0xd9ff=function(_0xaade86,_0x27d7db){_0xaade86=_0xaade86-0x0;var _0x223c0b=_0x9ffd[_0xaade86];return _0x223c0b;};'use strict';var multer=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var path=require(_0xd9ff('0x2'));var timeout=require('connect-timeout');var express=require(_0xd9ff('0x3'));var router=express[_0xd9ff('0x4')]();var fs_extra=require(_0xd9ff('0x5'));var auth=require(_0xd9ff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd9ff('0x7'));var controller=require(_0xd9ff('0x8'));router['get']('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xa')]);router[_0xd9ff('0xb')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xd')]);router[_0xd9ff('0xb')](_0xd9ff('0xe'),auth[_0xd9ff('0x9')](),controller['getFields']);router['get']('/:id/subjects',auth['isAuthenticated'](),controller[_0xd9ff('0xf')]);router[_0xd9ff('0xb')](_0xd9ff('0x10'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x11')]);router[_0xd9ff('0xb')](_0xd9ff('0x12'),auth[_0xd9ff('0x9')](),controller['getTags']);router['post']('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x13')]);router[_0xd9ff('0x14')](_0xd9ff('0x12'),auth[_0xd9ff('0x9')](),controller['setTags']);router[_0xd9ff('0x15')](_0xd9ff('0xc'),auth['isAuthenticated'](),controller[_0xd9ff('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xd9ff('0x17')]=router;
\ No newline at end of file
+var _0x91a7=['util','path','connect-timeout','Router','../../components/auth/service','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','/:id/fields','getFields','getSubjects','/:id/descriptions','getDescriptions','/:id/tags','create','put','update','destroy','exports'];(function(_0x737266,_0x4703df){var _0x337420=function(_0x1c739d){while(--_0x1c739d){_0x737266['push'](_0x737266['shift']());}};_0x337420(++_0x4703df);}(_0x91a7,0xe7));var _0x791a=function(_0x23bcd4,_0xd3deb0){_0x23bcd4=_0x23bcd4-0x0;var _0x4cb792=_0x91a7[_0x23bcd4];return _0x4cb792;};'use strict';var multer=require('multer');var util=require(_0x791a('0x0'));var path=require(_0x791a('0x1'));var timeout=require(_0x791a('0x2'));var express=require('express');var router=express[_0x791a('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x791a('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x791a('0x5'));router[_0x791a('0x6')]('/',auth['isAuthenticated'](),controller[_0x791a('0x7')]);router['get'](_0x791a('0x8'),auth[_0x791a('0x9')](),controller['show']);router[_0x791a('0x6')](_0x791a('0xa'),auth[_0x791a('0x9')](),controller[_0x791a('0xb')]);router[_0x791a('0x6')]('/:id/subjects',auth[_0x791a('0x9')](),controller[_0x791a('0xc')]);router['get'](_0x791a('0xd'),auth[_0x791a('0x9')](),controller[_0x791a('0xe')]);router[_0x791a('0x6')](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['getTags']);router['post']('/',auth[_0x791a('0x9')](),controller[_0x791a('0x10')]);router['post'](_0x791a('0xf'),auth[_0x791a('0x9')](),controller['setTags']);router[_0x791a('0x11')](_0x791a('0x8'),auth[_0x791a('0x9')](),controller[_0x791a('0x12')]);router['delete'](_0x791a('0x8'),auth['isAuthenticated'](),controller[_0x791a('0x13')]);module[_0x791a('0x14')]=router;
\ No newline at end of file
index a6b4d80..2b6daa2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d43=['STRING','sequelize'];(function(_0xd8b6b4,_0x5aa2f4){var _0x407e69=function(_0x8b41){while(--_0x8b41){_0xd8b6b4['push'](_0xd8b6b4['shift']());}};_0x407e69(++_0x5aa2f4);}(_0x8d43,0xa9));var _0x38d4=function(_0x2ff585,_0x68d662){_0x2ff585=_0x2ff585-0x0;var _0x5e03d5=_0x8d43[_0x2ff585];return _0x5e03d5;};'use strict';var Sequelize=require(_0x38d4('0x0'));module['exports']={'name':{'type':Sequelize[_0x38d4('0x1')]},'description':{'type':Sequelize[_0x38d4('0x1')]}};
\ No newline at end of file
+var _0x3d36=['STRING','sequelize'];(function(_0x49bdbc,_0xf6921d){var _0x353f74=function(_0x2d165d){while(--_0x2d165d){_0x49bdbc['push'](_0x49bdbc['shift']());}};_0x353f74(++_0xf6921d);}(_0x3d36,0x11f));var _0x63d3=function(_0x30bd4d,_0x50eb60){_0x30bd4d=_0x30bd4d-0x0;var _0x306915=_0x3d36[_0x30bd4d];return _0x306915;};'use strict';var Sequelize=require(_0x63d3('0x0'));module['exports']={'name':{'type':Sequelize[_0x63d3('0x1')]},'description':{'type':Sequelize[_0x63d3('0x1')]}};
\ No newline at end of file
index a9d69bb..d84a6aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c21=['params','find','create','body','findOne','ZendeskField','options','getSubjects','getDescriptions','getTags','setTags','eml-format','zip-dir','request-promise','moment','util','path','to-csv','ejs','fs-extra','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','update','then','destroy','error','stack','name','send','index','ZendeskConfiguration','rawAttributes','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show'];(function(_0x103589,_0x2acf11){var _0x3ea116=function(_0x52eee9){while(--_0x52eee9){_0x103589['push'](_0x103589['shift']());}};_0x3ea116(++_0x2acf11);}(_0x8c21,0x191));var _0x18c2=function(_0x34e6c1,_0x36d7ba){_0x34e6c1=_0x34e6c1-0x0;var _0x4d6b99=_0x8c21[_0x34e6c1];return _0x4d6b99;};'use strict';var emlformat=require(_0x18c2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x18c2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x18c2('0x2'));var moment=require(_0x18c2('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x18c2('0x4'));var path=require(_0x18c2('0x5'));var sox=require('sox');var csv=require(_0x18c2('0x6'));var ejs=require(_0x18c2('0x7'));var fs=require('fs');var fs_extra=require(_0x18c2('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x18c2('0x9'));var Papa=require(_0x18c2('0xa'));var Redis=require(_0x18c2('0xb'));var authService=require(_0x18c2('0xc'));var qs=require(_0x18c2('0xd'));var as=require(_0x18c2('0xe'));var hardwareService=require(_0x18c2('0xf'));var logger=require(_0x18c2('0x10'))('api');var utils=require(_0x18c2('0x11'));var config=require(_0x18c2('0x12'));var licenseUtil=require(_0x18c2('0x13'));var db=require(_0x18c2('0x14'))['db'];function respondWithStatusCode(_0x23f93d,_0x2be4a5){_0x2be4a5=_0x2be4a5||0xcc;return function(_0x5d8cfd){if(_0x5d8cfd){return _0x23f93d[_0x18c2('0x15')](_0x2be4a5);}return _0x23f93d[_0x18c2('0x16')](_0x2be4a5)[_0x18c2('0x17')]();};}function respondWithResult(_0x579414,_0x5b9f86){_0x5b9f86=_0x5b9f86||0xc8;return function(_0x1e0a6f){if(_0x1e0a6f){return _0x579414['status'](_0x5b9f86)[_0x18c2('0x18')](_0x1e0a6f);}};}function respondWithFilteredResult(_0xa9c4eb,_0x28915c){return function(_0x14529f){if(_0x14529f){var _0x3ae120=typeof _0x28915c[_0x18c2('0x19')]==='undefined'&&typeof _0x28915c[_0x18c2('0x1a')]===_0x18c2('0x1b');var _0x2d756b=_0x14529f[_0x18c2('0x1c')];var _0x4304b4=_0x3ae120?0x0:_0x28915c[_0x18c2('0x19')];var _0x2ed243=_0x3ae120?_0x14529f[_0x18c2('0x1c')]:_0x28915c[_0x18c2('0x19')]+_0x28915c['limit'];var _0x1c15aa;if(_0x2ed243>=_0x2d756b){_0x2ed243=_0x2d756b;_0x1c15aa=0xc8;}else{_0x1c15aa=0xce;}_0xa9c4eb[_0x18c2('0x16')](_0x1c15aa);return _0xa9c4eb[_0x18c2('0x1d')]('Content-Range',_0x4304b4+'-'+_0x2ed243+'/'+_0x2d756b)[_0x18c2('0x18')](_0x14529f);}return null;};}function patchUpdates(_0x50f9fe){return function(_0xc5dd0e){try{jsonpatch[_0x18c2('0x1e')](_0xc5dd0e,_0x50f9fe,!![]);}catch(_0x47fbce){return BPromise[_0x18c2('0x1f')](_0x47fbce);}return _0xc5dd0e['save']();};}function saveUpdates(_0x319a33,_0x3bb6d0){return function(_0x1f9043){if(_0x1f9043){return _0x1f9043[_0x18c2('0x20')](_0x319a33)[_0x18c2('0x21')](function(_0x12979d){return _0x12979d;});}return null;};}function removeEntity(_0x46bc4a,_0x1e6871){return function(_0x37dd89){if(_0x37dd89){return _0x37dd89[_0x18c2('0x22')]()['then'](function(){_0x46bc4a[_0x18c2('0x16')](0xcc)[_0x18c2('0x17')]();});}};}function handleEntityNotFound(_0x1c4279,_0x3b09ef){return function(_0x191468){if(!_0x191468){_0x1c4279[_0x18c2('0x15')](0x194);}return _0x191468;};}function handleError(_0x804b2a,_0x569e17){_0x569e17=_0x569e17||0x1f4;return function(_0x28c86d){logger[_0x18c2('0x23')](_0x28c86d[_0x18c2('0x24')]);if(_0x28c86d[_0x18c2('0x25')]){delete _0x28c86d[_0x18c2('0x25')];}_0x804b2a['status'](_0x569e17)[_0x18c2('0x26')](_0x28c86d);};}exports[_0x18c2('0x27')]=function(_0x35919c,_0x2f7d7b){var _0x3b7ce4={},_0x341f0b={},_0x3c576a={'count':0x0,'rows':[]};var _0x3b1dc0=_['map'](db[_0x18c2('0x28')][_0x18c2('0x29')],function(_0x14a7d8){return{'name':_0x14a7d8['fieldName'],'type':_0x14a7d8['type']['key']};});_0x341f0b[_0x18c2('0x2a')]=_[_0x18c2('0x2b')](_0x3b1dc0,_0x18c2('0x25'));_0x341f0b[_0x18c2('0x2c')]=_[_0x18c2('0x2d')](_0x35919c['query']);_0x341f0b[_0x18c2('0x2e')]=_[_0x18c2('0x2f')](_0x341f0b[_0x18c2('0x2a')],_0x341f0b['query']);_0x3b7ce4[_0x18c2('0x30')]=_[_0x18c2('0x2f')](_0x341f0b[_0x18c2('0x2a')],qs[_0x18c2('0x31')](_0x35919c[_0x18c2('0x2c')]['fields']));_0x3b7ce4['attributes']=_0x3b7ce4['attributes'][_0x18c2('0x32')]?_0x3b7ce4[_0x18c2('0x30')]:_0x341f0b[_0x18c2('0x2a')];if(!_0x35919c[_0x18c2('0x2c')][_0x18c2('0x33')](_0x18c2('0x34'))){_0x3b7ce4[_0x18c2('0x1a')]=qs[_0x18c2('0x1a')](_0x35919c[_0x18c2('0x2c')]['limit']);_0x3b7ce4[_0x18c2('0x19')]=qs['offset'](_0x35919c['query'][_0x18c2('0x19')]);}_0x3b7ce4[_0x18c2('0x35')]=qs['sort'](_0x35919c[_0x18c2('0x2c')][_0x18c2('0x36')]);_0x3b7ce4[_0x18c2('0x37')]=qs[_0x18c2('0x2e')](_[_0x18c2('0x38')](_0x35919c[_0x18c2('0x2c')],_0x341f0b[_0x18c2('0x2e')]),_0x3b1dc0);if(_0x35919c[_0x18c2('0x2c')][_0x18c2('0x39')]){_0x3b7ce4[_0x18c2('0x37')]=_['merge'](_0x3b7ce4[_0x18c2('0x37')],{'$or':_[_0x18c2('0x2b')](_0x3b1dc0,function(_0x36cd85){if(_0x36cd85[_0x18c2('0x3a')]!==_0x18c2('0x3b')){var _0x55a531={};_0x55a531[_0x36cd85['name']]={'$like':'%'+_0x35919c[_0x18c2('0x2c')][_0x18c2('0x39')]+'%'};return _0x55a531;}})});}_0x3b7ce4=_[_0x18c2('0x3c')]({},_0x3b7ce4,_0x35919c['options']);var _0x4b4caf={'where':_0x3b7ce4['where']};return db[_0x18c2('0x28')][_0x18c2('0x1c')](_0x4b4caf)[_0x18c2('0x21')](function(_0xc87c33){_0x3c576a[_0x18c2('0x1c')]=_0xc87c33;if(_0x35919c['query'][_0x18c2('0x3d')]){_0x3b7ce4[_0x18c2('0x3e')]=[{'all':!![]}];}return db[_0x18c2('0x28')][_0x18c2('0x3f')](_0x3b7ce4);})['then'](function(_0x12e0c5){_0x3c576a[_0x18c2('0x40')]=_0x12e0c5;return _0x3c576a;})[_0x18c2('0x21')](respondWithFilteredResult(_0x2f7d7b,_0x3b7ce4))[_0x18c2('0x41')](handleError(_0x2f7d7b,null));};exports[_0x18c2('0x42')]=function(_0x528428,_0x45c92e){var _0x1a841e={'raw':![],'where':{'id':_0x528428[_0x18c2('0x43')]['id']}},_0x412fa7={};_0x412fa7[_0x18c2('0x2a')]=_['keys'](db[_0x18c2('0x28')][_0x18c2('0x29')]);_0x412fa7[_0x18c2('0x2c')]=_[_0x18c2('0x2d')](_0x528428[_0x18c2('0x2c')]);_0x412fa7[_0x18c2('0x2e')]=_['intersection'](_0x412fa7['model'],_0x412fa7[_0x18c2('0x2c')]);_0x1a841e[_0x18c2('0x30')]=_['intersection'](_0x412fa7['model'],qs[_0x18c2('0x31')](_0x528428[_0x18c2('0x2c')][_0x18c2('0x31')]));_0x1a841e[_0x18c2('0x30')]=_0x1a841e[_0x18c2('0x30')][_0x18c2('0x32')]?_0x1a841e[_0x18c2('0x30')]:_0x412fa7[_0x18c2('0x2a')];if(_0x528428['query']['includeAll']){_0x1a841e['include']=[{'all':!![]}];}_0x1a841e=_[_0x18c2('0x3c')]({},_0x1a841e,_0x528428['options']);return db[_0x18c2('0x28')][_0x18c2('0x44')](_0x1a841e)[_0x18c2('0x21')](handleEntityNotFound(_0x45c92e,null))[_0x18c2('0x21')](respondWithResult(_0x45c92e,null))['catch'](handleError(_0x45c92e,null));};exports['create']=function(_0x22878c,_0x408d5a){return db['ZendeskConfiguration'][_0x18c2('0x45')](_0x22878c['body'],{})[_0x18c2('0x21')](respondWithResult(_0x408d5a,0xc9))[_0x18c2('0x41')](handleError(_0x408d5a,null));};exports[_0x18c2('0x20')]=function(_0x22e3ba,_0x5b454a){if(_0x22e3ba[_0x18c2('0x46')]['id']){delete _0x22e3ba[_0x18c2('0x46')]['id'];}return db[_0x18c2('0x28')][_0x18c2('0x44')]({'where':{'id':_0x22e3ba[_0x18c2('0x43')]['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x5b454a,null))[_0x18c2('0x21')](saveUpdates(_0x22e3ba[_0x18c2('0x46')],null))[_0x18c2('0x21')](respondWithResult(_0x5b454a,null))[_0x18c2('0x41')](handleError(_0x5b454a,null));};exports[_0x18c2('0x22')]=function(_0x32be13,_0x516626){return db[_0x18c2('0x28')][_0x18c2('0x44')]({'where':{'id':_0x32be13[_0x18c2('0x43')]['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x516626,null))[_0x18c2('0x21')](removeEntity(_0x516626,null))[_0x18c2('0x41')](handleError(_0x516626,null));};exports['getFields']=function(_0x132749,_0x4e4098,_0x4d3c66){var _0x5f5bbc={};var _0x2dd746={};var _0x3500a7;var _0x45c6dd;return db[_0x18c2('0x28')][_0x18c2('0x47')]({'where':{'id':_0x132749[_0x18c2('0x43')]['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x4e4098,null))[_0x18c2('0x21')](function(_0x139aeb){if(_0x139aeb){_0x3500a7=_0x139aeb;_0x2dd746['model']=_['keys'](db[_0x18c2('0x48')][_0x18c2('0x29')]);_0x2dd746['query']=_[_0x18c2('0x2d')](_0x132749['query']);_0x2dd746[_0x18c2('0x2e')]=_['intersection'](_0x2dd746['model'],_0x2dd746['query']);_0x5f5bbc[_0x18c2('0x30')]=_[_0x18c2('0x2f')](_0x2dd746['model'],qs['fields'](_0x132749[_0x18c2('0x2c')][_0x18c2('0x31')]));_0x5f5bbc['attributes']=_0x5f5bbc[_0x18c2('0x30')][_0x18c2('0x32')]?_0x5f5bbc[_0x18c2('0x30')]:_0x2dd746[_0x18c2('0x2a')];_0x5f5bbc[_0x18c2('0x35')]=qs[_0x18c2('0x36')](_0x132749['query'][_0x18c2('0x36')]);_0x5f5bbc[_0x18c2('0x37')]=qs[_0x18c2('0x2e')](_['pick'](_0x132749['query'],_0x2dd746[_0x18c2('0x2e')]));if(_0x132749[_0x18c2('0x2c')]['filter']){_0x5f5bbc['where']=_[_0x18c2('0x3c')](_0x5f5bbc[_0x18c2('0x37')],{'$or':_['map'](_0x5f5bbc[_0x18c2('0x30')],function(_0x2a3e08){var _0x22c0d8={};_0x22c0d8[_0x2a3e08]={'$like':'%'+_0x132749[_0x18c2('0x2c')][_0x18c2('0x39')]+'%'};return _0x22c0d8;})});}_0x5f5bbc=_[_0x18c2('0x3c')]({},_0x5f5bbc,_0x132749[_0x18c2('0x49')]);return _0x3500a7['getFields'](_0x5f5bbc);}})[_0x18c2('0x21')](function(_0x58c5a0){if(_0x58c5a0){_0x45c6dd=_0x58c5a0[_0x18c2('0x32')];if(!_0x132749[_0x18c2('0x2c')][_0x18c2('0x33')](_0x18c2('0x34'))){_0x5f5bbc[_0x18c2('0x1a')]=qs[_0x18c2('0x1a')](_0x132749[_0x18c2('0x2c')]['limit']);_0x5f5bbc[_0x18c2('0x19')]=qs[_0x18c2('0x19')](_0x132749[_0x18c2('0x2c')][_0x18c2('0x19')]);}return _0x3500a7['getFields'](_0x5f5bbc);}})[_0x18c2('0x21')](function(_0x3e3fe4){if(_0x3e3fe4){return _0x3e3fe4?{'count':_0x45c6dd,'rows':_0x3e3fe4}:null;}})[_0x18c2('0x21')](respondWithResult(_0x4e4098,null))['catch'](handleError(_0x4e4098,null));};exports['getSubjects']=function(_0x48b3f1,_0x1b2448,_0x584d44){var _0x1ded89={};var _0x39d1bf={};var _0x31b49c;var _0x40b784;return db[_0x18c2('0x28')]['findOne']({'where':{'id':_0x48b3f1['params']['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x1b2448,null))['then'](function(_0x236397){if(_0x236397){_0x31b49c=_0x236397;_0x39d1bf[_0x18c2('0x2a')]=_[_0x18c2('0x2d')](db[_0x18c2('0x48')][_0x18c2('0x29')]);_0x39d1bf[_0x18c2('0x2c')]=_[_0x18c2('0x2d')](_0x48b3f1[_0x18c2('0x2c')]);_0x39d1bf[_0x18c2('0x2e')]=_[_0x18c2('0x2f')](_0x39d1bf[_0x18c2('0x2a')],_0x39d1bf['query']);_0x1ded89[_0x18c2('0x30')]=_['intersection'](_0x39d1bf[_0x18c2('0x2a')],qs['fields'](_0x48b3f1['query'][_0x18c2('0x31')]));_0x1ded89[_0x18c2('0x30')]=_0x1ded89[_0x18c2('0x30')][_0x18c2('0x32')]?_0x1ded89['attributes']:_0x39d1bf[_0x18c2('0x2a')];_0x1ded89[_0x18c2('0x35')]=qs[_0x18c2('0x36')](_0x48b3f1['query'][_0x18c2('0x36')]);_0x1ded89[_0x18c2('0x37')]=qs[_0x18c2('0x2e')](_[_0x18c2('0x38')](_0x48b3f1[_0x18c2('0x2c')],_0x39d1bf[_0x18c2('0x2e')]));if(_0x48b3f1[_0x18c2('0x2c')][_0x18c2('0x39')]){_0x1ded89['where']=_[_0x18c2('0x3c')](_0x1ded89['where'],{'$or':_['map'](_0x1ded89[_0x18c2('0x30')],function(_0x53eab7){var _0x4e47c8={};_0x4e47c8[_0x53eab7]={'$like':'%'+_0x48b3f1['query'][_0x18c2('0x39')]+'%'};return _0x4e47c8;})});}_0x1ded89=_[_0x18c2('0x3c')]({},_0x1ded89,_0x48b3f1[_0x18c2('0x49')]);return _0x31b49c[_0x18c2('0x4a')](_0x1ded89);}})[_0x18c2('0x21')](function(_0x471e47){if(_0x471e47){_0x40b784=_0x471e47[_0x18c2('0x32')];if(!_0x48b3f1[_0x18c2('0x2c')]['hasOwnProperty'](_0x18c2('0x34'))){_0x1ded89['limit']=qs[_0x18c2('0x1a')](_0x48b3f1[_0x18c2('0x2c')][_0x18c2('0x1a')]);_0x1ded89[_0x18c2('0x19')]=qs[_0x18c2('0x19')](_0x48b3f1['query'][_0x18c2('0x19')]);}return _0x31b49c[_0x18c2('0x4a')](_0x1ded89);}})[_0x18c2('0x21')](function(_0x3329c5){if(_0x3329c5){return _0x3329c5?{'count':_0x40b784,'rows':_0x3329c5}:null;}})[_0x18c2('0x21')](respondWithResult(_0x1b2448,null))['catch'](handleError(_0x1b2448,null));};exports[_0x18c2('0x4b')]=function(_0xf9d60f,_0x58e162,_0x344be0){var _0x24b4f1={};var _0x5aace6={};var _0x29120c;var _0x716fe3;return db[_0x18c2('0x28')]['findOne']({'where':{'id':_0xf9d60f[_0x18c2('0x43')]['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x58e162,null))[_0x18c2('0x21')](function(_0x53bfdf){if(_0x53bfdf){_0x29120c=_0x53bfdf;_0x5aace6[_0x18c2('0x2a')]=_[_0x18c2('0x2d')](db[_0x18c2('0x48')][_0x18c2('0x29')]);_0x5aace6[_0x18c2('0x2c')]=_['keys'](_0xf9d60f[_0x18c2('0x2c')]);_0x5aace6['filters']=_['intersection'](_0x5aace6[_0x18c2('0x2a')],_0x5aace6[_0x18c2('0x2c')]);_0x24b4f1[_0x18c2('0x30')]=_[_0x18c2('0x2f')](_0x5aace6['model'],qs[_0x18c2('0x31')](_0xf9d60f['query']['fields']));_0x24b4f1['attributes']=_0x24b4f1['attributes'][_0x18c2('0x32')]?_0x24b4f1[_0x18c2('0x30')]:_0x5aace6[_0x18c2('0x2a')];_0x24b4f1['order']=qs[_0x18c2('0x36')](_0xf9d60f['query'][_0x18c2('0x36')]);_0x24b4f1[_0x18c2('0x37')]=qs[_0x18c2('0x2e')](_[_0x18c2('0x38')](_0xf9d60f[_0x18c2('0x2c')],_0x5aace6[_0x18c2('0x2e')]));if(_0xf9d60f['query'][_0x18c2('0x39')]){_0x24b4f1['where']=_[_0x18c2('0x3c')](_0x24b4f1['where'],{'$or':_[_0x18c2('0x2b')](_0x24b4f1[_0x18c2('0x30')],function(_0x584701){var _0x3dd722={};_0x3dd722[_0x584701]={'$like':'%'+_0xf9d60f[_0x18c2('0x2c')]['filter']+'%'};return _0x3dd722;})});}_0x24b4f1=_[_0x18c2('0x3c')]({},_0x24b4f1,_0xf9d60f['options']);return _0x29120c[_0x18c2('0x4b')](_0x24b4f1);}})[_0x18c2('0x21')](function(_0x17596d){if(_0x17596d){_0x716fe3=_0x17596d[_0x18c2('0x32')];if(!_0xf9d60f[_0x18c2('0x2c')][_0x18c2('0x33')](_0x18c2('0x34'))){_0x24b4f1[_0x18c2('0x1a')]=qs[_0x18c2('0x1a')](_0xf9d60f[_0x18c2('0x2c')][_0x18c2('0x1a')]);_0x24b4f1[_0x18c2('0x19')]=qs[_0x18c2('0x19')](_0xf9d60f[_0x18c2('0x2c')][_0x18c2('0x19')]);}return _0x29120c[_0x18c2('0x4b')](_0x24b4f1);}})[_0x18c2('0x21')](function(_0x55c69f){if(_0x55c69f){return _0x55c69f?{'count':_0x716fe3,'rows':_0x55c69f}:null;}})['then'](respondWithResult(_0x58e162,null))[_0x18c2('0x41')](handleError(_0x58e162,null));};exports[_0x18c2('0x4c')]=function(_0xd8a7fa,_0x228db6,_0x4747d5){var _0x210047={};var _0x5aa58e={};var _0x575ecc;var _0x3a65af;return db['ZendeskConfiguration'][_0x18c2('0x47')]({'where':{'id':_0xd8a7fa['params']['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x228db6,null))[_0x18c2('0x21')](function(_0x5bb879){if(_0x5bb879){_0x575ecc=_0x5bb879;_0x5aa58e['model']=_['keys'](db['Tag'][_0x18c2('0x29')]);_0x5aa58e['query']=_[_0x18c2('0x2d')](_0xd8a7fa['query']);_0x5aa58e[_0x18c2('0x2e')]=_[_0x18c2('0x2f')](_0x5aa58e['model'],_0x5aa58e[_0x18c2('0x2c')]);_0x210047[_0x18c2('0x30')]=_[_0x18c2('0x2f')](_0x5aa58e['model'],qs[_0x18c2('0x31')](_0xd8a7fa[_0x18c2('0x2c')]['fields']));_0x210047['attributes']=_0x210047['attributes'][_0x18c2('0x32')]?_0x210047[_0x18c2('0x30')]:_0x5aa58e[_0x18c2('0x2a')];_0x210047[_0x18c2('0x35')]=qs[_0x18c2('0x36')](_0xd8a7fa[_0x18c2('0x2c')][_0x18c2('0x36')]);_0x210047[_0x18c2('0x37')]=qs[_0x18c2('0x2e')](_['pick'](_0xd8a7fa[_0x18c2('0x2c')],_0x5aa58e[_0x18c2('0x2e')]));if(_0xd8a7fa['query']['filter']){_0x210047[_0x18c2('0x37')]=_['merge'](_0x210047[_0x18c2('0x37')],{'$or':_[_0x18c2('0x2b')](_0x210047['attributes'],function(_0x3547d5){var _0x232e84={};_0x232e84[_0x3547d5]={'$like':'%'+_0xd8a7fa[_0x18c2('0x2c')][_0x18c2('0x39')]+'%'};return _0x232e84;})});}_0x210047=_[_0x18c2('0x3c')]({},_0x210047,_0xd8a7fa[_0x18c2('0x49')]);return _0x575ecc[_0x18c2('0x4c')](_0x210047);}})['then'](function(_0x3d4f79){if(_0x3d4f79){_0x3a65af=_0x3d4f79[_0x18c2('0x32')];if(!_0xd8a7fa[_0x18c2('0x2c')][_0x18c2('0x33')](_0x18c2('0x34'))){_0x210047['limit']=qs['limit'](_0xd8a7fa['query']['limit']);_0x210047[_0x18c2('0x19')]=qs[_0x18c2('0x19')](_0xd8a7fa['query']['offset']);}return _0x575ecc[_0x18c2('0x4c')](_0x210047);}})[_0x18c2('0x21')](function(_0x45d535){if(_0x45d535){return _0x45d535?{'count':_0x3a65af,'rows':_0x45d535}:null;}})['then'](respondWithResult(_0x228db6,null))[_0x18c2('0x41')](handleError(_0x228db6,null));};exports['setTags']=function(_0x2eb6ac,_0x22d1c3,_0x4b3d0b){if(_0x2eb6ac[_0x18c2('0x46')]['id']){delete _0x2eb6ac[_0x18c2('0x46')]['id'];}return db[_0x18c2('0x28')][_0x18c2('0x47')]({'where':{'id':_0x2eb6ac[_0x18c2('0x43')]['id']}})[_0x18c2('0x21')](handleEntityNotFound(_0x22d1c3,null))[_0x18c2('0x21')](function(_0x381d3d){if(_0x381d3d){return _0x381d3d[_0x18c2('0x4d')](_0x2eb6ac['body']['ids']||[]);}return null;})['then'](respondWithResult(_0x22d1c3,null))[_0x18c2('0x41')](handleError(_0x22d1c3,null));};
\ No newline at end of file
+var _0x020a=['include','rows','show','params','find','catch','create','body','getFields','findOne','ZendeskField','nolimit','getSubjects','getTags','setTags','ids','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','options','ZendeskConfiguration','includeAll'];(function(_0x371a1d,_0x3591f3){var _0x4ba340=function(_0x57cfbc){while(--_0x57cfbc){_0x371a1d['push'](_0x371a1d['shift']());}};_0x4ba340(++_0x3591f3);}(_0x020a,0xb8));var _0xa020=function(_0xe7d07d,_0x52e4e3){_0xe7d07d=_0xe7d07d-0x0;var _0x229e46=_0x020a[_0xe7d07d];return _0x229e46;};'use strict';var emlformat=require(_0xa020('0x0'));var rimraf=require(_0xa020('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa020('0x2'));var rp=require(_0xa020('0x3'));var moment=require(_0xa020('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa020('0x5'));var util=require('util');var path=require('path');var sox=require(_0xa020('0x6'));var csv=require(_0xa020('0x7'));var ejs=require(_0xa020('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa020('0x9'));var squel=require(_0xa020('0xa'));var crypto=require(_0xa020('0xb'));var jsforce=require(_0xa020('0xc'));var deskjs=require(_0xa020('0xd'));var toCsv=require(_0xa020('0x7'));var querystring=require(_0xa020('0xe'));var Papa=require('papaparse');var Redis=require(_0xa020('0xf'));var authService=require(_0xa020('0x10'));var qs=require(_0xa020('0x11'));var as=require(_0xa020('0x12'));var hardwareService=require(_0xa020('0x13'));var logger=require(_0xa020('0x14'))(_0xa020('0x15'));var utils=require('../../config/utils');var config=require(_0xa020('0x16'));var licenseUtil=require(_0xa020('0x17'));var db=require(_0xa020('0x18'))['db'];function respondWithStatusCode(_0x45c3ee,_0x1a2003){_0x1a2003=_0x1a2003||0xcc;return function(_0x45e357){if(_0x45e357){return _0x45c3ee[_0xa020('0x19')](_0x1a2003);}return _0x45c3ee[_0xa020('0x1a')](_0x1a2003)[_0xa020('0x1b')]();};}function respondWithResult(_0x926b35,_0x290d47){_0x290d47=_0x290d47||0xc8;return function(_0x20d239){if(_0x20d239){return _0x926b35['status'](_0x290d47)[_0xa020('0x1c')](_0x20d239);}};}function respondWithFilteredResult(_0x507fe4,_0x34950b){return function(_0xa9379b){if(_0xa9379b){var _0x29a61f=typeof _0x34950b[_0xa020('0x1d')]===_0xa020('0x1e')&&typeof _0x34950b['limit']===_0xa020('0x1e');var _0x532c6a=_0xa9379b['count'];var _0x324023=_0x29a61f?0x0:_0x34950b['offset'];var _0x3ad328=_0x29a61f?_0xa9379b[_0xa020('0x1f')]:_0x34950b[_0xa020('0x1d')]+_0x34950b[_0xa020('0x20')];var _0xa2387b;if(_0x3ad328>=_0x532c6a){_0x3ad328=_0x532c6a;_0xa2387b=0xc8;}else{_0xa2387b=0xce;}_0x507fe4[_0xa020('0x1a')](_0xa2387b);return _0x507fe4[_0xa020('0x21')](_0xa020('0x22'),_0x324023+'-'+_0x3ad328+'/'+_0x532c6a)[_0xa020('0x1c')](_0xa9379b);}return null;};}function patchUpdates(_0x56688b){return function(_0x3bc198){try{jsonpatch['apply'](_0x3bc198,_0x56688b,!![]);}catch(_0x5247f4){return BPromise[_0xa020('0x23')](_0x5247f4);}return _0x3bc198[_0xa020('0x24')]();};}function saveUpdates(_0x5ecc12,_0x51bbac){return function(_0x505490){if(_0x505490){return _0x505490[_0xa020('0x25')](_0x5ecc12)[_0xa020('0x26')](function(_0x5e8944){return _0x5e8944;});}return null;};}function removeEntity(_0x37be39,_0x110769){return function(_0x704297){if(_0x704297){return _0x704297[_0xa020('0x27')]()[_0xa020('0x26')](function(){_0x37be39[_0xa020('0x1a')](0xcc)[_0xa020('0x1b')]();});}};}function handleEntityNotFound(_0x3b85ea,_0x3ece45){return function(_0x4a2ece){if(!_0x4a2ece){_0x3b85ea['sendStatus'](0x194);}return _0x4a2ece;};}function handleError(_0x301a47,_0x21211c){_0x21211c=_0x21211c||0x1f4;return function(_0x277e0f){logger[_0xa020('0x28')](_0x277e0f[_0xa020('0x29')]);if(_0x277e0f[_0xa020('0x2a')]){delete _0x277e0f[_0xa020('0x2a')];}_0x301a47['status'](_0x21211c)[_0xa020('0x2b')](_0x277e0f);};}exports[_0xa020('0x2c')]=function(_0x4d5735,_0x48f919){var _0x5e8dcf={},_0x4750c0={},_0x1c44cd={'count':0x0,'rows':[]};var _0x336aa9=_[_0xa020('0x2d')](db['ZendeskConfiguration'][_0xa020('0x2e')],function(_0x44a18b){return{'name':_0x44a18b[_0xa020('0x2f')],'type':_0x44a18b[_0xa020('0x30')][_0xa020('0x31')]};});_0x4750c0[_0xa020('0x32')]=_[_0xa020('0x2d')](_0x336aa9,'name');_0x4750c0[_0xa020('0x33')]=_[_0xa020('0x34')](_0x4d5735['query']);_0x4750c0['filters']=_[_0xa020('0x35')](_0x4750c0[_0xa020('0x32')],_0x4750c0[_0xa020('0x33')]);_0x5e8dcf[_0xa020('0x36')]=_['intersection'](_0x4750c0['model'],qs['fields'](_0x4d5735[_0xa020('0x33')][_0xa020('0x37')]));_0x5e8dcf[_0xa020('0x36')]=_0x5e8dcf[_0xa020('0x36')][_0xa020('0x38')]?_0x5e8dcf[_0xa020('0x36')]:_0x4750c0['model'];if(!_0x4d5735['query'][_0xa020('0x39')]('nolimit')){_0x5e8dcf[_0xa020('0x20')]=qs[_0xa020('0x20')](_0x4d5735[_0xa020('0x33')][_0xa020('0x20')]);_0x5e8dcf['offset']=qs[_0xa020('0x1d')](_0x4d5735['query']['offset']);}_0x5e8dcf[_0xa020('0x3a')]=qs[_0xa020('0x3b')](_0x4d5735[_0xa020('0x33')]['sort']);_0x5e8dcf[_0xa020('0x3c')]=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x4d5735['query'],_0x4750c0[_0xa020('0x3d')]),_0x336aa9);if(_0x4d5735[_0xa020('0x33')][_0xa020('0x3f')]){_0x5e8dcf[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x5e8dcf['where'],{'$or':_[_0xa020('0x2d')](_0x336aa9,function(_0x33705b){if(_0x33705b[_0xa020('0x30')]!=='VIRTUAL'){var _0x1a6db4={};_0x1a6db4[_0x33705b[_0xa020('0x2a')]]={'$like':'%'+_0x4d5735['query'][_0xa020('0x3f')]+'%'};return _0x1a6db4;}})});}_0x5e8dcf=_['merge']({},_0x5e8dcf,_0x4d5735[_0xa020('0x41')]);var _0x21bdc3={'where':_0x5e8dcf['where']};return db[_0xa020('0x42')][_0xa020('0x1f')](_0x21bdc3)[_0xa020('0x26')](function(_0xb75a8c){_0x1c44cd['count']=_0xb75a8c;if(_0x4d5735[_0xa020('0x33')][_0xa020('0x43')]){_0x5e8dcf[_0xa020('0x44')]=[{'all':!![]}];}return db[_0xa020('0x42')]['findAll'](_0x5e8dcf);})[_0xa020('0x26')](function(_0x164e49){_0x1c44cd[_0xa020('0x45')]=_0x164e49;return _0x1c44cd;})[_0xa020('0x26')](respondWithFilteredResult(_0x48f919,_0x5e8dcf))['catch'](handleError(_0x48f919,null));};exports[_0xa020('0x46')]=function(_0x53757b,_0x42a61b){var _0x3b9fb7={'raw':![],'where':{'id':_0x53757b[_0xa020('0x47')]['id']}},_0x5ba8ce={};_0x5ba8ce['model']=_[_0xa020('0x34')](db['ZendeskConfiguration'][_0xa020('0x2e')]);_0x5ba8ce['query']=_['keys'](_0x53757b[_0xa020('0x33')]);_0x5ba8ce[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x5ba8ce['model'],_0x5ba8ce['query']);_0x3b9fb7['attributes']=_[_0xa020('0x35')](_0x5ba8ce[_0xa020('0x32')],qs[_0xa020('0x37')](_0x53757b[_0xa020('0x33')][_0xa020('0x37')]));_0x3b9fb7[_0xa020('0x36')]=_0x3b9fb7[_0xa020('0x36')][_0xa020('0x38')]?_0x3b9fb7[_0xa020('0x36')]:_0x5ba8ce['model'];if(_0x53757b[_0xa020('0x33')][_0xa020('0x43')]){_0x3b9fb7[_0xa020('0x44')]=[{'all':!![]}];}_0x3b9fb7=_[_0xa020('0x40')]({},_0x3b9fb7,_0x53757b[_0xa020('0x41')]);return db[_0xa020('0x42')][_0xa020('0x48')](_0x3b9fb7)['then'](handleEntityNotFound(_0x42a61b,null))[_0xa020('0x26')](respondWithResult(_0x42a61b,null))[_0xa020('0x49')](handleError(_0x42a61b,null));};exports['create']=function(_0x5003a4,_0x534122){return db[_0xa020('0x42')][_0xa020('0x4a')](_0x5003a4[_0xa020('0x4b')],{})['then'](respondWithResult(_0x534122,0xc9))['catch'](handleError(_0x534122,null));};exports['update']=function(_0x29d053,_0x5c674a){if(_0x29d053[_0xa020('0x4b')]['id']){delete _0x29d053[_0xa020('0x4b')]['id'];}return db[_0xa020('0x42')][_0xa020('0x48')]({'where':{'id':_0x29d053[_0xa020('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c674a,null))[_0xa020('0x26')](saveUpdates(_0x29d053[_0xa020('0x4b')],null))[_0xa020('0x26')](respondWithResult(_0x5c674a,null))[_0xa020('0x49')](handleError(_0x5c674a,null));};exports[_0xa020('0x27')]=function(_0x1af5ea,_0x414f57){return db[_0xa020('0x42')][_0xa020('0x48')]({'where':{'id':_0x1af5ea[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x414f57,null))[_0xa020('0x26')](removeEntity(_0x414f57,null))[_0xa020('0x49')](handleError(_0x414f57,null));};exports[_0xa020('0x4c')]=function(_0x37766b,_0x1bf67a,_0x4e1c5c){var _0xc2af8={};var _0x3f6c66={};var _0x5316be;var _0x50f963;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x37766b[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x1bf67a,null))[_0xa020('0x26')](function(_0x177287){if(_0x177287){_0x5316be=_0x177287;_0x3f6c66[_0xa020('0x32')]=_[_0xa020('0x34')](db[_0xa020('0x4e')][_0xa020('0x2e')]);_0x3f6c66[_0xa020('0x33')]=_[_0xa020('0x34')](_0x37766b[_0xa020('0x33')]);_0x3f6c66[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x3f6c66[_0xa020('0x32')],_0x3f6c66[_0xa020('0x33')]);_0xc2af8['attributes']=_[_0xa020('0x35')](_0x3f6c66[_0xa020('0x32')],qs[_0xa020('0x37')](_0x37766b[_0xa020('0x33')][_0xa020('0x37')]));_0xc2af8['attributes']=_0xc2af8[_0xa020('0x36')][_0xa020('0x38')]?_0xc2af8[_0xa020('0x36')]:_0x3f6c66[_0xa020('0x32')];_0xc2af8[_0xa020('0x3a')]=qs['sort'](_0x37766b[_0xa020('0x33')][_0xa020('0x3b')]);_0xc2af8['where']=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x37766b[_0xa020('0x33')],_0x3f6c66[_0xa020('0x3d')]));if(_0x37766b[_0xa020('0x33')][_0xa020('0x3f')]){_0xc2af8[_0xa020('0x3c')]=_['merge'](_0xc2af8['where'],{'$or':_[_0xa020('0x2d')](_0xc2af8[_0xa020('0x36')],function(_0x23a49e){var _0x5c9651={};_0x5c9651[_0x23a49e]={'$like':'%'+_0x37766b[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x5c9651;})});}_0xc2af8=_[_0xa020('0x40')]({},_0xc2af8,_0x37766b['options']);return _0x5316be[_0xa020('0x4c')](_0xc2af8);}})[_0xa020('0x26')](function(_0x3062b3){if(_0x3062b3){_0x50f963=_0x3062b3[_0xa020('0x38')];if(!_0x37766b[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0xc2af8[_0xa020('0x20')]=qs['limit'](_0x37766b[_0xa020('0x33')][_0xa020('0x20')]);_0xc2af8[_0xa020('0x1d')]=qs[_0xa020('0x1d')](_0x37766b[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x5316be[_0xa020('0x4c')](_0xc2af8);}})[_0xa020('0x26')](function(_0x59d76d){if(_0x59d76d){return _0x59d76d?{'count':_0x50f963,'rows':_0x59d76d}:null;}})['then'](respondWithResult(_0x1bf67a,null))['catch'](handleError(_0x1bf67a,null));};exports[_0xa020('0x50')]=function(_0x2c7fd5,_0x678cd7,_0x4e8fdc){var _0xd10f35={};var _0x5d4daa={};var _0x337f07;var _0x9eb07a;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x2c7fd5[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x678cd7,null))['then'](function(_0x589506){if(_0x589506){_0x337f07=_0x589506;_0x5d4daa[_0xa020('0x32')]=_['keys'](db['ZendeskField'][_0xa020('0x2e')]);_0x5d4daa[_0xa020('0x33')]=_[_0xa020('0x34')](_0x2c7fd5[_0xa020('0x33')]);_0x5d4daa[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x5d4daa[_0xa020('0x32')],_0x5d4daa['query']);_0xd10f35[_0xa020('0x36')]=_[_0xa020('0x35')](_0x5d4daa[_0xa020('0x32')],qs['fields'](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x37')]));_0xd10f35['attributes']=_0xd10f35[_0xa020('0x36')]['length']?_0xd10f35['attributes']:_0x5d4daa[_0xa020('0x32')];_0xd10f35['order']=qs[_0xa020('0x3b')](_0x2c7fd5['query']['sort']);_0xd10f35[_0xa020('0x3c')]=qs['filters'](_['pick'](_0x2c7fd5[_0xa020('0x33')],_0x5d4daa[_0xa020('0x3d')]));if(_0x2c7fd5[_0xa020('0x33')][_0xa020('0x3f')]){_0xd10f35[_0xa020('0x3c')]=_['merge'](_0xd10f35['where'],{'$or':_['map'](_0xd10f35[_0xa020('0x36')],function(_0xeed603){var _0x296fa2={};_0x296fa2[_0xeed603]={'$like':'%'+_0x2c7fd5[_0xa020('0x33')]['filter']+'%'};return _0x296fa2;})});}_0xd10f35=_[_0xa020('0x40')]({},_0xd10f35,_0x2c7fd5[_0xa020('0x41')]);return _0x337f07[_0xa020('0x50')](_0xd10f35);}})[_0xa020('0x26')](function(_0x250467){if(_0x250467){_0x9eb07a=_0x250467[_0xa020('0x38')];if(!_0x2c7fd5['query'][_0xa020('0x39')](_0xa020('0x4f'))){_0xd10f35[_0xa020('0x20')]=qs[_0xa020('0x20')](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x20')]);_0xd10f35[_0xa020('0x1d')]=qs[_0xa020('0x1d')](_0x2c7fd5[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x337f07['getSubjects'](_0xd10f35);}})[_0xa020('0x26')](function(_0x40a619){if(_0x40a619){return _0x40a619?{'count':_0x9eb07a,'rows':_0x40a619}:null;}})[_0xa020('0x26')](respondWithResult(_0x678cd7,null))['catch'](handleError(_0x678cd7,null));};exports['getDescriptions']=function(_0x47a695,_0x4bffe1,_0x3a180b){var _0x517708={};var _0x3ebf9d={};var _0x24d43f;var _0x36c1cd;return db['ZendeskConfiguration'][_0xa020('0x4d')]({'where':{'id':_0x47a695[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x4bffe1,null))['then'](function(_0x3a1214){if(_0x3a1214){_0x24d43f=_0x3a1214;_0x3ebf9d[_0xa020('0x32')]=_['keys'](db['ZendeskField'][_0xa020('0x2e')]);_0x3ebf9d[_0xa020('0x33')]=_[_0xa020('0x34')](_0x47a695[_0xa020('0x33')]);_0x3ebf9d[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x3ebf9d[_0xa020('0x32')],_0x3ebf9d[_0xa020('0x33')]);_0x517708[_0xa020('0x36')]=_[_0xa020('0x35')](_0x3ebf9d[_0xa020('0x32')],qs[_0xa020('0x37')](_0x47a695[_0xa020('0x33')][_0xa020('0x37')]));_0x517708['attributes']=_0x517708[_0xa020('0x36')][_0xa020('0x38')]?_0x517708[_0xa020('0x36')]:_0x3ebf9d[_0xa020('0x32')];_0x517708[_0xa020('0x3a')]=qs[_0xa020('0x3b')](_0x47a695[_0xa020('0x33')][_0xa020('0x3b')]);_0x517708[_0xa020('0x3c')]=qs[_0xa020('0x3d')](_['pick'](_0x47a695['query'],_0x3ebf9d[_0xa020('0x3d')]));if(_0x47a695[_0xa020('0x33')][_0xa020('0x3f')]){_0x517708[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x517708[_0xa020('0x3c')],{'$or':_[_0xa020('0x2d')](_0x517708[_0xa020('0x36')],function(_0x1c29f6){var _0x51a67a={};_0x51a67a[_0x1c29f6]={'$like':'%'+_0x47a695[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x51a67a;})});}_0x517708=_[_0xa020('0x40')]({},_0x517708,_0x47a695[_0xa020('0x41')]);return _0x24d43f['getDescriptions'](_0x517708);}})[_0xa020('0x26')](function(_0x37bce8){if(_0x37bce8){_0x36c1cd=_0x37bce8['length'];if(!_0x47a695[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0x517708[_0xa020('0x20')]=qs['limit'](_0x47a695[_0xa020('0x33')][_0xa020('0x20')]);_0x517708[_0xa020('0x1d')]=qs['offset'](_0x47a695[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x24d43f['getDescriptions'](_0x517708);}})[_0xa020('0x26')](function(_0x1224fe){if(_0x1224fe){return _0x1224fe?{'count':_0x36c1cd,'rows':_0x1224fe}:null;}})[_0xa020('0x26')](respondWithResult(_0x4bffe1,null))['catch'](handleError(_0x4bffe1,null));};exports['getTags']=function(_0x1da499,_0x28bf0b,_0x745c64){var _0x1e6ccf={};var _0x42c216={};var _0x364a55;var _0x5eb3bd;return db[_0xa020('0x42')][_0xa020('0x4d')]({'where':{'id':_0x1da499[_0xa020('0x47')]['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x28bf0b,null))[_0xa020('0x26')](function(_0x41d0d7){if(_0x41d0d7){_0x364a55=_0x41d0d7;_0x42c216[_0xa020('0x32')]=_[_0xa020('0x34')](db['Tag'][_0xa020('0x2e')]);_0x42c216['query']=_[_0xa020('0x34')](_0x1da499[_0xa020('0x33')]);_0x42c216[_0xa020('0x3d')]=_[_0xa020('0x35')](_0x42c216[_0xa020('0x32')],_0x42c216[_0xa020('0x33')]);_0x1e6ccf[_0xa020('0x36')]=_[_0xa020('0x35')](_0x42c216['model'],qs[_0xa020('0x37')](_0x1da499[_0xa020('0x33')][_0xa020('0x37')]));_0x1e6ccf[_0xa020('0x36')]=_0x1e6ccf[_0xa020('0x36')][_0xa020('0x38')]?_0x1e6ccf[_0xa020('0x36')]:_0x42c216[_0xa020('0x32')];_0x1e6ccf[_0xa020('0x3a')]=qs['sort'](_0x1da499[_0xa020('0x33')][_0xa020('0x3b')]);_0x1e6ccf['where']=qs[_0xa020('0x3d')](_[_0xa020('0x3e')](_0x1da499[_0xa020('0x33')],_0x42c216[_0xa020('0x3d')]));if(_0x1da499[_0xa020('0x33')][_0xa020('0x3f')]){_0x1e6ccf[_0xa020('0x3c')]=_[_0xa020('0x40')](_0x1e6ccf['where'],{'$or':_[_0xa020('0x2d')](_0x1e6ccf[_0xa020('0x36')],function(_0x594231){var _0x41f6ed={};_0x41f6ed[_0x594231]={'$like':'%'+_0x1da499[_0xa020('0x33')][_0xa020('0x3f')]+'%'};return _0x41f6ed;})});}_0x1e6ccf=_[_0xa020('0x40')]({},_0x1e6ccf,_0x1da499['options']);return _0x364a55[_0xa020('0x51')](_0x1e6ccf);}})[_0xa020('0x26')](function(_0x2109ab){if(_0x2109ab){_0x5eb3bd=_0x2109ab[_0xa020('0x38')];if(!_0x1da499[_0xa020('0x33')][_0xa020('0x39')](_0xa020('0x4f'))){_0x1e6ccf['limit']=qs[_0xa020('0x20')](_0x1da499['query'][_0xa020('0x20')]);_0x1e6ccf['offset']=qs[_0xa020('0x1d')](_0x1da499[_0xa020('0x33')][_0xa020('0x1d')]);}return _0x364a55[_0xa020('0x51')](_0x1e6ccf);}})[_0xa020('0x26')](function(_0x226d40){if(_0x226d40){return _0x226d40?{'count':_0x5eb3bd,'rows':_0x226d40}:null;}})[_0xa020('0x26')](respondWithResult(_0x28bf0b,null))[_0xa020('0x49')](handleError(_0x28bf0b,null));};exports[_0xa020('0x52')]=function(_0x5c0660,_0x4c9bca,_0x3064b8){if(_0x5c0660[_0xa020('0x4b')]['id']){delete _0x5c0660[_0xa020('0x4b')]['id'];}return db[_0xa020('0x42')]['findOne']({'where':{'id':_0x5c0660['params']['id']}})[_0xa020('0x26')](handleEntityNotFound(_0x4c9bca,null))[_0xa020('0x26')](function(_0x9aa451){if(_0x9aa451){return _0x9aa451[_0xa020('0x52')](_0x5c0660[_0xa020('0x4b')][_0xa020('0x53')]||[]);}return null;})[_0xa020('0x26')](respondWithResult(_0x4c9bca,null))[_0xa020('0x49')](handleError(_0x4c9bca,null));};
\ No newline at end of file
index 349efc9..2046db8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b12=['int_zendesk_configurations','lodash','util','../../config/logger','moment','request-promise','path','../../config/environment','ZendeskConfiguration'];(function(_0x2d77b8,_0x33f044){var _0x4febdc=function(_0x44a81e){while(--_0x44a81e){_0x2d77b8['push'](_0x2d77b8['shift']());}};_0x4febdc(++_0x33f044);}(_0x5b12,0xa3));var _0x25b1=function(_0x3de925,_0x4b57de){_0x3de925=_0x3de925-0x0;var _0x320b3b=_0x5b12[_0x3de925];return _0x320b3b;};'use strict';var _=require(_0x25b1('0x0'));var util=require(_0x25b1('0x1'));var logger=require(_0x25b1('0x2'))('api');var moment=require(_0x25b1('0x3'));var BPromise=require('bluebird');var rp=require(_0x25b1('0x4'));var fs=require('fs');var path=require(_0x25b1('0x5'));var rimraf=require('rimraf');var config=require(_0x25b1('0x6'));var attributes=require('./intZendeskConfiguration.attributes');module['exports']=function(_0x35d90b,_0x5523c9){return _0x35d90b['define'](_0x25b1('0x7'),attributes,{'tableName':_0x25b1('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x087b=['../../config/environment','./intZendeskConfiguration.attributes','exports','define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','moment','request-promise','path','rimraf'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x087b,0x11a));var _0xb087=function(_0x2e4e19,_0x493b50){_0x2e4e19=_0x2e4e19-0x0;var _0x9ba20b=_0x087b[_0x2e4e19];return _0x9ba20b;};'use strict';var _=require(_0xb087('0x0'));var util=require(_0xb087('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xb087('0x2'));var BPromise=require('bluebird');var rp=require(_0xb087('0x3'));var fs=require('fs');var path=require(_0xb087('0x4'));var rimraf=require(_0xb087('0x5'));var config=require(_0xb087('0x6'));var attributes=require(_0xb087('0x7'));module[_0xb087('0x8')]=function(_0x40156d,_0x17d6e8){return _0x40156d[_0xb087('0x9')](_0xb087('0xa'),attributes,{'tableName':_0xb087('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b95a45d..d71e5e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd66=['ZendeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','info'];(function(_0x6aaa69,_0x4457b5){var _0x25359f=function(_0x1ab0be){while(--_0x1ab0be){_0x6aaa69['push'](_0x6aaa69['shift']());}};_0x25359f(++_0x4457b5);}(_0xbd66,0x86));var _0x6bd6=function(_0x508170,_0x771099){_0x508170=_0x508170-0x0;var _0x592c4d=_0xbd66[_0x508170];return _0x592c4d;};'use strict';var _=require(_0x6bd6('0x0'));var util=require(_0x6bd6('0x1'));var moment=require(_0x6bd6('0x2'));var BPromise=require(_0x6bd6('0x3'));var rs=require(_0x6bd6('0x4'));var fs=require('fs');var Redis=require(_0x6bd6('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x6bd6('0x6'));var logger=require(_0x6bd6('0x7'))(_0x6bd6('0x8'));var config=require(_0x6bd6('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6bd6('0xa')][_0x6bd6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5bbb31,_0x1a51ee,_0x545e49){return new BPromise(function(_0x2e20d2,_0x381b19){return client['request'](_0x5bbb31,_0x545e49)['then'](function(_0x4f61ca){logger[_0x6bd6('0xc')](_0x6bd6('0xd'),_0x1a51ee,_0x6bd6('0xe'));logger[_0x6bd6('0xf')](_0x6bd6('0x10'),_0x1a51ee,'request\x20sent',JSON[_0x6bd6('0x11')](_0x4f61ca));if(_0x4f61ca[_0x6bd6('0x12')]){if(_0x4f61ca[_0x6bd6('0x12')]['code']===0x1f4){logger[_0x6bd6('0x12')](_0x6bd6('0xd'),_0x1a51ee,_0x4f61ca[_0x6bd6('0x12')][_0x6bd6('0x13')]);return _0x381b19(_0x4f61ca[_0x6bd6('0x12')]['message']);}logger[_0x6bd6('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1a51ee,_0x4f61ca[_0x6bd6('0x12')]['message']);return _0x2e20d2(_0x4f61ca[_0x6bd6('0x12')][_0x6bd6('0x13')]);}else{logger['info'](_0x6bd6('0xd'),_0x1a51ee,'request\x20sent');_0x2e20d2(_0x4f61ca['result'][_0x6bd6('0x13')]);}})[_0x6bd6('0x14')](function(_0x139c84){logger[_0x6bd6('0x12')]('ZendeskConfiguration,\x20%s,\x20%s',_0x1a51ee,_0x139c84);_0x381b19(_0x139c84);});});}
\ No newline at end of file
+var _0xc059=['error','message','request\x20sent','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','ZendeskConfiguration,\x20%s,\x20%s','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4add92,_0x247228){var _0x169ac4=function(_0x22140a){while(--_0x22140a){_0x4add92['push'](_0x4add92['shift']());}};_0x169ac4(++_0x247228);}(_0xc059,0x1b9));var _0x9c05=function(_0x395e5e,_0x445976){_0x395e5e=_0x395e5e-0x0;var _0x518e1d=_0xc059[_0x395e5e];return _0x518e1d;};'use strict';var _=require(_0x9c05('0x0'));var util=require(_0x9c05('0x1'));var moment=require(_0x9c05('0x2'));var BPromise=require(_0x9c05('0x3'));var rs=require(_0x9c05('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9c05('0x5'))['db'];var utils=require(_0x9c05('0x6'));var logger=require(_0x9c05('0x7'))(_0x9c05('0x8'));var config=require(_0x9c05('0x9'));var jayson=require(_0x9c05('0xa'));var client=jayson[_0x9c05('0xb')][_0x9c05('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x76abb,_0x3b4519,_0x2fe7f1){return new BPromise(function(_0x4ccd1a,_0xb86ab7){return client[_0x9c05('0xd')](_0x76abb,_0x2fe7f1)[_0x9c05('0xe')](function(_0x24b1dc){logger['info'](_0x9c05('0xf'),_0x3b4519,'request\x20sent');logger[_0x9c05('0x10')](_0x9c05('0x11'),_0x3b4519,'request\x20sent',JSON[_0x9c05('0x12')](_0x24b1dc));if(_0x24b1dc[_0x9c05('0x13')]){if(_0x24b1dc[_0x9c05('0x13')]['code']===0x1f4){logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);return _0xb86ab7(_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);}logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x24b1dc['error'][_0x9c05('0x14')]);return _0x4ccd1a(_0x24b1dc[_0x9c05('0x13')][_0x9c05('0x14')]);}else{logger['info'](_0x9c05('0xf'),_0x3b4519,_0x9c05('0x15'));_0x4ccd1a(_0x24b1dc[_0x9c05('0x16')][_0x9c05('0x14')]);}})['catch'](function(_0x59d81f){logger[_0x9c05('0x13')](_0x9c05('0xf'),_0x3b4519,_0x59d81f);_0xb86ab7(_0x59d81f);});});}
\ No newline at end of file
index 21e0418..3ccd4d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf905=['post','create','put','/:id','delete','destroy','multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intZendeskField.controller','get','isAuthenticated','index','show'];(function(_0x5a6eec,_0x3d69a4){var _0x3845d0=function(_0x5f01dc){while(--_0x5f01dc){_0x5a6eec['push'](_0x5a6eec['shift']());}};_0x3845d0(++_0x3d69a4);}(_0xf905,0xcc));var _0x5f90=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0xf905[_0x2f45ea];return _0x485a84;};'use strict';var multer=require(_0x5f90('0x0'));var util=require('util');var path=require(_0x5f90('0x1'));var timeout=require(_0x5f90('0x2'));var express=require('express');var router=express[_0x5f90('0x3')]();var fs_extra=require(_0x5f90('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x5f90('0x5'));var config=require(_0x5f90('0x6'));var controller=require(_0x5f90('0x7'));router[_0x5f90('0x8')]('/',auth[_0x5f90('0x9')](),controller[_0x5f90('0xa')]);router[_0x5f90('0x8')]('/:id',auth[_0x5f90('0x9')](),controller[_0x5f90('0xb')]);router[_0x5f90('0xc')]('/',auth[_0x5f90('0x9')](),controller[_0x5f90('0xd')]);router[_0x5f90('0xe')](_0x5f90('0xf'),auth[_0x5f90('0x9')](),controller['update']);router[_0x5f90('0x10')]('/:id',auth[_0x5f90('0x9')](),controller[_0x5f90('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xf12a=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','post','put','/:id','update','delete','destroy','exports','path','express','Router'];(function(_0x4525c9,_0x506c2a){var _0x11f844=function(_0x7f28d4){while(--_0x7f28d4){_0x4525c9['push'](_0x4525c9['shift']());}};_0x11f844(++_0x506c2a);}(_0xf12a,0x66));var _0xaf12=function(_0xa16ef8,_0x40cc48){_0xa16ef8=_0xa16ef8-0x0;var _0x40ab63=_0xf12a[_0xa16ef8];return _0x40ab63;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xaf12('0x0'));var timeout=require('connect-timeout');var express=require(_0xaf12('0x1'));var router=express[_0xaf12('0x2')]();var fs_extra=require(_0xaf12('0x3'));var auth=require(_0xaf12('0x4'));var interaction=require(_0xaf12('0x5'));var config=require(_0xaf12('0x6'));var controller=require('./intZendeskField.controller');router['get']('/',auth[_0xaf12('0x7')](),controller['index']);router['get']('/:id',auth[_0xaf12('0x7')](),controller['show']);router[_0xaf12('0x8')]('/',auth[_0xaf12('0x7')](),controller['create']);router[_0xaf12('0x9')](_0xaf12('0xa'),auth['isAuthenticated'](),controller[_0xaf12('0xb')]);router[_0xaf12('0xc')](_0xaf12('0xa'),auth['isAuthenticated'](),controller[_0xaf12('0xd')]);module[_0xaf12('0xe')]=router;
\ No newline at end of file
index 044e00c..e9a6abb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafd5=['ENUM','BOOLEAN','sequelize','exports','string','variable','customVariable','keyValue','STRING'];(function(_0xa99439,_0x2400f9){var _0x121716=function(_0x3a7295){while(--_0x3a7295){_0xa99439['push'](_0xa99439['shift']());}};_0x121716(++_0x2400f9);}(_0xafd5,0x1b2));var _0x5afd=function(_0xb833b1,_0x1c3d3f){_0xb833b1=_0xb833b1-0x0;var _0x1ab87a=_0xafd5[_0xb833b1];return _0x1ab87a;};'use strict';var Sequelize=require(_0x5afd('0x0'));module[_0x5afd('0x1')]={'type':{'type':Sequelize['ENUM'](_0x5afd('0x2'),_0x5afd('0x3'),_0x5afd('0x4'),_0x5afd('0x5'),'picklist'),'defaultValue':_0x5afd('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x5afd('0x6')]},'keyType':{'type':Sequelize[_0x5afd('0x7')](_0x5afd('0x2'),_0x5afd('0x3'),_0x5afd('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x5afd('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x5afd('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x5afd('0x6')]}};
\ No newline at end of file
+var _0x860d=['string','variable','customVariable','keyValue','picklist','STRING','ENUM'];(function(_0x590275,_0x9451d){var _0x4fc880=function(_0x200291){while(--_0x200291){_0x590275['push'](_0x590275['shift']());}};_0x4fc880(++_0x9451d);}(_0x860d,0x181));var _0xd860=function(_0x2f1a51,_0x3c1f80){_0x2f1a51=_0x2f1a51-0x0;var _0x581809=_0x860d[_0x2f1a51];return _0x581809;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0xd860('0x0'),_0xd860('0x1'),_0xd860('0x2'),_0xd860('0x3'),_0xd860('0x4')),'defaultValue':_0xd860('0x0')},'content':{'type':Sequelize[_0xd860('0x5')]},'key':{'type':Sequelize[_0xd860('0x5')]},'keyType':{'type':Sequelize[_0xd860('0x6')](_0xd860('0x0'),'variable',_0xd860('0x2'))},'keyContent':{'type':Sequelize[_0xd860('0x5')]},'idField':{'type':Sequelize[_0xd860('0x5')]},'nameField':{'type':Sequelize[_0xd860('0x5')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd860('0x5')]}};
\ No newline at end of file
index 15b3332..c9c84c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5f7=['options','find','create','body','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','update','destroy','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','key','query','intersection','model','attributes','length','order','sort','filters','pick','where','merge','filter','ZendeskField','includeAll','include','findAll','catch','show','params','keys'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0xd5f7,0x120));var _0x7d5f=function(_0x36c555,_0x10f2ed){_0x36c555=_0x36c555-0x0;var _0x5cc71e=_0xd5f7[_0x36c555];return _0x5cc71e;};'use strict';var emlformat=require(_0x7d5f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7d5f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7d5f('0x2'));var moment=require(_0x7d5f('0x3'));var BPromise=require(_0x7d5f('0x4'));var Mustache=require(_0x7d5f('0x5'));var util=require(_0x7d5f('0x6'));var path=require(_0x7d5f('0x7'));var sox=require('sox');var csv=require(_0x7d5f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x7d5f('0x9'));var _=require('lodash');var squel=require(_0x7d5f('0xa'));var crypto=require(_0x7d5f('0xb'));var jsforce=require(_0x7d5f('0xc'));var deskjs=require(_0x7d5f('0xd'));var toCsv=require(_0x7d5f('0x8'));var querystring=require(_0x7d5f('0xe'));var Papa=require('papaparse');var Redis=require(_0x7d5f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7d5f('0x10'));var as=require(_0x7d5f('0x11'));var hardwareService=require(_0x7d5f('0x12'));var logger=require(_0x7d5f('0x13'))(_0x7d5f('0x14'));var utils=require(_0x7d5f('0x15'));var config=require(_0x7d5f('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x7d5f('0x17'))['db'];function respondWithStatusCode(_0x268784,_0x3f4a8f){_0x3f4a8f=_0x3f4a8f||0xcc;return function(_0xcd6b62){if(_0xcd6b62){return _0x268784['sendStatus'](_0x3f4a8f);}return _0x268784[_0x7d5f('0x18')](_0x3f4a8f)[_0x7d5f('0x19')]();};}function respondWithResult(_0x618369,_0x311c14){_0x311c14=_0x311c14||0xc8;return function(_0x3ec39f){if(_0x3ec39f){return _0x618369[_0x7d5f('0x18')](_0x311c14)[_0x7d5f('0x1a')](_0x3ec39f);}};}function respondWithFilteredResult(_0x499c44,_0x39e311){return function(_0x96b9f8){if(_0x96b9f8){var _0x1a91cd=typeof _0x39e311[_0x7d5f('0x1b')]==='undefined'&&typeof _0x39e311[_0x7d5f('0x1c')]===_0x7d5f('0x1d');var _0x6aef68=_0x96b9f8[_0x7d5f('0x1e')];var _0x2d1f30=_0x1a91cd?0x0:_0x39e311[_0x7d5f('0x1b')];var _0x39f6af=_0x1a91cd?_0x96b9f8[_0x7d5f('0x1e')]:_0x39e311['offset']+_0x39e311['limit'];var _0x178efa;if(_0x39f6af>=_0x6aef68){_0x39f6af=_0x6aef68;_0x178efa=0xc8;}else{_0x178efa=0xce;}_0x499c44[_0x7d5f('0x18')](_0x178efa);return _0x499c44[_0x7d5f('0x1f')](_0x7d5f('0x20'),_0x2d1f30+'-'+_0x39f6af+'/'+_0x6aef68)['json'](_0x96b9f8);}return null;};}function patchUpdates(_0x52efbf){return function(_0x122860){try{jsonpatch['apply'](_0x122860,_0x52efbf,!![]);}catch(_0x29b7c8){return BPromise[_0x7d5f('0x21')](_0x29b7c8);}return _0x122860['save']();};}function saveUpdates(_0x41a60e,_0x1d7f0e){return function(_0x2944fd){if(_0x2944fd){return _0x2944fd[_0x7d5f('0x22')](_0x41a60e)['then'](function(_0x3c394d){return _0x3c394d;});}return null;};}function removeEntity(_0x533f0b,_0x44ef79){return function(_0x1e0344){if(_0x1e0344){return _0x1e0344[_0x7d5f('0x23')]()[_0x7d5f('0x24')](function(){_0x533f0b['status'](0xcc)[_0x7d5f('0x19')]();});}};}function handleEntityNotFound(_0x569749,_0x3429dd){return function(_0x32dde3){if(!_0x32dde3){_0x569749[_0x7d5f('0x25')](0x194);}return _0x32dde3;};}function handleError(_0x35f9b8,_0x357e5e){_0x357e5e=_0x357e5e||0x1f4;return function(_0x2ef067){logger[_0x7d5f('0x26')](_0x2ef067[_0x7d5f('0x27')]);if(_0x2ef067['name']){delete _0x2ef067[_0x7d5f('0x28')];}_0x35f9b8['status'](_0x357e5e)[_0x7d5f('0x29')](_0x2ef067);};}exports[_0x7d5f('0x2a')]=function(_0x2460ae,_0x4d0985){var _0x5cbe32={},_0x302452={},_0x50fcc1={'count':0x0,'rows':[]};var _0x416d8d=_[_0x7d5f('0x2b')](db['ZendeskField'][_0x7d5f('0x2c')],function(_0x42f3ec){return{'name':_0x42f3ec[_0x7d5f('0x2d')],'type':_0x42f3ec['type'][_0x7d5f('0x2e')]};});_0x302452['model']=_[_0x7d5f('0x2b')](_0x416d8d,_0x7d5f('0x28'));_0x302452[_0x7d5f('0x2f')]=_['keys'](_0x2460ae['query']);_0x302452['filters']=_[_0x7d5f('0x30')](_0x302452[_0x7d5f('0x31')],_0x302452[_0x7d5f('0x2f')]);_0x5cbe32[_0x7d5f('0x32')]=_[_0x7d5f('0x30')](_0x302452['model'],qs['fields'](_0x2460ae[_0x7d5f('0x2f')]['fields']));_0x5cbe32[_0x7d5f('0x32')]=_0x5cbe32[_0x7d5f('0x32')][_0x7d5f('0x33')]?_0x5cbe32['attributes']:_0x302452[_0x7d5f('0x31')];if(!_0x2460ae[_0x7d5f('0x2f')]['hasOwnProperty']('nolimit')){_0x5cbe32['limit']=qs[_0x7d5f('0x1c')](_0x2460ae['query']['limit']);_0x5cbe32[_0x7d5f('0x1b')]=qs[_0x7d5f('0x1b')](_0x2460ae['query'][_0x7d5f('0x1b')]);}_0x5cbe32[_0x7d5f('0x34')]=qs['sort'](_0x2460ae[_0x7d5f('0x2f')][_0x7d5f('0x35')]);_0x5cbe32['where']=qs[_0x7d5f('0x36')](_[_0x7d5f('0x37')](_0x2460ae[_0x7d5f('0x2f')],_0x302452[_0x7d5f('0x36')]),_0x416d8d);if(_0x2460ae[_0x7d5f('0x2f')]['filter']){_0x5cbe32[_0x7d5f('0x38')]=_[_0x7d5f('0x39')](_0x5cbe32[_0x7d5f('0x38')],{'$or':_[_0x7d5f('0x2b')](_0x416d8d,function(_0x3dcdbc){if(_0x3dcdbc['type']!=='VIRTUAL'){var _0x24a961={};_0x24a961[_0x3dcdbc[_0x7d5f('0x28')]]={'$like':'%'+_0x2460ae[_0x7d5f('0x2f')][_0x7d5f('0x3a')]+'%'};return _0x24a961;}})});}_0x5cbe32=_['merge']({},_0x5cbe32,_0x2460ae['options']);var _0x2921f1={'where':_0x5cbe32[_0x7d5f('0x38')]};return db[_0x7d5f('0x3b')][_0x7d5f('0x1e')](_0x2921f1)[_0x7d5f('0x24')](function(_0x3e2a13){_0x50fcc1[_0x7d5f('0x1e')]=_0x3e2a13;if(_0x2460ae[_0x7d5f('0x2f')][_0x7d5f('0x3c')]){_0x5cbe32[_0x7d5f('0x3d')]=[{'all':!![]}];}return db[_0x7d5f('0x3b')][_0x7d5f('0x3e')](_0x5cbe32);})[_0x7d5f('0x24')](function(_0x216223){_0x50fcc1['rows']=_0x216223;return _0x50fcc1;})['then'](respondWithFilteredResult(_0x4d0985,_0x5cbe32))[_0x7d5f('0x3f')](handleError(_0x4d0985,null));};exports[_0x7d5f('0x40')]=function(_0x50479e,_0x403ec0){var _0x46e0bb={'raw':!![],'where':{'id':_0x50479e[_0x7d5f('0x41')]['id']}},_0x417711={};_0x417711[_0x7d5f('0x31')]=_[_0x7d5f('0x42')](db['ZendeskField'][_0x7d5f('0x2c')]);_0x417711[_0x7d5f('0x2f')]=_[_0x7d5f('0x42')](_0x50479e['query']);_0x417711['filters']=_[_0x7d5f('0x30')](_0x417711[_0x7d5f('0x31')],_0x417711[_0x7d5f('0x2f')]);_0x46e0bb[_0x7d5f('0x32')]=_[_0x7d5f('0x30')](_0x417711[_0x7d5f('0x31')],qs['fields'](_0x50479e[_0x7d5f('0x2f')]['fields']));_0x46e0bb[_0x7d5f('0x32')]=_0x46e0bb['attributes'][_0x7d5f('0x33')]?_0x46e0bb[_0x7d5f('0x32')]:_0x417711[_0x7d5f('0x31')];if(_0x50479e[_0x7d5f('0x2f')][_0x7d5f('0x3c')]){_0x46e0bb[_0x7d5f('0x3d')]=[{'all':!![]}];}_0x46e0bb=_[_0x7d5f('0x39')]({},_0x46e0bb,_0x50479e[_0x7d5f('0x43')]);return db[_0x7d5f('0x3b')][_0x7d5f('0x44')](_0x46e0bb)[_0x7d5f('0x24')](handleEntityNotFound(_0x403ec0,null))['then'](respondWithResult(_0x403ec0,null))[_0x7d5f('0x3f')](handleError(_0x403ec0,null));};exports[_0x7d5f('0x45')]=function(_0x54d861,_0x35b5aa){return db['ZendeskField']['create'](_0x54d861[_0x7d5f('0x46')],{})[_0x7d5f('0x24')](respondWithResult(_0x35b5aa,0xc9))[_0x7d5f('0x3f')](handleError(_0x35b5aa,null));};exports['update']=function(_0x3820a6,_0x20e147){if(_0x3820a6['body']['id']){delete _0x3820a6['body']['id'];}return db[_0x7d5f('0x3b')]['find']({'where':{'id':_0x3820a6[_0x7d5f('0x41')]['id']}})[_0x7d5f('0x24')](handleEntityNotFound(_0x20e147,null))[_0x7d5f('0x24')](saveUpdates(_0x3820a6[_0x7d5f('0x46')],null))[_0x7d5f('0x24')](respondWithResult(_0x20e147,null))[_0x7d5f('0x3f')](handleError(_0x20e147,null));};exports[_0x7d5f('0x23')]=function(_0x2f920e,_0x413cff){return db['ZendeskField'][_0x7d5f('0x44')]({'where':{'id':_0x2f920e[_0x7d5f('0x41')]['id']}})[_0x7d5f('0x24')](handleEntityNotFound(_0x413cff,null))[_0x7d5f('0x24')](removeEntity(_0x413cff,null))[_0x7d5f('0x3f')](handleError(_0x413cff,null));};
\ No newline at end of file
+var _0x8bf7=['catch','rawAttributes','includeAll','include','find','create','body','update','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','then','destroy','name','send','index','map','ZendeskField','fieldName','type','key','keys','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','rows'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8bf7,0x139));var _0x78bf=function(_0x2cfbd4,_0x2f413e){_0x2cfbd4=_0x2cfbd4-0x0;var _0x358c71=_0x8bf7[_0x2cfbd4];return _0x358c71;};'use strict';var emlformat=require(_0x78bf('0x0'));var rimraf=require(_0x78bf('0x1'));var zipdir=require(_0x78bf('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x78bf('0x3'));var moment=require(_0x78bf('0x4'));var BPromise=require(_0x78bf('0x5'));var Mustache=require(_0x78bf('0x6'));var util=require(_0x78bf('0x7'));var path=require(_0x78bf('0x8'));var sox=require(_0x78bf('0x9'));var csv=require(_0x78bf('0xa'));var ejs=require(_0x78bf('0xb'));var fs=require('fs');var fs_extra=require(_0x78bf('0xc'));var _=require(_0x78bf('0xd'));var squel=require(_0x78bf('0xe'));var crypto=require(_0x78bf('0xf'));var jsforce=require(_0x78bf('0x10'));var deskjs=require(_0x78bf('0x11'));var toCsv=require(_0x78bf('0xa'));var querystring=require(_0x78bf('0x12'));var Papa=require(_0x78bf('0x13'));var Redis=require(_0x78bf('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x78bf('0x15'));var logger=require(_0x78bf('0x16'))(_0x78bf('0x17'));var utils=require(_0x78bf('0x18'));var config=require(_0x78bf('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x78bf('0x1a'))['db'];function respondWithStatusCode(_0x53dd39,_0x412ad3){_0x412ad3=_0x412ad3||0xcc;return function(_0x791084){if(_0x791084){return _0x53dd39[_0x78bf('0x1b')](_0x412ad3);}return _0x53dd39[_0x78bf('0x1c')](_0x412ad3)[_0x78bf('0x1d')]();};}function respondWithResult(_0x113fe9,_0x8f9562){_0x8f9562=_0x8f9562||0xc8;return function(_0x31a639){if(_0x31a639){return _0x113fe9[_0x78bf('0x1c')](_0x8f9562)[_0x78bf('0x1e')](_0x31a639);}};}function respondWithFilteredResult(_0x481265,_0x13239e){return function(_0x423ab8){if(_0x423ab8){var _0x2ad79a=typeof _0x13239e[_0x78bf('0x1f')]===_0x78bf('0x20')&&typeof _0x13239e['limit']===_0x78bf('0x20');var _0x2bf908=_0x423ab8[_0x78bf('0x21')];var _0x364acb=_0x2ad79a?0x0:_0x13239e[_0x78bf('0x1f')];var _0x355db1=_0x2ad79a?_0x423ab8[_0x78bf('0x21')]:_0x13239e[_0x78bf('0x1f')]+_0x13239e[_0x78bf('0x22')];var _0x3eb676;if(_0x355db1>=_0x2bf908){_0x355db1=_0x2bf908;_0x3eb676=0xc8;}else{_0x3eb676=0xce;}_0x481265[_0x78bf('0x1c')](_0x3eb676);return _0x481265[_0x78bf('0x23')](_0x78bf('0x24'),_0x364acb+'-'+_0x355db1+'/'+_0x2bf908)['json'](_0x423ab8);}return null;};}function patchUpdates(_0x1b02a0){return function(_0x461c96){try{jsonpatch[_0x78bf('0x25')](_0x461c96,_0x1b02a0,!![]);}catch(_0x4e50c2){return BPromise[_0x78bf('0x26')](_0x4e50c2);}return _0x461c96[_0x78bf('0x27')]();};}function saveUpdates(_0x5d81e2,_0x32fd43){return function(_0x2e283d){if(_0x2e283d){return _0x2e283d['update'](_0x5d81e2)[_0x78bf('0x28')](function(_0x11f914){return _0x11f914;});}return null;};}function removeEntity(_0xe1700c,_0x42e9a3){return function(_0x2f4b9a){if(_0x2f4b9a){return _0x2f4b9a[_0x78bf('0x29')]()['then'](function(){_0xe1700c[_0x78bf('0x1c')](0xcc)[_0x78bf('0x1d')]();});}};}function handleEntityNotFound(_0x1b8986,_0x359b99){return function(_0x39ef9b){if(!_0x39ef9b){_0x1b8986[_0x78bf('0x1b')](0x194);}return _0x39ef9b;};}function handleError(_0x5af5cf,_0x5d3b15){_0x5d3b15=_0x5d3b15||0x1f4;return function(_0x56ed32){logger['error'](_0x56ed32['stack']);if(_0x56ed32[_0x78bf('0x2a')]){delete _0x56ed32[_0x78bf('0x2a')];}_0x5af5cf['status'](_0x5d3b15)[_0x78bf('0x2b')](_0x56ed32);};}exports[_0x78bf('0x2c')]=function(_0x2a92f4,_0x17fe58){var _0x22ef9e={},_0x30abb5={},_0x2b4fb9={'count':0x0,'rows':[]};var _0xb4eec0=_[_0x78bf('0x2d')](db[_0x78bf('0x2e')]['rawAttributes'],function(_0x50c3c7){return{'name':_0x50c3c7[_0x78bf('0x2f')],'type':_0x50c3c7[_0x78bf('0x30')][_0x78bf('0x31')]};});_0x30abb5['model']=_[_0x78bf('0x2d')](_0xb4eec0,_0x78bf('0x2a'));_0x30abb5['query']=_[_0x78bf('0x32')](_0x2a92f4[_0x78bf('0x33')]);_0x30abb5[_0x78bf('0x34')]=_[_0x78bf('0x35')](_0x30abb5[_0x78bf('0x36')],_0x30abb5[_0x78bf('0x33')]);_0x22ef9e['attributes']=_[_0x78bf('0x35')](_0x30abb5[_0x78bf('0x36')],qs[_0x78bf('0x37')](_0x2a92f4['query'][_0x78bf('0x37')]));_0x22ef9e[_0x78bf('0x38')]=_0x22ef9e[_0x78bf('0x38')][_0x78bf('0x39')]?_0x22ef9e[_0x78bf('0x38')]:_0x30abb5['model'];if(!_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x3a')]('nolimit')){_0x22ef9e[_0x78bf('0x22')]=qs['limit'](_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x22')]);_0x22ef9e[_0x78bf('0x1f')]=qs[_0x78bf('0x1f')](_0x2a92f4[_0x78bf('0x33')]['offset']);}_0x22ef9e[_0x78bf('0x3b')]=qs[_0x78bf('0x3c')](_0x2a92f4[_0x78bf('0x33')][_0x78bf('0x3c')]);_0x22ef9e[_0x78bf('0x3d')]=qs[_0x78bf('0x34')](_[_0x78bf('0x3e')](_0x2a92f4[_0x78bf('0x33')],_0x30abb5['filters']),_0xb4eec0);if(_0x2a92f4[_0x78bf('0x33')]['filter']){_0x22ef9e['where']=_[_0x78bf('0x3f')](_0x22ef9e[_0x78bf('0x3d')],{'$or':_[_0x78bf('0x2d')](_0xb4eec0,function(_0x52675c){if(_0x52675c[_0x78bf('0x30')]!==_0x78bf('0x40')){var _0x291896={};_0x291896[_0x52675c[_0x78bf('0x2a')]]={'$like':'%'+_0x2a92f4['query']['filter']+'%'};return _0x291896;}})});}_0x22ef9e=_['merge']({},_0x22ef9e,_0x2a92f4[_0x78bf('0x41')]);var _0x201cb8={'where':_0x22ef9e['where']};return db[_0x78bf('0x2e')][_0x78bf('0x21')](_0x201cb8)['then'](function(_0x346639){_0x2b4fb9[_0x78bf('0x21')]=_0x346639;if(_0x2a92f4[_0x78bf('0x33')]['includeAll']){_0x22ef9e['include']=[{'all':!![]}];}return db[_0x78bf('0x2e')]['findAll'](_0x22ef9e);})[_0x78bf('0x28')](function(_0x3b4bbc){_0x2b4fb9[_0x78bf('0x42')]=_0x3b4bbc;return _0x2b4fb9;})[_0x78bf('0x28')](respondWithFilteredResult(_0x17fe58,_0x22ef9e))[_0x78bf('0x43')](handleError(_0x17fe58,null));};exports['show']=function(_0x151ccd,_0xb0f1d0){var _0x5dd459={'raw':!![],'where':{'id':_0x151ccd['params']['id']}},_0x23f809={};_0x23f809['model']=_[_0x78bf('0x32')](db[_0x78bf('0x2e')][_0x78bf('0x44')]);_0x23f809[_0x78bf('0x33')]=_[_0x78bf('0x32')](_0x151ccd[_0x78bf('0x33')]);_0x23f809[_0x78bf('0x34')]=_['intersection'](_0x23f809[_0x78bf('0x36')],_0x23f809['query']);_0x5dd459[_0x78bf('0x38')]=_[_0x78bf('0x35')](_0x23f809[_0x78bf('0x36')],qs[_0x78bf('0x37')](_0x151ccd['query'][_0x78bf('0x37')]));_0x5dd459[_0x78bf('0x38')]=_0x5dd459[_0x78bf('0x38')][_0x78bf('0x39')]?_0x5dd459[_0x78bf('0x38')]:_0x23f809['model'];if(_0x151ccd['query'][_0x78bf('0x45')]){_0x5dd459[_0x78bf('0x46')]=[{'all':!![]}];}_0x5dd459=_[_0x78bf('0x3f')]({},_0x5dd459,_0x151ccd[_0x78bf('0x41')]);return db[_0x78bf('0x2e')][_0x78bf('0x47')](_0x5dd459)[_0x78bf('0x28')](handleEntityNotFound(_0xb0f1d0,null))[_0x78bf('0x28')](respondWithResult(_0xb0f1d0,null))[_0x78bf('0x43')](handleError(_0xb0f1d0,null));};exports['create']=function(_0x5a2fb3,_0x18b5f0){return db[_0x78bf('0x2e')][_0x78bf('0x48')](_0x5a2fb3[_0x78bf('0x49')],{})['then'](respondWithResult(_0x18b5f0,0xc9))[_0x78bf('0x43')](handleError(_0x18b5f0,null));};exports[_0x78bf('0x4a')]=function(_0x5b2f0d,_0x9524dd){if(_0x5b2f0d[_0x78bf('0x49')]['id']){delete _0x5b2f0d[_0x78bf('0x49')]['id'];}return db[_0x78bf('0x2e')]['find']({'where':{'id':_0x5b2f0d[_0x78bf('0x4b')]['id']}})[_0x78bf('0x28')](handleEntityNotFound(_0x9524dd,null))[_0x78bf('0x28')](saveUpdates(_0x5b2f0d[_0x78bf('0x49')],null))['then'](respondWithResult(_0x9524dd,null))['catch'](handleError(_0x9524dd,null));};exports[_0x78bf('0x29')]=function(_0x1e9527,_0x2f0e32){return db['ZendeskField'][_0x78bf('0x47')]({'where':{'id':_0x1e9527['params']['id']}})[_0x78bf('0x28')](handleEntityNotFound(_0x2f0e32,null))[_0x78bf('0x28')](removeEntity(_0x2f0e32,null))['catch'](handleError(_0x2f0e32,null));};
\ No newline at end of file
index 26384a7..38e0cc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8428=['FieldId','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField','idField'];(function(_0x34a879,_0x10a72d){var _0x33d1d8=function(_0x1f52a6){while(--_0x1f52a6){_0x34a879['push'](_0x34a879['shift']());}};_0x33d1d8(++_0x10a72d);}(_0x8428,0x146));var _0x8842=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x8428[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x8842('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0x8842('0x1'));var BPromise=require(_0x8842('0x2'));var rp=require(_0x8842('0x3'));var fs=require('fs');var path=require(_0x8842('0x4'));var rimraf=require(_0x8842('0x5'));var config=require(_0x8842('0x6'));var attributes=require(_0x8842('0x7'));module[_0x8842('0x8')]=function(_0x2bc068,_0x16d9c7){return _0x2bc068[_0x8842('0x9')](_0x8842('0xa'),attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x8842('0xb'),_0x8842('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0266=['idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./intZendeskField.attributes','exports'];(function(_0x566bdf,_0x1f4861){var _0x331215=function(_0x524d0d){while(--_0x524d0d){_0x566bdf['push'](_0x566bdf['shift']());}};_0x331215(++_0x1f4861);}(_0x0266,0x1c9));var _0x6026=function(_0x1e4360,_0x930b9b){_0x1e4360=_0x1e4360-0x0;var _0x31e6b4=_0x0266[_0x1e4360];return _0x31e6b4;};'use strict';var _=require(_0x6026('0x0'));var util=require(_0x6026('0x1'));var logger=require(_0x6026('0x2'))(_0x6026('0x3'));var moment=require(_0x6026('0x4'));var BPromise=require(_0x6026('0x5'));var rp=require(_0x6026('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6026('0x7'));var config=require(_0x6026('0x8'));var attributes=require(_0x6026('0x9'));module[_0x6026('0xa')]=function(_0x119277,_0xb0d5de){return _0x119277['define']('ZendeskField',attributes,{'tableName':'int_zendesk_fields','paranoid':![],'indexes':[{'name':'zendesk_unique_index','fields':[_0x6026('0xb'),_0x6026('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index ed46601..abce8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6ff=['message','info','result','catch','lodash','util','moment','bluebird','rpc','../../config/environment','http','request','then','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x6e654b,_0x17c1c6){var _0x40c085=function(_0x1010e4){while(--_0x1010e4){_0x6e654b['push'](_0x6e654b['shift']());}};_0x40c085(++_0x17c1c6);}(_0xc6ff,0x15a));var _0xfc6f=function(_0x409092,_0x24de72){_0x409092=_0x409092-0x0;var _0x24a239=_0xc6ff[_0x409092];return _0x24a239;};'use strict';var _=require(_0xfc6f('0x0'));var util=require(_0xfc6f('0x1'));var moment=require(_0xfc6f('0x2'));var BPromise=require(_0xfc6f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xfc6f('0x4'));var config=require(_0xfc6f('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfc6f('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x507f7e,_0x442924,_0x2c4d8d){return new BPromise(function(_0x5eced5,_0x5e9b7d){return client[_0xfc6f('0x7')](_0x507f7e,_0x2c4d8d)[_0xfc6f('0x8')](function(_0x466021){logger['info'](_0xfc6f('0x9'),_0x442924,_0xfc6f('0xa'));logger[_0xfc6f('0xb')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x442924,_0xfc6f('0xa'),JSON[_0xfc6f('0xc')](_0x466021));if(_0x466021[_0xfc6f('0xd')]){if(_0x466021['error'][_0xfc6f('0xe')]===0x1f4){logger[_0xfc6f('0xd')]('ZendeskField,\x20%s,\x20%s',_0x442924,_0x466021[_0xfc6f('0xd')][_0xfc6f('0xf')]);return _0x5e9b7d(_0x466021[_0xfc6f('0xd')][_0xfc6f('0xf')]);}logger[_0xfc6f('0xd')](_0xfc6f('0x9'),_0x442924,_0x466021[_0xfc6f('0xd')]['message']);return _0x5eced5(_0x466021[_0xfc6f('0xd')][_0xfc6f('0xf')]);}else{logger[_0xfc6f('0x10')](_0xfc6f('0x9'),_0x442924,_0xfc6f('0xa'));_0x5eced5(_0x466021[_0xfc6f('0x11')][_0xfc6f('0xf')]);}})[_0xfc6f('0x12')](function(_0xbf21fe){logger['error'](_0xfc6f('0x9'),_0x442924,_0xbf21fe);_0x5e9b7d(_0xbf21fe);});});}
\ No newline at end of file
+var _0xc195=['debug','ZendeskField,\x20%s,\x20%s,\x20%s','stringify','error','ZendeskField,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent'];(function(_0x5541ea,_0x261fe4){var _0x4ff5ba=function(_0x288da4){while(--_0x288da4){_0x5541ea['push'](_0x5541ea['shift']());}};_0x4ff5ba(++_0x261fe4);}(_0xc195,0x151));var _0x5c19=function(_0x36b400,_0x277ec5){_0x36b400=_0x36b400-0x0;var _0x4d47bf=_0xc195[_0x36b400];return _0x4d47bf;};'use strict';var _=require(_0x5c19('0x0'));var util=require(_0x5c19('0x1'));var moment=require(_0x5c19('0x2'));var BPromise=require(_0x5c19('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5c19('0x4'));var db=require(_0x5c19('0x5'))['db'];var utils=require(_0x5c19('0x6'));var logger=require('../../config/logger')(_0x5c19('0x7'));var config=require(_0x5c19('0x8'));var jayson=require(_0x5c19('0x9'));var client=jayson[_0x5c19('0xa')][_0x5c19('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2aef19,_0x2bce2a,_0x395dc9){return new BPromise(function(_0x58cf69,_0x312b93){return client[_0x5c19('0xc')](_0x2aef19,_0x395dc9)[_0x5c19('0xd')](function(_0x4822c6){logger['info']('ZendeskField,\x20%s,\x20%s',_0x2bce2a,_0x5c19('0xe'));logger[_0x5c19('0xf')](_0x5c19('0x10'),_0x2bce2a,'request\x20sent',JSON[_0x5c19('0x11')](_0x4822c6));if(_0x4822c6[_0x5c19('0x12')]){if(_0x4822c6[_0x5c19('0x12')]['code']===0x1f4){logger[_0x5c19('0x12')](_0x5c19('0x13'),_0x2bce2a,_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);return _0x312b93(_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);}logger['error'](_0x5c19('0x13'),_0x2bce2a,_0x4822c6[_0x5c19('0x12')][_0x5c19('0x14')]);return _0x58cf69(_0x4822c6['error']['message']);}else{logger['info'](_0x5c19('0x13'),_0x2bce2a,'request\x20sent');_0x58cf69(_0x4822c6[_0x5c19('0x15')]['message']);}})['catch'](function(_0x5dca0d){logger['error'](_0x5c19('0x13'),_0x2bce2a,_0x5dca0d);_0x312b93(_0x5dca0d);});});}
\ No newline at end of file
index 6467a1c..d7c07d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87fa=['/:id/fields','getFields','post','create','/:id/configurations','put','update','delete','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./intZohoAccount.controller','isAuthenticated','index','get','/:id','show','getConfigurations'];(function(_0x1f62be,_0x107b86){var _0x2114d3=function(_0x404724){while(--_0x404724){_0x1f62be['push'](_0x1f62be['shift']());}};_0x2114d3(++_0x107b86);}(_0x87fa,0x65));var _0xa87f=function(_0x1fb474,_0x32c089){_0x1fb474=_0x1fb474-0x0;var _0xa01de2=_0x87fa[_0x1fb474];return _0xa01de2;};'use strict';var multer=require(_0xa87f('0x0'));var util=require(_0xa87f('0x1'));var path=require(_0xa87f('0x2'));var timeout=require(_0xa87f('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xa87f('0x4'));var auth=require(_0xa87f('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa87f('0x6'));var controller=require(_0xa87f('0x7'));router['get']('/',auth[_0xa87f('0x8')](),controller[_0xa87f('0x9')]);router[_0xa87f('0xa')](_0xa87f('0xb'),auth[_0xa87f('0x8')](),controller[_0xa87f('0xc')]);router['get']('/:id/configurations',auth[_0xa87f('0x8')](),controller[_0xa87f('0xd')]);router['get'](_0xa87f('0xe'),auth[_0xa87f('0x8')](),controller[_0xa87f('0xf')]);router[_0xa87f('0x10')]('/',auth[_0xa87f('0x8')](),controller[_0xa87f('0x11')]);router[_0xa87f('0x10')](_0xa87f('0x12'),auth['isAuthenticated'](),controller['addConfiguration']);router[_0xa87f('0x13')](_0xa87f('0xb'),auth['isAuthenticated'](),controller[_0xa87f('0x14')]);router[_0xa87f('0x15')](_0xa87f('0xb'),auth[_0xa87f('0x8')](),controller['destroy']);module[_0xa87f('0x16')]=router;
\ No newline at end of file
+var _0xe6b0=['../../config/environment','./intZohoAccount.controller','index','get','/:id','isAuthenticated','/:id/configurations','getConfigurations','getFields','post','create','addConfiguration','update','delete','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x458ed6,_0x504646){var _0xa5dfd9=function(_0x504e7b){while(--_0x504e7b){_0x458ed6['push'](_0x458ed6['shift']());}};_0xa5dfd9(++_0x504646);}(_0xe6b0,0x188));var _0x0e6b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe6b0[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0e6b('0x0'));var util=require(_0x0e6b('0x1'));var path=require('path');var timeout=require(_0x0e6b('0x2'));var express=require(_0x0e6b('0x3'));var router=express[_0x0e6b('0x4')]();var fs_extra=require(_0x0e6b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x0e6b('0x6'));var config=require(_0x0e6b('0x7'));var controller=require(_0x0e6b('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x0e6b('0x9')]);router[_0x0e6b('0xa')](_0x0e6b('0xb'),auth[_0x0e6b('0xc')](),controller['show']);router[_0x0e6b('0xa')](_0x0e6b('0xd'),auth[_0x0e6b('0xc')](),controller[_0x0e6b('0xe')]);router['get']('/:id/fields',auth[_0x0e6b('0xc')](),controller[_0x0e6b('0xf')]);router[_0x0e6b('0x10')]('/',auth[_0x0e6b('0xc')](),controller[_0x0e6b('0x11')]);router[_0x0e6b('0x10')](_0x0e6b('0xd'),auth['isAuthenticated'](),controller[_0x0e6b('0x12')]);router['put'](_0x0e6b('0xb'),auth['isAuthenticated'](),controller[_0x0e6b('0x13')]);router[_0x0e6b('0x14')](_0x0e6b('0xb'),auth[_0x0e6b('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 419a092..7c80634 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9a=['STRING','exports'];(function(_0xc591bd,_0x233e71){var _0x1e04d1=function(_0x2e3907){while(--_0x2e3907){_0xc591bd['push'](_0xc591bd['shift']());}};_0x1e04d1(++_0x233e71);}(_0x0a9a,0x183));var _0xa0a9=function(_0x92d94c,_0x577827){_0x92d94c=_0x92d94c-0x0;var _0x14f0e8=_0x0a9a[_0x92d94c];return _0x14f0e8;};'use strict';var Sequelize=require('sequelize');module[_0xa0a9('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa0a9('0x1')]},'host':{'type':Sequelize[_0xa0a9('0x1')]},'zone':{'type':Sequelize[_0xa0a9('0x1')]},'clientId':{'type':Sequelize[_0xa0a9('0x1')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xa0a9('0x1')],'allowNull':![]},'code':{'type':Sequelize[_0xa0a9('0x1')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6c76=['STRING','sequelize','exports'];(function(_0x35e94d,_0x6e5e4){var _0xb91537=function(_0x12a7ed){while(--_0x12a7ed){_0x35e94d['push'](_0x35e94d['shift']());}};_0xb91537(++_0x6e5e4);}(_0x6c76,0x184));var _0x66c7=function(_0x1a80ef,_0x4d9b47){_0x1a80ef=_0x1a80ef-0x0;var _0x1df274=_0x6c76[_0x1a80ef];return _0x1df274;};'use strict';var Sequelize=require(_0x66c7('0x0'));module[_0x66c7('0x1')]={'name':{'type':Sequelize[_0x66c7('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x66c7('0x2')]},'zone':{'type':Sequelize[_0x66c7('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0x66c7('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0x66c7('0x2')]},'refreshToken':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 2eee602..c673d0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf0=['query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','map','VIRTUAL','options','includeAll','include','catch','params','find','create','body','destroy','pick','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','type','getDescriptions','ZohoConfiguration','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.eu','https://accounts.zoho.in','POST','refreshToken','clientId','access_token','getFields','clientSecret','serverUrl','code','host','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','Calls','Zoho-oauthtoken\x20','response','error','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Start_Time','remove','system_mandatory','push','custom_field','picklist','pick_list_values','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','stack','send','index','ZohoAccount','rawAttributes','fieldName','key','name'];(function(_0x9d53fb,_0x4b898b){var _0x12f955=function(_0x5b03f9){while(--_0x5b03f9){_0x9d53fb['push'](_0x9d53fb['shift']());}};_0x12f955(++_0x4b898b);}(_0x8bf0,0xd1));var _0x08bf=function(_0x55b936,_0x42509d){_0x55b936=_0x55b936-0x0;var _0xb7292c=_0x8bf0[_0x55b936];return _0xb7292c;};'use strict';var emlformat=require(_0x08bf('0x0'));var rimraf=require(_0x08bf('0x1'));var zipdir=require(_0x08bf('0x2'));var jsonpatch=require(_0x08bf('0x3'));var rp=require('request-promise');var moment=require(_0x08bf('0x4'));var BPromise=require(_0x08bf('0x5'));var Mustache=require(_0x08bf('0x6'));var util=require(_0x08bf('0x7'));var path=require(_0x08bf('0x8'));var sox=require(_0x08bf('0x9'));var csv=require('to-csv');var ejs=require(_0x08bf('0xa'));var fs=require('fs');var fs_extra=require(_0x08bf('0xb'));var _=require(_0x08bf('0xc'));var squel=require(_0x08bf('0xd'));var crypto=require(_0x08bf('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x08bf('0xf'));var toCsv=require(_0x08bf('0x10'));var querystring=require(_0x08bf('0x11'));var Papa=require(_0x08bf('0x12'));var Redis=require(_0x08bf('0x13'));var authService=require(_0x08bf('0x14'));var qs=require(_0x08bf('0x15'));var as=require(_0x08bf('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x08bf('0x17'))(_0x08bf('0x18'));var utils=require(_0x08bf('0x19'));var config=require(_0x08bf('0x1a'));var licenseUtil=require(_0x08bf('0x1b'));var db=require('../../mysqldb')['db'];var integrations=require(_0x08bf('0x1c'));function respondWithStatusCode(_0x504a97,_0x34b205){_0x34b205=_0x34b205||0xcc;return function(_0x59a24c){if(_0x59a24c){return _0x504a97[_0x08bf('0x1d')](_0x34b205);}return _0x504a97[_0x08bf('0x1e')](_0x34b205)[_0x08bf('0x1f')]();};}function respondWithResult(_0x3f9229,_0x92e054){_0x92e054=_0x92e054||0xc8;return function(_0x1f4b4b){if(_0x1f4b4b){return _0x3f9229[_0x08bf('0x1e')](_0x92e054)['json'](_0x1f4b4b);}};}function respondWithFilteredResult(_0x38afc9,_0x45e600){return function(_0x56262c){if(_0x56262c){var _0x542d4a=typeof _0x45e600[_0x08bf('0x20')]==='undefined'&&typeof _0x45e600[_0x08bf('0x21')]===_0x08bf('0x22');var _0x3ef60f=_0x56262c[_0x08bf('0x23')];var _0x495dad=_0x542d4a?0x0:_0x45e600[_0x08bf('0x20')];var _0x7e24b8=_0x542d4a?_0x56262c['count']:_0x45e600[_0x08bf('0x20')]+_0x45e600[_0x08bf('0x21')];var _0x36900b;if(_0x7e24b8>=_0x3ef60f){_0x7e24b8=_0x3ef60f;_0x36900b=0xc8;}else{_0x36900b=0xce;}_0x38afc9[_0x08bf('0x1e')](_0x36900b);return _0x38afc9[_0x08bf('0x24')](_0x08bf('0x25'),_0x495dad+'-'+_0x7e24b8+'/'+_0x3ef60f)['json'](_0x56262c);}return null;};}function patchUpdates(_0x382e35){return function(_0x54e856){try{jsonpatch[_0x08bf('0x26')](_0x54e856,_0x382e35,!![]);}catch(_0x114585){return BPromise[_0x08bf('0x27')](_0x114585);}return _0x54e856[_0x08bf('0x28')]();};}function saveUpdates(_0x48197b,_0x4facc0){return function(_0x50e584){if(_0x50e584){return _0x50e584[_0x08bf('0x29')](_0x48197b)[_0x08bf('0x2a')](function(_0x174720){return _0x174720;});}return null;};}function removeEntity(_0x1857c8,_0x556b88){return function(_0x320a95){if(_0x320a95){return _0x320a95['destroy']()['then'](function(){_0x1857c8['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x400cb0,_0x117b67){return function(_0x5a0013){if(!_0x5a0013){_0x400cb0['sendStatus'](0x194);}return _0x5a0013;};}function handleError(_0x355589,_0x4ee47f){_0x4ee47f=_0x4ee47f||0x1f4;return function(_0x27c877){logger['error'](_0x27c877[_0x08bf('0x2b')]);if(_0x27c877['name']){delete _0x27c877['name'];}_0x355589[_0x08bf('0x1e')](_0x4ee47f)[_0x08bf('0x2c')](_0x27c877);};}exports[_0x08bf('0x2d')]=function(_0x7a01b5,_0x3f8912){var _0x506c53={},_0x5902a9={},_0x1fc0e2={'count':0x0,'rows':[]};var _0x4c579c=_['map'](db[_0x08bf('0x2e')][_0x08bf('0x2f')],function(_0x1a6c71){return{'name':_0x1a6c71[_0x08bf('0x30')],'type':_0x1a6c71['type'][_0x08bf('0x31')]};});_0x5902a9['model']=_['map'](_0x4c579c,_0x08bf('0x32'));_0x5902a9[_0x08bf('0x33')]=_[_0x08bf('0x34')](_0x7a01b5[_0x08bf('0x33')]);_0x5902a9['filters']=_[_0x08bf('0x35')](_0x5902a9[_0x08bf('0x36')],_0x5902a9['query']);_0x506c53[_0x08bf('0x37')]=_[_0x08bf('0x35')](_0x5902a9[_0x08bf('0x36')],qs[_0x08bf('0x38')](_0x7a01b5['query'][_0x08bf('0x38')]));_0x506c53[_0x08bf('0x37')]=_0x506c53['attributes'][_0x08bf('0x39')]?_0x506c53[_0x08bf('0x37')]:_0x5902a9[_0x08bf('0x36')];if(!_0x7a01b5[_0x08bf('0x33')][_0x08bf('0x3a')](_0x08bf('0x3b'))){_0x506c53[_0x08bf('0x21')]=qs[_0x08bf('0x21')](_0x7a01b5['query'][_0x08bf('0x21')]);_0x506c53[_0x08bf('0x20')]=qs[_0x08bf('0x20')](_0x7a01b5['query'][_0x08bf('0x20')]);}_0x506c53[_0x08bf('0x3c')]=qs[_0x08bf('0x3d')](_0x7a01b5['query']['sort']);_0x506c53[_0x08bf('0x3e')]=qs[_0x08bf('0x3f')](_['pick'](_0x7a01b5[_0x08bf('0x33')],_0x5902a9[_0x08bf('0x3f')]),_0x4c579c);if(_0x7a01b5[_0x08bf('0x33')][_0x08bf('0x40')]){_0x506c53['where']=_[_0x08bf('0x41')](_0x506c53[_0x08bf('0x3e')],{'$or':_[_0x08bf('0x42')](_0x4c579c,function(_0x457a56){if(_0x457a56['type']!==_0x08bf('0x43')){var _0x398c09={};_0x398c09[_0x457a56['name']]={'$like':'%'+_0x7a01b5[_0x08bf('0x33')][_0x08bf('0x40')]+'%'};return _0x398c09;}})});}_0x506c53=_[_0x08bf('0x41')]({},_0x506c53,_0x7a01b5[_0x08bf('0x44')]);var _0x7b4924={'where':_0x506c53['where']};return db[_0x08bf('0x2e')][_0x08bf('0x23')](_0x7b4924)[_0x08bf('0x2a')](function(_0x165037){_0x1fc0e2[_0x08bf('0x23')]=_0x165037;if(_0x7a01b5['query'][_0x08bf('0x45')]){_0x506c53[_0x08bf('0x46')]=[{'all':!![]}];}return db[_0x08bf('0x2e')]['findAll'](_0x506c53);})[_0x08bf('0x2a')](function(_0x42b09e){_0x1fc0e2['rows']=_0x42b09e;return _0x1fc0e2;})[_0x08bf('0x2a')](respondWithFilteredResult(_0x3f8912,_0x506c53))[_0x08bf('0x47')](handleError(_0x3f8912,null));};exports['show']=function(_0x27273c,_0x2dd2f5){var _0x59c5c5={'raw':![],'where':{'id':_0x27273c[_0x08bf('0x48')]['id']}},_0xa421f5={};_0xa421f5[_0x08bf('0x36')]=_[_0x08bf('0x34')](db['ZohoAccount']['rawAttributes']);_0xa421f5['query']=_[_0x08bf('0x34')](_0x27273c[_0x08bf('0x33')]);_0xa421f5[_0x08bf('0x3f')]=_[_0x08bf('0x35')](_0xa421f5[_0x08bf('0x36')],_0xa421f5[_0x08bf('0x33')]);_0x59c5c5['attributes']=_[_0x08bf('0x35')](_0xa421f5[_0x08bf('0x36')],qs[_0x08bf('0x38')](_0x27273c[_0x08bf('0x33')][_0x08bf('0x38')]));_0x59c5c5[_0x08bf('0x37')]=_0x59c5c5[_0x08bf('0x37')][_0x08bf('0x39')]?_0x59c5c5[_0x08bf('0x37')]:_0xa421f5['model'];if(_0x27273c[_0x08bf('0x33')][_0x08bf('0x45')]){_0x59c5c5[_0x08bf('0x46')]=[{'all':!![]}];}_0x59c5c5=_[_0x08bf('0x41')]({},_0x59c5c5,_0x27273c['options']);return db[_0x08bf('0x2e')][_0x08bf('0x49')](_0x59c5c5)[_0x08bf('0x2a')](handleEntityNotFound(_0x2dd2f5,null))[_0x08bf('0x2a')](respondWithResult(_0x2dd2f5,null))[_0x08bf('0x47')](handleError(_0x2dd2f5,null));};exports[_0x08bf('0x4a')]=function(_0x5c2e6b,_0xc7439f){return db[_0x08bf('0x2e')][_0x08bf('0x4a')](_0x5c2e6b[_0x08bf('0x4b')],{})[_0x08bf('0x2a')](respondWithResult(_0xc7439f,0xc9))[_0x08bf('0x47')](handleError(_0xc7439f,null));};exports[_0x08bf('0x29')]=function(_0x2c8789,_0x1f461d){if(_0x2c8789[_0x08bf('0x4b')]['id']){delete _0x2c8789['body']['id'];}return db[_0x08bf('0x2e')][_0x08bf('0x49')]({'where':{'id':_0x2c8789[_0x08bf('0x48')]['id']}})[_0x08bf('0x2a')](handleEntityNotFound(_0x1f461d,null))[_0x08bf('0x2a')](saveUpdates(_0x2c8789['body'],null))[_0x08bf('0x2a')](respondWithResult(_0x1f461d,null))['catch'](handleError(_0x1f461d,null));};exports[_0x08bf('0x4c')]=function(_0x1f7a81,_0x3febd0){return db['ZohoAccount']['find']({'where':{'id':_0x1f7a81[_0x08bf('0x48')]['id']}})[_0x08bf('0x2a')](handleEntityNotFound(_0x3febd0,null))[_0x08bf('0x2a')](removeEntity(_0x3febd0,null))[_0x08bf('0x47')](handleError(_0x3febd0,null));};exports['getConfigurations']=function(_0x1ed70f,_0x239460,_0x524d0e){var _0x4a165e={};var _0x1dbe73={};var _0x3322e7;var _0x127adb;return db[_0x08bf('0x2e')]['findOne']({'where':{'id':_0x1ed70f[_0x08bf('0x48')]['id']}})[_0x08bf('0x2a')](handleEntityNotFound(_0x239460,null))[_0x08bf('0x2a')](function(_0x38ebec){if(_0x38ebec){_0x3322e7=_0x38ebec;_0x1dbe73[_0x08bf('0x36')]=_['keys'](db['ZohoConfiguration']['rawAttributes']);_0x1dbe73['query']=_['keys'](_0x1ed70f[_0x08bf('0x33')]);_0x1dbe73['filters']=_[_0x08bf('0x35')](_0x1dbe73[_0x08bf('0x36')],_0x1dbe73[_0x08bf('0x33')]);_0x4a165e['attributes']=_['intersection'](_0x1dbe73['model'],qs[_0x08bf('0x38')](_0x1ed70f['query'][_0x08bf('0x38')]));_0x4a165e[_0x08bf('0x37')]=_0x4a165e[_0x08bf('0x37')][_0x08bf('0x39')]?_0x4a165e[_0x08bf('0x37')]:_0x1dbe73['model'];_0x4a165e[_0x08bf('0x3c')]=qs[_0x08bf('0x3d')](_0x1ed70f[_0x08bf('0x33')][_0x08bf('0x3d')]);_0x4a165e[_0x08bf('0x3e')]=qs[_0x08bf('0x3f')](_[_0x08bf('0x4d')](_0x1ed70f[_0x08bf('0x33')],_0x1dbe73[_0x08bf('0x3f')]));if(_0x1ed70f[_0x08bf('0x33')][_0x08bf('0x40')]){_0x4a165e[_0x08bf('0x3e')]=_[_0x08bf('0x41')](_0x4a165e['where'],{'$or':_[_0x08bf('0x42')](_0x4a165e[_0x08bf('0x37')],function(_0x4d5bba){var _0x27ff8={};_0x27ff8[_0x4d5bba]={'$like':'%'+_0x1ed70f[_0x08bf('0x33')]['filter']+'%'};return _0x27ff8;})});}_0x4a165e=_[_0x08bf('0x41')]({},_0x4a165e,_0x1ed70f['options']);return _0x3322e7[_0x08bf('0x4e')](_0x4a165e);}})[_0x08bf('0x2a')](function(_0x2ddd6c){if(_0x2ddd6c){_0x127adb=_0x2ddd6c[_0x08bf('0x39')];if(!_0x1ed70f[_0x08bf('0x33')]['hasOwnProperty'](_0x08bf('0x3b'))){_0x4a165e['limit']=qs['limit'](_0x1ed70f['query'][_0x08bf('0x21')]);_0x4a165e[_0x08bf('0x20')]=qs[_0x08bf('0x20')](_0x1ed70f[_0x08bf('0x33')]['offset']);}return _0x3322e7[_0x08bf('0x4e')](_0x4a165e);}})[_0x08bf('0x2a')](function(_0x5b0e31){if(_0x5b0e31){return _0x5b0e31?{'count':_0x127adb,'rows':_0x5b0e31}:null;}})['then'](respondWithResult(_0x239460,null))[_0x08bf('0x47')](handleError(_0x239460,null));};exports[_0x08bf('0x4f')]=function(_0x4956e7,_0x33fe47,_0xa2ad96){if(_0x4956e7[_0x08bf('0x4b')]['id']){delete _0x4956e7[_0x08bf('0x4b')]['id'];}return db[_0x08bf('0x2e')][_0x08bf('0x50')]({'where':{'id':_0x4956e7[_0x08bf('0x48')]['id']}})[_0x08bf('0x2a')](handleEntityNotFound(_0x33fe47,null))[_0x08bf('0x2a')](function(_0x389b47){if(_0x389b47){_0x4956e7[_0x08bf('0x4b')][_0x08bf('0x51')]=_0x389b47['id'];_0x4956e7[_0x08bf('0x4b')][_0x08bf('0x52')]=integrations[_0x08bf('0x53')](_0x4956e7[_0x08bf('0x4b')][_0x08bf('0x54')],_0x4956e7[_0x08bf('0x4b')][_0x08bf('0x55')]);_0x4956e7['body']['Descriptions']=integrations[_0x08bf('0x56')](_0x4956e7[_0x08bf('0x4b')][_0x08bf('0x54')],_0x4956e7[_0x08bf('0x4b')]['type']);return db[_0x08bf('0x57')][_0x08bf('0x4a')](_0x4956e7[_0x08bf('0x4b')],{'include':[{'model':db[_0x08bf('0x58')],'as':'Subjects'},{'model':db['ZohoField'],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x33fe47,null))[_0x08bf('0x47')](handleError(_0x33fe47,null));};function getAccessToken(_0x3dec1d){return new Promise(function(_0x24bfd6,_0x3060c6){var _0x546fc9;switch(_0x3dec1d[_0x08bf('0x59')]){case'US':_0x546fc9=_0x08bf('0x5a');break;case'AU':_0x546fc9='https://accounts.zoho.com.au';break;case'EU':_0x546fc9=_0x08bf('0x5b');break;case'IN':_0x546fc9=_0x08bf('0x5c');break;case'CN':_0x546fc9='https://accounts.zoho.com.cn';break;default:_0x546fc9='https://accounts.zoho.eu';break;}var _0x366b6a={'method':_0x08bf('0x5d'),'uri':_0x546fc9+'/oauth/v2/token','qs':{'refresh_token':_0x3dec1d[_0x08bf('0x5e')],'client_id':_0x3dec1d[_0x08bf('0x5f')],'client_secret':_0x3dec1d['clientSecret'],'grant_type':'refresh_token'},'json':!![]};return rp(_0x366b6a)[_0x08bf('0x2a')](function(_0xe6fcac){if(_0xe6fcac[_0x08bf('0x60')]){_0x24bfd6(_0xe6fcac['access_token']);}else{_0x3060c6('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0x08bf('0x47')](function(_0x4ed04d){_0x3060c6(_0x4ed04d);});});}exports[_0x08bf('0x61')]=function(_0x2a6ec4,_0x173cc8,_0x472e67){var _0x514950,_0x238835,_0x3854ab,_0x6bb044,_0x379f9f;return db['ZohoAccount']['findOne']({'where':{'id':_0x2a6ec4[_0x08bf('0x48')]['id']},'attributes':['id','host',_0x08bf('0x59'),'clientId',_0x08bf('0x62'),_0x08bf('0x63'),_0x08bf('0x64'),_0x08bf('0x5e')]})['then'](handleEntityNotFound(_0x173cc8,null))[_0x08bf('0x2a')](function(_0x1f3e8d){_0x379f9f=_0x1f3e8d;_0x514950=_0x379f9f[_0x08bf('0x65')];_0x238835=_0x514950==='zoho.eu'?'eu':_0x08bf('0x66');_0x3854ab=_0x379f9f[_0x08bf('0x63')];var _0x424d08=_0x3854ab[_0x08bf('0x67')](-0x1);if(_0x424d08==='/'||_0x424d08==='\x5c'||_0x424d08===':'){_0x3854ab=_0x3854ab[_0x08bf('0x68')](0x0,_0x3854ab[_0x08bf('0x69')](_0x424d08));}if(!_0x379f9f[_0x08bf('0x5e')]){throw new Error(_0x08bf('0x6a'));}return getAccessToken(_0x379f9f);})[_0x08bf('0x2a')](function(_0xc3a488){if(_0xc3a488){return rp({'method':_0x08bf('0x6b'),'uri':util['format']('https://www.zohoapis.%s/crm/v2/settings/fields',_0x238835),'qs':{'module':_0x08bf('0x6c')},'headers':{'Authorization':_0x08bf('0x6d')+_0xc3a488},'json':!![]});}})['then'](function(_0x5d42c3){if(_0x5d42c3){if(_0x5d42c3[_0x08bf('0x6e')]&&_0x5d42c3['response']['error']){throw new Error(_0x5d42c3[_0x08bf('0x6e')][_0x08bf('0x6f')][_0x08bf('0x70')]);}var _0x5ca9c2=[];var _0x2b5a47=[];var _0x3270f6=[_0x08bf('0x71'),_0x08bf('0x72'),_0x08bf('0x73'),'WhoId',_0x08bf('0x74'),_0x08bf('0x75'),_0x08bf('0x76'),'Call_Type'];_0x2b5a47=_[_0x08bf('0x77')](_0x5d42c3[_0x08bf('0x38')],function(_0x299003){return _0x3270f6['includes'](_0x299003['api_name']);});for(var _0x38dbd5=0x0;_0x38dbd5<_0x2b5a47[_0x08bf('0x39')];_0x38dbd5++){if(_0x2b5a47[_0x38dbd5][_0x08bf('0x78')]===![]){_0x5ca9c2[_0x08bf('0x79')]({'id':_0x2b5a47[_0x38dbd5]['id'],'name':_0x2b5a47[_0x38dbd5]['display_label'],'custom':_0x2b5a47[_0x38dbd5][_0x08bf('0x7a')],'options':_0x2b5a47[_0x38dbd5]['data_type']===_0x08bf('0x7b')&&_0x2b5a47[_0x38dbd5][_0x08bf('0x7c')][_0x08bf('0x39')]>-0x1?_[_0x08bf('0x42')](_0x2b5a47[_0x38dbd5][_0x08bf('0x7c')],function(_0x4f7118){return{'name':_0x4f7118,'value':_0x4f7118};}):[]});}}return{'count':_0x5ca9c2['length'],'rows':_0x5ca9c2};}else{return{'count':0x0,'rows':[]};}})[_0x08bf('0x2a')](respondWithResult(_0x173cc8,null))[_0x08bf('0x47')](function(_0x1af704){var _0x54649c=_0x2a6ec4[_0x08bf('0x33')][_0x08bf('0x7d')]?0x1f4:_0x1af704[_0x08bf('0x7e')]||0x1f4;logger['error'](_0x08bf('0x7f'),_0x08bf('0x61'),_0x54649c,JSON[_0x08bf('0x80')](_0x1af704));delete _0x1af704[_0x08bf('0x32')];if(_0x54649c===0x191){_0x54649c=0x190;}_0x173cc8[_0x08bf('0x1e')](_0x54649c)['send'](_0x2a6ec4[_0x08bf('0x33')][_0x08bf('0x7d')]?{'message':_0x08bf('0x81'),'statusCode':_0x1af704['statusCode']}:_0x1af704);});};
\ No newline at end of file
+var _0xf5ee=['error','stack','name','map','ZohoAccount','rawAttributes','type','key','query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','options','count','includeAll','include','findAll','catch','show','keys','merge','find','create','body','getConfigurations','params','nolimit','addConfiguration','AccountId','getSubjects','getDescriptions','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','refreshToken','clientSecret','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientId','serverUrl','zoho.eu','com','slice','substring','lastIndexOf','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Owner','Subject','Description','Call_Duration','Call_Result','Call_Type','remove','includes','push','display_label','custom_field','picklist','pick_list_values','test','statusCode','stringify','send','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','json','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end'];(function(_0x1ce720,_0x4f4abd){var _0x1c736e=function(_0x568116){while(--_0x568116){_0x1ce720['push'](_0x1ce720['shift']());}};_0x1c736e(++_0x4f4abd);}(_0xf5ee,0xd5));var _0xef5e=function(_0x407654,_0x275ae3){_0x407654=_0x407654-0x0;var _0x521dbd=_0xf5ee[_0x407654];return _0x521dbd;};'use strict';var emlformat=require(_0xef5e('0x0'));var rimraf=require(_0xef5e('0x1'));var zipdir=require(_0xef5e('0x2'));var jsonpatch=require(_0xef5e('0x3'));var rp=require('request-promise');var moment=require(_0xef5e('0x4'));var BPromise=require(_0xef5e('0x5'));var Mustache=require(_0xef5e('0x6'));var util=require(_0xef5e('0x7'));var path=require('path');var sox=require(_0xef5e('0x8'));var csv=require(_0xef5e('0x9'));var ejs=require(_0xef5e('0xa'));var fs=require('fs');var fs_extra=require(_0xef5e('0xb'));var _=require(_0xef5e('0xc'));var squel=require('squel');var crypto=require(_0xef5e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xef5e('0xe'));var toCsv=require(_0xef5e('0x9'));var querystring=require(_0xef5e('0xf'));var Papa=require(_0xef5e('0x10'));var Redis=require('ioredis');var authService=require(_0xef5e('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xef5e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xef5e('0x13'))(_0xef5e('0x14'));var utils=require(_0xef5e('0x15'));var config=require(_0xef5e('0x16'));var licenseUtil=require(_0xef5e('0x17'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x23da8d,_0x1c741e){_0x1c741e=_0x1c741e||0xcc;return function(_0x312fca){if(_0x312fca){return _0x23da8d['sendStatus'](_0x1c741e);}return _0x23da8d[_0xef5e('0x18')](_0x1c741e)['end']();};}function respondWithResult(_0x104de7,_0x44b974){_0x44b974=_0x44b974||0xc8;return function(_0x4b1088){if(_0x4b1088){return _0x104de7[_0xef5e('0x18')](_0x44b974)[_0xef5e('0x19')](_0x4b1088);}};}function respondWithFilteredResult(_0x17e509,_0x4413fa){return function(_0x15a0a1){if(_0x15a0a1){var _0x2a7b7b=typeof _0x4413fa[_0xef5e('0x1a')]==='undefined'&&typeof _0x4413fa[_0xef5e('0x1b')]==='undefined';var _0x3e49ff=_0x15a0a1['count'];var _0x4a4540=_0x2a7b7b?0x0:_0x4413fa[_0xef5e('0x1a')];var _0x29eb0a=_0x2a7b7b?_0x15a0a1['count']:_0x4413fa[_0xef5e('0x1a')]+_0x4413fa[_0xef5e('0x1b')];var _0x56edce;if(_0x29eb0a>=_0x3e49ff){_0x29eb0a=_0x3e49ff;_0x56edce=0xc8;}else{_0x56edce=0xce;}_0x17e509[_0xef5e('0x18')](_0x56edce);return _0x17e509[_0xef5e('0x1c')](_0xef5e('0x1d'),_0x4a4540+'-'+_0x29eb0a+'/'+_0x3e49ff)['json'](_0x15a0a1);}return null;};}function patchUpdates(_0x4ba079){return function(_0x5c1c54){try{jsonpatch[_0xef5e('0x1e')](_0x5c1c54,_0x4ba079,!![]);}catch(_0x3a3d0e){return BPromise[_0xef5e('0x1f')](_0x3a3d0e);}return _0x5c1c54[_0xef5e('0x20')]();};}function saveUpdates(_0x4463cd,_0x251dc7){return function(_0x5de7ec){if(_0x5de7ec){return _0x5de7ec[_0xef5e('0x21')](_0x4463cd)[_0xef5e('0x22')](function(_0x163523){return _0x163523;});}return null;};}function removeEntity(_0x4d79f1,_0x5d1125){return function(_0x4f015f){if(_0x4f015f){return _0x4f015f[_0xef5e('0x23')]()[_0xef5e('0x22')](function(){_0x4d79f1[_0xef5e('0x18')](0xcc)[_0xef5e('0x24')]();});}};}function handleEntityNotFound(_0x4e961f,_0x534b72){return function(_0x2c32bd){if(!_0x2c32bd){_0x4e961f['sendStatus'](0x194);}return _0x2c32bd;};}function handleError(_0x506124,_0x26c490){_0x26c490=_0x26c490||0x1f4;return function(_0x4c7df7){logger[_0xef5e('0x25')](_0x4c7df7[_0xef5e('0x26')]);if(_0x4c7df7['name']){delete _0x4c7df7[_0xef5e('0x27')];}_0x506124['status'](_0x26c490)['send'](_0x4c7df7);};}exports['index']=function(_0xda1b76,_0xa0e83e){var _0x11df4a={},_0x53fc5b={},_0x231080={'count':0x0,'rows':[]};var _0x5c75af=_[_0xef5e('0x28')](db[_0xef5e('0x29')][_0xef5e('0x2a')],function(_0x5e79e6){return{'name':_0x5e79e6['fieldName'],'type':_0x5e79e6[_0xef5e('0x2b')][_0xef5e('0x2c')]};});_0x53fc5b['model']=_[_0xef5e('0x28')](_0x5c75af,_0xef5e('0x27'));_0x53fc5b['query']=_['keys'](_0xda1b76[_0xef5e('0x2d')]);_0x53fc5b[_0xef5e('0x2e')]=_['intersection'](_0x53fc5b['model'],_0x53fc5b['query']);_0x11df4a['attributes']=_[_0xef5e('0x2f')](_0x53fc5b[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0xda1b76[_0xef5e('0x2d')][_0xef5e('0x31')]));_0x11df4a['attributes']=_0x11df4a[_0xef5e('0x32')][_0xef5e('0x33')]?_0x11df4a['attributes']:_0x53fc5b[_0xef5e('0x30')];if(!_0xda1b76['query'][_0xef5e('0x34')]('nolimit')){_0x11df4a[_0xef5e('0x1b')]=qs['limit'](_0xda1b76[_0xef5e('0x2d')]['limit']);_0x11df4a['offset']=qs[_0xef5e('0x1a')](_0xda1b76[_0xef5e('0x2d')]['offset']);}_0x11df4a[_0xef5e('0x35')]=qs[_0xef5e('0x36')](_0xda1b76['query'][_0xef5e('0x36')]);_0x11df4a[_0xef5e('0x37')]=qs[_0xef5e('0x2e')](_[_0xef5e('0x38')](_0xda1b76['query'],_0x53fc5b[_0xef5e('0x2e')]),_0x5c75af);if(_0xda1b76['query'][_0xef5e('0x39')]){_0x11df4a[_0xef5e('0x37')]=_['merge'](_0x11df4a['where'],{'$or':_[_0xef5e('0x28')](_0x5c75af,function(_0x2b75c9){if(_0x2b75c9[_0xef5e('0x2b')]!=='VIRTUAL'){var _0x55e22a={};_0x55e22a[_0x2b75c9[_0xef5e('0x27')]]={'$like':'%'+_0xda1b76['query']['filter']+'%'};return _0x55e22a;}})});}_0x11df4a=_['merge']({},_0x11df4a,_0xda1b76[_0xef5e('0x3a')]);var _0x25a62c={'where':_0x11df4a['where']};return db[_0xef5e('0x29')][_0xef5e('0x3b')](_0x25a62c)['then'](function(_0x3a55a4){_0x231080[_0xef5e('0x3b')]=_0x3a55a4;if(_0xda1b76[_0xef5e('0x2d')][_0xef5e('0x3c')]){_0x11df4a[_0xef5e('0x3d')]=[{'all':!![]}];}return db[_0xef5e('0x29')][_0xef5e('0x3e')](_0x11df4a);})[_0xef5e('0x22')](function(_0x4dfdc1){_0x231080['rows']=_0x4dfdc1;return _0x231080;})[_0xef5e('0x22')](respondWithFilteredResult(_0xa0e83e,_0x11df4a))[_0xef5e('0x3f')](handleError(_0xa0e83e,null));};exports[_0xef5e('0x40')]=function(_0xbd504c,_0x3142bd){var _0x4bafb9={'raw':![],'where':{'id':_0xbd504c['params']['id']}},_0x3247e7={};_0x3247e7[_0xef5e('0x30')]=_['keys'](db[_0xef5e('0x29')][_0xef5e('0x2a')]);_0x3247e7['query']=_[_0xef5e('0x41')](_0xbd504c[_0xef5e('0x2d')]);_0x3247e7[_0xef5e('0x2e')]=_[_0xef5e('0x2f')](_0x3247e7[_0xef5e('0x30')],_0x3247e7['query']);_0x4bafb9[_0xef5e('0x32')]=_[_0xef5e('0x2f')](_0x3247e7[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0xbd504c[_0xef5e('0x2d')][_0xef5e('0x31')]));_0x4bafb9[_0xef5e('0x32')]=_0x4bafb9[_0xef5e('0x32')][_0xef5e('0x33')]?_0x4bafb9[_0xef5e('0x32')]:_0x3247e7[_0xef5e('0x30')];if(_0xbd504c[_0xef5e('0x2d')][_0xef5e('0x3c')]){_0x4bafb9[_0xef5e('0x3d')]=[{'all':!![]}];}_0x4bafb9=_[_0xef5e('0x42')]({},_0x4bafb9,_0xbd504c[_0xef5e('0x3a')]);return db[_0xef5e('0x29')][_0xef5e('0x43')](_0x4bafb9)['then'](handleEntityNotFound(_0x3142bd,null))['then'](respondWithResult(_0x3142bd,null))[_0xef5e('0x3f')](handleError(_0x3142bd,null));};exports[_0xef5e('0x44')]=function(_0x57cdb2,_0x1bddc2){return db[_0xef5e('0x29')][_0xef5e('0x44')](_0x57cdb2[_0xef5e('0x45')],{})[_0xef5e('0x22')](respondWithResult(_0x1bddc2,0xc9))[_0xef5e('0x3f')](handleError(_0x1bddc2,null));};exports[_0xef5e('0x21')]=function(_0x7ae640,_0x5e0c87){if(_0x7ae640['body']['id']){delete _0x7ae640[_0xef5e('0x45')]['id'];}return db[_0xef5e('0x29')]['find']({'where':{'id':_0x7ae640['params']['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0x5e0c87,null))['then'](saveUpdates(_0x7ae640['body'],null))[_0xef5e('0x22')](respondWithResult(_0x5e0c87,null))[_0xef5e('0x3f')](handleError(_0x5e0c87,null));};exports['destroy']=function(_0x2c0b6c,_0xf9df01){return db[_0xef5e('0x29')][_0xef5e('0x43')]({'where':{'id':_0x2c0b6c['params']['id']}})['then'](handleEntityNotFound(_0xf9df01,null))[_0xef5e('0x22')](removeEntity(_0xf9df01,null))['catch'](handleError(_0xf9df01,null));};exports[_0xef5e('0x46')]=function(_0x5aca9c,_0x10f31e,_0x48e4c3){var _0x17a907={};var _0xf11cfc={};var _0x145375;var _0x37496a;return db['ZohoAccount']['findOne']({'where':{'id':_0x5aca9c[_0xef5e('0x47')]['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0x10f31e,null))[_0xef5e('0x22')](function(_0x42210d){if(_0x42210d){_0x145375=_0x42210d;_0xf11cfc[_0xef5e('0x30')]=_[_0xef5e('0x41')](db['ZohoConfiguration']['rawAttributes']);_0xf11cfc[_0xef5e('0x2d')]=_[_0xef5e('0x41')](_0x5aca9c[_0xef5e('0x2d')]);_0xf11cfc[_0xef5e('0x2e')]=_[_0xef5e('0x2f')](_0xf11cfc[_0xef5e('0x30')],_0xf11cfc[_0xef5e('0x2d')]);_0x17a907[_0xef5e('0x32')]=_[_0xef5e('0x2f')](_0xf11cfc[_0xef5e('0x30')],qs[_0xef5e('0x31')](_0x5aca9c[_0xef5e('0x2d')]['fields']));_0x17a907[_0xef5e('0x32')]=_0x17a907['attributes'][_0xef5e('0x33')]?_0x17a907[_0xef5e('0x32')]:_0xf11cfc['model'];_0x17a907[_0xef5e('0x35')]=qs['sort'](_0x5aca9c['query']['sort']);_0x17a907['where']=qs[_0xef5e('0x2e')](_['pick'](_0x5aca9c[_0xef5e('0x2d')],_0xf11cfc[_0xef5e('0x2e')]));if(_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x39')]){_0x17a907[_0xef5e('0x37')]=_['merge'](_0x17a907[_0xef5e('0x37')],{'$or':_['map'](_0x17a907[_0xef5e('0x32')],function(_0x4d65c9){var _0x26120e={};_0x26120e[_0x4d65c9]={'$like':'%'+_0x5aca9c[_0xef5e('0x2d')]['filter']+'%'};return _0x26120e;})});}_0x17a907=_[_0xef5e('0x42')]({},_0x17a907,_0x5aca9c[_0xef5e('0x3a')]);return _0x145375[_0xef5e('0x46')](_0x17a907);}})[_0xef5e('0x22')](function(_0x268458){if(_0x268458){_0x37496a=_0x268458[_0xef5e('0x33')];if(!_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x34')](_0xef5e('0x48'))){_0x17a907[_0xef5e('0x1b')]=qs[_0xef5e('0x1b')](_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x1b')]);_0x17a907[_0xef5e('0x1a')]=qs[_0xef5e('0x1a')](_0x5aca9c[_0xef5e('0x2d')][_0xef5e('0x1a')]);}return _0x145375['getConfigurations'](_0x17a907);}})[_0xef5e('0x22')](function(_0x26aa21){if(_0x26aa21){return _0x26aa21?{'count':_0x37496a,'rows':_0x26aa21}:null;}})[_0xef5e('0x22')](respondWithResult(_0x10f31e,null))[_0xef5e('0x3f')](handleError(_0x10f31e,null));};exports[_0xef5e('0x49')]=function(_0x4eaf51,_0xe8c73a,_0xd4ba07){if(_0x4eaf51[_0xef5e('0x45')]['id']){delete _0x4eaf51[_0xef5e('0x45')]['id'];}return db[_0xef5e('0x29')]['findOne']({'where':{'id':_0x4eaf51[_0xef5e('0x47')]['id']}})[_0xef5e('0x22')](handleEntityNotFound(_0xe8c73a,null))['then'](function(_0x5c09e9){if(_0x5c09e9){_0x4eaf51[_0xef5e('0x45')][_0xef5e('0x4a')]=_0x5c09e9['id'];_0x4eaf51[_0xef5e('0x45')]['Subjects']=integrations[_0xef5e('0x4b')](_0x4eaf51[_0xef5e('0x45')]['channel'],_0x4eaf51[_0xef5e('0x45')]['type']);_0x4eaf51['body']['Descriptions']=integrations[_0xef5e('0x4c')](_0x4eaf51[_0xef5e('0x45')]['channel'],_0x4eaf51[_0xef5e('0x45')]['type']);return db['ZohoConfiguration'][_0xef5e('0x44')](_0x4eaf51[_0xef5e('0x45')],{'include':[{'model':db[_0xef5e('0x4d')],'as':_0xef5e('0x4e')},{'model':db[_0xef5e('0x4d')],'as':_0xef5e('0x4f')}]});}return null;})[_0xef5e('0x22')](respondWithResult(_0xe8c73a,null))[_0xef5e('0x3f')](handleError(_0xe8c73a,null));};function getAccessToken(_0x386eed){return new Promise(function(_0x2479a7,_0x841a49){var _0x3f89a2;switch(_0x386eed[_0xef5e('0x50')]){case'US':_0x3f89a2='https://accounts.zoho.com';break;case'AU':_0x3f89a2=_0xef5e('0x51');break;case'EU':_0x3f89a2=_0xef5e('0x52');break;case'IN':_0x3f89a2=_0xef5e('0x53');break;case'CN':_0x3f89a2=_0xef5e('0x54');break;default:_0x3f89a2=_0xef5e('0x52');break;}var _0x32172c={'method':_0xef5e('0x55'),'uri':_0x3f89a2+_0xef5e('0x56'),'qs':{'refresh_token':_0x386eed[_0xef5e('0x57')],'client_id':_0x386eed['clientId'],'client_secret':_0x386eed[_0xef5e('0x58')],'grant_type':_0xef5e('0x59')},'json':!![]};return rp(_0x32172c)[_0xef5e('0x22')](function(_0x26e7f1){if(_0x26e7f1[_0xef5e('0x5a')]){_0x2479a7(_0x26e7f1['access_token']);}else{_0x841a49(_0xef5e('0x5b'));}})[_0xef5e('0x3f')](function(_0x472b30){_0x841a49(_0x472b30);});});}exports[_0xef5e('0x5c')]=function(_0x20df65,_0x4bf513,_0x5d6297){var _0x1e6a97,_0x4ef6d1,_0x2e5460,_0x17adea,_0xddc7bd;return db[_0xef5e('0x29')]['findOne']({'where':{'id':_0x20df65['params']['id']},'attributes':['id',_0xef5e('0x5d'),_0xef5e('0x50'),_0xef5e('0x5e'),_0xef5e('0x58'),_0xef5e('0x5f'),'code','refreshToken']})['then'](handleEntityNotFound(_0x4bf513,null))[_0xef5e('0x22')](function(_0xf4fa4c){_0xddc7bd=_0xf4fa4c;_0x1e6a97=_0xddc7bd[_0xef5e('0x5d')];_0x4ef6d1=_0x1e6a97===_0xef5e('0x60')?'eu':_0xef5e('0x61');_0x2e5460=_0xddc7bd[_0xef5e('0x5f')];var _0x5b6f30=_0x2e5460[_0xef5e('0x62')](-0x1);if(_0x5b6f30==='/'||_0x5b6f30==='\x5c'||_0x5b6f30===':'){_0x2e5460=_0x2e5460[_0xef5e('0x63')](0x0,_0x2e5460[_0xef5e('0x64')](_0x5b6f30));}if(!_0xddc7bd[_0xef5e('0x57')]){throw new Error(_0xef5e('0x65'));}return getAccessToken(_0xddc7bd);})[_0xef5e('0x22')](function(_0x19a088){if(_0x19a088){return rp({'method':'GET','uri':util[_0xef5e('0x66')](_0xef5e('0x67'),_0x4ef6d1),'qs':{'module':_0xef5e('0x68')},'headers':{'Authorization':_0xef5e('0x69')+_0x19a088},'json':!![]});}})[_0xef5e('0x22')](function(_0x4b2e7c){if(_0x4b2e7c){if(_0x4b2e7c[_0xef5e('0x6a')]&&_0x4b2e7c[_0xef5e('0x6a')]['error']){throw new Error(_0x4b2e7c[_0xef5e('0x6a')][_0xef5e('0x25')][_0xef5e('0x6b')]);}var _0x177949=[];var _0x5598de=[];var _0x5840cb=[_0xef5e('0x6c'),_0xef5e('0x6d'),_0xef5e('0x6e'),'WhoId',_0xef5e('0x6f'),_0xef5e('0x70'),'Call_Start_Time',_0xef5e('0x71')];_0x5598de=_[_0xef5e('0x72')](_0x4b2e7c[_0xef5e('0x31')],function(_0x1cf068){return _0x5840cb[_0xef5e('0x73')](_0x1cf068['api_name']);});for(var _0x2deb07=0x0;_0x2deb07<_0x5598de[_0xef5e('0x33')];_0x2deb07++){if(_0x5598de[_0x2deb07]['system_mandatory']===![]){_0x177949[_0xef5e('0x74')]({'id':_0x5598de[_0x2deb07]['id'],'name':_0x5598de[_0x2deb07][_0xef5e('0x75')],'custom':_0x5598de[_0x2deb07][_0xef5e('0x76')],'options':_0x5598de[_0x2deb07]['data_type']===_0xef5e('0x77')&&_0x5598de[_0x2deb07][_0xef5e('0x78')][_0xef5e('0x33')]>-0x1?_[_0xef5e('0x28')](_0x5598de[_0x2deb07][_0xef5e('0x78')],function(_0x1b6835){return{'name':_0x1b6835,'value':_0x1b6835};}):[]});}}return{'count':_0x177949[_0xef5e('0x33')],'rows':_0x177949};}else{return{'count':0x0,'rows':[]};}})[_0xef5e('0x22')](respondWithResult(_0x4bf513,null))[_0xef5e('0x3f')](function(_0xdb7519){var _0x311213=_0x20df65[_0xef5e('0x2d')][_0xef5e('0x79')]?0x1f4:_0xdb7519[_0xef5e('0x7a')]||0x1f4;logger[_0xef5e('0x25')]('getFields,\x20%s,\x20%s,\x20%s',_0xef5e('0x5c'),_0x311213,JSON[_0xef5e('0x7b')](_0xdb7519));delete _0xdb7519['name'];if(_0x311213===0x191){_0x311213=0x190;}_0x4bf513[_0xef5e('0x18')](_0x311213)[_0xef5e('0x7c')](_0x20df65[_0xef5e('0x2d')][_0xef5e('0x79')]?{'message':'Wrong\x20credentials','statusCode':_0xdb7519[_0xef5e('0x7a')]}:_0xdb7519);});};
\ No newline at end of file
index b3b48c0..c07f185 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d58=['api','moment','request-promise','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','define','ZohoAccount','int_zoho_accounts','changed','zone','serverUrl','clientId','clientSecret','code','host','slice','substring','lastIndexOf','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','then','parse','refresh_token','refreshToken','info','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','error','format','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','application/x-www-form-urlencoded','lodash','../../config/logger'];(function(_0x2a3c0a,_0x163f5c){var _0x1703a2=function(_0x471dfe){while(--_0x471dfe){_0x2a3c0a['push'](_0x2a3c0a['shift']());}};_0x1703a2(++_0x163f5c);}(_0x3d58,0x181));var _0x83d5=function(_0x82a938,_0x5a8186){_0x82a938=_0x82a938-0x0;var _0x29e7a8=_0x3d58[_0x82a938];return _0x29e7a8;};'use strict';var _=require(_0x83d5('0x0'));var util=require('util');var logger=require(_0x83d5('0x1'))(_0x83d5('0x2'));var moment=require(_0x83d5('0x3'));var BPromise=require('bluebird');var rp=require(_0x83d5('0x4'));var fs=require('fs');var path=require(_0x83d5('0x5'));var rimraf=require(_0x83d5('0x6'));var config=require('../../config/environment');var attributes=require(_0x83d5('0x7'));var integrations=require(_0x83d5('0x8'));module['exports']=function(_0x85a000,_0x221b9f){return _0x85a000[_0x83d5('0x9')](_0x83d5('0xa'),attributes,{'tableName':_0x83d5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x51c62a,_0xf7600c,_0x464d0c){if(_0x51c62a[_0x83d5('0xc')](_0x83d5('0xd'))||_0x51c62a[_0x83d5('0xc')](_0x83d5('0xe'))||_0x51c62a[_0x83d5('0xc')](_0x83d5('0xf'))||_0x51c62a[_0x83d5('0xc')](_0x83d5('0x10'))||_0x51c62a[_0x83d5('0xc')](_0x83d5('0x11'))||_0x51c62a['changed'](_0x83d5('0x12'))){var _0x5d6079,_0x43033;_0x5d6079=_0x51c62a[_0x83d5('0xe')];var _0x4c4815=_0x5d6079[_0x83d5('0x13')](-0x1);if(_0x4c4815==='/'||_0x4c4815==='\x5c'||_0x4c4815===':'){_0x5d6079=_0x5d6079[_0x83d5('0x14')](0x0,_0x5d6079[_0x83d5('0x15')](_0x4c4815));}switch(_0x51c62a[_0x83d5('0xd')]){case'US':_0x43033=_0x83d5('0x16');break;case'AU':_0x43033=_0x83d5('0x17');break;case'IN':_0x43033=_0x83d5('0x18');break;case'CN':_0x43033=_0x83d5('0x19');break;default:_0x43033=_0x83d5('0x1a');break;}var _0x42cddb={'method':_0x83d5('0x1b'),'uri':_0x43033+_0x83d5('0x1c'),'form':{'grant_type':_0x83d5('0x1d'),'client_id':_0x51c62a[_0x83d5('0xf')],'client_secret':_0x51c62a[_0x83d5('0x10')],'redirect_uri':_0x51c62a[_0x83d5('0xe')],'code':_0x51c62a[_0x83d5('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x42cddb)[_0x83d5('0x1e')](function(_0x101364){var _0x2c6251=JSON[_0x83d5('0x1f')](_0x101364);if(_0x2c6251[_0x83d5('0x20')]){_0x51c62a[_0x83d5('0x21')]=_0x2c6251[_0x83d5('0x20')];logger[_0x83d5('0x22')](util['format'](_0x83d5('0x23'),_0x51c62a[_0x83d5('0x24')],_0x51c62a['id']));}else{logger[_0x83d5('0x25')](util[_0x83d5('0x26')](_0x83d5('0x27'),_0x51c62a[_0x83d5('0x24')],_0x51c62a['id']),util[_0x83d5('0x28')](_0x2c6251,{'showHidden':![],'depth':null}));}return _0x464d0c(null,_0xf7600c);})[_0x83d5('0x29')](function(_0x2e4a70){logger[_0x83d5('0x25')](util['format'](_0x83d5('0x27'),_0x51c62a[_0x83d5('0x24')],_0x51c62a['id']),util[_0x83d5('0x28')](parsedResult,{'showHidden':![],'depth':null}));return _0x464d0c(_0x2e4a70);});}else{return _0x464d0c(null,_0xf7600c);}},'beforeUpdate':function(_0x2ab57b,_0x477f00,_0x1c7345){if(_0x2ab57b[_0x83d5('0xc')]('zone')||_0x2ab57b[_0x83d5('0xc')](_0x83d5('0xe'))||_0x2ab57b[_0x83d5('0xc')](_0x83d5('0xf'))||_0x2ab57b['changed']('clientSecret')||_0x2ab57b[_0x83d5('0xc')](_0x83d5('0x11'))||_0x2ab57b[_0x83d5('0xc')](_0x83d5('0x12'))){var _0x2c44e8,_0x5cb534;_0x2c44e8=_0x2ab57b[_0x83d5('0xe')];var _0x45ac85=_0x2c44e8['slice'](-0x1);if(_0x45ac85==='/'||_0x45ac85==='\x5c'||_0x45ac85===':'){_0x2c44e8=_0x2c44e8[_0x83d5('0x14')](0x0,_0x2c44e8[_0x83d5('0x15')](_0x45ac85));}switch(_0x2ab57b[_0x83d5('0xd')]){case'US':_0x5cb534=_0x83d5('0x16');break;case'AU':_0x5cb534='https://accounts.zoho.com.au';break;case'IN':_0x5cb534=_0x83d5('0x18');break;case'CN':_0x5cb534=_0x83d5('0x19');break;default:_0x5cb534=_0x83d5('0x1a');break;}var _0x1877d8={'method':_0x83d5('0x1b'),'uri':_0x5cb534+_0x83d5('0x1c'),'form':{'grant_type':_0x83d5('0x1d'),'client_id':_0x2ab57b[_0x83d5('0xf')],'client_secret':_0x2ab57b[_0x83d5('0x10')],'redirect_uri':_0x2ab57b[_0x83d5('0xe')],'code':_0x2ab57b['code']},'headers':{'Content-Type':_0x83d5('0x2a')}};return rp(_0x1877d8)[_0x83d5('0x1e')](function(_0x532f5b){var _0x14b046=JSON[_0x83d5('0x1f')](_0x532f5b);if(_0x14b046[_0x83d5('0x20')]){_0x2ab57b[_0x83d5('0x21')]=_0x14b046[_0x83d5('0x20')];logger['info'](util[_0x83d5('0x26')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2ab57b['name'],_0x2ab57b['id']));}else{logger[_0x83d5('0x25')](util[_0x83d5('0x26')](_0x83d5('0x27'),_0x2ab57b['name'],_0x2ab57b['id']),util[_0x83d5('0x28')](_0x14b046,{'showHidden':![],'depth':null}));}return _0x1c7345(null,_0x477f00);})[_0x83d5('0x29')](function(_0x85e2bd){logger[_0x83d5('0x25')](util[_0x83d5('0x26')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2ab57b[_0x83d5('0x24')],_0x2ab57b['id']),util[_0x83d5('0x28')](parsedResult,{'showHidden':![],'depth':null}));return _0x1c7345(_0x85e2bd);});}else{return _0x1c7345(null,_0x477f00);}}}});};
\ No newline at end of file
+var _0x2ba0=['ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','substring','https://accounts.zoho.com.au','info','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','catch','util','../../config/logger','bluebird','path','rimraf','./intZohoAccount.attributes','define','ZohoAccount','int_zoho_accounts','changed','serverUrl','clientId','code','host','slice','lastIndexOf','zone','https://accounts.zoho.com','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','authorization_code','clientSecret','application/x-www-form-urlencoded','then','parse','refresh_token','refreshToken','format'];(function(_0x311351,_0x28badd){var _0x48be8b=function(_0x1f16d5){while(--_0x1f16d5){_0x311351['push'](_0x311351['shift']());}};_0x48be8b(++_0x28badd);}(_0x2ba0,0x1dd));var _0x02ba=function(_0x18002a,_0x2280ab){_0x18002a=_0x18002a-0x0;var _0x402533=_0x2ba0[_0x18002a];return _0x402533;};'use strict';var _=require('lodash');var util=require(_0x02ba('0x0'));var logger=require(_0x02ba('0x1'))('api');var moment=require('moment');var BPromise=require(_0x02ba('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x02ba('0x3'));var rimraf=require(_0x02ba('0x4'));var config=require('../../config/environment');var attributes=require(_0x02ba('0x5'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x3a924d,_0x4e1bfc){return _0x3a924d[_0x02ba('0x6')](_0x02ba('0x7'),attributes,{'tableName':_0x02ba('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x5817f9,_0x392ea0,_0x221a9a){if(_0x5817f9[_0x02ba('0x9')]('zone')||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xa'))||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xb'))||_0x5817f9[_0x02ba('0x9')]('clientSecret')||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xc'))||_0x5817f9[_0x02ba('0x9')](_0x02ba('0xd'))){var _0xc12449,_0x42318c;_0xc12449=_0x5817f9[_0x02ba('0xa')];var _0x476266=_0xc12449[_0x02ba('0xe')](-0x1);if(_0x476266==='/'||_0x476266==='\x5c'||_0x476266===':'){_0xc12449=_0xc12449['substring'](0x0,_0xc12449[_0x02ba('0xf')](_0x476266));}switch(_0x5817f9[_0x02ba('0x10')]){case'US':_0x42318c=_0x02ba('0x11');break;case'AU':_0x42318c='https://accounts.zoho.com.au';break;case'IN':_0x42318c='https://accounts.zoho.in';break;case'CN':_0x42318c=_0x02ba('0x12');break;default:_0x42318c=_0x02ba('0x13');break;}var _0x94abab={'method':_0x02ba('0x14'),'uri':_0x42318c+_0x02ba('0x15'),'form':{'grant_type':_0x02ba('0x16'),'client_id':_0x5817f9[_0x02ba('0xb')],'client_secret':_0x5817f9[_0x02ba('0x17')],'redirect_uri':_0x5817f9[_0x02ba('0xa')],'code':_0x5817f9[_0x02ba('0xc')]},'headers':{'Content-Type':_0x02ba('0x18')}};return rp(_0x94abab)[_0x02ba('0x19')](function(_0x2a9557){var _0x3e1562=JSON[_0x02ba('0x1a')](_0x2a9557);if(_0x3e1562[_0x02ba('0x1b')]){_0x5817f9[_0x02ba('0x1c')]=_0x3e1562[_0x02ba('0x1b')];logger['info'](util[_0x02ba('0x1d')](_0x02ba('0x1e'),_0x5817f9[_0x02ba('0x1f')],_0x5817f9['id']));}else{logger['error'](util[_0x02ba('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5817f9['name'],_0x5817f9['id']),util[_0x02ba('0x20')](_0x3e1562,{'showHidden':![],'depth':null}));}return _0x221a9a(null,_0x392ea0);})['catch'](function(_0x4643e6){logger['error'](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x5817f9['name'],_0x5817f9['id']),util[_0x02ba('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x221a9a(_0x4643e6);});}else{return _0x221a9a(null,_0x392ea0);}},'beforeUpdate':function(_0x3145f2,_0x29f1b6,_0x33b50e){if(_0x3145f2[_0x02ba('0x9')]('zone')||_0x3145f2[_0x02ba('0x9')](_0x02ba('0xa'))||_0x3145f2['changed']('clientId')||_0x3145f2[_0x02ba('0x9')](_0x02ba('0x17'))||_0x3145f2[_0x02ba('0x9')](_0x02ba('0xc'))||_0x3145f2['changed'](_0x02ba('0xd'))){var _0x437ac5,_0x5362bd;_0x437ac5=_0x3145f2['serverUrl'];var _0x15cece=_0x437ac5[_0x02ba('0xe')](-0x1);if(_0x15cece==='/'||_0x15cece==='\x5c'||_0x15cece===':'){_0x437ac5=_0x437ac5[_0x02ba('0x21')](0x0,_0x437ac5[_0x02ba('0xf')](_0x15cece));}switch(_0x3145f2[_0x02ba('0x10')]){case'US':_0x5362bd=_0x02ba('0x11');break;case'AU':_0x5362bd=_0x02ba('0x22');break;case'IN':_0x5362bd='https://accounts.zoho.in';break;case'CN':_0x5362bd=_0x02ba('0x12');break;default:_0x5362bd=_0x02ba('0x13');break;}var _0x440d62={'method':_0x02ba('0x14'),'uri':_0x5362bd+_0x02ba('0x15'),'form':{'grant_type':_0x02ba('0x16'),'client_id':_0x3145f2[_0x02ba('0xb')],'client_secret':_0x3145f2[_0x02ba('0x17')],'redirect_uri':_0x3145f2['serverUrl'],'code':_0x3145f2[_0x02ba('0xc')]},'headers':{'Content-Type':_0x02ba('0x18')}};return rp(_0x440d62)[_0x02ba('0x19')](function(_0x373e15){var _0x2e0427=JSON[_0x02ba('0x1a')](_0x373e15);if(_0x2e0427[_0x02ba('0x1b')]){_0x3145f2['refreshToken']=_0x2e0427[_0x02ba('0x1b')];logger[_0x02ba('0x23')](util[_0x02ba('0x1d')](_0x02ba('0x1e'),_0x3145f2['name'],_0x3145f2['id']));}else{logger[_0x02ba('0x24')](util[_0x02ba('0x1d')](_0x02ba('0x25'),_0x3145f2[_0x02ba('0x1f')],_0x3145f2['id']),util[_0x02ba('0x20')](_0x2e0427,{'showHidden':![],'depth':null}));}return _0x33b50e(null,_0x29f1b6);})[_0x02ba('0x26')](function(_0x98b3b8){logger['error'](util[_0x02ba('0x1d')]('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x3145f2[_0x02ba('0x1f')],_0x3145f2['id']),util[_0x02ba('0x20')](parsedResult,{'showHidden':![],'depth':null}));return _0x33b50e(_0x98b3b8);});}else{return _0x33b50e(null,_0x29f1b6);}}}});};
\ No newline at end of file
index 991a84e..abf0eca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90a=['limit','include','map','model','attributes','debug','find','ShowZohoAccount','lodash','util','bluebird','rpc','../../config/environment','http','request','then','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','ZohoAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetZohoAccount','ZohoAccount','options','raw','where'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xb90a,0x12a));var _0xab90=function(_0x40a270,_0x5cc8b5){_0x40a270=_0x40a270-0x0;var _0x2b42e4=_0xb90a[_0x40a270];return _0x2b42e4;};'use strict';var _=require(_0xab90('0x0'));var util=require(_0xab90('0x1'));var moment=require('moment');var BPromise=require(_0xab90('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xab90('0x3'));var config=require(_0xab90('0x4'));var jayson=require('jayson/promise');var client=jayson['client'][_0xab90('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x426588,_0x275bf7,_0x4b28a6){return new BPromise(function(_0x2406e1,_0xc5ca04){return client[_0xab90('0x6')](_0x426588,_0x4b28a6)[_0xab90('0x7')](function(_0x93af2f){logger[_0xab90('0x8')](_0xab90('0x9'),_0x275bf7,_0xab90('0xa'));logger['debug'](_0xab90('0xb'),_0x275bf7,_0xab90('0xa'),JSON[_0xab90('0xc')](_0x93af2f));if(_0x93af2f[_0xab90('0xd')]){if(_0x93af2f[_0xab90('0xd')]['code']===0x1f4){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0xc5ca04(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);return _0x2406e1(_0x93af2f[_0xab90('0xd')][_0xab90('0xe')]);}else{logger[_0xab90('0x8')]('ZohoAccount,\x20%s,\x20%s',_0x275bf7,_0xab90('0xa'));_0x2406e1(_0x93af2f['result'][_0xab90('0xe')]);}})[_0xab90('0xf')](function(_0x526bee){logger[_0xab90('0xd')](_0xab90('0x9'),_0x275bf7,_0x526bee);_0xc5ca04(_0x526bee);});});}exports[_0xab90('0x10')]=function(_0x58cc79){var _0x2ab85c=this;return new Promise(function(_0x18323a,_0x1d5222){return db[_0xab90('0x11')]['findAll']({'raw':_0x58cc79[_0xab90('0x12')]?_0x58cc79['options'][_0xab90('0x13')]===undefined?!![]:![]:!![],'where':_0x58cc79['options']?_0x58cc79[_0xab90('0x12')][_0xab90('0x14')]||null:null,'attributes':_0x58cc79[_0xab90('0x12')]?_0x58cc79[_0xab90('0x12')]['attributes']||null:null,'limit':_0x58cc79[_0xab90('0x12')]?_0x58cc79[_0xab90('0x12')][_0xab90('0x15')]||null:null,'include':_0x58cc79[_0xab90('0x12')]?_0x58cc79[_0xab90('0x12')][_0xab90('0x16')]?_[_0xab90('0x17')](_0x58cc79[_0xab90('0x12')][_0xab90('0x16')],function(_0x2cdc7f){return{'model':db[_0x2cdc7f[_0xab90('0x18')]],'as':_0x2cdc7f['as'],'attributes':_0x2cdc7f[_0xab90('0x19')],'include':_0x2cdc7f[_0xab90('0x16')]?_[_0xab90('0x17')](_0x2cdc7f['include'],function(_0x7e141c){return{'model':db[_0x7e141c[_0xab90('0x18')]],'as':_0x7e141c['as'],'attributes':_0x7e141c[_0xab90('0x19')],'include':_0x7e141c[_0xab90('0x16')]?_[_0xab90('0x17')](_0x7e141c[_0xab90('0x16')],function(_0x2cad38){return{'model':db[_0x2cad38[_0xab90('0x18')]],'as':_0x2cad38['as'],'attributes':_0x2cad38[_0xab90('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x38b3ae){logger[_0xab90('0x8')]('GetZohoAccount',_0x58cc79);logger[_0xab90('0x1a')](_0xab90('0x10'),_0x58cc79,JSON[_0xab90('0xc')](_0x38b3ae));_0x18323a(_0x38b3ae);})[_0xab90('0xf')](function(_0x24e562){logger[_0xab90('0xd')](_0xab90('0x10'),_0x24e562[_0xab90('0xe')],_0x58cc79);_0x1d5222(_0x2ab85c[_0xab90('0xd')](0x1f4,_0x24e562[_0xab90('0xe')]));});});};exports['ShowZohoAccount']=function(_0x59ed30){var _0x5671c2=this;return new Promise(function(_0x215c4b,_0x5f1359){return db[_0xab90('0x11')][_0xab90('0x1b')]({'raw':_0x59ed30[_0xab90('0x12')]?_0x59ed30[_0xab90('0x12')]['raw']===undefined?!![]:![]:!![],'where':_0x59ed30[_0xab90('0x12')]?_0x59ed30[_0xab90('0x12')][_0xab90('0x14')]||null:null,'attributes':_0x59ed30['options']?_0x59ed30['options'][_0xab90('0x19')]||null:null,'include':_0x59ed30[_0xab90('0x12')]?_0x59ed30[_0xab90('0x12')][_0xab90('0x16')]?_[_0xab90('0x17')](_0x59ed30[_0xab90('0x12')][_0xab90('0x16')],function(_0x1523bf){return{'model':db[_0x1523bf[_0xab90('0x18')]],'as':_0x1523bf['as'],'attributes':_0x1523bf[_0xab90('0x19')],'include':_0x1523bf[_0xab90('0x16')]?_['map'](_0x1523bf[_0xab90('0x16')],function(_0x1eb4d0){return{'model':db[_0x1eb4d0[_0xab90('0x18')]],'as':_0x1eb4d0['as'],'attributes':_0x1eb4d0[_0xab90('0x19')],'include':_0x1eb4d0[_0xab90('0x16')]?_['map'](_0x1eb4d0[_0xab90('0x16')],function(_0x30cea9){return{'model':db[_0x30cea9[_0xab90('0x18')]],'as':_0x30cea9['as'],'attributes':_0x30cea9['attributes']};}):[]};}):[]};}):[]:[]})[_0xab90('0x7')](function(_0x127d21){logger[_0xab90('0x8')](_0xab90('0x1c'),_0x59ed30);logger[_0xab90('0x1a')](_0xab90('0x1c'),_0x59ed30,JSON['stringify'](_0x127d21));_0x215c4b(_0x127d21);})[_0xab90('0xf')](function(_0x47e71b){logger[_0xab90('0xd')](_0xab90('0x1c'),_0x47e71b['message'],_0x59ed30);_0x5f1359(_0x5671c2[_0xab90('0xd')](0x1f4,_0x47e71b['message']));});});};
\ No newline at end of file
+var _0x3c91=['raw','where','attributes','limit','include','map','model','GetZohoAccount','debug','ShowZohoAccount','find','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','ZohoAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','ZohoAccount','options'];(function(_0xce5b7d,_0x55fbfa){var _0x32df71=function(_0xcf68ab){while(--_0xcf68ab){_0xce5b7d['push'](_0xce5b7d['shift']());}};_0x32df71(++_0x55fbfa);}(_0x3c91,0x1af));var _0x13c9=function(_0x1c746c,_0x42800b){_0x1c746c=_0x1c746c-0x0;var _0x246d19=_0x3c91[_0x1c746c];return _0x246d19;};'use strict';var _=require(_0x13c9('0x0'));var util=require(_0x13c9('0x1'));var moment=require(_0x13c9('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c9('0x3'));var db=require(_0x13c9('0x4'))['db'];var utils=require(_0x13c9('0x5'));var logger=require('../../config/logger')(_0x13c9('0x6'));var config=require(_0x13c9('0x7'));var jayson=require(_0x13c9('0x8'));var client=jayson[_0x13c9('0x9')][_0x13c9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c4332,_0x58b610,_0x44243f){return new BPromise(function(_0x196c2a,_0x5fd23){return client[_0x13c9('0xb')](_0x4c4332,_0x44243f)[_0x13c9('0xc')](function(_0x5370dd){logger['info'](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));logger['debug']('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x58b610,_0x13c9('0xe'),JSON[_0x13c9('0xf')](_0x5370dd));if(_0x5370dd[_0x13c9('0x10')]){if(_0x5370dd[_0x13c9('0x10')][_0x13c9('0x11')]===0x1f4){logger[_0x13c9('0x10')](_0x13c9('0xd'),_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x5fd23(_0x5370dd['error']['message']);}logger['error']('ZohoAccount,\x20%s,\x20%s',_0x58b610,_0x5370dd['error'][_0x13c9('0x12')]);return _0x196c2a(_0x5370dd[_0x13c9('0x10')]['message']);}else{logger[_0x13c9('0x13')](_0x13c9('0xd'),_0x58b610,_0x13c9('0xe'));_0x196c2a(_0x5370dd[_0x13c9('0x14')][_0x13c9('0x12')]);}})[_0x13c9('0x15')](function(_0x238952){logger['error']('ZohoAccount,\x20%s,\x20%s',_0x58b610,_0x238952);_0x5fd23(_0x238952);});});}exports['GetZohoAccount']=function(_0xd08fc0){var _0x1a6c06=this;return new Promise(function(_0x1dcaf7,_0x339e7f){return db[_0x13c9('0x16')]['findAll']({'raw':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x18')]===undefined?!![]:![]:!![],'where':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x19')]||null:null,'attributes':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0['options'][_0x13c9('0x1a')]||null:null,'limit':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1b')]||null:null,'include':_0xd08fc0[_0x13c9('0x17')]?_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0xd08fc0[_0x13c9('0x17')][_0x13c9('0x1c')],function(_0x5dfd9d){return{'model':db[_0x5dfd9d[_0x13c9('0x1e')]],'as':_0x5dfd9d['as'],'attributes':_0x5dfd9d[_0x13c9('0x1a')],'include':_0x5dfd9d[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x5dfd9d[_0x13c9('0x1c')],function(_0x55b3d9){return{'model':db[_0x55b3d9[_0x13c9('0x1e')]],'as':_0x55b3d9['as'],'attributes':_0x55b3d9['attributes'],'include':_0x55b3d9['include']?_[_0x13c9('0x1d')](_0x55b3d9[_0x13c9('0x1c')],function(_0x3ca92a){return{'model':db[_0x3ca92a[_0x13c9('0x1e')]],'as':_0x3ca92a['as'],'attributes':_0x3ca92a[_0x13c9('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x13c9('0xc')](function(_0x3fcf1c){logger[_0x13c9('0x13')](_0x13c9('0x1f'),_0xd08fc0);logger[_0x13c9('0x20')]('GetZohoAccount',_0xd08fc0,JSON[_0x13c9('0xf')](_0x3fcf1c));_0x1dcaf7(_0x3fcf1c);})[_0x13c9('0x15')](function(_0x5d8997){logger[_0x13c9('0x10')](_0x13c9('0x1f'),_0x5d8997[_0x13c9('0x12')],_0xd08fc0);_0x339e7f(_0x1a6c06['error'](0x1f4,_0x5d8997['message']));});});};exports[_0x13c9('0x21')]=function(_0x35249b){var _0x1a1710=this;return new Promise(function(_0x4cb64a,_0x309606){return db[_0x13c9('0x16')][_0x13c9('0x22')]({'raw':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')][_0x13c9('0x19')]||null:null,'attributes':_0x35249b[_0x13c9('0x17')]?_0x35249b[_0x13c9('0x17')][_0x13c9('0x1a')]||null:null,'include':_0x35249b[_0x13c9('0x17')]?_0x35249b['options'][_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x35249b['options'][_0x13c9('0x1c')],function(_0x119b60){return{'model':db[_0x119b60[_0x13c9('0x1e')]],'as':_0x119b60['as'],'attributes':_0x119b60[_0x13c9('0x1a')],'include':_0x119b60[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x119b60['include'],function(_0x4db35f){return{'model':db[_0x4db35f[_0x13c9('0x1e')]],'as':_0x4db35f['as'],'attributes':_0x4db35f[_0x13c9('0x1a')],'include':_0x4db35f[_0x13c9('0x1c')]?_[_0x13c9('0x1d')](_0x4db35f['include'],function(_0x38d479){return{'model':db[_0x38d479[_0x13c9('0x1e')]],'as':_0x38d479['as'],'attributes':_0x38d479['attributes']};}):[]};}):[]};}):[]:[]})[_0x13c9('0xc')](function(_0x1cfdfc){logger[_0x13c9('0x13')]('ShowZohoAccount',_0x35249b);logger[_0x13c9('0x20')](_0x13c9('0x21'),_0x35249b,JSON[_0x13c9('0xf')](_0x1cfdfc));_0x4cb64a(_0x1cfdfc);})[_0x13c9('0x15')](function(_0x4e6cc3){logger['error'](_0x13c9('0x21'),_0x4e6cc3[_0x13c9('0x12')],_0x35249b);_0x309606(_0x1a1710['error'](0x1f4,_0x4e6cc3[_0x13c9('0x12')]));});});};
\ No newline at end of file
index 71b2335..17b3f15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1825=['isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./intZohoConfiguration.controller','get','/:id'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x1825,0x107));var _0x5182=function(_0x39f24c,_0x592966){_0x39f24c=_0x39f24c-0x0;var _0x245f49=_0x1825[_0x39f24c];return _0x245f49;};'use strict';var multer=require(_0x5182('0x0'));var util=require(_0x5182('0x1'));var path=require(_0x5182('0x2'));var timeout=require(_0x5182('0x3'));var express=require(_0x5182('0x4'));var router=express[_0x5182('0x5')]();var fs_extra=require(_0x5182('0x6'));var auth=require(_0x5182('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x5182('0x8'));var controller=require(_0x5182('0x9'));router[_0x5182('0xa')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x5182('0xb'),auth[_0x5182('0xc')](),controller[_0x5182('0xd')]);router[_0x5182('0xa')](_0x5182('0xe'),auth[_0x5182('0xc')](),controller['getFields']);router[_0x5182('0xa')](_0x5182('0xf'),auth['isAuthenticated'](),controller[_0x5182('0x10')]);router[_0x5182('0xa')]('/:id/descriptions',auth[_0x5182('0xc')](),controller[_0x5182('0x11')]);router[_0x5182('0x12')]('/',auth['isAuthenticated'](),controller[_0x5182('0x13')]);router[_0x5182('0x14')]('/:id',auth[_0x5182('0xc')](),controller[_0x5182('0x15')]);router[_0x5182('0x16')]('/:id',auth[_0x5182('0xc')](),controller[_0x5182('0x17')]);module[_0x5182('0x18')]=router;
\ No newline at end of file
+var _0x8769=['multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoConfiguration.controller','get','isAuthenticated','show','/:id/fields','getSubjects','/:id/descriptions','post','create','put','/:id','update','delete','exports'];(function(_0x16f31f,_0x155c78){var _0x141a2a=function(_0xaed35c){while(--_0xaed35c){_0x16f31f['push'](_0x16f31f['shift']());}};_0x141a2a(++_0x155c78);}(_0x8769,0x1ce));var _0x9876=function(_0x819464,_0x46fc91){_0x819464=_0x819464-0x0;var _0x49dcc0=_0x8769[_0x819464];return _0x49dcc0;};'use strict';var multer=require(_0x9876('0x0'));var util=require(_0x9876('0x1'));var path=require(_0x9876('0x2'));var timeout=require(_0x9876('0x3'));var express=require(_0x9876('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9876('0x5'));var interaction=require(_0x9876('0x6'));var config=require(_0x9876('0x7'));var controller=require(_0x9876('0x8'));router[_0x9876('0x9')]('/',auth[_0x9876('0xa')](),controller['index']);router['get']('/:id',auth[_0x9876('0xa')](),controller[_0x9876('0xb')]);router['get'](_0x9876('0xc'),auth[_0x9876('0xa')](),controller['getFields']);router[_0x9876('0x9')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x9876('0xd')]);router[_0x9876('0x9')](_0x9876('0xe'),auth[_0x9876('0xa')](),controller['getDescriptions']);router[_0x9876('0xf')]('/',auth['isAuthenticated'](),controller[_0x9876('0x10')]);router[_0x9876('0x11')](_0x9876('0x12'),auth[_0x9876('0xa')](),controller[_0x9876('0x13')]);router[_0x9876('0x14')]('/:id',auth[_0x9876('0xa')](),controller['destroy']);module[_0x9876('0x15')]=router;
\ No newline at end of file
index cce84e2..146dc15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ef6=['lead','ENUM','contact_lead','contact','sequelize','STRING'];(function(_0x473198,_0x48cb9c){var _0x5590a7=function(_0x5731ad){while(--_0x5731ad){_0x473198['push'](_0x473198['shift']());}};_0x5590a7(++_0x48cb9c);}(_0x3ef6,0xd6));var _0x63ef=function(_0xf6763d,_0x1ee231){_0xf6763d=_0xf6763d-0x0;var _0x212ae2=_0x3ef6[_0xf6763d];return _0x212ae2;};'use strict';var Sequelize=require(_0x63ef('0x0'));module['exports']={'name':{'type':Sequelize[_0x63ef('0x1')]},'moduleCreate':{'type':Sequelize['ENUM'](_0x63ef('0x2'),'contact','nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x63ef('0x3')](_0x63ef('0x4'),_0x63ef('0x5'),'lead'),'defaultValue':'contact_lead'},'description':{'type':Sequelize[_0x63ef('0x1')]}};
\ No newline at end of file
+var _0x43bf=['contact','lead','contact_lead','exports','STRING','ENUM'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x43bf,0x81));var _0xf43b=function(_0x1ac094,_0x2e2490){_0x1ac094=_0x1ac094-0x0;var _0x5d3d0e=_0x43bf[_0x1ac094];return _0x5d3d0e;};'use strict';var Sequelize=require('sequelize');module[_0xf43b('0x0')]={'name':{'type':Sequelize[_0xf43b('0x1')]},'moduleCreate':{'type':Sequelize[_0xf43b('0x2')]('lead',_0xf43b('0x3'),'nothing'),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0xf43b('0x2')]('contact_lead','contact',_0xf43b('0x4')),'defaultValue':_0xf43b('0x5')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f148e46..5c921a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb18=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','ZohoConfiguration','includeAll','include','catch','show','params','keys','find','create','body','getFields','findOne','ZohoField','getSubjects','nolimit','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger'];(function(_0x25248b,_0x3c8491){var _0x509939=function(_0x457a27){while(--_0x457a27){_0x25248b['push'](_0x25248b['shift']());}};_0x509939(++_0x3c8491);}(_0xfb18,0x136));var _0x8fb1=function(_0x5027b1,_0x1409a5){_0x5027b1=_0x5027b1-0x0;var _0x4a46cf=_0xfb18[_0x5027b1];return _0x4a46cf;};'use strict';var emlformat=require(_0x8fb1('0x0'));var rimraf=require(_0x8fb1('0x1'));var zipdir=require(_0x8fb1('0x2'));var jsonpatch=require(_0x8fb1('0x3'));var rp=require(_0x8fb1('0x4'));var moment=require(_0x8fb1('0x5'));var BPromise=require(_0x8fb1('0x6'));var Mustache=require(_0x8fb1('0x7'));var util=require(_0x8fb1('0x8'));var path=require('path');var sox=require(_0x8fb1('0x9'));var csv=require(_0x8fb1('0xa'));var ejs=require(_0x8fb1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8fb1('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8fb1('0xd'));var deskjs=require(_0x8fb1('0xe'));var toCsv=require('to-csv');var querystring=require(_0x8fb1('0xf'));var Papa=require(_0x8fb1('0x10'));var Redis=require('ioredis');var authService=require(_0x8fb1('0x11'));var qs=require(_0x8fb1('0x12'));var as=require(_0x8fb1('0x13'));var hardwareService=require(_0x8fb1('0x14'));var logger=require(_0x8fb1('0x15'))(_0x8fb1('0x16'));var utils=require(_0x8fb1('0x17'));var config=require(_0x8fb1('0x18'));var licenseUtil=require(_0x8fb1('0x19'));var db=require(_0x8fb1('0x1a'))['db'];function respondWithStatusCode(_0x2658cb,_0x2d79c0){_0x2d79c0=_0x2d79c0||0xcc;return function(_0x3ffcb9){if(_0x3ffcb9){return _0x2658cb[_0x8fb1('0x1b')](_0x2d79c0);}return _0x2658cb['status'](_0x2d79c0)[_0x8fb1('0x1c')]();};}function respondWithResult(_0x153bf8,_0x523e2f){_0x523e2f=_0x523e2f||0xc8;return function(_0x5748b4){if(_0x5748b4){return _0x153bf8[_0x8fb1('0x1d')](_0x523e2f)[_0x8fb1('0x1e')](_0x5748b4);}};}function respondWithFilteredResult(_0x154813,_0x82403c){return function(_0x2d0211){if(_0x2d0211){var _0x387acc=typeof _0x82403c['offset']==='undefined'&&typeof _0x82403c[_0x8fb1('0x1f')]===_0x8fb1('0x20');var _0x216db9=_0x2d0211[_0x8fb1('0x21')];var _0x1904f7=_0x387acc?0x0:_0x82403c[_0x8fb1('0x22')];var _0x3ee1af=_0x387acc?_0x2d0211[_0x8fb1('0x21')]:_0x82403c[_0x8fb1('0x22')]+_0x82403c[_0x8fb1('0x1f')];var _0x4be26c;if(_0x3ee1af>=_0x216db9){_0x3ee1af=_0x216db9;_0x4be26c=0xc8;}else{_0x4be26c=0xce;}_0x154813['status'](_0x4be26c);return _0x154813['set'](_0x8fb1('0x23'),_0x1904f7+'-'+_0x3ee1af+'/'+_0x216db9)[_0x8fb1('0x1e')](_0x2d0211);}return null;};}function patchUpdates(_0x3fdcce){return function(_0x113104){try{jsonpatch[_0x8fb1('0x24')](_0x113104,_0x3fdcce,!![]);}catch(_0x46747f){return BPromise[_0x8fb1('0x25')](_0x46747f);}return _0x113104[_0x8fb1('0x26')]();};}function saveUpdates(_0x245f2,_0xf505a5){return function(_0x1c8f34){if(_0x1c8f34){return _0x1c8f34[_0x8fb1('0x27')](_0x245f2)[_0x8fb1('0x28')](function(_0x98bd3e){return _0x98bd3e;});}return null;};}function removeEntity(_0x146e60,_0x9da24e){return function(_0x1987c5){if(_0x1987c5){return _0x1987c5[_0x8fb1('0x29')]()[_0x8fb1('0x28')](function(){_0x146e60[_0x8fb1('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c6404,_0x12d60c){return function(_0x534930){if(!_0x534930){_0x2c6404[_0x8fb1('0x1b')](0x194);}return _0x534930;};}function handleError(_0x3068fd,_0x2f5e71){_0x2f5e71=_0x2f5e71||0x1f4;return function(_0x17a28d){logger[_0x8fb1('0x2a')](_0x17a28d[_0x8fb1('0x2b')]);if(_0x17a28d[_0x8fb1('0x2c')]){delete _0x17a28d[_0x8fb1('0x2c')];}_0x3068fd[_0x8fb1('0x1d')](_0x2f5e71)[_0x8fb1('0x2d')](_0x17a28d);};}exports['index']=function(_0x10bd53,_0x52fff7){var _0x578066={},_0x58581c={},_0x4a286c={'count':0x0,'rows':[]};var _0x16636d=_[_0x8fb1('0x2e')](db['ZohoConfiguration'][_0x8fb1('0x2f')],function(_0x49c537){return{'name':_0x49c537[_0x8fb1('0x30')],'type':_0x49c537[_0x8fb1('0x31')][_0x8fb1('0x32')]};});_0x58581c['model']=_[_0x8fb1('0x2e')](_0x16636d,_0x8fb1('0x2c'));_0x58581c[_0x8fb1('0x33')]=_['keys'](_0x10bd53[_0x8fb1('0x33')]);_0x58581c[_0x8fb1('0x34')]=_['intersection'](_0x58581c[_0x8fb1('0x35')],_0x58581c[_0x8fb1('0x33')]);_0x578066[_0x8fb1('0x36')]=_[_0x8fb1('0x37')](_0x58581c[_0x8fb1('0x35')],qs['fields'](_0x10bd53[_0x8fb1('0x33')][_0x8fb1('0x38')]));_0x578066[_0x8fb1('0x36')]=_0x578066['attributes'][_0x8fb1('0x39')]?_0x578066[_0x8fb1('0x36')]:_0x58581c[_0x8fb1('0x35')];if(!_0x10bd53[_0x8fb1('0x33')][_0x8fb1('0x3a')]('nolimit')){_0x578066['limit']=qs['limit'](_0x10bd53['query'][_0x8fb1('0x1f')]);_0x578066[_0x8fb1('0x22')]=qs[_0x8fb1('0x22')](_0x10bd53[_0x8fb1('0x33')][_0x8fb1('0x22')]);}_0x578066[_0x8fb1('0x3b')]=qs[_0x8fb1('0x3c')](_0x10bd53[_0x8fb1('0x33')]['sort']);_0x578066['where']=qs[_0x8fb1('0x34')](_[_0x8fb1('0x3d')](_0x10bd53[_0x8fb1('0x33')],_0x58581c['filters']),_0x16636d);if(_0x10bd53[_0x8fb1('0x33')][_0x8fb1('0x3e')]){_0x578066[_0x8fb1('0x3f')]=_[_0x8fb1('0x40')](_0x578066[_0x8fb1('0x3f')],{'$or':_[_0x8fb1('0x2e')](_0x16636d,function(_0x5e783d){if(_0x5e783d[_0x8fb1('0x31')]!==_0x8fb1('0x41')){var _0x116b21={};_0x116b21[_0x5e783d['name']]={'$like':'%'+_0x10bd53[_0x8fb1('0x33')]['filter']+'%'};return _0x116b21;}})});}_0x578066=_[_0x8fb1('0x40')]({},_0x578066,_0x10bd53[_0x8fb1('0x42')]);var _0x533ee8={'where':_0x578066[_0x8fb1('0x3f')]};return db[_0x8fb1('0x43')][_0x8fb1('0x21')](_0x533ee8)[_0x8fb1('0x28')](function(_0x51f90e){_0x4a286c[_0x8fb1('0x21')]=_0x51f90e;if(_0x10bd53[_0x8fb1('0x33')][_0x8fb1('0x44')]){_0x578066[_0x8fb1('0x45')]=[{'all':!![]}];}return db[_0x8fb1('0x43')]['findAll'](_0x578066);})[_0x8fb1('0x28')](function(_0x229473){_0x4a286c['rows']=_0x229473;return _0x4a286c;})['then'](respondWithFilteredResult(_0x52fff7,_0x578066))[_0x8fb1('0x46')](handleError(_0x52fff7,null));};exports[_0x8fb1('0x47')]=function(_0x3ad0aa,_0x286117){var _0x4fbb1e={'raw':![],'where':{'id':_0x3ad0aa[_0x8fb1('0x48')]['id']}},_0xd073d7={};_0xd073d7[_0x8fb1('0x35')]=_[_0x8fb1('0x49')](db[_0x8fb1('0x43')][_0x8fb1('0x2f')]);_0xd073d7[_0x8fb1('0x33')]=_[_0x8fb1('0x49')](_0x3ad0aa[_0x8fb1('0x33')]);_0xd073d7[_0x8fb1('0x34')]=_['intersection'](_0xd073d7[_0x8fb1('0x35')],_0xd073d7[_0x8fb1('0x33')]);_0x4fbb1e[_0x8fb1('0x36')]=_[_0x8fb1('0x37')](_0xd073d7[_0x8fb1('0x35')],qs['fields'](_0x3ad0aa[_0x8fb1('0x33')]['fields']));_0x4fbb1e['attributes']=_0x4fbb1e[_0x8fb1('0x36')][_0x8fb1('0x39')]?_0x4fbb1e['attributes']:_0xd073d7[_0x8fb1('0x35')];if(_0x3ad0aa['query']['includeAll']){_0x4fbb1e['include']=[{'all':!![]}];}_0x4fbb1e=_[_0x8fb1('0x40')]({},_0x4fbb1e,_0x3ad0aa[_0x8fb1('0x42')]);return db[_0x8fb1('0x43')][_0x8fb1('0x4a')](_0x4fbb1e)[_0x8fb1('0x28')](handleEntityNotFound(_0x286117,null))[_0x8fb1('0x28')](respondWithResult(_0x286117,null))[_0x8fb1('0x46')](handleError(_0x286117,null));};exports[_0x8fb1('0x4b')]=function(_0x24ee84,_0x1d960d){return db[_0x8fb1('0x43')]['create'](_0x24ee84[_0x8fb1('0x4c')],{})[_0x8fb1('0x28')](respondWithResult(_0x1d960d,0xc9))[_0x8fb1('0x46')](handleError(_0x1d960d,null));};exports[_0x8fb1('0x27')]=function(_0x4d6543,_0x47a834){if(_0x4d6543[_0x8fb1('0x4c')]['id']){delete _0x4d6543[_0x8fb1('0x4c')]['id'];}return db['ZohoConfiguration'][_0x8fb1('0x4a')]({'where':{'id':_0x4d6543[_0x8fb1('0x48')]['id']}})[_0x8fb1('0x28')](handleEntityNotFound(_0x47a834,null))[_0x8fb1('0x28')](saveUpdates(_0x4d6543[_0x8fb1('0x4c')],null))['then'](respondWithResult(_0x47a834,null))[_0x8fb1('0x46')](handleError(_0x47a834,null));};exports[_0x8fb1('0x29')]=function(_0xb2f68e,_0x609a2c){return db['ZohoConfiguration'][_0x8fb1('0x4a')]({'where':{'id':_0xb2f68e[_0x8fb1('0x48')]['id']}})[_0x8fb1('0x28')](handleEntityNotFound(_0x609a2c,null))['then'](removeEntity(_0x609a2c,null))[_0x8fb1('0x46')](handleError(_0x609a2c,null));};exports[_0x8fb1('0x4d')]=function(_0xe91ea9,_0x407f90,_0x5d9751){var _0x5dd8a8={};var _0x52032a={};var _0x5e86f5;var _0x1be51d;return db[_0x8fb1('0x43')][_0x8fb1('0x4e')]({'where':{'id':_0xe91ea9[_0x8fb1('0x48')]['id']}})['then'](handleEntityNotFound(_0x407f90,null))['then'](function(_0x163984){if(_0x163984){_0x5e86f5=_0x163984;_0x52032a[_0x8fb1('0x35')]=_['keys'](db[_0x8fb1('0x4f')][_0x8fb1('0x2f')]);_0x52032a[_0x8fb1('0x33')]=_[_0x8fb1('0x49')](_0xe91ea9[_0x8fb1('0x33')]);_0x52032a['filters']=_[_0x8fb1('0x37')](_0x52032a[_0x8fb1('0x35')],_0x52032a[_0x8fb1('0x33')]);_0x5dd8a8['attributes']=_[_0x8fb1('0x37')](_0x52032a[_0x8fb1('0x35')],qs[_0x8fb1('0x38')](_0xe91ea9[_0x8fb1('0x33')]['fields']));_0x5dd8a8[_0x8fb1('0x36')]=_0x5dd8a8[_0x8fb1('0x36')][_0x8fb1('0x39')]?_0x5dd8a8[_0x8fb1('0x36')]:_0x52032a[_0x8fb1('0x35')];_0x5dd8a8[_0x8fb1('0x3b')]=qs[_0x8fb1('0x3c')](_0xe91ea9['query'][_0x8fb1('0x3c')]);_0x5dd8a8[_0x8fb1('0x3f')]=qs['filters'](_[_0x8fb1('0x3d')](_0xe91ea9[_0x8fb1('0x33')],_0x52032a[_0x8fb1('0x34')]));if(_0xe91ea9[_0x8fb1('0x33')][_0x8fb1('0x3e')]){_0x5dd8a8[_0x8fb1('0x3f')]=_[_0x8fb1('0x40')](_0x5dd8a8[_0x8fb1('0x3f')],{'$or':_['map'](_0x5dd8a8[_0x8fb1('0x36')],function(_0x255ab5){var _0x566831={};_0x566831[_0x255ab5]={'$like':'%'+_0xe91ea9['query'][_0x8fb1('0x3e')]+'%'};return _0x566831;})});}_0x5dd8a8=_[_0x8fb1('0x40')]({},_0x5dd8a8,_0xe91ea9[_0x8fb1('0x42')]);return _0x5e86f5[_0x8fb1('0x4d')](_0x5dd8a8);}})['then'](function(_0x19b561){if(_0x19b561){_0x1be51d=_0x19b561[_0x8fb1('0x39')];if(!_0xe91ea9[_0x8fb1('0x33')]['hasOwnProperty']('nolimit')){_0x5dd8a8[_0x8fb1('0x1f')]=qs[_0x8fb1('0x1f')](_0xe91ea9[_0x8fb1('0x33')]['limit']);_0x5dd8a8[_0x8fb1('0x22')]=qs[_0x8fb1('0x22')](_0xe91ea9['query'][_0x8fb1('0x22')]);}return _0x5e86f5[_0x8fb1('0x4d')](_0x5dd8a8);}})[_0x8fb1('0x28')](function(_0x326909){if(_0x326909){return _0x326909?{'count':_0x1be51d,'rows':_0x326909}:null;}})[_0x8fb1('0x28')](respondWithResult(_0x407f90,null))['catch'](handleError(_0x407f90,null));};exports[_0x8fb1('0x50')]=function(_0x327dce,_0x3124f9,_0x12f77b){var _0x5ebb20={};var _0x3b548b={};var _0xd9cebe;var _0x2ead84;return db[_0x8fb1('0x43')][_0x8fb1('0x4e')]({'where':{'id':_0x327dce[_0x8fb1('0x48')]['id']}})[_0x8fb1('0x28')](handleEntityNotFound(_0x3124f9,null))['then'](function(_0x3f4e84){if(_0x3f4e84){_0xd9cebe=_0x3f4e84;_0x3b548b[_0x8fb1('0x35')]=_[_0x8fb1('0x49')](db[_0x8fb1('0x4f')]['rawAttributes']);_0x3b548b[_0x8fb1('0x33')]=_[_0x8fb1('0x49')](_0x327dce[_0x8fb1('0x33')]);_0x3b548b[_0x8fb1('0x34')]=_[_0x8fb1('0x37')](_0x3b548b[_0x8fb1('0x35')],_0x3b548b['query']);_0x5ebb20[_0x8fb1('0x36')]=_[_0x8fb1('0x37')](_0x3b548b[_0x8fb1('0x35')],qs['fields'](_0x327dce[_0x8fb1('0x33')]['fields']));_0x5ebb20[_0x8fb1('0x36')]=_0x5ebb20[_0x8fb1('0x36')]['length']?_0x5ebb20['attributes']:_0x3b548b[_0x8fb1('0x35')];_0x5ebb20['order']=qs[_0x8fb1('0x3c')](_0x327dce[_0x8fb1('0x33')][_0x8fb1('0x3c')]);_0x5ebb20[_0x8fb1('0x3f')]=qs[_0x8fb1('0x34')](_[_0x8fb1('0x3d')](_0x327dce[_0x8fb1('0x33')],_0x3b548b[_0x8fb1('0x34')]));if(_0x327dce[_0x8fb1('0x33')][_0x8fb1('0x3e')]){_0x5ebb20[_0x8fb1('0x3f')]=_[_0x8fb1('0x40')](_0x5ebb20['where'],{'$or':_['map'](_0x5ebb20['attributes'],function(_0x104e67){var _0x2341d9={};_0x2341d9[_0x104e67]={'$like':'%'+_0x327dce[_0x8fb1('0x33')][_0x8fb1('0x3e')]+'%'};return _0x2341d9;})});}_0x5ebb20=_[_0x8fb1('0x40')]({},_0x5ebb20,_0x327dce[_0x8fb1('0x42')]);return _0xd9cebe[_0x8fb1('0x50')](_0x5ebb20);}})[_0x8fb1('0x28')](function(_0x3925e5){if(_0x3925e5){_0x2ead84=_0x3925e5[_0x8fb1('0x39')];if(!_0x327dce[_0x8fb1('0x33')][_0x8fb1('0x3a')](_0x8fb1('0x51'))){_0x5ebb20[_0x8fb1('0x1f')]=qs[_0x8fb1('0x1f')](_0x327dce[_0x8fb1('0x33')]['limit']);_0x5ebb20['offset']=qs[_0x8fb1('0x22')](_0x327dce[_0x8fb1('0x33')]['offset']);}return _0xd9cebe[_0x8fb1('0x50')](_0x5ebb20);}})['then'](function(_0x4719e9){if(_0x4719e9){return _0x4719e9?{'count':_0x2ead84,'rows':_0x4719e9}:null;}})['then'](respondWithResult(_0x3124f9,null))['catch'](handleError(_0x3124f9,null));};exports['getDescriptions']=function(_0x1dca5d,_0x21aaa1,_0x42dbca){var _0x8ef9aa={};var _0x3269ea={};var _0x51044d;var _0x448775;return db[_0x8fb1('0x43')][_0x8fb1('0x4e')]({'where':{'id':_0x1dca5d['params']['id']}})[_0x8fb1('0x28')](handleEntityNotFound(_0x21aaa1,null))[_0x8fb1('0x28')](function(_0x158deb){if(_0x158deb){_0x51044d=_0x158deb;_0x3269ea[_0x8fb1('0x35')]=_['keys'](db[_0x8fb1('0x4f')]['rawAttributes']);_0x3269ea['query']=_['keys'](_0x1dca5d[_0x8fb1('0x33')]);_0x3269ea[_0x8fb1('0x34')]=_[_0x8fb1('0x37')](_0x3269ea[_0x8fb1('0x35')],_0x3269ea['query']);_0x8ef9aa[_0x8fb1('0x36')]=_[_0x8fb1('0x37')](_0x3269ea[_0x8fb1('0x35')],qs['fields'](_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x38')]));_0x8ef9aa[_0x8fb1('0x36')]=_0x8ef9aa[_0x8fb1('0x36')][_0x8fb1('0x39')]?_0x8ef9aa[_0x8fb1('0x36')]:_0x3269ea['model'];_0x8ef9aa[_0x8fb1('0x3b')]=qs['sort'](_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x3c')]);_0x8ef9aa[_0x8fb1('0x3f')]=qs[_0x8fb1('0x34')](_['pick'](_0x1dca5d['query'],_0x3269ea[_0x8fb1('0x34')]));if(_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x3e')]){_0x8ef9aa[_0x8fb1('0x3f')]=_['merge'](_0x8ef9aa[_0x8fb1('0x3f')],{'$or':_['map'](_0x8ef9aa[_0x8fb1('0x36')],function(_0x514963){var _0x47e68={};_0x47e68[_0x514963]={'$like':'%'+_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x3e')]+'%'};return _0x47e68;})});}_0x8ef9aa=_[_0x8fb1('0x40')]({},_0x8ef9aa,_0x1dca5d[_0x8fb1('0x42')]);return _0x51044d[_0x8fb1('0x52')](_0x8ef9aa);}})['then'](function(_0x4e58b9){if(_0x4e58b9){_0x448775=_0x4e58b9[_0x8fb1('0x39')];if(!_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x3a')]('nolimit')){_0x8ef9aa[_0x8fb1('0x1f')]=qs[_0x8fb1('0x1f')](_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x1f')]);_0x8ef9aa[_0x8fb1('0x22')]=qs[_0x8fb1('0x22')](_0x1dca5d[_0x8fb1('0x33')][_0x8fb1('0x22')]);}return _0x51044d['getDescriptions'](_0x8ef9aa);}})[_0x8fb1('0x28')](function(_0x1b79cd){if(_0x1b79cd){return _0x1b79cd?{'count':_0x448775,'rows':_0x1b79cd}:null;}})[_0x8fb1('0x28')](respondWithResult(_0x21aaa1,null))[_0x8fb1('0x46')](handleError(_0x21aaa1,null));};
\ No newline at end of file
+var _0xe9d4=['bluebird','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','apply','save','update','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','merge','VIRTUAL','filter','options','where','ZohoConfiguration','includeAll','include','findAll','rows','catch','show','params','find','create','body','findOne','pick','getFields','order','getSubjects','hasOwnProperty','getDescriptions','ZohoField','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xe9d4,0x190));var _0x4e9d=function(_0x13bea0,_0x210a0c){_0x13bea0=_0x13bea0-0x0;var _0x3f12df=_0xe9d4[_0x13bea0];return _0x3f12df;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4e9d('0x0'));var zipdir=require(_0x4e9d('0x1'));var jsonpatch=require(_0x4e9d('0x2'));var rp=require(_0x4e9d('0x3'));var moment=require(_0x4e9d('0x4'));var BPromise=require(_0x4e9d('0x5'));var Mustache=require(_0x4e9d('0x6'));var util=require('util');var path=require(_0x4e9d('0x7'));var sox=require('sox');var csv=require(_0x4e9d('0x8'));var ejs=require(_0x4e9d('0x9'));var fs=require('fs');var fs_extra=require(_0x4e9d('0xa'));var _=require(_0x4e9d('0xb'));var squel=require(_0x4e9d('0xc'));var crypto=require('crypto');var jsforce=require(_0x4e9d('0xd'));var deskjs=require(_0x4e9d('0xe'));var toCsv=require('to-csv');var querystring=require(_0x4e9d('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x4e9d('0x10'));var qs=require(_0x4e9d('0x11'));var as=require(_0x4e9d('0x12'));var hardwareService=require(_0x4e9d('0x13'));var logger=require(_0x4e9d('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x4e9d('0x15'));var licenseUtil=require(_0x4e9d('0x16'));var db=require(_0x4e9d('0x17'))['db'];function respondWithStatusCode(_0x549748,_0x3df41b){_0x3df41b=_0x3df41b||0xcc;return function(_0x388c3d){if(_0x388c3d){return _0x549748[_0x4e9d('0x18')](_0x3df41b);}return _0x549748[_0x4e9d('0x19')](_0x3df41b)[_0x4e9d('0x1a')]();};}function respondWithResult(_0x357b47,_0x189a30){_0x189a30=_0x189a30||0xc8;return function(_0x374d32){if(_0x374d32){return _0x357b47[_0x4e9d('0x19')](_0x189a30)['json'](_0x374d32);}};}function respondWithFilteredResult(_0x57e2e3,_0x58fc6d){return function(_0x5728fb){if(_0x5728fb){var _0xee1ea=typeof _0x58fc6d[_0x4e9d('0x1b')]==='undefined'&&typeof _0x58fc6d[_0x4e9d('0x1c')]===_0x4e9d('0x1d');var _0x2639c0=_0x5728fb[_0x4e9d('0x1e')];var _0x260756=_0xee1ea?0x0:_0x58fc6d[_0x4e9d('0x1b')];var _0x2bf321=_0xee1ea?_0x5728fb['count']:_0x58fc6d[_0x4e9d('0x1b')]+_0x58fc6d[_0x4e9d('0x1c')];var _0x3f5253;if(_0x2bf321>=_0x2639c0){_0x2bf321=_0x2639c0;_0x3f5253=0xc8;}else{_0x3f5253=0xce;}_0x57e2e3[_0x4e9d('0x19')](_0x3f5253);return _0x57e2e3['set'](_0x4e9d('0x1f'),_0x260756+'-'+_0x2bf321+'/'+_0x2639c0)[_0x4e9d('0x20')](_0x5728fb);}return null;};}function patchUpdates(_0x47e243){return function(_0xb84926){try{jsonpatch[_0x4e9d('0x21')](_0xb84926,_0x47e243,!![]);}catch(_0x3e9084){return BPromise['reject'](_0x3e9084);}return _0xb84926[_0x4e9d('0x22')]();};}function saveUpdates(_0x27f7d3,_0x60a348){return function(_0x4675dd){if(_0x4675dd){return _0x4675dd[_0x4e9d('0x23')](_0x27f7d3)[_0x4e9d('0x24')](function(_0x204bbb){return _0x204bbb;});}return null;};}function removeEntity(_0x5e9b95,_0x2f8cf4){return function(_0x155982){if(_0x155982){return _0x155982['destroy']()[_0x4e9d('0x24')](function(){_0x5e9b95[_0x4e9d('0x19')](0xcc)[_0x4e9d('0x1a')]();});}};}function handleEntityNotFound(_0x203362,_0xdf163a){return function(_0x5a566f){if(!_0x5a566f){_0x203362[_0x4e9d('0x18')](0x194);}return _0x5a566f;};}function handleError(_0x5a5be4,_0x59927e){_0x59927e=_0x59927e||0x1f4;return function(_0x1e31e7){logger[_0x4e9d('0x25')](_0x1e31e7[_0x4e9d('0x26')]);if(_0x1e31e7[_0x4e9d('0x27')]){delete _0x1e31e7[_0x4e9d('0x27')];}_0x5a5be4[_0x4e9d('0x19')](_0x59927e)[_0x4e9d('0x28')](_0x1e31e7);};}exports[_0x4e9d('0x29')]=function(_0x4e8ecb,_0x20a7b7){var _0x317997={},_0x525607={},_0x381cbc={'count':0x0,'rows':[]};var _0x1787d3=_[_0x4e9d('0x2a')](db['ZohoConfiguration'][_0x4e9d('0x2b')],function(_0x599da0){return{'name':_0x599da0[_0x4e9d('0x2c')],'type':_0x599da0[_0x4e9d('0x2d')][_0x4e9d('0x2e')]};});_0x525607[_0x4e9d('0x2f')]=_[_0x4e9d('0x2a')](_0x1787d3,_0x4e9d('0x27'));_0x525607[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x4e8ecb[_0x4e9d('0x30')]);_0x525607[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x525607[_0x4e9d('0x2f')],_0x525607['query']);_0x317997[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x525607['model'],qs[_0x4e9d('0x35')](_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0x317997[_0x4e9d('0x34')]=_0x317997['attributes'][_0x4e9d('0x36')]?_0x317997[_0x4e9d('0x34')]:_0x525607[_0x4e9d('0x2f')];if(!_0x4e8ecb[_0x4e9d('0x30')]['hasOwnProperty'](_0x4e9d('0x37'))){_0x317997['limit']=qs['limit'](_0x4e8ecb[_0x4e9d('0x30')]['limit']);_0x317997[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x4e8ecb['query'][_0x4e9d('0x1b')]);}_0x317997['order']=qs[_0x4e9d('0x38')](_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x317997['where']=qs['filters'](_['pick'](_0x4e8ecb[_0x4e9d('0x30')],_0x525607[_0x4e9d('0x32')]),_0x1787d3);if(_0x4e8ecb['query']['filter']){_0x317997['where']=_[_0x4e9d('0x39')](_0x317997['where'],{'$or':_['map'](_0x1787d3,function(_0xc5b0c6){if(_0xc5b0c6[_0x4e9d('0x2d')]!==_0x4e9d('0x3a')){var _0x52873f={};_0x52873f[_0xc5b0c6['name']]={'$like':'%'+_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x52873f;}})});}_0x317997=_['merge']({},_0x317997,_0x4e8ecb[_0x4e9d('0x3c')]);var _0x41bcbf={'where':_0x317997[_0x4e9d('0x3d')]};return db[_0x4e9d('0x3e')][_0x4e9d('0x1e')](_0x41bcbf)[_0x4e9d('0x24')](function(_0x566cc1){_0x381cbc['count']=_0x566cc1;if(_0x4e8ecb[_0x4e9d('0x30')][_0x4e9d('0x3f')]){_0x317997[_0x4e9d('0x40')]=[{'all':!![]}];}return db[_0x4e9d('0x3e')][_0x4e9d('0x41')](_0x317997);})['then'](function(_0x4270e8){_0x381cbc[_0x4e9d('0x42')]=_0x4270e8;return _0x381cbc;})[_0x4e9d('0x24')](respondWithFilteredResult(_0x20a7b7,_0x317997))[_0x4e9d('0x43')](handleError(_0x20a7b7,null));};exports[_0x4e9d('0x44')]=function(_0x7b89e1,_0x212880){var _0xf3c37c={'raw':![],'where':{'id':_0x7b89e1[_0x4e9d('0x45')]['id']}},_0x57658e={};_0x57658e['model']=_[_0x4e9d('0x31')](db[_0x4e9d('0x3e')][_0x4e9d('0x2b')]);_0x57658e[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x7b89e1[_0x4e9d('0x30')]);_0x57658e[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x57658e[_0x4e9d('0x2f')],_0x57658e['query']);_0xf3c37c[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x57658e[_0x4e9d('0x2f')],qs[_0x4e9d('0x35')](_0x7b89e1[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0xf3c37c[_0x4e9d('0x34')]=_0xf3c37c[_0x4e9d('0x34')][_0x4e9d('0x36')]?_0xf3c37c[_0x4e9d('0x34')]:_0x57658e[_0x4e9d('0x2f')];if(_0x7b89e1['query'][_0x4e9d('0x3f')]){_0xf3c37c[_0x4e9d('0x40')]=[{'all':!![]}];}_0xf3c37c=_['merge']({},_0xf3c37c,_0x7b89e1[_0x4e9d('0x3c')]);return db[_0x4e9d('0x3e')][_0x4e9d('0x46')](_0xf3c37c)[_0x4e9d('0x24')](handleEntityNotFound(_0x212880,null))[_0x4e9d('0x24')](respondWithResult(_0x212880,null))['catch'](handleError(_0x212880,null));};exports[_0x4e9d('0x47')]=function(_0x5d2257,_0x303cfc){return db['ZohoConfiguration'][_0x4e9d('0x47')](_0x5d2257['body'],{})[_0x4e9d('0x24')](respondWithResult(_0x303cfc,0xc9))['catch'](handleError(_0x303cfc,null));};exports[_0x4e9d('0x23')]=function(_0x51d10f,_0x4b440f){if(_0x51d10f[_0x4e9d('0x48')]['id']){delete _0x51d10f[_0x4e9d('0x48')]['id'];}return db[_0x4e9d('0x3e')]['find']({'where':{'id':_0x51d10f['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x4b440f,null))['then'](saveUpdates(_0x51d10f['body'],null))[_0x4e9d('0x24')](respondWithResult(_0x4b440f,null))[_0x4e9d('0x43')](handleError(_0x4b440f,null));};exports['destroy']=function(_0x51b633,_0x21310f){return db[_0x4e9d('0x3e')][_0x4e9d('0x46')]({'where':{'id':_0x51b633['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x21310f,null))[_0x4e9d('0x24')](removeEntity(_0x21310f,null))[_0x4e9d('0x43')](handleError(_0x21310f,null));};exports['getFields']=function(_0x52f01c,_0x445932,_0x2247ec){var _0x4c847c={};var _0x5706e4={};var _0x3077f6;var _0x432918;return db[_0x4e9d('0x3e')][_0x4e9d('0x49')]({'where':{'id':_0x52f01c['params']['id']}})['then'](handleEntityNotFound(_0x445932,null))[_0x4e9d('0x24')](function(_0x5991b7){if(_0x5991b7){_0x3077f6=_0x5991b7;_0x5706e4[_0x4e9d('0x2f')]=_[_0x4e9d('0x31')](db['ZohoField']['rawAttributes']);_0x5706e4['query']=_[_0x4e9d('0x31')](_0x52f01c[_0x4e9d('0x30')]);_0x5706e4[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x5706e4[_0x4e9d('0x2f')],_0x5706e4[_0x4e9d('0x30')]);_0x4c847c[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x5706e4[_0x4e9d('0x2f')],qs['fields'](_0x52f01c[_0x4e9d('0x30')]['fields']));_0x4c847c[_0x4e9d('0x34')]=_0x4c847c[_0x4e9d('0x34')]['length']?_0x4c847c[_0x4e9d('0x34')]:_0x5706e4[_0x4e9d('0x2f')];_0x4c847c['order']=qs['sort'](_0x52f01c[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x4c847c[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x52f01c['query'],_0x5706e4[_0x4e9d('0x32')]));if(_0x52f01c['query'][_0x4e9d('0x3b')]){_0x4c847c[_0x4e9d('0x3d')]=_[_0x4e9d('0x39')](_0x4c847c['where'],{'$or':_[_0x4e9d('0x2a')](_0x4c847c['attributes'],function(_0x512559){var _0x3225b3={};_0x3225b3[_0x512559]={'$like':'%'+_0x52f01c[_0x4e9d('0x30')]['filter']+'%'};return _0x3225b3;})});}_0x4c847c=_[_0x4e9d('0x39')]({},_0x4c847c,_0x52f01c['options']);return _0x3077f6[_0x4e9d('0x4b')](_0x4c847c);}})[_0x4e9d('0x24')](function(_0x17df9b){if(_0x17df9b){_0x432918=_0x17df9b[_0x4e9d('0x36')];if(!_0x52f01c[_0x4e9d('0x30')]['hasOwnProperty'](_0x4e9d('0x37'))){_0x4c847c[_0x4e9d('0x1c')]=qs['limit'](_0x52f01c[_0x4e9d('0x30')][_0x4e9d('0x1c')]);_0x4c847c[_0x4e9d('0x1b')]=qs['offset'](_0x52f01c['query'][_0x4e9d('0x1b')]);}return _0x3077f6[_0x4e9d('0x4b')](_0x4c847c);}})[_0x4e9d('0x24')](function(_0x3260bb){if(_0x3260bb){return _0x3260bb?{'count':_0x432918,'rows':_0x3260bb}:null;}})['then'](respondWithResult(_0x445932,null))[_0x4e9d('0x43')](handleError(_0x445932,null));};exports['getSubjects']=function(_0x91338,_0x46c240,_0xba60c0){var _0xee6773={};var _0x9de856={};var _0x175d98;var _0x588ada;return db[_0x4e9d('0x3e')]['findOne']({'where':{'id':_0x91338[_0x4e9d('0x45')]['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x46c240,null))[_0x4e9d('0x24')](function(_0x3bfa74){if(_0x3bfa74){_0x175d98=_0x3bfa74;_0x9de856['model']=_[_0x4e9d('0x31')](db['ZohoField'][_0x4e9d('0x2b')]);_0x9de856[_0x4e9d('0x30')]=_['keys'](_0x91338[_0x4e9d('0x30')]);_0x9de856['filters']=_['intersection'](_0x9de856['model'],_0x9de856[_0x4e9d('0x30')]);_0xee6773[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x9de856[_0x4e9d('0x2f')],qs['fields'](_0x91338[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0xee6773[_0x4e9d('0x34')]=_0xee6773['attributes']['length']?_0xee6773['attributes']:_0x9de856[_0x4e9d('0x2f')];_0xee6773[_0x4e9d('0x4c')]=qs[_0x4e9d('0x38')](_0x91338[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0xee6773[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x91338[_0x4e9d('0x30')],_0x9de856[_0x4e9d('0x32')]));if(_0x91338[_0x4e9d('0x30')][_0x4e9d('0x3b')]){_0xee6773['where']=_[_0x4e9d('0x39')](_0xee6773['where'],{'$or':_[_0x4e9d('0x2a')](_0xee6773[_0x4e9d('0x34')],function(_0x53e5b6){var _0x10a8e3={};_0x10a8e3[_0x53e5b6]={'$like':'%'+_0x91338[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x10a8e3;})});}_0xee6773=_[_0x4e9d('0x39')]({},_0xee6773,_0x91338[_0x4e9d('0x3c')]);return _0x175d98[_0x4e9d('0x4d')](_0xee6773);}})[_0x4e9d('0x24')](function(_0x12f05a){if(_0x12f05a){_0x588ada=_0x12f05a[_0x4e9d('0x36')];if(!_0x91338[_0x4e9d('0x30')][_0x4e9d('0x4e')](_0x4e9d('0x37'))){_0xee6773[_0x4e9d('0x1c')]=qs[_0x4e9d('0x1c')](_0x91338['query'][_0x4e9d('0x1c')]);_0xee6773[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x91338['query']['offset']);}return _0x175d98[_0x4e9d('0x4d')](_0xee6773);}})['then'](function(_0x3063f8){if(_0x3063f8){return _0x3063f8?{'count':_0x588ada,'rows':_0x3063f8}:null;}})[_0x4e9d('0x24')](respondWithResult(_0x46c240,null))['catch'](handleError(_0x46c240,null));};exports[_0x4e9d('0x4f')]=function(_0x2de804,_0x349c73,_0x13fb12){var _0x3a7756={};var _0x208154={};var _0x4fe558;var _0x5cfb2d;return db[_0x4e9d('0x3e')]['findOne']({'where':{'id':_0x2de804['params']['id']}})[_0x4e9d('0x24')](handleEntityNotFound(_0x349c73,null))[_0x4e9d('0x24')](function(_0x4a4f9d){if(_0x4a4f9d){_0x4fe558=_0x4a4f9d;_0x208154[_0x4e9d('0x2f')]=_[_0x4e9d('0x31')](db[_0x4e9d('0x50')][_0x4e9d('0x2b')]);_0x208154[_0x4e9d('0x30')]=_[_0x4e9d('0x31')](_0x2de804['query']);_0x208154[_0x4e9d('0x32')]=_[_0x4e9d('0x33')](_0x208154['model'],_0x208154[_0x4e9d('0x30')]);_0x3a7756[_0x4e9d('0x34')]=_[_0x4e9d('0x33')](_0x208154[_0x4e9d('0x2f')],qs[_0x4e9d('0x35')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x35')]));_0x3a7756[_0x4e9d('0x34')]=_0x3a7756[_0x4e9d('0x34')][_0x4e9d('0x36')]?_0x3a7756['attributes']:_0x208154['model'];_0x3a7756[_0x4e9d('0x4c')]=qs[_0x4e9d('0x38')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x38')]);_0x3a7756[_0x4e9d('0x3d')]=qs[_0x4e9d('0x32')](_[_0x4e9d('0x4a')](_0x2de804[_0x4e9d('0x30')],_0x208154[_0x4e9d('0x32')]));if(_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x3b')]){_0x3a7756[_0x4e9d('0x3d')]=_[_0x4e9d('0x39')](_0x3a7756[_0x4e9d('0x3d')],{'$or':_[_0x4e9d('0x2a')](_0x3a7756[_0x4e9d('0x34')],function(_0x3d8b51){var _0x7ff736={};_0x7ff736[_0x3d8b51]={'$like':'%'+_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x3b')]+'%'};return _0x7ff736;})});}_0x3a7756=_[_0x4e9d('0x39')]({},_0x3a7756,_0x2de804['options']);return _0x4fe558[_0x4e9d('0x4f')](_0x3a7756);}})[_0x4e9d('0x24')](function(_0x3af63e){if(_0x3af63e){_0x5cfb2d=_0x3af63e[_0x4e9d('0x36')];if(!_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x4e')](_0x4e9d('0x37'))){_0x3a7756[_0x4e9d('0x1c')]=qs[_0x4e9d('0x1c')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x1c')]);_0x3a7756[_0x4e9d('0x1b')]=qs[_0x4e9d('0x1b')](_0x2de804[_0x4e9d('0x30')][_0x4e9d('0x1b')]);}return _0x4fe558[_0x4e9d('0x4f')](_0x3a7756);}})[_0x4e9d('0x24')](function(_0x1b887b){if(_0x1b887b){return _0x1b887b?{'count':_0x5cfb2d,'rows':_0x1b887b}:null;}})[_0x4e9d('0x24')](respondWithResult(_0x349c73,null))['catch'](handleError(_0x349c73,null));};
\ No newline at end of file
index 49d057c..9ffbd80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4a4=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','ZohoConfiguration','int_zoho_configurations','lodash'];(function(_0x511c6c,_0x5166e9){var _0x3cc8c7=function(_0x48ccc2){while(--_0x48ccc2){_0x511c6c['push'](_0x511c6c['shift']());}};_0x3cc8c7(++_0x5166e9);}(_0xc4a4,0xa8));var _0x4c4a=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0xc4a4[_0x257642];return _0x3d813b;};'use strict';var _=require(_0x4c4a('0x0'));var util=require(_0x4c4a('0x1'));var logger=require('../../config/logger')(_0x4c4a('0x2'));var moment=require(_0x4c4a('0x3'));var BPromise=require(_0x4c4a('0x4'));var rp=require(_0x4c4a('0x5'));var fs=require('fs');var path=require(_0x4c4a('0x6'));var rimraf=require(_0x4c4a('0x7'));var config=require(_0x4c4a('0x8'));var attributes=require('./intZohoConfiguration.attributes');module[_0x4c4a('0x9')]=function(_0x20231b,_0x4ae83a){return _0x20231b[_0x4c4a('0xa')](_0x4c4a('0xb'),attributes,{'tableName':_0x4c4a('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd9f2=['rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','ZohoConfiguration','int_zoho_configurations','lodash','../../config/logger','api','moment','bluebird'];(function(_0x5377b3,_0x436e62){var _0x361eca=function(_0x5cf575){while(--_0x5cf575){_0x5377b3['push'](_0x5377b3['shift']());}};_0x361eca(++_0x436e62);}(_0xd9f2,0x12f));var _0x2d9f=function(_0x5ae8d6,_0x4c42a7){_0x5ae8d6=_0x5ae8d6-0x0;var _0x1ebaa8=_0xd9f2[_0x5ae8d6];return _0x1ebaa8;};'use strict';var _=require(_0x2d9f('0x0'));var util=require('util');var logger=require(_0x2d9f('0x1'))(_0x2d9f('0x2'));var moment=require(_0x2d9f('0x3'));var BPromise=require(_0x2d9f('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2d9f('0x5'));var config=require(_0x2d9f('0x6'));var attributes=require(_0x2d9f('0x7'));module[_0x2d9f('0x8')]=function(_0x2a1fba,_0x806c97){return _0x2a1fba['define'](_0x2d9f('0x9'),attributes,{'tableName':_0x2d9f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 63c4f34..c391e0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x631b=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','ZohoConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x49ec58,_0x548caf){var _0x5518f2=function(_0x487ccd){while(--_0x487ccd){_0x49ec58['push'](_0x49ec58['shift']());}};_0x5518f2(++_0x548caf);}(_0x631b,0x13b));var _0xb631=function(_0xc8db6b,_0x320abd){_0xc8db6b=_0xc8db6b-0x0;var _0x12cb81=_0x631b[_0xc8db6b];return _0x12cb81;};'use strict';var _=require(_0xb631('0x0'));var util=require(_0xb631('0x1'));var moment=require(_0xb631('0x2'));var BPromise=require(_0xb631('0x3'));var rs=require(_0xb631('0x4'));var fs=require('fs');var Redis=require(_0xb631('0x5'));var db=require(_0xb631('0x6'))['db'];var utils=require(_0xb631('0x7'));var logger=require(_0xb631('0x8'))(_0xb631('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb631('0xa')][_0xb631('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x173322,_0x3acde0,_0x5b276a){return new BPromise(function(_0x129f6b,_0x5255c4){return client[_0xb631('0xc')](_0x173322,_0x5b276a)[_0xb631('0xd')](function(_0x5e6656){logger[_0xb631('0xe')](_0xb631('0xf'),_0x3acde0,'request\x20sent');logger['debug'](_0xb631('0x10'),_0x3acde0,_0xb631('0x11'),JSON[_0xb631('0x12')](_0x5e6656));if(_0x5e6656[_0xb631('0x13')]){if(_0x5e6656['error'][_0xb631('0x14')]===0x1f4){logger[_0xb631('0x13')](_0xb631('0xf'),_0x3acde0,_0x5e6656['error'][_0xb631('0x15')]);return _0x5255c4(_0x5e6656[_0xb631('0x13')][_0xb631('0x15')]);}logger[_0xb631('0x13')](_0xb631('0xf'),_0x3acde0,_0x5e6656[_0xb631('0x13')][_0xb631('0x15')]);return _0x129f6b(_0x5e6656['error']['message']);}else{logger[_0xb631('0xe')]('ZohoConfiguration,\x20%s,\x20%s',_0x3acde0,_0xb631('0x11'));_0x129f6b(_0x5e6656[_0xb631('0x16')][_0xb631('0x15')]);}})[_0xb631('0x17')](function(_0x5045b2){logger[_0xb631('0x13')](_0xb631('0xf'),_0x3acde0,_0x5045b2);_0x5255c4(_0x5045b2);});});}
\ No newline at end of file
+var _0xf478=['../../config/environment','jayson/promise','client','http','request','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2e69a6,_0x80d37f){var _0x16afb3=function(_0x46e0e4){while(--_0x46e0e4){_0x2e69a6['push'](_0x2e69a6['shift']());}};_0x16afb3(++_0x80d37f);}(_0xf478,0x118));var _0x8f47=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xf478[_0x102e37];return _0x35a07c;};'use strict';var _=require(_0x8f47('0x0'));var util=require('util');var moment=require(_0x8f47('0x1'));var BPromise=require(_0x8f47('0x2'));var rs=require(_0x8f47('0x3'));var fs=require('fs');var Redis=require(_0x8f47('0x4'));var db=require(_0x8f47('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8f47('0x6'));var jayson=require(_0x8f47('0x7'));var client=jayson[_0x8f47('0x8')][_0x8f47('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f6c17,_0x1d8c49,_0x1e2aaa){return new BPromise(function(_0x454cf1,_0x3a5586){return client[_0x8f47('0xa')](_0x2f6c17,_0x1e2aaa)['then'](function(_0x182088){logger['info'](_0x8f47('0xb'),_0x1d8c49,_0x8f47('0xc'));logger[_0x8f47('0xd')](_0x8f47('0xe'),_0x1d8c49,_0x8f47('0xc'),JSON[_0x8f47('0xf')](_0x182088));if(_0x182088['error']){if(_0x182088[_0x8f47('0x10')][_0x8f47('0x11')]===0x1f4){logger[_0x8f47('0x10')](_0x8f47('0xb'),_0x1d8c49,_0x182088[_0x8f47('0x10')]['message']);return _0x3a5586(_0x182088[_0x8f47('0x10')][_0x8f47('0x12')]);}logger[_0x8f47('0x10')](_0x8f47('0xb'),_0x1d8c49,_0x182088[_0x8f47('0x10')][_0x8f47('0x12')]);return _0x454cf1(_0x182088[_0x8f47('0x10')]['message']);}else{logger[_0x8f47('0x13')](_0x8f47('0xb'),_0x1d8c49,_0x8f47('0xc'));_0x454cf1(_0x182088[_0x8f47('0x14')][_0x8f47('0x12')]);}})[_0x8f47('0x15')](function(_0x1b9849){logger['error'](_0x8f47('0xb'),_0x1d8c49,_0x1b9849);_0x3a5586(_0x1b9849);});});}
\ No newline at end of file
index 25ba1b7..ac34eb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55a1=['get','/:id','isAuthenticated','post','create','put','update','destroy','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0x55a1,0x118));var _0x155a=function(_0x43739f,_0x40517a){_0x43739f=_0x43739f-0x0;var _0x2cdf3e=_0x55a1[_0x43739f];return _0x2cdf3e;};'use strict';var multer=require(_0x155a('0x0'));var util=require('util');var path=require(_0x155a('0x1'));var timeout=require(_0x155a('0x2'));var express=require(_0x155a('0x3'));var router=express['Router']();var fs_extra=require(_0x155a('0x4'));var auth=require(_0x155a('0x5'));var interaction=require(_0x155a('0x6'));var config=require(_0x155a('0x7'));var controller=require('./intZohoField.controller');router[_0x155a('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x155a('0x9'),auth[_0x155a('0xa')](),controller['show']);router[_0x155a('0xb')]('/',auth['isAuthenticated'](),controller[_0x155a('0xc')]);router[_0x155a('0xd')](_0x155a('0x9'),auth['isAuthenticated'](),controller[_0x155a('0xe')]);router['delete'](_0x155a('0x9'),auth[_0x155a('0xa')](),controller[_0x155a('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0085=['isAuthenticated','index','get','show','update','/:id','destroy','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./intZohoField.controller'];(function(_0x1e76dc,_0x448187){var _0x435b9e=function(_0x327196){while(--_0x327196){_0x1e76dc['push'](_0x1e76dc['shift']());}};_0x435b9e(++_0x448187);}(_0x0085,0x1b8));var _0x5008=function(_0x368eb1,_0x11343a){_0x368eb1=_0x368eb1-0x0;var _0xbf8b62=_0x0085[_0x368eb1];return _0xbf8b62;};'use strict';var multer=require('multer');var util=require(_0x5008('0x0'));var path=require(_0x5008('0x1'));var timeout=require(_0x5008('0x2'));var express=require(_0x5008('0x3'));var router=express[_0x5008('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5008('0x5'));var config=require(_0x5008('0x6'));var controller=require(_0x5008('0x7'));router['get']('/',auth[_0x5008('0x8')](),controller[_0x5008('0x9')]);router[_0x5008('0xa')]('/:id',auth[_0x5008('0x8')](),controller[_0x5008('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x5008('0xc')]);router['delete'](_0x5008('0xd'),auth[_0x5008('0x8')](),controller[_0x5008('0xe')]);module[_0x5008('0xf')]=router;
\ No newline at end of file
index a30f57a..cf643d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9359=['ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN','sequelize','exports'];(function(_0x557688,_0xce7605){var _0x8bf9dd=function(_0x2d5cfa){while(--_0x2d5cfa){_0x557688['push'](_0x557688['shift']());}};_0x8bf9dd(++_0xce7605);}(_0x9359,0x103));var _0x9935=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9359[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require(_0x9935('0x0'));module[_0x9935('0x1')]={'type':{'type':Sequelize[_0x9935('0x2')](_0x9935('0x3'),_0x9935('0x4'),_0x9935('0x5'),'keyValue',_0x9935('0x6')),'defaultValue':_0x9935('0x3')},'content':{'type':Sequelize[_0x9935('0x7')]},'key':{'type':Sequelize[_0x9935('0x7')]},'keyType':{'type':Sequelize[_0x9935('0x2')](_0x9935('0x3'),_0x9935('0x4'),_0x9935('0x5'))},'keyContent':{'type':Sequelize[_0x9935('0x7')]},'idField':{'type':Sequelize[_0x9935('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x9935('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x9935('0x7')]}};
\ No newline at end of file
+var _0x7de7=['BOOLEAN','exports','string','variable','keyValue','picklist','ENUM','customVariable','STRING'];(function(_0x281f29,_0x5885fe){var _0x371333=function(_0x538445){while(--_0x538445){_0x281f29['push'](_0x281f29['shift']());}};_0x371333(++_0x5885fe);}(_0x7de7,0x106));var _0x77de=function(_0x33975c,_0x50d085){_0x33975c=_0x33975c-0x0;var _0x1c15ab=_0x7de7[_0x33975c];return _0x1c15ab;};'use strict';var Sequelize=require('sequelize');module[_0x77de('0x0')]={'type':{'type':Sequelize['ENUM'](_0x77de('0x1'),_0x77de('0x2'),'customVariable',_0x77de('0x3'),_0x77de('0x4')),'defaultValue':_0x77de('0x1')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x77de('0x5')](_0x77de('0x1'),_0x77de('0x2'),_0x77de('0x6'))},'keyContent':{'type':Sequelize[_0x77de('0x7')]},'idField':{'type':Sequelize[_0x77de('0x7')]},'nameField':{'type':Sequelize[_0x77de('0x7')]},'customField':{'type':Sequelize[_0x77de('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x77de('0x7')]}};
\ No newline at end of file
index 3d748e8..4b485e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00d1=['nolimit','sort','where','pick','filter','merge','VIRTUAL','options','rows','catch','show','params','includeAll','include','find','create','body','eml-format','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','ZohoField','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x223461,_0x2bca70){var _0x4dbe0a=function(_0x3c3cb6){while(--_0x3c3cb6){_0x223461['push'](_0x223461['shift']());}};_0x4dbe0a(++_0x2bca70);}(_0x00d1,0x16f));var _0x100d=function(_0x169600,_0x1d1346){_0x169600=_0x169600-0x0;var _0x3bee22=_0x00d1[_0x169600];return _0x3bee22;};'use strict';var emlformat=require(_0x100d('0x0'));var rimraf=require(_0x100d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x100d('0x2'));var rp=require(_0x100d('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x100d('0x4'));var util=require('util');var path=require(_0x100d('0x5'));var sox=require('sox');var csv=require(_0x100d('0x6'));var ejs=require(_0x100d('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x100d('0x8'));var squel=require(_0x100d('0x9'));var crypto=require(_0x100d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x100d('0xb'));var toCsv=require(_0x100d('0x6'));var querystring=require('querystring');var Papa=require(_0x100d('0xc'));var Redis=require(_0x100d('0xd'));var authService=require(_0x100d('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x100d('0xf'));var hardwareService=require(_0x100d('0x10'));var logger=require(_0x100d('0x11'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x100d('0x12'))['db'];function respondWithStatusCode(_0xff3262,_0x2eb0ad){_0x2eb0ad=_0x2eb0ad||0xcc;return function(_0x376eae){if(_0x376eae){return _0xff3262[_0x100d('0x13')](_0x2eb0ad);}return _0xff3262[_0x100d('0x14')](_0x2eb0ad)['end']();};}function respondWithResult(_0xcc2542,_0x40151c){_0x40151c=_0x40151c||0xc8;return function(_0x1b5662){if(_0x1b5662){return _0xcc2542[_0x100d('0x14')](_0x40151c)[_0x100d('0x15')](_0x1b5662);}};}function respondWithFilteredResult(_0x4f8411,_0x24ed72){return function(_0x5cd392){if(_0x5cd392){var _0x4a292e=typeof _0x24ed72[_0x100d('0x16')]===_0x100d('0x17')&&typeof _0x24ed72[_0x100d('0x18')]===_0x100d('0x17');var _0x7fdd5d=_0x5cd392[_0x100d('0x19')];var _0x697286=_0x4a292e?0x0:_0x24ed72['offset'];var _0x2e8c5b=_0x4a292e?_0x5cd392['count']:_0x24ed72[_0x100d('0x16')]+_0x24ed72[_0x100d('0x18')];var _0x2dcc3c;if(_0x2e8c5b>=_0x7fdd5d){_0x2e8c5b=_0x7fdd5d;_0x2dcc3c=0xc8;}else{_0x2dcc3c=0xce;}_0x4f8411['status'](_0x2dcc3c);return _0x4f8411[_0x100d('0x1a')](_0x100d('0x1b'),_0x697286+'-'+_0x2e8c5b+'/'+_0x7fdd5d)[_0x100d('0x15')](_0x5cd392);}return null;};}function patchUpdates(_0x59c747){return function(_0x421b3c){try{jsonpatch[_0x100d('0x1c')](_0x421b3c,_0x59c747,!![]);}catch(_0x5445c7){return BPromise[_0x100d('0x1d')](_0x5445c7);}return _0x421b3c[_0x100d('0x1e')]();};}function saveUpdates(_0x3b5358,_0x4bf591){return function(_0x365fb8){if(_0x365fb8){return _0x365fb8[_0x100d('0x1f')](_0x3b5358)[_0x100d('0x20')](function(_0x48ff4a){return _0x48ff4a;});}return null;};}function removeEntity(_0x1f2324,_0x2f5d69){return function(_0x38870d){if(_0x38870d){return _0x38870d[_0x100d('0x21')]()[_0x100d('0x20')](function(){_0x1f2324['status'](0xcc)[_0x100d('0x22')]();});}};}function handleEntityNotFound(_0x43932a,_0x5f1030){return function(_0x921d08){if(!_0x921d08){_0x43932a[_0x100d('0x13')](0x194);}return _0x921d08;};}function handleError(_0x522dac,_0x429bdd){_0x429bdd=_0x429bdd||0x1f4;return function(_0x3fdf5f){logger[_0x100d('0x23')](_0x3fdf5f[_0x100d('0x24')]);if(_0x3fdf5f['name']){delete _0x3fdf5f[_0x100d('0x25')];}_0x522dac['status'](_0x429bdd)[_0x100d('0x26')](_0x3fdf5f);};}exports[_0x100d('0x27')]=function(_0x2ba6fe,_0x32ceac){var _0x5994a8={},_0x2f9007={},_0x10bbc5={'count':0x0,'rows':[]};var _0x173883=_[_0x100d('0x28')](db[_0x100d('0x29')][_0x100d('0x2a')],function(_0x2f1fab){return{'name':_0x2f1fab['fieldName'],'type':_0x2f1fab[_0x100d('0x2b')][_0x100d('0x2c')]};});_0x2f9007[_0x100d('0x2d')]=_[_0x100d('0x28')](_0x173883,_0x100d('0x25'));_0x2f9007[_0x100d('0x2e')]=_[_0x100d('0x2f')](_0x2ba6fe[_0x100d('0x2e')]);_0x2f9007[_0x100d('0x30')]=_[_0x100d('0x31')](_0x2f9007['model'],_0x2f9007[_0x100d('0x2e')]);_0x5994a8[_0x100d('0x32')]=_['intersection'](_0x2f9007[_0x100d('0x2d')],qs[_0x100d('0x33')](_0x2ba6fe['query']['fields']));_0x5994a8['attributes']=_0x5994a8[_0x100d('0x32')][_0x100d('0x34')]?_0x5994a8['attributes']:_0x2f9007[_0x100d('0x2d')];if(!_0x2ba6fe[_0x100d('0x2e')]['hasOwnProperty'](_0x100d('0x35'))){_0x5994a8[_0x100d('0x18')]=qs['limit'](_0x2ba6fe[_0x100d('0x2e')][_0x100d('0x18')]);_0x5994a8[_0x100d('0x16')]=qs[_0x100d('0x16')](_0x2ba6fe[_0x100d('0x2e')][_0x100d('0x16')]);}_0x5994a8['order']=qs[_0x100d('0x36')](_0x2ba6fe[_0x100d('0x2e')][_0x100d('0x36')]);_0x5994a8[_0x100d('0x37')]=qs[_0x100d('0x30')](_[_0x100d('0x38')](_0x2ba6fe['query'],_0x2f9007[_0x100d('0x30')]),_0x173883);if(_0x2ba6fe[_0x100d('0x2e')][_0x100d('0x39')]){_0x5994a8[_0x100d('0x37')]=_[_0x100d('0x3a')](_0x5994a8['where'],{'$or':_[_0x100d('0x28')](_0x173883,function(_0x56571e){if(_0x56571e['type']!==_0x100d('0x3b')){var _0x49f73c={};_0x49f73c[_0x56571e['name']]={'$like':'%'+_0x2ba6fe[_0x100d('0x2e')][_0x100d('0x39')]+'%'};return _0x49f73c;}})});}_0x5994a8=_[_0x100d('0x3a')]({},_0x5994a8,_0x2ba6fe[_0x100d('0x3c')]);var _0x3f1811={'where':_0x5994a8[_0x100d('0x37')]};return db[_0x100d('0x29')][_0x100d('0x19')](_0x3f1811)['then'](function(_0x3e940d){_0x10bbc5['count']=_0x3e940d;if(_0x2ba6fe[_0x100d('0x2e')]['includeAll']){_0x5994a8['include']=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x5994a8);})[_0x100d('0x20')](function(_0x1e2f08){_0x10bbc5[_0x100d('0x3d')]=_0x1e2f08;return _0x10bbc5;})[_0x100d('0x20')](respondWithFilteredResult(_0x32ceac,_0x5994a8))[_0x100d('0x3e')](handleError(_0x32ceac,null));};exports[_0x100d('0x3f')]=function(_0x17c6df,_0x5cf2ff){var _0x5d7bb3={'raw':!![],'where':{'id':_0x17c6df[_0x100d('0x40')]['id']}},_0x256d0a={};_0x256d0a[_0x100d('0x2d')]=_['keys'](db[_0x100d('0x29')]['rawAttributes']);_0x256d0a['query']=_[_0x100d('0x2f')](_0x17c6df[_0x100d('0x2e')]);_0x256d0a[_0x100d('0x30')]=_['intersection'](_0x256d0a[_0x100d('0x2d')],_0x256d0a[_0x100d('0x2e')]);_0x5d7bb3['attributes']=_['intersection'](_0x256d0a[_0x100d('0x2d')],qs[_0x100d('0x33')](_0x17c6df[_0x100d('0x2e')][_0x100d('0x33')]));_0x5d7bb3[_0x100d('0x32')]=_0x5d7bb3[_0x100d('0x32')][_0x100d('0x34')]?_0x5d7bb3[_0x100d('0x32')]:_0x256d0a[_0x100d('0x2d')];if(_0x17c6df[_0x100d('0x2e')][_0x100d('0x41')]){_0x5d7bb3[_0x100d('0x42')]=[{'all':!![]}];}_0x5d7bb3=_[_0x100d('0x3a')]({},_0x5d7bb3,_0x17c6df[_0x100d('0x3c')]);return db[_0x100d('0x29')][_0x100d('0x43')](_0x5d7bb3)[_0x100d('0x20')](handleEntityNotFound(_0x5cf2ff,null))[_0x100d('0x20')](respondWithResult(_0x5cf2ff,null))[_0x100d('0x3e')](handleError(_0x5cf2ff,null));};exports[_0x100d('0x44')]=function(_0x28f94e,_0x389cbf){return db[_0x100d('0x29')]['create'](_0x28f94e[_0x100d('0x45')],{})[_0x100d('0x20')](respondWithResult(_0x389cbf,0xc9))[_0x100d('0x3e')](handleError(_0x389cbf,null));};exports[_0x100d('0x1f')]=function(_0x35e48d,_0x84efc1){if(_0x35e48d[_0x100d('0x45')]['id']){delete _0x35e48d[_0x100d('0x45')]['id'];}return db[_0x100d('0x29')][_0x100d('0x43')]({'where':{'id':_0x35e48d[_0x100d('0x40')]['id']}})[_0x100d('0x20')](handleEntityNotFound(_0x84efc1,null))[_0x100d('0x20')](saveUpdates(_0x35e48d[_0x100d('0x45')],null))['then'](respondWithResult(_0x84efc1,null))[_0x100d('0x3e')](handleError(_0x84efc1,null));};exports[_0x100d('0x21')]=function(_0x31dcd8,_0x10e9ef){return db[_0x100d('0x29')][_0x100d('0x43')]({'where':{'id':_0x31dcd8['params']['id']}})['then'](handleEntityNotFound(_0x10e9ef,null))[_0x100d('0x20')](removeEntity(_0x10e9ef,null))[_0x100d('0x3e')](handleError(_0x10e9ef,null));};
\ No newline at end of file
+var _0x6f64=['mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','ZohoField','include','findAll','rows','catch','params','options','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x3a4078,_0x56ceac){var _0x59f16d=function(_0xe91068){while(--_0xe91068){_0x3a4078['push'](_0x3a4078['shift']());}};_0x59f16d(++_0x56ceac);}(_0x6f64,0x126));var _0x46f6=function(_0x4a8ce2,_0x4cd94e){_0x4a8ce2=_0x4a8ce2-0x0;var _0x38c265=_0x6f64[_0x4a8ce2];return _0x38c265;};'use strict';var emlformat=require(_0x46f6('0x0'));var rimraf=require(_0x46f6('0x1'));var zipdir=require(_0x46f6('0x2'));var jsonpatch=require(_0x46f6('0x3'));var rp=require(_0x46f6('0x4'));var moment=require(_0x46f6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x46f6('0x6'));var util=require('util');var path=require(_0x46f6('0x7'));var sox=require(_0x46f6('0x8'));var csv=require('to-csv');var ejs=require(_0x46f6('0x9'));var fs=require('fs');var fs_extra=require(_0x46f6('0xa'));var _=require(_0x46f6('0xb'));var squel=require(_0x46f6('0xc'));var crypto=require(_0x46f6('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x46f6('0xe'));var toCsv=require(_0x46f6('0xf'));var querystring=require(_0x46f6('0x10'));var Papa=require(_0x46f6('0x11'));var Redis=require(_0x46f6('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x46f6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x46f6('0x14'));var logger=require(_0x46f6('0x15'))(_0x46f6('0x16'));var utils=require('../../config/utils');var config=require(_0x46f6('0x17'));var licenseUtil=require(_0x46f6('0x18'));var db=require(_0x46f6('0x19'))['db'];function respondWithStatusCode(_0x174d0c,_0x4ed4df){_0x4ed4df=_0x4ed4df||0xcc;return function(_0x129113){if(_0x129113){return _0x174d0c['sendStatus'](_0x4ed4df);}return _0x174d0c[_0x46f6('0x1a')](_0x4ed4df)[_0x46f6('0x1b')]();};}function respondWithResult(_0x29835a,_0x29b44d){_0x29b44d=_0x29b44d||0xc8;return function(_0x322483){if(_0x322483){return _0x29835a[_0x46f6('0x1a')](_0x29b44d)['json'](_0x322483);}};}function respondWithFilteredResult(_0x42e348,_0x23ee23){return function(_0x3cb09c){if(_0x3cb09c){var _0x12fbce=typeof _0x23ee23[_0x46f6('0x1c')]===_0x46f6('0x1d')&&typeof _0x23ee23[_0x46f6('0x1e')]===_0x46f6('0x1d');var _0x35e04d=_0x3cb09c[_0x46f6('0x1f')];var _0x2bf103=_0x12fbce?0x0:_0x23ee23[_0x46f6('0x1c')];var _0x2e3560=_0x12fbce?_0x3cb09c[_0x46f6('0x1f')]:_0x23ee23['offset']+_0x23ee23['limit'];var _0x4b3a48;if(_0x2e3560>=_0x35e04d){_0x2e3560=_0x35e04d;_0x4b3a48=0xc8;}else{_0x4b3a48=0xce;}_0x42e348[_0x46f6('0x1a')](_0x4b3a48);return _0x42e348[_0x46f6('0x20')](_0x46f6('0x21'),_0x2bf103+'-'+_0x2e3560+'/'+_0x35e04d)['json'](_0x3cb09c);}return null;};}function patchUpdates(_0x5a1992){return function(_0x335a87){try{jsonpatch[_0x46f6('0x22')](_0x335a87,_0x5a1992,!![]);}catch(_0x4c81e6){return BPromise[_0x46f6('0x23')](_0x4c81e6);}return _0x335a87[_0x46f6('0x24')]();};}function saveUpdates(_0x334fb4,_0x14c931){return function(_0x31f5ab){if(_0x31f5ab){return _0x31f5ab[_0x46f6('0x25')](_0x334fb4)[_0x46f6('0x26')](function(_0x564798){return _0x564798;});}return null;};}function removeEntity(_0x24e5a2,_0x59697d){return function(_0x14f5db){if(_0x14f5db){return _0x14f5db[_0x46f6('0x27')]()[_0x46f6('0x26')](function(){_0x24e5a2['status'](0xcc)[_0x46f6('0x1b')]();});}};}function handleEntityNotFound(_0x268286,_0x4cab2a){return function(_0xa18f2c){if(!_0xa18f2c){_0x268286[_0x46f6('0x28')](0x194);}return _0xa18f2c;};}function handleError(_0x5b0d12,_0xdbb0ed){_0xdbb0ed=_0xdbb0ed||0x1f4;return function(_0x154085){logger[_0x46f6('0x29')](_0x154085[_0x46f6('0x2a')]);if(_0x154085['name']){delete _0x154085[_0x46f6('0x2b')];}_0x5b0d12[_0x46f6('0x1a')](_0xdbb0ed)[_0x46f6('0x2c')](_0x154085);};}exports[_0x46f6('0x2d')]=function(_0x4a037f,_0x40816b){var _0x3c05de={},_0x59708b={},_0x45d8d3={'count':0x0,'rows':[]};var _0x5476d5=_[_0x46f6('0x2e')](db['ZohoField'][_0x46f6('0x2f')],function(_0x3f2435){return{'name':_0x3f2435[_0x46f6('0x30')],'type':_0x3f2435['type']['key']};});_0x59708b[_0x46f6('0x31')]=_[_0x46f6('0x2e')](_0x5476d5,_0x46f6('0x2b'));_0x59708b['query']=_[_0x46f6('0x32')](_0x4a037f['query']);_0x59708b[_0x46f6('0x33')]=_[_0x46f6('0x34')](_0x59708b[_0x46f6('0x31')],_0x59708b['query']);_0x3c05de[_0x46f6('0x35')]=_[_0x46f6('0x34')](_0x59708b[_0x46f6('0x31')],qs[_0x46f6('0x36')](_0x4a037f[_0x46f6('0x37')]['fields']));_0x3c05de[_0x46f6('0x35')]=_0x3c05de[_0x46f6('0x35')][_0x46f6('0x38')]?_0x3c05de[_0x46f6('0x35')]:_0x59708b[_0x46f6('0x31')];if(!_0x4a037f['query'][_0x46f6('0x39')]('nolimit')){_0x3c05de[_0x46f6('0x1e')]=qs[_0x46f6('0x1e')](_0x4a037f['query'][_0x46f6('0x1e')]);_0x3c05de[_0x46f6('0x1c')]=qs[_0x46f6('0x1c')](_0x4a037f[_0x46f6('0x37')]['offset']);}_0x3c05de[_0x46f6('0x3a')]=qs[_0x46f6('0x3b')](_0x4a037f[_0x46f6('0x37')][_0x46f6('0x3b')]);_0x3c05de[_0x46f6('0x3c')]=qs[_0x46f6('0x33')](_[_0x46f6('0x3d')](_0x4a037f[_0x46f6('0x37')],_0x59708b[_0x46f6('0x33')]),_0x5476d5);if(_0x4a037f['query'][_0x46f6('0x3e')]){_0x3c05de['where']=_[_0x46f6('0x3f')](_0x3c05de[_0x46f6('0x3c')],{'$or':_[_0x46f6('0x2e')](_0x5476d5,function(_0x1c3c3c){if(_0x1c3c3c['type']!==_0x46f6('0x40')){var _0xf3012f={};_0xf3012f[_0x1c3c3c[_0x46f6('0x2b')]]={'$like':'%'+_0x4a037f[_0x46f6('0x37')][_0x46f6('0x3e')]+'%'};return _0xf3012f;}})});}_0x3c05de=_[_0x46f6('0x3f')]({},_0x3c05de,_0x4a037f['options']);var _0x2f6df9={'where':_0x3c05de[_0x46f6('0x3c')]};return db[_0x46f6('0x41')][_0x46f6('0x1f')](_0x2f6df9)[_0x46f6('0x26')](function(_0x459c08){_0x45d8d3[_0x46f6('0x1f')]=_0x459c08;if(_0x4a037f['query']['includeAll']){_0x3c05de[_0x46f6('0x42')]=[{'all':!![]}];}return db[_0x46f6('0x41')][_0x46f6('0x43')](_0x3c05de);})['then'](function(_0x2217a8){_0x45d8d3[_0x46f6('0x44')]=_0x2217a8;return _0x45d8d3;})[_0x46f6('0x26')](respondWithFilteredResult(_0x40816b,_0x3c05de))[_0x46f6('0x45')](handleError(_0x40816b,null));};exports['show']=function(_0x1e4e23,_0x345686){var _0x5591eb={'raw':!![],'where':{'id':_0x1e4e23[_0x46f6('0x46')]['id']}},_0x14b7ca={};_0x14b7ca['model']=_[_0x46f6('0x32')](db['ZohoField'][_0x46f6('0x2f')]);_0x14b7ca[_0x46f6('0x37')]=_[_0x46f6('0x32')](_0x1e4e23['query']);_0x14b7ca[_0x46f6('0x33')]=_[_0x46f6('0x34')](_0x14b7ca[_0x46f6('0x31')],_0x14b7ca[_0x46f6('0x37')]);_0x5591eb['attributes']=_[_0x46f6('0x34')](_0x14b7ca['model'],qs['fields'](_0x1e4e23[_0x46f6('0x37')]['fields']));_0x5591eb[_0x46f6('0x35')]=_0x5591eb[_0x46f6('0x35')][_0x46f6('0x38')]?_0x5591eb['attributes']:_0x14b7ca['model'];if(_0x1e4e23[_0x46f6('0x37')]['includeAll']){_0x5591eb[_0x46f6('0x42')]=[{'all':!![]}];}_0x5591eb=_[_0x46f6('0x3f')]({},_0x5591eb,_0x1e4e23[_0x46f6('0x47')]);return db['ZohoField'][_0x46f6('0x48')](_0x5591eb)[_0x46f6('0x26')](handleEntityNotFound(_0x345686,null))[_0x46f6('0x26')](respondWithResult(_0x345686,null))[_0x46f6('0x45')](handleError(_0x345686,null));};exports['create']=function(_0x505f11,_0x6c443b){return db[_0x46f6('0x41')][_0x46f6('0x49')](_0x505f11[_0x46f6('0x4a')],{})['then'](respondWithResult(_0x6c443b,0xc9))[_0x46f6('0x45')](handleError(_0x6c443b,null));};exports[_0x46f6('0x25')]=function(_0x4286b5,_0x4ce3b8){if(_0x4286b5['body']['id']){delete _0x4286b5[_0x46f6('0x4a')]['id'];}return db[_0x46f6('0x41')][_0x46f6('0x48')]({'where':{'id':_0x4286b5[_0x46f6('0x46')]['id']}})[_0x46f6('0x26')](handleEntityNotFound(_0x4ce3b8,null))[_0x46f6('0x26')](saveUpdates(_0x4286b5[_0x46f6('0x4a')],null))[_0x46f6('0x26')](respondWithResult(_0x4ce3b8,null))[_0x46f6('0x45')](handleError(_0x4ce3b8,null));};exports[_0x46f6('0x27')]=function(_0x1f6fe0,_0xd28c03){return db['ZohoField'][_0x46f6('0x48')]({'where':{'id':_0x1f6fe0[_0x46f6('0x46')]['id']}})[_0x46f6('0x26')](handleEntityNotFound(_0xd28c03,null))['then'](removeEntity(_0xd28c03,null))[_0x46f6('0x45')](handleError(_0xd28c03,null));};
\ No newline at end of file
index 0e75288..2e0902a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['moment','bluebird','request-promise','rimraf','../../config/environment','exports','define','int_zoho_fields','zoho_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x1d7300,_0x17f109){var _0x46ee98=function(_0x5ee16a){while(--_0x5ee16a){_0x1d7300['push'](_0x1d7300['shift']());}};_0x46ee98(++_0x17f109);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x8e3f[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var logger=require(_0xf8e3('0x2'))('api');var moment=require(_0xf8e3('0x3'));var BPromise=require(_0xf8e3('0x4'));var rp=require(_0xf8e3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var attributes=require('./intZohoField.attributes');module[_0xf8e3('0x8')]=function(_0xb21f8d,_0x2621c5){return _0xb21f8d[_0xf8e3('0x9')]('ZohoField',attributes,{'tableName':_0xf8e3('0xa'),'paranoid':![],'indexes':[{'name':_0xf8e3('0xb'),'fields':[_0xf8e3('0xc'),_0xf8e3('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1623=['zoho_unique_index','idField','FieldId','lodash','api','moment','bluebird','request-promise','path','./intZohoField.attributes','ZohoField','int_zoho_fields'];(function(_0x433e2f,_0x3897bc){var _0x3d6270=function(_0x274a25){while(--_0x274a25){_0x433e2f['push'](_0x433e2f['shift']());}};_0x3d6270(++_0x3897bc);}(_0x1623,0xab));var _0x3162=function(_0x390fca,_0x585c05){_0x390fca=_0x390fca-0x0;var _0x32734f=_0x1623[_0x390fca];return _0x32734f;};'use strict';var _=require(_0x3162('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3162('0x1'));var moment=require(_0x3162('0x2'));var BPromise=require(_0x3162('0x3'));var rp=require(_0x3162('0x4'));var fs=require('fs');var path=require(_0x3162('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x3162('0x6'));module['exports']=function(_0x1b55f2,_0x428de6){return _0x1b55f2['define'](_0x3162('0x7'),attributes,{'tableName':_0x3162('0x8'),'paranoid':![],'indexes':[{'name':_0x3162('0x9'),'fields':[_0x3162('0xa'),_0x3162('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 9c109d7..584e1b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x021c=['message','result','catch','lodash','util','moment','bluebird','randomstring','rpc','../../config/environment','client','http','then','info','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','stringify','error','code','ZohoField,\x20%s,\x20%s'];(function(_0xd63e34,_0x301b81){var _0x14147a=function(_0x18ca47){while(--_0x18ca47){_0xd63e34['push'](_0xd63e34['shift']());}};_0x14147a(++_0x301b81);}(_0x021c,0xea));var _0xc021=function(_0x5f12fd,_0x33c70d){_0x5f12fd=_0x5f12fd-0x0;var _0x58bd80=_0x021c[_0x5f12fd];return _0x58bd80;};'use strict';var _=require(_0xc021('0x0'));var util=require(_0xc021('0x1'));var moment=require(_0xc021('0x2'));var BPromise=require(_0xc021('0x3'));var rs=require(_0xc021('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xc021('0x5'));var config=require(_0xc021('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc021('0x7')][_0xc021('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x20db7a,_0x3e6a2c,_0x29c7fd){return new BPromise(function(_0x2c1e3f,_0x1cd631){return client['request'](_0x20db7a,_0x29c7fd)[_0xc021('0x9')](function(_0x139461){logger[_0xc021('0xa')]('ZohoField,\x20%s,\x20%s',_0x3e6a2c,_0xc021('0xb'));logger[_0xc021('0xc')](_0xc021('0xd'),_0x3e6a2c,_0xc021('0xb'),JSON[_0xc021('0xe')](_0x139461));if(_0x139461[_0xc021('0xf')]){if(_0x139461[_0xc021('0xf')][_0xc021('0x10')]===0x1f4){logger[_0xc021('0xf')](_0xc021('0x11'),_0x3e6a2c,_0x139461[_0xc021('0xf')][_0xc021('0x12')]);return _0x1cd631(_0x139461[_0xc021('0xf')][_0xc021('0x12')]);}logger[_0xc021('0xf')](_0xc021('0x11'),_0x3e6a2c,_0x139461[_0xc021('0xf')]['message']);return _0x2c1e3f(_0x139461[_0xc021('0xf')][_0xc021('0x12')]);}else{logger['info'](_0xc021('0x11'),_0x3e6a2c,_0xc021('0xb'));_0x2c1e3f(_0x139461[_0xc021('0x13')][_0xc021('0x12')]);}})[_0xc021('0x14')](function(_0xbb7087){logger[_0xc021('0xf')]('ZohoField,\x20%s,\x20%s',_0x3e6a2c,_0xbb7087);_0x1cd631(_0xbb7087);});});}
\ No newline at end of file
+var _0x5be1=['../../config/environment','jayson/promise','client','http','then','info','ZohoField,\x20%s,\x20%s','debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x53f477,_0x53fe1e){var _0x1d0195=function(_0x599cb3){while(--_0x599cb3){_0x53f477['push'](_0x53f477['shift']());}};_0x1d0195(++_0x53fe1e);}(_0x5be1,0x1f2));var _0x15be=function(_0x365be9,_0x3c88b9){_0x365be9=_0x365be9-0x0;var _0x185c12=_0x5be1[_0x365be9];return _0x185c12;};'use strict';var _=require(_0x15be('0x0'));var util=require('util');var moment=require(_0x15be('0x1'));var BPromise=require(_0x15be('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x15be('0x3'));var db=require(_0x15be('0x4'))['db'];var utils=require(_0x15be('0x5'));var logger=require(_0x15be('0x6'))(_0x15be('0x7'));var config=require(_0x15be('0x8'));var jayson=require(_0x15be('0x9'));var client=jayson[_0x15be('0xa')][_0x15be('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2b5c56,_0x8f439e,_0xf4767d){return new BPromise(function(_0x329dc6,_0x4e5848){return client['request'](_0x2b5c56,_0xf4767d)[_0x15be('0xc')](function(_0x23adb3){logger[_0x15be('0xd')](_0x15be('0xe'),_0x8f439e,'request\x20sent');logger[_0x15be('0xf')](_0x15be('0x10'),_0x8f439e,_0x15be('0x11'),JSON['stringify'](_0x23adb3));if(_0x23adb3['error']){if(_0x23adb3[_0x15be('0x12')][_0x15be('0x13')]===0x1f4){logger[_0x15be('0x12')](_0x15be('0xe'),_0x8f439e,_0x23adb3['error'][_0x15be('0x14')]);return _0x4e5848(_0x23adb3['error']['message']);}logger['error'](_0x15be('0xe'),_0x8f439e,_0x23adb3[_0x15be('0x12')][_0x15be('0x14')]);return _0x329dc6(_0x23adb3[_0x15be('0x12')][_0x15be('0x14')]);}else{logger[_0x15be('0xd')](_0x15be('0xe'),_0x8f439e,_0x15be('0x11'));_0x329dc6(_0x23adb3[_0x15be('0x15')][_0x15be('0x14')]);}})[_0x15be('0x16')](function(_0x422a57){logger[_0x15be('0x12')](_0x15be('0xe'),_0x8f439e,_0x422a57);_0x4e5848(_0x422a57);});});}
\ No newline at end of file
index d0c38ef..40201f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x2d2d98,_0x3456fa){var _0x1895fe=function(_0x4670f6){while(--_0x4670f6){_0x2d2d98['push'](_0x2d2d98['shift']());}};_0x1895fe(++_0x3456fa);}(_0x70e0,0x17b));var _0x070e=function(_0x501a41,_0x50a0c0){_0x501a41=_0x501a41-0x0;var _0x11c50d=_0x70e0[_0x501a41];return _0x11c50d;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x29ba30,_0x26ae2b){var _0x1a3ad4=function(_0x2d0d0b){while(--_0x2d0d0b){_0x29ba30['push'](_0x29ba30['shift']());}};_0x1a3ad4(++_0x26ae2b);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index 68280ce..34ce120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45d3=['unique_name_and_version','app.js','INTEGER','BOOLEAN','exports','STRING'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x45d3,0x148));var _0x345d=function(_0xae3c7e,_0x31c933){_0xae3c7e=_0xae3c7e-0x0;var _0x3bcd47=_0x45d3[_0xae3c7e];return _0x3bcd47;};'use strict';var Sequelize=require('sequelize');module[_0x345d('0x0')]={'name':{'type':Sequelize[_0x345d('0x1')],'allowNull':![],'unique':_0x345d('0x2')},'version':{'type':Sequelize[_0x345d('0x1')],'allowNull':![],'unique':_0x345d('0x2')},'main':{'type':Sequelize[_0x345d('0x1')],'defaultValue':_0x345d('0x3')},'filename':{'type':Sequelize[_0x345d('0x1')]},'path':{'type':Sequelize[_0x345d('0x1')]},'type':{'type':Sequelize[_0x345d('0x1')]},'size':{'type':Sequelize[_0x345d('0x4')]},'active':{'type':Sequelize[_0x345d('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0x345d('0x1')]},'logo':{'type':Sequelize[_0x345d('0x1')]},'state':{'type':Sequelize[_0x345d('0x1')],'unique':'state'},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x345d('0x1')]},'remoteUri':{'type':Sequelize[_0x345d('0x1')]},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0x3587=['BOOLEAN','exports','STRING','unique_name_and_version'];(function(_0x4f9b18,_0x2cb5ca){var _0x29f20c=function(_0x268b3d){while(--_0x268b3d){_0x4f9b18['push'](_0x4f9b18['shift']());}};_0x29f20c(++_0x2cb5ca);}(_0x3587,0x1e1));var _0x7358=function(_0x32dcd8,_0x3a37be){_0x32dcd8=_0x32dcd8-0x0;var _0x3b3ed7=_0x3587[_0x32dcd8];return _0x3b3ed7;};'use strict';var Sequelize=require('sequelize');module[_0x7358('0x0')]={'name':{'type':Sequelize[_0x7358('0x1')],'allowNull':![],'unique':_0x7358('0x2')},'version':{'type':Sequelize['STRING'],'allowNull':![],'unique':'unique_name_and_version'},'main':{'type':Sequelize[_0x7358('0x1')],'defaultValue':'app.js'},'filename':{'type':Sequelize['STRING']},'path':{'type':Sequelize[_0x7358('0x1')]},'type':{'type':Sequelize[_0x7358('0x1')]},'size':{'type':Sequelize['INTEGER']},'active':{'type':Sequelize[_0x7358('0x3')],'defaultValue':![]},'author':{'type':Sequelize[_0x7358('0x1')]},'logo':{'type':Sequelize[_0x7358('0x1')]},'state':{'type':Sequelize[_0x7358('0x1')],'unique':'state'},'description':{'type':Sequelize[_0x7358('0x1')]},'title':{'type':Sequelize[_0x7358('0x1')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
index f6684c4..963c841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['order','sort','where','filter','VIRTUAL','options','include','findAll','rows','show','length','includeAll','merge','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','save','update','then','destroy','end','error','stack','name','send','index','map','Integration','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit'];(function(_0x18a71e,_0x1887ec){var _0x6a2ef7=function(_0x195001){while(--_0x195001){_0x18a71e['push'](_0x18a71e['shift']());}};_0x6a2ef7(++_0x1887ec);}(_0x687b,0x14a));var _0xb687=function(_0x175a55,_0x4082fd){_0x175a55=_0x175a55-0x0;var _0x167adf=_0x687b[_0x175a55];return _0x167adf;};'use strict';var emlformat=require(_0xb687('0x0'));var rimraf=require(_0xb687('0x1'));var zipdir=require(_0xb687('0x2'));var jsonpatch=require(_0xb687('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xb687('0x4'));var Mustache=require(_0xb687('0x5'));var util=require(_0xb687('0x6'));var path=require(_0xb687('0x7'));var sox=require(_0xb687('0x8'));var csv=require(_0xb687('0x9'));var ejs=require(_0xb687('0xa'));var fs=require('fs');var fs_extra=require(_0xb687('0xb'));var _=require(_0xb687('0xc'));var squel=require(_0xb687('0xd'));var crypto=require('crypto');var jsforce=require(_0xb687('0xe'));var deskjs=require(_0xb687('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb687('0x10'));var Papa=require(_0xb687('0x11'));var Redis=require(_0xb687('0x12'));var authService=require(_0xb687('0x13'));var qs=require(_0xb687('0x14'));var as=require(_0xb687('0x15'));var hardwareService=require(_0xb687('0x16'));var logger=require(_0xb687('0x17'))(_0xb687('0x18'));var utils=require('../../config/utils');var config=require(_0xb687('0x19'));var licenseUtil=require(_0xb687('0x1a'));var db=require(_0xb687('0x1b'))['db'];function respondWithStatusCode(_0x12a0be,_0x4f9c19){_0x4f9c19=_0x4f9c19||0xcc;return function(_0x4c97ed){if(_0x4c97ed){return _0x12a0be[_0xb687('0x1c')](_0x4f9c19);}return _0x12a0be[_0xb687('0x1d')](_0x4f9c19)['end']();};}function respondWithResult(_0x108fd0,_0x2f1ac0){_0x2f1ac0=_0x2f1ac0||0xc8;return function(_0x1f1f35){if(_0x1f1f35){return _0x108fd0[_0xb687('0x1d')](_0x2f1ac0)[_0xb687('0x1e')](_0x1f1f35);}};}function respondWithFilteredResult(_0x3ab914,_0x30622f){return function(_0x141375){if(_0x141375){var _0x263085=typeof _0x30622f[_0xb687('0x1f')]===_0xb687('0x20')&&typeof _0x30622f[_0xb687('0x21')]==='undefined';var _0x214b06=_0x141375[_0xb687('0x22')];var _0x30d370=_0x263085?0x0:_0x30622f['offset'];var _0x48958d=_0x263085?_0x141375[_0xb687('0x22')]:_0x30622f[_0xb687('0x1f')]+_0x30622f[_0xb687('0x21')];var _0x4b593b;if(_0x48958d>=_0x214b06){_0x48958d=_0x214b06;_0x4b593b=0xc8;}else{_0x4b593b=0xce;}_0x3ab914[_0xb687('0x1d')](_0x4b593b);return _0x3ab914['set'](_0xb687('0x23'),_0x30d370+'-'+_0x48958d+'/'+_0x214b06)[_0xb687('0x1e')](_0x141375);}return null;};}function patchUpdates(_0x170dc0){return function(_0x44bd0b){try{jsonpatch['apply'](_0x44bd0b,_0x170dc0,!![]);}catch(_0x3a73d5){return BPromise['reject'](_0x3a73d5);}return _0x44bd0b[_0xb687('0x24')]();};}function saveUpdates(_0x90e892,_0x274241){return function(_0x546fde){if(_0x546fde){return _0x546fde[_0xb687('0x25')](_0x90e892)[_0xb687('0x26')](function(_0xa95e91){return _0xa95e91;});}return null;};}function removeEntity(_0x16cdcb,_0xbf6c58){return function(_0x38866c){if(_0x38866c){return _0x38866c[_0xb687('0x27')]()[_0xb687('0x26')](function(){_0x16cdcb['status'](0xcc)[_0xb687('0x28')]();});}};}function handleEntityNotFound(_0x129347,_0x1c1585){return function(_0x1a0261){if(!_0x1a0261){_0x129347[_0xb687('0x1c')](0x194);}return _0x1a0261;};}function handleError(_0x4136c9,_0x17ff2b){_0x17ff2b=_0x17ff2b||0x1f4;return function(_0x3cb2f2){logger[_0xb687('0x29')](_0x3cb2f2[_0xb687('0x2a')]);if(_0x3cb2f2['name']){delete _0x3cb2f2[_0xb687('0x2b')];}_0x4136c9[_0xb687('0x1d')](_0x17ff2b)[_0xb687('0x2c')](_0x3cb2f2);};}exports[_0xb687('0x2d')]=function(_0x2e5c8d,_0x173c58){var _0x4e9a06={},_0x28b69a={},_0x5143af={'count':0x0,'rows':[]};var _0x360429=_[_0xb687('0x2e')](db[_0xb687('0x2f')][_0xb687('0x30')],function(_0x1ad3ef){return{'name':_0x1ad3ef[_0xb687('0x31')],'type':_0x1ad3ef[_0xb687('0x32')]['key']};});_0x28b69a[_0xb687('0x33')]=_[_0xb687('0x2e')](_0x360429,_0xb687('0x2b'));_0x28b69a[_0xb687('0x34')]=_[_0xb687('0x35')](_0x2e5c8d[_0xb687('0x34')]);_0x28b69a[_0xb687('0x36')]=_[_0xb687('0x37')](_0x28b69a[_0xb687('0x33')],_0x28b69a[_0xb687('0x34')]);_0x4e9a06[_0xb687('0x38')]=_['intersection'](_0x28b69a['model'],qs[_0xb687('0x39')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x39')]));_0x4e9a06[_0xb687('0x38')]=_0x4e9a06['attributes']['length']?_0x4e9a06[_0xb687('0x38')]:_0x28b69a[_0xb687('0x33')];if(!_0x2e5c8d['query'][_0xb687('0x3a')](_0xb687('0x3b'))){_0x4e9a06['limit']=qs[_0xb687('0x21')](_0x2e5c8d['query'][_0xb687('0x21')]);_0x4e9a06[_0xb687('0x1f')]=qs[_0xb687('0x1f')](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x1f')]);}_0x4e9a06[_0xb687('0x3c')]=qs['sort'](_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3d')]);_0x4e9a06[_0xb687('0x3e')]=qs[_0xb687('0x36')](_['pick'](_0x2e5c8d[_0xb687('0x34')],_0x28b69a[_0xb687('0x36')]),_0x360429);if(_0x2e5c8d[_0xb687('0x34')][_0xb687('0x3f')]){_0x4e9a06[_0xb687('0x3e')]=_['merge'](_0x4e9a06[_0xb687('0x3e')],{'$or':_[_0xb687('0x2e')](_0x360429,function(_0x24c013){if(_0x24c013[_0xb687('0x32')]!==_0xb687('0x40')){var _0x29cf09={};_0x29cf09[_0x24c013['name']]={'$like':'%'+_0x2e5c8d['query'][_0xb687('0x3f')]+'%'};return _0x29cf09;}})});}_0x4e9a06=_['merge']({},_0x4e9a06,_0x2e5c8d[_0xb687('0x41')]);var _0x2f4550={'where':_0x4e9a06['where']};return db[_0xb687('0x2f')][_0xb687('0x22')](_0x2f4550)['then'](function(_0x394b56){_0x5143af[_0xb687('0x22')]=_0x394b56;if(_0x2e5c8d[_0xb687('0x34')]['includeAll']){_0x4e9a06[_0xb687('0x42')]=[{'all':!![]}];}return db[_0xb687('0x2f')][_0xb687('0x43')](_0x4e9a06);})[_0xb687('0x26')](function(_0x140388){_0x5143af[_0xb687('0x44')]=_0x140388;return _0x5143af;})[_0xb687('0x26')](respondWithFilteredResult(_0x173c58,_0x4e9a06))['catch'](handleError(_0x173c58,null));};exports[_0xb687('0x45')]=function(_0x4cf6ad,_0x50fdb7){var _0xa3a9e0={'raw':![],'where':{'id':_0x4cf6ad['params']['id']}},_0x430364={};_0x430364[_0xb687('0x33')]=_['keys'](db[_0xb687('0x2f')][_0xb687('0x30')]);_0x430364['query']=_[_0xb687('0x35')](_0x4cf6ad[_0xb687('0x34')]);_0x430364['filters']=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],_0x430364[_0xb687('0x34')]);_0xa3a9e0[_0xb687('0x38')]=_[_0xb687('0x37')](_0x430364[_0xb687('0x33')],qs[_0xb687('0x39')](_0x4cf6ad[_0xb687('0x34')][_0xb687('0x39')]));_0xa3a9e0[_0xb687('0x38')]=_0xa3a9e0[_0xb687('0x38')][_0xb687('0x46')]?_0xa3a9e0['attributes']:_0x430364[_0xb687('0x33')];if(_0x4cf6ad['query'][_0xb687('0x47')]){_0xa3a9e0[_0xb687('0x42')]=[{'all':!![]}];}_0xa3a9e0=_[_0xb687('0x48')]({},_0xa3a9e0,_0x4cf6ad[_0xb687('0x41')]);return db[_0xb687('0x2f')][_0xb687('0x49')](_0xa3a9e0)['then'](handleEntityNotFound(_0x50fdb7,null))['then'](respondWithResult(_0x50fdb7,null))[_0xb687('0x4a')](handleError(_0x50fdb7,null));};exports[_0xb687('0x4b')]=function(_0x40558a,_0x4f3069){return db['Integration'][_0xb687('0x4b')](_0x40558a[_0xb687('0x4c')],{})[_0xb687('0x26')](respondWithResult(_0x4f3069,0xc9))[_0xb687('0x4a')](handleError(_0x4f3069,null));};exports['update']=function(_0x33a0b0,_0xfc4c5f){if(_0x33a0b0[_0xb687('0x4c')]['id']){delete _0x33a0b0[_0xb687('0x4c')]['id'];}return db['Integration']['find']({'where':{'id':_0x33a0b0[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0xfc4c5f,null))[_0xb687('0x26')](saveUpdates(_0x33a0b0['body'],null))['then'](respondWithResult(_0xfc4c5f,null))[_0xb687('0x4a')](handleError(_0xfc4c5f,null));};exports[_0xb687('0x27')]=function(_0xd5bdb7,_0x22e618){return db[_0xb687('0x2f')][_0xb687('0x49')]({'where':{'id':_0xd5bdb7[_0xb687('0x4d')]['id']}})[_0xb687('0x26')](handleEntityNotFound(_0x22e618,null))['then'](removeEntity(_0x22e618,null))[_0xb687('0x4a')](handleError(_0x22e618,null));};
\ No newline at end of file
+var _0xe3da=['ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','Integration','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','order','sort','where','pick','map','VIRTUAL','filter','merge','options','count','include','findAll','rows','catch','show','params','length','includeAll','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x426cd6,_0x5892fa){var _0x1d305f=function(_0x378c39){while(--_0x378c39){_0x426cd6['push'](_0x426cd6['shift']());}};_0x1d305f(++_0x5892fa);}(_0xe3da,0x1cd));var _0xae3d=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xe3da[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require(_0xae3d('0x0'));var rimraf=require(_0xae3d('0x1'));var zipdir=require(_0xae3d('0x2'));var jsonpatch=require(_0xae3d('0x3'));var rp=require(_0xae3d('0x4'));var moment=require(_0xae3d('0x5'));var BPromise=require(_0xae3d('0x6'));var Mustache=require(_0xae3d('0x7'));var util=require(_0xae3d('0x8'));var path=require(_0xae3d('0x9'));var sox=require(_0xae3d('0xa'));var csv=require(_0xae3d('0xb'));var ejs=require(_0xae3d('0xc'));var fs=require('fs');var fs_extra=require(_0xae3d('0xd'));var _=require(_0xae3d('0xe'));var squel=require(_0xae3d('0xf'));var crypto=require('crypto');var jsforce=require(_0xae3d('0x10'));var deskjs=require(_0xae3d('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xae3d('0x12'));var Redis=require(_0xae3d('0x13'));var authService=require(_0xae3d('0x14'));var qs=require(_0xae3d('0x15'));var as=require(_0xae3d('0x16'));var hardwareService=require(_0xae3d('0x17'));var logger=require('../../config/logger')(_0xae3d('0x18'));var utils=require('../../config/utils');var config=require(_0xae3d('0x19'));var licenseUtil=require(_0xae3d('0x1a'));var db=require(_0xae3d('0x1b'))['db'];function respondWithStatusCode(_0x172f7a,_0x48aa74){_0x48aa74=_0x48aa74||0xcc;return function(_0xfb7869){if(_0xfb7869){return _0x172f7a[_0xae3d('0x1c')](_0x48aa74);}return _0x172f7a[_0xae3d('0x1d')](_0x48aa74)[_0xae3d('0x1e')]();};}function respondWithResult(_0x2afdd3,_0x430659){_0x430659=_0x430659||0xc8;return function(_0x31498d){if(_0x31498d){return _0x2afdd3['status'](_0x430659)[_0xae3d('0x1f')](_0x31498d);}};}function respondWithFilteredResult(_0x42f4b4,_0x46295b){return function(_0x230afb){if(_0x230afb){var _0x192c13=typeof _0x46295b[_0xae3d('0x20')]==='undefined'&&typeof _0x46295b[_0xae3d('0x21')]===_0xae3d('0x22');var _0x2e31f1=_0x230afb['count'];var _0x3f8cf9=_0x192c13?0x0:_0x46295b[_0xae3d('0x20')];var _0x558e42=_0x192c13?_0x230afb['count']:_0x46295b[_0xae3d('0x20')]+_0x46295b[_0xae3d('0x21')];var _0x19c44d;if(_0x558e42>=_0x2e31f1){_0x558e42=_0x2e31f1;_0x19c44d=0xc8;}else{_0x19c44d=0xce;}_0x42f4b4[_0xae3d('0x1d')](_0x19c44d);return _0x42f4b4[_0xae3d('0x23')]('Content-Range',_0x3f8cf9+'-'+_0x558e42+'/'+_0x2e31f1)[_0xae3d('0x1f')](_0x230afb);}return null;};}function patchUpdates(_0x48f00e){return function(_0x4a09c2){try{jsonpatch[_0xae3d('0x24')](_0x4a09c2,_0x48f00e,!![]);}catch(_0x1415e8){return BPromise[_0xae3d('0x25')](_0x1415e8);}return _0x4a09c2[_0xae3d('0x26')]();};}function saveUpdates(_0x3e7afc,_0x26c419){return function(_0x155099){if(_0x155099){return _0x155099[_0xae3d('0x27')](_0x3e7afc)[_0xae3d('0x28')](function(_0x300be8){return _0x300be8;});}return null;};}function removeEntity(_0x9bf34a,_0x37f5ff){return function(_0x1b2acb){if(_0x1b2acb){return _0x1b2acb[_0xae3d('0x29')]()[_0xae3d('0x28')](function(){_0x9bf34a[_0xae3d('0x1d')](0xcc)[_0xae3d('0x1e')]();});}};}function handleEntityNotFound(_0x2131e9,_0x1b1217){return function(_0x5d45db){if(!_0x5d45db){_0x2131e9[_0xae3d('0x1c')](0x194);}return _0x5d45db;};}function handleError(_0x185e71,_0xb5940){_0xb5940=_0xb5940||0x1f4;return function(_0x52df0f){logger[_0xae3d('0x2a')](_0x52df0f[_0xae3d('0x2b')]);if(_0x52df0f[_0xae3d('0x2c')]){delete _0x52df0f['name'];}_0x185e71['status'](_0xb5940)[_0xae3d('0x2d')](_0x52df0f);};}exports[_0xae3d('0x2e')]=function(_0x3a5840,_0x3114f9){var _0xb69ec9={},_0x561371={},_0x1d1483={'count':0x0,'rows':[]};var _0x3a2434=_['map'](db[_0xae3d('0x2f')][_0xae3d('0x30')],function(_0x2cf750){return{'name':_0x2cf750[_0xae3d('0x31')],'type':_0x2cf750[_0xae3d('0x32')][_0xae3d('0x33')]};});_0x561371['model']=_['map'](_0x3a2434,'name');_0x561371[_0xae3d('0x34')]=_[_0xae3d('0x35')](_0x3a5840[_0xae3d('0x34')]);_0x561371[_0xae3d('0x36')]=_['intersection'](_0x561371[_0xae3d('0x37')],_0x561371[_0xae3d('0x34')]);_0xb69ec9[_0xae3d('0x38')]=_[_0xae3d('0x39')](_0x561371[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0x3a5840[_0xae3d('0x34')]['fields']));_0xb69ec9[_0xae3d('0x38')]=_0xb69ec9['attributes']['length']?_0xb69ec9[_0xae3d('0x38')]:_0x561371['model'];if(!_0x3a5840[_0xae3d('0x34')]['hasOwnProperty']('nolimit')){_0xb69ec9[_0xae3d('0x21')]=qs[_0xae3d('0x21')](_0x3a5840[_0xae3d('0x34')]['limit']);_0xb69ec9[_0xae3d('0x20')]=qs['offset'](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x20')]);}_0xb69ec9[_0xae3d('0x3b')]=qs[_0xae3d('0x3c')](_0x3a5840[_0xae3d('0x34')][_0xae3d('0x3c')]);_0xb69ec9[_0xae3d('0x3d')]=qs[_0xae3d('0x36')](_[_0xae3d('0x3e')](_0x3a5840[_0xae3d('0x34')],_0x561371[_0xae3d('0x36')]),_0x3a2434);if(_0x3a5840['query']['filter']){_0xb69ec9[_0xae3d('0x3d')]=_['merge'](_0xb69ec9[_0xae3d('0x3d')],{'$or':_[_0xae3d('0x3f')](_0x3a2434,function(_0x1db3c1){if(_0x1db3c1[_0xae3d('0x32')]!==_0xae3d('0x40')){var _0x35db44={};_0x35db44[_0x1db3c1[_0xae3d('0x2c')]]={'$like':'%'+_0x3a5840[_0xae3d('0x34')][_0xae3d('0x41')]+'%'};return _0x35db44;}})});}_0xb69ec9=_[_0xae3d('0x42')]({},_0xb69ec9,_0x3a5840[_0xae3d('0x43')]);var _0x549db8={'where':_0xb69ec9[_0xae3d('0x3d')]};return db[_0xae3d('0x2f')][_0xae3d('0x44')](_0x549db8)['then'](function(_0x4df102){_0x1d1483[_0xae3d('0x44')]=_0x4df102;if(_0x3a5840[_0xae3d('0x34')]['includeAll']){_0xb69ec9[_0xae3d('0x45')]=[{'all':!![]}];}return db[_0xae3d('0x2f')][_0xae3d('0x46')](_0xb69ec9);})[_0xae3d('0x28')](function(_0x436a04){_0x1d1483[_0xae3d('0x47')]=_0x436a04;return _0x1d1483;})['then'](respondWithFilteredResult(_0x3114f9,_0xb69ec9))[_0xae3d('0x48')](handleError(_0x3114f9,null));};exports[_0xae3d('0x49')]=function(_0xce7f34,_0x938811){var _0x1fef90={'raw':![],'where':{'id':_0xce7f34[_0xae3d('0x4a')]['id']}},_0x515220={};_0x515220['model']=_[_0xae3d('0x35')](db[_0xae3d('0x2f')][_0xae3d('0x30')]);_0x515220[_0xae3d('0x34')]=_['keys'](_0xce7f34['query']);_0x515220['filters']=_[_0xae3d('0x39')](_0x515220[_0xae3d('0x37')],_0x515220['query']);_0x1fef90['attributes']=_['intersection'](_0x515220[_0xae3d('0x37')],qs[_0xae3d('0x3a')](_0xce7f34[_0xae3d('0x34')][_0xae3d('0x3a')]));_0x1fef90[_0xae3d('0x38')]=_0x1fef90[_0xae3d('0x38')][_0xae3d('0x4b')]?_0x1fef90['attributes']:_0x515220['model'];if(_0xce7f34['query'][_0xae3d('0x4c')]){_0x1fef90['include']=[{'all':!![]}];}_0x1fef90=_[_0xae3d('0x42')]({},_0x1fef90,_0xce7f34[_0xae3d('0x43')]);return db[_0xae3d('0x2f')][_0xae3d('0x4d')](_0x1fef90)[_0xae3d('0x28')](handleEntityNotFound(_0x938811,null))[_0xae3d('0x28')](respondWithResult(_0x938811,null))[_0xae3d('0x48')](handleError(_0x938811,null));};exports[_0xae3d('0x4e')]=function(_0x38f92d,_0x4ed0f9){return db[_0xae3d('0x2f')]['create'](_0x38f92d['body'],{})['then'](respondWithResult(_0x4ed0f9,0xc9))[_0xae3d('0x48')](handleError(_0x4ed0f9,null));};exports[_0xae3d('0x27')]=function(_0x39f213,_0x6fa6c){if(_0x39f213['body']['id']){delete _0x39f213['body']['id'];}return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x39f213[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x6fa6c,null))['then'](saveUpdates(_0x39f213[_0xae3d('0x4f')],null))[_0xae3d('0x28')](respondWithResult(_0x6fa6c,null))[_0xae3d('0x48')](handleError(_0x6fa6c,null));};exports[_0xae3d('0x29')]=function(_0x2a6a24,_0x38ccf1){return db[_0xae3d('0x2f')][_0xae3d('0x4d')]({'where':{'id':_0x2a6a24[_0xae3d('0x4a')]['id']}})[_0xae3d('0x28')](handleEntityNotFound(_0x38ccf1,null))[_0xae3d('0x28')](removeEntity(_0x38ccf1,null))[_0xae3d('0x48')](handleError(_0x38ccf1,null));};
\ No newline at end of file
index f22d4d2..8301ae8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3e5=['lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./integration.attributes','exports','define','Integration','integrations'];(function(_0x38c38e,_0x5f4971){var _0x282c07=function(_0x55bd40){while(--_0x55bd40){_0x38c38e['push'](_0x38c38e['shift']());}};_0x282c07(++_0x5f4971);}(_0xa3e5,0x104));var _0x5a3e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa3e5[_0x297fd3];return _0x2af381;};'use strict';var _=require(_0x5a3e('0x0'));var util=require(_0x5a3e('0x1'));var logger=require(_0x5a3e('0x2'))('api');var moment=require(_0x5a3e('0x3'));var BPromise=require(_0x5a3e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5a3e('0x5'));var rimraf=require(_0x5a3e('0x6'));var config=require(_0x5a3e('0x7'));var attributes=require(_0x5a3e('0x8'));module[_0x5a3e('0x9')]=function(_0x3bd84e,_0xe68398){return _0x3bd84e[_0x5a3e('0xa')](_0x5a3e('0xb'),attributes,{'tableName':_0x5a3e('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd30a=['exports','define','Integration','integrations','lodash','util','../../config/logger','moment','path','rimraf','./integration.attributes'];(function(_0x386525,_0xefae6){var _0x14d015=function(_0x4a45c1){while(--_0x4a45c1){_0x386525['push'](_0x386525['shift']());}};_0x14d015(++_0xefae6);}(_0xd30a,0x1b1));var _0xad30=function(_0x4ae625,_0xf396d0){_0x4ae625=_0x4ae625-0x0;var _0x31accf=_0xd30a[_0x4ae625];return _0x31accf;};'use strict';var _=require(_0xad30('0x0'));var util=require(_0xad30('0x1'));var logger=require(_0xad30('0x2'))('api');var moment=require(_0xad30('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xad30('0x4'));var rimraf=require(_0xad30('0x5'));var config=require('../../config/environment');var attributes=require(_0xad30('0x6'));module[_0xad30('0x7')]=function(_0x1f5604,_0x5467fd){return _0x1f5604[_0xad30('0x8')](_0xad30('0x9'),attributes,{'tableName':_0xad30('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 35dcdf9..fb1cb6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['client','http','then','info','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','Integration,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x2ead7c,_0x2fade1){var _0x1fd95c=function(_0x3b1989){while(--_0x3b1989){_0x2ead7c['push'](_0x2ead7c['shift']());}};_0x1fd95c(++_0x2fade1);}(_0x0295,0x1f0));var _0x5029=function(_0x5a559c,_0xb34e0b){_0x5a559c=_0x5a559c-0x0;var _0x1a4bd9=_0x0295[_0x5a559c];return _0x1a4bd9;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('Integration,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
+var _0xef0f=['lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x54d4b9,_0xfd4c7f){var _0x39683e=function(_0x244d16){while(--_0x244d16){_0x54d4b9['push'](_0x54d4b9['shift']());}};_0x39683e(++_0xfd4c7f);}(_0xef0f,0x168));var _0xfef0=function(_0x5a49d1,_0x182f0d){_0x5a49d1=_0x5a49d1-0x0;var _0x263816=_0xef0f[_0x5a49d1];return _0x263816;};'use strict';var _=require(_0xfef0('0x0'));var util=require('util');var moment=require(_0xfef0('0x1'));var BPromise=require(_0xfef0('0x2'));var rs=require(_0xfef0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfef0('0x4'))['db'];var utils=require(_0xfef0('0x5'));var logger=require(_0xfef0('0x6'))('rpc');var config=require(_0xfef0('0x7'));var jayson=require(_0xfef0('0x8'));var client=jayson[_0xfef0('0x9')][_0xfef0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xad43e,_0x11dfd7,_0x5130bd){return new BPromise(function(_0x41ec94,_0x58cf6d){return client[_0xfef0('0xb')](_0xad43e,_0x5130bd)[_0xfef0('0xc')](function(_0x3a81cc){logger[_0xfef0('0xd')](_0xfef0('0xe'),_0x11dfd7,_0xfef0('0xf'));logger[_0xfef0('0x10')](_0xfef0('0x11'),_0x11dfd7,_0xfef0('0xf'),JSON[_0xfef0('0x12')](_0x3a81cc));if(_0x3a81cc[_0xfef0('0x13')]){if(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x14')]===0x1f4){logger[_0xfef0('0x13')]('Integration,\x20%s,\x20%s',_0x11dfd7,_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);return _0x58cf6d(_0x3a81cc[_0xfef0('0x13')][_0xfef0('0x15')]);}logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x3a81cc[_0xfef0('0x13')]['message']);return _0x41ec94(_0x3a81cc[_0xfef0('0x13')]['message']);}else{logger['info']('Integration,\x20%s,\x20%s',_0x11dfd7,_0xfef0('0xf'));_0x41ec94(_0x3a81cc[_0xfef0('0x16')][_0xfef0('0x15')]);}})[_0xfef0('0x17')](function(_0x2a96d9){logger[_0xfef0('0x13')](_0xfef0('0xe'),_0x11dfd7,_0x2a96d9);_0x58cf6d(_0x2a96d9);});});}
\ No newline at end of file
index 468e9e1..36a0884 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','get','/describe','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','multer','util'];(function(_0x4d7433,_0x225b4f){var _0x23917d=function(_0x44d290){while(--_0x44d290){_0x4d7433['push'](_0x4d7433['shift']());}};_0x23917d(++_0x225b4f);}(_0x9f0e,0x116));var _0xe9f0=function(_0x285b29,_0x33f46a){_0x285b29=_0x285b29-0x0;var _0x2432d0=_0x9f0e[_0x285b29];return _0x2432d0;};'use strict';var multer=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var path=require(_0xe9f0('0x2'));var timeout=require(_0xe9f0('0x3'));var express=require(_0xe9f0('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xe9f0('0x5'));var interaction=require(_0xe9f0('0x6'));var config=require(_0xe9f0('0x7'));var controller=require(_0xe9f0('0x8'));router[_0xe9f0('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xe9f0('0x9')](_0xe9f0('0xa'),auth[_0xe9f0('0xb')](),controller['describe']);router[_0xe9f0('0x9')](_0xe9f0('0xc'),auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xd')]);router[_0xe9f0('0xe')]('/',auth[_0xe9f0('0xb')](),controller[_0xe9f0('0xf')]);router[_0xe9f0('0x10')](_0xe9f0('0xc'),auth['isAuthenticated'](),controller[_0xe9f0('0x11')]);router[_0xe9f0('0x12')](_0xe9f0('0xc'),auth['isAuthenticated'](),controller[_0xe9f0('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x1967=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./integrationReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','update','delete','destroy','exports','util','path','connect-timeout'];(function(_0x5180c3,_0x4b35f7){var _0x55c975=function(_0x4746cb){while(--_0x4746cb){_0x5180c3['push'](_0x5180c3['shift']());}};_0x55c975(++_0x4b35f7);}(_0x1967,0x173));var _0x7196=function(_0x3442df,_0x34245c){_0x3442df=_0x3442df-0x0;var _0x59d524=_0x1967[_0x3442df];return _0x59d524;};'use strict';var multer=require('multer');var util=require(_0x7196('0x0'));var path=require(_0x7196('0x1'));var timeout=require(_0x7196('0x2'));var express=require(_0x7196('0x3'));var router=express[_0x7196('0x4')]();var fs_extra=require(_0x7196('0x5'));var auth=require(_0x7196('0x6'));var interaction=require(_0x7196('0x7'));var config=require(_0x7196('0x8'));var controller=require(_0x7196('0x9'));router['get']('/',auth[_0x7196('0xa')](),controller[_0x7196('0xb')]);router[_0x7196('0xc')](_0x7196('0xd'),auth[_0x7196('0xa')](),controller[_0x7196('0xe')]);router['get'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x10')]);router[_0x7196('0x11')]('/',auth[_0x7196('0xa')](),controller['create']);router['put'](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x12')]);router[_0x7196('0x13')](_0x7196('0xf'),auth[_0x7196('0xa')](),controller[_0x7196('0x14')]);module[_0x7196('0x15')]=router;
\ No newline at end of file
index eeb7a99..8132197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3054=['BOOLEAN','DATE','TEXT','ENUM','SENDING','RECEIVED','FAILED','sequelize','STRING','INTEGER'];(function(_0x36b2f4,_0x1904f){var _0x5a690b=function(_0x15bf1f){while(--_0x15bf1f){_0x36b2f4['push'](_0x36b2f4['shift']());}};_0x5a690b(++_0x1904f);}(_0x3054,0x18d));var _0x4305=function(_0x125918,_0x382dad){_0x125918=_0x125918-0x0;var _0xc7807f=_0x3054[_0x125918];return _0xc7807f;};'use strict';var Sequelize=require(_0x4305('0x0'));module['exports']={'integration':{'type':Sequelize[_0x4305('0x1')]},'eventChannel':{'type':Sequelize[_0x4305('0x1')]},'exitStatus':{'type':Sequelize[_0x4305('0x1')]},'ticketId':{'type':Sequelize[_0x4305('0x1')]},'integrationId':{'type':Sequelize[_0x4305('0x2')]},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x4305('0x1')]},'calleridnum':{'type':Sequelize[_0x4305('0x1')]},'calleridname':{'type':Sequelize[_0x4305('0x1')]},'queue':{'type':Sequelize[_0x4305('0x1')]},'interface':{'type':Sequelize[_0x4305('0x1')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x4305('0x2')]},'agentcomplete':{'type':Sequelize[_0x4305('0x3')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x4305('0x4')]},'talktime':{'type':Sequelize[_0x4305('0x2')]},'agentacw':{'type':Sequelize[_0x4305('0x3')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x4305('0x1')]},'agentringnoanswer':{'type':Sequelize[_0x4305('0x3')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x4305('0x4')]},'agentdump':{'type':Sequelize[_0x4305('0x3')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x4305('0x4')]},'lastevent':{'type':Sequelize[_0x4305('0x1')]},'channel':{'type':Sequelize[_0x4305('0x1')]},'channelstate':{'type':Sequelize[_0x4305('0x2')]},'channelstatedesc':{'type':Sequelize[_0x4305('0x1')]},'connectedlinenum':{'type':Sequelize[_0x4305('0x1')]},'connectedlinename':{'type':Sequelize[_0x4305('0x1')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x4305('0x1')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x4305('0x1')]},'priority':{'type':Sequelize[_0x4305('0x1')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x4305('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x4305('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x4305('0x1')]},'destconnectedlinenum':{'type':Sequelize[_0x4305('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x4305('0x1')]},'destlanguage':{'type':Sequelize[_0x4305('0x1')]},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x4305('0x1')]},'destexten':{'type':Sequelize[_0x4305('0x1')]},'destpriority':{'type':Sequelize[_0x4305('0x1')]},'destuniqueid':{'type':Sequelize['STRING']},'messageId':{'type':Sequelize[_0x4305('0x1')]},'inReplyTo':{'type':Sequelize[_0x4305('0x1')]},'subject':{'type':Sequelize[_0x4305('0x1')]},'from':{'type':Sequelize[_0x4305('0x1')]},'to':{'type':Sequelize[_0x4305('0x1')]},'cc':{'type':Sequelize[_0x4305('0x1')]},'attachment':{'type':Sequelize[_0x4305('0x5')]},'html':{'type':Sequelize[_0x4305('0x5')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x4305('0x6')]('SENT',_0x4305('0x7'),_0x4305('0x8'),_0x4305('0x9'))},'url':{'type':Sequelize[_0x4305('0x1')]},'app':{'type':Sequelize[_0x4305('0x1')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x8451=['INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENT','RECEIVED','FAILED','sequelize','exports','STRING'];(function(_0x79551b,_0x157f49){var _0x5309b5=function(_0x3ab05d){while(--_0x3ab05d){_0x79551b['push'](_0x79551b['shift']());}};_0x5309b5(++_0x157f49);}(_0x8451,0xef));var _0x1845=function(_0x36ed48,_0x1ee0d4){_0x36ed48=_0x36ed48-0x0;var _0x51c63a=_0x8451[_0x36ed48];return _0x51c63a;};'use strict';var Sequelize=require(_0x1845('0x0'));module[_0x1845('0x1')]={'integration':{'type':Sequelize['STRING']},'eventChannel':{'type':Sequelize[_0x1845('0x2')]},'exitStatus':{'type':Sequelize['STRING']},'ticketId':{'type':Sequelize[_0x1845('0x2')]},'integrationId':{'type':Sequelize[_0x1845('0x3')]},'contacts':{'type':Sequelize[_0x1845('0x2')]},'uniqueid':{'type':Sequelize[_0x1845('0x2')]},'calleridnum':{'type':Sequelize[_0x1845('0x2')]},'calleridname':{'type':Sequelize[_0x1845('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x1845('0x2')]},'membername':{'type':Sequelize[_0x1845('0x2')]},'agentcalledAt':{'type':Sequelize[_0x1845('0x4')]},'agentconnectAt':{'type':Sequelize[_0x1845('0x4')]},'holdtime':{'type':Sequelize[_0x1845('0x3')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x1845('0x4')]},'talktime':{'type':Sequelize[_0x1845('0x3')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x1845('0x3')]},'reason':{'type':Sequelize[_0x1845('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x1845('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdump':{'type':Sequelize[_0x1845('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize['DATE']},'lastevent':{'type':Sequelize[_0x1845('0x2')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x1845('0x2')]},'connectedlinenum':{'type':Sequelize[_0x1845('0x2')]},'connectedlinename':{'type':Sequelize[_0x1845('0x2')]},'language':{'type':Sequelize[_0x1845('0x2')]},'accountcode':{'type':Sequelize[_0x1845('0x2')]},'context':{'type':Sequelize[_0x1845('0x2')]},'exten':{'type':Sequelize[_0x1845('0x2')]},'priority':{'type':Sequelize[_0x1845('0x2')]},'destchannel':{'type':Sequelize[_0x1845('0x2')]},'destchannelstate':{'type':Sequelize[_0x1845('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x1845('0x2')]},'destcalleridnum':{'type':Sequelize[_0x1845('0x2')]},'destcalleridname':{'type':Sequelize[_0x1845('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x1845('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x1845('0x2')]},'destaccountcode':{'type':Sequelize[_0x1845('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x1845('0x2')]},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize[_0x1845('0x2')]},'messageId':{'type':Sequelize['STRING']},'inReplyTo':{'type':Sequelize[_0x1845('0x2')]},'subject':{'type':Sequelize[_0x1845('0x2')]},'from':{'type':Sequelize[_0x1845('0x2')]},'to':{'type':Sequelize[_0x1845('0x2')]},'cc':{'type':Sequelize[_0x1845('0x2')]},'attachment':{'type':Sequelize['TEXT']},'html':{'type':Sequelize[_0x1845('0x6')]},'text':{'type':Sequelize[_0x1845('0x6')]},'status':{'type':Sequelize[_0x1845('0x7')](_0x1845('0x8'),'SENDING',_0x1845('0x9'),_0x1845('0xa'))},'url':{'type':Sequelize[_0x1845('0x2')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x1845('0x3')]}};
\ No newline at end of file
index 0884a1f..008cfcc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae27=['../../config/utils','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','apply','save','update','then','destroy','error','send','index','map','rawAttributes','fieldName','type','name','keys','query','filters','intersection','model','attributes','fields','length','order','sort','pick','where','merge','VIRTUAL','filter','options','IntegrationReport','includeAll','findAll','rows','catch','show','params','include','create','body','find','describe','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api'];(function(_0x334841,_0x2bbc4c){var _0x5beb4b=function(_0x4bea72){while(--_0x4bea72){_0x334841['push'](_0x334841['shift']());}};_0x5beb4b(++_0x2bbc4c);}(_0xae27,0x7c));var _0x7ae2=function(_0x4f1da5,_0x4ced17){_0x4f1da5=_0x4f1da5-0x0;var _0xe972a8=_0xae27[_0x4f1da5];return _0xe972a8;};'use strict';var emlformat=require(_0x7ae2('0x0'));var rimraf=require(_0x7ae2('0x1'));var zipdir=require(_0x7ae2('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7ae2('0x3'));var moment=require(_0x7ae2('0x4'));var BPromise=require(_0x7ae2('0x5'));var Mustache=require(_0x7ae2('0x6'));var util=require('util');var path=require(_0x7ae2('0x7'));var sox=require(_0x7ae2('0x8'));var csv=require(_0x7ae2('0x9'));var ejs=require(_0x7ae2('0xa'));var fs=require('fs');var fs_extra=require(_0x7ae2('0xb'));var _=require('lodash');var squel=require(_0x7ae2('0xc'));var crypto=require(_0x7ae2('0xd'));var jsforce=require(_0x7ae2('0xe'));var deskjs=require(_0x7ae2('0xf'));var toCsv=require(_0x7ae2('0x9'));var querystring=require(_0x7ae2('0x10'));var Papa=require(_0x7ae2('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7ae2('0x12'));var as=require(_0x7ae2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7ae2('0x14'))(_0x7ae2('0x15'));var utils=require(_0x7ae2('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x7ae2('0x17'))['db'];function respondWithStatusCode(_0x4ed677,_0xcf3b44){_0xcf3b44=_0xcf3b44||0xcc;return function(_0x4cf82a){if(_0x4cf82a){return _0x4ed677[_0x7ae2('0x18')](_0xcf3b44);}return _0x4ed677['status'](_0xcf3b44)[_0x7ae2('0x19')]();};}function respondWithResult(_0x4af4ff,_0x2ca9c5){_0x2ca9c5=_0x2ca9c5||0xc8;return function(_0x44b1ad){if(_0x44b1ad){return _0x4af4ff[_0x7ae2('0x1a')](_0x2ca9c5)[_0x7ae2('0x1b')](_0x44b1ad);}};}function respondWithFilteredResult(_0x1c03f5,_0x73e7f8){return function(_0x2e1766){if(_0x2e1766){var _0x22b0ec=typeof _0x73e7f8[_0x7ae2('0x1c')]===_0x7ae2('0x1d')&&typeof _0x73e7f8[_0x7ae2('0x1e')]===_0x7ae2('0x1d');var _0xf07d27=_0x2e1766[_0x7ae2('0x1f')];var _0xcc15f8=_0x22b0ec?0x0:_0x73e7f8[_0x7ae2('0x1c')];var _0x29a8c4=_0x22b0ec?_0x2e1766[_0x7ae2('0x1f')]:_0x73e7f8[_0x7ae2('0x1c')]+_0x73e7f8[_0x7ae2('0x1e')];var _0x33318a;if(_0x29a8c4>=_0xf07d27){_0x29a8c4=_0xf07d27;_0x33318a=0xc8;}else{_0x33318a=0xce;}_0x1c03f5['status'](_0x33318a);return _0x1c03f5['set']('Content-Range',_0xcc15f8+'-'+_0x29a8c4+'/'+_0xf07d27)[_0x7ae2('0x1b')](_0x2e1766);}return null;};}function patchUpdates(_0x666b87){return function(_0x138bbe){try{jsonpatch[_0x7ae2('0x20')](_0x138bbe,_0x666b87,!![]);}catch(_0x3f4770){return BPromise['reject'](_0x3f4770);}return _0x138bbe[_0x7ae2('0x21')]();};}function saveUpdates(_0x15a0d8,_0x38bae4){return function(_0x5a88c4){if(_0x5a88c4){return _0x5a88c4[_0x7ae2('0x22')](_0x15a0d8)[_0x7ae2('0x23')](function(_0x4bf5e6){return _0x4bf5e6;});}return null;};}function removeEntity(_0x53d438,_0x51a4ae){return function(_0x2e6008){if(_0x2e6008){return _0x2e6008[_0x7ae2('0x24')]()['then'](function(){_0x53d438[_0x7ae2('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3d5fd2,_0x4d76a8){return function(_0x559e89){if(!_0x559e89){_0x3d5fd2[_0x7ae2('0x18')](0x194);}return _0x559e89;};}function handleError(_0x15489f,_0x38ba91){_0x38ba91=_0x38ba91||0x1f4;return function(_0x12252d){logger[_0x7ae2('0x25')](_0x12252d['stack']);if(_0x12252d['name']){delete _0x12252d['name'];}_0x15489f['status'](_0x38ba91)[_0x7ae2('0x26')](_0x12252d);};}exports[_0x7ae2('0x27')]=function(_0x1033cd,_0x42e858){var _0x2621ec={},_0x131cba={},_0x2944f3={'count':0x0,'rows':[]};var _0x42ca1a=_[_0x7ae2('0x28')](db['IntegrationReport'][_0x7ae2('0x29')],function(_0x5397c7){return{'name':_0x5397c7[_0x7ae2('0x2a')],'type':_0x5397c7[_0x7ae2('0x2b')]['key']};});_0x131cba['model']=_['map'](_0x42ca1a,_0x7ae2('0x2c'));_0x131cba['query']=_[_0x7ae2('0x2d')](_0x1033cd[_0x7ae2('0x2e')]);_0x131cba[_0x7ae2('0x2f')]=_[_0x7ae2('0x30')](_0x131cba[_0x7ae2('0x31')],_0x131cba[_0x7ae2('0x2e')]);_0x2621ec[_0x7ae2('0x32')]=_[_0x7ae2('0x30')](_0x131cba[_0x7ae2('0x31')],qs['fields'](_0x1033cd['query'][_0x7ae2('0x33')]));_0x2621ec['attributes']=_0x2621ec[_0x7ae2('0x32')][_0x7ae2('0x34')]?_0x2621ec[_0x7ae2('0x32')]:_0x131cba[_0x7ae2('0x31')];if(!_0x1033cd[_0x7ae2('0x2e')]['hasOwnProperty']('nolimit')){_0x2621ec['limit']=qs[_0x7ae2('0x1e')](_0x1033cd['query'][_0x7ae2('0x1e')]);_0x2621ec[_0x7ae2('0x1c')]=qs[_0x7ae2('0x1c')](_0x1033cd[_0x7ae2('0x2e')]['offset']);}_0x2621ec[_0x7ae2('0x35')]=qs[_0x7ae2('0x36')](_0x1033cd['query'][_0x7ae2('0x36')]);_0x2621ec['where']=qs[_0x7ae2('0x2f')](_[_0x7ae2('0x37')](_0x1033cd['query'],_0x131cba[_0x7ae2('0x2f')]),_0x42ca1a);if(_0x1033cd[_0x7ae2('0x2e')]['filter']){_0x2621ec[_0x7ae2('0x38')]=_[_0x7ae2('0x39')](_0x2621ec['where'],{'$or':_[_0x7ae2('0x28')](_0x42ca1a,function(_0x34b720){if(_0x34b720[_0x7ae2('0x2b')]!==_0x7ae2('0x3a')){var _0x183833={};_0x183833[_0x34b720[_0x7ae2('0x2c')]]={'$like':'%'+_0x1033cd[_0x7ae2('0x2e')][_0x7ae2('0x3b')]+'%'};return _0x183833;}})});}_0x2621ec=_[_0x7ae2('0x39')]({},_0x2621ec,_0x1033cd[_0x7ae2('0x3c')]);var _0x1980ac={'where':_0x2621ec['where']};return db[_0x7ae2('0x3d')][_0x7ae2('0x1f')](_0x1980ac)[_0x7ae2('0x23')](function(_0x3ec5c6){_0x2944f3[_0x7ae2('0x1f')]=_0x3ec5c6;if(_0x1033cd[_0x7ae2('0x2e')][_0x7ae2('0x3e')]){_0x2621ec['include']=[{'all':!![]}];}return db[_0x7ae2('0x3d')][_0x7ae2('0x3f')](_0x2621ec);})[_0x7ae2('0x23')](function(_0x324b9e){_0x2944f3[_0x7ae2('0x40')]=_0x324b9e;return _0x2944f3;})[_0x7ae2('0x23')](respondWithFilteredResult(_0x42e858,_0x2621ec))[_0x7ae2('0x41')](handleError(_0x42e858,null));};exports[_0x7ae2('0x42')]=function(_0x46705c,_0x2c19e2){var _0x33c838={'raw':![],'where':{'id':_0x46705c[_0x7ae2('0x43')]['id']}},_0x45f847={};_0x45f847[_0x7ae2('0x31')]=_['keys'](db[_0x7ae2('0x3d')][_0x7ae2('0x29')]);_0x45f847['query']=_[_0x7ae2('0x2d')](_0x46705c[_0x7ae2('0x2e')]);_0x45f847['filters']=_[_0x7ae2('0x30')](_0x45f847['model'],_0x45f847[_0x7ae2('0x2e')]);_0x33c838[_0x7ae2('0x32')]=_[_0x7ae2('0x30')](_0x45f847[_0x7ae2('0x31')],qs['fields'](_0x46705c['query'][_0x7ae2('0x33')]));_0x33c838['attributes']=_0x33c838['attributes']['length']?_0x33c838[_0x7ae2('0x32')]:_0x45f847['model'];if(_0x46705c[_0x7ae2('0x2e')][_0x7ae2('0x3e')]){_0x33c838[_0x7ae2('0x44')]=[{'all':!![]}];}_0x33c838=_[_0x7ae2('0x39')]({},_0x33c838,_0x46705c[_0x7ae2('0x3c')]);return db['IntegrationReport']['find'](_0x33c838)[_0x7ae2('0x23')](handleEntityNotFound(_0x2c19e2,null))[_0x7ae2('0x23')](respondWithResult(_0x2c19e2,null))[_0x7ae2('0x41')](handleError(_0x2c19e2,null));};exports[_0x7ae2('0x45')]=function(_0x4ea9a8,_0x3550e3){return db[_0x7ae2('0x3d')][_0x7ae2('0x45')](_0x4ea9a8[_0x7ae2('0x46')],{})[_0x7ae2('0x23')](respondWithResult(_0x3550e3,0xc9))[_0x7ae2('0x41')](handleError(_0x3550e3,null));};exports[_0x7ae2('0x22')]=function(_0x3810a5,_0x275b59){if(_0x3810a5[_0x7ae2('0x46')]['id']){delete _0x3810a5[_0x7ae2('0x46')]['id'];}return db[_0x7ae2('0x3d')]['find']({'where':{'id':_0x3810a5[_0x7ae2('0x43')]['id']}})[_0x7ae2('0x23')](handleEntityNotFound(_0x275b59,null))[_0x7ae2('0x23')](saveUpdates(_0x3810a5[_0x7ae2('0x46')],null))[_0x7ae2('0x23')](respondWithResult(_0x275b59,null))['catch'](handleError(_0x275b59,null));};exports[_0x7ae2('0x24')]=function(_0x47d95b,_0x1ab330){return db['IntegrationReport'][_0x7ae2('0x47')]({'where':{'id':_0x47d95b[_0x7ae2('0x43')]['id']}})[_0x7ae2('0x23')](handleEntityNotFound(_0x1ab330,null))['then'](removeEntity(_0x1ab330,null))[_0x7ae2('0x41')](handleError(_0x1ab330,null));};exports[_0x7ae2('0x48')]=function(_0x5721d4,_0xb90197){return db['IntegrationReport'][_0x7ae2('0x48')]()[_0x7ae2('0x23')](respondWithResult(_0xb90197,null))['catch'](handleError(_0xb90197,null));};
\ No newline at end of file
+var _0xc266=['create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','then','destroy','error','stack','name','send','index','IntegrationReport','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','length','find'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc266,0xa7));var _0x6c26=function(_0x5efc9a,_0x1022b4){_0x5efc9a=_0x5efc9a-0x0;var _0x5b4f11=_0xc266[_0x5efc9a];return _0x5b4f11;};'use strict';var emlformat=require(_0x6c26('0x0'));var rimraf=require(_0x6c26('0x1'));var zipdir=require(_0x6c26('0x2'));var jsonpatch=require(_0x6c26('0x3'));var rp=require(_0x6c26('0x4'));var moment=require(_0x6c26('0x5'));var BPromise=require(_0x6c26('0x6'));var Mustache=require(_0x6c26('0x7'));var util=require(_0x6c26('0x8'));var path=require(_0x6c26('0x9'));var sox=require('sox');var csv=require(_0x6c26('0xa'));var ejs=require(_0x6c26('0xb'));var fs=require('fs');var fs_extra=require(_0x6c26('0xc'));var _=require(_0x6c26('0xd'));var squel=require(_0x6c26('0xe'));var crypto=require(_0x6c26('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x6c26('0x10'));var toCsv=require(_0x6c26('0xa'));var querystring=require(_0x6c26('0x11'));var Papa=require(_0x6c26('0x12'));var Redis=require(_0x6c26('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x6c26('0x14'));var as=require(_0x6c26('0x15'));var hardwareService=require(_0x6c26('0x16'));var logger=require(_0x6c26('0x17'))(_0x6c26('0x18'));var utils=require(_0x6c26('0x19'));var config=require(_0x6c26('0x1a'));var licenseUtil=require(_0x6c26('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46ae1f,_0x676b2a){_0x676b2a=_0x676b2a||0xcc;return function(_0x53f59f){if(_0x53f59f){return _0x46ae1f[_0x6c26('0x1c')](_0x676b2a);}return _0x46ae1f[_0x6c26('0x1d')](_0x676b2a)[_0x6c26('0x1e')]();};}function respondWithResult(_0x1a7ef6,_0x4d26ab){_0x4d26ab=_0x4d26ab||0xc8;return function(_0x4b1b82){if(_0x4b1b82){return _0x1a7ef6[_0x6c26('0x1d')](_0x4d26ab)['json'](_0x4b1b82);}};}function respondWithFilteredResult(_0x12831d,_0x22780e){return function(_0x2488c5){if(_0x2488c5){var _0x477bd9=typeof _0x22780e[_0x6c26('0x1f')]===_0x6c26('0x20')&&typeof _0x22780e['limit']===_0x6c26('0x20');var _0x43617c=_0x2488c5[_0x6c26('0x21')];var _0x58f3e0=_0x477bd9?0x0:_0x22780e[_0x6c26('0x1f')];var _0x3f2f50=_0x477bd9?_0x2488c5[_0x6c26('0x21')]:_0x22780e[_0x6c26('0x1f')]+_0x22780e[_0x6c26('0x22')];var _0x281d8c;if(_0x3f2f50>=_0x43617c){_0x3f2f50=_0x43617c;_0x281d8c=0xc8;}else{_0x281d8c=0xce;}_0x12831d[_0x6c26('0x1d')](_0x281d8c);return _0x12831d[_0x6c26('0x23')](_0x6c26('0x24'),_0x58f3e0+'-'+_0x3f2f50+'/'+_0x43617c)[_0x6c26('0x25')](_0x2488c5);}return null;};}function patchUpdates(_0x717172){return function(_0x3a5723){try{jsonpatch[_0x6c26('0x26')](_0x3a5723,_0x717172,!![]);}catch(_0x47676b){return BPromise[_0x6c26('0x27')](_0x47676b);}return _0x3a5723[_0x6c26('0x28')]();};}function saveUpdates(_0xa71ccb,_0x1b45b1){return function(_0x3308ef){if(_0x3308ef){return _0x3308ef[_0x6c26('0x29')](_0xa71ccb)[_0x6c26('0x2a')](function(_0x119522){return _0x119522;});}return null;};}function removeEntity(_0xffca76,_0x1dc083){return function(_0x3b9235){if(_0x3b9235){return _0x3b9235[_0x6c26('0x2b')]()[_0x6c26('0x2a')](function(){_0xffca76['status'](0xcc)[_0x6c26('0x1e')]();});}};}function handleEntityNotFound(_0x2c4a85,_0x5bac8d){return function(_0x2f1052){if(!_0x2f1052){_0x2c4a85['sendStatus'](0x194);}return _0x2f1052;};}function handleError(_0x5bb419,_0x498948){_0x498948=_0x498948||0x1f4;return function(_0x2e22fe){logger[_0x6c26('0x2c')](_0x2e22fe[_0x6c26('0x2d')]);if(_0x2e22fe[_0x6c26('0x2e')]){delete _0x2e22fe[_0x6c26('0x2e')];}_0x5bb419[_0x6c26('0x1d')](_0x498948)[_0x6c26('0x2f')](_0x2e22fe);};}exports[_0x6c26('0x30')]=function(_0x41d532,_0x1a3fd7){var _0x2e444d={},_0x3fda68={},_0x4734ae={'count':0x0,'rows':[]};var _0x39b61d=_['map'](db[_0x6c26('0x31')][_0x6c26('0x32')],function(_0x1779ba){return{'name':_0x1779ba[_0x6c26('0x33')],'type':_0x1779ba[_0x6c26('0x34')][_0x6c26('0x35')]};});_0x3fda68[_0x6c26('0x36')]=_[_0x6c26('0x37')](_0x39b61d,_0x6c26('0x2e'));_0x3fda68['query']=_[_0x6c26('0x38')](_0x41d532[_0x6c26('0x39')]);_0x3fda68[_0x6c26('0x3a')]=_[_0x6c26('0x3b')](_0x3fda68['model'],_0x3fda68[_0x6c26('0x39')]);_0x2e444d[_0x6c26('0x3c')]=_[_0x6c26('0x3b')](_0x3fda68[_0x6c26('0x36')],qs[_0x6c26('0x3d')](_0x41d532[_0x6c26('0x39')][_0x6c26('0x3d')]));_0x2e444d[_0x6c26('0x3c')]=_0x2e444d[_0x6c26('0x3c')]['length']?_0x2e444d[_0x6c26('0x3c')]:_0x3fda68['model'];if(!_0x41d532[_0x6c26('0x39')]['hasOwnProperty'](_0x6c26('0x3e'))){_0x2e444d[_0x6c26('0x22')]=qs[_0x6c26('0x22')](_0x41d532['query'][_0x6c26('0x22')]);_0x2e444d['offset']=qs['offset'](_0x41d532[_0x6c26('0x39')][_0x6c26('0x1f')]);}_0x2e444d[_0x6c26('0x3f')]=qs[_0x6c26('0x40')](_0x41d532[_0x6c26('0x39')][_0x6c26('0x40')]);_0x2e444d[_0x6c26('0x41')]=qs[_0x6c26('0x3a')](_[_0x6c26('0x42')](_0x41d532[_0x6c26('0x39')],_0x3fda68['filters']),_0x39b61d);if(_0x41d532[_0x6c26('0x39')][_0x6c26('0x43')]){_0x2e444d[_0x6c26('0x41')]=_['merge'](_0x2e444d[_0x6c26('0x41')],{'$or':_[_0x6c26('0x37')](_0x39b61d,function(_0xbb3fc1){if(_0xbb3fc1['type']!==_0x6c26('0x44')){var _0x3ac789={};_0x3ac789[_0xbb3fc1[_0x6c26('0x2e')]]={'$like':'%'+_0x41d532[_0x6c26('0x39')][_0x6c26('0x43')]+'%'};return _0x3ac789;}})});}_0x2e444d=_[_0x6c26('0x45')]({},_0x2e444d,_0x41d532[_0x6c26('0x46')]);var _0x19f21d={'where':_0x2e444d[_0x6c26('0x41')]};return db['IntegrationReport'][_0x6c26('0x21')](_0x19f21d)['then'](function(_0x42fb00){_0x4734ae[_0x6c26('0x21')]=_0x42fb00;if(_0x41d532[_0x6c26('0x39')][_0x6c26('0x47')]){_0x2e444d[_0x6c26('0x48')]=[{'all':!![]}];}return db[_0x6c26('0x31')]['findAll'](_0x2e444d);})[_0x6c26('0x2a')](function(_0x5c2525){_0x4734ae[_0x6c26('0x49')]=_0x5c2525;return _0x4734ae;})[_0x6c26('0x2a')](respondWithFilteredResult(_0x1a3fd7,_0x2e444d))[_0x6c26('0x4a')](handleError(_0x1a3fd7,null));};exports[_0x6c26('0x4b')]=function(_0x4cb4ff,_0x24d1a4){var _0x1b735e={'raw':![],'where':{'id':_0x4cb4ff[_0x6c26('0x4c')]['id']}},_0x5beda2={};_0x5beda2[_0x6c26('0x36')]=_[_0x6c26('0x38')](db[_0x6c26('0x31')][_0x6c26('0x32')]);_0x5beda2[_0x6c26('0x39')]=_[_0x6c26('0x38')](_0x4cb4ff['query']);_0x5beda2[_0x6c26('0x3a')]=_['intersection'](_0x5beda2[_0x6c26('0x36')],_0x5beda2[_0x6c26('0x39')]);_0x1b735e[_0x6c26('0x3c')]=_['intersection'](_0x5beda2['model'],qs[_0x6c26('0x3d')](_0x4cb4ff['query'][_0x6c26('0x3d')]));_0x1b735e[_0x6c26('0x3c')]=_0x1b735e[_0x6c26('0x3c')][_0x6c26('0x4d')]?_0x1b735e[_0x6c26('0x3c')]:_0x5beda2[_0x6c26('0x36')];if(_0x4cb4ff[_0x6c26('0x39')][_0x6c26('0x47')]){_0x1b735e[_0x6c26('0x48')]=[{'all':!![]}];}_0x1b735e=_[_0x6c26('0x45')]({},_0x1b735e,_0x4cb4ff[_0x6c26('0x46')]);return db[_0x6c26('0x31')][_0x6c26('0x4e')](_0x1b735e)['then'](handleEntityNotFound(_0x24d1a4,null))['then'](respondWithResult(_0x24d1a4,null))[_0x6c26('0x4a')](handleError(_0x24d1a4,null));};exports[_0x6c26('0x4f')]=function(_0xe9ab1a,_0x401ed3){return db[_0x6c26('0x31')]['create'](_0xe9ab1a[_0x6c26('0x50')],{})[_0x6c26('0x2a')](respondWithResult(_0x401ed3,0xc9))[_0x6c26('0x4a')](handleError(_0x401ed3,null));};exports[_0x6c26('0x29')]=function(_0x313384,_0x40f220){if(_0x313384[_0x6c26('0x50')]['id']){delete _0x313384['body']['id'];}return db[_0x6c26('0x31')]['find']({'where':{'id':_0x313384[_0x6c26('0x4c')]['id']}})[_0x6c26('0x2a')](handleEntityNotFound(_0x40f220,null))[_0x6c26('0x2a')](saveUpdates(_0x313384[_0x6c26('0x50')],null))[_0x6c26('0x2a')](respondWithResult(_0x40f220,null))[_0x6c26('0x4a')](handleError(_0x40f220,null));};exports[_0x6c26('0x2b')]=function(_0x31bb7d,_0x13ed14){return db[_0x6c26('0x31')][_0x6c26('0x4e')]({'where':{'id':_0x31bb7d[_0x6c26('0x4c')]['id']}})[_0x6c26('0x2a')](handleEntityNotFound(_0x13ed14,null))['then'](removeEntity(_0x13ed14,null))[_0x6c26('0x4a')](handleError(_0x13ed14,null));};exports['describe']=function(_0x3f19be,_0x1a0469){return db[_0x6c26('0x31')][_0x6c26('0x51')]()['then'](respondWithResult(_0x1a0469,null))['catch'](handleError(_0x1a0469,null));};
\ No newline at end of file
index 904ed6b..78c0cbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf928=['../../config/environment','./integrationReport.attributes','exports','define','IntegrationReport','report_integration','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x311949,_0x52887f){var _0x342b4b=function(_0x535413){while(--_0x535413){_0x311949['push'](_0x311949['shift']());}};_0x342b4b(++_0x52887f);}(_0xf928,0xc9));var _0x8f92=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf928[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x8f92('0x0'));var util=require(_0x8f92('0x1'));var logger=require(_0x8f92('0x2'))(_0x8f92('0x3'));var moment=require('moment');var BPromise=require(_0x8f92('0x4'));var rp=require(_0x8f92('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8f92('0x6'));var config=require(_0x8f92('0x7'));var attributes=require(_0x8f92('0x8'));module[_0x8f92('0x9')]=function(_0x1f5ed2,_0x5e20b5){return _0x1f5ed2[_0x8f92('0xa')](_0x8f92('0xb'),attributes,{'tableName':_0x8f92('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3981=['../../config/logger','bluebird','request-promise','../../config/environment','IntegrationReport','report_integration','lodash'];(function(_0x1a3723,_0x48dfbd){var _0xab01e6=function(_0x46f749){while(--_0x46f749){_0x1a3723['push'](_0x1a3723['shift']());}};_0xab01e6(++_0x48dfbd);}(_0x3981,0x18e));var _0x1398=function(_0x4152d2,_0x58aea5){_0x4152d2=_0x4152d2-0x0;var _0x2bba3e=_0x3981[_0x4152d2];return _0x2bba3e;};'use strict';var _=require(_0x1398('0x0'));var util=require('util');var logger=require(_0x1398('0x1'))('api');var moment=require('moment');var BPromise=require(_0x1398('0x2'));var rp=require(_0x1398('0x3'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1398('0x4'));var attributes=require('./integrationReport.attributes');module['exports']=function(_0x2e23f3,_0x11e589){return _0x2e23f3['define'](_0x1398('0x5'),attributes,{'tableName':_0x1398('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 391d774..ddcc208 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x39bb52,_0x10116e){var _0x2f5d30=function(_0x1ec7b3){while(--_0x1ec7b3){_0x39bb52['push'](_0x39bb52['shift']());}};_0x2f5d30(++_0x10116e);}(_0xba34,0x119));var _0x4ba3=function(_0x15b8e0,_0x58a513){_0x15b8e0=_0x15b8e0-0x0;var _0x1a4c9c=_0xba34[_0x15b8e0];return _0x1a4c9c;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
+var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','IntegrationReport,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x59d89e,_0x55edf5){var _0x554e93=function(_0x3d40bc){while(--_0x3d40bc){_0x59d89e['push'](_0x59d89e['shift']());}};_0x554e93(++_0x55edf5);}(_0x53ec,0x192));var _0xc53e=function(_0x13211b,_0x3050c2){_0x13211b=_0x13211b-0x0;var _0x4adb44=_0x53ec[_0x13211b];return _0x4adb44;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
index 5e35b9f..96f9f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4508=['get','isAuthenticated','show','post','create','/:id/sub_intervals','addInterval','addIntervals','put','update','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./interval.controller'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4508,0x1ef));var _0x8450=function(_0x3ad938,_0x34040d){_0x3ad938=_0x3ad938-0x0;var _0x3d4f90=_0x4508[_0x3ad938];return _0x3d4f90;};'use strict';var multer=require('multer');var util=require(_0x8450('0x0'));var path=require(_0x8450('0x1'));var timeout=require(_0x8450('0x2'));var express=require('express');var router=express[_0x8450('0x3')]();var fs_extra=require(_0x8450('0x4'));var auth=require(_0x8450('0x5'));var interaction=require(_0x8450('0x6'));var config=require(_0x8450('0x7'));var controller=require(_0x8450('0x8'));router[_0x8450('0x9')]('/',auth[_0x8450('0xa')](),controller['index']);router[_0x8450('0x9')]('/:id',auth[_0x8450('0xa')](),controller[_0x8450('0xb')]);router['get']('/:id/sub_intervals',auth['isAuthenticated'](),controller['getIntervals']);router[_0x8450('0xc')]('/',auth[_0x8450('0xa')](),controller[_0x8450('0xd')]);router[_0x8450('0xc')](_0x8450('0xe'),auth[_0x8450('0xa')](),controller[_0x8450('0xf')]);router[_0x8450('0xc')]('/:id/sub_intervals/create_many',auth[_0x8450('0xa')](),controller[_0x8450('0x10')]);router[_0x8450('0x11')]('/:id',auth[_0x8450('0xa')](),controller[_0x8450('0x12')]);router['delete']('/:id',auth[_0x8450('0xa')](),controller[_0x8450('0x13')]);module[_0x8450('0x14')]=router;
\ No newline at end of file
+var _0x4989=['post','create','addInterval','/:id/sub_intervals/create_many','update','delete','destroy','multer','connect-timeout','express','Router','fs-extra','../../config/environment','get','isAuthenticated','/:id','show','/:id/sub_intervals','getIntervals'];(function(_0x3b4c58,_0x2a728b){var _0x103298=function(_0x12ba1d){while(--_0x12ba1d){_0x3b4c58['push'](_0x3b4c58['shift']());}};_0x103298(++_0x2a728b);}(_0x4989,0x79));var _0x9498=function(_0x33925b,_0x95cfc6){_0x33925b=_0x33925b-0x0;var _0x375e21=_0x4989[_0x33925b];return _0x375e21;};'use strict';var multer=require(_0x9498('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9498('0x1'));var express=require(_0x9498('0x2'));var router=express[_0x9498('0x3')]();var fs_extra=require(_0x9498('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x9498('0x5'));var controller=require('./interval.controller');router[_0x9498('0x6')]('/',auth[_0x9498('0x7')](),controller['index']);router[_0x9498('0x6')](_0x9498('0x8'),auth[_0x9498('0x7')](),controller[_0x9498('0x9')]);router[_0x9498('0x6')](_0x9498('0xa'),auth[_0x9498('0x7')](),controller[_0x9498('0xb')]);router[_0x9498('0xc')]('/',auth[_0x9498('0x7')](),controller[_0x9498('0xd')]);router['post'](_0x9498('0xa'),auth[_0x9498('0x7')](),controller[_0x9498('0xe')]);router['post'](_0x9498('0xf'),auth[_0x9498('0x7')](),controller['addIntervals']);router['put']('/:id',auth[_0x9498('0x7')](),controller[_0x9498('0x10')]);router[_0x9498('0x11')](_0x9498('0x8'),auth[_0x9498('0x7')](),controller[_0x9498('0x12')]);module['exports']=router;
\ No newline at end of file
index f67c345..349cfad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2893=['STRING','exports'];(function(_0x1979c7,_0x179db6){var _0x496aff=function(_0x54a717){while(--_0x54a717){_0x1979c7['push'](_0x1979c7['shift']());}};_0x496aff(++_0x179db6);}(_0x2893,0x149));var _0x3289=function(_0x4fd51c,_0x212fca){_0x4fd51c=_0x4fd51c-0x0;var _0xde5b62=_0x2893[_0x4fd51c];return _0xde5b62;};'use strict';var Sequelize=require('sequelize');module[_0x3289('0x0')]={'name':{'type':Sequelize[_0x3289('0x1')]},'description':{'type':Sequelize[_0x3289('0x1')]},'interval':{'type':Sequelize[_0x3289('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xc141=['exports','STRING','sequelize'];(function(_0x586730,_0x1c95d9){var _0x4d67e5=function(_0x81180c){while(--_0x81180c){_0x586730['push'](_0x586730['shift']());}};_0x4d67e5(++_0x1c95d9);}(_0xc141,0xe3));var _0x1c14=function(_0x1a647a,_0x3c940c){_0x1a647a=_0x1a647a-0x0;var _0x205d87=_0xc141[_0x1a647a];return _0x205d87;};'use strict';var Sequelize=require(_0x1c14('0x0'));module[_0x1c14('0x1')]={'name':{'type':Sequelize[_0x1c14('0x2')]},'description':{'type':Sequelize[_0x1c14('0x2')]},'interval':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index ff50687..7224bc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ccd=['../../components/extensions/rewrite','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','get','Intervals','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','Interval','findAll','rows','catch','show','params','keys','includeAll','include','find','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addInterval','IntervalId','getIntervals','pick','addIntervals','sequelize','transaction','bulkCreate','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util'];(function(_0x33c677,_0x2c734f){var _0x540ab1=function(_0x4a7a9e){while(--_0x4a7a9e){_0x33c677['push'](_0x33c677['shift']());}};_0x540ab1(++_0x2c734f);}(_0x4ccd,0xf8));var _0xd4cc=function(_0x6b6340,_0x6302c4){_0x6b6340=_0x6b6340-0x0;var _0x3609bf=_0x4ccd[_0x6b6340];return _0x3609bf;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd4cc('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd4cc('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xd4cc('0x2'));var Mustache=require(_0xd4cc('0x3'));var util=require(_0xd4cc('0x4'));var path=require(_0xd4cc('0x5'));var sox=require(_0xd4cc('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd4cc('0x7'));var _=require(_0xd4cc('0x8'));var squel=require(_0xd4cc('0x9'));var crypto=require('crypto');var jsforce=require(_0xd4cc('0xa'));var deskjs=require(_0xd4cc('0xb'));var toCsv=require(_0xd4cc('0xc'));var querystring=require(_0xd4cc('0xd'));var Papa=require(_0xd4cc('0xe'));var Redis=require('ioredis');var authService=require(_0xd4cc('0xf'));var qs=require(_0xd4cc('0x10'));var as=require(_0xd4cc('0x11'));var hardwareService=require(_0xd4cc('0x12'));var logger=require('../../config/logger')(_0xd4cc('0x13'));var utils=require(_0xd4cc('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xd4cc('0x15'));var db=require('../../mysqldb')['db'];var extensions=require(_0xd4cc('0x16'));function respondWithStatusCode(_0xdb603a,_0x419b5c){_0x419b5c=_0x419b5c||0xcc;return function(_0x425320){if(_0x425320){return _0xdb603a[_0xd4cc('0x17')](_0x419b5c);}return _0xdb603a[_0xd4cc('0x18')](_0x419b5c)[_0xd4cc('0x19')]();};}function respondWithResult(_0x4e91d4,_0x1e1359){_0x1e1359=_0x1e1359||0xc8;return function(_0x23d8a5){if(_0x23d8a5){return _0x4e91d4['status'](_0x1e1359)['json'](_0x23d8a5);}};}function respondWithFilteredResult(_0x4cd9e7,_0x59ffd8){return function(_0x14800c){if(_0x14800c){var _0x228dd2=typeof _0x59ffd8[_0xd4cc('0x1a')]===_0xd4cc('0x1b')&&typeof _0x59ffd8[_0xd4cc('0x1c')]===_0xd4cc('0x1b');var _0x20bf68=_0x14800c[_0xd4cc('0x1d')];var _0x3af4fd=_0x228dd2?0x0:_0x59ffd8[_0xd4cc('0x1a')];var _0x6feb31=_0x228dd2?_0x14800c[_0xd4cc('0x1d')]:_0x59ffd8[_0xd4cc('0x1a')]+_0x59ffd8[_0xd4cc('0x1c')];var _0x5a733b;if(_0x6feb31>=_0x20bf68){_0x6feb31=_0x20bf68;_0x5a733b=0xc8;}else{_0x5a733b=0xce;}_0x4cd9e7[_0xd4cc('0x18')](_0x5a733b);return _0x4cd9e7[_0xd4cc('0x1e')]('Content-Range',_0x3af4fd+'-'+_0x6feb31+'/'+_0x20bf68)['json'](_0x14800c);}return null;};}function patchUpdates(_0x371270){return function(_0x81e914){try{jsonpatch[_0xd4cc('0x1f')](_0x81e914,_0x371270,!![]);}catch(_0x13b1a9){return BPromise[_0xd4cc('0x20')](_0x13b1a9);}return _0x81e914[_0xd4cc('0x21')]();};}function saveUpdates(_0x1cf8aa,_0x57814e){return function(_0x47dce2){if(_0x47dce2){return _0x47dce2[_0xd4cc('0x22')](_0x1cf8aa)['then'](function(_0x24fdc1){return _0x24fdc1;});}return null;};}function removeEntity(_0x5525af,_0x2a720f){return function(_0x4c413f){if(_0x4c413f){return _0x4c413f[_0xd4cc('0x23')]()[_0xd4cc('0x24')](function(){var _0x3c958a=_0x4c413f[_0xd4cc('0x25')]({'plain':!![]});var _0x3c0a85=_0xd4cc('0x26');return db[_0xd4cc('0x27')][_0xd4cc('0x23')]({'where':{'type':_0x3c0a85,'resourceId':_0x3c958a['id']}})[_0xd4cc('0x24')](function(){return _0x4c413f;});})[_0xd4cc('0x24')](function(){_0x5525af[_0xd4cc('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x50971f,_0xa20eb){return function(_0x2bb6dd){if(!_0x2bb6dd){_0x50971f[_0xd4cc('0x17')](0x194);}return _0x2bb6dd;};}function handleError(_0x4949ff,_0x111cf9){_0x111cf9=_0x111cf9||0x1f4;return function(_0x3b4531){logger[_0xd4cc('0x28')](_0x3b4531[_0xd4cc('0x29')]);if(_0x3b4531[_0xd4cc('0x2a')]){delete _0x3b4531[_0xd4cc('0x2a')];}_0x4949ff[_0xd4cc('0x18')](_0x111cf9)[_0xd4cc('0x2b')](_0x3b4531);};}exports[_0xd4cc('0x2c')]=function(_0x31861a,_0x311ddd){var _0x340404={},_0x69442={},_0x2ce478={'count':0x0,'rows':[]};var _0x466f13=_[_0xd4cc('0x2d')](db['Interval'][_0xd4cc('0x2e')],function(_0x2cecc5){return{'name':_0x2cecc5[_0xd4cc('0x2f')],'type':_0x2cecc5[_0xd4cc('0x30')]['key']};});_0x69442[_0xd4cc('0x31')]=_[_0xd4cc('0x2d')](_0x466f13,_0xd4cc('0x2a'));_0x69442['query']=_['keys'](_0x31861a[_0xd4cc('0x32')]);_0x69442['filters']=_[_0xd4cc('0x33')](_0x69442[_0xd4cc('0x31')],_0x69442[_0xd4cc('0x32')]);_0x340404[_0xd4cc('0x34')]=_[_0xd4cc('0x33')](_0x69442[_0xd4cc('0x31')],qs[_0xd4cc('0x35')](_0x31861a[_0xd4cc('0x32')][_0xd4cc('0x35')]));_0x340404[_0xd4cc('0x34')]=_0x340404['attributes'][_0xd4cc('0x36')]?_0x340404[_0xd4cc('0x34')]:_0x69442[_0xd4cc('0x31')];if(!_0x31861a[_0xd4cc('0x32')][_0xd4cc('0x37')](_0xd4cc('0x38'))){_0x340404[_0xd4cc('0x1c')]=qs['limit'](_0x31861a[_0xd4cc('0x32')][_0xd4cc('0x1c')]);_0x340404[_0xd4cc('0x1a')]=qs[_0xd4cc('0x1a')](_0x31861a[_0xd4cc('0x32')][_0xd4cc('0x1a')]);}_0x340404[_0xd4cc('0x39')]=qs[_0xd4cc('0x3a')](_0x31861a[_0xd4cc('0x32')][_0xd4cc('0x3a')]);_0x340404[_0xd4cc('0x3b')]=qs[_0xd4cc('0x3c')](_['pick'](_0x31861a[_0xd4cc('0x32')],_0x69442[_0xd4cc('0x3c')]),_0x466f13);if(_0x31861a['query'][_0xd4cc('0x3d')]){_0x340404['where']=_[_0xd4cc('0x3e')](_0x340404[_0xd4cc('0x3b')],{'$or':_[_0xd4cc('0x2d')](_0x466f13,function(_0x5b4d9f){if(_0x5b4d9f['type']!=='VIRTUAL'){var _0x13b220={};_0x13b220[_0x5b4d9f['name']]={'$like':'%'+_0x31861a[_0xd4cc('0x32')]['filter']+'%'};return _0x13b220;}})});}_0x340404=_[_0xd4cc('0x3e')]({},_0x340404,_0x31861a[_0xd4cc('0x3f')]);var _0x170d9b={'where':_0x340404['where']};return db[_0xd4cc('0x40')][_0xd4cc('0x1d')](_0x170d9b)['then'](function(_0x2cceaf){_0x2ce478[_0xd4cc('0x1d')]=_0x2cceaf;if(_0x31861a[_0xd4cc('0x32')]['includeAll']){_0x340404['include']=[{'all':!![]}];}return db[_0xd4cc('0x40')][_0xd4cc('0x41')](_0x340404);})[_0xd4cc('0x24')](function(_0x317902){_0x2ce478[_0xd4cc('0x42')]=_0x317902;return _0x2ce478;})[_0xd4cc('0x24')](respondWithFilteredResult(_0x311ddd,_0x340404))[_0xd4cc('0x43')](handleError(_0x311ddd,null));};exports[_0xd4cc('0x44')]=function(_0x6d3c92,_0x323a58){var _0x26afe1={'raw':!![],'where':{'id':_0x6d3c92[_0xd4cc('0x45')]['id']}},_0x5b9228={};_0x5b9228[_0xd4cc('0x31')]=_[_0xd4cc('0x46')](db[_0xd4cc('0x40')]['rawAttributes']);_0x5b9228[_0xd4cc('0x32')]=_[_0xd4cc('0x46')](_0x6d3c92['query']);_0x5b9228['filters']=_['intersection'](_0x5b9228[_0xd4cc('0x31')],_0x5b9228['query']);_0x26afe1['attributes']=_[_0xd4cc('0x33')](_0x5b9228['model'],qs[_0xd4cc('0x35')](_0x6d3c92[_0xd4cc('0x32')][_0xd4cc('0x35')]));_0x26afe1[_0xd4cc('0x34')]=_0x26afe1['attributes'][_0xd4cc('0x36')]?_0x26afe1['attributes']:_0x5b9228[_0xd4cc('0x31')];if(_0x6d3c92[_0xd4cc('0x32')][_0xd4cc('0x47')]){_0x26afe1[_0xd4cc('0x48')]=[{'all':!![]}];}_0x26afe1=_[_0xd4cc('0x3e')]({},_0x26afe1,_0x6d3c92[_0xd4cc('0x3f')]);return db[_0xd4cc('0x40')][_0xd4cc('0x49')](_0x26afe1)['then'](handleEntityNotFound(_0x323a58,null))['then'](respondWithResult(_0x323a58,null))[_0xd4cc('0x43')](handleError(_0x323a58,null));};exports['create']=function(_0x1e607b,_0x55ccf7){return db[_0xd4cc('0x40')]['create'](_0x1e607b[_0xd4cc('0x4a')],{})['then'](function(_0x4a234a){var _0xdad8dd=_0x1e607b[_0xd4cc('0x4b')]['get']({'plain':!![]});if(!_0xdad8dd)throw new Error(_0xd4cc('0x4c'));if(_0xdad8dd[_0xd4cc('0x4d')]==='user'){var _0x441673=_0x4a234a['get']({'plain':!![]});var _0x2c4432=_0xd4cc('0x26');return db[_0xd4cc('0x4e')][_0xd4cc('0x49')]({'where':{'name':_0x2c4432,'userProfileId':_0xdad8dd[_0xd4cc('0x4f')]},'raw':!![]})[_0xd4cc('0x24')](function(_0x57595e){if(_0x57595e&&_0x57595e['autoAssociation']===0x0){return db['UserProfileResource'][_0xd4cc('0x50')]({'name':_0x441673['name'],'resourceId':_0x441673['id'],'type':_0x57595e[_0xd4cc('0x2a')],'sectionId':_0x57595e['id']},{})[_0xd4cc('0x24')](function(){return _0x4a234a;});}else{return _0x4a234a;}})[_0xd4cc('0x43')](function(_0x4cba5e){logger[_0xd4cc('0x28')](_0xd4cc('0x51'),_0x4cba5e);throw _0x4cba5e;});}return _0x4a234a;})[_0xd4cc('0x24')](respondWithResult(_0x55ccf7,0xc9))[_0xd4cc('0x43')](handleError(_0x55ccf7,null));};exports[_0xd4cc('0x22')]=function(_0xff3501,_0x3fb5c4){if(_0xff3501[_0xd4cc('0x4a')]['id']){delete _0xff3501[_0xd4cc('0x4a')]['id'];}return db[_0xd4cc('0x40')][_0xd4cc('0x49')]({'where':{'id':_0xff3501[_0xd4cc('0x45')]['id']}})[_0xd4cc('0x24')](handleEntityNotFound(_0x3fb5c4,null))[_0xd4cc('0x24')](saveUpdates(_0xff3501['body'],null))[_0xd4cc('0x24')](respondWithResult(_0x3fb5c4,null))[_0xd4cc('0x43')](handleError(_0x3fb5c4,null));};exports['destroy']=function(_0x2f4979,_0x1a1a95){return db[_0xd4cc('0x40')][_0xd4cc('0x49')]({'where':{'id':_0x2f4979['params']['id']}})[_0xd4cc('0x24')](handleEntityNotFound(_0x1a1a95,null))[_0xd4cc('0x24')](removeEntity(_0x1a1a95,null))['catch'](handleError(_0x1a1a95,null));};exports[_0xd4cc('0x52')]=function(_0x3d54b6,_0x5e62cd,_0x3531d7){if(_0x3d54b6[_0xd4cc('0x4a')]['id']){delete _0x3d54b6[_0xd4cc('0x4a')]['id'];}return db[_0xd4cc('0x40')]['find']({'where':{'id':_0x3d54b6['params']['id']}})[_0xd4cc('0x24')](handleEntityNotFound(_0x5e62cd,null))['then'](function(_0x1a50b7){if(_0x1a50b7){_0x3d54b6[_0xd4cc('0x4a')][_0xd4cc('0x53')]=_0x1a50b7['id'];return db[_0xd4cc('0x40')]['create'](_0x3d54b6[_0xd4cc('0x4a')]);}})[_0xd4cc('0x24')](respondWithResult(_0x5e62cd,null))[_0xd4cc('0x43')](handleError(_0x5e62cd,null));};exports[_0xd4cc('0x54')]=function(_0x43e176,_0x22a321,_0x15e2e1){var _0xc3d406={};var _0x5ad43c={};var _0x55e210;var _0x503178;return db[_0xd4cc('0x40')]['findOne']({'where':{'id':_0x43e176[_0xd4cc('0x45')]['id']}})[_0xd4cc('0x24')](handleEntityNotFound(_0x22a321,null))[_0xd4cc('0x24')](function(_0xad162c){if(_0xad162c){_0x55e210=_0xad162c;_0x5ad43c[_0xd4cc('0x31')]=_[_0xd4cc('0x46')](db['Interval'][_0xd4cc('0x2e')]);_0x5ad43c['query']=_[_0xd4cc('0x46')](_0x43e176[_0xd4cc('0x32')]);_0x5ad43c[_0xd4cc('0x3c')]=_[_0xd4cc('0x33')](_0x5ad43c[_0xd4cc('0x31')],_0x5ad43c[_0xd4cc('0x32')]);_0xc3d406['attributes']=_[_0xd4cc('0x33')](_0x5ad43c[_0xd4cc('0x31')],qs[_0xd4cc('0x35')](_0x43e176[_0xd4cc('0x32')][_0xd4cc('0x35')]));_0xc3d406[_0xd4cc('0x34')]=_0xc3d406[_0xd4cc('0x34')]['length']?_0xc3d406[_0xd4cc('0x34')]:_0x5ad43c[_0xd4cc('0x31')];_0xc3d406['order']=qs[_0xd4cc('0x3a')](_0x43e176[_0xd4cc('0x32')][_0xd4cc('0x3a')]);_0xc3d406[_0xd4cc('0x3b')]=qs[_0xd4cc('0x3c')](_[_0xd4cc('0x55')](_0x43e176['query'],_0x5ad43c[_0xd4cc('0x3c')]));if(_0x43e176[_0xd4cc('0x32')][_0xd4cc('0x3d')]){_0xc3d406[_0xd4cc('0x3b')]=_[_0xd4cc('0x3e')](_0xc3d406[_0xd4cc('0x3b')],{'$or':_['map'](_0xc3d406['attributes'],function(_0x184b9f){var _0x8487d3={};_0x8487d3[_0x184b9f]={'$like':'%'+_0x43e176[_0xd4cc('0x32')]['filter']+'%'};return _0x8487d3;})});}_0xc3d406=_['merge']({},_0xc3d406,_0x43e176[_0xd4cc('0x3f')]);return _0x55e210[_0xd4cc('0x54')](_0xc3d406);}})['then'](function(_0x52ff0d){if(_0x52ff0d){_0x503178=_0x52ff0d[_0xd4cc('0x36')];if(!_0x43e176[_0xd4cc('0x32')][_0xd4cc('0x37')]('nolimit')){_0xc3d406[_0xd4cc('0x1c')]=qs[_0xd4cc('0x1c')](_0x43e176[_0xd4cc('0x32')][_0xd4cc('0x1c')]);_0xc3d406[_0xd4cc('0x1a')]=qs[_0xd4cc('0x1a')](_0x43e176[_0xd4cc('0x32')]['offset']);}return _0x55e210[_0xd4cc('0x54')](_0xc3d406);}})[_0xd4cc('0x24')](function(_0x3567c0){if(_0x3567c0){return _0x3567c0?{'count':_0x503178,'rows':_0x3567c0}:null;}})[_0xd4cc('0x24')](respondWithResult(_0x22a321,null))[_0xd4cc('0x43')](handleError(_0x22a321,null));};exports[_0xd4cc('0x56')]=function(_0x21d36b,_0x2f29e6,_0x13d7a6){return db[_0xd4cc('0x40')]['findOne']({'where':{'id':_0x21d36b[_0xd4cc('0x45')]['id']}})[_0xd4cc('0x24')](handleEntityNotFound(_0x2f29e6,null))[_0xd4cc('0x24')](function(_0x128250){if(_0x128250){return db[_0xd4cc('0x57')][_0xd4cc('0x58')](function(_0x8103f1){return db[_0xd4cc('0x40')][_0xd4cc('0x23')]({'where':{'IntervalId':_0x21d36b['params']['id']},'transaction':_0x8103f1})[_0xd4cc('0x24')](function(_0x21c1fc){var _0x44bf9c=_['map'](_0x21d36b[_0xd4cc('0x4a')],function(_0x19f85d){delete _0x19f85d['id'];_0x19f85d[_0xd4cc('0x53')]=_0x21d36b['params']['id'];return _0x19f85d;});return db[_0xd4cc('0x40')][_0xd4cc('0x59')](_0x44bf9c,{'transaction':_0x8103f1});});})[_0xd4cc('0x24')](function(){return db[_0xd4cc('0x40')][_0xd4cc('0x41')]({'where':{'IntervalId':_0x21d36b[_0xd4cc('0x45')]['id']}});});}})[_0xd4cc('0x24')](respondWithResult(_0x2f29e6,null))['catch'](handleError(_0x2f29e6,null));};
\ No newline at end of file
+var _0xdf9a=['zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','offset','undefined','limit','Content-Range','apply','update','then','destroy','get','Intervals','UserProfileResource','error','name','index','map','Interval','rawAttributes','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','count','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','IntervalId','getIntervals','findOne','addIntervals','bulkCreate','eml-format'];(function(_0x32ab21,_0x26ca1b){var _0x3c9408=function(_0x57d1db){while(--_0x57d1db){_0x32ab21['push'](_0x32ab21['shift']());}};_0x3c9408(++_0x26ca1b);}(_0xdf9a,0x1c6));var _0xadf9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdf9a[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xadf9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xadf9('0x1'));var jsonpatch=require(_0xadf9('0x2'));var rp=require(_0xadf9('0x3'));var moment=require(_0xadf9('0x4'));var BPromise=require(_0xadf9('0x5'));var Mustache=require(_0xadf9('0x6'));var util=require(_0xadf9('0x7'));var path=require(_0xadf9('0x8'));var sox=require(_0xadf9('0x9'));var csv=require(_0xadf9('0xa'));var ejs=require(_0xadf9('0xb'));var fs=require('fs');var fs_extra=require(_0xadf9('0xc'));var _=require(_0xadf9('0xd'));var squel=require(_0xadf9('0xe'));var crypto=require(_0xadf9('0xf'));var jsforce=require(_0xadf9('0x10'));var deskjs=require(_0xadf9('0x11'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xadf9('0x12'));var authService=require(_0xadf9('0x13'));var qs=require(_0xadf9('0x14'));var as=require(_0xadf9('0x15'));var hardwareService=require(_0xadf9('0x16'));var logger=require(_0xadf9('0x17'))(_0xadf9('0x18'));var utils=require(_0xadf9('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0xadf9('0x1a'));var db=require(_0xadf9('0x1b'))['db'];var extensions=require(_0xadf9('0x1c'));function respondWithStatusCode(_0x852f9d,_0x2de285){_0x2de285=_0x2de285||0xcc;return function(_0x403e6b){if(_0x403e6b){return _0x852f9d[_0xadf9('0x1d')](_0x2de285);}return _0x852f9d[_0xadf9('0x1e')](_0x2de285)[_0xadf9('0x1f')]();};}function respondWithResult(_0x229655,_0x551fbf){_0x551fbf=_0x551fbf||0xc8;return function(_0x5a2bc4){if(_0x5a2bc4){return _0x229655[_0xadf9('0x1e')](_0x551fbf)[_0xadf9('0x20')](_0x5a2bc4);}};}function respondWithFilteredResult(_0x26c8e1,_0x529ab3){return function(_0x4cdd95){if(_0x4cdd95){var _0x4eba0e=typeof _0x529ab3[_0xadf9('0x21')]===_0xadf9('0x22')&&typeof _0x529ab3[_0xadf9('0x23')]==='undefined';var _0x2bafb7=_0x4cdd95['count'];var _0x4e503c=_0x4eba0e?0x0:_0x529ab3['offset'];var _0x592e73=_0x4eba0e?_0x4cdd95['count']:_0x529ab3['offset']+_0x529ab3[_0xadf9('0x23')];var _0x5e08bd;if(_0x592e73>=_0x2bafb7){_0x592e73=_0x2bafb7;_0x5e08bd=0xc8;}else{_0x5e08bd=0xce;}_0x26c8e1[_0xadf9('0x1e')](_0x5e08bd);return _0x26c8e1['set'](_0xadf9('0x24'),_0x4e503c+'-'+_0x592e73+'/'+_0x2bafb7)['json'](_0x4cdd95);}return null;};}function patchUpdates(_0x28d271){return function(_0x2af085){try{jsonpatch[_0xadf9('0x25')](_0x2af085,_0x28d271,!![]);}catch(_0x55f73a){return BPromise['reject'](_0x55f73a);}return _0x2af085['save']();};}function saveUpdates(_0x18afe2,_0x137ecc){return function(_0x40da2a){if(_0x40da2a){return _0x40da2a[_0xadf9('0x26')](_0x18afe2)[_0xadf9('0x27')](function(_0x453611){return _0x453611;});}return null;};}function removeEntity(_0x9534de,_0x3be5a9){return function(_0x41f50b){if(_0x41f50b){return _0x41f50b[_0xadf9('0x28')]()['then'](function(){var _0x7ad9e1=_0x41f50b[_0xadf9('0x29')]({'plain':!![]});var _0x191659=_0xadf9('0x2a');return db[_0xadf9('0x2b')][_0xadf9('0x28')]({'where':{'type':_0x191659,'resourceId':_0x7ad9e1['id']}})[_0xadf9('0x27')](function(){return _0x41f50b;});})[_0xadf9('0x27')](function(){_0x9534de[_0xadf9('0x1e')](0xcc)[_0xadf9('0x1f')]();});}};}function handleEntityNotFound(_0x1bf2d3,_0x263b52){return function(_0x1d8c41){if(!_0x1d8c41){_0x1bf2d3[_0xadf9('0x1d')](0x194);}return _0x1d8c41;};}function handleError(_0x240b51,_0x56f4ca){_0x56f4ca=_0x56f4ca||0x1f4;return function(_0x5d3a38){logger[_0xadf9('0x2c')](_0x5d3a38['stack']);if(_0x5d3a38[_0xadf9('0x2d')]){delete _0x5d3a38['name'];}_0x240b51[_0xadf9('0x1e')](_0x56f4ca)['send'](_0x5d3a38);};}exports[_0xadf9('0x2e')]=function(_0x39b17c,_0x3eeda9){var _0xf73635={},_0x40b9c3={},_0x19885a={'count':0x0,'rows':[]};var _0x42c8bf=_[_0xadf9('0x2f')](db[_0xadf9('0x30')][_0xadf9('0x31')],function(_0x3bfa2d){return{'name':_0x3bfa2d['fieldName'],'type':_0x3bfa2d[_0xadf9('0x32')]['key']};});_0x40b9c3[_0xadf9('0x33')]=_['map'](_0x42c8bf,'name');_0x40b9c3['query']=_['keys'](_0x39b17c[_0xadf9('0x34')]);_0x40b9c3[_0xadf9('0x35')]=_[_0xadf9('0x36')](_0x40b9c3[_0xadf9('0x33')],_0x40b9c3[_0xadf9('0x34')]);_0xf73635['attributes']=_['intersection'](_0x40b9c3['model'],qs[_0xadf9('0x37')](_0x39b17c['query'][_0xadf9('0x37')]));_0xf73635[_0xadf9('0x38')]=_0xf73635[_0xadf9('0x38')][_0xadf9('0x39')]?_0xf73635['attributes']:_0x40b9c3['model'];if(!_0x39b17c[_0xadf9('0x34')][_0xadf9('0x3a')](_0xadf9('0x3b'))){_0xf73635[_0xadf9('0x23')]=qs[_0xadf9('0x23')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x23')]);_0xf73635[_0xadf9('0x21')]=qs[_0xadf9('0x21')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x21')]);}_0xf73635[_0xadf9('0x3c')]=qs[_0xadf9('0x3d')](_0x39b17c[_0xadf9('0x34')][_0xadf9('0x3d')]);_0xf73635[_0xadf9('0x3e')]=qs[_0xadf9('0x35')](_[_0xadf9('0x3f')](_0x39b17c[_0xadf9('0x34')],_0x40b9c3['filters']),_0x42c8bf);if(_0x39b17c[_0xadf9('0x34')][_0xadf9('0x40')]){_0xf73635[_0xadf9('0x3e')]=_[_0xadf9('0x41')](_0xf73635[_0xadf9('0x3e')],{'$or':_[_0xadf9('0x2f')](_0x42c8bf,function(_0x2c7975){if(_0x2c7975[_0xadf9('0x32')]!==_0xadf9('0x42')){var _0x593700={};_0x593700[_0x2c7975['name']]={'$like':'%'+_0x39b17c[_0xadf9('0x34')][_0xadf9('0x40')]+'%'};return _0x593700;}})});}_0xf73635=_[_0xadf9('0x41')]({},_0xf73635,_0x39b17c['options']);var _0x2f9684={'where':_0xf73635[_0xadf9('0x3e')]};return db['Interval'][_0xadf9('0x43')](_0x2f9684)[_0xadf9('0x27')](function(_0xefe100){_0x19885a[_0xadf9('0x43')]=_0xefe100;if(_0x39b17c[_0xadf9('0x34')][_0xadf9('0x44')]){_0xf73635[_0xadf9('0x45')]=[{'all':!![]}];}return db[_0xadf9('0x30')][_0xadf9('0x46')](_0xf73635);})['then'](function(_0x555091){_0x19885a[_0xadf9('0x47')]=_0x555091;return _0x19885a;})[_0xadf9('0x27')](respondWithFilteredResult(_0x3eeda9,_0xf73635))[_0xadf9('0x48')](handleError(_0x3eeda9,null));};exports[_0xadf9('0x49')]=function(_0x246343,_0x5e03b5){var _0x67a82f={'raw':!![],'where':{'id':_0x246343[_0xadf9('0x4a')]['id']}},_0x2e8af7={};_0x2e8af7[_0xadf9('0x33')]=_['keys'](db[_0xadf9('0x30')][_0xadf9('0x31')]);_0x2e8af7[_0xadf9('0x34')]=_[_0xadf9('0x4b')](_0x246343[_0xadf9('0x34')]);_0x2e8af7[_0xadf9('0x35')]=_[_0xadf9('0x36')](_0x2e8af7[_0xadf9('0x33')],_0x2e8af7[_0xadf9('0x34')]);_0x67a82f['attributes']=_[_0xadf9('0x36')](_0x2e8af7[_0xadf9('0x33')],qs[_0xadf9('0x37')](_0x246343[_0xadf9('0x34')][_0xadf9('0x37')]));_0x67a82f[_0xadf9('0x38')]=_0x67a82f[_0xadf9('0x38')]['length']?_0x67a82f[_0xadf9('0x38')]:_0x2e8af7[_0xadf9('0x33')];if(_0x246343[_0xadf9('0x34')][_0xadf9('0x44')]){_0x67a82f[_0xadf9('0x45')]=[{'all':!![]}];}_0x67a82f=_[_0xadf9('0x41')]({},_0x67a82f,_0x246343[_0xadf9('0x4c')]);return db[_0xadf9('0x30')][_0xadf9('0x4d')](_0x67a82f)[_0xadf9('0x27')](handleEntityNotFound(_0x5e03b5,null))[_0xadf9('0x27')](respondWithResult(_0x5e03b5,null))[_0xadf9('0x48')](handleError(_0x5e03b5,null));};exports[_0xadf9('0x4e')]=function(_0x4ff978,_0x213f4c){return db['Interval']['create'](_0x4ff978[_0xadf9('0x4f')],{})[_0xadf9('0x27')](function(_0x1594e2){var _0x131678=_0x4ff978[_0xadf9('0x50')][_0xadf9('0x29')]({'plain':!![]});if(!_0x131678)throw new Error(_0xadf9('0x51'));if(_0x131678[_0xadf9('0x52')]==='user'){var _0x1f76c4=_0x1594e2['get']({'plain':!![]});var _0x33b992=_0xadf9('0x2a');return db[_0xadf9('0x53')]['find']({'where':{'name':_0x33b992,'userProfileId':_0x131678['userProfileId']},'raw':!![]})['then'](function(_0x473c8d){if(_0x473c8d&&_0x473c8d[_0xadf9('0x54')]===0x0){return db['UserProfileResource']['create']({'name':_0x1f76c4[_0xadf9('0x2d')],'resourceId':_0x1f76c4['id'],'type':_0x473c8d['name'],'sectionId':_0x473c8d['id']},{})[_0xadf9('0x27')](function(){return _0x1594e2;});}else{return _0x1594e2;}})[_0xadf9('0x48')](function(_0x59e289){logger['error'](_0xadf9('0x55'),_0x59e289);throw _0x59e289;});}return _0x1594e2;})[_0xadf9('0x27')](respondWithResult(_0x213f4c,0xc9))[_0xadf9('0x48')](handleError(_0x213f4c,null));};exports[_0xadf9('0x26')]=function(_0x5da68b,_0x590788){if(_0x5da68b[_0xadf9('0x4f')]['id']){delete _0x5da68b[_0xadf9('0x4f')]['id'];}return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x5da68b[_0xadf9('0x4a')]['id']}})['then'](handleEntityNotFound(_0x590788,null))['then'](saveUpdates(_0x5da68b[_0xadf9('0x4f')],null))[_0xadf9('0x27')](respondWithResult(_0x590788,null))[_0xadf9('0x48')](handleError(_0x590788,null));};exports['destroy']=function(_0x330be4,_0x21212c){return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x330be4[_0xadf9('0x4a')]['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x21212c,null))['then'](removeEntity(_0x21212c,null))[_0xadf9('0x48')](handleError(_0x21212c,null));};exports['addInterval']=function(_0x5ccb37,_0x1d103a,_0x4e51a9){if(_0x5ccb37[_0xadf9('0x4f')]['id']){delete _0x5ccb37[_0xadf9('0x4f')]['id'];}return db[_0xadf9('0x30')][_0xadf9('0x4d')]({'where':{'id':_0x5ccb37[_0xadf9('0x4a')]['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x1d103a,null))['then'](function(_0x3b5cfc){if(_0x3b5cfc){_0x5ccb37[_0xadf9('0x4f')][_0xadf9('0x56')]=_0x3b5cfc['id'];return db['Interval'][_0xadf9('0x4e')](_0x5ccb37[_0xadf9('0x4f')]);}})[_0xadf9('0x27')](respondWithResult(_0x1d103a,null))[_0xadf9('0x48')](handleError(_0x1d103a,null));};exports[_0xadf9('0x57')]=function(_0x1fb770,_0x19a7b5,_0x1d2638){var _0x1a4c24={};var _0x577367={};var _0x1fc5a5;var _0x5510ae;return db[_0xadf9('0x30')][_0xadf9('0x58')]({'where':{'id':_0x1fb770['params']['id']}})[_0xadf9('0x27')](handleEntityNotFound(_0x19a7b5,null))['then'](function(_0x5cc615){if(_0x5cc615){_0x1fc5a5=_0x5cc615;_0x577367[_0xadf9('0x33')]=_[_0xadf9('0x4b')](db[_0xadf9('0x30')][_0xadf9('0x31')]);_0x577367[_0xadf9('0x34')]=_[_0xadf9('0x4b')](_0x1fb770['query']);_0x577367[_0xadf9('0x35')]=_['intersection'](_0x577367[_0xadf9('0x33')],_0x577367[_0xadf9('0x34')]);_0x1a4c24['attributes']=_['intersection'](_0x577367[_0xadf9('0x33')],qs[_0xadf9('0x37')](_0x1fb770[_0xadf9('0x34')]['fields']));_0x1a4c24['attributes']=_0x1a4c24[_0xadf9('0x38')][_0xadf9('0x39')]?_0x1a4c24['attributes']:_0x577367[_0xadf9('0x33')];_0x1a4c24['order']=qs[_0xadf9('0x3d')](_0x1fb770[_0xadf9('0x34')][_0xadf9('0x3d')]);_0x1a4c24[_0xadf9('0x3e')]=qs['filters'](_['pick'](_0x1fb770[_0xadf9('0x34')],_0x577367[_0xadf9('0x35')]));if(_0x1fb770[_0xadf9('0x34')][_0xadf9('0x40')]){_0x1a4c24[_0xadf9('0x3e')]=_[_0xadf9('0x41')](_0x1a4c24[_0xadf9('0x3e')],{'$or':_[_0xadf9('0x2f')](_0x1a4c24[_0xadf9('0x38')],function(_0xc5a72){var _0x12344a={};_0x12344a[_0xc5a72]={'$like':'%'+_0x1fb770[_0xadf9('0x34')]['filter']+'%'};return _0x12344a;})});}_0x1a4c24=_[_0xadf9('0x41')]({},_0x1a4c24,_0x1fb770['options']);return _0x1fc5a5[_0xadf9('0x57')](_0x1a4c24);}})[_0xadf9('0x27')](function(_0x44e4c0){if(_0x44e4c0){_0x5510ae=_0x44e4c0[_0xadf9('0x39')];if(!_0x1fb770[_0xadf9('0x34')][_0xadf9('0x3a')](_0xadf9('0x3b'))){_0x1a4c24[_0xadf9('0x23')]=qs[_0xadf9('0x23')](_0x1fb770[_0xadf9('0x34')][_0xadf9('0x23')]);_0x1a4c24[_0xadf9('0x21')]=qs[_0xadf9('0x21')](_0x1fb770['query'][_0xadf9('0x21')]);}return _0x1fc5a5[_0xadf9('0x57')](_0x1a4c24);}})[_0xadf9('0x27')](function(_0x19b644){if(_0x19b644){return _0x19b644?{'count':_0x5510ae,'rows':_0x19b644}:null;}})['then'](respondWithResult(_0x19a7b5,null))[_0xadf9('0x48')](handleError(_0x19a7b5,null));};exports[_0xadf9('0x59')]=function(_0x2ee10a,_0x185124,_0x514161){return db[_0xadf9('0x30')][_0xadf9('0x58')]({'where':{'id':_0x2ee10a['params']['id']}})['then'](handleEntityNotFound(_0x185124,null))['then'](function(_0x431318){if(_0x431318){return db['sequelize']['transaction'](function(_0x487f4f){return db['Interval'][_0xadf9('0x28')]({'where':{'IntervalId':_0x2ee10a['params']['id']},'transaction':_0x487f4f})[_0xadf9('0x27')](function(_0x319206){var _0x5217c6=_[_0xadf9('0x2f')](_0x2ee10a[_0xadf9('0x4f')],function(_0x267048){delete _0x267048['id'];_0x267048[_0xadf9('0x56')]=_0x2ee10a[_0xadf9('0x4a')]['id'];return _0x267048;});return db['Interval'][_0xadf9('0x5a')](_0x5217c6,{'transaction':_0x487f4f});});})['then'](function(){return db['Interval']['findAll']({'where':{'IntervalId':_0x2ee10a[_0xadf9('0x4a')]['id']}});});}})[_0xadf9('0x27')](respondWithResult(_0x185124,null))['catch'](handleError(_0x185124,null));};
\ No newline at end of file
index 3549240..3d61f2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eae=['rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval','tools_intervals','rewrite','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x24708a,_0x1fc85a){var _0x574528=function(_0x14500b){while(--_0x14500b){_0x24708a['push'](_0x24708a['shift']());}};_0x574528(++_0x1fc85a);}(_0x7eae,0x104));var _0xe7ea=function(_0xc6be3a,_0x540e05){_0xc6be3a=_0xc6be3a-0x0;var _0x56a310=_0x7eae[_0xc6be3a];return _0x56a310;};'use strict';var _=require(_0xe7ea('0x0'));var util=require(_0xe7ea('0x1'));var logger=require(_0xe7ea('0x2'))('api');var moment=require(_0xe7ea('0x3'));var BPromise=require(_0xe7ea('0x4'));var rp=require(_0xe7ea('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe7ea('0x6'));var config=require(_0xe7ea('0x7'));var attributes=require('./interval.attributes');var extensions=require(_0xe7ea('0x8'));module[_0xe7ea('0x9')]=function(_0x235f88,_0x4a066e){return _0x235f88[_0xe7ea('0xa')](_0xe7ea('0xb'),attributes,{'tableName':_0xe7ea('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x337de6,_0x4f4d98){extensions[_0xe7ea('0xd')](_0x235f88,_0x337de6);},'afterBulkCreate':function(_0x92c45a,_0x3e749c,_0x4b19b0){_0x4b19b0();extensions[_0xe7ea('0xd')](_0x235f88,_0x92c45a[0x0]);},'afterUpdate':function(_0x3ecce8,_0x5f48c7){extensions[_0xe7ea('0xd')](_0x235f88,_0x3ecce8);},'afterDestroy':function(_0x152348,_0x4b3ae1){extensions[_0xe7ea('0xd')](_0x235f88,_0x152348);}}});};
\ No newline at end of file
+var _0xf0f8=['rewrite','lodash','util','../../config/logger','moment','path','rimraf','../../config/environment','../../components/extensions/rewrite','exports','define','Interval'];(function(_0x301785,_0x24110c){var _0x56cee7=function(_0x516fc7){while(--_0x516fc7){_0x301785['push'](_0x301785['shift']());}};_0x56cee7(++_0x24110c);}(_0xf0f8,0x1e1));var _0x8f0f=function(_0x3013b7,_0x4045e7){_0x3013b7=_0x3013b7-0x0;var _0x8adcd0=_0xf0f8[_0x3013b7];return _0x8adcd0;};'use strict';var _=require(_0x8f0f('0x0'));var util=require(_0x8f0f('0x1'));var logger=require(_0x8f0f('0x2'))('api');var moment=require(_0x8f0f('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8f0f('0x4'));var rimraf=require(_0x8f0f('0x5'));var config=require(_0x8f0f('0x6'));var attributes=require('./interval.attributes');var extensions=require(_0x8f0f('0x7'));module[_0x8f0f('0x8')]=function(_0x354037,_0x471750){return _0x354037[_0x8f0f('0x9')](_0x8f0f('0xa'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2618c8,_0x345c9c){extensions[_0x8f0f('0xb')](_0x354037,_0x2618c8);},'afterBulkCreate':function(_0x20ba88,_0x5ad78c,_0xc7472){_0xc7472();extensions[_0x8f0f('0xb')](_0x354037,_0x20ba88[0x0]);},'afterUpdate':function(_0x5f249a,_0x317cf9){extensions[_0x8f0f('0xb')](_0x354037,_0x5f249a);},'afterDestroy':function(_0x241b6a,_0x41bb51){extensions['rewrite'](_0x354037,_0x241b6a);}}});};
\ No newline at end of file
index 70af608..0ce2c3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x5ef905,_0x564b87){var _0x367808=function(_0x14f487){while(--_0x14f487){_0x5ef905['push'](_0x5ef905['shift']());}};_0x367808(++_0x564b87);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
+var _0xa9e0=['code','error','message','result','catch','Interval','findAll','options','raw','where','attributes','include','map','model','GetInterval','stringify','ShowInterval','find','then','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Interval,\x20%s,\x20%s','request\x20sent','debug','Interval,\x20%s,\x20%s,\x20%s'];(function(_0x1c289a,_0x277fe7){var _0x28d68e=function(_0x2f8e98){while(--_0x2f8e98){_0x1c289a['push'](_0x1c289a['shift']());}};_0x28d68e(++_0x277fe7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0a9e('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var config=require(_0x0a9e('0x7'));var jayson=require(_0x0a9e('0x8'));var client=jayson['client'][_0x0a9e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x441e3a,_0x2cc193,_0x5f41ea){return new BPromise(function(_0x503809,_0xe42b77){return client['request'](_0x441e3a,_0x5f41ea)['then'](function(_0x39753a){logger[_0x0a9e('0xa')](_0x0a9e('0xb'),_0x2cc193,_0x0a9e('0xc'));logger[_0x0a9e('0xd')](_0x0a9e('0xe'),_0x2cc193,'request\x20sent',JSON['stringify'](_0x39753a));if(_0x39753a['error']){if(_0x39753a['error'][_0x0a9e('0xf')]===0x1f4){logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0xe42b77(_0x39753a[_0x0a9e('0x10')]['message']);}logger[_0x0a9e('0x10')](_0x0a9e('0xb'),_0x2cc193,_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);return _0x503809(_0x39753a[_0x0a9e('0x10')][_0x0a9e('0x11')]);}else{logger['info'](_0x0a9e('0xb'),_0x2cc193,'request\x20sent');_0x503809(_0x39753a[_0x0a9e('0x12')]['message']);}})[_0x0a9e('0x13')](function(_0x12066b){logger['error'](_0x0a9e('0xb'),_0x2cc193,_0x12066b);_0xe42b77(_0x12066b);});});}exports['GetInterval']=function(_0x459eb1){var _0x478723=this;return new Promise(function(_0x106033,_0x205fd6){return db[_0x0a9e('0x14')][_0x0a9e('0x15')]({'raw':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x459eb1[_0x0a9e('0x16')]?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x18')]||null:null,'attributes':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x19')]||null:null,'limit':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')]['limit']||null:null,'include':_0x459eb1['options']?_0x459eb1[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x459eb1[_0x0a9e('0x16')]['include'],function(_0xfb6e48){return{'model':db[_0xfb6e48[_0x0a9e('0x1c')]],'as':_0xfb6e48['as'],'attributes':_0xfb6e48[_0x0a9e('0x19')],'include':_0xfb6e48[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0xfb6e48[_0x0a9e('0x1a')],function(_0x16b1ca){return{'model':db[_0x16b1ca['model']],'as':_0x16b1ca['as'],'attributes':_0x16b1ca['attributes'],'include':_0x16b1ca[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x16b1ca[_0x0a9e('0x1a')],function(_0x33161b){return{'model':db[_0x33161b['model']],'as':_0x33161b['as'],'attributes':_0x33161b[_0x0a9e('0x19')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x45a1e7){logger['info'](_0x0a9e('0x1d'),_0x459eb1);logger[_0x0a9e('0xd')](_0x0a9e('0x1d'),_0x459eb1,JSON[_0x0a9e('0x1e')](_0x45a1e7));_0x106033(_0x45a1e7);})[_0x0a9e('0x13')](function(_0x1538a4){logger[_0x0a9e('0x10')](_0x0a9e('0x1d'),_0x1538a4['message'],_0x459eb1);_0x205fd6(_0x478723[_0x0a9e('0x10')](0x1f4,_0x1538a4[_0x0a9e('0x11')]));});});};exports[_0x0a9e('0x1f')]=function(_0x2ec755){var _0x5c877d=this;return new Promise(function(_0x15b200,_0x40e7a3){return db[_0x0a9e('0x14')][_0x0a9e('0x20')]({'raw':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x17')]===undefined?!![]:![]:!![],'where':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')]['where']||null:null,'attributes':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755['options'][_0x0a9e('0x19')]||null:null,'include':_0x2ec755[_0x0a9e('0x16')]?_0x2ec755[_0x0a9e('0x16')][_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x2ec755['options'][_0x0a9e('0x1a')],function(_0x46f0a5){return{'model':db[_0x46f0a5[_0x0a9e('0x1c')]],'as':_0x46f0a5['as'],'attributes':_0x46f0a5[_0x0a9e('0x19')],'include':_0x46f0a5[_0x0a9e('0x1a')]?_[_0x0a9e('0x1b')](_0x46f0a5[_0x0a9e('0x1a')],function(_0x39e565){return{'model':db[_0x39e565['model']],'as':_0x39e565['as'],'attributes':_0x39e565[_0x0a9e('0x19')],'include':_0x39e565['include']?_[_0x0a9e('0x1b')](_0x39e565[_0x0a9e('0x1a')],function(_0x2b7e7f){return{'model':db[_0x2b7e7f[_0x0a9e('0x1c')]],'as':_0x2b7e7f['as'],'attributes':_0x2b7e7f['attributes']};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x21')](function(_0xd1836d){logger[_0x0a9e('0xa')](_0x0a9e('0x1f'),_0x2ec755);logger['debug']('ShowInterval',_0x2ec755,JSON[_0x0a9e('0x1e')](_0xd1836d));_0x15b200(_0xd1836d);})['catch'](function(_0x24936a){logger[_0x0a9e('0x10')](_0x0a9e('0x1f'),_0x24936a[_0x0a9e('0x11')],_0x2ec755);_0x40e7a3(_0x5c877d['error'](0x1f4,_0x24936a[_0x0a9e('0x11')]));});});};
\ No newline at end of file
index e666f76..c1a3fdc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['isAuthenticated','send','exports','express','Router','../../components/auth/service','./jira.controller','post'];(function(_0x585276,_0x553f5a){var _0x4a7181=function(_0x26f87d){while(--_0x26f87d){_0x585276['push'](_0x585276['shift']());}};_0x4a7181(++_0x553f5a);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4d90ae,_0x5368f1){_0x4d90ae=_0x4d90ae-0x0;var _0x14cd38=_0x5f2f[_0x4d90ae];return _0x14cd38;};'use strict';var express=require(_0xf5f2('0x0'));var router=express[_0xf5f2('0x1')]();var auth=require(_0xf5f2('0x2'));var controller=require(_0xf5f2('0x3'));router[_0xf5f2('0x4')]('/',auth[_0xf5f2('0x5')](),controller[_0xf5f2('0x6')]);module[_0xf5f2('0x7')]=router;
\ No newline at end of file
+var _0x2ef3=['./jira.controller','post','isAuthenticated','exports','express','Router','../../components/auth/service'];(function(_0x17d4de,_0x46c04f){var _0x4f6bf7=function(_0x1f8ce1){while(--_0x1f8ce1){_0x17d4de['push'](_0x17d4de['shift']());}};_0x4f6bf7(++_0x46c04f);}(_0x2ef3,0xba));var _0x32ef=function(_0x47c73f,_0x54108c){_0x47c73f=_0x47c73f-0x0;var _0x950404=_0x2ef3[_0x47c73f];return _0x950404;};'use strict';var express=require(_0x32ef('0x0'));var router=express[_0x32ef('0x1')]();var auth=require(_0x32ef('0x2'));var controller=require(_0x32ef('0x3'));router[_0x32ef('0x4')]('/',auth[_0x32ef('0x5')](),controller['send']);module[_0x32ef('0x6')]=router;
\ No newline at end of file
index e3fb3fd..ebe243b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x385a=['Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','openIssue','send','headers','x-forwarded-for','connection','socket','body','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20','stringify','issuetype','fields','customfield_11501','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','base64','request','setEncoding','utf8','data','statusCode','json','error','status'];(function(_0x52ea08,_0x15d935){var _0x28d546=function(_0x4a3aa7){while(--_0x4a3aa7){_0x52ea08['push'](_0x52ea08['shift']());}};_0x28d546(++_0x15d935);}(_0x385a,0x1d7));var _0xa385=function(_0x1f3ee8,_0x5dc6da){_0x1f3ee8=_0x1f3ee8-0x0;var _0x966a63=_0x385a[_0x1f3ee8];return _0x966a63;};'use strict';var BPromise=require('bluebird');var https=require(_0xa385('0x0'));var logger=require(_0xa385('0x1'))(_0xa385('0x2'));var USERNAME=_0xa385('0x3');var PASSWORD=_0xa385('0x4');function openIssue(_0x515ce6,_0x18c550){var _0x5ae8de={'fields':{'project':{'key':_0x515ce6[_0xa385('0x5')]||'MOTGUI'},'summary':(_0x515ce6[_0xa385('0x6')]||_0xa385('0x7'))+_0xa385('0x8')+_0x515ce6['ip'],'description':_0x515ce6['description']||JSON[_0xa385('0x9')](_0x515ce6),'issuetype':{'name':_0x515ce6[_0xa385('0xa')]||'Bug'}}};_0x5ae8de[_0xa385('0xb')]['customfield_11500']=_0x515ce6['email'];_0x5ae8de[_0xa385('0xb')][_0xa385('0xc')]=_0x515ce6['oldToken'];_0x5ae8de[_0xa385('0xb')][_0xa385('0xd')]=_0x515ce6[_0xa385('0xe')];_0x5ae8de[_0xa385('0xb')][_0xa385('0xf')]=_0x515ce6[_0xa385('0x10')];_0x5ae8de[_0xa385('0xb')][_0xa385('0x11')]=_0x515ce6[_0xa385('0x12')];_0x5ae8de[_0xa385('0xb')][_0xa385('0x13')]=_0x515ce6['ip'];var _0x56ae87={'host':_0xa385('0x14'),'port':0x1bb,'path':_0xa385('0x15'),'method':_0xa385('0x16'),'timeout':0x4e20,'headers':{'Content-Type':_0xa385('0x17'),'Authorization':_0xa385('0x18')+new Buffer(USERNAME+':'+PASSWORD)[_0xa385('0x19')](_0xa385('0x1a'))}};var _0x24b366=JSON[_0xa385('0x9')](_0x5ae8de);var _0x46c875=https[_0xa385('0x1b')](_0x56ae87,function(_0x543cb9){_0x543cb9[_0xa385('0x1c')](_0xa385('0x1d'));var _0x3250b8='';_0x543cb9['on'](_0xa385('0x1e'),function(_0x5d9057){_0x3250b8+=_0x5d9057;});_0x543cb9['on']('end',function(){if(_0x18c550){return _0x18c550['status'](_0x543cb9[_0xa385('0x1f')])[_0xa385('0x20')](JSON['parse'](_0x3250b8));}});});_0x46c875['on'](_0xa385('0x21'),function(_0x5893dd){if(_0x18c550){return _0x18c550[_0xa385('0x22')](0x1f4)[_0xa385('0x20')]({'errors':[{'message':_0xa385('0x23'),'type':_0xa385('0x24')}]});}});_0x46c875[_0xa385('0x25')](_0x24b366);_0x46c875[_0xa385('0x26')]();}exports[_0xa385('0x27')]=openIssue;exports[_0xa385('0x28')]=function(_0x1803f7,_0xed5c8b){_0x1803f7['body']['ip']=_0x1803f7[_0xa385('0x29')][_0xa385('0x2a')]||_0x1803f7[_0xa385('0x2b')]['remoteAddress']||_0x1803f7[_0xa385('0x2c')]['remoteAddress']||_0x1803f7[_0xa385('0x2b')][_0xa385('0x2c')]['remoteAddress'];return openIssue(_0x1803f7[_0xa385('0x2d')],_0xed5c8b);};
\ No newline at end of file
+var _0x9521=['description','stringify','issuetype','fields','customfield_11500','email','customfield_11501','oldToken','customfield_11502','newToken','customfield_11503','name','customfield_11504','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','application/json','Basic\x20','toString','request','setEncoding','utf8','data','end','status','statusCode','json','parse','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','openIssue','send','body','headers','connection','remoteAddress','socket','bluebird','https','../../config/logger','api','support','3eAmWpBVP0','key','summary','Report','\x20from\x20'];(function(_0xb862d5,_0x2270b0){var _0x28d11b=function(_0x4c964e){while(--_0x4c964e){_0xb862d5['push'](_0xb862d5['shift']());}};_0x28d11b(++_0x2270b0);}(_0x9521,0xf5));var _0x1952=function(_0x1c208e,_0x2a0a5b){_0x1c208e=_0x1c208e-0x0;var _0x5104ff=_0x9521[_0x1c208e];return _0x5104ff;};'use strict';var BPromise=require(_0x1952('0x0'));var https=require(_0x1952('0x1'));var logger=require(_0x1952('0x2'))(_0x1952('0x3'));var USERNAME=_0x1952('0x4');var PASSWORD=_0x1952('0x5');function openIssue(_0x2d424,_0x10dd32){var _0x2ee655={'fields':{'project':{'key':_0x2d424[_0x1952('0x6')]||'MOTGUI'},'summary':(_0x2d424[_0x1952('0x7')]||_0x1952('0x8'))+_0x1952('0x9')+_0x2d424['ip'],'description':_0x2d424[_0x1952('0xa')]||JSON[_0x1952('0xb')](_0x2d424),'issuetype':{'name':_0x2d424[_0x1952('0xc')]||'Bug'}}};_0x2ee655[_0x1952('0xd')][_0x1952('0xe')]=_0x2d424[_0x1952('0xf')];_0x2ee655[_0x1952('0xd')][_0x1952('0x10')]=_0x2d424[_0x1952('0x11')];_0x2ee655['fields'][_0x1952('0x12')]=_0x2d424[_0x1952('0x13')];_0x2ee655[_0x1952('0xd')][_0x1952('0x14')]=_0x2d424[_0x1952('0x15')];_0x2ee655[_0x1952('0xd')][_0x1952('0x16')]=_0x2d424[_0x1952('0x17')];_0x2ee655[_0x1952('0xd')][_0x1952('0x18')]=_0x2d424['ip'];var _0x4d0587={'host':_0x1952('0x19'),'port':0x1bb,'path':_0x1952('0x1a'),'method':_0x1952('0x1b'),'timeout':0x4e20,'headers':{'Content-Type':_0x1952('0x1c'),'Authorization':_0x1952('0x1d')+new Buffer(USERNAME+':'+PASSWORD)[_0x1952('0x1e')]('base64')}};var _0x43ef56=JSON[_0x1952('0xb')](_0x2ee655);var _0x247d32=https[_0x1952('0x1f')](_0x4d0587,function(_0xb49746){_0xb49746[_0x1952('0x20')](_0x1952('0x21'));var _0x39b14d='';_0xb49746['on'](_0x1952('0x22'),function(_0x4d794f){_0x39b14d+=_0x4d794f;});_0xb49746['on'](_0x1952('0x23'),function(){if(_0x10dd32){return _0x10dd32[_0x1952('0x24')](_0xb49746[_0x1952('0x25')])[_0x1952('0x26')](JSON[_0x1952('0x27')](_0x39b14d));}});});_0x247d32['on'](_0x1952('0x28'),function(_0x2ea143){if(_0x10dd32){return _0x10dd32[_0x1952('0x24')](0x1f4)[_0x1952('0x26')]({'errors':[{'message':_0x1952('0x29'),'type':_0x1952('0x2a')}]});}});_0x247d32[_0x1952('0x2b')](_0x43ef56);_0x247d32[_0x1952('0x23')]();}exports[_0x1952('0x2c')]=openIssue;exports[_0x1952('0x2d')]=function(_0x63244b,_0x433dc4){_0x63244b[_0x1952('0x2e')]['ip']=_0x63244b[_0x1952('0x2f')]['x-forwarded-for']||_0x63244b[_0x1952('0x30')][_0x1952('0x31')]||_0x63244b['socket'][_0x1952('0x31')]||_0x63244b['connection'][_0x1952('0x32')][_0x1952('0x31')];return openIssue(_0x63244b[_0x1952('0x2e')],_0x433dc4);};
\ No newline at end of file
index 32dc8b7..30c394e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','index'];(function(_0x4b0acc,_0xadab2e){var _0x32af3b=function(_0x44ad69){while(--_0x44ad69){_0x4b0acc['push'](_0x4b0acc['shift']());}};_0x32af3b(++_0xadab2e);}(_0xe706,0xa3));var _0x6e70=function(_0x2e5f9c,_0x134a52){_0x2e5f9c=_0x2e5f9c-0x0;var _0x538b44=_0xe706[_0x2e5f9c];return _0x538b44;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var controller=require(_0x6e70('0x9'));router[_0x6e70('0xa')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0xc')]);router[_0x6e70('0xa')](_0x6e70('0xd'),auth[_0x6e70('0xb')](),controller[_0x6e70('0xe')]);router[_0x6e70('0xa')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x10')]);router[_0x6e70('0x11')]('/',auth[_0x6e70('0xb')](),controller[_0x6e70('0x12')]);router[_0x6e70('0x13')](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller['update']);router['delete'](_0x6e70('0xf'),auth[_0x6e70('0xb')](),controller[_0x6e70('0x14')]);module[_0x6e70('0x15')]=router;
\ No newline at end of file
+var _0xda55=['../../components/auth/service','../../components/interaction/service','./jscriptyAnswerReport.controller','isAuthenticated','get','/describe','describe','/:id','show','create','put','update','delete','destroy','multer','util','express','Router','fs-extra'];(function(_0x39609a,_0x28a563){var _0xecd92=function(_0x57241a){while(--_0x57241a){_0x39609a['push'](_0x39609a['shift']());}};_0xecd92(++_0x28a563);}(_0xda55,0x6d));var _0x5da5=function(_0x11b547,_0x5c83eb){_0x11b547=_0x11b547-0x0;var _0x4253c4=_0xda55[_0x11b547];return _0x4253c4;};'use strict';var multer=require(_0x5da5('0x0'));var util=require(_0x5da5('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5da5('0x2'));var router=express[_0x5da5('0x3')]();var fs_extra=require(_0x5da5('0x4'));var auth=require(_0x5da5('0x5'));var interaction=require(_0x5da5('0x6'));var config=require('../../config/environment');var controller=require(_0x5da5('0x7'));router['get']('/',auth[_0x5da5('0x8')](),controller['index']);router[_0x5da5('0x9')](_0x5da5('0xa'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xb')]);router[_0x5da5('0x9')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0xd')]);router['post']('/',auth[_0x5da5('0x8')](),controller[_0x5da5('0xe')]);router[_0x5da5('0xf')](_0x5da5('0xc'),auth[_0x5da5('0x8')](),controller[_0x5da5('0x10')]);router[_0x5da5('0x11')]('/:id',auth[_0x5da5('0x8')](),controller[_0x5da5('0x12')]);module['exports']=router;
\ No newline at end of file
index de1db62..22fa68e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0x7a54,0x106));var _0x47a5=function(_0x9fcc56,_0x143dd4){_0x9fcc56=_0x9fcc56-0x0;var _0x415986=_0x7a54[_0x9fcc56];return _0x415986;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x7a54,0x106));var _0x47a5=function(_0x446bb0,_0x4f04c6){_0x446bb0=_0x446bb0-0x0;var _0x26f941=_0x7a54[_0x446bb0];return _0x26f941;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index ab4ab38..60cd244 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9576=['rows','catch','show','params','intersection','includeAll','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','limit','count','set','Content-Range','json','reject','save','update','then','destroy','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','include','findAll'];(function(_0x184e0d,_0x488457){var _0x31aadc=function(_0x3c6483){while(--_0x3c6483){_0x184e0d['push'](_0x184e0d['shift']());}};_0x31aadc(++_0x488457);}(_0x9576,0x182));var _0x6957=function(_0xda9704,_0x43782a){_0xda9704=_0xda9704-0x0;var _0x266dfe=_0x9576[_0xda9704];return _0x266dfe;};'use strict';var emlformat=require(_0x6957('0x0'));var rimraf=require(_0x6957('0x1'));var zipdir=require(_0x6957('0x2'));var jsonpatch=require(_0x6957('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6957('0x4'));var Mustache=require(_0x6957('0x5'));var util=require(_0x6957('0x6'));var path=require(_0x6957('0x7'));var sox=require(_0x6957('0x8'));var csv=require(_0x6957('0x9'));var ejs=require(_0x6957('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6957('0xb'));var squel=require(_0x6957('0xc'));var crypto=require(_0x6957('0xd'));var jsforce=require(_0x6957('0xe'));var deskjs=require(_0x6957('0xf'));var toCsv=require(_0x6957('0x9'));var querystring=require('querystring');var Papa=require(_0x6957('0x10'));var Redis=require(_0x6957('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x6957('0x12'));var hardwareService=require(_0x6957('0x13'));var logger=require(_0x6957('0x14'))(_0x6957('0x15'));var utils=require(_0x6957('0x16'));var config=require(_0x6957('0x17'));var licenseUtil=require(_0x6957('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5888d6,_0x548647){_0x548647=_0x548647||0xcc;return function(_0x3f40f0){if(_0x3f40f0){return _0x5888d6[_0x6957('0x19')](_0x548647);}return _0x5888d6[_0x6957('0x1a')](_0x548647)[_0x6957('0x1b')]();};}function respondWithResult(_0x345c3e,_0x1fd3d9){_0x1fd3d9=_0x1fd3d9||0xc8;return function(_0x25d32e){if(_0x25d32e){return _0x345c3e['status'](_0x1fd3d9)['json'](_0x25d32e);}};}function respondWithFilteredResult(_0x4f82cb,_0x35fffc){return function(_0x256ac7){if(_0x256ac7){var _0x228f76=typeof _0x35fffc[_0x6957('0x1c')]==='undefined'&&typeof _0x35fffc[_0x6957('0x1d')]==='undefined';var _0x2a39b5=_0x256ac7[_0x6957('0x1e')];var _0x49aa31=_0x228f76?0x0:_0x35fffc[_0x6957('0x1c')];var _0x448ff6=_0x228f76?_0x256ac7[_0x6957('0x1e')]:_0x35fffc['offset']+_0x35fffc[_0x6957('0x1d')];var _0x2c103c;if(_0x448ff6>=_0x2a39b5){_0x448ff6=_0x2a39b5;_0x2c103c=0xc8;}else{_0x2c103c=0xce;}_0x4f82cb[_0x6957('0x1a')](_0x2c103c);return _0x4f82cb[_0x6957('0x1f')](_0x6957('0x20'),_0x49aa31+'-'+_0x448ff6+'/'+_0x2a39b5)[_0x6957('0x21')](_0x256ac7);}return null;};}function patchUpdates(_0x35ee5b){return function(_0x3081b2){try{jsonpatch['apply'](_0x3081b2,_0x35ee5b,!![]);}catch(_0x5ee3f8){return BPromise[_0x6957('0x22')](_0x5ee3f8);}return _0x3081b2[_0x6957('0x23')]();};}function saveUpdates(_0x18037f,_0x2569f4){return function(_0x3591fa){if(_0x3591fa){return _0x3591fa[_0x6957('0x24')](_0x18037f)[_0x6957('0x25')](function(_0x310a5e){return _0x310a5e;});}return null;};}function removeEntity(_0x56b0ba,_0x2b2dcd){return function(_0x3c9de7){if(_0x3c9de7){return _0x3c9de7[_0x6957('0x26')]()[_0x6957('0x25')](function(){_0x56b0ba['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa1e6af,_0x2a57b6){return function(_0x5c4e49){if(!_0x5c4e49){_0xa1e6af['sendStatus'](0x194);}return _0x5c4e49;};}function handleError(_0x320e7d,_0xa2f92f){_0xa2f92f=_0xa2f92f||0x1f4;return function(_0x3bc22f){logger['error'](_0x3bc22f[_0x6957('0x27')]);if(_0x3bc22f[_0x6957('0x28')]){delete _0x3bc22f[_0x6957('0x28')];}_0x320e7d[_0x6957('0x1a')](_0xa2f92f)[_0x6957('0x29')](_0x3bc22f);};}exports[_0x6957('0x2a')]=function(_0x2d33ef,_0x320e1a){var _0x595770={},_0x2e7fe1={},_0x3a6e07={'count':0x0,'rows':[]};var _0xd02a9=_[_0x6957('0x2b')](db[_0x6957('0x2c')][_0x6957('0x2d')],function(_0x3f8745){return{'name':_0x3f8745[_0x6957('0x2e')],'type':_0x3f8745[_0x6957('0x2f')][_0x6957('0x30')]};});_0x2e7fe1[_0x6957('0x31')]=_['map'](_0xd02a9,'name');_0x2e7fe1[_0x6957('0x32')]=_[_0x6957('0x33')](_0x2d33ef[_0x6957('0x32')]);_0x2e7fe1[_0x6957('0x34')]=_['intersection'](_0x2e7fe1[_0x6957('0x31')],_0x2e7fe1[_0x6957('0x32')]);_0x595770[_0x6957('0x35')]=_['intersection'](_0x2e7fe1['model'],qs[_0x6957('0x36')](_0x2d33ef[_0x6957('0x32')][_0x6957('0x36')]));_0x595770['attributes']=_0x595770[_0x6957('0x35')][_0x6957('0x37')]?_0x595770[_0x6957('0x35')]:_0x2e7fe1[_0x6957('0x31')];if(!_0x2d33ef[_0x6957('0x32')][_0x6957('0x38')](_0x6957('0x39'))){_0x595770[_0x6957('0x1d')]=qs[_0x6957('0x1d')](_0x2d33ef['query'][_0x6957('0x1d')]);_0x595770[_0x6957('0x1c')]=qs[_0x6957('0x1c')](_0x2d33ef['query']['offset']);}_0x595770['order']=qs[_0x6957('0x3a')](_0x2d33ef['query']['sort']);_0x595770[_0x6957('0x3b')]=qs[_0x6957('0x34')](_['pick'](_0x2d33ef['query'],_0x2e7fe1[_0x6957('0x34')]),_0xd02a9);if(_0x2d33ef[_0x6957('0x32')][_0x6957('0x3c')]){_0x595770[_0x6957('0x3b')]=_[_0x6957('0x3d')](_0x595770['where'],{'$or':_[_0x6957('0x2b')](_0xd02a9,function(_0x5c9be3){if(_0x5c9be3['type']!=='VIRTUAL'){var _0x5ab079={};_0x5ab079[_0x5c9be3['name']]={'$like':'%'+_0x2d33ef['query']['filter']+'%'};return _0x5ab079;}})});}_0x595770=_['merge']({},_0x595770,_0x2d33ef['options']);var _0x20caa3={'where':_0x595770[_0x6957('0x3b')]};return db[_0x6957('0x2c')][_0x6957('0x1e')](_0x20caa3)[_0x6957('0x25')](function(_0x51b189){_0x3a6e07[_0x6957('0x1e')]=_0x51b189;if(_0x2d33ef[_0x6957('0x32')]['includeAll']){_0x595770[_0x6957('0x3e')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0x6957('0x3f')](_0x595770);})[_0x6957('0x25')](function(_0x22ec26){_0x3a6e07[_0x6957('0x40')]=_0x22ec26;return _0x3a6e07;})[_0x6957('0x25')](respondWithFilteredResult(_0x320e1a,_0x595770))[_0x6957('0x41')](handleError(_0x320e1a,null));};exports[_0x6957('0x42')]=function(_0x16575e,_0x18fb2a){var _0x35fa2d={'raw':!![],'where':{'id':_0x16575e[_0x6957('0x43')]['id']}},_0x421526={};_0x421526[_0x6957('0x31')]=_[_0x6957('0x33')](db[_0x6957('0x2c')][_0x6957('0x2d')]);_0x421526['query']=_[_0x6957('0x33')](_0x16575e['query']);_0x421526['filters']=_[_0x6957('0x44')](_0x421526['model'],_0x421526['query']);_0x35fa2d[_0x6957('0x35')]=_[_0x6957('0x44')](_0x421526[_0x6957('0x31')],qs[_0x6957('0x36')](_0x16575e[_0x6957('0x32')][_0x6957('0x36')]));_0x35fa2d[_0x6957('0x35')]=_0x35fa2d[_0x6957('0x35')][_0x6957('0x37')]?_0x35fa2d[_0x6957('0x35')]:_0x421526['model'];if(_0x16575e['query'][_0x6957('0x45')]){_0x35fa2d['include']=[{'all':!![]}];}_0x35fa2d=_[_0x6957('0x3d')]({},_0x35fa2d,_0x16575e[_0x6957('0x46')]);return db['JscriptyAnswerReport'][_0x6957('0x47')](_0x35fa2d)[_0x6957('0x25')](handleEntityNotFound(_0x18fb2a,null))[_0x6957('0x25')](respondWithResult(_0x18fb2a,null))[_0x6957('0x41')](handleError(_0x18fb2a,null));};exports[_0x6957('0x48')]=function(_0x497e99,_0x9763aa){return db[_0x6957('0x2c')][_0x6957('0x48')](_0x497e99[_0x6957('0x49')],{})['then'](respondWithResult(_0x9763aa,0xc9))[_0x6957('0x41')](handleError(_0x9763aa,null));};exports[_0x6957('0x24')]=function(_0x5c5d5b,_0x1768ba){if(_0x5c5d5b[_0x6957('0x49')]['id']){delete _0x5c5d5b[_0x6957('0x49')]['id'];}return db[_0x6957('0x2c')]['find']({'where':{'id':_0x5c5d5b['params']['id']}})[_0x6957('0x25')](handleEntityNotFound(_0x1768ba,null))[_0x6957('0x25')](saveUpdates(_0x5c5d5b[_0x6957('0x49')],null))[_0x6957('0x25')](respondWithResult(_0x1768ba,null))['catch'](handleError(_0x1768ba,null));};exports[_0x6957('0x26')]=function(_0x4ca6dc,_0x10fac5){return db['JscriptyAnswerReport'][_0x6957('0x47')]({'where':{'id':_0x4ca6dc['params']['id']}})[_0x6957('0x25')](handleEntityNotFound(_0x10fac5,null))['then'](removeEntity(_0x10fac5,null))['catch'](handleError(_0x10fac5,null));};exports[_0x6957('0x4a')]=function(_0x371e29,_0x38e917){return db[_0x6957('0x2c')][_0x6957('0x4a')]()[_0x6957('0x25')](respondWithResult(_0x38e917,null))[_0x6957('0x41')](handleError(_0x38e917,null));};
\ No newline at end of file
+var _0xabce=['../../mysqldb','status','end','json','limit','count','offset','Content-Range','apply','reject','save','update','then','sendStatus','error','name','send','index','map','JscriptyAnswerReport','rawAttributes','type','model','query','keys','filters','attributes','fields','length','sort','where','filter','VIRTUAL','merge','includeAll','findAll','rows','catch','params','intersection','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','ejs','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x4269e8,_0x11f7b8){var _0x18b0e0=function(_0x24afb2){while(--_0x24afb2){_0x4269e8['push'](_0x4269e8['shift']());}};_0x18b0e0(++_0x11f7b8);}(_0xabce,0x103));var _0xeabc=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0xabce[_0xb0f7c3];return _0x28ea68;};'use strict';var emlformat=require(_0xeabc('0x0'));var rimraf=require(_0xeabc('0x1'));var zipdir=require(_0xeabc('0x2'));var jsonpatch=require(_0xeabc('0x3'));var rp=require(_0xeabc('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xeabc('0x5'));var util=require(_0xeabc('0x6'));var path=require(_0xeabc('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xeabc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xeabc('0x9'));var squel=require('squel');var crypto=require(_0xeabc('0xa'));var jsforce=require(_0xeabc('0xb'));var deskjs=require(_0xeabc('0xc'));var toCsv=require('to-csv');var querystring=require(_0xeabc('0xd'));var Papa=require(_0xeabc('0xe'));var Redis=require(_0xeabc('0xf'));var authService=require(_0xeabc('0x10'));var qs=require(_0xeabc('0x11'));var as=require(_0xeabc('0x12'));var hardwareService=require(_0xeabc('0x13'));var logger=require(_0xeabc('0x14'))(_0xeabc('0x15'));var utils=require(_0xeabc('0x16'));var config=require(_0xeabc('0x17'));var licenseUtil=require(_0xeabc('0x18'));var db=require(_0xeabc('0x19'))['db'];function respondWithStatusCode(_0x3fd0b5,_0x36a92e){_0x36a92e=_0x36a92e||0xcc;return function(_0xcfbf06){if(_0xcfbf06){return _0x3fd0b5['sendStatus'](_0x36a92e);}return _0x3fd0b5[_0xeabc('0x1a')](_0x36a92e)[_0xeabc('0x1b')]();};}function respondWithResult(_0x3251c6,_0x55f0de){_0x55f0de=_0x55f0de||0xc8;return function(_0x5f4ee8){if(_0x5f4ee8){return _0x3251c6[_0xeabc('0x1a')](_0x55f0de)[_0xeabc('0x1c')](_0x5f4ee8);}};}function respondWithFilteredResult(_0x326bac,_0x53d5cb){return function(_0xf913d7){if(_0xf913d7){var _0x638976=typeof _0x53d5cb['offset']==='undefined'&&typeof _0x53d5cb[_0xeabc('0x1d')]==='undefined';var _0x3d0e21=_0xf913d7[_0xeabc('0x1e')];var _0x58a3c0=_0x638976?0x0:_0x53d5cb[_0xeabc('0x1f')];var _0x31dd53=_0x638976?_0xf913d7[_0xeabc('0x1e')]:_0x53d5cb[_0xeabc('0x1f')]+_0x53d5cb[_0xeabc('0x1d')];var _0x5d92e5;if(_0x31dd53>=_0x3d0e21){_0x31dd53=_0x3d0e21;_0x5d92e5=0xc8;}else{_0x5d92e5=0xce;}_0x326bac[_0xeabc('0x1a')](_0x5d92e5);return _0x326bac['set'](_0xeabc('0x20'),_0x58a3c0+'-'+_0x31dd53+'/'+_0x3d0e21)[_0xeabc('0x1c')](_0xf913d7);}return null;};}function patchUpdates(_0x502947){return function(_0x28063a){try{jsonpatch[_0xeabc('0x21')](_0x28063a,_0x502947,!![]);}catch(_0x254590){return BPromise[_0xeabc('0x22')](_0x254590);}return _0x28063a[_0xeabc('0x23')]();};}function saveUpdates(_0x4e99a4,_0xecdbf){return function(_0x10c675){if(_0x10c675){return _0x10c675[_0xeabc('0x24')](_0x4e99a4)['then'](function(_0x457f27){return _0x457f27;});}return null;};}function removeEntity(_0x3854d2,_0x214953){return function(_0x319119){if(_0x319119){return _0x319119['destroy']()[_0xeabc('0x25')](function(){_0x3854d2['status'](0xcc)[_0xeabc('0x1b')]();});}};}function handleEntityNotFound(_0x4d4e29,_0x811f0d){return function(_0x12acbd){if(!_0x12acbd){_0x4d4e29[_0xeabc('0x26')](0x194);}return _0x12acbd;};}function handleError(_0x3f194e,_0x3a1a04){_0x3a1a04=_0x3a1a04||0x1f4;return function(_0x137293){logger[_0xeabc('0x27')](_0x137293['stack']);if(_0x137293['name']){delete _0x137293[_0xeabc('0x28')];}_0x3f194e['status'](_0x3a1a04)[_0xeabc('0x29')](_0x137293);};}exports[_0xeabc('0x2a')]=function(_0x48fb52,_0x2163e6){var _0x38572d={},_0x2b568f={},_0x2f8633={'count':0x0,'rows':[]};var _0x149170=_[_0xeabc('0x2b')](db[_0xeabc('0x2c')][_0xeabc('0x2d')],function(_0x2915c1){return{'name':_0x2915c1['fieldName'],'type':_0x2915c1[_0xeabc('0x2e')]['key']};});_0x2b568f[_0xeabc('0x2f')]=_[_0xeabc('0x2b')](_0x149170,_0xeabc('0x28'));_0x2b568f[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x48fb52[_0xeabc('0x30')]);_0x2b568f[_0xeabc('0x32')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],_0x2b568f[_0xeabc('0x30')]);_0x38572d[_0xeabc('0x33')]=_['intersection'](_0x2b568f[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x48fb52[_0xeabc('0x30')]['fields']));_0x38572d[_0xeabc('0x33')]=_0x38572d[_0xeabc('0x33')][_0xeabc('0x35')]?_0x38572d['attributes']:_0x2b568f[_0xeabc('0x2f')];if(!_0x48fb52[_0xeabc('0x30')]['hasOwnProperty']('nolimit')){_0x38572d[_0xeabc('0x1d')]=qs[_0xeabc('0x1d')](_0x48fb52['query'][_0xeabc('0x1d')]);_0x38572d[_0xeabc('0x1f')]=qs[_0xeabc('0x1f')](_0x48fb52[_0xeabc('0x30')][_0xeabc('0x1f')]);}_0x38572d['order']=qs[_0xeabc('0x36')](_0x48fb52['query'][_0xeabc('0x36')]);_0x38572d[_0xeabc('0x37')]=qs[_0xeabc('0x32')](_['pick'](_0x48fb52['query'],_0x2b568f[_0xeabc('0x32')]),_0x149170);if(_0x48fb52['query'][_0xeabc('0x38')]){_0x38572d['where']=_['merge'](_0x38572d['where'],{'$or':_['map'](_0x149170,function(_0x1e222a){if(_0x1e222a['type']!==_0xeabc('0x39')){var _0x1ebfb6={};_0x1ebfb6[_0x1e222a['name']]={'$like':'%'+_0x48fb52[_0xeabc('0x30')]['filter']+'%'};return _0x1ebfb6;}})});}_0x38572d=_[_0xeabc('0x3a')]({},_0x38572d,_0x48fb52['options']);var _0xbd7f03={'where':_0x38572d[_0xeabc('0x37')]};return db[_0xeabc('0x2c')]['count'](_0xbd7f03)['then'](function(_0x54a3ae){_0x2f8633[_0xeabc('0x1e')]=_0x54a3ae;if(_0x48fb52[_0xeabc('0x30')][_0xeabc('0x3b')]){_0x38572d['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xeabc('0x3c')](_0x38572d);})[_0xeabc('0x25')](function(_0x5e9cb3){_0x2f8633[_0xeabc('0x3d')]=_0x5e9cb3;return _0x2f8633;})['then'](respondWithFilteredResult(_0x2163e6,_0x38572d))[_0xeabc('0x3e')](handleError(_0x2163e6,null));};exports['show']=function(_0x5defaa,_0x5cd04d){var _0x25958b={'raw':!![],'where':{'id':_0x5defaa[_0xeabc('0x3f')]['id']}},_0x37c926={};_0x37c926[_0xeabc('0x2f')]=_['keys'](db[_0xeabc('0x2c')]['rawAttributes']);_0x37c926[_0xeabc('0x30')]=_[_0xeabc('0x31')](_0x5defaa[_0xeabc('0x30')]);_0x37c926[_0xeabc('0x32')]=_[_0xeabc('0x40')](_0x37c926['model'],_0x37c926['query']);_0x25958b[_0xeabc('0x33')]=_['intersection'](_0x37c926[_0xeabc('0x2f')],qs[_0xeabc('0x34')](_0x5defaa['query'][_0xeabc('0x34')]));_0x25958b[_0xeabc('0x33')]=_0x25958b[_0xeabc('0x33')][_0xeabc('0x35')]?_0x25958b[_0xeabc('0x33')]:_0x37c926[_0xeabc('0x2f')];if(_0x5defaa[_0xeabc('0x30')]['includeAll']){_0x25958b[_0xeabc('0x41')]=[{'all':!![]}];}_0x25958b=_[_0xeabc('0x3a')]({},_0x25958b,_0x5defaa[_0xeabc('0x42')]);return db[_0xeabc('0x2c')][_0xeabc('0x43')](_0x25958b)[_0xeabc('0x25')](handleEntityNotFound(_0x5cd04d,null))[_0xeabc('0x25')](respondWithResult(_0x5cd04d,null))[_0xeabc('0x3e')](handleError(_0x5cd04d,null));};exports[_0xeabc('0x44')]=function(_0x44e714,_0x5689fc){return db[_0xeabc('0x2c')][_0xeabc('0x44')](_0x44e714[_0xeabc('0x45')],{})[_0xeabc('0x25')](respondWithResult(_0x5689fc,0xc9))[_0xeabc('0x3e')](handleError(_0x5689fc,null));};exports[_0xeabc('0x24')]=function(_0x268d95,_0x48df43){if(_0x268d95[_0xeabc('0x45')]['id']){delete _0x268d95[_0xeabc('0x45')]['id'];}return db[_0xeabc('0x2c')][_0xeabc('0x43')]({'where':{'id':_0x268d95[_0xeabc('0x3f')]['id']}})['then'](handleEntityNotFound(_0x48df43,null))[_0xeabc('0x25')](saveUpdates(_0x268d95[_0xeabc('0x45')],null))[_0xeabc('0x25')](respondWithResult(_0x48df43,null))[_0xeabc('0x3e')](handleError(_0x48df43,null));};exports['destroy']=function(_0x400b82,_0x1b3aa4){return db['JscriptyAnswerReport'][_0xeabc('0x43')]({'where':{'id':_0x400b82['params']['id']}})[_0xeabc('0x25')](handleEntityNotFound(_0x1b3aa4,null))['then'](removeEntity(_0x1b3aa4,null))[_0xeabc('0x3e')](handleError(_0x1b3aa4,null));};exports[_0xeabc('0x46')]=function(_0x38f988,_0x1524c3){return db[_0xeabc('0x2c')][_0xeabc('0x46')]()[_0xeabc('0x25')](respondWithResult(_0x1524c3,null))[_0xeabc('0x3e')](handleError(_0x1524c3,null));};
\ No newline at end of file
index 9b5c2c2..7a3e921 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7034=['lodash','util','../../config/logger','bluebird','../../config/environment','./jscriptyAnswerReport.attributes','exports','define','JscriptyAnswerReport','report_jscripty_answers'];(function(_0xb7339e,_0x22a52b){var _0x4a74f2=function(_0x3f4121){while(--_0x3f4121){_0xb7339e['push'](_0xb7339e['shift']());}};_0x4a74f2(++_0x22a52b);}(_0x7034,0x1a4));var _0x4703=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x7034[_0x5d2803];return _0xdcad2c;};'use strict';var _=require(_0x4703('0x0'));var util=require(_0x4703('0x1'));var logger=require(_0x4703('0x2'))('api');var moment=require('moment');var BPromise=require(_0x4703('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x4703('0x4'));var attributes=require(_0x4703('0x5'));module[_0x4703('0x6')]=function(_0x4fa697,_0x2c1483){return _0x4fa697[_0x4703('0x7')](_0x4703('0x8'),attributes,{'tableName':_0x4703('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x218e=['api','bluebird','request-promise','rimraf','../../config/environment','JscriptyAnswerReport','lodash','util'];(function(_0x29b43d,_0x29a7a2){var _0xb12c8e=function(_0x1c6a6a){while(--_0x1c6a6a){_0x29b43d['push'](_0x29b43d['shift']());}};_0xb12c8e(++_0x29a7a2);}(_0x218e,0x1be));var _0xe218=function(_0x51ca55,_0x369e98){_0x51ca55=_0x51ca55-0x0;var _0x5af212=_0x218e[_0x51ca55];return _0x5af212;};'use strict';var _=require(_0xe218('0x0'));var util=require(_0xe218('0x1'));var logger=require('../../config/logger')(_0xe218('0x2'));var moment=require('moment');var BPromise=require(_0xe218('0x3'));var rp=require(_0xe218('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe218('0x5'));var config=require(_0xe218('0x6'));var attributes=require('./jscriptyAnswerReport.attributes');module['exports']=function(_0x49bdad,_0x3f5144){return _0x49bdad['define'](_0xe218('0x7'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 23b40e5..0de1892 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb501=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','lodash'];(function(_0x3a04ab,_0x31b9fd){var _0x4bff6d=function(_0x125f7e){while(--_0x125f7e){_0x3a04ab['push'](_0x3a04ab['shift']());}};_0x4bff6d(++_0x31b9fd);}(_0xb501,0x6d));var _0x1b50=function(_0x5edfad,_0x18ec05){_0x5edfad=_0x5edfad-0x0;var _0x4c5613=_0xb501[_0x5edfad];return _0x4c5613;};'use strict';var _=require(_0x1b50('0x0'));var util=require(_0x1b50('0x1'));var moment=require('moment');var BPromise=require(_0x1b50('0x2'));var rs=require(_0x1b50('0x3'));var fs=require('fs');var Redis=require(_0x1b50('0x4'));var db=require(_0x1b50('0x5'))['db'];var utils=require(_0x1b50('0x6'));var logger=require(_0x1b50('0x7'))('rpc');var config=require(_0x1b50('0x8'));var jayson=require(_0x1b50('0x9'));var client=jayson[_0x1b50('0xa')][_0x1b50('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xc6f694,_0x6534fe,_0x2d2814){return new BPromise(function(_0x3593f9,_0x4d7016){return client[_0x1b50('0xc')](_0xc6f694,_0x2d2814)[_0x1b50('0xd')](function(_0x5ba25c){logger[_0x1b50('0xe')](_0x1b50('0xf'),_0x6534fe,'request\x20sent');logger['debug']('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x6534fe,_0x1b50('0x10'),JSON['stringify'](_0x5ba25c));if(_0x5ba25c['error']){if(_0x5ba25c[_0x1b50('0x11')][_0x1b50('0x12')]===0x1f4){logger['error'](_0x1b50('0xf'),_0x6534fe,_0x5ba25c['error'][_0x1b50('0x13')]);return _0x4d7016(_0x5ba25c['error'][_0x1b50('0x13')]);}logger[_0x1b50('0x11')](_0x1b50('0xf'),_0x6534fe,_0x5ba25c[_0x1b50('0x11')][_0x1b50('0x13')]);return _0x3593f9(_0x5ba25c[_0x1b50('0x11')][_0x1b50('0x13')]);}else{logger[_0x1b50('0xe')](_0x1b50('0xf'),_0x6534fe,_0x1b50('0x10'));_0x3593f9(_0x5ba25c[_0x1b50('0x14')]['message']);}})[_0x1b50('0x15')](function(_0x28dd77){logger[_0x1b50('0x11')](_0x1b50('0xf'),_0x6534fe,_0x28dd77);_0x4d7016(_0x28dd77);});});}
\ No newline at end of file
+var _0x6678=['info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http'];(function(_0x36d796,_0x394b71){var _0x4987a4=function(_0x4f101e){while(--_0x4f101e){_0x36d796['push'](_0x36d796['shift']());}};_0x4987a4(++_0x394b71);}(_0x6678,0x199));var _0x8667=function(_0x30faec,_0x18940b){_0x30faec=_0x30faec-0x0;var _0x29484f=_0x6678[_0x30faec];return _0x29484f;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x8667('0x0'));var BPromise=require(_0x8667('0x1'));var rs=require(_0x8667('0x2'));var fs=require('fs');var Redis=require(_0x8667('0x3'));var db=require(_0x8667('0x4'))['db'];var utils=require(_0x8667('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x8667('0x6'));var client=jayson[_0x8667('0x7')][_0x8667('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x226804,_0x5c3a7c,_0x534eec){return new BPromise(function(_0x26d7e0,_0x1466bb){return client['request'](_0x226804,_0x534eec)['then'](function(_0x208e43){logger[_0x8667('0x9')](_0x8667('0xa'),_0x5c3a7c,_0x8667('0xb'));logger[_0x8667('0xc')](_0x8667('0xd'),_0x5c3a7c,_0x8667('0xb'),JSON[_0x8667('0xe')](_0x208e43));if(_0x208e43['error']){if(_0x208e43[_0x8667('0xf')]['code']===0x1f4){logger['error'](_0x8667('0xa'),_0x5c3a7c,_0x208e43[_0x8667('0xf')]['message']);return _0x1466bb(_0x208e43[_0x8667('0xf')][_0x8667('0x10')]);}logger[_0x8667('0xf')](_0x8667('0xa'),_0x5c3a7c,_0x208e43[_0x8667('0xf')]['message']);return _0x26d7e0(_0x208e43['error']['message']);}else{logger[_0x8667('0x9')](_0x8667('0xa'),_0x5c3a7c,'request\x20sent');_0x26d7e0(_0x208e43[_0x8667('0x11')][_0x8667('0x10')]);}})[_0x8667('0x12')](function(_0x6c1574){logger[_0x8667('0xf')](_0x8667('0xa'),_0x5c3a7c,_0x6c1574);_0x1466bb(_0x6c1574);});});}
\ No newline at end of file
index 4445d60..e9b25dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd029=['exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./jscriptyProject.controller','index','get','/:id','isAuthenticated','show','/:id/sessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','delete','destroy'];(function(_0x39e853,_0x16d356){var _0x3a0ddb=function(_0x3fef8c){while(--_0x3fef8c){_0x39e853['push'](_0x39e853['shift']());}};_0x3a0ddb(++_0x16d356);}(_0xd029,0xe1));var _0x9d02=function(_0x3a3b0a,_0x1b4682){_0x3a3b0a=_0x3a3b0a-0x0;var _0x19ca0d=_0xd029[_0x3a3b0a];return _0x19ca0d;};'use strict';var multer=require(_0x9d02('0x0'));var util=require(_0x9d02('0x1'));var path=require(_0x9d02('0x2'));var timeout=require('connect-timeout');var express=require(_0x9d02('0x3'));var router=express[_0x9d02('0x4')]();var fs_extra=require(_0x9d02('0x5'));var auth=require(_0x9d02('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x9d02('0x7'));var controller=require(_0x9d02('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x9d02('0x9')]);router[_0x9d02('0xa')](_0x9d02('0xb'),auth[_0x9d02('0xc')](),controller[_0x9d02('0xd')]);router[_0x9d02('0xa')](_0x9d02('0xe'),auth[_0x9d02('0xc')](),controller['getSessions']);router['get'](_0x9d02('0xf'),auth[_0x9d02('0xc')](),controller[_0x9d02('0x10')]);router[_0x9d02('0xa')](_0x9d02('0x11'),auth[_0x9d02('0xc')](),timeout(_0x9d02('0x12')),controller[_0x9d02('0x13')]);router[_0x9d02('0x14')]('/',auth['isAuthenticated'](),controller[_0x9d02('0x15')]);router[_0x9d02('0x14')](_0x9d02('0x16'),auth['isAuthenticated'](),controller[_0x9d02('0x17')]);router[_0x9d02('0x18')]('/:id',auth[_0x9d02('0xc')](),controller['update']);router[_0x9d02('0x19')]('/:id',auth[_0x9d02('0xc')](),controller[_0x9d02('0x1a')]);module[_0x9d02('0x1b')]=router;
\ No newline at end of file
+var _0xecd7=['getSessions','/:id/answers','getAnswers','/:id/summary','30s','getSummary','post','create','/:id/clone','clone','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','/:id','/:id/sessions'];(function(_0x4f02ce,_0x22203c){var _0x32387e=function(_0xa2df1a){while(--_0xa2df1a){_0x4f02ce['push'](_0x4f02ce['shift']());}};_0x32387e(++_0x22203c);}(_0xecd7,0x7a));var _0x7ecd=function(_0x2625c7,_0xd36313){_0x2625c7=_0x2625c7-0x0;var _0x1b3e13=_0xecd7[_0x2625c7];return _0x1b3e13;};'use strict';var multer=require(_0x7ecd('0x0'));var util=require(_0x7ecd('0x1'));var path=require(_0x7ecd('0x2'));var timeout=require(_0x7ecd('0x3'));var express=require(_0x7ecd('0x4'));var router=express[_0x7ecd('0x5')]();var fs_extra=require(_0x7ecd('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x7ecd('0x7'));var config=require('../../config/environment');var controller=require(_0x7ecd('0x8'));router[_0x7ecd('0x9')]('/',auth[_0x7ecd('0xa')](),controller['index']);router['get'](_0x7ecd('0xb'),auth[_0x7ecd('0xa')](),controller['show']);router[_0x7ecd('0x9')](_0x7ecd('0xc'),auth['isAuthenticated'](),controller[_0x7ecd('0xd')]);router['get'](_0x7ecd('0xe'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0xf')]);router[_0x7ecd('0x9')](_0x7ecd('0x10'),auth[_0x7ecd('0xa')](),timeout(_0x7ecd('0x11')),controller[_0x7ecd('0x12')]);router[_0x7ecd('0x13')]('/',auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x14')]);router[_0x7ecd('0x13')](_0x7ecd('0x15'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x16')]);router[_0x7ecd('0x17')]('/:id',auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x18')]);router['delete'](_0x7ecd('0xb'),auth[_0x7ecd('0xa')](),controller[_0x7ecd('0x19')]);module[_0x7ecd('0x1a')]=router;
\ No newline at end of file
index d60e005..5ca970d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0886=['{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','BOOLEAN','sequelize','lodash','exports','STRING','name','TEXT','setDataValue','formData','stringify','isString','format'];(function(_0xcf4569,_0x1ce755){var _0x7fef=function(_0x374ab8){while(--_0x374ab8){_0xcf4569['push'](_0xcf4569['shift']());}};_0x7fef(++_0x1ce755);}(_0x0886,0x16f));var _0x6088=function(_0x473d0f,_0x90f587){_0x473d0f=_0x473d0f-0x0;var _0x2cd3b1=_0x0886[_0x473d0f];return _0x2cd3b1;};'use strict';var Sequelize=require(_0x6088('0x0'));var _=require(_0x6088('0x1'));var util=require('util');module[_0x6088('0x2')]={'name':{'type':Sequelize[_0x6088('0x3')],'unique':_0x6088('0x4')},'description':{'type':Sequelize[_0x6088('0x3')]},'formData':{'type':Sequelize[_0x6088('0x5')]('long'),'set':function(_0x19313b){if(_['isObjectLike'](_0x19313b)){this[_0x6088('0x6')](_0x6088('0x7'),JSON[_0x6088('0x8')](_0x19313b));}else if(_[_0x6088('0x9')](_0x19313b)){this[_0x6088('0x6')](_0x6088('0x7'),_0x19313b);}else{this['setDataValue'](_0x6088('0x7'),util[_0x6088('0xa')](_0x6088('0xb'),this['getDataValue'](_0x6088('0x4'))||'',this[_0x6088('0xc')]('description')||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x6088('0xd')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xd195=['lodash','util','exports','STRING','name','TEXT','long','isObjectLike','setDataValue','formData','stringify','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN'];(function(_0x13f4cb,_0x16cadd){var _0x20d8bf=function(_0x1b8351){while(--_0x1b8351){_0x13f4cb['push'](_0x13f4cb['shift']());}};_0x20d8bf(++_0x16cadd);}(_0xd195,0x87));var _0x5d19=function(_0x40d719,_0x161f01){_0x40d719=_0x40d719-0x0;var _0x271e6d=_0xd195[_0x40d719];return _0x271e6d;};'use strict';var Sequelize=require('sequelize');var _=require(_0x5d19('0x0'));var util=require(_0x5d19('0x1'));module[_0x5d19('0x2')]={'name':{'type':Sequelize[_0x5d19('0x3')],'unique':_0x5d19('0x4')},'description':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0x5d19('0x5')](_0x5d19('0x6')),'set':function(_0x369069){if(_[_0x5d19('0x7')](_0x369069)){this[_0x5d19('0x8')](_0x5d19('0x9'),JSON[_0x5d19('0xa')](_0x369069));}else if(_['isString'](_0x369069)){this[_0x5d19('0x8')](_0x5d19('0x9'),_0x369069);}else{this[_0x5d19('0x8')](_0x5d19('0x9'),util['format'](_0x5d19('0xb'),this[_0x5d19('0xc')]('name')||'',this[_0x5d19('0xc')](_0x5d19('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0x5d19('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0x5d19('0xe')],'defaultValue':![]}};
\ No newline at end of file
index 38d5666..4e30a6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32d4=['startTime','parse','JscriptyQuestionReport','-createdAt','questionId','question','starttime','SessionId','now','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','Content-disposition','attachment;\x20filename=','setHeader','Content-type','download','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','end','offset','undefined','count','limit','Content-Range','json','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','map','JscriptyProject','rawAttributes','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','catch','show','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','body','userProfileId','getSessions','findOne','JscriptySessionReport','hasOwnProperty','ProjectId','rows','getAnswers','JscriptyAnswerReport','toString','indexOf','replace'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x32d4,0x82));var _0x432d=function(_0x42cff8,_0x45af0a){_0x42cff8=_0x42cff8-0x0;var _0x59aff9=_0x32d4[_0x42cff8];return _0x59aff9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x432d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x432d('0x1'));var rp=require(_0x432d('0x2'));var moment=require(_0x432d('0x3'));var BPromise=require(_0x432d('0x4'));var Mustache=require(_0x432d('0x5'));var util=require(_0x432d('0x6'));var path=require(_0x432d('0x7'));var sox=require('sox');var csv=require(_0x432d('0x8'));var ejs=require(_0x432d('0x9'));var fs=require('fs');var fs_extra=require(_0x432d('0xa'));var _=require('lodash');var squel=require(_0x432d('0xb'));var crypto=require(_0x432d('0xc'));var jsforce=require(_0x432d('0xd'));var deskjs=require(_0x432d('0xe'));var toCsv=require(_0x432d('0x8'));var querystring=require(_0x432d('0xf'));var Papa=require(_0x432d('0x10'));var Redis=require(_0x432d('0x11'));var authService=require(_0x432d('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x432d('0x13'));var hardwareService=require(_0x432d('0x14'));var logger=require(_0x432d('0x15'))('api');var utils=require('../../config/utils');var config=require(_0x432d('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3d899c,_0x2be426){_0x2be426=_0x2be426||0xcc;return function(_0x1d51c0){if(_0x1d51c0){return _0x3d899c[_0x432d('0x17')](_0x2be426);}return _0x3d899c[_0x432d('0x18')](_0x2be426)[_0x432d('0x19')]();};}function respondWithResult(_0x4d542d,_0x4d2b72){_0x4d2b72=_0x4d2b72||0xc8;return function(_0x111406){if(_0x111406){return _0x4d542d[_0x432d('0x18')](_0x4d2b72)['json'](_0x111406);}};}function respondWithFilteredResult(_0x448537,_0x54bbb0){return function(_0x49a410){if(_0x49a410){var _0x459af7=typeof _0x54bbb0[_0x432d('0x1a')]===_0x432d('0x1b')&&typeof _0x54bbb0['limit']===_0x432d('0x1b');var _0x5331cd=_0x49a410[_0x432d('0x1c')];var _0x2484e6=_0x459af7?0x0:_0x54bbb0['offset'];var _0x3fb47c=_0x459af7?_0x49a410[_0x432d('0x1c')]:_0x54bbb0[_0x432d('0x1a')]+_0x54bbb0[_0x432d('0x1d')];var _0x241609;if(_0x3fb47c>=_0x5331cd){_0x3fb47c=_0x5331cd;_0x241609=0xc8;}else{_0x241609=0xce;}_0x448537['status'](_0x241609);return _0x448537['set'](_0x432d('0x1e'),_0x2484e6+'-'+_0x3fb47c+'/'+_0x5331cd)[_0x432d('0x1f')](_0x49a410);}return null;};}function patchUpdates(_0x27bdef){return function(_0x3a4bb2){try{jsonpatch[_0x432d('0x20')](_0x3a4bb2,_0x27bdef,!![]);}catch(_0x1254a1){return BPromise[_0x432d('0x21')](_0x1254a1);}return _0x3a4bb2[_0x432d('0x22')]();};}function saveUpdates(_0x2dea38,_0x1c317d){return function(_0x59a68c){if(_0x59a68c){return _0x59a68c[_0x432d('0x23')](_0x2dea38)[_0x432d('0x24')](function(_0x23f427){return _0x23f427;});}return null;};}function removeEntity(_0x210ebc,_0x1e9247){return function(_0xa76f36){if(_0xa76f36){return _0xa76f36[_0x432d('0x25')]()[_0x432d('0x24')](function(){var _0x42b9d4=_0xa76f36[_0x432d('0x26')]({'plain':!![]});var _0xd5049f=_0x432d('0x27');return db[_0x432d('0x28')][_0x432d('0x25')]({'where':{'type':_0xd5049f,'resourceId':_0x42b9d4['id']}})[_0x432d('0x24')](function(){return _0xa76f36;});})[_0x432d('0x24')](function(){_0x210ebc[_0x432d('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x55650a,_0x3cefaf){return function(_0x518a38){if(!_0x518a38){_0x55650a['sendStatus'](0x194);}return _0x518a38;};}function handleError(_0x53ba4d,_0x1a7aae){_0x1a7aae=_0x1a7aae||0x1f4;return function(_0x263e6d){logger[_0x432d('0x29')](_0x263e6d[_0x432d('0x2a')]);if(_0x263e6d['name']){delete _0x263e6d[_0x432d('0x2b')];}_0x53ba4d[_0x432d('0x18')](_0x1a7aae)['send'](_0x263e6d);};}exports['index']=function(_0x19a875,_0x4a6d23){var _0xb0d98={},_0x10d9a1={},_0x7dc9ef={'count':0x0,'rows':[]};var _0x3a439d=_[_0x432d('0x2c')](db[_0x432d('0x2d')][_0x432d('0x2e')],function(_0x13bc73){return{'name':_0x13bc73[_0x432d('0x2f')],'type':_0x13bc73['type'][_0x432d('0x30')]};});_0x10d9a1[_0x432d('0x31')]=_[_0x432d('0x2c')](_0x3a439d,_0x432d('0x2b'));_0x10d9a1['query']=_[_0x432d('0x32')](_0x19a875['query']);_0x10d9a1[_0x432d('0x33')]=_['intersection'](_0x10d9a1[_0x432d('0x31')],_0x10d9a1[_0x432d('0x34')]);_0xb0d98[_0x432d('0x35')]=_[_0x432d('0x36')](_0x10d9a1['model'],qs[_0x432d('0x37')](_0x19a875[_0x432d('0x34')][_0x432d('0x37')]));_0xb0d98[_0x432d('0x35')]=_0xb0d98[_0x432d('0x35')][_0x432d('0x38')]?_0xb0d98[_0x432d('0x35')]:_0x10d9a1[_0x432d('0x31')];if(!_0x19a875['query']['hasOwnProperty'](_0x432d('0x39'))){_0xb0d98[_0x432d('0x1d')]=qs[_0x432d('0x1d')](_0x19a875[_0x432d('0x34')][_0x432d('0x1d')]);_0xb0d98['offset']=qs['offset'](_0x19a875[_0x432d('0x34')]['offset']);}_0xb0d98[_0x432d('0x3a')]=qs[_0x432d('0x3b')](_0x19a875[_0x432d('0x34')][_0x432d('0x3b')]);_0xb0d98[_0x432d('0x3c')]=qs[_0x432d('0x33')](_[_0x432d('0x3d')](_0x19a875[_0x432d('0x34')],_0x10d9a1[_0x432d('0x33')]),_0x3a439d);if(_0x19a875['query'][_0x432d('0x3e')]){_0xb0d98[_0x432d('0x3c')]=_[_0x432d('0x3f')](_0xb0d98[_0x432d('0x3c')],{'$or':_[_0x432d('0x2c')](_0x3a439d,function(_0x152a88){if(_0x152a88[_0x432d('0x40')]!==_0x432d('0x41')){var _0x5857d9={};_0x5857d9[_0x152a88[_0x432d('0x2b')]]={'$like':'%'+_0x19a875['query'][_0x432d('0x3e')]+'%'};return _0x5857d9;}})});}_0xb0d98=_[_0x432d('0x3f')]({},_0xb0d98,_0x19a875[_0x432d('0x42')]);var _0x56c4da={'where':_0xb0d98[_0x432d('0x3c')]};return db[_0x432d('0x2d')][_0x432d('0x1c')](_0x56c4da)[_0x432d('0x24')](function(_0x2de505){_0x7dc9ef[_0x432d('0x1c')]=_0x2de505;if(_0x19a875[_0x432d('0x34')][_0x432d('0x43')]){_0xb0d98[_0x432d('0x44')]=[{'all':!![]}];}return db['JscriptyProject'][_0x432d('0x45')](_0xb0d98);})['then'](function(_0x2564d0){_0x7dc9ef['rows']=_0x2564d0;return _0x7dc9ef;})[_0x432d('0x24')](respondWithFilteredResult(_0x4a6d23,_0xb0d98))[_0x432d('0x46')](handleError(_0x4a6d23,null));};exports[_0x432d('0x47')]=function(_0xa7a1ee,_0x227adc){var _0x5ba360={'raw':![],'where':{'id':_0xa7a1ee['params']['id']}},_0x12534a={};_0x12534a['model']=_[_0x432d('0x32')](db[_0x432d('0x2d')][_0x432d('0x2e')]);_0x12534a[_0x432d('0x34')]=_[_0x432d('0x32')](_0xa7a1ee[_0x432d('0x34')]);_0x12534a[_0x432d('0x33')]=_[_0x432d('0x36')](_0x12534a[_0x432d('0x31')],_0x12534a[_0x432d('0x34')]);_0x5ba360[_0x432d('0x35')]=_[_0x432d('0x36')](_0x12534a[_0x432d('0x31')],qs[_0x432d('0x37')](_0xa7a1ee[_0x432d('0x34')][_0x432d('0x37')]));_0x5ba360[_0x432d('0x35')]=_0x5ba360['attributes'][_0x432d('0x38')]?_0x5ba360['attributes']:_0x12534a[_0x432d('0x31')];if(_0xa7a1ee['query'][_0x432d('0x43')]){_0x5ba360[_0x432d('0x44')]=[{'all':!![]}];}_0x5ba360=_[_0x432d('0x3f')]({},_0x5ba360,_0xa7a1ee[_0x432d('0x42')]);return db[_0x432d('0x2d')][_0x432d('0x48')](_0x5ba360)[_0x432d('0x24')](handleEntityNotFound(_0x227adc,null))['then'](respondWithResult(_0x227adc,null))[_0x432d('0x46')](handleError(_0x227adc,null));};exports[_0x432d('0x49')]=function(_0x2cad30,_0x4d56ce){return db[_0x432d('0x2d')][_0x432d('0x49')](_0x2cad30['body'],{})[_0x432d('0x24')](function(_0xbd9b11){var _0x3ed02d=_0x2cad30[_0x432d('0x4a')][_0x432d('0x26')]({'plain':!![]});if(!_0x3ed02d)throw new Error(_0x432d('0x4b'));if(_0x3ed02d[_0x432d('0x4c')]===_0x432d('0x4a')){var _0x36348b=_0xbd9b11[_0x432d('0x26')]({'plain':!![]});var _0x5ad801=_0x432d('0x27');return db[_0x432d('0x4d')]['find']({'where':{'name':_0x5ad801,'userProfileId':_0x3ed02d['userProfileId']},'raw':!![]})[_0x432d('0x24')](function(_0x2d98db){if(_0x2d98db&&_0x2d98db[_0x432d('0x4e')]===0x0){return db[_0x432d('0x28')][_0x432d('0x49')]({'name':_0x36348b[_0x432d('0x2b')],'resourceId':_0x36348b['id'],'type':_0x2d98db[_0x432d('0x2b')],'sectionId':_0x2d98db['id']},{})[_0x432d('0x24')](function(){return _0xbd9b11;});}else{return _0xbd9b11;}})[_0x432d('0x46')](function(_0x313556){logger[_0x432d('0x29')](_0x432d('0x4f'),_0x313556);throw _0x313556;});}return _0xbd9b11;})[_0x432d('0x24')](respondWithResult(_0x4d56ce,0xc9))[_0x432d('0x46')](handleError(_0x4d56ce,null));};exports[_0x432d('0x50')]=function(_0x3ca77c,_0x36e562){var _0x2b99d3={'where':{'id':_0x3ca77c[_0x432d('0x51')]['id']}},_0x39e53e={};_0x39e53e['model']=_[_0x432d('0x32')](db[_0x432d('0x2d')]['rawAttributes']);_0x2b99d3[_0x432d('0x35')]=_[_0x432d('0x36')](_0x39e53e[_0x432d('0x31')],qs[_0x432d('0x37')](_0x3ca77c['query'][_0x432d('0x37')]));_0x2b99d3[_0x432d('0x35')]=_0x2b99d3['attributes'][_0x432d('0x38')]?_0x2b99d3[_0x432d('0x35')]:_0x39e53e['model'];if(_0x3ca77c[_0x432d('0x34')][_0x432d('0x43')]){_0x2b99d3[_0x432d('0x44')]=[{'all':!![]}];}_0x2b99d3=_['merge']({},_0x2b99d3,_0x3ca77c['options']);return db[_0x432d('0x2d')][_0x432d('0x48')](_0x2b99d3)[_0x432d('0x24')](handleEntityNotFound(_0x36e562,null))[_0x432d('0x24')](function(_0x4682a2){if(_0x4682a2){var _0x26c523=_0x4682a2[_0x432d('0x26')]({'plain':!![]});_0x26c523=qs[_0x432d('0x52')](_0x26c523,['id',_0x432d('0x53'),_0x432d('0x54')]);_0x3ca77c[_0x432d('0x55')]=_[_0x432d('0x52')](_0x3ca77c['body'],['id',_0x432d('0x53'),'updatedAt']);return db[_0x432d('0x2d')]['create'](_[_0x432d('0x3f')](_0x26c523,_0x3ca77c[_0x432d('0x55')]),{'include':_0x3ca77c[_0x432d('0x34')][_0x432d('0x43')]?[{'all':!![]}]:undefined})[_0x432d('0x24')](function(_0x39f88d){var _0x117806=_0x3ca77c[_0x432d('0x4a')][_0x432d('0x26')]({'plain':!![]});if(!_0x117806)throw new Error(_0x432d('0x4b'));if(_0x117806[_0x432d('0x4c')]===_0x432d('0x4a')){var _0x23b474=_0x39f88d[_0x432d('0x26')]({'plain':!![]});var _0x167fa9=_0x432d('0x27');return db[_0x432d('0x4d')]['find']({'where':{'name':_0x167fa9,'userProfileId':_0x117806[_0x432d('0x56')]},'raw':!![]})[_0x432d('0x24')](function(_0x260662){if(_0x260662&&_0x260662[_0x432d('0x4e')]===0x0){return db[_0x432d('0x28')][_0x432d('0x49')]({'name':_0x23b474[_0x432d('0x2b')],'resourceId':_0x23b474['id'],'type':_0x260662[_0x432d('0x2b')],'sectionId':_0x260662['id']},{})['then'](function(){return _0x39f88d;});}else{return _0x39f88d;}})[_0x432d('0x46')](function(_0x5945c8){logger['error'](_0x432d('0x4f'),_0x5945c8);throw _0x5945c8;});}return _0x39f88d;});}})[_0x432d('0x24')](respondWithResult(_0x36e562,0xc9))[_0x432d('0x46')](handleError(_0x36e562,null));};exports[_0x432d('0x23')]=function(_0x410345,_0x1f440a){if(_0x410345[_0x432d('0x55')]['id']){delete _0x410345[_0x432d('0x55')]['id'];}return db[_0x432d('0x2d')]['find']({'where':{'id':_0x410345['params']['id']}})['then'](handleEntityNotFound(_0x1f440a,null))['then'](saveUpdates(_0x410345['body'],null))['then'](respondWithResult(_0x1f440a,null))[_0x432d('0x46')](handleError(_0x1f440a,null));};exports[_0x432d('0x25')]=function(_0x5ccae6,_0x22b979){return db[_0x432d('0x2d')][_0x432d('0x48')]({'where':{'id':_0x5ccae6[_0x432d('0x51')]['id']}})[_0x432d('0x24')](handleEntityNotFound(_0x22b979,null))['then'](removeEntity(_0x22b979,null))[_0x432d('0x46')](handleError(_0x22b979,null));};exports[_0x432d('0x57')]=function(_0x1b7cf3,_0x3ddd4b,_0x15f129){var _0x5bc34f={'raw':!![],'where':{}};var _0x4bd393={};var _0x55c1ea={'count':0x0,'rows':[]};return db[_0x432d('0x2d')][_0x432d('0x58')]({'where':{'id':_0x1b7cf3[_0x432d('0x51')]['id']}})['then'](handleEntityNotFound(_0x3ddd4b,null))[_0x432d('0x24')](function(_0x2f97ae){if(_0x2f97ae){_0x4bd393[_0x432d('0x31')]=_[_0x432d('0x32')](db[_0x432d('0x59')]['rawAttributes']);_0x4bd393['query']=_[_0x432d('0x32')](_0x1b7cf3[_0x432d('0x34')]);_0x4bd393[_0x432d('0x33')]=_[_0x432d('0x36')](_0x4bd393[_0x432d('0x31')],_0x4bd393[_0x432d('0x34')]);_0x5bc34f['attributes']=_[_0x432d('0x36')](_0x4bd393[_0x432d('0x31')],qs[_0x432d('0x37')](_0x1b7cf3[_0x432d('0x34')][_0x432d('0x37')]));_0x5bc34f['attributes']=_0x5bc34f[_0x432d('0x35')][_0x432d('0x38')]?_0x5bc34f['attributes']:_0x4bd393[_0x432d('0x31')];if(!_0x1b7cf3[_0x432d('0x34')][_0x432d('0x5a')](_0x432d('0x39'))){_0x5bc34f[_0x432d('0x1d')]=qs[_0x432d('0x1d')](_0x1b7cf3[_0x432d('0x34')][_0x432d('0x1d')]);_0x5bc34f[_0x432d('0x1a')]=qs[_0x432d('0x1a')](_0x1b7cf3[_0x432d('0x34')][_0x432d('0x1a')]);}_0x5bc34f[_0x432d('0x3a')]=qs[_0x432d('0x3b')](_0x1b7cf3[_0x432d('0x34')][_0x432d('0x3b')]);_0x5bc34f[_0x432d('0x3c')]=qs[_0x432d('0x33')](_['pick'](_0x1b7cf3['query'],_0x4bd393[_0x432d('0x33')]));_0x5bc34f[_0x432d('0x3c')][_0x432d('0x5b')]=_0x2f97ae['id'];if(_0x1b7cf3[_0x432d('0x34')]['filter']){_0x5bc34f['where']=_[_0x432d('0x3f')](_0x5bc34f[_0x432d('0x3c')],{'$or':_[_0x432d('0x2c')](_0x5bc34f[_0x432d('0x35')],function(_0x3b0ed2){var _0x205e12={};_0x205e12[_0x3b0ed2]={'$like':'%'+_0x1b7cf3['query'][_0x432d('0x3e')]+'%'};return _0x205e12;})});}_0x5bc34f=_[_0x432d('0x3f')]({},_0x5bc34f,_0x1b7cf3[_0x432d('0x42')]);return db[_0x432d('0x59')]['count']({'where':_0x5bc34f['where']})[_0x432d('0x24')](function(_0x26a87a){_0x55c1ea['count']=_0x26a87a;if(_0x1b7cf3['query'][_0x432d('0x43')]){_0x5bc34f[_0x432d('0x44')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x432d('0x45')](_0x5bc34f);})[_0x432d('0x24')](function(_0x29bbda){_0x55c1ea[_0x432d('0x5c')]=_0x29bbda;return _0x55c1ea;});}})[_0x432d('0x24')](respondWithFilteredResult(_0x3ddd4b,_0x5bc34f))['catch'](handleError(_0x3ddd4b,null));};exports[_0x432d('0x5d')]=function(_0xae2d39,_0x2fe0a0,_0x44aa38){var _0x585694={'raw':!![],'where':{}};var _0x5603e8={};var _0x419778={'count':0x0,'rows':[]};return db[_0x432d('0x2d')][_0x432d('0x58')]({'where':{'id':_0xae2d39[_0x432d('0x51')]['id']}})[_0x432d('0x24')](handleEntityNotFound(_0x2fe0a0,null))[_0x432d('0x24')](function(_0x6f0c97){if(_0x6f0c97){_0x5603e8[_0x432d('0x31')]=_[_0x432d('0x32')](db[_0x432d('0x5e')][_0x432d('0x2e')]);_0x5603e8[_0x432d('0x34')]=_['keys'](_0xae2d39[_0x432d('0x34')]);_0x5603e8['filters']=_[_0x432d('0x36')](_0x5603e8['model'],_0x5603e8['query']);_0x585694[_0x432d('0x35')]=_[_0x432d('0x36')](_0x5603e8[_0x432d('0x31')],qs[_0x432d('0x37')](_0xae2d39[_0x432d('0x34')][_0x432d('0x37')]));_0x585694[_0x432d('0x35')]=_0x585694[_0x432d('0x35')][_0x432d('0x38')]?_0x585694[_0x432d('0x35')]:_0x5603e8[_0x432d('0x31')];if(!_0xae2d39['query'][_0x432d('0x5a')](_0x432d('0x39'))){_0x585694[_0x432d('0x1d')]=qs[_0x432d('0x1d')](_0xae2d39[_0x432d('0x34')]['limit']);_0x585694[_0x432d('0x1a')]=qs[_0x432d('0x1a')](_0xae2d39[_0x432d('0x34')]['offset']);}_0x585694[_0x432d('0x3a')]=qs[_0x432d('0x3b')](_0xae2d39[_0x432d('0x34')][_0x432d('0x3b')]);_0x585694[_0x432d('0x3c')]=qs[_0x432d('0x33')](_[_0x432d('0x3d')](_0xae2d39[_0x432d('0x34')],_0x5603e8[_0x432d('0x33')]));_0x585694[_0x432d('0x3c')][_0x432d('0x5b')]=_0x6f0c97['id'];if(_0xae2d39[_0x432d('0x34')][_0x432d('0x3e')]){_0x585694[_0x432d('0x3c')]=_['merge'](_0x585694['where'],{'$or':_[_0x432d('0x2c')](_0x585694[_0x432d('0x35')],function(_0x4f220e){var _0x5103d5={};_0x5103d5[_0x4f220e]={'$like':'%'+_0xae2d39[_0x432d('0x34')][_0x432d('0x3e')]+'%'};return _0x5103d5;})});}_0x585694=_[_0x432d('0x3f')]({},_0x585694,_0xae2d39[_0x432d('0x42')]);return db[_0x432d('0x5e')][_0x432d('0x1c')]({'where':_0x585694[_0x432d('0x3c')]})[_0x432d('0x24')](function(_0xc81f7e){_0x419778['count']=_0xc81f7e;if(_0xae2d39['query'][_0x432d('0x43')]){_0x585694[_0x432d('0x44')]=[{'all':!![]}];}return db[_0x432d('0x5e')][_0x432d('0x45')](_0x585694);})[_0x432d('0x24')](function(_0x9e977d){_0x419778[_0x432d('0x5c')]=_0x9e977d;return _0x419778;});}})[_0x432d('0x24')](respondWithFilteredResult(_0x2fe0a0,_0x585694))[_0x432d('0x46')](handleError(_0x2fe0a0,null));};function char(_0x3996bc){return'number'===typeof _0x3996bc?String['fromCharCode'][_0x432d('0x20')](null,arguments):_0x3996bc;}function needsEncapsulation(_0x22acf0){return!!_0x22acf0&&(_0x22acf0[_0x432d('0x5f')]()[_0x432d('0x60')](char(0xd))>=0x0||_0x22acf0[_0x432d('0x5f')]()[_0x432d('0x60')](char(0xa))>=0x0||_0x22acf0[_0x432d('0x5f')]()[_0x432d('0x60')](char(0x2c))>=0x0||_0x22acf0['toString']()[_0x432d('0x60')](char(0x22))>=0x0);}function encapsulate(_0x803a8f){var _0xad591b=char(0x22),_0x49e259='\x5c'+char(0x22),_0x316076=_0x803a8f[_0x432d('0x5f')]()[_0x432d('0x61')](new RegExp(_0xad591b,'g'),_0x49e259);return _0xad591b+_0x316076+_0xad591b;}exports['getSummary']=function(_0x276135,_0x43d40d,_0x36c674){var _0x21808a,_0xead355;var _0xf29485={'where':{'ProjectId':_0x276135[_0x432d('0x51')]['id']}};if(_0x276135[_0x432d('0x34')][_0x432d('0x62')]){_0xf29485[_0x432d('0x3c')]['starttime']=JSON[_0x432d('0x63')](_0x276135['query'][_0x432d('0x62')]);}return db[_0x432d('0x59')][_0x432d('0x45')](_0xf29485)['then'](handleEntityNotFound(_0x43d40d,null))[_0x432d('0x24')](function(_0x4742b6){if(_0x4742b6){_0x21808a=_0x4742b6;return db[_0x432d('0x64')][_0x432d('0x45')]({'where':{'SessionId':{'$in':_[_0x432d('0x2c')](_0x21808a,'id')},'ProjectId':_0x276135['params']['id']},'order':_0x432d('0x65')});}})[_0x432d('0x24')](handleEntityNotFound(_0x43d40d,null))['then'](function(_0x1574ca){if(_0x1574ca){_0xead355=_0x1574ca;var _0x1f576c={};for(var _0x1c5c24=0x0,_0x1627d2=_0xead355[_0x432d('0x38')];_0x1c5c24<_0x1627d2;_0x1c5c24++){if(!_0x1f576c[_0x432d('0x5a')](_0xead355[_0x1c5c24][_0x432d('0x66')])){_0x1f576c[_0xead355[_0x1c5c24][_0x432d('0x66')]]=needsEncapsulation(_0xead355[_0x1c5c24][_0x432d('0x67')])?encapsulate(_0xead355[_0x1c5c24][_0x432d('0x67')]):_0xead355[_0x1c5c24][_0x432d('0x67')];}}var _0x4e3744=[],_0x223550={};for(var _0x4d9605=0x0,_0x2b3258=_0x21808a[_0x432d('0x38')];_0x4d9605<_0x2b3258;_0x4d9605++){_0x223550={'ProjectId':_0x276135[_0x432d('0x51')]['id'],'SessionId':_0x21808a[_0x4d9605]['id'],'StartTime':moment(_0x21808a[_0x4d9605][_0x432d('0x68')])['format']('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x349d96=0x0,_0x254884=_0xead355[_0x432d('0x38')];_0x349d96<_0x254884;_0x349d96++){if(_0xead355[_0x349d96][_0x432d('0x69')]==_0x21808a[_0x4d9605]['id']&&_0x1f576c['hasOwnProperty'](_0xead355[_0x349d96]['questionId'])){_0x223550[_0x1f576c[_0xead355[_0x349d96]['questionId']]]=_0xead355[_0x349d96]['answer'];}}for(var _0x475724 in _0x1f576c){if(!_0x223550['hasOwnProperty'](_0x1f576c[_0x475724])){_0x223550[_0x1f576c[_0x475724]]=null;}}_0x4e3744['push'](_0x223550);}return _0x4e3744;}})[_0x432d('0x24')](function(_0x571b9e){if(!_['isEmpty'](_0x571b9e)){var _0xcbc0fd=toCsv(_0x571b9e);var _0x3c32d7=Date[_0x432d('0x6a')]();fs['writeFileSync'](util[_0x432d('0x6b')](_0x432d('0x6c'),_0x276135[_0x432d('0x51')]['id'],_0x3c32d7),_0xcbc0fd);_0x43d40d['setHeader'](_0x432d('0x6d'),_0x432d('0x6e')+util[_0x432d('0x6b')]('Jscripty_Project_%d_Summary_%s.csv',_0x276135['params']['id'],_0x3c32d7));_0x43d40d[_0x432d('0x6f')](_0x432d('0x70'),'text/csv');return _0x43d40d[_0x432d('0x71')](util['format'](_0x432d('0x6c'),_0x276135[_0x432d('0x51')]['id'],_0x3c32d7));}else{return _0x43d40d['sendStatus'](0xcc);}})['catch'](handleError(_0x43d40d,null));};
\ No newline at end of file
+var _0x4171=['crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','get','Projects','UserProfileResource','error','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','type','VIRTUAL','merge','options','JscriptyProject','includeAll','include','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','updatedAt','userProfileId','getSessions','findOne','filter','JscriptySessionReport','findAll','rows','getAnswers','order','ProjectId','JscriptyAnswerReport','number','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','format','SessionId','answer','push','now','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-type','text/csv','download','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','fs-extra','lodash','squel'];(function(_0x1ee122,_0x4f10e0){var _0x4679b6=function(_0x31840a){while(--_0x31840a){_0x1ee122['push'](_0x1ee122['shift']());}};_0x4679b6(++_0x4f10e0);}(_0x4171,0x6a));var _0x1417=function(_0x181e00,_0xd5bedc){_0x181e00=_0x181e00-0x0;var _0x29802e=_0x4171[_0x181e00];return _0x29802e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1417('0x0'));var zipdir=require(_0x1417('0x1'));var jsonpatch=require(_0x1417('0x2'));var rp=require(_0x1417('0x3'));var moment=require(_0x1417('0x4'));var BPromise=require(_0x1417('0x5'));var Mustache=require(_0x1417('0x6'));var util=require('util');var path=require(_0x1417('0x7'));var sox=require('sox');var csv=require(_0x1417('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1417('0x9'));var _=require(_0x1417('0xa'));var squel=require(_0x1417('0xb'));var crypto=require(_0x1417('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x1417('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1417('0xe'));var authService=require(_0x1417('0xf'));var qs=require(_0x1417('0x10'));var as=require(_0x1417('0x11'));var hardwareService=require(_0x1417('0x12'));var logger=require(_0x1417('0x13'))(_0x1417('0x14'));var utils=require(_0x1417('0x15'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x1417('0x16'))['db'];function respondWithStatusCode(_0x4298dd,_0x13ef61){_0x13ef61=_0x13ef61||0xcc;return function(_0x487e87){if(_0x487e87){return _0x4298dd[_0x1417('0x17')](_0x13ef61);}return _0x4298dd[_0x1417('0x18')](_0x13ef61)[_0x1417('0x19')]();};}function respondWithResult(_0x539273,_0xf25298){_0xf25298=_0xf25298||0xc8;return function(_0xd305ab){if(_0xd305ab){return _0x539273[_0x1417('0x18')](_0xf25298)[_0x1417('0x1a')](_0xd305ab);}};}function respondWithFilteredResult(_0x5fbd7a,_0x1a113f){return function(_0x539848){if(_0x539848){var _0x24dedd=typeof _0x1a113f[_0x1417('0x1b')]==='undefined'&&typeof _0x1a113f[_0x1417('0x1c')]===_0x1417('0x1d');var _0x347a7d=_0x539848[_0x1417('0x1e')];var _0x310730=_0x24dedd?0x0:_0x1a113f[_0x1417('0x1b')];var _0x166ff6=_0x24dedd?_0x539848['count']:_0x1a113f[_0x1417('0x1b')]+_0x1a113f['limit'];var _0x1c1d50;if(_0x166ff6>=_0x347a7d){_0x166ff6=_0x347a7d;_0x1c1d50=0xc8;}else{_0x1c1d50=0xce;}_0x5fbd7a['status'](_0x1c1d50);return _0x5fbd7a['set'](_0x1417('0x1f'),_0x310730+'-'+_0x166ff6+'/'+_0x347a7d)[_0x1417('0x1a')](_0x539848);}return null;};}function patchUpdates(_0x331ddd){return function(_0x379eca){try{jsonpatch[_0x1417('0x20')](_0x379eca,_0x331ddd,!![]);}catch(_0x374100){return BPromise[_0x1417('0x21')](_0x374100);}return _0x379eca[_0x1417('0x22')]();};}function saveUpdates(_0x22bf42,_0xa8d41a){return function(_0x4c1b21){if(_0x4c1b21){return _0x4c1b21[_0x1417('0x23')](_0x22bf42)[_0x1417('0x24')](function(_0x248129){return _0x248129;});}return null;};}function removeEntity(_0x354322,_0x21243a){return function(_0x2863ee){if(_0x2863ee){return _0x2863ee[_0x1417('0x25')]()['then'](function(){var _0x50e487=_0x2863ee[_0x1417('0x26')]({'plain':!![]});var _0x53cbdc=_0x1417('0x27');return db[_0x1417('0x28')]['destroy']({'where':{'type':_0x53cbdc,'resourceId':_0x50e487['id']}})[_0x1417('0x24')](function(){return _0x2863ee;});})[_0x1417('0x24')](function(){_0x354322[_0x1417('0x18')](0xcc)[_0x1417('0x19')]();});}};}function handleEntityNotFound(_0x59042c,_0x1976c0){return function(_0x40908f){if(!_0x40908f){_0x59042c[_0x1417('0x17')](0x194);}return _0x40908f;};}function handleError(_0x1e24db,_0x34a98a){_0x34a98a=_0x34a98a||0x1f4;return function(_0x22035c){logger[_0x1417('0x29')](_0x22035c[_0x1417('0x2a')]);if(_0x22035c[_0x1417('0x2b')]){delete _0x22035c[_0x1417('0x2b')];}_0x1e24db[_0x1417('0x18')](_0x34a98a)[_0x1417('0x2c')](_0x22035c);};}exports['index']=function(_0x519b0b,_0x568ce6){var _0x4f7f39={},_0x8ee65={},_0x59d413={'count':0x0,'rows':[]};var _0x495b21=_[_0x1417('0x2d')](db['JscriptyProject'][_0x1417('0x2e')],function(_0x5ed99f){return{'name':_0x5ed99f[_0x1417('0x2f')],'type':_0x5ed99f['type'][_0x1417('0x30')]};});_0x8ee65[_0x1417('0x31')]=_[_0x1417('0x2d')](_0x495b21,_0x1417('0x2b'));_0x8ee65[_0x1417('0x32')]=_[_0x1417('0x33')](_0x519b0b[_0x1417('0x32')]);_0x8ee65[_0x1417('0x34')]=_[_0x1417('0x35')](_0x8ee65[_0x1417('0x31')],_0x8ee65[_0x1417('0x32')]);_0x4f7f39[_0x1417('0x36')]=_['intersection'](_0x8ee65['model'],qs['fields'](_0x519b0b[_0x1417('0x32')][_0x1417('0x37')]));_0x4f7f39[_0x1417('0x36')]=_0x4f7f39[_0x1417('0x36')][_0x1417('0x38')]?_0x4f7f39[_0x1417('0x36')]:_0x8ee65[_0x1417('0x31')];if(!_0x519b0b['query'][_0x1417('0x39')](_0x1417('0x3a'))){_0x4f7f39[_0x1417('0x1c')]=qs['limit'](_0x519b0b[_0x1417('0x32')][_0x1417('0x1c')]);_0x4f7f39[_0x1417('0x1b')]=qs[_0x1417('0x1b')](_0x519b0b[_0x1417('0x32')][_0x1417('0x1b')]);}_0x4f7f39['order']=qs[_0x1417('0x3b')](_0x519b0b[_0x1417('0x32')]['sort']);_0x4f7f39['where']=qs['filters'](_[_0x1417('0x3c')](_0x519b0b[_0x1417('0x32')],_0x8ee65['filters']),_0x495b21);if(_0x519b0b[_0x1417('0x32')]['filter']){_0x4f7f39[_0x1417('0x3d')]=_['merge'](_0x4f7f39[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x495b21,function(_0x204875){if(_0x204875[_0x1417('0x3e')]!==_0x1417('0x3f')){var _0x3060ab={};_0x3060ab[_0x204875[_0x1417('0x2b')]]={'$like':'%'+_0x519b0b[_0x1417('0x32')]['filter']+'%'};return _0x3060ab;}})});}_0x4f7f39=_[_0x1417('0x40')]({},_0x4f7f39,_0x519b0b[_0x1417('0x41')]);var _0x569c45={'where':_0x4f7f39['where']};return db[_0x1417('0x42')][_0x1417('0x1e')](_0x569c45)[_0x1417('0x24')](function(_0x2a1a37){_0x59d413[_0x1417('0x1e')]=_0x2a1a37;if(_0x519b0b[_0x1417('0x32')][_0x1417('0x43')]){_0x4f7f39[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x42')]['findAll'](_0x4f7f39);})['then'](function(_0x370bd4){_0x59d413['rows']=_0x370bd4;return _0x59d413;})[_0x1417('0x24')](respondWithFilteredResult(_0x568ce6,_0x4f7f39))[_0x1417('0x45')](handleError(_0x568ce6,null));};exports[_0x1417('0x46')]=function(_0x413df3,_0x469297){var _0x366645={'raw':![],'where':{'id':_0x413df3[_0x1417('0x47')]['id']}},_0x15925d={};_0x15925d[_0x1417('0x31')]=_[_0x1417('0x33')](db[_0x1417('0x42')][_0x1417('0x2e')]);_0x15925d[_0x1417('0x32')]=_['keys'](_0x413df3['query']);_0x15925d['filters']=_['intersection'](_0x15925d[_0x1417('0x31')],_0x15925d[_0x1417('0x32')]);_0x366645[_0x1417('0x36')]=_[_0x1417('0x35')](_0x15925d['model'],qs[_0x1417('0x37')](_0x413df3[_0x1417('0x32')]['fields']));_0x366645[_0x1417('0x36')]=_0x366645[_0x1417('0x36')][_0x1417('0x38')]?_0x366645[_0x1417('0x36')]:_0x15925d['model'];if(_0x413df3[_0x1417('0x32')][_0x1417('0x43')]){_0x366645['include']=[{'all':!![]}];}_0x366645=_[_0x1417('0x40')]({},_0x366645,_0x413df3[_0x1417('0x41')]);return db[_0x1417('0x42')][_0x1417('0x48')](_0x366645)[_0x1417('0x24')](handleEntityNotFound(_0x469297,null))[_0x1417('0x24')](respondWithResult(_0x469297,null))[_0x1417('0x45')](handleError(_0x469297,null));};exports['create']=function(_0xa4d75d,_0x47e457){return db[_0x1417('0x42')][_0x1417('0x49')](_0xa4d75d[_0x1417('0x4a')],{})[_0x1417('0x24')](function(_0x58e958){var _0x5920b0=_0xa4d75d[_0x1417('0x4b')][_0x1417('0x26')]({'plain':!![]});if(!_0x5920b0)throw new Error(_0x1417('0x4c'));if(_0x5920b0[_0x1417('0x4d')]==='user'){var _0x5b14db=_0x58e958[_0x1417('0x26')]({'plain':!![]});var _0x2cf610=_0x1417('0x27');return db[_0x1417('0x4e')][_0x1417('0x48')]({'where':{'name':_0x2cf610,'userProfileId':_0x5920b0['userProfileId']},'raw':!![]})[_0x1417('0x24')](function(_0x205a11){if(_0x205a11&&_0x205a11[_0x1417('0x4f')]===0x0){return db[_0x1417('0x28')][_0x1417('0x49')]({'name':_0x5b14db[_0x1417('0x2b')],'resourceId':_0x5b14db['id'],'type':_0x205a11[_0x1417('0x2b')],'sectionId':_0x205a11['id']},{})[_0x1417('0x24')](function(){return _0x58e958;});}else{return _0x58e958;}})[_0x1417('0x45')](function(_0xe9ef42){logger[_0x1417('0x29')](_0x1417('0x50'),_0xe9ef42);throw _0xe9ef42;});}return _0x58e958;})[_0x1417('0x24')](respondWithResult(_0x47e457,0xc9))[_0x1417('0x45')](handleError(_0x47e457,null));};exports['clone']=function(_0x30597a,_0x56f1f6){var _0x55428d={'where':{'id':_0x30597a[_0x1417('0x47')]['id']}},_0xefa7f4={};_0xefa7f4[_0x1417('0x31')]=_['keys'](db[_0x1417('0x42')]['rawAttributes']);_0x55428d[_0x1417('0x36')]=_['intersection'](_0xefa7f4[_0x1417('0x31')],qs[_0x1417('0x37')](_0x30597a[_0x1417('0x32')][_0x1417('0x37')]));_0x55428d[_0x1417('0x36')]=_0x55428d[_0x1417('0x36')][_0x1417('0x38')]?_0x55428d[_0x1417('0x36')]:_0xefa7f4['model'];if(_0x30597a[_0x1417('0x32')][_0x1417('0x43')]){_0x55428d[_0x1417('0x44')]=[{'all':!![]}];}_0x55428d=_[_0x1417('0x40')]({},_0x55428d,_0x30597a['options']);return db[_0x1417('0x42')][_0x1417('0x48')](_0x55428d)[_0x1417('0x24')](handleEntityNotFound(_0x56f1f6,null))[_0x1417('0x24')](function(_0x4813c5){if(_0x4813c5){var _0x581bba=_0x4813c5['get']({'plain':!![]});_0x581bba=qs[_0x1417('0x51')](_0x581bba,['id',_0x1417('0x52'),_0x1417('0x53')]);_0x30597a[_0x1417('0x4a')]=_[_0x1417('0x51')](_0x30597a[_0x1417('0x4a')],['id',_0x1417('0x52'),_0x1417('0x53')]);return db[_0x1417('0x42')][_0x1417('0x49')](_[_0x1417('0x40')](_0x581bba,_0x30597a[_0x1417('0x4a')]),{'include':_0x30597a[_0x1417('0x32')][_0x1417('0x43')]?[{'all':!![]}]:undefined})[_0x1417('0x24')](function(_0x389d52){var _0x10776a=_0x30597a[_0x1417('0x4b')][_0x1417('0x26')]({'plain':!![]});if(!_0x10776a)throw new Error(_0x1417('0x4c'));if(_0x10776a[_0x1417('0x4d')]===_0x1417('0x4b')){var _0xa8e58b=_0x389d52[_0x1417('0x26')]({'plain':!![]});var _0x216a76=_0x1417('0x27');return db[_0x1417('0x4e')]['find']({'where':{'name':_0x216a76,'userProfileId':_0x10776a[_0x1417('0x54')]},'raw':!![]})[_0x1417('0x24')](function(_0xa3c700){if(_0xa3c700&&_0xa3c700[_0x1417('0x4f')]===0x0){return db[_0x1417('0x28')][_0x1417('0x49')]({'name':_0xa8e58b['name'],'resourceId':_0xa8e58b['id'],'type':_0xa3c700[_0x1417('0x2b')],'sectionId':_0xa3c700['id']},{})[_0x1417('0x24')](function(){return _0x389d52;});}else{return _0x389d52;}})[_0x1417('0x45')](function(_0x168a84){logger[_0x1417('0x29')](_0x1417('0x50'),_0x168a84);throw _0x168a84;});}return _0x389d52;});}})[_0x1417('0x24')](respondWithResult(_0x56f1f6,0xc9))[_0x1417('0x45')](handleError(_0x56f1f6,null));};exports['update']=function(_0x5c39da,_0x5a80ba){if(_0x5c39da['body']['id']){delete _0x5c39da[_0x1417('0x4a')]['id'];}return db[_0x1417('0x42')][_0x1417('0x48')]({'where':{'id':_0x5c39da[_0x1417('0x47')]['id']}})[_0x1417('0x24')](handleEntityNotFound(_0x5a80ba,null))[_0x1417('0x24')](saveUpdates(_0x5c39da[_0x1417('0x4a')],null))[_0x1417('0x24')](respondWithResult(_0x5a80ba,null))[_0x1417('0x45')](handleError(_0x5a80ba,null));};exports[_0x1417('0x25')]=function(_0x182db0,_0x14d550){return db[_0x1417('0x42')][_0x1417('0x48')]({'where':{'id':_0x182db0[_0x1417('0x47')]['id']}})[_0x1417('0x24')](handleEntityNotFound(_0x14d550,null))['then'](removeEntity(_0x14d550,null))[_0x1417('0x45')](handleError(_0x14d550,null));};exports[_0x1417('0x55')]=function(_0x44a07a,_0x5c6572,_0x1b2145){var _0x5e310c={'raw':!![],'where':{}};var _0x10cf4e={};var _0x1fd22f={'count':0x0,'rows':[]};return db[_0x1417('0x42')][_0x1417('0x56')]({'where':{'id':_0x44a07a[_0x1417('0x47')]['id']}})['then'](handleEntityNotFound(_0x5c6572,null))[_0x1417('0x24')](function(_0x4eaacf){if(_0x4eaacf){_0x10cf4e['model']=_['keys'](db['JscriptySessionReport'][_0x1417('0x2e')]);_0x10cf4e[_0x1417('0x32')]=_[_0x1417('0x33')](_0x44a07a['query']);_0x10cf4e[_0x1417('0x34')]=_['intersection'](_0x10cf4e[_0x1417('0x31')],_0x10cf4e[_0x1417('0x32')]);_0x5e310c['attributes']=_[_0x1417('0x35')](_0x10cf4e['model'],qs[_0x1417('0x37')](_0x44a07a[_0x1417('0x32')][_0x1417('0x37')]));_0x5e310c[_0x1417('0x36')]=_0x5e310c[_0x1417('0x36')][_0x1417('0x38')]?_0x5e310c[_0x1417('0x36')]:_0x10cf4e[_0x1417('0x31')];if(!_0x44a07a[_0x1417('0x32')][_0x1417('0x39')](_0x1417('0x3a'))){_0x5e310c[_0x1417('0x1c')]=qs['limit'](_0x44a07a[_0x1417('0x32')][_0x1417('0x1c')]);_0x5e310c['offset']=qs[_0x1417('0x1b')](_0x44a07a[_0x1417('0x32')][_0x1417('0x1b')]);}_0x5e310c['order']=qs['sort'](_0x44a07a[_0x1417('0x32')][_0x1417('0x3b')]);_0x5e310c['where']=qs['filters'](_['pick'](_0x44a07a[_0x1417('0x32')],_0x10cf4e['filters']));_0x5e310c[_0x1417('0x3d')]['ProjectId']=_0x4eaacf['id'];if(_0x44a07a['query'][_0x1417('0x57')]){_0x5e310c[_0x1417('0x3d')]=_[_0x1417('0x40')](_0x5e310c[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x5e310c['attributes'],function(_0x435705){var _0x2b8844={};_0x2b8844[_0x435705]={'$like':'%'+_0x44a07a['query']['filter']+'%'};return _0x2b8844;})});}_0x5e310c=_[_0x1417('0x40')]({},_0x5e310c,_0x44a07a[_0x1417('0x41')]);return db[_0x1417('0x58')][_0x1417('0x1e')]({'where':_0x5e310c[_0x1417('0x3d')]})[_0x1417('0x24')](function(_0x1e05d4){_0x1fd22f[_0x1417('0x1e')]=_0x1e05d4;if(_0x44a07a[_0x1417('0x32')]['includeAll']){_0x5e310c[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x58')][_0x1417('0x59')](_0x5e310c);})['then'](function(_0x5eb3fe){_0x1fd22f[_0x1417('0x5a')]=_0x5eb3fe;return _0x1fd22f;});}})[_0x1417('0x24')](respondWithFilteredResult(_0x5c6572,_0x5e310c))['catch'](handleError(_0x5c6572,null));};exports[_0x1417('0x5b')]=function(_0x13c99f,_0x3bb75b,_0x28e71a){var _0x5f32ea={'raw':!![],'where':{}};var _0x288c84={};var _0xc86d64={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x1417('0x56')]({'where':{'id':_0x13c99f[_0x1417('0x47')]['id']}})['then'](handleEntityNotFound(_0x3bb75b,null))['then'](function(_0x129d5b){if(_0x129d5b){_0x288c84['model']=_['keys'](db['JscriptyAnswerReport'][_0x1417('0x2e')]);_0x288c84[_0x1417('0x32')]=_[_0x1417('0x33')](_0x13c99f[_0x1417('0x32')]);_0x288c84[_0x1417('0x34')]=_[_0x1417('0x35')](_0x288c84[_0x1417('0x31')],_0x288c84[_0x1417('0x32')]);_0x5f32ea[_0x1417('0x36')]=_[_0x1417('0x35')](_0x288c84[_0x1417('0x31')],qs[_0x1417('0x37')](_0x13c99f[_0x1417('0x32')][_0x1417('0x37')]));_0x5f32ea[_0x1417('0x36')]=_0x5f32ea['attributes'][_0x1417('0x38')]?_0x5f32ea[_0x1417('0x36')]:_0x288c84[_0x1417('0x31')];if(!_0x13c99f[_0x1417('0x32')][_0x1417('0x39')](_0x1417('0x3a'))){_0x5f32ea['limit']=qs[_0x1417('0x1c')](_0x13c99f['query'][_0x1417('0x1c')]);_0x5f32ea[_0x1417('0x1b')]=qs[_0x1417('0x1b')](_0x13c99f[_0x1417('0x32')][_0x1417('0x1b')]);}_0x5f32ea[_0x1417('0x5c')]=qs[_0x1417('0x3b')](_0x13c99f[_0x1417('0x32')][_0x1417('0x3b')]);_0x5f32ea['where']=qs['filters'](_['pick'](_0x13c99f[_0x1417('0x32')],_0x288c84['filters']));_0x5f32ea[_0x1417('0x3d')][_0x1417('0x5d')]=_0x129d5b['id'];if(_0x13c99f['query'][_0x1417('0x57')]){_0x5f32ea[_0x1417('0x3d')]=_[_0x1417('0x40')](_0x5f32ea[_0x1417('0x3d')],{'$or':_[_0x1417('0x2d')](_0x5f32ea[_0x1417('0x36')],function(_0x45d35d){var _0x31b9ba={};_0x31b9ba[_0x45d35d]={'$like':'%'+_0x13c99f[_0x1417('0x32')]['filter']+'%'};return _0x31b9ba;})});}_0x5f32ea=_[_0x1417('0x40')]({},_0x5f32ea,_0x13c99f[_0x1417('0x41')]);return db[_0x1417('0x5e')][_0x1417('0x1e')]({'where':_0x5f32ea[_0x1417('0x3d')]})[_0x1417('0x24')](function(_0x3f6d42){_0xc86d64[_0x1417('0x1e')]=_0x3f6d42;if(_0x13c99f[_0x1417('0x32')][_0x1417('0x43')]){_0x5f32ea[_0x1417('0x44')]=[{'all':!![]}];}return db[_0x1417('0x5e')][_0x1417('0x59')](_0x5f32ea);})[_0x1417('0x24')](function(_0x401f85){_0xc86d64[_0x1417('0x5a')]=_0x401f85;return _0xc86d64;});}})[_0x1417('0x24')](respondWithFilteredResult(_0x3bb75b,_0x5f32ea))['catch'](handleError(_0x3bb75b,null));};function char(_0x2b5506){return _0x1417('0x5f')===typeof _0x2b5506?String[_0x1417('0x60')][_0x1417('0x20')](null,arguments):_0x2b5506;}function needsEncapsulation(_0x1379dd){return!!_0x1379dd&&(_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0xd))>=0x0||_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0xa))>=0x0||_0x1379dd['toString']()[_0x1417('0x62')](char(0x2c))>=0x0||_0x1379dd[_0x1417('0x61')]()[_0x1417('0x62')](char(0x22))>=0x0);}function encapsulate(_0x12b422){var _0x218f29=char(0x22),_0x152ef6='\x5c'+char(0x22),_0x4e550c=_0x12b422[_0x1417('0x61')]()[_0x1417('0x63')](new RegExp(_0x218f29,'g'),_0x152ef6);return _0x218f29+_0x4e550c+_0x218f29;}exports[_0x1417('0x64')]=function(_0x4d8063,_0x844174,_0x16ead9){var _0x4a7dcd,_0x45a077;var _0x12ce5b={'where':{'ProjectId':_0x4d8063[_0x1417('0x47')]['id']}};if(_0x4d8063['query']['startTime']){_0x12ce5b[_0x1417('0x3d')][_0x1417('0x65')]=JSON[_0x1417('0x66')](_0x4d8063[_0x1417('0x32')][_0x1417('0x67')]);}return db[_0x1417('0x58')][_0x1417('0x59')](_0x12ce5b)[_0x1417('0x24')](handleEntityNotFound(_0x844174,null))[_0x1417('0x24')](function(_0x559c92){if(_0x559c92){_0x4a7dcd=_0x559c92;return db[_0x1417('0x68')][_0x1417('0x59')]({'where':{'SessionId':{'$in':_[_0x1417('0x2d')](_0x4a7dcd,'id')},'ProjectId':_0x4d8063[_0x1417('0x47')]['id']},'order':_0x1417('0x69')});}})[_0x1417('0x24')](handleEntityNotFound(_0x844174,null))[_0x1417('0x24')](function(_0x5b31c5){if(_0x5b31c5){_0x45a077=_0x5b31c5;var _0x1ae8d8={};for(var _0xd68cb9=0x0,_0xc63848=_0x45a077['length'];_0xd68cb9<_0xc63848;_0xd68cb9++){if(!_0x1ae8d8[_0x1417('0x39')](_0x45a077[_0xd68cb9][_0x1417('0x6a')])){_0x1ae8d8[_0x45a077[_0xd68cb9][_0x1417('0x6a')]]=needsEncapsulation(_0x45a077[_0xd68cb9][_0x1417('0x6b')])?encapsulate(_0x45a077[_0xd68cb9][_0x1417('0x6b')]):_0x45a077[_0xd68cb9]['question'];}}var _0x4c2894=[],_0xafafd8={};for(var _0x58f524=0x0,_0xe7fa21=_0x4a7dcd[_0x1417('0x38')];_0x58f524<_0xe7fa21;_0x58f524++){_0xafafd8={'ProjectId':_0x4d8063[_0x1417('0x47')]['id'],'SessionId':_0x4a7dcd[_0x58f524]['id'],'StartTime':moment(_0x4a7dcd[_0x58f524][_0x1417('0x65')])[_0x1417('0x6c')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x48bb63=0x0,_0x4ef43b=_0x45a077['length'];_0x48bb63<_0x4ef43b;_0x48bb63++){if(_0x45a077[_0x48bb63][_0x1417('0x6d')]==_0x4a7dcd[_0x58f524]['id']&&_0x1ae8d8[_0x1417('0x39')](_0x45a077[_0x48bb63][_0x1417('0x6a')])){_0xafafd8[_0x1ae8d8[_0x45a077[_0x48bb63][_0x1417('0x6a')]]]=_0x45a077[_0x48bb63][_0x1417('0x6e')];}}for(var _0x2ab1c9 in _0x1ae8d8){if(!_0xafafd8[_0x1417('0x39')](_0x1ae8d8[_0x2ab1c9])){_0xafafd8[_0x1ae8d8[_0x2ab1c9]]=null;}}_0x4c2894[_0x1417('0x6f')](_0xafafd8);}return _0x4c2894;}})[_0x1417('0x24')](function(_0x122128){if(!_['isEmpty'](_0x122128)){var _0x1aed6b=toCsv(_0x122128);var _0x177404=Date[_0x1417('0x70')]();fs['writeFileSync'](util[_0x1417('0x6c')](_0x1417('0x71'),_0x4d8063[_0x1417('0x47')]['id'],_0x177404),_0x1aed6b);_0x844174[_0x1417('0x72')]('Content-disposition','attachment;\x20filename='+util['format']('Jscripty_Project_%d_Summary_%s.csv',_0x4d8063[_0x1417('0x47')]['id'],_0x177404));_0x844174[_0x1417('0x72')](_0x1417('0x73'),_0x1417('0x74'));return _0x844174[_0x1417('0x75')](util[_0x1417('0x6c')](_0x1417('0x71'),_0x4d8063[_0x1417('0x47')]['id'],_0x177404));}else{return _0x844174[_0x1417('0x17')](0xcc);}})[_0x1417('0x45')](handleError(_0x844174,null));};
\ No newline at end of file
index b696ee9..fcecd24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b0=['api','bluebird','rimraf','../../config/environment','./jscriptyProject.attributes','exports','JscriptyProject','jscripty_projects','lodash','util'];(function(_0x1353e6,_0x4f30e7){var _0x50a9c4=function(_0x39143b){while(--_0x39143b){_0x1353e6['push'](_0x1353e6['shift']());}};_0x50a9c4(++_0x4f30e7);}(_0x42b0,0xbc));var _0x042b=function(_0x4b0be5,_0x1ed1aa){_0x4b0be5=_0x4b0be5-0x0;var _0x4b2c39=_0x42b0[_0x4b0be5];return _0x4b2c39;};'use strict';var _=require(_0x042b('0x0'));var util=require(_0x042b('0x1'));var logger=require('../../config/logger')(_0x042b('0x2'));var moment=require('moment');var BPromise=require(_0x042b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x042b('0x4'));var config=require(_0x042b('0x5'));var attributes=require(_0x042b('0x6'));module[_0x042b('0x7')]=function(_0x135bc1,_0x5d194a){return _0x135bc1['define'](_0x042b('0x8'),attributes,{'tableName':_0x042b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4b1f=['api','moment','bluebird','path','rimraf','../../config/environment','define','JscriptyProject','jscripty_projects','lodash','util'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4b1f,0x195));var _0xf4b1=function(_0x344a3f,_0x579a22){_0x344a3f=_0x344a3f-0x0;var _0x264712=_0x4b1f[_0x344a3f];return _0x264712;};'use strict';var _=require(_0xf4b1('0x0'));var util=require(_0xf4b1('0x1'));var logger=require('../../config/logger')(_0xf4b1('0x2'));var moment=require(_0xf4b1('0x3'));var BPromise=require(_0xf4b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf4b1('0x5'));var rimraf=require(_0xf4b1('0x6'));var config=require(_0xf4b1('0x7'));var attributes=require('./jscriptyProject.attributes');module['exports']=function(_0x1ab96b,_0x4b676){return _0x1ab96b[_0xf4b1('0x8')](_0xf4b1('0x9'),attributes,{'tableName':_0xf4b1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58e07ff..dfb92de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x51858f,_0x581eb0){var _0x3f7e0e=function(_0x3fadf0){while(--_0x3fadf0){_0x51858f['push'](_0x51858f['shift']());}};_0x3f7e0e(++_0x581eb0);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x3071('0x0'));var BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('JscriptyProject,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
+var _0xbdb7=['request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','info','JscriptyProject,\x20%s,\x20%s'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x125703,_0x46989c){_0x125703=_0x125703-0x0;var _0x1a954b=_0xbdb7[_0x125703];return _0x1a954b;};'use strict';var _=require(_0x7bdb('0x0'));var util=require(_0x7bdb('0x1'));var moment=require(_0x7bdb('0x2'));var BPromise=require(_0x7bdb('0x3'));var rs=require(_0x7bdb('0x4'));var fs=require('fs');var Redis=require(_0x7bdb('0x5'));var db=require(_0x7bdb('0x6'))['db'];var utils=require(_0x7bdb('0x7'));var logger=require(_0x7bdb('0x8'))('rpc');var config=require(_0x7bdb('0x9'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7bdb('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1e23a3,_0x493bde,_0x513cba){return new BPromise(function(_0x468041,_0x11a877){return client['request'](_0x1e23a3,_0x513cba)['then'](function(_0xdc2ffc){logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));logger[_0x7bdb('0xe')](_0x7bdb('0xf'),_0x493bde,_0x7bdb('0xd'),JSON[_0x7bdb('0x10')](_0xdc2ffc));if(_0xdc2ffc['error']){if(_0xdc2ffc['error']['code']===0x1f4){logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error'][_0x7bdb('0x12')]);return _0x11a877(_0xdc2ffc['error']['message']);}logger[_0x7bdb('0x11')](_0x7bdb('0xc'),_0x493bde,_0xdc2ffc['error']['message']);return _0x468041(_0xdc2ffc['error'][_0x7bdb('0x12')]);}else{logger[_0x7bdb('0xb')](_0x7bdb('0xc'),_0x493bde,_0x7bdb('0xd'));_0x468041(_0xdc2ffc[_0x7bdb('0x13')][_0x7bdb('0x12')]);}})[_0x7bdb('0x14')](function(_0x1b2d9b){logger['error'](_0x7bdb('0xc'),_0x493bde,_0x1b2d9b);_0x11a877(_0x1b2d9b);});});}
\ No newline at end of file
index a679d60..d8c583a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e2d=['/describe','isAuthenticated','describe','/:id','show','post','create','update','destroy','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','get','index'];(function(_0x57705e,_0xd3bfaa){var _0x4a50db=function(_0x354dab){while(--_0x354dab){_0x57705e['push'](_0x57705e['shift']());}};_0x4a50db(++_0xd3bfaa);}(_0x2e2d,0x130));var _0xd2e2=function(_0x2ec461,_0x5f588a){_0x2ec461=_0x2ec461-0x0;var _0x28603d=_0x2e2d[_0x2ec461];return _0x28603d;};'use strict';var multer=require(_0xd2e2('0x0'));var util=require(_0xd2e2('0x1'));var path=require(_0xd2e2('0x2'));var timeout=require('connect-timeout');var express=require(_0xd2e2('0x3'));var router=express['Router']();var fs_extra=require(_0xd2e2('0x4'));var auth=require(_0xd2e2('0x5'));var interaction=require(_0xd2e2('0x6'));var config=require(_0xd2e2('0x7'));var controller=require(_0xd2e2('0x8'));router[_0xd2e2('0x9')]('/',auth['isAuthenticated'](),controller[_0xd2e2('0xa')]);router[_0xd2e2('0x9')](_0xd2e2('0xb'),auth[_0xd2e2('0xc')](),controller[_0xd2e2('0xd')]);router[_0xd2e2('0x9')](_0xd2e2('0xe'),auth[_0xd2e2('0xc')](),controller[_0xd2e2('0xf')]);router[_0xd2e2('0x10')]('/',auth['isAuthenticated'](),controller[_0xd2e2('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xd2e2('0x12')]);router['delete'](_0xd2e2('0xe'),auth[_0xd2e2('0xc')](),controller[_0xd2e2('0x13')]);module[_0xd2e2('0x14')]=router;
\ No newline at end of file
+var _0x1d5a=['/:id','show','post','put','update','delete','destroy','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptyQuestionReport.controller','isAuthenticated','index','get','/describe','describe'];(function(_0x5c9ed5,_0x565641){var _0x4c0bb6=function(_0x2abf03){while(--_0x2abf03){_0x5c9ed5['push'](_0x5c9ed5['shift']());}};_0x4c0bb6(++_0x565641);}(_0x1d5a,0x194));var _0xa1d5=function(_0x1b1f24,_0x5624c5){_0x1b1f24=_0x1b1f24-0x0;var _0x186f93=_0x1d5a[_0x1b1f24];return _0x186f93;};'use strict';var multer=require(_0xa1d5('0x0'));var util=require(_0xa1d5('0x1'));var path=require(_0xa1d5('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xa1d5('0x3')]();var fs_extra=require(_0xa1d5('0x4'));var auth=require(_0xa1d5('0x5'));var interaction=require(_0xa1d5('0x6'));var config=require(_0xa1d5('0x7'));var controller=require(_0xa1d5('0x8'));router['get']('/',auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xa')]);router[_0xa1d5('0xb')](_0xa1d5('0xc'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xd')]);router['get'](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0xf')]);router[_0xa1d5('0x10')]('/',auth[_0xa1d5('0x9')](),controller['create']);router[_0xa1d5('0x11')](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0x12')]);router[_0xa1d5('0x13')](_0xa1d5('0xe'),auth[_0xa1d5('0x9')](),controller[_0xa1d5('0x14')]);module[_0xa1d5('0x15')]=router;
\ No newline at end of file
index c0f84e7..002dacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x1969a7,_0x5a133a){var _0x3d665f=function(_0x39c64b){while(--_0x39c64b){_0x1969a7['push'](_0x1969a7['shift']());}};_0x3d665f(++_0x5a133a);}(_0x7a54,0x106));var _0x47a5=function(_0x291ccc,_0x5cc4a8){_0x291ccc=_0x291ccc-0x0;var _0x5db869=_0x7a54[_0x291ccc];return _0x5db869;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
+var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x7a54,0x106));var _0x47a5=function(_0x3dfea7,_0x2dc69b){_0x3dfea7=_0x3dfea7-0x0;var _0x38ba07=_0x7a54[_0x3dfea7];return _0x38ba07;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'question':{'type':Sequelize[_0x47a5('0x2')]},'answer':{'type':Sequelize['TEXT'](_0x47a5('0x3'))},'membername':{'type':Sequelize[_0x47a5('0x4')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x47a5('0x4')]},'uniqueid':{'type':Sequelize[_0x47a5('0x4')]},'calleridname':{'type':Sequelize[_0x47a5('0x4')]},'calleridnum':{'type':Sequelize[_0x47a5('0x4')]},'questionId':{'type':Sequelize[_0x47a5('0x4')]}};
\ No newline at end of file
index 6b09cc0..1383118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7ee=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','then','destroy','error','name','send','index','JscriptyQuestionReport','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','rows','catch','show','params','find','body','update'];(function(_0x45279f,_0x1d65ff){var _0x37fe53=function(_0x13f234){while(--_0x13f234){_0x45279f['push'](_0x45279f['shift']());}};_0x37fe53(++_0x1d65ff);}(_0xf7ee,0x130));var _0xef7e=function(_0x356e42,_0x3e1b42){_0x356e42=_0x356e42-0x0;var _0x4591ec=_0xf7ee[_0x356e42];return _0x4591ec;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xef7e('0x0'));var zipdir=require(_0xef7e('0x1'));var jsonpatch=require(_0xef7e('0x2'));var rp=require(_0xef7e('0x3'));var moment=require('moment');var BPromise=require(_0xef7e('0x4'));var Mustache=require(_0xef7e('0x5'));var util=require(_0xef7e('0x6'));var path=require(_0xef7e('0x7'));var sox=require(_0xef7e('0x8'));var csv=require('to-csv');var ejs=require(_0xef7e('0x9'));var fs=require('fs');var fs_extra=require(_0xef7e('0xa'));var _=require(_0xef7e('0xb'));var squel=require(_0xef7e('0xc'));var crypto=require(_0xef7e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xef7e('0xe'));var toCsv=require(_0xef7e('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xef7e('0x10'));var authService=require(_0xef7e('0x11'));var qs=require(_0xef7e('0x12'));var as=require(_0xef7e('0x13'));var hardwareService=require(_0xef7e('0x14'));var logger=require('../../config/logger')(_0xef7e('0x15'));var utils=require('../../config/utils');var config=require(_0xef7e('0x16'));var licenseUtil=require(_0xef7e('0x17'));var db=require(_0xef7e('0x18'))['db'];function respondWithStatusCode(_0x4571b5,_0x24c5c4){_0x24c5c4=_0x24c5c4||0xcc;return function(_0x202df8){if(_0x202df8){return _0x4571b5[_0xef7e('0x19')](_0x24c5c4);}return _0x4571b5[_0xef7e('0x1a')](_0x24c5c4)[_0xef7e('0x1b')]();};}function respondWithResult(_0x21b65b,_0x41d9cc){_0x41d9cc=_0x41d9cc||0xc8;return function(_0x383621){if(_0x383621){return _0x21b65b[_0xef7e('0x1a')](_0x41d9cc)[_0xef7e('0x1c')](_0x383621);}};}function respondWithFilteredResult(_0x1c7db1,_0x3dfb3a){return function(_0x21c8e0){if(_0x21c8e0){var _0x3ff680=typeof _0x3dfb3a[_0xef7e('0x1d')]===_0xef7e('0x1e')&&typeof _0x3dfb3a[_0xef7e('0x1f')]===_0xef7e('0x1e');var _0x5f0e89=_0x21c8e0['count'];var _0x38d98e=_0x3ff680?0x0:_0x3dfb3a[_0xef7e('0x1d')];var _0x1a9ef4=_0x3ff680?_0x21c8e0['count']:_0x3dfb3a[_0xef7e('0x1d')]+_0x3dfb3a[_0xef7e('0x1f')];var _0x53ce88;if(_0x1a9ef4>=_0x5f0e89){_0x1a9ef4=_0x5f0e89;_0x53ce88=0xc8;}else{_0x53ce88=0xce;}_0x1c7db1['status'](_0x53ce88);return _0x1c7db1[_0xef7e('0x20')](_0xef7e('0x21'),_0x38d98e+'-'+_0x1a9ef4+'/'+_0x5f0e89)[_0xef7e('0x1c')](_0x21c8e0);}return null;};}function patchUpdates(_0x2ce202){return function(_0x5f4641){try{jsonpatch[_0xef7e('0x22')](_0x5f4641,_0x2ce202,!![]);}catch(_0x5a96c5){return BPromise[_0xef7e('0x23')](_0x5a96c5);}return _0x5f4641[_0xef7e('0x24')]();};}function saveUpdates(_0x500d23,_0x548390){return function(_0x5dc781){if(_0x5dc781){return _0x5dc781['update'](_0x500d23)[_0xef7e('0x25')](function(_0x608484){return _0x608484;});}return null;};}function removeEntity(_0x561c03,_0x54928f){return function(_0x41210c){if(_0x41210c){return _0x41210c[_0xef7e('0x26')]()[_0xef7e('0x25')](function(){_0x561c03['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x46bef8,_0x193f77){return function(_0x38bf17){if(!_0x38bf17){_0x46bef8['sendStatus'](0x194);}return _0x38bf17;};}function handleError(_0x11d524,_0x1d6e49){_0x1d6e49=_0x1d6e49||0x1f4;return function(_0x1e34a4){logger[_0xef7e('0x27')](_0x1e34a4['stack']);if(_0x1e34a4[_0xef7e('0x28')]){delete _0x1e34a4['name'];}_0x11d524[_0xef7e('0x1a')](_0x1d6e49)[_0xef7e('0x29')](_0x1e34a4);};}exports[_0xef7e('0x2a')]=function(_0x51d9c4,_0x108f9e){var _0x3a27e9={},_0x5e8f54={},_0x3d97a5={'count':0x0,'rows':[]};var _0x465de0=_['map'](db[_0xef7e('0x2b')][_0xef7e('0x2c')],function(_0x56eeca){return{'name':_0x56eeca[_0xef7e('0x2d')],'type':_0x56eeca[_0xef7e('0x2e')][_0xef7e('0x2f')]};});_0x5e8f54[_0xef7e('0x30')]=_[_0xef7e('0x31')](_0x465de0,_0xef7e('0x28'));_0x5e8f54[_0xef7e('0x32')]=_[_0xef7e('0x33')](_0x51d9c4[_0xef7e('0x32')]);_0x5e8f54[_0xef7e('0x34')]=_[_0xef7e('0x35')](_0x5e8f54[_0xef7e('0x30')],_0x5e8f54['query']);_0x3a27e9[_0xef7e('0x36')]=_['intersection'](_0x5e8f54[_0xef7e('0x30')],qs[_0xef7e('0x37')](_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x37')]));_0x3a27e9[_0xef7e('0x36')]=_0x3a27e9[_0xef7e('0x36')][_0xef7e('0x38')]?_0x3a27e9[_0xef7e('0x36')]:_0x5e8f54[_0xef7e('0x30')];if(!_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x39')](_0xef7e('0x3a'))){_0x3a27e9[_0xef7e('0x1f')]=qs[_0xef7e('0x1f')](_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x1f')]);_0x3a27e9[_0xef7e('0x1d')]=qs[_0xef7e('0x1d')](_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x1d')]);}_0x3a27e9[_0xef7e('0x3b')]=qs[_0xef7e('0x3c')](_0x51d9c4['query'][_0xef7e('0x3c')]);_0x3a27e9[_0xef7e('0x3d')]=qs[_0xef7e('0x34')](_['pick'](_0x51d9c4[_0xef7e('0x32')],_0x5e8f54[_0xef7e('0x34')]),_0x465de0);if(_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x3e')]){_0x3a27e9['where']=_[_0xef7e('0x3f')](_0x3a27e9[_0xef7e('0x3d')],{'$or':_[_0xef7e('0x31')](_0x465de0,function(_0xccefd8){if(_0xccefd8[_0xef7e('0x2e')]!==_0xef7e('0x40')){var _0x2d805e={};_0x2d805e[_0xccefd8['name']]={'$like':'%'+_0x51d9c4[_0xef7e('0x32')]['filter']+'%'};return _0x2d805e;}})});}_0x3a27e9=_[_0xef7e('0x3f')]({},_0x3a27e9,_0x51d9c4[_0xef7e('0x41')]);var _0x2898bc={'where':_0x3a27e9[_0xef7e('0x3d')]};return db[_0xef7e('0x2b')][_0xef7e('0x42')](_0x2898bc)[_0xef7e('0x25')](function(_0x1e51fa){_0x3d97a5[_0xef7e('0x42')]=_0x1e51fa;if(_0x51d9c4[_0xef7e('0x32')][_0xef7e('0x43')]){_0x3a27e9[_0xef7e('0x44')]=[{'all':!![]}];}return db[_0xef7e('0x2b')]['findAll'](_0x3a27e9);})[_0xef7e('0x25')](function(_0x5385ac){_0x3d97a5[_0xef7e('0x45')]=_0x5385ac;return _0x3d97a5;})['then'](respondWithFilteredResult(_0x108f9e,_0x3a27e9))[_0xef7e('0x46')](handleError(_0x108f9e,null));};exports[_0xef7e('0x47')]=function(_0x24a5e9,_0x598d63){var _0x4a3f09={'raw':!![],'where':{'id':_0x24a5e9[_0xef7e('0x48')]['id']}},_0x5c1bfe={};_0x5c1bfe[_0xef7e('0x30')]=_[_0xef7e('0x33')](db[_0xef7e('0x2b')][_0xef7e('0x2c')]);_0x5c1bfe[_0xef7e('0x32')]=_[_0xef7e('0x33')](_0x24a5e9['query']);_0x5c1bfe[_0xef7e('0x34')]=_[_0xef7e('0x35')](_0x5c1bfe[_0xef7e('0x30')],_0x5c1bfe['query']);_0x4a3f09['attributes']=_[_0xef7e('0x35')](_0x5c1bfe[_0xef7e('0x30')],qs[_0xef7e('0x37')](_0x24a5e9[_0xef7e('0x32')][_0xef7e('0x37')]));_0x4a3f09[_0xef7e('0x36')]=_0x4a3f09['attributes'][_0xef7e('0x38')]?_0x4a3f09[_0xef7e('0x36')]:_0x5c1bfe['model'];if(_0x24a5e9[_0xef7e('0x32')][_0xef7e('0x43')]){_0x4a3f09['include']=[{'all':!![]}];}_0x4a3f09=_[_0xef7e('0x3f')]({},_0x4a3f09,_0x24a5e9[_0xef7e('0x41')]);return db[_0xef7e('0x2b')][_0xef7e('0x49')](_0x4a3f09)[_0xef7e('0x25')](handleEntityNotFound(_0x598d63,null))[_0xef7e('0x25')](respondWithResult(_0x598d63,null))[_0xef7e('0x46')](handleError(_0x598d63,null));};exports['create']=function(_0x2ad3e1,_0x35819a){return db['JscriptyQuestionReport']['create'](_0x2ad3e1[_0xef7e('0x4a')],{})['then'](respondWithResult(_0x35819a,0xc9))[_0xef7e('0x46')](handleError(_0x35819a,null));};exports[_0xef7e('0x4b')]=function(_0x30a7fd,_0x4a8c1a){if(_0x30a7fd[_0xef7e('0x4a')]['id']){delete _0x30a7fd[_0xef7e('0x4a')]['id'];}return db[_0xef7e('0x2b')][_0xef7e('0x49')]({'where':{'id':_0x30a7fd['params']['id']}})['then'](handleEntityNotFound(_0x4a8c1a,null))[_0xef7e('0x25')](saveUpdates(_0x30a7fd['body'],null))[_0xef7e('0x25')](respondWithResult(_0x4a8c1a,null))['catch'](handleError(_0x4a8c1a,null));};exports[_0xef7e('0x26')]=function(_0x20c981,_0xc14c94){return db[_0xef7e('0x2b')][_0xef7e('0x49')]({'where':{'id':_0x20c981[_0xef7e('0x48')]['id']}})[_0xef7e('0x25')](handleEntityNotFound(_0xc14c94,null))[_0xef7e('0x25')](removeEntity(_0xc14c94,null))['catch'](handleError(_0xc14c94,null));};exports['describe']=function(_0x2e64a1,_0x16bb7e){return db[_0xef7e('0x2b')]['describe']()['then'](respondWithResult(_0x16bb7e,null))[_0xef7e('0x46')](handleError(_0x16bb7e,null));};
\ No newline at end of file
+var _0x6c54=['name','send','JscriptyQuestionReport','rawAttributes','type','key','map','keys','query','filters','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','include','findAll','catch','show','params','includeAll','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','lodash','squel','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','then','end','stack'];(function(_0x59a482,_0x283736){var _0x535530=function(_0x9d9a47){while(--_0x9d9a47){_0x59a482['push'](_0x59a482['shift']());}};_0x535530(++_0x283736);}(_0x6c54,0x6c));var _0x46c5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6c54[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x46c5('0x0'));var rimraf=require(_0x46c5('0x1'));var zipdir=require(_0x46c5('0x2'));var jsonpatch=require(_0x46c5('0x3'));var rp=require(_0x46c5('0x4'));var moment=require('moment');var BPromise=require(_0x46c5('0x5'));var Mustache=require(_0x46c5('0x6'));var util=require(_0x46c5('0x7'));var path=require('path');var sox=require(_0x46c5('0x8'));var csv=require('to-csv');var ejs=require(_0x46c5('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x46c5('0xa'));var squel=require(_0x46c5('0xb'));var crypto=require('crypto');var jsforce=require(_0x46c5('0xc'));var deskjs=require(_0x46c5('0xd'));var toCsv=require(_0x46c5('0xe'));var querystring=require(_0x46c5('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x46c5('0x10'));var qs=require(_0x46c5('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x46c5('0x12'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x46c5('0x13'));var db=require(_0x46c5('0x14'))['db'];function respondWithStatusCode(_0x1d36ae,_0xc03ae2){_0xc03ae2=_0xc03ae2||0xcc;return function(_0x449dcc){if(_0x449dcc){return _0x1d36ae[_0x46c5('0x15')](_0xc03ae2);}return _0x1d36ae[_0x46c5('0x16')](_0xc03ae2)['end']();};}function respondWithResult(_0x8aa6fc,_0x42197d){_0x42197d=_0x42197d||0xc8;return function(_0x1718f5){if(_0x1718f5){return _0x8aa6fc[_0x46c5('0x16')](_0x42197d)[_0x46c5('0x17')](_0x1718f5);}};}function respondWithFilteredResult(_0x512218,_0xf73f75){return function(_0x519ad8){if(_0x519ad8){var _0x25faaa=typeof _0xf73f75['offset']===_0x46c5('0x18')&&typeof _0xf73f75[_0x46c5('0x19')]===_0x46c5('0x18');var _0x50ac47=_0x519ad8[_0x46c5('0x1a')];var _0x5cc735=_0x25faaa?0x0:_0xf73f75['offset'];var _0x507f90=_0x25faaa?_0x519ad8[_0x46c5('0x1a')]:_0xf73f75[_0x46c5('0x1b')]+_0xf73f75[_0x46c5('0x19')];var _0x28fc9a;if(_0x507f90>=_0x50ac47){_0x507f90=_0x50ac47;_0x28fc9a=0xc8;}else{_0x28fc9a=0xce;}_0x512218[_0x46c5('0x16')](_0x28fc9a);return _0x512218[_0x46c5('0x1c')](_0x46c5('0x1d'),_0x5cc735+'-'+_0x507f90+'/'+_0x50ac47)['json'](_0x519ad8);}return null;};}function patchUpdates(_0x47e5bd){return function(_0x4a34d9){try{jsonpatch['apply'](_0x4a34d9,_0x47e5bd,!![]);}catch(_0x11d2d6){return BPromise[_0x46c5('0x1e')](_0x11d2d6);}return _0x4a34d9[_0x46c5('0x1f')]();};}function saveUpdates(_0x472d35,_0xd6bdfc){return function(_0x5c578e){if(_0x5c578e){return _0x5c578e[_0x46c5('0x20')](_0x472d35)[_0x46c5('0x21')](function(_0x12daaa){return _0x12daaa;});}return null;};}function removeEntity(_0x16966d,_0x395a39){return function(_0x2efb24){if(_0x2efb24){return _0x2efb24['destroy']()['then'](function(){_0x16966d[_0x46c5('0x16')](0xcc)[_0x46c5('0x22')]();});}};}function handleEntityNotFound(_0x399372,_0x1e65c1){return function(_0x5bb763){if(!_0x5bb763){_0x399372[_0x46c5('0x15')](0x194);}return _0x5bb763;};}function handleError(_0x3d7a9b,_0x407b7b){_0x407b7b=_0x407b7b||0x1f4;return function(_0x588bf2){logger['error'](_0x588bf2[_0x46c5('0x23')]);if(_0x588bf2['name']){delete _0x588bf2[_0x46c5('0x24')];}_0x3d7a9b[_0x46c5('0x16')](_0x407b7b)[_0x46c5('0x25')](_0x588bf2);};}exports['index']=function(_0x2812a7,_0x1d65da){var _0x4e58e2={},_0x23d418={},_0x27e1c3={'count':0x0,'rows':[]};var _0x2e9264=_['map'](db[_0x46c5('0x26')][_0x46c5('0x27')],function(_0x243c9f){return{'name':_0x243c9f['fieldName'],'type':_0x243c9f[_0x46c5('0x28')][_0x46c5('0x29')]};});_0x23d418['model']=_[_0x46c5('0x2a')](_0x2e9264,_0x46c5('0x24'));_0x23d418['query']=_[_0x46c5('0x2b')](_0x2812a7[_0x46c5('0x2c')]);_0x23d418[_0x46c5('0x2d')]=_['intersection'](_0x23d418['model'],_0x23d418[_0x46c5('0x2c')]);_0x4e58e2[_0x46c5('0x2e')]=_[_0x46c5('0x2f')](_0x23d418[_0x46c5('0x30')],qs[_0x46c5('0x31')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x31')]));_0x4e58e2[_0x46c5('0x2e')]=_0x4e58e2[_0x46c5('0x2e')][_0x46c5('0x32')]?_0x4e58e2[_0x46c5('0x2e')]:_0x23d418[_0x46c5('0x30')];if(!_0x2812a7['query'][_0x46c5('0x33')](_0x46c5('0x34'))){_0x4e58e2['limit']=qs['limit'](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x19')]);_0x4e58e2[_0x46c5('0x1b')]=qs[_0x46c5('0x1b')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x1b')]);}_0x4e58e2[_0x46c5('0x35')]=qs[_0x46c5('0x36')](_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x36')]);_0x4e58e2[_0x46c5('0x37')]=qs[_0x46c5('0x2d')](_[_0x46c5('0x38')](_0x2812a7[_0x46c5('0x2c')],_0x23d418['filters']),_0x2e9264);if(_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x39')]){_0x4e58e2[_0x46c5('0x37')]=_['merge'](_0x4e58e2[_0x46c5('0x37')],{'$or':_[_0x46c5('0x2a')](_0x2e9264,function(_0x1443a2){if(_0x1443a2['type']!==_0x46c5('0x3a')){var _0x54e121={};_0x54e121[_0x1443a2['name']]={'$like':'%'+_0x2812a7[_0x46c5('0x2c')][_0x46c5('0x39')]+'%'};return _0x54e121;}})});}_0x4e58e2=_[_0x46c5('0x3b')]({},_0x4e58e2,_0x2812a7[_0x46c5('0x3c')]);var _0x183baa={'where':_0x4e58e2[_0x46c5('0x37')]};return db[_0x46c5('0x26')][_0x46c5('0x1a')](_0x183baa)['then'](function(_0x1814e2){_0x27e1c3['count']=_0x1814e2;if(_0x2812a7[_0x46c5('0x2c')]['includeAll']){_0x4e58e2[_0x46c5('0x3d')]=[{'all':!![]}];}return db[_0x46c5('0x26')][_0x46c5('0x3e')](_0x4e58e2);})[_0x46c5('0x21')](function(_0x535db0){_0x27e1c3['rows']=_0x535db0;return _0x27e1c3;})['then'](respondWithFilteredResult(_0x1d65da,_0x4e58e2))[_0x46c5('0x3f')](handleError(_0x1d65da,null));};exports[_0x46c5('0x40')]=function(_0x5e9679,_0x4f3128){var _0x2224be={'raw':!![],'where':{'id':_0x5e9679[_0x46c5('0x41')]['id']}},_0x3bdd17={};_0x3bdd17[_0x46c5('0x30')]=_[_0x46c5('0x2b')](db[_0x46c5('0x26')]['rawAttributes']);_0x3bdd17['query']=_[_0x46c5('0x2b')](_0x5e9679[_0x46c5('0x2c')]);_0x3bdd17[_0x46c5('0x2d')]=_[_0x46c5('0x2f')](_0x3bdd17['model'],_0x3bdd17['query']);_0x2224be[_0x46c5('0x2e')]=_[_0x46c5('0x2f')](_0x3bdd17[_0x46c5('0x30')],qs[_0x46c5('0x31')](_0x5e9679[_0x46c5('0x2c')][_0x46c5('0x31')]));_0x2224be[_0x46c5('0x2e')]=_0x2224be[_0x46c5('0x2e')][_0x46c5('0x32')]?_0x2224be[_0x46c5('0x2e')]:_0x3bdd17['model'];if(_0x5e9679[_0x46c5('0x2c')][_0x46c5('0x42')]){_0x2224be['include']=[{'all':!![]}];}_0x2224be=_['merge']({},_0x2224be,_0x5e9679['options']);return db['JscriptyQuestionReport'][_0x46c5('0x43')](_0x2224be)[_0x46c5('0x21')](handleEntityNotFound(_0x4f3128,null))[_0x46c5('0x21')](respondWithResult(_0x4f3128,null))[_0x46c5('0x3f')](handleError(_0x4f3128,null));};exports[_0x46c5('0x44')]=function(_0x3b413b,_0x277de9){return db[_0x46c5('0x26')][_0x46c5('0x44')](_0x3b413b['body'],{})[_0x46c5('0x21')](respondWithResult(_0x277de9,0xc9))['catch'](handleError(_0x277de9,null));};exports['update']=function(_0x5d4294,_0x592bb1){if(_0x5d4294[_0x46c5('0x45')]['id']){delete _0x5d4294[_0x46c5('0x45')]['id'];}return db[_0x46c5('0x26')][_0x46c5('0x43')]({'where':{'id':_0x5d4294[_0x46c5('0x41')]['id']}})[_0x46c5('0x21')](handleEntityNotFound(_0x592bb1,null))[_0x46c5('0x21')](saveUpdates(_0x5d4294[_0x46c5('0x45')],null))[_0x46c5('0x21')](respondWithResult(_0x592bb1,null))[_0x46c5('0x3f')](handleError(_0x592bb1,null));};exports[_0x46c5('0x46')]=function(_0x519deb,_0x277e16){return db[_0x46c5('0x26')]['find']({'where':{'id':_0x519deb[_0x46c5('0x41')]['id']}})[_0x46c5('0x21')](handleEntityNotFound(_0x277e16,null))['then'](removeEntity(_0x277e16,null))['catch'](handleError(_0x277e16,null));};exports[_0x46c5('0x47')]=function(_0x505ade,_0xee12fe){return db[_0x46c5('0x26')][_0x46c5('0x47')]()[_0x46c5('0x21')](respondWithResult(_0xee12fe,null))[_0x46c5('0x3f')](handleError(_0xee12fe,null));};
\ No newline at end of file
index 08f1600..c0d6521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f14=['JscriptyQuestionReport','util','../../config/logger','api','moment','request-promise','../../config/environment','define'];(function(_0x34325b,_0x5e5afe){var _0x3da348=function(_0x3bf709){while(--_0x3bf709){_0x34325b['push'](_0x34325b['shift']());}};_0x3da348(++_0x5e5afe);}(_0x9f14,0x89));var _0x49f1=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x9f14[_0x2be8c2];return _0x97f531;};'use strict';var _=require('lodash');var util=require(_0x49f1('0x0'));var logger=require(_0x49f1('0x1'))(_0x49f1('0x2'));var moment=require(_0x49f1('0x3'));var BPromise=require('bluebird');var rp=require(_0x49f1('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x49f1('0x5'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x51f4d1,_0x1b4318){return _0x51f4d1[_0x49f1('0x6')](_0x49f1('0x7'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xaf19=['moment','bluebird','request-promise','path','../../config/environment','define','JscriptyQuestionReport','report_jscripty_questions','lodash','../../config/logger','api'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0xaf19,0x1e1));var _0x9af1=function(_0x447205,_0x405a03){_0x447205=_0x447205-0x0;var _0xe28099=_0xaf19[_0x447205];return _0xe28099;};'use strict';var _=require(_0x9af1('0x0'));var util=require('util');var logger=require(_0x9af1('0x1'))(_0x9af1('0x2'));var moment=require(_0x9af1('0x3'));var BPromise=require(_0x9af1('0x4'));var rp=require(_0x9af1('0x5'));var fs=require('fs');var path=require(_0x9af1('0x6'));var rimraf=require('rimraf');var config=require(_0x9af1('0x7'));var attributes=require('./jscriptyQuestionReport.attributes');module['exports']=function(_0x2e33f0,_0x32aad4){return _0x2e33f0[_0x9af1('0x8')](_0x9af1('0x9'),attributes,{'tableName':_0x9af1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3f9a525..f2f80c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd962=['error','message','result','catch','lodash','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x396570,_0x3e04eb){var _0x2d4f69=function(_0x35b84c){while(--_0x35b84c){_0x396570['push'](_0x396570['shift']());}};_0x2d4f69(++_0x3e04eb);}(_0xd962,0x11c));var _0x2d96=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xd962[_0x45bf86];return _0x1f02b7;};'use strict';var _=require(_0x2d96('0x0'));var util=require('util');var moment=require(_0x2d96('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d96('0x2'));var db=require(_0x2d96('0x3'))['db'];var utils=require(_0x2d96('0x4'));var logger=require(_0x2d96('0x5'))(_0x2d96('0x6'));var config=require('../../config/environment');var jayson=require(_0x2d96('0x7'));var client=jayson['client'][_0x2d96('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3e386a,_0x1e39cf,_0x1dc01e){return new BPromise(function(_0x2b2416,_0xfc224f){return client[_0x2d96('0x9')](_0x3e386a,_0x1dc01e)[_0x2d96('0xa')](function(_0x5c0474){logger['info'](_0x2d96('0xb'),_0x1e39cf,_0x2d96('0xc'));logger[_0x2d96('0xd')](_0x2d96('0xe'),_0x1e39cf,'request\x20sent',JSON[_0x2d96('0xf')](_0x5c0474));if(_0x5c0474[_0x2d96('0x10')]){if(_0x5c0474[_0x2d96('0x10')]['code']===0x1f4){logger['error'](_0x2d96('0xb'),_0x1e39cf,_0x5c0474[_0x2d96('0x10')]['message']);return _0xfc224f(_0x5c0474['error']['message']);}logger[_0x2d96('0x10')](_0x2d96('0xb'),_0x1e39cf,_0x5c0474[_0x2d96('0x10')][_0x2d96('0x11')]);return _0x2b2416(_0x5c0474[_0x2d96('0x10')][_0x2d96('0x11')]);}else{logger['info']('JscriptyQuestionReport,\x20%s,\x20%s',_0x1e39cf,'request\x20sent');_0x2b2416(_0x5c0474[_0x2d96('0x12')][_0x2d96('0x11')]);}})[_0x2d96('0x13')](function(_0x584a67){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x1e39cf,_0x584a67);_0xfc224f(_0x584a67);});});}
\ No newline at end of file
+var _0x0947=['request','then','info','request\x20sent','error','JscriptyQuestionReport,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http'];(function(_0x30a26d,_0x74c61){var _0x355120=function(_0x4dbae7){while(--_0x4dbae7){_0x30a26d['push'](_0x30a26d['shift']());}};_0x355120(++_0x74c61);}(_0x0947,0x94));var _0x7094=function(_0x5d84a2,_0x26486c){_0x5d84a2=_0x5d84a2-0x0;var _0x387e37=_0x0947[_0x5d84a2];return _0x387e37;};'use strict';var _=require(_0x7094('0x0'));var util=require(_0x7094('0x1'));var moment=require(_0x7094('0x2'));var BPromise=require('bluebird');var rs=require(_0x7094('0x3'));var fs=require('fs');var Redis=require(_0x7094('0x4'));var db=require(_0x7094('0x5'))['db'];var utils=require(_0x7094('0x6'));var logger=require(_0x7094('0x7'))('rpc');var config=require(_0x7094('0x8'));var jayson=require(_0x7094('0x9'));var client=jayson[_0x7094('0xa')][_0x7094('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x197a8a,_0x4858f5,_0x4d2e68){return new BPromise(function(_0x270fae,_0x47209d){return client[_0x7094('0xc')](_0x197a8a,_0x4d2e68)[_0x7094('0xd')](function(_0x1da65f){logger[_0x7094('0xe')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x4858f5,_0x7094('0xf'));logger['debug']('JscriptyQuestionReport,\x20%s,\x20%s,\x20%s',_0x4858f5,_0x7094('0xf'),JSON['stringify'](_0x1da65f));if(_0x1da65f['error']){if(_0x1da65f[_0x7094('0x10')]['code']===0x1f4){logger['error'](_0x7094('0x11'),_0x4858f5,_0x1da65f[_0x7094('0x10')][_0x7094('0x12')]);return _0x47209d(_0x1da65f['error']['message']);}logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x4858f5,_0x1da65f[_0x7094('0x10')]['message']);return _0x270fae(_0x1da65f[_0x7094('0x10')][_0x7094('0x12')]);}else{logger['info'](_0x7094('0x11'),_0x4858f5,'request\x20sent');_0x270fae(_0x1da65f[_0x7094('0x13')][_0x7094('0x12')]);}})['catch'](function(_0x30e8b1){logger[_0x7094('0x10')](_0x7094('0x11'),_0x4858f5,_0x30e8b1);_0x47209d(_0x30e8b1);});});}
\ No newline at end of file
index fbb1537..ac66fee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11fc=['../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x11fc,0x101));var _0xc11f=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x11fc[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xc11f('0x0'));var util=require(_0xc11f('0x1'));var path=require(_0xc11f('0x2'));var timeout=require(_0xc11f('0x3'));var express=require(_0xc11f('0x4'));var router=express[_0xc11f('0x5')]();var fs_extra=require(_0xc11f('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xc11f('0x7'));var config=require(_0xc11f('0x8'));var controller=require(_0xc11f('0x9'));router[_0xc11f('0xa')]('/',auth[_0xc11f('0xb')](),controller[_0xc11f('0xc')]);router[_0xc11f('0xa')](_0xc11f('0xd'),auth[_0xc11f('0xb')](),controller['describe']);router['get'](_0xc11f('0xe'),auth[_0xc11f('0xb')](),controller[_0xc11f('0xf')]);router[_0xc11f('0xa')]('/:id/questions',auth[_0xc11f('0xb')](),controller['getQuestions']);router[_0xc11f('0x10')]('/',auth[_0xc11f('0xb')](),controller[_0xc11f('0x11')]);router[_0xc11f('0x12')](_0xc11f('0xe'),auth['isAuthenticated'](),controller['update']);router[_0xc11f('0x13')](_0xc11f('0xe'),auth['isAuthenticated'](),controller[_0xc11f('0x14')]);module[_0xc11f('0x15')]=router;
\ No newline at end of file
+var _0x365c=['./jscriptySessionReport.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/questions','getQuestions','create','destroy','exports','multer','Router','../../components/auth/service','../../config/environment'];(function(_0x110c3d,_0x12ee06){var _0x226d67=function(_0x1fb6e1){while(--_0x1fb6e1){_0x110c3d['push'](_0x110c3d['shift']());}};_0x226d67(++_0x12ee06);}(_0x365c,0x1cc));var _0xc365=function(_0x23bad1,_0x207d90){_0x23bad1=_0x23bad1-0x0;var _0x34a55c=_0x365c[_0x23bad1];return _0x34a55c;};'use strict';var multer=require(_0xc365('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc365('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xc365('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xc365('0x3'));var controller=require(_0xc365('0x4'));router[_0xc365('0x5')]('/',auth[_0xc365('0x6')](),controller['index']);router[_0xc365('0x5')](_0xc365('0x7'),auth[_0xc365('0x6')](),controller[_0xc365('0x8')]);router[_0xc365('0x5')](_0xc365('0x9'),auth[_0xc365('0x6')](),controller[_0xc365('0xa')]);router['get'](_0xc365('0xb'),auth[_0xc365('0x6')](),controller[_0xc365('0xc')]);router['post']('/',auth[_0xc365('0x6')](),controller[_0xc365('0xd')]);router['put'](_0xc365('0x9'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0xc365('0x6')](),controller[_0xc365('0xe')]);module[_0xc365('0xf')]=router;
\ No newline at end of file
index b3f328a..e246f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0837=['STRING','moment','exports','setDataValue','endtime','DATE'];(function(_0x3bb63a,_0x15af8f){var _0x3b822a=function(_0x5e31cb){while(--_0x5e31cb){_0x3bb63a['push'](_0x3bb63a['shift']());}};_0x3b822a(++_0x15af8f);}(_0x0837,0x1e1));var _0x7083=function(_0x2c14d9,_0x58a1cc){_0x2c14d9=_0x2c14d9-0x0;var _0x45b372=_0x0837[_0x2c14d9];return _0x45b372;};'use strict';var moment=require(_0x7083('0x0'));var Sequelize=require('sequelize');module[_0x7083('0x1')]={'starttime':{'type':Sequelize['DATE'],'set':function(_0x1c0b97){this[_0x7083('0x2')]('starttime',_0x1c0b97);this[_0x7083('0x2')](_0x7083('0x3'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0x7083('0x4')]},'membername':{'type':Sequelize['STRING']},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x7083('0x5')]},'uniqueid':{'type':Sequelize[_0x7083('0x5')]},'calleridname':{'type':Sequelize[_0x7083('0x5')]},'calleridnum':{'type':Sequelize[_0x7083('0x5')]},'completed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0xe74b=['STRING','BOOLEAN','sequelize','DATE','setDataValue','starttime','endtime','format'];(function(_0x39096d,_0x51f8a0){var _0x13da4f=function(_0x11e6b2){while(--_0x11e6b2){_0x39096d['push'](_0x39096d['shift']());}};_0x13da4f(++_0x51f8a0);}(_0xe74b,0x112));var _0xbe74=function(_0x4505ed,_0x19ec7a){_0x4505ed=_0x4505ed-0x0;var _0x1ed39f=_0xe74b[_0x4505ed];return _0x1ed39f;};'use strict';var moment=require('moment');var Sequelize=require(_0xbe74('0x0'));module['exports']={'starttime':{'type':Sequelize[_0xbe74('0x1')],'set':function(_0x59293e){this[_0xbe74('0x2')](_0xbe74('0x3'),_0x59293e);this[_0xbe74('0x2')](_0xbe74('0x4'),moment()[_0xbe74('0x5')]('YYYY-MM-DD\x20HH:mm:ss'));}},'endtime':{'type':Sequelize[_0xbe74('0x1')]},'membername':{'type':Sequelize[_0xbe74('0x6')]},'projectname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0xbe74('0x6')]},'uniqueid':{'type':Sequelize[_0xbe74('0x6')]},'calleridname':{'type':Sequelize[_0xbe74('0x6')]},'calleridnum':{'type':Sequelize[_0xbe74('0x6')]},'completed':{'type':Sequelize[_0xbe74('0x7')],'defaultValue':![]}};
\ No newline at end of file
index 7e0408a..bead475 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f5=['end','status','offset','limit','set','apply','reject','update','then','destroy','error','stack','name','send','map','JscriptySessionReport','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','count','includeAll','include','show','options','catch','create','body','find','params','describe','getQuestions','findOne','JscriptyQuestionReport','rawAttributes','pick','SessionId','findAll','rows','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','sendStatus'];(function(_0x336c8b,_0x56b55b){var _0x4dd2f6=function(_0x169a0f){while(--_0x169a0f){_0x336c8b['push'](_0x336c8b['shift']());}};_0x4dd2f6(++_0x56b55b);}(_0x10f5,0x110));var _0x510f=function(_0x447341,_0x4c80a9){_0x447341=_0x447341-0x0;var _0x42b06a=_0x10f5[_0x447341];return _0x42b06a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x510f('0x0'));var rp=require(_0x510f('0x1'));var moment=require(_0x510f('0x2'));var BPromise=require(_0x510f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x510f('0x4'));var sox=require(_0x510f('0x5'));var csv=require(_0x510f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x510f('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x510f('0x8'));var jsforce=require('jsforce');var deskjs=require(_0x510f('0x9'));var toCsv=require(_0x510f('0x6'));var querystring=require(_0x510f('0xa'));var Papa=require(_0x510f('0xb'));var Redis=require(_0x510f('0xc'));var authService=require(_0x510f('0xd'));var qs=require(_0x510f('0xe'));var as=require(_0x510f('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x510f('0x10'));var utils=require('../../config/utils');var config=require(_0x510f('0x11'));var licenseUtil=require(_0x510f('0x12'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x242105,_0x3016bf){_0x3016bf=_0x3016bf||0xcc;return function(_0x425d0e){if(_0x425d0e){return _0x242105[_0x510f('0x13')](_0x3016bf);}return _0x242105['status'](_0x3016bf)[_0x510f('0x14')]();};}function respondWithResult(_0x39acae,_0x454554){_0x454554=_0x454554||0xc8;return function(_0x1495c0){if(_0x1495c0){return _0x39acae[_0x510f('0x15')](_0x454554)['json'](_0x1495c0);}};}function respondWithFilteredResult(_0x44dd1e,_0x272321){return function(_0x3c097b){if(_0x3c097b){var _0x247580=typeof _0x272321[_0x510f('0x16')]==='undefined'&&typeof _0x272321[_0x510f('0x17')]==='undefined';var _0xb5f7f3=_0x3c097b['count'];var _0x4fd078=_0x247580?0x0:_0x272321[_0x510f('0x16')];var _0x1546e2=_0x247580?_0x3c097b['count']:_0x272321[_0x510f('0x16')]+_0x272321['limit'];var _0x330dca;if(_0x1546e2>=_0xb5f7f3){_0x1546e2=_0xb5f7f3;_0x330dca=0xc8;}else{_0x330dca=0xce;}_0x44dd1e[_0x510f('0x15')](_0x330dca);return _0x44dd1e[_0x510f('0x18')]('Content-Range',_0x4fd078+'-'+_0x1546e2+'/'+_0xb5f7f3)['json'](_0x3c097b);}return null;};}function patchUpdates(_0x40cb61){return function(_0x3854e3){try{jsonpatch[_0x510f('0x19')](_0x3854e3,_0x40cb61,!![]);}catch(_0x31835c){return BPromise[_0x510f('0x1a')](_0x31835c);}return _0x3854e3['save']();};}function saveUpdates(_0x512470,_0x262015){return function(_0x513159){if(_0x513159){return _0x513159[_0x510f('0x1b')](_0x512470)[_0x510f('0x1c')](function(_0x10d721){return _0x10d721;});}return null;};}function removeEntity(_0x2e8fd1,_0x4b4242){return function(_0x52342a){if(_0x52342a){return _0x52342a[_0x510f('0x1d')]()[_0x510f('0x1c')](function(){_0x2e8fd1[_0x510f('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x541f4a,_0x2e38e8){return function(_0x5c0389){if(!_0x5c0389){_0x541f4a[_0x510f('0x13')](0x194);}return _0x5c0389;};}function handleError(_0x575a69,_0x1c0c1f){_0x1c0c1f=_0x1c0c1f||0x1f4;return function(_0x1ed96b){logger[_0x510f('0x1e')](_0x1ed96b[_0x510f('0x1f')]);if(_0x1ed96b[_0x510f('0x20')]){delete _0x1ed96b[_0x510f('0x20')];}_0x575a69[_0x510f('0x15')](_0x1c0c1f)[_0x510f('0x21')](_0x1ed96b);};}exports['index']=function(_0x53aa58,_0x70bf4e){var _0x4eaa7e={},_0x45e2d3={},_0x2a6308={'count':0x0,'rows':[]};var _0x503d11=_[_0x510f('0x22')](db[_0x510f('0x23')]['rawAttributes'],function(_0x13de4b){return{'name':_0x13de4b[_0x510f('0x24')],'type':_0x13de4b[_0x510f('0x25')][_0x510f('0x26')]};});_0x45e2d3[_0x510f('0x27')]=_['map'](_0x503d11,_0x510f('0x20'));_0x45e2d3[_0x510f('0x28')]=_[_0x510f('0x29')](_0x53aa58[_0x510f('0x28')]);_0x45e2d3['filters']=_['intersection'](_0x45e2d3[_0x510f('0x27')],_0x45e2d3[_0x510f('0x28')]);_0x4eaa7e[_0x510f('0x2a')]=_[_0x510f('0x2b')](_0x45e2d3[_0x510f('0x27')],qs[_0x510f('0x2c')](_0x53aa58[_0x510f('0x28')][_0x510f('0x2c')]));_0x4eaa7e[_0x510f('0x2a')]=_0x4eaa7e[_0x510f('0x2a')][_0x510f('0x2d')]?_0x4eaa7e[_0x510f('0x2a')]:_0x45e2d3['model'];if(!_0x53aa58[_0x510f('0x28')][_0x510f('0x2e')](_0x510f('0x2f'))){_0x4eaa7e['limit']=qs['limit'](_0x53aa58[_0x510f('0x28')][_0x510f('0x17')]);_0x4eaa7e[_0x510f('0x16')]=qs[_0x510f('0x16')](_0x53aa58['query'][_0x510f('0x16')]);}_0x4eaa7e['order']=qs[_0x510f('0x30')](_0x53aa58[_0x510f('0x28')][_0x510f('0x30')]);_0x4eaa7e[_0x510f('0x31')]=qs[_0x510f('0x32')](_['pick'](_0x53aa58[_0x510f('0x28')],_0x45e2d3[_0x510f('0x32')]),_0x503d11);if(_0x53aa58[_0x510f('0x28')][_0x510f('0x33')]){_0x4eaa7e[_0x510f('0x31')]=_[_0x510f('0x34')](_0x4eaa7e[_0x510f('0x31')],{'$or':_[_0x510f('0x22')](_0x503d11,function(_0x46d671){if(_0x46d671[_0x510f('0x25')]!==_0x510f('0x35')){var _0x3155fd={};_0x3155fd[_0x46d671['name']]={'$like':'%'+_0x53aa58['query']['filter']+'%'};return _0x3155fd;}})});}_0x4eaa7e=_[_0x510f('0x34')]({},_0x4eaa7e,_0x53aa58['options']);var _0x2df49f={'where':_0x4eaa7e[_0x510f('0x31')]};return db[_0x510f('0x23')][_0x510f('0x36')](_0x2df49f)['then'](function(_0x369de5){_0x2a6308[_0x510f('0x36')]=_0x369de5;if(_0x53aa58[_0x510f('0x28')][_0x510f('0x37')]){_0x4eaa7e[_0x510f('0x38')]=[{'all':!![]}];}return db[_0x510f('0x23')]['findAll'](_0x4eaa7e);})[_0x510f('0x1c')](function(_0x460506){_0x2a6308['rows']=_0x460506;return _0x2a6308;})['then'](respondWithFilteredResult(_0x70bf4e,_0x4eaa7e))['catch'](handleError(_0x70bf4e,null));};exports[_0x510f('0x39')]=function(_0x6e0071,_0x310d54){var _0x31c2fe={'raw':!![],'where':{'id':_0x6e0071['params']['id']}},_0x362dff={};_0x362dff[_0x510f('0x27')]=_[_0x510f('0x29')](db[_0x510f('0x23')]['rawAttributes']);_0x362dff[_0x510f('0x28')]=_[_0x510f('0x29')](_0x6e0071[_0x510f('0x28')]);_0x362dff['filters']=_['intersection'](_0x362dff['model'],_0x362dff[_0x510f('0x28')]);_0x31c2fe[_0x510f('0x2a')]=_[_0x510f('0x2b')](_0x362dff['model'],qs[_0x510f('0x2c')](_0x6e0071['query'][_0x510f('0x2c')]));_0x31c2fe[_0x510f('0x2a')]=_0x31c2fe['attributes'][_0x510f('0x2d')]?_0x31c2fe[_0x510f('0x2a')]:_0x362dff['model'];if(_0x6e0071[_0x510f('0x28')]['includeAll']){_0x31c2fe[_0x510f('0x38')]=[{'all':!![]}];}_0x31c2fe=_[_0x510f('0x34')]({},_0x31c2fe,_0x6e0071[_0x510f('0x3a')]);return db[_0x510f('0x23')]['find'](_0x31c2fe)[_0x510f('0x1c')](handleEntityNotFound(_0x310d54,null))['then'](respondWithResult(_0x310d54,null))[_0x510f('0x3b')](handleError(_0x310d54,null));};exports['create']=function(_0x14135f,_0x2dd107){return db[_0x510f('0x23')][_0x510f('0x3c')](_0x14135f[_0x510f('0x3d')],{})['then'](respondWithResult(_0x2dd107,0xc9))['catch'](handleError(_0x2dd107,null));};exports[_0x510f('0x1b')]=function(_0x4540ce,_0x2dd36a){if(_0x4540ce['body']['id']){delete _0x4540ce[_0x510f('0x3d')]['id'];}return db[_0x510f('0x23')][_0x510f('0x3e')]({'where':{'id':_0x4540ce['params']['id']}})[_0x510f('0x1c')](handleEntityNotFound(_0x2dd36a,null))['then'](saveUpdates(_0x4540ce[_0x510f('0x3d')],null))[_0x510f('0x1c')](respondWithResult(_0x2dd36a,null))['catch'](handleError(_0x2dd36a,null));};exports[_0x510f('0x1d')]=function(_0x39618d,_0x2a9bf7){return db[_0x510f('0x23')][_0x510f('0x3e')]({'where':{'id':_0x39618d[_0x510f('0x3f')]['id']}})['then'](handleEntityNotFound(_0x2a9bf7,null))['then'](removeEntity(_0x2a9bf7,null))[_0x510f('0x3b')](handleError(_0x2a9bf7,null));};exports[_0x510f('0x40')]=function(_0xe8ff72,_0x2c57f1){return db[_0x510f('0x23')][_0x510f('0x40')]()[_0x510f('0x1c')](respondWithResult(_0x2c57f1,null))['catch'](handleError(_0x2c57f1,null));};exports[_0x510f('0x41')]=function(_0x23c9f8,_0x4eb2b9,_0xe31136){var _0x36a8c3={'raw':!![],'where':{}};var _0x2a863d={};var _0x4bfc6b={'count':0x0,'rows':[]};return db[_0x510f('0x23')][_0x510f('0x42')]({'where':{'id':_0x23c9f8[_0x510f('0x3f')]['id']}})[_0x510f('0x1c')](handleEntityNotFound(_0x4eb2b9,null))['then'](function(_0x3b7b0c){if(_0x3b7b0c){_0x2a863d[_0x510f('0x27')]=_['keys'](db[_0x510f('0x43')][_0x510f('0x44')]);_0x2a863d[_0x510f('0x28')]=_[_0x510f('0x29')](_0x23c9f8[_0x510f('0x28')]);_0x2a863d[_0x510f('0x32')]=_[_0x510f('0x2b')](_0x2a863d[_0x510f('0x27')],_0x2a863d[_0x510f('0x28')]);_0x36a8c3[_0x510f('0x2a')]=_[_0x510f('0x2b')](_0x2a863d[_0x510f('0x27')],qs[_0x510f('0x2c')](_0x23c9f8[_0x510f('0x28')][_0x510f('0x2c')]));_0x36a8c3[_0x510f('0x2a')]=_0x36a8c3[_0x510f('0x2a')]['length']?_0x36a8c3[_0x510f('0x2a')]:_0x2a863d[_0x510f('0x27')];if(!_0x23c9f8['query'][_0x510f('0x2e')](_0x510f('0x2f'))){_0x36a8c3['limit']=qs['limit'](_0x23c9f8[_0x510f('0x28')][_0x510f('0x17')]);_0x36a8c3['offset']=qs[_0x510f('0x16')](_0x23c9f8[_0x510f('0x28')][_0x510f('0x16')]);}_0x36a8c3['order']=qs[_0x510f('0x30')](_0x23c9f8['query']['sort']);_0x36a8c3[_0x510f('0x31')]=qs[_0x510f('0x32')](_[_0x510f('0x45')](_0x23c9f8[_0x510f('0x28')],_0x2a863d[_0x510f('0x32')]));_0x36a8c3[_0x510f('0x31')][_0x510f('0x46')]=_0x3b7b0c['id'];if(_0x23c9f8[_0x510f('0x28')][_0x510f('0x33')]){_0x36a8c3['where']=_[_0x510f('0x34')](_0x36a8c3[_0x510f('0x31')],{'$or':_[_0x510f('0x22')](_0x36a8c3[_0x510f('0x2a')],function(_0x403ee4){var _0x458602={};_0x458602[_0x403ee4]={'$like':'%'+_0x23c9f8['query'][_0x510f('0x33')]+'%'};return _0x458602;})});}_0x36a8c3=_['merge']({},_0x36a8c3,_0x23c9f8['options']);return db['JscriptyQuestionReport']['count']({'where':_0x36a8c3[_0x510f('0x31')]})['then'](function(_0x4bbd85){_0x4bfc6b[_0x510f('0x36')]=_0x4bbd85;if(_0x23c9f8[_0x510f('0x28')]['includeAll']){_0x36a8c3[_0x510f('0x38')]=[{'all':!![]}];}return db[_0x510f('0x43')][_0x510f('0x47')](_0x36a8c3);})[_0x510f('0x1c')](function(_0x18e8f7){_0x4bfc6b[_0x510f('0x48')]=_0x18e8f7;return _0x4bfc6b;});}})[_0x510f('0x1c')](respondWithFilteredResult(_0x4eb2b9,_0x36a8c3))[_0x510f('0x3b')](handleError(_0x4eb2b9,null));};
\ No newline at end of file
+var _0xa3ee=['limit','order','sort','where','pick','filter','merge','VIRTUAL','options','JscriptySessionReport','includeAll','findAll','rows','catch','show','params','keys','create','body','find','describe','findOne','JscriptyQuestionReport','SessionId','include','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/utils','../../config/license/util','status','end','json','offset','undefined','count','Content-Range','apply','save','update','then','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x33edd3,_0x2404c0){var _0x2cc549=function(_0x26b633){while(--_0x26b633){_0x33edd3['push'](_0x33edd3['shift']());}};_0x2cc549(++_0x2404c0);}(_0xa3ee,0x19f));var _0xea3e=function(_0x38f003,_0x403eac){_0x38f003=_0x38f003-0x0;var _0x3f8dbe=_0xa3ee[_0x38f003];return _0x3f8dbe;};'use strict';var emlformat=require(_0xea3e('0x0'));var rimraf=require(_0xea3e('0x1'));var zipdir=require(_0xea3e('0x2'));var jsonpatch=require(_0xea3e('0x3'));var rp=require(_0xea3e('0x4'));var moment=require(_0xea3e('0x5'));var BPromise=require(_0xea3e('0x6'));var Mustache=require(_0xea3e('0x7'));var util=require(_0xea3e('0x8'));var path=require(_0xea3e('0x9'));var sox=require(_0xea3e('0xa'));var csv=require(_0xea3e('0xb'));var ejs=require(_0xea3e('0xc'));var fs=require('fs');var fs_extra=require(_0xea3e('0xd'));var _=require('lodash');var squel=require(_0xea3e('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xea3e('0xf'));var toCsv=require(_0xea3e('0xb'));var querystring=require(_0xea3e('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xea3e('0x11'));var qs=require(_0xea3e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xea3e('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xea3e('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xea3e('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x40f139,_0xbd23ba){_0xbd23ba=_0xbd23ba||0xcc;return function(_0x49fc61){if(_0x49fc61){return _0x40f139['sendStatus'](_0xbd23ba);}return _0x40f139[_0xea3e('0x16')](_0xbd23ba)[_0xea3e('0x17')]();};}function respondWithResult(_0x4249b0,_0x377d4a){_0x377d4a=_0x377d4a||0xc8;return function(_0x480ec9){if(_0x480ec9){return _0x4249b0[_0xea3e('0x16')](_0x377d4a)[_0xea3e('0x18')](_0x480ec9);}};}function respondWithFilteredResult(_0x2fe5a2,_0x1319f0){return function(_0x5443ca){if(_0x5443ca){var _0x42d8a4=typeof _0x1319f0[_0xea3e('0x19')]==='undefined'&&typeof _0x1319f0['limit']===_0xea3e('0x1a');var _0x30774f=_0x5443ca[_0xea3e('0x1b')];var _0x1210cc=_0x42d8a4?0x0:_0x1319f0[_0xea3e('0x19')];var _0x2be1f4=_0x42d8a4?_0x5443ca[_0xea3e('0x1b')]:_0x1319f0['offset']+_0x1319f0['limit'];var _0x785948;if(_0x2be1f4>=_0x30774f){_0x2be1f4=_0x30774f;_0x785948=0xc8;}else{_0x785948=0xce;}_0x2fe5a2[_0xea3e('0x16')](_0x785948);return _0x2fe5a2['set'](_0xea3e('0x1c'),_0x1210cc+'-'+_0x2be1f4+'/'+_0x30774f)[_0xea3e('0x18')](_0x5443ca);}return null;};}function patchUpdates(_0x588707){return function(_0x4e595c){try{jsonpatch[_0xea3e('0x1d')](_0x4e595c,_0x588707,!![]);}catch(_0x1d54ca){return BPromise['reject'](_0x1d54ca);}return _0x4e595c[_0xea3e('0x1e')]();};}function saveUpdates(_0x769001,_0x360cfb){return function(_0x25989d){if(_0x25989d){return _0x25989d[_0xea3e('0x1f')](_0x769001)[_0xea3e('0x20')](function(_0x32fb64){return _0x32fb64;});}return null;};}function removeEntity(_0x5b9a59,_0x4b741d){return function(_0x2585b2){if(_0x2585b2){return _0x2585b2[_0xea3e('0x21')]()[_0xea3e('0x20')](function(){_0x5b9a59[_0xea3e('0x16')](0xcc)[_0xea3e('0x17')]();});}};}function handleEntityNotFound(_0x571e9a,_0x51696a){return function(_0x4af7f5){if(!_0x4af7f5){_0x571e9a[_0xea3e('0x22')](0x194);}return _0x4af7f5;};}function handleError(_0x41e658,_0x1d6a13){_0x1d6a13=_0x1d6a13||0x1f4;return function(_0x572c05){logger[_0xea3e('0x23')](_0x572c05['stack']);if(_0x572c05[_0xea3e('0x24')]){delete _0x572c05[_0xea3e('0x24')];}_0x41e658[_0xea3e('0x16')](_0x1d6a13)[_0xea3e('0x25')](_0x572c05);};}exports[_0xea3e('0x26')]=function(_0x157abc,_0x3d6fe3){var _0x19a2b3={},_0x3d3db3={},_0x167a8b={'count':0x0,'rows':[]};var _0x6bfb66=_[_0xea3e('0x27')](db['JscriptySessionReport'][_0xea3e('0x28')],function(_0x459346){return{'name':_0x459346[_0xea3e('0x29')],'type':_0x459346[_0xea3e('0x2a')][_0xea3e('0x2b')]};});_0x3d3db3[_0xea3e('0x2c')]=_['map'](_0x6bfb66,_0xea3e('0x24'));_0x3d3db3[_0xea3e('0x2d')]=_['keys'](_0x157abc[_0xea3e('0x2d')]);_0x3d3db3[_0xea3e('0x2e')]=_[_0xea3e('0x2f')](_0x3d3db3[_0xea3e('0x2c')],_0x3d3db3[_0xea3e('0x2d')]);_0x19a2b3[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x3d3db3[_0xea3e('0x2c')],qs[_0xea3e('0x31')](_0x157abc[_0xea3e('0x2d')]['fields']));_0x19a2b3['attributes']=_0x19a2b3[_0xea3e('0x30')][_0xea3e('0x32')]?_0x19a2b3[_0xea3e('0x30')]:_0x3d3db3[_0xea3e('0x2c')];if(!_0x157abc[_0xea3e('0x2d')][_0xea3e('0x33')](_0xea3e('0x34'))){_0x19a2b3[_0xea3e('0x35')]=qs[_0xea3e('0x35')](_0x157abc[_0xea3e('0x2d')]['limit']);_0x19a2b3[_0xea3e('0x19')]=qs['offset'](_0x157abc[_0xea3e('0x2d')][_0xea3e('0x19')]);}_0x19a2b3[_0xea3e('0x36')]=qs[_0xea3e('0x37')](_0x157abc[_0xea3e('0x2d')]['sort']);_0x19a2b3[_0xea3e('0x38')]=qs['filters'](_[_0xea3e('0x39')](_0x157abc[_0xea3e('0x2d')],_0x3d3db3['filters']),_0x6bfb66);if(_0x157abc[_0xea3e('0x2d')][_0xea3e('0x3a')]){_0x19a2b3[_0xea3e('0x38')]=_[_0xea3e('0x3b')](_0x19a2b3[_0xea3e('0x38')],{'$or':_['map'](_0x6bfb66,function(_0xec59f1){if(_0xec59f1['type']!==_0xea3e('0x3c')){var _0x45e648={};_0x45e648[_0xec59f1[_0xea3e('0x24')]]={'$like':'%'+_0x157abc[_0xea3e('0x2d')]['filter']+'%'};return _0x45e648;}})});}_0x19a2b3=_[_0xea3e('0x3b')]({},_0x19a2b3,_0x157abc[_0xea3e('0x3d')]);var _0x1c01a8={'where':_0x19a2b3['where']};return db[_0xea3e('0x3e')][_0xea3e('0x1b')](_0x1c01a8)['then'](function(_0x2a4333){_0x167a8b[_0xea3e('0x1b')]=_0x2a4333;if(_0x157abc[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x19a2b3['include']=[{'all':!![]}];}return db[_0xea3e('0x3e')][_0xea3e('0x40')](_0x19a2b3);})[_0xea3e('0x20')](function(_0x1462cf){_0x167a8b[_0xea3e('0x41')]=_0x1462cf;return _0x167a8b;})[_0xea3e('0x20')](respondWithFilteredResult(_0x3d6fe3,_0x19a2b3))[_0xea3e('0x42')](handleError(_0x3d6fe3,null));};exports[_0xea3e('0x43')]=function(_0x5bcf62,_0x32e103){var _0x5b2b8b={'raw':!![],'where':{'id':_0x5bcf62[_0xea3e('0x44')]['id']}},_0x518af7={};_0x518af7[_0xea3e('0x2c')]=_[_0xea3e('0x45')](db[_0xea3e('0x3e')][_0xea3e('0x28')]);_0x518af7[_0xea3e('0x2d')]=_[_0xea3e('0x45')](_0x5bcf62[_0xea3e('0x2d')]);_0x518af7[_0xea3e('0x2e')]=_[_0xea3e('0x2f')](_0x518af7[_0xea3e('0x2c')],_0x518af7['query']);_0x5b2b8b[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x518af7[_0xea3e('0x2c')],qs[_0xea3e('0x31')](_0x5bcf62[_0xea3e('0x2d')][_0xea3e('0x31')]));_0x5b2b8b[_0xea3e('0x30')]=_0x5b2b8b['attributes'][_0xea3e('0x32')]?_0x5b2b8b['attributes']:_0x518af7[_0xea3e('0x2c')];if(_0x5bcf62[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x5b2b8b['include']=[{'all':!![]}];}_0x5b2b8b=_[_0xea3e('0x3b')]({},_0x5b2b8b,_0x5bcf62['options']);return db['JscriptySessionReport']['find'](_0x5b2b8b)[_0xea3e('0x20')](handleEntityNotFound(_0x32e103,null))[_0xea3e('0x20')](respondWithResult(_0x32e103,null))[_0xea3e('0x42')](handleError(_0x32e103,null));};exports[_0xea3e('0x46')]=function(_0x1e047e,_0x5ba848){return db['JscriptySessionReport'][_0xea3e('0x46')](_0x1e047e[_0xea3e('0x47')],{})[_0xea3e('0x20')](respondWithResult(_0x5ba848,0xc9))[_0xea3e('0x42')](handleError(_0x5ba848,null));};exports[_0xea3e('0x1f')]=function(_0x20c43a,_0x296ac5){if(_0x20c43a['body']['id']){delete _0x20c43a['body']['id'];}return db[_0xea3e('0x3e')][_0xea3e('0x48')]({'where':{'id':_0x20c43a[_0xea3e('0x44')]['id']}})['then'](handleEntityNotFound(_0x296ac5,null))['then'](saveUpdates(_0x20c43a[_0xea3e('0x47')],null))['then'](respondWithResult(_0x296ac5,null))[_0xea3e('0x42')](handleError(_0x296ac5,null));};exports[_0xea3e('0x21')]=function(_0x41e110,_0x55f6e0){return db[_0xea3e('0x3e')]['find']({'where':{'id':_0x41e110[_0xea3e('0x44')]['id']}})[_0xea3e('0x20')](handleEntityNotFound(_0x55f6e0,null))[_0xea3e('0x20')](removeEntity(_0x55f6e0,null))[_0xea3e('0x42')](handleError(_0x55f6e0,null));};exports[_0xea3e('0x49')]=function(_0x21b2ad,_0xc03219){return db[_0xea3e('0x3e')][_0xea3e('0x49')]()[_0xea3e('0x20')](respondWithResult(_0xc03219,null))[_0xea3e('0x42')](handleError(_0xc03219,null));};exports['getQuestions']=function(_0x4fc935,_0x3e358a,_0x5a4ac6){var _0x45def8={'raw':!![],'where':{}};var _0x405a1f={};var _0x35d32a={'count':0x0,'rows':[]};return db[_0xea3e('0x3e')][_0xea3e('0x4a')]({'where':{'id':_0x4fc935['params']['id']}})[_0xea3e('0x20')](handleEntityNotFound(_0x3e358a,null))[_0xea3e('0x20')](function(_0x2d5b89){if(_0x2d5b89){_0x405a1f['model']=_[_0xea3e('0x45')](db[_0xea3e('0x4b')][_0xea3e('0x28')]);_0x405a1f[_0xea3e('0x2d')]=_['keys'](_0x4fc935[_0xea3e('0x2d')]);_0x405a1f['filters']=_[_0xea3e('0x2f')](_0x405a1f[_0xea3e('0x2c')],_0x405a1f['query']);_0x45def8[_0xea3e('0x30')]=_[_0xea3e('0x2f')](_0x405a1f[_0xea3e('0x2c')],qs['fields'](_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x31')]));_0x45def8[_0xea3e('0x30')]=_0x45def8[_0xea3e('0x30')]['length']?_0x45def8[_0xea3e('0x30')]:_0x405a1f[_0xea3e('0x2c')];if(!_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x33')](_0xea3e('0x34'))){_0x45def8[_0xea3e('0x35')]=qs[_0xea3e('0x35')](_0x4fc935[_0xea3e('0x2d')]['limit']);_0x45def8[_0xea3e('0x19')]=qs['offset'](_0x4fc935['query'][_0xea3e('0x19')]);}_0x45def8[_0xea3e('0x36')]=qs[_0xea3e('0x37')](_0x4fc935['query'][_0xea3e('0x37')]);_0x45def8[_0xea3e('0x38')]=qs[_0xea3e('0x2e')](_[_0xea3e('0x39')](_0x4fc935['query'],_0x405a1f[_0xea3e('0x2e')]));_0x45def8[_0xea3e('0x38')][_0xea3e('0x4c')]=_0x2d5b89['id'];if(_0x4fc935['query'][_0xea3e('0x3a')]){_0x45def8[_0xea3e('0x38')]=_[_0xea3e('0x3b')](_0x45def8[_0xea3e('0x38')],{'$or':_[_0xea3e('0x27')](_0x45def8[_0xea3e('0x30')],function(_0x50bd86){var _0x576e1e={};_0x576e1e[_0x50bd86]={'$like':'%'+_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x3a')]+'%'};return _0x576e1e;})});}_0x45def8=_[_0xea3e('0x3b')]({},_0x45def8,_0x4fc935[_0xea3e('0x3d')]);return db[_0xea3e('0x4b')]['count']({'where':_0x45def8['where']})[_0xea3e('0x20')](function(_0x111e30){_0x35d32a[_0xea3e('0x1b')]=_0x111e30;if(_0x4fc935[_0xea3e('0x2d')][_0xea3e('0x3f')]){_0x45def8[_0xea3e('0x4d')]=[{'all':!![]}];}return db[_0xea3e('0x4b')]['findAll'](_0x45def8);})[_0xea3e('0x20')](function(_0x26aa33){_0x35d32a[_0xea3e('0x41')]=_0x26aa33;return _0x35d32a;});}})[_0xea3e('0x20')](respondWithFilteredResult(_0x3e358a,_0x45def8))[_0xea3e('0x42')](handleError(_0x3e358a,null));};
\ No newline at end of file
index 6f6ca8d..8361a3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1db9=['JscriptySessionReport','report_jscripty_sessions','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','exports','define'];(function(_0x288267,_0x12e1e3){var _0x5b245c=function(_0x4716ab){while(--_0x4716ab){_0x288267['push'](_0x288267['shift']());}};_0x5b245c(++_0x12e1e3);}(_0x1db9,0x176));var _0x91db=function(_0x579858,_0x5c336b){_0x579858=_0x579858-0x0;var _0x467b5b=_0x1db9[_0x579858];return _0x467b5b;};'use strict';var _=require(_0x91db('0x0'));var util=require(_0x91db('0x1'));var logger=require(_0x91db('0x2'))(_0x91db('0x3'));var moment=require(_0x91db('0x4'));var BPromise=require(_0x91db('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x91db('0x6'));var rimraf=require(_0x91db('0x7'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x91db('0x8')]=function(_0x4b3f5c,_0x5e69d9){return _0x4b3f5c[_0x91db('0x9')](_0x91db('0xa'),attributes,{'tableName':_0x91db('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3c6c=['rimraf','../../config/environment','exports','lodash','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x53afe9,_0x2c9f40){var _0x396396=function(_0x1f574d){while(--_0x1f574d){_0x53afe9['push'](_0x53afe9['shift']());}};_0x396396(++_0x2c9f40);}(_0x3c6c,0x7b));var _0xc3c6=function(_0x558cc0,_0x3fd80c){_0x558cc0=_0x558cc0-0x0;var _0x5c6b94=_0x3c6c[_0x558cc0];return _0x5c6b94;};'use strict';var _=require(_0xc3c6('0x0'));var util=require('util');var logger=require(_0xc3c6('0x1'))(_0xc3c6('0x2'));var moment=require(_0xc3c6('0x3'));var BPromise=require(_0xc3c6('0x4'));var rp=require(_0xc3c6('0x5'));var fs=require('fs');var path=require(_0xc3c6('0x6'));var rimraf=require(_0xc3c6('0x7'));var config=require(_0xc3c6('0x8'));var attributes=require('./jscriptySessionReport.attributes');module[_0xc3c6('0x9')]=function(_0x4a2ca1,_0xe7731e){return _0x4a2ca1['define']('JscriptySessionReport',attributes,{'tableName':'report_jscripty_sessions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8025f6b..9cbad97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacf4=['message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','JscriptySessionReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xacf4,0xe7));var _0x4acf=function(_0x5ddf27,_0x5d6857){_0x5ddf27=_0x5ddf27-0x0;var _0xd8a2b8=_0xacf4[_0x5ddf27];return _0xd8a2b8;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x4acf('0x0'));var BPromise=require(_0x4acf('0x1'));var rs=require(_0x4acf('0x2'));var fs=require('fs');var Redis=require(_0x4acf('0x3'));var db=require(_0x4acf('0x4'))['db'];var utils=require(_0x4acf('0x5'));var logger=require(_0x4acf('0x6'))('rpc');var config=require(_0x4acf('0x7'));var jayson=require(_0x4acf('0x8'));var client=jayson['client'][_0x4acf('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ba08a,_0x649ad2,_0x45a5a4){return new BPromise(function(_0x25d345,_0x50f5f4){return client['request'](_0x2ba08a,_0x45a5a4)[_0x4acf('0xa')](function(_0x59f559){logger[_0x4acf('0xb')](_0x4acf('0xc'),_0x649ad2,_0x4acf('0xd'));logger['debug'](_0x4acf('0xe'),_0x649ad2,_0x4acf('0xd'),JSON['stringify'](_0x59f559));if(_0x59f559['error']){if(_0x59f559[_0x4acf('0xf')]['code']===0x1f4){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x50f5f4(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}logger[_0x4acf('0xf')](_0x4acf('0xc'),_0x649ad2,_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);return _0x25d345(_0x59f559[_0x4acf('0xf')][_0x4acf('0x10')]);}else{logger['info'](_0x4acf('0xc'),_0x649ad2,'request\x20sent');_0x25d345(_0x59f559[_0x4acf('0x11')][_0x4acf('0x10')]);}})[_0x4acf('0x12')](function(_0x5d934a){logger['error'](_0x4acf('0xc'),_0x649ad2,_0x5d934a);_0x50f5f4(_0x5d934a);});});}
\ No newline at end of file
+var _0x627e=['request','info','JscriptySessionReport,\x20%s,\x20%s','JscriptySessionReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','client','http'];(function(_0x4e67b9,_0x43cec7){var _0xa500ae=function(_0x2ef395){while(--_0x2ef395){_0x4e67b9['push'](_0x4e67b9['shift']());}};_0xa500ae(++_0x43cec7);}(_0x627e,0x14a));var _0xe627=function(_0x31a5ff,_0x2789da){_0x31a5ff=_0x31a5ff-0x0;var _0x7584bb=_0x627e[_0x31a5ff];return _0x7584bb;};'use strict';var _=require(_0xe627('0x0'));var util=require(_0xe627('0x1'));var moment=require(_0xe627('0x2'));var BPromise=require(_0xe627('0x3'));var rs=require(_0xe627('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe627('0x5'))['db'];var utils=require(_0xe627('0x6'));var logger=require(_0xe627('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe627('0x8')][_0xe627('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45e49a,_0x2d4f63,_0xd5016e){return new BPromise(function(_0xe065b,_0x4bae52){return client[_0xe627('0xa')](_0x45e49a,_0xd5016e)['then'](function(_0x56549e){logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,'request\x20sent');logger['debug'](_0xe627('0xd'),_0x2d4f63,_0xe627('0xe'),JSON[_0xe627('0xf')](_0x56549e));if(_0x56549e[_0xe627('0x10')]){if(_0x56549e[_0xe627('0x10')][_0xe627('0x11')]===0x1f4){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x56549e[_0xe627('0x10')]['message']);return _0x4bae52(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}logger[_0xe627('0x10')]('JscriptySessionReport,\x20%s,\x20%s',_0x2d4f63,_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);return _0xe065b(_0x56549e[_0xe627('0x10')][_0xe627('0x12')]);}else{logger[_0xe627('0xb')](_0xe627('0xc'),_0x2d4f63,_0xe627('0xe'));_0xe065b(_0x56549e['result'][_0xe627('0x12')]);}})[_0xe627('0x13')](function(_0x16c2d7){logger[_0xe627('0x10')](_0xe627('0xc'),_0x2d4f63,_0x16c2d7);_0x4bae52(_0x16c2d7);});});}
\ No newline at end of file
index 13ee578..f0acc54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0203=['Router','fs-extra','../../components/auth/service','../../config/environment','./license.controller','index','isAuthenticated','update','get','exports','multer','path','connect-timeout','express'];(function(_0x41e8b6,_0x306cc2){var _0x13f112=function(_0x484f85){while(--_0x484f85){_0x41e8b6['push'](_0x41e8b6['shift']());}};_0x13f112(++_0x306cc2);}(_0x0203,0x7a));var _0x3020=function(_0xbaec96,_0x765a6a){_0xbaec96=_0xbaec96-0x0;var _0x3ceff2=_0x0203[_0xbaec96];return _0x3ceff2;};'use strict';var multer=require(_0x3020('0x0'));var util=require('util');var path=require(_0x3020('0x1'));var timeout=require(_0x3020('0x2'));var express=require(_0x3020('0x3'));var router=express[_0x3020('0x4')]();var fs_extra=require(_0x3020('0x5'));var auth=require(_0x3020('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3020('0x7'));var controller=require(_0x3020('0x8'));router['get']('/',controller[_0x3020('0x9')]);router['put']('/:id',auth[_0x3020('0xa')](),controller[_0x3020('0xb')]);router[_0x3020('0xc')]('/download_log_file',auth[_0x3020('0xa')](),controller['downloadLogFile']);module[_0x3020('0xd')]=router;
\ No newline at end of file
+var _0xb5f0=['isAuthenticated','exports','multer','util','path','express','Router','../../config/environment','./license.controller','put','update','get'];(function(_0x4d2697,_0x5d956b){var _0x578800=function(_0x59f0f8){while(--_0x59f0f8){_0x4d2697['push'](_0x4d2697['shift']());}};_0x578800(++_0x5d956b);}(_0xb5f0,0x18e));var _0x0b5f=function(_0xff01f6,_0x14b5b9){_0xff01f6=_0xff01f6-0x0;var _0x65e73f=_0xb5f0[_0xff01f6];return _0x65e73f;};'use strict';var multer=require(_0x0b5f('0x0'));var util=require(_0x0b5f('0x1'));var path=require(_0x0b5f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0b5f('0x3'));var router=express[_0x0b5f('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x0b5f('0x5'));var controller=require(_0x0b5f('0x6'));router['get']('/',controller['index']);router[_0x0b5f('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x0b5f('0x8')]);router[_0x0b5f('0x9')]('/download_log_file',auth[_0x0b5f('0xa')](),controller['downloadLogFile']);module[_0x0b5f('0xb')]=router;
\ No newline at end of file
index 34c1558..2563f95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa943=['INTEGER','sequelize','TEXT','STRING'];(function(_0x202b9f,_0x1d9dad){var _0x55faf1=function(_0x45680e){while(--_0x45680e){_0x202b9f['push'](_0x202b9f['shift']());}};_0x55faf1(++_0x1d9dad);}(_0xa943,0x179));var _0x3a94=function(_0x47c18d,_0x5094e3){_0x47c18d=_0x47c18d-0x0;var _0x55ac6c=_0xa943[_0x47c18d];return _0x55ac6c;};'use strict';var Sequelize=require(_0x3a94('0x0'));module['exports']={'license':{'type':Sequelize[_0x3a94('0x1')]},'data1':{'type':Sequelize[_0x3a94('0x2')]},'data2':{'type':Sequelize[_0x3a94('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x3a94('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3d2d=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x191c33,_0x137eb7){var _0x15b58a=function(_0x28f03b){while(--_0x28f03b){_0x191c33['push'](_0x191c33['shift']());}};_0x15b58a(++_0x137eb7);}(_0x3d2d,0xa7));var _0xd3d2=function(_0x47bc5e,_0x6fc500){_0x47bc5e=_0x47bc5e-0x0;var _0x323a59=_0x3d2d[_0x47bc5e];return _0x323a59;};'use strict';var Sequelize=require(_0xd3d2('0x0'));module[_0xd3d2('0x1')]={'license':{'type':Sequelize[_0xd3d2('0x2')]},'data1':{'type':Sequelize['STRING']},'data2':{'type':Sequelize[_0xd3d2('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xd3d2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
index f687b01..f7cb3d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefb5=['join','/var','log','xcally','Content-disposition','Content-Type','text/plain','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','keys','License','rawAttributes','query','filters','intersection','fields','attributes','length','model','catch','body','find','params','get','checkLicense','key'];(function(_0x119d5a,_0x19b457){var _0x15bff4=function(_0x1b7c78){while(--_0x1b7c78){_0x119d5a['push'](_0x119d5a['shift']());}};_0x15bff4(++_0x19b457);}(_0xefb5,0x91));var _0x5efb=function(_0x50f6e5,_0x151ccb){_0x50f6e5=_0x50f6e5-0x0;var _0x5988c5=_0xefb5[_0x50f6e5];return _0x5988c5;};'use strict';var emlformat=require(_0x5efb('0x0'));var rimraf=require(_0x5efb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5efb('0x2'));var rp=require('request-promise');var moment=require(_0x5efb('0x3'));var BPromise=require(_0x5efb('0x4'));var Mustache=require(_0x5efb('0x5'));var util=require('util');var path=require(_0x5efb('0x6'));var sox=require(_0x5efb('0x7'));var csv=require(_0x5efb('0x8'));var ejs=require(_0x5efb('0x9'));var fs=require('fs');var fs_extra=require(_0x5efb('0xa'));var _=require(_0x5efb('0xb'));var squel=require(_0x5efb('0xc'));var crypto=require(_0x5efb('0xd'));var jsforce=require(_0x5efb('0xe'));var deskjs=require(_0x5efb('0xf'));var toCsv=require(_0x5efb('0x8'));var querystring=require(_0x5efb('0x10'));var Papa=require(_0x5efb('0x11'));var Redis=require(_0x5efb('0x12'));var authService=require(_0x5efb('0x13'));var qs=require(_0x5efb('0x14'));var as=require(_0x5efb('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x5efb('0x16'))('api');var utils=require(_0x5efb('0x17'));var config=require(_0x5efb('0x18'));var licenseUtil=require(_0x5efb('0x19'));var db=require(_0x5efb('0x1a'))['db'];function respondWithStatusCode(_0x59d701,_0x2efc8a){_0x2efc8a=_0x2efc8a||0xcc;return function(_0x5572f3){if(_0x5572f3){return _0x59d701[_0x5efb('0x1b')](_0x2efc8a);}return _0x59d701['status'](_0x2efc8a)[_0x5efb('0x1c')]();};}function respondWithResult(_0x3b9331,_0x4ca65a){_0x4ca65a=_0x4ca65a||0xc8;return function(_0x30107b){if(_0x30107b){return _0x3b9331[_0x5efb('0x1d')](_0x4ca65a)[_0x5efb('0x1e')](_0x30107b);}};}function respondWithFilteredResult(_0xa14bed,_0x6229a5){return function(_0x916cfd){if(_0x916cfd){var _0x5d524b=typeof _0x6229a5['offset']===_0x5efb('0x1f')&&typeof _0x6229a5[_0x5efb('0x20')]===_0x5efb('0x1f');var _0xd93f6=_0x916cfd[_0x5efb('0x21')];var _0x2f9ac3=_0x5d524b?0x0:_0x6229a5['offset'];var _0x54c87c=_0x5d524b?_0x916cfd[_0x5efb('0x21')]:_0x6229a5['offset']+_0x6229a5[_0x5efb('0x20')];var _0x4134f4;if(_0x54c87c>=_0xd93f6){_0x54c87c=_0xd93f6;_0x4134f4=0xc8;}else{_0x4134f4=0xce;}_0xa14bed[_0x5efb('0x1d')](_0x4134f4);return _0xa14bed[_0x5efb('0x22')](_0x5efb('0x23'),_0x2f9ac3+'-'+_0x54c87c+'/'+_0xd93f6)[_0x5efb('0x1e')](_0x916cfd);}return null;};}function patchUpdates(_0x462e33){return function(_0x1715ff){try{jsonpatch[_0x5efb('0x24')](_0x1715ff,_0x462e33,!![]);}catch(_0x3027ce){return BPromise[_0x5efb('0x25')](_0x3027ce);}return _0x1715ff[_0x5efb('0x26')]();};}function saveUpdates(_0x1e257a,_0x156e6d){return function(_0x28ee35){if(_0x28ee35){return _0x28ee35[_0x5efb('0x27')](_0x1e257a)[_0x5efb('0x28')](function(_0x403a90){return _0x403a90;});}return null;};}function removeEntity(_0x2ee0a6,_0x56c28d){return function(_0x1ecda5){if(_0x1ecda5){return _0x1ecda5[_0x5efb('0x29')]()[_0x5efb('0x28')](function(){_0x2ee0a6['status'](0xcc)[_0x5efb('0x1c')]();});}};}function handleEntityNotFound(_0x3e5567,_0x16f178){return function(_0x309438){if(!_0x309438){_0x3e5567['sendStatus'](0x194);}return _0x309438;};}function handleError(_0x299589,_0xb65f64){_0xb65f64=_0xb65f64||0x1f4;return function(_0x36ac35){logger[_0x5efb('0x2a')](_0x36ac35[_0x5efb('0x2b')]);if(_0x36ac35['name']){delete _0x36ac35['name'];}_0x299589[_0x5efb('0x1d')](_0xb65f64)[_0x5efb('0x2c')](_0x36ac35);};}var utilLicense=require(_0x5efb('0x19'));exports['index']=function(_0x3ce059,_0x2beb22){var _0x5ee2b6={'raw':!![],'where':{'id':0x1}},_0x84fa32={};_0x84fa32['model']=_[_0x5efb('0x2d')](db[_0x5efb('0x2e')][_0x5efb('0x2f')]);_0x84fa32[_0x5efb('0x30')]=_[_0x5efb('0x2d')](_0x3ce059[_0x5efb('0x30')]);_0x84fa32[_0x5efb('0x31')]=_[_0x5efb('0x32')](_0x84fa32['model'],_0x84fa32['query']);_0x5ee2b6['attributes']=_[_0x5efb('0x32')](_0x84fa32['model'],qs[_0x5efb('0x33')](_0x3ce059[_0x5efb('0x30')][_0x5efb('0x33')]));_0x5ee2b6[_0x5efb('0x34')]=_0x5ee2b6[_0x5efb('0x34')][_0x5efb('0x35')]?_0x5ee2b6[_0x5efb('0x34')]:_0x84fa32[_0x5efb('0x36')];_0x5ee2b6=_['merge']({},_0x5ee2b6,_0x3ce059['options']);return utilLicense['getLicense'](_0x5ee2b6)[_0x5efb('0x28')](respondWithResult(_0x2beb22,null))[_0x5efb('0x37')](handleError(_0x2beb22,null));};exports['update']=function(_0x4bc33f,_0x5e2cd6){if(_0x4bc33f[_0x5efb('0x38')]['id']){delete _0x4bc33f[_0x5efb('0x38')]['id'];}return db[_0x5efb('0x2e')][_0x5efb('0x39')]({'where':{'id':_0x4bc33f[_0x5efb('0x3a')]['id']}})['then'](handleEntityNotFound(_0x5e2cd6,null))[_0x5efb('0x28')](function(_0x159415){var _0x1de4fc=_0x159415[_0x5efb('0x3b')]({'plain':!![]});return utilLicense[_0x5efb('0x3c')](_0x1de4fc,_0x4bc33f['body'][_0x5efb('0x3d')]);})[_0x5efb('0x28')](function(_0x1b5082){if(!_0x1b5082['demo']){return saveUpdates(_0x4bc33f[_0x5efb('0x38')],null);}return _0x1b5082;})['then'](respondWithResult(_0x5e2cd6,null))[_0x5efb('0x37')](handleError(_0x5e2cd6,null));};exports['downloadLogFile']=function(_0x477b96,_0x19a895){var _0x24c772='license-info.log';var _0x3af63b=path[_0x5efb('0x3e')](_0x5efb('0x3f'),_0x5efb('0x40'),_0x5efb('0x41'),_0x24c772);_0x19a895['setHeader'](_0x5efb('0x42'),'attachment;\x20filename='+_0x24c772);_0x19a895[_0x5efb('0x22')](_0x5efb('0x43'),_0x5efb('0x44'));_0x19a895['download'](_0x3af63b);};
\ No newline at end of file
+var _0x5202=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','end','status','json','undefined','limit','offset','set','apply','reject','save','update','then','name','../../config/license/util','index','keys','rawAttributes','query','filters','intersection','model','fields','attributes','length','options','catch','body','License','find','params','get','checkLicense','key','downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','attachment;\x20filename=','Content-Type','download','eml-format','rimraf','bluebird','mustache','sox','to-csv','ejs','lodash','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x4bb22c,_0x37f185){var _0x2d6313=function(_0x4c8c5b){while(--_0x4c8c5b){_0x4bb22c['push'](_0x4bb22c['shift']());}};_0x2d6313(++_0x37f185);}(_0x5202,0xe8));var _0x2520=function(_0x5cd55f,_0x1ec275){_0x5cd55f=_0x5cd55f-0x0;var _0x55d04d=_0x5202[_0x5cd55f];return _0x55d04d;};'use strict';var emlformat=require(_0x2520('0x0'));var rimraf=require(_0x2520('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x2520('0x2'));var Mustache=require(_0x2520('0x3'));var util=require('util');var path=require('path');var sox=require(_0x2520('0x4'));var csv=require(_0x2520('0x5'));var ejs=require(_0x2520('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2520('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x2520('0x5'));var querystring=require('querystring');var Papa=require(_0x2520('0x8'));var Redis=require(_0x2520('0x9'));var authService=require(_0x2520('0xa'));var qs=require(_0x2520('0xb'));var as=require(_0x2520('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2520('0xd'))(_0x2520('0xe'));var utils=require(_0x2520('0xf'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2251e5,_0x548e14){_0x548e14=_0x548e14||0xcc;return function(_0x319a91){if(_0x319a91){return _0x2251e5[_0x2520('0x10')](_0x548e14);}return _0x2251e5['status'](_0x548e14)[_0x2520('0x11')]();};}function respondWithResult(_0x4bfeb3,_0x543d35){_0x543d35=_0x543d35||0xc8;return function(_0x370aef){if(_0x370aef){return _0x4bfeb3[_0x2520('0x12')](_0x543d35)[_0x2520('0x13')](_0x370aef);}};}function respondWithFilteredResult(_0x428c46,_0x8e6c69){return function(_0x1892fb){if(_0x1892fb){var _0x4ae3b8=typeof _0x8e6c69['offset']===_0x2520('0x14')&&typeof _0x8e6c69[_0x2520('0x15')]===_0x2520('0x14');var _0x4f074b=_0x1892fb['count'];var _0x5c00d7=_0x4ae3b8?0x0:_0x8e6c69['offset'];var _0x1af09d=_0x4ae3b8?_0x1892fb['count']:_0x8e6c69[_0x2520('0x16')]+_0x8e6c69[_0x2520('0x15')];var _0x16ad1d;if(_0x1af09d>=_0x4f074b){_0x1af09d=_0x4f074b;_0x16ad1d=0xc8;}else{_0x16ad1d=0xce;}_0x428c46[_0x2520('0x12')](_0x16ad1d);return _0x428c46[_0x2520('0x17')]('Content-Range',_0x5c00d7+'-'+_0x1af09d+'/'+_0x4f074b)['json'](_0x1892fb);}return null;};}function patchUpdates(_0x114f24){return function(_0xec1f7b){try{jsonpatch[_0x2520('0x18')](_0xec1f7b,_0x114f24,!![]);}catch(_0x433ddb){return BPromise[_0x2520('0x19')](_0x433ddb);}return _0xec1f7b[_0x2520('0x1a')]();};}function saveUpdates(_0x4a5ffe,_0x2ddf8c){return function(_0x51c895){if(_0x51c895){return _0x51c895[_0x2520('0x1b')](_0x4a5ffe)[_0x2520('0x1c')](function(_0x6a9847){return _0x6a9847;});}return null;};}function removeEntity(_0x244b89,_0x50c916){return function(_0x39bccb){if(_0x39bccb){return _0x39bccb['destroy']()[_0x2520('0x1c')](function(){_0x244b89[_0x2520('0x12')](0xcc)[_0x2520('0x11')]();});}};}function handleEntityNotFound(_0x15e5c3,_0x4c7859){return function(_0x5d6846){if(!_0x5d6846){_0x15e5c3[_0x2520('0x10')](0x194);}return _0x5d6846;};}function handleError(_0x1cb02c,_0x52b400){_0x52b400=_0x52b400||0x1f4;return function(_0x5999cf){logger['error'](_0x5999cf['stack']);if(_0x5999cf[_0x2520('0x1d')]){delete _0x5999cf[_0x2520('0x1d')];}_0x1cb02c[_0x2520('0x12')](_0x52b400)['send'](_0x5999cf);};}var utilLicense=require(_0x2520('0x1e'));exports[_0x2520('0x1f')]=function(_0x5cef32,_0x514e29){var _0xd874fe={'raw':!![],'where':{'id':0x1}},_0x4276c5={};_0x4276c5['model']=_[_0x2520('0x20')](db['License'][_0x2520('0x21')]);_0x4276c5[_0x2520('0x22')]=_[_0x2520('0x20')](_0x5cef32[_0x2520('0x22')]);_0x4276c5[_0x2520('0x23')]=_[_0x2520('0x24')](_0x4276c5[_0x2520('0x25')],_0x4276c5[_0x2520('0x22')]);_0xd874fe['attributes']=_[_0x2520('0x24')](_0x4276c5[_0x2520('0x25')],qs['fields'](_0x5cef32['query'][_0x2520('0x26')]));_0xd874fe[_0x2520('0x27')]=_0xd874fe[_0x2520('0x27')][_0x2520('0x28')]?_0xd874fe[_0x2520('0x27')]:_0x4276c5[_0x2520('0x25')];_0xd874fe=_['merge']({},_0xd874fe,_0x5cef32[_0x2520('0x29')]);return utilLicense['getLicense'](_0xd874fe)[_0x2520('0x1c')](respondWithResult(_0x514e29,null))[_0x2520('0x2a')](handleError(_0x514e29,null));};exports['update']=function(_0x49fc3f,_0x32e121){if(_0x49fc3f[_0x2520('0x2b')]['id']){delete _0x49fc3f[_0x2520('0x2b')]['id'];}return db[_0x2520('0x2c')][_0x2520('0x2d')]({'where':{'id':_0x49fc3f[_0x2520('0x2e')]['id']}})['then'](handleEntityNotFound(_0x32e121,null))[_0x2520('0x1c')](function(_0x12c17e){var _0x4b4608=_0x12c17e[_0x2520('0x2f')]({'plain':!![]});return utilLicense[_0x2520('0x30')](_0x4b4608,_0x49fc3f[_0x2520('0x2b')][_0x2520('0x31')]);})[_0x2520('0x1c')](function(_0x11e4cb){if(!_0x11e4cb['demo']){return saveUpdates(_0x49fc3f[_0x2520('0x2b')],null);}return _0x11e4cb;})[_0x2520('0x1c')](respondWithResult(_0x32e121,null))[_0x2520('0x2a')](handleError(_0x32e121,null));};exports[_0x2520('0x32')]=function(_0x4b22bb,_0x1e2d87){var _0x3c2fd3=_0x2520('0x33');var _0x127a30=path[_0x2520('0x34')](_0x2520('0x35'),_0x2520('0x36'),_0x2520('0x37'),_0x3c2fd3);_0x1e2d87[_0x2520('0x38')](_0x2520('0x39'),_0x2520('0x3a')+_0x3c2fd3);_0x1e2d87[_0x2520('0x17')](_0x2520('0x3b'),'text/plain');_0x1e2d87[_0x2520('0x3c')](_0x127a30);};
\ No newline at end of file
index f01528b..74fe936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342e=['license','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','License'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x342e,0x1d5));var _0xe342=function(_0x3826ad,_0x49a30d){_0x3826ad=_0x3826ad-0x0;var _0x17b900=_0x342e[_0x3826ad];return _0x17b900;};'use strict';var _=require(_0xe342('0x0'));var util=require(_0xe342('0x1'));var logger=require(_0xe342('0x2'))('api');var moment=require(_0xe342('0x3'));var BPromise=require(_0xe342('0x4'));var rp=require(_0xe342('0x5'));var fs=require('fs');var path=require(_0xe342('0x6'));var rimraf=require(_0xe342('0x7'));var config=require(_0xe342('0x8'));var attributes=require('./license.attributes');module['exports']=function(_0x1ea0cb,_0x4d5002){return _0x1ea0cb[_0xe342('0x9')](_0xe342('0xa'),attributes,{'tableName':_0xe342('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x516f=['bluebird','request-promise','../../config/environment','./license.attributes','define','License','lodash','util','../../config/logger','api','moment'];(function(_0x1402ff,_0x59ea38){var _0x5ccccf=function(_0x480be4){while(--_0x480be4){_0x1402ff['push'](_0x1402ff['shift']());}};_0x5ccccf(++_0x59ea38);}(_0x516f,0x7f));var _0xf516=function(_0x4f7fd5,_0x320e0b){_0x4f7fd5=_0x4f7fd5-0x0;var _0x3f6112=_0x516f[_0x4f7fd5];return _0x3f6112;};'use strict';var _=require(_0xf516('0x0'));var util=require(_0xf516('0x1'));var logger=require(_0xf516('0x2'))(_0xf516('0x3'));var moment=require(_0xf516('0x4'));var BPromise=require(_0xf516('0x5'));var rp=require(_0xf516('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xf516('0x7'));var attributes=require(_0xf516('0x8'));module['exports']=function(_0x38b7f3,_0x99d86f){return _0x38b7f3[_0xf516('0x9')](_0xf516('0xa'),attributes,{'tableName':'license','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4bf5585..78b1d01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb93=['debug','License,\x20%s,\x20%s,\x20%s','error','message','result','catch','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent'];(function(_0x4277b0,_0x2b2cf6){var _0x57c93f=function(_0xadf08b){while(--_0xadf08b){_0x4277b0['push'](_0x4277b0['shift']());}};_0x57c93f(++_0x2b2cf6);}(_0xfb93,0x92));var _0x3fb9=function(_0x30626b,_0x41b7ef){_0x30626b=_0x30626b-0x0;var _0x254440=_0xfb93[_0x30626b];return _0x254440;};'use strict';var _=require('lodash');var util=require(_0x3fb9('0x0'));var moment=require('moment');var BPromise=require(_0x3fb9('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3fb9('0x2'));var db=require(_0x3fb9('0x3'))['db'];var utils=require(_0x3fb9('0x4'));var logger=require('../../config/logger')(_0x3fb9('0x5'));var config=require('../../config/environment');var jayson=require(_0x3fb9('0x6'));var client=jayson[_0x3fb9('0x7')][_0x3fb9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1f1d17,_0xe39245,_0x210836){return new BPromise(function(_0xd3771e,_0x5e145c){return client[_0x3fb9('0x9')](_0x1f1d17,_0x210836)[_0x3fb9('0xa')](function(_0x3bdab9){logger[_0x3fb9('0xb')](_0x3fb9('0xc'),_0xe39245,_0x3fb9('0xd'));logger[_0x3fb9('0xe')](_0x3fb9('0xf'),_0xe39245,'request\x20sent',JSON['stringify'](_0x3bdab9));if(_0x3bdab9[_0x3fb9('0x10')]){if(_0x3bdab9['error']['code']===0x1f4){logger[_0x3fb9('0x10')](_0x3fb9('0xc'),_0xe39245,_0x3bdab9[_0x3fb9('0x10')][_0x3fb9('0x11')]);return _0x5e145c(_0x3bdab9[_0x3fb9('0x10')]['message']);}logger[_0x3fb9('0x10')](_0x3fb9('0xc'),_0xe39245,_0x3bdab9[_0x3fb9('0x10')][_0x3fb9('0x11')]);return _0xd3771e(_0x3bdab9[_0x3fb9('0x10')]['message']);}else{logger[_0x3fb9('0xb')](_0x3fb9('0xc'),_0xe39245,'request\x20sent');_0xd3771e(_0x3bdab9[_0x3fb9('0x12')][_0x3fb9('0x11')]);}})[_0x3fb9('0x13')](function(_0x5013f0){logger[_0x3fb9('0x10')](_0x3fb9('0xc'),_0xe39245,_0x5013f0);_0x5e145c(_0x5013f0);});});}
\ No newline at end of file
+var _0x1274=['lodash','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','License,\x20%s,\x20%s','request\x20sent','debug','License,\x20%s,\x20%s,\x20%s','error','message','result','catch'];(function(_0x33ad91,_0x524cba){var _0xce88cb=function(_0x3f8fb1){while(--_0x3f8fb1){_0x33ad91['push'](_0x33ad91['shift']());}};_0xce88cb(++_0x524cba);}(_0x1274,0x1ce));var _0x4127=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1274[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x4127('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4127('0x1'));var rs=require(_0x4127('0x2'));var fs=require('fs');var Redis=require(_0x4127('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4127('0x4'));var logger=require('../../config/logger')(_0x4127('0x5'));var config=require(_0x4127('0x6'));var jayson=require(_0x4127('0x7'));var client=jayson[_0x4127('0x8')][_0x4127('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x478b89,_0x4de5a0,_0x7a8e54){return new BPromise(function(_0x3c6ae5,_0x28f055){return client[_0x4127('0xa')](_0x478b89,_0x7a8e54)[_0x4127('0xb')](function(_0x592e98){logger[_0x4127('0xc')](_0x4127('0xd'),_0x4de5a0,_0x4127('0xe'));logger[_0x4127('0xf')](_0x4127('0x10'),_0x4de5a0,_0x4127('0xe'),JSON['stringify'](_0x592e98));if(_0x592e98['error']){if(_0x592e98[_0x4127('0x11')]['code']===0x1f4){logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x592e98['error']['message']);return _0x28f055(_0x592e98['error'][_0x4127('0x12')]);}logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x592e98['error'][_0x4127('0x12')]);return _0x3c6ae5(_0x592e98[_0x4127('0x11')][_0x4127('0x12')]);}else{logger[_0x4127('0xc')](_0x4127('0xd'),_0x4de5a0,_0x4127('0xe'));_0x3c6ae5(_0x592e98[_0x4127('0x13')][_0x4127('0x12')]);}})[_0x4127('0x14')](function(_0x210563){logger[_0x4127('0x11')](_0x4127('0xd'),_0x4de5a0,_0x210563);_0x28f055(_0x210563);});});}
\ No newline at end of file
index 82465ac..59fa9f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf726=['/:id/out_servers','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','/:id/users','getAgents','post','/:id/canned_answers','addImap','addSmtp','addApplications','/:id/send','send','addAgents','update','delete','removeDispositions','removeSmtp','/:id','destroy','removeAgents','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','isAuthenticated','index','/:id/dispositions','/:id/in_servers','getImap'];(function(_0x9bcc0b,_0x120f6c){var _0x195399=function(_0x5be8b9){while(--_0x5be8b9){_0x9bcc0b['push'](_0x9bcc0b['shift']());}};_0x195399(++_0x120f6c);}(_0xf726,0x18b));var _0x6f72=function(_0x18295a,_0x234b39){_0x18295a=_0x18295a-0x0;var _0x3b30de=_0xf726[_0x18295a];return _0x3b30de;};'use strict';var multer=require(_0x6f72('0x0'));var util=require(_0x6f72('0x1'));var path=require('path');var timeout=require(_0x6f72('0x2'));var express=require(_0x6f72('0x3'));var router=express[_0x6f72('0x4')]();var fs_extra=require(_0x6f72('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x6f72('0x6'));var config=require(_0x6f72('0x7'));var controller=require(_0x6f72('0x8'));router[_0x6f72('0x9')]('/',auth[_0x6f72('0xa')](),controller[_0x6f72('0xb')]);router[_0x6f72('0x9')]('/describe',auth[_0x6f72('0xa')](),controller['describe']);router[_0x6f72('0x9')]('/:id',auth[_0x6f72('0xa')](),controller['show']);router[_0x6f72('0x9')](_0x6f72('0xc'),auth[_0x6f72('0xa')](),controller['getDispositions']);router[_0x6f72('0x9')]('/:id/canned_answers',auth[_0x6f72('0xa')](),controller['getAnswers']);router[_0x6f72('0x9')](_0x6f72('0xd'),auth[_0x6f72('0xa')](),controller[_0x6f72('0xe')]);router['get'](_0x6f72('0xf'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x10')]);router[_0x6f72('0x9')](_0x6f72('0x11'),auth['isAuthenticated'](),controller[_0x6f72('0x12')]);router[_0x6f72('0x9')](_0x6f72('0x13'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x14')]);router[_0x6f72('0x9')](_0x6f72('0x15'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x16')]);router[_0x6f72('0x9')](_0x6f72('0x17'),auth[_0x6f72('0xa')](),controller['verifySmtp']);router[_0x6f72('0x9')](_0x6f72('0x18'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x19')]);router[_0x6f72('0x1a')]('/:id/dispositions',auth[_0x6f72('0xa')](),controller['addDisposition']);router[_0x6f72('0x1a')](_0x6f72('0x1b'),auth['isAuthenticated'](),controller['addAnswer']);router['post']('/',auth[_0x6f72('0xa')](),controller['create']);router[_0x6f72('0x1a')](_0x6f72('0xd'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x1c')]);router[_0x6f72('0x1a')](_0x6f72('0xf'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x1d')]);router['post'](_0x6f72('0x11'),auth[_0x6f72('0xa')](),controller['addInteraction']);router[_0x6f72('0x1a')](_0x6f72('0x13'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x1e')]);router[_0x6f72('0x1a')](_0x6f72('0x1f'),auth['isAuthenticated'](),controller[_0x6f72('0x20')]);router['post'](_0x6f72('0x18'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x21')]);router['put']('/:id',auth[_0x6f72('0xa')](),controller[_0x6f72('0x22')]);router[_0x6f72('0x23')](_0x6f72('0xc'),auth['isAuthenticated'](),controller[_0x6f72('0x24')]);router['delete'](_0x6f72('0x1b'),auth[_0x6f72('0xa')](),controller['removeAnswers']);router['delete']('/:id/in_servers',auth[_0x6f72('0xa')](),controller['removeImap']);router[_0x6f72('0x23')](_0x6f72('0xf'),auth['isAuthenticated'](),controller[_0x6f72('0x25')]);router['delete'](_0x6f72('0x26'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x27')]);router[_0x6f72('0x23')](_0x6f72('0x18'),auth[_0x6f72('0xa')](),controller[_0x6f72('0x28')]);module['exports']=router;
\ No newline at end of file
+var _0x4149=['getAgents','post','create','/:id/in_servers','addImap','/:id/out_servers','addSmtp','addInteraction','addApplications','send','/:id/users','addAgents','update','removeDispositions','delete','removeAnswers','removeImap','removeSmtp','destroy','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','getSmtp','/:id/interactions','getInteractions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify'];(function(_0x4b3d13,_0x1993d5){var _0xf64dd8=function(_0x2304ed){while(--_0x2304ed){_0x4b3d13['push'](_0x4b3d13['shift']());}};_0xf64dd8(++_0x1993d5);}(_0x4149,0x141));var _0x9414=function(_0x4605fe,_0x43db3f){_0x4605fe=_0x4605fe-0x0;var _0x20dfd7=_0x4149[_0x4605fe];return _0x20dfd7;};'use strict';var multer=require(_0x9414('0x0'));var util=require('util');var path=require(_0x9414('0x1'));var timeout=require(_0x9414('0x2'));var express=require(_0x9414('0x3'));var router=express[_0x9414('0x4')]();var fs_extra=require(_0x9414('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x9414('0x6'));var config=require(_0x9414('0x7'));var controller=require(_0x9414('0x8'));router[_0x9414('0x9')]('/',auth['isAuthenticated'](),controller[_0x9414('0xa')]);router[_0x9414('0x9')](_0x9414('0xb'),auth[_0x9414('0xc')](),controller[_0x9414('0xd')]);router[_0x9414('0x9')](_0x9414('0xe'),auth[_0x9414('0xc')](),controller[_0x9414('0xf')]);router[_0x9414('0x9')](_0x9414('0x10'),auth['isAuthenticated'](),controller[_0x9414('0x11')]);router[_0x9414('0x9')](_0x9414('0x12'),auth[_0x9414('0xc')](),controller[_0x9414('0x13')]);router[_0x9414('0x9')]('/:id/in_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x14')]);router[_0x9414('0x9')]('/:id/out_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x15')]);router[_0x9414('0x9')](_0x9414('0x16'),auth[_0x9414('0xc')](),controller[_0x9414('0x17')]);router[_0x9414('0x9')](_0x9414('0x18'),auth[_0x9414('0xc')](),controller[_0x9414('0x19')]);router[_0x9414('0x9')](_0x9414('0x1a'),auth[_0x9414('0xc')](),controller[_0x9414('0x1b')]);router['get'](_0x9414('0x1c'),auth[_0x9414('0xc')](),controller['verifySmtp']);router[_0x9414('0x9')]('/:id/users',auth['isAuthenticated'](),controller[_0x9414('0x1d')]);router[_0x9414('0x1e')](_0x9414('0x10'),auth['isAuthenticated'](),controller['addDisposition']);router[_0x9414('0x1e')]('/:id/canned_answers',auth[_0x9414('0xc')](),controller['addAnswer']);router[_0x9414('0x1e')]('/',auth[_0x9414('0xc')](),controller[_0x9414('0x1f')]);router['post'](_0x9414('0x20'),auth[_0x9414('0xc')](),controller[_0x9414('0x21')]);router[_0x9414('0x1e')](_0x9414('0x22'),auth[_0x9414('0xc')](),controller[_0x9414('0x23')]);router[_0x9414('0x1e')](_0x9414('0x16'),auth[_0x9414('0xc')](),controller[_0x9414('0x24')]);router['post'](_0x9414('0x18'),auth['isAuthenticated'](),controller[_0x9414('0x25')]);router['post']('/:id/send',auth[_0x9414('0xc')](),controller[_0x9414('0x26')]);router[_0x9414('0x1e')](_0x9414('0x27'),auth['isAuthenticated'](),controller[_0x9414('0x28')]);router['put'](_0x9414('0xe'),auth[_0x9414('0xc')](),controller[_0x9414('0x29')]);router['delete']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x9414('0x2a')]);router[_0x9414('0x2b')](_0x9414('0x12'),auth[_0x9414('0xc')](),controller[_0x9414('0x2c')]);router[_0x9414('0x2b')](_0x9414('0x20'),auth['isAuthenticated'](),controller[_0x9414('0x2d')]);router['delete']('/:id/out_servers',auth[_0x9414('0xc')](),controller[_0x9414('0x2e')]);router[_0x9414('0x2b')]('/:id',auth[_0x9414('0xc')](),controller[_0x9414('0x2f')]);router[_0x9414('0x2b')]('/:id/users',auth[_0x9414('0xc')](),controller[_0x9414('0x30')]);module[_0x9414('0x31')]=router;
\ No newline at end of file
index 3738a25..da48058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e8f=['ENUM','gmail','hotmail','yahoo','outlook365','provider','getDataValue','exports','STRING','BOOLEAN','TEXT','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x595bd1,_0xb1e7a){var _0xd0344f=function(_0x5eb2fd){while(--_0x5eb2fd){_0x595bd1['push'](_0x595bd1['shift']());}};_0xd0344f(++_0xb1e7a);}(_0x6e8f,0xeb));var _0xf6e8=function(_0x3e241b,_0x50609b){_0x3e241b=_0x3e241b-0x0;var _0x26ae7b=_0x6e8f[_0x3e241b];return _0x26ae7b;};'use strict';var Sequelize=require('sequelize');module[_0xf6e8('0x0')]={'description':{'type':Sequelize[_0xf6e8('0x1')]},'name':{'type':Sequelize[_0xf6e8('0x1')],'allowNull':![]},'service':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xf6e8('0x1')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0xf6e8('0x2')],'defaultValue':!![]},'key':{'type':Sequelize['STRING'],'allowNull':![]},'template':{'type':Sequelize[_0xf6e8('0x3')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0xf6e8('0x1')],'allowNull':![],'defaultValue':'Arial,Helvetica,sans-serif'},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0xf6e8('0x4')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xf6e8('0x5');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xf6e8('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf6e8('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xf6e8('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf6e8('0x2')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xf6e8('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf6e8('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xf6e8('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xf6e8('0x2')],'defaultValue':![],'comment':_0xf6e8('0x8'),'set':function(_0x1c12b6){if(!_0x1c12b6)this[_0xf6e8('0x9')](_0xf6e8('0xa'),null);this[_0xf6e8('0x9')](_0xf6e8('0xb'),_0x1c12b6);}},'provider':{'type':Sequelize[_0xf6e8('0xc')](_0xf6e8('0xd'),_0xf6e8('0xe'),_0xf6e8('0xf'),_0xf6e8('0x10')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0xf6e8('0x11')))return'custom';return this[_0xf6e8('0x12')]('provider');},'set':function(_0x4b403c){if(_0x4b403c==='custom')_0x4b403c=null;return this[_0xf6e8('0x9')](_0xf6e8('0x11'),_0x4b403c);}}};
\ No newline at end of file
+var _0x0c33=['custom','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','INTEGER','UNSIGNED','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}<br/>Subject\x20:\x20{{message.subject}}','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','ENUM','gmail','hotmail','yahoo','outlook365','getDataValue','provider'];(function(_0x45b29d,_0x44ce43){var _0x32d74=function(_0x559eff){while(--_0x559eff){_0x45b29d['push'](_0x45b29d['shift']());}};_0x32d74(++_0x44ce43);}(_0x0c33,0xf1));var _0x30c3=function(_0x673722,_0x275d7e){_0x673722=_0x673722-0x0;var _0x21249c=_0x0c33[_0x673722];return _0x21249c;};'use strict';var Sequelize=require(_0x30c3('0x0'));module[_0x30c3('0x1')]={'description':{'type':Sequelize[_0x30c3('0x2')]},'name':{'type':Sequelize[_0x30c3('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'email':{'type':Sequelize[_0x30c3('0x2')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':!![]},'key':{'type':Sequelize[_0x30c3('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x30c3('0x4')]},'markAsUnread':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x30c3('0x5')},'fontSize':{'type':Sequelize[_0x30c3('0x6')](0x2)[_0x30c3('0x7')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x30c3('0x4')],'defaultValue':function(){return _0x30c3('0x8');}},'notificationSound':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x30c3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x30c3('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x30c3('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x30c3('0x3')],'defaultValue':![],'comment':_0x30c3('0xa'),'set':function(_0x1a8618){if(!_0x1a8618)this[_0x30c3('0xb')]('mandatoryDispositionPauseId',null);this['setDataValue']('mandatoryDisposition',_0x1a8618);}},'provider':{'type':Sequelize[_0x30c3('0xc')](_0x30c3('0xd'),_0x30c3('0xe'),_0x30c3('0xf'),_0x30c3('0x10')),'defaultValue':null,'get':function(){if(!this[_0x30c3('0x11')](_0x30c3('0x12')))return _0x30c3('0x13');return this['getDataValue'](_0x30c3('0x12'));},'set':function(_0x5eb410){if(_0x5eb410===_0x30c3('0x13'))_0x5eb410=null;return this['setDataValue'](_0x30c3('0x12'),_0x5eb410);}}};
\ No newline at end of file
index 429aed9..56d6477 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36e3=['juice','ioredis','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','jayson/promise','client','http','request','then','info','MailAccount,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','end','offset','undefined','limit','count','status','set','json','destroy','get','UserProfileResource','sendStatus','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','outlook365','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','hotmail','smtp-mail.outlook.com','user','username','password','pass','modernAuthentication','CloudProviderId','port','host','secure','service','authentication','Imap','Smtp','index','MailServerIn','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','show','params','Pause','intersection','options','update','body','provider','custom','find','MailServerOut','Mail\x20Account\x20not\x20found','describe','MailAccountId','create','getDispositions','Disposition','nolimit','order','removeDispositions','CannedAnswer','getAnswers','findOne','include','removeAnswers','email','ListId','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','MailAccounts','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','addInteraction','ids','omit','getInteractions','MailInteraction','CmContact','User','fullname','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','getApplications','MailMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','CmList','List','updatedAt','CloudProvider','Smtp\x20configuration\x20not\x20found','isNil','from','%s\x20<%s>','attachments','join','root','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','Contacts','messageId','out','format','Interaction','Messages','verifySmtp','VerifySmtp','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','emit','userMailAccount:save','removeAgents','isArray','getAgents','moment','bluebird','util','path','lodash'];(function(_0x3fb030,_0x12aebe){var _0xd6899b=function(_0x327646){while(--_0x327646){_0x3fb030['push'](_0x3fb030['shift']());}};_0xd6899b(++_0x12aebe);}(_0x36e3,0xbd));var _0x336e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x36e3[_0x37bd26];return _0xe83dc4;};'use strict';var moment=require(_0x336e('0x0'));var BPromise=require(_0x336e('0x1'));var util=require(_0x336e('0x2'));var path=require(_0x336e('0x3'));var _=require(_0x336e('0x4'));var juice=require(_0x336e('0x5'));var Redis=require(_0x336e('0x6'));var qs=require('../../components/parsers/qs');var logger=require('../../config/logger')(_0x336e('0x7'));var config=require(_0x336e('0x8'));var db=require(_0x336e('0x9'))['db'];config[_0x336e('0xa')]=_[_0x336e('0xb')](config[_0x336e('0xa')],{'host':_0x336e('0xc'),'port':0x18eb});var socket=require(_0x336e('0xd'))(new Redis(config[_0x336e('0xa')]));require(_0x336e('0xe'))['register'](socket);var jayson=require(_0x336e('0xf'));var client=jayson[_0x336e('0x10')][_0x336e('0x11')]({'port':0x232b});function respondWithRpcPromise(_0x55a0ef,_0xe6daaf,_0x2fd858,_0x51aed5){return new BPromise(function(_0x2def46,_0x14e49f){var _0x316193=_0x51aed5||client;return _0x316193[_0x336e('0x12')](_0x55a0ef,_0x2fd858)[_0x336e('0x13')](function(_0x25904a){logger[_0x336e('0x14')](_0x336e('0x15'),_0xe6daaf,'request\x20sent');logger[_0x336e('0x16')]('MailAccount,\x20%s,\x20%s,\x20%s',_0xe6daaf,_0x336e('0x17'),JSON[_0x336e('0x18')](_0x25904a));if(_0x25904a[_0x336e('0x19')]){if(_0x25904a['error'][_0x336e('0x1a')]===0x1f4){logger[_0x336e('0x19')](_0x336e('0x15'),_0xe6daaf,_0x25904a[_0x336e('0x19')][_0x336e('0x1b')]);return _0x14e49f(_0x25904a[_0x336e('0x19')][_0x336e('0x1b')]);}logger[_0x336e('0x19')](_0x336e('0x15'),_0xe6daaf,_0x25904a[_0x336e('0x19')][_0x336e('0x1b')]);return _0x2def46(_0x25904a[_0x336e('0x19')][_0x336e('0x1b')]);}else{logger[_0x336e('0x14')](_0x336e('0x15'),_0xe6daaf,_0x336e('0x17'));_0x2def46(_0x25904a['result'][_0x336e('0x1b')]);}})[_0x336e('0x1c')](function(_0x415fcc){logger['error']('MailAccount,\x20%s,\x20%s',_0xe6daaf,_0x415fcc);_0x14e49f(_0x415fcc);});});}function respondWithStatusCode(_0x3ea600,_0x3a17c9){_0x3a17c9=_0x3a17c9||0xcc;return function(_0x523b39){if(_0x523b39){return _0x3ea600['sendStatus'](_0x3a17c9);}return _0x3ea600['status'](_0x3a17c9)[_0x336e('0x1d')]();};}function respondWithResult(_0x579aae,_0x43d515){_0x43d515=_0x43d515||0xc8;return function(_0x5e84b9){if(_0x5e84b9){return _0x579aae['status'](_0x43d515)['json'](_0x5e84b9);}};}function respondWithFilteredResult(_0x552975,_0x5b2c84){return function(_0xb4af9f){if(_0xb4af9f){var _0x4a362e=typeof _0x5b2c84[_0x336e('0x1e')]===_0x336e('0x1f')&&typeof _0x5b2c84[_0x336e('0x20')]===_0x336e('0x1f');var _0x460a06=_0xb4af9f[_0x336e('0x21')];var _0x57095e=_0x4a362e?0x0:_0x5b2c84[_0x336e('0x1e')];var _0x4ca749=_0x4a362e?_0xb4af9f[_0x336e('0x21')]:_0x5b2c84[_0x336e('0x1e')]+_0x5b2c84['limit'];var _0x401b57;if(_0x4ca749>=_0x460a06){_0x4ca749=_0x460a06;_0x401b57=0xc8;}else{_0x401b57=0xce;}_0x552975[_0x336e('0x22')](_0x401b57);return _0x552975[_0x336e('0x23')]('Content-Range',_0x57095e+'-'+_0x4ca749+'/'+_0x460a06)[_0x336e('0x24')](_0xb4af9f);}return null;};}function saveUpdates(_0xd7ca44){return function(_0x38c97b){if(_0x38c97b){return _0x38c97b['update'](_0xd7ca44)['then'](function(_0x1f881f){return _0x1f881f;});}return null;};}function removeEntity(_0x51d1e1){return function(_0x5eb4c2){if(_0x5eb4c2){return _0x5eb4c2[_0x336e('0x25')]()['then'](function(){var _0x503085=_0x5eb4c2[_0x336e('0x26')]({'plain':!![]});var _0x4126ec='MailAccounts';return db[_0x336e('0x27')]['destroy']({'where':{'type':_0x4126ec,'resourceId':_0x503085['id']}})[_0x336e('0x13')](function(){return _0x5eb4c2;});})[_0x336e('0x13')](function(){_0x51d1e1[_0x336e('0x22')](0xcc)[_0x336e('0x1d')]();});}};}function handleEntityNotFound(_0x359292){return function(_0xe44011){if(!_0xe44011){_0x359292[_0x336e('0x28')](0x194);}return _0xe44011;};}function handleError(_0x452136,_0x369f59){_0x369f59=_0x369f59||0x1f4;return function(_0x4c735d){logger['error'](_0x4c735d[_0x336e('0x29')]);if(_0x4c735d[_0x336e('0x2a')]){delete _0x4c735d[_0x336e('0x2a')];}_0x452136[_0x336e('0x22')](_0x369f59)[_0x336e('0x2b')](_0x4c735d);};}function getImapHost(_0x49ec2e){switch(_0x49ec2e){case _0x336e('0x2c'):return _0x336e('0x2d');case _0x336e('0x2e'):return _0x336e('0x2f');case'hotmail':return'imap-mail.outlook.com';case _0x336e('0x30'):return _0x336e('0x31');}throw new Error(_0x336e('0x32'),_0x49ec2e);}function getSmtpHost(_0x546dcf){switch(_0x546dcf){case'gmail':return _0x336e('0x33');case _0x336e('0x2e'):return _0x336e('0x34');case _0x336e('0x35'):return _0x336e('0x36');case _0x336e('0x30'):return'smtp.office365.com';}throw new Error(_0x336e('0x32'),_0x546dcf);}function getAuthenticationOptions(_0x3e5e13,_0x458546){var _0x1acbc1={};var _0x133515={};if(_0x3e5e13){_0x1acbc1[_0x336e('0x37')]=_0x133515[_0x336e('0x37')]=_0x458546[_0x336e('0x38')];_0x1acbc1[_0x336e('0x39')]=_0x133515[_0x336e('0x3a')]=_0x458546[_0x336e('0x39')];if(_0x458546[_0x336e('0x3b')]){_0x1acbc1[_0x336e('0x3b')]=_0x133515['modernAuthentication']=!![];_0x1acbc1['CloudProviderId']=_0x133515['CloudProviderId']=_0x458546['CloudProviderId'];_0x1acbc1[_0x336e('0x39')]=_0x133515[_0x336e('0x3a')]=null;}else{_0x1acbc1[_0x336e('0x3c')]=_0x133515[_0x336e('0x3c')]=null;}_0x1acbc1['host']=getImapHost(_0x3e5e13);_0x1acbc1[_0x336e('0x3d')]=0x3e1;_0x133515[_0x336e('0x3e')]=getSmtpHost(_0x3e5e13);_0x133515[_0x336e('0x3d')]=0x24b;_0x133515[_0x336e('0x3f')]=![];_0x1acbc1[_0x336e('0x40')]=_0x133515[_0x336e('0x40')]=null;}else{if(_0x458546[_0x336e('0x41')]){_0x1acbc1[_0x336e('0x37')]=_0x133515['user']=_0x458546['username'];_0x1acbc1['password']=_0x133515[_0x336e('0x3a')]=_0x458546[_0x336e('0x39')];}else{_0x1acbc1[_0x336e('0x41')]=_0x133515['authentication']=![];_0x1acbc1[_0x336e('0x37')]=_0x133515['user']=null;_0x1acbc1[_0x336e('0x39')]=_0x133515[_0x336e('0x3a')]=null;}_0x1acbc1[_0x336e('0x3e')]=_0x458546[_0x336e('0x42')]['host'];_0x1acbc1[_0x336e('0x3d')]=_0x458546[_0x336e('0x42')]['port'];_0x133515[_0x336e('0x3e')]=_0x458546[_0x336e('0x43')]['host'];_0x133515[_0x336e('0x3d')]=_0x458546[_0x336e('0x43')][_0x336e('0x3d')];}return{'Imap':_0x1acbc1,'Smtp':_0x133515};}exports[_0x336e('0x44')]=function(_0x4b3a3c,_0x685bb){var _0x16b9b2={'include':[{'model':db[_0x336e('0x45')],'as':_0x336e('0x42')},{'model':db['MailServerOut'],'as':_0x336e('0x43')},{'model':db['Pause'],'as':_0x336e('0x46')}]},_0x2e2440={},_0x34196a={'count':0x0,'rows':[]};var _0x42c665=_[_0x336e('0x47')](db[_0x336e('0x48')][_0x336e('0x49')],function(_0x84ca3c){return{'name':_0x84ca3c[_0x336e('0x4a')],'type':_0x84ca3c[_0x336e('0x4b')][_0x336e('0x4c')]};});_0x2e2440[_0x336e('0x4d')]=_[_0x336e('0x47')](_0x42c665,'name');_0x2e2440[_0x336e('0x4e')]=_[_0x336e('0x4f')](_0x4b3a3c[_0x336e('0x4e')]);_0x2e2440[_0x336e('0x50')]=_['intersection'](_0x2e2440[_0x336e('0x4d')],_0x2e2440[_0x336e('0x4e')]);_0x16b9b2['attributes']=_['intersection'](_0x2e2440[_0x336e('0x4d')],qs['fields'](_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x51')]));_0x16b9b2[_0x336e('0x52')]=_0x16b9b2[_0x336e('0x52')][_0x336e('0x53')]?_0x16b9b2[_0x336e('0x52')]:_0x2e2440[_0x336e('0x4d')];if(!_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x54')]('nolimit')){_0x16b9b2['limit']=qs[_0x336e('0x20')](_0x4b3a3c[_0x336e('0x4e')]['limit']);_0x16b9b2['offset']=qs[_0x336e('0x1e')](_0x4b3a3c[_0x336e('0x4e')]['offset']);}_0x16b9b2['order']=qs[_0x336e('0x55')](_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x55')]);_0x16b9b2[_0x336e('0x56')]=qs['filters'](_[_0x336e('0x57')](_0x4b3a3c[_0x336e('0x4e')],_0x2e2440[_0x336e('0x50')]),_0x42c665);if(_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x58')]){_0x16b9b2[_0x336e('0x56')]=_[_0x336e('0x59')](_0x16b9b2['where'],{'$or':_[_0x336e('0x47')](_0x42c665,function(_0x25b23a){if(_0x25b23a['type']!==_0x336e('0x5a')){var _0x67888b={};_0x67888b[_0x25b23a[_0x336e('0x2a')]]={'$like':'%'+_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x67888b;}})});}_0x16b9b2=_[_0x336e('0x59')]({},_0x16b9b2,_0x4b3a3c['options']);var _0x21ff31={'where':_0x16b9b2[_0x336e('0x56')]};return db[_0x336e('0x48')][_0x336e('0x21')](_0x21ff31)[_0x336e('0x13')](function(_0x491a66){_0x34196a[_0x336e('0x21')]=_0x491a66;if(_0x4b3a3c[_0x336e('0x4e')][_0x336e('0x5b')]){_0x16b9b2['include']=[{'all':!![]}];}return db[_0x336e('0x48')][_0x336e('0x5c')](_0x16b9b2);})[_0x336e('0x13')](function(_0x20bacb){_0x34196a[_0x336e('0x5d')]=_0x20bacb;return _0x34196a;})['then'](respondWithFilteredResult(_0x685bb,_0x16b9b2))[_0x336e('0x1c')](handleError(_0x685bb,null));};exports[_0x336e('0x5e')]=function(_0x33c89c,_0xc9988e){var _0x254e5f={'raw':![],'where':{'id':_0x33c89c[_0x336e('0x5f')]['id']},'include':[{'model':db['MailServerIn'],'as':_0x336e('0x42')},{'model':db['MailServerOut'],'as':_0x336e('0x43')},{'model':db[_0x336e('0x60')],'as':_0x336e('0x46')}]},_0x4cab61={};_0x4cab61[_0x336e('0x4d')]=_['keys'](db[_0x336e('0x48')][_0x336e('0x49')]);_0x4cab61[_0x336e('0x4e')]=_[_0x336e('0x4f')](_0x33c89c[_0x336e('0x4e')]);_0x4cab61['filters']=_[_0x336e('0x61')](_0x4cab61[_0x336e('0x4d')],_0x4cab61[_0x336e('0x4e')]);_0x254e5f[_0x336e('0x52')]=_[_0x336e('0x61')](_0x4cab61[_0x336e('0x4d')],qs[_0x336e('0x51')](_0x33c89c[_0x336e('0x4e')][_0x336e('0x51')]));_0x254e5f[_0x336e('0x52')]=_0x254e5f[_0x336e('0x52')]['length']?_0x254e5f[_0x336e('0x52')]:_0x4cab61['model'];if(_0x33c89c[_0x336e('0x4e')]['includeAll']){_0x254e5f['include']=[{'all':!![]}];}_0x254e5f=_[_0x336e('0x59')]({},_0x254e5f,_0x33c89c[_0x336e('0x62')]);return db[_0x336e('0x48')]['find'](_0x254e5f)[_0x336e('0x13')](handleEntityNotFound(_0xc9988e,null))[_0x336e('0x13')](respondWithResult(_0xc9988e,null))[_0x336e('0x1c')](handleError(_0xc9988e,null));};exports[_0x336e('0x63')]=function(_0x5c03a8,_0x454995){if(_0x5c03a8[_0x336e('0x64')]['id']){delete _0x5c03a8['body']['id'];}var _0x260217=_0x5c03a8[_0x336e('0x64')][_0x336e('0x65')]===_0x336e('0x66')?null:_0x5c03a8[_0x336e('0x64')][_0x336e('0x65')];var _0x40f740=_0x5c03a8[_0x336e('0x64')][_0x336e('0x42')]||{};var _0x58f1f1=_0x5c03a8[_0x336e('0x64')]['Smtp']||{};if(_0x260217){_0x40f740[_0x336e('0x3e')]=getImapHost(_0x260217);_0x40f740[_0x336e('0x3d')]=0x3e1;_0x58f1f1[_0x336e('0x3e')]=getSmtpHost(_0x260217);_0x58f1f1[_0x336e('0x3d')]=0x24b;_0x58f1f1[_0x336e('0x3f')]=![];}if(_0x58f1f1[_0x336e('0x3b')]){_0x58f1f1[_0x336e('0x3f')]=![];}else{_0x58f1f1['CloudProviderId']=null;}if(!_0x40f740[_0x336e('0x3b')])_0x40f740['CloudProviderId']=null;_0x5c03a8[_0x336e('0x64')][_0x336e('0x42')]=_0x40f740;_0x5c03a8[_0x336e('0x64')][_0x336e('0x43')]=_0x58f1f1;return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0x5c03a8[_0x336e('0x5f')]['id']},'include':[{'model':db[_0x336e('0x45')],'as':_0x336e('0x42')},{'model':db[_0x336e('0x68')],'as':_0x336e('0x43')},{'model':db[_0x336e('0x60')],'as':'mandatoryDispositionPause'}]})[_0x336e('0x13')](handleEntityNotFound(_0x454995,null))[_0x336e('0x13')](function(_0x1f3813){if(!_0x1f3813)throw new Error(_0x336e('0x69'));if(_0x1f3813['service'])delete _0x5c03a8['body'][_0x336e('0x42')];return _0x1f3813;})[_0x336e('0x13')](saveUpdates(_0x5c03a8[_0x336e('0x64')],null))[_0x336e('0x13')](function(_0x24b3b1){if(!_0x5c03a8[_0x336e('0x64')][_0x336e('0x42')])return _0x24b3b1;return db[_0x336e('0x45')][_0x336e('0x63')](_0x5c03a8[_0x336e('0x64')]['Imap'],{'where':{'MailAccountId':_0x24b3b1['id']}})[_0x336e('0x13')](function(){return _0x24b3b1;});})['then'](function(_0x493c07){if(!_0x5c03a8[_0x336e('0x64')][_0x336e('0x43')])return _0x493c07;return db[_0x336e('0x68')][_0x336e('0x63')](_0x5c03a8[_0x336e('0x64')][_0x336e('0x43')],{'where':{'MailAccountId':_0x493c07['id']}})[_0x336e('0x13')](function(){return _0x493c07;});})[_0x336e('0x13')](respondWithResult(_0x454995,null))[_0x336e('0x1c')](handleError(_0x454995,null));};exports[_0x336e('0x6a')]=function(_0x33ae0e,_0x348925){return db[_0x336e('0x48')]['describe']()[_0x336e('0x13')](respondWithResult(_0x348925,null))[_0x336e('0x1c')](handleError(_0x348925,null));};exports['addDisposition']=function(_0x19cab3,_0x4b53e2){if(_0x19cab3[_0x336e('0x64')]['id']){delete _0x19cab3['body']['id'];}return db['MailAccount'][_0x336e('0x67')]({'where':{'id':_0x19cab3[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x4b53e2,null))[_0x336e('0x13')](function(_0x2044ea){if(_0x2044ea){_0x19cab3['body'][_0x336e('0x6b')]=_0x2044ea['id'];return db['Disposition'][_0x336e('0x6c')](_0x19cab3['body']);}})['then'](respondWithResult(_0x4b53e2,null))['catch'](handleError(_0x4b53e2,null));};exports[_0x336e('0x6d')]=function(_0x22769d,_0xe42642){var _0x3a757c={'raw':![],'where':{}};var _0x22dde6={};var _0x3103fc={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x22769d[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0xe42642,null))[_0x336e('0x13')](function(_0x3ab8cd){if(_0x3ab8cd){_0x22dde6[_0x336e('0x4d')]=_['keys'](db[_0x336e('0x6e')]['rawAttributes']);_0x22dde6[_0x336e('0x4e')]=_[_0x336e('0x4f')](_0x22769d['query']);_0x22dde6[_0x336e('0x50')]=_[_0x336e('0x61')](_0x22dde6[_0x336e('0x4d')],_0x22dde6[_0x336e('0x4e')]);_0x3a757c[_0x336e('0x52')]=_[_0x336e('0x61')](_0x22dde6[_0x336e('0x4d')],qs[_0x336e('0x51')](_0x22769d[_0x336e('0x4e')]['fields']));_0x3a757c[_0x336e('0x52')]=_0x3a757c[_0x336e('0x52')][_0x336e('0x53')]?_0x3a757c[_0x336e('0x52')]:_0x22dde6[_0x336e('0x4d')];if(!_0x22769d[_0x336e('0x4e')]['hasOwnProperty'](_0x336e('0x6f'))){_0x3a757c[_0x336e('0x20')]=qs[_0x336e('0x20')](_0x22769d[_0x336e('0x4e')][_0x336e('0x20')]);_0x3a757c[_0x336e('0x1e')]=qs[_0x336e('0x1e')](_0x22769d['query']['offset']);}_0x3a757c[_0x336e('0x70')]=qs[_0x336e('0x55')](_0x22769d[_0x336e('0x4e')][_0x336e('0x55')]);_0x3a757c[_0x336e('0x56')]=qs['filters'](_[_0x336e('0x57')](_0x22769d[_0x336e('0x4e')],_0x22dde6[_0x336e('0x50')]));_0x3a757c[_0x336e('0x56')][_0x336e('0x6b')]=_0x3ab8cd['id'];if(_0x22769d['query'][_0x336e('0x58')]){_0x3a757c[_0x336e('0x56')]=_[_0x336e('0x59')](_0x3a757c['where'],{'$or':_[_0x336e('0x47')](_0x3a757c[_0x336e('0x52')],function(_0x223774){var _0x1548ff={};_0x1548ff[_0x223774]={'$like':'%'+_0x22769d['query'][_0x336e('0x58')]+'%'};return _0x1548ff;})});}_0x3a757c=_['merge']({},_0x3a757c,_0x22769d[_0x336e('0x62')]);return db[_0x336e('0x6e')][_0x336e('0x21')]({'where':_0x3a757c[_0x336e('0x56')]})['then'](function(_0x132fb8){_0x3103fc['count']=_0x132fb8;if(_0x22769d[_0x336e('0x4e')][_0x336e('0x5b')]){_0x3a757c['include']=[{'all':!![]}];}return db[_0x336e('0x6e')][_0x336e('0x5c')](_0x3a757c);})[_0x336e('0x13')](function(_0x2da25d){_0x3103fc[_0x336e('0x5d')]=_0x2da25d;return _0x3103fc;});}})[_0x336e('0x13')](respondWithFilteredResult(_0xe42642,_0x3a757c))[_0x336e('0x1c')](handleError(_0xe42642,null));};exports[_0x336e('0x71')]=function(_0x12d9d4,_0x2996b4){return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0x12d9d4[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x2996b4,null))[_0x336e('0x13')](function(_0x13ae8a){if(_0x13ae8a){return _0x13ae8a[_0x336e('0x71')](_0x12d9d4[_0x336e('0x4e')]['ids']);}})[_0x336e('0x13')](respondWithStatusCode(_0x2996b4,null))[_0x336e('0x1c')](handleError(_0x2996b4,null));};exports['addAnswer']=function(_0xb6b1af,_0x32d97b){if(_0xb6b1af[_0x336e('0x64')]['id']){delete _0xb6b1af[_0x336e('0x64')]['id'];}return db['MailAccount'][_0x336e('0x67')]({'where':{'id':_0xb6b1af[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x32d97b,null))[_0x336e('0x13')](function(_0x4063c9){if(_0x4063c9){_0xb6b1af[_0x336e('0x64')][_0x336e('0x6b')]=_0x4063c9['id'];return db[_0x336e('0x72')]['create'](_0xb6b1af[_0x336e('0x64')]);}})[_0x336e('0x13')](respondWithResult(_0x32d97b,null))[_0x336e('0x1c')](handleError(_0x32d97b,null));};exports[_0x336e('0x73')]=function(_0x3a11af,_0x1ec32d){var _0x901dc3={'raw':![],'where':{}};var _0x2dd341={};var _0x4fb880={'count':0x0,'rows':[]};return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x3a11af[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x1ec32d,null))['then'](function(_0x42c2f1){if(_0x42c2f1){_0x2dd341['model']=_[_0x336e('0x4f')](db[_0x336e('0x72')][_0x336e('0x49')]);_0x2dd341[_0x336e('0x4e')]=_[_0x336e('0x4f')](_0x3a11af[_0x336e('0x4e')]);_0x2dd341[_0x336e('0x50')]=_[_0x336e('0x61')](_0x2dd341[_0x336e('0x4d')],_0x2dd341[_0x336e('0x4e')]);_0x901dc3[_0x336e('0x52')]=_[_0x336e('0x61')](_0x2dd341['model'],qs[_0x336e('0x51')](_0x3a11af['query'][_0x336e('0x51')]));_0x901dc3[_0x336e('0x52')]=_0x901dc3[_0x336e('0x52')][_0x336e('0x53')]?_0x901dc3[_0x336e('0x52')]:_0x2dd341[_0x336e('0x4d')];if(!_0x3a11af[_0x336e('0x4e')]['hasOwnProperty'](_0x336e('0x6f'))){_0x901dc3[_0x336e('0x20')]=qs[_0x336e('0x20')](_0x3a11af[_0x336e('0x4e')]['limit']);_0x901dc3[_0x336e('0x1e')]=qs[_0x336e('0x1e')](_0x3a11af['query'][_0x336e('0x1e')]);}_0x901dc3[_0x336e('0x70')]=qs[_0x336e('0x55')](_0x3a11af[_0x336e('0x4e')][_0x336e('0x55')]);_0x901dc3[_0x336e('0x56')]=qs[_0x336e('0x50')](_['pick'](_0x3a11af[_0x336e('0x4e')],_0x2dd341['filters']));_0x901dc3[_0x336e('0x56')][_0x336e('0x6b')]=_0x42c2f1['id'];if(_0x3a11af[_0x336e('0x4e')][_0x336e('0x58')]){_0x901dc3['where']=_['merge'](_0x901dc3[_0x336e('0x56')],{'$or':_[_0x336e('0x47')](_0x901dc3[_0x336e('0x52')],function(_0x74c582){var _0x570e48={};_0x570e48[_0x74c582]={'$like':'%'+_0x3a11af[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x570e48;})});}_0x901dc3=_['merge']({},_0x901dc3,_0x3a11af[_0x336e('0x62')]);return db[_0x336e('0x72')][_0x336e('0x21')]({'where':_0x901dc3[_0x336e('0x56')]})[_0x336e('0x13')](function(_0x3c67ec){_0x4fb880[_0x336e('0x21')]=_0x3c67ec;if(_0x3a11af[_0x336e('0x4e')][_0x336e('0x5b')]){_0x901dc3[_0x336e('0x75')]=[{'all':!![]}];}return db[_0x336e('0x72')]['findAll'](_0x901dc3);})[_0x336e('0x13')](function(_0x8083ba){_0x4fb880['rows']=_0x8083ba;return _0x4fb880;});}})[_0x336e('0x13')](respondWithFilteredResult(_0x1ec32d,_0x901dc3))[_0x336e('0x1c')](handleError(_0x1ec32d,null));};exports[_0x336e('0x76')]=function(_0x1e3ec0,_0x3a7215){return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0x1e3ec0[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x3a7215,null))['then'](function(_0x56a4c0){if(_0x56a4c0){return _0x56a4c0[_0x336e('0x76')](_0x1e3ec0[_0x336e('0x4e')]['ids']);}})[_0x336e('0x13')](respondWithStatusCode(_0x3a7215,null))[_0x336e('0x1c')](handleError(_0x3a7215,null));};exports[_0x336e('0x6c')]=function(_0xc10e1d,_0x2fb4f3){var _0x10e6c4={'name':_0xc10e1d[_0x336e('0x64')][_0x336e('0x2a')],'key':_0xc10e1d[_0x336e('0x64')][_0x336e('0x4c')],'provider':_0xc10e1d[_0x336e('0x64')]['provider']===_0x336e('0x66')?null:_0xc10e1d[_0x336e('0x64')][_0x336e('0x65')],'email':_0xc10e1d[_0x336e('0x64')][_0x336e('0x77')],'ListId':_0xc10e1d[_0x336e('0x64')][_0x336e('0x78')],'active':!_['isNil'](_0xc10e1d[_0x336e('0x64')][_0x336e('0x79')])?_0xc10e1d[_0x336e('0x64')][_0x336e('0x79')]:!![],'description':_0xc10e1d[_0x336e('0x64')][_0x336e('0x7a')]||null};var _0x7b27a=getAuthenticationOptions(_0x10e6c4[_0x336e('0x65')],_0xc10e1d['body']);_0x10e6c4['Imap']=_0x7b27a[_0x336e('0x42')];_0x10e6c4[_0x336e('0x43')]=_0x7b27a[_0x336e('0x43')];return db[_0x336e('0x48')][_0x336e('0x6c')](_0x10e6c4,{'include':[{'model':db[_0x336e('0x68')],'as':_0x336e('0x43')},{'model':db[_0x336e('0x45')],'as':_0x336e('0x42')}]})[_0x336e('0x13')](function(_0x5ca267){var _0x383bc1=_0xc10e1d[_0x336e('0x37')][_0x336e('0x26')]({'plain':!![]});if(!_0x383bc1)throw new Error(_0x336e('0x7b'));if(_0x383bc1['role']===_0x336e('0x37')){var _0x4d326b=_0x5ca267['get']({'plain':!![]});return db[_0x336e('0x7c')]['find']({'where':{'name':_0x336e('0x7d'),'userProfileId':_0x383bc1[_0x336e('0x7e')]},'raw':!![]})[_0x336e('0x13')](function(_0x144a61){if(_0x144a61&&_0x144a61['autoAssociation']===0x0){return db[_0x336e('0x27')]['create']({'name':_0x4d326b[_0x336e('0x2a')],'resourceId':_0x4d326b['id'],'type':_0x144a61[_0x336e('0x2a')],'sectionId':_0x144a61['id']},{})[_0x336e('0x13')](function(){return _0x5ca267;});}else{return _0x5ca267;}})[_0x336e('0x1c')](function(_0x5058ad){logger[_0x336e('0x19')](_0x336e('0x7f'),_0x5058ad);throw _0x5058ad;});}return _0x5ca267;})[_0x336e('0x13')](respondWithResult(_0x2fb4f3,0xc9))[_0x336e('0x1c')](handleError(_0x2fb4f3,null));};exports[_0x336e('0x80')]=function(_0x2238d9,_0x591447){return db['MailAccount'][_0x336e('0x74')]({'where':{'id':_0x2238d9['params']['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x591447,null))['then'](function(_0x45fb1f){if(_0x45fb1f){return _0x45fb1f['getImap']();}return null;})[_0x336e('0x13')](respondWithResult(_0x591447,null))[_0x336e('0x1c')](handleError(_0x591447,null));};exports[_0x336e('0x81')]=function(_0xe263c4,_0x24c336){if(_0xe263c4[_0x336e('0x64')]['id']){delete _0xe263c4['body']['id'];}return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0xe263c4[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x24c336,null))[_0x336e('0x13')](function(_0xc579a8){if(_0xc579a8){_0xe263c4['body'][_0x336e('0x6b')]=_0xc579a8['id'];return db['MailServerIn']['create'](_0xe263c4['body']);}})[_0x336e('0x13')](respondWithResult(_0x24c336,null))[_0x336e('0x1c')](handleError(_0x24c336,null));};exports[_0x336e('0x82')]=function(_0x56e269,_0x31e81a){return db['MailAccount'][_0x336e('0x74')]({'where':{'id':_0x56e269['params']['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x31e81a,null))[_0x336e('0x13')](function(_0x3c88a3){if(_0x3c88a3){return _0x3c88a3[_0x336e('0x83')](null);}return null;})['then'](respondWithStatusCode(_0x31e81a,null))['catch'](handleError(_0x31e81a,null));};exports[_0x336e('0x84')]=function(_0x46c30a,_0x205ae2){return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x46c30a[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x205ae2,null))[_0x336e('0x13')](function(_0x30250b){if(_0x30250b){return _0x30250b[_0x336e('0x84')]();}return null;})['then'](respondWithResult(_0x205ae2,null))['catch'](handleError(_0x205ae2,null));};exports[_0x336e('0x85')]=function(_0x450b29,_0x429da7){if(_0x450b29['body']['id']){delete _0x450b29[_0x336e('0x64')]['id'];}return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0x450b29[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x429da7,null))[_0x336e('0x13')](function(_0x1ab891){if(_0x1ab891){_0x450b29[_0x336e('0x64')]['MailAccountId']=_0x1ab891['id'];return db[_0x336e('0x68')]['create'](_0x450b29[_0x336e('0x64')]);}})[_0x336e('0x13')](respondWithResult(_0x429da7,null))[_0x336e('0x1c')](handleError(_0x429da7,null));};exports['removeSmtp']=function(_0x528373,_0x342232){return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x528373[_0x336e('0x5f')]['id']}})['then'](handleEntityNotFound(_0x342232,null))['then'](function(_0x364411){if(_0x364411){return _0x364411['setSmtp'](null);}return null;})[_0x336e('0x13')](respondWithStatusCode(_0x342232,null))[_0x336e('0x1c')](handleError(_0x342232,null));};exports[_0x336e('0x86')]=function(_0x41d12a,_0x4ec651){return db['MailInteraction'][_0x336e('0x67')]({'where':{'id':_0x41d12a[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x4ec651,null))[_0x336e('0x13')](function(_0x1abf7d){if(_0x1abf7d){return _0x1abf7d['addInteraction'](_0x41d12a[_0x336e('0x64')][_0x336e('0x87')],_[_0x336e('0x88')](_0x41d12a[_0x336e('0x64')],['ids','id'])||{});}})[_0x336e('0x13')](respondWithResult(_0x4ec651,null))['catch'](handleError(_0x4ec651,null));};exports[_0x336e('0x89')]=function(_0x1d966e,_0x582228){var _0x53a8f5={'raw':![],'where':{}};var _0x184d20={};var _0x2ff9f1={'count':0x0,'rows':[]};return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x1d966e[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x582228,null))[_0x336e('0x13')](function(_0xd92c8e){if(_0xd92c8e){_0x184d20[_0x336e('0x4d')]=_['keys'](db[_0x336e('0x8a')][_0x336e('0x49')]);_0x184d20[_0x336e('0x4e')]=_['keys'](_0x1d966e[_0x336e('0x4e')]);_0x184d20[_0x336e('0x50')]=_['intersection'](_0x184d20[_0x336e('0x4d')],_0x184d20[_0x336e('0x4e')]);_0x53a8f5[_0x336e('0x52')]=_[_0x336e('0x61')](_0x184d20[_0x336e('0x4d')],qs[_0x336e('0x51')](_0x1d966e[_0x336e('0x4e')][_0x336e('0x51')]));_0x53a8f5['attributes']=_0x53a8f5[_0x336e('0x52')][_0x336e('0x53')]?_0x53a8f5['attributes']:_0x184d20[_0x336e('0x4d')];if(!_0x1d966e[_0x336e('0x4e')]['hasOwnProperty'](_0x336e('0x6f'))){_0x53a8f5[_0x336e('0x20')]=qs[_0x336e('0x20')](_0x1d966e[_0x336e('0x4e')]['limit']);_0x53a8f5['offset']=qs[_0x336e('0x1e')](_0x1d966e['query'][_0x336e('0x1e')]);}_0x53a8f5[_0x336e('0x70')]=qs[_0x336e('0x55')](_0x1d966e[_0x336e('0x4e')]['sort']);_0x53a8f5[_0x336e('0x56')]=qs['filters'](_[_0x336e('0x57')](_0x1d966e[_0x336e('0x4e')],_0x184d20[_0x336e('0x50')]));_0x53a8f5[_0x336e('0x56')][_0x336e('0x6b')]=_0xd92c8e['id'];if(_0x1d966e[_0x336e('0x4e')][_0x336e('0x58')]){_0x53a8f5[_0x336e('0x56')]=_[_0x336e('0x59')](_0x53a8f5[_0x336e('0x56')],{'$or':_[_0x336e('0x47')](_0x53a8f5[_0x336e('0x52')],function(_0x4a6e5b){var _0x10cb15={};_0x10cb15[_0x4a6e5b]={'$like':'%'+_0x1d966e[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x10cb15;})});}_0x53a8f5=_[_0x336e('0x59')]({},_0x53a8f5,_0x1d966e['options']);return db[_0x336e('0x8a')][_0x336e('0x21')]({'where':_0x53a8f5[_0x336e('0x56')]})[_0x336e('0x13')](function(_0x23a103){_0x2ff9f1['count']=_0x23a103;if(_0x1d966e[_0x336e('0x4e')]['includeAll']){_0x53a8f5[_0x336e('0x75')]=[{'model':db[_0x336e('0x8b')],'as':'Contact','required':![]},{'model':db[_0x336e('0x8c')],'as':'Owner','attributes':['name',_0x336e('0x8d'),'internal'],'required':![]},{'model':db[_0x336e('0x8e')],'as':_0x336e('0x8f'),'attributes':['id',_0x336e('0x2a'),_0x336e('0x90')],'where':_0x1d966e[_0x336e('0x4e')][_0x336e('0x91')]?{'id':_0x1d966e[_0x336e('0x4e')][_0x336e('0x91')]}:undefined,'required':_0x1d966e[_0x336e('0x4e')][_0x336e('0x91')]?!![]:![]}];}return db[_0x336e('0x8a')][_0x336e('0x5c')](_0x53a8f5);})[_0x336e('0x13')](function(_0x44bbab){_0x2ff9f1[_0x336e('0x5d')]=_0x44bbab;return _0x2ff9f1;});}})[_0x336e('0x13')](respondWithFilteredResult(_0x582228,_0x53a8f5))[_0x336e('0x1c')](handleError(_0x582228,null));};exports[_0x336e('0x92')]=function addApplications(_0x916e5,_0x21625a){var _0x4b78da=_0x916e5[_0x336e('0x5f')]['id'];var _0xbc7b35=_0x916e5[_0x336e('0x64')];var _0x300ee4=0xc8;var _0x43bd2c=null;return db[_0x336e('0x93')][_0x336e('0x94')]({'isolationLevel':db[_0x336e('0x93')][_0x336e('0x95')]['ISOLATION_LEVELS'][_0x336e('0x96')]},function(_0x343999){return db[_0x336e('0x48')]['findOne']({'where':{'id':_0x4b78da},'transaction':_0x343999})[_0x336e('0x13')](function(_0x301843){if(_0x301843){return db[_0x336e('0x97')][_0x336e('0x25')]({'where':{'MailAccountId':_0x4b78da},'transaction':_0x343999})['then'](function(){var _0x4e8424=_['map'](_0xbc7b35,function(_0x348741){_0x348741[_0x336e('0x6b')]=_0x4b78da;return _0x348741;});return db[_0x336e('0x97')][_0x336e('0x98')](_0x4e8424,{'transaction':_0x343999});});}else{_0x300ee4=0x194;_0x43bd2c=[];}});})[_0x336e('0x13')](function(){if(_0x300ee4!==0x194){return db[_0x336e('0x97')][_0x336e('0x99')]({'where':{'MailAccountId':_0x4b78da},'order':_0x336e('0x9a')})[_0x336e('0x13')](function(_0x36fe01){_0x43bd2c=_0x36fe01;});}})[_0x336e('0x1c')](function(_0x345e97){_0x300ee4=0x1f4;logger[_0x336e('0x19')](_0x345e97[_0x336e('0x29')]);if(_0x345e97[_0x336e('0x2a')]){delete _0x345e97[_0x336e('0x2a')];}_0x43bd2c=_0x345e97;})['finally'](function(){if(_0x43bd2c===null){_0x21625a[_0x336e('0x28')](_0x300ee4);}else{if(_0x300ee4===0x1f4){_0x21625a['status'](_0x300ee4)[_0x336e('0x2b')](_0x43bd2c);}else{_0x21625a[_0x336e('0x22')](_0x300ee4)['json'](_0x43bd2c);}}});};exports['getApplications']=function(_0x5bd63b,_0x114e63){var _0x8d2874={};var _0x53cabf={};var _0x20ffc3;var _0x40bdac;return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x5bd63b[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x114e63,null))['then'](function(_0x4275e2){if(_0x4275e2){_0x20ffc3=_0x4275e2;_0x53cabf[_0x336e('0x4d')]=_[_0x336e('0x4f')](db[_0x336e('0x97')][_0x336e('0x49')]);_0x53cabf['query']=_[_0x336e('0x4f')](_0x5bd63b[_0x336e('0x4e')]);_0x53cabf['filters']=_[_0x336e('0x61')](_0x53cabf[_0x336e('0x4d')],_0x53cabf[_0x336e('0x4e')]);_0x8d2874[_0x336e('0x52')]=_[_0x336e('0x61')](_0x53cabf[_0x336e('0x4d')],qs[_0x336e('0x51')](_0x5bd63b[_0x336e('0x4e')][_0x336e('0x51')]));_0x8d2874['attributes']=_0x8d2874[_0x336e('0x52')][_0x336e('0x53')]?_0x8d2874[_0x336e('0x52')]:_0x53cabf['model'];_0x8d2874['order']=qs[_0x336e('0x55')](_0x5bd63b[_0x336e('0x4e')][_0x336e('0x55')]);_0x8d2874['where']=qs['filters'](_[_0x336e('0x57')](_0x5bd63b[_0x336e('0x4e')],_0x53cabf[_0x336e('0x50')]));if(_0x5bd63b[_0x336e('0x4e')][_0x336e('0x58')]){_0x8d2874[_0x336e('0x56')]=_[_0x336e('0x59')](_0x8d2874[_0x336e('0x56')],{'$or':_[_0x336e('0x47')](_0x8d2874[_0x336e('0x52')],function(_0x1e5bb8){var _0x14bf4d={};_0x14bf4d[_0x1e5bb8]={'$like':'%'+_0x5bd63b[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x14bf4d;})});}_0x8d2874=_[_0x336e('0x59')]({},_0x8d2874,_0x5bd63b['options']);return _0x20ffc3[_0x336e('0x9b')](_0x8d2874);}})[_0x336e('0x13')](function(_0x1abbb1){if(_0x1abbb1){_0x40bdac=_0x1abbb1[_0x336e('0x53')];if(!_0x5bd63b[_0x336e('0x4e')][_0x336e('0x54')]('nolimit')){_0x8d2874[_0x336e('0x20')]=qs['limit'](_0x5bd63b[_0x336e('0x4e')][_0x336e('0x20')]);_0x8d2874[_0x336e('0x1e')]=qs['offset'](_0x5bd63b['query']['offset']);}return _0x20ffc3['getApplications'](_0x8d2874);}})[_0x336e('0x13')](function(_0x51ae2c){if(_0x51ae2c){return _0x51ae2c?{'count':_0x40bdac,'rows':_0x51ae2c}:null;}})[_0x336e('0x13')](respondWithResult(_0x114e63,null))[_0x336e('0x1c')](handleError(_0x114e63,null));};exports['getMessages']=function(_0x1c0422,_0x23977a){var _0x559bae={'raw':!![],'where':{}};var _0x210f7e={};var _0x3cf01a={'count':0x0,'rows':[]};return db[_0x336e('0x48')][_0x336e('0x74')]({'where':{'id':_0x1c0422['params']['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x23977a,null))[_0x336e('0x13')](function(_0x3c5f31){if(_0x3c5f31){_0x210f7e[_0x336e('0x4d')]=_[_0x336e('0x4f')](db[_0x336e('0x9c')][_0x336e('0x49')]);_0x210f7e[_0x336e('0x4e')]=_['keys'](_0x1c0422['query']);_0x210f7e[_0x336e('0x50')]=_['intersection'](_0x210f7e['model'],_0x210f7e[_0x336e('0x4e')]);_0x559bae[_0x336e('0x52')]=_['intersection'](_0x210f7e[_0x336e('0x4d')],qs[_0x336e('0x51')](_0x1c0422[_0x336e('0x4e')][_0x336e('0x51')]));_0x559bae[_0x336e('0x52')]=_0x559bae[_0x336e('0x52')][_0x336e('0x53')]?_0x559bae[_0x336e('0x52')]:_0x210f7e[_0x336e('0x4d')];if(!_0x1c0422['query'][_0x336e('0x54')](_0x336e('0x6f'))){_0x559bae[_0x336e('0x20')]=qs[_0x336e('0x20')](_0x1c0422[_0x336e('0x4e')][_0x336e('0x20')]);_0x559bae['offset']=qs[_0x336e('0x1e')](_0x1c0422['query'][_0x336e('0x1e')]);}_0x559bae[_0x336e('0x70')]=qs[_0x336e('0x55')](_0x1c0422[_0x336e('0x4e')]['sort']);_0x559bae['where']=qs[_0x336e('0x50')](_[_0x336e('0x57')](_0x1c0422[_0x336e('0x4e')],_0x210f7e[_0x336e('0x50')]));_0x559bae[_0x336e('0x56')][_0x336e('0x6b')]=_0x3c5f31['id'];if(_0x1c0422[_0x336e('0x4e')][_0x336e('0x58')]){_0x559bae[_0x336e('0x56')]=_[_0x336e('0x59')](_0x559bae[_0x336e('0x56')],{'$or':_['map'](_0x559bae[_0x336e('0x52')],function(_0x39a6f1){var _0x4839da={};_0x4839da[_0x39a6f1]={'$like':'%'+_0x1c0422[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x4839da;})});}if(_0x1c0422[_0x336e('0x4e')][_0x336e('0x9d')]){var _0x614002=_0x1c0422[_0x336e('0x4e')][_0x336e('0x9d')][_0x336e('0x9e')](',');var _0xc8b183={};_0xc8b183[_0x614002[0x0]]={'$gte':moment(_0x614002[0x1])['format'](_0x336e('0x9f'))};_0x559bae[_0x336e('0x56')]=_['merge'](_0x559bae['where'],_0xc8b183);}_0x559bae=_[_0x336e('0x59')]({},_0x559bae,_0x1c0422[_0x336e('0x62')]);return db[_0x336e('0x9c')]['count']({'where':_0x559bae['where']})[_0x336e('0x13')](function(_0x17456c){_0x3cf01a[_0x336e('0x21')]=_0x17456c;if(_0x1c0422[_0x336e('0x4e')][_0x336e('0x5b')]){_0x559bae[_0x336e('0x75')]=[{'all':!![]}];}return db[_0x336e('0x9c')][_0x336e('0x5c')](_0x559bae);})[_0x336e('0x13')](function(_0x175f28){if(_0x1c0422['query'][_0x336e('0xa0')]===_0x336e('0xa1')){for(var _0x21c492=0x0;_0x21c492<_0x175f28[_0x336e('0x53')];_0x21c492++){_0x175f28[_0x21c492]['body']=juice(_0x175f28[_0x21c492][_0x336e('0x64')]);}}_0x3cf01a[_0x336e('0x5d')]=_0x175f28;return _0x3cf01a;});}})['then'](respondWithFilteredResult(_0x23977a,_0x559bae))['catch'](handleError(_0x23977a,null));};exports[_0x336e('0x2b')]=function(_0x77a6ee,_0x3ec77e){var _0x17b04f,_0x2b1435={},_0x311782;if(_0x77a6ee[_0x336e('0x64')]['to']){_0x311782=_0x77a6ee[_0x336e('0x64')]['to'][_0x336e('0x9e')](',')[0x0];}return db['MailAccount']['find']({'where':{'id':_0x77a6ee['params']['id']},'include':[{'model':db[_0x336e('0xa2')],'as':_0x336e('0xa3'),'include':[{'model':db[_0x336e('0x8b')],'as':'Contacts','where':{'email':_0x311782},'limit':0x1,'order':[[_0x336e('0xa4'),'DESC']]}]},{'model':db[_0x336e('0x68')],'as':_0x336e('0x43'),'raw':!![],'include':[{'model':db[_0x336e('0xa5')],'as':_0x336e('0xa5'),'raw':!![]}]}]})[_0x336e('0x13')](handleEntityNotFound(_0x3ec77e,null))['then'](function(_0x432380){if(!_0x432380)return;_0x17b04f=_0x432380;if(!_0x432380['Smtp'])throw new Error(_0x336e('0xa6'));if(_[_0x336e('0xa7')](_0x77a6ee[_0x336e('0x64')]['from'])){_0x77a6ee[_0x336e('0x64')][_0x336e('0xa8')]=util['format'](_0x336e('0xa9'),_0x432380['name'],_0x432380[_0x336e('0x77')]||_0x432380[_0x336e('0x43')][_0x336e('0x37')]);}if(_0x77a6ee[_0x336e('0x64')][_0x336e('0xaa')]&&_0x77a6ee['body']['attachments'][_0x336e('0x53')]){for(var _0x16a121=0x0;_0x16a121<_0x77a6ee[_0x336e('0x64')][_0x336e('0xaa')][_0x336e('0x53')];_0x16a121+=0x1){_0x77a6ee[_0x336e('0x64')][_0x336e('0xaa')][_0x16a121]={'filename':_0x77a6ee[_0x336e('0x64')][_0x336e('0xaa')][_0x16a121][_0x336e('0x2a')],'path':path[_0x336e('0xab')](config[_0x336e('0xac')],'server/files/attachments',_0x77a6ee['body'][_0x336e('0xaa')][_0x16a121]['basename'])};}}var _0x504e0b=_0x432380[_0x336e('0xad')]();return respondWithRpcPromise(_0x336e('0xae'),_0x336e('0xaf'),{'account':_0x504e0b,'message':_0x77a6ee[_0x336e('0x64')]});})[_0x336e('0x13')](function(_0x4c6528){if(!_0x4c6528)return;_0x2b1435=_0x4c6528;if(!_0x17b04f[_0x336e('0xa3')])throw new Error(_0x336e('0xb0'));if(_0x17b04f[_0x336e('0xa3')][_0x336e('0xb1')][_0x336e('0x53')])return _0x17b04f['List']['Contacts'][0x0];return db[_0x336e('0x8b')]['create'](_[_0x336e('0xb')](_0x77a6ee[_0x336e('0x64')],{'firstName':_0x77a6ee[_0x336e('0x64')]['to'],'email':_0x77a6ee[_0x336e('0x64')]['to'],'phone':_0x77a6ee['body']['to'],'ListId':_0x17b04f['ListId']}));})[_0x336e('0x13')](function(_0x4550ec){if(!_0x4550ec)return;var _0x2e06a4={'UserId':_0x77a6ee[_0x336e('0x37')]['id'],'ContactId':_0x4550ec['id'],'MailAccountId':_0x17b04f['id'],'inReplyTo':_0x2b1435[_0x336e('0xb2')],'to':_0x77a6ee[_0x336e('0x64')][_0x336e('0xa8')],'cc':_0x77a6ee[_0x336e('0x64')]['cc'],'subject':_0x77a6ee[_0x336e('0x64')]['subject'],'attach':_0x77a6ee[_0x336e('0x64')]['attach'],'firstMsgDirection':_0x336e('0xb3'),'lastMsgAt':moment()[_0x336e('0xb4')](_0x336e('0x9f')),'lastMsgDirection':_0x336e('0xb3'),'Messages':[_[_0x336e('0x59')](_0x77a6ee[_0x336e('0x64')],{'messageId':_0x2b1435['messageId'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'read':!![],'MailAccountId':_0x17b04f['id'],'UserId':_0x77a6ee[_0x336e('0x37')]['id'],'ContactId':_0x4550ec['id']})]};if(_0x77a6ee['body'][_0x336e('0xb5')]){_0x2e06a4=_['merge'](_0x2e06a4,_0x77a6ee['body']['Interaction']);}return db[_0x336e('0x8a')][_0x336e('0x6c')](_0x2e06a4,{'include':[{'model':db[_0x336e('0x9c')],'as':_0x336e('0xb6')}]});})['then'](respondWithResult(_0x3ec77e,null))[_0x336e('0x1c')](handleError(_0x3ec77e,null));};exports[_0x336e('0xb7')]=function(_0xaaf0d5,_0x4b236b){return db['MailAccount'][_0x336e('0x67')]({'where':{'id':_0xaaf0d5['params']['id']},'include':[{'model':db[_0x336e('0x68')],'as':_0x336e('0x43'),'raw':!![],'include':[{'model':db[_0x336e('0xa5')],'as':_0x336e('0xa5'),'raw':!![]}]}]})[_0x336e('0x13')](handleEntityNotFound(_0x4b236b,null))[_0x336e('0x13')](function(_0x419b38){if(!_0x419b38['Smtp'])return;var _0x594fc4=_0x419b38[_0x336e('0xad')]();return respondWithRpcPromise(_0x336e('0xb8'),_0x336e('0xb7'),{'account':_0x594fc4});})[_0x336e('0x13')](respondWithResult(_0x4b236b,null))[_0x336e('0x1c')](handleError(_0x4b236b,null));};exports[_0x336e('0x25')]=function(_0x54ff06,_0xd15cb7){return db['MailAccount'][_0x336e('0x67')]({'where':{'id':_0x54ff06['params']['id']}})[_0x336e('0x13')](handleEntityNotFound(_0xd15cb7,null))[_0x336e('0x13')](function(_0x5e5cb9){if(_0x5e5cb9&&_0x5e5cb9[_0x336e('0x40')]){throw new db['Sequelize'][(_0x336e('0xb9'))](_0x336e('0xba'));}return _0x5e5cb9;})['then'](removeEntity(_0xd15cb7,null))['catch'](handleError(_0xd15cb7,null));};exports[_0x336e('0xbb')]=function(_0x3be5b0,_0x3c91c5){return db[_0x336e('0x48')]['find']({'where':{'id':_0x3be5b0[_0x336e('0x5f')]['id']}})['then'](handleEntityNotFound(_0x3c91c5,null))[_0x336e('0x13')](function(_0x37344b){if(_0x37344b){return _0x37344b[_0x336e('0xbb')](_0x3be5b0['body']['ids'],_['omit'](_0x3be5b0[_0x336e('0x64')],[_0x336e('0x87'),'id'])||{})[_0x336e('0xbc')](function(_0x34faaf){for(var _0x41e1f4=0x0;_0x41e1f4<_0x3be5b0[_0x336e('0x64')][_0x336e('0x87')][_0x336e('0x53')];_0x41e1f4+=0x1){socket[_0x336e('0xbd')](_0x336e('0xbe'),{'UserId':Number(_0x3be5b0[_0x336e('0x64')][_0x336e('0x87')][_0x41e1f4]),'MailAccountId':Number(_0x3be5b0['params']['id'])});}return _0x34faaf;});}})['then'](respondWithResult(_0x3c91c5,null))[_0x336e('0x1c')](handleError(_0x3c91c5,null));};exports['removeAgents']=function(_0x326e7f,_0x4e58a8){return db[_0x336e('0x48')][_0x336e('0x67')]({'where':{'id':_0x326e7f[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x4e58a8,null))['then'](function(_0x4745cd){if(_0x4745cd){return _0x4745cd[_0x336e('0xbf')](_0x326e7f[_0x336e('0x4e')][_0x336e('0x87')])[_0x336e('0x13')](function(){if(_[_0x336e('0xc0')](_0x326e7f[_0x336e('0x4e')][_0x336e('0x87')])){for(var _0x3b445d=0x0;_0x3b445d<_0x326e7f[_0x336e('0x4e')][_0x336e('0x87')][_0x336e('0x53')];_0x3b445d+=0x1){socket['emit']('userMailAccount:remove',{'UserId':Number(_0x326e7f[_0x336e('0x4e')][_0x336e('0x87')][_0x3b445d]),'MailAccountId':Number(_0x326e7f['params']['id'])});}}else{socket[_0x336e('0xbd')]('userMailAccount:remove',{'UserId':Number(_0x326e7f['query'][_0x336e('0x87')]),'MailAccountId':Number(_0x326e7f[_0x336e('0x5f')]['id'])});}});}})[_0x336e('0x13')](respondWithStatusCode(_0x4e58a8,null))[_0x336e('0x1c')](handleError(_0x4e58a8,null));};exports[_0x336e('0xc1')]=function(_0xa6520,_0x5231a4){var _0x2817ec={};var _0x295c41={};var _0x3d5175;var _0x2ca91c;return db['MailAccount'][_0x336e('0x74')]({'where':{'id':_0xa6520[_0x336e('0x5f')]['id']}})[_0x336e('0x13')](handleEntityNotFound(_0x5231a4,null))[_0x336e('0x13')](function(_0x3bd069){if(_0x3bd069){_0x3d5175=_0x3bd069;_0x295c41[_0x336e('0x4d')]=_[_0x336e('0x4f')](db[_0x336e('0x8c')][_0x336e('0x49')]);_0x295c41[_0x336e('0x4e')]=_['keys'](_0xa6520['query']);_0x295c41['filters']=_[_0x336e('0x61')](_0x295c41[_0x336e('0x4d')],_0x295c41[_0x336e('0x4e')]);_0x2817ec[_0x336e('0x52')]=_[_0x336e('0x61')](_0x295c41[_0x336e('0x4d')],qs['fields'](_0xa6520[_0x336e('0x4e')][_0x336e('0x51')]));_0x2817ec[_0x336e('0x52')]=_0x2817ec[_0x336e('0x52')][_0x336e('0x53')]?_0x2817ec[_0x336e('0x52')]:_0x295c41[_0x336e('0x4d')];_0x2817ec[_0x336e('0x70')]=qs['sort'](_0xa6520[_0x336e('0x4e')][_0x336e('0x55')]);_0x2817ec[_0x336e('0x56')]=qs[_0x336e('0x50')](_[_0x336e('0x57')](_0xa6520[_0x336e('0x4e')],_0x295c41['filters']));if(_0xa6520[_0x336e('0x4e')][_0x336e('0x58')]){_0x2817ec[_0x336e('0x56')]=_[_0x336e('0x59')](_0x2817ec['where'],{'$or':_[_0x336e('0x47')](_0x2817ec[_0x336e('0x52')],function(_0x274223){var _0x1666e3={};_0x1666e3[_0x274223]={'$like':'%'+_0xa6520[_0x336e('0x4e')][_0x336e('0x58')]+'%'};return _0x1666e3;})});}_0x2817ec=_[_0x336e('0x59')]({},_0x2817ec,_0xa6520['options']);return _0x3d5175[_0x336e('0xc1')](_0x2817ec);}})['then'](function(_0x2877af){if(_0x2877af){_0x2ca91c=_0x2877af['length'];if(!_0xa6520[_0x336e('0x4e')][_0x336e('0x54')](_0x336e('0x6f'))){_0x2817ec[_0x336e('0x20')]=qs[_0x336e('0x20')](_0xa6520[_0x336e('0x4e')]['limit']);_0x2817ec['offset']=qs[_0x336e('0x1e')](_0xa6520['query'][_0x336e('0x1e')]);}return _0x3d5175[_0x336e('0xc1')](_0x2817ec);}})['then'](function(_0x485004){if(_0x485004){return _0x485004?{'count':_0x2ca91c,'rows':_0x485004}:null;}})['then'](respondWithResult(_0x5231a4,null))['catch'](handleError(_0x5231a4,null));};
\ No newline at end of file
+var _0xd05a=['modernAuthentication','CloudProviderId','host','port','secure','authentication','Imap','Smtp','MailServerIn','MailServerOut','Pause','MailAccount','rawAttributes','type','key','map','query','keys','filters','intersection','attributes','length','model','hasOwnProperty','limit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','mandatoryDispositionPause','fields','find','body','provider','custom','Mail\x20Account\x20not\x20found','service','describe','params','Disposition','create','getDispositions','MailAccountId','removeDispositions','ids','CannedAnswer','getAnswers','findOne','nolimit','removeAnswers','email','ListId','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','omit','CmContact','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','ISOLATION_LEVELS','MailApplication','priority','finally','getApplications','getMessages','MailMessage','$gte','split','format','inlineCss','List','Contacts','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','isNil','attachments','join','root','server/files/attachments','basename','getSmtpOptions','SendMail','messageId','from','subject','out','YYYY-MM-DD\x20HH:mm:ss','Interaction','Messages','verifySmtp','VerifySmtp','Sequelize','ValidationError','You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account','addAgents','spread','userMailAccount:save','removeAgents','isArray','emit','userMailAccount:remove','getAgents','util','path','juice','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','info','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailAccount,\x20%s,\x20%s','request\x20sent','result','sendStatus','status','undefined','count','offset','set','json','update','destroy','then','get','MailAccounts','UserProfileResource','end','stack','name','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook365','outlook.office365.com','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','smtp.office365.com','user','username','password','pass'];(function(_0x47a24a,_0x3a36b4){var _0x25bbf2=function(_0x13e7a2){while(--_0x13e7a2){_0x47a24a['push'](_0x47a24a['shift']());}};_0x25bbf2(++_0x3a36b4);}(_0xd05a,0x84));var _0xad05=function(_0x5ac9f4,_0x310b91){_0x5ac9f4=_0x5ac9f4-0x0;var _0x3f84b8=_0xd05a[_0x5ac9f4];return _0x3f84b8;};'use strict';var moment=require('moment');var BPromise=require('bluebird');var util=require(_0xad05('0x0'));var path=require(_0xad05('0x1'));var _=require('lodash');var juice=require(_0xad05('0x2'));var Redis=require('ioredis');var qs=require(_0xad05('0x3'));var logger=require(_0xad05('0x4'))(_0xad05('0x5'));var config=require(_0xad05('0x6'));var db=require(_0xad05('0x7'))['db'];config[_0xad05('0x8')]=_[_0xad05('0x9')](config[_0xad05('0x8')],{'host':_0xad05('0xa'),'port':0x18eb});var socket=require(_0xad05('0xb'))(new Redis(config['redis']));require('./mailAccount.socket')[_0xad05('0xc')](socket);var jayson=require(_0xad05('0xd'));var client=jayson[_0xad05('0xe')][_0xad05('0xf')]({'port':0x232b});function respondWithRpcPromise(_0x316e2c,_0x349e22,_0x527891,_0x32824e){return new BPromise(function(_0x173049,_0x4f462b){var _0x98f611=_0x32824e||client;return _0x98f611['request'](_0x316e2c,_0x527891)['then'](function(_0xd7a053){logger[_0xad05('0x10')]('MailAccount,\x20%s,\x20%s',_0x349e22,'request\x20sent');logger[_0xad05('0x11')](_0xad05('0x12'),_0x349e22,'request\x20sent',JSON[_0xad05('0x13')](_0xd7a053));if(_0xd7a053[_0xad05('0x14')]){if(_0xd7a053['error'][_0xad05('0x15')]===0x1f4){logger['error']('MailAccount,\x20%s,\x20%s',_0x349e22,_0xd7a053[_0xad05('0x14')]['message']);return _0x4f462b(_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);}logger[_0xad05('0x14')](_0xad05('0x17'),_0x349e22,_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);return _0x173049(_0xd7a053[_0xad05('0x14')][_0xad05('0x16')]);}else{logger[_0xad05('0x10')](_0xad05('0x17'),_0x349e22,_0xad05('0x18'));_0x173049(_0xd7a053[_0xad05('0x19')][_0xad05('0x16')]);}})['catch'](function(_0x19eec7){logger[_0xad05('0x14')](_0xad05('0x17'),_0x349e22,_0x19eec7);_0x4f462b(_0x19eec7);});});}function respondWithStatusCode(_0x430b84,_0x2e11ad){_0x2e11ad=_0x2e11ad||0xcc;return function(_0x4df616){if(_0x4df616){return _0x430b84[_0xad05('0x1a')](_0x2e11ad);}return _0x430b84['status'](_0x2e11ad)['end']();};}function respondWithResult(_0x4af119,_0x16ea06){_0x16ea06=_0x16ea06||0xc8;return function(_0x60eca8){if(_0x60eca8){return _0x4af119[_0xad05('0x1b')](_0x16ea06)['json'](_0x60eca8);}};}function respondWithFilteredResult(_0x3a7329,_0x36ee4c){return function(_0x1e7807){if(_0x1e7807){var _0x1134cf=typeof _0x36ee4c['offset']===_0xad05('0x1c')&&typeof _0x36ee4c['limit']===_0xad05('0x1c');var _0x3c2ccb=_0x1e7807[_0xad05('0x1d')];var _0x5d4c1a=_0x1134cf?0x0:_0x36ee4c[_0xad05('0x1e')];var _0x79cc00=_0x1134cf?_0x1e7807[_0xad05('0x1d')]:_0x36ee4c['offset']+_0x36ee4c['limit'];var _0x150245;if(_0x79cc00>=_0x3c2ccb){_0x79cc00=_0x3c2ccb;_0x150245=0xc8;}else{_0x150245=0xce;}_0x3a7329[_0xad05('0x1b')](_0x150245);return _0x3a7329[_0xad05('0x1f')]('Content-Range',_0x5d4c1a+'-'+_0x79cc00+'/'+_0x3c2ccb)[_0xad05('0x20')](_0x1e7807);}return null;};}function saveUpdates(_0x4617fb){return function(_0x185556){if(_0x185556){return _0x185556[_0xad05('0x21')](_0x4617fb)['then'](function(_0x342244){return _0x342244;});}return null;};}function removeEntity(_0x285d2b){return function(_0x37a700){if(_0x37a700){return _0x37a700[_0xad05('0x22')]()[_0xad05('0x23')](function(){var _0x1150de=_0x37a700[_0xad05('0x24')]({'plain':!![]});var _0x36bc3b=_0xad05('0x25');return db[_0xad05('0x26')][_0xad05('0x22')]({'where':{'type':_0x36bc3b,'resourceId':_0x1150de['id']}})[_0xad05('0x23')](function(){return _0x37a700;});})['then'](function(){_0x285d2b[_0xad05('0x1b')](0xcc)[_0xad05('0x27')]();});}};}function handleEntityNotFound(_0x30da32){return function(_0x2c592f){if(!_0x2c592f){_0x30da32[_0xad05('0x1a')](0x194);}return _0x2c592f;};}function handleError(_0x12935e,_0x122148){_0x122148=_0x122148||0x1f4;return function(_0x312e82){logger[_0xad05('0x14')](_0x312e82[_0xad05('0x28')]);if(_0x312e82[_0xad05('0x29')]){delete _0x312e82[_0xad05('0x29')];}_0x12935e['status'](_0x122148)[_0xad05('0x2a')](_0x312e82);};}function getImapHost(_0x17f780){switch(_0x17f780){case _0xad05('0x2b'):return _0xad05('0x2c');case _0xad05('0x2d'):return _0xad05('0x2e');case _0xad05('0x2f'):return _0xad05('0x30');case _0xad05('0x31'):return _0xad05('0x32');}throw new Error('Unknown\x20email\x20service\x20provider',_0x17f780);}function getSmtpHost(_0x1ea4ee){switch(_0x1ea4ee){case _0xad05('0x2b'):return _0xad05('0x33');case'yahoo':return _0xad05('0x34');case'hotmail':return _0xad05('0x35');case _0xad05('0x31'):return _0xad05('0x36');}throw new Error('Unknown\x20email\x20service\x20provider',_0x1ea4ee);}function getAuthenticationOptions(_0x458ca4,_0x4ddbc5){var _0x5b2c29={};var _0x516839={};if(_0x458ca4){_0x5b2c29[_0xad05('0x37')]=_0x516839['user']=_0x4ddbc5[_0xad05('0x38')];_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=_0x4ddbc5[_0xad05('0x39')];if(_0x4ddbc5[_0xad05('0x3b')]){_0x5b2c29[_0xad05('0x3b')]=_0x516839[_0xad05('0x3b')]=!![];_0x5b2c29[_0xad05('0x3c')]=_0x516839[_0xad05('0x3c')]=_0x4ddbc5[_0xad05('0x3c')];_0x5b2c29['password']=_0x516839[_0xad05('0x3a')]=null;}else{_0x5b2c29[_0xad05('0x3c')]=_0x516839[_0xad05('0x3c')]=null;}_0x5b2c29[_0xad05('0x3d')]=getImapHost(_0x458ca4);_0x5b2c29[_0xad05('0x3e')]=0x3e1;_0x516839[_0xad05('0x3d')]=getSmtpHost(_0x458ca4);_0x516839[_0xad05('0x3e')]=0x24b;_0x516839[_0xad05('0x3f')]=![];_0x5b2c29['service']=_0x516839['service']=null;}else{if(_0x4ddbc5[_0xad05('0x40')]){_0x5b2c29[_0xad05('0x37')]=_0x516839[_0xad05('0x37')]=_0x4ddbc5[_0xad05('0x38')];_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=_0x4ddbc5[_0xad05('0x39')];}else{_0x5b2c29[_0xad05('0x40')]=_0x516839[_0xad05('0x40')]=![];_0x5b2c29['user']=_0x516839[_0xad05('0x37')]=null;_0x5b2c29[_0xad05('0x39')]=_0x516839[_0xad05('0x3a')]=null;}_0x5b2c29['host']=_0x4ddbc5['Imap'][_0xad05('0x3d')];_0x5b2c29[_0xad05('0x3e')]=_0x4ddbc5[_0xad05('0x41')][_0xad05('0x3e')];_0x516839['host']=_0x4ddbc5[_0xad05('0x42')][_0xad05('0x3d')];_0x516839[_0xad05('0x3e')]=_0x4ddbc5[_0xad05('0x42')][_0xad05('0x3e')];}return{'Imap':_0x5b2c29,'Smtp':_0x516839};}exports['index']=function(_0x1c70a2,_0x167977){var _0xbf46e={'include':[{'model':db[_0xad05('0x43')],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db[_0xad05('0x45')],'as':'mandatoryDispositionPause'}]},_0x4da9de={},_0x388bb2={'count':0x0,'rows':[]};var _0x7e6fb6=_['map'](db[_0xad05('0x46')][_0xad05('0x47')],function(_0x30252c){return{'name':_0x30252c['fieldName'],'type':_0x30252c[_0xad05('0x48')][_0xad05('0x49')]};});_0x4da9de['model']=_[_0xad05('0x4a')](_0x7e6fb6,_0xad05('0x29'));_0x4da9de[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x1c70a2[_0xad05('0x4b')]);_0x4da9de[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x4da9de['model'],_0x4da9de[_0xad05('0x4b')]);_0xbf46e[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x4da9de['model'],qs['fields'](_0x1c70a2[_0xad05('0x4b')]['fields']));_0xbf46e[_0xad05('0x4f')]=_0xbf46e[_0xad05('0x4f')][_0xad05('0x50')]?_0xbf46e[_0xad05('0x4f')]:_0x4da9de[_0xad05('0x51')];if(!_0x1c70a2[_0xad05('0x4b')][_0xad05('0x52')]('nolimit')){_0xbf46e[_0xad05('0x53')]=qs[_0xad05('0x53')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x53')]);_0xbf46e[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x1e')]);}_0xbf46e[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x1c70a2[_0xad05('0x4b')][_0xad05('0x55')]);_0xbf46e['where']=qs['filters'](_[_0xad05('0x56')](_0x1c70a2[_0xad05('0x4b')],_0x4da9de['filters']),_0x7e6fb6);if(_0x1c70a2[_0xad05('0x4b')][_0xad05('0x57')]){_0xbf46e[_0xad05('0x58')]=_['merge'](_0xbf46e[_0xad05('0x58')],{'$or':_['map'](_0x7e6fb6,function(_0x708015){if(_0x708015[_0xad05('0x48')]!==_0xad05('0x59')){var _0x5d7bd1={};_0x5d7bd1[_0x708015['name']]={'$like':'%'+_0x1c70a2[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x5d7bd1;}})});}_0xbf46e=_[_0xad05('0x5a')]({},_0xbf46e,_0x1c70a2[_0xad05('0x5b')]);var _0x6d044b={'where':_0xbf46e[_0xad05('0x58')]};return db[_0xad05('0x46')][_0xad05('0x1d')](_0x6d044b)['then'](function(_0x48d232){_0x388bb2[_0xad05('0x1d')]=_0x48d232;if(_0x1c70a2[_0xad05('0x4b')][_0xad05('0x5c')]){_0xbf46e[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x46')][_0xad05('0x5e')](_0xbf46e);})['then'](function(_0x3b19b9){_0x388bb2[_0xad05('0x5f')]=_0x3b19b9;return _0x388bb2;})['then'](respondWithFilteredResult(_0x167977,_0xbf46e))[_0xad05('0x60')](handleError(_0x167977,null));};exports[_0xad05('0x61')]=function(_0x321a03,_0x5270eb){var _0x674a1a={'raw':![],'where':{'id':_0x321a03['params']['id']},'include':[{'model':db['MailServerIn'],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db[_0xad05('0x45')],'as':_0xad05('0x62')}]},_0x179708={};_0x179708['model']=_[_0xad05('0x4c')](db[_0xad05('0x46')]['rawAttributes']);_0x179708[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x321a03[_0xad05('0x4b')]);_0x179708[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x179708[_0xad05('0x51')],_0x179708[_0xad05('0x4b')]);_0x674a1a[_0xad05('0x4f')]=_['intersection'](_0x179708['model'],qs[_0xad05('0x63')](_0x321a03[_0xad05('0x4b')][_0xad05('0x63')]));_0x674a1a[_0xad05('0x4f')]=_0x674a1a[_0xad05('0x4f')][_0xad05('0x50')]?_0x674a1a[_0xad05('0x4f')]:_0x179708['model'];if(_0x321a03[_0xad05('0x4b')][_0xad05('0x5c')]){_0x674a1a[_0xad05('0x5d')]=[{'all':!![]}];}_0x674a1a=_['merge']({},_0x674a1a,_0x321a03['options']);return db[_0xad05('0x46')][_0xad05('0x64')](_0x674a1a)['then'](handleEntityNotFound(_0x5270eb,null))['then'](respondWithResult(_0x5270eb,null))[_0xad05('0x60')](handleError(_0x5270eb,null));};exports[_0xad05('0x21')]=function(_0x304697,_0x2e324d){if(_0x304697[_0xad05('0x65')]['id']){delete _0x304697['body']['id'];}var _0xfc3c1f=_0x304697['body'][_0xad05('0x66')]===_0xad05('0x67')?null:_0x304697[_0xad05('0x65')][_0xad05('0x66')];var _0x2f084f=_0x304697[_0xad05('0x65')]['Imap']||{};var _0x243650=_0x304697[_0xad05('0x65')]['Smtp']||{};if(_0xfc3c1f){_0x2f084f[_0xad05('0x3d')]=getImapHost(_0xfc3c1f);_0x2f084f[_0xad05('0x3e')]=0x3e1;_0x243650[_0xad05('0x3d')]=getSmtpHost(_0xfc3c1f);_0x243650[_0xad05('0x3e')]=0x24b;_0x243650[_0xad05('0x3f')]=![];}if(_0x243650[_0xad05('0x3b')]){_0x243650[_0xad05('0x3f')]=![];}else{_0x243650[_0xad05('0x3c')]=null;}if(!_0x2f084f[_0xad05('0x3b')])_0x2f084f[_0xad05('0x3c')]=null;_0x304697['body'][_0xad05('0x41')]=_0x2f084f;_0x304697[_0xad05('0x65')][_0xad05('0x42')]=_0x243650;return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x304697['params']['id']},'include':[{'model':db[_0xad05('0x43')],'as':_0xad05('0x41')},{'model':db[_0xad05('0x44')],'as':'Smtp'},{'model':db[_0xad05('0x45')],'as':_0xad05('0x62')}]})[_0xad05('0x23')](handleEntityNotFound(_0x2e324d,null))[_0xad05('0x23')](function(_0x5e4aa4){if(!_0x5e4aa4)throw new Error(_0xad05('0x68'));if(_0x5e4aa4[_0xad05('0x69')])delete _0x304697[_0xad05('0x65')][_0xad05('0x41')];return _0x5e4aa4;})['then'](saveUpdates(_0x304697[_0xad05('0x65')],null))[_0xad05('0x23')](function(_0x170de3){if(!_0x304697['body'][_0xad05('0x41')])return _0x170de3;return db[_0xad05('0x43')][_0xad05('0x21')](_0x304697[_0xad05('0x65')][_0xad05('0x41')],{'where':{'MailAccountId':_0x170de3['id']}})['then'](function(){return _0x170de3;});})['then'](function(_0x2ccbfc){if(!_0x304697[_0xad05('0x65')][_0xad05('0x42')])return _0x2ccbfc;return db[_0xad05('0x44')][_0xad05('0x21')](_0x304697[_0xad05('0x65')][_0xad05('0x42')],{'where':{'MailAccountId':_0x2ccbfc['id']}})[_0xad05('0x23')](function(){return _0x2ccbfc;});})[_0xad05('0x23')](respondWithResult(_0x2e324d,null))['catch'](handleError(_0x2e324d,null));};exports[_0xad05('0x6a')]=function(_0x2b306f,_0x17eb07){return db['MailAccount'][_0xad05('0x6a')]()[_0xad05('0x23')](respondWithResult(_0x17eb07,null))['catch'](handleError(_0x17eb07,null));};exports['addDisposition']=function(_0x523c65,_0x9a9809){if(_0x523c65['body']['id']){delete _0x523c65[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x523c65[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x9a9809,null))['then'](function(_0x1ea931){if(_0x1ea931){_0x523c65['body']['MailAccountId']=_0x1ea931['id'];return db[_0xad05('0x6c')][_0xad05('0x6d')](_0x523c65[_0xad05('0x65')]);}})['then'](respondWithResult(_0x9a9809,null))[_0xad05('0x60')](handleError(_0x9a9809,null));};exports[_0xad05('0x6e')]=function(_0x2ea120,_0xbfb93f){var _0xdc9248={'raw':![],'where':{}};var _0x30ea83={};var _0x3b52a0={'count':0x0,'rows':[]};return db[_0xad05('0x46')]['findOne']({'where':{'id':_0x2ea120[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0xbfb93f,null))[_0xad05('0x23')](function(_0xd683e8){if(_0xd683e8){_0x30ea83[_0xad05('0x51')]=_['keys'](db['Disposition']['rawAttributes']);_0x30ea83[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x2ea120[_0xad05('0x4b')]);_0x30ea83['filters']=_[_0xad05('0x4e')](_0x30ea83[_0xad05('0x51')],_0x30ea83['query']);_0xdc9248[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x30ea83[_0xad05('0x51')],qs['fields'](_0x2ea120[_0xad05('0x4b')][_0xad05('0x63')]));_0xdc9248['attributes']=_0xdc9248['attributes'][_0xad05('0x50')]?_0xdc9248[_0xad05('0x4f')]:_0x30ea83[_0xad05('0x51')];if(!_0x2ea120['query'][_0xad05('0x52')]('nolimit')){_0xdc9248[_0xad05('0x53')]=qs['limit'](_0x2ea120[_0xad05('0x4b')][_0xad05('0x53')]);_0xdc9248[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x2ea120[_0xad05('0x4b')][_0xad05('0x1e')]);}_0xdc9248[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x2ea120[_0xad05('0x4b')][_0xad05('0x55')]);_0xdc9248[_0xad05('0x58')]=qs[_0xad05('0x4d')](_['pick'](_0x2ea120[_0xad05('0x4b')],_0x30ea83[_0xad05('0x4d')]));_0xdc9248[_0xad05('0x58')][_0xad05('0x6f')]=_0xd683e8['id'];if(_0x2ea120[_0xad05('0x4b')][_0xad05('0x57')]){_0xdc9248[_0xad05('0x58')]=_[_0xad05('0x5a')](_0xdc9248[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0xdc9248[_0xad05('0x4f')],function(_0xd30fd7){var _0x275d06={};_0x275d06[_0xd30fd7]={'$like':'%'+_0x2ea120[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x275d06;})});}_0xdc9248=_['merge']({},_0xdc9248,_0x2ea120[_0xad05('0x5b')]);return db[_0xad05('0x6c')][_0xad05('0x1d')]({'where':_0xdc9248[_0xad05('0x58')]})['then'](function(_0x1aea00){_0x3b52a0['count']=_0x1aea00;if(_0x2ea120[_0xad05('0x4b')]['includeAll']){_0xdc9248[_0xad05('0x5d')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0xdc9248);})[_0xad05('0x23')](function(_0x43bba9){_0x3b52a0[_0xad05('0x5f')]=_0x43bba9;return _0x3b52a0;});}})[_0xad05('0x23')](respondWithFilteredResult(_0xbfb93f,_0xdc9248))[_0xad05('0x60')](handleError(_0xbfb93f,null));};exports[_0xad05('0x70')]=function(_0x116a4a,_0x42732d){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x116a4a[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x42732d,null))[_0xad05('0x23')](function(_0x54e54e){if(_0x54e54e){return _0x54e54e['removeDispositions'](_0x116a4a[_0xad05('0x4b')][_0xad05('0x71')]);}})[_0xad05('0x23')](respondWithStatusCode(_0x42732d,null))[_0xad05('0x60')](handleError(_0x42732d,null));};exports['addAnswer']=function(_0xc733a5,_0x1d57c6){if(_0xc733a5[_0xad05('0x65')]['id']){delete _0xc733a5[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')]['find']({'where':{'id':_0xc733a5[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x1d57c6,null))[_0xad05('0x23')](function(_0x4cfd49){if(_0x4cfd49){_0xc733a5[_0xad05('0x65')][_0xad05('0x6f')]=_0x4cfd49['id'];return db[_0xad05('0x72')]['create'](_0xc733a5[_0xad05('0x65')]);}})[_0xad05('0x23')](respondWithResult(_0x1d57c6,null))['catch'](handleError(_0x1d57c6,null));};exports[_0xad05('0x73')]=function(_0x560281,_0x222799){var _0x426fe8={'raw':![],'where':{}};var _0x31c725={};var _0x2860e4={'count':0x0,'rows':[]};return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x560281[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x222799,null))[_0xad05('0x23')](function(_0xca97c9){if(_0xca97c9){_0x31c725['model']=_['keys'](db[_0xad05('0x72')][_0xad05('0x47')]);_0x31c725[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x560281['query']);_0x31c725[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x31c725['model'],_0x31c725[_0xad05('0x4b')]);_0x426fe8[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x31c725[_0xad05('0x51')],qs[_0xad05('0x63')](_0x560281['query'][_0xad05('0x63')]));_0x426fe8[_0xad05('0x4f')]=_0x426fe8[_0xad05('0x4f')][_0xad05('0x50')]?_0x426fe8[_0xad05('0x4f')]:_0x31c725['model'];if(!_0x560281[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x426fe8[_0xad05('0x53')]=qs['limit'](_0x560281[_0xad05('0x4b')][_0xad05('0x53')]);_0x426fe8[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x560281[_0xad05('0x4b')]['offset']);}_0x426fe8[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x560281[_0xad05('0x4b')][_0xad05('0x55')]);_0x426fe8[_0xad05('0x58')]=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x560281[_0xad05('0x4b')],_0x31c725['filters']));_0x426fe8[_0xad05('0x58')][_0xad05('0x6f')]=_0xca97c9['id'];if(_0x560281['query'][_0xad05('0x57')]){_0x426fe8[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x426fe8[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x426fe8[_0xad05('0x4f')],function(_0x406dd5){var _0x2098b3={};_0x2098b3[_0x406dd5]={'$like':'%'+_0x560281['query'][_0xad05('0x57')]+'%'};return _0x2098b3;})});}_0x426fe8=_[_0xad05('0x5a')]({},_0x426fe8,_0x560281[_0xad05('0x5b')]);return db[_0xad05('0x72')][_0xad05('0x1d')]({'where':_0x426fe8[_0xad05('0x58')]})['then'](function(_0x43fbc2){_0x2860e4['count']=_0x43fbc2;if(_0x560281['query'][_0xad05('0x5c')]){_0x426fe8[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x72')][_0xad05('0x5e')](_0x426fe8);})[_0xad05('0x23')](function(_0x3207d6){_0x2860e4[_0xad05('0x5f')]=_0x3207d6;return _0x2860e4;});}})[_0xad05('0x23')](respondWithFilteredResult(_0x222799,_0x426fe8))[_0xad05('0x60')](handleError(_0x222799,null));};exports['removeAnswers']=function(_0xd84042,_0x45aee0){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0xd84042[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x45aee0,null))[_0xad05('0x23')](function(_0x342d6d){if(_0x342d6d){return _0x342d6d[_0xad05('0x76')](_0xd84042[_0xad05('0x4b')][_0xad05('0x71')]);}})[_0xad05('0x23')](respondWithStatusCode(_0x45aee0,null))[_0xad05('0x60')](handleError(_0x45aee0,null));};exports[_0xad05('0x6d')]=function(_0x109d1a,_0x5bb416){var _0x57aa01={'name':_0x109d1a['body'][_0xad05('0x29')],'key':_0x109d1a[_0xad05('0x65')][_0xad05('0x49')],'provider':_0x109d1a[_0xad05('0x65')]['provider']===_0xad05('0x67')?null:_0x109d1a[_0xad05('0x65')][_0xad05('0x66')],'email':_0x109d1a[_0xad05('0x65')][_0xad05('0x77')],'ListId':_0x109d1a[_0xad05('0x65')][_0xad05('0x78')],'active':!_['isNil'](_0x109d1a[_0xad05('0x65')][_0xad05('0x79')])?_0x109d1a['body'][_0xad05('0x79')]:!![],'description':_0x109d1a[_0xad05('0x65')][_0xad05('0x7a')]||null};var _0x5782e9=getAuthenticationOptions(_0x57aa01[_0xad05('0x66')],_0x109d1a[_0xad05('0x65')]);_0x57aa01[_0xad05('0x41')]=_0x5782e9[_0xad05('0x41')];_0x57aa01[_0xad05('0x42')]=_0x5782e9[_0xad05('0x42')];return db['MailAccount'][_0xad05('0x6d')](_0x57aa01,{'include':[{'model':db[_0xad05('0x44')],'as':_0xad05('0x42')},{'model':db['MailServerIn'],'as':_0xad05('0x41')}]})[_0xad05('0x23')](function(_0x3ae28e){var _0x45f32a=_0x109d1a[_0xad05('0x37')][_0xad05('0x24')]({'plain':!![]});if(!_0x45f32a)throw new Error(_0xad05('0x7b'));if(_0x45f32a[_0xad05('0x7c')]===_0xad05('0x37')){var _0x39c33f=_0x3ae28e['get']({'plain':!![]});return db[_0xad05('0x7d')][_0xad05('0x64')]({'where':{'name':_0xad05('0x25'),'userProfileId':_0x45f32a[_0xad05('0x7e')]},'raw':!![]})['then'](function(_0xec4754){if(_0xec4754&&_0xec4754['autoAssociation']===0x0){return db[_0xad05('0x26')][_0xad05('0x6d')]({'name':_0x39c33f['name'],'resourceId':_0x39c33f['id'],'type':_0xec4754[_0xad05('0x29')],'sectionId':_0xec4754['id']},{})[_0xad05('0x23')](function(){return _0x3ae28e;});}else{return _0x3ae28e;}})[_0xad05('0x60')](function(_0x17da81){logger[_0xad05('0x14')](_0xad05('0x7f'),_0x17da81);throw _0x17da81;});}return _0x3ae28e;})['then'](respondWithResult(_0x5bb416,0xc9))[_0xad05('0x60')](handleError(_0x5bb416,null));};exports[_0xad05('0x80')]=function(_0x778bae,_0x5898a9){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x778bae[_0xad05('0x6b')]['id']}})['then'](handleEntityNotFound(_0x5898a9,null))['then'](function(_0x56fe3c){if(_0x56fe3c){return _0x56fe3c[_0xad05('0x80')]();}return null;})[_0xad05('0x23')](respondWithResult(_0x5898a9,null))[_0xad05('0x60')](handleError(_0x5898a9,null));};exports[_0xad05('0x81')]=function(_0x4aa5a5,_0x4c15b6){if(_0x4aa5a5['body']['id']){delete _0x4aa5a5[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x4aa5a5['params']['id']}})['then'](handleEntityNotFound(_0x4c15b6,null))[_0xad05('0x23')](function(_0x53efee){if(_0x53efee){_0x4aa5a5[_0xad05('0x65')][_0xad05('0x6f')]=_0x53efee['id'];return db[_0xad05('0x43')][_0xad05('0x6d')](_0x4aa5a5[_0xad05('0x65')]);}})[_0xad05('0x23')](respondWithResult(_0x4c15b6,null))[_0xad05('0x60')](handleError(_0x4c15b6,null));};exports[_0xad05('0x82')]=function(_0x2261d3,_0x4d9696){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x2261d3[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4d9696,null))[_0xad05('0x23')](function(_0x37653d){if(_0x37653d){return _0x37653d[_0xad05('0x83')](null);}return null;})[_0xad05('0x23')](respondWithStatusCode(_0x4d9696,null))[_0xad05('0x60')](handleError(_0x4d9696,null));};exports[_0xad05('0x84')]=function(_0x4a6643,_0x1a6c4a){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x4a6643['params']['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x1a6c4a,null))[_0xad05('0x23')](function(_0x2ba3d2){if(_0x2ba3d2){return _0x2ba3d2[_0xad05('0x84')]();}return null;})[_0xad05('0x23')](respondWithResult(_0x1a6c4a,null))[_0xad05('0x60')](handleError(_0x1a6c4a,null));};exports[_0xad05('0x85')]=function(_0x39beea,_0x3ffd7c){if(_0x39beea[_0xad05('0x65')]['id']){delete _0x39beea[_0xad05('0x65')]['id'];}return db[_0xad05('0x46')]['find']({'where':{'id':_0x39beea[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x3ffd7c,null))['then'](function(_0x49011b){if(_0x49011b){_0x39beea[_0xad05('0x65')][_0xad05('0x6f')]=_0x49011b['id'];return db[_0xad05('0x44')]['create'](_0x39beea[_0xad05('0x65')]);}})['then'](respondWithResult(_0x3ffd7c,null))['catch'](handleError(_0x3ffd7c,null));};exports[_0xad05('0x86')]=function(_0x401115,_0x341949){return db['MailAccount'][_0xad05('0x74')]({'where':{'id':_0x401115[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x341949,null))[_0xad05('0x23')](function(_0x44764f){if(_0x44764f){return _0x44764f['setSmtp'](null);}return null;})[_0xad05('0x23')](respondWithStatusCode(_0x341949,null))[_0xad05('0x60')](handleError(_0x341949,null));};exports[_0xad05('0x87')]=function(_0x384f08,_0x5fd106){return db[_0xad05('0x88')][_0xad05('0x64')]({'where':{'id':_0x384f08['params']['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x5fd106,null))[_0xad05('0x23')](function(_0xce7a95){if(_0xce7a95){return _0xce7a95[_0xad05('0x87')](_0x384f08['body'][_0xad05('0x71')],_[_0xad05('0x89')](_0x384f08[_0xad05('0x65')],[_0xad05('0x71'),'id'])||{});}})[_0xad05('0x23')](respondWithResult(_0x5fd106,null))['catch'](handleError(_0x5fd106,null));};exports['getInteractions']=function(_0x41967a,_0x248f5a){var _0x32813c={'raw':![],'where':{}};var _0xfc2fdc={};var _0x8272c4={'count':0x0,'rows':[]};return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x41967a['params']['id']}})['then'](handleEntityNotFound(_0x248f5a,null))['then'](function(_0x280094){if(_0x280094){_0xfc2fdc[_0xad05('0x51')]=_[_0xad05('0x4c')](db[_0xad05('0x88')][_0xad05('0x47')]);_0xfc2fdc[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0x41967a[_0xad05('0x4b')]);_0xfc2fdc[_0xad05('0x4d')]=_['intersection'](_0xfc2fdc[_0xad05('0x51')],_0xfc2fdc[_0xad05('0x4b')]);_0x32813c[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0xfc2fdc[_0xad05('0x51')],qs[_0xad05('0x63')](_0x41967a[_0xad05('0x4b')]['fields']));_0x32813c['attributes']=_0x32813c[_0xad05('0x4f')]['length']?_0x32813c[_0xad05('0x4f')]:_0xfc2fdc[_0xad05('0x51')];if(!_0x41967a['query']['hasOwnProperty'](_0xad05('0x75'))){_0x32813c[_0xad05('0x53')]=qs['limit'](_0x41967a[_0xad05('0x4b')][_0xad05('0x53')]);_0x32813c[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x41967a[_0xad05('0x4b')][_0xad05('0x1e')]);}_0x32813c[_0xad05('0x54')]=qs[_0xad05('0x55')](_0x41967a['query'][_0xad05('0x55')]);_0x32813c[_0xad05('0x58')]=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x41967a[_0xad05('0x4b')],_0xfc2fdc['filters']));_0x32813c[_0xad05('0x58')][_0xad05('0x6f')]=_0x280094['id'];if(_0x41967a['query'][_0xad05('0x57')]){_0x32813c[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x32813c[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x32813c[_0xad05('0x4f')],function(_0x1682d6){var _0x5b4959={};_0x5b4959[_0x1682d6]={'$like':'%'+_0x41967a[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x5b4959;})});}_0x32813c=_[_0xad05('0x5a')]({},_0x32813c,_0x41967a[_0xad05('0x5b')]);return db[_0xad05('0x88')][_0xad05('0x1d')]({'where':_0x32813c[_0xad05('0x58')]})[_0xad05('0x23')](function(_0x4f1192){_0x8272c4[_0xad05('0x1d')]=_0x4f1192;if(_0x41967a['query'][_0xad05('0x5c')]){_0x32813c[_0xad05('0x5d')]=[{'model':db[_0xad05('0x8a')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xad05('0x8b'),'attributes':['name','fullname',_0xad05('0x8c')],'required':![]},{'model':db[_0xad05('0x8d')],'as':_0xad05('0x8e'),'attributes':['id','name',_0xad05('0x8f')],'where':_0x41967a['query'][_0xad05('0x90')]?{'id':_0x41967a['query'][_0xad05('0x90')]}:undefined,'required':_0x41967a['query'][_0xad05('0x90')]?!![]:![]}];}return db[_0xad05('0x88')][_0xad05('0x5e')](_0x32813c);})[_0xad05('0x23')](function(_0x594263){_0x8272c4[_0xad05('0x5f')]=_0x594263;return _0x8272c4;});}})[_0xad05('0x23')](respondWithFilteredResult(_0x248f5a,_0x32813c))[_0xad05('0x60')](handleError(_0x248f5a,null));};exports[_0xad05('0x91')]=function addApplications(_0xb5c06,_0x2c8fb9){var _0x1e9e0f=_0xb5c06[_0xad05('0x6b')]['id'];var _0x22b8a8=_0xb5c06[_0xad05('0x65')];var _0xd88e98=0xc8;var _0x29351d=null;return db[_0xad05('0x92')]['transaction']({'isolationLevel':db[_0xad05('0x92')]['Transaction'][_0xad05('0x93')]['READ_COMMITTED']},function(_0x4831f2){return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x1e9e0f},'transaction':_0x4831f2})['then'](function(_0x517acb){if(_0x517acb){return db[_0xad05('0x94')][_0xad05('0x22')]({'where':{'MailAccountId':_0x1e9e0f},'transaction':_0x4831f2})['then'](function(){var _0x6ee337=_[_0xad05('0x4a')](_0x22b8a8,function(_0x3b3f95){_0x3b3f95[_0xad05('0x6f')]=_0x1e9e0f;return _0x3b3f95;});return db['MailApplication']['bulkCreate'](_0x6ee337,{'transaction':_0x4831f2});});}else{_0xd88e98=0x194;_0x29351d=[];}});})[_0xad05('0x23')](function(){if(_0xd88e98!==0x194){return db[_0xad05('0x94')]['findAndCountAll']({'where':{'MailAccountId':_0x1e9e0f},'order':_0xad05('0x95')})['then'](function(_0x520ebc){_0x29351d=_0x520ebc;});}})[_0xad05('0x60')](function(_0x2c0d96){_0xd88e98=0x1f4;logger[_0xad05('0x14')](_0x2c0d96['stack']);if(_0x2c0d96[_0xad05('0x29')]){delete _0x2c0d96[_0xad05('0x29')];}_0x29351d=_0x2c0d96;})[_0xad05('0x96')](function(){if(_0x29351d===null){_0x2c8fb9[_0xad05('0x1a')](_0xd88e98);}else{if(_0xd88e98===0x1f4){_0x2c8fb9[_0xad05('0x1b')](_0xd88e98)[_0xad05('0x2a')](_0x29351d);}else{_0x2c8fb9[_0xad05('0x1b')](_0xd88e98)[_0xad05('0x20')](_0x29351d);}}});};exports[_0xad05('0x97')]=function(_0x13dbc9,_0x49ac87){var _0x27fe31={};var _0x585718={};var _0x490a90;var _0x3207dc;return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0x13dbc9[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x49ac87,null))['then'](function(_0x1bc8d5){if(_0x1bc8d5){_0x490a90=_0x1bc8d5;_0x585718[_0xad05('0x51')]=_[_0xad05('0x4c')](db[_0xad05('0x94')][_0xad05('0x47')]);_0x585718[_0xad05('0x4b')]=_['keys'](_0x13dbc9['query']);_0x585718[_0xad05('0x4d')]=_['intersection'](_0x585718['model'],_0x585718[_0xad05('0x4b')]);_0x27fe31[_0xad05('0x4f')]=_[_0xad05('0x4e')](_0x585718[_0xad05('0x51')],qs[_0xad05('0x63')](_0x13dbc9[_0xad05('0x4b')][_0xad05('0x63')]));_0x27fe31[_0xad05('0x4f')]=_0x27fe31['attributes']['length']?_0x27fe31['attributes']:_0x585718[_0xad05('0x51')];_0x27fe31['order']=qs[_0xad05('0x55')](_0x13dbc9['query'][_0xad05('0x55')]);_0x27fe31[_0xad05('0x58')]=qs[_0xad05('0x4d')](_['pick'](_0x13dbc9[_0xad05('0x4b')],_0x585718[_0xad05('0x4d')]));if(_0x13dbc9[_0xad05('0x4b')][_0xad05('0x57')]){_0x27fe31['where']=_[_0xad05('0x5a')](_0x27fe31[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x27fe31[_0xad05('0x4f')],function(_0x37a384){var _0x28a25b={};_0x28a25b[_0x37a384]={'$like':'%'+_0x13dbc9[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x28a25b;})});}_0x27fe31=_[_0xad05('0x5a')]({},_0x27fe31,_0x13dbc9['options']);return _0x490a90[_0xad05('0x97')](_0x27fe31);}})[_0xad05('0x23')](function(_0x116f51){if(_0x116f51){_0x3207dc=_0x116f51[_0xad05('0x50')];if(!_0x13dbc9[_0xad05('0x4b')][_0xad05('0x52')]('nolimit')){_0x27fe31['limit']=qs[_0xad05('0x53')](_0x13dbc9[_0xad05('0x4b')][_0xad05('0x53')]);_0x27fe31['offset']=qs[_0xad05('0x1e')](_0x13dbc9['query'][_0xad05('0x1e')]);}return _0x490a90[_0xad05('0x97')](_0x27fe31);}})[_0xad05('0x23')](function(_0x15e395){if(_0x15e395){return _0x15e395?{'count':_0x3207dc,'rows':_0x15e395}:null;}})['then'](respondWithResult(_0x49ac87,null))[_0xad05('0x60')](handleError(_0x49ac87,null));};exports[_0xad05('0x98')]=function(_0x45cba2,_0x4993b2){var _0x46e6a8={'raw':!![],'where':{}};var _0x1b4fc9={};var _0x329e99={'count':0x0,'rows':[]};return db['MailAccount']['findOne']({'where':{'id':_0x45cba2[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4993b2,null))[_0xad05('0x23')](function(_0x18dc5e){if(_0x18dc5e){_0x1b4fc9[_0xad05('0x51')]=_['keys'](db[_0xad05('0x99')][_0xad05('0x47')]);_0x1b4fc9['query']=_[_0xad05('0x4c')](_0x45cba2[_0xad05('0x4b')]);_0x1b4fc9[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x1b4fc9[_0xad05('0x51')],_0x1b4fc9[_0xad05('0x4b')]);_0x46e6a8['attributes']=_[_0xad05('0x4e')](_0x1b4fc9[_0xad05('0x51')],qs[_0xad05('0x63')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x63')]));_0x46e6a8[_0xad05('0x4f')]=_0x46e6a8[_0xad05('0x4f')][_0xad05('0x50')]?_0x46e6a8[_0xad05('0x4f')]:_0x1b4fc9[_0xad05('0x51')];if(!_0x45cba2[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x46e6a8[_0xad05('0x53')]=qs[_0xad05('0x53')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x53')]);_0x46e6a8[_0xad05('0x1e')]=qs[_0xad05('0x1e')](_0x45cba2[_0xad05('0x4b')][_0xad05('0x1e')]);}_0x46e6a8['order']=qs['sort'](_0x45cba2['query'][_0xad05('0x55')]);_0x46e6a8['where']=qs[_0xad05('0x4d')](_[_0xad05('0x56')](_0x45cba2[_0xad05('0x4b')],_0x1b4fc9[_0xad05('0x4d')]));_0x46e6a8['where'][_0xad05('0x6f')]=_0x18dc5e['id'];if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x57')]){_0x46e6a8[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x46e6a8[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x46e6a8[_0xad05('0x4f')],function(_0x6c4da7){var _0x2e96a2={};_0x2e96a2[_0x6c4da7]={'$like':'%'+_0x45cba2[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x2e96a2;})});}if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x9a')]){var _0x173d48=_0x45cba2['query']['$gte'][_0xad05('0x9b')](',');var _0x1af9fb={};_0x1af9fb[_0x173d48[0x0]]={'$gte':moment(_0x173d48[0x1])[_0xad05('0x9c')]('YYYY-MM-DD\x20HH:mm:ss')};_0x46e6a8['where']=_['merge'](_0x46e6a8['where'],_0x1af9fb);}_0x46e6a8=_['merge']({},_0x46e6a8,_0x45cba2[_0xad05('0x5b')]);return db[_0xad05('0x99')][_0xad05('0x1d')]({'where':_0x46e6a8['where']})[_0xad05('0x23')](function(_0x321546){_0x329e99[_0xad05('0x1d')]=_0x321546;if(_0x45cba2[_0xad05('0x4b')]['includeAll']){_0x46e6a8[_0xad05('0x5d')]=[{'all':!![]}];}return db[_0xad05('0x99')][_0xad05('0x5e')](_0x46e6a8);})[_0xad05('0x23')](function(_0x561b01){if(_0x45cba2[_0xad05('0x4b')][_0xad05('0x9d')]==='true'){for(var _0x122fcc=0x0;_0x122fcc<_0x561b01[_0xad05('0x50')];_0x122fcc++){_0x561b01[_0x122fcc][_0xad05('0x65')]=juice(_0x561b01[_0x122fcc][_0xad05('0x65')]);}}_0x329e99[_0xad05('0x5f')]=_0x561b01;return _0x329e99;});}})['then'](respondWithFilteredResult(_0x4993b2,_0x46e6a8))[_0xad05('0x60')](handleError(_0x4993b2,null));};exports['send']=function(_0x4e55ea,_0x326612){var _0xebe1c6,_0x27b4cf={},_0x55e54a;if(_0x4e55ea[_0xad05('0x65')]['to']){_0x55e54a=_0x4e55ea['body']['to']['split'](',')[0x0];}return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x4e55ea[_0xad05('0x6b')]['id']},'include':[{'model':db['CmList'],'as':_0xad05('0x9e'),'include':[{'model':db[_0xad05('0x8a')],'as':_0xad05('0x9f'),'where':{'email':_0x55e54a},'limit':0x1,'order':[['updatedAt',_0xad05('0xa0')]]}]},{'model':db[_0xad05('0x44')],'as':'Smtp','raw':!![],'include':[{'model':db[_0xad05('0xa1')],'as':_0xad05('0xa1'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x326612,null))['then'](function(_0x433f29){if(!_0x433f29)return;_0xebe1c6=_0x433f29;if(!_0x433f29['Smtp'])throw new Error(_0xad05('0xa2'));if(_[_0xad05('0xa3')](_0x4e55ea['body']['from'])){_0x4e55ea['body']['from']=util[_0xad05('0x9c')]('%s\x20<%s>',_0x433f29['name'],_0x433f29[_0xad05('0x77')]||_0x433f29['Smtp'][_0xad05('0x37')]);}if(_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')]&&_0x4e55ea['body']['attachments'][_0xad05('0x50')]){for(var _0xf9fadb=0x0;_0xf9fadb<_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xad05('0x50')];_0xf9fadb+=0x1){_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xf9fadb]={'filename':_0x4e55ea['body']['attachments'][_0xf9fadb][_0xad05('0x29')],'path':path[_0xad05('0xa5')](config[_0xad05('0xa6')],_0xad05('0xa7'),_0x4e55ea[_0xad05('0x65')][_0xad05('0xa4')][_0xf9fadb][_0xad05('0xa8')])};}}var _0x3bd7fb=_0x433f29[_0xad05('0xa9')]();return respondWithRpcPromise(_0xad05('0xaa'),'sendMail',{'account':_0x3bd7fb,'message':_0x4e55ea[_0xad05('0x65')]});})[_0xad05('0x23')](function(_0x15b2fa){if(!_0x15b2fa)return;_0x27b4cf=_0x15b2fa;if(!_0xebe1c6[_0xad05('0x9e')])throw new Error('List\x20not\x20found');if(_0xebe1c6['List'][_0xad05('0x9f')][_0xad05('0x50')])return _0xebe1c6[_0xad05('0x9e')][_0xad05('0x9f')][0x0];return db['CmContact'][_0xad05('0x6d')](_[_0xad05('0x9')](_0x4e55ea[_0xad05('0x65')],{'firstName':_0x4e55ea[_0xad05('0x65')]['to'],'email':_0x4e55ea[_0xad05('0x65')]['to'],'phone':_0x4e55ea[_0xad05('0x65')]['to'],'ListId':_0xebe1c6[_0xad05('0x78')]}));})[_0xad05('0x23')](function(_0x22eeb2){if(!_0x22eeb2)return;var _0x4d3e2c={'UserId':_0x4e55ea[_0xad05('0x37')]['id'],'ContactId':_0x22eeb2['id'],'MailAccountId':_0xebe1c6['id'],'inReplyTo':_0x27b4cf[_0xad05('0xab')],'to':_0x4e55ea['body'][_0xad05('0xac')],'cc':_0x4e55ea[_0xad05('0x65')]['cc'],'subject':_0x4e55ea[_0xad05('0x65')][_0xad05('0xad')],'attach':_0x4e55ea[_0xad05('0x65')]['attach'],'firstMsgDirection':_0xad05('0xae'),'lastMsgAt':moment()[_0xad05('0x9c')](_0xad05('0xaf')),'lastMsgDirection':_0xad05('0xae'),'Messages':[_[_0xad05('0x5a')](_0x4e55ea['body'],{'messageId':_0x27b4cf['messageId'],'sentAt':moment()[_0xad05('0x9c')](_0xad05('0xaf')),'read':!![],'MailAccountId':_0xebe1c6['id'],'UserId':_0x4e55ea[_0xad05('0x37')]['id'],'ContactId':_0x22eeb2['id']})]};if(_0x4e55ea[_0xad05('0x65')][_0xad05('0xb0')]){_0x4d3e2c=_['merge'](_0x4d3e2c,_0x4e55ea[_0xad05('0x65')][_0xad05('0xb0')]);}return db[_0xad05('0x88')]['create'](_0x4d3e2c,{'include':[{'model':db['MailMessage'],'as':_0xad05('0xb1')}]});})[_0xad05('0x23')](respondWithResult(_0x326612,null))[_0xad05('0x60')](handleError(_0x326612,null));};exports[_0xad05('0xb2')]=function(_0x50a99b,_0x41cf0e){return db[_0xad05('0x46')]['find']({'where':{'id':_0x50a99b['params']['id']},'include':[{'model':db[_0xad05('0x44')],'as':_0xad05('0x42'),'raw':!![],'include':[{'model':db[_0xad05('0xa1')],'as':'CloudProvider','raw':!![]}]}]})[_0xad05('0x23')](handleEntityNotFound(_0x41cf0e,null))[_0xad05('0x23')](function(_0x19fe23){if(!_0x19fe23[_0xad05('0x42')])return;var _0x44da13=_0x19fe23[_0xad05('0xa9')]();return respondWithRpcPromise(_0xad05('0xb3'),'verifySmtp',{'account':_0x44da13});})[_0xad05('0x23')](respondWithResult(_0x41cf0e,null))[_0xad05('0x60')](handleError(_0x41cf0e,null));};exports[_0xad05('0x22')]=function(_0x5c53ca,_0x157b9a){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x5c53ca[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x157b9a,null))[_0xad05('0x23')](function(_0x491931){if(_0x491931&&_0x491931[_0xad05('0x69')]){throw new db[(_0xad05('0xb4'))][(_0xad05('0xb5'))](_0xad05('0xb6'));}return _0x491931;})[_0xad05('0x23')](removeEntity(_0x157b9a,null))[_0xad05('0x60')](handleError(_0x157b9a,null));};exports['addAgents']=function(_0x527532,_0x31b4de){return db[_0xad05('0x46')][_0xad05('0x64')]({'where':{'id':_0x527532[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x31b4de,null))[_0xad05('0x23')](function(_0x1fe68c){if(_0x1fe68c){return _0x1fe68c[_0xad05('0xb7')](_0x527532[_0xad05('0x65')]['ids'],_[_0xad05('0x89')](_0x527532['body'],[_0xad05('0x71'),'id'])||{})[_0xad05('0xb8')](function(_0x270a5e){for(var _0x24639b=0x0;_0x24639b<_0x527532['body'][_0xad05('0x71')][_0xad05('0x50')];_0x24639b+=0x1){socket['emit'](_0xad05('0xb9'),{'UserId':Number(_0x527532['body']['ids'][_0x24639b]),'MailAccountId':Number(_0x527532[_0xad05('0x6b')]['id'])});}return _0x270a5e;});}})[_0xad05('0x23')](respondWithResult(_0x31b4de,null))['catch'](handleError(_0x31b4de,null));};exports['removeAgents']=function(_0x27604d,_0x4d824f){return db['MailAccount'][_0xad05('0x64')]({'where':{'id':_0x27604d[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x4d824f,null))[_0xad05('0x23')](function(_0x4c9150){if(_0x4c9150){return _0x4c9150[_0xad05('0xba')](_0x27604d[_0xad05('0x4b')][_0xad05('0x71')])['then'](function(){if(_[_0xad05('0xbb')](_0x27604d[_0xad05('0x4b')][_0xad05('0x71')])){for(var _0x20504d=0x0;_0x20504d<_0x27604d[_0xad05('0x4b')]['ids']['length'];_0x20504d+=0x1){socket[_0xad05('0xbc')]('userMailAccount:remove',{'UserId':Number(_0x27604d[_0xad05('0x4b')][_0xad05('0x71')][_0x20504d]),'MailAccountId':Number(_0x27604d[_0xad05('0x6b')]['id'])});}}else{socket[_0xad05('0xbc')](_0xad05('0xbd'),{'UserId':Number(_0x27604d['query'][_0xad05('0x71')]),'MailAccountId':Number(_0x27604d[_0xad05('0x6b')]['id'])});}});}})[_0xad05('0x23')](respondWithStatusCode(_0x4d824f,null))[_0xad05('0x60')](handleError(_0x4d824f,null));};exports[_0xad05('0xbe')]=function(_0xa0ee4a,_0x411d69){var _0x2105ca={};var _0x1e4c46={};var _0x36308f;var _0x1071ab;return db[_0xad05('0x46')][_0xad05('0x74')]({'where':{'id':_0xa0ee4a[_0xad05('0x6b')]['id']}})[_0xad05('0x23')](handleEntityNotFound(_0x411d69,null))[_0xad05('0x23')](function(_0x1b091b){if(_0x1b091b){_0x36308f=_0x1b091b;_0x1e4c46['model']=_[_0xad05('0x4c')](db['User'][_0xad05('0x47')]);_0x1e4c46[_0xad05('0x4b')]=_[_0xad05('0x4c')](_0xa0ee4a[_0xad05('0x4b')]);_0x1e4c46[_0xad05('0x4d')]=_[_0xad05('0x4e')](_0x1e4c46['model'],_0x1e4c46[_0xad05('0x4b')]);_0x2105ca['attributes']=_[_0xad05('0x4e')](_0x1e4c46[_0xad05('0x51')],qs['fields'](_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x63')]));_0x2105ca['attributes']=_0x2105ca[_0xad05('0x4f')][_0xad05('0x50')]?_0x2105ca[_0xad05('0x4f')]:_0x1e4c46[_0xad05('0x51')];_0x2105ca[_0xad05('0x54')]=qs['sort'](_0xa0ee4a[_0xad05('0x4b')]['sort']);_0x2105ca[_0xad05('0x58')]=qs['filters'](_[_0xad05('0x56')](_0xa0ee4a[_0xad05('0x4b')],_0x1e4c46[_0xad05('0x4d')]));if(_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x57')]){_0x2105ca[_0xad05('0x58')]=_[_0xad05('0x5a')](_0x2105ca[_0xad05('0x58')],{'$or':_[_0xad05('0x4a')](_0x2105ca[_0xad05('0x4f')],function(_0x2c3dd5){var _0x2d77f3={};_0x2d77f3[_0x2c3dd5]={'$like':'%'+_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x57')]+'%'};return _0x2d77f3;})});}_0x2105ca=_[_0xad05('0x5a')]({},_0x2105ca,_0xa0ee4a['options']);return _0x36308f[_0xad05('0xbe')](_0x2105ca);}})[_0xad05('0x23')](function(_0x9c1813){if(_0x9c1813){_0x1071ab=_0x9c1813[_0xad05('0x50')];if(!_0xa0ee4a[_0xad05('0x4b')][_0xad05('0x52')](_0xad05('0x75'))){_0x2105ca[_0xad05('0x53')]=qs[_0xad05('0x53')](_0xa0ee4a[_0xad05('0x4b')]['limit']);_0x2105ca['offset']=qs[_0xad05('0x1e')](_0xa0ee4a[_0xad05('0x4b')]['offset']);}return _0x36308f[_0xad05('0xbe')](_0x2105ca);}})[_0xad05('0x23')](function(_0x86fb0c){if(_0x86fb0c){return _0x86fb0c?{'count':_0x1071ab,'rows':_0x86fb0c}:null;}})[_0xad05('0x23')](respondWithResult(_0x411d69,null))[_0xad05('0x60')](handleError(_0x411d69,null));};
\ No newline at end of file
index 3ffff83..6b4124d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8710=['update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0xf0088a,_0x4b9052){var _0x3ed444=function(_0x3ca9fd){while(--_0x3ca9fd){_0xf0088a['push'](_0xf0088a['shift']());}};_0x3ed444(++_0x4b9052);}(_0x8710,0x68));var _0x0871=function(_0xe40aad,_0x3f40cf){_0xe40aad=_0xe40aad-0x0;var _0x1922dd=_0x8710[_0xe40aad];return _0x1922dd;};'use strict';var EventEmitter=require(_0x0871('0x0'));var MailAccount=require(_0x0871('0x1'))['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0x0871('0x2')](0x0);var events={'afterCreate':_0x0871('0x3'),'afterUpdate':_0x0871('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2ac8cf){return function(_0x825b5,_0x48a450,_0x3bd909){MailAccountEvents['emit'](_0x2ac8cf+':'+_0x825b5['id'],_0x825b5);MailAccountEvents[_0x0871('0x5')](_0x2ac8cf,_0x825b5);_0x3bd909(null);};}for(var e in events){if(events[_0x0871('0x6')](e)){var event=events[e];MailAccount[_0x0871('0x7')](e,emitEvent(event));}}module[_0x0871('0x8')]=MailAccountEvents;
\ No newline at end of file
+var _0xd70e=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','events'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xd70e,0x157));var _0xed70=function(_0x42d91a,_0x11cf2b){_0x42d91a=_0x42d91a-0x0;var _0x5dab1d=_0xd70e[_0x42d91a];return _0x5dab1d;};'use strict';var EventEmitter=require(_0xed70('0x0'));var MailAccount=require('../../mysqldb')['db']['MailAccount'];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xed70('0x1')](0x0);var events={'afterCreate':_0xed70('0x2'),'afterUpdate':_0xed70('0x3'),'afterDestroy':_0xed70('0x4')};function emitEvent(_0x269875){return function(_0x411dcd,_0x289ce9,_0x54f657){MailAccountEvents[_0xed70('0x5')](_0x269875+':'+_0x411dcd['id'],_0x411dcd);MailAccountEvents[_0xed70('0x5')](_0x269875,_0x411dcd);_0x54f657(null);};}for(var e in events){if(events[_0xed70('0x6')](e)){var event=events[e];MailAccount[_0xed70('0x7')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index 53d71cd..83e61ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc933=['host','Smtp','port','secure','authentication','modernAuthentication','CloudProvider','auth','OAuth2','user','data5','pass','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider','custom','service'];(function(_0x2d4421,_0x15a84f){var _0x2d3b01=function(_0xb9e94c){while(--_0xb9e94c){_0x2d4421['push'](_0x2d4421['shift']());}};_0x2d3b01(++_0x15a84f);}(_0xc933,0x188));var _0x3c93=function(_0x1339e9,_0x1940d6){_0x1339e9=_0x1339e9-0x0;var _0xdcf12a=_0xc933[_0x1339e9];return _0xdcf12a;};'use strict';var attributes=require(_0x3c93('0x0'));module[_0x3c93('0x1')]=function(_0x4b3460){return _0x4b3460[_0x3c93('0x2')](_0x3c93('0x3'),attributes,{'tableName':_0x3c93('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x5d4c34=this;var _0x2ed1c1={'id':_0x5d4c34['id'],'tls':{'rejectUnauthorized':![]}};if(_0x5d4c34[_0x3c93('0x5')]!==_0x3c93('0x6')){_0x2ed1c1[_0x3c93('0x7')]=_0x5d4c34[_0x3c93('0x5')];}else{_0x2ed1c1[_0x3c93('0x8')]=_0x5d4c34[_0x3c93('0x9')][_0x3c93('0x8')];_0x2ed1c1[_0x3c93('0xa')]=_0x5d4c34[_0x3c93('0x9')][_0x3c93('0xa')];_0x2ed1c1[_0x3c93('0xb')]=_0x5d4c34[_0x3c93('0x9')][_0x3c93('0xb')];}if(_0x5d4c34[_0x3c93('0x9')][_0x3c93('0xc')]){if(_0x5d4c34[_0x3c93('0x9')][_0x3c93('0xd')]){if(!_0x5d4c34['Smtp'][_0x3c93('0xe')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x2ed1c1[_0x3c93('0xf')]={'type':_0x3c93('0x10'),'user':_0x5d4c34[_0x3c93('0x9')][_0x3c93('0x11')],'accessToken':_0x5d4c34[_0x3c93('0x9')]['CloudProvider'][_0x3c93('0x12')]};}else{_0x2ed1c1[_0x3c93('0xf')]={'user':_0x5d4c34[_0x3c93('0x9')][_0x3c93('0x11')],'pass':_0x5d4c34['Smtp'][_0x3c93('0x13')]};}}return _0x2ed1c1;}}});};
\ No newline at end of file
+var _0x3858=['custom','host','port','Smtp','secure','modernAuthentication','CloudProvider','Cloud\x20Provider\x20configuration\x20not\x20found','OAuth2','data5','auth','user','./mailAccount.attributes','exports','define','MailAccount','mail_accounts','provider'];(function(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0x3858,0x12c));var _0x8385=function(_0x17a24b,_0x3b5681){_0x17a24b=_0x17a24b-0x0;var _0x13e323=_0x3858[_0x17a24b];return _0x13e323;};'use strict';var attributes=require(_0x8385('0x0'));module[_0x8385('0x1')]=function(_0x467c8d){return _0x467c8d[_0x8385('0x2')](_0x8385('0x3'),attributes,{'tableName':_0x8385('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x1f0382=this;var _0x1d4a89={'id':_0x1f0382['id'],'tls':{'rejectUnauthorized':![]}};if(_0x1f0382[_0x8385('0x5')]!==_0x8385('0x6')){_0x1d4a89['service']=_0x1f0382['provider'];}else{_0x1d4a89[_0x8385('0x7')]=_0x1f0382['Smtp'][_0x8385('0x7')];_0x1d4a89[_0x8385('0x8')]=_0x1f0382[_0x8385('0x9')][_0x8385('0x8')];_0x1d4a89[_0x8385('0xa')]=_0x1f0382['Smtp']['secure'];}if(_0x1f0382['Smtp']['authentication']){if(_0x1f0382['Smtp'][_0x8385('0xb')]){if(!_0x1f0382[_0x8385('0x9')][_0x8385('0xc')])throw new Error(_0x8385('0xd'));_0x1d4a89['auth']={'type':_0x8385('0xe'),'user':_0x1f0382['Smtp']['user'],'accessToken':_0x1f0382['Smtp'][_0x8385('0xc')][_0x8385('0xf')]};}else{_0x1d4a89[_0x8385('0x10')]={'user':_0x1f0382['Smtp'][_0x8385('0x11')],'pass':_0x1f0382[_0x8385('0x9')]['pass']};}}return _0x1d4a89;}}});};
\ No newline at end of file
index e18ca98..a264f16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['MailApplication','MailServerOut','Smtp','CloudProvider','get','omit','Applications','getSmtpOptions','list','applications','orderBy','priority','asc','autoclose','push','length','close','*,*,*,*','Contacts','from','create','List\x20not\x20found','contact','messageId','generate','subject','attach','format','MailInteraction','MailMessage','Messages','inReplyTo','spread','update','YYYY-MM-DD\x20HH:mm:ss','interaction','attachments','originTo','originCc','bcc','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','unshift','agent','name','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','debug','request\x20sent','error','code','message','result','catch','GetMailAccount','findAll','options','raw','where','attributes','limit','include','map','model','stringify','ShowMailAccount','MailAccount','find','setDataValue','smtpOptions','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes','createdAt','updatedAt','CompanyId','ListId','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','List','DESC'];(function(_0x1eae48,_0x17810d){var _0x39735a=function(_0x14c3dc){while(--_0x14c3dc){_0x1eae48['push'](_0x1eae48['shift']());}};_0x39735a(++_0x17810d);}(_0xba34,0x119));var _0x4ba3=function(_0x4a8688,_0x511dfa){_0x4a8688=_0x4a8688-0x0;var _0x284d0c=_0xba34[_0x4a8688];return _0x284d0c;};'use strict';var _=require(_0x4ba3('0x0'));var moment=require(_0x4ba3('0x1'));var BPromise=require(_0x4ba3('0x2'));var rs=require(_0x4ba3('0x3'));var Redis=require(_0x4ba3('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../../config/logger')('rpc');var config=require(_0x4ba3('0x5'));var jayson=require(_0x4ba3('0x6'));var client=jayson[_0x4ba3('0x7')][_0x4ba3('0x8')]({'port':0x232c});config[_0x4ba3('0x9')]=_[_0x4ba3('0xa')](config[_0x4ba3('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x4ba3('0xb'))(new Redis(config[_0x4ba3('0x9')]));require(_0x4ba3('0xc'))[_0x4ba3('0xd')](socket);function respondWithRpcPromise(_0x380d60,_0xcf1ec3,_0x292f58){return new BPromise(function(_0x3f653c,_0x2ed106){return client[_0x4ba3('0xe')](_0x380d60,_0x292f58)[_0x4ba3('0xf')](function(_0x51edab){logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0xcf1ec3,'request\x20sent');logger[_0x4ba3('0x12')]('MailAccount,\x20%s,\x20%s,\x20%s',_0xcf1ec3,_0x4ba3('0x13'),JSON['stringify'](_0x51edab));if(_0x51edab[_0x4ba3('0x14')]){if(_0x51edab[_0x4ba3('0x14')][_0x4ba3('0x15')]===0x1f4){logger[_0x4ba3('0x14')](_0x4ba3('0x11'),_0xcf1ec3,_0x51edab[_0x4ba3('0x14')][_0x4ba3('0x16')]);return _0x2ed106(_0x51edab[_0x4ba3('0x14')][_0x4ba3('0x16')]);}logger[_0x4ba3('0x14')](_0x4ba3('0x11'),_0xcf1ec3,_0x51edab[_0x4ba3('0x14')][_0x4ba3('0x16')]);return _0x3f653c(_0x51edab[_0x4ba3('0x14')][_0x4ba3('0x16')]);}else{logger[_0x4ba3('0x10')]('MailAccount,\x20%s,\x20%s',_0xcf1ec3,_0x4ba3('0x13'));_0x3f653c(_0x51edab[_0x4ba3('0x17')][_0x4ba3('0x16')]);}})[_0x4ba3('0x18')](function(_0x556290){logger[_0x4ba3('0x14')](_0x4ba3('0x11'),_0xcf1ec3,_0x556290);_0x2ed106(_0x556290);});});}exports[_0x4ba3('0x19')]=function(_0x1e2ce5){var _0x184332=this;return new Promise(function(_0x125944,_0x4b2791){return db['MailAccount'][_0x4ba3('0x1a')]({'raw':_0x1e2ce5['options']?_0x1e2ce5[_0x4ba3('0x1b')][_0x4ba3('0x1c')]===undefined?!![]:![]:!![],'where':_0x1e2ce5[_0x4ba3('0x1b')]?_0x1e2ce5[_0x4ba3('0x1b')][_0x4ba3('0x1d')]||null:null,'attributes':_0x1e2ce5[_0x4ba3('0x1b')]?_0x1e2ce5['options'][_0x4ba3('0x1e')]||null:null,'limit':_0x1e2ce5[_0x4ba3('0x1b')]?_0x1e2ce5['options'][_0x4ba3('0x1f')]||null:null,'include':_0x1e2ce5['options']?_0x1e2ce5[_0x4ba3('0x1b')][_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0x1e2ce5[_0x4ba3('0x1b')][_0x4ba3('0x20')],function(_0xe29a49){return{'model':db[_0xe29a49[_0x4ba3('0x22')]],'as':_0xe29a49['as'],'attributes':_0xe29a49[_0x4ba3('0x1e')],'include':_0xe29a49[_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0xe29a49['include'],function(_0x252f37){return{'model':db[_0x252f37[_0x4ba3('0x22')]],'as':_0x252f37['as'],'attributes':_0x252f37[_0x4ba3('0x1e')],'include':_0x252f37['include']?_[_0x4ba3('0x21')](_0x252f37[_0x4ba3('0x20')],function(_0x44d78c){return{'model':db[_0x44d78c['model']],'as':_0x44d78c['as'],'attributes':_0x44d78c[_0x4ba3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x4ba3('0xf')](function(_0x34ecb4){logger[_0x4ba3('0x10')]('GetMailAccount',_0x1e2ce5);logger['debug'](_0x4ba3('0x19'),_0x1e2ce5,JSON[_0x4ba3('0x23')](_0x34ecb4));_0x125944(_0x34ecb4);})[_0x4ba3('0x18')](function(_0x19f039){logger[_0x4ba3('0x14')](_0x4ba3('0x19'),_0x19f039['message'],_0x1e2ce5);_0x4b2791(_0x184332[_0x4ba3('0x14')](0x1f4,_0x19f039[_0x4ba3('0x16')]));});});};exports[_0x4ba3('0x24')]=function(_0xbf95b3){var _0x2a6757=this;return new Promise(function(_0x1a7a2c,_0x457236){return db[_0x4ba3('0x25')][_0x4ba3('0x26')]({'raw':_0xbf95b3[_0x4ba3('0x1b')]?_0xbf95b3['options']['raw']===undefined?!![]:![]:!![],'where':_0xbf95b3['options']?_0xbf95b3[_0x4ba3('0x1b')][_0x4ba3('0x1d')]||null:null,'attributes':_0xbf95b3[_0x4ba3('0x1b')]?_0xbf95b3[_0x4ba3('0x1b')][_0x4ba3('0x1e')]||null:null,'include':_0xbf95b3[_0x4ba3('0x1b')]?_0xbf95b3[_0x4ba3('0x1b')][_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0xbf95b3[_0x4ba3('0x1b')][_0x4ba3('0x20')],function(_0x3439cb){return{'model':db[_0x3439cb['model']],'as':_0x3439cb['as'],'attributes':_0x3439cb[_0x4ba3('0x1e')],'include':_0x3439cb[_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0x3439cb['include'],function(_0x188f8c){return{'model':db[_0x188f8c['model']],'as':_0x188f8c['as'],'attributes':_0x188f8c[_0x4ba3('0x1e')],'include':_0x188f8c[_0x4ba3('0x20')]?_[_0x4ba3('0x21')](_0x188f8c[_0x4ba3('0x20')],function(_0xf892e1){return{'model':db[_0xf892e1[_0x4ba3('0x22')]],'as':_0xf892e1['as'],'attributes':_0xf892e1['attributes']};}):[]};}):[]};}):[]:[]})[_0x4ba3('0xf')](function(_0x3cf56c){if(_0xbf95b3[_0x4ba3('0x1b')]['smtp']===!![])_0x3cf56c[_0x4ba3('0x27')](_0x4ba3('0x28'),_0x3cf56c['getSmtpOptions']());logger[_0x4ba3('0x10')]('ShowMailAccount',_0xbf95b3);logger['debug'](_0x4ba3('0x24'),_0xbf95b3,JSON[_0x4ba3('0x23')](_0x3cf56c));_0x1a7a2c(_0x3cf56c);})[_0x4ba3('0x18')](function(_0x2b14e1){logger[_0x4ba3('0x14')]('ShowMailAccount',_0x2b14e1[_0x4ba3('0x16')],_0xbf95b3);_0x457236(_0x2a6757[_0x4ba3('0x14')](0x1f4,_0x2b14e1[_0x4ba3('0x16')]));});});};exports[_0x4ba3('0x29')]=function(_0xab7983){var _0x2acc92=this;return new Promise(function(_0x349af4,_0x2577be){var _0x553475={'body':_0xab7983[_0x4ba3('0x2a')],'channel':_0x4ba3('0x2b')};var _0x3cb07f=_[_0x4ba3('0x2c')](_[_0x4ba3('0x2d')](db[_0x4ba3('0x2e')][_0x4ba3('0x2f')]),[_0x4ba3('0x30'),_0x4ba3('0x31'),_0x4ba3('0x32'),_0x4ba3('0x33')]);var _0x1c58d2=![];if(_0xab7983[_0x4ba3('0x2a')]['id']){delete _0xab7983[_0x4ba3('0x2a')]['id'];}if(_['isNil'](_0xab7983['body']['from'])){return _0x2577be(_0x2acc92['error'](0x1f4,'from\x20is\x20mandatory'));}if(_[_0x4ba3('0x34')](_0xab7983['body'][_0x4ba3('0x2a')])||_0xab7983['body'][_0x4ba3('0x2a')]===''){return _0x2577be(_0x2acc92[_0x4ba3('0x14')](0x1f4,_0x4ba3('0x35')));}if(_[_0x4ba3('0x34')](_0xab7983[_0x4ba3('0x2a')]['mapKey'])){return _0x2577be(_0x2acc92[_0x4ba3('0x14')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3cb07f));}if(!_[_0x4ba3('0x36')](_0x3cb07f,_0xab7983['body'][_0x4ba3('0x37')])){return _0x2577be(_0x2acc92[_0x4ba3('0x14')](0x1f4,_0x4ba3('0x38')+_0x3cb07f));}var _0x261a5e={};_0x261a5e[_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x37')]]=_0xab7983[_0x4ba3('0x2a')]['from'];return db[_0x4ba3('0x25')][_0x4ba3('0x26')]({'where':{'id':_0xab7983[_0x4ba3('0x39')]['id']},'include':[{'model':db[_0x4ba3('0x3a')],'as':_0x4ba3('0x3b'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x261a5e,'limit':0x1,'order':[[_0x4ba3('0x31'),_0x4ba3('0x3c')]]}]},{'model':db[_0x4ba3('0x3d')],'as':'Applications'},{'model':db[_0x4ba3('0x3e')],'as':_0x4ba3('0x3f'),'include':[{'model':db[_0x4ba3('0x40')],'as':'CloudProvider'}]}]})['then'](function(_0x34dc04){if(_0x34dc04&&_0x34dc04['List']){var _0x439acf=_0x34dc04[_0x4ba3('0x41')]({'plain':!![]});_0x553475[_0x4ba3('0x39')]=_[_0x4ba3('0x42')](_0x439acf,[_0x4ba3('0x43'),_0x4ba3('0x3b')]);_0x553475['account'][_0x4ba3('0x28')]=_0x34dc04[_0x4ba3('0x44')]();_0x553475['applications']=_0x439acf[_0x4ba3('0x43')];_0x553475[_0x4ba3('0x45')]=_0x439acf[_0x4ba3('0x3b')];_0x553475[_0x4ba3('0x46')]=_[_0x4ba3('0x47')](_0x553475['applications'],[_0x4ba3('0x48')],[_0x4ba3('0x49')]);if(_0x553475['account']&&_0x553475[_0x4ba3('0x39')][_0x4ba3('0x4a')]){_0x553475[_0x4ba3('0x46')][_0x4ba3('0x4b')]({'id':0x0,'priority':_0x553475[_0x4ba3('0x46')][_0x4ba3('0x4c')]+0x1,'app':_0x4ba3('0x4d'),'appdata':_0x4ba3('0x4a'),'interval':_0x4ba3('0x4e')});}if(_0x553475[_0x4ba3('0x39')][_0x4ba3('0x43')]){delete _0x553475[_0x4ba3('0x39')][_0x4ba3('0x43')];}if(_0x553475[_0x4ba3('0x39')][_0x4ba3('0x3b')]){delete _0x553475['account']['List'];}if(_0x439acf['List'][_0x4ba3('0x4f')][_0x4ba3('0x4c')]){return _0x439acf[_0x4ba3('0x3b')][_0x4ba3('0x4f')][0x0];}var _0x40af1d=_['defaults'](_0xab7983[_0x4ba3('0x2a')],{'firstName':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x50')],'ListId':_0x439acf[_0x4ba3('0x33')]});_0x40af1d[_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x37')]]=_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x50')];return db[_0x4ba3('0x2e')][_0x4ba3('0x51')](_0x40af1d);}else{throw new Error(_0x4ba3('0x52'));}})[_0x4ba3('0xf')](function(_0x317b9f){_0x553475[_0x4ba3('0x53')]=_0x317b9f;if(_0x317b9f){if(!_0xab7983['body'][_0x4ba3('0x16')][_0x4ba3('0x54')]){_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x54')]=rs[_0x4ba3('0x55')]()+'\x20'+_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')]['from'];}var _0x8ea419={'ContactId':_0x317b9f['id'],'MailAccountId':_0xab7983[_0x4ba3('0x39')]['id'],'inReplyTo':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x54')],'to':_0xab7983['body'][_0x4ba3('0x16')][_0x4ba3('0x50')],'cc':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')]['cc'],'subject':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x56')],'attach':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x57')],'lastMsgAt':moment()[_0x4ba3('0x58')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'};return db[_0x4ba3('0x59')][_0x4ba3('0x26')]({'where':{'closed':![],'MailAccountId':_0xab7983[_0x4ba3('0x39')]['id']},'include':[{'model':db[_0x4ba3('0x5a')],'as':_0x4ba3('0x5b'),'attributes':[_0x4ba3('0x54')],'where':{'messageId':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x5c')]}}]})[_0x4ba3('0xf')](function(_0x1afc5e){if(_0x1afc5e){return[_0x1afc5e,![]];}return db['MailInteraction'][_0x4ba3('0x51')](_0x8ea419)[_0x4ba3('0xf')](function(_0x55c03c){return[_0x55c03c,!![]];});});}else{throw new Error('Contact\x20not\x20found');}})[_0x4ba3('0x5d')](function(_0x296bf6,_0x5c7c2f){if(_0x296bf6){_0x1c58d2=_0x5c7c2f;if(!_0x5c7c2f){return _0x296bf6[_0x4ba3('0x5e')]({'inReplyTo':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')]['messageId'],'to':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x50')],'cc':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')]['cc'],'subject':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x56')],'attach':_0x296bf6[_0x4ba3('0x57')]?_0x296bf6[_0x4ba3('0x57')]:_0xab7983['body'][_0x4ba3('0x16')][_0x4ba3('0x57')],'substatus':null,'substatusAt':moment()[_0x4ba3('0x58')](_0x4ba3('0x5f')),'lastMsgAt':moment()[_0x4ba3('0x58')](_0x4ba3('0x5f')),'lastMsgDirection':'in'});}else{return _0x296bf6;}}})[_0x4ba3('0xf')](function(_0x424477){_0x553475['interaction']=_0x424477['get']({'plain':!![]});_0x553475[_0x4ba3('0x60')]['created']=_0x1c58d2;return db[_0x4ba3('0x5a')][_0x4ba3('0x51')]({'body':_0xab7983[_0x4ba3('0x2a')]['body'],'MailAccountId':_0xab7983[_0x4ba3('0x39')]['id'],'MailInteractionId':_0x424477['id'],'direction':'in','ContactId':_0x553475[_0x4ba3('0x53')]['id'],'messageId':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x54')],'from':_0xab7983['body'][_0x4ba3('0x16')][_0x4ba3('0x50')],'to':_0xab7983['body'][_0x4ba3('0x16')]['to'],'cc':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')]['cc'],'subject':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x56')],'attach':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x57')],'Attachments':_0xab7983['body'][_0x4ba3('0x16')][_0x4ba3('0x61')],'originTo':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x62')],'originCc':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x63')],'bcc':_0xab7983[_0x4ba3('0x2a')][_0x4ba3('0x16')][_0x4ba3('0x64')],'ChatWebsiteId':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x65')]||null,'originChannel':_0xab7983[_0x4ba3('0x2a')]['message'][_0x4ba3('0x66')]||_0x4ba3('0x67'),'ChatOfflineMessageId':_0xab7983['body']['message'][_0x4ba3('0x68')]||null},{'include':[{'model':db[_0x4ba3('0x69')],'as':_0x4ba3('0x6a')}]});})[_0x4ba3('0xf')](function(_0x37b966){_0x553475[_0x4ba3('0x16')]=_0x37b966;if(_0x553475[_0x4ba3('0x60')][_0x4ba3('0x6b')]){return db['User'][_0x4ba3('0x26')]({'attributes':['id','name'],'where':{'id':_0x553475[_0x4ba3('0x60')][_0x4ba3('0x6b')]}})[_0x4ba3('0xf')](function(_0x3c3638){if(_0x3c3638){_0x553475[_0x4ba3('0x46')][_0x4ba3('0x6c')]({'id':0x0,'priority':0x0,'app':_0x4ba3('0x6d'),'appdata':_0x3c3638[_0x4ba3('0x6e')]+','+(_0x553475['account'][_0x4ba3('0x6f')]||0xa),'interval':_0x4ba3('0x4e')});}return respondWithRpcPromise(_0x4ba3('0x70'),'startRouting',_0x553475);});}return respondWithRpcPromise(_0x4ba3('0x70'),_0x4ba3('0x71'),_0x553475);})[_0x4ba3('0xf')](function(_0x39d428){_0x349af4(_0x39d428);})[_0x4ba3('0x18')](function(_0x2569bc){_0x2577be(_0x2acc92[_0x4ba3('0x14')](0x1f4,_0x2569bc['message']));});});};
\ No newline at end of file
+var _0xef0f=['Applications','MailServerOut','CloudProvider','get','omit','smtpOptions','list','applications','orderBy','priority','asc','autoclose','push','*,*,*,*','length','create','List\x20not\x20found','contact','messageId','generate','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailInteraction','MailMessage','Messages','inReplyTo','Contact\x20not\x20found','spread','update','subject','interaction','created','originTo','bcc','ChatWebsiteId','Email','ChatOfflineMessageId','Attachment','Attachments','UserId','name','waitForTheAssignedAgent','Start','startRouting','lodash','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','localhost','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','MailAccount','findAll','options','attributes','limit','include','map','model','find','where','setDataValue','getSmtpOptions','ShowMailAccount','body','mail','difference','keys','rawAttributes','createdAt','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','CmList','List','Contacts','MailApplication'];(function(_0x5f4b06,_0x1e2b0b){var _0x470874=function(_0x27836e){while(--_0x27836e){_0x5f4b06['push'](_0x5f4b06['shift']());}};_0x470874(++_0x1e2b0b);}(_0xef0f,0x168));var _0xfef0=function(_0x91d6b9,_0x10064a){_0x91d6b9=_0x91d6b9-0x0;var _0x4da36a=_0xef0f[_0x91d6b9];return _0x4da36a;};'use strict';var _=require(_0xfef0('0x0'));var moment=require('moment');var BPromise=require(_0xfef0('0x1'));var rs=require(_0xfef0('0x2'));var Redis=require(_0xfef0('0x3'));var db=require('../../mysqldb')['db'];var logger=require(_0xfef0('0x4'))(_0xfef0('0x5'));var config=require(_0xfef0('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xfef0('0x7')][_0xfef0('0x8')]({'port':0x232c});config[_0xfef0('0x9')]=_[_0xfef0('0xa')](config[_0xfef0('0x9')],{'host':_0xfef0('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xfef0('0x9')]));require('./mailAccount.socket')[_0xfef0('0xc')](socket);function respondWithRpcPromise(_0x100e3a,_0x3a81cc,_0x2d42dc){return new BPromise(function(_0x334e74,_0x402dff){return client[_0xfef0('0xd')](_0x100e3a,_0x2d42dc)[_0xfef0('0xe')](function(_0x11bbca){logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));logger[_0xfef0('0x12')](_0xfef0('0x13'),_0x3a81cc,'request\x20sent',JSON[_0xfef0('0x14')](_0x11bbca));if(_0x11bbca[_0xfef0('0x15')]){if(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x16')]===0x1f4){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x11bbca[_0xfef0('0x15')]['message']);return _0x402dff(_0x11bbca[_0xfef0('0x15')]['message']);}logger['error']('MailAccount,\x20%s,\x20%s',_0x3a81cc,_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);return _0x334e74(_0x11bbca[_0xfef0('0x15')][_0xfef0('0x17')]);}else{logger[_0xfef0('0xf')](_0xfef0('0x10'),_0x3a81cc,_0xfef0('0x11'));_0x334e74(_0x11bbca[_0xfef0('0x18')]['message']);}})[_0xfef0('0x19')](function(_0x1642cd){logger[_0xfef0('0x15')](_0xfef0('0x10'),_0x3a81cc,_0x1642cd);_0x402dff(_0x1642cd);});});}exports[_0xfef0('0x1a')]=function(_0x55912f){var _0x5283e1=this;return new Promise(function(_0x4e24de,_0x20826b){return db[_0xfef0('0x1b')][_0xfef0('0x1c')]({'raw':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')]['where']||null:null,'attributes':_0x55912f['options']?_0x55912f['options'][_0xfef0('0x1e')]||null:null,'limit':_0x55912f['options']?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x1f')]||null:null,'include':_0x55912f[_0xfef0('0x1d')]?_0x55912f[_0xfef0('0x1d')][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x55912f['options']['include'],function(_0x316e20){return{'model':db[_0x316e20[_0xfef0('0x22')]],'as':_0x316e20['as'],'attributes':_0x316e20[_0xfef0('0x1e')],'include':_0x316e20[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x316e20[_0xfef0('0x20')],function(_0x5df04f){return{'model':db[_0x5df04f[_0xfef0('0x22')]],'as':_0x5df04f['as'],'attributes':_0x5df04f[_0xfef0('0x1e')],'include':_0x5df04f['include']?_[_0xfef0('0x21')](_0x5df04f[_0xfef0('0x20')],function(_0xca0cce){return{'model':db[_0xca0cce[_0xfef0('0x22')]],'as':_0xca0cce['as'],'attributes':_0xca0cce[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x3e3c4c){logger[_0xfef0('0xf')](_0xfef0('0x1a'),_0x55912f);logger[_0xfef0('0x12')](_0xfef0('0x1a'),_0x55912f,JSON[_0xfef0('0x14')](_0x3e3c4c));_0x4e24de(_0x3e3c4c);})['catch'](function(_0x445625){logger['error']('GetMailAccount',_0x445625[_0xfef0('0x17')],_0x55912f);_0x20826b(_0x5283e1[_0xfef0('0x15')](0x1f4,_0x445625['message']));});});};exports['ShowMailAccount']=function(_0x5cf518){var _0x4f65cd=this;return new Promise(function(_0x4cce8a,_0x417535){return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'raw':_0x5cf518['options']?_0x5cf518['options']['raw']===undefined?!![]:![]:!![],'where':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x24')]||null:null,'attributes':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518[_0xfef0('0x1d')]['attributes']||null:null,'include':_0x5cf518[_0xfef0('0x1d')]?_0x5cf518['options'][_0xfef0('0x20')]?_[_0xfef0('0x21')](_0x5cf518[_0xfef0('0x1d')][_0xfef0('0x20')],function(_0x3e1a64){return{'model':db[_0x3e1a64[_0xfef0('0x22')]],'as':_0x3e1a64['as'],'attributes':_0x3e1a64[_0xfef0('0x1e')],'include':_0x3e1a64[_0xfef0('0x20')]?_['map'](_0x3e1a64[_0xfef0('0x20')],function(_0xea09ec){return{'model':db[_0xea09ec[_0xfef0('0x22')]],'as':_0xea09ec['as'],'attributes':_0xea09ec[_0xfef0('0x1e')],'include':_0xea09ec[_0xfef0('0x20')]?_[_0xfef0('0x21')](_0xea09ec[_0xfef0('0x20')],function(_0xeb75e2){return{'model':db[_0xeb75e2[_0xfef0('0x22')]],'as':_0xeb75e2['as'],'attributes':_0xeb75e2[_0xfef0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xfef0('0xe')](function(_0x22acf9){if(_0x5cf518[_0xfef0('0x1d')]['smtp']===!![])_0x22acf9[_0xfef0('0x25')]('smtpOptions',_0x22acf9[_0xfef0('0x26')]());logger[_0xfef0('0xf')](_0xfef0('0x27'),_0x5cf518);logger['debug'](_0xfef0('0x27'),_0x5cf518,JSON[_0xfef0('0x14')](_0x22acf9));_0x4cce8a(_0x22acf9);})[_0xfef0('0x19')](function(_0x5537c8){logger[_0xfef0('0x15')](_0xfef0('0x27'),_0x5537c8[_0xfef0('0x17')],_0x5cf518);_0x417535(_0x4f65cd['error'](0x1f4,_0x5537c8[_0xfef0('0x17')]));});});};exports['NotifyMailAccount']=function(_0x49ed48){var _0xf30aff=this;return new Promise(function(_0x547a5d,_0x5c3305){var _0xbf6ddd={'body':_0x49ed48[_0xfef0('0x28')],'channel':_0xfef0('0x29')};var _0x1a6593=_[_0xfef0('0x2a')](_[_0xfef0('0x2b')](db['CmContact'][_0xfef0('0x2c')]),[_0xfef0('0x2d'),'updatedAt','CompanyId',_0xfef0('0x2e')]);var _0x5dc824=![];if(_0x49ed48[_0xfef0('0x28')]['id']){delete _0x49ed48[_0xfef0('0x28')]['id'];}if(_[_0xfef0('0x2f')](_0x49ed48[_0xfef0('0x28')][_0xfef0('0x30')])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x31')));}if(_[_0xfef0('0x2f')](_0x49ed48['body'][_0xfef0('0x28')])||_0x49ed48['body']['body']===''){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x32')));}if(_['isNil'](_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x33')+_0x1a6593));}if(!_[_0xfef0('0x34')](_0x1a6593,_0x49ed48[_0xfef0('0x28')]['mapKey'])){return _0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0xfef0('0x35')+_0x1a6593));}var _0x504967={};_0x504967[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body'][_0xfef0('0x30')];return db[_0xfef0('0x1b')][_0xfef0('0x23')]({'where':{'id':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x38')],'as':_0xfef0('0x39'),'include':[{'model':db['CmContact'],'as':_0xfef0('0x3a'),'where':_0x504967,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0xfef0('0x3b')],'as':_0xfef0('0x3c')},{'model':db[_0xfef0('0x3d')],'as':'Smtp','include':[{'model':db[_0xfef0('0x3e')],'as':'CloudProvider'}]}]})['then'](function(_0x51f207){if(_0x51f207&&_0x51f207[_0xfef0('0x39')]){var _0x3d471c=_0x51f207[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x37')]=_[_0xfef0('0x40')](_0x3d471c,[_0xfef0('0x3c'),_0xfef0('0x39')]);_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x41')]=_0x51f207['getSmtpOptions']();_0xbf6ddd['applications']=_0x3d471c[_0xfef0('0x3c')];_0xbf6ddd[_0xfef0('0x42')]=_0x3d471c[_0xfef0('0x39')];_0xbf6ddd[_0xfef0('0x43')]=_[_0xfef0('0x44')](_0xbf6ddd[_0xfef0('0x43')],[_0xfef0('0x45')],[_0xfef0('0x46')]);if(_0xbf6ddd['account']&&_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x47')]){_0xbf6ddd[_0xfef0('0x43')][_0xfef0('0x48')]({'id':0x0,'priority':_0xbf6ddd[_0xfef0('0x43')]['length']+0x1,'app':'close','appdata':'autoclose','interval':_0xfef0('0x49')});}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x3c')]){delete _0xbf6ddd[_0xfef0('0x37')]['Applications'];}if(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')]){delete _0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x39')];}if(_0x3d471c[_0xfef0('0x39')][_0xfef0('0x3a')][_0xfef0('0x4a')]){return _0x3d471c['List'][_0xfef0('0x3a')][0x0];}var _0x163255=_['defaults'](_0x49ed48[_0xfef0('0x28')],{'firstName':_0x49ed48['body'][_0xfef0('0x30')],'ListId':_0x3d471c[_0xfef0('0x2e')]});_0x163255[_0x49ed48['body'][_0xfef0('0x36')]]=_0x49ed48['body']['from'];return db['CmContact'][_0xfef0('0x4b')](_0x163255);}else{throw new Error(_0xfef0('0x4c'));}})[_0xfef0('0xe')](function(_0x34fda3){_0xbf6ddd[_0xfef0('0x4d')]=_0x34fda3;if(_0x34fda3){if(!_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x4e')]){_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')]=rs[_0xfef0('0x4f')]()+'\x20'+_0x49ed48['body'][_0xfef0('0x17')]['from'];}var _0x135653={'ContactId':_0x34fda3['id'],'MailAccountId':_0x49ed48['account']['id'],'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['from'],'cc':_0x49ed48[_0xfef0('0x28')]['message']['cc'],'subject':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['subject'],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'lastMsgAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgDirection':'in'};return db[_0xfef0('0x53')][_0xfef0('0x23')]({'where':{'closed':![],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id']},'include':[{'model':db[_0xfef0('0x54')],'as':_0xfef0('0x55'),'attributes':[_0xfef0('0x4e')],'where':{'messageId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x56')]}}]})[_0xfef0('0xe')](function(_0x28cab7){if(_0x28cab7){return[_0x28cab7,![]];}return db[_0xfef0('0x53')][_0xfef0('0x4b')](_0x135653)['then'](function(_0x12e383){return[_0x12e383,!![]];});});}else{throw new Error(_0xfef0('0x57'));}})[_0xfef0('0x58')](function(_0x3c6bb8,_0x176fc7){if(_0x3c6bb8){_0x5dc824=_0x176fc7;if(!_0x176fc7){return _0x3c6bb8[_0xfef0('0x59')]({'inReplyTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x4e')],'to':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x30')],'cc':_0x49ed48['body'][_0xfef0('0x17')]['cc'],'subject':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5a')],'attach':_0x3c6bb8[_0xfef0('0x50')]?_0x3c6bb8[_0xfef0('0x50')]:_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['attach'],'substatus':null,'substatusAt':moment()[_0xfef0('0x51')](_0xfef0('0x52')),'lastMsgAt':moment()[_0xfef0('0x51')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgDirection':'in'});}else{return _0x3c6bb8;}}})[_0xfef0('0xe')](function(_0x2ab666){_0xbf6ddd[_0xfef0('0x5b')]=_0x2ab666[_0xfef0('0x3f')]({'plain':!![]});_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x5c')]=_0x5dc824;return db[_0xfef0('0x54')]['create']({'body':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x28')],'MailAccountId':_0x49ed48[_0xfef0('0x37')]['id'],'MailInteractionId':_0x2ab666['id'],'direction':'in','ContactId':_0xbf6ddd[_0xfef0('0x4d')]['id'],'messageId':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['messageId'],'from':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x30')],'to':_0x49ed48[_0xfef0('0x28')]['message']['to'],'cc':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['cc'],'subject':_0x49ed48['body'][_0xfef0('0x17')][_0xfef0('0x5a')],'attach':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x50')],'Attachments':_0x49ed48['body']['message']['attachments'],'originTo':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')][_0xfef0('0x5d')],'originCc':_0x49ed48['body'][_0xfef0('0x17')]['originCc'],'bcc':_0x49ed48['body']['message'][_0xfef0('0x5e')],'ChatWebsiteId':_0x49ed48[_0xfef0('0x28')]['message'][_0xfef0('0x5f')]||null,'originChannel':_0x49ed48[_0xfef0('0x28')][_0xfef0('0x17')]['originChannel']||_0xfef0('0x60'),'ChatOfflineMessageId':_0x49ed48['body']['message'][_0xfef0('0x61')]||null},{'include':[{'model':db[_0xfef0('0x62')],'as':_0xfef0('0x63')}]});})[_0xfef0('0xe')](function(_0x4df63b){_0xbf6ddd['message']=_0x4df63b;if(_0xbf6ddd['interaction'][_0xfef0('0x64')]){return db['User'][_0xfef0('0x23')]({'attributes':['id',_0xfef0('0x65')],'where':{'id':_0xbf6ddd[_0xfef0('0x5b')][_0xfef0('0x64')]}})[_0xfef0('0xe')](function(_0x4be622){if(_0x4be622){_0xbf6ddd[_0xfef0('0x43')]['unshift']({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4be622[_0xfef0('0x65')]+','+(_0xbf6ddd[_0xfef0('0x37')][_0xfef0('0x66')]||0xa),'interval':_0xfef0('0x49')});}return respondWithRpcPromise('Start','startRouting',_0xbf6ddd);});}return respondWithRpcPromise(_0xfef0('0x67'),_0xfef0('0x68'),_0xbf6ddd);})['then'](function(_0x872f99){_0x547a5d(_0x872f99);})[_0xfef0('0x19')](function(_0x4690c0){_0x5c3305(_0xf30aff[_0xfef0('0x15')](0x1f4,_0x4690c0[_0xfef0('0x17')]));});});};
\ No newline at end of file
index 26d9e4e..cf27ca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83f6=['mailAccount:','./mailAccount.events','save','remove','emit','removeListener','register'];(function(_0x1d8edc,_0x3dc8c8){var _0x10d35f=function(_0x24dabd){while(--_0x24dabd){_0x1d8edc['push'](_0x1d8edc['shift']());}};_0x10d35f(++_0x3dc8c8);}(_0x83f6,0x1dd));var _0x683f=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0x83f6[_0x3b5250];return _0xc844a1;};'use strict';var MailAccountEvents=require(_0x683f('0x0'));var events=[_0x683f('0x1'),_0x683f('0x2'),'update'];function createListener(_0x3e61f5,_0x3b83a7){return function(_0x6ccab){_0x3b83a7[_0x683f('0x3')](_0x3e61f5,_0x6ccab);};}function removeListener(_0x14a988,_0x5ccb79){return function(){MailAccountEvents[_0x683f('0x4')](_0x14a988,_0x5ccb79);};}exports[_0x683f('0x5')]=function(_0x36ba4c){for(var _0x59fe20=0x0,_0x32a955=events['length'];_0x59fe20<_0x32a955;_0x59fe20++){var _0x815ad=events[_0x59fe20];var _0x27760f=createListener(_0x683f('0x6')+_0x815ad,_0x36ba4c);MailAccountEvents['on'](_0x815ad,_0x27760f);}};
\ No newline at end of file
+var _0xf891=['removeListener','register','mailAccount:','./mailAccount.events','save','emit'];(function(_0x1aed07,_0x254f3b){var _0x72f2df=function(_0x25a81f){while(--_0x25a81f){_0x1aed07['push'](_0x1aed07['shift']());}};_0x72f2df(++_0x254f3b);}(_0xf891,0x93));var _0x1f89=function(_0x15b964,_0x2883db){_0x15b964=_0x15b964-0x0;var _0x4ff6f8=_0xf891[_0x15b964];return _0x4ff6f8;};'use strict';var MailAccountEvents=require(_0x1f89('0x0'));var events=[_0x1f89('0x1'),'remove','update'];function createListener(_0x4fa87c,_0x586eb0){return function(_0x4c15de){_0x586eb0[_0x1f89('0x2')](_0x4fa87c,_0x4c15de);};}function removeListener(_0x532281,_0x20df27){return function(){MailAccountEvents[_0x1f89('0x3')](_0x532281,_0x20df27);};}exports[_0x1f89('0x4')]=function(_0x52c493){for(var _0x1acdc4=0x0,_0x3857bb=events['length'];_0x1acdc4<_0x3857bb;_0x1acdc4++){var _0x14ba98=events[_0x1acdc4];var _0x42d055=createListener(_0x1f89('0x5')+_0x14ba98,_0x52c493);MailAccountEvents['on'](_0x14ba98,_0x42d055);}};
\ No newline at end of file
index cb25262..1de9dc1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1779=['../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x3fffac,_0x31a77b){var _0xcef7e8=function(_0x1b821a){while(--_0x1b821a){_0x3fffac['push'](_0x3fffac['shift']());}};_0xcef7e8(++_0x31a77b);}(_0x1779,0x109));var _0x9177=function(_0x5b6c96,_0x3f4f7b){_0x5b6c96=_0x5b6c96-0x0;var _0x5eed7d=_0x1779[_0x5b6c96];return _0x5eed7d;};'use strict';var multer=require(_0x9177('0x0'));var util=require('util');var path=require(_0x9177('0x1'));var timeout=require(_0x9177('0x2'));var express=require(_0x9177('0x3'));var router=express[_0x9177('0x4')]();var fs_extra=require(_0x9177('0x5'));var auth=require(_0x9177('0x6'));var interaction=require(_0x9177('0x7'));var config=require(_0x9177('0x8'));var controller=require(_0x9177('0x9'));router[_0x9177('0xa')](_0x9177('0xb'),auth[_0x9177('0xc')](),controller['show']);router[_0x9177('0xd')](_0x9177('0xb'),auth[_0x9177('0xc')](),controller[_0x9177('0xe')]);router[_0x9177('0xf')]('/:id',auth[_0x9177('0xc')](),controller[_0x9177('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xacaf=['delete','destroy','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put'];(function(_0x33ab41,_0xa2d039){var _0x12403d=function(_0x41f3a9){while(--_0x41f3a9){_0x33ab41['push'](_0x33ab41['shift']());}};_0x12403d(++_0xa2d039);}(_0xacaf,0x6a));var _0xfaca=function(_0x571c1d,_0x3b0586){_0x571c1d=_0x571c1d-0x0;var _0x33c609=_0xacaf[_0x571c1d];return _0x33c609;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xfaca('0x0'));var router=express[_0xfaca('0x1')]();var fs_extra=require('fs-extra');var auth=require(_0xfaca('0x2'));var interaction=require(_0xfaca('0x3'));var config=require(_0xfaca('0x4'));var controller=require(_0xfaca('0x5'));router[_0xfaca('0x6')](_0xfaca('0x7'),auth[_0xfaca('0x8')](),controller[_0xfaca('0x9')]);router[_0xfaca('0xa')]('/:id',auth[_0xfaca('0x8')](),controller['update']);router[_0xfaca('0xb')](_0xfaca('0x7'),auth[_0xfaca('0x8')](),controller[_0xfaca('0xc')]);module['exports']=router;
\ No newline at end of file
index df3ba0f..278a56e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a8f=['STRING','TEXT','exports','INTEGER'];(function(_0x43f352,_0x530e02){var _0x1378a4=function(_0xcb56d8){while(--_0xcb56d8){_0x43f352['push'](_0x43f352['shift']());}};_0x1378a4(++_0x530e02);}(_0x3a8f,0x1a2));var _0xf3a8=function(_0x3d474c,_0x23055c){_0x3d474c=_0x3d474c-0x0;var _0x103e55=_0x3a8f[_0x3d474c];return _0x103e55;};'use strict';var Sequelize=require('sequelize');module[_0xf3a8('0x0')]={'priority':{'type':Sequelize[_0xf3a8('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0xf3a8('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xf3a8('0x3')]()},'description':{'type':Sequelize[_0xf3a8('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0xb05c=['exports','INTEGER','STRING','noop','TEXT','sequelize'];(function(_0x150cc8,_0x185cbb){var _0x26a9e5=function(_0x57c144){while(--_0x57c144){_0x150cc8['push'](_0x150cc8['shift']());}};_0x26a9e5(++_0x185cbb);}(_0xb05c,0x173));var _0xcb05=function(_0x43c8de,_0x4ac946){_0x43c8de=_0x43c8de-0x0;var _0x17430a=_0xb05c[_0x43c8de];return _0x17430a;};'use strict';var Sequelize=require(_0xcb05('0x0'));module[_0xcb05('0x1')]={'priority':{'type':Sequelize[_0xcb05('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xcb05('0x3')],'allowNull':![],'defaultValue':_0xcb05('0x4')},'appdata':{'type':Sequelize[_0xcb05('0x5')]()},'description':{'type':Sequelize[_0xcb05('0x3')]},'interval':{'type':Sequelize[_0xcb05('0x3')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 574c6a1..a735e9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['limit','count','offset','set','Content-Range','json','apply','save','update','then','end','name','send','show','params','model','keys','MailApplication','rawAttributes','query','filters','attributes','intersection','fields','length','includeAll','include','merge','options','find','body','catch','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined'];(function(_0x11435c,_0x436ccf){var _0x556167=function(_0x56cf83){while(--_0x56cf83){_0x11435c['push'](_0x11435c['shift']());}};_0x556167(++_0x436ccf);}(_0xe706,0xa3));var _0x6e70=function(_0x2e748c,_0x55ec8e){_0x2e748c=_0x2e748c-0x0;var _0x37e219=_0xe706[_0x2e748c];return _0x37e219;};'use strict';var emlformat=require(_0x6e70('0x0'));var rimraf=require(_0x6e70('0x1'));var zipdir=require(_0x6e70('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6e70('0x3'));var moment=require(_0x6e70('0x4'));var BPromise=require(_0x6e70('0x5'));var Mustache=require(_0x6e70('0x6'));var util=require(_0x6e70('0x7'));var path=require(_0x6e70('0x8'));var sox=require(_0x6e70('0x9'));var csv=require(_0x6e70('0xa'));var ejs=require(_0x6e70('0xb'));var fs=require('fs');var fs_extra=require(_0x6e70('0xc'));var _=require(_0x6e70('0xd'));var squel=require(_0x6e70('0xe'));var crypto=require(_0x6e70('0xf'));var jsforce=require(_0x6e70('0x10'));var deskjs=require(_0x6e70('0x11'));var toCsv=require(_0x6e70('0xa'));var querystring=require(_0x6e70('0x12'));var Papa=require(_0x6e70('0x13'));var Redis=require(_0x6e70('0x14'));var authService=require(_0x6e70('0x15'));var qs=require(_0x6e70('0x16'));var as=require(_0x6e70('0x17'));var hardwareService=require(_0x6e70('0x18'));var logger=require(_0x6e70('0x19'))('api');var utils=require('../../config/utils');var config=require(_0x6e70('0x1a'));var licenseUtil=require(_0x6e70('0x1b'));var db=require(_0x6e70('0x1c'))['db'];function respondWithStatusCode(_0x27dd9b,_0x3b38f3){_0x3b38f3=_0x3b38f3||0xcc;return function(_0x310eb7){if(_0x310eb7){return _0x27dd9b[_0x6e70('0x1d')](_0x3b38f3);}return _0x27dd9b[_0x6e70('0x1e')](_0x3b38f3)['end']();};}function respondWithResult(_0x52737e,_0x48bc72){_0x48bc72=_0x48bc72||0xc8;return function(_0x257e81){if(_0x257e81){return _0x52737e['status'](_0x48bc72)['json'](_0x257e81);}};}function respondWithFilteredResult(_0x304716,_0x22c50c){return function(_0x5d9263){if(_0x5d9263){var _0x24f3ac=typeof _0x22c50c['offset']===_0x6e70('0x1f')&&typeof _0x22c50c[_0x6e70('0x20')]==='undefined';var _0x49029f=_0x5d9263[_0x6e70('0x21')];var _0x5ea7a5=_0x24f3ac?0x0:_0x22c50c[_0x6e70('0x22')];var _0x173afe=_0x24f3ac?_0x5d9263['count']:_0x22c50c['offset']+_0x22c50c[_0x6e70('0x20')];var _0x208e21;if(_0x173afe>=_0x49029f){_0x173afe=_0x49029f;_0x208e21=0xc8;}else{_0x208e21=0xce;}_0x304716[_0x6e70('0x1e')](_0x208e21);return _0x304716[_0x6e70('0x23')](_0x6e70('0x24'),_0x5ea7a5+'-'+_0x173afe+'/'+_0x49029f)[_0x6e70('0x25')](_0x5d9263);}return null;};}function patchUpdates(_0x1b2453){return function(_0x44a49f){try{jsonpatch[_0x6e70('0x26')](_0x44a49f,_0x1b2453,!![]);}catch(_0xb29a2a){return BPromise['reject'](_0xb29a2a);}return _0x44a49f[_0x6e70('0x27')]();};}function saveUpdates(_0x344b65,_0x27b294){return function(_0x502b2d){if(_0x502b2d){return _0x502b2d[_0x6e70('0x28')](_0x344b65)[_0x6e70('0x29')](function(_0x3337a6){return _0x3337a6;});}return null;};}function removeEntity(_0x50da2c,_0x10fc91){return function(_0x538b9c){if(_0x538b9c){return _0x538b9c['destroy']()['then'](function(){_0x50da2c[_0x6e70('0x1e')](0xcc)[_0x6e70('0x2a')]();});}};}function handleEntityNotFound(_0x51d292,_0x3ecdf1){return function(_0x1196ed){if(!_0x1196ed){_0x51d292['sendStatus'](0x194);}return _0x1196ed;};}function handleError(_0x338ad6,_0x67fb43){_0x67fb43=_0x67fb43||0x1f4;return function(_0x2bb231){logger['error'](_0x2bb231['stack']);if(_0x2bb231[_0x6e70('0x2b')]){delete _0x2bb231[_0x6e70('0x2b')];}_0x338ad6[_0x6e70('0x1e')](_0x67fb43)[_0x6e70('0x2c')](_0x2bb231);};}exports[_0x6e70('0x2d')]=function(_0x5d772a,_0x1952ea){var _0x406f29={'raw':!![],'where':{'id':_0x5d772a[_0x6e70('0x2e')]['id']}},_0xecf336={};_0xecf336[_0x6e70('0x2f')]=_[_0x6e70('0x30')](db[_0x6e70('0x31')][_0x6e70('0x32')]);_0xecf336[_0x6e70('0x33')]=_[_0x6e70('0x30')](_0x5d772a['query']);_0xecf336[_0x6e70('0x34')]=_['intersection'](_0xecf336[_0x6e70('0x2f')],_0xecf336['query']);_0x406f29[_0x6e70('0x35')]=_[_0x6e70('0x36')](_0xecf336[_0x6e70('0x2f')],qs['fields'](_0x5d772a[_0x6e70('0x33')][_0x6e70('0x37')]));_0x406f29['attributes']=_0x406f29[_0x6e70('0x35')][_0x6e70('0x38')]?_0x406f29['attributes']:_0xecf336[_0x6e70('0x2f')];if(_0x5d772a[_0x6e70('0x33')][_0x6e70('0x39')]){_0x406f29[_0x6e70('0x3a')]=[{'all':!![]}];}_0x406f29=_[_0x6e70('0x3b')]({},_0x406f29,_0x5d772a[_0x6e70('0x3c')]);return db[_0x6e70('0x31')][_0x6e70('0x3d')](_0x406f29)[_0x6e70('0x29')](handleEntityNotFound(_0x1952ea,null))[_0x6e70('0x29')](respondWithResult(_0x1952ea,null))['catch'](handleError(_0x1952ea,null));};exports[_0x6e70('0x28')]=function(_0x4795a0,_0x23cd1a){if(_0x4795a0[_0x6e70('0x3e')]['id']){delete _0x4795a0[_0x6e70('0x3e')]['id'];}return db[_0x6e70('0x31')][_0x6e70('0x3d')]({'where':{'id':_0x4795a0[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x23cd1a,null))[_0x6e70('0x29')](saveUpdates(_0x4795a0[_0x6e70('0x3e')],null))[_0x6e70('0x29')](respondWithResult(_0x23cd1a,null))[_0x6e70('0x3f')](handleError(_0x23cd1a,null));};exports[_0x6e70('0x40')]=function(_0x5594d3,_0x501b53){return db['MailApplication']['find']({'where':{'id':_0x5594d3[_0x6e70('0x2e')]['id']}})[_0x6e70('0x29')](handleEntityNotFound(_0x501b53,null))[_0x6e70('0x29')](removeEntity(_0x501b53,null))[_0x6e70('0x3f')](handleError(_0x501b53,null));};
\ No newline at end of file
+var _0x9c44=['Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','show','params','model','keys','MailApplication','rawAttributes','query','attributes','intersection','fields','length','includeAll','include','merge','options','find','then','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set'];(function(_0x5670cb,_0xe6e20d){var _0x11dc29=function(_0x42305b){while(--_0x42305b){_0x5670cb['push'](_0x5670cb['shift']());}};_0x11dc29(++_0xe6e20d);}(_0x9c44,0x178));var _0x49c4=function(_0x5d2803,_0xf375bd){_0x5d2803=_0x5d2803-0x0;var _0xdcad2c=_0x9c44[_0x5d2803];return _0xdcad2c;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={'raw':!![],'where':{'id':_0x5987ae[_0x49c4('0x29')]['id']}},_0x46e04d={};_0x46e04d[_0x49c4('0x2a')]=_[_0x49c4('0x2b')](db[_0x49c4('0x2c')][_0x49c4('0x2d')]);_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2b')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d['filters']=_['intersection'](_0x46e04d['model'],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x2f')]=_[_0x49c4('0x30')](_0x46e04d[_0x49c4('0x2a')],qs[_0x49c4('0x31')](_0x5987ae['query'][_0x49c4('0x31')]));_0x2b2793[_0x49c4('0x2f')]=_0x2b2793[_0x49c4('0x2f')][_0x49c4('0x32')]?_0x2b2793['attributes']:_0x46e04d['model'];if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x33')]){_0x2b2793[_0x49c4('0x34')]=[{'all':!![]}];}_0x2b2793=_[_0x49c4('0x35')]({},_0x2b2793,_0x5987ae[_0x49c4('0x36')]);return db['MailApplication'][_0x49c4('0x37')](_0x2b2793)[_0x49c4('0x38')](handleEntityNotFound(_0x889909,null))[_0x49c4('0x38')](respondWithResult(_0x889909,null))['catch'](handleError(_0x889909,null));};exports['update']=function(_0x85dce2,_0x1991e9){if(_0x85dce2[_0x49c4('0x39')]['id']){delete _0x85dce2[_0x49c4('0x39')]['id'];}return db[_0x49c4('0x2c')][_0x49c4('0x37')]({'where':{'id':_0x85dce2[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x1991e9,null))[_0x49c4('0x38')](saveUpdates(_0x85dce2['body'],null))[_0x49c4('0x38')](respondWithResult(_0x1991e9,null))['catch'](handleError(_0x1991e9,null));};exports[_0x49c4('0x23')]=function(_0x349791,_0x2625a6){return db[_0x49c4('0x2c')]['find']({'where':{'id':_0x349791[_0x49c4('0x29')]['id']}})[_0x49c4('0x38')](handleEntityNotFound(_0x2625a6,null))[_0x49c4('0x38')](removeEntity(_0x2625a6,null))['catch'](handleError(_0x2625a6,null));};
\ No newline at end of file
index c298231..47d9071 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdcb6=['exports','MailApplication','mail_applications','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0xdcb6,0xc4));var _0x6dcb=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xdcb6[_0x1969a7];return _0x3d665f;};'use strict';var _=require(_0x6dcb('0x0'));var util=require('util');var logger=require(_0x6dcb('0x1'))(_0x6dcb('0x2'));var moment=require(_0x6dcb('0x3'));var BPromise=require(_0x6dcb('0x4'));var rp=require(_0x6dcb('0x5'));var fs=require('fs');var path=require(_0x6dcb('0x6'));var rimraf=require(_0x6dcb('0x7'));var config=require('../../config/environment');var attributes=require('./mailApplication.attributes');module[_0x6dcb('0x8')]=function(_0x36f8fc,_0x1de9c0){return _0x36f8fc['define'](_0x6dcb('0x9'),attributes,{'tableName':_0x6dcb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x6dcb('0xb')});};
\ No newline at end of file
+var _0x6094=['request-promise','path','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','utf8mb4','../../config/logger','api','moment','bluebird'];(function(_0xd4ef0c,_0xa9bae4){var _0x59dc29=function(_0xd99b04){while(--_0xd99b04){_0xd4ef0c['push'](_0xd4ef0c['shift']());}};_0x59dc29(++_0xa9bae4);}(_0x6094,0x1d0));var _0x4609=function(_0x14a2e5,_0x30cdb9){_0x14a2e5=_0x14a2e5-0x0;var _0x56593c=_0x6094[_0x14a2e5];return _0x56593c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4609('0x0'))(_0x4609('0x1'));var moment=require(_0x4609('0x2'));var BPromise=require(_0x4609('0x3'));var rp=require(_0x4609('0x4'));var fs=require('fs');var path=require(_0x4609('0x5'));var rimraf=require('rimraf');var config=require(_0x4609('0x6'));var attributes=require(_0x4609('0x7'));module[_0x4609('0x8')]=function(_0x217da4,_0x37591b){return _0x217da4[_0x4609('0x9')](_0x4609('0xa'),attributes,{'tableName':'mail_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4609('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 900057e..e33c7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8af3=['code','message','result','catch','UpdateMailApplication','MailApplication','update','options','raw','limit','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','debug','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x47819a,_0x3074b2){var _0x505b69=function(_0x21285b){while(--_0x21285b){_0x47819a['push'](_0x47819a['shift']());}};_0x505b69(++_0x3074b2);}(_0x8af3,0x7e));var _0x38af=function(_0x239a1f,_0x42b4e1){_0x239a1f=_0x239a1f-0x0;var _0x3fb920=_0x8af3[_0x239a1f];return _0x3fb920;};'use strict';var _=require(_0x38af('0x0'));var util=require('util');var moment=require(_0x38af('0x1'));var BPromise=require(_0x38af('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x38af('0x3'));var db=require(_0x38af('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x38af('0x5'))(_0x38af('0x6'));var config=require('../../config/environment');var jayson=require(_0x38af('0x7'));var client=jayson[_0x38af('0x8')][_0x38af('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1547dd,_0x5db547,_0x6df672){return new BPromise(function(_0x1b2766,_0x51b477){return client[_0x38af('0xa')](_0x1547dd,_0x6df672)[_0x38af('0xb')](function(_0x34b222){logger[_0x38af('0xc')](_0x38af('0xd'),_0x5db547,'request\x20sent');logger[_0x38af('0xe')](_0x38af('0xf'),_0x5db547,_0x38af('0x10'),JSON[_0x38af('0x11')](_0x34b222));if(_0x34b222[_0x38af('0x12')]){if(_0x34b222[_0x38af('0x12')][_0x38af('0x13')]===0x1f4){logger[_0x38af('0x12')](_0x38af('0xd'),_0x5db547,_0x34b222[_0x38af('0x12')][_0x38af('0x14')]);return _0x51b477(_0x34b222[_0x38af('0x12')][_0x38af('0x14')]);}logger['error'](_0x38af('0xd'),_0x5db547,_0x34b222[_0x38af('0x12')][_0x38af('0x14')]);return _0x1b2766(_0x34b222[_0x38af('0x12')][_0x38af('0x14')]);}else{logger[_0x38af('0xc')](_0x38af('0xd'),_0x5db547,'request\x20sent');_0x1b2766(_0x34b222[_0x38af('0x15')]['message']);}})[_0x38af('0x16')](function(_0x271ac2){logger[_0x38af('0x12')](_0x38af('0xd'),_0x5db547,_0x271ac2);_0x51b477(_0x271ac2);});});}exports[_0x38af('0x17')]=function(_0x39b8ae){var _0x2bd79c=this;return new Promise(function(_0x2f9296,_0x28fffc){return db[_0x38af('0x18')][_0x38af('0x19')](_0x39b8ae['body'],{'raw':_0x39b8ae['options']?_0x39b8ae[_0x38af('0x1a')][_0x38af('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39b8ae['options']?_0x39b8ae['options']['where']||null:null,'attributes':_0x39b8ae[_0x38af('0x1a')]?_0x39b8ae[_0x38af('0x1a')]['attributes']||null:null,'limit':_0x39b8ae[_0x38af('0x1a')]?_0x39b8ae[_0x38af('0x1a')][_0x38af('0x1c')]||null:null})[_0x38af('0xb')](function(_0x2696eb){logger[_0x38af('0xc')]('UpdateMailApplication',_0x39b8ae);logger[_0x38af('0xe')](_0x38af('0x17'),_0x39b8ae,JSON[_0x38af('0x11')](_0x2696eb));_0x2f9296(_0x2696eb);})[_0x38af('0x16')](function(_0x538501){logger[_0x38af('0x12')]('UpdateMailApplication',_0x538501[_0x38af('0x14')],_0x39b8ae);_0x28fffc(_0x2bd79c[_0x38af('0x12')](0x1f4,_0x538501[_0x38af('0x14')]));});});};
\ No newline at end of file
+var _0xfa76=['bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','then','MailApplication,\x20%s,\x20%s','MailApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','UpdateMailApplication','MailApplication','update','body','options','raw','limit','info','debug','lodash','moment'];(function(_0x5b311b,_0x3e0280){var _0x4fa0de=function(_0x5363ed){while(--_0x5363ed){_0x5b311b['push'](_0x5b311b['shift']());}};_0x4fa0de(++_0x3e0280);}(_0xfa76,0x116));var _0x6fa7=function(_0x466010,_0x26e68f){_0x466010=_0x466010-0x0;var _0x437da2=_0xfa76[_0x466010];return _0x437da2;};'use strict';var _=require(_0x6fa7('0x0'));var util=require('util');var moment=require(_0x6fa7('0x1'));var BPromise=require(_0x6fa7('0x2'));var rs=require(_0x6fa7('0x3'));var fs=require('fs');var Redis=require(_0x6fa7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6fa7('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x6fa7('0x6'));var jayson=require(_0x6fa7('0x7'));var client=jayson[_0x6fa7('0x8')][_0x6fa7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x550bea,_0x5b9d02,_0x404b1a){return new BPromise(function(_0x5267d2,_0xfca322){return client['request'](_0x550bea,_0x404b1a)[_0x6fa7('0xa')](function(_0x33b147){logger['info'](_0x6fa7('0xb'),_0x5b9d02,'request\x20sent');logger['debug'](_0x6fa7('0xc'),_0x5b9d02,_0x6fa7('0xd'),JSON[_0x6fa7('0xe')](_0x33b147));if(_0x33b147[_0x6fa7('0xf')]){if(_0x33b147[_0x6fa7('0xf')]['code']===0x1f4){logger[_0x6fa7('0xf')]('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x33b147['error'][_0x6fa7('0x10')]);return _0xfca322(_0x33b147[_0x6fa7('0xf')][_0x6fa7('0x10')]);}logger[_0x6fa7('0xf')](_0x6fa7('0xb'),_0x5b9d02,_0x33b147['error'][_0x6fa7('0x10')]);return _0x5267d2(_0x33b147[_0x6fa7('0xf')][_0x6fa7('0x10')]);}else{logger['info']('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x6fa7('0xd'));_0x5267d2(_0x33b147[_0x6fa7('0x11')][_0x6fa7('0x10')]);}})[_0x6fa7('0x12')](function(_0x39e2a9){logger['error']('MailApplication,\x20%s,\x20%s',_0x5b9d02,_0x39e2a9);_0xfca322(_0x39e2a9);});});}exports[_0x6fa7('0x13')]=function(_0x54def2){var _0x4b281c=this;return new Promise(function(_0x36a555,_0x19e3f1){return db[_0x6fa7('0x14')][_0x6fa7('0x15')](_0x54def2[_0x6fa7('0x16')],{'raw':_0x54def2['options']?_0x54def2[_0x6fa7('0x17')][_0x6fa7('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x54def2[_0x6fa7('0x17')]?_0x54def2[_0x6fa7('0x17')]['where']||null:null,'attributes':_0x54def2[_0x6fa7('0x17')]?_0x54def2[_0x6fa7('0x17')]['attributes']||null:null,'limit':_0x54def2['options']?_0x54def2['options'][_0x6fa7('0x19')]||null:null})[_0x6fa7('0xa')](function(_0x377b4b){logger[_0x6fa7('0x1a')](_0x6fa7('0x13'),_0x54def2);logger[_0x6fa7('0x1b')]('UpdateMailApplication',_0x54def2,JSON['stringify'](_0x377b4b));_0x36a555(_0x377b4b);})[_0x6fa7('0x12')](function(_0x313e6a){logger[_0x6fa7('0xf')](_0x6fa7('0x13'),_0x313e6a[_0x6fa7('0x10')],_0x54def2);_0x19e3f1(_0x4b281c['error'](0x1f4,_0x313e6a[_0x6fa7('0x10')]));});});};
\ No newline at end of file
index e70bb75..0d8d327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbff=['express','Router','../../components/auth/service','get','index','/describe','isAuthenticated','describe','show','/:id/messages','getMessages','/:id/download','post','create','addMessage','/:id/tags','mailinteraction:addtags','addTags','/:id','mail','mailinteraction:update','update','delete','tracked','destroy','removeTags','exports'];(function(_0x19eb03,_0x152a05){var _0x25ab41=function(_0x15c6d4){while(--_0x15c6d4){_0x19eb03['push'](_0x19eb03['shift']());}};_0x25ab41(++_0x152a05);}(_0xbbff,0x1e6));var _0xfbbf=function(_0x33936c,_0x44c103){_0x33936c=_0x33936c-0x0;var _0x2ea7f4=_0xbbff[_0x33936c];return _0x2ea7f4;};'use strict';var express=require(_0xfbbf('0x0'));var router=express[_0xfbbf('0x1')]();var auth=require(_0xfbbf('0x2'));var interaction=require('../../components/interaction/service');var controller=require('./mailInteraction.controller');router[_0xfbbf('0x3')]('/',auth['isAuthenticated'](),controller[_0xfbbf('0x4')]);router['get'](_0xfbbf('0x5'),auth[_0xfbbf('0x6')](),controller[_0xfbbf('0x7')]);router[_0xfbbf('0x3')]('/:id',auth['isAuthenticated'](),controller[_0xfbbf('0x8')]);router[_0xfbbf('0x3')](_0xfbbf('0x9'),auth['isAuthenticated'](),controller[_0xfbbf('0xa')]);router[_0xfbbf('0x3')](_0xfbbf('0xb'),auth[_0xfbbf('0x6')](),controller['download']);router[_0xfbbf('0xc')]('/',auth[_0xfbbf('0x6')](),controller[_0xfbbf('0xd')]);router[_0xfbbf('0xc')](_0xfbbf('0x9'),auth[_0xfbbf('0x6')](),controller[_0xfbbf('0xe')]);router[_0xfbbf('0xc')](_0xfbbf('0xf'),auth['isAuthenticated'](),interaction['tracked']('mail',_0xfbbf('0x10')),controller[_0xfbbf('0x11')]);router['put'](_0xfbbf('0x12'),auth['isAuthenticated'](),interaction['tracked'](_0xfbbf('0x13'),_0xfbbf('0x14')),controller[_0xfbbf('0x15')]);router[_0xfbbf('0x16')]('/:id',auth[_0xfbbf('0x6')](),interaction[_0xfbbf('0x17')]('mail','mailinteraction:destroy'),controller[_0xfbbf('0x18')]);router['delete'](_0xfbbf('0xf'),auth[_0xfbbf('0x6')](),controller[_0xfbbf('0x19')]);module[_0xfbbf('0x1a')]=router;
\ No newline at end of file
+var _0xab32=['mailinteraction:update','delete','/:id/tags','removeTags','express','Router','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','/:id','/:id/messages','getMessages','/:id/download','download','addMessage','tracked','mail','addTags','put'];(function(_0x1dff6b,_0x1e2ef4){var _0x104102=function(_0x2db782){while(--_0x2db782){_0x1dff6b['push'](_0x1dff6b['shift']());}};_0x104102(++_0x1e2ef4);}(_0xab32,0x164));var _0x2ab3=function(_0xcf581b,_0x4359dd){_0xcf581b=_0xcf581b-0x0;var _0x4f454d=_0xab32[_0xcf581b];return _0x4f454d;};'use strict';var express=require(_0x2ab3('0x0'));var router=express[_0x2ab3('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0x2ab3('0x2'));var controller=require(_0x2ab3('0x3'));router[_0x2ab3('0x4')]('/',auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x6')]);router['get']('/describe',auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x7')]);router[_0x2ab3('0x4')](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),controller['show']);router[_0x2ab3('0x4')](_0x2ab3('0x9'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0xa')]);router[_0x2ab3('0x4')](_0x2ab3('0xb'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0xc')]);router['post']('/',auth[_0x2ab3('0x5')](),controller['create']);router['post']('/:id/messages',auth['isAuthenticated'](),controller[_0x2ab3('0xd')]);router['post']('/:id/tags',auth[_0x2ab3('0x5')](),interaction[_0x2ab3('0xe')](_0x2ab3('0xf'),'mailinteraction:addtags'),controller[_0x2ab3('0x10')]);router[_0x2ab3('0x11')](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),interaction[_0x2ab3('0xe')]('mail',_0x2ab3('0x12')),controller['update']);router['delete'](_0x2ab3('0x8'),auth[_0x2ab3('0x5')](),interaction['tracked'](_0x2ab3('0xf'),'mailinteraction:destroy'),controller['destroy']);router[_0x2ab3('0x13')](_0x2ab3('0x14'),auth[_0x2ab3('0x5')](),controller[_0x2ab3('0x15')]);module['exports']=router;
\ No newline at end of file
index 7cc7ec5..52b89b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac83=['out','sequelize','iconv','BOOLEAN','DATE','STRING','TEXT','long','ENUM'];(function(_0x5ae0a7,_0x3abe5b){var _0x31513c=function(_0x35f11a){while(--_0x35f11a){_0x5ae0a7['push'](_0x5ae0a7['shift']());}};_0x31513c(++_0x3abe5b);}(_0xac83,0xd9));var _0x3ac8=function(_0x1fd4d7,_0x2feafd){_0x1fd4d7=_0x1fd4d7-0x0;var _0x7efe8a=_0xac83[_0x1fd4d7];return _0x7efe8a;};'use strict';var Sequelize=require(_0x3ac8('0x0'));var iconv=require(_0x3ac8('0x1'));module['exports']={'closed':{'type':Sequelize[_0x3ac8('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x3ac8('0x3')]},'disposition':{'type':Sequelize[_0x3ac8('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x3ac8('0x4')]},'note':{'type':Sequelize[_0x3ac8('0x4')]},'inReplyTo':{'type':Sequelize[_0x3ac8('0x4')](0x1fe)},'to':{'type':Sequelize[_0x3ac8('0x4')]},'cc':{'type':Sequelize[_0x3ac8('0x5')](_0x3ac8('0x6'))},'subject':{'type':Sequelize[_0x3ac8('0x5')]()},'attach':{'type':Sequelize[_0x3ac8('0x2')],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x3ac8('0x3')]},'substatus':{'type':Sequelize[_0x3ac8('0x4')](0x3c)},'substatusAt':{'type':Sequelize[_0x3ac8('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x3ac8('0x7')]('in',_0x3ac8('0x8')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x3ac8('0x3')]},'lastMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x3ac8('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x07b5=['ENUM','sequelize','iconv','exports','STRING','TEXT','long','BOOLEAN','out','DATE'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0x07b5,0x10f));var _0x507b=function(_0x14fad0,_0x278d75){_0x14fad0=_0x14fad0-0x0;var _0x5c665f=_0x07b5[_0x14fad0];return _0x5c665f;};'use strict';var Sequelize=require(_0x507b('0x0'));var iconv=require(_0x507b('0x1'));module[_0x507b('0x2')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0x507b('0x3')]},'secondDisposition':{'type':Sequelize[_0x507b('0x3')]},'thirdDisposition':{'type':Sequelize[_0x507b('0x3')]},'note':{'type':Sequelize[_0x507b('0x3')]},'inReplyTo':{'type':Sequelize[_0x507b('0x3')](0x1fe)},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x507b('0x4')](_0x507b('0x5'))},'subject':{'type':Sequelize[_0x507b('0x4')]()},'attach':{'type':Sequelize[_0x507b('0x6')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize[_0x507b('0x3')](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0x507b('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x507b('0x8')]},'lastMsgDirection':{'type':Sequelize[_0x507b('0x9')]('in',_0x507b('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index b48ed84..c8f11da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd0=['transcript-%d-%s.zip','push','Attachment','Attachments','Messages','from','bcc','subject','createdAt','mkdirSync','each','decode','format','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','basename','existsSync','readFileSync','build','writeFileSync','unlinkSync','eml-format','zip-dir','bluebird','util','lodash','juice','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','defaults','localhost','socket.io-emitter','redis','./mailInteraction.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','destroy','then','error','stack','name','send','map','MailInteraction','rawAttributes','type','key','getOptions','findAll','query','user','catch','show','params','keys','filters','attributes','intersection','model','fields','length','merge','options','find','create','update','body','describe','addMessage','MailMessage','ids','omit','nolimit','order','where','pick','filter','$gte','includeAll','include','setTags','spread','Tag','color','emit','mailInteractionTags:save','removeTags','download','unix','join','files','tmp','root','attachments'];(function(_0x524a5a,_0x9f0414){var _0x1475c3=function(_0xd01c04){while(--_0xd01c04){_0x524a5a['push'](_0x524a5a['shift']());}};_0x1475c3(++_0x9f0414);}(_0xedd0,0x7e));var _0x0edd=function(_0x17b5b4,_0x584e6e){_0x17b5b4=_0x17b5b4-0x0;var _0x5e6812=_0xedd0[_0x17b5b4];return _0x5e6812;};'use strict';var emlformat=require(_0x0edd('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0edd('0x1'));var moment=require('moment');var BPromise=require(_0x0edd('0x2'));var util=require(_0x0edd('0x3'));var path=require('path');var fs=require('fs');var _=require(_0x0edd('0x4'));var juice=require(_0x0edd('0x5'));var Redis=require(_0x0edd('0x6'));var interaction=require('../../components/interaction/service');var qs=require(_0x0edd('0x7'));var logger=require(_0x0edd('0x8'))(_0x0edd('0x9'));var config=require(_0x0edd('0xa'));var db=require(_0x0edd('0xb'))['db'];var htmlEntities=require('html-entities');config['redis']=_[_0x0edd('0xc')](config['redis'],{'host':_0x0edd('0xd'),'port':0x18eb});var socket=require(_0x0edd('0xe'))(new Redis(config[_0x0edd('0xf')]));require(_0x0edd('0x10'))[_0x0edd('0x11')](socket);function respondWithStatusCode(_0x1966ec,_0x1498e0){_0x1498e0=_0x1498e0||0xcc;return function(_0x2f9150){if(_0x2f9150){return _0x1966ec[_0x0edd('0x12')](_0x1498e0);}return _0x1966ec[_0x0edd('0x13')](_0x1498e0)[_0x0edd('0x14')]();};}function respondWithResult(_0x28dce6,_0x27e96b){_0x27e96b=_0x27e96b||0xc8;return function(_0x354adf){if(_0x354adf){return _0x28dce6[_0x0edd('0x13')](_0x27e96b)[_0x0edd('0x15')](_0x354adf);}};}function respondWithFilteredResult(_0x4bc0ed,_0x3be1fd){return function(_0x5c1ad5){if(_0x5c1ad5){var _0x5f6a92=typeof _0x3be1fd['offset']===_0x0edd('0x16')&&typeof _0x3be1fd[_0x0edd('0x17')]===_0x0edd('0x16');var _0x38cef4=_0x5c1ad5['count'];var _0x3fce9d=_0x5f6a92?0x0:_0x3be1fd[_0x0edd('0x18')];var _0x35ef02=_0x5f6a92?_0x5c1ad5[_0x0edd('0x19')]:_0x3be1fd['offset']+_0x3be1fd[_0x0edd('0x17')];var _0x23aabe;if(_0x35ef02>=_0x38cef4){_0x35ef02=_0x38cef4;_0x23aabe=0xc8;}else{_0x23aabe=0xce;}_0x4bc0ed[_0x0edd('0x13')](_0x23aabe);return _0x4bc0ed[_0x0edd('0x1a')](_0x0edd('0x1b'),_0x3fce9d+'-'+_0x35ef02+'/'+_0x38cef4)[_0x0edd('0x15')](_0x5c1ad5);}return null;};}function saveUpdates(_0x208a0e){return function(_0x53262a){if(_0x53262a){return _0x53262a['update'](_0x208a0e)['then'](function(_0x1a6921){return _0x1a6921;});}return null;};}function removeEntity(_0x191501){return function(_0x49a977){if(_0x49a977){return _0x49a977[_0x0edd('0x1c')]()[_0x0edd('0x1d')](function(){_0x191501[_0x0edd('0x13')](0xcc)[_0x0edd('0x14')]();});}};}function handleEntityNotFound(_0xfeaa5f){return function(_0x59ae6f){if(!_0x59ae6f){_0xfeaa5f['sendStatus'](0x194);}return _0x59ae6f;};}function handleError(_0x6b1cab,_0xae7ac3){_0xae7ac3=_0xae7ac3||0x1f4;return function(_0x1ac18d){logger[_0x0edd('0x1e')](_0x1ac18d[_0x0edd('0x1f')]);if(_0x1ac18d[_0x0edd('0x20')]){delete _0x1ac18d['name'];}_0x6b1cab[_0x0edd('0x13')](_0xae7ac3)[_0x0edd('0x21')](_0x1ac18d);};}exports['index']=function(_0x2444af,_0x15d734){var _0x4407e7={};var _0x44071b=_[_0x0edd('0x22')](db[_0x0edd('0x23')][_0x0edd('0x24')],function(_0x44ba5f){return{'name':_0x44ba5f['fieldName'],'type':_0x44ba5f[_0x0edd('0x25')][_0x0edd('0x26')]};});_0x4407e7=qs[_0x0edd('0x27')](_0x44071b,_0x2444af);return interaction[_0x0edd('0x28')]('mail',_0x2444af[_0x0edd('0x29')],_0x2444af[_0x0edd('0x2a')],_0x4407e7,_0x44071b)[_0x0edd('0x1d')](respondWithFilteredResult(_0x15d734,_0x4407e7))[_0x0edd('0x2b')](handleError(_0x15d734,null));};exports[_0x0edd('0x2c')]=function(_0x1c707b,_0x19fb97){var _0x31f895={'raw':![],'where':{'id':_0x1c707b[_0x0edd('0x2d')]['id']}},_0x4befcd={};_0x4befcd['model']=_['keys'](db[_0x0edd('0x23')][_0x0edd('0x24')]);_0x4befcd[_0x0edd('0x29')]=_[_0x0edd('0x2e')](_0x1c707b[_0x0edd('0x29')]);_0x4befcd[_0x0edd('0x2f')]=_['intersection'](_0x4befcd['model'],_0x4befcd[_0x0edd('0x29')]);_0x31f895[_0x0edd('0x30')]=_[_0x0edd('0x31')](_0x4befcd[_0x0edd('0x32')],qs['fields'](_0x1c707b[_0x0edd('0x29')][_0x0edd('0x33')]));_0x31f895[_0x0edd('0x30')]=_0x31f895['attributes'][_0x0edd('0x34')]?_0x31f895['attributes']:_0x4befcd['model'];if(_0x1c707b[_0x0edd('0x29')]['includeAll']){_0x31f895['include']=[{'all':!![]}];}_0x31f895=_[_0x0edd('0x35')]({},_0x31f895,_0x1c707b[_0x0edd('0x36')]);return db[_0x0edd('0x23')][_0x0edd('0x37')](_0x31f895)[_0x0edd('0x1d')](handleEntityNotFound(_0x19fb97,null))['then'](respondWithResult(_0x19fb97,null))['catch'](handleError(_0x19fb97,null));};exports[_0x0edd('0x38')]=function(_0x617610,_0x19ae59){return db['MailInteraction'][_0x0edd('0x38')](_0x617610['body'],{})[_0x0edd('0x1d')](respondWithResult(_0x19ae59,0xc9))[_0x0edd('0x2b')](handleError(_0x19ae59,null));};exports[_0x0edd('0x39')]=function(_0x1e2afc,_0x4d7acf){if(_0x1e2afc[_0x0edd('0x3a')]['id']){delete _0x1e2afc[_0x0edd('0x3a')]['id'];}return db[_0x0edd('0x23')][_0x0edd('0x37')]({'where':{'id':_0x1e2afc['params']['id']}})[_0x0edd('0x1d')](handleEntityNotFound(_0x4d7acf,null))[_0x0edd('0x1d')](saveUpdates(_0x1e2afc[_0x0edd('0x3a')],null))[_0x0edd('0x1d')](respondWithResult(_0x4d7acf,null))['catch'](handleError(_0x4d7acf,null));};exports[_0x0edd('0x1c')]=function(_0x261033,_0xd59f34){return db[_0x0edd('0x23')][_0x0edd('0x37')]({'where':{'id':_0x261033[_0x0edd('0x2d')]['id']}})['then'](handleEntityNotFound(_0xd59f34,null))[_0x0edd('0x1d')](removeEntity(_0xd59f34,null))['catch'](handleError(_0xd59f34,null));};exports[_0x0edd('0x3b')]=function(_0x7d62a,_0x5d9366){return db[_0x0edd('0x23')]['describe']()['then'](respondWithResult(_0x5d9366,null))[_0x0edd('0x2b')](handleError(_0x5d9366,null));};exports[_0x0edd('0x3c')]=function(_0x200778,_0x4892b1){return db[_0x0edd('0x3d')][_0x0edd('0x37')]({'where':{'id':_0x200778[_0x0edd('0x2d')]['id']}})[_0x0edd('0x1d')](handleEntityNotFound(_0x4892b1,null))[_0x0edd('0x1d')](function(_0x1a4f62){if(_0x1a4f62){return _0x1a4f62[_0x0edd('0x3c')](_0x200778[_0x0edd('0x3a')][_0x0edd('0x3e')],_[_0x0edd('0x3f')](_0x200778[_0x0edd('0x3a')],['ids','id'])||{});}})[_0x0edd('0x1d')](respondWithResult(_0x4892b1,null))[_0x0edd('0x2b')](handleError(_0x4892b1,null));};exports['getMessages']=function(_0x4df333,_0x46fbb5){var _0x2857e6={'raw':![],'where':{}};var _0x143139={};var _0x3ec4aa={'count':0x0,'rows':[]};return db[_0x0edd('0x23')]['findOne']({'where':{'id':_0x4df333[_0x0edd('0x2d')]['id']}})[_0x0edd('0x1d')](handleEntityNotFound(_0x46fbb5,null))[_0x0edd('0x1d')](function(_0x2f83ed){if(_0x2f83ed){_0x143139[_0x0edd('0x32')]=_[_0x0edd('0x2e')](db[_0x0edd('0x3d')][_0x0edd('0x24')]);_0x143139[_0x0edd('0x29')]=_[_0x0edd('0x2e')](_0x4df333[_0x0edd('0x29')]);_0x143139[_0x0edd('0x2f')]=_['intersection'](_0x143139[_0x0edd('0x32')],_0x143139[_0x0edd('0x29')]);_0x2857e6['attributes']=_[_0x0edd('0x31')](_0x143139['model'],qs[_0x0edd('0x33')](_0x4df333[_0x0edd('0x29')][_0x0edd('0x33')]));_0x2857e6[_0x0edd('0x30')]=_0x2857e6[_0x0edd('0x30')]['length']?_0x2857e6[_0x0edd('0x30')]:_0x143139[_0x0edd('0x32')];if(!_0x4df333[_0x0edd('0x29')]['hasOwnProperty'](_0x0edd('0x40'))){_0x2857e6[_0x0edd('0x17')]=qs[_0x0edd('0x17')](_0x4df333['query'][_0x0edd('0x17')]);_0x2857e6[_0x0edd('0x18')]=qs[_0x0edd('0x18')](_0x4df333['query'][_0x0edd('0x18')]);}_0x2857e6[_0x0edd('0x41')]=qs['sort'](_0x4df333[_0x0edd('0x29')]['sort']);_0x2857e6[_0x0edd('0x42')]=qs[_0x0edd('0x2f')](_[_0x0edd('0x43')](_0x4df333[_0x0edd('0x29')],_0x143139[_0x0edd('0x2f')]));_0x2857e6['where']['MailInteractionId']=_0x2f83ed['id'];if(_0x4df333['query'][_0x0edd('0x44')]){_0x2857e6[_0x0edd('0x42')]=_['merge'](_0x2857e6[_0x0edd('0x42')],{'$or':_[_0x0edd('0x22')](_0x2857e6[_0x0edd('0x30')],function(_0x29e3e7){var _0x208de6={};_0x208de6[_0x29e3e7]={'$like':'%'+_0x4df333['query'][_0x0edd('0x44')]+'%'};return _0x208de6;})});}if(_0x4df333[_0x0edd('0x29')][_0x0edd('0x45')]){var _0x1ad64c=_0x4df333[_0x0edd('0x29')]['$gte']['split'](',');var _0x3bd4ea={};_0x3bd4ea[_0x1ad64c[0x0]]={'$gte':moment(_0x1ad64c[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x2857e6[_0x0edd('0x42')]=_[_0x0edd('0x35')](_0x2857e6[_0x0edd('0x42')],_0x3bd4ea);}_0x2857e6=_[_0x0edd('0x35')]({},_0x2857e6,_0x4df333[_0x0edd('0x36')]);return db[_0x0edd('0x3d')]['count']({'where':_0x2857e6['where']})[_0x0edd('0x1d')](function(_0x217bac){_0x3ec4aa['count']=_0x217bac;if(_0x4df333['query'][_0x0edd('0x46')]){_0x2857e6[_0x0edd('0x47')]=[{'all':!![]}];}return db[_0x0edd('0x3d')][_0x0edd('0x28')](_0x2857e6);})['then'](function(_0x21682b){if(_0x4df333['query']['inlineCss']==='true'){for(var _0x2c4432=0x0;_0x2c4432<_0x21682b[_0x0edd('0x34')];_0x2c4432++){_0x21682b[_0x2c4432][_0x0edd('0x3a')]=juice(_0x21682b[_0x2c4432][_0x0edd('0x3a')]);}}_0x3ec4aa['rows']=_0x21682b;return _0x3ec4aa;});}})[_0x0edd('0x1d')](respondWithFilteredResult(_0x46fbb5,_0x2857e6))[_0x0edd('0x2b')](handleError(_0x46fbb5,null));};exports['addTags']=function(_0x486fa9,_0xb06d69){return db[_0x0edd('0x23')]['find']({'where':{'id':_0x486fa9[_0x0edd('0x2d')]['id']}})[_0x0edd('0x1d')](handleEntityNotFound(_0xb06d69,null))['then'](function(_0x35b567){if(_0x35b567){return _0x35b567[_0x0edd('0x48')](_0x486fa9[_0x0edd('0x3a')][_0x0edd('0x3e')],_['omit'](_0x486fa9[_0x0edd('0x3a')],[_0x0edd('0x3e'),'id'])||{})[_0x0edd('0x49')](function(){return db[_0x0edd('0x4a')][_0x0edd('0x28')]({'attributes':['id',_0x0edd('0x20'),_0x0edd('0x4b')],'where':{'id':_0x486fa9[_0x0edd('0x3a')]['ids']}});})[_0x0edd('0x1d')](function(_0x521f0e){socket[_0x0edd('0x4c')](_0x0edd('0x4d'),{'id':Number(_0x486fa9[_0x0edd('0x2d')]['id']),'tags':_0x521f0e||[]});return{'id':Number(_0x486fa9[_0x0edd('0x2d')]['id']),'tags':_0x521f0e||[]};});}})[_0x0edd('0x1d')](respondWithResult(_0xb06d69,null))[_0x0edd('0x2b')](handleError(_0xb06d69,null));};exports[_0x0edd('0x4e')]=function(_0x124565,_0x48f313){return db[_0x0edd('0x23')][_0x0edd('0x37')]({'where':{'id':_0x124565[_0x0edd('0x2d')]['id']}})[_0x0edd('0x1d')](handleEntityNotFound(_0x48f313,null))['then'](function(_0xf845f0){if(_0xf845f0){return _0xf845f0[_0x0edd('0x4e')](_0x124565[_0x0edd('0x29')]['ids']);}})[_0x0edd('0x1d')](respondWithStatusCode(_0x48f313,null))[_0x0edd('0x2b')](handleError(_0x48f313,null));};exports[_0x0edd('0x4f')]=function(_0x1cb270,_0x7c27f2){var _0x506e85=moment()[_0x0edd('0x50')]()['toString']();var _0x338e0f=path[_0x0edd('0x51')](config['root'],'server',_0x0edd('0x52'),_0x0edd('0x53'));var _0x230dc4=path[_0x0edd('0x51')](config[_0x0edd('0x54')],'server',_0x0edd('0x52'),_0x0edd('0x55'));var _0x2a7c50=path[_0x0edd('0x51')](_0x338e0f,_0x506e85);var _0x470e99=util['format'](_0x0edd('0x56'),_0x1cb270['params']['id'],_0x506e85);var _0x10920d=path[_0x0edd('0x51')](_0x338e0f,_0x470e99);var _0x6d4a50=[];if(_0x1cb270['query'][_0x0edd('0x55')]){_0x6d4a50[_0x0edd('0x57')]({'model':db[_0x0edd('0x58')],'as':_0x0edd('0x59'),'raw':!![]});}var _0x5681bf=[{'model':db[_0x0edd('0x3d')],'as':_0x0edd('0x5a'),'attributes':['id',_0x0edd('0x3a'),_0x0edd('0x5b'),'to','cc',_0x0edd('0x5c'),_0x0edd('0x5d'),_0x0edd('0x5e')],'where':{'secret':![]},'order':qs['sort']('id'),'include':_0x6d4a50}];return db[_0x0edd('0x23')][_0x0edd('0x37')]({'where':{'id':_0x1cb270['params']['id']},'include':_0x5681bf})['then'](handleEntityNotFound(_0x7c27f2,null))[_0x0edd('0x1d')](function(_0x3b6e5b){if(_0x3b6e5b&&_0x3b6e5b[_0x0edd('0x5a')]){var _0x4dc555=_0x3b6e5b['get']({'plain':!![]});fs[_0x0edd('0x5f')](_0x2a7c50);return BPromise[_0x0edd('0x60')](_0x4dc555[_0x0edd('0x5a')],function(_0x4c7048,_0x1bc622){var _0x23113b={'from':_0x4c7048[_0x0edd('0x5b')],'to':_0x4c7048['to']||'missing.recipient@your.company.com','subject':_0x4c7048[_0x0edd('0x5d')],'html':htmlEntities[_0x0edd('0x61')](_0x4c7048[_0x0edd('0x3a')]),'headers':{'Date':moment(_0x4c7048[_0x0edd('0x5e')])[_0x0edd('0x62')](_0x0edd('0x63'))},'attachments':[]};if(_0x4c7048['cc']){_0x23113b['headers']['Cc']=_0x4c7048['cc'];}if(_0x4c7048[_0x0edd('0x5c')]){_0x23113b['headers']['Bcc']=_0x4c7048['bcc'];}return new BPromise(function(_0x86326,_0x562bd9){if(_0x4c7048[_0x0edd('0x59')]){for(var _0x4eba5b=0x0;_0x4eba5b<_0x4c7048[_0x0edd('0x59')]['length'];_0x4eba5b++){var _0x496839=_0x4c7048['Attachments'][_0x4eba5b];var _0x513191=path[_0x0edd('0x51')](_0x230dc4,_0x496839[_0x0edd('0x64')]);if(fs[_0x0edd('0x65')](_0x513191)){_0x23113b[_0x0edd('0x55')][_0x0edd('0x57')]({'name':_0x496839['name'],'contentType':_0x496839[_0x0edd('0x25')],'data':fs[_0x0edd('0x66')](_0x513191)});}}}emlformat[_0x0edd('0x67')](_0x23113b,function(_0x531650,_0x3810ef){if(_0x531650)return _0x562bd9(_0x531650);fs[_0x0edd('0x68')](path[_0x0edd('0x51')](_0x2a7c50,util[_0x0edd('0x62')]('message%d.eml',_0x1bc622)),_0x3810ef);return _0x86326(_0x3810ef);});});})[_0x0edd('0x1d')](function(){return new BPromise(function(_0x352e5f,_0x23159c){zipdir(_0x2a7c50,{'saveTo':_0x10920d},function(_0xa532be,_0x4e2030){if(_0xa532be)return _0x23159c(_0xa532be);return _0x352e5f(_0x4e2030);});})[_0x0edd('0x1d')](function(){return new BPromise(function(_0x36203c,_0x441f67){rimraf(_0x2a7c50,function(_0x421e63){if(_0x421e63)_0x441f67(_0x421e63);return _0x36203c();});});})[_0x0edd('0x1d')](function(){return _0x7c27f2[_0x0edd('0x4f')](_0x10920d,_0x470e99,function(_0x44108b){if(!_0x44108b)fs[_0x0edd('0x69')](_0x10920d);});});});}else{return _0x7c27f2[_0x0edd('0x12')](0xc8);}})[_0x0edd('0x2b')](handleError(_0x7c27f2,null));};
\ No newline at end of file
+var _0x04de=['addTags','setTags','color','emit','mailInteractionTags:save','removeTags','download','unix','toString','join','root','server','files','attachments','transcript-%d-%s.zip','Attachment','Messages','from','createdAt','sort','get','mkdirSync','each','missing.recipient@your.company.com','subject','decode','bcc','Bcc','Attachments','basename','existsSync','push','type','build','message%d.eml','unlinkSync','sendStatus','eml-format','rimraf','zip-dir','moment','bluebird','util','path','lodash','juice','../../components/interaction/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','update','then','stack','name','index','rawAttributes','fieldName','key','getOptions','findAll','mail','user','catch','show','keys','MailInteraction','query','filters','intersection','model','attributes','fields','length','includeAll','include','merge','find','body','params','destroy','describe','addMessage','MailMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','pick','MailInteractionId','filter','where','map','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','options','inlineCss','true','rows'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0x04de,0x18d));var _0xe04d=function(_0x447d21,_0x57c5e9){_0x447d21=_0x447d21-0x0;var _0x12df28=_0x04de[_0x447d21];return _0x12df28;};'use strict';var emlformat=require(_0xe04d('0x0'));var rimraf=require(_0xe04d('0x1'));var zipdir=require(_0xe04d('0x2'));var moment=require(_0xe04d('0x3'));var BPromise=require(_0xe04d('0x4'));var util=require(_0xe04d('0x5'));var path=require(_0xe04d('0x6'));var fs=require('fs');var _=require(_0xe04d('0x7'));var juice=require(_0xe04d('0x8'));var Redis=require('ioredis');var interaction=require(_0xe04d('0x9'));var qs=require(_0xe04d('0xa'));var logger=require(_0xe04d('0xb'))(_0xe04d('0xc'));var config=require(_0xe04d('0xd'));var db=require(_0xe04d('0xe'))['db'];var htmlEntities=require(_0xe04d('0xf'));config[_0xe04d('0x10')]=_[_0xe04d('0x11')](config[_0xe04d('0x10')],{'host':'localhost','port':0x18eb});var socket=require(_0xe04d('0x12'))(new Redis(config[_0xe04d('0x10')]));require(_0xe04d('0x13'))[_0xe04d('0x14')](socket);function respondWithStatusCode(_0x176abf,_0x465be1){_0x465be1=_0x465be1||0xcc;return function(_0x38317d){if(_0x38317d){return _0x176abf['sendStatus'](_0x465be1);}return _0x176abf[_0xe04d('0x15')](_0x465be1)[_0xe04d('0x16')]();};}function respondWithResult(_0x1fbc64,_0x461edd){_0x461edd=_0x461edd||0xc8;return function(_0x3ed352){if(_0x3ed352){return _0x1fbc64[_0xe04d('0x15')](_0x461edd)[_0xe04d('0x17')](_0x3ed352);}};}function respondWithFilteredResult(_0x254b10,_0x486b63){return function(_0x326710){if(_0x326710){var _0x206bfe=typeof _0x486b63['offset']===_0xe04d('0x18')&&typeof _0x486b63[_0xe04d('0x19')]===_0xe04d('0x18');var _0x55535=_0x326710[_0xe04d('0x1a')];var _0x3f518f=_0x206bfe?0x0:_0x486b63['offset'];var _0x58f96e=_0x206bfe?_0x326710['count']:_0x486b63[_0xe04d('0x1b')]+_0x486b63[_0xe04d('0x19')];var _0x1446d8;if(_0x58f96e>=_0x55535){_0x58f96e=_0x55535;_0x1446d8=0xc8;}else{_0x1446d8=0xce;}_0x254b10[_0xe04d('0x15')](_0x1446d8);return _0x254b10[_0xe04d('0x1c')](_0xe04d('0x1d'),_0x3f518f+'-'+_0x58f96e+'/'+_0x55535)['json'](_0x326710);}return null;};}function saveUpdates(_0x280b34){return function(_0x58c6b4){if(_0x58c6b4){return _0x58c6b4[_0xe04d('0x1e')](_0x280b34)[_0xe04d('0x1f')](function(_0x2d76ca){return _0x2d76ca;});}return null;};}function removeEntity(_0x379856){return function(_0x845f98){if(_0x845f98){return _0x845f98['destroy']()[_0xe04d('0x1f')](function(){_0x379856[_0xe04d('0x15')](0xcc)[_0xe04d('0x16')]();});}};}function handleEntityNotFound(_0x1e8c0c){return function(_0x2f1566){if(!_0x2f1566){_0x1e8c0c['sendStatus'](0x194);}return _0x2f1566;};}function handleError(_0x57be97,_0x28bc79){_0x28bc79=_0x28bc79||0x1f4;return function(_0x3fc044){logger['error'](_0x3fc044[_0xe04d('0x20')]);if(_0x3fc044[_0xe04d('0x21')]){delete _0x3fc044[_0xe04d('0x21')];}_0x57be97[_0xe04d('0x15')](_0x28bc79)['send'](_0x3fc044);};}exports[_0xe04d('0x22')]=function(_0x3313d2,_0x968846){var _0x2e406a={};var _0x13731e=_['map'](db['MailInteraction'][_0xe04d('0x23')],function(_0x4ec839){return{'name':_0x4ec839[_0xe04d('0x24')],'type':_0x4ec839['type'][_0xe04d('0x25')]};});_0x2e406a=qs[_0xe04d('0x26')](_0x13731e,_0x3313d2);return interaction[_0xe04d('0x27')](_0xe04d('0x28'),_0x3313d2['query'],_0x3313d2[_0xe04d('0x29')],_0x2e406a,_0x13731e)[_0xe04d('0x1f')](respondWithFilteredResult(_0x968846,_0x2e406a))[_0xe04d('0x2a')](handleError(_0x968846,null));};exports[_0xe04d('0x2b')]=function(_0x269e74,_0x16c62b){var _0x3cb061={'raw':![],'where':{'id':_0x269e74['params']['id']}},_0x1d48c8={};_0x1d48c8['model']=_[_0xe04d('0x2c')](db[_0xe04d('0x2d')]['rawAttributes']);_0x1d48c8[_0xe04d('0x2e')]=_['keys'](_0x269e74[_0xe04d('0x2e')]);_0x1d48c8[_0xe04d('0x2f')]=_[_0xe04d('0x30')](_0x1d48c8[_0xe04d('0x31')],_0x1d48c8[_0xe04d('0x2e')]);_0x3cb061[_0xe04d('0x32')]=_[_0xe04d('0x30')](_0x1d48c8[_0xe04d('0x31')],qs[_0xe04d('0x33')](_0x269e74[_0xe04d('0x2e')][_0xe04d('0x33')]));_0x3cb061[_0xe04d('0x32')]=_0x3cb061[_0xe04d('0x32')][_0xe04d('0x34')]?_0x3cb061['attributes']:_0x1d48c8[_0xe04d('0x31')];if(_0x269e74['query'][_0xe04d('0x35')]){_0x3cb061[_0xe04d('0x36')]=[{'all':!![]}];}_0x3cb061=_[_0xe04d('0x37')]({},_0x3cb061,_0x269e74['options']);return db['MailInteraction'][_0xe04d('0x38')](_0x3cb061)[_0xe04d('0x1f')](handleEntityNotFound(_0x16c62b,null))[_0xe04d('0x1f')](respondWithResult(_0x16c62b,null))[_0xe04d('0x2a')](handleError(_0x16c62b,null));};exports['create']=function(_0xebf1d7,_0x4fc331){return db['MailInteraction']['create'](_0xebf1d7[_0xe04d('0x39')],{})[_0xe04d('0x1f')](respondWithResult(_0x4fc331,0xc9))[_0xe04d('0x2a')](handleError(_0x4fc331,null));};exports[_0xe04d('0x1e')]=function(_0x512a3d,_0x1d0fc0){if(_0x512a3d[_0xe04d('0x39')]['id']){delete _0x512a3d[_0xe04d('0x39')]['id'];}return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x512a3d[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x1d0fc0,null))['then'](saveUpdates(_0x512a3d[_0xe04d('0x39')],null))[_0xe04d('0x1f')](respondWithResult(_0x1d0fc0,null))['catch'](handleError(_0x1d0fc0,null));};exports[_0xe04d('0x3b')]=function(_0x1c1093,_0x2f247c){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x1c1093['params']['id']}})['then'](handleEntityNotFound(_0x2f247c,null))[_0xe04d('0x1f')](removeEntity(_0x2f247c,null))[_0xe04d('0x2a')](handleError(_0x2f247c,null));};exports[_0xe04d('0x3c')]=function(_0x1058a2,_0x24407e){return db['MailInteraction'][_0xe04d('0x3c')]()[_0xe04d('0x1f')](respondWithResult(_0x24407e,null))[_0xe04d('0x2a')](handleError(_0x24407e,null));};exports[_0xe04d('0x3d')]=function(_0x1c8ae6,_0x813b83){return db[_0xe04d('0x3e')][_0xe04d('0x38')]({'where':{'id':_0x1c8ae6[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x813b83,null))[_0xe04d('0x1f')](function(_0x34b935){if(_0x34b935){return _0x34b935[_0xe04d('0x3d')](_0x1c8ae6['body'][_0xe04d('0x3f')],_[_0xe04d('0x40')](_0x1c8ae6['body'],[_0xe04d('0x3f'),'id'])||{});}})[_0xe04d('0x1f')](respondWithResult(_0x813b83,null))[_0xe04d('0x2a')](handleError(_0x813b83,null));};exports[_0xe04d('0x41')]=function(_0x17c2ac,_0x5862a5){var _0x4de99b={'raw':![],'where':{}};var _0x3210ce={};var _0x15d10b={'count':0x0,'rows':[]};return db[_0xe04d('0x2d')][_0xe04d('0x42')]({'where':{'id':_0x17c2ac[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x5862a5,null))[_0xe04d('0x1f')](function(_0x4ff98d){if(_0x4ff98d){_0x3210ce[_0xe04d('0x31')]=_['keys'](db[_0xe04d('0x3e')][_0xe04d('0x23')]);_0x3210ce['query']=_[_0xe04d('0x2c')](_0x17c2ac['query']);_0x3210ce[_0xe04d('0x2f')]=_[_0xe04d('0x30')](_0x3210ce[_0xe04d('0x31')],_0x3210ce[_0xe04d('0x2e')]);_0x4de99b['attributes']=_[_0xe04d('0x30')](_0x3210ce[_0xe04d('0x31')],qs[_0xe04d('0x33')](_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x33')]));_0x4de99b[_0xe04d('0x32')]=_0x4de99b[_0xe04d('0x32')]['length']?_0x4de99b['attributes']:_0x3210ce['model'];if(!_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x43')](_0xe04d('0x44'))){_0x4de99b['limit']=qs[_0xe04d('0x19')](_0x17c2ac[_0xe04d('0x2e')]['limit']);_0x4de99b['offset']=qs['offset'](_0x17c2ac['query']['offset']);}_0x4de99b[_0xe04d('0x45')]=qs['sort'](_0x17c2ac[_0xe04d('0x2e')]['sort']);_0x4de99b['where']=qs[_0xe04d('0x2f')](_[_0xe04d('0x46')](_0x17c2ac[_0xe04d('0x2e')],_0x3210ce[_0xe04d('0x2f')]));_0x4de99b['where'][_0xe04d('0x47')]=_0x4ff98d['id'];if(_0x17c2ac['query'][_0xe04d('0x48')]){_0x4de99b[_0xe04d('0x49')]=_[_0xe04d('0x37')](_0x4de99b[_0xe04d('0x49')],{'$or':_[_0xe04d('0x4a')](_0x4de99b[_0xe04d('0x32')],function(_0x246228){var _0x5be8a2={};_0x5be8a2[_0x246228]={'$like':'%'+_0x17c2ac['query'][_0xe04d('0x48')]+'%'};return _0x5be8a2;})});}if(_0x17c2ac['query'][_0xe04d('0x4b')]){var _0x48f9b0=_0x17c2ac['query'][_0xe04d('0x4b')][_0xe04d('0x4c')](',');var _0xce554e={};_0xce554e[_0x48f9b0[0x0]]={'$gte':moment(_0x48f9b0[0x1])[_0xe04d('0x4d')](_0xe04d('0x4e'))};_0x4de99b[_0xe04d('0x49')]=_[_0xe04d('0x37')](_0x4de99b[_0xe04d('0x49')],_0xce554e);}_0x4de99b=_[_0xe04d('0x37')]({},_0x4de99b,_0x17c2ac[_0xe04d('0x4f')]);return db['MailMessage'][_0xe04d('0x1a')]({'where':_0x4de99b[_0xe04d('0x49')]})[_0xe04d('0x1f')](function(_0x4e3e79){_0x15d10b[_0xe04d('0x1a')]=_0x4e3e79;if(_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x35')]){_0x4de99b[_0xe04d('0x36')]=[{'all':!![]}];}return db[_0xe04d('0x3e')]['findAll'](_0x4de99b);})[_0xe04d('0x1f')](function(_0x28ec68){if(_0x17c2ac[_0xe04d('0x2e')][_0xe04d('0x50')]===_0xe04d('0x51')){for(var _0x1172b5=0x0;_0x1172b5<_0x28ec68[_0xe04d('0x34')];_0x1172b5++){_0x28ec68[_0x1172b5]['body']=juice(_0x28ec68[_0x1172b5][_0xe04d('0x39')]);}}_0x15d10b[_0xe04d('0x52')]=_0x28ec68;return _0x15d10b;});}})[_0xe04d('0x1f')](respondWithFilteredResult(_0x5862a5,_0x4de99b))[_0xe04d('0x2a')](handleError(_0x5862a5,null));};exports[_0xe04d('0x53')]=function(_0x4276c9,_0x230a65){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x4276c9[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x230a65,null))[_0xe04d('0x1f')](function(_0x14fe41){if(_0x14fe41){return _0x14fe41[_0xe04d('0x54')](_0x4276c9[_0xe04d('0x39')][_0xe04d('0x3f')],_['omit'](_0x4276c9[_0xe04d('0x39')],['ids','id'])||{})['spread'](function(){return db['Tag'][_0xe04d('0x27')]({'attributes':['id',_0xe04d('0x21'),_0xe04d('0x55')],'where':{'id':_0x4276c9[_0xe04d('0x39')]['ids']}});})[_0xe04d('0x1f')](function(_0x430e39){socket[_0xe04d('0x56')](_0xe04d('0x57'),{'id':Number(_0x4276c9[_0xe04d('0x3a')]['id']),'tags':_0x430e39||[]});return{'id':Number(_0x4276c9['params']['id']),'tags':_0x430e39||[]};});}})['then'](respondWithResult(_0x230a65,null))[_0xe04d('0x2a')](handleError(_0x230a65,null));};exports[_0xe04d('0x58')]=function(_0x3a297a,_0x41618b){return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x3a297a[_0xe04d('0x3a')]['id']}})[_0xe04d('0x1f')](handleEntityNotFound(_0x41618b,null))[_0xe04d('0x1f')](function(_0x89b0d){if(_0x89b0d){return _0x89b0d[_0xe04d('0x58')](_0x3a297a[_0xe04d('0x2e')][_0xe04d('0x3f')]);}})['then'](respondWithStatusCode(_0x41618b,null))[_0xe04d('0x2a')](handleError(_0x41618b,null));};exports[_0xe04d('0x59')]=function(_0x49760a,_0x31c3a8){var _0x58e105=moment()[_0xe04d('0x5a')]()[_0xe04d('0x5b')]();var _0x3bdb81=path[_0xe04d('0x5c')](config[_0xe04d('0x5d')],_0xe04d('0x5e'),_0xe04d('0x5f'),'tmp');var _0x1c0771=path['join'](config['root'],_0xe04d('0x5e'),_0xe04d('0x5f'),_0xe04d('0x60'));var _0x26a560=path['join'](_0x3bdb81,_0x58e105);var _0x20a5c2=util[_0xe04d('0x4d')](_0xe04d('0x61'),_0x49760a[_0xe04d('0x3a')]['id'],_0x58e105);var _0x42c3a4=path['join'](_0x3bdb81,_0x20a5c2);var _0x38912e=[];if(_0x49760a[_0xe04d('0x2e')][_0xe04d('0x60')]){_0x38912e['push']({'model':db[_0xe04d('0x62')],'as':'Attachments','raw':!![]});}var _0x5f289c=[{'model':db[_0xe04d('0x3e')],'as':_0xe04d('0x63'),'attributes':['id','body',_0xe04d('0x64'),'to','cc','bcc','subject',_0xe04d('0x65')],'where':{'secret':![]},'order':qs[_0xe04d('0x66')]('id'),'include':_0x38912e}];return db[_0xe04d('0x2d')][_0xe04d('0x38')]({'where':{'id':_0x49760a[_0xe04d('0x3a')]['id']},'include':_0x5f289c})[_0xe04d('0x1f')](handleEntityNotFound(_0x31c3a8,null))['then'](function(_0x44ce94){if(_0x44ce94&&_0x44ce94[_0xe04d('0x63')]){var _0x3b5fd8=_0x44ce94[_0xe04d('0x67')]({'plain':!![]});fs[_0xe04d('0x68')](_0x26a560);return BPromise[_0xe04d('0x69')](_0x3b5fd8[_0xe04d('0x63')],function(_0x26b765,_0x176ff8){var _0x2e3431={'from':_0x26b765[_0xe04d('0x64')],'to':_0x26b765['to']||_0xe04d('0x6a'),'subject':_0x26b765[_0xe04d('0x6b')],'html':htmlEntities[_0xe04d('0x6c')](_0x26b765[_0xe04d('0x39')]),'headers':{'Date':moment(_0x26b765[_0xe04d('0x65')])[_0xe04d('0x4d')]('ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ')},'attachments':[]};if(_0x26b765['cc']){_0x2e3431['headers']['Cc']=_0x26b765['cc'];}if(_0x26b765[_0xe04d('0x6d')]){_0x2e3431['headers'][_0xe04d('0x6e')]=_0x26b765[_0xe04d('0x6d')];}return new BPromise(function(_0x215c5e,_0x580127){if(_0x26b765[_0xe04d('0x6f')]){for(var _0x2977de=0x0;_0x2977de<_0x26b765[_0xe04d('0x6f')][_0xe04d('0x34')];_0x2977de++){var _0x146f3a=_0x26b765[_0xe04d('0x6f')][_0x2977de];var _0x4edc22=path[_0xe04d('0x5c')](_0x1c0771,_0x146f3a[_0xe04d('0x70')]);if(fs[_0xe04d('0x71')](_0x4edc22)){_0x2e3431[_0xe04d('0x60')][_0xe04d('0x72')]({'name':_0x146f3a['name'],'contentType':_0x146f3a[_0xe04d('0x73')],'data':fs['readFileSync'](_0x4edc22)});}}}emlformat[_0xe04d('0x74')](_0x2e3431,function(_0x6cf444,_0x3ff1c2){if(_0x6cf444)return _0x580127(_0x6cf444);fs['writeFileSync'](path[_0xe04d('0x5c')](_0x26a560,util['format'](_0xe04d('0x75'),_0x176ff8)),_0x3ff1c2);return _0x215c5e(_0x3ff1c2);});});})['then'](function(){return new BPromise(function(_0x404830,_0x1b14c5){zipdir(_0x26a560,{'saveTo':_0x42c3a4},function(_0x488cbb,_0x46e8f9){if(_0x488cbb)return _0x1b14c5(_0x488cbb);return _0x404830(_0x46e8f9);});})['then'](function(){return new BPromise(function(_0x497670,_0x3f8490){rimraf(_0x26a560,function(_0x24cd32){if(_0x24cd32)_0x3f8490(_0x24cd32);return _0x497670();});});})['then'](function(){return _0x31c3a8[_0xe04d('0x59')](_0x42c3a4,_0x20a5c2,function(_0x455ce3){if(!_0x455ce3)fs[_0xe04d('0x76')](_0x42c3a4);});});});}else{return _0x31c3a8[_0xe04d('0x77')](0xc8);}})[_0xe04d('0x2a')](handleError(_0x31c3a8,null));};
\ No newline at end of file
index 2dd7eba..2801129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b3a=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','MailMessage','setMaxListeners','save','update','remove','getUsers','Users','map','then','setDataValue'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0x4b3a,0x137));var _0xa4b3=function(_0x568cbc,_0x200d30){_0x568cbc=_0x568cbc-0x0;var _0x43be55=_0x4b3a[_0x568cbc];return _0x43be55;};'use strict';var EventEmitter=require(_0xa4b3('0x0'));var MailInteraction=require('../../mysqldb')['db']['MailInteraction'];var MailMessage=require(_0xa4b3('0x1'))['db'][_0xa4b3('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xa4b3('0x3')](0x0);var events={'afterCreate':_0xa4b3('0x4'),'afterUpdate':_0xa4b3('0x5'),'afterDestroy':_0xa4b3('0x6')};function emitEvent(_0x2c43d5){return function(_0x2f8da5,_0x3c331,_0x1c7d0d){_0x2f8da5[_0xa4b3('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x21ab11){_0x2f8da5['setDataValue'](_0xa4b3('0x8'),_0x21ab11[_0xa4b3('0x9')](function(_0x2ba581){return{'id':_0x2ba581['id']};}));return MailMessage['findAll']({'where':{'MailInteractionId':_0x2f8da5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xa4b3('0xa')](function(_0x53ca2f){_0x2f8da5[_0xa4b3('0xb')](_0xa4b3('0xc'),_0x53ca2f[_0xa4b3('0xd')]);MailInteractionEvents[_0xa4b3('0xe')](_0x2c43d5+':'+_0x2f8da5['id'],_0x2f8da5);MailInteractionEvents[_0xa4b3('0xe')](_0x2c43d5,_0x2f8da5);_0x1c7d0d(null);})[_0xa4b3('0xf')](_0x1c7d0d(null));};}for(var e in events){if(events[_0xa4b3('0x10')](e)){var event=events[e];MailInteraction[_0xa4b3('0x11')](e,emitEvent(event));}}module[_0xa4b3('0x12')]=MailInteractionEvents;
\ No newline at end of file
+var _0x242e=['length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','update','remove','getUsers','then','Users','map','findAll','setDataValue'];(function(_0xb691c5,_0x56bd81){var _0x51b938=function(_0x25ea5a){while(--_0x25ea5a){_0xb691c5['push'](_0xb691c5['shift']());}};_0x51b938(++_0x56bd81);}(_0x242e,0x138));var _0xe242=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x242e[_0x413feb];return _0x40ee88;};'use strict';var EventEmitter=require(_0xe242('0x0'));var MailInteraction=require(_0xe242('0x1'))['db']['MailInteraction'];var MailMessage=require('../../mysqldb')['db']['MailMessage'];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0xe242('0x2')](0x0);var events={'afterCreate':_0xe242('0x3'),'afterUpdate':_0xe242('0x4'),'afterDestroy':_0xe242('0x5')};function emitEvent(_0x5db6e4){return function(_0x2245b5,_0x149e3c,_0x211b8e){_0x2245b5[_0xe242('0x6')]({'attributes':['id'],'raw':!![]})[_0xe242('0x7')](function(_0x3e15c9){_0x2245b5['setDataValue'](_0xe242('0x8'),_0x3e15c9[_0xe242('0x9')](function(_0x52c7fa){return{'id':_0x52c7fa['id']};}));return MailMessage[_0xe242('0xa')]({'where':{'MailInteractionId':_0x2245b5['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe242('0x7')](function(_0x16fdfb){_0x2245b5[_0xe242('0xb')]('unreadMessages',_0x16fdfb[_0xe242('0xc')]);MailInteractionEvents['emit'](_0x5db6e4+':'+_0x2245b5['id'],_0x2245b5);MailInteractionEvents[_0xe242('0xd')](_0x5db6e4,_0x2245b5);_0x211b8e(null);})[_0xe242('0xe')](_0x211b8e(null));};}for(var e in events){if(events[_0xe242('0xf')](e)){var event=events[e];MailInteraction[_0xe242('0x10')](e,emitEvent(event));}}module[_0xe242('0x11')]=MailInteractionEvents;
\ No newline at end of file
index b9c25d0..ad0c678 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5541=['exports','define','MailInteraction','mail_interactions','fti_mail_interactions','subject','FULLTEXT','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','substatus','models','get','MailMessage','then','catch','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./mailInteraction.attributes'];(function(_0x232b6b,_0x584a67){var _0x2ce4a6=function(_0xfc4dc4){while(--_0xfc4dc4){_0x232b6b['push'](_0x232b6b['shift']());}};_0x2ce4a6(++_0x584a67);}(_0x5541,0xa6));var _0x1554=function(_0x408e38,_0x23cda8){_0x408e38=_0x408e38-0x0;var _0x426b0e=_0x5541[_0x408e38];return _0x426b0e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1554('0x0'))(_0x1554('0x1'));var moment=require(_0x1554('0x2'));var BPromise=require(_0x1554('0x3'));var rp=require(_0x1554('0x4'));var fs=require('fs');var path=require(_0x1554('0x5'));var rimraf=require(_0x1554('0x6'));var config=require('../../config/environment');var attributes=require(_0x1554('0x7'));module[_0x1554('0x8')]=function(_0x200bc4,_0xea2aa0){return _0x200bc4[_0x1554('0x9')](_0x1554('0xa'),attributes,{'tableName':_0x1554('0xb'),'paranoid':![],'indexes':[{'name':_0x1554('0xc'),'fields':[_0x1554('0xd'),'to'],'type':_0x1554('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xce0c0,_0x3adad0,_0x18a9bf){if(_0xce0c0['substatus']){_0xce0c0[_0x1554('0xf')]=moment()[_0x1554('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0xce0c0[_0x1554('0x11')]){_0xce0c0[_0x1554('0x12')]=moment()[_0x1554('0x10')](_0x1554('0x13'));}_0x18a9bf(null,_0x3adad0);},'beforeUpdate':function(_0x27063e,_0x320745,_0x34eee7){if(_0x27063e[_0x1554('0x14')]('substatus')){_0x27063e['substatusAt']=_0x27063e[_0x1554('0x15')]?moment()[_0x1554('0x10')](_0x1554('0x13')):null;}if(_0x27063e[_0x1554('0x14')](_0x1554('0x11'))){_0x27063e['closedAt']=moment()[_0x1554('0x10')](_0x1554('0x13'));_0x27063e[_0x1554('0x15')]=null;_0x27063e[_0x1554('0xf')]=null;}_0x34eee7(null,_0x27063e);},'afterUpdate':function(_0x4388a3,_0x160c73,_0x3a3157){var _0x2e40af=_0x200bc4[_0x1554('0x16')];var _0x49ee98=_0x4388a3[_0x1554('0x17')]({'plain':!![]});if(_0x49ee98[_0x1554('0x11')]){return _0x2e40af[_0x1554('0x18')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x49ee98['id']}})[_0x1554('0x19')](function(){_0x3a3157();})[_0x1554('0x1a')](function(_0x57613f){_0x3a3157(_0x57613f);});}else{_0x3a3157();}}},'charset':_0x1554('0x1b'),'collate':_0x1554('0x1c')});};
\ No newline at end of file
+var _0xc428=['substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','format','changed','models','get','update','then','catch','utf8mb4','lodash','../../config/logger','api','path','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','subject','FULLTEXT'];(function(_0x227244,_0x4f6d98){var _0xb00dd=function(_0x398edb){while(--_0x398edb){_0x227244['push'](_0x227244['shift']());}};_0xb00dd(++_0x4f6d98);}(_0xc428,0x6d));var _0x8c42=function(_0x1225d8,_0x209f3e){_0x1225d8=_0x1225d8-0x0;var _0x422bcb=_0xc428[_0x1225d8];return _0x422bcb;};'use strict';var _=require(_0x8c42('0x0'));var util=require('util');var logger=require(_0x8c42('0x1'))(_0x8c42('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8c42('0x3'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x8c42('0x4'));module[_0x8c42('0x5')]=function(_0x39c0fb,_0x278613){return _0x39c0fb[_0x8c42('0x6')]('MailInteraction',attributes,{'tableName':_0x8c42('0x7'),'paranoid':![],'indexes':[{'name':_0x8c42('0x8'),'fields':[_0x8c42('0x9'),'to'],'type':_0x8c42('0xa')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x43ed86,_0x220719,_0x5694db){if(_0x43ed86[_0x8c42('0xb')]){_0x43ed86[_0x8c42('0xc')]=moment()['format'](_0x8c42('0xd'));}if(_0x43ed86[_0x8c42('0xe')]){_0x43ed86[_0x8c42('0xf')]=moment()[_0x8c42('0x10')](_0x8c42('0xd'));}_0x5694db(null,_0x220719);},'beforeUpdate':function(_0x2e8585,_0x19d5dc,_0x1a87bf){if(_0x2e8585[_0x8c42('0x11')](_0x8c42('0xb'))){_0x2e8585[_0x8c42('0xc')]=_0x2e8585[_0x8c42('0xb')]?moment()['format'](_0x8c42('0xd')):null;}if(_0x2e8585[_0x8c42('0x11')](_0x8c42('0xe'))){_0x2e8585[_0x8c42('0xf')]=moment()[_0x8c42('0x10')](_0x8c42('0xd'));_0x2e8585[_0x8c42('0xb')]=null;_0x2e8585[_0x8c42('0xc')]=null;}_0x1a87bf(null,_0x2e8585);},'afterUpdate':function(_0x3b6985,_0x258f72,_0x47bc38){var _0x558bd0=_0x39c0fb[_0x8c42('0x12')];var _0x3bb231=_0x3b6985[_0x8c42('0x13')]({'plain':!![]});if(_0x3bb231[_0x8c42('0xe')]){return _0x558bd0['MailMessage'][_0x8c42('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x3bb231['id']}})[_0x8c42('0x15')](function(){_0x47bc38();})[_0x8c42('0x16')](function(_0x5c4db0){_0x47bc38(_0x5c4db0);});}else{_0x47bc38();}}},'charset':_0x8c42('0x17'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index ac9b3b4..9e9fa73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa51f=['debug','MailInteraction,\x20%s,\x20%s,\x20%s','error','code','message','result','UpdateMailInteraction','MailInteraction','body','options','raw','limit','stringify','catch','find','where','ids','AddTags','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','http','redis','socket.io-emitter','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent'];(function(_0x4e922d,_0x2952ad){var _0x57a8e1=function(_0x5ec0df){while(--_0x5ec0df){_0x4e922d['push'](_0x4e922d['shift']());}};_0x57a8e1(++_0x2952ad);}(_0xa51f,0x1d9));var _0xfa51=function(_0x139eb2,_0x3d7e18){_0x139eb2=_0x139eb2-0x0;var _0x2a5657=_0xa51f[_0x139eb2];return _0x2a5657;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xfa51('0x0'));var BPromise=require('bluebird');var rs=require(_0xfa51('0x1'));var fs=require('fs');var Redis=require(_0xfa51('0x2'));var db=require(_0xfa51('0x3'))['db'];var utils=require(_0xfa51('0x4'));var logger=require('../../config/logger')(_0xfa51('0x5'));var config=require(_0xfa51('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfa51('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xfa51('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0xfa51('0x9'))(new Redis(config[_0xfa51('0x8')]));require(_0xfa51('0xa'))[_0xfa51('0xb')](socket);function respondWithRpcPromise(_0x312b40,_0xa77167,_0x4265c0){return new BPromise(function(_0x1e88a6,_0x3efc9d){return client[_0xfa51('0xc')](_0x312b40,_0x4265c0)[_0xfa51('0xd')](function(_0xd2d8b0){logger[_0xfa51('0xe')](_0xfa51('0xf'),_0xa77167,_0xfa51('0x10'));logger[_0xfa51('0x11')](_0xfa51('0x12'),_0xa77167,_0xfa51('0x10'),JSON['stringify'](_0xd2d8b0));if(_0xd2d8b0[_0xfa51('0x13')]){if(_0xd2d8b0['error'][_0xfa51('0x14')]===0x1f4){logger[_0xfa51('0x13')](_0xfa51('0xf'),_0xa77167,_0xd2d8b0[_0xfa51('0x13')][_0xfa51('0x15')]);return _0x3efc9d(_0xd2d8b0[_0xfa51('0x13')][_0xfa51('0x15')]);}logger[_0xfa51('0x13')]('MailInteraction,\x20%s,\x20%s',_0xa77167,_0xd2d8b0[_0xfa51('0x13')][_0xfa51('0x15')]);return _0x1e88a6(_0xd2d8b0[_0xfa51('0x13')][_0xfa51('0x15')]);}else{logger[_0xfa51('0xe')]('MailInteraction,\x20%s,\x20%s',_0xa77167,_0xfa51('0x10'));_0x1e88a6(_0xd2d8b0[_0xfa51('0x16')]['message']);}})['catch'](function(_0x3cc802){logger[_0xfa51('0x13')]('MailInteraction,\x20%s,\x20%s',_0xa77167,_0x3cc802);_0x3efc9d(_0x3cc802);});});}exports[_0xfa51('0x17')]=function(_0x218cb1){var _0xeb1822=this;return new Promise(function(_0x12b063,_0x3cac04){return db[_0xfa51('0x18')]['update'](_0x218cb1[_0xfa51('0x19')],{'raw':_0x218cb1['options']?_0x218cb1[_0xfa51('0x1a')][_0xfa51('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x218cb1[_0xfa51('0x1a')]?_0x218cb1[_0xfa51('0x1a')]['where']||null:null,'attributes':_0x218cb1[_0xfa51('0x1a')]?_0x218cb1[_0xfa51('0x1a')]['attributes']||null:null,'limit':_0x218cb1[_0xfa51('0x1a')]?_0x218cb1[_0xfa51('0x1a')][_0xfa51('0x1c')]||null:null})['then'](function(_0x37b629){logger[_0xfa51('0xe')]('UpdateMailInteraction',_0x218cb1);logger[_0xfa51('0x11')](_0xfa51('0x17'),_0x218cb1,JSON[_0xfa51('0x1d')](_0x37b629));_0x12b063(_0x37b629);})[_0xfa51('0x1e')](function(_0xdfd2b7){logger[_0xfa51('0x13')](_0xfa51('0x17'),_0xdfd2b7['message'],_0x218cb1);_0x3cac04(_0xeb1822['error'](0x1f4,_0xdfd2b7[_0xfa51('0x15')]));});});};exports['AddTagsToMailInteraction']=function(_0x5cc56e){return new Promise(function(_0x402b67,_0x48bc0d){return db[_0xfa51('0x18')][_0xfa51('0x1f')]({'where':_0x5cc56e[_0xfa51('0x1a')]?_0x5cc56e[_0xfa51('0x1a')][_0xfa51('0x20')]||null:null})['then'](function(_0xc67b3f){if(_0xc67b3f){return _0xc67b3f['addTags'](_0x5cc56e[_0xfa51('0x19')][_0xfa51('0x21')],_['omit'](_0x5cc56e[_0xfa51('0x19')],[_0xfa51('0x21'),'id'])||{});}})['spread'](function(_0x4f4c61){logger[_0xfa51('0xe')](_0xfa51('0x22'),_0x5cc56e);logger[_0xfa51('0x11')]('AddTags',_0x5cc56e,JSON[_0xfa51('0x1d')](_0x4f4c61));_0x402b67(_0x4f4c61);})[_0xfa51('0x1e')](function(_0x58c7b0){logger[_0xfa51('0x13')]('AddTags',_0x58c7b0[_0xfa51('0x15')],_0x5cc56e);_0x48bc0d(_this[_0xfa51('0x13')](0x1f4,_0x58c7b0[_0xfa51('0x15')]));});});};
\ No newline at end of file
+var _0x1e97=['error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','where','attributes','AddTagsToMailInteraction','find','ids','omit','spread','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0x1e97,0x90));var _0x71e9=function(_0x59c142,_0x201d07){_0x59c142=_0x59c142-0x0;var _0x28f76d=_0x1e97[_0x59c142];return _0x28f76d;};'use strict';var _=require(_0x71e9('0x0'));var util=require(_0x71e9('0x1'));var moment=require(_0x71e9('0x2'));var BPromise=require('bluebird');var rs=require(_0x71e9('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x71e9('0x4'))['db'];var utils=require(_0x71e9('0x5'));var logger=require(_0x71e9('0x6'))(_0x71e9('0x7'));var config=require(_0x71e9('0x8'));var jayson=require(_0x71e9('0x9'));var client=jayson[_0x71e9('0xa')][_0x71e9('0xb')]({'port':0x232a});config[_0x71e9('0xc')]=_[_0x71e9('0xd')](config[_0x71e9('0xc')],{'host':_0x71e9('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x71e9('0xf'))[_0x71e9('0x10')](socket);function respondWithRpcPromise(_0x2a92e1,_0x2cea75,_0x23a609){return new BPromise(function(_0x1c40af,_0xd91252){return client['request'](_0x2a92e1,_0x23a609)[_0x71e9('0x11')](function(_0x561761){logger[_0x71e9('0x12')](_0x71e9('0x13'),_0x2cea75,_0x71e9('0x14'));logger[_0x71e9('0x15')](_0x71e9('0x16'),_0x2cea75,'request\x20sent',JSON[_0x71e9('0x17')](_0x561761));if(_0x561761[_0x71e9('0x18')]){if(_0x561761[_0x71e9('0x18')][_0x71e9('0x19')]===0x1f4){logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x561761['error'][_0x71e9('0x1a')]);return _0xd91252(_0x561761[_0x71e9('0x18')][_0x71e9('0x1a')]);}logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x561761[_0x71e9('0x18')][_0x71e9('0x1a')]);return _0x1c40af(_0x561761[_0x71e9('0x18')]['message']);}else{logger[_0x71e9('0x12')]('MailInteraction,\x20%s,\x20%s',_0x2cea75,_0x71e9('0x14'));_0x1c40af(_0x561761[_0x71e9('0x1b')]['message']);}})[_0x71e9('0x1c')](function(_0x52b44d){logger[_0x71e9('0x18')](_0x71e9('0x13'),_0x2cea75,_0x52b44d);_0xd91252(_0x52b44d);});});}exports[_0x71e9('0x1d')]=function(_0x40e483){var _0x3fdafa=this;return new Promise(function(_0x39ed99,_0x52603d){return db[_0x71e9('0x1e')][_0x71e9('0x1f')](_0x40e483[_0x71e9('0x20')],{'raw':_0x40e483[_0x71e9('0x21')]?_0x40e483['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40e483[_0x71e9('0x21')]?_0x40e483[_0x71e9('0x21')][_0x71e9('0x22')]||null:null,'attributes':_0x40e483['options']?_0x40e483['options'][_0x71e9('0x23')]||null:null,'limit':_0x40e483['options']?_0x40e483[_0x71e9('0x21')]['limit']||null:null})[_0x71e9('0x11')](function(_0x3f70dd){logger[_0x71e9('0x12')](_0x71e9('0x1d'),_0x40e483);logger[_0x71e9('0x15')](_0x71e9('0x1d'),_0x40e483,JSON['stringify'](_0x3f70dd));_0x39ed99(_0x3f70dd);})[_0x71e9('0x1c')](function(_0x42ae4a){logger[_0x71e9('0x18')]('UpdateMailInteraction',_0x42ae4a['message'],_0x40e483);_0x52603d(_0x3fdafa['error'](0x1f4,_0x42ae4a['message']));});});};exports[_0x71e9('0x24')]=function(_0x40e107){return new Promise(function(_0x1c0bae,_0xb2934e){return db['MailInteraction'][_0x71e9('0x25')]({'where':_0x40e107['options']?_0x40e107[_0x71e9('0x21')][_0x71e9('0x22')]||null:null})[_0x71e9('0x11')](function(_0x4e8bdb){if(_0x4e8bdb){return _0x4e8bdb['addTags'](_0x40e107['body'][_0x71e9('0x26')],_[_0x71e9('0x27')](_0x40e107['body'],[_0x71e9('0x26'),'id'])||{});}})[_0x71e9('0x28')](function(_0x32075d){logger[_0x71e9('0x12')]('AddTags',_0x40e107);logger['debug']('AddTags',_0x40e107,JSON[_0x71e9('0x17')](_0x32075d));_0x1c0bae(_0x32075d);})[_0x71e9('0x1c')](function(_0xb90623){logger[_0x71e9('0x18')](_0x71e9('0x29'),_0xb90623[_0x71e9('0x1a')],_0x40e107);_0xb2934e(_this[_0x71e9('0x18')](0x1f4,_0xb90623[_0x71e9('0x1a')]));});});};
\ No newline at end of file
index 29cfdbd..1920a3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc62f=['length','./mailInteraction.events','save','remove','emit','removeListener'];(function(_0x5a95fa,_0x4a2fc9){var _0x1a61b8=function(_0x59f119){while(--_0x59f119){_0x5a95fa['push'](_0x5a95fa['shift']());}};_0x1a61b8(++_0x4a2fc9);}(_0xc62f,0xd3));var _0xfc62=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xc62f[_0x14add3];return _0x4a174f;};'use strict';var MailInteractionEvents=require(_0xfc62('0x0'));var events=[_0xfc62('0x1'),_0xfc62('0x2'),'update'];function createListener(_0x20911c,_0x328828){return function(_0x10fb76){_0x328828[_0xfc62('0x3')](_0x20911c,_0x10fb76);};}function removeListener(_0x4afeb5,_0xb5adeb){return function(){MailInteractionEvents[_0xfc62('0x4')](_0x4afeb5,_0xb5adeb);};}exports['register']=function(_0x3cc9ee){for(var _0x2fb95c=0x0,_0x501877=events[_0xfc62('0x5')];_0x2fb95c<_0x501877;_0x2fb95c++){var _0x58d9a3=events[_0x2fb95c];var _0x1e5bb1=createListener('mailInteraction:'+_0x58d9a3,_0x3cc9ee);MailInteractionEvents['on'](_0x58d9a3,_0x1e5bb1);}};
\ No newline at end of file
+var _0x4825=['emit','removeListener','register','length','./mailInteraction.events','save','update'];(function(_0x45ae56,_0x205f0c){var _0x371809=function(_0x41a9a6){while(--_0x41a9a6){_0x45ae56['push'](_0x45ae56['shift']());}};_0x371809(++_0x205f0c);}(_0x4825,0x9e));var _0x5482=function(_0x56a7b6,_0x463c77){_0x56a7b6=_0x56a7b6-0x0;var _0x162d02=_0x4825[_0x56a7b6];return _0x162d02;};'use strict';var MailInteractionEvents=require(_0x5482('0x0'));var events=[_0x5482('0x1'),'remove',_0x5482('0x2')];function createListener(_0x34f4c1,_0x5eadf1){return function(_0x46b1d9){_0x5eadf1[_0x5482('0x3')](_0x34f4c1,_0x46b1d9);};}function removeListener(_0x79ee31,_0x324318){return function(){MailInteractionEvents[_0x5482('0x4')](_0x79ee31,_0x324318);};}exports[_0x5482('0x5')]=function(_0x34a5df){for(var _0x318e33=0x0,_0x36519a=events[_0x5482('0x6')];_0x318e33<_0x36519a;_0x318e33++){var _0x32bbb3=events[_0x318e33];var _0x509c80=createListener('mailInteraction:'+_0x32bbb3,_0x34a5df);MailInteractionEvents['on'](_0x32bbb3,_0x509c80);}};
\ No newline at end of file
index 499eed3..8f70f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb945=['exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/download','download','post','mail','create','put','update','/:id/accept','accept','delete','destroy'];(function(_0x430ea6,_0x58db3b){var _0x8c837=function(_0x1123ef){while(--_0x1123ef){_0x430ea6['push'](_0x430ea6['shift']());}};_0x8c837(++_0x58db3b);}(_0xb945,0x97));var _0x5b94=function(_0x1a4fd6,_0x58b002){_0x1a4fd6=_0x1a4fd6-0x0;var _0x4e41ff=_0xb945[_0x1a4fd6];return _0x4e41ff;};'use strict';var multer=require(_0x5b94('0x0'));var util=require('util');var path=require(_0x5b94('0x1'));var timeout=require('connect-timeout');var express=require(_0x5b94('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x5b94('0x3'));var interaction=require(_0x5b94('0x4'));var config=require(_0x5b94('0x5'));var controller=require(_0x5b94('0x6'));router[_0x5b94('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x5b94('0x7')](_0x5b94('0x8'),auth[_0x5b94('0x9')](),controller[_0x5b94('0xa')]);router['get'](_0x5b94('0xb'),auth['isAuthenticated'](),controller[_0x5b94('0xc')]);router[_0x5b94('0x7')](_0x5b94('0xd'),auth[_0x5b94('0x9')](),controller[_0x5b94('0xe')]);router[_0x5b94('0xf')]('/',auth[_0x5b94('0x9')](),interaction['tracked'](_0x5b94('0x10'),'mailmessage:create'),controller[_0x5b94('0x11')]);router[_0x5b94('0x12')](_0x5b94('0xb'),auth[_0x5b94('0x9')](),controller[_0x5b94('0x13')]);router['put'](_0x5b94('0x14'),auth[_0x5b94('0x9')](),controller[_0x5b94('0x15')]);router[_0x5b94('0x12')]('/:id/reject',auth[_0x5b94('0x9')](),controller['reject']);router[_0x5b94('0x16')](_0x5b94('0xb'),auth['isAuthenticated'](),controller[_0x5b94('0x17')]);module[_0x5b94('0x18')]=router;
\ No newline at end of file
+var _0x063e=['post','tracked','mail','mailmessage:create','create','put','update','/:id/accept','accept','reject','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailMessage.controller','get','/describe','isAuthenticated','describe','/:id','download'];(function(_0x475856,_0x397b5d){var _0x7086ee=function(_0x153c2e){while(--_0x153c2e){_0x475856['push'](_0x475856['shift']());}};_0x7086ee(++_0x397b5d);}(_0x063e,0x111));var _0xe063=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x063e[_0x1694f5];return _0x5b4321;};'use strict';var multer=require(_0xe063('0x0'));var util=require(_0xe063('0x1'));var path=require(_0xe063('0x2'));var timeout=require(_0xe063('0x3'));var express=require(_0xe063('0x4'));var router=express[_0xe063('0x5')]();var fs_extra=require(_0xe063('0x6'));var auth=require(_0xe063('0x7'));var interaction=require(_0xe063('0x8'));var config=require(_0xe063('0x9'));var controller=require(_0xe063('0xa'));router[_0xe063('0xb')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xe063('0xc'),auth[_0xe063('0xd')](),controller[_0xe063('0xe')]);router['get'](_0xe063('0xf'),auth[_0xe063('0xd')](),controller['show']);router['get']('/:id/download',auth[_0xe063('0xd')](),controller[_0xe063('0x10')]);router[_0xe063('0x11')]('/',auth['isAuthenticated'](),interaction[_0xe063('0x12')](_0xe063('0x13'),_0xe063('0x14')),controller[_0xe063('0x15')]);router[_0xe063('0x16')](_0xe063('0xf'),auth[_0xe063('0xd')](),controller[_0xe063('0x17')]);router[_0xe063('0x16')](_0xe063('0x18'),auth[_0xe063('0xd')](),controller[_0xe063('0x19')]);router['put']('/:id/reject',auth['isAuthenticated'](),controller[_0xe063('0x1a')]);router['delete'](_0xe063('0xf'),auth[_0xe063('0xd')](),controller[_0xe063('0x1b')]);module[_0xe063('0x1c')]=router;
\ No newline at end of file
index ebf6535..c46ff44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x144e=['lodash','exports','TEXT','long','medium','BOOLEAN','ENUM','out','STRING','DATE','Email','Chat','sequelize'];(function(_0x4b7895,_0x3c4f5d){var _0x264180=function(_0xe0e861){while(--_0xe0e861){_0x4b7895['push'](_0x4b7895['shift']());}};_0x264180(++_0x3c4f5d);}(_0x144e,0x151));var _0xe144=function(_0x13cde2,_0x4ff265){_0x13cde2=_0x13cde2-0x0;var _0x4286bc=_0x144e[_0x13cde2];return _0x4286bc;};'use strict';var Sequelize=require(_0xe144('0x0'));var _=require(_0xe144('0x1'));module[_0xe144('0x2')]={'body':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x5'))},'read':{'type':Sequelize[_0xe144('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe144('0x7')]('in','out'),'defaultValue':_0xe144('0x8'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0x1fe)},'from':{'type':Sequelize[_0xe144('0x9')]},'to':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4'))},'cc':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4'))},'bcc':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4'))},'subject':{'type':Sequelize[_0xe144('0x3')]},'sentAt':{'type':Sequelize[_0xe144('0xa')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0xe144('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xe144('0xa')]},'originTo':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4'))},'originCc':{'type':Sequelize[_0xe144('0x3')](_0xe144('0x4'))},'originChannel':{'type':Sequelize['ENUM'](_0xe144('0xb'),_0xe144('0xc')),'defaultValue':_0xe144('0xb'),'allowNull':![]}};
\ No newline at end of file
+var _0x7476=['lodash','exports','TEXT','medium','BOOLEAN','out','STRING','long','DATE','ENUM','Chat','Email'];(function(_0x2b5ca3,_0x2fc5a8){var _0x4ae8f5=function(_0x3b4fc3){while(--_0x3b4fc3){_0x2b5ca3['push'](_0x2b5ca3['shift']());}};_0x4ae8f5(++_0x2fc5a8);}(_0x7476,0x1ec));var _0x6747=function(_0x332a78,_0x4d38b3){_0x332a78=_0x332a78-0x0;var _0x537ac5=_0x7476[_0x332a78];return _0x537ac5;};'use strict';var Sequelize=require('sequelize');var _=require(_0x6747('0x0'));module[_0x6747('0x1')]={'body':{'type':Sequelize[_0x6747('0x2')]('long'),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x3'))},'read':{'type':Sequelize[_0x6747('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x6747('0x5')),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0x6747('0x6')](0x1fe)},'from':{'type':Sequelize[_0x6747('0x6')]},'to':{'type':Sequelize['TEXT'](_0x6747('0x7'))},'cc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'bcc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0x6747('0x8')]},'attach':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'secret':{'type':Sequelize[_0x6747('0x4')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x6747('0x8')]},'originTo':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'originCc':{'type':Sequelize[_0x6747('0x2')](_0x6747('0x7'))},'originChannel':{'type':Sequelize[_0x6747('0x9')]('Email',_0x6747('0xa')),'defaultValue':_0x6747('0xb'),'allowNull':![]}};
\ No newline at end of file
index 888f32e..99dcf48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe41c=['filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','findAll','rows','show','includeAll','include','options','find','update','body','describe','create','out','secret','split','MailAccount','MailAccountId','CmList','List','CmContact','Contacts','DESC','MailServerOut','Smtp','CloudProvider','getSmtpOptions','attachments','join','root','server/files/attachments','basename','List\x20not\x20found','SendMail','sendMail','messageId','format','accept','mail','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','params','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','acceptMessage','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','manual','interface','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','email','internal','rejectmessage','download','unix','toString','server','files','bcc','subject','createdAt','Attachment','Attachments','from','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','Bcc','existsSync','push','readFileSync','unlinkSync','moment','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','api','mail-interactions','../../config/environment','../../mysqldb','redis','defaults','localhost','html-entities','register','client','http','request','then','MailMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','catch','status','json','offset','undefined','limit','count','set','Content-Range','destroy','end','sendStatus','name','send','map','MailMessage','rawAttributes','type','key','model','query','keys'];(function(_0x3d4e16,_0xd5807a){var _0x238ad=function(_0x594776){while(--_0x594776){_0x3d4e16['push'](_0x3d4e16['shift']());}};_0x238ad(++_0xd5807a);}(_0xe41c,0x10d));var _0xce41=function(_0x52af63,_0x4b9a44){_0x52af63=_0x52af63-0x0;var _0x2e69af=_0xe41c[_0x52af63];return _0x2e69af;};'use strict';var emlformat=require('eml-format');var moment=require(_0xce41('0x0'));var BPromise=require('bluebird');var util=require(_0xce41('0x1'));var path=require(_0xce41('0x2'));var fs=require('fs');var _=require(_0xce41('0x3'));var Redis=require(_0xce41('0x4'));var htmlToText=require(_0xce41('0x5'));var qs=require(_0xce41('0x6'));var logger=require(_0xce41('0x7'))(_0xce41('0x8'));var interaction_log=require(_0xce41('0x7'))(_0xce41('0x9'));var config=require(_0xce41('0xa'));var db=require(_0xce41('0xb'))['db'];config[_0xce41('0xc')]=_[_0xce41('0xd')](config[_0xce41('0xc')],{'host':_0xce41('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var htmlEntities=require(_0xce41('0xf'));require('./mailMessage.socket')[_0xce41('0x10')](socket);var jayson=require('jayson/promise');var client=jayson[_0xce41('0x11')][_0xce41('0x12')]({'port':0x232c});var client9003=jayson[_0xce41('0x11')][_0xce41('0x12')]({'port':0x232b});var client9002=jayson[_0xce41('0x11')][_0xce41('0x12')]({'port':0x232a});function respondWithRpcPromise(_0xbabd93,_0x50e723,_0x22ab56,_0x471559){return new BPromise(function(_0x1d3c19,_0x56c222){var _0x3fa422=_0x471559||client;return _0x3fa422[_0xce41('0x13')](_0xbabd93,_0x22ab56)[_0xce41('0x14')](function(_0x22ac20){logger['info'](_0xce41('0x15'),_0x50e723,_0xce41('0x16'));logger[_0xce41('0x17')]('MailMessage,\x20%s,\x20%s,\x20%s',_0x50e723,_0xce41('0x16'),JSON[_0xce41('0x18')](_0x22ac20));if(_0x22ac20[_0xce41('0x19')]){if(_0x22ac20[_0xce41('0x19')][_0xce41('0x1a')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x50e723,_0x22ac20[_0xce41('0x19')][_0xce41('0x1b')]);return _0x56c222(_0x22ac20['error']['message']);}logger[_0xce41('0x19')]('MailMessage,\x20%s,\x20%s',_0x50e723,_0x22ac20[_0xce41('0x19')][_0xce41('0x1b')]);return _0x1d3c19(_0x22ac20[_0xce41('0x19')][_0xce41('0x1b')]);}else{logger[_0xce41('0x1c')](_0xce41('0x15'),_0x50e723,_0xce41('0x16'));_0x1d3c19(_0x22ac20['result'][_0xce41('0x1b')]);}})[_0xce41('0x1d')](function(_0x534299){logger[_0xce41('0x19')](_0xce41('0x15'),_0x50e723,_0x534299);_0x56c222(_0x534299);});});}function respondWithResult(_0x19b84a,_0x485095){_0x485095=_0x485095||0xc8;return function(_0x209bb1){if(_0x209bb1){return _0x19b84a[_0xce41('0x1e')](_0x485095)[_0xce41('0x1f')](_0x209bb1);}};}function respondWithFilteredResult(_0x2a95bd,_0x4626a1){return function(_0x1f4514){if(_0x1f4514){var _0x409423=typeof _0x4626a1[_0xce41('0x20')]===_0xce41('0x21')&&typeof _0x4626a1[_0xce41('0x22')]===_0xce41('0x21');var _0x2aea5c=_0x1f4514[_0xce41('0x23')];var _0x20ada3=_0x409423?0x0:_0x4626a1[_0xce41('0x20')];var _0x2f4d8e=_0x409423?_0x1f4514[_0xce41('0x23')]:_0x4626a1['offset']+_0x4626a1[_0xce41('0x22')];var _0x367401;if(_0x2f4d8e>=_0x2aea5c){_0x2f4d8e=_0x2aea5c;_0x367401=0xc8;}else{_0x367401=0xce;}_0x2a95bd[_0xce41('0x1e')](_0x367401);return _0x2a95bd[_0xce41('0x24')](_0xce41('0x25'),_0x20ada3+'-'+_0x2f4d8e+'/'+_0x2aea5c)[_0xce41('0x1f')](_0x1f4514);}return null;};}function saveUpdates(_0x5244e3){return function(_0x24c4a3){if(_0x24c4a3){return _0x24c4a3['update'](_0x5244e3)['then'](function(_0x224f30){return _0x224f30;});}return null;};}function removeEntity(_0x48303b){return function(_0x3e70cc){if(_0x3e70cc){return _0x3e70cc[_0xce41('0x26')]()[_0xce41('0x14')](function(){_0x48303b['status'](0xcc)[_0xce41('0x27')]();});}};}function handleEntityNotFound(_0xf8f21b){return function(_0x1df2f1){if(!_0x1df2f1){_0xf8f21b[_0xce41('0x28')](0x194);}return _0x1df2f1;};}function handleError(_0x28828e,_0x1a90bf){_0x1a90bf=_0x1a90bf||0x1f4;return function(_0x1755a3){logger[_0xce41('0x19')](_0x1755a3['stack']);if(_0x1755a3[_0xce41('0x29')]){delete _0x1755a3[_0xce41('0x29')];}_0x28828e['status'](_0x1a90bf)[_0xce41('0x2a')](_0x1755a3);};}exports['index']=function(_0x2aec85,_0x537eba){var _0x23f197={},_0xecb16c={},_0x1a10fd={'count':0x0,'rows':[]};var _0x3c335f=_[_0xce41('0x2b')](db[_0xce41('0x2c')][_0xce41('0x2d')],function(_0x110a67){return{'name':_0x110a67['fieldName'],'type':_0x110a67[_0xce41('0x2e')][_0xce41('0x2f')]};});_0xecb16c[_0xce41('0x30')]=_[_0xce41('0x2b')](_0x3c335f,'name');_0xecb16c[_0xce41('0x31')]=_[_0xce41('0x32')](_0x2aec85[_0xce41('0x31')]);_0xecb16c[_0xce41('0x33')]=_['intersection'](_0xecb16c['model'],_0xecb16c[_0xce41('0x31')]);_0x23f197[_0xce41('0x34')]=_[_0xce41('0x35')](_0xecb16c['model'],qs['fields'](_0x2aec85[_0xce41('0x31')][_0xce41('0x36')]));_0x23f197[_0xce41('0x34')]=_0x23f197['attributes'][_0xce41('0x37')]?_0x23f197[_0xce41('0x34')]:_0xecb16c[_0xce41('0x30')];if(!_0x2aec85[_0xce41('0x31')]['hasOwnProperty'](_0xce41('0x38'))){_0x23f197[_0xce41('0x22')]=qs[_0xce41('0x22')](_0x2aec85['query'][_0xce41('0x22')]);_0x23f197[_0xce41('0x20')]=qs[_0xce41('0x20')](_0x2aec85['query'][_0xce41('0x20')]);}_0x23f197[_0xce41('0x39')]=qs[_0xce41('0x3a')](_0x2aec85[_0xce41('0x31')]['sort']);_0x23f197[_0xce41('0x3b')]=qs[_0xce41('0x33')](_[_0xce41('0x3c')](_0x2aec85['query'],_0xecb16c[_0xce41('0x33')]),_0x3c335f);if(_0x2aec85[_0xce41('0x31')][_0xce41('0x3d')]){_0x23f197[_0xce41('0x3b')]=_[_0xce41('0x3e')](_0x23f197[_0xce41('0x3b')],{'$or':_[_0xce41('0x2b')](_0x3c335f,function(_0xb28533){if(_0xb28533[_0xce41('0x2e')]!=='VIRTUAL'){var _0xea09ff={};_0xea09ff[_0xb28533[_0xce41('0x29')]]={'$like':'%'+_0x2aec85[_0xce41('0x31')][_0xce41('0x3d')]+'%'};return _0xea09ff;}})});}_0x23f197=_['merge']({},_0x23f197,_0x2aec85['options']);var _0x77c1fb={'where':_0x23f197[_0xce41('0x3b')]};return db[_0xce41('0x2c')][_0xce41('0x23')](_0x77c1fb)[_0xce41('0x14')](function(_0x5579ab){_0x1a10fd['count']=_0x5579ab;if(_0x2aec85[_0xce41('0x31')]['includeAll']){_0x23f197['include']=[{'all':!![]}];}return db[_0xce41('0x2c')][_0xce41('0x3f')](_0x23f197);})[_0xce41('0x14')](function(_0xd29774){_0x1a10fd[_0xce41('0x40')]=_0xd29774;return _0x1a10fd;})[_0xce41('0x14')](respondWithFilteredResult(_0x537eba,_0x23f197))['catch'](handleError(_0x537eba,null));};exports[_0xce41('0x41')]=function(_0xc5ed62,_0x216bb7){var _0x59282c={'raw':!![],'where':{'id':_0xc5ed62['params']['id']}},_0x5d8288={};_0x5d8288['model']=_['keys'](db[_0xce41('0x2c')][_0xce41('0x2d')]);_0x5d8288[_0xce41('0x31')]=_[_0xce41('0x32')](_0xc5ed62['query']);_0x5d8288[_0xce41('0x33')]=_['intersection'](_0x5d8288[_0xce41('0x30')],_0x5d8288[_0xce41('0x31')]);_0x59282c['attributes']=_[_0xce41('0x35')](_0x5d8288[_0xce41('0x30')],qs['fields'](_0xc5ed62[_0xce41('0x31')]['fields']));_0x59282c[_0xce41('0x34')]=_0x59282c[_0xce41('0x34')][_0xce41('0x37')]?_0x59282c[_0xce41('0x34')]:_0x5d8288['model'];if(_0xc5ed62[_0xce41('0x31')][_0xce41('0x42')]){_0x59282c[_0xce41('0x43')]=[{'all':!![]}];}_0x59282c=_[_0xce41('0x3e')]({},_0x59282c,_0xc5ed62[_0xce41('0x44')]);return db[_0xce41('0x2c')][_0xce41('0x45')](_0x59282c)['then'](handleEntityNotFound(_0x216bb7,null))[_0xce41('0x14')](respondWithResult(_0x216bb7,null))[_0xce41('0x1d')](handleError(_0x216bb7,null));};exports[_0xce41('0x46')]=function(_0x2dd0c9,_0x4e74f8){if(_0x2dd0c9[_0xce41('0x47')]['id']){delete _0x2dd0c9[_0xce41('0x47')]['id'];}return db[_0xce41('0x2c')][_0xce41('0x45')]({'where':{'id':_0x2dd0c9['params']['id']}})[_0xce41('0x14')](handleEntityNotFound(_0x4e74f8,null))['then'](saveUpdates(_0x2dd0c9[_0xce41('0x47')],null))[_0xce41('0x14')](respondWithResult(_0x4e74f8,null))[_0xce41('0x1d')](handleError(_0x4e74f8,null));};exports[_0xce41('0x26')]=function(_0x2b41cd,_0x246110){return db[_0xce41('0x2c')]['find']({'where':{'id':_0x2b41cd['params']['id']}})[_0xce41('0x14')](handleEntityNotFound(_0x246110,null))[_0xce41('0x14')](removeEntity(_0x246110,null))[_0xce41('0x1d')](handleError(_0x246110,null));};exports[_0xce41('0x48')]=function(_0x5b04e4,_0x48da0c){return db[_0xce41('0x2c')][_0xce41('0x48')]()[_0xce41('0x14')](respondWithResult(_0x48da0c,null))[_0xce41('0x1d')](handleError(_0x48da0c,null));};exports[_0xce41('0x49')]=function(_0x3c1ff8,_0x3b8afe){return db[_0xce41('0x2c')][_0xce41('0x49')](_0x3c1ff8[_0xce41('0x47')])[_0xce41('0x14')](function(_0x493224){if(_0x493224){if(_0x493224['direction']===_0xce41('0x4a')&&!_0x493224[_0xce41('0x4b')]){var _0x27e6ac,_0x2d3f35,_0x1ae585;if(_0x3c1ff8['body']['to']){_0x2d3f35=_0x3c1ff8[_0xce41('0x47')]['to'][_0xce41('0x4c')](',')[0x0];}return db[_0xce41('0x4d')]['findOne']({'where':{'id':_0x493224[_0xce41('0x4e')]},'include':[{'model':db[_0xce41('0x4f')],'as':_0xce41('0x50'),'include':[{'model':db[_0xce41('0x51')],'as':_0xce41('0x52'),'where':{'email':_0x2d3f35},'limit':0x1,'order':[['updatedAt',_0xce41('0x53')]]}]},{'model':db[_0xce41('0x54')],'as':_0xce41('0x55'),'raw':!![],'include':[{'model':db[_0xce41('0x56')],'as':_0xce41('0x56'),'raw':!![]}]}]})[_0xce41('0x14')](function(_0x4d6080){_0x27e6ac=_0x4d6080;if(!_0x27e6ac||!_0x27e6ac['Smtp'])return;var _0x176727=_0x27e6ac[_0xce41('0x57')]();if(_0x3c1ff8[_0xce41('0x47')][_0xce41('0x58')]&&_0x3c1ff8[_0xce41('0x47')][_0xce41('0x58')][_0xce41('0x37')]){for(var _0x49204e=0x0;_0x49204e<_0x3c1ff8[_0xce41('0x47')][_0xce41('0x58')][_0xce41('0x37')];_0x49204e+=0x1){_0x3c1ff8['body'][_0xce41('0x58')][_0x49204e]={'filename':_0x3c1ff8[_0xce41('0x47')][_0xce41('0x58')][_0x49204e]['name'],'path':path[_0xce41('0x59')](config[_0xce41('0x5a')],_0xce41('0x5b'),_0x3c1ff8[_0xce41('0x47')]['attachments'][_0x49204e][_0xce41('0x5c')])};}}_0x1ae585={'account':_0x176727,'message':_0x3c1ff8[_0xce41('0x47')]};return;})[_0xce41('0x14')](function(){if(_0x27e6ac[_0xce41('0x50')]){if(_0x27e6ac[_0xce41('0x50')][_0xce41('0x52')][_0xce41('0x37')]){return _0x27e6ac[_0xce41('0x50')][_0xce41('0x52')][0x0];}else{return db['CmContact']['create'](_[_0xce41('0xd')](_0x3c1ff8[_0xce41('0x47')],{'firstName':_0x3c1ff8['body']['to'],'email':_0x3c1ff8[_0xce41('0x47')]['to'],'phone':_0x3c1ff8[_0xce41('0x47')]['to'],'ListId':_0x27e6ac['ListId']}));}}else{throw new Error(_0xce41('0x5d'));}})['then'](function(){if(_0x1ae585){return respondWithRpcPromise(_0xce41('0x5e'),_0xce41('0x5f'),_0x1ae585,client9003)['then'](function(_0x52ee38){return _0x493224['update']({'read':!![],'messageId':_0x52ee38[_0xce41('0x60')],'sentAt':moment()[_0xce41('0x61')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xce41('0x1d')](function(_0x5b6e06){logger[_0xce41('0x19')]('%s',JSON['stringify'](_0x5b6e06));return _0x493224;});}return _0x493224;});}return _0x493224;}})[_0xce41('0x14')](respondWithResult(_0x3b8afe,0xc9))['catch'](handleError(_0x3b8afe,null));};exports[_0xce41('0x62')]=function(_0x3f8dac,_0x2e2105){var _0x4be942={'agent':{},'channel':_0xce41('0x63')};if(_0x3f8dac['body']['id']){delete _0x3f8dac[_0xce41('0x47')]['id'];}_0x3f8dac[_0xce41('0x47')][_0xce41('0x64')]=!![];_0x3f8dac[_0xce41('0x47')][_0xce41('0x65')]=moment()[_0xce41('0x61')](_0xce41('0x66'));_0x3f8dac[_0xce41('0x47')][_0xce41('0x67')]=_0x3f8dac[_0xce41('0x47')][_0xce41('0x67')]||_0x3f8dac[_0xce41('0x68')]['id'];_0x4be942[_0xce41('0x69')]['id']=_0x3f8dac[_0xce41('0x47')][_0xce41('0x67')];return db[_0xce41('0x2c')][_0xce41('0x45')]({'where':{'id':_0x3f8dac[_0xce41('0x6a')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x2e2105,null))[_0xce41('0x14')](saveUpdates(_0x3f8dac['body'],null))[_0xce41('0x14')](function(_0x57f5d6){if(_0x57f5d6){_0x4be942[_0xce41('0x1b')]=_0x57f5d6[_0xce41('0x6b')]({'plain':!![]});return db[_0xce41('0x6c')][_0xce41('0x45')]({'where':{'id':_0x57f5d6[_0xce41('0x6d')]}});}return null;})[_0xce41('0x14')](handleEntityNotFound(_0x2e2105,null))['then'](function(_0x433381){if(_0x433381){return _0x433381[_0xce41('0x46')]({'UserId':_0x3f8dac[_0xce41('0x47')][_0xce41('0x67')],'read1stAt':_[_0xce41('0x6e')](_0x433381[_0xce41('0x6f')])?moment()[_0xce41('0x61')](_0xce41('0x66')):undefined});}return null;})[_0xce41('0x14')](function(_0x51d470){if(_0x51d470){_0x4be942[_0xce41('0x70')]=_0x51d470['get']({'plain':!![]});interaction_log[_0xce41('0x1c')](_0xce41('0x71'),_0x3f8dac[_0xce41('0x68')]['id'],_0x3f8dac[_0xce41('0x68')][_0xce41('0x29')],_0x3f8dac[_0xce41('0x68')][_0xce41('0x72')],_0x4be942[_0xce41('0x70')]['id'],_0x3f8dac[_0xce41('0x47')]?JSON[_0xce41('0x18')](_0x3f8dac[_0xce41('0x47')]):_0xce41('0x73'));return respondWithRpcPromise(_0xce41('0x74'),_0xce41('0x75'),_0x4be942);}return null;})[_0xce41('0x14')](function(_0x3124aa){var _0x412b82='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x3124aa['message'][_0xce41('0x76')];return db[_0xce41('0x77')][_0xce41('0x31')](_0x412b82,{'type':db['Sequelize'][_0xce41('0x78')][_0xce41('0x79')],'raw':!![]})[_0xce41('0x14')](function(_0xb5e4aa){return _0xb5e4aa;});})[_0xce41('0x14')](function(_0xdfad56){if(_0xdfad56){_0x4be942[_0xce41('0x1b')][_0xce41('0x7a')]=_0xdfad56[0x0];if(!_0x3f8dac[_0xce41('0x47')][_0xce41('0x67')])return;return db[_0xce41('0x7b')]['find']({'where':{'id':_0x3f8dac['body'][_0xce41('0x67')],'role':_0xce41('0x69')},'attributes':['id',_0xce41('0x29'),_0xce41('0x7c'),'email','internal'],'raw':!![]});}return null;})['then'](function(_0x56403f){if(!_0x56403f)return null;_0x4be942[_0xce41('0x1b')][_0xce41('0x69')]=_0x56403f;return _0x4be942;})[_0xce41('0x14')](function(_0x4d9a91){if(_0x4d9a91){if(_0x3f8dac[_0xce41('0x47')][_0xce41('0x7d')]){_0x4be942['message'][_0xce41('0x7e')]=util[_0xce41('0x61')](_0xce41('0x7f'),_0x3f8dac[_0xce41('0x68')][_0xce41('0x29')]);_0x4be942[_0xce41('0x1b')][_0xce41('0x80')]=_0x4be942[_0xce41('0x80')];_0x4be942['message'][_0xce41('0x81')]=_0x4be942[_0xce41('0x80')];_0x4be942[_0xce41('0x1b')][_0xce41('0x82')]=_0xce41('0x62');_0x4be942[_0xce41('0x1b')]['body']=htmlToText[_0xce41('0x83')](_0x4be942[_0xce41('0x1b')][_0xce41('0x47')]);return respondWithRpcPromise('EventManager',_0xce41('0x84'),{'event':_0xce41('0x85'),'message':_0x4be942[_0xce41('0x1b')]},client9002)['then'](function(){return _0x4be942;});}return _0x4be942;}return null;})[_0xce41('0x14')](respondWithResult(_0x2e2105,null))[_0xce41('0x1d')](handleError(_0x2e2105,null));};exports[_0xce41('0x86')]=function(_0x16e7ea,_0x34ec69){var _0x2b196d={'agent':{},'channel':_0xce41('0x63')};if(_0x16e7ea[_0xce41('0x47')]['id']){delete _0x16e7ea[_0xce41('0x47')]['id'];}_0x16e7ea[_0xce41('0x47')]['UserId']=_0x16e7ea['body']['UserId']||_0x16e7ea['user']['id'];_0x2b196d['agent']['id']=_0x16e7ea[_0xce41('0x47')]['UserId'];return db[_0xce41('0x2c')][_0xce41('0x45')]({'where':{'id':_0x16e7ea[_0xce41('0x6a')]['id'],'UserId':null}})[_0xce41('0x14')](handleEntityNotFound(_0x34ec69,null))[_0xce41('0x14')](function(_0x58fa66){if(_0x58fa66){_0x2b196d[_0xce41('0x1b')]=_0x58fa66[_0xce41('0x6b')]({'plain':!![]});return db[_0xce41('0x6c')][_0xce41('0x45')]({'where':{'id':_0x58fa66[_0xce41('0x6d')]}});}return null;})['then'](handleEntityNotFound(_0x34ec69,null))[_0xce41('0x14')](function(_0x28ce4e){if(_0x28ce4e){_0x2b196d['interaction']=_0x28ce4e[_0xce41('0x6b')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x16e7ea[_0xce41('0x68')]['id'],_0x16e7ea[_0xce41('0x68')][_0xce41('0x29')],_0x16e7ea[_0xce41('0x68')][_0xce41('0x72')],_0x2b196d['interaction']['id'],_0x16e7ea['body']?JSON[_0xce41('0x18')](_0x16e7ea[_0xce41('0x47')]):_0xce41('0x73'));return respondWithRpcPromise(_0xce41('0x87'),_0xce41('0x88'),_0x2b196d);}return null;})[_0xce41('0x14')](function(_0x1a47aa){var _0x12898c=_0xce41('0x89')+_0x1a47aa['message'][_0xce41('0x76')];return db['sequelize'][_0xce41('0x31')](_0x12898c,{'type':db[_0xce41('0x8a')]['QueryTypes'][_0xce41('0x79')],'raw':!![]})['then'](function(_0x40915d){return _0x40915d;});})[_0xce41('0x14')](function(_0x6c9e71){if(_0x6c9e71){_0x2b196d[_0xce41('0x1b')][_0xce41('0x7a')]=_0x6c9e71[0x0];if(!_0x16e7ea[_0xce41('0x47')][_0xce41('0x67')])return;return db[_0xce41('0x7b')][_0xce41('0x45')]({'where':{'id':_0x16e7ea[_0xce41('0x47')][_0xce41('0x67')],'role':'agent'},'attributes':['id',_0xce41('0x29'),_0xce41('0x7c'),_0xce41('0x8b'),_0xce41('0x8c')],'raw':!![]});}return null;})[_0xce41('0x14')](function(_0x260c85){if(!_0x260c85)return null;_0x2b196d[_0xce41('0x1b')][_0xce41('0x69')]=_0x260c85;return _0x2b196d;})[_0xce41('0x14')](function(_0x4302cd){if(_0x4302cd){_0x4302cd[_0xce41('0x1b')]['interface']=util['format'](_0xce41('0x7f'),_0x16e7ea[_0xce41('0x68')][_0xce41('0x29')]);_0x4302cd[_0xce41('0x1b')][_0xce41('0x80')]=_0x2b196d[_0xce41('0x80')];_0x4302cd[_0xce41('0x1b')][_0xce41('0x81')]=_0x2b196d[_0xce41('0x80')];_0x4302cd[_0xce41('0x1b')][_0xce41('0x82')]=_0xce41('0x86');_0x4302cd[_0xce41('0x1b')][_0xce41('0x47')]=htmlToText[_0xce41('0x83')](_0x2b196d['message'][_0xce41('0x47')]);respondWithRpcPromise('EventManager',_0xce41('0x84'),{'event':_0xce41('0x8d'),'message':_0x4302cd['message']},client9002);return _0x2b196d;}return null;})['then'](respondWithResult(_0x34ec69,null))[_0xce41('0x1d')](handleError(_0x34ec69,null));};exports[_0xce41('0x8e')]=function(_0x1a1852,_0x40cfeb){var _0xa4229f=moment()[_0xce41('0x8f')]()[_0xce41('0x90')]();var _0xb3bacc=path[_0xce41('0x59')](config['root'],_0xce41('0x91'),_0xce41('0x92'),'tmp');var _0x41229f=path['join'](config[_0xce41('0x5a')],'server',_0xce41('0x92'),'attachments');var _0x85a54b=util[_0xce41('0x61')]('message-%s.eml',_0xa4229f);return db[_0xce41('0x2c')][_0xce41('0x45')]({'where':{'id':_0x1a1852[_0xce41('0x6a')]['id']},'attributes':['id',_0xce41('0x47'),'from','to','cc',_0xce41('0x93'),_0xce41('0x94'),_0xce41('0x95')],'include':_0x1a1852[_0xce41('0x31')]['attachments']?[{'model':db[_0xce41('0x96')],'as':_0xce41('0x97')}]:undefined})['then'](handleEntityNotFound(_0x40cfeb,null))[_0xce41('0x14')](function(_0x17e8df){if(_0x17e8df){var _0x4f94ec=_0x17e8df;var _0x5c1b1b={'from':_0x4f94ec[_0xce41('0x98')],'to':_0x4f94ec['to'],'subject':_0x4f94ec[_0xce41('0x94')],'html':htmlEntities[_0xce41('0x99')](_0x4f94ec[_0xce41('0x47')]),'headers':{'Date':moment(_0x4f94ec[_0xce41('0x95')])[_0xce41('0x61')](_0xce41('0x9a'))},'attachments':[]};if(_0x17e8df['cc']){_0x5c1b1b['headers']['Cc']=_0x17e8df['cc'];}if(_0x17e8df[_0xce41('0x93')]){_0x5c1b1b['headers'][_0xce41('0x9b')]=_0x17e8df[_0xce41('0x93')];}return new BPromise(function(_0xb912d2,_0x1e839f){if(_0x17e8df[_0xce41('0x97')]){for(var _0x28ebed=0x0;_0x28ebed<_0x17e8df[_0xce41('0x97')][_0xce41('0x37')];_0x28ebed++){var _0x3839dd=_0x17e8df[_0xce41('0x97')][_0x28ebed];var _0xf90097=path[_0xce41('0x59')](_0x41229f,_0x3839dd[_0xce41('0x5c')]);if(fs[_0xce41('0x9c')](_0xf90097)){_0x5c1b1b[_0xce41('0x58')][_0xce41('0x9d')]({'name':_0x3839dd['name'],'contentType':_0x3839dd[_0xce41('0x2e')],'data':fs[_0xce41('0x9e')](_0xf90097)});}}}emlformat['build'](_0x5c1b1b,function(_0x13ab17,_0x4bd96c){if(_0x13ab17)return _0x1e839f(_0x13ab17);fs['writeFileSync'](path['join'](_0xb3bacc,_0x85a54b),_0x4bd96c);return _0xb912d2(_0x4bd96c);});});}})[_0xce41('0x14')](function(_0x37c36c){if(_0x37c36c){return _0x40cfeb[_0xce41('0x8e')](path[_0xce41('0x59')](_0xb3bacc,_0x85a54b),_0x85a54b,function(_0x460785){if(!_0x460785)fs[_0xce41('0x9f')](path[_0xce41('0x59')](_0xb3bacc,_0x85a54b));});}})[_0xce41('0x1d')](handleError(_0x40cfeb,null));};
\ No newline at end of file
+var _0xb879=['error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','stack','name','MailMessage','rawAttributes','fieldName','type','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','map','VIRTUAL','options','includeAll','include','findAll','show','params','body','find','describe','create','direction','secret','MailAccount','findOne','MailAccountId','CmList','List','Contacts','DESC','MailServerOut','CloudProvider','Smtp','getSmtpOptions','attachments','join','server/files/attachments','basename','SendMail','messageId','format','accept','mail','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','MailInteraction','MailInteractionId','isNil','read1stAt','interaction','[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','reject','RejectMessage','rejectMessage','fromString','rejectmessage','download','unix','root','tmp','server','files','message-%s.eml','from','subject','createdAt','Attachment','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','Bcc','Attachments','existsSync','readFileSync','unlinkSync','moment','bluebird','util','path','lodash','ioredis','html-to-text','../../config/logger','api','../../mysqldb','defaults','localhost','socket.io-emitter','redis','html-entities','./mailMessage.socket','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify'];(function(_0xdd3ca1,_0xbb94c2){var _0x2c7f73=function(_0x1e567e){while(--_0x1e567e){_0xdd3ca1['push'](_0xdd3ca1['shift']());}};_0x2c7f73(++_0xbb94c2);}(_0xb879,0x1b3));var _0x9b87=function(_0x13e741,_0x5d3c24){_0x13e741=_0x13e741-0x0;var _0x3f8bb3=_0xb879[_0x13e741];return _0x3f8bb3;};'use strict';var emlformat=require('eml-format');var moment=require(_0x9b87('0x0'));var BPromise=require(_0x9b87('0x1'));var util=require(_0x9b87('0x2'));var path=require(_0x9b87('0x3'));var fs=require('fs');var _=require(_0x9b87('0x4'));var Redis=require(_0x9b87('0x5'));var htmlToText=require(_0x9b87('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x9b87('0x7'))(_0x9b87('0x8'));var interaction_log=require(_0x9b87('0x7'))('mail-interactions');var config=require('../../config/environment');var db=require(_0x9b87('0x9'))['db'];config['redis']=_[_0x9b87('0xa')](config['redis'],{'host':_0x9b87('0xb'),'port':0x18eb});var socket=require(_0x9b87('0xc'))(new Redis(config[_0x9b87('0xd')]));var htmlEntities=require(_0x9b87('0xe'));require(_0x9b87('0xf'))['register'](socket);var jayson=require(_0x9b87('0x10'));var client=jayson[_0x9b87('0x11')]['http']({'port':0x232c});var client9003=jayson[_0x9b87('0x11')][_0x9b87('0x12')]({'port':0x232b});var client9002=jayson['client'][_0x9b87('0x12')]({'port':0x232a});function respondWithRpcPromise(_0x3740fe,_0x579701,_0x1ca098,_0x2561f4){return new BPromise(function(_0x36ddcf,_0x1ea281){var _0x5a7246=_0x2561f4||client;return _0x5a7246[_0x9b87('0x13')](_0x3740fe,_0x1ca098)[_0x9b87('0x14')](function(_0x4321b2){logger[_0x9b87('0x15')](_0x9b87('0x16'),_0x579701,_0x9b87('0x17'));logger[_0x9b87('0x18')](_0x9b87('0x19'),_0x579701,_0x9b87('0x17'),JSON[_0x9b87('0x1a')](_0x4321b2));if(_0x4321b2[_0x9b87('0x1b')]){if(_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1c')]===0x1f4){logger[_0x9b87('0x1b')]('MailMessage,\x20%s,\x20%s',_0x579701,_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1d')]);return _0x1ea281(_0x4321b2['error'][_0x9b87('0x1d')]);}logger['error'](_0x9b87('0x16'),_0x579701,_0x4321b2[_0x9b87('0x1b')]['message']);return _0x36ddcf(_0x4321b2[_0x9b87('0x1b')][_0x9b87('0x1d')]);}else{logger[_0x9b87('0x15')](_0x9b87('0x16'),_0x579701,_0x9b87('0x17'));_0x36ddcf(_0x4321b2[_0x9b87('0x1e')][_0x9b87('0x1d')]);}})[_0x9b87('0x1f')](function(_0x150e28){logger[_0x9b87('0x1b')]('MailMessage,\x20%s,\x20%s',_0x579701,_0x150e28);_0x1ea281(_0x150e28);});});}function respondWithResult(_0x50ef6a,_0xe4fbbe){_0xe4fbbe=_0xe4fbbe||0xc8;return function(_0x8b9e5f){if(_0x8b9e5f){return _0x50ef6a[_0x9b87('0x20')](_0xe4fbbe)[_0x9b87('0x21')](_0x8b9e5f);}};}function respondWithFilteredResult(_0x15d9d9,_0x52cf63){return function(_0x2844b8){if(_0x2844b8){var _0x28b3c8=typeof _0x52cf63[_0x9b87('0x22')]===_0x9b87('0x23')&&typeof _0x52cf63[_0x9b87('0x24')]===_0x9b87('0x23');var _0x2c9d18=_0x2844b8['count'];var _0x41770a=_0x28b3c8?0x0:_0x52cf63['offset'];var _0x54e1b3=_0x28b3c8?_0x2844b8[_0x9b87('0x25')]:_0x52cf63[_0x9b87('0x22')]+_0x52cf63[_0x9b87('0x24')];var _0x3ac213;if(_0x54e1b3>=_0x2c9d18){_0x54e1b3=_0x2c9d18;_0x3ac213=0xc8;}else{_0x3ac213=0xce;}_0x15d9d9[_0x9b87('0x20')](_0x3ac213);return _0x15d9d9[_0x9b87('0x26')](_0x9b87('0x27'),_0x41770a+'-'+_0x54e1b3+'/'+_0x2c9d18)[_0x9b87('0x21')](_0x2844b8);}return null;};}function saveUpdates(_0xcb7b92){return function(_0x547e7f){if(_0x547e7f){return _0x547e7f[_0x9b87('0x28')](_0xcb7b92)[_0x9b87('0x14')](function(_0xab35f7){return _0xab35f7;});}return null;};}function removeEntity(_0x21a4d1){return function(_0xcbf5a4){if(_0xcbf5a4){return _0xcbf5a4[_0x9b87('0x29')]()['then'](function(){_0x21a4d1[_0x9b87('0x20')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2cffc1){return function(_0x478baf){if(!_0x478baf){_0x2cffc1['sendStatus'](0x194);}return _0x478baf;};}function handleError(_0x2e0a18,_0x361725){_0x361725=_0x361725||0x1f4;return function(_0xdcf3cd){logger[_0x9b87('0x1b')](_0xdcf3cd[_0x9b87('0x2a')]);if(_0xdcf3cd['name']){delete _0xdcf3cd[_0x9b87('0x2b')];}_0x2e0a18[_0x9b87('0x20')](_0x361725)['send'](_0xdcf3cd);};}exports['index']=function(_0x2d4318,_0x747795){var _0x21456f={},_0x30bf0e={},_0xaf9085={'count':0x0,'rows':[]};var _0x5828bc=_['map'](db[_0x9b87('0x2c')][_0x9b87('0x2d')],function(_0x181b09){return{'name':_0x181b09[_0x9b87('0x2e')],'type':_0x181b09[_0x9b87('0x2f')]['key']};});_0x30bf0e[_0x9b87('0x30')]=_['map'](_0x5828bc,_0x9b87('0x2b'));_0x30bf0e[_0x9b87('0x31')]=_[_0x9b87('0x32')](_0x2d4318['query']);_0x30bf0e['filters']=_[_0x9b87('0x33')](_0x30bf0e[_0x9b87('0x30')],_0x30bf0e['query']);_0x21456f['attributes']=_[_0x9b87('0x33')](_0x30bf0e[_0x9b87('0x30')],qs[_0x9b87('0x34')](_0x2d4318[_0x9b87('0x31')]['fields']));_0x21456f[_0x9b87('0x35')]=_0x21456f[_0x9b87('0x35')][_0x9b87('0x36')]?_0x21456f['attributes']:_0x30bf0e[_0x9b87('0x30')];if(!_0x2d4318[_0x9b87('0x31')][_0x9b87('0x37')](_0x9b87('0x38'))){_0x21456f['limit']=qs[_0x9b87('0x24')](_0x2d4318['query']['limit']);_0x21456f[_0x9b87('0x22')]=qs[_0x9b87('0x22')](_0x2d4318['query'][_0x9b87('0x22')]);}_0x21456f['order']=qs['sort'](_0x2d4318[_0x9b87('0x31')][_0x9b87('0x39')]);_0x21456f[_0x9b87('0x3a')]=qs[_0x9b87('0x3b')](_[_0x9b87('0x3c')](_0x2d4318[_0x9b87('0x31')],_0x30bf0e['filters']),_0x5828bc);if(_0x2d4318['query'][_0x9b87('0x3d')]){_0x21456f[_0x9b87('0x3a')]=_[_0x9b87('0x3e')](_0x21456f[_0x9b87('0x3a')],{'$or':_[_0x9b87('0x3f')](_0x5828bc,function(_0x5c46bb){if(_0x5c46bb['type']!==_0x9b87('0x40')){var _0x4b5057={};_0x4b5057[_0x5c46bb[_0x9b87('0x2b')]]={'$like':'%'+_0x2d4318[_0x9b87('0x31')][_0x9b87('0x3d')]+'%'};return _0x4b5057;}})});}_0x21456f=_[_0x9b87('0x3e')]({},_0x21456f,_0x2d4318[_0x9b87('0x41')]);var _0x5a0edb={'where':_0x21456f[_0x9b87('0x3a')]};return db['MailMessage'][_0x9b87('0x25')](_0x5a0edb)['then'](function(_0x3e64e7){_0xaf9085[_0x9b87('0x25')]=_0x3e64e7;if(_0x2d4318[_0x9b87('0x31')][_0x9b87('0x42')]){_0x21456f[_0x9b87('0x43')]=[{'all':!![]}];}return db[_0x9b87('0x2c')][_0x9b87('0x44')](_0x21456f);})['then'](function(_0x14d54c){_0xaf9085['rows']=_0x14d54c;return _0xaf9085;})[_0x9b87('0x14')](respondWithFilteredResult(_0x747795,_0x21456f))[_0x9b87('0x1f')](handleError(_0x747795,null));};exports[_0x9b87('0x45')]=function(_0x5e8701,_0x5177d2){var _0x599a0f={'raw':!![],'where':{'id':_0x5e8701[_0x9b87('0x46')]['id']}},_0x451640={};_0x451640['model']=_[_0x9b87('0x32')](db['MailMessage'][_0x9b87('0x2d')]);_0x451640['query']=_[_0x9b87('0x32')](_0x5e8701['query']);_0x451640[_0x9b87('0x3b')]=_[_0x9b87('0x33')](_0x451640[_0x9b87('0x30')],_0x451640['query']);_0x599a0f[_0x9b87('0x35')]=_[_0x9b87('0x33')](_0x451640[_0x9b87('0x30')],qs[_0x9b87('0x34')](_0x5e8701['query'][_0x9b87('0x34')]));_0x599a0f[_0x9b87('0x35')]=_0x599a0f[_0x9b87('0x35')]['length']?_0x599a0f[_0x9b87('0x35')]:_0x451640['model'];if(_0x5e8701['query'][_0x9b87('0x42')]){_0x599a0f['include']=[{'all':!![]}];}_0x599a0f=_[_0x9b87('0x3e')]({},_0x599a0f,_0x5e8701['options']);return db[_0x9b87('0x2c')]['find'](_0x599a0f)[_0x9b87('0x14')](handleEntityNotFound(_0x5177d2,null))[_0x9b87('0x14')](respondWithResult(_0x5177d2,null))[_0x9b87('0x1f')](handleError(_0x5177d2,null));};exports[_0x9b87('0x28')]=function(_0x3d2a14,_0xc4e0df){if(_0x3d2a14[_0x9b87('0x47')]['id']){delete _0x3d2a14[_0x9b87('0x47')]['id'];}return db[_0x9b87('0x2c')][_0x9b87('0x48')]({'where':{'id':_0x3d2a14[_0x9b87('0x46')]['id']}})[_0x9b87('0x14')](handleEntityNotFound(_0xc4e0df,null))['then'](saveUpdates(_0x3d2a14[_0x9b87('0x47')],null))[_0x9b87('0x14')](respondWithResult(_0xc4e0df,null))['catch'](handleError(_0xc4e0df,null));};exports['destroy']=function(_0x3b6eb8,_0x26547e){return db['MailMessage'][_0x9b87('0x48')]({'where':{'id':_0x3b6eb8['params']['id']}})[_0x9b87('0x14')](handleEntityNotFound(_0x26547e,null))[_0x9b87('0x14')](removeEntity(_0x26547e,null))['catch'](handleError(_0x26547e,null));};exports[_0x9b87('0x49')]=function(_0xf5640,_0x52ce78){return db[_0x9b87('0x2c')][_0x9b87('0x49')]()['then'](respondWithResult(_0x52ce78,null))[_0x9b87('0x1f')](handleError(_0x52ce78,null));};exports[_0x9b87('0x4a')]=function(_0x7ef3e7,_0x4f919f){return db[_0x9b87('0x2c')][_0x9b87('0x4a')](_0x7ef3e7[_0x9b87('0x47')])[_0x9b87('0x14')](function(_0x4782d5){if(_0x4782d5){if(_0x4782d5[_0x9b87('0x4b')]==='out'&&!_0x4782d5[_0x9b87('0x4c')]){var _0x3f8b58,_0x989310,_0x542fee;if(_0x7ef3e7['body']['to']){_0x989310=_0x7ef3e7[_0x9b87('0x47')]['to']['split'](',')[0x0];}return db[_0x9b87('0x4d')][_0x9b87('0x4e')]({'where':{'id':_0x4782d5[_0x9b87('0x4f')]},'include':[{'model':db[_0x9b87('0x50')],'as':_0x9b87('0x51'),'include':[{'model':db['CmContact'],'as':_0x9b87('0x52'),'where':{'email':_0x989310},'limit':0x1,'order':[['updatedAt',_0x9b87('0x53')]]}]},{'model':db[_0x9b87('0x54')],'as':'Smtp','raw':!![],'include':[{'model':db[_0x9b87('0x55')],'as':_0x9b87('0x55'),'raw':!![]}]}]})['then'](function(_0x3c95a6){_0x3f8b58=_0x3c95a6;if(!_0x3f8b58||!_0x3f8b58[_0x9b87('0x56')])return;var _0x38633b=_0x3f8b58[_0x9b87('0x57')]();if(_0x7ef3e7[_0x9b87('0x47')]['attachments']&&_0x7ef3e7[_0x9b87('0x47')][_0x9b87('0x58')][_0x9b87('0x36')]){for(var _0x1b3705=0x0;_0x1b3705<_0x7ef3e7['body'][_0x9b87('0x58')][_0x9b87('0x36')];_0x1b3705+=0x1){_0x7ef3e7['body']['attachments'][_0x1b3705]={'filename':_0x7ef3e7[_0x9b87('0x47')]['attachments'][_0x1b3705][_0x9b87('0x2b')],'path':path[_0x9b87('0x59')](config['root'],_0x9b87('0x5a'),_0x7ef3e7[_0x9b87('0x47')][_0x9b87('0x58')][_0x1b3705][_0x9b87('0x5b')])};}}_0x542fee={'account':_0x38633b,'message':_0x7ef3e7[_0x9b87('0x47')]};return;})[_0x9b87('0x14')](function(){if(_0x3f8b58[_0x9b87('0x51')]){if(_0x3f8b58['List'][_0x9b87('0x52')][_0x9b87('0x36')]){return _0x3f8b58[_0x9b87('0x51')][_0x9b87('0x52')][0x0];}else{return db['CmContact'][_0x9b87('0x4a')](_[_0x9b87('0xa')](_0x7ef3e7['body'],{'firstName':_0x7ef3e7[_0x9b87('0x47')]['to'],'email':_0x7ef3e7[_0x9b87('0x47')]['to'],'phone':_0x7ef3e7[_0x9b87('0x47')]['to'],'ListId':_0x3f8b58['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0x9b87('0x14')](function(){if(_0x542fee){return respondWithRpcPromise(_0x9b87('0x5c'),'sendMail',_0x542fee,client9003)[_0x9b87('0x14')](function(_0x2cb1a6){return _0x4782d5['update']({'read':!![],'messageId':_0x2cb1a6[_0x9b87('0x5d')],'sentAt':moment()[_0x9b87('0x5e')]('YYYY-MM-DD\x20HH:mm:ss')});})['catch'](function(_0x12ef6c){logger[_0x9b87('0x1b')]('%s',JSON[_0x9b87('0x1a')](_0x12ef6c));return _0x4782d5;});}return _0x4782d5;});}return _0x4782d5;}})[_0x9b87('0x14')](respondWithResult(_0x4f919f,0xc9))[_0x9b87('0x1f')](handleError(_0x4f919f,null));};exports[_0x9b87('0x5f')]=function(_0x5b6967,_0xb0f2d0){var _0x294b38={'agent':{},'channel':_0x9b87('0x60')};if(_0x5b6967[_0x9b87('0x47')]['id']){delete _0x5b6967[_0x9b87('0x47')]['id'];}_0x5b6967[_0x9b87('0x47')]['read']=!![];_0x5b6967['body'][_0x9b87('0x61')]=moment()['format'](_0x9b87('0x62'));_0x5b6967[_0x9b87('0x47')]['UserId']=_0x5b6967[_0x9b87('0x47')][_0x9b87('0x63')]||_0x5b6967[_0x9b87('0x64')]['id'];_0x294b38[_0x9b87('0x65')]['id']=_0x5b6967['body'][_0x9b87('0x63')];return db[_0x9b87('0x2c')]['find']({'where':{'id':_0x5b6967[_0x9b87('0x46')]['id'],'UserId':null}})[_0x9b87('0x14')](handleEntityNotFound(_0xb0f2d0,null))[_0x9b87('0x14')](saveUpdates(_0x5b6967[_0x9b87('0x47')],null))[_0x9b87('0x14')](function(_0x47f18b){if(_0x47f18b){_0x294b38[_0x9b87('0x1d')]=_0x47f18b[_0x9b87('0x66')]({'plain':!![]});return db[_0x9b87('0x67')][_0x9b87('0x48')]({'where':{'id':_0x47f18b[_0x9b87('0x68')]}});}return null;})['then'](handleEntityNotFound(_0xb0f2d0,null))[_0x9b87('0x14')](function(_0x67b293){if(_0x67b293){return _0x67b293[_0x9b87('0x28')]({'UserId':_0x5b6967[_0x9b87('0x47')]['UserId'],'read1stAt':_[_0x9b87('0x69')](_0x67b293[_0x9b87('0x6a')])?moment()[_0x9b87('0x5e')](_0x9b87('0x62')):undefined});}return null;})['then'](function(_0x5673e4){if(_0x5673e4){_0x294b38[_0x9b87('0x6b')]=_0x5673e4[_0x9b87('0x66')]({'plain':!![]});interaction_log[_0x9b87('0x15')](_0x9b87('0x6c'),_0x5b6967[_0x9b87('0x64')]['id'],_0x5b6967[_0x9b87('0x64')][_0x9b87('0x2b')],_0x5b6967[_0x9b87('0x64')][_0x9b87('0x6d')],_0x294b38[_0x9b87('0x6b')]['id'],_0x5b6967[_0x9b87('0x47')]?JSON['stringify'](_0x5b6967[_0x9b87('0x47')]):_0x9b87('0x6e'));return respondWithRpcPromise(_0x9b87('0x6f'),'acceptMessage',_0x294b38);}return null;})[_0x9b87('0x14')](function(_0x306f6e){var _0x589fb6=_0x9b87('0x70')+_0x306f6e[_0x9b87('0x1d')][_0x9b87('0x71')];return db[_0x9b87('0x72')][_0x9b87('0x31')](_0x589fb6,{'type':db[_0x9b87('0x73')][_0x9b87('0x74')][_0x9b87('0x75')],'raw':!![]})[_0x9b87('0x14')](function(_0x517963){return _0x517963;});})['then'](function(_0x39847b){if(_0x39847b){_0x294b38['message']['contact']=_0x39847b[0x0];if(!_0x5b6967['body'][_0x9b87('0x63')])return;return db[_0x9b87('0x76')][_0x9b87('0x48')]({'where':{'id':_0x5b6967[_0x9b87('0x47')][_0x9b87('0x63')],'role':_0x9b87('0x65')},'attributes':['id',_0x9b87('0x2b'),_0x9b87('0x77'),_0x9b87('0x78'),_0x9b87('0x79')],'raw':!![]});}return null;})['then'](function(_0x46a66e){if(!_0x46a66e)return null;_0x294b38[_0x9b87('0x1d')][_0x9b87('0x65')]=_0x46a66e;return _0x294b38;})[_0x9b87('0x14')](function(_0x1b45e5){if(_0x1b45e5){if(_0x5b6967[_0x9b87('0x47')][_0x9b87('0x7a')]){_0x294b38['message'][_0x9b87('0x7b')]=util['format'](_0x9b87('0x7c'),_0x5b6967[_0x9b87('0x64')][_0x9b87('0x2b')]);_0x294b38[_0x9b87('0x1d')]['channel']=_0x294b38[_0x9b87('0x7d')];_0x294b38[_0x9b87('0x1d')][_0x9b87('0x7e')]=_0x294b38[_0x9b87('0x7d')];_0x294b38[_0x9b87('0x1d')][_0x9b87('0x7f')]=_0x9b87('0x5f');_0x294b38[_0x9b87('0x1d')][_0x9b87('0x47')]=htmlToText['fromString'](_0x294b38[_0x9b87('0x1d')][_0x9b87('0x47')]);return respondWithRpcPromise(_0x9b87('0x80'),'EventManager',{'event':_0x9b87('0x81'),'message':_0x294b38['message']},client9002)[_0x9b87('0x14')](function(){return _0x294b38;});}return _0x294b38;}return null;})[_0x9b87('0x14')](respondWithResult(_0xb0f2d0,null))[_0x9b87('0x1f')](handleError(_0xb0f2d0,null));};exports[_0x9b87('0x82')]=function(_0x5978fe,_0x469604){var _0x36079f={'agent':{},'channel':_0x9b87('0x60')};if(_0x5978fe[_0x9b87('0x47')]['id']){delete _0x5978fe[_0x9b87('0x47')]['id'];}_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')]=_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')]||_0x5978fe['user']['id'];_0x36079f[_0x9b87('0x65')]['id']=_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')];return db[_0x9b87('0x2c')]['find']({'where':{'id':_0x5978fe[_0x9b87('0x46')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x469604,null))[_0x9b87('0x14')](function(_0x135154){if(_0x135154){_0x36079f[_0x9b87('0x1d')]=_0x135154[_0x9b87('0x66')]({'plain':!![]});return db['MailInteraction'][_0x9b87('0x48')]({'where':{'id':_0x135154[_0x9b87('0x68')]}});}return null;})[_0x9b87('0x14')](handleEntityNotFound(_0x469604,null))[_0x9b87('0x14')](function(_0x47d0ea){if(_0x47d0ea){_0x36079f[_0x9b87('0x6b')]=_0x47d0ea[_0x9b87('0x66')]({'plain':!![]});interaction_log[_0x9b87('0x15')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x5978fe[_0x9b87('0x64')]['id'],_0x5978fe[_0x9b87('0x64')][_0x9b87('0x2b')],_0x5978fe[_0x9b87('0x64')][_0x9b87('0x6d')],_0x36079f['interaction']['id'],_0x5978fe['body']?JSON[_0x9b87('0x1a')](_0x5978fe['body']):_0x9b87('0x6e'));return respondWithRpcPromise(_0x9b87('0x83'),_0x9b87('0x84'),_0x36079f);}return null;})['then'](function(_0x2f5008){var _0x447600=_0x9b87('0x70')+_0x2f5008[_0x9b87('0x1d')][_0x9b87('0x71')];return db[_0x9b87('0x72')][_0x9b87('0x31')](_0x447600,{'type':db[_0x9b87('0x73')][_0x9b87('0x74')][_0x9b87('0x75')],'raw':!![]})[_0x9b87('0x14')](function(_0x40fc69){return _0x40fc69;});})[_0x9b87('0x14')](function(_0x4c3ff3){if(_0x4c3ff3){_0x36079f['message']['contact']=_0x4c3ff3[0x0];if(!_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')])return;return db[_0x9b87('0x76')][_0x9b87('0x48')]({'where':{'id':_0x5978fe[_0x9b87('0x47')][_0x9b87('0x63')],'role':_0x9b87('0x65')},'attributes':['id',_0x9b87('0x2b'),_0x9b87('0x77'),'email',_0x9b87('0x79')],'raw':!![]});}return null;})['then'](function(_0x3f931a){if(!_0x3f931a)return null;_0x36079f[_0x9b87('0x1d')][_0x9b87('0x65')]=_0x3f931a;return _0x36079f;})['then'](function(_0x471971){if(_0x471971){_0x471971[_0x9b87('0x1d')]['interface']=util['format'](_0x9b87('0x7c'),_0x5978fe[_0x9b87('0x64')]['name']);_0x471971[_0x9b87('0x1d')][_0x9b87('0x7d')]=_0x36079f['channel'];_0x471971[_0x9b87('0x1d')][_0x9b87('0x7e')]=_0x36079f[_0x9b87('0x7d')];_0x471971['message']['event']=_0x9b87('0x82');_0x471971['message']['body']=htmlToText[_0x9b87('0x85')](_0x36079f[_0x9b87('0x1d')][_0x9b87('0x47')]);respondWithRpcPromise(_0x9b87('0x80'),'EventManager',{'event':_0x9b87('0x86'),'message':_0x471971[_0x9b87('0x1d')]},client9002);return _0x36079f;}return null;})['then'](respondWithResult(_0x469604,null))[_0x9b87('0x1f')](handleError(_0x469604,null));};exports[_0x9b87('0x87')]=function(_0x1be605,_0x139d14){var _0x2428b7=moment()[_0x9b87('0x88')]()['toString']();var _0xe90d2f=path[_0x9b87('0x59')](config[_0x9b87('0x89')],'server','files',_0x9b87('0x8a'));var _0x1a7b48=path[_0x9b87('0x59')](config[_0x9b87('0x89')],_0x9b87('0x8b'),_0x9b87('0x8c'),_0x9b87('0x58'));var _0x206eb6=util['format'](_0x9b87('0x8d'),_0x2428b7);return db[_0x9b87('0x2c')][_0x9b87('0x48')]({'where':{'id':_0x1be605[_0x9b87('0x46')]['id']},'attributes':['id',_0x9b87('0x47'),_0x9b87('0x8e'),'to','cc','bcc',_0x9b87('0x8f'),_0x9b87('0x90')],'include':_0x1be605['query'][_0x9b87('0x58')]?[{'model':db[_0x9b87('0x91')],'as':'Attachments'}]:undefined})[_0x9b87('0x14')](handleEntityNotFound(_0x139d14,null))[_0x9b87('0x14')](function(_0x1ac632){if(_0x1ac632){var _0x3765cd=_0x1ac632;var _0x28c400={'from':_0x3765cd[_0x9b87('0x8e')],'to':_0x3765cd['to'],'subject':_0x3765cd[_0x9b87('0x8f')],'html':htmlEntities['decode'](_0x3765cd[_0x9b87('0x47')]),'headers':{'Date':moment(_0x3765cd[_0x9b87('0x90')])[_0x9b87('0x5e')](_0x9b87('0x92'))},'attachments':[]};if(_0x1ac632['cc']){_0x28c400[_0x9b87('0x93')]['Cc']=_0x1ac632['cc'];}if(_0x1ac632[_0x9b87('0x94')]){_0x28c400['headers'][_0x9b87('0x95')]=_0x1ac632[_0x9b87('0x94')];}return new BPromise(function(_0x47da5a,_0x55f42b){if(_0x1ac632[_0x9b87('0x96')]){for(var _0xa4c0ca=0x0;_0xa4c0ca<_0x1ac632[_0x9b87('0x96')][_0x9b87('0x36')];_0xa4c0ca++){var _0x5480e4=_0x1ac632['Attachments'][_0xa4c0ca];var _0x42d15e=path[_0x9b87('0x59')](_0x1a7b48,_0x5480e4[_0x9b87('0x5b')]);if(fs[_0x9b87('0x97')](_0x42d15e)){_0x28c400[_0x9b87('0x58')]['push']({'name':_0x5480e4[_0x9b87('0x2b')],'contentType':_0x5480e4[_0x9b87('0x2f')],'data':fs[_0x9b87('0x98')](_0x42d15e)});}}}emlformat['build'](_0x28c400,function(_0xa32bca,_0xcade49){if(_0xa32bca)return _0x55f42b(_0xa32bca);fs['writeFileSync'](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6),_0xcade49);return _0x47da5a(_0xcade49);});});}})[_0x9b87('0x14')](function(_0x5f125c){if(_0x5f125c){return _0x139d14[_0x9b87('0x87')](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6),_0x206eb6,function(_0x2b8828){if(!_0x2b8828)fs[_0x9b87('0x99')](path[_0x9b87('0x59')](_0xe90d2f,_0x206eb6));});}})[_0x9b87('0x1f')](handleError(_0x139d14,null));};
\ No newline at end of file
index b3f1e68..5430f51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x821e=['../../mysqldb','setMaxListeners','save','emit','hook','exports','events'];(function(_0x5702fa,_0x1ddb0d){var _0xbe34af=function(_0x1c43b5){while(--_0x1c43b5){_0x5702fa['push'](_0x5702fa['shift']());}};_0xbe34af(++_0x1ddb0d);}(_0x821e,0xd8));var _0xe821=function(_0x470e67,_0x4a596d){_0x470e67=_0x470e67-0x0;var _0x28bbde=_0x821e[_0x470e67];return _0x28bbde;};'use strict';var EventEmitter=require(_0xe821('0x0'));var MailMessage=require(_0xe821('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0xe821('0x2')](0x0);var events={'afterCreate':_0xe821('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x4c286f){return function(_0x2d856e,_0x2155b8,_0x31d0ce){MailMessageEvents[_0xe821('0x4')](_0x4c286f+':'+_0x2d856e['id'],_0x2d856e);MailMessageEvents['emit'](_0x4c286f,_0x2d856e);_0x31d0ce(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailMessage[_0xe821('0x5')](e,emitEvent(event));}}module[_0xe821('0x6')]=MailMessageEvents;
\ No newline at end of file
+var _0xbb5c=['events','MailMessage','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3213ec,_0x35a893){var _0x567f49=function(_0x2dab8e){while(--_0x2dab8e){_0x3213ec['push'](_0x3213ec['shift']());}};_0x567f49(++_0x35a893);}(_0xbb5c,0x15f));var _0xcbb5=function(_0x60857c,_0x20d7b3){_0x60857c=_0x60857c-0x0;var _0x56719d=_0xbb5c[_0x60857c];return _0x56719d;};'use strict';var EventEmitter=require(_0xcbb5('0x0'));var MailMessage=require('../../mysqldb')['db'][_0xcbb5('0x1')];var MailMessageEvents=new EventEmitter();MailMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xcbb5('0x2'),'afterUpdate':_0xcbb5('0x3'),'afterDestroy':_0xcbb5('0x4')};function emitEvent(_0xb02470){return function(_0x2f1f2a,_0x33eb9b,_0x444fc6){MailMessageEvents['emit'](_0xb02470+':'+_0x2f1f2a['id'],_0x2f1f2a);MailMessageEvents[_0xcbb5('0x5')](_0xb02470,_0x2f1f2a);_0x444fc6(null);};}for(var e in events){if(events[_0xcbb5('0x6')](e)){var event=events[e];MailMessage[_0xcbb5('0x7')](e,emitEvent(event));}}module[_0xcbb5('0x8')]=MailMessageEvents;
\ No newline at end of file
index 5590f5a..9243a68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4e1=['../../config/logger','api','moment','html-to-text','../../config/environment','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','plainBody','subject','FULLTEXT','body','fromString','models','get','direction','toLowerCase','out','secret','UserId','MailInteraction','findOne','then','update','createdAt','catch','utf8mb4','utf8mb4_unicode_ci','util'];(function(_0x4ffd20,_0x1e83b6){var _0x49b5e2=function(_0xfdd1a6){while(--_0xfdd1a6){_0x4ffd20['push'](_0x4ffd20['shift']());}};_0x49b5e2(++_0x1e83b6);}(_0xf4e1,0xff));var _0x1f4e=function(_0x392a16,_0x1c4c9d){_0x392a16=_0x392a16-0x0;var _0x3b33ef=_0xf4e1[_0x392a16];return _0x3b33ef;};'use strict';var _=require('lodash');var util=require(_0x1f4e('0x0'));var logger=require(_0x1f4e('0x1'))(_0x1f4e('0x2'));var moment=require(_0x1f4e('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var htmlToText=require(_0x1f4e('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x1f4e('0x5'));var attributes=require(_0x1f4e('0x6'));module[_0x1f4e('0x7')]=function(_0x1800d5,_0x5d7051){return _0x1800d5[_0x1f4e('0x8')](_0x1f4e('0x9'),attributes,{'tableName':_0x1f4e('0xa'),'paranoid':![],'indexes':[{'name':_0x1f4e('0xb'),'fields':[_0x1f4e('0xb')]},{'name':'fti_mail_messages','fields':[_0x1f4e('0xc'),_0x1f4e('0xd')],'type':_0x1f4e('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x364b38,_0x14aa74,_0x31adc6){if(_0x364b38[_0x1f4e('0xf')]){_0x364b38[_0x1f4e('0xc')]=htmlToText[_0x1f4e('0x10')](_0x364b38[_0x1f4e('0xf')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x31adc6(null,_0x14aa74);},'afterCreate':function(_0x114413,_0x42f078,_0x459984){var _0xaa0dfa=_0x1800d5[_0x1f4e('0x11')];var _0x1ec4d5=_0x114413[_0x1f4e('0x12')]({'plain':!![]});if(_0x1ec4d5[_0x1f4e('0x13')][_0x1f4e('0x14')]()==='in'||_0x1ec4d5['direction'][_0x1f4e('0x14')]()===_0x1f4e('0x15')&&!_0x1ec4d5[_0x1f4e('0x16')]&&!_['isNil'](_0x1ec4d5[_0x1f4e('0x17')])){_0xaa0dfa[_0x1f4e('0x18')][_0x1f4e('0x19')]({'where':{'id':_0x1ec4d5['MailInteractionId']}})[_0x1f4e('0x1a')](function(_0x2ea648){if(_0x2ea648){_0x2ea648[_0x1f4e('0x1b')]({'lastMsgAt':_0x1ec4d5[_0x1f4e('0x1c')],'lastMsgDirection':_0x1ec4d5['direction'][_0x1f4e('0x14')]()});}})[_0x1f4e('0x1d')](function(_0x5c06b8){console['error'](_0x5c06b8);});}_0x459984();}},'charset':_0x1f4e('0x1e'),'collate':_0x1f4e('0x1f')});};
\ No newline at end of file
+var _0xc4f4=['fromString','models','get','direction','out','secret','findOne','then','update','toLowerCase','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','html-to-text','path','rimraf','./mailMessage.attributes','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','plainBody','subject','FULLTEXT'];(function(_0xcb0d78,_0x1f19b1){var _0x324089=function(_0x4072e8){while(--_0x4072e8){_0xcb0d78['push'](_0xcb0d78['shift']());}};_0x324089(++_0x1f19b1);}(_0xc4f4,0x6e));var _0x4c4f=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xc4f4[_0x5ddb1c];return _0x354adc;};'use strict';var _=require(_0x4c4f('0x0'));var util=require(_0x4c4f('0x1'));var logger=require(_0x4c4f('0x2'))('api');var moment=require(_0x4c4f('0x3'));var BPromise=require(_0x4c4f('0x4'));var rp=require('request-promise');var htmlToText=require(_0x4c4f('0x5'));var fs=require('fs');var path=require(_0x4c4f('0x6'));var rimraf=require(_0x4c4f('0x7'));var config=require('../../config/environment');var attributes=require(_0x4c4f('0x8'));module[_0x4c4f('0x9')]=function(_0x28b497,_0xd789c6){return _0x28b497[_0x4c4f('0xa')](_0x4c4f('0xb'),attributes,{'tableName':_0x4c4f('0xc'),'paranoid':![],'indexes':[{'name':_0x4c4f('0xd'),'fields':[_0x4c4f('0xd')]},{'name':_0x4c4f('0xe'),'fields':[_0x4c4f('0xf'),_0x4c4f('0x10')],'type':_0x4c4f('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3a5e98,_0x1af928,_0x41300c){if(_0x3a5e98['body']){_0x3a5e98['plainBody']=htmlToText[_0x4c4f('0x12')](_0x3a5e98['body'],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x41300c(null,_0x1af928);},'afterCreate':function(_0x3de05d,_0x2683e1,_0x4d37e3){var _0x179eff=_0x28b497[_0x4c4f('0x13')];var _0x360c83=_0x3de05d[_0x4c4f('0x14')]({'plain':!![]});if(_0x360c83[_0x4c4f('0x15')]['toLowerCase']()==='in'||_0x360c83[_0x4c4f('0x15')]['toLowerCase']()===_0x4c4f('0x16')&&!_0x360c83[_0x4c4f('0x17')]&&!_['isNil'](_0x360c83['UserId'])){_0x179eff['MailInteraction'][_0x4c4f('0x18')]({'where':{'id':_0x360c83['MailInteractionId']}})[_0x4c4f('0x19')](function(_0x1f7396){if(_0x1f7396){_0x1f7396[_0x4c4f('0x1a')]({'lastMsgAt':_0x360c83['createdAt'],'lastMsgDirection':_0x360c83['direction'][_0x4c4f('0x1b')]()});}})[_0x4c4f('0x1c')](function(_0x1cf570){console[_0x4c4f('0x1d')](_0x1cf570);});}_0x4d37e3();}},'charset':_0x4c4f('0x1e'),'collate':_0x4c4f('0x1f')});};
\ No newline at end of file
index e8b55d0..e6c736c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0972=['message','catch','CreateMailMessage','MailMessage','body','options','raw','util','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailMessage.socket','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x357fca,_0x1060d6){var _0x3beacf=function(_0x58d66c){while(--_0x58d66c){_0x357fca['push'](_0x357fca['shift']());}};_0x3beacf(++_0x1060d6);}(_0x0972,0x64));var _0x2097=function(_0xc401ba,_0x1e7d87){_0xc401ba=_0xc401ba-0x0;var _0x2212e6=_0x0972[_0xc401ba];return _0x2212e6;};'use strict';var _=require('lodash');var util=require(_0x2097('0x0'));var moment=require('moment');var BPromise=require(_0x2097('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2097('0x2'));var db=require(_0x2097('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x2097('0x4'))(_0x2097('0x5'));var config=require(_0x2097('0x6'));var jayson=require(_0x2097('0x7'));var client=jayson[_0x2097('0x8')][_0x2097('0x9')]({'port':0x232a});config[_0x2097('0xa')]=_['defaults'](config[_0x2097('0xa')],{'host':_0x2097('0xb'),'port':0x18eb});var socket=require(_0x2097('0xc'))(new Redis(config[_0x2097('0xa')]));require(_0x2097('0xd'))['register'](socket);function respondWithRpcPromise(_0x2e0024,_0x3b8b76,_0x131f06){return new BPromise(function(_0x430754,_0x7baeb3){return client[_0x2097('0xe')](_0x2e0024,_0x131f06)[_0x2097('0xf')](function(_0x1d1166){logger[_0x2097('0x10')](_0x2097('0x11'),_0x3b8b76,_0x2097('0x12'));logger[_0x2097('0x13')](_0x2097('0x14'),_0x3b8b76,_0x2097('0x12'),JSON[_0x2097('0x15')](_0x1d1166));if(_0x1d1166[_0x2097('0x16')]){if(_0x1d1166[_0x2097('0x16')][_0x2097('0x17')]===0x1f4){logger[_0x2097('0x16')](_0x2097('0x11'),_0x3b8b76,_0x1d1166['error'][_0x2097('0x18')]);return _0x7baeb3(_0x1d1166[_0x2097('0x16')]['message']);}logger['error']('MailMessage,\x20%s,\x20%s',_0x3b8b76,_0x1d1166[_0x2097('0x16')]['message']);return _0x430754(_0x1d1166[_0x2097('0x16')][_0x2097('0x18')]);}else{logger[_0x2097('0x10')](_0x2097('0x11'),_0x3b8b76,_0x2097('0x12'));_0x430754(_0x1d1166['result'][_0x2097('0x18')]);}})[_0x2097('0x19')](function(_0x451584){logger[_0x2097('0x16')](_0x2097('0x11'),_0x3b8b76,_0x451584);_0x7baeb3(_0x451584);});});}exports[_0x2097('0x1a')]=function(_0x253f5d){var _0x46b5e0=this;return new Promise(function(_0x5d8b9e,_0x4d957e){return db[_0x2097('0x1b')]['create'](_0x253f5d[_0x2097('0x1c')],{'raw':_0x253f5d[_0x2097('0x1d')]?_0x253f5d['options'][_0x2097('0x1e')]===undefined?!![]:![]:!![]})['then'](function(_0x2e17c8){logger[_0x2097('0x10')](_0x2097('0x1a'),_0x253f5d);logger[_0x2097('0x13')](_0x2097('0x1a'),_0x253f5d,JSON[_0x2097('0x15')](_0x2e17c8));_0x5d8b9e(_0x2e17c8);})['catch'](function(_0xae5f9){logger['error'](_0x2097('0x1a'),_0xae5f9[_0x2097('0x18')],_0x253f5d);_0x4d957e(_0x46b5e0[_0x2097('0x16')](0x1f4,_0xae5f9[_0x2097('0x18')]));});});};
\ No newline at end of file
+var _0x8f4c=['body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','defaults','localhost','socket.io-emitter','redis','./mailMessage.socket','register','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','create'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x8f4c,0x113));var _0xc8f4=function(_0x523a3a,_0x40bb6c){_0x523a3a=_0x523a3a-0x0;var _0x136cab=_0x8f4c[_0x523a3a];return _0x136cab;};'use strict';var _=require(_0xc8f4('0x0'));var util=require(_0xc8f4('0x1'));var moment=require(_0xc8f4('0x2'));var BPromise=require(_0xc8f4('0x3'));var rs=require(_0xc8f4('0x4'));var fs=require('fs');var Redis=require(_0xc8f4('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc8f4('0x6'));var logger=require(_0xc8f4('0x7'))(_0xc8f4('0x8'));var config=require('../../config/environment');var jayson=require(_0xc8f4('0x9'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0xc8f4('0xa')](config['redis'],{'host':_0xc8f4('0xb'),'port':0x18eb});var socket=require(_0xc8f4('0xc'))(new Redis(config[_0xc8f4('0xd')]));require(_0xc8f4('0xe'))[_0xc8f4('0xf')](socket);function respondWithRpcPromise(_0x599de3,_0x38c41b,_0x191b92){return new BPromise(function(_0x2fba62,_0x3a2f8a){return client['request'](_0x599de3,_0x191b92)[_0xc8f4('0x10')](function(_0x52c699){logger[_0xc8f4('0x11')](_0xc8f4('0x12'),_0x38c41b,_0xc8f4('0x13'));logger[_0xc8f4('0x14')](_0xc8f4('0x15'),_0x38c41b,'request\x20sent',JSON[_0xc8f4('0x16')](_0x52c699));if(_0x52c699[_0xc8f4('0x17')]){if(_0x52c699[_0xc8f4('0x17')][_0xc8f4('0x18')]===0x1f4){logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x52c699['error'][_0xc8f4('0x19')]);return _0x3a2f8a(_0x52c699[_0xc8f4('0x17')][_0xc8f4('0x19')]);}logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x52c699['error'][_0xc8f4('0x19')]);return _0x2fba62(_0x52c699['error']['message']);}else{logger[_0xc8f4('0x11')](_0xc8f4('0x12'),_0x38c41b,_0xc8f4('0x13'));_0x2fba62(_0x52c699[_0xc8f4('0x1a')][_0xc8f4('0x19')]);}})[_0xc8f4('0x1b')](function(_0x2459ac){logger[_0xc8f4('0x17')](_0xc8f4('0x12'),_0x38c41b,_0x2459ac);_0x3a2f8a(_0x2459ac);});});}exports[_0xc8f4('0x1c')]=function(_0x3cd90c){var _0x3126e5=this;return new Promise(function(_0x22236c,_0x5f3264){return db[_0xc8f4('0x1d')][_0xc8f4('0x1e')](_0x3cd90c[_0xc8f4('0x1f')],{'raw':_0x3cd90c[_0xc8f4('0x20')]?_0x3cd90c[_0xc8f4('0x20')][_0xc8f4('0x21')]===undefined?!![]:![]:!![]})[_0xc8f4('0x10')](function(_0x43eb57){logger['info'](_0xc8f4('0x1c'),_0x3cd90c);logger[_0xc8f4('0x14')](_0xc8f4('0x1c'),_0x3cd90c,JSON[_0xc8f4('0x16')](_0x43eb57));_0x22236c(_0x43eb57);})['catch'](function(_0x39174f){logger['error'](_0xc8f4('0x1c'),_0x39174f['message'],_0x3cd90c);_0x5f3264(_0x3126e5[_0xc8f4('0x17')](0x1f4,_0x39174f[_0xc8f4('0x19')]));});});};
\ No newline at end of file
index 96216ee..cc08531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82a2=['./mailMessage.events','remove','update','emit','removeListener','mailMessage:'];(function(_0x29faf7,_0x37395d){var _0x499262=function(_0x205fe6){while(--_0x205fe6){_0x29faf7['push'](_0x29faf7['shift']());}};_0x499262(++_0x37395d);}(_0x82a2,0x17a));var _0x282a=function(_0x3fd16c,_0x59809c){_0x3fd16c=_0x3fd16c-0x0;var _0x2806f7=_0x82a2[_0x3fd16c];return _0x2806f7;};'use strict';var MailMessageEvents=require(_0x282a('0x0'));var events=['save',_0x282a('0x1'),_0x282a('0x2')];function createListener(_0x30cd99,_0x24e2e8){return function(_0x12f55d){_0x24e2e8[_0x282a('0x3')](_0x30cd99,_0x12f55d);};}function removeListener(_0x1b7f0f,_0x431bde){return function(){MailMessageEvents[_0x282a('0x4')](_0x1b7f0f,_0x431bde);};}exports['register']=function(_0x2cc807){for(var _0x4bf75f=0x0,_0x7bc1b5=events['length'];_0x4bf75f<_0x7bc1b5;_0x4bf75f++){var _0x48e7f4=events[_0x4bf75f];var _0x161255=createListener(_0x282a('0x5')+_0x48e7f4,_0x2cc807);MailMessageEvents['on'](_0x48e7f4,_0x161255);}};
\ No newline at end of file
+var _0xf511=['update','emit','mailMessage:','./mailMessage.events','save','remove'];(function(_0x1a97a7,_0xadc033){var _0x51f5f3=function(_0x5a48c1){while(--_0x5a48c1){_0x1a97a7['push'](_0x1a97a7['shift']());}};_0x51f5f3(++_0xadc033);}(_0xf511,0x19b));var _0x1f51=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0xf511[_0x37a9d7];return _0x1343d3;};'use strict';var MailMessageEvents=require(_0x1f51('0x0'));var events=[_0x1f51('0x1'),_0x1f51('0x2'),_0x1f51('0x3')];function createListener(_0x381200,_0x266730){return function(_0x136514){_0x266730[_0x1f51('0x4')](_0x381200,_0x136514);};}function removeListener(_0x3c3552,_0x163506){return function(){MailMessageEvents['removeListener'](_0x3c3552,_0x163506);};}exports['register']=function(_0x2893d7){for(var _0x5af5d0=0x0,_0x5845da=events['length'];_0x5af5d0<_0x5845da;_0x5af5d0++){var _0x363fa5=events[_0x5af5d0];var _0x36819a=createListener(_0x1f51('0x5')+_0x363fa5,_0x2893d7);MailMessageEvents['on'](_0x363fa5,_0x36819a);}};
\ No newline at end of file
index 4412eb8..2184ffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf85c=['/:id','update','delete','destroy','removeTeams','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','create','addTeams','post','addAgents'];(function(_0x52d543,_0x4982e1){var _0x572ca0=function(_0x4af633){while(--_0x4af633){_0x52d543['push'](_0x52d543['shift']());}};_0x572ca0(++_0x4982e1);}(_0xf85c,0x1b4));var _0xcf85=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0xf85c[_0x45bf86];return _0x1f02b7;};'use strict';var multer=require(_0xcf85('0x0'));var util=require(_0xcf85('0x1'));var path=require(_0xcf85('0x2'));var timeout=require(_0xcf85('0x3'));var express=require(_0xcf85('0x4'));var router=express[_0xcf85('0x5')]();var fs_extra=require(_0xcf85('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xcf85('0x7'));var config=require(_0xcf85('0x8'));var controller=require(_0xcf85('0x9'));router[_0xcf85('0xa')]('/',auth[_0xcf85('0xb')](),controller[_0xcf85('0xc')]);router[_0xcf85('0xa')](_0xcf85('0xd'),auth[_0xcf85('0xb')](),controller[_0xcf85('0xe')]);router[_0xcf85('0xa')]('/:id',auth[_0xcf85('0xb')](),controller[_0xcf85('0xf')]);router[_0xcf85('0xa')](_0xcf85('0x10'),auth['isAuthenticated'](),controller[_0xcf85('0x11')]);router[_0xcf85('0xa')](_0xcf85('0x12'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x13')]);router[_0xcf85('0xa')](_0xcf85('0x14'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x15')]);router['post']('/',auth[_0xcf85('0xb')](),controller[_0xcf85('0x16')]);router['post'](_0xcf85('0x12'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x17')]);router[_0xcf85('0x18')](_0xcf85('0x14'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x19')]);router['put'](_0xcf85('0x1a'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x1b')]);router[_0xcf85('0x1c')](_0xcf85('0x1a'),auth[_0xcf85('0xb')](),controller[_0xcf85('0x1d')]);router[_0xcf85('0x1c')](_0xcf85('0x12'),auth['isAuthenticated'](),controller[_0xcf85('0x1e')]);router['delete']('/:id/users',auth[_0xcf85('0xb')](),controller[_0xcf85('0x1f')]);module[_0xcf85('0x20')]=router;
\ No newline at end of file
+var _0x2f4a=['index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','getAgents','create','post','/:id/teams','/:id/users','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./mailQueue.controller','get','isAuthenticated'];(function(_0x3d66db,_0x82511){var _0x5b6644=function(_0x520d0b){while(--_0x520d0b){_0x3d66db['push'](_0x3d66db['shift']());}};_0x5b6644(++_0x82511);}(_0x2f4a,0x1b8));var _0xa2f4=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x2f4a[_0x4154a6];return _0x3b2786;};'use strict';var multer=require('multer');var util=require(_0xa2f4('0x0'));var path=require('path');var timeout=require(_0xa2f4('0x1'));var express=require(_0xa2f4('0x2'));var router=express[_0xa2f4('0x3')]();var fs_extra=require(_0xa2f4('0x4'));var auth=require(_0xa2f4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xa2f4('0x6'));var controller=require(_0xa2f4('0x7'));router[_0xa2f4('0x8')]('/',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xa')]);router[_0xa2f4('0x8')](_0xa2f4('0xb'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xc')]);router[_0xa2f4('0x8')](_0xa2f4('0xd'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0xe')]);router['get'](_0xa2f4('0xf'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x10')]);router[_0xa2f4('0x8')]('/:id/teams',auth['isAuthenticated'](),controller[_0xa2f4('0x11')]);router['get']('/:id/users',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x12')]);router['post']('/',auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x13')]);router[_0xa2f4('0x14')](_0xa2f4('0x15'),auth[_0xa2f4('0x9')](),controller['addTeams']);router[_0xa2f4('0x14')](_0xa2f4('0x16'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x17')]);router[_0xa2f4('0x18')](_0xa2f4('0xd'),auth[_0xa2f4('0x9')](),controller['update']);router[_0xa2f4('0x19')]('/:id',auth['isAuthenticated'](),controller[_0xa2f4('0x1a')]);router[_0xa2f4('0x19')](_0xa2f4('0x15'),auth['isAuthenticated'](),controller[_0xa2f4('0x1b')]);router[_0xa2f4('0x19')](_0xa2f4('0x16'),auth[_0xa2f4('0x9')](),controller[_0xa2f4('0x1c')]);module[_0xa2f4('0x1d')]=router;
\ No newline at end of file
index 079ece9..f7d0f1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e9b=['sequelize','exports','STRING','rrmemory','beepall','roundrobin'];(function(_0x1fbf82,_0x5a47f3){var _0x2374a5=function(_0x2131cb){while(--_0x2131cb){_0x1fbf82['push'](_0x1fbf82['shift']());}};_0x2374a5(++_0x5a47f3);}(_0x7e9b,0x132));var _0xb7e9=function(_0x38c4a6,_0x17f461){_0x38c4a6=_0x38c4a6-0x0;var _0x13591a=_0x7e9b[_0x38c4a6];return _0x13591a;};'use strict';var Sequelize=require(_0xb7e9('0x0'));module[_0xb7e9('0x1')]={'name':{'type':Sequelize[_0xb7e9('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb7e9('0x2')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xb7e9('0x3'),_0xb7e9('0x4'),_0xb7e9('0x5'))}};
\ No newline at end of file
+var _0x3a0e=['INTEGER','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x4fedac,_0x4b1ff7){var _0x306bb6=function(_0x28584a){while(--_0x28584a){_0x4fedac['push'](_0x4fedac['shift']());}};_0x306bb6(++_0x4b1ff7);}(_0x3a0e,0x1cc));var _0xe3a0=function(_0x597aca,_0x41a682){_0x597aca=_0x597aca-0x0;var _0x3306b5=_0x3a0e[_0x597aca];return _0x3306b5;};'use strict';var Sequelize=require(_0xe3a0('0x0'));module[_0xe3a0('0x1')]={'name':{'type':Sequelize[_0xe3a0('0x2')],'unique':_0xe3a0('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xe3a0('0x2')]},'timeout':{'type':Sequelize[_0xe3a0('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xe3a0('0x5'),_0xe3a0('0x6'),_0xe3a0('0x7'))}};
\ No newline at end of file
index 6b7dee7..3b8a662 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd657=['localhost','./mailQueue.socket','register','sendStatus','status','end','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','MailQueues','destroy','stack','name','send','index','type','key','map','query','keys','filters','attributes','intersection','model','fields','length','hasOwnProperty','order','sort','filter','where','merge','VIRTUAL','options','MailQueue','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','findOne','UserMailQueue','nolimit','pick','MailQueueId','User','findAndCountAll','UserId','agent','mailPause','updatedAt','createdAt','format','getTeams','addTeams','ids','Team','voicePause','interface','flatMap','Agents','transaction','each','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','sequelize','QueryTypes','SELECT','every','TeamId','includes','union','compact','value','isEmpty','removeAgents','omit','isArray','userMailQueue:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults'];(function(_0x28f46a,_0x3d1bc9){var _0x51e1ed=function(_0x23ff8f){while(--_0x23ff8f){_0x28f46a['push'](_0x28f46a['shift']());}};_0x51e1ed(++_0x3d1bc9);}(_0xd657,0x71));var _0x7d65=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd657[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7d65('0x0'));var rimraf=require(_0x7d65('0x1'));var zipdir=require(_0x7d65('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7d65('0x3'));var moment=require(_0x7d65('0x4'));var BPromise=require(_0x7d65('0x5'));var Mustache=require(_0x7d65('0x6'));var util=require(_0x7d65('0x7'));var path=require(_0x7d65('0x8'));var sox=require(_0x7d65('0x9'));var csv=require('to-csv');var ejs=require(_0x7d65('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7d65('0xb'));var squel=require('squel');var crypto=require(_0x7d65('0xc'));var jsforce=require(_0x7d65('0xd'));var deskjs=require(_0x7d65('0xe'));var toCsv=require(_0x7d65('0xf'));var querystring=require(_0x7d65('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7d65('0x11'));var qs=require(_0x7d65('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7d65('0x13'));var logger=require(_0x7d65('0x14'))('api');var utils=require(_0x7d65('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7d65('0x16'));var db=require(_0x7d65('0x17'))['db'];config[_0x7d65('0x18')]=_[_0x7d65('0x19')](config[_0x7d65('0x18')],{'host':_0x7d65('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x7d65('0x1b'))[_0x7d65('0x1c')](socket);function respondWithStatusCode(_0x254903,_0x1d7e42){_0x1d7e42=_0x1d7e42||0xcc;return function(_0x14cd42){if(_0x14cd42){return _0x254903[_0x7d65('0x1d')](_0x1d7e42);}return _0x254903[_0x7d65('0x1e')](_0x1d7e42)[_0x7d65('0x1f')]();};}function respondWithResult(_0x49d350,_0x1a5fc5){_0x1a5fc5=_0x1a5fc5||0xc8;return function(_0x4c1b96){if(_0x4c1b96){return _0x49d350['status'](_0x1a5fc5)['json'](_0x4c1b96);}};}function respondWithFilteredResult(_0x1d69af,_0x31fcf9){return function(_0x50adb7){if(_0x50adb7){var _0x2895f9=typeof _0x31fcf9[_0x7d65('0x20')]===_0x7d65('0x21')&&typeof _0x31fcf9['limit']===_0x7d65('0x21');var _0x85fbd5=_0x50adb7[_0x7d65('0x22')];var _0x5a013b=_0x2895f9?0x0:_0x31fcf9[_0x7d65('0x20')];var _0x31713e=_0x2895f9?_0x50adb7[_0x7d65('0x22')]:_0x31fcf9[_0x7d65('0x20')]+_0x31fcf9[_0x7d65('0x23')];var _0x133075;if(_0x31713e>=_0x85fbd5){_0x31713e=_0x85fbd5;_0x133075=0xc8;}else{_0x133075=0xce;}_0x1d69af[_0x7d65('0x1e')](_0x133075);return _0x1d69af[_0x7d65('0x24')](_0x7d65('0x25'),_0x5a013b+'-'+_0x31713e+'/'+_0x85fbd5)['json'](_0x50adb7);}return null;};}function patchUpdates(_0x547561){return function(_0x518fa3){try{jsonpatch[_0x7d65('0x26')](_0x518fa3,_0x547561,!![]);}catch(_0x44c475){return BPromise['reject'](_0x44c475);}return _0x518fa3[_0x7d65('0x27')]();};}function saveUpdates(_0x549fc6,_0x383311){return function(_0x42d00a){if(_0x42d00a){return _0x42d00a[_0x7d65('0x28')](_0x549fc6)[_0x7d65('0x29')](function(_0x40a687){return _0x40a687;});}return null;};}function removeEntity(_0x5ceee8,_0x8d13df){return function(_0x8c77d){if(_0x8c77d){return _0x8c77d['destroy']()[_0x7d65('0x29')](function(){var _0x196be4=_0x8c77d['get']({'plain':!![]});var _0x2c1e76=_0x7d65('0x2a');return db['UserProfileResource'][_0x7d65('0x2b')]({'where':{'type':_0x2c1e76,'resourceId':_0x196be4['id']}})[_0x7d65('0x29')](function(){return _0x8c77d;});})[_0x7d65('0x29')](function(){_0x5ceee8['status'](0xcc)[_0x7d65('0x1f')]();});}};}function handleEntityNotFound(_0x34f1ad,_0x596b98){return function(_0x2544a4){if(!_0x2544a4){_0x34f1ad[_0x7d65('0x1d')](0x194);}return _0x2544a4;};}function handleError(_0x7958c7,_0x1d417b){_0x1d417b=_0x1d417b||0x1f4;return function(_0x3838d3){logger['error'](_0x3838d3[_0x7d65('0x2c')]);if(_0x3838d3[_0x7d65('0x2d')]){delete _0x3838d3[_0x7d65('0x2d')];}_0x7958c7[_0x7d65('0x1e')](_0x1d417b)[_0x7d65('0x2e')](_0x3838d3);};}exports[_0x7d65('0x2f')]=function(_0xb6c8a7,_0x721f13){var _0xf840c4={},_0xa4594={},_0x2a8021={'count':0x0,'rows':[]};var _0x3c562f=_['map'](db['MailQueue']['rawAttributes'],function(_0x50b9d0){return{'name':_0x50b9d0['fieldName'],'type':_0x50b9d0[_0x7d65('0x30')][_0x7d65('0x31')]};});_0xa4594['model']=_[_0x7d65('0x32')](_0x3c562f,_0x7d65('0x2d'));_0xa4594[_0x7d65('0x33')]=_[_0x7d65('0x34')](_0xb6c8a7['query']);_0xa4594[_0x7d65('0x35')]=_['intersection'](_0xa4594['model'],_0xa4594['query']);_0xf840c4[_0x7d65('0x36')]=_[_0x7d65('0x37')](_0xa4594[_0x7d65('0x38')],qs[_0x7d65('0x39')](_0xb6c8a7[_0x7d65('0x33')][_0x7d65('0x39')]));_0xf840c4[_0x7d65('0x36')]=_0xf840c4[_0x7d65('0x36')][_0x7d65('0x3a')]?_0xf840c4[_0x7d65('0x36')]:_0xa4594[_0x7d65('0x38')];if(!_0xb6c8a7[_0x7d65('0x33')][_0x7d65('0x3b')]('nolimit')){_0xf840c4['limit']=qs['limit'](_0xb6c8a7['query']['limit']);_0xf840c4[_0x7d65('0x20')]=qs['offset'](_0xb6c8a7['query'][_0x7d65('0x20')]);}_0xf840c4[_0x7d65('0x3c')]=qs['sort'](_0xb6c8a7[_0x7d65('0x33')][_0x7d65('0x3d')]);_0xf840c4['where']=qs[_0x7d65('0x35')](_['pick'](_0xb6c8a7['query'],_0xa4594['filters']),_0x3c562f);if(_0xb6c8a7[_0x7d65('0x33')][_0x7d65('0x3e')]){_0xf840c4[_0x7d65('0x3f')]=_[_0x7d65('0x40')](_0xf840c4[_0x7d65('0x3f')],{'$or':_['map'](_0x3c562f,function(_0x40f500){if(_0x40f500[_0x7d65('0x30')]!==_0x7d65('0x41')){var _0x261d51={};_0x261d51[_0x40f500[_0x7d65('0x2d')]]={'$like':'%'+_0xb6c8a7[_0x7d65('0x33')]['filter']+'%'};return _0x261d51;}})});}_0xf840c4=_['merge']({},_0xf840c4,_0xb6c8a7[_0x7d65('0x42')]);var _0x2901cf={'where':_0xf840c4[_0x7d65('0x3f')]};return db[_0x7d65('0x43')][_0x7d65('0x22')](_0x2901cf)[_0x7d65('0x29')](function(_0x3bc609){_0x2a8021[_0x7d65('0x22')]=_0x3bc609;if(_0xb6c8a7[_0x7d65('0x33')][_0x7d65('0x44')]){_0xf840c4[_0x7d65('0x45')]=[{'all':!![]}];}return db[_0x7d65('0x43')][_0x7d65('0x46')](_0xf840c4);})['then'](function(_0x2bc41f){_0x2a8021[_0x7d65('0x47')]=_0x2bc41f;return _0x2a8021;})[_0x7d65('0x29')](respondWithFilteredResult(_0x721f13,_0xf840c4))[_0x7d65('0x48')](handleError(_0x721f13,null));};exports[_0x7d65('0x49')]=function(_0x42899f,_0x593db6){var _0x4ebb9f={'raw':!![],'where':{'id':_0x42899f['params']['id']}},_0x543b58={};_0x543b58[_0x7d65('0x38')]=_[_0x7d65('0x34')](db[_0x7d65('0x43')][_0x7d65('0x4a')]);_0x543b58[_0x7d65('0x33')]=_[_0x7d65('0x34')](_0x42899f[_0x7d65('0x33')]);_0x543b58[_0x7d65('0x35')]=_[_0x7d65('0x37')](_0x543b58[_0x7d65('0x38')],_0x543b58[_0x7d65('0x33')]);_0x4ebb9f['attributes']=_['intersection'](_0x543b58[_0x7d65('0x38')],qs[_0x7d65('0x39')](_0x42899f[_0x7d65('0x33')]['fields']));_0x4ebb9f[_0x7d65('0x36')]=_0x4ebb9f[_0x7d65('0x36')][_0x7d65('0x3a')]?_0x4ebb9f['attributes']:_0x543b58[_0x7d65('0x38')];if(_0x42899f[_0x7d65('0x33')][_0x7d65('0x44')]){_0x4ebb9f[_0x7d65('0x45')]=[{'all':!![]}];}_0x4ebb9f=_['merge']({},_0x4ebb9f,_0x42899f[_0x7d65('0x42')]);return db[_0x7d65('0x43')][_0x7d65('0x4b')](_0x4ebb9f)[_0x7d65('0x29')](handleEntityNotFound(_0x593db6,null))['then'](respondWithResult(_0x593db6,null))[_0x7d65('0x48')](handleError(_0x593db6,null));};exports[_0x7d65('0x4c')]=function(_0xf1343d,_0x259156){return db['MailQueue']['create'](_0xf1343d['body'],{})[_0x7d65('0x29')](function(_0x58eb0d){var _0x52e31b=_0xf1343d[_0x7d65('0x4d')]['get']({'plain':!![]});if(!_0x52e31b)throw new Error(_0x7d65('0x4e'));if(_0x52e31b['role']==='user'){var _0x94ba85=_0x58eb0d[_0x7d65('0x4f')]({'plain':!![]});var _0x11e5e0=_0x7d65('0x2a');return db[_0x7d65('0x50')][_0x7d65('0x4b')]({'where':{'name':_0x11e5e0,'userProfileId':_0x52e31b['userProfileId']},'raw':!![]})[_0x7d65('0x29')](function(_0x17679b){if(_0x17679b&&_0x17679b['autoAssociation']===0x0){return db[_0x7d65('0x51')][_0x7d65('0x4c')]({'name':_0x94ba85[_0x7d65('0x2d')],'resourceId':_0x94ba85['id'],'type':_0x17679b[_0x7d65('0x2d')],'sectionId':_0x17679b['id']},{})[_0x7d65('0x29')](function(){return _0x58eb0d;});}else{return _0x58eb0d;}})[_0x7d65('0x48')](function(_0x1c8b8b){logger['error'](_0x7d65('0x52'),_0x1c8b8b);throw _0x1c8b8b;});}return _0x58eb0d;})[_0x7d65('0x29')](respondWithResult(_0x259156,0xc9))[_0x7d65('0x48')](handleError(_0x259156,null));};exports[_0x7d65('0x28')]=function(_0x18c012,_0x169ce6){if(_0x18c012[_0x7d65('0x53')]['id']){delete _0x18c012[_0x7d65('0x53')]['id'];}return db[_0x7d65('0x43')][_0x7d65('0x4b')]({'where':{'id':_0x18c012[_0x7d65('0x54')]['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x169ce6,null))['then'](saveUpdates(_0x18c012[_0x7d65('0x53')],null))[_0x7d65('0x29')](respondWithResult(_0x169ce6,null))[_0x7d65('0x48')](handleError(_0x169ce6,null));};exports['destroy']=function(_0xd62b91,_0x365bfc){return db[_0x7d65('0x43')]['find']({'where':{'id':_0xd62b91['params']['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x365bfc,null))[_0x7d65('0x29')](removeEntity(_0x365bfc,null))[_0x7d65('0x48')](handleError(_0x365bfc,null));};exports[_0x7d65('0x55')]=function(_0x1184b5,_0x306452){return db[_0x7d65('0x43')][_0x7d65('0x55')]()[_0x7d65('0x29')](respondWithResult(_0x306452,null))[_0x7d65('0x48')](handleError(_0x306452,null));};exports['getMembers']=function(_0x4fc74f,_0x528956,_0xf26dfe){var _0x248040={'raw':!![],'where':{}},_0xf44a88={},_0x30a197;return db['MailQueue'][_0x7d65('0x56')]({'where':{'id':_0x4fc74f[_0x7d65('0x54')]['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x528956,null))[_0x7d65('0x29')](function(_0x23ea05){if(_0x23ea05){_0x30a197=_0x23ea05[_0x7d65('0x4f')]({'plain':!![]});_0xf44a88[_0x7d65('0x38')]=_['keys'](db[_0x7d65('0x57')][_0x7d65('0x4a')]);_0xf44a88['query']=_[_0x7d65('0x34')](_0x4fc74f['query']);_0xf44a88[_0x7d65('0x35')]=_[_0x7d65('0x37')](_0xf44a88[_0x7d65('0x38')],_0xf44a88['query']);_0x248040[_0x7d65('0x36')]=_[_0x7d65('0x37')](_0xf44a88[_0x7d65('0x38')],qs['fields'](_0x4fc74f[_0x7d65('0x33')][_0x7d65('0x39')]));_0x248040[_0x7d65('0x36')]=_0x248040[_0x7d65('0x36')][_0x7d65('0x3a')]?_0x248040[_0x7d65('0x36')]:_0xf44a88[_0x7d65('0x38')];if(!_0x4fc74f[_0x7d65('0x33')][_0x7d65('0x3b')](_0x7d65('0x58'))){_0x248040[_0x7d65('0x23')]=qs[_0x7d65('0x23')](_0x4fc74f['query'][_0x7d65('0x23')]);_0x248040[_0x7d65('0x20')]=qs[_0x7d65('0x20')](_0x4fc74f[_0x7d65('0x33')][_0x7d65('0x20')]);}_0x248040[_0x7d65('0x3c')]=qs['sort'](_0x4fc74f['query'][_0x7d65('0x3d')]);_0x248040[_0x7d65('0x3f')]=qs['filters'](_[_0x7d65('0x59')](_0x4fc74f['query'],_0xf44a88['filters']));_0x248040[_0x7d65('0x3f')][_0x7d65('0x5a')]=_0x23ea05['id'];if(_0x4fc74f[_0x7d65('0x33')]['filter']){_0x248040['where']=_['merge'](_0x248040[_0x7d65('0x3f')],{'$or':_['map'](_0x248040[_0x7d65('0x36')],function(_0x1fd170){var _0x28ab8f={};_0x28ab8f[_0x1fd170]={'$like':'%'+_0x4fc74f['query'][_0x7d65('0x3e')]+'%'};return _0x28ab8f;})});}_0x248040=_[_0x7d65('0x40')]({},_0x248040,_0x4fc74f[_0x7d65('0x42')]);return db[_0x7d65('0x57')]['findAll'](_0x248040);}})[_0x7d65('0x29')](function(_0x504ce3){if(_0x504ce3){return db[_0x7d65('0x5b')][_0x7d65('0x5c')]({'where':{'id':_[_0x7d65('0x32')](_0x504ce3,_0x7d65('0x5d')),'role':_0x7d65('0x5e')},'attributes':['id',_0x7d65('0x2d'),_0x7d65('0x5f'),_0x7d65('0x60'),_0x7d65('0x61')]});}})[_0x7d65('0x29')](function(_0x256017){if(_0x256017){return{'count':_0x256017[_0x7d65('0x22')],'rows':_[_0x7d65('0x32')](_0x256017['rows'],function(_0x4b09bd){return{'membername':_0x4b09bd[_0x7d65('0x2d')],'UserId':_0x4b09bd['id'],'queue_name':_0x30a197[_0x7d65('0x2d')],'MailQueueId':_0x30a197['id'],'interface':util[_0x7d65('0x62')]('%s/%s','SIP',_0x4b09bd[_0x7d65('0x2d')]),'penalty':0x0,'paused':_0x4b09bd[_0x7d65('0x5f')],'createdAt':_0x4b09bd[_0x7d65('0x61')],'updatedAt':_0x4b09bd['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x7d65('0x29')](respondWithFilteredResult(_0x528956,_0x248040))['catch'](handleError(_0x528956,null));};exports[_0x7d65('0x63')]=function(_0x115385,_0x7ded41,_0x5175e7){var _0x1d9074={};var _0x250446={};var _0x1a587f;var _0x2878fb;return db[_0x7d65('0x43')][_0x7d65('0x56')]({'where':{'id':_0x115385['params']['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x7ded41,null))['then'](function(_0x4000f6){if(_0x4000f6){_0x1a587f=_0x4000f6;_0x250446['model']=_['keys'](db['Team'][_0x7d65('0x4a')]);_0x250446[_0x7d65('0x33')]=_[_0x7d65('0x34')](_0x115385[_0x7d65('0x33')]);_0x250446[_0x7d65('0x35')]=_[_0x7d65('0x37')](_0x250446[_0x7d65('0x38')],_0x250446[_0x7d65('0x33')]);_0x1d9074[_0x7d65('0x36')]=_[_0x7d65('0x37')](_0x250446[_0x7d65('0x38')],qs[_0x7d65('0x39')](_0x115385[_0x7d65('0x33')][_0x7d65('0x39')]));_0x1d9074['attributes']=_0x1d9074[_0x7d65('0x36')][_0x7d65('0x3a')]?_0x1d9074[_0x7d65('0x36')]:_0x250446[_0x7d65('0x38')];_0x1d9074[_0x7d65('0x3c')]=qs['sort'](_0x115385[_0x7d65('0x33')][_0x7d65('0x3d')]);_0x1d9074[_0x7d65('0x3f')]=qs[_0x7d65('0x35')](_[_0x7d65('0x59')](_0x115385[_0x7d65('0x33')],_0x250446[_0x7d65('0x35')]));if(_0x115385[_0x7d65('0x33')][_0x7d65('0x3e')]){_0x1d9074[_0x7d65('0x3f')]=_[_0x7d65('0x40')](_0x1d9074[_0x7d65('0x3f')],{'$or':_['map'](_0x1d9074[_0x7d65('0x36')],function(_0x30f960){var _0x23bd63={};_0x23bd63[_0x30f960]={'$like':'%'+_0x115385[_0x7d65('0x33')][_0x7d65('0x3e')]+'%'};return _0x23bd63;})});}_0x1d9074=_[_0x7d65('0x40')]({},_0x1d9074,_0x115385[_0x7d65('0x42')]);return _0x1a587f[_0x7d65('0x63')](_0x1d9074);}})[_0x7d65('0x29')](function(_0x88a880){if(_0x88a880){_0x2878fb=_0x88a880[_0x7d65('0x3a')];if(!_0x115385[_0x7d65('0x33')][_0x7d65('0x3b')](_0x7d65('0x58'))){_0x1d9074[_0x7d65('0x23')]=qs['limit'](_0x115385[_0x7d65('0x33')][_0x7d65('0x23')]);_0x1d9074['offset']=qs[_0x7d65('0x20')](_0x115385[_0x7d65('0x33')]['offset']);}return _0x1a587f[_0x7d65('0x63')](_0x1d9074);}})[_0x7d65('0x29')](function(_0x2b2ee6){if(_0x2b2ee6){return _0x2b2ee6?{'count':_0x2878fb,'rows':_0x2b2ee6}:null;}})[_0x7d65('0x29')](respondWithResult(_0x7ded41,null))[_0x7d65('0x48')](handleError(_0x7ded41,null));};exports[_0x7d65('0x64')]=function(_0x3e702f,_0x3643af,_0x1128ea){var _0x551607=_0x3e702f['body'][_0x7d65('0x65')];return db[_0x7d65('0x66')]['findAll']({'where':{'id':_0x551607},'attributes':['id'],'include':[{'model':db[_0x7d65('0x5b')],'as':'Agents','attributes':['id',_0x7d65('0x2d'),'online',_0x7d65('0x67'),_0x7d65('0x68')],'raw':!![]}]})[_0x7d65('0x29')](function(_0x2ba0fe){if(_0x2ba0fe){var _0x2bd41c=_[_0x7d65('0x69')](_0x2ba0fe,function(_0x4caaef){var _0x5bf716=_0x4caaef[_0x7d65('0x4f')]({'plain':!![]});return _0x5bf716[_0x7d65('0x6a')];});return db['MailQueue']['find']({'where':{'id':_0x3e702f['params']['id']}})['then'](function(_0x3a4ac1){return db['sequelize'][_0x7d65('0x6b')](function(_0x2508ff){return _0x3a4ac1[_0x7d65('0x64')](_0x551607,{'transaction':_0x2508ff})[_0x7d65('0x29')](function(){return BPromise[_0x7d65('0x6c')](_0x2bd41c,function(_0x598e9d){return db['UserMailQueue'][_0x7d65('0x6d')]({'where':{'UserId':_0x598e9d['id'],'MailQueueId':_0x3e702f[_0x7d65('0x54')]['id']},'transaction':_0x2508ff});});})['then'](function(){_0x2bd41c[_0x7d65('0x6e')](function(_0x1b2ce5){socket[_0x7d65('0x6f')](_0x7d65('0x70'),{'UserId':_0x1b2ce5['id'],'MailQueueId':_0x3a4ac1['id']});});});});});}})['then'](respondWithStatusCode(_0x3643af,null))[_0x7d65('0x48')](handleError(_0x3643af,null));};exports[_0x7d65('0x71')]=function(_0x141faf,_0xc32834,_0x32a0a2){return db[_0x7d65('0x66')]['findAll']({'where':{'id':_0x141faf['query'][_0x7d65('0x65')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xc32834,null))['then'](function(_0x31c4b7){var _0x264f1c=_[_0x7d65('0x32')](_0x31c4b7,'id');var _0x4e1c45=[];var _0x424288=[];var _0x57e832=squel[_0x7d65('0x72')]();_0x57e832[_0x7d65('0x73')](_0x7d65('0x74'))[_0x7d65('0x75')]('team_has_mail_queues','tq')[_0x7d65('0x76')](_0x7d65('0x77'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7d65('0x3f')](_0x7d65('0x78'),_0x141faf[_0x7d65('0x54')]['id']);for(var _0x4747d7=0x0;_0x4747d7<_0x31c4b7[_0x7d65('0x3a')];_0x4747d7+=0x1){let _0x1b2894=_0x31c4b7[_0x4747d7];for(var _0x5d2b20=0x0;_0x5d2b20<_0x1b2894['Agents'][_0x7d65('0x3a')];_0x5d2b20+=0x1){let _0x4b9324=_0x1b2894['Agents'][_0x5d2b20];var _0x256fd0=_0x57e832[_0x7d65('0x79')]();_0x256fd0['where'](_0x7d65('0x7a'),_0x4b9324['id']);_0x424288[_0x7d65('0x7b')](db[_0x7d65('0x7c')][_0x7d65('0x33')](_0x256fd0['toString'](),{'type':db[_0x7d65('0x7c')][_0x7d65('0x7d')][_0x7d65('0x7e')]})[_0x7d65('0x29')](function(_0x16e3c7){if(_0x16e3c7[_0x7d65('0x3a')]===0x1){return _0x4b9324['id'];}else{var _0x37bad3=_[_0x7d65('0x7f')](_['map'](_0x16e3c7,_0x7d65('0x80')),function(_0x894684){return _[_0x7d65('0x81')](_0x264f1c,_0x894684);});if(_0x37bad3){return _0x4b9324['id'];}}}));}}return BPromise['all'](_0x424288)[_0x7d65('0x29')](function(_0x5a3421){_0x4e1c45=_(_0x4e1c45)[_0x7d65('0x82')](_0x5a3421)[_0x7d65('0x83')]()[_0x7d65('0x84')]();return db[_0x7d65('0x43')][_0x7d65('0x4b')]({'where':{'id':_0x141faf[_0x7d65('0x54')]['id']}})['then'](function(_0x5cba84){return db[_0x7d65('0x7c')][_0x7d65('0x6b')](function(_0xbc93a2){return _0x5cba84[_0x7d65('0x71')](_0x141faf[_0x7d65('0x33')]['ids'],{'transaction':_0xbc93a2})[_0x7d65('0x29')](function(){if(!_[_0x7d65('0x85')](_0x4e1c45)){return _0x5cba84[_0x7d65('0x86')](_0x4e1c45,{'transaction':_0xbc93a2});}})[_0x7d65('0x29')](function(){_0x4e1c45[_0x7d65('0x6e')](function(_0x5c4f2c){socket[_0x7d65('0x6f')]('userMailQueue:remove',{'UserId':_0x5c4f2c,'MailQueueId':_0x5cba84['id']});});});});});});})[_0x7d65('0x29')](respondWithStatusCode(_0xc32834,null))[_0x7d65('0x48')](handleError(_0xc32834,null));};exports['addAgents']=function(_0x5e940f,_0x1ec85a,_0x233b79){return db[_0x7d65('0x43')][_0x7d65('0x4b')]({'where':{'id':_0x5e940f[_0x7d65('0x54')]['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x1ec85a,null))[_0x7d65('0x29')](function(_0x34a685){if(_0x34a685){return _0x34a685['addAgents'](_0x5e940f['body'][_0x7d65('0x65')],_[_0x7d65('0x87')](_0x5e940f[_0x7d65('0x53')],[_0x7d65('0x65'),'id'])||{})['spread'](function(_0x3c2933){for(var _0x128d84=0x0;_0x128d84<_0x5e940f[_0x7d65('0x53')][_0x7d65('0x65')]['length'];_0x128d84+=0x1){socket[_0x7d65('0x6f')]('userMailQueue:save',{'UserId':Number(_0x5e940f[_0x7d65('0x53')][_0x7d65('0x65')][_0x128d84]),'MailQueueId':Number(_0x5e940f['params']['id'])});}return _0x3c2933;});}})[_0x7d65('0x29')](respondWithResult(_0x1ec85a,null))[_0x7d65('0x48')](handleError(_0x1ec85a,null));};exports['removeAgents']=function(_0xae465d,_0x47adc4,_0x3dfd76){return db[_0x7d65('0x43')][_0x7d65('0x4b')]({'where':{'id':_0xae465d[_0x7d65('0x54')]['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x47adc4,null))[_0x7d65('0x29')](function(_0x5b0a7e){if(_0x5b0a7e){return _0x5b0a7e[_0x7d65('0x86')](_0xae465d[_0x7d65('0x33')][_0x7d65('0x65')])[_0x7d65('0x29')](function(){if(_[_0x7d65('0x88')](_0xae465d['query']['ids'])){for(var _0xb4b492=0x0;_0xb4b492<_0xae465d[_0x7d65('0x33')][_0x7d65('0x65')][_0x7d65('0x3a')];_0xb4b492+=0x1){socket[_0x7d65('0x6f')](_0x7d65('0x89'),{'UserId':Number(_0xae465d['query'][_0x7d65('0x65')][_0xb4b492]),'MailQueueId':Number(_0xae465d['params']['id'])});}}else{socket[_0x7d65('0x6f')](_0x7d65('0x89'),{'UserId':Number(_0xae465d['query'][_0x7d65('0x65')]),'MailQueueId':Number(_0xae465d['params']['id'])});}});}})['then'](respondWithStatusCode(_0x47adc4,null))[_0x7d65('0x48')](handleError(_0x47adc4,null));};exports[_0x7d65('0x8a')]=function(_0x50bbb7,_0x384888,_0x1cdbda){var _0x1eda52={};var _0x4e54e5={};var _0x357032;var _0x2fbe8d;return db[_0x7d65('0x43')][_0x7d65('0x56')]({'where':{'id':_0x50bbb7[_0x7d65('0x54')]['id']}})[_0x7d65('0x29')](handleEntityNotFound(_0x384888,null))[_0x7d65('0x29')](function(_0x112b0e){if(_0x112b0e){_0x357032=_0x112b0e;_0x4e54e5[_0x7d65('0x38')]=_[_0x7d65('0x34')](db[_0x7d65('0x5b')][_0x7d65('0x4a')]);_0x4e54e5[_0x7d65('0x33')]=_[_0x7d65('0x34')](_0x50bbb7['query']);_0x4e54e5['filters']=_[_0x7d65('0x37')](_0x4e54e5[_0x7d65('0x38')],_0x4e54e5['query']);_0x1eda52[_0x7d65('0x36')]=_['intersection'](_0x4e54e5[_0x7d65('0x38')],qs[_0x7d65('0x39')](_0x50bbb7[_0x7d65('0x33')]['fields']));_0x1eda52['attributes']=_0x1eda52[_0x7d65('0x36')][_0x7d65('0x3a')]?_0x1eda52['attributes']:_0x4e54e5[_0x7d65('0x38')];_0x1eda52[_0x7d65('0x3c')]=qs['sort'](_0x50bbb7[_0x7d65('0x33')][_0x7d65('0x3d')]);_0x1eda52[_0x7d65('0x3f')]=qs[_0x7d65('0x35')](_[_0x7d65('0x59')](_0x50bbb7['query'],_0x4e54e5[_0x7d65('0x35')]));if(_0x50bbb7['query'][_0x7d65('0x3e')]){_0x1eda52[_0x7d65('0x3f')]=_[_0x7d65('0x40')](_0x1eda52[_0x7d65('0x3f')],{'$or':_[_0x7d65('0x32')](_0x1eda52['attributes'],function(_0x30a9e6){var _0x419c8c={};_0x419c8c[_0x30a9e6]={'$like':'%'+_0x50bbb7[_0x7d65('0x33')]['filter']+'%'};return _0x419c8c;})});}_0x1eda52=_[_0x7d65('0x40')]({},_0x1eda52,_0x50bbb7[_0x7d65('0x42')]);return _0x357032['getAgents'](_0x1eda52);}})[_0x7d65('0x29')](function(_0x3949b4){if(_0x3949b4){_0x2fbe8d=_0x3949b4[_0x7d65('0x3a')];if(!_0x50bbb7['query'][_0x7d65('0x3b')](_0x7d65('0x58'))){_0x1eda52[_0x7d65('0x23')]=qs['limit'](_0x50bbb7[_0x7d65('0x33')]['limit']);_0x1eda52[_0x7d65('0x20')]=qs['offset'](_0x50bbb7[_0x7d65('0x33')][_0x7d65('0x20')]);}return _0x357032[_0x7d65('0x8a')](_0x1eda52);}})['then'](function(_0x269ea6){if(_0x269ea6){return _0x269ea6?{'count':_0x2fbe8d,'rows':_0x269ea6}:null;}})['then'](respondWithResult(_0x384888,null))[_0x7d65('0x48')](handleError(_0x384888,null));};
\ No newline at end of file
+var _0x95e6=['name','index','map','MailQueue','rawAttributes','fieldName','type','key','model','intersection','query','attributes','fields','hasOwnProperty','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','show','keys','length','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','getMembers','nolimit','MailQueueId','UserMailQueue','User','findAndCountAll','agent','mailPause','updatedAt','format','%s/%s','createdAt','getTeams','findOne','Team','order','addTeams','ids','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','forEach','emit','userMailQueue:save','removeTeams','select','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','MailQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','SELECT','every','TeamId','all','union','compact','userMailQueue:remove','addAgents','omit','spread','removeAgents','isArray','getAgents','eml-format','zip-dir','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./mailQueue.socket','register','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','get','MailQueues','UserProfileResource','sendStatus','error','stack'];(function(_0x233f80,_0x2e2a1b){var _0x5ce3ad=function(_0x34d4d8){while(--_0x34d4d8){_0x233f80['push'](_0x233f80['shift']());}};_0x5ce3ad(++_0x2e2a1b);}(_0x95e6,0x171));var _0x695e=function(_0x30ad5e,_0xfa9c26){_0x30ad5e=_0x30ad5e-0x0;var _0x1cc10d=_0x95e6[_0x30ad5e];return _0x1cc10d;};'use strict';var emlformat=require(_0x695e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x695e('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x695e('0x2'));var Mustache=require(_0x695e('0x3'));var util=require(_0x695e('0x4'));var path=require(_0x695e('0x5'));var sox=require('sox');var csv=require(_0x695e('0x6'));var ejs=require(_0x695e('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x695e('0x8'));var squel=require(_0x695e('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x695e('0xa'));var toCsv=require(_0x695e('0x6'));var querystring=require('querystring');var Papa=require(_0x695e('0xb'));var Redis=require('ioredis');var authService=require(_0x695e('0xc'));var qs=require(_0x695e('0xd'));var as=require(_0x695e('0xe'));var hardwareService=require(_0x695e('0xf'));var logger=require('../../config/logger')(_0x695e('0x10'));var utils=require('../../config/utils');var config=require(_0x695e('0x11'));var licenseUtil=require(_0x695e('0x12'));var db=require(_0x695e('0x13'))['db'];config['redis']=_[_0x695e('0x14')](config[_0x695e('0x15')],{'host':_0x695e('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x695e('0x15')]));require(_0x695e('0x17'))[_0x695e('0x18')](socket);function respondWithStatusCode(_0x3be691,_0x2b731b){_0x2b731b=_0x2b731b||0xcc;return function(_0x3d1eb7){if(_0x3d1eb7){return _0x3be691['sendStatus'](_0x2b731b);}return _0x3be691['status'](_0x2b731b)[_0x695e('0x19')]();};}function respondWithResult(_0x490608,_0x3a582e){_0x3a582e=_0x3a582e||0xc8;return function(_0x2c3553){if(_0x2c3553){return _0x490608[_0x695e('0x1a')](_0x3a582e)[_0x695e('0x1b')](_0x2c3553);}};}function respondWithFilteredResult(_0x343513,_0x485790){return function(_0x4d6e1e){if(_0x4d6e1e){var _0x51f8cc=typeof _0x485790[_0x695e('0x1c')]===_0x695e('0x1d')&&typeof _0x485790['limit']===_0x695e('0x1d');var _0x301606=_0x4d6e1e[_0x695e('0x1e')];var _0x4e5b88=_0x51f8cc?0x0:_0x485790[_0x695e('0x1c')];var _0x3b1259=_0x51f8cc?_0x4d6e1e['count']:_0x485790['offset']+_0x485790[_0x695e('0x1f')];var _0x1ad511;if(_0x3b1259>=_0x301606){_0x3b1259=_0x301606;_0x1ad511=0xc8;}else{_0x1ad511=0xce;}_0x343513[_0x695e('0x1a')](_0x1ad511);return _0x343513[_0x695e('0x20')](_0x695e('0x21'),_0x4e5b88+'-'+_0x3b1259+'/'+_0x301606)[_0x695e('0x1b')](_0x4d6e1e);}return null;};}function patchUpdates(_0x206101){return function(_0x41ab02){try{jsonpatch['apply'](_0x41ab02,_0x206101,!![]);}catch(_0xc85da8){return BPromise[_0x695e('0x22')](_0xc85da8);}return _0x41ab02[_0x695e('0x23')]();};}function saveUpdates(_0x521c9d,_0x5682d5){return function(_0x318cf5){if(_0x318cf5){return _0x318cf5[_0x695e('0x24')](_0x521c9d)[_0x695e('0x25')](function(_0x7a4ddb){return _0x7a4ddb;});}return null;};}function removeEntity(_0x321715,_0x2dea7a){return function(_0x48764c){if(_0x48764c){return _0x48764c[_0x695e('0x26')]()[_0x695e('0x25')](function(){var _0x230500=_0x48764c[_0x695e('0x27')]({'plain':!![]});var _0x34c4d4=_0x695e('0x28');return db[_0x695e('0x29')][_0x695e('0x26')]({'where':{'type':_0x34c4d4,'resourceId':_0x230500['id']}})[_0x695e('0x25')](function(){return _0x48764c;});})['then'](function(){_0x321715[_0x695e('0x1a')](0xcc)[_0x695e('0x19')]();});}};}function handleEntityNotFound(_0x216a63,_0x2be5f3){return function(_0x5c1245){if(!_0x5c1245){_0x216a63[_0x695e('0x2a')](0x194);}return _0x5c1245;};}function handleError(_0xc09482,_0x5ee30f){_0x5ee30f=_0x5ee30f||0x1f4;return function(_0x20c1fd){logger[_0x695e('0x2b')](_0x20c1fd[_0x695e('0x2c')]);if(_0x20c1fd[_0x695e('0x2d')]){delete _0x20c1fd['name'];}_0xc09482['status'](_0x5ee30f)['send'](_0x20c1fd);};}exports[_0x695e('0x2e')]=function(_0x3440e8,_0x4cb04f){var _0x436ae5={},_0x343d9f={},_0x3b84e7={'count':0x0,'rows':[]};var _0xc268cf=_[_0x695e('0x2f')](db[_0x695e('0x30')][_0x695e('0x31')],function(_0x3b3566){return{'name':_0x3b3566[_0x695e('0x32')],'type':_0x3b3566[_0x695e('0x33')][_0x695e('0x34')]};});_0x343d9f[_0x695e('0x35')]=_[_0x695e('0x2f')](_0xc268cf,_0x695e('0x2d'));_0x343d9f['query']=_['keys'](_0x3440e8['query']);_0x343d9f['filters']=_[_0x695e('0x36')](_0x343d9f[_0x695e('0x35')],_0x343d9f[_0x695e('0x37')]);_0x436ae5[_0x695e('0x38')]=_[_0x695e('0x36')](_0x343d9f[_0x695e('0x35')],qs['fields'](_0x3440e8['query'][_0x695e('0x39')]));_0x436ae5[_0x695e('0x38')]=_0x436ae5[_0x695e('0x38')]['length']?_0x436ae5[_0x695e('0x38')]:_0x343d9f[_0x695e('0x35')];if(!_0x3440e8[_0x695e('0x37')][_0x695e('0x3a')]('nolimit')){_0x436ae5['limit']=qs[_0x695e('0x1f')](_0x3440e8[_0x695e('0x37')]['limit']);_0x436ae5['offset']=qs[_0x695e('0x1c')](_0x3440e8['query'][_0x695e('0x1c')]);}_0x436ae5['order']=qs[_0x695e('0x3b')](_0x3440e8[_0x695e('0x37')][_0x695e('0x3b')]);_0x436ae5[_0x695e('0x3c')]=qs['filters'](_[_0x695e('0x3d')](_0x3440e8[_0x695e('0x37')],_0x343d9f[_0x695e('0x3e')]),_0xc268cf);if(_0x3440e8[_0x695e('0x37')][_0x695e('0x3f')]){_0x436ae5[_0x695e('0x3c')]=_[_0x695e('0x40')](_0x436ae5['where'],{'$or':_[_0x695e('0x2f')](_0xc268cf,function(_0xf1b192){if(_0xf1b192[_0x695e('0x33')]!==_0x695e('0x41')){var _0x51e816={};_0x51e816[_0xf1b192[_0x695e('0x2d')]]={'$like':'%'+_0x3440e8['query'][_0x695e('0x3f')]+'%'};return _0x51e816;}})});}_0x436ae5=_[_0x695e('0x40')]({},_0x436ae5,_0x3440e8[_0x695e('0x42')]);var _0x371221={'where':_0x436ae5[_0x695e('0x3c')]};return db[_0x695e('0x30')]['count'](_0x371221)[_0x695e('0x25')](function(_0x2a1cc4){_0x3b84e7[_0x695e('0x1e')]=_0x2a1cc4;if(_0x3440e8[_0x695e('0x37')]['includeAll']){_0x436ae5[_0x695e('0x43')]=[{'all':!![]}];}return db[_0x695e('0x30')][_0x695e('0x44')](_0x436ae5);})[_0x695e('0x25')](function(_0x41c168){_0x3b84e7[_0x695e('0x45')]=_0x41c168;return _0x3b84e7;})[_0x695e('0x25')](respondWithFilteredResult(_0x4cb04f,_0x436ae5))[_0x695e('0x46')](handleError(_0x4cb04f,null));};exports[_0x695e('0x47')]=function(_0x893e82,_0x3296ee){var _0x2fccb2={'raw':!![],'where':{'id':_0x893e82['params']['id']}},_0x12d48a={};_0x12d48a[_0x695e('0x35')]=_['keys'](db[_0x695e('0x30')]['rawAttributes']);_0x12d48a['query']=_[_0x695e('0x48')](_0x893e82[_0x695e('0x37')]);_0x12d48a[_0x695e('0x3e')]=_['intersection'](_0x12d48a[_0x695e('0x35')],_0x12d48a['query']);_0x2fccb2[_0x695e('0x38')]=_[_0x695e('0x36')](_0x12d48a[_0x695e('0x35')],qs[_0x695e('0x39')](_0x893e82[_0x695e('0x37')][_0x695e('0x39')]));_0x2fccb2[_0x695e('0x38')]=_0x2fccb2[_0x695e('0x38')][_0x695e('0x49')]?_0x2fccb2['attributes']:_0x12d48a[_0x695e('0x35')];if(_0x893e82[_0x695e('0x37')][_0x695e('0x4a')]){_0x2fccb2['include']=[{'all':!![]}];}_0x2fccb2=_[_0x695e('0x40')]({},_0x2fccb2,_0x893e82[_0x695e('0x42')]);return db[_0x695e('0x30')][_0x695e('0x4b')](_0x2fccb2)[_0x695e('0x25')](handleEntityNotFound(_0x3296ee,null))[_0x695e('0x25')](respondWithResult(_0x3296ee,null))[_0x695e('0x46')](handleError(_0x3296ee,null));};exports[_0x695e('0x4c')]=function(_0x39f72c,_0x5467f2){return db['MailQueue'][_0x695e('0x4c')](_0x39f72c[_0x695e('0x4d')],{})['then'](function(_0x43ce90){var _0x9be77c=_0x39f72c[_0x695e('0x4e')]['get']({'plain':!![]});if(!_0x9be77c)throw new Error(_0x695e('0x4f'));if(_0x9be77c['role']===_0x695e('0x4e')){var _0x359820=_0x43ce90[_0x695e('0x27')]({'plain':!![]});var _0xafdb4=_0x695e('0x28');return db[_0x695e('0x50')][_0x695e('0x4b')]({'where':{'name':_0xafdb4,'userProfileId':_0x9be77c[_0x695e('0x51')]},'raw':!![]})[_0x695e('0x25')](function(_0x34926f){if(_0x34926f&&_0x34926f[_0x695e('0x52')]===0x0){return db['UserProfileResource'][_0x695e('0x4c')]({'name':_0x359820[_0x695e('0x2d')],'resourceId':_0x359820['id'],'type':_0x34926f['name'],'sectionId':_0x34926f['id']},{})['then'](function(){return _0x43ce90;});}else{return _0x43ce90;}})[_0x695e('0x46')](function(_0x547230){logger[_0x695e('0x2b')](_0x695e('0x53'),_0x547230);throw _0x547230;});}return _0x43ce90;})['then'](respondWithResult(_0x5467f2,0xc9))[_0x695e('0x46')](handleError(_0x5467f2,null));};exports['update']=function(_0x1b61ee,_0x7d3605){if(_0x1b61ee[_0x695e('0x4d')]['id']){delete _0x1b61ee['body']['id'];}return db['MailQueue'][_0x695e('0x4b')]({'where':{'id':_0x1b61ee[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x7d3605,null))[_0x695e('0x25')](saveUpdates(_0x1b61ee[_0x695e('0x4d')],null))['then'](respondWithResult(_0x7d3605,null))[_0x695e('0x46')](handleError(_0x7d3605,null));};exports['destroy']=function(_0x12c2e3,_0x29d817){return db['MailQueue']['find']({'where':{'id':_0x12c2e3[_0x695e('0x54')]['id']}})['then'](handleEntityNotFound(_0x29d817,null))[_0x695e('0x25')](removeEntity(_0x29d817,null))['catch'](handleError(_0x29d817,null));};exports[_0x695e('0x55')]=function(_0x4ee8d6,_0x3ea845){return db[_0x695e('0x30')][_0x695e('0x55')]()[_0x695e('0x25')](respondWithResult(_0x3ea845,null))[_0x695e('0x46')](handleError(_0x3ea845,null));};exports[_0x695e('0x56')]=function(_0x3138cb,_0xdd35ec,_0x1d41a4){var _0x5ab33={'raw':!![],'where':{}},_0x230b84={},_0x459195;return db['MailQueue']['findOne']({'where':{'id':_0x3138cb[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0xdd35ec,null))[_0x695e('0x25')](function(_0x5ccf80){if(_0x5ccf80){_0x459195=_0x5ccf80[_0x695e('0x27')]({'plain':!![]});_0x230b84['model']=_[_0x695e('0x48')](db['UserMailQueue'][_0x695e('0x31')]);_0x230b84['query']=_['keys'](_0x3138cb[_0x695e('0x37')]);_0x230b84['filters']=_[_0x695e('0x36')](_0x230b84[_0x695e('0x35')],_0x230b84[_0x695e('0x37')]);_0x5ab33[_0x695e('0x38')]=_[_0x695e('0x36')](_0x230b84[_0x695e('0x35')],qs[_0x695e('0x39')](_0x3138cb[_0x695e('0x37')]['fields']));_0x5ab33[_0x695e('0x38')]=_0x5ab33[_0x695e('0x38')][_0x695e('0x49')]?_0x5ab33[_0x695e('0x38')]:_0x230b84[_0x695e('0x35')];if(!_0x3138cb[_0x695e('0x37')][_0x695e('0x3a')](_0x695e('0x57'))){_0x5ab33['limit']=qs[_0x695e('0x1f')](_0x3138cb[_0x695e('0x37')][_0x695e('0x1f')]);_0x5ab33[_0x695e('0x1c')]=qs[_0x695e('0x1c')](_0x3138cb[_0x695e('0x37')][_0x695e('0x1c')]);}_0x5ab33['order']=qs['sort'](_0x3138cb[_0x695e('0x37')][_0x695e('0x3b')]);_0x5ab33[_0x695e('0x3c')]=qs['filters'](_[_0x695e('0x3d')](_0x3138cb[_0x695e('0x37')],_0x230b84['filters']));_0x5ab33[_0x695e('0x3c')][_0x695e('0x58')]=_0x5ccf80['id'];if(_0x3138cb['query'][_0x695e('0x3f')]){_0x5ab33[_0x695e('0x3c')]=_[_0x695e('0x40')](_0x5ab33[_0x695e('0x3c')],{'$or':_['map'](_0x5ab33[_0x695e('0x38')],function(_0x3c7621){var _0x3502f1={};_0x3502f1[_0x3c7621]={'$like':'%'+_0x3138cb['query'][_0x695e('0x3f')]+'%'};return _0x3502f1;})});}_0x5ab33=_['merge']({},_0x5ab33,_0x3138cb['options']);return db[_0x695e('0x59')][_0x695e('0x44')](_0x5ab33);}})[_0x695e('0x25')](function(_0x2e145f){if(_0x2e145f){return db[_0x695e('0x5a')][_0x695e('0x5b')]({'where':{'id':_['map'](_0x2e145f,'UserId'),'role':_0x695e('0x5c')},'attributes':['id',_0x695e('0x2d'),_0x695e('0x5d'),_0x695e('0x5e'),'createdAt']});}})[_0x695e('0x25')](function(_0xcb186d){if(_0xcb186d){return{'count':_0xcb186d[_0x695e('0x1e')],'rows':_[_0x695e('0x2f')](_0xcb186d[_0x695e('0x45')],function(_0x772697){return{'membername':_0x772697['name'],'UserId':_0x772697['id'],'queue_name':_0x459195['name'],'MailQueueId':_0x459195['id'],'interface':util[_0x695e('0x5f')](_0x695e('0x60'),'SIP',_0x772697[_0x695e('0x2d')]),'penalty':0x0,'paused':_0x772697[_0x695e('0x5d')],'createdAt':_0x772697[_0x695e('0x61')],'updatedAt':_0x772697[_0x695e('0x5e')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x695e('0x25')](respondWithFilteredResult(_0xdd35ec,_0x5ab33))[_0x695e('0x46')](handleError(_0xdd35ec,null));};exports[_0x695e('0x62')]=function(_0xf6a1b4,_0x296561,_0x347003){var _0x473079={};var _0x1bcc3d={};var _0xb4b6f6;var _0x532c1d;return db[_0x695e('0x30')][_0x695e('0x63')]({'where':{'id':_0xf6a1b4[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x296561,null))['then'](function(_0x1d4ee8){if(_0x1d4ee8){_0xb4b6f6=_0x1d4ee8;_0x1bcc3d[_0x695e('0x35')]=_[_0x695e('0x48')](db[_0x695e('0x64')][_0x695e('0x31')]);_0x1bcc3d[_0x695e('0x37')]=_[_0x695e('0x48')](_0xf6a1b4[_0x695e('0x37')]);_0x1bcc3d[_0x695e('0x3e')]=_[_0x695e('0x36')](_0x1bcc3d[_0x695e('0x35')],_0x1bcc3d['query']);_0x473079[_0x695e('0x38')]=_[_0x695e('0x36')](_0x1bcc3d['model'],qs[_0x695e('0x39')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x39')]));_0x473079[_0x695e('0x38')]=_0x473079['attributes'][_0x695e('0x49')]?_0x473079['attributes']:_0x1bcc3d[_0x695e('0x35')];_0x473079[_0x695e('0x65')]=qs[_0x695e('0x3b')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x3b')]);_0x473079['where']=qs[_0x695e('0x3e')](_['pick'](_0xf6a1b4[_0x695e('0x37')],_0x1bcc3d['filters']));if(_0xf6a1b4['query'][_0x695e('0x3f')]){_0x473079[_0x695e('0x3c')]=_['merge'](_0x473079[_0x695e('0x3c')],{'$or':_['map'](_0x473079['attributes'],function(_0x3660c8){var _0xc592f4={};_0xc592f4[_0x3660c8]={'$like':'%'+_0xf6a1b4[_0x695e('0x37')]['filter']+'%'};return _0xc592f4;})});}_0x473079=_[_0x695e('0x40')]({},_0x473079,_0xf6a1b4['options']);return _0xb4b6f6[_0x695e('0x62')](_0x473079);}})[_0x695e('0x25')](function(_0x526a3c){if(_0x526a3c){_0x532c1d=_0x526a3c[_0x695e('0x49')];if(!_0xf6a1b4[_0x695e('0x37')][_0x695e('0x3a')](_0x695e('0x57'))){_0x473079[_0x695e('0x1f')]=qs[_0x695e('0x1f')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x1f')]);_0x473079[_0x695e('0x1c')]=qs[_0x695e('0x1c')](_0xf6a1b4[_0x695e('0x37')][_0x695e('0x1c')]);}return _0xb4b6f6[_0x695e('0x62')](_0x473079);}})[_0x695e('0x25')](function(_0x174abe){if(_0x174abe){return _0x174abe?{'count':_0x532c1d,'rows':_0x174abe}:null;}})['then'](respondWithResult(_0x296561,null))[_0x695e('0x46')](handleError(_0x296561,null));};exports[_0x695e('0x66')]=function(_0x465c3c,_0xc67549,_0x50b18c){var _0x391d03=_0x465c3c[_0x695e('0x4d')][_0x695e('0x67')];return db[_0x695e('0x64')][_0x695e('0x44')]({'where':{'id':_0x391d03},'attributes':['id'],'include':[{'model':db[_0x695e('0x5a')],'as':_0x695e('0x68'),'attributes':['id',_0x695e('0x2d'),_0x695e('0x69'),_0x695e('0x6a'),_0x695e('0x6b')],'raw':!![]}]})['then'](function(_0x4fe588){if(_0x4fe588){var _0x400bd4=_[_0x695e('0x6c')](_0x4fe588,function(_0x98ff55){var _0x1c22cf=_0x98ff55[_0x695e('0x27')]({'plain':!![]});return _0x1c22cf[_0x695e('0x68')];});return db[_0x695e('0x30')]['find']({'where':{'id':_0x465c3c[_0x695e('0x54')]['id']}})[_0x695e('0x25')](function(_0x12b7b7){return db[_0x695e('0x6d')][_0x695e('0x6e')](function(_0x5aa85c){return _0x12b7b7[_0x695e('0x66')](_0x391d03,{'transaction':_0x5aa85c})[_0x695e('0x25')](function(){return BPromise[_0x695e('0x6f')](_0x400bd4,function(_0x274fdb){return db[_0x695e('0x59')]['findOrCreate']({'where':{'UserId':_0x274fdb['id'],'MailQueueId':_0x465c3c[_0x695e('0x54')]['id']},'transaction':_0x5aa85c});});})[_0x695e('0x25')](function(){_0x400bd4[_0x695e('0x70')](function(_0x786350){socket[_0x695e('0x71')](_0x695e('0x72'),{'UserId':_0x786350['id'],'MailQueueId':_0x12b7b7['id']});});});});});}})[_0x695e('0x25')](respondWithStatusCode(_0xc67549,null))[_0x695e('0x46')](handleError(_0xc67549,null));};exports[_0x695e('0x73')]=function(_0x1e5342,_0x59a47c,_0xc9fd4b){return db[_0x695e('0x64')][_0x695e('0x44')]({'where':{'id':_0x1e5342['query'][_0x695e('0x67')]},'attributes':['id'],'include':[{'model':db[_0x695e('0x5a')],'as':_0x695e('0x68'),'attributes':['id'],'raw':!![]}]})[_0x695e('0x25')](handleEntityNotFound(_0x59a47c,null))['then'](function(_0x21d23f){var _0x2bb061=_[_0x695e('0x2f')](_0x21d23f,'id');var _0x41e977=[];var _0x1c37c0=[];var _0x35ea22=squel[_0x695e('0x74')]();_0x35ea22['field'](_0x695e('0x75'))[_0x695e('0x76')](_0x695e('0x77'),'tq')[_0x695e('0x78')](_0x695e('0x79'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x695e('0x3c')](_0x695e('0x7a'),_0x1e5342[_0x695e('0x54')]['id']);for(var _0x303270=0x0;_0x303270<_0x21d23f[_0x695e('0x49')];_0x303270+=0x1){let _0x2934f3=_0x21d23f[_0x303270];for(var _0x3fa404=0x0;_0x3fa404<_0x2934f3[_0x695e('0x68')][_0x695e('0x49')];_0x3fa404+=0x1){let _0xfd8084=_0x2934f3[_0x695e('0x68')][_0x3fa404];var _0xb1764e=_0x35ea22[_0x695e('0x7b')]();_0xb1764e[_0x695e('0x3c')](_0x695e('0x7c'),_0xfd8084['id']);_0x1c37c0['push'](db['sequelize'][_0x695e('0x37')](_0xb1764e['toString'](),{'type':db[_0x695e('0x6d')]['QueryTypes'][_0x695e('0x7d')]})['then'](function(_0x1e5c72){if(_0x1e5c72['length']===0x1){return _0xfd8084['id'];}else{var _0x374a46=_[_0x695e('0x7e')](_[_0x695e('0x2f')](_0x1e5c72,_0x695e('0x7f')),function(_0x5ead3b){return _['includes'](_0x2bb061,_0x5ead3b);});if(_0x374a46){return _0xfd8084['id'];}}}));}}return BPromise[_0x695e('0x80')](_0x1c37c0)[_0x695e('0x25')](function(_0x15266b){_0x41e977=_(_0x41e977)[_0x695e('0x81')](_0x15266b)[_0x695e('0x82')]()['value']();return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x1e5342[_0x695e('0x54')]['id']}})['then'](function(_0x135dbb){return db[_0x695e('0x6d')][_0x695e('0x6e')](function(_0x74c9d5){return _0x135dbb[_0x695e('0x73')](_0x1e5342[_0x695e('0x37')][_0x695e('0x67')],{'transaction':_0x74c9d5})[_0x695e('0x25')](function(){if(!_['isEmpty'](_0x41e977)){return _0x135dbb['removeAgents'](_0x41e977,{'transaction':_0x74c9d5});}})['then'](function(){_0x41e977[_0x695e('0x70')](function(_0x50d3e6){socket[_0x695e('0x71')](_0x695e('0x83'),{'UserId':_0x50d3e6,'MailQueueId':_0x135dbb['id']});});});});});});})['then'](respondWithStatusCode(_0x59a47c,null))[_0x695e('0x46')](handleError(_0x59a47c,null));};exports[_0x695e('0x84')]=function(_0x4affaf,_0x760fd,_0xfc6aed){return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x4affaf[_0x695e('0x54')]['id']}})['then'](handleEntityNotFound(_0x760fd,null))[_0x695e('0x25')](function(_0x31367b){if(_0x31367b){return _0x31367b[_0x695e('0x84')](_0x4affaf['body'][_0x695e('0x67')],_[_0x695e('0x85')](_0x4affaf['body'],[_0x695e('0x67'),'id'])||{})[_0x695e('0x86')](function(_0x2ec2a9){for(var _0x15c8d7=0x0;_0x15c8d7<_0x4affaf['body'][_0x695e('0x67')][_0x695e('0x49')];_0x15c8d7+=0x1){socket['emit']('userMailQueue:save',{'UserId':Number(_0x4affaf[_0x695e('0x4d')][_0x695e('0x67')][_0x15c8d7]),'MailQueueId':Number(_0x4affaf[_0x695e('0x54')]['id'])});}return _0x2ec2a9;});}})[_0x695e('0x25')](respondWithResult(_0x760fd,null))[_0x695e('0x46')](handleError(_0x760fd,null));};exports[_0x695e('0x87')]=function(_0x3e9167,_0x4da672,_0x5140e1){return db[_0x695e('0x30')][_0x695e('0x4b')]({'where':{'id':_0x3e9167[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0x4da672,null))[_0x695e('0x25')](function(_0x2baecf){if(_0x2baecf){return _0x2baecf[_0x695e('0x87')](_0x3e9167[_0x695e('0x37')]['ids'])[_0x695e('0x25')](function(){if(_[_0x695e('0x88')](_0x3e9167[_0x695e('0x37')][_0x695e('0x67')])){for(var _0x3a4151=0x0;_0x3a4151<_0x3e9167[_0x695e('0x37')][_0x695e('0x67')][_0x695e('0x49')];_0x3a4151+=0x1){socket[_0x695e('0x71')](_0x695e('0x83'),{'UserId':Number(_0x3e9167[_0x695e('0x37')]['ids'][_0x3a4151]),'MailQueueId':Number(_0x3e9167[_0x695e('0x54')]['id'])});}}else{socket['emit'](_0x695e('0x83'),{'UserId':Number(_0x3e9167[_0x695e('0x37')]['ids']),'MailQueueId':Number(_0x3e9167[_0x695e('0x54')]['id'])});}});}})[_0x695e('0x25')](respondWithStatusCode(_0x4da672,null))[_0x695e('0x46')](handleError(_0x4da672,null));};exports[_0x695e('0x89')]=function(_0x25e65d,_0xf79a3c,_0x29c7a2){var _0xa1890e={};var _0x54fcb9={};var _0x4d1496;var _0x440f55;return db[_0x695e('0x30')][_0x695e('0x63')]({'where':{'id':_0x25e65d[_0x695e('0x54')]['id']}})[_0x695e('0x25')](handleEntityNotFound(_0xf79a3c,null))[_0x695e('0x25')](function(_0x18b9b4){if(_0x18b9b4){_0x4d1496=_0x18b9b4;_0x54fcb9[_0x695e('0x35')]=_[_0x695e('0x48')](db[_0x695e('0x5a')]['rawAttributes']);_0x54fcb9['query']=_[_0x695e('0x48')](_0x25e65d['query']);_0x54fcb9[_0x695e('0x3e')]=_[_0x695e('0x36')](_0x54fcb9[_0x695e('0x35')],_0x54fcb9[_0x695e('0x37')]);_0xa1890e[_0x695e('0x38')]=_[_0x695e('0x36')](_0x54fcb9['model'],qs[_0x695e('0x39')](_0x25e65d[_0x695e('0x37')][_0x695e('0x39')]));_0xa1890e[_0x695e('0x38')]=_0xa1890e['attributes'][_0x695e('0x49')]?_0xa1890e[_0x695e('0x38')]:_0x54fcb9[_0x695e('0x35')];_0xa1890e[_0x695e('0x65')]=qs[_0x695e('0x3b')](_0x25e65d[_0x695e('0x37')][_0x695e('0x3b')]);_0xa1890e[_0x695e('0x3c')]=qs[_0x695e('0x3e')](_[_0x695e('0x3d')](_0x25e65d['query'],_0x54fcb9[_0x695e('0x3e')]));if(_0x25e65d[_0x695e('0x37')]['filter']){_0xa1890e[_0x695e('0x3c')]=_[_0x695e('0x40')](_0xa1890e['where'],{'$or':_[_0x695e('0x2f')](_0xa1890e[_0x695e('0x38')],function(_0x56db4b){var _0x14b7d5={};_0x14b7d5[_0x56db4b]={'$like':'%'+_0x25e65d['query'][_0x695e('0x3f')]+'%'};return _0x14b7d5;})});}_0xa1890e=_[_0x695e('0x40')]({},_0xa1890e,_0x25e65d['options']);return _0x4d1496[_0x695e('0x89')](_0xa1890e);}})[_0x695e('0x25')](function(_0x51f3f5){if(_0x51f3f5){_0x440f55=_0x51f3f5[_0x695e('0x49')];if(!_0x25e65d['query'][_0x695e('0x3a')]('nolimit')){_0xa1890e[_0x695e('0x1f')]=qs['limit'](_0x25e65d[_0x695e('0x37')]['limit']);_0xa1890e[_0x695e('0x1c')]=qs['offset'](_0x25e65d[_0x695e('0x37')][_0x695e('0x1c')]);}return _0x4d1496['getAgents'](_0xa1890e);}})[_0x695e('0x25')](function(_0x224c5d){if(_0x224c5d){return _0x224c5d?{'count':_0x440f55,'rows':_0x224c5d}:null;}})[_0x695e('0x25')](respondWithResult(_0xf79a3c,null))[_0x695e('0x46')](handleError(_0xf79a3c,null));};
\ No newline at end of file
index c85a756..28367c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa3=['events','../../mysqldb','MailQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x0aa3,0x108));var _0x30aa=function(_0x46e1b5,_0x5e4456){_0x46e1b5=_0x46e1b5-0x0;var _0x5a1cfe=_0x0aa3[_0x46e1b5];return _0x5a1cfe;};'use strict';var EventEmitter=require(_0x30aa('0x0'));var MailQueue=require(_0x30aa('0x1'))['db'][_0x30aa('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x30aa('0x3')](0x0);var events={'afterCreate':_0x30aa('0x4'),'afterUpdate':_0x30aa('0x5'),'afterDestroy':_0x30aa('0x6')};function emitEvent(_0x4e1479){return function(_0x6acd1c,_0x4cf18e,_0xfdbde0){MailQueueEvents[_0x30aa('0x7')](_0x4e1479+':'+_0x6acd1c['id'],_0x6acd1c);MailQueueEvents[_0x30aa('0x7')](_0x4e1479,_0x6acd1c);_0xfdbde0(null);};}for(var e in events){if(events[_0x30aa('0x8')](e)){var event=events[e];MailQueue[_0x30aa('0x9')](e,emitEvent(event));}}module[_0x30aa('0xa')]=MailQueueEvents;
\ No newline at end of file
+var _0x4693=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','MailQueue'];(function(_0x499483,_0x272797){var _0x22aa79=function(_0x1e596d){while(--_0x1e596d){_0x499483['push'](_0x499483['shift']());}};_0x22aa79(++_0x272797);}(_0x4693,0x126));var _0x3469=function(_0x119d66,_0x18ebe3){_0x119d66=_0x119d66-0x0;var _0x2c8831=_0x4693[_0x119d66];return _0x2c8831;};'use strict';var EventEmitter=require(_0x3469('0x0'));var MailQueue=require(_0x3469('0x1'))['db'][_0x3469('0x2')];var MailQueueEvents=new EventEmitter();MailQueueEvents[_0x3469('0x3')](0x0);var events={'afterCreate':_0x3469('0x4'),'afterUpdate':_0x3469('0x5'),'afterDestroy':_0x3469('0x6')};function emitEvent(_0x119d9e){return function(_0x299108,_0x465214,_0xb5aa59){MailQueueEvents[_0x3469('0x7')](_0x119d9e+':'+_0x299108['id'],_0x299108);MailQueueEvents[_0x3469('0x7')](_0x119d9e,_0x299108);_0xb5aa59(null);};}for(var e in events){if(events[_0x3469('0x8')](e)){var event=events[e];MailQueue[_0x3469('0x9')](e,emitEvent(event));}}module[_0x3469('0xa')]=MailQueueEvents;
\ No newline at end of file
index e695dae..095fe43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfba8=['../../config/logger','moment','bluebird','request-promise','path','rimraf','./mailQueue.attributes','exports','MailQueue','lodash'];(function(_0x34bcf6,_0x2cc521){var _0x54adc9=function(_0x2a8f15){while(--_0x2a8f15){_0x34bcf6['push'](_0x34bcf6['shift']());}};_0x54adc9(++_0x2cc521);}(_0xfba8,0x1d5));var _0x8fba=function(_0xfc404e,_0x521753){_0xfc404e=_0xfc404e-0x0;var _0x22d4c2=_0xfba8[_0xfc404e];return _0x22d4c2;};'use strict';var _=require(_0x8fba('0x0'));var util=require('util');var logger=require(_0x8fba('0x1'))('api');var moment=require(_0x8fba('0x2'));var BPromise=require(_0x8fba('0x3'));var rp=require(_0x8fba('0x4'));var fs=require('fs');var path=require(_0x8fba('0x5'));var rimraf=require(_0x8fba('0x6'));var config=require('../../config/environment');var attributes=require(_0x8fba('0x7'));module[_0x8fba('0x8')]=function(_0x1148a1,_0x5eeca0){return _0x1148a1['define'](_0x8fba('0x9'),attributes,{'tableName':'mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2e29=['bluebird','request-promise','path','rimraf','../../config/environment','./mailQueue.attributes','exports','define','MailQueue','mail_queues','lodash','util','../../config/logger','moment'];(function(_0x381589,_0x27a707){var _0x2a075d=function(_0x4ea19d){while(--_0x4ea19d){_0x381589['push'](_0x381589['shift']());}};_0x2a075d(++_0x27a707);}(_0x2e29,0x14c));var _0x92e2=function(_0x525c7b,_0x488fcc){_0x525c7b=_0x525c7b-0x0;var _0x27b33e=_0x2e29[_0x525c7b];return _0x27b33e;};'use strict';var _=require(_0x92e2('0x0'));var util=require(_0x92e2('0x1'));var logger=require(_0x92e2('0x2'))('api');var moment=require(_0x92e2('0x3'));var BPromise=require(_0x92e2('0x4'));var rp=require(_0x92e2('0x5'));var fs=require('fs');var path=require(_0x92e2('0x6'));var rimraf=require(_0x92e2('0x7'));var config=require(_0x92e2('0x8'));var attributes=require(_0x92e2('0x9'));module[_0x92e2('0xa')]=function(_0x48d7ec,_0x2917f3){return _0x48d7ec[_0x92e2('0xb')](_0x92e2('0xc'),attributes,{'tableName':_0x92e2('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 45fd1de..892cba8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ec8=['request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','MailQueue','options','where','attributes','map','include','model','GetMailQueue','ShowMailQueue','find','raw','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','localhost','socket.io-emitter','./mailQueue.socket','register','request','then','info','MailQueue,\x20%s,\x20%s'];(function(_0x209e03,_0x592246){var _0x238b89=function(_0x4d7904){while(--_0x4d7904){_0x209e03['push'](_0x209e03['shift']());}};_0x238b89(++_0x592246);}(_0x9ec8,0xb8));var _0x89ec=function(_0x3cc9f9,_0x5790ea){_0x3cc9f9=_0x3cc9f9-0x0;var _0x1d0e5f=_0x9ec8[_0x3cc9f9];return _0x1d0e5f;};'use strict';var _=require(_0x89ec('0x0'));var util=require(_0x89ec('0x1'));var moment=require('moment');var BPromise=require(_0x89ec('0x2'));var rs=require(_0x89ec('0x3'));var fs=require('fs');var Redis=require(_0x89ec('0x4'));var db=require(_0x89ec('0x5'))['db'];var utils=require(_0x89ec('0x6'));var logger=require(_0x89ec('0x7'))(_0x89ec('0x8'));var config=require('../../config/environment');var jayson=require(_0x89ec('0x9'));var client=jayson[_0x89ec('0xa')][_0x89ec('0xb')]({'port':0x232a});config[_0x89ec('0xc')]=_['defaults'](config[_0x89ec('0xc')],{'host':_0x89ec('0xd'),'port':0x18eb});var socket=require(_0x89ec('0xe'))(new Redis(config[_0x89ec('0xc')]));require(_0x89ec('0xf'))[_0x89ec('0x10')](socket);function respondWithRpcPromise(_0x58083d,_0x149591,_0x555732){return new BPromise(function(_0x492370,_0x1715ac){return client[_0x89ec('0x11')](_0x58083d,_0x555732)[_0x89ec('0x12')](function(_0xa41a79){logger[_0x89ec('0x13')](_0x89ec('0x14'),_0x149591,_0x89ec('0x15'));logger[_0x89ec('0x16')](_0x89ec('0x17'),_0x149591,_0x89ec('0x15'),JSON[_0x89ec('0x18')](_0xa41a79));if(_0xa41a79[_0x89ec('0x19')]){if(_0xa41a79[_0x89ec('0x19')][_0x89ec('0x1a')]===0x1f4){logger[_0x89ec('0x19')](_0x89ec('0x14'),_0x149591,_0xa41a79['error'][_0x89ec('0x1b')]);return _0x1715ac(_0xa41a79[_0x89ec('0x19')][_0x89ec('0x1b')]);}logger['error'](_0x89ec('0x14'),_0x149591,_0xa41a79['error'][_0x89ec('0x1b')]);return _0x492370(_0xa41a79['error'][_0x89ec('0x1b')]);}else{logger['info'](_0x89ec('0x14'),_0x149591,_0x89ec('0x15'));_0x492370(_0xa41a79[_0x89ec('0x1c')][_0x89ec('0x1b')]);}})[_0x89ec('0x1d')](function(_0x12ab04){logger[_0x89ec('0x19')](_0x89ec('0x14'),_0x149591,_0x12ab04);_0x1715ac(_0x12ab04);});});}exports['GetMailQueue']=function(_0xb78e7d){var _0x18ed4b=this;return new Promise(function(_0x5e51cc,_0x1bab5b){return db[_0x89ec('0x1e')]['findAll']({'raw':_0xb78e7d[_0x89ec('0x1f')]?_0xb78e7d[_0x89ec('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0xb78e7d['options']?_0xb78e7d[_0x89ec('0x1f')][_0x89ec('0x20')]||null:null,'attributes':_0xb78e7d[_0x89ec('0x1f')]?_0xb78e7d['options'][_0x89ec('0x21')]||null:null,'limit':_0xb78e7d[_0x89ec('0x1f')]?_0xb78e7d[_0x89ec('0x1f')]['limit']||null:null,'include':_0xb78e7d['options']?_0xb78e7d[_0x89ec('0x1f')]['include']?_[_0x89ec('0x22')](_0xb78e7d['options'][_0x89ec('0x23')],function(_0x4556f9){return{'model':db[_0x4556f9[_0x89ec('0x24')]],'as':_0x4556f9['as'],'attributes':_0x4556f9[_0x89ec('0x21')],'include':_0x4556f9[_0x89ec('0x23')]?_[_0x89ec('0x22')](_0x4556f9[_0x89ec('0x23')],function(_0x20989e){return{'model':db[_0x20989e[_0x89ec('0x24')]],'as':_0x20989e['as'],'attributes':_0x20989e[_0x89ec('0x21')],'include':_0x20989e['include']?_[_0x89ec('0x22')](_0x20989e[_0x89ec('0x23')],function(_0x27f48e){return{'model':db[_0x27f48e[_0x89ec('0x24')]],'as':_0x27f48e['as'],'attributes':_0x27f48e['attributes']};}):[]};}):[]};}):[]:[]})[_0x89ec('0x12')](function(_0x3da0c7){logger[_0x89ec('0x13')]('GetMailQueue',_0xb78e7d);logger[_0x89ec('0x16')](_0x89ec('0x25'),_0xb78e7d,JSON['stringify'](_0x3da0c7));_0x5e51cc(_0x3da0c7);})[_0x89ec('0x1d')](function(_0x3313a4){logger[_0x89ec('0x19')](_0x89ec('0x25'),_0x3313a4[_0x89ec('0x1b')],_0xb78e7d);_0x1bab5b(_0x18ed4b[_0x89ec('0x19')](0x1f4,_0x3313a4[_0x89ec('0x1b')]));});});};exports[_0x89ec('0x26')]=function(_0x128237){var _0x2cd11a=this;return new Promise(function(_0x3852b9,_0x38a73e){return db[_0x89ec('0x1e')][_0x89ec('0x27')]({'raw':_0x128237['options']?_0x128237[_0x89ec('0x1f')][_0x89ec('0x28')]===undefined?!![]:![]:!![],'where':_0x128237[_0x89ec('0x1f')]?_0x128237[_0x89ec('0x1f')][_0x89ec('0x20')]||null:null,'attributes':_0x128237['options']?_0x128237['options'][_0x89ec('0x21')]||null:null,'include':_0x128237[_0x89ec('0x1f')]?_0x128237[_0x89ec('0x1f')][_0x89ec('0x23')]?_['map'](_0x128237['options'][_0x89ec('0x23')],function(_0x926efc){return{'model':db[_0x926efc[_0x89ec('0x24')]],'as':_0x926efc['as'],'attributes':_0x926efc[_0x89ec('0x21')],'include':_0x926efc[_0x89ec('0x23')]?_[_0x89ec('0x22')](_0x926efc[_0x89ec('0x23')],function(_0x4b7d42){return{'model':db[_0x4b7d42[_0x89ec('0x24')]],'as':_0x4b7d42['as'],'attributes':_0x4b7d42[_0x89ec('0x21')],'include':_0x4b7d42[_0x89ec('0x23')]?_[_0x89ec('0x22')](_0x4b7d42[_0x89ec('0x23')],function(_0x3eb12c){return{'model':db[_0x3eb12c[_0x89ec('0x24')]],'as':_0x3eb12c['as'],'attributes':_0x3eb12c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x4743cc){logger[_0x89ec('0x13')](_0x89ec('0x26'),_0x128237);logger['debug'](_0x89ec('0x26'),_0x128237,JSON[_0x89ec('0x18')](_0x4743cc));_0x3852b9(_0x4743cc);})[_0x89ec('0x1d')](function(_0x198a9c){logger[_0x89ec('0x19')](_0x89ec('0x26'),_0x198a9c[_0x89ec('0x1b')],_0x128237);_0x38a73e(_0x2cd11a[_0x89ec('0x19')](0x1f4,_0x198a9c[_0x89ec('0x1b')]));});});};
\ No newline at end of file
+var _0xf60a=['register','then','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetMailQueue','MailQueue','findAll','options','raw','attributes','limit','include','map','model','ShowMailQueue','find','where','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0xf60a,0x166));var _0xaf60=function(_0x52c618,_0x570691){_0x52c618=_0x52c618-0x0;var _0x33822d=_0xf60a[_0x52c618];return _0x33822d;};'use strict';var _=require('lodash');var util=require(_0xaf60('0x0'));var moment=require(_0xaf60('0x1'));var BPromise=require(_0xaf60('0x2'));var rs=require(_0xaf60('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xaf60('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xaf60('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xaf60('0x6'));var client=jayson[_0xaf60('0x7')][_0xaf60('0x8')]({'port':0x232a});config[_0xaf60('0x9')]=_[_0xaf60('0xa')](config[_0xaf60('0x9')],{'host':_0xaf60('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaf60('0x9')]));require('./mailQueue.socket')[_0xaf60('0xc')](socket);function respondWithRpcPromise(_0x34d912,_0x57e139,_0xfc0f30){return new BPromise(function(_0x57ea41,_0x5d7929){return client['request'](_0x34d912,_0xfc0f30)[_0xaf60('0xd')](function(_0x8181ab){logger[_0xaf60('0xe')](_0xaf60('0xf'),_0x57e139,_0xaf60('0x10'));logger[_0xaf60('0x11')](_0xaf60('0x12'),_0x57e139,_0xaf60('0x10'),JSON[_0xaf60('0x13')](_0x8181ab));if(_0x8181ab[_0xaf60('0x14')]){if(_0x8181ab['error'][_0xaf60('0x15')]===0x1f4){logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x8181ab['error']['message']);return _0x5d7929(_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);}logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);return _0x57ea41(_0x8181ab[_0xaf60('0x14')][_0xaf60('0x16')]);}else{logger[_0xaf60('0xe')](_0xaf60('0xf'),_0x57e139,_0xaf60('0x10'));_0x57ea41(_0x8181ab['result'][_0xaf60('0x16')]);}})[_0xaf60('0x17')](function(_0x563761){logger[_0xaf60('0x14')](_0xaf60('0xf'),_0x57e139,_0x563761);_0x5d7929(_0x563761);});});}exports[_0xaf60('0x18')]=function(_0x25d8c4){var _0x1af8e0=this;return new Promise(function(_0x50f660,_0x2b61cb){return db[_0xaf60('0x19')][_0xaf60('0x1a')]({'raw':_0x25d8c4['options']?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1c')]===undefined?!![]:![]:!![],'where':_0x25d8c4['options']?_0x25d8c4['options']['where']||null:null,'attributes':_0x25d8c4['options']?_0x25d8c4['options'][_0xaf60('0x1d')]||null:null,'limit':_0x25d8c4['options']?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1e')]||null:null,'include':_0x25d8c4[_0xaf60('0x1b')]?_0x25d8c4[_0xaf60('0x1b')][_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x25d8c4[_0xaf60('0x1b')]['include'],function(_0x292469){return{'model':db[_0x292469[_0xaf60('0x21')]],'as':_0x292469['as'],'attributes':_0x292469[_0xaf60('0x1d')],'include':_0x292469['include']?_[_0xaf60('0x20')](_0x292469[_0xaf60('0x1f')],function(_0x2975a0){return{'model':db[_0x2975a0[_0xaf60('0x21')]],'as':_0x2975a0['as'],'attributes':_0x2975a0[_0xaf60('0x1d')],'include':_0x2975a0[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x2975a0[_0xaf60('0x1f')],function(_0x2c0863){return{'model':db[_0x2c0863['model']],'as':_0x2c0863['as'],'attributes':_0x2c0863['attributes']};}):[]};}):[]};}):[]:[]})[_0xaf60('0xd')](function(_0x5a8db0){logger[_0xaf60('0xe')]('GetMailQueue',_0x25d8c4);logger[_0xaf60('0x11')](_0xaf60('0x18'),_0x25d8c4,JSON['stringify'](_0x5a8db0));_0x50f660(_0x5a8db0);})[_0xaf60('0x17')](function(_0x136340){logger[_0xaf60('0x14')](_0xaf60('0x18'),_0x136340[_0xaf60('0x16')],_0x25d8c4);_0x2b61cb(_0x1af8e0[_0xaf60('0x14')](0x1f4,_0x136340[_0xaf60('0x16')]));});});};exports[_0xaf60('0x22')]=function(_0x4d91a1){var _0x4aba0d=this;return new Promise(function(_0x4dea58,_0x464b6f){return db[_0xaf60('0x19')][_0xaf60('0x23')]({'raw':_0x4d91a1['options']?_0x4d91a1[_0xaf60('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1['options'][_0xaf60('0x24')]||null:null,'attributes':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1[_0xaf60('0x1b')][_0xaf60('0x1d')]||null:null,'include':_0x4d91a1[_0xaf60('0x1b')]?_0x4d91a1[_0xaf60('0x1b')]['include']?_[_0xaf60('0x20')](_0x4d91a1[_0xaf60('0x1b')][_0xaf60('0x1f')],function(_0x40d0a5){return{'model':db[_0x40d0a5[_0xaf60('0x21')]],'as':_0x40d0a5['as'],'attributes':_0x40d0a5[_0xaf60('0x1d')],'include':_0x40d0a5[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x40d0a5[_0xaf60('0x1f')],function(_0x31e5ae){return{'model':db[_0x31e5ae[_0xaf60('0x21')]],'as':_0x31e5ae['as'],'attributes':_0x31e5ae[_0xaf60('0x1d')],'include':_0x31e5ae[_0xaf60('0x1f')]?_[_0xaf60('0x20')](_0x31e5ae[_0xaf60('0x1f')],function(_0x390c0a){return{'model':db[_0x390c0a['model']],'as':_0x390c0a['as'],'attributes':_0x390c0a['attributes']};}):[]};}):[]};}):[]:[]})[_0xaf60('0xd')](function(_0x3498eb){logger['info'](_0xaf60('0x22'),_0x4d91a1);logger[_0xaf60('0x11')](_0xaf60('0x22'),_0x4d91a1,JSON[_0xaf60('0x13')](_0x3498eb));_0x4dea58(_0x3498eb);})[_0xaf60('0x17')](function(_0x538ac7){logger[_0xaf60('0x14')](_0xaf60('0x22'),_0x538ac7[_0xaf60('0x16')],_0x4d91a1);_0x464b6f(_0x4aba0d[_0xaf60('0x14')](0x1f4,_0x538ac7['message']));});});};
\ No newline at end of file
index bb1008f..8093929 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108a=['remove','emit','removeListener','register','length','mailQueue:','save'];(function(_0xee7f1c,_0x278ed5){var _0x3a0bbf=function(_0x444776){while(--_0x444776){_0xee7f1c['push'](_0xee7f1c['shift']());}};_0x3a0bbf(++_0x278ed5);}(_0x108a,0x172));var _0xa108=function(_0x2a6433,_0x4f1b0c){_0x2a6433=_0x2a6433-0x0;var _0x524d92=_0x108a[_0x2a6433];return _0x524d92;};'use strict';var MailQueueEvents=require('./mailQueue.events');var events=[_0xa108('0x0'),_0xa108('0x1'),'update'];function createListener(_0x4fb80d,_0x5da0d6){return function(_0x97efa0){_0x5da0d6[_0xa108('0x2')](_0x4fb80d,_0x97efa0);};}function removeListener(_0x575c28,_0x34c565){return function(){MailQueueEvents[_0xa108('0x3')](_0x575c28,_0x34c565);};}exports[_0xa108('0x4')]=function(_0x54a62d){for(var _0x26ab84=0x0,_0xa90075=events[_0xa108('0x5')];_0x26ab84<_0xa90075;_0x26ab84++){var _0x4066ae=events[_0x26ab84];var _0x3e11d7=createListener(_0xa108('0x6')+_0x4066ae,_0x54a62d);MailQueueEvents['on'](_0x4066ae,_0x3e11d7);}};
\ No newline at end of file
+var _0x672d=['mailQueue:','./mailQueue.events','save','remove','update','emit','register','length'];(function(_0x1ca9da,_0x41831d){var _0x3e1ec8=function(_0x413c4a){while(--_0x413c4a){_0x1ca9da['push'](_0x1ca9da['shift']());}};_0x3e1ec8(++_0x41831d);}(_0x672d,0x191));var _0xd672=function(_0x5969a8,_0x9d9c92){_0x5969a8=_0x5969a8-0x0;var _0x1c5c75=_0x672d[_0x5969a8];return _0x1c5c75;};'use strict';var MailQueueEvents=require(_0xd672('0x0'));var events=[_0xd672('0x1'),_0xd672('0x2'),_0xd672('0x3')];function createListener(_0x26373e,_0x4ed5a8){return function(_0x132bd8){_0x4ed5a8[_0xd672('0x4')](_0x26373e,_0x132bd8);};}function removeListener(_0x53490d,_0x3092da){return function(){MailQueueEvents['removeListener'](_0x53490d,_0x3092da);};}exports[_0xd672('0x5')]=function(_0x5a22ef){for(var _0xe1de7b=0x0,_0x5152eb=events[_0xd672('0x6')];_0xe1de7b<_0x5152eb;_0xe1de7b++){var _0x5307a8=events[_0xe1de7b];var _0x50545d=createListener(_0xd672('0x7')+_0x5307a8,_0x5a22ef);MailQueueEvents['on'](_0x5307a8,_0x50545d);}};
\ No newline at end of file
index f00d25d..72b0ff1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82e0=['/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','post','create','put'];(function(_0x1eff7c,_0x357ad0){var _0x304854=function(_0x27f760){while(--_0x27f760){_0x1eff7c['push'](_0x1eff7c['shift']());}};_0x304854(++_0x357ad0);}(_0x82e0,0xd6));var _0x082e=function(_0x4f4c53,_0x58ba7b){_0x4f4c53=_0x4f4c53-0x0;var _0x568ff1=_0x82e0[_0x4f4c53];return _0x568ff1;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x082e('0x0'));var timeout=require(_0x082e('0x1'));var express=require(_0x082e('0x2'));var router=express[_0x082e('0x3')]();var fs_extra=require(_0x082e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x082e('0x5'));var config=require(_0x082e('0x6'));var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0x082e('0x7')](),controller[_0x082e('0x8')]);router[_0x082e('0x9')]('/describe',auth[_0x082e('0x7')](),controller[_0x082e('0xa')]);router[_0x082e('0x9')]('/:id',auth[_0x082e('0x7')](),controller['show']);router[_0x082e('0xb')]('/',auth[_0x082e('0x7')](),controller[_0x082e('0xc')]);router[_0x082e('0xd')](_0x082e('0xe'),auth[_0x082e('0x7')](),controller[_0x082e('0xf')]);router[_0x082e('0x10')](_0x082e('0xe'),auth[_0x082e('0x7')](),controller[_0x082e('0x11')]);module[_0x082e('0x12')]=router;
\ No newline at end of file
+var _0xec5c=['show','post','create','put','delete','exports','multer','connect-timeout','express','fs-extra','../../components/interaction/service','./mailQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0xec5c,0x138));var _0xcec5=function(_0x479160,_0x3ab560){_0x479160=_0x479160-0x0;var _0x47ac6d=_0xec5c[_0x479160];return _0x47ac6d;};'use strict';var multer=require(_0xcec5('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcec5('0x1'));var express=require(_0xcec5('0x2'));var router=express['Router']();var fs_extra=require(_0xcec5('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xcec5('0x4'));var config=require('../../config/environment');var controller=require(_0xcec5('0x5'));router[_0xcec5('0x6')]('/',auth[_0xcec5('0x7')](),controller[_0xcec5('0x8')]);router[_0xcec5('0x6')](_0xcec5('0x9'),auth[_0xcec5('0x7')](),controller[_0xcec5('0xa')]);router[_0xcec5('0x6')](_0xcec5('0xb'),auth['isAuthenticated'](),controller[_0xcec5('0xc')]);router[_0xcec5('0xd')]('/',auth[_0xcec5('0x7')](),controller[_0xcec5('0xe')]);router[_0xcec5('0xf')](_0xcec5('0xb'),auth[_0xcec5('0x7')](),controller['update']);router[_0xcec5('0x10')](_0xcec5('0xb'),auth[_0xcec5('0x7')](),controller['destroy']);module[_0xcec5('0x11')]=router;
\ No newline at end of file
index 9baa420..0dbdee6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf774=['sequelize','exports','STRING','DATE','moment'];(function(_0x5c351c,_0x2046d8){var _0x26f3b3=function(_0x47ac18){while(--_0x47ac18){_0x5c351c['push'](_0x5c351c['shift']());}};_0x26f3b3(++_0x2046d8);}(_0xf774,0x1e4));var _0x4f77=function(_0x1b9edc,_0x35c1d5){_0x1b9edc=_0x1b9edc-0x0;var _0x524ad7=_0xf774[_0x1b9edc];return _0x524ad7;};'use strict';var moment=require(_0x4f77('0x0'));var Sequelize=require(_0x4f77('0x1'));module[_0x4f77('0x2')]={'uniqueid':{'type':Sequelize[_0x4f77('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x4f77('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x4f77('0x4')]},'acceptAt':{'type':Sequelize[_0x4f77('0x4')]},'exitAt':{'type':Sequelize[_0x4f77('0x4')]},'reason':{'type':Sequelize[_0x4f77('0x3')]}};
\ No newline at end of file
+var _0x571c=['exports','STRING','DATE'];(function(_0x34df16,_0x29537f){var _0x203bca=function(_0x5ad128){while(--_0x5ad128){_0x34df16['push'](_0x34df16['shift']());}};_0x203bca(++_0x29537f);}(_0x571c,0xb4));var _0xc571=function(_0x4d9484,_0x2a53c1){_0x4d9484=_0x4d9484-0x0;var _0x2ac453=_0x571c[_0x4d9484];return _0x2ac453;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module[_0xc571('0x0')]={'uniqueid':{'type':Sequelize[_0xc571('0x1')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xc571('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xc571('0x2')]},'exitAt':{'type':Sequelize[_0xc571('0x2')]},'reason':{'type':Sequelize[_0xc571('0x1')]}};
\ No newline at end of file
index b6f511e..6bf08ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bd0=['model','name','query','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','MailQueueReport','findAll','rows','show','keys','length','includeAll','find','catch','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','send','index','map','rawAttributes','fieldName','type','key'];(function(_0x58621d,_0x1caa3b){var _0x3b1979=function(_0x465e9b){while(--_0x465e9b){_0x58621d['push'](_0x58621d['shift']());}};_0x3b1979(++_0x1caa3b);}(_0x7bd0,0x111));var _0x07bd=function(_0x2e78e9,_0x42957c){_0x2e78e9=_0x2e78e9-0x0;var _0x35aad4=_0x7bd0[_0x2e78e9];return _0x35aad4;};'use strict';var emlformat=require(_0x07bd('0x0'));var rimraf=require(_0x07bd('0x1'));var zipdir=require(_0x07bd('0x2'));var jsonpatch=require(_0x07bd('0x3'));var rp=require(_0x07bd('0x4'));var moment=require(_0x07bd('0x5'));var BPromise=require(_0x07bd('0x6'));var Mustache=require(_0x07bd('0x7'));var util=require('util');var path=require(_0x07bd('0x8'));var sox=require(_0x07bd('0x9'));var csv=require(_0x07bd('0xa'));var ejs=require(_0x07bd('0xb'));var fs=require('fs');var fs_extra=require(_0x07bd('0xc'));var _=require(_0x07bd('0xd'));var squel=require(_0x07bd('0xe'));var crypto=require('crypto');var jsforce=require(_0x07bd('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x07bd('0xa'));var querystring=require(_0x07bd('0x10'));var Papa=require(_0x07bd('0x11'));var Redis=require('ioredis');var authService=require(_0x07bd('0x12'));var qs=require(_0x07bd('0x13'));var as=require(_0x07bd('0x14'));var hardwareService=require(_0x07bd('0x15'));var logger=require('../../config/logger')(_0x07bd('0x16'));var utils=require(_0x07bd('0x17'));var config=require(_0x07bd('0x18'));var licenseUtil=require(_0x07bd('0x19'));var db=require(_0x07bd('0x1a'))['db'];function respondWithStatusCode(_0x1eff6c,_0x10aa2e){_0x10aa2e=_0x10aa2e||0xcc;return function(_0x2b8409){if(_0x2b8409){return _0x1eff6c['sendStatus'](_0x10aa2e);}return _0x1eff6c['status'](_0x10aa2e)[_0x07bd('0x1b')]();};}function respondWithResult(_0x3fe523,_0x1c59c2){_0x1c59c2=_0x1c59c2||0xc8;return function(_0x247f3f){if(_0x247f3f){return _0x3fe523[_0x07bd('0x1c')](_0x1c59c2)[_0x07bd('0x1d')](_0x247f3f);}};}function respondWithFilteredResult(_0x2c9166,_0x49d962){return function(_0x418444){if(_0x418444){var _0x505839=typeof _0x49d962[_0x07bd('0x1e')]===_0x07bd('0x1f')&&typeof _0x49d962[_0x07bd('0x20')]===_0x07bd('0x1f');var _0x8aa645=_0x418444['count'];var _0x3f9f0b=_0x505839?0x0:_0x49d962[_0x07bd('0x1e')];var _0x4948f4=_0x505839?_0x418444[_0x07bd('0x21')]:_0x49d962[_0x07bd('0x1e')]+_0x49d962[_0x07bd('0x20')];var _0x2fcc59;if(_0x4948f4>=_0x8aa645){_0x4948f4=_0x8aa645;_0x2fcc59=0xc8;}else{_0x2fcc59=0xce;}_0x2c9166[_0x07bd('0x1c')](_0x2fcc59);return _0x2c9166[_0x07bd('0x22')](_0x07bd('0x23'),_0x3f9f0b+'-'+_0x4948f4+'/'+_0x8aa645)[_0x07bd('0x1d')](_0x418444);}return null;};}function patchUpdates(_0x29a52e){return function(_0x50109f){try{jsonpatch[_0x07bd('0x24')](_0x50109f,_0x29a52e,!![]);}catch(_0x227807){return BPromise[_0x07bd('0x25')](_0x227807);}return _0x50109f[_0x07bd('0x26')]();};}function saveUpdates(_0x16d0e6,_0x47bd50){return function(_0x4c673a){if(_0x4c673a){return _0x4c673a[_0x07bd('0x27')](_0x16d0e6)['then'](function(_0x2b0dee){return _0x2b0dee;});}return null;};}function removeEntity(_0x480c9c,_0x50bd12){return function(_0x4165bc){if(_0x4165bc){return _0x4165bc[_0x07bd('0x28')]()[_0x07bd('0x29')](function(){_0x480c9c[_0x07bd('0x1c')](0xcc)[_0x07bd('0x1b')]();});}};}function handleEntityNotFound(_0x43cbc8,_0x557042){return function(_0x180b43){if(!_0x180b43){_0x43cbc8[_0x07bd('0x2a')](0x194);}return _0x180b43;};}function handleError(_0x3db9d0,_0x2a7202){_0x2a7202=_0x2a7202||0x1f4;return function(_0x12ce26){logger[_0x07bd('0x2b')](_0x12ce26['stack']);if(_0x12ce26['name']){delete _0x12ce26['name'];}_0x3db9d0[_0x07bd('0x1c')](_0x2a7202)[_0x07bd('0x2c')](_0x12ce26);};}exports[_0x07bd('0x2d')]=function(_0x51efa8,_0x1a3aa9){var _0x400cc0={},_0x253dc0={},_0x46ed12={'count':0x0,'rows':[]};var _0x3f9424=_[_0x07bd('0x2e')](db['MailQueueReport'][_0x07bd('0x2f')],function(_0x20cc94){return{'name':_0x20cc94[_0x07bd('0x30')],'type':_0x20cc94[_0x07bd('0x31')][_0x07bd('0x32')]};});_0x253dc0[_0x07bd('0x33')]=_[_0x07bd('0x2e')](_0x3f9424,_0x07bd('0x34'));_0x253dc0['query']=_['keys'](_0x51efa8[_0x07bd('0x35')]);_0x253dc0[_0x07bd('0x36')]=_[_0x07bd('0x37')](_0x253dc0['model'],_0x253dc0[_0x07bd('0x35')]);_0x400cc0[_0x07bd('0x38')]=_[_0x07bd('0x37')](_0x253dc0['model'],qs['fields'](_0x51efa8[_0x07bd('0x35')][_0x07bd('0x39')]));_0x400cc0[_0x07bd('0x38')]=_0x400cc0[_0x07bd('0x38')]['length']?_0x400cc0[_0x07bd('0x38')]:_0x253dc0[_0x07bd('0x33')];if(!_0x51efa8[_0x07bd('0x35')]['hasOwnProperty'](_0x07bd('0x3a'))){_0x400cc0[_0x07bd('0x20')]=qs['limit'](_0x51efa8[_0x07bd('0x35')][_0x07bd('0x20')]);_0x400cc0[_0x07bd('0x1e')]=qs[_0x07bd('0x1e')](_0x51efa8['query']['offset']);}_0x400cc0[_0x07bd('0x3b')]=qs['sort'](_0x51efa8[_0x07bd('0x35')][_0x07bd('0x3c')]);_0x400cc0[_0x07bd('0x3d')]=qs[_0x07bd('0x36')](_[_0x07bd('0x3e')](_0x51efa8[_0x07bd('0x35')],_0x253dc0[_0x07bd('0x36')]),_0x3f9424);if(_0x51efa8[_0x07bd('0x35')][_0x07bd('0x3f')]){_0x400cc0[_0x07bd('0x3d')]=_[_0x07bd('0x40')](_0x400cc0[_0x07bd('0x3d')],{'$or':_[_0x07bd('0x2e')](_0x3f9424,function(_0x51e8e2){if(_0x51e8e2[_0x07bd('0x31')]!==_0x07bd('0x41')){var _0x220a8e={};_0x220a8e[_0x51e8e2[_0x07bd('0x34')]]={'$like':'%'+_0x51efa8['query'][_0x07bd('0x3f')]+'%'};return _0x220a8e;}})});}_0x400cc0=_[_0x07bd('0x40')]({},_0x400cc0,_0x51efa8[_0x07bd('0x42')]);var _0x408a0a={'where':_0x400cc0[_0x07bd('0x3d')]};return db['MailQueueReport']['count'](_0x408a0a)[_0x07bd('0x29')](function(_0x88e174){_0x46ed12[_0x07bd('0x21')]=_0x88e174;if(_0x51efa8[_0x07bd('0x35')]['includeAll']){_0x400cc0[_0x07bd('0x43')]=[{'all':!![]}];}return db[_0x07bd('0x44')][_0x07bd('0x45')](_0x400cc0);})[_0x07bd('0x29')](function(_0x318b7c){_0x46ed12[_0x07bd('0x46')]=_0x318b7c;return _0x46ed12;})[_0x07bd('0x29')](respondWithFilteredResult(_0x1a3aa9,_0x400cc0))['catch'](handleError(_0x1a3aa9,null));};exports[_0x07bd('0x47')]=function(_0x7b1042,_0x33389b){var _0x3a5827={'raw':!![],'where':{'id':_0x7b1042['params']['id']}},_0x418f26={};_0x418f26[_0x07bd('0x33')]=_[_0x07bd('0x48')](db[_0x07bd('0x44')][_0x07bd('0x2f')]);_0x418f26[_0x07bd('0x35')]=_['keys'](_0x7b1042[_0x07bd('0x35')]);_0x418f26[_0x07bd('0x36')]=_[_0x07bd('0x37')](_0x418f26[_0x07bd('0x33')],_0x418f26['query']);_0x3a5827['attributes']=_[_0x07bd('0x37')](_0x418f26[_0x07bd('0x33')],qs[_0x07bd('0x39')](_0x7b1042[_0x07bd('0x35')][_0x07bd('0x39')]));_0x3a5827[_0x07bd('0x38')]=_0x3a5827[_0x07bd('0x38')][_0x07bd('0x49')]?_0x3a5827[_0x07bd('0x38')]:_0x418f26['model'];if(_0x7b1042['query'][_0x07bd('0x4a')]){_0x3a5827[_0x07bd('0x43')]=[{'all':!![]}];}_0x3a5827=_[_0x07bd('0x40')]({},_0x3a5827,_0x7b1042[_0x07bd('0x42')]);return db[_0x07bd('0x44')][_0x07bd('0x4b')](_0x3a5827)['then'](handleEntityNotFound(_0x33389b,null))[_0x07bd('0x29')](respondWithResult(_0x33389b,null))[_0x07bd('0x4c')](handleError(_0x33389b,null));};exports[_0x07bd('0x4d')]=function(_0x39823e,_0x7755e2){return db[_0x07bd('0x44')]['create'](_0x39823e[_0x07bd('0x4e')],{})[_0x07bd('0x29')](respondWithResult(_0x7755e2,0xc9))[_0x07bd('0x4c')](handleError(_0x7755e2,null));};exports[_0x07bd('0x27')]=function(_0x1d05ad,_0xc96a7d){if(_0x1d05ad[_0x07bd('0x4e')]['id']){delete _0x1d05ad[_0x07bd('0x4e')]['id'];}return db[_0x07bd('0x44')][_0x07bd('0x4b')]({'where':{'id':_0x1d05ad[_0x07bd('0x4f')]['id']}})[_0x07bd('0x29')](handleEntityNotFound(_0xc96a7d,null))['then'](saveUpdates(_0x1d05ad[_0x07bd('0x4e')],null))[_0x07bd('0x29')](respondWithResult(_0xc96a7d,null))[_0x07bd('0x4c')](handleError(_0xc96a7d,null));};exports['destroy']=function(_0x51c9f4,_0x1e7a6e){return db['MailQueueReport'][_0x07bd('0x4b')]({'where':{'id':_0x51c9f4[_0x07bd('0x4f')]['id']}})[_0x07bd('0x29')](handleEntityNotFound(_0x1e7a6e,null))[_0x07bd('0x29')](removeEntity(_0x1e7a6e,null))[_0x07bd('0x4c')](handleError(_0x1e7a6e,null));};exports[_0x07bd('0x50')]=function(_0x2cadbb,_0x157eb4){return db['MailQueueReport'][_0x07bd('0x50')]()[_0x07bd('0x29')](respondWithResult(_0x157eb4,null))[_0x07bd('0x4c')](handleError(_0x157eb4,null));};
\ No newline at end of file
+var _0x68b3=['path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','index','map','MailQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','length','include','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util'];(function(_0x52d6c9,_0xd1f1f){var _0x3bb03d=function(_0x3cd4e8){while(--_0x3cd4e8){_0x52d6c9['push'](_0x52d6c9['shift']());}};_0x3bb03d(++_0xd1f1f);}(_0x68b3,0x1d8));var _0x368b=function(_0x2c4d7a,_0x483544){_0x2c4d7a=_0x2c4d7a-0x0;var _0xb113ba=_0x68b3[_0x2c4d7a];return _0xb113ba;};'use strict';var emlformat=require(_0x368b('0x0'));var rimraf=require(_0x368b('0x1'));var zipdir=require(_0x368b('0x2'));var jsonpatch=require(_0x368b('0x3'));var rp=require(_0x368b('0x4'));var moment=require('moment');var BPromise=require(_0x368b('0x5'));var Mustache=require(_0x368b('0x6'));var util=require(_0x368b('0x7'));var path=require(_0x368b('0x8'));var sox=require('sox');var csv=require(_0x368b('0x9'));var ejs=require(_0x368b('0xa'));var fs=require('fs');var fs_extra=require(_0x368b('0xb'));var _=require(_0x368b('0xc'));var squel=require(_0x368b('0xd'));var crypto=require(_0x368b('0xe'));var jsforce=require(_0x368b('0xf'));var deskjs=require(_0x368b('0x10'));var toCsv=require(_0x368b('0x9'));var querystring=require(_0x368b('0x11'));var Papa=require(_0x368b('0x12'));var Redis=require('ioredis');var authService=require(_0x368b('0x13'));var qs=require(_0x368b('0x14'));var as=require(_0x368b('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x368b('0x16'))(_0x368b('0x17'));var utils=require(_0x368b('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x368b('0x19'));var db=require(_0x368b('0x1a'))['db'];function respondWithStatusCode(_0x514dc7,_0x109a90){_0x109a90=_0x109a90||0xcc;return function(_0x250697){if(_0x250697){return _0x514dc7[_0x368b('0x1b')](_0x109a90);}return _0x514dc7[_0x368b('0x1c')](_0x109a90)[_0x368b('0x1d')]();};}function respondWithResult(_0x4fffe5,_0x2b326c){_0x2b326c=_0x2b326c||0xc8;return function(_0x40faa0){if(_0x40faa0){return _0x4fffe5['status'](_0x2b326c)[_0x368b('0x1e')](_0x40faa0);}};}function respondWithFilteredResult(_0x2aabb9,_0x30c245){return function(_0x515350){if(_0x515350){var _0x220cd5=typeof _0x30c245[_0x368b('0x1f')]===_0x368b('0x20')&&typeof _0x30c245['limit']===_0x368b('0x20');var _0x1b9e65=_0x515350[_0x368b('0x21')];var _0x540f57=_0x220cd5?0x0:_0x30c245['offset'];var _0x3e2e9f=_0x220cd5?_0x515350[_0x368b('0x21')]:_0x30c245[_0x368b('0x1f')]+_0x30c245[_0x368b('0x22')];var _0x1a4f20;if(_0x3e2e9f>=_0x1b9e65){_0x3e2e9f=_0x1b9e65;_0x1a4f20=0xc8;}else{_0x1a4f20=0xce;}_0x2aabb9['status'](_0x1a4f20);return _0x2aabb9[_0x368b('0x23')](_0x368b('0x24'),_0x540f57+'-'+_0x3e2e9f+'/'+_0x1b9e65)[_0x368b('0x1e')](_0x515350);}return null;};}function patchUpdates(_0x1c927f){return function(_0x23da8f){try{jsonpatch[_0x368b('0x25')](_0x23da8f,_0x1c927f,!![]);}catch(_0x397185){return BPromise[_0x368b('0x26')](_0x397185);}return _0x23da8f['save']();};}function saveUpdates(_0x13e750,_0x2f08d9){return function(_0x18869a){if(_0x18869a){return _0x18869a[_0x368b('0x27')](_0x13e750)[_0x368b('0x28')](function(_0x4c2fca){return _0x4c2fca;});}return null;};}function removeEntity(_0x286641,_0x1ca429){return function(_0x3a22bd){if(_0x3a22bd){return _0x3a22bd[_0x368b('0x29')]()[_0x368b('0x28')](function(){_0x286641[_0x368b('0x1c')](0xcc)[_0x368b('0x1d')]();});}};}function handleEntityNotFound(_0x11ea2d,_0x3123c1){return function(_0x3f7f89){if(!_0x3f7f89){_0x11ea2d[_0x368b('0x1b')](0x194);}return _0x3f7f89;};}function handleError(_0x344d8a,_0xceec4b){_0xceec4b=_0xceec4b||0x1f4;return function(_0x376e61){logger[_0x368b('0x2a')](_0x376e61[_0x368b('0x2b')]);if(_0x376e61[_0x368b('0x2c')]){delete _0x376e61[_0x368b('0x2c')];}_0x344d8a[_0x368b('0x1c')](_0xceec4b)[_0x368b('0x2d')](_0x376e61);};}exports[_0x368b('0x2e')]=function(_0xc12627,_0x107d2f){var _0x3c80b5={},_0x5db0b4={},_0x4af77a={'count':0x0,'rows':[]};var _0x381324=_[_0x368b('0x2f')](db[_0x368b('0x30')][_0x368b('0x31')],function(_0x5d6ebf){return{'name':_0x5d6ebf[_0x368b('0x32')],'type':_0x5d6ebf[_0x368b('0x33')][_0x368b('0x34')]};});_0x5db0b4[_0x368b('0x35')]=_[_0x368b('0x2f')](_0x381324,'name');_0x5db0b4[_0x368b('0x36')]=_[_0x368b('0x37')](_0xc12627[_0x368b('0x36')]);_0x5db0b4[_0x368b('0x38')]=_['intersection'](_0x5db0b4['model'],_0x5db0b4['query']);_0x3c80b5[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x5db0b4[_0x368b('0x35')],qs[_0x368b('0x3b')](_0xc12627[_0x368b('0x36')]['fields']));_0x3c80b5[_0x368b('0x39')]=_0x3c80b5[_0x368b('0x39')]['length']?_0x3c80b5[_0x368b('0x39')]:_0x5db0b4[_0x368b('0x35')];if(!_0xc12627['query'][_0x368b('0x3c')](_0x368b('0x3d'))){_0x3c80b5['limit']=qs[_0x368b('0x22')](_0xc12627['query']['limit']);_0x3c80b5['offset']=qs[_0x368b('0x1f')](_0xc12627[_0x368b('0x36')][_0x368b('0x1f')]);}_0x3c80b5[_0x368b('0x3e')]=qs[_0x368b('0x3f')](_0xc12627[_0x368b('0x36')][_0x368b('0x3f')]);_0x3c80b5[_0x368b('0x40')]=qs[_0x368b('0x38')](_[_0x368b('0x41')](_0xc12627['query'],_0x5db0b4[_0x368b('0x38')]),_0x381324);if(_0xc12627[_0x368b('0x36')]['filter']){_0x3c80b5[_0x368b('0x40')]=_[_0x368b('0x42')](_0x3c80b5[_0x368b('0x40')],{'$or':_[_0x368b('0x2f')](_0x381324,function(_0x248b2b){if(_0x248b2b['type']!==_0x368b('0x43')){var _0x4287c6={};_0x4287c6[_0x248b2b[_0x368b('0x2c')]]={'$like':'%'+_0xc12627[_0x368b('0x36')]['filter']+'%'};return _0x4287c6;}})});}_0x3c80b5=_['merge']({},_0x3c80b5,_0xc12627[_0x368b('0x44')]);var _0x3d00f9={'where':_0x3c80b5[_0x368b('0x40')]};return db[_0x368b('0x30')][_0x368b('0x21')](_0x3d00f9)[_0x368b('0x28')](function(_0x1d990c){_0x4af77a[_0x368b('0x21')]=_0x1d990c;if(_0xc12627[_0x368b('0x36')][_0x368b('0x45')]){_0x3c80b5['include']=[{'all':!![]}];}return db[_0x368b('0x30')][_0x368b('0x46')](_0x3c80b5);})['then'](function(_0x25e713){_0x4af77a[_0x368b('0x47')]=_0x25e713;return _0x4af77a;})[_0x368b('0x28')](respondWithFilteredResult(_0x107d2f,_0x3c80b5))[_0x368b('0x48')](handleError(_0x107d2f,null));};exports['show']=function(_0x490eb6,_0x151711){var _0x4a0275={'raw':!![],'where':{'id':_0x490eb6[_0x368b('0x49')]['id']}},_0x91bb0b={};_0x91bb0b[_0x368b('0x35')]=_['keys'](db[_0x368b('0x30')][_0x368b('0x31')]);_0x91bb0b[_0x368b('0x36')]=_['keys'](_0x490eb6['query']);_0x91bb0b[_0x368b('0x38')]=_[_0x368b('0x3a')](_0x91bb0b['model'],_0x91bb0b[_0x368b('0x36')]);_0x4a0275[_0x368b('0x39')]=_[_0x368b('0x3a')](_0x91bb0b[_0x368b('0x35')],qs[_0x368b('0x3b')](_0x490eb6[_0x368b('0x36')][_0x368b('0x3b')]));_0x4a0275[_0x368b('0x39')]=_0x4a0275[_0x368b('0x39')][_0x368b('0x4a')]?_0x4a0275[_0x368b('0x39')]:_0x91bb0b[_0x368b('0x35')];if(_0x490eb6[_0x368b('0x36')]['includeAll']){_0x4a0275[_0x368b('0x4b')]=[{'all':!![]}];}_0x4a0275=_[_0x368b('0x42')]({},_0x4a0275,_0x490eb6[_0x368b('0x44')]);return db[_0x368b('0x30')][_0x368b('0x4c')](_0x4a0275)['then'](handleEntityNotFound(_0x151711,null))['then'](respondWithResult(_0x151711,null))[_0x368b('0x48')](handleError(_0x151711,null));};exports[_0x368b('0x4d')]=function(_0x1c8755,_0x5a9d70){return db[_0x368b('0x30')][_0x368b('0x4d')](_0x1c8755[_0x368b('0x4e')],{})[_0x368b('0x28')](respondWithResult(_0x5a9d70,0xc9))[_0x368b('0x48')](handleError(_0x5a9d70,null));};exports[_0x368b('0x27')]=function(_0x8f35b,_0x1174fa){if(_0x8f35b[_0x368b('0x4e')]['id']){delete _0x8f35b[_0x368b('0x4e')]['id'];}return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x8f35b['params']['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x1174fa,null))['then'](saveUpdates(_0x8f35b[_0x368b('0x4e')],null))['then'](respondWithResult(_0x1174fa,null))[_0x368b('0x48')](handleError(_0x1174fa,null));};exports[_0x368b('0x29')]=function(_0x3b8a12,_0x458d9a){return db['MailQueueReport'][_0x368b('0x4c')]({'where':{'id':_0x3b8a12[_0x368b('0x49')]['id']}})[_0x368b('0x28')](handleEntityNotFound(_0x458d9a,null))[_0x368b('0x28')](removeEntity(_0x458d9a,null))[_0x368b('0x48')](handleError(_0x458d9a,null));};exports[_0x368b('0x4f')]=function(_0x3898a8,_0x15078b){return db[_0x368b('0x30')]['describe']()[_0x368b('0x28')](respondWithResult(_0x15078b,null))[_0x368b('0x48')](handleError(_0x15078b,null));};
\ No newline at end of file
index ad79019..887eaa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbe60=['request-promise','path','rimraf','exports','define','MailQueueReport','report_mail_queue','uniqueid','lodash','util','../../config/logger','api'];(function(_0x1ca387,_0x705b0d){var _0x157aaf=function(_0x3db6bc){while(--_0x3db6bc){_0x1ca387['push'](_0x1ca387['shift']());}};_0x157aaf(++_0x705b0d);}(_0xbe60,0x1dc));var _0x0be6=function(_0x31765d,_0x2ebd7d){_0x31765d=_0x31765d-0x0;var _0x40f0e9=_0xbe60[_0x31765d];return _0x40f0e9;};'use strict';var _=require(_0x0be6('0x0'));var util=require(_0x0be6('0x1'));var logger=require(_0x0be6('0x2'))(_0x0be6('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0be6('0x4'));var fs=require('fs');var path=require(_0x0be6('0x5'));var rimraf=require(_0x0be6('0x6'));var config=require('../../config/environment');var attributes=require('./mailQueueReport.attributes');module[_0x0be6('0x7')]=function(_0x283cf3,_0x185b9b){return _0x283cf3[_0x0be6('0x8')](_0x0be6('0x9'),attributes,{'tableName':_0x0be6('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0be6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0f4f=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','MailQueueReport','report_mail_queue','uniqueid','util'];(function(_0xb84bcd,_0xb6f295){var _0x1933d5=function(_0x5846bb){while(--_0x5846bb){_0xb84bcd['push'](_0xb84bcd['shift']());}};_0x1933d5(++_0xb6f295);}(_0x0f4f,0x16a));var _0xf0f4=function(_0x809324,_0x3e5e0e){_0x809324=_0x809324-0x0;var _0x5b9c19=_0x0f4f[_0x809324];return _0x5b9c19;};'use strict';var _=require('lodash');var util=require(_0xf0f4('0x0'));var logger=require(_0xf0f4('0x1'))(_0xf0f4('0x2'));var moment=require(_0xf0f4('0x3'));var BPromise=require(_0xf0f4('0x4'));var rp=require(_0xf0f4('0x5'));var fs=require('fs');var path=require(_0xf0f4('0x6'));var rimraf=require('rimraf');var config=require(_0xf0f4('0x7'));var attributes=require('./mailQueueReport.attributes');module['exports']=function(_0x250ae0,_0x2ce5e7){return _0x250ae0['define'](_0xf0f4('0x8'),attributes,{'tableName':_0xf0f4('0x9'),'paranoid':![],'indexes':[{'name':_0xf0f4('0xa'),'fields':[_0xf0f4('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 89743b5..3399145 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x833842,_0x54b227){var _0x1c51e9=function(_0x3d3c0d){while(--_0x3d3c0d){_0x833842['push'](_0x833842['shift']());}};_0x1c51e9(++_0x54b227);}(_0xadb5,0xad));var _0x5adb=function(_0x122424,_0xba5dfe){_0x122424=_0x122424-0x0;var _0x3d02f5=_0xadb5[_0x122424];return _0x3d02f5;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
+var _0x7a54=['moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','MailQueueReport,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','MailQueueReport','create','body','options','raw','CreateMailQueueReport','UpdateMailQueueReport','update','where','attributes','limit','then','lodash','util'];(function(_0x3a80ff,_0x5c68c3){var _0x856aab=function(_0x3b6bc9){while(--_0x3b6bc9){_0x3a80ff['push'](_0x3a80ff['shift']());}};_0x856aab(++_0x5c68c3);}(_0x7a54,0x106));var _0x47a5=function(_0x5ecbaa,_0x211806){_0x5ecbaa=_0x5ecbaa-0x0;var _0x3575f0=_0x7a54[_0x5ecbaa];return _0x3575f0;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['CreateMailQueueReport']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')](_0x5247fd[_0x47a5('0x17')],{'raw':_0x5247fd[_0x47a5('0x18')]?_0x5247fd[_0x47a5('0x18')][_0x47a5('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x1570bc){logger[_0x47a5('0xb')]('CreateMailQueueReport',_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1a'),_0x5247fd,JSON[_0x47a5('0xe')](_0x1570bc));_0xaf70a6(_0x1570bc);})['catch'](function(_0xb8ae6c){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xb8ae6c[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81['error'](0x1f4,_0xb8ae6c[_0x47a5('0x11')]));});});};exports[_0x47a5('0x1b')]=function(_0x513981){var _0x28747d=this;return new Promise(function(_0xc4cd63,_0x4437f1){return db[_0x47a5('0x15')][_0x47a5('0x1c')](_0x513981['body'],{'raw':_0x513981['options']?_0x513981[_0x47a5('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x513981[_0x47a5('0x18')]?_0x513981['options'][_0x47a5('0x1d')]||null:null,'attributes':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1e')]||null:null,'limit':_0x513981[_0x47a5('0x18')]?_0x513981[_0x47a5('0x18')][_0x47a5('0x1f')]||null:null})[_0x47a5('0x20')](function(_0x16631f){logger[_0x47a5('0xb')](_0x47a5('0x1b'),_0x513981);logger[_0x47a5('0xd')](_0x47a5('0x1b'),_0x513981,JSON['stringify'](_0x16631f));_0xc4cd63(_0x16631f);})[_0x47a5('0x14')](function(_0x51833b){logger[_0x47a5('0xf')](_0x47a5('0x1b'),_0x51833b[_0x47a5('0x11')],_0x513981);_0x4437f1(_0x28747d['error'](0x1f4,_0x51833b[_0x47a5('0x11')]));});});};
\ No newline at end of file
index eba9d7b..ba09a9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5e895f,_0x3167d7){var _0x1a6d33=function(_0x1a2c4c){while(--_0x1a2c4c){_0x5e895f['push'](_0x5e895f['shift']());}};_0x1a6d33(++_0x3167d7);}(_0x9c44,0x178));var _0x49c4=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x9c44[_0x273c39];return _0x46d6b5;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
+var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x54eb31,_0x3225cc){var _0x444048=function(_0x4e8cd9){while(--_0x4e8cd9){_0x54eb31['push'](_0x54eb31['shift']());}};_0x444048(++_0x3225cc);}(_0x70e0,0x17b));var _0x070e=function(_0x417099,_0x43acb0){_0x417099=_0x417099-0x0;var _0x36f3e7=_0x70e0[_0x417099];return _0x36f3e7;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
index d2a12a7..44d6da0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cad=['INTEGER','BOOLEAN','INBOX','sequelize','exports','STRING'];(function(_0x125aa4,_0x195520){var _0x485b95=function(_0x1d0ee9){while(--_0x1d0ee9){_0x125aa4['push'](_0x125aa4['shift']());}};_0x485b95(++_0x195520);}(_0x6cad,0x1e9));var _0xd6ca=function(_0x2fe459,_0x1db4a9){_0x2fe459=_0x2fe459-0x0;var _0x5bd8a3=_0x6cad[_0x2fe459];return _0x5bd8a3;};'use strict';var Sequelize=require(_0xd6ca('0x0'));module[_0xd6ca('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xd6ca('0x2')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0xd6ca('0x2')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xd6ca('0x3')]},'tls':{'type':Sequelize[_0xd6ca('0x4')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0xd6ca('0x5')},'connTimeout':{'type':Sequelize[_0xd6ca('0x3')],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0xd6ca('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0xd6ca('0x2')]},'modernAuthentication':{'type':Sequelize[_0xd6ca('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4f04=['STRING','BOOLEAN','INTEGER','INBOX','exports'];(function(_0x56e0e5,_0x2e3937){var _0x27bb15=function(_0x186336){while(--_0x186336){_0x56e0e5['push'](_0x56e0e5['shift']());}};_0x27bb15(++_0x2e3937);}(_0x4f04,0xb3));var _0x44f0=function(_0x5f3b51,_0x90d389){_0x5f3b51=_0x5f3b51-0x0;var _0x43f8ed=_0x4f04[_0x5f3b51];return _0x43f8ed;};'use strict';var Sequelize=require('sequelize');module[_0x44f0('0x0')]={'description':{'type':Sequelize[_0x44f0('0x1')]},'host':{'type':Sequelize[_0x44f0('0x1')]},'authentication':{'type':Sequelize[_0x44f0('0x2')],'defaultValue':!![]},'user':{'type':Sequelize[_0x44f0('0x1')]},'password':{'type':Sequelize[_0x44f0('0x1')]},'port':{'type':Sequelize[_0x44f0('0x3')]},'tls':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x44f0('0x1')],'defaultValue':_0x44f0('0x4')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize[_0x44f0('0x3')],'defaultValue':0x5},'service':{'type':Sequelize[_0x44f0('0x1')]},'modernAuthentication':{'type':Sequelize[_0x44f0('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 5057a77..58f481a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e09=['rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn','lodash','util','../../config/logger','api','path'];(function(_0x3d587f,_0x3ccaf4){var _0x2d1087=function(_0x55688b){while(--_0x55688b){_0x3d587f['push'](_0x3d587f['shift']());}};_0x2d1087(++_0x3ccaf4);}(_0x5e09,0x192));var _0x95e0=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x5e09[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x95e0('0x0'));var util=require(_0x95e0('0x1'));var logger=require(_0x95e0('0x2'))(_0x95e0('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x95e0('0x4'));var rimraf=require(_0x95e0('0x5'));var config=require(_0x95e0('0x6'));var attributes=require(_0x95e0('0x7'));module[_0x95e0('0x8')]=function(_0x459d71,_0x2f10e9){return _0x459d71[_0x95e0('0x9')](_0x95e0('0xa'),attributes,{'tableName':'mail_servers_in','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc45c=['../../config/logger','api','moment','bluebird','request-promise','../../config/environment','exports','define','mail_servers_in','lodash','util'];(function(_0x666640,_0x4d51f3){var _0x34f5d2=function(_0x3a008e){while(--_0x3a008e){_0x666640['push'](_0x666640['shift']());}};_0x34f5d2(++_0x4d51f3);}(_0xc45c,0xda));var _0xcc45=function(_0x5d409e,_0x410c18){_0x5d409e=_0x5d409e-0x0;var _0xd20f8b=_0xc45c[_0x5d409e];return _0xd20f8b;};'use strict';var _=require(_0xcc45('0x0'));var util=require(_0xcc45('0x1'));var logger=require(_0xcc45('0x2'))(_0xcc45('0x3'));var moment=require(_0xcc45('0x4'));var BPromise=require(_0xcc45('0x5'));var rp=require(_0xcc45('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcc45('0x7'));var attributes=require('./mailServerIn.attributes');module[_0xcc45('0x8')]=function(_0x2944a8,_0x435f55){return _0x2944a8[_0xcc45('0x9')]('MailServerIn',attributes,{'tableName':_0xcc45('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7734233..dbf19e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c48=['request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','findAll','options','raw','where','attributes','include','map','model','debug','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','then','info','MailServerIn,\x20%s,\x20%s'];(function(_0x31d6fd,_0x4bc8e0){var _0x4d4812=function(_0x3aa6ab){while(--_0x3aa6ab){_0x31d6fd['push'](_0x31d6fd['shift']());}};_0x4d4812(++_0x4bc8e0);}(_0x4c48,0x1e4));var _0x84c4=function(_0x99ff94,_0x47a1b1){_0x99ff94=_0x99ff94-0x0;var _0x1b5bc0=_0x4c48[_0x99ff94];return _0x1b5bc0;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x84c4('0x0'));var BPromise=require(_0x84c4('0x1'));var rs=require(_0x84c4('0x2'));var fs=require('fs');var Redis=require(_0x84c4('0x3'));var db=require(_0x84c4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x84c4('0x5'));var config=require(_0x84c4('0x6'));var jayson=require(_0x84c4('0x7'));var client=jayson[_0x84c4('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2c8233,_0x36d5e1,_0x556671){return new BPromise(function(_0xe000ec,_0x4a0604){return client['request'](_0x2c8233,_0x556671)[_0x84c4('0x9')](function(_0x3882ac){logger[_0x84c4('0xa')](_0x84c4('0xb'),_0x36d5e1,_0x84c4('0xc'));logger['debug'](_0x84c4('0xd'),_0x36d5e1,_0x84c4('0xc'),JSON[_0x84c4('0xe')](_0x3882ac));if(_0x3882ac['error']){if(_0x3882ac[_0x84c4('0xf')][_0x84c4('0x10')]===0x1f4){logger[_0x84c4('0xf')](_0x84c4('0xb'),_0x36d5e1,_0x3882ac['error'][_0x84c4('0x11')]);return _0x4a0604(_0x3882ac['error'][_0x84c4('0x11')]);}logger[_0x84c4('0xf')]('MailServerIn,\x20%s,\x20%s',_0x36d5e1,_0x3882ac['error'][_0x84c4('0x11')]);return _0xe000ec(_0x3882ac['error'][_0x84c4('0x11')]);}else{logger[_0x84c4('0xa')]('MailServerIn,\x20%s,\x20%s',_0x36d5e1,_0x84c4('0xc'));_0xe000ec(_0x3882ac[_0x84c4('0x12')][_0x84c4('0x11')]);}})[_0x84c4('0x13')](function(_0x2e388a){logger[_0x84c4('0xf')]('MailServerIn,\x20%s,\x20%s',_0x36d5e1,_0x2e388a);_0x4a0604(_0x2e388a);});});}exports[_0x84c4('0x14')]=function(_0x3b70a7){var _0x5f17aa=this;return new Promise(function(_0x5b778f,_0x36120e){return db[_0x84c4('0x15')][_0x84c4('0x16')]({'raw':_0x3b70a7[_0x84c4('0x17')]?_0x3b70a7[_0x84c4('0x17')][_0x84c4('0x18')]===undefined?!![]:![]:!![],'where':_0x3b70a7[_0x84c4('0x17')]?_0x3b70a7[_0x84c4('0x17')][_0x84c4('0x19')]||null:null,'attributes':_0x3b70a7[_0x84c4('0x17')]?_0x3b70a7[_0x84c4('0x17')][_0x84c4('0x1a')]||null:null,'limit':_0x3b70a7[_0x84c4('0x17')]?_0x3b70a7[_0x84c4('0x17')]['limit']||null:null,'include':_0x3b70a7[_0x84c4('0x17')]?_0x3b70a7[_0x84c4('0x17')][_0x84c4('0x1b')]?_[_0x84c4('0x1c')](_0x3b70a7['options'][_0x84c4('0x1b')],function(_0x98c864){return{'model':db[_0x98c864[_0x84c4('0x1d')]],'as':_0x98c864['as'],'attributes':_0x98c864['attributes'],'include':_0x98c864[_0x84c4('0x1b')]?_[_0x84c4('0x1c')](_0x98c864[_0x84c4('0x1b')],function(_0x46c126){return{'model':db[_0x46c126[_0x84c4('0x1d')]],'as':_0x46c126['as'],'attributes':_0x46c126[_0x84c4('0x1a')],'include':_0x46c126[_0x84c4('0x1b')]?_[_0x84c4('0x1c')](_0x46c126['include'],function(_0x196d4d){return{'model':db[_0x196d4d[_0x84c4('0x1d')]],'as':_0x196d4d['as'],'attributes':_0x196d4d[_0x84c4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x84c4('0x9')](function(_0xabaf06){logger[_0x84c4('0xa')](_0x84c4('0x14'),_0x3b70a7);logger[_0x84c4('0x1e')]('GetMailServerIn',_0x3b70a7,JSON['stringify'](_0xabaf06));_0x5b778f(_0xabaf06);})['catch'](function(_0xb9fc8a){logger[_0x84c4('0xf')](_0x84c4('0x14'),_0xb9fc8a[_0x84c4('0x11')],_0x3b70a7);_0x36120e(_0x5f17aa[_0x84c4('0xf')](0x1f4,_0xb9fc8a[_0x84c4('0x11')]));});});};
\ No newline at end of file
+var _0xc16b=['http','request','info','MailServerIn,\x20%s,\x20%s','debug','MailServerIn,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetMailServerIn','MailServerIn','findAll','options','attributes','limit','include','model','map','then','catch','lodash','util','moment','bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client'];(function(_0x269704,_0x4dc549){var _0x3f2385=function(_0x29ae81){while(--_0x29ae81){_0x269704['push'](_0x269704['shift']());}};_0x3f2385(++_0x4dc549);}(_0xc16b,0x76));var _0xbc16=function(_0x366391,_0x984cc3){_0x366391=_0x366391-0x0;var _0x733029=_0xc16b[_0x366391];return _0x733029;};'use strict';var _=require(_0xbc16('0x0'));var util=require(_0xbc16('0x1'));var moment=require(_0xbc16('0x2'));var BPromise=require(_0xbc16('0x3'));var rs=require(_0xbc16('0x4'));var fs=require('fs');var Redis=require(_0xbc16('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xbc16('0x6'));var config=require(_0xbc16('0x7'));var jayson=require(_0xbc16('0x8'));var client=jayson[_0xbc16('0x9')][_0xbc16('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1609fa,_0x5bae11,_0x29329f){return new BPromise(function(_0x40db0a,_0x3338d0){return client[_0xbc16('0xb')](_0x1609fa,_0x29329f)['then'](function(_0x138009){logger[_0xbc16('0xc')](_0xbc16('0xd'),_0x5bae11,'request\x20sent');logger[_0xbc16('0xe')](_0xbc16('0xf'),_0x5bae11,_0xbc16('0x10'),JSON[_0xbc16('0x11')](_0x138009));if(_0x138009[_0xbc16('0x12')]){if(_0x138009[_0xbc16('0x12')]['code']===0x1f4){logger[_0xbc16('0x12')](_0xbc16('0xd'),_0x5bae11,_0x138009['error']['message']);return _0x3338d0(_0x138009[_0xbc16('0x12')][_0xbc16('0x13')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x5bae11,_0x138009[_0xbc16('0x12')]['message']);return _0x40db0a(_0x138009[_0xbc16('0x12')][_0xbc16('0x13')]);}else{logger[_0xbc16('0xc')](_0xbc16('0xd'),_0x5bae11,_0xbc16('0x10'));_0x40db0a(_0x138009[_0xbc16('0x14')][_0xbc16('0x13')]);}})['catch'](function(_0x387c33){logger[_0xbc16('0x12')](_0xbc16('0xd'),_0x5bae11,_0x387c33);_0x3338d0(_0x387c33);});});}exports[_0xbc16('0x15')]=function(_0x1c92eb){var _0x3aae61=this;return new Promise(function(_0x4170f7,_0x18831e){return db[_0xbc16('0x16')][_0xbc16('0x17')]({'raw':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb['options']['where']||null:null,'attributes':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x19')]||null:null,'limit':_0x1c92eb[_0xbc16('0x18')]?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x1a')]||null:null,'include':_0x1c92eb['options']?_0x1c92eb[_0xbc16('0x18')][_0xbc16('0x1b')]?_['map'](_0x1c92eb[_0xbc16('0x18')]['include'],function(_0x1b7889){return{'model':db[_0x1b7889[_0xbc16('0x1c')]],'as':_0x1b7889['as'],'attributes':_0x1b7889[_0xbc16('0x19')],'include':_0x1b7889[_0xbc16('0x1b')]?_[_0xbc16('0x1d')](_0x1b7889['include'],function(_0x4b2a96){return{'model':db[_0x4b2a96['model']],'as':_0x4b2a96['as'],'attributes':_0x4b2a96[_0xbc16('0x19')],'include':_0x4b2a96[_0xbc16('0x1b')]?_['map'](_0x4b2a96[_0xbc16('0x1b')],function(_0x5b3201){return{'model':db[_0x5b3201[_0xbc16('0x1c')]],'as':_0x5b3201['as'],'attributes':_0x5b3201[_0xbc16('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbc16('0x1e')](function(_0x2f8db5){logger[_0xbc16('0xc')](_0xbc16('0x15'),_0x1c92eb);logger['debug'](_0xbc16('0x15'),_0x1c92eb,JSON['stringify'](_0x2f8db5));_0x4170f7(_0x2f8db5);})[_0xbc16('0x1f')](function(_0x429c26){logger[_0xbc16('0x12')](_0xbc16('0x15'),_0x429c26['message'],_0x1c92eb);_0x18831e(_0x3aae61['error'](0x1f4,_0x429c26[_0xbc16('0x13')]));});});};
\ No newline at end of file
index ef8e3f0..0ca5b6c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['index','/:id','isAuthenticated','post','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailServerOut.controller','get'];(function(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x7a54,0x106));var _0x47a5=function(_0x2103e2,_0x492016){_0x2103e2=_0x2103e2-0x0;var _0x5de4e5=_0x7a54[_0x2103e2];return _0x5de4e5;};'use strict';var multer=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var path=require(_0x47a5('0x2'));var timeout=require('connect-timeout');var express=require(_0x47a5('0x3'));var router=express[_0x47a5('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x47a5('0x5'));var interaction=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var controller=require(_0x47a5('0x8'));router[_0x47a5('0x9')]('/',auth['isAuthenticated'](),controller[_0x47a5('0xa')]);router['get'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['show']);router[_0x47a5('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x47a5('0xb'),auth[_0x47a5('0xc')](),controller['update']);router[_0x47a5('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x47a5('0xf')]);module[_0x47a5('0x10')]=router;
\ No newline at end of file
+var _0x9957=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailServerOut.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports'];(function(_0x2bf141,_0x31eac7){var _0x48277b=function(_0x9fe560){while(--_0x9fe560){_0x2bf141['push'](_0x2bf141['shift']());}};_0x48277b(++_0x31eac7);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0xe')]('/',auth['isAuthenticated'](),controller[_0x7995('0xf')]);router[_0x7995('0x10')](_0x7995('0xc'),auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router[_0x7995('0x12')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0x13')]);module[_0x7995('0x14')]=router;
\ No newline at end of file
index ba6c1e2..3064a7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfff0=['BOOLEAN','exports','STRING','INTEGER'];(function(_0xd5c427,_0x4fc029){var _0x5880dd=function(_0x329c2c){while(--_0x329c2c){_0xd5c427['push'](_0xd5c427['shift']());}};_0x5880dd(++_0x4fc029);}(_0xfff0,0x139));var _0x0fff=function(_0x32fab4,_0x25903f){_0x32fab4=_0x32fab4-0x0;var _0x38c2b5=_0xfff0[_0x32fab4];return _0x38c2b5;};'use strict';var Sequelize=require('sequelize');module[_0x0fff('0x0')]={'description':{'type':Sequelize[_0x0fff('0x1')]},'host':{'type':Sequelize[_0x0fff('0x1')]},'user':{'type':Sequelize['STRING']},'pass':{'type':Sequelize[_0x0fff('0x1')]},'port':{'type':Sequelize[_0x0fff('0x2')]},'secure':{'type':Sequelize[_0x0fff('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0x0fff('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0x0fff('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xac4a=['exports','STRING','BOOLEAN','sequelize'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0xac4a,0x13f));var _0xaac4=function(_0x17c285,_0x506e1b){_0x17c285=_0x17c285-0x0;var _0x49db7f=_0xac4a[_0x17c285];return _0x49db7f;};'use strict';var Sequelize=require(_0xaac4('0x0'));module[_0xaac4('0x1')]={'description':{'type':Sequelize[_0xaac4('0x2')]},'host':{'type':Sequelize[_0xaac4('0x2')]},'user':{'type':Sequelize[_0xaac4('0x2')]},'pass':{'type':Sequelize[_0xaac4('0x2')]},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'service':{'type':Sequelize[_0xaac4('0x2')]},'authentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize[_0xaac4('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 19d06b6..e99cabc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x362b=['../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','index','MailServerOut','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','keys','include','find','create','body','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x50619a,_0x188bac){var _0x3e851f=function(_0x510b39){while(--_0x510b39){_0x50619a['push'](_0x50619a['shift']());}};_0x3e851f(++_0x188bac);}(_0x362b,0x16c));var _0xb362=function(_0x37f604,_0x5115d2){_0x37f604=_0x37f604-0x0;var _0x47cf21=_0x362b[_0x37f604];return _0x47cf21;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb362('0x0'));var zipdir=require(_0xb362('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb362('0x2'));var moment=require(_0xb362('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb362('0x4'));var util=require(_0xb362('0x5'));var path=require(_0xb362('0x6'));var sox=require(_0xb362('0x7'));var csv=require(_0xb362('0x8'));var ejs=require(_0xb362('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xb362('0xa'));var crypto=require(_0xb362('0xb'));var jsforce=require(_0xb362('0xc'));var deskjs=require(_0xb362('0xd'));var toCsv=require('to-csv');var querystring=require(_0xb362('0xe'));var Papa=require(_0xb362('0xf'));var Redis=require(_0xb362('0x10'));var authService=require(_0xb362('0x11'));var qs=require(_0xb362('0x12'));var as=require(_0xb362('0x13'));var hardwareService=require(_0xb362('0x14'));var logger=require(_0xb362('0x15'))(_0xb362('0x16'));var utils=require(_0xb362('0x17'));var config=require(_0xb362('0x18'));var licenseUtil=require(_0xb362('0x19'));var db=require(_0xb362('0x1a'))['db'];function respondWithStatusCode(_0x1df6c0,_0x5375c5){_0x5375c5=_0x5375c5||0xcc;return function(_0x16d7e8){if(_0x16d7e8){return _0x1df6c0[_0xb362('0x1b')](_0x5375c5);}return _0x1df6c0[_0xb362('0x1c')](_0x5375c5)[_0xb362('0x1d')]();};}function respondWithResult(_0x10e023,_0x2573b6){_0x2573b6=_0x2573b6||0xc8;return function(_0x417465){if(_0x417465){return _0x10e023['status'](_0x2573b6)['json'](_0x417465);}};}function respondWithFilteredResult(_0x2c76fe,_0x4e75e7){return function(_0x5a5fe1){if(_0x5a5fe1){var _0x512c53=typeof _0x4e75e7[_0xb362('0x1e')]===_0xb362('0x1f')&&typeof _0x4e75e7[_0xb362('0x20')]===_0xb362('0x1f');var _0x3907b3=_0x5a5fe1[_0xb362('0x21')];var _0x5d3f02=_0x512c53?0x0:_0x4e75e7[_0xb362('0x1e')];var _0x359d63=_0x512c53?_0x5a5fe1[_0xb362('0x21')]:_0x4e75e7[_0xb362('0x1e')]+_0x4e75e7[_0xb362('0x20')];var _0x54958b;if(_0x359d63>=_0x3907b3){_0x359d63=_0x3907b3;_0x54958b=0xc8;}else{_0x54958b=0xce;}_0x2c76fe[_0xb362('0x1c')](_0x54958b);return _0x2c76fe['set'](_0xb362('0x22'),_0x5d3f02+'-'+_0x359d63+'/'+_0x3907b3)[_0xb362('0x23')](_0x5a5fe1);}return null;};}function patchUpdates(_0xcff6aa){return function(_0xb32644){try{jsonpatch[_0xb362('0x24')](_0xb32644,_0xcff6aa,!![]);}catch(_0x2ac0f7){return BPromise[_0xb362('0x25')](_0x2ac0f7);}return _0xb32644[_0xb362('0x26')]();};}function saveUpdates(_0x11f04c,_0x54338a){return function(_0x495ecd){if(_0x495ecd){return _0x495ecd['update'](_0x11f04c)[_0xb362('0x27')](function(_0x45b34e){return _0x45b34e;});}return null;};}function removeEntity(_0x34bbab,_0x23202e){return function(_0x51aa05){if(_0x51aa05){return _0x51aa05[_0xb362('0x28')]()[_0xb362('0x27')](function(){_0x34bbab[_0xb362('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x270a60,_0x570756){return function(_0x388173){if(!_0x388173){_0x270a60[_0xb362('0x1b')](0x194);}return _0x388173;};}function handleError(_0x1b682e,_0x1cf566){_0x1cf566=_0x1cf566||0x1f4;return function(_0x25de27){logger[_0xb362('0x29')](_0x25de27[_0xb362('0x2a')]);if(_0x25de27[_0xb362('0x2b')]){delete _0x25de27[_0xb362('0x2b')];}_0x1b682e[_0xb362('0x1c')](_0x1cf566)['send'](_0x25de27);};}exports[_0xb362('0x2c')]=function(_0x3351d2,_0xea82d9){var _0x3b0b04={},_0x360f42={},_0x590d8f={'count':0x0,'rows':[]};var _0x2c0a51=_['map'](db[_0xb362('0x2d')]['rawAttributes'],function(_0x6fbf43){return{'name':_0x6fbf43[_0xb362('0x2e')],'type':_0x6fbf43[_0xb362('0x2f')][_0xb362('0x30')]};});_0x360f42[_0xb362('0x31')]=_[_0xb362('0x32')](_0x2c0a51,_0xb362('0x2b'));_0x360f42[_0xb362('0x33')]=_['keys'](_0x3351d2[_0xb362('0x33')]);_0x360f42[_0xb362('0x34')]=_[_0xb362('0x35')](_0x360f42['model'],_0x360f42['query']);_0x3b0b04['attributes']=_[_0xb362('0x35')](_0x360f42['model'],qs[_0xb362('0x36')](_0x3351d2[_0xb362('0x33')][_0xb362('0x36')]));_0x3b0b04[_0xb362('0x37')]=_0x3b0b04['attributes'][_0xb362('0x38')]?_0x3b0b04[_0xb362('0x37')]:_0x360f42[_0xb362('0x31')];if(!_0x3351d2[_0xb362('0x33')]['hasOwnProperty'](_0xb362('0x39'))){_0x3b0b04[_0xb362('0x20')]=qs[_0xb362('0x20')](_0x3351d2[_0xb362('0x33')][_0xb362('0x20')]);_0x3b0b04[_0xb362('0x1e')]=qs[_0xb362('0x1e')](_0x3351d2['query'][_0xb362('0x1e')]);}_0x3b0b04[_0xb362('0x3a')]=qs['sort'](_0x3351d2[_0xb362('0x33')][_0xb362('0x3b')]);_0x3b0b04[_0xb362('0x3c')]=qs['filters'](_[_0xb362('0x3d')](_0x3351d2[_0xb362('0x33')],_0x360f42[_0xb362('0x34')]),_0x2c0a51);if(_0x3351d2['query'][_0xb362('0x3e')]){_0x3b0b04[_0xb362('0x3c')]=_[_0xb362('0x3f')](_0x3b0b04[_0xb362('0x3c')],{'$or':_[_0xb362('0x32')](_0x2c0a51,function(_0x39a40c){if(_0x39a40c[_0xb362('0x2f')]!==_0xb362('0x40')){var _0x5113e0={};_0x5113e0[_0x39a40c['name']]={'$like':'%'+_0x3351d2['query'][_0xb362('0x3e')]+'%'};return _0x5113e0;}})});}_0x3b0b04=_[_0xb362('0x3f')]({},_0x3b0b04,_0x3351d2[_0xb362('0x41')]);var _0x274b8e={'where':_0x3b0b04[_0xb362('0x3c')]};return db[_0xb362('0x2d')][_0xb362('0x21')](_0x274b8e)[_0xb362('0x27')](function(_0x1834f5){_0x590d8f[_0xb362('0x21')]=_0x1834f5;if(_0x3351d2[_0xb362('0x33')][_0xb362('0x42')]){_0x3b0b04['include']=[{'all':!![]}];}return db[_0xb362('0x2d')][_0xb362('0x43')](_0x3b0b04);})['then'](function(_0xbb2fa){_0x590d8f[_0xb362('0x44')]=_0xbb2fa;return _0x590d8f;})['then'](respondWithFilteredResult(_0xea82d9,_0x3b0b04))[_0xb362('0x45')](handleError(_0xea82d9,null));};exports[_0xb362('0x46')]=function(_0x17b251,_0x2fa49b){var _0x3d1847={'raw':!![],'where':{'id':_0x17b251[_0xb362('0x47')]['id']}},_0x86735d={};_0x86735d[_0xb362('0x31')]=_['keys'](db[_0xb362('0x2d')][_0xb362('0x48')]);_0x86735d[_0xb362('0x33')]=_[_0xb362('0x49')](_0x17b251['query']);_0x86735d[_0xb362('0x34')]=_[_0xb362('0x35')](_0x86735d[_0xb362('0x31')],_0x86735d['query']);_0x3d1847[_0xb362('0x37')]=_[_0xb362('0x35')](_0x86735d[_0xb362('0x31')],qs[_0xb362('0x36')](_0x17b251[_0xb362('0x33')]['fields']));_0x3d1847[_0xb362('0x37')]=_0x3d1847['attributes'][_0xb362('0x38')]?_0x3d1847[_0xb362('0x37')]:_0x86735d['model'];if(_0x17b251[_0xb362('0x33')][_0xb362('0x42')]){_0x3d1847[_0xb362('0x4a')]=[{'all':!![]}];}_0x3d1847=_['merge']({},_0x3d1847,_0x17b251[_0xb362('0x41')]);return db[_0xb362('0x2d')][_0xb362('0x4b')](_0x3d1847)['then'](handleEntityNotFound(_0x2fa49b,null))[_0xb362('0x27')](respondWithResult(_0x2fa49b,null))[_0xb362('0x45')](handleError(_0x2fa49b,null));};exports['create']=function(_0x34dac0,_0x11c1d0){return db['MailServerOut'][_0xb362('0x4c')](_0x34dac0[_0xb362('0x4d')],{})[_0xb362('0x27')](respondWithResult(_0x11c1d0,0xc9))[_0xb362('0x45')](handleError(_0x11c1d0,null));};exports['update']=function(_0x34b59d,_0x51d5ce){if(_0x34b59d[_0xb362('0x4d')]['id']){delete _0x34b59d[_0xb362('0x4d')]['id'];}return db['MailServerOut'][_0xb362('0x4b')]({'where':{'id':_0x34b59d[_0xb362('0x47')]['id']}})[_0xb362('0x27')](handleEntityNotFound(_0x51d5ce,null))['then'](saveUpdates(_0x34b59d[_0xb362('0x4d')],null))[_0xb362('0x27')](respondWithResult(_0x51d5ce,null))[_0xb362('0x45')](handleError(_0x51d5ce,null));};exports[_0xb362('0x28')]=function(_0x22fe6b,_0x2d70a7){return db['MailServerOut'][_0xb362('0x4b')]({'where':{'id':_0x22fe6b[_0xb362('0x47')]['id']}})[_0xb362('0x27')](handleEntityNotFound(_0x2d70a7,null))['then'](removeEntity(_0x2d70a7,null))['catch'](handleError(_0x2d70a7,null));};
\ No newline at end of file
+var _0x10fc=['show','params','keys','length','catch','create','body','find','destroy','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','rows'];(function(_0x3720d3,_0x3165d3){var _0xcb861b=function(_0x13f21c){while(--_0x13f21c){_0x3720d3['push'](_0x3720d3['shift']());}};_0xcb861b(++_0x3165d3);}(_0x10fc,0xe7));var _0xc10f=function(_0x3e6463,_0x22f2b6){_0x3e6463=_0x3e6463-0x0;var _0x301db3=_0x10fc[_0x3e6463];return _0x301db3;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc10f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc10f('0x1'));var rp=require(_0xc10f('0x2'));var moment=require(_0xc10f('0x3'));var BPromise=require(_0xc10f('0x4'));var Mustache=require(_0xc10f('0x5'));var util=require(_0xc10f('0x6'));var path=require(_0xc10f('0x7'));var sox=require(_0xc10f('0x8'));var csv=require(_0xc10f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc10f('0xa'));var _=require('lodash');var squel=require(_0xc10f('0xb'));var crypto=require(_0xc10f('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xc10f('0x9'));var querystring=require(_0xc10f('0xd'));var Papa=require(_0xc10f('0xe'));var Redis=require(_0xc10f('0xf'));var authService=require(_0xc10f('0x10'));var qs=require(_0xc10f('0x11'));var as=require(_0xc10f('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc10f('0x13'))('api');var utils=require(_0xc10f('0x14'));var config=require(_0xc10f('0x15'));var licenseUtil=require(_0xc10f('0x16'));var db=require(_0xc10f('0x17'))['db'];function respondWithStatusCode(_0x1c1069,_0xe11147){_0xe11147=_0xe11147||0xcc;return function(_0x3c8613){if(_0x3c8613){return _0x1c1069['sendStatus'](_0xe11147);}return _0x1c1069[_0xc10f('0x18')](_0xe11147)['end']();};}function respondWithResult(_0x501f0d,_0x3cce96){_0x3cce96=_0x3cce96||0xc8;return function(_0x79ed12){if(_0x79ed12){return _0x501f0d[_0xc10f('0x18')](_0x3cce96)[_0xc10f('0x19')](_0x79ed12);}};}function respondWithFilteredResult(_0x428f28,_0x4d793b){return function(_0x2ac9fc){if(_0x2ac9fc){var _0x19990a=typeof _0x4d793b[_0xc10f('0x1a')]===_0xc10f('0x1b')&&typeof _0x4d793b['limit']===_0xc10f('0x1b');var _0x41f287=_0x2ac9fc['count'];var _0x3b2e9c=_0x19990a?0x0:_0x4d793b['offset'];var _0x4776af=_0x19990a?_0x2ac9fc[_0xc10f('0x1c')]:_0x4d793b[_0xc10f('0x1a')]+_0x4d793b[_0xc10f('0x1d')];var _0x1eb245;if(_0x4776af>=_0x41f287){_0x4776af=_0x41f287;_0x1eb245=0xc8;}else{_0x1eb245=0xce;}_0x428f28[_0xc10f('0x18')](_0x1eb245);return _0x428f28['set'](_0xc10f('0x1e'),_0x3b2e9c+'-'+_0x4776af+'/'+_0x41f287)[_0xc10f('0x19')](_0x2ac9fc);}return null;};}function patchUpdates(_0x3035d4){return function(_0x1fc799){try{jsonpatch[_0xc10f('0x1f')](_0x1fc799,_0x3035d4,!![]);}catch(_0x59514a){return BPromise[_0xc10f('0x20')](_0x59514a);}return _0x1fc799[_0xc10f('0x21')]();};}function saveUpdates(_0x43eb85,_0x4972a4){return function(_0x1112c7){if(_0x1112c7){return _0x1112c7['update'](_0x43eb85)[_0xc10f('0x22')](function(_0xb143cb){return _0xb143cb;});}return null;};}function removeEntity(_0x1559d6,_0xbddbb3){return function(_0x4b83d2){if(_0x4b83d2){return _0x4b83d2['destroy']()[_0xc10f('0x22')](function(){_0x1559d6[_0xc10f('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x150cc3,_0xfe889c){return function(_0xbf5c12){if(!_0xbf5c12){_0x150cc3['sendStatus'](0x194);}return _0xbf5c12;};}function handleError(_0x92cc78,_0x36a8d5){_0x36a8d5=_0x36a8d5||0x1f4;return function(_0x2c1913){logger[_0xc10f('0x23')](_0x2c1913[_0xc10f('0x24')]);if(_0x2c1913[_0xc10f('0x25')]){delete _0x2c1913[_0xc10f('0x25')];}_0x92cc78['status'](_0x36a8d5)[_0xc10f('0x26')](_0x2c1913);};}exports[_0xc10f('0x27')]=function(_0x4bd06a,_0x49892f){var _0x15f837={},_0x34d1d7={},_0xdf4a7f={'count':0x0,'rows':[]};var _0x28a9d8=_[_0xc10f('0x28')](db[_0xc10f('0x29')][_0xc10f('0x2a')],function(_0x1f40b7){return{'name':_0x1f40b7[_0xc10f('0x2b')],'type':_0x1f40b7[_0xc10f('0x2c')][_0xc10f('0x2d')]};});_0x34d1d7[_0xc10f('0x2e')]=_[_0xc10f('0x28')](_0x28a9d8,_0xc10f('0x25'));_0x34d1d7[_0xc10f('0x2f')]=_['keys'](_0x4bd06a[_0xc10f('0x2f')]);_0x34d1d7['filters']=_['intersection'](_0x34d1d7[_0xc10f('0x2e')],_0x34d1d7[_0xc10f('0x2f')]);_0x15f837['attributes']=_[_0xc10f('0x30')](_0x34d1d7[_0xc10f('0x2e')],qs[_0xc10f('0x31')](_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x31')]));_0x15f837[_0xc10f('0x32')]=_0x15f837[_0xc10f('0x32')]['length']?_0x15f837[_0xc10f('0x32')]:_0x34d1d7[_0xc10f('0x2e')];if(!_0x4bd06a['query'][_0xc10f('0x33')](_0xc10f('0x34'))){_0x15f837['limit']=qs[_0xc10f('0x1d')](_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x1d')]);_0x15f837['offset']=qs[_0xc10f('0x1a')](_0x4bd06a['query']['offset']);}_0x15f837[_0xc10f('0x35')]=qs[_0xc10f('0x36')](_0x4bd06a['query'][_0xc10f('0x36')]);_0x15f837[_0xc10f('0x37')]=qs[_0xc10f('0x38')](_[_0xc10f('0x39')](_0x4bd06a['query'],_0x34d1d7[_0xc10f('0x38')]),_0x28a9d8);if(_0x4bd06a['query'][_0xc10f('0x3a')]){_0x15f837['where']=_['merge'](_0x15f837[_0xc10f('0x37')],{'$or':_[_0xc10f('0x28')](_0x28a9d8,function(_0x2fab2e){if(_0x2fab2e[_0xc10f('0x2c')]!==_0xc10f('0x3b')){var _0x206c84={};_0x206c84[_0x2fab2e['name']]={'$like':'%'+_0x4bd06a[_0xc10f('0x2f')][_0xc10f('0x3a')]+'%'};return _0x206c84;}})});}_0x15f837=_[_0xc10f('0x3c')]({},_0x15f837,_0x4bd06a[_0xc10f('0x3d')]);var _0x13a83a={'where':_0x15f837['where']};return db['MailServerOut'][_0xc10f('0x1c')](_0x13a83a)[_0xc10f('0x22')](function(_0x2bf029){_0xdf4a7f['count']=_0x2bf029;if(_0x4bd06a['query'][_0xc10f('0x3e')]){_0x15f837[_0xc10f('0x3f')]=[{'all':!![]}];}return db[_0xc10f('0x29')]['findAll'](_0x15f837);})[_0xc10f('0x22')](function(_0x2674b0){_0xdf4a7f[_0xc10f('0x40')]=_0x2674b0;return _0xdf4a7f;})[_0xc10f('0x22')](respondWithFilteredResult(_0x49892f,_0x15f837))['catch'](handleError(_0x49892f,null));};exports[_0xc10f('0x41')]=function(_0x5e2e64,_0x4e3042){var _0x497cd4={'raw':!![],'where':{'id':_0x5e2e64[_0xc10f('0x42')]['id']}},_0x220a49={};_0x220a49[_0xc10f('0x2e')]=_[_0xc10f('0x43')](db[_0xc10f('0x29')][_0xc10f('0x2a')]);_0x220a49['query']=_[_0xc10f('0x43')](_0x5e2e64[_0xc10f('0x2f')]);_0x220a49[_0xc10f('0x38')]=_[_0xc10f('0x30')](_0x220a49[_0xc10f('0x2e')],_0x220a49[_0xc10f('0x2f')]);_0x497cd4['attributes']=_[_0xc10f('0x30')](_0x220a49['model'],qs[_0xc10f('0x31')](_0x5e2e64[_0xc10f('0x2f')][_0xc10f('0x31')]));_0x497cd4['attributes']=_0x497cd4[_0xc10f('0x32')][_0xc10f('0x44')]?_0x497cd4[_0xc10f('0x32')]:_0x220a49['model'];if(_0x5e2e64[_0xc10f('0x2f')][_0xc10f('0x3e')]){_0x497cd4[_0xc10f('0x3f')]=[{'all':!![]}];}_0x497cd4=_['merge']({},_0x497cd4,_0x5e2e64[_0xc10f('0x3d')]);return db[_0xc10f('0x29')]['find'](_0x497cd4)['then'](handleEntityNotFound(_0x4e3042,null))['then'](respondWithResult(_0x4e3042,null))[_0xc10f('0x45')](handleError(_0x4e3042,null));};exports['create']=function(_0x4a6b2c,_0x362aaa){return db[_0xc10f('0x29')][_0xc10f('0x46')](_0x4a6b2c[_0xc10f('0x47')],{})['then'](respondWithResult(_0x362aaa,0xc9))['catch'](handleError(_0x362aaa,null));};exports['update']=function(_0x5d733c,_0x3985f6){if(_0x5d733c['body']['id']){delete _0x5d733c[_0xc10f('0x47')]['id'];}return db[_0xc10f('0x29')][_0xc10f('0x48')]({'where':{'id':_0x5d733c[_0xc10f('0x42')]['id']}})[_0xc10f('0x22')](handleEntityNotFound(_0x3985f6,null))[_0xc10f('0x22')](saveUpdates(_0x5d733c[_0xc10f('0x47')],null))[_0xc10f('0x22')](respondWithResult(_0x3985f6,null))['catch'](handleError(_0x3985f6,null));};exports[_0xc10f('0x49')]=function(_0x52312e,_0x3e8c61){return db[_0xc10f('0x29')][_0xc10f('0x48')]({'where':{'id':_0x52312e['params']['id']}})[_0xc10f('0x22')](handleEntityNotFound(_0x3e8c61,null))[_0xc10f('0x22')](removeEntity(_0x3e8c61,null))[_0xc10f('0x45')](handleError(_0x3e8c61,null));};
\ No newline at end of file
index 652bacf..8254d05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf391=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','MailServerOut'];(function(_0x1d6037,_0x47f30c){var _0x342fc1=function(_0xc92586){while(--_0xc92586){_0x1d6037['push'](_0x1d6037['shift']());}};_0x342fc1(++_0x47f30c);}(_0xf391,0x1b8));var _0x1f39=function(_0x161729,_0x5743ed){_0x161729=_0x161729-0x0;var _0x3e93e6=_0xf391[_0x161729];return _0x3e93e6;};'use strict';var _=require(_0x1f39('0x0'));var util=require(_0x1f39('0x1'));var logger=require(_0x1f39('0x2'))(_0x1f39('0x3'));var moment=require(_0x1f39('0x4'));var BPromise=require(_0x1f39('0x5'));var rp=require(_0x1f39('0x6'));var fs=require('fs');var path=require(_0x1f39('0x7'));var rimraf=require('rimraf');var config=require(_0x1f39('0x8'));var attributes=require('./mailServerOut.attributes');module[_0x1f39('0x9')]=function(_0x818858,_0x2c5a87){return _0x818858['define'](_0x1f39('0xa'),attributes,{'tableName':'mail_servers_out','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafae=['../../config/logger','moment','bluebird','rimraf','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash'];(function(_0x6c92f9,_0x2dcaf8){var _0x12c590=function(_0x4409dd){while(--_0x4409dd){_0x6c92f9['push'](_0x6c92f9['shift']());}};_0x12c590(++_0x2dcaf8);}(_0xafae,0xf9));var _0xeafa=function(_0x544b39,_0x48663f){_0x544b39=_0x544b39-0x0;var _0x3d6cf4=_0xafae[_0x544b39];return _0x3d6cf4;};'use strict';var _=require(_0xeafa('0x0'));var util=require('util');var logger=require(_0xeafa('0x1'))('api');var moment=require(_0xeafa('0x2'));var BPromise=require(_0xeafa('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xeafa('0x4'));var config=require('../../config/environment');var attributes=require(_0xeafa('0x5'));module[_0xeafa('0x6')]=function(_0x73bf5e,_0x4e2ba8){return _0x73bf5e[_0xeafa('0x7')](_0xeafa('0x8'),attributes,{'tableName':_0xeafa('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c894c42..a6f6fd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailServerOut,\x20%s,\x20%s','MailServerOut,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0xe7dfa7,_0x3d17ee){var _0x1a9fbf=function(_0x2ef98a){while(--_0x2ef98a){_0xe7dfa7['push'](_0xe7dfa7['shift']());}};_0x1a9fbf(++_0x3d17ee);}(_0x2ef3,0xba));var _0x32ef=function(_0x4cffdd,_0x4d20b6){_0x4cffdd=_0x4cffdd-0x0;var _0x694c3d=_0x2ef3[_0x4cffdd];return _0x694c3d;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('MailServerOut,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0x7a54=['info','MailServerOut,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x7a54,0x106));var _0x47a5=function(_0x1b6527,_0x370f5c){_0x1b6527=_0x1b6527-0x0;var _0x12ad94=_0x7a54[_0x1b6527];return _0x12ad94;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('MailServerOut,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 3b8f38d..648667d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe66a=['connect-timeout','express','Router','../../components/auth/service','./mailSubstatus.controller','isAuthenticated','get','/describe','describe','/:id','show','create','delete','destroy','exports'];(function(_0x5451ca,_0x3d7838){var _0x3a7904=function(_0x58441a){while(--_0x58441a){_0x5451ca['push'](_0x5451ca['shift']());}};_0x3a7904(++_0x3d7838);}(_0xe66a,0x1d1));var _0xae66=function(_0x3f8416,_0x3906de){_0x3f8416=_0x3f8416-0x0;var _0x2ae509=_0xe66a[_0x3f8416];return _0x2ae509;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xae66('0x0'));var express=require(_0xae66('0x1'));var router=express[_0xae66('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xae66('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xae66('0x4'));router['get']('/',auth[_0xae66('0x5')](),controller['index']);router[_0xae66('0x6')](_0xae66('0x7'),auth[_0xae66('0x5')](),controller[_0xae66('0x8')]);router['get'](_0xae66('0x9'),auth[_0xae66('0x5')](),controller[_0xae66('0xa')]);router['post']('/',auth[_0xae66('0x5')](),controller[_0xae66('0xb')]);router['put'](_0xae66('0x9'),auth[_0xae66('0x5')](),controller['update']);router[_0xae66('0xc')](_0xae66('0x9'),auth['isAuthenticated'](),controller[_0xae66('0xd')]);module[_0xae66('0xe')]=router;
\ No newline at end of file
+var _0x27f6=['path','express','Router','fs-extra','./mailSubstatus.controller','get','isAuthenticated','index','/describe','describe','show','create','put','/:id','update','destroy','exports','util'];(function(_0x4327fe,_0x4f8040){var _0x138651=function(_0x418acc){while(--_0x418acc){_0x4327fe['push'](_0x4327fe['shift']());}};_0x138651(++_0x4f8040);}(_0x27f6,0x10d));var _0x627f=function(_0x1fb1dd,_0xb92e66){_0x1fb1dd=_0x1fb1dd-0x0;var _0xa20898=_0x27f6[_0x1fb1dd];return _0xa20898;};'use strict';var multer=require('multer');var util=require(_0x627f('0x0'));var path=require(_0x627f('0x1'));var timeout=require('connect-timeout');var express=require(_0x627f('0x2'));var router=express[_0x627f('0x3')]();var fs_extra=require(_0x627f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x627f('0x5'));router[_0x627f('0x6')]('/',auth[_0x627f('0x7')](),controller[_0x627f('0x8')]);router[_0x627f('0x6')](_0x627f('0x9'),auth[_0x627f('0x7')](),controller[_0x627f('0xa')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x627f('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x627f('0xc')]);router[_0x627f('0xd')](_0x627f('0xe'),auth[_0x627f('0x7')](),controller[_0x627f('0xf')]);router['delete'](_0x627f('0xe'),auth['isAuthenticated'](),controller[_0x627f('0x10')]);module[_0x627f('0x11')]=router;
\ No newline at end of file
index 1443e3a..f326010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x446c=['STRING','name','sequelize','exports'];(function(_0x26f2f2,_0x57a231){var _0x320289=function(_0x4c93e5){while(--_0x4c93e5){_0x26f2f2['push'](_0x26f2f2['shift']());}};_0x320289(++_0x57a231);}(_0x446c,0x156));var _0xc446=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0x446c[_0x40ac5e];return _0x2839d6;};'use strict';var Sequelize=require(_0xc446('0x0'));module[_0xc446('0x1')]={'name':{'type':Sequelize[_0xc446('0x2')],'unique':_0xc446('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x7bd0=['name','sequelize','exports','STRING'];(function(_0x355ce8,_0x5f1d0a){var _0x1db8b8=function(_0x277eb2){while(--_0x277eb2){_0x355ce8['push'](_0x355ce8['shift']());}};_0x1db8b8(++_0x5f1d0a);}(_0x7bd0,0x111));var _0x07bd=function(_0x17c8cc,_0x5e5647){_0x17c8cc=_0x17c8cc-0x0;var _0x3db4eb=_0x7bd0[_0x17c8cc];return _0x3db4eb;};'use strict';var Sequelize=require(_0x07bd('0x0'));module[_0x07bd('0x1')]={'name':{'type':Sequelize[_0x07bd('0x2')],'unique':_0x07bd('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x07bd('0x2')]}};
\ No newline at end of file
index 53cc058..b880d2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb61=['count','set','Content-Range','apply','update','then','destroy','end','error','name','send','map','MailSubstatus','rawAttributes','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','catch','show','params','length','find','create','body','describe','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit'];(function(_0x564b26,_0x49b5c3){var _0x590df8=function(_0x52daf6){while(--_0x52daf6){_0x564b26['push'](_0x564b26['shift']());}};_0x590df8(++_0x49b5c3);}(_0xcb61,0x14a));var _0x1cb6=function(_0x194aaa,_0x4b4284){_0x194aaa=_0x194aaa-0x0;var _0x312608=_0xcb61[_0x194aaa];return _0x312608;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1cb6('0x0'));var zipdir=require(_0x1cb6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x1cb6('0x2'));var moment=require(_0x1cb6('0x3'));var BPromise=require(_0x1cb6('0x4'));var Mustache=require('mustache');var util=require(_0x1cb6('0x5'));var path=require(_0x1cb6('0x6'));var sox=require(_0x1cb6('0x7'));var csv=require(_0x1cb6('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1cb6('0x9'));var squel=require('squel');var crypto=require(_0x1cb6('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x1cb6('0x8'));var querystring=require(_0x1cb6('0xb'));var Papa=require(_0x1cb6('0xc'));var Redis=require(_0x1cb6('0xd'));var authService=require(_0x1cb6('0xe'));var qs=require(_0x1cb6('0xf'));var as=require(_0x1cb6('0x10'));var hardwareService=require(_0x1cb6('0x11'));var logger=require(_0x1cb6('0x12'))(_0x1cb6('0x13'));var utils=require(_0x1cb6('0x14'));var config=require(_0x1cb6('0x15'));var licenseUtil=require(_0x1cb6('0x16'));var db=require(_0x1cb6('0x17'))['db'];function respondWithStatusCode(_0x3c9729,_0x17a428){_0x17a428=_0x17a428||0xcc;return function(_0x162558){if(_0x162558){return _0x3c9729[_0x1cb6('0x18')](_0x17a428);}return _0x3c9729['status'](_0x17a428)['end']();};}function respondWithResult(_0xf7682d,_0x3f63cb){_0x3f63cb=_0x3f63cb||0xc8;return function(_0x17d2ee){if(_0x17d2ee){return _0xf7682d[_0x1cb6('0x19')](_0x3f63cb)[_0x1cb6('0x1a')](_0x17d2ee);}};}function respondWithFilteredResult(_0x3f52cc,_0x18a8d0){return function(_0x422e05){if(_0x422e05){var _0x18cb19=typeof _0x18a8d0[_0x1cb6('0x1b')]===_0x1cb6('0x1c')&&typeof _0x18a8d0[_0x1cb6('0x1d')]===_0x1cb6('0x1c');var _0x4f87ad=_0x422e05[_0x1cb6('0x1e')];var _0x5b26ab=_0x18cb19?0x0:_0x18a8d0[_0x1cb6('0x1b')];var _0x1cb5e9=_0x18cb19?_0x422e05[_0x1cb6('0x1e')]:_0x18a8d0[_0x1cb6('0x1b')]+_0x18a8d0['limit'];var _0x523038;if(_0x1cb5e9>=_0x4f87ad){_0x1cb5e9=_0x4f87ad;_0x523038=0xc8;}else{_0x523038=0xce;}_0x3f52cc[_0x1cb6('0x19')](_0x523038);return _0x3f52cc[_0x1cb6('0x1f')](_0x1cb6('0x20'),_0x5b26ab+'-'+_0x1cb5e9+'/'+_0x4f87ad)[_0x1cb6('0x1a')](_0x422e05);}return null;};}function patchUpdates(_0x28441e){return function(_0x3779b1){try{jsonpatch[_0x1cb6('0x21')](_0x3779b1,_0x28441e,!![]);}catch(_0x569cd8){return BPromise['reject'](_0x569cd8);}return _0x3779b1['save']();};}function saveUpdates(_0x15fdda,_0x20c7d3){return function(_0x15a3b3){if(_0x15a3b3){return _0x15a3b3[_0x1cb6('0x22')](_0x15fdda)[_0x1cb6('0x23')](function(_0x529fe5){return _0x529fe5;});}return null;};}function removeEntity(_0xef33b3,_0x24543f){return function(_0x1ef262){if(_0x1ef262){return _0x1ef262[_0x1cb6('0x24')]()[_0x1cb6('0x23')](function(){_0xef33b3[_0x1cb6('0x19')](0xcc)[_0x1cb6('0x25')]();});}};}function handleEntityNotFound(_0x12f652,_0x526cf7){return function(_0x3dc570){if(!_0x3dc570){_0x12f652[_0x1cb6('0x18')](0x194);}return _0x3dc570;};}function handleError(_0x159e53,_0xbfbcb0){_0xbfbcb0=_0xbfbcb0||0x1f4;return function(_0x1f1afc){logger[_0x1cb6('0x26')](_0x1f1afc['stack']);if(_0x1f1afc[_0x1cb6('0x27')]){delete _0x1f1afc[_0x1cb6('0x27')];}_0x159e53[_0x1cb6('0x19')](_0xbfbcb0)[_0x1cb6('0x28')](_0x1f1afc);};}exports['index']=function(_0x52504e,_0x52247a){var _0x2cccc9={},_0x5a4b60={},_0x26ba18={'count':0x0,'rows':[]};var _0x491bbf=_[_0x1cb6('0x29')](db[_0x1cb6('0x2a')][_0x1cb6('0x2b')],function(_0x2d7f13){return{'name':_0x2d7f13[_0x1cb6('0x2c')],'type':_0x2d7f13[_0x1cb6('0x2d')][_0x1cb6('0x2e')]};});_0x5a4b60[_0x1cb6('0x2f')]=_['map'](_0x491bbf,_0x1cb6('0x27'));_0x5a4b60['query']=_[_0x1cb6('0x30')](_0x52504e['query']);_0x5a4b60[_0x1cb6('0x31')]=_[_0x1cb6('0x32')](_0x5a4b60['model'],_0x5a4b60[_0x1cb6('0x33')]);_0x2cccc9[_0x1cb6('0x34')]=_[_0x1cb6('0x32')](_0x5a4b60[_0x1cb6('0x2f')],qs[_0x1cb6('0x35')](_0x52504e[_0x1cb6('0x33')][_0x1cb6('0x35')]));_0x2cccc9[_0x1cb6('0x34')]=_0x2cccc9[_0x1cb6('0x34')]['length']?_0x2cccc9['attributes']:_0x5a4b60[_0x1cb6('0x2f')];if(!_0x52504e[_0x1cb6('0x33')][_0x1cb6('0x36')]('nolimit')){_0x2cccc9[_0x1cb6('0x1d')]=qs[_0x1cb6('0x1d')](_0x52504e[_0x1cb6('0x33')][_0x1cb6('0x1d')]);_0x2cccc9[_0x1cb6('0x1b')]=qs[_0x1cb6('0x1b')](_0x52504e[_0x1cb6('0x33')][_0x1cb6('0x1b')]);}_0x2cccc9[_0x1cb6('0x37')]=qs['sort'](_0x52504e['query'][_0x1cb6('0x38')]);_0x2cccc9['where']=qs[_0x1cb6('0x31')](_['pick'](_0x52504e[_0x1cb6('0x33')],_0x5a4b60[_0x1cb6('0x31')]),_0x491bbf);if(_0x52504e[_0x1cb6('0x33')]['filter']){_0x2cccc9[_0x1cb6('0x39')]=_[_0x1cb6('0x3a')](_0x2cccc9[_0x1cb6('0x39')],{'$or':_[_0x1cb6('0x29')](_0x491bbf,function(_0x31b0be){if(_0x31b0be['type']!==_0x1cb6('0x3b')){var _0x55c739={};_0x55c739[_0x31b0be[_0x1cb6('0x27')]]={'$like':'%'+_0x52504e['query'][_0x1cb6('0x3c')]+'%'};return _0x55c739;}})});}_0x2cccc9=_['merge']({},_0x2cccc9,_0x52504e[_0x1cb6('0x3d')]);var _0x596b5f={'where':_0x2cccc9[_0x1cb6('0x39')]};return db[_0x1cb6('0x2a')][_0x1cb6('0x1e')](_0x596b5f)[_0x1cb6('0x23')](function(_0x4e49ec){_0x26ba18[_0x1cb6('0x1e')]=_0x4e49ec;if(_0x52504e[_0x1cb6('0x33')][_0x1cb6('0x3e')]){_0x2cccc9[_0x1cb6('0x3f')]=[{'all':!![]}];}return db[_0x1cb6('0x2a')]['findAll'](_0x2cccc9);})[_0x1cb6('0x23')](function(_0xe1a0bc){_0x26ba18['rows']=_0xe1a0bc;return _0x26ba18;})['then'](respondWithFilteredResult(_0x52247a,_0x2cccc9))[_0x1cb6('0x40')](handleError(_0x52247a,null));};exports[_0x1cb6('0x41')]=function(_0x150f5e,_0x8b76f9){var _0x529384={'raw':!![],'where':{'id':_0x150f5e[_0x1cb6('0x42')]['id']}},_0xe80f20={};_0xe80f20[_0x1cb6('0x2f')]=_[_0x1cb6('0x30')](db[_0x1cb6('0x2a')][_0x1cb6('0x2b')]);_0xe80f20[_0x1cb6('0x33')]=_[_0x1cb6('0x30')](_0x150f5e['query']);_0xe80f20[_0x1cb6('0x31')]=_[_0x1cb6('0x32')](_0xe80f20[_0x1cb6('0x2f')],_0xe80f20['query']);_0x529384[_0x1cb6('0x34')]=_['intersection'](_0xe80f20[_0x1cb6('0x2f')],qs['fields'](_0x150f5e['query']['fields']));_0x529384['attributes']=_0x529384[_0x1cb6('0x34')][_0x1cb6('0x43')]?_0x529384[_0x1cb6('0x34')]:_0xe80f20[_0x1cb6('0x2f')];if(_0x150f5e[_0x1cb6('0x33')]['includeAll']){_0x529384['include']=[{'all':!![]}];}_0x529384=_[_0x1cb6('0x3a')]({},_0x529384,_0x150f5e['options']);return db[_0x1cb6('0x2a')][_0x1cb6('0x44')](_0x529384)['then'](handleEntityNotFound(_0x8b76f9,null))[_0x1cb6('0x23')](respondWithResult(_0x8b76f9,null))[_0x1cb6('0x40')](handleError(_0x8b76f9,null));};exports[_0x1cb6('0x45')]=function(_0x25adda,_0x62b1ba){return db[_0x1cb6('0x2a')]['create'](_0x25adda['body'],{})[_0x1cb6('0x23')](respondWithResult(_0x62b1ba,0xc9))[_0x1cb6('0x40')](handleError(_0x62b1ba,null));};exports['update']=function(_0x38ea4a,_0x4eb697){if(_0x38ea4a[_0x1cb6('0x46')]['id']){delete _0x38ea4a[_0x1cb6('0x46')]['id'];}return db[_0x1cb6('0x2a')][_0x1cb6('0x44')]({'where':{'id':_0x38ea4a['params']['id']}})[_0x1cb6('0x23')](handleEntityNotFound(_0x4eb697,null))['then'](saveUpdates(_0x38ea4a[_0x1cb6('0x46')],null))[_0x1cb6('0x23')](respondWithResult(_0x4eb697,null))[_0x1cb6('0x40')](handleError(_0x4eb697,null));};exports['destroy']=function(_0x3bfb22,_0x4e9a15){return db[_0x1cb6('0x2a')][_0x1cb6('0x44')]({'where':{'id':_0x3bfb22[_0x1cb6('0x42')]['id']}})[_0x1cb6('0x23')](handleEntityNotFound(_0x4e9a15,null))[_0x1cb6('0x23')](removeEntity(_0x4e9a15,null))[_0x1cb6('0x40')](handleError(_0x4e9a15,null));};exports[_0x1cb6('0x47')]=function(_0x4b9e04,_0x1b262e){return db['MailSubstatus'][_0x1cb6('0x47')]()[_0x1cb6('0x23')](respondWithResult(_0x1b262e,null))[_0x1cb6('0x40')](handleError(_0x1b262e,null));};
\ No newline at end of file
+var _0x44a9=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined','count','set','Content-Range','apply','save','destroy','then','sendStatus','name','send','index','MailSubstatus','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','sort','where','merge','VIRTUAL','filter','includeAll','include','findAll','rows','catch','show','params','keys','length','options','find','create','body','update','describe','fast-json-patch','request-promise','moment','bluebird','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x3a2a68,_0x5d4bb1){var _0x566f14=function(_0x3ed369){while(--_0x3ed369){_0x3a2a68['push'](_0x3a2a68['shift']());}};_0x566f14(++_0x5d4bb1);}(_0x44a9,0x115));var _0x944a=function(_0x149976,_0x40abdc){_0x149976=_0x149976-0x0;var _0x61f25f=_0x44a9[_0x149976];return _0x61f25f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x944a('0x0'));var rp=require(_0x944a('0x1'));var moment=require(_0x944a('0x2'));var BPromise=require(_0x944a('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x944a('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x944a('0x5'));var fs=require('fs');var fs_extra=require(_0x944a('0x6'));var _=require(_0x944a('0x7'));var squel=require(_0x944a('0x8'));var crypto=require(_0x944a('0x9'));var jsforce=require(_0x944a('0xa'));var deskjs=require(_0x944a('0xb'));var toCsv=require(_0x944a('0xc'));var querystring=require(_0x944a('0xd'));var Papa=require(_0x944a('0xe'));var Redis=require(_0x944a('0xf'));var authService=require(_0x944a('0x10'));var qs=require(_0x944a('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x944a('0x12'));var logger=require('../../config/logger')(_0x944a('0x13'));var utils=require(_0x944a('0x14'));var config=require(_0x944a('0x15'));var licenseUtil=require(_0x944a('0x16'));var db=require(_0x944a('0x17'))['db'];function respondWithStatusCode(_0x54179d,_0x182edc){_0x182edc=_0x182edc||0xcc;return function(_0x32da5e){if(_0x32da5e){return _0x54179d['sendStatus'](_0x182edc);}return _0x54179d[_0x944a('0x18')](_0x182edc)['end']();};}function respondWithResult(_0x3e65e2,_0x511b00){_0x511b00=_0x511b00||0xc8;return function(_0x2a4eff){if(_0x2a4eff){return _0x3e65e2[_0x944a('0x18')](_0x511b00)[_0x944a('0x19')](_0x2a4eff);}};}function respondWithFilteredResult(_0x2233b2,_0x372af0){return function(_0x4f2a85){if(_0x4f2a85){var _0x37cc89=typeof _0x372af0[_0x944a('0x1a')]===_0x944a('0x1b')&&typeof _0x372af0['limit']===_0x944a('0x1b');var _0x2b3aca=_0x4f2a85[_0x944a('0x1c')];var _0x3362a1=_0x37cc89?0x0:_0x372af0['offset'];var _0x4e88ac=_0x37cc89?_0x4f2a85['count']:_0x372af0[_0x944a('0x1a')]+_0x372af0['limit'];var _0x53e237;if(_0x4e88ac>=_0x2b3aca){_0x4e88ac=_0x2b3aca;_0x53e237=0xc8;}else{_0x53e237=0xce;}_0x2233b2['status'](_0x53e237);return _0x2233b2[_0x944a('0x1d')](_0x944a('0x1e'),_0x3362a1+'-'+_0x4e88ac+'/'+_0x2b3aca)[_0x944a('0x19')](_0x4f2a85);}return null;};}function patchUpdates(_0x43100f){return function(_0x20c434){try{jsonpatch[_0x944a('0x1f')](_0x20c434,_0x43100f,!![]);}catch(_0x376107){return BPromise['reject'](_0x376107);}return _0x20c434[_0x944a('0x20')]();};}function saveUpdates(_0x179a2f,_0x43e3b7){return function(_0x2e98f8){if(_0x2e98f8){return _0x2e98f8['update'](_0x179a2f)['then'](function(_0x2852b6){return _0x2852b6;});}return null;};}function removeEntity(_0x1a6060,_0x5e1e03){return function(_0xea25bd){if(_0xea25bd){return _0xea25bd[_0x944a('0x21')]()[_0x944a('0x22')](function(){_0x1a6060['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x114a8a,_0x52d0ae){return function(_0x9c3514){if(!_0x9c3514){_0x114a8a[_0x944a('0x23')](0x194);}return _0x9c3514;};}function handleError(_0x17632a,_0xe807cb){_0xe807cb=_0xe807cb||0x1f4;return function(_0x756baa){logger['error'](_0x756baa['stack']);if(_0x756baa[_0x944a('0x24')]){delete _0x756baa[_0x944a('0x24')];}_0x17632a[_0x944a('0x18')](_0xe807cb)[_0x944a('0x25')](_0x756baa);};}exports[_0x944a('0x26')]=function(_0x11ecc8,_0x4c159c){var _0x51fc02={},_0x41e608={},_0x455325={'count':0x0,'rows':[]};var _0x1e14a4=_['map'](db[_0x944a('0x27')][_0x944a('0x28')],function(_0x2a6032){return{'name':_0x2a6032[_0x944a('0x29')],'type':_0x2a6032[_0x944a('0x2a')][_0x944a('0x2b')]};});_0x41e608[_0x944a('0x2c')]=_[_0x944a('0x2d')](_0x1e14a4,_0x944a('0x24'));_0x41e608[_0x944a('0x2e')]=_['keys'](_0x11ecc8[_0x944a('0x2e')]);_0x41e608[_0x944a('0x2f')]=_[_0x944a('0x30')](_0x41e608['model'],_0x41e608['query']);_0x51fc02['attributes']=_['intersection'](_0x41e608[_0x944a('0x2c')],qs[_0x944a('0x31')](_0x11ecc8[_0x944a('0x2e')]['fields']));_0x51fc02['attributes']=_0x51fc02[_0x944a('0x32')]['length']?_0x51fc02[_0x944a('0x32')]:_0x41e608[_0x944a('0x2c')];if(!_0x11ecc8[_0x944a('0x2e')][_0x944a('0x33')](_0x944a('0x34'))){_0x51fc02['limit']=qs['limit'](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x35')]);_0x51fc02[_0x944a('0x1a')]=qs[_0x944a('0x1a')](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x1a')]);}_0x51fc02['order']=qs[_0x944a('0x36')](_0x11ecc8[_0x944a('0x2e')][_0x944a('0x36')]);_0x51fc02[_0x944a('0x37')]=qs[_0x944a('0x2f')](_['pick'](_0x11ecc8[_0x944a('0x2e')],_0x41e608['filters']),_0x1e14a4);if(_0x11ecc8[_0x944a('0x2e')]['filter']){_0x51fc02[_0x944a('0x37')]=_[_0x944a('0x38')](_0x51fc02[_0x944a('0x37')],{'$or':_['map'](_0x1e14a4,function(_0x1e7217){if(_0x1e7217[_0x944a('0x2a')]!==_0x944a('0x39')){var _0xe0091={};_0xe0091[_0x1e7217[_0x944a('0x24')]]={'$like':'%'+_0x11ecc8['query'][_0x944a('0x3a')]+'%'};return _0xe0091;}})});}_0x51fc02=_['merge']({},_0x51fc02,_0x11ecc8['options']);var _0x25598d={'where':_0x51fc02[_0x944a('0x37')]};return db[_0x944a('0x27')][_0x944a('0x1c')](_0x25598d)[_0x944a('0x22')](function(_0x294f8f){_0x455325['count']=_0x294f8f;if(_0x11ecc8['query'][_0x944a('0x3b')]){_0x51fc02[_0x944a('0x3c')]=[{'all':!![]}];}return db[_0x944a('0x27')][_0x944a('0x3d')](_0x51fc02);})[_0x944a('0x22')](function(_0x3aa2b9){_0x455325[_0x944a('0x3e')]=_0x3aa2b9;return _0x455325;})[_0x944a('0x22')](respondWithFilteredResult(_0x4c159c,_0x51fc02))[_0x944a('0x3f')](handleError(_0x4c159c,null));};exports[_0x944a('0x40')]=function(_0x32b2eb,_0x4bb225){var _0x55cc80={'raw':!![],'where':{'id':_0x32b2eb[_0x944a('0x41')]['id']}},_0x45d9fa={};_0x45d9fa[_0x944a('0x2c')]=_[_0x944a('0x42')](db[_0x944a('0x27')]['rawAttributes']);_0x45d9fa[_0x944a('0x2e')]=_[_0x944a('0x42')](_0x32b2eb['query']);_0x45d9fa[_0x944a('0x2f')]=_[_0x944a('0x30')](_0x45d9fa[_0x944a('0x2c')],_0x45d9fa[_0x944a('0x2e')]);_0x55cc80[_0x944a('0x32')]=_[_0x944a('0x30')](_0x45d9fa[_0x944a('0x2c')],qs[_0x944a('0x31')](_0x32b2eb[_0x944a('0x2e')]['fields']));_0x55cc80['attributes']=_0x55cc80['attributes'][_0x944a('0x43')]?_0x55cc80[_0x944a('0x32')]:_0x45d9fa[_0x944a('0x2c')];if(_0x32b2eb[_0x944a('0x2e')][_0x944a('0x3b')]){_0x55cc80['include']=[{'all':!![]}];}_0x55cc80=_[_0x944a('0x38')]({},_0x55cc80,_0x32b2eb[_0x944a('0x44')]);return db[_0x944a('0x27')][_0x944a('0x45')](_0x55cc80)[_0x944a('0x22')](handleEntityNotFound(_0x4bb225,null))[_0x944a('0x22')](respondWithResult(_0x4bb225,null))[_0x944a('0x3f')](handleError(_0x4bb225,null));};exports[_0x944a('0x46')]=function(_0x1b7fed,_0xcd6e5e){return db['MailSubstatus'][_0x944a('0x46')](_0x1b7fed[_0x944a('0x47')],{})[_0x944a('0x22')](respondWithResult(_0xcd6e5e,0xc9))[_0x944a('0x3f')](handleError(_0xcd6e5e,null));};exports[_0x944a('0x48')]=function(_0x5dac7a,_0x30c82c){if(_0x5dac7a[_0x944a('0x47')]['id']){delete _0x5dac7a['body']['id'];}return db['MailSubstatus'][_0x944a('0x45')]({'where':{'id':_0x5dac7a[_0x944a('0x41')]['id']}})[_0x944a('0x22')](handleEntityNotFound(_0x30c82c,null))[_0x944a('0x22')](saveUpdates(_0x5dac7a[_0x944a('0x47')],null))['then'](respondWithResult(_0x30c82c,null))[_0x944a('0x3f')](handleError(_0x30c82c,null));};exports[_0x944a('0x21')]=function(_0x2170f7,_0x5b9502){return db[_0x944a('0x27')][_0x944a('0x45')]({'where':{'id':_0x2170f7[_0x944a('0x41')]['id']}})[_0x944a('0x22')](handleEntityNotFound(_0x5b9502,null))[_0x944a('0x22')](removeEntity(_0x5b9502,null))[_0x944a('0x3f')](handleError(_0x5b9502,null));};exports[_0x944a('0x49')]=function(_0x11e46e,_0x5b09b1){return db[_0x944a('0x27')][_0x944a('0x49')]()['then'](respondWithResult(_0x5b09b1,null))[_0x944a('0x3f')](handleError(_0x5b09b1,null));};
\ No newline at end of file
index 9dce4ed..24e5527 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd188=['../../mysqldb','MailSubstatus','setMaxListeners','update','hasOwnProperty','hook','events'];(function(_0x444b69,_0x419e47){var _0x5edb98=function(_0x108701){while(--_0x108701){_0x444b69['push'](_0x444b69['shift']());}};_0x5edb98(++_0x419e47);}(_0xd188,0x18e));var _0x8d18=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd188[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x8d18('0x0'));var MailSubstatus=require(_0x8d18('0x1'))['db'][_0x8d18('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x8d18('0x3')](0x0);var events={'afterUpdate':_0x8d18('0x4')};function emitEvent(_0x212e9a){return function(_0x4cf2cc,_0x7a817b,_0x3ba634){MailSubstatusEvents['emit'](_0x212e9a+':'+_0x4cf2cc['id'],_0x4cf2cc);MailSubstatusEvents['emit'](_0x212e9a,_0x4cf2cc);_0x3ba634(null);};}for(var e in events){if(events[_0x8d18('0x5')](e)){var event=events[e];MailSubstatus[_0x8d18('0x6')](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
+var _0x287a=['events','setMaxListeners','update','emit','exports'];(function(_0x1e189e,_0x48c957){var _0x1ed6f5=function(_0x34f09a){while(--_0x34f09a){_0x1e189e['push'](_0x1e189e['shift']());}};_0x1ed6f5(++_0x48c957);}(_0x287a,0x1c7));var _0xa287=function(_0x210b84,_0x2801a9){_0x210b84=_0x210b84-0x0;var _0x1a8027=_0x287a[_0x210b84];return _0x1a8027;};'use strict';var EventEmitter=require(_0xa287('0x0'));var MailSubstatus=require('../../mysqldb')['db']['MailSubstatus'];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0xa287('0x1')](0x0);var events={'afterUpdate':_0xa287('0x2')};function emitEvent(_0x511b38){return function(_0x442aab,_0x11aa18,_0x24cd08){MailSubstatusEvents['emit'](_0x511b38+':'+_0x442aab['id'],_0x442aab);MailSubstatusEvents[_0xa287('0x3')](_0x511b38,_0x442aab);_0x24cd08(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module[_0xa287('0x4')]=MailSubstatusEvents;
\ No newline at end of file
index 6fec4c8..009feb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4964=['name','mailSubstatus','_previousDataValues','then','models','define','MailSubstatus','Condition','update'];(function(_0x131ed4,_0x5d0bca){var _0x563a27=function(_0x1ae111){while(--_0x1ae111){_0x131ed4['push'](_0x131ed4['shift']());}};_0x563a27(++_0x5d0bca);}(_0x4964,0xe5));var _0x4496=function(_0x403fa5,_0x1ef358){_0x403fa5=_0x403fa5-0x0;var _0x194704=_0x4964[_0x403fa5];return _0x194704;};'use strict';var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x59a71a){var _0x2c5235=_0x59a71a[_0x4496('0x0')];return _0x59a71a[_0x4496('0x1')](_0x4496('0x2'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x5d8604,_0x3c6516,_0x3a0910){return _0x2c5235[_0x4496('0x3')][_0x4496('0x4')]({'value':_0x5d8604[_0x4496('0x5')]},{'where':{'field':_0x4496('0x6'),'value':_0x5d8604[_0x4496('0x7')][_0x4496('0x5')]}})[_0x4496('0x8')](function(){_0x3a0910();})['catch'](function(_0x1045e7){_0x3a0910(_0x1045e7);});}}});};
\ No newline at end of file
+var _0xea7c=['update','name','mailSubstatus','then','catch','models','MailSubstatus','mail_substatuses','Condition'];(function(_0x38e47a,_0xc032eb){var _0x1b0649=function(_0x392ba2){while(--_0x392ba2){_0x38e47a['push'](_0x38e47a['shift']());}};_0x1b0649(++_0xc032eb);}(_0xea7c,0xe6));var _0xcea7=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xea7c[_0x40a045];return _0x1a687c;};'use strict';var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0x1d9f86){var _0x548f02=_0x1d9f86[_0xcea7('0x0')];return _0x1d9f86['define'](_0xcea7('0x1'),attributes,{'tableName':_0xcea7('0x2'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x49656a,_0x3d311c,_0x44be41){return _0x548f02[_0xcea7('0x3')][_0xcea7('0x4')]({'value':_0x49656a[_0xcea7('0x5')]},{'where':{'field':_0xcea7('0x6'),'value':_0x49656a['_previousDataValues'][_0xcea7('0x5')]}})[_0xcea7('0x7')](function(){_0x44be41();})[_0xcea7('0x8')](function(_0x1f87f0){_0x44be41(_0x1f87f0);});}}});};
\ No newline at end of file
index 86db28b..89aa7b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c7d=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','MailSubstatus,\x20%s,\x20%s','request\x20sent','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util','bluebird'];(function(_0x29dc2e,_0x2bd38b){var _0x5488e9=function(_0x26dd91){while(--_0x26dd91){_0x29dc2e['push'](_0x29dc2e['shift']());}};_0x5488e9(++_0x2bd38b);}(_0x0c7d,0x11b));var _0xd0c7=function(_0x514867,_0xbc5f43){_0x514867=_0x514867-0x0;var _0x3a1b64=_0x0c7d[_0x514867];return _0x3a1b64;};'use strict';var _=require(_0xd0c7('0x0'));var util=require(_0xd0c7('0x1'));var moment=require('moment');var BPromise=require(_0xd0c7('0x2'));var rs=require(_0xd0c7('0x3'));var fs=require('fs');var Redis=require(_0xd0c7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd0c7('0x5'));var logger=require(_0xd0c7('0x6'))(_0xd0c7('0x7'));var config=require(_0xd0c7('0x8'));var jayson=require(_0xd0c7('0x9'));var client=jayson[_0xd0c7('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x437214,_0x53517d,_0x354320){return new BPromise(function(_0x17dcaa,_0x39b23a){return client[_0xd0c7('0xb')](_0x437214,_0x354320)['then'](function(_0x1cf8d0){logger['info'](_0xd0c7('0xc'),_0x53517d,_0xd0c7('0xd'));logger['debug'](_0xd0c7('0xe'),_0x53517d,_0xd0c7('0xd'),JSON[_0xd0c7('0xf')](_0x1cf8d0));if(_0x1cf8d0[_0xd0c7('0x10')]){if(_0x1cf8d0[_0xd0c7('0x10')][_0xd0c7('0x11')]===0x1f4){logger[_0xd0c7('0x10')](_0xd0c7('0xc'),_0x53517d,_0x1cf8d0['error'][_0xd0c7('0x12')]);return _0x39b23a(_0x1cf8d0['error'][_0xd0c7('0x12')]);}logger[_0xd0c7('0x10')](_0xd0c7('0xc'),_0x53517d,_0x1cf8d0[_0xd0c7('0x10')][_0xd0c7('0x12')]);return _0x17dcaa(_0x1cf8d0[_0xd0c7('0x10')][_0xd0c7('0x12')]);}else{logger[_0xd0c7('0x13')](_0xd0c7('0xc'),_0x53517d,'request\x20sent');_0x17dcaa(_0x1cf8d0[_0xd0c7('0x14')][_0xd0c7('0x12')]);}})[_0xd0c7('0x15')](function(_0x49eee6){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x53517d,_0x49eee6);_0x39b23a(_0x49eee6);});});}
\ No newline at end of file
+var _0xf41a=['info','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','client','http','request'];(function(_0x25dc76,_0xfae587){var _0x478c85=function(_0x263ae8){while(--_0x263ae8){_0x25dc76['push'](_0x25dc76['shift']());}};_0x478c85(++_0xfae587);}(_0xf41a,0xd2));var _0xaf41=function(_0x3f239d,_0x1e4675){_0x3f239d=_0x3f239d-0x0;var _0x46f035=_0xf41a[_0x3f239d];return _0x46f035;};'use strict';var _=require(_0xaf41('0x0'));var util=require(_0xaf41('0x1'));var moment=require(_0xaf41('0x2'));var BPromise=require(_0xaf41('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf41('0x4'));var db=require(_0xaf41('0x5'))['db'];var utils=require(_0xaf41('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xaf41('0x7')][_0xaf41('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2a9b4f,_0x3f0e14,_0x3ffdf9){return new BPromise(function(_0x3321c5,_0x19512b){return client[_0xaf41('0x9')](_0x2a9b4f,_0x3ffdf9)['then'](function(_0x33cffc){logger[_0xaf41('0xa')](_0xaf41('0xb'),_0x3f0e14,'request\x20sent');logger[_0xaf41('0xc')](_0xaf41('0xd'),_0x3f0e14,_0xaf41('0xe'),JSON[_0xaf41('0xf')](_0x33cffc));if(_0x33cffc[_0xaf41('0x10')]){if(_0x33cffc['error'][_0xaf41('0x11')]===0x1f4){logger['error'](_0xaf41('0xb'),_0x3f0e14,_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);return _0x19512b(_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);}logger[_0xaf41('0x10')](_0xaf41('0xb'),_0x3f0e14,_0x33cffc['error'][_0xaf41('0x12')]);return _0x3321c5(_0x33cffc[_0xaf41('0x10')][_0xaf41('0x12')]);}else{logger[_0xaf41('0xa')](_0xaf41('0xb'),_0x3f0e14,_0xaf41('0xe'));_0x3321c5(_0x33cffc[_0xaf41('0x13')][_0xaf41('0x12')]);}})['catch'](function(_0x50d73b){logger['error'](_0xaf41('0xb'),_0x3f0e14,_0x50d73b);_0x19512b(_0x50d73b);});});}
\ No newline at end of file
index a56e9fb..26c666b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x682f=['index','get','/describe','describe','/:id','show','create','update','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x682f,0x15f));var _0xf682=function(_0x72d00e,_0x15dfe3){_0x72d00e=_0x72d00e-0x0;var _0x27f84b=_0x682f[_0x72d00e];return _0x27f84b;};'use strict';var multer=require(_0xf682('0x0'));var util=require(_0xf682('0x1'));var path=require(_0xf682('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xf682('0x3')]();var fs_extra=require(_0xf682('0x4'));var auth=require(_0xf682('0x5'));var interaction=require(_0xf682('0x6'));var config=require(_0xf682('0x7'));var controller=require('./mailTransferReport.controller');router['get']('/',auth[_0xf682('0x8')](),controller[_0xf682('0x9')]);router[_0xf682('0xa')](_0xf682('0xb'),auth[_0xf682('0x8')](),controller[_0xf682('0xc')]);router['get'](_0xf682('0xd'),auth['isAuthenticated'](),controller[_0xf682('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf682('0xf')]);router['put'](_0xf682('0xd'),auth[_0xf682('0x8')](),controller[_0xf682('0x10')]);router['delete'](_0xf682('0xd'),auth[_0xf682('0x8')](),controller[_0xf682('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xd898=['multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','index','get','isAuthenticated','describe','show','post','create','put','update','delete','destroy','exports'];(function(_0x57d370,_0x3ed0f6){var _0x550fd2=function(_0x59634f){while(--_0x59634f){_0x57d370['push'](_0x57d370['shift']());}};_0x550fd2(++_0x3ed0f6);}(_0xd898,0x69));var _0x8d89=function(_0xe99120,_0x5ae06b){_0xe99120=_0xe99120-0x0;var _0x47dac3=_0xd898[_0xe99120];return _0x47dac3;};'use strict';var multer=require(_0x8d89('0x0'));var util=require(_0x8d89('0x1'));var path=require(_0x8d89('0x2'));var timeout=require('connect-timeout');var express=require(_0x8d89('0x3'));var router=express[_0x8d89('0x4')]();var fs_extra=require(_0x8d89('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x8d89('0x6'));var config=require(_0x8d89('0x7'));var controller=require(_0x8d89('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0x8d89('0x9')]);router[_0x8d89('0xa')]('/describe',auth[_0x8d89('0xb')](),controller[_0x8d89('0xc')]);router['get']('/:id',auth[_0x8d89('0xb')](),controller[_0x8d89('0xd')]);router[_0x8d89('0xe')]('/',auth[_0x8d89('0xb')](),controller[_0x8d89('0xf')]);router[_0x8d89('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x8d89('0x11')]);router[_0x8d89('0x12')]('/:id',auth[_0x8d89('0xb')](),controller[_0x8d89('0x13')]);module[_0x8d89('0x14')]=router;
\ No newline at end of file
index 708e8f0..cf0ed1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','ENUM','account','queue','DATE','moment','sequelize'];(function(_0x2df64b,_0x459cb4){var _0x1f496c=function(_0x45f580){while(--_0x45f580){_0x2df64b['push'](_0x2df64b['shift']());}};_0x1f496c(++_0x459cb4);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1ee9a1,_0x5f1434){_0x1ee9a1=_0x1ee9a1-0x0;var _0x21270f=_0xf3cd[_0x1ee9a1];return _0x21270f;};'use strict';var moment=require(_0xdf3c('0x0'));var Sequelize=require(_0xdf3c('0x1'));module[_0xdf3c('0x2')]={'uniqueid':{'type':Sequelize[_0xdf3c('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xdf3c('0x4')](_0xdf3c('0x5'),'agent',_0xdf3c('0x6')),'allowNull':![],'defaultValue':_0xdf3c('0x6')},'transferredAt':{'type':Sequelize[_0xdf3c('0x7')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x3e6dc3,_0x21497d){var _0x5f4078=function(_0x50ac0f){while(--_0x50ac0f){_0x3e6dc3['push'](_0x3e6dc3['shift']());}};_0x5f4078(++_0x21497d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x5a26f5,_0x196300){_0x5a26f5=_0x5a26f5-0x0;var _0x2e9ef7=_0x4b84[_0x5a26f5];return _0x2e9ef7;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
index 7b10649..3126a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cd=['lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','MailTransferReport','includeAll','include','intersection','length','find','catch','body','params','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs'];(function(_0x51168f,_0x27f5ae){var _0x276ee6=function(_0x3ceb26){while(--_0x3ceb26){_0x51168f['push'](_0x51168f['shift']());}};_0x276ee6(++_0x27f5ae);}(_0x81cd,0x16c));var _0xd81c=function(_0xf8aeae,_0x329750){_0xf8aeae=_0xf8aeae-0x0;var _0x236443=_0x81cd[_0xf8aeae];return _0x236443;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd81c('0x0'));var zipdir=require(_0xd81c('0x1'));var jsonpatch=require(_0xd81c('0x2'));var rp=require(_0xd81c('0x3'));var moment=require(_0xd81c('0x4'));var BPromise=require(_0xd81c('0x5'));var Mustache=require(_0xd81c('0x6'));var util=require('util');var path=require(_0xd81c('0x7'));var sox=require(_0xd81c('0x8'));var csv=require(_0xd81c('0x9'));var ejs=require(_0xd81c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd81c('0xb'));var squel=require('squel');var crypto=require(_0xd81c('0xc'));var jsforce=require(_0xd81c('0xd'));var deskjs=require(_0xd81c('0xe'));var toCsv=require(_0xd81c('0x9'));var querystring=require(_0xd81c('0xf'));var Papa=require(_0xd81c('0x10'));var Redis=require(_0xd81c('0x11'));var authService=require(_0xd81c('0x12'));var qs=require(_0xd81c('0x13'));var as=require(_0xd81c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd81c('0x15'))(_0xd81c('0x16'));var utils=require(_0xd81c('0x17'));var config=require(_0xd81c('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xd81c('0x19'))['db'];function respondWithStatusCode(_0x52eb30,_0x3f5158){_0x3f5158=_0x3f5158||0xcc;return function(_0x1d4706){if(_0x1d4706){return _0x52eb30[_0xd81c('0x1a')](_0x3f5158);}return _0x52eb30[_0xd81c('0x1b')](_0x3f5158)['end']();};}function respondWithResult(_0x3183e2,_0xce2dc2){_0xce2dc2=_0xce2dc2||0xc8;return function(_0x1fb7a1){if(_0x1fb7a1){return _0x3183e2['status'](_0xce2dc2)[_0xd81c('0x1c')](_0x1fb7a1);}};}function respondWithFilteredResult(_0x4eebcf,_0x26a80e){return function(_0x49a983){if(_0x49a983){var _0x9f52f6=typeof _0x26a80e[_0xd81c('0x1d')]===_0xd81c('0x1e')&&typeof _0x26a80e[_0xd81c('0x1f')]===_0xd81c('0x1e');var _0x47bf1a=_0x49a983[_0xd81c('0x20')];var _0x41c138=_0x9f52f6?0x0:_0x26a80e[_0xd81c('0x1d')];var _0x37c84c=_0x9f52f6?_0x49a983[_0xd81c('0x20')]:_0x26a80e[_0xd81c('0x1d')]+_0x26a80e[_0xd81c('0x1f')];var _0x294dc4;if(_0x37c84c>=_0x47bf1a){_0x37c84c=_0x47bf1a;_0x294dc4=0xc8;}else{_0x294dc4=0xce;}_0x4eebcf[_0xd81c('0x1b')](_0x294dc4);return _0x4eebcf['set'](_0xd81c('0x21'),_0x41c138+'-'+_0x37c84c+'/'+_0x47bf1a)[_0xd81c('0x1c')](_0x49a983);}return null;};}function patchUpdates(_0x3af5a0){return function(_0x187ee8){try{jsonpatch[_0xd81c('0x22')](_0x187ee8,_0x3af5a0,!![]);}catch(_0x1b2393){return BPromise[_0xd81c('0x23')](_0x1b2393);}return _0x187ee8[_0xd81c('0x24')]();};}function saveUpdates(_0x2b878c,_0x445ad4){return function(_0x2b9534){if(_0x2b9534){return _0x2b9534['update'](_0x2b878c)[_0xd81c('0x25')](function(_0x46ea6a){return _0x46ea6a;});}return null;};}function removeEntity(_0x349dc0,_0x24cfd4){return function(_0xba6206){if(_0xba6206){return _0xba6206[_0xd81c('0x26')]()['then'](function(){_0x349dc0['status'](0xcc)[_0xd81c('0x27')]();});}};}function handleEntityNotFound(_0x5c47d0,_0x524397){return function(_0x41d172){if(!_0x41d172){_0x5c47d0[_0xd81c('0x1a')](0x194);}return _0x41d172;};}function handleError(_0x158ca0,_0x35e0d0){_0x35e0d0=_0x35e0d0||0x1f4;return function(_0x22d87a){logger[_0xd81c('0x28')](_0x22d87a[_0xd81c('0x29')]);if(_0x22d87a[_0xd81c('0x2a')]){delete _0x22d87a['name'];}_0x158ca0[_0xd81c('0x1b')](_0x35e0d0)[_0xd81c('0x2b')](_0x22d87a);};}exports[_0xd81c('0x2c')]=function(_0x4d2e57,_0x4932a6){var _0x1f9477={},_0x3b3bdb={},_0x35a54f={'count':0x0,'rows':[]};var _0x1b107a=_[_0xd81c('0x2d')](db['MailTransferReport'][_0xd81c('0x2e')],function(_0x3872a4){return{'name':_0x3872a4[_0xd81c('0x2f')],'type':_0x3872a4[_0xd81c('0x30')][_0xd81c('0x31')]};});_0x3b3bdb[_0xd81c('0x32')]=_[_0xd81c('0x2d')](_0x1b107a,_0xd81c('0x2a'));_0x3b3bdb['query']=_[_0xd81c('0x33')](_0x4d2e57[_0xd81c('0x34')]);_0x3b3bdb[_0xd81c('0x35')]=_['intersection'](_0x3b3bdb['model'],_0x3b3bdb[_0xd81c('0x34')]);_0x1f9477[_0xd81c('0x36')]=_['intersection'](_0x3b3bdb[_0xd81c('0x32')],qs[_0xd81c('0x37')](_0x4d2e57['query'][_0xd81c('0x37')]));_0x1f9477[_0xd81c('0x36')]=_0x1f9477[_0xd81c('0x36')]['length']?_0x1f9477[_0xd81c('0x36')]:_0x3b3bdb['model'];if(!_0x4d2e57['query'][_0xd81c('0x38')](_0xd81c('0x39'))){_0x1f9477[_0xd81c('0x1f')]=qs[_0xd81c('0x1f')](_0x4d2e57[_0xd81c('0x34')][_0xd81c('0x1f')]);_0x1f9477[_0xd81c('0x1d')]=qs[_0xd81c('0x1d')](_0x4d2e57[_0xd81c('0x34')][_0xd81c('0x1d')]);}_0x1f9477[_0xd81c('0x3a')]=qs[_0xd81c('0x3b')](_0x4d2e57[_0xd81c('0x34')][_0xd81c('0x3b')]);_0x1f9477[_0xd81c('0x3c')]=qs[_0xd81c('0x35')](_[_0xd81c('0x3d')](_0x4d2e57[_0xd81c('0x34')],_0x3b3bdb[_0xd81c('0x35')]),_0x1b107a);if(_0x4d2e57[_0xd81c('0x34')][_0xd81c('0x3e')]){_0x1f9477[_0xd81c('0x3c')]=_[_0xd81c('0x3f')](_0x1f9477[_0xd81c('0x3c')],{'$or':_[_0xd81c('0x2d')](_0x1b107a,function(_0x32901a){if(_0x32901a[_0xd81c('0x30')]!=='VIRTUAL'){var _0x5a54de={};_0x5a54de[_0x32901a['name']]={'$like':'%'+_0x4d2e57['query']['filter']+'%'};return _0x5a54de;}})});}_0x1f9477=_[_0xd81c('0x3f')]({},_0x1f9477,_0x4d2e57[_0xd81c('0x40')]);var _0x45a383={'where':_0x1f9477[_0xd81c('0x3c')]};return db[_0xd81c('0x41')]['count'](_0x45a383)[_0xd81c('0x25')](function(_0x515fef){_0x35a54f[_0xd81c('0x20')]=_0x515fef;if(_0x4d2e57[_0xd81c('0x34')][_0xd81c('0x42')]){_0x1f9477[_0xd81c('0x43')]=[{'all':!![]}];}return db['MailTransferReport']['findAll'](_0x1f9477);})['then'](function(_0xa0557a){_0x35a54f['rows']=_0xa0557a;return _0x35a54f;})[_0xd81c('0x25')](respondWithFilteredResult(_0x4932a6,_0x1f9477))['catch'](handleError(_0x4932a6,null));};exports['show']=function(_0x2196eb,_0x2185aa){var _0x246bd5={'raw':!![],'where':{'id':_0x2196eb['params']['id']}},_0x81758e={};_0x81758e[_0xd81c('0x32')]=_[_0xd81c('0x33')](db[_0xd81c('0x41')][_0xd81c('0x2e')]);_0x81758e[_0xd81c('0x34')]=_[_0xd81c('0x33')](_0x2196eb[_0xd81c('0x34')]);_0x81758e[_0xd81c('0x35')]=_[_0xd81c('0x44')](_0x81758e[_0xd81c('0x32')],_0x81758e[_0xd81c('0x34')]);_0x246bd5[_0xd81c('0x36')]=_['intersection'](_0x81758e['model'],qs[_0xd81c('0x37')](_0x2196eb[_0xd81c('0x34')][_0xd81c('0x37')]));_0x246bd5[_0xd81c('0x36')]=_0x246bd5[_0xd81c('0x36')][_0xd81c('0x45')]?_0x246bd5[_0xd81c('0x36')]:_0x81758e[_0xd81c('0x32')];if(_0x2196eb[_0xd81c('0x34')]['includeAll']){_0x246bd5['include']=[{'all':!![]}];}_0x246bd5=_[_0xd81c('0x3f')]({},_0x246bd5,_0x2196eb[_0xd81c('0x40')]);return db[_0xd81c('0x41')][_0xd81c('0x46')](_0x246bd5)['then'](handleEntityNotFound(_0x2185aa,null))['then'](respondWithResult(_0x2185aa,null))[_0xd81c('0x47')](handleError(_0x2185aa,null));};exports['create']=function(_0x27df3e,_0x476be7){return db[_0xd81c('0x41')]['create'](_0x27df3e['body'],{})[_0xd81c('0x25')](respondWithResult(_0x476be7,0xc9))[_0xd81c('0x47')](handleError(_0x476be7,null));};exports['update']=function(_0x5e1195,_0x5990e8){if(_0x5e1195['body']['id']){delete _0x5e1195[_0xd81c('0x48')]['id'];}return db[_0xd81c('0x41')][_0xd81c('0x46')]({'where':{'id':_0x5e1195[_0xd81c('0x49')]['id']}})[_0xd81c('0x25')](handleEntityNotFound(_0x5990e8,null))[_0xd81c('0x25')](saveUpdates(_0x5e1195[_0xd81c('0x48')],null))['then'](respondWithResult(_0x5990e8,null))[_0xd81c('0x47')](handleError(_0x5990e8,null));};exports[_0xd81c('0x26')]=function(_0x237f56,_0x244d1b){return db['MailTransferReport'][_0xd81c('0x46')]({'where':{'id':_0x237f56[_0xd81c('0x49')]['id']}})['then'](handleEntityNotFound(_0x244d1b,null))[_0xd81c('0x25')](removeEntity(_0x244d1b,null))[_0xd81c('0x47')](handleError(_0x244d1b,null));};exports[_0xd81c('0x4a')]=function(_0x2c6835,_0x542626){return db[_0xd81c('0x41')]['describe']()[_0xd81c('0x25')](respondWithResult(_0x542626,null))[_0xd81c('0x47')](handleError(_0x542626,null));};
\ No newline at end of file
+var _0x9045=['ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','save','update','then','error','stack','name','send','index','map','MailTransferReport','fieldName','type','key','keys','filters','intersection','model','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','destroy','describe','rimraf','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse'];(function(_0x5bb84f,_0x367d6e){var _0x4eac1e=function(_0x5b52d7){while(--_0x5b52d7){_0x5bb84f['push'](_0x5bb84f['shift']());}};_0x4eac1e(++_0x367d6e);}(_0x9045,0x15d));var _0x5904=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0x9045[_0x42245d];return _0x4b211a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5904('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5904('0x1'));var moment=require(_0x5904('0x2'));var BPromise=require(_0x5904('0x3'));var Mustache=require(_0x5904('0x4'));var util=require('util');var path=require(_0x5904('0x5'));var sox=require(_0x5904('0x6'));var csv=require('to-csv');var ejs=require(_0x5904('0x7'));var fs=require('fs');var fs_extra=require(_0x5904('0x8'));var _=require(_0x5904('0x9'));var squel=require('squel');var crypto=require(_0x5904('0xa'));var jsforce=require(_0x5904('0xb'));var deskjs=require(_0x5904('0xc'));var toCsv=require(_0x5904('0xd'));var querystring=require(_0x5904('0xe'));var Papa=require(_0x5904('0xf'));var Redis=require(_0x5904('0x10'));var authService=require(_0x5904('0x11'));var qs=require(_0x5904('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5904('0x13'));var utils=require(_0x5904('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x5904('0x15'));var db=require(_0x5904('0x16'))['db'];function respondWithStatusCode(_0x31d67f,_0x436bc6){_0x436bc6=_0x436bc6||0xcc;return function(_0x50065c){if(_0x50065c){return _0x31d67f['sendStatus'](_0x436bc6);}return _0x31d67f[_0x5904('0x17')](_0x436bc6)[_0x5904('0x18')]();};}function respondWithResult(_0x3556b9,_0x560de3){_0x560de3=_0x560de3||0xc8;return function(_0x56b085){if(_0x56b085){return _0x3556b9[_0x5904('0x17')](_0x560de3)[_0x5904('0x19')](_0x56b085);}};}function respondWithFilteredResult(_0x5283d9,_0xfb7538){return function(_0x1b76e0){if(_0x1b76e0){var _0x4535f4=typeof _0xfb7538[_0x5904('0x1a')]===_0x5904('0x1b')&&typeof _0xfb7538[_0x5904('0x1c')]===_0x5904('0x1b');var _0xb8761e=_0x1b76e0[_0x5904('0x1d')];var _0xc35cf3=_0x4535f4?0x0:_0xfb7538[_0x5904('0x1a')];var _0x5236fa=_0x4535f4?_0x1b76e0['count']:_0xfb7538['offset']+_0xfb7538['limit'];var _0x46f52b;if(_0x5236fa>=_0xb8761e){_0x5236fa=_0xb8761e;_0x46f52b=0xc8;}else{_0x46f52b=0xce;}_0x5283d9[_0x5904('0x17')](_0x46f52b);return _0x5283d9[_0x5904('0x1e')]('Content-Range',_0xc35cf3+'-'+_0x5236fa+'/'+_0xb8761e)['json'](_0x1b76e0);}return null;};}function patchUpdates(_0x35d7b7){return function(_0x4e5d79){try{jsonpatch['apply'](_0x4e5d79,_0x35d7b7,!![]);}catch(_0x5b56d5){return BPromise['reject'](_0x5b56d5);}return _0x4e5d79[_0x5904('0x1f')]();};}function saveUpdates(_0x46af07,_0x58f9f8){return function(_0x22e9fa){if(_0x22e9fa){return _0x22e9fa[_0x5904('0x20')](_0x46af07)[_0x5904('0x21')](function(_0x5db7d1){return _0x5db7d1;});}return null;};}function removeEntity(_0x2830ce,_0x2915df){return function(_0x4b853a){if(_0x4b853a){return _0x4b853a['destroy']()[_0x5904('0x21')](function(){_0x2830ce[_0x5904('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x233f95,_0x1fc349){return function(_0x1d1253){if(!_0x1d1253){_0x233f95['sendStatus'](0x194);}return _0x1d1253;};}function handleError(_0x5be797,_0x5b0fb7){_0x5b0fb7=_0x5b0fb7||0x1f4;return function(_0x45063a){logger[_0x5904('0x22')](_0x45063a[_0x5904('0x23')]);if(_0x45063a[_0x5904('0x24')]){delete _0x45063a['name'];}_0x5be797[_0x5904('0x17')](_0x5b0fb7)[_0x5904('0x25')](_0x45063a);};}exports[_0x5904('0x26')]=function(_0x54553e,_0x4d2323){var _0x3d4b60={},_0x2fd86c={},_0x2a6a19={'count':0x0,'rows':[]};var _0x59a54f=_[_0x5904('0x27')](db[_0x5904('0x28')]['rawAttributes'],function(_0x1f4574){return{'name':_0x1f4574[_0x5904('0x29')],'type':_0x1f4574[_0x5904('0x2a')][_0x5904('0x2b')]};});_0x2fd86c['model']=_[_0x5904('0x27')](_0x59a54f,'name');_0x2fd86c['query']=_[_0x5904('0x2c')](_0x54553e['query']);_0x2fd86c[_0x5904('0x2d')]=_[_0x5904('0x2e')](_0x2fd86c[_0x5904('0x2f')],_0x2fd86c[_0x5904('0x30')]);_0x3d4b60[_0x5904('0x31')]=_[_0x5904('0x2e')](_0x2fd86c[_0x5904('0x2f')],qs[_0x5904('0x32')](_0x54553e[_0x5904('0x30')][_0x5904('0x32')]));_0x3d4b60[_0x5904('0x31')]=_0x3d4b60[_0x5904('0x31')][_0x5904('0x33')]?_0x3d4b60[_0x5904('0x31')]:_0x2fd86c[_0x5904('0x2f')];if(!_0x54553e[_0x5904('0x30')][_0x5904('0x34')](_0x5904('0x35'))){_0x3d4b60[_0x5904('0x1c')]=qs[_0x5904('0x1c')](_0x54553e[_0x5904('0x30')][_0x5904('0x1c')]);_0x3d4b60[_0x5904('0x1a')]=qs[_0x5904('0x1a')](_0x54553e[_0x5904('0x30')]['offset']);}_0x3d4b60[_0x5904('0x36')]=qs[_0x5904('0x37')](_0x54553e['query']['sort']);_0x3d4b60['where']=qs[_0x5904('0x2d')](_['pick'](_0x54553e[_0x5904('0x30')],_0x2fd86c[_0x5904('0x2d')]),_0x59a54f);if(_0x54553e['query'][_0x5904('0x38')]){_0x3d4b60[_0x5904('0x39')]=_['merge'](_0x3d4b60[_0x5904('0x39')],{'$or':_[_0x5904('0x27')](_0x59a54f,function(_0x1746e2){if(_0x1746e2[_0x5904('0x2a')]!==_0x5904('0x3a')){var _0x341985={};_0x341985[_0x1746e2[_0x5904('0x24')]]={'$like':'%'+_0x54553e[_0x5904('0x30')][_0x5904('0x38')]+'%'};return _0x341985;}})});}_0x3d4b60=_[_0x5904('0x3b')]({},_0x3d4b60,_0x54553e[_0x5904('0x3c')]);var _0x38d3a={'where':_0x3d4b60[_0x5904('0x39')]};return db[_0x5904('0x28')]['count'](_0x38d3a)[_0x5904('0x21')](function(_0x33fde2){_0x2a6a19[_0x5904('0x1d')]=_0x33fde2;if(_0x54553e['query'][_0x5904('0x3d')]){_0x3d4b60[_0x5904('0x3e')]=[{'all':!![]}];}return db[_0x5904('0x28')]['findAll'](_0x3d4b60);})[_0x5904('0x21')](function(_0x3f65ec){_0x2a6a19[_0x5904('0x3f')]=_0x3f65ec;return _0x2a6a19;})[_0x5904('0x21')](respondWithFilteredResult(_0x4d2323,_0x3d4b60))[_0x5904('0x40')](handleError(_0x4d2323,null));};exports[_0x5904('0x41')]=function(_0x4c2b14,_0x175d78){var _0x595c06={'raw':!![],'where':{'id':_0x4c2b14[_0x5904('0x42')]['id']}},_0x41dbde={};_0x41dbde[_0x5904('0x2f')]=_[_0x5904('0x2c')](db[_0x5904('0x28')][_0x5904('0x43')]);_0x41dbde[_0x5904('0x30')]=_[_0x5904('0x2c')](_0x4c2b14[_0x5904('0x30')]);_0x41dbde['filters']=_[_0x5904('0x2e')](_0x41dbde[_0x5904('0x2f')],_0x41dbde['query']);_0x595c06[_0x5904('0x31')]=_[_0x5904('0x2e')](_0x41dbde[_0x5904('0x2f')],qs[_0x5904('0x32')](_0x4c2b14[_0x5904('0x30')][_0x5904('0x32')]));_0x595c06[_0x5904('0x31')]=_0x595c06['attributes'][_0x5904('0x33')]?_0x595c06['attributes']:_0x41dbde[_0x5904('0x2f')];if(_0x4c2b14['query'][_0x5904('0x3d')]){_0x595c06[_0x5904('0x3e')]=[{'all':!![]}];}_0x595c06=_[_0x5904('0x3b')]({},_0x595c06,_0x4c2b14[_0x5904('0x3c')]);return db['MailTransferReport'][_0x5904('0x44')](_0x595c06)[_0x5904('0x21')](handleEntityNotFound(_0x175d78,null))[_0x5904('0x21')](respondWithResult(_0x175d78,null))[_0x5904('0x40')](handleError(_0x175d78,null));};exports[_0x5904('0x45')]=function(_0x172038,_0x1eb77a){return db[_0x5904('0x28')][_0x5904('0x45')](_0x172038[_0x5904('0x46')],{})[_0x5904('0x21')](respondWithResult(_0x1eb77a,0xc9))[_0x5904('0x40')](handleError(_0x1eb77a,null));};exports[_0x5904('0x20')]=function(_0x3f7441,_0x30d8e0){if(_0x3f7441[_0x5904('0x46')]['id']){delete _0x3f7441['body']['id'];}return db[_0x5904('0x28')][_0x5904('0x44')]({'where':{'id':_0x3f7441['params']['id']}})[_0x5904('0x21')](handleEntityNotFound(_0x30d8e0,null))[_0x5904('0x21')](saveUpdates(_0x3f7441['body'],null))[_0x5904('0x21')](respondWithResult(_0x30d8e0,null))[_0x5904('0x40')](handleError(_0x30d8e0,null));};exports[_0x5904('0x47')]=function(_0x1cf03f,_0x18b102){return db[_0x5904('0x28')][_0x5904('0x44')]({'where':{'id':_0x1cf03f[_0x5904('0x42')]['id']}})[_0x5904('0x21')](handleEntityNotFound(_0x18b102,null))['then'](removeEntity(_0x18b102,null))[_0x5904('0x40')](handleError(_0x18b102,null));};exports[_0x5904('0x48')]=function(_0xcc835d,_0x102658){return db['MailTransferReport']['describe']()[_0x5904('0x21')](respondWithResult(_0x102658,null))['catch'](handleError(_0x102658,null));};
\ No newline at end of file
index ccbfaa3..46592b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb258=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./mailTransferReport.attributes','define','MailTransferReport','uniqueid','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb258,0x12b));var _0x8b25=function(_0x5270f4,_0x2dea48){_0x5270f4=_0x5270f4-0x0;var _0x17f368=_0xb258[_0x5270f4];return _0x17f368;};'use strict';var _=require(_0x8b25('0x0'));var util=require('util');var logger=require(_0x8b25('0x1'))(_0x8b25('0x2'));var moment=require('moment');var BPromise=require(_0x8b25('0x3'));var rp=require(_0x8b25('0x4'));var fs=require('fs');var path=require(_0x8b25('0x5'));var rimraf=require(_0x8b25('0x6'));var config=require(_0x8b25('0x7'));var attributes=require(_0x8b25('0x8'));module['exports']=function(_0x40d293,_0x3e10a5){return _0x40d293[_0x8b25('0x9')](_0x8b25('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0x8b25('0xb'),'fields':[_0x8b25('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf864=['moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','MailTransferReport','uniqueid','util','api'];(function(_0x514816,_0x57c091){var _0x5c3a43=function(_0xd4a413){while(--_0xd4a413){_0x514816['push'](_0x514816['shift']());}};_0x5c3a43(++_0x57c091);}(_0xf864,0x1de));var _0x4f86=function(_0x1416e2,_0xb666ce){_0x1416e2=_0x1416e2-0x0;var _0x1009b1=_0xf864[_0x1416e2];return _0x1009b1;};'use strict';var _=require('lodash');var util=require(_0x4f86('0x0'));var logger=require('../../config/logger')(_0x4f86('0x1'));var moment=require(_0x4f86('0x2'));var BPromise=require(_0x4f86('0x3'));var rp=require(_0x4f86('0x4'));var fs=require('fs');var path=require(_0x4f86('0x5'));var rimraf=require(_0x4f86('0x6'));var config=require(_0x4f86('0x7'));var attributes=require('./mailTransferReport.attributes');module[_0x4f86('0x8')]=function(_0x3facfb,_0x43207f){return _0x3facfb[_0x4f86('0x9')](_0x4f86('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x4f86('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 873b5d3..81d90d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63be=['message','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','debug','MailTransferReport,\x20%s,\x20%s,\x20%s','error','code','MailTransferReport,\x20%s,\x20%s'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x63be,0x144));var _0xe63b=function(_0x55a230,_0x35615a){_0x55a230=_0x55a230-0x0;var _0x43c6e8=_0x63be[_0x55a230];return _0x43c6e8;};'use strict';var _=require('lodash');var util=require(_0xe63b('0x0'));var moment=require(_0xe63b('0x1'));var BPromise=require('bluebird');var rs=require(_0xe63b('0x2'));var fs=require('fs');var Redis=require(_0xe63b('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe63b('0x4'));var logger=require(_0xe63b('0x5'))(_0xe63b('0x6'));var config=require(_0xe63b('0x7'));var jayson=require(_0xe63b('0x8'));var client=jayson[_0xe63b('0x9')][_0xe63b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25d539,_0x3a477d,_0x3c825f){return new BPromise(function(_0x1ed828,_0x557db4){return client[_0xe63b('0xb')](_0x25d539,_0x3c825f)['then'](function(_0x455104){logger['info']('MailTransferReport,\x20%s,\x20%s',_0x3a477d,_0xe63b('0xc'));logger[_0xe63b('0xd')](_0xe63b('0xe'),_0x3a477d,'request\x20sent',JSON['stringify'](_0x455104));if(_0x455104[_0xe63b('0xf')]){if(_0x455104[_0xe63b('0xf')][_0xe63b('0x10')]===0x1f4){logger[_0xe63b('0xf')](_0xe63b('0x11'),_0x3a477d,_0x455104[_0xe63b('0xf')][_0xe63b('0x12')]);return _0x557db4(_0x455104[_0xe63b('0xf')]['message']);}logger[_0xe63b('0xf')](_0xe63b('0x11'),_0x3a477d,_0x455104['error']['message']);return _0x1ed828(_0x455104[_0xe63b('0xf')]['message']);}else{logger['info'](_0xe63b('0x11'),_0x3a477d,_0xe63b('0xc'));_0x1ed828(_0x455104['result'][_0xe63b('0x12')]);}})['catch'](function(_0xc7af1c){logger[_0xe63b('0xf')](_0xe63b('0x11'),_0x3a477d,_0xc7af1c);_0x557db4(_0xc7af1c);});});}
\ No newline at end of file
+var _0x5528=['message','result','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','http','request','then','info','MailTransferReport,\x20%s,\x20%s','debug','request\x20sent','error'];(function(_0x24696b,_0x12de19){var _0x3f86b0=function(_0x11f2eb){while(--_0x11f2eb){_0x24696b['push'](_0x24696b['shift']());}};_0x3f86b0(++_0x12de19);}(_0x5528,0xad));var _0x8552=function(_0x548d7d,_0x2d41fc){_0x548d7d=_0x548d7d-0x0;var _0xb1c878=_0x5528[_0x548d7d];return _0xb1c878;};'use strict';var _=require(_0x8552('0x0'));var util=require(_0x8552('0x1'));var moment=require(_0x8552('0x2'));var BPromise=require(_0x8552('0x3'));var rs=require(_0x8552('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8552('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x8552('0x6'))(_0x8552('0x7'));var config=require(_0x8552('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x8552('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5e3bd4,_0x129792,_0x47ba0a){return new BPromise(function(_0xfc0f05,_0x53ec85){return client[_0x8552('0xa')](_0x5e3bd4,_0x47ba0a)[_0x8552('0xb')](function(_0x3b8b20){logger[_0x8552('0xc')](_0x8552('0xd'),_0x129792,'request\x20sent');logger[_0x8552('0xe')]('MailTransferReport,\x20%s,\x20%s,\x20%s',_0x129792,_0x8552('0xf'),JSON['stringify'](_0x3b8b20));if(_0x3b8b20[_0x8552('0x10')]){if(_0x3b8b20[_0x8552('0x10')]['code']===0x1f4){logger[_0x8552('0x10')]('MailTransferReport,\x20%s,\x20%s',_0x129792,_0x3b8b20['error'][_0x8552('0x11')]);return _0x53ec85(_0x3b8b20[_0x8552('0x10')][_0x8552('0x11')]);}logger['error'](_0x8552('0xd'),_0x129792,_0x3b8b20[_0x8552('0x10')]['message']);return _0xfc0f05(_0x3b8b20[_0x8552('0x10')][_0x8552('0x11')]);}else{logger[_0x8552('0xc')](_0x8552('0xd'),_0x129792,_0x8552('0xf'));_0xfc0f05(_0x3b8b20[_0x8552('0x12')]['message']);}})['catch'](function(_0x2c80a2){logger[_0x8552('0x10')](_0x8552('0xd'),_0x129792,_0x2c80a2);_0x53ec85(_0x2c80a2);});});}
\ No newline at end of file
index 6055075..af095d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc78c=['Router','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xc78c,0x19f));var _0xcc78=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xc78c[_0x3b380d];return _0x54502b;};'use strict';var multer=require(_0xcc78('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcc78('0x1'));var express=require(_0xcc78('0x2'));var router=express[_0xcc78('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xcc78('0x4'));var config=require(_0xcc78('0x5'));var controller=require('./memberReport.controller');router['get']('/',auth[_0xcc78('0x6')](),controller[_0xcc78('0x7')]);router[_0xcc78('0x8')](_0xcc78('0x9'),auth[_0xcc78('0x6')](),controller[_0xcc78('0xa')]);router['get'](_0xcc78('0xb'),auth[_0xcc78('0x6')](),controller[_0xcc78('0xc')]);router[_0xcc78('0xd')]('/',auth[_0xcc78('0x6')](),controller[_0xcc78('0xe')]);router['put'](_0xcc78('0xb'),auth[_0xcc78('0x6')](),controller[_0xcc78('0xf')]);router[_0xcc78('0x10')](_0xcc78('0xb'),auth['isAuthenticated'](),controller[_0xcc78('0x11')]);module[_0xcc78('0x12')]=router;
\ No newline at end of file
+var _0xa726=['multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x1a7846,_0x59723e){var _0x48049=function(_0x203ff6){while(--_0x203ff6){_0x1a7846['push'](_0x1a7846['shift']());}};_0x48049(++_0x59723e);}(_0xa726,0x6e));var _0x6a72=function(_0x5c4f6b,_0x2cdfce){_0x5c4f6b=_0x5c4f6b-0x0;var _0x104c4e=_0xa726[_0x5c4f6b];return _0x104c4e;};'use strict';var multer=require(_0x6a72('0x0'));var util=require('util');var path=require(_0x6a72('0x1'));var timeout=require(_0x6a72('0x2'));var express=require('express');var router=express[_0x6a72('0x3')]();var fs_extra=require(_0x6a72('0x4'));var auth=require(_0x6a72('0x5'));var interaction=require(_0x6a72('0x6'));var config=require(_0x6a72('0x7'));var controller=require(_0x6a72('0x8'));router[_0x6a72('0x9')]('/',auth[_0x6a72('0xa')](),controller[_0x6a72('0xb')]);router[_0x6a72('0x9')](_0x6a72('0xc'),auth[_0x6a72('0xa')](),controller[_0x6a72('0xd')]);router[_0x6a72('0x9')](_0x6a72('0xe'),auth[_0x6a72('0xa')](),controller[_0x6a72('0xf')]);router[_0x6a72('0x10')]('/',auth[_0x6a72('0xa')](),controller[_0x6a72('0x11')]);router['put'](_0x6a72('0xe'),auth[_0x6a72('0xa')](),controller[_0x6a72('0x12')]);router[_0x6a72('0x13')]('/:id',auth[_0x6a72('0xa')](),controller[_0x6a72('0x14')]);module[_0x6a72('0x15')]=router;
\ No newline at end of file
index 1c43eaf..40977d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e7=['STRING','DEFAULT\x20PAUSE','INTEGER','DATE','getDataValue','diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[dial\x20string]','talk:[queue]','sequelize'];(function(_0x32ffdf,_0x3b2d09){var _0x2bad7d=function(_0xd6a1e4){while(--_0xd6a1e4){_0x32ffdf['push'](_0x32ffdf['shift']());}};_0x2bad7d(++_0x3b2d09);}(_0x13e7,0x133));var _0x713e=function(_0x438912,_0x3f7f74){_0x438912=_0x438912-0x0;var _0x18112f=_0x13e7[_0x438912];return _0x18112f;};'use strict';var Sequelize=require(_0x713e('0x0'));var moment=require('moment');module['exports']={'channel':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x713e('0x1')]},'type':{'type':Sequelize['STRING'],'defaultValue':_0x713e('0x2'),'comment':'LOGIN,\x20PAUSE,\x20TALKING'},'duration':{'type':Sequelize[_0x713e('0x3')]},'enterAt':{'type':Sequelize[_0x713e('0x4')]},'exitAt':{'type':Sequelize[_0x713e('0x4')],'set':function(_0xccb7e){var _0x465b77=moment(_0xccb7e);var _0x47c066=moment(this[_0x713e('0x5')]('enterAt'));var _0x4c62a9=_0x465b77[_0x713e('0x6')](_0x47c066,_0x713e('0x7'));this[_0x713e('0x8')](_0x713e('0x9'),_0xccb7e);this[_0x713e('0x8')](_0x713e('0xa'),_0x4c62a9>=0x0?_0x4c62a9:null);}},'data1':{'type':Sequelize[_0x713e('0x1')],'comment':_0x713e('0xb')},'data2':{'type':Sequelize[_0x713e('0x1')],'comment':'talk:[start]'},'data3':{'type':Sequelize['STRING'],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0x713e('0x1')],'comment':_0x713e('0xc')},'data5':{'type':Sequelize['STRING'],'comment':_0x713e('0xd')},'role':{'type':Sequelize['STRING']},'internal':{'type':Sequelize[_0x713e('0x3')]},'uniqueid':{'type':Sequelize[_0x713e('0x1')]}};
\ No newline at end of file
+var _0x05b9=['talk:[destination]','talk:[dial\x20string]','talk:[queue]','sequelize','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue','enterAt','seconds','setDataValue','exitAt','talk:[start]'];(function(_0x1db351,_0x4e8f77){var _0x316ebe=function(_0x22b8f6){while(--_0x22b8f6){_0x1db351['push'](_0x1db351['shift']());}};_0x316ebe(++_0x4e8f77);}(_0x05b9,0x103));var _0x905b=function(_0x541260,_0x4c7f2e){_0x541260=_0x541260-0x0;var _0x1dd2b5=_0x05b9[_0x541260];return _0x1dd2b5;};'use strict';var Sequelize=require(_0x905b('0x0'));var moment=require(_0x905b('0x1'));module[_0x905b('0x2')]={'channel':{'type':Sequelize[_0x905b('0x3')]},'membername':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x905b('0x3')],'defaultValue':_0x905b('0x4'),'comment':_0x905b('0x5')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0x905b('0x6')]},'exitAt':{'type':Sequelize[_0x905b('0x6')],'set':function(_0x148bee){var _0x8571eb=moment(_0x148bee);var _0x539106=moment(this[_0x905b('0x7')](_0x905b('0x8')));var _0x40ae01=_0x8571eb['diff'](_0x539106,_0x905b('0x9'));this[_0x905b('0xa')](_0x905b('0xb'),_0x148bee);this[_0x905b('0xa')]('duration',_0x40ae01>=0x0?_0x40ae01:null);}},'data1':{'type':Sequelize[_0x905b('0x3')],'comment':'talk:[inbound,\x20outbound],\x20pause:[reason]'},'data2':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xc')},'data3':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xd')},'data4':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xe')},'data5':{'type':Sequelize[_0x905b('0x3')],'comment':_0x905b('0xf')},'role':{'type':Sequelize[_0x905b('0x3')]},'internal':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index fba41c2..03076ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x3005e9,_0x523556){var _0x322638=function(_0x38d453){while(--_0x38d453){_0x3005e9['push'](_0x3005e9['shift']());}};_0x322638(++_0x523556);}(_0x9c44,0x178));var _0x49c4=function(_0x255d5b,_0x4f6f35){_0x255d5b=_0x255d5b-0x0;var _0x3e141a=_0x9c44[_0x255d5b];return _0x3e141a;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
+var _0x3e74=['show','params','options','find','catch','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','end','json','undefined','limit','offset','count','status','set','Content-Range','apply','save','update','then','destroy','sendStatus','name','send','index','map','MemberReport','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows'];(function(_0x423f53,_0x49db05){var _0x1c473d=function(_0x1568d7){while(--_0x1568d7){_0x423f53['push'](_0x423f53['shift']());}};_0x1c473d(++_0x49db05);}(_0x3e74,0x175));var _0x43e7=function(_0x948e7a,_0x3f2005){_0x948e7a=_0x948e7a-0x0;var _0x9b54a5=_0x3e74[_0x948e7a];return _0x9b54a5;};'use strict';var emlformat=require(_0x43e7('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43e7('0x1'));var jsonpatch=require(_0x43e7('0x2'));var rp=require(_0x43e7('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x43e7('0x4'));var util=require('util');var path=require(_0x43e7('0x5'));var sox=require(_0x43e7('0x6'));var csv=require(_0x43e7('0x7'));var ejs=require(_0x43e7('0x8'));var fs=require('fs');var fs_extra=require(_0x43e7('0x9'));var _=require('lodash');var squel=require(_0x43e7('0xa'));var crypto=require(_0x43e7('0xb'));var jsforce=require(_0x43e7('0xc'));var deskjs=require(_0x43e7('0xd'));var toCsv=require(_0x43e7('0x7'));var querystring=require('querystring');var Papa=require(_0x43e7('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43e7('0xf'));var as=require(_0x43e7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x43e7('0x11'))('api');var utils=require(_0x43e7('0x12'));var config=require(_0x43e7('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x43e7('0x14'))['db'];function respondWithStatusCode(_0xc960ea,_0x2718d3){_0x2718d3=_0x2718d3||0xcc;return function(_0x3bb83f){if(_0x3bb83f){return _0xc960ea['sendStatus'](_0x2718d3);}return _0xc960ea['status'](_0x2718d3)[_0x43e7('0x15')]();};}function respondWithResult(_0x21fdd3,_0x44b0bd){_0x44b0bd=_0x44b0bd||0xc8;return function(_0x51b974){if(_0x51b974){return _0x21fdd3['status'](_0x44b0bd)[_0x43e7('0x16')](_0x51b974);}};}function respondWithFilteredResult(_0x14c146,_0x203378){return function(_0x328445){if(_0x328445){var _0x4de324=typeof _0x203378['offset']===_0x43e7('0x17')&&typeof _0x203378[_0x43e7('0x18')]===_0x43e7('0x17');var _0x5d346f=_0x328445['count'];var _0x446986=_0x4de324?0x0:_0x203378[_0x43e7('0x19')];var _0x9037d3=_0x4de324?_0x328445[_0x43e7('0x1a')]:_0x203378[_0x43e7('0x19')]+_0x203378[_0x43e7('0x18')];var _0x619236;if(_0x9037d3>=_0x5d346f){_0x9037d3=_0x5d346f;_0x619236=0xc8;}else{_0x619236=0xce;}_0x14c146[_0x43e7('0x1b')](_0x619236);return _0x14c146[_0x43e7('0x1c')](_0x43e7('0x1d'),_0x446986+'-'+_0x9037d3+'/'+_0x5d346f)[_0x43e7('0x16')](_0x328445);}return null;};}function patchUpdates(_0x177ee1){return function(_0x4b5d64){try{jsonpatch[_0x43e7('0x1e')](_0x4b5d64,_0x177ee1,!![]);}catch(_0x3c6625){return BPromise['reject'](_0x3c6625);}return _0x4b5d64[_0x43e7('0x1f')]();};}function saveUpdates(_0x3e281e,_0x3945bb){return function(_0x28aacc){if(_0x28aacc){return _0x28aacc[_0x43e7('0x20')](_0x3e281e)[_0x43e7('0x21')](function(_0x54a9e7){return _0x54a9e7;});}return null;};}function removeEntity(_0x454359,_0x4eea52){return function(_0x4c9df3){if(_0x4c9df3){return _0x4c9df3[_0x43e7('0x22')]()[_0x43e7('0x21')](function(){_0x454359['status'](0xcc)[_0x43e7('0x15')]();});}};}function handleEntityNotFound(_0x4ca5cf,_0x326dab){return function(_0x5c5e67){if(!_0x5c5e67){_0x4ca5cf[_0x43e7('0x23')](0x194);}return _0x5c5e67;};}function handleError(_0x1b5f50,_0x20888b){_0x20888b=_0x20888b||0x1f4;return function(_0x405f85){logger['error'](_0x405f85['stack']);if(_0x405f85[_0x43e7('0x24')]){delete _0x405f85['name'];}_0x1b5f50[_0x43e7('0x1b')](_0x20888b)[_0x43e7('0x25')](_0x405f85);};}exports[_0x43e7('0x26')]=function(_0xb1fc63,_0x5087d7){var _0x33a1a5={},_0x4690a6={},_0x45b675={'count':0x0,'rows':[]};var _0x50f9f5=_[_0x43e7('0x27')](db[_0x43e7('0x28')][_0x43e7('0x29')],function(_0x31b2a6){return{'name':_0x31b2a6[_0x43e7('0x2a')],'type':_0x31b2a6[_0x43e7('0x2b')][_0x43e7('0x2c')]};});_0x4690a6[_0x43e7('0x2d')]=_[_0x43e7('0x27')](_0x50f9f5,_0x43e7('0x24'));_0x4690a6['query']=_[_0x43e7('0x2e')](_0xb1fc63[_0x43e7('0x2f')]);_0x4690a6[_0x43e7('0x30')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],_0x4690a6['query']);_0x33a1a5[_0x43e7('0x32')]=_[_0x43e7('0x31')](_0x4690a6[_0x43e7('0x2d')],qs[_0x43e7('0x33')](_0xb1fc63['query']['fields']));_0x33a1a5['attributes']=_0x33a1a5[_0x43e7('0x32')][_0x43e7('0x34')]?_0x33a1a5[_0x43e7('0x32')]:_0x4690a6[_0x43e7('0x2d')];if(!_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x35')]('nolimit')){_0x33a1a5['limit']=qs['limit'](_0xb1fc63['query']['limit']);_0x33a1a5['offset']=qs['offset'](_0xb1fc63[_0x43e7('0x2f')]['offset']);}_0x33a1a5[_0x43e7('0x36')]=qs[_0x43e7('0x37')](_0xb1fc63[_0x43e7('0x2f')][_0x43e7('0x37')]);_0x33a1a5[_0x43e7('0x38')]=qs[_0x43e7('0x30')](_[_0x43e7('0x39')](_0xb1fc63['query'],_0x4690a6['filters']),_0x50f9f5);if(_0xb1fc63['query'][_0x43e7('0x3a')]){_0x33a1a5[_0x43e7('0x38')]=_[_0x43e7('0x3b')](_0x33a1a5[_0x43e7('0x38')],{'$or':_[_0x43e7('0x27')](_0x50f9f5,function(_0x1ed538){if(_0x1ed538[_0x43e7('0x2b')]!==_0x43e7('0x3c')){var _0x55c798={};_0x55c798[_0x1ed538[_0x43e7('0x24')]]={'$like':'%'+_0xb1fc63[_0x43e7('0x2f')]['filter']+'%'};return _0x55c798;}})});}_0x33a1a5=_[_0x43e7('0x3b')]({},_0x33a1a5,_0xb1fc63['options']);var _0x44d8e4={'where':_0x33a1a5[_0x43e7('0x38')]};return db[_0x43e7('0x28')][_0x43e7('0x1a')](_0x44d8e4)[_0x43e7('0x21')](function(_0x234d8f){_0x45b675['count']=_0x234d8f;if(_0xb1fc63['query'][_0x43e7('0x3d')]){_0x33a1a5[_0x43e7('0x3e')]=[{'all':!![]}];}return db[_0x43e7('0x28')][_0x43e7('0x3f')](_0x33a1a5);})[_0x43e7('0x21')](function(_0x4a4a85){_0x45b675[_0x43e7('0x40')]=_0x4a4a85;return _0x45b675;})[_0x43e7('0x21')](respondWithFilteredResult(_0x5087d7,_0x33a1a5))['catch'](handleError(_0x5087d7,null));};exports[_0x43e7('0x41')]=function(_0x51a69c,_0x2ad8ef){var _0x504101={'raw':!![],'where':{'id':_0x51a69c[_0x43e7('0x42')]['id']}},_0x3d81ae={};_0x3d81ae[_0x43e7('0x2d')]=_[_0x43e7('0x2e')](db['MemberReport']['rawAttributes']);_0x3d81ae[_0x43e7('0x2f')]=_[_0x43e7('0x2e')](_0x51a69c[_0x43e7('0x2f')]);_0x3d81ae[_0x43e7('0x30')]=_['intersection'](_0x3d81ae['model'],_0x3d81ae['query']);_0x504101[_0x43e7('0x32')]=_['intersection'](_0x3d81ae[_0x43e7('0x2d')],qs['fields'](_0x51a69c['query'][_0x43e7('0x33')]));_0x504101['attributes']=_0x504101[_0x43e7('0x32')][_0x43e7('0x34')]?_0x504101[_0x43e7('0x32')]:_0x3d81ae[_0x43e7('0x2d')];if(_0x51a69c['query'][_0x43e7('0x3d')]){_0x504101[_0x43e7('0x3e')]=[{'all':!![]}];}_0x504101=_[_0x43e7('0x3b')]({},_0x504101,_0x51a69c[_0x43e7('0x43')]);return db[_0x43e7('0x28')][_0x43e7('0x44')](_0x504101)['then'](handleEntityNotFound(_0x2ad8ef,null))['then'](respondWithResult(_0x2ad8ef,null))[_0x43e7('0x45')](handleError(_0x2ad8ef,null));};exports[_0x43e7('0x46')]=function(_0x212841,_0x4c00a8){return db['MemberReport']['create'](_0x212841[_0x43e7('0x47')],{})[_0x43e7('0x21')](respondWithResult(_0x4c00a8,0xc9))['catch'](handleError(_0x4c00a8,null));};exports[_0x43e7('0x20')]=function(_0x47686e,_0x3c96fe){if(_0x47686e['body']['id']){delete _0x47686e['body']['id'];}return db['MemberReport']['find']({'where':{'id':_0x47686e[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x3c96fe,null))['then'](saveUpdates(_0x47686e[_0x43e7('0x47')],null))[_0x43e7('0x21')](respondWithResult(_0x3c96fe,null))[_0x43e7('0x45')](handleError(_0x3c96fe,null));};exports[_0x43e7('0x22')]=function(_0x4a0ce5,_0x2718d5){return db['MemberReport']['find']({'where':{'id':_0x4a0ce5[_0x43e7('0x42')]['id']}})[_0x43e7('0x21')](handleEntityNotFound(_0x2718d5,null))[_0x43e7('0x21')](removeEntity(_0x2718d5,null))[_0x43e7('0x45')](handleError(_0x2718d5,null));};exports[_0x43e7('0x48')]=function(_0x2351cf,_0x1cd87c){return db[_0x43e7('0x28')][_0x43e7('0x48')]()[_0x43e7('0x21')](respondWithResult(_0x1cd87c,null))['catch'](handleError(_0x1cd87c,null));};
\ No newline at end of file
index e86abae..bb232ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fcf=['bluebird','request-promise','path','rimraf','../../config/environment','./memberReport.attributes','exports','define','MemberReport','membername','lodash','util','../../config/logger','api','moment'];(function(_0x1f3575,_0x37dd77){var _0xf95ca3=function(_0x2c5054){while(--_0x2c5054){_0x1f3575['push'](_0x1f3575['shift']());}};_0xf95ca3(++_0x37dd77);}(_0x1fcf,0x145));var _0xf1fc=function(_0x50726c,_0x4fdec4){_0x50726c=_0x50726c-0x0;var _0x325e0c=_0x1fcf[_0x50726c];return _0x325e0c;};'use strict';var _=require(_0xf1fc('0x0'));var util=require(_0xf1fc('0x1'));var logger=require(_0xf1fc('0x2'))(_0xf1fc('0x3'));var moment=require(_0xf1fc('0x4'));var BPromise=require(_0xf1fc('0x5'));var rp=require(_0xf1fc('0x6'));var fs=require('fs');var path=require(_0xf1fc('0x7'));var rimraf=require(_0xf1fc('0x8'));var config=require(_0xf1fc('0x9'));var attributes=require(_0xf1fc('0xa'));module[_0xf1fc('0xb')]=function(_0x4e21ac,_0xe83467){return _0x4e21ac[_0xf1fc('0xc')](_0xf1fc('0xd'),attributes,{'tableName':'report_member','paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xf1fc('0xe'),'interface']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xbfe8=['api','moment','path','rimraf','./memberReport.attributes','exports','define','MemberReport','report_member','membername_interface','membername','interface','util'];(function(_0x170772,_0x1f1ee7){var _0x3ef69c=function(_0x4cde12){while(--_0x4cde12){_0x170772['push'](_0x170772['shift']());}};_0x3ef69c(++_0x1f1ee7);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x190c3c,_0x2c70d1){_0x190c3c=_0x190c3c-0x0;var _0x2830a5=_0xbfe8[_0x190c3c];return _0x2830a5;};'use strict';var _=require('lodash');var util=require(_0x8bfe('0x0'));var logger=require('../../config/logger')(_0x8bfe('0x1'));var moment=require(_0x8bfe('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8bfe('0x3'));var rimraf=require(_0x8bfe('0x4'));var config=require('../../config/environment');var attributes=require(_0x8bfe('0x5'));module[_0x8bfe('0x6')]=function(_0x314a9a,_0x4933c9){return _0x314a9a[_0x8bfe('0x7')](_0x8bfe('0x8'),attributes,{'tableName':_0x8bfe('0x9'),'paranoid':![],'indexes':[{'name':_0x8bfe('0xa'),'fields':[_0x8bfe('0xb'),_0x8bfe('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 9a20212..e735e03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe626=['CreateMemberReport','create','raw','UpdateMemberReport','update','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','info','request\x20sent','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','MemberReport,\x20%s,\x20%s','message','result','catch','GetMemberReport','MemberReport','findAll','options','where','attributes','limit','map','include','model','then','debug'];(function(_0x420f2a,_0x2cc58d){var _0x28f802=function(_0x3329cc){while(--_0x3329cc){_0x420f2a['push'](_0x420f2a['shift']());}};_0x28f802(++_0x2cc58d);}(_0xe626,0x9d));var _0x6e62=function(_0x4f8d13,_0x14dca7){_0x4f8d13=_0x4f8d13-0x0;var _0x20b936=_0xe626[_0x4f8d13];return _0x20b936;};'use strict';var _=require(_0x6e62('0x0'));var util=require(_0x6e62('0x1'));var moment=require(_0x6e62('0x2'));var BPromise=require(_0x6e62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6e62('0x4'));var db=require(_0x6e62('0x5'))['db'];var utils=require(_0x6e62('0x6'));var logger=require(_0x6e62('0x7'))(_0x6e62('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x6e62('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x157047,_0x55165e,_0x32fd89){return new BPromise(function(_0x1dfbaf,_0x16fa52){return client[_0x6e62('0xa')](_0x157047,_0x32fd89)['then'](function(_0xa6e8be){logger[_0x6e62('0xb')]('MemberReport,\x20%s,\x20%s',_0x55165e,_0x6e62('0xc'));logger['debug'](_0x6e62('0xd'),_0x55165e,'request\x20sent',JSON[_0x6e62('0xe')](_0xa6e8be));if(_0xa6e8be['error']){if(_0xa6e8be[_0x6e62('0xf')][_0x6e62('0x10')]===0x1f4){logger[_0x6e62('0xf')](_0x6e62('0x11'),_0x55165e,_0xa6e8be[_0x6e62('0xf')][_0x6e62('0x12')]);return _0x16fa52(_0xa6e8be[_0x6e62('0xf')]['message']);}logger['error'](_0x6e62('0x11'),_0x55165e,_0xa6e8be[_0x6e62('0xf')]['message']);return _0x1dfbaf(_0xa6e8be[_0x6e62('0xf')][_0x6e62('0x12')]);}else{logger[_0x6e62('0xb')](_0x6e62('0x11'),_0x55165e,'request\x20sent');_0x1dfbaf(_0xa6e8be[_0x6e62('0x13')][_0x6e62('0x12')]);}})[_0x6e62('0x14')](function(_0x35748b){logger[_0x6e62('0xf')](_0x6e62('0x11'),_0x55165e,_0x35748b);_0x16fa52(_0x35748b);});});}exports[_0x6e62('0x15')]=function(_0x45d7ee){var _0x474e58=this;return new Promise(function(_0x15bce5,_0x50c535){return db[_0x6e62('0x16')][_0x6e62('0x17')]({'raw':_0x45d7ee['options']?_0x45d7ee[_0x6e62('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x45d7ee[_0x6e62('0x18')]?_0x45d7ee[_0x6e62('0x18')][_0x6e62('0x19')]||null:null,'attributes':_0x45d7ee[_0x6e62('0x18')]?_0x45d7ee[_0x6e62('0x18')][_0x6e62('0x1a')]||null:null,'limit':_0x45d7ee[_0x6e62('0x18')]?_0x45d7ee[_0x6e62('0x18')][_0x6e62('0x1b')]||null:null,'include':_0x45d7ee[_0x6e62('0x18')]?_0x45d7ee[_0x6e62('0x18')]['include']?_[_0x6e62('0x1c')](_0x45d7ee['options'][_0x6e62('0x1d')],function(_0x3dad96){return{'model':db[_0x3dad96[_0x6e62('0x1e')]],'as':_0x3dad96['as'],'attributes':_0x3dad96[_0x6e62('0x1a')],'include':_0x3dad96[_0x6e62('0x1d')]?_[_0x6e62('0x1c')](_0x3dad96[_0x6e62('0x1d')],function(_0x3a1683){return{'model':db[_0x3a1683[_0x6e62('0x1e')]],'as':_0x3a1683['as'],'attributes':_0x3a1683[_0x6e62('0x1a')],'include':_0x3a1683['include']?_[_0x6e62('0x1c')](_0x3a1683['include'],function(_0x2f9c68){return{'model':db[_0x2f9c68[_0x6e62('0x1e')]],'as':_0x2f9c68['as'],'attributes':_0x2f9c68[_0x6e62('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x6e62('0x1f')](function(_0x3b7dfa){logger[_0x6e62('0xb')]('GetMemberReport',_0x45d7ee);logger[_0x6e62('0x20')](_0x6e62('0x15'),_0x45d7ee,JSON[_0x6e62('0xe')](_0x3b7dfa));_0x15bce5(_0x3b7dfa);})['catch'](function(_0x58afab){logger[_0x6e62('0xf')]('GetMemberReport',_0x58afab['message'],_0x45d7ee);_0x50c535(_0x474e58['error'](0x1f4,_0x58afab['message']));});});};exports[_0x6e62('0x21')]=function(_0x4c6af1){var _0x2d9172=this;return new Promise(function(_0x5a8516,_0x1dc29e){return db[_0x6e62('0x16')][_0x6e62('0x22')](_0x4c6af1['body'],{'raw':_0x4c6af1['options']?_0x4c6af1[_0x6e62('0x18')][_0x6e62('0x23')]===undefined?!![]:![]:!![]})['then'](function(_0x5e2969){logger['info'](_0x6e62('0x21'),_0x4c6af1);logger['debug'](_0x6e62('0x21'),_0x4c6af1,JSON[_0x6e62('0xe')](_0x5e2969));_0x5a8516(_0x5e2969);})[_0x6e62('0x14')](function(_0xe525c){logger[_0x6e62('0xf')]('CreateMemberReport',_0xe525c['message'],_0x4c6af1);_0x1dc29e(_0x2d9172[_0x6e62('0xf')](0x1f4,_0xe525c[_0x6e62('0x12')]));});});};exports[_0x6e62('0x24')]=function(_0x372f72){var _0xf650a=this;return new Promise(function(_0xfe729c,_0x9c62b){return db[_0x6e62('0x16')][_0x6e62('0x25')](_0x372f72['body'],{'raw':_0x372f72[_0x6e62('0x18')]?_0x372f72[_0x6e62('0x18')][_0x6e62('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x372f72['options']?_0x372f72[_0x6e62('0x18')][_0x6e62('0x19')]||null:null,'attributes':_0x372f72['options']?_0x372f72[_0x6e62('0x18')][_0x6e62('0x1a')]||null:null,'limit':_0x372f72[_0x6e62('0x18')]?_0x372f72[_0x6e62('0x18')][_0x6e62('0x1b')]||null:null})['then'](function(_0x34f99e){logger[_0x6e62('0xb')](_0x6e62('0x24'),_0x372f72);logger[_0x6e62('0x20')](_0x6e62('0x24'),_0x372f72,JSON['stringify'](_0x34f99e));_0xfe729c(_0x34f99e);})[_0x6e62('0x14')](function(_0x6f8397){logger[_0x6e62('0xf')]('UpdateMemberReport',_0x6f8397[_0x6e62('0x12')],_0x372f72);_0x9c62b(_0xf650a[_0x6e62('0xf')](0x1f4,_0x6f8397['message']));});});};
\ No newline at end of file
+var _0x5db2=['limit','include','map','model','attributes','then','CreateMemberReport','create','UpdateMemberReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where'];(function(_0x38779c,_0x4708b7){var _0x2957ff=function(_0x140f39){while(--_0x140f39){_0x38779c['push'](_0x38779c['shift']());}};_0x2957ff(++_0x4708b7);}(_0x5db2,0xf3));var _0x25db=function(_0x327717,_0x2acede){_0x327717=_0x327717-0x0;var _0xc907ad=_0x5db2[_0x327717];return _0xc907ad;};'use strict';var _=require(_0x25db('0x0'));var util=require(_0x25db('0x1'));var moment=require(_0x25db('0x2'));var BPromise=require('bluebird');var rs=require(_0x25db('0x3'));var fs=require('fs');var Redis=require(_0x25db('0x4'));var db=require(_0x25db('0x5'))['db'];var utils=require(_0x25db('0x6'));var logger=require(_0x25db('0x7'))(_0x25db('0x8'));var config=require(_0x25db('0x9'));var jayson=require(_0x25db('0xa'));var client=jayson[_0x25db('0xb')][_0x25db('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x497759,_0x3573fa,_0x310762){return new BPromise(function(_0x40f7eb,_0x2ad688){return client['request'](_0x497759,_0x310762)['then'](function(_0x2e6018){logger[_0x25db('0xd')](_0x25db('0xe'),_0x3573fa,_0x25db('0xf'));logger[_0x25db('0x10')](_0x25db('0x11'),_0x3573fa,_0x25db('0xf'),JSON[_0x25db('0x12')](_0x2e6018));if(_0x2e6018[_0x25db('0x13')]){if(_0x2e6018[_0x25db('0x13')][_0x25db('0x14')]===0x1f4){logger[_0x25db('0x13')]('MemberReport,\x20%s,\x20%s',_0x3573fa,_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);return _0x2ad688(_0x2e6018[_0x25db('0x13')]['message']);}logger[_0x25db('0x13')](_0x25db('0xe'),_0x3573fa,_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);return _0x40f7eb(_0x2e6018[_0x25db('0x13')][_0x25db('0x15')]);}else{logger[_0x25db('0xd')](_0x25db('0xe'),_0x3573fa,_0x25db('0xf'));_0x40f7eb(_0x2e6018[_0x25db('0x16')]['message']);}})[_0x25db('0x17')](function(_0x58fccf){logger['error'](_0x25db('0xe'),_0x3573fa,_0x58fccf);_0x2ad688(_0x58fccf);});});}exports[_0x25db('0x18')]=function(_0x2b018b){var _0x31399b=this;return new Promise(function(_0x187fbc,_0x134bc8){return db[_0x25db('0x19')][_0x25db('0x1a')]({'raw':_0x2b018b[_0x25db('0x1b')]?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1c')]===undefined?!![]:![]:!![],'where':_0x2b018b[_0x25db('0x1b')]?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1d')]||null:null,'attributes':_0x2b018b[_0x25db('0x1b')]?_0x2b018b['options']['attributes']||null:null,'limit':_0x2b018b['options']?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1e')]||null:null,'include':_0x2b018b['options']?_0x2b018b[_0x25db('0x1b')][_0x25db('0x1f')]?_[_0x25db('0x20')](_0x2b018b[_0x25db('0x1b')]['include'],function(_0x3f9129){return{'model':db[_0x3f9129[_0x25db('0x21')]],'as':_0x3f9129['as'],'attributes':_0x3f9129[_0x25db('0x22')],'include':_0x3f9129[_0x25db('0x1f')]?_[_0x25db('0x20')](_0x3f9129[_0x25db('0x1f')],function(_0x367833){return{'model':db[_0x367833['model']],'as':_0x367833['as'],'attributes':_0x367833[_0x25db('0x22')],'include':_0x367833[_0x25db('0x1f')]?_['map'](_0x367833[_0x25db('0x1f')],function(_0x13d989){return{'model':db[_0x13d989[_0x25db('0x21')]],'as':_0x13d989['as'],'attributes':_0x13d989[_0x25db('0x22')]};}):[]};}):[]};}):[]:[]})[_0x25db('0x23')](function(_0x196f9d){logger[_0x25db('0xd')](_0x25db('0x18'),_0x2b018b);logger[_0x25db('0x10')]('GetMemberReport',_0x2b018b,JSON[_0x25db('0x12')](_0x196f9d));_0x187fbc(_0x196f9d);})['catch'](function(_0x33eb6c){logger[_0x25db('0x13')](_0x25db('0x18'),_0x33eb6c[_0x25db('0x15')],_0x2b018b);_0x134bc8(_0x31399b[_0x25db('0x13')](0x1f4,_0x33eb6c[_0x25db('0x15')]));});});};exports[_0x25db('0x24')]=function(_0x449529){var _0x510f03=this;return new Promise(function(_0x2e912a,_0x15c163){return db['MemberReport'][_0x25db('0x25')](_0x449529['body'],{'raw':_0x449529[_0x25db('0x1b')]?_0x449529[_0x25db('0x1b')][_0x25db('0x1c')]===undefined?!![]:![]:!![]})[_0x25db('0x23')](function(_0x180d26){logger[_0x25db('0xd')](_0x25db('0x24'),_0x449529);logger[_0x25db('0x10')](_0x25db('0x24'),_0x449529,JSON['stringify'](_0x180d26));_0x2e912a(_0x180d26);})[_0x25db('0x17')](function(_0x2b4a9c){logger[_0x25db('0x13')](_0x25db('0x24'),_0x2b4a9c['message'],_0x449529);_0x15c163(_0x510f03['error'](0x1f4,_0x2b4a9c[_0x25db('0x15')]));});});};exports[_0x25db('0x26')]=function(_0x21bbdd){var _0x234a5f=this;return new Promise(function(_0xc5b6d7,_0x1e9802){return db[_0x25db('0x19')]['update'](_0x21bbdd['body'],{'raw':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')]['where']||null:null,'attributes':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')][_0x25db('0x22')]||null:null,'limit':_0x21bbdd[_0x25db('0x1b')]?_0x21bbdd[_0x25db('0x1b')][_0x25db('0x1e')]||null:null})[_0x25db('0x23')](function(_0x1b621e){logger[_0x25db('0xd')](_0x25db('0x26'),_0x21bbdd);logger[_0x25db('0x10')](_0x25db('0x26'),_0x21bbdd,JSON['stringify'](_0x1b621e));_0xc5b6d7(_0x1b621e);})[_0x25db('0x17')](function(_0x57612a){logger[_0x25db('0x13')](_0x25db('0x26'),_0x57612a[_0x25db('0x15')],_0x21bbdd);_0x1e9802(_0x234a5f[_0x25db('0x13')](0x1f4,_0x57612a[_0x25db('0x15')]));});});};
\ No newline at end of file
index e83740a..95d7261 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb209=['connect-timeout','express','Router','fs-extra','../../components/interaction/service','./migration.controller','exports','multer','util','path'];(function(_0x1466a0,_0x3f41b3){var _0x5f55b2=function(_0x2926ae){while(--_0x2926ae){_0x1466a0['push'](_0x1466a0['shift']());}};_0x5f55b2(++_0x3f41b3);}(_0xb209,0x151));var _0x9b20=function(_0x33c9b7,_0x3ecdca){_0x33c9b7=_0x33c9b7-0x0;var _0x185e85=_0xb209[_0x33c9b7];return _0x185e85;};'use strict';var multer=require(_0x9b20('0x0'));var util=require(_0x9b20('0x1'));var path=require(_0x9b20('0x2'));var timeout=require(_0x9b20('0x3'));var express=require(_0x9b20('0x4'));var router=express[_0x9b20('0x5')]();var fs_extra=require(_0x9b20('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x9b20('0x7'));var config=require('../../config/environment');var controller=require(_0x9b20('0x8'));router['get']('/',controller['index']);module[_0x9b20('0x9')]=router;
\ No newline at end of file
+var _0xcafb=['Router','fs-extra','../../components/auth/service','../../config/environment','./migration.controller','get','index','exports','util','path','connect-timeout','express'];(function(_0xb609f7,_0xb06340){var _0x296bda=function(_0xbc343d){while(--_0xbc343d){_0xb609f7['push'](_0xb609f7['shift']());}};_0x296bda(++_0xb06340);}(_0xcafb,0x188));var _0xbcaf=function(_0x12716a,_0x428133){_0x12716a=_0x12716a-0x0;var _0x50fd03=_0xcafb[_0x12716a];return _0x50fd03;};'use strict';var multer=require('multer');var util=require(_0xbcaf('0x0'));var path=require(_0xbcaf('0x1'));var timeout=require(_0xbcaf('0x2'));var express=require(_0xbcaf('0x3'));var router=express[_0xbcaf('0x4')]();var fs_extra=require(_0xbcaf('0x5'));var auth=require(_0xbcaf('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xbcaf('0x7'));var controller=require(_0xbcaf('0x8'));router[_0xbcaf('0x9')]('/',controller[_0xbcaf('0xa')]);module[_0xbcaf('0xb')]=router;
\ No newline at end of file
index 9b5a029..1e8a5ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3996=['STRING','exports'];(function(_0x511a17,_0x203ada){var _0xfca535=function(_0x35e4de){while(--_0x35e4de){_0x511a17['push'](_0x511a17['shift']());}};_0xfca535(++_0x203ada);}(_0x3996,0xc1));var _0x6399=function(_0xc1c74e,_0x235988){_0xc1c74e=_0xc1c74e-0x0;var _0x5a02d8=_0x3996[_0xc1c74e];return _0x5a02d8;};'use strict';var Sequelize=require('sequelize');module[_0x6399('0x0')]={'version':{'type':Sequelize[_0x6399('0x1')],'unique':'version'}};
\ No newline at end of file
+var _0xdb0e=['exports','STRING','version','sequelize'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0xdb0e,0x163));var _0xedb0=function(_0x3b0999,_0x3c9835){_0x3b0999=_0x3b0999-0x0;var _0x585226=_0xdb0e[_0x3b0999];return _0x585226;};'use strict';var Sequelize=require(_0xedb0('0x0'));module[_0xedb0('0x1')]={'version':{'type':Sequelize[_0xedb0('0x2')],'unique':_0xedb0('0x3')}};
\ No newline at end of file
index 1be72b6..c76f436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7243=['api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','index','Migration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','include','findAll','rows','catch','rimraf','zip-dir','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0xe9c15a,_0x128c1c){var _0x3b543b=function(_0x435fc4){while(--_0x435fc4){_0xe9c15a['push'](_0xe9c15a['shift']());}};_0x3b543b(++_0x128c1c);}(_0x7243,0x7d));var _0x3724=function(_0x5e8220,_0x57de05){_0x5e8220=_0x5e8220-0x0;var _0x25884f=_0x7243[_0x5e8220];return _0x25884f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3724('0x0'));var zipdir=require(_0x3724('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x3724('0x2'));var BPromise=require(_0x3724('0x3'));var Mustache=require(_0x3724('0x4'));var util=require(_0x3724('0x5'));var path=require(_0x3724('0x6'));var sox=require('sox');var csv=require(_0x3724('0x7'));var ejs=require(_0x3724('0x8'));var fs=require('fs');var fs_extra=require(_0x3724('0x9'));var _=require(_0x3724('0xa'));var squel=require(_0x3724('0xb'));var crypto=require(_0x3724('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3724('0xd'));var toCsv=require(_0x3724('0x7'));var querystring=require(_0x3724('0xe'));var Papa=require(_0x3724('0xf'));var Redis=require(_0x3724('0x10'));var authService=require(_0x3724('0x11'));var qs=require(_0x3724('0x12'));var as=require(_0x3724('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3724('0x14'))(_0x3724('0x15'));var utils=require(_0x3724('0x16'));var config=require(_0x3724('0x17'));var licenseUtil=require(_0x3724('0x18'));var db=require(_0x3724('0x19'))['db'];function respondWithStatusCode(_0x215755,_0x1625f3){_0x1625f3=_0x1625f3||0xcc;return function(_0x245837){if(_0x245837){return _0x215755[_0x3724('0x1a')](_0x1625f3);}return _0x215755['status'](_0x1625f3)['end']();};}function respondWithResult(_0x1b2604,_0x5b1495){_0x5b1495=_0x5b1495||0xc8;return function(_0x4ad4ec){if(_0x4ad4ec){return _0x1b2604[_0x3724('0x1b')](_0x5b1495)[_0x3724('0x1c')](_0x4ad4ec);}};}function respondWithFilteredResult(_0x44a4e3,_0x1c7741){return function(_0x4b0ae7){if(_0x4b0ae7){var _0x451869=typeof _0x1c7741[_0x3724('0x1d')]===_0x3724('0x1e')&&typeof _0x1c7741[_0x3724('0x1f')]===_0x3724('0x1e');var _0x1db760=_0x4b0ae7[_0x3724('0x20')];var _0x22a104=_0x451869?0x0:_0x1c7741[_0x3724('0x1d')];var _0x3a706e=_0x451869?_0x4b0ae7['count']:_0x1c7741['offset']+_0x1c7741[_0x3724('0x1f')];var _0x39322d;if(_0x3a706e>=_0x1db760){_0x3a706e=_0x1db760;_0x39322d=0xc8;}else{_0x39322d=0xce;}_0x44a4e3['status'](_0x39322d);return _0x44a4e3[_0x3724('0x21')](_0x3724('0x22'),_0x22a104+'-'+_0x3a706e+'/'+_0x1db760)[_0x3724('0x1c')](_0x4b0ae7);}return null;};}function patchUpdates(_0x35f85d){return function(_0x1d092e){try{jsonpatch[_0x3724('0x23')](_0x1d092e,_0x35f85d,!![]);}catch(_0x4a286f){return BPromise[_0x3724('0x24')](_0x4a286f);}return _0x1d092e[_0x3724('0x25')]();};}function saveUpdates(_0x39ef73,_0x1399fd){return function(_0x5c97a8){if(_0x5c97a8){return _0x5c97a8[_0x3724('0x26')](_0x39ef73)['then'](function(_0x5dce07){return _0x5dce07;});}return null;};}function removeEntity(_0xaf709b,_0x1703ce){return function(_0x4cc0e9){if(_0x4cc0e9){return _0x4cc0e9[_0x3724('0x27')]()[_0x3724('0x28')](function(){_0xaf709b[_0x3724('0x1b')](0xcc)[_0x3724('0x29')]();});}};}function handleEntityNotFound(_0x4785d2,_0x3b7cac){return function(_0x4a0c2f){if(!_0x4a0c2f){_0x4785d2['sendStatus'](0x194);}return _0x4a0c2f;};}function handleError(_0x44c80f,_0x1ab474){_0x1ab474=_0x1ab474||0x1f4;return function(_0x5d65be){logger[_0x3724('0x2a')](_0x5d65be[_0x3724('0x2b')]);if(_0x5d65be[_0x3724('0x2c')]){delete _0x5d65be[_0x3724('0x2c')];}_0x44c80f['status'](_0x1ab474)['send'](_0x5d65be);};}exports[_0x3724('0x2d')]=function(_0x119c8c,_0x26e60c){var _0x1da7a8={},_0x4a8f5b={},_0x31140c={'count':0x0,'rows':[]};var _0x2e465b=_['map'](db[_0x3724('0x2e')][_0x3724('0x2f')],function(_0xbf2050){return{'name':_0xbf2050[_0x3724('0x30')],'type':_0xbf2050[_0x3724('0x31')][_0x3724('0x32')]};});_0x4a8f5b[_0x3724('0x33')]=_[_0x3724('0x34')](_0x2e465b,_0x3724('0x2c'));_0x4a8f5b[_0x3724('0x35')]=_[_0x3724('0x36')](_0x119c8c[_0x3724('0x35')]);_0x4a8f5b[_0x3724('0x37')]=_[_0x3724('0x38')](_0x4a8f5b[_0x3724('0x33')],_0x4a8f5b[_0x3724('0x35')]);_0x1da7a8[_0x3724('0x39')]=_[_0x3724('0x38')](_0x4a8f5b['model'],qs[_0x3724('0x3a')](_0x119c8c['query']['fields']));_0x1da7a8['attributes']=_0x1da7a8['attributes'][_0x3724('0x3b')]?_0x1da7a8['attributes']:_0x4a8f5b[_0x3724('0x33')];if(!_0x119c8c[_0x3724('0x35')][_0x3724('0x3c')](_0x3724('0x3d'))){_0x1da7a8['limit']=qs[_0x3724('0x1f')](_0x119c8c[_0x3724('0x35')]['limit']);_0x1da7a8[_0x3724('0x1d')]=qs[_0x3724('0x1d')](_0x119c8c[_0x3724('0x35')][_0x3724('0x1d')]);}_0x1da7a8[_0x3724('0x3e')]=qs[_0x3724('0x3f')](_0x119c8c['query']['sort']);_0x1da7a8[_0x3724('0x40')]=qs[_0x3724('0x37')](_['pick'](_0x119c8c[_0x3724('0x35')],_0x4a8f5b[_0x3724('0x37')]),_0x2e465b);if(_0x119c8c['query'][_0x3724('0x41')]){_0x1da7a8[_0x3724('0x40')]=_['merge'](_0x1da7a8['where'],{'$or':_[_0x3724('0x34')](_0x2e465b,function(_0x5db868){if(_0x5db868[_0x3724('0x31')]!==_0x3724('0x42')){var _0x2afe2d={};_0x2afe2d[_0x5db868['name']]={'$like':'%'+_0x119c8c['query'][_0x3724('0x41')]+'%'};return _0x2afe2d;}})});}_0x1da7a8=_[_0x3724('0x43')]({},_0x1da7a8,_0x119c8c[_0x3724('0x44')]);var _0x4b7cbf={'where':_0x1da7a8[_0x3724('0x40')]};return db[_0x3724('0x2e')]['count'](_0x4b7cbf)[_0x3724('0x28')](function(_0x15cb34){_0x31140c['count']=_0x15cb34;if(_0x119c8c[_0x3724('0x35')]['includeAll']){_0x1da7a8[_0x3724('0x45')]=[{'all':!![]}];}return db['Migration'][_0x3724('0x46')](_0x1da7a8);})[_0x3724('0x28')](function(_0x8df92){_0x31140c[_0x3724('0x47')]=_0x8df92;return _0x31140c;})['then'](respondWithFilteredResult(_0x26e60c,_0x1da7a8))[_0x3724('0x48')](handleError(_0x26e60c,null));};
\ No newline at end of file
+var _0xc153=['zip-dir','fast-json-patch','request-promise','moment','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','reject','update','destroy','then','error','stack','name','send','index','map','Migration','fieldName','type','model','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','include','findAll','rows','catch','rimraf'];(function(_0x71e993,_0x1f8834){var _0x4a93af=function(_0x12ed3d){while(--_0x12ed3d){_0x71e993['push'](_0x71e993['shift']());}};_0x4a93af(++_0x1f8834);}(_0xc153,0x191));var _0x3c15=function(_0x5265a4,_0xce56af){_0x5265a4=_0x5265a4-0x0;var _0x3cb9ea=_0xc153[_0x5265a4];return _0x3cb9ea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3c15('0x0'));var zipdir=require(_0x3c15('0x1'));var jsonpatch=require(_0x3c15('0x2'));var rp=require(_0x3c15('0x3'));var moment=require(_0x3c15('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3c15('0x5'));var path=require(_0x3c15('0x6'));var sox=require('sox');var csv=require(_0x3c15('0x7'));var ejs=require(_0x3c15('0x8'));var fs=require('fs');var fs_extra=require(_0x3c15('0x9'));var _=require(_0x3c15('0xa'));var squel=require(_0x3c15('0xb'));var crypto=require(_0x3c15('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x3c15('0xd'));var toCsv=require(_0x3c15('0x7'));var querystring=require('querystring');var Papa=require(_0x3c15('0xe'));var Redis=require('ioredis');var authService=require(_0x3c15('0xf'));var qs=require(_0x3c15('0x10'));var as=require(_0x3c15('0x11'));var hardwareService=require(_0x3c15('0x12'));var logger=require(_0x3c15('0x13'))(_0x3c15('0x14'));var utils=require(_0x3c15('0x15'));var config=require(_0x3c15('0x16'));var licenseUtil=require(_0x3c15('0x17'));var db=require(_0x3c15('0x18'))['db'];function respondWithStatusCode(_0x399dcf,_0x47e983){_0x47e983=_0x47e983||0xcc;return function(_0x3b9a48){if(_0x3b9a48){return _0x399dcf[_0x3c15('0x19')](_0x47e983);}return _0x399dcf[_0x3c15('0x1a')](_0x47e983)[_0x3c15('0x1b')]();};}function respondWithResult(_0x5b981b,_0x1714f4){_0x1714f4=_0x1714f4||0xc8;return function(_0x3e62b1){if(_0x3e62b1){return _0x5b981b['status'](_0x1714f4)[_0x3c15('0x1c')](_0x3e62b1);}};}function respondWithFilteredResult(_0x7dde2b,_0x1900b5){return function(_0xdd88f4){if(_0xdd88f4){var _0x2208ad=typeof _0x1900b5[_0x3c15('0x1d')]===_0x3c15('0x1e')&&typeof _0x1900b5['limit']===_0x3c15('0x1e');var _0x18bce1=_0xdd88f4['count'];var _0x43ed22=_0x2208ad?0x0:_0x1900b5[_0x3c15('0x1d')];var _0x48080e=_0x2208ad?_0xdd88f4[_0x3c15('0x1f')]:_0x1900b5['offset']+_0x1900b5[_0x3c15('0x20')];var _0x2ff262;if(_0x48080e>=_0x18bce1){_0x48080e=_0x18bce1;_0x2ff262=0xc8;}else{_0x2ff262=0xce;}_0x7dde2b['status'](_0x2ff262);return _0x7dde2b[_0x3c15('0x21')]('Content-Range',_0x43ed22+'-'+_0x48080e+'/'+_0x18bce1)[_0x3c15('0x1c')](_0xdd88f4);}return null;};}function patchUpdates(_0x1dd738){return function(_0x1bcbbc){try{jsonpatch[_0x3c15('0x22')](_0x1bcbbc,_0x1dd738,!![]);}catch(_0x5dbaba){return BPromise[_0x3c15('0x23')](_0x5dbaba);}return _0x1bcbbc['save']();};}function saveUpdates(_0x313e70,_0x172127){return function(_0x3b111d){if(_0x3b111d){return _0x3b111d[_0x3c15('0x24')](_0x313e70)['then'](function(_0x4bc4b6){return _0x4bc4b6;});}return null;};}function removeEntity(_0x16ec90,_0x50c0a1){return function(_0x2e1583){if(_0x2e1583){return _0x2e1583[_0x3c15('0x25')]()[_0x3c15('0x26')](function(){_0x16ec90['status'](0xcc)[_0x3c15('0x1b')]();});}};}function handleEntityNotFound(_0x500295,_0xd519ff){return function(_0x3c04df){if(!_0x3c04df){_0x500295[_0x3c15('0x19')](0x194);}return _0x3c04df;};}function handleError(_0x3ff182,_0x7fec3b){_0x7fec3b=_0x7fec3b||0x1f4;return function(_0x1ae9fd){logger[_0x3c15('0x27')](_0x1ae9fd[_0x3c15('0x28')]);if(_0x1ae9fd[_0x3c15('0x29')]){delete _0x1ae9fd[_0x3c15('0x29')];}_0x3ff182['status'](_0x7fec3b)[_0x3c15('0x2a')](_0x1ae9fd);};}exports[_0x3c15('0x2b')]=function(_0x3dc9e7,_0x5b769f){var _0x1fd233={},_0x2c18d0={},_0x2dab36={'count':0x0,'rows':[]};var _0x27bad1=_[_0x3c15('0x2c')](db[_0x3c15('0x2d')]['rawAttributes'],function(_0x4d7ba4){return{'name':_0x4d7ba4[_0x3c15('0x2e')],'type':_0x4d7ba4[_0x3c15('0x2f')]['key']};});_0x2c18d0[_0x3c15('0x30')]=_[_0x3c15('0x2c')](_0x27bad1,_0x3c15('0x29'));_0x2c18d0['query']=_['keys'](_0x3dc9e7['query']);_0x2c18d0[_0x3c15('0x31')]=_['intersection'](_0x2c18d0[_0x3c15('0x30')],_0x2c18d0[_0x3c15('0x32')]);_0x1fd233[_0x3c15('0x33')]=_[_0x3c15('0x34')](_0x2c18d0[_0x3c15('0x30')],qs[_0x3c15('0x35')](_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x35')]));_0x1fd233[_0x3c15('0x33')]=_0x1fd233[_0x3c15('0x33')]['length']?_0x1fd233[_0x3c15('0x33')]:_0x2c18d0['model'];if(!_0x3dc9e7['query'][_0x3c15('0x36')](_0x3c15('0x37'))){_0x1fd233[_0x3c15('0x20')]=qs[_0x3c15('0x20')](_0x3dc9e7['query']['limit']);_0x1fd233[_0x3c15('0x1d')]=qs['offset'](_0x3dc9e7[_0x3c15('0x32')]['offset']);}_0x1fd233[_0x3c15('0x38')]=qs[_0x3c15('0x39')](_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x39')]);_0x1fd233[_0x3c15('0x3a')]=qs[_0x3c15('0x31')](_['pick'](_0x3dc9e7[_0x3c15('0x32')],_0x2c18d0[_0x3c15('0x31')]),_0x27bad1);if(_0x3dc9e7[_0x3c15('0x32')]['filter']){_0x1fd233[_0x3c15('0x3a')]=_[_0x3c15('0x3b')](_0x1fd233['where'],{'$or':_[_0x3c15('0x2c')](_0x27bad1,function(_0xbccaa4){if(_0xbccaa4[_0x3c15('0x2f')]!==_0x3c15('0x3c')){var _0x56358b={};_0x56358b[_0xbccaa4['name']]={'$like':'%'+_0x3dc9e7[_0x3c15('0x32')][_0x3c15('0x3d')]+'%'};return _0x56358b;}})});}_0x1fd233=_[_0x3c15('0x3b')]({},_0x1fd233,_0x3dc9e7[_0x3c15('0x3e')]);var _0x341cec={'where':_0x1fd233[_0x3c15('0x3a')]};return db[_0x3c15('0x2d')][_0x3c15('0x1f')](_0x341cec)[_0x3c15('0x26')](function(_0x32b99b){_0x2dab36[_0x3c15('0x1f')]=_0x32b99b;if(_0x3dc9e7['query']['includeAll']){_0x1fd233[_0x3c15('0x3f')]=[{'all':!![]}];}return db[_0x3c15('0x2d')][_0x3c15('0x40')](_0x1fd233);})[_0x3c15('0x26')](function(_0x7e1dc7){_0x2dab36[_0x3c15('0x41')]=_0x7e1dc7;return _0x2dab36;})['then'](respondWithFilteredResult(_0x5b769f,_0x1fd233))[_0x3c15('0x42')](handleError(_0x5b769f,null));};
\ No newline at end of file
index da8975b..d866822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1253=['exports','define','Migration','migrations','lodash','../../config/logger','api','moment','rimraf','../../config/environment'];(function(_0x351663,_0x11ccc8){var _0x27df4d=function(_0x360242){while(--_0x360242){_0x351663['push'](_0x351663['shift']());}};_0x27df4d(++_0x11ccc8);}(_0x1253,0x108));var _0x3125=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1253[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x3125('0x0'));var util=require('util');var logger=require(_0x3125('0x1'))(_0x3125('0x2'));var moment=require(_0x3125('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x3125('0x4'));var config=require(_0x3125('0x5'));var attributes=require('./migration.attributes');module[_0x3125('0x6')]=function(_0x30c028,_0x5a864b){return _0x30c028[_0x3125('0x7')](_0x3125('0x8'),attributes,{'tableName':_0x3125('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ffa=['bluebird','request-promise','../../config/environment','./migration.attributes','exports','Migration','migrations','lodash','util','../../config/logger','api'];(function(_0x2ca46b,_0x500490){var _0x4cc6d3=function(_0x5d19b4){while(--_0x5d19b4){_0x2ca46b['push'](_0x2ca46b['shift']());}};_0x4cc6d3(++_0x500490);}(_0x3ffa,0x172));var _0xa3ff=function(_0x533440,_0x389402){_0x533440=_0x533440-0x0;var _0x1996d0=_0x3ffa[_0x533440];return _0x1996d0;};'use strict';var _=require(_0xa3ff('0x0'));var util=require(_0xa3ff('0x1'));var logger=require(_0xa3ff('0x2'))(_0xa3ff('0x3'));var moment=require('moment');var BPromise=require(_0xa3ff('0x4'));var rp=require(_0xa3ff('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xa3ff('0x6'));var attributes=require(_0xa3ff('0x7'));module[_0xa3ff('0x8')]=function(_0x5c8821,_0x2c18f8){return _0x5c8821['define'](_0xa3ff('0x9'),attributes,{'tableName':_0xa3ff('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c9f127..546b7ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x834d=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','Migration,\x20%s,\x20%s','debug','Migration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util'];(function(_0x592b4c,_0x48291b){var _0x234b5b=function(_0x180d62){while(--_0x180d62){_0x592b4c['push'](_0x592b4c['shift']());}};_0x234b5b(++_0x48291b);}(_0x834d,0x140));var _0xd834=function(_0x49a90e,_0x5a0ee5){_0x49a90e=_0x49a90e-0x0;var _0x306a1b=_0x834d[_0x49a90e];return _0x306a1b;};'use strict';var _=require(_0xd834('0x0'));var util=require(_0xd834('0x1'));var moment=require('moment');var BPromise=require(_0xd834('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd834('0x3'))['db'];var utils=require(_0xd834('0x4'));var logger=require(_0xd834('0x5'))(_0xd834('0x6'));var config=require('../../config/environment');var jayson=require(_0xd834('0x7'));var client=jayson[_0xd834('0x8')][_0xd834('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x42623d,_0x28907e,_0x256853){return new BPromise(function(_0x51c989,_0x6ab9ae){return client[_0xd834('0xa')](_0x42623d,_0x256853)[_0xd834('0xb')](function(_0x52ad61){logger[_0xd834('0xc')](_0xd834('0xd'),_0x28907e,'request\x20sent');logger[_0xd834('0xe')](_0xd834('0xf'),_0x28907e,'request\x20sent',JSON[_0xd834('0x10')](_0x52ad61));if(_0x52ad61[_0xd834('0x11')]){if(_0x52ad61[_0xd834('0x11')][_0xd834('0x12')]===0x1f4){logger[_0xd834('0x11')](_0xd834('0xd'),_0x28907e,_0x52ad61[_0xd834('0x11')][_0xd834('0x13')]);return _0x6ab9ae(_0x52ad61[_0xd834('0x11')][_0xd834('0x13')]);}logger[_0xd834('0x11')]('Migration,\x20%s,\x20%s',_0x28907e,_0x52ad61[_0xd834('0x11')][_0xd834('0x13')]);return _0x51c989(_0x52ad61[_0xd834('0x11')]['message']);}else{logger[_0xd834('0xc')](_0xd834('0xd'),_0x28907e,_0xd834('0x14'));_0x51c989(_0x52ad61[_0xd834('0x15')]['message']);}})[_0xd834('0x16')](function(_0x32d8c7){logger[_0xd834('0x11')](_0xd834('0xd'),_0x28907e,_0x32d8c7);_0x6ab9ae(_0x32d8c7);});});}
\ No newline at end of file
+var _0x60d7=['../../config/environment','client','http','request','then','info','Migration,\x20%s,\x20%s','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x46d0c9,_0x526bfa){var _0x174506=function(_0x654bc6){while(--_0x654bc6){_0x46d0c9['push'](_0x46d0c9['shift']());}};_0x174506(++_0x526bfa);}(_0x60d7,0x139));var _0x760d=function(_0x46bd9d,_0x4082f4){_0x46bd9d=_0x46bd9d-0x0;var _0x1c3346=_0x60d7[_0x46bd9d];return _0x1c3346;};'use strict';var _=require(_0x760d('0x0'));var util=require(_0x760d('0x1'));var moment=require('moment');var BPromise=require(_0x760d('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x760d('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x760d('0x4'));var logger=require(_0x760d('0x5'))(_0x760d('0x6'));var config=require(_0x760d('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x760d('0x8')][_0x760d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x39282b,_0x463b41,_0x3898d0){return new BPromise(function(_0x5db4c2,_0x2ca05d){return client[_0x760d('0xa')](_0x39282b,_0x3898d0)[_0x760d('0xb')](function(_0x5c4884){logger[_0x760d('0xc')](_0x760d('0xd'),_0x463b41,_0x760d('0xe'));logger['debug'](_0x760d('0xf'),_0x463b41,_0x760d('0xe'),JSON['stringify'](_0x5c4884));if(_0x5c4884[_0x760d('0x10')]){if(_0x5c4884[_0x760d('0x10')][_0x760d('0x11')]===0x1f4){logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x5c4884[_0x760d('0x10')][_0x760d('0x12')]);return _0x2ca05d(_0x5c4884[_0x760d('0x10')][_0x760d('0x12')]);}logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x5c4884['error'][_0x760d('0x12')]);return _0x5db4c2(_0x5c4884['error'][_0x760d('0x12')]);}else{logger[_0x760d('0xc')](_0x760d('0xd'),_0x463b41,_0x760d('0xe'));_0x5db4c2(_0x5c4884['result']['message']);}})[_0x760d('0x13')](function(_0x2f123c){logger[_0x760d('0x10')](_0x760d('0xd'),_0x463b41,_0x2f123c);_0x2ca05d(_0x2f123c);});});}
\ No newline at end of file
index b678675..0da4794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x090a=['exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','destroy'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x090a,0x133));var _0xa090=function(_0x4cf321,_0x4ffb60){_0x4cf321=_0x4cf321-0x0;var _0x2f52f4=_0x090a[_0x4cf321];return _0x2f52f4;};'use strict';var multer=require(_0xa090('0x0'));var util=require(_0xa090('0x1'));var path=require('path');var timeout=require(_0xa090('0x2'));var express=require(_0xa090('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xa090('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xa090('0x5'));var controller=require(_0xa090('0x6'));router[_0xa090('0x7')]('/',auth[_0xa090('0x8')](),controller[_0xa090('0x9')]);router[_0xa090('0x7')](_0xa090('0xa'),auth[_0xa090('0x8')](),controller[_0xa090('0xb')]);router[_0xa090('0xc')]('/',auth[_0xa090('0x8')](),controller[_0xa090('0xd')]);router[_0xa090('0xe')](_0xa090('0xa'),auth[_0xa090('0x8')](),controller[_0xa090('0xf')]);router['delete'](_0xa090('0xa'),auth['isAuthenticated'](),controller[_0xa090('0x10')]);module[_0xa090('0x11')]=router;
\ No newline at end of file
+var _0x2b29=['../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','index','/:id','isAuthenticated','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra'];(function(_0x2d4556,_0x278974){var _0x51b36a=function(_0x394d3e){while(--_0x394d3e){_0x2d4556['push'](_0x2d4556['shift']());}};_0x51b36a(++_0x278974);}(_0x2b29,0x163));var _0x92b2=function(_0x246e6a,_0x69dd2a){_0x246e6a=_0x246e6a-0x0;var _0xdb5075=_0x2b29[_0x246e6a];return _0xdb5075;};'use strict';var multer=require('multer');var util=require(_0x92b2('0x0'));var path=require(_0x92b2('0x1'));var timeout=require(_0x92b2('0x2'));var express=require(_0x92b2('0x3'));var router=express['Router']();var fs_extra=require(_0x92b2('0x4'));var auth=require(_0x92b2('0x5'));var interaction=require(_0x92b2('0x6'));var config=require(_0x92b2('0x7'));var controller=require(_0x92b2('0x8'));router[_0x92b2('0x9')]('/',auth['isAuthenticated'](),controller[_0x92b2('0xa')]);router['get'](_0x92b2('0xb'),auth[_0x92b2('0xc')](),controller['show']);router[_0x92b2('0xd')]('/',auth[_0x92b2('0xc')](),controller[_0x92b2('0xe')]);router[_0x92b2('0xf')]('/:id',auth[_0x92b2('0xc')](),controller[_0x92b2('0x10')]);router[_0x92b2('0x11')](_0x92b2('0xb'),auth[_0x92b2('0xc')](),controller[_0x92b2('0x12')]);module[_0x92b2('0x13')]=router;
\ No newline at end of file
index 5b36d99..0d2a6ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe35=['stun','STRING','sequelize','exports','ENUM','localnet'];(function(_0x3daf40,_0x47b829){var _0x1f0082=function(_0x4fcb81){while(--_0x4fcb81){_0x3daf40['push'](_0x3daf40['shift']());}};_0x1f0082(++_0x47b829);}(_0xfe35,0x188));var _0x5fe3=function(_0x43b506,_0x14e1dd){_0x43b506=_0x43b506-0x0;var _0x451df2=_0xfe35[_0x43b506];return _0x451df2;};'use strict';var Sequelize=require(_0x5fe3('0x0'));module[_0x5fe3('0x1')]={'type':{'type':Sequelize[_0x5fe3('0x2')](_0x5fe3('0x3'),'externip',_0x5fe3('0x4'),'turn')},'value':{'type':Sequelize[_0x5fe3('0x5')]},'username':{'type':Sequelize[_0x5fe3('0x5')]},'password':{'type':Sequelize[_0x5fe3('0x5')]}};
\ No newline at end of file
+var _0x3749=['STRING','sequelize','ENUM','localnet','stun','turn'];(function(_0x3f447c,_0x1449d7){var _0x2bbaaf=function(_0x231da1){while(--_0x231da1){_0x3f447c['push'](_0x3f447c['shift']());}};_0x2bbaaf(++_0x1449d7);}(_0x3749,0x163));var _0x9374=function(_0x39b51c,_0x40010d){_0x39b51c=_0x39b51c-0x0;var _0x146312=_0x3749[_0x39b51c];return _0x146312;};'use strict';var Sequelize=require(_0x9374('0x0'));module['exports']={'type':{'type':Sequelize[_0x9374('0x1')](_0x9374('0x2'),'externip',_0x9374('0x3'),_0x9374('0x4'))},'value':{'type':Sequelize[_0x9374('0x5')]},'username':{'type':Sequelize[_0x9374('0x5')]},'password':{'type':Sequelize[_0x9374('0x5')]}};
\ No newline at end of file
index 5c2d468..e287ff7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ba2=['readFileSync','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','utf8','format','/etc/asterisk/sip_xcally_%s.conf','body','chan_sip.so','toLowerCase','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','client','request','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','json','offset','undefined','limit','count','status','set','Content-Range','update','destroy','end','stack','name','send','rawAttributes','type','key','model','map','query','keys','attributes','intersection','fields','length','hasOwnProperty','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','Network','findAll','rows','params','options','find','create','toUpperCase','STUN','join','root','server/files/templates/stun_multiple.ejs','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','TURN'];(function(_0x57474e,_0x4178b8){var _0xfaae8c=function(_0x2e34d1){while(--_0x2e34d1){_0x57474e['push'](_0x57474e['shift']());}};_0xfaae8c(++_0x4178b8);}(_0x8ba2,0x1ae));var _0x28ba=function(_0x4ddaca,_0x117ffb){_0x4ddaca=_0x4ddaca-0x0;var _0x2cab62=_0x8ba2[_0x4ddaca];return _0x2cab62;};'use strict';var util=require(_0x28ba('0x0'));var path=require(_0x28ba('0x1'));var ejs=require(_0x28ba('0x2'));var fs=require('fs');var _=require(_0x28ba('0x3'));var qs=require(_0x28ba('0x4'));var logger=require(_0x28ba('0x5'))(_0x28ba('0x6'));var config=require('../../config/environment');var db=require(_0x28ba('0x7'))['db'];var jayson=require('jayson/promise');var client=jayson[_0x28ba('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x18d091,_0x1abd69,_0x4d2f92,_0x5af626){return new Promise(function(_0x103b79,_0x1b9ea6){var _0x3584de=_0x5af626||client;return _0x3584de[_0x28ba('0x9')](_0x18d091,_0x4d2f92)[_0x28ba('0xa')](function(_0x1f17bb){logger[_0x28ba('0xb')](_0x28ba('0xc'),_0x1abd69,_0x28ba('0xd'));logger[_0x28ba('0xe')](_0x28ba('0xf'),_0x1abd69,_0x28ba('0xd'),JSON[_0x28ba('0x10')](_0x1f17bb));if(_0x1f17bb['error']){if(_0x1f17bb['error'][_0x28ba('0x11')]===0x1f4){logger[_0x28ba('0x12')](_0x28ba('0xc'),_0x1abd69,_0x1f17bb['error'][_0x28ba('0x13')]);return _0x1b9ea6(_0x1f17bb[_0x28ba('0x12')][_0x28ba('0x13')]);}logger['error']('Network,\x20%s,\x20%s',_0x1abd69,_0x1f17bb[_0x28ba('0x12')]['message']);return _0x103b79(_0x1f17bb[_0x28ba('0x12')][_0x28ba('0x13')]);}else{logger['info']('Network,\x20%s,\x20%s',_0x1abd69,'request\x20sent');_0x103b79(_0x1f17bb['result'][_0x28ba('0x13')]);}})[_0x28ba('0x14')](function(_0x3ffa07){logger['error'](_0x28ba('0xc'),_0x1abd69,_0x3ffa07);_0x1b9ea6(_0x3ffa07);});});}function respondWithResult(_0x347abe,_0xeea684){_0xeea684=_0xeea684||0xc8;return function(_0x31e3f7){if(_0x31e3f7){return _0x347abe['status'](_0xeea684)[_0x28ba('0x15')](_0x31e3f7);}};}function respondWithFilteredResult(_0x41d9f7,_0x3eaaf3){return function(_0x2348c6){if(_0x2348c6){var _0x35cc35=typeof _0x3eaaf3[_0x28ba('0x16')]===_0x28ba('0x17')&&typeof _0x3eaaf3[_0x28ba('0x18')]===_0x28ba('0x17');var _0x3380ca=_0x2348c6['count'];var _0x154e47=_0x35cc35?0x0:_0x3eaaf3[_0x28ba('0x16')];var _0x59ca6b=_0x35cc35?_0x2348c6[_0x28ba('0x19')]:_0x3eaaf3[_0x28ba('0x16')]+_0x3eaaf3[_0x28ba('0x18')];var _0x282f2d;if(_0x59ca6b>=_0x3380ca){_0x59ca6b=_0x3380ca;_0x282f2d=0xc8;}else{_0x282f2d=0xce;}_0x41d9f7[_0x28ba('0x1a')](_0x282f2d);return _0x41d9f7[_0x28ba('0x1b')](_0x28ba('0x1c'),_0x154e47+'-'+_0x59ca6b+'/'+_0x3380ca)[_0x28ba('0x15')](_0x2348c6);}return null;};}function saveUpdates(_0xf106ff){return function(_0x3ab858){if(_0x3ab858){return _0x3ab858[_0x28ba('0x1d')](_0xf106ff)[_0x28ba('0xa')](function(_0x4b1a01){return _0x4b1a01;});}return null;};}function removeEntity(_0x98d638){return function(_0x591d74){if(_0x591d74){return _0x591d74[_0x28ba('0x1e')]()[_0x28ba('0xa')](function(){_0x98d638[_0x28ba('0x1a')](0xcc)[_0x28ba('0x1f')]();});}};}function handleEntityNotFound(_0x423a92){return function(_0x721f71){if(!_0x721f71){_0x423a92['sendStatus'](0x194);}return _0x721f71;};}function handleError(_0x131bd8,_0x6d12e3){_0x6d12e3=_0x6d12e3||0x1f4;return function(_0x163cf1){logger['error'](_0x163cf1[_0x28ba('0x20')]);if(_0x163cf1[_0x28ba('0x21')]){delete _0x163cf1['name'];}_0x131bd8[_0x28ba('0x1a')](_0x6d12e3)[_0x28ba('0x22')](_0x163cf1);};}exports['index']=function(_0x17951e,_0x1feb58){var _0x2d9a4e={},_0x1d44c6={},_0x1f2a23={'count':0x0,'rows':[]};var _0x4a10fc=_['map'](db['Network'][_0x28ba('0x23')],function(_0x175bc0){return{'name':_0x175bc0['fieldName'],'type':_0x175bc0[_0x28ba('0x24')][_0x28ba('0x25')]};});_0x1d44c6[_0x28ba('0x26')]=_[_0x28ba('0x27')](_0x4a10fc,_0x28ba('0x21'));_0x1d44c6[_0x28ba('0x28')]=_[_0x28ba('0x29')](_0x17951e[_0x28ba('0x28')]);_0x1d44c6['filters']=_['intersection'](_0x1d44c6[_0x28ba('0x26')],_0x1d44c6['query']);_0x2d9a4e[_0x28ba('0x2a')]=_[_0x28ba('0x2b')](_0x1d44c6['model'],qs[_0x28ba('0x2c')](_0x17951e[_0x28ba('0x28')]['fields']));_0x2d9a4e[_0x28ba('0x2a')]=_0x2d9a4e['attributes'][_0x28ba('0x2d')]?_0x2d9a4e[_0x28ba('0x2a')]:_0x1d44c6['model'];if(!_0x17951e['query'][_0x28ba('0x2e')]('nolimit')){_0x2d9a4e[_0x28ba('0x18')]=qs[_0x28ba('0x18')](_0x17951e[_0x28ba('0x28')][_0x28ba('0x18')]);_0x2d9a4e[_0x28ba('0x16')]=qs[_0x28ba('0x16')](_0x17951e['query']['offset']);}_0x2d9a4e['order']=qs[_0x28ba('0x2f')](_0x17951e[_0x28ba('0x28')][_0x28ba('0x2f')]);_0x2d9a4e[_0x28ba('0x30')]=qs[_0x28ba('0x31')](_[_0x28ba('0x32')](_0x17951e[_0x28ba('0x28')],_0x1d44c6[_0x28ba('0x31')]),_0x4a10fc);if(_0x17951e['query'][_0x28ba('0x33')]){_0x2d9a4e['where']=_[_0x28ba('0x34')](_0x2d9a4e['where'],{'$or':_['map'](_0x4a10fc,function(_0x552788){if(_0x552788[_0x28ba('0x24')]!==_0x28ba('0x35')){var _0x5e6177={};_0x5e6177[_0x552788[_0x28ba('0x21')]]={'$like':'%'+_0x17951e[_0x28ba('0x28')]['filter']+'%'};return _0x5e6177;}})});}_0x2d9a4e=_[_0x28ba('0x34')]({},_0x2d9a4e,_0x17951e['options']);var _0x127daf={'where':_0x2d9a4e[_0x28ba('0x30')]};return db['Network'][_0x28ba('0x19')](_0x127daf)[_0x28ba('0xa')](function(_0x3455b0){_0x1f2a23[_0x28ba('0x19')]=_0x3455b0;if(_0x17951e[_0x28ba('0x28')][_0x28ba('0x36')]){_0x2d9a4e[_0x28ba('0x37')]=[{'all':!![]}];}return db[_0x28ba('0x38')][_0x28ba('0x39')](_0x2d9a4e);})[_0x28ba('0xa')](function(_0x1cf7a9){_0x1f2a23[_0x28ba('0x3a')]=_0x1cf7a9;return _0x1f2a23;})[_0x28ba('0xa')](respondWithFilteredResult(_0x1feb58,_0x2d9a4e))[_0x28ba('0x14')](handleError(_0x1feb58,null));};exports['show']=function(_0x45239d,_0x3fe3c2){var _0x117c29={'raw':!![],'where':{'id':_0x45239d[_0x28ba('0x3b')]['id']}},_0x312cf7={};_0x312cf7['model']=_[_0x28ba('0x29')](db['Network'][_0x28ba('0x23')]);_0x312cf7[_0x28ba('0x28')]=_['keys'](_0x45239d['query']);_0x312cf7['filters']=_[_0x28ba('0x2b')](_0x312cf7[_0x28ba('0x26')],_0x312cf7[_0x28ba('0x28')]);_0x117c29[_0x28ba('0x2a')]=_[_0x28ba('0x2b')](_0x312cf7[_0x28ba('0x26')],qs[_0x28ba('0x2c')](_0x45239d[_0x28ba('0x28')]['fields']));_0x117c29[_0x28ba('0x2a')]=_0x117c29['attributes']['length']?_0x117c29[_0x28ba('0x2a')]:_0x312cf7[_0x28ba('0x26')];if(_0x45239d[_0x28ba('0x28')][_0x28ba('0x36')]){_0x117c29[_0x28ba('0x37')]=[{'all':!![]}];}_0x117c29=_['merge']({},_0x117c29,_0x45239d[_0x28ba('0x3c')]);return db[_0x28ba('0x38')][_0x28ba('0x3d')](_0x117c29)[_0x28ba('0xa')](handleEntityNotFound(_0x3fe3c2,null))['then'](respondWithResult(_0x3fe3c2,null))[_0x28ba('0x14')](handleError(_0x3fe3c2,null));};exports[_0x28ba('0x3e')]=function(_0x52f58c,_0x479a76){var _0x5389f2;return db[_0x28ba('0x38')][_0x28ba('0x3e')](_0x52f58c['body'],{'raw':!![]})[_0x28ba('0xa')](function(_0x1d10e7){_0x5389f2=_0x1d10e7;return db['Network'][_0x28ba('0x39')]({'where':{'type':_0x52f58c['body'][_0x28ba('0x24')]},'raw':!![]});})[_0x28ba('0xa')](function(_0x50e8a1){if(_0x5389f2[_0x28ba('0x24')][_0x28ba('0x3f')]()==_0x28ba('0x40')){var _0x3e7e3a=fs['readFileSync'](path[_0x28ba('0x41')](config[_0x28ba('0x42')],_0x28ba('0x43')),'utf8');var _0xd49825=ejs[_0x28ba('0x44')](_0x3e7e3a,{'networks':_0x50e8a1||[]});fs[_0x28ba('0x45')](_0x28ba('0x46'),_0xd49825);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x3e'),{'module':_0x28ba('0x48')});}else if(_0x5389f2[_0x28ba('0x24')]['toUpperCase']()==_0x28ba('0x49')){var _0x4a4d4f=fs[_0x28ba('0x4a')](path[_0x28ba('0x41')](config['root'],_0x28ba('0x4b')),'utf8');var _0x389867=ejs['render'](_0x4a4d4f,{'networks':_0x50e8a1||[]});fs['writeFileSync'](_0x28ba('0x4c'),_0x389867);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x3e'),{'module':_0x28ba('0x48')});}else{var _0x4b9beb=fs[_0x28ba('0x4a')](path[_0x28ba('0x41')](config[_0x28ba('0x42')],_0x28ba('0x4d')),_0x28ba('0x4e'));var _0x3e58a9=ejs[_0x28ba('0x44')](_0x4b9beb,{'networks':_0x50e8a1||[]});fs[_0x28ba('0x45')](util[_0x28ba('0x4f')](_0x28ba('0x50'),_0x52f58c[_0x28ba('0x51')][_0x28ba('0x24')]['toLowerCase']()),_0x3e58a9);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x3e'),{'module':_0x28ba('0x52')});}})[_0x28ba('0xa')](function(){return _0x5389f2;})[_0x28ba('0xa')](respondWithResult(_0x479a76,0xc9))['catch'](handleError(_0x479a76,null));};exports['update']=function(_0x3df049,_0x9f578){var _0x17970f;return db[_0x28ba('0x38')]['find']({'where':{'id':_0x3df049[_0x28ba('0x3b')]['id']}})['then'](handleEntityNotFound(_0x9f578,null))[_0x28ba('0xa')](saveUpdates(_0x3df049[_0x28ba('0x51')],null))[_0x28ba('0xa')](function(_0x467cca){if(_0x467cca){_0x17970f=_0x467cca;return db['Network'][_0x28ba('0x39')]({'where':{'type':_0x17970f[_0x28ba('0x24')]},'raw':!![]});}return null;})[_0x28ba('0xa')](function(_0x24762b){if(_0x17970f[_0x28ba('0x24')][_0x28ba('0x3f')]()==_0x28ba('0x40')){var _0x169991=fs[_0x28ba('0x4a')](path[_0x28ba('0x41')](config[_0x28ba('0x42')],_0x28ba('0x43')),'utf8');var _0x493060=ejs[_0x28ba('0x44')](_0x169991,{'networks':_0x24762b||[]});fs[_0x28ba('0x45')]('/etc/asterisk/stun_xcally.conf',_0x493060);return respondWithRpcPromise('Reload',_0x28ba('0x1d'),{'module':'res_stun_monitor.so'});}else if(_0x17970f[_0x28ba('0x24')][_0x28ba('0x3f')]()==_0x28ba('0x49')){var _0x2b98ae=fs['readFileSync'](path['join'](config[_0x28ba('0x42')],_0x28ba('0x4b')),_0x28ba('0x4e'));var _0x10fdf8=ejs['render'](_0x2b98ae,{'networks':_0x24762b||[]});fs[_0x28ba('0x45')]('/etc/asterisk/turn_xcally.conf',_0x10fdf8);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x1d'),{'module':_0x28ba('0x48')});}else{var _0x1c4711=fs['readFileSync'](path[_0x28ba('0x41')](config[_0x28ba('0x42')],_0x28ba('0x4d')),_0x28ba('0x4e'));var _0x1344b0=ejs['render'](_0x1c4711,{'networks':_0x24762b||[]});fs[_0x28ba('0x45')](util[_0x28ba('0x4f')](_0x28ba('0x50'),_0x3df049[_0x28ba('0x51')][_0x28ba('0x24')]['toLowerCase']()),_0x1344b0);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x1d'),{'module':_0x28ba('0x52')});}})[_0x28ba('0xa')](function(_0x481df7){if(_0x481df7){return _0x17970f;}return null;})['then'](respondWithResult(_0x9f578,null))[_0x28ba('0x14')](handleError(_0x9f578,null));};exports[_0x28ba('0x1e')]=function(_0x5948f6,_0x5c1f7a){var _0x21fb4c;return db[_0x28ba('0x38')][_0x28ba('0x3d')]({'where':{'id':_0x5948f6[_0x28ba('0x3b')]['id']}})[_0x28ba('0xa')](function(_0x2038ef){_0x21fb4c=_0x2038ef;return _0x2038ef;})[_0x28ba('0xa')](handleEntityNotFound(_0x5c1f7a,null))[_0x28ba('0xa')](removeEntity(_0x5c1f7a,null))[_0x28ba('0xa')](function(){if(_0x21fb4c){return db['Network'][_0x28ba('0x39')]({'where':{'type':_0x21fb4c[_0x28ba('0x24')]},'raw':!![]});}})[_0x28ba('0xa')](function(_0x5416e7){if(_0x21fb4c[_0x28ba('0x24')][_0x28ba('0x3f')]()=='STUN'){var _0x40d974=fs['readFileSync'](path[_0x28ba('0x41')](config['root'],_0x28ba('0x43')),'utf8');var _0x5ceacc=ejs[_0x28ba('0x44')](_0x40d974,{'networks':_0x5416e7||[]});fs[_0x28ba('0x45')](_0x28ba('0x46'),_0x5ceacc);return respondWithRpcPromise('Reload',_0x28ba('0x1e'),{'module':_0x28ba('0x48')});}else if(_0x21fb4c[_0x28ba('0x24')]['toUpperCase']()=='TURN'){var _0x6af4c3=fs[_0x28ba('0x4a')](path[_0x28ba('0x41')](config[_0x28ba('0x42')],_0x28ba('0x4b')),'utf8');var _0x452f95=ejs['render'](_0x6af4c3,{'networks':_0x5416e7||[]});fs[_0x28ba('0x45')](_0x28ba('0x4c'),_0x452f95);return respondWithRpcPromise(_0x28ba('0x47'),_0x28ba('0x1e'),{'module':_0x28ba('0x48')});}else{var _0x42164d=fs[_0x28ba('0x4a')](path['join'](config[_0x28ba('0x42')],_0x28ba('0x4d')),_0x28ba('0x4e'));var _0x347326=ejs[_0x28ba('0x44')](_0x42164d,{'networks':_0x5416e7||[]});fs[_0x28ba('0x45')](util[_0x28ba('0x4f')](_0x28ba('0x50'),_0x21fb4c['type'][_0x28ba('0x53')]()),_0x347326);return respondWithRpcPromise(_0x28ba('0x47'),'destroy',{'module':'chan_sip.so'});}})[_0x28ba('0x14')](handleError(_0x5c1f7a,null));};
\ No newline at end of file
+var _0xa892=['debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Network,\x20%s,\x20%s','result','catch','offset','undefined','count','set','json','destroy','status','end','name','send','index','map','Network','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','findAll','rows','params','keys','includeAll','include','options','create','body','toUpperCase','STUN','readFileSync','join','root','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','res_stun_monitor.so','/etc/asterisk/turn_xcally.conf','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','find','server/files/templates/stun_multiple.ejs','server/files/templates/turn_multiple.ejs','update','util','path','ejs','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','jayson/promise','client','http','then','request\x20sent'];(function(_0x4af37d,_0x5aa8d3){var _0x257150=function(_0x462348){while(--_0x462348){_0x4af37d['push'](_0x4af37d['shift']());}};_0x257150(++_0x5aa8d3);}(_0xa892,0x1a0));var _0x2a89=function(_0xf79497,_0x291574){_0xf79497=_0xf79497-0x0;var _0xa02443=_0xa892[_0xf79497];return _0xa02443;};'use strict';var util=require(_0x2a89('0x0'));var path=require(_0x2a89('0x1'));var ejs=require(_0x2a89('0x2'));var fs=require('fs');var _=require(_0x2a89('0x3'));var qs=require(_0x2a89('0x4'));var logger=require(_0x2a89('0x5'))(_0x2a89('0x6'));var config=require(_0x2a89('0x7'));var db=require(_0x2a89('0x8'))['db'];var jayson=require(_0x2a89('0x9'));var client=jayson[_0x2a89('0xa')][_0x2a89('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x397d23,_0xed8278,_0x202277,_0x10ad2c){return new Promise(function(_0x13f5f7,_0x129b60){var _0xc26846=_0x10ad2c||client;return _0xc26846['request'](_0x397d23,_0x202277)[_0x2a89('0xc')](function(_0x1819d6){logger['info']('Network,\x20%s,\x20%s',_0xed8278,_0x2a89('0xd'));logger[_0x2a89('0xe')](_0x2a89('0xf'),_0xed8278,'request\x20sent',JSON[_0x2a89('0x10')](_0x1819d6));if(_0x1819d6[_0x2a89('0x11')]){if(_0x1819d6['error'][_0x2a89('0x12')]===0x1f4){logger[_0x2a89('0x11')]('Network,\x20%s,\x20%s',_0xed8278,_0x1819d6['error'][_0x2a89('0x13')]);return _0x129b60(_0x1819d6[_0x2a89('0x11')][_0x2a89('0x13')]);}logger[_0x2a89('0x11')]('Network,\x20%s,\x20%s',_0xed8278,_0x1819d6['error'][_0x2a89('0x13')]);return _0x13f5f7(_0x1819d6[_0x2a89('0x11')]['message']);}else{logger['info'](_0x2a89('0x14'),_0xed8278,_0x2a89('0xd'));_0x13f5f7(_0x1819d6[_0x2a89('0x15')][_0x2a89('0x13')]);}})[_0x2a89('0x16')](function(_0x35498c){logger['error'](_0x2a89('0x14'),_0xed8278,_0x35498c);_0x129b60(_0x35498c);});});}function respondWithResult(_0x4720c6,_0x2a7bfb){_0x2a7bfb=_0x2a7bfb||0xc8;return function(_0x308051){if(_0x308051){return _0x4720c6['status'](_0x2a7bfb)['json'](_0x308051);}};}function respondWithFilteredResult(_0x5111e8,_0x2e4a5d){return function(_0x11ee39){if(_0x11ee39){var _0x1a503c=typeof _0x2e4a5d[_0x2a89('0x17')]==='undefined'&&typeof _0x2e4a5d['limit']===_0x2a89('0x18');var _0x2ea155=_0x11ee39['count'];var _0x191436=_0x1a503c?0x0:_0x2e4a5d['offset'];var _0xebfc8=_0x1a503c?_0x11ee39[_0x2a89('0x19')]:_0x2e4a5d[_0x2a89('0x17')]+_0x2e4a5d['limit'];var _0x5ee1a7;if(_0xebfc8>=_0x2ea155){_0xebfc8=_0x2ea155;_0x5ee1a7=0xc8;}else{_0x5ee1a7=0xce;}_0x5111e8['status'](_0x5ee1a7);return _0x5111e8[_0x2a89('0x1a')]('Content-Range',_0x191436+'-'+_0xebfc8+'/'+_0x2ea155)[_0x2a89('0x1b')](_0x11ee39);}return null;};}function saveUpdates(_0x5abf94){return function(_0x439719){if(_0x439719){return _0x439719['update'](_0x5abf94)[_0x2a89('0xc')](function(_0x2fddff){return _0x2fddff;});}return null;};}function removeEntity(_0x29656f){return function(_0x60e8e1){if(_0x60e8e1){return _0x60e8e1[_0x2a89('0x1c')]()[_0x2a89('0xc')](function(){_0x29656f[_0x2a89('0x1d')](0xcc)[_0x2a89('0x1e')]();});}};}function handleEntityNotFound(_0x1f3bd5){return function(_0x248c61){if(!_0x248c61){_0x1f3bd5['sendStatus'](0x194);}return _0x248c61;};}function handleError(_0x55f9c1,_0x734fce){_0x734fce=_0x734fce||0x1f4;return function(_0x1b8be5){logger[_0x2a89('0x11')](_0x1b8be5['stack']);if(_0x1b8be5[_0x2a89('0x1f')]){delete _0x1b8be5['name'];}_0x55f9c1[_0x2a89('0x1d')](_0x734fce)[_0x2a89('0x20')](_0x1b8be5);};}exports[_0x2a89('0x21')]=function(_0x5b088f,_0x4dcdf8){var _0x287dd9={},_0x1bd232={},_0x4bad04={'count':0x0,'rows':[]};var _0x70c7cf=_[_0x2a89('0x22')](db[_0x2a89('0x23')][_0x2a89('0x24')],function(_0x531ce5){return{'name':_0x531ce5[_0x2a89('0x25')],'type':_0x531ce5['type'][_0x2a89('0x26')]};});_0x1bd232[_0x2a89('0x27')]=_[_0x2a89('0x22')](_0x70c7cf,'name');_0x1bd232[_0x2a89('0x28')]=_['keys'](_0x5b088f[_0x2a89('0x28')]);_0x1bd232[_0x2a89('0x29')]=_['intersection'](_0x1bd232['model'],_0x1bd232['query']);_0x287dd9[_0x2a89('0x2a')]=_[_0x2a89('0x2b')](_0x1bd232[_0x2a89('0x27')],qs[_0x2a89('0x2c')](_0x5b088f[_0x2a89('0x28')][_0x2a89('0x2c')]));_0x287dd9[_0x2a89('0x2a')]=_0x287dd9[_0x2a89('0x2a')][_0x2a89('0x2d')]?_0x287dd9[_0x2a89('0x2a')]:_0x1bd232[_0x2a89('0x27')];if(!_0x5b088f[_0x2a89('0x28')][_0x2a89('0x2e')]('nolimit')){_0x287dd9[_0x2a89('0x2f')]=qs[_0x2a89('0x2f')](_0x5b088f[_0x2a89('0x28')]['limit']);_0x287dd9[_0x2a89('0x17')]=qs[_0x2a89('0x17')](_0x5b088f['query'][_0x2a89('0x17')]);}_0x287dd9[_0x2a89('0x30')]=qs['sort'](_0x5b088f[_0x2a89('0x28')][_0x2a89('0x31')]);_0x287dd9[_0x2a89('0x32')]=qs['filters'](_[_0x2a89('0x33')](_0x5b088f[_0x2a89('0x28')],_0x1bd232[_0x2a89('0x29')]),_0x70c7cf);if(_0x5b088f[_0x2a89('0x28')][_0x2a89('0x34')]){_0x287dd9[_0x2a89('0x32')]=_[_0x2a89('0x35')](_0x287dd9[_0x2a89('0x32')],{'$or':_[_0x2a89('0x22')](_0x70c7cf,function(_0x444d4b){if(_0x444d4b[_0x2a89('0x36')]!==_0x2a89('0x37')){var _0x9a8d4e={};_0x9a8d4e[_0x444d4b[_0x2a89('0x1f')]]={'$like':'%'+_0x5b088f['query'][_0x2a89('0x34')]+'%'};return _0x9a8d4e;}})});}_0x287dd9=_[_0x2a89('0x35')]({},_0x287dd9,_0x5b088f['options']);var _0x1ad773={'where':_0x287dd9[_0x2a89('0x32')]};return db['Network']['count'](_0x1ad773)[_0x2a89('0xc')](function(_0x40ca98){_0x4bad04[_0x2a89('0x19')]=_0x40ca98;if(_0x5b088f[_0x2a89('0x28')]['includeAll']){_0x287dd9['include']=[{'all':!![]}];}return db['Network'][_0x2a89('0x38')](_0x287dd9);})[_0x2a89('0xc')](function(_0x41c75e){_0x4bad04[_0x2a89('0x39')]=_0x41c75e;return _0x4bad04;})['then'](respondWithFilteredResult(_0x4dcdf8,_0x287dd9))[_0x2a89('0x16')](handleError(_0x4dcdf8,null));};exports['show']=function(_0x3bc3e5,_0x422121){var _0x555a8a={'raw':!![],'where':{'id':_0x3bc3e5[_0x2a89('0x3a')]['id']}},_0x5dbbd0={};_0x5dbbd0['model']=_[_0x2a89('0x3b')](db[_0x2a89('0x23')][_0x2a89('0x24')]);_0x5dbbd0['query']=_[_0x2a89('0x3b')](_0x3bc3e5[_0x2a89('0x28')]);_0x5dbbd0[_0x2a89('0x29')]=_[_0x2a89('0x2b')](_0x5dbbd0['model'],_0x5dbbd0[_0x2a89('0x28')]);_0x555a8a['attributes']=_[_0x2a89('0x2b')](_0x5dbbd0['model'],qs[_0x2a89('0x2c')](_0x3bc3e5[_0x2a89('0x28')][_0x2a89('0x2c')]));_0x555a8a[_0x2a89('0x2a')]=_0x555a8a[_0x2a89('0x2a')][_0x2a89('0x2d')]?_0x555a8a[_0x2a89('0x2a')]:_0x5dbbd0[_0x2a89('0x27')];if(_0x3bc3e5[_0x2a89('0x28')][_0x2a89('0x3c')]){_0x555a8a[_0x2a89('0x3d')]=[{'all':!![]}];}_0x555a8a=_[_0x2a89('0x35')]({},_0x555a8a,_0x3bc3e5[_0x2a89('0x3e')]);return db['Network']['find'](_0x555a8a)[_0x2a89('0xc')](handleEntityNotFound(_0x422121,null))[_0x2a89('0xc')](respondWithResult(_0x422121,null))[_0x2a89('0x16')](handleError(_0x422121,null));};exports[_0x2a89('0x3f')]=function(_0x557e30,_0x596b88){var _0x3f38bb;return db['Network']['create'](_0x557e30[_0x2a89('0x40')],{'raw':!![]})[_0x2a89('0xc')](function(_0x1ee045){_0x3f38bb=_0x1ee045;return db[_0x2a89('0x23')][_0x2a89('0x38')]({'where':{'type':_0x557e30['body'][_0x2a89('0x36')]},'raw':!![]});})['then'](function(_0x400744){if(_0x3f38bb[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x4f104b=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/stun_multiple.ejs'),_0x2a89('0x46'));var _0x2ec3d9=ejs[_0x2a89('0x47')](_0x4f104b,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](_0x2a89('0x49'),_0x2ec3d9);return respondWithRpcPromise(_0x2a89('0x4a'),'create',{'module':_0x2a89('0x4b')});}else if(_0x3f38bb[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x5d337c=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/turn_multiple.ejs'),_0x2a89('0x46'));var _0x4700b6=ejs[_0x2a89('0x47')](_0x5d337c,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x4700b6);return respondWithRpcPromise('Reload',_0x2a89('0x3f'),{'module':_0x2a89('0x4b')});}else{var _0x3ed07b=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config['root'],_0x2a89('0x4d')),'utf8');var _0x59b3f4=ejs['render'](_0x3ed07b,{'networks':_0x400744||[]});fs[_0x2a89('0x48')](util[_0x2a89('0x4e')](_0x2a89('0x4f'),_0x557e30[_0x2a89('0x40')][_0x2a89('0x36')][_0x2a89('0x50')]()),_0x59b3f4);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x3f'),{'module':_0x2a89('0x51')});}})['then'](function(){return _0x3f38bb;})[_0x2a89('0xc')](respondWithResult(_0x596b88,0xc9))[_0x2a89('0x16')](handleError(_0x596b88,null));};exports['update']=function(_0x22f74a,_0x1bcd10){var _0x12f552;return db[_0x2a89('0x23')][_0x2a89('0x52')]({'where':{'id':_0x22f74a[_0x2a89('0x3a')]['id']}})[_0x2a89('0xc')](handleEntityNotFound(_0x1bcd10,null))['then'](saveUpdates(_0x22f74a[_0x2a89('0x40')],null))['then'](function(_0x4c8dcb){if(_0x4c8dcb){_0x12f552=_0x4c8dcb;return db['Network'][_0x2a89('0x38')]({'where':{'type':_0x12f552[_0x2a89('0x36')]},'raw':!![]});}return null;})[_0x2a89('0xc')](function(_0x13ca47){if(_0x12f552[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x937ca9=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x53')),'utf8');var _0x580cc4=ejs[_0x2a89('0x47')](_0x937ca9,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](_0x2a89('0x49'),_0x580cc4);return respondWithRpcPromise(_0x2a89('0x4a'),'update',{'module':_0x2a89('0x4b')});}else if(_0x12f552[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x46be19=fs[_0x2a89('0x43')](path['join'](config[_0x2a89('0x45')],_0x2a89('0x54')),_0x2a89('0x46'));var _0x455d37=ejs['render'](_0x46be19,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x455d37);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x55'),{'module':_0x2a89('0x4b')});}else{var _0x29c266=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x4d')),_0x2a89('0x46'));var _0x29ca37=ejs['render'](_0x29c266,{'networks':_0x13ca47||[]});fs[_0x2a89('0x48')](util['format'](_0x2a89('0x4f'),_0x22f74a['body'][_0x2a89('0x36')][_0x2a89('0x50')]()),_0x29ca37);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x55'),{'module':_0x2a89('0x51')});}})[_0x2a89('0xc')](function(_0x1422ea){if(_0x1422ea){return _0x12f552;}return null;})['then'](respondWithResult(_0x1bcd10,null))[_0x2a89('0x16')](handleError(_0x1bcd10,null));};exports[_0x2a89('0x1c')]=function(_0x40f3dd,_0xec7582){var _0x66232d;return db[_0x2a89('0x23')][_0x2a89('0x52')]({'where':{'id':_0x40f3dd['params']['id']}})[_0x2a89('0xc')](function(_0x285a34){_0x66232d=_0x285a34;return _0x285a34;})[_0x2a89('0xc')](handleEntityNotFound(_0xec7582,null))[_0x2a89('0xc')](removeEntity(_0xec7582,null))['then'](function(){if(_0x66232d){return db[_0x2a89('0x23')][_0x2a89('0x38')]({'where':{'type':_0x66232d[_0x2a89('0x36')]},'raw':!![]});}})[_0x2a89('0xc')](function(_0x11004b){if(_0x66232d[_0x2a89('0x36')][_0x2a89('0x41')]()==_0x2a89('0x42')){var _0x4f7734=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x53')),_0x2a89('0x46'));var _0x23b296=ejs[_0x2a89('0x47')](_0x4f7734,{'networks':_0x11004b||[]});fs['writeFileSync'](_0x2a89('0x49'),_0x23b296);return respondWithRpcPromise('Reload','destroy',{'module':_0x2a89('0x4b')});}else if(_0x66232d[_0x2a89('0x36')][_0x2a89('0x41')]()=='TURN'){var _0x5eb76c=fs[_0x2a89('0x43')](path[_0x2a89('0x44')](config[_0x2a89('0x45')],'server/files/templates/turn_multiple.ejs'),_0x2a89('0x46'));var _0x1a9307=ejs[_0x2a89('0x47')](_0x5eb76c,{'networks':_0x11004b||[]});fs[_0x2a89('0x48')](_0x2a89('0x4c'),_0x1a9307);return respondWithRpcPromise(_0x2a89('0x4a'),_0x2a89('0x1c'),{'module':_0x2a89('0x4b')});}else{var _0x3d2de5=fs['readFileSync'](path[_0x2a89('0x44')](config[_0x2a89('0x45')],_0x2a89('0x4d')),_0x2a89('0x46'));var _0x53f786=ejs[_0x2a89('0x47')](_0x3d2de5,{'networks':_0x11004b||[]});fs[_0x2a89('0x48')](util[_0x2a89('0x4e')]('/etc/asterisk/sip_xcally_%s.conf',_0x66232d[_0x2a89('0x36')]['toLowerCase']()),_0x53f786);return respondWithRpcPromise(_0x2a89('0x4a'),'destroy',{'module':'chan_sip.so'});}})['catch'](handleError(_0xec7582,null));};
\ No newline at end of file
index b44d2f5..ada7045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb248=['lodash','../../config/logger','api','moment','bluebird','path','rimraf','./network.attributes','exports','define','network'];(function(_0x2e4f8b,_0x1feecf){var _0x2b44d2=function(_0x5025e5){while(--_0x5025e5){_0x2e4f8b['push'](_0x2e4f8b['shift']());}};_0x2b44d2(++_0x1feecf);}(_0xb248,0xc6));var _0x8b24=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0xb248[_0x53ccf2];return _0x5a2964;};'use strict';var _=require(_0x8b24('0x0'));var util=require('util');var logger=require(_0x8b24('0x1'))(_0x8b24('0x2'));var moment=require(_0x8b24('0x3'));var BPromise=require(_0x8b24('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x8b24('0x5'));var rimraf=require(_0x8b24('0x6'));var config=require('../../config/environment');var attributes=require(_0x8b24('0x7'));module[_0x8b24('0x8')]=function(_0x4cc3c4,_0x6da5b7){return _0x4cc3c4[_0x8b24('0x9')]('Network',attributes,{'tableName':_0x8b24('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5db8=['lodash','util','../../config/logger','moment','bluebird','request-promise','../../config/environment','./network.attributes','exports','Network','network'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x5db8,0xbb));var _0x85db=function(_0x4bb66f,_0x3cd682){_0x4bb66f=_0x4bb66f-0x0;var _0xf2772f=_0x5db8[_0x4bb66f];return _0xf2772f;};'use strict';var _=require(_0x85db('0x0'));var util=require(_0x85db('0x1'));var logger=require(_0x85db('0x2'))('api');var moment=require(_0x85db('0x3'));var BPromise=require(_0x85db('0x4'));var rp=require(_0x85db('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x85db('0x6'));var attributes=require(_0x85db('0x7'));module[_0x85db('0x8')]=function(_0x34d71f,_0x48bf16){return _0x34d71f['define'](_0x85db('0x9'),attributes,{'tableName':_0x85db('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 36bd96c..910456e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x10a36a,_0x591dea){var _0xd9c529=function(_0x273242){while(--_0x273242){_0x10a36a['push'](_0x10a36a['shift']());}};_0xd9c529(++_0x591dea);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('Network,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
+var _0x7a54=['info','Network,\x20%s,\x20%s','debug','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x2f9d82,_0x5d07eb){_0x2f9d82=_0x2f9d82-0x0;var _0x47553b=_0x7a54[_0x2f9d82];return _0x47553b;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Network,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}
\ No newline at end of file
index 7eac38e..bdfdfc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13e8=['../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','index','/describe','isAuthenticated','describe','/:id','/:id/dispositions','getDispositions','getAnswers','/:id/interactions','getInteractions','getAgents','post','/:id/canned_answers','notify','addApplications','/:id/users','addAgents','/:id/send','put','update','delete','destroy','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x45fc6a,_0x166adb){var _0x14bcfd=function(_0x3ba718){while(--_0x3ba718){_0x45fc6a['push'](_0x45fc6a['shift']());}};_0x14bcfd(++_0x166adb);}(_0x13e8,0x12c));var _0x813e=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x13e8[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0x813e('0x0'));var util=require(_0x813e('0x1'));var path=require('path');var timeout=require(_0x813e('0x2'));var express=require(_0x813e('0x3'));var router=express[_0x813e('0x4')]();var fs_extra=require(_0x813e('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x813e('0x6'));var config=require(_0x813e('0x7'));var controller=require(_0x813e('0x8'));router[_0x813e('0x9')]('/',auth['isAuthenticated'](),controller[_0x813e('0xa')]);router[_0x813e('0x9')](_0x813e('0xb'),auth[_0x813e('0xc')](),controller[_0x813e('0xd')]);router[_0x813e('0x9')](_0x813e('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x813e('0x9')](_0x813e('0xf'),auth[_0x813e('0xc')](),controller[_0x813e('0x10')]);router[_0x813e('0x9')]('/:id/canned_answers',auth[_0x813e('0xc')](),controller[_0x813e('0x11')]);router[_0x813e('0x9')]('/:id/applications',auth[_0x813e('0xc')](),controller['getApplications']);router[_0x813e('0x9')](_0x813e('0x12'),auth[_0x813e('0xc')](),controller[_0x813e('0x13')]);router[_0x813e('0x9')]('/:id/users',auth[_0x813e('0xc')](),controller[_0x813e('0x14')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x813e('0x15')]('/:id/dispositions',auth['isAuthenticated'](),controller['addDisposition']);router[_0x813e('0x15')](_0x813e('0x16'),auth[_0x813e('0xc')](),controller['addAnswer']);router[_0x813e('0x15')]('/:id/notify',controller[_0x813e('0x17')]);router[_0x813e('0x15')]('/:id/applications',auth[_0x813e('0xc')](),controller[_0x813e('0x18')]);router[_0x813e('0x15')](_0x813e('0x19'),auth['isAuthenticated'](),controller[_0x813e('0x1a')]);router[_0x813e('0x15')](_0x813e('0x1b'),auth['isAuthenticated'](),controller['send']);router[_0x813e('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x813e('0x1d')]);router[_0x813e('0x1e')](_0x813e('0xe'),auth[_0x813e('0xc')](),controller[_0x813e('0x1f')]);router['delete']('/:id/dispositions',auth[_0x813e('0xc')](),controller['removeDispositions']);router[_0x813e('0x1e')](_0x813e('0x16'),auth[_0x813e('0xc')](),controller['removeAnswers']);router[_0x813e('0x1e')]('/:id/users',auth['isAuthenticated'](),controller[_0x813e('0x20')]);module[_0x813e('0x21')]=router;
\ No newline at end of file
+var _0x0628=['index','/describe','describe','get','/:id','isAuthenticated','show','/:id/canned_answers','getAnswers','/:id/applications','getApplications','getInteractions','/:id/users','getAgents','post','create','/:id/dispositions','addAnswer','notify','addApplications','addAgents','/:id/send','send','update','delete','destroy','removeDispositions','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','./openchannelAccount.controller'];(function(_0x4dae71,_0x552903){var _0x25d8be=function(_0x2a5027){while(--_0x2a5027){_0x4dae71['push'](_0x4dae71['shift']());}};_0x25d8be(++_0x552903);}(_0x0628,0x1cc));var _0x8062=function(_0x327d9c,_0x4360d5){_0x327d9c=_0x327d9c-0x0;var _0x219f6b=_0x0628[_0x327d9c];return _0x219f6b;};'use strict';var multer=require(_0x8062('0x0'));var util=require(_0x8062('0x1'));var path=require(_0x8062('0x2'));var timeout=require(_0x8062('0x3'));var express=require(_0x8062('0x4'));var router=express[_0x8062('0x5')]();var fs_extra=require(_0x8062('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x8062('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x8062('0x8')]);router['get'](_0x8062('0x9'),auth['isAuthenticated'](),controller[_0x8062('0xa')]);router[_0x8062('0xb')](_0x8062('0xc'),auth[_0x8062('0xd')](),controller[_0x8062('0xe')]);router[_0x8062('0xb')]('/:id/dispositions',auth[_0x8062('0xd')](),controller['getDispositions']);router[_0x8062('0xb')](_0x8062('0xf'),auth[_0x8062('0xd')](),controller[_0x8062('0x10')]);router[_0x8062('0xb')](_0x8062('0x11'),auth[_0x8062('0xd')](),controller[_0x8062('0x12')]);router[_0x8062('0xb')]('/:id/interactions',auth['isAuthenticated'](),controller[_0x8062('0x13')]);router[_0x8062('0xb')](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x15')]);router[_0x8062('0x16')]('/',auth[_0x8062('0xd')](),controller[_0x8062('0x17')]);router['post'](_0x8062('0x18'),auth[_0x8062('0xd')](),controller['addDisposition']);router['post'](_0x8062('0xf'),auth[_0x8062('0xd')](),controller[_0x8062('0x19')]);router[_0x8062('0x16')]('/:id/notify',controller[_0x8062('0x1a')]);router[_0x8062('0x16')](_0x8062('0x11'),auth[_0x8062('0xd')](),controller[_0x8062('0x1b')]);router['post'](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x1c')]);router[_0x8062('0x16')](_0x8062('0x1d'),auth[_0x8062('0xd')](),controller[_0x8062('0x1e')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0x8062('0x1f')]);router[_0x8062('0x20')]('/:id',auth[_0x8062('0xd')](),controller[_0x8062('0x21')]);router[_0x8062('0x20')](_0x8062('0x18'),auth[_0x8062('0xd')](),controller[_0x8062('0x22')]);router[_0x8062('0x20')](_0x8062('0xf'),auth[_0x8062('0xd')](),controller['removeAnswers']);router['delete'](_0x8062('0x14'),auth[_0x8062('0xd')](),controller[_0x8062('0x23')]);module['exports']=router;
\ No newline at end of file
index 03df946..d59064b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f4=['generate','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name'];(function(_0x2714ec,_0x36daa4){var _0x2608e5=function(_0x408468){while(--_0x408468){_0x2714ec['push'](_0x2714ec['shift']());}};_0x2608e5(++_0x36daa4);}(_0x45f4,0x1d7));var _0x445f=function(_0x39e309,_0x1b260b){_0x39e309=_0x39e309-0x0;var _0x180c8a=_0x45f4[_0x39e309];return _0x180c8a;};'use strict';var Sequelize=require(_0x445f('0x0'));var rs=require(_0x445f('0x1'));module[_0x445f('0x2')]={'name':{'type':Sequelize[_0x445f('0x3')],'unique':_0x445f('0x4'),'allowNull':![]},'description':{'type':Sequelize[_0x445f('0x3')]},'token':{'type':Sequelize[_0x445f('0x3')],'defaultValue':function(){return rs[_0x445f('0x5')]();}},'replyUri':{'type':Sequelize[_0x445f('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0x445f('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0x445f('0x6')],'defaultValue':function(){return _0x445f('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x445f('0x8')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0x445f('0x3')]},'queueTransfer':{'type':Sequelize[_0x445f('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x445f('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x445f('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x445f('0x9')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x445f('0xa'),'set':function(_0x181389){if(!_0x181389)this[_0x445f('0xb')](_0x445f('0xc'),null);this['setDataValue'](_0x445f('0xd'),_0x181389);}}};
\ No newline at end of file
+var _0x86bd=['mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x86bd,0xda));var _0xd86b=function(_0x50d911,_0x5a81cb){_0x50d911=_0x50d911-0x0;var _0x2a1e57=_0x86bd[_0x50d911];return _0x2a1e57;};'use strict';var Sequelize=require(_0xd86b('0x0'));var rs=require(_0xd86b('0x1'));module[_0xd86b('0x2')]={'name':{'type':Sequelize[_0xd86b('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xd86b('0x3')]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'replyUri':{'type':Sequelize[_0xd86b('0x3')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize['STRING'],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xd86b('0x4')],'defaultValue':function(){return _0xd86b('0x5');}},'notificationSound':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xd86b('0x3')]},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xd86b('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xd86b('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xd86b('0x6')],'defaultValue':![],'comment':_0xd86b('0x9'),'set':function(_0x7b8e55){if(!_0x7b8e55)this['setDataValue'](_0xd86b('0xa'),null);this['setDataValue'](_0xd86b('0xb'),_0x7b8e55);}}};
\ No newline at end of file
index b942930..5e849a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb95a=['map','query','keys','attributes','intersection','model','fields','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','includeAll','include','findAll','show','params','Pause','options','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','OpenchannelAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','OpenchannelAccountId','Disposition','findOne','order','rows','removeDispositions','ids','CannedAnswer','getAnswers','removeAnswers','openchannel','Sequelize','createdAt','updatedAt','difference','CompanyId','ListId','from','ValidationError','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmContact','Contacts','DESC','OpenchannelApplication','Applications','List','account','applications','list','orderBy','asc','contact','firstName','lastName','threadId','externalUrl','OpenchannelInteraction','ContactId','spread','messageId','interaction','created','autoclose','push','close','*,*,*,*','UserId','User','unshift','agent','Start','EventManager','notify','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','findAndCountAll','priority','finally','getApplications','getInteractions','Contact','fullname','internal','Tag','Tags','tag','addAgents','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./openchannelAccount.socket','register','jayson/promise','client','http','then','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type'];(function(_0x243b2f,_0x30aa15){var _0xcb3c2d=function(_0x213bb2){while(--_0x213bb2){_0x243b2f['push'](_0x243b2f['shift']());}};_0xcb3c2d(++_0x30aa15);}(_0xb95a,0x13b));var _0xab95=function(_0x56cba2,_0x2b1cd8){_0x56cba2=_0x56cba2-0x0;var _0x1060c8=_0xb95a[_0x56cba2];return _0x1060c8;};'use strict';var emlformat=require(_0xab95('0x0'));var rimraf=require(_0xab95('0x1'));var zipdir=require(_0xab95('0x2'));var jsonpatch=require(_0xab95('0x3'));var rp=require(_0xab95('0x4'));var moment=require(_0xab95('0x5'));var BPromise=require(_0xab95('0x6'));var Mustache=require(_0xab95('0x7'));var util=require(_0xab95('0x8'));var path=require(_0xab95('0x9'));var sox=require(_0xab95('0xa'));var csv=require(_0xab95('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xab95('0xc'));var _=require(_0xab95('0xd'));var squel=require(_0xab95('0xe'));var crypto=require('crypto');var jsforce=require(_0xab95('0xf'));var deskjs=require(_0xab95('0x10'));var toCsv=require(_0xab95('0xb'));var querystring=require(_0xab95('0x11'));var Papa=require(_0xab95('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xab95('0x13'));var as=require(_0xab95('0x14'));var hardwareService=require(_0xab95('0x15'));var logger=require('../../config/logger')(_0xab95('0x16'));var utils=require(_0xab95('0x17'));var config=require(_0xab95('0x18'));var licenseUtil=require(_0xab95('0x19'));var db=require(_0xab95('0x1a'))['db'];config[_0xab95('0x1b')]=_[_0xab95('0x1c')](config[_0xab95('0x1b')],{'host':_0xab95('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xab95('0x1b')]));require(_0xab95('0x1e'))[_0xab95('0x1f')](socket);var jayson=require(_0xab95('0x20'));var client=jayson[_0xab95('0x21')]['http']({'port':0x232c});var client9002=jayson[_0xab95('0x21')][_0xab95('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x29a86f,_0x37851b,_0x4dcbd3,_0x7d66d7){return new BPromise(function(_0x182d34,_0x1ca1f4){var _0x20380a=_0x7d66d7||client;return _0x20380a['request'](_0x29a86f,_0x4dcbd3)[_0xab95('0x23')](function(_0x5dae74){logger[_0xab95('0x24')](_0xab95('0x25'),_0x37851b,_0xab95('0x26'));logger[_0xab95('0x27')](_0xab95('0x28'),_0x37851b,'request\x20sent',JSON['stringify'](_0x5dae74));if(_0x5dae74[_0xab95('0x29')]){if(_0x5dae74[_0xab95('0x29')][_0xab95('0x2a')]===0x1f4){logger[_0xab95('0x29')](_0xab95('0x25'),_0x37851b,_0x5dae74[_0xab95('0x29')][_0xab95('0x2b')]);return _0x1ca1f4(_0x5dae74['error'][_0xab95('0x2b')]);}logger[_0xab95('0x29')](_0xab95('0x25'),_0x37851b,_0x5dae74['error'][_0xab95('0x2b')]);return _0x182d34(_0x5dae74[_0xab95('0x29')][_0xab95('0x2b')]);}else{logger[_0xab95('0x24')](_0xab95('0x25'),_0x37851b,'request\x20sent');_0x182d34(_0x5dae74[_0xab95('0x2c')][_0xab95('0x2b')]);}})[_0xab95('0x2d')](function(_0x44dd57){logger[_0xab95('0x29')](_0xab95('0x25'),_0x37851b,_0x44dd57);_0x1ca1f4(_0x44dd57);});});}function respondWithStatusCode(_0x55108e,_0x53e14f){_0x53e14f=_0x53e14f||0xcc;return function(_0x405d45){if(_0x405d45){return _0x55108e['sendStatus'](_0x53e14f);}return _0x55108e[_0xab95('0x2e')](_0x53e14f)[_0xab95('0x2f')]();};}function respondWithResult(_0xf0caeb,_0x39f683){_0x39f683=_0x39f683||0xc8;return function(_0x1a0245){if(_0x1a0245){return _0xf0caeb[_0xab95('0x2e')](_0x39f683)[_0xab95('0x30')](_0x1a0245);}};}function respondWithFilteredResult(_0x3efc76,_0x598eff){return function(_0x4c9702){if(_0x4c9702){var _0x4d98d6=typeof _0x598eff[_0xab95('0x31')]==='undefined'&&typeof _0x598eff[_0xab95('0x32')]===_0xab95('0x33');var _0x3313a8=_0x4c9702['count'];var _0x14c3a5=_0x4d98d6?0x0:_0x598eff['offset'];var _0x1d2c4b=_0x4d98d6?_0x4c9702[_0xab95('0x34')]:_0x598eff[_0xab95('0x31')]+_0x598eff[_0xab95('0x32')];var _0x3508ab;if(_0x1d2c4b>=_0x3313a8){_0x1d2c4b=_0x3313a8;_0x3508ab=0xc8;}else{_0x3508ab=0xce;}_0x3efc76[_0xab95('0x2e')](_0x3508ab);return _0x3efc76[_0xab95('0x35')](_0xab95('0x36'),_0x14c3a5+'-'+_0x1d2c4b+'/'+_0x3313a8)[_0xab95('0x30')](_0x4c9702);}return null;};}function patchUpdates(_0xedd1a1){return function(_0x1bbf2f){try{jsonpatch[_0xab95('0x37')](_0x1bbf2f,_0xedd1a1,!![]);}catch(_0x197381){return BPromise[_0xab95('0x38')](_0x197381);}return _0x1bbf2f['save']();};}function saveUpdates(_0x411982,_0x46bf7e){return function(_0x466845){if(_0x466845){return _0x466845[_0xab95('0x39')](_0x411982)[_0xab95('0x23')](function(_0x18e3ef){return _0x18e3ef;});}return null;};}function removeEntity(_0x440f2b,_0x3948e5){return function(_0xe9122e){if(_0xe9122e){return _0xe9122e[_0xab95('0x3a')]()[_0xab95('0x23')](function(){var _0x516167=_0xe9122e[_0xab95('0x3b')]({'plain':!![]});var _0x4dff5b='OpenchannelAccounts';return db[_0xab95('0x3c')]['destroy']({'where':{'type':_0x4dff5b,'resourceId':_0x516167['id']}})[_0xab95('0x23')](function(){return _0xe9122e;});})['then'](function(){_0x440f2b[_0xab95('0x2e')](0xcc)[_0xab95('0x2f')]();});}};}function handleEntityNotFound(_0x323308,_0x2a7189){return function(_0x22de52){if(!_0x22de52){_0x323308[_0xab95('0x3d')](0x194);}return _0x22de52;};}function handleError(_0x5c079d,_0x493283){_0x493283=_0x493283||0x1f4;return function(_0x2e4cd0){logger[_0xab95('0x29')](_0x2e4cd0[_0xab95('0x3e')]);if(_0x2e4cd0['name']){delete _0x2e4cd0[_0xab95('0x3f')];}_0x5c079d[_0xab95('0x2e')](_0x493283)[_0xab95('0x40')](_0x2e4cd0);};}exports[_0xab95('0x41')]=function(_0x26735d,_0x5a3b95){var _0x7e78ff={'include':[{'model':db['Pause'],'as':_0xab95('0x42')}]},_0x2cab53={},_0x423c3a={'count':0x0,'rows':[]};var _0x5ce3d9=_['map'](db[_0xab95('0x43')][_0xab95('0x44')],function(_0x4b8554){return{'name':_0x4b8554[_0xab95('0x45')],'type':_0x4b8554[_0xab95('0x46')]['key']};});_0x2cab53['model']=_[_0xab95('0x47')](_0x5ce3d9,_0xab95('0x3f'));_0x2cab53[_0xab95('0x48')]=_[_0xab95('0x49')](_0x26735d['query']);_0x2cab53['filters']=_['intersection'](_0x2cab53['model'],_0x2cab53['query']);_0x7e78ff[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0x2cab53[_0xab95('0x4c')],qs['fields'](_0x26735d[_0xab95('0x48')][_0xab95('0x4d')]));_0x7e78ff[_0xab95('0x4a')]=_0x7e78ff[_0xab95('0x4a')][_0xab95('0x4e')]?_0x7e78ff['attributes']:_0x2cab53['model'];if(!_0x26735d[_0xab95('0x48')][_0xab95('0x4f')](_0xab95('0x50'))){_0x7e78ff[_0xab95('0x32')]=qs[_0xab95('0x32')](_0x26735d[_0xab95('0x48')][_0xab95('0x32')]);_0x7e78ff[_0xab95('0x31')]=qs[_0xab95('0x31')](_0x26735d[_0xab95('0x48')][_0xab95('0x31')]);}_0x7e78ff['order']=qs['sort'](_0x26735d[_0xab95('0x48')][_0xab95('0x51')]);_0x7e78ff[_0xab95('0x52')]=qs[_0xab95('0x53')](_[_0xab95('0x54')](_0x26735d[_0xab95('0x48')],_0x2cab53[_0xab95('0x53')]),_0x5ce3d9);if(_0x26735d[_0xab95('0x48')][_0xab95('0x55')]){_0x7e78ff['where']=_[_0xab95('0x56')](_0x7e78ff['where'],{'$or':_['map'](_0x5ce3d9,function(_0x12fe77){if(_0x12fe77[_0xab95('0x46')]!==_0xab95('0x57')){var _0x573208={};_0x573208[_0x12fe77[_0xab95('0x3f')]]={'$like':'%'+_0x26735d[_0xab95('0x48')]['filter']+'%'};return _0x573208;}})});}_0x7e78ff=_[_0xab95('0x56')]({},_0x7e78ff,_0x26735d['options']);var _0x470535={'where':_0x7e78ff[_0xab95('0x52')]};return db[_0xab95('0x43')]['count'](_0x470535)['then'](function(_0x19e862){_0x423c3a[_0xab95('0x34')]=_0x19e862;if(_0x26735d[_0xab95('0x48')][_0xab95('0x58')]){_0x7e78ff[_0xab95('0x59')]=[{'all':!![]}];}return db[_0xab95('0x43')][_0xab95('0x5a')](_0x7e78ff);})[_0xab95('0x23')](function(_0x30d15d){_0x423c3a['rows']=_0x30d15d;return _0x423c3a;})['then'](respondWithFilteredResult(_0x5a3b95,_0x7e78ff))[_0xab95('0x2d')](handleError(_0x5a3b95,null));};exports[_0xab95('0x5b')]=function(_0x3e7228,_0x10b5d7){var _0x298d50={'raw':![],'where':{'id':_0x3e7228[_0xab95('0x5c')]['id']},'include':[{'model':db[_0xab95('0x5d')],'as':'mandatoryDispositionPause'}]},_0x36bee9={};_0x36bee9[_0xab95('0x4c')]=_[_0xab95('0x49')](db[_0xab95('0x43')]['rawAttributes']);_0x36bee9[_0xab95('0x48')]=_[_0xab95('0x49')](_0x3e7228[_0xab95('0x48')]);_0x36bee9['filters']=_['intersection'](_0x36bee9[_0xab95('0x4c')],_0x36bee9[_0xab95('0x48')]);_0x298d50['attributes']=_[_0xab95('0x4b')](_0x36bee9[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0x3e7228['query'][_0xab95('0x4d')]));_0x298d50[_0xab95('0x4a')]=_0x298d50[_0xab95('0x4a')][_0xab95('0x4e')]?_0x298d50['attributes']:_0x36bee9['model'];if(_0x3e7228[_0xab95('0x48')]['includeAll']){_0x298d50[_0xab95('0x59')]=[{'all':!![]}];}_0x298d50=_[_0xab95('0x56')]({},_0x298d50,_0x3e7228[_0xab95('0x5e')]);return db[_0xab95('0x43')][_0xab95('0x5f')](_0x298d50)[_0xab95('0x23')](handleEntityNotFound(_0x10b5d7,null))['then'](respondWithResult(_0x10b5d7,null))[_0xab95('0x2d')](handleError(_0x10b5d7,null));};exports[_0xab95('0x60')]=function(_0x3b5eba,_0x39c8dd){return db[_0xab95('0x43')][_0xab95('0x60')](_0x3b5eba[_0xab95('0x61')],{})['then'](function(_0x328a28){var _0x16015d=_0x3b5eba['user']['get']({'plain':!![]});if(!_0x16015d)throw new Error(_0xab95('0x62'));if(_0x16015d[_0xab95('0x63')]===_0xab95('0x64')){var _0x12fc03=_0x328a28['get']({'plain':!![]});var _0x14edfa=_0xab95('0x65');return db[_0xab95('0x66')]['find']({'where':{'name':_0x14edfa,'userProfileId':_0x16015d[_0xab95('0x67')]},'raw':!![]})[_0xab95('0x23')](function(_0x2731d8){if(_0x2731d8&&_0x2731d8[_0xab95('0x68')]===0x0){return db[_0xab95('0x3c')][_0xab95('0x60')]({'name':_0x12fc03[_0xab95('0x3f')],'resourceId':_0x12fc03['id'],'type':_0x2731d8[_0xab95('0x3f')],'sectionId':_0x2731d8['id']},{})[_0xab95('0x23')](function(){return _0x328a28;});}else{return _0x328a28;}})[_0xab95('0x2d')](function(_0x383537){logger[_0xab95('0x29')](_0xab95('0x69'),_0x383537);throw _0x383537;});}return _0x328a28;})['then'](respondWithResult(_0x39c8dd,0xc9))[_0xab95('0x2d')](handleError(_0x39c8dd,null));};exports['update']=function(_0x4faefb,_0x3790bd){if(_0x4faefb[_0xab95('0x61')]['id']){delete _0x4faefb[_0xab95('0x61')]['id'];}return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0x4faefb[_0xab95('0x5c')]['id']},'include':[{'model':db[_0xab95('0x5d')],'as':_0xab95('0x42')}]})[_0xab95('0x23')](handleEntityNotFound(_0x3790bd,null))[_0xab95('0x23')](saveUpdates(_0x4faefb[_0xab95('0x61')],null))['then'](respondWithResult(_0x3790bd,null))[_0xab95('0x2d')](handleError(_0x3790bd,null));};exports[_0xab95('0x3a')]=function(_0x22bdcc,_0x2b3a12){return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0x22bdcc[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x2b3a12,null))[_0xab95('0x23')](removeEntity(_0x2b3a12,null))['catch'](handleError(_0x2b3a12,null));};exports[_0xab95('0x6a')]=function(_0x4ed455,_0x53ebfb){return db[_0xab95('0x43')][_0xab95('0x6a')]()[_0xab95('0x23')](respondWithResult(_0x53ebfb,null))[_0xab95('0x2d')](handleError(_0x53ebfb,null));};exports[_0xab95('0x6b')]=function(_0x579b4d,_0x186d26,_0x18a8b7){if(_0x579b4d[_0xab95('0x61')]['id']){delete _0x579b4d['body']['id'];}return db['OpenchannelAccount']['find']({'where':{'id':_0x579b4d[_0xab95('0x5c')]['id']}})['then'](handleEntityNotFound(_0x186d26,null))[_0xab95('0x23')](function(_0x46203d){if(_0x46203d){_0x579b4d['body'][_0xab95('0x6c')]=_0x46203d['id'];return db[_0xab95('0x6d')][_0xab95('0x60')](_0x579b4d[_0xab95('0x61')]);}})[_0xab95('0x23')](respondWithResult(_0x186d26,null))[_0xab95('0x2d')](handleError(_0x186d26,null));};exports['getDispositions']=function(_0x5cbbb0,_0x5b0812,_0x5c81ef){var _0x350859={'raw':![],'where':{}};var _0x3b8dc3={};var _0x43794a={'count':0x0,'rows':[]};return db[_0xab95('0x43')][_0xab95('0x6e')]({'where':{'id':_0x5cbbb0['params']['id']}})['then'](handleEntityNotFound(_0x5b0812,null))[_0xab95('0x23')](function(_0x121ffc){if(_0x121ffc){_0x3b8dc3[_0xab95('0x4c')]=_[_0xab95('0x49')](db[_0xab95('0x6d')][_0xab95('0x44')]);_0x3b8dc3[_0xab95('0x48')]=_[_0xab95('0x49')](_0x5cbbb0[_0xab95('0x48')]);_0x3b8dc3[_0xab95('0x53')]=_[_0xab95('0x4b')](_0x3b8dc3[_0xab95('0x4c')],_0x3b8dc3[_0xab95('0x48')]);_0x350859[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0x3b8dc3[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0x5cbbb0[_0xab95('0x48')]['fields']));_0x350859['attributes']=_0x350859[_0xab95('0x4a')]['length']?_0x350859['attributes']:_0x3b8dc3['model'];if(!_0x5cbbb0[_0xab95('0x48')][_0xab95('0x4f')](_0xab95('0x50'))){_0x350859['limit']=qs[_0xab95('0x32')](_0x5cbbb0['query']['limit']);_0x350859[_0xab95('0x31')]=qs['offset'](_0x5cbbb0['query'][_0xab95('0x31')]);}_0x350859[_0xab95('0x6f')]=qs[_0xab95('0x51')](_0x5cbbb0['query']['sort']);_0x350859[_0xab95('0x52')]=qs['filters'](_[_0xab95('0x54')](_0x5cbbb0[_0xab95('0x48')],_0x3b8dc3[_0xab95('0x53')]));_0x350859[_0xab95('0x52')]['OpenchannelAccountId']=_0x121ffc['id'];if(_0x5cbbb0['query'][_0xab95('0x55')]){_0x350859[_0xab95('0x52')]=_['merge'](_0x350859[_0xab95('0x52')],{'$or':_[_0xab95('0x47')](_0x350859['attributes'],function(_0x54aed6){var _0x378a8e={};_0x378a8e[_0x54aed6]={'$like':'%'+_0x5cbbb0['query']['filter']+'%'};return _0x378a8e;})});}_0x350859=_[_0xab95('0x56')]({},_0x350859,_0x5cbbb0['options']);return db[_0xab95('0x6d')]['count']({'where':_0x350859[_0xab95('0x52')]})[_0xab95('0x23')](function(_0xf4bd1){_0x43794a[_0xab95('0x34')]=_0xf4bd1;if(_0x5cbbb0[_0xab95('0x48')][_0xab95('0x58')]){_0x350859[_0xab95('0x59')]=[{'all':!![]}];}return db[_0xab95('0x6d')][_0xab95('0x5a')](_0x350859);})[_0xab95('0x23')](function(_0x20ea3e){_0x43794a[_0xab95('0x70')]=_0x20ea3e;return _0x43794a;});}})[_0xab95('0x23')](respondWithFilteredResult(_0x5b0812,_0x350859))[_0xab95('0x2d')](handleError(_0x5b0812,null));};exports[_0xab95('0x71')]=function(_0x29b331,_0x5431b4,_0x46efd1){return db['OpenchannelAccount'][_0xab95('0x5f')]({'where':{'id':_0x29b331['params']['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x5431b4,null))['then'](function(_0xb1776c){if(_0xb1776c){return _0xb1776c[_0xab95('0x71')](_0x29b331[_0xab95('0x48')][_0xab95('0x72')]);}})[_0xab95('0x23')](respondWithStatusCode(_0x5431b4,null))[_0xab95('0x2d')](handleError(_0x5431b4,null));};exports['addAnswer']=function(_0x661076,_0x5582e4,_0x55a9e5){if(_0x661076[_0xab95('0x61')]['id']){delete _0x661076[_0xab95('0x61')]['id'];}return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0x661076[_0xab95('0x5c')]['id']}})['then'](handleEntityNotFound(_0x5582e4,null))[_0xab95('0x23')](function(_0x2f8448){if(_0x2f8448){_0x661076[_0xab95('0x61')][_0xab95('0x6c')]=_0x2f8448['id'];return db[_0xab95('0x73')][_0xab95('0x60')](_0x661076[_0xab95('0x61')]);}})[_0xab95('0x23')](respondWithResult(_0x5582e4,null))[_0xab95('0x2d')](handleError(_0x5582e4,null));};exports[_0xab95('0x74')]=function(_0x3eb34d,_0x22799c,_0x28db74){var _0x3b4f42={'raw':![],'where':{}};var _0x2ce3db={};var _0xe7cef2={'count':0x0,'rows':[]};return db[_0xab95('0x43')][_0xab95('0x6e')]({'where':{'id':_0x3eb34d['params']['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x22799c,null))[_0xab95('0x23')](function(_0x22baae){if(_0x22baae){_0x2ce3db['model']=_[_0xab95('0x49')](db[_0xab95('0x73')][_0xab95('0x44')]);_0x2ce3db['query']=_[_0xab95('0x49')](_0x3eb34d[_0xab95('0x48')]);_0x2ce3db[_0xab95('0x53')]=_['intersection'](_0x2ce3db['model'],_0x2ce3db[_0xab95('0x48')]);_0x3b4f42[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0x2ce3db[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0x3eb34d[_0xab95('0x48')][_0xab95('0x4d')]));_0x3b4f42[_0xab95('0x4a')]=_0x3b4f42[_0xab95('0x4a')][_0xab95('0x4e')]?_0x3b4f42['attributes']:_0x2ce3db[_0xab95('0x4c')];if(!_0x3eb34d['query'][_0xab95('0x4f')](_0xab95('0x50'))){_0x3b4f42[_0xab95('0x32')]=qs['limit'](_0x3eb34d['query'][_0xab95('0x32')]);_0x3b4f42[_0xab95('0x31')]=qs[_0xab95('0x31')](_0x3eb34d[_0xab95('0x48')][_0xab95('0x31')]);}_0x3b4f42['order']=qs[_0xab95('0x51')](_0x3eb34d['query']['sort']);_0x3b4f42['where']=qs[_0xab95('0x53')](_[_0xab95('0x54')](_0x3eb34d['query'],_0x2ce3db[_0xab95('0x53')]));_0x3b4f42[_0xab95('0x52')][_0xab95('0x6c')]=_0x22baae['id'];if(_0x3eb34d[_0xab95('0x48')][_0xab95('0x55')]){_0x3b4f42[_0xab95('0x52')]=_['merge'](_0x3b4f42[_0xab95('0x52')],{'$or':_[_0xab95('0x47')](_0x3b4f42[_0xab95('0x4a')],function(_0x3f29e5){var _0x5bd87a={};_0x5bd87a[_0x3f29e5]={'$like':'%'+_0x3eb34d[_0xab95('0x48')][_0xab95('0x55')]+'%'};return _0x5bd87a;})});}_0x3b4f42=_['merge']({},_0x3b4f42,_0x3eb34d['options']);return db[_0xab95('0x73')][_0xab95('0x34')]({'where':_0x3b4f42['where']})[_0xab95('0x23')](function(_0x12518e){_0xe7cef2[_0xab95('0x34')]=_0x12518e;if(_0x3eb34d[_0xab95('0x48')][_0xab95('0x58')]){_0x3b4f42[_0xab95('0x59')]=[{'all':!![]}];}return db[_0xab95('0x73')][_0xab95('0x5a')](_0x3b4f42);})[_0xab95('0x23')](function(_0x50721b){_0xe7cef2[_0xab95('0x70')]=_0x50721b;return _0xe7cef2;});}})[_0xab95('0x23')](respondWithFilteredResult(_0x22799c,_0x3b4f42))[_0xab95('0x2d')](handleError(_0x22799c,null));};exports['removeAnswers']=function(_0x457374,_0x2ca527,_0x228d8f){return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0x457374[_0xab95('0x5c')]['id']}})['then'](handleEntityNotFound(_0x2ca527,null))[_0xab95('0x23')](function(_0x594d38){if(_0x594d38){return _0x594d38[_0xab95('0x75')](_0x457374[_0xab95('0x48')][_0xab95('0x72')]);}})[_0xab95('0x23')](respondWithStatusCode(_0x2ca527,null))[_0xab95('0x2d')](handleError(_0x2ca527,null));};exports['notify']=function(_0x1fdb46,_0x4255a7,_0x4a3397){var _0x581beb={'body':_0x1fdb46[_0xab95('0x61')],'channel':_0xab95('0x76')};var _0x5d6836=[];var _0x6b86dd=[];var _0x120c51={};var _0x33ec58=![];return db['CmContact'][_0xab95('0x6a')]()[_0xab95('0x23')](function(_0x127446){if(!_0x127446){throw new db[(_0xab95('0x77'))]['ValidationError']('no\x20available\x20attributes');}_0x5d6836=_['difference'](_[_0xab95('0x49')](_0x127446),[_0xab95('0x78'),_0xab95('0x79')]);_0x6b86dd=_[_0xab95('0x7a')](_[_0xab95('0x49')](_0x127446),[_0xab95('0x78'),_0xab95('0x79'),_0xab95('0x7b'),_0xab95('0x7c')]);if(_0x1fdb46[_0xab95('0x61')]['id']){delete _0x1fdb46[_0xab95('0x61')]['id'];}if(_['isNil'](_0x1fdb46[_0xab95('0x61')][_0xab95('0x7d')])){throw new db[(_0xab95('0x77'))][(_0xab95('0x7e'))](_0xab95('0x7f'));}if(_[_0xab95('0x80')](_0x1fdb46[_0xab95('0x61')][_0xab95('0x61')])||_0x1fdb46['body'][_0xab95('0x61')]===''){throw new db[(_0xab95('0x77'))][(_0xab95('0x7e'))](_0xab95('0x81'));}if(_['isNil'](_0x1fdb46[_0xab95('0x61')][_0xab95('0x82')])){throw new db[(_0xab95('0x77'))][(_0xab95('0x7e'))](_0xab95('0x83')+_0x6b86dd);}if(!_[_0xab95('0x84')](_0x6b86dd,_0x1fdb46[_0xab95('0x61')]['mapKey'])){throw new db['Sequelize']['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x6b86dd);}_0x120c51[_0x1fdb46[_0xab95('0x61')][_0xab95('0x82')]]=_0x1fdb46[_0xab95('0x61')][_0xab95('0x7d')];})[_0xab95('0x23')](function(){return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0x1fdb46[_0xab95('0x5c')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xab95('0x85')],'as':_0xab95('0x86'),'where':_0x120c51,'limit':0x1,'order':[['updatedAt',_0xab95('0x87')]]}]},{'model':db[_0xab95('0x88')],'as':_0xab95('0x89')}]});})[_0xab95('0x23')](handleEntityNotFound(_0x4255a7,null))[_0xab95('0x23')](function(_0x2d4bd8){if(_0x2d4bd8&&_0x2d4bd8[_0xab95('0x8a')]){_0x581beb[_0xab95('0x8b')]=_0x2d4bd8;_0x581beb[_0xab95('0x8c')]=_0x2d4bd8[_0xab95('0x89')];_0x581beb[_0xab95('0x8d')]=_0x2d4bd8[_0xab95('0x8a')];_0x581beb[_0xab95('0x8c')]=_[_0xab95('0x8e')](_0x581beb[_0xab95('0x8c')],['priority'],[_0xab95('0x8f')]);if(_0x581beb[_0xab95('0x8b')][_0xab95('0x89')]){delete _0x581beb[_0xab95('0x8b')][_0xab95('0x89')];}if(_0x581beb[_0xab95('0x8b')]['List']&&_0x581beb['account'][_0xab95('0x8a')][_0xab95('0x86')]['length']){return _0x581beb['account'][_0xab95('0x8a')][_0xab95('0x86')][0x0];}var _0x1ab89d=_['defaults'](_0x1fdb46[_0xab95('0x61')],{'firstName':_0x1fdb46[_0xab95('0x61')]['from'],'ListId':_0x2d4bd8[_0xab95('0x7c')]});_0x1ab89d[_0x1fdb46[_0xab95('0x61')][_0xab95('0x82')]]=_0x1fdb46[_0xab95('0x61')][_0xab95('0x7d')];return db['CmContact'][_0xab95('0x60')](_0x1ab89d,{'fields':_0x5d6836,'raw':!![]});}})[_0xab95('0x23')](handleEntityNotFound(_0x4255a7,null))['then'](function(_0x37dd09){_0x581beb[_0xab95('0x90')]=_0x37dd09;if(_0x37dd09){var _0x59dbe4={'ContactId':_0x37dd09['id'],'OpenchannelAccountId':_0x1fdb46['params']['id'],'from':(_0x37dd09[_0xab95('0x91')]||'')+'\x20'+(_0x37dd09[_0xab95('0x92')]||'')};var _0x14655d={'OpenchannelAccountId':_0x1fdb46['params']['id'],'closed':![]};if(_0x1fdb46[_0xab95('0x61')][_0xab95('0x93')]){_0x14655d[_0xab95('0x93')]=_0x1fdb46['body']['threadId'];return db['OpenchannelInteraction'][_0xab95('0x5f')]({'where':_0x14655d})['then'](function(_0x2b44d8){if(_0x2b44d8){return[_0x2b44d8,![]];}_0x59dbe4[_0xab95('0x93')]=_0x1fdb46[_0xab95('0x61')][_0xab95('0x93')];_0x59dbe4['externalUrl']=_0x1fdb46[_0xab95('0x61')][_0xab95('0x94')];return db[_0xab95('0x95')]['create'](_0x59dbe4)[_0xab95('0x23')](function(_0x5121d5){return[_0x5121d5,!![]];});});}else{_0x14655d[_0xab95('0x93')]=null;}_0x14655d[_0xab95('0x96')]=_0x37dd09['id'];return db[_0xab95('0x95')][_0xab95('0x5f')]({'where':_0x14655d})[_0xab95('0x23')](function(_0xf521e6){if(_0xf521e6){return[_0xf521e6,![]];}return db['OpenchannelInteraction']['create'](_0x59dbe4)[_0xab95('0x23')](function(_0x15b6c5){return[_0x15b6c5,!![]];});});}})[_0xab95('0x97')](function(_0x8c091f,_0x51b6d3){if(_0x8c091f){_0x33ec58=_0x51b6d3;if(!_0x51b6d3){var _0x5d813b={'from':(_0x581beb['contact'][_0xab95('0x91')]||'')+'\x20'+(_0x581beb[_0xab95('0x90')][_0xab95('0x92')]||'')};if(_0x1fdb46[_0xab95('0x61')][_0xab95('0x93')]&&_0x1fdb46[_0xab95('0x61')][_0xab95('0x98')]&&_0x1fdb46[_0xab95('0x61')][_0xab95('0x93')]!=_0x1fdb46[_0xab95('0x61')]['messageId']){_0x5d813b[_0xab95('0x93')]=_0x1fdb46[_0xab95('0x61')][_0xab95('0x98')];}return _0x8c091f['update'](_0x5d813b);}else{return _0x8c091f;}}})[_0xab95('0x23')](function(_0x2bbee5){_0x581beb[_0xab95('0x99')]=_0x2bbee5['get']({'plain':!![]});_0x581beb[_0xab95('0x99')][_0xab95('0x9a')]=_0x33ec58;if(_0x581beb[_0xab95('0x99')][_0xab95('0x9a')]){if(_0x581beb['account'][_0xab95('0x9b')]){_0x581beb[_0xab95('0x8c')][_0xab95('0x9c')]({'id':0x0,'priority':_0x581beb[_0xab95('0x8c')]['length']+0x1,'app':_0xab95('0x9d'),'appdata':'unmanaged','interval':_0xab95('0x9e')});}}return db['OpenchannelMessage'][_0xab95('0x60')]({'body':_0x1fdb46['body'][_0xab95('0x61')],'OpenchannelAccountId':_0x1fdb46['params']['id'],'OpenchannelInteractionId':_0x2bbee5['id'],'direction':'in','ContactId':_0x581beb['contact']['id'],'AttachmentId':_0x1fdb46[_0xab95('0x61')]['AttachmentId']});})['then'](function(_0x54f8bd){_0x581beb[_0xab95('0x2b')]=_0x54f8bd;if(_0x581beb[_0xab95('0x99')][_0xab95('0x9f')]){return db[_0xab95('0xa0')]['find']({'attributes':['id',_0xab95('0x3f')],'where':{'id':_0x581beb[_0xab95('0x99')][_0xab95('0x9f')]}})[_0xab95('0x23')](function(_0x481aea){if(_0x481aea){_0x581beb['applications'][_0xab95('0xa1')]({'id':0x0,'priority':0x0,'app':_0xab95('0xa2'),'appdata':_0x481aea[_0xab95('0x3f')]+','+(_0x581beb[_0xab95('0x8b')]['waitForTheAssignedAgent']||0xa),'interval':_0xab95('0x9e')});_0x581beb['forcedOwnership']=![];}return respondWithRpcPromise(_0xab95('0xa3'),'startRouting',_0x581beb);});}return respondWithRpcPromise('Start','startRouting',_0x581beb);})[_0xab95('0x23')](function(_0xe2455e){respondWithRpcPromise(_0xab95('0xa4'),_0xab95('0xa4'),{'event':_0xab95('0xa5'),'message':_0xe2455e},client9002);return _0xe2455e;})['then'](respondWithResult(_0x4255a7,null))['catch'](handleError(_0x4255a7,null));};exports['addApplications']=function(_0x365624,_0x226745){var _0x13eeb4=_0x365624[_0xab95('0x5c')]['id'];var _0xc62c27=_0x365624[_0xab95('0x61')];var _0x11e03e=0xc8;var _0x2cba0a=null;return db[_0xab95('0xa6')][_0xab95('0xa7')]({'isolationLevel':db[_0xab95('0xa6')]['Transaction'][_0xab95('0xa8')][_0xab95('0xa9')]},function(_0x5ab22f){return db[_0xab95('0x43')][_0xab95('0x6e')]({'where':{'id':_0x13eeb4},'transaction':_0x5ab22f})[_0xab95('0x23')](function(_0x5c815a){if(_0x5c815a){return db[_0xab95('0x88')]['destroy']({'where':{'OpenchannelAccountId':_0x13eeb4},'transaction':_0x5ab22f})[_0xab95('0x23')](function(){var _0x3fc611=_[_0xab95('0x47')](_0xc62c27,function(_0x2a90e8){_0x2a90e8['OpenchannelAccountId']=_0x13eeb4;return _0x2a90e8;});return db[_0xab95('0x88')][_0xab95('0xaa')](_0x3fc611,{'transaction':_0x5ab22f});});}else{_0x11e03e=0x194;_0x2cba0a=[];}});})[_0xab95('0x23')](function(){if(_0x11e03e!==0x194){return db[_0xab95('0x88')][_0xab95('0xab')]({'where':{'OpenchannelAccountId':_0x13eeb4},'order':_0xab95('0xac')})[_0xab95('0x23')](function(_0x194c6e){_0x2cba0a=_0x194c6e;});}})[_0xab95('0x2d')](function(_0x2a5f28){_0x11e03e=0x1f4;logger[_0xab95('0x29')](_0x2a5f28[_0xab95('0x3e')]);if(_0x2a5f28[_0xab95('0x3f')]){delete _0x2a5f28[_0xab95('0x3f')];}_0x2cba0a=_0x2a5f28;})[_0xab95('0xad')](function(){if(_0x2cba0a===null){_0x226745[_0xab95('0x3d')](_0x11e03e);}else{if(_0x11e03e===0x1f4){_0x226745['status'](_0x11e03e)[_0xab95('0x40')](_0x2cba0a);}else{_0x226745[_0xab95('0x2e')](_0x11e03e)[_0xab95('0x30')](_0x2cba0a);}}});};exports[_0xab95('0xae')]=function(_0xec7a14,_0x4b4bad,_0x1a81cd){var _0x448c8d={};var _0xdd008c={};var _0x1493fe;var _0x369ef4;return db[_0xab95('0x43')][_0xab95('0x6e')]({'where':{'id':_0xec7a14['params']['id']}})['then'](handleEntityNotFound(_0x4b4bad,null))[_0xab95('0x23')](function(_0x127776){if(_0x127776){_0x1493fe=_0x127776;_0xdd008c[_0xab95('0x4c')]=_[_0xab95('0x49')](db['OpenchannelApplication'][_0xab95('0x44')]);_0xdd008c[_0xab95('0x48')]=_['keys'](_0xec7a14['query']);_0xdd008c['filters']=_[_0xab95('0x4b')](_0xdd008c[_0xab95('0x4c')],_0xdd008c['query']);_0x448c8d[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0xdd008c[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0xec7a14[_0xab95('0x48')][_0xab95('0x4d')]));_0x448c8d['attributes']=_0x448c8d[_0xab95('0x4a')][_0xab95('0x4e')]?_0x448c8d[_0xab95('0x4a')]:_0xdd008c[_0xab95('0x4c')];_0x448c8d[_0xab95('0x6f')]=qs[_0xab95('0x51')](_0xec7a14[_0xab95('0x48')][_0xab95('0x51')]);_0x448c8d[_0xab95('0x52')]=qs[_0xab95('0x53')](_[_0xab95('0x54')](_0xec7a14[_0xab95('0x48')],_0xdd008c[_0xab95('0x53')]));if(_0xec7a14[_0xab95('0x48')]['filter']){_0x448c8d[_0xab95('0x52')]=_['merge'](_0x448c8d[_0xab95('0x52')],{'$or':_['map'](_0x448c8d[_0xab95('0x4a')],function(_0x43d903){var _0x14075d={};_0x14075d[_0x43d903]={'$like':'%'+_0xec7a14[_0xab95('0x48')][_0xab95('0x55')]+'%'};return _0x14075d;})});}_0x448c8d=_[_0xab95('0x56')]({},_0x448c8d,_0xec7a14[_0xab95('0x5e')]);return _0x1493fe['getApplications'](_0x448c8d);}})['then'](function(_0x9f0fea){if(_0x9f0fea){_0x369ef4=_0x9f0fea[_0xab95('0x4e')];if(!_0xec7a14[_0xab95('0x48')][_0xab95('0x4f')]('nolimit')){_0x448c8d[_0xab95('0x32')]=qs['limit'](_0xec7a14['query'][_0xab95('0x32')]);_0x448c8d[_0xab95('0x31')]=qs['offset'](_0xec7a14['query'][_0xab95('0x31')]);}return _0x1493fe[_0xab95('0xae')](_0x448c8d);}})[_0xab95('0x23')](function(_0x1e8edb){if(_0x1e8edb){return _0x1e8edb?{'count':_0x369ef4,'rows':_0x1e8edb}:null;}})[_0xab95('0x23')](respondWithResult(_0x4b4bad,null))[_0xab95('0x2d')](handleError(_0x4b4bad,null));};exports[_0xab95('0xaf')]=function(_0x16e274,_0x28e867,_0x54f2c8){var _0x41f0c6={'raw':![],'where':{}};var _0x306455={};var _0x568d1d={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x16e274[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x28e867,null))['then'](function(_0x545cc8){if(_0x545cc8){_0x306455[_0xab95('0x4c')]=_[_0xab95('0x49')](db['OpenchannelInteraction'][_0xab95('0x44')]);_0x306455[_0xab95('0x48')]=_[_0xab95('0x49')](_0x16e274[_0xab95('0x48')]);_0x306455[_0xab95('0x53')]=_[_0xab95('0x4b')](_0x306455[_0xab95('0x4c')],_0x306455[_0xab95('0x48')]);_0x41f0c6[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0x306455[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0x16e274[_0xab95('0x48')][_0xab95('0x4d')]));_0x41f0c6['attributes']=_0x41f0c6[_0xab95('0x4a')][_0xab95('0x4e')]?_0x41f0c6[_0xab95('0x4a')]:_0x306455[_0xab95('0x4c')];if(!_0x16e274[_0xab95('0x48')][_0xab95('0x4f')]('nolimit')){_0x41f0c6[_0xab95('0x32')]=qs['limit'](_0x16e274[_0xab95('0x48')][_0xab95('0x32')]);_0x41f0c6[_0xab95('0x31')]=qs[_0xab95('0x31')](_0x16e274[_0xab95('0x48')][_0xab95('0x31')]);}_0x41f0c6[_0xab95('0x6f')]=qs[_0xab95('0x51')](_0x16e274[_0xab95('0x48')]['sort']);_0x41f0c6['where']=qs[_0xab95('0x53')](_[_0xab95('0x54')](_0x16e274['query'],_0x306455[_0xab95('0x53')]));_0x41f0c6['where'][_0xab95('0x6c')]=_0x545cc8['id'];if(_0x16e274[_0xab95('0x48')]['filter']){_0x41f0c6[_0xab95('0x52')]=_[_0xab95('0x56')](_0x41f0c6['where'],{'$or':_[_0xab95('0x47')](_0x41f0c6['attributes'],function(_0x4c04b0){var _0x43a2a2={};_0x43a2a2[_0x4c04b0]={'$like':'%'+_0x16e274[_0xab95('0x48')]['filter']+'%'};return _0x43a2a2;})});}_0x41f0c6=_[_0xab95('0x56')]({},_0x41f0c6,_0x16e274['options']);return db['OpenchannelInteraction'][_0xab95('0x34')]({'where':_0x41f0c6[_0xab95('0x52')]})[_0xab95('0x23')](function(_0x52e1f4){_0x568d1d[_0xab95('0x34')]=_0x52e1f4;if(_0x16e274['query'][_0xab95('0x58')]){_0x41f0c6[_0xab95('0x59')]=[{'model':db[_0xab95('0x85')],'as':_0xab95('0xb0'),'required':![]},{'model':db[_0xab95('0xa0')],'as':'Owner','attributes':[_0xab95('0x3f'),_0xab95('0xb1'),_0xab95('0xb2')],'required':![]},{'model':db[_0xab95('0xb3')],'as':_0xab95('0xb4'),'attributes':['id',_0xab95('0x3f'),'color'],'where':_0x16e274[_0xab95('0x48')][_0xab95('0xb5')]?{'id':_0x16e274[_0xab95('0x48')]['tag']}:undefined,'required':_0x16e274['query'][_0xab95('0xb5')]?!![]:![]}];}return db[_0xab95('0x95')][_0xab95('0x5a')](_0x41f0c6);})[_0xab95('0x23')](function(_0x3f991c){_0x568d1d[_0xab95('0x70')]=_0x3f991c;return _0x568d1d;});}})[_0xab95('0x23')](respondWithFilteredResult(_0x28e867,_0x41f0c6))[_0xab95('0x2d')](handleError(_0x28e867,null));};exports['addAgents']=function(_0x371d15,_0x1532de,_0x2127cd){return db['OpenchannelAccount'][_0xab95('0x5f')]({'where':{'id':_0x371d15[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x1532de,null))[_0xab95('0x23')](function(_0x5b1640){if(_0x5b1640){return _0x5b1640[_0xab95('0xb6')](_0x371d15[_0xab95('0x61')]['ids'],_['omit'](_0x371d15[_0xab95('0x61')],['ids','id'])||{})['spread'](function(_0x1d7872){for(var _0x2c4640=0x0;_0x2c4640<_0x371d15['body'][_0xab95('0x72')]['length'];_0x2c4640+=0x1){socket[_0xab95('0xb7')](_0xab95('0xb8'),{'UserId':Number(_0x371d15['body'][_0xab95('0x72')][_0x2c4640]),'OpenchannelAccountId':Number(_0x371d15['params']['id'])});}return _0x1d7872;});}})[_0xab95('0x23')](respondWithResult(_0x1532de,null))[_0xab95('0x2d')](handleError(_0x1532de,null));};exports[_0xab95('0xb9')]=function(_0xd4b59c,_0x1aca78,_0x35f48e){return db[_0xab95('0x43')][_0xab95('0x5f')]({'where':{'id':_0xd4b59c[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x1aca78,null))[_0xab95('0x23')](function(_0x350468){if(_0x350468){return _0x350468[_0xab95('0xb9')](_0xd4b59c['query'][_0xab95('0x72')])[_0xab95('0x23')](function(){if(_[_0xab95('0xba')](_0xd4b59c[_0xab95('0x48')][_0xab95('0x72')])){for(var _0x528898=0x0;_0x528898<_0xd4b59c['query'][_0xab95('0x72')][_0xab95('0x4e')];_0x528898+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0xd4b59c['query']['ids'][_0x528898]),'OpenchannelAccountId':Number(_0xd4b59c['params']['id'])});}}else{socket[_0xab95('0xb7')](_0xab95('0xbb'),{'UserId':Number(_0xd4b59c[_0xab95('0x48')][_0xab95('0x72')]),'OpenchannelAccountId':Number(_0xd4b59c['params']['id'])});}});}})[_0xab95('0x23')](respondWithStatusCode(_0x1aca78,null))[_0xab95('0x2d')](handleError(_0x1aca78,null));};exports['getAgents']=function(_0x23a86f,_0x215d57,_0x53c380){var _0x57e216={};var _0x1e1547={};var _0x19de9f;var _0x6adc70;return db['OpenchannelAccount'][_0xab95('0x6e')]({'where':{'id':_0x23a86f[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x215d57,null))[_0xab95('0x23')](function(_0x129f0c){if(_0x129f0c){_0x19de9f=_0x129f0c;_0x1e1547['model']=_[_0xab95('0x49')](db['User']['rawAttributes']);_0x1e1547['query']=_[_0xab95('0x49')](_0x23a86f['query']);_0x1e1547['filters']=_['intersection'](_0x1e1547[_0xab95('0x4c')],_0x1e1547[_0xab95('0x48')]);_0x57e216[_0xab95('0x4a')]=_[_0xab95('0x4b')](_0x1e1547[_0xab95('0x4c')],qs[_0xab95('0x4d')](_0x23a86f[_0xab95('0x48')]['fields']));_0x57e216[_0xab95('0x4a')]=_0x57e216['attributes'][_0xab95('0x4e')]?_0x57e216[_0xab95('0x4a')]:_0x1e1547['model'];_0x57e216['order']=qs['sort'](_0x23a86f['query']['sort']);_0x57e216[_0xab95('0x52')]=qs[_0xab95('0x53')](_[_0xab95('0x54')](_0x23a86f[_0xab95('0x48')],_0x1e1547[_0xab95('0x53')]));if(_0x23a86f[_0xab95('0x48')][_0xab95('0x55')]){_0x57e216[_0xab95('0x52')]=_['merge'](_0x57e216[_0xab95('0x52')],{'$or':_[_0xab95('0x47')](_0x57e216[_0xab95('0x4a')],function(_0x2d3171){var _0x195a60={};_0x195a60[_0x2d3171]={'$like':'%'+_0x23a86f[_0xab95('0x48')][_0xab95('0x55')]+'%'};return _0x195a60;})});}_0x57e216=_[_0xab95('0x56')]({},_0x57e216,_0x23a86f[_0xab95('0x5e')]);return _0x19de9f[_0xab95('0xbc')](_0x57e216);}})[_0xab95('0x23')](function(_0x2dc997){if(_0x2dc997){_0x6adc70=_0x2dc997['length'];if(!_0x23a86f[_0xab95('0x48')]['hasOwnProperty']('nolimit')){_0x57e216[_0xab95('0x32')]=qs[_0xab95('0x32')](_0x23a86f[_0xab95('0x48')]['limit']);_0x57e216['offset']=qs[_0xab95('0x31')](_0x23a86f[_0xab95('0x48')][_0xab95('0x31')]);}return _0x19de9f[_0xab95('0xbc')](_0x57e216);}})[_0xab95('0x23')](function(_0x2b183f){if(_0x2b183f){return _0x2b183f?{'count':_0x6adc70,'rows':_0x2b183f}:null;}})[_0xab95('0x23')](respondWithResult(_0x215d57,null))['catch'](handleError(_0x215d57,null));};exports[_0xab95('0x40')]=function(_0x3a3011,_0x1f8704,_0x39fbd5){var _0x3ce89a,_0x4c4026,_0x1c289c;if(_[_0xab95('0x80')](_0x3a3011[_0xab95('0x61')][_0xab95('0x61')])||_0x3a3011[_0xab95('0x61')]['body']===''){throw new db[(_0xab95('0x77'))][(_0xab95('0x7e'))](_0xab95('0x81'));}if(_[_0xab95('0x80')](_0x3a3011[_0xab95('0x61')]['to'])){}_0x3ce89a=_0x3a3011['body']['to'];return db[_0xab95('0x43')]['findOne']({'where':{'id':_0x3a3011[_0xab95('0x5c')]['id']}})[_0xab95('0x23')](handleEntityNotFound(_0x1f8704,null))[_0xab95('0x23')](function(_0x506d99){if(_0x506d99){return db['OpenchannelAccount'][_0xab95('0x5f')]({'where':{'id':_0x506d99['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db[_0xab95('0x85')],'as':_0xab95('0x86'),'where':{[_0x506d99['mapKey']]:_0x3ce89a},'limit':0x1,'order':[[_0xab95('0x79'),_0xab95('0x87')]]}]}]})['then'](handleEntityNotFound(_0x1f8704,null))[_0xab95('0x23')](function(_0x52dc82){if(_0x52dc82&&_0x52dc82[_0xab95('0x8a')]){_0x4c4026=_0x52dc82[_0xab95('0x3b')]({'plain':!![]});if(_0x4c4026[_0xab95('0x8a')]&&_0x4c4026[_0xab95('0x8a')][_0xab95('0x86')][_0xab95('0x4e')]){return _0x4c4026[_0xab95('0x8a')][_0xab95('0x86')][0x0];}return db['CmContact'][_0xab95('0x60')](_['defaults'](_0x3a3011['body'],{'firstName':_0x3ce89a,[_0x52dc82[_0xab95('0x82')]]:_0x3ce89a,'phone':_0x3ce89a,'ListId':_0x4c4026[_0xab95('0x7c')]}));}})[_0xab95('0x23')](handleEntityNotFound(_0x1f8704,null))['then'](function(_0xfdb7fe){if(_0xfdb7fe){_0x1c289c=_0xfdb7fe;return db[_0xab95('0x95')]['find']({'where':{'ContactId':_0x1c289c['id'],'closed':![],'OpenchannelAccountId':_0x4c4026['id']}})[_0xab95('0x23')](function(_0x269f2e){if(_0x269f2e){return[_0x269f2e,![]];}return db['OpenchannelInteraction'][_0xab95('0x60')]({'UserId':_0x3a3011['user']['id'],'ContactId':_0x1c289c['id'],'OpenchannelAccountId':_0x4c4026['id'],'lastMsgDirection':'out','firstMsgDirection':_0xab95('0xbd'),'Messages':[_['merge'](_0x3a3011[_0xab95('0x61')],{'read':![],'body':_0x3a3011[_0xab95('0x61')][_0xab95('0x61')],'OpenchannelAccountId':_0x4c4026['id'],'UserId':_0x3a3011[_0xab95('0x64')]['id'],'ContactId':_0x1c289c['id']})]},{'include':[{'model':db[_0xab95('0xbe')],'as':_0xab95('0xbf')}]})[_0xab95('0x23')](function(_0x44f216){return[_0x44f216,!![]];});});}})[_0xab95('0x97')](function(_0x24470f,_0x4fdd28){if(_0x4fdd28){return _0x24470f;}return db[_0xab95('0xbe')][_0xab95('0x60')](_[_0xab95('0x56')](_0x3a3011[_0xab95('0x61')],{'read':![],'body':_0x3a3011['body']['body'],'OpenchannelAccountId':_0x4c4026['id'],'OpenchannelInteractionId':_0x24470f['id'],'UserId':_0x3a3011[_0xab95('0x64')]['id'],'ContactId':_0x1c289c['id']}))[_0xab95('0x23')](function(_0x28bd86){_0x24470f[_0xab95('0xc0')]['Messages']=[];_0x24470f[_0xab95('0xc0')][_0xab95('0xbf')][_0xab95('0x9c')](_0x28bd86['dataValues']);return _0x24470f;});});}})[_0xab95('0x23')](respondWithResult(_0x1f8704,null))[_0xab95('0x2d')](handleError(_0x1f8704,null));};
\ No newline at end of file
+var _0xc23a=['findAndCountAll','finally','getApplications','getInteractions','Owner','fullname','internal','Tag','Tags','tag','addAgents','omit','spread','emit','userOpenchannelAccount:save','removeAgents','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','push','rimraf','zip-dir','fast-json-patch','moment','util','sox','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','error','code','OpenchannelAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','end','json','limit','count','Content-Range','apply','reject','update','destroy','get','OpenchannelAccounts','stack','name','send','index','Pause','mandatoryDispositionPause','map','fieldName','type','key','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','offset','sort','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','rawAttributes','keys','OpenchannelAccount','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','find','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','Disposition','getDispositions','findOne','order','pick','removeDispositions','addAnswer','CannedAnswer','nolimit','removeAnswers','ids','notify','openchannel','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','updatedAt','difference','createdAt','CompanyId','ListId','isNil','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','applications','list','asc','account','contact','firstName','lastName','threadId','OpenchannelInteraction','externalUrl','ContactId','messageId','created','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','interaction','UserId','User','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate'];(function(_0x44e3bb,_0x13237e){var _0x4b39b8=function(_0x21ff15){while(--_0x21ff15){_0x44e3bb['push'](_0x44e3bb['shift']());}};_0x4b39b8(++_0x13237e);}(_0xc23a,0xd2));var _0xac23=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0xc23a[_0x5cb1af];return _0x8d7940;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xac23('0x0'));var zipdir=require(_0xac23('0x1'));var jsonpatch=require(_0xac23('0x2'));var rp=require('request-promise');var moment=require(_0xac23('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xac23('0x4'));var path=require('path');var sox=require(_0xac23('0x5'));var csv=require(_0xac23('0x6'));var ejs=require(_0xac23('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xac23('0x8'));var crypto=require(_0xac23('0x9'));var jsforce=require(_0xac23('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xac23('0x6'));var querystring=require(_0xac23('0xb'));var Papa=require(_0xac23('0xc'));var Redis=require(_0xac23('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xac23('0xe'));var logger=require(_0xac23('0xf'))('api');var utils=require(_0xac23('0x10'));var config=require(_0xac23('0x11'));var licenseUtil=require(_0xac23('0x12'));var db=require(_0xac23('0x13'))['db'];config[_0xac23('0x14')]=_[_0xac23('0x15')](config[_0xac23('0x14')],{'host':_0xac23('0x16'),'port':0x18eb});var socket=require(_0xac23('0x17'))(new Redis(config[_0xac23('0x14')]));require('./openchannelAccount.socket')[_0xac23('0x18')](socket);var jayson=require(_0xac23('0x19'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xac23('0x1a')][_0xac23('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x618735,_0x49fa85,_0x138548,_0x1c117f){return new BPromise(function(_0xaf49de,_0x449c37){var _0x48e6c9=_0x1c117f||client;return _0x48e6c9[_0xac23('0x1c')](_0x618735,_0x138548)[_0xac23('0x1d')](function(_0x3699b0){logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x49fa85,_0xac23('0x1e'));logger[_0xac23('0x1f')](_0xac23('0x20'),_0x49fa85,_0xac23('0x1e'),JSON['stringify'](_0x3699b0));if(_0x3699b0[_0xac23('0x21')]){if(_0x3699b0[_0xac23('0x21')][_0xac23('0x22')]===0x1f4){logger[_0xac23('0x21')](_0xac23('0x23'),_0x49fa85,_0x3699b0[_0xac23('0x21')]['message']);return _0x449c37(_0x3699b0[_0xac23('0x21')][_0xac23('0x24')]);}logger[_0xac23('0x21')](_0xac23('0x23'),_0x49fa85,_0x3699b0[_0xac23('0x21')]['message']);return _0xaf49de(_0x3699b0[_0xac23('0x21')]['message']);}else{logger[_0xac23('0x25')](_0xac23('0x23'),_0x49fa85,_0xac23('0x1e'));_0xaf49de(_0x3699b0[_0xac23('0x26')][_0xac23('0x24')]);}})[_0xac23('0x27')](function(_0x58de43){logger[_0xac23('0x21')]('OpenchannelAccount,\x20%s,\x20%s',_0x49fa85,_0x58de43);_0x449c37(_0x58de43);});});}function respondWithStatusCode(_0x43440a,_0x2d552b){_0x2d552b=_0x2d552b||0xcc;return function(_0x9bb37c){if(_0x9bb37c){return _0x43440a[_0xac23('0x28')](_0x2d552b);}return _0x43440a[_0xac23('0x29')](_0x2d552b)[_0xac23('0x2a')]();};}function respondWithResult(_0x625160,_0x2190f8){_0x2190f8=_0x2190f8||0xc8;return function(_0x29375f){if(_0x29375f){return _0x625160[_0xac23('0x29')](_0x2190f8)[_0xac23('0x2b')](_0x29375f);}};}function respondWithFilteredResult(_0x1a7502,_0x73bba0){return function(_0x27e17b){if(_0x27e17b){var _0x13f4b5=typeof _0x73bba0['offset']==='undefined'&&typeof _0x73bba0[_0xac23('0x2c')]==='undefined';var _0x5a6bd9=_0x27e17b[_0xac23('0x2d')];var _0x2a0c2f=_0x13f4b5?0x0:_0x73bba0['offset'];var _0x534ed7=_0x13f4b5?_0x27e17b[_0xac23('0x2d')]:_0x73bba0['offset']+_0x73bba0['limit'];var _0x28dd39;if(_0x534ed7>=_0x5a6bd9){_0x534ed7=_0x5a6bd9;_0x28dd39=0xc8;}else{_0x28dd39=0xce;}_0x1a7502[_0xac23('0x29')](_0x28dd39);return _0x1a7502['set'](_0xac23('0x2e'),_0x2a0c2f+'-'+_0x534ed7+'/'+_0x5a6bd9)[_0xac23('0x2b')](_0x27e17b);}return null;};}function patchUpdates(_0x5cc040){return function(_0x3571e0){try{jsonpatch[_0xac23('0x2f')](_0x3571e0,_0x5cc040,!![]);}catch(_0x213a2e){return BPromise[_0xac23('0x30')](_0x213a2e);}return _0x3571e0['save']();};}function saveUpdates(_0x2f71e1,_0x57dd7d){return function(_0x3de89f){if(_0x3de89f){return _0x3de89f[_0xac23('0x31')](_0x2f71e1)[_0xac23('0x1d')](function(_0x1e1b9c){return _0x1e1b9c;});}return null;};}function removeEntity(_0x378405,_0x34df8a){return function(_0x1cfd73){if(_0x1cfd73){return _0x1cfd73[_0xac23('0x32')]()['then'](function(){var _0x570cb9=_0x1cfd73[_0xac23('0x33')]({'plain':!![]});var _0x1edc31=_0xac23('0x34');return db['UserProfileResource'][_0xac23('0x32')]({'where':{'type':_0x1edc31,'resourceId':_0x570cb9['id']}})[_0xac23('0x1d')](function(){return _0x1cfd73;});})[_0xac23('0x1d')](function(){_0x378405[_0xac23('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4731a1,_0x438c3e){return function(_0x2b0f02){if(!_0x2b0f02){_0x4731a1[_0xac23('0x28')](0x194);}return _0x2b0f02;};}function handleError(_0x20eaad,_0x4b784c){_0x4b784c=_0x4b784c||0x1f4;return function(_0x259cf1){logger[_0xac23('0x21')](_0x259cf1[_0xac23('0x35')]);if(_0x259cf1[_0xac23('0x36')]){delete _0x259cf1[_0xac23('0x36')];}_0x20eaad['status'](_0x4b784c)[_0xac23('0x37')](_0x259cf1);};}exports[_0xac23('0x38')]=function(_0x4300b9,_0x560a0f){var _0x36cbe7={'include':[{'model':db[_0xac23('0x39')],'as':_0xac23('0x3a')}]},_0x4970e2={},_0x4dfaa3={'count':0x0,'rows':[]};var _0x514bc4=_[_0xac23('0x3b')](db['OpenchannelAccount']['rawAttributes'],function(_0x387750){return{'name':_0x387750[_0xac23('0x3c')],'type':_0x387750[_0xac23('0x3d')][_0xac23('0x3e')]};});_0x4970e2['model']=_['map'](_0x514bc4,_0xac23('0x36'));_0x4970e2[_0xac23('0x3f')]=_['keys'](_0x4300b9[_0xac23('0x3f')]);_0x4970e2[_0xac23('0x40')]=_[_0xac23('0x41')](_0x4970e2[_0xac23('0x42')],_0x4970e2[_0xac23('0x3f')]);_0x36cbe7[_0xac23('0x43')]=_[_0xac23('0x41')](_0x4970e2[_0xac23('0x42')],qs[_0xac23('0x44')](_0x4300b9[_0xac23('0x3f')]['fields']));_0x36cbe7[_0xac23('0x43')]=_0x36cbe7[_0xac23('0x43')][_0xac23('0x45')]?_0x36cbe7[_0xac23('0x43')]:_0x4970e2[_0xac23('0x42')];if(!_0x4300b9[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x36cbe7[_0xac23('0x2c')]=qs['limit'](_0x4300b9[_0xac23('0x3f')][_0xac23('0x2c')]);_0x36cbe7['offset']=qs['offset'](_0x4300b9[_0xac23('0x3f')][_0xac23('0x47')]);}_0x36cbe7['order']=qs[_0xac23('0x48')](_0x4300b9['query']['sort']);_0x36cbe7['where']=qs['filters'](_['pick'](_0x4300b9[_0xac23('0x3f')],_0x4970e2['filters']),_0x514bc4);if(_0x4300b9[_0xac23('0x3f')][_0xac23('0x49')]){_0x36cbe7[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x36cbe7['where'],{'$or':_[_0xac23('0x3b')](_0x514bc4,function(_0x13c773){if(_0x13c773['type']!==_0xac23('0x4c')){var _0x3444d4={};_0x3444d4[_0x13c773['name']]={'$like':'%'+_0x4300b9[_0xac23('0x3f')][_0xac23('0x49')]+'%'};return _0x3444d4;}})});}_0x36cbe7=_[_0xac23('0x4b')]({},_0x36cbe7,_0x4300b9[_0xac23('0x4d')]);var _0x5c138d={'where':_0x36cbe7['where']};return db['OpenchannelAccount']['count'](_0x5c138d)[_0xac23('0x1d')](function(_0x4de1e9){_0x4dfaa3['count']=_0x4de1e9;if(_0x4300b9['query'][_0xac23('0x4e')]){_0x36cbe7['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0xac23('0x4f')](_0x36cbe7);})[_0xac23('0x1d')](function(_0x27a45f){_0x4dfaa3[_0xac23('0x50')]=_0x27a45f;return _0x4dfaa3;})[_0xac23('0x1d')](respondWithFilteredResult(_0x560a0f,_0x36cbe7))[_0xac23('0x27')](handleError(_0x560a0f,null));};exports[_0xac23('0x51')]=function(_0x232d7c,_0x5c0910){var _0x2ace79={'raw':![],'where':{'id':_0x232d7c['params']['id']},'include':[{'model':db[_0xac23('0x39')],'as':'mandatoryDispositionPause'}]},_0x5b884a={};_0x5b884a['model']=_['keys'](db['OpenchannelAccount'][_0xac23('0x52')]);_0x5b884a[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x232d7c[_0xac23('0x3f')]);_0x5b884a[_0xac23('0x40')]=_[_0xac23('0x41')](_0x5b884a[_0xac23('0x42')],_0x5b884a[_0xac23('0x3f')]);_0x2ace79['attributes']=_[_0xac23('0x41')](_0x5b884a['model'],qs[_0xac23('0x44')](_0x232d7c[_0xac23('0x3f')]['fields']));_0x2ace79['attributes']=_0x2ace79[_0xac23('0x43')][_0xac23('0x45')]?_0x2ace79[_0xac23('0x43')]:_0x5b884a[_0xac23('0x42')];if(_0x232d7c['query'][_0xac23('0x4e')]){_0x2ace79['include']=[{'all':!![]}];}_0x2ace79=_['merge']({},_0x2ace79,_0x232d7c[_0xac23('0x4d')]);return db[_0xac23('0x54')]['find'](_0x2ace79)[_0xac23('0x1d')](handleEntityNotFound(_0x5c0910,null))[_0xac23('0x1d')](respondWithResult(_0x5c0910,null))[_0xac23('0x27')](handleError(_0x5c0910,null));};exports[_0xac23('0x55')]=function(_0x202445,_0x37c926){return db['OpenchannelAccount'][_0xac23('0x55')](_0x202445[_0xac23('0x56')],{})['then'](function(_0x4ca325){var _0x532182=_0x202445[_0xac23('0x57')]['get']({'plain':!![]});if(!_0x532182)throw new Error(_0xac23('0x58'));if(_0x532182['role']==='user'){var _0x2e21ec=_0x4ca325[_0xac23('0x33')]({'plain':!![]});var _0x49eb18=_0xac23('0x34');return db['UserProfileSection'][_0xac23('0x59')]({'where':{'name':_0x49eb18,'userProfileId':_0x532182[_0xac23('0x5a')]},'raw':!![]})[_0xac23('0x1d')](function(_0x55e2d9){if(_0x55e2d9&&_0x55e2d9['autoAssociation']===0x0){return db[_0xac23('0x5b')][_0xac23('0x55')]({'name':_0x2e21ec[_0xac23('0x36')],'resourceId':_0x2e21ec['id'],'type':_0x55e2d9[_0xac23('0x36')],'sectionId':_0x55e2d9['id']},{})[_0xac23('0x1d')](function(){return _0x4ca325;});}else{return _0x4ca325;}})['catch'](function(_0x539743){logger['error'](_0xac23('0x5c'),_0x539743);throw _0x539743;});}return _0x4ca325;})[_0xac23('0x1d')](respondWithResult(_0x37c926,0xc9))[_0xac23('0x27')](handleError(_0x37c926,null));};exports[_0xac23('0x31')]=function(_0x2a0849,_0x414a39){if(_0x2a0849['body']['id']){delete _0x2a0849[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')]['find']({'where':{'id':_0x2a0849[_0xac23('0x5d')]['id']},'include':[{'model':db['Pause'],'as':_0xac23('0x3a')}]})[_0xac23('0x1d')](handleEntityNotFound(_0x414a39,null))['then'](saveUpdates(_0x2a0849[_0xac23('0x56')],null))[_0xac23('0x1d')](respondWithResult(_0x414a39,null))[_0xac23('0x27')](handleError(_0x414a39,null));};exports['destroy']=function(_0x1baa51,_0x232b1d){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1baa51[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x232b1d,null))[_0xac23('0x1d')](removeEntity(_0x232b1d,null))['catch'](handleError(_0x232b1d,null));};exports[_0xac23('0x5e')]=function(_0x441bd2,_0x5a6756){return db[_0xac23('0x54')][_0xac23('0x5e')]()[_0xac23('0x1d')](respondWithResult(_0x5a6756,null))['catch'](handleError(_0x5a6756,null));};exports[_0xac23('0x5f')]=function(_0x1ddc58,_0x4ffaa9,_0x172c05){if(_0x1ddc58[_0xac23('0x56')]['id']){delete _0x1ddc58[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1ddc58[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x4ffaa9,null))['then'](function(_0x2a9730){if(_0x2a9730){_0x1ddc58[_0xac23('0x56')][_0xac23('0x60')]=_0x2a9730['id'];return db[_0xac23('0x61')][_0xac23('0x55')](_0x1ddc58[_0xac23('0x56')]);}})[_0xac23('0x1d')](respondWithResult(_0x4ffaa9,null))[_0xac23('0x27')](handleError(_0x4ffaa9,null));};exports[_0xac23('0x62')]=function(_0x4e165e,_0x308439,_0x1525e9){var _0x200567={'raw':![],'where':{}};var _0x308090={};var _0x5866b4={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x4e165e['params']['id']}})['then'](handleEntityNotFound(_0x308439,null))[_0xac23('0x1d')](function(_0x85041a){if(_0x85041a){_0x308090[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x61')][_0xac23('0x52')]);_0x308090[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x4e165e[_0xac23('0x3f')]);_0x308090[_0xac23('0x40')]=_[_0xac23('0x41')](_0x308090[_0xac23('0x42')],_0x308090[_0xac23('0x3f')]);_0x200567[_0xac23('0x43')]=_['intersection'](_0x308090[_0xac23('0x42')],qs[_0xac23('0x44')](_0x4e165e[_0xac23('0x3f')][_0xac23('0x44')]));_0x200567[_0xac23('0x43')]=_0x200567[_0xac23('0x43')]['length']?_0x200567[_0xac23('0x43')]:_0x308090['model'];if(!_0x4e165e[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x200567['limit']=qs[_0xac23('0x2c')](_0x4e165e['query'][_0xac23('0x2c')]);_0x200567['offset']=qs[_0xac23('0x47')](_0x4e165e[_0xac23('0x3f')][_0xac23('0x47')]);}_0x200567[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x4e165e['query']['sort']);_0x200567['where']=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x4e165e[_0xac23('0x3f')],_0x308090[_0xac23('0x40')]));_0x200567[_0xac23('0x4a')][_0xac23('0x60')]=_0x85041a['id'];if(_0x4e165e[_0xac23('0x3f')][_0xac23('0x49')]){_0x200567[_0xac23('0x4a')]=_['merge'](_0x200567[_0xac23('0x4a')],{'$or':_[_0xac23('0x3b')](_0x200567['attributes'],function(_0x14a9c2){var _0x22f49f={};_0x22f49f[_0x14a9c2]={'$like':'%'+_0x4e165e[_0xac23('0x3f')][_0xac23('0x49')]+'%'};return _0x22f49f;})});}_0x200567=_[_0xac23('0x4b')]({},_0x200567,_0x4e165e['options']);return db['Disposition'][_0xac23('0x2d')]({'where':_0x200567['where']})[_0xac23('0x1d')](function(_0x15b7d3){_0x5866b4[_0xac23('0x2d')]=_0x15b7d3;if(_0x4e165e[_0xac23('0x3f')][_0xac23('0x4e')]){_0x200567['include']=[{'all':!![]}];}return db[_0xac23('0x61')][_0xac23('0x4f')](_0x200567);})[_0xac23('0x1d')](function(_0x14d2fd){_0x5866b4['rows']=_0x14d2fd;return _0x5866b4;});}})[_0xac23('0x1d')](respondWithFilteredResult(_0x308439,_0x200567))[_0xac23('0x27')](handleError(_0x308439,null));};exports[_0xac23('0x66')]=function(_0x46d328,_0x34ef80,_0x35a9ae){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x46d328['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x34ef80,null))[_0xac23('0x1d')](function(_0x4f7d6f){if(_0x4f7d6f){return _0x4f7d6f['removeDispositions'](_0x46d328[_0xac23('0x3f')]['ids']);}})['then'](respondWithStatusCode(_0x34ef80,null))[_0xac23('0x27')](handleError(_0x34ef80,null));};exports[_0xac23('0x67')]=function(_0x9de5b3,_0x48051f,_0x5670d0){if(_0x9de5b3[_0xac23('0x56')]['id']){delete _0x9de5b3[_0xac23('0x56')]['id'];}return db[_0xac23('0x54')]['find']({'where':{'id':_0x9de5b3[_0xac23('0x5d')]['id']}})['then'](handleEntityNotFound(_0x48051f,null))[_0xac23('0x1d')](function(_0x3ba7f4){if(_0x3ba7f4){_0x9de5b3[_0xac23('0x56')][_0xac23('0x60')]=_0x3ba7f4['id'];return db[_0xac23('0x68')][_0xac23('0x55')](_0x9de5b3['body']);}})[_0xac23('0x1d')](respondWithResult(_0x48051f,null))[_0xac23('0x27')](handleError(_0x48051f,null));};exports['getAnswers']=function(_0x533f4a,_0x3c97ff,_0x6cdeb7){var _0x114a44={'raw':![],'where':{}};var _0x508d06={};var _0x115b9a={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x533f4a['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x3c97ff,null))[_0xac23('0x1d')](function(_0x293fc4){if(_0x293fc4){_0x508d06[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x68')][_0xac23('0x52')]);_0x508d06[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x533f4a[_0xac23('0x3f')]);_0x508d06['filters']=_['intersection'](_0x508d06[_0xac23('0x42')],_0x508d06['query']);_0x114a44['attributes']=_[_0xac23('0x41')](_0x508d06['model'],qs[_0xac23('0x44')](_0x533f4a[_0xac23('0x3f')]['fields']));_0x114a44[_0xac23('0x43')]=_0x114a44[_0xac23('0x43')][_0xac23('0x45')]?_0x114a44[_0xac23('0x43')]:_0x508d06['model'];if(!_0x533f4a['query'][_0xac23('0x46')](_0xac23('0x69'))){_0x114a44[_0xac23('0x2c')]=qs[_0xac23('0x2c')](_0x533f4a['query']['limit']);_0x114a44[_0xac23('0x47')]=qs[_0xac23('0x47')](_0x533f4a[_0xac23('0x3f')][_0xac23('0x47')]);}_0x114a44[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x533f4a['query'][_0xac23('0x48')]);_0x114a44[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x533f4a[_0xac23('0x3f')],_0x508d06['filters']));_0x114a44[_0xac23('0x4a')][_0xac23('0x60')]=_0x293fc4['id'];if(_0x533f4a[_0xac23('0x3f')][_0xac23('0x49')]){_0x114a44[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x114a44['where'],{'$or':_[_0xac23('0x3b')](_0x114a44[_0xac23('0x43')],function(_0x1d97a6){var _0x901f0a={};_0x901f0a[_0x1d97a6]={'$like':'%'+_0x533f4a['query']['filter']+'%'};return _0x901f0a;})});}_0x114a44=_['merge']({},_0x114a44,_0x533f4a[_0xac23('0x4d')]);return db[_0xac23('0x68')][_0xac23('0x2d')]({'where':_0x114a44['where']})[_0xac23('0x1d')](function(_0x9c240b){_0x115b9a[_0xac23('0x2d')]=_0x9c240b;if(_0x533f4a['query']['includeAll']){_0x114a44['include']=[{'all':!![]}];}return db[_0xac23('0x68')][_0xac23('0x4f')](_0x114a44);})['then'](function(_0xf9e468){_0x115b9a[_0xac23('0x50')]=_0xf9e468;return _0x115b9a;});}})[_0xac23('0x1d')](respondWithFilteredResult(_0x3c97ff,_0x114a44))[_0xac23('0x27')](handleError(_0x3c97ff,null));};exports[_0xac23('0x6a')]=function(_0x254605,_0x136cc7,_0x3e6573){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x254605[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x136cc7,null))[_0xac23('0x1d')](function(_0x1a6076){if(_0x1a6076){return _0x1a6076[_0xac23('0x6a')](_0x254605[_0xac23('0x3f')][_0xac23('0x6b')]);}})[_0xac23('0x1d')](respondWithStatusCode(_0x136cc7,null))[_0xac23('0x27')](handleError(_0x136cc7,null));};exports[_0xac23('0x6c')]=function(_0x1d9467,_0x511d39,_0xbbcc42){var _0x34d556={'body':_0x1d9467['body'],'channel':_0xac23('0x6d')};var _0x468358=[];var _0x556dbd=[];var _0x59548a={};var _0x2aee59=![];return db[_0xac23('0x6e')][_0xac23('0x5e')]()['then'](function(_0x5680f9){if(!_0x5680f9){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x71'));}_0x468358=_['difference'](_[_0xac23('0x53')](_0x5680f9),['createdAt',_0xac23('0x72')]);_0x556dbd=_[_0xac23('0x73')](_[_0xac23('0x53')](_0x5680f9),[_0xac23('0x74'),_0xac23('0x72'),_0xac23('0x75'),_0xac23('0x76')]);if(_0x1d9467[_0xac23('0x56')]['id']){delete _0x1d9467[_0xac23('0x56')]['id'];}if(_[_0xac23('0x77')](_0x1d9467[_0xac23('0x56')][_0xac23('0x78')])){throw new db[(_0xac23('0x6f'))]['ValidationError'](_0xac23('0x79'));}if(_['isNil'](_0x1d9467['body']['body'])||_0x1d9467['body'][_0xac23('0x56')]===''){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7a'));}if(_['isNil'](_0x1d9467['body']['mapKey'])){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7b')+_0x556dbd);}if(!_['includes'](_0x556dbd,_0x1d9467[_0xac23('0x56')]['mapKey'])){throw new db[(_0xac23('0x6f'))][(_0xac23('0x70'))](_0xac23('0x7c')+_0x556dbd);}_0x59548a[_0x1d9467[_0xac23('0x56')][_0xac23('0x7d')]]=_0x1d9467[_0xac23('0x56')][_0xac23('0x78')];})[_0xac23('0x1d')](function(){return db[_0xac23('0x54')][_0xac23('0x59')]({'where':{'id':_0x1d9467['params']['id']},'include':[{'model':db[_0xac23('0x7e')],'as':_0xac23('0x7f'),'include':[{'model':db[_0xac23('0x6e')],'as':_0xac23('0x80'),'where':_0x59548a,'limit':0x1,'order':[[_0xac23('0x72'),_0xac23('0x81')]]}]},{'model':db[_0xac23('0x82')],'as':_0xac23('0x83')}]});})[_0xac23('0x1d')](handleEntityNotFound(_0x511d39,null))['then'](function(_0x3732b4){if(_0x3732b4&&_0x3732b4[_0xac23('0x7f')]){_0x34d556['account']=_0x3732b4;_0x34d556[_0xac23('0x84')]=_0x3732b4[_0xac23('0x83')];_0x34d556[_0xac23('0x85')]=_0x3732b4['List'];_0x34d556[_0xac23('0x84')]=_['orderBy'](_0x34d556[_0xac23('0x84')],['priority'],[_0xac23('0x86')]);if(_0x34d556[_0xac23('0x87')][_0xac23('0x83')]){delete _0x34d556[_0xac23('0x87')]['Applications'];}if(_0x34d556['account'][_0xac23('0x7f')]&&_0x34d556['account'][_0xac23('0x7f')][_0xac23('0x80')][_0xac23('0x45')]){return _0x34d556[_0xac23('0x87')][_0xac23('0x7f')]['Contacts'][0x0];}var _0x3000c8=_[_0xac23('0x15')](_0x1d9467['body'],{'firstName':_0x1d9467['body'][_0xac23('0x78')],'ListId':_0x3732b4['ListId']});_0x3000c8[_0x1d9467[_0xac23('0x56')][_0xac23('0x7d')]]=_0x1d9467[_0xac23('0x56')][_0xac23('0x78')];return db['CmContact'][_0xac23('0x55')](_0x3000c8,{'fields':_0x468358,'raw':!![]});}})[_0xac23('0x1d')](handleEntityNotFound(_0x511d39,null))[_0xac23('0x1d')](function(_0x31f0fc){_0x34d556[_0xac23('0x88')]=_0x31f0fc;if(_0x31f0fc){var _0x17cf7b={'ContactId':_0x31f0fc['id'],'OpenchannelAccountId':_0x1d9467['params']['id'],'from':(_0x31f0fc[_0xac23('0x89')]||'')+'\x20'+(_0x31f0fc[_0xac23('0x8a')]||'')};var _0x4dd128={'OpenchannelAccountId':_0x1d9467[_0xac23('0x5d')]['id'],'closed':![]};if(_0x1d9467[_0xac23('0x56')]['threadId']){_0x4dd128['threadId']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')];return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':_0x4dd128})[_0xac23('0x1d')](function(_0x362661){if(_0x362661){return[_0x362661,![]];}_0x17cf7b['threadId']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')];_0x17cf7b['externalUrl']=_0x1d9467[_0xac23('0x56')][_0xac23('0x8d')];return db[_0xac23('0x8c')][_0xac23('0x55')](_0x17cf7b)[_0xac23('0x1d')](function(_0x2eb083){return[_0x2eb083,!![]];});});}else{_0x4dd128[_0xac23('0x8b')]=null;}_0x4dd128[_0xac23('0x8e')]=_0x31f0fc['id'];return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':_0x4dd128})[_0xac23('0x1d')](function(_0x4c10ae){if(_0x4c10ae){return[_0x4c10ae,![]];}return db[_0xac23('0x8c')]['create'](_0x17cf7b)[_0xac23('0x1d')](function(_0x4b61b4){return[_0x4b61b4,!![]];});});}})['spread'](function(_0x2cdc86,_0x267bb9){if(_0x2cdc86){_0x2aee59=_0x267bb9;if(!_0x267bb9){var _0x376c4d={'from':(_0x34d556[_0xac23('0x88')]['firstName']||'')+'\x20'+(_0x34d556[_0xac23('0x88')][_0xac23('0x8a')]||'')};if(_0x1d9467[_0xac23('0x56')][_0xac23('0x8b')]&&_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')]&&_0x1d9467['body']['threadId']!=_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')]){_0x376c4d[_0xac23('0x8b')]=_0x1d9467[_0xac23('0x56')][_0xac23('0x8f')];}return _0x2cdc86['update'](_0x376c4d);}else{return _0x2cdc86;}}})['then'](function(_0x4ef863){_0x34d556['interaction']=_0x4ef863[_0xac23('0x33')]({'plain':!![]});_0x34d556['interaction'][_0xac23('0x90')]=_0x2aee59;if(_0x34d556['interaction'][_0xac23('0x90')]){if(_0x34d556[_0xac23('0x87')]['autoclose']){_0x34d556[_0xac23('0x84')]['push']({'id':0x0,'priority':_0x34d556[_0xac23('0x84')][_0xac23('0x45')]+0x1,'app':_0xac23('0x91'),'appdata':_0xac23('0x92'),'interval':_0xac23('0x93')});}}return db[_0xac23('0x94')]['create']({'body':_0x1d9467[_0xac23('0x56')]['body'],'OpenchannelAccountId':_0x1d9467[_0xac23('0x5d')]['id'],'OpenchannelInteractionId':_0x4ef863['id'],'direction':'in','ContactId':_0x34d556[_0xac23('0x88')]['id'],'AttachmentId':_0x1d9467[_0xac23('0x56')][_0xac23('0x95')]});})[_0xac23('0x1d')](function(_0x42beb5){_0x34d556[_0xac23('0x24')]=_0x42beb5;if(_0x34d556[_0xac23('0x96')][_0xac23('0x97')]){return db[_0xac23('0x98')][_0xac23('0x59')]({'attributes':['id',_0xac23('0x36')],'where':{'id':_0x34d556['interaction'][_0xac23('0x97')]}})['then'](function(_0x5104fc){if(_0x5104fc){_0x34d556['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0xac23('0x99'),'appdata':_0x5104fc[_0xac23('0x36')]+','+(_0x34d556['account'][_0xac23('0x9a')]||0xa),'interval':'*,*,*,*'});_0x34d556[_0xac23('0x9b')]=![];}return respondWithRpcPromise(_0xac23('0x9c'),_0xac23('0x9d'),_0x34d556);});}return respondWithRpcPromise(_0xac23('0x9c'),'startRouting',_0x34d556);})[_0xac23('0x1d')](function(_0x5cac15){respondWithRpcPromise(_0xac23('0x9e'),_0xac23('0x9e'),{'event':_0xac23('0x6c'),'message':_0x5cac15},client9002);return _0x5cac15;})[_0xac23('0x1d')](respondWithResult(_0x511d39,null))[_0xac23('0x27')](handleError(_0x511d39,null));};exports[_0xac23('0x9f')]=function(_0xaead28,_0x2f32a6){var _0x14c839=_0xaead28[_0xac23('0x5d')]['id'];var _0x22be62=_0xaead28[_0xac23('0x56')];var _0x2a6020=0xc8;var _0x59856b=null;return db[_0xac23('0xa0')][_0xac23('0xa1')]({'isolationLevel':db[_0xac23('0xa0')][_0xac23('0xa2')][_0xac23('0xa3')][_0xac23('0xa4')]},function(_0x2af9ff){return db['OpenchannelAccount']['findOne']({'where':{'id':_0x14c839},'transaction':_0x2af9ff})['then'](function(_0x59abb9){if(_0x59abb9){return db[_0xac23('0x82')]['destroy']({'where':{'OpenchannelAccountId':_0x14c839},'transaction':_0x2af9ff})[_0xac23('0x1d')](function(){var _0x42d759=_[_0xac23('0x3b')](_0x22be62,function(_0x2f606d){_0x2f606d[_0xac23('0x60')]=_0x14c839;return _0x2f606d;});return db[_0xac23('0x82')][_0xac23('0xa5')](_0x42d759,{'transaction':_0x2af9ff});});}else{_0x2a6020=0x194;_0x59856b=[];}});})[_0xac23('0x1d')](function(){if(_0x2a6020!==0x194){return db[_0xac23('0x82')][_0xac23('0xa6')]({'where':{'OpenchannelAccountId':_0x14c839},'order':'priority'})[_0xac23('0x1d')](function(_0x52827d){_0x59856b=_0x52827d;});}})['catch'](function(_0x467e40){_0x2a6020=0x1f4;logger[_0xac23('0x21')](_0x467e40['stack']);if(_0x467e40[_0xac23('0x36')]){delete _0x467e40[_0xac23('0x36')];}_0x59856b=_0x467e40;})[_0xac23('0xa7')](function(){if(_0x59856b===null){_0x2f32a6[_0xac23('0x28')](_0x2a6020);}else{if(_0x2a6020===0x1f4){_0x2f32a6['status'](_0x2a6020)[_0xac23('0x37')](_0x59856b);}else{_0x2f32a6[_0xac23('0x29')](_0x2a6020)[_0xac23('0x2b')](_0x59856b);}}});};exports[_0xac23('0xa8')]=function(_0x23b88d,_0x595dee,_0x261238){var _0x537f2f={};var _0x12aa00={};var _0x20c1ae;var _0x4d37ce;return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x23b88d[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x595dee,null))[_0xac23('0x1d')](function(_0x6b1a36){if(_0x6b1a36){_0x20c1ae=_0x6b1a36;_0x12aa00['model']=_[_0xac23('0x53')](db[_0xac23('0x82')][_0xac23('0x52')]);_0x12aa00[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x23b88d[_0xac23('0x3f')]);_0x12aa00[_0xac23('0x40')]=_['intersection'](_0x12aa00[_0xac23('0x42')],_0x12aa00[_0xac23('0x3f')]);_0x537f2f[_0xac23('0x43')]=_['intersection'](_0x12aa00[_0xac23('0x42')],qs[_0xac23('0x44')](_0x23b88d[_0xac23('0x3f')][_0xac23('0x44')]));_0x537f2f[_0xac23('0x43')]=_0x537f2f[_0xac23('0x43')][_0xac23('0x45')]?_0x537f2f['attributes']:_0x12aa00['model'];_0x537f2f[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x23b88d['query'][_0xac23('0x48')]);_0x537f2f[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x23b88d[_0xac23('0x3f')],_0x12aa00[_0xac23('0x40')]));if(_0x23b88d['query'][_0xac23('0x49')]){_0x537f2f[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x537f2f[_0xac23('0x4a')],{'$or':_['map'](_0x537f2f['attributes'],function(_0x2ab403){var _0xb7fbb1={};_0xb7fbb1[_0x2ab403]={'$like':'%'+_0x23b88d[_0xac23('0x3f')]['filter']+'%'};return _0xb7fbb1;})});}_0x537f2f=_['merge']({},_0x537f2f,_0x23b88d['options']);return _0x20c1ae[_0xac23('0xa8')](_0x537f2f);}})[_0xac23('0x1d')](function(_0x1a4c0d){if(_0x1a4c0d){_0x4d37ce=_0x1a4c0d[_0xac23('0x45')];if(!_0x23b88d[_0xac23('0x3f')]['hasOwnProperty'](_0xac23('0x69'))){_0x537f2f['limit']=qs['limit'](_0x23b88d[_0xac23('0x3f')][_0xac23('0x2c')]);_0x537f2f['offset']=qs[_0xac23('0x47')](_0x23b88d[_0xac23('0x3f')][_0xac23('0x47')]);}return _0x20c1ae[_0xac23('0xa8')](_0x537f2f);}})[_0xac23('0x1d')](function(_0x2a3ce4){if(_0x2a3ce4){return _0x2a3ce4?{'count':_0x4d37ce,'rows':_0x2a3ce4}:null;}})[_0xac23('0x1d')](respondWithResult(_0x595dee,null))[_0xac23('0x27')](handleError(_0x595dee,null));};exports[_0xac23('0xa9')]=function(_0x58bc67,_0x41d35e,_0x4bbbaf){var _0x2d2120={'raw':![],'where':{}};var _0x371846={};var _0x57b5ce={'count':0x0,'rows':[]};return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x58bc67[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x41d35e,null))['then'](function(_0x1c0c94){if(_0x1c0c94){_0x371846[_0xac23('0x42')]=_[_0xac23('0x53')](db[_0xac23('0x8c')][_0xac23('0x52')]);_0x371846[_0xac23('0x3f')]=_['keys'](_0x58bc67[_0xac23('0x3f')]);_0x371846[_0xac23('0x40')]=_[_0xac23('0x41')](_0x371846[_0xac23('0x42')],_0x371846[_0xac23('0x3f')]);_0x2d2120[_0xac23('0x43')]=_[_0xac23('0x41')](_0x371846[_0xac23('0x42')],qs[_0xac23('0x44')](_0x58bc67['query'][_0xac23('0x44')]));_0x2d2120[_0xac23('0x43')]=_0x2d2120['attributes'][_0xac23('0x45')]?_0x2d2120[_0xac23('0x43')]:_0x371846[_0xac23('0x42')];if(!_0x58bc67[_0xac23('0x3f')][_0xac23('0x46')]('nolimit')){_0x2d2120[_0xac23('0x2c')]=qs['limit'](_0x58bc67['query'][_0xac23('0x2c')]);_0x2d2120['offset']=qs[_0xac23('0x47')](_0x58bc67[_0xac23('0x3f')][_0xac23('0x47')]);}_0x2d2120[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x58bc67[_0xac23('0x3f')]['sort']);_0x2d2120[_0xac23('0x4a')]=qs[_0xac23('0x40')](_[_0xac23('0x65')](_0x58bc67[_0xac23('0x3f')],_0x371846[_0xac23('0x40')]));_0x2d2120[_0xac23('0x4a')][_0xac23('0x60')]=_0x1c0c94['id'];if(_0x58bc67[_0xac23('0x3f')][_0xac23('0x49')]){_0x2d2120[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x2d2120['where'],{'$or':_[_0xac23('0x3b')](_0x2d2120['attributes'],function(_0x1e514b){var _0x343795={};_0x343795[_0x1e514b]={'$like':'%'+_0x58bc67[_0xac23('0x3f')]['filter']+'%'};return _0x343795;})});}_0x2d2120=_[_0xac23('0x4b')]({},_0x2d2120,_0x58bc67[_0xac23('0x4d')]);return db[_0xac23('0x8c')][_0xac23('0x2d')]({'where':_0x2d2120[_0xac23('0x4a')]})['then'](function(_0x4173d0){_0x57b5ce[_0xac23('0x2d')]=_0x4173d0;if(_0x58bc67[_0xac23('0x3f')][_0xac23('0x4e')]){_0x2d2120['include']=[{'model':db[_0xac23('0x6e')],'as':'Contact','required':![]},{'model':db['User'],'as':_0xac23('0xaa'),'attributes':[_0xac23('0x36'),_0xac23('0xab'),_0xac23('0xac')],'required':![]},{'model':db[_0xac23('0xad')],'as':_0xac23('0xae'),'attributes':['id',_0xac23('0x36'),'color'],'where':_0x58bc67[_0xac23('0x3f')][_0xac23('0xaf')]?{'id':_0x58bc67['query']['tag']}:undefined,'required':_0x58bc67[_0xac23('0x3f')][_0xac23('0xaf')]?!![]:![]}];}return db[_0xac23('0x8c')][_0xac23('0x4f')](_0x2d2120);})[_0xac23('0x1d')](function(_0xacf4a2){_0x57b5ce[_0xac23('0x50')]=_0xacf4a2;return _0x57b5ce;});}})['then'](respondWithFilteredResult(_0x41d35e,_0x2d2120))[_0xac23('0x27')](handleError(_0x41d35e,null));};exports[_0xac23('0xb0')]=function(_0x30b76f,_0x9a2bfa,_0x57bea4){return db['OpenchannelAccount'][_0xac23('0x59')]({'where':{'id':_0x30b76f[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x9a2bfa,null))[_0xac23('0x1d')](function(_0x5f1241){if(_0x5f1241){return _0x5f1241[_0xac23('0xb0')](_0x30b76f[_0xac23('0x56')]['ids'],_[_0xac23('0xb1')](_0x30b76f[_0xac23('0x56')],[_0xac23('0x6b'),'id'])||{})[_0xac23('0xb2')](function(_0x4f73ee){for(var _0x59d6d4=0x0;_0x59d6d4<_0x30b76f['body'][_0xac23('0x6b')]['length'];_0x59d6d4+=0x1){socket[_0xac23('0xb3')](_0xac23('0xb4'),{'UserId':Number(_0x30b76f[_0xac23('0x56')][_0xac23('0x6b')][_0x59d6d4]),'OpenchannelAccountId':Number(_0x30b76f['params']['id'])});}return _0x4f73ee;});}})[_0xac23('0x1d')](respondWithResult(_0x9a2bfa,null))[_0xac23('0x27')](handleError(_0x9a2bfa,null));};exports[_0xac23('0xb5')]=function(_0x5b037a,_0xe9345f,_0x5a102f){return db['OpenchannelAccount']['find']({'where':{'id':_0x5b037a[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0xe9345f,null))[_0xac23('0x1d')](function(_0x1630fb){if(_0x1630fb){return _0x1630fb[_0xac23('0xb5')](_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')])['then'](function(){if(_['isArray'](_0x5b037a['query'][_0xac23('0x6b')])){for(var _0xb6daae=0x0;_0xb6daae<_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')][_0xac23('0x45')];_0xb6daae+=0x1){socket['emit'](_0xac23('0xb6'),{'UserId':Number(_0x5b037a['query'][_0xac23('0x6b')][_0xb6daae]),'OpenchannelAccountId':Number(_0x5b037a[_0xac23('0x5d')]['id'])});}}else{socket[_0xac23('0xb3')](_0xac23('0xb6'),{'UserId':Number(_0x5b037a[_0xac23('0x3f')][_0xac23('0x6b')]),'OpenchannelAccountId':Number(_0x5b037a['params']['id'])});}});}})[_0xac23('0x1d')](respondWithStatusCode(_0xe9345f,null))[_0xac23('0x27')](handleError(_0xe9345f,null));};exports[_0xac23('0xb7')]=function(_0x191e97,_0xa0754b,_0x2eadc6){var _0x116e9e={};var _0x325cb2={};var _0x3dc8e9;var _0x5edd9d;return db['OpenchannelAccount'][_0xac23('0x63')]({'where':{'id':_0x191e97[_0xac23('0x5d')]['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0xa0754b,null))[_0xac23('0x1d')](function(_0x3e86bb){if(_0x3e86bb){_0x3dc8e9=_0x3e86bb;_0x325cb2['model']=_[_0xac23('0x53')](db[_0xac23('0x98')][_0xac23('0x52')]);_0x325cb2[_0xac23('0x3f')]=_[_0xac23('0x53')](_0x191e97['query']);_0x325cb2['filters']=_[_0xac23('0x41')](_0x325cb2[_0xac23('0x42')],_0x325cb2['query']);_0x116e9e[_0xac23('0x43')]=_['intersection'](_0x325cb2['model'],qs[_0xac23('0x44')](_0x191e97[_0xac23('0x3f')][_0xac23('0x44')]));_0x116e9e[_0xac23('0x43')]=_0x116e9e[_0xac23('0x43')]['length']?_0x116e9e[_0xac23('0x43')]:_0x325cb2['model'];_0x116e9e[_0xac23('0x64')]=qs[_0xac23('0x48')](_0x191e97['query']['sort']);_0x116e9e['where']=qs[_0xac23('0x40')](_['pick'](_0x191e97[_0xac23('0x3f')],_0x325cb2[_0xac23('0x40')]));if(_0x191e97[_0xac23('0x3f')][_0xac23('0x49')]){_0x116e9e[_0xac23('0x4a')]=_[_0xac23('0x4b')](_0x116e9e[_0xac23('0x4a')],{'$or':_[_0xac23('0x3b')](_0x116e9e[_0xac23('0x43')],function(_0x3e5e7f){var _0x58fdf6={};_0x58fdf6[_0x3e5e7f]={'$like':'%'+_0x191e97['query'][_0xac23('0x49')]+'%'};return _0x58fdf6;})});}_0x116e9e=_[_0xac23('0x4b')]({},_0x116e9e,_0x191e97['options']);return _0x3dc8e9[_0xac23('0xb7')](_0x116e9e);}})[_0xac23('0x1d')](function(_0x49ff38){if(_0x49ff38){_0x5edd9d=_0x49ff38[_0xac23('0x45')];if(!_0x191e97[_0xac23('0x3f')][_0xac23('0x46')](_0xac23('0x69'))){_0x116e9e[_0xac23('0x2c')]=qs[_0xac23('0x2c')](_0x191e97[_0xac23('0x3f')][_0xac23('0x2c')]);_0x116e9e[_0xac23('0x47')]=qs['offset'](_0x191e97[_0xac23('0x3f')][_0xac23('0x47')]);}return _0x3dc8e9[_0xac23('0xb7')](_0x116e9e);}})[_0xac23('0x1d')](function(_0x3dd4f5){if(_0x3dd4f5){return _0x3dd4f5?{'count':_0x5edd9d,'rows':_0x3dd4f5}:null;}})[_0xac23('0x1d')](respondWithResult(_0xa0754b,null))[_0xac23('0x27')](handleError(_0xa0754b,null));};exports['send']=function(_0x3696ef,_0x34c8c4,_0x1be6d1){var _0x15c337,_0x709c84,_0x1760c6;if(_[_0xac23('0x77')](_0x3696ef['body']['body'])||_0x3696ef[_0xac23('0x56')][_0xac23('0x56')]===''){throw new db[(_0xac23('0x6f'))]['ValidationError'](_0xac23('0x7a'));}if(_['isNil'](_0x3696ef[_0xac23('0x56')]['to'])){}_0x15c337=_0x3696ef[_0xac23('0x56')]['to'];return db[_0xac23('0x54')][_0xac23('0x63')]({'where':{'id':_0x3696ef['params']['id']}})[_0xac23('0x1d')](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x3dc251){if(_0x3dc251){return db['OpenchannelAccount'][_0xac23('0x59')]({'where':{'id':_0x3dc251['id']},'include':[{'model':db[_0xac23('0x7e')],'as':_0xac23('0x7f'),'include':[{'model':db[_0xac23('0x6e')],'as':_0xac23('0x80'),'where':{[_0x3dc251[_0xac23('0x7d')]]:_0x15c337},'limit':0x1,'order':[[_0xac23('0x72'),_0xac23('0x81')]]}]}]})[_0xac23('0x1d')](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x40213a){if(_0x40213a&&_0x40213a[_0xac23('0x7f')]){_0x709c84=_0x40213a[_0xac23('0x33')]({'plain':!![]});if(_0x709c84[_0xac23('0x7f')]&&_0x709c84[_0xac23('0x7f')][_0xac23('0x80')][_0xac23('0x45')]){return _0x709c84['List']['Contacts'][0x0];}return db[_0xac23('0x6e')]['create'](_[_0xac23('0x15')](_0x3696ef['body'],{'firstName':_0x15c337,[_0x40213a['mapKey']]:_0x15c337,'phone':_0x15c337,'ListId':_0x709c84[_0xac23('0x76')]}));}})['then'](handleEntityNotFound(_0x34c8c4,null))[_0xac23('0x1d')](function(_0x4e62da){if(_0x4e62da){_0x1760c6=_0x4e62da;return db[_0xac23('0x8c')][_0xac23('0x59')]({'where':{'ContactId':_0x1760c6['id'],'closed':![],'OpenchannelAccountId':_0x709c84['id']}})[_0xac23('0x1d')](function(_0x3dd399){if(_0x3dd399){return[_0x3dd399,![]];}return db[_0xac23('0x8c')][_0xac23('0x55')]({'UserId':_0x3696ef[_0xac23('0x57')]['id'],'ContactId':_0x1760c6['id'],'OpenchannelAccountId':_0x709c84['id'],'lastMsgDirection':'out','firstMsgDirection':_0xac23('0xb8'),'Messages':[_[_0xac23('0x4b')](_0x3696ef['body'],{'read':![],'body':_0x3696ef[_0xac23('0x56')]['body'],'OpenchannelAccountId':_0x709c84['id'],'UserId':_0x3696ef['user']['id'],'ContactId':_0x1760c6['id']})]},{'include':[{'model':db['OpenchannelMessage'],'as':_0xac23('0xb9')}]})[_0xac23('0x1d')](function(_0x3be62c){return[_0x3be62c,!![]];});});}})[_0xac23('0xb2')](function(_0x13292f,_0x495df6){if(_0x495df6){return _0x13292f;}return db[_0xac23('0x94')][_0xac23('0x55')](_[_0xac23('0x4b')](_0x3696ef['body'],{'read':![],'body':_0x3696ef[_0xac23('0x56')][_0xac23('0x56')],'OpenchannelAccountId':_0x709c84['id'],'OpenchannelInteractionId':_0x13292f['id'],'UserId':_0x3696ef[_0xac23('0x57')]['id'],'ContactId':_0x1760c6['id']}))['then'](function(_0x3568c1){_0x13292f[_0xac23('0xba')][_0xac23('0xb9')]=[];_0x13292f[_0xac23('0xba')][_0xac23('0xb9')][_0xac23('0xbb')](_0x3568c1['dataValues']);return _0x13292f;});});}})['then'](respondWithResult(_0x34c8c4,null))[_0xac23('0x27')](handleError(_0x34c8c4,null));};
\ No newline at end of file
index 51a898e..159c23d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['../../mysqldb','setMaxListeners','save','emit','hook','exports','events'];(function(_0xb4b52b,_0x485ad3){var _0x187696=function(_0x22159b){while(--_0x22159b){_0xb4b52b['push'](_0xb4b52b['shift']());}};_0x187696(++_0x485ad3);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x6e6c[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0xc6e6('0x0'));var OpenchannelAccount=require(_0xc6e6('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0xc6e6('0x2')](0x0);var events={'afterCreate':_0xc6e6('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x2e97f5){return function(_0x5a9e2b,_0x40b7e1,_0x4b13f0){OpenchannelAccountEvents[_0xc6e6('0x4')](_0x2e97f5+':'+_0x5a9e2b['id'],_0x5a9e2b);OpenchannelAccountEvents[_0xc6e6('0x4')](_0x2e97f5,_0x5a9e2b);_0x4b13f0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelAccount[_0xc6e6('0x5')](e,emitEvent(event));}}module[_0xc6e6('0x6')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xd8b0=['update','remove','emit','hasOwnProperty','hook','events','../../mysqldb'];(function(_0x2f1be1,_0x3c6ffb){var _0x23ab6e=function(_0x42dd6a){while(--_0x42dd6a){_0x2f1be1['push'](_0x2f1be1['shift']());}};_0x23ab6e(++_0x3c6ffb);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var EventEmitter=require(_0x0d8b('0x0'));var OpenchannelAccount=require(_0x0d8b('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0d8b('0x2'),'afterDestroy':_0x0d8b('0x3')};function emitEvent(_0x43bca1){return function(_0x364286,_0x8196ed,_0x577834){OpenchannelAccountEvents['emit'](_0x43bca1+':'+_0x364286['id'],_0x364286);OpenchannelAccountEvents[_0x0d8b('0x4')](_0x43bca1,_0x364286);_0x577834(null);};}for(var e in events){if(events[_0x0d8b('0x5')](e)){var event=events[e];OpenchannelAccount[_0x0d8b('0x6')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index 626ee58..2a6503b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x937fb2,_0x258e12){var _0x8b53c=function(_0x22d797){while(--_0x22d797){_0x937fb2['push'](_0x937fb2['shift']());}};_0x8b53c(++_0x258e12);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./openchannelAccount.attributes','exports','define','OpenchannelAccount','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x2e6a33,_0x636ebf){var _0x57870d=function(_0x5462df){while(--_0x5462df){_0x2e6a33['push'](_0x2e6a33['shift']());}};_0x57870d(++_0x636ebf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'openchannel_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 09645c9..fec5acd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7b4=['result','catch','lodash','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s','message'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xf7b4,0x152));var _0x4f7b=function(_0x37dd8b,_0x57b8da){_0x37dd8b=_0x37dd8b-0x0;var _0xb1cc6c=_0xf7b4[_0x37dd8b];return _0xb1cc6c;};'use strict';var _=require(_0x4f7b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4f7b('0x1'));var rs=require(_0x4f7b('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4f7b('0x3'));var logger=require(_0x4f7b('0x4'))(_0x4f7b('0x5'));var config=require(_0x4f7b('0x6'));var jayson=require(_0x4f7b('0x7'));var client=jayson[_0x4f7b('0x8')][_0x4f7b('0x9')]({'port':0x232a});config[_0x4f7b('0xa')]=_[_0x4f7b('0xb')](config[_0x4f7b('0xa')],{'host':_0x4f7b('0xc'),'port':0x18eb});var socket=require(_0x4f7b('0xd'))(new Redis(config[_0x4f7b('0xa')]));require('./openchannelAccount.socket')[_0x4f7b('0xe')](socket);function respondWithRpcPromise(_0x1016e0,_0x479208,_0xdd1aab){return new BPromise(function(_0x3a3d6c,_0x408e01){return client[_0x4f7b('0xf')](_0x1016e0,_0xdd1aab)[_0x4f7b('0x10')](function(_0x55d69f){logger[_0x4f7b('0x11')]('OpenchannelAccount,\x20%s,\x20%s',_0x479208,'request\x20sent');logger[_0x4f7b('0x12')](_0x4f7b('0x13'),_0x479208,_0x4f7b('0x14'),JSON[_0x4f7b('0x15')](_0x55d69f));if(_0x55d69f['error']){if(_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x17')]===0x1f4){logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);return _0x408e01(_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);}logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x55d69f[_0x4f7b('0x16')][_0x4f7b('0x19')]);return _0x3a3d6c(_0x55d69f['error'][_0x4f7b('0x19')]);}else{logger['info']('OpenchannelAccount,\x20%s,\x20%s',_0x479208,_0x4f7b('0x14'));_0x3a3d6c(_0x55d69f[_0x4f7b('0x1a')]['message']);}})[_0x4f7b('0x1b')](function(_0x24c460){logger[_0x4f7b('0x16')](_0x4f7b('0x18'),_0x479208,_0x24c460);_0x408e01(_0x24c460);});});}
\ No newline at end of file
+var _0x777d=['message','result','catch','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','client','redis','socket.io-emitter','./openchannelAccount.socket','register','request','then','info','debug','request\x20sent','stringify','error','code','OpenchannelAccount,\x20%s,\x20%s'];(function(_0x188d8a,_0x2e4b41){var _0x4c00b8=function(_0x26993b){while(--_0x26993b){_0x188d8a['push'](_0x188d8a['shift']());}};_0x4c00b8(++_0x2e4b41);}(_0x777d,0xe9));var _0xd777=function(_0xc298ad,_0xea4dc2){_0xc298ad=_0xc298ad-0x0;var _0x11b2e6=_0x777d[_0xc298ad];return _0x11b2e6;};'use strict';var _=require('lodash');var util=require(_0xd777('0x0'));var moment=require(_0xd777('0x1'));var BPromise=require(_0xd777('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd777('0x3'));var db=require(_0xd777('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xd777('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd777('0x6')]['http']({'port':0x232a});config[_0xd777('0x7')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xd777('0x8'))(new Redis(config[_0xd777('0x7')]));require(_0xd777('0x9'))[_0xd777('0xa')](socket);function respondWithRpcPromise(_0x15b49e,_0x261e0d,_0x28fedc){return new BPromise(function(_0x234862,_0x45afb5){return client[_0xd777('0xb')](_0x15b49e,_0x28fedc)[_0xd777('0xc')](function(_0x22f2f1){logger[_0xd777('0xd')]('OpenchannelAccount,\x20%s,\x20%s',_0x261e0d,'request\x20sent');logger[_0xd777('0xe')]('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x261e0d,_0xd777('0xf'),JSON[_0xd777('0x10')](_0x22f2f1));if(_0x22f2f1[_0xd777('0x11')]){if(_0x22f2f1[_0xd777('0x11')][_0xd777('0x12')]===0x1f4){logger['error'](_0xd777('0x13'),_0x261e0d,_0x22f2f1['error'][_0xd777('0x14')]);return _0x45afb5(_0x22f2f1[_0xd777('0x11')][_0xd777('0x14')]);}logger[_0xd777('0x11')](_0xd777('0x13'),_0x261e0d,_0x22f2f1['error'][_0xd777('0x14')]);return _0x234862(_0x22f2f1['error'][_0xd777('0x14')]);}else{logger['info'](_0xd777('0x13'),_0x261e0d,_0xd777('0xf'));_0x234862(_0x22f2f1[_0xd777('0x15')][_0xd777('0x14')]);}})[_0xd777('0x16')](function(_0x201175){logger['error']('OpenchannelAccount,\x20%s,\x20%s',_0x261e0d,_0x201175);_0x45afb5(_0x201175);});});}
\ No newline at end of file
index e531bb7..cff9529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76a3=['emit','length','openchannelAccount:','./openchannelAccount.events','save','remove','update'];(function(_0x3149df,_0x426ea9){var _0x570cd1=function(_0x1f484f){while(--_0x1f484f){_0x3149df['push'](_0x3149df['shift']());}};_0x570cd1(++_0x426ea9);}(_0x76a3,0xf8));var _0x376a=function(_0x25662e,_0x4cec68){_0x25662e=_0x25662e-0x0;var _0x59b7bc=_0x76a3[_0x25662e];return _0x59b7bc;};'use strict';var OpenchannelAccountEvents=require(_0x376a('0x0'));var events=[_0x376a('0x1'),_0x376a('0x2'),_0x376a('0x3')];function createListener(_0x22eb04,_0x13385a){return function(_0x36d708){_0x13385a[_0x376a('0x4')](_0x22eb04,_0x36d708);};}function removeListener(_0x8bdd7f,_0x17f183){return function(){OpenchannelAccountEvents['removeListener'](_0x8bdd7f,_0x17f183);};}exports['register']=function(_0x19ea68){for(var _0x22904c=0x0,_0x139dbc=events[_0x376a('0x5')];_0x22904c<_0x139dbc;_0x22904c++){var _0x548516=events[_0x22904c];var _0x3e2261=createListener(_0x376a('0x6')+_0x548516,_0x19ea68);OpenchannelAccountEvents['on'](_0x548516,_0x3e2261);}};
\ No newline at end of file
+var _0x3140=['removeListener','register','length','openchannelAccount:','./openchannelAccount.events','save','remove','update','emit'];(function(_0x4d8ff2,_0x40bf3a){var _0x2aa218=function(_0x1d9584){while(--_0x1d9584){_0x4d8ff2['push'](_0x4d8ff2['shift']());}};_0x2aa218(++_0x40bf3a);}(_0x3140,0xaf));var _0x0314=function(_0x3acfe5,_0x2f5f39){_0x3acfe5=_0x3acfe5-0x0;var _0x5295c3=_0x3140[_0x3acfe5];return _0x5295c3;};'use strict';var OpenchannelAccountEvents=require(_0x0314('0x0'));var events=[_0x0314('0x1'),_0x0314('0x2'),_0x0314('0x3')];function createListener(_0x4ac557,_0x4cf353){return function(_0x285be5){_0x4cf353[_0x0314('0x4')](_0x4ac557,_0x285be5);};}function removeListener(_0x1c0f66,_0x3e4284){return function(){OpenchannelAccountEvents[_0x0314('0x5')](_0x1c0f66,_0x3e4284);};}exports[_0x0314('0x6')]=function(_0x9e308d){for(var _0xf87d26=0x0,_0x11ee94=events[_0x0314('0x7')];_0xf87d26<_0x11ee94;_0xf87d26++){var _0x176944=events[_0xf87d26];var _0x495b27=createListener(_0x0314('0x8')+_0x176944,_0x9e308d);OpenchannelAccountEvents['on'](_0x176944,_0x495b27);}};
\ No newline at end of file
index 5e26427..f890da8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f67=['util','path','express','fs-extra','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','index','/:id','post','create','put','update','delete','destroy','exports','multer'];(function(_0x4ebc83,_0x39dc62){var _0x689bea=function(_0x2b42c2){while(--_0x2b42c2){_0x4ebc83['push'](_0x4ebc83['shift']());}};_0x689bea(++_0x39dc62);}(_0x0f67,0x109));var _0x70f6=function(_0xf59389,_0x36dbc2){_0xf59389=_0xf59389-0x0;var _0x5ec992=_0x0f67[_0xf59389];return _0x5ec992;};'use strict';var multer=require(_0x70f6('0x0'));var util=require(_0x70f6('0x1'));var path=require(_0x70f6('0x2'));var timeout=require('connect-timeout');var express=require(_0x70f6('0x3'));var router=express['Router']();var fs_extra=require(_0x70f6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x70f6('0x5'));var config=require(_0x70f6('0x6'));var controller=require(_0x70f6('0x7'));router[_0x70f6('0x8')]('/',auth[_0x70f6('0x9')](),controller[_0x70f6('0xa')]);router[_0x70f6('0x8')](_0x70f6('0xb'),auth['isAuthenticated'](),controller['show']);router[_0x70f6('0xc')]('/',auth[_0x70f6('0x9')](),controller[_0x70f6('0xd')]);router[_0x70f6('0xe')](_0x70f6('0xb'),auth[_0x70f6('0x9')](),controller[_0x70f6('0xf')]);router[_0x70f6('0x10')](_0x70f6('0xb'),auth[_0x70f6('0x9')](),controller[_0x70f6('0x11')]);module[_0x70f6('0x12')]=router;
\ No newline at end of file
+var _0x26a9=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show','post','create','delete','destroy','express'];(function(_0x1bc1cc,_0x148679){var _0x50f829=function(_0x4999e2){while(--_0x4999e2){_0x1bc1cc['push'](_0x1bc1cc['shift']());}};_0x50f829(++_0x148679);}(_0x26a9,0x1ee));var _0x926a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x26a9[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x926a('0x0'));var router=express[_0x926a('0x1')]();var fs_extra=require(_0x926a('0x2'));var auth=require(_0x926a('0x3'));var interaction=require(_0x926a('0x4'));var config=require(_0x926a('0x5'));var controller=require(_0x926a('0x6'));router[_0x926a('0x7')]('/',auth[_0x926a('0x8')](),controller['index']);router[_0x926a('0x7')](_0x926a('0x9'),auth['isAuthenticated'](),controller[_0x926a('0xa')]);router[_0x926a('0xb')]('/',auth['isAuthenticated'](),controller[_0x926a('0xc')]);router['put'](_0x926a('0x9'),auth[_0x926a('0x8')](),controller['update']);router[_0x926a('0xd')](_0x926a('0x9'),auth[_0x926a('0x8')](),controller[_0x926a('0xe')]);module['exports']=router;
\ No newline at end of file
index f005faf..c9c9854 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61b4=['STRING','noop','TEXT','*,*,*,*','sequelize','exports','INTEGER'];(function(_0x2e9b3e,_0x1cbfa7){var _0x21ded2=function(_0x8d8474){while(--_0x8d8474){_0x2e9b3e['push'](_0x2e9b3e['shift']());}};_0x21ded2(++_0x1cbfa7);}(_0x61b4,0xf2));var _0x461b=function(_0xf86099,_0x13b63a){_0xf86099=_0xf86099-0x0;var _0xc331d7=_0x61b4[_0xf86099];return _0xc331d7;};'use strict';var Sequelize=require(_0x461b('0x0'));module[_0x461b('0x1')]={'priority':{'type':Sequelize[_0x461b('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x461b('0x3')],'allowNull':![],'defaultValue':_0x461b('0x4')},'appdata':{'type':Sequelize[_0x461b('0x5')]()},'description':{'type':Sequelize[_0x461b('0x3')]},'interval':{'type':Sequelize[_0x461b('0x3')],'defaultValue':_0x461b('0x6')}};
\ No newline at end of file
+var _0xd4b6=['sequelize','STRING','noop','TEXT','*,*,*,*'];(function(_0x31c4ba,_0x16a3e4){var _0x1481dd=function(_0x3da49c){while(--_0x3da49c){_0x31c4ba['push'](_0x31c4ba['shift']());}};_0x1481dd(++_0x16a3e4);}(_0xd4b6,0x1d6));var _0x6d4b=function(_0x3b9674,_0x567567){_0x3b9674=_0x3b9674-0x0;var _0x59b9c3=_0xd4b6[_0x3b9674];return _0x59b9c3;};'use strict';var Sequelize=require(_0x6d4b('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x6d4b('0x1')],'allowNull':![],'defaultValue':_0x6d4b('0x2')},'appdata':{'type':Sequelize[_0x6d4b('0x3')]()},'description':{'type':Sequelize[_0x6d4b('0x1')]},'interval':{'type':Sequelize[_0x6d4b('0x1')],'defaultValue':_0x6d4b('0x4')}};
\ No newline at end of file
index bbed9ed..fd5d0f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb18=['pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','update','destroy','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','then','error','stack','name','index','OpenchannelApplication','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x539ec1,_0x570641){var _0x2996b8=function(_0xd05a43){while(--_0xd05a43){_0x539ec1['push'](_0x539ec1['shift']());}};_0x2996b8(++_0x570641);}(_0xdb18,0x191));var _0x8db1=function(_0x4ab012,_0x41c388){_0x4ab012=_0x4ab012-0x0;var _0x179547=_0xdb18[_0x4ab012];return _0x179547;};'use strict';var emlformat=require(_0x8db1('0x0'));var rimraf=require(_0x8db1('0x1'));var zipdir=require(_0x8db1('0x2'));var jsonpatch=require(_0x8db1('0x3'));var rp=require(_0x8db1('0x4'));var moment=require(_0x8db1('0x5'));var BPromise=require(_0x8db1('0x6'));var Mustache=require(_0x8db1('0x7'));var util=require(_0x8db1('0x8'));var path=require(_0x8db1('0x9'));var sox=require('sox');var csv=require(_0x8db1('0xa'));var ejs=require(_0x8db1('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8db1('0xc'));var squel=require(_0x8db1('0xd'));var crypto=require(_0x8db1('0xe'));var jsforce=require(_0x8db1('0xf'));var deskjs=require(_0x8db1('0x10'));var toCsv=require(_0x8db1('0xa'));var querystring=require(_0x8db1('0x11'));var Papa=require(_0x8db1('0x12'));var Redis=require(_0x8db1('0x13'));var authService=require(_0x8db1('0x14'));var qs=require(_0x8db1('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x8db1('0x16'));var logger=require(_0x8db1('0x17'))(_0x8db1('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8db1('0x19'));var db=require(_0x8db1('0x1a'))['db'];function respondWithStatusCode(_0x4e8b27,_0x2b99c5){_0x2b99c5=_0x2b99c5||0xcc;return function(_0x30a254){if(_0x30a254){return _0x4e8b27[_0x8db1('0x1b')](_0x2b99c5);}return _0x4e8b27[_0x8db1('0x1c')](_0x2b99c5)[_0x8db1('0x1d')]();};}function respondWithResult(_0x6080d2,_0x2dd141){_0x2dd141=_0x2dd141||0xc8;return function(_0x48ae6e){if(_0x48ae6e){return _0x6080d2[_0x8db1('0x1c')](_0x2dd141)['json'](_0x48ae6e);}};}function respondWithFilteredResult(_0x25d306,_0x1d0a07){return function(_0x26f3aa){if(_0x26f3aa){var _0x4db8e4=typeof _0x1d0a07[_0x8db1('0x1e')]==='undefined'&&typeof _0x1d0a07[_0x8db1('0x1f')]===_0x8db1('0x20');var _0x4a1588=_0x26f3aa[_0x8db1('0x21')];var _0x177b73=_0x4db8e4?0x0:_0x1d0a07[_0x8db1('0x1e')];var _0x26e26b=_0x4db8e4?_0x26f3aa[_0x8db1('0x21')]:_0x1d0a07[_0x8db1('0x1e')]+_0x1d0a07[_0x8db1('0x1f')];var _0x507018;if(_0x26e26b>=_0x4a1588){_0x26e26b=_0x4a1588;_0x507018=0xc8;}else{_0x507018=0xce;}_0x25d306[_0x8db1('0x1c')](_0x507018);return _0x25d306[_0x8db1('0x22')](_0x8db1('0x23'),_0x177b73+'-'+_0x26e26b+'/'+_0x4a1588)['json'](_0x26f3aa);}return null;};}function patchUpdates(_0x113252){return function(_0x3566c6){try{jsonpatch[_0x8db1('0x24')](_0x3566c6,_0x113252,!![]);}catch(_0x553b24){return BPromise['reject'](_0x553b24);}return _0x3566c6['save']();};}function saveUpdates(_0x236795,_0x20d1ec){return function(_0x7cad33){if(_0x7cad33){return _0x7cad33['update'](_0x236795)[_0x8db1('0x25')](function(_0x46cc58){return _0x46cc58;});}return null;};}function removeEntity(_0x50869b,_0x5c1d3e){return function(_0x522aa3){if(_0x522aa3){return _0x522aa3['destroy']()[_0x8db1('0x25')](function(){_0x50869b[_0x8db1('0x1c')](0xcc)[_0x8db1('0x1d')]();});}};}function handleEntityNotFound(_0x539118,_0x296fd8){return function(_0x128c7a){if(!_0x128c7a){_0x539118['sendStatus'](0x194);}return _0x128c7a;};}function handleError(_0xe63c81,_0x69b511){_0x69b511=_0x69b511||0x1f4;return function(_0x134b4a){logger[_0x8db1('0x26')](_0x134b4a[_0x8db1('0x27')]);if(_0x134b4a[_0x8db1('0x28')]){delete _0x134b4a[_0x8db1('0x28')];}_0xe63c81['status'](_0x69b511)['send'](_0x134b4a);};}exports[_0x8db1('0x29')]=function(_0x482ac0,_0x11828a){var _0x1de1d6={},_0x3e7f9c={},_0x569a06={'count':0x0,'rows':[]};var _0x347279=_['map'](db[_0x8db1('0x2a')][_0x8db1('0x2b')],function(_0x128e93){return{'name':_0x128e93[_0x8db1('0x2c')],'type':_0x128e93[_0x8db1('0x2d')][_0x8db1('0x2e')]};});_0x3e7f9c[_0x8db1('0x2f')]=_[_0x8db1('0x30')](_0x347279,_0x8db1('0x28'));_0x3e7f9c['query']=_[_0x8db1('0x31')](_0x482ac0['query']);_0x3e7f9c[_0x8db1('0x32')]=_[_0x8db1('0x33')](_0x3e7f9c[_0x8db1('0x2f')],_0x3e7f9c[_0x8db1('0x34')]);_0x1de1d6['attributes']=_['intersection'](_0x3e7f9c[_0x8db1('0x2f')],qs[_0x8db1('0x35')](_0x482ac0[_0x8db1('0x34')][_0x8db1('0x35')]));_0x1de1d6[_0x8db1('0x36')]=_0x1de1d6[_0x8db1('0x36')][_0x8db1('0x37')]?_0x1de1d6[_0x8db1('0x36')]:_0x3e7f9c[_0x8db1('0x2f')];if(!_0x482ac0[_0x8db1('0x34')][_0x8db1('0x38')](_0x8db1('0x39'))){_0x1de1d6[_0x8db1('0x1f')]=qs['limit'](_0x482ac0['query'][_0x8db1('0x1f')]);_0x1de1d6[_0x8db1('0x1e')]=qs[_0x8db1('0x1e')](_0x482ac0[_0x8db1('0x34')][_0x8db1('0x1e')]);}_0x1de1d6[_0x8db1('0x3a')]=qs[_0x8db1('0x3b')](_0x482ac0[_0x8db1('0x34')]['sort']);_0x1de1d6[_0x8db1('0x3c')]=qs['filters'](_[_0x8db1('0x3d')](_0x482ac0[_0x8db1('0x34')],_0x3e7f9c[_0x8db1('0x32')]),_0x347279);if(_0x482ac0[_0x8db1('0x34')][_0x8db1('0x3e')]){_0x1de1d6[_0x8db1('0x3c')]=_[_0x8db1('0x3f')](_0x1de1d6['where'],{'$or':_['map'](_0x347279,function(_0x15d0d8){if(_0x15d0d8['type']!==_0x8db1('0x40')){var _0x1812b0={};_0x1812b0[_0x15d0d8[_0x8db1('0x28')]]={'$like':'%'+_0x482ac0[_0x8db1('0x34')][_0x8db1('0x3e')]+'%'};return _0x1812b0;}})});}_0x1de1d6=_['merge']({},_0x1de1d6,_0x482ac0[_0x8db1('0x41')]);var _0x2b78c7={'where':_0x1de1d6[_0x8db1('0x3c')]};return db[_0x8db1('0x2a')]['count'](_0x2b78c7)[_0x8db1('0x25')](function(_0x170aa0){_0x569a06['count']=_0x170aa0;if(_0x482ac0[_0x8db1('0x34')][_0x8db1('0x42')]){_0x1de1d6[_0x8db1('0x43')]=[{'all':!![]}];}return db[_0x8db1('0x2a')][_0x8db1('0x44')](_0x1de1d6);})[_0x8db1('0x25')](function(_0x2db075){_0x569a06[_0x8db1('0x45')]=_0x2db075;return _0x569a06;})[_0x8db1('0x25')](respondWithFilteredResult(_0x11828a,_0x1de1d6))[_0x8db1('0x46')](handleError(_0x11828a,null));};exports[_0x8db1('0x47')]=function(_0x37ec59,_0x492b36){var _0x4da07b={'raw':!![],'where':{'id':_0x37ec59[_0x8db1('0x48')]['id']}},_0x36790b={};_0x36790b[_0x8db1('0x2f')]=_['keys'](db[_0x8db1('0x2a')][_0x8db1('0x2b')]);_0x36790b[_0x8db1('0x34')]=_[_0x8db1('0x31')](_0x37ec59['query']);_0x36790b[_0x8db1('0x32')]=_[_0x8db1('0x33')](_0x36790b[_0x8db1('0x2f')],_0x36790b['query']);_0x4da07b['attributes']=_[_0x8db1('0x33')](_0x36790b[_0x8db1('0x2f')],qs[_0x8db1('0x35')](_0x37ec59[_0x8db1('0x34')][_0x8db1('0x35')]));_0x4da07b[_0x8db1('0x36')]=_0x4da07b[_0x8db1('0x36')][_0x8db1('0x37')]?_0x4da07b[_0x8db1('0x36')]:_0x36790b['model'];if(_0x37ec59['query'][_0x8db1('0x42')]){_0x4da07b[_0x8db1('0x43')]=[{'all':!![]}];}_0x4da07b=_[_0x8db1('0x3f')]({},_0x4da07b,_0x37ec59[_0x8db1('0x41')]);return db[_0x8db1('0x2a')][_0x8db1('0x49')](_0x4da07b)[_0x8db1('0x25')](handleEntityNotFound(_0x492b36,null))[_0x8db1('0x25')](respondWithResult(_0x492b36,null))[_0x8db1('0x46')](handleError(_0x492b36,null));};exports[_0x8db1('0x4a')]=function(_0x12b854,_0x38ef57){return db['OpenchannelApplication'][_0x8db1('0x4a')](_0x12b854['body'],{})[_0x8db1('0x25')](respondWithResult(_0x38ef57,0xc9))['catch'](handleError(_0x38ef57,null));};exports[_0x8db1('0x4b')]=function(_0x43d5a2,_0x3408fe){if(_0x43d5a2['body']['id']){delete _0x43d5a2['body']['id'];}return db['OpenchannelApplication'][_0x8db1('0x49')]({'where':{'id':_0x43d5a2[_0x8db1('0x48')]['id']}})[_0x8db1('0x25')](handleEntityNotFound(_0x3408fe,null))[_0x8db1('0x25')](saveUpdates(_0x43d5a2['body'],null))[_0x8db1('0x25')](respondWithResult(_0x3408fe,null))[_0x8db1('0x46')](handleError(_0x3408fe,null));};exports[_0x8db1('0x4c')]=function(_0x5065e9,_0x130696){return db[_0x8db1('0x2a')][_0x8db1('0x49')]({'where':{'id':_0x5065e9[_0x8db1('0x48')]['id']}})[_0x8db1('0x25')](handleEntityNotFound(_0x130696,null))[_0x8db1('0x25')](removeEntity(_0x130696,null))[_0x8db1('0x46')](handleError(_0x130696,null));};
\ No newline at end of file
+var _0xbc39=['map','OpenchannelApplication','fieldName','key','query','keys','intersection','model','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','rawAttributes','length','include','create','body','find','eml-format','rimraf','zip-dir','request-promise','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','stack','name','index'];(function(_0x222eab,_0x45347a){var _0x27ebc2=function(_0x1fdd7d){while(--_0x1fdd7d){_0x222eab['push'](_0x222eab['shift']());}};_0x27ebc2(++_0x45347a);}(_0xbc39,0xb1));var _0x9bc3=function(_0xf4f343,_0x41fe4a){_0xf4f343=_0xf4f343-0x0;var _0x4cda68=_0xbc39[_0xf4f343];return _0x4cda68;};'use strict';var emlformat=require(_0x9bc3('0x0'));var rimraf=require(_0x9bc3('0x1'));var zipdir=require(_0x9bc3('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9bc3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x9bc3('0x4'));var util=require(_0x9bc3('0x5'));var path=require('path');var sox=require(_0x9bc3('0x6'));var csv=require(_0x9bc3('0x7'));var ejs=require(_0x9bc3('0x8'));var fs=require('fs');var fs_extra=require(_0x9bc3('0x9'));var _=require(_0x9bc3('0xa'));var squel=require('squel');var crypto=require(_0x9bc3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x9bc3('0xc'));var toCsv=require('to-csv');var querystring=require(_0x9bc3('0xd'));var Papa=require(_0x9bc3('0xe'));var Redis=require(_0x9bc3('0xf'));var authService=require(_0x9bc3('0x10'));var qs=require(_0x9bc3('0x11'));var as=require(_0x9bc3('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9bc3('0x13'))(_0x9bc3('0x14'));var utils=require(_0x9bc3('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x9bc3('0x16'));var db=require(_0x9bc3('0x17'))['db'];function respondWithStatusCode(_0x1b1ebd,_0x25245a){_0x25245a=_0x25245a||0xcc;return function(_0x567689){if(_0x567689){return _0x1b1ebd[_0x9bc3('0x18')](_0x25245a);}return _0x1b1ebd[_0x9bc3('0x19')](_0x25245a)[_0x9bc3('0x1a')]();};}function respondWithResult(_0x4fcc8d,_0x41b9d8){_0x41b9d8=_0x41b9d8||0xc8;return function(_0x3ffcc1){if(_0x3ffcc1){return _0x4fcc8d[_0x9bc3('0x19')](_0x41b9d8)[_0x9bc3('0x1b')](_0x3ffcc1);}};}function respondWithFilteredResult(_0x5d3c4a,_0x3fb28c){return function(_0x207aa4){if(_0x207aa4){var _0x1c5476=typeof _0x3fb28c['offset']===_0x9bc3('0x1c')&&typeof _0x3fb28c[_0x9bc3('0x1d')]===_0x9bc3('0x1c');var _0x3fca4a=_0x207aa4[_0x9bc3('0x1e')];var _0x269492=_0x1c5476?0x0:_0x3fb28c[_0x9bc3('0x1f')];var _0x371423=_0x1c5476?_0x207aa4[_0x9bc3('0x1e')]:_0x3fb28c['offset']+_0x3fb28c[_0x9bc3('0x1d')];var _0x11347e;if(_0x371423>=_0x3fca4a){_0x371423=_0x3fca4a;_0x11347e=0xc8;}else{_0x11347e=0xce;}_0x5d3c4a['status'](_0x11347e);return _0x5d3c4a['set'](_0x9bc3('0x20'),_0x269492+'-'+_0x371423+'/'+_0x3fca4a)['json'](_0x207aa4);}return null;};}function patchUpdates(_0x33657a){return function(_0x3aa273){try{jsonpatch[_0x9bc3('0x21')](_0x3aa273,_0x33657a,!![]);}catch(_0x53f9cc){return BPromise[_0x9bc3('0x22')](_0x53f9cc);}return _0x3aa273[_0x9bc3('0x23')]();};}function saveUpdates(_0x4370e8,_0x45ccbf){return function(_0x33849d){if(_0x33849d){return _0x33849d[_0x9bc3('0x24')](_0x4370e8)[_0x9bc3('0x25')](function(_0x2ee592){return _0x2ee592;});}return null;};}function removeEntity(_0x50adff,_0x534dc2){return function(_0x2a5580){if(_0x2a5580){return _0x2a5580[_0x9bc3('0x26')]()['then'](function(){_0x50adff[_0x9bc3('0x19')](0xcc)[_0x9bc3('0x1a')]();});}};}function handleEntityNotFound(_0x5e02b6,_0x1c17be){return function(_0x2b28fc){if(!_0x2b28fc){_0x5e02b6[_0x9bc3('0x18')](0x194);}return _0x2b28fc;};}function handleError(_0x42a6ab,_0x386e82){_0x386e82=_0x386e82||0x1f4;return function(_0xcdeda7){logger['error'](_0xcdeda7[_0x9bc3('0x27')]);if(_0xcdeda7['name']){delete _0xcdeda7[_0x9bc3('0x28')];}_0x42a6ab[_0x9bc3('0x19')](_0x386e82)['send'](_0xcdeda7);};}exports[_0x9bc3('0x29')]=function(_0x1e43ca,_0x1bd9f4){var _0x16aca6={},_0x2adfad={},_0x5d8683={'count':0x0,'rows':[]};var _0x1b6c91=_[_0x9bc3('0x2a')](db[_0x9bc3('0x2b')]['rawAttributes'],function(_0x406444){return{'name':_0x406444[_0x9bc3('0x2c')],'type':_0x406444['type'][_0x9bc3('0x2d')]};});_0x2adfad['model']=_[_0x9bc3('0x2a')](_0x1b6c91,_0x9bc3('0x28'));_0x2adfad[_0x9bc3('0x2e')]=_[_0x9bc3('0x2f')](_0x1e43ca['query']);_0x2adfad['filters']=_[_0x9bc3('0x30')](_0x2adfad[_0x9bc3('0x31')],_0x2adfad[_0x9bc3('0x2e')]);_0x16aca6[_0x9bc3('0x32')]=_[_0x9bc3('0x30')](_0x2adfad[_0x9bc3('0x31')],qs[_0x9bc3('0x33')](_0x1e43ca[_0x9bc3('0x2e')]['fields']));_0x16aca6['attributes']=_0x16aca6[_0x9bc3('0x32')]['length']?_0x16aca6[_0x9bc3('0x32')]:_0x2adfad[_0x9bc3('0x31')];if(!_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x34')]('nolimit')){_0x16aca6[_0x9bc3('0x1d')]=qs[_0x9bc3('0x1d')](_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x1d')]);_0x16aca6['offset']=qs['offset'](_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x1f')]);}_0x16aca6['order']=qs[_0x9bc3('0x35')](_0x1e43ca[_0x9bc3('0x2e')]['sort']);_0x16aca6[_0x9bc3('0x36')]=qs[_0x9bc3('0x37')](_['pick'](_0x1e43ca[_0x9bc3('0x2e')],_0x2adfad[_0x9bc3('0x37')]),_0x1b6c91);if(_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x38')]){_0x16aca6[_0x9bc3('0x36')]=_[_0x9bc3('0x39')](_0x16aca6[_0x9bc3('0x36')],{'$or':_['map'](_0x1b6c91,function(_0x2539ce){if(_0x2539ce[_0x9bc3('0x3a')]!==_0x9bc3('0x3b')){var _0x2f1da={};_0x2f1da[_0x2539ce['name']]={'$like':'%'+_0x1e43ca[_0x9bc3('0x2e')][_0x9bc3('0x38')]+'%'};return _0x2f1da;}})});}_0x16aca6=_['merge']({},_0x16aca6,_0x1e43ca[_0x9bc3('0x3c')]);var _0x3b7098={'where':_0x16aca6[_0x9bc3('0x36')]};return db[_0x9bc3('0x2b')][_0x9bc3('0x1e')](_0x3b7098)[_0x9bc3('0x25')](function(_0x3e601b){_0x5d8683[_0x9bc3('0x1e')]=_0x3e601b;if(_0x1e43ca['query'][_0x9bc3('0x3d')]){_0x16aca6['include']=[{'all':!![]}];}return db[_0x9bc3('0x2b')][_0x9bc3('0x3e')](_0x16aca6);})[_0x9bc3('0x25')](function(_0x24a5e1){_0x5d8683[_0x9bc3('0x3f')]=_0x24a5e1;return _0x5d8683;})[_0x9bc3('0x25')](respondWithFilteredResult(_0x1bd9f4,_0x16aca6))[_0x9bc3('0x40')](handleError(_0x1bd9f4,null));};exports[_0x9bc3('0x41')]=function(_0x17fbcd,_0x3b5d56){var _0x33e03b={'raw':!![],'where':{'id':_0x17fbcd[_0x9bc3('0x42')]['id']}},_0x1f9daf={};_0x1f9daf[_0x9bc3('0x31')]=_[_0x9bc3('0x2f')](db[_0x9bc3('0x2b')][_0x9bc3('0x43')]);_0x1f9daf[_0x9bc3('0x2e')]=_['keys'](_0x17fbcd[_0x9bc3('0x2e')]);_0x1f9daf[_0x9bc3('0x37')]=_[_0x9bc3('0x30')](_0x1f9daf[_0x9bc3('0x31')],_0x1f9daf[_0x9bc3('0x2e')]);_0x33e03b[_0x9bc3('0x32')]=_['intersection'](_0x1f9daf[_0x9bc3('0x31')],qs['fields'](_0x17fbcd[_0x9bc3('0x2e')][_0x9bc3('0x33')]));_0x33e03b['attributes']=_0x33e03b[_0x9bc3('0x32')][_0x9bc3('0x44')]?_0x33e03b[_0x9bc3('0x32')]:_0x1f9daf[_0x9bc3('0x31')];if(_0x17fbcd[_0x9bc3('0x2e')][_0x9bc3('0x3d')]){_0x33e03b[_0x9bc3('0x45')]=[{'all':!![]}];}_0x33e03b=_[_0x9bc3('0x39')]({},_0x33e03b,_0x17fbcd['options']);return db['OpenchannelApplication']['find'](_0x33e03b)[_0x9bc3('0x25')](handleEntityNotFound(_0x3b5d56,null))['then'](respondWithResult(_0x3b5d56,null))['catch'](handleError(_0x3b5d56,null));};exports[_0x9bc3('0x46')]=function(_0x436ad6,_0x153bf2){return db[_0x9bc3('0x2b')][_0x9bc3('0x46')](_0x436ad6[_0x9bc3('0x47')],{})[_0x9bc3('0x25')](respondWithResult(_0x153bf2,0xc9))[_0x9bc3('0x40')](handleError(_0x153bf2,null));};exports[_0x9bc3('0x24')]=function(_0x35a7c1,_0x18ecc3){if(_0x35a7c1[_0x9bc3('0x47')]['id']){delete _0x35a7c1[_0x9bc3('0x47')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x35a7c1[_0x9bc3('0x42')]['id']}})[_0x9bc3('0x25')](handleEntityNotFound(_0x18ecc3,null))[_0x9bc3('0x25')](saveUpdates(_0x35a7c1[_0x9bc3('0x47')],null))['then'](respondWithResult(_0x18ecc3,null))[_0x9bc3('0x40')](handleError(_0x18ecc3,null));};exports[_0x9bc3('0x26')]=function(_0x5801f7,_0x41996f){return db[_0x9bc3('0x2b')][_0x9bc3('0x48')]({'where':{'id':_0x5801f7[_0x9bc3('0x42')]['id']}})[_0x9bc3('0x25')](handleEntityNotFound(_0x41996f,null))[_0x9bc3('0x25')](removeEntity(_0x41996f,null))['catch'](handleError(_0x41996f,null));};
\ No newline at end of file
index 30aa492..5c8079e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf59c=['OpenchannelApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x258919,_0x1754e6){var _0xfbd68b=function(_0x3bc3e9){while(--_0x3bc3e9){_0x258919['push'](_0x258919['shift']());}};_0xfbd68b(++_0x1754e6);}(_0xf59c,0x17a));var _0xcf59=function(_0x44ddca,_0x592b1b){_0x44ddca=_0x44ddca-0x0;var _0xd5ce4d=_0xf59c[_0x44ddca];return _0xd5ce4d;};'use strict';var _=require(_0xcf59('0x0'));var util=require(_0xcf59('0x1'));var logger=require(_0xcf59('0x2'))(_0xcf59('0x3'));var moment=require(_0xcf59('0x4'));var BPromise=require(_0xcf59('0x5'));var rp=require(_0xcf59('0x6'));var fs=require('fs');var path=require(_0xcf59('0x7'));var rimraf=require(_0xcf59('0x8'));var config=require(_0xcf59('0x9'));var attributes=require('./openchannelApplication.attributes');module[_0xcf59('0xa')]=function(_0x1daf21,_0x485358){return _0x1daf21[_0xcf59('0xb')](_0xcf59('0xc'),attributes,{'tableName':'openchannel_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xcf59('0xd'),'collate':_0xcf59('0xe')});};
\ No newline at end of file
+var _0x62a6=['openchannel_applications','lodash','util','../../config/logger','api','moment','bluebird','rimraf','../../config/environment','exports','define','OpenchannelApplication'];(function(_0xa7177,_0x474041){var _0x2fb17f=function(_0x5aaeec){while(--_0x5aaeec){_0xa7177['push'](_0xa7177['shift']());}};_0x2fb17f(++_0x474041);}(_0x62a6,0x1c9));var _0x662a=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x62a6[_0x5bd426];return _0x23a7eb;};'use strict';var _=require(_0x662a('0x0'));var util=require(_0x662a('0x1'));var logger=require(_0x662a('0x2'))(_0x662a('0x3'));var moment=require(_0x662a('0x4'));var BPromise=require(_0x662a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x662a('0x6'));var config=require(_0x662a('0x7'));var attributes=require('./openchannelApplication.attributes');module[_0x662a('0x8')]=function(_0x34fe75,_0xbb83af){return _0x34fe75[_0x662a('0x9')](_0x662a('0xa'),attributes,{'tableName':_0x662a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index c53adf6..4123cad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x652f=['info','request\x20sent','error','code','OpenchannelApplication,\x20%s,\x20%s','message','result','catch','UpdateOpenchannelApplication','OpenchannelApplication','update','options','raw','where','attributes','limit','debug','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then'];(function(_0x31116a,_0x530c21){var _0x439b6b=function(_0x5c3b54){while(--_0x5c3b54){_0x31116a['push'](_0x31116a['shift']());}};_0x439b6b(++_0x530c21);}(_0x652f,0xf1));var _0xf652=function(_0x5e4ad6,_0x4858d0){_0x5e4ad6=_0x5e4ad6-0x0;var _0x155877=_0x652f[_0x5e4ad6];return _0x155877;};'use strict';var _=require('lodash');var util=require(_0xf652('0x0'));var moment=require('moment');var BPromise=require(_0xf652('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf652('0x2'));var db=require(_0xf652('0x3'))['db'];var utils=require(_0xf652('0x4'));var logger=require(_0xf652('0x5'))('rpc');var config=require(_0xf652('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf652('0x7')][_0xf652('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x581d9f,_0x5335a0,_0x534241){return new BPromise(function(_0x124695,_0x1d07b9){return client[_0xf652('0x9')](_0x581d9f,_0x534241)[_0xf652('0xa')](function(_0x201ec3){logger[_0xf652('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x5335a0,_0xf652('0xc'));logger['debug']('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x5335a0,_0xf652('0xc'),JSON['stringify'](_0x201ec3));if(_0x201ec3[_0xf652('0xd')]){if(_0x201ec3[_0xf652('0xd')][_0xf652('0xe')]===0x1f4){logger[_0xf652('0xd')](_0xf652('0xf'),_0x5335a0,_0x201ec3[_0xf652('0xd')]['message']);return _0x1d07b9(_0x201ec3[_0xf652('0xd')][_0xf652('0x10')]);}logger[_0xf652('0xd')](_0xf652('0xf'),_0x5335a0,_0x201ec3[_0xf652('0xd')][_0xf652('0x10')]);return _0x124695(_0x201ec3[_0xf652('0xd')]['message']);}else{logger[_0xf652('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x5335a0,_0xf652('0xc'));_0x124695(_0x201ec3[_0xf652('0x11')][_0xf652('0x10')]);}})[_0xf652('0x12')](function(_0x16a952){logger[_0xf652('0xd')](_0xf652('0xf'),_0x5335a0,_0x16a952);_0x1d07b9(_0x16a952);});});}exports[_0xf652('0x13')]=function(_0x2f53f8){var _0x58f4fe=this;return new Promise(function(_0x40e956,_0x59646b){return db[_0xf652('0x14')][_0xf652('0x15')](_0x2f53f8['body'],{'raw':_0x2f53f8['options']?_0x2f53f8[_0xf652('0x16')][_0xf652('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f53f8[_0xf652('0x16')]?_0x2f53f8['options'][_0xf652('0x18')]||null:null,'attributes':_0x2f53f8[_0xf652('0x16')]?_0x2f53f8[_0xf652('0x16')][_0xf652('0x19')]||null:null,'limit':_0x2f53f8[_0xf652('0x16')]?_0x2f53f8['options'][_0xf652('0x1a')]||null:null})[_0xf652('0xa')](function(_0x4777cb){logger['info'](_0xf652('0x13'),_0x2f53f8);logger[_0xf652('0x1b')](_0xf652('0x13'),_0x2f53f8,JSON['stringify'](_0x4777cb));_0x40e956(_0x4777cb);})[_0xf652('0x12')](function(_0x153c93){logger['error'](_0xf652('0x13'),_0x153c93[_0xf652('0x10')],_0x2f53f8);_0x59646b(_0x58f4fe[_0xf652('0xd')](0x1f4,_0x153c93['message']));});});};
\ No newline at end of file
+var _0xc5ca=['OpenchannelApplication,\x20%s,\x20%s','message','result','OpenchannelApplication','update','options','raw','attributes','limit','then','debug','UpdateOpenchannelApplication','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','request\x20sent','OpenchannelApplication,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0xd7b0a4,_0x53c7d3){var _0x184e9e=function(_0x325bbd){while(--_0x325bbd){_0xd7b0a4['push'](_0xd7b0a4['shift']());}};_0x184e9e(++_0x53c7d3);}(_0xc5ca,0x1d7));var _0xac5c=function(_0x5e9039,_0x313cf4){_0x5e9039=_0x5e9039-0x0;var _0x1c438b=_0xc5ca[_0x5e9039];return _0x1c438b;};'use strict';var _=require('lodash');var util=require(_0xac5c('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xac5c('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xac5c('0x2'))['db'];var utils=require(_0xac5c('0x3'));var logger=require(_0xac5c('0x4'))(_0xac5c('0x5'));var config=require(_0xac5c('0x6'));var jayson=require(_0xac5c('0x7'));var client=jayson[_0xac5c('0x8')][_0xac5c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f3679,_0x2132b8,_0x78648c){return new BPromise(function(_0x12de08,_0x1ad183){return client[_0xac5c('0xa')](_0x1f3679,_0x78648c)['then'](function(_0x1c8e04){logger['info']('OpenchannelApplication,\x20%s,\x20%s',_0x2132b8,_0xac5c('0xb'));logger['debug'](_0xac5c('0xc'),_0x2132b8,'request\x20sent',JSON[_0xac5c('0xd')](_0x1c8e04));if(_0x1c8e04[_0xac5c('0xe')]){if(_0x1c8e04[_0xac5c('0xe')]['code']===0x1f4){logger[_0xac5c('0xe')](_0xac5c('0xf'),_0x2132b8,_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);return _0x1ad183(_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);}logger[_0xac5c('0xe')](_0xac5c('0xf'),_0x2132b8,_0x1c8e04['error'][_0xac5c('0x10')]);return _0x12de08(_0x1c8e04[_0xac5c('0xe')][_0xac5c('0x10')]);}else{logger['info'](_0xac5c('0xf'),_0x2132b8,_0xac5c('0xb'));_0x12de08(_0x1c8e04[_0xac5c('0x11')][_0xac5c('0x10')]);}})['catch'](function(_0x26d104){logger[_0xac5c('0xe')]('OpenchannelApplication,\x20%s,\x20%s',_0x2132b8,_0x26d104);_0x1ad183(_0x26d104);});});}exports['UpdateOpenchannelApplication']=function(_0x5c5337){var _0x4961de=this;return new Promise(function(_0x5b8a78,_0x524116){return db[_0xac5c('0x12')][_0xac5c('0x13')](_0x5c5337['body'],{'raw':_0x5c5337[_0xac5c('0x14')]?_0x5c5337['options'][_0xac5c('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c5337[_0xac5c('0x14')]?_0x5c5337[_0xac5c('0x14')]['where']||null:null,'attributes':_0x5c5337['options']?_0x5c5337['options'][_0xac5c('0x16')]||null:null,'limit':_0x5c5337[_0xac5c('0x14')]?_0x5c5337[_0xac5c('0x14')][_0xac5c('0x17')]||null:null})[_0xac5c('0x18')](function(_0x28a201){logger['info']('UpdateOpenchannelApplication',_0x5c5337);logger[_0xac5c('0x19')]('UpdateOpenchannelApplication',_0x5c5337,JSON[_0xac5c('0xd')](_0x28a201));_0x5b8a78(_0x28a201);})['catch'](function(_0xf5a3){logger['error'](_0xac5c('0x1a'),_0xf5a3[_0xac5c('0x10')],_0x5c5337);_0x524116(_0x4961de[_0xac5c('0xe')](0x1f4,_0xf5a3[_0xac5c('0x10')]));});});};
\ No newline at end of file
index 4b18ea8..200f3b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd240=['openchannel','openchannelinteraction:addtags','put','openchannelinteraction:update','update','destroy','multer','util','express','../../components/auth/service','../../components/interaction/service','./openchannelInteraction.controller','index','/describe','get','/:id','show','/:id/messages','isAuthenticated','getMessages','/:id/download','post','create','addMessage','/:id/tags','tracked'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0xd240,0x13e));var _0x0d24=function(_0x561be2,_0x42e8e4){_0x561be2=_0x561be2-0x0;var _0x41a37f=_0xd240[_0x561be2];return _0x41a37f;};'use strict';var multer=require(_0x0d24('0x0'));var util=require(_0x0d24('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x0d24('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x0d24('0x3'));var interaction=require(_0x0d24('0x4'));var config=require('../../config/environment');var controller=require(_0x0d24('0x5'));router['get']('/',auth['isAuthenticated'](),controller[_0x0d24('0x6')]);router['get'](_0x0d24('0x7'),auth['isAuthenticated'](),controller['describe']);router[_0x0d24('0x8')](_0x0d24('0x9'),auth['isAuthenticated'](),controller[_0x0d24('0xa')]);router[_0x0d24('0x8')](_0x0d24('0xb'),auth[_0x0d24('0xc')](),controller[_0x0d24('0xd')]);router['get'](_0x0d24('0xe'),auth['isAuthenticated'](),controller['download']);router[_0x0d24('0xf')]('/',auth[_0x0d24('0xc')](),controller[_0x0d24('0x10')]);router[_0x0d24('0xf')](_0x0d24('0xb'),auth[_0x0d24('0xc')](),controller[_0x0d24('0x11')]);router['post'](_0x0d24('0x12'),auth[_0x0d24('0xc')](),interaction[_0x0d24('0x13')](_0x0d24('0x14'),_0x0d24('0x15')),controller['addTags']);router[_0x0d24('0x16')]('/:id',auth['isAuthenticated'](),interaction[_0x0d24('0x13')](_0x0d24('0x14'),_0x0d24('0x17')),controller[_0x0d24('0x18')]);router['delete'](_0x0d24('0x9'),auth['isAuthenticated'](),interaction[_0x0d24('0x13')](_0x0d24('0x14'),'openchannelinteraction:destroy'),controller[_0x0d24('0x19')]);router['delete'](_0x0d24('0x12'),auth['isAuthenticated'](),controller['removeTags']);module['exports']=router;
\ No newline at end of file
+var _0x788f=['removeTags','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','isAuthenticated','index','get','show','/:id/messages','/:id/download','download','post','create','/:id/tags','tracked','addTags','put','/:id','openchannel','update','delete','openchannelinteraction:destroy','destroy'];(function(_0x3a9dae,_0x4ffe20){var _0x1f2ee4=function(_0xbfadaa){while(--_0xbfadaa){_0x3a9dae['push'](_0x3a9dae['shift']());}};_0x1f2ee4(++_0x4ffe20);}(_0x788f,0x1a5));var _0xf788=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x788f[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require(_0xf788('0x0'));var path=require(_0xf788('0x1'));var timeout=require(_0xf788('0x2'));var express=require(_0xf788('0x3'));var router=express[_0xf788('0x4')]();var fs_extra=require(_0xf788('0x5'));var auth=require(_0xf788('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf788('0x7'));var controller=require('./openchannelInteraction.controller');router['get']('/',auth[_0xf788('0x8')](),controller[_0xf788('0x9')]);router['get']('/describe',auth[_0xf788('0x8')](),controller['describe']);router[_0xf788('0xa')]('/:id',auth[_0xf788('0x8')](),controller[_0xf788('0xb')]);router[_0xf788('0xa')](_0xf788('0xc'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf788('0xa')](_0xf788('0xd'),auth[_0xf788('0x8')](),controller[_0xf788('0xe')]);router[_0xf788('0xf')]('/',auth[_0xf788('0x8')](),controller[_0xf788('0x10')]);router[_0xf788('0xf')](_0xf788('0xc'),auth['isAuthenticated'](),controller['addMessage']);router[_0xf788('0xf')](_0xf788('0x11'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')]('openchannel','openchannelinteraction:addtags'),controller[_0xf788('0x13')]);router[_0xf788('0x14')](_0xf788('0x15'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')](_0xf788('0x16'),'openchannelinteraction:update'),controller[_0xf788('0x17')]);router[_0xf788('0x18')](_0xf788('0x15'),auth[_0xf788('0x8')](),interaction[_0xf788('0x12')](_0xf788('0x16'),_0xf788('0x19')),controller[_0xf788('0x1a')]);router[_0xf788('0x18')]('/:id/tags',auth[_0xf788('0x8')](),controller[_0xf788('0x1b')]);module['exports']=router;
\ No newline at end of file
index bff48e6..1dc6137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22fb=['ENUM','out','BOOLEAN','STRING','DATE'];(function(_0x3f23c0,_0x4d4253){var _0x168bbb=function(_0x4409c1){while(--_0x4409c1){_0x3f23c0['push'](_0x3f23c0['shift']());}};_0x168bbb(++_0x4d4253);}(_0x22fb,0x192));var _0xb22f=function(_0x4e288c,_0x3dfeae){_0x4e288c=_0x4e288c-0x0;var _0x4710df=_0x22fb[_0x4e288c];return _0x4710df;};'use strict';var Sequelize=require('sequelize');module['exports']={'closed':{'type':Sequelize[_0xb22f('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize[_0xb22f('0x1')]},'secondDisposition':{'type':Sequelize[_0xb22f('0x1')]},'thirdDisposition':{'type':Sequelize[_0xb22f('0x1')]},'note':{'type':Sequelize[_0xb22f('0x1')]},'read1stAt':{'type':Sequelize[_0xb22f('0x2')]},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0xb22f('0x1')]},'lastMsgAt':{'type':Sequelize[_0xb22f('0x2')]},'firstMsgDirection':{'type':Sequelize[_0xb22f('0x3')]('in',_0xb22f('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize[_0xb22f('0x3')]('in',_0xb22f('0x4')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize['STRING']},'autoreplyExecuted':{'type':Sequelize[_0xb22f('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x3667=['ENUM','out','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x5683e1,_0x333438){var _0x3ed5f9=function(_0x226510){while(--_0x226510){_0x5683e1['push'](_0x5683e1['shift']());}};_0x3ed5f9(++_0x333438);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7366('0x0'));module[_0x7366('0x1')]={'closed':{'type':Sequelize[_0x7366('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7366('0x3')]},'disposition':{'type':Sequelize[_0x7366('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x7366('0x4')]},'note':{'type':Sequelize[_0x7366('0x4')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x7366('0x4')]},'externalUrl':{'type':Sequelize[_0x7366('0x4')]},'lastMsgAt':{'type':Sequelize[_0x7366('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x7366('0x5')]('in',_0x7366('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x7366('0x6')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x7366('0x4')]},'autoreplyExecuted':{'type':Sequelize[_0x7366('0x2')],'defaultValue':![]}};
\ No newline at end of file
index c16e6b0..23b02d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe649=['pipe','createWriteStream','out','System','Contact','read','value','renderFile','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','unlinkSync','rimraf','zip-dir','moment','util','path','ejs','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','register','status','end','offset','undefined','limit','count','json','then','destroy','sendStatus','error','stack','name','send','index','OpenchannelInteraction','rawAttributes','fieldName','type','key','findAll','openchannel','query','catch','from','params','model','keys','filters','attributes','intersection','fields','includeAll','include','options','find','create','body','update','describe','OpenchannelMessage','addMessage','ids','omit','getMessages','findOne','hasOwnProperty','order','sort','where','map','$gte','format','YYYY-MM-DD\x20HH:mm:ss','merge','rows','addTags','Tag','color','emit','openchannelInteractionTags:save','removeTags','download','unix','toString','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','push','User','fullname','CmContact','lastName','Attachment','Messages','createdAt','direction','secret','OpenchannelAccount','Account','Owner','get','mkdirSync','Openchannel','closedAt','disposition','threadId','Public','filter','basename','existsSync'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xe649,0x18a));var _0x9e64=function(_0x374d93,_0x3ff575){_0x374d93=_0x374d93-0x0;var _0x2bcde2=_0xe649[_0x374d93];return _0x2bcde2;};'use strict';var rimraf=require(_0x9e64('0x0'));var zipdir=require(_0x9e64('0x1'));var moment=require(_0x9e64('0x2'));var util=require(_0x9e64('0x3'));var path=require(_0x9e64('0x4'));var ejs=require(_0x9e64('0x5'));var fs=require('fs');var _=require(_0x9e64('0x6'));var Redis=require('ioredis');var interaction=require(_0x9e64('0x7'));var qs=require(_0x9e64('0x8'));var pdf=require(_0x9e64('0x9'));var logger=require(_0x9e64('0xa'))(_0x9e64('0xb'));var config=require(_0x9e64('0xc'));var db=require(_0x9e64('0xd'))['db'];config['redis']=_[_0x9e64('0xe')](config[_0x9e64('0xf')],{'host':_0x9e64('0x10'),'port':0x18eb});var socket=require(_0x9e64('0x11'))(new Redis(config[_0x9e64('0xf')]));require('./openchannelInteraction.socket')[_0x9e64('0x12')](socket);function respondWithStatusCode(_0x4b9839,_0x32c710){_0x32c710=_0x32c710||0xcc;return function(_0x3c52e6){if(_0x3c52e6){return _0x4b9839['sendStatus'](_0x32c710);}return _0x4b9839[_0x9e64('0x13')](_0x32c710)[_0x9e64('0x14')]();};}function respondWithResult(_0x53c311,_0x3f85eb){_0x3f85eb=_0x3f85eb||0xc8;return function(_0x375901){if(_0x375901){return _0x53c311[_0x9e64('0x13')](_0x3f85eb)['json'](_0x375901);}};}function respondWithFilteredResult(_0x412316,_0x32dacc){return function(_0x11243f){if(_0x11243f){var _0x53198c=typeof _0x32dacc[_0x9e64('0x15')]===_0x9e64('0x16')&&typeof _0x32dacc[_0x9e64('0x17')]==='undefined';var _0x43ca38=_0x11243f[_0x9e64('0x18')];var _0x4dc875=_0x53198c?0x0:_0x32dacc[_0x9e64('0x15')];var _0x345287=_0x53198c?_0x11243f['count']:_0x32dacc[_0x9e64('0x15')]+_0x32dacc[_0x9e64('0x17')];var _0x3c2b73;if(_0x345287>=_0x43ca38){_0x345287=_0x43ca38;_0x3c2b73=0xc8;}else{_0x3c2b73=0xce;}_0x412316[_0x9e64('0x13')](_0x3c2b73);return _0x412316['set']('Content-Range',_0x4dc875+'-'+_0x345287+'/'+_0x43ca38)[_0x9e64('0x19')](_0x11243f);}return null;};}function saveUpdates(_0x189bb0){return function(_0x392a12){if(_0x392a12){return _0x392a12['update'](_0x189bb0)[_0x9e64('0x1a')](function(_0x416aae){return _0x416aae;});}return null;};}function removeEntity(_0x5d17c5){return function(_0x55cdf4){if(_0x55cdf4){return _0x55cdf4[_0x9e64('0x1b')]()[_0x9e64('0x1a')](function(){_0x5d17c5[_0x9e64('0x13')](0xcc)[_0x9e64('0x14')]();});}};}function handleEntityNotFound(_0x5615b0){return function(_0x41dfd0){if(!_0x41dfd0){_0x5615b0[_0x9e64('0x1c')](0x194);}return _0x41dfd0;};}function handleError(_0x1e0210,_0x199d77){_0x199d77=_0x199d77||0x1f4;return function(_0x3c1ebc){logger[_0x9e64('0x1d')](_0x3c1ebc[_0x9e64('0x1e')]);if(_0x3c1ebc[_0x9e64('0x1f')]){delete _0x3c1ebc[_0x9e64('0x1f')];}_0x1e0210[_0x9e64('0x13')](_0x199d77)[_0x9e64('0x20')](_0x3c1ebc);};}exports[_0x9e64('0x21')]=function(_0x30ce53,_0x453bcb){var _0x1e6c04={};var _0x566bfa=_['map'](db[_0x9e64('0x22')][_0x9e64('0x23')],function(_0x38066d){return{'name':_0x38066d[_0x9e64('0x24')],'type':_0x38066d[_0x9e64('0x25')][_0x9e64('0x26')]};});_0x1e6c04=qs['getOptions'](_0x566bfa,_0x30ce53);return interaction[_0x9e64('0x27')](_0x9e64('0x28'),_0x30ce53[_0x9e64('0x29')],_0x30ce53['user'],_0x1e6c04,_0x566bfa)[_0x9e64('0x1a')](respondWithFilteredResult(_0x453bcb,_0x1e6c04))[_0x9e64('0x2a')](handleError(_0x453bcb,null));};exports['show']=function(_0x5df9c0,_0x4a45dd){var _0x7d0a56={};if(_0x5df9c0[_0x9e64('0x29')]['type']&&_0x5df9c0[_0x9e64('0x29')]['type']===_0x9e64('0x2b')){_0x7d0a56[_0x9e64('0x2b')]=_0x5df9c0[_0x9e64('0x2c')]['id'];}else{_0x7d0a56['id']=_0x5df9c0[_0x9e64('0x2c')]['id'];}var _0x392d1c={'raw':![],'where':_0x7d0a56},_0x22f34c={};_0x22f34c[_0x9e64('0x2d')]=_['keys'](db[_0x9e64('0x22')][_0x9e64('0x23')]);_0x22f34c[_0x9e64('0x29')]=_[_0x9e64('0x2e')](_0x5df9c0[_0x9e64('0x29')]);_0x22f34c[_0x9e64('0x2f')]=_['intersection'](_0x22f34c[_0x9e64('0x2d')],_0x22f34c[_0x9e64('0x29')]);_0x392d1c[_0x9e64('0x30')]=_[_0x9e64('0x31')](_0x22f34c[_0x9e64('0x2d')],qs[_0x9e64('0x32')](_0x5df9c0[_0x9e64('0x29')][_0x9e64('0x32')]));_0x392d1c[_0x9e64('0x30')]=_0x392d1c[_0x9e64('0x30')]['length']?_0x392d1c[_0x9e64('0x30')]:_0x22f34c[_0x9e64('0x2d')];if(_0x5df9c0[_0x9e64('0x29')][_0x9e64('0x33')]){_0x392d1c[_0x9e64('0x34')]=[{'all':!![]}];}_0x392d1c=_['merge']({},_0x392d1c,_0x5df9c0[_0x9e64('0x35')]);return db[_0x9e64('0x22')][_0x9e64('0x36')](_0x392d1c)[_0x9e64('0x1a')](handleEntityNotFound(_0x4a45dd,null))[_0x9e64('0x1a')](respondWithResult(_0x4a45dd,null))['catch'](handleError(_0x4a45dd,null));};exports[_0x9e64('0x37')]=function(_0x40d5d4,_0x9ce725){return db[_0x9e64('0x22')][_0x9e64('0x37')](_0x40d5d4[_0x9e64('0x38')],{})[_0x9e64('0x1a')](respondWithResult(_0x9ce725,0xc9))[_0x9e64('0x2a')](handleError(_0x9ce725,null));};exports[_0x9e64('0x39')]=function(_0xa11a1f,_0x133461){if(_0xa11a1f[_0x9e64('0x38')]['id']){delete _0xa11a1f[_0x9e64('0x38')]['id'];}return db[_0x9e64('0x22')]['find']({'where':{'id':_0xa11a1f['params']['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x133461,null))[_0x9e64('0x1a')](saveUpdates(_0xa11a1f[_0x9e64('0x38')],null))[_0x9e64('0x1a')](respondWithResult(_0x133461,null))[_0x9e64('0x2a')](handleError(_0x133461,null));};exports[_0x9e64('0x1b')]=function(_0x2a9bec,_0x4ffc33){return db['OpenchannelInteraction']['find']({'where':{'id':_0x2a9bec[_0x9e64('0x2c')]['id']}})['then'](handleEntityNotFound(_0x4ffc33,null))[_0x9e64('0x1a')](removeEntity(_0x4ffc33,null))[_0x9e64('0x2a')](handleError(_0x4ffc33,null));};exports[_0x9e64('0x3a')]=function(_0x3dfd07,_0x64eb71){return db[_0x9e64('0x22')][_0x9e64('0x3a')]()[_0x9e64('0x1a')](respondWithResult(_0x64eb71,null))[_0x9e64('0x2a')](handleError(_0x64eb71,null));};exports['addMessage']=function(_0x7400dd,_0x3424a0){return db[_0x9e64('0x3b')]['find']({'where':{'id':_0x7400dd[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x3424a0,null))[_0x9e64('0x1a')](function(_0x53710c){if(_0x53710c){return _0x53710c[_0x9e64('0x3c')](_0x7400dd[_0x9e64('0x38')][_0x9e64('0x3d')],_[_0x9e64('0x3e')](_0x7400dd['body'],['ids','id'])||{});}})[_0x9e64('0x1a')](respondWithResult(_0x3424a0,null))[_0x9e64('0x2a')](handleError(_0x3424a0,null));};exports[_0x9e64('0x3f')]=function(_0x36b694,_0xeacd34){var _0x5cf660={'raw':![],'where':{}};var _0x27b28a={};var _0x516343={'count':0x0,'rows':[]};return db[_0x9e64('0x22')][_0x9e64('0x40')]({'where':{'id':_0x36b694[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0xeacd34,null))[_0x9e64('0x1a')](function(_0xa363c7){if(_0xa363c7){_0x27b28a['model']=_[_0x9e64('0x2e')](db[_0x9e64('0x3b')][_0x9e64('0x23')]);_0x27b28a[_0x9e64('0x29')]=_[_0x9e64('0x2e')](_0x36b694[_0x9e64('0x29')]);_0x27b28a['filters']=_[_0x9e64('0x31')](_0x27b28a[_0x9e64('0x2d')],_0x27b28a[_0x9e64('0x29')]);_0x5cf660[_0x9e64('0x30')]=_['intersection'](_0x27b28a[_0x9e64('0x2d')],qs[_0x9e64('0x32')](_0x36b694[_0x9e64('0x29')]['fields']));_0x5cf660[_0x9e64('0x30')]=_0x5cf660[_0x9e64('0x30')]['length']?_0x5cf660[_0x9e64('0x30')]:_0x27b28a[_0x9e64('0x2d')];if(!_0x36b694['query'][_0x9e64('0x41')]('nolimit')){_0x5cf660[_0x9e64('0x17')]=qs['limit'](_0x36b694[_0x9e64('0x29')]['limit']);_0x5cf660['offset']=qs[_0x9e64('0x15')](_0x36b694[_0x9e64('0x29')][_0x9e64('0x15')]);}_0x5cf660[_0x9e64('0x42')]=qs[_0x9e64('0x43')](_0x36b694[_0x9e64('0x29')]['sort']);_0x5cf660[_0x9e64('0x44')]=qs[_0x9e64('0x2f')](_['pick'](_0x36b694['query'],_0x27b28a[_0x9e64('0x2f')]));_0x5cf660[_0x9e64('0x44')]['OpenchannelInteractionId']=_0xa363c7['id'];if(_0x36b694[_0x9e64('0x29')]['filter']){_0x5cf660[_0x9e64('0x44')]=_['merge'](_0x5cf660[_0x9e64('0x44')],{'$or':_[_0x9e64('0x45')](_0x5cf660['attributes'],function(_0x25f3cb){var _0x54413d={};_0x54413d[_0x25f3cb]={'$like':'%'+_0x36b694[_0x9e64('0x29')]['filter']+'%'};return _0x54413d;})});}if(_0x36b694[_0x9e64('0x29')][_0x9e64('0x46')]){var _0x1638fd=_0x36b694[_0x9e64('0x29')][_0x9e64('0x46')]['split'](',');var _0x343672={};_0x343672[_0x1638fd[0x0]]={'$gte':moment(_0x1638fd[0x1])[_0x9e64('0x47')](_0x9e64('0x48'))};_0x5cf660[_0x9e64('0x44')]=_[_0x9e64('0x49')](_0x5cf660[_0x9e64('0x44')],_0x343672);}_0x5cf660=_[_0x9e64('0x49')]({},_0x5cf660,_0x36b694[_0x9e64('0x35')]);return db['OpenchannelMessage'][_0x9e64('0x18')]({'where':_0x5cf660[_0x9e64('0x44')]})[_0x9e64('0x1a')](function(_0x319ea9){_0x516343[_0x9e64('0x18')]=_0x319ea9;if(_0x36b694['query'][_0x9e64('0x33')]){_0x5cf660['include']=[{'all':!![]}];}return db[_0x9e64('0x3b')][_0x9e64('0x27')](_0x5cf660);})[_0x9e64('0x1a')](function(_0x2200cc){_0x516343[_0x9e64('0x4a')]=_0x2200cc;return _0x516343;});}})[_0x9e64('0x1a')](respondWithFilteredResult(_0xeacd34,_0x5cf660))['catch'](handleError(_0xeacd34,null));};exports[_0x9e64('0x4b')]=function(_0x3fc0e9,_0x4d86e4){return db[_0x9e64('0x22')]['find']({'where':{'id':_0x3fc0e9[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x4d86e4,null))[_0x9e64('0x1a')](function(_0x402975){if(_0x402975){return _0x402975['setTags'](_0x3fc0e9['body']['ids'],_[_0x9e64('0x3e')](_0x3fc0e9['body'],[_0x9e64('0x3d'),'id'])||{})['spread'](function(){return db[_0x9e64('0x4c')][_0x9e64('0x27')]({'attributes':['id',_0x9e64('0x1f'),_0x9e64('0x4d')],'where':{'id':_0x3fc0e9[_0x9e64('0x38')][_0x9e64('0x3d')]}});})[_0x9e64('0x1a')](function(_0x17e7ab){socket[_0x9e64('0x4e')](_0x9e64('0x4f'),{'id':Number(_0x3fc0e9['params']['id']),'tags':_0x17e7ab||[]});return{'id':Number(_0x3fc0e9['params']['id']),'tags':_0x17e7ab||[]};});}})[_0x9e64('0x1a')](respondWithResult(_0x4d86e4,null))[_0x9e64('0x2a')](handleError(_0x4d86e4,null));};exports['removeTags']=function(_0x48bef4,_0x22f4f4){return db[_0x9e64('0x22')]['find']({'where':{'id':_0x48bef4[_0x9e64('0x2c')]['id']}})[_0x9e64('0x1a')](handleEntityNotFound(_0x22f4f4,null))[_0x9e64('0x1a')](function(_0x5316a5){if(_0x5316a5){return _0x5316a5[_0x9e64('0x50')](_0x48bef4['query'][_0x9e64('0x3d')]);}})[_0x9e64('0x1a')](respondWithStatusCode(_0x22f4f4,null))[_0x9e64('0x2a')](handleError(_0x22f4f4,null));};exports[_0x9e64('0x51')]=function(_0x473b2b,_0x2632d2){var _0x5b1149=moment()[_0x9e64('0x52')]()[_0x9e64('0x53')]();var _0x12811d=path[_0x9e64('0x54')](config[_0x9e64('0x55')],'server',_0x9e64('0x56'),_0x9e64('0x57'));var _0x7195a1=path[_0x9e64('0x54')](config[_0x9e64('0x55')],_0x9e64('0x58'),_0x9e64('0x56'),_0x9e64('0x59'));var _0x518a71=path[_0x9e64('0x54')](_0x12811d,_0x5b1149);var _0x5ac678=util[_0x9e64('0x47')](_0x9e64('0x5a'),_0x473b2b['params']['id'],_0x5b1149);var _0x46aa93=path['join'](_0x12811d,_0x5ac678);var _0x51b3e3=[];_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5c')],'as':_0x9e64('0x5c'),'attributes':['id',_0x9e64('0x5d')],'raw':!![]});_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5e')],'as':'Contact','attributes':['id','firstName',_0x9e64('0x5f')],'raw':!![]});if(_0x473b2b[_0x9e64('0x29')]['attachments']){_0x51b3e3[_0x9e64('0x5b')]({'model':db[_0x9e64('0x60')],'as':_0x9e64('0x60'),'raw':!![]});}var _0x58040c=[{'model':db[_0x9e64('0x3b')],'as':_0x9e64('0x61'),'attributes':['id','body',_0x9e64('0x62'),_0x9e64('0x63'),_0x9e64('0x64'),'read'],'include':_0x51b3e3}];_0x58040c[_0x9e64('0x5b')]({'model':db[_0x9e64('0x65')],'as':_0x9e64('0x66'),'attributes':['id',_0x9e64('0x1f')]});_0x58040c[_0x9e64('0x5b')]({'model':db[_0x9e64('0x5c')],'as':_0x9e64('0x67'),'attributes':['id',_0x9e64('0x5d')]});return db[_0x9e64('0x22')]['find']({'where':{'id':_0x473b2b[_0x9e64('0x2c')]['id']},'include':_0x58040c})[_0x9e64('0x1a')](handleEntityNotFound(_0x2632d2,null))[_0x9e64('0x1a')](function(_0x2e5032){if(_0x2e5032){var _0x35d8fc=_0x2e5032[_0x9e64('0x68')]({'plain':!![]});fs[_0x9e64('0x69')](_0x518a71);var _0xe99d40={'channel':_0x9e64('0x6a'),'account':_0x35d8fc[_0x9e64('0x66')][_0x9e64('0x1f')],'agent':_0x35d8fc['Owner']?_0x35d8fc[_0x9e64('0x67')][_0x9e64('0x5d')]:'N.A.','createdAt':moment(_0x35d8fc['createdAt'])[_0x9e64('0x47')](_0x9e64('0x48'))[_0x9e64('0x53')](),'closedAt':_0x35d8fc['closed']?moment(_0x35d8fc[_0x9e64('0x6b')])[_0x9e64('0x47')](_0x9e64('0x48'))['toString']():'','disposition':_0x35d8fc[_0x9e64('0x6c')],'visibility':_0x35d8fc[_0x9e64('0x6d')]?_0x9e64('0x6e'):'Private','messages':_(_0x35d8fc[_0x9e64('0x61')])[_0x9e64('0x6f')]({'secret':![]})[_0x9e64('0x45')](function(_0x527286){if(_0x527286[_0x9e64('0x60')]){var _0x6413ec=path[_0x9e64('0x54')](_0x7195a1,_0x527286[_0x9e64('0x60')][_0x9e64('0x70')]);if(fs[_0x9e64('0x71')](_0x6413ec)){fs['createReadStream'](_0x6413ec)[_0x9e64('0x72')](fs[_0x9e64('0x73')](path[_0x9e64('0x54')](_0x518a71,_0x527286[_0x9e64('0x60')]['basename'])));}}return{'date':moment(_0x527286[_0x9e64('0x62')])['format'](_0x9e64('0x48'))[_0x9e64('0x53')](),'sender':_0x527286['direction']===_0x9e64('0x74')?_0x527286['User']?_0x527286['User'][_0x9e64('0x5d')]:_0x9e64('0x75'):_0x527286[_0x9e64('0x76')]['firstName']+(_0x527286[_0x9e64('0x76')]['lastName']?'\x20'+_0x527286['Contact']['lastName']:''),'body':_0x527286[_0x9e64('0x60')]?_0x527286['Attachment'][_0x9e64('0x70')]:_0x527286[_0x9e64('0x38')],'direction':_0x527286[_0x9e64('0x63')]===_0x9e64('0x74')?'A':'C','secret':_0x527286[_0x9e64('0x64')],'read':_0x527286[_0x9e64('0x77')],'attachment':_0x527286[_0x9e64('0x60')]};})[_0x9e64('0x78')]()};return ejs[_0x9e64('0x79')](path[_0x9e64('0x54')](config[_0x9e64('0x55')],_0x9e64('0x58'),'views',_0x9e64('0x7a')),{'interaction':_0xe99d40})[_0x9e64('0x1a')](function(_0x5ee1e6){var _0x1a1882=path[_0x9e64('0x54')](_0x518a71,_0x9e64('0x7b')+_0x35d8fc['id']+'-'+_0x5b1149+_0x9e64('0x7c'));var _0x3e086a={'path':_0x1a1882,'channel':'Openchannel','interactionId':_0x35d8fc['id']};return pdf[_0x9e64('0x7d')](_0x5ee1e6,_0x3e086a);})[_0x9e64('0x1a')](function(){return new Promise(function(_0x5ab91d,_0x446e69){zipdir(_0x518a71,{'saveTo':_0x46aa93},function(_0x599bd3,_0x24c297){if(_0x599bd3)return _0x446e69(_0x599bd3);return _0x5ab91d(_0x24c297);});})[_0x9e64('0x1a')](function(){return new Promise(function(_0x3df97c,_0xe22301){rimraf(_0x518a71,function(_0x506d69){if(_0x506d69)_0xe22301(_0x506d69);return _0x3df97c();});});})[_0x9e64('0x1a')](function(){return _0x2632d2['download'](_0x46aa93,_0x5ac678,function(_0x46850d){if(_0x46850d){logger[_0x9e64('0x1d')]('Unable\x20to\x20delete\x20zip\x20file',_0x46850d);}else{fs[_0x9e64('0x7e')](_0x46aa93);}});});});}else{return _0x2632d2[_0x9e64('0x1c')](0xc8);}})[_0x9e64('0x2a')](handleError(_0x2632d2,null));};
\ No newline at end of file
+var _0xb979=['filter','where','$gte','split','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','spread','Tag','color','emit','openchannelInteractionTags:save','removeTags','unix','toString','join','root','server','files','tmp','attachments','format','transcript-%d-%s.zip','User','fullname','CmContact','firstName','lastName','push','Attachment','Messages','createdAt','direction','secret','read','OpenchannelAccount','get','Account','Owner','closed','closedAt','disposition','threadId','Public','Private','basename','existsSync','createReadStream','pipe','System','Contact','out','value','views','transcript-','.pdf','Openchannel','createPdfFromHTML','download','unlinkSync','rimraf','zip-dir','path','ejs','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','then','destroy','end','error','stack','name','send','index','map','OpenchannelInteraction','rawAttributes','fieldName','type','getOptions','findAll','openchannel','query','user','show','from','params','model','keys','filters','intersection','attributes','include','merge','options','find','catch','create','update','body','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','fields','length','nolimit','order','sort','OpenchannelInteractionId'];(function(_0xaae14b,_0x250688){var _0x1c6982=function(_0x4028e5){while(--_0x4028e5){_0xaae14b['push'](_0xaae14b['shift']());}};_0x1c6982(++_0x250688);}(_0xb979,0xc0));var _0x9b97=function(_0xde00e,_0x3a8320){_0xde00e=_0xde00e-0x0;var _0x296e12=_0xb979[_0xde00e];return _0x296e12;};'use strict';var rimraf=require(_0x9b97('0x0'));var zipdir=require(_0x9b97('0x1'));var moment=require('moment');var util=require('util');var path=require(_0x9b97('0x2'));var ejs=require(_0x9b97('0x3'));var fs=require('fs');var _=require('lodash');var Redis=require('ioredis');var interaction=require(_0x9b97('0x4'));var qs=require(_0x9b97('0x5'));var pdf=require(_0x9b97('0x6'));var logger=require(_0x9b97('0x7'))(_0x9b97('0x8'));var config=require(_0x9b97('0x9'));var db=require(_0x9b97('0xa'))['db'];config[_0x9b97('0xb')]=_[_0x9b97('0xc')](config[_0x9b97('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x9b97('0xd'))(new Redis(config['redis']));require('./openchannelInteraction.socket')[_0x9b97('0xe')](socket);function respondWithStatusCode(_0xaff571,_0x5d6a9b){_0x5d6a9b=_0x5d6a9b||0xcc;return function(_0x40dcc5){if(_0x40dcc5){return _0xaff571[_0x9b97('0xf')](_0x5d6a9b);}return _0xaff571[_0x9b97('0x10')](_0x5d6a9b)['end']();};}function respondWithResult(_0x11ed1a,_0x43cacc){_0x43cacc=_0x43cacc||0xc8;return function(_0xd949bd){if(_0xd949bd){return _0x11ed1a[_0x9b97('0x10')](_0x43cacc)[_0x9b97('0x11')](_0xd949bd);}};}function respondWithFilteredResult(_0x36d63d,_0x1c0454){return function(_0x4bc10e){if(_0x4bc10e){var _0x48d7cb=typeof _0x1c0454[_0x9b97('0x12')]==='undefined'&&typeof _0x1c0454[_0x9b97('0x13')]===_0x9b97('0x14');var _0xe68fe0=_0x4bc10e[_0x9b97('0x15')];var _0x1803d8=_0x48d7cb?0x0:_0x1c0454[_0x9b97('0x12')];var _0x293383=_0x48d7cb?_0x4bc10e[_0x9b97('0x15')]:_0x1c0454[_0x9b97('0x12')]+_0x1c0454[_0x9b97('0x13')];var _0x4cdaca;if(_0x293383>=_0xe68fe0){_0x293383=_0xe68fe0;_0x4cdaca=0xc8;}else{_0x4cdaca=0xce;}_0x36d63d[_0x9b97('0x10')](_0x4cdaca);return _0x36d63d[_0x9b97('0x16')](_0x9b97('0x17'),_0x1803d8+'-'+_0x293383+'/'+_0xe68fe0)['json'](_0x4bc10e);}return null;};}function saveUpdates(_0x197782){return function(_0x8858c7){if(_0x8858c7){return _0x8858c7['update'](_0x197782)[_0x9b97('0x18')](function(_0x312e98){return _0x312e98;});}return null;};}function removeEntity(_0x38939e){return function(_0x2b6059){if(_0x2b6059){return _0x2b6059[_0x9b97('0x19')]()[_0x9b97('0x18')](function(){_0x38939e[_0x9b97('0x10')](0xcc)[_0x9b97('0x1a')]();});}};}function handleEntityNotFound(_0x3f5485){return function(_0x1017d9){if(!_0x1017d9){_0x3f5485[_0x9b97('0xf')](0x194);}return _0x1017d9;};}function handleError(_0x24f79c,_0x4e1874){_0x4e1874=_0x4e1874||0x1f4;return function(_0x4f5183){logger[_0x9b97('0x1b')](_0x4f5183[_0x9b97('0x1c')]);if(_0x4f5183['name']){delete _0x4f5183[_0x9b97('0x1d')];}_0x24f79c['status'](_0x4e1874)[_0x9b97('0x1e')](_0x4f5183);};}exports[_0x9b97('0x1f')]=function(_0x261505,_0x509bc9){var _0x43de33={};var _0x47228a=_[_0x9b97('0x20')](db[_0x9b97('0x21')][_0x9b97('0x22')],function(_0xaf4c85){return{'name':_0xaf4c85[_0x9b97('0x23')],'type':_0xaf4c85[_0x9b97('0x24')]['key']};});_0x43de33=qs[_0x9b97('0x25')](_0x47228a,_0x261505);return interaction[_0x9b97('0x26')](_0x9b97('0x27'),_0x261505[_0x9b97('0x28')],_0x261505[_0x9b97('0x29')],_0x43de33,_0x47228a)['then'](respondWithFilteredResult(_0x509bc9,_0x43de33))['catch'](handleError(_0x509bc9,null));};exports[_0x9b97('0x2a')]=function(_0xfc63db,_0x5c8884){var _0x5ceff5={};if(_0xfc63db[_0x9b97('0x28')]['type']&&_0xfc63db[_0x9b97('0x28')]['type']===_0x9b97('0x2b')){_0x5ceff5[_0x9b97('0x2b')]=_0xfc63db[_0x9b97('0x2c')]['id'];}else{_0x5ceff5['id']=_0xfc63db[_0x9b97('0x2c')]['id'];}var _0x220286={'raw':![],'where':_0x5ceff5},_0x20be03={};_0x20be03[_0x9b97('0x2d')]=_['keys'](db['OpenchannelInteraction'][_0x9b97('0x22')]);_0x20be03[_0x9b97('0x28')]=_[_0x9b97('0x2e')](_0xfc63db[_0x9b97('0x28')]);_0x20be03[_0x9b97('0x2f')]=_[_0x9b97('0x30')](_0x20be03[_0x9b97('0x2d')],_0x20be03[_0x9b97('0x28')]);_0x220286[_0x9b97('0x31')]=_[_0x9b97('0x30')](_0x20be03[_0x9b97('0x2d')],qs['fields'](_0xfc63db['query']['fields']));_0x220286[_0x9b97('0x31')]=_0x220286['attributes']['length']?_0x220286[_0x9b97('0x31')]:_0x20be03[_0x9b97('0x2d')];if(_0xfc63db['query']['includeAll']){_0x220286[_0x9b97('0x32')]=[{'all':!![]}];}_0x220286=_[_0x9b97('0x33')]({},_0x220286,_0xfc63db[_0x9b97('0x34')]);return db['OpenchannelInteraction'][_0x9b97('0x35')](_0x220286)[_0x9b97('0x18')](handleEntityNotFound(_0x5c8884,null))[_0x9b97('0x18')](respondWithResult(_0x5c8884,null))[_0x9b97('0x36')](handleError(_0x5c8884,null));};exports[_0x9b97('0x37')]=function(_0x5d2fa9,_0x496f13){return db[_0x9b97('0x21')][_0x9b97('0x37')](_0x5d2fa9['body'],{})['then'](respondWithResult(_0x496f13,0xc9))[_0x9b97('0x36')](handleError(_0x496f13,null));};exports[_0x9b97('0x38')]=function(_0x9a45ac,_0xe0f622){if(_0x9a45ac[_0x9b97('0x39')]['id']){delete _0x9a45ac[_0x9b97('0x39')]['id'];}return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x9a45ac[_0x9b97('0x2c')]['id']}})['then'](handleEntityNotFound(_0xe0f622,null))[_0x9b97('0x18')](saveUpdates(_0x9a45ac[_0x9b97('0x39')],null))[_0x9b97('0x18')](respondWithResult(_0xe0f622,null))[_0x9b97('0x36')](handleError(_0xe0f622,null));};exports[_0x9b97('0x19')]=function(_0x1bf71d,_0x314a7e){return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x1bf71d['params']['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x314a7e,null))[_0x9b97('0x18')](removeEntity(_0x314a7e,null))['catch'](handleError(_0x314a7e,null));};exports['describe']=function(_0xf0c872,_0x3a3e39){return db[_0x9b97('0x21')][_0x9b97('0x3a')]()[_0x9b97('0x18')](respondWithResult(_0x3a3e39,null))[_0x9b97('0x36')](handleError(_0x3a3e39,null));};exports[_0x9b97('0x3b')]=function(_0x4c9087,_0x2ba3d1){return db[_0x9b97('0x3c')][_0x9b97('0x35')]({'where':{'id':_0x4c9087[_0x9b97('0x2c')]['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x2ba3d1,null))['then'](function(_0x59f658){if(_0x59f658){return _0x59f658[_0x9b97('0x3b')](_0x4c9087[_0x9b97('0x39')][_0x9b97('0x3d')],_[_0x9b97('0x3e')](_0x4c9087['body'],[_0x9b97('0x3d'),'id'])||{});}})[_0x9b97('0x18')](respondWithResult(_0x2ba3d1,null))[_0x9b97('0x36')](handleError(_0x2ba3d1,null));};exports[_0x9b97('0x3f')]=function(_0x7faf51,_0x536f8a){var _0x42d75a={'raw':![],'where':{}};var _0x52237a={};var _0x34014e={'count':0x0,'rows':[]};return db[_0x9b97('0x21')]['findOne']({'where':{'id':_0x7faf51['params']['id']}})[_0x9b97('0x18')](handleEntityNotFound(_0x536f8a,null))[_0x9b97('0x18')](function(_0x27058e){if(_0x27058e){_0x52237a[_0x9b97('0x2d')]=_[_0x9b97('0x2e')](db[_0x9b97('0x3c')]['rawAttributes']);_0x52237a[_0x9b97('0x28')]=_[_0x9b97('0x2e')](_0x7faf51[_0x9b97('0x28')]);_0x52237a[_0x9b97('0x2f')]=_[_0x9b97('0x30')](_0x52237a[_0x9b97('0x2d')],_0x52237a[_0x9b97('0x28')]);_0x42d75a[_0x9b97('0x31')]=_[_0x9b97('0x30')](_0x52237a['model'],qs['fields'](_0x7faf51[_0x9b97('0x28')][_0x9b97('0x40')]));_0x42d75a['attributes']=_0x42d75a['attributes'][_0x9b97('0x41')]?_0x42d75a['attributes']:_0x52237a[_0x9b97('0x2d')];if(!_0x7faf51[_0x9b97('0x28')]['hasOwnProperty'](_0x9b97('0x42'))){_0x42d75a['limit']=qs[_0x9b97('0x13')](_0x7faf51['query'][_0x9b97('0x13')]);_0x42d75a[_0x9b97('0x12')]=qs[_0x9b97('0x12')](_0x7faf51['query']['offset']);}_0x42d75a[_0x9b97('0x43')]=qs[_0x9b97('0x44')](_0x7faf51['query'][_0x9b97('0x44')]);_0x42d75a['where']=qs[_0x9b97('0x2f')](_['pick'](_0x7faf51[_0x9b97('0x28')],_0x52237a[_0x9b97('0x2f')]));_0x42d75a['where'][_0x9b97('0x45')]=_0x27058e['id'];if(_0x7faf51[_0x9b97('0x28')][_0x9b97('0x46')]){_0x42d75a[_0x9b97('0x47')]=_[_0x9b97('0x33')](_0x42d75a[_0x9b97('0x47')],{'$or':_[_0x9b97('0x20')](_0x42d75a['attributes'],function(_0x12894e){var _0x58a387={};_0x58a387[_0x12894e]={'$like':'%'+_0x7faf51[_0x9b97('0x28')][_0x9b97('0x46')]+'%'};return _0x58a387;})});}if(_0x7faf51[_0x9b97('0x28')]['$gte']){var _0x305eca=_0x7faf51['query'][_0x9b97('0x48')][_0x9b97('0x49')](',');var _0x4999c5={};_0x4999c5[_0x305eca[0x0]]={'$gte':moment(_0x305eca[0x1])['format'](_0x9b97('0x4a'))};_0x42d75a['where']=_[_0x9b97('0x33')](_0x42d75a[_0x9b97('0x47')],_0x4999c5);}_0x42d75a=_['merge']({},_0x42d75a,_0x7faf51[_0x9b97('0x34')]);return db[_0x9b97('0x3c')]['count']({'where':_0x42d75a[_0x9b97('0x47')]})['then'](function(_0x9de7bc){_0x34014e[_0x9b97('0x15')]=_0x9de7bc;if(_0x7faf51[_0x9b97('0x28')][_0x9b97('0x4b')]){_0x42d75a[_0x9b97('0x32')]=[{'all':!![]}];}return db[_0x9b97('0x3c')][_0x9b97('0x26')](_0x42d75a);})['then'](function(_0x5bb0be){_0x34014e['rows']=_0x5bb0be;return _0x34014e;});}})[_0x9b97('0x18')](respondWithFilteredResult(_0x536f8a,_0x42d75a))[_0x9b97('0x36')](handleError(_0x536f8a,null));};exports[_0x9b97('0x4c')]=function(_0x2ede00,_0x25341f){return db['OpenchannelInteraction'][_0x9b97('0x35')]({'where':{'id':_0x2ede00[_0x9b97('0x2c')]['id']}})['then'](handleEntityNotFound(_0x25341f,null))[_0x9b97('0x18')](function(_0x1e5a65){if(_0x1e5a65){return _0x1e5a65[_0x9b97('0x4d')](_0x2ede00['body'][_0x9b97('0x3d')],_[_0x9b97('0x3e')](_0x2ede00[_0x9b97('0x39')],[_0x9b97('0x3d'),'id'])||{})[_0x9b97('0x4e')](function(){return db[_0x9b97('0x4f')][_0x9b97('0x26')]({'attributes':['id',_0x9b97('0x1d'),_0x9b97('0x50')],'where':{'id':_0x2ede00['body'][_0x9b97('0x3d')]}});})[_0x9b97('0x18')](function(_0x7502c1){socket[_0x9b97('0x51')](_0x9b97('0x52'),{'id':Number(_0x2ede00[_0x9b97('0x2c')]['id']),'tags':_0x7502c1||[]});return{'id':Number(_0x2ede00[_0x9b97('0x2c')]['id']),'tags':_0x7502c1||[]};});}})['then'](respondWithResult(_0x25341f,null))['catch'](handleError(_0x25341f,null));};exports[_0x9b97('0x53')]=function(_0x5b2837,_0x1a7303){return db[_0x9b97('0x21')][_0x9b97('0x35')]({'where':{'id':_0x5b2837['params']['id']}})['then'](handleEntityNotFound(_0x1a7303,null))[_0x9b97('0x18')](function(_0x10f660){if(_0x10f660){return _0x10f660[_0x9b97('0x53')](_0x5b2837[_0x9b97('0x28')][_0x9b97('0x3d')]);}})[_0x9b97('0x18')](respondWithStatusCode(_0x1a7303,null))[_0x9b97('0x36')](handleError(_0x1a7303,null));};exports['download']=function(_0x10e492,_0x20b22e){var _0x256411=moment()[_0x9b97('0x54')]()[_0x9b97('0x55')]();var _0x1f21c0=path[_0x9b97('0x56')](config[_0x9b97('0x57')],_0x9b97('0x58'),_0x9b97('0x59'),_0x9b97('0x5a'));var _0x4bd033=path[_0x9b97('0x56')](config[_0x9b97('0x57')],'server','files',_0x9b97('0x5b'));var _0x21bcae=path[_0x9b97('0x56')](_0x1f21c0,_0x256411);var _0x41b6e5=util[_0x9b97('0x5c')](_0x9b97('0x5d'),_0x10e492['params']['id'],_0x256411);var _0x29213e=path[_0x9b97('0x56')](_0x1f21c0,_0x41b6e5);var _0xbe2665=[];_0xbe2665['push']({'model':db[_0x9b97('0x5e')],'as':'User','attributes':['id',_0x9b97('0x5f')],'raw':!![]});_0xbe2665['push']({'model':db[_0x9b97('0x60')],'as':'Contact','attributes':['id',_0x9b97('0x61'),_0x9b97('0x62')],'raw':!![]});if(_0x10e492['query'][_0x9b97('0x5b')]){_0xbe2665[_0x9b97('0x63')]({'model':db['Attachment'],'as':_0x9b97('0x64'),'raw':!![]});}var _0x2139fc=[{'model':db[_0x9b97('0x3c')],'as':_0x9b97('0x65'),'attributes':['id',_0x9b97('0x39'),_0x9b97('0x66'),_0x9b97('0x67'),_0x9b97('0x68'),_0x9b97('0x69')],'include':_0xbe2665}];_0x2139fc[_0x9b97('0x63')]({'model':db[_0x9b97('0x6a')],'as':'Account','attributes':['id',_0x9b97('0x1d')]});_0x2139fc[_0x9b97('0x63')]({'model':db[_0x9b97('0x5e')],'as':'Owner','attributes':['id',_0x9b97('0x5f')]});return db[_0x9b97('0x21')][_0x9b97('0x35')]({'where':{'id':_0x10e492[_0x9b97('0x2c')]['id']},'include':_0x2139fc})['then'](handleEntityNotFound(_0x20b22e,null))['then'](function(_0x4de364){if(_0x4de364){var _0x23c2a4=_0x4de364[_0x9b97('0x6b')]({'plain':!![]});fs['mkdirSync'](_0x21bcae);var _0x3096eb={'channel':'Openchannel','account':_0x23c2a4[_0x9b97('0x6c')][_0x9b97('0x1d')],'agent':_0x23c2a4['Owner']?_0x23c2a4[_0x9b97('0x6d')][_0x9b97('0x5f')]:'N.A.','createdAt':moment(_0x23c2a4[_0x9b97('0x66')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')](),'closedAt':_0x23c2a4[_0x9b97('0x6e')]?moment(_0x23c2a4[_0x9b97('0x6f')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')]():'','disposition':_0x23c2a4[_0x9b97('0x70')],'visibility':_0x23c2a4[_0x9b97('0x71')]?_0x9b97('0x72'):_0x9b97('0x73'),'messages':_(_0x23c2a4[_0x9b97('0x65')])[_0x9b97('0x46')]({'secret':![]})['map'](function(_0x52665f){if(_0x52665f[_0x9b97('0x64')]){var _0x2964ca=path[_0x9b97('0x56')](_0x4bd033,_0x52665f[_0x9b97('0x64')][_0x9b97('0x74')]);if(fs[_0x9b97('0x75')](_0x2964ca)){fs[_0x9b97('0x76')](_0x2964ca)[_0x9b97('0x77')](fs['createWriteStream'](path[_0x9b97('0x56')](_0x21bcae,_0x52665f['Attachment']['basename'])));}}return{'date':moment(_0x52665f[_0x9b97('0x66')])[_0x9b97('0x5c')](_0x9b97('0x4a'))[_0x9b97('0x55')](),'sender':_0x52665f['direction']==='out'?_0x52665f[_0x9b97('0x5e')]?_0x52665f[_0x9b97('0x5e')][_0x9b97('0x5f')]:_0x9b97('0x78'):_0x52665f[_0x9b97('0x79')][_0x9b97('0x61')]+(_0x52665f[_0x9b97('0x79')]['lastName']?'\x20'+_0x52665f[_0x9b97('0x79')]['lastName']:''),'body':_0x52665f[_0x9b97('0x64')]?_0x52665f[_0x9b97('0x64')][_0x9b97('0x74')]:_0x52665f['body'],'direction':_0x52665f[_0x9b97('0x67')]===_0x9b97('0x7a')?'A':'C','secret':_0x52665f[_0x9b97('0x68')],'read':_0x52665f[_0x9b97('0x69')],'attachment':_0x52665f[_0x9b97('0x64')]};})[_0x9b97('0x7b')]()};return ejs['renderFile'](path[_0x9b97('0x56')](config[_0x9b97('0x57')],_0x9b97('0x58'),_0x9b97('0x7c'),'downloadInteraction.ejs'),{'interaction':_0x3096eb})['then'](function(_0x29fad6){var _0x2bb36d=path[_0x9b97('0x56')](_0x21bcae,_0x9b97('0x7d')+_0x23c2a4['id']+'-'+_0x256411+_0x9b97('0x7e'));var _0xe235f={'path':_0x2bb36d,'channel':_0x9b97('0x7f'),'interactionId':_0x23c2a4['id']};return pdf[_0x9b97('0x80')](_0x29fad6,_0xe235f);})[_0x9b97('0x18')](function(){return new Promise(function(_0x194e24,_0x37f787){zipdir(_0x21bcae,{'saveTo':_0x29213e},function(_0x440bf3,_0x4d3a6d){if(_0x440bf3)return _0x37f787(_0x440bf3);return _0x194e24(_0x4d3a6d);});})[_0x9b97('0x18')](function(){return new Promise(function(_0x49f32f,_0x1db887){rimraf(_0x21bcae,function(_0x53a85e){if(_0x53a85e)_0x1db887(_0x53a85e);return _0x49f32f();});});})[_0x9b97('0x18')](function(){return _0x20b22e[_0x9b97('0x81')](_0x29213e,_0x41b6e5,function(_0xfeb6b9){if(_0xfeb6b9){logger['error']('Unable\x20to\x20delete\x20zip\x20file',_0xfeb6b9);}else{fs[_0x9b97('0x82')](_0x29213e);}});});});}else{return _0x20b22e[_0x9b97('0xf')](0xc8);}})[_0x9b97('0x36')](handleError(_0x20b22e,null));};
\ No newline at end of file
index 60b5243..e966b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31fe=['getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','events','OpenchannelInteraction','../../mysqldb','OpenchannelMessage','setMaxListeners','save','remove'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x31fe,0x173));var _0xe31f=function(_0x127ec5,_0xbc3cd0){_0x127ec5=_0x127ec5-0x0;var _0x3f5c20=_0x31fe[_0x127ec5];return _0x3f5c20;};'use strict';var EventEmitter=require(_0xe31f('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db'][_0xe31f('0x1')];var OpenchannelMessage=require(_0xe31f('0x2'))['db'][_0xe31f('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xe31f('0x4')](0x0);var events={'afterCreate':_0xe31f('0x5'),'afterUpdate':'update','afterDestroy':_0xe31f('0x6')};function emitEvent(_0xea53d8){return function(_0x89f77c,_0x3a3d36,_0x1a27cf){_0x89f77c[_0xe31f('0x7')]({'attributes':['id'],'raw':!![]})[_0xe31f('0x8')](function(_0x2c6a40){_0x89f77c[_0xe31f('0x9')](_0xe31f('0xa'),_0x2c6a40[_0xe31f('0xb')](function(_0x4dfb0d){return{'id':_0x4dfb0d['id']};}));return OpenchannelMessage[_0xe31f('0xc')]({'where':{'OpenchannelInteractionId':_0x89f77c['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe31f('0x8')](function(_0x7d6d5){_0x89f77c[_0xe31f('0x9')](_0xe31f('0xd'),_0x7d6d5[_0xe31f('0xe')]);OpenchannelInteractionEvents['emit'](_0xea53d8+':'+_0x89f77c['id'],_0x89f77c);OpenchannelInteractionEvents[_0xe31f('0xf')](_0xea53d8,_0x89f77c);_0x1a27cf(null);})[_0xe31f('0x10')](_0x1a27cf(null));};}for(var e in events){if(events[_0xe31f('0x11')](e)){var event=events[e];OpenchannelInteraction['hook'](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x3fb9=['save','update','remove','then','setDataValue','Users','map','findAll','length','emit','catch','hook','events','OpenchannelMessage'];(function(_0x4b8447,_0x8d0569){var _0x5292d4=function(_0x204913){while(--_0x204913){_0x4b8447['push'](_0x4b8447['shift']());}};_0x5292d4(++_0x8d0569);}(_0x3fb9,0x1b0));var _0x93fb=function(_0x269bdc,_0x567933){_0x269bdc=_0x269bdc-0x0;var _0x647d83=_0x3fb9[_0x269bdc];return _0x647d83;};'use strict';var EventEmitter=require(_0x93fb('0x0'));var OpenchannelInteraction=require('../../mysqldb')['db']['OpenchannelInteraction'];var OpenchannelMessage=require('../../mysqldb')['db'][_0x93fb('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x93fb('0x2'),'afterUpdate':_0x93fb('0x3'),'afterDestroy':_0x93fb('0x4')};function emitEvent(_0x322b5a){return function(_0x2be6e0,_0x1031f1,_0x37fb5d){_0x2be6e0['getUsers']({'attributes':['id'],'raw':!![]})[_0x93fb('0x5')](function(_0x359c33){_0x2be6e0[_0x93fb('0x6')](_0x93fb('0x7'),_0x359c33[_0x93fb('0x8')](function(_0x235a72){return{'id':_0x235a72['id']};}));return OpenchannelMessage[_0x93fb('0x9')]({'where':{'OpenchannelInteractionId':_0x2be6e0['id'],'direction':'in','read':![]},'raw':!![]});})[_0x93fb('0x5')](function(_0x150826){_0x2be6e0[_0x93fb('0x6')]('unreadMessages',_0x150826[_0x93fb('0xa')]);OpenchannelInteractionEvents[_0x93fb('0xb')](_0x322b5a+':'+_0x2be6e0['id'],_0x2be6e0);OpenchannelInteractionEvents[_0x93fb('0xb')](_0x322b5a,_0x2be6e0);_0x37fb5d(null);})[_0x93fb('0xc')](_0x37fb5d(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0x93fb('0xd')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
index d904c28..8c0ce2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d0=['OpenchannelInteraction','utf8mb4','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelInteraction.attributes','exports'];(function(_0x254d9f,_0x54ddb5){var _0x1eedb9=function(_0x2d05f1){while(--_0x2d05f1){_0x254d9f['push'](_0x254d9f['shift']());}};_0x1eedb9(++_0x54ddb5);}(_0x41d0,0x1c6));var _0x041d=function(_0x175f79,_0x7fed9){_0x175f79=_0x175f79-0x0;var _0x5005da=_0x41d0[_0x175f79];return _0x5005da;};'use strict';var _=require(_0x041d('0x0'));var util=require(_0x041d('0x1'));var logger=require(_0x041d('0x2'))(_0x041d('0x3'));var moment=require('moment');var BPromise=require(_0x041d('0x4'));var rp=require(_0x041d('0x5'));var fs=require('fs');var path=require(_0x041d('0x6'));var rimraf=require(_0x041d('0x7'));var config=require(_0x041d('0x8'));var attributes=require(_0x041d('0x9'));module[_0x041d('0xa')]=function(_0x14907f,_0x196419){return _0x14907f['define'](_0x041d('0xb'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x041d('0xc'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0xd7e3b6,_0x965a31,_0x556017){if(_0xd7e3b6['changed']('closed')){_0xd7e3b6[_0x041d('0xd')]=moment()['format'](_0x041d('0xe'));}_0x556017(null,_0xd7e3b6);}}});};
\ No newline at end of file
+var _0x8bdc=['../../config/logger','rimraf','../../config/environment','OpenchannelInteraction','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','closed','closedAt','format','lodash'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8bdc,0x11d));var _0xc8bd=function(_0x467eed,_0x35b22f){_0x467eed=_0x467eed-0x0;var _0x2430d0=_0x8bdc[_0x467eed];return _0x2430d0;};'use strict';var _=require(_0xc8bd('0x0'));var util=require('util');var logger=require(_0xc8bd('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xc8bd('0x2'));var config=require(_0xc8bd('0x3'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x2ad837,_0x566424){return _0x2ad837['define'](_0xc8bd('0x4'),attributes,{'tableName':_0xc8bd('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc8bd('0x6'),'collate':_0xc8bd('0x7'),'hooks':{'beforeUpdate':function(_0x1cfef4,_0x1a4a0f,_0x204bd3){if(_0x1cfef4['changed'](_0xc8bd('0x8'))){_0x1cfef4[_0xc8bd('0x9')]=moment()[_0xc8bd('0xa')]('YYYY-MM-DD\x20HH:mm:ss');}_0x204bd3(null,_0x1cfef4);}}});};
\ No newline at end of file
index bbdab51..b47a6bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9010=['register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','UpdateOpenchannelInteraction','OpenchannelInteraction','update','body','raw','options','where','attributes','AddTagsToOpenchannelInteraction','addTags','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./openchannelInteraction.socket'];(function(_0x9ace37,_0x4d1159){var _0x23ecc0=function(_0xda11a){while(--_0xda11a){_0x9ace37['push'](_0x9ace37['shift']());}};_0x23ecc0(++_0x4d1159);}(_0x9010,0x1dd));var _0x0901=function(_0xf00f1a,_0x373169){_0xf00f1a=_0xf00f1a-0x0;var _0x2051d7=_0x9010[_0xf00f1a];return _0x2051d7;};'use strict';var _=require(_0x0901('0x0'));var util=require(_0x0901('0x1'));var moment=require(_0x0901('0x2'));var BPromise=require(_0x0901('0x3'));var rs=require(_0x0901('0x4'));var fs=require('fs');var Redis=require(_0x0901('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x0901('0x6'))(_0x0901('0x7'));var config=require(_0x0901('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0901('0x9')][_0x0901('0xa')]({'port':0x232a});config[_0x0901('0xb')]=_['defaults'](config[_0x0901('0xb')],{'host':_0x0901('0xc'),'port':0x18eb});var socket=require(_0x0901('0xd'))(new Redis(config['redis']));require(_0x0901('0xe'))[_0x0901('0xf')](socket);function respondWithRpcPromise(_0x45ab44,_0x253529,_0x12226c){return new BPromise(function(_0x373443,_0x17bfb7){return client[_0x0901('0x10')](_0x45ab44,_0x12226c)[_0x0901('0x11')](function(_0x3d3609){logger[_0x0901('0x12')](_0x0901('0x13'),_0x253529,'request\x20sent');logger[_0x0901('0x14')]('OpenchannelInteraction,\x20%s,\x20%s,\x20%s',_0x253529,_0x0901('0x15'),JSON[_0x0901('0x16')](_0x3d3609));if(_0x3d3609[_0x0901('0x17')]){if(_0x3d3609[_0x0901('0x17')][_0x0901('0x18')]===0x1f4){logger['error'](_0x0901('0x13'),_0x253529,_0x3d3609[_0x0901('0x17')][_0x0901('0x19')]);return _0x17bfb7(_0x3d3609[_0x0901('0x17')][_0x0901('0x19')]);}logger[_0x0901('0x17')]('OpenchannelInteraction,\x20%s,\x20%s',_0x253529,_0x3d3609[_0x0901('0x17')][_0x0901('0x19')]);return _0x373443(_0x3d3609[_0x0901('0x17')]['message']);}else{logger[_0x0901('0x12')](_0x0901('0x13'),_0x253529,'request\x20sent');_0x373443(_0x3d3609[_0x0901('0x1a')][_0x0901('0x19')]);}})[_0x0901('0x1b')](function(_0x1aa4e4){logger['error'](_0x0901('0x13'),_0x253529,_0x1aa4e4);_0x17bfb7(_0x1aa4e4);});});}exports[_0x0901('0x1c')]=function(_0x2f0502){var _0x166f8c=this;return new Promise(function(_0x40b449,_0x28425f){return db[_0x0901('0x1d')][_0x0901('0x1e')](_0x2f0502[_0x0901('0x1f')],{'raw':_0x2f0502['options']?_0x2f0502['options'][_0x0901('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2f0502[_0x0901('0x21')]?_0x2f0502[_0x0901('0x21')][_0x0901('0x22')]||null:null,'attributes':_0x2f0502[_0x0901('0x21')]?_0x2f0502[_0x0901('0x21')][_0x0901('0x23')]||null:null,'limit':_0x2f0502['options']?_0x2f0502[_0x0901('0x21')]['limit']||null:null})[_0x0901('0x11')](function(_0x2852c7){logger[_0x0901('0x12')](_0x0901('0x1c'),_0x2f0502);logger[_0x0901('0x14')](_0x0901('0x1c'),_0x2f0502,JSON['stringify'](_0x2852c7));_0x40b449(_0x2852c7);})['catch'](function(_0x104d65){logger[_0x0901('0x17')](_0x0901('0x1c'),_0x104d65[_0x0901('0x19')],_0x2f0502);_0x28425f(_0x166f8c[_0x0901('0x17')](0x1f4,_0x104d65['message']));});});};exports[_0x0901('0x24')]=function(_0x29761d){return new Promise(function(_0x4d801c,_0x1acea4){return db['OpenchannelInteraction']['find']({'where':_0x29761d['options']?_0x29761d['options'][_0x0901('0x22')]||null:null})[_0x0901('0x11')](function(_0x1607f2){if(_0x1607f2){return _0x1607f2[_0x0901('0x25')](_0x29761d['body']['ids'],_['omit'](_0x29761d[_0x0901('0x1f')],[_0x0901('0x26'),'id'])||{});}})[_0x0901('0x27')](function(_0x275004){logger['info'](_0x0901('0x28'),_0x29761d);logger['debug']('AddTags',_0x29761d,JSON[_0x0901('0x16')](_0x275004));_0x4d801c(_0x275004);})['catch'](function(_0xcbef9){logger[_0x0901('0x17')](_0x0901('0x28'),_0xcbef9[_0x0901('0x19')],_0x29761d);_0x1acea4(_this['error'](0x1f4,_0xcbef9[_0x0901('0x19')]));});});};
\ No newline at end of file
+var _0xc3be=['OpenchannelInteraction','update','body','options','where','limit','UpdateOpenchannelInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','defaults','localhost','socket.io-emitter','redis','./openchannelInteraction.socket','register','request','then','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2b0ded,_0x41c51a){var _0x33565c=function(_0x576546){while(--_0x576546){_0x2b0ded['push'](_0x2b0ded['shift']());}};_0x33565c(++_0x41c51a);}(_0xc3be,0x64));var _0xec3b=function(_0x3fbbdf,_0x168c77){_0x3fbbdf=_0x3fbbdf-0x0;var _0x5677df=_0xc3be[_0x3fbbdf];return _0x5677df;};'use strict';var _=require(_0xec3b('0x0'));var util=require(_0xec3b('0x1'));var moment=require(_0xec3b('0x2'));var BPromise=require(_0xec3b('0x3'));var rs=require(_0xec3b('0x4'));var fs=require('fs');var Redis=require(_0xec3b('0x5'));var db=require(_0xec3b('0x6'))['db'];var utils=require(_0xec3b('0x7'));var logger=require(_0xec3b('0x8'))(_0xec3b('0x9'));var config=require(_0xec3b('0xa'));var jayson=require(_0xec3b('0xb'));var client=jayson['client'][_0xec3b('0xc')]({'port':0x232a});config['redis']=_[_0xec3b('0xd')](config['redis'],{'host':_0xec3b('0xe'),'port':0x18eb});var socket=require(_0xec3b('0xf'))(new Redis(config[_0xec3b('0x10')]));require(_0xec3b('0x11'))[_0xec3b('0x12')](socket);function respondWithRpcPromise(_0x3dcdad,_0x371943,_0x3be263){return new BPromise(function(_0x509aa5,_0x2153be){return client[_0xec3b('0x13')](_0x3dcdad,_0x3be263)[_0xec3b('0x14')](function(_0x4c73d1){logger[_0xec3b('0x15')](_0xec3b('0x16'),_0x371943,_0xec3b('0x17'));logger[_0xec3b('0x18')](_0xec3b('0x19'),_0x371943,_0xec3b('0x17'),JSON[_0xec3b('0x1a')](_0x4c73d1));if(_0x4c73d1['error']){if(_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1c')]===0x1f4){logger[_0xec3b('0x1b')](_0xec3b('0x16'),_0x371943,_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1d')]);return _0x2153be(_0x4c73d1['error'][_0xec3b('0x1d')]);}logger[_0xec3b('0x1b')](_0xec3b('0x16'),_0x371943,_0x4c73d1['error']['message']);return _0x509aa5(_0x4c73d1[_0xec3b('0x1b')][_0xec3b('0x1d')]);}else{logger[_0xec3b('0x15')](_0xec3b('0x16'),_0x371943,_0xec3b('0x17'));_0x509aa5(_0x4c73d1[_0xec3b('0x1e')][_0xec3b('0x1d')]);}})[_0xec3b('0x1f')](function(_0x583a35){logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x371943,_0x583a35);_0x2153be(_0x583a35);});});}exports['UpdateOpenchannelInteraction']=function(_0x5c3439){var _0x18ad2b=this;return new Promise(function(_0x32b330,_0x419f80){return db[_0xec3b('0x20')][_0xec3b('0x21')](_0x5c3439[_0xec3b('0x22')],{'raw':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c3439[_0xec3b('0x23')]?_0x5c3439['options'][_0xec3b('0x24')]||null:null,'attributes':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')]['attributes']||null:null,'limit':_0x5c3439[_0xec3b('0x23')]?_0x5c3439[_0xec3b('0x23')][_0xec3b('0x25')]||null:null})[_0xec3b('0x14')](function(_0x49c122){logger[_0xec3b('0x15')](_0xec3b('0x26'),_0x5c3439);logger['debug'](_0xec3b('0x26'),_0x5c3439,JSON[_0xec3b('0x1a')](_0x49c122));_0x32b330(_0x49c122);})[_0xec3b('0x1f')](function(_0x2852eb){logger[_0xec3b('0x1b')](_0xec3b('0x26'),_0x2852eb[_0xec3b('0x1d')],_0x5c3439);_0x419f80(_0x18ad2b[_0xec3b('0x1b')](0x1f4,_0x2852eb[_0xec3b('0x1d')]));});});};exports['AddTagsToOpenchannelInteraction']=function(_0x408eed){return new Promise(function(_0xd42e71,_0x552472){return db['OpenchannelInteraction'][_0xec3b('0x27')]({'where':_0x408eed[_0xec3b('0x23')]?_0x408eed[_0xec3b('0x23')][_0xec3b('0x24')]||null:null})['then'](function(_0x566575){if(_0x566575){return _0x566575[_0xec3b('0x28')](_0x408eed[_0xec3b('0x22')][_0xec3b('0x29')],_[_0xec3b('0x2a')](_0x408eed[_0xec3b('0x22')],[_0xec3b('0x29'),'id'])||{});}})['spread'](function(_0x53ed85){logger[_0xec3b('0x15')](_0xec3b('0x2b'),_0x408eed);logger['debug'](_0xec3b('0x2b'),_0x408eed,JSON['stringify'](_0x53ed85));_0xd42e71(_0x53ed85);})[_0xec3b('0x1f')](function(_0x3abc01){logger[_0xec3b('0x1b')](_0xec3b('0x2b'),_0x3abc01[_0xec3b('0x1d')],_0x408eed);_0x552472(_this['error'](0x1f4,_0x3abc01[_0xec3b('0x1d')]));});});};
\ No newline at end of file
index 4063d8c..e2001c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f4f=['openchannelInteraction:','./openchannelInteraction.events','update','emit','register','length'];(function(_0xcfe86e,_0x369338){var _0x244a5a=function(_0x479312){while(--_0x479312){_0xcfe86e['push'](_0xcfe86e['shift']());}};_0x244a5a(++_0x369338);}(_0x3f4f,0x139));var _0xf3f4=function(_0x39700a,_0x127c4e){_0x39700a=_0x39700a-0x0;var _0x30310f=_0x3f4f[_0x39700a];return _0x30310f;};'use strict';var OpenchannelInteractionEvents=require(_0xf3f4('0x0'));var events=['save','remove',_0xf3f4('0x1')];function createListener(_0x3e5637,_0x104932){return function(_0x4ba2ff){_0x104932[_0xf3f4('0x2')](_0x3e5637,_0x4ba2ff);};}function removeListener(_0x4bbdef,_0x5ed10e){return function(){OpenchannelInteractionEvents['removeListener'](_0x4bbdef,_0x5ed10e);};}exports[_0xf3f4('0x3')]=function(_0x2b55ba){for(var _0xa96d48=0x0,_0x563b97=events[_0xf3f4('0x4')];_0xa96d48<_0x563b97;_0xa96d48++){var _0x4e7b50=events[_0xa96d48];var _0x96ca4d=createListener(_0xf3f4('0x5')+_0x4e7b50,_0x2b55ba);OpenchannelInteractionEvents['on'](_0x4e7b50,_0x96ca4d);}};
\ No newline at end of file
+var _0xa86d=['update','emit','register','save','remove'];(function(_0x527379,_0x3ec58d){var _0x219af0=function(_0xf7144){while(--_0xf7144){_0x527379['push'](_0x527379['shift']());}};_0x219af0(++_0x3ec58d);}(_0xa86d,0x166));var _0xda86=function(_0x3d7eaa,_0x13c085){_0x3d7eaa=_0x3d7eaa-0x0;var _0x41255e=_0xa86d[_0x3d7eaa];return _0x41255e;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0xda86('0x0'),_0xda86('0x1'),_0xda86('0x2')];function createListener(_0xf6efa9,_0x23673d){return function(_0x4f619e){_0x23673d[_0xda86('0x3')](_0xf6efa9,_0x4f619e);};}function removeListener(_0x2a4d07,_0x2dfaa8){return function(){OpenchannelInteractionEvents['removeListener'](_0x2a4d07,_0x2dfaa8);};}exports[_0xda86('0x4')]=function(_0x4a117e){for(var _0x435e38=0x0,_0x1c2d83=events['length'];_0x435e38<_0x1c2d83;_0x435e38++){var _0x398e4d=events[_0x435e38];var _0x323789=createListener('openchannelInteraction:'+_0x398e4d,_0x4a117e);OpenchannelInteractionEvents['on'](_0x398e4d,_0x323789);}};
\ No newline at end of file
index 31a4aab..4c08ac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['index','/describe','show','post','isAuthenticated','tracked','openchannel','openchannelmessage:create','update','put','/:id/accept','accept','reject','delete','/:id','destroy','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelMessage.controller','get'];(function(_0x43b681,_0xd40e73){var _0x41ffa0=function(_0x32d350){while(--_0x32d350){_0x43b681['push'](_0x43b681['shift']());}};_0x41ffa0(++_0xd40e73);}(_0xa9e0,0x123));var _0x0a9e=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0xa9e0[_0x134c2e];return _0x2825db;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),interaction[_0x0a9e('0xe')](_0x0a9e('0xf'),_0x0a9e('0x10')),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0x11')]);router[_0x0a9e('0x12')](_0x0a9e('0x13'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x14')]);router[_0x0a9e('0x12')]('/:id/reject',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x15')]);router[_0x0a9e('0x16')](_0x0a9e('0x17'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x9c44=['index','get','/describe','/:id','show','tracked','openchannel','create','put','update','accept','/:id/reject','reject','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./openchannelMessage.controller','isAuthenticated'];(function(_0x39ac6e,_0x3d9e6d){var _0x789fea=function(_0x4e6d42){while(--_0x4e6d42){_0x39ac6e['push'](_0x39ac6e['shift']());}};_0x789fea(++_0x3d9e6d);}(_0x9c44,0x178));var _0x49c4=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x9c44[_0xfae23b];return _0x200640;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['describe']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['post']('/',auth['isAuthenticated'](),interaction[_0x49c4('0xd')](_0x49c4('0xe'),'openchannelmessage:create'),controller[_0x49c4('0xf')]);router[_0x49c4('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x49c4('0x11')]);router[_0x49c4('0x10')]('/:id/accept',auth[_0x49c4('0x7')](),controller[_0x49c4('0x12')]);router['put'](_0x49c4('0x13'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);router[_0x49c4('0x15')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x16')]);module[_0x49c4('0x17')]=router;
\ No newline at end of file
index b305b3f..4cd6dba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f4c=['out','DATE','sequelize','exports','TEXT','medium','BOOLEAN'];(function(_0x3c5ceb,_0xafb909){var _0x5e6d75=function(_0x36f05e){while(--_0x36f05e){_0x3c5ceb['push'](_0x3c5ceb['shift']());}};_0x5e6d75(++_0xafb909);}(_0x8f4c,0x113));var _0xc8f4=function(_0x577a2e,_0x3816f0){_0x577a2e=_0x577a2e-0x0;var _0x3ac138=_0x8f4c[_0x577a2e];return _0x3ac138;};'use strict';var Sequelize=require(_0xc8f4('0x0'));module[_0xc8f4('0x1')]={'body':{'type':Sequelize[_0xc8f4('0x2')](_0xc8f4('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xc8f4('0x4')],'defaultValue':![]},'secret':{'type':Sequelize[_0xc8f4('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc8f4('0x5')),'defaultValue':_0xc8f4('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc8f4('0x6')]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xc8f4('0x2')]}};
\ No newline at end of file
+var _0x117c=['ENUM','out','DATE','STRING','TEXT','medium'];(function(_0x29d94e,_0xf386d6){var _0x106237=function(_0x327501){while(--_0x327501){_0x29d94e['push'](_0x29d94e['shift']());}};_0x106237(++_0xf386d6);}(_0x117c,0x71));var _0xc117=function(_0x194d61,_0x2a1696){_0x194d61=_0x194d61-0x0;var _0x16c05b=_0x117c[_0x194d61];return _0x16c05b;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize['TEXT'](_0xc117('0x0')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0xc117('0x1')]('in',_0xc117('0x2')),'defaultValue':_0xc117('0x2'),'allowNull':![]},'readAt':{'type':Sequelize[_0xc117('0x3')]},'providerName':{'type':Sequelize[_0xc117('0x4')]},'providerResponse':{'type':Sequelize[_0xc117('0x5')]}};
\ No newline at end of file
index 18d2427..6def80d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c2c=['EventManager','acceptmessage','openchannel','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','sequelize','Sequelize','contact','User','SIP/%s','event','rejectmessage','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','OpenchannelMessage,\x20%s,\x20%s,\x20%s','code','error','message','result','catch','status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','stack','name','send','map','model','keys','intersection','query','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','OpenchannelMessage','rawAttributes','length','create','body','find','describe','openchannel-interactions','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteraction','OpenchannelInteractionId','read1stAt','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','stringify','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','QueryTypes','SELECT','fullname','email','internal','manual','interface','channel','motionChannel'];(function(_0x527220,_0x29484a){var _0x2b3efb=function(_0x1e6972){while(--_0x1e6972){_0x527220['push'](_0x527220['shift']());}};_0x2b3efb(++_0x29484a);}(_0x6c2c,0x8e));var _0xc6c2=function(_0x2ad37,_0x1a781f){_0x2ad37=_0x2ad37-0x0;var _0x2a9b14=_0x6c2c[_0x2ad37];return _0x2a9b14;};'use strict';var emlformat=require(_0xc6c2('0x0'));var rimraf=require(_0xc6c2('0x1'));var zipdir=require(_0xc6c2('0x2'));var jsonpatch=require(_0xc6c2('0x3'));var rp=require(_0xc6c2('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc6c2('0x5'));var util=require(_0xc6c2('0x6'));var path=require(_0xc6c2('0x7'));var sox=require(_0xc6c2('0x8'));var csv=require(_0xc6c2('0x9'));var ejs=require(_0xc6c2('0xa'));var fs=require('fs');var fs_extra=require(_0xc6c2('0xb'));var _=require('lodash');var squel=require(_0xc6c2('0xc'));var crypto=require(_0xc6c2('0xd'));var jsforce=require(_0xc6c2('0xe'));var deskjs=require(_0xc6c2('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc6c2('0x10'));var Papa=require(_0xc6c2('0x11'));var Redis=require(_0xc6c2('0x12'));var authService=require(_0xc6c2('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc6c2('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc6c2('0x15'))('api');var utils=require(_0xc6c2('0x16'));var config=require(_0xc6c2('0x17'));var licenseUtil=require(_0xc6c2('0x18'));var db=require(_0xc6c2('0x19'))['db'];config[_0xc6c2('0x1a')]=_['defaults'](config[_0xc6c2('0x1a')],{'host':_0xc6c2('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc6c2('0x1a')]));require('./openchannelMessage.socket')['register'](socket);var jayson=require(_0xc6c2('0x1c'));var client=jayson[_0xc6c2('0x1d')][_0xc6c2('0x1e')]({'port':0x232c});var client9002=jayson[_0xc6c2('0x1d')][_0xc6c2('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x16ed10,_0x513adc,_0x56988b,_0x4875c7){return new BPromise(function(_0x39db89,_0x35f767){var _0xa392d4=_0x4875c7||client;return _0xa392d4['request'](_0x16ed10,_0x56988b)[_0xc6c2('0x1f')](function(_0x2e55e3){logger[_0xc6c2('0x20')](_0xc6c2('0x21'),_0x513adc,_0xc6c2('0x22'));logger['debug'](_0xc6c2('0x23'),_0x513adc,_0xc6c2('0x22'),JSON['stringify'](_0x2e55e3));if(_0x2e55e3['error']){if(_0x2e55e3['error'][_0xc6c2('0x24')]===0x1f4){logger[_0xc6c2('0x25')](_0xc6c2('0x21'),_0x513adc,_0x2e55e3['error'][_0xc6c2('0x26')]);return _0x35f767(_0x2e55e3['error'][_0xc6c2('0x26')]);}logger[_0xc6c2('0x25')](_0xc6c2('0x21'),_0x513adc,_0x2e55e3[_0xc6c2('0x25')][_0xc6c2('0x26')]);return _0x39db89(_0x2e55e3['error'][_0xc6c2('0x26')]);}else{logger[_0xc6c2('0x20')](_0xc6c2('0x21'),_0x513adc,_0xc6c2('0x22'));_0x39db89(_0x2e55e3[_0xc6c2('0x27')]['message']);}})[_0xc6c2('0x28')](function(_0x49318d){logger[_0xc6c2('0x25')](_0xc6c2('0x21'),_0x513adc,_0x49318d);_0x35f767(_0x49318d);});});}function respondWithStatusCode(_0x5e7628,_0x13cf0f){_0x13cf0f=_0x13cf0f||0xcc;return function(_0xb313d8){if(_0xb313d8){return _0x5e7628['sendStatus'](_0x13cf0f);}return _0x5e7628[_0xc6c2('0x29')](_0x13cf0f)[_0xc6c2('0x2a')]();};}function respondWithResult(_0x338e87,_0x263b87){_0x263b87=_0x263b87||0xc8;return function(_0x178883){if(_0x178883){return _0x338e87[_0xc6c2('0x29')](_0x263b87)[_0xc6c2('0x2b')](_0x178883);}};}function respondWithFilteredResult(_0x2d5f4e,_0x35ba05){return function(_0x465e58){if(_0x465e58){var _0x4230ea=typeof _0x35ba05['offset']==='undefined'&&typeof _0x35ba05[_0xc6c2('0x2c')]==='undefined';var _0x5345d8=_0x465e58[_0xc6c2('0x2d')];var _0x3ba2c9=_0x4230ea?0x0:_0x35ba05[_0xc6c2('0x2e')];var _0x42881b=_0x4230ea?_0x465e58[_0xc6c2('0x2d')]:_0x35ba05[_0xc6c2('0x2e')]+_0x35ba05['limit'];var _0x82ac97;if(_0x42881b>=_0x5345d8){_0x42881b=_0x5345d8;_0x82ac97=0xc8;}else{_0x82ac97=0xce;}_0x2d5f4e[_0xc6c2('0x29')](_0x82ac97);return _0x2d5f4e[_0xc6c2('0x2f')](_0xc6c2('0x30'),_0x3ba2c9+'-'+_0x42881b+'/'+_0x5345d8)[_0xc6c2('0x2b')](_0x465e58);}return null;};}function patchUpdates(_0x8afe8d){return function(_0xf761d){try{jsonpatch[_0xc6c2('0x31')](_0xf761d,_0x8afe8d,!![]);}catch(_0x104219){return BPromise[_0xc6c2('0x32')](_0x104219);}return _0xf761d[_0xc6c2('0x33')]();};}function saveUpdates(_0xc97707,_0x12c00f){return function(_0x2f33e2){if(_0x2f33e2){return _0x2f33e2[_0xc6c2('0x34')](_0xc97707)[_0xc6c2('0x1f')](function(_0x58547f){return _0x58547f;});}return null;};}function removeEntity(_0x5bfc01,_0xc9bedd){return function(_0x131503){if(_0x131503){return _0x131503[_0xc6c2('0x35')]()['then'](function(){_0x5bfc01[_0xc6c2('0x29')](0xcc)['end']();});}};}function handleEntityNotFound(_0x205ef,_0x3f21d8){return function(_0x475398){if(!_0x475398){_0x205ef['sendStatus'](0x194);}return _0x475398;};}function handleError(_0x951ea6,_0x3b1b9e){_0x3b1b9e=_0x3b1b9e||0x1f4;return function(_0x300a54){logger[_0xc6c2('0x25')](_0x300a54[_0xc6c2('0x36')]);if(_0x300a54['name']){delete _0x300a54[_0xc6c2('0x37')];}_0x951ea6[_0xc6c2('0x29')](_0x3b1b9e)[_0xc6c2('0x38')](_0x300a54);};}exports['index']=function(_0xa16cb1,_0x1d91df){var _0x4b1717={},_0xad3c86={},_0x2ea213={'count':0x0,'rows':[]};var _0xba07e3=_[_0xc6c2('0x39')](db['OpenchannelMessage']['rawAttributes'],function(_0x17de52){return{'name':_0x17de52['fieldName'],'type':_0x17de52['type']['key']};});_0xad3c86[_0xc6c2('0x3a')]=_['map'](_0xba07e3,_0xc6c2('0x37'));_0xad3c86['query']=_[_0xc6c2('0x3b')](_0xa16cb1['query']);_0xad3c86['filters']=_[_0xc6c2('0x3c')](_0xad3c86[_0xc6c2('0x3a')],_0xad3c86[_0xc6c2('0x3d')]);_0x4b1717[_0xc6c2('0x3e')]=_['intersection'](_0xad3c86[_0xc6c2('0x3a')],qs[_0xc6c2('0x3f')](_0xa16cb1[_0xc6c2('0x3d')]['fields']));_0x4b1717[_0xc6c2('0x3e')]=_0x4b1717[_0xc6c2('0x3e')]['length']?_0x4b1717[_0xc6c2('0x3e')]:_0xad3c86[_0xc6c2('0x3a')];if(!_0xa16cb1[_0xc6c2('0x3d')][_0xc6c2('0x40')]('nolimit')){_0x4b1717[_0xc6c2('0x2c')]=qs[_0xc6c2('0x2c')](_0xa16cb1[_0xc6c2('0x3d')][_0xc6c2('0x2c')]);_0x4b1717[_0xc6c2('0x2e')]=qs[_0xc6c2('0x2e')](_0xa16cb1[_0xc6c2('0x3d')][_0xc6c2('0x2e')]);}_0x4b1717['order']=qs[_0xc6c2('0x41')](_0xa16cb1[_0xc6c2('0x3d')]['sort']);_0x4b1717[_0xc6c2('0x42')]=qs[_0xc6c2('0x43')](_['pick'](_0xa16cb1[_0xc6c2('0x3d')],_0xad3c86[_0xc6c2('0x43')]),_0xba07e3);if(_0xa16cb1[_0xc6c2('0x3d')][_0xc6c2('0x44')]){_0x4b1717[_0xc6c2('0x42')]=_[_0xc6c2('0x45')](_0x4b1717['where'],{'$or':_[_0xc6c2('0x39')](_0xba07e3,function(_0xc52555){if(_0xc52555['type']!==_0xc6c2('0x46')){var _0x12b329={};_0x12b329[_0xc52555[_0xc6c2('0x37')]]={'$like':'%'+_0xa16cb1['query'][_0xc6c2('0x44')]+'%'};return _0x12b329;}})});}_0x4b1717=_[_0xc6c2('0x45')]({},_0x4b1717,_0xa16cb1[_0xc6c2('0x47')]);var _0x409a62={'where':_0x4b1717['where']};return db['OpenchannelMessage'][_0xc6c2('0x2d')](_0x409a62)[_0xc6c2('0x1f')](function(_0x37b2ba){_0x2ea213[_0xc6c2('0x2d')]=_0x37b2ba;if(_0xa16cb1[_0xc6c2('0x3d')][_0xc6c2('0x48')]){_0x4b1717[_0xc6c2('0x49')]=[{'all':!![]}];}return db['OpenchannelMessage'][_0xc6c2('0x4a')](_0x4b1717);})[_0xc6c2('0x1f')](function(_0x165043){_0x2ea213[_0xc6c2('0x4b')]=_0x165043;return _0x2ea213;})[_0xc6c2('0x1f')](respondWithFilteredResult(_0x1d91df,_0x4b1717))[_0xc6c2('0x28')](handleError(_0x1d91df,null));};exports[_0xc6c2('0x4c')]=function(_0x36f3cc,_0x3f774e){var _0x4c25c5={'raw':!![],'where':{'id':_0x36f3cc[_0xc6c2('0x4d')]['id']}},_0x2728dd={};_0x2728dd[_0xc6c2('0x3a')]=_[_0xc6c2('0x3b')](db[_0xc6c2('0x4e')][_0xc6c2('0x4f')]);_0x2728dd['query']=_['keys'](_0x36f3cc[_0xc6c2('0x3d')]);_0x2728dd['filters']=_[_0xc6c2('0x3c')](_0x2728dd['model'],_0x2728dd[_0xc6c2('0x3d')]);_0x4c25c5[_0xc6c2('0x3e')]=_[_0xc6c2('0x3c')](_0x2728dd[_0xc6c2('0x3a')],qs[_0xc6c2('0x3f')](_0x36f3cc[_0xc6c2('0x3d')]['fields']));_0x4c25c5[_0xc6c2('0x3e')]=_0x4c25c5[_0xc6c2('0x3e')][_0xc6c2('0x50')]?_0x4c25c5[_0xc6c2('0x3e')]:_0x2728dd[_0xc6c2('0x3a')];if(_0x36f3cc[_0xc6c2('0x3d')][_0xc6c2('0x48')]){_0x4c25c5['include']=[{'all':!![]}];}_0x4c25c5=_['merge']({},_0x4c25c5,_0x36f3cc['options']);return db['OpenchannelMessage']['find'](_0x4c25c5)[_0xc6c2('0x1f')](handleEntityNotFound(_0x3f774e,null))['then'](respondWithResult(_0x3f774e,null))[_0xc6c2('0x28')](handleError(_0x3f774e,null));};exports[_0xc6c2('0x51')]=function(_0x2a20fc,_0x3e7739){return db[_0xc6c2('0x4e')][_0xc6c2('0x51')](_0x2a20fc[_0xc6c2('0x52')],{})['then'](respondWithResult(_0x3e7739,0xc9))[_0xc6c2('0x28')](handleError(_0x3e7739,null));};exports['update']=function(_0x26d279,_0xe1c8fe){if(_0x26d279[_0xc6c2('0x52')]['id']){delete _0x26d279[_0xc6c2('0x52')]['id'];}return db['OpenchannelMessage']['find']({'where':{'id':_0x26d279[_0xc6c2('0x4d')]['id']}})[_0xc6c2('0x1f')](handleEntityNotFound(_0xe1c8fe,null))['then'](saveUpdates(_0x26d279[_0xc6c2('0x52')],null))['then'](respondWithResult(_0xe1c8fe,null))[_0xc6c2('0x28')](handleError(_0xe1c8fe,null));};exports[_0xc6c2('0x35')]=function(_0x178209,_0x59403d){return db['OpenchannelMessage'][_0xc6c2('0x53')]({'where':{'id':_0x178209[_0xc6c2('0x4d')]['id']}})[_0xc6c2('0x1f')](handleEntityNotFound(_0x59403d,null))['then'](removeEntity(_0x59403d,null))[_0xc6c2('0x28')](handleError(_0x59403d,null));};exports['describe']=function(_0x4dae5f,_0x370da7){return db[_0xc6c2('0x4e')][_0xc6c2('0x54')]()[_0xc6c2('0x1f')](respondWithResult(_0x370da7,null))[_0xc6c2('0x28')](handleError(_0x370da7,null));};var interaction_log=require(_0xc6c2('0x15'))(_0xc6c2('0x55'));exports[_0xc6c2('0x56')]=function(_0xc884c0,_0x22f16b,_0x4c7880){var _0x354ecf={'agent':{},'channel':'openchannel'};if(_0xc884c0['body']['id']){delete _0xc884c0[_0xc6c2('0x52')]['id'];}_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x57')]=!![];_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x58')]=moment()[_0xc6c2('0x59')](_0xc6c2('0x5a'));_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')]=_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')]||_0xc884c0['user']['id'];_0x354ecf[_0xc6c2('0x5c')]['id']=_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')];return db[_0xc6c2('0x4e')][_0xc6c2('0x53')]({'where':{'id':_0xc884c0['params']['id'],'UserId':null}})[_0xc6c2('0x1f')](handleEntityNotFound(_0x22f16b,null))[_0xc6c2('0x1f')](saveUpdates(_0xc884c0[_0xc6c2('0x52')],null))[_0xc6c2('0x1f')](function(_0x55d2b9){if(_0x55d2b9){_0x354ecf[_0xc6c2('0x26')]=_0x55d2b9[_0xc6c2('0x5d')]({'plain':!![]});return db[_0xc6c2('0x5e')][_0xc6c2('0x53')]({'where':{'id':_0x55d2b9[_0xc6c2('0x5f')]}});}return null;})[_0xc6c2('0x1f')](handleEntityNotFound(_0x22f16b,null))[_0xc6c2('0x1f')](function(_0x13e404){if(_0x13e404){return _0x13e404['update']({'UserId':_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')],'read1stAt':_['isNil'](_0x13e404[_0xc6c2('0x60')])?moment()['format'](_0xc6c2('0x5a')):undefined});}return null;})['then'](function(_0x4f9480){if(_0x4f9480){_0x354ecf[_0xc6c2('0x61')]=_0x4f9480[_0xc6c2('0x5d')]({'plain':!![]});interaction_log[_0xc6c2('0x20')](_0xc6c2('0x62'),_0xc884c0[_0xc6c2('0x63')]['id'],_0xc884c0[_0xc6c2('0x63')][_0xc6c2('0x37')],_0xc884c0[_0xc6c2('0x63')][_0xc6c2('0x64')],_0x354ecf[_0xc6c2('0x61')]['id'],_0xc884c0['body']?JSON[_0xc6c2('0x65')](_0xc884c0['body']):_0xc6c2('0x66'));return respondWithRpcPromise(_0xc6c2('0x67'),_0xc6c2('0x68'),_0x354ecf);}return null;})[_0xc6c2('0x1f')](function(_0x2cb9d0){var _0x4409df=_0xc6c2('0x69')+_0x2cb9d0[_0xc6c2('0x26')][_0xc6c2('0x6a')];return db['sequelize'][_0xc6c2('0x3d')](_0x4409df,{'type':db['Sequelize'][_0xc6c2('0x6b')][_0xc6c2('0x6c')],'raw':!![]})[_0xc6c2('0x1f')](function(_0x59137f){return _0x59137f;});})[_0xc6c2('0x1f')](function(_0x19f2a8){if(_0x19f2a8){_0x354ecf[_0xc6c2('0x26')]['contact']=_0x19f2a8[0x0];if(!_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')])return;return db['User'][_0xc6c2('0x53')]({'where':{'id':_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x5b')],'role':_0xc6c2('0x5c')},'attributes':['id',_0xc6c2('0x37'),_0xc6c2('0x6d'),_0xc6c2('0x6e'),_0xc6c2('0x6f')],'raw':!![]});}return null;})[_0xc6c2('0x1f')](function(_0x42512a){if(!_0x42512a)return null;_0x354ecf[_0xc6c2('0x26')][_0xc6c2('0x5c')]=_0x42512a;return _0x354ecf;})[_0xc6c2('0x1f')](function(_0x398278){if(_0x398278){if(_0xc884c0[_0xc6c2('0x52')][_0xc6c2('0x70')]){_0x354ecf[_0xc6c2('0x26')][_0xc6c2('0x71')]=util[_0xc6c2('0x59')]('SIP/%s',_0xc884c0[_0xc6c2('0x63')][_0xc6c2('0x37')]);_0x354ecf['message'][_0xc6c2('0x72')]=_0x354ecf['channel'];_0x354ecf['message'][_0xc6c2('0x73')]=_0x354ecf[_0xc6c2('0x72')];_0x354ecf[_0xc6c2('0x26')]['event']=_0xc6c2('0x56');return respondWithRpcPromise(_0xc6c2('0x74'),_0xc6c2('0x74'),{'event':_0xc6c2('0x75'),'message':_0x354ecf['message']},client9002)[_0xc6c2('0x1f')](function(){return _0x354ecf;});}return _0x354ecf;}return null;})['then'](respondWithResult(_0x22f16b,null))[_0xc6c2('0x28')](handleError(_0x22f16b,null));};var interaction_log=require('../../config/logger')(_0xc6c2('0x55'));exports[_0xc6c2('0x32')]=function(_0x1bf07e,_0x28f527,_0x6152e2){var _0x271464={'agent':{},'channel':_0xc6c2('0x76')};if(_0x1bf07e[_0xc6c2('0x52')]['id']){delete _0x1bf07e[_0xc6c2('0x52')]['id'];}_0x1bf07e[_0xc6c2('0x52')][_0xc6c2('0x5b')]=_0x1bf07e[_0xc6c2('0x52')][_0xc6c2('0x5b')]||_0x1bf07e[_0xc6c2('0x63')]['id'];_0x271464[_0xc6c2('0x5c')]['id']=_0x1bf07e[_0xc6c2('0x52')][_0xc6c2('0x5b')];return db[_0xc6c2('0x4e')][_0xc6c2('0x53')]({'where':{'id':_0x1bf07e['params']['id'],'UserId':null}})[_0xc6c2('0x1f')](handleEntityNotFound(_0x28f527,null))['then'](function(_0x28307e){if(_0x28307e){_0x271464[_0xc6c2('0x26')]=_0x28307e['get']({'plain':!![]});return db[_0xc6c2('0x5e')][_0xc6c2('0x53')]({'where':{'id':_0x28307e[_0xc6c2('0x5f')]}});}return null;})[_0xc6c2('0x1f')](handleEntityNotFound(_0x28f527,null))[_0xc6c2('0x1f')](function(_0x190c18){if(_0x190c18){_0x271464[_0xc6c2('0x61')]=_0x190c18[_0xc6c2('0x5d')]({'plain':!![]});interaction_log[_0xc6c2('0x20')](_0xc6c2('0x77'),_0x1bf07e[_0xc6c2('0x63')]['id'],_0x1bf07e[_0xc6c2('0x63')][_0xc6c2('0x37')],_0x1bf07e[_0xc6c2('0x63')][_0xc6c2('0x64')],_0x271464[_0xc6c2('0x61')]['id'],_0x1bf07e['body']?JSON[_0xc6c2('0x65')](_0x1bf07e['body']):'null');return respondWithRpcPromise(_0xc6c2('0x78'),_0xc6c2('0x79'),_0x271464);}return null;})[_0xc6c2('0x1f')](function(_0x22a27b){var _0x27e2b0=_0xc6c2('0x69')+_0x22a27b[_0xc6c2('0x26')][_0xc6c2('0x6a')];return db[_0xc6c2('0x7a')][_0xc6c2('0x3d')](_0x27e2b0,{'type':db[_0xc6c2('0x7b')][_0xc6c2('0x6b')]['SELECT'],'raw':!![]})[_0xc6c2('0x1f')](function(_0x219f0a){return _0x219f0a;});})[_0xc6c2('0x1f')](function(_0x4052d6){if(_0x4052d6){_0x271464['message'][_0xc6c2('0x7c')]=_0x4052d6[0x0];if(!_0x1bf07e[_0xc6c2('0x52')][_0xc6c2('0x5b')])return;return db[_0xc6c2('0x7d')][_0xc6c2('0x53')]({'where':{'id':_0x1bf07e[_0xc6c2('0x52')][_0xc6c2('0x5b')],'role':_0xc6c2('0x5c')},'attributes':['id',_0xc6c2('0x37'),_0xc6c2('0x6d'),_0xc6c2('0x6e'),'internal'],'raw':!![]});}return null;})[_0xc6c2('0x1f')](function(_0x5a1fdf){if(!_0x5a1fdf)return null;_0x271464[_0xc6c2('0x26')]['agent']=_0x5a1fdf;return _0x271464;})[_0xc6c2('0x1f')](function(_0x5e12f0){if(_0x5e12f0){_0x5e12f0[_0xc6c2('0x26')]['interface']=util['format'](_0xc6c2('0x7e'),_0x1bf07e[_0xc6c2('0x63')][_0xc6c2('0x37')]);_0x5e12f0[_0xc6c2('0x26')]['channel']=_0x271464['channel'];_0x5e12f0[_0xc6c2('0x26')][_0xc6c2('0x73')]=_0x271464[_0xc6c2('0x72')];_0x5e12f0[_0xc6c2('0x26')][_0xc6c2('0x7f')]='reject';respondWithRpcPromise('EventManager',_0xc6c2('0x74'),{'event':_0xc6c2('0x80'),'message':_0x5e12f0['message']},client9002);return _0x271464;}return null;})['then'](respondWithResult(_0x28f527,null))[_0xc6c2('0x28')](handleError(_0x28f527,null));};
\ No newline at end of file
+var _0x6f9f=['contact','User','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','Sequelize','email','rejectmessage','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./openchannelMessage.socket','register','jayson/promise','client','http','request','info','OpenchannelMessage,\x20%s,\x20%s','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','save','update','then','destroy','end','stack','name','send','index','map','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','order','sort','where','filter','merge','rows','show','params','keys','OpenchannelMessage','rawAttributes','includeAll','include','options','create','body','find','describe','../../config/logger','openchannel-interactions','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','OpenchannelInteraction','OpenchannelInteractionId','isNil','read1stAt','interaction','get','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT'];(function(_0x173e2a,_0x547f99){var _0x4ac17f=function(_0x44602c){while(--_0x44602c){_0x173e2a['push'](_0x173e2a['shift']());}};_0x4ac17f(++_0x547f99);}(_0x6f9f,0x11d));var _0xf6f9=function(_0x1cc79a,_0x205fc5){_0x1cc79a=_0x1cc79a-0x0;var _0x50f331=_0x6f9f[_0x1cc79a];return _0x50f331;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6f9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xf6f9('0x1'));var rp=require(_0xf6f9('0x2'));var moment=require(_0xf6f9('0x3'));var BPromise=require(_0xf6f9('0x4'));var Mustache=require(_0xf6f9('0x5'));var util=require(_0xf6f9('0x6'));var path=require(_0xf6f9('0x7'));var sox=require(_0xf6f9('0x8'));var csv=require(_0xf6f9('0x9'));var ejs=require(_0xf6f9('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xf6f9('0xb'));var squel=require('squel');var crypto=require(_0xf6f9('0xc'));var jsforce=require(_0xf6f9('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf6f9('0x9'));var querystring=require('querystring');var Papa=require(_0xf6f9('0xe'));var Redis=require(_0xf6f9('0xf'));var authService=require(_0xf6f9('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf6f9('0x11'));var logger=require('../../config/logger')(_0xf6f9('0x12'));var utils=require(_0xf6f9('0x13'));var config=require(_0xf6f9('0x14'));var licenseUtil=require(_0xf6f9('0x15'));var db=require(_0xf6f9('0x16'))['db'];config['redis']=_[_0xf6f9('0x17')](config[_0xf6f9('0x18')],{'host':_0xf6f9('0x19'),'port':0x18eb});var socket=require(_0xf6f9('0x1a'))(new Redis(config[_0xf6f9('0x18')]));require(_0xf6f9('0x1b'))[_0xf6f9('0x1c')](socket);var jayson=require(_0xf6f9('0x1d'));var client=jayson[_0xf6f9('0x1e')][_0xf6f9('0x1f')]({'port':0x232c});var client9002=jayson[_0xf6f9('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x553973,_0x1a60a7,_0x10c41f,_0x531329){return new BPromise(function(_0x5cd53a,_0x474c43){var _0x4fba94=_0x531329||client;return _0x4fba94[_0xf6f9('0x20')](_0x553973,_0x10c41f)['then'](function(_0xa748ed){logger[_0xf6f9('0x21')](_0xf6f9('0x22'),_0x1a60a7,'request\x20sent');logger[_0xf6f9('0x23')](_0xf6f9('0x24'),_0x1a60a7,_0xf6f9('0x25'),JSON[_0xf6f9('0x26')](_0xa748ed));if(_0xa748ed[_0xf6f9('0x27')]){if(_0xa748ed[_0xf6f9('0x27')]['code']===0x1f4){logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);return _0x474c43(_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);}logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);return _0x5cd53a(_0xa748ed[_0xf6f9('0x27')][_0xf6f9('0x28')]);}else{logger[_0xf6f9('0x21')](_0xf6f9('0x22'),_0x1a60a7,_0xf6f9('0x25'));_0x5cd53a(_0xa748ed[_0xf6f9('0x29')][_0xf6f9('0x28')]);}})[_0xf6f9('0x2a')](function(_0x240f43){logger[_0xf6f9('0x27')](_0xf6f9('0x22'),_0x1a60a7,_0x240f43);_0x474c43(_0x240f43);});});}function respondWithStatusCode(_0x5a37ba,_0x14a25c){_0x14a25c=_0x14a25c||0xcc;return function(_0x4c2099){if(_0x4c2099){return _0x5a37ba[_0xf6f9('0x2b')](_0x14a25c);}return _0x5a37ba[_0xf6f9('0x2c')](_0x14a25c)['end']();};}function respondWithResult(_0x85a924,_0x492f5f){_0x492f5f=_0x492f5f||0xc8;return function(_0x5cd101){if(_0x5cd101){return _0x85a924['status'](_0x492f5f)[_0xf6f9('0x2d')](_0x5cd101);}};}function respondWithFilteredResult(_0x57fe90,_0x1b273c){return function(_0x10d6da){if(_0x10d6da){var _0x5bd385=typeof _0x1b273c[_0xf6f9('0x2e')]===_0xf6f9('0x2f')&&typeof _0x1b273c[_0xf6f9('0x30')]==='undefined';var _0x104744=_0x10d6da['count'];var _0x53facc=_0x5bd385?0x0:_0x1b273c['offset'];var _0x5c99f4=_0x5bd385?_0x10d6da[_0xf6f9('0x31')]:_0x1b273c[_0xf6f9('0x2e')]+_0x1b273c[_0xf6f9('0x30')];var _0x1fb821;if(_0x5c99f4>=_0x104744){_0x5c99f4=_0x104744;_0x1fb821=0xc8;}else{_0x1fb821=0xce;}_0x57fe90[_0xf6f9('0x2c')](_0x1fb821);return _0x57fe90[_0xf6f9('0x32')]('Content-Range',_0x53facc+'-'+_0x5c99f4+'/'+_0x104744)[_0xf6f9('0x2d')](_0x10d6da);}return null;};}function patchUpdates(_0x567759){return function(_0x110ad0){try{jsonpatch['apply'](_0x110ad0,_0x567759,!![]);}catch(_0x4673e3){return BPromise[_0xf6f9('0x33')](_0x4673e3);}return _0x110ad0[_0xf6f9('0x34')]();};}function saveUpdates(_0x4740af,_0x297898){return function(_0x273f47){if(_0x273f47){return _0x273f47[_0xf6f9('0x35')](_0x4740af)[_0xf6f9('0x36')](function(_0x3d8a16){return _0x3d8a16;});}return null;};}function removeEntity(_0x4b567e,_0x43777c){return function(_0x584aa2){if(_0x584aa2){return _0x584aa2[_0xf6f9('0x37')]()[_0xf6f9('0x36')](function(){_0x4b567e['status'](0xcc)[_0xf6f9('0x38')]();});}};}function handleEntityNotFound(_0x53d3d0,_0x16f7eb){return function(_0x3f83a9){if(!_0x3f83a9){_0x53d3d0[_0xf6f9('0x2b')](0x194);}return _0x3f83a9;};}function handleError(_0x2f34f0,_0x16fdb1){_0x16fdb1=_0x16fdb1||0x1f4;return function(_0x1a335e){logger[_0xf6f9('0x27')](_0x1a335e[_0xf6f9('0x39')]);if(_0x1a335e[_0xf6f9('0x3a')]){delete _0x1a335e[_0xf6f9('0x3a')];}_0x2f34f0[_0xf6f9('0x2c')](_0x16fdb1)[_0xf6f9('0x3b')](_0x1a335e);};}exports[_0xf6f9('0x3c')]=function(_0x14b35f,_0x55c2ff){var _0x5f533f={},_0x3ee662={},_0x4a70c4={'count':0x0,'rows':[]};var _0x4b7b35=_[_0xf6f9('0x3d')](db['OpenchannelMessage']['rawAttributes'],function(_0x176e96){return{'name':_0x176e96[_0xf6f9('0x3e')],'type':_0x176e96[_0xf6f9('0x3f')][_0xf6f9('0x40')]};});_0x3ee662[_0xf6f9('0x41')]=_[_0xf6f9('0x3d')](_0x4b7b35,_0xf6f9('0x3a'));_0x3ee662['query']=_['keys'](_0x14b35f[_0xf6f9('0x42')]);_0x3ee662[_0xf6f9('0x43')]=_[_0xf6f9('0x44')](_0x3ee662['model'],_0x3ee662['query']);_0x5f533f['attributes']=_['intersection'](_0x3ee662[_0xf6f9('0x41')],qs['fields'](_0x14b35f['query'][_0xf6f9('0x45')]));_0x5f533f[_0xf6f9('0x46')]=_0x5f533f[_0xf6f9('0x46')][_0xf6f9('0x47')]?_0x5f533f['attributes']:_0x3ee662[_0xf6f9('0x41')];if(!_0x14b35f[_0xf6f9('0x42')]['hasOwnProperty']('nolimit')){_0x5f533f[_0xf6f9('0x30')]=qs[_0xf6f9('0x30')](_0x14b35f['query']['limit']);_0x5f533f[_0xf6f9('0x2e')]=qs['offset'](_0x14b35f['query']['offset']);}_0x5f533f[_0xf6f9('0x48')]=qs[_0xf6f9('0x49')](_0x14b35f[_0xf6f9('0x42')][_0xf6f9('0x49')]);_0x5f533f[_0xf6f9('0x4a')]=qs['filters'](_['pick'](_0x14b35f['query'],_0x3ee662[_0xf6f9('0x43')]),_0x4b7b35);if(_0x14b35f[_0xf6f9('0x42')][_0xf6f9('0x4b')]){_0x5f533f['where']=_[_0xf6f9('0x4c')](_0x5f533f[_0xf6f9('0x4a')],{'$or':_[_0xf6f9('0x3d')](_0x4b7b35,function(_0x17a252){if(_0x17a252[_0xf6f9('0x3f')]!=='VIRTUAL'){var _0x297899={};_0x297899[_0x17a252['name']]={'$like':'%'+_0x14b35f[_0xf6f9('0x42')]['filter']+'%'};return _0x297899;}})});}_0x5f533f=_[_0xf6f9('0x4c')]({},_0x5f533f,_0x14b35f['options']);var _0xa0728e={'where':_0x5f533f[_0xf6f9('0x4a')]};return db['OpenchannelMessage']['count'](_0xa0728e)[_0xf6f9('0x36')](function(_0x2d944a){_0x4a70c4['count']=_0x2d944a;if(_0x14b35f[_0xf6f9('0x42')]['includeAll']){_0x5f533f['include']=[{'all':!![]}];}return db['OpenchannelMessage']['findAll'](_0x5f533f);})['then'](function(_0x22a2b9){_0x4a70c4[_0xf6f9('0x4d')]=_0x22a2b9;return _0x4a70c4;})['then'](respondWithFilteredResult(_0x55c2ff,_0x5f533f))['catch'](handleError(_0x55c2ff,null));};exports[_0xf6f9('0x4e')]=function(_0x9938eb,_0x20bfa4){var _0x4a6626={'raw':!![],'where':{'id':_0x9938eb[_0xf6f9('0x4f')]['id']}},_0x474aa8={};_0x474aa8[_0xf6f9('0x41')]=_[_0xf6f9('0x50')](db[_0xf6f9('0x51')][_0xf6f9('0x52')]);_0x474aa8[_0xf6f9('0x42')]=_['keys'](_0x9938eb[_0xf6f9('0x42')]);_0x474aa8[_0xf6f9('0x43')]=_[_0xf6f9('0x44')](_0x474aa8['model'],_0x474aa8['query']);_0x4a6626['attributes']=_['intersection'](_0x474aa8[_0xf6f9('0x41')],qs[_0xf6f9('0x45')](_0x9938eb['query'][_0xf6f9('0x45')]));_0x4a6626['attributes']=_0x4a6626[_0xf6f9('0x46')][_0xf6f9('0x47')]?_0x4a6626[_0xf6f9('0x46')]:_0x474aa8[_0xf6f9('0x41')];if(_0x9938eb['query'][_0xf6f9('0x53')]){_0x4a6626[_0xf6f9('0x54')]=[{'all':!![]}];}_0x4a6626=_[_0xf6f9('0x4c')]({},_0x4a6626,_0x9938eb[_0xf6f9('0x55')]);return db[_0xf6f9('0x51')]['find'](_0x4a6626)[_0xf6f9('0x36')](handleEntityNotFound(_0x20bfa4,null))[_0xf6f9('0x36')](respondWithResult(_0x20bfa4,null))[_0xf6f9('0x2a')](handleError(_0x20bfa4,null));};exports[_0xf6f9('0x56')]=function(_0x5bdc6b,_0x45ce1a){return db[_0xf6f9('0x51')]['create'](_0x5bdc6b[_0xf6f9('0x57')],{})[_0xf6f9('0x36')](respondWithResult(_0x45ce1a,0xc9))['catch'](handleError(_0x45ce1a,null));};exports[_0xf6f9('0x35')]=function(_0x515af7,_0x3426e5){if(_0x515af7['body']['id']){delete _0x515af7[_0xf6f9('0x57')]['id'];}return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x515af7['params']['id']}})[_0xf6f9('0x36')](handleEntityNotFound(_0x3426e5,null))[_0xf6f9('0x36')](saveUpdates(_0x515af7['body'],null))[_0xf6f9('0x36')](respondWithResult(_0x3426e5,null))[_0xf6f9('0x2a')](handleError(_0x3426e5,null));};exports[_0xf6f9('0x37')]=function(_0x4e2185,_0x40fcad){return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x4e2185[_0xf6f9('0x4f')]['id']}})[_0xf6f9('0x36')](handleEntityNotFound(_0x40fcad,null))['then'](removeEntity(_0x40fcad,null))[_0xf6f9('0x2a')](handleError(_0x40fcad,null));};exports['describe']=function(_0x1ff663,_0x9a1834){return db[_0xf6f9('0x51')][_0xf6f9('0x59')]()[_0xf6f9('0x36')](respondWithResult(_0x9a1834,null))['catch'](handleError(_0x9a1834,null));};var interaction_log=require(_0xf6f9('0x5a'))(_0xf6f9('0x5b'));exports[_0xf6f9('0x5c')]=function(_0x51fe0c,_0x5e345b,_0x2ef1ca){var _0x35134b={'agent':{},'channel':_0xf6f9('0x5d')};if(_0x51fe0c[_0xf6f9('0x57')]['id']){delete _0x51fe0c[_0xf6f9('0x57')]['id'];}_0x51fe0c['body'][_0xf6f9('0x5e')]=!![];_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x5f')]=moment()[_0xf6f9('0x60')](_0xf6f9('0x61'));_0x51fe0c[_0xf6f9('0x57')]['UserId']=_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x62')]||_0x51fe0c['user']['id'];_0x35134b[_0xf6f9('0x63')]['id']=_0x51fe0c[_0xf6f9('0x57')][_0xf6f9('0x62')];return db['OpenchannelMessage'][_0xf6f9('0x58')]({'where':{'id':_0x51fe0c[_0xf6f9('0x4f')]['id'],'UserId':null}})[_0xf6f9('0x36')](handleEntityNotFound(_0x5e345b,null))[_0xf6f9('0x36')](saveUpdates(_0x51fe0c[_0xf6f9('0x57')],null))['then'](function(_0x5c5e7){if(_0x5c5e7){_0x35134b[_0xf6f9('0x28')]=_0x5c5e7['get']({'plain':!![]});return db[_0xf6f9('0x64')][_0xf6f9('0x58')]({'where':{'id':_0x5c5e7[_0xf6f9('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x5e345b,null))['then'](function(_0x3a18a8){if(_0x3a18a8){return _0x3a18a8[_0xf6f9('0x35')]({'UserId':_0x51fe0c['body'][_0xf6f9('0x62')],'read1stAt':_[_0xf6f9('0x66')](_0x3a18a8[_0xf6f9('0x67')])?moment()[_0xf6f9('0x60')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xf6f9('0x36')](function(_0x16dc02){if(_0x16dc02){_0x35134b[_0xf6f9('0x68')]=_0x16dc02[_0xf6f9('0x69')]({'plain':!![]});interaction_log[_0xf6f9('0x21')](_0xf6f9('0x6a'),_0x51fe0c[_0xf6f9('0x6b')]['id'],_0x51fe0c['user'][_0xf6f9('0x3a')],_0x51fe0c['user'][_0xf6f9('0x6c')],_0x35134b[_0xf6f9('0x68')]['id'],_0x51fe0c[_0xf6f9('0x57')]?JSON[_0xf6f9('0x26')](_0x51fe0c[_0xf6f9('0x57')]):_0xf6f9('0x6d'));return respondWithRpcPromise(_0xf6f9('0x6e'),_0xf6f9('0x6f'),_0x35134b);}return null;})['then'](function(_0x24f2eb){var _0x4f165b=_0xf6f9('0x70')+_0x24f2eb[_0xf6f9('0x28')][_0xf6f9('0x71')];return db[_0xf6f9('0x72')][_0xf6f9('0x42')](_0x4f165b,{'type':db['Sequelize'][_0xf6f9('0x73')][_0xf6f9('0x74')],'raw':!![]})[_0xf6f9('0x36')](function(_0x441fa4){return _0x441fa4;});})[_0xf6f9('0x36')](function(_0x41a035){if(_0x41a035){_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x75')]=_0x41a035[0x0];if(!_0x51fe0c[_0xf6f9('0x57')]['UserId'])return;return db[_0xf6f9('0x76')][_0xf6f9('0x58')]({'where':{'id':_0x51fe0c[_0xf6f9('0x57')]['UserId'],'role':_0xf6f9('0x63')},'attributes':['id',_0xf6f9('0x3a'),_0xf6f9('0x77'),'email',_0xf6f9('0x78')],'raw':!![]});}return null;})['then'](function(_0x36a0c0){if(!_0x36a0c0)return null;_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x63')]=_0x36a0c0;return _0x35134b;})[_0xf6f9('0x36')](function(_0x5b64ec){if(_0x5b64ec){if(_0x51fe0c['body'][_0xf6f9('0x79')]){_0x35134b['message'][_0xf6f9('0x7a')]=util[_0xf6f9('0x60')](_0xf6f9('0x7b'),_0x51fe0c[_0xf6f9('0x6b')][_0xf6f9('0x3a')]);_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7c')]=_0x35134b[_0xf6f9('0x7c')];_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7d')]=_0x35134b[_0xf6f9('0x7c')];_0x35134b[_0xf6f9('0x28')][_0xf6f9('0x7e')]=_0xf6f9('0x5c');return respondWithRpcPromise(_0xf6f9('0x7f'),_0xf6f9('0x7f'),{'event':_0xf6f9('0x80'),'message':_0x35134b[_0xf6f9('0x28')]},client9002)[_0xf6f9('0x36')](function(){return _0x35134b;});}return _0x35134b;}return null;})[_0xf6f9('0x36')](respondWithResult(_0x5e345b,null))[_0xf6f9('0x2a')](handleError(_0x5e345b,null));};var interaction_log=require(_0xf6f9('0x5a'))(_0xf6f9('0x5b'));exports[_0xf6f9('0x33')]=function(_0x17b637,_0x3066f2,_0x11dae7){var _0x3457b6={'agent':{},'channel':_0xf6f9('0x5d')};if(_0x17b637[_0xf6f9('0x57')]['id']){delete _0x17b637[_0xf6f9('0x57')]['id'];}_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')]=_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')]||_0x17b637[_0xf6f9('0x6b')]['id'];_0x3457b6['agent']['id']=_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')];return db[_0xf6f9('0x51')][_0xf6f9('0x58')]({'where':{'id':_0x17b637[_0xf6f9('0x4f')]['id'],'UserId':null}})[_0xf6f9('0x36')](handleEntityNotFound(_0x3066f2,null))[_0xf6f9('0x36')](function(_0x56d138){if(_0x56d138){_0x3457b6[_0xf6f9('0x28')]=_0x56d138[_0xf6f9('0x69')]({'plain':!![]});return db[_0xf6f9('0x64')][_0xf6f9('0x58')]({'where':{'id':_0x56d138[_0xf6f9('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x3066f2,null))[_0xf6f9('0x36')](function(_0x37d1bc){if(_0x37d1bc){_0x3457b6['interaction']=_0x37d1bc[_0xf6f9('0x69')]({'plain':!![]});interaction_log[_0xf6f9('0x21')](_0xf6f9('0x81'),_0x17b637[_0xf6f9('0x6b')]['id'],_0x17b637['user'][_0xf6f9('0x3a')],_0x17b637[_0xf6f9('0x6b')][_0xf6f9('0x6c')],_0x3457b6[_0xf6f9('0x68')]['id'],_0x17b637[_0xf6f9('0x57')]?JSON[_0xf6f9('0x26')](_0x17b637[_0xf6f9('0x57')]):'null');return respondWithRpcPromise('RejectMessage',_0xf6f9('0x82'),_0x3457b6);}return null;})[_0xf6f9('0x36')](function(_0x5c074e){var _0x51047c=_0xf6f9('0x70')+_0x5c074e[_0xf6f9('0x28')]['ContactId'];return db['sequelize'][_0xf6f9('0x42')](_0x51047c,{'type':db[_0xf6f9('0x83')][_0xf6f9('0x73')][_0xf6f9('0x74')],'raw':!![]})[_0xf6f9('0x36')](function(_0x2b5b7d){return _0x2b5b7d;});})[_0xf6f9('0x36')](function(_0x5dfb07){if(_0x5dfb07){_0x3457b6[_0xf6f9('0x28')][_0xf6f9('0x75')]=_0x5dfb07[0x0];if(!_0x17b637[_0xf6f9('0x57')][_0xf6f9('0x62')])return;return db[_0xf6f9('0x76')][_0xf6f9('0x58')]({'where':{'id':_0x17b637[_0xf6f9('0x57')]['UserId'],'role':_0xf6f9('0x63')},'attributes':['id',_0xf6f9('0x3a'),_0xf6f9('0x77'),_0xf6f9('0x84'),_0xf6f9('0x78')],'raw':!![]});}return null;})[_0xf6f9('0x36')](function(_0x318e2f){if(!_0x318e2f)return null;_0x3457b6['message']['agent']=_0x318e2f;return _0x3457b6;})['then'](function(_0x5b9341){if(_0x5b9341){_0x5b9341[_0xf6f9('0x28')]['interface']=util['format'](_0xf6f9('0x7b'),_0x17b637[_0xf6f9('0x6b')][_0xf6f9('0x3a')]);_0x5b9341[_0xf6f9('0x28')][_0xf6f9('0x7c')]=_0x3457b6['channel'];_0x5b9341[_0xf6f9('0x28')][_0xf6f9('0x7d')]=_0x3457b6[_0xf6f9('0x7c')];_0x5b9341[_0xf6f9('0x28')]['event']=_0xf6f9('0x33');respondWithRpcPromise(_0xf6f9('0x7f'),_0xf6f9('0x7f'),{'event':_0xf6f9('0x85'),'message':_0x5b9341[_0xf6f9('0x28')]},client9002);return _0x3457b6;}return null;})['then'](respondWithResult(_0x3066f2,null))[_0xf6f9('0x2a')](handleError(_0x3066f2,null));};
\ No newline at end of file
index 64a49bb..2132adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cc1=['events','../../mysqldb','OpenchannelMessage','update','emit','hasOwnProperty'];(function(_0x375946,_0x19d105){var _0x3b091c=function(_0x1fe143){while(--_0x1fe143){_0x375946['push'](_0x375946['shift']());}};_0x3b091c(++_0x19d105);}(_0x6cc1,0xfc));var _0x16cc=function(_0x5f1617,_0x46277b){_0x5f1617=_0x5f1617-0x0;var _0x3af5da=_0x6cc1[_0x5f1617];return _0x3af5da;};'use strict';var EventEmitter=require(_0x16cc('0x0'));var OpenchannelMessage=require(_0x16cc('0x1'))['db'][_0x16cc('0x2')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x16cc('0x3'),'afterDestroy':'remove'};function emitEvent(_0x4aef6e){return function(_0x446ac7,_0x371dbf,_0x495d88){OpenchannelMessageEvents[_0x16cc('0x4')](_0x4aef6e+':'+_0x446ac7['id'],_0x446ac7);OpenchannelMessageEvents['emit'](_0x4aef6e,_0x446ac7);_0x495d88(null);};}for(var e in events){if(events[_0x16cc('0x5')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
+var _0xeaff=['events','OpenchannelMessage','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0xc40b9f,_0x17ec1f){var _0x535b9c=function(_0x591b19){while(--_0x591b19){_0xc40b9f['push'](_0xc40b9f['shift']());}};_0x535b9c(++_0x17ec1f);}(_0xeaff,0x140));var _0xfeaf=function(_0x32f584,_0x2a3189){_0x32f584=_0x32f584-0x0;var _0x4d4185=_0xeaff[_0x32f584];return _0x4d4185;};'use strict';var EventEmitter=require(_0xfeaf('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0xfeaf('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xfeaf('0x2')](0x0);var events={'afterCreate':_0xfeaf('0x3'),'afterUpdate':_0xfeaf('0x4'),'afterDestroy':'remove'};function emitEvent(_0x486ac0){return function(_0x28be0f,_0x9dfdb3,_0x55b185){OpenchannelMessageEvents['emit'](_0x486ac0+':'+_0x28be0f['id'],_0x28be0f);OpenchannelMessageEvents[_0xfeaf('0x5')](_0x486ac0,_0x28be0f);_0x55b185(null);};}for(var e in events){if(events[_0xfeaf('0x6')](e)){var event=events[e];OpenchannelMessage[_0xfeaf('0x7')](e,emitEvent(event));}}module['exports']=OpenchannelMessageEvents;
\ No newline at end of file
index 4216f4a..3d50474 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeb92=['Contact','then','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','Interaction','omit','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','threadId','inspect','finally','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','fti_openchannel_messages','body','get','direction','toLowerCase','out','secret','isNil','UserId','findOne','OpenchannelInteractionId','update','catch','error','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact'];(function(_0x550672,_0x5ed3e5){var _0x4b5261=function(_0x4cddde){while(--_0x4cddde){_0x550672['push'](_0x550672['shift']());}};_0x4b5261(++_0x5ed3e5);}(_0xeb92,0xa8));var _0x2eb9=function(_0x5d2c81,_0x4c907f){_0x5d2c81=_0x5d2c81-0x0;var _0x26b4e6=_0xeb92[_0x5d2c81];return _0x26b4e6;};'use strict';var _=require(_0x2eb9('0x0'));var util=require('util');var logger=require(_0x2eb9('0x1'))(_0x2eb9('0x2'));var moment=require(_0x2eb9('0x3'));var BPromise=require(_0x2eb9('0x4'));var rp=require(_0x2eb9('0x5'));var fs=require('fs');var path=require(_0x2eb9('0x6'));var rimraf=require(_0x2eb9('0x7'));var config=require(_0x2eb9('0x8'));var attributes=require(_0x2eb9('0x9'));module[_0x2eb9('0xa')]=function(_0x211e5a,_0x5aa07f){return _0x211e5a['define'](_0x2eb9('0xb'),attributes,{'tableName':'openchannel_messages','paranoid':![],'indexes':[{'name':_0x2eb9('0xc'),'fields':[_0x2eb9('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2f4178,_0x1db994,_0xe72f36){var _0x3bd2a1=_0x211e5a['models'];var _0x117f5f=_0x2f4178[_0x2eb9('0xe')]({'plain':!![]});if(_0x117f5f[_0x2eb9('0xf')][_0x2eb9('0x10')]()==='in'||_0x117f5f[_0x2eb9('0xf')]['toLowerCase']()===_0x2eb9('0x11')&&!_0x117f5f[_0x2eb9('0x12')]&&!_[_0x2eb9('0x13')](_0x117f5f[_0x2eb9('0x14')])){_0x3bd2a1['OpenchannelInteraction'][_0x2eb9('0x15')]({'where':{'id':_0x117f5f[_0x2eb9('0x16')]}})['then'](function(_0x3b9e8e){if(_0x3b9e8e){_0x3b9e8e[_0x2eb9('0x17')]({'lastMsgAt':_0x117f5f['createdAt'],'lastMsgDirection':_0x117f5f[_0x2eb9('0xf')][_0x2eb9('0x10')]()});}})[_0x2eb9('0x18')](function(_0x58dd8c){console[_0x2eb9('0x19')](_0x58dd8c);});}if(_0x117f5f[_0x2eb9('0xf')]===_0x2eb9('0x11')&&!_0x117f5f[_0x2eb9('0x12')]){var _0x2b9b75;_0x3bd2a1['CmContact'][_0x2eb9('0x1a')]()['then'](function(_0x4b608d){return _0x3bd2a1[_0x2eb9('0x1b')][_0x2eb9('0x1c')]({'where':{'id':_0x117f5f[_0x2eb9('0x1d')]},'include':[{'model':_0x3bd2a1['OpenchannelInteraction'],'as':_0x2eb9('0x1e'),'where':{'id':_0x117f5f['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x3bd2a1[_0x2eb9('0x1f')],'as':_0x2eb9('0x20'),'attributes':_['keys'](_0x4b608d)}]}]});})[_0x2eb9('0x21')](function(_0x5bfd94){_0x2b9b75=_0x5bfd94[_0x2eb9('0xe')]({'plain':!![]});if(_0x2b9b75&&_0x2b9b75[_0x2eb9('0x22')]){logger[_0x2eb9('0x23')](_0x2eb9('0x24'),_0x2eb9('0x25'),util[_0x2eb9('0x26')](_0x2eb9('0x27'),_0x117f5f['id'],_0x2b9b75[_0x2eb9('0x22')]));if(_0x2b9b75[_0x2eb9('0x1e')]&&_0x2b9b75['Interactions']['length']){_0x117f5f[_0x2eb9('0x28')]=_[_0x2eb9('0x29')](_0x2b9b75['Interactions'][0x0],_0x2eb9('0x20'));_0x117f5f['Contact']=_0x2b9b75[_0x2eb9('0x1e')][0x0]['Contact'];}var _0x1db994={'method':_0x2eb9('0x2a'),'uri':encodeURI(_0x2b9b75[_0x2eb9('0x22')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1db994[_0x2eb9('0x2b')]){case _0x2eb9('0x2c'):_0x1db994['qs']=_0x117f5f;break;case _0x2eb9('0x2a'):_0x1db994[_0x2eb9('0xd')]=_0x117f5f;break;}return rp(_0x1db994)[_0x2eb9('0x21')](function(_0x432842){logger['info'](_0x2eb9('0x24'),_0x2eb9('0x25'),util[_0x2eb9('0x26')](_0x2eb9('0x2d'),_0x117f5f['id'],_0x2b9b75[_0x2eb9('0x22')]));if(_0x432842['body'][_0x2eb9('0x2e')]&&_0x432842[_0x2eb9('0xd')]['threadId']!=_0x117f5f[_0x2eb9('0x28')][_0x2eb9('0x2e')]){return _0x3bd2a1['OpenchannelInteraction']['update']({'threadId':_0x432842[_0x2eb9('0xd')][_0x2eb9('0x2e')]},{'where':{'id':_0x117f5f[_0x2eb9('0x28')]['id']}});}else{return;}})[_0x2eb9('0x21')](function(){return _0x2f4178[_0x2eb9('0x17')]({'read':!![]});})['catch'](function(_0x4c77c8){logger[_0x2eb9('0x19')](_0x2eb9('0x24'),'afterCreate',util[_0x2eb9('0x2f')](_0x4c77c8,{'showHidden':![],'depth':null}));_0xe72f36();});}else{_0xe72f36();}})[_0x2eb9('0x30')](function(){_0xe72f36();});}else{_0xe72f36();}}},'charset':_0x2eb9('0x31'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xe910=['Interaction','omit','POST','method','GET','info','format','Message\x20%d\x20forwarded\x20to\x20%s','threadId','finally','utf8mb4_unicode_ci','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelMessage.attributes','exports','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','isNil','OpenchannelInteraction','OpenchannelInteractionId','then','update','createdAt','catch','error','secret','describe','OpenchannelAccount','find','OpenchannelAccountId','Interactions','CmContact','Contact','keys','replyUri','OpenchannelMessage,\x20%s,\x20%s','afterCreate','length'];(function(_0x582f72,_0x886d8){var _0x4cd5fe=function(_0x4ac1c7){while(--_0x4ac1c7){_0x582f72['push'](_0x582f72['shift']());}};_0x4cd5fe(++_0x886d8);}(_0xe910,0xa7));var _0x0e91=function(_0x414655,_0x79d916){_0x414655=_0x414655-0x0;var _0x237884=_0xe910[_0x414655];return _0x237884;};'use strict';var _=require('lodash');var util=require(_0x0e91('0x0'));var logger=require(_0x0e91('0x1'))(_0x0e91('0x2'));var moment=require('moment');var BPromise=require(_0x0e91('0x3'));var rp=require(_0x0e91('0x4'));var fs=require('fs');var path=require(_0x0e91('0x5'));var rimraf=require(_0x0e91('0x6'));var config=require(_0x0e91('0x7'));var attributes=require(_0x0e91('0x8'));module[_0x0e91('0x9')]=function(_0x294e9a,_0x510604){return _0x294e9a['define'](_0x0e91('0xa'),attributes,{'tableName':_0x0e91('0xb'),'paranoid':![],'indexes':[{'name':_0x0e91('0xc'),'fields':[_0x0e91('0xd')],'type':_0x0e91('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x381795,_0x1b6a04,_0x34f5ab){var _0x10f918=_0x294e9a[_0x0e91('0xf')];var _0x51db64=_0x381795[_0x0e91('0x10')]({'plain':!![]});if(_0x51db64[_0x0e91('0x11')]['toLowerCase']()==='in'||_0x51db64[_0x0e91('0x11')][_0x0e91('0x12')]()===_0x0e91('0x13')&&!_0x51db64['secret']&&!_[_0x0e91('0x14')](_0x51db64['UserId'])){_0x10f918[_0x0e91('0x15')]['findOne']({'where':{'id':_0x51db64[_0x0e91('0x16')]}})[_0x0e91('0x17')](function(_0x494695){if(_0x494695){_0x494695[_0x0e91('0x18')]({'lastMsgAt':_0x51db64[_0x0e91('0x19')],'lastMsgDirection':_0x51db64[_0x0e91('0x11')][_0x0e91('0x12')]()});}})[_0x0e91('0x1a')](function(_0x2ae40e){console[_0x0e91('0x1b')](_0x2ae40e);});}if(_0x51db64[_0x0e91('0x11')]===_0x0e91('0x13')&&!_0x51db64[_0x0e91('0x1c')]){var _0x17b33f;_0x10f918['CmContact'][_0x0e91('0x1d')]()[_0x0e91('0x17')](function(_0x3a1374){return _0x10f918[_0x0e91('0x1e')][_0x0e91('0x1f')]({'where':{'id':_0x51db64[_0x0e91('0x20')]},'include':[{'model':_0x10f918[_0x0e91('0x15')],'as':_0x0e91('0x21'),'where':{'id':_0x51db64['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x10f918[_0x0e91('0x22')],'as':_0x0e91('0x23'),'attributes':_[_0x0e91('0x24')](_0x3a1374)}]}]});})[_0x0e91('0x17')](function(_0xea6f2){_0x17b33f=_0xea6f2['get']({'plain':!![]});if(_0x17b33f&&_0x17b33f[_0x0e91('0x25')]){logger['info'](_0x0e91('0x26'),_0x0e91('0x27'),util['format']('Forwarding\x20message\x20%d\x20to\x20%s',_0x51db64['id'],_0x17b33f[_0x0e91('0x25')]));if(_0x17b33f['Interactions']&&_0x17b33f[_0x0e91('0x21')][_0x0e91('0x28')]){_0x51db64[_0x0e91('0x29')]=_[_0x0e91('0x2a')](_0x17b33f[_0x0e91('0x21')][0x0],'Contact');_0x51db64[_0x0e91('0x23')]=_0x17b33f[_0x0e91('0x21')][0x0][_0x0e91('0x23')];}var _0x1b6a04={'method':_0x0e91('0x2b'),'uri':encodeURI(_0x17b33f['replyUri']),'json':!![],'resolveWithFullResponse':!![]};switch(_0x1b6a04[_0x0e91('0x2c')]){case _0x0e91('0x2d'):_0x1b6a04['qs']=_0x51db64;break;case _0x0e91('0x2b'):_0x1b6a04[_0x0e91('0xd')]=_0x51db64;break;}return rp(_0x1b6a04)[_0x0e91('0x17')](function(_0x2a618f){logger[_0x0e91('0x2e')]('OpenchannelMessage,\x20%s,\x20%s',_0x0e91('0x27'),util[_0x0e91('0x2f')](_0x0e91('0x30'),_0x51db64['id'],_0x17b33f[_0x0e91('0x25')]));if(_0x2a618f[_0x0e91('0xd')][_0x0e91('0x31')]&&_0x2a618f[_0x0e91('0xd')]['threadId']!=_0x51db64[_0x0e91('0x29')]['threadId']){return _0x10f918[_0x0e91('0x15')][_0x0e91('0x18')]({'threadId':_0x2a618f['body']['threadId']},{'where':{'id':_0x51db64[_0x0e91('0x29')]['id']}});}else{return;}})[_0x0e91('0x17')](function(){return _0x381795['update']({'read':!![]});})[_0x0e91('0x1a')](function(_0xc18a1f){logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x0e91('0x27'),util['inspect'](_0xc18a1f,{'showHidden':![],'depth':null}));_0x34f5ab();});}else{_0x34f5ab();}})[_0x0e91('0x32')](function(){_0x34f5ab();});}else{_0x34f5ab();}}},'charset':'utf8mb4','collate':_0x0e91('0x33')});};
\ No newline at end of file
index 0a86c37..eb36db2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['../../config/environment','jayson/promise','http','defaults','redis','socket.io-emitter','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateOpenchannelMessage','OpenchannelMessage','body','options','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x507d58,_0x4288a9){var _0x6cd4a0=function(_0x215e5b){while(--_0x215e5b){_0x507d58['push'](_0x507d58['shift']());}};_0x6cd4a0(++_0x4288a9);}(_0x7a54,0x106));var _0x47a5=function(_0x402f7c,_0x2df520){_0x402f7c=_0x402f7c-0x0;var _0x3aa0e6=_0x7a54[_0x402f7c];return _0x3aa0e6;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});config['redis']=_[_0x47a5('0xb')](config[_0x47a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x47a5('0xd'))(new Redis(config['redis']));require('./openchannelMessage.socket')['register'](socket);function respondWithRpcPromise(_0x2a0e98,_0x2baee7,_0x5e31dd){return new BPromise(function(_0x2eb0dd,_0x49e844){return client['request'](_0x2a0e98,_0x5e31dd)[_0x47a5('0xe')](function(_0x69e4d4){logger[_0x47a5('0xf')](_0x47a5('0x10'),_0x2baee7,_0x47a5('0x11'));logger[_0x47a5('0x12')](_0x47a5('0x13'),_0x2baee7,'request\x20sent',JSON[_0x47a5('0x14')](_0x69e4d4));if(_0x69e4d4[_0x47a5('0x15')]){if(_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x16')]===0x1f4){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x49e844(_0x69e4d4['error'][_0x47a5('0x17')]);}logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x69e4d4[_0x47a5('0x15')][_0x47a5('0x17')]);return _0x2eb0dd(_0x69e4d4['error']['message']);}else{logger[_0x47a5('0xf')]('OpenchannelMessage,\x20%s,\x20%s',_0x2baee7,'request\x20sent');_0x2eb0dd(_0x69e4d4[_0x47a5('0x18')][_0x47a5('0x17')]);}})[_0x47a5('0x19')](function(_0x1ef371){logger[_0x47a5('0x15')](_0x47a5('0x10'),_0x2baee7,_0x1ef371);_0x49e844(_0x1ef371);});});}exports[_0x47a5('0x1a')]=function(_0xe3c618){var _0x3aed38=this;return new Promise(function(_0x4a9fcb,_0x1570bc){return db[_0x47a5('0x1b')]['create'](_0xe3c618[_0x47a5('0x1c')],{'raw':_0xe3c618[_0x47a5('0x1d')]?_0xe3c618[_0x47a5('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x47a5('0xe')](function(_0x2f142b){logger[_0x47a5('0xf')](_0x47a5('0x1a'),_0xe3c618);logger['debug'](_0x47a5('0x1a'),_0xe3c618,JSON[_0x47a5('0x14')](_0x2f142b));_0x4a9fcb(_0x2f142b);})['catch'](function(_0x28747d){logger[_0x47a5('0x15')](_0x47a5('0x1a'),_0x28747d[_0x47a5('0x17')],_0xe3c618);_0x1570bc(_0x3aed38[_0x47a5('0x15')](0x1f4,_0x28747d['message']));});});};
\ No newline at end of file
+var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x43ec5f,_0x53d569){var _0x49092a=function(_0x56e331){while(--_0x56e331){_0x43ec5f['push'](_0x43ec5f['shift']());}};_0x49092a(++_0x53d569);}(_0x2ef3,0xba));var _0x32ef=function(_0x422d57,_0x5ca69f){_0x422d57=_0x422d57-0x0;var _0x4f98a0=_0x2ef3[_0x422d57];return _0x4f98a0;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ No newline at end of file
index cc4b550..c9d5e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13c8=['save','remove','emit','register','length','openchannelMessage:','./openchannelMessage.events'];(function(_0x35a274,_0x98b399){var _0x40d905=function(_0x5c8455){while(--_0x5c8455){_0x35a274['push'](_0x35a274['shift']());}};_0x40d905(++_0x98b399);}(_0x13c8,0xa0));var _0x813c=function(_0x56a871,_0x18b7fe){_0x56a871=_0x56a871-0x0;var _0x124954=_0x13c8[_0x56a871];return _0x124954;};'use strict';var OpenchannelMessageEvents=require(_0x813c('0x0'));var events=[_0x813c('0x1'),_0x813c('0x2'),'update'];function createListener(_0x4f090b,_0x190bcd){return function(_0x1838fc){_0x190bcd[_0x813c('0x3')](_0x4f090b,_0x1838fc);};}function removeListener(_0x267c0b,_0x542451){return function(){OpenchannelMessageEvents['removeListener'](_0x267c0b,_0x542451);};}exports[_0x813c('0x4')]=function(_0x2f831e){for(var _0x419708=0x0,_0x84cd24=events[_0x813c('0x5')];_0x419708<_0x84cd24;_0x419708++){var _0x6316b1=events[_0x419708];var _0xe0bc37=createListener(_0x813c('0x6')+_0x6316b1,_0x2f831e);OpenchannelMessageEvents['on'](_0x6316b1,_0xe0bc37);}};
\ No newline at end of file
+var _0x8075=['openchannelMessage:','./openchannelMessage.events','save','update','length'];(function(_0x409deb,_0x2b731){var _0x15a4f7=function(_0x556510){while(--_0x556510){_0x409deb['push'](_0x409deb['shift']());}};_0x15a4f7(++_0x2b731);}(_0x8075,0xab));var _0x5807=function(_0x579ec2,_0x1feede){_0x579ec2=_0x579ec2-0x0;var _0x10ffc4=_0x8075[_0x579ec2];return _0x10ffc4;};'use strict';var OpenchannelMessageEvents=require(_0x5807('0x0'));var events=[_0x5807('0x1'),'remove',_0x5807('0x2')];function createListener(_0x5efb54,_0x37a443){return function(_0x11de2e){_0x37a443['emit'](_0x5efb54,_0x11de2e);};}function removeListener(_0x35d426,_0x8f6a62){return function(){OpenchannelMessageEvents['removeListener'](_0x35d426,_0x8f6a62);};}exports['register']=function(_0x984f3d){for(var _0x5b471b=0x0,_0x308e83=events[_0x5807('0x3')];_0x5b471b<_0x308e83;_0x5b471b++){var _0x2b84d0=events[_0x5b471b];var _0x1e98cf=createListener(_0x5807('0x4')+_0x2b84d0,_0x984f3d);OpenchannelMessageEvents['on'](_0x2b84d0,_0x1e98cf);}};
\ No newline at end of file
index fb2d639..d28a197 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9d6=['delete','destroy','removeTeams','removeAgents','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','describe','/:id','/:id/members','getMembers','/:id/users','getAgents','post','create','/:id/teams','addAgents','put','update'];(function(_0x3aef17,_0x1563c2){var _0x2ca07b=function(_0x45d548){while(--_0x45d548){_0x3aef17['push'](_0x3aef17['shift']());}};_0x2ca07b(++_0x1563c2);}(_0xe9d6,0x19b));var _0x6e9d=function(_0x2cbf99,_0xa9ef9a){_0x2cbf99=_0x2cbf99-0x0;var _0x4d472a=_0xe9d6[_0x2cbf99];return _0x4d472a;};'use strict';var multer=require(_0x6e9d('0x0'));var util=require('util');var path=require(_0x6e9d('0x1'));var timeout=require('connect-timeout');var express=require(_0x6e9d('0x2'));var router=express[_0x6e9d('0x3')]();var fs_extra=require(_0x6e9d('0x4'));var auth=require(_0x6e9d('0x5'));var interaction=require(_0x6e9d('0x6'));var config=require(_0x6e9d('0x7'));var controller=require(_0x6e9d('0x8'));router[_0x6e9d('0x9')]('/',auth[_0x6e9d('0xa')](),controller[_0x6e9d('0xb')]);router['get']('/describe',auth[_0x6e9d('0xa')](),controller[_0x6e9d('0xc')]);router[_0x6e9d('0x9')](_0x6e9d('0xd'),auth['isAuthenticated'](),controller['show']);router[_0x6e9d('0x9')](_0x6e9d('0xe'),auth[_0x6e9d('0xa')](),controller[_0x6e9d('0xf')]);router['get']('/:id/teams',auth[_0x6e9d('0xa')](),controller['getTeams']);router['get'](_0x6e9d('0x10'),auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x11')]);router[_0x6e9d('0x12')]('/',auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x13')]);router[_0x6e9d('0x12')](_0x6e9d('0x14'),auth['isAuthenticated'](),controller['addTeams']);router[_0x6e9d('0x12')](_0x6e9d('0x10'),auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x15')]);router[_0x6e9d('0x16')]('/:id',auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x17')]);router[_0x6e9d('0x18')]('/:id',auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x19')]);router[_0x6e9d('0x18')](_0x6e9d('0x14'),auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x1a')]);router['delete'](_0x6e9d('0x10'),auth[_0x6e9d('0xa')](),controller[_0x6e9d('0x1b')]);module[_0x6e9d('0x1c')]=router;
\ No newline at end of file
+var _0xc681=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','put','update','delete','destroy','removeTeams','removeAgents','util','path'];(function(_0x3dae84,_0x2481cb){var _0xf4ca3a=function(_0x269262){while(--_0x269262){_0x3dae84['push'](_0x3dae84['shift']());}};_0xf4ca3a(++_0x2481cb);}(_0xc681,0x193));var _0x1c68=function(_0x3edb0f,_0x35a7fa){_0x3edb0f=_0x3edb0f-0x0;var _0x5c1069=_0xc681[_0x3edb0f];return _0x5c1069;};'use strict';var multer=require('multer');var util=require(_0x1c68('0x0'));var path=require(_0x1c68('0x1'));var timeout=require('connect-timeout');var express=require(_0x1c68('0x2'));var router=express[_0x1c68('0x3')]();var fs_extra=require(_0x1c68('0x4'));var auth=require(_0x1c68('0x5'));var interaction=require(_0x1c68('0x6'));var config=require(_0x1c68('0x7'));var controller=require('./openchannelQueue.controller');router[_0x1c68('0x8')]('/',auth['isAuthenticated'](),controller[_0x1c68('0x9')]);router[_0x1c68('0x8')]('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0xc')]);router[_0x1c68('0x8')]('/:id/members',auth['isAuthenticated'](),controller[_0x1c68('0xd')]);router['get'](_0x1c68('0xe'),auth[_0x1c68('0xb')](),controller[_0x1c68('0xf')]);router[_0x1c68('0x8')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x11')]);router[_0x1c68('0x12')]('/',auth[_0x1c68('0xb')](),controller[_0x1c68('0x13')]);router['post'](_0x1c68('0xe'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x14')]);router[_0x1c68('0x12')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller['addAgents']);router[_0x1c68('0x15')](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x16')]);router[_0x1c68('0x17')](_0x1c68('0xa'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x18')]);router[_0x1c68('0x17')](_0x1c68('0xe'),auth['isAuthenticated'](),controller[_0x1c68('0x19')]);router[_0x1c68('0x17')](_0x1c68('0x10'),auth[_0x1c68('0xb')](),controller[_0x1c68('0x1a')]);module['exports']=router;
\ No newline at end of file
index 7e8c9f3..cacb04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8198=['INTEGER','rrmemory','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x21d7ca,_0x3d8286){var _0x13f015=function(_0x760076){while(--_0x760076){_0x21d7ca['push'](_0x21d7ca['shift']());}};_0x13f015(++_0x3d8286);}(_0x8198,0x1bc));var _0x8819=function(_0x10dc60,_0x2fcce1){_0x10dc60=_0x10dc60-0x0;var _0x47dec5=_0x8198[_0x10dc60];return _0x47dec5;};'use strict';var Sequelize=require(_0x8819('0x0'));module[_0x8819('0x1')]={'name':{'type':Sequelize[_0x8819('0x2')],'unique':_0x8819('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x8819('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x8819('0x5'),_0x8819('0x6'),_0x8819('0x7'))}};
\ No newline at end of file
+var _0x4980=['sequelize','STRING','INTEGER','ENUM','rrmemory','beepall','roundrobin'];(function(_0x17cda,_0x2ee4a2){var _0xf87505=function(_0x121480){while(--_0x121480){_0x17cda['push'](_0x17cda['shift']());}};_0xf87505(++_0x2ee4a2);}(_0x4980,0x17a));var _0x0498=function(_0xd3adfc,_0xe0afc){_0xd3adfc=_0xd3adfc-0x0;var _0x2f309a=_0x4980[_0xd3adfc];return _0x2f309a;};'use strict';var Sequelize=require(_0x0498('0x0'));module['exports']={'name':{'type':Sequelize[_0x0498('0x1')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x0498('0x2')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x0498('0x3')](_0x0498('0x4'),_0x0498('0x5'),_0x0498('0x6'))}};
\ No newline at end of file
index 5f55da2..7bda160 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe21=['then','destroy','get','OpenchannelQueues','UserProfileResource','error','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','includeAll','include','keys','find','catch','create','body','user','role','userProfileId','autoAssociation','update','params','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','findAll','User','findAndCountAll','UserId','agent','openchannelPause','updatedAt','rows','format','%s/%s','createdAt','getTeams','Team','ids','online','flatMap','sequelize','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','Agents','select','field','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','omit','spread','userOpenchannelQueue:save','userOpenchannelQueue:remove','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','sendStatus','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save'];(function(_0x17b6e3,_0x4522ed){var _0x3906f3=function(_0x430f87){while(--_0x430f87){_0x17b6e3['push'](_0x17b6e3['shift']());}};_0x3906f3(++_0x4522ed);}(_0xfe21,0x64));var _0x1fe2=function(_0x2eb3e1,_0x5a950c){_0x2eb3e1=_0x2eb3e1-0x0;var _0x33f1ac=_0xfe21[_0x2eb3e1];return _0x33f1ac;};'use strict';var emlformat=require(_0x1fe2('0x0'));var rimraf=require(_0x1fe2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1fe2('0x2'));var rp=require(_0x1fe2('0x3'));var moment=require(_0x1fe2('0x4'));var BPromise=require(_0x1fe2('0x5'));var Mustache=require('mustache');var util=require(_0x1fe2('0x6'));var path=require(_0x1fe2('0x7'));var sox=require(_0x1fe2('0x8'));var csv=require('to-csv');var ejs=require(_0x1fe2('0x9'));var fs=require('fs');var fs_extra=require(_0x1fe2('0xa'));var _=require('lodash');var squel=require(_0x1fe2('0xb'));var crypto=require('crypto');var jsforce=require(_0x1fe2('0xc'));var deskjs=require(_0x1fe2('0xd'));var toCsv=require(_0x1fe2('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1fe2('0xf'));var authService=require(_0x1fe2('0x10'));var qs=require(_0x1fe2('0x11'));var as=require(_0x1fe2('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1fe2('0x13'))(_0x1fe2('0x14'));var utils=require('../../config/utils');var config=require(_0x1fe2('0x15'));var licenseUtil=require(_0x1fe2('0x16'));var db=require(_0x1fe2('0x17'))['db'];config[_0x1fe2('0x18')]=_[_0x1fe2('0x19')](config[_0x1fe2('0x18')],{'host':_0x1fe2('0x1a'),'port':0x18eb});var socket=require(_0x1fe2('0x1b'))(new Redis(config[_0x1fe2('0x18')]));require(_0x1fe2('0x1c'))['register'](socket);function respondWithStatusCode(_0x51b082,_0x330a45){_0x330a45=_0x330a45||0xcc;return function(_0x1e0b1c){if(_0x1e0b1c){return _0x51b082[_0x1fe2('0x1d')](_0x330a45);}return _0x51b082['status'](_0x330a45)[_0x1fe2('0x1e')]();};}function respondWithResult(_0x4a9cad,_0xc4b291){_0xc4b291=_0xc4b291||0xc8;return function(_0x32d23b){if(_0x32d23b){return _0x4a9cad[_0x1fe2('0x1f')](_0xc4b291)[_0x1fe2('0x20')](_0x32d23b);}};}function respondWithFilteredResult(_0x40de6e,_0x348b20){return function(_0x100055){if(_0x100055){var _0x3e3210=typeof _0x348b20[_0x1fe2('0x21')]==='undefined'&&typeof _0x348b20[_0x1fe2('0x22')]==='undefined';var _0x1729cf=_0x100055[_0x1fe2('0x23')];var _0x1aebdb=_0x3e3210?0x0:_0x348b20[_0x1fe2('0x21')];var _0x1c31e5=_0x3e3210?_0x100055[_0x1fe2('0x23')]:_0x348b20['offset']+_0x348b20[_0x1fe2('0x22')];var _0x3dd471;if(_0x1c31e5>=_0x1729cf){_0x1c31e5=_0x1729cf;_0x3dd471=0xc8;}else{_0x3dd471=0xce;}_0x40de6e[_0x1fe2('0x1f')](_0x3dd471);return _0x40de6e[_0x1fe2('0x24')](_0x1fe2('0x25'),_0x1aebdb+'-'+_0x1c31e5+'/'+_0x1729cf)[_0x1fe2('0x20')](_0x100055);}return null;};}function patchUpdates(_0x5b1918){return function(_0xb4f432){try{jsonpatch[_0x1fe2('0x26')](_0xb4f432,_0x5b1918,!![]);}catch(_0x45039e){return BPromise[_0x1fe2('0x27')](_0x45039e);}return _0xb4f432[_0x1fe2('0x28')]();};}function saveUpdates(_0x23512e,_0x4a8371){return function(_0x4bb07d){if(_0x4bb07d){return _0x4bb07d['update'](_0x23512e)[_0x1fe2('0x29')](function(_0xebab06){return _0xebab06;});}return null;};}function removeEntity(_0x59dcd2,_0x235e5c){return function(_0x22216f){if(_0x22216f){return _0x22216f[_0x1fe2('0x2a')]()['then'](function(){var _0x5a4cc6=_0x22216f[_0x1fe2('0x2b')]({'plain':!![]});var _0x502d78=_0x1fe2('0x2c');return db[_0x1fe2('0x2d')][_0x1fe2('0x2a')]({'where':{'type':_0x502d78,'resourceId':_0x5a4cc6['id']}})[_0x1fe2('0x29')](function(){return _0x22216f;});})[_0x1fe2('0x29')](function(){_0x59dcd2[_0x1fe2('0x1f')](0xcc)[_0x1fe2('0x1e')]();});}};}function handleEntityNotFound(_0x20cb72,_0x5ff517){return function(_0x2c509a){if(!_0x2c509a){_0x20cb72[_0x1fe2('0x1d')](0x194);}return _0x2c509a;};}function handleError(_0x522405,_0x56f8b0){_0x56f8b0=_0x56f8b0||0x1f4;return function(_0x712c9f){logger[_0x1fe2('0x2e')](_0x712c9f[_0x1fe2('0x2f')]);if(_0x712c9f[_0x1fe2('0x30')]){delete _0x712c9f[_0x1fe2('0x30')];}_0x522405[_0x1fe2('0x1f')](_0x56f8b0)[_0x1fe2('0x31')](_0x712c9f);};}exports[_0x1fe2('0x32')]=function(_0x492a1a,_0x4a45e5){var _0x2e0c73={},_0x327614={},_0x32d9f8={'count':0x0,'rows':[]};var _0x57f3d8=_[_0x1fe2('0x33')](db[_0x1fe2('0x34')][_0x1fe2('0x35')],function(_0x5aaaba){return{'name':_0x5aaaba[_0x1fe2('0x36')],'type':_0x5aaaba[_0x1fe2('0x37')][_0x1fe2('0x38')]};});_0x327614[_0x1fe2('0x39')]=_['map'](_0x57f3d8,_0x1fe2('0x30'));_0x327614['query']=_['keys'](_0x492a1a[_0x1fe2('0x3a')]);_0x327614['filters']=_[_0x1fe2('0x3b')](_0x327614[_0x1fe2('0x39')],_0x327614[_0x1fe2('0x3a')]);_0x2e0c73[_0x1fe2('0x3c')]=_[_0x1fe2('0x3b')](_0x327614[_0x1fe2('0x39')],qs[_0x1fe2('0x3d')](_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x3d')]));_0x2e0c73[_0x1fe2('0x3c')]=_0x2e0c73[_0x1fe2('0x3c')][_0x1fe2('0x3e')]?_0x2e0c73[_0x1fe2('0x3c')]:_0x327614['model'];if(!_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x3f')](_0x1fe2('0x40'))){_0x2e0c73[_0x1fe2('0x22')]=qs['limit'](_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x22')]);_0x2e0c73['offset']=qs['offset'](_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x21')]);}_0x2e0c73[_0x1fe2('0x41')]=qs['sort'](_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x42')]);_0x2e0c73[_0x1fe2('0x43')]=qs[_0x1fe2('0x44')](_[_0x1fe2('0x45')](_0x492a1a['query'],_0x327614[_0x1fe2('0x44')]),_0x57f3d8);if(_0x492a1a[_0x1fe2('0x3a')]['filter']){_0x2e0c73[_0x1fe2('0x43')]=_[_0x1fe2('0x46')](_0x2e0c73['where'],{'$or':_['map'](_0x57f3d8,function(_0x531a74){if(_0x531a74[_0x1fe2('0x37')]!==_0x1fe2('0x47')){var _0x2fd9c4={};_0x2fd9c4[_0x531a74['name']]={'$like':'%'+_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x48')]+'%'};return _0x2fd9c4;}})});}_0x2e0c73=_[_0x1fe2('0x46')]({},_0x2e0c73,_0x492a1a[_0x1fe2('0x49')]);var _0x178d55={'where':_0x2e0c73[_0x1fe2('0x43')]};return db['OpenchannelQueue'][_0x1fe2('0x23')](_0x178d55)[_0x1fe2('0x29')](function(_0x486a14){_0x32d9f8[_0x1fe2('0x23')]=_0x486a14;if(_0x492a1a[_0x1fe2('0x3a')][_0x1fe2('0x4a')]){_0x2e0c73[_0x1fe2('0x4b')]=[{'all':!![]}];}return db[_0x1fe2('0x34')]['findAll'](_0x2e0c73);})[_0x1fe2('0x29')](function(_0x297fdc){_0x32d9f8['rows']=_0x297fdc;return _0x32d9f8;})[_0x1fe2('0x29')](respondWithFilteredResult(_0x4a45e5,_0x2e0c73))['catch'](handleError(_0x4a45e5,null));};exports['show']=function(_0x135eb9,_0x546ce5){var _0x2d89ec={'raw':!![],'where':{'id':_0x135eb9['params']['id']}},_0x374f05={};_0x374f05[_0x1fe2('0x39')]=_['keys'](db[_0x1fe2('0x34')][_0x1fe2('0x35')]);_0x374f05[_0x1fe2('0x3a')]=_[_0x1fe2('0x4c')](_0x135eb9[_0x1fe2('0x3a')]);_0x374f05[_0x1fe2('0x44')]=_[_0x1fe2('0x3b')](_0x374f05['model'],_0x374f05[_0x1fe2('0x3a')]);_0x2d89ec[_0x1fe2('0x3c')]=_['intersection'](_0x374f05[_0x1fe2('0x39')],qs[_0x1fe2('0x3d')](_0x135eb9[_0x1fe2('0x3a')]['fields']));_0x2d89ec[_0x1fe2('0x3c')]=_0x2d89ec['attributes'][_0x1fe2('0x3e')]?_0x2d89ec[_0x1fe2('0x3c')]:_0x374f05[_0x1fe2('0x39')];if(_0x135eb9['query'][_0x1fe2('0x4a')]){_0x2d89ec[_0x1fe2('0x4b')]=[{'all':!![]}];}_0x2d89ec=_[_0x1fe2('0x46')]({},_0x2d89ec,_0x135eb9[_0x1fe2('0x49')]);return db[_0x1fe2('0x34')][_0x1fe2('0x4d')](_0x2d89ec)[_0x1fe2('0x29')](handleEntityNotFound(_0x546ce5,null))[_0x1fe2('0x29')](respondWithResult(_0x546ce5,null))[_0x1fe2('0x4e')](handleError(_0x546ce5,null));};exports[_0x1fe2('0x4f')]=function(_0x5dd626,_0x3d96a7){return db[_0x1fe2('0x34')][_0x1fe2('0x4f')](_0x5dd626[_0x1fe2('0x50')],{})[_0x1fe2('0x29')](function(_0x4a00d6){var _0x99156a=_0x5dd626[_0x1fe2('0x51')][_0x1fe2('0x2b')]({'plain':!![]});if(!_0x99156a)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x99156a[_0x1fe2('0x52')]===_0x1fe2('0x51')){var _0x28f223=_0x4a00d6[_0x1fe2('0x2b')]({'plain':!![]});var _0x3ebaf7='OpenchannelQueues';return db['UserProfileSection'][_0x1fe2('0x4d')]({'where':{'name':_0x3ebaf7,'userProfileId':_0x99156a[_0x1fe2('0x53')]},'raw':!![]})['then'](function(_0x4f5fb1){if(_0x4f5fb1&&_0x4f5fb1[_0x1fe2('0x54')]===0x0){return db[_0x1fe2('0x2d')][_0x1fe2('0x4f')]({'name':_0x28f223[_0x1fe2('0x30')],'resourceId':_0x28f223['id'],'type':_0x4f5fb1['name'],'sectionId':_0x4f5fb1['id']},{})[_0x1fe2('0x29')](function(){return _0x4a00d6;});}else{return _0x4a00d6;}})['catch'](function(_0x4bdf17){logger[_0x1fe2('0x2e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4bdf17);throw _0x4bdf17;});}return _0x4a00d6;})[_0x1fe2('0x29')](respondWithResult(_0x3d96a7,0xc9))[_0x1fe2('0x4e')](handleError(_0x3d96a7,null));};exports[_0x1fe2('0x55')]=function(_0x5062e3,_0x551413){if(_0x5062e3[_0x1fe2('0x50')]['id']){delete _0x5062e3[_0x1fe2('0x50')]['id'];}return db[_0x1fe2('0x34')]['find']({'where':{'id':_0x5062e3[_0x1fe2('0x56')]['id']}})['then'](handleEntityNotFound(_0x551413,null))[_0x1fe2('0x29')](saveUpdates(_0x5062e3[_0x1fe2('0x50')],null))['then'](respondWithResult(_0x551413,null))[_0x1fe2('0x4e')](handleError(_0x551413,null));};exports[_0x1fe2('0x2a')]=function(_0x4e3d07,_0x397106){return db['OpenchannelQueue'][_0x1fe2('0x4d')]({'where':{'id':_0x4e3d07[_0x1fe2('0x56')]['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0x397106,null))[_0x1fe2('0x29')](removeEntity(_0x397106,null))[_0x1fe2('0x4e')](handleError(_0x397106,null));};exports[_0x1fe2('0x57')]=function(_0x515602,_0x3e3d17){return db['OpenchannelQueue'][_0x1fe2('0x57')]()[_0x1fe2('0x29')](respondWithResult(_0x3e3d17,null))[_0x1fe2('0x4e')](handleError(_0x3e3d17,null));};exports[_0x1fe2('0x58')]=function(_0x13ca90,_0x5f531f,_0x34b829){var _0x1c281d={'raw':!![],'where':{}},_0x4a4863={},_0x5547d7;return db['OpenchannelQueue'][_0x1fe2('0x59')]({'where':{'id':_0x13ca90[_0x1fe2('0x56')]['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0x5f531f,null))[_0x1fe2('0x29')](function(_0x505884){if(_0x505884){_0x5547d7=_0x505884[_0x1fe2('0x2b')]({'plain':!![]});_0x4a4863[_0x1fe2('0x39')]=_[_0x1fe2('0x4c')](db[_0x1fe2('0x5a')][_0x1fe2('0x35')]);_0x4a4863[_0x1fe2('0x3a')]=_['keys'](_0x13ca90[_0x1fe2('0x3a')]);_0x4a4863[_0x1fe2('0x44')]=_['intersection'](_0x4a4863[_0x1fe2('0x39')],_0x4a4863[_0x1fe2('0x3a')]);_0x1c281d['attributes']=_[_0x1fe2('0x3b')](_0x4a4863['model'],qs[_0x1fe2('0x3d')](_0x13ca90[_0x1fe2('0x3a')]['fields']));_0x1c281d['attributes']=_0x1c281d[_0x1fe2('0x3c')][_0x1fe2('0x3e')]?_0x1c281d[_0x1fe2('0x3c')]:_0x4a4863[_0x1fe2('0x39')];if(!_0x13ca90['query'][_0x1fe2('0x3f')]('nolimit')){_0x1c281d[_0x1fe2('0x22')]=qs[_0x1fe2('0x22')](_0x13ca90['query'][_0x1fe2('0x22')]);_0x1c281d[_0x1fe2('0x21')]=qs[_0x1fe2('0x21')](_0x13ca90[_0x1fe2('0x3a')][_0x1fe2('0x21')]);}_0x1c281d[_0x1fe2('0x41')]=qs[_0x1fe2('0x42')](_0x13ca90[_0x1fe2('0x3a')][_0x1fe2('0x42')]);_0x1c281d['where']=qs['filters'](_[_0x1fe2('0x45')](_0x13ca90[_0x1fe2('0x3a')],_0x4a4863[_0x1fe2('0x44')]));_0x1c281d[_0x1fe2('0x43')][_0x1fe2('0x5b')]=_0x505884['id'];if(_0x13ca90[_0x1fe2('0x3a')][_0x1fe2('0x48')]){_0x1c281d[_0x1fe2('0x43')]=_[_0x1fe2('0x46')](_0x1c281d[_0x1fe2('0x43')],{'$or':_[_0x1fe2('0x33')](_0x1c281d[_0x1fe2('0x3c')],function(_0x25a5e1){var _0x146f09={};_0x146f09[_0x25a5e1]={'$like':'%'+_0x13ca90['query'][_0x1fe2('0x48')]+'%'};return _0x146f09;})});}_0x1c281d=_[_0x1fe2('0x46')]({},_0x1c281d,_0x13ca90[_0x1fe2('0x49')]);return db[_0x1fe2('0x5a')][_0x1fe2('0x5c')](_0x1c281d);}})[_0x1fe2('0x29')](function(_0x4acbc6){if(_0x4acbc6){return db[_0x1fe2('0x5d')][_0x1fe2('0x5e')]({'where':{'id':_[_0x1fe2('0x33')](_0x4acbc6,_0x1fe2('0x5f')),'role':_0x1fe2('0x60')},'attributes':['id',_0x1fe2('0x30'),_0x1fe2('0x61'),_0x1fe2('0x62'),'createdAt']});}})[_0x1fe2('0x29')](function(_0x576d1c){if(_0x576d1c){return{'count':_0x576d1c[_0x1fe2('0x23')],'rows':_[_0x1fe2('0x33')](_0x576d1c[_0x1fe2('0x63')],function(_0x46aec0){return{'membername':_0x46aec0[_0x1fe2('0x30')],'UserId':_0x46aec0['id'],'queue_name':_0x5547d7[_0x1fe2('0x30')],'OpenchannelQueueId':_0x5547d7['id'],'interface':util[_0x1fe2('0x64')](_0x1fe2('0x65'),'SIP',_0x46aec0['name']),'penalty':0x0,'paused':_0x46aec0[_0x1fe2('0x61')],'createdAt':_0x46aec0[_0x1fe2('0x66')],'updatedAt':_0x46aec0[_0x1fe2('0x62')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x5f531f,_0x1c281d))[_0x1fe2('0x4e')](handleError(_0x5f531f,null));};exports[_0x1fe2('0x67')]=function(_0x18f597,_0x766e64,_0x3c71b1){var _0x5001ef={};var _0xba0652={};var _0x407a6f;var _0x3c3fb7;return db[_0x1fe2('0x34')][_0x1fe2('0x59')]({'where':{'id':_0x18f597['params']['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0x766e64,null))[_0x1fe2('0x29')](function(_0x37c210){if(_0x37c210){_0x407a6f=_0x37c210;_0xba0652[_0x1fe2('0x39')]=_['keys'](db[_0x1fe2('0x68')][_0x1fe2('0x35')]);_0xba0652[_0x1fe2('0x3a')]=_[_0x1fe2('0x4c')](_0x18f597['query']);_0xba0652['filters']=_[_0x1fe2('0x3b')](_0xba0652[_0x1fe2('0x39')],_0xba0652[_0x1fe2('0x3a')]);_0x5001ef['attributes']=_[_0x1fe2('0x3b')](_0xba0652[_0x1fe2('0x39')],qs[_0x1fe2('0x3d')](_0x18f597['query'][_0x1fe2('0x3d')]));_0x5001ef[_0x1fe2('0x3c')]=_0x5001ef['attributes'][_0x1fe2('0x3e')]?_0x5001ef['attributes']:_0xba0652['model'];_0x5001ef[_0x1fe2('0x41')]=qs[_0x1fe2('0x42')](_0x18f597['query'][_0x1fe2('0x42')]);_0x5001ef['where']=qs[_0x1fe2('0x44')](_['pick'](_0x18f597[_0x1fe2('0x3a')],_0xba0652[_0x1fe2('0x44')]));if(_0x18f597[_0x1fe2('0x3a')][_0x1fe2('0x48')]){_0x5001ef['where']=_[_0x1fe2('0x46')](_0x5001ef['where'],{'$or':_['map'](_0x5001ef[_0x1fe2('0x3c')],function(_0x4530cc){var _0x5b8062={};_0x5b8062[_0x4530cc]={'$like':'%'+_0x18f597['query'][_0x1fe2('0x48')]+'%'};return _0x5b8062;})});}_0x5001ef=_[_0x1fe2('0x46')]({},_0x5001ef,_0x18f597[_0x1fe2('0x49')]);return _0x407a6f[_0x1fe2('0x67')](_0x5001ef);}})[_0x1fe2('0x29')](function(_0xfe9d83){if(_0xfe9d83){_0x3c3fb7=_0xfe9d83[_0x1fe2('0x3e')];if(!_0x18f597[_0x1fe2('0x3a')][_0x1fe2('0x3f')](_0x1fe2('0x40'))){_0x5001ef[_0x1fe2('0x22')]=qs[_0x1fe2('0x22')](_0x18f597[_0x1fe2('0x3a')]['limit']);_0x5001ef[_0x1fe2('0x21')]=qs[_0x1fe2('0x21')](_0x18f597['query']['offset']);}return _0x407a6f[_0x1fe2('0x67')](_0x5001ef);}})[_0x1fe2('0x29')](function(_0x35deb6){if(_0x35deb6){return _0x35deb6?{'count':_0x3c3fb7,'rows':_0x35deb6}:null;}})[_0x1fe2('0x29')](respondWithResult(_0x766e64,null))['catch'](handleError(_0x766e64,null));};exports['addTeams']=function(_0x20550d,_0x27db00,_0x55ea77){var _0x5e0a3c=_0x20550d['body'][_0x1fe2('0x69')];return db['Team'][_0x1fe2('0x5c')]({'where':{'id':_0x5e0a3c},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id','name',_0x1fe2('0x6a'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x400268){if(_0x400268){var _0x2ed3f6=_[_0x1fe2('0x6b')](_0x400268,function(_0x20a43e){var _0xead55b=_0x20a43e[_0x1fe2('0x2b')]({'plain':!![]});return _0xead55b['Agents'];});return db[_0x1fe2('0x34')][_0x1fe2('0x4d')]({'where':{'id':_0x20550d[_0x1fe2('0x56')]['id']}})['then'](function(_0x181c02){return db[_0x1fe2('0x6c')][_0x1fe2('0x6d')](function(_0x21b262){return _0x181c02[_0x1fe2('0x6e')](_0x5e0a3c,{'transaction':_0x21b262})[_0x1fe2('0x29')](function(){return BPromise[_0x1fe2('0x6f')](_0x2ed3f6,function(_0x2528fa){return db['UserOpenchannelQueue'][_0x1fe2('0x70')]({'where':{'UserId':_0x2528fa['id'],'OpenchannelQueueId':_0x20550d[_0x1fe2('0x56')]['id']},'transaction':_0x21b262});});})[_0x1fe2('0x29')](function(){_0x2ed3f6[_0x1fe2('0x71')](function(_0x27d767){socket[_0x1fe2('0x72')]('userOpenchannelQueue:save',{'UserId':_0x27d767['id'],'OpenchannelQueueId':_0x181c02['id']});});});});});}})['then'](respondWithStatusCode(_0x27db00,null))[_0x1fe2('0x4e')](handleError(_0x27db00,null));};exports[_0x1fe2('0x73')]=function(_0x141502,_0x48780d,_0xbdad9d){return db[_0x1fe2('0x68')][_0x1fe2('0x5c')]({'where':{'id':_0x141502[_0x1fe2('0x3a')][_0x1fe2('0x69')]},'attributes':['id'],'include':[{'model':db[_0x1fe2('0x5d')],'as':_0x1fe2('0x74'),'attributes':['id'],'raw':!![]}]})[_0x1fe2('0x29')](handleEntityNotFound(_0x48780d,null))['then'](function(_0xcd396a){var _0x4b03b6=_[_0x1fe2('0x33')](_0xcd396a,'id');var _0x404ba9=[];var _0x365aba=[];var _0x2dbbc8=squel[_0x1fe2('0x75')]();_0x2dbbc8[_0x1fe2('0x76')]('tq.TeamId')[_0x1fe2('0x77')]('team_has_openchannel_queues','tq')[_0x1fe2('0x78')](_0x1fe2('0x79'),'ut',_0x1fe2('0x7a'))[_0x1fe2('0x43')](_0x1fe2('0x7b'),_0x141502[_0x1fe2('0x56')]['id']);for(var _0x39a4e7=0x0;_0x39a4e7<_0xcd396a[_0x1fe2('0x3e')];_0x39a4e7+=0x1){let _0x2354c7=_0xcd396a[_0x39a4e7];for(var _0x59c27b=0x0;_0x59c27b<_0x2354c7[_0x1fe2('0x74')][_0x1fe2('0x3e')];_0x59c27b+=0x1){let _0x46546c=_0x2354c7[_0x1fe2('0x74')][_0x59c27b];var _0x383f68=_0x2dbbc8[_0x1fe2('0x7c')]();_0x383f68[_0x1fe2('0x43')](_0x1fe2('0x7d'),_0x46546c['id']);_0x365aba['push'](db[_0x1fe2('0x6c')][_0x1fe2('0x3a')](_0x383f68[_0x1fe2('0x7e')](),{'type':db[_0x1fe2('0x6c')][_0x1fe2('0x7f')]['SELECT']})[_0x1fe2('0x29')](function(_0x2c16a3){if(_0x2c16a3[_0x1fe2('0x3e')]===0x1){return _0x46546c['id'];}else{var _0x5a0ccd=_['every'](_[_0x1fe2('0x33')](_0x2c16a3,_0x1fe2('0x80')),function(_0x344d50){return _[_0x1fe2('0x81')](_0x4b03b6,_0x344d50);});if(_0x5a0ccd){return _0x46546c['id'];}}}));}}return BPromise[_0x1fe2('0x82')](_0x365aba)[_0x1fe2('0x29')](function(_0x205954){_0x404ba9=_(_0x404ba9)[_0x1fe2('0x83')](_0x205954)[_0x1fe2('0x84')]()[_0x1fe2('0x85')]();return db['OpenchannelQueue'][_0x1fe2('0x4d')]({'where':{'id':_0x141502[_0x1fe2('0x56')]['id']}})['then'](function(_0x284356){return db[_0x1fe2('0x6c')]['transaction'](function(_0x29cacf){return _0x284356[_0x1fe2('0x73')](_0x141502[_0x1fe2('0x3a')][_0x1fe2('0x69')],{'transaction':_0x29cacf})['then'](function(){if(!_[_0x1fe2('0x86')](_0x404ba9)){return _0x284356[_0x1fe2('0x87')](_0x404ba9,{'transaction':_0x29cacf});}})[_0x1fe2('0x29')](function(){_0x404ba9[_0x1fe2('0x71')](function(_0x260bc8){socket[_0x1fe2('0x72')]('userOpenchannelQueue:remove',{'UserId':_0x260bc8,'OpenchannelQueueId':_0x284356['id']});});});});});});})[_0x1fe2('0x29')](respondWithStatusCode(_0x48780d,null))[_0x1fe2('0x4e')](handleError(_0x48780d,null));};exports['addAgents']=function(_0x2fa26b,_0xb27b9f,_0x5e7646){return db['OpenchannelQueue']['find']({'where':{'id':_0x2fa26b[_0x1fe2('0x56')]['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0xb27b9f,null))['then'](function(_0x446b81){if(_0x446b81){return _0x446b81['addAgents'](_0x2fa26b[_0x1fe2('0x50')][_0x1fe2('0x69')],_[_0x1fe2('0x88')](_0x2fa26b[_0x1fe2('0x50')],[_0x1fe2('0x69'),'id'])||{})[_0x1fe2('0x89')](function(_0x2bfc71){for(var _0xf41ac5=0x0;_0xf41ac5<_0x2fa26b['body']['ids'][_0x1fe2('0x3e')];_0xf41ac5+=0x1){socket[_0x1fe2('0x72')](_0x1fe2('0x8a'),{'UserId':Number(_0x2fa26b[_0x1fe2('0x50')]['ids'][_0xf41ac5]),'OpenchannelQueueId':Number(_0x2fa26b[_0x1fe2('0x56')]['id'])});}return _0x2bfc71;});}})[_0x1fe2('0x29')](respondWithResult(_0xb27b9f,null))['catch'](handleError(_0xb27b9f,null));};exports[_0x1fe2('0x87')]=function(_0x12d84e,_0x20980b,_0x1f7300){return db[_0x1fe2('0x34')]['find']({'where':{'id':_0x12d84e[_0x1fe2('0x56')]['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0x20980b,null))[_0x1fe2('0x29')](function(_0x45408f){if(_0x45408f){return _0x45408f[_0x1fe2('0x87')](_0x12d84e[_0x1fe2('0x3a')][_0x1fe2('0x69')])[_0x1fe2('0x29')](function(){if(_['isArray'](_0x12d84e[_0x1fe2('0x3a')][_0x1fe2('0x69')])){for(var _0x190747=0x0;_0x190747<_0x12d84e[_0x1fe2('0x3a')]['ids'][_0x1fe2('0x3e')];_0x190747+=0x1){socket[_0x1fe2('0x72')](_0x1fe2('0x8b'),{'UserId':Number(_0x12d84e[_0x1fe2('0x3a')][_0x1fe2('0x69')][_0x190747]),'OpenchannelQueueId':Number(_0x12d84e[_0x1fe2('0x56')]['id'])});}}else{socket[_0x1fe2('0x72')](_0x1fe2('0x8b'),{'UserId':Number(_0x12d84e[_0x1fe2('0x3a')][_0x1fe2('0x69')]),'OpenchannelQueueId':Number(_0x12d84e[_0x1fe2('0x56')]['id'])});}});}})[_0x1fe2('0x29')](respondWithStatusCode(_0x20980b,null))['catch'](handleError(_0x20980b,null));};exports['getAgents']=function(_0x15d7ff,_0x38b142,_0x5c3231){var _0x427083={};var _0x357d4d={};var _0x43464c;var _0x3b1c0b;return db[_0x1fe2('0x34')]['findOne']({'where':{'id':_0x15d7ff['params']['id']}})[_0x1fe2('0x29')](handleEntityNotFound(_0x38b142,null))[_0x1fe2('0x29')](function(_0x41c68c){if(_0x41c68c){_0x43464c=_0x41c68c;_0x357d4d['model']=_[_0x1fe2('0x4c')](db[_0x1fe2('0x5d')]['rawAttributes']);_0x357d4d[_0x1fe2('0x3a')]=_[_0x1fe2('0x4c')](_0x15d7ff[_0x1fe2('0x3a')]);_0x357d4d[_0x1fe2('0x44')]=_[_0x1fe2('0x3b')](_0x357d4d[_0x1fe2('0x39')],_0x357d4d['query']);_0x427083[_0x1fe2('0x3c')]=_[_0x1fe2('0x3b')](_0x357d4d[_0x1fe2('0x39')],qs[_0x1fe2('0x3d')](_0x15d7ff[_0x1fe2('0x3a')][_0x1fe2('0x3d')]));_0x427083[_0x1fe2('0x3c')]=_0x427083[_0x1fe2('0x3c')][_0x1fe2('0x3e')]?_0x427083[_0x1fe2('0x3c')]:_0x357d4d[_0x1fe2('0x39')];_0x427083[_0x1fe2('0x41')]=qs[_0x1fe2('0x42')](_0x15d7ff[_0x1fe2('0x3a')][_0x1fe2('0x42')]);_0x427083['where']=qs[_0x1fe2('0x44')](_[_0x1fe2('0x45')](_0x15d7ff[_0x1fe2('0x3a')],_0x357d4d['filters']));if(_0x15d7ff[_0x1fe2('0x3a')]['filter']){_0x427083['where']=_[_0x1fe2('0x46')](_0x427083[_0x1fe2('0x43')],{'$or':_[_0x1fe2('0x33')](_0x427083['attributes'],function(_0x2cfbfa){var _0x1e90ab={};_0x1e90ab[_0x2cfbfa]={'$like':'%'+_0x15d7ff[_0x1fe2('0x3a')][_0x1fe2('0x48')]+'%'};return _0x1e90ab;})});}_0x427083=_['merge']({},_0x427083,_0x15d7ff[_0x1fe2('0x49')]);return _0x43464c[_0x1fe2('0x8c')](_0x427083);}})[_0x1fe2('0x29')](function(_0x243243){if(_0x243243){_0x3b1c0b=_0x243243['length'];if(!_0x15d7ff[_0x1fe2('0x3a')]['hasOwnProperty'](_0x1fe2('0x40'))){_0x427083[_0x1fe2('0x22')]=qs[_0x1fe2('0x22')](_0x15d7ff[_0x1fe2('0x3a')]['limit']);_0x427083[_0x1fe2('0x21')]=qs[_0x1fe2('0x21')](_0x15d7ff[_0x1fe2('0x3a')][_0x1fe2('0x21')]);}return _0x43464c['getAgents'](_0x427083);}})[_0x1fe2('0x29')](function(_0x5c355b){if(_0x5c355b){return _0x5c355b?{'count':_0x3b1c0b,'rows':_0x5c355b}:null;}})['then'](respondWithResult(_0x38b142,null))['catch'](handleError(_0x38b142,null));};
\ No newline at end of file
+var _0x1667=['Content-Range','reject','update','then','destroy','OpenchannelQueues','UserProfileResource','end','sendStatus','error','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','OpenchannelQueue','findAll','rows','catch','params','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','get','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','agent','openchannelPause','createdAt','format','updatedAt','getTeams','Team','hasOwnProperty','ids','Agents','interface','sequelize','transaction','addTeams','findOrCreate','forEach','emit','removeTeams','field','user_has_teams','OpenchannelQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','value','isEmpty','userOpenchannelQueue:remove','addAgents','spread','removeAgents','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','./openchannelQueue.socket','register','status','json','offset','undefined','count','limit'];(function(_0x2c534a,_0x18a19e){var _0x3f5c99=function(_0x4c085f){while(--_0x4c085f){_0x2c534a['push'](_0x2c534a['shift']());}};_0x3f5c99(++_0x18a19e);}(_0x1667,0x1e7));var _0x7166=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x1667[_0x2be8c2];return _0x97f531;};'use strict';var emlformat=require(_0x7166('0x0'));var rimraf=require(_0x7166('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7166('0x2'));var rp=require(_0x7166('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x7166('0x4'));var util=require(_0x7166('0x5'));var path=require('path');var sox=require(_0x7166('0x6'));var csv=require('to-csv');var ejs=require(_0x7166('0x7'));var fs=require('fs');var fs_extra=require(_0x7166('0x8'));var _=require(_0x7166('0x9'));var squel=require(_0x7166('0xa'));var crypto=require(_0x7166('0xb'));var jsforce=require(_0x7166('0xc'));var deskjs=require(_0x7166('0xd'));var toCsv=require(_0x7166('0xe'));var querystring=require(_0x7166('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x7166('0x10'));var as=require(_0x7166('0x11'));var hardwareService=require(_0x7166('0x12'));var logger=require(_0x7166('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x7166('0x14'));var licenseUtil=require(_0x7166('0x15'));var db=require(_0x7166('0x16'))['db'];config[_0x7166('0x17')]=_[_0x7166('0x18')](config[_0x7166('0x17')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7166('0x17')]));require(_0x7166('0x19'))[_0x7166('0x1a')](socket);function respondWithStatusCode(_0x40abf7,_0x15ea50){_0x15ea50=_0x15ea50||0xcc;return function(_0x431489){if(_0x431489){return _0x40abf7['sendStatus'](_0x15ea50);}return _0x40abf7[_0x7166('0x1b')](_0x15ea50)['end']();};}function respondWithResult(_0xe041ce,_0x34594f){_0x34594f=_0x34594f||0xc8;return function(_0x1897dd){if(_0x1897dd){return _0xe041ce['status'](_0x34594f)[_0x7166('0x1c')](_0x1897dd);}};}function respondWithFilteredResult(_0x4cd644,_0x349008){return function(_0xfdb07d){if(_0xfdb07d){var _0x2ba418=typeof _0x349008[_0x7166('0x1d')]===_0x7166('0x1e')&&typeof _0x349008['limit']==='undefined';var _0x1462de=_0xfdb07d[_0x7166('0x1f')];var _0x26dc8e=_0x2ba418?0x0:_0x349008[_0x7166('0x1d')];var _0x216860=_0x2ba418?_0xfdb07d[_0x7166('0x1f')]:_0x349008[_0x7166('0x1d')]+_0x349008[_0x7166('0x20')];var _0x379f1e;if(_0x216860>=_0x1462de){_0x216860=_0x1462de;_0x379f1e=0xc8;}else{_0x379f1e=0xce;}_0x4cd644[_0x7166('0x1b')](_0x379f1e);return _0x4cd644['set'](_0x7166('0x21'),_0x26dc8e+'-'+_0x216860+'/'+_0x1462de)[_0x7166('0x1c')](_0xfdb07d);}return null;};}function patchUpdates(_0x35b24b){return function(_0x4e88e2){try{jsonpatch['apply'](_0x4e88e2,_0x35b24b,!![]);}catch(_0x2a3589){return BPromise[_0x7166('0x22')](_0x2a3589);}return _0x4e88e2['save']();};}function saveUpdates(_0x253f51,_0xb443bc){return function(_0x3e23f8){if(_0x3e23f8){return _0x3e23f8[_0x7166('0x23')](_0x253f51)[_0x7166('0x24')](function(_0x46edea){return _0x46edea;});}return null;};}function removeEntity(_0x5a68cd,_0x351d90){return function(_0x25124a){if(_0x25124a){return _0x25124a[_0x7166('0x25')]()[_0x7166('0x24')](function(){var _0x1f87f2=_0x25124a['get']({'plain':!![]});var _0xa39d46=_0x7166('0x26');return db[_0x7166('0x27')][_0x7166('0x25')]({'where':{'type':_0xa39d46,'resourceId':_0x1f87f2['id']}})[_0x7166('0x24')](function(){return _0x25124a;});})[_0x7166('0x24')](function(){_0x5a68cd[_0x7166('0x1b')](0xcc)[_0x7166('0x28')]();});}};}function handleEntityNotFound(_0x370345,_0x322b56){return function(_0x280fec){if(!_0x280fec){_0x370345[_0x7166('0x29')](0x194);}return _0x280fec;};}function handleError(_0x9030f9,_0x2c0e14){_0x2c0e14=_0x2c0e14||0x1f4;return function(_0x4609b0){logger[_0x7166('0x2a')](_0x4609b0['stack']);if(_0x4609b0[_0x7166('0x2b')]){delete _0x4609b0['name'];}_0x9030f9['status'](_0x2c0e14)[_0x7166('0x2c')](_0x4609b0);};}exports[_0x7166('0x2d')]=function(_0xe8e9b3,_0xa1da50){var _0x15a542={},_0x16967e={},_0x336259={'count':0x0,'rows':[]};var _0x42cd53=_[_0x7166('0x2e')](db['OpenchannelQueue'][_0x7166('0x2f')],function(_0x49e876){return{'name':_0x49e876[_0x7166('0x30')],'type':_0x49e876['type'][_0x7166('0x31')]};});_0x16967e[_0x7166('0x32')]=_[_0x7166('0x2e')](_0x42cd53,_0x7166('0x2b'));_0x16967e[_0x7166('0x33')]=_[_0x7166('0x34')](_0xe8e9b3[_0x7166('0x33')]);_0x16967e[_0x7166('0x35')]=_[_0x7166('0x36')](_0x16967e['model'],_0x16967e[_0x7166('0x33')]);_0x15a542[_0x7166('0x37')]=_[_0x7166('0x36')](_0x16967e['model'],qs[_0x7166('0x38')](_0xe8e9b3[_0x7166('0x33')]['fields']));_0x15a542[_0x7166('0x37')]=_0x15a542[_0x7166('0x37')][_0x7166('0x39')]?_0x15a542['attributes']:_0x16967e['model'];if(!_0xe8e9b3['query']['hasOwnProperty'](_0x7166('0x3a'))){_0x15a542['limit']=qs[_0x7166('0x20')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x20')]);_0x15a542[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x1d')]);}_0x15a542[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3c')]);_0x15a542[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0xe8e9b3['query'],_0x16967e['filters']),_0x42cd53);if(_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3f')]){_0x15a542[_0x7166('0x3d')]=_['merge'](_0x15a542['where'],{'$or':_[_0x7166('0x2e')](_0x42cd53,function(_0x51d7fc){if(_0x51d7fc['type']!==_0x7166('0x40')){var _0x30264d={};_0x30264d[_0x51d7fc[_0x7166('0x2b')]]={'$like':'%'+_0xe8e9b3[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x30264d;}})});}_0x15a542=_[_0x7166('0x41')]({},_0x15a542,_0xe8e9b3['options']);var _0x1fa33b={'where':_0x15a542[_0x7166('0x3d')]};return db['OpenchannelQueue'][_0x7166('0x1f')](_0x1fa33b)['then'](function(_0x52aa17){_0x336259[_0x7166('0x1f')]=_0x52aa17;if(_0xe8e9b3['query'][_0x7166('0x42')]){_0x15a542[_0x7166('0x43')]=[{'all':!![]}];}return db[_0x7166('0x44')][_0x7166('0x45')](_0x15a542);})['then'](function(_0x3cd329){_0x336259[_0x7166('0x46')]=_0x3cd329;return _0x336259;})[_0x7166('0x24')](respondWithFilteredResult(_0xa1da50,_0x15a542))[_0x7166('0x47')](handleError(_0xa1da50,null));};exports['show']=function(_0x3bc0bd,_0x5cb465){var _0x3a7320={'raw':!![],'where':{'id':_0x3bc0bd[_0x7166('0x48')]['id']}},_0xcc9365={};_0xcc9365[_0x7166('0x32')]=_[_0x7166('0x34')](db[_0x7166('0x44')]['rawAttributes']);_0xcc9365[_0x7166('0x33')]=_['keys'](_0x3bc0bd[_0x7166('0x33')]);_0xcc9365[_0x7166('0x35')]=_['intersection'](_0xcc9365[_0x7166('0x32')],_0xcc9365[_0x7166('0x33')]);_0x3a7320[_0x7166('0x37')]=_[_0x7166('0x36')](_0xcc9365['model'],qs['fields'](_0x3bc0bd['query'][_0x7166('0x38')]));_0x3a7320[_0x7166('0x37')]=_0x3a7320[_0x7166('0x37')][_0x7166('0x39')]?_0x3a7320[_0x7166('0x37')]:_0xcc9365[_0x7166('0x32')];if(_0x3bc0bd[_0x7166('0x33')]['includeAll']){_0x3a7320[_0x7166('0x43')]=[{'all':!![]}];}_0x3a7320=_[_0x7166('0x41')]({},_0x3a7320,_0x3bc0bd[_0x7166('0x49')]);return db['OpenchannelQueue'][_0x7166('0x4a')](_0x3a7320)[_0x7166('0x24')](handleEntityNotFound(_0x5cb465,null))['then'](respondWithResult(_0x5cb465,null))['catch'](handleError(_0x5cb465,null));};exports['create']=function(_0x5d3cb3,_0x2f6640){return db[_0x7166('0x44')][_0x7166('0x4b')](_0x5d3cb3[_0x7166('0x4c')],{})[_0x7166('0x24')](function(_0x49c601){var _0x3eebb2=_0x5d3cb3[_0x7166('0x4d')]['get']({'plain':!![]});if(!_0x3eebb2)throw new Error(_0x7166('0x4e'));if(_0x3eebb2[_0x7166('0x4f')]==='user'){var _0x4be5c7=_0x49c601['get']({'plain':!![]});var _0x2bd8e5='OpenchannelQueues';return db[_0x7166('0x50')][_0x7166('0x4a')]({'where':{'name':_0x2bd8e5,'userProfileId':_0x3eebb2[_0x7166('0x51')]},'raw':!![]})[_0x7166('0x24')](function(_0x125237){if(_0x125237&&_0x125237[_0x7166('0x52')]===0x0){return db[_0x7166('0x27')][_0x7166('0x4b')]({'name':_0x4be5c7[_0x7166('0x2b')],'resourceId':_0x4be5c7['id'],'type':_0x125237['name'],'sectionId':_0x125237['id']},{})['then'](function(){return _0x49c601;});}else{return _0x49c601;}})['catch'](function(_0x594e2b){logger[_0x7166('0x2a')](_0x7166('0x53'),_0x594e2b);throw _0x594e2b;});}return _0x49c601;})[_0x7166('0x24')](respondWithResult(_0x2f6640,0xc9))[_0x7166('0x47')](handleError(_0x2f6640,null));};exports['update']=function(_0x11eb90,_0x27f321){if(_0x11eb90[_0x7166('0x4c')]['id']){delete _0x11eb90[_0x7166('0x4c')]['id'];}return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x11eb90[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x27f321,null))[_0x7166('0x24')](saveUpdates(_0x11eb90[_0x7166('0x4c')],null))[_0x7166('0x24')](respondWithResult(_0x27f321,null))[_0x7166('0x47')](handleError(_0x27f321,null));};exports[_0x7166('0x25')]=function(_0x5e87d4,_0x427fc7){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x5e87d4[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x427fc7,null))[_0x7166('0x24')](removeEntity(_0x427fc7,null))[_0x7166('0x47')](handleError(_0x427fc7,null));};exports[_0x7166('0x54')]=function(_0x3ed650,_0x3ed7d9){return db[_0x7166('0x44')][_0x7166('0x54')]()[_0x7166('0x24')](respondWithResult(_0x3ed7d9,null))[_0x7166('0x47')](handleError(_0x3ed7d9,null));};exports[_0x7166('0x55')]=function(_0xef1c75,_0x10bff9,_0x1c8380){var _0x12b48e={'raw':!![],'where':{}},_0x4b710b={},_0x3f307e;return db[_0x7166('0x44')][_0x7166('0x56')]({'where':{'id':_0xef1c75[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x10bff9,null))['then'](function(_0x41f475){if(_0x41f475){_0x3f307e=_0x41f475[_0x7166('0x57')]({'plain':!![]});_0x4b710b[_0x7166('0x32')]=_['keys'](db[_0x7166('0x58')]['rawAttributes']);_0x4b710b[_0x7166('0x33')]=_[_0x7166('0x34')](_0xef1c75['query']);_0x4b710b[_0x7166('0x35')]=_[_0x7166('0x36')](_0x4b710b[_0x7166('0x32')],_0x4b710b[_0x7166('0x33')]);_0x12b48e['attributes']=_['intersection'](_0x4b710b[_0x7166('0x32')],qs[_0x7166('0x38')](_0xef1c75[_0x7166('0x33')][_0x7166('0x38')]));_0x12b48e[_0x7166('0x37')]=_0x12b48e[_0x7166('0x37')][_0x7166('0x39')]?_0x12b48e[_0x7166('0x37')]:_0x4b710b['model'];if(!_0xef1c75['query']['hasOwnProperty'](_0x7166('0x3a'))){_0x12b48e['limit']=qs[_0x7166('0x20')](_0xef1c75[_0x7166('0x33')][_0x7166('0x20')]);_0x12b48e['offset']=qs[_0x7166('0x1d')](_0xef1c75[_0x7166('0x33')][_0x7166('0x1d')]);}_0x12b48e[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0xef1c75[_0x7166('0x33')]['sort']);_0x12b48e[_0x7166('0x3d')]=qs[_0x7166('0x35')](_['pick'](_0xef1c75[_0x7166('0x33')],_0x4b710b[_0x7166('0x35')]));_0x12b48e[_0x7166('0x3d')][_0x7166('0x59')]=_0x41f475['id'];if(_0xef1c75[_0x7166('0x33')]['filter']){_0x12b48e[_0x7166('0x3d')]=_['merge'](_0x12b48e[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x12b48e[_0x7166('0x37')],function(_0x5b9ede){var _0x498ade={};_0x498ade[_0x5b9ede]={'$like':'%'+_0xef1c75[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x498ade;})});}_0x12b48e=_[_0x7166('0x41')]({},_0x12b48e,_0xef1c75[_0x7166('0x49')]);return db[_0x7166('0x58')][_0x7166('0x45')](_0x12b48e);}})[_0x7166('0x24')](function(_0x11dc78){if(_0x11dc78){return db[_0x7166('0x5a')][_0x7166('0x5b')]({'where':{'id':_[_0x7166('0x2e')](_0x11dc78,_0x7166('0x5c')),'role':_0x7166('0x5d')},'attributes':['id',_0x7166('0x2b'),_0x7166('0x5e'),'updatedAt',_0x7166('0x5f')]});}})[_0x7166('0x24')](function(_0x1ae2b6){if(_0x1ae2b6){return{'count':_0x1ae2b6[_0x7166('0x1f')],'rows':_['map'](_0x1ae2b6[_0x7166('0x46')],function(_0x4609ea){return{'membername':_0x4609ea['name'],'UserId':_0x4609ea['id'],'queue_name':_0x3f307e[_0x7166('0x2b')],'OpenchannelQueueId':_0x3f307e['id'],'interface':util[_0x7166('0x60')]('%s/%s','SIP',_0x4609ea[_0x7166('0x2b')]),'penalty':0x0,'paused':_0x4609ea[_0x7166('0x5e')],'createdAt':_0x4609ea[_0x7166('0x5f')],'updatedAt':_0x4609ea[_0x7166('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x7166('0x24')](respondWithFilteredResult(_0x10bff9,_0x12b48e))[_0x7166('0x47')](handleError(_0x10bff9,null));};exports[_0x7166('0x62')]=function(_0x2aacbf,_0x1dbf09,_0xc29a63){var _0x417b01={};var _0x2167dd={};var _0x432c72;var _0x94fa38;return db[_0x7166('0x44')][_0x7166('0x56')]({'where':{'id':_0x2aacbf[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x1dbf09,null))[_0x7166('0x24')](function(_0x18bf88){if(_0x18bf88){_0x432c72=_0x18bf88;_0x2167dd['model']=_['keys'](db[_0x7166('0x63')][_0x7166('0x2f')]);_0x2167dd['query']=_[_0x7166('0x34')](_0x2aacbf['query']);_0x2167dd[_0x7166('0x35')]=_[_0x7166('0x36')](_0x2167dd[_0x7166('0x32')],_0x2167dd[_0x7166('0x33')]);_0x417b01[_0x7166('0x37')]=_[_0x7166('0x36')](_0x2167dd[_0x7166('0x32')],qs[_0x7166('0x38')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x38')]));_0x417b01[_0x7166('0x37')]=_0x417b01[_0x7166('0x37')][_0x7166('0x39')]?_0x417b01['attributes']:_0x2167dd['model'];_0x417b01[_0x7166('0x3b')]=qs['sort'](_0x2aacbf[_0x7166('0x33')][_0x7166('0x3c')]);_0x417b01[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0x2aacbf[_0x7166('0x33')],_0x2167dd['filters']));if(_0x2aacbf[_0x7166('0x33')][_0x7166('0x3f')]){_0x417b01[_0x7166('0x3d')]=_[_0x7166('0x41')](_0x417b01[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x417b01[_0x7166('0x37')],function(_0x1f75c8){var _0x499bf4={};_0x499bf4[_0x1f75c8]={'$like':'%'+_0x2aacbf['query'][_0x7166('0x3f')]+'%'};return _0x499bf4;})});}_0x417b01=_['merge']({},_0x417b01,_0x2aacbf['options']);return _0x432c72[_0x7166('0x62')](_0x417b01);}})['then'](function(_0x1c5051){if(_0x1c5051){_0x94fa38=_0x1c5051[_0x7166('0x39')];if(!_0x2aacbf[_0x7166('0x33')][_0x7166('0x64')](_0x7166('0x3a'))){_0x417b01[_0x7166('0x20')]=qs[_0x7166('0x20')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x20')]);_0x417b01[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0x2aacbf[_0x7166('0x33')][_0x7166('0x1d')]);}return _0x432c72[_0x7166('0x62')](_0x417b01);}})[_0x7166('0x24')](function(_0x11a7df){if(_0x11a7df){return _0x11a7df?{'count':_0x94fa38,'rows':_0x11a7df}:null;}})[_0x7166('0x24')](respondWithResult(_0x1dbf09,null))['catch'](handleError(_0x1dbf09,null));};exports['addTeams']=function(_0x14fe77,_0x1886f6,_0x33491b){var _0x47d3fa=_0x14fe77[_0x7166('0x4c')][_0x7166('0x65')];return db['Team'][_0x7166('0x45')]({'where':{'id':_0x47d3fa},'attributes':['id'],'include':[{'model':db[_0x7166('0x5a')],'as':_0x7166('0x66'),'attributes':['id',_0x7166('0x2b'),'online','voicePause',_0x7166('0x67')],'raw':!![]}]})[_0x7166('0x24')](function(_0x5539ff){if(_0x5539ff){var _0x3f1dd7=_['flatMap'](_0x5539ff,function(_0x1a67a5){var _0x3ca168=_0x1a67a5[_0x7166('0x57')]({'plain':!![]});return _0x3ca168[_0x7166('0x66')];});return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x14fe77[_0x7166('0x48')]['id']}})[_0x7166('0x24')](function(_0x479ffa){return db[_0x7166('0x68')][_0x7166('0x69')](function(_0x43b231){return _0x479ffa[_0x7166('0x6a')](_0x47d3fa,{'transaction':_0x43b231})[_0x7166('0x24')](function(){return BPromise['each'](_0x3f1dd7,function(_0x13ac38){return db[_0x7166('0x58')][_0x7166('0x6b')]({'where':{'UserId':_0x13ac38['id'],'OpenchannelQueueId':_0x14fe77[_0x7166('0x48')]['id']},'transaction':_0x43b231});});})[_0x7166('0x24')](function(){_0x3f1dd7[_0x7166('0x6c')](function(_0x427aeb){socket[_0x7166('0x6d')]('userOpenchannelQueue:save',{'UserId':_0x427aeb['id'],'OpenchannelQueueId':_0x479ffa['id']});});});});});}})['then'](respondWithStatusCode(_0x1886f6,null))[_0x7166('0x47')](handleError(_0x1886f6,null));};exports[_0x7166('0x6e')]=function(_0x2b5683,_0x1c2300,_0x49b835){return db[_0x7166('0x63')][_0x7166('0x45')]({'where':{'id':_0x2b5683[_0x7166('0x33')][_0x7166('0x65')]},'attributes':['id'],'include':[{'model':db[_0x7166('0x5a')],'as':_0x7166('0x66'),'attributes':['id'],'raw':!![]}]})[_0x7166('0x24')](handleEntityNotFound(_0x1c2300,null))[_0x7166('0x24')](function(_0x4e0c89){var _0x39bbdf=_[_0x7166('0x2e')](_0x4e0c89,'id');var _0x4a1c4b=[];var _0x4ad8c9=[];var _0x4c6b8c=squel['select']();_0x4c6b8c[_0x7166('0x6f')]('tq.TeamId')['from']('team_has_openchannel_queues','tq')['join'](_0x7166('0x70'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x7166('0x3d')](_0x7166('0x71'),_0x2b5683[_0x7166('0x48')]['id']);for(var _0x1fde45=0x0;_0x1fde45<_0x4e0c89[_0x7166('0x39')];_0x1fde45+=0x1){let _0x38cf02=_0x4e0c89[_0x1fde45];for(var _0x2f541c=0x0;_0x2f541c<_0x38cf02['Agents'][_0x7166('0x39')];_0x2f541c+=0x1){let _0x2d3612=_0x38cf02[_0x7166('0x66')][_0x2f541c];var _0x41d730=_0x4c6b8c[_0x7166('0x72')]();_0x41d730[_0x7166('0x3d')](_0x7166('0x73'),_0x2d3612['id']);_0x4ad8c9[_0x7166('0x74')](db['sequelize'][_0x7166('0x33')](_0x41d730['toString'](),{'type':db['sequelize'][_0x7166('0x75')][_0x7166('0x76')]})['then'](function(_0x114f8e){if(_0x114f8e[_0x7166('0x39')]===0x1){return _0x2d3612['id'];}else{var _0x31e12f=_[_0x7166('0x77')](_['map'](_0x114f8e,_0x7166('0x78')),function(_0x3d0883){return _['includes'](_0x39bbdf,_0x3d0883);});if(_0x31e12f){return _0x2d3612['id'];}}}));}}return BPromise[_0x7166('0x79')](_0x4ad8c9)[_0x7166('0x24')](function(_0x262eb1){_0x4a1c4b=_(_0x4a1c4b)['union'](_0x262eb1)['compact']()[_0x7166('0x7a')]();return db['OpenchannelQueue'][_0x7166('0x4a')]({'where':{'id':_0x2b5683[_0x7166('0x48')]['id']}})[_0x7166('0x24')](function(_0x503c3d){return db[_0x7166('0x68')][_0x7166('0x69')](function(_0x2fd388){return _0x503c3d[_0x7166('0x6e')](_0x2b5683[_0x7166('0x33')][_0x7166('0x65')],{'transaction':_0x2fd388})['then'](function(){if(!_[_0x7166('0x7b')](_0x4a1c4b)){return _0x503c3d['removeAgents'](_0x4a1c4b,{'transaction':_0x2fd388});}})[_0x7166('0x24')](function(){_0x4a1c4b['forEach'](function(_0x5c1b48){socket[_0x7166('0x6d')](_0x7166('0x7c'),{'UserId':_0x5c1b48,'OpenchannelQueueId':_0x503c3d['id']});});});});});});})['then'](respondWithStatusCode(_0x1c2300,null))['catch'](handleError(_0x1c2300,null));};exports[_0x7166('0x7d')]=function(_0x7d71da,_0x5b2b50,_0x43d373){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x7d71da[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0x5b2b50,null))[_0x7166('0x24')](function(_0xebdb8b){if(_0xebdb8b){return _0xebdb8b[_0x7166('0x7d')](_0x7d71da[_0x7166('0x4c')][_0x7166('0x65')],_['omit'](_0x7d71da[_0x7166('0x4c')],[_0x7166('0x65'),'id'])||{})[_0x7166('0x7e')](function(_0x4a2a47){for(var _0x10f479=0x0;_0x10f479<_0x7d71da['body'][_0x7166('0x65')][_0x7166('0x39')];_0x10f479+=0x1){socket['emit']('userOpenchannelQueue:save',{'UserId':Number(_0x7d71da[_0x7166('0x4c')][_0x7166('0x65')][_0x10f479]),'OpenchannelQueueId':Number(_0x7d71da[_0x7166('0x48')]['id'])});}return _0x4a2a47;});}})[_0x7166('0x24')](respondWithResult(_0x5b2b50,null))[_0x7166('0x47')](handleError(_0x5b2b50,null));};exports[_0x7166('0x7f')]=function(_0x4c3f00,_0x90c0a,_0x17a53a){return db[_0x7166('0x44')][_0x7166('0x4a')]({'where':{'id':_0x4c3f00[_0x7166('0x48')]['id']}})['then'](handleEntityNotFound(_0x90c0a,null))[_0x7166('0x24')](function(_0x320235){if(_0x320235){return _0x320235[_0x7166('0x7f')](_0x4c3f00['query'][_0x7166('0x65')])[_0x7166('0x24')](function(){if(_[_0x7166('0x80')](_0x4c3f00['query'][_0x7166('0x65')])){for(var _0x5b5899=0x0;_0x5b5899<_0x4c3f00['query'][_0x7166('0x65')][_0x7166('0x39')];_0x5b5899+=0x1){socket[_0x7166('0x6d')](_0x7166('0x7c'),{'UserId':Number(_0x4c3f00[_0x7166('0x33')][_0x7166('0x65')][_0x5b5899]),'OpenchannelQueueId':Number(_0x4c3f00[_0x7166('0x48')]['id'])});}}else{socket['emit']('userOpenchannelQueue:remove',{'UserId':Number(_0x4c3f00['query'][_0x7166('0x65')]),'OpenchannelQueueId':Number(_0x4c3f00['params']['id'])});}});}})[_0x7166('0x24')](respondWithStatusCode(_0x90c0a,null))[_0x7166('0x47')](handleError(_0x90c0a,null));};exports[_0x7166('0x81')]=function(_0x1865b7,_0xbe2c09,_0x5d72a3){var _0x26927d={};var _0x3872ae={};var _0x13f4c4;var _0x64cec;return db['OpenchannelQueue']['findOne']({'where':{'id':_0x1865b7[_0x7166('0x48')]['id']}})[_0x7166('0x24')](handleEntityNotFound(_0xbe2c09,null))[_0x7166('0x24')](function(_0x49e3b8){if(_0x49e3b8){_0x13f4c4=_0x49e3b8;_0x3872ae[_0x7166('0x32')]=_['keys'](db[_0x7166('0x5a')][_0x7166('0x2f')]);_0x3872ae[_0x7166('0x33')]=_['keys'](_0x1865b7[_0x7166('0x33')]);_0x3872ae[_0x7166('0x35')]=_[_0x7166('0x36')](_0x3872ae[_0x7166('0x32')],_0x3872ae['query']);_0x26927d['attributes']=_[_0x7166('0x36')](_0x3872ae['model'],qs[_0x7166('0x38')](_0x1865b7[_0x7166('0x33')]['fields']));_0x26927d['attributes']=_0x26927d[_0x7166('0x37')]['length']?_0x26927d['attributes']:_0x3872ae[_0x7166('0x32')];_0x26927d[_0x7166('0x3b')]=qs[_0x7166('0x3c')](_0x1865b7[_0x7166('0x33')]['sort']);_0x26927d[_0x7166('0x3d')]=qs[_0x7166('0x35')](_[_0x7166('0x3e')](_0x1865b7[_0x7166('0x33')],_0x3872ae['filters']));if(_0x1865b7[_0x7166('0x33')][_0x7166('0x3f')]){_0x26927d[_0x7166('0x3d')]=_[_0x7166('0x41')](_0x26927d[_0x7166('0x3d')],{'$or':_[_0x7166('0x2e')](_0x26927d['attributes'],function(_0x21e06b){var _0x45406a={};_0x45406a[_0x21e06b]={'$like':'%'+_0x1865b7[_0x7166('0x33')][_0x7166('0x3f')]+'%'};return _0x45406a;})});}_0x26927d=_[_0x7166('0x41')]({},_0x26927d,_0x1865b7['options']);return _0x13f4c4['getAgents'](_0x26927d);}})[_0x7166('0x24')](function(_0x100cf1){if(_0x100cf1){_0x64cec=_0x100cf1[_0x7166('0x39')];if(!_0x1865b7[_0x7166('0x33')]['hasOwnProperty']('nolimit')){_0x26927d[_0x7166('0x20')]=qs[_0x7166('0x20')](_0x1865b7[_0x7166('0x33')][_0x7166('0x20')]);_0x26927d[_0x7166('0x1d')]=qs[_0x7166('0x1d')](_0x1865b7[_0x7166('0x33')]['offset']);}return _0x13f4c4[_0x7166('0x81')](_0x26927d);}})[_0x7166('0x24')](function(_0x24da13){if(_0x24da13){return _0x24da13?{'count':_0x64cec,'rows':_0x24da13}:null;}})['then'](respondWithResult(_0xbe2c09,null))[_0x7166('0x47')](handleError(_0xbe2c09,null));};
\ No newline at end of file
index 40ea3d3..563cb78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf139=['emit','exports','events','../../mysqldb','OpenchannelQueue','remove'];(function(_0x7702c,_0x196b74){var _0x1b562a=function(_0x322514){while(--_0x322514){_0x7702c['push'](_0x7702c['shift']());}};_0x1b562a(++_0x196b74);}(_0xf139,0x12e));var _0x9f13=function(_0x4fe1df,_0x5b1e24){_0x4fe1df=_0x4fe1df-0x0;var _0x5ca46e=_0xf139[_0x4fe1df];return _0x5ca46e;};'use strict';var EventEmitter=require(_0x9f13('0x0'));var OpenchannelQueue=require(_0x9f13('0x1'))['db'][_0x9f13('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x9f13('0x3')};function emitEvent(_0x494788){return function(_0x2ae51b,_0x3f8c14,_0x9001a5){OpenchannelQueueEvents[_0x9f13('0x4')](_0x494788+':'+_0x2ae51b['id'],_0x2ae51b);OpenchannelQueueEvents[_0x9f13('0x4')](_0x494788,_0x2ae51b);_0x9001a5(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelQueue['hook'](e,emitEvent(event));}}module[_0x9f13('0x5')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x6870=['remove','emit','hasOwnProperty','hook','exports','OpenchannelQueue','save'];(function(_0x170c1e,_0x38c33f){var _0x1403df=function(_0x39bdd4){while(--_0x39bdd4){_0x170c1e['push'](_0x170c1e['shift']());}};_0x1403df(++_0x38c33f);}(_0x6870,0x83));var _0x0687=function(_0x41c44d,_0x31d1eb){_0x41c44d=_0x41c44d-0x0;var _0x5e00f5=_0x6870[_0x41c44d];return _0x5e00f5;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require('../../mysqldb')['db'][_0x0687('0x0')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0687('0x1'),'afterUpdate':'update','afterDestroy':_0x0687('0x2')};function emitEvent(_0x47cfea){return function(_0x183809,_0x1537f4,_0x45a8fa){OpenchannelQueueEvents['emit'](_0x47cfea+':'+_0x183809['id'],_0x183809);OpenchannelQueueEvents[_0x0687('0x3')](_0x47cfea,_0x183809);_0x45a8fa(null);};}for(var e in events){if(events[_0x0687('0x4')](e)){var event=events[e];OpenchannelQueue[_0x0687('0x5')](e,emitEvent(event));}}module[_0x0687('0x6')]=OpenchannelQueueEvents;
\ No newline at end of file
index 9082382..2d9ec9e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb67c=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','OpenchannelQueue','openchannel_queues','util','../../config/logger','moment'];(function(_0xb8d9bc,_0x1cea27){var _0x2fbc8e=function(_0x15b2c4){while(--_0x15b2c4){_0xb8d9bc['push'](_0xb8d9bc['shift']());}};_0x2fbc8e(++_0x1cea27);}(_0xb67c,0x1ad));var _0xcb67=function(_0x49fbb1,_0x4e7b6d){_0x49fbb1=_0x49fbb1-0x0;var _0x599efc=_0xb67c[_0x49fbb1];return _0x599efc;};'use strict';var _=require('lodash');var util=require(_0xcb67('0x0'));var logger=require(_0xcb67('0x1'))('api');var moment=require(_0xcb67('0x2'));var BPromise=require(_0xcb67('0x3'));var rp=require(_0xcb67('0x4'));var fs=require('fs');var path=require(_0xcb67('0x5'));var rimraf=require(_0xcb67('0x6'));var config=require(_0xcb67('0x7'));var attributes=require('./openchannelQueue.attributes');module[_0xcb67('0x8')]=function(_0x33c46a,_0x296f71){return _0x33c46a[_0xcb67('0x9')](_0xcb67('0xa'),attributes,{'tableName':_0xcb67('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa718=['../../config/environment','./openchannelQueue.attributes','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x4cc492,_0x162c85){var _0x1f36b9=function(_0xce4b2){while(--_0xce4b2){_0x4cc492['push'](_0x4cc492['shift']());}};_0x1f36b9(++_0x162c85);}(_0xa718,0x7d));var _0x8a71=function(_0x2f0f49,_0x9de0b9){_0x2f0f49=_0x2f0f49-0x0;var _0x5d1bb3=_0xa718[_0x2f0f49];return _0x5d1bb3;};'use strict';var _=require(_0x8a71('0x0'));var util=require(_0x8a71('0x1'));var logger=require(_0x8a71('0x2'))('api');var moment=require('moment');var BPromise=require(_0x8a71('0x3'));var rp=require(_0x8a71('0x4'));var fs=require('fs');var path=require(_0x8a71('0x5'));var rimraf=require(_0x8a71('0x6'));var config=require(_0x8a71('0x7'));var attributes=require(_0x8a71('0x8'));module['exports']=function(_0x3281aa,_0x10e720){return _0x3281aa['define'](_0x8a71('0x9'),attributes,{'tableName':_0x8a71('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dac1936..c592788 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bf8=['include','map','model','attributes','GetOpenchannelQueue','debug','stringify','find','ShowOpenchannelQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','OpenchannelQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','catch','OpenchannelQueue','options','where','limit'];(function(_0x3a9856,_0xcaa25c){var _0x5828e2=function(_0x3caa91){while(--_0x3caa91){_0x3a9856['push'](_0x3a9856['shift']());}};_0x5828e2(++_0xcaa25c);}(_0x7bf8,0x183));var _0x87bf=function(_0x589c09,_0x2f07e9){_0x589c09=_0x589c09-0x0;var _0x4a45d5=_0x7bf8[_0x589c09];return _0x4a45d5;};'use strict';var _=require(_0x87bf('0x0'));var util=require(_0x87bf('0x1'));var moment=require(_0x87bf('0x2'));var BPromise=require(_0x87bf('0x3'));var rs=require(_0x87bf('0x4'));var fs=require('fs');var Redis=require(_0x87bf('0x5'));var db=require(_0x87bf('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x87bf('0x7'))(_0x87bf('0x8'));var config=require(_0x87bf('0x9'));var jayson=require(_0x87bf('0xa'));var client=jayson[_0x87bf('0xb')][_0x87bf('0xc')]({'port':0x232a});config[_0x87bf('0xd')]=_[_0x87bf('0xe')](config[_0x87bf('0xd')],{'host':_0x87bf('0xf'),'port':0x18eb});var socket=require(_0x87bf('0x10'))(new Redis(config[_0x87bf('0xd')]));require(_0x87bf('0x11'))[_0x87bf('0x12')](socket);function respondWithRpcPromise(_0x592a22,_0x5c8d82,_0x6e35c0){return new BPromise(function(_0x380ed6,_0xba70ac){return client[_0x87bf('0x13')](_0x592a22,_0x6e35c0)[_0x87bf('0x14')](function(_0x40f2e6){logger['info'](_0x87bf('0x15'),_0x5c8d82,_0x87bf('0x16'));logger['debug'](_0x87bf('0x17'),_0x5c8d82,_0x87bf('0x16'),JSON['stringify'](_0x40f2e6));if(_0x40f2e6[_0x87bf('0x18')]){if(_0x40f2e6[_0x87bf('0x18')][_0x87bf('0x19')]===0x1f4){logger[_0x87bf('0x18')](_0x87bf('0x15'),_0x5c8d82,_0x40f2e6['error'][_0x87bf('0x1a')]);return _0xba70ac(_0x40f2e6[_0x87bf('0x18')][_0x87bf('0x1a')]);}logger[_0x87bf('0x18')](_0x87bf('0x15'),_0x5c8d82,_0x40f2e6[_0x87bf('0x18')][_0x87bf('0x1a')]);return _0x380ed6(_0x40f2e6[_0x87bf('0x18')][_0x87bf('0x1a')]);}else{logger[_0x87bf('0x1b')]('OpenchannelQueue,\x20%s,\x20%s',_0x5c8d82,_0x87bf('0x16'));_0x380ed6(_0x40f2e6['result'][_0x87bf('0x1a')]);}})[_0x87bf('0x1c')](function(_0x1f251a){logger['error'](_0x87bf('0x15'),_0x5c8d82,_0x1f251a);_0xba70ac(_0x1f251a);});});}exports['GetOpenchannelQueue']=function(_0x5a5e13){var _0x341041=this;return new Promise(function(_0x1ae247,_0x4cdf03){return db[_0x87bf('0x1d')]['findAll']({'raw':_0x5a5e13[_0x87bf('0x1e')]?_0x5a5e13[_0x87bf('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x5a5e13['options']?_0x5a5e13[_0x87bf('0x1e')][_0x87bf('0x1f')]||null:null,'attributes':_0x5a5e13[_0x87bf('0x1e')]?_0x5a5e13['options']['attributes']||null:null,'limit':_0x5a5e13['options']?_0x5a5e13[_0x87bf('0x1e')][_0x87bf('0x20')]||null:null,'include':_0x5a5e13[_0x87bf('0x1e')]?_0x5a5e13[_0x87bf('0x1e')][_0x87bf('0x21')]?_[_0x87bf('0x22')](_0x5a5e13['options'][_0x87bf('0x21')],function(_0x1ffac9){return{'model':db[_0x1ffac9[_0x87bf('0x23')]],'as':_0x1ffac9['as'],'attributes':_0x1ffac9['attributes'],'include':_0x1ffac9[_0x87bf('0x21')]?_['map'](_0x1ffac9[_0x87bf('0x21')],function(_0x41e5ef){return{'model':db[_0x41e5ef[_0x87bf('0x23')]],'as':_0x41e5ef['as'],'attributes':_0x41e5ef[_0x87bf('0x24')],'include':_0x41e5ef['include']?_[_0x87bf('0x22')](_0x41e5ef[_0x87bf('0x21')],function(_0x169b34){return{'model':db[_0x169b34[_0x87bf('0x23')]],'as':_0x169b34['as'],'attributes':_0x169b34[_0x87bf('0x24')]};}):[]};}):[]};}):[]:[]})[_0x87bf('0x14')](function(_0x19603f){logger[_0x87bf('0x1b')](_0x87bf('0x25'),_0x5a5e13);logger[_0x87bf('0x26')](_0x87bf('0x25'),_0x5a5e13,JSON[_0x87bf('0x27')](_0x19603f));_0x1ae247(_0x19603f);})[_0x87bf('0x1c')](function(_0x5b00d2){logger[_0x87bf('0x18')]('GetOpenchannelQueue',_0x5b00d2[_0x87bf('0x1a')],_0x5a5e13);_0x4cdf03(_0x341041['error'](0x1f4,_0x5b00d2[_0x87bf('0x1a')]));});});};exports['ShowOpenchannelQueue']=function(_0x3c55fa){var _0x2e55ab=this;return new Promise(function(_0x2cfb65,_0x38248f){return db[_0x87bf('0x1d')][_0x87bf('0x28')]({'raw':_0x3c55fa[_0x87bf('0x1e')]?_0x3c55fa['options']['raw']===undefined?!![]:![]:!![],'where':_0x3c55fa[_0x87bf('0x1e')]?_0x3c55fa[_0x87bf('0x1e')][_0x87bf('0x1f')]||null:null,'attributes':_0x3c55fa[_0x87bf('0x1e')]?_0x3c55fa[_0x87bf('0x1e')][_0x87bf('0x24')]||null:null,'include':_0x3c55fa[_0x87bf('0x1e')]?_0x3c55fa[_0x87bf('0x1e')][_0x87bf('0x21')]?_['map'](_0x3c55fa[_0x87bf('0x1e')][_0x87bf('0x21')],function(_0x12285a){return{'model':db[_0x12285a[_0x87bf('0x23')]],'as':_0x12285a['as'],'attributes':_0x12285a['attributes'],'include':_0x12285a[_0x87bf('0x21')]?_[_0x87bf('0x22')](_0x12285a['include'],function(_0x28faf0){return{'model':db[_0x28faf0[_0x87bf('0x23')]],'as':_0x28faf0['as'],'attributes':_0x28faf0[_0x87bf('0x24')],'include':_0x28faf0[_0x87bf('0x21')]?_[_0x87bf('0x22')](_0x28faf0[_0x87bf('0x21')],function(_0x983799){return{'model':db[_0x983799[_0x87bf('0x23')]],'as':_0x983799['as'],'attributes':_0x983799['attributes']};}):[]};}):[]};}):[]:[]})[_0x87bf('0x14')](function(_0x21156e){logger[_0x87bf('0x1b')](_0x87bf('0x29'),_0x3c55fa);logger[_0x87bf('0x26')](_0x87bf('0x29'),_0x3c55fa,JSON[_0x87bf('0x27')](_0x21156e));_0x2cfb65(_0x21156e);})[_0x87bf('0x1c')](function(_0x2358c9){logger[_0x87bf('0x18')](_0x87bf('0x29'),_0x2358c9[_0x87bf('0x1a')],_0x3c55fa);_0x38248f(_0x2e55ab['error'](0x1f4,_0x2358c9['message']));});});};
\ No newline at end of file
+var _0x34f6=['find','lodash','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','redis','debug','request\x20sent','stringify','error','code','message','OpenchannelQueue,\x20%s,\x20%s','info','result','catch','OpenchannelQueue','options','raw','where','attributes','limit','include','map','model','GetOpenchannelQueue','ShowOpenchannelQueue'];(function(_0xa148b7,_0x2f3eb2){var _0x51efd3=function(_0x34bcec){while(--_0x34bcec){_0xa148b7['push'](_0xa148b7['shift']());}};_0x51efd3(++_0x2f3eb2);}(_0x34f6,0x161));var _0x634f=function(_0x1fddaf,_0x1968d7){_0x1fddaf=_0x1fddaf-0x0;var _0x22283d=_0x34f6[_0x1fddaf];return _0x22283d;};'use strict';var _=require(_0x634f('0x0'));var util=require(_0x634f('0x1'));var moment=require('moment');var BPromise=require(_0x634f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x634f('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x634f('0x4'));var logger=require(_0x634f('0x5'))(_0x634f('0x6'));var config=require(_0x634f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x634f('0x8')]['http']({'port':0x232a});config[_0x634f('0x9')]=_['defaults'](config[_0x634f('0x9')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x634f('0x9')]));require('./openchannelQueue.socket')['register'](socket);function respondWithRpcPromise(_0xcb9b5d,_0x5d51ec,_0x44756c){return new BPromise(function(_0x4df3cc,_0x3e135d){return client['request'](_0xcb9b5d,_0x44756c)['then'](function(_0x40a96e){logger['info']('OpenchannelQueue,\x20%s,\x20%s',_0x5d51ec,'request\x20sent');logger[_0x634f('0xa')]('OpenchannelQueue,\x20%s,\x20%s,\x20%s',_0x5d51ec,_0x634f('0xb'),JSON[_0x634f('0xc')](_0x40a96e));if(_0x40a96e[_0x634f('0xd')]){if(_0x40a96e[_0x634f('0xd')][_0x634f('0xe')]===0x1f4){logger[_0x634f('0xd')]('OpenchannelQueue,\x20%s,\x20%s',_0x5d51ec,_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);return _0x3e135d(_0x40a96e[_0x634f('0xd')]['message']);}logger[_0x634f('0xd')](_0x634f('0x10'),_0x5d51ec,_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);return _0x4df3cc(_0x40a96e[_0x634f('0xd')][_0x634f('0xf')]);}else{logger[_0x634f('0x11')](_0x634f('0x10'),_0x5d51ec,_0x634f('0xb'));_0x4df3cc(_0x40a96e[_0x634f('0x12')]['message']);}})[_0x634f('0x13')](function(_0x4538f1){logger[_0x634f('0xd')](_0x634f('0x10'),_0x5d51ec,_0x4538f1);_0x3e135d(_0x4538f1);});});}exports['GetOpenchannelQueue']=function(_0x88d653){var _0xbcc3aa=this;return new Promise(function(_0x1ef750,_0x422704){return db[_0x634f('0x14')]['findAll']({'raw':_0x88d653[_0x634f('0x15')]?_0x88d653['options'][_0x634f('0x16')]===undefined?!![]:![]:!![],'where':_0x88d653[_0x634f('0x15')]?_0x88d653[_0x634f('0x15')][_0x634f('0x17')]||null:null,'attributes':_0x88d653[_0x634f('0x15')]?_0x88d653[_0x634f('0x15')][_0x634f('0x18')]||null:null,'limit':_0x88d653['options']?_0x88d653[_0x634f('0x15')][_0x634f('0x19')]||null:null,'include':_0x88d653['options']?_0x88d653['options'][_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x88d653[_0x634f('0x15')]['include'],function(_0xabb280){return{'model':db[_0xabb280[_0x634f('0x1c')]],'as':_0xabb280['as'],'attributes':_0xabb280[_0x634f('0x18')],'include':_0xabb280[_0x634f('0x1a')]?_[_0x634f('0x1b')](_0xabb280[_0x634f('0x1a')],function(_0x4431bc){return{'model':db[_0x4431bc[_0x634f('0x1c')]],'as':_0x4431bc['as'],'attributes':_0x4431bc[_0x634f('0x18')],'include':_0x4431bc[_0x634f('0x1a')]?_['map'](_0x4431bc['include'],function(_0x1506a0){return{'model':db[_0x1506a0[_0x634f('0x1c')]],'as':_0x1506a0['as'],'attributes':_0x1506a0['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x52bd92){logger[_0x634f('0x11')](_0x634f('0x1d'),_0x88d653);logger[_0x634f('0xa')]('GetOpenchannelQueue',_0x88d653,JSON[_0x634f('0xc')](_0x52bd92));_0x1ef750(_0x52bd92);})[_0x634f('0x13')](function(_0xc43558){logger['error']('GetOpenchannelQueue',_0xc43558[_0x634f('0xf')],_0x88d653);_0x422704(_0xbcc3aa['error'](0x1f4,_0xc43558[_0x634f('0xf')]));});});};exports[_0x634f('0x1e')]=function(_0x4892a6){var _0x35b49b=this;return new Promise(function(_0xbdb4e4,_0xe6edb1){return db[_0x634f('0x14')][_0x634f('0x1f')]({'raw':_0x4892a6['options']?_0x4892a6['options'][_0x634f('0x16')]===undefined?!![]:![]:!![],'where':_0x4892a6[_0x634f('0x15')]?_0x4892a6[_0x634f('0x15')][_0x634f('0x17')]||null:null,'attributes':_0x4892a6[_0x634f('0x15')]?_0x4892a6[_0x634f('0x15')][_0x634f('0x18')]||null:null,'include':_0x4892a6[_0x634f('0x15')]?_0x4892a6['options'][_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x4892a6[_0x634f('0x15')][_0x634f('0x1a')],function(_0x54d6be){return{'model':db[_0x54d6be[_0x634f('0x1c')]],'as':_0x54d6be['as'],'attributes':_0x54d6be['attributes'],'include':_0x54d6be[_0x634f('0x1a')]?_[_0x634f('0x1b')](_0x54d6be[_0x634f('0x1a')],function(_0x445802){return{'model':db[_0x445802[_0x634f('0x1c')]],'as':_0x445802['as'],'attributes':_0x445802['attributes'],'include':_0x445802['include']?_[_0x634f('0x1b')](_0x445802[_0x634f('0x1a')],function(_0x522583){return{'model':db[_0x522583['model']],'as':_0x522583['as'],'attributes':_0x522583[_0x634f('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5a0e2a){logger['info'](_0x634f('0x1e'),_0x4892a6);logger[_0x634f('0xa')](_0x634f('0x1e'),_0x4892a6,JSON['stringify'](_0x5a0e2a));_0xbdb4e4(_0x5a0e2a);})[_0x634f('0x13')](function(_0x920f05){logger[_0x634f('0xd')](_0x634f('0x1e'),_0x920f05[_0x634f('0xf')],_0x4892a6);_0xe6edb1(_0x35b49b[_0x634f('0xd')](0x1f4,_0x920f05['message']));});});};
\ No newline at end of file
index d596681..f393a4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576b=['removeListener','register','length','./openchannelQueue.events','save'];(function(_0x58976f,_0x7e24c1){var _0x1571d3=function(_0x17e3bb){while(--_0x17e3bb){_0x58976f['push'](_0x58976f['shift']());}};_0x1571d3(++_0x7e24c1);}(_0x576b,0x9e));var _0xb576=function(_0x376949,_0x4763c9){_0x376949=_0x376949-0x0;var _0x296181=_0x576b[_0x376949];return _0x296181;};'use strict';var OpenchannelQueueEvents=require(_0xb576('0x0'));var events=[_0xb576('0x1'),'remove','update'];function createListener(_0x20ace7,_0x423977){return function(_0x340cdc){_0x423977['emit'](_0x20ace7,_0x340cdc);};}function removeListener(_0x332f46,_0x1b3db6){return function(){OpenchannelQueueEvents[_0xb576('0x2')](_0x332f46,_0x1b3db6);};}exports[_0xb576('0x3')]=function(_0x411023){for(var _0x4dd07d=0x0,_0x1a6229=events[_0xb576('0x4')];_0x4dd07d<_0x1a6229;_0x4dd07d++){var _0x18a86d=events[_0x4dd07d];var _0xef164b=createListener('openchannelQueue:'+_0x18a86d,_0x411023);OpenchannelQueueEvents['on'](_0x18a86d,_0xef164b);}};
\ No newline at end of file
+var _0xd554=['remove','update','emit','removeListener','register','length','openchannelQueue:','./openchannelQueue.events','save'];(function(_0x28cff0,_0x589001){var _0x3f57f9=function(_0x146185){while(--_0x146185){_0x28cff0['push'](_0x28cff0['shift']());}};_0x3f57f9(++_0x589001);}(_0xd554,0xb2));var _0x4d55=function(_0x35096e,_0x3faf18){_0x35096e=_0x35096e-0x0;var _0x360dd3=_0xd554[_0x35096e];return _0x360dd3;};'use strict';var OpenchannelQueueEvents=require(_0x4d55('0x0'));var events=[_0x4d55('0x1'),_0x4d55('0x2'),_0x4d55('0x3')];function createListener(_0xccb629,_0x5c0daa){return function(_0x4fd104){_0x5c0daa[_0x4d55('0x4')](_0xccb629,_0x4fd104);};}function removeListener(_0x5b21bb,_0x1763fc){return function(){OpenchannelQueueEvents[_0x4d55('0x5')](_0x5b21bb,_0x1763fc);};}exports[_0x4d55('0x6')]=function(_0x5701e1){for(var _0x59cab0=0x0,_0x4263ad=events[_0x4d55('0x7')];_0x59cab0<_0x4263ad;_0x59cab0++){var _0x11e5f4=events[_0x59cab0];var _0x49a2fd=createListener(_0x4d55('0x8')+_0x11e5f4,_0x5701e1);OpenchannelQueueEvents['on'](_0x11e5f4,_0x49a2fd);}};
\ No newline at end of file
index 727f1cd..b3fc5ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8948=['../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','/describe','create','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x1b055e,_0xbef283){var _0x26bd13=function(_0x5bf80d){while(--_0x5bf80d){_0x1b055e['push'](_0x1b055e['shift']());}};_0x26bd13(++_0xbef283);}(_0x8948,0x13d));var _0x8894=function(_0x5af865,_0x1a8657){_0x5af865=_0x5af865-0x0;var _0x1cdc3e=_0x8948[_0x5af865];return _0x1cdc3e;};'use strict';var multer=require(_0x8894('0x0'));var util=require('util');var path=require(_0x8894('0x1'));var timeout=require(_0x8894('0x2'));var express=require(_0x8894('0x3'));var router=express[_0x8894('0x4')]();var fs_extra=require(_0x8894('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x8894('0x6'));var controller=require(_0x8894('0x7'));router[_0x8894('0x8')]('/',auth[_0x8894('0x9')](),controller['index']);router[_0x8894('0x8')](_0x8894('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x8894('0x8')]('/:id',auth[_0x8894('0x9')](),controller['show']);router['post']('/',auth[_0x8894('0x9')](),controller[_0x8894('0xb')]);router[_0x8894('0xc')](_0x8894('0xd'),auth[_0x8894('0x9')](),controller[_0x8894('0xe')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x8894('0xf')]);module[_0x8894('0x10')]=router;
\ No newline at end of file
+var _0x80b4=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueueReport.controller','get','isAuthenticated','index','/describe','describe','show','put','/:id','update','delete','destroy','exports','multer','util','path'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0x80b4,0x6b));var _0x480b=function(_0x11f7da,_0x101aef){_0x11f7da=_0x11f7da-0x0;var _0x9fe398=_0x80b4[_0x11f7da];return _0x9fe398;};'use strict';var multer=require(_0x480b('0x0'));var util=require(_0x480b('0x1'));var path=require(_0x480b('0x2'));var timeout=require('connect-timeout');var express=require(_0x480b('0x3'));var router=express[_0x480b('0x4')]();var fs_extra=require(_0x480b('0x5'));var auth=require(_0x480b('0x6'));var interaction=require(_0x480b('0x7'));var config=require(_0x480b('0x8'));var controller=require(_0x480b('0x9'));router[_0x480b('0xa')]('/',auth[_0x480b('0xb')](),controller[_0x480b('0xc')]);router[_0x480b('0xa')](_0x480b('0xd'),auth[_0x480b('0xb')](),controller[_0x480b('0xe')]);router['get']('/:id',auth[_0x480b('0xb')](),controller[_0x480b('0xf')]);router['post']('/',auth[_0x480b('0xb')](),controller['create']);router[_0x480b('0x10')](_0x480b('0x11'),auth[_0x480b('0xb')](),controller[_0x480b('0x12')]);router[_0x480b('0x13')](_0x480b('0x11'),auth[_0x480b('0xb')](),controller[_0x480b('0x14')]);module[_0x480b('0x15')]=router;
\ No newline at end of file
index 2691060..d21ee8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9404=['DATE','moment','sequelize','STRING'];(function(_0x23c262,_0x74765a){var _0x9b913f=function(_0x3ecb98){while(--_0x3ecb98){_0x23c262['push'](_0x23c262['shift']());}};_0x9b913f(++_0x74765a);}(_0x9404,0x101));var _0x4940=function(_0x52a876,_0x1f8fc5){_0x52a876=_0x52a876-0x0;var _0x5ca83f=_0x9404[_0x52a876];return _0x5ca83f;};'use strict';var moment=require(_0x4940('0x0'));var Sequelize=require(_0x4940('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x4940('0x2')]},'joinAt':{'type':Sequelize[_0x4940('0x3')]},'leaveAt':{'type':Sequelize[_0x4940('0x3')]},'acceptAt':{'type':Sequelize[_0x4940('0x3')]},'exitAt':{'type':Sequelize[_0x4940('0x3')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x00ce=['DATE','moment','sequelize','exports','STRING'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x00ce,0x132));var _0xe00c=function(_0x254ac9,_0x22f9d8){_0x254ac9=_0x254ac9-0x0;var _0x3630d3=_0x00ce[_0x254ac9];return _0x3630d3;};'use strict';var moment=require(_0xe00c('0x0'));var Sequelize=require(_0xe00c('0x1'));module[_0xe00c('0x2')]={'uniqueid':{'type':Sequelize[_0xe00c('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0xe00c('0x3')]},'joinAt':{'type':Sequelize[_0xe00c('0x4')]},'leaveAt':{'type':Sequelize[_0xe00c('0x4')]},'acceptAt':{'type':Sequelize[_0xe00c('0x4')]},'exitAt':{'type':Sequelize[_0xe00c('0x4')]},'reason':{'type':Sequelize[_0xe00c('0x3')]}};
\ No newline at end of file
index 47d3df0..01a4e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9c8=['model','query','filters','intersection','fields','attributes','length','order','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','options','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','OpenchannelQueueReport','rawAttributes','type','key'];(function(_0x2db12b,_0x30ab1d){var _0x20990b=function(_0x589477){while(--_0x589477){_0x2db12b['push'](_0x2db12b['shift']());}};_0x20990b(++_0x30ab1d);}(_0xf9c8,0x69));var _0x8f9c=function(_0x4e93a9,_0x413f30){_0x4e93a9=_0x4e93a9-0x0;var _0x43013c=_0xf9c8[_0x4e93a9];return _0x43013c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8f9c('0x0'));var zipdir=require(_0x8f9c('0x1'));var jsonpatch=require(_0x8f9c('0x2'));var rp=require(_0x8f9c('0x3'));var moment=require(_0x8f9c('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8f9c('0x5'));var util=require(_0x8f9c('0x6'));var path=require(_0x8f9c('0x7'));var sox=require(_0x8f9c('0x8'));var csv=require(_0x8f9c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8f9c('0xa'));var squel=require(_0x8f9c('0xb'));var crypto=require(_0x8f9c('0xc'));var jsforce=require(_0x8f9c('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x8f9c('0x9'));var querystring=require(_0x8f9c('0xe'));var Papa=require(_0x8f9c('0xf'));var Redis=require(_0x8f9c('0x10'));var authService=require(_0x8f9c('0x11'));var qs=require(_0x8f9c('0x12'));var as=require(_0x8f9c('0x13'));var hardwareService=require(_0x8f9c('0x14'));var logger=require(_0x8f9c('0x15'))(_0x8f9c('0x16'));var utils=require(_0x8f9c('0x17'));var config=require(_0x8f9c('0x18'));var licenseUtil=require(_0x8f9c('0x19'));var db=require(_0x8f9c('0x1a'))['db'];function respondWithStatusCode(_0x4c7f28,_0x488843){_0x488843=_0x488843||0xcc;return function(_0x518bd5){if(_0x518bd5){return _0x4c7f28['sendStatus'](_0x488843);}return _0x4c7f28['status'](_0x488843)[_0x8f9c('0x1b')]();};}function respondWithResult(_0x20ddfc,_0x3fa361){_0x3fa361=_0x3fa361||0xc8;return function(_0x560688){if(_0x560688){return _0x20ddfc[_0x8f9c('0x1c')](_0x3fa361)[_0x8f9c('0x1d')](_0x560688);}};}function respondWithFilteredResult(_0x3b9f59,_0x7fb972){return function(_0x189e30){if(_0x189e30){var _0x14472e=typeof _0x7fb972[_0x8f9c('0x1e')]===_0x8f9c('0x1f')&&typeof _0x7fb972[_0x8f9c('0x20')]==='undefined';var _0x3cf48f=_0x189e30[_0x8f9c('0x21')];var _0x3e1eed=_0x14472e?0x0:_0x7fb972[_0x8f9c('0x1e')];var _0x7c68b5=_0x14472e?_0x189e30[_0x8f9c('0x21')]:_0x7fb972[_0x8f9c('0x1e')]+_0x7fb972[_0x8f9c('0x20')];var _0x3a2ab1;if(_0x7c68b5>=_0x3cf48f){_0x7c68b5=_0x3cf48f;_0x3a2ab1=0xc8;}else{_0x3a2ab1=0xce;}_0x3b9f59[_0x8f9c('0x1c')](_0x3a2ab1);return _0x3b9f59[_0x8f9c('0x22')](_0x8f9c('0x23'),_0x3e1eed+'-'+_0x7c68b5+'/'+_0x3cf48f)['json'](_0x189e30);}return null;};}function patchUpdates(_0x4a1180){return function(_0x5c4378){try{jsonpatch[_0x8f9c('0x24')](_0x5c4378,_0x4a1180,!![]);}catch(_0x336787){return BPromise[_0x8f9c('0x25')](_0x336787);}return _0x5c4378[_0x8f9c('0x26')]();};}function saveUpdates(_0x4fe508,_0x27ae1a){return function(_0x50ec6d){if(_0x50ec6d){return _0x50ec6d[_0x8f9c('0x27')](_0x4fe508)['then'](function(_0x5f1a5f){return _0x5f1a5f;});}return null;};}function removeEntity(_0x3075fe,_0x4f7d39){return function(_0x114b8){if(_0x114b8){return _0x114b8[_0x8f9c('0x28')]()[_0x8f9c('0x29')](function(){_0x3075fe[_0x8f9c('0x1c')](0xcc)[_0x8f9c('0x1b')]();});}};}function handleEntityNotFound(_0xed9488,_0x45586f){return function(_0x908e9c){if(!_0x908e9c){_0xed9488[_0x8f9c('0x2a')](0x194);}return _0x908e9c;};}function handleError(_0x1e934a,_0x2c452c){_0x2c452c=_0x2c452c||0x1f4;return function(_0x1ada3e){logger[_0x8f9c('0x2b')](_0x1ada3e[_0x8f9c('0x2c')]);if(_0x1ada3e[_0x8f9c('0x2d')]){delete _0x1ada3e[_0x8f9c('0x2d')];}_0x1e934a[_0x8f9c('0x1c')](_0x2c452c)[_0x8f9c('0x2e')](_0x1ada3e);};}exports[_0x8f9c('0x2f')]=function(_0x1413c9,_0x17bc4f){var _0x2a8024={},_0x4cfdca={},_0xe2375e={'count':0x0,'rows':[]};var _0xf28ea0=_[_0x8f9c('0x30')](db[_0x8f9c('0x31')][_0x8f9c('0x32')],function(_0x20f3a7){return{'name':_0x20f3a7['fieldName'],'type':_0x20f3a7[_0x8f9c('0x33')][_0x8f9c('0x34')]};});_0x4cfdca[_0x8f9c('0x35')]=_[_0x8f9c('0x30')](_0xf28ea0,_0x8f9c('0x2d'));_0x4cfdca[_0x8f9c('0x36')]=_['keys'](_0x1413c9[_0x8f9c('0x36')]);_0x4cfdca[_0x8f9c('0x37')]=_['intersection'](_0x4cfdca['model'],_0x4cfdca[_0x8f9c('0x36')]);_0x2a8024['attributes']=_[_0x8f9c('0x38')](_0x4cfdca[_0x8f9c('0x35')],qs[_0x8f9c('0x39')](_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x39')]));_0x2a8024[_0x8f9c('0x3a')]=_0x2a8024[_0x8f9c('0x3a')][_0x8f9c('0x3b')]?_0x2a8024[_0x8f9c('0x3a')]:_0x4cfdca[_0x8f9c('0x35')];if(!_0x1413c9['query']['hasOwnProperty']('nolimit')){_0x2a8024['limit']=qs[_0x8f9c('0x20')](_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x20')]);_0x2a8024[_0x8f9c('0x1e')]=qs['offset'](_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x1e')]);}_0x2a8024[_0x8f9c('0x3c')]=qs['sort'](_0x1413c9[_0x8f9c('0x36')]['sort']);_0x2a8024[_0x8f9c('0x3d')]=qs[_0x8f9c('0x37')](_[_0x8f9c('0x3e')](_0x1413c9[_0x8f9c('0x36')],_0x4cfdca[_0x8f9c('0x37')]),_0xf28ea0);if(_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x3f')]){_0x2a8024[_0x8f9c('0x3d')]=_[_0x8f9c('0x40')](_0x2a8024[_0x8f9c('0x3d')],{'$or':_[_0x8f9c('0x30')](_0xf28ea0,function(_0x3be6e0){if(_0x3be6e0['type']!==_0x8f9c('0x41')){var _0x2c7e29={};_0x2c7e29[_0x3be6e0['name']]={'$like':'%'+_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x3f')]+'%'};return _0x2c7e29;}})});}_0x2a8024=_[_0x8f9c('0x40')]({},_0x2a8024,_0x1413c9['options']);var _0x2c409a={'where':_0x2a8024[_0x8f9c('0x3d')]};return db[_0x8f9c('0x31')]['count'](_0x2c409a)[_0x8f9c('0x29')](function(_0x49f2d1){_0xe2375e['count']=_0x49f2d1;if(_0x1413c9[_0x8f9c('0x36')][_0x8f9c('0x42')]){_0x2a8024[_0x8f9c('0x43')]=[{'all':!![]}];}return db[_0x8f9c('0x31')][_0x8f9c('0x44')](_0x2a8024);})[_0x8f9c('0x29')](function(_0x474a09){_0xe2375e[_0x8f9c('0x45')]=_0x474a09;return _0xe2375e;})['then'](respondWithFilteredResult(_0x17bc4f,_0x2a8024))[_0x8f9c('0x46')](handleError(_0x17bc4f,null));};exports[_0x8f9c('0x47')]=function(_0x5b868c,_0x1ac6ec){var _0x302789={'raw':!![],'where':{'id':_0x5b868c[_0x8f9c('0x48')]['id']}},_0x19b9c6={};_0x19b9c6[_0x8f9c('0x35')]=_[_0x8f9c('0x49')](db[_0x8f9c('0x31')][_0x8f9c('0x32')]);_0x19b9c6[_0x8f9c('0x36')]=_['keys'](_0x5b868c[_0x8f9c('0x36')]);_0x19b9c6[_0x8f9c('0x37')]=_['intersection'](_0x19b9c6[_0x8f9c('0x35')],_0x19b9c6[_0x8f9c('0x36')]);_0x302789[_0x8f9c('0x3a')]=_['intersection'](_0x19b9c6[_0x8f9c('0x35')],qs[_0x8f9c('0x39')](_0x5b868c['query'][_0x8f9c('0x39')]));_0x302789[_0x8f9c('0x3a')]=_0x302789[_0x8f9c('0x3a')][_0x8f9c('0x3b')]?_0x302789['attributes']:_0x19b9c6[_0x8f9c('0x35')];if(_0x5b868c[_0x8f9c('0x36')][_0x8f9c('0x42')]){_0x302789[_0x8f9c('0x43')]=[{'all':!![]}];}_0x302789=_['merge']({},_0x302789,_0x5b868c[_0x8f9c('0x4a')]);return db[_0x8f9c('0x31')][_0x8f9c('0x4b')](_0x302789)['then'](handleEntityNotFound(_0x1ac6ec,null))[_0x8f9c('0x29')](respondWithResult(_0x1ac6ec,null))[_0x8f9c('0x46')](handleError(_0x1ac6ec,null));};exports[_0x8f9c('0x4c')]=function(_0x265e06,_0x2b27e9){return db[_0x8f9c('0x31')]['create'](_0x265e06[_0x8f9c('0x4d')],{})[_0x8f9c('0x29')](respondWithResult(_0x2b27e9,0xc9))[_0x8f9c('0x46')](handleError(_0x2b27e9,null));};exports['update']=function(_0x5014b2,_0x548397){if(_0x5014b2[_0x8f9c('0x4d')]['id']){delete _0x5014b2['body']['id'];}return db[_0x8f9c('0x31')]['find']({'where':{'id':_0x5014b2[_0x8f9c('0x48')]['id']}})['then'](handleEntityNotFound(_0x548397,null))['then'](saveUpdates(_0x5014b2[_0x8f9c('0x4d')],null))[_0x8f9c('0x29')](respondWithResult(_0x548397,null))[_0x8f9c('0x46')](handleError(_0x548397,null));};exports['destroy']=function(_0x528052,_0x218fa9){return db[_0x8f9c('0x31')][_0x8f9c('0x4b')]({'where':{'id':_0x528052[_0x8f9c('0x48')]['id']}})['then'](handleEntityNotFound(_0x218fa9,null))['then'](removeEntity(_0x218fa9,null))[_0x8f9c('0x46')](handleError(_0x218fa9,null));};exports[_0x8f9c('0x4e')]=function(_0x5e2fff,_0x17e175){return db['OpenchannelQueueReport'][_0x8f9c('0x4e')]()[_0x8f9c('0x29')](respondWithResult(_0x17e175,null))[_0x8f9c('0x46')](handleError(_0x17e175,null));};
\ No newline at end of file
+var _0x8e6a=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','error','stack','name','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','include','findAll','rows','show','params','intersection','find','catch','create','update','body','describe','zip-dir','fast-json-patch','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs'];(function(_0x4a9771,_0x52429b){var _0x52e0ed=function(_0x5485c0){while(--_0x5485c0){_0x4a9771['push'](_0x4a9771['shift']());}};_0x52e0ed(++_0x52429b);}(_0x8e6a,0xce));var _0xa8e6=function(_0x6deb2b,_0x2aab85){_0x6deb2b=_0x6deb2b-0x0;var _0x1f032f=_0x8e6a[_0x6deb2b];return _0x1f032f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa8e6('0x0'));var jsonpatch=require(_0xa8e6('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa8e6('0x2'));var Mustache=require(_0xa8e6('0x3'));var util=require(_0xa8e6('0x4'));var path=require('path');var sox=require(_0xa8e6('0x5'));var csv=require(_0xa8e6('0x6'));var ejs=require(_0xa8e6('0x7'));var fs=require('fs');var fs_extra=require(_0xa8e6('0x8'));var _=require('lodash');var squel=require(_0xa8e6('0x9'));var crypto=require(_0xa8e6('0xa'));var jsforce=require(_0xa8e6('0xb'));var deskjs=require(_0xa8e6('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa8e6('0xd'));var Papa=require(_0xa8e6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa8e6('0xf'));var as=require(_0xa8e6('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa8e6('0x11'))(_0xa8e6('0x12'));var utils=require(_0xa8e6('0x13'));var config=require(_0xa8e6('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xa8e6('0x15'))['db'];function respondWithStatusCode(_0x45611d,_0x2231a6){_0x2231a6=_0x2231a6||0xcc;return function(_0x768d52){if(_0x768d52){return _0x45611d[_0xa8e6('0x16')](_0x2231a6);}return _0x45611d[_0xa8e6('0x17')](_0x2231a6)[_0xa8e6('0x18')]();};}function respondWithResult(_0x36a907,_0x31e578){_0x31e578=_0x31e578||0xc8;return function(_0x3e20cc){if(_0x3e20cc){return _0x36a907[_0xa8e6('0x17')](_0x31e578)[_0xa8e6('0x19')](_0x3e20cc);}};}function respondWithFilteredResult(_0x28270b,_0x4a3548){return function(_0x291ed8){if(_0x291ed8){var _0x591ed8=typeof _0x4a3548[_0xa8e6('0x1a')]===_0xa8e6('0x1b')&&typeof _0x4a3548[_0xa8e6('0x1c')]===_0xa8e6('0x1b');var _0x326518=_0x291ed8[_0xa8e6('0x1d')];var _0x2f781a=_0x591ed8?0x0:_0x4a3548[_0xa8e6('0x1a')];var _0x2cf073=_0x591ed8?_0x291ed8[_0xa8e6('0x1d')]:_0x4a3548[_0xa8e6('0x1a')]+_0x4a3548[_0xa8e6('0x1c')];var _0x18e0f8;if(_0x2cf073>=_0x326518){_0x2cf073=_0x326518;_0x18e0f8=0xc8;}else{_0x18e0f8=0xce;}_0x28270b[_0xa8e6('0x17')](_0x18e0f8);return _0x28270b['set']('Content-Range',_0x2f781a+'-'+_0x2cf073+'/'+_0x326518)['json'](_0x291ed8);}return null;};}function patchUpdates(_0x8440e0){return function(_0x1892df){try{jsonpatch[_0xa8e6('0x1e')](_0x1892df,_0x8440e0,!![]);}catch(_0x56ebac){return BPromise[_0xa8e6('0x1f')](_0x56ebac);}return _0x1892df[_0xa8e6('0x20')]();};}function saveUpdates(_0x1a4bc7,_0x38ccbe){return function(_0x4b53e4){if(_0x4b53e4){return _0x4b53e4['update'](_0x1a4bc7)['then'](function(_0x5c97ee){return _0x5c97ee;});}return null;};}function removeEntity(_0x12a386,_0x55786d){return function(_0x586303){if(_0x586303){return _0x586303['destroy']()['then'](function(){_0x12a386['status'](0xcc)[_0xa8e6('0x18')]();});}};}function handleEntityNotFound(_0x109ee4,_0x211a39){return function(_0x219f06){if(!_0x219f06){_0x109ee4[_0xa8e6('0x16')](0x194);}return _0x219f06;};}function handleError(_0x3ddb07,_0x1c841b){_0x1c841b=_0x1c841b||0x1f4;return function(_0x4adc18){logger[_0xa8e6('0x21')](_0x4adc18[_0xa8e6('0x22')]);if(_0x4adc18['name']){delete _0x4adc18[_0xa8e6('0x23')];}_0x3ddb07[_0xa8e6('0x17')](_0x1c841b)['send'](_0x4adc18);};}exports[_0xa8e6('0x24')]=function(_0x5de73e,_0x4e92ff){var _0x198e40={},_0x54f0f1={},_0x50ec6a={'count':0x0,'rows':[]};var _0x4830fb=_[_0xa8e6('0x25')](db[_0xa8e6('0x26')][_0xa8e6('0x27')],function(_0x31abfb){return{'name':_0x31abfb[_0xa8e6('0x28')],'type':_0x31abfb[_0xa8e6('0x29')][_0xa8e6('0x2a')]};});_0x54f0f1[_0xa8e6('0x2b')]=_[_0xa8e6('0x25')](_0x4830fb,'name');_0x54f0f1[_0xa8e6('0x2c')]=_[_0xa8e6('0x2d')](_0x5de73e['query']);_0x54f0f1[_0xa8e6('0x2e')]=_['intersection'](_0x54f0f1['model'],_0x54f0f1['query']);_0x198e40['attributes']=_['intersection'](_0x54f0f1['model'],qs['fields'](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x2f')]));_0x198e40[_0xa8e6('0x30')]=_0x198e40[_0xa8e6('0x30')][_0xa8e6('0x31')]?_0x198e40[_0xa8e6('0x30')]:_0x54f0f1[_0xa8e6('0x2b')];if(!_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x32')](_0xa8e6('0x33'))){_0x198e40[_0xa8e6('0x1c')]=qs[_0xa8e6('0x1c')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x1c')]);_0x198e40[_0xa8e6('0x1a')]=qs[_0xa8e6('0x1a')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x1a')]);}_0x198e40[_0xa8e6('0x34')]=qs[_0xa8e6('0x35')](_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x35')]);_0x198e40[_0xa8e6('0x36')]=qs['filters'](_[_0xa8e6('0x37')](_0x5de73e[_0xa8e6('0x2c')],_0x54f0f1[_0xa8e6('0x2e')]),_0x4830fb);if(_0x5de73e[_0xa8e6('0x2c')]['filter']){_0x198e40['where']=_[_0xa8e6('0x38')](_0x198e40[_0xa8e6('0x36')],{'$or':_['map'](_0x4830fb,function(_0x542a9e){if(_0x542a9e[_0xa8e6('0x29')]!==_0xa8e6('0x39')){var _0x3f2148={};_0x3f2148[_0x542a9e[_0xa8e6('0x23')]]={'$like':'%'+_0x5de73e['query'][_0xa8e6('0x3a')]+'%'};return _0x3f2148;}})});}_0x198e40=_['merge']({},_0x198e40,_0x5de73e[_0xa8e6('0x3b')]);var _0xac7bbd={'where':_0x198e40[_0xa8e6('0x36')]};return db[_0xa8e6('0x26')][_0xa8e6('0x1d')](_0xac7bbd)[_0xa8e6('0x3c')](function(_0x216117){_0x50ec6a[_0xa8e6('0x1d')]=_0x216117;if(_0x5de73e[_0xa8e6('0x2c')][_0xa8e6('0x3d')]){_0x198e40[_0xa8e6('0x3e')]=[{'all':!![]}];}return db[_0xa8e6('0x26')][_0xa8e6('0x3f')](_0x198e40);})['then'](function(_0x3e4c2a){_0x50ec6a[_0xa8e6('0x40')]=_0x3e4c2a;return _0x50ec6a;})[_0xa8e6('0x3c')](respondWithFilteredResult(_0x4e92ff,_0x198e40))['catch'](handleError(_0x4e92ff,null));};exports[_0xa8e6('0x41')]=function(_0x2c19ed,_0x2857a1){var _0xc4060b={'raw':!![],'where':{'id':_0x2c19ed[_0xa8e6('0x42')]['id']}},_0x26d65e={};_0x26d65e['model']=_[_0xa8e6('0x2d')](db['OpenchannelQueueReport'][_0xa8e6('0x27')]);_0x26d65e[_0xa8e6('0x2c')]=_[_0xa8e6('0x2d')](_0x2c19ed[_0xa8e6('0x2c')]);_0x26d65e[_0xa8e6('0x2e')]=_[_0xa8e6('0x43')](_0x26d65e['model'],_0x26d65e[_0xa8e6('0x2c')]);_0xc4060b[_0xa8e6('0x30')]=_[_0xa8e6('0x43')](_0x26d65e[_0xa8e6('0x2b')],qs['fields'](_0x2c19ed[_0xa8e6('0x2c')][_0xa8e6('0x2f')]));_0xc4060b['attributes']=_0xc4060b[_0xa8e6('0x30')]['length']?_0xc4060b[_0xa8e6('0x30')]:_0x26d65e['model'];if(_0x2c19ed[_0xa8e6('0x2c')][_0xa8e6('0x3d')]){_0xc4060b[_0xa8e6('0x3e')]=[{'all':!![]}];}_0xc4060b=_[_0xa8e6('0x38')]({},_0xc4060b,_0x2c19ed[_0xa8e6('0x3b')]);return db['OpenchannelQueueReport'][_0xa8e6('0x44')](_0xc4060b)[_0xa8e6('0x3c')](handleEntityNotFound(_0x2857a1,null))[_0xa8e6('0x3c')](respondWithResult(_0x2857a1,null))[_0xa8e6('0x45')](handleError(_0x2857a1,null));};exports[_0xa8e6('0x46')]=function(_0x5ec387,_0x56bca){return db[_0xa8e6('0x26')][_0xa8e6('0x46')](_0x5ec387['body'],{})[_0xa8e6('0x3c')](respondWithResult(_0x56bca,0xc9))[_0xa8e6('0x45')](handleError(_0x56bca,null));};exports[_0xa8e6('0x47')]=function(_0x561087,_0x195d7f){if(_0x561087[_0xa8e6('0x48')]['id']){delete _0x561087[_0xa8e6('0x48')]['id'];}return db[_0xa8e6('0x26')][_0xa8e6('0x44')]({'where':{'id':_0x561087['params']['id']}})[_0xa8e6('0x3c')](handleEntityNotFound(_0x195d7f,null))['then'](saveUpdates(_0x561087[_0xa8e6('0x48')],null))[_0xa8e6('0x3c')](respondWithResult(_0x195d7f,null))[_0xa8e6('0x45')](handleError(_0x195d7f,null));};exports['destroy']=function(_0x4b1ef9,_0x4686db){return db[_0xa8e6('0x26')][_0xa8e6('0x44')]({'where':{'id':_0x4b1ef9[_0xa8e6('0x42')]['id']}})[_0xa8e6('0x3c')](handleEntityNotFound(_0x4686db,null))[_0xa8e6('0x3c')](removeEntity(_0x4686db,null))[_0xa8e6('0x45')](handleError(_0x4686db,null));};exports[_0xa8e6('0x49')]=function(_0x5421f7,_0x1eb051){return db[_0xa8e6('0x26')][_0xa8e6('0x49')]()['then'](respondWithResult(_0x1eb051,null))[_0xa8e6('0x45')](handleError(_0x1eb051,null));};
\ No newline at end of file
index 5c2813f..9fba365 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x472306,_0x2a775e){var _0x182c13=function(_0x47e88a){while(--_0x47e88a){_0x472306['push'](_0x472306['shift']());}};_0x182c13(++_0x2a775e);}(_0x7a54,0x106));var _0x47a5=function(_0x5ab4c4,_0x1b4b0a){_0x5ab4c4=_0x5ab4c4-0x0;var _0x3d4003=_0x7a54[_0x5ab4c4];return _0x3d4003;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var logger=require(_0x47a5('0x2'))('api');var moment=require(_0x47a5('0x3'));var BPromise=require(_0x47a5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x47a5('0x5'));var rimraf=require(_0x47a5('0x6'));var config=require(_0x47a5('0x7'));var attributes=require(_0x47a5('0x8'));module[_0x47a5('0x9')]=function(_0x545a97,_0x3d5629){return _0x545a97['define'](_0x47a5('0xa'),attributes,{'tableName':_0x47a5('0xb'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','define','report_openchannel_queue','uniqueid','util'];(function(_0x212b87,_0x2993dd){var _0x2eeb09=function(_0x364c63){while(--_0x364c63){_0x212b87['push'](_0x212b87['shift']());}};_0x2eeb09(++_0x2993dd);}(_0x1261,0x144));var _0x1126=function(_0x12d6c2,_0x409bc8){_0x12d6c2=_0x12d6c2-0x0;var _0x1c9825=_0x1261[_0x12d6c2];return _0x1c9825;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var logger=require(_0x1126('0x1'))(_0x1126('0x2'));var moment=require(_0x1126('0x3'));var BPromise=require(_0x1126('0x4'));var rp=require(_0x1126('0x5'));var fs=require('fs');var path=require(_0x1126('0x6'));var rimraf=require(_0x1126('0x7'));var config=require(_0x1126('0x8'));var attributes=require(_0x1126('0x9'));module['exports']=function(_0x5c68c8,_0x40ba58){return _0x5c68c8[_0x1126('0xa')]('OpenchannelQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index f73d2de..832f772 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7334=['jayson/promise','client','http','request','then','info','OpenchannelQueueReport,\x20%s,\x20%s','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','CreateOpenchannelQueueReport','create','body','options','raw','catch','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x5bd4fa,_0x1be13f){var _0x1599cb=function(_0x5b1e23){while(--_0x5b1e23){_0x5bd4fa['push'](_0x5bd4fa['shift']());}};_0x1599cb(++_0x1be13f);}(_0x7334,0x184));var _0x4733=function(_0x3e02dd,_0x1094cf){_0x3e02dd=_0x3e02dd-0x0;var _0x2a22ce=_0x7334[_0x3e02dd];return _0x2a22ce;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var moment=require(_0x4733('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var jayson=require(_0x4733('0x8'));var client=jayson[_0x4733('0x9')][_0x4733('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283754,_0x12cafa,_0x43d95c){return new BPromise(function(_0x8257cf,_0x3562b7){return client[_0x4733('0xb')](_0x283754,_0x43d95c)[_0x4733('0xc')](function(_0x2d5fde){logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,'request\x20sent');logger[_0x4733('0xf')](_0x4733('0x10'),_0x12cafa,'request\x20sent',JSON[_0x4733('0x11')](_0x2d5fde));if(_0x2d5fde['error']){if(_0x2d5fde[_0x4733('0x12')][_0x4733('0x13')]===0x1f4){logger[_0x4733('0x12')](_0x4733('0xe'),_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x3562b7(_0x2d5fde[_0x4733('0x12')]['message']);}logger[_0x4733('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x8257cf(_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);}else{logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,_0x4733('0x15'));_0x8257cf(_0x2d5fde[_0x4733('0x16')][_0x4733('0x14')]);}})['catch'](function(_0x2c0031){logger[_0x4733('0x12')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x12cafa,_0x2c0031);_0x3562b7(_0x2c0031);});});}exports[_0x4733('0x17')]=function(_0x1d2fb6){var _0x2aa223=this;return new Promise(function(_0x384e0c,_0x579f67){return db['OpenchannelQueueReport'][_0x4733('0x18')](_0x1d2fb6[_0x4733('0x19')],{'raw':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x1a')][_0x4733('0x1b')]===undefined?!![]:![]:!![]})[_0x4733('0xc')](function(_0x7a4e0){logger['info'](_0x4733('0x17'),_0x1d2fb6);logger[_0x4733('0xf')]('CreateOpenchannelQueueReport',_0x1d2fb6,JSON[_0x4733('0x11')](_0x7a4e0));_0x384e0c(_0x7a4e0);})[_0x4733('0x1c')](function(_0x478e34){logger[_0x4733('0x12')](_0x4733('0x17'),_0x478e34[_0x4733('0x14')],_0x1d2fb6);_0x579f67(_0x2aa223[_0x4733('0x12')](0x1f4,_0x478e34[_0x4733('0x14')]));});});};exports[_0x4733('0x1d')]=function(_0x180049){var _0x2bb78f=this;return new Promise(function(_0x523697,_0x3e6976){return db[_0x4733('0x1e')][_0x4733('0x1f')](_0x180049[_0x4733('0x19')],{'raw':_0x180049[_0x4733('0x1a')]?_0x180049[_0x4733('0x1a')][_0x4733('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x180049[_0x4733('0x1a')]?_0x180049[_0x4733('0x1a')][_0x4733('0x20')]||null:null,'attributes':_0x180049['options']?_0x180049[_0x4733('0x1a')]['attributes']||null:null,'limit':_0x180049['options']?_0x180049[_0x4733('0x1a')]['limit']||null:null})[_0x4733('0xc')](function(_0x479989){logger['info']('UpdateOpenchannelQueueReport',_0x180049);logger[_0x4733('0xf')](_0x4733('0x1d'),_0x180049,JSON[_0x4733('0x11')](_0x479989));_0x523697(_0x479989);})[_0x4733('0x1c')](function(_0x4fee4a){logger['error']('UpdateOpenchannelQueueReport',_0x4fee4a[_0x4733('0x14')],_0x180049);_0x3e6976(_0x2bb78f['error'](0x1f4,_0x4fee4a['message']));});});};
\ No newline at end of file
+var _0x7fce=['options','raw','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','OpenchannelQueueReport','update','where','attributes','limit','stringify','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','client','then','info','request\x20sent','debug','OpenchannelQueueReport,\x20%s,\x20%s,\x20%s','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','create','body'];(function(_0x16b401,_0x47a42f){var _0x5243c7=function(_0x816da7){while(--_0x816da7){_0x16b401['push'](_0x16b401['shift']());}};_0x5243c7(++_0x47a42f);}(_0x7fce,0xdc));var _0xe7fc=function(_0x204fe9,_0x12a628){_0x204fe9=_0x204fe9-0x0;var _0x5c5e91=_0x7fce[_0x204fe9];return _0x5c5e91;};'use strict';var _=require(_0xe7fc('0x0'));var util=require(_0xe7fc('0x1'));var moment=require(_0xe7fc('0x2'));var BPromise=require('bluebird');var rs=require(_0xe7fc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xe7fc('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xe7fc('0x5'))(_0xe7fc('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xe7fc('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4665f6,_0x161dca,_0x296b2e){return new BPromise(function(_0x19eeef,_0x22fabf){return client['request'](_0x4665f6,_0x296b2e)[_0xe7fc('0x8')](function(_0x4a1209){logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0xe7fc('0xa'));logger[_0xe7fc('0xb')](_0xe7fc('0xc'),_0x161dca,_0xe7fc('0xa'),JSON['stringify'](_0x4a1209));if(_0x4a1209[_0xe7fc('0xd')]){if(_0x4a1209[_0xe7fc('0xd')]['code']===0x1f4){logger['error'](_0xe7fc('0xe'),_0x161dca,_0x4a1209['error'][_0xe7fc('0xf')]);return _0x22fabf(_0x4a1209['error']['message']);}logger[_0xe7fc('0xd')](_0xe7fc('0xe'),_0x161dca,_0x4a1209[_0xe7fc('0xd')][_0xe7fc('0xf')]);return _0x19eeef(_0x4a1209[_0xe7fc('0xd')]['message']);}else{logger[_0xe7fc('0x9')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,'request\x20sent');_0x19eeef(_0x4a1209[_0xe7fc('0x10')][_0xe7fc('0xf')]);}})[_0xe7fc('0x11')](function(_0x3a44a6){logger['error']('OpenchannelQueueReport,\x20%s,\x20%s',_0x161dca,_0x3a44a6);_0x22fabf(_0x3a44a6);});});}exports['CreateOpenchannelQueueReport']=function(_0x4aa4f0){var _0x52902f=this;return new Promise(function(_0x490a99,_0x14515d){return db['OpenchannelQueueReport'][_0xe7fc('0x12')](_0x4aa4f0[_0xe7fc('0x13')],{'raw':_0x4aa4f0[_0xe7fc('0x14')]?_0x4aa4f0[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![]})[_0xe7fc('0x8')](function(_0x329051){logger[_0xe7fc('0x9')]('CreateOpenchannelQueueReport',_0x4aa4f0);logger[_0xe7fc('0xb')](_0xe7fc('0x16'),_0x4aa4f0,JSON['stringify'](_0x329051));_0x490a99(_0x329051);})['catch'](function(_0x35bb53){logger[_0xe7fc('0xd')](_0xe7fc('0x16'),_0x35bb53[_0xe7fc('0xf')],_0x4aa4f0);_0x14515d(_0x52902f[_0xe7fc('0xd')](0x1f4,_0x35bb53[_0xe7fc('0xf')]));});});};exports[_0xe7fc('0x17')]=function(_0x1731b6){var _0xb00cb9=this;return new Promise(function(_0x3e7e7e,_0x1d1348){return db[_0xe7fc('0x18')][_0xe7fc('0x19')](_0x1731b6['body'],{'raw':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x15')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1a')]||null:null,'attributes':_0x1731b6['options']?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1b')]||null:null,'limit':_0x1731b6[_0xe7fc('0x14')]?_0x1731b6[_0xe7fc('0x14')][_0xe7fc('0x1c')]||null:null})[_0xe7fc('0x8')](function(_0x383ca6){logger['info'](_0xe7fc('0x17'),_0x1731b6);logger[_0xe7fc('0xb')]('UpdateOpenchannelQueueReport',_0x1731b6,JSON[_0xe7fc('0x1d')](_0x383ca6));_0x3e7e7e(_0x383ca6);})['catch'](function(_0x39d908){logger[_0xe7fc('0xd')]('UpdateOpenchannelQueueReport',_0x39d908[_0xe7fc('0xf')],_0x1731b6);_0x1d1348(_0xb00cb9['error'](0x1f4,_0x39d908[_0xe7fc('0xf')]));});});};
\ No newline at end of file
index 1205f03..08c5508 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacc3=['../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','create','put','update','delete','destroy','exports','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x54fad1,_0x7876f7){var _0x23eb72=function(_0x35ce80){while(--_0x35ce80){_0x54fad1['push'](_0x54fad1['shift']());}};_0x23eb72(++_0x7876f7);}(_0xacc3,0x1c7));var _0x3acc=function(_0x524c92,_0x1259c4){_0x524c92=_0x524c92-0x0;var _0x3740d6=_0xacc3[_0x524c92];return _0x3740d6;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3acc('0x0'));var timeout=require('connect-timeout');var express=require(_0x3acc('0x1'));var router=express[_0x3acc('0x2')]();var fs_extra=require(_0x3acc('0x3'));var auth=require(_0x3acc('0x4'));var interaction=require(_0x3acc('0x5'));var config=require(_0x3acc('0x6'));var controller=require('./openchannelTransferReport.controller');router[_0x3acc('0x7')]('/',auth['isAuthenticated'](),controller[_0x3acc('0x8')]);router[_0x3acc('0x7')](_0x3acc('0x9'),auth[_0x3acc('0xa')](),controller[_0x3acc('0xb')]);router[_0x3acc('0x7')](_0x3acc('0xc'),auth['isAuthenticated'](),controller[_0x3acc('0xd')]);router['post']('/',auth[_0x3acc('0xa')](),controller[_0x3acc('0xe')]);router[_0x3acc('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x3acc('0x10')]);router[_0x3acc('0x11')]('/:id',auth[_0x3acc('0xa')](),controller[_0x3acc('0x12')]);module[_0x3acc('0x13')]=router;
\ No newline at end of file
+var _0x7d10=['util','path','connect-timeout','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','show','post','create','put','/:id','update','delete','destroy','exports','multer'];(function(_0x38483a,_0x47e05d){var _0xc57c28=function(_0x4e6220){while(--_0x4e6220){_0x38483a['push'](_0x38483a['shift']());}};_0xc57c28(++_0x47e05d);}(_0x7d10,0x110));var _0x07d1=function(_0x64c1c0,_0xf8e3e1){_0x64c1c0=_0x64c1c0-0x0;var _0x1b1454=_0x7d10[_0x64c1c0];return _0x1b1454;};'use strict';var multer=require(_0x07d1('0x0'));var util=require(_0x07d1('0x1'));var path=require(_0x07d1('0x2'));var timeout=require(_0x07d1('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x07d1('0x4'));var config=require(_0x07d1('0x5'));var controller=require(_0x07d1('0x6'));router['get']('/',auth[_0x07d1('0x7')](),controller[_0x07d1('0x8')]);router[_0x07d1('0x9')](_0x07d1('0xa'),auth[_0x07d1('0x7')](),controller[_0x07d1('0xb')]);router[_0x07d1('0x9')]('/:id',auth[_0x07d1('0x7')](),controller[_0x07d1('0xc')]);router[_0x07d1('0xd')]('/',auth[_0x07d1('0x7')](),controller[_0x07d1('0xe')]);router[_0x07d1('0xf')](_0x07d1('0x10'),auth[_0x07d1('0x7')](),controller[_0x07d1('0x11')]);router[_0x07d1('0x12')](_0x07d1('0x10'),auth[_0x07d1('0x7')](),controller[_0x07d1('0x13')]);module[_0x07d1('0x14')]=router;
\ No newline at end of file
index 862f3e8..5daeb67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x1ac898,_0x19253b){var _0x681940=function(_0x57731b){while(--_0x57731b){_0x1ac898['push'](_0x1ac898['shift']());}};_0x681940(++_0x19253b);}(_0x4b84,0x1cc));var _0x44b8=function(_0x24fa1a,_0x16d9c2){_0x24fa1a=_0x24fa1a-0x0;var _0xc5621f=_0x4b84[_0x24fa1a];return _0xc5621f;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xa9e0=['account','queue','DATE','NOW','moment','sequelize','exports'];(function(_0x4051be,_0x4e30dc){var _0x10d8e5=function(_0x1ae1c2){while(--_0x1ae1c2){_0x4051be['push'](_0x4051be['shift']());}};_0x10d8e5(++_0x4e30dc);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var moment=require(_0x0a9e('0x0'));var Sequelize=require(_0x0a9e('0x1'));module[_0x0a9e('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x0a9e('0x3'),'agent',_0x0a9e('0x4')),'allowNull':![],'defaultValue':_0x0a9e('0x4')},'transferredAt':{'type':Sequelize[_0x0a9e('0x5')],'allowNull':![],'defaultValue':Sequelize[_0x0a9e('0x6')]}};
\ No newline at end of file
index 679893a..d30ae46 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb22e=['pick','filter','merge','where','options','OpenchannelTransferReport','include','catch','params','length','includeAll','find','create','body','update','destroy','describe','eml-format','rimraf','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','filters','intersection','query','attributes','fields','hasOwnProperty','nolimit','order','sort'];(function(_0x3e43a0,_0x55ddeb){var _0x3aef89=function(_0x312fc8){while(--_0x312fc8){_0x3e43a0['push'](_0x3e43a0['shift']());}};_0x3aef89(++_0x55ddeb);}(_0xb22e,0xa3));var _0xeb22=function(_0x2e34a1,_0x104160){_0x2e34a1=_0x2e34a1-0x0;var _0x1f3cc6=_0xb22e[_0x2e34a1];return _0x1f3cc6;};'use strict';var emlformat=require(_0xeb22('0x0'));var rimraf=require(_0xeb22('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xeb22('0x2'));var Mustache=require(_0xeb22('0x3'));var util=require('util');var path=require(_0xeb22('0x4'));var sox=require(_0xeb22('0x5'));var csv=require(_0xeb22('0x6'));var ejs=require(_0xeb22('0x7'));var fs=require('fs');var fs_extra=require(_0xeb22('0x8'));var _=require('lodash');var squel=require(_0xeb22('0x9'));var crypto=require(_0xeb22('0xa'));var jsforce=require(_0xeb22('0xb'));var deskjs=require(_0xeb22('0xc'));var toCsv=require(_0xeb22('0x6'));var querystring=require(_0xeb22('0xd'));var Papa=require(_0xeb22('0xe'));var Redis=require('ioredis');var authService=require(_0xeb22('0xf'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xeb22('0x10'));var logger=require(_0xeb22('0x11'))(_0xeb22('0x12'));var utils=require('../../config/utils');var config=require(_0xeb22('0x13'));var licenseUtil=require(_0xeb22('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x162e1f,_0x776fdc){_0x776fdc=_0x776fdc||0xcc;return function(_0x399ae5){if(_0x399ae5){return _0x162e1f[_0xeb22('0x15')](_0x776fdc);}return _0x162e1f[_0xeb22('0x16')](_0x776fdc)[_0xeb22('0x17')]();};}function respondWithResult(_0x6a5209,_0x6285b7){_0x6285b7=_0x6285b7||0xc8;return function(_0x2b3474){if(_0x2b3474){return _0x6a5209[_0xeb22('0x16')](_0x6285b7)[_0xeb22('0x18')](_0x2b3474);}};}function respondWithFilteredResult(_0xf39dfc,_0x3f963c){return function(_0x38f47b){if(_0x38f47b){var _0x194c08=typeof _0x3f963c[_0xeb22('0x19')]===_0xeb22('0x1a')&&typeof _0x3f963c[_0xeb22('0x1b')]===_0xeb22('0x1a');var _0x1352b4=_0x38f47b[_0xeb22('0x1c')];var _0x2152a7=_0x194c08?0x0:_0x3f963c[_0xeb22('0x19')];var _0xd8e2cc=_0x194c08?_0x38f47b[_0xeb22('0x1c')]:_0x3f963c['offset']+_0x3f963c[_0xeb22('0x1b')];var _0x2ff458;if(_0xd8e2cc>=_0x1352b4){_0xd8e2cc=_0x1352b4;_0x2ff458=0xc8;}else{_0x2ff458=0xce;}_0xf39dfc[_0xeb22('0x16')](_0x2ff458);return _0xf39dfc[_0xeb22('0x1d')](_0xeb22('0x1e'),_0x2152a7+'-'+_0xd8e2cc+'/'+_0x1352b4)['json'](_0x38f47b);}return null;};}function patchUpdates(_0x52e1e3){return function(_0xc36961){try{jsonpatch[_0xeb22('0x1f')](_0xc36961,_0x52e1e3,!![]);}catch(_0x388e60){return BPromise[_0xeb22('0x20')](_0x388e60);}return _0xc36961[_0xeb22('0x21')]();};}function saveUpdates(_0x10a185,_0x1a3980){return function(_0x586040){if(_0x586040){return _0x586040['update'](_0x10a185)[_0xeb22('0x22')](function(_0x4b29f4){return _0x4b29f4;});}return null;};}function removeEntity(_0x52f261,_0x31720c){return function(_0x114c8a){if(_0x114c8a){return _0x114c8a['destroy']()[_0xeb22('0x22')](function(){_0x52f261[_0xeb22('0x16')](0xcc)[_0xeb22('0x17')]();});}};}function handleEntityNotFound(_0xbb6895,_0x204fa6){return function(_0x4eecfb){if(!_0x4eecfb){_0xbb6895[_0xeb22('0x15')](0x194);}return _0x4eecfb;};}function handleError(_0x53db5f,_0x312f08){_0x312f08=_0x312f08||0x1f4;return function(_0x18c2ba){logger[_0xeb22('0x23')](_0x18c2ba[_0xeb22('0x24')]);if(_0x18c2ba[_0xeb22('0x25')]){delete _0x18c2ba[_0xeb22('0x25')];}_0x53db5f[_0xeb22('0x16')](_0x312f08)[_0xeb22('0x26')](_0x18c2ba);};}exports[_0xeb22('0x27')]=function(_0x19a9a7,_0xfa3d31){var _0x2ca21c={},_0x47b394={},_0x2e6ee3={'count':0x0,'rows':[]};var _0x7e09f5=_['map'](db['OpenchannelTransferReport'][_0xeb22('0x28')],function(_0x89fc51){return{'name':_0x89fc51[_0xeb22('0x29')],'type':_0x89fc51[_0xeb22('0x2a')][_0xeb22('0x2b')]};});_0x47b394[_0xeb22('0x2c')]=_[_0xeb22('0x2d')](_0x7e09f5,_0xeb22('0x25'));_0x47b394['query']=_[_0xeb22('0x2e')](_0x19a9a7['query']);_0x47b394[_0xeb22('0x2f')]=_[_0xeb22('0x30')](_0x47b394[_0xeb22('0x2c')],_0x47b394[_0xeb22('0x31')]);_0x2ca21c[_0xeb22('0x32')]=_[_0xeb22('0x30')](_0x47b394[_0xeb22('0x2c')],qs[_0xeb22('0x33')](_0x19a9a7['query'][_0xeb22('0x33')]));_0x2ca21c[_0xeb22('0x32')]=_0x2ca21c[_0xeb22('0x32')]['length']?_0x2ca21c[_0xeb22('0x32')]:_0x47b394[_0xeb22('0x2c')];if(!_0x19a9a7['query'][_0xeb22('0x34')](_0xeb22('0x35'))){_0x2ca21c['limit']=qs[_0xeb22('0x1b')](_0x19a9a7[_0xeb22('0x31')]['limit']);_0x2ca21c[_0xeb22('0x19')]=qs['offset'](_0x19a9a7['query'][_0xeb22('0x19')]);}_0x2ca21c[_0xeb22('0x36')]=qs[_0xeb22('0x37')](_0x19a9a7[_0xeb22('0x31')][_0xeb22('0x37')]);_0x2ca21c['where']=qs[_0xeb22('0x2f')](_[_0xeb22('0x38')](_0x19a9a7[_0xeb22('0x31')],_0x47b394[_0xeb22('0x2f')]),_0x7e09f5);if(_0x19a9a7[_0xeb22('0x31')][_0xeb22('0x39')]){_0x2ca21c['where']=_[_0xeb22('0x3a')](_0x2ca21c[_0xeb22('0x3b')],{'$or':_[_0xeb22('0x2d')](_0x7e09f5,function(_0xbe2736){if(_0xbe2736['type']!=='VIRTUAL'){var _0x5ac5b2={};_0x5ac5b2[_0xbe2736['name']]={'$like':'%'+_0x19a9a7['query'][_0xeb22('0x39')]+'%'};return _0x5ac5b2;}})});}_0x2ca21c=_['merge']({},_0x2ca21c,_0x19a9a7[_0xeb22('0x3c')]);var _0x5cf642={'where':_0x2ca21c[_0xeb22('0x3b')]};return db[_0xeb22('0x3d')][_0xeb22('0x1c')](_0x5cf642)[_0xeb22('0x22')](function(_0x50c035){_0x2e6ee3[_0xeb22('0x1c')]=_0x50c035;if(_0x19a9a7[_0xeb22('0x31')]['includeAll']){_0x2ca21c[_0xeb22('0x3e')]=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0x2ca21c);})[_0xeb22('0x22')](function(_0x276c99){_0x2e6ee3['rows']=_0x276c99;return _0x2e6ee3;})[_0xeb22('0x22')](respondWithFilteredResult(_0xfa3d31,_0x2ca21c))[_0xeb22('0x3f')](handleError(_0xfa3d31,null));};exports['show']=function(_0xd64e85,_0x50ecc1){var _0x1c6aeb={'raw':!![],'where':{'id':_0xd64e85[_0xeb22('0x40')]['id']}},_0x4c7338={};_0x4c7338[_0xeb22('0x2c')]=_['keys'](db[_0xeb22('0x3d')][_0xeb22('0x28')]);_0x4c7338[_0xeb22('0x31')]=_[_0xeb22('0x2e')](_0xd64e85[_0xeb22('0x31')]);_0x4c7338['filters']=_[_0xeb22('0x30')](_0x4c7338[_0xeb22('0x2c')],_0x4c7338[_0xeb22('0x31')]);_0x1c6aeb[_0xeb22('0x32')]=_['intersection'](_0x4c7338[_0xeb22('0x2c')],qs[_0xeb22('0x33')](_0xd64e85[_0xeb22('0x31')]['fields']));_0x1c6aeb[_0xeb22('0x32')]=_0x1c6aeb[_0xeb22('0x32')][_0xeb22('0x41')]?_0x1c6aeb['attributes']:_0x4c7338[_0xeb22('0x2c')];if(_0xd64e85[_0xeb22('0x31')][_0xeb22('0x42')]){_0x1c6aeb[_0xeb22('0x3e')]=[{'all':!![]}];}_0x1c6aeb=_[_0xeb22('0x3a')]({},_0x1c6aeb,_0xd64e85['options']);return db['OpenchannelTransferReport'][_0xeb22('0x43')](_0x1c6aeb)[_0xeb22('0x22')](handleEntityNotFound(_0x50ecc1,null))['then'](respondWithResult(_0x50ecc1,null))[_0xeb22('0x3f')](handleError(_0x50ecc1,null));};exports[_0xeb22('0x44')]=function(_0x2d3dfb,_0x2cea3c){return db[_0xeb22('0x3d')][_0xeb22('0x44')](_0x2d3dfb[_0xeb22('0x45')],{})[_0xeb22('0x22')](respondWithResult(_0x2cea3c,0xc9))[_0xeb22('0x3f')](handleError(_0x2cea3c,null));};exports[_0xeb22('0x46')]=function(_0x188517,_0x212f59){if(_0x188517[_0xeb22('0x45')]['id']){delete _0x188517[_0xeb22('0x45')]['id'];}return db['OpenchannelTransferReport'][_0xeb22('0x43')]({'where':{'id':_0x188517['params']['id']}})[_0xeb22('0x22')](handleEntityNotFound(_0x212f59,null))[_0xeb22('0x22')](saveUpdates(_0x188517[_0xeb22('0x45')],null))[_0xeb22('0x22')](respondWithResult(_0x212f59,null))[_0xeb22('0x3f')](handleError(_0x212f59,null));};exports[_0xeb22('0x47')]=function(_0x197b90,_0x18a070){return db[_0xeb22('0x3d')][_0xeb22('0x43')]({'where':{'id':_0x197b90[_0xeb22('0x40')]['id']}})[_0xeb22('0x22')](handleEntityNotFound(_0x18a070,null))[_0xeb22('0x22')](removeEntity(_0x18a070,null))[_0xeb22('0x3f')](handleError(_0x18a070,null));};exports[_0xeb22('0x48')]=function(_0x52d4e6,_0x4c3c31){return db[_0xeb22('0x3d')][_0xeb22('0x48')]()[_0xeb22('0x22')](respondWithResult(_0x4c3c31,null))[_0xeb22('0x3f')](handleError(_0x4c3c31,null));};
\ No newline at end of file
+var _0xf2f4=['ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','model','map','keys','query','intersection','attributes','fields','hasOwnProperty','order','sort','where','filters','pick','merge','VIRTUAL','filter','options','OpenchannelTransferReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','describe','rimraf','zip-dir','fast-json-patch','bluebird','path','sox'];(function(_0x5b1e1d,_0x56da5b){var _0x4ce3cb=function(_0x3488){while(--_0x3488){_0x5b1e1d['push'](_0x5b1e1d['shift']());}};_0x4ce3cb(++_0x56da5b);}(_0xf2f4,0x92));var _0x4f2f=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xf2f4[_0x4e676e];return _0x336a3c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4f2f('0x0'));var zipdir=require(_0x4f2f('0x1'));var jsonpatch=require(_0x4f2f('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4f2f('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x4f2f('0x4'));var sox=require(_0x4f2f('0x5'));var csv=require('to-csv');var ejs=require(_0x4f2f('0x6'));var fs=require('fs');var fs_extra=require(_0x4f2f('0x7'));var _=require('lodash');var squel=require(_0x4f2f('0x8'));var crypto=require(_0x4f2f('0x9'));var jsforce=require(_0x4f2f('0xa'));var deskjs=require(_0x4f2f('0xb'));var toCsv=require(_0x4f2f('0xc'));var querystring=require(_0x4f2f('0xd'));var Papa=require(_0x4f2f('0xe'));var Redis=require(_0x4f2f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x4f2f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4f2f('0x11'));var logger=require(_0x4f2f('0x12'))(_0x4f2f('0x13'));var utils=require('../../config/utils');var config=require(_0x4f2f('0x14'));var licenseUtil=require(_0x4f2f('0x15'));var db=require(_0x4f2f('0x16'))['db'];function respondWithStatusCode(_0x333b4f,_0x396ba4){_0x396ba4=_0x396ba4||0xcc;return function(_0x2f8b3b){if(_0x2f8b3b){return _0x333b4f[_0x4f2f('0x17')](_0x396ba4);}return _0x333b4f[_0x4f2f('0x18')](_0x396ba4)[_0x4f2f('0x19')]();};}function respondWithResult(_0x55c72e,_0x1154f4){_0x1154f4=_0x1154f4||0xc8;return function(_0xa7b6f){if(_0xa7b6f){return _0x55c72e['status'](_0x1154f4)[_0x4f2f('0x1a')](_0xa7b6f);}};}function respondWithFilteredResult(_0xc5fe87,_0x47e107){return function(_0xeb5c7d){if(_0xeb5c7d){var _0x2532b8=typeof _0x47e107[_0x4f2f('0x1b')]===_0x4f2f('0x1c')&&typeof _0x47e107[_0x4f2f('0x1d')]===_0x4f2f('0x1c');var _0xdcae4c=_0xeb5c7d[_0x4f2f('0x1e')];var _0xc760b7=_0x2532b8?0x0:_0x47e107[_0x4f2f('0x1b')];var _0x44bb58=_0x2532b8?_0xeb5c7d[_0x4f2f('0x1e')]:_0x47e107[_0x4f2f('0x1b')]+_0x47e107['limit'];var _0x1412c6;if(_0x44bb58>=_0xdcae4c){_0x44bb58=_0xdcae4c;_0x1412c6=0xc8;}else{_0x1412c6=0xce;}_0xc5fe87[_0x4f2f('0x18')](_0x1412c6);return _0xc5fe87[_0x4f2f('0x1f')]('Content-Range',_0xc760b7+'-'+_0x44bb58+'/'+_0xdcae4c)[_0x4f2f('0x1a')](_0xeb5c7d);}return null;};}function patchUpdates(_0x488c6a){return function(_0x1ddca6){try{jsonpatch[_0x4f2f('0x20')](_0x1ddca6,_0x488c6a,!![]);}catch(_0x6468c1){return BPromise[_0x4f2f('0x21')](_0x6468c1);}return _0x1ddca6[_0x4f2f('0x22')]();};}function saveUpdates(_0x47bf8e,_0x33a602){return function(_0x3c263a){if(_0x3c263a){return _0x3c263a['update'](_0x47bf8e)[_0x4f2f('0x23')](function(_0x542dd0){return _0x542dd0;});}return null;};}function removeEntity(_0x33880f,_0x4653ef){return function(_0xb82b4d){if(_0xb82b4d){return _0xb82b4d[_0x4f2f('0x24')]()[_0x4f2f('0x23')](function(){_0x33880f[_0x4f2f('0x18')](0xcc)[_0x4f2f('0x19')]();});}};}function handleEntityNotFound(_0x3f5be8,_0x2edd8f){return function(_0x2b5848){if(!_0x2b5848){_0x3f5be8[_0x4f2f('0x17')](0x194);}return _0x2b5848;};}function handleError(_0x36cff8,_0x583b2b){_0x583b2b=_0x583b2b||0x1f4;return function(_0x2882b9){logger[_0x4f2f('0x25')](_0x2882b9[_0x4f2f('0x26')]);if(_0x2882b9[_0x4f2f('0x27')]){delete _0x2882b9[_0x4f2f('0x27')];}_0x36cff8[_0x4f2f('0x18')](_0x583b2b)[_0x4f2f('0x28')](_0x2882b9);};}exports[_0x4f2f('0x29')]=function(_0x4bae08,_0x5d5e9b){var _0x277bde={},_0x34272a={},_0x446614={'count':0x0,'rows':[]};var _0x1ff55e=_['map'](db['OpenchannelTransferReport'][_0x4f2f('0x2a')],function(_0x2c5fc0){return{'name':_0x2c5fc0[_0x4f2f('0x2b')],'type':_0x2c5fc0[_0x4f2f('0x2c')][_0x4f2f('0x2d')]};});_0x34272a[_0x4f2f('0x2e')]=_[_0x4f2f('0x2f')](_0x1ff55e,_0x4f2f('0x27'));_0x34272a['query']=_[_0x4f2f('0x30')](_0x4bae08[_0x4f2f('0x31')]);_0x34272a['filters']=_[_0x4f2f('0x32')](_0x34272a[_0x4f2f('0x2e')],_0x34272a[_0x4f2f('0x31')]);_0x277bde[_0x4f2f('0x33')]=_[_0x4f2f('0x32')](_0x34272a[_0x4f2f('0x2e')],qs[_0x4f2f('0x34')](_0x4bae08['query'][_0x4f2f('0x34')]));_0x277bde[_0x4f2f('0x33')]=_0x277bde[_0x4f2f('0x33')]['length']?_0x277bde[_0x4f2f('0x33')]:_0x34272a[_0x4f2f('0x2e')];if(!_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x35')]('nolimit')){_0x277bde[_0x4f2f('0x1d')]=qs[_0x4f2f('0x1d')](_0x4bae08['query'][_0x4f2f('0x1d')]);_0x277bde[_0x4f2f('0x1b')]=qs[_0x4f2f('0x1b')](_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x1b')]);}_0x277bde[_0x4f2f('0x36')]=qs[_0x4f2f('0x37')](_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x37')]);_0x277bde[_0x4f2f('0x38')]=qs[_0x4f2f('0x39')](_[_0x4f2f('0x3a')](_0x4bae08['query'],_0x34272a[_0x4f2f('0x39')]),_0x1ff55e);if(_0x4bae08[_0x4f2f('0x31')]['filter']){_0x277bde[_0x4f2f('0x38')]=_[_0x4f2f('0x3b')](_0x277bde['where'],{'$or':_[_0x4f2f('0x2f')](_0x1ff55e,function(_0x3b7d0e){if(_0x3b7d0e[_0x4f2f('0x2c')]!==_0x4f2f('0x3c')){var _0x4bf14f={};_0x4bf14f[_0x3b7d0e[_0x4f2f('0x27')]]={'$like':'%'+_0x4bae08['query'][_0x4f2f('0x3d')]+'%'};return _0x4bf14f;}})});}_0x277bde=_[_0x4f2f('0x3b')]({},_0x277bde,_0x4bae08[_0x4f2f('0x3e')]);var _0x13fd62={'where':_0x277bde[_0x4f2f('0x38')]};return db[_0x4f2f('0x3f')][_0x4f2f('0x1e')](_0x13fd62)[_0x4f2f('0x23')](function(_0x592606){_0x446614[_0x4f2f('0x1e')]=_0x592606;if(_0x4bae08[_0x4f2f('0x31')][_0x4f2f('0x40')]){_0x277bde[_0x4f2f('0x41')]=[{'all':!![]}];}return db[_0x4f2f('0x3f')][_0x4f2f('0x42')](_0x277bde);})[_0x4f2f('0x23')](function(_0x17117b){_0x446614[_0x4f2f('0x43')]=_0x17117b;return _0x446614;})['then'](respondWithFilteredResult(_0x5d5e9b,_0x277bde))[_0x4f2f('0x44')](handleError(_0x5d5e9b,null));};exports[_0x4f2f('0x45')]=function(_0x5eb933,_0xc3f6d1){var _0x36f65e={'raw':!![],'where':{'id':_0x5eb933[_0x4f2f('0x46')]['id']}},_0x1a14b4={};_0x1a14b4[_0x4f2f('0x2e')]=_[_0x4f2f('0x30')](db[_0x4f2f('0x3f')][_0x4f2f('0x2a')]);_0x1a14b4[_0x4f2f('0x31')]=_[_0x4f2f('0x30')](_0x5eb933['query']);_0x1a14b4[_0x4f2f('0x39')]=_[_0x4f2f('0x32')](_0x1a14b4[_0x4f2f('0x2e')],_0x1a14b4[_0x4f2f('0x31')]);_0x36f65e[_0x4f2f('0x33')]=_[_0x4f2f('0x32')](_0x1a14b4[_0x4f2f('0x2e')],qs[_0x4f2f('0x34')](_0x5eb933[_0x4f2f('0x31')][_0x4f2f('0x34')]));_0x36f65e['attributes']=_0x36f65e[_0x4f2f('0x33')]['length']?_0x36f65e[_0x4f2f('0x33')]:_0x1a14b4['model'];if(_0x5eb933[_0x4f2f('0x31')][_0x4f2f('0x40')]){_0x36f65e[_0x4f2f('0x41')]=[{'all':!![]}];}_0x36f65e=_[_0x4f2f('0x3b')]({},_0x36f65e,_0x5eb933[_0x4f2f('0x3e')]);return db[_0x4f2f('0x3f')][_0x4f2f('0x47')](_0x36f65e)[_0x4f2f('0x23')](handleEntityNotFound(_0xc3f6d1,null))['then'](respondWithResult(_0xc3f6d1,null))[_0x4f2f('0x44')](handleError(_0xc3f6d1,null));};exports[_0x4f2f('0x48')]=function(_0x1c55ee,_0x5de005){return db[_0x4f2f('0x3f')][_0x4f2f('0x48')](_0x1c55ee[_0x4f2f('0x49')],{})['then'](respondWithResult(_0x5de005,0xc9))[_0x4f2f('0x44')](handleError(_0x5de005,null));};exports[_0x4f2f('0x4a')]=function(_0x199d93,_0x396265){if(_0x199d93[_0x4f2f('0x49')]['id']){delete _0x199d93[_0x4f2f('0x49')]['id'];}return db[_0x4f2f('0x3f')]['find']({'where':{'id':_0x199d93[_0x4f2f('0x46')]['id']}})[_0x4f2f('0x23')](handleEntityNotFound(_0x396265,null))['then'](saveUpdates(_0x199d93['body'],null))[_0x4f2f('0x23')](respondWithResult(_0x396265,null))[_0x4f2f('0x44')](handleError(_0x396265,null));};exports[_0x4f2f('0x24')]=function(_0x531e46,_0x117fb0){return db[_0x4f2f('0x3f')]['find']({'where':{'id':_0x531e46[_0x4f2f('0x46')]['id']}})[_0x4f2f('0x23')](handleEntityNotFound(_0x117fb0,null))[_0x4f2f('0x23')](removeEntity(_0x117fb0,null))[_0x4f2f('0x44')](handleError(_0x117fb0,null));};exports[_0x4f2f('0x4b')]=function(_0x1c5409,_0x3950d7){return db['OpenchannelTransferReport'][_0x4f2f('0x4b')]()[_0x4f2f('0x23')](respondWithResult(_0x3950d7,null))[_0x4f2f('0x44')](handleError(_0x3950d7,null));};
\ No newline at end of file
index a892d55..dd744da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7610=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','define','OpenchannelTransferReport','report_openchannel_transfer'];(function(_0x202952,_0x4c04ce){var _0x40edd9=function(_0x4139d9){while(--_0x4139d9){_0x202952['push'](_0x202952['shift']());}};_0x40edd9(++_0x4c04ce);}(_0x7610,0x1a5));var _0x0761=function(_0x945fab,_0x42756a){_0x945fab=_0x945fab-0x0;var _0x313135=_0x7610[_0x945fab];return _0x313135;};'use strict';var _=require(_0x0761('0x0'));var util=require(_0x0761('0x1'));var logger=require(_0x0761('0x2'))(_0x0761('0x3'));var moment=require(_0x0761('0x4'));var BPromise=require(_0x0761('0x5'));var rp=require(_0x0761('0x6'));var fs=require('fs');var path=require(_0x0761('0x7'));var rimraf=require(_0x0761('0x8'));var config=require(_0x0761('0x9'));var attributes=require(_0x0761('0xa'));module['exports']=function(_0x50dc52,_0xbfd3be){return _0x50dc52[_0x0761('0xb')](_0x0761('0xc'),attributes,{'tableName':_0x0761('0xd'),'paranoid':![],'indexes':[{'name':_0x0761('0xe'),'fields':[_0x0761('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x48ce=['../../config/logger','moment','bluebird','request-promise','path','../../config/environment','define','OpenchannelTransferReport','uniqueid','lodash','util'];(function(_0xce06d0,_0xe944b9){var _0x360347=function(_0x565311){while(--_0x565311){_0xce06d0['push'](_0xce06d0['shift']());}};_0x360347(++_0xe944b9);}(_0x48ce,0x17f));var _0xe48c=function(_0x193f72,_0x5e9974){_0x193f72=_0x193f72-0x0;var _0x27ddb4=_0x48ce[_0x193f72];return _0x27ddb4;};'use strict';var _=require(_0xe48c('0x0'));var util=require(_0xe48c('0x1'));var logger=require(_0xe48c('0x2'))('api');var moment=require(_0xe48c('0x3'));var BPromise=require(_0xe48c('0x4'));var rp=require(_0xe48c('0x5'));var fs=require('fs');var path=require(_0xe48c('0x6'));var rimraf=require('rimraf');var config=require(_0xe48c('0x7'));var attributes=require('./openchannelTransferReport.attributes');module['exports']=function(_0x2f6361,_0xcc0062){return _0x2f6361[_0xe48c('0x8')](_0xe48c('0x9'),attributes,{'tableName':'report_openchannel_transfer','paranoid':![],'indexes':[{'name':_0xe48c('0xa'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ab504bc..fb7b507 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae30=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','stringify','error','message','info'];(function(_0x433145,_0x39f021){var _0x3357de=function(_0x5668c3){while(--_0x5668c3){_0x433145['push'](_0x433145['shift']());}};_0x3357de(++_0x39f021);}(_0xae30,0x10a));var _0x0ae3=function(_0x5b2155,_0x11bf44){_0x5b2155=_0x5b2155-0x0;var _0x1fd657=_0xae30[_0x5b2155];return _0x1fd657;};'use strict';var _=require(_0x0ae3('0x0'));var util=require(_0x0ae3('0x1'));var moment=require(_0x0ae3('0x2'));var BPromise=require('bluebird');var rs=require(_0x0ae3('0x3'));var fs=require('fs');var Redis=require(_0x0ae3('0x4'));var db=require(_0x0ae3('0x5'))['db'];var utils=require(_0x0ae3('0x6'));var logger=require('../../config/logger')(_0x0ae3('0x7'));var config=require(_0x0ae3('0x8'));var jayson=require(_0x0ae3('0x9'));var client=jayson[_0x0ae3('0xa')][_0x0ae3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xda3853,_0x2b81f4,_0x15b7e2){return new BPromise(function(_0x32ea6e,_0x34e783){return client[_0x0ae3('0xc')](_0xda3853,_0x15b7e2)[_0x0ae3('0xd')](function(_0x32ca2c){logger['info'](_0x0ae3('0xe'),_0x2b81f4,_0x0ae3('0xf'));logger['debug']('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x2b81f4,_0x0ae3('0xf'),JSON[_0x0ae3('0x10')](_0x32ca2c));if(_0x32ca2c[_0x0ae3('0x11')]){if(_0x32ca2c[_0x0ae3('0x11')]['code']===0x1f4){logger['error'](_0x0ae3('0xe'),_0x2b81f4,_0x32ca2c[_0x0ae3('0x11')]['message']);return _0x34e783(_0x32ca2c['error'][_0x0ae3('0x12')]);}logger['error'](_0x0ae3('0xe'),_0x2b81f4,_0x32ca2c[_0x0ae3('0x11')][_0x0ae3('0x12')]);return _0x32ea6e(_0x32ca2c[_0x0ae3('0x11')][_0x0ae3('0x12')]);}else{logger[_0x0ae3('0x13')](_0x0ae3('0xe'),_0x2b81f4,'request\x20sent');_0x32ea6e(_0x32ca2c[_0x0ae3('0x14')]['message']);}})[_0x0ae3('0x15')](function(_0x254a0f){logger[_0x0ae3('0x11')](_0x0ae3('0xe'),_0x2b81f4,_0x254a0f);_0x34e783(_0x254a0f);});});}
\ No newline at end of file
+var _0x6596=['stringify','error','code','message','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','OpenchannelTransferReport,\x20%s,\x20%s','debug'];(function(_0x2998ef,_0x42bb6c){var _0x194a75=function(_0x52424e){while(--_0x52424e){_0x2998ef['push'](_0x2998ef['shift']());}};_0x194a75(++_0x42bb6c);}(_0x6596,0x1d3));var _0x6659=function(_0x387f15,_0x40a6b8){_0x387f15=_0x387f15-0x0;var _0x335547=_0x6596[_0x387f15];return _0x335547;};'use strict';var _=require(_0x6659('0x0'));var util=require(_0x6659('0x1'));var moment=require('moment');var BPromise=require(_0x6659('0x2'));var rs=require(_0x6659('0x3'));var fs=require('fs');var Redis=require(_0x6659('0x4'));var db=require(_0x6659('0x5'))['db'];var utils=require(_0x6659('0x6'));var logger=require(_0x6659('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6659('0x8'));var client=jayson[_0x6659('0x9')][_0x6659('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1ed458,_0x29292b,_0x4a900d){return new BPromise(function(_0x485ea0,_0x24bfdf){return client[_0x6659('0xb')](_0x1ed458,_0x4a900d)[_0x6659('0xc')](function(_0x2aee6e){logger[_0x6659('0xd')](_0x6659('0xe'),_0x29292b,'request\x20sent');logger[_0x6659('0xf')]('OpenchannelTransferReport,\x20%s,\x20%s,\x20%s',_0x29292b,'request\x20sent',JSON[_0x6659('0x10')](_0x2aee6e));if(_0x2aee6e['error']){if(_0x2aee6e[_0x6659('0x11')][_0x6659('0x12')]===0x1f4){logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e['error'][_0x6659('0x13')]);return _0x24bfdf(_0x2aee6e[_0x6659('0x11')]['message']);}logger[_0x6659('0x11')](_0x6659('0xe'),_0x29292b,_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);return _0x485ea0(_0x2aee6e[_0x6659('0x11')][_0x6659('0x13')]);}else{logger['info'](_0x6659('0xe'),_0x29292b,_0x6659('0x14'));_0x485ea0(_0x2aee6e[_0x6659('0x15')][_0x6659('0x13')]);}})[_0x6659('0x16')](function(_0x75836a){logger['error']('OpenchannelTransferReport,\x20%s,\x20%s',_0x29292b,_0x75836a);_0x24bfdf(_0x75836a);});});}
\ No newline at end of file
index d812760..e5b78a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d26=['../../components/auth/service','../../components/interaction/service','./pause.controller','get','isAuthenticated','index','show','post','create','put','/:id','exports','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6d26,0xe4));var _0x66d2=function(_0x1f4acb,_0x1aedfd){_0x1f4acb=_0x1f4acb-0x0;var _0x51a2ad=_0x6d26[_0x1f4acb];return _0x51a2ad;};'use strict';var multer=require(_0x66d2('0x0'));var util=require(_0x66d2('0x1'));var path=require('path');var timeout=require(_0x66d2('0x2'));var express=require(_0x66d2('0x3'));var router=express[_0x66d2('0x4')]();var fs_extra=require(_0x66d2('0x5'));var auth=require(_0x66d2('0x6'));var interaction=require(_0x66d2('0x7'));var config=require('../../config/environment');var controller=require(_0x66d2('0x8'));router[_0x66d2('0x9')]('/',auth[_0x66d2('0xa')](),controller[_0x66d2('0xb')]);router[_0x66d2('0x9')]('/:id',auth[_0x66d2('0xa')](),controller[_0x66d2('0xc')]);router[_0x66d2('0xd')]('/',auth['isAuthenticated'](),controller[_0x66d2('0xe')]);router[_0x66d2('0xf')](_0x66d2('0x10'),auth[_0x66d2('0xa')](),controller['update']);router['delete'](_0x66d2('0x10'),auth[_0x66d2('0xa')](),controller['destroy']);module[_0x66d2('0x11')]=router;
\ No newline at end of file
+var _0x4cf0=['update','delete','multer','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./pause.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x13c547,_0x188c8a){var _0x13fd59=function(_0x54326d){while(--_0x54326d){_0x13c547['push'](_0x13c547['shift']());}};_0x13fd59(++_0x188c8a);}(_0x4cf0,0x16a));var _0x04cf=function(_0x3ab51d,_0x2fa01d){_0x3ab51d=_0x3ab51d-0x0;var _0x29a04e=_0x4cf0[_0x3ab51d];return _0x29a04e;};'use strict';var multer=require(_0x04cf('0x0'));var util=require('util');var path=require(_0x04cf('0x1'));var timeout=require('connect-timeout');var express=require(_0x04cf('0x2'));var router=express[_0x04cf('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x04cf('0x4'));var interaction=require(_0x04cf('0x5'));var config=require(_0x04cf('0x6'));var controller=require(_0x04cf('0x7'));router['get']('/',auth[_0x04cf('0x8')](),controller[_0x04cf('0x9')]);router[_0x04cf('0xa')](_0x04cf('0xb'),auth['isAuthenticated'](),controller[_0x04cf('0xc')]);router[_0x04cf('0xd')]('/',auth['isAuthenticated'](),controller[_0x04cf('0xe')]);router[_0x04cf('0xf')](_0x04cf('0xb'),auth[_0x04cf('0x8')](),controller[_0x04cf('0x10')]);router[_0x04cf('0x11')](_0x04cf('0xb'),auth[_0x04cf('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 27f45e6..562dda3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd2c=['name','STRING','sequelize'];(function(_0x3d5409,_0x295eab){var _0x1a7b69=function(_0x23f85f){while(--_0x23f85f){_0x3d5409['push'](_0x3d5409['shift']());}};_0x1a7b69(++_0x295eab);}(_0xdd2c,0x1b2));var _0xcdd2=function(_0x4e966d,_0x59dad3){_0x4e966d=_0x4e966d-0x0;var _0x317cfd=_0xdd2c[_0x4e966d];return _0x317cfd;};'use strict';var Sequelize=require(_0xcdd2('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xcdd2('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0xcdd2('0x2')]}};
\ No newline at end of file
+var _0x6144=['name','sequelize','exports','STRING'];(function(_0x28d225,_0x43be18){var _0x1f79e1=function(_0x362c23){while(--_0x362c23){_0x28d225['push'](_0x28d225['shift']());}};_0x1f79e1(++_0x43be18);}(_0x6144,0x1a9));var _0x4614=function(_0x45461f,_0x54d613){_0x45461f=_0x45461f-0x0;var _0x29ac6b=_0x6144[_0x45461f];return _0x29ac6b;};'use strict';var Sequelize=require(_0x4614('0x0'));module[_0x4614('0x1')]={'name':{'type':Sequelize[_0x4614('0x2')],'unique':_0x4614('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0x4614('0x2')]}};
\ No newline at end of file
index cc3c716..b6095f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x75dc=['intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','include','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','undefined','limit','count','status','set','Content-Range','json','apply','update','then','destroy','get','Pauses','UserProfileResource','error','stack','name','index','map','Pause','rawAttributes','type','key','model','query','keys','attributes'];(function(_0x353643,_0x568495){var _0x394b32=function(_0x3924ae){while(--_0x3924ae){_0x353643['push'](_0x353643['shift']());}};_0x394b32(++_0x568495);}(_0x75dc,0xcb));var _0xc75d=function(_0x31b11d,_0x5d7fa9){_0x31b11d=_0x31b11d-0x0;var _0x1c1668=_0x75dc[_0x31b11d];return _0x1c1668;};'use strict';var emlformat=require(_0xc75d('0x0'));var rimraf=require(_0xc75d('0x1'));var zipdir=require(_0xc75d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc75d('0x3'));var moment=require('moment');var BPromise=require(_0xc75d('0x4'));var Mustache=require(_0xc75d('0x5'));var util=require(_0xc75d('0x6'));var path=require(_0xc75d('0x7'));var sox=require(_0xc75d('0x8'));var csv=require(_0xc75d('0x9'));var ejs=require(_0xc75d('0xa'));var fs=require('fs');var fs_extra=require(_0xc75d('0xb'));var _=require(_0xc75d('0xc'));var squel=require(_0xc75d('0xd'));var crypto=require(_0xc75d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc75d('0xf'));var toCsv=require(_0xc75d('0x9'));var querystring=require(_0xc75d('0x10'));var Papa=require(_0xc75d('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc75d('0x12'));var as=require(_0xc75d('0x13'));var hardwareService=require(_0xc75d('0x14'));var logger=require('../../config/logger')(_0xc75d('0x15'));var utils=require(_0xc75d('0x16'));var config=require(_0xc75d('0x17'));var licenseUtil=require(_0xc75d('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x27e98e,_0x217980){_0x217980=_0x217980||0xcc;return function(_0x4c2fad){if(_0x4c2fad){return _0x27e98e[_0xc75d('0x19')](_0x217980);}return _0x27e98e['status'](_0x217980)[_0xc75d('0x1a')]();};}function respondWithResult(_0x5c80f6,_0x313019){_0x313019=_0x313019||0xc8;return function(_0x126f61){if(_0x126f61){return _0x5c80f6['status'](_0x313019)['json'](_0x126f61);}};}function respondWithFilteredResult(_0x1a3af3,_0x344fec){return function(_0x14da10){if(_0x14da10){var _0x1ba0c2=typeof _0x344fec[_0xc75d('0x1b')]===_0xc75d('0x1c')&&typeof _0x344fec[_0xc75d('0x1d')]==='undefined';var _0x5d7806=_0x14da10['count'];var _0x598bce=_0x1ba0c2?0x0:_0x344fec['offset'];var _0x5625f9=_0x1ba0c2?_0x14da10[_0xc75d('0x1e')]:_0x344fec[_0xc75d('0x1b')]+_0x344fec[_0xc75d('0x1d')];var _0x4b537c;if(_0x5625f9>=_0x5d7806){_0x5625f9=_0x5d7806;_0x4b537c=0xc8;}else{_0x4b537c=0xce;}_0x1a3af3[_0xc75d('0x1f')](_0x4b537c);return _0x1a3af3[_0xc75d('0x20')](_0xc75d('0x21'),_0x598bce+'-'+_0x5625f9+'/'+_0x5d7806)[_0xc75d('0x22')](_0x14da10);}return null;};}function patchUpdates(_0x5abaff){return function(_0x36e497){try{jsonpatch[_0xc75d('0x23')](_0x36e497,_0x5abaff,!![]);}catch(_0x533741){return BPromise['reject'](_0x533741);}return _0x36e497['save']();};}function saveUpdates(_0x3cd2c4,_0xb8be8f){return function(_0x5ea4e7){if(_0x5ea4e7){return _0x5ea4e7[_0xc75d('0x24')](_0x3cd2c4)[_0xc75d('0x25')](function(_0x2053dd){return _0x2053dd;});}return null;};}function removeEntity(_0x326570,_0x112e39){return function(_0x1052aa){if(_0x1052aa){return _0x1052aa[_0xc75d('0x26')]()[_0xc75d('0x25')](function(){var _0x1bf2c5=_0x1052aa[_0xc75d('0x27')]({'plain':!![]});var _0x3108f1=_0xc75d('0x28');return db[_0xc75d('0x29')][_0xc75d('0x26')]({'where':{'type':_0x3108f1,'resourceId':_0x1bf2c5['id']}})['then'](function(){return _0x1052aa;});})['then'](function(){_0x326570[_0xc75d('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ec1b1,_0x341561){return function(_0x2bd44d){if(!_0x2bd44d){_0x4ec1b1[_0xc75d('0x19')](0x194);}return _0x2bd44d;};}function handleError(_0x264402,_0x5b4618){_0x5b4618=_0x5b4618||0x1f4;return function(_0x2cf9bd){logger[_0xc75d('0x2a')](_0x2cf9bd[_0xc75d('0x2b')]);if(_0x2cf9bd['name']){delete _0x2cf9bd[_0xc75d('0x2c')];}_0x264402[_0xc75d('0x1f')](_0x5b4618)['send'](_0x2cf9bd);};}exports[_0xc75d('0x2d')]=function(_0x2840d3,_0x3edf53){var _0x5d32ef={},_0x24d952={},_0x22e6c5={'count':0x0,'rows':[]};var _0x5e3699=_[_0xc75d('0x2e')](db[_0xc75d('0x2f')][_0xc75d('0x30')],function(_0x34a559){return{'name':_0x34a559['fieldName'],'type':_0x34a559[_0xc75d('0x31')][_0xc75d('0x32')]};});_0x24d952[_0xc75d('0x33')]=_['map'](_0x5e3699,_0xc75d('0x2c'));_0x24d952[_0xc75d('0x34')]=_[_0xc75d('0x35')](_0x2840d3['query']);_0x24d952['filters']=_['intersection'](_0x24d952['model'],_0x24d952[_0xc75d('0x34')]);_0x5d32ef[_0xc75d('0x36')]=_[_0xc75d('0x37')](_0x24d952['model'],qs[_0xc75d('0x38')](_0x2840d3[_0xc75d('0x34')][_0xc75d('0x38')]));_0x5d32ef[_0xc75d('0x36')]=_0x5d32ef['attributes'][_0xc75d('0x39')]?_0x5d32ef['attributes']:_0x24d952[_0xc75d('0x33')];if(!_0x2840d3[_0xc75d('0x34')][_0xc75d('0x3a')](_0xc75d('0x3b'))){_0x5d32ef['limit']=qs[_0xc75d('0x1d')](_0x2840d3[_0xc75d('0x34')]['limit']);_0x5d32ef['offset']=qs[_0xc75d('0x1b')](_0x2840d3[_0xc75d('0x34')][_0xc75d('0x1b')]);}_0x5d32ef[_0xc75d('0x3c')]=qs[_0xc75d('0x3d')](_0x2840d3[_0xc75d('0x34')][_0xc75d('0x3d')]);_0x5d32ef[_0xc75d('0x3e')]=qs[_0xc75d('0x3f')](_[_0xc75d('0x40')](_0x2840d3[_0xc75d('0x34')],_0x24d952['filters']),_0x5e3699);if(_0x2840d3[_0xc75d('0x34')][_0xc75d('0x41')]){_0x5d32ef['where']=_['merge'](_0x5d32ef[_0xc75d('0x3e')],{'$or':_[_0xc75d('0x2e')](_0x5e3699,function(_0x31d3fe){if(_0x31d3fe[_0xc75d('0x31')]!==_0xc75d('0x42')){var _0x574ef0={};_0x574ef0[_0x31d3fe[_0xc75d('0x2c')]]={'$like':'%'+_0x2840d3[_0xc75d('0x34')]['filter']+'%'};return _0x574ef0;}})});}_0x5d32ef=_[_0xc75d('0x43')]({},_0x5d32ef,_0x2840d3[_0xc75d('0x44')]);var _0x1dbd95={'where':_0x5d32ef[_0xc75d('0x3e')]};return db[_0xc75d('0x2f')][_0xc75d('0x1e')](_0x1dbd95)['then'](function(_0x5ea1d9){_0x22e6c5['count']=_0x5ea1d9;if(_0x2840d3[_0xc75d('0x34')][_0xc75d('0x45')]){_0x5d32ef['include']=[{'all':!![]}];}return db['Pause'][_0xc75d('0x46')](_0x5d32ef);})[_0xc75d('0x25')](function(_0x5c5942){_0x22e6c5[_0xc75d('0x47')]=_0x5c5942;return _0x22e6c5;})[_0xc75d('0x25')](respondWithFilteredResult(_0x3edf53,_0x5d32ef))[_0xc75d('0x48')](handleError(_0x3edf53,null));};exports[_0xc75d('0x49')]=function(_0x42c335,_0xf4d772){var _0x500e7a={'raw':!![],'where':{'id':_0x42c335[_0xc75d('0x4a')]['id']}},_0x212448={};_0x212448[_0xc75d('0x33')]=_[_0xc75d('0x35')](db['Pause']['rawAttributes']);_0x212448[_0xc75d('0x34')]=_[_0xc75d('0x35')](_0x42c335[_0xc75d('0x34')]);_0x212448['filters']=_[_0xc75d('0x37')](_0x212448[_0xc75d('0x33')],_0x212448['query']);_0x500e7a[_0xc75d('0x36')]=_[_0xc75d('0x37')](_0x212448[_0xc75d('0x33')],qs[_0xc75d('0x38')](_0x42c335[_0xc75d('0x34')][_0xc75d('0x38')]));_0x500e7a[_0xc75d('0x36')]=_0x500e7a[_0xc75d('0x36')][_0xc75d('0x39')]?_0x500e7a['attributes']:_0x212448['model'];if(_0x42c335['query'][_0xc75d('0x45')]){_0x500e7a[_0xc75d('0x4b')]=[{'all':!![]}];}_0x500e7a=_['merge']({},_0x500e7a,_0x42c335[_0xc75d('0x44')]);return db[_0xc75d('0x2f')]['find'](_0x500e7a)[_0xc75d('0x25')](handleEntityNotFound(_0xf4d772,null))[_0xc75d('0x25')](respondWithResult(_0xf4d772,null))['catch'](handleError(_0xf4d772,null));};exports[_0xc75d('0x4c')]=function(_0x55166a,_0x5c1790){return db[_0xc75d('0x2f')]['create'](_0x55166a[_0xc75d('0x4d')],{})[_0xc75d('0x25')](function(_0x368bf9){var _0x4d100c=_0x55166a[_0xc75d('0x4e')][_0xc75d('0x27')]({'plain':!![]});if(!_0x4d100c)throw new Error(_0xc75d('0x4f'));if(_0x4d100c[_0xc75d('0x50')]==='user'){var _0x2d1ea6=_0x368bf9[_0xc75d('0x27')]({'plain':!![]});var _0x21f262=_0xc75d('0x28');return db[_0xc75d('0x51')][_0xc75d('0x52')]({'where':{'name':_0x21f262,'userProfileId':_0x4d100c[_0xc75d('0x53')]},'raw':!![]})['then'](function(_0x23f662){if(_0x23f662&&_0x23f662[_0xc75d('0x54')]===0x0){return db[_0xc75d('0x29')]['create']({'name':_0x2d1ea6[_0xc75d('0x2c')],'resourceId':_0x2d1ea6['id'],'type':_0x23f662[_0xc75d('0x2c')],'sectionId':_0x23f662['id']},{})[_0xc75d('0x25')](function(){return _0x368bf9;});}else{return _0x368bf9;}})[_0xc75d('0x48')](function(_0x5d6548){logger['error'](_0xc75d('0x55'),_0x5d6548);throw _0x5d6548;});}return _0x368bf9;})[_0xc75d('0x25')](respondWithResult(_0x5c1790,0xc9))[_0xc75d('0x48')](handleError(_0x5c1790,null));};exports[_0xc75d('0x24')]=function(_0x2433ef,_0x15f8ea){if(_0x2433ef['body']['id']){delete _0x2433ef[_0xc75d('0x4d')]['id'];}return db[_0xc75d('0x2f')][_0xc75d('0x52')]({'where':{'id':_0x2433ef[_0xc75d('0x4a')]['id']}})['then'](handleEntityNotFound(_0x15f8ea,null))['then'](saveUpdates(_0x2433ef[_0xc75d('0x4d')],null))[_0xc75d('0x25')](respondWithResult(_0x15f8ea,null))[_0xc75d('0x48')](handleError(_0x15f8ea,null));};exports['destroy']=function(_0xdc671f,_0x28070c){return db[_0xc75d('0x2f')]['find']({'where':{'id':_0xdc671f[_0xc75d('0x4a')]['id']}})[_0xc75d('0x25')](handleEntityNotFound(_0x28070c,null))[_0xc75d('0x25')](removeEntity(_0x28070c,null))[_0xc75d('0x48')](handleError(_0x28070c,null));};
\ No newline at end of file
+var _0x85bd=['bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','Content-Range','json','apply','reject','save','update','get','UserProfileResource','then','error','stack','send','map','Pause','rawAttributes','key','model','query','keys','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','intersection','length','include','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','name','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x1c8c28,_0x3ee093){var _0x1f59b4=function(_0x29bcc0){while(--_0x29bcc0){_0x1c8c28['push'](_0x1c8c28['shift']());}};_0x1f59b4(++_0x3ee093);}(_0x85bd,0xf1));var _0xd85b=function(_0x29e3ec,_0x138a18){_0x29e3ec=_0x29e3ec-0x0;var _0x25727e=_0x85bd[_0x29e3ec];return _0x25727e;};'use strict';var emlformat=require(_0xd85b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd85b('0x1'));var jsonpatch=require(_0xd85b('0x2'));var rp=require(_0xd85b('0x3'));var moment=require(_0xd85b('0x4'));var BPromise=require(_0xd85b('0x5'));var Mustache=require(_0xd85b('0x6'));var util=require(_0xd85b('0x7'));var path=require('path');var sox=require(_0xd85b('0x8'));var csv=require(_0xd85b('0x9'));var ejs=require(_0xd85b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd85b('0xb'));var squel=require(_0xd85b('0xc'));var crypto=require(_0xd85b('0xd'));var jsforce=require(_0xd85b('0xe'));var deskjs=require(_0xd85b('0xf'));var toCsv=require(_0xd85b('0x9'));var querystring=require('querystring');var Papa=require(_0xd85b('0x10'));var Redis=require(_0xd85b('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd85b('0x12'));var logger=require(_0xd85b('0x13'))('api');var utils=require(_0xd85b('0x14'));var config=require(_0xd85b('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xd85b('0x16'))['db'];function respondWithStatusCode(_0x570322,_0x40b524){_0x40b524=_0x40b524||0xcc;return function(_0x15f8d7){if(_0x15f8d7){return _0x570322[_0xd85b('0x17')](_0x40b524);}return _0x570322['status'](_0x40b524)[_0xd85b('0x18')]();};}function respondWithResult(_0x2573ba,_0x214de9){_0x214de9=_0x214de9||0xc8;return function(_0x4759c6){if(_0x4759c6){return _0x2573ba[_0xd85b('0x19')](_0x214de9)['json'](_0x4759c6);}};}function respondWithFilteredResult(_0x477054,_0x3ec251){return function(_0x5029d){if(_0x5029d){var _0x41ce66=typeof _0x3ec251[_0xd85b('0x1a')]===_0xd85b('0x1b')&&typeof _0x3ec251[_0xd85b('0x1c')]===_0xd85b('0x1b');var _0x427f55=_0x5029d[_0xd85b('0x1d')];var _0x43cdfa=_0x41ce66?0x0:_0x3ec251['offset'];var _0x143608=_0x41ce66?_0x5029d[_0xd85b('0x1d')]:_0x3ec251[_0xd85b('0x1a')]+_0x3ec251[_0xd85b('0x1c')];var _0x47d768;if(_0x143608>=_0x427f55){_0x143608=_0x427f55;_0x47d768=0xc8;}else{_0x47d768=0xce;}_0x477054[_0xd85b('0x19')](_0x47d768);return _0x477054['set'](_0xd85b('0x1e'),_0x43cdfa+'-'+_0x143608+'/'+_0x427f55)[_0xd85b('0x1f')](_0x5029d);}return null;};}function patchUpdates(_0x2e84d3){return function(_0x310e1d){try{jsonpatch[_0xd85b('0x20')](_0x310e1d,_0x2e84d3,!![]);}catch(_0x4d2c04){return BPromise[_0xd85b('0x21')](_0x4d2c04);}return _0x310e1d[_0xd85b('0x22')]();};}function saveUpdates(_0x40ae31,_0x1b4f60){return function(_0x1f8811){if(_0x1f8811){return _0x1f8811[_0xd85b('0x23')](_0x40ae31)['then'](function(_0x3db135){return _0x3db135;});}return null;};}function removeEntity(_0x542608,_0x4945f6){return function(_0xa70003){if(_0xa70003){return _0xa70003['destroy']()['then'](function(){var _0x32be27=_0xa70003[_0xd85b('0x24')]({'plain':!![]});var _0xde61a4='Pauses';return db[_0xd85b('0x25')]['destroy']({'where':{'type':_0xde61a4,'resourceId':_0x32be27['id']}})[_0xd85b('0x26')](function(){return _0xa70003;});})['then'](function(){_0x542608[_0xd85b('0x19')](0xcc)[_0xd85b('0x18')]();});}};}function handleEntityNotFound(_0xf44a89,_0x72914d){return function(_0xf4941d){if(!_0xf4941d){_0xf44a89[_0xd85b('0x17')](0x194);}return _0xf4941d;};}function handleError(_0x4431b3,_0x466286){_0x466286=_0x466286||0x1f4;return function(_0x122e3d){logger[_0xd85b('0x27')](_0x122e3d[_0xd85b('0x28')]);if(_0x122e3d['name']){delete _0x122e3d['name'];}_0x4431b3['status'](_0x466286)[_0xd85b('0x29')](_0x122e3d);};}exports['index']=function(_0x252cae,_0x16ea14){var _0x90cb31={},_0x243488={},_0x5ee219={'count':0x0,'rows':[]};var _0x371558=_[_0xd85b('0x2a')](db[_0xd85b('0x2b')][_0xd85b('0x2c')],function(_0x3a6e80){return{'name':_0x3a6e80['fieldName'],'type':_0x3a6e80['type'][_0xd85b('0x2d')]};});_0x243488[_0xd85b('0x2e')]=_[_0xd85b('0x2a')](_0x371558,'name');_0x243488[_0xd85b('0x2f')]=_[_0xd85b('0x30')](_0x252cae[_0xd85b('0x2f')]);_0x243488['filters']=_['intersection'](_0x243488[_0xd85b('0x2e')],_0x243488[_0xd85b('0x2f')]);_0x90cb31[_0xd85b('0x31')]=_['intersection'](_0x243488[_0xd85b('0x2e')],qs[_0xd85b('0x32')](_0x252cae['query'][_0xd85b('0x32')]));_0x90cb31[_0xd85b('0x31')]=_0x90cb31[_0xd85b('0x31')]['length']?_0x90cb31[_0xd85b('0x31')]:_0x243488[_0xd85b('0x2e')];if(!_0x252cae[_0xd85b('0x2f')][_0xd85b('0x33')](_0xd85b('0x34'))){_0x90cb31[_0xd85b('0x1c')]=qs['limit'](_0x252cae[_0xd85b('0x2f')]['limit']);_0x90cb31[_0xd85b('0x1a')]=qs['offset'](_0x252cae['query'][_0xd85b('0x1a')]);}_0x90cb31[_0xd85b('0x35')]=qs[_0xd85b('0x36')](_0x252cae[_0xd85b('0x2f')][_0xd85b('0x36')]);_0x90cb31[_0xd85b('0x37')]=qs[_0xd85b('0x38')](_[_0xd85b('0x39')](_0x252cae['query'],_0x243488[_0xd85b('0x38')]),_0x371558);if(_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3a')]){_0x90cb31[_0xd85b('0x37')]=_['merge'](_0x90cb31[_0xd85b('0x37')],{'$or':_[_0xd85b('0x2a')](_0x371558,function(_0x28980d){if(_0x28980d[_0xd85b('0x3b')]!==_0xd85b('0x3c')){var _0x24aa51={};_0x24aa51[_0x28980d['name']]={'$like':'%'+_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3a')]+'%'};return _0x24aa51;}})});}_0x90cb31=_['merge']({},_0x90cb31,_0x252cae[_0xd85b('0x3d')]);var _0x5e733d={'where':_0x90cb31['where']};return db['Pause'][_0xd85b('0x1d')](_0x5e733d)[_0xd85b('0x26')](function(_0x46fecb){_0x5ee219[_0xd85b('0x1d')]=_0x46fecb;if(_0x252cae[_0xd85b('0x2f')][_0xd85b('0x3e')]){_0x90cb31['include']=[{'all':!![]}];}return db[_0xd85b('0x2b')][_0xd85b('0x3f')](_0x90cb31);})[_0xd85b('0x26')](function(_0x14ba08){_0x5ee219[_0xd85b('0x40')]=_0x14ba08;return _0x5ee219;})[_0xd85b('0x26')](respondWithFilteredResult(_0x16ea14,_0x90cb31))[_0xd85b('0x41')](handleError(_0x16ea14,null));};exports[_0xd85b('0x42')]=function(_0x3d6afa,_0x2b628d){var _0x13e8b5={'raw':!![],'where':{'id':_0x3d6afa[_0xd85b('0x43')]['id']}},_0x4687f3={};_0x4687f3[_0xd85b('0x2e')]=_[_0xd85b('0x30')](db[_0xd85b('0x2b')]['rawAttributes']);_0x4687f3['query']=_[_0xd85b('0x30')](_0x3d6afa[_0xd85b('0x2f')]);_0x4687f3[_0xd85b('0x38')]=_[_0xd85b('0x44')](_0x4687f3[_0xd85b('0x2e')],_0x4687f3[_0xd85b('0x2f')]);_0x13e8b5[_0xd85b('0x31')]=_[_0xd85b('0x44')](_0x4687f3[_0xd85b('0x2e')],qs[_0xd85b('0x32')](_0x3d6afa[_0xd85b('0x2f')]['fields']));_0x13e8b5[_0xd85b('0x31')]=_0x13e8b5[_0xd85b('0x31')][_0xd85b('0x45')]?_0x13e8b5[_0xd85b('0x31')]:_0x4687f3['model'];if(_0x3d6afa[_0xd85b('0x2f')][_0xd85b('0x3e')]){_0x13e8b5[_0xd85b('0x46')]=[{'all':!![]}];}_0x13e8b5=_['merge']({},_0x13e8b5,_0x3d6afa['options']);return db[_0xd85b('0x2b')][_0xd85b('0x47')](_0x13e8b5)['then'](handleEntityNotFound(_0x2b628d,null))[_0xd85b('0x26')](respondWithResult(_0x2b628d,null))[_0xd85b('0x41')](handleError(_0x2b628d,null));};exports[_0xd85b('0x48')]=function(_0x202a95,_0x230b11){return db[_0xd85b('0x2b')][_0xd85b('0x48')](_0x202a95[_0xd85b('0x49')],{})[_0xd85b('0x26')](function(_0x334cb6){var _0x27dd54=_0x202a95['user'][_0xd85b('0x24')]({'plain':!![]});if(!_0x27dd54)throw new Error(_0xd85b('0x4a'));if(_0x27dd54[_0xd85b('0x4b')]===_0xd85b('0x4c')){var _0x4a8a61=_0x334cb6[_0xd85b('0x24')]({'plain':!![]});var _0x41fd76='Pauses';return db[_0xd85b('0x4d')]['find']({'where':{'name':_0x41fd76,'userProfileId':_0x27dd54[_0xd85b('0x4e')]},'raw':!![]})[_0xd85b('0x26')](function(_0x533ba9){if(_0x533ba9&&_0x533ba9['autoAssociation']===0x0){return db[_0xd85b('0x25')][_0xd85b('0x48')]({'name':_0x4a8a61[_0xd85b('0x4f')],'resourceId':_0x4a8a61['id'],'type':_0x533ba9[_0xd85b('0x4f')],'sectionId':_0x533ba9['id']},{})['then'](function(){return _0x334cb6;});}else{return _0x334cb6;}})[_0xd85b('0x41')](function(_0xf45df6){logger[_0xd85b('0x27')](_0xd85b('0x50'),_0xf45df6);throw _0xf45df6;});}return _0x334cb6;})[_0xd85b('0x26')](respondWithResult(_0x230b11,0xc9))[_0xd85b('0x41')](handleError(_0x230b11,null));};exports[_0xd85b('0x23')]=function(_0x1cb9e5,_0x5af140){if(_0x1cb9e5[_0xd85b('0x49')]['id']){delete _0x1cb9e5[_0xd85b('0x49')]['id'];}return db[_0xd85b('0x2b')]['find']({'where':{'id':_0x1cb9e5[_0xd85b('0x43')]['id']}})['then'](handleEntityNotFound(_0x5af140,null))[_0xd85b('0x26')](saveUpdates(_0x1cb9e5[_0xd85b('0x49')],null))[_0xd85b('0x26')](respondWithResult(_0x5af140,null))[_0xd85b('0x41')](handleError(_0x5af140,null));};exports[_0xd85b('0x51')]=function(_0x22111b,_0xb42c51){return db[_0xd85b('0x2b')][_0xd85b('0x47')]({'where':{'id':_0x22111b['params']['id']}})[_0xd85b('0x26')](handleEntityNotFound(_0xb42c51,null))[_0xd85b('0x26')](removeEntity(_0xb42c51,null))['catch'](handleError(_0xb42c51,null));};
\ No newline at end of file
index 1738495..4e8b44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./pause.attributes','exports','define','Pause','tools_pauses','lodash','util','moment'];(function(_0xa9a64f,_0x58ce52){var _0x405904=function(_0xdc1898){while(--_0xdc1898){_0xa9a64f['push'](_0xa9a64f['shift']());}};_0x405904(++_0x58ce52);}(_0xe14b,0x93));var _0xbe14=function(_0x5cb665,_0x39e787){_0x5cb665=_0x5cb665-0x0;var _0x13ef84=_0xe14b[_0x5cb665];return _0x13ef84;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','Pause'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x4937b2,_0x2599cf){_0x4937b2=_0x4937b2-0x0;var _0x8da2fb=_0x7fbe[_0x4937b2];return _0x8da2fb;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2cd108a..6a17c03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0xe64cd1,_0x34d8dd){var _0x2f7ac6=function(_0x1e23a2){while(--_0x1e23a2){_0xe64cd1['push'](_0xe64cd1['shift']());}};_0x2f7ac6(++_0x34d8dd);}(_0x7a54,0x106));var _0x47a5=function(_0x462874,_0xb9a976){_0x462874=_0x462874-0x0;var _0x52f064=_0x7a54[_0x462874];return _0x52f064;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
+var _0x7a54=['message','request\x20sent','result','catch','Pause','find','options','raw','where','attributes','map','include','model','ShowPause','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','Pause,\x20%s,\x20%s','debug','stringify','error','code'];(function(_0x2c5af7,_0x31aced){var _0x5d7012=function(_0x57e642){while(--_0x57e642){_0x2c5af7['push'](_0x2c5af7['shift']());}};_0x5d7012(++_0x31aced);}(_0x7a54,0x106));var _0x47a5=function(_0x681f50,_0x5c7034){_0x681f50=_0x681f50-0x0;var _0x392bf8=_0x7a54[_0x681f50];return _0x392bf8;};'use strict';var _=require(_0x47a5('0x0'));var util=require(_0x47a5('0x1'));var moment=require(_0x47a5('0x2'));var BPromise=require('bluebird');var rs=require(_0x47a5('0x3'));var fs=require('fs');var Redis=require(_0x47a5('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x47a5('0x5'));var logger=require(_0x47a5('0x6'))(_0x47a5('0x7'));var config=require(_0x47a5('0x8'));var jayson=require(_0x47a5('0x9'));var client=jayson['client'][_0x47a5('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59199c,_0x343372,_0x30e405){return new BPromise(function(_0x506eda,_0x194fb0){return client['request'](_0x59199c,_0x30e405)['then'](function(_0x582352){logger[_0x47a5('0xb')](_0x47a5('0xc'),_0x343372,'request\x20sent');logger[_0x47a5('0xd')]('Pause,\x20%s,\x20%s,\x20%s',_0x343372,'request\x20sent',JSON[_0x47a5('0xe')](_0x582352));if(_0x582352[_0x47a5('0xf')]){if(_0x582352[_0x47a5('0xf')][_0x47a5('0x10')]===0x1f4){logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')]['message']);return _0x194fb0(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}logger[_0x47a5('0xf')](_0x47a5('0xc'),_0x343372,_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);return _0x506eda(_0x582352[_0x47a5('0xf')][_0x47a5('0x11')]);}else{logger['info'](_0x47a5('0xc'),_0x343372,_0x47a5('0x12'));_0x506eda(_0x582352[_0x47a5('0x13')][_0x47a5('0x11')]);}})[_0x47a5('0x14')](function(_0x574af6){logger['error'](_0x47a5('0xc'),_0x343372,_0x574af6);_0x194fb0(_0x574af6);});});}exports['ShowPause']=function(_0x5247fd){var _0x423a81=this;return new Promise(function(_0xaf70a6,_0x2ce454){return db[_0x47a5('0x15')][_0x47a5('0x16')]({'raw':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')][_0x47a5('0x18')]===undefined?!![]:![]:!![],'where':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x19')]||null:null,'attributes':_0x5247fd[_0x47a5('0x17')]?_0x5247fd['options'][_0x47a5('0x1a')]||null:null,'include':_0x5247fd[_0x47a5('0x17')]?_0x5247fd[_0x47a5('0x17')]['include']?_[_0x47a5('0x1b')](_0x5247fd[_0x47a5('0x17')][_0x47a5('0x1c')],function(_0x7a9f9e){return{'model':db[_0x7a9f9e['model']],'as':_0x7a9f9e['as'],'attributes':_0x7a9f9e[_0x47a5('0x1a')],'include':_0x7a9f9e[_0x47a5('0x1c')]?_['map'](_0x7a9f9e[_0x47a5('0x1c')],function(_0xc4cd63){return{'model':db[_0xc4cd63[_0x47a5('0x1d')]],'as':_0xc4cd63['as'],'attributes':_0xc4cd63[_0x47a5('0x1a')],'include':_0xc4cd63[_0x47a5('0x1c')]?_['map'](_0xc4cd63['include'],function(_0x136745){return{'model':db[_0x136745['model']],'as':_0x136745['as'],'attributes':_0x136745[_0x47a5('0x1a')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x23cb77){logger[_0x47a5('0xb')](_0x47a5('0x1e'),_0x5247fd);logger[_0x47a5('0xd')](_0x47a5('0x1e'),_0x5247fd,JSON[_0x47a5('0xe')](_0x23cb77));_0xaf70a6(_0x23cb77);})[_0x47a5('0x14')](function(_0x136b14){logger[_0x47a5('0xf')](_0x47a5('0x1e'),_0x136b14[_0x47a5('0x11')],_0x5247fd);_0x2ce454(_0x423a81[_0x47a5('0xf')](0x1f4,_0x136b14[_0x47a5('0x11')]));});});};
\ No newline at end of file
index 2eb3c63..527b001 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55e0=['webhookPost','update','delete','multer','util','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','webhookGet','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/plugins','originalname','replace','%s-%s%s','basename','extname','post','file','upload','/webhook'];(function(_0x490033,_0x27f4e7){var _0x2269bf=function(_0x332e3d){while(--_0x332e3d){_0x490033['push'](_0x490033['shift']());}};_0x2269bf(++_0x27f4e7);}(_0x55e0,0xdc));var _0x055e=function(_0x1a1eab,_0x28d992){_0x1a1eab=_0x1a1eab-0x0;var _0x260bb7=_0x55e0[_0x1a1eab];return _0x260bb7;};'use strict';var multer=require(_0x055e('0x0'));var util=require(_0x055e('0x1'));var path=require(_0x055e('0x2'));var timeout=require(_0x055e('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x055e('0x4'));var auth=require(_0x055e('0x5'));var interaction=require(_0x055e('0x6'));var config=require(_0x055e('0x7'));var controller=require(_0x055e('0x8'));router[_0x055e('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x055e('0x9')]('/webhook',controller[_0x055e('0xa')]);router[_0x055e('0x9')](_0x055e('0xb'),auth[_0x055e('0xc')](),controller[_0x055e('0xd')]);router['get'](_0x055e('0xe'),auth[_0x055e('0xc')](),controller[_0x055e('0xf')]);var upload=multer({'storage':multer[_0x055e('0x10')]({'destination':function(_0x238068,_0x5237d9,_0x56c78a){_0x56c78a(null,path[_0x055e('0x11')](config['root'],_0x055e('0x12')));},'filename':function(_0x466da3,_0x72d424,_0x101bc3){_0x72d424[_0x055e('0x13')]=_0x72d424[_0x055e('0x13')][_0x055e('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x101bc3(null,util['format'](_0x055e('0x15'),path[_0x055e('0x16')](_0x72d424[_0x055e('0x13')],path[_0x055e('0x17')](_0x72d424[_0x055e('0x13')])),Date['now'](),path[_0x055e('0x17')](_0x72d424[_0x055e('0x13')])));}})});router[_0x055e('0x18')]('/',upload['single'](_0x055e('0x19')),controller[_0x055e('0x1a')]);router[_0x055e('0x18')](_0x055e('0x1b'),controller[_0x055e('0x1c')]);router['put'](_0x055e('0xb'),auth[_0x055e('0xc')](),controller[_0x055e('0x1d')]);router[_0x055e('0x1e')]('/:id',auth[_0x055e('0xc')](),controller[_0x055e('0x1e')]);module['exports']=router;
\ No newline at end of file
+var _0x34e8=['put','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./plugin.controller','get','index','/webhook','webhookGet','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/plugins','originalname','replace','format','%s-%s%s','extname','now','post','file','upload','webhookPost'];(function(_0x5401dc,_0x5ec7d5){var _0x15d654=function(_0x4a6437){while(--_0x4a6437){_0x5401dc['push'](_0x5401dc['shift']());}};_0x15d654(++_0x5ec7d5);}(_0x34e8,0x12c));var _0x834e=function(_0xb9aede,_0x578e80){_0xb9aede=_0xb9aede-0x0;var _0x1f6a60=_0x34e8[_0xb9aede];return _0x1f6a60;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),controller[_0x834e('0xd')]);router[_0x834e('0xa')](_0x834e('0xe'),auth[_0x834e('0xf')](),controller[_0x834e('0x10')]);router[_0x834e('0xa')](_0x834e('0x11'),auth[_0x834e('0xf')](),controller[_0x834e('0x12')]);var upload=multer({'storage':multer[_0x834e('0x13')]({'destination':function(_0x36e124,_0x14038b,_0x2e1a37){_0x2e1a37(null,path[_0x834e('0x14')](config[_0x834e('0x15')],_0x834e('0x16')));},'filename':function(_0x538bb3,_0x5e5b6d,_0x6cd9b9){_0x5e5b6d['originalname']=_0x5e5b6d[_0x834e('0x17')][_0x834e('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x6cd9b9(null,util[_0x834e('0x19')](_0x834e('0x1a'),path['basename'](_0x5e5b6d[_0x834e('0x17')],path[_0x834e('0x1b')](_0x5e5b6d['originalname'])),Date[_0x834e('0x1c')](),path['extname'](_0x5e5b6d[_0x834e('0x17')])));}})});router[_0x834e('0x1d')]('/',upload['single'](_0x834e('0x1e')),controller[_0x834e('0x1f')]);router[_0x834e('0x1d')]('/webhook',controller[_0x834e('0x20')]);router[_0x834e('0x21')](_0x834e('0xe'),auth[_0x834e('0xf')](),controller[_0x834e('0x22')]);router[_0x834e('0x23')](_0x834e('0xe'),auth['isAuthenticated'](),controller[_0x834e('0x23')]);module[_0x834e('0x24')]=router;
\ No newline at end of file
index 7cca552..7a9e729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c13=['agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','exports','STRING','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','BOOLEAN','adminOnly'];(function(_0x43d11d,_0xccff91){var _0x38cd08=function(_0x131ae2){while(--_0x131ae2){_0x43d11d['push'](_0x43d11d['shift']());}};_0x38cd08(++_0xccff91);}(_0x9c13,0x12a));var _0x39c1=function(_0x576e2b,_0x328953){_0x576e2b=_0x576e2b-0x0;var _0x46461a=_0x9c13[_0x576e2b];return _0x46461a;};'use strict';var Sequelize=require(_0x39c1('0x0'));module[_0x39c1('0x1')]={'name':{'type':Sequelize[_0x39c1('0x2')]},'type':{'type':Sequelize[_0x39c1('0x3')](_0x39c1('0x4'),_0x39c1('0x5'))},'description':{'type':Sequelize[_0x39c1('0x6')]},'version':{'type':Sequelize[_0x39c1('0x6')]},'path':{'type':Sequelize[_0x39c1('0x2')],'comment':_0x39c1('0x7')},'active':{'type':Sequelize[_0x39c1('0x8')],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize[_0x39c1('0x3')](_0x39c1('0x9'),_0x39c1('0xa'),_0x39c1('0xb'),_0x39c1('0xc')),'defaultValue':_0x39c1('0xb'),'comment':_0x39c1('0xd')},'icon':{'type':Sequelize[_0x39c1('0x2')]},'adminUrl':{'type':Sequelize[_0x39c1('0x2')]},'agentUrl':{'type':Sequelize['STRING']},'scriptName':{'type':Sequelize['STRING']},'scriptPath':{'type':Sequelize[_0x39c1('0x2')]}};
\ No newline at end of file
+var _0xaaa4=['never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','exports','STRING','ENUM','html','script','TEXT','adminOnly','agentOnly','always'];(function(_0x4cad27,_0x35a526){var _0x5d9d71=function(_0x52294b){while(--_0x52294b){_0x4cad27['push'](_0x4cad27['shift']());}};_0x5d9d71(++_0x35a526);}(_0xaaa4,0x70));var _0x4aaa=function(_0x354996,_0x1e5127){_0x354996=_0x354996-0x0;var _0x25e1fa=_0xaaa4[_0x354996];return _0x25e1fa;};'use strict';var Sequelize=require('sequelize');module[_0x4aaa('0x0')]={'name':{'type':Sequelize[_0x4aaa('0x1')]},'type':{'type':Sequelize[_0x4aaa('0x2')](_0x4aaa('0x3'),_0x4aaa('0x4'))},'description':{'type':Sequelize[_0x4aaa('0x5')]},'version':{'type':Sequelize['TEXT']},'path':{'type':Sequelize[_0x4aaa('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.'},'sidebar':{'type':Sequelize['ENUM'](_0x4aaa('0x6'),_0x4aaa('0x7'),_0x4aaa('0x8'),_0x4aaa('0x9')),'defaultValue':_0x4aaa('0x8'),'comment':_0x4aaa('0xa')},'icon':{'type':Sequelize[_0x4aaa('0x1')]},'adminUrl':{'type':Sequelize[_0x4aaa('0x1')]},'agentUrl':{'type':Sequelize[_0x4aaa('0x1')]},'scriptName':{'type':Sequelize[_0x4aaa('0x1')]},'scriptPath':{'type':Sequelize[_0x4aaa('0x1')]}};
\ No newline at end of file
index e8eedba..4f11863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b0a=['parameters','html','views','Invalid\x20manifest:\x20views\x20missing','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','always','icon','icon-apps','test','plugins','Warning:\x20agent\x20view\x20not\x20specified','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','Plugins','UserProfileResource','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','delete','destroy','dirname','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','encoding','method','%s%s','headers','content-length','content-type','endsWith','statusCode','webhookPost','hostname','http://localhost:','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','extract-zip','rimraf','archiver','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./plugin.socket','register','end','status','json','undefined','limit','count','offset','set','apply','reject','save','update','then','sendStatus','error','name','send','index','Plugin','rawAttributes','fieldName','type','model','map','query','keys','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','find','download','join','root','server/files/plugins','format','%s.zip','basename','createWriteStream','zip','code','ENOENT','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','Sequelize','pipe','glob','**/*','attachments/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','info','Download\x20completed','filename','extname','file','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','parse','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified'];(function(_0x4827fe,_0x2333f6){var _0x30d357=function(_0x1131f0){while(--_0x1131f0){_0x4827fe['push'](_0x4827fe['shift']());}};_0x30d357(++_0x2333f6);}(_0x4b0a,0xd5));var _0xa4b0=function(_0x70bdb5,_0x12a342){_0x70bdb5=_0x70bdb5-0x0;var _0x1232f9=_0x4b0a[_0x70bdb5];return _0x1232f9;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xa4b0('0x0'));var rp=require(_0xa4b0('0x1'));var moment=require(_0xa4b0('0x2'));var BPromise=require(_0xa4b0('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xa4b0('0x4'));var sox=require(_0xa4b0('0x5'));var csv=require(_0xa4b0('0x6'));var ejs=require(_0xa4b0('0x7'));var fs=require('fs');var fs_extra=require(_0xa4b0('0x8'));var _=require(_0xa4b0('0x9'));var squel=require(_0xa4b0('0xa'));var crypto=require(_0xa4b0('0xb'));var jsforce=require(_0xa4b0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa4b0('0x6'));var querystring=require(_0xa4b0('0xd'));var Papa=require(_0xa4b0('0xe'));var extract=require(_0xa4b0('0xf'));var rimraf=require(_0xa4b0('0x10'));var archiver=require(_0xa4b0('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xa4b0('0x12'));var as=require(_0xa4b0('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa4b0('0x14'))('api');var utils=require(_0xa4b0('0x15'));var config=require(_0xa4b0('0x16'));var licenseUtil=require(_0xa4b0('0x17'));var db=require(_0xa4b0('0x18'))['db'];config[_0xa4b0('0x19')]=_[_0xa4b0('0x1a')](config[_0xa4b0('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xa4b0('0x1b'))(new Redis(config[_0xa4b0('0x19')]));require(_0xa4b0('0x1c'))[_0xa4b0('0x1d')](socket);function respondWithStatusCode(_0x259f5e,_0x5128be){_0x5128be=_0x5128be||0xcc;return function(_0x553007){if(_0x553007){return _0x259f5e['sendStatus'](_0x5128be);}return _0x259f5e['status'](_0x5128be)[_0xa4b0('0x1e')]();};}function respondWithResult(_0x2801dd,_0x4e652d){_0x4e652d=_0x4e652d||0xc8;return function(_0xfdc6cc){if(_0xfdc6cc){return _0x2801dd[_0xa4b0('0x1f')](_0x4e652d)[_0xa4b0('0x20')](_0xfdc6cc);}};}function respondWithFilteredResult(_0x2ee2f1,_0x5a7ff2){return function(_0x61182c){if(_0x61182c){var _0xf17c9b=typeof _0x5a7ff2['offset']===_0xa4b0('0x21')&&typeof _0x5a7ff2[_0xa4b0('0x22')]===_0xa4b0('0x21');var _0x51bb3e=_0x61182c[_0xa4b0('0x23')];var _0xf09c93=_0xf17c9b?0x0:_0x5a7ff2[_0xa4b0('0x24')];var _0x48918d=_0xf17c9b?_0x61182c[_0xa4b0('0x23')]:_0x5a7ff2[_0xa4b0('0x24')]+_0x5a7ff2[_0xa4b0('0x22')];var _0x3863ed;if(_0x48918d>=_0x51bb3e){_0x48918d=_0x51bb3e;_0x3863ed=0xc8;}else{_0x3863ed=0xce;}_0x2ee2f1[_0xa4b0('0x1f')](_0x3863ed);return _0x2ee2f1[_0xa4b0('0x25')]('Content-Range',_0xf09c93+'-'+_0x48918d+'/'+_0x51bb3e)['json'](_0x61182c);}return null;};}function patchUpdates(_0x32cc37){return function(_0x3ffd17){try{jsonpatch[_0xa4b0('0x26')](_0x3ffd17,_0x32cc37,!![]);}catch(_0x264370){return BPromise[_0xa4b0('0x27')](_0x264370);}return _0x3ffd17[_0xa4b0('0x28')]();};}function saveUpdates(_0xbde146,_0x10f691){return function(_0x876a){if(_0x876a){return _0x876a[_0xa4b0('0x29')](_0xbde146)[_0xa4b0('0x2a')](function(_0x651fca){return _0x651fca;});}return null;};}function removeEntity(_0xbcedee,_0x17bcee){return function(_0x543321){if(_0x543321){return _0x543321['destroy']()[_0xa4b0('0x2a')](function(){var _0x59f38e=_0x543321['get']({'plain':!![]});var _0x643ef7='Plugins';return db['UserProfileResource']['destroy']({'where':{'type':_0x643ef7,'resourceId':_0x59f38e['id']}})['then'](function(){return _0x543321;});})[_0xa4b0('0x2a')](function(){_0xbcedee[_0xa4b0('0x1f')](0xcc)[_0xa4b0('0x1e')]();});}};}function handleEntityNotFound(_0x2d58d5,_0x37a4db){return function(_0x3735fc){if(!_0x3735fc){_0x2d58d5[_0xa4b0('0x2b')](0x194);}return _0x3735fc;};}function handleError(_0x108f87,_0x2547ce){_0x2547ce=_0x2547ce||0x1f4;return function(_0x591f0e){logger[_0xa4b0('0x2c')](_0x591f0e['stack']);if(_0x591f0e[_0xa4b0('0x2d')]){delete _0x591f0e['name'];}_0x108f87[_0xa4b0('0x1f')](_0x2547ce)[_0xa4b0('0x2e')](_0x591f0e);};}exports[_0xa4b0('0x2f')]=function(_0x49fd8d,_0x38bff3){var _0x5ef974={},_0x47a0e1={},_0x15e6d3={'count':0x0,'rows':[]};var _0x16e0a5=_['map'](db[_0xa4b0('0x30')][_0xa4b0('0x31')],function(_0x21e69f){return{'name':_0x21e69f[_0xa4b0('0x32')],'type':_0x21e69f[_0xa4b0('0x33')]['key']};});_0x47a0e1[_0xa4b0('0x34')]=_[_0xa4b0('0x35')](_0x16e0a5,_0xa4b0('0x2d'));_0x47a0e1[_0xa4b0('0x36')]=_[_0xa4b0('0x37')](_0x49fd8d[_0xa4b0('0x36')]);_0x47a0e1['filters']=_[_0xa4b0('0x38')](_0x47a0e1[_0xa4b0('0x34')],_0x47a0e1[_0xa4b0('0x36')]);_0x5ef974[_0xa4b0('0x39')]=_[_0xa4b0('0x38')](_0x47a0e1['model'],qs[_0xa4b0('0x3a')](_0x49fd8d[_0xa4b0('0x36')][_0xa4b0('0x3a')]));_0x5ef974[_0xa4b0('0x39')]=_0x5ef974[_0xa4b0('0x39')][_0xa4b0('0x3b')]?_0x5ef974[_0xa4b0('0x39')]:_0x47a0e1[_0xa4b0('0x34')];if(!_0x49fd8d[_0xa4b0('0x36')]['hasOwnProperty'](_0xa4b0('0x3c'))){_0x5ef974[_0xa4b0('0x22')]=qs[_0xa4b0('0x22')](_0x49fd8d[_0xa4b0('0x36')]['limit']);_0x5ef974[_0xa4b0('0x24')]=qs['offset'](_0x49fd8d['query'][_0xa4b0('0x24')]);}_0x5ef974['order']=qs[_0xa4b0('0x3d')](_0x49fd8d['query'][_0xa4b0('0x3d')]);_0x5ef974[_0xa4b0('0x3e')]=qs['filters'](_[_0xa4b0('0x3f')](_0x49fd8d['query'],_0x47a0e1['filters']),_0x16e0a5);if(_0x49fd8d['query'][_0xa4b0('0x40')]){_0x5ef974[_0xa4b0('0x3e')]=_[_0xa4b0('0x41')](_0x5ef974[_0xa4b0('0x3e')],{'$or':_['map'](_0x16e0a5,function(_0x4442f9){if(_0x4442f9[_0xa4b0('0x33')]!==_0xa4b0('0x42')){var _0x9452e0={};_0x9452e0[_0x4442f9[_0xa4b0('0x2d')]]={'$like':'%'+_0x49fd8d[_0xa4b0('0x36')][_0xa4b0('0x40')]+'%'};return _0x9452e0;}})});}_0x5ef974=_[_0xa4b0('0x41')]({},_0x5ef974,_0x49fd8d[_0xa4b0('0x43')]);var _0x34b31f={'where':_0x5ef974[_0xa4b0('0x3e')]};return db[_0xa4b0('0x30')][_0xa4b0('0x23')](_0x34b31f)[_0xa4b0('0x2a')](function(_0x6082c7){_0x15e6d3[_0xa4b0('0x23')]=_0x6082c7;if(_0x49fd8d[_0xa4b0('0x36')][_0xa4b0('0x44')]){_0x5ef974['include']=[{'all':!![]}];}return db[_0xa4b0('0x30')][_0xa4b0('0x45')](_0x5ef974);})[_0xa4b0('0x2a')](function(_0x42e312){_0x15e6d3[_0xa4b0('0x46')]=_0x42e312;return _0x15e6d3;})[_0xa4b0('0x2a')](respondWithFilteredResult(_0x38bff3,_0x5ef974))[_0xa4b0('0x47')](handleError(_0x38bff3,null));};exports['show']=function(_0x5bcd3a,_0x7876a8){var _0x59390f={'raw':!![],'where':{'id':_0x5bcd3a[_0xa4b0('0x48')]['id']}},_0x3aaddb={};_0x3aaddb[_0xa4b0('0x34')]=_[_0xa4b0('0x37')](db[_0xa4b0('0x30')][_0xa4b0('0x31')]);_0x3aaddb[_0xa4b0('0x36')]=_[_0xa4b0('0x37')](_0x5bcd3a['query']);_0x3aaddb['filters']=_[_0xa4b0('0x38')](_0x3aaddb[_0xa4b0('0x34')],_0x3aaddb[_0xa4b0('0x36')]);_0x59390f['attributes']=_[_0xa4b0('0x38')](_0x3aaddb['model'],qs[_0xa4b0('0x3a')](_0x5bcd3a[_0xa4b0('0x36')][_0xa4b0('0x3a')]));_0x59390f['attributes']=_0x59390f['attributes'][_0xa4b0('0x3b')]?_0x59390f[_0xa4b0('0x39')]:_0x3aaddb['model'];if(_0x5bcd3a[_0xa4b0('0x36')][_0xa4b0('0x44')]){_0x59390f[_0xa4b0('0x49')]=[{'all':!![]}];}_0x59390f=_[_0xa4b0('0x41')]({},_0x59390f,_0x5bcd3a['options']);return db[_0xa4b0('0x30')][_0xa4b0('0x4a')](_0x59390f)[_0xa4b0('0x2a')](handleEntityNotFound(_0x7876a8,null))[_0xa4b0('0x2a')](respondWithResult(_0x7876a8,null))['catch'](handleError(_0x7876a8,null));};exports[_0xa4b0('0x4b')]=function(_0x235fa4,_0x45992a,_0x2b3f19){return db[_0xa4b0('0x30')][_0xa4b0('0x4a')]({'where':{'id':_0x235fa4[_0xa4b0('0x48')]['id']},'attributes':['name',_0xa4b0('0x4')],'raw':!![]})[_0xa4b0('0x2a')](handleEntityNotFound(_0x45992a,null))[_0xa4b0('0x2a')](function(_0x1a576f){if(_0x1a576f){var _0x3b9f4b=path[_0xa4b0('0x4c')](config[_0xa4b0('0x4d')],_0xa4b0('0x4e'),util[_0xa4b0('0x4f')](_0xa4b0('0x50'),path[_0xa4b0('0x51')](_0x1a576f['path'])));var _0x243437=fs[_0xa4b0('0x52')](_0x3b9f4b);var _0x1510b9=archiver(_0xa4b0('0x53'),{'zlib':{'level':0x9}});_0x1510b9['on']('warning',function(_0x4bde79){if(_0x4bde79[_0xa4b0('0x54')]===_0xa4b0('0x55')){logger[_0xa4b0('0x2c')](_0x4bde79);}else{throw new db['Sequelize'][(_0xa4b0('0x56'))](_0xa4b0('0x57'));}});_0x1510b9['on'](_0xa4b0('0x2c'),function(_0x18a547){throw new db[(_0xa4b0('0x58'))]['Error']('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x1510b9[_0xa4b0('0x59')](_0x243437);_0x1510b9[_0xa4b0('0x5a')](_0xa4b0('0x5b'),{'cwd':path[_0xa4b0('0x4c')](config[_0xa4b0('0x4d')],_0xa4b0('0x4e'),path['dirname'](_0x1a576f[_0xa4b0('0x4')])),'ignore':[path[_0xa4b0('0x4c')](path[_0xa4b0('0x51')](_0x1a576f[_0xa4b0('0x4')]),'node_modules/**/*'),path[_0xa4b0('0x4c')](path[_0xa4b0('0x51')](_0x1a576f[_0xa4b0('0x4')]),_0xa4b0('0x5c'))],'nodir':!![]})[_0xa4b0('0x5d')]();_0x243437['on'](_0xa4b0('0x5e'),function(){if(!fs[_0xa4b0('0x5f')](_0x3b9f4b)){throw new db['Sequelize'][(_0xa4b0('0x56'))](_0xa4b0('0x60'));}return _0x45992a[_0xa4b0('0x4b')](_0x3b9f4b,util[_0xa4b0('0x4f')](_0xa4b0('0x50'),path[_0xa4b0('0x51')](_0x1a576f[_0xa4b0('0x4')])),function(_0x13f07b){if(_0x13f07b){throw new db['Sequelize'][(_0xa4b0('0x56'))](_0xa4b0('0x61'));}fs['unlinkSync'](_0x3b9f4b);logger[_0xa4b0('0x62')](_0xa4b0('0x63'));logger['info']('Temporary\x20file\x20removed');});});}return null;})[_0xa4b0('0x47')](handleError(_0x45992a,null));};exports['upload']=function(_0x2d85e0,_0x2a311a,_0x1505b3){var _0x2c2e39=path[_0xa4b0('0x51')](_0x2d85e0['file'][_0xa4b0('0x64')],path[_0xa4b0('0x65')](_0x2d85e0[_0xa4b0('0x66')][_0xa4b0('0x64')]));var _0x1a59fd=path['join'](config[_0xa4b0('0x4d')],_0xa4b0('0x4e'),_0x2d85e0[_0xa4b0('0x66')][_0xa4b0('0x64')]);var _0x480320=path[_0xa4b0('0x4c')](config[_0xa4b0('0x4d')],_0xa4b0('0x4e'),_0x2c2e39);logger[_0xa4b0('0x62')](_0xa4b0('0x67'),_0x1a59fd);logger[_0xa4b0('0x62')](_0xa4b0('0x68'),_0x480320);try{fs['chmodSync'](_0x1a59fd,parseInt(_0xa4b0('0x69'),0x8));extract(_0x1a59fd,{'dir':_0x480320},function(_0x4d3f7b){if(_0x4d3f7b){logger[_0xa4b0('0x2c')](_0x4d3f7b);handleError(_0x4d3f7b,!![]);};var _0x2d7763=fs[_0xa4b0('0x6a')](_0x480320);if(_0x2d7763[_0xa4b0('0x3b')]>0x1){removeReferences(_0x1a59fd,_0x480320);logger[_0xa4b0('0x2c')](_0xa4b0('0x6b'));return _0x1505b3(new Error(_0xa4b0('0x6b')));}var _0x259cec=fs[_0xa4b0('0x6c')](path[_0xa4b0('0x4c')](_0x480320,_0x2d7763[0x0]));if(_0x259cec[_0xa4b0('0x6d')]()){removeReferences(_0x1a59fd,_0x480320);logger[_0xa4b0('0x2c')](_0xa4b0('0x6b'));return _0x1505b3(new Error(_0xa4b0('0x6b')));}if(_0x259cec[_0xa4b0('0x6e')]()){var _0x388c28=fs[_0xa4b0('0x6a')](path[_0xa4b0('0x4c')](_0x480320,_0x2d7763[0x0]));if(_0x388c28[_0xa4b0('0x3b')]===0x0){removeReferences(_0x1a59fd,_0x480320);logger['error'](_0xa4b0('0x6b'));return _0x1505b3(new Error(_0xa4b0('0x6b')));}var _0x4564cb=_0x388c28[_0xa4b0('0x6f')](function(_0x51f94e){return _0x51f94e===_0xa4b0('0x70');});if(!_0x4564cb){return _0x1505b3(new Error(_0xa4b0('0x71')));}var _0x385d32=fs[_0xa4b0('0x72')](path[_0xa4b0('0x4c')](_0x480320,_0x2d7763[0x0],'manifest.json'));var _0x145c95=JSON[_0xa4b0('0x73')](_0x385d32);if(_0xa4b0('0x21')==typeof _0x145c95['name']){return _0x1505b3(new Error('Invalid\x20manifest:\x20name\x20missing'));}if(_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x33')]){return _0x1505b3(new Error(_0xa4b0('0x74')));}if(_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x75')]){return _0x1505b3(new Error(_0xa4b0('0x76')));}if(_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x77')]){return _0x1505b3(new Error('Invalid\x20manifest:\x20parameters\x20missing'));}if(_0x145c95['type']===_0xa4b0('0x78')){if(_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')]){return _0x1505b3(new Error(_0xa4b0('0x7a')));}if(_0xa4b0('0x21')==typeof _0x145c95['parameters'][_0xa4b0('0x79')][_0xa4b0('0x7b')]&&_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x77')]['views'][_0xa4b0('0x7c')]){return _0x1505b3(new Error(_0xa4b0('0x7d')));}}else if(_0x145c95[_0xa4b0('0x33')]===_0xa4b0('0x7e')){if('undefined'==typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x7f')]){return _0x1505b3(new Error('Invalid\x20manifest:\x20script\x20name\x20missing'));}if(_0xa4b0('0x21')==typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x80')]){return _0x1505b3(new Error(_0xa4b0('0x81')));}}else{return _0x1505b3(new Error(_0xa4b0('0x82')));}var _0x27985f=_0x145c95[_0xa4b0('0x2d')];var _0xed2038=_0x145c95[_0xa4b0('0x83')];var _0x3f21c4=_0x145c95[_0xa4b0('0x33')];var _0x24fdd3=_0x145c95[_0xa4b0('0x84')]?_0x145c95[_0xa4b0('0x84')]:_0xa4b0('0x85');var _0x11dab2=_0x145c95['icon']?_0x145c95[_0xa4b0('0x86')]:_0xa4b0('0x87');var _0x1dbf5c='';var _0xca0783='';var _0xf116a6='';var _0x10b237='';var _0x31f2b1=_0x145c95['version'];if(_0x3f21c4===_0xa4b0('0x78')){if(_0xa4b0('0x21')!=typeof _0x145c95['parameters']['views'][_0xa4b0('0x7b')]){var _0x1b76ed=_0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0xa4b0('0x88')](_0x1b76ed)){_0x1dbf5c=path[_0xa4b0('0x4c')]('plugins',_0x2c2e39,_0x2d7763[0x0],_0x1b76ed);}else{_0x1dbf5c=_0x1b76ed;}}else{logger[_0xa4b0('0x62')]('Warning:\x20admin\x20view\x20not\x20specified');}if('undefined'!=typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')][_0xa4b0('0x7c')]){var _0x4b6fc1=_0x145c95[_0xa4b0('0x77')]['views'][_0xa4b0('0x7c')];if(!/^(f|ht)tps?:\/\//i['test'](_0x4b6fc1)){_0xca0783=path[_0xa4b0('0x4c')](_0xa4b0('0x89'),_0x2c2e39,_0x2d7763[0x0],_0x4b6fc1);}else{_0xca0783=_0x4b6fc1;}}else{logger[_0xa4b0('0x62')](_0xa4b0('0x8a'));}}else if(_0x3f21c4===_0xa4b0('0x7e')){_0xf116a6=_0x145c95[_0xa4b0('0x77')]['scriptName'];_0x10b237=_0x145c95[_0xa4b0('0x77')][_0xa4b0('0x80')];if(_0xa4b0('0x21')!=typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')]){if(_0xa4b0('0x21')!=typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')][_0xa4b0('0x7b')]){var _0x1b76ed=_0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')][_0xa4b0('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0xa4b0('0x88')](_0x1b76ed)){_0x1dbf5c=path[_0xa4b0('0x4c')](_0xa4b0('0x89'),_0x2c2e39,_0x2d7763[0x0],_0x1b76ed);}else{_0x1dbf5c=_0x1b76ed;}}if(_0xa4b0('0x21')!=typeof _0x145c95[_0xa4b0('0x77')][_0xa4b0('0x79')][_0xa4b0('0x7c')]){var _0x4b6fc1=_0x145c95['parameters'][_0xa4b0('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0xa4b0('0x88')](_0x4b6fc1)){_0xca0783=path[_0xa4b0('0x4c')](_0xa4b0('0x89'),_0x2c2e39,_0x2d7763[0x0],_0x4b6fc1);}else{_0xca0783=_0x4b6fc1;}}}}var _0x15950c={'name':_0x27985f,'description':_0xed2038,'path':path['join'](_0x2c2e39,_0x2d7763[0x0]),'type':_0x3f21c4,'sidebar':_0x24fdd3,'icon':_0x11dab2,'adminUrl':_0x1dbf5c,'agentUrl':_0xca0783,'scriptName':_0xf116a6,'scriptPath':_0x10b237,'version':_0x31f2b1};removeReferences(_0x1a59fd,null);return db['Plugin']['create'](_0x15950c)[_0xa4b0('0x2a')](function(_0x50d601){var _0x2550bc={'role':_0x2d85e0['body']['role'],'userProfileId':_0x2d85e0[_0xa4b0('0x8b')][_0xa4b0('0x8c')]};if(!_0x2550bc)throw new Error(_0xa4b0('0x8d'));if(_0x2550bc['role']===_0xa4b0('0x8e')){var _0x29d494=_0x50d601[_0xa4b0('0x8f')]({'plain':!![]});return db['UserProfileSection'][_0xa4b0('0x4a')]({'where':{'name':_0xa4b0('0x90'),'userProfileId':_0x2550bc[_0xa4b0('0x8c')]},'raw':!![]})['then'](function(_0x447c75){if(_0x447c75&&_0x447c75['autoAssociation']===0x0){return db[_0xa4b0('0x91')][_0xa4b0('0x92')]({'name':_0x29d494['name'],'resourceId':_0x29d494['id'],'type':_0x447c75[_0xa4b0('0x2d')],'sectionId':_0x447c75['id']},{})[_0xa4b0('0x2a')](function(){return _0x50d601;});}else{return _0x50d601;}})[_0xa4b0('0x47')](function(_0x5d24d1){logger[_0xa4b0('0x2c')](_0xa4b0('0x93'),_0x5d24d1);throw _0x5d24d1;});}return _0x50d601;})[_0xa4b0('0x2a')](respondWithResult(_0x2a311a,null))[_0xa4b0('0x47')](handleError(_0x2a311a,null));}});}catch(_0x1688b4){_0x2a311a[_0xa4b0('0x1f')](0x1f4)[_0xa4b0('0x2e')](_0x1688b4);}};function removeReferences(_0x54f1c3,_0x29ac6c){try{if(_0x54f1c3){fs['unlinkSync'](_0x54f1c3);logger[_0xa4b0('0x62')](_0xa4b0('0x94'));}if(_0x29ac6c){rimraf(_0x29ac6c,function(){});logger[_0xa4b0('0x62')]('Extracted\x20folder\x20removed');}}catch(_0x6e318){logger[_0xa4b0('0x2c')](_0x6e318);}}exports[_0xa4b0('0x29')]=function(_0x254885,_0x499425,_0x2e91eb){return db[_0xa4b0('0x30')]['find']({'where':{'id':_0x254885['params']['id']}})[_0xa4b0('0x2a')](handleEntityNotFound(_0x499425,null))[_0xa4b0('0x2a')](saveUpdates(_0x254885[_0xa4b0('0x8b')],null))[_0xa4b0('0x2a')](respondWithResult(_0x499425,null))[_0xa4b0('0x47')](handleError(_0x499425,null));};exports[_0xa4b0('0x95')]=function(_0x196485,_0x320b9e,_0x2113e5){return db[_0xa4b0('0x30')][_0xa4b0('0x4a')]({'where':{'id':_0x196485[_0xa4b0('0x48')]['id']}})[_0xa4b0('0x2a')](function(_0x13b81b){if(_0x13b81b){return _0x13b81b[_0xa4b0('0x96')]();}})['then'](function(_0x461266){rimraf(path[_0xa4b0('0x4c')](config[_0xa4b0('0x4d')],_0xa4b0('0x4e'),path[_0xa4b0('0x97')](_0x461266[_0xa4b0('0x4')])),function(){});return _0x461266;})[_0xa4b0('0x2a')](handleEntityNotFound(_0x320b9e,null))[_0xa4b0('0x2a')](respondWithStatusCode(_0x320b9e,null))[_0xa4b0('0x47')](handleError(_0x320b9e,null));};exports['webhookGet']=function(_0x33fb01,_0x3be1af,_0x374c20){return BPromise[_0xa4b0('0x98')]()[_0xa4b0('0x2a')](function(){if(!_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x4')]){throw new Error(_0xa4b0('0x99'));}if(!_0x33fb01[_0xa4b0('0x36')]['port']){throw new Error(_0xa4b0('0x9a'));}var _0x26e3c1=_0x33fb01[_0xa4b0('0x36')]['hostname']?_0x33fb01[_0xa4b0('0x36')]['hostname']+':'+_0x33fb01[_0xa4b0('0x36')]['port']:'http://localhost:'+_0x33fb01[_0xa4b0('0x36')]['port'];var _0x14517f=_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x20')]?_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x20')]:!![];var _0x26ae8a=_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x9b')]?_0x33fb01['query'][_0xa4b0('0x9b')]:null;var _0x1ba1c2={'method':_0x33fb01[_0xa4b0('0x9c')],'uri':util[_0xa4b0('0x4f')](_0xa4b0('0x9d'),_0x26e3c1,_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x4')]),'json':_0x14517f,'resolveWithFullResponse':!![],'encoding':_0x26ae8a,'qs':_0x33fb01['query']};if(_0x33fb01[_0xa4b0('0x9e')]){_0x1ba1c2[_0xa4b0('0x9e')]=_0x33fb01[_0xa4b0('0x9e')];if(_0x1ba1c2[_0xa4b0('0x9e')][_0xa4b0('0x9f')]){delete _0x1ba1c2[_0xa4b0('0x9e')]['content-length'];}}if(_0x1ba1c2[_0xa4b0('0x9e')][_0xa4b0('0xa0')]){delete _0x1ba1c2['headers'][_0xa4b0('0xa0')];}return rp(_0x1ba1c2);})[_0xa4b0('0x2a')](function(_0x3c5002){if(_0x3c5002){_0x3be1af['set'](_0x3c5002['headers']);logger[_0xa4b0('0x62')](_0x3c5002[_0xa4b0('0x8b')]);if(_[_0xa4b0('0xa1')](_0x33fb01[_0xa4b0('0x36')][_0xa4b0('0x4')],_0xa4b0('0x4b'))&&_0x3c5002[_0xa4b0('0xa2')]==0x1f4){return _0x3be1af[_0xa4b0('0x2b')](_0x3c5002[_0xa4b0('0xa2')]);}else{return _0x3be1af[_0xa4b0('0x1f')](_0x3c5002[_0xa4b0('0xa2')])[_0xa4b0('0x2e')](_0x3c5002[_0xa4b0('0x8b')]);}}else{return _0x3be1af['sendStatus'](0xc8);}})[_0xa4b0('0x47')](handleError(_0x3be1af,null));};exports[_0xa4b0('0xa3')]=function(_0x1c0dc3,_0x53279e,_0x344260){return BPromise[_0xa4b0('0x98')]()[_0xa4b0('0x2a')](function(){if(!_0x1c0dc3['query'][_0xa4b0('0x4')]){throw new Error('\x27PATH\x27\x20parameter\x20not\x20specified');}if(!_0x1c0dc3[_0xa4b0('0x36')]['port']){throw new Error(_0xa4b0('0x9a'));}var _0x3f0265=_0x1c0dc3[_0xa4b0('0x36')][_0xa4b0('0xa4')]?_0x1c0dc3['query'][_0xa4b0('0xa4')]+':'+_0x1c0dc3[_0xa4b0('0x36')]['port']:_0xa4b0('0xa5')+_0x1c0dc3[_0xa4b0('0x36')]['port'];var _0x224698=_0x1c0dc3[_0xa4b0('0x36')][_0xa4b0('0x20')]?_0x1c0dc3[_0xa4b0('0x36')][_0xa4b0('0x20')]:!![];var _0x1a0aef=_0x1c0dc3['query'][_0xa4b0('0x9b')]?_0x1c0dc3[_0xa4b0('0x36')][_0xa4b0('0x9b')]:null;var _0x241a4d={'method':_0x1c0dc3['method'],'uri':util[_0xa4b0('0x4f')](_0xa4b0('0x9d'),_0x3f0265,_0x1c0dc3[_0xa4b0('0x36')][_0xa4b0('0x4')]),'json':_0x224698,'resolveWithFullResponse':!![],'encoding':_0x1a0aef,'body':_0x1c0dc3[_0xa4b0('0x8b')]};if(_0x1c0dc3[_0xa4b0('0x9e')]){_0x241a4d[_0xa4b0('0x9e')]=_0x1c0dc3[_0xa4b0('0x9e')];if(_0x241a4d['headers'][_0xa4b0('0x9f')]){delete _0x241a4d[_0xa4b0('0x9e')][_0xa4b0('0x9f')];}}if(_0x241a4d[_0xa4b0('0x9e')]['content-type']){delete _0x241a4d[_0xa4b0('0x9e')][_0xa4b0('0xa0')];}return rp(_0x241a4d);})['then'](function(_0xc2bf17){if(_0xc2bf17){_0x53279e[_0xa4b0('0x25')](_0xc2bf17[_0xa4b0('0x9e')]);logger[_0xa4b0('0x62')](_0xc2bf17[_0xa4b0('0x8b')]);return _0x53279e[_0xa4b0('0x1f')](_0xc2bf17['statusCode'])[_0xa4b0('0x2e')](_0xc2bf17['body']);}else{return _0x53279e[_0xa4b0('0x2b')](0xc8);}})[_0xa4b0('0x47')](handleError(_0x53279e,null));};
\ No newline at end of file
+var _0x6ff4=['VIRTUAL','includeAll','include','findAll','show','options','find','catch','download','params','join','root','server/files/plugins','format','%s.zip','createWriteStream','zip','warning','code','ENOENT','error','Sequelize','Error','pipe','glob','**/*','dirname','basename','finalize','close','existsSync','Plugin\x20not\x20found','unlinkSync','info','Download\x20completed','Temporary\x20file\x20removed','upload','file','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','manifest.json','readFileSync','Invalid\x20manifest:\x20name\x20missing','type','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','Invalid\x20manifest:\x20views\x20missing','admin','views','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','create','body','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','delete','webhookGet','\x27PATH\x27\x20parameter\x20not\x20specified','port','hostname','http://localhost:','encoding','method','headers','content-length','content-type','endsWith','statusCode','sendStatus','webhookPost','resolve','\x27PORT\x27\x20parameter\x20not\x20specified','rimraf','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','extract-zip','archiver','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./plugin.socket','register','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Plugins','stack','name','send','Plugin','rawAttributes','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x6ff4,0x66));var _0x46ff=function(_0x1073d2,_0x45e02d){_0x1073d2=_0x1073d2-0x0;var _0x4fa179=_0x6ff4[_0x1073d2];return _0x4fa179;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x46ff('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x46ff('0x1'));var Mustache=require(_0x46ff('0x2'));var util=require(_0x46ff('0x3'));var path=require(_0x46ff('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x46ff('0x5'));var fs=require('fs');var fs_extra=require(_0x46ff('0x6'));var _=require(_0x46ff('0x7'));var squel=require(_0x46ff('0x8'));var crypto=require(_0x46ff('0x9'));var jsforce=require(_0x46ff('0xa'));var deskjs=require(_0x46ff('0xb'));var toCsv=require(_0x46ff('0xc'));var querystring=require(_0x46ff('0xd'));var Papa=require(_0x46ff('0xe'));var extract=require(_0x46ff('0xf'));var rimraf=require(_0x46ff('0x0'));var archiver=require(_0x46ff('0x10'));var Redis=require(_0x46ff('0x11'));var authService=require(_0x46ff('0x12'));var qs=require(_0x46ff('0x13'));var as=require(_0x46ff('0x14'));var hardwareService=require(_0x46ff('0x15'));var logger=require(_0x46ff('0x16'))(_0x46ff('0x17'));var utils=require(_0x46ff('0x18'));var config=require(_0x46ff('0x19'));var licenseUtil=require(_0x46ff('0x1a'));var db=require(_0x46ff('0x1b'))['db'];config[_0x46ff('0x1c')]=_[_0x46ff('0x1d')](config['redis'],{'host':_0x46ff('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x46ff('0x1c')]));require(_0x46ff('0x1f'))[_0x46ff('0x20')](socket);function respondWithStatusCode(_0x27d790,_0x329f7b){_0x329f7b=_0x329f7b||0xcc;return function(_0x5e9d8b){if(_0x5e9d8b){return _0x27d790['sendStatus'](_0x329f7b);}return _0x27d790['status'](_0x329f7b)[_0x46ff('0x21')]();};}function respondWithResult(_0x5ab190,_0x39242f){_0x39242f=_0x39242f||0xc8;return function(_0x2ff746){if(_0x2ff746){return _0x5ab190[_0x46ff('0x22')](_0x39242f)[_0x46ff('0x23')](_0x2ff746);}};}function respondWithFilteredResult(_0x25f7f1,_0x45a2de){return function(_0x3543bb){if(_0x3543bb){var _0x372f96=typeof _0x45a2de[_0x46ff('0x24')]==='undefined'&&typeof _0x45a2de[_0x46ff('0x25')]===_0x46ff('0x26');var _0xb2ae10=_0x3543bb[_0x46ff('0x27')];var _0x27dfa3=_0x372f96?0x0:_0x45a2de[_0x46ff('0x24')];var _0x3e0d73=_0x372f96?_0x3543bb[_0x46ff('0x27')]:_0x45a2de[_0x46ff('0x24')]+_0x45a2de[_0x46ff('0x25')];var _0x153eb4;if(_0x3e0d73>=_0xb2ae10){_0x3e0d73=_0xb2ae10;_0x153eb4=0xc8;}else{_0x153eb4=0xce;}_0x25f7f1[_0x46ff('0x22')](_0x153eb4);return _0x25f7f1[_0x46ff('0x28')](_0x46ff('0x29'),_0x27dfa3+'-'+_0x3e0d73+'/'+_0xb2ae10)[_0x46ff('0x23')](_0x3543bb);}return null;};}function patchUpdates(_0xe747f8){return function(_0x3f28e5){try{jsonpatch[_0x46ff('0x2a')](_0x3f28e5,_0xe747f8,!![]);}catch(_0x5968a9){return BPromise[_0x46ff('0x2b')](_0x5968a9);}return _0x3f28e5['save']();};}function saveUpdates(_0x108cba,_0x5dedc5){return function(_0x2e5394){if(_0x2e5394){return _0x2e5394[_0x46ff('0x2c')](_0x108cba)[_0x46ff('0x2d')](function(_0x28f93b){return _0x28f93b;});}return null;};}function removeEntity(_0x1eedf7,_0x31fe68){return function(_0x23973c){if(_0x23973c){return _0x23973c[_0x46ff('0x2e')]()[_0x46ff('0x2d')](function(){var _0x12d91a=_0x23973c[_0x46ff('0x2f')]({'plain':!![]});var _0x521bd6=_0x46ff('0x30');return db['UserProfileResource'][_0x46ff('0x2e')]({'where':{'type':_0x521bd6,'resourceId':_0x12d91a['id']}})[_0x46ff('0x2d')](function(){return _0x23973c;});})[_0x46ff('0x2d')](function(){_0x1eedf7[_0x46ff('0x22')](0xcc)[_0x46ff('0x21')]();});}};}function handleEntityNotFound(_0x11649e,_0x109121){return function(_0x4d9bfc){if(!_0x4d9bfc){_0x11649e['sendStatus'](0x194);}return _0x4d9bfc;};}function handleError(_0xf24c08,_0x132182){_0x132182=_0x132182||0x1f4;return function(_0x564888){logger['error'](_0x564888[_0x46ff('0x31')]);if(_0x564888[_0x46ff('0x32')]){delete _0x564888[_0x46ff('0x32')];}_0xf24c08['status'](_0x132182)[_0x46ff('0x33')](_0x564888);};}exports['index']=function(_0x36f173,_0x23c504){var _0xbf0df5={},_0x231f9a={},_0x9a6c31={'count':0x0,'rows':[]};var _0x1742a0=_['map'](db[_0x46ff('0x34')][_0x46ff('0x35')],function(_0x5e3168){return{'name':_0x5e3168['fieldName'],'type':_0x5e3168['type']['key']};});_0x231f9a[_0x46ff('0x36')]=_[_0x46ff('0x37')](_0x1742a0,'name');_0x231f9a[_0x46ff('0x38')]=_[_0x46ff('0x39')](_0x36f173[_0x46ff('0x38')]);_0x231f9a[_0x46ff('0x3a')]=_[_0x46ff('0x3b')](_0x231f9a[_0x46ff('0x36')],_0x231f9a[_0x46ff('0x38')]);_0xbf0df5[_0x46ff('0x3c')]=_[_0x46ff('0x3b')](_0x231f9a[_0x46ff('0x36')],qs['fields'](_0x36f173[_0x46ff('0x38')][_0x46ff('0x3d')]));_0xbf0df5[_0x46ff('0x3c')]=_0xbf0df5['attributes'][_0x46ff('0x3e')]?_0xbf0df5[_0x46ff('0x3c')]:_0x231f9a[_0x46ff('0x36')];if(!_0x36f173[_0x46ff('0x38')][_0x46ff('0x3f')](_0x46ff('0x40'))){_0xbf0df5[_0x46ff('0x25')]=qs[_0x46ff('0x25')](_0x36f173[_0x46ff('0x38')][_0x46ff('0x25')]);_0xbf0df5[_0x46ff('0x24')]=qs['offset'](_0x36f173[_0x46ff('0x38')][_0x46ff('0x24')]);}_0xbf0df5[_0x46ff('0x41')]=qs[_0x46ff('0x42')](_0x36f173[_0x46ff('0x38')][_0x46ff('0x42')]);_0xbf0df5[_0x46ff('0x43')]=qs[_0x46ff('0x3a')](_[_0x46ff('0x44')](_0x36f173[_0x46ff('0x38')],_0x231f9a['filters']),_0x1742a0);if(_0x36f173[_0x46ff('0x38')][_0x46ff('0x45')]){_0xbf0df5['where']=_[_0x46ff('0x46')](_0xbf0df5[_0x46ff('0x43')],{'$or':_[_0x46ff('0x37')](_0x1742a0,function(_0x310315){if(_0x310315['type']!==_0x46ff('0x47')){var _0x11f06d={};_0x11f06d[_0x310315[_0x46ff('0x32')]]={'$like':'%'+_0x36f173[_0x46ff('0x38')]['filter']+'%'};return _0x11f06d;}})});}_0xbf0df5=_[_0x46ff('0x46')]({},_0xbf0df5,_0x36f173['options']);var _0x2ece43={'where':_0xbf0df5['where']};return db[_0x46ff('0x34')][_0x46ff('0x27')](_0x2ece43)[_0x46ff('0x2d')](function(_0x5daf9){_0x9a6c31[_0x46ff('0x27')]=_0x5daf9;if(_0x36f173['query'][_0x46ff('0x48')]){_0xbf0df5[_0x46ff('0x49')]=[{'all':!![]}];}return db['Plugin'][_0x46ff('0x4a')](_0xbf0df5);})[_0x46ff('0x2d')](function(_0x36c3ed){_0x9a6c31['rows']=_0x36c3ed;return _0x9a6c31;})[_0x46ff('0x2d')](respondWithFilteredResult(_0x23c504,_0xbf0df5))['catch'](handleError(_0x23c504,null));};exports[_0x46ff('0x4b')]=function(_0xae16d7,_0x336545){var _0x40bfaf={'raw':!![],'where':{'id':_0xae16d7['params']['id']}},_0x4e8abf={};_0x4e8abf['model']=_[_0x46ff('0x39')](db[_0x46ff('0x34')][_0x46ff('0x35')]);_0x4e8abf[_0x46ff('0x38')]=_[_0x46ff('0x39')](_0xae16d7[_0x46ff('0x38')]);_0x4e8abf[_0x46ff('0x3a')]=_[_0x46ff('0x3b')](_0x4e8abf[_0x46ff('0x36')],_0x4e8abf['query']);_0x40bfaf['attributes']=_['intersection'](_0x4e8abf[_0x46ff('0x36')],qs[_0x46ff('0x3d')](_0xae16d7[_0x46ff('0x38')][_0x46ff('0x3d')]));_0x40bfaf[_0x46ff('0x3c')]=_0x40bfaf[_0x46ff('0x3c')]['length']?_0x40bfaf[_0x46ff('0x3c')]:_0x4e8abf[_0x46ff('0x36')];if(_0xae16d7[_0x46ff('0x38')][_0x46ff('0x48')]){_0x40bfaf[_0x46ff('0x49')]=[{'all':!![]}];}_0x40bfaf=_[_0x46ff('0x46')]({},_0x40bfaf,_0xae16d7[_0x46ff('0x4c')]);return db[_0x46ff('0x34')][_0x46ff('0x4d')](_0x40bfaf)['then'](handleEntityNotFound(_0x336545,null))['then'](respondWithResult(_0x336545,null))[_0x46ff('0x4e')](handleError(_0x336545,null));};exports[_0x46ff('0x4f')]=function(_0x3fbed8,_0x4f687c,_0x262f26){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x3fbed8[_0x46ff('0x50')]['id']},'attributes':[_0x46ff('0x32'),_0x46ff('0x4')],'raw':!![]})['then'](handleEntityNotFound(_0x4f687c,null))['then'](function(_0x27ca4f){if(_0x27ca4f){var _0x4fa820=path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),util[_0x46ff('0x54')](_0x46ff('0x55'),path['basename'](_0x27ca4f['path'])));var _0x217125=fs[_0x46ff('0x56')](_0x4fa820);var _0x140fac=archiver(_0x46ff('0x57'),{'zlib':{'level':0x9}});_0x140fac['on'](_0x46ff('0x58'),function(_0x838adf){if(_0x838adf[_0x46ff('0x59')]===_0x46ff('0x5a')){logger[_0x46ff('0x5b')](_0x838adf);}else{throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x140fac['on'](_0x46ff('0x5b'),function(_0x5342d7){throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');});_0x140fac[_0x46ff('0x5e')](_0x217125);_0x140fac[_0x46ff('0x5f')](_0x46ff('0x60'),{'cwd':path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),path[_0x46ff('0x61')](_0x27ca4f[_0x46ff('0x4')])),'ignore':[path['join'](path['basename'](_0x27ca4f[_0x46ff('0x4')]),'node_modules/**/*'),path[_0x46ff('0x51')](path[_0x46ff('0x62')](_0x27ca4f['path']),'attachments/**/*')],'nodir':!![]})[_0x46ff('0x63')]();_0x217125['on'](_0x46ff('0x64'),function(){if(!fs[_0x46ff('0x65')](_0x4fa820)){throw new db['Sequelize'][(_0x46ff('0x5d'))](_0x46ff('0x66'));}return _0x4f687c['download'](_0x4fa820,util[_0x46ff('0x54')](_0x46ff('0x55'),path['basename'](_0x27ca4f[_0x46ff('0x4')])),function(_0x4316d4){if(_0x4316d4){throw new db[(_0x46ff('0x5c'))][(_0x46ff('0x5d'))]('Error\x20while\x20downloading\x20the\x20plugin');}fs[_0x46ff('0x67')](_0x4fa820);logger[_0x46ff('0x68')](_0x46ff('0x69'));logger[_0x46ff('0x68')](_0x46ff('0x6a'));});});}return null;})[_0x46ff('0x4e')](handleError(_0x4f687c,null));};exports[_0x46ff('0x6b')]=function(_0x11cb29,_0x20a246,_0x5c492a){var _0x4ecd17=path[_0x46ff('0x62')](_0x11cb29[_0x46ff('0x6c')][_0x46ff('0x6d')],path['extname'](_0x11cb29[_0x46ff('0x6c')][_0x46ff('0x6d')]));var _0x3bbb4b=path[_0x46ff('0x51')](config[_0x46ff('0x52')],_0x46ff('0x53'),_0x11cb29['file']['filename']);var _0x3f5a2d=path[_0x46ff('0x51')](config[_0x46ff('0x52')],'server/files/plugins',_0x4ecd17);logger[_0x46ff('0x68')](_0x46ff('0x6e'),_0x3bbb4b);logger[_0x46ff('0x68')](_0x46ff('0x6f'),_0x3f5a2d);try{fs[_0x46ff('0x70')](_0x3bbb4b,parseInt(_0x46ff('0x71'),0x8));extract(_0x3bbb4b,{'dir':_0x3f5a2d},function(_0x4624af){if(_0x4624af){logger[_0x46ff('0x5b')](_0x4624af);handleError(_0x4624af,!![]);};var _0xfc4fd0=fs[_0x46ff('0x72')](_0x3f5a2d);if(_0xfc4fd0[_0x46ff('0x3e')]>0x1){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error(_0x46ff('0x73')));}var _0x45706c=fs[_0x46ff('0x74')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0]));if(_0x45706c[_0x46ff('0x75')]()){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error('Invalid\x20plugin\x20structure'));}if(_0x45706c[_0x46ff('0x76')]()){var _0x4dd72c=fs[_0x46ff('0x72')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0]));if(_0x4dd72c[_0x46ff('0x3e')]===0x0){removeReferences(_0x3bbb4b,_0x3f5a2d);logger[_0x46ff('0x5b')](_0x46ff('0x73'));return _0x5c492a(new Error(_0x46ff('0x73')));}var _0x1eb02b=_0x4dd72c['some'](function(_0x540f9){return _0x540f9===_0x46ff('0x77');});if(!_0x1eb02b){return _0x5c492a(new Error('Plugin\x20manifest\x20missing'));}var _0x4768e6=fs[_0x46ff('0x78')](path[_0x46ff('0x51')](_0x3f5a2d,_0xfc4fd0[0x0],'manifest.json'));var _0x46705f=JSON['parse'](_0x4768e6);if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x32')]){return _0x5c492a(new Error(_0x46ff('0x79')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7a')]){return _0x5c492a(new Error(_0x46ff('0x7b')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7c')]){return _0x5c492a(new Error(_0x46ff('0x7d')));}if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')]){return _0x5c492a(new Error(_0x46ff('0x7f')));}if(_0x46705f[_0x46ff('0x7a')]==='html'){if(_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')]['views']){return _0x5c492a(new Error(_0x46ff('0x80')));}if('undefined'==typeof _0x46705f['parameters']['views'][_0x46ff('0x81')]&&_0x46ff('0x26')==typeof _0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x83')]){return _0x5c492a(new Error(_0x46ff('0x84')));}}else if(_0x46705f[_0x46ff('0x7a')]===_0x46ff('0x85')){if('undefined'==typeof _0x46705f['parameters'][_0x46ff('0x86')]){return _0x5c492a(new Error(_0x46ff('0x87')));}if(_0x46ff('0x26')==typeof _0x46705f['parameters'][_0x46ff('0x88')]){return _0x5c492a(new Error('Invalid\x20manifest:\x20script\x20path\x20missing'));}}else{return _0x5c492a(new Error(_0x46ff('0x89')));}var _0x94924e=_0x46705f[_0x46ff('0x32')];var _0x25e98c=_0x46705f['description'];var _0x272e68=_0x46705f[_0x46ff('0x7a')];var _0x646fb8=_0x46705f[_0x46ff('0x8a')]?_0x46705f[_0x46ff('0x8a')]:_0x46ff('0x8b');var _0x3f105f=_0x46705f[_0x46ff('0x8c')]?_0x46705f[_0x46ff('0x8c')]:'icon-apps';var _0x4b8d50='';var _0x225cb2='';var _0x57a20f='';var _0x5e53c6='';var _0x238b21=_0x46705f[_0x46ff('0x7c')];if(_0x272e68==='html'){if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x81')]){var _0x174bb3=_0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')]['admin'];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x174bb3)){_0x4b8d50=path[_0x46ff('0x51')](_0x46ff('0x8e'),_0x4ecd17,_0xfc4fd0[0x0],_0x174bb3);}else{_0x4b8d50=_0x174bb3;}}else{logger[_0x46ff('0x68')](_0x46ff('0x8f'));}if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views'][_0x46ff('0x83')]){var _0x4f50e9=_0x46705f[_0x46ff('0x7e')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x4f50e9)){_0x225cb2=path['join']('plugins',_0x4ecd17,_0xfc4fd0[0x0],_0x4f50e9);}else{_0x225cb2=_0x4f50e9;}}else{logger['info']('Warning:\x20agent\x20view\x20not\x20specified');}}else if(_0x272e68===_0x46ff('0x85')){_0x57a20f=_0x46705f['parameters'][_0x46ff('0x86')];_0x5e53c6=_0x46705f['parameters']['scriptPath'];if('undefined'!=typeof _0x46705f[_0x46ff('0x7e')]['views']){if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views']['admin']){var _0x174bb3=_0x46705f[_0x46ff('0x7e')][_0x46ff('0x82')][_0x46ff('0x81')];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x174bb3)){_0x4b8d50=path[_0x46ff('0x51')]('plugins',_0x4ecd17,_0xfc4fd0[0x0],_0x174bb3);}else{_0x4b8d50=_0x174bb3;}}if(_0x46ff('0x26')!=typeof _0x46705f[_0x46ff('0x7e')]['views'][_0x46ff('0x83')]){var _0x4f50e9=_0x46705f['parameters']['views'][_0x46ff('0x83')];if(!/^(f|ht)tps?:\/\//i[_0x46ff('0x8d')](_0x4f50e9)){_0x225cb2=path['join'](_0x46ff('0x8e'),_0x4ecd17,_0xfc4fd0[0x0],_0x4f50e9);}else{_0x225cb2=_0x4f50e9;}}}}var _0x1d8225={'name':_0x94924e,'description':_0x25e98c,'path':path['join'](_0x4ecd17,_0xfc4fd0[0x0]),'type':_0x272e68,'sidebar':_0x646fb8,'icon':_0x3f105f,'adminUrl':_0x4b8d50,'agentUrl':_0x225cb2,'scriptName':_0x57a20f,'scriptPath':_0x5e53c6,'version':_0x238b21};removeReferences(_0x3bbb4b,null);return db[_0x46ff('0x34')][_0x46ff('0x90')](_0x1d8225)['then'](function(_0x58d218){var _0x2d918a={'role':_0x11cb29[_0x46ff('0x91')][_0x46ff('0x92')],'userProfileId':_0x11cb29[_0x46ff('0x91')][_0x46ff('0x93')]};if(!_0x2d918a)throw new Error(_0x46ff('0x94'));if(_0x2d918a[_0x46ff('0x92')]===_0x46ff('0x95')){var _0x762ec3=_0x58d218[_0x46ff('0x2f')]({'plain':!![]});return db[_0x46ff('0x96')][_0x46ff('0x4d')]({'where':{'name':_0x46ff('0x30'),'userProfileId':_0x2d918a['userProfileId']},'raw':!![]})['then'](function(_0x477e82){if(_0x477e82&&_0x477e82[_0x46ff('0x97')]===0x0){return db[_0x46ff('0x98')][_0x46ff('0x90')]({'name':_0x762ec3[_0x46ff('0x32')],'resourceId':_0x762ec3['id'],'type':_0x477e82[_0x46ff('0x32')],'sectionId':_0x477e82['id']},{})[_0x46ff('0x2d')](function(){return _0x58d218;});}else{return _0x58d218;}})[_0x46ff('0x4e')](function(_0xb2165c){logger['error'](_0x46ff('0x99'),_0xb2165c);throw _0xb2165c;});}return _0x58d218;})[_0x46ff('0x2d')](respondWithResult(_0x20a246,null))[_0x46ff('0x4e')](handleError(_0x20a246,null));}});}catch(_0xde83cc){_0x20a246[_0x46ff('0x22')](0x1f4)[_0x46ff('0x33')](_0xde83cc);}};function removeReferences(_0xf980a7,_0x340ae8){try{if(_0xf980a7){fs[_0x46ff('0x67')](_0xf980a7);logger['info'](_0x46ff('0x9a'));}if(_0x340ae8){rimraf(_0x340ae8,function(){});logger['info'](_0x46ff('0x9b'));}}catch(_0x3393c2){logger[_0x46ff('0x5b')](_0x3393c2);}}exports['update']=function(_0x383165,_0x1aa468,_0x3fcf08){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x383165[_0x46ff('0x50')]['id']}})[_0x46ff('0x2d')](handleEntityNotFound(_0x1aa468,null))['then'](saveUpdates(_0x383165[_0x46ff('0x91')],null))[_0x46ff('0x2d')](respondWithResult(_0x1aa468,null))[_0x46ff('0x4e')](handleError(_0x1aa468,null));};exports[_0x46ff('0x9c')]=function(_0x4dd4b4,_0x418187,_0x3f1c5f){return db[_0x46ff('0x34')][_0x46ff('0x4d')]({'where':{'id':_0x4dd4b4[_0x46ff('0x50')]['id']}})[_0x46ff('0x2d')](function(_0x1eee02){if(_0x1eee02){return _0x1eee02[_0x46ff('0x2e')]();}})['then'](function(_0xf68dbd){rimraf(path[_0x46ff('0x51')](config['root'],'server/files/plugins',path[_0x46ff('0x61')](_0xf68dbd[_0x46ff('0x4')])),function(){});return _0xf68dbd;})[_0x46ff('0x2d')](handleEntityNotFound(_0x418187,null))[_0x46ff('0x2d')](respondWithStatusCode(_0x418187,null))[_0x46ff('0x4e')](handleError(_0x418187,null));};exports[_0x46ff('0x9d')]=function(_0x52144a,_0x58d4e8,_0x400cb2){return BPromise['resolve']()[_0x46ff('0x2d')](function(){if(!_0x52144a[_0x46ff('0x38')]['path']){throw new Error(_0x46ff('0x9e'));}if(!_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x2f4580=_0x52144a[_0x46ff('0x38')][_0x46ff('0xa0')]?_0x52144a['query'][_0x46ff('0xa0')]+':'+_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')]:_0x46ff('0xa1')+_0x52144a[_0x46ff('0x38')][_0x46ff('0x9f')];var _0x1c96a4=_0x52144a[_0x46ff('0x38')][_0x46ff('0x23')]?_0x52144a[_0x46ff('0x38')][_0x46ff('0x23')]:!![];var _0x50c822=_0x52144a[_0x46ff('0x38')][_0x46ff('0xa2')]?_0x52144a[_0x46ff('0x38')][_0x46ff('0xa2')]:null;var _0x18d3d4={'method':_0x52144a[_0x46ff('0xa3')],'uri':util[_0x46ff('0x54')]('%s%s',_0x2f4580,_0x52144a[_0x46ff('0x38')][_0x46ff('0x4')]),'json':_0x1c96a4,'resolveWithFullResponse':!![],'encoding':_0x50c822,'qs':_0x52144a['query']};if(_0x52144a['headers']){_0x18d3d4[_0x46ff('0xa4')]=_0x52144a[_0x46ff('0xa4')];if(_0x18d3d4[_0x46ff('0xa4')][_0x46ff('0xa5')]){delete _0x18d3d4[_0x46ff('0xa4')]['content-length'];}}if(_0x18d3d4['headers']['content-type']){delete _0x18d3d4['headers'][_0x46ff('0xa6')];}return rp(_0x18d3d4);})[_0x46ff('0x2d')](function(_0xeca225){if(_0xeca225){_0x58d4e8[_0x46ff('0x28')](_0xeca225[_0x46ff('0xa4')]);logger[_0x46ff('0x68')](_0xeca225[_0x46ff('0x91')]);if(_[_0x46ff('0xa7')](_0x52144a[_0x46ff('0x38')][_0x46ff('0x4')],_0x46ff('0x4f'))&&_0xeca225[_0x46ff('0xa8')]==0x1f4){return _0x58d4e8[_0x46ff('0xa9')](_0xeca225['statusCode']);}else{return _0x58d4e8[_0x46ff('0x22')](_0xeca225[_0x46ff('0xa8')])[_0x46ff('0x33')](_0xeca225['body']);}}else{return _0x58d4e8[_0x46ff('0xa9')](0xc8);}})[_0x46ff('0x4e')](handleError(_0x58d4e8,null));};exports[_0x46ff('0xaa')]=function(_0x25818a,_0xe130d6,_0x39082b){return BPromise[_0x46ff('0xab')]()[_0x46ff('0x2d')](function(){if(!_0x25818a[_0x46ff('0x38')][_0x46ff('0x4')]){throw new Error(_0x46ff('0x9e'));}if(!_0x25818a[_0x46ff('0x38')]['port']){throw new Error(_0x46ff('0xac'));}var _0xf333cd=_0x25818a['query'][_0x46ff('0xa0')]?_0x25818a[_0x46ff('0x38')][_0x46ff('0xa0')]+':'+_0x25818a['query']['port']:_0x46ff('0xa1')+_0x25818a[_0x46ff('0x38')][_0x46ff('0x9f')];var _0x13d039=_0x25818a[_0x46ff('0x38')]['json']?_0x25818a[_0x46ff('0x38')][_0x46ff('0x23')]:!![];var _0x385c90=_0x25818a['query'][_0x46ff('0xa2')]?_0x25818a[_0x46ff('0x38')][_0x46ff('0xa2')]:null;var _0x3a2c4a={'method':_0x25818a['method'],'uri':util[_0x46ff('0x54')]('%s%s',_0xf333cd,_0x25818a[_0x46ff('0x38')][_0x46ff('0x4')]),'json':_0x13d039,'resolveWithFullResponse':!![],'encoding':_0x385c90,'body':_0x25818a[_0x46ff('0x91')]};if(_0x25818a[_0x46ff('0xa4')]){_0x3a2c4a[_0x46ff('0xa4')]=_0x25818a[_0x46ff('0xa4')];if(_0x3a2c4a['headers'][_0x46ff('0xa5')]){delete _0x3a2c4a['headers']['content-length'];}}if(_0x3a2c4a['headers'][_0x46ff('0xa6')]){delete _0x3a2c4a['headers'][_0x46ff('0xa6')];}return rp(_0x3a2c4a);})['then'](function(_0x1e9f35){if(_0x1e9f35){_0xe130d6[_0x46ff('0x28')](_0x1e9f35['headers']);logger['info'](_0x1e9f35[_0x46ff('0x91')]);return _0xe130d6[_0x46ff('0x22')](_0x1e9f35[_0x46ff('0xa8')])[_0x46ff('0x33')](_0x1e9f35['body']);}else{return _0xe130d6[_0x46ff('0xa9')](0xc8);}})[_0x46ff('0x4e')](handleError(_0xe130d6,null));};
\ No newline at end of file
index aecc01e..347006f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbbd=['hook','exports','events','../../mysqldb','Plugin','setMaxListeners','save','update','remove','emit','hasOwnProperty'];(function(_0x150aa9,_0x496f40){var _0x13c1ae=function(_0x52ae0a){while(--_0x52ae0a){_0x150aa9['push'](_0x150aa9['shift']());}};_0x13c1ae(++_0x496f40);}(_0xbbbd,0x86));var _0xdbbb=function(_0xbf8ebe,_0x3b69a5){_0xbf8ebe=_0xbf8ebe-0x0;var _0x1e25e8=_0xbbbd[_0xbf8ebe];return _0x1e25e8;};'use strict';var EventEmitter=require(_0xdbbb('0x0'));var Plugin=require(_0xdbbb('0x1'))['db'][_0xdbbb('0x2')];var PluginEvents=new EventEmitter();PluginEvents[_0xdbbb('0x3')](0x0);var events={'afterCreate':_0xdbbb('0x4'),'afterUpdate':_0xdbbb('0x5'),'afterDestroy':_0xdbbb('0x6')};function emitEvent(_0x3351fb){return function(_0x3b665d,_0x114d3a,_0x1cd8ad){PluginEvents[_0xdbbb('0x7')](_0x3351fb+':'+_0x3b665d['id'],_0x3b665d);PluginEvents['emit'](_0x3351fb,_0x3b665d);_0x1cd8ad(null);};}for(var e in events){if(events[_0xdbbb('0x8')](e)){var event=events[e];Plugin[_0xdbbb('0x9')](e,emitEvent(event));}}module[_0xdbbb('0xa')]=PluginEvents;
\ No newline at end of file
+var _0xf603=['update','remove','emit','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x3ccdd9,_0x47f38b){var _0x1a49d8=function(_0x4aeaa8){while(--_0x4aeaa8){_0x3ccdd9['push'](_0x3ccdd9['shift']());}};_0x1a49d8(++_0x47f38b);}(_0xf603,0x124));var _0x3f60=function(_0x57b6d1,_0x2a1a5c){_0x57b6d1=_0x57b6d1-0x0;var _0x4f014b=_0xf603[_0x57b6d1];return _0x4f014b;};'use strict';var EventEmitter=require(_0x3f60('0x0'));var Plugin=require(_0x3f60('0x1'))['db']['Plugin'];var PluginEvents=new EventEmitter();PluginEvents[_0x3f60('0x2')](0x0);var events={'afterCreate':_0x3f60('0x3'),'afterUpdate':_0x3f60('0x4'),'afterDestroy':_0x3f60('0x5')};function emitEvent(_0x360e59){return function(_0x1403db,_0x21a566,_0x15a654){PluginEvents[_0x3f60('0x6')](_0x360e59+':'+_0x1403db['id'],_0x1403db);PluginEvents['emit'](_0x360e59,_0x1403db);_0x15a654(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Plugin['hook'](e,emitEvent(event));}}module[_0x3f60('0x7')]=PluginEvents;
\ No newline at end of file
index 6b01443..dde78e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaeda=['exports','define','Plugin','plugins','lodash','api','moment','bluebird','request-promise','path','../../config/environment','./plugin.attributes'];(function(_0x48e4e7,_0x3d8556){var _0x15c462=function(_0x25270e){while(--_0x25270e){_0x48e4e7['push'](_0x48e4e7['shift']());}};_0x15c462(++_0x3d8556);}(_0xaeda,0x1b4));var _0xaaed=function(_0x1822b3,_0x557bf0){_0x1822b3=_0x1822b3-0x0;var _0xe074a5=_0xaeda[_0x1822b3];return _0xe074a5;};'use strict';var _=require(_0xaaed('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaaed('0x1'));var moment=require(_0xaaed('0x2'));var BPromise=require(_0xaaed('0x3'));var rp=require(_0xaaed('0x4'));var fs=require('fs');var path=require(_0xaaed('0x5'));var rimraf=require('rimraf');var config=require(_0xaaed('0x6'));var attributes=require(_0xaaed('0x7'));module[_0xaaed('0x8')]=function(_0x3a4241,_0x3d815d){return _0x3a4241[_0xaaed('0x9')](_0xaaed('0xa'),attributes,{'tableName':_0xaaed('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde0f=['../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x23e408,_0x271eda){var _0x4c672c=function(_0x3576f8){while(--_0x3576f8){_0x23e408['push'](_0x23e408['shift']());}};_0x4c672c(++_0x271eda);}(_0xde0f,0xa2));var _0xfde0=function(_0x3651a6,_0x5aac47){_0x3651a6=_0x3651a6-0x0;var _0x1bcdb8=_0xde0f[_0x3651a6];return _0x1bcdb8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfde0('0x0'))(_0xfde0('0x1'));var moment=require(_0xfde0('0x2'));var BPromise=require(_0xfde0('0x3'));var rp=require(_0xfde0('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xfde0('0x5'));var config=require(_0xfde0('0x6'));var attributes=require(_0xfde0('0x7'));module[_0xfde0('0x8')]=function(_0xb6f608,_0x2c17d6){return _0xb6f608[_0xfde0('0x9')](_0xfde0('0xa'),attributes,{'tableName':_0xfde0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89fd2d5..dcefb79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51b7=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','request\x20sent','Plugin,\x20%s,\x20%s,\x20%s','error','code','message','catch','CreatePlugin','Plugin','options','raw','lodash','util'];(function(_0x3c28e5,_0x592982){var _0x2231bc=function(_0x440477){while(--_0x440477){_0x3c28e5['push'](_0x3c28e5['shift']());}};_0x2231bc(++_0x592982);}(_0x51b7,0x142));var _0x751b=function(_0x28d6b2,_0x443350){_0x28d6b2=_0x28d6b2-0x0;var _0x56521a=_0x51b7[_0x28d6b2];return _0x56521a;};'use strict';var _=require(_0x751b('0x0'));var util=require(_0x751b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x751b('0x2'))['db'];var utils=require(_0x751b('0x3'));var logger=require(_0x751b('0x4'))(_0x751b('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x751b('0x6')][_0x751b('0x7')]({'port':0x232a});config[_0x751b('0x8')]=_[_0x751b('0x9')](config[_0x751b('0x8')],{'host':_0x751b('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x751b('0x8')]));require(_0x751b('0xb'))[_0x751b('0xc')](socket);function respondWithRpcPromise(_0x5dc8d0,_0x3e892b,_0x354380){return new BPromise(function(_0x1a6953,_0x60abd3){return client[_0x751b('0xd')](_0x5dc8d0,_0x354380)[_0x751b('0xe')](function(_0x43646a){logger[_0x751b('0xf')](_0x751b('0x10'),_0x3e892b,_0x751b('0x11'));logger['debug'](_0x751b('0x12'),_0x3e892b,_0x751b('0x11'),JSON['stringify'](_0x43646a));if(_0x43646a[_0x751b('0x13')]){if(_0x43646a[_0x751b('0x13')][_0x751b('0x14')]===0x1f4){logger[_0x751b('0x13')](_0x751b('0x10'),_0x3e892b,_0x43646a[_0x751b('0x13')][_0x751b('0x15')]);return _0x60abd3(_0x43646a[_0x751b('0x13')][_0x751b('0x15')]);}logger[_0x751b('0x13')](_0x751b('0x10'),_0x3e892b,_0x43646a[_0x751b('0x13')][_0x751b('0x15')]);return _0x1a6953(_0x43646a[_0x751b('0x13')][_0x751b('0x15')]);}else{logger[_0x751b('0xf')](_0x751b('0x10'),_0x3e892b,'request\x20sent');_0x1a6953(_0x43646a['result'][_0x751b('0x15')]);}})[_0x751b('0x16')](function(_0x424fd9){logger[_0x751b('0x13')](_0x751b('0x10'),_0x3e892b,_0x424fd9);_0x60abd3(_0x424fd9);});});}exports[_0x751b('0x17')]=function(_0x334b84){var _0x54c6ae=this;return new Promise(function(_0x306e7f,_0x14abcf){return db[_0x751b('0x18')]['create'](_0x334b84['body'],{'raw':_0x334b84[_0x751b('0x19')]?_0x334b84[_0x751b('0x19')][_0x751b('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x556768){logger[_0x751b('0xf')](_0x751b('0x17'),_0x334b84);logger['debug']('CreatePlugin',_0x334b84,JSON['stringify'](_0x556768));_0x306e7f(_0x556768);})[_0x751b('0x16')](function(_0x156e74){logger[_0x751b('0x13')]('CreatePlugin',_0x156e74[_0x751b('0x15')],_0x334b84);_0x14abcf(_0x54c6ae[_0x751b('0x13')](0x1f4,_0x156e74[_0x751b('0x15')]));});});};
\ No newline at end of file
+var _0x2455=['./plugin.socket','register','request','then','info','Plugin,\x20%s,\x20%s','debug','Plugin,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','Plugin','options','raw','CreatePlugin','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost'];(function(_0x7dc85c,_0x3296bc){var _0x216a4d=function(_0x70b2b){while(--_0x70b2b){_0x7dc85c['push'](_0x7dc85c['shift']());}};_0x216a4d(++_0x3296bc);}(_0x2455,0xd3));var _0x5245=function(_0x50f9ab,_0x5009b4){_0x50f9ab=_0x50f9ab-0x0;var _0x58dda4=_0x2455[_0x50f9ab];return _0x58dda4;};'use strict';var _=require(_0x5245('0x0'));var util=require(_0x5245('0x1'));var moment=require(_0x5245('0x2'));var BPromise=require(_0x5245('0x3'));var rs=require(_0x5245('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x5245('0x5'))(_0x5245('0x6'));var config=require(_0x5245('0x7'));var jayson=require(_0x5245('0x8'));var client=jayson[_0x5245('0x9')][_0x5245('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0x5245('0xb')],{'host':_0x5245('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5245('0xb')]));require(_0x5245('0xd'))[_0x5245('0xe')](socket);function respondWithRpcPromise(_0x55d444,_0x115e78,_0x21c740){return new BPromise(function(_0xe85e3d,_0x16844c){return client[_0x5245('0xf')](_0x55d444,_0x21c740)[_0x5245('0x10')](function(_0xfed6a0){logger[_0x5245('0x11')](_0x5245('0x12'),_0x115e78,'request\x20sent');logger[_0x5245('0x13')](_0x5245('0x14'),_0x115e78,_0x5245('0x15'),JSON[_0x5245('0x16')](_0xfed6a0));if(_0xfed6a0[_0x5245('0x17')]){if(_0xfed6a0[_0x5245('0x17')][_0x5245('0x18')]===0x1f4){logger['error'](_0x5245('0x12'),_0x115e78,_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);return _0x16844c(_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);}logger[_0x5245('0x17')](_0x5245('0x12'),_0x115e78,_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);return _0xe85e3d(_0xfed6a0[_0x5245('0x17')][_0x5245('0x19')]);}else{logger['info'](_0x5245('0x12'),_0x115e78,_0x5245('0x15'));_0xe85e3d(_0xfed6a0[_0x5245('0x1a')][_0x5245('0x19')]);}})[_0x5245('0x1b')](function(_0x16b520){logger[_0x5245('0x17')](_0x5245('0x12'),_0x115e78,_0x16b520);_0x16844c(_0x16b520);});});}exports['CreatePlugin']=function(_0x297279){var _0x3dd068=this;return new Promise(function(_0x1378e6,_0x1bc8bf){return db[_0x5245('0x1c')]['create'](_0x297279['body'],{'raw':_0x297279[_0x5245('0x1d')]?_0x297279[_0x5245('0x1d')][_0x5245('0x1e')]===undefined?!![]:![]:!![]})[_0x5245('0x10')](function(_0x53ce49){logger['info'](_0x5245('0x1f'),_0x297279);logger[_0x5245('0x13')](_0x5245('0x1f'),_0x297279,JSON[_0x5245('0x16')](_0x53ce49));_0x1378e6(_0x53ce49);})[_0x5245('0x1b')](function(_0x3b0b68){logger[_0x5245('0x17')]('CreatePlugin',_0x3b0b68[_0x5245('0x19')],_0x297279);_0x1bc8bf(_0x3dd068[_0x5245('0x17')](0x1f4,_0x3b0b68['message']));});});};
\ No newline at end of file
index b042344..b518644 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b88=['remove','emit','removeListener','register','length','./plugin.events'];(function(_0x2e422d,_0x15315a){var _0x29d57d=function(_0x30b859){while(--_0x30b859){_0x2e422d['push'](_0x2e422d['shift']());}};_0x29d57d(++_0x15315a);}(_0x0b88,0xd1));var _0x80b8=function(_0x2cbdae,_0x109c6f){_0x2cbdae=_0x2cbdae-0x0;var _0x58d6aa=_0x0b88[_0x2cbdae];return _0x58d6aa;};'use strict';var PluginEvents=require(_0x80b8('0x0'));var events=['save',_0x80b8('0x1'),'update'];function createListener(_0x2fd041,_0x4c5a40){return function(_0x1a2130){_0x4c5a40[_0x80b8('0x2')](_0x2fd041,_0x1a2130);};}function removeListener(_0x4ea1ba,_0x54e5d9){return function(){PluginEvents[_0x80b8('0x3')](_0x4ea1ba,_0x54e5d9);};}exports[_0x80b8('0x4')]=function(_0x309dfd){for(var _0x35ebad=0x0,_0x80feb8=events[_0x80b8('0x5')];_0x35ebad<_0x80feb8;_0x35ebad++){var _0x1beed3=events[_0x35ebad];var _0x1102f6=createListener('plugin:'+_0x1beed3,_0x309dfd);PluginEvents['on'](_0x1beed3,_0x1102f6);}};
\ No newline at end of file
+var _0x597f=['plugin:','save','remove','update','register','length'];(function(_0x57546a,_0x175c3e){var _0x2e7cf1=function(_0x5798f2){while(--_0x5798f2){_0x57546a['push'](_0x57546a['shift']());}};_0x2e7cf1(++_0x175c3e);}(_0x597f,0xfd));var _0xf597=function(_0x47a12a,_0x70f591){_0x47a12a=_0x47a12a-0x0;var _0x30cd40=_0x597f[_0x47a12a];return _0x30cd40;};'use strict';var PluginEvents=require('./plugin.events');var events=[_0xf597('0x0'),_0xf597('0x1'),_0xf597('0x2')];function createListener(_0x71923b,_0x3533be){return function(_0x105d5d){_0x3533be['emit'](_0x71923b,_0x105d5d);};}function removeListener(_0x58edc8,_0x1ffc20){return function(){PluginEvents['removeListener'](_0x58edc8,_0x1ffc20);};}exports[_0xf597('0x3')]=function(_0x295c75){for(var _0x22733a=0x0,_0x4ccde0=events[_0xf597('0x4')];_0x22733a<_0x4ccde0;_0x22733a++){var _0x35d254=events[_0x22733a];var _0x30a3a3=createListener(_0xf597('0x5')+_0x35d254,_0x295c75);PluginEvents['on'](_0x35d254,_0x30a3a3);}};
\ No newline at end of file
index f1e97b5..fc60682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x51f758,_0x3e8821){var _0x13b2e9=function(_0x45c343){while(--_0x45c343){_0x51f758['push'](_0x51f758['shift']());}};_0x13b2e9(++_0x3e8821);}(_0xa9e0,0x123));var _0x0a9e=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0xa9e0[_0x31e29a];return _0x32d892;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
+var _0xa9e0=['create','put','delete','destroy','exports','express','Router','../../components/auth/service','isAuthenticated','get','/:id','show','post'];(function(_0x1b3a1e,_0x2e5201){var _0x45f5b8=function(_0x302b05){while(--_0x302b05){_0x1b3a1e['push'](_0x1b3a1e['shift']());}};_0x45f5b8(++_0x2e5201);}(_0xa9e0,0x123));var _0x0a9e=function(_0x28947d,_0x4cc9c6){_0x28947d=_0x28947d-0x0;var _0x12d2ee=_0xa9e0[_0x28947d];return _0x12d2ee;};'use strict';var express=require(_0x0a9e('0x0'));var router=express[_0x0a9e('0x1')]();var auth=require(_0x0a9e('0x2'));var controller=require('./pm2.controller');router['get']('/',auth[_0x0a9e('0x3')](),controller['index']);router[_0x0a9e('0x4')](_0x0a9e('0x5'),auth[_0x0a9e('0x3')](),controller[_0x0a9e('0x6')]);router[_0x0a9e('0x7')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x8')]);router[_0x0a9e('0x9')](_0x0a9e('0x5'),auth['isAuthenticated'](),controller['update']);router[_0x0a9e('0xa')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);module[_0x0a9e('0xc')]=router;
\ No newline at end of file
index 27669dd..99ec1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['describe','create','body','../../files/plugins','cwd','chdir','dirname','dump','Missing\x20name\x20and/or\x20path','update','restart','stop','hasOwnProperty','params','Unknown\x20status','destroy','delete','Unknown\x20id','../../config/logger','api','path','child_process','bluebird','sendStatus','json','name','status','send','npm\x20install','info','list','then','reject','express','length','catch','show'];(function(_0x5b8f90,_0x353839){var _0x5e1c8a=function(_0x12d347){while(--_0x12d347){_0x5b8f90['push'](_0x5b8f90['shift']());}};_0x5e1c8a(++_0x353839);}(_0xcb91,0x1a9));var _0x1cb9=function(_0xf26c2e,_0x56c3ea){_0xf26c2e=_0xf26c2e-0x0;var _0x46ecb4=_0xcb91[_0xf26c2e];return _0x46ecb4;};'use strict';var _=require('lodash');var pm2=require('../../config/pm2');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var path=require(_0x1cb9('0x2'));var exec=require(_0x1cb9('0x3'))['exec'];var BPromise=require(_0x1cb9('0x4'));function handleEntityNotFound(_0x2c17b8,_0x545a34){return function(_0x13d5fd){if(!_0x13d5fd){_0x2c17b8[_0x1cb9('0x5')](0x194);;}return _0x13d5fd;};}function respondWithResult(_0x53ffbd,_0x226b69){_0x226b69=_0x226b69||0xc8;return function(_0x3f7deb){if(_0x3f7deb){return _0x53ffbd['status'](_0x226b69)[_0x1cb9('0x6')](_0x3f7deb);}return null;};}function handleError(_0x12567c,_0x59d1be){_0x59d1be=_0x59d1be||0x1f4;return function(_0x3ae0f1){logger['error'](_0x3ae0f1['stack']);if(_0x3ae0f1[_0x1cb9('0x7')]){delete _0x3ae0f1[_0x1cb9('0x7')];}_0x12567c[_0x1cb9('0x8')](_0x59d1be)[_0x1cb9('0x9')](_0x3ae0f1);};}function execChildProcess(){return new BPromise(function(_0x2fc627,_0x50ce71){exec(_0x1cb9('0xa'),function(_0x44a6b4,_0x3af35f,_0x3fdd83){logger[_0x1cb9('0xb')](_0x3af35f);logger['info'](_0x3fdd83);if(_0x44a6b4){logger['error'](_0x44a6b4);return _0x50ce71(_0x44a6b4);}return _0x2fc627(_0x3af35f);});});}exports['index']=function(_0x358866,_0x282bc6){return pm2[_0x1cb9('0xc')]()[_0x1cb9('0xd')](function(_0x56884d){if(_0x56884d){var _0x397727=_[_0x1cb9('0xe')](_0x56884d,function(_0x1b3cd7){return _0x1b3cd7[_0x1cb9('0x7')]===_0x1cb9('0xf')||_0x1b3cd7['name']==='motion2';});return{'rows':_0x397727,'count':_0x397727[_0x1cb9('0x10')]};}return null;})[_0x1cb9('0xd')](respondWithResult(_0x282bc6,null))[_0x1cb9('0x11')](handleError(_0x282bc6,null));};exports[_0x1cb9('0x12')]=function(_0x3e21e0,_0xf22920){return pm2[_0x1cb9('0x13')](_0x3e21e0['params']['id'])['then'](respondWithResult(_0xf22920,null))[_0x1cb9('0xd')](handleEntityNotFound(_0xf22920,null))[_0x1cb9('0x11')](handleError(_0xf22920,null));};exports[_0x1cb9('0x14')]=function(_0x31481a,_0x280a84){if(_0x31481a[_0x1cb9('0x15')][_0x1cb9('0x7')]&&_0x31481a['body']['script']){var _0x1a5a72=path['join'](__dirname,_0x1cb9('0x16'),_0x31481a[_0x1cb9('0x15')]['script']);var _0x599275=process[_0x1cb9('0x17')]();process[_0x1cb9('0x18')](path[_0x1cb9('0x19')](_0x1a5a72));return execChildProcess()[_0x1cb9('0xd')](function(_0x45b8d3){process[_0x1cb9('0x18')](_0x599275);return pm2['start']({'name':_0x31481a['body'][_0x1cb9('0x7')],'script':_0x1a5a72});})['then'](function(_0x10a419){pm2[_0x1cb9('0x1a')]();return _0x10a419[0x0];})[_0x1cb9('0xd')](respondWithResult(_0x280a84,0xc9))[_0x1cb9('0x11')](handleError(_0x280a84,null));}else{return _0x280a84[_0x1cb9('0x8')](0x1f4)['send']({'message':_0x1cb9('0x1b')});}};exports[_0x1cb9('0x1c')]=function(_0x4c8d76,_0xd6891c){if(_0x4c8d76[_0x1cb9('0x15')]['id']){delete _0x4c8d76[_0x1cb9('0x15')]['id'];}var _0x1804fd={'online':_0x1cb9('0x1d'),'stopped':_0x1cb9('0x1e')};if(_0x1804fd[_0x1cb9('0x1f')](_0x4c8d76[_0x1cb9('0x15')][_0x1cb9('0x8')])){return pm2[_0x1804fd[_0x4c8d76[_0x1cb9('0x15')]['status']]](_0x4c8d76[_0x1cb9('0x20')]['id'])['then'](respondWithResult(_0xd6891c,0xc8))[_0x1cb9('0x11')](handleError(_0xd6891c,null));}else{return _0xd6891c['status'](0x1f4)[_0x1cb9('0x9')]({'message':_0x1cb9('0x21')});}};exports[_0x1cb9('0x22')]=function(_0x2038aa,_0x561d89){if(_0x2038aa[_0x1cb9('0x15')]['id']){delete _0x2038aa['body']['id'];}if(_0x2038aa[_0x1cb9('0x20')]['id']){return pm2[_0x1cb9('0x23')](_0x2038aa[_0x1cb9('0x20')]['id'])['then'](function(_0xae4c7a){pm2['dump']();return _0xae4c7a[0x0];})[_0x1cb9('0xd')](respondWithResult(_0x561d89,null))['catch'](handleError(_0x561d89,null));}else{return _0x561d89[_0x1cb9('0x8')](0x1f4)[_0x1cb9('0x9')]({'message':_0x1cb9('0x24')});}};
\ No newline at end of file
+var _0xb4e6=['express','motion2','length','describe','params','catch','create','body','script','join','cwd','chdir','dirname','dump','update','restart','hasOwnProperty','Unknown\x20status','delete','lodash','../../config/logger','api','path','child_process','exec','bluebird','sendStatus','error','stack','name','status','send','npm\x20install','info','index','then','reject'];(function(_0x4be000,_0x1c7319){var _0x4c6c89=function(_0x49f9d9){while(--_0x49f9d9){_0x4be000['push'](_0x4be000['shift']());}};_0x4c6c89(++_0x1c7319);}(_0xb4e6,0x1f4));var _0x6b4e=function(_0x3ec122,_0x55150a){_0x3ec122=_0x3ec122-0x0;var _0x4ecf41=_0xb4e6[_0x3ec122];return _0x4ecf41;};'use strict';var _=require(_0x6b4e('0x0'));var pm2=require('../../config/pm2');var logger=require(_0x6b4e('0x1'))(_0x6b4e('0x2'));var path=require(_0x6b4e('0x3'));var exec=require(_0x6b4e('0x4'))[_0x6b4e('0x5')];var BPromise=require(_0x6b4e('0x6'));function handleEntityNotFound(_0x1929b8,_0x52313b){return function(_0x40da90){if(!_0x40da90){_0x1929b8[_0x6b4e('0x7')](0x194);;}return _0x40da90;};}function respondWithResult(_0x1f67a2,_0x49de51){_0x49de51=_0x49de51||0xc8;return function(_0xd3138f){if(_0xd3138f){return _0x1f67a2['status'](_0x49de51)['json'](_0xd3138f);}return null;};}function handleError(_0x2311d9,_0x48c870){_0x48c870=_0x48c870||0x1f4;return function(_0x53a71f){logger[_0x6b4e('0x8')](_0x53a71f[_0x6b4e('0x9')]);if(_0x53a71f[_0x6b4e('0xa')]){delete _0x53a71f[_0x6b4e('0xa')];}_0x2311d9[_0x6b4e('0xb')](_0x48c870)[_0x6b4e('0xc')](_0x53a71f);};}function execChildProcess(){return new BPromise(function(_0x323487,_0x49c734){exec(_0x6b4e('0xd'),function(_0x3bba86,_0x58c67d,_0x2a4d0f){logger[_0x6b4e('0xe')](_0x58c67d);logger[_0x6b4e('0xe')](_0x2a4d0f);if(_0x3bba86){logger[_0x6b4e('0x8')](_0x3bba86);return _0x49c734(_0x3bba86);}return _0x323487(_0x58c67d);});});}exports[_0x6b4e('0xf')]=function(_0xa3d358,_0x1db513){return pm2['list']()[_0x6b4e('0x10')](function(_0x29bdee){if(_0x29bdee){var _0x4788cf=_[_0x6b4e('0x11')](_0x29bdee,function(_0x4b62ad){return _0x4b62ad[_0x6b4e('0xa')]===_0x6b4e('0x12')||_0x4b62ad[_0x6b4e('0xa')]===_0x6b4e('0x13');});return{'rows':_0x4788cf,'count':_0x4788cf[_0x6b4e('0x14')]};}return null;})[_0x6b4e('0x10')](respondWithResult(_0x1db513,null))['catch'](handleError(_0x1db513,null));};exports['show']=function(_0x67496d,_0x1beb73){return pm2[_0x6b4e('0x15')](_0x67496d[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](respondWithResult(_0x1beb73,null))[_0x6b4e('0x10')](handleEntityNotFound(_0x1beb73,null))[_0x6b4e('0x17')](handleError(_0x1beb73,null));};exports[_0x6b4e('0x18')]=function(_0x35aee1,_0x20a178){if(_0x35aee1[_0x6b4e('0x19')]['name']&&_0x35aee1[_0x6b4e('0x19')][_0x6b4e('0x1a')]){var _0x31fb9d=path[_0x6b4e('0x1b')](__dirname,'../../files/plugins',_0x35aee1[_0x6b4e('0x19')]['script']);var _0x2503a5=process[_0x6b4e('0x1c')]();process[_0x6b4e('0x1d')](path[_0x6b4e('0x1e')](_0x31fb9d));return execChildProcess()[_0x6b4e('0x10')](function(_0x346566){process[_0x6b4e('0x1d')](_0x2503a5);return pm2['start']({'name':_0x35aee1[_0x6b4e('0x19')]['name'],'script':_0x31fb9d});})[_0x6b4e('0x10')](function(_0x884b7e){pm2[_0x6b4e('0x1f')]();return _0x884b7e[0x0];})[_0x6b4e('0x10')](respondWithResult(_0x20a178,0xc9))['catch'](handleError(_0x20a178,null));}else{return _0x20a178[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':'Missing\x20name\x20and/or\x20path'});}};exports[_0x6b4e('0x20')]=function(_0x381ff0,_0x3513b2){if(_0x381ff0[_0x6b4e('0x19')]['id']){delete _0x381ff0['body']['id'];}var _0x2d42be={'online':_0x6b4e('0x21'),'stopped':'stop'};if(_0x2d42be[_0x6b4e('0x22')](_0x381ff0[_0x6b4e('0x19')][_0x6b4e('0xb')])){return pm2[_0x2d42be[_0x381ff0[_0x6b4e('0x19')]['status']]](_0x381ff0[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](respondWithResult(_0x3513b2,0xc8))['catch'](handleError(_0x3513b2,null));}else{return _0x3513b2[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':_0x6b4e('0x23')});}};exports['destroy']=function(_0x5c2200,_0x11156e){if(_0x5c2200[_0x6b4e('0x19')]['id']){delete _0x5c2200[_0x6b4e('0x19')]['id'];}if(_0x5c2200['params']['id']){return pm2[_0x6b4e('0x24')](_0x5c2200[_0x6b4e('0x16')]['id'])[_0x6b4e('0x10')](function(_0x5c1444){pm2['dump']();return _0x5c1444[0x0];})[_0x6b4e('0x10')](respondWithResult(_0x11156e,null))['catch'](handleError(_0x11156e,null));}else{return _0x11156e[_0x6b4e('0xb')](0x1f4)[_0x6b4e('0xc')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index b30e081..a0a5f74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb9=['/queues','exports','express','./realtime.controller','/agents','isAuthenticated','getAgents','get'];(function(_0x19aa84,_0x549537){var _0x536146=function(_0x5da480){while(--_0x5da480){_0x19aa84['push'](_0x19aa84['shift']());}};_0x536146(++_0x549537);}(_0x7bb9,0x1aa));var _0x97bb=function(_0x411017,_0x4a8117){_0x411017=_0x411017-0x0;var _0x2adeea=_0x7bb9[_0x411017];return _0x2adeea;};'use strict';var express=require(_0x97bb('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x97bb('0x1'));router['get'](_0x97bb('0x2'),auth[_0x97bb('0x3')](),controller[_0x97bb('0x4')]);router[_0x97bb('0x5')](_0x97bb('0x6'),auth['isAuthenticated'](),controller['getQueues']);module[_0x97bb('0x7')]=router;
\ No newline at end of file
+var _0xf86e=['/queues','getQueues','exports','express','Router','./realtime.controller','get','isAuthenticated'];(function(_0xfba845,_0x55f7f7){var _0x5e1496=function(_0x46f8d0){while(--_0x46f8d0){_0xfba845['push'](_0xfba845['shift']());}};_0x5e1496(++_0x55f7f7);}(_0xf86e,0xcb));var _0xef86=function(_0x55c485,_0x3fe77e){_0x55c485=_0x55c485-0x0;var _0x6bb521=_0xf86e[_0x55c485];return _0x6bb521;};'use strict';var express=require(_0xef86('0x0'));var router=express[_0xef86('0x1')]();var auth=require('../../components/auth/service');var controller=require(_0xef86('0x2'));router[_0xef86('0x3')]('/agents',auth[_0xef86('0x4')](),controller['getAgents']);router[_0xef86('0x3')](_0xef86('0x5'),auth['isAuthenticated'](),controller[_0xef86('0x6')]);module[_0xef86('0x7')]=router;
\ No newline at end of file
index e4486db..de6bdcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9506=['predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','map','get','loggedInDb','waiting','busy','merge','pick','filter','queue','length','some','connectedlinenum','internal','toString','find','UserId','online','voiceStatus','agents','User','Queue','Pause','findAll','QueueId','name','includes','toLowerCase','getAgents','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','*pause','channel','sort','globalStatus','validateSortParameter','getUpdatedSortOptions','fields','join','getAgentIdsByQueues','rows','getAgentIdsByStatus','rawAttributes','fieldName','key','role','agent','getOptions','raw','sequelize','literal','order','forEach','where','user','userProfileId','Agents','extraQueryConditions','assign','findAndCountAll','filterAgentAttributes','getAgentStatus','pause','Status','sortAgentsByStatus','getQueues','resolve','type','QueueCampaigns','Queues','UserProfile','getResources','getRealtimeAgents','all','util','lodash','jayson/promise','../../config/utils','../../config/logger','api','../../mysqldb','client','http','offset','undefined','count','limit','status','Content-Range','json','stack','send','voice','request','startCase','then','error','format','result','catch','VoiceQueuesChannels','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','loggedIn','available','talking','paused','outbound','push','pTalking','originated','message','Trunk','startProgressive','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalTotalCalls'];(function(_0x2fea2b,_0x1f8033){var _0x5ab3a6=function(_0x35da13){while(--_0x35da13){_0x2fea2b['push'](_0x2fea2b['shift']());}};_0x5ab3a6(++_0x1f8033);}(_0x9506,0xcb));var _0x6950=function(_0x38319f,_0x1ff1c9){_0x38319f=_0x38319f-0x0;var _0xc2fcd5=_0x9506[_0x38319f];return _0xc2fcd5;};'use strict';var util=require(_0x6950('0x0'));var _=require(_0x6950('0x1'));var jayson=require(_0x6950('0x2'));var rta=require('../../components/realtime/agents');var qs=require('../../components/parsers/qs');var utils=require(_0x6950('0x3'));var logger=require(_0x6950('0x4'))(_0x6950('0x5'));var db=require(_0x6950('0x6'))['db'];var amiClient=jayson[_0x6950('0x7')][_0x6950('0x8')]({'port':0x232a});var routingClient=jayson[_0x6950('0x7')][_0x6950('0x8')]({'port':0x232c});function respondWithFilteredResult(_0x462982,_0x297b9f){return function(_0x1cb013){if(_0x1cb013){var _0x1ddd77=typeof _0x297b9f[_0x6950('0x9')]==='undefined'&&typeof _0x297b9f['limit']===_0x6950('0xa');var _0x382689=_0x1cb013['count'];var _0x3e89ef=_0x1ddd77?0x0:_0x297b9f[_0x6950('0x9')];var _0x27df1e=_0x1ddd77?_0x1cb013[_0x6950('0xb')]:_0x297b9f[_0x6950('0x9')]+_0x297b9f[_0x6950('0xc')];var _0x150f33;if(_0x27df1e>=_0x382689){_0x27df1e=_0x382689;_0x150f33=0xc8;}else{_0x150f33=0xce;}_0x462982[_0x6950('0xd')](_0x150f33);return _0x462982['set'](_0x6950('0xe'),_0x3e89ef+'-'+_0x27df1e+'/'+_0x382689)[_0x6950('0xf')](_0x1cb013);}return null;};}function handleError(_0x52927a,_0x3d11a5){_0x3d11a5=_0x3d11a5||0x1f4;return function(_0x28f49b){logger['error'](_0x28f49b[_0x6950('0x10')]);if(_0x28f49b['name']){delete _0x28f49b['name'];}_0x52927a['status'](_0x3d11a5)[_0x6950('0x11')](_0x28f49b);};}function getRealtimeQueues(_0x112ba5,_0x384f2c){return new Promise(function(_0x352e7b,_0x3b9607){var _0x230a03=_0x384f2c===_0x6950('0x12')?amiClient:routingClient;return _0x230a03[_0x6950('0x13')](_[_0x6950('0x14')](_0x384f2c)+'Queues',_0x112ba5)[_0x6950('0x15')](function(_0x461610){if(_0x461610[_0x6950('0x16')])throw new Error(util[_0x6950('0x17')]('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x384f2c));return _0x352e7b(_0x461610[_0x6950('0x18')]);})[_0x6950('0x19')](function(_0x18b95e){_0x3b9607(_0x18b95e);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x41f3fe,_0xcdb9db){return amiClient['request'](_0x6950('0x1a'),{})['then'](function(_0x13d927){if(_0x13d927[_0x6950('0x16')])throw new Error(_0x6950('0x1b'));return _0x41f3fe(_0x13d927[_0x6950('0x18')]);})[_0x6950('0x19')](function(_0x604a54){_0xcdb9db(_0x604a54);});});}function initializeQueues(_0xf7fa43,_0x55f4ca,_0x3ad926,_0x36d399){var _0x20c071=[_0x6950('0x1c'),_0x6950('0x1d'),'waiting',_0x6950('0x1e'),_0x6950('0x1f')];if(_0x3ad926===_0x6950('0x12')&&_0x36d399===_0x6950('0x20')){_0x20c071[_0x6950('0x21')](_0x6950('0x22'),_0x6950('0x23'),_0x6950('0x24'),'dialActive','dialMethod',_0x6950('0x25'),'startPredictive',_0x6950('0x26'),'erlangCalls','erlangCallToSecond',_0x6950('0x27'),_0x6950('0x28'),_0x6950('0x29'),_0x6950('0x2a'),_0x6950('0x2b'),'predictiveIntervalAvailable',_0x6950('0x2c'),_0x6950('0x2d'),_0x6950('0x2e'),_0x6950('0x2f'),'predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime');}return _0xf7fa43[_0x6950('0x30')](function(_0x1ffdb7){var _0x1955b7=_0x1ffdb7[_0x6950('0x31')]({'plain':!![]});_0x1955b7['agents']=[];_0x1955b7[_0x6950('0x1f')]=0x0;_0x1955b7[_0x6950('0x32')]=0x0;_0x1955b7[_0x6950('0x1c')]=0x0;_0x1955b7[_0x6950('0x1d')]=0x0;_0x1955b7[_0x6950('0x33')]=0x0;if(_0x3ad926===_0x6950('0x12')){_0x1955b7[_0x6950('0x1e')]=0x0;_0x1955b7[_0x6950('0x34')]=0x0;if(_0x36d399==='outbound'){_0x1955b7[_0x6950('0x22')]=0x0;_0x1955b7[_0x6950('0x23')]=0x0;}}var _0x1d6b67=_['find'](_0x55f4ca,['id',_0x1955b7['id']]);if(_0x1d6b67)_[_0x6950('0x35')](_0x1955b7,_[_0x6950('0x36')](_0x1d6b67,_0x20c071));return _0x1955b7;});}function updateAgentVoiceStatus(_0xdb3122,_0x389ad7,_0xe631b7){var _0x51ce4d=_[_0x6950('0x37')](_0xe631b7,[_0x6950('0x38'),_0x389ad7['name']]);if(_0x51ce4d[_0x6950('0x39')]===0x0)return _0xdb3122[_0x6950('0x34')]=!![];if(_[_0x6950('0x3a')](_0x51ce4d,[_0x6950('0x3b'),_0xdb3122[_0x6950('0x3c')][_0x6950('0x3d')]()]))return _0xdb3122['talking']=!![];if(!_0xdb3122[_0x6950('0x1e')])return _0xdb3122['busy']=!![];}function getVoiceQueueAgents(_0x5be960,_0x5529c3,_0x35fb29,_0x4cf461){var _0x35f902=_[_0x6950('0x3e')](_0x5529c3,['id',_0x5be960['id']]);if(!_0x35f902)return _0x5be960;return _0x35f902['getMembers']({'raw':!![]})['then'](function(_0x2d869a){for(var _0x482281=0x0;_0x482281<_0x2d869a[_0x6950('0x39')];_0x482281++){var _0x21fba7=_[_0x6950('0x3e')](_0x35fb29,['id',_0x2d869a[_0x482281][_0x6950('0x3f')]]);if(!_0x21fba7){_0x21fba7={'id':_0x2d869a[_0x482281][_0x6950('0x3f')],'name':_0x2d869a[_0x482281][_0x6950('0x3f')],'accountcode':'','online':![]};}var _0x43a4af={'id':_0x21fba7['id'],'name':_0x21fba7['name'],'internal':_0x21fba7['accountcode'],'online':Boolean(_0x21fba7[_0x6950('0x40')]),'paused':Boolean(_0x2d869a[_0x482281][_0x6950('0x1f')])};if(_0x21fba7[_0x6950('0x41')]==='talking')updateAgentVoiceStatus(_0x43a4af,_0x5be960,_0x4cf461);if(_0x43a4af[_0x6950('0x40')])_0x5be960[_0x6950('0x32')]++;if(_0x43a4af[_0x6950('0x34')])_0x5be960[_0x6950('0x34')]++;if(_0x43a4af['paused']&&!_0x43a4af['busy']&&!_0x43a4af[_0x6950('0x1e')])_0x5be960['paused']++;_0x5be960[_0x6950('0x42')][_0x6950('0x21')](_0x43a4af);}return _0x5be960;});}function getQueueAgents(_0x574490,_0x12aad1,_0x210e18){var _0x131db3=_0x6950('0x43')+_[_0x6950('0x14')](_0x210e18)+_0x6950('0x44');var _0x5723db=_0x210e18+_0x6950('0x45');return db[_0x131db3][_0x6950('0x46')]({'where':{[_[_0x6950('0x14')](_0x210e18)+_0x6950('0x47')]:_0x574490['id']},'raw':!![]})['then'](function(_0x218567){for(var _0xd0b5f7=0x0;_0xd0b5f7<_0x218567['length'];_0xd0b5f7++){var _0x3582eb=_[_0x6950('0x3e')](_0x12aad1,['id',_0x218567[_0xd0b5f7][_0x6950('0x3f')]]);if(!_0x3582eb){_0x3582eb={'id':_0x218567[_0xd0b5f7][_0x6950('0x3f')],'name':_0x218567[_0xd0b5f7]['UserId'],'online':![],['pauseField']:![]};}var _0x4e1015={'id':_0x3582eb['id'],'name':_0x3582eb[_0x6950('0x48')],'online':Boolean(_0x3582eb[_0x6950('0x40')]),'paused':Boolean(_0x3582eb[_0x5723db])};if(_0x4e1015[_0x6950('0x40')])_0x574490[_0x6950('0x32')]++;_0x574490['agents'][_0x6950('0x21')](_0x4e1015);}return _0x574490;});}function validateChannel(_0x3df4ba){var _0x7136ba=utils['getChannels']();if(!_[_0x6950('0x49')](_0x7136ba,_0x3df4ba[_0x6950('0x4a')]()))throw new Error('Invalid\x20channel');return _0x3df4ba['toLowerCase']();}exports[_0x6950('0x4b')]=function(_0x42ea3e,_0x2edc5c){var _0x30ed2b={'count':0x0,'rows':[]};var _0x439b06={};var _0x504dff;var _0x1436ca;var _0x4b0d3e;var _0xfea91b;var _0x275ad6=utils[_0x6950('0x4c')]();var _0x1393c1=_0x42ea3e[_0x6950('0x4d')][_0x6950('0x4e')];var _0x1855ba=_0x42ea3e['query'][_0x6950('0x4f')];var _0x404847=_0x42ea3e['query'][_0x6950('0x50')];var _0x52588a=_0x1855ba==='pause'||_0x1855ba===_0x6950('0x51')?!![]:![];var _0x551888=[];var _0x3db7a9;Promise['resolve']()[_0x6950('0x15')](function(){if(_0x42ea3e[_0x6950('0x4d')][_0x6950('0x52')]){_0x504dff=validateChannel(_0x42ea3e[_0x6950('0x4d')][_0x6950('0x52')]);}if(!_0x42ea3e[_0x6950('0x4d')]['sort']||!_0x42ea3e['query'][_0x6950('0x53')][_0x6950('0x49')](_0x6950('0x54'))){_0x42ea3e[_0x6950('0x4d')][_0x6950('0x53')]=rta[_0x6950('0x55')](_0x42ea3e['query'][_0x6950('0x53')]);return;}var _0x4bc1ed=rta[_0x6950('0x56')](_0x42ea3e['query'][_0x6950('0x53')]);_0x42ea3e[_0x6950('0x4d')][_0x6950('0x53')]=_0x4bc1ed[_0x6950('0x57')][_0x6950('0x58')](',');_0x1436ca=_0x4bc1ed['order'];})['then'](function(){if(!_0x1393c1){return[];}return rta[_0x6950('0x59')](_0x1393c1,_0x504dff);})['then'](function(_0x2a01e8){_0x551888=_0x2a01e8;return rta['getRealtimeAgents']();})['then'](function(_0xc9fdb6){_0xfea91b=_0xc9fdb6[_0x6950('0x5a')];if((!_0x1855ba||_0x52588a)&&!_0x1436ca){return _0x551888;}if(_0x1436ca&&!_0x1855ba){return rta['getSortedAgentsIdsByStatus'](_0xfea91b,_0x551888,_0x1436ca);}else{return rta[_0x6950('0x5b')](_0xfea91b,_0x551888,_0x1855ba);}})['then'](function(_0x1de3ae){_0x551888=_0x1de3ae;var _0x55998e=![];if(_0x551888['length']===0x0){if(_0x1393c1||_0x1855ba){_0x55998e=!![];}if(_0x52588a){_0x55998e=![];}}if(_0x55998e){return _0x30ed2b;}var _0x1b97ee=_['map'](db['User'][_0x6950('0x5c')],function(_0x4c05c1){return{'name':_0x4c05c1[_0x6950('0x5d')],'type':_0x4c05c1['type'][_0x6950('0x5e')]};});_0x42ea3e[_0x6950('0x4d')][_0x6950('0x5f')]=_0x6950('0x60');_0x42ea3e['query'][_0x6950('0x40')]=!![];_0x439b06=qs[_0x6950('0x61')](_0x1b97ee,_0x42ea3e);_0x439b06[_0x6950('0x62')]=!![];var _0x29cd1b=[];if(_0x551888['length']>0x0){_0x29cd1b[_0x6950('0x21')]({'id':{'$in':_0x551888}});if(_0x1436ca&&!_0x1855ba){_0x3db7a9=[db[_0x6950('0x63')][_0x6950('0x64')]('FIELD(id,'+_0x551888+')')];_0x439b06[_0x6950('0x65')]=_0x3db7a9;}}if(_0x52588a){_0x275ad6[_0x6950('0x66')](function(_0x22ab10){var _0x2e54b9=!![];if(_0x1855ba===_0x6950('0x51')&&_0x504dff!==_0x22ab10){_0x2e54b9=![];}_0x29cd1b[_0x6950('0x21')]({[_0x22ab10+_0x6950('0x45')]:_0x2e54b9});});if(_0x404847){_0x29cd1b[_0x6950('0x21')]({'pauseType':_0x404847});}}else if(_0x1855ba){_0x275ad6['forEach'](function(_0x49c036){_0x29cd1b[_0x6950('0x21')]({[_0x49c036+_0x6950('0x45')]:![]});});}_0x439b06['where']=_['merge'](_0x439b06[_0x6950('0x67')],{'$and':_0x29cd1b});if(_0x42ea3e[_0x6950('0x68')][_0x6950('0x5f')]==='user'){var _0x4acbec={'params':{'id':_0x42ea3e[_0x6950('0x68')][_0x6950('0x69')]},'query':{'section':_0x6950('0x6a'),'role':_0x6950('0x60'),'online':!![],'raw':!![],'ids':_0x551888,'customSorting':_0x3db7a9}};if(_0x52588a){_0x4acbec[_0x6950('0x4d')][_0x6950('0x6b')]=_0x29cd1b;}_0x4acbec[_0x6950('0x4d')]=Object[_0x6950('0x6c')](_0x4acbec[_0x6950('0x4d')],_0x42ea3e[_0x6950('0x4d')]);delete _0x4acbec[_0x6950('0x4d')]['id'];return db['UserProfile']['getResources'](_0x4acbec);}return db[_0x6950('0x43')][_0x6950('0x6d')](_0x439b06);})[_0x6950('0x15')](function(_0x2fc4a2){_0x30ed2b['count']=_0x2fc4a2[_0x6950('0xb')];_0x4b0d3e=_0x2fc4a2[_0x6950('0x5a')];return _0x4b0d3e[_0x6950('0x30')](function(_0x1e9220){var _0x3e1f1d=_[_0x6950('0x3e')](_0xfea91b,['id',_0x1e9220['id']]);if(_0x3e1f1d){var _0x276cd0=rta[_0x6950('0x6e')](_0x3e1f1d);_['merge'](_0x1e9220,_0x276cd0);}_0x1e9220[_0x6950('0x54')]=rta[_0x6950('0x6f')](_0x1e9220);if(_0x1e9220['globalStatus']['includes'](_0x6950('0x70'))){_0x275ad6[_0x6950('0x66')](function(_0x3fa7ca){if(_0x1e9220[_0x3fa7ca+_0x6950('0x45')]){_0x1e9220[_0x3fa7ca+_0x6950('0x71')]=_0x6950('0x70');}});}return _0x1e9220;});})['then'](function(_0x733445){if(!_0x1436ca||_0x3db7a9){return _0x733445;}return rta[_0x6950('0x72')](_0x733445,_0x1436ca);})[_0x6950('0x15')](function(_0x215667){_0x30ed2b[_0x6950('0x5a')]=_0x215667;return _0x30ed2b;})['then'](respondWithFilteredResult(_0x2edc5c,_0x439b06))[_0x6950('0x19')](handleError(_0x2edc5c,null));};exports[_0x6950('0x73')]=function(_0x5f457b,_0x962f72){var _0x4c9ba3={'count':0x0,'rows':[]},_0x4b2eff={},_0x1f5fae,_0x498e23,_0x59df0e,_0x1459af,_0x42268c;Promise[_0x6950('0x74')]()['then'](function(){if(_0x5f457b[_0x6950('0x4d')]['channel'])_0x1f5fae=validateChannel(_0x5f457b[_0x6950('0x4d')][_0x6950('0x52')]);var _0x45ce93=_[_0x6950('0x14')](_0x1f5fae)+'Queue';var _0x20bf06=_[_0x6950('0x30')](db[_0x45ce93][_0x6950('0x5c')],function(_0x16e757){return{'name':_0x16e757[_0x6950('0x5d')],'type':_0x16e757[_0x6950('0x75')]['key']};});_0x4b2eff=qs['getOptions'](_0x20bf06,_0x5f457b);if(_0x5f457b['user']['role']==='user'){var _0x57db5d={'params':{'id':_0x5f457b['user'][_0x6950('0x69')]},'query':{'section':_0x1f5fae===_0x6950('0x12')&&_0x5f457b[_0x6950('0x4d')][_0x6950('0x75')]===_0x6950('0x20')?_0x6950('0x76'):_[_0x6950('0x14')](_0x1f5fae)+_0x6950('0x77'),'type':_0x5f457b[_0x6950('0x4d')][_0x6950('0x75')],'nolimit':!![],'sort':_0x6950('0x48'),'filter':_0x5f457b[_0x6950('0x4d')]['filter']}};return db[_0x6950('0x78')][_0x6950('0x79')](_0x57db5d);}return db[_0x45ce93][_0x6950('0x6d')](_0x4b2eff);})['then'](function(_0x539d9f){_0x4c9ba3[_0x6950('0xb')]=_0x539d9f['count'];_0x498e23=_0x539d9f[_0x6950('0x5a')];return getRealtimeQueues(_0x5f457b,_0x1f5fae);})[_0x6950('0x15')](function(_0x2aaf2b){_0x1459af=_0x2aaf2b[_0x6950('0x5a')];return rta[_0x6950('0x7a')]();})[_0x6950('0x15')](function(_0x198bfb){_0x59df0e=_0x198bfb[_0x6950('0x5a')];if(_0x1f5fae!=_0x6950('0x12'))return;return getRealtimeVoiceQueueChannels();})['then'](function(_0x2dbe92){_0x42268c=_0x2dbe92?_0x2dbe92[_0x6950('0x5a')]:[];return initializeQueues(_0x498e23,_0x1459af,_0x1f5fae,_0x5f457b[_0x6950('0x4d')][_0x6950('0x75')]);})[_0x6950('0x15')](function(_0x24b854){var _0x33700d=_0x24b854[_0x6950('0x30')](function(_0x51e503){if(_0x1f5fae===_0x6950('0x12'))return getVoiceQueueAgents(_0x51e503,_0x498e23,_0x59df0e,_0x42268c);else return getQueueAgents(_0x51e503,_0x59df0e,_0x1f5fae);});return Promise[_0x6950('0x7b')](_0x33700d);})['then'](function(_0x4a80ba){_0x4c9ba3[_0x6950('0x5a')]=_0x4a80ba;return _0x4c9ba3;})[_0x6950('0x15')](respondWithFilteredResult(_0x962f72,_0x4b2eff))[_0x6950('0x19')](handleError(_0x962f72,null));};
\ No newline at end of file
+var _0xd559=['order','getRealtimeAgents','rows','getSortedAgentsIdsByStatus','length','User','rawAttributes','fieldName','type','key','agent','online','getOptions','push','sequelize','literal','FIELD(id,','forEach','Pause','where','merge','user','role','userProfileId','extraQueryConditions','UserProfile','getResources','findAndCountAll','map','find','globalStatus','getAgentStatus','Status','pause','sortAgentsByStatus','getQueues','isValidChannel','name','voice','outbound','dialActive','dialMethod','join','QueueCampaigns','Queues','filter','getRealtimeQueues','initializeQueues','util','../../components/realtime/agents','../../components/realtime/queues','../../components/parsers/qs','../../config/utils','../../errors/api','APIBadRequestError','handleError','offset','undefined','limit','count','status','set','Content-Range','json','getChannels','query','globalQueueFilter','globalStatusFilter','pauseTypeFilter','*pause','resolve','then','channel','format','Channel\x20parameter\x20%s\x20is\x20invalid','toLowerCase','sort','includes','getUpdatedSortOptions','fields'];(function(_0x44edab,_0x8afb62){var _0x1b4de0=function(_0x4ea4d8){while(--_0x4ea4d8){_0x44edab['push'](_0x44edab['shift']());}};_0x1b4de0(++_0x8afb62);}(_0xd559,0x1c0));var _0x9d55=function(_0x24006e,_0x42714c){_0x24006e=_0x24006e-0x0;var _0x5b9d3a=_0xd559[_0x24006e];return _0x5b9d3a;};'use strict';var _=require('lodash');var util=require(_0x9d55('0x0'));var rta=require(_0x9d55('0x1'));var rtq=require(_0x9d55('0x2'));var qs=require(_0x9d55('0x3'));var utils=require(_0x9d55('0x4'));var db=require('../../mysqldb')['db'];var APIBadRequestError=require(_0x9d55('0x5'))[_0x9d55('0x6')];var APIHandleError=require(_0x9d55('0x5'))[_0x9d55('0x7')];function respondWithFilteredResult(_0xa534bc,_0xbf3444){return function(_0x5eac26){if(_0x5eac26){var _0x4ddaf3=typeof _0xbf3444[_0x9d55('0x8')]===_0x9d55('0x9')&&typeof _0xbf3444[_0x9d55('0xa')]===_0x9d55('0x9');var _0x4cfbef=_0x5eac26[_0x9d55('0xb')];var _0x5ec3e6=_0x4ddaf3?0x0:_0xbf3444[_0x9d55('0x8')];var _0x462925=_0x4ddaf3?_0x5eac26[_0x9d55('0xb')]:_0xbf3444['offset']+_0xbf3444['limit'];var _0x1b12f0;if(_0x462925>=_0x4cfbef){_0x462925=_0x4cfbef;_0x1b12f0=0xc8;}else{_0x1b12f0=0xce;}_0xa534bc[_0x9d55('0xc')](_0x1b12f0);return _0xa534bc[_0x9d55('0xd')](_0x9d55('0xe'),_0x5ec3e6+'-'+_0x462925+'/'+_0x4cfbef)[_0x9d55('0xf')](_0x5eac26);}return null;};}exports['getAgents']=function(_0x12f5d5,_0x19d9aa){var _0x362db2={'count':0x0,'rows':[]};var _0x290b99={};var _0x3a0b2b;var _0x41a9b2=utils[_0x9d55('0x10')]();var _0x293b21;var _0x3d1c64;var _0x4699a8=_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x12')];var _0x594147=_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x13')];var _0x1bd825=_0x12f5d5['query'][_0x9d55('0x14')];var _0xd9b98e=_0x594147==='pause'||_0x594147===_0x9d55('0x15')?!![]:![];var _0x586507=[];var _0x25b826;var _0x42e14c;Promise[_0x9d55('0x16')]()[_0x9d55('0x17')](function(){if(_0x12f5d5['query']['channel']){if(!utils['isValidChannel'](_0x12f5d5['query'][_0x9d55('0x18')])){throw new APIBadRequestError(util[_0x9d55('0x19')](_0x9d55('0x1a'),_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x18')]));}_0x3a0b2b=_0x12f5d5['query'][_0x9d55('0x18')][_0x9d55('0x1b')]();}if(!_0x12f5d5[_0x9d55('0x11')][_0x9d55('0x1c')]||!_0x12f5d5[_0x9d55('0x11')]['sort'][_0x9d55('0x1d')]('globalStatus')){_0x12f5d5['query'][_0x9d55('0x1c')]=rta['validateSortParameter'](_0x12f5d5[_0x9d55('0x11')]['sort']);return;}var _0x563035=rta[_0x9d55('0x1e')](_0x12f5d5[_0x9d55('0x11')]['sort']);_0x12f5d5['query'][_0x9d55('0x1c')]=_0x563035[_0x9d55('0x1f')]['join'](',');_0x25b826=_0x563035[_0x9d55('0x20')];})[_0x9d55('0x17')](function(){if(!_0x4699a8){return[];}return rta['getAgentIdsByQueues'](_0x4699a8,_0x3a0b2b);})[_0x9d55('0x17')](function(_0x13250b){_0x586507=_0x13250b;return rta[_0x9d55('0x21')]();})[_0x9d55('0x17')](function(_0x1774f0){_0x3d1c64=_0x1774f0[_0x9d55('0x22')];if((!_0x594147||_0xd9b98e)&&!_0x25b826){return _0x586507;}if(_0x25b826&&!_0x594147){return rta[_0x9d55('0x23')](_0x3d1c64,_0x586507,_0x25b826);}else{return rta['getAgentIdsByStatus'](_0x3d1c64,_0x586507,_0x594147);}})[_0x9d55('0x17')](function(_0x111e50){_0x586507=_0x111e50;var _0x538dc0=![];if(_0x586507[_0x9d55('0x24')]===0x0){if(_0x4699a8||_0x594147){_0x538dc0=!![];}if(_0xd9b98e){_0x538dc0=![];}}if(_0x538dc0){return _0x362db2;}var _0x2fef2b=_['map'](db[_0x9d55('0x25')][_0x9d55('0x26')],function(_0x53b48c){return{'name':_0x53b48c[_0x9d55('0x27')],'type':_0x53b48c[_0x9d55('0x28')][_0x9d55('0x29')]};});_0x12f5d5[_0x9d55('0x11')]['role']=_0x9d55('0x2a');_0x12f5d5['query'][_0x9d55('0x2b')]=!![];_0x290b99=qs[_0x9d55('0x2c')](_0x2fef2b,_0x12f5d5);_0x290b99['raw']=!![];var _0x2903d6=[];if(_0x586507[_0x9d55('0x24')]>0x0){_0x2903d6[_0x9d55('0x2d')]({'id':{'$in':_0x586507}});if(_0x25b826&&!_0x594147){_0x42e14c=[db[_0x9d55('0x2e')][_0x9d55('0x2f')](_0x9d55('0x30')+_0x586507+')')];_0x290b99[_0x9d55('0x20')]=_0x42e14c;}}if(_0xd9b98e){_0x41a9b2[_0x9d55('0x31')](function(_0x32ce68){var _0x43a48e=!![];if(_0x594147===_0x9d55('0x15')&&_0x3a0b2b!==_0x32ce68){_0x43a48e=![];}_0x2903d6[_0x9d55('0x2d')]({[_0x32ce68+_0x9d55('0x32')]:_0x43a48e});});if(_0x1bd825){_0x2903d6['push']({'pauseType':_0x1bd825});}}else if(_0x594147){_0x41a9b2['forEach'](function(_0x33ccea){_0x2903d6[_0x9d55('0x2d')]({[_0x33ccea+_0x9d55('0x32')]:![]});});}_0x290b99[_0x9d55('0x33')]=_[_0x9d55('0x34')](_0x290b99[_0x9d55('0x33')],{'$and':_0x2903d6});if(_0x12f5d5[_0x9d55('0x35')][_0x9d55('0x36')]===_0x9d55('0x35')){var _0x458cfb={'params':{'id':_0x12f5d5[_0x9d55('0x35')][_0x9d55('0x37')]},'query':{'section':'Agents','role':_0x9d55('0x2a'),'online':!![],'raw':!![],'ids':_0x586507,'customSorting':_0x42e14c}};if(_0xd9b98e){_0x458cfb['query'][_0x9d55('0x38')]=_0x2903d6;}_0x458cfb[_0x9d55('0x11')]=Object['assign'](_0x458cfb[_0x9d55('0x11')],_0x12f5d5[_0x9d55('0x11')]);delete _0x458cfb['query']['id'];return db[_0x9d55('0x39')][_0x9d55('0x3a')](_0x458cfb);}return db[_0x9d55('0x25')][_0x9d55('0x3b')](_0x290b99);})[_0x9d55('0x17')](function(_0x3701d4){_0x362db2[_0x9d55('0xb')]=_0x3701d4[_0x9d55('0xb')];_0x293b21=_0x3701d4[_0x9d55('0x22')];return _0x293b21[_0x9d55('0x3c')](function(_0x359b40){var _0x25fa46=_[_0x9d55('0x3d')](_0x3d1c64,['id',_0x359b40['id']]);if(_0x25fa46){var _0x94821e=rta['filterAgentAttributes'](_0x25fa46);_['merge'](_0x359b40,_0x94821e);}_0x359b40[_0x9d55('0x3e')]=rta[_0x9d55('0x3f')](_0x359b40);if(_0x359b40['globalStatus'][_0x9d55('0x1d')]('pause')){_0x41a9b2[_0x9d55('0x31')](function(_0xe2fb32){if(_0x359b40[_0xe2fb32+_0x9d55('0x32')]){_0x359b40[_0xe2fb32+_0x9d55('0x40')]=_0x9d55('0x41');}});}return _0x359b40;});})[_0x9d55('0x17')](function(_0x148e06){if(!_0x25b826||_0x42e14c){return _0x148e06;}return rta[_0x9d55('0x42')](_0x148e06,_0x25b826);})[_0x9d55('0x17')](function(_0x2c741e){_0x362db2[_0x9d55('0x22')]=_0x2c741e;return _0x362db2;})[_0x9d55('0x17')](respondWithFilteredResult(_0x19d9aa,_0x290b99))['catch'](APIHandleError(_0x19d9aa));};exports[_0x9d55('0x43')]=function(_0x56560c,_0xb50dfc){var _0x8c9ef5={'count':0x0,'rows':[]};var _0x100a17={};var _0x43679b;var _0x5acea3;var _0x4b7ce6;Promise[_0x9d55('0x16')]()['then'](function(){if(_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')]){if(!utils[_0x9d55('0x44')](_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')])){throw new APIBadRequestError(util[_0x9d55('0x19')](_0x9d55('0x1a'),_0x56560c[_0x9d55('0x11')][_0x9d55('0x18')]));}_0x43679b=_0x56560c[_0x9d55('0x11')]['channel'][_0x9d55('0x1b')]();}var _0x3e0487=_['startCase'](_0x43679b)+'Queue';var _0x5e4694=_['map'](db[_0x3e0487][_0x9d55('0x26')],function(_0x3fdd00){return{'name':_0x3fdd00[_0x9d55('0x27')],'type':_0x3fdd00[_0x9d55('0x28')][_0x9d55('0x29')]};});if(!_0x56560c[_0x9d55('0x11')][_0x9d55('0x1f')]){var _0x23618c=['id',_0x9d55('0x45')];if(_0x43679b===_0x9d55('0x46')){_0x23618c[_0x9d55('0x2d')](_0x9d55('0x28'));if(_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]===_0x9d55('0x47')){_0x23618c[_0x9d55('0x2d')]([_0x9d55('0x48'),_0x9d55('0x49')]);}}_0x56560c[_0x9d55('0x11')][_0x9d55('0x1f')]=_0x23618c[_0x9d55('0x4a')](',');}_0x100a17=qs[_0x9d55('0x2c')](_0x5e4694,_0x56560c);if(_0x56560c[_0x9d55('0x35')]['role']===_0x9d55('0x35')){var _0x3e67f2={'params':{'id':_0x56560c[_0x9d55('0x35')][_0x9d55('0x37')]},'query':{'section':_0x43679b===_0x9d55('0x46')&&_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]===_0x9d55('0x47')?_0x9d55('0x4b'):_['startCase'](_0x43679b)+_0x9d55('0x4c'),'type':_0x56560c['query'][_0x9d55('0x28')],'nolimit':!![],'sort':'name','filter':_0x56560c['query'][_0x9d55('0x4d')]}};return db[_0x9d55('0x39')][_0x9d55('0x3a')](_0x3e67f2);}return db[_0x3e0487][_0x9d55('0x3b')](_0x100a17);})['then'](function(_0x5a6528){_0x8c9ef5[_0x9d55('0xb')]=_0x5a6528['count'];_0x5acea3=_0x5a6528['rows'];return rtq[_0x9d55('0x4e')](_0x56560c,_0x43679b);})[_0x9d55('0x17')](function(_0x21c2ef){_0x4b7ce6=_0x21c2ef[_0x9d55('0x22')];return rtq[_0x9d55('0x4f')](_0x5acea3,_0x4b7ce6,_0x43679b,_0x56560c[_0x9d55('0x11')][_0x9d55('0x28')]);})[_0x9d55('0x17')](function(_0x1b0ba1){_0x8c9ef5[_0x9d55('0x22')]=_0x1b0ba1;return _0x8c9ef5;})[_0x9d55('0x17')](respondWithFilteredResult(_0xb50dfc,_0x100a17))['catch'](APIHandleError(_0xb50dfc));};
\ No newline at end of file
index 4f94240..d04f6b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x582d49,_0x450adc){var _0x59fe50=function(_0x1c5d7c){while(--_0x1c5d7c){_0x582d49['push'](_0x582d49['shift']());}};_0x59fe50(++_0x450adc);}(_0xedd9,0xfc));var _0x9edd=function(_0x563cff,_0x1ecf25){_0x563cff=_0x563cff-0x0;var _0x323d61=_0xedd9[_0x563cff];return _0x323d61;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x290257,_0x321b6b){var _0x20bff3=function(_0x57dc2c){while(--_0x57dc2c){_0x290257['push'](_0x290257['shift']());}};_0x20bff3(++_0x321b6b);}(_0xe706,0xa3));var _0x6e70=function(_0x3f00ee,_0x1d1673){_0x3f00ee=_0x3f00ee-0x0;var _0x18a07e=_0xe706[_0x3f00ee];return _0x18a07e;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 254dc5e..0b5da82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x744c=['sequelize','exports','INTEGER','STRING','DATE'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x744c,0xa0));var _0xc744=function(_0xdd0313,_0x251c2b){_0xdd0313=_0xdd0313-0x0;var _0x2bd7e8=_0x744c[_0xdd0313];return _0x2bd7e8;};'use strict';var Sequelize=require(_0xc744('0x0'));module[_0xc744('0x1')]={'state':{'type':Sequelize[_0xc744('0x2')](0x2)},'statedesc':{'type':Sequelize[_0xc744('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xc744('0x3')]},'starttime':{'type':Sequelize[_0xc744('0x4')]},'responsetime':{'type':Sequelize[_0xc744('0x4')]},'ringtime':{'type':Sequelize[_0xc744('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0xc744('0x3')]}};
\ No newline at end of file
+var _0x0f4d=['STRING','DATE','INTEGER'];(function(_0x493b91,_0x28666e){var _0x4c990f=function(_0x2e975e){while(--_0x2e975e){_0x493b91['push'](_0x493b91['shift']());}};_0x4c990f(++_0x28666e);}(_0x0f4d,0x12c));var _0xd0f4=function(_0x3e07b0,_0x171c6f){_0x3e07b0=_0x3e07b0-0x0;var _0x36c354=_0x0f4d[_0x3e07b0];return _0x36c354;};'use strict';var Sequelize=require('sequelize');module['exports']={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xd0f4('0x0')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xd0f4('0x0')]},'starttime':{'type':Sequelize[_0xd0f4('0x1')]},'responsetime':{'type':Sequelize[_0xd0f4('0x1')]},'ringtime':{'type':Sequelize[_0xd0f4('0x2')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xd0f4('0x0')]},'campaigntype':{'type':Sequelize[_0xd0f4('0x0')]},'membername':{'type':Sequelize[_0xd0f4('0x0')]}};
\ No newline at end of file
index 782e264..a4f3318 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46ea=['exports','define','ReportAgentPreview','report_agent_preview','lodash','../../config/logger','api','moment','request-promise','path','./reportAgentPreview.attributes'];(function(_0x4a5494,_0x3ad336){var _0x57cbb5=function(_0xa5a1ac){while(--_0xa5a1ac){_0x4a5494['push'](_0x4a5494['shift']());}};_0x57cbb5(++_0x3ad336);}(_0x46ea,0x101));var _0xa46e=function(_0x51e2b0,_0x3ca232){_0x51e2b0=_0x51e2b0-0x0;var _0x30561d=_0x46ea[_0x51e2b0];return _0x30561d;};'use strict';var _=require(_0xa46e('0x0'));var util=require('util');var logger=require(_0xa46e('0x1'))(_0xa46e('0x2'));var moment=require(_0xa46e('0x3'));var BPromise=require('bluebird');var rp=require(_0xa46e('0x4'));var fs=require('fs');var path=require(_0xa46e('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xa46e('0x6'));module[_0xa46e('0x7')]=function(_0x1bcc85,_0x4cacf8){return _0x1bcc85[_0xa46e('0x8')](_0xa46e('0x9'),attributes,{'tableName':_0xa46e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc4fa=['./reportAgentPreview.attributes','exports','define','report_agent_preview','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xc4fa,0x12f));var _0xac4f=function(_0xec2241,_0x453d5c){_0xec2241=_0xec2241-0x0;var _0x201e24=_0xc4fa[_0xec2241];return _0x201e24;};'use strict';var _=require(_0xac4f('0x0'));var util=require(_0xac4f('0x1'));var logger=require(_0xac4f('0x2'))(_0xac4f('0x3'));var moment=require(_0xac4f('0x4'));var BPromise=require(_0xac4f('0x5'));var rp=require(_0xac4f('0x6'));var fs=require('fs');var path=require(_0xac4f('0x7'));var rimraf=require('rimraf');var config=require(_0xac4f('0x8'));var attributes=require(_0xac4f('0x9'));module[_0xac4f('0xa')]=function(_0x2966df,_0x5d54c3){return _0x2966df[_0xac4f('0xb')]('ReportAgentPreview',attributes,{'tableName':_0xac4f('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 629b756..2fd8569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf644=['request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ReportAgentPreview','create','body','options','CreateReportAgentPreview','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','request','then','info','ReportAgentPreview,\x20%s,\x20%s'];(function(_0x2e4268,_0xa33028){var _0x56fe9d=function(_0x67990){while(--_0x67990){_0x2e4268['push'](_0x2e4268['shift']());}};_0x56fe9d(++_0xa33028);}(_0xf644,0x194));var _0x4f64=function(_0x2ac25c,_0x307905){_0x2ac25c=_0x2ac25c-0x0;var _0x3fa92c=_0xf644[_0x2ac25c];return _0x3fa92c;};'use strict';var _=require(_0x4f64('0x0'));var util=require(_0x4f64('0x1'));var moment=require(_0x4f64('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4f64('0x3'));var db=require(_0x4f64('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4f64('0x5'))('rpc');var config=require(_0x4f64('0x6'));var jayson=require(_0x4f64('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc7f1d0,_0x446dbb,_0x49d01f){return new BPromise(function(_0x11e0f1,_0x36660f){return client[_0x4f64('0x8')](_0xc7f1d0,_0x49d01f)[_0x4f64('0x9')](function(_0x2e4279){logger[_0x4f64('0xa')](_0x4f64('0xb'),_0x446dbb,_0x4f64('0xc'));logger[_0x4f64('0xd')](_0x4f64('0xe'),_0x446dbb,_0x4f64('0xc'),JSON[_0x4f64('0xf')](_0x2e4279));if(_0x2e4279[_0x4f64('0x10')]){if(_0x2e4279[_0x4f64('0x10')][_0x4f64('0x11')]===0x1f4){logger[_0x4f64('0x10')](_0x4f64('0xb'),_0x446dbb,_0x2e4279[_0x4f64('0x10')][_0x4f64('0x12')]);return _0x36660f(_0x2e4279[_0x4f64('0x10')]['message']);}logger[_0x4f64('0x10')](_0x4f64('0xb'),_0x446dbb,_0x2e4279[_0x4f64('0x10')][_0x4f64('0x12')]);return _0x11e0f1(_0x2e4279[_0x4f64('0x10')][_0x4f64('0x12')]);}else{logger[_0x4f64('0xa')]('ReportAgentPreview,\x20%s,\x20%s',_0x446dbb,_0x4f64('0xc'));_0x11e0f1(_0x2e4279[_0x4f64('0x13')][_0x4f64('0x12')]);}})[_0x4f64('0x14')](function(_0x17719e){logger[_0x4f64('0x10')]('ReportAgentPreview,\x20%s,\x20%s',_0x446dbb,_0x17719e);_0x36660f(_0x17719e);});});}exports['CreateReportAgentPreview']=function(_0xae9cc6){var _0x1e5834=this;return new Promise(function(_0x434612,_0x325c07){return db[_0x4f64('0x15')][_0x4f64('0x16')](_0xae9cc6[_0x4f64('0x17')],{'raw':_0xae9cc6[_0x4f64('0x18')]?_0xae9cc6[_0x4f64('0x18')]['raw']===undefined?!![]:![]:!![]})[_0x4f64('0x9')](function(_0x13659a){logger[_0x4f64('0xa')](_0x4f64('0x19'),_0xae9cc6);logger['debug'](_0x4f64('0x19'),_0xae9cc6,JSON['stringify'](_0x13659a));_0x434612(_0x13659a);})[_0x4f64('0x14')](function(_0x202dca){logger[_0x4f64('0x10')](_0x4f64('0x19'),_0x202dca[_0x4f64('0x12')],_0xae9cc6);_0x325c07(_0x1e5834['error'](0x1f4,_0x202dca[_0x4f64('0x12')]));});});};
\ No newline at end of file
+var _0x7c50=['error','code','message','info','result','catch','ReportAgentPreview','create','body','options','raw','CreateReportAgentPreview','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','then','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','stringify'];(function(_0x969a23,_0x38ac6f){var _0x1320df=function(_0x390086){while(--_0x390086){_0x969a23['push'](_0x969a23['shift']());}};_0x1320df(++_0x38ac6f);}(_0x7c50,0x89));var _0x07c5=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x7c50[_0xae7c2f];return _0x5d7001;};'use strict';var _=require(_0x07c5('0x0'));var util=require(_0x07c5('0x1'));var moment=require(_0x07c5('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x07c5('0x3'));var db=require(_0x07c5('0x4'))['db'];var utils=require(_0x07c5('0x5'));var logger=require('../../config/logger')(_0x07c5('0x6'));var config=require('../../config/environment');var jayson=require(_0x07c5('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x98ae56,_0x344d44,_0x57706c){return new BPromise(function(_0x26815d,_0x2b3c3d){return client['request'](_0x98ae56,_0x57706c)[_0x07c5('0x8')](function(_0x74213a){logger['info'](_0x07c5('0x9'),_0x344d44,_0x07c5('0xa'));logger[_0x07c5('0xb')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0x344d44,_0x07c5('0xa'),JSON[_0x07c5('0xc')](_0x74213a));if(_0x74213a[_0x07c5('0xd')]){if(_0x74213a[_0x07c5('0xd')][_0x07c5('0xe')]===0x1f4){logger['error'](_0x07c5('0x9'),_0x344d44,_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);return _0x2b3c3d(_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);}logger[_0x07c5('0xd')]('ReportAgentPreview,\x20%s,\x20%s',_0x344d44,_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);return _0x26815d(_0x74213a[_0x07c5('0xd')][_0x07c5('0xf')]);}else{logger[_0x07c5('0x10')](_0x07c5('0x9'),_0x344d44,_0x07c5('0xa'));_0x26815d(_0x74213a[_0x07c5('0x11')]['message']);}})[_0x07c5('0x12')](function(_0x1d0c02){logger[_0x07c5('0xd')](_0x07c5('0x9'),_0x344d44,_0x1d0c02);_0x2b3c3d(_0x1d0c02);});});}exports['CreateReportAgentPreview']=function(_0x597d1c){var _0x121334=this;return new Promise(function(_0x9e3a1d,_0x5b21ee){return db[_0x07c5('0x13')][_0x07c5('0x14')](_0x597d1c[_0x07c5('0x15')],{'raw':_0x597d1c[_0x07c5('0x16')]?_0x597d1c[_0x07c5('0x16')][_0x07c5('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x53b30e){logger[_0x07c5('0x10')](_0x07c5('0x18'),_0x597d1c);logger[_0x07c5('0xb')](_0x07c5('0x18'),_0x597d1c,JSON[_0x07c5('0xc')](_0x53b30e));_0x9e3a1d(_0x53b30e);})[_0x07c5('0x12')](function(_0x378357){logger[_0x07c5('0xd')](_0x07c5('0x18'),_0x378357[_0x07c5('0xf')],_0x597d1c);_0x5b21ee(_0x121334[_0x07c5('0xd')](0x1f4,_0x378357['message']));});});};
\ No newline at end of file
index 01fc561..8d84a38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12a1=['voiceQueuesChannel','/voice/queues/channels/:uniqueid/hangup','voiceQueuesChannelHangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','/outbound/channels','outboundChannels','agents','agentCapacity','/telephones','/trunks','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','/chat/queues/:id','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','exports','util','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels','/voice/channels/:uniqueid/mixmonitor','isAuthenticated','/voice/queues','voiceQueues','/chat/queues','/mail/queues','mailQueues','mailAccounts','/openchannel/queues','/sms/queues','whatsappQueues','/fax/queues','faxQueues','voiceQueuesPreview','/voice/queues/channels','voiceQueuesChannels'];(function(_0x3f0b45,_0x5311eb){var _0x49eba1=function(_0x20c0d1){while(--_0x20c0d1){_0x3f0b45['push'](_0x3f0b45['shift']());}};_0x49eba1(++_0x5311eb);}(_0x12a1,0xd3));var _0x112a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x12a1[_0x14add3];return _0x4a174f;};'use strict';var multer=require('multer');var util=require(_0x112a('0x0'));var path=require('path');var express=require(_0x112a('0x1'));var router=express[_0x112a('0x2')]();var auth=require(_0x112a('0x3'));var controller=require(_0x112a('0x4'));router[_0x112a('0x5')](_0x112a('0x6'),auth['isAuthenticated'](),controller['voiceChannels']);router['get'](_0x112a('0x7'),auth[_0x112a('0x8')](),controller['voiceChannelMixMonitor']);router[_0x112a('0x5')]('/voice/channels/:uniqueid/stopmixmonitor',auth['isAuthenticated'](),controller['voiceChannelStopMixMonitor']);router[_0x112a('0x5')](_0x112a('0x9'),auth[_0x112a('0x8')](),controller[_0x112a('0xa')]);router[_0x112a('0x5')](_0x112a('0xb'),auth['isAuthenticated'](),controller['chatQueues']);router[_0x112a('0x5')](_0x112a('0xc'),auth['isAuthenticated'](),controller[_0x112a('0xd')]);router[_0x112a('0x5')]('/mail/accounts',auth[_0x112a('0x8')](),controller[_0x112a('0xe')]);router[_0x112a('0x5')](_0x112a('0xf'),auth[_0x112a('0x8')](),controller['openchannelQueues']);router[_0x112a('0x5')](_0x112a('0x10'),auth[_0x112a('0x8')](),controller['smsQueues']);router[_0x112a('0x5')]('/whatsapp/queues',auth[_0x112a('0x8')](),controller[_0x112a('0x11')]);router[_0x112a('0x5')](_0x112a('0x12'),auth[_0x112a('0x8')](),controller[_0x112a('0x13')]);router[_0x112a('0x5')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller[_0x112a('0x14')]);router['get'](_0x112a('0x15'),auth[_0x112a('0x8')](),controller[_0x112a('0x16')]);router[_0x112a('0x5')]('/voice/queues/channels/:uniqueid',auth['isAuthenticated'](),controller[_0x112a('0x17')]);router[_0x112a('0x5')](_0x112a('0x18'),auth['isAuthenticated'](),controller[_0x112a('0x19')]);router['get'](_0x112a('0x1a'),auth[_0x112a('0x8')](),controller['voiceQueuesChannelRedirect']);router['get'](_0x112a('0x1b'),auth[_0x112a('0x8')](),controller[_0x112a('0x1c')]);router[_0x112a('0x1d')](_0x112a('0x1b'),auth[_0x112a('0x8')](),controller[_0x112a('0x1e')]);router[_0x112a('0x5')](_0x112a('0x1f'),auth['isAuthenticated'](),controller['outbound']);router['get'](_0x112a('0x20'),auth[_0x112a('0x8')](),controller[_0x112a('0x21')]);router['get']('/agents',auth[_0x112a('0x8')](),controller[_0x112a('0x22')]);router[_0x112a('0x1d')]('/agents/:id/capacity',auth['isAuthenticated'](),controller[_0x112a('0x23')]);router['get'](_0x112a('0x24'),auth[_0x112a('0x8')](),controller['telephones']);router[_0x112a('0x5')](_0x112a('0x25'),auth[_0x112a('0x8')](),controller[_0x112a('0x26')]);router[_0x112a('0x5')](_0x112a('0x27'),auth['isAuthenticated'](),controller[_0x112a('0x28')]);router['get'](_0x112a('0x29'),auth[_0x112a('0x8')](),controller[_0x112a('0x2a')]);router[_0x112a('0x5')](_0x112a('0x2b'),auth['isAuthenticated'](),controller[_0x112a('0x2c')]);router['get'](_0x112a('0x2d'),auth[_0x112a('0x8')](),controller[_0x112a('0x2e')]);router[_0x112a('0x5')](_0x112a('0x2f'),auth['isAuthenticated'](),controller[_0x112a('0x30')]);router[_0x112a('0x5')]('/openchannel/queues/:id/waitinginteractions',auth[_0x112a('0x8')](),controller['openchannelQueuesIdWaitingInteractions']);router['get'](_0x112a('0x31'),auth['isAuthenticated'](),controller[_0x112a('0x32')]);router[_0x112a('0x5')](_0x112a('0x33'),auth[_0x112a('0x8')](),controller[_0x112a('0x34')]);router[_0x112a('0x5')](_0x112a('0x35'),auth['isAuthenticated'](),controller['faxQueuesWaitingInteractions']);router[_0x112a('0x36')](_0x112a('0x37'),auth[_0x112a('0x8')](),controller[_0x112a('0x38')](_0x112a('0x39')));router['get'](_0x112a('0x3a'),auth[_0x112a('0x8')](),controller[_0x112a('0x3b')]);router['post'](_0x112a('0x3c'),auth[_0x112a('0x8')](),controller['queueNotify'](_0x112a('0x3d')));router[_0x112a('0x5')](_0x112a('0x3e'),auth[_0x112a('0x8')](),controller['showChatQueues']);router[_0x112a('0x36')](_0x112a('0x3f'),auth['isAuthenticated'](),controller[_0x112a('0x38')](_0x112a('0x40')));router['get'](_0x112a('0x41'),auth['isAuthenticated'](),controller[_0x112a('0x42')]);router[_0x112a('0x36')]('/openchannel/queues/:id/notify',auth[_0x112a('0x8')](),controller[_0x112a('0x38')]('openchannel'));router['get'](_0x112a('0x43'),auth[_0x112a('0x8')](),controller[_0x112a('0x44')]);router[_0x112a('0x36')]('/sms/queues/:id/notify',auth[_0x112a('0x8')](),controller[_0x112a('0x38')](_0x112a('0x45')));router[_0x112a('0x36')](_0x112a('0x46'),auth['isAuthenticated'](),controller[_0x112a('0x38')](_0x112a('0x47')));router[_0x112a('0x5')](_0x112a('0x48'),auth[_0x112a('0x8')](),controller['showSmsQueues']);router[_0x112a('0x5')](_0x112a('0x49'),auth['isAuthenticated'](),controller[_0x112a('0x4a')]);router[_0x112a('0x36')](_0x112a('0x4b'),auth[_0x112a('0x8')](),controller[_0x112a('0x4c')]);module[_0x112a('0x4d')]=router;
\ No newline at end of file
+var _0x249a=['isAuthenticated','voiceChannels','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','voiceChannelStopMixMonitor','/voice/queues','voiceQueues','/chat/queues','chatQueues','/mail/queues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','/sms/queues','/whatsapp/queues','whatsappQueues','/fax/queues','faxQueues','/voice/queues/channels','/voice/queues/channels/:uniqueid','voiceQueuesChannel','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound/channels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','trunks','/campaigns','campaigns','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/sms/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showFaxQueues','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','showOpenchannelQueues','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','util','path','express','Router','../../components/auth/service','./rpc.controller','get','/voice/channels'];(function(_0x260a36,_0x5742eb){var _0x5c8bd9=function(_0x55ed8e){while(--_0x55ed8e){_0x260a36['push'](_0x260a36['shift']());}};_0x5c8bd9(++_0x5742eb);}(_0x249a,0x173));var _0xa249=function(_0x3e5086,_0x48f4a2){_0x3e5086=_0x3e5086-0x0;var _0xfeb102=_0x249a[_0x3e5086];return _0xfeb102;};'use strict';var multer=require(_0xa249('0x0'));var util=require(_0xa249('0x1'));var path=require(_0xa249('0x2'));var express=require(_0xa249('0x3'));var router=express[_0xa249('0x4')]();var auth=require(_0xa249('0x5'));var controller=require(_0xa249('0x6'));router[_0xa249('0x7')](_0xa249('0x8'),auth[_0xa249('0x9')](),controller[_0xa249('0xa')]);router['get']('/voice/channels/:uniqueid/mixmonitor',auth[_0xa249('0x9')](),controller[_0xa249('0xb')]);router[_0xa249('0x7')](_0xa249('0xc'),auth['isAuthenticated'](),controller[_0xa249('0xd')]);router[_0xa249('0x7')](_0xa249('0xe'),auth[_0xa249('0x9')](),controller[_0xa249('0xf')]);router[_0xa249('0x7')](_0xa249('0x10'),auth['isAuthenticated'](),controller[_0xa249('0x11')]);router[_0xa249('0x7')](_0xa249('0x12'),auth['isAuthenticated'](),controller['mailQueues']);router['get'](_0xa249('0x13'),auth[_0xa249('0x9')](),controller[_0xa249('0x14')]);router['get'](_0xa249('0x15'),auth[_0xa249('0x9')](),controller[_0xa249('0x16')]);router[_0xa249('0x7')](_0xa249('0x17'),auth[_0xa249('0x9')](),controller['smsQueues']);router['get'](_0xa249('0x18'),auth['isAuthenticated'](),controller[_0xa249('0x19')]);router[_0xa249('0x7')](_0xa249('0x1a'),auth[_0xa249('0x9')](),controller[_0xa249('0x1b')]);router[_0xa249('0x7')]('/voice/queues/preview/:id',auth['isAuthenticated'](),controller['voiceQueuesPreview']);router['get'](_0xa249('0x1c'),auth[_0xa249('0x9')](),controller['voiceQueuesChannels']);router[_0xa249('0x7')](_0xa249('0x1d'),auth[_0xa249('0x9')](),controller[_0xa249('0x1e')]);router[_0xa249('0x7')]('/voice/queues/channels/:uniqueid/hangup',auth['isAuthenticated'](),controller['voiceQueuesChannelHangup']);router['get'](_0xa249('0x1f'),auth[_0xa249('0x9')](),controller[_0xa249('0x20')]);router[_0xa249('0x7')](_0xa249('0x21'),auth[_0xa249('0x9')](),controller[_0xa249('0x22')]);router[_0xa249('0x23')](_0xa249('0x21'),auth[_0xa249('0x9')](),controller[_0xa249('0x24')]);router[_0xa249('0x7')]('/outbound',auth[_0xa249('0x9')](),controller['outbound']);router[_0xa249('0x7')](_0xa249('0x25'),auth[_0xa249('0x9')](),controller['outboundChannels']);router[_0xa249('0x7')](_0xa249('0x26'),auth['isAuthenticated'](),controller[_0xa249('0x27')]);router['put'](_0xa249('0x28'),auth[_0xa249('0x9')](),controller[_0xa249('0x29')]);router[_0xa249('0x7')](_0xa249('0x2a'),auth[_0xa249('0x9')](),controller['telephones']);router[_0xa249('0x7')]('/trunks',auth[_0xa249('0x9')](),controller[_0xa249('0x2b')]);router[_0xa249('0x7')](_0xa249('0x2c'),auth[_0xa249('0x9')](),controller[_0xa249('0x2d')]);router[_0xa249('0x7')](_0xa249('0x2e'),auth['isAuthenticated'](),controller[_0xa249('0x2f')]);router[_0xa249('0x7')](_0xa249('0x30'),auth[_0xa249('0x9')](),controller['chatQueuesWaitingInteractions']);router[_0xa249('0x7')]('/mail/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0xa249('0x31')]);router['get'](_0xa249('0x32'),auth[_0xa249('0x9')](),controller[_0xa249('0x33')]);router['get']('/openchannel/queues/:id/waitinginteractions',auth[_0xa249('0x9')](),controller['openchannelQueuesIdWaitingInteractions']);router[_0xa249('0x7')](_0xa249('0x34'),auth['isAuthenticated'](),controller['smsQueuesWaitingInteractions']);router[_0xa249('0x7')]('/whatsapp/queues/waitinginteractions',auth[_0xa249('0x9')](),controller['whatsappQueuesWaitingInteractions']);router[_0xa249('0x7')]('/fax/queues/waitinginteractions',auth[_0xa249('0x9')](),controller[_0xa249('0x35')]);router[_0xa249('0x36')](_0xa249('0x37'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x39')));router[_0xa249('0x7')](_0xa249('0x3a'),auth[_0xa249('0x9')](),controller[_0xa249('0x3b')]);router[_0xa249('0x36')](_0xa249('0x3c'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x3d')));router['get']('/chat/queues/:id',auth[_0xa249('0x9')](),controller['showChatQueues']);router[_0xa249('0x36')]('/fax/queues/:id/notify',auth[_0xa249('0x9')](),controller[_0xa249('0x38')]('fax'));router[_0xa249('0x7')]('/fax/queues/:id',auth[_0xa249('0x9')](),controller[_0xa249('0x3e')]);router[_0xa249('0x36')](_0xa249('0x3f'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x40')));router[_0xa249('0x7')](_0xa249('0x41'),auth[_0xa249('0x9')](),controller[_0xa249('0x42')]);router[_0xa249('0x36')]('/sms/queues/:id/notify',auth['isAuthenticated'](),controller['queueNotify'](_0xa249('0x43')));router[_0xa249('0x36')](_0xa249('0x44'),auth[_0xa249('0x9')](),controller[_0xa249('0x38')](_0xa249('0x45')));router[_0xa249('0x7')](_0xa249('0x46'),auth['isAuthenticated'](),controller[_0xa249('0x47')]);router[_0xa249('0x7')](_0xa249('0x48'),auth[_0xa249('0x9')](),controller[_0xa249('0x49')]);router[_0xa249('0x36')](_0xa249('0x4a'),auth[_0xa249('0x9')](),controller[_0xa249('0x4b')]);module['exports']=router;
\ No newline at end of file
index 85ab137..154c70e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['request','error','result','catch','status','json','sendStatus','name','send','isNil','rows','find','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','then','voiceChannelStopMixMonitor','params','voiceQueues','VoiceQueues','updateVoiceQueue','body','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','voiceQueuesChannelHangup','VoiceQueuesChannelHangup','merge','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','outboundChannels','OutboundChannels','agents','Agents','agentCapacity','interaction','user','hasOwnProperty','findAll','INTERACTION','length','format','MemberReport','findOrCreate','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','agent','internal','AgentCapacity','telephones','Telephones','trunks','Trunks','Campaigns','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','showOpenchannelQueues','OpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','WhatsappQueues','showWhatsappQueues','FaxQueues','faxAccounts','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','map','queue_id','indexOf','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','chat','Website','Account','Queue','\x20Queue\x20not\x20found','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','QueueId','TransferReport','create','Start','queueTransferTimeout','*,*,*,*','agentNotify','channel','Agent\x20not\x20found','Message','findOne','agentTransferTimeout','bluebird','../../mysqldb','../../config/logger','jayson/promise','client','http'];(function(_0x8a0d94,_0x16fcee){var _0x48f382=function(_0x46ab83){while(--_0x46ab83){_0x8a0d94['push'](_0x8a0d94['shift']());}};_0x48f382(++_0x16fcee);}(_0x2675,0x75));var _0x5267=function(_0x4a61d4,_0x4827b1){_0x4a61d4=_0x4a61d4-0x0;var _0x316ec0=_0x2675[_0x4a61d4];return _0x316ec0;};'use strict';var BPromise=require(_0x5267('0x0'));var moment=require('moment');var _=require('lodash');var util=require('util');var db=require(_0x5267('0x1'))['db'];var logger=require(_0x5267('0x2'))('api');var jayson=require(_0x5267('0x3'));var amiClient=jayson[_0x5267('0x4')]['http']({'port':0x232a});var mailClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232b});var routingClient=jayson[_0x5267('0x4')][_0x5267('0x5')]({'port':0x232c});function respondWithRpcPromise(_0x20f065,_0xc56cd5,_0x527c16){return new BPromise(function(_0x9e0a27,_0x46bfdf){var _0x506fd7=_0x527c16?_0x527c16:amiClient;return _0x506fd7[_0x5267('0x6')](_0x20f065,_0xc56cd5)['then'](function(_0x3ff4e9){if(_0x3ff4e9[_0x5267('0x7')]){if(_0x3ff4e9[_0x5267('0x7')]['code']===0x1f4){return _0x46bfdf(_0x3ff4e9[_0x5267('0x7')]['message']);}return _0x9e0a27(_0x3ff4e9[_0x5267('0x7')]['message']);}else{_0x9e0a27(_0x3ff4e9[_0x5267('0x8')]);}})[_0x5267('0x9')](function(_0x268a8a){_0x46bfdf(_0x268a8a);});});}function respondWithResult(_0x1f9be3,_0x1d7090){_0x1d7090=_0x1d7090||0xc8;return function(_0x1171b9){if(_0x1171b9){return _0x1f9be3[_0x5267('0xa')](_0x1d7090)[_0x5267('0xb')](_0x1171b9);}return _0x1f9be3[_0x5267('0xc')](0x194);};}function handleError(_0x1e2d3b,_0x16e5a7){_0x16e5a7=_0x16e5a7||0x1f4;return function(_0x29349a){logger[_0x5267('0x7')](_0x29349a['stack']);if(_0x29349a['name']){delete _0x29349a[_0x5267('0xd')];}_0x1e2d3b[_0x5267('0xa')](_0x16e5a7)[_0x5267('0xe')](_0x29349a);};}function findById(_0x3f5344){return function(_0x46b2c2){if(!_[_0x5267('0xf')](_0x3f5344)&&!_[_0x5267('0xf')](_0x46b2c2)&&!_[_0x5267('0xf')](_0x46b2c2[_0x5267('0x10')])){return _[_0x5267('0x11')](_0x46b2c2[_0x5267('0x10')],function(_0x1ab03){return _0x1ab03['id']==_0x3f5344;});}return null;};}exports['voiceChannels']=function(_0x18f32e,_0x2afd38){return respondWithRpcPromise('VoiceChannels',_0x18f32e[_0x5267('0x12')])['then'](respondWithResult(_0x2afd38,null))[_0x5267('0x9')](handleError(_0x2afd38,null));};exports[_0x5267('0x13')]=function(_0x39c0c3,_0x2a9f99){return respondWithRpcPromise(_0x5267('0x14'),_['merge'](_0x39c0c3[_0x5267('0x12')],_0x39c0c3['params']))[_0x5267('0x15')](respondWithResult(_0x2a9f99,null))[_0x5267('0x9')](handleError(_0x2a9f99,null));};exports[_0x5267('0x16')]=function(_0x56dd95,_0x499f19){return respondWithRpcPromise('VoiceChannelStopMixMonitor',_['merge'](_0x56dd95['query'],_0x56dd95[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x499f19,null))[_0x5267('0x9')](handleError(_0x499f19,null));};exports[_0x5267('0x18')]=function(_0x11c8ea,_0x40d1be){return respondWithRpcPromise(_0x5267('0x19'),_0x11c8ea[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x40d1be,null))['catch'](handleError(_0x40d1be,null));};exports['showVoiceQueues']=function(_0x354111,_0x472938){return respondWithRpcPromise('VoiceQueues',_0x354111[_0x5267('0x12')])['then'](findById(_0x354111['params']['id']))[_0x5267('0x15')](respondWithResult(_0x472938,null))[_0x5267('0x9')](handleError(_0x472938,null));};exports[_0x5267('0x1a')]=function(_0x2d2ace,_0x33c431){return respondWithRpcPromise('UpdateVoiceQueue',_['merge'](_0x2d2ace[_0x5267('0x1b')],_0x2d2ace[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x33c431,null))['catch'](handleError(_0x33c431,null));};exports['voiceQueuesPreview']=function(_0xbe7922,_0x3ef2a8){return respondWithRpcPromise(_0x5267('0x1c'),_['merge'](_0xbe7922['query'],_0xbe7922[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x3ef2a8,null))[_0x5267('0x9')](handleError(_0x3ef2a8,null));};exports[_0x5267('0x1d')]=function(_0x5bbb83,_0x33e456){return respondWithRpcPromise(_0x5267('0x1e'),_0x5bbb83[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x33e456,null))[_0x5267('0x9')](handleError(_0x33e456,null));};exports[_0x5267('0x1f')]=function(_0x341bae,_0x1dda95){return respondWithRpcPromise('VoiceQueuesChannel',_['merge'](_0x341bae[_0x5267('0x12')],_0x341bae['params']))[_0x5267('0x15')](respondWithResult(_0x1dda95,null))[_0x5267('0x9')](handleError(_0x1dda95,null));};exports[_0x5267('0x20')]=function(_0x3a729c,_0x4ac4a0){return respondWithRpcPromise(_0x5267('0x21'),_[_0x5267('0x22')](_0x3a729c[_0x5267('0x12')],_0x3a729c[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x4ac4a0,null))[_0x5267('0x9')](handleError(_0x4ac4a0,null));};exports[_0x5267('0x23')]=function(_0xa0ea89,_0x484b77){return respondWithRpcPromise(_0x5267('0x24'),_['merge'](_0xa0ea89[_0x5267('0x12')],_0xa0ea89[_0x5267('0x17')]))[_0x5267('0x15')](respondWithResult(_0x484b77,null))[_0x5267('0x9')](handleError(_0x484b77,null));};exports[_0x5267('0x25')]=function(_0x33ecd7,_0x465ad9){return respondWithRpcPromise('Outbound',_0x33ecd7[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0x465ad9,null))[_0x5267('0x9')](handleError(_0x465ad9,null));};exports[_0x5267('0x26')]=function(_0x82cea7,_0x21eabf){return respondWithRpcPromise(_0x5267('0x27'),_0x82cea7['query'])[_0x5267('0x15')](respondWithResult(_0x21eabf,null))['catch'](handleError(_0x21eabf,null));};exports[_0x5267('0x28')]=function(_0x5c0cdf,_0x4dee66){var _0x51bddd;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf['query'])[_0x5267('0x15')](function(_0x146476){_0x51bddd=_0x146476;return respondWithRpcPromise(_0x5267('0x29'),_0x5c0cdf[_0x5267('0x12')],routingClient);})['then'](function(_0x456b33){return _[_0x5267('0x22')]({},_0x456b33,_0x51bddd);})['then'](respondWithResult(_0x4dee66,null))['catch'](handleError(_0x4dee66,null));};exports[_0x5267('0x2a')]=function(_0x560cdf,_0x12df83){if(_0x560cdf[_0x5267('0x1b')]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')]&&_0x560cdf[_0x5267('0x2c')]&&_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]){for(var _0x5697b3 in _0x560cdf['body'][_0x5267('0x2b')]){if(_0x560cdf['body'][_0x5267('0x2b')][_0x5267('0x2d')](_0x5697b3)){db['MemberReport'][_0x5267('0x2e')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'type':_0x5267('0x2f'),'exitAt':null,'uniqueid':_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3]&&_0x560cdf[_0x5267('0x1b')][_0x5267('0x2b')][_0x5697b3][_0x5267('0x30')]?{'$notIn':_0x560cdf['body'][_0x5267('0x2b')][_0x5697b3]}:{'$ne':null}}})[_0x5267('0x15')](function(_0x19b015){var _0x45241a=moment()[_0x5267('0x31')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x3d15ac=0x0,_0x4e0132=_0x19b015[_0x5267('0x30')];_0x3d15ac<_0x4e0132;_0x3d15ac+=0x1){_0x19b015[_0x3d15ac]['updateAttributes']({'exitAt':_0x45241a});}});for(var _0x4ae9f9=0x0;_0x4ae9f9<_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x5267('0x30')];_0x4ae9f9+=0x1){db[_0x5267('0x32')][_0x5267('0x33')]({'where':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')]['name'],'type':_0x5267('0x2f'),'uniqueid':_0x560cdf['body']['interaction'][_0x5697b3][_0x4ae9f9],'exitAt':null},'defaults':{'channel':_0x5697b3,'membername':_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')],'interface':_['isNil'](_0x560cdf['user'][_0x5267('0x34')])?util[_0x5267('0x31')](_0x5267('0x35'),_0x560cdf[_0x5267('0x2c')][_0x5267('0xd')]):_0x560cdf[_0x5267('0x2c')][_0x5267('0x34')],'type':_0x5267('0x2f'),'enterAt':moment()[_0x5267('0x31')](_0x5267('0x36')),'role':_0x5267('0x37'),'internal':_0x560cdf[_0x5267('0x2c')][_0x5267('0x38')],'uniqueid':_0x560cdf[_0x5267('0x1b')]['interaction'][_0x5697b3][_0x4ae9f9]}});}}}}return respondWithRpcPromise(_0x5267('0x39'),{'id':_0x560cdf[_0x5267('0x17')]['id'],'capacity':_0x560cdf[_0x5267('0x1b')]['capacity']},routingClient)[_0x5267('0x15')](respondWithResult(_0x12df83,null))[_0x5267('0x9')](handleError(_0x12df83,null));};exports[_0x5267('0x3a')]=function(_0x2a97f1,_0x119546){return respondWithRpcPromise(_0x5267('0x3b'),_0x2a97f1['query'])[_0x5267('0x15')](respondWithResult(_0x119546,null))['catch'](handleError(_0x119546,null));};exports[_0x5267('0x3c')]=function(_0x30fcd2,_0xa49fd7){return respondWithRpcPromise(_0x5267('0x3d'),_0x30fcd2[_0x5267('0x12')])[_0x5267('0x15')](respondWithResult(_0xa49fd7,null))[_0x5267('0x9')](handleError(_0xa49fd7,null));};exports['campaigns']=function(_0x57ca8f,_0x200855){return respondWithRpcPromise(_0x5267('0x3e'),_0x57ca8f['query'])[_0x5267('0x15')](respondWithResult(_0x200855,null))['catch'](handleError(_0x200855,null));};exports['chatQueues']=function(_0x1eeb21,_0x79cee1){return respondWithRpcPromise(_0x5267('0x3f'),_0x1eeb21[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x79cee1,null))[_0x5267('0x9')](handleError(_0x79cee1,null));};exports[_0x5267('0x40')]=function(_0x3fd8f9,_0xf0b5a9){return respondWithRpcPromise(_0x5267('0x3f'),_0x3fd8f9['query'],routingClient)[_0x5267('0x15')](findById(_0x3fd8f9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0xf0b5a9,null))[_0x5267('0x9')](handleError(_0xf0b5a9,null));};exports[_0x5267('0x41')]=function(_0x34c205,_0x552211){return respondWithRpcPromise(_0x5267('0x42'),_0x34c205['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x552211,null))[_0x5267('0x9')](handleError(_0x552211,null));};exports[_0x5267('0x43')]=function(_0x4a72c3,_0x1593ce){return respondWithRpcPromise(_0x5267('0x42'),_0x4a72c3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x4a72c3[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1593ce,null))['catch'](handleError(_0x1593ce,null));};exports[_0x5267('0x44')]=function(_0x190d02,_0x186667){return respondWithRpcPromise(_0x5267('0x45'),_0x190d02['query'],mailClient)['then'](respondWithResult(_0x186667,null))[_0x5267('0x9')](handleError(_0x186667,null));};exports['openchannelQueues']=function(_0x3f5cda,_0x47059c){return respondWithRpcPromise('OpenchannelQueues',_0x3f5cda['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x47059c,null))[_0x5267('0x9')](handleError(_0x47059c,null));};exports[_0x5267('0x46')]=function(_0x537f75,_0x457dca){return respondWithRpcPromise(_0x5267('0x47'),_0x537f75[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0x537f75['params']['id']))['then'](respondWithResult(_0x457dca,null))['catch'](handleError(_0x457dca,null));};exports[_0x5267('0x48')]=function(_0x2457a3,_0x45ee25){return respondWithRpcPromise(_0x5267('0x49'),_0x2457a3[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x45ee25,null))[_0x5267('0x9')](handleError(_0x45ee25,null));};exports[_0x5267('0x4a')]=function(_0x486b02,_0x1ddfad){return respondWithRpcPromise(_0x5267('0x49'),_0x486b02['query'],routingClient)[_0x5267('0x15')](findById(_0x486b02[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x1ddfad,null))[_0x5267('0x9')](handleError(_0x1ddfad,null));};exports[_0x5267('0x4b')]=function(_0xde1ecd,_0x4915f4){return respondWithRpcPromise(_0x5267('0x4c'),_0xde1ecd[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x4915f4,null))[_0x5267('0x9')](handleError(_0x4915f4,null));};exports[_0x5267('0x4d')]=function(_0xd9bcf9,_0x4aac32){return respondWithRpcPromise(_0x5267('0x4c'),_0xd9bcf9[_0x5267('0x12')],routingClient)[_0x5267('0x15')](findById(_0xd9bcf9[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x4aac32,null))[_0x5267('0x9')](handleError(_0x4aac32,null));};exports['faxQueues']=function(_0x283423,_0x41299c){return respondWithRpcPromise(_0x5267('0x4e'),_0x283423[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x41299c,null))['catch'](handleError(_0x41299c,null));};exports['showFaxQueues']=function(_0x910f97,_0x5cca85){return respondWithRpcPromise(_0x5267('0x4e'),_0x910f97['query'],routingClient)[_0x5267('0x15')](findById(_0x910f97[_0x5267('0x17')]['id']))[_0x5267('0x15')](respondWithResult(_0x5cca85,null))[_0x5267('0x9')](handleError(_0x5cca85,null));};exports[_0x5267('0x4f')]=function(_0xa92aa5,_0x21338f){return respondWithRpcPromise(_0x5267('0x50'),_0xa92aa5['query'])['then'](respondWithResult(_0x21338f,null))['catch'](handleError(_0x21338f,null));};exports[_0x5267('0x51')]=function(_0x28a101,_0x2ab2be){return respondWithRpcPromise(_0x5267('0x52'),_0x28a101['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x2ab2be,null))[_0x5267('0x9')](handleError(_0x2ab2be,null));};exports[_0x5267('0x53')]=function(_0xc3ac3f,_0x5a0e73){return respondWithRpcPromise(_0x5267('0x54'),_0xc3ac3f[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x5a0e73,null))[_0x5267('0x9')](handleError(_0x5a0e73,null));};exports[_0x5267('0x55')]=function(_0x4a9995,_0x47e235){return respondWithRpcPromise(_0x5267('0x56'),_0x4a9995[_0x5267('0x12')],routingClient)['then'](respondWithResult(_0x47e235,null))['catch'](handleError(_0x47e235,null));};exports[_0x5267('0x57')]=function(_0x2e7f8a,_0x35b302){return respondWithRpcPromise(_0x5267('0x56'),_0x2e7f8a[_0x5267('0x12')],routingClient)['then'](function(_0x4643ae){if(_0x2e7f8a[_0x5267('0x12')]['type']!==undefined){var _0x26c628=_(_0x4643ae[_0x5267('0x10')])[_0x5267('0x58')]([_0x2e7f8a[_0x5267('0x12')][_0x5267('0x59')],_0x2e7f8a[_0x5267('0x17')]['id']])[_0x5267('0x5a')](_0x5267('0x5b'))['uniq']()['value']();return _0x4643ae[_0x5267('0x10')][_0x5267('0x58')](function(_0x3f729f){return _0x26c628[_0x5267('0x5c')](_0x3f729f['queue_id'])>-0x1;});}else{return _0x4643ae[_0x5267('0x10')]['filter'](function(_0x2988a1){return _0x2988a1[_0x5267('0x5b')]===parseInt(_0x2e7f8a[_0x5267('0x17')]['id']);});}})[_0x5267('0x15')](respondWithResult(_0x35b302,null))['catch'](handleError(_0x35b302,null));};exports['smsQueuesWaitingInteractions']=function(_0x3a67a0,_0x3e2cf5){return respondWithRpcPromise(_0x5267('0x5d'),_0x3a67a0[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x3e2cf5,null))[_0x5267('0x9')](handleError(_0x3e2cf5,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x1b8d72,_0x4a05c9){return respondWithRpcPromise(_0x5267('0x5e'),_0x1b8d72['query'],routingClient)[_0x5267('0x15')](respondWithResult(_0x4a05c9,null))[_0x5267('0x9')](handleError(_0x4a05c9,null));};exports[_0x5267('0x5f')]=function(_0x87aa90,_0x164cc1){return respondWithRpcPromise(_0x5267('0x60'),_0x87aa90[_0x5267('0x12')],routingClient)[_0x5267('0x15')](respondWithResult(_0x164cc1,null))[_0x5267('0x9')](handleError(_0x164cc1,null));};exports[_0x5267('0x61')]=function(_0x555c8){return function(_0x531bb9,_0x40c7b5){var _0x14baf4,_0x4d9ec9;var _0xde179f=_[_0x5267('0x62')](_0x555c8);var _0x3ebda6=_0x555c8===_0x5267('0x63')?_0x5267('0x64'):_0x5267('0x65');return db[_0xde179f+_0x5267('0x66')]['findOne']({'raw':!![],'where':{'id':_0x531bb9[_0x5267('0x17')]['id']}})[_0x5267('0x15')](function(_0x2543a4){if(_[_0x5267('0xf')](_0x2543a4)){throw new Error(_0xde179f+_0x5267('0x67'));}_0x14baf4=_0x2543a4;return db[_0xde179f+'Message']['findOne']({'where':{'id':_0x531bb9[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0xde179f+_0x5267('0x69')],'as':_0x5267('0x69')},{'model':db[_0xde179f+_0x3ebda6],'as':'Account'}]});})[_0x5267('0x15')](function(_0x3cc775){if(_[_0x5267('0xf')](_0x3cc775)){throw new Error(_0xde179f+_0x5267('0x6a'));}_0x4d9ec9=_0x3cc775;return _0x3cc775[_0x5267('0x6b')]({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x2b38f2={'uniqueid':_0x555c8+'.'+_0x4d9ec9['id']+'.'+_0x4d9ec9[_0x5267('0x69')]['id'],'FromUserId':_0x531bb9[_0x5267('0x2c')]['id'],'type':_0x5267('0x6c')};_0x2b38f2[_0xde179f+_0x5267('0x6d')]=_0x4d9ec9['id'];_0x2b38f2[_0xde179f+_0x5267('0x6e')]=_0x4d9ec9[_0x5267('0x69')]['id'];_0x2b38f2['From'+_0xde179f+_0x3ebda6+'Id']=_0x4d9ec9[_0x5267('0x65')]['id'];_0x2b38f2['To'+_0xde179f+_0x5267('0x6f')]=_0x14baf4['id'];return db[_0xde179f+_0x5267('0x70')][_0x5267('0x71')](_0x2b38f2);})[_0x5267('0x15')](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x555c8,'interaction':_0x4d9ec9[_0x5267('0x69')],'message':_0x4d9ec9,'account':_0x4d9ec9[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x6c'),'appdata':_0x14baf4[_0x5267('0xd')]+','+(_0x4d9ec9[_0x5267('0x65')][_0x5267('0x73')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x40c7b5,null))[_0x5267('0x9')](handleError(_0x40c7b5,null));};};exports[_0x5267('0x75')]=function(_0x28884b,_0x35a4a3){var _0x7ecf0e,_0x676556;if(_[_0x5267('0xf')](_0x28884b[_0x5267('0x1b')][_0x5267('0x76')])){throw new Error('Channel\x20field\x20is\x20mandatory');}var _0x339f3f=_0x28884b[_0x5267('0x1b')][_0x5267('0x76')];var _0x405eb4=_[_0x5267('0x62')](_0x339f3f);var _0x557749=_0x339f3f===_0x5267('0x63')?_0x5267('0x64'):'Account';return db['User']['findOne']({'raw':!![],'where':{'id':_0x28884b[_0x5267('0x17')]['id'],'role':'agent'}})[_0x5267('0x15')](function(_0x54422c){if(_['isNil'](_0x54422c)){throw new Error(_0x5267('0x77'));}_0x7ecf0e=_0x54422c;return db[_0x405eb4+_0x5267('0x78')][_0x5267('0x79')]({'where':{'id':_0x28884b[_0x5267('0x1b')][_0x5267('0x68')]},'include':[{'model':db[_0x405eb4+'Interaction'],'as':'Interaction'},{'model':db[_0x405eb4+_0x557749],'as':_0x5267('0x65')}]});})[_0x5267('0x15')](function(_0x1a6245){if(_[_0x5267('0xf')](_0x1a6245)){throw new Error(_0x405eb4+_0x5267('0x6a'));}_0x676556=_0x1a6245;return _0x1a6245['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5267('0x15')](function(){var _0x5bece1={'uniqueid':_0x339f3f+'.'+_0x676556['id']+'.'+_0x676556['Interaction']['id'],'FromUserId':_0x28884b[_0x5267('0x2c')]['id'],'type':'queue','ToUserId':_0x7ecf0e['id']};_0x5bece1[_0x405eb4+'MessageId']=_0x676556['id'];_0x5bece1[_0x405eb4+_0x5267('0x6e')]=_0x676556[_0x5267('0x69')]['id'];_0x5bece1['From'+_0x405eb4+_0x557749+'Id']=_0x676556['Account']['id'];return db[_0x405eb4+'TransferReport'][_0x5267('0x71')](_0x5bece1);})['then'](function(){return respondWithRpcPromise(_0x5267('0x72'),{'channel':_0x339f3f,'interaction':_0x676556['Interaction'],'message':_0x676556,'account':_0x676556[_0x5267('0x65')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5267('0x37'),'appdata':_0x7ecf0e['name']+','+(_0x676556[_0x5267('0x65')][_0x5267('0x7a')]||0x12c),'interval':_0x5267('0x74')}]},routingClient);})[_0x5267('0x15')](respondWithResult(_0x35a4a3,null))[_0x5267('0x9')](handleError(_0x35a4a3,null));};
\ No newline at end of file
+var _0x3eea=['whatsappQueues','WhatsappQueues','faxQueues','showFaxQueues','FaxQueues','faxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','mailQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','OpenchannelQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','filter','type','queue_id','uniq','value','indexOf','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','FaxQueuesWaitingInteractions','queueNotify','capitalize','Website','Queue','findOne','\x20Queue\x20not\x20found','Message','messageId','Interaction','\x20Message\x20not\x20found','update','queue','MessageId','InteractionId','From','Account','QueueId','TransferReport','create','Start','queueTransferTimeout','agentNotify','channel','Channel\x20field\x20is\x20mandatory','chat','User','Agent\x20not\x20found','agentTransferTimeout','*,*,*,*','bluebird','lodash','util','../../mysqldb','../../config/logger','api','jayson/promise','client','http','then','error','code','message','catch','status','sendStatus','stack','name','isNil','rows','find','voiceChannels','VoiceChannels','query','voiceChannelMixMonitor','VoiceChannelMixMonitor','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','merge','params','voiceQueues','VoiceQueues','showVoiceQueues','UpdateVoiceQueue','body','voiceQueuesPreview','VoiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','VoiceQueuesChannelHangup','voiceQueuesChannelRedirect','VoiceQueuesChannelRedirect','outbound','Outbound','OutboundChannels','Agents','user','interaction','hasOwnProperty','MemberReport','findAll','INTERACTION','length','YYYY-MM-DD\x20HH:mm:ss','findOrCreate','format','SIP/%s','interface','agent','internal','capacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','showChatQueues','mailQueues','MailQueues','showMailQueues','mailAccounts','MailAccounts','openchannelQueues','showOpenchannelQueues','OpenchannelQueues','smsQueues','showSmsQueues','SmsQueues'];(function(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5c032f,_0x47ad3b){_0x5c032f=_0x5c032f-0x0;var _0x1f4dfe=_0x3eea[_0x5c032f];return _0x1f4dfe;};'use strict';var BPromise=require(_0xa3ee('0x0'));var moment=require('moment');var _=require(_0xa3ee('0x1'));var util=require(_0xa3ee('0x2'));var db=require(_0xa3ee('0x3'))['db'];var logger=require(_0xa3ee('0x4'))(_0xa3ee('0x5'));var jayson=require(_0xa3ee('0x6'));var amiClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232a});var mailClient=jayson[_0xa3ee('0x7')][_0xa3ee('0x8')]({'port':0x232b});var routingClient=jayson[_0xa3ee('0x7')]['http']({'port':0x232c});function respondWithRpcPromise(_0x538bf9,_0x4183ee,_0x4e4588){return new BPromise(function(_0x37a3f0,_0x56f37b){var _0x1eeb5b=_0x4e4588?_0x4e4588:amiClient;return _0x1eeb5b['request'](_0x538bf9,_0x4183ee)[_0xa3ee('0x9')](function(_0x5ef236){if(_0x5ef236[_0xa3ee('0xa')]){if(_0x5ef236[_0xa3ee('0xa')][_0xa3ee('0xb')]===0x1f4){return _0x56f37b(_0x5ef236['error'][_0xa3ee('0xc')]);}return _0x37a3f0(_0x5ef236[_0xa3ee('0xa')]['message']);}else{_0x37a3f0(_0x5ef236['result']);}})[_0xa3ee('0xd')](function(_0x30e652){_0x56f37b(_0x30e652);});});}function respondWithResult(_0x403518,_0x4363d1){_0x4363d1=_0x4363d1||0xc8;return function(_0x594c88){if(_0x594c88){return _0x403518[_0xa3ee('0xe')](_0x4363d1)['json'](_0x594c88);}return _0x403518[_0xa3ee('0xf')](0x194);};}function handleError(_0x20535f,_0x2c34cf){_0x2c34cf=_0x2c34cf||0x1f4;return function(_0x150e20){logger['error'](_0x150e20[_0xa3ee('0x10')]);if(_0x150e20[_0xa3ee('0x11')]){delete _0x150e20['name'];}_0x20535f['status'](_0x2c34cf)['send'](_0x150e20);};}function findById(_0x40decb){return function(_0x7277cd){if(!_[_0xa3ee('0x12')](_0x40decb)&&!_[_0xa3ee('0x12')](_0x7277cd)&&!_['isNil'](_0x7277cd[_0xa3ee('0x13')])){return _[_0xa3ee('0x14')](_0x7277cd[_0xa3ee('0x13')],function(_0x299b1e){return _0x299b1e['id']==_0x40decb;});}return null;};}exports[_0xa3ee('0x15')]=function(_0x4aac0e,_0x377b9d){return respondWithRpcPromise(_0xa3ee('0x16'),_0x4aac0e[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x377b9d,null))[_0xa3ee('0xd')](handleError(_0x377b9d,null));};exports[_0xa3ee('0x18')]=function(_0x4f8c56,_0x3f5d70){return respondWithRpcPromise(_0xa3ee('0x19'),_['merge'](_0x4f8c56[_0xa3ee('0x17')],_0x4f8c56['params']))[_0xa3ee('0x9')](respondWithResult(_0x3f5d70,null))[_0xa3ee('0xd')](handleError(_0x3f5d70,null));};exports[_0xa3ee('0x1a')]=function(_0x1bd196,_0x60b899){return respondWithRpcPromise(_0xa3ee('0x1b'),_[_0xa3ee('0x1c')](_0x1bd196[_0xa3ee('0x17')],_0x1bd196[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x60b899,null))['catch'](handleError(_0x60b899,null));};exports[_0xa3ee('0x1e')]=function(_0x1dca29,_0x157071){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x1dca29[_0xa3ee('0x17')])['then'](respondWithResult(_0x157071,null))[_0xa3ee('0xd')](handleError(_0x157071,null));};exports[_0xa3ee('0x20')]=function(_0x146493,_0xd9a7f8){return respondWithRpcPromise(_0xa3ee('0x1f'),_0x146493[_0xa3ee('0x17')])[_0xa3ee('0x9')](findById(_0x146493[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0xd9a7f8,null))[_0xa3ee('0xd')](handleError(_0xd9a7f8,null));};exports['updateVoiceQueue']=function(_0x5ba571,_0x4abf49){return respondWithRpcPromise(_0xa3ee('0x21'),_['merge'](_0x5ba571[_0xa3ee('0x22')],_0x5ba571[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x4abf49,null))[_0xa3ee('0xd')](handleError(_0x4abf49,null));};exports[_0xa3ee('0x23')]=function(_0x14547d,_0x30ba4e){return respondWithRpcPromise(_0xa3ee('0x24'),_[_0xa3ee('0x1c')](_0x14547d[_0xa3ee('0x17')],_0x14547d['params']))[_0xa3ee('0x9')](respondWithResult(_0x30ba4e,null))['catch'](handleError(_0x30ba4e,null));};exports[_0xa3ee('0x25')]=function(_0x332d61,_0x496839){return respondWithRpcPromise(_0xa3ee('0x26'),_0x332d61['query'])[_0xa3ee('0x9')](respondWithResult(_0x496839,null))['catch'](handleError(_0x496839,null));};exports[_0xa3ee('0x27')]=function(_0x299099,_0x2f803c){return respondWithRpcPromise(_0xa3ee('0x28'),_[_0xa3ee('0x1c')](_0x299099['query'],_0x299099[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x2f803c,null))[_0xa3ee('0xd')](handleError(_0x2f803c,null));};exports['voiceQueuesChannelHangup']=function(_0x1599e4,_0x531f58){return respondWithRpcPromise(_0xa3ee('0x29'),_['merge'](_0x1599e4[_0xa3ee('0x17')],_0x1599e4['params']))[_0xa3ee('0x9')](respondWithResult(_0x531f58,null))[_0xa3ee('0xd')](handleError(_0x531f58,null));};exports[_0xa3ee('0x2a')]=function(_0x45be9b,_0x1717ba){return respondWithRpcPromise(_0xa3ee('0x2b'),_[_0xa3ee('0x1c')](_0x45be9b[_0xa3ee('0x17')],_0x45be9b[_0xa3ee('0x1d')]))[_0xa3ee('0x9')](respondWithResult(_0x1717ba,null))[_0xa3ee('0xd')](handleError(_0x1717ba,null));};exports[_0xa3ee('0x2c')]=function(_0x447efd,_0x595b55){return respondWithRpcPromise(_0xa3ee('0x2d'),_0x447efd[_0xa3ee('0x17')])[_0xa3ee('0x9')](respondWithResult(_0x595b55,null))[_0xa3ee('0xd')](handleError(_0x595b55,null));};exports['outboundChannels']=function(_0x257627,_0x11a721){return respondWithRpcPromise(_0xa3ee('0x2e'),_0x257627['query'])[_0xa3ee('0x9')](respondWithResult(_0x11a721,null))[_0xa3ee('0xd')](handleError(_0x11a721,null));};exports['agents']=function(_0x319c26,_0x3ecbe6){var _0x4ef99a;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')])[_0xa3ee('0x9')](function(_0x2c8873){_0x4ef99a=_0x2c8873;return respondWithRpcPromise(_0xa3ee('0x2f'),_0x319c26[_0xa3ee('0x17')],routingClient);})[_0xa3ee('0x9')](function(_0x3e0eec){return _[_0xa3ee('0x1c')]({},_0x3e0eec,_0x4ef99a);})[_0xa3ee('0x9')](respondWithResult(_0x3ecbe6,null))[_0xa3ee('0xd')](handleError(_0x3ecbe6,null));};exports['agentCapacity']=function(_0x5aa4b3,_0x548534){if(_0x5aa4b3[_0xa3ee('0x22')]&&_0x5aa4b3[_0xa3ee('0x22')]['interaction']&&_0x5aa4b3[_0xa3ee('0x30')]&&_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]){for(var _0x55f47f in _0x5aa4b3[_0xa3ee('0x22')]['interaction']){if(_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0xa3ee('0x32')](_0x55f47f)){db[_0xa3ee('0x33')][_0xa3ee('0x34')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'exitAt':null,'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]&&_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')]?{'$notIn':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f]}:{'$ne':null}}})[_0xa3ee('0x9')](function(_0x25e0fe){var _0x4594e1=moment()['format'](_0xa3ee('0x37'));for(var _0xdca412=0x0,_0x112e80=_0x25e0fe[_0xa3ee('0x36')];_0xdca412<_0x112e80;_0xdca412+=0x1){_0x25e0fe[_0xdca412]['updateAttributes']({'exitAt':_0x4594e1});}});for(var _0x30fcf1=0x0;_0x30fcf1<_0x5aa4b3['body'][_0xa3ee('0x31')][_0x55f47f][_0xa3ee('0x36')];_0x30fcf1+=0x1){db[_0xa3ee('0x33')][_0xa3ee('0x38')]({'where':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')],'type':_0xa3ee('0x35'),'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1],'exitAt':null},'defaults':{'channel':_0x55f47f,'membername':_0x5aa4b3[_0xa3ee('0x30')]['name'],'interface':_[_0xa3ee('0x12')](_0x5aa4b3['user']['interface'])?util[_0xa3ee('0x39')](_0xa3ee('0x3a'),_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x11')]):_0x5aa4b3[_0xa3ee('0x30')][_0xa3ee('0x3b')],'type':_0xa3ee('0x35'),'enterAt':moment()['format'](_0xa3ee('0x37')),'role':_0xa3ee('0x3c'),'internal':_0x5aa4b3['user'][_0xa3ee('0x3d')],'uniqueid':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x31')][_0x55f47f][_0x30fcf1]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0x5aa4b3['params']['id'],'capacity':_0x5aa4b3[_0xa3ee('0x22')][_0xa3ee('0x3e')]},routingClient)[_0xa3ee('0x9')](respondWithResult(_0x548534,null))[_0xa3ee('0xd')](handleError(_0x548534,null));};exports[_0xa3ee('0x3f')]=function(_0x57e654,_0x55678e){return respondWithRpcPromise(_0xa3ee('0x40'),_0x57e654[_0xa3ee('0x17')])['then'](respondWithResult(_0x55678e,null))[_0xa3ee('0xd')](handleError(_0x55678e,null));};exports[_0xa3ee('0x41')]=function(_0x13cd8b,_0x579ec8){return respondWithRpcPromise('Trunks',_0x13cd8b[_0xa3ee('0x17')])['then'](respondWithResult(_0x579ec8,null))[_0xa3ee('0xd')](handleError(_0x579ec8,null));};exports[_0xa3ee('0x42')]=function(_0x5b8e79,_0x4232e0){return respondWithRpcPromise(_0xa3ee('0x43'),_0x5b8e79[_0xa3ee('0x17')])['then'](respondWithResult(_0x4232e0,null))[_0xa3ee('0xd')](handleError(_0x4232e0,null));};exports[_0xa3ee('0x44')]=function(_0x594034,_0x1d832c){return respondWithRpcPromise(_0xa3ee('0x45'),_0x594034[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x1d832c,null))['catch'](handleError(_0x1d832c,null));};exports[_0xa3ee('0x46')]=function(_0x17ac07,_0x4a1a2f){return respondWithRpcPromise(_0xa3ee('0x45'),_0x17ac07[_0xa3ee('0x17')],routingClient)['then'](findById(_0x17ac07['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x4a1a2f,null))[_0xa3ee('0xd')](handleError(_0x4a1a2f,null));};exports[_0xa3ee('0x47')]=function(_0x52b824,_0x11fb6e){return respondWithRpcPromise(_0xa3ee('0x48'),_0x52b824[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x11fb6e,null))[_0xa3ee('0xd')](handleError(_0x11fb6e,null));};exports[_0xa3ee('0x49')]=function(_0x497be4,_0x10f508){return respondWithRpcPromise(_0xa3ee('0x48'),_0x497be4['query'],routingClient)[_0xa3ee('0x9')](findById(_0x497be4[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x10f508,null))[_0xa3ee('0xd')](handleError(_0x10f508,null));};exports[_0xa3ee('0x4a')]=function(_0x330778,_0x4a2255){return respondWithRpcPromise(_0xa3ee('0x4b'),_0x330778[_0xa3ee('0x17')],mailClient)[_0xa3ee('0x9')](respondWithResult(_0x4a2255,null))['catch'](handleError(_0x4a2255,null));};exports[_0xa3ee('0x4c')]=function(_0x13b81b,_0x519f10){return respondWithRpcPromise('OpenchannelQueues',_0x13b81b['query'],routingClient)['then'](respondWithResult(_0x519f10,null))[_0xa3ee('0xd')](handleError(_0x519f10,null));};exports[_0xa3ee('0x4d')]=function(_0x3adafb,_0x2f0424){return respondWithRpcPromise(_0xa3ee('0x4e'),_0x3adafb[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x3adafb['params']['id']))[_0xa3ee('0x9')](respondWithResult(_0x2f0424,null))[_0xa3ee('0xd')](handleError(_0x2f0424,null));};exports[_0xa3ee('0x4f')]=function(_0xaff641,_0x147024){return respondWithRpcPromise('SmsQueues',_0xaff641['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x147024,null))[_0xa3ee('0xd')](handleError(_0x147024,null));};exports[_0xa3ee('0x50')]=function(_0x24613d,_0x16aabe){return respondWithRpcPromise(_0xa3ee('0x51'),_0x24613d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x24613d[_0xa3ee('0x1d')]['id']))[_0xa3ee('0x9')](respondWithResult(_0x16aabe,null))[_0xa3ee('0xd')](handleError(_0x16aabe,null));};exports[_0xa3ee('0x52')]=function(_0x64f353,_0x224790){return respondWithRpcPromise(_0xa3ee('0x53'),_0x64f353['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x224790,null))['catch'](handleError(_0x224790,null));};exports['showWhatsappQueues']=function(_0x2b1c6e,_0x49daf9){return respondWithRpcPromise(_0xa3ee('0x53'),_0x2b1c6e[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](findById(_0x2b1c6e[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x49daf9,null))[_0xa3ee('0xd')](handleError(_0x49daf9,null));};exports[_0xa3ee('0x54')]=function(_0x179ae2,_0x370e3e){return respondWithRpcPromise('FaxQueues',_0x179ae2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x370e3e,null))['catch'](handleError(_0x370e3e,null));};exports[_0xa3ee('0x55')]=function(_0x52a066,_0x4f3aac){return respondWithRpcPromise(_0xa3ee('0x56'),_0x52a066['query'],routingClient)['then'](findById(_0x52a066[_0xa3ee('0x1d')]['id']))['then'](respondWithResult(_0x4f3aac,null))['catch'](handleError(_0x4f3aac,null));};exports[_0xa3ee('0x57')]=function(_0xf8689f,_0x538a9b){return respondWithRpcPromise('FaxAccounts',_0xf8689f['query'])[_0xa3ee('0x9')](respondWithResult(_0x538a9b,null))[_0xa3ee('0xd')](handleError(_0x538a9b,null));};exports[_0xa3ee('0x58')]=function(_0x7844ae,_0x389547){return respondWithRpcPromise(_0xa3ee('0x59'),_0x7844ae['query'],routingClient)['then'](respondWithResult(_0x389547,null))[_0xa3ee('0xd')](handleError(_0x389547,null));};exports[_0xa3ee('0x5a')]=function(_0x42a79e,_0x5675fb){return respondWithRpcPromise(_0xa3ee('0x5b'),_0x42a79e[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x5675fb,null))[_0xa3ee('0xd')](handleError(_0x5675fb,null));};exports[_0xa3ee('0x5c')]=function(_0x3be877,_0x2ad745){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x3be877['query'],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2ad745,null))[_0xa3ee('0xd')](handleError(_0x2ad745,null));};exports[_0xa3ee('0x5e')]=function(_0x37e1c2,_0xbfb429){return respondWithRpcPromise(_0xa3ee('0x5d'),_0x37e1c2[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](function(_0x448f14){if(_0x37e1c2['query']['type']!==undefined){var _0x228671=_(_0x448f14['rows'])[_0xa3ee('0x5f')]([_0x37e1c2[_0xa3ee('0x17')][_0xa3ee('0x60')],_0x37e1c2[_0xa3ee('0x1d')]['id']])['map'](_0xa3ee('0x61'))[_0xa3ee('0x62')]()[_0xa3ee('0x63')]();return _0x448f14[_0xa3ee('0x13')][_0xa3ee('0x5f')](function(_0x4e9473){return _0x228671[_0xa3ee('0x64')](_0x4e9473[_0xa3ee('0x61')])>-0x1;});}else{return _0x448f14[_0xa3ee('0x13')]['filter'](function(_0x3ca523){return _0x3ca523['queue_id']===parseInt(_0x37e1c2[_0xa3ee('0x1d')]['id']);});}})['then'](respondWithResult(_0xbfb429,null))[_0xa3ee('0xd')](handleError(_0xbfb429,null));};exports[_0xa3ee('0x65')]=function(_0x119c3d,_0x140ee0){return respondWithRpcPromise('SmsQueuesWaitingInteractions',_0x119c3d[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x140ee0,null))['catch'](handleError(_0x140ee0,null));};exports[_0xa3ee('0x66')]=function(_0xa82482,_0x44b084){return respondWithRpcPromise(_0xa3ee('0x67'),_0xa82482[_0xa3ee('0x17')],routingClient)['then'](respondWithResult(_0x44b084,null))[_0xa3ee('0xd')](handleError(_0x44b084,null));};exports[_0xa3ee('0x68')]=function(_0x55a6b7,_0x2535ef){return respondWithRpcPromise(_0xa3ee('0x69'),_0x55a6b7[_0xa3ee('0x17')],routingClient)[_0xa3ee('0x9')](respondWithResult(_0x2535ef,null))[_0xa3ee('0xd')](handleError(_0x2535ef,null));};exports[_0xa3ee('0x6a')]=function(_0x31d3ca){return function(_0x329e32,_0x37bde3){var _0x25334c,_0x4f7ace;var _0x21fd56=_[_0xa3ee('0x6b')](_0x31d3ca);var _0x26a124=_0x31d3ca==='chat'?_0xa3ee('0x6c'):'Account';return db[_0x21fd56+_0xa3ee('0x6d')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x329e32['params']['id']}})[_0xa3ee('0x9')](function(_0x44f27b){if(_['isNil'](_0x44f27b)){throw new Error(_0x21fd56+_0xa3ee('0x6f'));}_0x25334c=_0x44f27b;return db[_0x21fd56+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x329e32[_0xa3ee('0x22')][_0xa3ee('0x71')]},'include':[{'model':db[_0x21fd56+_0xa3ee('0x72')],'as':'Interaction'},{'model':db[_0x21fd56+_0x26a124],'as':'Account'}]});})['then'](function(_0x27454a){if(_['isNil'](_0x27454a)){throw new Error(_0x21fd56+_0xa3ee('0x73'));}_0x4f7ace=_0x27454a;return _0x27454a[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x312ad8={'uniqueid':_0x31d3ca+'.'+_0x4f7ace['id']+'.'+_0x4f7ace[_0xa3ee('0x72')]['id'],'FromUserId':_0x329e32[_0xa3ee('0x30')]['id'],'type':_0xa3ee('0x75')};_0x312ad8[_0x21fd56+_0xa3ee('0x76')]=_0x4f7ace['id'];_0x312ad8[_0x21fd56+_0xa3ee('0x77')]=_0x4f7ace[_0xa3ee('0x72')]['id'];_0x312ad8[_0xa3ee('0x78')+_0x21fd56+_0x26a124+'Id']=_0x4f7ace[_0xa3ee('0x79')]['id'];_0x312ad8['To'+_0x21fd56+_0xa3ee('0x7a')]=_0x25334c['id'];return db[_0x21fd56+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x312ad8);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x31d3ca,'interaction':_0x4f7ace[_0xa3ee('0x72')],'message':_0x4f7ace,'account':_0x4f7ace[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':'queue','appdata':_0x25334c[_0xa3ee('0x11')]+','+(_0x4f7ace[_0xa3ee('0x79')][_0xa3ee('0x7e')]||0x12c),'interval':'*,*,*,*'}]},routingClient);})['then'](respondWithResult(_0x37bde3,null))[_0xa3ee('0xd')](handleError(_0x37bde3,null));};};exports[_0xa3ee('0x7f')]=function(_0x591bfa,_0x5b53f1){var _0x24cbc9,_0x157436;if(_[_0xa3ee('0x12')](_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')])){throw new Error(_0xa3ee('0x81'));}var _0x18a74b=_0x591bfa[_0xa3ee('0x22')][_0xa3ee('0x80')];var _0x3e6657=_[_0xa3ee('0x6b')](_0x18a74b);var _0x3236b3=_0x18a74b===_0xa3ee('0x82')?'Website':_0xa3ee('0x79');return db[_0xa3ee('0x83')][_0xa3ee('0x6e')]({'raw':!![],'where':{'id':_0x591bfa[_0xa3ee('0x1d')]['id'],'role':_0xa3ee('0x3c')}})[_0xa3ee('0x9')](function(_0x4cc5e5){if(_['isNil'](_0x4cc5e5)){throw new Error(_0xa3ee('0x84'));}_0x24cbc9=_0x4cc5e5;return db[_0x3e6657+_0xa3ee('0x70')][_0xa3ee('0x6e')]({'where':{'id':_0x591bfa['body'][_0xa3ee('0x71')]},'include':[{'model':db[_0x3e6657+'Interaction'],'as':_0xa3ee('0x72')},{'model':db[_0x3e6657+_0x3236b3],'as':_0xa3ee('0x79')}]});})[_0xa3ee('0x9')](function(_0x10ec99){if(_[_0xa3ee('0x12')](_0x10ec99)){throw new Error(_0x3e6657+_0xa3ee('0x73'));}_0x157436=_0x10ec99;return _0x10ec99[_0xa3ee('0x74')]({'read':0x0,'readAt':null,'UserId':null});})[_0xa3ee('0x9')](function(){var _0x116de1={'uniqueid':_0x18a74b+'.'+_0x157436['id']+'.'+_0x157436[_0xa3ee('0x72')]['id'],'FromUserId':_0x591bfa['user']['id'],'type':'queue','ToUserId':_0x24cbc9['id']};_0x116de1[_0x3e6657+'MessageId']=_0x157436['id'];_0x116de1[_0x3e6657+_0xa3ee('0x77')]=_0x157436['Interaction']['id'];_0x116de1[_0xa3ee('0x78')+_0x3e6657+_0x3236b3+'Id']=_0x157436[_0xa3ee('0x79')]['id'];return db[_0x3e6657+_0xa3ee('0x7b')][_0xa3ee('0x7c')](_0x116de1);})[_0xa3ee('0x9')](function(){return respondWithRpcPromise(_0xa3ee('0x7d'),{'channel':_0x18a74b,'interaction':_0x157436[_0xa3ee('0x72')],'message':_0x157436,'account':_0x157436[_0xa3ee('0x79')],'applications':[{'id':0x0,'priority':0x1,'app':_0xa3ee('0x3c'),'appdata':_0x24cbc9['name']+','+(_0x157436['Account'][_0xa3ee('0x85')]||0x12c),'interval':_0xa3ee('0x86')}]},routingClient);})[_0xa3ee('0x9')](respondWithResult(_0x5b53f1,null))[_0xa3ee('0xd')](handleError(_0x5b53f1,null));};
\ No newline at end of file
index 2fd3922..066bd54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe096=['/:id','/:id/run','post','create','put','update','destroy','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xe096,0x1ab));var _0x6e09=function(_0x1b51ea,_0x394fd9){_0x1b51ea=_0x1b51ea-0x0;var _0x18bbdc=_0xe096[_0x1b51ea];return _0x18bbdc;};'use strict';var multer=require('multer');var util=require(_0x6e09('0x0'));var path=require(_0x6e09('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6e09('0x2')]();var fs_extra=require(_0x6e09('0x3'));var auth=require(_0x6e09('0x4'));var interaction=require(_0x6e09('0x5'));var config=require('../../config/environment');var controller=require('./schedule.controller');router[_0x6e09('0x6')]('/',auth[_0x6e09('0x7')](),controller['index']);router[_0x6e09('0x6')](_0x6e09('0x8'),auth[_0x6e09('0x7')](),controller['show']);router[_0x6e09('0x6')](_0x6e09('0x9'),auth[_0x6e09('0x7')](),controller['run']);router[_0x6e09('0xa')]('/',auth[_0x6e09('0x7')](),controller[_0x6e09('0xb')]);router[_0x6e09('0xc')]('/:id',auth[_0x6e09('0x7')](),controller[_0x6e09('0xd')]);router['delete'](_0x6e09('0x8'),auth[_0x6e09('0x7')](),controller[_0x6e09('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xc4d5=['express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/run','run','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout'];(function(_0x91a9ba,_0x130792){var _0x2afa35=function(_0x42abcc){while(--_0x42abcc){_0x91a9ba['push'](_0x91a9ba['shift']());}};_0x2afa35(++_0x130792);}(_0xc4d5,0x177));var _0x5c4d=function(_0x648163,_0x241576){_0x648163=_0x648163-0x0;var _0x199d4d=_0xc4d5[_0x648163];return _0x199d4d;};'use strict';var multer=require(_0x5c4d('0x0'));var util=require(_0x5c4d('0x1'));var path=require('path');var timeout=require(_0x5c4d('0x2'));var express=require(_0x5c4d('0x3'));var router=express[_0x5c4d('0x4')]();var fs_extra=require(_0x5c4d('0x5'));var auth=require(_0x5c4d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5c4d('0x7'));var controller=require('./schedule.controller');router[_0x5c4d('0x8')]('/',auth[_0x5c4d('0x9')](),controller['index']);router[_0x5c4d('0x8')](_0x5c4d('0xa'),auth['isAuthenticated'](),controller[_0x5c4d('0xb')]);router[_0x5c4d('0x8')](_0x5c4d('0xc'),auth[_0x5c4d('0x9')](),controller[_0x5c4d('0xd')]);router[_0x5c4d('0xe')]('/',auth['isAuthenticated'](),controller[_0x5c4d('0xf')]);router[_0x5c4d('0x10')]('/:id',auth[_0x5c4d('0x9')](),controller[_0x5c4d('0x11')]);router[_0x5c4d('0x12')](_0x5c4d('0xa'),auth[_0x5c4d('0x9')](),controller[_0x5c4d('0x13')]);module[_0x5c4d('0x14')]=router;
\ No newline at end of file
index d71153b..df8af2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa83c=['custom','TEXT','BOOLEAN','sequelize','exports','STRING','DATE','INTEGER','ENUM','years','quarters','days','minutes','pdf','xlsx'];(function(_0x580a67,_0x15fcd3){var _0x2a0ae8=function(_0x9acdea){while(--_0x9acdea){_0x580a67['push'](_0x580a67['shift']());}};_0x2a0ae8(++_0x15fcd3);}(_0xa83c,0x111));var _0xca83=function(_0x8a7e38,_0x473a5d){_0x8a7e38=_0x8a7e38-0x0;var _0x228609=_0xa83c[_0x8a7e38];return _0x228609;};'use strict';var Sequelize=require(_0xca83('0x0'));module[_0xca83('0x1')]={'name':{'type':Sequelize[_0xca83('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'0\x200\x20*\x20*\x20*'},'startAt':{'type':Sequelize[_0xca83('0x3')],'allowNull':![]},'endAt':{'type':Sequelize[_0xca83('0x3')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xca83('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0xca83('0x5')](_0xca83('0x6'),_0xca83('0x7'),'months','weeks',_0xca83('0x8'),'hours',_0xca83('0x9')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0xca83('0x5')]('csv',_0xca83('0xa'),_0xca83('0xb')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0xca83('0xc'),'default'),'allowNull':![],'defaultValue':'custom'},'sendMail':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'email':{'type':Sequelize[_0xca83('0x2')]},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0xca83('0xd')]},'sendIfEmpty':{'type':Sequelize[_0xca83('0xe')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x7257=['INTEGER','ENUM','years','quarters','months','weeks','days','minutes','csv','pdf','xlsx','custom','default','TEXT','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE'];(function(_0x49cbdb,_0x4b85d4){var _0x5b30e6=function(_0x59bc2a){while(--_0x59bc2a){_0x49cbdb['push'](_0x49cbdb['shift']());}};_0x5b30e6(++_0x4b85d4);}(_0x7257,0x1ac));var _0x7725=function(_0x15482e,_0x25b23c){_0x15482e=_0x15482e-0x0;var _0x4a0651=_0x7257[_0x15482e];return _0x4a0651;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x7725('0x0')],'allowNull':![]},'description':{'type':Sequelize[_0x7725('0x0')]},'active':{'type':Sequelize[_0x7725('0x1')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x7725('0x0')],'allowNull':![],'defaultValue':_0x7725('0x2')},'startAt':{'type':Sequelize[_0x7725('0x3')],'allowNull':![]},'endAt':{'type':Sequelize['DATE'],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x7725('0x4')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x7725('0x5')](_0x7725('0x6'),_0x7725('0x7'),_0x7725('0x8'),_0x7725('0x9'),_0x7725('0xa'),'hours',_0x7725('0xb')),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize['ENUM'](_0x7725('0xc'),_0x7725('0xd'),_0x7725('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize['ENUM'](_0x7725('0xf'),_0x7725('0x10')),'allowNull':![],'defaultValue':_0x7725('0xf')},'sendMail':{'type':Sequelize[_0x7725('0x1')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x7725('0x11')]},'bcc':{'type':Sequelize[_0x7725('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x7725('0x1')],'defaultValue':!![]}};
\ No newline at end of file
index 636a090..083b23c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff4d=['keys','fields','includeAll','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','Content-Range','json','then','destroy','get','Scheduler','error','stack','name','send','map','Schedule','rawAttributes','key','model','query','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','include','catch','show','params'];(function(_0xdb66e5,_0x3c7910){var _0x23a039=function(_0x4473a1){while(--_0x4473a1){_0xdb66e5['push'](_0xdb66e5['shift']());}};_0x23a039(++_0x3c7910);}(_0xff4d,0xb1));var _0xdff4=function(_0x5384ae,_0x32e603){_0x5384ae=_0x5384ae-0x0;var _0x4bcf2d=_0xff4d[_0x5384ae];return _0x4bcf2d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdff4('0x0'));var zipdir=require(_0xdff4('0x1'));var jsonpatch=require(_0xdff4('0x2'));var rp=require(_0xdff4('0x3'));var moment=require(_0xdff4('0x4'));var BPromise=require(_0xdff4('0x5'));var Mustache=require(_0xdff4('0x6'));var util=require(_0xdff4('0x7'));var path=require('path');var sox=require(_0xdff4('0x8'));var csv=require(_0xdff4('0x9'));var ejs=require(_0xdff4('0xa'));var fs=require('fs');var fs_extra=require(_0xdff4('0xb'));var _=require(_0xdff4('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdff4('0xd'));var deskjs=require(_0xdff4('0xe'));var toCsv=require(_0xdff4('0x9'));var querystring=require(_0xdff4('0xf'));var Papa=require(_0xdff4('0x10'));var Redis=require(_0xdff4('0x11'));var authService=require(_0xdff4('0x12'));var qs=require(_0xdff4('0x13'));var as=require(_0xdff4('0x14'));var hardwareService=require(_0xdff4('0x15'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdff4('0x16'));var licenseUtil=require(_0xdff4('0x17'));var db=require(_0xdff4('0x18'))['db'];function respondWithStatusCode(_0x53ee0d,_0x260eaf){_0x260eaf=_0x260eaf||0xcc;return function(_0x404354){if(_0x404354){return _0x53ee0d[_0xdff4('0x19')](_0x260eaf);}return _0x53ee0d[_0xdff4('0x1a')](_0x260eaf)[_0xdff4('0x1b')]();};}function respondWithResult(_0x16fbd5,_0x1601da){_0x1601da=_0x1601da||0xc8;return function(_0x4f0691){if(_0x4f0691){return _0x16fbd5[_0xdff4('0x1a')](_0x1601da)['json'](_0x4f0691);}};}function respondWithFilteredResult(_0x1bbf37,_0x2ca551){return function(_0x5c55de){if(_0x5c55de){var _0x3524c1=typeof _0x2ca551['offset']===_0xdff4('0x1c')&&typeof _0x2ca551[_0xdff4('0x1d')]===_0xdff4('0x1c');var _0x439555=_0x5c55de[_0xdff4('0x1e')];var _0xac3efd=_0x3524c1?0x0:_0x2ca551['offset'];var _0x234c90=_0x3524c1?_0x5c55de[_0xdff4('0x1e')]:_0x2ca551[_0xdff4('0x1f')]+_0x2ca551[_0xdff4('0x1d')];var _0x55d952;if(_0x234c90>=_0x439555){_0x234c90=_0x439555;_0x55d952=0xc8;}else{_0x55d952=0xce;}_0x1bbf37[_0xdff4('0x1a')](_0x55d952);return _0x1bbf37['set'](_0xdff4('0x20'),_0xac3efd+'-'+_0x234c90+'/'+_0x439555)[_0xdff4('0x21')](_0x5c55de);}return null;};}function patchUpdates(_0x30de81){return function(_0x38f319){try{jsonpatch['apply'](_0x38f319,_0x30de81,!![]);}catch(_0x1814d6){return BPromise['reject'](_0x1814d6);}return _0x38f319['save']();};}function saveUpdates(_0x36b42a,_0x5eb063){return function(_0x39938c){if(_0x39938c){return _0x39938c['update'](_0x36b42a)[_0xdff4('0x22')](function(_0x546a35){return _0x546a35;});}return null;};}function removeEntity(_0xf14e43,_0x2b331b){return function(_0x7dee5e){if(_0x7dee5e){return _0x7dee5e[_0xdff4('0x23')]()[_0xdff4('0x22')](function(){var _0xffdee1=_0x7dee5e[_0xdff4('0x24')]({'plain':!![]});var _0x3d243a=_0xdff4('0x25');return db['UserProfileResource']['destroy']({'where':{'type':_0x3d243a,'resourceId':_0xffdee1['id']}})[_0xdff4('0x22')](function(){return _0x7dee5e;});})[_0xdff4('0x22')](function(){_0xf14e43[_0xdff4('0x1a')](0xcc)[_0xdff4('0x1b')]();});}};}function handleEntityNotFound(_0x2b889f,_0x56c629){return function(_0x328dd7){if(!_0x328dd7){_0x2b889f['sendStatus'](0x194);}return _0x328dd7;};}function handleError(_0x1cba7e,_0x5ba017){_0x5ba017=_0x5ba017||0x1f4;return function(_0x132a28){logger[_0xdff4('0x26')](_0x132a28[_0xdff4('0x27')]);if(_0x132a28[_0xdff4('0x28')]){delete _0x132a28['name'];}_0x1cba7e[_0xdff4('0x1a')](_0x5ba017)[_0xdff4('0x29')](_0x132a28);};}exports['index']=function(_0x148063,_0x50ad36){var _0x40712d={},_0x3fcd38={},_0x271a5b={'count':0x0,'rows':[]};var _0x481542=_[_0xdff4('0x2a')](db[_0xdff4('0x2b')][_0xdff4('0x2c')],function(_0x44449b){return{'name':_0x44449b['fieldName'],'type':_0x44449b['type'][_0xdff4('0x2d')]};});_0x3fcd38[_0xdff4('0x2e')]=_[_0xdff4('0x2a')](_0x481542,'name');_0x3fcd38['query']=_['keys'](_0x148063[_0xdff4('0x2f')]);_0x3fcd38[_0xdff4('0x30')]=_[_0xdff4('0x31')](_0x3fcd38[_0xdff4('0x2e')],_0x3fcd38[_0xdff4('0x2f')]);_0x40712d[_0xdff4('0x32')]=_['intersection'](_0x3fcd38['model'],qs['fields'](_0x148063[_0xdff4('0x2f')]['fields']));_0x40712d['attributes']=_0x40712d['attributes'][_0xdff4('0x33')]?_0x40712d[_0xdff4('0x32')]:_0x3fcd38[_0xdff4('0x2e')];if(!_0x148063['query'][_0xdff4('0x34')](_0xdff4('0x35'))){_0x40712d[_0xdff4('0x1d')]=qs[_0xdff4('0x1d')](_0x148063[_0xdff4('0x2f')][_0xdff4('0x1d')]);_0x40712d['offset']=qs[_0xdff4('0x1f')](_0x148063[_0xdff4('0x2f')][_0xdff4('0x1f')]);}_0x40712d[_0xdff4('0x36')]=qs['sort'](_0x148063[_0xdff4('0x2f')][_0xdff4('0x37')]);_0x40712d[_0xdff4('0x38')]=qs[_0xdff4('0x30')](_[_0xdff4('0x39')](_0x148063[_0xdff4('0x2f')],_0x3fcd38['filters']),_0x481542);if(_0x148063['query'][_0xdff4('0x3a')]){_0x40712d['where']=_[_0xdff4('0x3b')](_0x40712d[_0xdff4('0x38')],{'$or':_['map'](_0x481542,function(_0x31fece){if(_0x31fece[_0xdff4('0x3c')]!==_0xdff4('0x3d')){var _0x313134={};_0x313134[_0x31fece[_0xdff4('0x28')]]={'$like':'%'+_0x148063[_0xdff4('0x2f')][_0xdff4('0x3a')]+'%'};return _0x313134;}})});}_0x40712d=_[_0xdff4('0x3b')]({},_0x40712d,_0x148063['options']);var _0x24980e={'where':_0x40712d[_0xdff4('0x38')]};return db[_0xdff4('0x2b')]['count'](_0x24980e)[_0xdff4('0x22')](function(_0x48b36d){_0x271a5b[_0xdff4('0x1e')]=_0x48b36d;if(_0x148063['query']['includeAll']){_0x40712d[_0xdff4('0x3e')]=[{'all':!![]}];}return db['Schedule']['findAll'](_0x40712d);})[_0xdff4('0x22')](function(_0x2bd2){_0x271a5b['rows']=_0x2bd2;return _0x271a5b;})[_0xdff4('0x22')](respondWithFilteredResult(_0x50ad36,_0x40712d))[_0xdff4('0x3f')](handleError(_0x50ad36,null));};exports[_0xdff4('0x40')]=function(_0x3262d0,_0x4c401d){var _0x247fc5={'raw':![],'where':{'id':_0x3262d0[_0xdff4('0x41')]['id']}},_0x30d268={};_0x30d268[_0xdff4('0x2e')]=_[_0xdff4('0x42')](db[_0xdff4('0x2b')]['rawAttributes']);_0x30d268[_0xdff4('0x2f')]=_[_0xdff4('0x42')](_0x3262d0[_0xdff4('0x2f')]);_0x30d268[_0xdff4('0x30')]=_[_0xdff4('0x31')](_0x30d268[_0xdff4('0x2e')],_0x30d268[_0xdff4('0x2f')]);_0x247fc5[_0xdff4('0x32')]=_[_0xdff4('0x31')](_0x30d268['model'],qs[_0xdff4('0x43')](_0x3262d0[_0xdff4('0x2f')][_0xdff4('0x43')]));_0x247fc5['attributes']=_0x247fc5[_0xdff4('0x32')]['length']?_0x247fc5[_0xdff4('0x32')]:_0x30d268['model'];if(_0x3262d0[_0xdff4('0x2f')][_0xdff4('0x44')]){_0x247fc5[_0xdff4('0x3e')]=[{'all':!![]}];}_0x247fc5=_[_0xdff4('0x3b')]({},_0x247fc5,_0x3262d0[_0xdff4('0x45')]);return db['Schedule'][_0xdff4('0x46')](_0x247fc5)['then'](handleEntityNotFound(_0x4c401d,null))[_0xdff4('0x22')](respondWithResult(_0x4c401d,null))[_0xdff4('0x3f')](handleError(_0x4c401d,null));};exports['create']=function(_0x55e55a,_0x53756f){return db[_0xdff4('0x2b')][_0xdff4('0x47')](_0x55e55a[_0xdff4('0x48')],{})[_0xdff4('0x22')](function(_0x2b2bd3){var _0x5aa58b=_0x55e55a[_0xdff4('0x49')]['get']({'plain':!![]});if(!_0x5aa58b)throw new Error(_0xdff4('0x4a'));if(_0x5aa58b[_0xdff4('0x4b')]==='user'){var _0x2aed78=_0x2b2bd3[_0xdff4('0x24')]({'plain':!![]});var _0x4f7720=_0xdff4('0x25');return db['UserProfileSection']['find']({'where':{'name':_0x4f7720,'userProfileId':_0x5aa58b[_0xdff4('0x4c')]},'raw':!![]})['then'](function(_0x2aa320){if(_0x2aa320&&_0x2aa320[_0xdff4('0x4d')]===0x0){return db['UserProfileResource']['create']({'name':_0x2aed78['name'],'resourceId':_0x2aed78['id'],'type':_0x2aa320['name'],'sectionId':_0x2aa320['id']},{})[_0xdff4('0x22')](function(){return _0x2b2bd3;});}else{return _0x2b2bd3;}})[_0xdff4('0x3f')](function(_0x255eec){logger[_0xdff4('0x26')](_0xdff4('0x4e'),_0x255eec);throw _0x255eec;});}return _0x2b2bd3;})[_0xdff4('0x22')](respondWithResult(_0x53756f,0xc9))[_0xdff4('0x3f')](handleError(_0x53756f,null));};exports['update']=function(_0x3af38e,_0x47e235){if(_0x3af38e[_0xdff4('0x48')]['id']){delete _0x3af38e[_0xdff4('0x48')]['id'];}return db[_0xdff4('0x2b')][_0xdff4('0x46')]({'where':{'id':_0x3af38e['params']['id']}})[_0xdff4('0x22')](handleEntityNotFound(_0x47e235,null))[_0xdff4('0x22')](saveUpdates(_0x3af38e[_0xdff4('0x48')],null))[_0xdff4('0x22')](respondWithResult(_0x47e235,null))[_0xdff4('0x3f')](handleError(_0x47e235,null));};exports[_0xdff4('0x23')]=function(_0x5db266,_0x33a61d){return db['Schedule'][_0xdff4('0x46')]({'where':{'id':_0x5db266[_0xdff4('0x41')]['id']}})[_0xdff4('0x22')](handleEntityNotFound(_0x33a61d,null))[_0xdff4('0x22')](removeEntity(_0x33a61d,null))[_0xdff4('0x3f')](handleError(_0x33a61d,null));};exports[_0xdff4('0x4f')]=function(_0xdc0d99,_0x5d92b1,_0x1fd331){var _0x439a46=require(_0xdff4('0x50'));return db[_0xdff4('0x2b')]['find']({'where':{'id':_0xdc0d99[_0xdff4('0x41')]['id']},'raw':!![]})[_0xdff4('0x22')](handleEntityNotFound(_0x5d92b1,null))[_0xdff4('0x22')](function(){_0x439a46[_0xdff4('0x4f')](_0xdc0d99[_0xdff4('0x41')]['id']);})[_0xdff4('0x22')](respondWithStatusCode(_0x5d92b1,null))[_0xdff4('0x3f')](handleError(_0x5d92b1,null));};
\ No newline at end of file
+var _0xb136=['attributes','fields','length','hasOwnProperty','order','sort','where','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','find','run','../../config/schedule','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','offset','count','apply','save','then','destroy','get','UserProfileResource','error','name','index','map','Schedule','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection'];(function(_0x389196,_0x469071){var _0x39e0ba=function(_0xd109dd){while(--_0xd109dd){_0x389196['push'](_0x389196['shift']());}};_0x39e0ba(++_0x469071);}(_0xb136,0x6c));var _0x6b13=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb136[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0x6b13('0x0'));var rimraf=require(_0x6b13('0x1'));var zipdir=require(_0x6b13('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b13('0x3'));var moment=require(_0x6b13('0x4'));var BPromise=require(_0x6b13('0x5'));var Mustache=require(_0x6b13('0x6'));var util=require('util');var path=require(_0x6b13('0x7'));var sox=require(_0x6b13('0x8'));var csv=require(_0x6b13('0x9'));var ejs=require(_0x6b13('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6b13('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x6b13('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x6b13('0x9'));var querystring=require(_0x6b13('0xd'));var Papa=require(_0x6b13('0xe'));var Redis=require(_0x6b13('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x6b13('0x10'));var as=require(_0x6b13('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x6b13('0x12'))(_0x6b13('0x13'));var utils=require(_0x6b13('0x14'));var config=require(_0x6b13('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6b13('0x16'))['db'];function respondWithStatusCode(_0x3ebd6c,_0x1b41fa){_0x1b41fa=_0x1b41fa||0xcc;return function(_0x34d971){if(_0x34d971){return _0x3ebd6c[_0x6b13('0x17')](_0x1b41fa);}return _0x3ebd6c[_0x6b13('0x18')](_0x1b41fa)[_0x6b13('0x19')]();};}function respondWithResult(_0x27e2a4,_0x42cf7d){_0x42cf7d=_0x42cf7d||0xc8;return function(_0x429ae0){if(_0x429ae0){return _0x27e2a4[_0x6b13('0x18')](_0x42cf7d)[_0x6b13('0x1a')](_0x429ae0);}};}function respondWithFilteredResult(_0x3c862b,_0x38b2c2){return function(_0x27ad17){if(_0x27ad17){var _0x392071=typeof _0x38b2c2['offset']==='undefined'&&typeof _0x38b2c2[_0x6b13('0x1b')]==='undefined';var _0x4c95ba=_0x27ad17['count'];var _0x10f406=_0x392071?0x0:_0x38b2c2[_0x6b13('0x1c')];var _0x443584=_0x392071?_0x27ad17[_0x6b13('0x1d')]:_0x38b2c2[_0x6b13('0x1c')]+_0x38b2c2['limit'];var _0x22b3fe;if(_0x443584>=_0x4c95ba){_0x443584=_0x4c95ba;_0x22b3fe=0xc8;}else{_0x22b3fe=0xce;}_0x3c862b[_0x6b13('0x18')](_0x22b3fe);return _0x3c862b['set']('Content-Range',_0x10f406+'-'+_0x443584+'/'+_0x4c95ba)[_0x6b13('0x1a')](_0x27ad17);}return null;};}function patchUpdates(_0x21505f){return function(_0x328841){try{jsonpatch[_0x6b13('0x1e')](_0x328841,_0x21505f,!![]);}catch(_0x1800d8){return BPromise['reject'](_0x1800d8);}return _0x328841[_0x6b13('0x1f')]();};}function saveUpdates(_0x561fc3,_0x5f54bd){return function(_0x3952cb){if(_0x3952cb){return _0x3952cb['update'](_0x561fc3)[_0x6b13('0x20')](function(_0x309ab9){return _0x309ab9;});}return null;};}function removeEntity(_0x1c4494,_0x20e1c6){return function(_0x6308ed){if(_0x6308ed){return _0x6308ed[_0x6b13('0x21')]()[_0x6b13('0x20')](function(){var _0xda197b=_0x6308ed[_0x6b13('0x22')]({'plain':!![]});var _0x402514='Scheduler';return db[_0x6b13('0x23')][_0x6b13('0x21')]({'where':{'type':_0x402514,'resourceId':_0xda197b['id']}})[_0x6b13('0x20')](function(){return _0x6308ed;});})[_0x6b13('0x20')](function(){_0x1c4494[_0x6b13('0x18')](0xcc)[_0x6b13('0x19')]();});}};}function handleEntityNotFound(_0x37f59e,_0x519100){return function(_0x5b1631){if(!_0x5b1631){_0x37f59e[_0x6b13('0x17')](0x194);}return _0x5b1631;};}function handleError(_0x38fed4,_0xed8bcb){_0xed8bcb=_0xed8bcb||0x1f4;return function(_0x208f1f){logger[_0x6b13('0x24')](_0x208f1f['stack']);if(_0x208f1f[_0x6b13('0x25')]){delete _0x208f1f[_0x6b13('0x25')];}_0x38fed4['status'](_0xed8bcb)['send'](_0x208f1f);};}exports[_0x6b13('0x26')]=function(_0x515984,_0x317301){var _0x274c6c={},_0x4825db={},_0x56797e={'count':0x0,'rows':[]};var _0x41aea3=_[_0x6b13('0x27')](db[_0x6b13('0x28')][_0x6b13('0x29')],function(_0x1c3d12){return{'name':_0x1c3d12[_0x6b13('0x2a')],'type':_0x1c3d12[_0x6b13('0x2b')][_0x6b13('0x2c')]};});_0x4825db[_0x6b13('0x2d')]=_[_0x6b13('0x27')](_0x41aea3,_0x6b13('0x25'));_0x4825db[_0x6b13('0x2e')]=_[_0x6b13('0x2f')](_0x515984['query']);_0x4825db[_0x6b13('0x30')]=_[_0x6b13('0x31')](_0x4825db[_0x6b13('0x2d')],_0x4825db[_0x6b13('0x2e')]);_0x274c6c[_0x6b13('0x32')]=_[_0x6b13('0x31')](_0x4825db[_0x6b13('0x2d')],qs[_0x6b13('0x33')](_0x515984['query']['fields']));_0x274c6c['attributes']=_0x274c6c[_0x6b13('0x32')][_0x6b13('0x34')]?_0x274c6c[_0x6b13('0x32')]:_0x4825db[_0x6b13('0x2d')];if(!_0x515984[_0x6b13('0x2e')][_0x6b13('0x35')]('nolimit')){_0x274c6c[_0x6b13('0x1b')]=qs['limit'](_0x515984[_0x6b13('0x2e')][_0x6b13('0x1b')]);_0x274c6c['offset']=qs[_0x6b13('0x1c')](_0x515984[_0x6b13('0x2e')][_0x6b13('0x1c')]);}_0x274c6c[_0x6b13('0x36')]=qs[_0x6b13('0x37')](_0x515984[_0x6b13('0x2e')][_0x6b13('0x37')]);_0x274c6c[_0x6b13('0x38')]=qs[_0x6b13('0x30')](_['pick'](_0x515984[_0x6b13('0x2e')],_0x4825db[_0x6b13('0x30')]),_0x41aea3);if(_0x515984[_0x6b13('0x2e')][_0x6b13('0x39')]){_0x274c6c['where']=_['merge'](_0x274c6c[_0x6b13('0x38')],{'$or':_[_0x6b13('0x27')](_0x41aea3,function(_0x9e24a6){if(_0x9e24a6[_0x6b13('0x2b')]!=='VIRTUAL'){var _0x2a53b2={};_0x2a53b2[_0x9e24a6[_0x6b13('0x25')]]={'$like':'%'+_0x515984['query'][_0x6b13('0x39')]+'%'};return _0x2a53b2;}})});}_0x274c6c=_[_0x6b13('0x3a')]({},_0x274c6c,_0x515984['options']);var _0x146b56={'where':_0x274c6c[_0x6b13('0x38')]};return db[_0x6b13('0x28')][_0x6b13('0x1d')](_0x146b56)[_0x6b13('0x20')](function(_0x504b05){_0x56797e[_0x6b13('0x1d')]=_0x504b05;if(_0x515984['query'][_0x6b13('0x3b')]){_0x274c6c[_0x6b13('0x3c')]=[{'all':!![]}];}return db[_0x6b13('0x28')][_0x6b13('0x3d')](_0x274c6c);})['then'](function(_0x8d23c9){_0x56797e[_0x6b13('0x3e')]=_0x8d23c9;return _0x56797e;})[_0x6b13('0x20')](respondWithFilteredResult(_0x317301,_0x274c6c))[_0x6b13('0x3f')](handleError(_0x317301,null));};exports[_0x6b13('0x40')]=function(_0x2ba6c0,_0x50dd0b){var _0x57cf77={'raw':![],'where':{'id':_0x2ba6c0[_0x6b13('0x41')]['id']}},_0x78deff={};_0x78deff[_0x6b13('0x2d')]=_[_0x6b13('0x2f')](db[_0x6b13('0x28')][_0x6b13('0x29')]);_0x78deff['query']=_[_0x6b13('0x2f')](_0x2ba6c0['query']);_0x78deff[_0x6b13('0x30')]=_[_0x6b13('0x31')](_0x78deff[_0x6b13('0x2d')],_0x78deff[_0x6b13('0x2e')]);_0x57cf77[_0x6b13('0x32')]=_[_0x6b13('0x31')](_0x78deff['model'],qs['fields'](_0x2ba6c0['query'][_0x6b13('0x33')]));_0x57cf77[_0x6b13('0x32')]=_0x57cf77[_0x6b13('0x32')][_0x6b13('0x34')]?_0x57cf77['attributes']:_0x78deff['model'];if(_0x2ba6c0[_0x6b13('0x2e')][_0x6b13('0x3b')]){_0x57cf77[_0x6b13('0x3c')]=[{'all':!![]}];}_0x57cf77=_[_0x6b13('0x3a')]({},_0x57cf77,_0x2ba6c0[_0x6b13('0x42')]);return db[_0x6b13('0x28')]['find'](_0x57cf77)[_0x6b13('0x20')](handleEntityNotFound(_0x50dd0b,null))[_0x6b13('0x20')](respondWithResult(_0x50dd0b,null))['catch'](handleError(_0x50dd0b,null));};exports[_0x6b13('0x43')]=function(_0x1341ea,_0x7c84c8){return db['Schedule']['create'](_0x1341ea['body'],{})['then'](function(_0x20bf48){var _0x411cb8=_0x1341ea['user']['get']({'plain':!![]});if(!_0x411cb8)throw new Error(_0x6b13('0x44'));if(_0x411cb8[_0x6b13('0x45')]==='user'){var _0x29abea=_0x20bf48[_0x6b13('0x22')]({'plain':!![]});var _0x44588b=_0x6b13('0x46');return db[_0x6b13('0x47')]['find']({'where':{'name':_0x44588b,'userProfileId':_0x411cb8[_0x6b13('0x48')]},'raw':!![]})[_0x6b13('0x20')](function(_0x344108){if(_0x344108&&_0x344108['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x29abea[_0x6b13('0x25')],'resourceId':_0x29abea['id'],'type':_0x344108[_0x6b13('0x25')],'sectionId':_0x344108['id']},{})[_0x6b13('0x20')](function(){return _0x20bf48;});}else{return _0x20bf48;}})[_0x6b13('0x3f')](function(_0x2dbf81){logger[_0x6b13('0x24')](_0x6b13('0x49'),_0x2dbf81);throw _0x2dbf81;});}return _0x20bf48;})['then'](respondWithResult(_0x7c84c8,0xc9))[_0x6b13('0x3f')](handleError(_0x7c84c8,null));};exports[_0x6b13('0x4a')]=function(_0xc10c3f,_0x1e5363){if(_0xc10c3f[_0x6b13('0x4b')]['id']){delete _0xc10c3f[_0x6b13('0x4b')]['id'];}return db[_0x6b13('0x28')][_0x6b13('0x4c')]({'where':{'id':_0xc10c3f[_0x6b13('0x41')]['id']}})[_0x6b13('0x20')](handleEntityNotFound(_0x1e5363,null))[_0x6b13('0x20')](saveUpdates(_0xc10c3f[_0x6b13('0x4b')],null))['then'](respondWithResult(_0x1e5363,null))['catch'](handleError(_0x1e5363,null));};exports[_0x6b13('0x21')]=function(_0x15b079,_0x283612){return db['Schedule'][_0x6b13('0x4c')]({'where':{'id':_0x15b079[_0x6b13('0x41')]['id']}})[_0x6b13('0x20')](handleEntityNotFound(_0x283612,null))[_0x6b13('0x20')](removeEntity(_0x283612,null))['catch'](handleError(_0x283612,null));};exports[_0x6b13('0x4d')]=function(_0x8bbf10,_0x310a68,_0x245900){var _0x1351a1=require(_0x6b13('0x4e'));return db['Schedule'][_0x6b13('0x4c')]({'where':{'id':_0x8bbf10[_0x6b13('0x41')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x310a68,null))['then'](function(){_0x1351a1['run'](_0x8bbf10[_0x6b13('0x41')]['id']);})['then'](respondWithStatusCode(_0x310a68,null))[_0x6b13('0x3f')](handleError(_0x310a68,null));};
\ No newline at end of file
index db96818..e561ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f08=['../../config/logger','api','bluebird','request-promise','path','rimraf','./schedule.attributes','exports','define','Schedule','tools_schedules','lodash','util'];(function(_0x57474e,_0x4178b8){var _0xfaae8c=function(_0x2e34d1){while(--_0x2e34d1){_0x57474e['push'](_0x57474e['shift']());}};_0xfaae8c(++_0x4178b8);}(_0x4f08,0x10f));var _0x84f0=function(_0x16fb70,_0x3e97f1){_0x16fb70=_0x16fb70-0x0;var _0x2e1aa1=_0x4f08[_0x16fb70];return _0x2e1aa1;};'use strict';var _=require(_0x84f0('0x0'));var util=require(_0x84f0('0x1'));var logger=require(_0x84f0('0x2'))(_0x84f0('0x3'));var moment=require('moment');var BPromise=require(_0x84f0('0x4'));var rp=require(_0x84f0('0x5'));var fs=require('fs');var path=require(_0x84f0('0x6'));var rimraf=require(_0x84f0('0x7'));var config=require('../../config/environment');var attributes=require(_0x84f0('0x8'));module[_0x84f0('0x9')]=function(_0x117089,_0x271c2d){return _0x117089[_0x84f0('0xa')](_0x84f0('0xb'),attributes,{'tableName':_0x84f0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcdad=['lodash','util','moment','bluebird','request-promise','rimraf','./schedule.attributes','define','Schedule','tools_schedules'];(function(_0x47b58b,_0x41a189){var _0x46bebe=function(_0x22bbfa){while(--_0x22bbfa){_0x47b58b['push'](_0x47b58b['shift']());}};_0x46bebe(++_0x41a189);}(_0xcdad,0x19a));var _0xdcda=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0xcdad[_0x382a62];return _0x490a25;};'use strict';var _=require(_0xdcda('0x0'));var util=require(_0xdcda('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xdcda('0x2'));var BPromise=require(_0xdcda('0x3'));var rp=require(_0xdcda('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdcda('0x5'));var config=require('../../config/environment');var attributes=require(_0xdcda('0x6'));module['exports']=function(_0x3f32f7,_0xfe998){return _0x3f32f7[_0xdcda('0x7')](_0xdcda('0x8'),attributes,{'tableName':_0xdcda('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d185c79..a344e14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5724=['request\x20sent','debug','stringify','error','message','catch','lodash','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Schedule,\x20%s,\x20%s'];(function(_0x1d6f78,_0x714918){var _0x1f335e=function(_0x1b8b19){while(--_0x1b8b19){_0x1d6f78['push'](_0x1d6f78['shift']());}};_0x1f335e(++_0x714918);}(_0x5724,0x1b6));var _0x4572=function(_0x50288c,_0x2b9a31){_0x50288c=_0x50288c-0x0;var _0x50de60=_0x5724[_0x50288c];return _0x50de60;};'use strict';var _=require(_0x4572('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x4572('0x1'));var rs=require(_0x4572('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x4572('0x3'));var logger=require(_0x4572('0x4'))(_0x4572('0x5'));var config=require(_0x4572('0x6'));var jayson=require(_0x4572('0x7'));var client=jayson['client'][_0x4572('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x31f712,_0x18fa4c,_0x491126){return new BPromise(function(_0x5ec596,_0x2b7a72){return client[_0x4572('0x9')](_0x31f712,_0x491126)[_0x4572('0xa')](function(_0x2b24ea){logger['info'](_0x4572('0xb'),_0x18fa4c,_0x4572('0xc'));logger[_0x4572('0xd')]('Schedule,\x20%s,\x20%s,\x20%s',_0x18fa4c,'request\x20sent',JSON[_0x4572('0xe')](_0x2b24ea));if(_0x2b24ea[_0x4572('0xf')]){if(_0x2b24ea[_0x4572('0xf')]['code']===0x1f4){logger['error'](_0x4572('0xb'),_0x18fa4c,_0x2b24ea[_0x4572('0xf')]['message']);return _0x2b7a72(_0x2b24ea[_0x4572('0xf')][_0x4572('0x10')]);}logger[_0x4572('0xf')](_0x4572('0xb'),_0x18fa4c,_0x2b24ea[_0x4572('0xf')][_0x4572('0x10')]);return _0x5ec596(_0x2b24ea[_0x4572('0xf')][_0x4572('0x10')]);}else{logger['info']('Schedule,\x20%s,\x20%s',_0x18fa4c,_0x4572('0xc'));_0x5ec596(_0x2b24ea['result'][_0x4572('0x10')]);}})[_0x4572('0x11')](function(_0x329783){logger[_0x4572('0xf')](_0x4572('0xb'),_0x18fa4c,_0x329783);_0x2b7a72(_0x329783);});});}
\ No newline at end of file
+var _0xbc7a=['then','info','Schedule,\x20%s,\x20%s','request\x20sent','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request'];(function(_0x4daeb6,_0x3316d5){var _0x38c788=function(_0x1316d2){while(--_0x1316d2){_0x4daeb6['push'](_0x4daeb6['shift']());}};_0x38c788(++_0x3316d5);}(_0xbc7a,0x1d7));var _0xabc7=function(_0x38f7a7,_0x5ae856){_0x38f7a7=_0x38f7a7-0x0;var _0x4cfaba=_0xbc7a[_0x38f7a7];return _0x4cfaba;};'use strict';var _=require(_0xabc7('0x0'));var util=require(_0xabc7('0x1'));var moment=require(_0xabc7('0x2'));var BPromise=require(_0xabc7('0x3'));var rs=require(_0xabc7('0x4'));var fs=require('fs');var Redis=require(_0xabc7('0x5'));var db=require(_0xabc7('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xabc7('0x7'));var jayson=require(_0xabc7('0x8'));var client=jayson[_0xabc7('0x9')][_0xabc7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1499c6,_0xfed74c,_0x994fad){return new BPromise(function(_0x417534,_0x23d33d){return client[_0xabc7('0xb')](_0x1499c6,_0x994fad)[_0xabc7('0xc')](function(_0x115b2d){logger[_0xabc7('0xd')](_0xabc7('0xe'),_0xfed74c,_0xabc7('0xf'));logger['debug'](_0xabc7('0x10'),_0xfed74c,'request\x20sent',JSON[_0xabc7('0x11')](_0x115b2d));if(_0x115b2d[_0xabc7('0x12')]){if(_0x115b2d['error'][_0xabc7('0x13')]===0x1f4){logger[_0xabc7('0x12')](_0xabc7('0xe'),_0xfed74c,_0x115b2d[_0xabc7('0x12')]['message']);return _0x23d33d(_0x115b2d[_0xabc7('0x12')]['message']);}logger[_0xabc7('0x12')](_0xabc7('0xe'),_0xfed74c,_0x115b2d[_0xabc7('0x12')][_0xabc7('0x14')]);return _0x417534(_0x115b2d[_0xabc7('0x12')]['message']);}else{logger[_0xabc7('0xd')](_0xabc7('0xe'),_0xfed74c,_0xabc7('0xf'));_0x417534(_0x115b2d['result']['message']);}})['catch'](function(_0x1df755){logger['error'](_0xabc7('0xe'),_0xfed74c,_0x1df755);_0x23d33d(_0x1df755);});});}
\ No newline at end of file
index 5f1844b..d438f7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae98=['multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./screenRecording.controller','get','index','isAuthenticated','describe','show','/:id/download','download','post','create','put','/:id','delete','destroy','exports'];(function(_0x3cd93c,_0x44307b){var _0x2fc1cb=function(_0x4d753b){while(--_0x4d753b){_0x3cd93c['push'](_0x3cd93c['shift']());}};_0x2fc1cb(++_0x44307b);}(_0xae98,0x1e4));var _0x8ae9=function(_0x4504b9,_0x3659af){_0x4504b9=_0x4504b9-0x0;var _0x3bc27d=_0xae98[_0x4504b9];return _0x3bc27d;};'use strict';var multer=require(_0x8ae9('0x0'));var util=require('util');var path=require(_0x8ae9('0x1'));var timeout=require(_0x8ae9('0x2'));var express=require(_0x8ae9('0x3'));var router=express[_0x8ae9('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8ae9('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8ae9('0x6'));var controller=require(_0x8ae9('0x7'));router[_0x8ae9('0x8')]('/',auth['isAuthenticated'](),controller[_0x8ae9('0x9')]);router[_0x8ae9('0x8')]('/describe',auth[_0x8ae9('0xa')](),controller[_0x8ae9('0xb')]);router[_0x8ae9('0x8')]('/:id',auth[_0x8ae9('0xa')](),controller[_0x8ae9('0xc')]);router[_0x8ae9('0x8')](_0x8ae9('0xd'),auth[_0x8ae9('0xa')](),controller[_0x8ae9('0xe')]);router[_0x8ae9('0xf')]('/',auth[_0x8ae9('0xa')](),controller[_0x8ae9('0x10')]);router[_0x8ae9('0x11')](_0x8ae9('0x12'),auth[_0x8ae9('0xa')](),controller['update']);router[_0x8ae9('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x8ae9('0x14')]);module[_0x8ae9('0x15')]=router;
\ No newline at end of file
+var _0xf143=['/:id','show','/:id/download','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./screenRecording.controller','isAuthenticated','index','/describe','describe','get'];(function(_0x30c18f,_0xeba9ae){var _0x4b70bb=function(_0x2d350){while(--_0x2d350){_0x30c18f['push'](_0x30c18f['shift']());}};_0x4b70bb(++_0xeba9ae);}(_0xf143,0x1be));var _0x3f14=function(_0x3211f6,_0x47eb23){_0x3211f6=_0x3211f6-0x0;var _0x273e60=_0xf143[_0x3211f6];return _0x273e60;};'use strict';var multer=require(_0x3f14('0x0'));var util=require(_0x3f14('0x1'));var path=require(_0x3f14('0x2'));var timeout=require(_0x3f14('0x3'));var express=require(_0x3f14('0x4'));var router=express[_0x3f14('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3f14('0x6'));var config=require(_0x3f14('0x7'));var controller=require(_0x3f14('0x8'));router['get']('/',auth[_0x3f14('0x9')](),controller[_0x3f14('0xa')]);router['get'](_0x3f14('0xb'),auth[_0x3f14('0x9')](),controller[_0x3f14('0xc')]);router[_0x3f14('0xd')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller[_0x3f14('0xf')]);router[_0x3f14('0xd')](_0x3f14('0x10'),auth[_0x3f14('0x9')](),controller['download']);router[_0x3f14('0x11')]('/',auth['isAuthenticated'](),controller[_0x3f14('0x12')]);router[_0x3f14('0x13')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller['update']);router[_0x3f14('0x14')](_0x3f14('0xe'),auth[_0x3f14('0x9')](),controller[_0x3f14('0x15')]);module[_0x3f14('0x16')]=router;
\ No newline at end of file
index c50feec..d983a84 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6df9=['extname','value','STRING','replace','setDataValue','INTEGER','startedAt','DATE','format','MM-DD-YYYY\x20HH:mm','toString','closedAt','updatedAt','sequelize','moment','../../config/environment','getDataValue'];(function(_0x6a555d,_0x57335f){var _0x28020b=function(_0x3db4e5){while(--_0x3db4e5){_0x6a555d['push'](_0x6a555d['shift']());}};_0x28020b(++_0x57335f);}(_0x6df9,0x84));var _0x96df=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x6df9[_0x397e5f];return _0x5302b8;};'use strict';var Sequelize=require(_0x96df('0x0'));var moment=require(_0x96df('0x1'));var path=require('path');var config=require(_0x96df('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x96df('0x3')]('value')?path[_0x96df('0x4')](this['getDataValue'](_0x96df('0x5'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x96df('0x6')]},'value':{'type':Sequelize[_0x96df('0x6')],'set':function(_0x5cf09d){var _0x302764=_0x5cf09d[_0x96df('0x7')](/\\/g,'/');this[_0x96df('0x8')](_0x96df('0x5'),_0x302764);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x96df('0x9')],'set':function(_0x1df012){this['setDataValue'](_0x96df('0xa'),moment()['subtract'](_0x1df012,'ms'));this[_0x96df('0x8')]('closedAt',moment());this['setDataValue']('duration',_0x1df012);}},'startedAt':{'type':Sequelize[_0x96df('0xb')],'get':function(){return moment(this[_0x96df('0x3')](_0x96df('0xa')))[_0x96df('0xc')](_0x96df('0xd'))[_0x96df('0xe')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x96df('0x3')](_0x96df('0xf')))[_0x96df('0xc')](_0x96df('0xd'))[_0x96df('0xe')]();}},'createdAt':{'type':Sequelize[_0x96df('0xb')],'get':function(){return moment(this['getDataValue']('createdAt'))['format'](_0x96df('0xd'))[_0x96df('0xe')]();}},'updatedAt':{'type':Sequelize[_0x96df('0xb')],'get':function(){return moment(this[_0x96df('0x3')](_0x96df('0x10')))[_0x96df('0xc')](_0x96df('0xd'))[_0x96df('0xe')]();}}};
\ No newline at end of file
+var _0x79e2=['setDataValue','INTEGER','subtract','duration','DATE','startedAt','format','MM-DD-YYYY\x20HH:mm','toString','createdAt','updatedAt','sequelize','path','../../config/environment','exports','getDataValue','extname','value','STRING','replace'];(function(_0x4e6ae6,_0x49dba6){var _0x23c108=function(_0x1bc103){while(--_0x1bc103){_0x4e6ae6['push'](_0x4e6ae6['shift']());}};_0x23c108(++_0x49dba6);}(_0x79e2,0x1c3));var _0x279e=function(_0xfb82a7,_0x1be538){_0xfb82a7=_0xfb82a7-0x0;var _0x5ce7ff=_0x79e2[_0xfb82a7];return _0x5ce7ff;};'use strict';var Sequelize=require(_0x279e('0x0'));var moment=require('moment');var path=require(_0x279e('0x1'));var config=require(_0x279e('0x2'));module[_0x279e('0x3')]={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x279e('0x4')]('value')?path[_0x279e('0x5')](this[_0x279e('0x4')](_0x279e('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0x279e('0x7')]},'channel':{'type':Sequelize['STRING']},'value':{'type':Sequelize['STRING'],'set':function(_0x1c6b6f){var _0x26c072=_0x1c6b6f[_0x279e('0x8')](/\\/g,'/');this[_0x279e('0x9')](_0x279e('0x6'),_0x26c072);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x279e('0xa')],'set':function(_0x1ec1b7){this[_0x279e('0x9')]('startedAt',moment()[_0x279e('0xb')](_0x1ec1b7,'ms'));this[_0x279e('0x9')]('closedAt',moment());this[_0x279e('0x9')](_0x279e('0xc'),_0x1ec1b7);}},'startedAt':{'type':Sequelize[_0x279e('0xd')],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0xe')))[_0x279e('0xf')](_0x279e('0x10'))[_0x279e('0x11')]();}},'closedAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x279e('0x4')]('closedAt'))[_0x279e('0xf')](_0x279e('0x10'))[_0x279e('0x11')]();}},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0x12')))[_0x279e('0xf')]('MM-DD-YYYY\x20HH:mm')[_0x279e('0x11')]();}},'updatedAt':{'type':Sequelize[_0x279e('0xd')],'get':function(){return moment(this[_0x279e('0x4')](_0x279e('0x13')))[_0x279e('0xf')](_0x279e('0x10'))['toString']();}}};
\ No newline at end of file
index 95b8d92..7165034 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['unlink','message','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','sendStatus','status','end','json','undefined','limit','count','offset','set','save','update','destroy','then','error','stack','name','index','map','rawAttributes','type','key','differenceBy','keys','query','filters','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','ScreenRecording','includeAll','findAll','rows','params','include','find','catch','create','body','createdAt','value','describe','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','secrets','existsSync','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname'];(function(_0x22187c,_0x437fee){var _0x441234=function(_0x50905b){while(--_0x50905b){_0x22187c['push'](_0x22187c['shift']());}};_0x441234(++_0x437fee);}(_0xa41a,0x6b));var _0xaa41=function(_0x5bb5c2,_0x159f20){_0x5bb5c2=_0x5bb5c2-0x0;var _0x4cb77b=_0xa41a[_0x5bb5c2];return _0x4cb77b;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1d0a54,_0x518b5b){_0x518b5b=_0x518b5b||0xcc;return function(_0x19bd69){if(_0x19bd69){return _0x1d0a54[_0xaa41('0x19')](_0x518b5b);}return _0x1d0a54[_0xaa41('0x1a')](_0x518b5b)[_0xaa41('0x1b')]();};}function respondWithResult(_0x6f9ade,_0x4eaf81){_0x4eaf81=_0x4eaf81||0xc8;return function(_0x1e9d7f){if(_0x1e9d7f){return _0x6f9ade[_0xaa41('0x1a')](_0x4eaf81)[_0xaa41('0x1c')](_0x1e9d7f);}};}function respondWithFilteredResult(_0x1ef7d9,_0x2a6988){return function(_0x2005ae){if(_0x2005ae){var _0x1e1e02=typeof _0x2a6988['offset']===_0xaa41('0x1d')&&typeof _0x2a6988[_0xaa41('0x1e')]===_0xaa41('0x1d');var _0x391b01=_0x2005ae[_0xaa41('0x1f')];var _0xd20ddf=_0x1e1e02?0x0:_0x2a6988[_0xaa41('0x20')];var _0x46e6d3=_0x1e1e02?_0x2005ae[_0xaa41('0x1f')]:_0x2a6988['offset']+_0x2a6988['limit'];var _0x1f502a;if(_0x46e6d3>=_0x391b01){_0x46e6d3=_0x391b01;_0x1f502a=0xc8;}else{_0x1f502a=0xce;}_0x1ef7d9[_0xaa41('0x1a')](_0x1f502a);return _0x1ef7d9[_0xaa41('0x21')]('Content-Range',_0xd20ddf+'-'+_0x46e6d3+'/'+_0x391b01)[_0xaa41('0x1c')](_0x2005ae);}return null;};}function patchUpdates(_0x1f692b){return function(_0x4e768e){try{jsonpatch['apply'](_0x4e768e,_0x1f692b,!![]);}catch(_0x1b1910){return BPromise['reject'](_0x1b1910);}return _0x4e768e[_0xaa41('0x22')]();};}function saveUpdates(_0x209c83,_0x3e2175){return function(_0x1f27f3){if(_0x1f27f3){return _0x1f27f3[_0xaa41('0x23')](_0x209c83)['then'](function(_0x43c430){return _0x43c430;});}return null;};}function removeEntity(_0x43a85c,_0x448a21){return function(_0x21f596){if(_0x21f596){return _0x21f596[_0xaa41('0x24')]()[_0xaa41('0x25')](function(){_0x43a85c['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x16aec5,_0x527cac){return function(_0x493a10){if(!_0x493a10){_0x16aec5[_0xaa41('0x19')](0x194);}return _0x493a10;};}function handleError(_0x59707f,_0x536bed){_0x536bed=_0x536bed||0x1f4;return function(_0x2d0ac0){logger[_0xaa41('0x26')](_0x2d0ac0[_0xaa41('0x27')]);if(_0x2d0ac0[_0xaa41('0x28')]){delete _0x2d0ac0[_0xaa41('0x28')];}_0x59707f[_0xaa41('0x1a')](_0x536bed)['send'](_0x2d0ac0);};}exports[_0xaa41('0x29')]=function(_0x1f0275,_0x63c18c){var _0x9a16e3={},_0x1d8c2b={},_0x4466a3={'count':0x0,'rows':[]};var _0x30f88e=_[_0xaa41('0x2a')](db['ScreenRecording'][_0xaa41('0x2b')],function(_0x48b48b){return{'name':_0x48b48b['fieldName'],'type':_0x48b48b[_0xaa41('0x2c')][_0xaa41('0x2d')]};});_0x1d8c2b['model']=_[_0xaa41('0x2e')](_[_0xaa41('0x2a')](_0x30f88e,'name'),['format']);_0x1d8c2b['query']=_[_0xaa41('0x2f')](_0x1f0275[_0xaa41('0x30')]);_0x1d8c2b[_0xaa41('0x31')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],_0x1d8c2b[_0xaa41('0x30')]);_0x9a16e3[_0xaa41('0x33')]=_[_0xaa41('0x32')](_0x1d8c2b['model'],qs[_0xaa41('0x34')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x34')]));_0x9a16e3['attributes']=_0x9a16e3[_0xaa41('0x33')][_0xaa41('0x35')]?_0x9a16e3['attributes']:_0x1d8c2b[_0xaa41('0x36')];if(!_0x1f0275[_0xaa41('0x30')][_0xaa41('0x37')]('nolimit')){_0x9a16e3[_0xaa41('0x1e')]=qs['limit'](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x1e')]);_0x9a16e3[_0xaa41('0x20')]=qs['offset'](_0x1f0275['query']['offset']);}_0x9a16e3[_0xaa41('0x38')]=qs[_0xaa41('0x39')](_0x1f0275[_0xaa41('0x30')][_0xaa41('0x39')]);_0x9a16e3['where']=qs['filters'](_[_0xaa41('0x3a')](_0x1f0275[_0xaa41('0x30')],_0x1d8c2b[_0xaa41('0x31')]),_0x30f88e);if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]){_0x9a16e3[_0xaa41('0x3c')]=_[_0xaa41('0x3d')](_0x9a16e3['where'],{'$or':_[_0xaa41('0x2a')](_0x30f88e,function(_0x5cf689){if(_0x5cf689[_0xaa41('0x2c')]!==_0xaa41('0x3e')){var _0x57f1bf={};_0x57f1bf[_0x5cf689['name']]={'$like':'%'+_0x1f0275[_0xaa41('0x30')][_0xaa41('0x3b')]+'%'};return _0x57f1bf;}})});}_0x9a16e3=_['merge']({},_0x9a16e3,_0x1f0275[_0xaa41('0x3f')]);var _0x563687={'where':_0x9a16e3[_0xaa41('0x3c')]};return db[_0xaa41('0x40')][_0xaa41('0x1f')](_0x563687)[_0xaa41('0x25')](function(_0x3e6cac){_0x4466a3[_0xaa41('0x1f')]=_0x3e6cac;if(_0x1f0275[_0xaa41('0x30')][_0xaa41('0x41')]){_0x9a16e3['include']=[{'all':!![]}];}return db[_0xaa41('0x40')][_0xaa41('0x42')](_0x9a16e3);})[_0xaa41('0x25')](function(_0x398c35){_0x4466a3[_0xaa41('0x43')]=_0x398c35;return _0x4466a3;})[_0xaa41('0x25')](respondWithFilteredResult(_0x63c18c,_0x9a16e3))['catch'](handleError(_0x63c18c,null));};exports['show']=function(_0x87e2f4,_0x4f9086){var _0x1ed366={'raw':![],'where':{'id':_0x87e2f4[_0xaa41('0x44')]['id']}},_0x215896={};_0x215896[_0xaa41('0x36')]=_[_0xaa41('0x2f')](db[_0xaa41('0x40')][_0xaa41('0x2b')]);_0x215896['query']=_[_0xaa41('0x2f')](_0x87e2f4['query']);_0x215896['filters']=_[_0xaa41('0x32')](_0x215896['model'],_0x215896['query']);_0x1ed366['attributes']=_[_0xaa41('0x32')](_0x215896['model'],qs[_0xaa41('0x34')](_0x87e2f4[_0xaa41('0x30')]['fields']));_0x1ed366['attributes']=_0x1ed366[_0xaa41('0x33')][_0xaa41('0x35')]?_0x1ed366[_0xaa41('0x33')]:_0x215896[_0xaa41('0x36')];if(_0x87e2f4[_0xaa41('0x30')][_0xaa41('0x41')]){_0x1ed366[_0xaa41('0x45')]=[{'all':!![]}];}_0x1ed366=_[_0xaa41('0x3d')]({},_0x1ed366,_0x87e2f4[_0xaa41('0x3f')]);return db['ScreenRecording'][_0xaa41('0x46')](_0x1ed366)[_0xaa41('0x25')](handleEntityNotFound(_0x4f9086,null))[_0xaa41('0x25')](respondWithResult(_0x4f9086,null))[_0xaa41('0x47')](handleError(_0x4f9086,null));};exports[_0xaa41('0x48')]=function(_0x1d6112,_0x538b12){return db[_0xaa41('0x40')][_0xaa41('0x48')](_0x1d6112[_0xaa41('0x49')],{})[_0xaa41('0x25')](respondWithResult(_0x538b12,0xc9))['catch'](handleError(_0x538b12,null));};exports[_0xaa41('0x23')]=function(_0x5787f3,_0x49fedd){if(_0x5787f3[_0xaa41('0x49')]['id']){delete _0x5787f3[_0xaa41('0x49')]['id'];}delete _0x5787f3[_0xaa41('0x49')]['duration'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4a')];delete _0x5787f3[_0xaa41('0x49')]['closedAt'];delete _0x5787f3[_0xaa41('0x49')][_0xaa41('0x4b')];return db[_0xaa41('0x40')][_0xaa41('0x46')]({'where':{'id':_0x5787f3[_0xaa41('0x44')]['id']}})[_0xaa41('0x25')](handleEntityNotFound(_0x49fedd,null))[_0xaa41('0x25')](saveUpdates(_0x5787f3[_0xaa41('0x49')],null))['then'](respondWithResult(_0x49fedd,null))[_0xaa41('0x47')](handleError(_0x49fedd,null));};exports['describe']=function(_0x5ae65e,_0x1bdcd6){return db[_0xaa41('0x40')][_0xaa41('0x4c')]()[_0xaa41('0x25')](respondWithResult(_0x1bdcd6,null))[_0xaa41('0x47')](handleError(_0x1bdcd6,null));};exports[_0xaa41('0x4d')]=function(_0x48c4c7,_0x3c5082,_0x519e39){var _0xecb54=require(_0xaa41('0x4e'));var _0x1d518f=![];var _0x4f9e92={};if(_0x48c4c7[_0xaa41('0x30')][_0xaa41('0x2c')]&&_0x48c4c7['query'][_0xaa41('0x2c')]===_0xaa41('0x4f')){_0x4f9e92[_0xaa41('0x4f')]=_0x48c4c7['params']['id'];}else{_0x4f9e92['id']=_0x48c4c7[_0xaa41('0x44')]['id'];}return db[_0xaa41('0x40')]['find']({'where':_0x4f9e92,'attributes':['id','value'],'raw':!![]})[_0xaa41('0x25')](handleEntityNotFound(_0x3c5082,null))[_0xaa41('0x25')](function(_0x3a29d2){if(_0x3a29d2){var _0x4d20c6=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x3a29d2[_0xaa41('0x4b')]);var _0x2abb78=util['format'](_0xaa41('0x53'),_0x4d20c6);if(fs['existsSync'](_0x2abb78)){_0x1d518f=!![];return _0xecb54['decryptFile'](_0x2abb78,_0x4d20c6,config[_0xaa41('0x54')]['recording'])[_0xaa41('0x25')](function(){return _0x3a29d2;});}return _0x3a29d2;}})[_0xaa41('0x25')](function(_0x169ddf){if(_0x169ddf){var _0x5e83e1=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x169ddf[_0xaa41('0x4b')]);if(!fs[_0xaa41('0x55')](_0x5e83e1)){throw new db[(_0xaa41('0x56'))][(_0xaa41('0x57'))](_0xaa41('0x58'));}if(_0x169ddf[_0xaa41('0x59')]){return _0x3c5082['download'](_0x5e83e1,_0x169ddf[_0xaa41('0x59')]+path[_0xaa41('0x5a')](_0x5e83e1),function(){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}else{return _0x3c5082['download'](_0x5e83e1,function(_0x3fe47a){if(_0x1d518f){fs[_0xaa41('0x5b')](_0x5e83e1);}});}}})[_0xaa41('0x47')](function(_0x134579){if(_0x134579[_0xaa41('0x5c')]===_0xaa41('0x58')){_0x3c5082[_0xaa41('0x1a')](0x194)['send']('Not\x20found');}else{return handleError(_0x3c5082,null);}});};exports['destroy']=function(_0x540325,_0x4ec357){return db['ScreenRecording'][_0xaa41('0x46')]({'where':{'id':_0x540325['params']['id']}})['then'](function(_0x24c6f3){if(_[_0xaa41('0x5d')](_0x24c6f3)){throw new ReferenceError(_0xaa41('0x5e'));}return _0x24c6f3;})[_0xaa41('0x25')](function(_0x5cabc4){var _0x244d41=path[_0xaa41('0x50')](config[_0xaa41('0x51')],_0xaa41('0x52'),_0x5cabc4[_0xaa41('0x4b')]);logger[_0xaa41('0x5f')](_0xaa41('0x60'),_0x244d41);if(!_[_0xaa41('0x5d')](_0x5cabc4[_0xaa41('0x4b')])&&fs['existsSync'](_0x244d41)){logger[_0xaa41('0x5f')](_0xaa41('0x61')+_0x244d41+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x244d41);}_0x244d41=_0x244d41+'.cypher';if(!_[_0xaa41('0x5d')](_0x5cabc4['value'])&&fs[_0xaa41('0x55')](_0x244d41)){logger['info'](_0xaa41('0x61')+_0x244d41+_0xaa41('0x62'));fs['unlinkSync'](_0x244d41);}return _0x5cabc4;})[_0xaa41('0x25')](function(_0x33efc5){if(!_0x33efc5)throw new InternalError();return _0x33efc5[_0xaa41('0x24')]();})[_0xaa41('0x25')](function(){_0x4ec357['status'](0xcc)['end']();})[_0xaa41('0x47')](handleError(_0x4ec357,null));};
\ No newline at end of file
+var _0xb458=['differenceBy','format','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','where','pick','merge','filter','options','ScreenRecording','includeAll','rows','catch','show','params','include','create','body','createdAt','closedAt','find','describe','download','uniqueid','value','join','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','recording','Sequelize','ValidationError','ScreenRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','send','index','map','rawAttributes','fieldName','type','key','model'];(function(_0x352e75,_0x2bf3f3){var _0x2d12a2=function(_0x36ba25){while(--_0x36ba25){_0x352e75['push'](_0x352e75['shift']());}};_0x2d12a2(++_0x2bf3f3);}(_0xb458,0x103));var _0x8b45=function(_0x4f01ac,_0x130073){_0x4f01ac=_0x4f01ac-0x0;var _0x314994=_0xb458[_0x4f01ac];return _0x314994;};'use strict';var emlformat=require(_0x8b45('0x0'));var rimraf=require(_0x8b45('0x1'));var zipdir=require(_0x8b45('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x8b45('0x3'));var BPromise=require(_0x8b45('0x4'));var Mustache=require(_0x8b45('0x5'));var util=require(_0x8b45('0x6'));var path=require('path');var sox=require(_0x8b45('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8b45('0x8'));var _=require(_0x8b45('0x9'));var squel=require(_0x8b45('0xa'));var crypto=require(_0x8b45('0xb'));var jsforce=require(_0x8b45('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x8b45('0xd'));var querystring=require(_0x8b45('0xe'));var Papa=require(_0x8b45('0xf'));var Redis=require(_0x8b45('0x10'));var authService=require(_0x8b45('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8b45('0x12'));var hardwareService=require(_0x8b45('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8b45('0x14'));var db=require(_0x8b45('0x15'))['db'];function respondWithStatusCode(_0x37c220,_0x52c4db){_0x52c4db=_0x52c4db||0xcc;return function(_0x30d38c){if(_0x30d38c){return _0x37c220[_0x8b45('0x16')](_0x52c4db);}return _0x37c220[_0x8b45('0x17')](_0x52c4db)[_0x8b45('0x18')]();};}function respondWithResult(_0x32babc,_0x2ad2ae){_0x2ad2ae=_0x2ad2ae||0xc8;return function(_0x5f0b20){if(_0x5f0b20){return _0x32babc['status'](_0x2ad2ae)[_0x8b45('0x19')](_0x5f0b20);}};}function respondWithFilteredResult(_0x23f1dd,_0x445170){return function(_0x39c1d1){if(_0x39c1d1){var _0x4781d7=typeof _0x445170[_0x8b45('0x1a')]===_0x8b45('0x1b')&&typeof _0x445170[_0x8b45('0x1c')]===_0x8b45('0x1b');var _0x391d1e=_0x39c1d1[_0x8b45('0x1d')];var _0x21d5b2=_0x4781d7?0x0:_0x445170[_0x8b45('0x1a')];var _0x43ffb7=_0x4781d7?_0x39c1d1[_0x8b45('0x1d')]:_0x445170[_0x8b45('0x1a')]+_0x445170[_0x8b45('0x1c')];var _0x309e23;if(_0x43ffb7>=_0x391d1e){_0x43ffb7=_0x391d1e;_0x309e23=0xc8;}else{_0x309e23=0xce;}_0x23f1dd['status'](_0x309e23);return _0x23f1dd[_0x8b45('0x1e')](_0x8b45('0x1f'),_0x21d5b2+'-'+_0x43ffb7+'/'+_0x391d1e)[_0x8b45('0x19')](_0x39c1d1);}return null;};}function patchUpdates(_0x46e21a){return function(_0x3e1438){try{jsonpatch[_0x8b45('0x20')](_0x3e1438,_0x46e21a,!![]);}catch(_0x2f4f1c){return BPromise[_0x8b45('0x21')](_0x2f4f1c);}return _0x3e1438['save']();};}function saveUpdates(_0x52f93f,_0x41154a){return function(_0x580e17){if(_0x580e17){return _0x580e17[_0x8b45('0x22')](_0x52f93f)[_0x8b45('0x23')](function(_0x30f405){return _0x30f405;});}return null;};}function removeEntity(_0x45e2db,_0x165570){return function(_0x2b8526){if(_0x2b8526){return _0x2b8526[_0x8b45('0x24')]()['then'](function(){_0x45e2db['status'](0xcc)[_0x8b45('0x18')]();});}};}function handleEntityNotFound(_0x2c2c06,_0x500044){return function(_0x5723a2){if(!_0x5723a2){_0x2c2c06[_0x8b45('0x16')](0x194);}return _0x5723a2;};}function handleError(_0x32f6f0,_0x2ca2d9){_0x2ca2d9=_0x2ca2d9||0x1f4;return function(_0x2f37bc){logger['error'](_0x2f37bc[_0x8b45('0x25')]);if(_0x2f37bc[_0x8b45('0x26')]){delete _0x2f37bc[_0x8b45('0x26')];}_0x32f6f0[_0x8b45('0x17')](_0x2ca2d9)[_0x8b45('0x27')](_0x2f37bc);};}exports[_0x8b45('0x28')]=function(_0x461017,_0x234f62){var _0x1733a7={},_0xf21bd1={},_0x339c73={'count':0x0,'rows':[]};var _0x1ba2d4=_[_0x8b45('0x29')](db['ScreenRecording'][_0x8b45('0x2a')],function(_0x36db96){return{'name':_0x36db96[_0x8b45('0x2b')],'type':_0x36db96[_0x8b45('0x2c')][_0x8b45('0x2d')]};});_0xf21bd1[_0x8b45('0x2e')]=_[_0x8b45('0x2f')](_[_0x8b45('0x29')](_0x1ba2d4,'name'),[_0x8b45('0x30')]);_0xf21bd1[_0x8b45('0x31')]=_[_0x8b45('0x32')](_0x461017[_0x8b45('0x31')]);_0xf21bd1[_0x8b45('0x33')]=_['intersection'](_0xf21bd1[_0x8b45('0x2e')],_0xf21bd1['query']);_0x1733a7['attributes']=_[_0x8b45('0x34')](_0xf21bd1[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x461017[_0x8b45('0x31')][_0x8b45('0x35')]));_0x1733a7[_0x8b45('0x36')]=_0x1733a7['attributes'][_0x8b45('0x37')]?_0x1733a7[_0x8b45('0x36')]:_0xf21bd1[_0x8b45('0x2e')];if(!_0x461017[_0x8b45('0x31')]['hasOwnProperty'](_0x8b45('0x38'))){_0x1733a7[_0x8b45('0x1c')]=qs[_0x8b45('0x1c')](_0x461017['query'][_0x8b45('0x1c')]);_0x1733a7[_0x8b45('0x1a')]=qs[_0x8b45('0x1a')](_0x461017['query'][_0x8b45('0x1a')]);}_0x1733a7[_0x8b45('0x39')]=qs[_0x8b45('0x3a')](_0x461017[_0x8b45('0x31')]['sort']);_0x1733a7[_0x8b45('0x3b')]=qs[_0x8b45('0x33')](_[_0x8b45('0x3c')](_0x461017[_0x8b45('0x31')],_0xf21bd1[_0x8b45('0x33')]),_0x1ba2d4);if(_0x461017[_0x8b45('0x31')]['filter']){_0x1733a7['where']=_[_0x8b45('0x3d')](_0x1733a7[_0x8b45('0x3b')],{'$or':_[_0x8b45('0x29')](_0x1ba2d4,function(_0x12d4b2){if(_0x12d4b2[_0x8b45('0x2c')]!=='VIRTUAL'){var _0x120068={};_0x120068[_0x12d4b2['name']]={'$like':'%'+_0x461017[_0x8b45('0x31')][_0x8b45('0x3e')]+'%'};return _0x120068;}})});}_0x1733a7=_[_0x8b45('0x3d')]({},_0x1733a7,_0x461017[_0x8b45('0x3f')]);var _0x254f17={'where':_0x1733a7[_0x8b45('0x3b')]};return db[_0x8b45('0x40')][_0x8b45('0x1d')](_0x254f17)[_0x8b45('0x23')](function(_0x2ca00e){_0x339c73[_0x8b45('0x1d')]=_0x2ca00e;if(_0x461017['query'][_0x8b45('0x41')]){_0x1733a7['include']=[{'all':!![]}];}return db[_0x8b45('0x40')]['findAll'](_0x1733a7);})[_0x8b45('0x23')](function(_0x224c45){_0x339c73[_0x8b45('0x42')]=_0x224c45;return _0x339c73;})[_0x8b45('0x23')](respondWithFilteredResult(_0x234f62,_0x1733a7))[_0x8b45('0x43')](handleError(_0x234f62,null));};exports[_0x8b45('0x44')]=function(_0x58e663,_0x6fbca4){var _0x5916c7={'raw':![],'where':{'id':_0x58e663[_0x8b45('0x45')]['id']}},_0x4c56c8={};_0x4c56c8[_0x8b45('0x2e')]=_[_0x8b45('0x32')](db['ScreenRecording'][_0x8b45('0x2a')]);_0x4c56c8['query']=_[_0x8b45('0x32')](_0x58e663[_0x8b45('0x31')]);_0x4c56c8[_0x8b45('0x33')]=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],_0x4c56c8[_0x8b45('0x31')]);_0x5916c7['attributes']=_[_0x8b45('0x34')](_0x4c56c8[_0x8b45('0x2e')],qs[_0x8b45('0x35')](_0x58e663[_0x8b45('0x31')][_0x8b45('0x35')]));_0x5916c7[_0x8b45('0x36')]=_0x5916c7[_0x8b45('0x36')][_0x8b45('0x37')]?_0x5916c7[_0x8b45('0x36')]:_0x4c56c8[_0x8b45('0x2e')];if(_0x58e663[_0x8b45('0x31')][_0x8b45('0x41')]){_0x5916c7[_0x8b45('0x46')]=[{'all':!![]}];}_0x5916c7=_[_0x8b45('0x3d')]({},_0x5916c7,_0x58e663[_0x8b45('0x3f')]);return db[_0x8b45('0x40')]['find'](_0x5916c7)['then'](handleEntityNotFound(_0x6fbca4,null))['then'](respondWithResult(_0x6fbca4,null))[_0x8b45('0x43')](handleError(_0x6fbca4,null));};exports[_0x8b45('0x47')]=function(_0x3a1621,_0x473530){return db[_0x8b45('0x40')][_0x8b45('0x47')](_0x3a1621[_0x8b45('0x48')],{})[_0x8b45('0x23')](respondWithResult(_0x473530,0xc9))['catch'](handleError(_0x473530,null));};exports[_0x8b45('0x22')]=function(_0x5d5be2,_0x23b5c6){if(_0x5d5be2[_0x8b45('0x48')]['id']){delete _0x5d5be2[_0x8b45('0x48')]['id'];}delete _0x5d5be2[_0x8b45('0x48')]['duration'];delete _0x5d5be2[_0x8b45('0x48')][_0x8b45('0x49')];delete _0x5d5be2['body'][_0x8b45('0x4a')];delete _0x5d5be2[_0x8b45('0x48')]['value'];return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':{'id':_0x5d5be2[_0x8b45('0x45')]['id']}})[_0x8b45('0x23')](handleEntityNotFound(_0x23b5c6,null))[_0x8b45('0x23')](saveUpdates(_0x5d5be2[_0x8b45('0x48')],null))['then'](respondWithResult(_0x23b5c6,null))['catch'](handleError(_0x23b5c6,null));};exports[_0x8b45('0x4c')]=function(_0x2a2e59,_0x2d5b31){return db['ScreenRecording'][_0x8b45('0x4c')]()[_0x8b45('0x23')](respondWithResult(_0x2d5b31,null))[_0x8b45('0x43')](handleError(_0x2d5b31,null));};exports[_0x8b45('0x4d')]=function(_0x2d6b66,_0x597402,_0x34c05d){var _0xa92a05=require('../../components/encryptor');var _0x422da0=![];var _0x4c3f38={};if(_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]&&_0x2d6b66[_0x8b45('0x31')][_0x8b45('0x2c')]==='uniqueid'){_0x4c3f38[_0x8b45('0x4e')]=_0x2d6b66[_0x8b45('0x45')]['id'];}else{_0x4c3f38['id']=_0x2d6b66[_0x8b45('0x45')]['id'];}return db[_0x8b45('0x40')][_0x8b45('0x4b')]({'where':_0x4c3f38,'attributes':['id',_0x8b45('0x4f')],'raw':!![]})[_0x8b45('0x23')](handleEntityNotFound(_0x597402,null))[_0x8b45('0x23')](function(_0x446fe5){if(_0x446fe5){var _0x5ba878=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x446fe5[_0x8b45('0x4f')]);var _0x1851c2=util['format'](_0x8b45('0x53'),_0x5ba878);if(fs[_0x8b45('0x54')](_0x1851c2)){_0x422da0=!![];return _0xa92a05[_0x8b45('0x55')](_0x1851c2,_0x5ba878,config['secrets'][_0x8b45('0x56')])[_0x8b45('0x23')](function(){return _0x446fe5;});}return _0x446fe5;}})[_0x8b45('0x23')](function(_0x9eacc1){if(_0x9eacc1){var _0x5795ca=path[_0x8b45('0x50')](config[_0x8b45('0x51')],_0x8b45('0x52'),_0x9eacc1[_0x8b45('0x4f')]);if(!fs['existsSync'](_0x5795ca)){throw new db[(_0x8b45('0x57'))][(_0x8b45('0x58'))](_0x8b45('0x59'));}if(_0x9eacc1[_0x8b45('0x5a')]){return _0x597402[_0x8b45('0x4d')](_0x5795ca,_0x9eacc1['filename']+path[_0x8b45('0x5b')](_0x5795ca),function(){if(_0x422da0){fs['unlink'](_0x5795ca);}});}else{return _0x597402[_0x8b45('0x4d')](_0x5795ca,function(_0x2f7ab0){if(_0x422da0){fs[_0x8b45('0x5c')](_0x5795ca);}});}}})[_0x8b45('0x43')](function(_0x6a77bd){if(_0x6a77bd[_0x8b45('0x5d')]==='ScreenRecording\x20not\x20found'){_0x597402['status'](0x194)[_0x8b45('0x27')](_0x8b45('0x5e'));}else{return handleError(_0x597402,null);}});};exports['destroy']=function(_0x461c83,_0x239330){return db[_0x8b45('0x40')]['find']({'where':{'id':_0x461c83['params']['id']}})[_0x8b45('0x23')](function(_0x8e5a41){if(_['isNil'](_0x8e5a41)){throw new ReferenceError(_0x8b45('0x5f'));}return _0x8e5a41;})['then'](function(_0xf1ab37){var _0x560c51=path['join'](config[_0x8b45('0x51')],_0x8b45('0x52'),_0xf1ab37['value']);logger[_0x8b45('0x60')](_0x8b45('0x61'),_0x560c51);if(!_[_0x8b45('0x62')](_0xf1ab37[_0x8b45('0x4f')])&&fs[_0x8b45('0x54')](_0x560c51)){logger['info'](_0x8b45('0x63')+_0x560c51+_0x8b45('0x64'));fs[_0x8b45('0x65')](_0x560c51);}_0x560c51=_0x560c51+'.cypher';if(!_['isNil'](_0xf1ab37[_0x8b45('0x4f')])&&fs['existsSync'](_0x560c51)){logger[_0x8b45('0x60')]('File:\x20\x22'+_0x560c51+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x560c51);}return _0xf1ab37;})[_0x8b45('0x23')](function(_0x4df581){if(!_0x4df581)throw new InternalError();return _0x4df581[_0x8b45('0x24')]();})[_0x8b45('0x23')](function(){_0x239330['status'](0xcc)[_0x8b45('0x18')]();})[_0x8b45('0x43')](handleError(_0x239330,null));};
\ No newline at end of file
index dacd690..8dfafaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb00f=['interactionid','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./screenRecording.attributes','exports','define','ScreenRecording'];(function(_0x9f50a5,_0x57242b){var _0x2bbde3=function(_0x3e3334){while(--_0x3e3334){_0x9f50a5['push'](_0x9f50a5['shift']());}};_0x2bbde3(++_0x57242b);}(_0xb00f,0x1bb));var _0xfb00=function(_0x1cdfc7,_0x423c10){_0x1cdfc7=_0x1cdfc7-0x0;var _0x292c56=_0xb00f[_0x1cdfc7];return _0x292c56;};'use strict';var _=require(_0xfb00('0x0'));var util=require('util');var logger=require(_0xfb00('0x1'))(_0xfb00('0x2'));var moment=require(_0xfb00('0x3'));var BPromise=require(_0xfb00('0x4'));var rp=require(_0xfb00('0x5'));var fs=require('fs');var path=require(_0xfb00('0x6'));var rimraf=require(_0xfb00('0x7'));var config=require('../../config/environment');var attributes=require(_0xfb00('0x8'));module[_0xfb00('0x9')]=function(_0x3d3059,_0x44f66a){return _0x3d3059[_0xfb00('0xa')](_0xfb00('0xb'),attributes,{'tableName':'screen_recordings','paranoid':![],'indexes':[{'name':_0xfb00('0xc'),'fields':[_0xfb00('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xddd7=['screen_recordings','interactionid','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./screenRecording.attributes','exports','define','ScreenRecording'];(function(_0x18f1e6,_0x521510){var _0x5dcd46=function(_0x5567da){while(--_0x5567da){_0x18f1e6['push'](_0x18f1e6['shift']());}};_0x5dcd46(++_0x521510);}(_0xddd7,0xf0));var _0x7ddd=function(_0x22c53b,_0x408b9c){_0x22c53b=_0x22c53b-0x0;var _0x45246d=_0xddd7[_0x22c53b];return _0x45246d;};'use strict';var _=require('lodash');var util=require(_0x7ddd('0x0'));var logger=require('../../config/logger')(_0x7ddd('0x1'));var moment=require(_0x7ddd('0x2'));var BPromise=require(_0x7ddd('0x3'));var rp=require(_0x7ddd('0x4'));var fs=require('fs');var path=require(_0x7ddd('0x5'));var rimraf=require(_0x7ddd('0x6'));var config=require(_0x7ddd('0x7'));var attributes=require(_0x7ddd('0x8'));module[_0x7ddd('0x9')]=function(_0x541554,_0x3ab9e7){return _0x541554[_0x7ddd('0xa')](_0x7ddd('0xb'),attributes,{'tableName':_0x7ddd('0xc'),'paranoid':![],'indexes':[{'name':_0x7ddd('0xd'),'fields':[_0x7ddd('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 3695c48..4ade25f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2e4=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xe2e4,0x102));var _0x4e2e=function(_0x60b4b5,_0x4b9f3c){_0x60b4b5=_0x60b4b5-0x0;var _0x5ce041=_0xe2e4[_0x60b4b5];return _0x5ce041;};'use strict';var _=require(_0x4e2e('0x0'));var util=require(_0x4e2e('0x1'));var moment=require(_0x4e2e('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4e2e('0x3'));var db=require(_0x4e2e('0x4'))['db'];var utils=require(_0x4e2e('0x5'));var logger=require(_0x4e2e('0x6'))(_0x4e2e('0x7'));var config=require('../../config/environment');var jayson=require(_0x4e2e('0x8'));var client=jayson[_0x4e2e('0x9')][_0x4e2e('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5aa270,_0x1d4f70,_0x327258){return new BPromise(function(_0xee48ad,_0x5ed194){return client[_0x4e2e('0xb')](_0x5aa270,_0x327258)[_0x4e2e('0xc')](function(_0x22fe76){logger[_0x4e2e('0xd')](_0x4e2e('0xe'),_0x1d4f70,_0x4e2e('0xf'));logger['debug']('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x1d4f70,'request\x20sent',JSON[_0x4e2e('0x10')](_0x22fe76));if(_0x22fe76[_0x4e2e('0x11')]){if(_0x22fe76['error'][_0x4e2e('0x12')]===0x1f4){logger[_0x4e2e('0x11')]('ScreenRecording,\x20%s,\x20%s',_0x1d4f70,_0x22fe76['error']['message']);return _0x5ed194(_0x22fe76['error']['message']);}logger['error']('ScreenRecording,\x20%s,\x20%s',_0x1d4f70,_0x22fe76[_0x4e2e('0x11')][_0x4e2e('0x13')]);return _0xee48ad(_0x22fe76[_0x4e2e('0x11')][_0x4e2e('0x13')]);}else{logger['info'](_0x4e2e('0xe'),_0x1d4f70,'request\x20sent');_0xee48ad(_0x22fe76[_0x4e2e('0x14')][_0x4e2e('0x13')]);}})[_0x4e2e('0x15')](function(_0x5031f0){logger[_0x4e2e('0x11')](_0x4e2e('0xe'),_0x1d4f70,_0x5031f0);_0x5ed194(_0x5031f0);});});}
\ No newline at end of file
+var _0x3c71=['../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x40802a,_0xafa82f){var _0x1d80fe=function(_0x5d0364){while(--_0x5d0364){_0x40802a['push'](_0x40802a['shift']());}};_0x1d80fe(++_0xafa82f);}(_0x3c71,0x8e));var _0x13c7=function(_0x28e35f,_0x4e6f5d){_0x28e35f=_0x28e35f-0x0;var _0x4b3848=_0x3c71[_0x28e35f];return _0x4b3848;};'use strict';var _=require(_0x13c7('0x0'));var util=require(_0x13c7('0x1'));var moment=require(_0x13c7('0x2'));var BPromise=require('bluebird');var rs=require(_0x13c7('0x3'));var fs=require('fs');var Redis=require(_0x13c7('0x4'));var db=require(_0x13c7('0x5'))['db'];var utils=require(_0x13c7('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x13c7('0x7'));var jayson=require(_0x13c7('0x8'));var client=jayson[_0x13c7('0x9')][_0x13c7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfc5066,_0x374db7,_0x178481){return new BPromise(function(_0x196a00,_0x1fbf9b){return client[_0x13c7('0xb')](_0xfc5066,_0x178481)[_0x13c7('0xc')](function(_0x3a1c35){logger[_0x13c7('0xd')](_0x13c7('0xe'),_0x374db7,'request\x20sent');logger['debug']('ScreenRecording,\x20%s,\x20%s,\x20%s',_0x374db7,_0x13c7('0xf'),JSON[_0x13c7('0x10')](_0x3a1c35));if(_0x3a1c35['error']){if(_0x3a1c35['error'][_0x13c7('0x11')]===0x1f4){logger[_0x13c7('0x12')](_0x13c7('0xe'),_0x374db7,_0x3a1c35['error'][_0x13c7('0x13')]);return _0x1fbf9b(_0x3a1c35[_0x13c7('0x12')][_0x13c7('0x13')]);}logger['error'](_0x13c7('0xe'),_0x374db7,_0x3a1c35[_0x13c7('0x12')][_0x13c7('0x13')]);return _0x196a00(_0x3a1c35['error'][_0x13c7('0x13')]);}else{logger['info'](_0x13c7('0xe'),_0x374db7,_0x13c7('0xf'));_0x196a00(_0x3a1c35['result']['message']);}})[_0x13c7('0x14')](function(_0x561ce5){logger[_0x13c7('0x12')](_0x13c7('0xe'),_0x374db7,_0x561ce5);_0x1fbf9b(_0x561ce5);});});}
\ No newline at end of file
index 674be02..b18ee65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f1=['exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','index','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','gdpr','/:id/preferred','/:id/favicon','join','root','format','%s%s','extname','originalname','post','addLogo','diskStorage','server/files/images/logos/','logologin','file','addLogoLogin','single','addPreferred','favicon','addFavicon','put','isAuthenticated','update'];(function(_0x4a7134,_0x45eafc){var _0x81421f=function(_0x6229b1){while(--_0x6229b1){_0x4a7134['push'](_0x4a7134['shift']());}};_0x81421f(++_0x45eafc);}(_0x87f1,0xf7));var _0x187f=function(_0xe61a7a,_0x1a681f){_0xe61a7a=_0xe61a7a-0x0;var _0x5bf20c=_0x87f1[_0xe61a7a];return _0x5bf20c;};'use strict';var multer=require(_0x187f('0x0'));var util=require(_0x187f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x187f('0x2'));var router=express[_0x187f('0x3')]();var fs_extra=require(_0x187f('0x4'));var auth=require(_0x187f('0x5'));var interaction=require(_0x187f('0x6'));var config=require(_0x187f('0x7'));var controller=require(_0x187f('0x8'));router[_0x187f('0x9')]('/',auth['isAuthenticated'](),controller[_0x187f('0xa')]);router[_0x187f('0x9')]('/now',controller['getDate']);router[_0x187f('0x9')](_0x187f('0xb'),controller[_0x187f('0xc')]);router[_0x187f('0x9')](_0x187f('0xd'),controller[_0x187f('0xe')]);router[_0x187f('0x9')](_0x187f('0xf'),controller[_0x187f('0x10')]);router[_0x187f('0x9')]('/:id/gdpr',controller[_0x187f('0x11')]);router[_0x187f('0x9')](_0x187f('0x12'),controller['getPreferred']);router['get'](_0x187f('0x13'),controller['getFavicon']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x609634,_0x464d86,_0x2b8443){_0x2b8443(null,path[_0x187f('0x14')](config[_0x187f('0x15')],'server/files/images/logos/'));},'filename':function(_0x4f13b0,_0x2452f8,_0xa19b3f){_0xa19b3f(null,util[_0x187f('0x16')](_0x187f('0x17'),'logo',path[_0x187f('0x18')](_0x2452f8[_0x187f('0x19')])));}})});router[_0x187f('0x1a')](_0x187f('0xd'),upload['single']('file'),controller[_0x187f('0x1b')]);var upload=multer({'storage':multer[_0x187f('0x1c')]({'destination':function(_0x46d59e,_0x469d26,_0x29d230){_0x29d230(null,path[_0x187f('0x14')](config[_0x187f('0x15')],_0x187f('0x1d')));},'filename':function(_0x25dd15,_0xd1ae86,_0x120a6c){_0x120a6c(null,util['format']('%s%s',_0x187f('0x1e'),path[_0x187f('0x18')](_0xd1ae86[_0x187f('0x19')])));}})});router[_0x187f('0x1a')](_0x187f('0xf'),upload['single'](_0x187f('0x1f')),controller[_0x187f('0x20')]);var upload=multer({'storage':multer[_0x187f('0x1c')]({'destination':function(_0x438fd5,_0xaaf8fd,_0x3da8b3){_0x3da8b3(null,path[_0x187f('0x14')](config[_0x187f('0x15')],'server/files/images/logos/'));},'filename':function(_0x155b7f,_0x414a1f,_0x3a2a7f){_0x3a2a7f(null,util[_0x187f('0x16')](_0x187f('0x17'),'preferred',path[_0x187f('0x18')](_0x414a1f[_0x187f('0x19')])));}})});router[_0x187f('0x1a')]('/:id/preferred',upload[_0x187f('0x21')]('file'),controller[_0x187f('0x22')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x62e767,_0x5cb80d,_0x36fef0){_0x36fef0(null,path[_0x187f('0x14')](config[_0x187f('0x15')],'server/files/images/logos/'));},'filename':function(_0x125be0,_0x5b79a0,_0x1480a8){_0x1480a8(null,util[_0x187f('0x16')](_0x187f('0x17'),_0x187f('0x23'),path['extname'](_0x5b79a0[_0x187f('0x19')])));}})});router[_0x187f('0x1a')](_0x187f('0x13'),upload[_0x187f('0x21')](_0x187f('0x1f')),controller[_0x187f('0x24')]);router[_0x187f('0x25')](_0x187f('0xb'),auth[_0x187f('0x26')](),controller[_0x187f('0x27')]);module[_0x187f('0x28')]=router;
\ No newline at end of file
+var _0x9dd3=['../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/now','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','format','%s%s','logo','originalname','post','single','file','addLogo','logologin','extname','preferred','addPreferred','favicon','addFavicon','put','isAuthenticated','update','multer','util','connect-timeout','express','Router','fs-extra'];(function(_0x4dce0c,_0x31fd6b){var _0x1d8bc8=function(_0x2a921c){while(--_0x2a921c){_0x4dce0c['push'](_0x4dce0c['shift']());}};_0x1d8bc8(++_0x31fd6b);}(_0x9dd3,0x108));var _0x39dd=function(_0x302622,_0x4c605b){_0x302622=_0x302622-0x0;var _0x1ea958=_0x9dd3[_0x302622];return _0x1ea958;};'use strict';var multer=require(_0x39dd('0x0'));var util=require(_0x39dd('0x1'));var path=require('path');var timeout=require(_0x39dd('0x2'));var express=require(_0x39dd('0x3'));var router=express[_0x39dd('0x4')]();var fs_extra=require(_0x39dd('0x5'));var auth=require(_0x39dd('0x6'));var interaction=require(_0x39dd('0x7'));var config=require(_0x39dd('0x8'));var controller=require('./setting.controller');router[_0x39dd('0x9')]('/',auth['isAuthenticated'](),controller[_0x39dd('0xa')]);router['get'](_0x39dd('0xb'),controller['getDate']);router[_0x39dd('0x9')](_0x39dd('0xc'),controller[_0x39dd('0xd')]);router[_0x39dd('0x9')](_0x39dd('0xe'),controller[_0x39dd('0xf')]);router['get'](_0x39dd('0x10'),controller[_0x39dd('0x11')]);router[_0x39dd('0x9')](_0x39dd('0x12'),controller[_0x39dd('0x13')]);router[_0x39dd('0x9')](_0x39dd('0x14'),controller[_0x39dd('0x15')]);router[_0x39dd('0x9')](_0x39dd('0x16'),controller[_0x39dd('0x17')]);var upload=multer({'storage':multer[_0x39dd('0x18')]({'destination':function(_0x34e74b,_0x514c3c,_0x187ada){_0x187ada(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x48d442,_0x2d5df6,_0x312396){_0x312396(null,util[_0x39dd('0x1c')](_0x39dd('0x1d'),_0x39dd('0x1e'),path['extname'](_0x2d5df6[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')]('/:id/logo',upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x23')]);var upload=multer({'storage':multer[_0x39dd('0x18')]({'destination':function(_0x4b4c51,_0xee0f30,_0x343b63){_0x343b63(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],'server/files/images/logos/'));},'filename':function(_0x4602c6,_0x3c7aa9,_0x1b30da){_0x1b30da(null,util['format']('%s%s',_0x39dd('0x24'),path[_0x39dd('0x25')](_0x3c7aa9[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')](_0x39dd('0x10'),upload[_0x39dd('0x21')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x875035,_0x34cee4,_0x505ba7){_0x505ba7(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x3d46ca,_0x2ed939,_0x382065){_0x382065(null,util[_0x39dd('0x1c')]('%s%s',_0x39dd('0x26'),path[_0x39dd('0x25')](_0x2ed939[_0x39dd('0x1f')])));}})});router[_0x39dd('0x20')](_0x39dd('0x14'),upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x27')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x24e187,_0x1969d7,_0x453684){_0x453684(null,path[_0x39dd('0x19')](config[_0x39dd('0x1a')],_0x39dd('0x1b')));},'filename':function(_0x26209b,_0x9286a4,_0x43f9a1){_0x43f9a1(null,util['format'](_0x39dd('0x1d'),_0x39dd('0x28'),path[_0x39dd('0x25')](_0x9286a4['originalname'])));}})});router[_0x39dd('0x20')]('/:id/favicon',upload[_0x39dd('0x21')](_0x39dd('0x22')),controller[_0x39dd('0x29')]);router[_0x39dd('0x2a')]('/:id',auth[_0x39dd('0x2b')](),controller[_0x39dd('0x2c')]);module['exports']=router;
\ No newline at end of file
index 87273ec..e3f064e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x2fc3e2,_0x58af38){var _0x3006cc=function(_0x95cf12){while(--_0x95cf12){_0x2fc3e2['push'](_0x2fc3e2['shift']());}};_0x3006cc(++_0x58af38);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4709c0,_0x3396c7){_0x4709c0=_0x4709c0-0x0;var _0x13348b=_0xa9e0[_0x4709c0];return _0x13348b;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x74b053,_0x4a5f24){var _0x365274=function(_0x4ac7c4){while(--_0x4ac7c4){_0x74b053['push'](_0x74b053['shift']());}};_0x365274(++_0x4a5f24);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
index 0b902ef..cdf8a73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc718=['hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','rows','catch','params','keys','include','options','find','update','body','file','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','existsSync','join','root','toLower','logo','default_logo.svg','default','upperFirst','Sequelize','\x20not\x20found','download','getLogoLogin','default_loginLogo.svg','custom','ValidationError','gdpr','securePassword','addPreferred','getPreferred','favicon','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','zip-dir','fast-json-patch','moment','bluebird','path','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','error','code','message','result','status','end','offset','limit','undefined','count','set','Content-Range','json','reject','save','destroy','sendStatus','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length'];(function(_0x4d12af,_0x466438){var _0x40bcac=function(_0x120dc2){while(--_0x120dc2){_0x4d12af['push'](_0x4d12af['shift']());}};_0x40bcac(++_0x466438);}(_0xc718,0xb6));var _0x8c71=function(_0x31c2ff,_0x56a0bd){_0x31c2ff=_0x31c2ff-0x0;var _0x5c936a=_0xc718[_0x31c2ff];return _0x5c936a;};'use strict';var emlformat=require(_0x8c71('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8c71('0x1'));var jsonpatch=require(_0x8c71('0x2'));var rp=require('request-promise');var moment=require(_0x8c71('0x3'));var BPromise=require(_0x8c71('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x8c71('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8c71('0x6'));var _=require('lodash');var squel=require(_0x8c71('0x7'));var crypto=require(_0x8c71('0x8'));var jsforce=require(_0x8c71('0x9'));var deskjs=require(_0x8c71('0xa'));var toCsv=require(_0x8c71('0xb'));var querystring=require('querystring');var Papa=require(_0x8c71('0xc'));var Redis=require(_0x8c71('0xd'));var authService=require(_0x8c71('0xe'));var qs=require(_0x8c71('0xf'));var as=require(_0x8c71('0x10'));var hardwareService=require(_0x8c71('0x11'));var logger=require(_0x8c71('0x12'))(_0x8c71('0x13'));var utils=require(_0x8c71('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x8c71('0x15'));var db=require(_0x8c71('0x16'))['db'];var jayson=require(_0x8c71('0x17'));var client=jayson[_0x8c71('0x18')][_0x8c71('0x19')]({'port':0x232a});function respondWithRpcPromise(_0x244644,_0xa05caf,_0x2b26f1,_0xccdc43){return new BPromise(function(_0x1a29b7,_0x38fd39){var _0x310a66=_0xccdc43||client;return _0x310a66[_0x8c71('0x1a')](_0x244644,_0x2b26f1)[_0x8c71('0x1b')](function(_0x2c56a3){logger[_0x8c71('0x1c')](_0x8c71('0x1d'),_0xa05caf,_0x8c71('0x1e'));logger['debug'](_0x8c71('0x1f'),_0xa05caf,_0x8c71('0x1e'),JSON['stringify'](_0x2c56a3));if(_0x2c56a3['error']){if(_0x2c56a3[_0x8c71('0x20')][_0x8c71('0x21')]===0x1f4){logger[_0x8c71('0x20')](_0x8c71('0x1d'),_0xa05caf,_0x2c56a3['error'][_0x8c71('0x22')]);return _0x38fd39(_0x2c56a3['error'][_0x8c71('0x22')]);}logger[_0x8c71('0x20')]('Setting,\x20%s,\x20%s',_0xa05caf,_0x2c56a3[_0x8c71('0x20')][_0x8c71('0x22')]);return _0x1a29b7(_0x2c56a3[_0x8c71('0x20')][_0x8c71('0x22')]);}else{logger[_0x8c71('0x1c')](_0x8c71('0x1d'),_0xa05caf,'request\x20sent');_0x1a29b7(_0x2c56a3[_0x8c71('0x23')]['message']);}})['catch'](function(_0x41726a){logger[_0x8c71('0x20')]('Setting,\x20%s,\x20%s',_0xa05caf,_0x41726a);_0x38fd39(_0x41726a);});});}function respondWithStatusCode(_0x428e71,_0xc22d7b){_0xc22d7b=_0xc22d7b||0xcc;return function(_0x5370e6){if(_0x5370e6){return _0x428e71['sendStatus'](_0xc22d7b);}return _0x428e71[_0x8c71('0x24')](_0xc22d7b)[_0x8c71('0x25')]();};}function respondWithResult(_0x2e39ce,_0x911372){_0x911372=_0x911372||0xc8;return function(_0x332bce){if(_0x332bce){return _0x2e39ce[_0x8c71('0x24')](_0x911372)['json'](_0x332bce);}};}function respondWithFilteredResult(_0x3c4d5d,_0x4b07dd){return function(_0x4c12af){if(_0x4c12af){var _0x4f69ce=typeof _0x4b07dd[_0x8c71('0x26')]==='undefined'&&typeof _0x4b07dd[_0x8c71('0x27')]===_0x8c71('0x28');var _0x362cab=_0x4c12af['count'];var _0x1c11a2=_0x4f69ce?0x0:_0x4b07dd[_0x8c71('0x26')];var _0x4d7072=_0x4f69ce?_0x4c12af[_0x8c71('0x29')]:_0x4b07dd['offset']+_0x4b07dd[_0x8c71('0x27')];var _0x2291e7;if(_0x4d7072>=_0x362cab){_0x4d7072=_0x362cab;_0x2291e7=0xc8;}else{_0x2291e7=0xce;}_0x3c4d5d[_0x8c71('0x24')](_0x2291e7);return _0x3c4d5d[_0x8c71('0x2a')](_0x8c71('0x2b'),_0x1c11a2+'-'+_0x4d7072+'/'+_0x362cab)[_0x8c71('0x2c')](_0x4c12af);}return null;};}function patchUpdates(_0x2fc088){return function(_0x5b6f0c){try{jsonpatch['apply'](_0x5b6f0c,_0x2fc088,!![]);}catch(_0x291ebd){return BPromise[_0x8c71('0x2d')](_0x291ebd);}return _0x5b6f0c[_0x8c71('0x2e')]();};}function saveUpdates(_0x55dfad,_0x33947c){return function(_0xd16a31){if(_0xd16a31){return _0xd16a31['update'](_0x55dfad)[_0x8c71('0x1b')](function(_0x795447){return _0x795447;});}return null;};}function removeEntity(_0x3da3a5,_0x55dbc4){return function(_0x5c3772){if(_0x5c3772){return _0x5c3772[_0x8c71('0x2f')]()['then'](function(){_0x3da3a5[_0x8c71('0x24')](0xcc)[_0x8c71('0x25')]();});}};}function handleEntityNotFound(_0x1a8151,_0x1f6805){return function(_0x133a6a){if(!_0x133a6a){_0x1a8151[_0x8c71('0x30')](0x194);}return _0x133a6a;};}function handleError(_0x253a28,_0x42a6b1){_0x42a6b1=_0x42a6b1||0x1f4;return function(_0x42645f){logger[_0x8c71('0x20')](_0x42645f[_0x8c71('0x31')]);if(_0x42645f[_0x8c71('0x32')]){delete _0x42645f[_0x8c71('0x32')];}_0x253a28['status'](_0x42a6b1)[_0x8c71('0x33')](_0x42645f);};}exports[_0x8c71('0x34')]=function(_0xfcde3d,_0x13d4e6){var _0x275729={},_0x3baebc={},_0x1da280={'count':0x0,'rows':[]};var _0x455ee4=_[_0x8c71('0x35')](db[_0x8c71('0x36')][_0x8c71('0x37')],function(_0x15f40f){return{'name':_0x15f40f[_0x8c71('0x38')],'type':_0x15f40f[_0x8c71('0x39')][_0x8c71('0x3a')]};});_0x3baebc[_0x8c71('0x3b')]=_['map'](_0x455ee4,_0x8c71('0x32'));_0x3baebc[_0x8c71('0x3c')]=_['keys'](_0xfcde3d['query']);_0x3baebc[_0x8c71('0x3d')]=_[_0x8c71('0x3e')](_0x3baebc[_0x8c71('0x3b')],_0x3baebc['query']);_0x275729[_0x8c71('0x3f')]=_[_0x8c71('0x3e')](_0x3baebc[_0x8c71('0x3b')],qs[_0x8c71('0x40')](_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x40')]));_0x275729[_0x8c71('0x3f')]=_0x275729[_0x8c71('0x3f')][_0x8c71('0x41')]?_0x275729[_0x8c71('0x3f')]:_0x3baebc[_0x8c71('0x3b')];if(!_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x42')](_0x8c71('0x43'))){_0x275729[_0x8c71('0x27')]=qs[_0x8c71('0x27')](_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x27')]);_0x275729[_0x8c71('0x26')]=qs['offset'](_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x26')]);}_0x275729[_0x8c71('0x44')]=qs[_0x8c71('0x45')](_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x45')]);_0x275729[_0x8c71('0x46')]=qs[_0x8c71('0x3d')](_[_0x8c71('0x47')](_0xfcde3d['query'],_0x3baebc[_0x8c71('0x3d')]),_0x455ee4);if(_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x48')]){_0x275729[_0x8c71('0x46')]=_[_0x8c71('0x49')](_0x275729[_0x8c71('0x46')],{'$or':_[_0x8c71('0x35')](_0x455ee4,function(_0x1cc5d5){if(_0x1cc5d5[_0x8c71('0x39')]!==_0x8c71('0x4a')){var _0x2d1487={};_0x2d1487[_0x1cc5d5[_0x8c71('0x32')]]={'$like':'%'+_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x48')]+'%'};return _0x2d1487;}})});}_0x275729=_[_0x8c71('0x49')]({},_0x275729,_0xfcde3d['options']);var _0xff0a9b={'where':_0x275729['where']};return db['Setting'][_0x8c71('0x29')](_0xff0a9b)['then'](function(_0x560b9f){_0x1da280[_0x8c71('0x29')]=_0x560b9f;if(_0xfcde3d[_0x8c71('0x3c')][_0x8c71('0x4b')]){_0x275729['include']=[{'all':!![]}];}return db[_0x8c71('0x36')]['findAll'](_0x275729);})['then'](function(_0x1d3b56){_0x1da280[_0x8c71('0x4c')]=_0x1d3b56;return _0x1da280;})[_0x8c71('0x1b')](respondWithFilteredResult(_0x13d4e6,_0x275729))[_0x8c71('0x4d')](handleError(_0x13d4e6,null));};exports['show']=function(_0x2b99a2,_0x5e3eed){var _0x283362={'raw':![],'where':{'id':_0x2b99a2[_0x8c71('0x4e')]['id']}},_0x2807e4={};_0x2807e4[_0x8c71('0x3b')]=_['keys'](db[_0x8c71('0x36')][_0x8c71('0x37')]);_0x2807e4['query']=_[_0x8c71('0x4f')](_0x2b99a2[_0x8c71('0x3c')]);_0x2807e4[_0x8c71('0x3d')]=_[_0x8c71('0x3e')](_0x2807e4[_0x8c71('0x3b')],_0x2807e4[_0x8c71('0x3c')]);_0x283362['attributes']=_['intersection'](_0x2807e4[_0x8c71('0x3b')],qs['fields'](_0x2b99a2['query'][_0x8c71('0x40')]));_0x283362[_0x8c71('0x3f')]=_0x283362[_0x8c71('0x3f')][_0x8c71('0x41')]?_0x283362[_0x8c71('0x3f')]:_0x2807e4[_0x8c71('0x3b')];if(_0x2b99a2['query'][_0x8c71('0x4b')]){_0x283362[_0x8c71('0x50')]=[{'all':!![]}];}_0x283362=_[_0x8c71('0x49')]({},_0x283362,_0x2b99a2[_0x8c71('0x51')]);return db[_0x8c71('0x36')][_0x8c71('0x52')](_0x283362)['then'](handleEntityNotFound(_0x5e3eed,null))['then'](respondWithResult(_0x5e3eed,null))[_0x8c71('0x4d')](handleError(_0x5e3eed,null));};exports[_0x8c71('0x53')]=function(_0x336940,_0x17e39f){if(_0x336940['body']['id']){delete _0x336940[_0x8c71('0x54')]['id'];}return db[_0x8c71('0x36')][_0x8c71('0x52')]({'where':{'id':_0x336940[_0x8c71('0x4e')]['id']}})['then'](handleEntityNotFound(_0x17e39f,null))['then'](saveUpdates(_0x336940[_0x8c71('0x54')],null))[_0x8c71('0x1b')](respondWithResult(_0x17e39f,null))[_0x8c71('0x4d')](handleError(_0x17e39f,null));};exports['addLogo']=function(_0x2ade7f,_0x3b203c,_0x4e2a9d){if(_0x2ade7f['file']&&_0x2ade7f[_0x8c71('0x55')][_0x8c71('0x56')]){_0x2ade7f[_0x8c71('0x54')]['logo']=_0x2ade7f[_0x8c71('0x55')][_0x8c71('0x56')];}return db['Setting'][_0x8c71('0x52')]({'where':{'id':_0x2ade7f['params']['id']}})['then'](handleEntityNotFound(_0x3b203c,null))[_0x8c71('0x1b')](saveUpdates(_0x2ade7f[_0x8c71('0x54')],null))['then'](respondWithResult(_0x3b203c,null))[_0x8c71('0x4d')](handleError(_0x3b203c,null));};exports[_0x8c71('0x57')]=function(_0xefffe9,_0x1b66dc,_0x13547e){if(_0xefffe9['file']&&_0xefffe9['file'][_0x8c71('0x56')]){_0xefffe9[_0x8c71('0x54')][_0x8c71('0x58')]=_0xefffe9[_0x8c71('0x55')][_0x8c71('0x56')];}return db[_0x8c71('0x36')][_0x8c71('0x52')]({'where':{'id':_0xefffe9['params']['id']}})[_0x8c71('0x1b')](handleEntityNotFound(_0x1b66dc,null))[_0x8c71('0x1b')](saveUpdates(_0xefffe9[_0x8c71('0x54')],null))['then'](respondWithResult(_0x1b66dc,null))[_0x8c71('0x4d')](handleError(_0x1b66dc,null));};var utilLicense=require(_0x8c71('0x15'));exports[_0x8c71('0x59')]=function(_0x162d6d,_0x54a3cf,_0x516fdb){var _0x80f1a6=_0x8c71('0x5a');var _0x2a51b0={'custom':![]};return utilLicense[_0x8c71('0x5b')]()[_0x8c71('0x1b')](function(_0x3abb42){if(_0x3abb42){_0x2a51b0=_0x3abb42;}return db[_0x8c71('0x36')]['find']({'where':{'id':_0x162d6d[_0x8c71('0x4e')]['id']},'attributes':['logo','loginLogo',_0x8c71('0x5c'),'favicon',_0x8c71('0x5d'),_0x8c71('0x5e'),_0x8c71('0x5f'),_0x8c71('0x60')],'raw':!![]});})[_0x8c71('0x1b')](handleEntityNotFound(_0x54a3cf,null))[_0x8c71('0x1b')](function(_0xea7888){if(_0xea7888){var _0x5101c3=_0xea7888['logo']&&fs[_0x8c71('0x61')](path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x80f1a6,_[_0x8c71('0x64')](_0xea7888[_0x8c71('0x65')])))?path['join'](config[_0x8c71('0x63')],_0x80f1a6,_[_0x8c71('0x64')](_0xea7888[_0x8c71('0x65')])):path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x80f1a6,_[_0x8c71('0x64')](_0x8c71('0x66')));var _0x262662=_0x8c71('0x67')+_[_0x8c71('0x68')](_0x8c71('0x65'));if(_0xea7888[_0x262662]||!_0x2a51b0['custom']){_0x5101c3=path[_0x8c71('0x62')](config['root'],_0x80f1a6,_[_0x8c71('0x64')](_0x8c71('0x66')));}if(!fs[_0x8c71('0x61')](_0x5101c3)){throw new db[(_0x8c71('0x69'))]['ValidationError'](_[_0x8c71('0x68')]('logo')+_0x8c71('0x6a'));}return _0x54a3cf[_0x8c71('0x6b')](_0x5101c3);}})[_0x8c71('0x4d')](handleError(_0x54a3cf,null));};var utilLicense=require(_0x8c71('0x15'));exports[_0x8c71('0x6c')]=function(_0x1fa5a5,_0x2697ac,_0x365caa){var _0x3a2658=_0x8c71('0x5a');var _0x4a23a8={'custom':![]};return utilLicense[_0x8c71('0x5b')]()[_0x8c71('0x1b')](function(_0x3e67c9){if(_0x3e67c9){_0x4a23a8=_0x3e67c9;}return db[_0x8c71('0x36')][_0x8c71('0x52')]({'where':{'id':_0x1fa5a5[_0x8c71('0x4e')]['id']},'attributes':[_0x8c71('0x65'),_0x8c71('0x58'),_0x8c71('0x5c'),'favicon',_0x8c71('0x5d'),_0x8c71('0x5e'),'defaultPreferred',_0x8c71('0x60')],'raw':!![]});})[_0x8c71('0x1b')](handleEntityNotFound(_0x2697ac,null))[_0x8c71('0x1b')](function(_0x325dfe){if(_0x325dfe){var _0x36163b=_0x325dfe[_0x8c71('0x58')]&&fs[_0x8c71('0x61')](path[_0x8c71('0x62')](config['root'],_0x3a2658,_[_0x8c71('0x64')](_0x325dfe[_0x8c71('0x58')])))?path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x3a2658,_[_0x8c71('0x64')](_0x325dfe[_0x8c71('0x58')])):path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x3a2658,_[_0x8c71('0x64')](_0x8c71('0x6d')));var _0x6b830c='default'+_[_0x8c71('0x68')](_0x8c71('0x58'));if(_0x325dfe[_0x6b830c]||!_0x4a23a8[_0x8c71('0x6e')]){_0x36163b=path[_0x8c71('0x62')](config['root'],_0x3a2658,_[_0x8c71('0x64')]('default_loginLogo.svg'));}if(!fs[_0x8c71('0x61')](_0x36163b)){throw new db[(_0x8c71('0x69'))][(_0x8c71('0x6f'))](_[_0x8c71('0x68')]('loginLogo')+_0x8c71('0x6a'));}return _0x2697ac[_0x8c71('0x6b')](_0x36163b);}})['catch'](handleError(_0x2697ac,null));};exports[_0x8c71('0x70')]=function(_0x2dd6eb,_0x3f4bbb){return db['Setting'][_0x8c71('0x52')]({'where':{'id':_0x2dd6eb[_0x8c71('0x4e')]['id']},'attributes':[_0x8c71('0x71')]})['then'](respondWithResult(_0x3f4bbb,null))[_0x8c71('0x4d')](handleError(_0x3f4bbb,null));};exports[_0x8c71('0x72')]=function(_0x379573,_0xa2b911,_0x19dc8a){if(_0x379573[_0x8c71('0x55')]&&_0x379573[_0x8c71('0x55')][_0x8c71('0x56')]){_0x379573[_0x8c71('0x54')][_0x8c71('0x5c')]=_0x379573[_0x8c71('0x55')][_0x8c71('0x56')];}return db[_0x8c71('0x36')]['find']({'where':{'id':_0x379573[_0x8c71('0x4e')]['id']}})['then'](handleEntityNotFound(_0xa2b911,null))[_0x8c71('0x1b')](saveUpdates(_0x379573['body'],null))[_0x8c71('0x1b')](respondWithResult(_0xa2b911,null))[_0x8c71('0x4d')](handleError(_0xa2b911,null));};var utilLicense=require(_0x8c71('0x15'));exports[_0x8c71('0x73')]=function(_0x3b289d,_0x2adfd4,_0x3bf94b){var _0x542c7b=_0x8c71('0x5a');var _0x499cd1={'custom':![]};return utilLicense[_0x8c71('0x5b')]()[_0x8c71('0x1b')](function(_0x4a7682){if(_0x4a7682){_0x499cd1=_0x4a7682;}return db[_0x8c71('0x36')][_0x8c71('0x52')]({'where':{'id':_0x3b289d[_0x8c71('0x4e')]['id']},'attributes':[_0x8c71('0x65'),_0x8c71('0x58'),_0x8c71('0x5c'),_0x8c71('0x74'),_0x8c71('0x5d'),'defaultLoginLogo',_0x8c71('0x5f'),_0x8c71('0x60')],'raw':!![]});})['then'](handleEntityNotFound(_0x2adfd4,null))[_0x8c71('0x1b')](function(_0x3e47d9){if(_0x3e47d9){var _0x1d014d=_0x3e47d9[_0x8c71('0x5c')]&&fs[_0x8c71('0x61')](path[_0x8c71('0x62')](config['root'],_0x542c7b,_['toLower'](_0x3e47d9[_0x8c71('0x5c')])))?path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x542c7b,_[_0x8c71('0x64')](_0x3e47d9['preferred'])):path['join'](config[_0x8c71('0x63')],_0x542c7b,_[_0x8c71('0x64')]('default_preferred.png'));var _0x555a11=_0x8c71('0x67')+_[_0x8c71('0x68')](_0x8c71('0x5c'));if(_0x3e47d9[_0x555a11]||!_0x499cd1[_0x8c71('0x6e')]||!_0x499cd1[_0x8c71('0x5c')]){_0x1d014d=path['join'](config['root'],_0x542c7b,_['toLower']('default_preferred.png'));}if(!fs[_0x8c71('0x61')](_0x1d014d)){throw new db['Sequelize'][(_0x8c71('0x6f'))](_['upperFirst'](_0x8c71('0x5c'))+_0x8c71('0x6a'));}return _0x2adfd4[_0x8c71('0x6b')](_0x1d014d);}})['catch'](handleError(_0x2adfd4,null));};exports[_0x8c71('0x75')]=function(_0x1cc498,_0x5e3a52,_0x357a20){if(_0x1cc498['file']&&_0x1cc498[_0x8c71('0x55')]['filename']){_0x1cc498['body']['favicon']=_0x1cc498['file'][_0x8c71('0x56')];}return db['Setting']['find']({'where':{'id':_0x1cc498[_0x8c71('0x4e')]['id']}})[_0x8c71('0x1b')](handleEntityNotFound(_0x5e3a52,null))[_0x8c71('0x1b')](saveUpdates(_0x1cc498['body'],null))[_0x8c71('0x1b')](respondWithResult(_0x5e3a52,null))[_0x8c71('0x4d')](handleError(_0x5e3a52,null));};var utilLicense=require(_0x8c71('0x15'));exports[_0x8c71('0x76')]=function(_0x4494d4,_0x5ad9cf,_0x12bb60){var _0x271e13='server/files/images/logos';var _0x433003={'custom':![]};return utilLicense[_0x8c71('0x5b')]()[_0x8c71('0x1b')](function(_0x56f49a){if(_0x56f49a){_0x433003=_0x56f49a;}return db[_0x8c71('0x36')]['find']({'where':{'id':_0x4494d4['params']['id']},'attributes':[_0x8c71('0x65'),'loginLogo',_0x8c71('0x5c'),'favicon',_0x8c71('0x5d'),_0x8c71('0x5e'),_0x8c71('0x5f'),_0x8c71('0x60')],'raw':!![]});})[_0x8c71('0x1b')](handleEntityNotFound(_0x5ad9cf,null))['then'](function(_0x5f1314){if(_0x5f1314){var _0x3a8810=_0x5f1314[_0x8c71('0x74')]&&fs[_0x8c71('0x61')](path['join'](config[_0x8c71('0x63')],_0x271e13,_['toLower'](_0x5f1314[_0x8c71('0x74')])))?path['join'](config['root'],_0x271e13,_[_0x8c71('0x64')](_0x5f1314[_0x8c71('0x74')])):path['join'](config[_0x8c71('0x63')],_0x271e13,_[_0x8c71('0x64')](_0x8c71('0x77')));var _0xec5386=_0x8c71('0x67')+_[_0x8c71('0x68')](_0x8c71('0x74'));if(_0x5f1314[_0xec5386]||!_0x433003['custom']){_0x3a8810=path[_0x8c71('0x62')](config[_0x8c71('0x63')],_0x271e13,_[_0x8c71('0x64')]('default_favicon.ico'));}if(!fs['existsSync'](_0x3a8810)){throw new db[(_0x8c71('0x69'))][(_0x8c71('0x6f'))](_['upperFirst'](_0x8c71('0x74'))+_0x8c71('0x6a'));}return _0x5ad9cf['download'](_0x3a8810);}})[_0x8c71('0x4d')](handleError(_0x5ad9cf,null));};exports[_0x8c71('0x78')]=function(_0x542123,_0x392b78){var _0x11dadb={'offset':moment()['utcOffset']()};_0x11dadb['now']=moment()[_0x8c71('0x79')](_0x11dadb[_0x8c71('0x26')])[_0x8c71('0x7a')](_0x8c71('0x7b'));return _0x392b78[_0x8c71('0x24')](0xc8)['send'](_0x11dadb);};
\ No newline at end of file
+var _0xf3ff=['where','filters','pick','filter','merge','options','include','catch','show','params','keys','includeAll','body','find','addLogo','file','filename','addLogoLogin','getLicense','logo','loginLogo','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','root','join','toLower','default_logo.svg','default','upperFirst','Sequelize','ValidationError','\x20not\x20found','download','getLogoLogin','server/files/images/logos','preferred','default_loginLogo.svg','custom','existsSync','securePassword','getPreferred','favicon','default_preferred.png','addFavicon','getFavicon','default_favicon.ico','getDate','utcOffset','format','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','info','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','Setting,\x20%s,\x20%s','message','result','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','Setting','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort'];(function(_0x2955a9,_0x5afb3f){var _0x584d31=function(_0x4bb60d){while(--_0x4bb60d){_0x2955a9['push'](_0x2955a9['shift']());}};_0x584d31(++_0x5afb3f);}(_0xf3ff,0xae));var _0xff3f=function(_0x45ed8c,_0x370388){_0x45ed8c=_0x45ed8c-0x0;var _0x540f97=_0xf3ff[_0x45ed8c];return _0x540f97;};'use strict';var emlformat=require(_0xff3f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xff3f('0x1'));var jsonpatch=require(_0xff3f('0x2'));var rp=require(_0xff3f('0x3'));var moment=require(_0xff3f('0x4'));var BPromise=require(_0xff3f('0x5'));var Mustache=require(_0xff3f('0x6'));var util=require('util');var path=require(_0xff3f('0x7'));var sox=require(_0xff3f('0x8'));var csv=require(_0xff3f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xff3f('0xa'));var _=require(_0xff3f('0xb'));var squel=require('squel');var crypto=require(_0xff3f('0xc'));var jsforce=require(_0xff3f('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xff3f('0xe'));var Redis=require('ioredis');var authService=require(_0xff3f('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xff3f('0x10'));var hardwareService=require(_0xff3f('0x11'));var logger=require(_0xff3f('0x12'))(_0xff3f('0x13'));var utils=require(_0xff3f('0x14'));var config=require(_0xff3f('0x15'));var licenseUtil=require(_0xff3f('0x16'));var db=require(_0xff3f('0x17'))['db'];var jayson=require(_0xff3f('0x18'));var client=jayson[_0xff3f('0x19')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4a09af,_0x30d2fe,_0x273f9b,_0x32f887){return new BPromise(function(_0x4b3409,_0x54b52c){var _0x3c2727=_0x32f887||client;return _0x3c2727['request'](_0x4a09af,_0x273f9b)['then'](function(_0x2a7c79){logger[_0xff3f('0x1a')]('Setting,\x20%s,\x20%s',_0x30d2fe,_0xff3f('0x1b'));logger['debug'](_0xff3f('0x1c'),_0x30d2fe,'request\x20sent',JSON[_0xff3f('0x1d')](_0x2a7c79));if(_0x2a7c79[_0xff3f('0x1e')]){if(_0x2a7c79[_0xff3f('0x1e')]['code']===0x1f4){logger[_0xff3f('0x1e')](_0xff3f('0x1f'),_0x30d2fe,_0x2a7c79['error'][_0xff3f('0x20')]);return _0x54b52c(_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);}logger[_0xff3f('0x1e')](_0xff3f('0x1f'),_0x30d2fe,_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);return _0x4b3409(_0x2a7c79[_0xff3f('0x1e')][_0xff3f('0x20')]);}else{logger[_0xff3f('0x1a')](_0xff3f('0x1f'),_0x30d2fe,_0xff3f('0x1b'));_0x4b3409(_0x2a7c79[_0xff3f('0x21')][_0xff3f('0x20')]);}})['catch'](function(_0x552113){logger[_0xff3f('0x1e')]('Setting,\x20%s,\x20%s',_0x30d2fe,_0x552113);_0x54b52c(_0x552113);});});}function respondWithStatusCode(_0x418316,_0x2bbbb2){_0x2bbbb2=_0x2bbbb2||0xcc;return function(_0x4dd74a){if(_0x4dd74a){return _0x418316[_0xff3f('0x22')](_0x2bbbb2);}return _0x418316['status'](_0x2bbbb2)[_0xff3f('0x23')]();};}function respondWithResult(_0x51b6bb,_0x20b234){_0x20b234=_0x20b234||0xc8;return function(_0x7b26a0){if(_0x7b26a0){return _0x51b6bb[_0xff3f('0x24')](_0x20b234)[_0xff3f('0x25')](_0x7b26a0);}};}function respondWithFilteredResult(_0x44fb87,_0x5d6a4e){return function(_0x579659){if(_0x579659){var _0x32addc=typeof _0x5d6a4e[_0xff3f('0x26')]===_0xff3f('0x27')&&typeof _0x5d6a4e[_0xff3f('0x28')]===_0xff3f('0x27');var _0x5e1d84=_0x579659[_0xff3f('0x29')];var _0x2dac57=_0x32addc?0x0:_0x5d6a4e['offset'];var _0x1f6d2a=_0x32addc?_0x579659[_0xff3f('0x29')]:_0x5d6a4e[_0xff3f('0x26')]+_0x5d6a4e[_0xff3f('0x28')];var _0x3bdbfa;if(_0x1f6d2a>=_0x5e1d84){_0x1f6d2a=_0x5e1d84;_0x3bdbfa=0xc8;}else{_0x3bdbfa=0xce;}_0x44fb87[_0xff3f('0x24')](_0x3bdbfa);return _0x44fb87[_0xff3f('0x2a')](_0xff3f('0x2b'),_0x2dac57+'-'+_0x1f6d2a+'/'+_0x5e1d84)[_0xff3f('0x25')](_0x579659);}return null;};}function patchUpdates(_0x183922){return function(_0x513871){try{jsonpatch[_0xff3f('0x2c')](_0x513871,_0x183922,!![]);}catch(_0x53d89e){return BPromise[_0xff3f('0x2d')](_0x53d89e);}return _0x513871[_0xff3f('0x2e')]();};}function saveUpdates(_0x42f420,_0x74b353){return function(_0x31e834){if(_0x31e834){return _0x31e834[_0xff3f('0x2f')](_0x42f420)[_0xff3f('0x30')](function(_0x1d746c){return _0x1d746c;});}return null;};}function removeEntity(_0x59402d,_0x57698c){return function(_0x3d50a5){if(_0x3d50a5){return _0x3d50a5[_0xff3f('0x31')]()[_0xff3f('0x30')](function(){_0x59402d[_0xff3f('0x24')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17e362,_0x46c712){return function(_0x90f0cf){if(!_0x90f0cf){_0x17e362['sendStatus'](0x194);}return _0x90f0cf;};}function handleError(_0x43153e,_0x3d8c48){_0x3d8c48=_0x3d8c48||0x1f4;return function(_0x300972){logger['error'](_0x300972[_0xff3f('0x32')]);if(_0x300972['name']){delete _0x300972[_0xff3f('0x33')];}_0x43153e[_0xff3f('0x24')](_0x3d8c48)[_0xff3f('0x34')](_0x300972);};}exports[_0xff3f('0x35')]=function(_0x32e640,_0x59dd93){var _0x521d6f={},_0x3f8710={},_0x48fda6={'count':0x0,'rows':[]};var _0x2d2893=_[_0xff3f('0x36')](db[_0xff3f('0x37')][_0xff3f('0x38')],function(_0xf172a){return{'name':_0xf172a[_0xff3f('0x39')],'type':_0xf172a[_0xff3f('0x3a')][_0xff3f('0x3b')]};});_0x3f8710[_0xff3f('0x3c')]=_[_0xff3f('0x36')](_0x2d2893,_0xff3f('0x33'));_0x3f8710[_0xff3f('0x3d')]=_['keys'](_0x32e640['query']);_0x3f8710['filters']=_[_0xff3f('0x3e')](_0x3f8710['model'],_0x3f8710['query']);_0x521d6f[_0xff3f('0x3f')]=_['intersection'](_0x3f8710[_0xff3f('0x3c')],qs[_0xff3f('0x40')](_0x32e640[_0xff3f('0x3d')][_0xff3f('0x40')]));_0x521d6f[_0xff3f('0x3f')]=_0x521d6f[_0xff3f('0x3f')][_0xff3f('0x41')]?_0x521d6f[_0xff3f('0x3f')]:_0x3f8710[_0xff3f('0x3c')];if(!_0x32e640[_0xff3f('0x3d')][_0xff3f('0x42')](_0xff3f('0x43'))){_0x521d6f[_0xff3f('0x28')]=qs['limit'](_0x32e640['query']['limit']);_0x521d6f[_0xff3f('0x26')]=qs[_0xff3f('0x26')](_0x32e640['query'][_0xff3f('0x26')]);}_0x521d6f[_0xff3f('0x44')]=qs[_0xff3f('0x45')](_0x32e640[_0xff3f('0x3d')]['sort']);_0x521d6f[_0xff3f('0x46')]=qs[_0xff3f('0x47')](_[_0xff3f('0x48')](_0x32e640[_0xff3f('0x3d')],_0x3f8710[_0xff3f('0x47')]),_0x2d2893);if(_0x32e640[_0xff3f('0x3d')][_0xff3f('0x49')]){_0x521d6f[_0xff3f('0x46')]=_['merge'](_0x521d6f[_0xff3f('0x46')],{'$or':_['map'](_0x2d2893,function(_0x2200f3){if(_0x2200f3[_0xff3f('0x3a')]!=='VIRTUAL'){var _0x23668c={};_0x23668c[_0x2200f3['name']]={'$like':'%'+_0x32e640[_0xff3f('0x3d')]['filter']+'%'};return _0x23668c;}})});}_0x521d6f=_[_0xff3f('0x4a')]({},_0x521d6f,_0x32e640[_0xff3f('0x4b')]);var _0x6604c={'where':_0x521d6f[_0xff3f('0x46')]};return db[_0xff3f('0x37')][_0xff3f('0x29')](_0x6604c)['then'](function(_0x5c0cd5){_0x48fda6[_0xff3f('0x29')]=_0x5c0cd5;if(_0x32e640[_0xff3f('0x3d')]['includeAll']){_0x521d6f[_0xff3f('0x4c')]=[{'all':!![]}];}return db[_0xff3f('0x37')]['findAll'](_0x521d6f);})[_0xff3f('0x30')](function(_0x5ed067){_0x48fda6['rows']=_0x5ed067;return _0x48fda6;})[_0xff3f('0x30')](respondWithFilteredResult(_0x59dd93,_0x521d6f))[_0xff3f('0x4d')](handleError(_0x59dd93,null));};exports[_0xff3f('0x4e')]=function(_0x4b03fa,_0x18e330){var _0x4af5a0={'raw':![],'where':{'id':_0x4b03fa[_0xff3f('0x4f')]['id']}},_0xec21bf={};_0xec21bf[_0xff3f('0x3c')]=_[_0xff3f('0x50')](db[_0xff3f('0x37')][_0xff3f('0x38')]);_0xec21bf['query']=_[_0xff3f('0x50')](_0x4b03fa[_0xff3f('0x3d')]);_0xec21bf['filters']=_[_0xff3f('0x3e')](_0xec21bf[_0xff3f('0x3c')],_0xec21bf[_0xff3f('0x3d')]);_0x4af5a0[_0xff3f('0x3f')]=_[_0xff3f('0x3e')](_0xec21bf[_0xff3f('0x3c')],qs[_0xff3f('0x40')](_0x4b03fa[_0xff3f('0x3d')][_0xff3f('0x40')]));_0x4af5a0[_0xff3f('0x3f')]=_0x4af5a0['attributes'][_0xff3f('0x41')]?_0x4af5a0[_0xff3f('0x3f')]:_0xec21bf[_0xff3f('0x3c')];if(_0x4b03fa['query'][_0xff3f('0x51')]){_0x4af5a0[_0xff3f('0x4c')]=[{'all':!![]}];}_0x4af5a0=_[_0xff3f('0x4a')]({},_0x4af5a0,_0x4b03fa[_0xff3f('0x4b')]);return db['Setting']['find'](_0x4af5a0)[_0xff3f('0x30')](handleEntityNotFound(_0x18e330,null))['then'](respondWithResult(_0x18e330,null))[_0xff3f('0x4d')](handleError(_0x18e330,null));};exports['update']=function(_0x4cf020,_0x58af52){if(_0x4cf020[_0xff3f('0x52')]['id']){delete _0x4cf020[_0xff3f('0x52')]['id'];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x4cf020[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0x58af52,null))['then'](saveUpdates(_0x4cf020['body'],null))[_0xff3f('0x30')](respondWithResult(_0x58af52,null))['catch'](handleError(_0x58af52,null));};exports[_0xff3f('0x54')]=function(_0x487f24,_0xa3537,_0x3c20b3){if(_0x487f24[_0xff3f('0x55')]&&_0x487f24[_0xff3f('0x55')][_0xff3f('0x56')]){_0x487f24[_0xff3f('0x52')]['logo']=_0x487f24['file'][_0xff3f('0x56')];}return db[_0xff3f('0x37')]['find']({'where':{'id':_0x487f24[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0xa3537,null))[_0xff3f('0x30')](saveUpdates(_0x487f24[_0xff3f('0x52')],null))[_0xff3f('0x30')](respondWithResult(_0xa3537,null))[_0xff3f('0x4d')](handleError(_0xa3537,null));};exports[_0xff3f('0x57')]=function(_0x478885,_0x1b8a12,_0x5f22e0){if(_0x478885['file']&&_0x478885[_0xff3f('0x55')][_0xff3f('0x56')]){_0x478885[_0xff3f('0x52')]['loginLogo']=_0x478885['file'][_0xff3f('0x56')];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x478885[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0x1b8a12,null))['then'](saveUpdates(_0x478885[_0xff3f('0x52')],null))['then'](respondWithResult(_0x1b8a12,null))['catch'](handleError(_0x1b8a12,null));};var utilLicense=require(_0xff3f('0x16'));exports['getLogo']=function(_0x1b5592,_0x4af2ed,_0x1a0a2e){var _0x13455c='server/files/images/logos';var _0x35dcf8={'custom':![]};return utilLicense[_0xff3f('0x58')]()[_0xff3f('0x30')](function(_0x1e474f){if(_0x1e474f){_0x35dcf8=_0x1e474f;}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x1b5592['params']['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),'preferred','favicon',_0xff3f('0x5b'),_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x4af2ed,null))[_0xff3f('0x30')](function(_0x3a83ec){if(_0x3a83ec){var _0x14065a=_0x3a83ec[_0xff3f('0x59')]&&fs['existsSync'](path['join'](config[_0xff3f('0x5f')],_0x13455c,_['toLower'](_0x3a83ec['logo'])))?path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0x3a83ec[_0xff3f('0x59')])):path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0xff3f('0x62')));var _0x29f105=_0xff3f('0x63')+_[_0xff3f('0x64')](_0xff3f('0x59'));if(_0x3a83ec[_0x29f105]||!_0x35dcf8['custom']){_0x14065a=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x13455c,_[_0xff3f('0x61')](_0xff3f('0x62')));}if(!fs['existsSync'](_0x14065a)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_[_0xff3f('0x64')](_0xff3f('0x59'))+_0xff3f('0x67'));}return _0x4af2ed[_0xff3f('0x68')](_0x14065a);}})[_0xff3f('0x4d')](handleError(_0x4af2ed,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x69')]=function(_0x229148,_0x4f8043,_0x22cbf3){var _0x105a5f=_0xff3f('0x6a');var _0x284392={'custom':![]};return utilLicense[_0xff3f('0x58')]()[_0xff3f('0x30')](function(_0x31478f){if(_0x31478f){_0x284392=_0x31478f;}return db[_0xff3f('0x37')]['find']({'where':{'id':_0x229148[_0xff3f('0x4f')]['id']},'attributes':['logo',_0xff3f('0x5a'),_0xff3f('0x6b'),'favicon','defaultLogo',_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})[_0xff3f('0x30')](handleEntityNotFound(_0x4f8043,null))[_0xff3f('0x30')](function(_0x2397af){if(_0x2397af){var _0x3aa63a=_0x2397af[_0xff3f('0x5a')]&&fs['existsSync'](path['join'](config[_0xff3f('0x5f')],_0x105a5f,_[_0xff3f('0x61')](_0x2397af[_0xff3f('0x5a')])))?path['join'](config['root'],_0x105a5f,_[_0xff3f('0x61')](_0x2397af[_0xff3f('0x5a')])):path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x105a5f,_['toLower'](_0xff3f('0x6c')));var _0x5be87c='default'+_['upperFirst'](_0xff3f('0x5a'));if(_0x2397af[_0x5be87c]||!_0x284392[_0xff3f('0x6d')]){_0x3aa63a=path['join'](config[_0xff3f('0x5f')],_0x105a5f,_[_0xff3f('0x61')]('default_loginLogo.svg'));}if(!fs[_0xff3f('0x6e')](_0x3aa63a)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_['upperFirst'](_0xff3f('0x5a'))+_0xff3f('0x67'));}return _0x4f8043['download'](_0x3aa63a);}})[_0xff3f('0x4d')](handleError(_0x4f8043,null));};exports['gdpr']=function(_0x5861ed,_0x408f1a){return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x5861ed['params']['id']},'attributes':[_0xff3f('0x6f')]})['then'](respondWithResult(_0x408f1a,null))[_0xff3f('0x4d')](handleError(_0x408f1a,null));};exports['addPreferred']=function(_0x221fde,_0xf317b5,_0x2a3157){if(_0x221fde['file']&&_0x221fde[_0xff3f('0x55')][_0xff3f('0x56')]){_0x221fde['body'][_0xff3f('0x6b')]=_0x221fde[_0xff3f('0x55')]['filename'];}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x221fde[_0xff3f('0x4f')]['id']}})[_0xff3f('0x30')](handleEntityNotFound(_0xf317b5,null))[_0xff3f('0x30')](saveUpdates(_0x221fde[_0xff3f('0x52')],null))['then'](respondWithResult(_0xf317b5,null))[_0xff3f('0x4d')](handleError(_0xf317b5,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x70')]=function(_0x171b2d,_0x401150,_0x21df4b){var _0xb8630=_0xff3f('0x6a');var _0x23fe62={'custom':![]};return utilLicense['getLicense']()['then'](function(_0xc27075){if(_0xc27075){_0x23fe62=_0xc27075;}return db[_0xff3f('0x37')][_0xff3f('0x53')]({'where':{'id':_0x171b2d[_0xff3f('0x4f')]['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),_0xff3f('0x6b'),_0xff3f('0x71'),_0xff3f('0x5b'),_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})['then'](handleEntityNotFound(_0x401150,null))[_0xff3f('0x30')](function(_0x23dd85){if(_0x23dd85){var _0x41a536=_0x23dd85['preferred']&&fs['existsSync'](path[_0xff3f('0x60')](config['root'],_0xb8630,_[_0xff3f('0x61')](_0x23dd85[_0xff3f('0x6b')])))?path['join'](config['root'],_0xb8630,_[_0xff3f('0x61')](_0x23dd85['preferred'])):path['join'](config['root'],_0xb8630,_[_0xff3f('0x61')]('default_preferred.png'));var _0x5dac01='default'+_[_0xff3f('0x64')](_0xff3f('0x6b'));if(_0x23dd85[_0x5dac01]||!_0x23fe62['custom']||!_0x23fe62[_0xff3f('0x6b')]){_0x41a536=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0xb8630,_[_0xff3f('0x61')](_0xff3f('0x72')));}if(!fs[_0xff3f('0x6e')](_0x41a536)){throw new db[(_0xff3f('0x65'))][(_0xff3f('0x66'))](_[_0xff3f('0x64')](_0xff3f('0x6b'))+_0xff3f('0x67'));}return _0x401150['download'](_0x41a536);}})[_0xff3f('0x4d')](handleError(_0x401150,null));};exports[_0xff3f('0x73')]=function(_0x206ef3,_0x44b937,_0x1704a0){if(_0x206ef3[_0xff3f('0x55')]&&_0x206ef3[_0xff3f('0x55')][_0xff3f('0x56')]){_0x206ef3[_0xff3f('0x52')][_0xff3f('0x71')]=_0x206ef3[_0xff3f('0x55')][_0xff3f('0x56')];}return db['Setting'][_0xff3f('0x53')]({'where':{'id':_0x206ef3[_0xff3f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x44b937,null))[_0xff3f('0x30')](saveUpdates(_0x206ef3[_0xff3f('0x52')],null))['then'](respondWithResult(_0x44b937,null))[_0xff3f('0x4d')](handleError(_0x44b937,null));};var utilLicense=require(_0xff3f('0x16'));exports[_0xff3f('0x74')]=function(_0x2b4504,_0x138607,_0x15d000){var _0x161926=_0xff3f('0x6a');var _0x542980={'custom':![]};return utilLicense['getLicense']()[_0xff3f('0x30')](function(_0x1b08d8){if(_0x1b08d8){_0x542980=_0x1b08d8;}return db['Setting']['find']({'where':{'id':_0x2b4504[_0xff3f('0x4f')]['id']},'attributes':[_0xff3f('0x59'),_0xff3f('0x5a'),_0xff3f('0x6b'),_0xff3f('0x71'),'defaultLogo',_0xff3f('0x5c'),_0xff3f('0x5d'),_0xff3f('0x5e')],'raw':!![]});})[_0xff3f('0x30')](handleEntityNotFound(_0x138607,null))[_0xff3f('0x30')](function(_0x168332){if(_0x168332){var _0xe0bb69=_0x168332[_0xff3f('0x71')]&&fs[_0xff3f('0x6e')](path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0x168332[_0xff3f('0x71')])))?path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0x168332[_0xff3f('0x71')])):path[_0xff3f('0x60')](config['root'],_0x161926,_[_0xff3f('0x61')]('default_favicon.ico'));var _0x127de8=_0xff3f('0x63')+_[_0xff3f('0x64')](_0xff3f('0x71'));if(_0x168332[_0x127de8]||!_0x542980[_0xff3f('0x6d')]){_0xe0bb69=path[_0xff3f('0x60')](config[_0xff3f('0x5f')],_0x161926,_[_0xff3f('0x61')](_0xff3f('0x75')));}if(!fs[_0xff3f('0x6e')](_0xe0bb69)){throw new db['Sequelize']['ValidationError'](_[_0xff3f('0x64')](_0xff3f('0x71'))+_0xff3f('0x67'));}return _0x138607['download'](_0xe0bb69);}})['catch'](handleError(_0x138607,null));};exports[_0xff3f('0x76')]=function(_0x38e0b1,_0x772330){var _0x7158a1={'offset':moment()[_0xff3f('0x77')]()};_0x7158a1['now']=moment()[_0xff3f('0x77')](_0x7158a1[_0xff3f('0x26')])[_0xff3f('0x78')](_0xff3f('0x79'));return _0x772330[_0xff3f('0x24')](0xc8)[_0xff3f('0x34')](_0x7158a1);};
\ No newline at end of file
index 3ae6907..aec7b49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['exports','Setting','settings','lodash','../../config/logger','api','moment','path','../../config/environment','./setting.attributes'];(function(_0x5d8987,_0x14d054){var _0x2997eb=function(_0x56f92a){while(--_0x56f92a){_0x5d8987['push'](_0x5d8987['shift']());}};_0x2997eb(++_0x14d054);}(_0x3e74,0x175));var _0x43e7=function(_0x964650,_0x3539be){_0x964650=_0x964650-0x0;var _0x14a224=_0x3e74[_0x964650];return _0x14a224;};'use strict';var _=require(_0x43e7('0x0'));var util=require('util');var logger=require(_0x43e7('0x1'))(_0x43e7('0x2'));var moment=require(_0x43e7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x43e7('0x4'));var rimraf=require('rimraf');var config=require(_0x43e7('0x5'));var attributes=require(_0x43e7('0x6'));module[_0x43e7('0x7')]=function(_0x1c503b,_0xc98b9c){return _0x1c503b['define'](_0x43e7('0x8'),attributes,{'tableName':_0x43e7('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x4b7b9b,_0xa4aff9){var _0x3be710=function(_0x5b64fa){while(--_0x5b64fa){_0x4b7b9b['push'](_0x4b7b9b['shift']());}};_0x3be710(++_0xa4aff9);}(_0x008c,0x188));var _0xc008=function(_0x76b00b,_0x26e939){_0x76b00b=_0x76b00b-0x0;var _0xc8e4a=_0x008c[_0x76b00b];return _0xc8e4a;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5e2aaa2..44ed130 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d1e=['info','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','stringify','error','message','Setting,\x20%s,\x20%s','result','catch','ShowSetting','Setting','find','options','where','attributes','include','model'];(function(_0x3feed7,_0x209f8e){var _0x38fbcd=function(_0x23694b){while(--_0x23694b){_0x3feed7['push'](_0x3feed7['shift']());}};_0x38fbcd(++_0x209f8e);}(_0x9d1e,0x1e7));var _0xe9d1=function(_0x286b83,_0x3e3e6c){_0x286b83=_0x286b83-0x0;var _0x5e3653=_0x9d1e[_0x286b83];return _0x5e3653;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xe9d1('0x0'));var BPromise=require(_0xe9d1('0x1'));var rs=require(_0xe9d1('0x2'));var fs=require('fs');var Redis=require(_0xe9d1('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xe9d1('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0xe9d1('0x5'));var jayson=require(_0xe9d1('0x6'));var client=jayson[_0xe9d1('0x7')][_0xe9d1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1d87d1,_0x48eccd,_0x4916fc){return new BPromise(function(_0x42f2f3,_0x2634e7){return client[_0xe9d1('0x9')](_0x1d87d1,_0x4916fc)[_0xe9d1('0xa')](function(_0x4f7607){logger['info']('Setting,\x20%s,\x20%s',_0x48eccd,_0xe9d1('0xb'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x48eccd,_0xe9d1('0xb'),JSON[_0xe9d1('0xc')](_0x4f7607));if(_0x4f7607[_0xe9d1('0xd')]){if(_0x4f7607[_0xe9d1('0xd')]['code']===0x1f4){logger[_0xe9d1('0xd')]('Setting,\x20%s,\x20%s',_0x48eccd,_0x4f7607[_0xe9d1('0xd')][_0xe9d1('0xe')]);return _0x2634e7(_0x4f7607[_0xe9d1('0xd')][_0xe9d1('0xe')]);}logger[_0xe9d1('0xd')](_0xe9d1('0xf'),_0x48eccd,_0x4f7607[_0xe9d1('0xd')][_0xe9d1('0xe')]);return _0x42f2f3(_0x4f7607['error'][_0xe9d1('0xe')]);}else{logger['info'](_0xe9d1('0xf'),_0x48eccd,_0xe9d1('0xb'));_0x42f2f3(_0x4f7607[_0xe9d1('0x10')]['message']);}})[_0xe9d1('0x11')](function(_0x1376bb){logger[_0xe9d1('0xd')](_0xe9d1('0xf'),_0x48eccd,_0x1376bb);_0x2634e7(_0x1376bb);});});}exports[_0xe9d1('0x12')]=function(_0x1165e8){var _0x56ee3f=this;return new Promise(function(_0x2b7058,_0x466cd2){return db[_0xe9d1('0x13')][_0xe9d1('0x14')]({'raw':_0x1165e8[_0xe9d1('0x15')]?_0x1165e8[_0xe9d1('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1165e8[_0xe9d1('0x15')]?_0x1165e8[_0xe9d1('0x15')][_0xe9d1('0x16')]||null:null,'attributes':_0x1165e8[_0xe9d1('0x15')]?_0x1165e8[_0xe9d1('0x15')][_0xe9d1('0x17')]||null:null,'include':_0x1165e8[_0xe9d1('0x15')]?_0x1165e8[_0xe9d1('0x15')][_0xe9d1('0x18')]?_['map'](_0x1165e8[_0xe9d1('0x15')][_0xe9d1('0x18')],function(_0x43f948){return{'model':db[_0x43f948[_0xe9d1('0x19')]],'as':_0x43f948['as'],'attributes':_0x43f948[_0xe9d1('0x17')],'include':_0x43f948[_0xe9d1('0x18')]?_['map'](_0x43f948[_0xe9d1('0x18')],function(_0x34d1fa){return{'model':db[_0x34d1fa[_0xe9d1('0x19')]],'as':_0x34d1fa['as'],'attributes':_0x34d1fa['attributes'],'include':_0x34d1fa[_0xe9d1('0x18')]?_['map'](_0x34d1fa[_0xe9d1('0x18')],function(_0x2e2fa6){return{'model':db[_0x2e2fa6[_0xe9d1('0x19')]],'as':_0x2e2fa6['as'],'attributes':_0x2e2fa6[_0xe9d1('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x24c370){logger[_0xe9d1('0x1a')]('ShowSetting',_0x1165e8);logger['debug'](_0xe9d1('0x12'),_0x1165e8,JSON[_0xe9d1('0xc')](_0x24c370));_0x2b7058(_0x24c370);})['catch'](function(_0x13422f){logger[_0xe9d1('0xd')](_0xe9d1('0x12'),_0x13422f[_0xe9d1('0xe')],_0x1165e8);_0x466cd2(_0x56ee3f[_0xe9d1('0xd')](0x1f4,_0x13422f[_0xe9d1('0xe')]));});});};
\ No newline at end of file
+var _0x0de8=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowSetting','find','options','attributes','include','map','model','then','lodash','util','moment','randomstring'];(function(_0x52a9fa,_0x13f364){var _0x13280b=function(_0x5bd93a){while(--_0x5bd93a){_0x52a9fa['push'](_0x52a9fa['shift']());}};_0x13280b(++_0x13f364);}(_0x0de8,0x7c));var _0x80de=function(_0x5953d3,_0xebf3f3){_0x5953d3=_0x5953d3-0x0;var _0x3a4d54=_0x0de8[_0x5953d3];return _0x3a4d54;};'use strict';var _=require(_0x80de('0x0'));var util=require(_0x80de('0x1'));var moment=require(_0x80de('0x2'));var BPromise=require('bluebird');var rs=require(_0x80de('0x3'));var fs=require('fs');var Redis=require(_0x80de('0x4'));var db=require(_0x80de('0x5'))['db'];var utils=require(_0x80de('0x6'));var logger=require(_0x80de('0x7'))(_0x80de('0x8'));var config=require(_0x80de('0x9'));var jayson=require(_0x80de('0xa'));var client=jayson[_0x80de('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c631a,_0x4baac0,_0x56ecd4){return new BPromise(function(_0x2ab899,_0x503cae){return client[_0x80de('0xc')](_0x3c631a,_0x56ecd4)['then'](function(_0x3f6ed6){logger[_0x80de('0xd')](_0x80de('0xe'),_0x4baac0,_0x80de('0xf'));logger[_0x80de('0x10')](_0x80de('0x11'),_0x4baac0,_0x80de('0xf'),JSON[_0x80de('0x12')](_0x3f6ed6));if(_0x3f6ed6['error']){if(_0x3f6ed6[_0x80de('0x13')][_0x80de('0x14')]===0x1f4){logger[_0x80de('0x13')](_0x80de('0xe'),_0x4baac0,_0x3f6ed6['error'][_0x80de('0x15')]);return _0x503cae(_0x3f6ed6[_0x80de('0x13')][_0x80de('0x15')]);}logger[_0x80de('0x13')]('Setting,\x20%s,\x20%s',_0x4baac0,_0x3f6ed6[_0x80de('0x13')][_0x80de('0x15')]);return _0x2ab899(_0x3f6ed6[_0x80de('0x13')]['message']);}else{logger['info'](_0x80de('0xe'),_0x4baac0,'request\x20sent');_0x2ab899(_0x3f6ed6[_0x80de('0x16')][_0x80de('0x15')]);}})[_0x80de('0x17')](function(_0x2a3a69){logger['error'](_0x80de('0xe'),_0x4baac0,_0x2a3a69);_0x503cae(_0x2a3a69);});});}exports[_0x80de('0x18')]=function(_0xd7e229){var _0x3fef9f=this;return new Promise(function(_0x485085,_0x30ce3b){return db['Setting'][_0x80de('0x19')]({'raw':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0xd7e229[_0x80de('0x1a')]?_0xd7e229['options']['where']||null:null,'attributes':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')][_0x80de('0x1b')]||null:null,'include':_0xd7e229[_0x80de('0x1a')]?_0xd7e229[_0x80de('0x1a')][_0x80de('0x1c')]?_[_0x80de('0x1d')](_0xd7e229['options'][_0x80de('0x1c')],function(_0x2a2121){return{'model':db[_0x2a2121['model']],'as':_0x2a2121['as'],'attributes':_0x2a2121[_0x80de('0x1b')],'include':_0x2a2121[_0x80de('0x1c')]?_[_0x80de('0x1d')](_0x2a2121['include'],function(_0xe84eff){return{'model':db[_0xe84eff[_0x80de('0x1e')]],'as':_0xe84eff['as'],'attributes':_0xe84eff[_0x80de('0x1b')],'include':_0xe84eff[_0x80de('0x1c')]?_[_0x80de('0x1d')](_0xe84eff[_0x80de('0x1c')],function(_0x47ea85){return{'model':db[_0x47ea85['model']],'as':_0x47ea85['as'],'attributes':_0x47ea85[_0x80de('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x80de('0x1f')](function(_0x3b6270){logger[_0x80de('0xd')](_0x80de('0x18'),_0xd7e229);logger[_0x80de('0x10')](_0x80de('0x18'),_0xd7e229,JSON['stringify'](_0x3b6270));_0x485085(_0x3b6270);})['catch'](function(_0x2bd74c){logger[_0x80de('0x13')](_0x80de('0x18'),_0x2bd74c[_0x80de('0x15')],_0xd7e229);_0x30ce3b(_0x3fef9f[_0x80de('0x13')](0x1f4,_0x2bd74c['message']));});});};
\ No newline at end of file
index 7643e37..f1639e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0x1ec836,_0x1ce2d6){var _0x4baf71=function(_0x5b640e){while(--_0x5b640e){_0x1ec836['push'](_0x1ec836['shift']());}};_0x4baf71(++_0x1ce2d6);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var multer=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var path=require(_0x7995('0x2'));var timeout=require(_0x7995('0x3'));var express=require('express');var router=express[_0x7995('0x4')]();var fs_extra=require(_0x7995('0x5'));var auth=require(_0x7995('0x6'));var interaction=require(_0x7995('0x7'));var config=require('../../config/environment');var controller=require(_0x7995('0x8'));router[_0x7995('0x9')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0xb')]);router[_0x7995('0x9')](_0x7995('0xc'),auth['isAuthenticated'](),controller[_0x7995('0xd')]);router[_0x7995('0x9')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
+var _0xc4aa=['statusGet','/:id/users','getAgents','post','addDisposition','addAnswer','notify','addApplications','/:id/send','send','status','put','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./smsAccount.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','/:id/status'];(function(_0x593cff,_0x2e5204){var _0x4e78bf=function(_0x3acfdf){while(--_0x3acfdf){_0x593cff['push'](_0x593cff['shift']());}};_0x4e78bf(++_0x2e5204);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xc4aa[_0x1969a7];return _0x3d665f;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['describe']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['get'](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xf')]);router['get'](_0xac4a('0x10'),auth['isAuthenticated'](),controller[_0xac4a('0x11')]);router['get'](_0xac4a('0x12'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x13')]);router['get'](_0xac4a('0x14'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x15')]);router[_0xac4a('0x8')](_0xac4a('0x16'),controller[_0xac4a('0x17')]);router[_0xac4a('0x8')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x19')]);router[_0xac4a('0x1a')]('/',auth[_0xac4a('0x9')](),controller['create']);router[_0xac4a('0x1a')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1b')]);router[_0xac4a('0x1a')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x1c')]);router['post']('/:id/notify',controller[_0xac4a('0x1d')]);router[_0xac4a('0x1a')](_0xac4a('0x12'),auth['isAuthenticated'](),controller[_0xac4a('0x1e')]);router[_0xac4a('0x1a')](_0xac4a('0x1f'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x20')]);router[_0xac4a('0x1a')](_0xac4a('0x16'),controller[_0xac4a('0x21')]);router['post'](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller['addAgents']);router[_0xac4a('0x22')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x23')]);router['delete'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x24')]);router[_0xac4a('0x25')](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x26')]);router[_0xac4a('0x25')](_0xac4a('0x10'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x27')]);router[_0xac4a('0x25')](_0xac4a('0x18'),auth[_0xac4a('0x9')](),controller[_0xac4a('0x28')]);module[_0xac4a('0x29')]=router;
\ No newline at end of file
index 41cdb13..1ece25a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3994=['csc','infobip','intelepeer','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','generate','ENUM','twilio','skebby','connectel','clicksend','bandwidth'];(function(_0xdf41d1,_0x5e1e6c){var _0x385fab=function(_0x325290){while(--_0x325290){_0xdf41d1['push'](_0xdf41d1['shift']());}};_0x385fab(++_0x5e1e6c);}(_0x3994,0x145));var _0x4399=function(_0x40a6ae,_0x57b41c){_0x40a6ae=_0x40a6ae-0x0;var _0x397841=_0x3994[_0x40a6ae];return _0x397841;};'use strict';var Sequelize=require(_0x4399('0x0'));var rs=require(_0x4399('0x1'));module[_0x4399('0x2')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x4399('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x4399('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x4399('0x3')],'defaultValue':function(){return rs[_0x4399('0x4')]();}},'phone':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x4399('0x5')](_0x4399('0x6'),_0x4399('0x7'),_0x4399('0x8'),_0x4399('0x9'),'plivo','clickatell',_0x4399('0xa'),_0x4399('0xb'),_0x4399('0xc'),_0x4399('0xd'))},'accountSid':{'type':Sequelize[_0x4399('0x3')]},'authId':{'type':Sequelize[_0x4399('0x3')]},'authToken':{'type':Sequelize[_0x4399('0x3')]},'smsMethod':{'type':Sequelize[_0x4399('0x5')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x4399('0x3')]},'applicationId':{'type':Sequelize[_0x4399('0x3')]},'accountId':{'type':Sequelize[_0x4399('0x3')]},'senderString':{'type':Sequelize[_0x4399('0x3')]},'deliveryReport':{'type':Sequelize[_0x4399('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0x4399('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0x4399('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4399('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4399('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4399('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0x4399('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4399('0xf')],'comment':_0x4399('0x10')},'mandatoryDisposition':{'type':Sequelize[_0x4399('0xe')],'defaultValue':![],'comment':_0x4399('0x11'),'set':function(_0x263bc1){if(!_0x263bc1)this[_0x4399('0x12')](_0x4399('0x13'),null);this[_0x4399('0x12')](_0x4399('0x14'),_0x263bc1);}}};
\ No newline at end of file
+var _0xce3d=['TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','name','STRING','generate','ENUM','connectel','clicksend','plivo','clickatell','bandwidth','csc','intelepeer','BOOLEAN'];(function(_0x1fe146,_0x3e27c8){var _0x208fc9=function(_0x4602ed){while(--_0x4602ed){_0x1fe146['push'](_0x1fe146['shift']());}};_0x208fc9(++_0x3e27c8);}(_0xce3d,0x13b));var _0xdce3=function(_0x3786dd,_0x5777fc){_0x3786dd=_0x3786dd-0x0;var _0x4c7a8e=_0xce3d[_0x3786dd];return _0x4c7a8e;};'use strict';var Sequelize=require(_0xdce3('0x0'));var rs=require(_0xdce3('0x1'));module[_0xdce3('0x2')]={'name':{'type':Sequelize['STRING'],'unique':_0xdce3('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0xdce3('0x4')],'allowNull':![]},'remote':{'type':Sequelize[_0xdce3('0x4')],'allowNull':![]},'token':{'type':Sequelize[_0xdce3('0x4')],'defaultValue':function(){return rs[_0xdce3('0x5')]();}},'phone':{'type':Sequelize[_0xdce3('0x4')]},'type':{'type':Sequelize[_0xdce3('0x6')]('twilio','skebby',_0xdce3('0x7'),_0xdce3('0x8'),_0xdce3('0x9'),_0xdce3('0xa'),_0xdce3('0xb'),_0xdce3('0xc'),'infobip',_0xdce3('0xd'))},'accountSid':{'type':Sequelize[_0xdce3('0x4')]},'authId':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0xdce3('0x4')]},'smsMethod':{'type':Sequelize[_0xdce3('0x6')]('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0xdce3('0x4')]},'applicationId':{'type':Sequelize[_0xdce3('0x4')]},'accountId':{'type':Sequelize[_0xdce3('0x4')]},'senderString':{'type':Sequelize[_0xdce3('0x4')]},'deliveryReport':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'description':{'type':Sequelize[_0xdce3('0x4')]},'notificationTemplate':{'type':Sequelize[_0xdce3('0xf')],'defaultValue':function(){return _0xdce3('0x10');}},'notificationSound':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xdce3('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xdce3('0xe')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xdce3('0x11')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xdce3('0x4')]},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xdce3('0x12'),'set':function(_0x51fc7e){if(!_0x51fc7e)this[_0xdce3('0x13')](_0xdce3('0x14'),null);this[_0xdce3('0x13')](_0xdce3('0x15'),_0x51fc7e);}}};
\ No newline at end of file
index a0eba58..e4ce2e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe3ef=['message-id','addAgents','emit','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./smsAccount.socket','register','client','http','request','then','SmsAccount,\x20%s,\x20%s','debug','SmsAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','code','error','message','result','catch','sendStatus','status','end','limit','count','set','Content-Range','json','apply','reject','save','destroy','get','SmsAccounts','UserProfileResource','stack','name','index','Pause','mandatoryDispositionPause','SmsAccount','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','rawAttributes','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','update','find','params','describe','addDisposition','SmsAccountId','getDispositions','findOne','Disposition','removeDispositions','ids','getAnswers','CannedAnswer','removeAnswers','notify','sms','Applications','account','applications','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','ListId','mobile','twilio','from','From','MessageSid','skebby','sender','text','connectel','clicksend','messageId','message_id','plivo','Text','MessageUUID','infobip','results','csc','clickatell','fromNumber','replyMessageId','bandwidth','intelepeer','isNil','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','Contacts','list','omit','contact','SmsInteraction','spread','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','UserId','User','unshift','agent','Start','startRouting','receiveMessage','entity\x20found','SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','send','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','Transaction','ISOLATION_LEVELS','SmsApplication','bulkCreate','finally','getApplications','getInteractions','Contact','Owner','internal','Tags','color','tag','DESC','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','ACCEPTD','statusGet','state'];(function(_0x28b746,_0x66db64){var _0x259a66=function(_0x43f979){while(--_0x43f979){_0x28b746['push'](_0x28b746['shift']());}};_0x259a66(++_0x66db64);}(_0xe3ef,0xef));var _0xfe3e=function(_0xa23d13,_0x3563e3){_0xa23d13=_0xa23d13-0x0;var _0x43e8c6=_0xe3ef[_0xa23d13];return _0x43e8c6;};'use strict';var emlformat=require(_0xfe3e('0x0'));var rimraf=require(_0xfe3e('0x1'));var zipdir=require(_0xfe3e('0x2'));var jsonpatch=require(_0xfe3e('0x3'));var rp=require('request-promise');var moment=require(_0xfe3e('0x4'));var BPromise=require(_0xfe3e('0x5'));var Mustache=require(_0xfe3e('0x6'));var util=require(_0xfe3e('0x7'));var path=require(_0xfe3e('0x8'));var sox=require(_0xfe3e('0x9'));var csv=require('to-csv');var ejs=require(_0xfe3e('0xa'));var fs=require('fs');var fs_extra=require(_0xfe3e('0xb'));var _=require(_0xfe3e('0xc'));var squel=require(_0xfe3e('0xd'));var crypto=require(_0xfe3e('0xe'));var jsforce=require(_0xfe3e('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xfe3e('0x10'));var querystring=require(_0xfe3e('0x11'));var Papa=require(_0xfe3e('0x12'));var Redis=require(_0xfe3e('0x13'));var authService=require(_0xfe3e('0x14'));var qs=require(_0xfe3e('0x15'));var as=require(_0xfe3e('0x16'));var hardwareService=require(_0xfe3e('0x17'));var logger=require('../../config/logger')(_0xfe3e('0x18'));var utils=require('../../config/utils');var config=require(_0xfe3e('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xfe3e('0x1a'))['db'];config[_0xfe3e('0x1b')]=_[_0xfe3e('0x1c')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xfe3e('0x1d'))(new Redis(config[_0xfe3e('0x1b')]));require(_0xfe3e('0x1e'))[_0xfe3e('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson[_0xfe3e('0x20')][_0xfe3e('0x21')]({'port':0x232c});function respondWithRpcPromise(_0xea3122,_0x13771d,_0xdddf89,_0xe67f3a){return new BPromise(function(_0x1405b7,_0x5f4aa){var _0x22cd13=_0xe67f3a||client;return _0x22cd13[_0xfe3e('0x22')](_0xea3122,_0xdddf89)[_0xfe3e('0x23')](function(_0x4706d0){logger['info'](_0xfe3e('0x24'),_0x13771d,'request\x20sent');logger[_0xfe3e('0x25')](_0xfe3e('0x26'),_0x13771d,_0xfe3e('0x27'),JSON[_0xfe3e('0x28')](_0x4706d0));if(_0x4706d0['error']){if(_0x4706d0['error'][_0xfe3e('0x29')]===0x1f4){logger[_0xfe3e('0x2a')](_0xfe3e('0x24'),_0x13771d,_0x4706d0['error'][_0xfe3e('0x2b')]);return _0x5f4aa(_0x4706d0[_0xfe3e('0x2a')][_0xfe3e('0x2b')]);}logger['error']('SmsAccount,\x20%s,\x20%s',_0x13771d,_0x4706d0[_0xfe3e('0x2a')][_0xfe3e('0x2b')]);return _0x1405b7(_0x4706d0[_0xfe3e('0x2a')][_0xfe3e('0x2b')]);}else{logger['info'](_0xfe3e('0x24'),_0x13771d,'request\x20sent');_0x1405b7(_0x4706d0[_0xfe3e('0x2c')][_0xfe3e('0x2b')]);}})[_0xfe3e('0x2d')](function(_0x3f8a71){logger[_0xfe3e('0x2a')](_0xfe3e('0x24'),_0x13771d,_0x3f8a71);_0x5f4aa(_0x3f8a71);});});}function respondWithStatusCode(_0xc069dc,_0x538723){_0x538723=_0x538723||0xcc;return function(_0x4024a2){if(_0x4024a2){return _0xc069dc[_0xfe3e('0x2e')](_0x538723);}return _0xc069dc[_0xfe3e('0x2f')](_0x538723)[_0xfe3e('0x30')]();};}function respondWithResult(_0x954747,_0x5800a6){_0x5800a6=_0x5800a6||0xc8;return function(_0x2f53fb){if(_0x2f53fb){return _0x954747[_0xfe3e('0x2f')](_0x5800a6)['json'](_0x2f53fb);}};}function respondWithFilteredResult(_0x911396,_0x830a4c){return function(_0x3bc2ce){if(_0x3bc2ce){var _0x1d17c9=typeof _0x830a4c['offset']==='undefined'&&typeof _0x830a4c[_0xfe3e('0x31')]==='undefined';var _0x4b690a=_0x3bc2ce['count'];var _0x2b639f=_0x1d17c9?0x0:_0x830a4c['offset'];var _0x27fed6=_0x1d17c9?_0x3bc2ce[_0xfe3e('0x32')]:_0x830a4c['offset']+_0x830a4c[_0xfe3e('0x31')];var _0x571297;if(_0x27fed6>=_0x4b690a){_0x27fed6=_0x4b690a;_0x571297=0xc8;}else{_0x571297=0xce;}_0x911396['status'](_0x571297);return _0x911396[_0xfe3e('0x33')](_0xfe3e('0x34'),_0x2b639f+'-'+_0x27fed6+'/'+_0x4b690a)[_0xfe3e('0x35')](_0x3bc2ce);}return null;};}function patchUpdates(_0x3fec22){return function(_0x4f4988){try{jsonpatch[_0xfe3e('0x36')](_0x4f4988,_0x3fec22,!![]);}catch(_0x1a74d5){return BPromise[_0xfe3e('0x37')](_0x1a74d5);}return _0x4f4988[_0xfe3e('0x38')]();};}function saveUpdates(_0x5823aa,_0x5cfc16){return function(_0x2c3a98){if(_0x2c3a98){return _0x2c3a98['update'](_0x5823aa)['then'](function(_0x91f8bb){return _0x91f8bb;});}return null;};}function removeEntity(_0x13b80e,_0x1f5d24){return function(_0x51ff2d){if(_0x51ff2d){return _0x51ff2d[_0xfe3e('0x39')]()[_0xfe3e('0x23')](function(){var _0x271cc6=_0x51ff2d[_0xfe3e('0x3a')]({'plain':!![]});var _0x258cd7=_0xfe3e('0x3b');return db[_0xfe3e('0x3c')][_0xfe3e('0x39')]({'where':{'type':_0x258cd7,'resourceId':_0x271cc6['id']}})[_0xfe3e('0x23')](function(){return _0x51ff2d;});})['then'](function(){_0x13b80e[_0xfe3e('0x2f')](0xcc)[_0xfe3e('0x30')]();});}};}function handleEntityNotFound(_0x3b29e0,_0x59248f){return function(_0x15cb2f){if(!_0x15cb2f){_0x3b29e0[_0xfe3e('0x2e')](0x194);}return _0x15cb2f;};}function handleError(_0x328c73,_0x467d0f){_0x467d0f=_0x467d0f||0x1f4;return function(_0x2ccd11){logger[_0xfe3e('0x2a')](_0x2ccd11[_0xfe3e('0x3d')]);if(_0x2ccd11[_0xfe3e('0x3e')]){delete _0x2ccd11[_0xfe3e('0x3e')];}_0x328c73[_0xfe3e('0x2f')](_0x467d0f)['send'](_0x2ccd11);};}exports[_0xfe3e('0x3f')]=function(_0x22b001,_0x39ea48){var _0x133800={'include':[{'model':db[_0xfe3e('0x40')],'as':_0xfe3e('0x41')}]},_0x243696={},_0x5064e2={'count':0x0,'rows':[]};var _0x2f3d97=_['map'](db[_0xfe3e('0x42')]['rawAttributes'],function(_0x52ec3e){return{'name':_0x52ec3e[_0xfe3e('0x43')],'type':_0x52ec3e['type'][_0xfe3e('0x44')]};});_0x243696[_0xfe3e('0x45')]=_[_0xfe3e('0x46')](_0x2f3d97,_0xfe3e('0x3e'));_0x243696[_0xfe3e('0x47')]=_[_0xfe3e('0x48')](_0x22b001[_0xfe3e('0x47')]);_0x243696[_0xfe3e('0x49')]=_[_0xfe3e('0x4a')](_0x243696['model'],_0x243696[_0xfe3e('0x47')]);_0x133800[_0xfe3e('0x4b')]=_[_0xfe3e('0x4a')](_0x243696[_0xfe3e('0x45')],qs['fields'](_0x22b001[_0xfe3e('0x47')][_0xfe3e('0x4c')]));_0x133800[_0xfe3e('0x4b')]=_0x133800['attributes'][_0xfe3e('0x4d')]?_0x133800['attributes']:_0x243696[_0xfe3e('0x45')];if(!_0x22b001['query'][_0xfe3e('0x4e')](_0xfe3e('0x4f'))){_0x133800[_0xfe3e('0x31')]=qs[_0xfe3e('0x31')](_0x22b001[_0xfe3e('0x47')]['limit']);_0x133800[_0xfe3e('0x50')]=qs[_0xfe3e('0x50')](_0x22b001[_0xfe3e('0x47')][_0xfe3e('0x50')]);}_0x133800[_0xfe3e('0x51')]=qs[_0xfe3e('0x52')](_0x22b001['query'][_0xfe3e('0x52')]);_0x133800[_0xfe3e('0x53')]=qs[_0xfe3e('0x49')](_[_0xfe3e('0x54')](_0x22b001[_0xfe3e('0x47')],_0x243696[_0xfe3e('0x49')]),_0x2f3d97);if(_0x22b001[_0xfe3e('0x47')][_0xfe3e('0x55')]){_0x133800[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x133800[_0xfe3e('0x53')],{'$or':_['map'](_0x2f3d97,function(_0x3f8977){if(_0x3f8977[_0xfe3e('0x57')]!==_0xfe3e('0x58')){var _0x44068a={};_0x44068a[_0x3f8977[_0xfe3e('0x3e')]]={'$like':'%'+_0x22b001[_0xfe3e('0x47')][_0xfe3e('0x55')]+'%'};return _0x44068a;}})});}_0x133800=_[_0xfe3e('0x56')]({},_0x133800,_0x22b001['options']);var _0x7da73d={'where':_0x133800[_0xfe3e('0x53')]};return db['SmsAccount']['count'](_0x7da73d)[_0xfe3e('0x23')](function(_0x4cb965){_0x5064e2['count']=_0x4cb965;if(_0x22b001['query'][_0xfe3e('0x59')]){_0x133800[_0xfe3e('0x5a')]=[{'all':!![]}];}return db['SmsAccount'][_0xfe3e('0x5b')](_0x133800);})[_0xfe3e('0x23')](function(_0x33d9fc){_0x5064e2[_0xfe3e('0x5c')]=_0x33d9fc;return _0x5064e2;})[_0xfe3e('0x23')](respondWithFilteredResult(_0x39ea48,_0x133800))['catch'](handleError(_0x39ea48,null));};exports[_0xfe3e('0x5d')]=function(_0x3dd7c1,_0x1c7024){var _0x173437={'raw':![],'where':{'id':_0x3dd7c1['params']['id']},'include':[{'model':db[_0xfe3e('0x40')],'as':_0xfe3e('0x41')}]},_0x327271={};_0x327271['model']=_[_0xfe3e('0x48')](db[_0xfe3e('0x42')][_0xfe3e('0x5e')]);_0x327271[_0xfe3e('0x47')]=_['keys'](_0x3dd7c1[_0xfe3e('0x47')]);_0x327271[_0xfe3e('0x49')]=_['intersection'](_0x327271[_0xfe3e('0x45')],_0x327271[_0xfe3e('0x47')]);_0x173437[_0xfe3e('0x4b')]=_[_0xfe3e('0x4a')](_0x327271[_0xfe3e('0x45')],qs[_0xfe3e('0x4c')](_0x3dd7c1[_0xfe3e('0x47')][_0xfe3e('0x4c')]));_0x173437['attributes']=_0x173437[_0xfe3e('0x4b')]['length']?_0x173437[_0xfe3e('0x4b')]:_0x327271[_0xfe3e('0x45')];if(_0x3dd7c1['query'][_0xfe3e('0x59')]){_0x173437[_0xfe3e('0x5a')]=[{'all':!![]}];}_0x173437=_[_0xfe3e('0x56')]({},_0x173437,_0x3dd7c1[_0xfe3e('0x5f')]);return db[_0xfe3e('0x42')]['find'](_0x173437)[_0xfe3e('0x23')](handleEntityNotFound(_0x1c7024,null))['then'](respondWithResult(_0x1c7024,null))['catch'](handleError(_0x1c7024,null));};exports[_0xfe3e('0x60')]=function(_0xd85697,_0xcb54c1){return db[_0xfe3e('0x42')][_0xfe3e('0x60')](_0xd85697[_0xfe3e('0x61')],{})['then'](function(_0x4524fd){var _0x5407c8=_0xd85697[_0xfe3e('0x62')]['get']({'plain':!![]});if(!_0x5407c8)throw new Error(_0xfe3e('0x63'));if(_0x5407c8[_0xfe3e('0x64')]==='user'){var _0x33958a=_0x4524fd[_0xfe3e('0x3a')]({'plain':!![]});var _0x4702d9=_0xfe3e('0x3b');return db['UserProfileSection']['find']({'where':{'name':_0x4702d9,'userProfileId':_0x5407c8[_0xfe3e('0x65')]},'raw':!![]})[_0xfe3e('0x23')](function(_0xe8969f){if(_0xe8969f&&_0xe8969f[_0xfe3e('0x66')]===0x0){return db[_0xfe3e('0x3c')][_0xfe3e('0x60')]({'name':_0x33958a[_0xfe3e('0x3e')],'resourceId':_0x33958a['id'],'type':_0xe8969f['name'],'sectionId':_0xe8969f['id']},{})[_0xfe3e('0x23')](function(){return _0x4524fd;});}else{return _0x4524fd;}})[_0xfe3e('0x2d')](function(_0x47c090){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x47c090);throw _0x47c090;});}return _0x4524fd;})['then'](respondWithResult(_0xcb54c1,0xc9))[_0xfe3e('0x2d')](handleError(_0xcb54c1,null));};exports[_0xfe3e('0x67')]=function(_0x15aea7,_0x1ea3d2){if(_0x15aea7[_0xfe3e('0x61')]['id']){delete _0x15aea7[_0xfe3e('0x61')]['id'];}return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x15aea7['params']['id']},'include':[{'model':db[_0xfe3e('0x40')],'as':_0xfe3e('0x41')}]})['then'](handleEntityNotFound(_0x1ea3d2,null))[_0xfe3e('0x23')](saveUpdates(_0x15aea7[_0xfe3e('0x61')],null))[_0xfe3e('0x23')](respondWithResult(_0x1ea3d2,null))[_0xfe3e('0x2d')](handleError(_0x1ea3d2,null));};exports[_0xfe3e('0x39')]=function(_0x4550d4,_0x211fdb){return db[_0xfe3e('0x42')]['find']({'where':{'id':_0x4550d4[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x211fdb,null))[_0xfe3e('0x23')](removeEntity(_0x211fdb,null))[_0xfe3e('0x2d')](handleError(_0x211fdb,null));};exports[_0xfe3e('0x6a')]=function(_0x42fc03,_0x1643fc){return db['SmsAccount'][_0xfe3e('0x6a')]()['then'](respondWithResult(_0x1643fc,null))[_0xfe3e('0x2d')](handleError(_0x1643fc,null));};exports[_0xfe3e('0x6b')]=function(_0x206d8e,_0x30f6ad,_0x617c89){if(_0x206d8e[_0xfe3e('0x61')]['id']){delete _0x206d8e[_0xfe3e('0x61')]['id'];}return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x206d8e[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x30f6ad,null))[_0xfe3e('0x23')](function(_0x1a2bb8){if(_0x1a2bb8){_0x206d8e[_0xfe3e('0x61')][_0xfe3e('0x6c')]=_0x1a2bb8['id'];return db['Disposition'][_0xfe3e('0x60')](_0x206d8e[_0xfe3e('0x61')]);}})['then'](respondWithResult(_0x30f6ad,null))[_0xfe3e('0x2d')](handleError(_0x30f6ad,null));};exports[_0xfe3e('0x6d')]=function(_0x36a479,_0x27b735,_0x94131){var _0x1f43dd={'raw':![],'where':{}};var _0x3581b5={};var _0x14d228={'count':0x0,'rows':[]};return db[_0xfe3e('0x42')][_0xfe3e('0x6e')]({'where':{'id':_0x36a479[_0xfe3e('0x69')]['id']}})['then'](handleEntityNotFound(_0x27b735,null))[_0xfe3e('0x23')](function(_0x7d1744){if(_0x7d1744){_0x3581b5[_0xfe3e('0x45')]=_[_0xfe3e('0x48')](db[_0xfe3e('0x6f')][_0xfe3e('0x5e')]);_0x3581b5['query']=_[_0xfe3e('0x48')](_0x36a479[_0xfe3e('0x47')]);_0x3581b5['filters']=_[_0xfe3e('0x4a')](_0x3581b5[_0xfe3e('0x45')],_0x3581b5['query']);_0x1f43dd[_0xfe3e('0x4b')]=_[_0xfe3e('0x4a')](_0x3581b5[_0xfe3e('0x45')],qs[_0xfe3e('0x4c')](_0x36a479['query'][_0xfe3e('0x4c')]));_0x1f43dd[_0xfe3e('0x4b')]=_0x1f43dd[_0xfe3e('0x4b')][_0xfe3e('0x4d')]?_0x1f43dd[_0xfe3e('0x4b')]:_0x3581b5['model'];if(!_0x36a479['query'][_0xfe3e('0x4e')]('nolimit')){_0x1f43dd[_0xfe3e('0x31')]=qs[_0xfe3e('0x31')](_0x36a479[_0xfe3e('0x47')][_0xfe3e('0x31')]);_0x1f43dd[_0xfe3e('0x50')]=qs[_0xfe3e('0x50')](_0x36a479['query'][_0xfe3e('0x50')]);}_0x1f43dd[_0xfe3e('0x51')]=qs['sort'](_0x36a479[_0xfe3e('0x47')][_0xfe3e('0x52')]);_0x1f43dd[_0xfe3e('0x53')]=qs[_0xfe3e('0x49')](_[_0xfe3e('0x54')](_0x36a479[_0xfe3e('0x47')],_0x3581b5[_0xfe3e('0x49')]));_0x1f43dd[_0xfe3e('0x53')][_0xfe3e('0x6c')]=_0x7d1744['id'];if(_0x36a479['query'][_0xfe3e('0x55')]){_0x1f43dd[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x1f43dd['where'],{'$or':_[_0xfe3e('0x46')](_0x1f43dd['attributes'],function(_0x4518d3){var _0x4cc825={};_0x4cc825[_0x4518d3]={'$like':'%'+_0x36a479[_0xfe3e('0x47')][_0xfe3e('0x55')]+'%'};return _0x4cc825;})});}_0x1f43dd=_['merge']({},_0x1f43dd,_0x36a479[_0xfe3e('0x5f')]);return db[_0xfe3e('0x6f')]['count']({'where':_0x1f43dd['where']})[_0xfe3e('0x23')](function(_0x326539){_0x14d228[_0xfe3e('0x32')]=_0x326539;if(_0x36a479['query']['includeAll']){_0x1f43dd[_0xfe3e('0x5a')]=[{'all':!![]}];}return db['Disposition'][_0xfe3e('0x5b')](_0x1f43dd);})[_0xfe3e('0x23')](function(_0x561f6a){_0x14d228[_0xfe3e('0x5c')]=_0x561f6a;return _0x14d228;});}})[_0xfe3e('0x23')](respondWithFilteredResult(_0x27b735,_0x1f43dd))[_0xfe3e('0x2d')](handleError(_0x27b735,null));};exports[_0xfe3e('0x70')]=function(_0x468437,_0x325a5e,_0x496e59){return db[_0xfe3e('0x42')]['find']({'where':{'id':_0x468437[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x325a5e,null))[_0xfe3e('0x23')](function(_0x1e7513){if(_0x1e7513){return _0x1e7513['removeDispositions'](_0x468437[_0xfe3e('0x47')][_0xfe3e('0x71')]);}})[_0xfe3e('0x23')](respondWithStatusCode(_0x325a5e,null))[_0xfe3e('0x2d')](handleError(_0x325a5e,null));};exports['addAnswer']=function(_0x5ab654,_0x4edb09,_0x2b2493){if(_0x5ab654['body']['id']){delete _0x5ab654[_0xfe3e('0x61')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x5ab654[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x4edb09,null))['then'](function(_0x1557b0){if(_0x1557b0){_0x5ab654['body'][_0xfe3e('0x6c')]=_0x1557b0['id'];return db['CannedAnswer'][_0xfe3e('0x60')](_0x5ab654[_0xfe3e('0x61')]);}})[_0xfe3e('0x23')](respondWithResult(_0x4edb09,null))['catch'](handleError(_0x4edb09,null));};exports[_0xfe3e('0x72')]=function(_0x26b800,_0x4b0632,_0x63f73){var _0x33a814={'raw':![],'where':{}};var _0x54fe71={};var _0x410e1e={'count':0x0,'rows':[]};return db[_0xfe3e('0x42')][_0xfe3e('0x6e')]({'where':{'id':_0x26b800['params']['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x4b0632,null))['then'](function(_0x5e0ee7){if(_0x5e0ee7){_0x54fe71['model']=_[_0xfe3e('0x48')](db[_0xfe3e('0x73')][_0xfe3e('0x5e')]);_0x54fe71[_0xfe3e('0x47')]=_['keys'](_0x26b800[_0xfe3e('0x47')]);_0x54fe71[_0xfe3e('0x49')]=_['intersection'](_0x54fe71[_0xfe3e('0x45')],_0x54fe71[_0xfe3e('0x47')]);_0x33a814[_0xfe3e('0x4b')]=_['intersection'](_0x54fe71[_0xfe3e('0x45')],qs[_0xfe3e('0x4c')](_0x26b800[_0xfe3e('0x47')]['fields']));_0x33a814['attributes']=_0x33a814[_0xfe3e('0x4b')][_0xfe3e('0x4d')]?_0x33a814[_0xfe3e('0x4b')]:_0x54fe71['model'];if(!_0x26b800[_0xfe3e('0x47')][_0xfe3e('0x4e')](_0xfe3e('0x4f'))){_0x33a814['limit']=qs[_0xfe3e('0x31')](_0x26b800[_0xfe3e('0x47')][_0xfe3e('0x31')]);_0x33a814[_0xfe3e('0x50')]=qs['offset'](_0x26b800[_0xfe3e('0x47')][_0xfe3e('0x50')]);}_0x33a814[_0xfe3e('0x51')]=qs['sort'](_0x26b800[_0xfe3e('0x47')]['sort']);_0x33a814[_0xfe3e('0x53')]=qs[_0xfe3e('0x49')](_['pick'](_0x26b800[_0xfe3e('0x47')],_0x54fe71[_0xfe3e('0x49')]));_0x33a814[_0xfe3e('0x53')][_0xfe3e('0x6c')]=_0x5e0ee7['id'];if(_0x26b800[_0xfe3e('0x47')]['filter']){_0x33a814[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x33a814['where'],{'$or':_[_0xfe3e('0x46')](_0x33a814[_0xfe3e('0x4b')],function(_0x44e104){var _0x180573={};_0x180573[_0x44e104]={'$like':'%'+_0x26b800['query'][_0xfe3e('0x55')]+'%'};return _0x180573;})});}_0x33a814=_['merge']({},_0x33a814,_0x26b800[_0xfe3e('0x5f')]);return db[_0xfe3e('0x73')][_0xfe3e('0x32')]({'where':_0x33a814['where']})[_0xfe3e('0x23')](function(_0x55d356){_0x410e1e['count']=_0x55d356;if(_0x26b800[_0xfe3e('0x47')][_0xfe3e('0x59')]){_0x33a814['include']=[{'all':!![]}];}return db['CannedAnswer'][_0xfe3e('0x5b')](_0x33a814);})['then'](function(_0x57d196){_0x410e1e[_0xfe3e('0x5c')]=_0x57d196;return _0x410e1e;});}})['then'](respondWithFilteredResult(_0x4b0632,_0x33a814))[_0xfe3e('0x2d')](handleError(_0x4b0632,null));};exports[_0xfe3e('0x74')]=function(_0x4beb8e,_0x1b8b45,_0x317de8){return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x4beb8e[_0xfe3e('0x69')]['id']}})['then'](handleEntityNotFound(_0x1b8b45,null))[_0xfe3e('0x23')](function(_0x56897c){if(_0x56897c){return _0x56897c[_0xfe3e('0x74')](_0x4beb8e['query']['ids']);}})[_0xfe3e('0x23')](respondWithStatusCode(_0x1b8b45,null))[_0xfe3e('0x2d')](handleError(_0x1b8b45,null));};exports[_0xfe3e('0x75')]=function(_0x52b2a2,_0x25bc81,_0x84faeb){var _0x2b00fc={'channel':_0xfe3e('0x76')};var _0x13dd7a=[];var _0x148f87=[];var _0x1cae87={};return db[_0xfe3e('0x42')]['find']({'where':{'id':_0x52b2a2[_0xfe3e('0x69')]['id']},'include':[{'model':db['SmsApplication'],'as':_0xfe3e('0x77')}]})[_0xfe3e('0x23')](handleEntityNotFound(_0x25bc81,null))[_0xfe3e('0x23')](function(_0x2cac3d){_0x2b00fc[_0xfe3e('0x78')]=_0x2cac3d;_0x2b00fc[_0xfe3e('0x79')]=_['orderBy'](_0x2cac3d[_0xfe3e('0x77')],[_0xfe3e('0x7a')],['asc']);if(_0x2b00fc[_0xfe3e('0x78')][_0xfe3e('0x77')]){delete _0x2b00fc[_0xfe3e('0x78')][_0xfe3e('0x77')];}return db[_0xfe3e('0x7b')]['describe']();})['then'](function(_0x52c2d0){if(!_0x52c2d0){throw new db[(_0xfe3e('0x7c'))][(_0xfe3e('0x7d'))](_0xfe3e('0x7e'));}_0x13dd7a=_[_0xfe3e('0x7f')](_['keys'](_0x52c2d0),[_0xfe3e('0x80'),'updatedAt']);_0x148f87=_[_0xfe3e('0x7f')](_[_0xfe3e('0x48')](_0x52c2d0),[_0xfe3e('0x80'),_0xfe3e('0x81'),'CompanyId',_0xfe3e('0x82')]);_0x2b00fc[_0xfe3e('0x61')]={'mapKey':_0xfe3e('0x83')};if(_0x2b00fc[_0xfe3e('0x78')]['type']){switch(_0x2b00fc[_0xfe3e('0x78')]['type']){case _0xfe3e('0x84'):_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x86')];_0x2b00fc['body'][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')]['Body'];_0x2b00fc[_0xfe3e('0x61')]['messageId']=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x87')];break;case _0xfe3e('0x88'):_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]='+'+_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x89')];_0x2b00fc['body'][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x8a')];break;case _0xfe3e('0x8b'):_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]=_0x52b2a2['body'][_0xfe3e('0x85')];_0x2b00fc[_0xfe3e('0x61')]['body']=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x2b')];break;case _0xfe3e('0x8c'):_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]=_0x52b2a2[_0xfe3e('0x61')]['from'];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x61')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x8d')]=_0x52b2a2['body'][_0xfe3e('0x8e')];break;case _0xfe3e('0x8f'):_0x2b00fc['body'][_0xfe3e('0x85')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x86')];_0x2b00fc[_0xfe3e('0x61')]['body']=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x90')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x8d')]=_0x52b2a2['body'][_0xfe3e('0x91')];break;case _0xfe3e('0x92'):_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]='+'+_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x93')][0x0][_0xfe3e('0x85')];_0x2b00fc[_0xfe3e('0x61')]['body']=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x93')][0x0][_0xfe3e('0x8a')];_0x2b00fc[_0xfe3e('0x61')]['messageId']=_0x52b2a2[_0xfe3e('0x61')]['results'][0x0][_0xfe3e('0x8d')];break;case _0xfe3e('0x94'):_0x2b00fc['body'][_0xfe3e('0x85')]=_0x52b2a2['body']['originatingAddress'];_0x2b00fc[_0xfe3e('0x61')]['body']=_0x52b2a2[_0xfe3e('0x61')]['segmentedMessage'][_0xfe3e('0x2b')];break;case _0xfe3e('0x95'):_0x2b00fc['body'][_0xfe3e('0x85')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x96')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x8a')];_0x2b00fc['body']['messageId']=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x97')];break;case _0xfe3e('0x98'):_0x2b00fc['body'][_0xfe3e('0x8d')]=_0x52b2a2[_0xfe3e('0x61')][0x0]['message']['id'];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')]=_0x52b2a2[_0xfe3e('0x61')][0x0][_0xfe3e('0x2b')][_0xfe3e('0x85')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')][0x0][_0xfe3e('0x2b')]['text'];break;case _0xfe3e('0x99'):_0x2b00fc['body']['from']=_0x52b2a2['body'][_0xfe3e('0x85')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x61')]=_0x52b2a2[_0xfe3e('0x61')][_0xfe3e('0x2b')];_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x8d')]=_0x52b2a2[_0xfe3e('0x61')]['refid'];break;}}if(_0x2b00fc['body']['id']){delete _0x2b00fc[_0xfe3e('0x61')]['id'];}if(_[_0xfe3e('0x9a')](_0x2b00fc[_0xfe3e('0x61')]['from'])){throw new db['Sequelize']['ValidationError'](_0xfe3e('0x9b'));}if(_['isNil'](_0x2b00fc[_0xfe3e('0x61')]['body'])||_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x61')]===''){throw new db[(_0xfe3e('0x7c'))]['ValidationError'](_0xfe3e('0x9c'));}if(_['isNil'](_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x9d')])){throw new db[(_0xfe3e('0x7c'))][(_0xfe3e('0x7d'))](_0xfe3e('0x9e')+_0x148f87);}if(!_[_0xfe3e('0x9f')](_0x148f87,_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x9d')])){throw new db[(_0xfe3e('0x7c'))][(_0xfe3e('0x7d'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x148f87);}_0x1cae87[_0x2b00fc[_0xfe3e('0x61')]['mapKey']]=_0x2b00fc['body'][_0xfe3e('0x85')];return db[_0xfe3e('0xa0')][_0xfe3e('0x68')]({'where':{'id':_0x2b00fc[_0xfe3e('0x78')][_0xfe3e('0x82')]},'include':[{'model':db[_0xfe3e('0x7b')],'as':_0xfe3e('0xa1'),'where':_0x1cae87,'limit':0x1,'order':[[_0xfe3e('0x81'),'DESC']]}]});})[_0xfe3e('0x23')](handleEntityNotFound(_0x25bc81,null))['then'](function(_0x138585){if(_0x138585){_0x2b00fc[_0xfe3e('0xa2')]=_[_0xfe3e('0xa3')](_0x138585,['Contacts']);if(_0x138585[_0xfe3e('0xa1')][_0xfe3e('0x4d')]){return _0x138585['Contacts'][0x0];}var _0x531fe7=_[_0xfe3e('0x1c')](_0x2b00fc[_0xfe3e('0x61')],{'firstName':_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')],'ListId':_0x138585['id']});_0x531fe7[_0x2b00fc['body'][_0xfe3e('0x9d')]]=_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')];return db[_0xfe3e('0x7b')][_0xfe3e('0x60')](_0x531fe7,{'fields':_0x13dd7a,'raw':!![]});}})[_0xfe3e('0x23')](handleEntityNotFound(_0x25bc81,null))[_0xfe3e('0x23')](function(_0x5451c5){if(_0x5451c5){_0x2b00fc[_0xfe3e('0xa4')]=_0x5451c5;var _0x4dca9c={'ContactId':_0x5451c5['id'],'phone':_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x85')],'SmsAccountId':_0x52b2a2[_0xfe3e('0x69')]['id']};var _0x3be976={'ContactId':_0x5451c5['id'],'SmsAccountId':_0x52b2a2[_0xfe3e('0x69')]['id'],'closed':![]};return db[_0xfe3e('0xa5')][_0xfe3e('0x68')]({'where':_0x3be976})[_0xfe3e('0x23')](function(_0x2cf2f2){if(_0x2cf2f2){return[_0x2cf2f2,![]];}return db[_0xfe3e('0xa5')]['create'](_0x4dca9c)[_0xfe3e('0x23')](function(_0x118a37){return[_0x118a37,!![]];});});}})[_0xfe3e('0xa6')](function(_0x5d0ce6,_0x133092){_0x2b00fc['interaction']=_0x5d0ce6[_0xfe3e('0x3a')]({'plain':!![]});_0x2b00fc[_0xfe3e('0xa7')][_0xfe3e('0xa8')]=![];if(_0x133092){if(_0x2b00fc['account'][_0xfe3e('0xa9')]){_0x2b00fc['applications'][_0xfe3e('0xaa')]({'id':0x0,'priority':_0x2b00fc[_0xfe3e('0x79')][_0xfe3e('0x4d')]+0x1,'app':_0xfe3e('0xab'),'appdata':_0xfe3e('0xac'),'interval':_0xfe3e('0xad')});}_0x2b00fc['interaction'][_0xfe3e('0xa8')]=!![];}return db[_0xfe3e('0xae')]['create']({'phone':_0x2b00fc['body']['from'],'messageId':_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0x8d')],'body':_0x2b00fc['body'][_0xfe3e('0x61')],'SmsAccountId':_0x52b2a2[_0xfe3e('0x69')]['id'],'SmsInteractionId':_0x5d0ce6['id'],'direction':'in','ContactId':_0x5d0ce6[_0xfe3e('0xaf')],'AttachmentId':_0x2b00fc[_0xfe3e('0x61')][_0xfe3e('0xb0')]});})[_0xfe3e('0x23')](function(_0x2da7af){_0x2b00fc[_0xfe3e('0x2b')]=_0x2da7af;if(_0x2b00fc[_0xfe3e('0xa7')][_0xfe3e('0xb1')]){return db[_0xfe3e('0xb2')]['find']({'attributes':['id',_0xfe3e('0x3e')],'where':{'id':_0x2b00fc[_0xfe3e('0xa7')][_0xfe3e('0xb1')]}})[_0xfe3e('0x23')](function(_0x19d3ac){if(_0x19d3ac){_0x2b00fc['applications'][_0xfe3e('0xb3')]({'id':0x0,'priority':0x0,'app':_0xfe3e('0xb4'),'appdata':_0x19d3ac[_0xfe3e('0x3e')]+','+(_0x2b00fc['account']['waitForTheAssignedAgent']||0xa),'interval':_0xfe3e('0xad')});}return respondWithRpcPromise(_0xfe3e('0xb5'),_0xfe3e('0xb6'),_0x2b00fc);});}return respondWithRpcPromise(_0xfe3e('0xb5'),'startRouting',_0x2b00fc);})[_0xfe3e('0x23')](function(_0x502283){if(_0x502283){var _0x2b9342=0xc8;var _0x45bac3=_0xfe3e('0xb7');logger['info'](_0xfe3e('0x26'),_0x45bac3,_0x2b9342,_0xfe3e('0xb8'));logger[_0xfe3e('0x25')](_0xfe3e('0xb9'),_0x45bac3,_0x2b9342,_0xfe3e('0xb8'),JSON[_0xfe3e('0x28')](_0x502283));if(_0x2b00fc[_0xfe3e('0x78')][_0xfe3e('0x57')]===_0xfe3e('0x84')){return _0x25bc81[_0xfe3e('0x2f')](_0x2b9342)[_0xfe3e('0x33')]('Content-Type',_0xfe3e('0xba'))[_0xfe3e('0xbb')](_0xfe3e('0xbc'));}else{return _0x25bc81['status'](_0x2b9342)[_0xfe3e('0x35')](_0x502283);}}})[_0xfe3e('0x2d')](handleError(_0x25bc81,null));};exports[_0xfe3e('0xbd')]=function(_0x2a0191,_0x342404){var _0x1ef9e8=_0x2a0191[_0xfe3e('0x69')]['id'];var _0x519d78=_0x2a0191['body'];var _0x26849c=0xc8;var _0x249d12=null;return db['sequelize']['transaction']({'isolationLevel':db[_0xfe3e('0xbe')][_0xfe3e('0xbf')][_0xfe3e('0xc0')]['READ_COMMITTED']},function(_0x1f6baf){return db[_0xfe3e('0x42')]['findOne']({'where':{'id':_0x1ef9e8},'transaction':_0x1f6baf})[_0xfe3e('0x23')](function(_0x300a83){if(_0x300a83){return db['SmsApplication']['destroy']({'where':{'SmsAccountId':_0x1ef9e8},'transaction':_0x1f6baf})[_0xfe3e('0x23')](function(){var _0x75afdc=_[_0xfe3e('0x46')](_0x519d78,function(_0x17251d){_0x17251d[_0xfe3e('0x6c')]=_0x1ef9e8;return _0x17251d;});return db[_0xfe3e('0xc1')][_0xfe3e('0xc2')](_0x75afdc,{'transaction':_0x1f6baf});});}else{_0x26849c=0x194;_0x249d12=[];}});})[_0xfe3e('0x23')](function(){if(_0x26849c!==0x194){return db[_0xfe3e('0xc1')]['findAndCountAll']({'where':{'SmsAccountId':_0x1ef9e8},'order':_0xfe3e('0x7a')})[_0xfe3e('0x23')](function(_0x23a3df){_0x249d12=_0x23a3df;});}})[_0xfe3e('0x2d')](function(_0xbcade3){_0x26849c=0x1f4;logger['error'](_0xbcade3[_0xfe3e('0x3d')]);if(_0xbcade3[_0xfe3e('0x3e')]){delete _0xbcade3[_0xfe3e('0x3e')];}_0x249d12=_0xbcade3;})[_0xfe3e('0xc3')](function(){if(_0x249d12===null){_0x342404[_0xfe3e('0x2e')](_0x26849c);}else{if(_0x26849c===0x1f4){_0x342404['status'](_0x26849c)[_0xfe3e('0xbb')](_0x249d12);}else{_0x342404[_0xfe3e('0x2f')](_0x26849c)[_0xfe3e('0x35')](_0x249d12);}}});};exports[_0xfe3e('0xc4')]=function(_0x1a439d,_0x256150,_0x5cf5b8){var _0x3712e9={};var _0x16bb7a={};var _0x192aff;var _0x32ac67;return db['SmsAccount'][_0xfe3e('0x6e')]({'where':{'id':_0x1a439d[_0xfe3e('0x69')]['id']}})['then'](handleEntityNotFound(_0x256150,null))[_0xfe3e('0x23')](function(_0x4ff349){if(_0x4ff349){_0x192aff=_0x4ff349;_0x16bb7a[_0xfe3e('0x45')]=_['keys'](db['SmsApplication'][_0xfe3e('0x5e')]);_0x16bb7a[_0xfe3e('0x47')]=_[_0xfe3e('0x48')](_0x1a439d[_0xfe3e('0x47')]);_0x16bb7a[_0xfe3e('0x49')]=_[_0xfe3e('0x4a')](_0x16bb7a[_0xfe3e('0x45')],_0x16bb7a['query']);_0x3712e9[_0xfe3e('0x4b')]=_[_0xfe3e('0x4a')](_0x16bb7a[_0xfe3e('0x45')],qs[_0xfe3e('0x4c')](_0x1a439d[_0xfe3e('0x47')][_0xfe3e('0x4c')]));_0x3712e9[_0xfe3e('0x4b')]=_0x3712e9[_0xfe3e('0x4b')][_0xfe3e('0x4d')]?_0x3712e9[_0xfe3e('0x4b')]:_0x16bb7a[_0xfe3e('0x45')];_0x3712e9[_0xfe3e('0x51')]=qs['sort'](_0x1a439d[_0xfe3e('0x47')][_0xfe3e('0x52')]);_0x3712e9[_0xfe3e('0x53')]=qs['filters'](_[_0xfe3e('0x54')](_0x1a439d[_0xfe3e('0x47')],_0x16bb7a[_0xfe3e('0x49')]));if(_0x1a439d[_0xfe3e('0x47')][_0xfe3e('0x55')]){_0x3712e9[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x3712e9['where'],{'$or':_[_0xfe3e('0x46')](_0x3712e9[_0xfe3e('0x4b')],function(_0x55271f){var _0x3a1f21={};_0x3a1f21[_0x55271f]={'$like':'%'+_0x1a439d[_0xfe3e('0x47')]['filter']+'%'};return _0x3a1f21;})});}_0x3712e9=_[_0xfe3e('0x56')]({},_0x3712e9,_0x1a439d[_0xfe3e('0x5f')]);return _0x192aff['getApplications'](_0x3712e9);}})[_0xfe3e('0x23')](function(_0x40c39e){if(_0x40c39e){_0x32ac67=_0x40c39e[_0xfe3e('0x4d')];if(!_0x1a439d[_0xfe3e('0x47')][_0xfe3e('0x4e')]('nolimit')){_0x3712e9[_0xfe3e('0x31')]=qs[_0xfe3e('0x31')](_0x1a439d['query'][_0xfe3e('0x31')]);_0x3712e9['offset']=qs[_0xfe3e('0x50')](_0x1a439d['query'][_0xfe3e('0x50')]);}return _0x192aff[_0xfe3e('0xc4')](_0x3712e9);}})[_0xfe3e('0x23')](function(_0x420737){if(_0x420737){return _0x420737?{'count':_0x32ac67,'rows':_0x420737}:null;}})[_0xfe3e('0x23')](respondWithResult(_0x256150,null))['catch'](handleError(_0x256150,null));};exports[_0xfe3e('0xc5')]=function(_0x3ed3e9,_0x402809,_0x1fe66c){var _0x592535={'raw':![],'where':{}};var _0x93702={};var _0x9ce7bd={'count':0x0,'rows':[]};return db[_0xfe3e('0x42')][_0xfe3e('0x6e')]({'where':{'id':_0x3ed3e9[_0xfe3e('0x69')]['id']}})['then'](handleEntityNotFound(_0x402809,null))[_0xfe3e('0x23')](function(_0x547789){if(_0x547789){_0x93702[_0xfe3e('0x45')]=_[_0xfe3e('0x48')](db['SmsInteraction'][_0xfe3e('0x5e')]);_0x93702[_0xfe3e('0x47')]=_[_0xfe3e('0x48')](_0x3ed3e9[_0xfe3e('0x47')]);_0x93702['filters']=_[_0xfe3e('0x4a')](_0x93702['model'],_0x93702[_0xfe3e('0x47')]);_0x592535[_0xfe3e('0x4b')]=_[_0xfe3e('0x4a')](_0x93702[_0xfe3e('0x45')],qs[_0xfe3e('0x4c')](_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0x4c')]));_0x592535['attributes']=_0x592535[_0xfe3e('0x4b')][_0xfe3e('0x4d')]?_0x592535['attributes']:_0x93702[_0xfe3e('0x45')];if(!_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0x4e')](_0xfe3e('0x4f'))){_0x592535[_0xfe3e('0x31')]=qs[_0xfe3e('0x31')](_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0x31')]);_0x592535['offset']=qs[_0xfe3e('0x50')](_0x3ed3e9[_0xfe3e('0x47')]['offset']);}_0x592535[_0xfe3e('0x51')]=qs['sort'](_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0x52')]);_0x592535[_0xfe3e('0x53')]=qs['filters'](_[_0xfe3e('0x54')](_0x3ed3e9[_0xfe3e('0x47')],_0x93702['filters']));_0x592535[_0xfe3e('0x53')][_0xfe3e('0x6c')]=_0x547789['id'];if(_0x3ed3e9['query'][_0xfe3e('0x55')]){_0x592535[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x592535['where'],{'$or':_[_0xfe3e('0x46')](_0x592535[_0xfe3e('0x4b')],function(_0x9cd71b){var _0x3e673a={};_0x3e673a[_0x9cd71b]={'$like':'%'+_0x3ed3e9[_0xfe3e('0x47')]['filter']+'%'};return _0x3e673a;})});}_0x592535=_['merge']({},_0x592535,_0x3ed3e9[_0xfe3e('0x5f')]);return db[_0xfe3e('0xa5')][_0xfe3e('0x32')]({'where':_0x592535[_0xfe3e('0x53')]})['then'](function(_0x3708e7){_0x9ce7bd[_0xfe3e('0x32')]=_0x3708e7;if(_0x3ed3e9[_0xfe3e('0x47')]['includeAll']){_0x592535[_0xfe3e('0x5a')]=[{'model':db[_0xfe3e('0x7b')],'as':_0xfe3e('0xc6'),'required':![]},{'model':db[_0xfe3e('0xb2')],'as':_0xfe3e('0xc7'),'attributes':[_0xfe3e('0x3e'),'fullname',_0xfe3e('0xc8')],'required':![]},{'model':db['Tag'],'as':_0xfe3e('0xc9'),'attributes':['id','name',_0xfe3e('0xca')],'where':_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0xcb')]?{'id':_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0xcb')]}:undefined,'required':_0x3ed3e9[_0xfe3e('0x47')][_0xfe3e('0xcb')]?!![]:![]}];}return db[_0xfe3e('0xa5')][_0xfe3e('0x5b')](_0x592535);})['then'](function(_0x361845){_0x9ce7bd[_0xfe3e('0x5c')]=_0x361845;return _0x9ce7bd;});}})[_0xfe3e('0x23')](respondWithFilteredResult(_0x402809,_0x592535))[_0xfe3e('0x2d')](handleError(_0x402809,null));};exports[_0xfe3e('0xbb')]=function(_0x2e4f2a,_0x150758,_0x23cc7d){var _0x38e152,_0x166470,_0x3131df;if(_[_0xfe3e('0x9a')](_0x2e4f2a[_0xfe3e('0x61')]['body'])||_0x2e4f2a[_0xfe3e('0x61')][_0xfe3e('0x61')]===''){throw new db[(_0xfe3e('0x7c'))][(_0xfe3e('0x7d'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xfe3e('0x9a')](_0x2e4f2a[_0xfe3e('0x61')]['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0x38e152=_0x2e4f2a[_0xfe3e('0x61')]['to'];return db['SmsAccount'][_0xfe3e('0x68')]({'where':{'id':_0x2e4f2a[_0xfe3e('0x69')]['id']},'include':[{'model':db[_0xfe3e('0xa0')],'as':'List','include':[{'model':db[_0xfe3e('0x7b')],'as':_0xfe3e('0xa1'),'where':{'mobile':_0x38e152},'limit':0x1,'order':[['updatedAt',_0xfe3e('0xcc')]]}]}]})[_0xfe3e('0x23')](handleEntityNotFound(_0x150758,null))[_0xfe3e('0x23')](function(_0x1857ca){if(_0x1857ca&&_0x1857ca[_0xfe3e('0xcd')]){_0x166470=_0x1857ca[_0xfe3e('0x3a')]({'plain':!![]});if(_0x166470[_0xfe3e('0xcd')]&&_0x166470[_0xfe3e('0xcd')]['Contacts'][_0xfe3e('0x4d')]){return _0x166470[_0xfe3e('0xcd')][_0xfe3e('0xa1')][0x0];}return db['CmContact'][_0xfe3e('0x60')](_[_0xfe3e('0x1c')](_0x2e4f2a[_0xfe3e('0x61')],{'firstName':_0x38e152,'mobile':_0x38e152,'phone':_0x38e152,'ListId':_0x166470[_0xfe3e('0x82')]}));}})[_0xfe3e('0x23')](handleEntityNotFound(_0x150758,null))[_0xfe3e('0x23')](function(_0x7b6e56){if(_0x7b6e56){_0x3131df=_0x7b6e56;return db[_0xfe3e('0xa5')]['find']({'where':{'ContactId':_0x3131df['id'],'closed':![],'SmsAccountId':_0x166470['id']}})[_0xfe3e('0x23')](function(_0x599423){if(_0x599423){return[_0x599423,![]];}return db[_0xfe3e('0xa5')]['create']({'UserId':_0x2e4f2a[_0xfe3e('0x62')]['id'],'ContactId':_0x3131df['id'],'SmsAccountId':_0x166470['id'],'phone':_0x38e152,'firstMsgDirection':_0xfe3e('0xce'),'Messages':[_[_0xfe3e('0x56')](_0x2e4f2a[_0xfe3e('0x61')],{'read':![],'body':_0x2e4f2a[_0xfe3e('0x61')][_0xfe3e('0x61')],'phone':_0x38e152,'SmsAccountId':_0x166470['id'],'UserId':_0x2e4f2a[_0xfe3e('0x62')]['id'],'ContactId':_0x3131df['id']})]},{'include':[{'model':db['SmsMessage'],'as':_0xfe3e('0xcf')}]})['then'](function(_0x793156){return[_0x793156,!![]];});});}})['spread'](function(_0x3e6905,_0x1f1064){if(_0x1f1064){return _0x3e6905;}return db[_0xfe3e('0xae')]['create'](_[_0xfe3e('0x56')](_0x2e4f2a[_0xfe3e('0x61')],{'read':![],'body':_0x2e4f2a[_0xfe3e('0x61')][_0xfe3e('0x61')],'phone':_0x38e152,'SmsAccountId':_0x166470['id'],'SmsInteractionId':_0x3e6905['id'],'UserId':_0x2e4f2a['user']['id'],'ContactId':_0x3131df['id']}))[_0xfe3e('0x23')](function(_0x28438c){_0x3e6905[_0xfe3e('0xd0')][_0xfe3e('0xcf')]=[];_0x3e6905[_0xfe3e('0xd0')]['Messages']['push'](_0x28438c[_0xfe3e('0xd0')]);return _0x3e6905;});})[_0xfe3e('0x23')](respondWithResult(_0x150758,null))[_0xfe3e('0x2d')](handleError(_0x150758,null));};exports[_0xfe3e('0x2f')]=function(_0x871a24,_0x2d7b89,_0x44e074){if(_0x871a24['body']['id']){delete _0x871a24[_0xfe3e('0x61')]['id'];}var _0xd27568,_0x42081c,_0x176e83;return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x871a24[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x2d7b89,null))['then'](function(_0x51448a){if(_0x51448a){_0x176e83=_0x51448a;logger[_0xfe3e('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfe3e('0x2f'),_0xfe3e('0xd1'),_0x51448a[_0xfe3e('0x57')],util[_0xfe3e('0xd2')](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));switch(_0x51448a[_0xfe3e('0x57')]){case _0xfe3e('0x88'):if(_0x871a24['body'][_0xfe3e('0xd3')]&&_0x871a24[_0xfe3e('0x61')][_0xfe3e('0x2f')]){_0x42081c=_0x871a24[_0xfe3e('0x61')][_0xfe3e('0x2f')];return db[_0xfe3e('0xae')][_0xfe3e('0x68')]({'where':{'messageId':_0x871a24['body'][_0xfe3e('0xd3')]}});}break;case _0xfe3e('0x8b'):if(_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd4')]&&_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd5')]){_0x42081c=_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd5')];return db[_0xfe3e('0xae')]['find']({'where':{'messageId':_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd4')]}});}break;case _0xfe3e('0x8c'):if(_0x871a24[_0xfe3e('0x61')][_0xfe3e('0x8e')]&&_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd6')]){_0x42081c=_0x871a24['body'][_0xfe3e('0xd6')];return db[_0xfe3e('0xae')]['find']({'where':{'messageId':_0x871a24['body'][_0xfe3e('0x8e')]}});}break;case _0xfe3e('0x92'):var _0x872d07=_0x871a24['body']['results'][0x0];if(_0x872d07['messageId']&&_0x872d07[_0xfe3e('0x2f')][_0xfe3e('0xd7')]===_0xfe3e('0xd8')){_0x42081c=_0x872d07['status']['groupName'];return db['SmsMessage'][_0xfe3e('0x68')]({'where':{'messageId':_0x872d07[_0xfe3e('0x8d')]}});}break;case _0xfe3e('0x95'):if(_0x871a24['body']['messageId']&&_0x871a24[_0xfe3e('0x61')]['status']){_0x42081c=_0x871a24['body'][_0xfe3e('0x2f')];return db['SmsMessage'][_0xfe3e('0x68')]({'where':{'messageId':_0x871a24['body'][_0xfe3e('0x8d')]}});}break;case _0xfe3e('0x98'):if(_0x871a24[_0xfe3e('0x61')][0x0][_0xfe3e('0x2b')]['id']){_0x42081c=_0x871a24[_0xfe3e('0x61')][0x0][_0xfe3e('0x57')];return db[_0xfe3e('0xae')]['find']({'where':{'messageId':_0x871a24['body'][0x0]['message']['id']}});}break;case'intelepeer':if(_0x871a24[_0xfe3e('0x61')]['redif']&&_0x871a24[_0xfe3e('0x61')][_0xfe3e('0x2f')]){_0x42081c=_0x871a24[_0xfe3e('0x61')]['status'];return db[_0xfe3e('0xae')][_0xfe3e('0x68')]({'where':{'messageId':_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xd9')]}});}break;}}})[_0xfe3e('0x23')](handleEntityNotFound(_0x2d7b89,null))[_0xfe3e('0x23')](function(_0x420cca){if(_0x420cca){_0xd27568=_0x420cca;switch(_0x176e83[_0xfe3e('0x57')]){case _0xfe3e('0x88'):if(_0x42081c===_0xfe3e('0xd8')){return _0xd27568[_0xfe3e('0x67')]({'read':!![]});}else{logger[_0xfe3e('0x2a')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xfe3e('0x2f'),_0xfe3e('0x88'),util[_0xfe3e('0xd2')](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));}break;case _0xfe3e('0x8b'):if(_0x42081c==='1'){return _0xd27568['update']({'read':!![]});}else{logger[_0xfe3e('0x2a')](_0xfe3e('0x26'),_0xfe3e('0x2f'),_0xfe3e('0x88'),util['inspect'](_0x871a24['body'],{'showHidden':![],'depth':null}));}break;case _0xfe3e('0x8c'):if(!_0x871a24[_0xfe3e('0x61')][_0xfe3e('0xda')]&&_0x42081c>=0xc8&&_0x42081c<=0xce){return _0xd27568[_0xfe3e('0x67')]({'read':!![]});}else{logger[_0xfe3e('0x2a')](_0xfe3e('0x26'),_0xfe3e('0x2f'),_0xfe3e('0x8c'),util['inspect'](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));}break;case _0xfe3e('0x92'):var _0x18f864=_0x871a24[_0xfe3e('0x61')][_0xfe3e('0x93')][0x0];if(_0x18f864[_0xfe3e('0x2f')]['groupName']===_0xfe3e('0xd8')){return _0xd27568['update']({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0xfe3e('0x92'),util[_0xfe3e('0xd2')](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));}break;case _0xfe3e('0x95'):if(_0x42081c==_0xfe3e('0xdb')||_0x42081c==_0xfe3e('0xdc')){return _0xd27568[_0xfe3e('0x67')]({'read':!![]});}else{logger[_0xfe3e('0x2a')](_0xfe3e('0x26'),_0xfe3e('0x2f'),_0xfe3e('0x95'),util[_0xfe3e('0xd2')](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));}break;case _0xfe3e('0x98'):if(_0x42081c==_0xfe3e('0xdd')){return _0xd27568['update']({'read':!![]});}else{logger['error'](_0xfe3e('0x26'),_0xfe3e('0x2f'),'bandwidth',util[_0xfe3e('0xd2')](_0x871a24['body'],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x42081c==='DELIVRD'||_0x42081c===_0xfe3e('0xde')){return _0xd27568[_0xfe3e('0x67')]({'read':!![]});}else{logger[_0xfe3e('0x2a')](_0xfe3e('0x26'),_0xfe3e('0x2f'),'intelepeer',util['inspect'](_0x871a24[_0xfe3e('0x61')],{'showHidden':![],'depth':null}));}break;}return _0xd27568;}})[_0xfe3e('0x23')](respondWithResult(_0x2d7b89,null))[_0xfe3e('0x2d')](handleError(_0x2d7b89,null));};exports[_0xfe3e('0xdf')]=function(_0x3ceaed,_0x5c6697,_0x15b7cf){var _0x51ab6f,_0x2ea535,_0x3d2489;return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x3ceaed[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x5c6697,null))['then'](function(_0x410dba){if(_0x410dba){_0x3d2489=_0x410dba;logger[_0xfe3e('0x25')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','received\x20delivery\x20report\x20from',_0x410dba[_0xfe3e('0x57')],util[_0xfe3e('0xd2')](_0x3ceaed[_0xfe3e('0x47')],{'showHidden':![],'depth':null}));switch(_0x410dba[_0xfe3e('0x57')]){case _0xfe3e('0x94'):if(_0x3ceaed[_0xfe3e('0x47')]['message-id']&&_0x3ceaed[_0xfe3e('0x47')][_0xfe3e('0xe0')]){_0x2ea535=_0x3ceaed[_0xfe3e('0x47')]['state'];return db['SmsMessage'][_0xfe3e('0x68')]({'where':{'messageId':_0x3ceaed[_0xfe3e('0x47')][_0xfe3e('0xe1')]}});}break;}}})[_0xfe3e('0x23')](handleEntityNotFound(_0x5c6697,null))['then'](function(_0x4a6c84){if(_0x4a6c84){_0x51ab6f=_0x4a6c84;switch(_0x3d2489[_0xfe3e('0x57')]){case _0xfe3e('0x94'):if(_0x2ea535==='2'||_0x2ea535==='6'){return _0x51ab6f['update']({'read':!![]});}else{logger['error'](_0xfe3e('0x26'),_0xfe3e('0x2f'),_0xfe3e('0x94'),util[_0xfe3e('0xd2')](_0x3ceaed['query'],{'showHidden':![],'depth':null}));};break;}return _0x51ab6f;}})[_0xfe3e('0x23')](respondWithResult(_0x5c6697,null))[_0xfe3e('0x2d')](handleError(_0x5c6697,null));};exports[_0xfe3e('0xe2')]=function(_0x429f23,_0xecada9,_0x1c67c8){return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x429f23[_0xfe3e('0x69')]['id']}})['then'](handleEntityNotFound(_0xecada9,null))[_0xfe3e('0x23')](function(_0x247ae9){if(_0x247ae9){return _0x247ae9['addAgents'](_0x429f23[_0xfe3e('0x61')]['ids'],_[_0xfe3e('0xa3')](_0x429f23['body'],[_0xfe3e('0x71'),'id'])||{})[_0xfe3e('0xa6')](function(_0x2428ce){for(var _0x432473=0x0;_0x432473<_0x429f23[_0xfe3e('0x61')][_0xfe3e('0x71')]['length'];_0x432473+=0x1){socket[_0xfe3e('0xe3')]('userSmsAccount:save',{'UserId':Number(_0x429f23[_0xfe3e('0x61')][_0xfe3e('0x71')][_0x432473]),'SmsAccountId':Number(_0x429f23[_0xfe3e('0x69')]['id'])});}return _0x2428ce;});}})[_0xfe3e('0x23')](respondWithResult(_0xecada9,null))[_0xfe3e('0x2d')](handleError(_0xecada9,null));};exports['removeAgents']=function(_0x2e3d79,_0x23acaa,_0x3d137a){return db[_0xfe3e('0x42')][_0xfe3e('0x68')]({'where':{'id':_0x2e3d79[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x23acaa,null))[_0xfe3e('0x23')](function(_0x158363){if(_0x158363){return _0x158363[_0xfe3e('0xe4')](_0x2e3d79[_0xfe3e('0x47')][_0xfe3e('0x71')])[_0xfe3e('0x23')](function(){if(_[_0xfe3e('0xe5')](_0x2e3d79[_0xfe3e('0x47')][_0xfe3e('0x71')])){for(var _0x414d0c=0x0;_0x414d0c<_0x2e3d79[_0xfe3e('0x47')][_0xfe3e('0x71')][_0xfe3e('0x4d')];_0x414d0c+=0x1){socket['emit'](_0xfe3e('0xe6'),{'UserId':Number(_0x2e3d79[_0xfe3e('0x47')]['ids'][_0x414d0c]),'SmsAccountId':Number(_0x2e3d79['params']['id'])});}}else{socket[_0xfe3e('0xe3')](_0xfe3e('0xe6'),{'UserId':Number(_0x2e3d79[_0xfe3e('0x47')][_0xfe3e('0x71')]),'SmsAccountId':Number(_0x2e3d79[_0xfe3e('0x69')]['id'])});}});}})[_0xfe3e('0x23')](respondWithStatusCode(_0x23acaa,null))[_0xfe3e('0x2d')](handleError(_0x23acaa,null));};exports[_0xfe3e('0xe7')]=function(_0x4ec41a,_0x469c95,_0x4ff04b){var _0x8cb187={};var _0x56adc7={};var _0x2e275b;var _0xd4d1af;return db[_0xfe3e('0x42')]['findOne']({'where':{'id':_0x4ec41a[_0xfe3e('0x69')]['id']}})[_0xfe3e('0x23')](handleEntityNotFound(_0x469c95,null))[_0xfe3e('0x23')](function(_0x48d555){if(_0x48d555){_0x2e275b=_0x48d555;_0x56adc7[_0xfe3e('0x45')]=_[_0xfe3e('0x48')](db[_0xfe3e('0xb2')][_0xfe3e('0x5e')]);_0x56adc7['query']=_[_0xfe3e('0x48')](_0x4ec41a[_0xfe3e('0x47')]);_0x56adc7[_0xfe3e('0x49')]=_[_0xfe3e('0x4a')](_0x56adc7[_0xfe3e('0x45')],_0x56adc7[_0xfe3e('0x47')]);_0x8cb187[_0xfe3e('0x4b')]=_['intersection'](_0x56adc7['model'],qs['fields'](_0x4ec41a['query'][_0xfe3e('0x4c')]));_0x8cb187[_0xfe3e('0x4b')]=_0x8cb187[_0xfe3e('0x4b')]['length']?_0x8cb187[_0xfe3e('0x4b')]:_0x56adc7[_0xfe3e('0x45')];_0x8cb187[_0xfe3e('0x51')]=qs[_0xfe3e('0x52')](_0x4ec41a[_0xfe3e('0x47')][_0xfe3e('0x52')]);_0x8cb187[_0xfe3e('0x53')]=qs[_0xfe3e('0x49')](_[_0xfe3e('0x54')](_0x4ec41a[_0xfe3e('0x47')],_0x56adc7[_0xfe3e('0x49')]));if(_0x4ec41a[_0xfe3e('0x47')]['filter']){_0x8cb187[_0xfe3e('0x53')]=_[_0xfe3e('0x56')](_0x8cb187['where'],{'$or':_['map'](_0x8cb187[_0xfe3e('0x4b')],function(_0x47e610){var _0x357639={};_0x357639[_0x47e610]={'$like':'%'+_0x4ec41a[_0xfe3e('0x47')][_0xfe3e('0x55')]+'%'};return _0x357639;})});}_0x8cb187=_[_0xfe3e('0x56')]({},_0x8cb187,_0x4ec41a[_0xfe3e('0x5f')]);return _0x2e275b['getAgents'](_0x8cb187);}})['then'](function(_0x1be45a){if(_0x1be45a){_0xd4d1af=_0x1be45a[_0xfe3e('0x4d')];if(!_0x4ec41a[_0xfe3e('0x47')][_0xfe3e('0x4e')](_0xfe3e('0x4f'))){_0x8cb187[_0xfe3e('0x31')]=qs[_0xfe3e('0x31')](_0x4ec41a['query']['limit']);_0x8cb187[_0xfe3e('0x50')]=qs[_0xfe3e('0x50')](_0x4ec41a[_0xfe3e('0x47')][_0xfe3e('0x50')]);}return _0x2e275b['getAgents'](_0x8cb187);}})[_0xfe3e('0x23')](function(_0xf726a5){if(_0xf726a5){return _0xf726a5?{'count':_0xd4d1af,'rows':_0xf726a5}:null;}})['then'](respondWithResult(_0x469c95,null))[_0xfe3e('0x2d')](handleError(_0x469c95,null));};
\ No newline at end of file
+var _0x39f0=['clicksend','message_id','plivo','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','clickatell','replyMessageId','bandwidth','intelepeer','refid','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','omit','defaults','contact','SmsInteraction','interaction','autoclose','push','close','*,*,*,*','created','SmsMessage','ContactId','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','startRouting','receiveMessage','entity\x20found','stringify','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','bulkCreate','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','color','tag','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','user','out','Messages','spread','dataValues','received\x20delivery\x20report\x20from','skebby_dispatch_id','statusInt','status_code','groupName','DELIVERED','redif','inspect','error_code','infobip','RECEIVED_BY_RECIPIENT','DELIVRD','ACCEPTD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./smsAccount.socket','register','jayson/promise','client','request','info','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','status','undefined','limit','count','offset','set','Content-Range','json','reject','update','then','SmsAccounts','UserProfileResource','end','stack','name','send','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','include','findAll','rows','show','Pause','filters','includeAll','find','create','role','get','UserProfileSection','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','destroy','params','describe','addDisposition','SmsAccountId','Disposition','getDispositions','findOne','pick','removeDispositions','ids','CannedAnswer','removeAnswers','sms','SmsApplication','Applications','account','applications','priority','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','mobile','twilio','from','From','Body','messageId','MessageSid','skebby','text','connectel'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x39f0,0x143));var _0x039f=function(_0x204296,_0xec4630){_0x204296=_0x204296-0x0;var _0x567f32=_0x39f0[_0x204296];return _0x567f32;};'use strict';var emlformat=require(_0x039f('0x0'));var rimraf=require(_0x039f('0x1'));var zipdir=require(_0x039f('0x2'));var jsonpatch=require(_0x039f('0x3'));var rp=require(_0x039f('0x4'));var moment=require(_0x039f('0x5'));var BPromise=require(_0x039f('0x6'));var Mustache=require('mustache');var util=require(_0x039f('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x039f('0x8'));var ejs=require(_0x039f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x039f('0xa'));var squel=require(_0x039f('0xb'));var crypto=require(_0x039f('0xc'));var jsforce=require(_0x039f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x039f('0x8'));var querystring=require('querystring');var Papa=require(_0x039f('0xe'));var Redis=require(_0x039f('0xf'));var authService=require(_0x039f('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x039f('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x039f('0x12'))(_0x039f('0x13'));var utils=require(_0x039f('0x14'));var config=require(_0x039f('0x15'));var licenseUtil=require(_0x039f('0x16'));var db=require(_0x039f('0x17'))['db'];config['redis']=_['defaults'](config[_0x039f('0x18')],{'host':_0x039f('0x19'),'port':0x18eb});var socket=require(_0x039f('0x1a'))(new Redis(config['redis']));require(_0x039f('0x1b'))[_0x039f('0x1c')](socket);var jayson=require(_0x039f('0x1d'));var client=jayson[_0x039f('0x1e')]['http']({'port':0x232c});function respondWithRpcPromise(_0x3479e0,_0x49865e,_0x260d2c,_0x47885a){return new BPromise(function(_0x180dc9,_0x49463){var _0x5ab619=_0x47885a||client;return _0x5ab619[_0x039f('0x1f')](_0x3479e0,_0x260d2c)['then'](function(_0x4a4175){logger[_0x039f('0x20')](_0x039f('0x21'),_0x49865e,_0x039f('0x22'));logger[_0x039f('0x23')](_0x039f('0x24'),_0x49865e,_0x039f('0x22'),JSON['stringify'](_0x4a4175));if(_0x4a4175[_0x039f('0x25')]){if(_0x4a4175[_0x039f('0x25')]['code']===0x1f4){logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x4a4175['error'][_0x039f('0x26')]);return _0x49463(_0x4a4175['error'][_0x039f('0x26')]);}logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x4a4175[_0x039f('0x25')][_0x039f('0x26')]);return _0x180dc9(_0x4a4175['error'][_0x039f('0x26')]);}else{logger['info'](_0x039f('0x21'),_0x49865e,_0x039f('0x22'));_0x180dc9(_0x4a4175[_0x039f('0x27')][_0x039f('0x26')]);}})[_0x039f('0x28')](function(_0x68f407){logger[_0x039f('0x25')](_0x039f('0x21'),_0x49865e,_0x68f407);_0x49463(_0x68f407);});});}function respondWithStatusCode(_0xa905ba,_0x524994){_0x524994=_0x524994||0xcc;return function(_0x331192){if(_0x331192){return _0xa905ba[_0x039f('0x29')](_0x524994);}return _0xa905ba[_0x039f('0x2a')](_0x524994)['end']();};}function respondWithResult(_0x14dfe5,_0x141054){_0x141054=_0x141054||0xc8;return function(_0x2f30bb){if(_0x2f30bb){return _0x14dfe5['status'](_0x141054)['json'](_0x2f30bb);}};}function respondWithFilteredResult(_0x4ec341,_0x357cc1){return function(_0x9b5b7){if(_0x9b5b7){var _0x5af817=typeof _0x357cc1['offset']===_0x039f('0x2b')&&typeof _0x357cc1[_0x039f('0x2c')]===_0x039f('0x2b');var _0x1ab641=_0x9b5b7[_0x039f('0x2d')];var _0x451f5a=_0x5af817?0x0:_0x357cc1[_0x039f('0x2e')];var _0x1f1f4f=_0x5af817?_0x9b5b7[_0x039f('0x2d')]:_0x357cc1['offset']+_0x357cc1[_0x039f('0x2c')];var _0x4feb9f;if(_0x1f1f4f>=_0x1ab641){_0x1f1f4f=_0x1ab641;_0x4feb9f=0xc8;}else{_0x4feb9f=0xce;}_0x4ec341[_0x039f('0x2a')](_0x4feb9f);return _0x4ec341[_0x039f('0x2f')](_0x039f('0x30'),_0x451f5a+'-'+_0x1f1f4f+'/'+_0x1ab641)[_0x039f('0x31')](_0x9b5b7);}return null;};}function patchUpdates(_0x30c91d){return function(_0x4f3e26){try{jsonpatch['apply'](_0x4f3e26,_0x30c91d,!![]);}catch(_0xcb509b){return BPromise[_0x039f('0x32')](_0xcb509b);}return _0x4f3e26['save']();};}function saveUpdates(_0x229f91,_0x256ff9){return function(_0x1ef5bb){if(_0x1ef5bb){return _0x1ef5bb[_0x039f('0x33')](_0x229f91)[_0x039f('0x34')](function(_0x18b663){return _0x18b663;});}return null;};}function removeEntity(_0x5974db,_0x9a378e){return function(_0x410772){if(_0x410772){return _0x410772['destroy']()[_0x039f('0x34')](function(){var _0x253a0d=_0x410772['get']({'plain':!![]});var _0x6b742=_0x039f('0x35');return db[_0x039f('0x36')]['destroy']({'where':{'type':_0x6b742,'resourceId':_0x253a0d['id']}})[_0x039f('0x34')](function(){return _0x410772;});})[_0x039f('0x34')](function(){_0x5974db[_0x039f('0x2a')](0xcc)[_0x039f('0x37')]();});}};}function handleEntityNotFound(_0x380c83,_0x15018c){return function(_0x392f78){if(!_0x392f78){_0x380c83['sendStatus'](0x194);}return _0x392f78;};}function handleError(_0x7ae843,_0x313125){_0x313125=_0x313125||0x1f4;return function(_0x15697c){logger[_0x039f('0x25')](_0x15697c[_0x039f('0x38')]);if(_0x15697c[_0x039f('0x39')]){delete _0x15697c[_0x039f('0x39')];}_0x7ae843[_0x039f('0x2a')](_0x313125)[_0x039f('0x3a')](_0x15697c);};}exports['index']=function(_0x382907,_0xf8ad8f){var _0x24cfe4={'include':[{'model':db['Pause'],'as':_0x039f('0x3b')}]},_0x3f1f64={},_0x118af8={'count':0x0,'rows':[]};var _0x4a3f20=_[_0x039f('0x3c')](db[_0x039f('0x3d')][_0x039f('0x3e')],function(_0x13baec){return{'name':_0x13baec[_0x039f('0x3f')],'type':_0x13baec[_0x039f('0x40')][_0x039f('0x41')]};});_0x3f1f64[_0x039f('0x42')]=_[_0x039f('0x3c')](_0x4a3f20,_0x039f('0x39'));_0x3f1f64[_0x039f('0x43')]=_[_0x039f('0x44')](_0x382907['query']);_0x3f1f64['filters']=_[_0x039f('0x45')](_0x3f1f64['model'],_0x3f1f64[_0x039f('0x43')]);_0x24cfe4[_0x039f('0x46')]=_[_0x039f('0x45')](_0x3f1f64['model'],qs[_0x039f('0x47')](_0x382907[_0x039f('0x43')]['fields']));_0x24cfe4[_0x039f('0x46')]=_0x24cfe4[_0x039f('0x46')][_0x039f('0x48')]?_0x24cfe4[_0x039f('0x46')]:_0x3f1f64[_0x039f('0x42')];if(!_0x382907['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x24cfe4[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x382907[_0x039f('0x43')][_0x039f('0x2c')]);_0x24cfe4['offset']=qs[_0x039f('0x2e')](_0x382907[_0x039f('0x43')][_0x039f('0x2e')]);}_0x24cfe4[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x382907[_0x039f('0x43')]['sort']);_0x24cfe4[_0x039f('0x4d')]=qs['filters'](_['pick'](_0x382907[_0x039f('0x43')],_0x3f1f64['filters']),_0x4a3f20);if(_0x382907[_0x039f('0x43')][_0x039f('0x4e')]){_0x24cfe4['where']=_['merge'](_0x24cfe4[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x4a3f20,function(_0x4e9c6b){if(_0x4e9c6b['type']!=='VIRTUAL'){var _0xba6add={};_0xba6add[_0x4e9c6b[_0x039f('0x39')]]={'$like':'%'+_0x382907[_0x039f('0x43')]['filter']+'%'};return _0xba6add;}})});}_0x24cfe4=_[_0x039f('0x4f')]({},_0x24cfe4,_0x382907[_0x039f('0x50')]);var _0x5db4a7={'where':_0x24cfe4['where']};return db['SmsAccount'][_0x039f('0x2d')](_0x5db4a7)[_0x039f('0x34')](function(_0x257b41){_0x118af8['count']=_0x257b41;if(_0x382907[_0x039f('0x43')]['includeAll']){_0x24cfe4[_0x039f('0x51')]=[{'all':!![]}];}return db[_0x039f('0x3d')][_0x039f('0x52')](_0x24cfe4);})[_0x039f('0x34')](function(_0x56cbd9){_0x118af8[_0x039f('0x53')]=_0x56cbd9;return _0x118af8;})['then'](respondWithFilteredResult(_0xf8ad8f,_0x24cfe4))['catch'](handleError(_0xf8ad8f,null));};exports[_0x039f('0x54')]=function(_0x36d3d8,_0xf07d7b){var _0x1d2d93={'raw':![],'where':{'id':_0x36d3d8['params']['id']},'include':[{'model':db[_0x039f('0x55')],'as':_0x039f('0x3b')}]},_0x8c2fdb={};_0x8c2fdb[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x3d')]['rawAttributes']);_0x8c2fdb[_0x039f('0x43')]=_[_0x039f('0x44')](_0x36d3d8[_0x039f('0x43')]);_0x8c2fdb[_0x039f('0x56')]=_[_0x039f('0x45')](_0x8c2fdb['model'],_0x8c2fdb[_0x039f('0x43')]);_0x1d2d93[_0x039f('0x46')]=_['intersection'](_0x8c2fdb['model'],qs['fields'](_0x36d3d8['query'][_0x039f('0x47')]));_0x1d2d93['attributes']=_0x1d2d93[_0x039f('0x46')]['length']?_0x1d2d93[_0x039f('0x46')]:_0x8c2fdb[_0x039f('0x42')];if(_0x36d3d8['query'][_0x039f('0x57')]){_0x1d2d93['include']=[{'all':!![]}];}_0x1d2d93=_[_0x039f('0x4f')]({},_0x1d2d93,_0x36d3d8[_0x039f('0x50')]);return db[_0x039f('0x3d')][_0x039f('0x58')](_0x1d2d93)[_0x039f('0x34')](handleEntityNotFound(_0xf07d7b,null))[_0x039f('0x34')](respondWithResult(_0xf07d7b,null))[_0x039f('0x28')](handleError(_0xf07d7b,null));};exports['create']=function(_0x2551f6,_0xfaff07){return db[_0x039f('0x3d')][_0x039f('0x59')](_0x2551f6['body'],{})[_0x039f('0x34')](function(_0x19ab43){var _0x490069=_0x2551f6['user']['get']({'plain':!![]});if(!_0x490069)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x490069[_0x039f('0x5a')]==='user'){var _0x44ed57=_0x19ab43[_0x039f('0x5b')]({'plain':!![]});var _0x4669ce='SmsAccounts';return db[_0x039f('0x5c')][_0x039f('0x58')]({'where':{'name':_0x4669ce,'userProfileId':_0x490069['userProfileId']},'raw':!![]})[_0x039f('0x34')](function(_0x3d539a){if(_0x3d539a&&_0x3d539a['autoAssociation']===0x0){return db['UserProfileResource'][_0x039f('0x59')]({'name':_0x44ed57['name'],'resourceId':_0x44ed57['id'],'type':_0x3d539a['name'],'sectionId':_0x3d539a['id']},{})[_0x039f('0x34')](function(){return _0x19ab43;});}else{return _0x19ab43;}})[_0x039f('0x28')](function(_0x292289){logger[_0x039f('0x25')](_0x039f('0x5d'),_0x292289);throw _0x292289;});}return _0x19ab43;})[_0x039f('0x34')](respondWithResult(_0xfaff07,0xc9))[_0x039f('0x28')](handleError(_0xfaff07,null));};exports[_0x039f('0x33')]=function(_0x3b2c2a,_0x292862){if(_0x3b2c2a['body']['id']){delete _0x3b2c2a[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x3b2c2a['params']['id']},'include':[{'model':db[_0x039f('0x55')],'as':_0x039f('0x3b')}]})[_0x039f('0x34')](handleEntityNotFound(_0x292862,null))[_0x039f('0x34')](saveUpdates(_0x3b2c2a[_0x039f('0x5e')],null))[_0x039f('0x34')](respondWithResult(_0x292862,null))[_0x039f('0x28')](handleError(_0x292862,null));};exports[_0x039f('0x5f')]=function(_0x3cbded,_0x5cade1){return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x3cbded[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x5cade1,null))[_0x039f('0x34')](removeEntity(_0x5cade1,null))[_0x039f('0x28')](handleError(_0x5cade1,null));};exports[_0x039f('0x61')]=function(_0xd6503c,_0x4f7208){return db[_0x039f('0x3d')][_0x039f('0x61')]()[_0x039f('0x34')](respondWithResult(_0x4f7208,null))[_0x039f('0x28')](handleError(_0x4f7208,null));};exports[_0x039f('0x62')]=function(_0x2c0364,_0x94a8a7,_0x15b68b){if(_0x2c0364[_0x039f('0x5e')]['id']){delete _0x2c0364[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x2c0364['params']['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x94a8a7,null))[_0x039f('0x34')](function(_0xfd6dd1){if(_0xfd6dd1){_0x2c0364['body'][_0x039f('0x63')]=_0xfd6dd1['id'];return db[_0x039f('0x64')][_0x039f('0x59')](_0x2c0364[_0x039f('0x5e')]);}})[_0x039f('0x34')](respondWithResult(_0x94a8a7,null))[_0x039f('0x28')](handleError(_0x94a8a7,null));};exports[_0x039f('0x65')]=function(_0x581ff6,_0x804293,_0x7591db){var _0x4f74aa={'raw':![],'where':{}};var _0x3c917b={};var _0x749505={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x581ff6[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x804293,null))[_0x039f('0x34')](function(_0x3621f9){if(_0x3621f9){_0x3c917b[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x64')][_0x039f('0x3e')]);_0x3c917b[_0x039f('0x43')]=_[_0x039f('0x44')](_0x581ff6[_0x039f('0x43')]);_0x3c917b['filters']=_[_0x039f('0x45')](_0x3c917b[_0x039f('0x42')],_0x3c917b[_0x039f('0x43')]);_0x4f74aa['attributes']=_[_0x039f('0x45')](_0x3c917b[_0x039f('0x42')],qs[_0x039f('0x47')](_0x581ff6['query'][_0x039f('0x47')]));_0x4f74aa[_0x039f('0x46')]=_0x4f74aa[_0x039f('0x46')][_0x039f('0x48')]?_0x4f74aa[_0x039f('0x46')]:_0x3c917b[_0x039f('0x42')];if(!_0x581ff6['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x4f74aa[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x581ff6['query'][_0x039f('0x2c')]);_0x4f74aa[_0x039f('0x2e')]=qs['offset'](_0x581ff6[_0x039f('0x43')][_0x039f('0x2e')]);}_0x4f74aa[_0x039f('0x4b')]=qs['sort'](_0x581ff6[_0x039f('0x43')][_0x039f('0x4c')]);_0x4f74aa['where']=qs['filters'](_[_0x039f('0x67')](_0x581ff6[_0x039f('0x43')],_0x3c917b[_0x039f('0x56')]));_0x4f74aa[_0x039f('0x4d')][_0x039f('0x63')]=_0x3621f9['id'];if(_0x581ff6['query'][_0x039f('0x4e')]){_0x4f74aa[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x4f74aa[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x4f74aa[_0x039f('0x46')],function(_0x11e26c){var _0x540fb7={};_0x540fb7[_0x11e26c]={'$like':'%'+_0x581ff6[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x540fb7;})});}_0x4f74aa=_[_0x039f('0x4f')]({},_0x4f74aa,_0x581ff6['options']);return db[_0x039f('0x64')][_0x039f('0x2d')]({'where':_0x4f74aa[_0x039f('0x4d')]})[_0x039f('0x34')](function(_0x53e8d4){_0x749505['count']=_0x53e8d4;if(_0x581ff6['query'][_0x039f('0x57')]){_0x4f74aa[_0x039f('0x51')]=[{'all':!![]}];}return db[_0x039f('0x64')]['findAll'](_0x4f74aa);})[_0x039f('0x34')](function(_0x249ca7){_0x749505[_0x039f('0x53')]=_0x249ca7;return _0x749505;});}})[_0x039f('0x34')](respondWithFilteredResult(_0x804293,_0x4f74aa))[_0x039f('0x28')](handleError(_0x804293,null));};exports['removeDispositions']=function(_0x101bc3,_0x21f7ab,_0x18845c){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x101bc3[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x21f7ab,null))['then'](function(_0xcc8785){if(_0xcc8785){return _0xcc8785[_0x039f('0x68')](_0x101bc3[_0x039f('0x43')][_0x039f('0x69')]);}})[_0x039f('0x34')](respondWithStatusCode(_0x21f7ab,null))['catch'](handleError(_0x21f7ab,null));};exports['addAnswer']=function(_0x1a1670,_0xbaad69,_0x203263){if(_0x1a1670[_0x039f('0x5e')]['id']){delete _0x1a1670[_0x039f('0x5e')]['id'];}return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x1a1670[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0xbaad69,null))[_0x039f('0x34')](function(_0xfb11de){if(_0xfb11de){_0x1a1670[_0x039f('0x5e')][_0x039f('0x63')]=_0xfb11de['id'];return db[_0x039f('0x6a')][_0x039f('0x59')](_0x1a1670[_0x039f('0x5e')]);}})[_0x039f('0x34')](respondWithResult(_0xbaad69,null))[_0x039f('0x28')](handleError(_0xbaad69,null));};exports['getAnswers']=function(_0xdcbd33,_0x148a10,_0x666f66){var _0x3852d1={'raw':![],'where':{}};var _0x508397={};var _0x202440={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0xdcbd33[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x148a10,null))[_0x039f('0x34')](function(_0x573d9f){if(_0x573d9f){_0x508397[_0x039f('0x42')]=_[_0x039f('0x44')](db['CannedAnswer'][_0x039f('0x3e')]);_0x508397[_0x039f('0x43')]=_['keys'](_0xdcbd33[_0x039f('0x43')]);_0x508397[_0x039f('0x56')]=_['intersection'](_0x508397['model'],_0x508397[_0x039f('0x43')]);_0x3852d1[_0x039f('0x46')]=_['intersection'](_0x508397[_0x039f('0x42')],qs['fields'](_0xdcbd33[_0x039f('0x43')][_0x039f('0x47')]));_0x3852d1['attributes']=_0x3852d1['attributes']['length']?_0x3852d1[_0x039f('0x46')]:_0x508397[_0x039f('0x42')];if(!_0xdcbd33['query'][_0x039f('0x49')](_0x039f('0x4a'))){_0x3852d1[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0xdcbd33[_0x039f('0x43')][_0x039f('0x2c')]);_0x3852d1[_0x039f('0x2e')]=qs[_0x039f('0x2e')](_0xdcbd33['query'][_0x039f('0x2e')]);}_0x3852d1[_0x039f('0x4b')]=qs['sort'](_0xdcbd33[_0x039f('0x43')][_0x039f('0x4c')]);_0x3852d1[_0x039f('0x4d')]=qs['filters'](_['pick'](_0xdcbd33[_0x039f('0x43')],_0x508397[_0x039f('0x56')]));_0x3852d1[_0x039f('0x4d')][_0x039f('0x63')]=_0x573d9f['id'];if(_0xdcbd33[_0x039f('0x43')]['filter']){_0x3852d1[_0x039f('0x4d')]=_['merge'](_0x3852d1['where'],{'$or':_[_0x039f('0x3c')](_0x3852d1[_0x039f('0x46')],function(_0x51c276){var _0x20271f={};_0x20271f[_0x51c276]={'$like':'%'+_0xdcbd33[_0x039f('0x43')]['filter']+'%'};return _0x20271f;})});}_0x3852d1=_[_0x039f('0x4f')]({},_0x3852d1,_0xdcbd33[_0x039f('0x50')]);return db[_0x039f('0x6a')][_0x039f('0x2d')]({'where':_0x3852d1[_0x039f('0x4d')]})[_0x039f('0x34')](function(_0x568d71){_0x202440['count']=_0x568d71;if(_0xdcbd33[_0x039f('0x43')][_0x039f('0x57')]){_0x3852d1[_0x039f('0x51')]=[{'all':!![]}];}return db['CannedAnswer'][_0x039f('0x52')](_0x3852d1);})[_0x039f('0x34')](function(_0x3c8c65){_0x202440['rows']=_0x3c8c65;return _0x202440;});}})['then'](respondWithFilteredResult(_0x148a10,_0x3852d1))['catch'](handleError(_0x148a10,null));};exports['removeAnswers']=function(_0x5e3a3d,_0x27b966,_0x25db2e){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x5e3a3d[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x27b966,null))[_0x039f('0x34')](function(_0x33760b){if(_0x33760b){return _0x33760b[_0x039f('0x6b')](_0x5e3a3d[_0x039f('0x43')][_0x039f('0x69')]);}})['then'](respondWithStatusCode(_0x27b966,null))['catch'](handleError(_0x27b966,null));};exports['notify']=function(_0x503f34,_0x1c6677,_0x98512c){var _0x29515b={'channel':_0x039f('0x6c')};var _0x28f93d=[];var _0x36e825=[];var _0x165954={};return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x503f34[_0x039f('0x60')]['id']},'include':[{'model':db[_0x039f('0x6d')],'as':_0x039f('0x6e')}]})[_0x039f('0x34')](handleEntityNotFound(_0x1c6677,null))['then'](function(_0x34a181){_0x29515b[_0x039f('0x6f')]=_0x34a181;_0x29515b[_0x039f('0x70')]=_['orderBy'](_0x34a181[_0x039f('0x6e')],[_0x039f('0x71')],['asc']);if(_0x29515b[_0x039f('0x6f')]['Applications']){delete _0x29515b['account'][_0x039f('0x6e')];}return db[_0x039f('0x72')][_0x039f('0x61')]();})[_0x039f('0x34')](function(_0x449400){if(!_0x449400){throw new db[(_0x039f('0x73'))][(_0x039f('0x74'))](_0x039f('0x75'));}_0x28f93d=_[_0x039f('0x76')](_[_0x039f('0x44')](_0x449400),[_0x039f('0x77'),_0x039f('0x78')]);_0x36e825=_[_0x039f('0x76')](_[_0x039f('0x44')](_0x449400),['createdAt',_0x039f('0x78'),'CompanyId','ListId']);_0x29515b[_0x039f('0x5e')]={'mapKey':_0x039f('0x79')};if(_0x29515b[_0x039f('0x6f')][_0x039f('0x40')]){switch(_0x29515b['account'][_0x039f('0x40')]){case _0x039f('0x7a'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34['body'][_0x039f('0x7c')];_0x29515b['body'][_0x039f('0x5e')]=_0x503f34['body'][_0x039f('0x7d')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x7f')];break;case _0x039f('0x80'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]='+'+_0x503f34[_0x039f('0x5e')]['sender'];_0x29515b[_0x039f('0x5e')]['body']=_0x503f34[_0x039f('0x5e')][_0x039f('0x81')];break;case _0x039f('0x82'):_0x29515b['body'][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')]['message'];break;case _0x039f('0x83'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['from'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x5e')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x84')];break;case _0x039f('0x85'):_0x29515b['body'][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x7c')];_0x29515b[_0x039f('0x5e')]['body']=_0x503f34['body'][_0x039f('0x86')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x87')];break;case'infobip':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]='+'+_0x503f34[_0x039f('0x5e')][_0x039f('0x88')][0x0][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34['body'][_0x039f('0x88')][0x0]['text'];_0x29515b['body'][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x88')][0x0][_0x039f('0x7e')];break;case _0x039f('0x89'):_0x29515b[_0x039f('0x5e')]['from']=_0x503f34[_0x039f('0x5e')][_0x039f('0x8a')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x8b')]['message'];break;case _0x039f('0x8c'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['fromNumber'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x81')];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34['body'][_0x039f('0x8d')];break;case _0x039f('0x8e'):_0x29515b['body'][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id'];_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')][_0x039f('0x7b')];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')][0x0][_0x039f('0x26')][_0x039f('0x81')];break;case _0x039f('0x8f'):_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')]=_0x503f34[_0x039f('0x5e')]['from'];_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]=_0x503f34[_0x039f('0x5e')]['message'];_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')]=_0x503f34[_0x039f('0x5e')][_0x039f('0x90')];break;}}if(_0x29515b['body']['id']){delete _0x29515b[_0x039f('0x5e')]['id'];}if(_[_0x039f('0x91')](_0x29515b['body'][_0x039f('0x7b')])){throw new db['Sequelize']['ValidationError'](_0x039f('0x92'));}if(_['isNil'](_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')])||_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')]===''){throw new db[(_0x039f('0x73'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x039f('0x91')](_0x29515b['body'][_0x039f('0x93')])){throw new db['Sequelize']['ValidationError'](_0x039f('0x94')+_0x36e825);}if(!_[_0x039f('0x95')](_0x36e825,_0x29515b[_0x039f('0x5e')][_0x039f('0x93')])){throw new db[(_0x039f('0x73'))][(_0x039f('0x74'))](_0x039f('0x96')+_0x36e825);}_0x165954[_0x29515b['body'][_0x039f('0x93')]]=_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')];return db[_0x039f('0x97')]['find']({'where':{'id':_0x29515b['account'][_0x039f('0x98')]},'include':[{'model':db['CmContact'],'as':_0x039f('0x99'),'where':_0x165954,'limit':0x1,'order':[['updatedAt',_0x039f('0x9a')]]}]});})[_0x039f('0x34')](handleEntityNotFound(_0x1c6677,null))[_0x039f('0x34')](function(_0x261c66){if(_0x261c66){_0x29515b['list']=_[_0x039f('0x9b')](_0x261c66,['Contacts']);if(_0x261c66[_0x039f('0x99')][_0x039f('0x48')]){return _0x261c66[_0x039f('0x99')][0x0];}var _0x55ee75=_[_0x039f('0x9c')](_0x29515b[_0x039f('0x5e')],{'firstName':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'ListId':_0x261c66['id']});_0x55ee75[_0x29515b[_0x039f('0x5e')]['mapKey']]=_0x29515b[_0x039f('0x5e')]['from'];return db[_0x039f('0x72')][_0x039f('0x59')](_0x55ee75,{'fields':_0x28f93d,'raw':!![]});}})['then'](handleEntityNotFound(_0x1c6677,null))['then'](function(_0x1a8070){if(_0x1a8070){_0x29515b[_0x039f('0x9d')]=_0x1a8070;var _0x45debb={'ContactId':_0x1a8070['id'],'phone':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'SmsAccountId':_0x503f34[_0x039f('0x60')]['id']};var _0x3d1e49={'ContactId':_0x1a8070['id'],'SmsAccountId':_0x503f34[_0x039f('0x60')]['id'],'closed':![]};return db[_0x039f('0x9e')][_0x039f('0x58')]({'where':_0x3d1e49})['then'](function(_0x52e93a){if(_0x52e93a){return[_0x52e93a,![]];}return db[_0x039f('0x9e')]['create'](_0x45debb)[_0x039f('0x34')](function(_0x1752d2){return[_0x1752d2,!![]];});});}})['spread'](function(_0x347a60,_0x5a3954){_0x29515b[_0x039f('0x9f')]=_0x347a60[_0x039f('0x5b')]({'plain':!![]});_0x29515b['interaction']['created']=![];if(_0x5a3954){if(_0x29515b[_0x039f('0x6f')][_0x039f('0xa0')]){_0x29515b[_0x039f('0x70')][_0x039f('0xa1')]({'id':0x0,'priority':_0x29515b['applications']['length']+0x1,'app':_0x039f('0xa2'),'appdata':'unmanaged','interval':_0x039f('0xa3')});}_0x29515b['interaction'][_0x039f('0xa4')]=!![];}return db[_0x039f('0xa5')][_0x039f('0x59')]({'phone':_0x29515b[_0x039f('0x5e')][_0x039f('0x7b')],'messageId':_0x29515b[_0x039f('0x5e')][_0x039f('0x7e')],'body':_0x29515b[_0x039f('0x5e')][_0x039f('0x5e')],'SmsAccountId':_0x503f34['params']['id'],'SmsInteractionId':_0x347a60['id'],'direction':'in','ContactId':_0x347a60[_0x039f('0xa6')],'AttachmentId':_0x29515b[_0x039f('0x5e')][_0x039f('0xa7')]});})['then'](function(_0x599ad1){_0x29515b['message']=_0x599ad1;if(_0x29515b['interaction']['UserId']){return db[_0x039f('0xa8')][_0x039f('0x58')]({'attributes':['id',_0x039f('0x39')],'where':{'id':_0x29515b[_0x039f('0x9f')][_0x039f('0xa9')]}})[_0x039f('0x34')](function(_0x32bf92){if(_0x32bf92){_0x29515b[_0x039f('0x70')][_0x039f('0xaa')]({'id':0x0,'priority':0x0,'app':_0x039f('0xab'),'appdata':_0x32bf92[_0x039f('0x39')]+','+(_0x29515b[_0x039f('0x6f')][_0x039f('0xac')]||0xa),'interval':_0x039f('0xa3')});}return respondWithRpcPromise('Start',_0x039f('0xad'),_0x29515b);});}return respondWithRpcPromise('Start',_0x039f('0xad'),_0x29515b);})['then'](function(_0x549653){if(_0x549653){var _0xa549f=0xc8;var _0x5e0142=_0x039f('0xae');logger[_0x039f('0x20')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x5e0142,_0xa549f,_0x039f('0xaf'));logger[_0x039f('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x5e0142,_0xa549f,_0x039f('0xaf'),JSON[_0x039f('0xb0')](_0x549653));if(_0x29515b['account'][_0x039f('0x40')]===_0x039f('0x7a')){return _0x1c6677[_0x039f('0x2a')](_0xa549f)['set'](_0x039f('0xb1'),'text/xml')['send'](_0x039f('0xb2'));}else{return _0x1c6677['status'](_0xa549f)[_0x039f('0x31')](_0x549653);}}})['catch'](handleError(_0x1c6677,null));};exports[_0x039f('0xb3')]=function(_0x4e02d4,_0x1bd27c){var _0x46bd5d=_0x4e02d4[_0x039f('0x60')]['id'];var _0x5217f6=_0x4e02d4[_0x039f('0x5e')];var _0x21ea65=0xc8;var _0x7ff872=null;return db[_0x039f('0xb4')][_0x039f('0xb5')]({'isolationLevel':db['sequelize'][_0x039f('0xb6')][_0x039f('0xb7')]['READ_COMMITTED']},function(_0x3d6b8f){return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x46bd5d},'transaction':_0x3d6b8f})[_0x039f('0x34')](function(_0x22c79d){if(_0x22c79d){return db[_0x039f('0x6d')][_0x039f('0x5f')]({'where':{'SmsAccountId':_0x46bd5d},'transaction':_0x3d6b8f})[_0x039f('0x34')](function(){var _0x245f50=_['map'](_0x5217f6,function(_0x3c41fb){_0x3c41fb[_0x039f('0x63')]=_0x46bd5d;return _0x3c41fb;});return db[_0x039f('0x6d')][_0x039f('0xb8')](_0x245f50,{'transaction':_0x3d6b8f});});}else{_0x21ea65=0x194;_0x7ff872=[];}});})['then'](function(){if(_0x21ea65!==0x194){return db[_0x039f('0x6d')][_0x039f('0xb9')]({'where':{'SmsAccountId':_0x46bd5d},'order':_0x039f('0x71')})[_0x039f('0x34')](function(_0x39fce4){_0x7ff872=_0x39fce4;});}})[_0x039f('0x28')](function(_0x2af58a){_0x21ea65=0x1f4;logger['error'](_0x2af58a[_0x039f('0x38')]);if(_0x2af58a[_0x039f('0x39')]){delete _0x2af58a[_0x039f('0x39')];}_0x7ff872=_0x2af58a;})[_0x039f('0xba')](function(){if(_0x7ff872===null){_0x1bd27c['sendStatus'](_0x21ea65);}else{if(_0x21ea65===0x1f4){_0x1bd27c[_0x039f('0x2a')](_0x21ea65)[_0x039f('0x3a')](_0x7ff872);}else{_0x1bd27c['status'](_0x21ea65)[_0x039f('0x31')](_0x7ff872);}}});};exports['getApplications']=function(_0x3aea81,_0x2ab2a6,_0x5993a6){var _0x20f851={};var _0xd72bad={};var _0x318d70;var _0x35665b;return db['SmsAccount']['findOne']({'where':{'id':_0x3aea81[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x2ab2a6,null))[_0x039f('0x34')](function(_0x3d22b4){if(_0x3d22b4){_0x318d70=_0x3d22b4;_0xd72bad[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0x6d')][_0x039f('0x3e')]);_0xd72bad[_0x039f('0x43')]=_[_0x039f('0x44')](_0x3aea81['query']);_0xd72bad[_0x039f('0x56')]=_[_0x039f('0x45')](_0xd72bad['model'],_0xd72bad[_0x039f('0x43')]);_0x20f851[_0x039f('0x46')]=_[_0x039f('0x45')](_0xd72bad[_0x039f('0x42')],qs[_0x039f('0x47')](_0x3aea81['query']['fields']));_0x20f851['attributes']=_0x20f851[_0x039f('0x46')]['length']?_0x20f851[_0x039f('0x46')]:_0xd72bad[_0x039f('0x42')];_0x20f851[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x3aea81[_0x039f('0x43')][_0x039f('0x4c')]);_0x20f851[_0x039f('0x4d')]=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x3aea81[_0x039f('0x43')],_0xd72bad[_0x039f('0x56')]));if(_0x3aea81['query'][_0x039f('0x4e')]){_0x20f851[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x20f851[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x20f851[_0x039f('0x46')],function(_0xae941){var _0x19d5d1={};_0x19d5d1[_0xae941]={'$like':'%'+_0x3aea81[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x19d5d1;})});}_0x20f851=_[_0x039f('0x4f')]({},_0x20f851,_0x3aea81[_0x039f('0x50')]);return _0x318d70[_0x039f('0xbb')](_0x20f851);}})[_0x039f('0x34')](function(_0x3d2754){if(_0x3d2754){_0x35665b=_0x3d2754[_0x039f('0x48')];if(!_0x3aea81[_0x039f('0x43')][_0x039f('0x49')]('nolimit')){_0x20f851[_0x039f('0x2c')]=qs['limit'](_0x3aea81[_0x039f('0x43')][_0x039f('0x2c')]);_0x20f851['offset']=qs[_0x039f('0x2e')](_0x3aea81[_0x039f('0x43')][_0x039f('0x2e')]);}return _0x318d70[_0x039f('0xbb')](_0x20f851);}})['then'](function(_0xef5bf0){if(_0xef5bf0){return _0xef5bf0?{'count':_0x35665b,'rows':_0xef5bf0}:null;}})[_0x039f('0x34')](respondWithResult(_0x2ab2a6,null))[_0x039f('0x28')](handleError(_0x2ab2a6,null));};exports[_0x039f('0xbc')]=function(_0x44c205,_0x20b93a,_0x569921){var _0x1d7408={'raw':![],'where':{}};var _0x59c589={};var _0x5d54ed={'count':0x0,'rows':[]};return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x44c205[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x20b93a,null))[_0x039f('0x34')](function(_0x377b87){if(_0x377b87){_0x59c589['model']=_[_0x039f('0x44')](db[_0x039f('0x9e')][_0x039f('0x3e')]);_0x59c589['query']=_['keys'](_0x44c205[_0x039f('0x43')]);_0x59c589[_0x039f('0x56')]=_[_0x039f('0x45')](_0x59c589[_0x039f('0x42')],_0x59c589[_0x039f('0x43')]);_0x1d7408[_0x039f('0x46')]=_[_0x039f('0x45')](_0x59c589[_0x039f('0x42')],qs[_0x039f('0x47')](_0x44c205[_0x039f('0x43')][_0x039f('0x47')]));_0x1d7408['attributes']=_0x1d7408[_0x039f('0x46')][_0x039f('0x48')]?_0x1d7408[_0x039f('0x46')]:_0x59c589[_0x039f('0x42')];if(!_0x44c205[_0x039f('0x43')][_0x039f('0x49')](_0x039f('0x4a'))){_0x1d7408[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x44c205['query']['limit']);_0x1d7408[_0x039f('0x2e')]=qs[_0x039f('0x2e')](_0x44c205[_0x039f('0x43')]['offset']);}_0x1d7408[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x44c205['query'][_0x039f('0x4c')]);_0x1d7408['where']=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x44c205[_0x039f('0x43')],_0x59c589['filters']));_0x1d7408[_0x039f('0x4d')][_0x039f('0x63')]=_0x377b87['id'];if(_0x44c205[_0x039f('0x43')][_0x039f('0x4e')]){_0x1d7408[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x1d7408[_0x039f('0x4d')],{'$or':_[_0x039f('0x3c')](_0x1d7408['attributes'],function(_0x49fa1a){var _0x5a4a7c={};_0x5a4a7c[_0x49fa1a]={'$like':'%'+_0x44c205['query'][_0x039f('0x4e')]+'%'};return _0x5a4a7c;})});}_0x1d7408=_[_0x039f('0x4f')]({},_0x1d7408,_0x44c205[_0x039f('0x50')]);return db[_0x039f('0x9e')][_0x039f('0x2d')]({'where':_0x1d7408['where']})[_0x039f('0x34')](function(_0x2eb623){_0x5d54ed[_0x039f('0x2d')]=_0x2eb623;if(_0x44c205[_0x039f('0x43')][_0x039f('0x57')]){_0x1d7408[_0x039f('0x51')]=[{'model':db[_0x039f('0x72')],'as':_0x039f('0xbd'),'required':![]},{'model':db[_0x039f('0xa8')],'as':_0x039f('0xbe'),'attributes':[_0x039f('0x39'),_0x039f('0xbf'),_0x039f('0xc0')],'required':![]},{'model':db[_0x039f('0xc1')],'as':'Tags','attributes':['id',_0x039f('0x39'),_0x039f('0xc2')],'where':_0x44c205[_0x039f('0x43')][_0x039f('0xc3')]?{'id':_0x44c205[_0x039f('0x43')][_0x039f('0xc3')]}:undefined,'required':_0x44c205['query'][_0x039f('0xc3')]?!![]:![]}];}return db[_0x039f('0x9e')][_0x039f('0x52')](_0x1d7408);})[_0x039f('0x34')](function(_0x1cd65a){_0x5d54ed['rows']=_0x1cd65a;return _0x5d54ed;});}})[_0x039f('0x34')](respondWithFilteredResult(_0x20b93a,_0x1d7408))['catch'](handleError(_0x20b93a,null));};exports['send']=function(_0x4ec1f7,_0x5ec81c,_0x48c7d9){var _0x54f68e,_0x67d667,_0x4fd0a1;if(_[_0x039f('0x91')](_0x4ec1f7['body'][_0x039f('0x5e')])||_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')]===''){throw new db['Sequelize'][(_0x039f('0x74'))](_0x039f('0xc4'));}if(_[_0x039f('0x91')](_0x4ec1f7[_0x039f('0x5e')]['to'])){throw new db['Sequelize']['ValidationError'](_0x039f('0xc5'));}_0x54f68e=_0x4ec1f7['body']['to'];return db[_0x039f('0x3d')][_0x039f('0x58')]({'where':{'id':_0x4ec1f7[_0x039f('0x60')]['id']},'include':[{'model':db[_0x039f('0x97')],'as':_0x039f('0xc6'),'include':[{'model':db[_0x039f('0x72')],'as':_0x039f('0x99'),'where':{'mobile':_0x54f68e},'limit':0x1,'order':[[_0x039f('0x78'),'DESC']]}]}]})[_0x039f('0x34')](handleEntityNotFound(_0x5ec81c,null))[_0x039f('0x34')](function(_0x5b5461){if(_0x5b5461&&_0x5b5461[_0x039f('0xc6')]){_0x67d667=_0x5b5461[_0x039f('0x5b')]({'plain':!![]});if(_0x67d667[_0x039f('0xc6')]&&_0x67d667[_0x039f('0xc6')][_0x039f('0x99')][_0x039f('0x48')]){return _0x67d667[_0x039f('0xc6')][_0x039f('0x99')][0x0];}return db[_0x039f('0x72')]['create'](_[_0x039f('0x9c')](_0x4ec1f7['body'],{'firstName':_0x54f68e,'mobile':_0x54f68e,'phone':_0x54f68e,'ListId':_0x67d667['ListId']}));}})[_0x039f('0x34')](handleEntityNotFound(_0x5ec81c,null))['then'](function(_0x302e86){if(_0x302e86){_0x4fd0a1=_0x302e86;return db[_0x039f('0x9e')][_0x039f('0x58')]({'where':{'ContactId':_0x4fd0a1['id'],'closed':![],'SmsAccountId':_0x67d667['id']}})[_0x039f('0x34')](function(_0x339384){if(_0x339384){return[_0x339384,![]];}return db[_0x039f('0x9e')][_0x039f('0x59')]({'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id'],'SmsAccountId':_0x67d667['id'],'phone':_0x54f68e,'firstMsgDirection':_0x039f('0xc8'),'Messages':[_[_0x039f('0x4f')](_0x4ec1f7[_0x039f('0x5e')],{'read':![],'body':_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')],'phone':_0x54f68e,'SmsAccountId':_0x67d667['id'],'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id']})]},{'include':[{'model':db[_0x039f('0xa5')],'as':_0x039f('0xc9')}]})[_0x039f('0x34')](function(_0x56b0d1){return[_0x56b0d1,!![]];});});}})[_0x039f('0xca')](function(_0x13ee86,_0x4512cb){if(_0x4512cb){return _0x13ee86;}return db[_0x039f('0xa5')]['create'](_['merge'](_0x4ec1f7['body'],{'read':![],'body':_0x4ec1f7[_0x039f('0x5e')][_0x039f('0x5e')],'phone':_0x54f68e,'SmsAccountId':_0x67d667['id'],'SmsInteractionId':_0x13ee86['id'],'UserId':_0x4ec1f7[_0x039f('0xc7')]['id'],'ContactId':_0x4fd0a1['id']}))[_0x039f('0x34')](function(_0x49add2){_0x13ee86[_0x039f('0xcb')][_0x039f('0xc9')]=[];_0x13ee86[_0x039f('0xcb')][_0x039f('0xc9')][_0x039f('0xa1')](_0x49add2[_0x039f('0xcb')]);return _0x13ee86;});})['then'](respondWithResult(_0x5ec81c,null))[_0x039f('0x28')](handleError(_0x5ec81c,null));};exports[_0x039f('0x2a')]=function(_0x5217f2,_0x1983f6,_0x199c1f){if(_0x5217f2[_0x039f('0x5e')]['id']){delete _0x5217f2['body']['id'];}var _0x7309b7,_0x4d7c57,_0x305be9;return db[_0x039f('0x3d')]['find']({'where':{'id':_0x5217f2[_0x039f('0x60')]['id']}})['then'](handleEntityNotFound(_0x1983f6,null))[_0x039f('0x34')](function(_0x3d23c9){if(_0x3d23c9){_0x305be9=_0x3d23c9;logger[_0x039f('0x23')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0xcc'),_0x3d23c9[_0x039f('0x40')],util['inspect'](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));switch(_0x3d23c9['type']){case _0x039f('0x80'):if(_0x5217f2['body'][_0x039f('0xcd')]&&_0x5217f2['body']['status']){_0x4d7c57=_0x5217f2['body'][_0x039f('0x2a')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['skebby_dispatch_id']}});}break;case _0x039f('0x82'):if(_0x5217f2[_0x039f('0x5e')]['requestid']&&_0x5217f2[_0x039f('0x5e')][_0x039f('0xce')]){_0x4d7c57=_0x5217f2['body']['statusInt'];return db['SmsMessage'][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['requestid']}});}break;case _0x039f('0x83'):if(_0x5217f2['body'][_0x039f('0x84')]&&_0x5217f2[_0x039f('0x5e')][_0x039f('0xcf')]){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0xcf')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')]['message_id']}});}break;case'infobip':var _0x2510e9=_0x5217f2[_0x039f('0x5e')][_0x039f('0x88')][0x0];if(_0x2510e9[_0x039f('0x7e')]&&_0x2510e9[_0x039f('0x2a')][_0x039f('0xd0')]===_0x039f('0xd1')){_0x4d7c57=_0x2510e9[_0x039f('0x2a')]['groupName'];return db[_0x039f('0xa5')]['find']({'where':{'messageId':_0x2510e9[_0x039f('0x7e')]}});}break;case'clickatell':if(_0x5217f2[_0x039f('0x5e')]['messageId']&&_0x5217f2['body'][_0x039f('0x2a')]){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0x2a')];return db['SmsMessage'][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][_0x039f('0x7e')]}});}break;case _0x039f('0x8e'):if(_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id']){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x40')];return db[_0x039f('0xa5')]['find']({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][0x0][_0x039f('0x26')]['id']}});}break;case _0x039f('0x8f'):if(_0x5217f2[_0x039f('0x5e')][_0x039f('0xd2')]&&_0x5217f2[_0x039f('0x5e')]['status']){_0x4d7c57=_0x5217f2[_0x039f('0x5e')][_0x039f('0x2a')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x5217f2[_0x039f('0x5e')][_0x039f('0xd2')]}});}break;}}})[_0x039f('0x34')](handleEntityNotFound(_0x1983f6,null))[_0x039f('0x34')](function(_0x573d2b){if(_0x573d2b){_0x7309b7=_0x573d2b;switch(_0x305be9['type']){case _0x039f('0x80'):if(_0x4d7c57===_0x039f('0xd1')){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger['error'](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x80'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x4d7c57==='1'){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status','skebby',util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x039f('0x83'):if(!_0x5217f2[_0x039f('0x5e')][_0x039f('0xd4')]&&_0x4d7c57>=0xc8&&_0x4d7c57<=0xce){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x039f('0x2a'),_0x039f('0x83'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case _0x039f('0xd5'):var _0x2b6066=_0x5217f2[_0x039f('0x5e')]['results'][0x0];if(_0x2b6066[_0x039f('0x2a')]['groupName']==='DELIVERED'){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status','infobip',util['inspect'](_0x5217f2['body'],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x4d7c57=='DELIVERED_TO_GATEWAY'||_0x4d7c57==_0x039f('0xd6')){return _0x7309b7['update']({'read':!![]});}else{logger['error'](_0x039f('0x24'),'status',_0x039f('0x8c'),util[_0x039f('0xd3')](_0x5217f2['body'],{'showHidden':![],'depth':null}));}break;case _0x039f('0x8e'):if(_0x4d7c57=='message-delivered'){return _0x7309b7['update']({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x8e'),util[_0x039f('0xd3')](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;case'intelepeer':if(_0x4d7c57===_0x039f('0xd7')||_0x4d7c57===_0x039f('0xd8')){return _0x7309b7[_0x039f('0x33')]({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),'status',_0x039f('0x8f'),util['inspect'](_0x5217f2[_0x039f('0x5e')],{'showHidden':![],'depth':null}));}break;}return _0x7309b7;}})[_0x039f('0x34')](respondWithResult(_0x1983f6,null))[_0x039f('0x28')](handleError(_0x1983f6,null));};exports[_0x039f('0xd9')]=function(_0x4af516,_0x3ee39c,_0x3040a9){var _0x3e9f18,_0xe65df0,_0x5250b8;return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0x4af516[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x3ee39c,null))[_0x039f('0x34')](function(_0xdd929d){if(_0xdd929d){_0x5250b8=_0xdd929d;logger[_0x039f('0x23')]('SmsAccount,\x20%s,\x20%s,\x20%s','status',_0x039f('0xcc'),_0xdd929d[_0x039f('0x40')],util[_0x039f('0xd3')](_0x4af516[_0x039f('0x43')],{'showHidden':![],'depth':null}));switch(_0xdd929d[_0x039f('0x40')]){case _0x039f('0x89'):if(_0x4af516[_0x039f('0x43')][_0x039f('0xda')]&&_0x4af516[_0x039f('0x43')][_0x039f('0xdb')]){_0xe65df0=_0x4af516[_0x039f('0x43')][_0x039f('0xdb')];return db[_0x039f('0xa5')][_0x039f('0x58')]({'where':{'messageId':_0x4af516['query'][_0x039f('0xda')]}});}break;}}})['then'](handleEntityNotFound(_0x3ee39c,null))[_0x039f('0x34')](function(_0x4b3bb1){if(_0x4b3bb1){_0x3e9f18=_0x4b3bb1;switch(_0x5250b8[_0x039f('0x40')]){case _0x039f('0x89'):if(_0xe65df0==='2'||_0xe65df0==='6'){return _0x3e9f18['update']({'read':!![]});}else{logger[_0x039f('0x25')](_0x039f('0x24'),_0x039f('0x2a'),_0x039f('0x89'),util[_0x039f('0xd3')](_0x4af516[_0x039f('0x43')],{'showHidden':![],'depth':null}));};break;}return _0x3e9f18;}})[_0x039f('0x34')](respondWithResult(_0x3ee39c,null))[_0x039f('0x28')](handleError(_0x3ee39c,null));};exports[_0x039f('0xdc')]=function(_0x235ec7,_0x44c545,_0x65f2f9){return db[_0x039f('0x3d')]['find']({'where':{'id':_0x235ec7['params']['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x44c545,null))['then'](function(_0x2fbf6d){if(_0x2fbf6d){return _0x2fbf6d['addAgents'](_0x235ec7[_0x039f('0x5e')][_0x039f('0x69')],_[_0x039f('0x9b')](_0x235ec7[_0x039f('0x5e')],[_0x039f('0x69'),'id'])||{})[_0x039f('0xca')](function(_0x3c6e83){for(var _0xa31da3=0x0;_0xa31da3<_0x235ec7[_0x039f('0x5e')]['ids'][_0x039f('0x48')];_0xa31da3+=0x1){socket[_0x039f('0xdd')](_0x039f('0xde'),{'UserId':Number(_0x235ec7[_0x039f('0x5e')]['ids'][_0xa31da3]),'SmsAccountId':Number(_0x235ec7[_0x039f('0x60')]['id'])});}return _0x3c6e83;});}})['then'](respondWithResult(_0x44c545,null))['catch'](handleError(_0x44c545,null));};exports[_0x039f('0xdf')]=function(_0xea7b70,_0x27ccf2,_0x52a97a){return db['SmsAccount'][_0x039f('0x58')]({'where':{'id':_0xea7b70[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x27ccf2,null))['then'](function(_0x10d6fa){if(_0x10d6fa){return _0x10d6fa[_0x039f('0xdf')](_0xea7b70[_0x039f('0x43')]['ids'])[_0x039f('0x34')](function(){if(_[_0x039f('0xe0')](_0xea7b70[_0x039f('0x43')]['ids'])){for(var _0x16ab6e=0x0;_0x16ab6e<_0xea7b70[_0x039f('0x43')]['ids'][_0x039f('0x48')];_0x16ab6e+=0x1){socket[_0x039f('0xdd')]('userSmsAccount:remove',{'UserId':Number(_0xea7b70[_0x039f('0x43')][_0x039f('0x69')][_0x16ab6e]),'SmsAccountId':Number(_0xea7b70[_0x039f('0x60')]['id'])});}}else{socket[_0x039f('0xdd')](_0x039f('0xe1'),{'UserId':Number(_0xea7b70[_0x039f('0x43')]['ids']),'SmsAccountId':Number(_0xea7b70['params']['id'])});}});}})[_0x039f('0x34')](respondWithStatusCode(_0x27ccf2,null))[_0x039f('0x28')](handleError(_0x27ccf2,null));};exports['getAgents']=function(_0x879baf,_0x1cf4de,_0x3bfc04){var _0x228195={};var _0x35a74f={};var _0x2b9f90;var _0x5f5597;return db[_0x039f('0x3d')][_0x039f('0x66')]({'where':{'id':_0x879baf[_0x039f('0x60')]['id']}})[_0x039f('0x34')](handleEntityNotFound(_0x1cf4de,null))[_0x039f('0x34')](function(_0x55ebbe){if(_0x55ebbe){_0x2b9f90=_0x55ebbe;_0x35a74f[_0x039f('0x42')]=_[_0x039f('0x44')](db[_0x039f('0xa8')]['rawAttributes']);_0x35a74f[_0x039f('0x43')]=_[_0x039f('0x44')](_0x879baf[_0x039f('0x43')]);_0x35a74f[_0x039f('0x56')]=_['intersection'](_0x35a74f['model'],_0x35a74f[_0x039f('0x43')]);_0x228195['attributes']=_[_0x039f('0x45')](_0x35a74f[_0x039f('0x42')],qs[_0x039f('0x47')](_0x879baf[_0x039f('0x43')]['fields']));_0x228195[_0x039f('0x46')]=_0x228195[_0x039f('0x46')][_0x039f('0x48')]?_0x228195['attributes']:_0x35a74f['model'];_0x228195[_0x039f('0x4b')]=qs[_0x039f('0x4c')](_0x879baf['query'][_0x039f('0x4c')]);_0x228195[_0x039f('0x4d')]=qs[_0x039f('0x56')](_[_0x039f('0x67')](_0x879baf[_0x039f('0x43')],_0x35a74f['filters']));if(_0x879baf[_0x039f('0x43')][_0x039f('0x4e')]){_0x228195[_0x039f('0x4d')]=_[_0x039f('0x4f')](_0x228195['where'],{'$or':_[_0x039f('0x3c')](_0x228195[_0x039f('0x46')],function(_0x1acf8b){var _0x4420e3={};_0x4420e3[_0x1acf8b]={'$like':'%'+_0x879baf[_0x039f('0x43')][_0x039f('0x4e')]+'%'};return _0x4420e3;})});}_0x228195=_[_0x039f('0x4f')]({},_0x228195,_0x879baf[_0x039f('0x50')]);return _0x2b9f90[_0x039f('0xe2')](_0x228195);}})[_0x039f('0x34')](function(_0x29e856){if(_0x29e856){_0x5f5597=_0x29e856[_0x039f('0x48')];if(!_0x879baf[_0x039f('0x43')]['hasOwnProperty']('nolimit')){_0x228195[_0x039f('0x2c')]=qs[_0x039f('0x2c')](_0x879baf[_0x039f('0x43')][_0x039f('0x2c')]);_0x228195[_0x039f('0x2e')]=qs['offset'](_0x879baf[_0x039f('0x43')][_0x039f('0x2e')]);}return _0x2b9f90[_0x039f('0xe2')](_0x228195);}})[_0x039f('0x34')](function(_0x37113c){if(_0x37113c){return _0x37113c?{'count':_0x5f5597,'rows':_0x37113c}:null;}})[_0x039f('0x34')](respondWithResult(_0x1cf4de,null))['catch'](handleError(_0x1cf4de,null));};
\ No newline at end of file
index 2acaae2..50493cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e32=['SmsAccount','update','remove','emit','hasOwnProperty','events'];(function(_0x4792c8,_0x5158a1){var _0x35edb1=function(_0x2472d3){while(--_0x2472d3){_0x4792c8['push'](_0x4792c8['shift']());}};_0x35edb1(++_0x5158a1);}(_0x4e32,0x14f));var _0x24e3=function(_0x1d2309,_0x2dbfd1){_0x1d2309=_0x1d2309-0x0;var _0x1cfb02=_0x4e32[_0x1d2309];return _0x1cfb02;};'use strict';var EventEmitter=require(_0x24e3('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x24e3('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x24e3('0x2'),'afterDestroy':_0x24e3('0x3')};function emitEvent(_0x45de83){return function(_0x8dcc6e,_0xdbee3f,_0x26014b){SmsAccountEvents['emit'](_0x45de83+':'+_0x8dcc6e['id'],_0x8dcc6e);SmsAccountEvents[_0x24e3('0x4')](_0x45de83,_0x8dcc6e);_0x26014b(null);};}for(var e in events){if(events[_0x24e3('0x5')](e)){var event=events[e];SmsAccount['hook'](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0x1f07=['remove','emit','hasOwnProperty','hook','exports','events','SmsAccount','setMaxListeners','update'];(function(_0x22f8ab,_0x15d8ff){var _0x2a70e5=function(_0x5e6895){while(--_0x5e6895){_0x22f8ab['push'](_0x22f8ab['shift']());}};_0x2a70e5(++_0x15d8ff);}(_0x1f07,0x1a3));var _0x71f0=function(_0x7afe06,_0x4f48ca){_0x7afe06=_0x7afe06-0x0;var _0x4a528e=_0x1f07[_0x7afe06];return _0x4a528e;};'use strict';var EventEmitter=require(_0x71f0('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0x71f0('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x71f0('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x71f0('0x3'),'afterDestroy':_0x71f0('0x4')};function emitEvent(_0x1304be){return function(_0xddf64,_0x25d72c,_0x2d3311){SmsAccountEvents[_0x71f0('0x5')](_0x1304be+':'+_0xddf64['id'],_0xddf64);SmsAccountEvents['emit'](_0x1304be,_0xddf64);_0x2d3311(null);};}for(var e in events){if(events[_0x71f0('0x6')](e)){var event=events[e];SmsAccount[_0x71f0('0x7')](e,emitEvent(event));}}module[_0x71f0('0x8')]=SmsAccountEvents;
\ No newline at end of file
index 44a655b..bed6d16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5df=['request-promise','path','rimraf','../../config/environment','./smsAccount.attributes','define','SmsAccount','sms_accounts','../../config/logger','api'];(function(_0x1efaf0,_0x19ee59){var _0x26fe0b=function(_0x15f7d4){while(--_0x15f7d4){_0x1efaf0['push'](_0x1efaf0['shift']());}};_0x26fe0b(++_0x19ee59);}(_0xc5df,0x80));var _0xfc5d=function(_0x58e533,_0x2a0f75){_0x58e533=_0x58e533-0x0;var _0x27d3da=_0xc5df[_0x58e533];return _0x27d3da;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfc5d('0x0'))(_0xfc5d('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfc5d('0x2'));var fs=require('fs');var path=require(_0xfc5d('0x3'));var rimraf=require(_0xfc5d('0x4'));var config=require(_0xfc5d('0x5'));var attributes=require(_0xfc5d('0x6'));module['exports']=function(_0x1c8057,_0x2df24e){return _0x1c8057[_0xfc5d('0x7')](_0xfc5d('0x8'),attributes,{'tableName':_0xfc5d('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc911=['bluebird','request-promise','rimraf','../../config/environment','./smsAccount.attributes','exports','SmsAccount','sms_accounts','lodash','moment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xc911,0x1c0));var _0x1c91=function(_0x1bd728,_0x183045){_0x1bd728=_0x1bd728-0x0;var _0x62bb7=_0xc911[_0x1bd728];return _0x62bb7;};'use strict';var _=require(_0x1c91('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1c91('0x1'));var BPromise=require(_0x1c91('0x2'));var rp=require(_0x1c91('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1c91('0x4'));var config=require(_0x1c91('0x5'));var attributes=require(_0x1c91('0x6'));module[_0x1c91('0x7')]=function(_0x5261cc,_0x14d26f){return _0x5261cc['define'](_0x1c91('0x8'),attributes,{'tableName':_0x1c91('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 426f76b..06c3f44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5e8=['http','defaults','redis','./smsAccount.socket','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','ShowSmsAccount','SmsAccount','options','raw','where','attributes','include','map','model','debug','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x3f67c4,_0x4cd85c){var _0x2eb0dd=function(_0x13cd09){while(--_0x13cd09){_0x3f67c4['push'](_0x3f67c4['shift']());}};_0x2eb0dd(++_0x4cd85c);}(_0xd5e8,0xc7));var _0x8d5e=function(_0x17b186,_0x24e761){_0x17b186=_0x17b186-0x0;var _0x1864cc=_0xd5e8[_0x17b186];return _0x1864cc;};'use strict';var _=require(_0x8d5e('0x0'));var util=require('util');var moment=require(_0x8d5e('0x1'));var BPromise=require(_0x8d5e('0x2'));var rs=require(_0x8d5e('0x3'));var fs=require('fs');var Redis=require(_0x8d5e('0x4'));var db=require(_0x8d5e('0x5'))['db'];var utils=require(_0x8d5e('0x6'));var logger=require('../../config/logger')(_0x8d5e('0x7'));var config=require(_0x8d5e('0x8'));var jayson=require(_0x8d5e('0x9'));var client=jayson[_0x8d5e('0xa')][_0x8d5e('0xb')]({'port':0x232a});config['redis']=_[_0x8d5e('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8d5e('0xd')]));require(_0x8d5e('0xe'))['register'](socket);function respondWithRpcPromise(_0x1549b7,_0x20d6e7,_0x2601f0){return new BPromise(function(_0x5af3d4,_0x22ed0b){return client[_0x8d5e('0xf')](_0x1549b7,_0x2601f0)[_0x8d5e('0x10')](function(_0x147def){logger[_0x8d5e('0x11')](_0x8d5e('0x12'),_0x20d6e7,_0x8d5e('0x13'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x20d6e7,_0x8d5e('0x13'),JSON[_0x8d5e('0x14')](_0x147def));if(_0x147def[_0x8d5e('0x15')]){if(_0x147def['error'][_0x8d5e('0x16')]===0x1f4){logger[_0x8d5e('0x15')](_0x8d5e('0x12'),_0x20d6e7,_0x147def['error'][_0x8d5e('0x17')]);return _0x22ed0b(_0x147def[_0x8d5e('0x15')][_0x8d5e('0x17')]);}logger[_0x8d5e('0x15')](_0x8d5e('0x12'),_0x20d6e7,_0x147def[_0x8d5e('0x15')][_0x8d5e('0x17')]);return _0x5af3d4(_0x147def[_0x8d5e('0x15')]['message']);}else{logger[_0x8d5e('0x11')](_0x8d5e('0x12'),_0x20d6e7,'request\x20sent');_0x5af3d4(_0x147def[_0x8d5e('0x18')][_0x8d5e('0x17')]);}})['catch'](function(_0x2e2936){logger['error'](_0x8d5e('0x12'),_0x20d6e7,_0x2e2936);_0x22ed0b(_0x2e2936);});});}exports[_0x8d5e('0x19')]=function(_0x255b34){var _0x47bff2=this;return new Promise(function(_0x5cbd71,_0xc2e33e){return db[_0x8d5e('0x1a')]['find']({'raw':_0x255b34[_0x8d5e('0x1b')]?_0x255b34[_0x8d5e('0x1b')][_0x8d5e('0x1c')]===undefined?!![]:![]:!![],'where':_0x255b34[_0x8d5e('0x1b')]?_0x255b34[_0x8d5e('0x1b')][_0x8d5e('0x1d')]||null:null,'attributes':_0x255b34[_0x8d5e('0x1b')]?_0x255b34['options'][_0x8d5e('0x1e')]||null:null,'include':_0x255b34['options']?_0x255b34[_0x8d5e('0x1b')][_0x8d5e('0x1f')]?_[_0x8d5e('0x20')](_0x255b34[_0x8d5e('0x1b')]['include'],function(_0x25f1a5){return{'model':db[_0x25f1a5['model']],'as':_0x25f1a5['as'],'attributes':_0x25f1a5[_0x8d5e('0x1e')],'include':_0x25f1a5[_0x8d5e('0x1f')]?_[_0x8d5e('0x20')](_0x25f1a5['include'],function(_0x88481a){return{'model':db[_0x88481a[_0x8d5e('0x21')]],'as':_0x88481a['as'],'attributes':_0x88481a[_0x8d5e('0x1e')],'include':_0x88481a[_0x8d5e('0x1f')]?_[_0x8d5e('0x20')](_0x88481a['include'],function(_0x28c7b6){return{'model':db[_0x28c7b6[_0x8d5e('0x21')]],'as':_0x28c7b6['as'],'attributes':_0x28c7b6[_0x8d5e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x8d5e('0x10')](function(_0x46122a){logger['info'](_0x8d5e('0x19'),_0x255b34);logger[_0x8d5e('0x22')](_0x8d5e('0x19'),_0x255b34,JSON['stringify'](_0x46122a));_0x5cbd71(_0x46122a);})['catch'](function(_0x39ea2d){logger[_0x8d5e('0x15')](_0x8d5e('0x19'),_0x39ea2d['message'],_0x255b34);_0xc2e33e(_0x47bff2['error'](0x1f4,_0x39ea2d[_0x8d5e('0x17')]));});});};
\ No newline at end of file
+var _0xf3fe=['SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','ShowSmsAccount','find','raw','options','where','attributes','include','map','model','lodash','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','socket.io-emitter','./smsAccount.socket','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x408ea9,_0x2c9c27){var _0x3ac0f3=function(_0xa0b89c){while(--_0xa0b89c){_0x408ea9['push'](_0x408ea9['shift']());}};_0x3ac0f3(++_0x2c9c27);}(_0xf3fe,0xea));var _0xef3f=function(_0xf31cc9,_0x470886){_0xf31cc9=_0xf31cc9-0x0;var _0x381dc7=_0xf3fe[_0xf31cc9];return _0x381dc7;};'use strict';var _=require(_0xef3f('0x0'));var util=require('util');var moment=require(_0xef3f('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef3f('0x2'));var db=require(_0xef3f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xef3f('0x4'))(_0xef3f('0x5'));var config=require(_0xef3f('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xef3f('0x7'))(new Redis(config['redis']));require(_0xef3f('0x8'))['register'](socket);function respondWithRpcPromise(_0x46cd70,_0x3eb799,_0x37002c){return new BPromise(function(_0x154ef5,_0x3df0c4){return client[_0xef3f('0x9')](_0x46cd70,_0x37002c)[_0xef3f('0xa')](function(_0xf1c01c){logger['info'](_0xef3f('0xb'),_0x3eb799,_0xef3f('0xc'));logger[_0xef3f('0xd')](_0xef3f('0xe'),_0x3eb799,_0xef3f('0xc'),JSON[_0xef3f('0xf')](_0xf1c01c));if(_0xf1c01c[_0xef3f('0x10')]){if(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x11')]===0x1f4){logger[_0xef3f('0x10')]('SmsAccount,\x20%s,\x20%s',_0x3eb799,_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);return _0x3df0c4(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);}logger[_0xef3f('0x10')](_0xef3f('0xb'),_0x3eb799,_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);return _0x154ef5(_0xf1c01c[_0xef3f('0x10')][_0xef3f('0x12')]);}else{logger[_0xef3f('0x13')](_0xef3f('0xb'),_0x3eb799,_0xef3f('0xc'));_0x154ef5(_0xf1c01c[_0xef3f('0x14')][_0xef3f('0x12')]);}})[_0xef3f('0x15')](function(_0x27b931){logger[_0xef3f('0x10')](_0xef3f('0xb'),_0x3eb799,_0x27b931);_0x3df0c4(_0x27b931);});});}exports[_0xef3f('0x16')]=function(_0x59d98c){var _0x42a3c4=this;return new Promise(function(_0xcf461d,_0x30a125){return db['SmsAccount'][_0xef3f('0x17')]({'raw':_0x59d98c['options']?_0x59d98c['options'][_0xef3f('0x18')]===undefined?!![]:![]:!![],'where':_0x59d98c[_0xef3f('0x19')]?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1a')]||null:null,'attributes':_0x59d98c[_0xef3f('0x19')]?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1b')]||null:null,'include':_0x59d98c['options']?_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1c')]?_['map'](_0x59d98c[_0xef3f('0x19')][_0xef3f('0x1c')],function(_0x33a0db){return{'model':db[_0x33a0db['model']],'as':_0x33a0db['as'],'attributes':_0x33a0db[_0xef3f('0x1b')],'include':_0x33a0db['include']?_[_0xef3f('0x1d')](_0x33a0db[_0xef3f('0x1c')],function(_0x5114f6){return{'model':db[_0x5114f6[_0xef3f('0x1e')]],'as':_0x5114f6['as'],'attributes':_0x5114f6[_0xef3f('0x1b')],'include':_0x5114f6[_0xef3f('0x1c')]?_[_0xef3f('0x1d')](_0x5114f6[_0xef3f('0x1c')],function(_0x5efaee){return{'model':db[_0x5efaee['model']],'as':_0x5efaee['as'],'attributes':_0x5efaee[_0xef3f('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xef3f('0xa')](function(_0x39a956){logger[_0xef3f('0x13')](_0xef3f('0x16'),_0x59d98c);logger[_0xef3f('0xd')]('ShowSmsAccount',_0x59d98c,JSON[_0xef3f('0xf')](_0x39a956));_0xcf461d(_0x39a956);})['catch'](function(_0x14b3ff){logger[_0xef3f('0x10')]('ShowSmsAccount',_0x14b3ff['message'],_0x59d98c);_0x30a125(_0x42a3c4[_0xef3f('0x10')](0x1f4,_0x14b3ff[_0xef3f('0x12')]));});});};
\ No newline at end of file
index 4d9c277..7a14775 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x12d033,_0x25fa2f){_0x12d033=_0x12d033-0x0;var _0x3b4e80=_0xa9e0[_0x12d033];return _0x3b4e80;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
+var _0xa9e0=['register','length','smsAccount:','./smsAccount.events','save','remove','emit','removeListener'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x491a7f,_0x28bb80){_0x491a7f=_0x491a7f-0x0;var _0x3d8f44=_0xa9e0[_0x491a7f];return _0x3d8f44;};'use strict';var SmsAccountEvents=require(_0x0a9e('0x0'));var events=[_0x0a9e('0x1'),_0x0a9e('0x2'),'update'];function createListener(_0x550fbc,_0x18d5c9){return function(_0x4ce2f1){_0x18d5c9[_0x0a9e('0x3')](_0x550fbc,_0x4ce2f1);};}function removeListener(_0x432180,_0x2ab90b){return function(){SmsAccountEvents[_0x0a9e('0x4')](_0x432180,_0x2ab90b);};}exports[_0x0a9e('0x5')]=function(_0x57b080){for(var _0x219af0=0x0,_0x441e3a=events[_0x0a9e('0x6')];_0x219af0<_0x441e3a;_0x219af0++){var _0x5f41ea=events[_0x219af0];var _0x503809=createListener(_0x0a9e('0x7')+_0x5f41ea,_0x57b080);SmsAccountEvents['on'](_0x5f41ea,_0x503809);}};
\ No newline at end of file
index f2803b7..33e0638 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['../../config/environment','./smsApplication.controller','get','index','/:id','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x4a5c11,_0x204ec0){var _0x230f14=function(_0x49840b){while(--_0x49840b){_0x4a5c11['push'](_0x4a5c11['shift']());}};_0x230f14(++_0x204ec0);}(_0x34e8,0x12c));var _0x834e=function(_0x5d7280,_0x2b446a){_0x5d7280=_0x5d7280-0x0;var _0x200055=_0x34e8[_0x5d7280];return _0x200055;};'use strict';var multer=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var path=require(_0x834e('0x2'));var timeout=require(_0x834e('0x3'));var express=require('express');var router=express[_0x834e('0x4')]();var fs_extra=require(_0x834e('0x5'));var auth=require(_0x834e('0x6'));var interaction=require(_0x834e('0x7'));var config=require(_0x834e('0x8'));var controller=require(_0x834e('0x9'));router[_0x834e('0xa')]('/',auth['isAuthenticated'](),controller[_0x834e('0xb')]);router['get'](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0xe')]);router[_0x834e('0xf')]('/',auth[_0x834e('0xd')](),controller[_0x834e('0x10')]);router[_0x834e('0x11')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x12')]);router[_0x834e('0x13')](_0x834e('0xc'),auth[_0x834e('0xd')](),controller[_0x834e('0x14')]);module[_0x834e('0x15')]=router;
\ No newline at end of file
+var _0x7217=['Router','fs-extra','../../config/environment','./smsApplication.controller','get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','path','connect-timeout','express'];(function(_0xcb14ae,_0x4acd9f){var _0x12fed8=function(_0x424ab8){while(--_0x424ab8){_0xcb14ae['push'](_0xcb14ae['shift']());}};_0x12fed8(++_0x4acd9f);}(_0x7217,0x19e));var _0x7721=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0x7217[_0x4e1d03];return _0x362d4b;};'use strict';var multer=require(_0x7721('0x0'));var util=require('util');var path=require(_0x7721('0x1'));var timeout=require(_0x7721('0x2'));var express=require(_0x7721('0x3'));var router=express[_0x7721('0x4')]();var fs_extra=require(_0x7721('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7721('0x6'));var controller=require(_0x7721('0x7'));router[_0x7721('0x8')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xa')]);router[_0x7721('0x8')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0xc')]);router[_0x7721('0xd')]('/',auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller['update']);router[_0x7721('0x10')](_0x7721('0xb'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);module[_0x7721('0x12')]=router;
\ No newline at end of file
index 7bf3cd4..4030058 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fc5=['INTEGER','STRING','noop','*,*,*,*','sequelize','exports'];(function(_0x309b6a,_0xaba765){var _0x4f24b1=function(_0x14208b){while(--_0x14208b){_0x309b6a['push'](_0x309b6a['shift']());}};_0x4f24b1(++_0xaba765);}(_0x4fc5,0x100));var _0x54fc=function(_0x557fd2,_0x2c0a7a){_0x557fd2=_0x557fd2-0x0;var _0x1b54a2=_0x4fc5[_0x557fd2];return _0x1b54a2;};'use strict';var Sequelize=require(_0x54fc('0x0'));module[_0x54fc('0x1')]={'priority':{'type':Sequelize[_0x54fc('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x54fc('0x3')],'allowNull':![],'defaultValue':_0x54fc('0x4')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x54fc('0x3')],'defaultValue':_0x54fc('0x5')}};
\ No newline at end of file
+var _0x518f=['sequelize','STRING','TEXT','*,*,*,*'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x518f,0x78));var _0xf518=function(_0x5447aa,_0x3afc00){_0x5447aa=_0x5447aa-0x0;var _0xb21e53=_0x518f[_0x5447aa];return _0xb21e53;};'use strict';var Sequelize=require(_0xf518('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xf518('0x1')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xf518('0x2')]()},'description':{'type':Sequelize[_0xf518('0x1')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0xf518('0x3')}};
\ No newline at end of file
index 36d475c..5862540 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa85d=['filters','pick','filter','merge','VIRTUAL','options','include','SmsApplication','rows','catch','show','params','intersection','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','query','keys','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where'];(function(_0xef5c3d,_0x539f9b){var _0x1fa935=function(_0x28073c){while(--_0x28073c){_0xef5c3d['push'](_0xef5c3d['shift']());}};_0x1fa935(++_0x539f9b);}(_0xa85d,0xa8));var _0xda85=function(_0x5266e7,_0x97b16b){_0x5266e7=_0x5266e7-0x0;var _0x5470f1=_0xa85d[_0x5266e7];return _0x5470f1;};'use strict';var emlformat=require(_0xda85('0x0'));var rimraf=require(_0xda85('0x1'));var zipdir=require(_0xda85('0x2'));var jsonpatch=require(_0xda85('0x3'));var rp=require(_0xda85('0x4'));var moment=require('moment');var BPromise=require(_0xda85('0x5'));var Mustache=require(_0xda85('0x6'));var util=require(_0xda85('0x7'));var path=require(_0xda85('0x8'));var sox=require(_0xda85('0x9'));var csv=require('to-csv');var ejs=require(_0xda85('0xa'));var fs=require('fs');var fs_extra=require(_0xda85('0xb'));var _=require(_0xda85('0xc'));var squel=require('squel');var crypto=require(_0xda85('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xda85('0xe'));var toCsv=require(_0xda85('0xf'));var querystring=require(_0xda85('0x10'));var Papa=require(_0xda85('0x11'));var Redis=require(_0xda85('0x12'));var authService=require(_0xda85('0x13'));var qs=require(_0xda85('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xda85('0x15'));var logger=require(_0xda85('0x16'))('api');var utils=require(_0xda85('0x17'));var config=require(_0xda85('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xda85('0x19'))['db'];function respondWithStatusCode(_0x400878,_0x5259d2){_0x5259d2=_0x5259d2||0xcc;return function(_0x3ea0a7){if(_0x3ea0a7){return _0x400878['sendStatus'](_0x5259d2);}return _0x400878[_0xda85('0x1a')](_0x5259d2)['end']();};}function respondWithResult(_0x468a16,_0x313896){_0x313896=_0x313896||0xc8;return function(_0x277949){if(_0x277949){return _0x468a16[_0xda85('0x1a')](_0x313896)[_0xda85('0x1b')](_0x277949);}};}function respondWithFilteredResult(_0x4e9cad,_0x453c96){return function(_0x114c2d){if(_0x114c2d){var _0x257fe6=typeof _0x453c96[_0xda85('0x1c')]===_0xda85('0x1d')&&typeof _0x453c96['limit']===_0xda85('0x1d');var _0x47bb7f=_0x114c2d[_0xda85('0x1e')];var _0x5e1754=_0x257fe6?0x0:_0x453c96['offset'];var _0x1b5e1c=_0x257fe6?_0x114c2d[_0xda85('0x1e')]:_0x453c96[_0xda85('0x1c')]+_0x453c96[_0xda85('0x1f')];var _0x5be9dc;if(_0x1b5e1c>=_0x47bb7f){_0x1b5e1c=_0x47bb7f;_0x5be9dc=0xc8;}else{_0x5be9dc=0xce;}_0x4e9cad[_0xda85('0x1a')](_0x5be9dc);return _0x4e9cad[_0xda85('0x20')](_0xda85('0x21'),_0x5e1754+'-'+_0x1b5e1c+'/'+_0x47bb7f)[_0xda85('0x1b')](_0x114c2d);}return null;};}function patchUpdates(_0x278872){return function(_0x52a0d9){try{jsonpatch[_0xda85('0x22')](_0x52a0d9,_0x278872,!![]);}catch(_0xaea941){return BPromise[_0xda85('0x23')](_0xaea941);}return _0x52a0d9[_0xda85('0x24')]();};}function saveUpdates(_0x29c752,_0xd432f1){return function(_0xafe4d8){if(_0xafe4d8){return _0xafe4d8[_0xda85('0x25')](_0x29c752)[_0xda85('0x26')](function(_0x3f744f){return _0x3f744f;});}return null;};}function removeEntity(_0x4210de,_0xe35378){return function(_0x2b234c){if(_0x2b234c){return _0x2b234c[_0xda85('0x27')]()[_0xda85('0x26')](function(){_0x4210de[_0xda85('0x1a')](0xcc)[_0xda85('0x28')]();});}};}function handleEntityNotFound(_0x3fafd2,_0x13bd46){return function(_0x521439){if(!_0x521439){_0x3fafd2[_0xda85('0x29')](0x194);}return _0x521439;};}function handleError(_0x23b392,_0x52d7e7){_0x52d7e7=_0x52d7e7||0x1f4;return function(_0x248a84){logger[_0xda85('0x2a')](_0x248a84['stack']);if(_0x248a84[_0xda85('0x2b')]){delete _0x248a84[_0xda85('0x2b')];}_0x23b392['status'](_0x52d7e7)[_0xda85('0x2c')](_0x248a84);};}exports[_0xda85('0x2d')]=function(_0x28a186,_0xc0a56d){var _0x5dd7a2={},_0x5caff6={},_0x3791b9={'count':0x0,'rows':[]};var _0xdca159=_[_0xda85('0x2e')](db['SmsApplication'][_0xda85('0x2f')],function(_0x42fc05){return{'name':_0x42fc05[_0xda85('0x30')],'type':_0x42fc05[_0xda85('0x31')]['key']};});_0x5caff6['model']=_[_0xda85('0x2e')](_0xdca159,'name');_0x5caff6[_0xda85('0x32')]=_[_0xda85('0x33')](_0x28a186[_0xda85('0x32')]);_0x5caff6['filters']=_['intersection'](_0x5caff6[_0xda85('0x34')],_0x5caff6[_0xda85('0x32')]);_0x5dd7a2[_0xda85('0x35')]=_['intersection'](_0x5caff6[_0xda85('0x34')],qs['fields'](_0x28a186['query'][_0xda85('0x36')]));_0x5dd7a2[_0xda85('0x35')]=_0x5dd7a2[_0xda85('0x35')][_0xda85('0x37')]?_0x5dd7a2[_0xda85('0x35')]:_0x5caff6[_0xda85('0x34')];if(!_0x28a186[_0xda85('0x32')][_0xda85('0x38')](_0xda85('0x39'))){_0x5dd7a2[_0xda85('0x1f')]=qs[_0xda85('0x1f')](_0x28a186[_0xda85('0x32')][_0xda85('0x1f')]);_0x5dd7a2[_0xda85('0x1c')]=qs[_0xda85('0x1c')](_0x28a186[_0xda85('0x32')][_0xda85('0x1c')]);}_0x5dd7a2['order']=qs[_0xda85('0x3a')](_0x28a186[_0xda85('0x32')][_0xda85('0x3a')]);_0x5dd7a2[_0xda85('0x3b')]=qs[_0xda85('0x3c')](_[_0xda85('0x3d')](_0x28a186[_0xda85('0x32')],_0x5caff6[_0xda85('0x3c')]),_0xdca159);if(_0x28a186['query'][_0xda85('0x3e')]){_0x5dd7a2['where']=_[_0xda85('0x3f')](_0x5dd7a2[_0xda85('0x3b')],{'$or':_['map'](_0xdca159,function(_0x17e4aa){if(_0x17e4aa[_0xda85('0x31')]!==_0xda85('0x40')){var _0x58d295={};_0x58d295[_0x17e4aa[_0xda85('0x2b')]]={'$like':'%'+_0x28a186[_0xda85('0x32')][_0xda85('0x3e')]+'%'};return _0x58d295;}})});}_0x5dd7a2=_[_0xda85('0x3f')]({},_0x5dd7a2,_0x28a186[_0xda85('0x41')]);var _0x5d6b63={'where':_0x5dd7a2['where']};return db['SmsApplication'][_0xda85('0x1e')](_0x5d6b63)[_0xda85('0x26')](function(_0x422784){_0x3791b9['count']=_0x422784;if(_0x28a186[_0xda85('0x32')]['includeAll']){_0x5dd7a2[_0xda85('0x42')]=[{'all':!![]}];}return db[_0xda85('0x43')]['findAll'](_0x5dd7a2);})[_0xda85('0x26')](function(_0x2b0585){_0x3791b9[_0xda85('0x44')]=_0x2b0585;return _0x3791b9;})[_0xda85('0x26')](respondWithFilteredResult(_0xc0a56d,_0x5dd7a2))[_0xda85('0x45')](handleError(_0xc0a56d,null));};exports[_0xda85('0x46')]=function(_0x38484b,_0x22b756){var _0x1c6d03={'raw':!![],'where':{'id':_0x38484b[_0xda85('0x47')]['id']}},_0x4e495c={};_0x4e495c['model']=_[_0xda85('0x33')](db['SmsApplication'][_0xda85('0x2f')]);_0x4e495c[_0xda85('0x32')]=_['keys'](_0x38484b[_0xda85('0x32')]);_0x4e495c['filters']=_[_0xda85('0x48')](_0x4e495c[_0xda85('0x34')],_0x4e495c[_0xda85('0x32')]);_0x1c6d03[_0xda85('0x35')]=_[_0xda85('0x48')](_0x4e495c[_0xda85('0x34')],qs[_0xda85('0x36')](_0x38484b['query']['fields']));_0x1c6d03[_0xda85('0x35')]=_0x1c6d03[_0xda85('0x35')]['length']?_0x1c6d03[_0xda85('0x35')]:_0x4e495c[_0xda85('0x34')];if(_0x38484b[_0xda85('0x32')]['includeAll']){_0x1c6d03['include']=[{'all':!![]}];}_0x1c6d03=_[_0xda85('0x3f')]({},_0x1c6d03,_0x38484b[_0xda85('0x41')]);return db['SmsApplication'][_0xda85('0x49')](_0x1c6d03)[_0xda85('0x26')](handleEntityNotFound(_0x22b756,null))[_0xda85('0x26')](respondWithResult(_0x22b756,null))[_0xda85('0x45')](handleError(_0x22b756,null));};exports['create']=function(_0x195fe4,_0x242c03){return db[_0xda85('0x43')][_0xda85('0x4a')](_0x195fe4[_0xda85('0x4b')],{})['then'](respondWithResult(_0x242c03,0xc9))[_0xda85('0x45')](handleError(_0x242c03,null));};exports['update']=function(_0x3aabe1,_0x31eb57){if(_0x3aabe1[_0xda85('0x4b')]['id']){delete _0x3aabe1['body']['id'];}return db[_0xda85('0x43')]['find']({'where':{'id':_0x3aabe1[_0xda85('0x47')]['id']}})['then'](handleEntityNotFound(_0x31eb57,null))[_0xda85('0x26')](saveUpdates(_0x3aabe1['body'],null))[_0xda85('0x26')](respondWithResult(_0x31eb57,null))[_0xda85('0x45')](handleError(_0x31eb57,null));};exports[_0xda85('0x27')]=function(_0x1fa316,_0x4a0f7c){return db[_0xda85('0x43')][_0xda85('0x49')]({'where':{'id':_0x1fa316[_0xda85('0x47')]['id']}})['then'](handleEntityNotFound(_0x4a0f7c,null))[_0xda85('0x26')](removeEntity(_0x4a0f7c,null))[_0xda85('0x45')](handleError(_0x4a0f7c,null));};
\ No newline at end of file
+var _0xa7c0=['destroy','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','status','end','json','offset','undefined','count','limit','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','SmsApplication','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','show','params','options','find','catch','create','body'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xa7c0,0x1c9));var _0x0a7c=function(_0x40459f,_0x1813fd){_0x40459f=_0x40459f-0x0;var _0x2743ab=_0xa7c0[_0x40459f];return _0x2743ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a7c('0x0'));var zipdir=require(_0x0a7c('0x1'));var jsonpatch=require(_0x0a7c('0x2'));var rp=require(_0x0a7c('0x3'));var moment=require(_0x0a7c('0x4'));var BPromise=require(_0x0a7c('0x5'));var Mustache=require(_0x0a7c('0x6'));var util=require(_0x0a7c('0x7'));var path=require('path');var sox=require(_0x0a7c('0x8'));var csv=require(_0x0a7c('0x9'));var ejs=require(_0x0a7c('0xa'));var fs=require('fs');var fs_extra=require(_0x0a7c('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0a7c('0xc'));var jsforce=require(_0x0a7c('0xd'));var deskjs=require(_0x0a7c('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0a7c('0xf'));var Papa=require(_0x0a7c('0x10'));var Redis=require(_0x0a7c('0x11'));var authService=require(_0x0a7c('0x12'));var qs=require(_0x0a7c('0x13'));var as=require(_0x0a7c('0x14'));var hardwareService=require(_0x0a7c('0x15'));var logger=require(_0x0a7c('0x16'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0a7c('0x17'))['db'];function respondWithStatusCode(_0x1277c5,_0x5e909f){_0x5e909f=_0x5e909f||0xcc;return function(_0xd06c8b){if(_0xd06c8b){return _0x1277c5['sendStatus'](_0x5e909f);}return _0x1277c5[_0x0a7c('0x18')](_0x5e909f)[_0x0a7c('0x19')]();};}function respondWithResult(_0x28ee10,_0x5440e5){_0x5440e5=_0x5440e5||0xc8;return function(_0x563d42){if(_0x563d42){return _0x28ee10[_0x0a7c('0x18')](_0x5440e5)[_0x0a7c('0x1a')](_0x563d42);}};}function respondWithFilteredResult(_0x2788c1,_0x4e8224){return function(_0x550e71){if(_0x550e71){var _0xb8aabe=typeof _0x4e8224[_0x0a7c('0x1b')]===_0x0a7c('0x1c')&&typeof _0x4e8224['limit']===_0x0a7c('0x1c');var _0x5a5cc6=_0x550e71['count'];var _0x1e2b85=_0xb8aabe?0x0:_0x4e8224[_0x0a7c('0x1b')];var _0x2af81b=_0xb8aabe?_0x550e71[_0x0a7c('0x1d')]:_0x4e8224[_0x0a7c('0x1b')]+_0x4e8224[_0x0a7c('0x1e')];var _0x39dc07;if(_0x2af81b>=_0x5a5cc6){_0x2af81b=_0x5a5cc6;_0x39dc07=0xc8;}else{_0x39dc07=0xce;}_0x2788c1[_0x0a7c('0x18')](_0x39dc07);return _0x2788c1['set']('Content-Range',_0x1e2b85+'-'+_0x2af81b+'/'+_0x5a5cc6)[_0x0a7c('0x1a')](_0x550e71);}return null;};}function patchUpdates(_0x16d90b){return function(_0x12fda5){try{jsonpatch[_0x0a7c('0x1f')](_0x12fda5,_0x16d90b,!![]);}catch(_0x49bc92){return BPromise[_0x0a7c('0x20')](_0x49bc92);}return _0x12fda5[_0x0a7c('0x21')]();};}function saveUpdates(_0xe69334,_0xa07d00){return function(_0x40d2d8){if(_0x40d2d8){return _0x40d2d8[_0x0a7c('0x22')](_0xe69334)[_0x0a7c('0x23')](function(_0x2569af){return _0x2569af;});}return null;};}function removeEntity(_0x2e6f08,_0x13f93a){return function(_0x113379){if(_0x113379){return _0x113379['destroy']()[_0x0a7c('0x23')](function(){_0x2e6f08[_0x0a7c('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a5081,_0x30508a){return function(_0x59eab3){if(!_0x59eab3){_0x5a5081[_0x0a7c('0x24')](0x194);}return _0x59eab3;};}function handleError(_0x242feb,_0x36d239){_0x36d239=_0x36d239||0x1f4;return function(_0x233431){logger[_0x0a7c('0x25')](_0x233431[_0x0a7c('0x26')]);if(_0x233431['name']){delete _0x233431[_0x0a7c('0x27')];}_0x242feb[_0x0a7c('0x18')](_0x36d239)[_0x0a7c('0x28')](_0x233431);};}exports[_0x0a7c('0x29')]=function(_0x46d84c,_0x12ca9b){var _0xa363f2={},_0x130f8e={},_0x32c832={'count':0x0,'rows':[]};var _0x2b08cc=_[_0x0a7c('0x2a')](db[_0x0a7c('0x2b')][_0x0a7c('0x2c')],function(_0x4a0221){return{'name':_0x4a0221[_0x0a7c('0x2d')],'type':_0x4a0221['type'][_0x0a7c('0x2e')]};});_0x130f8e[_0x0a7c('0x2f')]=_[_0x0a7c('0x2a')](_0x2b08cc,'name');_0x130f8e[_0x0a7c('0x30')]=_[_0x0a7c('0x31')](_0x46d84c[_0x0a7c('0x30')]);_0x130f8e['filters']=_[_0x0a7c('0x32')](_0x130f8e['model'],_0x130f8e[_0x0a7c('0x30')]);_0xa363f2[_0x0a7c('0x33')]=_['intersection'](_0x130f8e[_0x0a7c('0x2f')],qs['fields'](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x34')]));_0xa363f2[_0x0a7c('0x33')]=_0xa363f2[_0x0a7c('0x33')][_0x0a7c('0x35')]?_0xa363f2['attributes']:_0x130f8e[_0x0a7c('0x2f')];if(!_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x36')](_0x0a7c('0x37'))){_0xa363f2[_0x0a7c('0x1e')]=qs[_0x0a7c('0x1e')](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x1e')]);_0xa363f2[_0x0a7c('0x1b')]=qs['offset'](_0x46d84c['query'][_0x0a7c('0x1b')]);}_0xa363f2[_0x0a7c('0x38')]=qs[_0x0a7c('0x39')](_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x39')]);_0xa363f2[_0x0a7c('0x3a')]=qs[_0x0a7c('0x3b')](_['pick'](_0x46d84c[_0x0a7c('0x30')],_0x130f8e['filters']),_0x2b08cc);if(_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x3c')]){_0xa363f2['where']=_[_0x0a7c('0x3d')](_0xa363f2[_0x0a7c('0x3a')],{'$or':_[_0x0a7c('0x2a')](_0x2b08cc,function(_0x59d201){if(_0x59d201[_0x0a7c('0x3e')]!==_0x0a7c('0x3f')){var _0x21c2d4={};_0x21c2d4[_0x59d201['name']]={'$like':'%'+_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x3c')]+'%'};return _0x21c2d4;}})});}_0xa363f2=_['merge']({},_0xa363f2,_0x46d84c['options']);var _0x1b70f6={'where':_0xa363f2[_0x0a7c('0x3a')]};return db['SmsApplication']['count'](_0x1b70f6)[_0x0a7c('0x23')](function(_0x1820c1){_0x32c832['count']=_0x1820c1;if(_0x46d84c[_0x0a7c('0x30')][_0x0a7c('0x40')]){_0xa363f2[_0x0a7c('0x41')]=[{'all':!![]}];}return db[_0x0a7c('0x2b')][_0x0a7c('0x42')](_0xa363f2);})[_0x0a7c('0x23')](function(_0x229fb4){_0x32c832[_0x0a7c('0x43')]=_0x229fb4;return _0x32c832;})[_0x0a7c('0x23')](respondWithFilteredResult(_0x12ca9b,_0xa363f2))['catch'](handleError(_0x12ca9b,null));};exports[_0x0a7c('0x44')]=function(_0x46e58d,_0x552ee5){var _0xf91a51={'raw':!![],'where':{'id':_0x46e58d[_0x0a7c('0x45')]['id']}},_0x2790e7={};_0x2790e7['model']=_[_0x0a7c('0x31')](db[_0x0a7c('0x2b')][_0x0a7c('0x2c')]);_0x2790e7[_0x0a7c('0x30')]=_['keys'](_0x46e58d['query']);_0x2790e7[_0x0a7c('0x3b')]=_[_0x0a7c('0x32')](_0x2790e7['model'],_0x2790e7[_0x0a7c('0x30')]);_0xf91a51[_0x0a7c('0x33')]=_['intersection'](_0x2790e7[_0x0a7c('0x2f')],qs[_0x0a7c('0x34')](_0x46e58d[_0x0a7c('0x30')][_0x0a7c('0x34')]));_0xf91a51[_0x0a7c('0x33')]=_0xf91a51[_0x0a7c('0x33')][_0x0a7c('0x35')]?_0xf91a51[_0x0a7c('0x33')]:_0x2790e7[_0x0a7c('0x2f')];if(_0x46e58d[_0x0a7c('0x30')][_0x0a7c('0x40')]){_0xf91a51[_0x0a7c('0x41')]=[{'all':!![]}];}_0xf91a51=_[_0x0a7c('0x3d')]({},_0xf91a51,_0x46e58d[_0x0a7c('0x46')]);return db['SmsApplication'][_0x0a7c('0x47')](_0xf91a51)[_0x0a7c('0x23')](handleEntityNotFound(_0x552ee5,null))[_0x0a7c('0x23')](respondWithResult(_0x552ee5,null))[_0x0a7c('0x48')](handleError(_0x552ee5,null));};exports[_0x0a7c('0x49')]=function(_0xbcaa6c,_0x4a7b2e){return db[_0x0a7c('0x2b')][_0x0a7c('0x49')](_0xbcaa6c[_0x0a7c('0x4a')],{})[_0x0a7c('0x23')](respondWithResult(_0x4a7b2e,0xc9))[_0x0a7c('0x48')](handleError(_0x4a7b2e,null));};exports[_0x0a7c('0x22')]=function(_0x52d888,_0xe08562){if(_0x52d888[_0x0a7c('0x4a')]['id']){delete _0x52d888[_0x0a7c('0x4a')]['id'];}return db[_0x0a7c('0x2b')][_0x0a7c('0x47')]({'where':{'id':_0x52d888[_0x0a7c('0x45')]['id']}})[_0x0a7c('0x23')](handleEntityNotFound(_0xe08562,null))['then'](saveUpdates(_0x52d888['body'],null))[_0x0a7c('0x23')](respondWithResult(_0xe08562,null))[_0x0a7c('0x48')](handleError(_0xe08562,null));};exports[_0x0a7c('0x4b')]=function(_0x3589cd,_0x286001){return db[_0x0a7c('0x2b')][_0x0a7c('0x47')]({'where':{'id':_0x3589cd[_0x0a7c('0x45')]['id']}})[_0x0a7c('0x23')](handleEntityNotFound(_0x286001,null))[_0x0a7c('0x23')](removeEntity(_0x286001,null))[_0x0a7c('0x48')](handleError(_0x286001,null));};
\ No newline at end of file
index 22e6833..6cda7e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bff=['SmsApplication','sms_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports','define'];(function(_0x11c221,_0x65c6a5){var _0x26deef=function(_0x2fa41a){while(--_0x2fa41a){_0x11c221['push'](_0x11c221['shift']());}};_0x26deef(++_0x65c6a5);}(_0x2bff,0x1b6));var _0xf2bf=function(_0x517667,_0x537ce1){_0x517667=_0x517667-0x0;var _0x5d0c88=_0x2bff[_0x517667];return _0x5d0c88;};'use strict';var _=require(_0xf2bf('0x0'));var util=require(_0xf2bf('0x1'));var logger=require('../../config/logger')(_0xf2bf('0x2'));var moment=require(_0xf2bf('0x3'));var BPromise=require(_0xf2bf('0x4'));var rp=require(_0xf2bf('0x5'));var fs=require('fs');var path=require(_0xf2bf('0x6'));var rimraf=require('rimraf');var config=require(_0xf2bf('0x7'));var attributes=require('./smsApplication.attributes');module[_0xf2bf('0x8')]=function(_0x37b398,_0x51cb1c){return _0x37b398[_0xf2bf('0x9')](_0xf2bf('0xa'),attributes,{'tableName':_0xf2bf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf2bf('0xc'),'collate':_0xf2bf('0xd')});};
\ No newline at end of file
+var _0x1e6c=['../../config/environment','./smsApplication.attributes','exports','define','SmsApplication','utf8mb4','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x178215,_0xdde951){var _0x18fe51=function(_0x1b9979){while(--_0x1b9979){_0x178215['push'](_0x178215['shift']());}};_0x18fe51(++_0xdde951);}(_0x1e6c,0x11a));var _0xc1e6=function(_0x50a1f6,_0x238fd8){_0x50a1f6=_0x50a1f6-0x0;var _0x84f8d4=_0x1e6c[_0x50a1f6];return _0x84f8d4;};'use strict';var _=require(_0xc1e6('0x0'));var util=require('util');var logger=require(_0xc1e6('0x1'))(_0xc1e6('0x2'));var moment=require(_0xc1e6('0x3'));var BPromise=require(_0xc1e6('0x4'));var rp=require(_0xc1e6('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xc1e6('0x6'));var attributes=require(_0xc1e6('0x7'));module[_0xc1e6('0x8')]=function(_0x157b8d,_0x36968b){return _0x157b8d[_0xc1e6('0x9')](_0xc1e6('0xa'),attributes,{'tableName':'sms_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc1e6('0xb'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index a4a3ca7..e735eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac41=['stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','SmsApplication,\x20%s,\x20%s,\x20%s'];(function(_0x478087,_0x109fb2){var _0x54bff1=function(_0x4589b3){while(--_0x4589b3){_0x478087['push'](_0x478087['shift']());}};_0x54bff1(++_0x109fb2);}(_0xac41,0xdd));var _0x1ac4=function(_0x1f8428,_0x2778d3){_0x1f8428=_0x1f8428-0x0;var _0x6e0f12=_0xac41[_0x1f8428];return _0x6e0f12;};'use strict';var _=require(_0x1ac4('0x0'));var util=require(_0x1ac4('0x1'));var moment=require(_0x1ac4('0x2'));var BPromise=require(_0x1ac4('0x3'));var rs=require(_0x1ac4('0x4'));var fs=require('fs');var Redis=require(_0x1ac4('0x5'));var db=require(_0x1ac4('0x6'))['db'];var utils=require(_0x1ac4('0x7'));var logger=require('../../config/logger')(_0x1ac4('0x8'));var config=require(_0x1ac4('0x9'));var jayson=require(_0x1ac4('0xa'));var client=jayson[_0x1ac4('0xb')][_0x1ac4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2ad173,_0x18703d,_0x1c9bed){return new BPromise(function(_0x1c7e79,_0x245861){return client[_0x1ac4('0xd')](_0x2ad173,_0x1c9bed)[_0x1ac4('0xe')](function(_0x454972){logger[_0x1ac4('0xf')](_0x1ac4('0x10'),_0x18703d,_0x1ac4('0x11'));logger['debug'](_0x1ac4('0x12'),_0x18703d,'request\x20sent',JSON[_0x1ac4('0x13')](_0x454972));if(_0x454972[_0x1ac4('0x14')]){if(_0x454972['error'][_0x1ac4('0x15')]===0x1f4){logger[_0x1ac4('0x14')]('SmsApplication,\x20%s,\x20%s',_0x18703d,_0x454972[_0x1ac4('0x14')]['message']);return _0x245861(_0x454972['error']['message']);}logger[_0x1ac4('0x14')](_0x1ac4('0x10'),_0x18703d,_0x454972[_0x1ac4('0x14')][_0x1ac4('0x16')]);return _0x1c7e79(_0x454972[_0x1ac4('0x14')][_0x1ac4('0x16')]);}else{logger['info']('SmsApplication,\x20%s,\x20%s',_0x18703d,_0x1ac4('0x11'));_0x1c7e79(_0x454972[_0x1ac4('0x17')][_0x1ac4('0x16')]);}})['catch'](function(_0x477db7){logger[_0x1ac4('0x14')](_0x1ac4('0x10'),_0x18703d,_0x477db7);_0x245861(_0x477db7);});});}
\ No newline at end of file
+var _0x3d2f=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','SmsApplication,\x20%s,\x20%s','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','error'];(function(_0x5192de,_0x4e91cd){var _0x4e287e=function(_0x3639bc){while(--_0x3639bc){_0x5192de['push'](_0x5192de['shift']());}};_0x4e287e(++_0x4e91cd);}(_0x3d2f,0x18f));var _0xf3d2=function(_0x279b90,_0x53c05b){_0x279b90=_0x279b90-0x0;var _0x415d4c=_0x3d2f[_0x279b90];return _0x415d4c;};'use strict';var _=require(_0xf3d2('0x0'));var util=require(_0xf3d2('0x1'));var moment=require('moment');var BPromise=require(_0xf3d2('0x2'));var rs=require(_0xf3d2('0x3'));var fs=require('fs');var Redis=require(_0xf3d2('0x4'));var db=require(_0xf3d2('0x5'))['db'];var utils=require(_0xf3d2('0x6'));var logger=require(_0xf3d2('0x7'))(_0xf3d2('0x8'));var config=require('../../config/environment');var jayson=require(_0xf3d2('0x9'));var client=jayson[_0xf3d2('0xa')][_0xf3d2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xf9a0c9,_0x23edba,_0x57f94b){return new BPromise(function(_0x26f330,_0x3f86f6){return client['request'](_0xf9a0c9,_0x57f94b)[_0xf3d2('0xc')](function(_0x4ef134){logger[_0xf3d2('0xd')](_0xf3d2('0xe'),_0x23edba,_0xf3d2('0xf'));logger[_0xf3d2('0x10')](_0xf3d2('0x11'),_0x23edba,_0xf3d2('0xf'),JSON['stringify'](_0x4ef134));if(_0x4ef134[_0xf3d2('0x12')]){if(_0x4ef134[_0xf3d2('0x12')]['code']===0x1f4){logger[_0xf3d2('0x12')]('SmsApplication,\x20%s,\x20%s',_0x23edba,_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);return _0x3f86f6(_0x4ef134[_0xf3d2('0x12')]['message']);}logger[_0xf3d2('0x12')](_0xf3d2('0xe'),_0x23edba,_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);return _0x26f330(_0x4ef134[_0xf3d2('0x12')][_0xf3d2('0x13')]);}else{logger['info'](_0xf3d2('0xe'),_0x23edba,_0xf3d2('0xf'));_0x26f330(_0x4ef134[_0xf3d2('0x14')][_0xf3d2('0x13')]);}})[_0xf3d2('0x15')](function(_0x3daaaf){logger[_0xf3d2('0x12')](_0xf3d2('0xe'),_0x23edba,_0x3daaaf);_0x3f86f6(_0x3daaaf);});});}
\ No newline at end of file
index 0135bfe..bf586f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c00=['smsinteraction:addtags','addTags','/:id','smsinteraction:update','update','delete','smsinteraction:destroy','destroy','removeTags','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','show','/:id/messages','getMessages','post','create','addMessage','/:id/tags','tracked','sms'];(function(_0x30ae5e,_0x391fc4){var _0x1f2e93=function(_0x60307d){while(--_0x60307d){_0x30ae5e['push'](_0x30ae5e['shift']());}};_0x1f2e93(++_0x391fc4);}(_0x5c00,0x17e));var _0x05c0=function(_0x1f2f61,_0x586f2f){_0x1f2f61=_0x1f2f61-0x0;var _0x10dabc=_0x5c00[_0x1f2f61];return _0x10dabc;};'use strict';var multer=require(_0x05c0('0x0'));var util=require(_0x05c0('0x1'));var path=require(_0x05c0('0x2'));var timeout=require('connect-timeout');var express=require(_0x05c0('0x3'));var router=express['Router']();var fs_extra=require(_0x05c0('0x4'));var auth=require(_0x05c0('0x5'));var interaction=require(_0x05c0('0x6'));var config=require(_0x05c0('0x7'));var controller=require('./smsInteraction.controller');router[_0x05c0('0x8')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0xa')]);router[_0x05c0('0x8')]('/describe',auth[_0x05c0('0x9')](),controller[_0x05c0('0xb')]);router[_0x05c0('0x8')]('/:id',auth[_0x05c0('0x9')](),controller[_0x05c0('0xc')]);router[_0x05c0('0x8')](_0x05c0('0xd'),auth[_0x05c0('0x9')](),controller[_0x05c0('0xe')]);router['get']('/:id/download',auth[_0x05c0('0x9')](),controller['download']);router[_0x05c0('0xf')]('/',auth[_0x05c0('0x9')](),controller[_0x05c0('0x10')]);router['post'](_0x05c0('0xd'),auth['isAuthenticated'](),controller[_0x05c0('0x11')]);router[_0x05c0('0xf')](_0x05c0('0x12'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x15')),controller[_0x05c0('0x16')]);router['put'](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction[_0x05c0('0x13')](_0x05c0('0x14'),_0x05c0('0x18')),controller[_0x05c0('0x19')]);router[_0x05c0('0x1a')](_0x05c0('0x17'),auth[_0x05c0('0x9')](),interaction['tracked'](_0x05c0('0x14'),_0x05c0('0x1b')),controller[_0x05c0('0x1c')]);router['delete'](_0x05c0('0x12'),auth[_0x05c0('0x9')](),controller[_0x05c0('0x1d')]);module[_0x05c0('0x1e')]=router;
\ No newline at end of file
+var _0x0abf=['create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','smsinteraction:update','update','smsinteraction:destroy','destroy','delete','removeTags','exports','multer','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','download','post'];(function(_0x2d7aa3,_0x4843bb){var _0x304219=function(_0x106cee){while(--_0x106cee){_0x2d7aa3['push'](_0x2d7aa3['shift']());}};_0x304219(++_0x4843bb);}(_0x0abf,0xe8));var _0xf0ab=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x0abf[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xf0ab('0x0'));var util=require('util');var path=require(_0xf0ab('0x1'));var timeout=require(_0xf0ab('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf0ab('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xf0ab('0x4'));var config=require(_0xf0ab('0x5'));var controller=require(_0xf0ab('0x6'));router[_0xf0ab('0x7')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x9')]);router[_0xf0ab('0x7')]('/describe',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xa')]);router[_0xf0ab('0x7')](_0xf0ab('0xb'),auth['isAuthenticated'](),controller[_0xf0ab('0xc')]);router[_0xf0ab('0x7')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller['getMessages']);router[_0xf0ab('0x7')]('/:id/download',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0xe')]);router[_0xf0ab('0xf')]('/',auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x10')]);router[_0xf0ab('0xf')](_0xf0ab('0xd'),auth['isAuthenticated'](),controller[_0xf0ab('0x11')]);router[_0xf0ab('0xf')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x15')),controller[_0xf0ab('0x16')]);router[_0xf0ab('0x17')](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x18')),controller[_0xf0ab('0x19')]);router['delete'](_0xf0ab('0xb'),auth[_0xf0ab('0x8')](),interaction[_0xf0ab('0x13')](_0xf0ab('0x14'),_0xf0ab('0x1a')),controller[_0xf0ab('0x1b')]);router[_0xf0ab('0x1c')](_0xf0ab('0x12'),auth[_0xf0ab('0x8')](),controller[_0xf0ab('0x1d')]);module[_0xf0ab('0x1e')]=router;
\ No newline at end of file
index f878b01..ae719a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0048=['STRING','ENUM','out','moment','exports','DATE'];(function(_0x1a9aa5,_0x4cc924){var _0xd29deb=function(_0x19045b){while(--_0x19045b){_0x1a9aa5['push'](_0x1a9aa5['shift']());}};_0xd29deb(++_0x4cc924);}(_0x0048,0x129));var _0x8004=function(_0x472ded,_0x7b9b67){_0x472ded=_0x472ded-0x0;var _0x4cdf81=_0x0048[_0x472ded];return _0x4cdf81;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x8004('0x0'));module[_0x8004('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8004('0x2')]},'disposition':{'type':Sequelize[_0x8004('0x3')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x8004('0x3')]},'note':{'type':Sequelize[_0x8004('0x3')]},'phone':{'type':Sequelize[_0x8004('0x3')]},'read1stAt':{'type':Sequelize[_0x8004('0x2')]},'firstMsgDirection':{'type':Sequelize['ENUM']('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8004('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x8004('0x4')]('in',_0x8004('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x46e1=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','moment','exports'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x46e1,0x155));var _0x146e=function(_0x2488cf,_0x17a3f6){_0x2488cf=_0x2488cf-0x0;var _0x590e6b=_0x46e1[_0x2488cf];return _0x590e6b;};'use strict';var Sequelize=require(_0x146e('0x0'));var moment=require(_0x146e('0x1'));module[_0x146e('0x2')]={'closed':{'type':Sequelize[_0x146e('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x146e('0x4')]},'disposition':{'type':Sequelize[_0x146e('0x5')]},'secondDisposition':{'type':Sequelize[_0x146e('0x5')]},'thirdDisposition':{'type':Sequelize[_0x146e('0x5')]},'note':{'type':Sequelize[_0x146e('0x5')]},'phone':{'type':Sequelize[_0x146e('0x5')]},'read1stAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x146e('0x6')]('in',_0x146e('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x146e('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x146e('0x6')]('in',_0x146e('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x146e('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 1d92e52..8ab0a1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6764=['register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','update','then','error','stack','index','SmsInteraction','rawAttributes','fieldName','type','key','getOptions','findAll','sms','user','catch','show','params','keys','query','filters','intersection','model','attributes','fields','length','includeAll','merge','options','find','create','body','destroy','describe','addMessage','SmsMessage','ids','findOne','hasOwnProperty','nolimit','order','sort','where','pick','SmsInteractionId','filter','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','omit','spread','Tag','name','emit','smsInteractionTags:save','removeTags','download','unix','join','server','files','tmp','transcript-%d-%s.zip','push','User','fullname','CmContact','firstName','lastName','Messages','direction','read','SmsAccount','Owner','mkdirSync','Sms','Account','N.A.','createdAt','toString','disposition','map','System','Contact','out','secret','renderFile','root','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsInteraction.socket'];(function(_0x44b8ba,_0x44d3ba){var _0x13e22b=function(_0x3d7b07){while(--_0x3d7b07){_0x44b8ba['push'](_0x44b8ba['shift']());}};_0x13e22b(++_0x44d3ba);}(_0x6764,0x1dc));var _0x4676=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0x6764[_0x1035c1];return _0x308d67;};'use strict';var rimraf=require(_0x4676('0x0'));var zipdir=require(_0x4676('0x1'));var moment=require(_0x4676('0x2'));var BPromise=require('bluebird');var util=require(_0x4676('0x3'));var path=require(_0x4676('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var Redis=require(_0x4676('0x5'));var interaction=require('../../components/interaction/service');var qs=require(_0x4676('0x6'));var pdf=require('../../components/export/pdf');var logger=require(_0x4676('0x7'))(_0x4676('0x8'));var config=require(_0x4676('0x9'));var db=require(_0x4676('0xa'))['db'];config[_0x4676('0xb')]=_[_0x4676('0xc')](config[_0x4676('0xb')],{'host':_0x4676('0xd'),'port':0x18eb});var socket=require(_0x4676('0xe'))(new Redis(config['redis']));require(_0x4676('0xf'))[_0x4676('0x10')](socket);function respondWithStatusCode(_0x163e34,_0x3edd3c){_0x3edd3c=_0x3edd3c||0xcc;return function(_0x54d7e3){if(_0x54d7e3){return _0x163e34[_0x4676('0x11')](_0x3edd3c);}return _0x163e34[_0x4676('0x12')](_0x3edd3c)[_0x4676('0x13')]();};}function respondWithResult(_0x121f1d,_0x49992b){_0x49992b=_0x49992b||0xc8;return function(_0x53cdaa){if(_0x53cdaa){return _0x121f1d[_0x4676('0x12')](_0x49992b)[_0x4676('0x14')](_0x53cdaa);}};}function respondWithFilteredResult(_0xd454af,_0x46d3cd){return function(_0x59e141){if(_0x59e141){var _0x574c2c=typeof _0x46d3cd[_0x4676('0x15')]===_0x4676('0x16')&&typeof _0x46d3cd[_0x4676('0x17')]==='undefined';var _0x5dc096=_0x59e141[_0x4676('0x18')];var _0x18faa7=_0x574c2c?0x0:_0x46d3cd[_0x4676('0x15')];var _0x2ad23d=_0x574c2c?_0x59e141[_0x4676('0x18')]:_0x46d3cd['offset']+_0x46d3cd['limit'];var _0x28c708;if(_0x2ad23d>=_0x5dc096){_0x2ad23d=_0x5dc096;_0x28c708=0xc8;}else{_0x28c708=0xce;}_0xd454af[_0x4676('0x12')](_0x28c708);return _0xd454af[_0x4676('0x19')](_0x4676('0x1a'),_0x18faa7+'-'+_0x2ad23d+'/'+_0x5dc096)['json'](_0x59e141);}return null;};}function saveUpdates(_0x558c65){return function(_0x184a16){if(_0x184a16){return _0x184a16[_0x4676('0x1b')](_0x558c65)[_0x4676('0x1c')](function(_0x41ddab){return _0x41ddab;});}return null;};}function removeEntity(_0x71ea65){return function(_0x141af2){if(_0x141af2){return _0x141af2['destroy']()[_0x4676('0x1c')](function(){_0x71ea65[_0x4676('0x12')](0xcc)[_0x4676('0x13')]();});}};}function handleEntityNotFound(_0xb2125){return function(_0x3e5d37){if(!_0x3e5d37){_0xb2125[_0x4676('0x11')](0x194);}return _0x3e5d37;};}function handleError(_0x2238bd,_0x82261b){_0x82261b=_0x82261b||0x1f4;return function(_0x22b158){logger[_0x4676('0x1d')](_0x22b158[_0x4676('0x1e')]);if(_0x22b158['name']){delete _0x22b158['name'];}_0x2238bd[_0x4676('0x12')](_0x82261b)['send'](_0x22b158);};}exports[_0x4676('0x1f')]=function(_0x46c28c,_0x33e106){var _0x7c2228={};var _0x8ebd4c=_['map'](db[_0x4676('0x20')][_0x4676('0x21')],function(_0x1ac6fd){return{'name':_0x1ac6fd[_0x4676('0x22')],'type':_0x1ac6fd[_0x4676('0x23')][_0x4676('0x24')]};});_0x7c2228=qs[_0x4676('0x25')](_0x8ebd4c,_0x46c28c);return interaction[_0x4676('0x26')](_0x4676('0x27'),_0x46c28c['query'],_0x46c28c[_0x4676('0x28')],_0x7c2228,_0x8ebd4c)[_0x4676('0x1c')](respondWithFilteredResult(_0x33e106,_0x7c2228))[_0x4676('0x29')](handleError(_0x33e106,null));};exports[_0x4676('0x2a')]=function(_0x32beea,_0x19a47c){var _0x3cf572={'raw':![],'where':{'id':_0x32beea[_0x4676('0x2b')]['id']}},_0x1f763f={};_0x1f763f['model']=_[_0x4676('0x2c')](db[_0x4676('0x20')][_0x4676('0x21')]);_0x1f763f[_0x4676('0x2d')]=_[_0x4676('0x2c')](_0x32beea[_0x4676('0x2d')]);_0x1f763f[_0x4676('0x2e')]=_[_0x4676('0x2f')](_0x1f763f[_0x4676('0x30')],_0x1f763f[_0x4676('0x2d')]);_0x3cf572[_0x4676('0x31')]=_[_0x4676('0x2f')](_0x1f763f[_0x4676('0x30')],qs[_0x4676('0x32')](_0x32beea['query'][_0x4676('0x32')]));_0x3cf572['attributes']=_0x3cf572[_0x4676('0x31')][_0x4676('0x33')]?_0x3cf572[_0x4676('0x31')]:_0x1f763f['model'];if(_0x32beea['query'][_0x4676('0x34')]){_0x3cf572['include']=[{'all':!![]}];}_0x3cf572=_[_0x4676('0x35')]({},_0x3cf572,_0x32beea[_0x4676('0x36')]);return db[_0x4676('0x20')][_0x4676('0x37')](_0x3cf572)[_0x4676('0x1c')](handleEntityNotFound(_0x19a47c,null))[_0x4676('0x1c')](respondWithResult(_0x19a47c,null))[_0x4676('0x29')](handleError(_0x19a47c,null));};exports[_0x4676('0x38')]=function(_0xcd9374,_0x87818c){return db[_0x4676('0x20')][_0x4676('0x38')](_0xcd9374[_0x4676('0x39')],{})[_0x4676('0x1c')](respondWithResult(_0x87818c,0xc9))[_0x4676('0x29')](handleError(_0x87818c,null));};exports[_0x4676('0x1b')]=function(_0x27e933,_0x6a4321){if(_0x27e933[_0x4676('0x39')]['id']){delete _0x27e933['body']['id'];}return db[_0x4676('0x20')]['find']({'where':{'id':_0x27e933[_0x4676('0x2b')]['id']}})['then'](handleEntityNotFound(_0x6a4321,null))[_0x4676('0x1c')](saveUpdates(_0x27e933[_0x4676('0x39')],null))[_0x4676('0x1c')](respondWithResult(_0x6a4321,null))[_0x4676('0x29')](handleError(_0x6a4321,null));};exports[_0x4676('0x3a')]=function(_0x1da375,_0x33312e){return db[_0x4676('0x20')][_0x4676('0x37')]({'where':{'id':_0x1da375[_0x4676('0x2b')]['id']}})[_0x4676('0x1c')](handleEntityNotFound(_0x33312e,null))[_0x4676('0x1c')](removeEntity(_0x33312e,null))[_0x4676('0x29')](handleError(_0x33312e,null));};exports[_0x4676('0x3b')]=function(_0x461d62,_0x30b109){return db[_0x4676('0x20')][_0x4676('0x3b')]()['then'](respondWithResult(_0x30b109,null))[_0x4676('0x29')](handleError(_0x30b109,null));};exports[_0x4676('0x3c')]=function(_0x35ad09,_0x500006){return db[_0x4676('0x3d')][_0x4676('0x37')]({'where':{'id':_0x35ad09['params']['id']}})[_0x4676('0x1c')](handleEntityNotFound(_0x500006,null))['then'](function(_0x1cafbb){if(_0x1cafbb){return _0x1cafbb[_0x4676('0x3c')](_0x35ad09['body'][_0x4676('0x3e')],_['omit'](_0x35ad09[_0x4676('0x39')],[_0x4676('0x3e'),'id'])||{});}})[_0x4676('0x1c')](respondWithResult(_0x500006,null))[_0x4676('0x29')](handleError(_0x500006,null));};exports['getMessages']=function(_0x11fec4,_0x208f3d){var _0x39383a={'raw':![],'where':{}};var _0x553b53={};var _0x51fcaa={'count':0x0,'rows':[]};return db['SmsInteraction'][_0x4676('0x3f')]({'where':{'id':_0x11fec4[_0x4676('0x2b')]['id']}})[_0x4676('0x1c')](handleEntityNotFound(_0x208f3d,null))[_0x4676('0x1c')](function(_0x520e78){if(_0x520e78){_0x553b53['model']=_[_0x4676('0x2c')](db['SmsMessage']['rawAttributes']);_0x553b53['query']=_[_0x4676('0x2c')](_0x11fec4[_0x4676('0x2d')]);_0x553b53[_0x4676('0x2e')]=_['intersection'](_0x553b53['model'],_0x553b53[_0x4676('0x2d')]);_0x39383a[_0x4676('0x31')]=_[_0x4676('0x2f')](_0x553b53[_0x4676('0x30')],qs[_0x4676('0x32')](_0x11fec4[_0x4676('0x2d')][_0x4676('0x32')]));_0x39383a[_0x4676('0x31')]=_0x39383a[_0x4676('0x31')][_0x4676('0x33')]?_0x39383a[_0x4676('0x31')]:_0x553b53[_0x4676('0x30')];if(!_0x11fec4[_0x4676('0x2d')][_0x4676('0x40')](_0x4676('0x41'))){_0x39383a[_0x4676('0x17')]=qs[_0x4676('0x17')](_0x11fec4[_0x4676('0x2d')][_0x4676('0x17')]);_0x39383a[_0x4676('0x15')]=qs[_0x4676('0x15')](_0x11fec4[_0x4676('0x2d')][_0x4676('0x15')]);}_0x39383a[_0x4676('0x42')]=qs[_0x4676('0x43')](_0x11fec4[_0x4676('0x2d')]['sort']);_0x39383a[_0x4676('0x44')]=qs[_0x4676('0x2e')](_[_0x4676('0x45')](_0x11fec4[_0x4676('0x2d')],_0x553b53['filters']));_0x39383a[_0x4676('0x44')][_0x4676('0x46')]=_0x520e78['id'];if(_0x11fec4[_0x4676('0x2d')][_0x4676('0x47')]){_0x39383a['where']=_[_0x4676('0x35')](_0x39383a[_0x4676('0x44')],{'$or':_['map'](_0x39383a[_0x4676('0x31')],function(_0x589d53){var _0x5ed1e4={};_0x5ed1e4[_0x589d53]={'$like':'%'+_0x11fec4['query']['filter']+'%'};return _0x5ed1e4;})});}if(_0x11fec4['query'][_0x4676('0x48')]){var _0x1562f7=_0x11fec4[_0x4676('0x2d')]['$gte']['split'](',');var _0x360d5f={};_0x360d5f[_0x1562f7[0x0]]={'$gte':moment(_0x1562f7[0x1])[_0x4676('0x49')](_0x4676('0x4a'))};_0x39383a[_0x4676('0x44')]=_[_0x4676('0x35')](_0x39383a['where'],_0x360d5f);}_0x39383a=_[_0x4676('0x35')]({},_0x39383a,_0x11fec4['options']);return db['SmsMessage'][_0x4676('0x18')]({'where':_0x39383a[_0x4676('0x44')]})[_0x4676('0x1c')](function(_0x50ffb3){_0x51fcaa[_0x4676('0x18')]=_0x50ffb3;if(_0x11fec4['query'][_0x4676('0x34')]){_0x39383a['include']=[{'all':!![]}];}return db['SmsMessage'][_0x4676('0x26')](_0x39383a);})[_0x4676('0x1c')](function(_0x5f492d){_0x51fcaa[_0x4676('0x4b')]=_0x5f492d;return _0x51fcaa;});}})[_0x4676('0x1c')](respondWithFilteredResult(_0x208f3d,_0x39383a))[_0x4676('0x29')](handleError(_0x208f3d,null));};exports[_0x4676('0x4c')]=function(_0x1573d9,_0x515b1f){return db[_0x4676('0x20')][_0x4676('0x37')]({'where':{'id':_0x1573d9[_0x4676('0x2b')]['id']}})[_0x4676('0x1c')](handleEntityNotFound(_0x515b1f,null))['then'](function(_0x2db6f0){if(_0x2db6f0){return _0x2db6f0['setTags'](_0x1573d9[_0x4676('0x39')][_0x4676('0x3e')],_[_0x4676('0x4d')](_0x1573d9[_0x4676('0x39')],[_0x4676('0x3e'),'id'])||{})[_0x4676('0x4e')](function(){return db[_0x4676('0x4f')][_0x4676('0x26')]({'attributes':['id',_0x4676('0x50'),'color'],'where':{'id':_0x1573d9[_0x4676('0x39')]['ids']}});})[_0x4676('0x1c')](function(_0x4365dd){socket[_0x4676('0x51')](_0x4676('0x52'),{'id':Number(_0x1573d9[_0x4676('0x2b')]['id']),'tags':_0x4365dd||[]});return{'id':Number(_0x1573d9[_0x4676('0x2b')]['id']),'tags':_0x4365dd||[]};});}})[_0x4676('0x1c')](respondWithResult(_0x515b1f,null))[_0x4676('0x29')](handleError(_0x515b1f,null));};exports[_0x4676('0x53')]=function(_0xf59d9,_0x50cbfd){return db[_0x4676('0x20')][_0x4676('0x37')]({'where':{'id':_0xf59d9[_0x4676('0x2b')]['id']}})[_0x4676('0x1c')](handleEntityNotFound(_0x50cbfd,null))[_0x4676('0x1c')](function(_0x59f49f){if(_0x59f49f){return _0x59f49f['removeTags'](_0xf59d9[_0x4676('0x2d')]['ids']);}})['then'](respondWithStatusCode(_0x50cbfd,null))[_0x4676('0x29')](handleError(_0x50cbfd,null));};exports[_0x4676('0x54')]=function(_0x4ae3b4,_0x33d108){var _0xb7176b=moment()[_0x4676('0x55')]()['toString']();var _0x3051d0=path[_0x4676('0x56')](config['root'],_0x4676('0x57'),_0x4676('0x58'),_0x4676('0x59'));var _0x21fb8=path[_0x4676('0x56')](_0x3051d0,_0xb7176b);var _0x180f6c=util[_0x4676('0x49')](_0x4676('0x5a'),_0x4ae3b4[_0x4676('0x2b')]['id'],_0xb7176b);var _0x10abe6=path[_0x4676('0x56')](_0x3051d0,_0x180f6c);var _0x4564cf=[];_0x4564cf[_0x4676('0x5b')]({'model':db[_0x4676('0x5c')],'as':_0x4676('0x5c'),'attributes':['id',_0x4676('0x5d')],'raw':!![]});_0x4564cf[_0x4676('0x5b')]({'model':db[_0x4676('0x5e')],'as':'Contact','attributes':['id',_0x4676('0x5f'),_0x4676('0x60')],'raw':!![]});var _0x4f91e4=[{'model':db[_0x4676('0x3d')],'as':_0x4676('0x61'),'attributes':['id',_0x4676('0x39'),'createdAt',_0x4676('0x62'),'secret',_0x4676('0x63')],'include':_0x4564cf}];_0x4f91e4[_0x4676('0x5b')]({'model':db[_0x4676('0x64')],'as':'Account','attributes':['id',_0x4676('0x50')]});_0x4f91e4['push']({'model':db['User'],'as':_0x4676('0x65'),'attributes':['id',_0x4676('0x5d')]});return db[_0x4676('0x20')][_0x4676('0x37')]({'where':{'id':_0x4ae3b4[_0x4676('0x2b')]['id']},'include':_0x4f91e4})['then'](handleEntityNotFound(_0x33d108,null))['then'](function(_0x3a4f56){if(_0x3a4f56){var _0x2ffce6=_0x3a4f56['get']({'plain':!![]});fs[_0x4676('0x66')](_0x21fb8);var _0x5a1fc3={'channel':_0x4676('0x67'),'account':_0x2ffce6[_0x4676('0x68')]['name'],'agent':_0x2ffce6['Owner']?_0x2ffce6[_0x4676('0x65')][_0x4676('0x5d')]:_0x4676('0x69'),'createdAt':moment(_0x2ffce6[_0x4676('0x6a')])[_0x4676('0x49')](_0x4676('0x4a'))[_0x4676('0x6b')](),'closedAt':_0x2ffce6['closed']?moment(_0x2ffce6['closedAt'])['format'](_0x4676('0x4a'))['toString']():'','disposition':_0x2ffce6[_0x4676('0x6c')],'messages':_(_0x2ffce6[_0x4676('0x61')])[_0x4676('0x47')]({'secret':![]})[_0x4676('0x6d')](function(_0x6f1bd2){return{'date':moment(_0x6f1bd2[_0x4676('0x6a')])[_0x4676('0x49')]('YYYY-MM-DD\x20HH:mm:ss')[_0x4676('0x6b')](),'sender':_0x6f1bd2[_0x4676('0x62')]==='out'?_0x6f1bd2[_0x4676('0x5c')]?_0x6f1bd2[_0x4676('0x5c')][_0x4676('0x5d')]:_0x4676('0x6e'):_0x6f1bd2['Contact'][_0x4676('0x5f')]+(_0x6f1bd2['Contact'][_0x4676('0x60')]?'\x20'+_0x6f1bd2[_0x4676('0x6f')]['lastName']:''),'body':_0x6f1bd2[_0x4676('0x39')],'direction':_0x6f1bd2[_0x4676('0x62')]===_0x4676('0x70')?'A':'C','secret':_0x6f1bd2[_0x4676('0x71')],'read':_0x6f1bd2[_0x4676('0x63')]};})['value']()};return ejs[_0x4676('0x72')](path[_0x4676('0x56')](config[_0x4676('0x73')],_0x4676('0x57'),'views',_0x4676('0x74')),{'interaction':_0x5a1fc3})['then'](function(_0x2dcaec){var _0x1f0a73=path[_0x4676('0x56')](_0x21fb8,_0x4676('0x75')+_0x2ffce6['id']+'-'+_0xb7176b+_0x4676('0x76'));var _0x400749={'path':_0x1f0a73,'channel':_0x4676('0x67'),'interactionId':_0x2ffce6['id']};return pdf[_0x4676('0x77')](_0x2dcaec,_0x400749);})[_0x4676('0x1c')](function(){return new BPromise(function(_0x3e5a22,_0x15a9d4){zipdir(_0x21fb8,{'saveTo':_0x10abe6},function(_0x59f69f,_0x5f1f86){if(_0x59f69f)return _0x15a9d4(_0x59f69f);return _0x3e5a22(_0x5f1f86);});})['then'](function(){return new BPromise(function(_0x3b1937,_0x15dc3f){rimraf(_0x21fb8,function(_0x20d42a){if(_0x20d42a)_0x15dc3f(_0x20d42a);return _0x3b1937();});});})[_0x4676('0x1c')](function(){return _0x33d108[_0x4676('0x54')](_0x10abe6,_0x180f6c,function(_0x34e7e8){if(_0x34e7e8){console[_0x4676('0x78')](_0x4676('0x79'),_0x34e7e8);}else{fs[_0x4676('0x7a')](_0x10abe6);}});});});}else{return _0x33d108[_0x4676('0x11')](0xc8);}})[_0x4676('0x29')](handleError(_0x33d108,null));};
\ No newline at end of file
+var _0x0c55=['value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','rimraf','bluebird','util','path','lodash','../../components/export/pdf','../../config/logger','api','../../config/environment','defaults','redis','localhost','socket.io-emitter','./smsInteraction.socket','sendStatus','end','undefined','limit','count','offset','status','set','json','update','then','destroy','error','stack','name','index','map','SmsInteraction','key','getOptions','findAll','sms','query','catch','show','model','keys','rawAttributes','attributes','intersection','fields','includeAll','include','merge','options','create','body','find','params','describe','addMessage','SmsMessage','omit','ids','findOne','filters','hasOwnProperty','order','sort','where','SmsInteractionId','$gte','split','rows','setTags','spread','color','emit','removeTags','download','unix','toString','join','root','server','tmp','format','push','fullname','CmContact','Contact','firstName','lastName','createdAt','direction','read','SmsAccount','Account','User','Owner','get','mkdirSync','Sms','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt','disposition','Messages','filter','out','System'];(function(_0x22a645,_0x3faf40){var _0x33db9d=function(_0x29c879){while(--_0x29c879){_0x22a645['push'](_0x22a645['shift']());}};_0x33db9d(++_0x3faf40);}(_0x0c55,0x1d1));var _0x50c5=function(_0x367754,_0x436ae4){_0x367754=_0x367754-0x0;var _0x403541=_0x0c55[_0x367754];return _0x403541;};'use strict';var rimraf=require(_0x50c5('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x50c5('0x1'));var util=require(_0x50c5('0x2'));var path=require(_0x50c5('0x3'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x50c5('0x4'));var Redis=require('ioredis');var interaction=require('../../components/interaction/service');var qs=require('../../components/parsers/qs');var pdf=require(_0x50c5('0x5'));var logger=require(_0x50c5('0x6'))(_0x50c5('0x7'));var config=require(_0x50c5('0x8'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x50c5('0x9')](config[_0x50c5('0xa')],{'host':_0x50c5('0xb'),'port':0x18eb});var socket=require(_0x50c5('0xc'))(new Redis(config[_0x50c5('0xa')]));require(_0x50c5('0xd'))['register'](socket);function respondWithStatusCode(_0x1eef4f,_0x266432){_0x266432=_0x266432||0xcc;return function(_0x44e244){if(_0x44e244){return _0x1eef4f[_0x50c5('0xe')](_0x266432);}return _0x1eef4f['status'](_0x266432)[_0x50c5('0xf')]();};}function respondWithResult(_0x94beb0,_0x490578){_0x490578=_0x490578||0xc8;return function(_0xaef040){if(_0xaef040){return _0x94beb0['status'](_0x490578)['json'](_0xaef040);}};}function respondWithFilteredResult(_0x48f342,_0x1b6665){return function(_0x2b4a69){if(_0x2b4a69){var _0x3fca65=typeof _0x1b6665['offset']===_0x50c5('0x10')&&typeof _0x1b6665[_0x50c5('0x11')]===_0x50c5('0x10');var _0x4dc3b0=_0x2b4a69[_0x50c5('0x12')];var _0x46c928=_0x3fca65?0x0:_0x1b6665[_0x50c5('0x13')];var _0xb27e44=_0x3fca65?_0x2b4a69['count']:_0x1b6665['offset']+_0x1b6665['limit'];var _0x147b53;if(_0xb27e44>=_0x4dc3b0){_0xb27e44=_0x4dc3b0;_0x147b53=0xc8;}else{_0x147b53=0xce;}_0x48f342[_0x50c5('0x14')](_0x147b53);return _0x48f342[_0x50c5('0x15')]('Content-Range',_0x46c928+'-'+_0xb27e44+'/'+_0x4dc3b0)[_0x50c5('0x16')](_0x2b4a69);}return null;};}function saveUpdates(_0x33e0ff){return function(_0x14eaf3){if(_0x14eaf3){return _0x14eaf3[_0x50c5('0x17')](_0x33e0ff)[_0x50c5('0x18')](function(_0x3d2cdc){return _0x3d2cdc;});}return null;};}function removeEntity(_0xb89044){return function(_0x5da4ca){if(_0x5da4ca){return _0x5da4ca[_0x50c5('0x19')]()[_0x50c5('0x18')](function(){_0xb89044[_0x50c5('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3638ee){return function(_0x284a2a){if(!_0x284a2a){_0x3638ee[_0x50c5('0xe')](0x194);}return _0x284a2a;};}function handleError(_0x94af0a,_0x3b9e68){_0x3b9e68=_0x3b9e68||0x1f4;return function(_0xbefbde){logger[_0x50c5('0x1a')](_0xbefbde[_0x50c5('0x1b')]);if(_0xbefbde[_0x50c5('0x1c')]){delete _0xbefbde[_0x50c5('0x1c')];}_0x94af0a[_0x50c5('0x14')](_0x3b9e68)['send'](_0xbefbde);};}exports[_0x50c5('0x1d')]=function(_0x37c02c,_0x44b941){var _0x587155={};var _0x150bf9=_[_0x50c5('0x1e')](db[_0x50c5('0x1f')]['rawAttributes'],function(_0x5e3493){return{'name':_0x5e3493['fieldName'],'type':_0x5e3493['type'][_0x50c5('0x20')]};});_0x587155=qs[_0x50c5('0x21')](_0x150bf9,_0x37c02c);return interaction[_0x50c5('0x22')](_0x50c5('0x23'),_0x37c02c[_0x50c5('0x24')],_0x37c02c['user'],_0x587155,_0x150bf9)[_0x50c5('0x18')](respondWithFilteredResult(_0x44b941,_0x587155))[_0x50c5('0x25')](handleError(_0x44b941,null));};exports[_0x50c5('0x26')]=function(_0x2e6a01,_0x4cd185){var _0x4cbac2={'raw':![],'where':{'id':_0x2e6a01['params']['id']}},_0x4fd184={};_0x4fd184[_0x50c5('0x27')]=_[_0x50c5('0x28')](db['SmsInteraction'][_0x50c5('0x29')]);_0x4fd184[_0x50c5('0x24')]=_[_0x50c5('0x28')](_0x2e6a01[_0x50c5('0x24')]);_0x4fd184['filters']=_['intersection'](_0x4fd184['model'],_0x4fd184[_0x50c5('0x24')]);_0x4cbac2[_0x50c5('0x2a')]=_[_0x50c5('0x2b')](_0x4fd184[_0x50c5('0x27')],qs[_0x50c5('0x2c')](_0x2e6a01[_0x50c5('0x24')][_0x50c5('0x2c')]));_0x4cbac2['attributes']=_0x4cbac2[_0x50c5('0x2a')]['length']?_0x4cbac2[_0x50c5('0x2a')]:_0x4fd184[_0x50c5('0x27')];if(_0x2e6a01[_0x50c5('0x24')][_0x50c5('0x2d')]){_0x4cbac2[_0x50c5('0x2e')]=[{'all':!![]}];}_0x4cbac2=_[_0x50c5('0x2f')]({},_0x4cbac2,_0x2e6a01[_0x50c5('0x30')]);return db[_0x50c5('0x1f')]['find'](_0x4cbac2)['then'](handleEntityNotFound(_0x4cd185,null))['then'](respondWithResult(_0x4cd185,null))['catch'](handleError(_0x4cd185,null));};exports['create']=function(_0x1fdcfe,_0x6f3701){return db[_0x50c5('0x1f')][_0x50c5('0x31')](_0x1fdcfe['body'],{})[_0x50c5('0x18')](respondWithResult(_0x6f3701,0xc9))['catch'](handleError(_0x6f3701,null));};exports[_0x50c5('0x17')]=function(_0x45200b,_0x32f740){if(_0x45200b[_0x50c5('0x32')]['id']){delete _0x45200b[_0x50c5('0x32')]['id'];}return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x45200b[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x32f740,null))[_0x50c5('0x18')](saveUpdates(_0x45200b[_0x50c5('0x32')],null))['then'](respondWithResult(_0x32f740,null))['catch'](handleError(_0x32f740,null));};exports['destroy']=function(_0x5f5291,_0x1b7f0a){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x5f5291[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x1b7f0a,null))['then'](removeEntity(_0x1b7f0a,null))['catch'](handleError(_0x1b7f0a,null));};exports[_0x50c5('0x35')]=function(_0x214aa2,_0x310d47){return db[_0x50c5('0x1f')][_0x50c5('0x35')]()[_0x50c5('0x18')](respondWithResult(_0x310d47,null))[_0x50c5('0x25')](handleError(_0x310d47,null));};exports[_0x50c5('0x36')]=function(_0x4a4974,_0x64deef){return db[_0x50c5('0x37')][_0x50c5('0x33')]({'where':{'id':_0x4a4974[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x64deef,null))[_0x50c5('0x18')](function(_0x1b4dc8){if(_0x1b4dc8){return _0x1b4dc8[_0x50c5('0x36')](_0x4a4974[_0x50c5('0x32')]['ids'],_[_0x50c5('0x38')](_0x4a4974[_0x50c5('0x32')],[_0x50c5('0x39'),'id'])||{});}})[_0x50c5('0x18')](respondWithResult(_0x64deef,null))[_0x50c5('0x25')](handleError(_0x64deef,null));};exports['getMessages']=function(_0x4c5007,_0x35efac){var _0x16be22={'raw':![],'where':{}};var _0x5cb8bb={};var _0x497094={'count':0x0,'rows':[]};return db[_0x50c5('0x1f')][_0x50c5('0x3a')]({'where':{'id':_0x4c5007['params']['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x35efac,null))[_0x50c5('0x18')](function(_0x4f3ff3){if(_0x4f3ff3){_0x5cb8bb[_0x50c5('0x27')]=_[_0x50c5('0x28')](db['SmsMessage'][_0x50c5('0x29')]);_0x5cb8bb[_0x50c5('0x24')]=_['keys'](_0x4c5007[_0x50c5('0x24')]);_0x5cb8bb[_0x50c5('0x3b')]=_[_0x50c5('0x2b')](_0x5cb8bb['model'],_0x5cb8bb[_0x50c5('0x24')]);_0x16be22[_0x50c5('0x2a')]=_[_0x50c5('0x2b')](_0x5cb8bb[_0x50c5('0x27')],qs[_0x50c5('0x2c')](_0x4c5007[_0x50c5('0x24')]['fields']));_0x16be22[_0x50c5('0x2a')]=_0x16be22[_0x50c5('0x2a')]['length']?_0x16be22[_0x50c5('0x2a')]:_0x5cb8bb[_0x50c5('0x27')];if(!_0x4c5007[_0x50c5('0x24')][_0x50c5('0x3c')]('nolimit')){_0x16be22[_0x50c5('0x11')]=qs['limit'](_0x4c5007['query'][_0x50c5('0x11')]);_0x16be22['offset']=qs['offset'](_0x4c5007['query'][_0x50c5('0x13')]);}_0x16be22[_0x50c5('0x3d')]=qs['sort'](_0x4c5007[_0x50c5('0x24')][_0x50c5('0x3e')]);_0x16be22[_0x50c5('0x3f')]=qs['filters'](_['pick'](_0x4c5007[_0x50c5('0x24')],_0x5cb8bb[_0x50c5('0x3b')]));_0x16be22[_0x50c5('0x3f')][_0x50c5('0x40')]=_0x4f3ff3['id'];if(_0x4c5007['query']['filter']){_0x16be22[_0x50c5('0x3f')]=_[_0x50c5('0x2f')](_0x16be22[_0x50c5('0x3f')],{'$or':_[_0x50c5('0x1e')](_0x16be22[_0x50c5('0x2a')],function(_0x143bf6){var _0x5c16a3={};_0x5c16a3[_0x143bf6]={'$like':'%'+_0x4c5007[_0x50c5('0x24')]['filter']+'%'};return _0x5c16a3;})});}if(_0x4c5007['query'][_0x50c5('0x41')]){var _0x4aa089=_0x4c5007[_0x50c5('0x24')][_0x50c5('0x41')][_0x50c5('0x42')](',');var _0x1980a6={};_0x1980a6[_0x4aa089[0x0]]={'$gte':moment(_0x4aa089[0x1])['format']('YYYY-MM-DD\x20HH:mm:ss')};_0x16be22[_0x50c5('0x3f')]=_[_0x50c5('0x2f')](_0x16be22[_0x50c5('0x3f')],_0x1980a6);}_0x16be22=_[_0x50c5('0x2f')]({},_0x16be22,_0x4c5007[_0x50c5('0x30')]);return db['SmsMessage'][_0x50c5('0x12')]({'where':_0x16be22['where']})[_0x50c5('0x18')](function(_0x586a35){_0x497094['count']=_0x586a35;if(_0x4c5007['query'][_0x50c5('0x2d')]){_0x16be22[_0x50c5('0x2e')]=[{'all':!![]}];}return db['SmsMessage'][_0x50c5('0x22')](_0x16be22);})[_0x50c5('0x18')](function(_0x229b6b){_0x497094[_0x50c5('0x43')]=_0x229b6b;return _0x497094;});}})[_0x50c5('0x18')](respondWithFilteredResult(_0x35efac,_0x16be22))['catch'](handleError(_0x35efac,null));};exports['addTags']=function(_0x165bee,_0x3879a3){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x165bee[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x3879a3,null))[_0x50c5('0x18')](function(_0x2235f7){if(_0x2235f7){return _0x2235f7[_0x50c5('0x44')](_0x165bee[_0x50c5('0x32')][_0x50c5('0x39')],_['omit'](_0x165bee['body'],[_0x50c5('0x39'),'id'])||{})[_0x50c5('0x45')](function(){return db['Tag'][_0x50c5('0x22')]({'attributes':['id','name',_0x50c5('0x46')],'where':{'id':_0x165bee['body'][_0x50c5('0x39')]}});})[_0x50c5('0x18')](function(_0x2e716a){socket[_0x50c5('0x47')]('smsInteractionTags:save',{'id':Number(_0x165bee[_0x50c5('0x34')]['id']),'tags':_0x2e716a||[]});return{'id':Number(_0x165bee[_0x50c5('0x34')]['id']),'tags':_0x2e716a||[]};});}})[_0x50c5('0x18')](respondWithResult(_0x3879a3,null))[_0x50c5('0x25')](handleError(_0x3879a3,null));};exports[_0x50c5('0x48')]=function(_0x3a4d2c,_0x3de254){return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0x3a4d2c[_0x50c5('0x34')]['id']}})[_0x50c5('0x18')](handleEntityNotFound(_0x3de254,null))[_0x50c5('0x18')](function(_0x3c541c){if(_0x3c541c){return _0x3c541c[_0x50c5('0x48')](_0x3a4d2c[_0x50c5('0x24')][_0x50c5('0x39')]);}})[_0x50c5('0x18')](respondWithStatusCode(_0x3de254,null))[_0x50c5('0x25')](handleError(_0x3de254,null));};exports[_0x50c5('0x49')]=function(_0xd5738c,_0x41d88e){var _0x2c4f7a=moment()[_0x50c5('0x4a')]()[_0x50c5('0x4b')]();var _0xf48745=path[_0x50c5('0x4c')](config[_0x50c5('0x4d')],_0x50c5('0x4e'),'files',_0x50c5('0x4f'));var _0x109445=path[_0x50c5('0x4c')](_0xf48745,_0x2c4f7a);var _0x1d8dc7=util[_0x50c5('0x50')]('transcript-%d-%s.zip',_0xd5738c[_0x50c5('0x34')]['id'],_0x2c4f7a);var _0x60f356=path[_0x50c5('0x4c')](_0xf48745,_0x1d8dc7);var _0x16eaa9=[];_0x16eaa9[_0x50c5('0x51')]({'model':db['User'],'as':'User','attributes':['id',_0x50c5('0x52')],'raw':!![]});_0x16eaa9[_0x50c5('0x51')]({'model':db[_0x50c5('0x53')],'as':_0x50c5('0x54'),'attributes':['id',_0x50c5('0x55'),_0x50c5('0x56')],'raw':!![]});var _0x5e3d1d=[{'model':db[_0x50c5('0x37')],'as':'Messages','attributes':['id',_0x50c5('0x32'),_0x50c5('0x57'),_0x50c5('0x58'),'secret',_0x50c5('0x59')],'include':_0x16eaa9}];_0x5e3d1d[_0x50c5('0x51')]({'model':db[_0x50c5('0x5a')],'as':_0x50c5('0x5b'),'attributes':['id',_0x50c5('0x1c')]});_0x5e3d1d['push']({'model':db[_0x50c5('0x5c')],'as':_0x50c5('0x5d'),'attributes':['id',_0x50c5('0x52')]});return db[_0x50c5('0x1f')][_0x50c5('0x33')]({'where':{'id':_0xd5738c['params']['id']},'include':_0x5e3d1d})[_0x50c5('0x18')](handleEntityNotFound(_0x41d88e,null))[_0x50c5('0x18')](function(_0x50e8c5){if(_0x50e8c5){var _0x3df0bc=_0x50e8c5[_0x50c5('0x5e')]({'plain':!![]});fs[_0x50c5('0x5f')](_0x109445);var _0x4737db={'channel':_0x50c5('0x60'),'account':_0x3df0bc[_0x50c5('0x5b')][_0x50c5('0x1c')],'agent':_0x3df0bc[_0x50c5('0x5d')]?_0x3df0bc[_0x50c5('0x5d')][_0x50c5('0x52')]:'N.A.','createdAt':moment(_0x3df0bc[_0x50c5('0x57')])[_0x50c5('0x50')](_0x50c5('0x61'))[_0x50c5('0x4b')](),'closedAt':_0x3df0bc[_0x50c5('0x62')]?moment(_0x3df0bc[_0x50c5('0x63')])['format'](_0x50c5('0x61'))['toString']():'','disposition':_0x3df0bc[_0x50c5('0x64')],'messages':_(_0x3df0bc[_0x50c5('0x65')])[_0x50c5('0x66')]({'secret':![]})[_0x50c5('0x1e')](function(_0x2fc0ac){return{'date':moment(_0x2fc0ac[_0x50c5('0x57')])[_0x50c5('0x50')](_0x50c5('0x61'))['toString'](),'sender':_0x2fc0ac[_0x50c5('0x58')]===_0x50c5('0x67')?_0x2fc0ac[_0x50c5('0x5c')]?_0x2fc0ac[_0x50c5('0x5c')]['fullname']:_0x50c5('0x68'):_0x2fc0ac[_0x50c5('0x54')][_0x50c5('0x55')]+(_0x2fc0ac[_0x50c5('0x54')]['lastName']?'\x20'+_0x2fc0ac[_0x50c5('0x54')]['lastName']:''),'body':_0x2fc0ac[_0x50c5('0x32')],'direction':_0x2fc0ac[_0x50c5('0x58')]==='out'?'A':'C','secret':_0x2fc0ac['secret'],'read':_0x2fc0ac[_0x50c5('0x59')]};})[_0x50c5('0x69')]()};return ejs[_0x50c5('0x6a')](path[_0x50c5('0x4c')](config[_0x50c5('0x4d')],_0x50c5('0x4e'),_0x50c5('0x6b'),_0x50c5('0x6c')),{'interaction':_0x4737db})[_0x50c5('0x18')](function(_0x130092){var _0x382bab=path[_0x50c5('0x4c')](_0x109445,_0x50c5('0x6d')+_0x3df0bc['id']+'-'+_0x2c4f7a+_0x50c5('0x6e'));var _0x46ec2f={'path':_0x382bab,'channel':_0x50c5('0x60'),'interactionId':_0x3df0bc['id']};return pdf[_0x50c5('0x6f')](_0x130092,_0x46ec2f);})[_0x50c5('0x18')](function(){return new BPromise(function(_0x49de61,_0x453df0){zipdir(_0x109445,{'saveTo':_0x60f356},function(_0x13e6a7,_0x2399ac){if(_0x13e6a7)return _0x453df0(_0x13e6a7);return _0x49de61(_0x2399ac);});})['then'](function(){return new BPromise(function(_0x562835,_0x2d1837){rimraf(_0x109445,function(_0x38f8b8){if(_0x38f8b8)_0x2d1837(_0x38f8b8);return _0x562835();});});})[_0x50c5('0x18')](function(){return _0x41d88e[_0x50c5('0x49')](_0x60f356,_0x1d8dc7,function(_0x24cfe6){if(_0x24cfe6){console[_0x50c5('0x70')](_0x50c5('0x71'),_0x24cfe6);}else{fs['unlinkSync'](_0x60f356);}});});});}else{return _0x41d88e[_0x50c5('0xe')](0xc8);}})[_0x50c5('0x25')](handleError(_0x41d88e,null));};
\ No newline at end of file
index 16836c3..a4f5137 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x351d=['length','emit','catch','hook','events','SmsInteraction','../../mysqldb','SmsMessage','save','remove','getUsers','setDataValue','map','unreadMessages'];(function(_0x1034bb,_0x4e20b3){var _0x453fdb=function(_0x455356){while(--_0x455356){_0x1034bb['push'](_0x1034bb['shift']());}};_0x453fdb(++_0x4e20b3);}(_0x351d,0x90));var _0xd351=function(_0x1619e3,_0x917165){_0x1619e3=_0x1619e3-0x0;var _0x4796d4=_0x351d[_0x1619e3];return _0x4796d4;};'use strict';var EventEmitter=require(_0xd351('0x0'));var SmsInteraction=require('../../mysqldb')['db'][_0xd351('0x1')];var SmsMessage=require(_0xd351('0x2'))['db'][_0xd351('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xd351('0x4'),'afterUpdate':'update','afterDestroy':_0xd351('0x5')};function emitEvent(_0x151391){return function(_0x49610f,_0x1cd581,_0x45e9e5){_0x49610f[_0xd351('0x6')]({'attributes':['id'],'raw':!![]})['then'](function(_0x16b3f7){_0x49610f[_0xd351('0x7')]('Users',_0x16b3f7[_0xd351('0x8')](function(_0xb4f580){return{'id':_0xb4f580['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x49610f['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x44bf81){_0x49610f['setDataValue'](_0xd351('0x9'),_0x44bf81[_0xd351('0xa')]);SmsInteractionEvents['emit'](_0x151391+':'+_0x49610f['id'],_0x49610f);SmsInteractionEvents[_0xd351('0xb')](_0x151391,_0x49610f);_0x45e9e5(null);})[_0xd351('0xc')](_0x45e9e5(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0xd351('0xd')](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
+var _0xfff0=['unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','../../mysqldb','SmsInteraction','setMaxListeners','save','update','getUsers','then','setDataValue','map','findAll'];(function(_0x391f71,_0x30a58d){var _0x1923b4=function(_0x385dc4){while(--_0x385dc4){_0x391f71['push'](_0x391f71['shift']());}};_0x1923b4(++_0x30a58d);}(_0xfff0,0x139));var _0x0fff=function(_0x7dcd89,_0x5bc364){_0x7dcd89=_0x7dcd89-0x0;var _0x39836a=_0xfff0[_0x7dcd89];return _0x39836a;};'use strict';var EventEmitter=require('events');var SmsInteraction=require(_0x0fff('0x0'))['db'][_0x0fff('0x1')];var SmsMessage=require(_0x0fff('0x0'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x0fff('0x2')](0x0);var events={'afterCreate':_0x0fff('0x3'),'afterUpdate':_0x0fff('0x4'),'afterDestroy':'remove'};function emitEvent(_0x2cd3d5){return function(_0x17911e,_0x53c517,_0x33c813){_0x17911e[_0x0fff('0x5')]({'attributes':['id'],'raw':!![]})[_0x0fff('0x6')](function(_0x586dc5){_0x17911e[_0x0fff('0x7')]('Users',_0x586dc5[_0x0fff('0x8')](function(_0x5304a5){return{'id':_0x5304a5['id']};}));return SmsMessage[_0x0fff('0x9')]({'where':{'SmsInteractionId':_0x17911e['id'],'direction':'in','read':![]},'raw':!![]});})[_0x0fff('0x6')](function(_0x4cc3f3){_0x17911e[_0x0fff('0x7')](_0x0fff('0xa'),_0x4cc3f3[_0x0fff('0xb')]);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5+':'+_0x17911e['id'],_0x17911e);SmsInteractionEvents[_0x0fff('0xc')](_0x2cd3d5,_0x17911e);_0x33c813(null);})[_0x0fff('0xd')](_0x33c813(null));};}for(var e in events){if(events[_0x0fff('0xe')](e)){var event=events[e];SmsInteraction[_0x0fff('0xf')](e,emitEvent(event));}}module[_0x0fff('0x10')]=SmsInteractionEvents;
\ No newline at end of file
index e5361bf..84880de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a11=['SmsInteraction','closedAt','format','lodash','util','../../config/logger','api','moment','bluebird','../../config/environment','./smsInteraction.attributes','exports','define'];(function(_0x543064,_0x202f8b){var _0xe676be=function(_0x297c34){while(--_0x297c34){_0x543064['push'](_0x543064['shift']());}};_0xe676be(++_0x202f8b);}(_0x5a11,0xc6));var _0x15a1=function(_0x156e46,_0x212834){_0x156e46=_0x156e46-0x0;var _0x463630=_0x5a11[_0x156e46];return _0x463630;};'use strict';var _=require(_0x15a1('0x0'));var util=require(_0x15a1('0x1'));var logger=require(_0x15a1('0x2'))(_0x15a1('0x3'));var moment=require(_0x15a1('0x4'));var BPromise=require(_0x15a1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x15a1('0x6'));var attributes=require(_0x15a1('0x7'));module[_0x15a1('0x8')]=function(_0x5b6af6,_0x117695){return _0x5b6af6[_0x15a1('0x9')](_0x15a1('0xa'),attributes,{'tableName':'sms_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x157f25,_0x412a73,_0x2e2916){if(_0x157f25['changed']('closed')){_0x157f25[_0x15a1('0xb')]=moment()[_0x15a1('0xc')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2e2916(null,_0x157f25);}}});};
\ No newline at end of file
+var _0x4af4=['format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions','changed','closed'];(function(_0x36bc58,_0x27f03c){var _0x4a547e=function(_0x6326c6){while(--_0x6326c6){_0x36bc58['push'](_0x36bc58['shift']());}};_0x4a547e(++_0x27f03c);}(_0x4af4,0x146));var _0x44af=function(_0x2e9d94,_0x3e287a){_0x2e9d94=_0x2e9d94-0x0;var _0x2e4de2=_0x4af4[_0x2e9d94];return _0x2e4de2;};'use strict';var _=require(_0x44af('0x0'));var util=require(_0x44af('0x1'));var logger=require(_0x44af('0x2'))(_0x44af('0x3'));var moment=require(_0x44af('0x4'));var BPromise=require(_0x44af('0x5'));var rp=require(_0x44af('0x6'));var fs=require('fs');var path=require(_0x44af('0x7'));var rimraf=require(_0x44af('0x8'));var config=require(_0x44af('0x9'));var attributes=require(_0x44af('0xa'));module[_0x44af('0xb')]=function(_0x241250,_0x133477){return _0x241250[_0x44af('0xc')]('SmsInteraction',attributes,{'tableName':_0x44af('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x368894,_0x5e0f18,_0x2adc61){if(_0x368894[_0x44af('0xe')](_0x44af('0xf'))){_0x368894['closedAt']=moment()[_0x44af('0x10')](_0x44af('0x11'));}_0x2adc61(null,_0x368894);}}});};
\ No newline at end of file
index 3983f88..6ed046a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe47a=['catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','limit','AddTagsToSmsInteraction','find','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','client','http','redis','defaults','localhost','socket.io-emitter','register','request','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','error','message','info','result'];(function(_0x303d75,_0x3ea3e4){var _0x3471c7=function(_0x331c3a){while(--_0x331c3a){_0x303d75['push'](_0x303d75['shift']());}};_0x3471c7(++_0x3ea3e4);}(_0xe47a,0x147));var _0xae47=function(_0x2064e5,_0x4f6fa2){_0x2064e5=_0x2064e5-0x0;var _0x21a233=_0xe47a[_0x2064e5];return _0x21a233;};'use strict';var _=require(_0xae47('0x0'));var util=require('util');var moment=require(_0xae47('0x1'));var BPromise=require(_0xae47('0x2'));var rs=require(_0xae47('0x3'));var fs=require('fs');var Redis=require(_0xae47('0x4'));var db=require(_0xae47('0x5'))['db'];var utils=require(_0xae47('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xae47('0x7')][_0xae47('0x8')]({'port':0x232a});config[_0xae47('0x9')]=_[_0xae47('0xa')](config[_0xae47('0x9')],{'host':_0xae47('0xb'),'port':0x18eb});var socket=require(_0xae47('0xc'))(new Redis(config[_0xae47('0x9')]));require('./smsInteraction.socket')[_0xae47('0xd')](socket);function respondWithRpcPromise(_0x3110d0,_0x1a1b1f,_0x3c7bca){return new BPromise(function(_0x548ffd,_0x5ef756){return client[_0xae47('0xe')](_0x3110d0,_0x3c7bca)[_0xae47('0xf')](function(_0x59f1fd){logger['info'](_0xae47('0x10'),_0x1a1b1f,_0xae47('0x11'));logger[_0xae47('0x12')](_0xae47('0x13'),_0x1a1b1f,'request\x20sent',JSON['stringify'](_0x59f1fd));if(_0x59f1fd[_0xae47('0x14')]){if(_0x59f1fd[_0xae47('0x14')]['code']===0x1f4){logger[_0xae47('0x14')](_0xae47('0x10'),_0x1a1b1f,_0x59f1fd[_0xae47('0x14')][_0xae47('0x15')]);return _0x5ef756(_0x59f1fd['error']['message']);}logger['error'](_0xae47('0x10'),_0x1a1b1f,_0x59f1fd[_0xae47('0x14')]['message']);return _0x548ffd(_0x59f1fd[_0xae47('0x14')]['message']);}else{logger[_0xae47('0x16')](_0xae47('0x10'),_0x1a1b1f,_0xae47('0x11'));_0x548ffd(_0x59f1fd[_0xae47('0x17')]['message']);}})[_0xae47('0x18')](function(_0x2874d1){logger[_0xae47('0x14')](_0xae47('0x10'),_0x1a1b1f,_0x2874d1);_0x5ef756(_0x2874d1);});});}exports[_0xae47('0x19')]=function(_0x453650){var _0x441dc7=this;return new Promise(function(_0xaad69a,_0x42bc5c){return db[_0xae47('0x1a')][_0xae47('0x1b')](_0x453650[_0xae47('0x1c')],{'raw':_0x453650[_0xae47('0x1d')]?_0x453650[_0xae47('0x1d')][_0xae47('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x453650[_0xae47('0x1d')]?_0x453650[_0xae47('0x1d')][_0xae47('0x1f')]||null:null,'attributes':_0x453650['options']?_0x453650[_0xae47('0x1d')]['attributes']||null:null,'limit':_0x453650[_0xae47('0x1d')]?_0x453650[_0xae47('0x1d')][_0xae47('0x20')]||null:null})[_0xae47('0xf')](function(_0x740e93){logger[_0xae47('0x16')](_0xae47('0x19'),_0x453650);logger[_0xae47('0x12')](_0xae47('0x19'),_0x453650,JSON['stringify'](_0x740e93));_0xaad69a(_0x740e93);})[_0xae47('0x18')](function(_0x4894ab){logger['error'](_0xae47('0x19'),_0x4894ab[_0xae47('0x15')],_0x453650);_0x42bc5c(_0x441dc7[_0xae47('0x14')](0x1f4,_0x4894ab[_0xae47('0x15')]));});});};exports[_0xae47('0x21')]=function(_0x3f5224){return new Promise(function(_0x2d4c3c,_0x439931){return db[_0xae47('0x1a')][_0xae47('0x22')]({'where':_0x3f5224[_0xae47('0x1d')]?_0x3f5224[_0xae47('0x1d')][_0xae47('0x1f')]||null:null})['then'](function(_0x4d7e96){if(_0x4d7e96){return _0x4d7e96['addTags'](_0x3f5224[_0xae47('0x1c')][_0xae47('0x23')],_[_0xae47('0x24')](_0x3f5224['body'],[_0xae47('0x23'),'id'])||{});}})[_0xae47('0x25')](function(_0x4309d9){logger[_0xae47('0x16')](_0xae47('0x26'),_0x3f5224);logger[_0xae47('0x12')](_0xae47('0x26'),_0x3f5224,JSON['stringify'](_0x4309d9));_0x2d4c3c(_0x4309d9);})[_0xae47('0x18')](function(_0x3aa357){logger[_0xae47('0x14')](_0xae47('0x26'),_0x3aa357[_0xae47('0x15')],_0x3f5224);_0x439931(_this[_0xae47('0x14')](0x1f4,_0x3aa357[_0xae47('0x15')]));});});};
\ No newline at end of file
+var _0xd03c=['http','redis','localhost','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','SmsInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateSmsInteraction','SmsInteraction','update','body','options','raw','where','limit','find','ids','AddTags','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','client'];(function(_0x16f580,_0x3244ab){var _0x14a053=function(_0x2ff130){while(--_0x2ff130){_0x16f580['push'](_0x16f580['shift']());}};_0x14a053(++_0x3244ab);}(_0xd03c,0x1cb));var _0xcd03=function(_0x54e8ef,_0x541b36){_0x54e8ef=_0x54e8ef-0x0;var _0x5ca85d=_0xd03c[_0x54e8ef];return _0x5ca85d;};'use strict';var _=require('lodash');var util=require(_0xcd03('0x0'));var moment=require(_0xcd03('0x1'));var BPromise=require(_0xcd03('0x2'));var rs=require(_0xcd03('0x3'));var fs=require('fs');var Redis=require(_0xcd03('0x4'));var db=require(_0xcd03('0x5'))['db'];var utils=require(_0xcd03('0x6'));var logger=require(_0xcd03('0x7'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xcd03('0x8')][_0xcd03('0x9')]({'port':0x232a});config[_0xcd03('0xa')]=_['defaults'](config[_0xcd03('0xa')],{'host':_0xcd03('0xb'),'port':0x18eb});var socket=require(_0xcd03('0xc'))(new Redis(config[_0xcd03('0xa')]));require(_0xcd03('0xd'))[_0xcd03('0xe')](socket);function respondWithRpcPromise(_0x34dba3,_0xd0ccc,_0x1f9ba1){return new BPromise(function(_0x115ab2,_0x44afe4){return client[_0xcd03('0xf')](_0x34dba3,_0x1f9ba1)[_0xcd03('0x10')](function(_0x54c49a){logger[_0xcd03('0x11')](_0xcd03('0x12'),_0xd0ccc,_0xcd03('0x13'));logger[_0xcd03('0x14')](_0xcd03('0x15'),_0xd0ccc,_0xcd03('0x13'),JSON[_0xcd03('0x16')](_0x54c49a));if(_0x54c49a[_0xcd03('0x17')]){if(_0x54c49a['error'][_0xcd03('0x18')]===0x1f4){logger['error'](_0xcd03('0x12'),_0xd0ccc,_0x54c49a[_0xcd03('0x17')][_0xcd03('0x19')]);return _0x44afe4(_0x54c49a['error'][_0xcd03('0x19')]);}logger[_0xcd03('0x17')]('SmsInteraction,\x20%s,\x20%s',_0xd0ccc,_0x54c49a[_0xcd03('0x17')]['message']);return _0x115ab2(_0x54c49a['error'][_0xcd03('0x19')]);}else{logger[_0xcd03('0x11')]('SmsInteraction,\x20%s,\x20%s',_0xd0ccc,_0xcd03('0x13'));_0x115ab2(_0x54c49a[_0xcd03('0x1a')][_0xcd03('0x19')]);}})[_0xcd03('0x1b')](function(_0x53b3ca){logger[_0xcd03('0x17')](_0xcd03('0x12'),_0xd0ccc,_0x53b3ca);_0x44afe4(_0x53b3ca);});});}exports[_0xcd03('0x1c')]=function(_0x59f846){var _0x2e3c9c=this;return new Promise(function(_0xc9bfcf,_0x13935d){return db[_0xcd03('0x1d')][_0xcd03('0x1e')](_0x59f846[_0xcd03('0x1f')],{'raw':_0x59f846[_0xcd03('0x20')]?_0x59f846[_0xcd03('0x20')][_0xcd03('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x59f846['options']?_0x59f846[_0xcd03('0x20')][_0xcd03('0x22')]||null:null,'attributes':_0x59f846[_0xcd03('0x20')]?_0x59f846[_0xcd03('0x20')]['attributes']||null:null,'limit':_0x59f846[_0xcd03('0x20')]?_0x59f846['options'][_0xcd03('0x23')]||null:null})[_0xcd03('0x10')](function(_0xe4a8d4){logger['info'](_0xcd03('0x1c'),_0x59f846);logger['debug']('UpdateSmsInteraction',_0x59f846,JSON[_0xcd03('0x16')](_0xe4a8d4));_0xc9bfcf(_0xe4a8d4);})['catch'](function(_0x52f3a4){logger[_0xcd03('0x17')](_0xcd03('0x1c'),_0x52f3a4['message'],_0x59f846);_0x13935d(_0x2e3c9c['error'](0x1f4,_0x52f3a4[_0xcd03('0x19')]));});});};exports['AddTagsToSmsInteraction']=function(_0x3ee4e6){return new Promise(function(_0x1b9813,_0x691885){return db[_0xcd03('0x1d')][_0xcd03('0x24')]({'where':_0x3ee4e6[_0xcd03('0x20')]?_0x3ee4e6[_0xcd03('0x20')][_0xcd03('0x22')]||null:null})[_0xcd03('0x10')](function(_0x51cc6d){if(_0x51cc6d){return _0x51cc6d['addTags'](_0x3ee4e6[_0xcd03('0x1f')][_0xcd03('0x25')],_['omit'](_0x3ee4e6[_0xcd03('0x1f')],[_0xcd03('0x25'),'id'])||{});}})['spread'](function(_0x81040){logger[_0xcd03('0x11')](_0xcd03('0x26'),_0x3ee4e6);logger[_0xcd03('0x14')]('AddTags',_0x3ee4e6,JSON['stringify'](_0x81040));_0x1b9813(_0x81040);})[_0xcd03('0x1b')](function(_0x54355e){logger[_0xcd03('0x17')](_0xcd03('0x26'),_0x54355e[_0xcd03('0x19')],_0x3ee4e6);_0x691885(_this[_0xcd03('0x17')](0x1f4,_0x54355e[_0xcd03('0x19')]));});});};
\ No newline at end of file
index 956212b..1c5e968 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a50=['emit','removeListener','length','smsInteraction:','save','remove','update'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0x3a50,0xdd));var _0x03a5=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x3a50[_0x57b54c];return _0x59cc19;};'use strict';var SmsInteractionEvents=require('./smsInteraction.events');var events=[_0x03a5('0x0'),_0x03a5('0x1'),_0x03a5('0x2')];function createListener(_0x40246b,_0x2ec53){return function(_0x3c0116){_0x2ec53[_0x03a5('0x3')](_0x40246b,_0x3c0116);};}function removeListener(_0x5b5538,_0x1673c9){return function(){SmsInteractionEvents[_0x03a5('0x4')](_0x5b5538,_0x1673c9);};}exports['register']=function(_0x1f2cd6){for(var _0x564f74=0x0,_0x1a3227=events[_0x03a5('0x5')];_0x564f74<_0x1a3227;_0x564f74++){var _0x26a1d5=events[_0x564f74];var _0x1e4f2e=createListener(_0x03a5('0x6')+_0x26a1d5,_0x1f2cd6);SmsInteractionEvents['on'](_0x26a1d5,_0x1e4f2e);}};
\ No newline at end of file
+var _0xc701=['update','emit','removeListener','register','length','smsInteraction:','./smsInteraction.events','remove'];(function(_0x4c19a1,_0x15197f){var _0x58ac50=function(_0x7c08c1){while(--_0x7c08c1){_0x4c19a1['push'](_0x4c19a1['shift']());}};_0x58ac50(++_0x15197f);}(_0xc701,0xd6));var _0x1c70=function(_0x27221f,_0x3f0125){_0x27221f=_0x27221f-0x0;var _0x1946d4=_0xc701[_0x27221f];return _0x1946d4;};'use strict';var SmsInteractionEvents=require(_0x1c70('0x0'));var events=['save',_0x1c70('0x1'),_0x1c70('0x2')];function createListener(_0xe0a5d3,_0x4ad6b4){return function(_0x42eb95){_0x4ad6b4[_0x1c70('0x3')](_0xe0a5d3,_0x42eb95);};}function removeListener(_0x2354e8,_0x2b758b){return function(){SmsInteractionEvents[_0x1c70('0x4')](_0x2354e8,_0x2b758b);};}exports[_0x1c70('0x5')]=function(_0x5b2c2d){for(var _0x1f13cb=0x0,_0x2382fc=events[_0x1c70('0x6')];_0x1f13cb<_0x2382fc;_0x1f13cb++){var _0x4451e4=events[_0x1f13cb];var _0x5052fe=createListener(_0x1c70('0x7')+_0x4451e4,_0x5b2c2d);SmsInteractionEvents['on'](_0x4451e4,_0x5052fe);}};
\ No newline at end of file
index d156bf5..83fd2b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4dd=['isAuthenticated','/describe','describe','/:id','show','post','sms','smsmessage:create','status','update','put','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xc4dd,0xad));var _0xdc4d=function(_0x4fdc1f,_0x806088){_0x4fdc1f=_0x4fdc1f-0x0;var _0xb5c85e=_0xc4dd[_0x4fdc1f];return _0xb5c85e;};'use strict';var multer=require(_0xdc4d('0x0'));var util=require(_0xdc4d('0x1'));var path=require(_0xdc4d('0x2'));var timeout=require('connect-timeout');var express=require(_0xdc4d('0x3'));var router=express[_0xdc4d('0x4')]();var fs_extra=require(_0xdc4d('0x5'));var auth=require(_0xdc4d('0x6'));var interaction=require(_0xdc4d('0x7'));var config=require('../../config/environment');var controller=require('./smsMessage.controller');router[_0xdc4d('0x8')]('/',auth[_0xdc4d('0x9')](),controller['index']);router[_0xdc4d('0x8')](_0xdc4d('0xa'),auth['isAuthenticated'](),controller[_0xdc4d('0xb')]);router[_0xdc4d('0x8')](_0xdc4d('0xc'),auth[_0xdc4d('0x9')](),controller[_0xdc4d('0xd')]);router[_0xdc4d('0xe')]('/',auth[_0xdc4d('0x9')](),interaction['tracked'](_0xdc4d('0xf'),_0xdc4d('0x10')),controller['create']);router[_0xdc4d('0xe')]('/:id/status',controller[_0xdc4d('0x11')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xdc4d('0x12')]);router[_0xdc4d('0x13')](_0xdc4d('0x14'),auth['isAuthenticated'](),controller[_0xdc4d('0x15')]);router[_0xdc4d('0x13')](_0xdc4d('0x16'),auth['isAuthenticated'](),controller[_0xdc4d('0x17')]);router['delete']('/:id',auth[_0xdc4d('0x9')](),controller[_0xdc4d('0x18')]);module[_0xdc4d('0x19')]=router;
\ No newline at end of file
+var _0x4cdc=['/:id/accept','accept','/:id/reject','delete','destroy','exports','multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','show','tracked','sms','smsmessage:create','post','/:id/status','put','/:id','update'];(function(_0x10b7b8,_0x1805f3){var _0x108df6=function(_0xcf711e){while(--_0xcf711e){_0x10b7b8['push'](_0x10b7b8['shift']());}};_0x108df6(++_0x1805f3);}(_0x4cdc,0x13a));var _0xc4cd=function(_0x2a86fd,_0x543a59){_0x2a86fd=_0x2a86fd-0x0;var _0x4d6840=_0x4cdc[_0x2a86fd];return _0x4d6840;};'use strict';var multer=require(_0xc4cd('0x0'));var util=require(_0xc4cd('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc4cd('0x2'));var router=express[_0xc4cd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc4cd('0x4'));var interaction=require(_0xc4cd('0x5'));var config=require(_0xc4cd('0x6'));var controller=require(_0xc4cd('0x7'));router[_0xc4cd('0x8')]('/',auth[_0xc4cd('0x9')](),controller[_0xc4cd('0xa')]);router[_0xc4cd('0x8')](_0xc4cd('0xb'),auth['isAuthenticated'](),controller[_0xc4cd('0xc')]);router[_0xc4cd('0x8')]('/:id',auth[_0xc4cd('0x9')](),controller[_0xc4cd('0xd')]);router['post']('/',auth[_0xc4cd('0x9')](),interaction[_0xc4cd('0xe')](_0xc4cd('0xf'),_0xc4cd('0x10')),controller['create']);router[_0xc4cd('0x11')](_0xc4cd('0x12'),controller['status']);router[_0xc4cd('0x13')](_0xc4cd('0x14'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x15')]);router['put'](_0xc4cd('0x16'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x17')]);router[_0xc4cd('0x13')](_0xc4cd('0x18'),auth[_0xc4cd('0x9')](),controller['reject']);router[_0xc4cd('0x19')](_0xc4cd('0x14'),auth[_0xc4cd('0x9')](),controller[_0xc4cd('0x1a')]);module[_0xc4cd('0x1b')]=router;
\ No newline at end of file
index 4c98b14..73ee7ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4294=['out','STRING','DATE','TEXT','sequelize','exports','medium','BOOLEAN'];(function(_0xb353a4,_0x38b1e6){var _0x4d0334=function(_0x1ec39b){while(--_0x1ec39b){_0xb353a4['push'](_0xb353a4['shift']());}};_0x4d0334(++_0x38b1e6);}(_0x4294,0x6c));var _0x4429=function(_0x3c11ab,_0x136119){_0x3c11ab=_0x3c11ab-0x0;var _0x251c95=_0x4294[_0x3c11ab];return _0x251c95;};'use strict';var Sequelize=require(_0x4429('0x0'));module[_0x4429('0x1')]={'body':{'type':Sequelize['TEXT'](_0x4429('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x4429('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x4429('0x4')),'defaultValue':_0x4429('0x4'),'allowNull':![]},'messageId':{'type':Sequelize[_0x4429('0x5')](0xbe)},'phone':{'type':Sequelize[_0x4429('0x5')]},'readAt':{'type':Sequelize[_0x4429('0x6')]},'secret':{'type':Sequelize[_0x4429('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x4429('0x5')]},'providerResponse':{'type':Sequelize[_0x4429('0x7')]}};
\ No newline at end of file
+var _0x8a25=['STRING','DATE','BOOLEAN','sequelize','exports','TEXT','medium','ENUM','out'];(function(_0x526bbc,_0x27a64b){var _0x318d9c=function(_0x5f5c17){while(--_0x5f5c17){_0x526bbc['push'](_0x526bbc['shift']());}};_0x318d9c(++_0x27a64b);}(_0x8a25,0x1aa));var _0x58a2=function(_0x23d8a2,_0x5f451f){_0x23d8a2=_0x23d8a2-0x0;var _0x1657c8=_0x8a25[_0x23d8a2];return _0x1657c8;};'use strict';var Sequelize=require(_0x58a2('0x0'));module[_0x58a2('0x1')]={'body':{'type':Sequelize[_0x58a2('0x2')](_0x58a2('0x3')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x58a2('0x4')]('in',_0x58a2('0x5')),'defaultValue':_0x58a2('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x58a2('0x6')](0xbe)},'phone':{'type':Sequelize[_0x58a2('0x6')]},'readAt':{'type':Sequelize[_0x58a2('0x7')]},'secret':{'type':Sequelize[_0x58a2('0x8')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x58a2('0x6')]},'providerResponse':{'type':Sequelize[_0x58a2('0x2')]}};
\ No newline at end of file
index 0a67206..b572454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ff4=['crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','register','jayson/promise','client','http','request','info','request\x20sent','debug','stringify','error','message','SmsMessage,\x20%s,\x20%s','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','send','map','SmsMessage','fieldName','key','query','keys','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','filter','merge','type','options','includeAll','include','findAll','rows','show','params','model','rawAttributes','find','create','body','accept','sms','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','SmsInteraction','SmsInteractionId','update','isNil','read1stAt','interaction','get','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','acceptMessage','ContactId','sequelize','QueryTypes','contact','User','agent','fullname','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','sms-interactions','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','SELECT','email','interface','rejectmessage','SmsAccount','SmsMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','Status','infobip','results','groupName','DELIVERED','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x5442a5,_0x4110f1){var _0x130af0=function(_0x457ec2){while(--_0x457ec2){_0x5442a5['push'](_0x5442a5['shift']());}};_0x130af0(++_0x4110f1);}(_0x8ff4,0x11f));var _0x48ff=function(_0x1ac6e5,_0x40f47f){_0x1ac6e5=_0x1ac6e5-0x0;var _0x5877dc=_0x8ff4[_0x1ac6e5];return _0x5877dc;};'use strict';var emlformat=require(_0x48ff('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x48ff('0x1'));var rp=require(_0x48ff('0x2'));var moment=require('moment');var BPromise=require(_0x48ff('0x3'));var Mustache=require(_0x48ff('0x4'));var util=require(_0x48ff('0x5'));var path=require(_0x48ff('0x6'));var sox=require(_0x48ff('0x7'));var csv=require(_0x48ff('0x8'));var ejs=require(_0x48ff('0x9'));var fs=require('fs');var fs_extra=require(_0x48ff('0xa'));var _=require(_0x48ff('0xb'));var squel=require(_0x48ff('0xc'));var crypto=require(_0x48ff('0xd'));var jsforce=require(_0x48ff('0xe'));var deskjs=require(_0x48ff('0xf'));var toCsv=require(_0x48ff('0x8'));var querystring=require('querystring');var Papa=require(_0x48ff('0x10'));var Redis=require(_0x48ff('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x48ff('0x12'));var as=require(_0x48ff('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x48ff('0x14'))(_0x48ff('0x15'));var utils=require('../../config/utils');var config=require(_0x48ff('0x16'));var licenseUtil=require(_0x48ff('0x17'));var db=require(_0x48ff('0x18'))['db'];config[_0x48ff('0x19')]=_[_0x48ff('0x1a')](config[_0x48ff('0x19')],{'host':_0x48ff('0x1b'),'port':0x18eb});var socket=require(_0x48ff('0x1c'))(new Redis(config[_0x48ff('0x19')]));require(_0x48ff('0x1d'))[_0x48ff('0x1e')](socket);var jayson=require(_0x48ff('0x1f'));var client=jayson[_0x48ff('0x20')][_0x48ff('0x21')]({'port':0x232c});var client9002=jayson['client'][_0x48ff('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x376471,_0x59408e,_0x265e6e,_0x2f8d8a){return new BPromise(function(_0x637378,_0x5066b9){var _0x99d4d6=_0x2f8d8a||client;return _0x99d4d6[_0x48ff('0x22')](_0x376471,_0x265e6e)['then'](function(_0x29012c){logger[_0x48ff('0x23')]('SmsMessage,\x20%s,\x20%s',_0x59408e,_0x48ff('0x24'));logger[_0x48ff('0x25')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x59408e,_0x48ff('0x24'),JSON[_0x48ff('0x26')](_0x29012c));if(_0x29012c[_0x48ff('0x27')]){if(_0x29012c['error']['code']===0x1f4){logger[_0x48ff('0x27')]('SmsMessage,\x20%s,\x20%s',_0x59408e,_0x29012c[_0x48ff('0x27')][_0x48ff('0x28')]);return _0x5066b9(_0x29012c[_0x48ff('0x27')][_0x48ff('0x28')]);}logger[_0x48ff('0x27')](_0x48ff('0x29'),_0x59408e,_0x29012c[_0x48ff('0x27')][_0x48ff('0x28')]);return _0x637378(_0x29012c['error'][_0x48ff('0x28')]);}else{logger[_0x48ff('0x23')]('SmsMessage,\x20%s,\x20%s',_0x59408e,_0x48ff('0x24'));_0x637378(_0x29012c[_0x48ff('0x2a')][_0x48ff('0x28')]);}})[_0x48ff('0x2b')](function(_0x1d49da){logger[_0x48ff('0x27')]('SmsMessage,\x20%s,\x20%s',_0x59408e,_0x1d49da);_0x5066b9(_0x1d49da);});});}function respondWithStatusCode(_0x3fc525,_0x38167f){_0x38167f=_0x38167f||0xcc;return function(_0x50b27c){if(_0x50b27c){return _0x3fc525[_0x48ff('0x2c')](_0x38167f);}return _0x3fc525[_0x48ff('0x2d')](_0x38167f)[_0x48ff('0x2e')]();};}function respondWithResult(_0xb3da23,_0x3e8bca){_0x3e8bca=_0x3e8bca||0xc8;return function(_0x31043f){if(_0x31043f){return _0xb3da23[_0x48ff('0x2d')](_0x3e8bca)[_0x48ff('0x2f')](_0x31043f);}};}function respondWithFilteredResult(_0x2b92ad,_0x2c9dee){return function(_0x18fb72){if(_0x18fb72){var _0x4d45fd=typeof _0x2c9dee[_0x48ff('0x30')]===_0x48ff('0x31')&&typeof _0x2c9dee[_0x48ff('0x32')]===_0x48ff('0x31');var _0x51dc06=_0x18fb72[_0x48ff('0x33')];var _0x486f1c=_0x4d45fd?0x0:_0x2c9dee[_0x48ff('0x30')];var _0x4d9634=_0x4d45fd?_0x18fb72[_0x48ff('0x33')]:_0x2c9dee[_0x48ff('0x30')]+_0x2c9dee[_0x48ff('0x32')];var _0x3f07f1;if(_0x4d9634>=_0x51dc06){_0x4d9634=_0x51dc06;_0x3f07f1=0xc8;}else{_0x3f07f1=0xce;}_0x2b92ad[_0x48ff('0x2d')](_0x3f07f1);return _0x2b92ad[_0x48ff('0x34')]('Content-Range',_0x486f1c+'-'+_0x4d9634+'/'+_0x51dc06)[_0x48ff('0x2f')](_0x18fb72);}return null;};}function patchUpdates(_0x6fa03c){return function(_0x17a503){try{jsonpatch[_0x48ff('0x35')](_0x17a503,_0x6fa03c,!![]);}catch(_0x272c1c){return BPromise[_0x48ff('0x36')](_0x272c1c);}return _0x17a503[_0x48ff('0x37')]();};}function saveUpdates(_0x5af089,_0x417b65){return function(_0x3ff3df){if(_0x3ff3df){return _0x3ff3df['update'](_0x5af089)[_0x48ff('0x38')](function(_0x233983){return _0x233983;});}return null;};}function removeEntity(_0x33e90e,_0x23d867){return function(_0x2f0954){if(_0x2f0954){return _0x2f0954[_0x48ff('0x39')]()[_0x48ff('0x38')](function(){_0x33e90e[_0x48ff('0x2d')](0xcc)[_0x48ff('0x2e')]();});}};}function handleEntityNotFound(_0x23a36a,_0x393820){return function(_0x23d70f){if(!_0x23d70f){_0x23a36a[_0x48ff('0x2c')](0x194);}return _0x23d70f;};}function handleError(_0x3718a0,_0x58955d){_0x58955d=_0x58955d||0x1f4;return function(_0x1a1cbe){logger[_0x48ff('0x27')](_0x1a1cbe[_0x48ff('0x3a')]);if(_0x1a1cbe[_0x48ff('0x3b')]){delete _0x1a1cbe['name'];}_0x3718a0['status'](_0x58955d)[_0x48ff('0x3c')](_0x1a1cbe);};}exports['index']=function(_0x49bd8c,_0x907224){var _0x1415c7={},_0x453fc6={},_0x309fc2={'count':0x0,'rows':[]};var _0x487fef=_[_0x48ff('0x3d')](db[_0x48ff('0x3e')]['rawAttributes'],function(_0x1c47c8){return{'name':_0x1c47c8[_0x48ff('0x3f')],'type':_0x1c47c8['type'][_0x48ff('0x40')]};});_0x453fc6['model']=_[_0x48ff('0x3d')](_0x487fef,_0x48ff('0x3b'));_0x453fc6[_0x48ff('0x41')]=_[_0x48ff('0x42')](_0x49bd8c[_0x48ff('0x41')]);_0x453fc6['filters']=_[_0x48ff('0x43')](_0x453fc6['model'],_0x453fc6[_0x48ff('0x41')]);_0x1415c7[_0x48ff('0x44')]=_['intersection'](_0x453fc6['model'],qs[_0x48ff('0x45')](_0x49bd8c['query'][_0x48ff('0x45')]));_0x1415c7[_0x48ff('0x44')]=_0x1415c7[_0x48ff('0x44')][_0x48ff('0x46')]?_0x1415c7['attributes']:_0x453fc6['model'];if(!_0x49bd8c[_0x48ff('0x41')][_0x48ff('0x47')]('nolimit')){_0x1415c7[_0x48ff('0x32')]=qs[_0x48ff('0x32')](_0x49bd8c[_0x48ff('0x41')][_0x48ff('0x32')]);_0x1415c7[_0x48ff('0x30')]=qs[_0x48ff('0x30')](_0x49bd8c['query'][_0x48ff('0x30')]);}_0x1415c7[_0x48ff('0x48')]=qs[_0x48ff('0x49')](_0x49bd8c['query'][_0x48ff('0x49')]);_0x1415c7[_0x48ff('0x4a')]=qs[_0x48ff('0x4b')](_['pick'](_0x49bd8c[_0x48ff('0x41')],_0x453fc6[_0x48ff('0x4b')]),_0x487fef);if(_0x49bd8c[_0x48ff('0x41')][_0x48ff('0x4c')]){_0x1415c7[_0x48ff('0x4a')]=_[_0x48ff('0x4d')](_0x1415c7['where'],{'$or':_['map'](_0x487fef,function(_0x1bd4a6){if(_0x1bd4a6[_0x48ff('0x4e')]!=='VIRTUAL'){var _0x4fdcf9={};_0x4fdcf9[_0x1bd4a6[_0x48ff('0x3b')]]={'$like':'%'+_0x49bd8c[_0x48ff('0x41')][_0x48ff('0x4c')]+'%'};return _0x4fdcf9;}})});}_0x1415c7=_['merge']({},_0x1415c7,_0x49bd8c[_0x48ff('0x4f')]);var _0x49525d={'where':_0x1415c7['where']};return db[_0x48ff('0x3e')][_0x48ff('0x33')](_0x49525d)[_0x48ff('0x38')](function(_0x44acf1){_0x309fc2[_0x48ff('0x33')]=_0x44acf1;if(_0x49bd8c[_0x48ff('0x41')][_0x48ff('0x50')]){_0x1415c7[_0x48ff('0x51')]=[{'all':!![]}];}return db['SmsMessage'][_0x48ff('0x52')](_0x1415c7);})[_0x48ff('0x38')](function(_0x46277d){_0x309fc2[_0x48ff('0x53')]=_0x46277d;return _0x309fc2;})['then'](respondWithFilteredResult(_0x907224,_0x1415c7))['catch'](handleError(_0x907224,null));};exports[_0x48ff('0x54')]=function(_0x1fe92f,_0x36d7f0){var _0x319955={'raw':!![],'where':{'id':_0x1fe92f[_0x48ff('0x55')]['id']}},_0x4aa32d={};_0x4aa32d[_0x48ff('0x56')]=_[_0x48ff('0x42')](db[_0x48ff('0x3e')][_0x48ff('0x57')]);_0x4aa32d[_0x48ff('0x41')]=_[_0x48ff('0x42')](_0x1fe92f[_0x48ff('0x41')]);_0x4aa32d[_0x48ff('0x4b')]=_[_0x48ff('0x43')](_0x4aa32d['model'],_0x4aa32d['query']);_0x319955[_0x48ff('0x44')]=_['intersection'](_0x4aa32d[_0x48ff('0x56')],qs['fields'](_0x1fe92f[_0x48ff('0x41')]['fields']));_0x319955[_0x48ff('0x44')]=_0x319955[_0x48ff('0x44')]['length']?_0x319955['attributes']:_0x4aa32d['model'];if(_0x1fe92f[_0x48ff('0x41')][_0x48ff('0x50')]){_0x319955[_0x48ff('0x51')]=[{'all':!![]}];}_0x319955=_[_0x48ff('0x4d')]({},_0x319955,_0x1fe92f[_0x48ff('0x4f')]);return db[_0x48ff('0x3e')][_0x48ff('0x58')](_0x319955)[_0x48ff('0x38')](handleEntityNotFound(_0x36d7f0,null))['then'](respondWithResult(_0x36d7f0,null))[_0x48ff('0x2b')](handleError(_0x36d7f0,null));};exports[_0x48ff('0x59')]=function(_0x42b290,_0x4235bc){return db[_0x48ff('0x3e')][_0x48ff('0x59')](_0x42b290[_0x48ff('0x5a')],{})[_0x48ff('0x38')](respondWithResult(_0x4235bc,0xc9))['catch'](handleError(_0x4235bc,null));};exports['update']=function(_0x308851,_0x449f4d){if(_0x308851[_0x48ff('0x5a')]['id']){delete _0x308851[_0x48ff('0x5a')]['id'];}return db[_0x48ff('0x3e')]['find']({'where':{'id':_0x308851[_0x48ff('0x55')]['id']}})['then'](handleEntityNotFound(_0x449f4d,null))[_0x48ff('0x38')](saveUpdates(_0x308851[_0x48ff('0x5a')],null))[_0x48ff('0x38')](respondWithResult(_0x449f4d,null))[_0x48ff('0x2b')](handleError(_0x449f4d,null));};exports[_0x48ff('0x39')]=function(_0x374a59,_0x589e71){return db[_0x48ff('0x3e')]['find']({'where':{'id':_0x374a59[_0x48ff('0x55')]['id']}})['then'](handleEntityNotFound(_0x589e71,null))[_0x48ff('0x38')](removeEntity(_0x589e71,null))[_0x48ff('0x2b')](handleError(_0x589e71,null));};exports['describe']=function(_0x4a7293,_0x3440b3){return db[_0x48ff('0x3e')]['describe']()['then'](respondWithResult(_0x3440b3,null))[_0x48ff('0x2b')](handleError(_0x3440b3,null));};var interaction_log=require(_0x48ff('0x14'))('sms-interactions');exports[_0x48ff('0x5b')]=function(_0x26e902,_0x5dd5ce,_0x1a303f){var _0x24026e={'agent':{},'channel':_0x48ff('0x5c')};if(_0x26e902[_0x48ff('0x5a')]['id']){delete _0x26e902[_0x48ff('0x5a')]['id'];}_0x26e902[_0x48ff('0x5a')][_0x48ff('0x5d')]=!![];_0x26e902[_0x48ff('0x5a')][_0x48ff('0x5e')]=moment()[_0x48ff('0x5f')](_0x48ff('0x60'));_0x26e902['body']['UserId']=_0x26e902[_0x48ff('0x5a')][_0x48ff('0x61')]||_0x26e902['user']['id'];_0x24026e['agent']['id']=_0x26e902[_0x48ff('0x5a')][_0x48ff('0x61')];return db['SmsMessage'][_0x48ff('0x58')]({'where':{'id':_0x26e902[_0x48ff('0x55')]['id'],'UserId':null}})[_0x48ff('0x38')](handleEntityNotFound(_0x5dd5ce,null))[_0x48ff('0x38')](saveUpdates(_0x26e902[_0x48ff('0x5a')],null))[_0x48ff('0x38')](function(_0x315413){if(_0x315413){_0x24026e[_0x48ff('0x28')]=_0x315413['get']({'plain':!![]});return db[_0x48ff('0x62')][_0x48ff('0x58')]({'where':{'id':_0x315413[_0x48ff('0x63')]}});}return null;})[_0x48ff('0x38')](handleEntityNotFound(_0x5dd5ce,null))[_0x48ff('0x38')](function(_0x5a9bfc){if(_0x5a9bfc){return _0x5a9bfc[_0x48ff('0x64')]({'UserId':_0x26e902[_0x48ff('0x5a')][_0x48ff('0x61')],'read1stAt':_[_0x48ff('0x65')](_0x5a9bfc[_0x48ff('0x66')])?moment()[_0x48ff('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x48ff('0x38')](function(_0x3ef9c6){if(_0x3ef9c6){_0x24026e[_0x48ff('0x67')]=_0x3ef9c6[_0x48ff('0x68')]({'plain':!![]});interaction_log[_0x48ff('0x23')](_0x48ff('0x69'),_0x26e902[_0x48ff('0x6a')]['id'],_0x26e902[_0x48ff('0x6a')][_0x48ff('0x3b')],_0x26e902[_0x48ff('0x6a')][_0x48ff('0x6b')],_0x24026e[_0x48ff('0x67')]['id'],_0x26e902[_0x48ff('0x5a')]?JSON[_0x48ff('0x26')](_0x26e902[_0x48ff('0x5a')]):_0x48ff('0x6c'));return respondWithRpcPromise('AcceptMessage',_0x48ff('0x6d'),_0x24026e);}return null;})[_0x48ff('0x38')](function(_0xd8eafc){var _0x21f422='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xd8eafc[_0x48ff('0x28')][_0x48ff('0x6e')];return db[_0x48ff('0x6f')][_0x48ff('0x41')](_0x21f422,{'type':db['Sequelize'][_0x48ff('0x70')]['SELECT'],'raw':!![]})['then'](function(_0x3d50d3){return _0x3d50d3;});})[_0x48ff('0x38')](function(_0x407ccb){if(_0x407ccb){_0x24026e[_0x48ff('0x28')][_0x48ff('0x71')]=_0x407ccb[0x0];if(!_0x26e902[_0x48ff('0x5a')][_0x48ff('0x61')])return;return db[_0x48ff('0x72')][_0x48ff('0x58')]({'where':{'id':_0x26e902[_0x48ff('0x5a')][_0x48ff('0x61')],'role':_0x48ff('0x73')},'attributes':['id','name',_0x48ff('0x74'),'email',_0x48ff('0x75')],'raw':!![]});}return null;})[_0x48ff('0x38')](function(_0x5603ef){if(!_0x5603ef)return null;_0x24026e[_0x48ff('0x28')][_0x48ff('0x73')]=_0x5603ef;return _0x24026e;})[_0x48ff('0x38')](function(_0x21c46f){if(_0x21c46f){if(_0x26e902[_0x48ff('0x5a')][_0x48ff('0x76')]){_0x24026e[_0x48ff('0x28')]['interface']=util[_0x48ff('0x5f')](_0x48ff('0x77'),_0x26e902['user'][_0x48ff('0x3b')]);_0x24026e[_0x48ff('0x28')][_0x48ff('0x78')]=_0x24026e[_0x48ff('0x78')];_0x24026e[_0x48ff('0x28')][_0x48ff('0x79')]=_0x24026e[_0x48ff('0x78')];_0x24026e['message'][_0x48ff('0x7a')]=_0x48ff('0x5b');return respondWithRpcPromise(_0x48ff('0x7b'),_0x48ff('0x7b'),{'event':'acceptmessage','message':_0x24026e[_0x48ff('0x28')]},client9002)['then'](function(){return _0x24026e;});}return _0x24026e;}return null;})[_0x48ff('0x38')](respondWithResult(_0x5dd5ce,null))[_0x48ff('0x2b')](handleError(_0x5dd5ce,null));};var interaction_log=require(_0x48ff('0x14'))(_0x48ff('0x7c'));exports[_0x48ff('0x36')]=function(_0x3870d2,_0x5e84f1,_0x59c94b){var _0x144fd2={'agent':{},'channel':'sms'};if(_0x3870d2[_0x48ff('0x5a')]['id']){delete _0x3870d2[_0x48ff('0x5a')]['id'];}_0x3870d2[_0x48ff('0x5a')][_0x48ff('0x61')]=_0x3870d2[_0x48ff('0x5a')][_0x48ff('0x61')]||_0x3870d2[_0x48ff('0x6a')]['id'];_0x144fd2[_0x48ff('0x73')]['id']=_0x3870d2[_0x48ff('0x5a')]['UserId'];return db[_0x48ff('0x3e')][_0x48ff('0x58')]({'where':{'id':_0x3870d2[_0x48ff('0x55')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5e84f1,null))[_0x48ff('0x38')](function(_0x11c74b){if(_0x11c74b){_0x144fd2[_0x48ff('0x28')]=_0x11c74b[_0x48ff('0x68')]({'plain':!![]});return db[_0x48ff('0x62')][_0x48ff('0x58')]({'where':{'id':_0x11c74b[_0x48ff('0x63')]}});}return null;})[_0x48ff('0x38')](handleEntityNotFound(_0x5e84f1,null))[_0x48ff('0x38')](function(_0x256b6a){if(_0x256b6a){_0x144fd2[_0x48ff('0x67')]=_0x256b6a[_0x48ff('0x68')]({'plain':!![]});interaction_log[_0x48ff('0x23')](_0x48ff('0x7d'),_0x3870d2[_0x48ff('0x6a')]['id'],_0x3870d2[_0x48ff('0x6a')][_0x48ff('0x3b')],_0x3870d2[_0x48ff('0x6a')][_0x48ff('0x6b')],_0x144fd2[_0x48ff('0x67')]['id'],_0x3870d2['body']?JSON[_0x48ff('0x26')](_0x3870d2[_0x48ff('0x5a')]):_0x48ff('0x6c'));return respondWithRpcPromise('RejectMessage',_0x48ff('0x7e'),_0x144fd2);}return null;})[_0x48ff('0x38')](function(_0x2715da){var _0x2fbb10=_0x48ff('0x7f')+_0x2715da['message'][_0x48ff('0x6e')];return db[_0x48ff('0x6f')][_0x48ff('0x41')](_0x2fbb10,{'type':db['Sequelize'][_0x48ff('0x70')][_0x48ff('0x80')],'raw':!![]})[_0x48ff('0x38')](function(_0x21fee8){return _0x21fee8;});})[_0x48ff('0x38')](function(_0x2bff32){if(_0x2bff32){_0x144fd2[_0x48ff('0x28')][_0x48ff('0x71')]=_0x2bff32[0x0];if(!_0x3870d2['body'][_0x48ff('0x61')])return;return db[_0x48ff('0x72')][_0x48ff('0x58')]({'where':{'id':_0x3870d2[_0x48ff('0x5a')]['UserId'],'role':_0x48ff('0x73')},'attributes':['id',_0x48ff('0x3b'),'fullname',_0x48ff('0x81'),_0x48ff('0x75')],'raw':!![]});}return null;})['then'](function(_0x1222aa){if(!_0x1222aa)return null;_0x144fd2[_0x48ff('0x28')]['agent']=_0x1222aa;return _0x144fd2;})[_0x48ff('0x38')](function(_0x2d9766){if(_0x2d9766){_0x2d9766['message'][_0x48ff('0x82')]=util[_0x48ff('0x5f')]('SIP/%s',_0x3870d2[_0x48ff('0x6a')][_0x48ff('0x3b')]);_0x2d9766['message'][_0x48ff('0x78')]=_0x144fd2[_0x48ff('0x78')];_0x2d9766[_0x48ff('0x28')][_0x48ff('0x79')]=_0x144fd2[_0x48ff('0x78')];_0x2d9766[_0x48ff('0x28')]['event']=_0x48ff('0x36');respondWithRpcPromise('EventManager','EventManager',{'event':_0x48ff('0x83'),'message':_0x2d9766[_0x48ff('0x28')]},client9002);return _0x144fd2;}return null;})['then'](respondWithResult(_0x5e84f1,null))[_0x48ff('0x2b')](handleError(_0x5e84f1,null));};exports[_0x48ff('0x2d')]=function(_0x164f7a,_0xd737b0,_0xabfd5f){if(_0x164f7a[_0x48ff('0x5a')]['id']){delete _0x164f7a[_0x48ff('0x5a')]['id'];}var _0x107d6f;return db[_0x48ff('0x3e')][_0x48ff('0x58')]({'where':{'id':_0x164f7a['params']['id']}})[_0x48ff('0x38')](handleEntityNotFound(_0xd737b0,null))[_0x48ff('0x38')](function(_0x43db5e){if(_0x43db5e){_0x107d6f=_0x43db5e;return db[_0x48ff('0x84')][_0x48ff('0x58')]({'where':{'id':_0x43db5e['SmsAccountId']}});}})[_0x48ff('0x38')](handleEntityNotFound(_0xd737b0,null))[_0x48ff('0x38')](function(_0x1f3b67){if(_0x1f3b67){logger[_0x48ff('0x25')](_0x48ff('0x85'),_0x48ff('0x2d'),_0x48ff('0x86'),_0x1f3b67['type'],util[_0x48ff('0x87')](_0x164f7a[_0x48ff('0x5a')],{'showHidden':![],'depth':null}));switch(_0x1f3b67[_0x48ff('0x4e')]){case _0x48ff('0x88'):if(_0x164f7a[_0x48ff('0x5a')][_0x48ff('0x89')]&&_0x164f7a[_0x48ff('0x5a')][_0x48ff('0x89')]===_0x107d6f[_0x48ff('0x8a')]){return _0x107d6f[_0x48ff('0x64')]({'read':!![]});}else{logger[_0x48ff('0x27')](_0x48ff('0x8b'),'status',_0x48ff('0x88'),util['inspect'](_0x164f7a['body'],{'showHidden':![],'depth':null}));}break;case _0x48ff('0x8c'):if(_0x164f7a[_0x48ff('0x5a')][_0x48ff('0x8d')]&&_0x164f7a['body']['MessageUUID']===_0x107d6f[_0x48ff('0x8a')]&&_[_0x48ff('0x8e')]([_0x48ff('0x8f'),_0x48ff('0x90')],_0x164f7a['body'][_0x48ff('0x91')])>=0x0){return _0x107d6f[_0x48ff('0x64')]({'read':!![]});}else{logger['error'](_0x48ff('0x8b'),_0x48ff('0x2d'),'plivio',util[_0x48ff('0x87')](_0x164f7a['body'],{'showHidden':![],'depth':null}));}break;case _0x48ff('0x92'):var _0x99f468=_0x164f7a['body'][_0x48ff('0x93')][0x0];if(_0x99f468[_0x48ff('0x2d')][_0x48ff('0x94')]===_0x48ff('0x95')){return _0x107d6f[_0x48ff('0x64')]({'read':!![]});}else{logger[_0x48ff('0x27')](_0x48ff('0x8b'),_0x48ff('0x2d'),'infobip',util[_0x48ff('0x87')](_0x164f7a[_0x48ff('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x107d6f;}})[_0x48ff('0x38')](respondWithResult(_0xd737b0,null))[_0x48ff('0x2b')](handleError(_0xd737b0,null));};
\ No newline at end of file
+var _0xd481=['EventManager','acceptmessage','sms-interactions','reject','SmsInteraction','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','rejectMessage','SELECT','rejectmessage','SmsAccount','SmsAccountId','debug','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','indexOf','sent','delivered','plivio','results','groupName','DELIVERED','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','jayson/promise','client','http','request','then','info','SmsMessage,\x20%s,\x20%s','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','save','update','destroy','stack','name','send','index','map','SmsMessage','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','fields','length','create','body','find','describe','accept','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','get','SmsInteractionId','isNil','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','agent','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xd481,0x1e4));var _0x1d48=function(_0x2bb7b3,_0x4a636d){_0x2bb7b3=_0x2bb7b3-0x0;var _0x39f414=_0xd481[_0x2bb7b3];return _0x39f414;};'use strict';var emlformat=require(_0x1d48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1d48('0x1'));var jsonpatch=require(_0x1d48('0x2'));var rp=require('request-promise');var moment=require(_0x1d48('0x3'));var BPromise=require(_0x1d48('0x4'));var Mustache=require(_0x1d48('0x5'));var util=require('util');var path=require(_0x1d48('0x6'));var sox=require('sox');var csv=require(_0x1d48('0x7'));var ejs=require(_0x1d48('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x1d48('0x9'));var squel=require(_0x1d48('0xa'));var crypto=require(_0x1d48('0xb'));var jsforce=require(_0x1d48('0xc'));var deskjs=require(_0x1d48('0xd'));var toCsv=require(_0x1d48('0x7'));var querystring=require(_0x1d48('0xe'));var Papa=require(_0x1d48('0xf'));var Redis=require(_0x1d48('0x10'));var authService=require(_0x1d48('0x11'));var qs=require(_0x1d48('0x12'));var as=require(_0x1d48('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x1d48('0x14'))(_0x1d48('0x15'));var utils=require(_0x1d48('0x16'));var config=require(_0x1d48('0x17'));var licenseUtil=require(_0x1d48('0x18'));var db=require(_0x1d48('0x19'))['db'];config[_0x1d48('0x1a')]=_[_0x1d48('0x1b')](config[_0x1d48('0x1a')],{'host':_0x1d48('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1d48('0x1a')]));require('./smsMessage.socket')[_0x1d48('0x1d')](socket);var jayson=require(_0x1d48('0x1e'));var client=jayson[_0x1d48('0x1f')][_0x1d48('0x20')]({'port':0x232c});var client9002=jayson['client'][_0x1d48('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x2e2748,_0x27fd35,_0x4d6bd0,_0x1789af){return new BPromise(function(_0x433c92,_0x1b99e2){var _0x1b60d4=_0x1789af||client;return _0x1b60d4[_0x1d48('0x21')](_0x2e2748,_0x4d6bd0)[_0x1d48('0x22')](function(_0x1bcd95){logger[_0x1d48('0x23')](_0x1d48('0x24'),_0x27fd35,'request\x20sent');logger['debug'](_0x1d48('0x25'),_0x27fd35,_0x1d48('0x26'),JSON[_0x1d48('0x27')](_0x1bcd95));if(_0x1bcd95[_0x1d48('0x28')]){if(_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x29')]===0x1f4){logger[_0x1d48('0x28')](_0x1d48('0x24'),_0x27fd35,_0x1bcd95['error'][_0x1d48('0x2a')]);return _0x1b99e2(_0x1bcd95[_0x1d48('0x28')]['message']);}logger['error'](_0x1d48('0x24'),_0x27fd35,_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x2a')]);return _0x433c92(_0x1bcd95[_0x1d48('0x28')][_0x1d48('0x2a')]);}else{logger[_0x1d48('0x23')](_0x1d48('0x24'),_0x27fd35,_0x1d48('0x26'));_0x433c92(_0x1bcd95[_0x1d48('0x2b')][_0x1d48('0x2a')]);}})['catch'](function(_0x4e44eb){logger[_0x1d48('0x28')](_0x1d48('0x24'),_0x27fd35,_0x4e44eb);_0x1b99e2(_0x4e44eb);});});}function respondWithStatusCode(_0x42f8f6,_0x2bf773){_0x2bf773=_0x2bf773||0xcc;return function(_0x228276){if(_0x228276){return _0x42f8f6[_0x1d48('0x2c')](_0x2bf773);}return _0x42f8f6['status'](_0x2bf773)['end']();};}function respondWithResult(_0x187b34,_0x280505){_0x280505=_0x280505||0xc8;return function(_0x4d3f91){if(_0x4d3f91){return _0x187b34[_0x1d48('0x2d')](_0x280505)[_0x1d48('0x2e')](_0x4d3f91);}};}function respondWithFilteredResult(_0xb4d9c7,_0xccc388){return function(_0x5a3ed5){if(_0x5a3ed5){var _0x4cac26=typeof _0xccc388[_0x1d48('0x2f')]===_0x1d48('0x30')&&typeof _0xccc388[_0x1d48('0x31')]===_0x1d48('0x30');var _0x542998=_0x5a3ed5[_0x1d48('0x32')];var _0x3dee70=_0x4cac26?0x0:_0xccc388[_0x1d48('0x2f')];var _0x25408e=_0x4cac26?_0x5a3ed5[_0x1d48('0x32')]:_0xccc388['offset']+_0xccc388[_0x1d48('0x31')];var _0xa3b0ed;if(_0x25408e>=_0x542998){_0x25408e=_0x542998;_0xa3b0ed=0xc8;}else{_0xa3b0ed=0xce;}_0xb4d9c7[_0x1d48('0x2d')](_0xa3b0ed);return _0xb4d9c7['set'](_0x1d48('0x33'),_0x3dee70+'-'+_0x25408e+'/'+_0x542998)['json'](_0x5a3ed5);}return null;};}function patchUpdates(_0x5a2670){return function(_0x3abd42){try{jsonpatch[_0x1d48('0x34')](_0x3abd42,_0x5a2670,!![]);}catch(_0x2c4527){return BPromise['reject'](_0x2c4527);}return _0x3abd42[_0x1d48('0x35')]();};}function saveUpdates(_0x373b6b,_0x5e76bb){return function(_0x2648d8){if(_0x2648d8){return _0x2648d8[_0x1d48('0x36')](_0x373b6b)[_0x1d48('0x22')](function(_0x4e5286){return _0x4e5286;});}return null;};}function removeEntity(_0x3c6e09,_0x51093f){return function(_0x3e434c){if(_0x3e434c){return _0x3e434c[_0x1d48('0x37')]()[_0x1d48('0x22')](function(){_0x3c6e09['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1fe453,_0x165032){return function(_0x1b8e57){if(!_0x1b8e57){_0x1fe453[_0x1d48('0x2c')](0x194);}return _0x1b8e57;};}function handleError(_0x292483,_0x16493d){_0x16493d=_0x16493d||0x1f4;return function(_0x1df1e9){logger[_0x1d48('0x28')](_0x1df1e9[_0x1d48('0x38')]);if(_0x1df1e9[_0x1d48('0x39')]){delete _0x1df1e9[_0x1d48('0x39')];}_0x292483[_0x1d48('0x2d')](_0x16493d)[_0x1d48('0x3a')](_0x1df1e9);};}exports[_0x1d48('0x3b')]=function(_0x458ec3,_0x992e36){var _0x296a4={},_0xb3c168={},_0x58c430={'count':0x0,'rows':[]};var _0x2e5f3f=_[_0x1d48('0x3c')](db[_0x1d48('0x3d')][_0x1d48('0x3e')],function(_0x78ca07){return{'name':_0x78ca07[_0x1d48('0x3f')],'type':_0x78ca07[_0x1d48('0x40')][_0x1d48('0x41')]};});_0xb3c168[_0x1d48('0x42')]=_['map'](_0x2e5f3f,_0x1d48('0x39'));_0xb3c168['query']=_[_0x1d48('0x43')](_0x458ec3[_0x1d48('0x44')]);_0xb3c168['filters']=_[_0x1d48('0x45')](_0xb3c168[_0x1d48('0x42')],_0xb3c168[_0x1d48('0x44')]);_0x296a4[_0x1d48('0x46')]=_[_0x1d48('0x45')](_0xb3c168[_0x1d48('0x42')],qs['fields'](_0x458ec3['query']['fields']));_0x296a4[_0x1d48('0x46')]=_0x296a4[_0x1d48('0x46')]['length']?_0x296a4[_0x1d48('0x46')]:_0xb3c168[_0x1d48('0x42')];if(!_0x458ec3['query'][_0x1d48('0x47')](_0x1d48('0x48'))){_0x296a4[_0x1d48('0x31')]=qs['limit'](_0x458ec3['query'][_0x1d48('0x31')]);_0x296a4[_0x1d48('0x2f')]=qs[_0x1d48('0x2f')](_0x458ec3['query'][_0x1d48('0x2f')]);}_0x296a4['order']=qs[_0x1d48('0x49')](_0x458ec3[_0x1d48('0x44')][_0x1d48('0x49')]);_0x296a4[_0x1d48('0x4a')]=qs[_0x1d48('0x4b')](_[_0x1d48('0x4c')](_0x458ec3['query'],_0xb3c168[_0x1d48('0x4b')]),_0x2e5f3f);if(_0x458ec3[_0x1d48('0x44')][_0x1d48('0x4d')]){_0x296a4[_0x1d48('0x4a')]=_[_0x1d48('0x4e')](_0x296a4[_0x1d48('0x4a')],{'$or':_[_0x1d48('0x3c')](_0x2e5f3f,function(_0x3c9b15){if(_0x3c9b15[_0x1d48('0x40')]!==_0x1d48('0x4f')){var _0xc293f0={};_0xc293f0[_0x3c9b15[_0x1d48('0x39')]]={'$like':'%'+_0x458ec3['query'][_0x1d48('0x4d')]+'%'};return _0xc293f0;}})});}_0x296a4=_['merge']({},_0x296a4,_0x458ec3[_0x1d48('0x50')]);var _0x2e38fd={'where':_0x296a4[_0x1d48('0x4a')]};return db['SmsMessage']['count'](_0x2e38fd)[_0x1d48('0x22')](function(_0x3e2420){_0x58c430['count']=_0x3e2420;if(_0x458ec3[_0x1d48('0x44')][_0x1d48('0x51')]){_0x296a4[_0x1d48('0x52')]=[{'all':!![]}];}return db[_0x1d48('0x3d')][_0x1d48('0x53')](_0x296a4);})[_0x1d48('0x22')](function(_0x4f9692){_0x58c430[_0x1d48('0x54')]=_0x4f9692;return _0x58c430;})[_0x1d48('0x22')](respondWithFilteredResult(_0x992e36,_0x296a4))[_0x1d48('0x55')](handleError(_0x992e36,null));};exports['show']=function(_0x2f2a0f,_0x18230a){var _0x430ddf={'raw':!![],'where':{'id':_0x2f2a0f[_0x1d48('0x56')]['id']}},_0x146956={};_0x146956[_0x1d48('0x42')]=_[_0x1d48('0x43')](db['SmsMessage']['rawAttributes']);_0x146956[_0x1d48('0x44')]=_[_0x1d48('0x43')](_0x2f2a0f[_0x1d48('0x44')]);_0x146956['filters']=_['intersection'](_0x146956['model'],_0x146956['query']);_0x430ddf[_0x1d48('0x46')]=_[_0x1d48('0x45')](_0x146956[_0x1d48('0x42')],qs[_0x1d48('0x57')](_0x2f2a0f[_0x1d48('0x44')][_0x1d48('0x57')]));_0x430ddf[_0x1d48('0x46')]=_0x430ddf[_0x1d48('0x46')][_0x1d48('0x58')]?_0x430ddf[_0x1d48('0x46')]:_0x146956[_0x1d48('0x42')];if(_0x2f2a0f[_0x1d48('0x44')][_0x1d48('0x51')]){_0x430ddf['include']=[{'all':!![]}];}_0x430ddf=_['merge']({},_0x430ddf,_0x2f2a0f[_0x1d48('0x50')]);return db['SmsMessage']['find'](_0x430ddf)['then'](handleEntityNotFound(_0x18230a,null))[_0x1d48('0x22')](respondWithResult(_0x18230a,null))['catch'](handleError(_0x18230a,null));};exports[_0x1d48('0x59')]=function(_0x1684ef,_0x260fc6){return db[_0x1d48('0x3d')][_0x1d48('0x59')](_0x1684ef[_0x1d48('0x5a')],{})[_0x1d48('0x22')](respondWithResult(_0x260fc6,0xc9))['catch'](handleError(_0x260fc6,null));};exports[_0x1d48('0x36')]=function(_0x3dd918,_0x1c3b13){if(_0x3dd918[_0x1d48('0x5a')]['id']){delete _0x3dd918[_0x1d48('0x5a')]['id'];}return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x3dd918['params']['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x1c3b13,null))['then'](saveUpdates(_0x3dd918[_0x1d48('0x5a')],null))['then'](respondWithResult(_0x1c3b13,null))[_0x1d48('0x55')](handleError(_0x1c3b13,null));};exports['destroy']=function(_0x17eb32,_0x46aec6){return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x17eb32[_0x1d48('0x56')]['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x46aec6,null))[_0x1d48('0x22')](removeEntity(_0x46aec6,null))[_0x1d48('0x55')](handleError(_0x46aec6,null));};exports[_0x1d48('0x5c')]=function(_0xdadc9,_0x2a8038){return db['SmsMessage'][_0x1d48('0x5c')]()[_0x1d48('0x22')](respondWithResult(_0x2a8038,null))['catch'](handleError(_0x2a8038,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0x1d48('0x5d')]=function(_0x1f2dc8,_0x34bc2a,_0x30cecf){var _0x524c7f={'agent':{},'channel':'sms'};if(_0x1f2dc8[_0x1d48('0x5a')]['id']){delete _0x1f2dc8['body']['id'];}_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x5e')]=!![];_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x5f')]=moment()[_0x1d48('0x60')](_0x1d48('0x61'));_0x1f2dc8['body'][_0x1d48('0x62')]=_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')]||_0x1f2dc8[_0x1d48('0x63')]['id'];_0x524c7f['agent']['id']=_0x1f2dc8['body']['UserId'];return db[_0x1d48('0x3d')]['find']({'where':{'id':_0x1f2dc8[_0x1d48('0x56')]['id'],'UserId':null}})[_0x1d48('0x22')](handleEntityNotFound(_0x34bc2a,null))[_0x1d48('0x22')](saveUpdates(_0x1f2dc8[_0x1d48('0x5a')],null))[_0x1d48('0x22')](function(_0x59dd6d){if(_0x59dd6d){_0x524c7f[_0x1d48('0x2a')]=_0x59dd6d[_0x1d48('0x64')]({'plain':!![]});return db['SmsInteraction'][_0x1d48('0x5b')]({'where':{'id':_0x59dd6d[_0x1d48('0x65')]}});}return null;})['then'](handleEntityNotFound(_0x34bc2a,null))[_0x1d48('0x22')](function(_0x31c5d8){if(_0x31c5d8){return _0x31c5d8['update']({'UserId':_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')],'read1stAt':_[_0x1d48('0x66')](_0x31c5d8['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0xd106d1){if(_0xd106d1){_0x524c7f[_0x1d48('0x67')]=_0xd106d1[_0x1d48('0x64')]({'plain':!![]});interaction_log[_0x1d48('0x23')](_0x1d48('0x68'),_0x1f2dc8['user']['id'],_0x1f2dc8[_0x1d48('0x63')]['name'],_0x1f2dc8['user'][_0x1d48('0x69')],_0x524c7f[_0x1d48('0x67')]['id'],_0x1f2dc8[_0x1d48('0x5a')]?JSON[_0x1d48('0x27')](_0x1f2dc8[_0x1d48('0x5a')]):'null');return respondWithRpcPromise(_0x1d48('0x6a'),'acceptMessage',_0x524c7f);}return null;})[_0x1d48('0x22')](function(_0x4cb827){var _0x16d705=_0x1d48('0x6b')+_0x4cb827[_0x1d48('0x2a')][_0x1d48('0x6c')];return db[_0x1d48('0x6d')][_0x1d48('0x44')](_0x16d705,{'type':db[_0x1d48('0x6e')][_0x1d48('0x6f')]['SELECT'],'raw':!![]})[_0x1d48('0x22')](function(_0x4c9bb6){return _0x4c9bb6;});})[_0x1d48('0x22')](function(_0x52c818){if(_0x52c818){_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x70')]=_0x52c818[0x0];if(!_0x1f2dc8[_0x1d48('0x5a')]['UserId'])return;return db[_0x1d48('0x71')][_0x1d48('0x5b')]({'where':{'id':_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x62')],'role':_0x1d48('0x72')},'attributes':['id',_0x1d48('0x39'),_0x1d48('0x73'),_0x1d48('0x74'),_0x1d48('0x75')],'raw':!![]});}return null;})[_0x1d48('0x22')](function(_0x3c61f5){if(!_0x3c61f5)return null;_0x524c7f['message'][_0x1d48('0x72')]=_0x3c61f5;return _0x524c7f;})[_0x1d48('0x22')](function(_0x5a4780){if(_0x5a4780){if(_0x1f2dc8[_0x1d48('0x5a')][_0x1d48('0x76')]){_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x77')]=util[_0x1d48('0x60')](_0x1d48('0x78'),_0x1f2dc8[_0x1d48('0x63')][_0x1d48('0x39')]);_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x79')]=_0x524c7f[_0x1d48('0x79')];_0x524c7f[_0x1d48('0x2a')][_0x1d48('0x7a')]=_0x524c7f[_0x1d48('0x79')];_0x524c7f['message'][_0x1d48('0x7b')]=_0x1d48('0x5d');return respondWithRpcPromise(_0x1d48('0x7c'),_0x1d48('0x7c'),{'event':_0x1d48('0x7d'),'message':_0x524c7f[_0x1d48('0x2a')]},client9002)[_0x1d48('0x22')](function(){return _0x524c7f;});}return _0x524c7f;}return null;})['then'](respondWithResult(_0x34bc2a,null))[_0x1d48('0x55')](handleError(_0x34bc2a,null));};var interaction_log=require('../../config/logger')(_0x1d48('0x7e'));exports[_0x1d48('0x7f')]=function(_0x35733f,_0xbb5e4e,_0x255514){var _0x160b44={'agent':{},'channel':'sms'};if(_0x35733f[_0x1d48('0x5a')]['id']){delete _0x35733f[_0x1d48('0x5a')]['id'];}_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')]=_0x35733f['body'][_0x1d48('0x62')]||_0x35733f[_0x1d48('0x63')]['id'];_0x160b44[_0x1d48('0x72')]['id']=_0x35733f['body'][_0x1d48('0x62')];return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x35733f['params']['id'],'UserId':null}})[_0x1d48('0x22')](handleEntityNotFound(_0xbb5e4e,null))[_0x1d48('0x22')](function(_0x1f1f65){if(_0x1f1f65){_0x160b44['message']=_0x1f1f65[_0x1d48('0x64')]({'plain':!![]});return db[_0x1d48('0x80')]['find']({'where':{'id':_0x1f1f65['SmsInteractionId']}});}return null;})[_0x1d48('0x22')](handleEntityNotFound(_0xbb5e4e,null))[_0x1d48('0x22')](function(_0xbd0e4e){if(_0xbd0e4e){_0x160b44[_0x1d48('0x67')]=_0xbd0e4e[_0x1d48('0x64')]({'plain':!![]});interaction_log[_0x1d48('0x23')](_0x1d48('0x81'),_0x35733f['user']['id'],_0x35733f[_0x1d48('0x63')]['name'],_0x35733f[_0x1d48('0x63')][_0x1d48('0x69')],_0x160b44[_0x1d48('0x67')]['id'],_0x35733f['body']?JSON[_0x1d48('0x27')](_0x35733f[_0x1d48('0x5a')]):_0x1d48('0x82'));return respondWithRpcPromise('RejectMessage',_0x1d48('0x83'),_0x160b44);}return null;})[_0x1d48('0x22')](function(_0x8026b4){var _0x5ca5cd=_0x1d48('0x6b')+_0x8026b4['message'][_0x1d48('0x6c')];return db['sequelize'][_0x1d48('0x44')](_0x5ca5cd,{'type':db[_0x1d48('0x6e')]['QueryTypes'][_0x1d48('0x84')],'raw':!![]})[_0x1d48('0x22')](function(_0x280519){return _0x280519;});})[_0x1d48('0x22')](function(_0x8d4b72){if(_0x8d4b72){_0x160b44[_0x1d48('0x2a')][_0x1d48('0x70')]=_0x8d4b72[0x0];if(!_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')])return;return db['User'][_0x1d48('0x5b')]({'where':{'id':_0x35733f[_0x1d48('0x5a')][_0x1d48('0x62')],'role':_0x1d48('0x72')},'attributes':['id',_0x1d48('0x39'),_0x1d48('0x73'),_0x1d48('0x74'),'internal'],'raw':!![]});}return null;})[_0x1d48('0x22')](function(_0x217bae){if(!_0x217bae)return null;_0x160b44['message'][_0x1d48('0x72')]=_0x217bae;return _0x160b44;})[_0x1d48('0x22')](function(_0xaad72e){if(_0xaad72e){_0xaad72e['message']['interface']=util[_0x1d48('0x60')](_0x1d48('0x78'),_0x35733f[_0x1d48('0x63')][_0x1d48('0x39')]);_0xaad72e[_0x1d48('0x2a')][_0x1d48('0x79')]=_0x160b44[_0x1d48('0x79')];_0xaad72e[_0x1d48('0x2a')][_0x1d48('0x7a')]=_0x160b44[_0x1d48('0x79')];_0xaad72e['message'][_0x1d48('0x7b')]=_0x1d48('0x7f');respondWithRpcPromise(_0x1d48('0x7c'),_0x1d48('0x7c'),{'event':_0x1d48('0x85'),'message':_0xaad72e[_0x1d48('0x2a')]},client9002);return _0x160b44;}return null;})['then'](respondWithResult(_0xbb5e4e,null))[_0x1d48('0x55')](handleError(_0xbb5e4e,null));};exports[_0x1d48('0x2d')]=function(_0x5db7d9,_0x2df347,_0x173aec){if(_0x5db7d9[_0x1d48('0x5a')]['id']){delete _0x5db7d9['body']['id'];}var _0x2606aa;return db[_0x1d48('0x3d')][_0x1d48('0x5b')]({'where':{'id':_0x5db7d9[_0x1d48('0x56')]['id']}})[_0x1d48('0x22')](handleEntityNotFound(_0x2df347,null))[_0x1d48('0x22')](function(_0x2b40c0){if(_0x2b40c0){_0x2606aa=_0x2b40c0;return db[_0x1d48('0x86')][_0x1d48('0x5b')]({'where':{'id':_0x2b40c0[_0x1d48('0x87')]}});}})[_0x1d48('0x22')](handleEntityNotFound(_0x2df347,null))[_0x1d48('0x22')](function(_0x3f4856){if(_0x3f4856){logger[_0x1d48('0x88')](_0x1d48('0x25'),'status',_0x1d48('0x89'),_0x3f4856[_0x1d48('0x40')],util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));switch(_0x3f4856['type']){case _0x1d48('0x8b'):if(_0x5db7d9[_0x1d48('0x5a')]['MessageSid']&&_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x8c')]===_0x2606aa[_0x1d48('0x8d')]){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),'status','twilio',util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;case _0x1d48('0x8f'):if(_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x90')]&&_0x5db7d9['body'][_0x1d48('0x90')]===_0x2606aa[_0x1d48('0x8d')]&&_[_0x1d48('0x91')]([_0x1d48('0x92'),_0x1d48('0x93')],_0x5db7d9[_0x1d48('0x5a')]['Status'])>=0x0){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),'status',_0x1d48('0x94'),util['inspect'](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;case'infobip':var _0x28bf94=_0x5db7d9[_0x1d48('0x5a')][_0x1d48('0x95')][0x0];if(_0x28bf94[_0x1d48('0x2d')][_0x1d48('0x96')]===_0x1d48('0x97')){return _0x2606aa[_0x1d48('0x36')]({'read':!![]});}else{logger[_0x1d48('0x28')](_0x1d48('0x8e'),_0x1d48('0x2d'),'infobip',util[_0x1d48('0x8a')](_0x5db7d9[_0x1d48('0x5a')],{'showHidden':![],'depth':null}));}break;}return _0x2606aa;}})[_0x1d48('0x22')](respondWithResult(_0x2df347,null))[_0x1d48('0x55')](handleError(_0x2df347,null));};
\ No newline at end of file
index bf969f1..7422def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2070=['SmsMessage','setMaxListeners','save','remove','emit','hook'];(function(_0x1e83fb,_0x295af8){var _0x27915f=function(_0x5b1815){while(--_0x5b1815){_0x1e83fb['push'](_0x1e83fb['shift']());}};_0x27915f(++_0x295af8);}(_0x2070,0x78));var _0x0207=function(_0x1eb7ce,_0x12ad57){_0x1eb7ce=_0x1eb7ce-0x0;var _0x60a83d=_0x2070[_0x1eb7ce];return _0x60a83d;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0x0207('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x0207('0x1')](0x0);var events={'afterCreate':_0x0207('0x2'),'afterUpdate':'update','afterDestroy':_0x0207('0x3')};function emitEvent(_0x2d904c){return function(_0x142b21,_0x4e3d59,_0x3b92bc){SmsMessageEvents[_0x0207('0x4')](_0x2d904c+':'+_0x142b21['id'],_0x142b21);SmsMessageEvents[_0x0207('0x4')](_0x2d904c,_0x142b21);_0x3b92bc(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsMessage[_0x0207('0x5')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x13e2=['save','update','remove','emit','hasOwnProperty','hook','events','SmsMessage','setMaxListeners'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x13e2,0x165));var _0x213e=function(_0x1d8383,_0x437a88){_0x1d8383=_0x1d8383-0x0;var _0x2316c2=_0x13e2[_0x1d8383];return _0x2316c2;};'use strict';var EventEmitter=require(_0x213e('0x0'));var SmsMessage=require('../../mysqldb')['db'][_0x213e('0x1')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0x213e('0x2')](0x0);var events={'afterCreate':_0x213e('0x3'),'afterUpdate':_0x213e('0x4'),'afterDestroy':_0x213e('0x5')};function emitEvent(_0x179536){return function(_0x345975,_0x1f85c7,_0x50f0d3){SmsMessageEvents[_0x213e('0x6')](_0x179536+':'+_0x345975['id'],_0x345975);SmsMessageEvents[_0x213e('0x6')](_0x179536,_0x345975);_0x50f0d3(null);};}for(var e in events){if(events[_0x213e('0x7')](e)){var event=events[e];SmsMessage[_0x213e('0x8')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index 1bbb613..5cf9e4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a74=['createdAt','catch','error','SmsAccount','find','type','twilio','authToken','messages','create','phone','/api/sms/messages/','/status?token=','sid','update','afterCreate','inspect','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','password','smsMethod','sender','login?username=','username','&password=','GET','split','sms','POST','user_key','deliveryReport','read','skebby','Missing\x20parameters:\x20username,\x20password','requestid','connectel','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','senderString','format','https://rest.clicksend.com/v3/sms/send','Basic\x20%s','toString','base64','http_code','data','queued_count','head','clickSend','plivo','%s:%s','https://api.plivo.com/v1/Account/%s/Message/','authId','message_uuid','Missing\x20parameters:\x20authId,\x20authToken','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','token','Missing\x20parameters:\x20base_url','crypto','login','timestamp','keys','length','createHash','md5','digest','signature=','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','apiMessageId','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','/messages','applicationId','apiKey','Bearer\x20','application/json','code','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','intelepeer','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','path','rimraf','./smsMessage.attributes','exports','define','SmsMessage','sms_messages','messageId','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','findOne','then'];(function(_0x1b71db,_0x223f67){var _0x47dfd1=function(_0x1aa0e8){while(--_0x1aa0e8){_0x1b71db['push'](_0x1b71db['shift']());}};_0x47dfd1(++_0x223f67);}(_0x1a74,0x1bf));var _0x41a7=function(_0x859d2,_0x70c7f1){_0x859d2=_0x859d2-0x0;var _0x3edc05=_0x1a74[_0x859d2];return _0x3edc05;};'use strict';var _=require(_0x41a7('0x0'));var util=require(_0x41a7('0x1'));var logger=require('../../config/logger')(_0x41a7('0x2'));var moment=require(_0x41a7('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x41a7('0x4'));var rimraf=require(_0x41a7('0x5'));var config=require('../../config/environment');var attributes=require(_0x41a7('0x6'));module[_0x41a7('0x7')]=function(_0x4c1214,_0x118f2e){return _0x4c1214[_0x41a7('0x8')](_0x41a7('0x9'),attributes,{'tableName':_0x41a7('0xa'),'paranoid':![],'indexes':[{'name':_0x41a7('0xb'),'fields':[_0x41a7('0xb')]},{'name':'fti_sms_messages','fields':[_0x41a7('0xc')],'type':_0x41a7('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x879086,_0x46a0b9,_0x4b5fe3){var _0x51baa4=_0x4c1214[_0x41a7('0xe')];var _0x46a501=_0x879086[_0x41a7('0xf')]({'plain':!![]});if(_0x46a501[_0x41a7('0x10')][_0x41a7('0x11')]()==='in'||_0x46a501[_0x41a7('0x10')]['toLowerCase']()===_0x41a7('0x12')&&!_0x46a501[_0x41a7('0x13')]&&!_[_0x41a7('0x14')](_0x46a501[_0x41a7('0x15')])&&!_[_0x41a7('0x14')](_0x46a501[_0x41a7('0x16')])){_0x51baa4['SmsInteraction'][_0x41a7('0x17')]({'where':{'id':_0x46a501[_0x41a7('0x16')]}})[_0x41a7('0x18')](function(_0x4d6c6a){if(_0x4d6c6a){_0x4d6c6a['update']({'lastMsgAt':_0x46a501[_0x41a7('0x19')],'lastMsgDirection':_0x46a501[_0x41a7('0x10')][_0x41a7('0x11')]()});}})[_0x41a7('0x1a')](function(_0x3cbe90){console[_0x41a7('0x1b')](_0x3cbe90);});}if(_0x46a501['direction']===_0x41a7('0x12')&&!_0x46a501[_0x41a7('0x13')]){var _0x4ec644;_0x51baa4[_0x41a7('0x1c')][_0x41a7('0x1d')]({'where':{'id':_0x46a501['SmsAccountId']},'raw':!![]})['then'](function(_0x17df4a){_0x4ec644=_0x17df4a;if(_0x4ec644&&_0x4ec644[_0x41a7('0x1e')]){switch(_0x4ec644[_0x41a7('0x1e')]){case'twilio':var _0x3fc34c=require(_0x41a7('0x1f'));if(_0x4ec644['accountSid']&&_0x4ec644['authToken']&&_0x4ec644['phone']){var _0x1494f4=new _0x3fc34c(_0x4ec644['accountSid'],_0x4ec644[_0x41a7('0x20')]);_0x1494f4[_0x41a7('0x21')][_0x41a7('0x22')]({'body':_0x46a501['body'],'to':_0x46a501[_0x41a7('0x23')],'from':_0x4ec644[_0x41a7('0x23')],'statusCallback':_0x4ec644['remote']+_0x41a7('0x24')+_0x46a501['id']+_0x41a7('0x25')+_0x4ec644['token']})['then'](function(_0x507e74){if(_0x507e74[_0x41a7('0x26')]){return _0x879086[_0x41a7('0x27')]({'messageId':_0x507e74[_0x41a7('0x26')]});}})[_0x41a7('0x1a')](function(_0x31d13c){logger[_0x41a7('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41a7('0x28'),_0x41a7('0x1f'),util[_0x41a7('0x29')](_0x31d13c,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x1f'),_0x41a7('0x2b'));}break;case'skebby':var _0x25155f='https://api.skebby.it/API/v1.0/REST/';if(_0x4ec644['username']&&_0x4ec644[_0x41a7('0x2c')]){var _0x47b52c={'recipient':[_0x46a501[_0x41a7('0x23')]],'message':_0x46a501[_0x41a7('0xc')],'message_type':_0x4ec644[_0x41a7('0x2d')]};if(_0x4ec644['smsMethod']&&_0x4ec644[_0x41a7('0x2d')]!=='SI'){_0x47b52c[_0x41a7('0x2e')]=_0x4ec644[_0x41a7('0x23')];}var _0x2720a6={'url':_0x25155f+_0x41a7('0x2f')+_0x4ec644[_0x41a7('0x30')]+_0x41a7('0x31')+_0x4ec644[_0x41a7('0x2c')],'method':_0x41a7('0x32')};rp(_0x2720a6)[_0x41a7('0x18')](function(_0x1609ab){var _0x308742=_0x1609ab[_0x41a7('0x33')](';');var _0x55f425={'user_key':_0x308742[0x0],'session_key':_0x308742[0x1]};_0x2720a6={'url':_0x25155f+_0x41a7('0x34'),'method':_0x41a7('0x35'),'headers':{'user_key':_0x55f425[_0x41a7('0x36')],'Session_key':_0x55f425['session_key']},'json':!![],'body':_0x47b52c};return rp(_0x2720a6);})[_0x41a7('0x18')](function(_0x47a676){if(_0x47a676['total_sent']>=0x1){var _0x3ab9e6={'messageId':_0x47a676['internal_order_id']};if(_0x4ec644[_0x41a7('0x2d')]!=='GP'||!_0x4ec644[_0x41a7('0x37')]){_0x3ab9e6[_0x41a7('0x38')]=!![];}return _0x879086['update'](_0x3ab9e6);}else{return logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),'skebby',util['inspect'](_0x47a676,{'showHidden':![],'depth':null}));}})['catch'](function(_0x5dcee2){return logger[_0x41a7('0x1b')](_0x41a7('0x2a'),'afterCreate','skebby',util[_0x41a7('0x29')](_0x5dcee2,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41a7('0x28'),_0x41a7('0x39'),_0x41a7('0x3a'));}break;case'connectel':if(_0x4ec644[_0x41a7('0x20')]){var _0xa68f0c={'recipient':_0x46a501[_0x41a7('0x23')],'message':_0x46a501[_0x41a7('0xc')],'sender':_0x4ec644['senderString']||_0x4ec644[_0x41a7('0x23')],'authorization':_0x4ec644['authToken']};var _0x46a0b9={'method':_0x41a7('0x35'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0xa68f0c,'json':!![]};rp(_0x46a0b9)[_0x41a7('0x18')](function(_0x57a962){var _0x229b9c={'messageId':_0x57a962[_0x41a7('0x3b')]};if(!_0x4ec644[_0x41a7('0x37')]){_0x229b9c['read']=!![];}return _0x879086[_0x41a7('0x27')](_0x229b9c);})['catch'](function(_0x511ab5){logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x3c'),util['inspect'](_0x511ab5,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x3c'),_0x41a7('0x3d'));}break;case _0x41a7('0x3e'):if(_0x4ec644[_0x41a7('0x30')]&&_0x4ec644[_0x41a7('0x2c')]){var _0xa68f0c={'messages':[{'source':_0x41a7('0x3f'),'to':_0x46a501['phone'],'body':_0x46a501[_0x41a7('0xc')],'from':_0x4ec644[_0x41a7('0x40')]||_0x4ec644['phone']}]};var _0x365702=util[_0x41a7('0x41')]('%s:%s',_0x4ec644[_0x41a7('0x30')],_0x4ec644['password']);var _0x46a0b9={'method':'POST','uri':_0x41a7('0x42'),'body':_0xa68f0c,'headers':{'Authorization':util['format'](_0x41a7('0x43'),new Buffer(_0x365702)[_0x41a7('0x44')](_0x41a7('0x45')))},'json':!![]};rp(_0x46a0b9)['then'](function(_0x59b3c7){if(_0x59b3c7[_0x41a7('0x46')]>=0xc8&&_0x59b3c7['http_code']<=0xce){if(_0x59b3c7[_0x41a7('0x47')]&&_0x59b3c7['data'][_0x41a7('0x48')]>0x0){var _0x58159d=_[_0x41a7('0x49')](_0x59b3c7[_0x41a7('0x47')][_0x41a7('0x21')]);var _0x257318={'messageId':_0x58159d['message_id']};if(!_0x4ec644[_0x41a7('0x37')]){_0x257318[_0x41a7('0x38')]=!![];}return _0x879086[_0x41a7('0x27')](_0x257318);}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),'afterCreate',_0x41a7('0x4a'),util[_0x41a7('0x29')](_0x59b3c7,{'showHidden':![],'depth':null}));}}else{logger['error'](_0x41a7('0x2a'),'afterCreate',_0x41a7('0x4a'),util['inspect'](_0x59b3c7,{'showHidden':![],'depth':null}));}})[_0x41a7('0x1a')](function(_0x50aaaa){logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x4a'),util[_0x41a7('0x29')](_0x50aaaa,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x4a'),_0x41a7('0x3a'));}break;case _0x41a7('0x4b'):if(_0x4ec644['authId']&&_0x4ec644[_0x41a7('0x20')]){var _0xa68f0c={'dst':_0x46a501[_0x41a7('0x23')],'text':_0x46a501[_0x41a7('0xc')],'src':_0x4ec644[_0x41a7('0x40')]||_0x4ec644[_0x41a7('0x23')],'url':_0x4ec644['remote']+'/api/sms/messages/'+_0x46a501['id']+_0x41a7('0x25')+_0x4ec644['token']};var _0x365702=util[_0x41a7('0x41')](_0x41a7('0x4c'),_0x4ec644['authId'],_0x4ec644[_0x41a7('0x20')]);var _0x46a0b9={'method':_0x41a7('0x35'),'uri':util[_0x41a7('0x41')](_0x41a7('0x4d'),_0x4ec644[_0x41a7('0x4e')]),'body':_0xa68f0c,'headers':{'Authorization':util['format'](_0x41a7('0x43'),new Buffer(_0x365702)[_0x41a7('0x44')]('base64'))},'json':!![]};rp(_0x46a0b9)['then'](function(_0x138b20){var _0x3034b1={'messageId':_0x138b20[_0x41a7('0x4f')][0x0]};return _0x879086[_0x41a7('0x27')](_0x3034b1);})['catch'](function(_0x49bd6a){logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),'plivo',util[_0x41a7('0x29')](_0x49bd6a,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x4b'),_0x41a7('0x50'));}break;case _0x41a7('0x51'):if(_0x4ec644[_0x41a7('0x30')]&&_0x4ec644['password']){if(_0x4ec644[_0x41a7('0x52')]){var _0x99a17a={'method':'POST','uri':_0x4ec644[_0x41a7('0x52')]+_0x41a7('0x53'),'body':{'username':_0x4ec644[_0x41a7('0x30')],'password':_0x4ec644['password']},'json':!![]};return rp(_0x99a17a)[_0x41a7('0x18')](function(_0x3b0aea){var _0x2fe6cd={'method':_0x41a7('0x35'),'uri':_0x4ec644['baseUrl']+_0x41a7('0x54'),'body':{'messages':[{'from':_0x4ec644[_0x41a7('0x23')],'destinations':[{'to':_0x46a501[_0x41a7('0x23')]}],'text':_0x46a501[_0x41a7('0xc')],'notifyUrl':_0x4ec644['remote']+_0x41a7('0x24')+_0x46a501['id']+'/status?token='+_0x4ec644['token'],'notifyContentType':'application/json','callbackData':_0x4ec644[_0x41a7('0x23')]+';'+_0x46a501[_0x41a7('0xc')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x3b0aea[_0x41a7('0x55')]},'json':!![]};return rp(_0x2fe6cd)[_0x41a7('0x18')](function(_0x5db740){if(_0x5db740[_0x41a7('0x21')]){var _0x3cd0ec={'messageId':_0x5db740['messages'][0x0][_0x41a7('0xb')]};if(!_0x4ec644[_0x41a7('0x37')]){_0x3cd0ec['read']=!![];}return _0x879086[_0x41a7('0x27')](_0x3cd0ec);}else{return logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x51'),util[_0x41a7('0x29')](_0x5db740,{'showHidden':![],'depth':null}));}});})[_0x41a7('0x1a')](function(_0xfb79f4){return logger['error'](_0x41a7('0x2a'),'afterCreate',_0x41a7('0x51'),util[_0x41a7('0x29')](_0xfb79f4,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x51'),_0x41a7('0x56'));}}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','infobip','Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x2ca2d2=require(_0x41a7('0x57'));if(_0x4ec644['apiKey']){var _0x5f4191={};_0x5f4191[_0x41a7('0x58')]=_0x4ec644['username'];_0x5f4191[_0x41a7('0x23')]=_0x46a501[_0x41a7('0x23')];_0x5f4191[_0x41a7('0x2e')]=_0x4ec644[_0x41a7('0x23')];_0x5f4191['text']=_0x46a501[_0x41a7('0xc')];_0x5f4191[_0x41a7('0x59')]=+new Date();var _0x252bf0='';var _0x30b06b='';var _0x31f8df=Object[_0x41a7('0x5a')](_0x5f4191);_0x31f8df['sort']();for(var _0x56e221=0x0;_0x56e221<_0x31f8df[_0x41a7('0x5b')];_0x56e221++){if(_0x252bf0!=''){_0x252bf0+='&';}_0x252bf0+=_0x31f8df[_0x56e221]+'='+encodeURIComponent(_0x5f4191[_0x31f8df[_0x56e221]]);_0x30b06b+=_0x5f4191[_0x31f8df[_0x56e221]];}_0x30b06b+=_0x4ec644['apiKey'];_0x30b06b=_0x2ca2d2[_0x41a7('0x5c')](_0x41a7('0x5d'))['update'](_0x30b06b)[_0x41a7('0x5e')]('hex');if(_0x252bf0!==''){_0x252bf0+='&';}_0x252bf0+=_0x41a7('0x5f')+_0x30b06b;var _0x2720a6={'method':_0x41a7('0x32'),'uri':_0x4ec644[_0x41a7('0x52')]+'/external/get/send.php?'+_0x252bf0,'json':!![]};return rp(_0x2720a6)[_0x41a7('0x18')](function(_0x6ea8f7){var _0x1e8071=Object[_0x41a7('0x5a')](_0x6ea8f7);if(_0x6ea8f7[_0x1e8071[0x0]]['error']&&parseInt(_0x6ea8f7[_0x1e8071[0x0]][_0x41a7('0x1b')])===0x0){var _0x5ea45b={'messageId':_0x6ea8f7[_0x1e8071[0x0]]['id_sms']};if(!_0x4ec644[_0x41a7('0x37')]){_0x5ea45b[_0x41a7('0x38')]=!![];}return _0x879086[_0x41a7('0x27')](_0x5ea45b);}else{return logger[_0x41a7('0x1b')](_0x41a7('0x2a'),'afterCreate',_0x41a7('0x60'),util[_0x41a7('0x29')](_0x6ea8f7[_0x41a7('0x1b')],{'showHidden':![],'depth':null}));}})[_0x41a7('0x1a')](function(_0x132c7e){return logger[_0x41a7('0x1b')](_0x41a7('0x2a'),'afterCreate','csc',util[_0x41a7('0x29')](_0x132c7e,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x60'),_0x41a7('0x61'));}break;case _0x41a7('0x62'):if(_0x4ec644['apiKey']){var _0x1364d2={'method':_0x41a7('0x35'),'uri':_0x41a7('0x63'),'headers':{'Authorization':_0x4ec644['apiKey']},'body':{'content':_0x46a501['body'],'to':[_0x46a501[_0x41a7('0x23')]],'from':_0x4ec644[_0x41a7('0x23')],'binary':![],'clientMessageId':'uuid','charset':'UTF-8'},'json':!![]};rp(_0x1364d2)[_0x41a7('0x18')](function(_0x3cab){if(!_0x3cab[_0x41a7('0x1b')]){var _0x401951={'messageId':_0x3cab['messages'][0x0][_0x41a7('0x64')]};if(!_0x4ec644[_0x41a7('0x37')]){_0x401951[_0x41a7('0x38')]=!![];}return _0x879086[_0x41a7('0x27')](_0x401951);}else{return logger[_0x41a7('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41a7('0x28'),_0x41a7('0x62'),util[_0x41a7('0x29')](_0x3cab[_0x41a7('0x1b')],{'showHidden':![],'depth':null}));}})[_0x41a7('0x1a')](function(_0x124e02){return logger[_0x41a7('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41a7('0x28'),_0x41a7('0x62'),util['inspect'](_0x124e02,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x62'),_0x41a7('0x61'));}break;case _0x41a7('0x65'):if(_0x4ec644['username']&&_0x4ec644[_0x41a7('0x2c')]){var _0x365702=util[_0x41a7('0x41')](_0x41a7('0x4c'),_0x4ec644[_0x41a7('0x30')],_0x4ec644[_0x41a7('0x2c')]);var _0x46a0b9={'method':_0x41a7('0x35'),'uri':_0x41a7('0x66')+_0x4ec644[_0x41a7('0x67')]+_0x41a7('0x68'),'body':{'to':[_0x46a501[_0x41a7('0x23')]],'text':_0x46a501[_0x41a7('0xc')],'from':_0x4ec644[_0x41a7('0x23')],'applicationId':_0x4ec644[_0x41a7('0x69')]},'headers':{'Authorization':util[_0x41a7('0x41')](_0x41a7('0x43'),new Buffer(_0x365702)[_0x41a7('0x44')]('base64'))},'json':!![]};rp(_0x46a0b9)[_0x41a7('0x18')](function(_0x2a6b52){if(_0x2a6b52['id']){var _0x52ff65={'messageId':_0x2a6b52['id']};return _0x879086['update'](_0x52ff65);}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x65'),util[_0x41a7('0x29')](_0x2a6b52,{'showHidden':![],'depth':null}));}})[_0x41a7('0x1a')](function(_0x38df7e){logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),_0x41a7('0x65'),util[_0x41a7('0x29')](_0x38df7e,{'showHidden':![],'depth':null}));});}else{logger[_0x41a7('0x1b')](_0x41a7('0x2a'),_0x41a7('0x28'),'bandwidth',_0x41a7('0x3a'));}break;case'intelepeer':if(_0x4ec644[_0x41a7('0x6a')]){var _0x3fdc13={};var _0x2720a6={'method':_0x41a7('0x35'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x41a7('0x6b')+_0x4ec644[_0x41a7('0x6a')],'Content-Type':_0x41a7('0x6c')},'body':{'from':_0x4ec644[_0x41a7('0x23')],'to':_0x46a501[_0x41a7('0x23')],'text':_0x46a501[_0x41a7('0xc')]},'json':!![]};return rp(_0x2720a6)['then'](function(_0x2bed84){if(_0x2bed84[_0x41a7('0x6d')]==0xca){_0x3fdc13[_0x41a7('0x6e')]=_0x2bed84;var _0x120dee={'method':'POST','uri':_0x41a7('0x6f'),'headers':{'Authorization':_0x41a7('0x6b')+_0x4ec644[_0x41a7('0x6a')],'Content-Type':'application/json'},'body':{'refid':_0x3fdc13[_0x41a7('0x6e')][_0x41a7('0x70')]},'json':!![]};return rp(_0x120dee)[_0x41a7('0x18')](function(_0x2ba7d1){_0x3fdc13[_0x41a7('0x71')]=_0x2ba7d1;var _0x388549={'messageId':_0x3fdc13[_0x41a7('0x6e')][_0x41a7('0x70')],'read':!![]};return _0x879086[_0x41a7('0x27')](_0x388549);});}else{return logger['error'](_0x41a7('0x2a'),'afterCreate',_0x41a7('0x72'),util[_0x41a7('0x29')](_0x2bed84,{'showHidden':![],'depth':null}));}})[_0x41a7('0x1a')](function(_0x4f1c35){return logger['error'](_0x41a7('0x2a'),_0x41a7('0x28'),'intelepeer',util['inspect'](_0x4f1c35,{'showHidden':![],'depth':null}));});}else{return logger[_0x41a7('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x41a7('0x28'),_0x41a7('0x72'),'Token\x20not\x20received');}break;}}})[_0x41a7('0x73')](function(){_0x4b5fe3();});}else{_0x4b5fe3();}}},'charset':_0x41a7('0x74'),'collate':_0x41a7('0x75')});};
\ No newline at end of file
+var _0xe598=['&password=','password','split','sms','POST','session_key','total_sent','internal_order_id','skebby','Missing\x20parameters:\x20username,\x20password','connectel','senderString','https://smsapi.connectel.se/api/v2/send/','deliveryReport','read','Missing\x20parameters:\x20authToken','clicksend','format','Basic\x20%s','toString','http_code','data','queued_count','message_id','clickSend','authId','base64','message_uuid','plivo','Missing\x20parameters:\x20authId,\x20authToken','baseUrl','/sms/2/text/advanced','token','application/json','infobip','crypto','apiKey','text','timestamp','keys','length','createHash','md5','digest','hex','signature=','GET','csc','Missing\x20parameters:\x20apiKey','https://platform.clickatell.com/messages','uuid','UTF-8','apiMessageId','clickatell','%s:%s','accountId','/messages','applicationId','bandwidth','intelepeer','Bearer\x20','code','https://api.intelepeer.com/_rest/v4/app/sms/mdr','message','refid','Token\x20not\x20received','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./smsMessage.attributes','exports','define','sms_messages','messageId','body','models','get','toLowerCase','direction','out','secret','UserId','isNil','SmsInteractionId','SmsInteraction','findOne','then','update','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','authToken','messages','phone','remote','/api/sms/messages/','/status?token=','sid','SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','https://api.skebby.it/API/v1.0/REST/','username','smsMethod','sender','login?username='];(function(_0x5362f1,_0xc50fb5){var _0x134b48=function(_0x2a7de7){while(--_0x2a7de7){_0x5362f1['push'](_0x5362f1['shift']());}};_0x134b48(++_0xc50fb5);}(_0xe598,0x1ac));var _0x8e59=function(_0x5f3de3,_0x40f0f5){_0x5f3de3=_0x5f3de3-0x0;var _0x287e0d=_0xe598[_0x5f3de3];return _0x287e0d;};'use strict';var _=require(_0x8e59('0x0'));var util=require('util');var logger=require(_0x8e59('0x1'))(_0x8e59('0x2'));var moment=require(_0x8e59('0x3'));var BPromise=require(_0x8e59('0x4'));var rp=require(_0x8e59('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8e59('0x6'));var config=require(_0x8e59('0x7'));var attributes=require(_0x8e59('0x8'));module[_0x8e59('0x9')]=function(_0x15bc5d,_0x3111a6){return _0x15bc5d[_0x8e59('0xa')]('SmsMessage',attributes,{'tableName':_0x8e59('0xb'),'paranoid':![],'indexes':[{'name':_0x8e59('0xc'),'fields':[_0x8e59('0xc')]},{'name':'fti_sms_messages','fields':[_0x8e59('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x3c6b90,_0x37c9bb,_0x3db611){var _0x5f0264=_0x15bc5d[_0x8e59('0xe')];var _0x443df4=_0x3c6b90[_0x8e59('0xf')]({'plain':!![]});if(_0x443df4['direction'][_0x8e59('0x10')]()==='in'||_0x443df4[_0x8e59('0x11')][_0x8e59('0x10')]()===_0x8e59('0x12')&&!_0x443df4[_0x8e59('0x13')]&&!_['isNil'](_0x443df4[_0x8e59('0x14')])&&!_[_0x8e59('0x15')](_0x443df4[_0x8e59('0x16')])){_0x5f0264[_0x8e59('0x17')][_0x8e59('0x18')]({'where':{'id':_0x443df4[_0x8e59('0x16')]}})[_0x8e59('0x19')](function(_0x398ad0){if(_0x398ad0){_0x398ad0[_0x8e59('0x1a')]({'lastMsgAt':_0x443df4[_0x8e59('0x1b')],'lastMsgDirection':_0x443df4[_0x8e59('0x11')][_0x8e59('0x10')]()});}})[_0x8e59('0x1c')](function(_0x5457cf){console[_0x8e59('0x1d')](_0x5457cf);});}if(_0x443df4['direction']===_0x8e59('0x12')&&!_0x443df4[_0x8e59('0x13')]){var _0xcfc275;_0x5f0264[_0x8e59('0x1e')][_0x8e59('0x1f')]({'where':{'id':_0x443df4[_0x8e59('0x20')]},'raw':!![]})['then'](function(_0x166068){_0xcfc275=_0x166068;if(_0xcfc275&&_0xcfc275['type']){switch(_0xcfc275[_0x8e59('0x21')]){case _0x8e59('0x22'):var _0x1214e4=require('twilio');if(_0xcfc275[_0x8e59('0x23')]&&_0xcfc275[_0x8e59('0x24')]&&_0xcfc275['phone']){var _0x3cdf05=new _0x1214e4(_0xcfc275[_0x8e59('0x23')],_0xcfc275[_0x8e59('0x24')]);_0x3cdf05[_0x8e59('0x25')]['create']({'body':_0x443df4[_0x8e59('0xd')],'to':_0x443df4[_0x8e59('0x26')],'from':_0xcfc275['phone'],'statusCallback':_0xcfc275[_0x8e59('0x27')]+_0x8e59('0x28')+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275['token']})['then'](function(_0xbc7e66){if(_0xbc7e66[_0x8e59('0x2a')]){return _0x3c6b90[_0x8e59('0x1a')]({'messageId':_0xbc7e66['sid']});}})['catch'](function(_0x1f84e6){logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),'twilio',util[_0x8e59('0x2d')](_0x1f84e6,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x22'),_0x8e59('0x2e'));}break;case'skebby':var _0x3c5dfb=_0x8e59('0x2f');if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275['password']){var _0x4d2e1d={'recipient':[_0x443df4[_0x8e59('0x26')]],'message':_0x443df4[_0x8e59('0xd')],'message_type':_0xcfc275[_0x8e59('0x31')]};if(_0xcfc275['smsMethod']&&_0xcfc275['smsMethod']!=='SI'){_0x4d2e1d[_0x8e59('0x32')]=_0xcfc275['phone'];}var _0x4049e8={'url':_0x3c5dfb+_0x8e59('0x33')+_0xcfc275[_0x8e59('0x30')]+_0x8e59('0x34')+_0xcfc275[_0x8e59('0x35')],'method':'GET'};rp(_0x4049e8)[_0x8e59('0x19')](function(_0x53d6e3){var _0x1c59f0=_0x53d6e3[_0x8e59('0x36')](';');var _0x2575a9={'user_key':_0x1c59f0[0x0],'session_key':_0x1c59f0[0x1]};_0x4049e8={'url':_0x3c5dfb+_0x8e59('0x37'),'method':_0x8e59('0x38'),'headers':{'user_key':_0x2575a9['user_key'],'Session_key':_0x2575a9[_0x8e59('0x39')]},'json':!![],'body':_0x4d2e1d};return rp(_0x4049e8);})[_0x8e59('0x19')](function(_0x4494f5){if(_0x4494f5[_0x8e59('0x3a')]>=0x1){var _0x21e325={'messageId':_0x4494f5[_0x8e59('0x3b')]};if(_0xcfc275['smsMethod']!=='GP'||!_0xcfc275['deliveryReport']){_0x21e325['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x21e325);}else{return logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x3c'),util['inspect'](_0x4494f5,{'showHidden':![],'depth':null}));}})['catch'](function(_0x2806fc){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x3c'),util[_0x8e59('0x2d')](_0x2806fc,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x3c'),_0x8e59('0x3d'));}break;case _0x8e59('0x3e'):if(_0xcfc275['authToken']){var _0x4236cf={'recipient':_0x443df4[_0x8e59('0x26')],'message':_0x443df4[_0x8e59('0xd')],'sender':_0xcfc275[_0x8e59('0x3f')]||_0xcfc275[_0x8e59('0x26')],'authorization':_0xcfc275[_0x8e59('0x24')]};var _0x37c9bb={'method':_0x8e59('0x38'),'uri':_0x8e59('0x40'),'body':_0x4236cf,'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x101280){var _0x2d392b={'messageId':_0x101280['requestid']};if(!_0xcfc275[_0x8e59('0x41')]){_0x2d392b[_0x8e59('0x42')]=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x2d392b);})['catch'](function(_0xf882d1){logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','connectel',util[_0x8e59('0x2d')](_0xf882d1,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','connectel',_0x8e59('0x43'));}break;case _0x8e59('0x44'):if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){var _0x4236cf={'messages':[{'source':'xCALLY\x20Motion','to':_0x443df4[_0x8e59('0x26')],'body':_0x443df4[_0x8e59('0xd')],'from':_0xcfc275['senderString']||_0xcfc275[_0x8e59('0x26')]}]};var _0x2b448b=util[_0x8e59('0x45')]('%s:%s',_0xcfc275[_0x8e59('0x30')],_0xcfc275[_0x8e59('0x35')]);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':'https://rest.clicksend.com/v3/sms/send','body':_0x4236cf,'headers':{'Authorization':util[_0x8e59('0x45')](_0x8e59('0x46'),new Buffer(_0x2b448b)[_0x8e59('0x47')]('base64'))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0xdf6c64){if(_0xdf6c64[_0x8e59('0x48')]>=0xc8&&_0xdf6c64[_0x8e59('0x48')]<=0xce){if(_0xdf6c64[_0x8e59('0x49')]&&_0xdf6c64[_0x8e59('0x49')][_0x8e59('0x4a')]>0x0){var _0x51bdaf=_['head'](_0xdf6c64[_0x8e59('0x49')][_0x8e59('0x25')]);var _0x5e616f={'messageId':_0x51bdaf[_0x8e59('0x4b')]};if(!_0xcfc275['deliveryReport']){_0x5e616f['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x5e616f);}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x4c'),util[_0x8e59('0x2d')](_0xdf6c64,{'showHidden':![],'depth':null}));}}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x4c'),util[_0x8e59('0x2d')](_0xdf6c64,{'showHidden':![],'depth':null}));}})['catch'](function(_0x252c13){logger['error'](_0x8e59('0x2b'),'afterCreate','clickSend',util['inspect'](_0x252c13,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x4c'),_0x8e59('0x3d'));}break;case'plivo':if(_0xcfc275[_0x8e59('0x4d')]&&_0xcfc275[_0x8e59('0x24')]){var _0x4236cf={'dst':_0x443df4[_0x8e59('0x26')],'text':_0x443df4[_0x8e59('0xd')],'src':_0xcfc275['senderString']||_0xcfc275[_0x8e59('0x26')],'url':_0xcfc275['remote']+_0x8e59('0x28')+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275['token']};var _0x2b448b=util[_0x8e59('0x45')]('%s:%s',_0xcfc275[_0x8e59('0x4d')],_0xcfc275['authToken']);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0xcfc275[_0x8e59('0x4d')]),'body':_0x4236cf,'headers':{'Authorization':util[_0x8e59('0x45')]('Basic\x20%s',new Buffer(_0x2b448b)['toString'](_0x8e59('0x4e')))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x5d9469){var _0x3c02b6={'messageId':_0x5d9469[_0x8e59('0x4f')][0x0]};return _0x3c6b90['update'](_0x3c02b6);})[_0x8e59('0x1c')](function(_0x6a9c4d){logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x50'),util[_0x8e59('0x2d')](_0x6a9c4d,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x50'),_0x8e59('0x51'));}break;case'infobip':if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){if(_0xcfc275[_0x8e59('0x52')]){var _0x160342={'method':_0x8e59('0x38'),'uri':_0xcfc275[_0x8e59('0x52')]+'/auth/1/session','body':{'username':_0xcfc275[_0x8e59('0x30')],'password':_0xcfc275[_0x8e59('0x35')]},'json':!![]};return rp(_0x160342)['then'](function(_0x142abc){var _0xf2d7ea={'method':_0x8e59('0x38'),'uri':_0xcfc275[_0x8e59('0x52')]+_0x8e59('0x53'),'body':{'messages':[{'from':_0xcfc275[_0x8e59('0x26')],'destinations':[{'to':_0x443df4[_0x8e59('0x26')]}],'text':_0x443df4['body'],'notifyUrl':_0xcfc275[_0x8e59('0x27')]+'/api/sms/messages/'+_0x443df4['id']+_0x8e59('0x29')+_0xcfc275[_0x8e59('0x54')],'notifyContentType':_0x8e59('0x55'),'callbackData':_0xcfc275[_0x8e59('0x26')]+';'+_0x443df4[_0x8e59('0xd')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x142abc[_0x8e59('0x54')]},'json':!![]};return rp(_0xf2d7ea)['then'](function(_0x3d88d3){if(_0x3d88d3[_0x8e59('0x25')]){var _0x13b8f5={'messageId':_0x3d88d3[_0x8e59('0x25')][0x0][_0x8e59('0xc')]};if(!_0xcfc275[_0x8e59('0x41')]){_0x13b8f5[_0x8e59('0x42')]=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x13b8f5);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x56'),util[_0x8e59('0x2d')](_0x3d88d3,{'showHidden':![],'depth':null}));}});})[_0x8e59('0x1c')](function(_0x38de46){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x56'),util[_0x8e59('0x2d')](_0x38de46,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x56'),'Missing\x20parameters:\x20base_url');}}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x56'),'Missing\x20parameters:\x20username,\x20password');}break;case'csc':var _0x54af3a=require(_0x8e59('0x57'));if(_0xcfc275[_0x8e59('0x58')]){var _0x1c4ea5={};_0x1c4ea5['login']=_0xcfc275[_0x8e59('0x30')];_0x1c4ea5[_0x8e59('0x26')]=_0x443df4['phone'];_0x1c4ea5['sender']=_0xcfc275['phone'];_0x1c4ea5[_0x8e59('0x59')]=_0x443df4[_0x8e59('0xd')];_0x1c4ea5[_0x8e59('0x5a')]=+new Date();var _0x477196='';var _0x3b0231='';var _0x49046e=Object[_0x8e59('0x5b')](_0x1c4ea5);_0x49046e['sort']();for(var _0x4a001b=0x0;_0x4a001b<_0x49046e[_0x8e59('0x5c')];_0x4a001b++){if(_0x477196!=''){_0x477196+='&';}_0x477196+=_0x49046e[_0x4a001b]+'='+encodeURIComponent(_0x1c4ea5[_0x49046e[_0x4a001b]]);_0x3b0231+=_0x1c4ea5[_0x49046e[_0x4a001b]];}_0x3b0231+=_0xcfc275[_0x8e59('0x58')];_0x3b0231=_0x54af3a[_0x8e59('0x5d')](_0x8e59('0x5e'))[_0x8e59('0x1a')](_0x3b0231)[_0x8e59('0x5f')](_0x8e59('0x60'));if(_0x477196!==''){_0x477196+='&';}_0x477196+=_0x8e59('0x61')+_0x3b0231;var _0x4049e8={'method':_0x8e59('0x62'),'uri':_0xcfc275[_0x8e59('0x52')]+'/external/get/send.php?'+_0x477196,'json':!![]};return rp(_0x4049e8)[_0x8e59('0x19')](function(_0x4e6c18){var _0x33debe=Object[_0x8e59('0x5b')](_0x4e6c18);if(_0x4e6c18[_0x33debe[0x0]][_0x8e59('0x1d')]&&parseInt(_0x4e6c18[_0x33debe[0x0]][_0x8e59('0x1d')])===0x0){var _0x4b4343={'messageId':_0x4e6c18[_0x33debe[0x0]]['id_sms']};if(!_0xcfc275[_0x8e59('0x41')]){_0x4b4343['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x4b4343);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x63'),util[_0x8e59('0x2d')](_0x4e6c18[_0x8e59('0x1d')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x15122a){return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x63'),util[_0x8e59('0x2d')](_0x15122a,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x8e59('0x2c'),_0x8e59('0x63'),_0x8e59('0x64'));}break;case'clickatell':if(_0xcfc275[_0x8e59('0x58')]){var _0x52edb4={'method':_0x8e59('0x38'),'uri':_0x8e59('0x65'),'headers':{'Authorization':_0xcfc275[_0x8e59('0x58')]},'body':{'content':_0x443df4['body'],'to':[_0x443df4['phone']],'from':_0xcfc275[_0x8e59('0x26')],'binary':![],'clientMessageId':_0x8e59('0x66'),'charset':_0x8e59('0x67')},'json':!![]};rp(_0x52edb4)['then'](function(_0x51b9d5){if(!_0x51b9d5[_0x8e59('0x1d')]){var _0x3c96f1={'messageId':_0x51b9d5['messages'][0x0][_0x8e59('0x68')]};if(!_0xcfc275[_0x8e59('0x41')]){_0x3c96f1['read']=!![];}return _0x3c6b90[_0x8e59('0x1a')](_0x3c96f1);}else{return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),'clickatell',util['inspect'](_0x51b9d5[_0x8e59('0x1d')],{'showHidden':![],'depth':null}));}})[_0x8e59('0x1c')](function(_0x5aafbc){return logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x69'),util['inspect'](_0x5aafbc,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x69'),_0x8e59('0x64'));}break;case'bandwidth':if(_0xcfc275[_0x8e59('0x30')]&&_0xcfc275[_0x8e59('0x35')]){var _0x2b448b=util[_0x8e59('0x45')](_0x8e59('0x6a'),_0xcfc275[_0x8e59('0x30')],_0xcfc275[_0x8e59('0x35')]);var _0x37c9bb={'method':_0x8e59('0x38'),'uri':'https://messaging.bandwidth.com/api/v2/users/'+_0xcfc275[_0x8e59('0x6b')]+_0x8e59('0x6c'),'body':{'to':[_0x443df4[_0x8e59('0x26')]],'text':_0x443df4[_0x8e59('0xd')],'from':_0xcfc275[_0x8e59('0x26')],'applicationId':_0xcfc275[_0x8e59('0x6d')]},'headers':{'Authorization':util[_0x8e59('0x45')](_0x8e59('0x46'),new Buffer(_0x2b448b)[_0x8e59('0x47')](_0x8e59('0x4e')))},'json':!![]};rp(_0x37c9bb)[_0x8e59('0x19')](function(_0x4f8388){if(_0x4f8388['id']){var _0x579fd7={'messageId':_0x4f8388['id']};return _0x3c6b90[_0x8e59('0x1a')](_0x579fd7);}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),'afterCreate','bandwidth',util['inspect'](_0x4f8388,{'showHidden':![],'depth':null}));}})['catch'](function(_0x49bff9){logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x8e59('0x6e'),util[_0x8e59('0x2d')](_0x49bff9,{'showHidden':![],'depth':null}));});}else{logger[_0x8e59('0x1d')](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x6e'),_0x8e59('0x3d'));}break;case _0x8e59('0x6f'):if(_0xcfc275[_0x8e59('0x58')]){var _0x43eae9={};var _0x4049e8={'method':_0x8e59('0x38'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':_0x8e59('0x70')+_0xcfc275[_0x8e59('0x58')],'Content-Type':_0x8e59('0x55')},'body':{'from':_0xcfc275[_0x8e59('0x26')],'to':_0x443df4[_0x8e59('0x26')],'text':_0x443df4[_0x8e59('0xd')]},'json':!![]};return rp(_0x4049e8)['then'](function(_0x13a4f8){if(_0x13a4f8[_0x8e59('0x71')]==0xca){_0x43eae9['message']=_0x13a4f8;var _0xb54520={'method':_0x8e59('0x38'),'uri':_0x8e59('0x72'),'headers':{'Authorization':_0x8e59('0x70')+_0xcfc275['apiKey'],'Content-Type':_0x8e59('0x55')},'body':{'refid':_0x43eae9[_0x8e59('0x73')]['refid']},'json':!![]};return rp(_0xb54520)[_0x8e59('0x19')](function(_0x27aacd){_0x43eae9['status']=_0x27aacd;var _0x2fd3f9={'messageId':_0x43eae9[_0x8e59('0x73')][_0x8e59('0x74')],'read':!![]};return _0x3c6b90[_0x8e59('0x1a')](_0x2fd3f9);});}else{return logger['error'](_0x8e59('0x2b'),'afterCreate',_0x8e59('0x6f'),util['inspect'](_0x13a4f8,{'showHidden':![],'depth':null}));}})[_0x8e59('0x1c')](function(_0x141953){return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),_0x8e59('0x6f'),util[_0x8e59('0x2d')](_0x141953,{'showHidden':![],'depth':null}));});}else{return logger['error'](_0x8e59('0x2b'),_0x8e59('0x2c'),'intelepeer',_0x8e59('0x75'));}break;}}})['finally'](function(){_0x3db611();});}else{_0x3db611();}}},'charset':_0x8e59('0x76'),'collate':_0x8e59('0x77')});};
\ No newline at end of file
index ce89432..c8d533a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68a6=['then','info','SmsMessage,\x20%s,\x20%s,\x20%s','code','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','options','debug','lodash','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register'];(function(_0x40432b,_0x485b16){var _0x1a1fee=function(_0x1969c7){while(--_0x1969c7){_0x40432b['push'](_0x40432b['shift']());}};_0x1a1fee(++_0x485b16);}(_0x68a6,0x12f));var _0x668a=function(_0x3f4669,_0x55d536){_0x3f4669=_0x3f4669-0x0;var _0x550b5c=_0x68a6[_0x3f4669];return _0x550b5c;};'use strict';var _=require(_0x668a('0x0'));var util=require('util');var moment=require(_0x668a('0x1'));var BPromise=require(_0x668a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x668a('0x3'))['db'];var utils=require(_0x668a('0x4'));var logger=require(_0x668a('0x5'))(_0x668a('0x6'));var config=require(_0x668a('0x7'));var jayson=require(_0x668a('0x8'));var client=jayson[_0x668a('0x9')][_0x668a('0xa')]({'port':0x232a});config[_0x668a('0xb')]=_[_0x668a('0xc')](config[_0x668a('0xb')],{'host':_0x668a('0xd'),'port':0x18eb});var socket=require(_0x668a('0xe'))(new Redis(config[_0x668a('0xb')]));require('./smsMessage.socket')[_0x668a('0xf')](socket);function respondWithRpcPromise(_0x22d750,_0x1afd80,_0x6e579b){return new BPromise(function(_0x18d323,_0x331fc2){return client['request'](_0x22d750,_0x6e579b)[_0x668a('0x10')](function(_0x251ec5){logger[_0x668a('0x11')]('SmsMessage,\x20%s,\x20%s',_0x1afd80,'request\x20sent');logger['debug'](_0x668a('0x12'),_0x1afd80,'request\x20sent',JSON['stringify'](_0x251ec5));if(_0x251ec5['error']){if(_0x251ec5['error'][_0x668a('0x13')]===0x1f4){logger[_0x668a('0x14')](_0x668a('0x15'),_0x1afd80,_0x251ec5[_0x668a('0x14')][_0x668a('0x16')]);return _0x331fc2(_0x251ec5['error'][_0x668a('0x16')]);}logger[_0x668a('0x14')](_0x668a('0x15'),_0x1afd80,_0x251ec5[_0x668a('0x14')][_0x668a('0x16')]);return _0x18d323(_0x251ec5[_0x668a('0x14')][_0x668a('0x16')]);}else{logger[_0x668a('0x11')](_0x668a('0x15'),_0x1afd80,'request\x20sent');_0x18d323(_0x251ec5[_0x668a('0x17')][_0x668a('0x16')]);}})[_0x668a('0x18')](function(_0x20448b){logger[_0x668a('0x14')]('SmsMessage,\x20%s,\x20%s',_0x1afd80,_0x20448b);_0x331fc2(_0x20448b);});});}exports[_0x668a('0x19')]=function(_0x674063){var _0x17dc2b=this;return new Promise(function(_0x54b46a,_0x1f82af){return db[_0x668a('0x1a')]['create'](_0x674063['body'],{'raw':_0x674063[_0x668a('0x1b')]?_0x674063[_0x668a('0x1b')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4e7d90){logger[_0x668a('0x11')](_0x668a('0x19'),_0x674063);logger[_0x668a('0x1c')](_0x668a('0x19'),_0x674063,JSON['stringify'](_0x4e7d90));_0x54b46a(_0x4e7d90);})['catch'](function(_0x2e2c86){logger['error']('CreateSmsMessage',_0x2e2c86[_0x668a('0x16')],_0x674063);_0x1f82af(_0x17dc2b[_0x668a('0x14')](0x1f4,_0x2e2c86[_0x668a('0x16')]));});});};
\ No newline at end of file
+var _0x0b38=['result','catch','SmsMessage','create','options','raw','CreateSmsMessage','stringify','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','defaults','redis','socket.io-emitter','./smsMessage.socket','register','request','then','info','SmsMessage,\x20%s,\x20%s','debug','SmsMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','message'];(function(_0xce33ec,_0x2a112a){var _0x2703f1=function(_0xf88315){while(--_0xf88315){_0xce33ec['push'](_0xce33ec['shift']());}};_0x2703f1(++_0x2a112a);}(_0x0b38,0xe1));var _0x80b3=function(_0x43b4df,_0x4a5227){_0x43b4df=_0x43b4df-0x0;var _0x5200db=_0x0b38[_0x43b4df];return _0x5200db;};'use strict';var _=require(_0x80b3('0x0'));var util=require(_0x80b3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x80b3('0x2'));var fs=require('fs');var Redis=require(_0x80b3('0x3'));var db=require(_0x80b3('0x4'))['db'];var utils=require(_0x80b3('0x5'));var logger=require('../../config/logger')(_0x80b3('0x6'));var config=require(_0x80b3('0x7'));var jayson=require(_0x80b3('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_[_0x80b3('0x9')](config[_0x80b3('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x80b3('0xb'))(new Redis(config[_0x80b3('0xa')]));require(_0x80b3('0xc'))[_0x80b3('0xd')](socket);function respondWithRpcPromise(_0xbcf710,_0x595b99,_0x50379a){return new BPromise(function(_0x492bc3,_0x574ca8){return client[_0x80b3('0xe')](_0xbcf710,_0x50379a)[_0x80b3('0xf')](function(_0x349908){logger[_0x80b3('0x10')](_0x80b3('0x11'),_0x595b99,'request\x20sent');logger[_0x80b3('0x12')](_0x80b3('0x13'),_0x595b99,_0x80b3('0x14'),JSON['stringify'](_0x349908));if(_0x349908[_0x80b3('0x15')]){if(_0x349908['error']['code']===0x1f4){logger['error'](_0x80b3('0x11'),_0x595b99,_0x349908['error'][_0x80b3('0x16')]);return _0x574ca8(_0x349908[_0x80b3('0x15')][_0x80b3('0x16')]);}logger[_0x80b3('0x15')](_0x80b3('0x11'),_0x595b99,_0x349908[_0x80b3('0x15')]['message']);return _0x492bc3(_0x349908[_0x80b3('0x15')]['message']);}else{logger[_0x80b3('0x10')](_0x80b3('0x11'),_0x595b99,'request\x20sent');_0x492bc3(_0x349908[_0x80b3('0x17')][_0x80b3('0x16')]);}})[_0x80b3('0x18')](function(_0x4ec5bc){logger[_0x80b3('0x15')](_0x80b3('0x11'),_0x595b99,_0x4ec5bc);_0x574ca8(_0x4ec5bc);});});}exports['CreateSmsMessage']=function(_0x2a837f){var _0xfc3417=this;return new Promise(function(_0x7929f1,_0x162b8d){return db[_0x80b3('0x19')][_0x80b3('0x1a')](_0x2a837f['body'],{'raw':_0x2a837f[_0x80b3('0x1b')]?_0x2a837f['options'][_0x80b3('0x1c')]===undefined?!![]:![]:!![]})[_0x80b3('0xf')](function(_0x9a47ed){logger[_0x80b3('0x10')](_0x80b3('0x1d'),_0x2a837f);logger['debug'](_0x80b3('0x1d'),_0x2a837f,JSON[_0x80b3('0x1e')](_0x9a47ed));_0x7929f1(_0x9a47ed);})[_0x80b3('0x18')](function(_0x515e59){logger[_0x80b3('0x15')](_0x80b3('0x1d'),_0x515e59[_0x80b3('0x16')],_0x2a837f);_0x162b8d(_0xfc3417['error'](0x1f4,_0x515e59[_0x80b3('0x16')]));});});};
\ No newline at end of file
index c0e663a..b0a2950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fa9=['remove','removeListener','register','length','smsMessage:','./smsMessage.events','save'];(function(_0x2d304a,_0x1df8fb){var _0x3d8136=function(_0x4980a9){while(--_0x4980a9){_0x2d304a['push'](_0x2d304a['shift']());}};_0x3d8136(++_0x1df8fb);}(_0x9fa9,0xde));var _0x99fa=function(_0x581e09,_0x19fa61){_0x581e09=_0x581e09-0x0;var _0x306a17=_0x9fa9[_0x581e09];return _0x306a17;};'use strict';var SmsMessageEvents=require(_0x99fa('0x0'));var events=[_0x99fa('0x1'),_0x99fa('0x2'),'update'];function createListener(_0xec1723,_0x2122e3){return function(_0x352be9){_0x2122e3['emit'](_0xec1723,_0x352be9);};}function removeListener(_0x2279c9,_0x5670bc){return function(){SmsMessageEvents[_0x99fa('0x3')](_0x2279c9,_0x5670bc);};}exports[_0x99fa('0x4')]=function(_0x3b390e){for(var _0x5f0555=0x0,_0x32a398=events[_0x99fa('0x5')];_0x5f0555<_0x32a398;_0x5f0555++){var _0x557c0e=events[_0x5f0555];var _0x116fe1=createListener(_0x99fa('0x6')+_0x557c0e,_0x3b390e);SmsMessageEvents['on'](_0x557c0e,_0x116fe1);}};
\ No newline at end of file
+var _0xf8ff=['register','smsMessage:','remove','update','removeListener'];(function(_0x2944a4,_0x21a845){var _0x46476e=function(_0x16e105){while(--_0x16e105){_0x2944a4['push'](_0x2944a4['shift']());}};_0x46476e(++_0x21a845);}(_0xf8ff,0x84));var _0xff8f=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0xf8ff[_0x411add];return _0x238242;};'use strict';var SmsMessageEvents=require('./smsMessage.events');var events=['save',_0xff8f('0x0'),_0xff8f('0x1')];function createListener(_0x3d9d68,_0x3f1605){return function(_0x280a7a){_0x3f1605['emit'](_0x3d9d68,_0x280a7a);};}function removeListener(_0x459809,_0x4a02f5){return function(){SmsMessageEvents[_0xff8f('0x2')](_0x459809,_0x4a02f5);};}exports[_0xff8f('0x3')]=function(_0x5375e2){for(var _0x277bb4=0x0,_0xabfd18=events['length'];_0x277bb4<_0xabfd18;_0x277bb4++){var _0x479248=events[_0x277bb4];var _0x3035b3=createListener(_0xff8f('0x4')+_0x479248,_0x5375e2);SmsMessageEvents['on'](_0x479248,_0x3035b3);}};
\ No newline at end of file
index 87d5eeb..0b849bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe55=['getAgents','post','create','addAgents','put','update','removeTeams','delete','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','index','/describe','/:id','isAuthenticated','/:id/members','getMembers','/:id/teams','getTeams','/:id/users'];(function(_0x3de8a4,_0x289a5c){var _0x4635cf=function(_0x2bddb8){while(--_0x2bddb8){_0x3de8a4['push'](_0x3de8a4['shift']());}};_0x4635cf(++_0x289a5c);}(_0xfe55,0x1db));var _0x5fe5=function(_0x28f1de,_0x355054){_0x28f1de=_0x28f1de-0x0;var _0x5b5dad=_0xfe55[_0x28f1de];return _0x5b5dad;};'use strict';var multer=require(_0x5fe5('0x0'));var util=require(_0x5fe5('0x1'));var path=require(_0x5fe5('0x2'));var timeout=require(_0x5fe5('0x3'));var express=require(_0x5fe5('0x4'));var router=express[_0x5fe5('0x5')]();var fs_extra=require(_0x5fe5('0x6'));var auth=require(_0x5fe5('0x7'));var interaction=require(_0x5fe5('0x8'));var config=require(_0x5fe5('0x9'));var controller=require(_0x5fe5('0xa'));router[_0x5fe5('0xb')]('/',auth['isAuthenticated'](),controller[_0x5fe5('0xc')]);router[_0x5fe5('0xb')](_0x5fe5('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x5fe5('0xb')](_0x5fe5('0xe'),auth[_0x5fe5('0xf')](),controller['show']);router[_0x5fe5('0xb')](_0x5fe5('0x10'),auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x11')]);router['get'](_0x5fe5('0x12'),auth['isAuthenticated'](),controller[_0x5fe5('0x13')]);router[_0x5fe5('0xb')](_0x5fe5('0x14'),auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x15')]);router[_0x5fe5('0x16')]('/',auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x17')]);router[_0x5fe5('0x16')](_0x5fe5('0x12'),auth[_0x5fe5('0xf')](),controller['addTeams']);router[_0x5fe5('0x16')]('/:id/users',auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x18')]);router[_0x5fe5('0x19')](_0x5fe5('0xe'),auth['isAuthenticated'](),controller[_0x5fe5('0x1a')]);router['delete'](_0x5fe5('0xe'),auth[_0x5fe5('0xf')](),controller['destroy']);router['delete']('/:id/teams',auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x1b')]);router[_0x5fe5('0x1c')](_0x5fe5('0x14'),auth[_0x5fe5('0xf')](),controller[_0x5fe5('0x1d')]);module[_0x5fe5('0x1e')]=router;
\ No newline at end of file
+var _0x03de=['addAgents','put','update','delete','destroy','removeTeams','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','./smsQueue.controller','isAuthenticated','get','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post'];(function(_0x4bd566,_0x55efb3){var _0x36f04f=function(_0x5f0efe){while(--_0x5f0efe){_0x4bd566['push'](_0x4bd566['shift']());}};_0x36f04f(++_0x55efb3);}(_0x03de,0xe7));var _0xe03d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x03de[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xe03d('0x0'));var util=require('util');var path=require(_0xe03d('0x1'));var timeout=require(_0xe03d('0x2'));var express=require(_0xe03d('0x3'));var router=express[_0xe03d('0x4')]();var fs_extra=require(_0xe03d('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xe03d('0x6'));var controller=require(_0xe03d('0x7'));router['get']('/',auth[_0xe03d('0x8')](),controller['index']);router[_0xe03d('0x9')]('/describe',auth[_0xe03d('0x8')](),controller[_0xe03d('0xa')]);router['get'](_0xe03d('0xb'),auth[_0xe03d('0x8')](),controller[_0xe03d('0xc')]);router[_0xe03d('0x9')](_0xe03d('0xd'),auth[_0xe03d('0x8')](),controller['getMembers']);router[_0xe03d('0x9')](_0xe03d('0xe'),auth[_0xe03d('0x8')](),controller[_0xe03d('0xf')]);router[_0xe03d('0x9')](_0xe03d('0x10'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x11')]);router[_0xe03d('0x12')]('/',auth[_0xe03d('0x8')](),controller['create']);router['post']('/:id/teams',auth[_0xe03d('0x8')](),controller['addTeams']);router[_0xe03d('0x12')](_0xe03d('0x10'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x13')]);router[_0xe03d('0x14')](_0xe03d('0xb'),auth[_0xe03d('0x8')](),controller[_0xe03d('0x15')]);router[_0xe03d('0x16')]('/:id',auth[_0xe03d('0x8')](),controller[_0xe03d('0x17')]);router[_0xe03d('0x16')](_0xe03d('0xe'),auth['isAuthenticated'](),controller[_0xe03d('0x18')]);router[_0xe03d('0x16')]('/:id/users',auth['isAuthenticated'](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index d1fe961..e72a1fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ed9=['beepall','sequelize','exports','name','STRING','ENUM'];(function(_0x4ee1a8,_0x26aedb){var _0x1bd2f9=function(_0x195c42){while(--_0x195c42){_0x4ee1a8['push'](_0x4ee1a8['shift']());}};_0x1bd2f9(++_0x26aedb);}(_0x8ed9,0x1e7));var _0x98ed=function(_0x3dd991,_0x4bef12){_0x3dd991=_0x3dd991-0x0;var _0x251609=_0x8ed9[_0x3dd991];return _0x251609;};'use strict';var Sequelize=require(_0x98ed('0x0'));module[_0x98ed('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x98ed('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x98ed('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x98ed('0x4')]('rrmemory',_0x98ed('0x5'),'roundrobin')}};
\ No newline at end of file
+var _0xd6fb=['sequelize','name','STRING','INTEGER','rrmemory','beepall'];(function(_0x1d9ea3,_0x2b706a){var _0x2039a0=function(_0xf540dd){while(--_0xf540dd){_0x1d9ea3['push'](_0x1d9ea3['shift']());}};_0x2039a0(++_0x2b706a);}(_0xd6fb,0x10e));var _0xbd6f=function(_0x532acb,_0x46fdda){_0x532acb=_0x532acb-0x0;var _0xd8d16f=_0xd6fb[_0x532acb];return _0xd8d16f;};'use strict';var Sequelize=require(_0xbd6f('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0xbd6f('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xbd6f('0x2')]},'timeout':{'type':Sequelize[_0xbd6f('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0xbd6f('0x4'),_0xbd6f('0x5'),'roundrobin')}};
\ No newline at end of file
index c743e46..9fe16f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x41d9=['sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','SmsQueues','destroy','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','key','model','query','filters','attributes','fields','length','order','where','pick','type','VIRTUAL','filter','merge','includeAll','include','rows','catch','show','keys','intersection','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','describe','getMembers','findOne','UserSmsQueue','hasOwnProperty','sort','SmsQueueId','findAll','User','findAndCountAll','UserId','agent','smsPause','format','%s/%s','SIP','createdAt','getTeams','Team','nolimit','ids','Agents','online','voicePause','flatMap','transaction','emit','userSmsQueue:save','removeTeams','field','tq.TeamId','from','team_has_sms_queues','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','sequelize','toString','QueryTypes','SELECT','every','TeamId','includes','union','compact','removeAgents','userSmsQueue:remove','addAgents','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x4bcf38,_0x3c12be){var _0x4a89be=function(_0x3215a6){while(--_0x3215a6){_0x4bcf38['push'](_0x4bcf38['shift']());}};_0x4a89be(++_0x3c12be);}(_0x41d9,0x85));var _0x941d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x41d9[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x941d('0x0'));var rimraf=require(_0x941d('0x1'));var zipdir=require(_0x941d('0x2'));var jsonpatch=require(_0x941d('0x3'));var rp=require(_0x941d('0x4'));var moment=require(_0x941d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x941d('0x6'));var util=require(_0x941d('0x7'));var path=require(_0x941d('0x8'));var sox=require(_0x941d('0x9'));var csv=require(_0x941d('0xa'));var ejs=require(_0x941d('0xb'));var fs=require('fs');var fs_extra=require(_0x941d('0xc'));var _=require(_0x941d('0xd'));var squel=require(_0x941d('0xe'));var crypto=require(_0x941d('0xf'));var jsforce=require('jsforce');var deskjs=require(_0x941d('0x10'));var toCsv=require(_0x941d('0xa'));var querystring=require(_0x941d('0x11'));var Papa=require(_0x941d('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x941d('0x13'));var as=require(_0x941d('0x14'));var hardwareService=require(_0x941d('0x15'));var logger=require(_0x941d('0x16'))(_0x941d('0x17'));var utils=require(_0x941d('0x18'));var config=require(_0x941d('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x941d('0x1a')]=_[_0x941d('0x1b')](config['redis'],{'host':_0x941d('0x1c'),'port':0x18eb});var socket=require(_0x941d('0x1d'))(new Redis(config[_0x941d('0x1a')]));require('./smsQueue.socket')['register'](socket);function respondWithStatusCode(_0x1ed1bc,_0xbac14b){_0xbac14b=_0xbac14b||0xcc;return function(_0xff2497){if(_0xff2497){return _0x1ed1bc[_0x941d('0x1e')](_0xbac14b);}return _0x1ed1bc[_0x941d('0x1f')](_0xbac14b)[_0x941d('0x20')]();};}function respondWithResult(_0x597d96,_0x1a4991){_0x1a4991=_0x1a4991||0xc8;return function(_0x2a5fc7){if(_0x2a5fc7){return _0x597d96[_0x941d('0x1f')](_0x1a4991)[_0x941d('0x21')](_0x2a5fc7);}};}function respondWithFilteredResult(_0xeb01ef,_0x31da14){return function(_0x3ce41c){if(_0x3ce41c){var _0x2717af=typeof _0x31da14[_0x941d('0x22')]===_0x941d('0x23')&&typeof _0x31da14[_0x941d('0x24')]===_0x941d('0x23');var _0x3922af=_0x3ce41c[_0x941d('0x25')];var _0x45a4a6=_0x2717af?0x0:_0x31da14[_0x941d('0x22')];var _0x4e2ee2=_0x2717af?_0x3ce41c[_0x941d('0x25')]:_0x31da14[_0x941d('0x22')]+_0x31da14['limit'];var _0x35039f;if(_0x4e2ee2>=_0x3922af){_0x4e2ee2=_0x3922af;_0x35039f=0xc8;}else{_0x35039f=0xce;}_0xeb01ef[_0x941d('0x1f')](_0x35039f);return _0xeb01ef[_0x941d('0x26')](_0x941d('0x27'),_0x45a4a6+'-'+_0x4e2ee2+'/'+_0x3922af)[_0x941d('0x21')](_0x3ce41c);}return null;};}function patchUpdates(_0x37badc){return function(_0x40ed59){try{jsonpatch[_0x941d('0x28')](_0x40ed59,_0x37badc,!![]);}catch(_0x1e0cae){return BPromise[_0x941d('0x29')](_0x1e0cae);}return _0x40ed59[_0x941d('0x2a')]();};}function saveUpdates(_0x220d4c,_0x5335d8){return function(_0x388ff5){if(_0x388ff5){return _0x388ff5[_0x941d('0x2b')](_0x220d4c)[_0x941d('0x2c')](function(_0x287a90){return _0x287a90;});}return null;};}function removeEntity(_0x12c334,_0x120b07){return function(_0x24c8bf){if(_0x24c8bf){return _0x24c8bf['destroy']()[_0x941d('0x2c')](function(){var _0x4a9642=_0x24c8bf[_0x941d('0x2d')]({'plain':!![]});var _0xa02949=_0x941d('0x2e');return db['UserProfileResource'][_0x941d('0x2f')]({'where':{'type':_0xa02949,'resourceId':_0x4a9642['id']}})['then'](function(){return _0x24c8bf;});})['then'](function(){_0x12c334['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x49988f,_0x2a0766){return function(_0x48b37a){if(!_0x48b37a){_0x49988f[_0x941d('0x1e')](0x194);}return _0x48b37a;};}function handleError(_0x3d3ab4,_0x510101){_0x510101=_0x510101||0x1f4;return function(_0x43ff12){logger['error'](_0x43ff12[_0x941d('0x30')]);if(_0x43ff12[_0x941d('0x31')]){delete _0x43ff12['name'];}_0x3d3ab4[_0x941d('0x1f')](_0x510101)[_0x941d('0x32')](_0x43ff12);};}exports[_0x941d('0x33')]=function(_0x225a9c,_0x20113d){var _0x5eed23={},_0x18c028={},_0x1eb58a={'count':0x0,'rows':[]};var _0x499ea3=_[_0x941d('0x34')](db[_0x941d('0x35')][_0x941d('0x36')],function(_0x4535c4){return{'name':_0x4535c4[_0x941d('0x37')],'type':_0x4535c4['type'][_0x941d('0x38')]};});_0x18c028[_0x941d('0x39')]=_[_0x941d('0x34')](_0x499ea3,_0x941d('0x31'));_0x18c028[_0x941d('0x3a')]=_['keys'](_0x225a9c['query']);_0x18c028[_0x941d('0x3b')]=_['intersection'](_0x18c028['model'],_0x18c028['query']);_0x5eed23[_0x941d('0x3c')]=_['intersection'](_0x18c028[_0x941d('0x39')],qs['fields'](_0x225a9c['query'][_0x941d('0x3d')]));_0x5eed23[_0x941d('0x3c')]=_0x5eed23['attributes'][_0x941d('0x3e')]?_0x5eed23[_0x941d('0x3c')]:_0x18c028[_0x941d('0x39')];if(!_0x225a9c['query']['hasOwnProperty']('nolimit')){_0x5eed23[_0x941d('0x24')]=qs[_0x941d('0x24')](_0x225a9c[_0x941d('0x3a')][_0x941d('0x24')]);_0x5eed23['offset']=qs[_0x941d('0x22')](_0x225a9c[_0x941d('0x3a')][_0x941d('0x22')]);}_0x5eed23[_0x941d('0x3f')]=qs['sort'](_0x225a9c[_0x941d('0x3a')]['sort']);_0x5eed23[_0x941d('0x40')]=qs[_0x941d('0x3b')](_[_0x941d('0x41')](_0x225a9c['query'],_0x18c028[_0x941d('0x3b')]),_0x499ea3);if(_0x225a9c[_0x941d('0x3a')]['filter']){_0x5eed23[_0x941d('0x40')]=_['merge'](_0x5eed23[_0x941d('0x40')],{'$or':_[_0x941d('0x34')](_0x499ea3,function(_0x14545b){if(_0x14545b[_0x941d('0x42')]!==_0x941d('0x43')){var _0x1e715c={};_0x1e715c[_0x14545b[_0x941d('0x31')]]={'$like':'%'+_0x225a9c[_0x941d('0x3a')][_0x941d('0x44')]+'%'};return _0x1e715c;}})});}_0x5eed23=_[_0x941d('0x45')]({},_0x5eed23,_0x225a9c['options']);var _0x1b3902={'where':_0x5eed23['where']};return db['SmsQueue'][_0x941d('0x25')](_0x1b3902)[_0x941d('0x2c')](function(_0x9d3f3e){_0x1eb58a[_0x941d('0x25')]=_0x9d3f3e;if(_0x225a9c['query'][_0x941d('0x46')]){_0x5eed23[_0x941d('0x47')]=[{'all':!![]}];}return db[_0x941d('0x35')]['findAll'](_0x5eed23);})[_0x941d('0x2c')](function(_0x1da77e){_0x1eb58a[_0x941d('0x48')]=_0x1da77e;return _0x1eb58a;})[_0x941d('0x2c')](respondWithFilteredResult(_0x20113d,_0x5eed23))[_0x941d('0x49')](handleError(_0x20113d,null));};exports[_0x941d('0x4a')]=function(_0x59866a,_0x40d49e){var _0x1f6459={'raw':!![],'where':{'id':_0x59866a['params']['id']}},_0x1bd09a={};_0x1bd09a['model']=_[_0x941d('0x4b')](db[_0x941d('0x35')][_0x941d('0x36')]);_0x1bd09a[_0x941d('0x3a')]=_[_0x941d('0x4b')](_0x59866a[_0x941d('0x3a')]);_0x1bd09a['filters']=_[_0x941d('0x4c')](_0x1bd09a['model'],_0x1bd09a['query']);_0x1f6459[_0x941d('0x3c')]=_['intersection'](_0x1bd09a[_0x941d('0x39')],qs[_0x941d('0x3d')](_0x59866a['query']['fields']));_0x1f6459['attributes']=_0x1f6459[_0x941d('0x3c')]['length']?_0x1f6459[_0x941d('0x3c')]:_0x1bd09a['model'];if(_0x59866a[_0x941d('0x3a')]['includeAll']){_0x1f6459[_0x941d('0x47')]=[{'all':!![]}];}_0x1f6459=_[_0x941d('0x45')]({},_0x1f6459,_0x59866a[_0x941d('0x4d')]);return db[_0x941d('0x35')]['find'](_0x1f6459)[_0x941d('0x2c')](handleEntityNotFound(_0x40d49e,null))[_0x941d('0x2c')](respondWithResult(_0x40d49e,null))[_0x941d('0x49')](handleError(_0x40d49e,null));};exports[_0x941d('0x4e')]=function(_0x36baec,_0x1fb394){return db[_0x941d('0x35')][_0x941d('0x4e')](_0x36baec[_0x941d('0x4f')],{})[_0x941d('0x2c')](function(_0x45db11){var _0x55061a=_0x36baec[_0x941d('0x50')]['get']({'plain':!![]});if(!_0x55061a)throw new Error(_0x941d('0x51'));if(_0x55061a[_0x941d('0x52')]===_0x941d('0x50')){var _0x393d9e=_0x45db11['get']({'plain':!![]});var _0x3802b4='SmsQueues';return db[_0x941d('0x53')]['find']({'where':{'name':_0x3802b4,'userProfileId':_0x55061a[_0x941d('0x54')]},'raw':!![]})['then'](function(_0x525339){if(_0x525339&&_0x525339[_0x941d('0x55')]===0x0){return db['UserProfileResource']['create']({'name':_0x393d9e[_0x941d('0x31')],'resourceId':_0x393d9e['id'],'type':_0x525339[_0x941d('0x31')],'sectionId':_0x525339['id']},{})[_0x941d('0x2c')](function(){return _0x45db11;});}else{return _0x45db11;}})[_0x941d('0x49')](function(_0x4137a7){logger[_0x941d('0x56')](_0x941d('0x57'),_0x4137a7);throw _0x4137a7;});}return _0x45db11;})['then'](respondWithResult(_0x1fb394,0xc9))[_0x941d('0x49')](handleError(_0x1fb394,null));};exports['update']=function(_0xd3d272,_0x5e4d94){if(_0xd3d272['body']['id']){delete _0xd3d272[_0x941d('0x4f')]['id'];}return db[_0x941d('0x35')][_0x941d('0x58')]({'where':{'id':_0xd3d272[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x5e4d94,null))[_0x941d('0x2c')](saveUpdates(_0xd3d272[_0x941d('0x4f')],null))['then'](respondWithResult(_0x5e4d94,null))[_0x941d('0x49')](handleError(_0x5e4d94,null));};exports[_0x941d('0x2f')]=function(_0xfa3c0c,_0x2b270a){return db[_0x941d('0x35')][_0x941d('0x58')]({'where':{'id':_0xfa3c0c[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x2b270a,null))[_0x941d('0x2c')](removeEntity(_0x2b270a,null))[_0x941d('0x49')](handleError(_0x2b270a,null));};exports[_0x941d('0x5a')]=function(_0x33cca5,_0x587c9b){return db[_0x941d('0x35')][_0x941d('0x5a')]()[_0x941d('0x2c')](respondWithResult(_0x587c9b,null))[_0x941d('0x49')](handleError(_0x587c9b,null));};exports[_0x941d('0x5b')]=function(_0x458b31,_0x3e4cf5,_0x14dc3f){var _0x1dcbcb={'raw':!![],'where':{}},_0x34537b={},_0x4311cc;return db[_0x941d('0x35')][_0x941d('0x5c')]({'where':{'id':_0x458b31[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x3e4cf5,null))[_0x941d('0x2c')](function(_0x4c7dee){if(_0x4c7dee){_0x4311cc=_0x4c7dee['get']({'plain':!![]});_0x34537b[_0x941d('0x39')]=_['keys'](db[_0x941d('0x5d')][_0x941d('0x36')]);_0x34537b[_0x941d('0x3a')]=_[_0x941d('0x4b')](_0x458b31[_0x941d('0x3a')]);_0x34537b[_0x941d('0x3b')]=_[_0x941d('0x4c')](_0x34537b[_0x941d('0x39')],_0x34537b[_0x941d('0x3a')]);_0x1dcbcb[_0x941d('0x3c')]=_[_0x941d('0x4c')](_0x34537b['model'],qs[_0x941d('0x3d')](_0x458b31['query'][_0x941d('0x3d')]));_0x1dcbcb[_0x941d('0x3c')]=_0x1dcbcb[_0x941d('0x3c')][_0x941d('0x3e')]?_0x1dcbcb[_0x941d('0x3c')]:_0x34537b[_0x941d('0x39')];if(!_0x458b31[_0x941d('0x3a')][_0x941d('0x5e')]('nolimit')){_0x1dcbcb['limit']=qs[_0x941d('0x24')](_0x458b31[_0x941d('0x3a')]['limit']);_0x1dcbcb[_0x941d('0x22')]=qs[_0x941d('0x22')](_0x458b31[_0x941d('0x3a')][_0x941d('0x22')]);}_0x1dcbcb['order']=qs[_0x941d('0x5f')](_0x458b31[_0x941d('0x3a')]['sort']);_0x1dcbcb['where']=qs['filters'](_[_0x941d('0x41')](_0x458b31['query'],_0x34537b[_0x941d('0x3b')]));_0x1dcbcb[_0x941d('0x40')][_0x941d('0x60')]=_0x4c7dee['id'];if(_0x458b31[_0x941d('0x3a')][_0x941d('0x44')]){_0x1dcbcb[_0x941d('0x40')]=_[_0x941d('0x45')](_0x1dcbcb[_0x941d('0x40')],{'$or':_[_0x941d('0x34')](_0x1dcbcb[_0x941d('0x3c')],function(_0x5d7d12){var _0x27e61c={};_0x27e61c[_0x5d7d12]={'$like':'%'+_0x458b31[_0x941d('0x3a')]['filter']+'%'};return _0x27e61c;})});}_0x1dcbcb=_['merge']({},_0x1dcbcb,_0x458b31['options']);return db[_0x941d('0x5d')][_0x941d('0x61')](_0x1dcbcb);}})[_0x941d('0x2c')](function(_0x168b5b){if(_0x168b5b){return db[_0x941d('0x62')][_0x941d('0x63')]({'where':{'id':_[_0x941d('0x34')](_0x168b5b,_0x941d('0x64')),'role':_0x941d('0x65')},'attributes':['id',_0x941d('0x31'),_0x941d('0x66'),'updatedAt','createdAt']});}})[_0x941d('0x2c')](function(_0x4798ec){if(_0x4798ec){return{'count':_0x4798ec['count'],'rows':_['map'](_0x4798ec[_0x941d('0x48')],function(_0x1a9fea){return{'membername':_0x1a9fea[_0x941d('0x31')],'UserId':_0x1a9fea['id'],'queue_name':_0x4311cc[_0x941d('0x31')],'SmsQueueId':_0x4311cc['id'],'interface':util[_0x941d('0x67')](_0x941d('0x68'),_0x941d('0x69'),_0x1a9fea[_0x941d('0x31')]),'penalty':0x0,'paused':_0x1a9fea[_0x941d('0x66')],'createdAt':_0x1a9fea[_0x941d('0x6a')],'updatedAt':_0x1a9fea['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x941d('0x2c')](respondWithFilteredResult(_0x3e4cf5,_0x1dcbcb))['catch'](handleError(_0x3e4cf5,null));};exports[_0x941d('0x6b')]=function(_0x62802,_0x567cfc,_0x83c059){var _0x5dc289={};var _0x198bb1={};var _0x46522a;var _0x42b4a5;return db[_0x941d('0x35')][_0x941d('0x5c')]({'where':{'id':_0x62802[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x567cfc,null))[_0x941d('0x2c')](function(_0xf7eaf0){if(_0xf7eaf0){_0x46522a=_0xf7eaf0;_0x198bb1[_0x941d('0x39')]=_['keys'](db[_0x941d('0x6c')][_0x941d('0x36')]);_0x198bb1[_0x941d('0x3a')]=_['keys'](_0x62802[_0x941d('0x3a')]);_0x198bb1[_0x941d('0x3b')]=_[_0x941d('0x4c')](_0x198bb1[_0x941d('0x39')],_0x198bb1[_0x941d('0x3a')]);_0x5dc289[_0x941d('0x3c')]=_[_0x941d('0x4c')](_0x198bb1[_0x941d('0x39')],qs[_0x941d('0x3d')](_0x62802[_0x941d('0x3a')][_0x941d('0x3d')]));_0x5dc289[_0x941d('0x3c')]=_0x5dc289[_0x941d('0x3c')][_0x941d('0x3e')]?_0x5dc289[_0x941d('0x3c')]:_0x198bb1[_0x941d('0x39')];_0x5dc289[_0x941d('0x3f')]=qs[_0x941d('0x5f')](_0x62802['query']['sort']);_0x5dc289[_0x941d('0x40')]=qs[_0x941d('0x3b')](_['pick'](_0x62802[_0x941d('0x3a')],_0x198bb1[_0x941d('0x3b')]));if(_0x62802['query'][_0x941d('0x44')]){_0x5dc289[_0x941d('0x40')]=_[_0x941d('0x45')](_0x5dc289[_0x941d('0x40')],{'$or':_[_0x941d('0x34')](_0x5dc289[_0x941d('0x3c')],function(_0x7dd5ea){var _0x1b0b07={};_0x1b0b07[_0x7dd5ea]={'$like':'%'+_0x62802[_0x941d('0x3a')][_0x941d('0x44')]+'%'};return _0x1b0b07;})});}_0x5dc289=_[_0x941d('0x45')]({},_0x5dc289,_0x62802[_0x941d('0x4d')]);return _0x46522a[_0x941d('0x6b')](_0x5dc289);}})[_0x941d('0x2c')](function(_0x14c405){if(_0x14c405){_0x42b4a5=_0x14c405[_0x941d('0x3e')];if(!_0x62802[_0x941d('0x3a')][_0x941d('0x5e')](_0x941d('0x6d'))){_0x5dc289[_0x941d('0x24')]=qs[_0x941d('0x24')](_0x62802[_0x941d('0x3a')]['limit']);_0x5dc289[_0x941d('0x22')]=qs['offset'](_0x62802[_0x941d('0x3a')][_0x941d('0x22')]);}return _0x46522a['getTeams'](_0x5dc289);}})[_0x941d('0x2c')](function(_0x14eeb8){if(_0x14eeb8){return _0x14eeb8?{'count':_0x42b4a5,'rows':_0x14eeb8}:null;}})['then'](respondWithResult(_0x567cfc,null))[_0x941d('0x49')](handleError(_0x567cfc,null));};exports['addTeams']=function(_0x4b7e6c,_0x298242,_0x321fc6){var _0x80abef=_0x4b7e6c['body'][_0x941d('0x6e')];return db[_0x941d('0x6c')][_0x941d('0x61')]({'where':{'id':_0x80abef},'attributes':['id'],'include':[{'model':db[_0x941d('0x62')],'as':_0x941d('0x6f'),'attributes':['id',_0x941d('0x31'),_0x941d('0x70'),_0x941d('0x71'),'interface'],'raw':!![]}]})[_0x941d('0x2c')](function(_0xd052ab){if(_0xd052ab){var _0x588f12=_[_0x941d('0x72')](_0xd052ab,function(_0x30bb82){var _0x4ad3f9=_0x30bb82[_0x941d('0x2d')]({'plain':!![]});return _0x4ad3f9['Agents'];});return db[_0x941d('0x35')]['find']({'where':{'id':_0x4b7e6c[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](function(_0x3f51f9){return db['sequelize'][_0x941d('0x73')](function(_0x567679){return _0x3f51f9['addTeams'](_0x80abef,{'transaction':_0x567679})[_0x941d('0x2c')](function(){return BPromise['each'](_0x588f12,function(_0x11ff5c){return db[_0x941d('0x5d')]['findOrCreate']({'where':{'UserId':_0x11ff5c['id'],'SmsQueueId':_0x4b7e6c[_0x941d('0x59')]['id']},'transaction':_0x567679});});})[_0x941d('0x2c')](function(){_0x588f12['forEach'](function(_0xfcd99e){socket[_0x941d('0x74')](_0x941d('0x75'),{'UserId':_0xfcd99e['id'],'SmsQueueId':_0x3f51f9['id']});});});});});}})[_0x941d('0x2c')](respondWithStatusCode(_0x298242,null))[_0x941d('0x49')](handleError(_0x298242,null));};exports[_0x941d('0x76')]=function(_0x4d018e,_0x539dca,_0x5e12b5){return db['Team'][_0x941d('0x61')]({'where':{'id':_0x4d018e[_0x941d('0x3a')][_0x941d('0x6e')]},'attributes':['id'],'include':[{'model':db[_0x941d('0x62')],'as':_0x941d('0x6f'),'attributes':['id'],'raw':!![]}]})[_0x941d('0x2c')](handleEntityNotFound(_0x539dca,null))[_0x941d('0x2c')](function(_0x391c79){var _0x4319e6=_[_0x941d('0x34')](_0x391c79,'id');var _0x5f4304=[];var _0x2d685f=[];var _0x33f10e=squel['select']();_0x33f10e[_0x941d('0x77')](_0x941d('0x78'))[_0x941d('0x79')](_0x941d('0x7a'),'tq')['join'](_0x941d('0x7b'),'ut',_0x941d('0x7c'))['where'](_0x941d('0x7d'),_0x4d018e[_0x941d('0x59')]['id']);for(var _0x839116=0x0;_0x839116<_0x391c79[_0x941d('0x3e')];_0x839116+=0x1){let _0x2ae260=_0x391c79[_0x839116];for(var _0x100050=0x0;_0x100050<_0x2ae260[_0x941d('0x6f')][_0x941d('0x3e')];_0x100050+=0x1){let _0x410903=_0x2ae260['Agents'][_0x100050];var _0x311035=_0x33f10e[_0x941d('0x7e')]();_0x311035[_0x941d('0x40')](_0x941d('0x7f'),_0x410903['id']);_0x2d685f['push'](db[_0x941d('0x80')]['query'](_0x311035[_0x941d('0x81')](),{'type':db[_0x941d('0x80')][_0x941d('0x82')][_0x941d('0x83')]})[_0x941d('0x2c')](function(_0x479131){if(_0x479131[_0x941d('0x3e')]===0x1){return _0x410903['id'];}else{var _0x1452dd=_[_0x941d('0x84')](_['map'](_0x479131,_0x941d('0x85')),function(_0x1397d6){return _[_0x941d('0x86')](_0x4319e6,_0x1397d6);});if(_0x1452dd){return _0x410903['id'];}}}));}}return BPromise['all'](_0x2d685f)[_0x941d('0x2c')](function(_0x525e80){_0x5f4304=_(_0x5f4304)[_0x941d('0x87')](_0x525e80)[_0x941d('0x88')]()['value']();return db['SmsQueue'][_0x941d('0x58')]({'where':{'id':_0x4d018e[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](function(_0x4ceb6a){return db[_0x941d('0x80')][_0x941d('0x73')](function(_0xcca66b){return _0x4ceb6a[_0x941d('0x76')](_0x4d018e[_0x941d('0x3a')][_0x941d('0x6e')],{'transaction':_0xcca66b})[_0x941d('0x2c')](function(){if(!_['isEmpty'](_0x5f4304)){return _0x4ceb6a[_0x941d('0x89')](_0x5f4304,{'transaction':_0xcca66b});}})[_0x941d('0x2c')](function(){_0x5f4304['forEach'](function(_0x254f68){socket['emit'](_0x941d('0x8a'),{'UserId':_0x254f68,'SmsQueueId':_0x4ceb6a['id']});});});});});});})[_0x941d('0x2c')](respondWithStatusCode(_0x539dca,null))['catch'](handleError(_0x539dca,null));};exports[_0x941d('0x8b')]=function(_0x1d0a88,_0x22e97a,_0x477bbd){return db['SmsQueue']['find']({'where':{'id':_0x1d0a88[_0x941d('0x59')]['id']}})['then'](handleEntityNotFound(_0x22e97a,null))[_0x941d('0x2c')](function(_0x4a6e80){if(_0x4a6e80){return _0x4a6e80['addAgents'](_0x1d0a88[_0x941d('0x4f')][_0x941d('0x6e')],_['omit'](_0x1d0a88['body'],[_0x941d('0x6e'),'id'])||{})['spread'](function(_0x4d1e8a){for(var _0x254289=0x0;_0x254289<_0x1d0a88[_0x941d('0x4f')]['ids'][_0x941d('0x3e')];_0x254289+=0x1){socket[_0x941d('0x74')](_0x941d('0x75'),{'UserId':Number(_0x1d0a88['body'][_0x941d('0x6e')][_0x254289]),'SmsQueueId':Number(_0x1d0a88[_0x941d('0x59')]['id'])});}return _0x4d1e8a;});}})[_0x941d('0x2c')](respondWithResult(_0x22e97a,null))[_0x941d('0x49')](handleError(_0x22e97a,null));};exports[_0x941d('0x89')]=function(_0x1237eb,_0x4f3897,_0x47903a){return db[_0x941d('0x35')]['find']({'where':{'id':_0x1237eb[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x4f3897,null))[_0x941d('0x2c')](function(_0x1d3827){if(_0x1d3827){return _0x1d3827[_0x941d('0x89')](_0x1237eb[_0x941d('0x3a')][_0x941d('0x6e')])['then'](function(){if(_[_0x941d('0x8c')](_0x1237eb[_0x941d('0x3a')][_0x941d('0x6e')])){for(var _0x2bf523=0x0;_0x2bf523<_0x1237eb[_0x941d('0x3a')]['ids'][_0x941d('0x3e')];_0x2bf523+=0x1){socket['emit'](_0x941d('0x8a'),{'UserId':Number(_0x1237eb['query'][_0x941d('0x6e')][_0x2bf523]),'SmsQueueId':Number(_0x1237eb[_0x941d('0x59')]['id'])});}}else{socket[_0x941d('0x74')](_0x941d('0x8a'),{'UserId':Number(_0x1237eb['query']['ids']),'SmsQueueId':Number(_0x1237eb[_0x941d('0x59')]['id'])});}});}})['then'](respondWithStatusCode(_0x4f3897,null))[_0x941d('0x49')](handleError(_0x4f3897,null));};exports['getAgents']=function(_0xee9d67,_0x3c5266,_0x3f3092){var _0x49604d={};var _0x320a38={};var _0x36a22a;var _0x274cd9;return db[_0x941d('0x35')]['findOne']({'where':{'id':_0xee9d67[_0x941d('0x59')]['id']}})[_0x941d('0x2c')](handleEntityNotFound(_0x3c5266,null))[_0x941d('0x2c')](function(_0x39632b){if(_0x39632b){_0x36a22a=_0x39632b;_0x320a38[_0x941d('0x39')]=_[_0x941d('0x4b')](db['User'][_0x941d('0x36')]);_0x320a38['query']=_[_0x941d('0x4b')](_0xee9d67[_0x941d('0x3a')]);_0x320a38[_0x941d('0x3b')]=_[_0x941d('0x4c')](_0x320a38[_0x941d('0x39')],_0x320a38[_0x941d('0x3a')]);_0x49604d[_0x941d('0x3c')]=_[_0x941d('0x4c')](_0x320a38['model'],qs[_0x941d('0x3d')](_0xee9d67['query'][_0x941d('0x3d')]));_0x49604d[_0x941d('0x3c')]=_0x49604d[_0x941d('0x3c')][_0x941d('0x3e')]?_0x49604d['attributes']:_0x320a38['model'];_0x49604d[_0x941d('0x3f')]=qs[_0x941d('0x5f')](_0xee9d67['query'][_0x941d('0x5f')]);_0x49604d[_0x941d('0x40')]=qs['filters'](_[_0x941d('0x41')](_0xee9d67[_0x941d('0x3a')],_0x320a38['filters']));if(_0xee9d67['query'][_0x941d('0x44')]){_0x49604d[_0x941d('0x40')]=_[_0x941d('0x45')](_0x49604d[_0x941d('0x40')],{'$or':_[_0x941d('0x34')](_0x49604d['attributes'],function(_0x14885a){var _0x459bc0={};_0x459bc0[_0x14885a]={'$like':'%'+_0xee9d67[_0x941d('0x3a')]['filter']+'%'};return _0x459bc0;})});}_0x49604d=_['merge']({},_0x49604d,_0xee9d67[_0x941d('0x4d')]);return _0x36a22a[_0x941d('0x8d')](_0x49604d);}})[_0x941d('0x2c')](function(_0x33f84a){if(_0x33f84a){_0x274cd9=_0x33f84a[_0x941d('0x3e')];if(!_0xee9d67['query'][_0x941d('0x5e')](_0x941d('0x6d'))){_0x49604d['limit']=qs[_0x941d('0x24')](_0xee9d67[_0x941d('0x3a')]['limit']);_0x49604d[_0x941d('0x22')]=qs[_0x941d('0x22')](_0xee9d67[_0x941d('0x3a')][_0x941d('0x22')]);}return _0x36a22a[_0x941d('0x8d')](_0x49604d);}})[_0x941d('0x2c')](function(_0x205ff3){if(_0x205ff3){return _0x205ff3?{'count':_0x274cd9,'rows':_0x205ff3}:null;}})[_0x941d('0x2c')](respondWithResult(_0x3c5266,null))['catch'](handleError(_0x3c5266,null));};
\ No newline at end of file
+var _0x528e=['getTeams','Team','ids','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','forEach','emit','userSmsQueue:save','removeTeams','select','field','tq.TeamId','team_has_sms_queues','join','ut.TeamId\x20=\x20tq.TeamId','clone','push','toString','SELECT','TeamId','all','union','compact','value','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','sendStatus','status','undefined','limit','offset','count','set','Content-Range','json','reject','save','destroy','get','SmsQueues','UserProfileResource','then','error','stack','send','index','map','SmsQueue','rawAttributes','fieldName','type','name','keys','intersection','model','query','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','includeAll','findAll','rows','show','params','include','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','getMembers','UserSmsQueue','hasOwnProperty','SmsQueueId','User','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','format','%s/%s','SIP'];(function(_0xd43aed,_0x556f54){var _0x4aa694=function(_0x56817d){while(--_0x56817d){_0xd43aed['push'](_0xd43aed['shift']());}};_0x4aa694(++_0x556f54);}(_0x528e,0x1d2));var _0xe528=function(_0x5e83f8,_0x33d0a0){_0x5e83f8=_0x5e83f8-0x0;var _0x5b687a=_0x528e[_0x5e83f8];return _0x5b687a;};'use strict';var emlformat=require(_0xe528('0x0'));var rimraf=require(_0xe528('0x1'));var zipdir=require(_0xe528('0x2'));var jsonpatch=require(_0xe528('0x3'));var rp=require(_0xe528('0x4'));var moment=require(_0xe528('0x5'));var BPromise=require(_0xe528('0x6'));var Mustache=require(_0xe528('0x7'));var util=require(_0xe528('0x8'));var path=require(_0xe528('0x9'));var sox=require('sox');var csv=require(_0xe528('0xa'));var ejs=require(_0xe528('0xb'));var fs=require('fs');var fs_extra=require(_0xe528('0xc'));var _=require(_0xe528('0xd'));var squel=require('squel');var crypto=require(_0xe528('0xe'));var jsforce=require(_0xe528('0xf'));var deskjs=require(_0xe528('0x10'));var toCsv=require(_0xe528('0xa'));var querystring=require(_0xe528('0x11'));var Papa=require(_0xe528('0x12'));var Redis=require(_0xe528('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe528('0x14'));var hardwareService=require(_0xe528('0x15'));var logger=require(_0xe528('0x16'))(_0xe528('0x17'));var utils=require(_0xe528('0x18'));var config=require(_0xe528('0x19'));var licenseUtil=require(_0xe528('0x1a'));var db=require('../../mysqldb')['db'];config[_0xe528('0x1b')]=_[_0xe528('0x1c')](config[_0xe528('0x1b')],{'host':_0xe528('0x1d'),'port':0x18eb});var socket=require(_0xe528('0x1e'))(new Redis(config[_0xe528('0x1b')]));require(_0xe528('0x1f'))[_0xe528('0x20')](socket);function respondWithStatusCode(_0x474e5b,_0x59b4b6){_0x59b4b6=_0x59b4b6||0xcc;return function(_0xad291b){if(_0xad291b){return _0x474e5b[_0xe528('0x21')](_0x59b4b6);}return _0x474e5b[_0xe528('0x22')](_0x59b4b6)['end']();};}function respondWithResult(_0x2a5987,_0x224692){_0x224692=_0x224692||0xc8;return function(_0x1c0109){if(_0x1c0109){return _0x2a5987[_0xe528('0x22')](_0x224692)['json'](_0x1c0109);}};}function respondWithFilteredResult(_0x4ac3b9,_0x24b472){return function(_0x46bae3){if(_0x46bae3){var _0x37c37f=typeof _0x24b472['offset']===_0xe528('0x23')&&typeof _0x24b472[_0xe528('0x24')]===_0xe528('0x23');var _0x537fef=_0x46bae3['count'];var _0x15f609=_0x37c37f?0x0:_0x24b472[_0xe528('0x25')];var _0x28450f=_0x37c37f?_0x46bae3[_0xe528('0x26')]:_0x24b472[_0xe528('0x25')]+_0x24b472[_0xe528('0x24')];var _0x3b3ce6;if(_0x28450f>=_0x537fef){_0x28450f=_0x537fef;_0x3b3ce6=0xc8;}else{_0x3b3ce6=0xce;}_0x4ac3b9[_0xe528('0x22')](_0x3b3ce6);return _0x4ac3b9[_0xe528('0x27')](_0xe528('0x28'),_0x15f609+'-'+_0x28450f+'/'+_0x537fef)[_0xe528('0x29')](_0x46bae3);}return null;};}function patchUpdates(_0x1affe9){return function(_0x35fc10){try{jsonpatch['apply'](_0x35fc10,_0x1affe9,!![]);}catch(_0x192c1d){return BPromise[_0xe528('0x2a')](_0x192c1d);}return _0x35fc10[_0xe528('0x2b')]();};}function saveUpdates(_0x5982e2,_0xf7d31d){return function(_0x48b204){if(_0x48b204){return _0x48b204['update'](_0x5982e2)['then'](function(_0x420855){return _0x420855;});}return null;};}function removeEntity(_0x1b5cc6,_0xe444b0){return function(_0x351dc9){if(_0x351dc9){return _0x351dc9[_0xe528('0x2c')]()['then'](function(){var _0x10dd55=_0x351dc9[_0xe528('0x2d')]({'plain':!![]});var _0x4d0541=_0xe528('0x2e');return db[_0xe528('0x2f')]['destroy']({'where':{'type':_0x4d0541,'resourceId':_0x10dd55['id']}})['then'](function(){return _0x351dc9;});})[_0xe528('0x30')](function(){_0x1b5cc6[_0xe528('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fb96d,_0x4aaf55){return function(_0x51c047){if(!_0x51c047){_0x3fb96d[_0xe528('0x21')](0x194);}return _0x51c047;};}function handleError(_0x2dc1fa,_0x2cfa19){_0x2cfa19=_0x2cfa19||0x1f4;return function(_0x17f85e){logger[_0xe528('0x31')](_0x17f85e[_0xe528('0x32')]);if(_0x17f85e['name']){delete _0x17f85e['name'];}_0x2dc1fa['status'](_0x2cfa19)[_0xe528('0x33')](_0x17f85e);};}exports[_0xe528('0x34')]=function(_0x4fd987,_0x55c966){var _0x68e21f={},_0x49efcb={},_0x22bee6={'count':0x0,'rows':[]};var _0x556bad=_[_0xe528('0x35')](db[_0xe528('0x36')][_0xe528('0x37')],function(_0x360461){return{'name':_0x360461[_0xe528('0x38')],'type':_0x360461[_0xe528('0x39')]['key']};});_0x49efcb['model']=_['map'](_0x556bad,_0xe528('0x3a'));_0x49efcb['query']=_[_0xe528('0x3b')](_0x4fd987['query']);_0x49efcb['filters']=_[_0xe528('0x3c')](_0x49efcb[_0xe528('0x3d')],_0x49efcb['query']);_0x68e21f['attributes']=_[_0xe528('0x3c')](_0x49efcb[_0xe528('0x3d')],qs['fields'](_0x4fd987[_0xe528('0x3e')][_0xe528('0x3f')]));_0x68e21f[_0xe528('0x40')]=_0x68e21f['attributes'][_0xe528('0x41')]?_0x68e21f['attributes']:_0x49efcb[_0xe528('0x3d')];if(!_0x4fd987[_0xe528('0x3e')]['hasOwnProperty'](_0xe528('0x42'))){_0x68e21f[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x4fd987[_0xe528('0x3e')][_0xe528('0x24')]);_0x68e21f['offset']=qs[_0xe528('0x25')](_0x4fd987[_0xe528('0x3e')][_0xe528('0x25')]);}_0x68e21f[_0xe528('0x43')]=qs['sort'](_0x4fd987[_0xe528('0x3e')][_0xe528('0x44')]);_0x68e21f[_0xe528('0x45')]=qs[_0xe528('0x46')](_[_0xe528('0x47')](_0x4fd987[_0xe528('0x3e')],_0x49efcb[_0xe528('0x46')]),_0x556bad);if(_0x4fd987['query'][_0xe528('0x48')]){_0x68e21f[_0xe528('0x45')]=_[_0xe528('0x49')](_0x68e21f[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x556bad,function(_0x1a4891){if(_0x1a4891[_0xe528('0x39')]!=='VIRTUAL'){var _0x39dd3e={};_0x39dd3e[_0x1a4891[_0xe528('0x3a')]]={'$like':'%'+_0x4fd987['query'][_0xe528('0x48')]+'%'};return _0x39dd3e;}})});}_0x68e21f=_[_0xe528('0x49')]({},_0x68e21f,_0x4fd987['options']);var _0x59da60={'where':_0x68e21f['where']};return db[_0xe528('0x36')][_0xe528('0x26')](_0x59da60)['then'](function(_0x534436){_0x22bee6[_0xe528('0x26')]=_0x534436;if(_0x4fd987[_0xe528('0x3e')][_0xe528('0x4a')]){_0x68e21f['include']=[{'all':!![]}];}return db[_0xe528('0x36')][_0xe528('0x4b')](_0x68e21f);})[_0xe528('0x30')](function(_0x38e0a3){_0x22bee6[_0xe528('0x4c')]=_0x38e0a3;return _0x22bee6;})[_0xe528('0x30')](respondWithFilteredResult(_0x55c966,_0x68e21f))['catch'](handleError(_0x55c966,null));};exports[_0xe528('0x4d')]=function(_0x419f4d,_0x2748ed){var _0x2054bb={'raw':!![],'where':{'id':_0x419f4d[_0xe528('0x4e')]['id']}},_0xcc2e83={};_0xcc2e83['model']=_[_0xe528('0x3b')](db[_0xe528('0x36')]['rawAttributes']);_0xcc2e83[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0x419f4d[_0xe528('0x3e')]);_0xcc2e83[_0xe528('0x46')]=_[_0xe528('0x3c')](_0xcc2e83[_0xe528('0x3d')],_0xcc2e83['query']);_0x2054bb[_0xe528('0x40')]=_[_0xe528('0x3c')](_0xcc2e83[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0x419f4d[_0xe528('0x3e')][_0xe528('0x3f')]));_0x2054bb[_0xe528('0x40')]=_0x2054bb['attributes'][_0xe528('0x41')]?_0x2054bb[_0xe528('0x40')]:_0xcc2e83[_0xe528('0x3d')];if(_0x419f4d[_0xe528('0x3e')][_0xe528('0x4a')]){_0x2054bb[_0xe528('0x4f')]=[{'all':!![]}];}_0x2054bb=_[_0xe528('0x49')]({},_0x2054bb,_0x419f4d[_0xe528('0x50')]);return db['SmsQueue'][_0xe528('0x51')](_0x2054bb)[_0xe528('0x30')](handleEntityNotFound(_0x2748ed,null))[_0xe528('0x30')](respondWithResult(_0x2748ed,null))[_0xe528('0x52')](handleError(_0x2748ed,null));};exports[_0xe528('0x53')]=function(_0x4e0732,_0x533cd1){return db[_0xe528('0x36')][_0xe528('0x53')](_0x4e0732['body'],{})[_0xe528('0x30')](function(_0x363035){var _0x5e96bc=_0x4e0732['user']['get']({'plain':!![]});if(!_0x5e96bc)throw new Error(_0xe528('0x54'));if(_0x5e96bc[_0xe528('0x55')]===_0xe528('0x56')){var _0x3148bd=_0x363035[_0xe528('0x2d')]({'plain':!![]});var _0x2dd641=_0xe528('0x2e');return db[_0xe528('0x57')][_0xe528('0x51')]({'where':{'name':_0x2dd641,'userProfileId':_0x5e96bc['userProfileId']},'raw':!![]})[_0xe528('0x30')](function(_0x4d27fb){if(_0x4d27fb&&_0x4d27fb[_0xe528('0x58')]===0x0){return db[_0xe528('0x2f')][_0xe528('0x53')]({'name':_0x3148bd[_0xe528('0x3a')],'resourceId':_0x3148bd['id'],'type':_0x4d27fb['name'],'sectionId':_0x4d27fb['id']},{})[_0xe528('0x30')](function(){return _0x363035;});}else{return _0x363035;}})[_0xe528('0x52')](function(_0x3b7b4d){logger[_0xe528('0x31')](_0xe528('0x59'),_0x3b7b4d);throw _0x3b7b4d;});}return _0x363035;})['then'](respondWithResult(_0x533cd1,0xc9))['catch'](handleError(_0x533cd1,null));};exports[_0xe528('0x5a')]=function(_0x364db8,_0x5b74ea){if(_0x364db8['body']['id']){delete _0x364db8[_0xe528('0x5b')]['id'];}return db['SmsQueue'][_0xe528('0x51')]({'where':{'id':_0x364db8[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x5b74ea,null))[_0xe528('0x30')](saveUpdates(_0x364db8[_0xe528('0x5b')],null))[_0xe528('0x30')](respondWithResult(_0x5b74ea,null))['catch'](handleError(_0x5b74ea,null));};exports[_0xe528('0x2c')]=function(_0x869c18,_0x363f60){return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x869c18[_0xe528('0x4e')]['id']}})['then'](handleEntityNotFound(_0x363f60,null))[_0xe528('0x30')](removeEntity(_0x363f60,null))[_0xe528('0x52')](handleError(_0x363f60,null));};exports['describe']=function(_0x1afd40,_0x59d2cc){return db[_0xe528('0x36')]['describe']()['then'](respondWithResult(_0x59d2cc,null))['catch'](handleError(_0x59d2cc,null));};exports[_0xe528('0x5c')]=function(_0xb111b6,_0x26ee4a,_0x4f2170){var _0x51576b={'raw':!![],'where':{}},_0x3a37ba={},_0x443f97;return db['SmsQueue']['findOne']({'where':{'id':_0xb111b6[_0xe528('0x4e')]['id']}})['then'](handleEntityNotFound(_0x26ee4a,null))[_0xe528('0x30')](function(_0x1130f2){if(_0x1130f2){_0x443f97=_0x1130f2[_0xe528('0x2d')]({'plain':!![]});_0x3a37ba[_0xe528('0x3d')]=_['keys'](db[_0xe528('0x5d')]['rawAttributes']);_0x3a37ba[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0xb111b6['query']);_0x3a37ba[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x3a37ba['model'],_0x3a37ba[_0xe528('0x3e')]);_0x51576b['attributes']=_[_0xe528('0x3c')](_0x3a37ba[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x3f')]));_0x51576b[_0xe528('0x40')]=_0x51576b[_0xe528('0x40')][_0xe528('0x41')]?_0x51576b[_0xe528('0x40')]:_0x3a37ba['model'];if(!_0xb111b6[_0xe528('0x3e')][_0xe528('0x5e')]('nolimit')){_0x51576b[_0xe528('0x24')]=qs['limit'](_0xb111b6[_0xe528('0x3e')]['limit']);_0x51576b['offset']=qs[_0xe528('0x25')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x25')]);}_0x51576b[_0xe528('0x43')]=qs[_0xe528('0x44')](_0xb111b6[_0xe528('0x3e')][_0xe528('0x44')]);_0x51576b[_0xe528('0x45')]=qs[_0xe528('0x46')](_[_0xe528('0x47')](_0xb111b6[_0xe528('0x3e')],_0x3a37ba[_0xe528('0x46')]));_0x51576b['where'][_0xe528('0x5f')]=_0x1130f2['id'];if(_0xb111b6[_0xe528('0x3e')]['filter']){_0x51576b[_0xe528('0x45')]=_['merge'](_0x51576b[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x51576b[_0xe528('0x40')],function(_0x1f1a25){var _0x5b23b5={};_0x5b23b5[_0x1f1a25]={'$like':'%'+_0xb111b6[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x5b23b5;})});}_0x51576b=_[_0xe528('0x49')]({},_0x51576b,_0xb111b6['options']);return db[_0xe528('0x5d')][_0xe528('0x4b')](_0x51576b);}})[_0xe528('0x30')](function(_0x49601d){if(_0x49601d){return db[_0xe528('0x60')][_0xe528('0x61')]({'where':{'id':_[_0xe528('0x35')](_0x49601d,_0xe528('0x62')),'role':_0xe528('0x63')},'attributes':['id',_0xe528('0x3a'),_0xe528('0x64'),_0xe528('0x65'),_0xe528('0x66')]});}})[_0xe528('0x30')](function(_0xf833a8){if(_0xf833a8){return{'count':_0xf833a8[_0xe528('0x26')],'rows':_[_0xe528('0x35')](_0xf833a8[_0xe528('0x4c')],function(_0xcaf4ae){return{'membername':_0xcaf4ae[_0xe528('0x3a')],'UserId':_0xcaf4ae['id'],'queue_name':_0x443f97[_0xe528('0x3a')],'SmsQueueId':_0x443f97['id'],'interface':util[_0xe528('0x67')](_0xe528('0x68'),_0xe528('0x69'),_0xcaf4ae[_0xe528('0x3a')]),'penalty':0x0,'paused':_0xcaf4ae['smsPause'],'createdAt':_0xcaf4ae[_0xe528('0x66')],'updatedAt':_0xcaf4ae[_0xe528('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xe528('0x30')](respondWithFilteredResult(_0x26ee4a,_0x51576b))[_0xe528('0x52')](handleError(_0x26ee4a,null));};exports[_0xe528('0x6a')]=function(_0x16234c,_0x2832fa,_0x1fb04a){var _0x1c9998={};var _0x1e906a={};var _0x142239;var _0x882171;return db['SmsQueue']['findOne']({'where':{'id':_0x16234c[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x2832fa,null))[_0xe528('0x30')](function(_0xcee740){if(_0xcee740){_0x142239=_0xcee740;_0x1e906a[_0xe528('0x3d')]=_[_0xe528('0x3b')](db[_0xe528('0x6b')]['rawAttributes']);_0x1e906a['query']=_[_0xe528('0x3b')](_0x16234c['query']);_0x1e906a[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x1e906a[_0xe528('0x3d')],_0x1e906a[_0xe528('0x3e')]);_0x1c9998[_0xe528('0x40')]=_[_0xe528('0x3c')](_0x1e906a[_0xe528('0x3d')],qs[_0xe528('0x3f')](_0x16234c[_0xe528('0x3e')][_0xe528('0x3f')]));_0x1c9998[_0xe528('0x40')]=_0x1c9998[_0xe528('0x40')][_0xe528('0x41')]?_0x1c9998['attributes']:_0x1e906a[_0xe528('0x3d')];_0x1c9998[_0xe528('0x43')]=qs['sort'](_0x16234c[_0xe528('0x3e')][_0xe528('0x44')]);_0x1c9998[_0xe528('0x45')]=qs['filters'](_[_0xe528('0x47')](_0x16234c[_0xe528('0x3e')],_0x1e906a[_0xe528('0x46')]));if(_0x16234c[_0xe528('0x3e')][_0xe528('0x48')]){_0x1c9998[_0xe528('0x45')]=_['merge'](_0x1c9998[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x1c9998[_0xe528('0x40')],function(_0x3b3286){var _0x67c842={};_0x67c842[_0x3b3286]={'$like':'%'+_0x16234c[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x67c842;})});}_0x1c9998=_[_0xe528('0x49')]({},_0x1c9998,_0x16234c['options']);return _0x142239[_0xe528('0x6a')](_0x1c9998);}})[_0xe528('0x30')](function(_0x3cdeb3){if(_0x3cdeb3){_0x882171=_0x3cdeb3[_0xe528('0x41')];if(!_0x16234c['query']['hasOwnProperty']('nolimit')){_0x1c9998[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x16234c[_0xe528('0x3e')][_0xe528('0x24')]);_0x1c9998[_0xe528('0x25')]=qs[_0xe528('0x25')](_0x16234c[_0xe528('0x3e')][_0xe528('0x25')]);}return _0x142239[_0xe528('0x6a')](_0x1c9998);}})['then'](function(_0x50c3d9){if(_0x50c3d9){return _0x50c3d9?{'count':_0x882171,'rows':_0x50c3d9}:null;}})[_0xe528('0x30')](respondWithResult(_0x2832fa,null))[_0xe528('0x52')](handleError(_0x2832fa,null));};exports['addTeams']=function(_0x109802,_0xd995df,_0x4d9c28){var _0x54183b=_0x109802['body'][_0xe528('0x6c')];return db[_0xe528('0x6b')][_0xe528('0x4b')]({'where':{'id':_0x54183b},'attributes':['id'],'include':[{'model':db[_0xe528('0x60')],'as':_0xe528('0x6d'),'attributes':['id',_0xe528('0x3a'),_0xe528('0x6e'),_0xe528('0x6f'),_0xe528('0x70')],'raw':!![]}]})[_0xe528('0x30')](function(_0xf2e4c4){if(_0xf2e4c4){var _0x9b4fd4=_['flatMap'](_0xf2e4c4,function(_0x4dc69f){var _0x3c4a96=_0x4dc69f[_0xe528('0x2d')]({'plain':!![]});return _0x3c4a96[_0xe528('0x6d')];});return db[_0xe528('0x36')]['find']({'where':{'id':_0x109802[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](function(_0x5d39e4){return db[_0xe528('0x71')][_0xe528('0x72')](function(_0x15a7bc){return _0x5d39e4[_0xe528('0x73')](_0x54183b,{'transaction':_0x15a7bc})[_0xe528('0x30')](function(){return BPromise[_0xe528('0x74')](_0x9b4fd4,function(_0x137c1c){return db[_0xe528('0x5d')]['findOrCreate']({'where':{'UserId':_0x137c1c['id'],'SmsQueueId':_0x109802[_0xe528('0x4e')]['id']},'transaction':_0x15a7bc});});})[_0xe528('0x30')](function(){_0x9b4fd4[_0xe528('0x75')](function(_0x1c0091){socket[_0xe528('0x76')](_0xe528('0x77'),{'UserId':_0x1c0091['id'],'SmsQueueId':_0x5d39e4['id']});});});});});}})[_0xe528('0x30')](respondWithStatusCode(_0xd995df,null))[_0xe528('0x52')](handleError(_0xd995df,null));};exports[_0xe528('0x78')]=function(_0x2b3323,_0x1ba7c6,_0x207184){return db['Team'][_0xe528('0x4b')]({'where':{'id':_0x2b3323[_0xe528('0x3e')][_0xe528('0x6c')]},'attributes':['id'],'include':[{'model':db[_0xe528('0x60')],'as':_0xe528('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xe528('0x30')](handleEntityNotFound(_0x1ba7c6,null))[_0xe528('0x30')](function(_0x58c374){var _0x36899a=_[_0xe528('0x35')](_0x58c374,'id');var _0x28d4ab=[];var _0x1e9a5f=[];var _0x376fe6=squel[_0xe528('0x79')]();_0x376fe6[_0xe528('0x7a')](_0xe528('0x7b'))['from'](_0xe528('0x7c'),'tq')[_0xe528('0x7d')]('user_has_teams','ut',_0xe528('0x7e'))[_0xe528('0x45')]('SmsQueueId\x20=\x20?',_0x2b3323[_0xe528('0x4e')]['id']);for(var _0x7e532f=0x0;_0x7e532f<_0x58c374[_0xe528('0x41')];_0x7e532f+=0x1){let _0x282e21=_0x58c374[_0x7e532f];for(var _0x5157b6=0x0;_0x5157b6<_0x282e21['Agents'][_0xe528('0x41')];_0x5157b6+=0x1){let _0x3bdbcd=_0x282e21[_0xe528('0x6d')][_0x5157b6];var _0x51a4bf=_0x376fe6[_0xe528('0x7f')]();_0x51a4bf[_0xe528('0x45')]('ut.UserId\x20=\x20?',_0x3bdbcd['id']);_0x1e9a5f[_0xe528('0x80')](db[_0xe528('0x71')]['query'](_0x51a4bf[_0xe528('0x81')](),{'type':db[_0xe528('0x71')]['QueryTypes'][_0xe528('0x82')]})['then'](function(_0x4c40ae){if(_0x4c40ae[_0xe528('0x41')]===0x1){return _0x3bdbcd['id'];}else{var _0x37fa66=_['every'](_['map'](_0x4c40ae,_0xe528('0x83')),function(_0x55becb){return _['includes'](_0x36899a,_0x55becb);});if(_0x37fa66){return _0x3bdbcd['id'];}}}));}}return BPromise[_0xe528('0x84')](_0x1e9a5f)[_0xe528('0x30')](function(_0x5c3e22){_0x28d4ab=_(_0x28d4ab)[_0xe528('0x85')](_0x5c3e22)[_0xe528('0x86')]()[_0xe528('0x87')]();return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x2b3323['params']['id']}})[_0xe528('0x30')](function(_0x5a8c67){return db['sequelize']['transaction'](function(_0x173556){return _0x5a8c67[_0xe528('0x78')](_0x2b3323[_0xe528('0x3e')]['ids'],{'transaction':_0x173556})[_0xe528('0x30')](function(){if(!_[_0xe528('0x88')](_0x28d4ab)){return _0x5a8c67[_0xe528('0x89')](_0x28d4ab,{'transaction':_0x173556});}})[_0xe528('0x30')](function(){_0x28d4ab[_0xe528('0x75')](function(_0x5e2bf8){socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':_0x5e2bf8,'SmsQueueId':_0x5a8c67['id']});});});});});});})['then'](respondWithStatusCode(_0x1ba7c6,null))[_0xe528('0x52')](handleError(_0x1ba7c6,null));};exports[_0xe528('0x8b')]=function(_0x3b5d5c,_0x5b1b93,_0x2f6482){return db[_0xe528('0x36')]['find']({'where':{'id':_0x3b5d5c[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x5b1b93,null))['then'](function(_0x4f3308){if(_0x4f3308){return _0x4f3308[_0xe528('0x8b')](_0x3b5d5c[_0xe528('0x5b')][_0xe528('0x6c')],_[_0xe528('0x8c')](_0x3b5d5c[_0xe528('0x5b')],[_0xe528('0x6c'),'id'])||{})['spread'](function(_0x86bf26){for(var _0x383923=0x0;_0x383923<_0x3b5d5c[_0xe528('0x5b')]['ids'][_0xe528('0x41')];_0x383923+=0x1){socket[_0xe528('0x76')](_0xe528('0x77'),{'UserId':Number(_0x3b5d5c[_0xe528('0x5b')][_0xe528('0x6c')][_0x383923]),'SmsQueueId':Number(_0x3b5d5c[_0xe528('0x4e')]['id'])});}return _0x86bf26;});}})[_0xe528('0x30')](respondWithResult(_0x5b1b93,null))['catch'](handleError(_0x5b1b93,null));};exports['removeAgents']=function(_0x4dfca8,_0xfd565f,_0x326938){return db[_0xe528('0x36')][_0xe528('0x51')]({'where':{'id':_0x4dfca8[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0xfd565f,null))[_0xe528('0x30')](function(_0x159743){if(_0x159743){return _0x159743[_0xe528('0x89')](_0x4dfca8[_0xe528('0x3e')][_0xe528('0x6c')])[_0xe528('0x30')](function(){if(_[_0xe528('0x8d')](_0x4dfca8[_0xe528('0x3e')][_0xe528('0x6c')])){for(var _0xa03cbe=0x0;_0xa03cbe<_0x4dfca8['query']['ids'][_0xe528('0x41')];_0xa03cbe+=0x1){socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':Number(_0x4dfca8[_0xe528('0x3e')]['ids'][_0xa03cbe]),'SmsQueueId':Number(_0x4dfca8[_0xe528('0x4e')]['id'])});}}else{socket[_0xe528('0x76')](_0xe528('0x8a'),{'UserId':Number(_0x4dfca8[_0xe528('0x3e')]['ids']),'SmsQueueId':Number(_0x4dfca8['params']['id'])});}});}})['then'](respondWithStatusCode(_0xfd565f,null))[_0xe528('0x52')](handleError(_0xfd565f,null));};exports[_0xe528('0x8e')]=function(_0x3c200f,_0x4e7538,_0x1d1e9c){var _0x1a3974={};var _0x420b7f={};var _0x3ffc0e;var _0x53f089;return db[_0xe528('0x36')]['findOne']({'where':{'id':_0x3c200f[_0xe528('0x4e')]['id']}})[_0xe528('0x30')](handleEntityNotFound(_0x4e7538,null))[_0xe528('0x30')](function(_0x3dc070){if(_0x3dc070){_0x3ffc0e=_0x3dc070;_0x420b7f[_0xe528('0x3d')]=_['keys'](db[_0xe528('0x60')]['rawAttributes']);_0x420b7f[_0xe528('0x3e')]=_[_0xe528('0x3b')](_0x3c200f[_0xe528('0x3e')]);_0x420b7f[_0xe528('0x46')]=_[_0xe528('0x3c')](_0x420b7f[_0xe528('0x3d')],_0x420b7f[_0xe528('0x3e')]);_0x1a3974['attributes']=_[_0xe528('0x3c')](_0x420b7f['model'],qs[_0xe528('0x3f')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x3f')]));_0x1a3974[_0xe528('0x40')]=_0x1a3974['attributes']['length']?_0x1a3974[_0xe528('0x40')]:_0x420b7f['model'];_0x1a3974['order']=qs[_0xe528('0x44')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x44')]);_0x1a3974['where']=qs['filters'](_[_0xe528('0x47')](_0x3c200f[_0xe528('0x3e')],_0x420b7f[_0xe528('0x46')]));if(_0x3c200f['query'][_0xe528('0x48')]){_0x1a3974[_0xe528('0x45')]=_[_0xe528('0x49')](_0x1a3974[_0xe528('0x45')],{'$or':_[_0xe528('0x35')](_0x1a3974[_0xe528('0x40')],function(_0x2feb3e){var _0x4dab7f={};_0x4dab7f[_0x2feb3e]={'$like':'%'+_0x3c200f[_0xe528('0x3e')][_0xe528('0x48')]+'%'};return _0x4dab7f;})});}_0x1a3974=_[_0xe528('0x49')]({},_0x1a3974,_0x3c200f[_0xe528('0x50')]);return _0x3ffc0e['getAgents'](_0x1a3974);}})[_0xe528('0x30')](function(_0x276f44){if(_0x276f44){_0x53f089=_0x276f44[_0xe528('0x41')];if(!_0x3c200f[_0xe528('0x3e')][_0xe528('0x5e')]('nolimit')){_0x1a3974[_0xe528('0x24')]=qs[_0xe528('0x24')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x24')]);_0x1a3974[_0xe528('0x25')]=qs[_0xe528('0x25')](_0x3c200f[_0xe528('0x3e')][_0xe528('0x25')]);}return _0x3ffc0e['getAgents'](_0x1a3974);}})[_0xe528('0x30')](function(_0x25ea02){if(_0x25ea02){return _0x25ea02?{'count':_0x53f089,'rows':_0x25ea02}:null;}})['then'](respondWithResult(_0x4e7538,null))[_0xe528('0x52')](handleError(_0x4e7538,null));};
\ No newline at end of file
index 9c4c12f..5d5842b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x564f=['events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x564f,0x195));var _0xf564=function(_0x469a8d,_0xc45998){_0x469a8d=_0x469a8d-0x0;var _0x1e58dc=_0x564f[_0x469a8d];return _0x1e58dc;};'use strict';var EventEmitter=require(_0xf564('0x0'));var SmsQueue=require('../../mysqldb')['db']['SmsQueue'];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xf564('0x1')](0x0);var events={'afterCreate':_0xf564('0x2'),'afterUpdate':_0xf564('0x3'),'afterDestroy':_0xf564('0x4')};function emitEvent(_0x536c53){return function(_0x45cb43,_0x2c076f,_0x4f4b06){SmsQueueEvents[_0xf564('0x5')](_0x536c53+':'+_0x45cb43['id'],_0x45cb43);SmsQueueEvents[_0xf564('0x5')](_0x536c53,_0x45cb43);_0x4f4b06(null);};}for(var e in events){if(events[_0xf564('0x6')](e)){var event=events[e];SmsQueue[_0xf564('0x7')](e,emitEvent(event));}}module[_0xf564('0x8')]=SmsQueueEvents;
\ No newline at end of file
+var _0xf6b1=['exports','../../mysqldb','SmsQueue','update','remove','emit','hasOwnProperty','hook'];(function(_0x12a554,_0x3d7ef8){var _0x244ba0=function(_0x5eb5ff){while(--_0x5eb5ff){_0x12a554['push'](_0x12a554['shift']());}};_0x244ba0(++_0x3d7ef8);}(_0xf6b1,0x71));var _0x1f6b=function(_0x226efe,_0x340ac6){_0x226efe=_0x226efe-0x0;var _0x37af89=_0xf6b1[_0x226efe];return _0x37af89;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x1f6b('0x0'))['db'][_0x1f6b('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1f6b('0x2'),'afterDestroy':_0x1f6b('0x3')};function emitEvent(_0x468e0b){return function(_0x2c5d72,_0x6c8f8f,_0x26eac1){SmsQueueEvents['emit'](_0x468e0b+':'+_0x2c5d72['id'],_0x2c5d72);SmsQueueEvents[_0x1f6b('0x4')](_0x468e0b,_0x2c5d72);_0x26eac1(null);};}for(var e in events){if(events[_0x1f6b('0x5')](e)){var event=events[e];SmsQueue[_0x1f6b('0x6')](e,emitEvent(event));}}module[_0x1f6b('0x7')]=SmsQueueEvents;
\ No newline at end of file
index 4f2bdf4..73d5454 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x103d=['request-promise','path','rimraf','./smsQueue.attributes','define','SmsQueue','lodash','../../config/logger','api','moment','bluebird'];(function(_0x3c5c37,_0x3f5565){var _0x423010=function(_0x2e7918){while(--_0x2e7918){_0x3c5c37['push'](_0x3c5c37['shift']());}};_0x423010(++_0x3f5565);}(_0x103d,0xe2));var _0xd103=function(_0xd1d19a,_0x1933f0){_0xd1d19a=_0xd1d19a-0x0;var _0x52a79d=_0x103d[_0xd1d19a];return _0x52a79d;};'use strict';var _=require(_0xd103('0x0'));var util=require('util');var logger=require(_0xd103('0x1'))(_0xd103('0x2'));var moment=require(_0xd103('0x3'));var BPromise=require(_0xd103('0x4'));var rp=require(_0xd103('0x5'));var fs=require('fs');var path=require(_0xd103('0x6'));var rimraf=require(_0xd103('0x7'));var config=require('../../config/environment');var attributes=require(_0xd103('0x8'));module['exports']=function(_0x7b6d34,_0x50da8a){return _0x7b6d34[_0xd103('0x9')](_0xd103('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9170=['../../config/environment','exports','define','SmsQueue','sms_queues','lodash','util','../../config/logger','bluebird','request-promise','path'];(function(_0x647346,_0x55d42d){var _0x45063f=function(_0x5ec743){while(--_0x5ec743){_0x647346['push'](_0x647346['shift']());}};_0x45063f(++_0x55d42d);}(_0x9170,0xe1));var _0x0917=function(_0x332935,_0x332a6c){_0x332935=_0x332935-0x0;var _0x1684d4=_0x9170[_0x332935];return _0x1684d4;};'use strict';var _=require(_0x0917('0x0'));var util=require(_0x0917('0x1'));var logger=require(_0x0917('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0917('0x3'));var rp=require(_0x0917('0x4'));var fs=require('fs');var path=require(_0x0917('0x5'));var rimraf=require('rimraf');var config=require(_0x0917('0x6'));var attributes=require('./smsQueue.attributes');module[_0x0917('0x7')]=function(_0x3b927c,_0x10fe5){return _0x3b927c[_0x0917('0x8')](_0x0917('0x9'),attributes,{'tableName':_0x0917('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fa88124..7541682 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5f8=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','register','request','then','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetSmsQueue','SmsQueue','options','where','map','include','attributes','model','info','catch','ShowSmsQueue','raw','lodash','util','moment','bluebird','randomstring'];(function(_0x913ef3,_0x96e9f9){var _0x1dd174=function(_0x4f7f84){while(--_0x4f7f84){_0x913ef3['push'](_0x913ef3['shift']());}};_0x1dd174(++_0x96e9f9);}(_0xf5f8,0x1db));var _0x8f5f=function(_0x5a26aa,_0x11765d){_0x5a26aa=_0x5a26aa-0x0;var _0x1cac6b=_0xf5f8[_0x5a26aa];return _0x1cac6b;};'use strict';var _=require(_0x8f5f('0x0'));var util=require(_0x8f5f('0x1'));var moment=require(_0x8f5f('0x2'));var BPromise=require(_0x8f5f('0x3'));var rs=require(_0x8f5f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x8f5f('0x5'))['db'];var utils=require(_0x8f5f('0x6'));var logger=require(_0x8f5f('0x7'))(_0x8f5f('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x8f5f('0x9')][_0x8f5f('0xa')]({'port':0x232a});config[_0x8f5f('0xb')]=_[_0x8f5f('0xc')](config[_0x8f5f('0xb')],{'host':_0x8f5f('0xd'),'port':0x18eb});var socket=require(_0x8f5f('0xe'))(new Redis(config[_0x8f5f('0xb')]));require(_0x8f5f('0xf'))[_0x8f5f('0x10')](socket);function respondWithRpcPromise(_0x4b01d3,_0x38f150,_0x48ab99){return new BPromise(function(_0x334262,_0x39b253){return client[_0x8f5f('0x11')](_0x4b01d3,_0x48ab99)[_0x8f5f('0x12')](function(_0x313b2c){logger['info'](_0x8f5f('0x13'),_0x38f150,_0x8f5f('0x14'));logger[_0x8f5f('0x15')](_0x8f5f('0x16'),_0x38f150,'request\x20sent',JSON[_0x8f5f('0x17')](_0x313b2c));if(_0x313b2c[_0x8f5f('0x18')]){if(_0x313b2c[_0x8f5f('0x18')][_0x8f5f('0x19')]===0x1f4){logger[_0x8f5f('0x18')](_0x8f5f('0x13'),_0x38f150,_0x313b2c[_0x8f5f('0x18')][_0x8f5f('0x1a')]);return _0x39b253(_0x313b2c[_0x8f5f('0x18')]['message']);}logger['error'](_0x8f5f('0x13'),_0x38f150,_0x313b2c[_0x8f5f('0x18')][_0x8f5f('0x1a')]);return _0x334262(_0x313b2c[_0x8f5f('0x18')][_0x8f5f('0x1a')]);}else{logger['info'](_0x8f5f('0x13'),_0x38f150,_0x8f5f('0x14'));_0x334262(_0x313b2c[_0x8f5f('0x1b')][_0x8f5f('0x1a')]);}})['catch'](function(_0x4cf8da){logger['error'](_0x8f5f('0x13'),_0x38f150,_0x4cf8da);_0x39b253(_0x4cf8da);});});}exports[_0x8f5f('0x1c')]=function(_0x1ee7a2){var _0xca482b=this;return new Promise(function(_0x3912d3,_0x4bfc92){return db[_0x8f5f('0x1d')]['findAll']({'raw':_0x1ee7a2[_0x8f5f('0x1e')]?_0x1ee7a2['options']['raw']===undefined?!![]:![]:!![],'where':_0x1ee7a2[_0x8f5f('0x1e')]?_0x1ee7a2[_0x8f5f('0x1e')][_0x8f5f('0x1f')]||null:null,'attributes':_0x1ee7a2[_0x8f5f('0x1e')]?_0x1ee7a2['options']['attributes']||null:null,'limit':_0x1ee7a2['options']?_0x1ee7a2[_0x8f5f('0x1e')]['limit']||null:null,'include':_0x1ee7a2['options']?_0x1ee7a2[_0x8f5f('0x1e')]['include']?_[_0x8f5f('0x20')](_0x1ee7a2['options'][_0x8f5f('0x21')],function(_0x27f264){return{'model':db[_0x27f264['model']],'as':_0x27f264['as'],'attributes':_0x27f264[_0x8f5f('0x22')],'include':_0x27f264[_0x8f5f('0x21')]?_[_0x8f5f('0x20')](_0x27f264['include'],function(_0x379a1a){return{'model':db[_0x379a1a[_0x8f5f('0x23')]],'as':_0x379a1a['as'],'attributes':_0x379a1a['attributes'],'include':_0x379a1a[_0x8f5f('0x21')]?_[_0x8f5f('0x20')](_0x379a1a['include'],function(_0x4909e2){return{'model':db[_0x4909e2[_0x8f5f('0x23')]],'as':_0x4909e2['as'],'attributes':_0x4909e2[_0x8f5f('0x22')]};}):[]};}):[]};}):[]:[]})[_0x8f5f('0x12')](function(_0x304f66){logger[_0x8f5f('0x24')](_0x8f5f('0x1c'),_0x1ee7a2);logger['debug'](_0x8f5f('0x1c'),_0x1ee7a2,JSON[_0x8f5f('0x17')](_0x304f66));_0x3912d3(_0x304f66);})[_0x8f5f('0x25')](function(_0x5f4041){logger[_0x8f5f('0x18')](_0x8f5f('0x1c'),_0x5f4041[_0x8f5f('0x1a')],_0x1ee7a2);_0x4bfc92(_0xca482b['error'](0x1f4,_0x5f4041['message']));});});};exports[_0x8f5f('0x26')]=function(_0x276116){var _0xdb6cce=this;return new Promise(function(_0x56e9b9,_0x3bdc8f){return db[_0x8f5f('0x1d')]['find']({'raw':_0x276116[_0x8f5f('0x1e')]?_0x276116[_0x8f5f('0x1e')][_0x8f5f('0x27')]===undefined?!![]:![]:!![],'where':_0x276116[_0x8f5f('0x1e')]?_0x276116[_0x8f5f('0x1e')][_0x8f5f('0x1f')]||null:null,'attributes':_0x276116[_0x8f5f('0x1e')]?_0x276116['options'][_0x8f5f('0x22')]||null:null,'include':_0x276116[_0x8f5f('0x1e')]?_0x276116[_0x8f5f('0x1e')][_0x8f5f('0x21')]?_[_0x8f5f('0x20')](_0x276116[_0x8f5f('0x1e')][_0x8f5f('0x21')],function(_0x1c14d5){return{'model':db[_0x1c14d5[_0x8f5f('0x23')]],'as':_0x1c14d5['as'],'attributes':_0x1c14d5[_0x8f5f('0x22')],'include':_0x1c14d5[_0x8f5f('0x21')]?_['map'](_0x1c14d5[_0x8f5f('0x21')],function(_0xb8a2b5){return{'model':db[_0xb8a2b5[_0x8f5f('0x23')]],'as':_0xb8a2b5['as'],'attributes':_0xb8a2b5['attributes'],'include':_0xb8a2b5[_0x8f5f('0x21')]?_['map'](_0xb8a2b5[_0x8f5f('0x21')],function(_0x32b4a1){return{'model':db[_0x32b4a1[_0x8f5f('0x23')]],'as':_0x32b4a1['as'],'attributes':_0x32b4a1[_0x8f5f('0x22')]};}):[]};}):[]};}):[]:[]})[_0x8f5f('0x12')](function(_0x3b6760){logger[_0x8f5f('0x24')](_0x8f5f('0x26'),_0x276116);logger['debug'](_0x8f5f('0x26'),_0x276116,JSON[_0x8f5f('0x17')](_0x3b6760));_0x56e9b9(_0x3b6760);})['catch'](function(_0x293af3){logger['error'](_0x8f5f('0x26'),_0x293af3[_0x8f5f('0x1a')],_0x276116);_0x3bdc8f(_0xdb6cce['error'](0x1f4,_0x293af3[_0x8f5f('0x1a')]));});});};
\ No newline at end of file
+var _0x23d5=['http','redis','localhost','./smsQueue.socket','request','then','info','SmsQueue,\x20%s,\x20%s','debug','SmsQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','GetSmsQueue','findAll','options','where','attributes','limit','include','model','map','catch','SmsQueue','find','raw','ShowSmsQueue','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','client'];(function(_0xfb6ea7,_0x35e031){var _0x1ecfb2=function(_0x727f9f){while(--_0x727f9f){_0xfb6ea7['push'](_0xfb6ea7['shift']());}};_0x1ecfb2(++_0x35e031);}(_0x23d5,0xd1));var _0x523d=function(_0x408d11,_0x503948){_0x408d11=_0x408d11-0x0;var _0x491bc3=_0x23d5[_0x408d11];return _0x491bc3;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x523d('0x0'));var BPromise=require(_0x523d('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x523d('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x523d('0x3'))(_0x523d('0x4'));var config=require(_0x523d('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x523d('0x6')][_0x523d('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0x523d('0x8')],{'host':_0x523d('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x523d('0x8')]));require(_0x523d('0xa'))['register'](socket);function respondWithRpcPromise(_0x19949f,_0x789bd3,_0x3c57f1){return new BPromise(function(_0x3da3e7,_0x452452){return client[_0x523d('0xb')](_0x19949f,_0x3c57f1)[_0x523d('0xc')](function(_0x1fed02){logger[_0x523d('0xd')](_0x523d('0xe'),_0x789bd3,'request\x20sent');logger[_0x523d('0xf')](_0x523d('0x10'),_0x789bd3,_0x523d('0x11'),JSON[_0x523d('0x12')](_0x1fed02));if(_0x1fed02[_0x523d('0x13')]){if(_0x1fed02[_0x523d('0x13')]['code']===0x1f4){logger[_0x523d('0x13')](_0x523d('0xe'),_0x789bd3,_0x1fed02[_0x523d('0x13')][_0x523d('0x14')]);return _0x452452(_0x1fed02[_0x523d('0x13')]['message']);}logger[_0x523d('0x13')]('SmsQueue,\x20%s,\x20%s',_0x789bd3,_0x1fed02[_0x523d('0x13')]['message']);return _0x3da3e7(_0x1fed02['error'][_0x523d('0x14')]);}else{logger[_0x523d('0xd')](_0x523d('0xe'),_0x789bd3,'request\x20sent');_0x3da3e7(_0x1fed02[_0x523d('0x15')][_0x523d('0x14')]);}})['catch'](function(_0xbfe4ec){logger[_0x523d('0x13')]('SmsQueue,\x20%s,\x20%s',_0x789bd3,_0xbfe4ec);_0x452452(_0xbfe4ec);});});}exports[_0x523d('0x16')]=function(_0x4937d4){var _0xc73af6=this;return new Promise(function(_0x54dd0a,_0x309ffc){return db['SmsQueue'][_0x523d('0x17')]({'raw':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')][_0x523d('0x19')]||null:null,'attributes':_0x4937d4['options']?_0x4937d4[_0x523d('0x18')][_0x523d('0x1a')]||null:null,'limit':_0x4937d4[_0x523d('0x18')]?_0x4937d4[_0x523d('0x18')][_0x523d('0x1b')]||null:null,'include':_0x4937d4[_0x523d('0x18')]?_0x4937d4[_0x523d('0x18')][_0x523d('0x1c')]?_['map'](_0x4937d4[_0x523d('0x18')][_0x523d('0x1c')],function(_0x45ba59){return{'model':db[_0x45ba59[_0x523d('0x1d')]],'as':_0x45ba59['as'],'attributes':_0x45ba59[_0x523d('0x1a')],'include':_0x45ba59[_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x45ba59[_0x523d('0x1c')],function(_0x45295d){return{'model':db[_0x45295d[_0x523d('0x1d')]],'as':_0x45295d['as'],'attributes':_0x45295d['attributes'],'include':_0x45295d[_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x45295d['include'],function(_0x161a52){return{'model':db[_0x161a52['model']],'as':_0x161a52['as'],'attributes':_0x161a52[_0x523d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x523d('0xc')](function(_0x261d00){logger['info'](_0x523d('0x16'),_0x4937d4);logger[_0x523d('0xf')](_0x523d('0x16'),_0x4937d4,JSON['stringify'](_0x261d00));_0x54dd0a(_0x261d00);})[_0x523d('0x1f')](function(_0xa7ae45){logger[_0x523d('0x13')](_0x523d('0x16'),_0xa7ae45[_0x523d('0x14')],_0x4937d4);_0x309ffc(_0xc73af6['error'](0x1f4,_0xa7ae45[_0x523d('0x14')]));});});};exports['ShowSmsQueue']=function(_0x2d372c){var _0xeaa233=this;return new Promise(function(_0x2f249c,_0x26fad1){return db[_0x523d('0x20')][_0x523d('0x21')]({'raw':_0x2d372c[_0x523d('0x18')]?_0x2d372c[_0x523d('0x18')][_0x523d('0x22')]===undefined?!![]:![]:!![],'where':_0x2d372c[_0x523d('0x18')]?_0x2d372c[_0x523d('0x18')][_0x523d('0x19')]||null:null,'attributes':_0x2d372c['options']?_0x2d372c[_0x523d('0x18')]['attributes']||null:null,'include':_0x2d372c['options']?_0x2d372c[_0x523d('0x18')][_0x523d('0x1c')]?_[_0x523d('0x1e')](_0x2d372c[_0x523d('0x18')][_0x523d('0x1c')],function(_0x5bf4d6){return{'model':db[_0x5bf4d6[_0x523d('0x1d')]],'as':_0x5bf4d6['as'],'attributes':_0x5bf4d6[_0x523d('0x1a')],'include':_0x5bf4d6['include']?_[_0x523d('0x1e')](_0x5bf4d6[_0x523d('0x1c')],function(_0xeb5a9a){return{'model':db[_0xeb5a9a[_0x523d('0x1d')]],'as':_0xeb5a9a['as'],'attributes':_0xeb5a9a[_0x523d('0x1a')],'include':_0xeb5a9a['include']?_[_0x523d('0x1e')](_0xeb5a9a[_0x523d('0x1c')],function(_0x32a028){return{'model':db[_0x32a028[_0x523d('0x1d')]],'as':_0x32a028['as'],'attributes':_0x32a028[_0x523d('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x523d('0xc')](function(_0xe74594){logger[_0x523d('0xd')](_0x523d('0x23'),_0x2d372c);logger[_0x523d('0xf')](_0x523d('0x23'),_0x2d372c,JSON[_0x523d('0x12')](_0xe74594));_0x2f249c(_0xe74594);})['catch'](function(_0x28a394){logger[_0x523d('0x13')](_0x523d('0x23'),_0x28a394[_0x523d('0x14')],_0x2d372c);_0x26fad1(_0xeaa233[_0x523d('0x13')](0x1f4,_0x28a394['message']));});});};
\ No newline at end of file
index 049ffd3..0717729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0ba=['emit','length','smsQueue:','./smsQueue.events','save','remove'];(function(_0x7ad123,_0xeeeef3){var _0x37d073=function(_0x51367b){while(--_0x51367b){_0x7ad123['push'](_0x7ad123['shift']());}};_0x37d073(++_0xeeeef3);}(_0xc0ba,0x159));var _0xac0b=function(_0x3998ff,_0x58f511){_0x3998ff=_0x3998ff-0x0;var _0xfd997d=_0xc0ba[_0x3998ff];return _0xfd997d;};'use strict';var SmsQueueEvents=require(_0xac0b('0x0'));var events=[_0xac0b('0x1'),_0xac0b('0x2'),'update'];function createListener(_0x5e8d17,_0x529695){return function(_0x3762bf){_0x529695[_0xac0b('0x3')](_0x5e8d17,_0x3762bf);};}function removeListener(_0x4d3091,_0x5769d3){return function(){SmsQueueEvents['removeListener'](_0x4d3091,_0x5769d3);};}exports['register']=function(_0x38ec6a){for(var _0x1de6fe=0x0,_0x46b7f9=events[_0xac0b('0x4')];_0x1de6fe<_0x46b7f9;_0x1de6fe++){var _0x1de42f=events[_0x1de6fe];var _0x2ea172=createListener(_0xac0b('0x5')+_0x1de42f,_0x38ec6a);SmsQueueEvents['on'](_0x1de42f,_0x2ea172);}};
\ No newline at end of file
+var _0xc90b=['save','remove','update','emit','removeListener','register','length','./smsQueue.events'];(function(_0x9fbc3b,_0x9e788d){var _0x1a7970=function(_0x4323c5){while(--_0x4323c5){_0x9fbc3b['push'](_0x9fbc3b['shift']());}};_0x1a7970(++_0x9e788d);}(_0xc90b,0x14f));var _0xbc90=function(_0x39b7df,_0x11bbec){_0x39b7df=_0x39b7df-0x0;var _0x11edbf=_0xc90b[_0x39b7df];return _0x11edbf;};'use strict';var SmsQueueEvents=require(_0xbc90('0x0'));var events=[_0xbc90('0x1'),_0xbc90('0x2'),_0xbc90('0x3')];function createListener(_0x495e72,_0x48d2df){return function(_0x353d5d){_0x48d2df[_0xbc90('0x4')](_0x495e72,_0x353d5d);};}function removeListener(_0x4f0892,_0x285d96){return function(){SmsQueueEvents[_0xbc90('0x5')](_0x4f0892,_0x285d96);};}exports[_0xbc90('0x6')]=function(_0x489b4d){for(var _0x5835c1=0x0,_0x17015b=events[_0xbc90('0x7')];_0x5835c1<_0x17015b;_0x5835c1++){var _0x2489b7=events[_0x5835c1];var _0x17586e=createListener('smsQueue:'+_0x2489b7,_0x489b4d);SmsQueueEvents['on'](_0x2489b7,_0x17586e);}};
\ No newline at end of file
index c4e630a..10d4d9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe946=['post','put','delete','/:id','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','/describe','show'];(function(_0x2c4b06,_0x5e8a08){var _0x3669d5=function(_0x1700a4){while(--_0x1700a4){_0x2c4b06['push'](_0x2c4b06['shift']());}};_0x3669d5(++_0x5e8a08);}(_0xe946,0x18d));var _0x6e94=function(_0x56af4d,_0x135847){_0x56af4d=_0x56af4d-0x0;var _0x5f2a2f=_0xe946[_0x56af4d];return _0x5f2a2f;};'use strict';var multer=require('multer');var util=require(_0x6e94('0x0'));var path=require(_0x6e94('0x1'));var timeout=require('connect-timeout');var express=require(_0x6e94('0x2'));var router=express[_0x6e94('0x3')]();var fs_extra=require(_0x6e94('0x4'));var auth=require(_0x6e94('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x6e94('0x6'));var controller=require('./smsQueueReport.controller');router[_0x6e94('0x7')]('/',auth[_0x6e94('0x8')](),controller['index']);router[_0x6e94('0x7')](_0x6e94('0x9'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x6e94('0x8')](),controller[_0x6e94('0xa')]);router[_0x6e94('0xb')]('/',auth['isAuthenticated'](),controller['create']);router[_0x6e94('0xc')]('/:id',auth[_0x6e94('0x8')](),controller['update']);router[_0x6e94('0xd')](_0x6e94('0xe'),auth[_0x6e94('0x8')](),controller[_0x6e94('0xf')]);module[_0x6e94('0x10')]=router;
\ No newline at end of file
+var _0x36a9=['post','put','/:id','delete','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','show'];(function(_0x5e528a,_0xda2c0b){var _0x248784=function(_0xa47be9){while(--_0xa47be9){_0x5e528a['push'](_0x5e528a['shift']());}};_0x248784(++_0xda2c0b);}(_0x36a9,0x1a3));var _0x936a=function(_0x43a7d5,_0x528d76){_0x43a7d5=_0x43a7d5-0x0;var _0x2d5ab4=_0x36a9[_0x43a7d5];return _0x2d5ab4;};'use strict';var multer=require(_0x936a('0x0'));var util=require(_0x936a('0x1'));var path=require(_0x936a('0x2'));var timeout=require(_0x936a('0x3'));var express=require('express');var router=express[_0x936a('0x4')]();var fs_extra=require(_0x936a('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x936a('0x6'));var config=require(_0x936a('0x7'));var controller=require('./smsQueueReport.controller');router[_0x936a('0x8')]('/',auth['isAuthenticated'](),controller[_0x936a('0x9')]);router['get'](_0x936a('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x936a('0x8')]('/:id',auth[_0x936a('0xb')](),controller[_0x936a('0xc')]);router[_0x936a('0xd')]('/',auth[_0x936a('0xb')](),controller['create']);router[_0x936a('0xe')](_0x936a('0xf'),auth['isAuthenticated'](),controller['update']);router[_0x936a('0x10')](_0x936a('0xf'),auth['isAuthenticated'](),controller[_0x936a('0x11')]);module['exports']=router;
\ No newline at end of file
index 82ab31f..9685949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaf3=['STRING','DATE'];(function(_0x3d7b87,_0x40a471){var _0x368a82=function(_0x4f76e6){while(--_0x4f76e6){_0x3d7b87['push'](_0x3d7b87['shift']());}};_0x368a82(++_0x40a471);}(_0xfaf3,0x118));var _0x3faf=function(_0x4f5a2f,_0x502279){_0x4f5a2f=_0x4f5a2f-0x0;var _0x597ad6=_0xfaf3[_0x4f5a2f];return _0x597ad6;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x3faf('0x0')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x3faf('0x1')]},'leaveAt':{'type':Sequelize[_0x3faf('0x1')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x3faf('0x1')]},'reason':{'type':Sequelize[_0x3faf('0x0')]}};
\ No newline at end of file
+var _0xa092=['DATE','sequelize','STRING'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0xa092,0x17b));var _0x2a09=function(_0x2388be,_0x43ebae){_0x2388be=_0x2388be-0x0;var _0x13ac52=_0xa092[_0x2388be];return _0x13ac52;};'use strict';var moment=require('moment');var Sequelize=require(_0x2a09('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2a09('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0x2a09('0x1')]},'joinAt':{'type':Sequelize[_0x2a09('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x2a09('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x2a09('0x1')]}};
\ No newline at end of file
index efb148e..e0df551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c63=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','set','Content-Range','reject','save','update','destroy','then','error','stack','name','index','map','SmsQueueReport','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','nolimit','limit','sort','pick','filter','where','VIRTUAL','includeAll','include','findAll','catch','show','params','rawAttributes','merge','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','jsforce'];(function(_0x789cb0,_0x26758a){var _0x25046b=function(_0x5e2544){while(--_0x5e2544){_0x789cb0['push'](_0x789cb0['shift']());}};_0x25046b(++_0x26758a);}(_0x5c63,0x10f));var _0x35c6=function(_0x1f354a,_0x2e915d){_0x1f354a=_0x1f354a-0x0;var _0x5909d1=_0x5c63[_0x1f354a];return _0x5909d1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x35c6('0x0'));var zipdir=require(_0x35c6('0x1'));var jsonpatch=require(_0x35c6('0x2'));var rp=require(_0x35c6('0x3'));var moment=require(_0x35c6('0x4'));var BPromise=require(_0x35c6('0x5'));var Mustache=require('mustache');var util=require(_0x35c6('0x6'));var path=require(_0x35c6('0x7'));var sox=require('sox');var csv=require(_0x35c6('0x8'));var ejs=require(_0x35c6('0x9'));var fs=require('fs');var fs_extra=require(_0x35c6('0xa'));var _=require('lodash');var squel=require(_0x35c6('0xb'));var crypto=require('crypto');var jsforce=require(_0x35c6('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x35c6('0xd'));var Papa=require(_0x35c6('0xe'));var Redis=require(_0x35c6('0xf'));var authService=require(_0x35c6('0x10'));var qs=require(_0x35c6('0x11'));var as=require(_0x35c6('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x35c6('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x35c6('0x14'));var licenseUtil=require(_0x35c6('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5dbc56,_0x254b29){_0x254b29=_0x254b29||0xcc;return function(_0x24eb04){if(_0x24eb04){return _0x5dbc56['sendStatus'](_0x254b29);}return _0x5dbc56[_0x35c6('0x16')](_0x254b29)[_0x35c6('0x17')]();};}function respondWithResult(_0x55a77c,_0x333d27){_0x333d27=_0x333d27||0xc8;return function(_0x342a3c){if(_0x342a3c){return _0x55a77c['status'](_0x333d27)[_0x35c6('0x18')](_0x342a3c);}};}function respondWithFilteredResult(_0x1059b5,_0x506349){return function(_0x5eb06c){if(_0x5eb06c){var _0x80b84a=typeof _0x506349[_0x35c6('0x19')]===_0x35c6('0x1a')&&typeof _0x506349['limit']===_0x35c6('0x1a');var _0x4e574a=_0x5eb06c[_0x35c6('0x1b')];var _0x304515=_0x80b84a?0x0:_0x506349[_0x35c6('0x19')];var _0x2ec883=_0x80b84a?_0x5eb06c[_0x35c6('0x1b')]:_0x506349[_0x35c6('0x19')]+_0x506349['limit'];var _0x1df867;if(_0x2ec883>=_0x4e574a){_0x2ec883=_0x4e574a;_0x1df867=0xc8;}else{_0x1df867=0xce;}_0x1059b5['status'](_0x1df867);return _0x1059b5[_0x35c6('0x1c')](_0x35c6('0x1d'),_0x304515+'-'+_0x2ec883+'/'+_0x4e574a)[_0x35c6('0x18')](_0x5eb06c);}return null;};}function patchUpdates(_0x3171c8){return function(_0x16a5f5){try{jsonpatch['apply'](_0x16a5f5,_0x3171c8,!![]);}catch(_0x573c09){return BPromise[_0x35c6('0x1e')](_0x573c09);}return _0x16a5f5[_0x35c6('0x1f')]();};}function saveUpdates(_0x4f4c6b,_0x101e59){return function(_0x25306d){if(_0x25306d){return _0x25306d[_0x35c6('0x20')](_0x4f4c6b)['then'](function(_0x55ba1e){return _0x55ba1e;});}return null;};}function removeEntity(_0x78d618,_0x3e3605){return function(_0x8e4453){if(_0x8e4453){return _0x8e4453[_0x35c6('0x21')]()[_0x35c6('0x22')](function(){_0x78d618[_0x35c6('0x16')](0xcc)[_0x35c6('0x17')]();});}};}function handleEntityNotFound(_0x43b4d4,_0x46e9b5){return function(_0x421371){if(!_0x421371){_0x43b4d4['sendStatus'](0x194);}return _0x421371;};}function handleError(_0x4fe8dd,_0x21c4f8){_0x21c4f8=_0x21c4f8||0x1f4;return function(_0x3859af){logger[_0x35c6('0x23')](_0x3859af[_0x35c6('0x24')]);if(_0x3859af[_0x35c6('0x25')]){delete _0x3859af['name'];}_0x4fe8dd[_0x35c6('0x16')](_0x21c4f8)['send'](_0x3859af);};}exports[_0x35c6('0x26')]=function(_0x42811b,_0x484085){var _0x30edf8={},_0x27787a={},_0x57904b={'count':0x0,'rows':[]};var _0xd22408=_[_0x35c6('0x27')](db[_0x35c6('0x28')]['rawAttributes'],function(_0x5d8c64){return{'name':_0x5d8c64[_0x35c6('0x29')],'type':_0x5d8c64[_0x35c6('0x2a')][_0x35c6('0x2b')]};});_0x27787a[_0x35c6('0x2c')]=_[_0x35c6('0x27')](_0xd22408,_0x35c6('0x25'));_0x27787a[_0x35c6('0x2d')]=_[_0x35c6('0x2e')](_0x42811b[_0x35c6('0x2d')]);_0x27787a[_0x35c6('0x2f')]=_[_0x35c6('0x30')](_0x27787a['model'],_0x27787a[_0x35c6('0x2d')]);_0x30edf8['attributes']=_[_0x35c6('0x30')](_0x27787a[_0x35c6('0x2c')],qs['fields'](_0x42811b[_0x35c6('0x2d')][_0x35c6('0x31')]));_0x30edf8[_0x35c6('0x32')]=_0x30edf8[_0x35c6('0x32')][_0x35c6('0x33')]?_0x30edf8['attributes']:_0x27787a[_0x35c6('0x2c')];if(!_0x42811b[_0x35c6('0x2d')]['hasOwnProperty'](_0x35c6('0x34'))){_0x30edf8[_0x35c6('0x35')]=qs[_0x35c6('0x35')](_0x42811b[_0x35c6('0x2d')][_0x35c6('0x35')]);_0x30edf8[_0x35c6('0x19')]=qs[_0x35c6('0x19')](_0x42811b[_0x35c6('0x2d')][_0x35c6('0x19')]);}_0x30edf8['order']=qs[_0x35c6('0x36')](_0x42811b[_0x35c6('0x2d')]['sort']);_0x30edf8['where']=qs[_0x35c6('0x2f')](_[_0x35c6('0x37')](_0x42811b[_0x35c6('0x2d')],_0x27787a[_0x35c6('0x2f')]),_0xd22408);if(_0x42811b[_0x35c6('0x2d')][_0x35c6('0x38')]){_0x30edf8[_0x35c6('0x39')]=_['merge'](_0x30edf8[_0x35c6('0x39')],{'$or':_[_0x35c6('0x27')](_0xd22408,function(_0x23017f){if(_0x23017f['type']!==_0x35c6('0x3a')){var _0x3bb860={};_0x3bb860[_0x23017f[_0x35c6('0x25')]]={'$like':'%'+_0x42811b[_0x35c6('0x2d')][_0x35c6('0x38')]+'%'};return _0x3bb860;}})});}_0x30edf8=_['merge']({},_0x30edf8,_0x42811b['options']);var _0x5d3407={'where':_0x30edf8[_0x35c6('0x39')]};return db[_0x35c6('0x28')][_0x35c6('0x1b')](_0x5d3407)['then'](function(_0x4d67d2){_0x57904b['count']=_0x4d67d2;if(_0x42811b['query'][_0x35c6('0x3b')]){_0x30edf8[_0x35c6('0x3c')]=[{'all':!![]}];}return db[_0x35c6('0x28')][_0x35c6('0x3d')](_0x30edf8);})[_0x35c6('0x22')](function(_0x3d47f0){_0x57904b['rows']=_0x3d47f0;return _0x57904b;})['then'](respondWithFilteredResult(_0x484085,_0x30edf8))[_0x35c6('0x3e')](handleError(_0x484085,null));};exports[_0x35c6('0x3f')]=function(_0x2f4a7f,_0x1edc19){var _0x12ede7={'raw':!![],'where':{'id':_0x2f4a7f[_0x35c6('0x40')]['id']}},_0x2e9ca5={};_0x2e9ca5[_0x35c6('0x2c')]=_[_0x35c6('0x2e')](db[_0x35c6('0x28')][_0x35c6('0x41')]);_0x2e9ca5[_0x35c6('0x2d')]=_[_0x35c6('0x2e')](_0x2f4a7f[_0x35c6('0x2d')]);_0x2e9ca5[_0x35c6('0x2f')]=_['intersection'](_0x2e9ca5['model'],_0x2e9ca5['query']);_0x12ede7[_0x35c6('0x32')]=_['intersection'](_0x2e9ca5[_0x35c6('0x2c')],qs['fields'](_0x2f4a7f[_0x35c6('0x2d')]['fields']));_0x12ede7[_0x35c6('0x32')]=_0x12ede7[_0x35c6('0x32')]['length']?_0x12ede7[_0x35c6('0x32')]:_0x2e9ca5[_0x35c6('0x2c')];if(_0x2f4a7f[_0x35c6('0x2d')][_0x35c6('0x3b')]){_0x12ede7['include']=[{'all':!![]}];}_0x12ede7=_[_0x35c6('0x42')]({},_0x12ede7,_0x2f4a7f['options']);return db['SmsQueueReport'][_0x35c6('0x43')](_0x12ede7)[_0x35c6('0x22')](handleEntityNotFound(_0x1edc19,null))[_0x35c6('0x22')](respondWithResult(_0x1edc19,null))[_0x35c6('0x3e')](handleError(_0x1edc19,null));};exports[_0x35c6('0x44')]=function(_0x2972c4,_0x33b3ba){return db[_0x35c6('0x28')][_0x35c6('0x44')](_0x2972c4[_0x35c6('0x45')],{})[_0x35c6('0x22')](respondWithResult(_0x33b3ba,0xc9))['catch'](handleError(_0x33b3ba,null));};exports[_0x35c6('0x20')]=function(_0x482a44,_0x38ca68){if(_0x482a44[_0x35c6('0x45')]['id']){delete _0x482a44[_0x35c6('0x45')]['id'];}return db[_0x35c6('0x28')]['find']({'where':{'id':_0x482a44[_0x35c6('0x40')]['id']}})[_0x35c6('0x22')](handleEntityNotFound(_0x38ca68,null))['then'](saveUpdates(_0x482a44[_0x35c6('0x45')],null))[_0x35c6('0x22')](respondWithResult(_0x38ca68,null))[_0x35c6('0x3e')](handleError(_0x38ca68,null));};exports['destroy']=function(_0x27fc7a,_0x4dfb7e){return db[_0x35c6('0x28')][_0x35c6('0x43')]({'where':{'id':_0x27fc7a[_0x35c6('0x40')]['id']}})[_0x35c6('0x22')](handleEntityNotFound(_0x4dfb7e,null))[_0x35c6('0x22')](removeEntity(_0x4dfb7e,null))[_0x35c6('0x3e')](handleError(_0x4dfb7e,null));};exports[_0x35c6('0x46')]=function(_0x4de5f4,_0x26a823){return db[_0x35c6('0x28')][_0x35c6('0x46')]()[_0x35c6('0x22')](respondWithResult(_0x26a823,null))[_0x35c6('0x3e')](handleError(_0x26a823,null));};
\ No newline at end of file
+var _0xe880=['limit','count','set','Content-Range','update','then','end','stack','name','send','index','map','SmsQueueReport','rawAttributes','key','model','keys','filters','intersection','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','includeAll','findAll','rows','catch','show','params','include','options','find','create','body','describe','eml-format','rimraf','fast-json-patch','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','undefined'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe880,0x1d6));var _0x0e88=function(_0x45783c,_0x49c56d){_0x45783c=_0x45783c-0x0;var _0x1161da=_0xe880[_0x45783c];return _0x1161da;};'use strict';var emlformat=require(_0x0e88('0x0'));var rimraf=require(_0x0e88('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0e88('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0e88('0x3'));var util=require(_0x0e88('0x4'));var path=require(_0x0e88('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x0e88('0x6'));var fs=require('fs');var fs_extra=require(_0x0e88('0x7'));var _=require(_0x0e88('0x8'));var squel=require(_0x0e88('0x9'));var crypto=require(_0x0e88('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x0e88('0xb'));var querystring=require(_0x0e88('0xc'));var Papa=require('papaparse');var Redis=require(_0x0e88('0xd'));var authService=require('../../components/auth/service');var qs=require(_0x0e88('0xe'));var as=require(_0x0e88('0xf'));var hardwareService=require(_0x0e88('0x10'));var logger=require(_0x0e88('0x11'))(_0x0e88('0x12'));var utils=require(_0x0e88('0x13'));var config=require(_0x0e88('0x14'));var licenseUtil=require(_0x0e88('0x15'));var db=require(_0x0e88('0x16'))['db'];function respondWithStatusCode(_0x3c7bf9,_0x584653){_0x584653=_0x584653||0xcc;return function(_0x4acc68){if(_0x4acc68){return _0x3c7bf9['sendStatus'](_0x584653);}return _0x3c7bf9[_0x0e88('0x17')](_0x584653)['end']();};}function respondWithResult(_0x5384de,_0x2afff0){_0x2afff0=_0x2afff0||0xc8;return function(_0x3b38c0){if(_0x3b38c0){return _0x5384de[_0x0e88('0x17')](_0x2afff0)[_0x0e88('0x18')](_0x3b38c0);}};}function respondWithFilteredResult(_0x49ad36,_0x1a8a3c){return function(_0x6b2a1d){if(_0x6b2a1d){var _0x186e1d=typeof _0x1a8a3c[_0x0e88('0x19')]===_0x0e88('0x1a')&&typeof _0x1a8a3c[_0x0e88('0x1b')]===_0x0e88('0x1a');var _0xac442a=_0x6b2a1d['count'];var _0xe89b0d=_0x186e1d?0x0:_0x1a8a3c[_0x0e88('0x19')];var _0x26f1e7=_0x186e1d?_0x6b2a1d[_0x0e88('0x1c')]:_0x1a8a3c['offset']+_0x1a8a3c[_0x0e88('0x1b')];var _0x47246f;if(_0x26f1e7>=_0xac442a){_0x26f1e7=_0xac442a;_0x47246f=0xc8;}else{_0x47246f=0xce;}_0x49ad36[_0x0e88('0x17')](_0x47246f);return _0x49ad36[_0x0e88('0x1d')](_0x0e88('0x1e'),_0xe89b0d+'-'+_0x26f1e7+'/'+_0xac442a)['json'](_0x6b2a1d);}return null;};}function patchUpdates(_0x3ead55){return function(_0x120527){try{jsonpatch['apply'](_0x120527,_0x3ead55,!![]);}catch(_0x96bc3a){return BPromise['reject'](_0x96bc3a);}return _0x120527['save']();};}function saveUpdates(_0x352764,_0xd8fdaa){return function(_0x17056f){if(_0x17056f){return _0x17056f[_0x0e88('0x1f')](_0x352764)[_0x0e88('0x20')](function(_0x385bdc){return _0x385bdc;});}return null;};}function removeEntity(_0x2fef5c,_0x16cb0a){return function(_0x48512c){if(_0x48512c){return _0x48512c['destroy']()['then'](function(){_0x2fef5c[_0x0e88('0x17')](0xcc)[_0x0e88('0x21')]();});}};}function handleEntityNotFound(_0x3d06ad,_0x33a7d8){return function(_0x59ac51){if(!_0x59ac51){_0x3d06ad['sendStatus'](0x194);}return _0x59ac51;};}function handleError(_0x1f0354,_0x27f6a2){_0x27f6a2=_0x27f6a2||0x1f4;return function(_0x339421){logger['error'](_0x339421[_0x0e88('0x22')]);if(_0x339421[_0x0e88('0x23')]){delete _0x339421['name'];}_0x1f0354[_0x0e88('0x17')](_0x27f6a2)[_0x0e88('0x24')](_0x339421);};}exports[_0x0e88('0x25')]=function(_0x138dff,_0x3bf846){var _0x32d031={},_0x186ea9={},_0x38d630={'count':0x0,'rows':[]};var _0x19d1f2=_[_0x0e88('0x26')](db[_0x0e88('0x27')][_0x0e88('0x28')],function(_0x573098){return{'name':_0x573098['fieldName'],'type':_0x573098['type'][_0x0e88('0x29')]};});_0x186ea9[_0x0e88('0x2a')]=_[_0x0e88('0x26')](_0x19d1f2,'name');_0x186ea9['query']=_[_0x0e88('0x2b')](_0x138dff['query']);_0x186ea9[_0x0e88('0x2c')]=_[_0x0e88('0x2d')](_0x186ea9[_0x0e88('0x2a')],_0x186ea9[_0x0e88('0x2e')]);_0x32d031['attributes']=_[_0x0e88('0x2d')](_0x186ea9[_0x0e88('0x2a')],qs['fields'](_0x138dff[_0x0e88('0x2e')][_0x0e88('0x2f')]));_0x32d031[_0x0e88('0x30')]=_0x32d031[_0x0e88('0x30')][_0x0e88('0x31')]?_0x32d031[_0x0e88('0x30')]:_0x186ea9[_0x0e88('0x2a')];if(!_0x138dff[_0x0e88('0x2e')][_0x0e88('0x32')](_0x0e88('0x33'))){_0x32d031[_0x0e88('0x1b')]=qs[_0x0e88('0x1b')](_0x138dff['query'][_0x0e88('0x1b')]);_0x32d031[_0x0e88('0x19')]=qs[_0x0e88('0x19')](_0x138dff[_0x0e88('0x2e')][_0x0e88('0x19')]);}_0x32d031[_0x0e88('0x34')]=qs['sort'](_0x138dff['query'][_0x0e88('0x35')]);_0x32d031['where']=qs['filters'](_['pick'](_0x138dff['query'],_0x186ea9[_0x0e88('0x2c')]),_0x19d1f2);if(_0x138dff['query'][_0x0e88('0x36')]){_0x32d031[_0x0e88('0x37')]=_[_0x0e88('0x38')](_0x32d031[_0x0e88('0x37')],{'$or':_[_0x0e88('0x26')](_0x19d1f2,function(_0xb23665){if(_0xb23665[_0x0e88('0x39')]!==_0x0e88('0x3a')){var _0x5b90c0={};_0x5b90c0[_0xb23665[_0x0e88('0x23')]]={'$like':'%'+_0x138dff[_0x0e88('0x2e')][_0x0e88('0x36')]+'%'};return _0x5b90c0;}})});}_0x32d031=_[_0x0e88('0x38')]({},_0x32d031,_0x138dff['options']);var _0x2538f3={'where':_0x32d031['where']};return db['SmsQueueReport'][_0x0e88('0x1c')](_0x2538f3)[_0x0e88('0x20')](function(_0x5dc34e){_0x38d630[_0x0e88('0x1c')]=_0x5dc34e;if(_0x138dff[_0x0e88('0x2e')][_0x0e88('0x3b')]){_0x32d031['include']=[{'all':!![]}];}return db[_0x0e88('0x27')][_0x0e88('0x3c')](_0x32d031);})[_0x0e88('0x20')](function(_0x966185){_0x38d630[_0x0e88('0x3d')]=_0x966185;return _0x38d630;})['then'](respondWithFilteredResult(_0x3bf846,_0x32d031))[_0x0e88('0x3e')](handleError(_0x3bf846,null));};exports[_0x0e88('0x3f')]=function(_0x5caace,_0x57ee32){var _0x7eb8c2={'raw':!![],'where':{'id':_0x5caace[_0x0e88('0x40')]['id']}},_0x231673={};_0x231673[_0x0e88('0x2a')]=_[_0x0e88('0x2b')](db[_0x0e88('0x27')][_0x0e88('0x28')]);_0x231673[_0x0e88('0x2e')]=_[_0x0e88('0x2b')](_0x5caace['query']);_0x231673[_0x0e88('0x2c')]=_[_0x0e88('0x2d')](_0x231673['model'],_0x231673[_0x0e88('0x2e')]);_0x7eb8c2[_0x0e88('0x30')]=_[_0x0e88('0x2d')](_0x231673['model'],qs[_0x0e88('0x2f')](_0x5caace[_0x0e88('0x2e')]['fields']));_0x7eb8c2[_0x0e88('0x30')]=_0x7eb8c2[_0x0e88('0x30')][_0x0e88('0x31')]?_0x7eb8c2[_0x0e88('0x30')]:_0x231673[_0x0e88('0x2a')];if(_0x5caace['query']['includeAll']){_0x7eb8c2[_0x0e88('0x41')]=[{'all':!![]}];}_0x7eb8c2=_[_0x0e88('0x38')]({},_0x7eb8c2,_0x5caace[_0x0e88('0x42')]);return db['SmsQueueReport'][_0x0e88('0x43')](_0x7eb8c2)['then'](handleEntityNotFound(_0x57ee32,null))[_0x0e88('0x20')](respondWithResult(_0x57ee32,null))[_0x0e88('0x3e')](handleError(_0x57ee32,null));};exports[_0x0e88('0x44')]=function(_0x5171da,_0x4b4c15){return db[_0x0e88('0x27')][_0x0e88('0x44')](_0x5171da[_0x0e88('0x45')],{})['then'](respondWithResult(_0x4b4c15,0xc9))[_0x0e88('0x3e')](handleError(_0x4b4c15,null));};exports[_0x0e88('0x1f')]=function(_0x5dd72a,_0x1ed042){if(_0x5dd72a[_0x0e88('0x45')]['id']){delete _0x5dd72a[_0x0e88('0x45')]['id'];}return db[_0x0e88('0x27')][_0x0e88('0x43')]({'where':{'id':_0x5dd72a[_0x0e88('0x40')]['id']}})[_0x0e88('0x20')](handleEntityNotFound(_0x1ed042,null))[_0x0e88('0x20')](saveUpdates(_0x5dd72a[_0x0e88('0x45')],null))['then'](respondWithResult(_0x1ed042,null))[_0x0e88('0x3e')](handleError(_0x1ed042,null));};exports['destroy']=function(_0x572357,_0x1774f2){return db[_0x0e88('0x27')]['find']({'where':{'id':_0x572357[_0x0e88('0x40')]['id']}})[_0x0e88('0x20')](handleEntityNotFound(_0x1774f2,null))['then'](removeEntity(_0x1774f2,null))['catch'](handleError(_0x1774f2,null));};exports[_0x0e88('0x46')]=function(_0x243ff7,_0x4850cb){return db['SmsQueueReport']['describe']()[_0x0e88('0x20')](respondWithResult(_0x4850cb,null))[_0x0e88('0x3e')](handleError(_0x4850cb,null));};
\ No newline at end of file
index 6308735..78cc0b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0xbf231d,_0x44232c){var _0x58689d=function(_0x32f7c2){while(--_0x32f7c2){_0xbf231d['push'](_0xbf231d['shift']());}};_0x58689d(++_0x44232c);}(_0xb7e7,0x121));var _0x7b7e=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0xb7e7[_0xc4001c];return _0x49f7bc;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3e256e,_0x2452db){var _0x46597b=function(_0x54c7fa){while(--_0x54c7fa){_0x3e256e['push'](_0x3e256e['shift']());}};_0x46597b(++_0x2452db);}(_0xb7e7,0x121));var _0x7b7e=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xb7e7[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x7b7e('0x0'));var util=require('util');var logger=require(_0x7b7e('0x1'))('api');var moment=require(_0x7b7e('0x2'));var BPromise=require('bluebird');var rp=require(_0x7b7e('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var attributes=require(_0x7b7e('0x6'));module['exports']=function(_0x53ed64,_0x333fa4){return _0x53ed64[_0x7b7e('0x7')](_0x7b7e('0x8'),attributes,{'tableName':'report_sms_queue','paranoid':![],'indexes':[{'name':_0x7b7e('0x9'),'fields':[_0x7b7e('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index f4e46ab..b82d912 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf52a=['catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','http','request','then','SmsQueueReport,\x20%s,\x20%s','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','CreateSmsQueueReport','create','raw','SmsQueueReport','update','body','options','where','attributes','limit','UpdateSmsQueueReport'];(function(_0x32c651,_0x4dfe40){var _0xca828c=function(_0x5a627e){while(--_0x5a627e){_0x32c651['push'](_0x32c651['shift']());}};_0xca828c(++_0x4dfe40);}(_0xf52a,0x14b));var _0xaf52=function(_0x50c948,_0x3e8328){_0x50c948=_0x50c948-0x0;var _0x510781=_0xf52a[_0x50c948];return _0x510781;};'use strict';var _=require(_0xaf52('0x0'));var util=require(_0xaf52('0x1'));var moment=require(_0xaf52('0x2'));var BPromise=require(_0xaf52('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xaf52('0x4'));var db=require(_0xaf52('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xaf52('0x6'));var config=require(_0xaf52('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xaf52('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x38a5c0,_0x1f576d,_0x182798){return new BPromise(function(_0x93b2a8,_0x9517c1){return client[_0xaf52('0x9')](_0x38a5c0,_0x182798)[_0xaf52('0xa')](function(_0x4ffa24){logger['info'](_0xaf52('0xb'),_0x1f576d,'request\x20sent');logger[_0xaf52('0xc')](_0xaf52('0xd'),_0x1f576d,_0xaf52('0xe'),JSON[_0xaf52('0xf')](_0x4ffa24));if(_0x4ffa24[_0xaf52('0x10')]){if(_0x4ffa24[_0xaf52('0x10')][_0xaf52('0x11')]===0x1f4){logger['error'](_0xaf52('0xb'),_0x1f576d,_0x4ffa24[_0xaf52('0x10')]['message']);return _0x9517c1(_0x4ffa24[_0xaf52('0x10')][_0xaf52('0x12')]);}logger[_0xaf52('0x10')](_0xaf52('0xb'),_0x1f576d,_0x4ffa24[_0xaf52('0x10')][_0xaf52('0x12')]);return _0x93b2a8(_0x4ffa24[_0xaf52('0x10')][_0xaf52('0x12')]);}else{logger[_0xaf52('0x13')](_0xaf52('0xb'),_0x1f576d,_0xaf52('0xe'));_0x93b2a8(_0x4ffa24[_0xaf52('0x14')][_0xaf52('0x12')]);}})['catch'](function(_0x29be18){logger[_0xaf52('0x10')](_0xaf52('0xb'),_0x1f576d,_0x29be18);_0x9517c1(_0x29be18);});});}exports[_0xaf52('0x15')]=function(_0x7ec8f9){var _0x4fceb6=this;return new Promise(function(_0x3aaf53,_0x133d58){return db['SmsQueueReport'][_0xaf52('0x16')](_0x7ec8f9['body'],{'raw':_0x7ec8f9['options']?_0x7ec8f9['options'][_0xaf52('0x17')]===undefined?!![]:![]:!![]})[_0xaf52('0xa')](function(_0xc3910b){logger[_0xaf52('0x13')]('CreateSmsQueueReport',_0x7ec8f9);logger[_0xaf52('0xc')](_0xaf52('0x15'),_0x7ec8f9,JSON[_0xaf52('0xf')](_0xc3910b));_0x3aaf53(_0xc3910b);})['catch'](function(_0x364e82){logger[_0xaf52('0x10')](_0xaf52('0x15'),_0x364e82['message'],_0x7ec8f9);_0x133d58(_0x4fceb6[_0xaf52('0x10')](0x1f4,_0x364e82[_0xaf52('0x12')]));});});};exports['UpdateSmsQueueReport']=function(_0x1c1340){var _0x48bf16=this;return new Promise(function(_0x2ab262,_0xfaa5a7){return db[_0xaf52('0x18')][_0xaf52('0x19')](_0x1c1340[_0xaf52('0x1a')],{'raw':_0x1c1340[_0xaf52('0x1b')]?_0x1c1340[_0xaf52('0x1b')][_0xaf52('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c1340[_0xaf52('0x1b')]?_0x1c1340[_0xaf52('0x1b')][_0xaf52('0x1c')]||null:null,'attributes':_0x1c1340[_0xaf52('0x1b')]?_0x1c1340['options'][_0xaf52('0x1d')]||null:null,'limit':_0x1c1340[_0xaf52('0x1b')]?_0x1c1340['options'][_0xaf52('0x1e')]||null:null})[_0xaf52('0xa')](function(_0x45b0a9){logger['info'](_0xaf52('0x1f'),_0x1c1340);logger[_0xaf52('0xc')]('UpdateSmsQueueReport',_0x1c1340,JSON['stringify'](_0x45b0a9));_0x2ab262(_0x45b0a9);})[_0xaf52('0x20')](function(_0x37878d){logger[_0xaf52('0x10')](_0xaf52('0x1f'),_0x37878d[_0xaf52('0x12')],_0x1c1340);_0xfaa5a7(_0x48bf16[_0xaf52('0x10')](0x1f4,_0x37878d[_0xaf52('0x12')]));});});};
\ No newline at end of file
+var _0x58f6=['catch','SmsQueueReport','create','options','raw','CreateSmsQueueReport','UpdateSmsQueueReport','update','body','attributes','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','message','SmsQueueReport,\x20%s,\x20%s','request\x20sent','result'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x58f6,0x6d));var _0x658f=function(_0x4e0238,_0x7ab8e){_0x4e0238=_0x4e0238-0x0;var _0x18a8e4=_0x58f6[_0x4e0238];return _0x18a8e4;};'use strict';var _=require(_0x658f('0x0'));var util=require(_0x658f('0x1'));var moment=require(_0x658f('0x2'));var BPromise=require(_0x658f('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x658f('0x4'));var db=require(_0x658f('0x5'))['db'];var utils=require(_0x658f('0x6'));var logger=require(_0x658f('0x7'))(_0x658f('0x8'));var config=require(_0x658f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x658f('0xa')][_0x658f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bea4d,_0x116e6a,_0x14a350){return new BPromise(function(_0x2d81aa,_0x25b542){return client[_0x658f('0xc')](_0x2bea4d,_0x14a350)[_0x658f('0xd')](function(_0x52d7f6){logger[_0x658f('0xe')]('SmsQueueReport,\x20%s,\x20%s',_0x116e6a,'request\x20sent');logger[_0x658f('0xf')](_0x658f('0x10'),_0x116e6a,'request\x20sent',JSON[_0x658f('0x11')](_0x52d7f6));if(_0x52d7f6[_0x658f('0x12')]){if(_0x52d7f6[_0x658f('0x12')]['code']===0x1f4){logger[_0x658f('0x12')]('SmsQueueReport,\x20%s,\x20%s',_0x116e6a,_0x52d7f6['error'][_0x658f('0x13')]);return _0x25b542(_0x52d7f6['error'][_0x658f('0x13')]);}logger['error'](_0x658f('0x14'),_0x116e6a,_0x52d7f6[_0x658f('0x12')][_0x658f('0x13')]);return _0x2d81aa(_0x52d7f6[_0x658f('0x12')][_0x658f('0x13')]);}else{logger[_0x658f('0xe')](_0x658f('0x14'),_0x116e6a,_0x658f('0x15'));_0x2d81aa(_0x52d7f6[_0x658f('0x16')][_0x658f('0x13')]);}})[_0x658f('0x17')](function(_0x52a97){logger[_0x658f('0x12')](_0x658f('0x14'),_0x116e6a,_0x52a97);_0x25b542(_0x52a97);});});}exports['CreateSmsQueueReport']=function(_0x2bdd44){var _0x5c7cb3=this;return new Promise(function(_0x5aaba0,_0x559eb6){return db[_0x658f('0x18')][_0x658f('0x19')](_0x2bdd44['body'],{'raw':_0x2bdd44[_0x658f('0x1a')]?_0x2bdd44[_0x658f('0x1a')][_0x658f('0x1b')]===undefined?!![]:![]:!![]})[_0x658f('0xd')](function(_0x1b23b6){logger[_0x658f('0xe')](_0x658f('0x1c'),_0x2bdd44);logger[_0x658f('0xf')](_0x658f('0x1c'),_0x2bdd44,JSON[_0x658f('0x11')](_0x1b23b6));_0x5aaba0(_0x1b23b6);})[_0x658f('0x17')](function(_0x1087d7){logger[_0x658f('0x12')](_0x658f('0x1c'),_0x1087d7[_0x658f('0x13')],_0x2bdd44);_0x559eb6(_0x5c7cb3[_0x658f('0x12')](0x1f4,_0x1087d7[_0x658f('0x13')]));});});};exports[_0x658f('0x1d')]=function(_0x319356){var _0x5a896b=this;return new Promise(function(_0x34d62f,_0x56f784){return db[_0x658f('0x18')][_0x658f('0x1e')](_0x319356[_0x658f('0x1f')],{'raw':_0x319356['options']?_0x319356[_0x658f('0x1a')][_0x658f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x319356[_0x658f('0x1a')]?_0x319356['options']['where']||null:null,'attributes':_0x319356[_0x658f('0x1a')]?_0x319356['options'][_0x658f('0x20')]||null:null,'limit':_0x319356['options']?_0x319356[_0x658f('0x1a')]['limit']||null:null})[_0x658f('0xd')](function(_0x5a8bbf){logger[_0x658f('0xe')](_0x658f('0x1d'),_0x319356);logger[_0x658f('0xf')]('UpdateSmsQueueReport',_0x319356,JSON['stringify'](_0x5a8bbf));_0x34d62f(_0x5a8bbf);})[_0x658f('0x17')](function(_0x15f6db){logger[_0x658f('0x12')](_0x658f('0x1d'),_0x15f6db[_0x658f('0x13')],_0x319356);_0x56f784(_0x5a896b[_0x658f('0x12')](0x1f4,_0x15f6db[_0x658f('0x13')]));});});};
\ No newline at end of file
index 236fe58..21ac1ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','index','/describe','describe','/:id','post','create','put','update','delete','destroy','multer','util','path','connect-timeout'];(function(_0x4d8a2d,_0x1c2617){var _0x2f0ba1=function(_0x411ade){while(--_0x411ade){_0x4d8a2d['push'](_0x4d8a2d['shift']());}};_0x2f0ba1(++_0x1c2617);}(_0x8ce1,0x183));var _0x18ce=function(_0x3f60de,_0x2e9b6f){_0x3f60de=_0x3f60de-0x0;var _0x172c39=_0x8ce1[_0x3f60de];return _0x172c39;};'use strict';var multer=require(_0x18ce('0x0'));var util=require(_0x18ce('0x1'));var path=require(_0x18ce('0x2'));var timeout=require(_0x18ce('0x3'));var express=require(_0x18ce('0x4'));var router=express[_0x18ce('0x5')]();var fs_extra=require(_0x18ce('0x6'));var auth=require(_0x18ce('0x7'));var interaction=require(_0x18ce('0x8'));var config=require(_0x18ce('0x9'));var controller=require(_0x18ce('0xa'));router[_0x18ce('0xb')]('/',auth[_0x18ce('0xc')](),controller[_0x18ce('0xd')]);router[_0x18ce('0xb')](_0x18ce('0xe'),auth['isAuthenticated'](),controller[_0x18ce('0xf')]);router[_0x18ce('0xb')](_0x18ce('0x10'),auth[_0x18ce('0xc')](),controller['show']);router[_0x18ce('0x11')]('/',auth[_0x18ce('0xc')](),controller[_0x18ce('0x12')]);router[_0x18ce('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x18ce('0x14')]);router[_0x18ce('0x15')](_0x18ce('0x10'),auth[_0x18ce('0xc')](),controller[_0x18ce('0x16')]);module['exports']=router;
\ No newline at end of file
+var _0x723e=['delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','put'];(function(_0x48084f,_0x2d1e50){var _0x215480=function(_0x3662ef){while(--_0x3662ef){_0x48084f['push'](_0x48084f['shift']());}};_0x215480(++_0x2d1e50);}(_0x723e,0x179));var _0xe723=function(_0x5e14e6,_0x42f560){_0x5e14e6=_0x5e14e6-0x0;var _0x46498e=_0x723e[_0x5e14e6];return _0x46498e;};'use strict';var multer=require('multer');var util=require(_0xe723('0x0'));var path=require(_0xe723('0x1'));var timeout=require(_0xe723('0x2'));var express=require(_0xe723('0x3'));var router=express[_0xe723('0x4')]();var fs_extra=require(_0xe723('0x5'));var auth=require(_0xe723('0x6'));var interaction=require(_0xe723('0x7'));var config=require(_0xe723('0x8'));var controller=require(_0xe723('0x9'));router['get']('/',auth[_0xe723('0xa')](),controller[_0xe723('0xb')]);router[_0xe723('0xc')](_0xe723('0xd'),auth[_0xe723('0xa')](),controller[_0xe723('0xe')]);router[_0xe723('0xc')](_0xe723('0xf'),auth['isAuthenticated'](),controller[_0xe723('0x10')]);router[_0xe723('0x11')]('/',auth[_0xe723('0xa')](),controller['create']);router[_0xe723('0x12')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller['update']);router[_0xe723('0x13')](_0xe723('0xf'),auth[_0xe723('0xa')](),controller[_0xe723('0x14')]);module[_0xe723('0x15')]=router;
\ No newline at end of file
index 7170712..2aa4a1d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['account','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x5a3ff5,_0x102eea){var _0xe2034a=function(_0x5438be){while(--_0x5438be){_0x5a3ff5['push'](_0x5a3ff5['shift']());}};_0xe2034a(++_0x102eea);}(_0xaa88,0x137));var _0x8aa8=function(_0x2074db,_0x10b81b){_0x2074db=_0x2074db-0x0;var _0x27324c=_0xaa88[_0x2074db];return _0x27324c;};'use strict';var moment=require(_0x8aa8('0x0'));var Sequelize=require(_0x8aa8('0x1'));module[_0x8aa8('0x2')]={'uniqueid':{'type':Sequelize[_0x8aa8('0x3')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x8aa8('0x4'),_0x8aa8('0x5'),_0x8aa8('0x6')),'allowNull':![],'defaultValue':_0x8aa8('0x6')},'transferredAt':{'type':Sequelize[_0x8aa8('0x7')],'allowNull':![],'defaultValue':Sequelize[_0x8aa8('0x8')]}};
\ No newline at end of file
+var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x57053f,_0x414b3b){var _0x148841=function(_0x589c87){while(--_0x589c87){_0x57053f['push'](_0x57053f['shift']());}};_0x148841(++_0x414b3b);}(_0x00bb,0x1d8));var _0xb00b=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0x00bb[_0x2b5eae];return _0x5f3ac9;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
index a877af0..40e87af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x501b=['include','rows','show','params','includeAll','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','update','destroy','then','error','stack','send','index','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options'];(function(_0x58d5bb,_0x2e2ace){var _0x5915ce=function(_0x31994b){while(--_0x31994b){_0x58d5bb['push'](_0x58d5bb['shift']());}};_0x5915ce(++_0x2e2ace);}(_0x501b,0x13e));var _0xb501=function(_0x56c194,_0x37c948){_0x56c194=_0x56c194-0x0;var _0x30dc3b=_0x501b[_0x56c194];return _0x30dc3b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb501('0x0'));var zipdir=require(_0xb501('0x1'));var jsonpatch=require(_0xb501('0x2'));var rp=require('request-promise');var moment=require(_0xb501('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xb501('0x4'));var util=require('util');var path=require(_0xb501('0x5'));var sox=require(_0xb501('0x6'));var csv=require('to-csv');var ejs=require(_0xb501('0x7'));var fs=require('fs');var fs_extra=require(_0xb501('0x8'));var _=require(_0xb501('0x9'));var squel=require(_0xb501('0xa'));var crypto=require(_0xb501('0xb'));var jsforce=require(_0xb501('0xc'));var deskjs=require(_0xb501('0xd'));var toCsv=require(_0xb501('0xe'));var querystring=require('querystring');var Papa=require(_0xb501('0xf'));var Redis=require(_0xb501('0x10'));var authService=require(_0xb501('0x11'));var qs=require(_0xb501('0x12'));var as=require(_0xb501('0x13'));var hardwareService=require(_0xb501('0x14'));var logger=require(_0xb501('0x15'))(_0xb501('0x16'));var utils=require(_0xb501('0x17'));var config=require(_0xb501('0x18'));var licenseUtil=require(_0xb501('0x19'));var db=require(_0xb501('0x1a'))['db'];function respondWithStatusCode(_0x42861e,_0x45733a){_0x45733a=_0x45733a||0xcc;return function(_0x12adf8){if(_0x12adf8){return _0x42861e[_0xb501('0x1b')](_0x45733a);}return _0x42861e[_0xb501('0x1c')](_0x45733a)[_0xb501('0x1d')]();};}function respondWithResult(_0x4063c5,_0x1c4d19){_0x1c4d19=_0x1c4d19||0xc8;return function(_0x5b83b4){if(_0x5b83b4){return _0x4063c5[_0xb501('0x1c')](_0x1c4d19)[_0xb501('0x1e')](_0x5b83b4);}};}function respondWithFilteredResult(_0x148fcd,_0x3f0fce){return function(_0x4b91cf){if(_0x4b91cf){var _0x12fc20=typeof _0x3f0fce[_0xb501('0x1f')]===_0xb501('0x20')&&typeof _0x3f0fce[_0xb501('0x21')]==='undefined';var _0x5f022d=_0x4b91cf['count'];var _0x5e10ab=_0x12fc20?0x0:_0x3f0fce['offset'];var _0x3c9643=_0x12fc20?_0x4b91cf[_0xb501('0x22')]:_0x3f0fce[_0xb501('0x1f')]+_0x3f0fce[_0xb501('0x21')];var _0x148994;if(_0x3c9643>=_0x5f022d){_0x3c9643=_0x5f022d;_0x148994=0xc8;}else{_0x148994=0xce;}_0x148fcd[_0xb501('0x1c')](_0x148994);return _0x148fcd['set'](_0xb501('0x23'),_0x5e10ab+'-'+_0x3c9643+'/'+_0x5f022d)[_0xb501('0x1e')](_0x4b91cf);}return null;};}function patchUpdates(_0x28c11b){return function(_0x482408){try{jsonpatch['apply'](_0x482408,_0x28c11b,!![]);}catch(_0x3a5782){return BPromise['reject'](_0x3a5782);}return _0x482408['save']();};}function saveUpdates(_0x2db013,_0x2be69d){return function(_0x19c4c0){if(_0x19c4c0){return _0x19c4c0[_0xb501('0x24')](_0x2db013)['then'](function(_0x522b02){return _0x522b02;});}return null;};}function removeEntity(_0x336253,_0x4875a3){return function(_0x37c3b2){if(_0x37c3b2){return _0x37c3b2[_0xb501('0x25')]()[_0xb501('0x26')](function(){_0x336253['status'](0xcc)[_0xb501('0x1d')]();});}};}function handleEntityNotFound(_0x18b03d,_0x420ed1){return function(_0x16f7fa){if(!_0x16f7fa){_0x18b03d[_0xb501('0x1b')](0x194);}return _0x16f7fa;};}function handleError(_0x3236c8,_0x3e65e4){_0x3e65e4=_0x3e65e4||0x1f4;return function(_0x4efb3d){logger[_0xb501('0x27')](_0x4efb3d[_0xb501('0x28')]);if(_0x4efb3d['name']){delete _0x4efb3d['name'];}_0x3236c8['status'](_0x3e65e4)[_0xb501('0x29')](_0x4efb3d);};}exports[_0xb501('0x2a')]=function(_0x5299d8,_0x3a6ecb){var _0x514007={},_0x5a0a67={},_0x552260={'count':0x0,'rows':[]};var _0x296dc1=_[_0xb501('0x2b')](db[_0xb501('0x2c')][_0xb501('0x2d')],function(_0xc481a4){return{'name':_0xc481a4[_0xb501('0x2e')],'type':_0xc481a4[_0xb501('0x2f')][_0xb501('0x30')]};});_0x5a0a67[_0xb501('0x31')]=_[_0xb501('0x2b')](_0x296dc1,_0xb501('0x32'));_0x5a0a67[_0xb501('0x33')]=_[_0xb501('0x34')](_0x5299d8[_0xb501('0x33')]);_0x5a0a67[_0xb501('0x35')]=_[_0xb501('0x36')](_0x5a0a67[_0xb501('0x31')],_0x5a0a67['query']);_0x514007[_0xb501('0x37')]=_['intersection'](_0x5a0a67[_0xb501('0x31')],qs[_0xb501('0x38')](_0x5299d8[_0xb501('0x33')][_0xb501('0x38')]));_0x514007[_0xb501('0x37')]=_0x514007['attributes'][_0xb501('0x39')]?_0x514007['attributes']:_0x5a0a67[_0xb501('0x31')];if(!_0x5299d8[_0xb501('0x33')][_0xb501('0x3a')](_0xb501('0x3b'))){_0x514007[_0xb501('0x21')]=qs['limit'](_0x5299d8[_0xb501('0x33')]['limit']);_0x514007[_0xb501('0x1f')]=qs[_0xb501('0x1f')](_0x5299d8['query'][_0xb501('0x1f')]);}_0x514007[_0xb501('0x3c')]=qs[_0xb501('0x3d')](_0x5299d8[_0xb501('0x33')][_0xb501('0x3d')]);_0x514007[_0xb501('0x3e')]=qs['filters'](_[_0xb501('0x3f')](_0x5299d8['query'],_0x5a0a67[_0xb501('0x35')]),_0x296dc1);if(_0x5299d8[_0xb501('0x33')]['filter']){_0x514007[_0xb501('0x3e')]=_[_0xb501('0x40')](_0x514007[_0xb501('0x3e')],{'$or':_[_0xb501('0x2b')](_0x296dc1,function(_0x3396e9){if(_0x3396e9[_0xb501('0x2f')]!==_0xb501('0x41')){var _0x1fafd1={};_0x1fafd1[_0x3396e9['name']]={'$like':'%'+_0x5299d8[_0xb501('0x33')]['filter']+'%'};return _0x1fafd1;}})});}_0x514007=_[_0xb501('0x40')]({},_0x514007,_0x5299d8[_0xb501('0x42')]);var _0x59bed8={'where':_0x514007['where']};return db['SmsTransferReport']['count'](_0x59bed8)[_0xb501('0x26')](function(_0x240c5f){_0x552260[_0xb501('0x22')]=_0x240c5f;if(_0x5299d8['query']['includeAll']){_0x514007[_0xb501('0x43')]=[{'all':!![]}];}return db['SmsTransferReport']['findAll'](_0x514007);})[_0xb501('0x26')](function(_0x5d287c){_0x552260[_0xb501('0x44')]=_0x5d287c;return _0x552260;})['then'](respondWithFilteredResult(_0x3a6ecb,_0x514007))['catch'](handleError(_0x3a6ecb,null));};exports[_0xb501('0x45')]=function(_0x13c304,_0x3bfde8){var _0x3f036d={'raw':!![],'where':{'id':_0x13c304[_0xb501('0x46')]['id']}},_0x10d9a7={};_0x10d9a7[_0xb501('0x31')]=_[_0xb501('0x34')](db[_0xb501('0x2c')][_0xb501('0x2d')]);_0x10d9a7[_0xb501('0x33')]=_[_0xb501('0x34')](_0x13c304[_0xb501('0x33')]);_0x10d9a7[_0xb501('0x35')]=_['intersection'](_0x10d9a7[_0xb501('0x31')],_0x10d9a7[_0xb501('0x33')]);_0x3f036d['attributes']=_[_0xb501('0x36')](_0x10d9a7['model'],qs[_0xb501('0x38')](_0x13c304[_0xb501('0x33')][_0xb501('0x38')]));_0x3f036d[_0xb501('0x37')]=_0x3f036d[_0xb501('0x37')][_0xb501('0x39')]?_0x3f036d[_0xb501('0x37')]:_0x10d9a7[_0xb501('0x31')];if(_0x13c304[_0xb501('0x33')][_0xb501('0x47')]){_0x3f036d[_0xb501('0x43')]=[{'all':!![]}];}_0x3f036d=_[_0xb501('0x40')]({},_0x3f036d,_0x13c304[_0xb501('0x42')]);return db['SmsTransferReport'][_0xb501('0x48')](_0x3f036d)[_0xb501('0x26')](handleEntityNotFound(_0x3bfde8,null))[_0xb501('0x26')](respondWithResult(_0x3bfde8,null))[_0xb501('0x49')](handleError(_0x3bfde8,null));};exports[_0xb501('0x4a')]=function(_0x30dc88,_0x254141){return db[_0xb501('0x2c')][_0xb501('0x4a')](_0x30dc88['body'],{})[_0xb501('0x26')](respondWithResult(_0x254141,0xc9))[_0xb501('0x49')](handleError(_0x254141,null));};exports[_0xb501('0x24')]=function(_0x1404c6,_0x3c9379){if(_0x1404c6[_0xb501('0x4b')]['id']){delete _0x1404c6[_0xb501('0x4b')]['id'];}return db[_0xb501('0x2c')][_0xb501('0x48')]({'where':{'id':_0x1404c6[_0xb501('0x46')]['id']}})[_0xb501('0x26')](handleEntityNotFound(_0x3c9379,null))['then'](saveUpdates(_0x1404c6[_0xb501('0x4b')],null))['then'](respondWithResult(_0x3c9379,null))[_0xb501('0x49')](handleError(_0x3c9379,null));};exports[_0xb501('0x25')]=function(_0x4337a0,_0xb86fdd){return db[_0xb501('0x2c')][_0xb501('0x48')]({'where':{'id':_0x4337a0['params']['id']}})['then'](handleEntityNotFound(_0xb86fdd,null))[_0xb501('0x26')](removeEntity(_0xb86fdd,null))[_0xb501('0x49')](handleError(_0xb86fdd,null));};exports[_0xb501('0x4c')]=function(_0x1ef9ad,_0x4c9647){return db['SmsTransferReport'][_0xb501('0x4c')]()[_0xb501('0x26')](respondWithResult(_0x4c9647,null))['catch'](handleError(_0x4c9647,null));};
\ No newline at end of file
+var _0xa7be=['rows','catch','show','params','include','create','body','update','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','count','apply','reject','then','destroy','end','sendStatus','error','stack','name','send','index','map','SmsTransferReport','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll'];(function(_0x532b5b,_0xce6ec8){var _0x169ff9=function(_0x4d2804){while(--_0x4d2804){_0x532b5b['push'](_0x532b5b['shift']());}};_0x169ff9(++_0xce6ec8);}(_0xa7be,0xf1));var _0xea7b=function(_0x2f63cf,_0x4227b5){_0x2f63cf=_0x2f63cf-0x0;var _0x5855fd=_0xa7be[_0x2f63cf];return _0x5855fd;};'use strict';var emlformat=require(_0xea7b('0x0'));var rimraf=require(_0xea7b('0x1'));var zipdir=require(_0xea7b('0x2'));var jsonpatch=require(_0xea7b('0x3'));var rp=require(_0xea7b('0x4'));var moment=require(_0xea7b('0x5'));var BPromise=require(_0xea7b('0x6'));var Mustache=require('mustache');var util=require(_0xea7b('0x7'));var path=require(_0xea7b('0x8'));var sox=require(_0xea7b('0x9'));var csv=require(_0xea7b('0xa'));var ejs=require(_0xea7b('0xb'));var fs=require('fs');var fs_extra=require(_0xea7b('0xc'));var _=require(_0xea7b('0xd'));var squel=require(_0xea7b('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xea7b('0xf'));var toCsv=require(_0xea7b('0xa'));var querystring=require(_0xea7b('0x10'));var Papa=require(_0xea7b('0x11'));var Redis=require(_0xea7b('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xea7b('0x13'));var hardwareService=require(_0xea7b('0x14'));var logger=require(_0xea7b('0x15'))(_0xea7b('0x16'));var utils=require(_0xea7b('0x17'));var config=require(_0xea7b('0x18'));var licenseUtil=require(_0xea7b('0x19'));var db=require(_0xea7b('0x1a'))['db'];function respondWithStatusCode(_0x8f79c4,_0x3d4981){_0x3d4981=_0x3d4981||0xcc;return function(_0x4cf5d6){if(_0x4cf5d6){return _0x8f79c4['sendStatus'](_0x3d4981);}return _0x8f79c4[_0xea7b('0x1b')](_0x3d4981)['end']();};}function respondWithResult(_0x2af88c,_0x4652f2){_0x4652f2=_0x4652f2||0xc8;return function(_0x1b734c){if(_0x1b734c){return _0x2af88c[_0xea7b('0x1b')](_0x4652f2)[_0xea7b('0x1c')](_0x1b734c);}};}function respondWithFilteredResult(_0x4137a8,_0x33ae96){return function(_0xec7ad2){if(_0xec7ad2){var _0x107b31=typeof _0x33ae96['offset']===_0xea7b('0x1d')&&typeof _0x33ae96[_0xea7b('0x1e')]===_0xea7b('0x1d');var _0x4dc848=_0xec7ad2['count'];var _0x2d9c97=_0x107b31?0x0:_0x33ae96[_0xea7b('0x1f')];var _0x49505c=_0x107b31?_0xec7ad2[_0xea7b('0x20')]:_0x33ae96[_0xea7b('0x1f')]+_0x33ae96['limit'];var _0x304ff4;if(_0x49505c>=_0x4dc848){_0x49505c=_0x4dc848;_0x304ff4=0xc8;}else{_0x304ff4=0xce;}_0x4137a8['status'](_0x304ff4);return _0x4137a8['set']('Content-Range',_0x2d9c97+'-'+_0x49505c+'/'+_0x4dc848)[_0xea7b('0x1c')](_0xec7ad2);}return null;};}function patchUpdates(_0x59dee3){return function(_0x4a50c7){try{jsonpatch[_0xea7b('0x21')](_0x4a50c7,_0x59dee3,!![]);}catch(_0x3e070a){return BPromise[_0xea7b('0x22')](_0x3e070a);}return _0x4a50c7['save']();};}function saveUpdates(_0x38a6be,_0x54c91a){return function(_0x16376e){if(_0x16376e){return _0x16376e['update'](_0x38a6be)[_0xea7b('0x23')](function(_0x2f20b0){return _0x2f20b0;});}return null;};}function removeEntity(_0x56580d,_0x5e0cfc){return function(_0x1cd54d){if(_0x1cd54d){return _0x1cd54d[_0xea7b('0x24')]()[_0xea7b('0x23')](function(){_0x56580d[_0xea7b('0x1b')](0xcc)[_0xea7b('0x25')]();});}};}function handleEntityNotFound(_0x7a2426,_0xc09dc4){return function(_0x24613a){if(!_0x24613a){_0x7a2426[_0xea7b('0x26')](0x194);}return _0x24613a;};}function handleError(_0x4a9251,_0x5a8da5){_0x5a8da5=_0x5a8da5||0x1f4;return function(_0x575228){logger[_0xea7b('0x27')](_0x575228[_0xea7b('0x28')]);if(_0x575228[_0xea7b('0x29')]){delete _0x575228[_0xea7b('0x29')];}_0x4a9251['status'](_0x5a8da5)[_0xea7b('0x2a')](_0x575228);};}exports[_0xea7b('0x2b')]=function(_0xde254b,_0x2d42dc){var _0x43ed38={},_0x27f585={},_0xfe62d3={'count':0x0,'rows':[]};var _0x39ff99=_[_0xea7b('0x2c')](db[_0xea7b('0x2d')][_0xea7b('0x2e')],function(_0x1a854f){return{'name':_0x1a854f['fieldName'],'type':_0x1a854f[_0xea7b('0x2f')]['key']};});_0x27f585[_0xea7b('0x30')]=_['map'](_0x39ff99,_0xea7b('0x29'));_0x27f585[_0xea7b('0x31')]=_[_0xea7b('0x32')](_0xde254b[_0xea7b('0x31')]);_0x27f585[_0xea7b('0x33')]=_[_0xea7b('0x34')](_0x27f585[_0xea7b('0x30')],_0x27f585[_0xea7b('0x31')]);_0x43ed38[_0xea7b('0x35')]=_[_0xea7b('0x34')](_0x27f585[_0xea7b('0x30')],qs[_0xea7b('0x36')](_0xde254b[_0xea7b('0x31')][_0xea7b('0x36')]));_0x43ed38[_0xea7b('0x35')]=_0x43ed38[_0xea7b('0x35')][_0xea7b('0x37')]?_0x43ed38[_0xea7b('0x35')]:_0x27f585[_0xea7b('0x30')];if(!_0xde254b['query'][_0xea7b('0x38')]('nolimit')){_0x43ed38[_0xea7b('0x1e')]=qs[_0xea7b('0x1e')](_0xde254b[_0xea7b('0x31')]['limit']);_0x43ed38[_0xea7b('0x1f')]=qs[_0xea7b('0x1f')](_0xde254b[_0xea7b('0x31')]['offset']);}_0x43ed38[_0xea7b('0x39')]=qs[_0xea7b('0x3a')](_0xde254b[_0xea7b('0x31')]['sort']);_0x43ed38['where']=qs[_0xea7b('0x33')](_[_0xea7b('0x3b')](_0xde254b[_0xea7b('0x31')],_0x27f585[_0xea7b('0x33')]),_0x39ff99);if(_0xde254b[_0xea7b('0x31')][_0xea7b('0x3c')]){_0x43ed38[_0xea7b('0x3d')]=_[_0xea7b('0x3e')](_0x43ed38[_0xea7b('0x3d')],{'$or':_[_0xea7b('0x2c')](_0x39ff99,function(_0x2b813d){if(_0x2b813d[_0xea7b('0x2f')]!==_0xea7b('0x3f')){var _0xab9dcd={};_0xab9dcd[_0x2b813d['name']]={'$like':'%'+_0xde254b[_0xea7b('0x31')][_0xea7b('0x3c')]+'%'};return _0xab9dcd;}})});}_0x43ed38=_[_0xea7b('0x3e')]({},_0x43ed38,_0xde254b[_0xea7b('0x40')]);var _0x2aad66={'where':_0x43ed38[_0xea7b('0x3d')]};return db[_0xea7b('0x2d')][_0xea7b('0x20')](_0x2aad66)[_0xea7b('0x23')](function(_0x260d2e){_0xfe62d3['count']=_0x260d2e;if(_0xde254b[_0xea7b('0x31')][_0xea7b('0x41')]){_0x43ed38['include']=[{'all':!![]}];}return db[_0xea7b('0x2d')][_0xea7b('0x42')](_0x43ed38);})[_0xea7b('0x23')](function(_0x2d9916){_0xfe62d3[_0xea7b('0x43')]=_0x2d9916;return _0xfe62d3;})[_0xea7b('0x23')](respondWithFilteredResult(_0x2d42dc,_0x43ed38))[_0xea7b('0x44')](handleError(_0x2d42dc,null));};exports[_0xea7b('0x45')]=function(_0x862107,_0x2f83e0){var _0x330403={'raw':!![],'where':{'id':_0x862107[_0xea7b('0x46')]['id']}},_0x1b95e2={};_0x1b95e2['model']=_[_0xea7b('0x32')](db[_0xea7b('0x2d')][_0xea7b('0x2e')]);_0x1b95e2['query']=_[_0xea7b('0x32')](_0x862107[_0xea7b('0x31')]);_0x1b95e2[_0xea7b('0x33')]=_['intersection'](_0x1b95e2[_0xea7b('0x30')],_0x1b95e2[_0xea7b('0x31')]);_0x330403['attributes']=_[_0xea7b('0x34')](_0x1b95e2[_0xea7b('0x30')],qs[_0xea7b('0x36')](_0x862107[_0xea7b('0x31')][_0xea7b('0x36')]));_0x330403[_0xea7b('0x35')]=_0x330403[_0xea7b('0x35')][_0xea7b('0x37')]?_0x330403['attributes']:_0x1b95e2['model'];if(_0x862107[_0xea7b('0x31')][_0xea7b('0x41')]){_0x330403[_0xea7b('0x47')]=[{'all':!![]}];}_0x330403=_[_0xea7b('0x3e')]({},_0x330403,_0x862107['options']);return db['SmsTransferReport']['find'](_0x330403)[_0xea7b('0x23')](handleEntityNotFound(_0x2f83e0,null))[_0xea7b('0x23')](respondWithResult(_0x2f83e0,null))[_0xea7b('0x44')](handleError(_0x2f83e0,null));};exports[_0xea7b('0x48')]=function(_0x5ca388,_0x2031f7){return db['SmsTransferReport'][_0xea7b('0x48')](_0x5ca388[_0xea7b('0x49')],{})[_0xea7b('0x23')](respondWithResult(_0x2031f7,0xc9))['catch'](handleError(_0x2031f7,null));};exports[_0xea7b('0x4a')]=function(_0x29006a,_0x444bb6){if(_0x29006a['body']['id']){delete _0x29006a[_0xea7b('0x49')]['id'];}return db[_0xea7b('0x2d')][_0xea7b('0x4b')]({'where':{'id':_0x29006a[_0xea7b('0x46')]['id']}})[_0xea7b('0x23')](handleEntityNotFound(_0x444bb6,null))[_0xea7b('0x23')](saveUpdates(_0x29006a[_0xea7b('0x49')],null))[_0xea7b('0x23')](respondWithResult(_0x444bb6,null))[_0xea7b('0x44')](handleError(_0x444bb6,null));};exports[_0xea7b('0x24')]=function(_0xa8a441,_0x5310f1){return db[_0xea7b('0x2d')][_0xea7b('0x4b')]({'where':{'id':_0xa8a441[_0xea7b('0x46')]['id']}})[_0xea7b('0x23')](handleEntityNotFound(_0x5310f1,null))[_0xea7b('0x23')](removeEntity(_0x5310f1,null))[_0xea7b('0x44')](handleError(_0x5310f1,null));};exports['describe']=function(_0x2e890c,_0x1fbc50){return db['SmsTransferReport'][_0xea7b('0x4c')]()['then'](respondWithResult(_0x1fbc50,null))['catch'](handleError(_0x1fbc50,null));};
\ No newline at end of file
index 6356374..c66db41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0e2=['lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./smsTransferReport.attributes','define','report_sms_transfer','uniqueid'];(function(_0x2f037f,_0x2958c5){var _0x2d1573=function(_0x34146e){while(--_0x34146e){_0x2f037f['push'](_0x2f037f['shift']());}};_0x2d1573(++_0x2958c5);}(_0xd0e2,0x1ad));var _0x2d0e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd0e2[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x2d0e('0x0'));var util=require(_0x2d0e('0x1'));var logger=require(_0x2d0e('0x2'))(_0x2d0e('0x3'));var moment=require(_0x2d0e('0x4'));var BPromise=require(_0x2d0e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2d0e('0x6'));var rimraf=require(_0x2d0e('0x7'));var config=require(_0x2d0e('0x8'));var attributes=require(_0x2d0e('0x9'));module['exports']=function(_0xf8e63b,_0x397aa7){return _0xf8e63b[_0x2d0e('0xa')]('SmsTransferReport',attributes,{'tableName':_0x2d0e('0xb'),'paranoid':![],'indexes':[{'name':_0x2d0e('0xc'),'fields':[_0x2d0e('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x863f=['SmsTransferReport','uniqueid','util','../../config/logger','api','bluebird','request-promise','rimraf','../../config/environment','./smsTransferReport.attributes','exports','define'];(function(_0x3e3735,_0xaad8ef){var _0x1bf323=function(_0x4a90f5){while(--_0x4a90f5){_0x3e3735['push'](_0x3e3735['shift']());}};_0x1bf323(++_0xaad8ef);}(_0x863f,0xda));var _0xf863=function(_0x388898,_0x1728a8){_0x388898=_0x388898-0x0;var _0x4b2bdd=_0x863f[_0x388898];return _0x4b2bdd;};'use strict';var _=require('lodash');var util=require(_0xf863('0x0'));var logger=require(_0xf863('0x1'))(_0xf863('0x2'));var moment=require('moment');var BPromise=require(_0xf863('0x3'));var rp=require(_0xf863('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf863('0x5'));var config=require(_0xf863('0x6'));var attributes=require(_0xf863('0x7'));module[_0xf863('0x8')]=function(_0x1a4bf0,_0xd1accc){return _0x1a4bf0[_0xf863('0x9')](_0xf863('0xa'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xf863('0xb'),'fields':[_0xf863('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 64a3724..4347e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa5c=['client','http','then','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsTransferReport,\x20%s,\x20%s','message','info','lodash','util','moment','bluebird','../../config/logger','jayson/promise'];(function(_0x2e993b,_0x1ec8a1){var _0x27c503=function(_0x1d28ee){while(--_0x1d28ee){_0x2e993b['push'](_0x2e993b['shift']());}};_0x27c503(++_0x1ec8a1);}(_0xaa5c,0x1f2));var _0xcaa5=function(_0x22d75f,_0x25bd11){_0x22d75f=_0x22d75f-0x0;var _0x2ae675=_0xaa5c[_0x22d75f];return _0x2ae675;};'use strict';var _=require(_0xcaa5('0x0'));var util=require(_0xcaa5('0x1'));var moment=require(_0xcaa5('0x2'));var BPromise=require(_0xcaa5('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcaa5('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0xcaa5('0x5'));var client=jayson[_0xcaa5('0x6')][_0xcaa5('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5f56bc,_0x3d0a81,_0x24edf5){return new BPromise(function(_0xb27ac1,_0x1b8683){return client['request'](_0x5f56bc,_0x24edf5)[_0xcaa5('0x8')](function(_0x11b4d1){logger['info']('SmsTransferReport,\x20%s,\x20%s',_0x3d0a81,_0xcaa5('0x9'));logger[_0xcaa5('0xa')](_0xcaa5('0xb'),_0x3d0a81,'request\x20sent',JSON[_0xcaa5('0xc')](_0x11b4d1));if(_0x11b4d1['error']){if(_0x11b4d1[_0xcaa5('0xd')][_0xcaa5('0xe')]===0x1f4){logger[_0xcaa5('0xd')](_0xcaa5('0xf'),_0x3d0a81,_0x11b4d1[_0xcaa5('0xd')][_0xcaa5('0x10')]);return _0x1b8683(_0x11b4d1[_0xcaa5('0xd')]['message']);}logger[_0xcaa5('0xd')](_0xcaa5('0xf'),_0x3d0a81,_0x11b4d1[_0xcaa5('0xd')][_0xcaa5('0x10')]);return _0xb27ac1(_0x11b4d1[_0xcaa5('0xd')][_0xcaa5('0x10')]);}else{logger[_0xcaa5('0x11')](_0xcaa5('0xf'),_0x3d0a81,_0xcaa5('0x9'));_0xb27ac1(_0x11b4d1['result'][_0xcaa5('0x10')]);}})['catch'](function(_0x17e3d2){logger[_0xcaa5('0xd')]('SmsTransferReport,\x20%s,\x20%s',_0x3d0a81,_0x17e3d2);_0x1b8683(_0x17e3d2);});});}
\ No newline at end of file
+var _0x43fd=['request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','request','then','info','SmsTransferReport,\x20%s,\x20%s'];(function(_0x3f4891,_0x4e6f62){var _0x54f2d8=function(_0x2b11ee){while(--_0x2b11ee){_0x3f4891['push'](_0x3f4891['shift']());}};_0x54f2d8(++_0x4e6f62);}(_0x43fd,0x1ec));var _0xd43f=function(_0x3c1195,_0x36ff90){_0x3c1195=_0x3c1195-0x0;var _0x1a0cfe=_0x43fd[_0x3c1195];return _0x1a0cfe;};'use strict';var _=require('lodash');var util=require(_0xd43f('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xd43f('0x1'));var fs=require('fs');var Redis=require(_0xd43f('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xd43f('0x3'));var logger=require('../../config/logger')(_0xd43f('0x4'));var config=require(_0xd43f('0x5'));var jayson=require(_0xd43f('0x6'));var client=jayson[_0xd43f('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xde214d,_0xad5196,_0x20ccd7){return new BPromise(function(_0x331163,_0x547e12){return client[_0xd43f('0x8')](_0xde214d,_0x20ccd7)[_0xd43f('0x9')](function(_0x52e9c8){logger[_0xd43f('0xa')](_0xd43f('0xb'),_0xad5196,_0xd43f('0xc'));logger[_0xd43f('0xd')](_0xd43f('0xe'),_0xad5196,'request\x20sent',JSON[_0xd43f('0xf')](_0x52e9c8));if(_0x52e9c8[_0xd43f('0x10')]){if(_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x11')]===0x1f4){logger[_0xd43f('0x10')](_0xd43f('0xb'),_0xad5196,_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);return _0x547e12(_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);}logger[_0xd43f('0x10')]('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0x52e9c8[_0xd43f('0x10')][_0xd43f('0x12')]);return _0x331163(_0x52e9c8[_0xd43f('0x10')]['message']);}else{logger['info']('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0xd43f('0xc'));_0x331163(_0x52e9c8[_0xd43f('0x13')]['message']);}})[_0xd43f('0x14')](function(_0x3647df){logger['error']('SmsTransferReport,\x20%s,\x20%s',_0xad5196,_0x3647df);_0x547e12(_0x3647df);});});}
\ No newline at end of file
index dd5f144..226461c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ad=['put','update','delete','exports','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./sound.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','replace','format','basename','extname','single','create'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x53ad,0x109));var _0xd53a=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x53ad[_0x37bd26];return _0xe83dc4;};'use strict';var multer=require(_0xd53a('0x0'));var util=require(_0xd53a('0x1'));var path=require(_0xd53a('0x2'));var timeout=require('connect-timeout');var express=require(_0xd53a('0x3'));var router=express[_0xd53a('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd53a('0x5'));var config=require(_0xd53a('0x6'));var controller=require(_0xd53a('0x7'));router[_0xd53a('0x8')]('/',auth[_0xd53a('0x9')](),controller[_0xd53a('0xa')]);router[_0xd53a('0x8')](_0xd53a('0xb'),auth[_0xd53a('0x9')](),controller[_0xd53a('0xc')]);router[_0xd53a('0x8')](_0xd53a('0xd'),auth['isAuthenticated'](),controller[_0xd53a('0xe')]);var upload=multer({'storage':multer[_0xd53a('0xf')]({'destination':function(_0x3c245e,_0x1af753,_0x57f1f3){_0x57f1f3(null,path[_0xd53a('0x10')](config['root'],_0xd53a('0x11')));},'filename':function(_0x2709c3,_0x95777,_0x39edd5){_0x95777[_0xd53a('0x12')]=_0x95777[_0xd53a('0x12')][_0xd53a('0x13')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x39edd5(null,util[_0xd53a('0x14')]('%s-%s%s',path[_0xd53a('0x15')](_0x95777['originalname'],path[_0xd53a('0x16')](_0x95777[_0xd53a('0x12')])),Date['now'](),path[_0xd53a('0x16')](_0x95777[_0xd53a('0x12')])));}})});router['post']('/',upload[_0xd53a('0x17')]('file'),controller[_0xd53a('0x18')]);router[_0xd53a('0x19')](_0xd53a('0xb'),auth[_0xd53a('0x9')](),controller[_0xd53a('0x1a')]);router[_0xd53a('0x1b')](_0xd53a('0xb'),auth[_0xd53a('0x9')](),controller[_0xd53a('0x1b')]);module[_0xd53a('0x1c')]=router;
\ No newline at end of file
+var _0xdda7=['basename','now','extname','post','single','create','put','update','delete','/:id','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./sound.controller','isAuthenticated','index','get','show','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xdda7,0x6a));var _0x7dda=function(_0xa19e3,_0x4161f2){_0xa19e3=_0xa19e3-0x0;var _0xb5df8b=_0xdda7[_0xa19e3];return _0xb5df8b;};'use strict';var multer=require(_0x7dda('0x0'));var util=require('util');var path=require(_0x7dda('0x1'));var timeout=require(_0x7dda('0x2'));var express=require(_0x7dda('0x3'));var router=express[_0x7dda('0x4')]();var fs_extra=require(_0x7dda('0x5'));var auth=require(_0x7dda('0x6'));var interaction=require(_0x7dda('0x7'));var config=require(_0x7dda('0x8'));var controller=require(_0x7dda('0x9'));router['get']('/',auth[_0x7dda('0xa')](),controller[_0x7dda('0xb')]);router[_0x7dda('0xc')]('/:id',auth[_0x7dda('0xa')](),controller[_0x7dda('0xd')]);router[_0x7dda('0xc')]('/:id/download',auth['isAuthenticated'](),controller[_0x7dda('0xe')]);var upload=multer({'storage':multer[_0x7dda('0xf')]({'destination':function(_0x551908,_0x540e12,_0x573fc8){_0x573fc8(null,path[_0x7dda('0x10')](config[_0x7dda('0x11')],_0x7dda('0x12')));},'filename':function(_0x4efab7,_0x2173be,_0x5dde69){_0x2173be[_0x7dda('0x13')]=_0x2173be['originalname'][_0x7dda('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x5dde69(null,util[_0x7dda('0x15')]('%s-%s%s',path[_0x7dda('0x16')](_0x2173be[_0x7dda('0x13')],path['extname'](_0x2173be[_0x7dda('0x13')])),Date[_0x7dda('0x17')](),path[_0x7dda('0x18')](_0x2173be[_0x7dda('0x13')])));}})});router[_0x7dda('0x19')]('/',upload[_0x7dda('0x1a')]('file'),controller[_0x7dda('0x1b')]);router[_0x7dda('0x1c')]('/:id',auth[_0x7dda('0xa')](),controller[_0x7dda('0x1d')]);router[_0x7dda('0x1e')](_0x7dda('0x1f'),auth[_0x7dda('0xa')](),controller[_0x7dda('0x1e')]);module['exports']=router;
\ No newline at end of file
index d96b16e..e1565df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc7fb=['BIGINT','INTEGER','sequelize','exports','name','STRING','FLOAT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc7fb,0xd4));var _0xbc7f=function(_0x595a30,_0x5eff22){_0x595a30=_0x595a30-0x0;var _0xd9250c=_0xc7fb[_0x595a30];return _0xd9250c;};'use strict';var Sequelize=require(_0xbc7f('0x0'));module[_0xbc7f('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xbc7f('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0xbc7f('0x3')]},'display_name':{'type':Sequelize[_0xbc7f('0x3')],'defaultValue':''},'description':{'type':Sequelize['STRING']},'original_format':{'type':Sequelize[_0xbc7f('0x3')]},'original_duration':{'type':Sequelize[_0xbc7f('0x4')]},'original_sampleCount':{'type':Sequelize[_0xbc7f('0x5')]},'original_channelCount':{'type':Sequelize[_0xbc7f('0x6')]},'original_bitRate':{'type':Sequelize[_0xbc7f('0x5')]},'original_sampleRate':{'type':Sequelize[_0xbc7f('0x6')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize['INTEGER']},'converted_bitRate':{'type':Sequelize['BIGINT']},'converted_sampleRate':{'type':Sequelize[_0xbc7f('0x6')]}};
\ No newline at end of file
+var _0x2475=['INTEGER','sequelize','exports','name','STRING','BIGINT'];(function(_0x226c11,_0x14c0a4){var _0x4dc73e=function(_0x17e242){while(--_0x17e242){_0x226c11['push'](_0x226c11['shift']());}};_0x4dc73e(++_0x14c0a4);}(_0x2475,0x1e7));var _0x5247=function(_0x52244a,_0x337afc){_0x52244a=_0x52244a-0x0;var _0x4d4964=_0x2475[_0x52244a];return _0x4d4964;};'use strict';var Sequelize=require(_0x5247('0x0'));module[_0x5247('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x5247('0x2'),'allowNull':![]},'save_name':{'type':Sequelize[_0x5247('0x3')]},'display_name':{'type':Sequelize[_0x5247('0x3')],'defaultValue':''},'description':{'type':Sequelize[_0x5247('0x3')]},'original_format':{'type':Sequelize[_0x5247('0x3')]},'original_duration':{'type':Sequelize['FLOAT']},'original_sampleCount':{'type':Sequelize[_0x5247('0x4')]},'original_channelCount':{'type':Sequelize[_0x5247('0x5')]},'original_bitRate':{'type':Sequelize[_0x5247('0x4')]},'original_sampleRate':{'type':Sequelize['INTEGER']},'converted_format':{'type':Sequelize[_0x5247('0x3')]},'converted_duration':{'type':Sequelize['FLOAT']},'converted_sampleCount':{'type':Sequelize[_0x5247('0x4')]},'converted_channelCount':{'type':Sequelize[_0x5247('0x5')]},'converted_bitRate':{'type':Sequelize[_0x5247('0x4')]},'converted_sampleRate':{'type':Sequelize[_0x5247('0x5')]}};
\ No newline at end of file
index fc4d004..ad37672 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6ef=['src','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','original_sampleRate','dest','converted_duration','converted_channelCount','converted_bitRate','bitRate','converted_sampleRate','sampleRate','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','get','UserProfileSection','Sounds','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','description','original_format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','save','then','destroy','UserProfileResource','error','stack','name','send','index','Sound','rawAttributes','fieldName','key','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','sort','where','pick','merge','type','VIRTUAL','filter','options','include','findAll','rows','catch','keys','includeAll','find','save_name','converted_format','server/files/sounds/converted','Sequelize','ValidationError','Sound\x20not\x20found','download','join','root','format','%s.%s','create','basename','originalname','extname','file','filename','substring','server/files/sounds/original','info','Sound\x20upload\x20filepath:\x20%s','Sound\x20upload\x20destination:\x20%s','0777','transcode','wav','unlinkSync'];(function(_0x31e5cb,_0x2f5adf){var _0x4170df=function(_0x31c53e){while(--_0x31c53e){_0x31e5cb['push'](_0x31e5cb['shift']());}};_0x4170df(++_0x2f5adf);}(_0xe6ef,0x186));var _0xfe6e=function(_0x5a7f66,_0x4c82b3){_0x5a7f66=_0x5a7f66-0x0;var _0x3e5205=_0xe6ef[_0x5a7f66];return _0x3e5205;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfe6e('0x0'));var zipdir=require(_0xfe6e('0x1'));var jsonpatch=require(_0xfe6e('0x2'));var rp=require(_0xfe6e('0x3'));var moment=require('moment');var BPromise=require(_0xfe6e('0x4'));var Mustache=require(_0xfe6e('0x5'));var util=require(_0xfe6e('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xfe6e('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfe6e('0x8'));var _=require('lodash');var squel=require(_0xfe6e('0x9'));var crypto=require(_0xfe6e('0xa'));var jsforce=require(_0xfe6e('0xb'));var deskjs=require(_0xfe6e('0xc'));var toCsv=require(_0xfe6e('0x7'));var querystring=require(_0xfe6e('0xd'));var Papa=require(_0xfe6e('0xe'));var Redis=require(_0xfe6e('0xf'));var authService=require(_0xfe6e('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xfe6e('0x11'))('api');var utils=require('../../config/utils');var config=require(_0xfe6e('0x12'));var licenseUtil=require(_0xfe6e('0x13'));var db=require(_0xfe6e('0x14'))['db'];function respondWithStatusCode(_0x387d18,_0xcbdf5){_0xcbdf5=_0xcbdf5||0xcc;return function(_0x3919e8){if(_0x3919e8){return _0x387d18[_0xfe6e('0x15')](_0xcbdf5);}return _0x387d18[_0xfe6e('0x16')](_0xcbdf5)[_0xfe6e('0x17')]();};}function respondWithResult(_0x4e347b,_0x4c07db){_0x4c07db=_0x4c07db||0xc8;return function(_0x77f493){if(_0x77f493){return _0x4e347b[_0xfe6e('0x16')](_0x4c07db)['json'](_0x77f493);}};}function respondWithFilteredResult(_0x20bb48,_0x71cb19){return function(_0x55d823){if(_0x55d823){var _0x90a4eb=typeof _0x71cb19[_0xfe6e('0x18')]===_0xfe6e('0x19')&&typeof _0x71cb19[_0xfe6e('0x1a')]===_0xfe6e('0x19');var _0xdffb62=_0x55d823[_0xfe6e('0x1b')];var _0xdef300=_0x90a4eb?0x0:_0x71cb19[_0xfe6e('0x18')];var _0x5822bd=_0x90a4eb?_0x55d823[_0xfe6e('0x1b')]:_0x71cb19[_0xfe6e('0x18')]+_0x71cb19[_0xfe6e('0x1a')];var _0x39e3f4;if(_0x5822bd>=_0xdffb62){_0x5822bd=_0xdffb62;_0x39e3f4=0xc8;}else{_0x39e3f4=0xce;}_0x20bb48[_0xfe6e('0x16')](_0x39e3f4);return _0x20bb48['set']('Content-Range',_0xdef300+'-'+_0x5822bd+'/'+_0xdffb62)[_0xfe6e('0x1c')](_0x55d823);}return null;};}function patchUpdates(_0x2aa6b2){return function(_0x475dcf){try{jsonpatch[_0xfe6e('0x1d')](_0x475dcf,_0x2aa6b2,!![]);}catch(_0x1a263e){return BPromise[_0xfe6e('0x1e')](_0x1a263e);}return _0x475dcf[_0xfe6e('0x1f')]();};}function saveUpdates(_0x1a8693,_0x594bce){return function(_0x1f0081){if(_0x1f0081){return _0x1f0081['update'](_0x1a8693)[_0xfe6e('0x20')](function(_0xd7782b){return _0xd7782b;});}return null;};}function removeEntity(_0x16ee84,_0x8e611b){return function(_0x5d39d6){if(_0x5d39d6){return _0x5d39d6[_0xfe6e('0x21')]()[_0xfe6e('0x20')](function(){var _0x466605=_0x5d39d6['get']({'plain':!![]});var _0x2f3599='Sounds';return db[_0xfe6e('0x22')][_0xfe6e('0x21')]({'where':{'type':_0x2f3599,'resourceId':_0x466605['id']}})[_0xfe6e('0x20')](function(){return _0x5d39d6;});})[_0xfe6e('0x20')](function(){_0x16ee84[_0xfe6e('0x16')](0xcc)[_0xfe6e('0x17')]();});}};}function handleEntityNotFound(_0x2ae501,_0x10345e){return function(_0x388b15){if(!_0x388b15){_0x2ae501[_0xfe6e('0x15')](0x194);}return _0x388b15;};}function handleError(_0x485ded,_0x19c739){_0x19c739=_0x19c739||0x1f4;return function(_0x22990f){logger[_0xfe6e('0x23')](_0x22990f[_0xfe6e('0x24')]);if(_0x22990f[_0xfe6e('0x25')]){delete _0x22990f[_0xfe6e('0x25')];}_0x485ded[_0xfe6e('0x16')](_0x19c739)[_0xfe6e('0x26')](_0x22990f);};}exports[_0xfe6e('0x27')]=function(_0x5862bd,_0x4afc07){var _0x277b5d={},_0x3e6477={},_0x464f03={'count':0x0,'rows':[]};var _0x18545c=_['map'](db[_0xfe6e('0x28')][_0xfe6e('0x29')],function(_0x28161e){return{'name':_0x28161e[_0xfe6e('0x2a')],'type':_0x28161e['type'][_0xfe6e('0x2b')]};});_0x3e6477['model']=_[_0xfe6e('0x2c')](_0x18545c,'name');_0x3e6477[_0xfe6e('0x2d')]=_['keys'](_0x5862bd[_0xfe6e('0x2d')]);_0x3e6477[_0xfe6e('0x2e')]=_[_0xfe6e('0x2f')](_0x3e6477[_0xfe6e('0x30')],_0x3e6477[_0xfe6e('0x2d')]);_0x277b5d[_0xfe6e('0x31')]=_[_0xfe6e('0x2f')](_0x3e6477[_0xfe6e('0x30')],qs[_0xfe6e('0x32')](_0x5862bd[_0xfe6e('0x2d')][_0xfe6e('0x32')]));_0x277b5d[_0xfe6e('0x31')]=_0x277b5d['attributes'][_0xfe6e('0x33')]?_0x277b5d[_0xfe6e('0x31')]:_0x3e6477[_0xfe6e('0x30')];if(!_0x5862bd[_0xfe6e('0x2d')][_0xfe6e('0x34')]('nolimit')){_0x277b5d[_0xfe6e('0x1a')]=qs['limit'](_0x5862bd['query'][_0xfe6e('0x1a')]);_0x277b5d[_0xfe6e('0x18')]=qs['offset'](_0x5862bd[_0xfe6e('0x2d')][_0xfe6e('0x18')]);}_0x277b5d['order']=qs['sort'](_0x5862bd[_0xfe6e('0x2d')][_0xfe6e('0x35')]);_0x277b5d[_0xfe6e('0x36')]=qs[_0xfe6e('0x2e')](_[_0xfe6e('0x37')](_0x5862bd[_0xfe6e('0x2d')],_0x3e6477[_0xfe6e('0x2e')]),_0x18545c);if(_0x5862bd['query']['filter']){_0x277b5d[_0xfe6e('0x36')]=_[_0xfe6e('0x38')](_0x277b5d[_0xfe6e('0x36')],{'$or':_[_0xfe6e('0x2c')](_0x18545c,function(_0x22670c){if(_0x22670c[_0xfe6e('0x39')]!==_0xfe6e('0x3a')){var _0x2fe99a={};_0x2fe99a[_0x22670c['name']]={'$like':'%'+_0x5862bd['query'][_0xfe6e('0x3b')]+'%'};return _0x2fe99a;}})});}_0x277b5d=_[_0xfe6e('0x38')]({},_0x277b5d,_0x5862bd[_0xfe6e('0x3c')]);var _0x6a13fa={'where':_0x277b5d[_0xfe6e('0x36')]};return db[_0xfe6e('0x28')][_0xfe6e('0x1b')](_0x6a13fa)['then'](function(_0x518327){_0x464f03[_0xfe6e('0x1b')]=_0x518327;if(_0x5862bd[_0xfe6e('0x2d')]['includeAll']){_0x277b5d[_0xfe6e('0x3d')]=[{'all':!![]}];}return db[_0xfe6e('0x28')][_0xfe6e('0x3e')](_0x277b5d);})['then'](function(_0xcc086b){_0x464f03[_0xfe6e('0x3f')]=_0xcc086b;return _0x464f03;})['then'](respondWithFilteredResult(_0x4afc07,_0x277b5d))[_0xfe6e('0x40')](handleError(_0x4afc07,null));};exports['show']=function(_0x129b6c,_0x1a229d){var _0x532564={'raw':!![],'where':{'id':_0x129b6c['params']['id']}},_0x5f008a={};_0x5f008a[_0xfe6e('0x30')]=_[_0xfe6e('0x41')](db[_0xfe6e('0x28')][_0xfe6e('0x29')]);_0x5f008a[_0xfe6e('0x2d')]=_[_0xfe6e('0x41')](_0x129b6c[_0xfe6e('0x2d')]);_0x5f008a[_0xfe6e('0x2e')]=_[_0xfe6e('0x2f')](_0x5f008a['model'],_0x5f008a['query']);_0x532564[_0xfe6e('0x31')]=_[_0xfe6e('0x2f')](_0x5f008a[_0xfe6e('0x30')],qs[_0xfe6e('0x32')](_0x129b6c['query'][_0xfe6e('0x32')]));_0x532564[_0xfe6e('0x31')]=_0x532564[_0xfe6e('0x31')][_0xfe6e('0x33')]?_0x532564['attributes']:_0x5f008a[_0xfe6e('0x30')];if(_0x129b6c[_0xfe6e('0x2d')][_0xfe6e('0x42')]){_0x532564['include']=[{'all':!![]}];}_0x532564=_[_0xfe6e('0x38')]({},_0x532564,_0x129b6c[_0xfe6e('0x3c')]);return db[_0xfe6e('0x28')][_0xfe6e('0x43')](_0x532564)[_0xfe6e('0x20')](handleEntityNotFound(_0x1a229d,null))['then'](respondWithResult(_0x1a229d,null))[_0xfe6e('0x40')](handleError(_0x1a229d,null));};exports['download']=function(_0x443955,_0x186d9d,_0x37c256){return db['Sound'][_0xfe6e('0x43')]({'where':{'id':_0x443955['params']['id']},'attributes':['name',_0xfe6e('0x44'),_0xfe6e('0x45')],'raw':!![]})['then'](handleEntityNotFound(_0x186d9d,null))['then'](function(_0x255ef3){if(_0x255ef3){if(!fs['existsSync'](path['join'](config['root'],_0xfe6e('0x46'),_0x255ef3[_0xfe6e('0x44')]+'.'+_0x255ef3[_0xfe6e('0x45')]))){throw new db[(_0xfe6e('0x47'))][(_0xfe6e('0x48'))](_0xfe6e('0x49'));}return _0x186d9d[_0xfe6e('0x4a')](path[_0xfe6e('0x4b')](config[_0xfe6e('0x4c')],_0xfe6e('0x46'),util[_0xfe6e('0x4d')](_0xfe6e('0x4e'),_0x255ef3[_0xfe6e('0x44')],_0x255ef3[_0xfe6e('0x45')])),util[_0xfe6e('0x4d')](_0xfe6e('0x4e'),_0x255ef3[_0xfe6e('0x25')],_0x255ef3['converted_format']));}return null;})[_0xfe6e('0x40')](handleError(_0x186d9d,null));};exports[_0xfe6e('0x4f')]=function(_0x4fad77,_0x547cd5,_0x647571){var _0x49e3c7={'name':path[_0xfe6e('0x50')](_0x4fad77['file'][_0xfe6e('0x51')],path[_0xfe6e('0x52')](_0x4fad77[_0xfe6e('0x53')][_0xfe6e('0x51')])),'save_name':path['basename'](_0x4fad77[_0xfe6e('0x53')][_0xfe6e('0x54')],path['extname'](_0x4fad77['file'][_0xfe6e('0x54')])),'original_format':path[_0xfe6e('0x52')](_0x4fad77[_0xfe6e('0x53')]['originalname'])[_0xfe6e('0x55')](0x1),'converted_format':'wav'};var _0x2dc324=path[_0xfe6e('0x4b')](config[_0xfe6e('0x4c')],_0xfe6e('0x56'),_0x4fad77['file'][_0xfe6e('0x54')]);var _0x435589=path[_0xfe6e('0x4b')](config[_0xfe6e('0x4c')],_0xfe6e('0x46'),util[_0xfe6e('0x4d')]('%s.%s',path['basename'](_0x4fad77['file'][_0xfe6e('0x54')],path[_0xfe6e('0x52')](_0x4fad77[_0xfe6e('0x53')][_0xfe6e('0x54')])),_0x49e3c7[_0xfe6e('0x45')]));logger[_0xfe6e('0x57')](_0xfe6e('0x58'),_0x2dc324);logger[_0xfe6e('0x57')](_0xfe6e('0x59'),_0x435589);try{fs['chmodSync'](_0x2dc324,parseInt(_0xfe6e('0x5a'),0x8));var _0x7344d0=sox[_0xfe6e('0x5b')](_0x2dc324,_0x435589,{'sampleRate':0x1f40,'format':_0xfe6e('0x5c'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x7344d0['on']('error',function(_0x202d06){fs[_0xfe6e('0x5d')](_0x2dc324);_0x547cd5[_0xfe6e('0x16')](0x1f4)[_0xfe6e('0x26')](_0x202d06);});_0x7344d0['on'](_0xfe6e('0x5e'),function(_0x213c58){_0x49e3c7['original_duration']=isNaN(_0x213c58[_0xfe6e('0x5f')])?null:_0x213c58[_0xfe6e('0x5f')]*0x3e8;_0x49e3c7[_0xfe6e('0x60')]=isNaN(_0x213c58[_0xfe6e('0x61')])?null:_0x213c58['sampleCount'];_0x49e3c7[_0xfe6e('0x62')]=isNaN(_0x213c58[_0xfe6e('0x63')])?null:_0x213c58[_0xfe6e('0x63')];_0x49e3c7[_0xfe6e('0x64')]=isNaN(_0x213c58['bitRate'])?null:_0x213c58['bitRate'];_0x49e3c7[_0xfe6e('0x65')]=isNaN(_0x213c58['sampleRate'])?null:_0x213c58['sampleRate'];});_0x7344d0['on'](_0xfe6e('0x66'),function(_0x2f4afe){_0x49e3c7[_0xfe6e('0x67')]=isNaN(_0x2f4afe['duration'])?null:_0x2f4afe[_0xfe6e('0x5f')]*0x3e8;_0x49e3c7['converted_sampleCount']=isNaN(_0x2f4afe[_0xfe6e('0x61')])?null:_0x2f4afe[_0xfe6e('0x61')];_0x49e3c7[_0xfe6e('0x68')]=isNaN(_0x2f4afe[_0xfe6e('0x63')])?null:_0x2f4afe[_0xfe6e('0x63')];_0x49e3c7[_0xfe6e('0x69')]=isNaN(_0x2f4afe[_0xfe6e('0x6a')])?null:_0x2f4afe[_0xfe6e('0x6a')];_0x49e3c7[_0xfe6e('0x6b')]=isNaN(_0x2f4afe[_0xfe6e('0x6c')])?null:_0x2f4afe[_0xfe6e('0x6c')];});_0x7344d0['on']('end',function(){fs['chmodSync'](_0x435589,parseInt('0777',0x8));return db['Sound'][_0xfe6e('0x4f')](_0x49e3c7)[_0xfe6e('0x20')](function(_0x54371a){var _0x2525a1={'role':_0x4fad77['body']['role'],'userProfileId':_0x4fad77['body'][_0xfe6e('0x6d')]};if(!_0x2525a1)throw new Error(_0xfe6e('0x6e'));if(_0x2525a1[_0xfe6e('0x6f')]===_0xfe6e('0x70')){var _0x55a39e=_0x54371a[_0xfe6e('0x71')]({'plain':!![]});return db[_0xfe6e('0x72')]['find']({'where':{'name':_0xfe6e('0x73'),'userProfileId':_0x2525a1[_0xfe6e('0x6d')]},'raw':!![]})[_0xfe6e('0x20')](function(_0x2e5616){if(_0x2e5616&&_0x2e5616[_0xfe6e('0x74')]===0x0){return db['UserProfileResource'][_0xfe6e('0x4f')]({'name':_0x55a39e[_0xfe6e('0x25')],'resourceId':_0x55a39e['id'],'type':_0x2e5616[_0xfe6e('0x25')],'sectionId':_0x2e5616['id']},{})[_0xfe6e('0x20')](function(){return _0x54371a;});}else{return _0x54371a;}})[_0xfe6e('0x40')](function(_0x5065b9){logger[_0xfe6e('0x23')](_0xfe6e('0x75'),_0x5065b9);throw _0x5065b9;});}return _0x54371a;})['then'](respondWithResult(_0x547cd5,null))['catch'](handleError(_0x547cd5,null));});_0x7344d0['start']();}catch(_0x3ede12){_0x547cd5[_0xfe6e('0x16')](0x1f4)[_0xfe6e('0x26')](_0x3ede12);}};exports[_0xfe6e('0x76')]=function(_0x9ca379,_0x37c2a7,_0x29bd04){return db['Sound'][_0xfe6e('0x43')]({'where':{'id':_0x9ca379['params']['id']}})[_0xfe6e('0x20')](handleEntityNotFound(_0x37c2a7,null))[_0xfe6e('0x20')](saveUpdates(_['pick'](_0x9ca379['body'],[_0xfe6e('0x25'),_0xfe6e('0x77')]),null))['then'](respondWithResult(_0x37c2a7,null))[_0xfe6e('0x40')](handleError(_0x37c2a7,null));};exports['delete']=function(_0x526a92,_0x100072,_0x21c14c){return db[_0xfe6e('0x28')]['find']({'where':{'id':_0x526a92['params']['id']}})[_0xfe6e('0x20')](function(_0x2496f3){if(_0x2496f3){return _0x2496f3['destroy']();}})[_0xfe6e('0x20')](function(_0x3f58f6){var _0x4c8494=path[_0xfe6e('0x4b')](config[_0xfe6e('0x4c')],_0xfe6e('0x56'),util[_0xfe6e('0x4d')](_0xfe6e('0x4e'),_0x3f58f6[_0xfe6e('0x44')],_0x3f58f6[_0xfe6e('0x78')]));var _0x3fb3b1=path[_0xfe6e('0x4b')](config[_0xfe6e('0x4c')],_0xfe6e('0x46'),util[_0xfe6e('0x4d')](_0xfe6e('0x4e'),_0x3f58f6[_0xfe6e('0x44')],_0x3f58f6['converted_format']));fs[_0xfe6e('0x5d')](_0x4c8494);fs[_0xfe6e('0x5d')](_0x3fb3b1);return _0x3f58f6;})['then'](function(_0x549648){if(_0x549648){return _0x100072[_0xfe6e('0x16')](0xcc)['end']();}})[_0xfe6e('0x20')](handleEntityNotFound(_0x100072,null))[_0xfe6e('0x40')](handleError(_0x100072,null));};
\ No newline at end of file
+var _0x4bb5=['status','end','json','offset','undefined','count','set','Content-Range','reject','save','then','get','Sounds','UserProfileResource','stack','name','send','map','Sound','rawAttributes','fieldName','model','keys','filters','query','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','pick','where','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','intersection','length','options','find','converted_format','existsSync','join','root','server/files/sounds/converted','save_name','Sequelize','ValidationError','download','format','%s.%s','create','basename','file','originalname','filename','extname','substring','wav','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','error','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','bitRate','dest','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','sampleRate','body','role','userProfileId','user','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','delete','destroy','server/files/sounds/original','original_format','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus'];(function(_0x41927f,_0x1cea30){var _0x122a0f=function(_0x5d529f){while(--_0x5d529f){_0x41927f['push'](_0x41927f['shift']());}};_0x122a0f(++_0x1cea30);}(_0x4bb5,0x1c8));var _0x54bb=function(_0x5271b6,_0x2733af){_0x5271b6=_0x5271b6-0x0;var _0x31921e=_0x4bb5[_0x5271b6];return _0x31921e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x54bb('0x0'));var zipdir=require(_0x54bb('0x1'));var jsonpatch=require(_0x54bb('0x2'));var rp=require(_0x54bb('0x3'));var moment=require(_0x54bb('0x4'));var BPromise=require(_0x54bb('0x5'));var Mustache=require(_0x54bb('0x6'));var util=require(_0x54bb('0x7'));var path=require('path');var sox=require(_0x54bb('0x8'));var csv=require(_0x54bb('0x9'));var ejs=require(_0x54bb('0xa'));var fs=require('fs');var fs_extra=require(_0x54bb('0xb'));var _=require(_0x54bb('0xc'));var squel=require('squel');var crypto=require(_0x54bb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x54bb('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x54bb('0xf'));var authService=require(_0x54bb('0x10'));var qs=require(_0x54bb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x54bb('0x12'));var logger=require(_0x54bb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x54bb('0x14'));var licenseUtil=require(_0x54bb('0x15'));var db=require(_0x54bb('0x16'))['db'];function respondWithStatusCode(_0xda2360,_0x5ab7b2){_0x5ab7b2=_0x5ab7b2||0xcc;return function(_0x48ba12){if(_0x48ba12){return _0xda2360[_0x54bb('0x17')](_0x5ab7b2);}return _0xda2360[_0x54bb('0x18')](_0x5ab7b2)[_0x54bb('0x19')]();};}function respondWithResult(_0x1b5cb9,_0xca2d17){_0xca2d17=_0xca2d17||0xc8;return function(_0x57b126){if(_0x57b126){return _0x1b5cb9[_0x54bb('0x18')](_0xca2d17)[_0x54bb('0x1a')](_0x57b126);}};}function respondWithFilteredResult(_0x39de88,_0x5633ea){return function(_0x4053ee){if(_0x4053ee){var _0x587532=typeof _0x5633ea[_0x54bb('0x1b')]===_0x54bb('0x1c')&&typeof _0x5633ea['limit']===_0x54bb('0x1c');var _0x135551=_0x4053ee[_0x54bb('0x1d')];var _0xeec81f=_0x587532?0x0:_0x5633ea[_0x54bb('0x1b')];var _0x324d77=_0x587532?_0x4053ee[_0x54bb('0x1d')]:_0x5633ea[_0x54bb('0x1b')]+_0x5633ea['limit'];var _0x3f1e65;if(_0x324d77>=_0x135551){_0x324d77=_0x135551;_0x3f1e65=0xc8;}else{_0x3f1e65=0xce;}_0x39de88['status'](_0x3f1e65);return _0x39de88[_0x54bb('0x1e')](_0x54bb('0x1f'),_0xeec81f+'-'+_0x324d77+'/'+_0x135551)['json'](_0x4053ee);}return null;};}function patchUpdates(_0x1fd523){return function(_0x16b680){try{jsonpatch['apply'](_0x16b680,_0x1fd523,!![]);}catch(_0x29c629){return BPromise[_0x54bb('0x20')](_0x29c629);}return _0x16b680[_0x54bb('0x21')]();};}function saveUpdates(_0x473590,_0x57dbec){return function(_0x141ed7){if(_0x141ed7){return _0x141ed7['update'](_0x473590)['then'](function(_0x153eba){return _0x153eba;});}return null;};}function removeEntity(_0x290932,_0x4a3acd){return function(_0x1c5f39){if(_0x1c5f39){return _0x1c5f39['destroy']()[_0x54bb('0x22')](function(){var _0x18449c=_0x1c5f39[_0x54bb('0x23')]({'plain':!![]});var _0x2da538=_0x54bb('0x24');return db[_0x54bb('0x25')]['destroy']({'where':{'type':_0x2da538,'resourceId':_0x18449c['id']}})[_0x54bb('0x22')](function(){return _0x1c5f39;});})[_0x54bb('0x22')](function(){_0x290932[_0x54bb('0x18')](0xcc)[_0x54bb('0x19')]();});}};}function handleEntityNotFound(_0x11128b,_0x460aae){return function(_0x2600d2){if(!_0x2600d2){_0x11128b[_0x54bb('0x17')](0x194);}return _0x2600d2;};}function handleError(_0x456934,_0x41f4bb){_0x41f4bb=_0x41f4bb||0x1f4;return function(_0x12a9ee){logger['error'](_0x12a9ee[_0x54bb('0x26')]);if(_0x12a9ee[_0x54bb('0x27')]){delete _0x12a9ee['name'];}_0x456934[_0x54bb('0x18')](_0x41f4bb)[_0x54bb('0x28')](_0x12a9ee);};}exports['index']=function(_0x564f92,_0x21d40e){var _0x3b4909={},_0x2d6e7f={},_0x553d45={'count':0x0,'rows':[]};var _0x2aef2d=_[_0x54bb('0x29')](db[_0x54bb('0x2a')][_0x54bb('0x2b')],function(_0x420c78){return{'name':_0x420c78[_0x54bb('0x2c')],'type':_0x420c78['type']['key']};});_0x2d6e7f[_0x54bb('0x2d')]=_[_0x54bb('0x29')](_0x2aef2d,_0x54bb('0x27'));_0x2d6e7f['query']=_[_0x54bb('0x2e')](_0x564f92['query']);_0x2d6e7f[_0x54bb('0x2f')]=_['intersection'](_0x2d6e7f[_0x54bb('0x2d')],_0x2d6e7f[_0x54bb('0x30')]);_0x3b4909[_0x54bb('0x31')]=_['intersection'](_0x2d6e7f[_0x54bb('0x2d')],qs[_0x54bb('0x32')](_0x564f92[_0x54bb('0x30')]['fields']));_0x3b4909[_0x54bb('0x31')]=_0x3b4909[_0x54bb('0x31')]['length']?_0x3b4909['attributes']:_0x2d6e7f[_0x54bb('0x2d')];if(!_0x564f92[_0x54bb('0x30')][_0x54bb('0x33')](_0x54bb('0x34'))){_0x3b4909[_0x54bb('0x35')]=qs[_0x54bb('0x35')](_0x564f92['query'][_0x54bb('0x35')]);_0x3b4909[_0x54bb('0x1b')]=qs[_0x54bb('0x1b')](_0x564f92['query'][_0x54bb('0x1b')]);}_0x3b4909[_0x54bb('0x36')]=qs['sort'](_0x564f92[_0x54bb('0x30')][_0x54bb('0x37')]);_0x3b4909['where']=qs['filters'](_[_0x54bb('0x38')](_0x564f92[_0x54bb('0x30')],_0x2d6e7f['filters']),_0x2aef2d);if(_0x564f92['query']['filter']){_0x3b4909[_0x54bb('0x39')]=_[_0x54bb('0x3a')](_0x3b4909[_0x54bb('0x39')],{'$or':_[_0x54bb('0x29')](_0x2aef2d,function(_0x12d4b9){if(_0x12d4b9[_0x54bb('0x3b')]!==_0x54bb('0x3c')){var _0x4e104c={};_0x4e104c[_0x12d4b9[_0x54bb('0x27')]]={'$like':'%'+_0x564f92[_0x54bb('0x30')]['filter']+'%'};return _0x4e104c;}})});}_0x3b4909=_[_0x54bb('0x3a')]({},_0x3b4909,_0x564f92['options']);var _0x174117={'where':_0x3b4909[_0x54bb('0x39')]};return db[_0x54bb('0x2a')][_0x54bb('0x1d')](_0x174117)[_0x54bb('0x22')](function(_0x387f7d){_0x553d45[_0x54bb('0x1d')]=_0x387f7d;if(_0x564f92[_0x54bb('0x30')][_0x54bb('0x3d')]){_0x3b4909[_0x54bb('0x3e')]=[{'all':!![]}];}return db['Sound'][_0x54bb('0x3f')](_0x3b4909);})['then'](function(_0x450220){_0x553d45[_0x54bb('0x40')]=_0x450220;return _0x553d45;})['then'](respondWithFilteredResult(_0x21d40e,_0x3b4909))[_0x54bb('0x41')](handleError(_0x21d40e,null));};exports[_0x54bb('0x42')]=function(_0x365f8c,_0x3b46f9){var _0x944be9={'raw':!![],'where':{'id':_0x365f8c[_0x54bb('0x43')]['id']}},_0x50587e={};_0x50587e[_0x54bb('0x2d')]=_[_0x54bb('0x2e')](db[_0x54bb('0x2a')][_0x54bb('0x2b')]);_0x50587e['query']=_[_0x54bb('0x2e')](_0x365f8c[_0x54bb('0x30')]);_0x50587e['filters']=_[_0x54bb('0x44')](_0x50587e[_0x54bb('0x2d')],_0x50587e[_0x54bb('0x30')]);_0x944be9[_0x54bb('0x31')]=_['intersection'](_0x50587e[_0x54bb('0x2d')],qs[_0x54bb('0x32')](_0x365f8c[_0x54bb('0x30')][_0x54bb('0x32')]));_0x944be9['attributes']=_0x944be9['attributes'][_0x54bb('0x45')]?_0x944be9[_0x54bb('0x31')]:_0x50587e[_0x54bb('0x2d')];if(_0x365f8c[_0x54bb('0x30')][_0x54bb('0x3d')]){_0x944be9[_0x54bb('0x3e')]=[{'all':!![]}];}_0x944be9=_[_0x54bb('0x3a')]({},_0x944be9,_0x365f8c[_0x54bb('0x46')]);return db[_0x54bb('0x2a')]['find'](_0x944be9)[_0x54bb('0x22')](handleEntityNotFound(_0x3b46f9,null))['then'](respondWithResult(_0x3b46f9,null))['catch'](handleError(_0x3b46f9,null));};exports['download']=function(_0x554393,_0x4b6ff9,_0x5cbb5d){return db[_0x54bb('0x2a')][_0x54bb('0x47')]({'where':{'id':_0x554393[_0x54bb('0x43')]['id']},'attributes':[_0x54bb('0x27'),'save_name',_0x54bb('0x48')],'raw':!![]})[_0x54bb('0x22')](handleEntityNotFound(_0x4b6ff9,null))[_0x54bb('0x22')](function(_0x4500ac){if(_0x4500ac){if(!fs[_0x54bb('0x49')](path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),_0x4500ac[_0x54bb('0x4d')]+'.'+_0x4500ac['converted_format']))){throw new db[(_0x54bb('0x4e'))][(_0x54bb('0x4f'))]('Sound\x20not\x20found');}return _0x4b6ff9[_0x54bb('0x50')](path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],'server/files/sounds/converted',util[_0x54bb('0x51')]('%s.%s',_0x4500ac[_0x54bb('0x4d')],_0x4500ac['converted_format'])),util[_0x54bb('0x51')](_0x54bb('0x52'),_0x4500ac[_0x54bb('0x27')],_0x4500ac[_0x54bb('0x48')]));}return null;})[_0x54bb('0x41')](handleError(_0x4b6ff9,null));};exports[_0x54bb('0x53')]=function(_0x450475,_0x5dfd23,_0x3b2e9f){var _0x212cda={'name':path[_0x54bb('0x54')](_0x450475[_0x54bb('0x55')][_0x54bb('0x56')],path['extname'](_0x450475['file']['originalname'])),'save_name':path[_0x54bb('0x54')](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')],path[_0x54bb('0x58')](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')])),'original_format':path[_0x54bb('0x58')](_0x450475['file'][_0x54bb('0x56')])[_0x54bb('0x59')](0x1),'converted_format':_0x54bb('0x5a')};var _0x615d85=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],'server/files/sounds/original',_0x450475[_0x54bb('0x55')]['filename']);var _0x3600d7=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),util[_0x54bb('0x51')](_0x54bb('0x52'),path[_0x54bb('0x54')](_0x450475['file'][_0x54bb('0x57')],path['extname'](_0x450475[_0x54bb('0x55')][_0x54bb('0x57')])),_0x212cda[_0x54bb('0x48')]));logger['info']('Sound\x20upload\x20filepath:\x20%s',_0x615d85);logger['info'](_0x54bb('0x5b'),_0x3600d7);try{fs[_0x54bb('0x5c')](_0x615d85,parseInt(_0x54bb('0x5d'),0x8));var _0x928006=sox[_0x54bb('0x5e')](_0x615d85,_0x3600d7,{'sampleRate':0x1f40,'format':_0x54bb('0x5a'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x928006['on'](_0x54bb('0x5f'),function(_0x26c832){fs['unlinkSync'](_0x615d85);_0x5dfd23[_0x54bb('0x18')](0x1f4)[_0x54bb('0x28')](_0x26c832);});_0x928006['on']('src',function(_0x24f357){_0x212cda['original_duration']=isNaN(_0x24f357[_0x54bb('0x60')])?null:_0x24f357[_0x54bb('0x60')]*0x3e8;_0x212cda[_0x54bb('0x61')]=isNaN(_0x24f357[_0x54bb('0x62')])?null:_0x24f357['sampleCount'];_0x212cda[_0x54bb('0x63')]=isNaN(_0x24f357['channelCount'])?null:_0x24f357[_0x54bb('0x64')];_0x212cda['original_bitRate']=isNaN(_0x24f357[_0x54bb('0x65')])?null:_0x24f357['bitRate'];_0x212cda['original_sampleRate']=isNaN(_0x24f357['sampleRate'])?null:_0x24f357['sampleRate'];});_0x928006['on'](_0x54bb('0x66'),function(_0x56661b){_0x212cda['converted_duration']=isNaN(_0x56661b[_0x54bb('0x60')])?null:_0x56661b[_0x54bb('0x60')]*0x3e8;_0x212cda[_0x54bb('0x67')]=isNaN(_0x56661b[_0x54bb('0x62')])?null:_0x56661b[_0x54bb('0x62')];_0x212cda[_0x54bb('0x68')]=isNaN(_0x56661b[_0x54bb('0x64')])?null:_0x56661b[_0x54bb('0x64')];_0x212cda[_0x54bb('0x69')]=isNaN(_0x56661b[_0x54bb('0x65')])?null:_0x56661b[_0x54bb('0x65')];_0x212cda[_0x54bb('0x6a')]=isNaN(_0x56661b[_0x54bb('0x6b')])?null:_0x56661b[_0x54bb('0x6b')];});_0x928006['on'](_0x54bb('0x19'),function(){fs[_0x54bb('0x5c')](_0x3600d7,parseInt(_0x54bb('0x5d'),0x8));return db[_0x54bb('0x2a')][_0x54bb('0x53')](_0x212cda)['then'](function(_0x1184b4){var _0xfee454={'role':_0x450475[_0x54bb('0x6c')][_0x54bb('0x6d')],'userProfileId':_0x450475[_0x54bb('0x6c')][_0x54bb('0x6e')]};if(!_0xfee454)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xfee454[_0x54bb('0x6d')]===_0x54bb('0x6f')){var _0x3882d6=_0x1184b4['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0x54bb('0x24'),'userProfileId':_0xfee454[_0x54bb('0x6e')]},'raw':!![]})[_0x54bb('0x22')](function(_0x2ab44a){if(_0x2ab44a&&_0x2ab44a[_0x54bb('0x70')]===0x0){return db['UserProfileResource']['create']({'name':_0x3882d6[_0x54bb('0x27')],'resourceId':_0x3882d6['id'],'type':_0x2ab44a[_0x54bb('0x27')],'sectionId':_0x2ab44a['id']},{})[_0x54bb('0x22')](function(){return _0x1184b4;});}else{return _0x1184b4;}})['catch'](function(_0x182a54){logger[_0x54bb('0x5f')](_0x54bb('0x71'),_0x182a54);throw _0x182a54;});}return _0x1184b4;})[_0x54bb('0x22')](respondWithResult(_0x5dfd23,null))[_0x54bb('0x41')](handleError(_0x5dfd23,null));});_0x928006[_0x54bb('0x72')]();}catch(_0x262706){_0x5dfd23[_0x54bb('0x18')](0x1f4)[_0x54bb('0x28')](_0x262706);}};exports['update']=function(_0x216f50,_0xfd35a1,_0xf7dbef){return db['Sound'][_0x54bb('0x47')]({'where':{'id':_0x216f50[_0x54bb('0x43')]['id']}})['then'](handleEntityNotFound(_0xfd35a1,null))[_0x54bb('0x22')](saveUpdates(_[_0x54bb('0x38')](_0x216f50[_0x54bb('0x6c')],['name','description']),null))[_0x54bb('0x22')](respondWithResult(_0xfd35a1,null))[_0x54bb('0x41')](handleError(_0xfd35a1,null));};exports[_0x54bb('0x73')]=function(_0x31d904,_0x10f458,_0x44a808){return db[_0x54bb('0x2a')][_0x54bb('0x47')]({'where':{'id':_0x31d904[_0x54bb('0x43')]['id']}})[_0x54bb('0x22')](function(_0x1fcb43){if(_0x1fcb43){return _0x1fcb43[_0x54bb('0x74')]();}})['then'](function(_0x2247b0){var _0x569fe8=path['join'](config[_0x54bb('0x4b')],_0x54bb('0x75'),util[_0x54bb('0x51')](_0x54bb('0x52'),_0x2247b0[_0x54bb('0x4d')],_0x2247b0[_0x54bb('0x76')]));var _0x7f2304=path[_0x54bb('0x4a')](config[_0x54bb('0x4b')],_0x54bb('0x4c'),util['format'](_0x54bb('0x52'),_0x2247b0['save_name'],_0x2247b0['converted_format']));fs[_0x54bb('0x77')](_0x569fe8);fs['unlinkSync'](_0x7f2304);return _0x2247b0;})[_0x54bb('0x22')](function(_0x4b2a21){if(_0x4b2a21){return _0x10f458[_0x54bb('0x18')](0xcc)['end']();}})[_0x54bb('0x22')](handleEntityNotFound(_0x10f458,null))[_0x54bb('0x41')](handleError(_0x10f458,null));};
\ No newline at end of file
index d7b0de0..44d7eb5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe98e=['lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./sound.attributes','exports','Sound','tools_sounds'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0xe98e,0xfc));var _0xee98=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0xe98e[_0x126558];return _0x1f6d14;};'use strict';var _=require(_0xee98('0x0'));var util=require(_0xee98('0x1'));var logger=require(_0xee98('0x2'))(_0xee98('0x3'));var moment=require(_0xee98('0x4'));var BPromise=require('bluebird');var rp=require(_0xee98('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xee98('0x6'));var config=require(_0xee98('0x7'));var attributes=require(_0xee98('0x8'));module[_0xee98('0x9')]=function(_0x25a801,_0x308729){return _0x25a801['define'](_0xee98('0xa'),attributes,{'tableName':_0xee98('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfea9=['tools_sounds','lodash','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./sound.attributes','define','Sound'];(function(_0x52c95a,_0x384c07){var _0x1b6a93=function(_0x1dbe39){while(--_0x1dbe39){_0x52c95a['push'](_0x52c95a['shift']());}};_0x1b6a93(++_0x384c07);}(_0xfea9,0x85));var _0x9fea=function(_0x16ceb5,_0x24dbf0){_0x16ceb5=_0x16ceb5-0x0;var _0x2ecd40=_0xfea9[_0x16ceb5];return _0x2ecd40;};'use strict';var _=require(_0x9fea('0x0'));var util=require('util');var logger=require(_0x9fea('0x1'))('api');var moment=require(_0x9fea('0x2'));var BPromise=require(_0x9fea('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9fea('0x4'));var rimraf=require(_0x9fea('0x5'));var config=require(_0x9fea('0x6'));var attributes=require(_0x9fea('0x7'));module['exports']=function(_0x29b519,_0x28d63d){return _0x29b519[_0x9fea('0x8')](_0x9fea('0x9'),attributes,{'tableName':_0x9fea('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e38e5c4..a7e5489 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e41=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','Sound','find','options','raw','where','map','model','attributes','include','ShowSound'];(function(_0x211fef,_0x4ab716){var _0x5447bf=function(_0x306ea3){while(--_0x306ea3){_0x211fef['push'](_0x211fef['shift']());}};_0x5447bf(++_0x4ab716);}(_0x3e41,0xe8));var _0x13e4=function(_0x11ab4f,_0x5f4fdc){_0x11ab4f=_0x11ab4f-0x0;var _0x11d747=_0x3e41[_0x11ab4f];return _0x11d747;};'use strict';var _=require(_0x13e4('0x0'));var util=require(_0x13e4('0x1'));var moment=require(_0x13e4('0x2'));var BPromise=require(_0x13e4('0x3'));var rs=require(_0x13e4('0x4'));var fs=require('fs');var Redis=require(_0x13e4('0x5'));var db=require(_0x13e4('0x6'))['db'];var utils=require(_0x13e4('0x7'));var logger=require(_0x13e4('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0x13e4('0x9'));var client=jayson[_0x13e4('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x350c4b,_0x2dd749,_0xca390b){return new BPromise(function(_0x2b79d5,_0x515e4a){return client['request'](_0x350c4b,_0xca390b)[_0x13e4('0xb')](function(_0x4231c8){logger['info'](_0x13e4('0xc'),_0x2dd749,_0x13e4('0xd'));logger[_0x13e4('0xe')](_0x13e4('0xf'),_0x2dd749,'request\x20sent',JSON[_0x13e4('0x10')](_0x4231c8));if(_0x4231c8[_0x13e4('0x11')]){if(_0x4231c8['error'][_0x13e4('0x12')]===0x1f4){logger['error']('Sound,\x20%s,\x20%s',_0x2dd749,_0x4231c8[_0x13e4('0x11')][_0x13e4('0x13')]);return _0x515e4a(_0x4231c8['error'][_0x13e4('0x13')]);}logger[_0x13e4('0x11')](_0x13e4('0xc'),_0x2dd749,_0x4231c8[_0x13e4('0x11')][_0x13e4('0x13')]);return _0x2b79d5(_0x4231c8[_0x13e4('0x11')][_0x13e4('0x13')]);}else{logger[_0x13e4('0x14')]('Sound,\x20%s,\x20%s',_0x2dd749,_0x13e4('0xd'));_0x2b79d5(_0x4231c8[_0x13e4('0x15')][_0x13e4('0x13')]);}})['catch'](function(_0x15dd09){logger[_0x13e4('0x11')]('Sound,\x20%s,\x20%s',_0x2dd749,_0x15dd09);_0x515e4a(_0x15dd09);});});}exports['ShowSound']=function(_0x2b7810){var _0x9d2121=this;return new Promise(function(_0x3e5596,_0x2a4e9d){return db[_0x13e4('0x16')][_0x13e4('0x17')]({'raw':_0x2b7810[_0x13e4('0x18')]?_0x2b7810[_0x13e4('0x18')][_0x13e4('0x19')]===undefined?!![]:![]:!![],'where':_0x2b7810['options']?_0x2b7810[_0x13e4('0x18')][_0x13e4('0x1a')]||null:null,'attributes':_0x2b7810[_0x13e4('0x18')]?_0x2b7810[_0x13e4('0x18')]['attributes']||null:null,'include':_0x2b7810['options']?_0x2b7810[_0x13e4('0x18')]['include']?_[_0x13e4('0x1b')](_0x2b7810['options']['include'],function(_0x21822a){return{'model':db[_0x21822a[_0x13e4('0x1c')]],'as':_0x21822a['as'],'attributes':_0x21822a[_0x13e4('0x1d')],'include':_0x21822a[_0x13e4('0x1e')]?_[_0x13e4('0x1b')](_0x21822a[_0x13e4('0x1e')],function(_0x228ed2){return{'model':db[_0x228ed2[_0x13e4('0x1c')]],'as':_0x228ed2['as'],'attributes':_0x228ed2[_0x13e4('0x1d')],'include':_0x228ed2[_0x13e4('0x1e')]?_[_0x13e4('0x1b')](_0x228ed2[_0x13e4('0x1e')],function(_0x4d5783){return{'model':db[_0x4d5783['model']],'as':_0x4d5783['as'],'attributes':_0x4d5783[_0x13e4('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x13e4('0xb')](function(_0x2ef135){logger[_0x13e4('0x14')](_0x13e4('0x1f'),_0x2b7810);logger[_0x13e4('0xe')]('ShowSound',_0x2b7810,JSON[_0x13e4('0x10')](_0x2ef135));_0x3e5596(_0x2ef135);})[_0x13e4('0x20')](function(_0x497e1d){logger['error'](_0x13e4('0x1f'),_0x497e1d[_0x13e4('0x13')],_0x2b7810);_0x2a4e9d(_0x9d2121[_0x13e4('0x11')](0x1f4,_0x497e1d[_0x13e4('0x13')]));});});};
\ No newline at end of file
+var _0xe148=['raw','attributes','include','map','model','debug','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','Sound,\x20%s,\x20%s','message','result','catch','ShowSound','Sound','find','options'];(function(_0x12b1c7,_0x221e8f){var _0x2aa8a2=function(_0x3f51e1){while(--_0x3f51e1){_0x12b1c7['push'](_0x12b1c7['shift']());}};_0x2aa8a2(++_0x221e8f);}(_0xe148,0x1b3));var _0x8e14=function(_0x5743e3,_0x4a2aab){_0x5743e3=_0x5743e3-0x0;var _0x24d100=_0xe148[_0x5743e3];return _0x24d100;};'use strict';var _=require(_0x8e14('0x0'));var util=require(_0x8e14('0x1'));var moment=require(_0x8e14('0x2'));var BPromise=require(_0x8e14('0x3'));var rs=require(_0x8e14('0x4'));var fs=require('fs');var Redis=require(_0x8e14('0x5'));var db=require(_0x8e14('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e14('0x7'))(_0x8e14('0x8'));var config=require(_0x8e14('0x9'));var jayson=require(_0x8e14('0xa'));var client=jayson[_0x8e14('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5f13d7,_0x14ff61,_0x28bf81){return new BPromise(function(_0x5d04cc,_0x1ac0e0){return client[_0x8e14('0xc')](_0x5f13d7,_0x28bf81)[_0x8e14('0xd')](function(_0x1ec3c4){logger[_0x8e14('0xe')]('Sound,\x20%s,\x20%s',_0x14ff61,_0x8e14('0xf'));logger['debug'](_0x8e14('0x10'),_0x14ff61,'request\x20sent',JSON[_0x8e14('0x11')](_0x1ec3c4));if(_0x1ec3c4[_0x8e14('0x12')]){if(_0x1ec3c4['error']['code']===0x1f4){logger[_0x8e14('0x12')](_0x8e14('0x13'),_0x14ff61,_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);return _0x1ac0e0(_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);}logger[_0x8e14('0x12')](_0x8e14('0x13'),_0x14ff61,_0x1ec3c4[_0x8e14('0x12')]['message']);return _0x5d04cc(_0x1ec3c4[_0x8e14('0x12')][_0x8e14('0x14')]);}else{logger[_0x8e14('0xe')](_0x8e14('0x13'),_0x14ff61,'request\x20sent');_0x5d04cc(_0x1ec3c4[_0x8e14('0x15')][_0x8e14('0x14')]);}})[_0x8e14('0x16')](function(_0x53403b){logger['error'](_0x8e14('0x13'),_0x14ff61,_0x53403b);_0x1ac0e0(_0x53403b);});});}exports[_0x8e14('0x17')]=function(_0x4b8ef8){var _0x8df99c=this;return new Promise(function(_0x1ea0a6,_0x107248){return db[_0x8e14('0x18')][_0x8e14('0x19')]({'raw':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1b')]===undefined?!![]:![]:!![],'where':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')]['where']||null:null,'attributes':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8['options'][_0x8e14('0x1c')]||null:null,'include':_0x4b8ef8[_0x8e14('0x1a')]?_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x4b8ef8[_0x8e14('0x1a')][_0x8e14('0x1d')],function(_0x59917e){return{'model':db[_0x59917e[_0x8e14('0x1f')]],'as':_0x59917e['as'],'attributes':_0x59917e[_0x8e14('0x1c')],'include':_0x59917e[_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x59917e[_0x8e14('0x1d')],function(_0x571f41){return{'model':db[_0x571f41[_0x8e14('0x1f')]],'as':_0x571f41['as'],'attributes':_0x571f41['attributes'],'include':_0x571f41[_0x8e14('0x1d')]?_[_0x8e14('0x1e')](_0x571f41[_0x8e14('0x1d')],function(_0x2650dd){return{'model':db[_0x2650dd[_0x8e14('0x1f')]],'as':_0x2650dd['as'],'attributes':_0x2650dd[_0x8e14('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x8e14('0xd')](function(_0x15f17e){logger[_0x8e14('0xe')]('ShowSound',_0x4b8ef8);logger[_0x8e14('0x20')](_0x8e14('0x17'),_0x4b8ef8,JSON[_0x8e14('0x11')](_0x15f17e));_0x1ea0a6(_0x15f17e);})['catch'](function(_0x3c56e6){logger['error']('ShowSound',_0x3c56e6[_0x8e14('0x14')],_0x4b8ef8);_0x107248(_0x8df99c[_0x8e14('0x12')](0x1f4,_0x3c56e6[_0x8e14('0x14')]));});});};
\ No newline at end of file
index 1e01248..f64317f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['exports','multer','path','express','fs-extra','../../components/interaction/service','../../config/environment','./squareMessage.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy'];(function(_0x50b40f,_0x3fb633){var _0x30d6b9=function(_0x5a488b){while(--_0x5a488b){_0x50b40f['push'](_0x50b40f['shift']());}};_0x30d6b9(++_0x3fb633);}(_0xb7e7,0x121));var _0x7b7e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xb7e7[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0x7b7e('0x0'));var util=require('util');var path=require(_0x7b7e('0x1'));var timeout=require('connect-timeout');var express=require(_0x7b7e('0x2'));var router=express['Router']();var fs_extra=require(_0x7b7e('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x7b7e('0x4'));var config=require(_0x7b7e('0x5'));var controller=require(_0x7b7e('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0x7b7e('0x7')]);router[_0x7b7e('0x8')](_0x7b7e('0x9'),auth['isAuthenticated'](),controller[_0x7b7e('0xa')]);router[_0x7b7e('0xb')]('/',auth[_0x7b7e('0xc')](),controller[_0x7b7e('0xd')]);router[_0x7b7e('0xe')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller['update']);router[_0x7b7e('0xf')](_0x7b7e('0x9'),auth[_0x7b7e('0xc')](),controller[_0x7b7e('0x10')]);module[_0x7b7e('0x11')]=router;
\ No newline at end of file
+var _0xda2d=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../config/environment','./squareMessage.controller','get'];(function(_0x451130,_0x595ee2){var _0x68c08e=function(_0x23fe84){while(--_0x23fe84){_0x451130['push'](_0x451130['shift']());}};_0x68c08e(++_0x595ee2);}(_0xda2d,0x102));var _0xdda2=function(_0x403c97,_0x5d2f2e){_0x403c97=_0x403c97-0x0;var _0x3ed852=_0xda2d[_0x403c97];return _0x3ed852;};'use strict';var multer=require('multer');var util=require(_0xdda2('0x0'));var path=require(_0xdda2('0x1'));var timeout=require(_0xdda2('0x2'));var express=require(_0xdda2('0x3'));var router=express[_0xdda2('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xdda2('0x5'));var controller=require(_0xdda2('0x6'));router[_0xdda2('0x7')]('/',auth[_0xdda2('0x8')](),controller[_0xdda2('0x9')]);router[_0xdda2('0x7')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0xb')]);router[_0xdda2('0xc')]('/',auth['isAuthenticated'](),controller[_0xdda2('0xd')]);router[_0xdda2('0xe')]('/:id',auth[_0xdda2('0x8')](),controller[_0xdda2('0xf')]);router[_0xdda2('0x10')](_0xdda2('0xa'),auth[_0xdda2('0x8')](),controller[_0xdda2('0x11')]);module[_0xdda2('0x12')]=router;
\ No newline at end of file
index 06cf0a4..9cda0d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x891c=['out','TEXT','sequelize','exports','medium','ENUM'];(function(_0x3782f1,_0xdb9da7){var _0x59aa2c=function(_0x3ecfb1){while(--_0x3ecfb1){_0x3782f1['push'](_0x3782f1['shift']());}};_0x59aa2c(++_0xdb9da7);}(_0x891c,0x188));var _0xc891=function(_0x160b19,_0x44248d){_0x160b19=_0x160b19-0x0;var _0x1bacb2=_0x891c[_0x160b19];return _0x1bacb2;};'use strict';var Sequelize=require(_0xc891('0x0'));module[_0xc891('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize['TEXT'](_0xc891('0x2')),'allowNull':![]},'direction':{'type':Sequelize[_0xc891('0x3')]('in',_0xc891('0x4')),'defaultValue':_0xc891('0x4'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xc891('0x5')]}};
\ No newline at end of file
+var _0x30c0=['medium','out','TEXT','sequelize','exports','STRING'];(function(_0x822546,_0x219ce7){var _0x13d9e7=function(_0x2f147b){while(--_0x2f147b){_0x822546['push'](_0x822546['shift']());}};_0x13d9e7(++_0x219ce7);}(_0x30c0,0x141));var _0x030c=function(_0x1043ac,_0x2f78db){_0x1043ac=_0x1043ac-0x0;var _0x10f21d=_0x30c0[_0x1043ac];return _0x10f21d;};'use strict';var Sequelize=require(_0x030c('0x0'));module[_0x030c('0x1')]={'uniqueid':{'type':Sequelize[_0x030c('0x2')]},'body':{'type':Sequelize['TEXT'](_0x030c('0x3')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in','out'),'defaultValue':_0x030c('0x4'),'allowNull':![]},'providerName':{'type':Sequelize[_0x030c('0x2')]},'providerResponse':{'type':Sequelize[_0x030c('0x5')]}};
\ No newline at end of file
index 27aa2ba..e05e905 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c36=['then','destroy','sendStatus','error','name','send','index','map','SquareMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','order','sort','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','intersection','options','create','body','find','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0x9c36,0xbf));var _0x69c3=function(_0x525633,_0x2fa8f8){_0x525633=_0x525633-0x0;var _0x5eef1f=_0x9c36[_0x525633];return _0x5eef1f;};'use strict';var emlformat=require(_0x69c3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x69c3('0x1'));var jsonpatch=require(_0x69c3('0x2'));var rp=require(_0x69c3('0x3'));var moment=require(_0x69c3('0x4'));var BPromise=require(_0x69c3('0x5'));var Mustache=require(_0x69c3('0x6'));var util=require(_0x69c3('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x69c3('0x8'));var ejs=require(_0x69c3('0x9'));var fs=require('fs');var fs_extra=require(_0x69c3('0xa'));var _=require(_0x69c3('0xb'));var squel=require('squel');var crypto=require(_0x69c3('0xc'));var jsforce=require(_0x69c3('0xd'));var deskjs=require(_0x69c3('0xe'));var toCsv=require('to-csv');var querystring=require(_0x69c3('0xf'));var Papa=require(_0x69c3('0x10'));var Redis=require(_0x69c3('0x11'));var authService=require(_0x69c3('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x69c3('0x13'));var hardwareService=require(_0x69c3('0x14'));var logger=require(_0x69c3('0x15'))(_0x69c3('0x16'));var utils=require('../../config/utils');var config=require(_0x69c3('0x17'));var licenseUtil=require(_0x69c3('0x18'));var db=require(_0x69c3('0x19'))['db'];function respondWithStatusCode(_0x5d8462,_0x9cc727){_0x9cc727=_0x9cc727||0xcc;return function(_0xb76c14){if(_0xb76c14){return _0x5d8462['sendStatus'](_0x9cc727);}return _0x5d8462[_0x69c3('0x1a')](_0x9cc727)[_0x69c3('0x1b')]();};}function respondWithResult(_0x13e6d5,_0x4a7f3c){_0x4a7f3c=_0x4a7f3c||0xc8;return function(_0x447b43){if(_0x447b43){return _0x13e6d5['status'](_0x4a7f3c)[_0x69c3('0x1c')](_0x447b43);}};}function respondWithFilteredResult(_0x3f5ca7,_0x4f039d){return function(_0x348716){if(_0x348716){var _0x4d3de0=typeof _0x4f039d[_0x69c3('0x1d')]===_0x69c3('0x1e')&&typeof _0x4f039d[_0x69c3('0x1f')]===_0x69c3('0x1e');var _0x29007f=_0x348716['count'];var _0x254102=_0x4d3de0?0x0:_0x4f039d['offset'];var _0x2423c5=_0x4d3de0?_0x348716[_0x69c3('0x20')]:_0x4f039d['offset']+_0x4f039d[_0x69c3('0x1f')];var _0x6d8117;if(_0x2423c5>=_0x29007f){_0x2423c5=_0x29007f;_0x6d8117=0xc8;}else{_0x6d8117=0xce;}_0x3f5ca7[_0x69c3('0x1a')](_0x6d8117);return _0x3f5ca7[_0x69c3('0x21')](_0x69c3('0x22'),_0x254102+'-'+_0x2423c5+'/'+_0x29007f)[_0x69c3('0x1c')](_0x348716);}return null;};}function patchUpdates(_0x2dac50){return function(_0x261262){try{jsonpatch['apply'](_0x261262,_0x2dac50,!![]);}catch(_0x4de9d2){return BPromise['reject'](_0x4de9d2);}return _0x261262[_0x69c3('0x23')]();};}function saveUpdates(_0x41b5d1,_0x4e8354){return function(_0x22ad82){if(_0x22ad82){return _0x22ad82[_0x69c3('0x24')](_0x41b5d1)[_0x69c3('0x25')](function(_0x55bf5b){return _0x55bf5b;});}return null;};}function removeEntity(_0x1cabc8,_0x1bb8bc){return function(_0xe92b55){if(_0xe92b55){return _0xe92b55[_0x69c3('0x26')]()['then'](function(){_0x1cabc8[_0x69c3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x17af97,_0x133a51){return function(_0x243f09){if(!_0x243f09){_0x17af97[_0x69c3('0x27')](0x194);}return _0x243f09;};}function handleError(_0x56bef9,_0x8cb97e){_0x8cb97e=_0x8cb97e||0x1f4;return function(_0x1ad52a){logger[_0x69c3('0x28')](_0x1ad52a['stack']);if(_0x1ad52a['name']){delete _0x1ad52a[_0x69c3('0x29')];}_0x56bef9[_0x69c3('0x1a')](_0x8cb97e)[_0x69c3('0x2a')](_0x1ad52a);};}exports[_0x69c3('0x2b')]=function(_0x119f5e,_0x2599b5){var _0x3dd4df={},_0x47bc51={},_0x27205f={'count':0x0,'rows':[]};var _0x54ed96=_[_0x69c3('0x2c')](db[_0x69c3('0x2d')][_0x69c3('0x2e')],function(_0x244315){return{'name':_0x244315[_0x69c3('0x2f')],'type':_0x244315[_0x69c3('0x30')][_0x69c3('0x31')]};});_0x47bc51[_0x69c3('0x32')]=_[_0x69c3('0x2c')](_0x54ed96,'name');_0x47bc51[_0x69c3('0x33')]=_[_0x69c3('0x34')](_0x119f5e['query']);_0x47bc51[_0x69c3('0x35')]=_['intersection'](_0x47bc51[_0x69c3('0x32')],_0x47bc51[_0x69c3('0x33')]);_0x3dd4df['attributes']=_['intersection'](_0x47bc51['model'],qs[_0x69c3('0x36')](_0x119f5e[_0x69c3('0x33')]['fields']));_0x3dd4df[_0x69c3('0x37')]=_0x3dd4df[_0x69c3('0x37')][_0x69c3('0x38')]?_0x3dd4df[_0x69c3('0x37')]:_0x47bc51['model'];if(!_0x119f5e[_0x69c3('0x33')][_0x69c3('0x39')]('nolimit')){_0x3dd4df[_0x69c3('0x1f')]=qs[_0x69c3('0x1f')](_0x119f5e[_0x69c3('0x33')][_0x69c3('0x1f')]);_0x3dd4df[_0x69c3('0x1d')]=qs[_0x69c3('0x1d')](_0x119f5e[_0x69c3('0x33')][_0x69c3('0x1d')]);}_0x3dd4df[_0x69c3('0x3a')]=qs['sort'](_0x119f5e[_0x69c3('0x33')][_0x69c3('0x3b')]);_0x3dd4df[_0x69c3('0x3c')]=qs[_0x69c3('0x35')](_['pick'](_0x119f5e['query'],_0x47bc51['filters']),_0x54ed96);if(_0x119f5e[_0x69c3('0x33')]['filter']){_0x3dd4df['where']=_['merge'](_0x3dd4df[_0x69c3('0x3c')],{'$or':_[_0x69c3('0x2c')](_0x54ed96,function(_0xeb8aa1){if(_0xeb8aa1['type']!==_0x69c3('0x3d')){var _0x4326d9={};_0x4326d9[_0xeb8aa1[_0x69c3('0x29')]]={'$like':'%'+_0x119f5e[_0x69c3('0x33')][_0x69c3('0x3e')]+'%'};return _0x4326d9;}})});}_0x3dd4df=_[_0x69c3('0x3f')]({},_0x3dd4df,_0x119f5e['options']);var _0x58cb15={'where':_0x3dd4df['where']};return db[_0x69c3('0x2d')][_0x69c3('0x20')](_0x58cb15)[_0x69c3('0x25')](function(_0x599a15){_0x27205f[_0x69c3('0x20')]=_0x599a15;if(_0x119f5e[_0x69c3('0x33')][_0x69c3('0x40')]){_0x3dd4df[_0x69c3('0x41')]=[{'all':!![]}];}return db[_0x69c3('0x2d')][_0x69c3('0x42')](_0x3dd4df);})[_0x69c3('0x25')](function(_0x4ff07e){_0x27205f[_0x69c3('0x43')]=_0x4ff07e;return _0x27205f;})[_0x69c3('0x25')](respondWithFilteredResult(_0x2599b5,_0x3dd4df))[_0x69c3('0x44')](handleError(_0x2599b5,null));};exports[_0x69c3('0x45')]=function(_0x420ae7,_0x488b3a){var _0x2554ec={'raw':!![],'where':{'id':_0x420ae7[_0x69c3('0x46')]['id']}},_0x107878={};_0x107878['model']=_[_0x69c3('0x34')](db[_0x69c3('0x2d')][_0x69c3('0x2e')]);_0x107878[_0x69c3('0x33')]=_[_0x69c3('0x34')](_0x420ae7[_0x69c3('0x33')]);_0x107878['filters']=_[_0x69c3('0x47')](_0x107878[_0x69c3('0x32')],_0x107878[_0x69c3('0x33')]);_0x2554ec['attributes']=_['intersection'](_0x107878[_0x69c3('0x32')],qs[_0x69c3('0x36')](_0x420ae7[_0x69c3('0x33')][_0x69c3('0x36')]));_0x2554ec[_0x69c3('0x37')]=_0x2554ec[_0x69c3('0x37')][_0x69c3('0x38')]?_0x2554ec['attributes']:_0x107878[_0x69c3('0x32')];if(_0x420ae7[_0x69c3('0x33')][_0x69c3('0x40')]){_0x2554ec[_0x69c3('0x41')]=[{'all':!![]}];}_0x2554ec=_[_0x69c3('0x3f')]({},_0x2554ec,_0x420ae7[_0x69c3('0x48')]);return db[_0x69c3('0x2d')]['find'](_0x2554ec)[_0x69c3('0x25')](handleEntityNotFound(_0x488b3a,null))[_0x69c3('0x25')](respondWithResult(_0x488b3a,null))[_0x69c3('0x44')](handleError(_0x488b3a,null));};exports['create']=function(_0x57b443,_0x55db96){return db[_0x69c3('0x2d')][_0x69c3('0x49')](_0x57b443[_0x69c3('0x4a')],{})[_0x69c3('0x25')](respondWithResult(_0x55db96,0xc9))[_0x69c3('0x44')](handleError(_0x55db96,null));};exports[_0x69c3('0x24')]=function(_0x1d0fe4,_0x4e2281){if(_0x1d0fe4[_0x69c3('0x4a')]['id']){delete _0x1d0fe4[_0x69c3('0x4a')]['id'];}return db[_0x69c3('0x2d')][_0x69c3('0x4b')]({'where':{'id':_0x1d0fe4[_0x69c3('0x46')]['id']}})[_0x69c3('0x25')](handleEntityNotFound(_0x4e2281,null))[_0x69c3('0x25')](saveUpdates(_0x1d0fe4[_0x69c3('0x4a')],null))[_0x69c3('0x25')](respondWithResult(_0x4e2281,null))[_0x69c3('0x44')](handleError(_0x4e2281,null));};exports[_0x69c3('0x26')]=function(_0x4c9784,_0xe30e3){return db[_0x69c3('0x2d')]['find']({'where':{'id':_0x4c9784['params']['id']}})[_0x69c3('0x25')](handleEntityNotFound(_0xe30e3,null))[_0x69c3('0x25')](removeEntity(_0xe30e3,null))[_0x69c3('0x44')](handleError(_0xe30e3,null));};
\ No newline at end of file
+var _0x513e=['request-promise','moment','bluebird','mustache','util','path','sox','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','offset','limit','undefined','count','set','json','apply','reject','save','update','then','destroy','sendStatus','stack','name','index','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','map','VIRTUAL','options','includeAll','include','SquareMessage','findAll','catch','show','params','length','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch'];(function(_0x39b479,_0xefdbb7){var _0x32bb35=function(_0x28447e){while(--_0x28447e){_0x39b479['push'](_0x39b479['shift']());}};_0x32bb35(++_0xefdbb7);}(_0x513e,0x138));var _0xe513=function(_0x14a0a0,_0x45d0cf){_0x14a0a0=_0x14a0a0-0x0;var _0x56b651=_0x513e[_0x14a0a0];return _0x56b651;};'use strict';var emlformat=require(_0xe513('0x0'));var rimraf=require(_0xe513('0x1'));var zipdir=require(_0xe513('0x2'));var jsonpatch=require(_0xe513('0x3'));var rp=require(_0xe513('0x4'));var moment=require(_0xe513('0x5'));var BPromise=require(_0xe513('0x6'));var Mustache=require(_0xe513('0x7'));var util=require(_0xe513('0x8'));var path=require(_0xe513('0x9'));var sox=require(_0xe513('0xa'));var csv=require('to-csv');var ejs=require(_0xe513('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe513('0xc'));var squel=require(_0xe513('0xd'));var crypto=require(_0xe513('0xe'));var jsforce=require(_0xe513('0xf'));var deskjs=require(_0xe513('0x10'));var toCsv=require(_0xe513('0x11'));var querystring=require(_0xe513('0x12'));var Papa=require(_0xe513('0x13'));var Redis=require(_0xe513('0x14'));var authService=require(_0xe513('0x15'));var qs=require('../../components/parsers/qs');var as=require(_0xe513('0x16'));var hardwareService=require(_0xe513('0x17'));var logger=require(_0xe513('0x18'))('api');var utils=require(_0xe513('0x19'));var config=require(_0xe513('0x1a'));var licenseUtil=require(_0xe513('0x1b'));var db=require(_0xe513('0x1c'))['db'];function respondWithStatusCode(_0x106a29,_0x350406){_0x350406=_0x350406||0xcc;return function(_0x1ee256){if(_0x1ee256){return _0x106a29['sendStatus'](_0x350406);}return _0x106a29[_0xe513('0x1d')](_0x350406)[_0xe513('0x1e')]();};}function respondWithResult(_0x3e9c92,_0x3e5387){_0x3e5387=_0x3e5387||0xc8;return function(_0x2902a1){if(_0x2902a1){return _0x3e9c92['status'](_0x3e5387)['json'](_0x2902a1);}};}function respondWithFilteredResult(_0x241552,_0x48e02c){return function(_0x5b8aae){if(_0x5b8aae){var _0x2ddc08=typeof _0x48e02c[_0xe513('0x1f')]==='undefined'&&typeof _0x48e02c[_0xe513('0x20')]===_0xe513('0x21');var _0x405654=_0x5b8aae['count'];var _0x21c200=_0x2ddc08?0x0:_0x48e02c[_0xe513('0x1f')];var _0x51efc0=_0x2ddc08?_0x5b8aae[_0xe513('0x22')]:_0x48e02c[_0xe513('0x1f')]+_0x48e02c['limit'];var _0x4fe164;if(_0x51efc0>=_0x405654){_0x51efc0=_0x405654;_0x4fe164=0xc8;}else{_0x4fe164=0xce;}_0x241552[_0xe513('0x1d')](_0x4fe164);return _0x241552[_0xe513('0x23')]('Content-Range',_0x21c200+'-'+_0x51efc0+'/'+_0x405654)[_0xe513('0x24')](_0x5b8aae);}return null;};}function patchUpdates(_0x263f3e){return function(_0x48cd65){try{jsonpatch[_0xe513('0x25')](_0x48cd65,_0x263f3e,!![]);}catch(_0x5c853c){return BPromise[_0xe513('0x26')](_0x5c853c);}return _0x48cd65[_0xe513('0x27')]();};}function saveUpdates(_0x19a2a7,_0x41935a){return function(_0x4d8b47){if(_0x4d8b47){return _0x4d8b47[_0xe513('0x28')](_0x19a2a7)[_0xe513('0x29')](function(_0x37133e){return _0x37133e;});}return null;};}function removeEntity(_0x5db082,_0x192fcd){return function(_0x3afdbc){if(_0x3afdbc){return _0x3afdbc[_0xe513('0x2a')]()[_0xe513('0x29')](function(){_0x5db082[_0xe513('0x1d')](0xcc)[_0xe513('0x1e')]();});}};}function handleEntityNotFound(_0x4290cb,_0x4748d6){return function(_0xa7e74f){if(!_0xa7e74f){_0x4290cb[_0xe513('0x2b')](0x194);}return _0xa7e74f;};}function handleError(_0xd3e74a,_0x789334){_0x789334=_0x789334||0x1f4;return function(_0x3f082c){logger['error'](_0x3f082c[_0xe513('0x2c')]);if(_0x3f082c['name']){delete _0x3f082c[_0xe513('0x2d')];}_0xd3e74a[_0xe513('0x1d')](_0x789334)['send'](_0x3f082c);};}exports[_0xe513('0x2e')]=function(_0x372731,_0x412c25){var _0x33a358={},_0x13a7e4={},_0x3c9282={'count':0x0,'rows':[]};var _0x43f6b9=_['map'](db['SquareMessage'][_0xe513('0x2f')],function(_0x2f7551){return{'name':_0x2f7551[_0xe513('0x30')],'type':_0x2f7551[_0xe513('0x31')][_0xe513('0x32')]};});_0x13a7e4[_0xe513('0x33')]=_['map'](_0x43f6b9,_0xe513('0x2d'));_0x13a7e4[_0xe513('0x34')]=_[_0xe513('0x35')](_0x372731[_0xe513('0x34')]);_0x13a7e4[_0xe513('0x36')]=_[_0xe513('0x37')](_0x13a7e4[_0xe513('0x33')],_0x13a7e4[_0xe513('0x34')]);_0x33a358[_0xe513('0x38')]=_[_0xe513('0x37')](_0x13a7e4[_0xe513('0x33')],qs[_0xe513('0x39')](_0x372731[_0xe513('0x34')]['fields']));_0x33a358['attributes']=_0x33a358['attributes']['length']?_0x33a358['attributes']:_0x13a7e4[_0xe513('0x33')];if(!_0x372731[_0xe513('0x34')][_0xe513('0x3a')](_0xe513('0x3b'))){_0x33a358['limit']=qs[_0xe513('0x20')](_0x372731[_0xe513('0x34')][_0xe513('0x20')]);_0x33a358[_0xe513('0x1f')]=qs[_0xe513('0x1f')](_0x372731[_0xe513('0x34')][_0xe513('0x1f')]);}_0x33a358[_0xe513('0x3c')]=qs[_0xe513('0x3d')](_0x372731[_0xe513('0x34')][_0xe513('0x3d')]);_0x33a358[_0xe513('0x3e')]=qs['filters'](_['pick'](_0x372731['query'],_0x13a7e4['filters']),_0x43f6b9);if(_0x372731[_0xe513('0x34')][_0xe513('0x3f')]){_0x33a358['where']=_[_0xe513('0x40')](_0x33a358[_0xe513('0x3e')],{'$or':_[_0xe513('0x41')](_0x43f6b9,function(_0x33e847){if(_0x33e847[_0xe513('0x31')]!==_0xe513('0x42')){var _0x121278={};_0x121278[_0x33e847[_0xe513('0x2d')]]={'$like':'%'+_0x372731[_0xe513('0x34')][_0xe513('0x3f')]+'%'};return _0x121278;}})});}_0x33a358=_['merge']({},_0x33a358,_0x372731[_0xe513('0x43')]);var _0x2a2112={'where':_0x33a358[_0xe513('0x3e')]};return db['SquareMessage'][_0xe513('0x22')](_0x2a2112)[_0xe513('0x29')](function(_0x350912){_0x3c9282['count']=_0x350912;if(_0x372731[_0xe513('0x34')][_0xe513('0x44')]){_0x33a358[_0xe513('0x45')]=[{'all':!![]}];}return db[_0xe513('0x46')][_0xe513('0x47')](_0x33a358);})[_0xe513('0x29')](function(_0x7687c1){_0x3c9282['rows']=_0x7687c1;return _0x3c9282;})[_0xe513('0x29')](respondWithFilteredResult(_0x412c25,_0x33a358))[_0xe513('0x48')](handleError(_0x412c25,null));};exports[_0xe513('0x49')]=function(_0x589bf6,_0x25f886){var _0x2729b3={'raw':!![],'where':{'id':_0x589bf6[_0xe513('0x4a')]['id']}},_0x507403={};_0x507403[_0xe513('0x33')]=_[_0xe513('0x35')](db['SquareMessage'][_0xe513('0x2f')]);_0x507403[_0xe513('0x34')]=_[_0xe513('0x35')](_0x589bf6[_0xe513('0x34')]);_0x507403[_0xe513('0x36')]=_['intersection'](_0x507403[_0xe513('0x33')],_0x507403['query']);_0x2729b3[_0xe513('0x38')]=_[_0xe513('0x37')](_0x507403['model'],qs[_0xe513('0x39')](_0x589bf6[_0xe513('0x34')][_0xe513('0x39')]));_0x2729b3['attributes']=_0x2729b3[_0xe513('0x38')][_0xe513('0x4b')]?_0x2729b3['attributes']:_0x507403[_0xe513('0x33')];if(_0x589bf6[_0xe513('0x34')][_0xe513('0x44')]){_0x2729b3[_0xe513('0x45')]=[{'all':!![]}];}_0x2729b3=_[_0xe513('0x40')]({},_0x2729b3,_0x589bf6[_0xe513('0x43')]);return db[_0xe513('0x46')][_0xe513('0x4c')](_0x2729b3)[_0xe513('0x29')](handleEntityNotFound(_0x25f886,null))[_0xe513('0x29')](respondWithResult(_0x25f886,null))[_0xe513('0x48')](handleError(_0x25f886,null));};exports[_0xe513('0x4d')]=function(_0x2ecf07,_0x3e0766){return db[_0xe513('0x46')]['create'](_0x2ecf07[_0xe513('0x4e')],{})[_0xe513('0x29')](respondWithResult(_0x3e0766,0xc9))['catch'](handleError(_0x3e0766,null));};exports[_0xe513('0x28')]=function(_0xb7ee9e,_0x3057b8){if(_0xb7ee9e['body']['id']){delete _0xb7ee9e['body']['id'];}return db[_0xe513('0x46')]['find']({'where':{'id':_0xb7ee9e['params']['id']}})[_0xe513('0x29')](handleEntityNotFound(_0x3057b8,null))['then'](saveUpdates(_0xb7ee9e['body'],null))[_0xe513('0x29')](respondWithResult(_0x3057b8,null))[_0xe513('0x48')](handleError(_0x3057b8,null));};exports[_0xe513('0x2a')]=function(_0xa8eb5d,_0x5934b1){return db['SquareMessage'][_0xe513('0x4c')]({'where':{'id':_0xa8eb5d['params']['id']}})[_0xe513('0x29')](handleEntityNotFound(_0x5934b1,null))[_0xe513('0x29')](removeEntity(_0x5934b1,null))[_0xe513('0x48')](handleError(_0x5934b1,null));};
\ No newline at end of file
index d4c5ba5..dcfd27b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf49=['SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','define'];(function(_0x113e32,_0x5339f0){var _0x4ff939=function(_0x2be9ca){while(--_0x2be9ca){_0x113e32['push'](_0x113e32['shift']());}};_0x4ff939(++_0x5339f0);}(_0xcf49,0x1c2));var _0x9cf4=function(_0x1c0781,_0x4a19f1){_0x1c0781=_0x1c0781-0x0;var _0x1f577e=_0xcf49[_0x1c0781];return _0x1f577e;};'use strict';var _=require(_0x9cf4('0x0'));var util=require(_0x9cf4('0x1'));var logger=require(_0x9cf4('0x2'))(_0x9cf4('0x3'));var moment=require(_0x9cf4('0x4'));var BPromise=require(_0x9cf4('0x5'));var rp=require(_0x9cf4('0x6'));var fs=require('fs');var path=require(_0x9cf4('0x7'));var rimraf=require(_0x9cf4('0x8'));var config=require(_0x9cf4('0x9'));var attributes=require(_0x9cf4('0xa'));module['exports']=function(_0x3651da,_0x247f7b){return _0x3651da[_0x9cf4('0xb')](_0x9cf4('0xc'),attributes,{'tableName':_0x9cf4('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2b12=['../../config/environment','./squareMessage.attributes','exports','define','SquareMessage','square_messages','lodash','util','../../config/logger','api','bluebird','path'];(function(_0x30fd5,_0x2ac8fc){var _0x2e8709=function(_0x8316e){while(--_0x8316e){_0x30fd5['push'](_0x30fd5['shift']());}};_0x2e8709(++_0x2ac8fc);}(_0x2b12,0x1aa));var _0x22b1=function(_0x4f539a,_0x141b03){_0x4f539a=_0x4f539a-0x0;var _0x17e349=_0x2b12[_0x4f539a];return _0x17e349;};'use strict';var _=require(_0x22b1('0x0'));var util=require(_0x22b1('0x1'));var logger=require(_0x22b1('0x2'))(_0x22b1('0x3'));var moment=require('moment');var BPromise=require(_0x22b1('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x22b1('0x5'));var rimraf=require('rimraf');var config=require(_0x22b1('0x6'));var attributes=require(_0x22b1('0x7'));module[_0x22b1('0x8')]=function(_0x274287,_0x1706ba){return _0x274287[_0x22b1('0x9')](_0x22b1('0xa'),attributes,{'tableName':_0x22b1('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c2111ea..5ced353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc10=['request\x20sent','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','info','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','SquareMessage,\x20%s,\x20%s','SquareMessage,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x45641d,_0x19c929){var _0x41030b=function(_0x5f2274){while(--_0x5f2274){_0x45641d['push'](_0x45641d['shift']());}};_0x41030b(++_0x19c929);}(_0xbc10,0xc6));var _0x0bc1=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xbc10[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x0bc1('0x0'));var util=require(_0x0bc1('0x1'));var moment=require(_0x0bc1('0x2'));var BPromise=require(_0x0bc1('0x3'));var rs=require(_0x0bc1('0x4'));var fs=require('fs');var Redis=require(_0x0bc1('0x5'));var db=require(_0x0bc1('0x6'))['db'];var utils=require(_0x0bc1('0x7'));var logger=require(_0x0bc1('0x8'))('rpc');var config=require(_0x0bc1('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x0bc1('0xa')][_0x0bc1('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xa2f96d,_0x5b3472,_0x6870f7){return new BPromise(function(_0x2f2e27,_0x57551d){return client[_0x0bc1('0xc')](_0xa2f96d,_0x6870f7)[_0x0bc1('0xd')](function(_0x3b13fe){logger['info'](_0x0bc1('0xe'),_0x5b3472,'request\x20sent');logger['debug'](_0x0bc1('0xf'),_0x5b3472,'request\x20sent',JSON['stringify'](_0x3b13fe));if(_0x3b13fe['error']){if(_0x3b13fe[_0x0bc1('0x10')][_0x0bc1('0x11')]===0x1f4){logger['error']('SquareMessage,\x20%s,\x20%s',_0x5b3472,_0x3b13fe[_0x0bc1('0x10')][_0x0bc1('0x12')]);return _0x57551d(_0x3b13fe['error'][_0x0bc1('0x12')]);}logger[_0x0bc1('0x10')](_0x0bc1('0xe'),_0x5b3472,_0x3b13fe[_0x0bc1('0x10')]['message']);return _0x2f2e27(_0x3b13fe[_0x0bc1('0x10')][_0x0bc1('0x12')]);}else{logger['info']('SquareMessage,\x20%s,\x20%s',_0x5b3472,_0x0bc1('0x13'));_0x2f2e27(_0x3b13fe[_0x0bc1('0x14')][_0x0bc1('0x12')]);}})[_0x0bc1('0x15')](function(_0x2f37d2){logger[_0x0bc1('0x10')]('SquareMessage,\x20%s,\x20%s',_0x5b3472,_0x2f37d2);_0x57551d(_0x2f37d2);});});}exports[_0x0bc1('0x16')]=function(_0x15a9af){var _0x4e14ae=this;return new Promise(function(_0x5767c7,_0x4c3fbb){return db[_0x0bc1('0x17')][_0x0bc1('0x18')](_0x15a9af[_0x0bc1('0x19')],{'raw':_0x15a9af[_0x0bc1('0x1a')]?_0x15a9af[_0x0bc1('0x1a')][_0x0bc1('0x1b')]===undefined?!![]:![]:!![]})[_0x0bc1('0xd')](function(_0x5f5dae){logger[_0x0bc1('0x1c')]('CreateSquareMessage',_0x15a9af);logger[_0x0bc1('0x1d')]('CreateSquareMessage',_0x15a9af,JSON[_0x0bc1('0x1e')](_0x5f5dae));_0x5767c7(_0x5f5dae);})[_0x0bc1('0x15')](function(_0x18e139){logger[_0x0bc1('0x10')](_0x0bc1('0x16'),_0x18e139['message'],_0x15a9af);_0x4c3fbb(_0x4e14ae[_0x0bc1('0x10')](0x1f4,_0x18e139['message']));});});};
\ No newline at end of file
+var _0x9d12=['stringify','error','code','message','result','catch','CreateSquareMessage','SquareMessage','create','body','options','raw','debug','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','info','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s'];(function(_0x355adc,_0xac51ab){var _0x4df04f=function(_0x4a787d){while(--_0x4a787d){_0x355adc['push'](_0x355adc['shift']());}};_0x4df04f(++_0xac51ab);}(_0x9d12,0x1bd));var _0x29d1=function(_0x43d394,_0x33a215){_0x43d394=_0x43d394-0x0;var _0x57f4df=_0x9d12[_0x43d394];return _0x57f4df;};'use strict';var _=require(_0x29d1('0x0'));var util=require(_0x29d1('0x1'));var moment=require(_0x29d1('0x2'));var BPromise=require('bluebird');var rs=require(_0x29d1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x29d1('0x4'));var logger=require(_0x29d1('0x5'))(_0x29d1('0x6'));var config=require('../../config/environment');var jayson=require(_0x29d1('0x7'));var client=jayson[_0x29d1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4fa5a4,_0x12b3d7,_0x2f733f){return new BPromise(function(_0x34971b,_0x49acf){return client['request'](_0x4fa5a4,_0x2f733f)[_0x29d1('0x9')](function(_0x449beb){logger[_0x29d1('0xa')](_0x29d1('0xb'),_0x12b3d7,_0x29d1('0xc'));logger['debug'](_0x29d1('0xd'),_0x12b3d7,_0x29d1('0xc'),JSON[_0x29d1('0xe')](_0x449beb));if(_0x449beb['error']){if(_0x449beb[_0x29d1('0xf')][_0x29d1('0x10')]===0x1f4){logger[_0x29d1('0xf')](_0x29d1('0xb'),_0x12b3d7,_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);return _0x49acf(_0x449beb['error'][_0x29d1('0x11')]);}logger[_0x29d1('0xf')](_0x29d1('0xb'),_0x12b3d7,_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);return _0x34971b(_0x449beb[_0x29d1('0xf')][_0x29d1('0x11')]);}else{logger['info'](_0x29d1('0xb'),_0x12b3d7,_0x29d1('0xc'));_0x34971b(_0x449beb[_0x29d1('0x12')][_0x29d1('0x11')]);}})[_0x29d1('0x13')](function(_0x133fdd){logger['error'](_0x29d1('0xb'),_0x12b3d7,_0x133fdd);_0x49acf(_0x133fdd);});});}exports[_0x29d1('0x14')]=function(_0x372a56){var _0x267d01=this;return new Promise(function(_0x11c3a2,_0x48a525){return db[_0x29d1('0x15')][_0x29d1('0x16')](_0x372a56[_0x29d1('0x17')],{'raw':_0x372a56['options']?_0x372a56[_0x29d1('0x18')][_0x29d1('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x52f083){logger[_0x29d1('0xa')](_0x29d1('0x14'),_0x372a56);logger[_0x29d1('0x1a')](_0x29d1('0x14'),_0x372a56,JSON[_0x29d1('0xe')](_0x52f083));_0x11c3a2(_0x52f083);})[_0x29d1('0x13')](function(_0x2bd91a){logger['error']('CreateSquareMessage',_0x2bd91a['message'],_0x372a56);_0x48a525(_0x267d01['error'](0x1f4,_0x2bd91a[_0x29d1('0x11')]));});});};
\ No newline at end of file
index 205016f..e9ecf5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb24=['put','delete','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','/:id/test','15s','test','create'];(function(_0x4819e1,_0x44d88e){var _0xca4f58=function(_0x494088){while(--_0x494088){_0x4819e1['push'](_0x4819e1['shift']());}};_0xca4f58(++_0x44d88e);}(_0xfb24,0x92));var _0x4fb2=function(_0x5aed89,_0x679fa6){_0x5aed89=_0x5aed89-0x0;var _0x50e863=_0xfb24[_0x5aed89];return _0x50e863;};'use strict';var multer=require(_0x4fb2('0x0'));var util=require(_0x4fb2('0x1'));var path=require('path');var timeout=require(_0x4fb2('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x4fb2('0x3'));var auth=require(_0x4fb2('0x4'));var interaction=require(_0x4fb2('0x5'));var config=require(_0x4fb2('0x6'));var controller=require(_0x4fb2('0x7'));router[_0x4fb2('0x8')]('/',auth[_0x4fb2('0x9')](),controller['index']);router[_0x4fb2('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x4fb2('0x8')](_0x4fb2('0xa'),auth['isAuthenticated'](),timeout(_0x4fb2('0xb')),controller[_0x4fb2('0xc')]);router['post']('/',auth[_0x4fb2('0x9')](),controller[_0x4fb2('0xd')]);router[_0x4fb2('0xe')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x4fb2('0xf')]('/:id',auth[_0x4fb2('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x90f6=['index','/:id','show','/:id/test','15s','test','post','create','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated'];(function(_0xac151d,_0x4ea1d2){var _0x111dba=function(_0x13d7f4){while(--_0x13d7f4){_0xac151d['push'](_0xac151d['shift']());}};_0x111dba(++_0x4ea1d2);}(_0x90f6,0x9e));var _0x690f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x90f6[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x690f('0x0'));var util=require(_0x690f('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x690f('0x2')]();var fs_extra=require(_0x690f('0x3'));var auth=require(_0x690f('0x4'));var interaction=require(_0x690f('0x5'));var config=require(_0x690f('0x6'));var controller=require(_0x690f('0x7'));router[_0x690f('0x8')]('/',auth[_0x690f('0x9')](),controller[_0x690f('0xa')]);router[_0x690f('0x8')](_0x690f('0xb'),auth[_0x690f('0x9')](),controller[_0x690f('0xc')]);router['get'](_0x690f('0xd'),auth[_0x690f('0x9')](),timeout(_0x690f('0xe')),controller[_0x690f('0xf')]);router[_0x690f('0x10')]('/',auth['isAuthenticated'](),controller[_0x690f('0x11')]);router['put'](_0x690f('0xb'),auth[_0x690f('0x9')](),controller['update']);router[_0x690f('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x690f('0x13')]);module[_0x690f('0x14')]=router;
\ No newline at end of file
index 855cf0f..6c42ab7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3423=['STRING','sequelize','exports'];(function(_0x4575b9,_0x8c2789){var _0x3125b4=function(_0x770b31){while(--_0x770b31){_0x4575b9['push'](_0x4575b9['shift']());}};_0x3125b4(++_0x8c2789);}(_0x3423,0x1a2));var _0x3342=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3423[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3342('0x0'));module[_0x3342('0x1')]={'name':{'type':Sequelize[_0x3342('0x2')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3342('0x2')]}};
\ No newline at end of file
+var _0xb032=['exports','STRING'];(function(_0x28bbf2,_0x1528e7){var _0x741f08=function(_0x7f7d2d){while(--_0x7f7d2d){_0x28bbf2['push'](_0x28bbf2['shift']());}};_0x741f08(++_0x1528e7);}(_0xb032,0x84));var _0x2b03=function(_0x8a7bcb,_0x2cf7d1){_0x8a7bcb=_0x8a7bcb-0x0;var _0x23ccc0=_0xb032[_0x8a7bcb];return _0x23ccc0;};'use strict';var Sequelize=require('sequelize');module[_0x2b03('0x0')]={'name':{'type':Sequelize[_0x2b03('0x1')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x2b03('0x1')]}};
\ No newline at end of file
index bf810c5..8d525b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ea5=['fields','attributes','order','sort','where','pick','merge','filter','options','includeAll','include','findAll','rows','catch','length','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','test','odbc','openSync','dsn','closeSync','rimraf','zip-dir','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','get','ODBC','destroy','error','stack','name','send','SquareOdbc','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model'];(function(_0x56ffb6,_0x27eab6){var _0x40b63=function(_0x201567){while(--_0x201567){_0x56ffb6['push'](_0x56ffb6['shift']());}};_0x40b63(++_0x27eab6);}(_0x6ea5,0xcd));var _0x56ea=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6ea5[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x56ea('0x0'));var zipdir=require(_0x56ea('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x56ea('0x2'));var Mustache=require(_0x56ea('0x3'));var util=require(_0x56ea('0x4'));var path=require(_0x56ea('0x5'));var sox=require('sox');var csv=require(_0x56ea('0x6'));var ejs=require(_0x56ea('0x7'));var fs=require('fs');var fs_extra=require(_0x56ea('0x8'));var _=require(_0x56ea('0x9'));var squel=require(_0x56ea('0xa'));var crypto=require('crypto');var jsforce=require(_0x56ea('0xb'));var deskjs=require(_0x56ea('0xc'));var toCsv=require(_0x56ea('0x6'));var querystring=require(_0x56ea('0xd'));var Papa=require(_0x56ea('0xe'));var Redis=require('ioredis');var authService=require(_0x56ea('0xf'));var qs=require(_0x56ea('0x10'));var as=require(_0x56ea('0x11'));var hardwareService=require(_0x56ea('0x12'));var logger=require('../../config/logger')(_0x56ea('0x13'));var utils=require(_0x56ea('0x14'));var config=require(_0x56ea('0x15'));var licenseUtil=require(_0x56ea('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5e4b20,_0x4eb7f6){_0x4eb7f6=_0x4eb7f6||0xcc;return function(_0x155924){if(_0x155924){return _0x5e4b20[_0x56ea('0x17')](_0x4eb7f6);}return _0x5e4b20[_0x56ea('0x18')](_0x4eb7f6)[_0x56ea('0x19')]();};}function respondWithResult(_0x42e369,_0x10f6a2){_0x10f6a2=_0x10f6a2||0xc8;return function(_0xa7b7b){if(_0xa7b7b){return _0x42e369[_0x56ea('0x18')](_0x10f6a2)[_0x56ea('0x1a')](_0xa7b7b);}};}function respondWithFilteredResult(_0x202797,_0x29cccb){return function(_0x44c6b5){if(_0x44c6b5){var _0x1e7174=typeof _0x29cccb[_0x56ea('0x1b')]===_0x56ea('0x1c')&&typeof _0x29cccb[_0x56ea('0x1d')]==='undefined';var _0x5b88b8=_0x44c6b5[_0x56ea('0x1e')];var _0x403d7e=_0x1e7174?0x0:_0x29cccb[_0x56ea('0x1b')];var _0x58568c=_0x1e7174?_0x44c6b5['count']:_0x29cccb[_0x56ea('0x1b')]+_0x29cccb[_0x56ea('0x1d')];var _0x2cb7cc;if(_0x58568c>=_0x5b88b8){_0x58568c=_0x5b88b8;_0x2cb7cc=0xc8;}else{_0x2cb7cc=0xce;}_0x202797[_0x56ea('0x18')](_0x2cb7cc);return _0x202797[_0x56ea('0x1f')](_0x56ea('0x20'),_0x403d7e+'-'+_0x58568c+'/'+_0x5b88b8)[_0x56ea('0x1a')](_0x44c6b5);}return null;};}function patchUpdates(_0x39e337){return function(_0x31af78){try{jsonpatch[_0x56ea('0x21')](_0x31af78,_0x39e337,!![]);}catch(_0x550956){return BPromise[_0x56ea('0x22')](_0x550956);}return _0x31af78[_0x56ea('0x23')]();};}function saveUpdates(_0x402676,_0x316ef7){return function(_0x1b82c1){if(_0x1b82c1){return _0x1b82c1[_0x56ea('0x24')](_0x402676)['then'](function(_0x2fac9c){return _0x2fac9c;});}return null;};}function removeEntity(_0x3e12fa,_0x2eff40){return function(_0x1ff874){if(_0x1ff874){return _0x1ff874['destroy']()[_0x56ea('0x25')](function(){var _0x213a49=_0x1ff874[_0x56ea('0x26')]({'plain':!![]});var _0x5611dc=_0x56ea('0x27');return db['UserProfileResource'][_0x56ea('0x28')]({'where':{'type':_0x5611dc,'resourceId':_0x213a49['id']}})[_0x56ea('0x25')](function(){return _0x1ff874;});})[_0x56ea('0x25')](function(){_0x3e12fa['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4bc885,_0x1a580a){return function(_0xa7493e){if(!_0xa7493e){_0x4bc885['sendStatus'](0x194);}return _0xa7493e;};}function handleError(_0x3f28bb,_0x1fab7e){_0x1fab7e=_0x1fab7e||0x1f4;return function(_0x33762d){logger[_0x56ea('0x29')](_0x33762d[_0x56ea('0x2a')]);if(_0x33762d[_0x56ea('0x2b')]){delete _0x33762d[_0x56ea('0x2b')];}_0x3f28bb[_0x56ea('0x18')](_0x1fab7e)[_0x56ea('0x2c')](_0x33762d);};}exports['index']=function(_0xd11632,_0x1a5b01){var _0x20b221={},_0x3a242b={},_0xd4a589={'count':0x0,'rows':[]};var _0x1cf178=_['map'](db[_0x56ea('0x2d')][_0x56ea('0x2e')],function(_0x54998a){return{'name':_0x54998a[_0x56ea('0x2f')],'type':_0x54998a[_0x56ea('0x30')][_0x56ea('0x31')]};});_0x3a242b['model']=_[_0x56ea('0x32')](_0x1cf178,_0x56ea('0x2b'));_0x3a242b[_0x56ea('0x33')]=_[_0x56ea('0x34')](_0xd11632['query']);_0x3a242b[_0x56ea('0x35')]=_['intersection'](_0x3a242b['model'],_0x3a242b[_0x56ea('0x33')]);_0x20b221['attributes']=_[_0x56ea('0x36')](_0x3a242b[_0x56ea('0x37')],qs[_0x56ea('0x38')](_0xd11632[_0x56ea('0x33')][_0x56ea('0x38')]));_0x20b221['attributes']=_0x20b221[_0x56ea('0x39')]['length']?_0x20b221['attributes']:_0x3a242b[_0x56ea('0x37')];if(!_0xd11632[_0x56ea('0x33')]['hasOwnProperty']('nolimit')){_0x20b221[_0x56ea('0x1d')]=qs[_0x56ea('0x1d')](_0xd11632['query'][_0x56ea('0x1d')]);_0x20b221[_0x56ea('0x1b')]=qs[_0x56ea('0x1b')](_0xd11632['query']['offset']);}_0x20b221[_0x56ea('0x3a')]=qs[_0x56ea('0x3b')](_0xd11632['query'][_0x56ea('0x3b')]);_0x20b221[_0x56ea('0x3c')]=qs[_0x56ea('0x35')](_[_0x56ea('0x3d')](_0xd11632['query'],_0x3a242b[_0x56ea('0x35')]),_0x1cf178);if(_0xd11632[_0x56ea('0x33')]['filter']){_0x20b221[_0x56ea('0x3c')]=_[_0x56ea('0x3e')](_0x20b221[_0x56ea('0x3c')],{'$or':_['map'](_0x1cf178,function(_0x81c1f2){if(_0x81c1f2['type']!=='VIRTUAL'){var _0x3d53c4={};_0x3d53c4[_0x81c1f2[_0x56ea('0x2b')]]={'$like':'%'+_0xd11632[_0x56ea('0x33')][_0x56ea('0x3f')]+'%'};return _0x3d53c4;}})});}_0x20b221=_[_0x56ea('0x3e')]({},_0x20b221,_0xd11632[_0x56ea('0x40')]);var _0x2a522f={'where':_0x20b221['where']};return db[_0x56ea('0x2d')][_0x56ea('0x1e')](_0x2a522f)['then'](function(_0xfe2dda){_0xd4a589[_0x56ea('0x1e')]=_0xfe2dda;if(_0xd11632[_0x56ea('0x33')][_0x56ea('0x41')]){_0x20b221[_0x56ea('0x42')]=[{'all':!![]}];}return db[_0x56ea('0x2d')][_0x56ea('0x43')](_0x20b221);})[_0x56ea('0x25')](function(_0x412e9f){_0xd4a589[_0x56ea('0x44')]=_0x412e9f;return _0xd4a589;})[_0x56ea('0x25')](respondWithFilteredResult(_0x1a5b01,_0x20b221))[_0x56ea('0x45')](handleError(_0x1a5b01,null));};exports['show']=function(_0x2c53a4,_0xfe51e4){var _0x40444f={'raw':!![],'where':{'id':_0x2c53a4['params']['id']}},_0x2b74a3={};_0x2b74a3[_0x56ea('0x37')]=_[_0x56ea('0x34')](db[_0x56ea('0x2d')][_0x56ea('0x2e')]);_0x2b74a3['query']=_[_0x56ea('0x34')](_0x2c53a4[_0x56ea('0x33')]);_0x2b74a3[_0x56ea('0x35')]=_[_0x56ea('0x36')](_0x2b74a3[_0x56ea('0x37')],_0x2b74a3[_0x56ea('0x33')]);_0x40444f[_0x56ea('0x39')]=_[_0x56ea('0x36')](_0x2b74a3[_0x56ea('0x37')],qs[_0x56ea('0x38')](_0x2c53a4[_0x56ea('0x33')][_0x56ea('0x38')]));_0x40444f['attributes']=_0x40444f[_0x56ea('0x39')][_0x56ea('0x46')]?_0x40444f[_0x56ea('0x39')]:_0x2b74a3[_0x56ea('0x37')];if(_0x2c53a4[_0x56ea('0x33')]['includeAll']){_0x40444f['include']=[{'all':!![]}];}_0x40444f=_[_0x56ea('0x3e')]({},_0x40444f,_0x2c53a4[_0x56ea('0x40')]);return db[_0x56ea('0x2d')][_0x56ea('0x47')](_0x40444f)[_0x56ea('0x25')](handleEntityNotFound(_0xfe51e4,null))[_0x56ea('0x25')](respondWithResult(_0xfe51e4,null))[_0x56ea('0x45')](handleError(_0xfe51e4,null));};exports[_0x56ea('0x48')]=function(_0x2b9a7a,_0x2eab9f){return db[_0x56ea('0x2d')][_0x56ea('0x48')](_0x2b9a7a[_0x56ea('0x49')],{})[_0x56ea('0x25')](function(_0x54a029){var _0x11c5f3=_0x2b9a7a['user'][_0x56ea('0x26')]({'plain':!![]});if(!_0x11c5f3)throw new Error(_0x56ea('0x4a'));if(_0x11c5f3[_0x56ea('0x4b')]===_0x56ea('0x4c')){var _0x619d3e=_0x54a029['get']({'plain':!![]});var _0x25fbd1=_0x56ea('0x27');return db[_0x56ea('0x4d')][_0x56ea('0x47')]({'where':{'name':_0x25fbd1,'userProfileId':_0x11c5f3[_0x56ea('0x4e')]},'raw':!![]})[_0x56ea('0x25')](function(_0x275a31){if(_0x275a31&&_0x275a31['autoAssociation']===0x0){return db[_0x56ea('0x4f')][_0x56ea('0x48')]({'name':_0x619d3e[_0x56ea('0x2b')],'resourceId':_0x619d3e['id'],'type':_0x275a31[_0x56ea('0x2b')],'sectionId':_0x275a31['id']},{})[_0x56ea('0x25')](function(){return _0x54a029;});}else{return _0x54a029;}})[_0x56ea('0x45')](function(_0x45e926){logger[_0x56ea('0x29')](_0x56ea('0x50'),_0x45e926);throw _0x45e926;});}return _0x54a029;})[_0x56ea('0x25')](respondWithResult(_0x2eab9f,0xc9))['catch'](handleError(_0x2eab9f,null));};exports['update']=function(_0x4b7166,_0x45ecaa){if(_0x4b7166[_0x56ea('0x49')]['id']){delete _0x4b7166[_0x56ea('0x49')]['id'];}return db[_0x56ea('0x2d')][_0x56ea('0x47')]({'where':{'id':_0x4b7166[_0x56ea('0x51')]['id']}})['then'](handleEntityNotFound(_0x45ecaa,null))[_0x56ea('0x25')](saveUpdates(_0x4b7166['body'],null))[_0x56ea('0x25')](respondWithResult(_0x45ecaa,null))[_0x56ea('0x45')](handleError(_0x45ecaa,null));};exports['destroy']=function(_0x48e6a3,_0x11f384){return db[_0x56ea('0x2d')][_0x56ea('0x47')]({'where':{'id':_0x48e6a3[_0x56ea('0x51')]['id']}})[_0x56ea('0x25')](handleEntityNotFound(_0x11f384,null))[_0x56ea('0x25')](removeEntity(_0x11f384,null))['catch'](handleError(_0x11f384,null));};exports[_0x56ea('0x52')]=function(_0x36414d,_0x367beb,_0x24f064){var _0x25b3f3;return db[_0x56ea('0x2d')][_0x56ea('0x47')]({'where':{'id':_0x36414d[_0x56ea('0x51')]['id']},'attributes':['id','dsn']})[_0x56ea('0x25')](handleEntityNotFound(_0x367beb,null))[_0x56ea('0x25')](function(_0x2a59b9){if(_0x2a59b9){var _0x3ca84b=require(_0x56ea('0x53'))();_0x3ca84b[_0x56ea('0x54')](_0x2a59b9[_0x56ea('0x55')]);_0x3ca84b[_0x56ea('0x56')]();return _0x2a59b9;}})[_0x56ea('0x25')](respondWithResult(_0x367beb,null))[_0x56ea('0x45')](handleError(_0x367beb,null));};
\ No newline at end of file
+var _0xa7f0=['send','index','map','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','options','SquareOdbc','include','rows','catch','show','rawAttributes','find','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','create','params','test','dsn','odbc','openSync','closeSync','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','destroy','then','UserProfileResource','error','stack','name'];(function(_0x428d5b,_0xe0b248){var _0x4cad30=function(_0x1344c7){while(--_0x1344c7){_0x428d5b['push'](_0x428d5b['shift']());}};_0x4cad30(++_0xe0b248);}(_0xa7f0,0x80));var _0x0a7f=function(_0x53d941,_0x25c3ea){_0x53d941=_0x53d941-0x0;var _0xa50d46=_0xa7f0[_0x53d941];return _0xa50d46;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0a7f('0x0'));var zipdir=require(_0x0a7f('0x1'));var jsonpatch=require(_0x0a7f('0x2'));var rp=require(_0x0a7f('0x3'));var moment=require('moment');var BPromise=require(_0x0a7f('0x4'));var Mustache=require(_0x0a7f('0x5'));var util=require(_0x0a7f('0x6'));var path=require(_0x0a7f('0x7'));var sox=require(_0x0a7f('0x8'));var csv=require(_0x0a7f('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a7f('0xa'));var _=require(_0x0a7f('0xb'));var squel=require(_0x0a7f('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a7f('0xd'));var toCsv=require(_0x0a7f('0x9'));var querystring=require('querystring');var Papa=require(_0x0a7f('0xe'));var Redis=require(_0x0a7f('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x0a7f('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0a7f('0x11'))(_0x0a7f('0x12'));var utils=require(_0x0a7f('0x13'));var config=require(_0x0a7f('0x14'));var licenseUtil=require(_0x0a7f('0x15'));var db=require(_0x0a7f('0x16'))['db'];function respondWithStatusCode(_0x2f80f2,_0x1a36b3){_0x1a36b3=_0x1a36b3||0xcc;return function(_0x3489f8){if(_0x3489f8){return _0x2f80f2[_0x0a7f('0x17')](_0x1a36b3);}return _0x2f80f2[_0x0a7f('0x18')](_0x1a36b3)[_0x0a7f('0x19')]();};}function respondWithResult(_0x5d6a87,_0x54a3bf){_0x54a3bf=_0x54a3bf||0xc8;return function(_0x478c3a){if(_0x478c3a){return _0x5d6a87[_0x0a7f('0x18')](_0x54a3bf)[_0x0a7f('0x1a')](_0x478c3a);}};}function respondWithFilteredResult(_0x1e8ab3,_0x14df4b){return function(_0xfe6c0a){if(_0xfe6c0a){var _0x15a1f9=typeof _0x14df4b[_0x0a7f('0x1b')]===_0x0a7f('0x1c')&&typeof _0x14df4b[_0x0a7f('0x1d')]==='undefined';var _0x581ba6=_0xfe6c0a['count'];var _0x49d9f5=_0x15a1f9?0x0:_0x14df4b['offset'];var _0x3a9d5c=_0x15a1f9?_0xfe6c0a[_0x0a7f('0x1e')]:_0x14df4b['offset']+_0x14df4b[_0x0a7f('0x1d')];var _0x1e5e25;if(_0x3a9d5c>=_0x581ba6){_0x3a9d5c=_0x581ba6;_0x1e5e25=0xc8;}else{_0x1e5e25=0xce;}_0x1e8ab3['status'](_0x1e5e25);return _0x1e8ab3[_0x0a7f('0x1f')]('Content-Range',_0x49d9f5+'-'+_0x3a9d5c+'/'+_0x581ba6)['json'](_0xfe6c0a);}return null;};}function patchUpdates(_0x16e188){return function(_0x48b803){try{jsonpatch[_0x0a7f('0x20')](_0x48b803,_0x16e188,!![]);}catch(_0x55d0f3){return BPromise[_0x0a7f('0x21')](_0x55d0f3);}return _0x48b803[_0x0a7f('0x22')]();};}function saveUpdates(_0x3fc30,_0xa833fd){return function(_0x8b5c55){if(_0x8b5c55){return _0x8b5c55[_0x0a7f('0x23')](_0x3fc30)['then'](function(_0x1e99ba){return _0x1e99ba;});}return null;};}function removeEntity(_0x3713d0,_0xc1be2f){return function(_0x19fbd2){if(_0x19fbd2){return _0x19fbd2[_0x0a7f('0x24')]()[_0x0a7f('0x25')](function(){var _0x4dfd8f=_0x19fbd2['get']({'plain':!![]});var _0x2a8717='ODBC';return db[_0x0a7f('0x26')][_0x0a7f('0x24')]({'where':{'type':_0x2a8717,'resourceId':_0x4dfd8f['id']}})[_0x0a7f('0x25')](function(){return _0x19fbd2;});})[_0x0a7f('0x25')](function(){_0x3713d0[_0x0a7f('0x18')](0xcc)[_0x0a7f('0x19')]();});}};}function handleEntityNotFound(_0x1f4a98,_0x23a32b){return function(_0x1cbcaf){if(!_0x1cbcaf){_0x1f4a98[_0x0a7f('0x17')](0x194);}return _0x1cbcaf;};}function handleError(_0x36da53,_0x413b6f){_0x413b6f=_0x413b6f||0x1f4;return function(_0x2aef9b){logger[_0x0a7f('0x27')](_0x2aef9b[_0x0a7f('0x28')]);if(_0x2aef9b[_0x0a7f('0x29')]){delete _0x2aef9b[_0x0a7f('0x29')];}_0x36da53[_0x0a7f('0x18')](_0x413b6f)[_0x0a7f('0x2a')](_0x2aef9b);};}exports[_0x0a7f('0x2b')]=function(_0xe73641,_0x2f8498){var _0xe1a168={},_0x252da0={},_0x443d38={'count':0x0,'rows':[]};var _0x485643=_[_0x0a7f('0x2c')](db['SquareOdbc']['rawAttributes'],function(_0x4fdec7){return{'name':_0x4fdec7['fieldName'],'type':_0x4fdec7['type'][_0x0a7f('0x2d')]};});_0x252da0[_0x0a7f('0x2e')]=_[_0x0a7f('0x2c')](_0x485643,_0x0a7f('0x29'));_0x252da0[_0x0a7f('0x2f')]=_[_0x0a7f('0x30')](_0xe73641[_0x0a7f('0x2f')]);_0x252da0[_0x0a7f('0x31')]=_['intersection'](_0x252da0[_0x0a7f('0x2e')],_0x252da0['query']);_0xe1a168[_0x0a7f('0x32')]=_[_0x0a7f('0x33')](_0x252da0['model'],qs[_0x0a7f('0x34')](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x34')]));_0xe1a168['attributes']=_0xe1a168['attributes'][_0x0a7f('0x35')]?_0xe1a168['attributes']:_0x252da0[_0x0a7f('0x2e')];if(!_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x36')](_0x0a7f('0x37'))){_0xe1a168[_0x0a7f('0x1d')]=qs[_0x0a7f('0x1d')](_0xe73641['query'][_0x0a7f('0x1d')]);_0xe1a168[_0x0a7f('0x1b')]=qs[_0x0a7f('0x1b')](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x1b')]);}_0xe1a168[_0x0a7f('0x38')]=qs['sort'](_0xe73641[_0x0a7f('0x2f')][_0x0a7f('0x39')]);_0xe1a168[_0x0a7f('0x3a')]=qs['filters'](_[_0x0a7f('0x3b')](_0xe73641[_0x0a7f('0x2f')],_0x252da0[_0x0a7f('0x31')]),_0x485643);if(_0xe73641['query'][_0x0a7f('0x3c')]){_0xe1a168[_0x0a7f('0x3a')]=_[_0x0a7f('0x3d')](_0xe1a168['where'],{'$or':_[_0x0a7f('0x2c')](_0x485643,function(_0x2c8928){if(_0x2c8928[_0x0a7f('0x3e')]!=='VIRTUAL'){var _0x3093f9={};_0x3093f9[_0x2c8928[_0x0a7f('0x29')]]={'$like':'%'+_0xe73641[_0x0a7f('0x2f')]['filter']+'%'};return _0x3093f9;}})});}_0xe1a168=_['merge']({},_0xe1a168,_0xe73641[_0x0a7f('0x3f')]);var _0x340540={'where':_0xe1a168[_0x0a7f('0x3a')]};return db[_0x0a7f('0x40')][_0x0a7f('0x1e')](_0x340540)[_0x0a7f('0x25')](function(_0x29fe2e){_0x443d38['count']=_0x29fe2e;if(_0xe73641[_0x0a7f('0x2f')]['includeAll']){_0xe1a168[_0x0a7f('0x41')]=[{'all':!![]}];}return db[_0x0a7f('0x40')]['findAll'](_0xe1a168);})['then'](function(_0xc33853){_0x443d38[_0x0a7f('0x42')]=_0xc33853;return _0x443d38;})[_0x0a7f('0x25')](respondWithFilteredResult(_0x2f8498,_0xe1a168))[_0x0a7f('0x43')](handleError(_0x2f8498,null));};exports[_0x0a7f('0x44')]=function(_0x46fc36,_0x4c7bd9){var _0x11d0d={'raw':!![],'where':{'id':_0x46fc36['params']['id']}},_0xcefa3f={};_0xcefa3f[_0x0a7f('0x2e')]=_[_0x0a7f('0x30')](db[_0x0a7f('0x40')][_0x0a7f('0x45')]);_0xcefa3f['query']=_[_0x0a7f('0x30')](_0x46fc36['query']);_0xcefa3f[_0x0a7f('0x31')]=_[_0x0a7f('0x33')](_0xcefa3f[_0x0a7f('0x2e')],_0xcefa3f[_0x0a7f('0x2f')]);_0x11d0d[_0x0a7f('0x32')]=_[_0x0a7f('0x33')](_0xcefa3f['model'],qs[_0x0a7f('0x34')](_0x46fc36[_0x0a7f('0x2f')][_0x0a7f('0x34')]));_0x11d0d['attributes']=_0x11d0d['attributes']['length']?_0x11d0d[_0x0a7f('0x32')]:_0xcefa3f[_0x0a7f('0x2e')];if(_0x46fc36[_0x0a7f('0x2f')]['includeAll']){_0x11d0d['include']=[{'all':!![]}];}_0x11d0d=_[_0x0a7f('0x3d')]({},_0x11d0d,_0x46fc36[_0x0a7f('0x3f')]);return db[_0x0a7f('0x40')][_0x0a7f('0x46')](_0x11d0d)[_0x0a7f('0x25')](handleEntityNotFound(_0x4c7bd9,null))[_0x0a7f('0x25')](respondWithResult(_0x4c7bd9,null))['catch'](handleError(_0x4c7bd9,null));};exports['create']=function(_0x476b2d,_0xb041cb){return db['SquareOdbc']['create'](_0x476b2d[_0x0a7f('0x47')],{})['then'](function(_0xe37b58){var _0x3ea6b2=_0x476b2d['user'][_0x0a7f('0x48')]({'plain':!![]});if(!_0x3ea6b2)throw new Error(_0x0a7f('0x49'));if(_0x3ea6b2['role']===_0x0a7f('0x4a')){var _0x3deba1=_0xe37b58[_0x0a7f('0x48')]({'plain':!![]});var _0xe22ff3='ODBC';return db[_0x0a7f('0x4b')]['find']({'where':{'name':_0xe22ff3,'userProfileId':_0x3ea6b2[_0x0a7f('0x4c')]},'raw':!![]})['then'](function(_0x21813a){if(_0x21813a&&_0x21813a[_0x0a7f('0x4d')]===0x0){return db[_0x0a7f('0x26')][_0x0a7f('0x4e')]({'name':_0x3deba1['name'],'resourceId':_0x3deba1['id'],'type':_0x21813a[_0x0a7f('0x29')],'sectionId':_0x21813a['id']},{})[_0x0a7f('0x25')](function(){return _0xe37b58;});}else{return _0xe37b58;}})[_0x0a7f('0x43')](function(_0x99e167){logger[_0x0a7f('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x99e167);throw _0x99e167;});}return _0xe37b58;})['then'](respondWithResult(_0xb041cb,0xc9))[_0x0a7f('0x43')](handleError(_0xb041cb,null));};exports[_0x0a7f('0x23')]=function(_0x2d6926,_0x1001aa){if(_0x2d6926[_0x0a7f('0x47')]['id']){delete _0x2d6926['body']['id'];}return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x2d6926[_0x0a7f('0x4f')]['id']}})['then'](handleEntityNotFound(_0x1001aa,null))[_0x0a7f('0x25')](saveUpdates(_0x2d6926[_0x0a7f('0x47')],null))[_0x0a7f('0x25')](respondWithResult(_0x1001aa,null))[_0x0a7f('0x43')](handleError(_0x1001aa,null));};exports[_0x0a7f('0x24')]=function(_0x2d2581,_0x578ebd){return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x2d2581[_0x0a7f('0x4f')]['id']}})[_0x0a7f('0x25')](handleEntityNotFound(_0x578ebd,null))[_0x0a7f('0x25')](removeEntity(_0x578ebd,null))[_0x0a7f('0x43')](handleError(_0x578ebd,null));};exports[_0x0a7f('0x50')]=function(_0x177a0c,_0x456810,_0x1cd1af){var _0x301178;return db[_0x0a7f('0x40')][_0x0a7f('0x46')]({'where':{'id':_0x177a0c[_0x0a7f('0x4f')]['id']},'attributes':['id',_0x0a7f('0x51')]})['then'](handleEntityNotFound(_0x456810,null))[_0x0a7f('0x25')](function(_0x410628){if(_0x410628){var _0x9478d3=require(_0x0a7f('0x52'))();_0x9478d3[_0x0a7f('0x53')](_0x410628[_0x0a7f('0x51')]);_0x9478d3[_0x0a7f('0x54')]();return _0x410628;}})['then'](respondWithResult(_0x456810,null))['catch'](handleError(_0x456810,null));};
\ No newline at end of file
index a95b678..f9e97f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee2=['lodash','util','../../config/logger','bluebird','path','../../config/environment','exports','define','SquareOdbc','square_odbc'];(function(_0x11d1b7,_0x3b2eaf){var _0x4d6a70=function(_0x1bb36e){while(--_0x1bb36e){_0x11d1b7['push'](_0x11d1b7['shift']());}};_0x4d6a70(++_0x3b2eaf);}(_0xbee2,0x1e0));var _0x2bee=function(_0x996bc8,_0x291e01){_0x996bc8=_0x996bc8-0x0;var _0x20b0ea=_0xbee2[_0x996bc8];return _0x20b0ea;};'use strict';var _=require(_0x2bee('0x0'));var util=require(_0x2bee('0x1'));var logger=require(_0x2bee('0x2'))('api');var moment=require('moment');var BPromise=require(_0x2bee('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2bee('0x4'));var rimraf=require('rimraf');var config=require(_0x2bee('0x5'));var attributes=require('./squareOdbc.attributes');module[_0x2bee('0x6')]=function(_0x187287,_0x2531e0){return _0x187287[_0x2bee('0x7')](_0x2bee('0x8'),attributes,{'tableName':_0x2bee('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9fb4=['moment','bluebird','request-promise','./squareOdbc.attributes','exports','square_odbc','../../config/logger','api'];(function(_0x255ac0,_0x3f6645){var _0x437bf1=function(_0x5baff0){while(--_0x5baff0){_0x255ac0['push'](_0x255ac0['shift']());}};_0x437bf1(++_0x3f6645);}(_0x9fb4,0x1c6));var _0x49fb=function(_0x4c4683,_0x241657){_0x4c4683=_0x4c4683-0x0;var _0x78ee7e=_0x9fb4[_0x4c4683];return _0x78ee7e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x49fb('0x0'))(_0x49fb('0x1'));var moment=require(_0x49fb('0x2'));var BPromise=require(_0x49fb('0x3'));var rp=require(_0x49fb('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x49fb('0x5'));module[_0x49fb('0x6')]=function(_0x4ebc6b,_0x2a5d7b){return _0x4ebc6b['define']('SquareOdbc',attributes,{'tableName':_0x49fb('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2402132..d38bdf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb871=['include','map','model','catch','lodash','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','ShowSquareOdbc','SquareOdbc','options','raw','attributes'];(function(_0x4de655,_0x5eb7d0){var _0x47d8c2=function(_0x10cdd8){while(--_0x10cdd8){_0x4de655['push'](_0x4de655['shift']());}};_0x47d8c2(++_0x5eb7d0);}(_0xb871,0x80));var _0x1b87=function(_0x5d82d9,_0x3d7694){_0x5d82d9=_0x5d82d9-0x0;var _0x3dfd86=_0xb871[_0x5d82d9];return _0x3dfd86;};'use strict';var _=require(_0x1b87('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x1b87('0x1'));var rs=require(_0x1b87('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1b87('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x1b87('0x4'))(_0x1b87('0x5'));var config=require(_0x1b87('0x6'));var jayson=require(_0x1b87('0x7'));var client=jayson[_0x1b87('0x8')][_0x1b87('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x63e7e4,_0x53ddab,_0x1a2c32){return new BPromise(function(_0x4babaa,_0x49d521){return client[_0x1b87('0xa')](_0x63e7e4,_0x1a2c32)[_0x1b87('0xb')](function(_0xfb1996){logger[_0x1b87('0xc')](_0x1b87('0xd'),_0x53ddab,_0x1b87('0xe'));logger[_0x1b87('0xf')](_0x1b87('0x10'),_0x53ddab,_0x1b87('0xe'),JSON[_0x1b87('0x11')](_0xfb1996));if(_0xfb1996['error']){if(_0xfb1996[_0x1b87('0x12')][_0x1b87('0x13')]===0x1f4){logger[_0x1b87('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x53ddab,_0xfb1996[_0x1b87('0x12')]['message']);return _0x49d521(_0xfb1996['error'][_0x1b87('0x14')]);}logger[_0x1b87('0x12')](_0x1b87('0xd'),_0x53ddab,_0xfb1996[_0x1b87('0x12')][_0x1b87('0x14')]);return _0x4babaa(_0xfb1996[_0x1b87('0x12')][_0x1b87('0x14')]);}else{logger[_0x1b87('0xc')](_0x1b87('0xd'),_0x53ddab,_0x1b87('0xe'));_0x4babaa(_0xfb1996[_0x1b87('0x15')]['message']);}})['catch'](function(_0x50662b){logger['error'](_0x1b87('0xd'),_0x53ddab,_0x50662b);_0x49d521(_0x50662b);});});}exports[_0x1b87('0x16')]=function(_0x28a22c){var _0x1dcda7=this;return new Promise(function(_0x36ed99,_0xcc3104){return db[_0x1b87('0x17')]['find']({'raw':_0x28a22c[_0x1b87('0x18')]?_0x28a22c['options'][_0x1b87('0x19')]===undefined?!![]:![]:!![],'where':_0x28a22c['options']?_0x28a22c[_0x1b87('0x18')]['where']||null:null,'attributes':_0x28a22c[_0x1b87('0x18')]?_0x28a22c['options'][_0x1b87('0x1a')]||null:null,'include':_0x28a22c[_0x1b87('0x18')]?_0x28a22c[_0x1b87('0x18')][_0x1b87('0x1b')]?_[_0x1b87('0x1c')](_0x28a22c[_0x1b87('0x18')][_0x1b87('0x1b')],function(_0xa721d9){return{'model':db[_0xa721d9[_0x1b87('0x1d')]],'as':_0xa721d9['as'],'attributes':_0xa721d9[_0x1b87('0x1a')],'include':_0xa721d9['include']?_['map'](_0xa721d9[_0x1b87('0x1b')],function(_0x14dea8){return{'model':db[_0x14dea8[_0x1b87('0x1d')]],'as':_0x14dea8['as'],'attributes':_0x14dea8[_0x1b87('0x1a')],'include':_0x14dea8[_0x1b87('0x1b')]?_[_0x1b87('0x1c')](_0x14dea8['include'],function(_0x101393){return{'model':db[_0x101393[_0x1b87('0x1d')]],'as':_0x101393['as'],'attributes':_0x101393['attributes']};}):[]};}):[]};}):[]:[]})[_0x1b87('0xb')](function(_0x26871c){logger[_0x1b87('0xc')]('ShowSquareOdbc',_0x28a22c);logger[_0x1b87('0xf')]('ShowSquareOdbc',_0x28a22c,JSON[_0x1b87('0x11')](_0x26871c));_0x36ed99(_0x26871c);})[_0x1b87('0x1e')](function(_0x4f8dfb){logger['error']('ShowSquareOdbc',_0x4f8dfb[_0x1b87('0x14')],_0x28a22c);_0xcc3104(_0x1dcda7[_0x1b87('0x12')](0x1f4,_0x4f8dfb['message']));});});};
\ No newline at end of file
+var _0xea95=['error','code','message','result','catch','find','options','raw','where','include','map','model','attributes','then','ShowSquareOdbc','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','request','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x2f5297,_0x2b93fc){var _0x446f62=function(_0x531bab){while(--_0x531bab){_0x2f5297['push'](_0x2f5297['shift']());}};_0x446f62(++_0x2b93fc);}(_0xea95,0xef));var _0x5ea9=function(_0x5a97fc,_0x1f920f){_0x5a97fc=_0x5a97fc-0x0;var _0x42a7b3=_0xea95[_0x5a97fc];return _0x42a7b3;};'use strict';var _=require(_0x5ea9('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5ea9('0x1'));var fs=require('fs');var Redis=require(_0x5ea9('0x2'));var db=require(_0x5ea9('0x3'))['db'];var utils=require(_0x5ea9('0x4'));var logger=require('../../config/logger')(_0x5ea9('0x5'));var config=require('../../config/environment');var jayson=require(_0x5ea9('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x268476,_0x1a8afc,_0x204257){return new BPromise(function(_0x48f93c,_0xb1ad6f){return client[_0x5ea9('0x7')](_0x268476,_0x204257)['then'](function(_0xf6b56d){logger['info'](_0x5ea9('0x8'),_0x1a8afc,_0x5ea9('0x9'));logger[_0x5ea9('0xa')](_0x5ea9('0xb'),_0x1a8afc,_0x5ea9('0x9'),JSON[_0x5ea9('0xc')](_0xf6b56d));if(_0xf6b56d[_0x5ea9('0xd')]){if(_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xe')]===0x1f4){logger['error'](_0x5ea9('0x8'),_0x1a8afc,_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xf')]);return _0xb1ad6f(_0xf6b56d[_0x5ea9('0xd')][_0x5ea9('0xf')]);}logger[_0x5ea9('0xd')](_0x5ea9('0x8'),_0x1a8afc,_0xf6b56d[_0x5ea9('0xd')]['message']);return _0x48f93c(_0xf6b56d[_0x5ea9('0xd')]['message']);}else{logger['info'](_0x5ea9('0x8'),_0x1a8afc,'request\x20sent');_0x48f93c(_0xf6b56d[_0x5ea9('0x10')][_0x5ea9('0xf')]);}})[_0x5ea9('0x11')](function(_0x5d28c2){logger[_0x5ea9('0xd')](_0x5ea9('0x8'),_0x1a8afc,_0x5d28c2);_0xb1ad6f(_0x5d28c2);});});}exports['ShowSquareOdbc']=function(_0x1b18bf){var _0x3e6317=this;return new Promise(function(_0x21c757,_0x27148e){return db['SquareOdbc'][_0x5ea9('0x12')]({'raw':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x14')]===undefined?!![]:![]:!![],'where':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x15')]||null:null,'attributes':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')]['attributes']||null:null,'include':_0x1b18bf[_0x5ea9('0x13')]?_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x16')]?_[_0x5ea9('0x17')](_0x1b18bf[_0x5ea9('0x13')][_0x5ea9('0x16')],function(_0x56ddcb){return{'model':db[_0x56ddcb[_0x5ea9('0x18')]],'as':_0x56ddcb['as'],'attributes':_0x56ddcb[_0x5ea9('0x19')],'include':_0x56ddcb['include']?_[_0x5ea9('0x17')](_0x56ddcb['include'],function(_0x235330){return{'model':db[_0x235330[_0x5ea9('0x18')]],'as':_0x235330['as'],'attributes':_0x235330[_0x5ea9('0x19')],'include':_0x235330[_0x5ea9('0x16')]?_[_0x5ea9('0x17')](_0x235330[_0x5ea9('0x16')],function(_0x2dbdaf){return{'model':db[_0x2dbdaf[_0x5ea9('0x18')]],'as':_0x2dbdaf['as'],'attributes':_0x2dbdaf[_0x5ea9('0x19')]};}):[]};}):[]};}):[]:[]})[_0x5ea9('0x1a')](function(_0x1ffd57){logger['info'](_0x5ea9('0x1b'),_0x1b18bf);logger['debug'](_0x5ea9('0x1b'),_0x1b18bf,JSON[_0x5ea9('0xc')](_0x1ffd57));_0x21c757(_0x1ffd57);})[_0x5ea9('0x11')](function(_0x47450a){logger[_0x5ea9('0xd')](_0x5ea9('0x1b'),_0x47450a[_0x5ea9('0xf')],_0x1b18bf);_0x27148e(_0x3e6317[_0x5ea9('0xd')](0x1f4,_0x47450a[_0x5ea9('0xf')]));});});};
\ No newline at end of file
index d66c66e..debee98 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dae=['isAuthenticated','index','/:id','create','put','update','delete','exports','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','get'];(function(_0x4d0b2a,_0x3a3ce3){var _0x156ab3=function(_0x24cd18){while(--_0x24cd18){_0x4d0b2a['push'](_0x4d0b2a['shift']());}};_0x156ab3(++_0x3a3ce3);}(_0x3dae,0xbc));var _0xe3da=function(_0x678b2f,_0x57b754){_0x678b2f=_0x678b2f-0x0;var _0x591c34=_0x3dae[_0x678b2f];return _0x591c34;};'use strict';var multer=require(_0xe3da('0x0'));var util=require(_0xe3da('0x1'));var path=require(_0xe3da('0x2'));var timeout=require(_0xe3da('0x3'));var express=require('express');var router=express[_0xe3da('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe3da('0x5'));var interaction=require(_0xe3da('0x6'));var config=require(_0xe3da('0x7'));var controller=require(_0xe3da('0x8'));router[_0xe3da('0x9')]('/',auth[_0xe3da('0xa')](),controller[_0xe3da('0xb')]);router['get'](_0xe3da('0xc'),auth[_0xe3da('0xa')](),controller['show']);router['post']('/',auth[_0xe3da('0xa')](),controller[_0xe3da('0xd')]);router[_0xe3da('0xe')](_0xe3da('0xc'),auth[_0xe3da('0xa')](),controller[_0xe3da('0xf')]);router[_0xe3da('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xe3da('0x11')]=router;
\ No newline at end of file
+var _0xe680=['update','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','index','get','/:id','isAuthenticated','show','post','put'];(function(_0x493687,_0x51a480){var _0x35172c=function(_0xe72da0){while(--_0xe72da0){_0x493687['push'](_0x493687['shift']());}};_0x35172c(++_0x51a480);}(_0xe680,0x68));var _0x0e68=function(_0x12ae97,_0x385f36){_0x12ae97=_0x12ae97-0x0;var _0xb50847=_0xe680[_0x12ae97];return _0xb50847;};'use strict';var multer=require(_0x0e68('0x0'));var util=require(_0x0e68('0x1'));var path=require(_0x0e68('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0e68('0x3')]();var fs_extra=require(_0x0e68('0x4'));var auth=require(_0x0e68('0x5'));var interaction=require(_0x0e68('0x6'));var config=require(_0x0e68('0x7'));var controller=require('./squareProject.controller');router['get']('/',auth['isAuthenticated'](),controller[_0x0e68('0x8')]);router[_0x0e68('0x9')](_0x0e68('0xa'),auth[_0x0e68('0xb')](),controller[_0x0e68('0xc')]);router[_0x0e68('0xd')]('/',auth[_0x0e68('0xb')](),controller['create']);router[_0x0e68('0xe')]('/:id',auth[_0x0e68('0xb')](),controller[_0x0e68('0xf')]);router['delete'](_0x0e68('0xa'),auth[_0x0e68('0xb')](),controller[_0x0e68('0x10')]);module['exports']=router;
\ No newline at end of file
index a4f55e3..32b2e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12b6=['DATE','sequelize','exports','STRING','BLOB','long','preproduction','getDataValue','toString','production'];(function(_0x4bb503,_0x3553a0){var _0x24a543=function(_0x26e2f2){while(--_0x26e2f2){_0x4bb503['push'](_0x4bb503['shift']());}};_0x24a543(++_0x3553a0);}(_0x12b6,0x1b9));var _0x612b=function(_0x592f46,_0x268ae3){_0x592f46=_0x592f46-0x0;var _0x225678=_0x12b6[_0x592f46];return _0x225678;};'use strict';var Sequelize=require(_0x612b('0x0'));module[_0x612b('0x1')]={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0x612b('0x2')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0x612b('0x3')](_0x612b('0x4')),'get':function(){if(this['getDataValue'](_0x612b('0x5'))){return this[_0x612b('0x6')]('preproduction')[_0x612b('0x7')]('utf8');}}},'production':{'type':Sequelize[_0x612b('0x3')](_0x612b('0x4')),'get':function(){if(this[_0x612b('0x6')](_0x612b('0x8'))){return this[_0x612b('0x6')](_0x612b('0x8'))[_0x612b('0x7')]('utf8');}}},'savedAt':{'type':Sequelize[_0x612b('0x9')]},'publishedAt':{'type':Sequelize[_0x612b('0x9')]}};
\ No newline at end of file
+var _0x47cd=['long','getDataValue','preproduction','toString','utf8','production','DATE','STRING','name','BLOB'];(function(_0x2a558d,_0x2df0ff){var _0xa7bc9c=function(_0x12a30e){while(--_0x12a30e){_0x2a558d['push'](_0x2a558d['shift']());}};_0xa7bc9c(++_0x2df0ff);}(_0x47cd,0xf7));var _0xd47c=function(_0x474d61,_0x2c42bf){_0x474d61=_0x474d61-0x0;var _0xc389f2=_0x47cd[_0x474d61];return _0xc389f2;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd47c('0x0')],'unique':_0xd47c('0x1'),'allowNull':![]},'description':{'type':Sequelize[_0xd47c('0x0')]},'notes':{'type':Sequelize['TEXT']},'preproduction':{'type':Sequelize[_0xd47c('0x2')](_0xd47c('0x3')),'get':function(){if(this[_0xd47c('0x4')]('preproduction')){return this[_0xd47c('0x4')](_0xd47c('0x5'))[_0xd47c('0x6')](_0xd47c('0x7'));}}},'production':{'type':Sequelize[_0xd47c('0x2')](_0xd47c('0x3')),'get':function(){if(this[_0xd47c('0x4')](_0xd47c('0x8'))){return this['getDataValue'](_0xd47c('0x8'))[_0xd47c('0x6')](_0xd47c('0x7'));}}},'savedAt':{'type':Sequelize[_0xd47c('0x9')]},'publishedAt':{'type':Sequelize[_0xd47c('0x9')]}};
\ No newline at end of file
index 2ed07fd..a92d74c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0843=['show','params','rawAttributes','options','find','create','body','user','role','get','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','stringify','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','status','json','offset','limit','count','set','Content-Range','update','destroy','then','SquareProjects','UserProfileResource','publish','agi','end','sendStatus','error','stack','name','map','SquareProject','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','includeAll','include','findAll','rows','catch'];(function(_0xaa4342,_0x4149f9){var _0x5ac7d6=function(_0x2c9f3b){while(--_0x2c9f3b){_0xaa4342['push'](_0xaa4342['shift']());}};_0x5ac7d6(++_0x4149f9);}(_0x0843,0xde));var _0x3084=function(_0x2913e7,_0x5268a6){_0x2913e7=_0x2913e7-0x0;var _0x52f254=_0x0843[_0x2913e7];return _0x52f254;};'use strict';var _=require(_0x3084('0x0'));var Redis=require(_0x3084('0x1'));var qs=require(_0x3084('0x2'));var logger=require('../../config/logger')(_0x3084('0x3'));var config=require(_0x3084('0x4'));var db=require(_0x3084('0x5'))['db'];config[_0x3084('0x6')]=_['defaults'](config['redis'],{'host':_0x3084('0x7'),'port':0x18eb});var socket=require(_0x3084('0x8'))(new Redis(config[_0x3084('0x6')]));require(_0x3084('0x9'))[_0x3084('0xa')](socket);function respondWithResult(_0x5ebc9b,_0x59af42){_0x59af42=_0x59af42||0xc8;return function(_0x558b54){if(_0x558b54){return _0x5ebc9b[_0x3084('0xb')](_0x59af42)[_0x3084('0xc')](_0x558b54);}};}function respondWithFilteredResult(_0x2e70dc,_0x27f79a){return function(_0xeccab3){if(_0xeccab3){var _0x3f08d7=typeof _0x27f79a[_0x3084('0xd')]==='undefined'&&typeof _0x27f79a[_0x3084('0xe')]==='undefined';var _0x26caec=_0xeccab3['count'];var _0x56f4d2=_0x3f08d7?0x0:_0x27f79a[_0x3084('0xd')];var _0x3df02d=_0x3f08d7?_0xeccab3[_0x3084('0xf')]:_0x27f79a[_0x3084('0xd')]+_0x27f79a[_0x3084('0xe')];var _0x5a5806;if(_0x3df02d>=_0x26caec){_0x3df02d=_0x26caec;_0x5a5806=0xc8;}else{_0x5a5806=0xce;}_0x2e70dc[_0x3084('0xb')](_0x5a5806);return _0x2e70dc[_0x3084('0x10')](_0x3084('0x11'),_0x56f4d2+'-'+_0x3df02d+'/'+_0x26caec)[_0x3084('0xc')](_0xeccab3);}return null;};}function saveUpdates(_0x147d81){return function(_0x4f125b){if(_0x4f125b){return _0x4f125b[_0x3084('0x12')](_0x147d81)['then'](function(_0xaf7fac){return _0xaf7fac;});}return null;};}function removeEntity(_0x40785a){return function(_0x183e92){if(_0x183e92){return _0x183e92[_0x3084('0x13')]()[_0x3084('0x14')](function(){var _0x37b6da=_0x183e92['get']({'plain':!![]});var _0x241af9=_0x3084('0x15');return db[_0x3084('0x16')][_0x3084('0x13')]({'where':{'type':_0x241af9,'resourceId':_0x37b6da['id']}})[_0x3084('0x14')](function(){return _0x183e92;});})[_0x3084('0x14')](function(){var _0x40ca6a=new Redis(config[_0x3084('0x6')]);_0x40ca6a[_0x3084('0x17')](_0x3084('0x18'),JSON['stringify']({'id':_0x183e92['id'],'deleted':!![]}));})[_0x3084('0x14')](function(){_0x40785a[_0x3084('0xb')](0xcc)[_0x3084('0x19')]();});}};}function handleEntityNotFound(_0x2c0330){return function(_0x46caf8){if(!_0x46caf8){_0x2c0330[_0x3084('0x1a')](0x194);}return _0x46caf8;};}function handleError(_0x220d26,_0x5b65c4){_0x5b65c4=_0x5b65c4||0x1f4;return function(_0x511986){logger[_0x3084('0x1b')](_0x511986[_0x3084('0x1c')]);if(_0x511986[_0x3084('0x1d')]){delete _0x511986[_0x3084('0x1d')];}_0x220d26['status'](_0x5b65c4)['send'](_0x511986);};}exports['index']=function(_0x5a5b53,_0x547d34){var _0x1410dd={},_0x29141a={},_0x4c50b6={'count':0x0,'rows':[]};var _0x913acf=_[_0x3084('0x1e')](db[_0x3084('0x1f')]['rawAttributes'],function(_0x284393){return{'name':_0x284393[_0x3084('0x20')],'type':_0x284393[_0x3084('0x21')][_0x3084('0x22')]};});_0x29141a[_0x3084('0x23')]=_[_0x3084('0x1e')](_0x913acf,'name');_0x29141a[_0x3084('0x24')]=_[_0x3084('0x25')](_0x5a5b53[_0x3084('0x24')]);_0x29141a[_0x3084('0x26')]=_[_0x3084('0x27')](_0x29141a[_0x3084('0x23')],_0x29141a['query']);_0x1410dd[_0x3084('0x28')]=_['intersection'](_0x29141a[_0x3084('0x23')],qs[_0x3084('0x29')](_0x5a5b53['query']['fields']));_0x1410dd['attributes']=_0x1410dd[_0x3084('0x28')][_0x3084('0x2a')]?_0x1410dd[_0x3084('0x28')]:_0x29141a[_0x3084('0x23')];if(!_0x5a5b53[_0x3084('0x24')]['hasOwnProperty'](_0x3084('0x2b'))){_0x1410dd['limit']=qs[_0x3084('0xe')](_0x5a5b53[_0x3084('0x24')][_0x3084('0xe')]);_0x1410dd['offset']=qs[_0x3084('0xd')](_0x5a5b53[_0x3084('0x24')][_0x3084('0xd')]);}_0x1410dd['order']=qs['sort'](_0x5a5b53[_0x3084('0x24')][_0x3084('0x2c')]);_0x1410dd[_0x3084('0x2d')]=qs['filters'](_[_0x3084('0x2e')](_0x5a5b53[_0x3084('0x24')],_0x29141a[_0x3084('0x26')]),_0x913acf);if(_0x5a5b53['query'][_0x3084('0x2f')]){_0x1410dd['where']=_['merge'](_0x1410dd['where'],{'$or':_[_0x3084('0x1e')](_0x913acf,function(_0x46e4b6){if(_0x46e4b6[_0x3084('0x21')]!=='VIRTUAL'){var _0x26ddd2={};_0x26ddd2[_0x46e4b6[_0x3084('0x1d')]]={'$like':'%'+_0x5a5b53[_0x3084('0x24')][_0x3084('0x2f')]+'%'};return _0x26ddd2;}})});}_0x1410dd=_[_0x3084('0x30')]({},_0x1410dd,_0x5a5b53['options']);var _0x2fdc4a={'where':_0x1410dd[_0x3084('0x2d')]};return db['SquareProject'][_0x3084('0xf')](_0x2fdc4a)[_0x3084('0x14')](function(_0x3dfbca){_0x4c50b6['count']=_0x3dfbca;if(_0x5a5b53[_0x3084('0x24')][_0x3084('0x31')]){_0x1410dd[_0x3084('0x32')]=[{'all':!![]}];}return db[_0x3084('0x1f')][_0x3084('0x33')](_0x1410dd);})['then'](function(_0x2e6a73){_0x4c50b6[_0x3084('0x34')]=_0x2e6a73;return _0x4c50b6;})['then'](respondWithFilteredResult(_0x547d34,_0x1410dd))[_0x3084('0x35')](handleError(_0x547d34,null));};exports[_0x3084('0x36')]=function(_0x757a37,_0x3f2638){var _0x261508={'raw':![],'where':{'id':_0x757a37[_0x3084('0x37')]['id']}},_0x5ea58e={};_0x5ea58e['model']=_[_0x3084('0x25')](db[_0x3084('0x1f')][_0x3084('0x38')]);_0x5ea58e[_0x3084('0x24')]=_['keys'](_0x757a37[_0x3084('0x24')]);_0x5ea58e[_0x3084('0x26')]=_[_0x3084('0x27')](_0x5ea58e['model'],_0x5ea58e[_0x3084('0x24')]);_0x261508[_0x3084('0x28')]=_['intersection'](_0x5ea58e[_0x3084('0x23')],qs[_0x3084('0x29')](_0x757a37[_0x3084('0x24')][_0x3084('0x29')]));_0x261508['attributes']=_0x261508[_0x3084('0x28')]['length']?_0x261508[_0x3084('0x28')]:_0x5ea58e[_0x3084('0x23')];if(_0x757a37['query'][_0x3084('0x31')]){_0x261508[_0x3084('0x32')]=[{'all':!![]}];}_0x261508=_['merge']({},_0x261508,_0x757a37[_0x3084('0x39')]);return db['SquareProject'][_0x3084('0x3a')](_0x261508)['then'](handleEntityNotFound(_0x3f2638,null))[_0x3084('0x14')](respondWithResult(_0x3f2638,null))[_0x3084('0x35')](handleError(_0x3f2638,null));};exports[_0x3084('0x3b')]=function(_0x2c348c,_0x3ab9b2){return db[_0x3084('0x1f')][_0x3084('0x3b')](_0x2c348c[_0x3084('0x3c')],{})[_0x3084('0x14')](function(_0x25f55a){var _0x5d4324=_0x2c348c[_0x3084('0x3d')]['get']({'plain':!![]});if(!_0x5d4324)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5d4324[_0x3084('0x3e')]==='user'){var _0x8d7ef1=_0x25f55a[_0x3084('0x3f')]({'plain':!![]});var _0xc2980b='SquareProjects';return db[_0x3084('0x40')]['find']({'where':{'name':_0xc2980b,'userProfileId':_0x5d4324[_0x3084('0x41')]},'raw':!![]})[_0x3084('0x14')](function(_0x56ebed){if(_0x56ebed&&_0x56ebed[_0x3084('0x42')]===0x0){return db[_0x3084('0x16')]['create']({'name':_0x8d7ef1[_0x3084('0x1d')],'resourceId':_0x8d7ef1['id'],'type':_0x56ebed[_0x3084('0x1d')],'sectionId':_0x56ebed['id']},{})[_0x3084('0x14')](function(){return _0x25f55a;});}else{return _0x25f55a;}})[_0x3084('0x35')](function(_0x38d4be){logger[_0x3084('0x1b')](_0x3084('0x43'),_0x38d4be);throw _0x38d4be;});}return _0x25f55a;})['then'](respondWithResult(_0x3ab9b2,0xc9))[_0x3084('0x35')](handleError(_0x3ab9b2,null));};exports[_0x3084('0x12')]=function(_0x1a878b,_0x5081d0){if(_0x1a878b[_0x3084('0x3c')]['id']){delete _0x1a878b['body']['id'];}return db[_0x3084('0x1f')]['find']({'where':{'id':_0x1a878b['params']['id']}})['then'](handleEntityNotFound(_0x5081d0,null))[_0x3084('0x14')](saveUpdates(_0x1a878b[_0x3084('0x3c')],null))['then'](function(_0x284712){if(!_0x284712)return;var _0x20be60=_0x284712[_0x3084('0x3f')]({'plain':!![]});return _0x20be60;})[_0x3084('0x14')](function(_0x307283){var _0x4d267a=new Redis(config[_0x3084('0x6')]);_0x4d267a[_0x3084('0x17')](_0x3084('0x18'),JSON[_0x3084('0x44')](_[_0x3084('0x2e')](_0x307283,['id',_0x3084('0x1d'),'production'])));return _0x307283;})[_0x3084('0x14')](respondWithResult(_0x5081d0,null))[_0x3084('0x35')](handleError(_0x5081d0,null));};exports[_0x3084('0x13')]=function(_0x49722a,_0x4d0a05){return db[_0x3084('0x1f')][_0x3084('0x3a')]({'where':{'id':_0x49722a['params']['id']}})['then'](handleEntityNotFound(_0x4d0a05,null))['then'](removeEntity(_0x4d0a05,null))['catch'](handleError(_0x4d0a05,null));};
\ No newline at end of file
+var _0x3960=['stack','name','map','SquareProject','rawAttributes','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','pick','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','keys','merge','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','SquareProjects','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','production','ioredis','../../config/logger','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./squareProject.socket','register','json','offset','undefined','limit','count','status','set','update','then','destroy','get','UserProfileResource','publish','agi','stringify','end','sendStatus','error'];(function(_0x4ec7f2,_0x3d92d2){var _0x118004=function(_0x1ac4fb){while(--_0x1ac4fb){_0x4ec7f2['push'](_0x4ec7f2['shift']());}};_0x118004(++_0x3d92d2);}(_0x3960,0xb4));var _0x0396=function(_0x453247,_0x114698){_0x453247=_0x453247-0x0;var _0x1faec1=_0x3960[_0x453247];return _0x1faec1;};'use strict';var _=require('lodash');var Redis=require(_0x0396('0x0'));var qs=require('../../components/parsers/qs');var logger=require(_0x0396('0x1'))(_0x0396('0x2'));var config=require(_0x0396('0x3'));var db=require(_0x0396('0x4'))['db'];config[_0x0396('0x5')]=_['defaults'](config[_0x0396('0x5')],{'host':'localhost','port':0x18eb});var socket=require(_0x0396('0x6'))(new Redis(config[_0x0396('0x5')]));require(_0x0396('0x7'))[_0x0396('0x8')](socket);function respondWithResult(_0x57c71a,_0x468c98){_0x468c98=_0x468c98||0xc8;return function(_0x55d8ca){if(_0x55d8ca){return _0x57c71a['status'](_0x468c98)[_0x0396('0x9')](_0x55d8ca);}};}function respondWithFilteredResult(_0x488509,_0x486df6){return function(_0x319894){if(_0x319894){var _0xc328f7=typeof _0x486df6[_0x0396('0xa')]===_0x0396('0xb')&&typeof _0x486df6[_0x0396('0xc')]===_0x0396('0xb');var _0x38ad3b=_0x319894['count'];var _0x1bd2d8=_0xc328f7?0x0:_0x486df6[_0x0396('0xa')];var _0x37647d=_0xc328f7?_0x319894[_0x0396('0xd')]:_0x486df6[_0x0396('0xa')]+_0x486df6[_0x0396('0xc')];var _0x1235e3;if(_0x37647d>=_0x38ad3b){_0x37647d=_0x38ad3b;_0x1235e3=0xc8;}else{_0x1235e3=0xce;}_0x488509[_0x0396('0xe')](_0x1235e3);return _0x488509[_0x0396('0xf')]('Content-Range',_0x1bd2d8+'-'+_0x37647d+'/'+_0x38ad3b)[_0x0396('0x9')](_0x319894);}return null;};}function saveUpdates(_0x5a9349){return function(_0x31f0ac){if(_0x31f0ac){return _0x31f0ac[_0x0396('0x10')](_0x5a9349)[_0x0396('0x11')](function(_0x3eea6b){return _0x3eea6b;});}return null;};}function removeEntity(_0x42958c){return function(_0x3a2c59){if(_0x3a2c59){return _0x3a2c59[_0x0396('0x12')]()[_0x0396('0x11')](function(){var _0x642cd8=_0x3a2c59[_0x0396('0x13')]({'plain':!![]});var _0x3a7983='SquareProjects';return db[_0x0396('0x14')][_0x0396('0x12')]({'where':{'type':_0x3a7983,'resourceId':_0x642cd8['id']}})[_0x0396('0x11')](function(){return _0x3a2c59;});})[_0x0396('0x11')](function(){var _0x50a863=new Redis(config[_0x0396('0x5')]);_0x50a863[_0x0396('0x15')](_0x0396('0x16'),JSON[_0x0396('0x17')]({'id':_0x3a2c59['id'],'deleted':!![]}));})[_0x0396('0x11')](function(){_0x42958c[_0x0396('0xe')](0xcc)[_0x0396('0x18')]();});}};}function handleEntityNotFound(_0x4b9ae5){return function(_0x12310b){if(!_0x12310b){_0x4b9ae5[_0x0396('0x19')](0x194);}return _0x12310b;};}function handleError(_0x29434b,_0xb019c6){_0xb019c6=_0xb019c6||0x1f4;return function(_0x40d004){logger[_0x0396('0x1a')](_0x40d004[_0x0396('0x1b')]);if(_0x40d004[_0x0396('0x1c')]){delete _0x40d004[_0x0396('0x1c')];}_0x29434b[_0x0396('0xe')](_0xb019c6)['send'](_0x40d004);};}exports['index']=function(_0x6bd3d6,_0x57d7d8){var _0x53fdd3={},_0x9b672e={},_0x270cef={'count':0x0,'rows':[]};var _0x53e59f=_[_0x0396('0x1d')](db[_0x0396('0x1e')][_0x0396('0x1f')],function(_0x322626){return{'name':_0x322626['fieldName'],'type':_0x322626[_0x0396('0x20')][_0x0396('0x21')]};});_0x9b672e[_0x0396('0x22')]=_[_0x0396('0x1d')](_0x53e59f,'name');_0x9b672e[_0x0396('0x23')]=_['keys'](_0x6bd3d6[_0x0396('0x23')]);_0x9b672e[_0x0396('0x24')]=_[_0x0396('0x25')](_0x9b672e[_0x0396('0x22')],_0x9b672e['query']);_0x53fdd3[_0x0396('0x26')]=_[_0x0396('0x25')](_0x9b672e[_0x0396('0x22')],qs[_0x0396('0x27')](_0x6bd3d6[_0x0396('0x23')][_0x0396('0x27')]));_0x53fdd3[_0x0396('0x26')]=_0x53fdd3['attributes'][_0x0396('0x28')]?_0x53fdd3[_0x0396('0x26')]:_0x9b672e['model'];if(!_0x6bd3d6['query'][_0x0396('0x29')]('nolimit')){_0x53fdd3[_0x0396('0xc')]=qs[_0x0396('0xc')](_0x6bd3d6[_0x0396('0x23')][_0x0396('0xc')]);_0x53fdd3[_0x0396('0xa')]=qs[_0x0396('0xa')](_0x6bd3d6['query'][_0x0396('0xa')]);}_0x53fdd3[_0x0396('0x2a')]=qs[_0x0396('0x2b')](_0x6bd3d6[_0x0396('0x23')]['sort']);_0x53fdd3[_0x0396('0x2c')]=qs[_0x0396('0x24')](_[_0x0396('0x2d')](_0x6bd3d6[_0x0396('0x23')],_0x9b672e[_0x0396('0x24')]),_0x53e59f);if(_0x6bd3d6[_0x0396('0x23')]['filter']){_0x53fdd3[_0x0396('0x2c')]=_['merge'](_0x53fdd3[_0x0396('0x2c')],{'$or':_[_0x0396('0x1d')](_0x53e59f,function(_0x2edca8){if(_0x2edca8['type']!==_0x0396('0x2e')){var _0x2681c0={};_0x2681c0[_0x2edca8[_0x0396('0x1c')]]={'$like':'%'+_0x6bd3d6[_0x0396('0x23')][_0x0396('0x2f')]+'%'};return _0x2681c0;}})});}_0x53fdd3=_['merge']({},_0x53fdd3,_0x6bd3d6[_0x0396('0x30')]);var _0x423127={'where':_0x53fdd3['where']};return db[_0x0396('0x1e')][_0x0396('0xd')](_0x423127)['then'](function(_0x1013af){_0x270cef[_0x0396('0xd')]=_0x1013af;if(_0x6bd3d6[_0x0396('0x23')][_0x0396('0x31')]){_0x53fdd3[_0x0396('0x32')]=[{'all':!![]}];}return db[_0x0396('0x1e')][_0x0396('0x33')](_0x53fdd3);})[_0x0396('0x11')](function(_0x54f28a){_0x270cef[_0x0396('0x34')]=_0x54f28a;return _0x270cef;})[_0x0396('0x11')](respondWithFilteredResult(_0x57d7d8,_0x53fdd3))[_0x0396('0x35')](handleError(_0x57d7d8,null));};exports['show']=function(_0x5f04d4,_0x37f7af){var _0x1298e1={'raw':![],'where':{'id':_0x5f04d4['params']['id']}},_0x21d169={};_0x21d169[_0x0396('0x22')]=_[_0x0396('0x36')](db[_0x0396('0x1e')][_0x0396('0x1f')]);_0x21d169[_0x0396('0x23')]=_['keys'](_0x5f04d4[_0x0396('0x23')]);_0x21d169[_0x0396('0x24')]=_[_0x0396('0x25')](_0x21d169['model'],_0x21d169['query']);_0x1298e1[_0x0396('0x26')]=_[_0x0396('0x25')](_0x21d169['model'],qs[_0x0396('0x27')](_0x5f04d4[_0x0396('0x23')][_0x0396('0x27')]));_0x1298e1[_0x0396('0x26')]=_0x1298e1[_0x0396('0x26')][_0x0396('0x28')]?_0x1298e1['attributes']:_0x21d169[_0x0396('0x22')];if(_0x5f04d4['query']['includeAll']){_0x1298e1[_0x0396('0x32')]=[{'all':!![]}];}_0x1298e1=_[_0x0396('0x37')]({},_0x1298e1,_0x5f04d4[_0x0396('0x30')]);return db['SquareProject']['find'](_0x1298e1)[_0x0396('0x11')](handleEntityNotFound(_0x37f7af,null))[_0x0396('0x11')](respondWithResult(_0x37f7af,null))['catch'](handleError(_0x37f7af,null));};exports[_0x0396('0x38')]=function(_0x3250f5,_0x4fe52a){return db['SquareProject'][_0x0396('0x38')](_0x3250f5[_0x0396('0x39')],{})[_0x0396('0x11')](function(_0x110c37){var _0x3e5468=_0x3250f5[_0x0396('0x3a')][_0x0396('0x13')]({'plain':!![]});if(!_0x3e5468)throw new Error(_0x0396('0x3b'));if(_0x3e5468[_0x0396('0x3c')]===_0x0396('0x3a')){var _0x36bff8=_0x110c37[_0x0396('0x13')]({'plain':!![]});var _0x41f44c=_0x0396('0x3d');return db[_0x0396('0x3e')][_0x0396('0x3f')]({'where':{'name':_0x41f44c,'userProfileId':_0x3e5468[_0x0396('0x40')]},'raw':!![]})['then'](function(_0x4bc6d9){if(_0x4bc6d9&&_0x4bc6d9[_0x0396('0x41')]===0x0){return db[_0x0396('0x14')][_0x0396('0x38')]({'name':_0x36bff8[_0x0396('0x1c')],'resourceId':_0x36bff8['id'],'type':_0x4bc6d9[_0x0396('0x1c')],'sectionId':_0x4bc6d9['id']},{})[_0x0396('0x11')](function(){return _0x110c37;});}else{return _0x110c37;}})[_0x0396('0x35')](function(_0x268875){logger[_0x0396('0x1a')](_0x0396('0x42'),_0x268875);throw _0x268875;});}return _0x110c37;})['then'](respondWithResult(_0x4fe52a,0xc9))[_0x0396('0x35')](handleError(_0x4fe52a,null));};exports['update']=function(_0x15dea5,_0xcf61bd){if(_0x15dea5['body']['id']){delete _0x15dea5[_0x0396('0x39')]['id'];}return db[_0x0396('0x1e')][_0x0396('0x3f')]({'where':{'id':_0x15dea5[_0x0396('0x43')]['id']}})[_0x0396('0x11')](handleEntityNotFound(_0xcf61bd,null))[_0x0396('0x11')](saveUpdates(_0x15dea5[_0x0396('0x39')],null))['then'](function(_0x573450){if(!_0x573450)return;var _0x4820b4=_0x573450[_0x0396('0x13')]({'plain':!![]});return _0x4820b4;})[_0x0396('0x11')](function(_0x26dbbc){var _0x308a5d=new Redis(config[_0x0396('0x5')]);_0x308a5d[_0x0396('0x15')](_0x0396('0x16'),JSON[_0x0396('0x17')](_['pick'](_0x26dbbc,['id','name',_0x0396('0x44')])));return _0x26dbbc;})[_0x0396('0x11')](respondWithResult(_0xcf61bd,null))[_0x0396('0x35')](handleError(_0xcf61bd,null));};exports['destroy']=function(_0x59f73a,_0x4291fc){return db[_0x0396('0x1e')][_0x0396('0x3f')]({'where':{'id':_0x59f73a[_0x0396('0x43')]['id']}})[_0x0396('0x11')](handleEntityNotFound(_0x4291fc,null))[_0x0396('0x11')](removeEntity(_0x4291fc,null))['catch'](handleError(_0x4291fc,null));};
\ No newline at end of file
index 596abaf..4077a03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe94c=['remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','SquareProject','setMaxListeners','save','update'];(function(_0x5c969d,_0x4a4a15){var _0x567960=function(_0x2722ab){while(--_0x2722ab){_0x5c969d['push'](_0x5c969d['shift']());}};_0x567960(++_0x4a4a15);}(_0xe94c,0x1bd));var _0xce94=function(_0x326af2,_0x563ac8){_0x326af2=_0x326af2-0x0;var _0x275944=_0xe94c[_0x326af2];return _0x275944;};'use strict';var EventEmitter=require(_0xce94('0x0'));var SquareProject=require(_0xce94('0x1'))['db'][_0xce94('0x2')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xce94('0x3')](0x0);var events={'afterCreate':_0xce94('0x4'),'afterUpdate':_0xce94('0x5'),'afterDestroy':_0xce94('0x6')};function emitEvent(_0x5f454a){return function(_0x1d7bd0,_0x2520dd,_0x5d9d31){SquareProjectEvents[_0xce94('0x7')](_0x5f454a+':'+_0x1d7bd0['id'],_0x1d7bd0);SquareProjectEvents[_0xce94('0x7')](_0x5f454a,_0x1d7bd0);_0x5d9d31(null);};}for(var e in events){if(events[_0xce94('0x8')](e)){var event=events[e];SquareProject[_0xce94('0x9')](e,emitEvent(event));}}module[_0xce94('0xa')]=SquareProjectEvents;
\ No newline at end of file
+var _0xe2cd=['events','SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x285824,_0x3da647){var _0x311d7e=function(_0x2f3de0){while(--_0x2f3de0){_0x285824['push'](_0x285824['shift']());}};_0x311d7e(++_0x3da647);}(_0xe2cd,0x120));var _0xde2c=function(_0x592502,_0x1c4de8){_0x592502=_0x592502-0x0;var _0x5ebb4b=_0xe2cd[_0x592502];return _0x5ebb4b;};'use strict';var EventEmitter=require(_0xde2c('0x0'));var SquareProject=require('../../mysqldb')['db'][_0xde2c('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0xde2c('0x2')](0x0);var events={'afterCreate':_0xde2c('0x3'),'afterUpdate':_0xde2c('0x4'),'afterDestroy':_0xde2c('0x5')};function emitEvent(_0x549b76){return function(_0xd90788,_0x418b5c,_0x243068){SquareProjectEvents[_0xde2c('0x6')](_0x549b76+':'+_0xd90788['id'],_0xd90788);SquareProjectEvents['emit'](_0x549b76,_0xd90788);_0x243068(null);};}for(var e in events){if(events[_0xde2c('0x7')](e)){var event=events[e];SquareProject['hook'](e,emitEvent(event));}}module[_0xde2c('0x8')]=SquareProjectEvents;
\ No newline at end of file
index fd08643..ef60b0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a64=['square_projects','changed','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment','exports'];(function(_0x28808b,_0x55d2a9){var _0x259636=function(_0x5e962c){while(--_0x5e962c){_0x28808b['push'](_0x28808b['shift']());}};_0x259636(++_0x55d2a9);}(_0x0a64,0x1c8));var _0x40a6=function(_0x5b791d,_0x49cc81){_0x5b791d=_0x5b791d-0x0;var _0xdd1c36=_0x0a64[_0x5b791d];return _0xdd1c36;};'use strict';var _=require(_0x40a6('0x0'));var util=require(_0x40a6('0x1'));var logger=require(_0x40a6('0x2'))('api');var moment=require('moment');var BPromise=require(_0x40a6('0x3'));var rp=require(_0x40a6('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x40a6('0x5'));var config=require(_0x40a6('0x6'));var attributes=require('./squareProject.attributes');module[_0x40a6('0x7')]=function(_0x7a94b2,_0x17b3bb){return _0x7a94b2['define']('SquareProject',attributes,{'tableName':_0x40a6('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x45850a,_0x155793,_0x1f75f8){if(_0x45850a[_0x40a6('0x9')](_0x40a6('0xa'))){_0x45850a[_0x40a6('0xb')]=moment()[_0x40a6('0xc')](_0x40a6('0xd'));}if(_0x45850a[_0x40a6('0x9')](_0x40a6('0xe'))){_0x45850a[_0x40a6('0xf')]=moment()['format'](_0x40a6('0xd'));}_0x1f75f8(null,_0x45850a);}}});};
\ No newline at end of file
+var _0x8073=['production','publishedAt','lodash','../../config/logger','api','moment','request-promise','path','../../config/environment','./squareProject.attributes','exports','define','SquareProject','changed','savedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x49182a,_0xcd2046){var _0x1dbbd4=function(_0x31cbcd){while(--_0x31cbcd){_0x49182a['push'](_0x49182a['shift']());}};_0x1dbbd4(++_0xcd2046);}(_0x8073,0xce));var _0x3807=function(_0x334841,_0x2bbc4c){_0x334841=_0x334841-0x0;var _0x5beb4b=_0x8073[_0x334841];return _0x5beb4b;};'use strict';var _=require(_0x3807('0x0'));var util=require('util');var logger=require(_0x3807('0x1'))(_0x3807('0x2'));var moment=require(_0x3807('0x3'));var BPromise=require('bluebird');var rp=require(_0x3807('0x4'));var fs=require('fs');var path=require(_0x3807('0x5'));var rimraf=require('rimraf');var config=require(_0x3807('0x6'));var attributes=require(_0x3807('0x7'));module[_0x3807('0x8')]=function(_0x125dc1,_0x19af6d){return _0x125dc1[_0x3807('0x9')](_0x3807('0xa'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x122d49,_0x129ab8,_0x3d5e8b){if(_0x122d49[_0x3807('0xb')]('preproduction')){_0x122d49[_0x3807('0xc')]=moment()[_0x3807('0xd')](_0x3807('0xe'));}if(_0x122d49[_0x3807('0xb')](_0x3807('0xf'))){_0x122d49[_0x3807('0x10')]=moment()[_0x3807('0xd')](_0x3807('0xe'));}_0x3d5e8b(null,_0x122d49);}}});};
\ No newline at end of file
index 6817648..33494bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb6=['redis','localhost','socket.io-emitter','register','GetSquareProjects','SquareProject','findAll','options','raw','where','attributes','limit','map','include','model','then','catch','message','error','info','ShowSquareProject','debug','stringify','../../config/logger','rpc','../../config/environment'];(function(_0x5a776b,_0x46f785){var _0xbbef59=function(_0x38313e){while(--_0x38313e){_0x5a776b['push'](_0x5a776b['shift']());}};_0xbbef59(++_0x46f785);}(_0xcbb6,0x19d));var _0x6cbb=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xcbb6[_0x1facfa];return _0x9ec701;};'use strict';var _=require('lodash');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var logger=require(_0x6cbb('0x0'))(_0x6cbb('0x1'));var config=require(_0x6cbb('0x2'));config[_0x6cbb('0x3')]=_['defaults'](config['redis'],{'host':_0x6cbb('0x4'),'port':0x18eb});var socket=require(_0x6cbb('0x5'))(new Redis(config[_0x6cbb('0x3')]));require('./squareProject.socket')[_0x6cbb('0x6')](socket);exports[_0x6cbb('0x7')]=function(_0xc1b6cd){var _0x5a4112=this;return new Promise(function(_0x26e68b,_0x55c7a3){return db[_0x6cbb('0x8')][_0x6cbb('0x9')]({'raw':_0xc1b6cd[_0x6cbb('0xa')]?_0xc1b6cd['options'][_0x6cbb('0xb')]===undefined?!![]:![]:!![],'where':_0xc1b6cd[_0x6cbb('0xa')]?_0xc1b6cd['options'][_0x6cbb('0xc')]||null:null,'attributes':_0xc1b6cd[_0x6cbb('0xa')]?_0xc1b6cd[_0x6cbb('0xa')][_0x6cbb('0xd')]||null:null,'limit':_0xc1b6cd[_0x6cbb('0xa')]?_0xc1b6cd[_0x6cbb('0xa')][_0x6cbb('0xe')]||null:null,'include':_0xc1b6cd['options']?_0xc1b6cd[_0x6cbb('0xa')]['include']?_[_0x6cbb('0xf')](_0xc1b6cd[_0x6cbb('0xa')][_0x6cbb('0x10')],function(_0x224495){return{'model':db[_0x224495['model']],'as':_0x224495['as'],'attributes':_0x224495[_0x6cbb('0xd')],'include':_0x224495['include']?_['map'](_0x224495[_0x6cbb('0x10')],function(_0x5e301c){return{'model':db[_0x5e301c[_0x6cbb('0x11')]],'as':_0x5e301c['as'],'attributes':_0x5e301c['attributes'],'include':_0x5e301c[_0x6cbb('0x10')]?_['map'](_0x5e301c[_0x6cbb('0x10')],function(_0xda0071){return{'model':db[_0xda0071['model']],'as':_0xda0071['as'],'attributes':_0xda0071[_0x6cbb('0xd')]};}):[]};}):[]};}):[]:[]})[_0x6cbb('0x12')](function(_0x136759){logger['info']('GetSquareProjects',_0xc1b6cd);logger['debug'](_0x6cbb('0x7'),_0xc1b6cd,JSON['stringify'](_0x136759));_0x26e68b(_0x136759);})[_0x6cbb('0x13')](function(_0x40c77f){logger['error'](_0x6cbb('0x7'),_0x40c77f[_0x6cbb('0x14')],_0xc1b6cd);_0x55c7a3(_0x5a4112[_0x6cbb('0x15')](0x1f4,_0x40c77f[_0x6cbb('0x14')]));});});};exports['ShowSquareProject']=function(_0x5c8845){var _0x4eae85=this;return new Promise(function(_0x1a0d73,_0x47b1dd){return db['SquareProject']['find']({'raw':_0x5c8845['options']?_0x5c8845[_0x6cbb('0xa')][_0x6cbb('0xb')]===undefined?!![]:![]:!![],'where':_0x5c8845[_0x6cbb('0xa')]?_0x5c8845['options'][_0x6cbb('0xc')]||null:null,'attributes':_0x5c8845[_0x6cbb('0xa')]?_0x5c8845['options'][_0x6cbb('0xd')]||null:null,'include':_0x5c8845[_0x6cbb('0xa')]?_0x5c8845['options'][_0x6cbb('0x10')]?_['map'](_0x5c8845[_0x6cbb('0xa')][_0x6cbb('0x10')],function(_0x2ffd46){return{'model':db[_0x2ffd46[_0x6cbb('0x11')]],'as':_0x2ffd46['as'],'attributes':_0x2ffd46[_0x6cbb('0xd')],'include':_0x2ffd46[_0x6cbb('0x10')]?_[_0x6cbb('0xf')](_0x2ffd46[_0x6cbb('0x10')],function(_0xa65c9d){return{'model':db[_0xa65c9d[_0x6cbb('0x11')]],'as':_0xa65c9d['as'],'attributes':_0xa65c9d[_0x6cbb('0xd')],'include':_0xa65c9d[_0x6cbb('0x10')]?_[_0x6cbb('0xf')](_0xa65c9d[_0x6cbb('0x10')],function(_0x2424fc){return{'model':db[_0x2424fc[_0x6cbb('0x11')]],'as':_0x2424fc['as'],'attributes':_0x2424fc['attributes']};}):[]};}):[]};}):[]:[]})[_0x6cbb('0x12')](function(_0x95b974){logger[_0x6cbb('0x16')](_0x6cbb('0x17'),_0x5c8845);logger[_0x6cbb('0x18')](_0x6cbb('0x17'),_0x5c8845,JSON[_0x6cbb('0x19')](_0x95b974));_0x1a0d73(_0x95b974);})[_0x6cbb('0x13')](function(_0x8d15a9){logger[_0x6cbb('0x15')](_0x6cbb('0x17'),_0x8d15a9[_0x6cbb('0x14')],_0x5c8845);_0x47b1dd(_0x4eae85[_0x6cbb('0x15')](0x1f4,_0x8d15a9['message']));});});};
\ No newline at end of file
+var _0xf342=['stringify','message','error','ShowSquareProject','find','raw','catch','lodash','ioredis','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./squareProject.socket','register','GetSquareProjects','SquareProject','options','where','attributes','map','include','model','then','info','debug'];(function(_0x128fcd,_0x59568f){var _0x4811ad=function(_0x12643a){while(--_0x12643a){_0x128fcd['push'](_0x128fcd['shift']());}};_0x4811ad(++_0x59568f);}(_0xf342,0x10c));var _0x2f34=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf342[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2f34('0x0'));var Redis=require(_0x2f34('0x1'));var db=require('../../mysqldb')['db'];var logger=require(_0x2f34('0x2'))(_0x2f34('0x3'));var config=require(_0x2f34('0x4'));config[_0x2f34('0x5')]=_[_0x2f34('0x6')](config['redis'],{'host':_0x2f34('0x7'),'port':0x18eb});var socket=require(_0x2f34('0x8'))(new Redis(config['redis']));require(_0x2f34('0x9'))[_0x2f34('0xa')](socket);exports[_0x2f34('0xb')]=function(_0x178a7b){var _0x230bc1=this;return new Promise(function(_0x4fc0e4,_0x2e2758){return db[_0x2f34('0xc')]['findAll']({'raw':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['raw']===undefined?!![]:![]:!![],'where':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')][_0x2f34('0xe')]||null:null,'attributes':_0x178a7b[_0x2f34('0xd')]?_0x178a7b['options'][_0x2f34('0xf')]||null:null,'limit':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['limit']||null:null,'include':_0x178a7b[_0x2f34('0xd')]?_0x178a7b[_0x2f34('0xd')]['include']?_[_0x2f34('0x10')](_0x178a7b[_0x2f34('0xd')][_0x2f34('0x11')],function(_0xd774b7){return{'model':db[_0xd774b7[_0x2f34('0x12')]],'as':_0xd774b7['as'],'attributes':_0xd774b7['attributes'],'include':_0xd774b7[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0xd774b7['include'],function(_0x9526d1){return{'model':db[_0x9526d1['model']],'as':_0x9526d1['as'],'attributes':_0x9526d1[_0x2f34('0xf')],'include':_0x9526d1[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0x9526d1[_0x2f34('0x11')],function(_0x3bfc62){return{'model':db[_0x3bfc62['model']],'as':_0x3bfc62['as'],'attributes':_0x3bfc62['attributes']};}):[]};}):[]};}):[]:[]})[_0x2f34('0x13')](function(_0x14c781){logger[_0x2f34('0x14')](_0x2f34('0xb'),_0x178a7b);logger[_0x2f34('0x15')](_0x2f34('0xb'),_0x178a7b,JSON[_0x2f34('0x16')](_0x14c781));_0x4fc0e4(_0x14c781);})['catch'](function(_0x246f7f){logger['error'](_0x2f34('0xb'),_0x246f7f[_0x2f34('0x17')],_0x178a7b);_0x2e2758(_0x230bc1[_0x2f34('0x18')](0x1f4,_0x246f7f[_0x2f34('0x17')]));});});};exports[_0x2f34('0x19')]=function(_0x26ba0f){var _0x5f29c2=this;return new Promise(function(_0x25b56a,_0x38c588){return db[_0x2f34('0xc')][_0x2f34('0x1a')]({'raw':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x1b')]===undefined?!![]:![]:!![],'where':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f['options'][_0x2f34('0xe')]||null:null,'attributes':_0x26ba0f['options']?_0x26ba0f[_0x2f34('0xd')]['attributes']||null:null,'include':_0x26ba0f[_0x2f34('0xd')]?_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x11')]?_['map'](_0x26ba0f[_0x2f34('0xd')][_0x2f34('0x11')],function(_0x65aeaf){return{'model':db[_0x65aeaf['model']],'as':_0x65aeaf['as'],'attributes':_0x65aeaf[_0x2f34('0xf')],'include':_0x65aeaf[_0x2f34('0x11')]?_[_0x2f34('0x10')](_0x65aeaf[_0x2f34('0x11')],function(_0x27a29f){return{'model':db[_0x27a29f['model']],'as':_0x27a29f['as'],'attributes':_0x27a29f[_0x2f34('0xf')],'include':_0x27a29f['include']?_[_0x2f34('0x10')](_0x27a29f[_0x2f34('0x11')],function(_0xc8863d){return{'model':db[_0xc8863d['model']],'as':_0xc8863d['as'],'attributes':_0xc8863d[_0x2f34('0xf')]};}):[]};}):[]};}):[]:[]})[_0x2f34('0x13')](function(_0x341869){logger['info'](_0x2f34('0x19'),_0x26ba0f);logger[_0x2f34('0x15')](_0x2f34('0x19'),_0x26ba0f,JSON[_0x2f34('0x16')](_0x341869));_0x25b56a(_0x341869);})[_0x2f34('0x1c')](function(_0x5f12af){logger[_0x2f34('0x18')](_0x2f34('0x19'),_0x5f12af[_0x2f34('0x17')],_0x26ba0f);_0x38c588(_0x5f29c2['error'](0x1f4,_0x5f12af[_0x2f34('0x17')]));});});};
\ No newline at end of file
index 7cefb4c..3a169d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4dee=['update','emit','removeListener','register','squareProject:','./squareProject.events','save','remove'];(function(_0x255c48,_0x2a4449){var _0xaebda3=function(_0x12a04e){while(--_0x12a04e){_0x255c48['push'](_0x255c48['shift']());}};_0xaebda3(++_0x2a4449);}(_0x4dee,0xfd));var _0xe4de=function(_0x10dd63,_0x6c3075){_0x10dd63=_0x10dd63-0x0;var _0x130b34=_0x4dee[_0x10dd63];return _0x130b34;};'use strict';var SquareProjectEvents=require(_0xe4de('0x0'));var events=[_0xe4de('0x1'),_0xe4de('0x2'),_0xe4de('0x3')];function createListener(_0x1b8fd3,_0x3e370f){return function(_0x5909fd){_0x3e370f[_0xe4de('0x4')](_0x1b8fd3,_0x5909fd);};}function removeListener(_0x152a0f,_0x30f72e){return function(){SquareProjectEvents[_0xe4de('0x5')](_0x152a0f,_0x30f72e);};}exports[_0xe4de('0x6')]=function(_0x9e4988){for(var _0x26dc4f=0x0,_0x1d5690=events['length'];_0x26dc4f<_0x1d5690;_0x26dc4f++){var _0x5678f6=events[_0x26dc4f];var _0x529f36=createListener(_0xe4de('0x7')+_0x5678f6,_0x9e4988);SquareProjectEvents['on'](_0x5678f6,_0x529f36);}};
\ No newline at end of file
+var _0x3cbd=['length','squareProject:','./squareProject.events','save','remove','update','emit','register'];(function(_0x45b374,_0x20dccb){var _0x24fc74=function(_0x357eaf){while(--_0x357eaf){_0x45b374['push'](_0x45b374['shift']());}};_0x24fc74(++_0x20dccb);}(_0x3cbd,0xfa));var _0xd3cb=function(_0x26a44e,_0x18c43f){_0x26a44e=_0x26a44e-0x0;var _0x566fc4=_0x3cbd[_0x26a44e];return _0x566fc4;};'use strict';var SquareProjectEvents=require(_0xd3cb('0x0'));var events=[_0xd3cb('0x1'),_0xd3cb('0x2'),_0xd3cb('0x3')];function createListener(_0x4b2725,_0x57f5ae){return function(_0x3c630f){_0x57f5ae[_0xd3cb('0x4')](_0x4b2725,_0x3c630f);};}function removeListener(_0x39ad76,_0x4f900f){return function(){SquareProjectEvents['removeListener'](_0x39ad76,_0x4f900f);};}exports[_0xd3cb('0x5')]=function(_0x4bf27c){for(var _0x56212d=0x0,_0x5659c8=events[_0xd3cb('0x6')];_0x56212d<_0x5659c8;_0x56212d++){var _0x49ab05=events[_0x56212d];var _0x4920bb=createListener(_0xd3cb('0x7')+_0x49ab05,_0x4bf27c);SquareProjectEvents['on'](_0x49ab05,_0x4920bb);}};
\ No newline at end of file
index 567a735..64b32db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['destroy','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./squareRecording.controller','get','isAuthenticated','index','/:id','/:id/download','download','create','put','delete'];(function(_0x5978d1,_0x4eb993){var _0x357d63=function(_0x8263b8){while(--_0x8263b8){_0x5978d1['push'](_0x5978d1['shift']());}};_0x357d63(++_0x4eb993);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4792c8,_0x5158a1){_0x4792c8=_0x4792c8-0x0;var _0x35edb1=_0xc4aa[_0x4792c8];return _0x35edb1;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['show']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xe')]);router[_0xac4a('0xf')]('/:id',auth[_0xac4a('0x9')](),controller['update']);router[_0xac4a('0x10')]('/:id',auth[_0xac4a('0x9')](),controller[_0xac4a('0x11')]);module[_0xac4a('0x12')]=router;
\ No newline at end of file
+var _0x1cb9=['update','delete','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./squareRecording.controller','get','isAuthenticated','index','/:id','show','/:id/download','download','post','create','put'];(function(_0x5dfbdf,_0x413174){var _0x2b2ef2=function(_0x36e6fe){while(--_0x36e6fe){_0x5dfbdf['push'](_0x5dfbdf['shift']());}};_0x2b2ef2(++_0x413174);}(_0x1cb9,0x14e));var _0x91cb=function(_0x17bc62,_0x4134d0){_0x17bc62=_0x17bc62-0x0;var _0x3e0739=_0x1cb9[_0x17bc62];return _0x3e0739;};'use strict';var multer=require(_0x91cb('0x0'));var util=require('util');var path=require(_0x91cb('0x1'));var timeout=require(_0x91cb('0x2'));var express=require(_0x91cb('0x3'));var router=express[_0x91cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x91cb('0x5'));var interaction=require(_0x91cb('0x6'));var config=require('../../config/environment');var controller=require(_0x91cb('0x7'));router[_0x91cb('0x8')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0xa')]);router[_0x91cb('0x8')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0xc')]);router['get'](_0x91cb('0xd'),auth['isAuthenticated'](),controller[_0x91cb('0xe')]);router[_0x91cb('0xf')]('/',auth[_0x91cb('0x9')](),controller[_0x91cb('0x10')]);router[_0x91cb('0x11')](_0x91cb('0xb'),auth[_0x91cb('0x9')](),controller[_0x91cb('0x12')]);router[_0x91cb('0x13')](_0x91cb('0xb'),auth['isAuthenticated'](),controller[_0x91cb('0x14')]);module[_0x91cb('0x15')]=router;
\ No newline at end of file
index 4a50419..c2ab77f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['lastIndexOf','sequelize','STRING','VIRTUAL','getDataValue','savePath','substring'];(function(_0x4efe20,_0x506084){var _0x264693=function(_0xb3b594){while(--_0xb3b594){_0x4efe20['push'](_0x4efe20['shift']());}};_0x264693(++_0x506084);}(_0x7217,0x19e));var _0x7721=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x7217[_0x47b58b];return _0x46bebe;};'use strict';var Sequelize=require(_0x7721('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x7721('0x1')]},'callerid':{'type':Sequelize[_0x7721('0x1')]},'calleridname':{'type':Sequelize[_0x7721('0x1')]},'context':{'type':Sequelize[_0x7721('0x1')]},'extension':{'type':Sequelize[_0x7721('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x7721('0x1')]},'projectName':{'type':Sequelize[_0x7721('0x1')]},'saveName':{'type':Sequelize[_0x7721('0x1')]},'filename':{'type':Sequelize[_0x7721('0x1')]},'savePath':{'type':Sequelize[_0x7721('0x1')]},'format':{'type':Sequelize[_0x7721('0x2')],'get':function(){var _0x18ab6b='';var _0x21f680=this[_0x7721('0x3')](_0x7721('0x4'));if(_0x21f680){_0x18ab6b=_0x21f680[_0x7721('0x5')](_0x21f680[_0x7721('0x6')]('.'));}return _0x18ab6b;}}};
\ No newline at end of file
+var _0x2eb2=['substring','lastIndexOf','exports','STRING','VIRTUAL','getDataValue','savePath'];(function(_0x5834bc,_0x3d4801){var _0x3e183a=function(_0x18b023){while(--_0x18b023){_0x5834bc['push'](_0x5834bc['shift']());}};_0x3e183a(++_0x3d4801);}(_0x2eb2,0x19f));var _0x22eb=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x2eb2[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require('sequelize');module[_0x22eb('0x0')]={'uniqueid':{'type':Sequelize[_0x22eb('0x1')]},'callerid':{'type':Sequelize[_0x22eb('0x1')]},'calleridname':{'type':Sequelize[_0x22eb('0x1')]},'context':{'type':Sequelize[_0x22eb('0x1')]},'extension':{'type':Sequelize[_0x22eb('0x1')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x22eb('0x1')]},'dnid':{'type':Sequelize['STRING']},'projectName':{'type':Sequelize['STRING']},'saveName':{'type':Sequelize[_0x22eb('0x1')]},'filename':{'type':Sequelize[_0x22eb('0x1')]},'savePath':{'type':Sequelize[_0x22eb('0x1')]},'format':{'type':Sequelize[_0x22eb('0x2')],'get':function(){var _0x4539d0='';var _0x396806=this[_0x22eb('0x3')](_0x22eb('0x4'));if(_0x396806){_0x4539d0=_0x396806[_0x22eb('0x5')](_0x396806[_0x22eb('0x6')]('.'));}return _0x4539d0;}}};
\ No newline at end of file
index b95e753..24a72fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c87=['apply','reject','update','then','destroy','end','error','name','send','SquareRecording','rawAttributes','fieldName','type','key','map','query','keys','filters','intersection','model','fields','attributes','order','sort','where','pick','merge','filter','options','includeAll','include','show','params','length','catch','create','body','find','../../components/encryptor','savePath','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','filename','download','unlink','message','Not\x20found','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','eml-format','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range'];(function(_0x2d89ce,_0x24d58d){var _0x3fad10=function(_0xad0ec){while(--_0xad0ec){_0x2d89ce['push'](_0x2d89ce['shift']());}};_0x3fad10(++_0x24d58d);}(_0x6c87,0x14d));var _0x76c8=function(_0x5ee28e,_0x456e71){_0x5ee28e=_0x5ee28e-0x0;var _0xc29bf1=_0x6c87[_0x5ee28e];return _0xc29bf1;};'use strict';var emlformat=require(_0x76c8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x76c8('0x1'));var rp=require(_0x76c8('0x2'));var moment=require('moment');var BPromise=require(_0x76c8('0x3'));var Mustache=require('mustache');var util=require(_0x76c8('0x4'));var path=require(_0x76c8('0x5'));var sox=require(_0x76c8('0x6'));var csv=require(_0x76c8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x76c8('0x8'));var _=require(_0x76c8('0x9'));var squel=require(_0x76c8('0xa'));var crypto=require('crypto');var jsforce=require(_0x76c8('0xb'));var deskjs=require(_0x76c8('0xc'));var toCsv=require(_0x76c8('0x7'));var querystring=require(_0x76c8('0xd'));var Papa=require(_0x76c8('0xe'));var Redis=require(_0x76c8('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x76c8('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x76c8('0x11'));var logger=require('../../config/logger')(_0x76c8('0x12'));var utils=require(_0x76c8('0x13'));var config=require(_0x76c8('0x14'));var licenseUtil=require(_0x76c8('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2b0c71,_0x4da69e){_0x4da69e=_0x4da69e||0xcc;return function(_0x2127f4){if(_0x2127f4){return _0x2b0c71[_0x76c8('0x16')](_0x4da69e);}return _0x2b0c71[_0x76c8('0x17')](_0x4da69e)['end']();};}function respondWithResult(_0x3b9d52,_0x3dcfe6){_0x3dcfe6=_0x3dcfe6||0xc8;return function(_0x57374a){if(_0x57374a){return _0x3b9d52[_0x76c8('0x17')](_0x3dcfe6)[_0x76c8('0x18')](_0x57374a);}};}function respondWithFilteredResult(_0x1b4c64,_0x304a10){return function(_0x6bb4df){if(_0x6bb4df){var _0x302299=typeof _0x304a10[_0x76c8('0x19')]===_0x76c8('0x1a')&&typeof _0x304a10[_0x76c8('0x1b')]===_0x76c8('0x1a');var _0x593215=_0x6bb4df[_0x76c8('0x1c')];var _0x489fd6=_0x302299?0x0:_0x304a10[_0x76c8('0x19')];var _0x53b508=_0x302299?_0x6bb4df[_0x76c8('0x1c')]:_0x304a10[_0x76c8('0x19')]+_0x304a10['limit'];var _0x39cdd8;if(_0x53b508>=_0x593215){_0x53b508=_0x593215;_0x39cdd8=0xc8;}else{_0x39cdd8=0xce;}_0x1b4c64[_0x76c8('0x17')](_0x39cdd8);return _0x1b4c64[_0x76c8('0x1d')](_0x76c8('0x1e'),_0x489fd6+'-'+_0x53b508+'/'+_0x593215)[_0x76c8('0x18')](_0x6bb4df);}return null;};}function patchUpdates(_0x234ea5){return function(_0x4ee701){try{jsonpatch[_0x76c8('0x1f')](_0x4ee701,_0x234ea5,!![]);}catch(_0x38e630){return BPromise[_0x76c8('0x20')](_0x38e630);}return _0x4ee701['save']();};}function saveUpdates(_0x3fe21d,_0x276f2a){return function(_0x17e9b8){if(_0x17e9b8){return _0x17e9b8[_0x76c8('0x21')](_0x3fe21d)[_0x76c8('0x22')](function(_0x2fede3){return _0x2fede3;});}return null;};}function removeEntity(_0x5a193e,_0x5564d2){return function(_0x1c590c){if(_0x1c590c){return _0x1c590c[_0x76c8('0x23')]()[_0x76c8('0x22')](function(){_0x5a193e['status'](0xcc)[_0x76c8('0x24')]();});}};}function handleEntityNotFound(_0x29678a,_0x48e2e6){return function(_0x1d3d97){if(!_0x1d3d97){_0x29678a[_0x76c8('0x16')](0x194);}return _0x1d3d97;};}function handleError(_0x23fe16,_0x17dedd){_0x17dedd=_0x17dedd||0x1f4;return function(_0x4be671){logger[_0x76c8('0x25')](_0x4be671['stack']);if(_0x4be671[_0x76c8('0x26')]){delete _0x4be671[_0x76c8('0x26')];}_0x23fe16[_0x76c8('0x17')](_0x17dedd)[_0x76c8('0x27')](_0x4be671);};}exports['index']=function(_0x4d857b,_0x53a004){var _0x49ef8b={},_0x3d4cf6={},_0x20b682={'count':0x0,'rows':[]};var _0x1ffba5=_['map'](db[_0x76c8('0x28')][_0x76c8('0x29')],function(_0x45a146){return{'name':_0x45a146[_0x76c8('0x2a')],'type':_0x45a146[_0x76c8('0x2b')][_0x76c8('0x2c')]};});_0x3d4cf6['model']=_[_0x76c8('0x2d')](_0x1ffba5,_0x76c8('0x26'));_0x3d4cf6[_0x76c8('0x2e')]=_[_0x76c8('0x2f')](_0x4d857b['query']);_0x3d4cf6[_0x76c8('0x30')]=_[_0x76c8('0x31')](_0x3d4cf6[_0x76c8('0x32')],_0x3d4cf6['query']);_0x49ef8b['attributes']=_['intersection'](_0x3d4cf6[_0x76c8('0x32')],qs[_0x76c8('0x33')](_0x4d857b[_0x76c8('0x2e')][_0x76c8('0x33')]));_0x49ef8b[_0x76c8('0x34')]=_0x49ef8b[_0x76c8('0x34')]['length']?_0x49ef8b[_0x76c8('0x34')]:_0x3d4cf6['model'];if(!_0x4d857b[_0x76c8('0x2e')]['hasOwnProperty']('nolimit')){_0x49ef8b[_0x76c8('0x1b')]=qs[_0x76c8('0x1b')](_0x4d857b['query']['limit']);_0x49ef8b[_0x76c8('0x19')]=qs[_0x76c8('0x19')](_0x4d857b['query'][_0x76c8('0x19')]);}_0x49ef8b[_0x76c8('0x35')]=qs[_0x76c8('0x36')](_0x4d857b['query'][_0x76c8('0x36')]);_0x49ef8b[_0x76c8('0x37')]=qs[_0x76c8('0x30')](_[_0x76c8('0x38')](_0x4d857b['query'],_0x3d4cf6['filters']),_0x1ffba5);if(_0x4d857b[_0x76c8('0x2e')]['filter']){_0x49ef8b[_0x76c8('0x37')]=_[_0x76c8('0x39')](_0x49ef8b[_0x76c8('0x37')],{'$or':_['map'](_0x1ffba5,function(_0x418119){if(_0x418119[_0x76c8('0x2b')]!=='VIRTUAL'){var _0x307286={};_0x307286[_0x418119[_0x76c8('0x26')]]={'$like':'%'+_0x4d857b[_0x76c8('0x2e')][_0x76c8('0x3a')]+'%'};return _0x307286;}})});}_0x49ef8b=_[_0x76c8('0x39')]({},_0x49ef8b,_0x4d857b[_0x76c8('0x3b')]);var _0x20038b={'where':_0x49ef8b[_0x76c8('0x37')]};return db[_0x76c8('0x28')][_0x76c8('0x1c')](_0x20038b)['then'](function(_0x5e933d){_0x20b682[_0x76c8('0x1c')]=_0x5e933d;if(_0x4d857b[_0x76c8('0x2e')][_0x76c8('0x3c')]){_0x49ef8b[_0x76c8('0x3d')]=[{'all':!![]}];}return db['SquareRecording']['findAll'](_0x49ef8b);})[_0x76c8('0x22')](function(_0x3afff){_0x20b682['rows']=_0x3afff;return _0x20b682;})[_0x76c8('0x22')](respondWithFilteredResult(_0x53a004,_0x49ef8b))['catch'](handleError(_0x53a004,null));};exports[_0x76c8('0x3e')]=function(_0x21da44,_0x35b1a3){var _0x1de85b={'raw':!![],'where':{'id':_0x21da44[_0x76c8('0x3f')]['id']}},_0x30dd9b={};_0x30dd9b[_0x76c8('0x32')]=_['keys'](db[_0x76c8('0x28')][_0x76c8('0x29')]);_0x30dd9b[_0x76c8('0x2e')]=_['keys'](_0x21da44[_0x76c8('0x2e')]);_0x30dd9b[_0x76c8('0x30')]=_[_0x76c8('0x31')](_0x30dd9b[_0x76c8('0x32')],_0x30dd9b['query']);_0x1de85b[_0x76c8('0x34')]=_[_0x76c8('0x31')](_0x30dd9b[_0x76c8('0x32')],qs[_0x76c8('0x33')](_0x21da44[_0x76c8('0x2e')]['fields']));_0x1de85b[_0x76c8('0x34')]=_0x1de85b[_0x76c8('0x34')][_0x76c8('0x40')]?_0x1de85b['attributes']:_0x30dd9b[_0x76c8('0x32')];if(_0x21da44[_0x76c8('0x2e')][_0x76c8('0x3c')]){_0x1de85b[_0x76c8('0x3d')]=[{'all':!![]}];}_0x1de85b=_[_0x76c8('0x39')]({},_0x1de85b,_0x21da44['options']);return db[_0x76c8('0x28')]['find'](_0x1de85b)[_0x76c8('0x22')](handleEntityNotFound(_0x35b1a3,null))[_0x76c8('0x22')](respondWithResult(_0x35b1a3,null))[_0x76c8('0x41')](handleError(_0x35b1a3,null));};exports[_0x76c8('0x42')]=function(_0x52ff18,_0x34e70f){return db[_0x76c8('0x28')]['create'](_0x52ff18[_0x76c8('0x43')],{})[_0x76c8('0x22')](respondWithResult(_0x34e70f,0xc9))[_0x76c8('0x41')](handleError(_0x34e70f,null));};exports[_0x76c8('0x21')]=function(_0x3b6814,_0x5e9f97){if(_0x3b6814['body']['id']){delete _0x3b6814[_0x76c8('0x43')]['id'];}return db[_0x76c8('0x28')][_0x76c8('0x44')]({'where':{'id':_0x3b6814[_0x76c8('0x3f')]['id']}})['then'](handleEntityNotFound(_0x5e9f97,null))[_0x76c8('0x22')](saveUpdates(_0x3b6814[_0x76c8('0x43')],null))['then'](respondWithResult(_0x5e9f97,null))[_0x76c8('0x41')](handleError(_0x5e9f97,null));};exports['download']=function(_0x33a479,_0x5b4aec,_0x282abc){var _0x2cadd6=require(_0x76c8('0x45'));var _0x55dc37=![];var _0x3bdb5a={};if(_0x33a479['query'][_0x76c8('0x2b')]&&_0x33a479[_0x76c8('0x2e')][_0x76c8('0x2b')]==='uniqueid'){_0x3bdb5a['uniqueid']=_0x33a479['params']['id'];}else{_0x3bdb5a['id']=_0x33a479[_0x76c8('0x3f')]['id'];}return db[_0x76c8('0x28')]['find']({'where':_0x3bdb5a,'attributes':['id',_0x76c8('0x46'),'filename'],'raw':!![]})[_0x76c8('0x22')](handleEntityNotFound(_0x5b4aec,null))[_0x76c8('0x22')](function(_0x3f7d79){if(_0x3f7d79){var _0x4b3dba=_0x3f7d79[_0x76c8('0x46')];var _0x3caa92=util['format'](_0x76c8('0x47'),_0x4b3dba);if(fs[_0x76c8('0x48')](_0x3caa92)){_0x55dc37=!![];return _0x2cadd6[_0x76c8('0x49')](_0x3caa92,_0x4b3dba,config[_0x76c8('0x4a')][_0x76c8('0x4b')])[_0x76c8('0x22')](function(){return _0x3f7d79;});}return _0x3f7d79;}})[_0x76c8('0x22')](function(_0x3e41f6){if(_0x3e41f6){var _0x226230=_0x3e41f6[_0x76c8('0x46')];if(!fs[_0x76c8('0x48')](_0x226230)){throw new db[(_0x76c8('0x4c'))][(_0x76c8('0x4d'))](_0x76c8('0x4e'));}if(_0x3e41f6[_0x76c8('0x4f')]){return _0x5b4aec[_0x76c8('0x50')](_0x226230,_0x3e41f6[_0x76c8('0x4f')]+path['extname'](_0x226230),function(){if(_0x55dc37){fs[_0x76c8('0x51')](_0x226230);}});}else{return _0x5b4aec['download'](_0x226230,function(_0x375df6){if(_0x55dc37){fs[_0x76c8('0x51')](_0x226230);}});}}})[_0x76c8('0x41')](function(_0x433ebe){if(_0x433ebe[_0x76c8('0x52')]==='SquareRecording\x20not\x20found'){_0x5b4aec[_0x76c8('0x17')](0x194)['send'](_0x76c8('0x53'));}else{return handleError(_0x5b4aec,null);}});};exports[_0x76c8('0x23')]=function(_0x2177e9,_0x4d9118){return db[_0x76c8('0x28')][_0x76c8('0x44')]({'where':{'id':_0x2177e9['params']['id']}})['then'](function(_0x5effdd){if(_[_0x76c8('0x54')](_0x5effdd)){throw new ReferenceError(_0x76c8('0x55'));}return _0x5effdd;})['then'](function(_0x4f68b8){var _0x26fb9d=_0x4f68b8[_0x76c8('0x46')];logger[_0x76c8('0x56')]('cancellazione\x20fisica\x20documento\x20%s',_0x26fb9d);if(!_[_0x76c8('0x54')](_0x4f68b8['savePath'])&&fs[_0x76c8('0x48')](_0x26fb9d)){logger[_0x76c8('0x56')](_0x76c8('0x57')+_0x26fb9d+_0x76c8('0x58'));fs['unlinkSync'](_0x26fb9d);}_0x26fb9d=_0x26fb9d+_0x76c8('0x59');if(!_[_0x76c8('0x54')](_0x4f68b8['savePath'])&&fs[_0x76c8('0x48')](_0x26fb9d)){logger[_0x76c8('0x56')](_0x76c8('0x57')+_0x26fb9d+_0x76c8('0x58'));fs[_0x76c8('0x5a')](_0x26fb9d);}return _0x4f68b8;})[_0x76c8('0x22')](function(_0x1e549f){if(!_0x1e549f)throw new InternalError();return _0x1e549f['destroy']();})[_0x76c8('0x22')](function(){_0x4d9118[_0x76c8('0x17')](0xcc)['end']();})[_0x76c8('0x41')](handleError(_0x4d9118,null));};
\ No newline at end of file
+var _0x311d=['query','filters','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','update','download','uniqueid','savePath','filename','format','%s.cypher','existsSync','secrets','Sequelize','extname','unlink','message','SquareRecording\x20not\x20found','Not\x20found','isNil','info','cancellazione\x20fisica\x20documento\x20%s','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','File:\x20\x22','unlinkSync','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','index','map','SquareRecording','rawAttributes','type','key','keys'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x311d,0x14c));var _0xd311=function(_0x45bfa9,_0x394f33){_0x45bfa9=_0x45bfa9-0x0;var _0x1978b2=_0x311d[_0x45bfa9];return _0x1978b2;};'use strict';var emlformat=require(_0xd311('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd311('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd311('0x2'));var moment=require(_0xd311('0x3'));var BPromise=require(_0xd311('0x4'));var Mustache=require(_0xd311('0x5'));var util=require(_0xd311('0x6'));var path=require(_0xd311('0x7'));var sox=require('sox');var csv=require(_0xd311('0x8'));var ejs=require(_0xd311('0x9'));var fs=require('fs');var fs_extra=require(_0xd311('0xa'));var _=require(_0xd311('0xb'));var squel=require(_0xd311('0xc'));var crypto=require(_0xd311('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd311('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xd311('0xf'));var qs=require(_0xd311('0x10'));var as=require(_0xd311('0x11'));var hardwareService=require(_0xd311('0x12'));var logger=require('../../config/logger')('api');var utils=require(_0xd311('0x13'));var config=require(_0xd311('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0xd311('0x15'))['db'];function respondWithStatusCode(_0x5952da,_0x269698){_0x269698=_0x269698||0xcc;return function(_0x205d02){if(_0x205d02){return _0x5952da[_0xd311('0x16')](_0x269698);}return _0x5952da[_0xd311('0x17')](_0x269698)[_0xd311('0x18')]();};}function respondWithResult(_0x246f9b,_0x55c260){_0x55c260=_0x55c260||0xc8;return function(_0x229a9e){if(_0x229a9e){return _0x246f9b[_0xd311('0x17')](_0x55c260)[_0xd311('0x19')](_0x229a9e);}};}function respondWithFilteredResult(_0x4a6af4,_0x105a68){return function(_0x294ffa){if(_0x294ffa){var _0x1cdca4=typeof _0x105a68[_0xd311('0x1a')]==='undefined'&&typeof _0x105a68[_0xd311('0x1b')]===_0xd311('0x1c');var _0x286448=_0x294ffa[_0xd311('0x1d')];var _0x4cb8bc=_0x1cdca4?0x0:_0x105a68[_0xd311('0x1a')];var _0x4a20d4=_0x1cdca4?_0x294ffa[_0xd311('0x1d')]:_0x105a68[_0xd311('0x1a')]+_0x105a68[_0xd311('0x1b')];var _0x2c9a5b;if(_0x4a20d4>=_0x286448){_0x4a20d4=_0x286448;_0x2c9a5b=0xc8;}else{_0x2c9a5b=0xce;}_0x4a6af4[_0xd311('0x17')](_0x2c9a5b);return _0x4a6af4[_0xd311('0x1e')](_0xd311('0x1f'),_0x4cb8bc+'-'+_0x4a20d4+'/'+_0x286448)[_0xd311('0x19')](_0x294ffa);}return null;};}function patchUpdates(_0x230ab0){return function(_0x47aeb6){try{jsonpatch[_0xd311('0x20')](_0x47aeb6,_0x230ab0,!![]);}catch(_0x311158){return BPromise[_0xd311('0x21')](_0x311158);}return _0x47aeb6[_0xd311('0x22')]();};}function saveUpdates(_0x5f1fe5,_0x2f5eb6){return function(_0x2e6ad4){if(_0x2e6ad4){return _0x2e6ad4['update'](_0x5f1fe5)[_0xd311('0x23')](function(_0x2e15e7){return _0x2e15e7;});}return null;};}function removeEntity(_0x1c676e,_0x5bc588){return function(_0x5a6b1c){if(_0x5a6b1c){return _0x5a6b1c[_0xd311('0x24')]()[_0xd311('0x23')](function(){_0x1c676e['status'](0xcc)[_0xd311('0x18')]();});}};}function handleEntityNotFound(_0x26d396,_0x2746b4){return function(_0x1cf5d2){if(!_0x1cf5d2){_0x26d396[_0xd311('0x16')](0x194);}return _0x1cf5d2;};}function handleError(_0x133d88,_0x2940d6){_0x2940d6=_0x2940d6||0x1f4;return function(_0x28ee45){logger[_0xd311('0x25')](_0x28ee45[_0xd311('0x26')]);if(_0x28ee45[_0xd311('0x27')]){delete _0x28ee45[_0xd311('0x27')];}_0x133d88[_0xd311('0x17')](_0x2940d6)[_0xd311('0x28')](_0x28ee45);};}exports[_0xd311('0x29')]=function(_0x2cc38d,_0x516fda){var _0x4da5f8={},_0x3677a8={},_0x4ba41d={'count':0x0,'rows':[]};var _0x29aecc=_[_0xd311('0x2a')](db[_0xd311('0x2b')][_0xd311('0x2c')],function(_0x5bdb2d){return{'name':_0x5bdb2d['fieldName'],'type':_0x5bdb2d[_0xd311('0x2d')][_0xd311('0x2e')]};});_0x3677a8['model']=_[_0xd311('0x2a')](_0x29aecc,_0xd311('0x27'));_0x3677a8['query']=_[_0xd311('0x2f')](_0x2cc38d[_0xd311('0x30')]);_0x3677a8[_0xd311('0x31')]=_[_0xd311('0x32')](_0x3677a8[_0xd311('0x33')],_0x3677a8[_0xd311('0x30')]);_0x4da5f8['attributes']=_[_0xd311('0x32')](_0x3677a8[_0xd311('0x33')],qs[_0xd311('0x34')](_0x2cc38d['query'][_0xd311('0x34')]));_0x4da5f8[_0xd311('0x35')]=_0x4da5f8[_0xd311('0x35')][_0xd311('0x36')]?_0x4da5f8[_0xd311('0x35')]:_0x3677a8[_0xd311('0x33')];if(!_0x2cc38d[_0xd311('0x30')][_0xd311('0x37')]('nolimit')){_0x4da5f8[_0xd311('0x1b')]=qs['limit'](_0x2cc38d[_0xd311('0x30')][_0xd311('0x1b')]);_0x4da5f8[_0xd311('0x1a')]=qs['offset'](_0x2cc38d[_0xd311('0x30')]['offset']);}_0x4da5f8[_0xd311('0x38')]=qs[_0xd311('0x39')](_0x2cc38d[_0xd311('0x30')]['sort']);_0x4da5f8['where']=qs[_0xd311('0x31')](_['pick'](_0x2cc38d[_0xd311('0x30')],_0x3677a8['filters']),_0x29aecc);if(_0x2cc38d[_0xd311('0x30')]['filter']){_0x4da5f8[_0xd311('0x3a')]=_[_0xd311('0x3b')](_0x4da5f8['where'],{'$or':_[_0xd311('0x2a')](_0x29aecc,function(_0x25781e){if(_0x25781e[_0xd311('0x2d')]!==_0xd311('0x3c')){var _0x3f5da3={};_0x3f5da3[_0x25781e[_0xd311('0x27')]]={'$like':'%'+_0x2cc38d[_0xd311('0x30')][_0xd311('0x3d')]+'%'};return _0x3f5da3;}})});}_0x4da5f8=_[_0xd311('0x3b')]({},_0x4da5f8,_0x2cc38d[_0xd311('0x3e')]);var _0x5060f4={'where':_0x4da5f8[_0xd311('0x3a')]};return db[_0xd311('0x2b')][_0xd311('0x1d')](_0x5060f4)[_0xd311('0x23')](function(_0x45350e){_0x4ba41d[_0xd311('0x1d')]=_0x45350e;if(_0x2cc38d[_0xd311('0x30')][_0xd311('0x3f')]){_0x4da5f8[_0xd311('0x40')]=[{'all':!![]}];}return db[_0xd311('0x2b')][_0xd311('0x41')](_0x4da5f8);})['then'](function(_0x43c889){_0x4ba41d[_0xd311('0x42')]=_0x43c889;return _0x4ba41d;})[_0xd311('0x23')](respondWithFilteredResult(_0x516fda,_0x4da5f8))['catch'](handleError(_0x516fda,null));};exports[_0xd311('0x43')]=function(_0x59af9f,_0x51ffd3){var _0xa49216={'raw':!![],'where':{'id':_0x59af9f[_0xd311('0x44')]['id']}},_0x38d2a4={};_0x38d2a4[_0xd311('0x33')]=_[_0xd311('0x2f')](db[_0xd311('0x2b')][_0xd311('0x2c')]);_0x38d2a4[_0xd311('0x30')]=_[_0xd311('0x2f')](_0x59af9f[_0xd311('0x30')]);_0x38d2a4[_0xd311('0x31')]=_['intersection'](_0x38d2a4[_0xd311('0x33')],_0x38d2a4[_0xd311('0x30')]);_0xa49216[_0xd311('0x35')]=_[_0xd311('0x32')](_0x38d2a4[_0xd311('0x33')],qs[_0xd311('0x34')](_0x59af9f[_0xd311('0x30')][_0xd311('0x34')]));_0xa49216[_0xd311('0x35')]=_0xa49216['attributes'][_0xd311('0x36')]?_0xa49216[_0xd311('0x35')]:_0x38d2a4['model'];if(_0x59af9f[_0xd311('0x30')][_0xd311('0x3f')]){_0xa49216[_0xd311('0x40')]=[{'all':!![]}];}_0xa49216=_[_0xd311('0x3b')]({},_0xa49216,_0x59af9f[_0xd311('0x3e')]);return db['SquareRecording'][_0xd311('0x45')](_0xa49216)[_0xd311('0x23')](handleEntityNotFound(_0x51ffd3,null))['then'](respondWithResult(_0x51ffd3,null))[_0xd311('0x46')](handleError(_0x51ffd3,null));};exports[_0xd311('0x47')]=function(_0x11ef13,_0x1f3cb8){return db[_0xd311('0x2b')][_0xd311('0x47')](_0x11ef13[_0xd311('0x48')],{})[_0xd311('0x23')](respondWithResult(_0x1f3cb8,0xc9))['catch'](handleError(_0x1f3cb8,null));};exports[_0xd311('0x49')]=function(_0x3e2c05,_0x26fcb9){if(_0x3e2c05['body']['id']){delete _0x3e2c05['body']['id'];}return db[_0xd311('0x2b')][_0xd311('0x45')]({'where':{'id':_0x3e2c05['params']['id']}})[_0xd311('0x23')](handleEntityNotFound(_0x26fcb9,null))[_0xd311('0x23')](saveUpdates(_0x3e2c05[_0xd311('0x48')],null))['then'](respondWithResult(_0x26fcb9,null))[_0xd311('0x46')](handleError(_0x26fcb9,null));};exports[_0xd311('0x4a')]=function(_0x533b04,_0x5e0faa,_0x1eff26){var _0x1abb4b=require('../../components/encryptor');var _0xd9bb0e=![];var _0x160350={};if(_0x533b04[_0xd311('0x30')][_0xd311('0x2d')]&&_0x533b04['query']['type']==='uniqueid'){_0x160350[_0xd311('0x4b')]=_0x533b04[_0xd311('0x44')]['id'];}else{_0x160350['id']=_0x533b04[_0xd311('0x44')]['id'];}return db[_0xd311('0x2b')][_0xd311('0x45')]({'where':_0x160350,'attributes':['id',_0xd311('0x4c'),_0xd311('0x4d')],'raw':!![]})[_0xd311('0x23')](handleEntityNotFound(_0x5e0faa,null))[_0xd311('0x23')](function(_0x48c7b0){if(_0x48c7b0){var _0x34b10b=_0x48c7b0[_0xd311('0x4c')];var _0x1339d7=util[_0xd311('0x4e')](_0xd311('0x4f'),_0x34b10b);if(fs[_0xd311('0x50')](_0x1339d7)){_0xd9bb0e=!![];return _0x1abb4b['decryptFile'](_0x1339d7,_0x34b10b,config[_0xd311('0x51')]['recording'])[_0xd311('0x23')](function(){return _0x48c7b0;});}return _0x48c7b0;}})['then'](function(_0x48b5a2){if(_0x48b5a2){var _0x3bec98=_0x48b5a2[_0xd311('0x4c')];if(!fs[_0xd311('0x50')](_0x3bec98)){throw new db[(_0xd311('0x52'))]['ValidationError']('SquareRecording\x20not\x20found');}if(_0x48b5a2[_0xd311('0x4d')]){return _0x5e0faa['download'](_0x3bec98,_0x48b5a2['filename']+path[_0xd311('0x53')](_0x3bec98),function(){if(_0xd9bb0e){fs[_0xd311('0x54')](_0x3bec98);}});}else{return _0x5e0faa[_0xd311('0x4a')](_0x3bec98,function(_0x174503){if(_0xd9bb0e){fs['unlink'](_0x3bec98);}});}}})[_0xd311('0x46')](function(_0x5aa5ac){if(_0x5aa5ac[_0xd311('0x55')]===_0xd311('0x56')){_0x5e0faa[_0xd311('0x17')](0x194)[_0xd311('0x28')](_0xd311('0x57'));}else{return handleError(_0x5e0faa,null);}});};exports[_0xd311('0x24')]=function(_0x520149,_0x4a97b3){return db['SquareRecording'][_0xd311('0x45')]({'where':{'id':_0x520149['params']['id']}})[_0xd311('0x23')](function(_0x45c952){if(_[_0xd311('0x58')](_0x45c952)){throw new ReferenceError('Entity\x20not\x20found');}return _0x45c952;})[_0xd311('0x23')](function(_0x410bb6){var _0x3f958b=_0x410bb6['savePath'];logger[_0xd311('0x59')](_0xd311('0x5a'),_0x3f958b);if(!_[_0xd311('0x58')](_0x410bb6[_0xd311('0x4c')])&&fs[_0xd311('0x50')](_0x3f958b)){logger[_0xd311('0x59')]('File:\x20\x22'+_0x3f958b+_0xd311('0x5b'));fs['unlinkSync'](_0x3f958b);}_0x3f958b=_0x3f958b+_0xd311('0x5c');if(!_[_0xd311('0x58')](_0x410bb6[_0xd311('0x4c')])&&fs[_0xd311('0x50')](_0x3f958b)){logger[_0xd311('0x59')](_0xd311('0x5d')+_0x3f958b+_0xd311('0x5b'));fs[_0xd311('0x5e')](_0x3f958b);}return _0x410bb6;})[_0xd311('0x23')](function(_0x4aa73f){if(!_0x4aa73f)throw new InternalError();return _0x4aa73f['destroy']();})[_0xd311('0x23')](function(){_0x4a97b3[_0xd311('0x17')](0xcc)[_0xd311('0x18')]();})[_0xd311('0x46')](handleError(_0x4a97b3,null));};
\ No newline at end of file
index 4925cb8..f758231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9666=['./squareRecording.attributes','exports','define','SquareRecording','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x5f0089,_0x227e2c){var _0x193892=function(_0x24051f){while(--_0x24051f){_0x5f0089['push'](_0x5f0089['shift']());}};_0x193892(++_0x227e2c);}(_0x9666,0x17a));var _0x6966=function(_0xdfe41,_0x472a37){_0xdfe41=_0xdfe41-0x0;var _0x4d1c76=_0x9666[_0xdfe41];return _0x4d1c76;};'use strict';var _=require(_0x6966('0x0'));var util=require(_0x6966('0x1'));var logger=require(_0x6966('0x2'))(_0x6966('0x3'));var moment=require('moment');var BPromise=require(_0x6966('0x4'));var rp=require(_0x6966('0x5'));var fs=require('fs');var path=require(_0x6966('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x6966('0x7'));module[_0x6966('0x8')]=function(_0x7194a6,_0x17198b){return _0x7194a6[_0x6966('0x9')](_0x6966('0xa'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4fb4=['./squareRecording.attributes','exports','define','SquareRecording','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x4fb4,0x190));var _0x44fb=function(_0x1a773a,_0x3c5038){_0x1a773a=_0x1a773a-0x0;var _0x27480a=_0x4fb4[_0x1a773a];return _0x27480a;};'use strict';var _=require('lodash');var util=require(_0x44fb('0x0'));var logger=require(_0x44fb('0x1'))(_0x44fb('0x2'));var moment=require(_0x44fb('0x3'));var BPromise=require(_0x44fb('0x4'));var rp=require(_0x44fb('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x44fb('0x6'));var config=require(_0x44fb('0x7'));var attributes=require(_0x44fb('0x8'));module[_0x44fb('0x9')]=function(_0x375d33,_0x173e70){return _0x375d33[_0x44fb('0xa')](_0x44fb('0xb'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f48263e..7aed99b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d17=['SquareRecording,\x20%s,\x20%s,\x20%s','stringify','code','error','message','catch','CreateSquareRecording','body','options','lodash','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x379947,_0x5bbded){var _0x325d45=function(_0x16b2c6){while(--_0x16b2c6){_0x379947['push'](_0x379947['shift']());}};_0x325d45(++_0x5bbded);}(_0x3d17,0x99));var _0x73d1=function(_0x5e2152,_0x172f3d){_0x5e2152=_0x5e2152-0x0;var _0x5ddcf6=_0x3d17[_0x5e2152];return _0x5ddcf6;};'use strict';var _=require(_0x73d1('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x73d1('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x73d1('0x2'));var logger=require(_0x73d1('0x3'))(_0x73d1('0x4'));var config=require(_0x73d1('0x5'));var jayson=require(_0x73d1('0x6'));var client=jayson[_0x73d1('0x7')][_0x73d1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5339f5,_0xa60278,_0x1459b7){return new BPromise(function(_0x78ced4,_0x1f7ba6){return client[_0x73d1('0x9')](_0x5339f5,_0x1459b7)[_0x73d1('0xa')](function(_0x5ae635){logger[_0x73d1('0xb')](_0x73d1('0xc'),_0xa60278,_0x73d1('0xd'));logger[_0x73d1('0xe')](_0x73d1('0xf'),_0xa60278,_0x73d1('0xd'),JSON[_0x73d1('0x10')](_0x5ae635));if(_0x5ae635['error']){if(_0x5ae635['error'][_0x73d1('0x11')]===0x1f4){logger[_0x73d1('0x12')]('SquareRecording,\x20%s,\x20%s',_0xa60278,_0x5ae635[_0x73d1('0x12')][_0x73d1('0x13')]);return _0x1f7ba6(_0x5ae635[_0x73d1('0x12')][_0x73d1('0x13')]);}logger[_0x73d1('0x12')](_0x73d1('0xc'),_0xa60278,_0x5ae635['error']['message']);return _0x78ced4(_0x5ae635[_0x73d1('0x12')][_0x73d1('0x13')]);}else{logger[_0x73d1('0xb')]('SquareRecording,\x20%s,\x20%s',_0xa60278,_0x73d1('0xd'));_0x78ced4(_0x5ae635['result']['message']);}})[_0x73d1('0x14')](function(_0x32da06){logger[_0x73d1('0x12')](_0x73d1('0xc'),_0xa60278,_0x32da06);_0x1f7ba6(_0x32da06);});});}exports[_0x73d1('0x15')]=function(_0x43454b){var _0x3305ab=this;return new Promise(function(_0x171bad,_0x4c880b){return db['SquareRecording']['create'](_0x43454b[_0x73d1('0x16')],{'raw':_0x43454b['options']?_0x43454b[_0x73d1('0x17')]['raw']===undefined?!![]:![]:!![]})[_0x73d1('0xa')](function(_0x513067){logger[_0x73d1('0xb')](_0x73d1('0x15'),_0x43454b);logger['debug'](_0x73d1('0x15'),_0x43454b,JSON[_0x73d1('0x10')](_0x513067));_0x171bad(_0x513067);})[_0x73d1('0x14')](function(_0x10df7b){logger['error']('CreateSquareRecording',_0x10df7b[_0x73d1('0x13')],_0x43454b);_0x4c880b(_0x3305ab[_0x73d1('0x12')](0x1f4,_0x10df7b[_0x73d1('0x13')]));});});};
\ No newline at end of file
+var _0xd8d3=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','SquareRecording,\x20%s,\x20%s','debug','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','CreateSquareRecording','create','body'];(function(_0x15adfe,_0x722fe7){var _0x5bc985=function(_0x5470a2){while(--_0x5470a2){_0x15adfe['push'](_0x15adfe['shift']());}};_0x5bc985(++_0x722fe7);}(_0xd8d3,0x8d));var _0x3d8d=function(_0x20f46e,_0x338db5){_0x20f46e=_0x20f46e-0x0;var _0x227ea7=_0xd8d3[_0x20f46e];return _0x227ea7;};'use strict';var _=require(_0x3d8d('0x0'));var util=require(_0x3d8d('0x1'));var moment=require(_0x3d8d('0x2'));var BPromise=require('bluebird');var rs=require(_0x3d8d('0x3'));var fs=require('fs');var Redis=require(_0x3d8d('0x4'));var db=require(_0x3d8d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3d8d('0x6'))(_0x3d8d('0x7'));var config=require(_0x3d8d('0x8'));var jayson=require(_0x3d8d('0x9'));var client=jayson[_0x3d8d('0xa')][_0x3d8d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3c5e48,_0x489a54,_0x1a9a1e){return new BPromise(function(_0x25fd99,_0x582076){return client[_0x3d8d('0xc')](_0x3c5e48,_0x1a9a1e)[_0x3d8d('0xd')](function(_0x272e1c){logger['info'](_0x3d8d('0xe'),_0x489a54,'request\x20sent');logger[_0x3d8d('0xf')](_0x3d8d('0x10'),_0x489a54,_0x3d8d('0x11'),JSON[_0x3d8d('0x12')](_0x272e1c));if(_0x272e1c[_0x3d8d('0x13')]){if(_0x272e1c[_0x3d8d('0x13')][_0x3d8d('0x14')]===0x1f4){logger['error'](_0x3d8d('0xe'),_0x489a54,_0x272e1c[_0x3d8d('0x13')][_0x3d8d('0x15')]);return _0x582076(_0x272e1c[_0x3d8d('0x13')]['message']);}logger[_0x3d8d('0x13')]('SquareRecording,\x20%s,\x20%s',_0x489a54,_0x272e1c[_0x3d8d('0x13')]['message']);return _0x25fd99(_0x272e1c[_0x3d8d('0x13')]['message']);}else{logger[_0x3d8d('0x16')](_0x3d8d('0xe'),_0x489a54,_0x3d8d('0x11'));_0x25fd99(_0x272e1c[_0x3d8d('0x17')][_0x3d8d('0x15')]);}})['catch'](function(_0x35ec40){logger['error'](_0x3d8d('0xe'),_0x489a54,_0x35ec40);_0x582076(_0x35ec40);});});}exports[_0x3d8d('0x18')]=function(_0x4d1903){var _0x1b9ca7=this;return new Promise(function(_0x4ba953,_0x314610){return db['SquareRecording'][_0x3d8d('0x19')](_0x4d1903[_0x3d8d('0x1a')],{'raw':_0x4d1903['options']?_0x4d1903['options']['raw']===undefined?!![]:![]:!![]})[_0x3d8d('0xd')](function(_0x4133a1){logger['info'](_0x3d8d('0x18'),_0x4d1903);logger[_0x3d8d('0xf')](_0x3d8d('0x18'),_0x4d1903,JSON[_0x3d8d('0x12')](_0x4133a1));_0x4ba953(_0x4133a1);})[_0x3d8d('0x1b')](function(_0x40c00b){logger[_0x3d8d('0x13')](_0x3d8d('0x18'),_0x40c00b[_0x3d8d('0x15')],_0x4d1903);_0x314610(_0x1b9ca7['error'](0x1f4,_0x40c00b[_0x3d8d('0x15')]));});});};
\ No newline at end of file
index a66b0fd..a66e666 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x217c2e,_0x358f06){var _0x22b7d8=function(_0x111c48){while(--_0x111c48){_0x217c2e['push'](_0x217c2e['shift']());}};_0x22b7d8(++_0x358f06);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3a6efd,_0x2a5102){_0x3a6efd=_0x3a6efd-0x0;var _0x487b9a=_0xa9e0[_0x3a6efd];return _0x487b9a;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['describe']);router[_0x0a9e('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0xc')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')](_0x0a9e('0x10'),auth['isAuthenticated'](),controller['update']);router['delete']('/:id',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);module[_0x0a9e('0x12')]=router;
\ No newline at end of file
index 222a7d1..bcff7cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71f4=['sequelize','exports','STRING','DATE','BOOLEAN'];(function(_0x15d36a,_0x378e01){var _0x684f7a=function(_0x1d1cc1){while(--_0x1d1cc1){_0x15d36a['push'](_0x15d36a['shift']());}};_0x684f7a(++_0x378e01);}(_0x71f4,0x1e5));var _0x471f=function(_0x4ece23,_0x2eb4ee){_0x4ece23=_0x4ece23-0x0;var _0x36aeb3=_0x71f4[_0x4ece23];return _0x36aeb3;};'use strict';var Sequelize=require(_0x471f('0x0'));module[_0x471f('0x1')]={'network':{'type':Sequelize[_0x471f('0x2')]},'network_script':{'type':Sequelize[_0x471f('0x2')]},'request':{'type':Sequelize[_0x471f('0x2')]},'channel':{'type':Sequelize[_0x471f('0x2')]},'language':{'type':Sequelize[_0x471f('0x2')]},'type':{'type':Sequelize[_0x471f('0x2')]},'uniqueid':{'type':Sequelize[_0x471f('0x2')]},'version':{'type':Sequelize[_0x471f('0x2')]},'callerid':{'type':Sequelize[_0x471f('0x2')]},'calleridname':{'type':Sequelize[_0x471f('0x2')]},'callingpres':{'type':Sequelize[_0x471f('0x2')]},'callingani2':{'type':Sequelize[_0x471f('0x2')]},'callington':{'type':Sequelize[_0x471f('0x2')]},'callingtns':{'type':Sequelize[_0x471f('0x2')]},'dnid':{'type':Sequelize[_0x471f('0x2')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x471f('0x2')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x471f('0x2')]},'enhanced':{'type':Sequelize[_0x471f('0x2')]},'accountcode':{'type':Sequelize['STRING']},'threadid':{'type':Sequelize[_0x471f('0x2')]},'project_name':{'type':Sequelize[_0x471f('0x2')]},'joinAt':{'type':Sequelize[_0x471f('0x3')]},'leaveAt':{'type':Sequelize[_0x471f('0x3')]},'bot':{'type':Sequelize[_0x471f('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0xc047=['DATE','BOOLEAN','exports','STRING'];(function(_0x5815af,_0x361f0b){var _0x3f14cb=function(_0x422c47){while(--_0x422c47){_0x5815af['push'](_0x5815af['shift']());}};_0x3f14cb(++_0x361f0b);}(_0xc047,0x152));var _0x7c04=function(_0x2cf913,_0x1873bd){_0x2cf913=_0x2cf913-0x0;var _0x3b946c=_0xc047[_0x2cf913];return _0x3b946c;};'use strict';var Sequelize=require('sequelize');module[_0x7c04('0x0')]={'network':{'type':Sequelize[_0x7c04('0x1')]},'network_script':{'type':Sequelize[_0x7c04('0x1')]},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x7c04('0x1')]},'language':{'type':Sequelize[_0x7c04('0x1')]},'type':{'type':Sequelize[_0x7c04('0x1')]},'uniqueid':{'type':Sequelize[_0x7c04('0x1')]},'version':{'type':Sequelize[_0x7c04('0x1')]},'callerid':{'type':Sequelize[_0x7c04('0x1')]},'calleridname':{'type':Sequelize[_0x7c04('0x1')]},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x7c04('0x1')]},'callington':{'type':Sequelize[_0x7c04('0x1')]},'callingtns':{'type':Sequelize[_0x7c04('0x1')]},'dnid':{'type':Sequelize[_0x7c04('0x1')]},'rdnis':{'type':Sequelize[_0x7c04('0x1')]},'context':{'type':Sequelize[_0x7c04('0x1')]},'extension':{'type':Sequelize['STRING']},'priority':{'type':Sequelize[_0x7c04('0x1')]},'enhanced':{'type':Sequelize[_0x7c04('0x1')]},'accountcode':{'type':Sequelize[_0x7c04('0x1')]},'threadid':{'type':Sequelize['STRING']},'project_name':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7c04('0x2')]},'bot':{'type':Sequelize[_0x7c04('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 99e20a8..1744a0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f13=['filter','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','rawAttributes','length','include','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','map','SquareReport','fieldName','query','keys','filters','intersection','model','fields','attributes','nolimit','order','sort','where','pick'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x4f13,0x146));var _0x34f1=function(_0x511bf0,_0x193086){_0x511bf0=_0x511bf0-0x0;var _0x53513c=_0x4f13[_0x511bf0];return _0x53513c;};'use strict';var emlformat=require(_0x34f1('0x0'));var rimraf=require(_0x34f1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x34f1('0x2'));var rp=require(_0x34f1('0x3'));var moment=require(_0x34f1('0x4'));var BPromise=require(_0x34f1('0x5'));var Mustache=require(_0x34f1('0x6'));var util=require('util');var path=require('path');var sox=require(_0x34f1('0x7'));var csv=require('to-csv');var ejs=require(_0x34f1('0x8'));var fs=require('fs');var fs_extra=require(_0x34f1('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x34f1('0xa'));var jsforce=require(_0x34f1('0xb'));var deskjs=require(_0x34f1('0xc'));var toCsv=require(_0x34f1('0xd'));var querystring=require(_0x34f1('0xe'));var Papa=require(_0x34f1('0xf'));var Redis=require('ioredis');var authService=require(_0x34f1('0x10'));var qs=require(_0x34f1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x34f1('0x12'));var logger=require(_0x34f1('0x13'))(_0x34f1('0x14'));var utils=require(_0x34f1('0x15'));var config=require(_0x34f1('0x16'));var licenseUtil=require(_0x34f1('0x17'));var db=require(_0x34f1('0x18'))['db'];function respondWithStatusCode(_0x1daa37,_0xbb4d3f){_0xbb4d3f=_0xbb4d3f||0xcc;return function(_0xeb3def){if(_0xeb3def){return _0x1daa37[_0x34f1('0x19')](_0xbb4d3f);}return _0x1daa37[_0x34f1('0x1a')](_0xbb4d3f)[_0x34f1('0x1b')]();};}function respondWithResult(_0x598fa3,_0x3bea60){_0x3bea60=_0x3bea60||0xc8;return function(_0x1dad77){if(_0x1dad77){return _0x598fa3[_0x34f1('0x1a')](_0x3bea60)[_0x34f1('0x1c')](_0x1dad77);}};}function respondWithFilteredResult(_0x234830,_0x43fb4c){return function(_0xd6b40b){if(_0xd6b40b){var _0x10060c=typeof _0x43fb4c[_0x34f1('0x1d')]===_0x34f1('0x1e')&&typeof _0x43fb4c['limit']===_0x34f1('0x1e');var _0x34fe12=_0xd6b40b[_0x34f1('0x1f')];var _0x222ab8=_0x10060c?0x0:_0x43fb4c[_0x34f1('0x1d')];var _0x133d60=_0x10060c?_0xd6b40b[_0x34f1('0x1f')]:_0x43fb4c[_0x34f1('0x1d')]+_0x43fb4c[_0x34f1('0x20')];var _0x599154;if(_0x133d60>=_0x34fe12){_0x133d60=_0x34fe12;_0x599154=0xc8;}else{_0x599154=0xce;}_0x234830[_0x34f1('0x1a')](_0x599154);return _0x234830[_0x34f1('0x21')](_0x34f1('0x22'),_0x222ab8+'-'+_0x133d60+'/'+_0x34fe12)[_0x34f1('0x1c')](_0xd6b40b);}return null;};}function patchUpdates(_0xcff29){return function(_0x135ef4){try{jsonpatch[_0x34f1('0x23')](_0x135ef4,_0xcff29,!![]);}catch(_0x35122b){return BPromise['reject'](_0x35122b);}return _0x135ef4['save']();};}function saveUpdates(_0x1326b2,_0x1e8290){return function(_0x4cc8eb){if(_0x4cc8eb){return _0x4cc8eb[_0x34f1('0x24')](_0x1326b2)[_0x34f1('0x25')](function(_0x937e15){return _0x937e15;});}return null;};}function removeEntity(_0x18b10d,_0x32acf7){return function(_0x377104){if(_0x377104){return _0x377104[_0x34f1('0x26')]()[_0x34f1('0x25')](function(){_0x18b10d['status'](0xcc)[_0x34f1('0x1b')]();});}};}function handleEntityNotFound(_0x2f81a7,_0x5eb855){return function(_0x192ec9){if(!_0x192ec9){_0x2f81a7[_0x34f1('0x19')](0x194);}return _0x192ec9;};}function handleError(_0x377b72,_0x3ae986){_0x3ae986=_0x3ae986||0x1f4;return function(_0x4f2b4d){logger[_0x34f1('0x27')](_0x4f2b4d[_0x34f1('0x28')]);if(_0x4f2b4d[_0x34f1('0x29')]){delete _0x4f2b4d['name'];}_0x377b72['status'](_0x3ae986)[_0x34f1('0x2a')](_0x4f2b4d);};}exports[_0x34f1('0x2b')]=function(_0x31e2fc,_0x2da0be){var _0x49bb85={},_0xa0f827={},_0xa8eafa={'count':0x0,'rows':[]};var _0x28ea78=_[_0x34f1('0x2c')](db[_0x34f1('0x2d')]['rawAttributes'],function(_0x13a921){return{'name':_0x13a921[_0x34f1('0x2e')],'type':_0x13a921['type']['key']};});_0xa0f827['model']=_[_0x34f1('0x2c')](_0x28ea78,'name');_0xa0f827[_0x34f1('0x2f')]=_[_0x34f1('0x30')](_0x31e2fc['query']);_0xa0f827[_0x34f1('0x31')]=_[_0x34f1('0x32')](_0xa0f827['model'],_0xa0f827[_0x34f1('0x2f')]);_0x49bb85['attributes']=_[_0x34f1('0x32')](_0xa0f827[_0x34f1('0x33')],qs['fields'](_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x34')]));_0x49bb85[_0x34f1('0x35')]=_0x49bb85[_0x34f1('0x35')]['length']?_0x49bb85['attributes']:_0xa0f827[_0x34f1('0x33')];if(!_0x31e2fc[_0x34f1('0x2f')]['hasOwnProperty'](_0x34f1('0x36'))){_0x49bb85[_0x34f1('0x20')]=qs[_0x34f1('0x20')](_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x20')]);_0x49bb85['offset']=qs[_0x34f1('0x1d')](_0x31e2fc[_0x34f1('0x2f')]['offset']);}_0x49bb85[_0x34f1('0x37')]=qs[_0x34f1('0x38')](_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x38')]);_0x49bb85[_0x34f1('0x39')]=qs[_0x34f1('0x31')](_[_0x34f1('0x3a')](_0x31e2fc[_0x34f1('0x2f')],_0xa0f827['filters']),_0x28ea78);if(_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x3b')]){_0x49bb85[_0x34f1('0x39')]=_[_0x34f1('0x3c')](_0x49bb85[_0x34f1('0x39')],{'$or':_[_0x34f1('0x2c')](_0x28ea78,function(_0x2bd049){if(_0x2bd049[_0x34f1('0x3d')]!==_0x34f1('0x3e')){var _0x369de0={};_0x369de0[_0x2bd049[_0x34f1('0x29')]]={'$like':'%'+_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x3b')]+'%'};return _0x369de0;}})});}_0x49bb85=_[_0x34f1('0x3c')]({},_0x49bb85,_0x31e2fc[_0x34f1('0x3f')]);var _0x374b97={'where':_0x49bb85[_0x34f1('0x39')]};return db[_0x34f1('0x2d')][_0x34f1('0x1f')](_0x374b97)['then'](function(_0x36794e){_0xa8eafa[_0x34f1('0x1f')]=_0x36794e;if(_0x31e2fc[_0x34f1('0x2f')][_0x34f1('0x40')]){_0x49bb85['include']=[{'all':!![]}];}return db[_0x34f1('0x2d')][_0x34f1('0x41')](_0x49bb85);})[_0x34f1('0x25')](function(_0x3a0f9f){_0xa8eafa[_0x34f1('0x42')]=_0x3a0f9f;return _0xa8eafa;})[_0x34f1('0x25')](respondWithFilteredResult(_0x2da0be,_0x49bb85))[_0x34f1('0x43')](handleError(_0x2da0be,null));};exports[_0x34f1('0x44')]=function(_0x4d0b2e,_0x542159){var _0x5d9df6={'raw':!![],'where':{'id':_0x4d0b2e['params']['id']}},_0x1df8f5={};_0x1df8f5[_0x34f1('0x33')]=_['keys'](db[_0x34f1('0x2d')][_0x34f1('0x45')]);_0x1df8f5[_0x34f1('0x2f')]=_[_0x34f1('0x30')](_0x4d0b2e[_0x34f1('0x2f')]);_0x1df8f5[_0x34f1('0x31')]=_[_0x34f1('0x32')](_0x1df8f5['model'],_0x1df8f5[_0x34f1('0x2f')]);_0x5d9df6['attributes']=_[_0x34f1('0x32')](_0x1df8f5[_0x34f1('0x33')],qs[_0x34f1('0x34')](_0x4d0b2e['query'][_0x34f1('0x34')]));_0x5d9df6[_0x34f1('0x35')]=_0x5d9df6[_0x34f1('0x35')][_0x34f1('0x46')]?_0x5d9df6[_0x34f1('0x35')]:_0x1df8f5[_0x34f1('0x33')];if(_0x4d0b2e['query'][_0x34f1('0x40')]){_0x5d9df6[_0x34f1('0x47')]=[{'all':!![]}];}_0x5d9df6=_['merge']({},_0x5d9df6,_0x4d0b2e[_0x34f1('0x3f')]);return db[_0x34f1('0x2d')][_0x34f1('0x48')](_0x5d9df6)[_0x34f1('0x25')](handleEntityNotFound(_0x542159,null))['then'](respondWithResult(_0x542159,null))[_0x34f1('0x43')](handleError(_0x542159,null));};exports['create']=function(_0x2f624a,_0x15835f){return db['SquareReport'][_0x34f1('0x49')](_0x2f624a['body'],{})[_0x34f1('0x25')](respondWithResult(_0x15835f,0xc9))[_0x34f1('0x43')](handleError(_0x15835f,null));};exports['update']=function(_0x12868d,_0x5d301d){if(_0x12868d[_0x34f1('0x4a')]['id']){delete _0x12868d[_0x34f1('0x4a')]['id'];}return db[_0x34f1('0x2d')][_0x34f1('0x48')]({'where':{'id':_0x12868d[_0x34f1('0x4b')]['id']}})[_0x34f1('0x25')](handleEntityNotFound(_0x5d301d,null))[_0x34f1('0x25')](saveUpdates(_0x12868d[_0x34f1('0x4a')],null))[_0x34f1('0x25')](respondWithResult(_0x5d301d,null))['catch'](handleError(_0x5d301d,null));};exports[_0x34f1('0x26')]=function(_0x3d41a5,_0x32b2a6){return db['SquareReport'][_0x34f1('0x48')]({'where':{'id':_0x3d41a5[_0x34f1('0x4b')]['id']}})['then'](handleEntityNotFound(_0x32b2a6,null))[_0x34f1('0x25')](removeEntity(_0x32b2a6,null))[_0x34f1('0x43')](handleError(_0x32b2a6,null));};exports[_0x34f1('0x4c')]=function(_0x188883,_0x51e553){return db[_0x34f1('0x2d')][_0x34f1('0x4c')]()[_0x34f1('0x25')](respondWithResult(_0x51e553,null))[_0x34f1('0x43')](handleError(_0x51e553,null));};
\ No newline at end of file
+var _0x563e=['model','map','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','includeAll','findAll','rows','catch','show','params','rawAttributes','include','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','name','send','index','SquareReport','type','key'];(function(_0x448774,_0x45ddc7){var _0x46b2f6=function(_0x1dee94){while(--_0x1dee94){_0x448774['push'](_0x448774['shift']());}};_0x46b2f6(++_0x45ddc7);}(_0x563e,0x189));var _0xe563=function(_0x33314d,_0x499628){_0x33314d=_0x33314d-0x0;var _0x4ffe8e=_0x563e[_0x33314d];return _0x4ffe8e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe563('0x0'));var zipdir=require(_0xe563('0x1'));var jsonpatch=require(_0xe563('0x2'));var rp=require(_0xe563('0x3'));var moment=require('moment');var BPromise=require(_0xe563('0x4'));var Mustache=require(_0xe563('0x5'));var util=require(_0xe563('0x6'));var path=require(_0xe563('0x7'));var sox=require(_0xe563('0x8'));var csv=require(_0xe563('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe563('0xa'));var _=require(_0xe563('0xb'));var squel=require(_0xe563('0xc'));var crypto=require('crypto');var jsforce=require(_0xe563('0xd'));var deskjs=require(_0xe563('0xe'));var toCsv=require('to-csv');var querystring=require(_0xe563('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xe563('0x10'));var qs=require(_0xe563('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe563('0x12'));var logger=require(_0xe563('0x13'))(_0xe563('0x14'));var utils=require('../../config/utils');var config=require(_0xe563('0x15'));var licenseUtil=require(_0xe563('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a1258,_0x4ea1d4){_0x4ea1d4=_0x4ea1d4||0xcc;return function(_0x2b08cc){if(_0x2b08cc){return _0x2a1258[_0xe563('0x17')](_0x4ea1d4);}return _0x2a1258['status'](_0x4ea1d4)[_0xe563('0x18')]();};}function respondWithResult(_0x727cb0,_0x14498d){_0x14498d=_0x14498d||0xc8;return function(_0x252cb9){if(_0x252cb9){return _0x727cb0[_0xe563('0x19')](_0x14498d)[_0xe563('0x1a')](_0x252cb9);}};}function respondWithFilteredResult(_0x89da02,_0x21b44e){return function(_0x568f91){if(_0x568f91){var _0x44554e=typeof _0x21b44e[_0xe563('0x1b')]===_0xe563('0x1c')&&typeof _0x21b44e[_0xe563('0x1d')]===_0xe563('0x1c');var _0x5c75e6=_0x568f91['count'];var _0x5931cd=_0x44554e?0x0:_0x21b44e[_0xe563('0x1b')];var _0x17bfc5=_0x44554e?_0x568f91[_0xe563('0x1e')]:_0x21b44e['offset']+_0x21b44e['limit'];var _0x2e2304;if(_0x17bfc5>=_0x5c75e6){_0x17bfc5=_0x5c75e6;_0x2e2304=0xc8;}else{_0x2e2304=0xce;}_0x89da02[_0xe563('0x19')](_0x2e2304);return _0x89da02[_0xe563('0x1f')](_0xe563('0x20'),_0x5931cd+'-'+_0x17bfc5+'/'+_0x5c75e6)['json'](_0x568f91);}return null;};}function patchUpdates(_0x386803){return function(_0x4f5207){try{jsonpatch[_0xe563('0x21')](_0x4f5207,_0x386803,!![]);}catch(_0x232aae){return BPromise[_0xe563('0x22')](_0x232aae);}return _0x4f5207[_0xe563('0x23')]();};}function saveUpdates(_0x4b58cc,_0x379a2d){return function(_0x476c3b){if(_0x476c3b){return _0x476c3b[_0xe563('0x24')](_0x4b58cc)[_0xe563('0x25')](function(_0x178536){return _0x178536;});}return null;};}function removeEntity(_0x5a2483,_0x5e5258){return function(_0x31b188){if(_0x31b188){return _0x31b188[_0xe563('0x26')]()['then'](function(){_0x5a2483[_0xe563('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x53ba7b,_0x5530b8){return function(_0x5d3924){if(!_0x5d3924){_0x53ba7b[_0xe563('0x17')](0x194);}return _0x5d3924;};}function handleError(_0x23ca83,_0x5bd00f){_0x5bd00f=_0x5bd00f||0x1f4;return function(_0x301cab){logger['error'](_0x301cab['stack']);if(_0x301cab[_0xe563('0x27')]){delete _0x301cab[_0xe563('0x27')];}_0x23ca83[_0xe563('0x19')](_0x5bd00f)[_0xe563('0x28')](_0x301cab);};}exports[_0xe563('0x29')]=function(_0x498d1d,_0x5bb967){var _0x2df9eb={},_0x1d61ac={},_0x269d32={'count':0x0,'rows':[]};var _0x386d26=_['map'](db[_0xe563('0x2a')]['rawAttributes'],function(_0x42d0af){return{'name':_0x42d0af['fieldName'],'type':_0x42d0af[_0xe563('0x2b')][_0xe563('0x2c')]};});_0x1d61ac[_0xe563('0x2d')]=_[_0xe563('0x2e')](_0x386d26,_0xe563('0x27'));_0x1d61ac['query']=_[_0xe563('0x2f')](_0x498d1d['query']);_0x1d61ac[_0xe563('0x30')]=_[_0xe563('0x31')](_0x1d61ac[_0xe563('0x2d')],_0x1d61ac[_0xe563('0x32')]);_0x2df9eb[_0xe563('0x33')]=_[_0xe563('0x31')](_0x1d61ac[_0xe563('0x2d')],qs[_0xe563('0x34')](_0x498d1d['query'][_0xe563('0x34')]));_0x2df9eb[_0xe563('0x33')]=_0x2df9eb['attributes'][_0xe563('0x35')]?_0x2df9eb[_0xe563('0x33')]:_0x1d61ac[_0xe563('0x2d')];if(!_0x498d1d[_0xe563('0x32')][_0xe563('0x36')]('nolimit')){_0x2df9eb[_0xe563('0x1d')]=qs[_0xe563('0x1d')](_0x498d1d[_0xe563('0x32')][_0xe563('0x1d')]);_0x2df9eb[_0xe563('0x1b')]=qs[_0xe563('0x1b')](_0x498d1d[_0xe563('0x32')][_0xe563('0x1b')]);}_0x2df9eb['order']=qs['sort'](_0x498d1d[_0xe563('0x32')][_0xe563('0x37')]);_0x2df9eb[_0xe563('0x38')]=qs[_0xe563('0x30')](_[_0xe563('0x39')](_0x498d1d[_0xe563('0x32')],_0x1d61ac[_0xe563('0x30')]),_0x386d26);if(_0x498d1d['query'][_0xe563('0x3a')]){_0x2df9eb['where']=_[_0xe563('0x3b')](_0x2df9eb[_0xe563('0x38')],{'$or':_[_0xe563('0x2e')](_0x386d26,function(_0x245ddb){if(_0x245ddb[_0xe563('0x2b')]!==_0xe563('0x3c')){var _0xb34516={};_0xb34516[_0x245ddb[_0xe563('0x27')]]={'$like':'%'+_0x498d1d[_0xe563('0x32')]['filter']+'%'};return _0xb34516;}})});}_0x2df9eb=_['merge']({},_0x2df9eb,_0x498d1d['options']);var _0x1edbfb={'where':_0x2df9eb[_0xe563('0x38')]};return db[_0xe563('0x2a')][_0xe563('0x1e')](_0x1edbfb)['then'](function(_0x367de1){_0x269d32[_0xe563('0x1e')]=_0x367de1;if(_0x498d1d[_0xe563('0x32')][_0xe563('0x3d')]){_0x2df9eb['include']=[{'all':!![]}];}return db[_0xe563('0x2a')][_0xe563('0x3e')](_0x2df9eb);})['then'](function(_0x5b5aa7){_0x269d32[_0xe563('0x3f')]=_0x5b5aa7;return _0x269d32;})[_0xe563('0x25')](respondWithFilteredResult(_0x5bb967,_0x2df9eb))[_0xe563('0x40')](handleError(_0x5bb967,null));};exports[_0xe563('0x41')]=function(_0x453882,_0x224795){var _0x2aa1ab={'raw':!![],'where':{'id':_0x453882[_0xe563('0x42')]['id']}},_0x284313={};_0x284313[_0xe563('0x2d')]=_[_0xe563('0x2f')](db[_0xe563('0x2a')][_0xe563('0x43')]);_0x284313[_0xe563('0x32')]=_[_0xe563('0x2f')](_0x453882[_0xe563('0x32')]);_0x284313['filters']=_[_0xe563('0x31')](_0x284313['model'],_0x284313[_0xe563('0x32')]);_0x2aa1ab[_0xe563('0x33')]=_[_0xe563('0x31')](_0x284313[_0xe563('0x2d')],qs['fields'](_0x453882[_0xe563('0x32')][_0xe563('0x34')]));_0x2aa1ab[_0xe563('0x33')]=_0x2aa1ab[_0xe563('0x33')][_0xe563('0x35')]?_0x2aa1ab[_0xe563('0x33')]:_0x284313['model'];if(_0x453882[_0xe563('0x32')][_0xe563('0x3d')]){_0x2aa1ab[_0xe563('0x44')]=[{'all':!![]}];}_0x2aa1ab=_['merge']({},_0x2aa1ab,_0x453882['options']);return db[_0xe563('0x2a')][_0xe563('0x45')](_0x2aa1ab)[_0xe563('0x25')](handleEntityNotFound(_0x224795,null))[_0xe563('0x25')](respondWithResult(_0x224795,null))[_0xe563('0x40')](handleError(_0x224795,null));};exports[_0xe563('0x46')]=function(_0x3ea695,_0x4fbd2d){return db['SquareReport']['create'](_0x3ea695['body'],{})['then'](respondWithResult(_0x4fbd2d,0xc9))[_0xe563('0x40')](handleError(_0x4fbd2d,null));};exports['update']=function(_0x40e80a,_0x305b55){if(_0x40e80a[_0xe563('0x47')]['id']){delete _0x40e80a[_0xe563('0x47')]['id'];}return db[_0xe563('0x2a')][_0xe563('0x45')]({'where':{'id':_0x40e80a[_0xe563('0x42')]['id']}})[_0xe563('0x25')](handleEntityNotFound(_0x305b55,null))[_0xe563('0x25')](saveUpdates(_0x40e80a[_0xe563('0x47')],null))[_0xe563('0x25')](respondWithResult(_0x305b55,null))['catch'](handleError(_0x305b55,null));};exports[_0xe563('0x26')]=function(_0x4ea931,_0x1a8735){return db[_0xe563('0x2a')][_0xe563('0x45')]({'where':{'id':_0x4ea931[_0xe563('0x42')]['id']}})[_0xe563('0x25')](handleEntityNotFound(_0x1a8735,null))[_0xe563('0x25')](removeEntity(_0x1a8735,null))[_0xe563('0x40')](handleError(_0x1a8735,null));};exports['describe']=function(_0x3b7f5b,_0xa805ba){return db['SquareReport'][_0xe563('0x48')]()[_0xe563('0x25')](respondWithResult(_0xa805ba,null))[_0xe563('0x40')](handleError(_0xa805ba,null));};
\ No newline at end of file
index 12160a9..48a54f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a4f=['path','rimraf','./squareReport.attributes','define','SquareReport','report_square','uniqueid','leaveAt','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x2a0c4e,_0x22467d){var _0x38c169=function(_0x560b17){while(--_0x560b17){_0x2a0c4e['push'](_0x2a0c4e['shift']());}};_0x38c169(++_0x22467d);}(_0x8a4f,0x12e));var _0xf8a4=function(_0x224cc3,_0x51a08){_0x224cc3=_0x224cc3-0x0;var _0x28f1e7=_0x8a4f[_0x224cc3];return _0x28f1e7;};'use strict';var _=require(_0xf8a4('0x0'));var util=require(_0xf8a4('0x1'));var logger=require(_0xf8a4('0x2'))('api');var moment=require(_0xf8a4('0x3'));var BPromise=require(_0xf8a4('0x4'));var rp=require(_0xf8a4('0x5'));var fs=require('fs');var path=require(_0xf8a4('0x6'));var rimraf=require(_0xf8a4('0x7'));var config=require('../../config/environment');var attributes=require(_0xf8a4('0x8'));module['exports']=function(_0x2859b1,_0x5a276c){return _0x2859b1[_0xf8a4('0x9')](_0xf8a4('0xa'),attributes,{'tableName':_0xf8a4('0xb'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0xf8a4('0xc'),'project_name']},{'name':_0xf8a4('0xd'),'fields':[_0xf8a4('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4479=['exports','define','report_square','uniqueid','project_name','leaveAt','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareReport.attributes'];(function(_0x4e9072,_0x54fd7d){var _0x5a31d=function(_0x47dad5){while(--_0x47dad5){_0x4e9072['push'](_0x4e9072['shift']());}};_0x5a31d(++_0x54fd7d);}(_0x4479,0x1b9));var _0x9447=function(_0x3f8669,_0x5b73ff){_0x3f8669=_0x3f8669-0x0;var _0x47702a=_0x4479[_0x3f8669];return _0x47702a;};'use strict';var _=require('lodash');var util=require(_0x9447('0x0'));var logger=require('../../config/logger')(_0x9447('0x1'));var moment=require(_0x9447('0x2'));var BPromise=require(_0x9447('0x3'));var rp=require(_0x9447('0x4'));var fs=require('fs');var path=require(_0x9447('0x5'));var rimraf=require(_0x9447('0x6'));var config=require(_0x9447('0x7'));var attributes=require(_0x9447('0x8'));module[_0x9447('0x9')]=function(_0x17314d,_0x42ae3c){return _0x17314d[_0x9447('0xa')]('SquareReport',attributes,{'tableName':_0x9447('0xb'),'paranoid':![],'indexes':[{'name':'uid_pname','fields':[_0x9447('0xc'),_0x9447('0xd')]},{'name':_0x9447('0xe'),'fields':[_0x9447('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 7215ac8..0a3f15f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4ce=['client','request','info','SquareReport,\x20%s,\x20%s','request\x20sent','SquareReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','SquareReport','options','raw','then','CreateSquareReport','debug','UpdateSquareReport','update','body','where','attributes','limit','catch','lodash','util','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0xe7ce7f,_0xc3ae44){var _0x2c6dca=function(_0x246c59){while(--_0x246c59){_0xe7ce7f['push'](_0xe7ce7f['shift']());}};_0x2c6dca(++_0xc3ae44);}(_0xf4ce,0xd8));var _0xef4c=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xf4ce[_0x1facfa];return _0x9ec701;};'use strict';var _=require(_0xef4c('0x0'));var util=require(_0xef4c('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xef4c('0x2'));var db=require(_0xef4c('0x3'))['db'];var utils=require(_0xef4c('0x4'));var logger=require(_0xef4c('0x5'))(_0xef4c('0x6'));var config=require('../../config/environment');var jayson=require(_0xef4c('0x7'));var client=jayson[_0xef4c('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27084b,_0x5bad21,_0x3c9201){return new BPromise(function(_0x39e61d,_0x131a24){return client[_0xef4c('0x9')](_0x27084b,_0x3c9201)['then'](function(_0x26f11f){logger[_0xef4c('0xa')](_0xef4c('0xb'),_0x5bad21,_0xef4c('0xc'));logger['debug'](_0xef4c('0xd'),_0x5bad21,'request\x20sent',JSON[_0xef4c('0xe')](_0x26f11f));if(_0x26f11f[_0xef4c('0xf')]){if(_0x26f11f['error'][_0xef4c('0x10')]===0x1f4){logger[_0xef4c('0xf')]('SquareReport,\x20%s,\x20%s',_0x5bad21,_0x26f11f[_0xef4c('0xf')][_0xef4c('0x11')]);return _0x131a24(_0x26f11f['error'][_0xef4c('0x11')]);}logger['error']('SquareReport,\x20%s,\x20%s',_0x5bad21,_0x26f11f[_0xef4c('0xf')]['message']);return _0x39e61d(_0x26f11f[_0xef4c('0xf')][_0xef4c('0x11')]);}else{logger['info'](_0xef4c('0xb'),_0x5bad21,_0xef4c('0xc'));_0x39e61d(_0x26f11f[_0xef4c('0x12')][_0xef4c('0x11')]);}})['catch'](function(_0x23da45){logger[_0xef4c('0xf')](_0xef4c('0xb'),_0x5bad21,_0x23da45);_0x131a24(_0x23da45);});});}exports['CreateSquareReport']=function(_0x159eb5){var _0x421295=this;return new Promise(function(_0x2628f1,_0x3890d1){return db[_0xef4c('0x13')]['create'](_0x159eb5['body'],{'raw':_0x159eb5[_0xef4c('0x14')]?_0x159eb5['options'][_0xef4c('0x15')]===undefined?!![]:![]:!![]})[_0xef4c('0x16')](function(_0x373e9b){logger[_0xef4c('0xa')](_0xef4c('0x17'),_0x159eb5);logger[_0xef4c('0x18')]('CreateSquareReport',_0x159eb5,JSON[_0xef4c('0xe')](_0x373e9b));_0x2628f1(_0x373e9b);})['catch'](function(_0xa70cee){logger['error']('CreateSquareReport',_0xa70cee[_0xef4c('0x11')],_0x159eb5);_0x3890d1(_0x421295[_0xef4c('0xf')](0x1f4,_0xa70cee['message']));});});};exports[_0xef4c('0x19')]=function(_0x760131){var _0x46cd9d=this;return new Promise(function(_0x438cbb,_0x5b8c8b){return db['SquareReport'][_0xef4c('0x1a')](_0x760131[_0xef4c('0x1b')],{'raw':_0x760131[_0xef4c('0x14')]?_0x760131[_0xef4c('0x14')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x760131[_0xef4c('0x14')]?_0x760131[_0xef4c('0x14')][_0xef4c('0x1c')]||null:null,'attributes':_0x760131[_0xef4c('0x14')]?_0x760131['options'][_0xef4c('0x1d')]||null:null,'limit':_0x760131[_0xef4c('0x14')]?_0x760131['options'][_0xef4c('0x1e')]||null:null})[_0xef4c('0x16')](function(_0x25ec3f){logger['info'](_0xef4c('0x19'),_0x760131);logger['debug'](_0xef4c('0x19'),_0x760131,JSON[_0xef4c('0xe')](_0x25ec3f));_0x438cbb(_0x25ec3f);})[_0xef4c('0x1f')](function(_0x4416de){logger[_0xef4c('0xf')](_0xef4c('0x19'),_0x4416de['message'],_0x760131);_0x5b8c8b(_0x46cd9d[_0xef4c('0xf')](0x1f4,_0x4416de[_0xef4c('0x11')]));});});};
\ No newline at end of file
+var _0xf357=['UpdateSquareReport','update','where','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareReport,\x20%s,\x20%s','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','catch','CreateSquareReport','SquareReport','create','body','options','raw','then','debug','stringify'];(function(_0x46b7cc,_0x22822e){var _0x24c647=function(_0x3c3c9d){while(--_0x3c3c9d){_0x46b7cc['push'](_0x46b7cc['shift']());}};_0x24c647(++_0x22822e);}(_0xf357,0x16e));var _0x7f35=function(_0x38bf8d,_0x48ebe5){_0x38bf8d=_0x38bf8d-0x0;var _0x30043c=_0xf357[_0x38bf8d];return _0x30043c;};'use strict';var _=require(_0x7f35('0x0'));var util=require(_0x7f35('0x1'));var moment=require(_0x7f35('0x2'));var BPromise=require('bluebird');var rs=require(_0x7f35('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7f35('0x4'))['db'];var utils=require(_0x7f35('0x5'));var logger=require(_0x7f35('0x6'))(_0x7f35('0x7'));var config=require(_0x7f35('0x8'));var jayson=require(_0x7f35('0x9'));var client=jayson[_0x7f35('0xa')][_0x7f35('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x34560b,_0x3b45e7,_0x4beb98){return new BPromise(function(_0x229d6f,_0x27e01b){return client[_0x7f35('0xc')](_0x34560b,_0x4beb98)['then'](function(_0x2fa09b){logger[_0x7f35('0xd')](_0x7f35('0xe'),_0x3b45e7,'request\x20sent');logger['debug'](_0x7f35('0xf'),_0x3b45e7,'request\x20sent',JSON['stringify'](_0x2fa09b));if(_0x2fa09b[_0x7f35('0x10')]){if(_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x11')]===0x1f4){logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);return _0x27e01b(_0x2fa09b['error'][_0x7f35('0x12')]);}logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);return _0x229d6f(_0x2fa09b[_0x7f35('0x10')][_0x7f35('0x12')]);}else{logger['info']('SquareReport,\x20%s,\x20%s',_0x3b45e7,_0x7f35('0x13'));_0x229d6f(_0x2fa09b['result'][_0x7f35('0x12')]);}})[_0x7f35('0x14')](function(_0x1192a5){logger[_0x7f35('0x10')](_0x7f35('0xe'),_0x3b45e7,_0x1192a5);_0x27e01b(_0x1192a5);});});}exports[_0x7f35('0x15')]=function(_0x5463c5){var _0xe3a546=this;return new Promise(function(_0x3410f9,_0x19a8f9){return db[_0x7f35('0x16')][_0x7f35('0x17')](_0x5463c5[_0x7f35('0x18')],{'raw':_0x5463c5[_0x7f35('0x19')]?_0x5463c5[_0x7f35('0x19')][_0x7f35('0x1a')]===undefined?!![]:![]:!![]})[_0x7f35('0x1b')](function(_0x1859a4){logger[_0x7f35('0xd')](_0x7f35('0x15'),_0x5463c5);logger[_0x7f35('0x1c')]('CreateSquareReport',_0x5463c5,JSON[_0x7f35('0x1d')](_0x1859a4));_0x3410f9(_0x1859a4);})[_0x7f35('0x14')](function(_0x5d8cae){logger[_0x7f35('0x10')](_0x7f35('0x15'),_0x5d8cae[_0x7f35('0x12')],_0x5463c5);_0x19a8f9(_0xe3a546[_0x7f35('0x10')](0x1f4,_0x5d8cae[_0x7f35('0x12')]));});});};exports[_0x7f35('0x1e')]=function(_0x392743){var _0x440d93=this;return new Promise(function(_0x4c9998,_0xd0fd3b){return db[_0x7f35('0x16')][_0x7f35('0x1f')](_0x392743[_0x7f35('0x18')],{'raw':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')][_0x7f35('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')][_0x7f35('0x20')]||null:null,'attributes':_0x392743[_0x7f35('0x19')]?_0x392743[_0x7f35('0x19')]['attributes']||null:null,'limit':_0x392743[_0x7f35('0x19')]?_0x392743['options']['limit']||null:null})[_0x7f35('0x1b')](function(_0x5ce473){logger[_0x7f35('0xd')](_0x7f35('0x1e'),_0x392743);logger[_0x7f35('0x1c')]('UpdateSquareReport',_0x392743,JSON[_0x7f35('0x1d')](_0x5ce473));_0x4c9998(_0x5ce473);})[_0x7f35('0x14')](function(_0x217d11){logger['error'](_0x7f35('0x1e'),_0x217d11[_0x7f35('0x12')],_0x392743);_0xd0fd3b(_0x440d93[_0x7f35('0x10')](0x1f4,_0x217d11['message']));});});};
\ No newline at end of file
index bdc8d5d..3ddbfc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x007e=['./squareReportDetail.controller','get','index','/describe','isAuthenticated','describe','show','post','create','update','/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0x007e,0x1c6));var _0xe007=function(_0x40fa52,_0x43c9de){_0x40fa52=_0x40fa52-0x0;var _0x5ee717=_0x007e[_0x40fa52];return _0x5ee717;};'use strict';var multer=require('multer');var util=require(_0xe007('0x0'));var path=require(_0xe007('0x1'));var timeout=require(_0xe007('0x2'));var express=require(_0xe007('0x3'));var router=express['Router']();var fs_extra=require(_0xe007('0x4'));var auth=require(_0xe007('0x5'));var interaction=require(_0xe007('0x6'));var config=require(_0xe007('0x7'));var controller=require(_0xe007('0x8'));router[_0xe007('0x9')]('/',auth['isAuthenticated'](),controller[_0xe007('0xa')]);router[_0xe007('0x9')](_0xe007('0xb'),auth[_0xe007('0xc')](),controller[_0xe007('0xd')]);router[_0xe007('0x9')]('/:id',auth[_0xe007('0xc')](),controller[_0xe007('0xe')]);router[_0xe007('0xf')]('/',auth[_0xe007('0xc')](),controller[_0xe007('0x10')]);router['put']('/:id',auth[_0xe007('0xc')](),controller[_0xe007('0x11')]);router['delete'](_0xe007('0x12'),auth[_0xe007('0xc')](),controller[_0xe007('0x13')]);module[_0xe007('0x14')]=router;
\ No newline at end of file
+var _0x51d9=['express','fs-extra','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','/describe','/:id','isAuthenticated','show','post','create','delete','exports','util','path','connect-timeout'];(function(_0x95589,_0x1c7de1){var _0x47933d=function(_0x457921){while(--_0x457921){_0x95589['push'](_0x95589['shift']());}};_0x47933d(++_0x1c7de1);}(_0x51d9,0x140));var _0x951d=function(_0x83a625,_0x3e2174){_0x83a625=_0x83a625-0x0;var _0x28fd96=_0x51d9[_0x83a625];return _0x28fd96;};'use strict';var multer=require('multer');var util=require(_0x951d('0x0'));var path=require(_0x951d('0x1'));var timeout=require(_0x951d('0x2'));var express=require(_0x951d('0x3'));var router=express['Router']();var fs_extra=require(_0x951d('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x951d('0x5'));var config=require(_0x951d('0x6'));var controller=require(_0x951d('0x7'));router[_0x951d('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x951d('0x9'),auth['isAuthenticated'](),controller['describe']);router[_0x951d('0x8')](_0x951d('0xa'),auth[_0x951d('0xb')](),controller[_0x951d('0xc')]);router[_0x951d('0xd')]('/',auth['isAuthenticated'](),controller[_0x951d('0xe')]);router['put'](_0x951d('0xa'),auth[_0x951d('0xb')](),controller['update']);router[_0x951d('0xf')](_0x951d('0xa'),auth[_0x951d('0xb')](),controller['destroy']);module[_0x951d('0x10')]=router;
\ No newline at end of file
index 8ef5139..013616f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ca8=['STRING','TEXT'];(function(_0x3525d7,_0x43616f){var _0x4efe53=function(_0x57f997){while(--_0x57f997){_0x3525d7['push'](_0x3525d7['shift']());}};_0x4efe53(++_0x43616f);}(_0x2ca8,0x1f2));var _0x82ca=function(_0x5e71d2,_0x293b00){_0x5e71d2=_0x5e71d2-0x0;var _0x477de2=_0x2ca8[_0x5e71d2];return _0x477de2;};'use strict';var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0x82ca('0x0')]},'node':{'type':Sequelize[_0x82ca('0x0')]},'application':{'type':Sequelize[_0x82ca('0x0')]},'data':{'type':Sequelize[_0x82ca('0x1')]},'project_name':{'type':Sequelize[_0x82ca('0x0')]},'callerid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8daa=['sequelize','STRING'];(function(_0x269dac,_0x34f58f){var _0x549c20=function(_0x520222){while(--_0x520222){_0x269dac['push'](_0x269dac['shift']());}};_0x549c20(++_0x34f58f);}(_0x8daa,0x188));var _0xa8da=function(_0x290fa6,_0x16d017){_0x290fa6=_0x290fa6-0x0;var _0x47f1f3=_0x8daa[_0x290fa6];return _0x47f1f3;};'use strict';var Sequelize=require(_0xa8da('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xa8da('0x1')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize[_0xa8da('0x1')]},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0xa8da('0x1')]},'callerid':{'type':Sequelize[_0xa8da('0x1')]}};
\ No newline at end of file
index beacc4d..6ed5162 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5a2=['sox','to-csv','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','offset','limit','set','Content-Range','apply','reject','update','then','error','stack','name','send','map','SquareDetailsReport','type','key','model','query','keys','intersection','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa5a2,0x121));var _0x2a5a=function(_0x3f7d1b,_0x56cd39){_0x3f7d1b=_0x3f7d1b-0x0;var _0x53578c=_0xa5a2[_0x3f7d1b];return _0x53578c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2a5a('0x0'));var zipdir=require(_0x2a5a('0x1'));var jsonpatch=require(_0x2a5a('0x2'));var rp=require('request-promise');var moment=require(_0x2a5a('0x3'));var BPromise=require(_0x2a5a('0x4'));var Mustache=require(_0x2a5a('0x5'));var util=require(_0x2a5a('0x6'));var path=require('path');var sox=require(_0x2a5a('0x7'));var csv=require(_0x2a5a('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x2a5a('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x2a5a('0xa'));var toCsv=require(_0x2a5a('0x8'));var querystring=require(_0x2a5a('0xb'));var Papa=require(_0x2a5a('0xc'));var Redis=require(_0x2a5a('0xd'));var authService=require(_0x2a5a('0xe'));var qs=require(_0x2a5a('0xf'));var as=require(_0x2a5a('0x10'));var hardwareService=require(_0x2a5a('0x11'));var logger=require(_0x2a5a('0x12'))(_0x2a5a('0x13'));var utils=require('../../config/utils');var config=require(_0x2a5a('0x14'));var licenseUtil=require(_0x2a5a('0x15'));var db=require(_0x2a5a('0x16'))['db'];function respondWithStatusCode(_0x2cf443,_0x5f2ef4){_0x5f2ef4=_0x5f2ef4||0xcc;return function(_0xb97c74){if(_0xb97c74){return _0x2cf443[_0x2a5a('0x17')](_0x5f2ef4);}return _0x2cf443[_0x2a5a('0x18')](_0x5f2ef4)[_0x2a5a('0x19')]();};}function respondWithResult(_0x4c862c,_0x468d9e){_0x468d9e=_0x468d9e||0xc8;return function(_0xd6cc20){if(_0xd6cc20){return _0x4c862c['status'](_0x468d9e)[_0x2a5a('0x1a')](_0xd6cc20);}};}function respondWithFilteredResult(_0x358d0b,_0x4c6ff6){return function(_0x154a03){if(_0x154a03){var _0x2c88bc=typeof _0x4c6ff6['offset']===_0x2a5a('0x1b')&&typeof _0x4c6ff6['limit']===_0x2a5a('0x1b');var _0x314332=_0x154a03['count'];var _0x190c55=_0x2c88bc?0x0:_0x4c6ff6['offset'];var _0x396c5e=_0x2c88bc?_0x154a03['count']:_0x4c6ff6[_0x2a5a('0x1c')]+_0x4c6ff6[_0x2a5a('0x1d')];var _0x46541f;if(_0x396c5e>=_0x314332){_0x396c5e=_0x314332;_0x46541f=0xc8;}else{_0x46541f=0xce;}_0x358d0b[_0x2a5a('0x18')](_0x46541f);return _0x358d0b[_0x2a5a('0x1e')](_0x2a5a('0x1f'),_0x190c55+'-'+_0x396c5e+'/'+_0x314332)['json'](_0x154a03);}return null;};}function patchUpdates(_0x1214bf){return function(_0x3a63e8){try{jsonpatch[_0x2a5a('0x20')](_0x3a63e8,_0x1214bf,!![]);}catch(_0x1c3d10){return BPromise[_0x2a5a('0x21')](_0x1c3d10);}return _0x3a63e8['save']();};}function saveUpdates(_0x3df72f,_0x1f687c){return function(_0x2d555c){if(_0x2d555c){return _0x2d555c[_0x2a5a('0x22')](_0x3df72f)[_0x2a5a('0x23')](function(_0x376307){return _0x376307;});}return null;};}function removeEntity(_0x134faa,_0x3f53db){return function(_0x22c21c){if(_0x22c21c){return _0x22c21c['destroy']()[_0x2a5a('0x23')](function(){_0x134faa['status'](0xcc)[_0x2a5a('0x19')]();});}};}function handleEntityNotFound(_0x3eef3d,_0x174fbf){return function(_0x100297){if(!_0x100297){_0x3eef3d[_0x2a5a('0x17')](0x194);}return _0x100297;};}function handleError(_0x3a3b81,_0x2d4c62){_0x2d4c62=_0x2d4c62||0x1f4;return function(_0x379467){logger[_0x2a5a('0x24')](_0x379467[_0x2a5a('0x25')]);if(_0x379467[_0x2a5a('0x26')]){delete _0x379467['name'];}_0x3a3b81['status'](_0x2d4c62)[_0x2a5a('0x27')](_0x379467);};}exports['index']=function(_0x5339f2,_0x1cbbb8){var _0x18a425={},_0x231846={},_0xfc1cd0={'count':0x0,'rows':[]};var _0x531097=_[_0x2a5a('0x28')](db[_0x2a5a('0x29')]['rawAttributes'],function(_0x47911d){return{'name':_0x47911d['fieldName'],'type':_0x47911d[_0x2a5a('0x2a')][_0x2a5a('0x2b')]};});_0x231846[_0x2a5a('0x2c')]=_[_0x2a5a('0x28')](_0x531097,_0x2a5a('0x26'));_0x231846[_0x2a5a('0x2d')]=_[_0x2a5a('0x2e')](_0x5339f2[_0x2a5a('0x2d')]);_0x231846['filters']=_[_0x2a5a('0x2f')](_0x231846['model'],_0x231846[_0x2a5a('0x2d')]);_0x18a425[_0x2a5a('0x30')]=_['intersection'](_0x231846['model'],qs[_0x2a5a('0x31')](_0x5339f2[_0x2a5a('0x2d')][_0x2a5a('0x31')]));_0x18a425[_0x2a5a('0x30')]=_0x18a425[_0x2a5a('0x30')][_0x2a5a('0x32')]?_0x18a425[_0x2a5a('0x30')]:_0x231846[_0x2a5a('0x2c')];if(!_0x5339f2[_0x2a5a('0x2d')]['hasOwnProperty'](_0x2a5a('0x33'))){_0x18a425[_0x2a5a('0x1d')]=qs[_0x2a5a('0x1d')](_0x5339f2[_0x2a5a('0x2d')][_0x2a5a('0x1d')]);_0x18a425[_0x2a5a('0x1c')]=qs[_0x2a5a('0x1c')](_0x5339f2[_0x2a5a('0x2d')][_0x2a5a('0x1c')]);}_0x18a425[_0x2a5a('0x34')]=qs[_0x2a5a('0x35')](_0x5339f2[_0x2a5a('0x2d')][_0x2a5a('0x35')]);_0x18a425['where']=qs[_0x2a5a('0x36')](_[_0x2a5a('0x37')](_0x5339f2[_0x2a5a('0x2d')],_0x231846[_0x2a5a('0x36')]),_0x531097);if(_0x5339f2['query'][_0x2a5a('0x38')]){_0x18a425[_0x2a5a('0x39')]=_[_0x2a5a('0x3a')](_0x18a425[_0x2a5a('0x39')],{'$or':_[_0x2a5a('0x28')](_0x531097,function(_0x217548){if(_0x217548[_0x2a5a('0x2a')]!==_0x2a5a('0x3b')){var _0x577dee={};_0x577dee[_0x217548[_0x2a5a('0x26')]]={'$like':'%'+_0x5339f2['query']['filter']+'%'};return _0x577dee;}})});}_0x18a425=_[_0x2a5a('0x3a')]({},_0x18a425,_0x5339f2[_0x2a5a('0x3c')]);var _0x48cf5e={'where':_0x18a425['where']};return db[_0x2a5a('0x29')][_0x2a5a('0x3d')](_0x48cf5e)[_0x2a5a('0x23')](function(_0x35ffff){_0xfc1cd0[_0x2a5a('0x3d')]=_0x35ffff;if(_0x5339f2[_0x2a5a('0x2d')][_0x2a5a('0x3e')]){_0x18a425[_0x2a5a('0x3f')]=[{'all':!![]}];}return db['SquareDetailsReport'][_0x2a5a('0x40')](_0x18a425);})[_0x2a5a('0x23')](function(_0x4d4a0c){_0xfc1cd0[_0x2a5a('0x41')]=_0x4d4a0c;return _0xfc1cd0;})[_0x2a5a('0x23')](respondWithFilteredResult(_0x1cbbb8,_0x18a425))[_0x2a5a('0x42')](handleError(_0x1cbbb8,null));};exports[_0x2a5a('0x43')]=function(_0x422ad8,_0x398963){var _0x5bbdab={'raw':!![],'where':{'id':_0x422ad8[_0x2a5a('0x44')]['id']}},_0x146185={};_0x146185[_0x2a5a('0x2c')]=_[_0x2a5a('0x2e')](db[_0x2a5a('0x29')][_0x2a5a('0x45')]);_0x146185[_0x2a5a('0x2d')]=_['keys'](_0x422ad8[_0x2a5a('0x2d')]);_0x146185[_0x2a5a('0x36')]=_[_0x2a5a('0x2f')](_0x146185[_0x2a5a('0x2c')],_0x146185[_0x2a5a('0x2d')]);_0x5bbdab[_0x2a5a('0x30')]=_[_0x2a5a('0x2f')](_0x146185[_0x2a5a('0x2c')],qs[_0x2a5a('0x31')](_0x422ad8['query'][_0x2a5a('0x31')]));_0x5bbdab[_0x2a5a('0x30')]=_0x5bbdab[_0x2a5a('0x30')][_0x2a5a('0x32')]?_0x5bbdab['attributes']:_0x146185['model'];if(_0x422ad8[_0x2a5a('0x2d')]['includeAll']){_0x5bbdab[_0x2a5a('0x3f')]=[{'all':!![]}];}_0x5bbdab=_[_0x2a5a('0x3a')]({},_0x5bbdab,_0x422ad8[_0x2a5a('0x3c')]);return db[_0x2a5a('0x29')][_0x2a5a('0x46')](_0x5bbdab)[_0x2a5a('0x23')](handleEntityNotFound(_0x398963,null))[_0x2a5a('0x23')](respondWithResult(_0x398963,null))[_0x2a5a('0x42')](handleError(_0x398963,null));};exports[_0x2a5a('0x47')]=function(_0x4421c9,_0xfb360c){return db['SquareDetailsReport'][_0x2a5a('0x47')](_0x4421c9['body'],{})[_0x2a5a('0x23')](respondWithResult(_0xfb360c,0xc9))['catch'](handleError(_0xfb360c,null));};exports[_0x2a5a('0x22')]=function(_0x3e4828,_0x664bd5){if(_0x3e4828[_0x2a5a('0x48')]['id']){delete _0x3e4828[_0x2a5a('0x48')]['id'];}return db['SquareDetailsReport'][_0x2a5a('0x46')]({'where':{'id':_0x3e4828[_0x2a5a('0x44')]['id']}})[_0x2a5a('0x23')](handleEntityNotFound(_0x664bd5,null))[_0x2a5a('0x23')](saveUpdates(_0x3e4828[_0x2a5a('0x48')],null))[_0x2a5a('0x23')](respondWithResult(_0x664bd5,null))[_0x2a5a('0x42')](handleError(_0x664bd5,null));};exports['destroy']=function(_0x207179,_0x167235){return db[_0x2a5a('0x29')][_0x2a5a('0x46')]({'where':{'id':_0x207179[_0x2a5a('0x44')]['id']}})[_0x2a5a('0x23')](handleEntityNotFound(_0x167235,null))[_0x2a5a('0x23')](removeEntity(_0x167235,null))[_0x2a5a('0x42')](handleError(_0x167235,null));};exports[_0x2a5a('0x49')]=function(_0x18f05d,_0x14dc2b){return db['SquareDetailsReport'][_0x2a5a('0x49')]()['then'](respondWithResult(_0x14dc2b,null))[_0x2a5a('0x42')](handleError(_0x14dc2b,null));};
\ No newline at end of file
+var _0x61bf=['bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SquareDetailsReport','rawAttributes','fieldName','type','key','model','keys','intersection','query','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','catch','show','params','fields','attributes','find','create','body','describe','eml-format','zip-dir','fast-json-patch','moment'];(function(_0x2cab7d,_0xf73d16){var _0x4c46d6=function(_0x40f640){while(--_0x40f640){_0x2cab7d['push'](_0x2cab7d['shift']());}};_0x4c46d6(++_0xf73d16);}(_0x61bf,0x182));var _0xf61b=function(_0x4154db,_0x5875da){_0x4154db=_0x4154db-0x0;var _0x2cc561=_0x61bf[_0x4154db];return _0x2cc561;};'use strict';var emlformat=require(_0xf61b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xf61b('0x1'));var jsonpatch=require(_0xf61b('0x2'));var rp=require('request-promise');var moment=require(_0xf61b('0x3'));var BPromise=require(_0xf61b('0x4'));var Mustache=require(_0xf61b('0x5'));var util=require('util');var path=require(_0xf61b('0x6'));var sox=require(_0xf61b('0x7'));var csv=require(_0xf61b('0x8'));var ejs=require(_0xf61b('0x9'));var fs=require('fs');var fs_extra=require(_0xf61b('0xa'));var _=require(_0xf61b('0xb'));var squel=require(_0xf61b('0xc'));var crypto=require(_0xf61b('0xd'));var jsforce=require(_0xf61b('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xf61b('0x8'));var querystring=require(_0xf61b('0xf'));var Papa=require('papaparse');var Redis=require(_0xf61b('0x10'));var authService=require(_0xf61b('0x11'));var qs=require(_0xf61b('0x12'));var as=require(_0xf61b('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf61b('0x14'))(_0xf61b('0x15'));var utils=require(_0xf61b('0x16'));var config=require(_0xf61b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf61b('0x18'))['db'];function respondWithStatusCode(_0x4e3f9a,_0x376ae4){_0x376ae4=_0x376ae4||0xcc;return function(_0x47a89f){if(_0x47a89f){return _0x4e3f9a[_0xf61b('0x19')](_0x376ae4);}return _0x4e3f9a[_0xf61b('0x1a')](_0x376ae4)[_0xf61b('0x1b')]();};}function respondWithResult(_0x7ed2a8,_0x1023eb){_0x1023eb=_0x1023eb||0xc8;return function(_0x3e7257){if(_0x3e7257){return _0x7ed2a8['status'](_0x1023eb)['json'](_0x3e7257);}};}function respondWithFilteredResult(_0x15d832,_0xf17e2){return function(_0x5a681c){if(_0x5a681c){var _0x58f038=typeof _0xf17e2['offset']===_0xf61b('0x1c')&&typeof _0xf17e2[_0xf61b('0x1d')]===_0xf61b('0x1c');var _0x46e186=_0x5a681c['count'];var _0x2255da=_0x58f038?0x0:_0xf17e2[_0xf61b('0x1e')];var _0x2566df=_0x58f038?_0x5a681c['count']:_0xf17e2['offset']+_0xf17e2[_0xf61b('0x1d')];var _0x1ad499;if(_0x2566df>=_0x46e186){_0x2566df=_0x46e186;_0x1ad499=0xc8;}else{_0x1ad499=0xce;}_0x15d832[_0xf61b('0x1a')](_0x1ad499);return _0x15d832[_0xf61b('0x1f')](_0xf61b('0x20'),_0x2255da+'-'+_0x2566df+'/'+_0x46e186)['json'](_0x5a681c);}return null;};}function patchUpdates(_0x379c27){return function(_0x562a7c){try{jsonpatch[_0xf61b('0x21')](_0x562a7c,_0x379c27,!![]);}catch(_0x37f7ed){return BPromise[_0xf61b('0x22')](_0x37f7ed);}return _0x562a7c[_0xf61b('0x23')]();};}function saveUpdates(_0x4574d5,_0x50fe6a){return function(_0x21a160){if(_0x21a160){return _0x21a160[_0xf61b('0x24')](_0x4574d5)[_0xf61b('0x25')](function(_0x342738){return _0x342738;});}return null;};}function removeEntity(_0x5d36ea,_0x4c953a){return function(_0x2fa660){if(_0x2fa660){return _0x2fa660[_0xf61b('0x26')]()['then'](function(){_0x5d36ea[_0xf61b('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x47e4eb,_0x1929d6){return function(_0x268b55){if(!_0x268b55){_0x47e4eb[_0xf61b('0x19')](0x194);}return _0x268b55;};}function handleError(_0x84be4a,_0x24f7c1){_0x24f7c1=_0x24f7c1||0x1f4;return function(_0x3648d4){logger[_0xf61b('0x27')](_0x3648d4[_0xf61b('0x28')]);if(_0x3648d4[_0xf61b('0x29')]){delete _0x3648d4[_0xf61b('0x29')];}_0x84be4a[_0xf61b('0x1a')](_0x24f7c1)[_0xf61b('0x2a')](_0x3648d4);};}exports[_0xf61b('0x2b')]=function(_0x1cbdfb,_0x21f86b){var _0x3f385a={},_0x225e94={},_0x3d259a={'count':0x0,'rows':[]};var _0x8e68c6=_[_0xf61b('0x2c')](db[_0xf61b('0x2d')][_0xf61b('0x2e')],function(_0x581228){return{'name':_0x581228[_0xf61b('0x2f')],'type':_0x581228[_0xf61b('0x30')][_0xf61b('0x31')]};});_0x225e94[_0xf61b('0x32')]=_[_0xf61b('0x2c')](_0x8e68c6,_0xf61b('0x29'));_0x225e94['query']=_[_0xf61b('0x33')](_0x1cbdfb['query']);_0x225e94['filters']=_[_0xf61b('0x34')](_0x225e94[_0xf61b('0x32')],_0x225e94[_0xf61b('0x35')]);_0x3f385a['attributes']=_['intersection'](_0x225e94[_0xf61b('0x32')],qs['fields'](_0x1cbdfb[_0xf61b('0x35')]['fields']));_0x3f385a['attributes']=_0x3f385a['attributes'][_0xf61b('0x36')]?_0x3f385a['attributes']:_0x225e94[_0xf61b('0x32')];if(!_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x37')](_0xf61b('0x38'))){_0x3f385a[_0xf61b('0x1d')]=qs[_0xf61b('0x1d')](_0x1cbdfb['query']['limit']);_0x3f385a[_0xf61b('0x1e')]=qs[_0xf61b('0x1e')](_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x1e')]);}_0x3f385a[_0xf61b('0x39')]=qs[_0xf61b('0x3a')](_0x1cbdfb['query'][_0xf61b('0x3a')]);_0x3f385a[_0xf61b('0x3b')]=qs[_0xf61b('0x3c')](_['pick'](_0x1cbdfb[_0xf61b('0x35')],_0x225e94[_0xf61b('0x3c')]),_0x8e68c6);if(_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x3d')]){_0x3f385a[_0xf61b('0x3b')]=_[_0xf61b('0x3e')](_0x3f385a[_0xf61b('0x3b')],{'$or':_['map'](_0x8e68c6,function(_0x2e2484){if(_0x2e2484[_0xf61b('0x30')]!==_0xf61b('0x3f')){var _0x1ac68e={};_0x1ac68e[_0x2e2484[_0xf61b('0x29')]]={'$like':'%'+_0x1cbdfb[_0xf61b('0x35')][_0xf61b('0x3d')]+'%'};return _0x1ac68e;}})});}_0x3f385a=_['merge']({},_0x3f385a,_0x1cbdfb[_0xf61b('0x40')]);var _0x11373e={'where':_0x3f385a[_0xf61b('0x3b')]};return db[_0xf61b('0x2d')][_0xf61b('0x41')](_0x11373e)['then'](function(_0x462ca5){_0x3d259a[_0xf61b('0x41')]=_0x462ca5;if(_0x1cbdfb['query'][_0xf61b('0x42')]){_0x3f385a[_0xf61b('0x43')]=[{'all':!![]}];}return db[_0xf61b('0x2d')][_0xf61b('0x44')](_0x3f385a);})[_0xf61b('0x25')](function(_0x11c86f){_0x3d259a['rows']=_0x11c86f;return _0x3d259a;})['then'](respondWithFilteredResult(_0x21f86b,_0x3f385a))[_0xf61b('0x45')](handleError(_0x21f86b,null));};exports[_0xf61b('0x46')]=function(_0x1cf23b,_0x11ddab){var _0x35f2c2={'raw':!![],'where':{'id':_0x1cf23b[_0xf61b('0x47')]['id']}},_0x57fd6d={};_0x57fd6d[_0xf61b('0x32')]=_[_0xf61b('0x33')](db[_0xf61b('0x2d')]['rawAttributes']);_0x57fd6d[_0xf61b('0x35')]=_[_0xf61b('0x33')](_0x1cf23b['query']);_0x57fd6d['filters']=_['intersection'](_0x57fd6d['model'],_0x57fd6d[_0xf61b('0x35')]);_0x35f2c2['attributes']=_[_0xf61b('0x34')](_0x57fd6d[_0xf61b('0x32')],qs[_0xf61b('0x48')](_0x1cf23b[_0xf61b('0x35')][_0xf61b('0x48')]));_0x35f2c2['attributes']=_0x35f2c2['attributes'][_0xf61b('0x36')]?_0x35f2c2[_0xf61b('0x49')]:_0x57fd6d[_0xf61b('0x32')];if(_0x1cf23b['query'][_0xf61b('0x42')]){_0x35f2c2['include']=[{'all':!![]}];}_0x35f2c2=_[_0xf61b('0x3e')]({},_0x35f2c2,_0x1cf23b[_0xf61b('0x40')]);return db[_0xf61b('0x2d')][_0xf61b('0x4a')](_0x35f2c2)[_0xf61b('0x25')](handleEntityNotFound(_0x11ddab,null))[_0xf61b('0x25')](respondWithResult(_0x11ddab,null))[_0xf61b('0x45')](handleError(_0x11ddab,null));};exports[_0xf61b('0x4b')]=function(_0x23aae7,_0x461ec6){return db['SquareDetailsReport'][_0xf61b('0x4b')](_0x23aae7[_0xf61b('0x4c')],{})[_0xf61b('0x25')](respondWithResult(_0x461ec6,0xc9))[_0xf61b('0x45')](handleError(_0x461ec6,null));};exports[_0xf61b('0x24')]=function(_0x11e6c6,_0x110672){if(_0x11e6c6[_0xf61b('0x4c')]['id']){delete _0x11e6c6[_0xf61b('0x4c')]['id'];}return db[_0xf61b('0x2d')][_0xf61b('0x4a')]({'where':{'id':_0x11e6c6[_0xf61b('0x47')]['id']}})[_0xf61b('0x25')](handleEntityNotFound(_0x110672,null))[_0xf61b('0x25')](saveUpdates(_0x11e6c6[_0xf61b('0x4c')],null))[_0xf61b('0x25')](respondWithResult(_0x110672,null))[_0xf61b('0x45')](handleError(_0x110672,null));};exports[_0xf61b('0x26')]=function(_0x3a2862,_0x38a51b){return db['SquareDetailsReport']['find']({'where':{'id':_0x3a2862[_0xf61b('0x47')]['id']}})[_0xf61b('0x25')](handleEntityNotFound(_0x38a51b,null))['then'](removeEntity(_0x38a51b,null))[_0xf61b('0x45')](handleError(_0x38a51b,null));};exports['describe']=function(_0x788b02,_0x54244d){return db[_0xf61b('0x2d')][_0xf61b('0x4d')]()['then'](respondWithResult(_0x54244d,null))[_0xf61b('0x45')](handleError(_0x54244d,null));};
\ No newline at end of file
index e10bea9..3722028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a8=['../../config/logger','api','moment','path','rimraf','./squareReportDetail.attributes','exports','define','SquareDetailsReport','util'];(function(_0x5bd426,_0x4878e5){var _0x23a7eb=function(_0x594b42){while(--_0x594b42){_0x5bd426['push'](_0x5bd426['shift']());}};_0x23a7eb(++_0x4878e5);}(_0xd2a8,0x1f3));var _0x8d2a=function(_0x1564c8,_0x2a0c9b){_0x1564c8=_0x1564c8-0x0;var _0x4a6252=_0xd2a8[_0x1564c8];return _0x4a6252;};'use strict';var _=require('lodash');var util=require(_0x8d2a('0x0'));var logger=require(_0x8d2a('0x1'))(_0x8d2a('0x2'));var moment=require(_0x8d2a('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8d2a('0x4'));var rimraf=require(_0x8d2a('0x5'));var config=require('../../config/environment');var attributes=require(_0x8d2a('0x6'));module[_0x8d2a('0x7')]=function(_0x11d28d,_0x123d8e){return _0x11d28d[_0x8d2a('0x8')](_0x8d2a('0x9'),attributes,{'tableName':'report_square_details','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc868=['path','rimraf','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x55c1b9,_0x6e45eb){var _0x1e6283=function(_0x21f41e){while(--_0x21f41e){_0x55c1b9['push'](_0x55c1b9['shift']());}};_0x1e6283(++_0x6e45eb);}(_0xc868,0xda));var _0x8c86=function(_0x4856fb,_0x444e61){_0x4856fb=_0x4856fb-0x0;var _0x453942=_0xc868[_0x4856fb];return _0x453942;};'use strict';var _=require(_0x8c86('0x0'));var util=require(_0x8c86('0x1'));var logger=require(_0x8c86('0x2'))(_0x8c86('0x3'));var moment=require(_0x8c86('0x4'));var BPromise=require(_0x8c86('0x5'));var rp=require(_0x8c86('0x6'));var fs=require('fs');var path=require(_0x8c86('0x7'));var rimraf=require(_0x8c86('0x8'));var config=require(_0x8c86('0x9'));var attributes=require(_0x8c86('0xa'));module[_0x8c86('0xb')]=function(_0x4a5c54,_0xc75a07){return _0x4a5c54[_0x8c86('0xc')](_0x8c86('0xd'),attributes,{'tableName':_0x8c86('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index be56501..beb7922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd237=['info','SquareDetailsReport,\x20%s,\x20%s','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','create','body','raw','stringify','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd237,0x14f));var _0x7d23=function(_0x58d937,_0x3550de){_0x58d937=_0x58d937-0x0;var _0x445496=_0xd237[_0x58d937];return _0x445496;};'use strict';var _=require(_0x7d23('0x0'));var util=require(_0x7d23('0x1'));var moment=require(_0x7d23('0x2'));var BPromise=require(_0x7d23('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d23('0x4'));var db=require(_0x7d23('0x5'))['db'];var utils=require(_0x7d23('0x6'));var logger=require(_0x7d23('0x7'))(_0x7d23('0x8'));var config=require(_0x7d23('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7d23('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ca126,_0x48358f,_0xc43371){return new BPromise(function(_0x42c334,_0x6ce28d){return client[_0x7d23('0xb')](_0x5ca126,_0xc43371)[_0x7d23('0xc')](function(_0x23f1d6){logger[_0x7d23('0xd')](_0x7d23('0xe'),_0x48358f,'request\x20sent');logger[_0x7d23('0xf')](_0x7d23('0x10'),_0x48358f,_0x7d23('0x11'),JSON['stringify'](_0x23f1d6));if(_0x23f1d6[_0x7d23('0x12')]){if(_0x23f1d6['error'][_0x7d23('0x13')]===0x1f4){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x6ce28d(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x48358f,_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);return _0x42c334(_0x23f1d6[_0x7d23('0x12')][_0x7d23('0x14')]);}else{logger['info'](_0x7d23('0xe'),_0x48358f,'request\x20sent');_0x42c334(_0x23f1d6[_0x7d23('0x15')]['message']);}})[_0x7d23('0x16')](function(_0x46a35b){logger[_0x7d23('0x12')](_0x7d23('0xe'),_0x48358f,_0x46a35b);_0x6ce28d(_0x46a35b);});});}exports[_0x7d23('0x17')]=function(_0x506a3b){var _0x313471=this;return new Promise(function(_0x3d6a7b,_0x49ce32){return db[_0x7d23('0x18')][_0x7d23('0x19')](_0x506a3b[_0x7d23('0x1a')],{'raw':_0x506a3b['options']?_0x506a3b['options'][_0x7d23('0x1b')]===undefined?!![]:![]:!![]})[_0x7d23('0xc')](function(_0x56b0ba){logger[_0x7d23('0xd')]('CreateSquareDetailsReport',_0x506a3b);logger[_0x7d23('0xf')]('CreateSquareDetailsReport',_0x506a3b,JSON[_0x7d23('0x1c')](_0x56b0ba));_0x3d6a7b(_0x56b0ba);})[_0x7d23('0x16')](function(_0x59522b){logger[_0x7d23('0x12')](_0x7d23('0x17'),_0x59522b[_0x7d23('0x14')],_0x506a3b);_0x49ce32(_0x313471['error'](0x1f4,_0x59522b[_0x7d23('0x14')]));});});};
\ No newline at end of file
+var _0xb62e=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateSquareDetailsReport','SquareDetailsReport','body','options','raw','then','lodash','util'];(function(_0x540b47,_0x2591a8){var _0x4bddc4=function(_0x5b4161){while(--_0x5b4161){_0x540b47['push'](_0x540b47['shift']());}};_0x4bddc4(++_0x2591a8);}(_0xb62e,0x1de));var _0xeb62=function(_0x1035c1,_0x2d8583){_0x1035c1=_0x1035c1-0x0;var _0x308d67=_0xb62e[_0x1035c1];return _0x308d67;};'use strict';var _=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var moment=require(_0xeb62('0x2'));var BPromise=require(_0xeb62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb62('0x4'));var db=require(_0xeb62('0x5'))['db'];var utils=require(_0xeb62('0x6'));var logger=require(_0xeb62('0x7'))(_0xeb62('0x8'));var config=require(_0xeb62('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb62('0xa')][_0xeb62('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x31f5ea,_0x5e0dc4,_0x2065a0){return new BPromise(function(_0xab7049,_0x1e10ae){return client[_0xeb62('0xc')](_0x31f5ea,_0x2065a0)['then'](function(_0x5cdef3){logger[_0xeb62('0xd')](_0xeb62('0xe'),_0x5e0dc4,_0xeb62('0xf'));logger[_0xeb62('0x10')](_0xeb62('0x11'),_0x5e0dc4,_0xeb62('0xf'),JSON[_0xeb62('0x12')](_0x5cdef3));if(_0x5cdef3[_0xeb62('0x13')]){if(_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x14')]===0x1f4){logger['error'](_0xeb62('0xe'),_0x5e0dc4,_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x15')]);return _0x1e10ae(_0x5cdef3[_0xeb62('0x13')]['message']);}logger[_0xeb62('0x13')](_0xeb62('0xe'),_0x5e0dc4,_0x5cdef3[_0xeb62('0x13')]['message']);return _0xab7049(_0x5cdef3[_0xeb62('0x13')][_0xeb62('0x15')]);}else{logger[_0xeb62('0xd')]('SquareDetailsReport,\x20%s,\x20%s',_0x5e0dc4,_0xeb62('0xf'));_0xab7049(_0x5cdef3[_0xeb62('0x16')][_0xeb62('0x15')]);}})[_0xeb62('0x17')](function(_0x3fb280){logger[_0xeb62('0x13')](_0xeb62('0xe'),_0x5e0dc4,_0x3fb280);_0x1e10ae(_0x3fb280);});});}exports[_0xeb62('0x18')]=function(_0x39b138){var _0x27fd84=this;return new Promise(function(_0x27efc8,_0x11d516){return db[_0xeb62('0x19')]['create'](_0x39b138[_0xeb62('0x1a')],{'raw':_0x39b138[_0xeb62('0x1b')]?_0x39b138[_0xeb62('0x1b')][_0xeb62('0x1c')]===undefined?!![]:![]:!![]})[_0xeb62('0x1d')](function(_0x24cbf3){logger[_0xeb62('0xd')]('CreateSquareDetailsReport',_0x39b138);logger['debug'](_0xeb62('0x18'),_0x39b138,JSON[_0xeb62('0x12')](_0x24cbf3));_0x27efc8(_0x24cbf3);})[_0xeb62('0x17')](function(_0x13243f){logger[_0xeb62('0x13')]('CreateSquareDetailsReport',_0x13243f['message'],_0x39b138);_0x11d516(_0x27fd84[_0xeb62('0x13')](0x1f4,_0x13243f[_0xeb62('0x15')]));});});};
\ No newline at end of file
index e2a3e11..6cf5723 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36b4=['../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router'];(function(_0x8b4aaa,_0xac342){var _0x38b4c5=function(_0x1de6dc){while(--_0x1de6dc){_0x8b4aaa['push'](_0x8b4aaa['shift']());}};_0x38b4c5(++_0xac342);}(_0x36b4,0xbc));var _0x436b=function(_0x4d8a7a,_0x1c277e){_0x4d8a7a=_0x4d8a7a-0x0;var _0x10492a=_0x36b4[_0x4d8a7a];return _0x10492a;};'use strict';var express=require(_0x436b('0x0'));var router=express[_0x436b('0x1')]();var auth=require(_0x436b('0x2'));var controller=require(_0x436b('0x3'));router[_0x436b('0x4')]('/',auth[_0x436b('0x5')](),controller[_0x436b('0x6')]);router['get'](_0x436b('0x7'),auth[_0x436b('0x5')](),controller[_0x436b('0x8')]);module[_0x436b('0x9')]=router;
\ No newline at end of file
+var _0x04ec=['killProcess','express','Router','../../components/auth/service','./system.controller','isAuthenticated','index','get','/process/:pid/kill'];(function(_0x4203e5,_0x24cb62){var _0x33f078=function(_0x43adab){while(--_0x43adab){_0x4203e5['push'](_0x4203e5['shift']());}};_0x33f078(++_0x24cb62);}(_0x04ec,0x184));var _0xc04e=function(_0xbc346f,_0x3db5c0){_0xbc346f=_0xbc346f-0x0;var _0x9f9260=_0x04ec[_0xbc346f];return _0x9f9260;};'use strict';var express=require(_0xc04e('0x0'));var router=express[_0xc04e('0x1')]();var auth=require(_0xc04e('0x2'));var controller=require(_0xc04e('0x3'));router['get']('/',auth[_0xc04e('0x4')](),controller[_0xc04e('0x5')]);router[_0xc04e('0x6')](_0xc04e('0x7'),auth[_0xc04e('0x4')](),controller[_0xc04e('0x8')]);module['exports']=router;
\ No newline at end of file
index 9f38673..7456bc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x209a=['../../config/logger','api','util','lodash','error','inspect','name','status','send','index','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','pid','split','length','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process'];(function(_0x4c4158,_0x123def){var _0x48adcd=function(_0x14bf11){while(--_0x14bf11){_0x4c4158['push'](_0x4c4158['shift']());}};_0x48adcd(++_0x123def);}(_0x209a,0x1da));var _0xa209=function(_0x780968,_0x17a1dc){_0x780968=_0x780968-0x0;var _0x3de199=_0x209a[_0x780968];return _0x3de199;};'use strict';var info=require(_0xa209('0x0'));var exec=require(_0xa209('0x1'))['exec'];var logger=require(_0xa209('0x2'))(_0xa209('0x3'));var util=require(_0xa209('0x4'));var BPromise=require('bluebird');var _=require(_0xa209('0x5'));function handleError(_0x1d4aa0,_0x4fbf2e,_0x4346cf){_0x4fbf2e=_0x4fbf2e||0x1f4;return function(_0x168eca){logger[_0xa209('0x6')]('<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s',_0x4346cf,_0x4fbf2e,util[_0xa209('0x7')](_0x168eca,{'showHidden':![],'depth':null}));delete _0x168eca[_0xa209('0x8')];_0x1d4aa0[_0xa209('0x9')](_0x4fbf2e)[_0xa209('0xa')](_0x168eca);};}exports[_0xa209('0xb')]=function(_0x2b3c76,_0x137720){return info[_0xa209('0xc')]()[_0xa209('0xd')](function(_0x4d4ca9){return _0x137720[_0xa209('0x9')](0xc8)[_0xa209('0xe')](_0x4d4ca9);})[_0xa209('0xf')](function(_0x5cd883){return _0x137720[_0xa209('0x9')](0x1f4)[_0xa209('0xe')](_0x5cd883);});};exports[_0xa209('0x10')]=function(_0x48bf89,_0x4746cd){var _0x56edd4=[_0xa209('0x11')];return new BPromise(function(_0x1f67ad,_0x556a70){return exec(util[_0xa209('0x12')](_0xa209('0x13'),_0x48bf89[_0xa209('0x14')][_0xa209('0x15')]),function(_0x123f8a,_0x5506dd,_0x4d21de){if(_0x123f8a){return _0x556a70(_0x123f8a);}return _0x1f67ad(_0x5506dd);});})[_0xa209('0xd')](function(_0x485143){var _0x59b53e=![];var _0xb6e48e=_0x485143[_0xa209('0x16')](/\n/);for(var _0xcbef7d=0x0,_0x1cfb6c=_0x56edd4[_0xa209('0x17')];_0xcbef7d<_0x1cfb6c,_0x59b53e===![];_0xcbef7d+=0x1){if(_0x485143[_0xa209('0x18')](_0x56edd4[_0xcbef7d])>=0x0){_0x59b53e=!![];}}if(!_0x59b53e){throw new Error(util[_0xa209('0x12')](_0xa209('0x19'),_0x48bf89[_0xa209('0x14')][_0xa209('0x15')]));}process['kill'](_0x48bf89['params'][_0xa209('0x15')],_0xa209('0x1a'));return _0x4746cd[_0xa209('0x9')](0xc8)[_0xa209('0xe')]({'message':util[_0xa209('0x12')](_0xa209('0x1b'),_0x48bf89['params'][_0xa209('0x15')])});})[_0xa209('0xf')](handleError(_0x4746cd,null,_0xa209('0x10')));};
\ No newline at end of file
+var _0x070c=['catch','json','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','pid','split','Process\x20with\x20pid\x20%s\x20not\x20found!','params','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','child_process','exec','../../config/logger','api','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','index','then'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x070c,0x1d8));var _0xc070=function(_0x403432,_0x12952a){_0x403432=_0x403432-0x0;var _0x259d36=_0x070c[_0x403432];return _0x259d36;};'use strict';var info=require('systeminformation');var exec=require(_0xc070('0x0'))[_0xc070('0x1')];var logger=require(_0xc070('0x2'))(_0xc070('0x3'));var util=require('util');var BPromise=require(_0xc070('0x4'));var _=require(_0xc070('0x5'));function handleError(_0x4d4a53,_0x4cbb6d,_0x5b24c6){_0x4cbb6d=_0x4cbb6d||0x1f4;return function(_0xdcbb9){logger[_0xc070('0x6')](_0xc070('0x7'),_0x5b24c6,_0x4cbb6d,util[_0xc070('0x8')](_0xdcbb9,{'showHidden':![],'depth':null}));delete _0xdcbb9[_0xc070('0x9')];_0x4d4a53[_0xc070('0xa')](_0x4cbb6d)[_0xc070('0xb')](_0xdcbb9);};}exports[_0xc070('0xc')]=function(_0x15861d,_0x414a18){return info['getAllData']()[_0xc070('0xd')](function(_0x41ec25){return _0x414a18[_0xc070('0xa')](0xc8)['json'](_0x41ec25);})[_0xc070('0xe')](function(_0x3b7f1c){return _0x414a18['status'](0x1f4)[_0xc070('0xf')](_0x3b7f1c);});};exports[_0xc070('0x10')]=function(_0x5e1894,_0x12c0ca){var _0xa7168e=[_0xc070('0x11')];return new BPromise(function(_0x68de8f,_0x16b110){return exec(util[_0xc070('0x12')](_0xc070('0x13'),_0x5e1894['params'][_0xc070('0x14')]),function(_0x41b070,_0x1f93c3,_0x3f6e4e){if(_0x41b070){return _0x16b110(_0x41b070);}return _0x68de8f(_0x1f93c3);});})[_0xc070('0xd')](function(_0x4989e0){var _0x14ce2e=![];var _0x131088=_0x4989e0[_0xc070('0x15')](/\n/);for(var _0x2763f1=0x0,_0x4883e0=_0xa7168e['length'];_0x2763f1<_0x4883e0,_0x14ce2e===![];_0x2763f1+=0x1){if(_0x4989e0['indexOf'](_0xa7168e[_0x2763f1])>=0x0){_0x14ce2e=!![];}}if(!_0x14ce2e){throw new Error(util[_0xc070('0x12')](_0xc070('0x16'),_0x5e1894[_0xc070('0x17')]['pid']));}process[_0xc070('0x18')](_0x5e1894[_0xc070('0x17')][_0xc070('0x14')],_0xc070('0x19'));return _0x12c0ca[_0xc070('0xa')](0xc8)[_0xc070('0xf')]({'message':util[_0xc070('0x12')](_0xc070('0x1a'),_0x5e1894[_0xc070('0x17')][_0xc070('0x14')])});})[_0xc070('0xe')](handleError(_0x12c0ca,null,_0xc070('0x10')));};
\ No newline at end of file
index 7d57f62..5bae51c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a84=['../../config/environment','./tag.controller','get','index','/:id','isAuthenticated','post','put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x46ba25,_0x4de47f){var _0x3a00c7=function(_0xcd6eda){while(--_0xcd6eda){_0x46ba25['push'](_0x46ba25['shift']());}};_0x3a00c7(++_0x4de47f);}(_0x2a84,0x170));var _0x42a8=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x2a84[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x42a8('0x0'));var util=require(_0x42a8('0x1'));var path=require('path');var timeout=require(_0x42a8('0x2'));var express=require(_0x42a8('0x3'));var router=express[_0x42a8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42a8('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x42a8('0x6'));var controller=require(_0x42a8('0x7'));router[_0x42a8('0x8')]('/',auth['isAuthenticated'](),controller[_0x42a8('0x9')]);router['get'](_0x42a8('0xa'),auth[_0x42a8('0xb')](),controller['show']);router[_0x42a8('0xc')]('/',auth[_0x42a8('0xb')](),controller['create']);router[_0x42a8('0xd')](_0x42a8('0xa'),auth['isAuthenticated'](),controller[_0x42a8('0xe')]);router[_0x42a8('0xf')](_0x42a8('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x42a8('0x10')]=router;
\ No newline at end of file
+var _0x3264=['path','connect-timeout','express','../../components/auth/service','./tag.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','util'];(function(_0x39465d,_0x1bcf64){var _0x45c3d3=function(_0x1641ee){while(--_0x1641ee){_0x39465d['push'](_0x39465d['shift']());}};_0x45c3d3(++_0x1bcf64);}(_0x3264,0x7f));var _0x4326=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x3264[_0x4d613c];return _0x301fe3;};'use strict';var multer=require('multer');var util=require(_0x4326('0x0'));var path=require(_0x4326('0x1'));var timeout=require(_0x4326('0x2'));var express=require(_0x4326('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x4326('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4326('0x5'));router[_0x4326('0x6')]('/',auth[_0x4326('0x7')](),controller[_0x4326('0x8')]);router['get'](_0x4326('0x9'),auth[_0x4326('0x7')](),controller[_0x4326('0xa')]);router[_0x4326('0xb')]('/',auth[_0x4326('0x7')](),controller[_0x4326('0xc')]);router[_0x4326('0xd')]('/:id',auth['isAuthenticated'](),controller[_0x4326('0xe')]);router[_0x4326('0xf')](_0x4326('0x9'),auth[_0x4326('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 9b636e1..214ca51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb350=['#0091EA','sequelize','exports','STRING','name'];(function(_0x14fe62,_0x59b270){var _0x477655=function(_0x36cc8f){while(--_0x36cc8f){_0x14fe62['push'](_0x14fe62['shift']());}};_0x477655(++_0x59b270);}(_0xb350,0x6f));var _0x0b35=function(_0x559335,_0x3f211b){_0x559335=_0x559335-0x0;var _0x44f033=_0xb350[_0x559335];return _0x44f033;};'use strict';var Sequelize=require(_0x0b35('0x0'));module[_0x0b35('0x1')]={'name':{'type':Sequelize[_0x0b35('0x2')],'unique':_0x0b35('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize['STRING'],'defaultValue':_0x0b35('0x4')},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xfd7b=['#0091EA','sequelize','exports','STRING'];(function(_0x13301f,_0x521c8a){var _0x5a97b3=function(_0x165d92){while(--_0x165d92){_0x13301f['push'](_0x13301f['shift']());}};_0x5a97b3(++_0x521c8a);}(_0xfd7b,0xd1));var _0xbfd7=function(_0x2a7b8e,_0x50ffce){_0x2a7b8e=_0x2a7b8e-0x0;var _0x29b5c8=_0xfd7b[_0x2a7b8e];return _0x29b5c8;};'use strict';var Sequelize=require(_0xbfd7('0x0'));module[_0xbfd7('0x1')]={'name':{'type':Sequelize[_0xbfd7('0x2')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xbfd7('0x2')],'defaultValue':_0xbfd7('0x3')},'description':{'type':Sequelize[_0xbfd7('0x2')]}};
\ No newline at end of file
index 19d4510..e5da9b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50a6=['Tag','show','params','includeAll','include','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set','apply','reject','save','then','destroy','get','Tags','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','limit','order','sort','where','filters','merge','VIRTUAL','filter','options'];(function(_0x35c3e7,_0x453182){var _0xcc6721=function(_0x56fc80){while(--_0x56fc80){_0x35c3e7['push'](_0x35c3e7['shift']());}};_0xcc6721(++_0x453182);}(_0x50a6,0xa4));var _0x650a=function(_0x549555,_0x5c2217){_0x549555=_0x549555-0x0;var _0x259593=_0x50a6[_0x549555];return _0x259593;};'use strict';var emlformat=require(_0x650a('0x0'));var rimraf=require(_0x650a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x650a('0x2'));var moment=require('moment');var BPromise=require(_0x650a('0x3'));var Mustache=require(_0x650a('0x4'));var util=require(_0x650a('0x5'));var path=require('path');var sox=require(_0x650a('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x650a('0x7'));var _=require(_0x650a('0x8'));var squel=require(_0x650a('0x9'));var crypto=require(_0x650a('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x650a('0xb'));var toCsv=require('to-csv');var querystring=require(_0x650a('0xc'));var Papa=require(_0x650a('0xd'));var Redis=require('ioredis');var authService=require(_0x650a('0xe'));var qs=require(_0x650a('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x650a('0x10'));var logger=require('../../config/logger')(_0x650a('0x11'));var utils=require('../../config/utils');var config=require(_0x650a('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x650a('0x13'))['db'];function respondWithStatusCode(_0x48077a,_0x33e73d){_0x33e73d=_0x33e73d||0xcc;return function(_0x163e5f){if(_0x163e5f){return _0x48077a[_0x650a('0x14')](_0x33e73d);}return _0x48077a['status'](_0x33e73d)[_0x650a('0x15')]();};}function respondWithResult(_0x3919a7,_0x2f727d){_0x2f727d=_0x2f727d||0xc8;return function(_0x15f2fd){if(_0x15f2fd){return _0x3919a7[_0x650a('0x16')](_0x2f727d)[_0x650a('0x17')](_0x15f2fd);}};}function respondWithFilteredResult(_0x5b7c74,_0x2460a3){return function(_0x4fdd82){if(_0x4fdd82){var _0x1f94ab=typeof _0x2460a3[_0x650a('0x18')]===_0x650a('0x19')&&typeof _0x2460a3['limit']==='undefined';var _0x5285e0=_0x4fdd82['count'];var _0x2ad2d7=_0x1f94ab?0x0:_0x2460a3[_0x650a('0x18')];var _0x41d2fa=_0x1f94ab?_0x4fdd82[_0x650a('0x1a')]:_0x2460a3[_0x650a('0x18')]+_0x2460a3['limit'];var _0x4eba86;if(_0x41d2fa>=_0x5285e0){_0x41d2fa=_0x5285e0;_0x4eba86=0xc8;}else{_0x4eba86=0xce;}_0x5b7c74[_0x650a('0x16')](_0x4eba86);return _0x5b7c74[_0x650a('0x1b')]('Content-Range',_0x2ad2d7+'-'+_0x41d2fa+'/'+_0x5285e0)[_0x650a('0x17')](_0x4fdd82);}return null;};}function patchUpdates(_0x385ecd){return function(_0x59b5e4){try{jsonpatch[_0x650a('0x1c')](_0x59b5e4,_0x385ecd,!![]);}catch(_0x1ceedd){return BPromise[_0x650a('0x1d')](_0x1ceedd);}return _0x59b5e4[_0x650a('0x1e')]();};}function saveUpdates(_0x5163fe,_0x489a5f){return function(_0x88531d){if(_0x88531d){return _0x88531d['update'](_0x5163fe)[_0x650a('0x1f')](function(_0x1d471d){return _0x1d471d;});}return null;};}function removeEntity(_0xb12c52,_0x469e53){return function(_0x2ed256){if(_0x2ed256){return _0x2ed256[_0x650a('0x20')]()[_0x650a('0x1f')](function(){var _0x322eba=_0x2ed256[_0x650a('0x21')]({'plain':!![]});var _0x2761a8=_0x650a('0x22');return db[_0x650a('0x23')][_0x650a('0x20')]({'where':{'type':_0x2761a8,'resourceId':_0x322eba['id']}})[_0x650a('0x1f')](function(){return _0x2ed256;});})[_0x650a('0x1f')](function(){_0xb12c52[_0x650a('0x16')](0xcc)[_0x650a('0x15')]();});}};}function handleEntityNotFound(_0x12fdb4,_0x4c1df6){return function(_0x2290a7){if(!_0x2290a7){_0x12fdb4[_0x650a('0x14')](0x194);}return _0x2290a7;};}function handleError(_0x558002,_0x5dee27){_0x5dee27=_0x5dee27||0x1f4;return function(_0x1c6845){logger[_0x650a('0x24')](_0x1c6845[_0x650a('0x25')]);if(_0x1c6845[_0x650a('0x26')]){delete _0x1c6845[_0x650a('0x26')];}_0x558002[_0x650a('0x16')](_0x5dee27)['send'](_0x1c6845);};}exports[_0x650a('0x27')]=function(_0x1c8621,_0x199c86){var _0x18c197={},_0x25a47c={},_0x3e15ba={'count':0x0,'rows':[]};var _0x436e28=_[_0x650a('0x28')](db['Tag'][_0x650a('0x29')],function(_0x3c2eda){return{'name':_0x3c2eda[_0x650a('0x2a')],'type':_0x3c2eda['type'][_0x650a('0x2b')]};});_0x25a47c[_0x650a('0x2c')]=_['map'](_0x436e28,_0x650a('0x26'));_0x25a47c[_0x650a('0x2d')]=_[_0x650a('0x2e')](_0x1c8621['query']);_0x25a47c['filters']=_['intersection'](_0x25a47c[_0x650a('0x2c')],_0x25a47c[_0x650a('0x2d')]);_0x18c197[_0x650a('0x2f')]=_[_0x650a('0x30')](_0x25a47c['model'],qs[_0x650a('0x31')](_0x1c8621[_0x650a('0x2d')]['fields']));_0x18c197[_0x650a('0x2f')]=_0x18c197[_0x650a('0x2f')][_0x650a('0x32')]?_0x18c197[_0x650a('0x2f')]:_0x25a47c[_0x650a('0x2c')];if(!_0x1c8621['query'][_0x650a('0x33')]('nolimit')){_0x18c197[_0x650a('0x34')]=qs[_0x650a('0x34')](_0x1c8621['query'][_0x650a('0x34')]);_0x18c197[_0x650a('0x18')]=qs['offset'](_0x1c8621[_0x650a('0x2d')][_0x650a('0x18')]);}_0x18c197[_0x650a('0x35')]=qs['sort'](_0x1c8621[_0x650a('0x2d')][_0x650a('0x36')]);_0x18c197[_0x650a('0x37')]=qs[_0x650a('0x38')](_['pick'](_0x1c8621[_0x650a('0x2d')],_0x25a47c[_0x650a('0x38')]),_0x436e28);if(_0x1c8621[_0x650a('0x2d')]['filter']){_0x18c197['where']=_[_0x650a('0x39')](_0x18c197[_0x650a('0x37')],{'$or':_['map'](_0x436e28,function(_0x1acbe5){if(_0x1acbe5['type']!==_0x650a('0x3a')){var _0x39b00b={};_0x39b00b[_0x1acbe5[_0x650a('0x26')]]={'$like':'%'+_0x1c8621[_0x650a('0x2d')][_0x650a('0x3b')]+'%'};return _0x39b00b;}})});}_0x18c197=_['merge']({},_0x18c197,_0x1c8621[_0x650a('0x3c')]);var _0x5ba502={'where':_0x18c197[_0x650a('0x37')]};return db[_0x650a('0x3d')][_0x650a('0x1a')](_0x5ba502)[_0x650a('0x1f')](function(_0x1c5c6c){_0x3e15ba[_0x650a('0x1a')]=_0x1c5c6c;if(_0x1c8621[_0x650a('0x2d')]['includeAll']){_0x18c197['include']=[{'all':!![]}];}return db[_0x650a('0x3d')]['findAll'](_0x18c197);})['then'](function(_0x1e0868){_0x3e15ba['rows']=_0x1e0868;return _0x3e15ba;})[_0x650a('0x1f')](respondWithFilteredResult(_0x199c86,_0x18c197))['catch'](handleError(_0x199c86,null));};exports[_0x650a('0x3e')]=function(_0x9a53ec,_0x1855c9){var _0x233a5f={'raw':!![],'where':{'id':_0x9a53ec[_0x650a('0x3f')]['id']}},_0x409495={};_0x409495[_0x650a('0x2c')]=_[_0x650a('0x2e')](db[_0x650a('0x3d')][_0x650a('0x29')]);_0x409495[_0x650a('0x2d')]=_[_0x650a('0x2e')](_0x9a53ec['query']);_0x409495[_0x650a('0x38')]=_[_0x650a('0x30')](_0x409495[_0x650a('0x2c')],_0x409495[_0x650a('0x2d')]);_0x233a5f[_0x650a('0x2f')]=_[_0x650a('0x30')](_0x409495['model'],qs[_0x650a('0x31')](_0x9a53ec[_0x650a('0x2d')][_0x650a('0x31')]));_0x233a5f[_0x650a('0x2f')]=_0x233a5f[_0x650a('0x2f')][_0x650a('0x32')]?_0x233a5f['attributes']:_0x409495['model'];if(_0x9a53ec[_0x650a('0x2d')][_0x650a('0x40')]){_0x233a5f[_0x650a('0x41')]=[{'all':!![]}];}_0x233a5f=_['merge']({},_0x233a5f,_0x9a53ec[_0x650a('0x3c')]);return db['Tag'][_0x650a('0x42')](_0x233a5f)[_0x650a('0x1f')](handleEntityNotFound(_0x1855c9,null))['then'](respondWithResult(_0x1855c9,null))[_0x650a('0x43')](handleError(_0x1855c9,null));};exports[_0x650a('0x44')]=function(_0x39e8e6,_0x47ec0d){return db[_0x650a('0x3d')][_0x650a('0x44')](_0x39e8e6[_0x650a('0x45')],{})['then'](function(_0x17a40d){var _0x3f2151=_0x39e8e6[_0x650a('0x46')][_0x650a('0x21')]({'plain':!![]});if(!_0x3f2151)throw new Error(_0x650a('0x47'));if(_0x3f2151['role']==='user'){var _0x215f2e=_0x17a40d[_0x650a('0x21')]({'plain':!![]});var _0x5b2907=_0x650a('0x22');return db[_0x650a('0x48')][_0x650a('0x42')]({'where':{'name':_0x5b2907,'userProfileId':_0x3f2151[_0x650a('0x49')]},'raw':!![]})[_0x650a('0x1f')](function(_0x8bef2c){if(_0x8bef2c&&_0x8bef2c['autoAssociation']===0x0){return db[_0x650a('0x23')][_0x650a('0x44')]({'name':_0x215f2e[_0x650a('0x26')],'resourceId':_0x215f2e['id'],'type':_0x8bef2c[_0x650a('0x26')],'sectionId':_0x8bef2c['id']},{})[_0x650a('0x1f')](function(){return _0x17a40d;});}else{return _0x17a40d;}})['catch'](function(_0x45346f){logger[_0x650a('0x24')](_0x650a('0x4a'),_0x45346f);throw _0x45346f;});}return _0x17a40d;})[_0x650a('0x1f')](respondWithResult(_0x47ec0d,0xc9))['catch'](handleError(_0x47ec0d,null));};exports['update']=function(_0xd782e9,_0x225fd6){if(_0xd782e9['body']['id']){delete _0xd782e9[_0x650a('0x45')]['id'];}return db[_0x650a('0x3d')][_0x650a('0x42')]({'where':{'id':_0xd782e9[_0x650a('0x3f')]['id']}})[_0x650a('0x1f')](handleEntityNotFound(_0x225fd6,null))[_0x650a('0x1f')](saveUpdates(_0xd782e9[_0x650a('0x45')],null))[_0x650a('0x1f')](respondWithResult(_0x225fd6,null))[_0x650a('0x43')](handleError(_0x225fd6,null));};exports[_0x650a('0x20')]=function(_0x304e50,_0x15db69){return db[_0x650a('0x3d')][_0x650a('0x42')]({'where':{'id':_0x304e50[_0x650a('0x3f')]['id']}})['then'](handleEntityNotFound(_0x15db69,null))['then'](removeEntity(_0x15db69,null))[_0x650a('0x43')](handleError(_0x15db69,null));};
\ No newline at end of file
+var _0x303a=['update','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','get','sendStatus','error','stack','name','send','index','map','Tag','rawAttributes','type','key','model','query','keys','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','intersection','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x542575,_0x251452){var _0x11ad0a=function(_0x4bbede){while(--_0x4bbede){_0x542575['push'](_0x542575['shift']());}};_0x11ad0a(++_0x251452);}(_0x303a,0x1a0));var _0xa303=function(_0x5df2ff,_0x48300e){_0x5df2ff=_0x5df2ff-0x0;var _0x594f25=_0x303a[_0x5df2ff];return _0x594f25;};'use strict';var emlformat=require(_0xa303('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa303('0x1'));var jsonpatch=require(_0xa303('0x2'));var rp=require(_0xa303('0x3'));var moment=require(_0xa303('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa303('0x5'));var util=require(_0xa303('0x6'));var path=require(_0xa303('0x7'));var sox=require(_0xa303('0x8'));var csv=require(_0xa303('0x9'));var ejs=require(_0xa303('0xa'));var fs=require('fs');var fs_extra=require(_0xa303('0xb'));var _=require(_0xa303('0xc'));var squel=require(_0xa303('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xa303('0x9'));var querystring=require(_0xa303('0xe'));var Papa=require('papaparse');var Redis=require(_0xa303('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xa303('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa303('0x11'));var logger=require(_0xa303('0x12'))(_0xa303('0x13'));var utils=require(_0xa303('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xa303('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf5df1e,_0x43a054){_0x43a054=_0x43a054||0xcc;return function(_0x2ed971){if(_0x2ed971){return _0xf5df1e['sendStatus'](_0x43a054);}return _0xf5df1e[_0xa303('0x16')](_0x43a054)[_0xa303('0x17')]();};}function respondWithResult(_0x28cd7f,_0xfa522c){_0xfa522c=_0xfa522c||0xc8;return function(_0xed0420){if(_0xed0420){return _0x28cd7f[_0xa303('0x16')](_0xfa522c)[_0xa303('0x18')](_0xed0420);}};}function respondWithFilteredResult(_0x2d1110,_0x4c8bc1){return function(_0x2c2939){if(_0x2c2939){var _0xd2e8ee=typeof _0x4c8bc1[_0xa303('0x19')]===_0xa303('0x1a')&&typeof _0x4c8bc1[_0xa303('0x1b')]===_0xa303('0x1a');var _0x5ec243=_0x2c2939[_0xa303('0x1c')];var _0x54ca49=_0xd2e8ee?0x0:_0x4c8bc1[_0xa303('0x19')];var _0x4cf535=_0xd2e8ee?_0x2c2939[_0xa303('0x1c')]:_0x4c8bc1['offset']+_0x4c8bc1[_0xa303('0x1b')];var _0xe263f9;if(_0x4cf535>=_0x5ec243){_0x4cf535=_0x5ec243;_0xe263f9=0xc8;}else{_0xe263f9=0xce;}_0x2d1110[_0xa303('0x16')](_0xe263f9);return _0x2d1110['set'](_0xa303('0x1d'),_0x54ca49+'-'+_0x4cf535+'/'+_0x5ec243)[_0xa303('0x18')](_0x2c2939);}return null;};}function patchUpdates(_0x1b0566){return function(_0x59e551){try{jsonpatch[_0xa303('0x1e')](_0x59e551,_0x1b0566,!![]);}catch(_0x3bc8c3){return BPromise[_0xa303('0x1f')](_0x3bc8c3);}return _0x59e551[_0xa303('0x20')]();};}function saveUpdates(_0x54b173,_0x14f9ab){return function(_0x2a2512){if(_0x2a2512){return _0x2a2512['update'](_0x54b173)[_0xa303('0x21')](function(_0x27c1d7){return _0x27c1d7;});}return null;};}function removeEntity(_0x25db9c,_0x122d1e){return function(_0x65ab0e){if(_0x65ab0e){return _0x65ab0e[_0xa303('0x22')]()[_0xa303('0x21')](function(){var _0x5d9dee=_0x65ab0e[_0xa303('0x23')]({'plain':!![]});var _0x57d584='Tags';return db['UserProfileResource']['destroy']({'where':{'type':_0x57d584,'resourceId':_0x5d9dee['id']}})['then'](function(){return _0x65ab0e;});})[_0xa303('0x21')](function(){_0x25db9c[_0xa303('0x16')](0xcc)[_0xa303('0x17')]();});}};}function handleEntityNotFound(_0xbb93f0,_0x94d3e4){return function(_0x48e79f){if(!_0x48e79f){_0xbb93f0[_0xa303('0x24')](0x194);}return _0x48e79f;};}function handleError(_0xb35c22,_0x561d73){_0x561d73=_0x561d73||0x1f4;return function(_0x221f59){logger[_0xa303('0x25')](_0x221f59[_0xa303('0x26')]);if(_0x221f59[_0xa303('0x27')]){delete _0x221f59[_0xa303('0x27')];}_0xb35c22[_0xa303('0x16')](_0x561d73)[_0xa303('0x28')](_0x221f59);};}exports[_0xa303('0x29')]=function(_0x411b42,_0x3383f4){var _0x9b7e61={},_0x217967={},_0x2f7775={'count':0x0,'rows':[]};var _0x1a44fc=_[_0xa303('0x2a')](db[_0xa303('0x2b')][_0xa303('0x2c')],function(_0x5de180){return{'name':_0x5de180['fieldName'],'type':_0x5de180[_0xa303('0x2d')][_0xa303('0x2e')]};});_0x217967[_0xa303('0x2f')]=_[_0xa303('0x2a')](_0x1a44fc,'name');_0x217967[_0xa303('0x30')]=_[_0xa303('0x31')](_0x411b42[_0xa303('0x30')]);_0x217967[_0xa303('0x32')]=_['intersection'](_0x217967[_0xa303('0x2f')],_0x217967[_0xa303('0x30')]);_0x9b7e61[_0xa303('0x33')]=_['intersection'](_0x217967[_0xa303('0x2f')],qs[_0xa303('0x34')](_0x411b42[_0xa303('0x30')]['fields']));_0x9b7e61[_0xa303('0x33')]=_0x9b7e61[_0xa303('0x33')][_0xa303('0x35')]?_0x9b7e61['attributes']:_0x217967[_0xa303('0x2f')];if(!_0x411b42[_0xa303('0x30')][_0xa303('0x36')](_0xa303('0x37'))){_0x9b7e61['limit']=qs[_0xa303('0x1b')](_0x411b42[_0xa303('0x30')][_0xa303('0x1b')]);_0x9b7e61[_0xa303('0x19')]=qs['offset'](_0x411b42[_0xa303('0x30')][_0xa303('0x19')]);}_0x9b7e61[_0xa303('0x38')]=qs[_0xa303('0x39')](_0x411b42[_0xa303('0x30')]['sort']);_0x9b7e61['where']=qs[_0xa303('0x32')](_[_0xa303('0x3a')](_0x411b42[_0xa303('0x30')],_0x217967['filters']),_0x1a44fc);if(_0x411b42['query'][_0xa303('0x3b')]){_0x9b7e61[_0xa303('0x3c')]=_[_0xa303('0x3d')](_0x9b7e61[_0xa303('0x3c')],{'$or':_['map'](_0x1a44fc,function(_0x59e413){if(_0x59e413[_0xa303('0x2d')]!==_0xa303('0x3e')){var _0x1c99b4={};_0x1c99b4[_0x59e413[_0xa303('0x27')]]={'$like':'%'+_0x411b42[_0xa303('0x30')]['filter']+'%'};return _0x1c99b4;}})});}_0x9b7e61=_[_0xa303('0x3d')]({},_0x9b7e61,_0x411b42[_0xa303('0x3f')]);var _0x468928={'where':_0x9b7e61[_0xa303('0x3c')]};return db['Tag']['count'](_0x468928)['then'](function(_0x1805f6){_0x2f7775[_0xa303('0x1c')]=_0x1805f6;if(_0x411b42[_0xa303('0x30')][_0xa303('0x40')]){_0x9b7e61[_0xa303('0x41')]=[{'all':!![]}];}return db[_0xa303('0x2b')][_0xa303('0x42')](_0x9b7e61);})[_0xa303('0x21')](function(_0x3615c5){_0x2f7775[_0xa303('0x43')]=_0x3615c5;return _0x2f7775;})[_0xa303('0x21')](respondWithFilteredResult(_0x3383f4,_0x9b7e61))['catch'](handleError(_0x3383f4,null));};exports['show']=function(_0x45fb2f,_0x54e558){var _0x839adf={'raw':!![],'where':{'id':_0x45fb2f[_0xa303('0x44')]['id']}},_0x564d59={};_0x564d59[_0xa303('0x2f')]=_[_0xa303('0x31')](db[_0xa303('0x2b')][_0xa303('0x2c')]);_0x564d59[_0xa303('0x30')]=_[_0xa303('0x31')](_0x45fb2f[_0xa303('0x30')]);_0x564d59[_0xa303('0x32')]=_[_0xa303('0x45')](_0x564d59[_0xa303('0x2f')],_0x564d59[_0xa303('0x30')]);_0x839adf[_0xa303('0x33')]=_['intersection'](_0x564d59[_0xa303('0x2f')],qs['fields'](_0x45fb2f[_0xa303('0x30')][_0xa303('0x34')]));_0x839adf[_0xa303('0x33')]=_0x839adf['attributes']['length']?_0x839adf[_0xa303('0x33')]:_0x564d59[_0xa303('0x2f')];if(_0x45fb2f[_0xa303('0x30')][_0xa303('0x40')]){_0x839adf[_0xa303('0x41')]=[{'all':!![]}];}_0x839adf=_[_0xa303('0x3d')]({},_0x839adf,_0x45fb2f[_0xa303('0x3f')]);return db[_0xa303('0x2b')][_0xa303('0x46')](_0x839adf)[_0xa303('0x21')](handleEntityNotFound(_0x54e558,null))['then'](respondWithResult(_0x54e558,null))[_0xa303('0x47')](handleError(_0x54e558,null));};exports[_0xa303('0x48')]=function(_0x532003,_0x3cc97a){return db['Tag'][_0xa303('0x48')](_0x532003[_0xa303('0x49')],{})[_0xa303('0x21')](function(_0x3fd1be){var _0x5a6da0=_0x532003[_0xa303('0x4a')][_0xa303('0x23')]({'plain':!![]});if(!_0x5a6da0)throw new Error(_0xa303('0x4b'));if(_0x5a6da0[_0xa303('0x4c')]===_0xa303('0x4a')){var _0x16242c=_0x3fd1be['get']({'plain':!![]});var _0x1a8bc0=_0xa303('0x4d');return db[_0xa303('0x4e')][_0xa303('0x46')]({'where':{'name':_0x1a8bc0,'userProfileId':_0x5a6da0['userProfileId']},'raw':!![]})['then'](function(_0x34547d){if(_0x34547d&&_0x34547d[_0xa303('0x4f')]===0x0){return db[_0xa303('0x50')]['create']({'name':_0x16242c[_0xa303('0x27')],'resourceId':_0x16242c['id'],'type':_0x34547d['name'],'sectionId':_0x34547d['id']},{})['then'](function(){return _0x3fd1be;});}else{return _0x3fd1be;}})['catch'](function(_0x51c4db){logger[_0xa303('0x25')](_0xa303('0x51'),_0x51c4db);throw _0x51c4db;});}return _0x3fd1be;})['then'](respondWithResult(_0x3cc97a,0xc9))[_0xa303('0x47')](handleError(_0x3cc97a,null));};exports[_0xa303('0x52')]=function(_0x33a667,_0x3cda19){if(_0x33a667[_0xa303('0x49')]['id']){delete _0x33a667['body']['id'];}return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x33a667[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x3cda19,null))[_0xa303('0x21')](saveUpdates(_0x33a667['body'],null))['then'](respondWithResult(_0x3cda19,null))[_0xa303('0x47')](handleError(_0x3cda19,null));};exports[_0xa303('0x22')]=function(_0x3e377b,_0x87a096){return db[_0xa303('0x2b')][_0xa303('0x46')]({'where':{'id':_0x3e377b[_0xa303('0x44')]['id']}})[_0xa303('0x21')](handleEntityNotFound(_0x87a096,null))[_0xa303('0x21')](removeEntity(_0x87a096,null))['catch'](handleError(_0x87a096,null));};
\ No newline at end of file
index 7afadef..fa1bf3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbfa=['rimraf','../../config/environment','./tag.attributes','exports','define','lodash','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x5300b6,_0x4a5846){var _0x58980e=function(_0x1bdee5){while(--_0x1bdee5){_0x5300b6['push'](_0x5300b6['shift']());}};_0x58980e(++_0x4a5846);}(_0xbbfa,0x1e9));var _0xabbf=function(_0x4f75b5,_0x4db76d){_0x4f75b5=_0x4f75b5-0x0;var _0x5c263b=_0xbbfa[_0x4f75b5];return _0x5c263b;};'use strict';var _=require(_0xabbf('0x0'));var util=require('util');var logger=require(_0xabbf('0x1'))('api');var moment=require(_0xabbf('0x2'));var BPromise=require(_0xabbf('0x3'));var rp=require(_0xabbf('0x4'));var fs=require('fs');var path=require(_0xabbf('0x5'));var rimraf=require(_0xabbf('0x6'));var config=require(_0xabbf('0x7'));var attributes=require(_0xabbf('0x8'));module[_0xabbf('0x9')]=function(_0x120840,_0x7d0c02){return _0x120840[_0xabbf('0xa')]('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc82b=['lodash','util','../../config/logger','bluebird','request-promise','path','../../config/environment','./tag.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc82b,0x1ef));var _0xbc82=function(_0x1e111d,_0x3e9402){_0x1e111d=_0x1e111d-0x0;var _0x33e354=_0xc82b[_0x1e111d];return _0x33e354;};'use strict';var _=require(_0xbc82('0x0'));var util=require(_0xbc82('0x1'));var logger=require(_0xbc82('0x2'))('api');var moment=require('moment');var BPromise=require(_0xbc82('0x3'));var rp=require(_0xbc82('0x4'));var fs=require('fs');var path=require(_0xbc82('0x5'));var rimraf=require('rimraf');var config=require(_0xbc82('0x6'));var attributes=require(_0xbc82('0x7'));module[_0xbc82('0x8')]=function(_0x335dfb,_0x59c1a2){return _0x335dfb['define']('Tag',attributes,{'tableName':'tools_tags','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 07786c5..b69b441 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x222f=['result','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x107469,_0x6e974e){var _0x531225=function(_0x4ec207){while(--_0x4ec207){_0x107469['push'](_0x107469['shift']());}};_0x531225(++_0x6e974e);}(_0x222f,0x1a4));var _0xf222=function(_0x1a08ad,_0x21d209){_0x1a08ad=_0x1a08ad-0x0;var _0x521649=_0x222f[_0x1a08ad];return _0x521649;};'use strict';var _=require(_0xf222('0x0'));var util=require(_0xf222('0x1'));var moment=require(_0xf222('0x2'));var BPromise=require(_0xf222('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf222('0x4'))['db'];var utils=require(_0xf222('0x5'));var logger=require(_0xf222('0x6'))(_0xf222('0x7'));var config=require('../../config/environment');var jayson=require(_0xf222('0x8'));var client=jayson['client'][_0xf222('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x26f129,_0x518ebb,_0xf5a105){return new BPromise(function(_0x302d7a,_0x4aceb4){return client[_0xf222('0xa')](_0x26f129,_0xf5a105)[_0xf222('0xb')](function(_0x878804){logger[_0xf222('0xc')](_0xf222('0xd'),_0x518ebb,_0xf222('0xe'));logger['debug'](_0xf222('0xf'),_0x518ebb,_0xf222('0xe'),JSON[_0xf222('0x10')](_0x878804));if(_0x878804[_0xf222('0x11')]){if(_0x878804['error'][_0xf222('0x12')]===0x1f4){logger[_0xf222('0x11')](_0xf222('0xd'),_0x518ebb,_0x878804[_0xf222('0x11')][_0xf222('0x13')]);return _0x4aceb4(_0x878804[_0xf222('0x11')][_0xf222('0x13')]);}logger[_0xf222('0x11')]('Tag,\x20%s,\x20%s',_0x518ebb,_0x878804['error'][_0xf222('0x13')]);return _0x302d7a(_0x878804[_0xf222('0x11')]['message']);}else{logger[_0xf222('0xc')](_0xf222('0xd'),_0x518ebb,_0xf222('0xe'));_0x302d7a(_0x878804[_0xf222('0x14')][_0xf222('0x13')]);}})[_0xf222('0x15')](function(_0x30b646){logger['error'](_0xf222('0xd'),_0x518ebb,_0x30b646);_0x4aceb4(_0x30b646);});});}
\ No newline at end of file
+var _0x2dae=['randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird'];(function(_0x4742ae,_0x47cd26){var _0x1553aa=function(_0x389cef){while(--_0x389cef){_0x4742ae['push'](_0x4742ae['shift']());}};_0x1553aa(++_0x47cd26);}(_0x2dae,0xc3));var _0xe2da=function(_0x166742,_0x55520c){_0x166742=_0x166742-0x0;var _0xb7814a=_0x2dae[_0x166742];return _0xb7814a;};'use strict';var _=require(_0xe2da('0x0'));var util=require('util');var moment=require(_0xe2da('0x1'));var BPromise=require(_0xe2da('0x2'));var rs=require(_0xe2da('0x3'));var fs=require('fs');var Redis=require(_0xe2da('0x4'));var db=require(_0xe2da('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe2da('0x6'))(_0xe2da('0x7'));var config=require(_0xe2da('0x8'));var jayson=require(_0xe2da('0x9'));var client=jayson['client'][_0xe2da('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x89c70b,_0x34cc98,_0x2efbd8){return new BPromise(function(_0x238da3,_0x1c71ea){return client[_0xe2da('0xb')](_0x89c70b,_0x2efbd8)[_0xe2da('0xc')](function(_0x68aa40){logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));logger[_0xe2da('0xf')](_0xe2da('0x10'),_0x34cc98,_0xe2da('0xe'),JSON[_0xe2da('0x11')](_0x68aa40));if(_0x68aa40[_0xe2da('0x12')]){if(_0x68aa40[_0xe2da('0x12')]['code']===0x1f4){logger[_0xe2da('0x12')]('Tag,\x20%s,\x20%s',_0x34cc98,_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);return _0x1c71ea(_0x68aa40[_0xe2da('0x12')][_0xe2da('0x13')]);}logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x68aa40[_0xe2da('0x12')]['message']);return _0x238da3(_0x68aa40[_0xe2da('0x12')]['message']);}else{logger['info'](_0xe2da('0xd'),_0x34cc98,_0xe2da('0xe'));_0x238da3(_0x68aa40[_0xe2da('0x14')]['message']);}})[_0xe2da('0x15')](function(_0x2c0353){logger[_0xe2da('0x12')](_0xe2da('0xd'),_0x34cc98,_0x2c0353);_0x1c71ea(_0x2c0353);});});}
\ No newline at end of file
index b9896d6..54317bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0xa9e0[_0x2576d7];return _0x16a08c;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./team.controller','get','index','/:id','getQueues','/:id/users','isAuthenticated','getAgents','post','addQueues','addAgents','update','delete','removeAgents','multer','util','path'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x173d7e,_0x3242fd){_0x173d7e=_0x173d7e-0x0;var _0x2220d6=_0xa9e0[_0x173d7e];return _0x2220d6;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/queues',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0xf')]('/',auth['isAuthenticated'](),controller['create']);router['post']('/:id/queues',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0xf')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x11')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router[_0x0a9e('0x13')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller['destroy']);router[_0x0a9e('0x13')]('/:id/queues',auth[_0x0a9e('0xd')](),controller['removeQueues']);router[_0x0a9e('0x13')](_0x0a9e('0xc'),auth['isAuthenticated'](),controller[_0x0a9e('0x14')]);module['exports']=router;
\ No newline at end of file
index e3b8510..89ecdec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x20edf7,_0x708545){var _0x5b3412=function(_0x5c1a39){while(--_0x5c1a39){_0x20edf7['push'](_0x20edf7['shift']());}};_0x5b3412(++_0x708545);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x59616b,_0x38e534){var _0x5c4523=function(_0x166f2e){while(--_0x166f2e){_0x59616b['push'](_0x59616b['shift']());}};_0x5c4523(++_0x38e534);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 7644173..0b81d96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d03=['to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./team.socket','register','status','end','offset','undefined','limit','count','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','VIRTUAL','filter','options','Team','includeAll','include','findAll','rows','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','Teams','UserProfileSection','find','userProfileId','autoAssociation','UserProfileResource','params','destroy','transaction','SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20','sequelize','Sequelize','QueryTypes','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','SELECT','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','UserVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','ValidationError','toLowerCase','Queue','capitalize','Queues','addQueues','Unknown\x20channel','add','removeQueues','addAgents','isArray','ids','Voice','Chat','Mail','Sms','Fax','Openchannel','penalty','findOrCreate','emit','Queue:save','QueueId','upsert','interface','format','voicePause','TeamVoiceQueue','all','removeAgents','Queue:remove','UserVoiceQueueRt','getAgents','User','order','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','lodash','squel','jsforce'];(function(_0x6dc204,_0x1f3313){var _0xa8505f=function(_0x5a6b56){while(--_0x5a6b56){_0x6dc204['push'](_0x6dc204['shift']());}};_0xa8505f(++_0x1f3313);}(_0x9d03,0x120));var _0x39d0=function(_0x53ccf2,_0x13cb67){_0x53ccf2=_0x53ccf2-0x0;var _0x5a2964=_0x9d03[_0x53ccf2];return _0x5a2964;};'use strict';var emlformat=require(_0x39d0('0x0'));var rimraf=require(_0x39d0('0x1'));var zipdir=require(_0x39d0('0x2'));var jsonpatch=require(_0x39d0('0x3'));var rp=require(_0x39d0('0x4'));var moment=require(_0x39d0('0x5'));var BPromise=require(_0x39d0('0x6'));var Mustache=require(_0x39d0('0x7'));var util=require(_0x39d0('0x8'));var path=require(_0x39d0('0x9'));var sox=require(_0x39d0('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x39d0('0xb'));var squel=require(_0x39d0('0xc'));var crypto=require('crypto');var jsforce=require(_0x39d0('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x39d0('0xe'));var querystring=require(_0x39d0('0xf'));var Papa=require(_0x39d0('0x10'));var Redis=require(_0x39d0('0x11'));var authService=require(_0x39d0('0x12'));var qs=require(_0x39d0('0x13'));var as=require(_0x39d0('0x14'));var hardwareService=require(_0x39d0('0x15'));var logger=require(_0x39d0('0x16'))(_0x39d0('0x17'));var utils=require('../../config/utils');var config=require(_0x39d0('0x18'));var licenseUtil=require(_0x39d0('0x19'));var db=require(_0x39d0('0x1a'))['db'];config['redis']=_[_0x39d0('0x1b')](config[_0x39d0('0x1c')],{'host':'localhost','port':0x18eb});var socket=require(_0x39d0('0x1d'))(new Redis(config[_0x39d0('0x1c')]));require(_0x39d0('0x1e'))[_0x39d0('0x1f')](socket);function respondWithStatusCode(_0x35e4f5,_0x1fd87e){_0x1fd87e=_0x1fd87e||0xcc;return function(_0x4b93c4){if(_0x4b93c4){return _0x35e4f5['sendStatus'](_0x1fd87e);}return _0x35e4f5[_0x39d0('0x20')](_0x1fd87e)[_0x39d0('0x21')]();};}function respondWithResult(_0x4d8625,_0x363579){_0x363579=_0x363579||0xc8;return function(_0x1a7801){if(_0x1a7801){return _0x4d8625['status'](_0x363579)['json'](_0x1a7801);}};}function respondWithFilteredResult(_0xf8b6a8,_0x466675){return function(_0x38caac){if(_0x38caac){var _0x57e1eb=typeof _0x466675[_0x39d0('0x22')]===_0x39d0('0x23')&&typeof _0x466675[_0x39d0('0x24')]===_0x39d0('0x23');var _0x16aed9=_0x38caac[_0x39d0('0x25')];var _0x142b97=_0x57e1eb?0x0:_0x466675[_0x39d0('0x22')];var _0x25d971=_0x57e1eb?_0x38caac[_0x39d0('0x25')]:_0x466675['offset']+_0x466675[_0x39d0('0x24')];var _0x4ac584;if(_0x25d971>=_0x16aed9){_0x25d971=_0x16aed9;_0x4ac584=0xc8;}else{_0x4ac584=0xce;}_0xf8b6a8[_0x39d0('0x20')](_0x4ac584);return _0xf8b6a8['set']('Content-Range',_0x142b97+'-'+_0x25d971+'/'+_0x16aed9)['json'](_0x38caac);}return null;};}function patchUpdates(_0x26a246){return function(_0x508d8c){try{jsonpatch['apply'](_0x508d8c,_0x26a246,!![]);}catch(_0x442e4f){return BPromise['reject'](_0x442e4f);}return _0x508d8c['save']();};}function saveUpdates(_0x21579c,_0x20e2b7){return function(_0x5b9caf){if(_0x5b9caf){return _0x5b9caf[_0x39d0('0x26')](_0x21579c)[_0x39d0('0x27')](function(_0x23a3ce){return _0x23a3ce;});}return null;};}function handleEntityNotFound(_0x481db4,_0x4652ac){return function(_0x362618){if(!_0x362618){_0x481db4[_0x39d0('0x28')](0x194);}return _0x362618;};}function handleError(_0x10fd29,_0x2aa10e){_0x2aa10e=_0x2aa10e||0x1f4;return function(_0x16f49e){logger[_0x39d0('0x29')](_0x16f49e[_0x39d0('0x2a')]);if(_0x16f49e[_0x39d0('0x2b')]){delete _0x16f49e[_0x39d0('0x2b')];}_0x10fd29[_0x39d0('0x20')](_0x2aa10e)[_0x39d0('0x2c')](_0x16f49e);};}exports[_0x39d0('0x2d')]=function(_0x4d01ab,_0x2c87df){var _0x595018={},_0xe9049c={},_0x52ee6f={'count':0x0,'rows':[]};var _0x2e8c46=_[_0x39d0('0x2e')](db['Team'][_0x39d0('0x2f')],function(_0x2a0caf){return{'name':_0x2a0caf['fieldName'],'type':_0x2a0caf[_0x39d0('0x30')][_0x39d0('0x31')]};});_0xe9049c[_0x39d0('0x32')]=_[_0x39d0('0x2e')](_0x2e8c46,_0x39d0('0x2b'));_0xe9049c['query']=_[_0x39d0('0x33')](_0x4d01ab[_0x39d0('0x34')]);_0xe9049c[_0x39d0('0x35')]=_['intersection'](_0xe9049c[_0x39d0('0x32')],_0xe9049c['query']);_0x595018[_0x39d0('0x36')]=_[_0x39d0('0x37')](_0xe9049c[_0x39d0('0x32')],qs[_0x39d0('0x38')](_0x4d01ab[_0x39d0('0x34')][_0x39d0('0x38')]));_0x595018[_0x39d0('0x36')]=_0x595018['attributes'][_0x39d0('0x39')]?_0x595018[_0x39d0('0x36')]:_0xe9049c[_0x39d0('0x32')];if(!_0x4d01ab[_0x39d0('0x34')][_0x39d0('0x3a')](_0x39d0('0x3b'))){_0x595018[_0x39d0('0x24')]=qs[_0x39d0('0x24')](_0x4d01ab[_0x39d0('0x34')]['limit']);_0x595018[_0x39d0('0x22')]=qs['offset'](_0x4d01ab['query'][_0x39d0('0x22')]);}_0x595018['order']=qs[_0x39d0('0x3c')](_0x4d01ab[_0x39d0('0x34')][_0x39d0('0x3c')]);_0x595018[_0x39d0('0x3d')]=qs[_0x39d0('0x35')](_[_0x39d0('0x3e')](_0x4d01ab[_0x39d0('0x34')],_0xe9049c[_0x39d0('0x35')]),_0x2e8c46);if(_0x4d01ab[_0x39d0('0x34')]['filter']){_0x595018[_0x39d0('0x3d')]=_[_0x39d0('0x3f')](_0x595018[_0x39d0('0x3d')],{'$or':_[_0x39d0('0x2e')](_0x2e8c46,function(_0x375092){if(_0x375092[_0x39d0('0x30')]!==_0x39d0('0x40')){var _0x396527={};_0x396527[_0x375092[_0x39d0('0x2b')]]={'$like':'%'+_0x4d01ab[_0x39d0('0x34')][_0x39d0('0x41')]+'%'};return _0x396527;}})});}_0x595018=_['merge']({},_0x595018,_0x4d01ab[_0x39d0('0x42')]);var _0x3a8372={'where':_0x595018[_0x39d0('0x3d')]};return db[_0x39d0('0x43')]['count'](_0x3a8372)[_0x39d0('0x27')](function(_0x2a67bd){_0x52ee6f[_0x39d0('0x25')]=_0x2a67bd;if(_0x4d01ab['query'][_0x39d0('0x44')]){_0x595018[_0x39d0('0x45')]=[{'all':!![]}];}return db[_0x39d0('0x43')][_0x39d0('0x46')](_0x595018);})[_0x39d0('0x27')](function(_0x401943){_0x52ee6f[_0x39d0('0x47')]=_0x401943;return _0x52ee6f;})[_0x39d0('0x27')](respondWithFilteredResult(_0x2c87df,_0x595018))[_0x39d0('0x48')](handleError(_0x2c87df,null));};exports['show']=function(_0x3d40b8,_0x50f1d6){var _0x42159b={'raw':![],'where':{'id':_0x3d40b8['params']['id']}},_0x557229={};_0x557229[_0x39d0('0x32')]=_[_0x39d0('0x33')](db[_0x39d0('0x43')]['rawAttributes']);_0x557229[_0x39d0('0x34')]=_[_0x39d0('0x33')](_0x3d40b8[_0x39d0('0x34')]);_0x557229[_0x39d0('0x35')]=_[_0x39d0('0x37')](_0x557229[_0x39d0('0x32')],_0x557229[_0x39d0('0x34')]);_0x42159b[_0x39d0('0x36')]=_[_0x39d0('0x37')](_0x557229[_0x39d0('0x32')],qs[_0x39d0('0x38')](_0x3d40b8['query'][_0x39d0('0x38')]));_0x42159b[_0x39d0('0x36')]=_0x42159b[_0x39d0('0x36')]['length']?_0x42159b['attributes']:_0x557229['model'];if(_0x3d40b8[_0x39d0('0x34')]['includeAll']){_0x42159b[_0x39d0('0x45')]=[{'all':!![]}];}_0x42159b=_['merge']({},_0x42159b,_0x3d40b8[_0x39d0('0x42')]);return db['Team']['find'](_0x42159b)[_0x39d0('0x27')](handleEntityNotFound(_0x50f1d6,null))['then'](respondWithResult(_0x50f1d6,null))[_0x39d0('0x48')](handleError(_0x50f1d6,null));};exports[_0x39d0('0x49')]=function(_0xd94832,_0xc0e4ae){return db[_0x39d0('0x43')][_0x39d0('0x49')](_0xd94832[_0x39d0('0x4a')],{})['then'](function(_0x2df875){var _0x50b1b3=_0xd94832['user'][_0x39d0('0x4b')]({'plain':!![]});if(!_0x50b1b3)throw new Error(_0x39d0('0x4c'));if(_0x50b1b3['role']===_0x39d0('0x4d')){var _0x579c7a=_0x2df875[_0x39d0('0x4b')]({'plain':!![]});var _0x21cd0d=_0x39d0('0x4e');return db[_0x39d0('0x4f')][_0x39d0('0x50')]({'where':{'name':_0x21cd0d,'userProfileId':_0x50b1b3[_0x39d0('0x51')]},'raw':!![]})[_0x39d0('0x27')](function(_0x292009){if(_0x292009&&_0x292009[_0x39d0('0x52')]===0x0){return db[_0x39d0('0x53')][_0x39d0('0x49')]({'name':_0x579c7a['name'],'resourceId':_0x579c7a['id'],'type':_0x292009[_0x39d0('0x2b')],'sectionId':_0x292009['id']},{})[_0x39d0('0x27')](function(){return _0x2df875;});}else{return _0x2df875;}})[_0x39d0('0x48')](function(_0x567ef3){logger[_0x39d0('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x567ef3);throw _0x567ef3;});}return _0x2df875;})[_0x39d0('0x27')](respondWithResult(_0xc0e4ae,0xc9))[_0x39d0('0x48')](handleError(_0xc0e4ae,null));};exports[_0x39d0('0x26')]=function(_0x3c0d46,_0x306f99){if(_0x3c0d46[_0x39d0('0x4a')]['id']){delete _0x3c0d46[_0x39d0('0x4a')]['id'];}return db[_0x39d0('0x43')][_0x39d0('0x50')]({'where':{'id':_0x3c0d46[_0x39d0('0x54')]['id']}})[_0x39d0('0x27')](handleEntityNotFound(_0x306f99,null))[_0x39d0('0x27')](saveUpdates(_0x3c0d46['body'],null))[_0x39d0('0x27')](respondWithResult(_0x306f99,null))[_0x39d0('0x48')](handleError(_0x306f99,null));};exports[_0x39d0('0x55')]=function(_0x2e8653,_0xfb0e73){var _0x44d077=_0x2e8653[_0x39d0('0x54')]['id'];var _0x37db55=[];return db['sequelize'][_0x39d0('0x56')](function(_0x2ac654){var _0x4c603e=_0x39d0('0x57')+_0x44d077;return db[_0x39d0('0x58')][_0x39d0('0x34')](_0x4c603e,{'type':db[_0x39d0('0x59')][_0x39d0('0x5a')]['SELECT'],'raw':!![],'transaction':_0x2ac654})[_0x39d0('0x27')](function(_0x5164fe){_0x37db55=_['map'](_0x5164fe,function(_0x32b4a6){return Number(_0x32b4a6[_0x39d0('0x5b')]);});})[_0x39d0('0x27')](function(){var _0x7b90c1=_0x39d0('0x5c')+_0x44d077;return db['sequelize']['query'](_0x7b90c1,{'type':db[_0x39d0('0x59')][_0x39d0('0x5a')][_0x39d0('0x5d')],'raw':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0x14f19b){var _0x112b3a=_['map'](_0x14f19b,function(_0x4cc452){return Number(_0x4cc452[_0x39d0('0x5e')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x37db55},'VoiceQueueId':{'$in':_0x112b3a}},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){var _0x447e39=_0x39d0('0x5f')+_0x44d077;return db['sequelize'][_0x39d0('0x34')](_0x447e39,{'type':db['Sequelize'][_0x39d0('0x5a')][_0x39d0('0x5d')],'raw':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0x330c26){var _0x27023a=_['map'](_0x330c26,function(_0x17b777){return Number(_0x17b777['MailQueueId']);});return db[_0x39d0('0x60')][_0x39d0('0x55')]({'where':{'UserId':{'$in':_0x37db55},'MailQueueId':{'$in':_0x27023a}},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){var _0x4ccb8d=_0x39d0('0x61')+_0x44d077;return db[_0x39d0('0x58')][_0x39d0('0x34')](_0x4ccb8d,{'type':db['Sequelize'][_0x39d0('0x5a')]['SELECT'],'raw':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0x3a9443){var _0x42db26=_['map'](_0x3a9443,function(_0x5065b5){return Number(_0x5065b5['SmsQueueId']);});return db[_0x39d0('0x62')]['destroy']({'where':{'UserId':{'$in':_0x37db55},'SmsQueueId':{'$in':_0x42db26}},'transaction':_0x2ac654});})['then'](function(){var _0xe883d5=_0x39d0('0x63')+_0x44d077;return db[_0x39d0('0x58')][_0x39d0('0x34')](_0xe883d5,{'type':db['Sequelize'][_0x39d0('0x5a')][_0x39d0('0x5d')],'raw':!![],'transaction':_0x2ac654});})['then'](function(_0x753a42){var _0xef7c57=_[_0x39d0('0x2e')](_0x753a42,function(_0x408abd){return Number(_0x408abd[_0x39d0('0x64')]);});return db[_0x39d0('0x65')]['destroy']({'where':{'UserId':{'$in':_0x37db55},'ChatQueueId':{'$in':_0xef7c57}},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){var _0x588dc0='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x44d077;return db[_0x39d0('0x58')][_0x39d0('0x34')](_0x588dc0,{'type':db[_0x39d0('0x59')][_0x39d0('0x5a')][_0x39d0('0x5d')],'raw':!![],'transaction':_0x2ac654});})['then'](function(_0x1f049f){var _0x427097=_[_0x39d0('0x2e')](_0x1f049f,function(_0x19a6cc){return Number(_0x19a6cc[_0x39d0('0x66')]);});return db[_0x39d0('0x67')]['destroy']({'where':{'UserId':{'$in':_0x37db55},'FaxQueueId':{'$in':_0x427097}},'transaction':_0x2ac654});})['then'](function(){var _0x2d08d4=_0x39d0('0x68')+_0x44d077;return db[_0x39d0('0x58')]['query'](_0x2d08d4,{'type':db['Sequelize'][_0x39d0('0x5a')][_0x39d0('0x5d')],'raw':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0xa8df25){var _0x12725a=_[_0x39d0('0x2e')](_0xa8df25,function(_0x56d341){return Number(_0x56d341[_0x39d0('0x69')]);});return db[_0x39d0('0x6a')][_0x39d0('0x55')]({'where':{'UserId':{'$in':_0x37db55},'OpenchannelQueueId':{'$in':_0x12725a}},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){var _0x355c12=_0x39d0('0x6b')+_0x44d077;return db[_0x39d0('0x58')][_0x39d0('0x34')](_0x355c12,{'type':db['Sequelize'][_0x39d0('0x5a')]['SELECT'],'raw':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0x21ea41){var _0x155701=_[_0x39d0('0x2e')](_0x21ea41,function(_0x5dd892){return Number(_0x5dd892[_0x39d0('0x6c')]);});return db[_0x39d0('0x6d')][_0x39d0('0x55')]({'where':{'UserId':{'$in':_0x37db55},'WhatsappQueueId':{'$in':_0x155701}},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){return db['TeamVoicePrefix'][_0x39d0('0x50')]({'where':{'TeamId':_0x44d077}});})['then'](function(_0x4d078f){if(_0x4d078f===null){return;}return db[_0x39d0('0x6e')][_0x39d0('0x55')]({'where':{'UserId':{'$in':_0x37db55},'VoicePrefixId':_0x4d078f[_0x39d0('0x6f')]},'transaction':_0x2ac654});})[_0x39d0('0x27')](function(){return db[_0x39d0('0x43')][_0x39d0('0x55')]({'where':{'id':_0x44d077},'cascade':!![],'transaction':_0x2ac654});})[_0x39d0('0x27')](function(_0x4a25dc){if(_0x4a25dc===0x0){_0xfb0e73['sendStatus'](0x194);}else{return db[_0x39d0('0x53')][_0x39d0('0x55')]({'where':{'type':_0x39d0('0x4e'),'resourceId':_0x44d077},'cascade':!![],'transaction':_0x2ac654})[_0x39d0('0x27')](function(){_0xfb0e73['status'](0xcc)['end']();});}})[_0x39d0('0x48')](function(_0x3db4c8){_0xfb0e73[_0x39d0('0x20')](0x1f4)['send'](_0x3db4c8);});});};exports[_0x39d0('0x70')]=function(_0x52d2d6,_0x3aea66,_0x462345){return db[_0x39d0('0x43')][_0x39d0('0x71')]({'where':{'id':_0x52d2d6['params']['id']}})[_0x39d0('0x27')](handleEntityNotFound(_0x3aea66,null))[_0x39d0('0x27')](function(_0x53b35f){if(!_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x72')]||!utils[_0x39d0('0x73')](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x72')])){throw new db[(_0x39d0('0x59'))][(_0x39d0('0x74'))]('Unknown\x20channel');}var _0x5cabf7={};var _0x22d819={};_0x22d819['model']=_['keys'](db[_['capitalize'](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x72')][_0x39d0('0x75')]())+_0x39d0('0x76')][_0x39d0('0x2f')]);_0x22d819['query']=_['keys'](_0x52d2d6[_0x39d0('0x34')]);_0x22d819[_0x39d0('0x35')]=_[_0x39d0('0x37')](_0x22d819['model'],_0x22d819[_0x39d0('0x34')]);_0x5cabf7[_0x39d0('0x36')]=_['intersection'](_0x22d819[_0x39d0('0x32')],qs[_0x39d0('0x38')](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x38')]));_0x5cabf7[_0x39d0('0x36')]=_0x5cabf7[_0x39d0('0x36')][_0x39d0('0x39')]?_0x5cabf7['attributes']:_0x22d819[_0x39d0('0x32')];_0x5cabf7[_0x39d0('0x24')]=qs[_0x39d0('0x24')](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x24')]);_0x5cabf7[_0x39d0('0x22')]=qs[_0x39d0('0x22')](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x22')]);_0x5cabf7['order']=qs[_0x39d0('0x3c')](_0x52d2d6['query'][_0x39d0('0x3c')]);_0x5cabf7['where']=qs[_0x39d0('0x35')](_[_0x39d0('0x3e')](_0x52d2d6['query'],_0x22d819[_0x39d0('0x35')]));_0x5cabf7=_['merge']({},_0x5cabf7,_0x52d2d6[_0x39d0('0x42')]);return _0x53b35f['get'+_[_0x39d0('0x77')](_0x52d2d6[_0x39d0('0x34')][_0x39d0('0x72')]['toLowerCase']())+_0x39d0('0x78')](_0x5cabf7);})[_0x39d0('0x27')](respondWithResult(_0x3aea66,null))[_0x39d0('0x48')](handleError(_0x3aea66,null));};exports[_0x39d0('0x79')]=function(_0x57ac19,_0x11e16d,_0x123d43){return db['Team'][_0x39d0('0x71')]({'where':{'id':_0x57ac19[_0x39d0('0x54')]['id']}})[_0x39d0('0x27')](function(_0x26cbb9){if(_0x26cbb9){if(!_0x57ac19[_0x39d0('0x4a')][_0x39d0('0x72')]||!utils['isValidChannel'](_0x57ac19[_0x39d0('0x4a')]['channel'])){throw new db[(_0x39d0('0x59'))]['ValidationError'](_0x39d0('0x7a'));}return _0x26cbb9[_0x39d0('0x7b')+_[_0x39d0('0x77')](_0x57ac19[_0x39d0('0x4a')]['channel']['toLowerCase']())+_0x39d0('0x78')](_0x57ac19[_0x39d0('0x4a')]['ids']);}return null;})[_0x39d0('0x27')](handleEntityNotFound(_0x11e16d,null))[_0x39d0('0x27')](respondWithStatusCode(_0x11e16d,null))[_0x39d0('0x48')](handleError(_0x11e16d,null));};exports[_0x39d0('0x7c')]=function(_0x2b7dc4,_0x29acd8,_0x580e67){return db['Team'][_0x39d0('0x71')]({'where':{'id':_0x2b7dc4[_0x39d0('0x54')]['id']}})['then'](function(_0x49e237){if(_0x49e237){if(!_0x2b7dc4[_0x39d0('0x34')]['channel']||!utils[_0x39d0('0x73')](_0x2b7dc4['query'][_0x39d0('0x72')])){throw new db[(_0x39d0('0x59'))][(_0x39d0('0x74'))](_0x39d0('0x7a'));}return _0x49e237['remove'+_[_0x39d0('0x77')](_0x2b7dc4[_0x39d0('0x34')][_0x39d0('0x72')][_0x39d0('0x75')]())+_0x39d0('0x78')](_0x2b7dc4['query']['ids']);}return null;})[_0x39d0('0x27')](handleEntityNotFound(_0x29acd8,null))[_0x39d0('0x27')](respondWithStatusCode(_0x29acd8,null))[_0x39d0('0x48')](handleError(_0x29acd8,null));};exports[_0x39d0('0x7d')]=function(_0x5689fe,_0x5cf150){var _0xbe6938=_[_0x39d0('0x7e')](_0x5689fe[_0x39d0('0x4a')][_0x39d0('0x7f')])?_0x5689fe[_0x39d0('0x4a')][_0x39d0('0x7f')]:[_0x5689fe[_0x39d0('0x4a')][_0x39d0('0x7f')]];var _0x85baa9=_0x5689fe['params']['id'];return db[_0x39d0('0x43')]['find']({'where':{'id':_0x85baa9}})[_0x39d0('0x27')](handleEntityNotFound(_0x5cf150,null))[_0x39d0('0x27')](function(_0x354d82){if(_0x354d82){var _0x44c057=[_0x39d0('0x80'),_0x39d0('0x81'),_0x39d0('0x82'),_0x39d0('0x83'),_0x39d0('0x84'),_0x39d0('0x85'),'Whatsapp'];return db[_0x39d0('0x58')]['transaction'](function(_0x5ef2d6){var _0x6f361b=_['map'](_0x44c057,function(_0x5acfe6){var _0x300f37={'attributes':['id',_0x39d0('0x2b')]};if(_0x5acfe6===_0x39d0('0x80')){_0x300f37['through']={'attributes':[_0x39d0('0x86')]};}return _0x354d82[_0x39d0('0x4b')+_0x5acfe6+_0x39d0('0x78')](_0x300f37)[_0x39d0('0x27')](function(_0x380c95){var _0xf3598b=_[_0x39d0('0x2e')](_0x380c95,function(_0xda285d){var _0x440ff3=_[_0x39d0('0x2e')](_0xbe6938,function(_0x119fc7){var _0x28d0cf={'where':{'UserId':_0x119fc7,[_0x5acfe6+'QueueId']:_0xda285d['id']},'transaction':_0x5ef2d6};if(_0x5acfe6==='Voice'){_0x28d0cf['defaults']={'penalty':_0xda285d['TeamVoiceQueue'][_0x39d0('0x86')]};}return db['User'+_0x5acfe6+_0x39d0('0x76')][_0x39d0('0x87')](_0x28d0cf)['then'](function(){socket[_0x39d0('0x88')](_0x39d0('0x4d')+_0x5acfe6+_0x39d0('0x89'),{'UserId':_0x119fc7,[_0x5acfe6+_0x39d0('0x8a')]:_0xda285d['id']});if(_0x5acfe6!==_0x39d0('0x80')){return;}return db['User'][_0x39d0('0x46')]({'where':{'id':_0xbe6938,'online':0x1},'attributes':['id',_0x39d0('0x2b'),'online','voicePause','interface'],'raw':!![]})['then'](function(_0x33c3b5){var _0x31ef0c=_['map'](_0x33c3b5,function(_0x558c44){return db['UserVoiceQueueRt'][_0x39d0('0x8b')]({'membername':_0x558c44[_0x39d0('0x2b')],'UserId':_0x558c44['id'],'queue_name':_0xda285d[_0x39d0('0x2b')],'VoiceQueueId':_0xda285d['id'],'interface':_['isNil'](_0x558c44[_0x39d0('0x8c')])?util[_0x39d0('0x8d')]('SIP/%s',_0x558c44[_0x39d0('0x2b')]):_0x558c44[_0x39d0('0x8c')],'paused':_0x558c44[_0x39d0('0x8e')]||![],'penalty':_0xda285d[_0x39d0('0x8f')][_0x39d0('0x86')]},{'transaction':_0x5ef2d6});});return Promise[_0x39d0('0x90')](_0x31ef0c);});});});return Promise[_0x39d0('0x90')](_0x440ff3);});return Promise[_0x39d0('0x90')](_0xf3598b);})['then'](function(){return db['TeamVoicePrefix'][_0x39d0('0x71')]({'where':{'teamId':_0x85baa9}})[_0x39d0('0x27')](function(_0x5c53d8){if(_0x5c53d8){var _0x142671=_[_0x39d0('0x2e')](_0xbe6938,function(_0x1d7745){db[_0x39d0('0x6e')][_0x39d0('0x8b')]({'UserId':_0x1d7745,'VoicePrefixId':_0x5c53d8[_0x39d0('0x6f')]});});return Promise[_0x39d0('0x90')](_0x142671);}});});});return Promise[_0x39d0('0x90')](_0x6f361b)[_0x39d0('0x27')](function(){return _0x354d82[_0x39d0('0x7d')](_0xbe6938,{'transaction':_0x5ef2d6})['spread'](function(_0x5d5c0a){return _0x5d5c0a;});});});}})[_0x39d0('0x27')](respondWithResult(_0x5cf150,null))[_0x39d0('0x48')](handleError(_0x5cf150,null));};exports[_0x39d0('0x91')]=function(_0x251981,_0x414a98){var _0x3a3cc2=_[_0x39d0('0x7e')](_0x251981[_0x39d0('0x34')][_0x39d0('0x7f')])?_0x251981['query'][_0x39d0('0x7f')]:[_0x251981[_0x39d0('0x34')][_0x39d0('0x7f')]];var _0x455c4a=_0x251981[_0x39d0('0x54')]['id'];return db['Team'][_0x39d0('0x50')]({'where':{'id':_0x455c4a}})[_0x39d0('0x27')](handleEntityNotFound(_0x414a98,null))[_0x39d0('0x27')](function(_0x37f593){if(_0x37f593){var _0x2ca438=[_0x39d0('0x80'),_0x39d0('0x81'),'Mail',_0x39d0('0x83'),_0x39d0('0x84'),'Openchannel','Whatsapp'];return db[_0x39d0('0x58')][_0x39d0('0x56')](function(_0x537305){var _0x24fe11=_[_0x39d0('0x2e')](_0x2ca438,function(_0x3ba706){var _0x1fb5e2={'attributes':['id',_0x39d0('0x2b')]};return _0x37f593[_0x39d0('0x4b')+_0x3ba706+_0x39d0('0x78')](_0x1fb5e2)[_0x39d0('0x27')](function(_0x3cec33){var _0x5db10e=_[_0x39d0('0x2e')](_0x3cec33,function(_0x354659){return _0x354659[_0x39d0('0x91')](_0x3a3cc2,{'transaction':_0x537305})[_0x39d0('0x27')](function(){var _0x41e651=_[_0x39d0('0x2e')](_0x3a3cc2,function(_0x58fce0){socket[_0x39d0('0x88')](_0x39d0('0x4d')+_0x3ba706+_0x39d0('0x92'),{'UserId':Number(_0x58fce0),[_0x3ba706+'QueueId']:_0x354659['id']});if(_0x3ba706!==_0x39d0('0x80')){return;}return db[_0x39d0('0x93')][_0x39d0('0x55')]({'where':{'VoiceQueueId':_0x354659['id'],'UserId':_0x58fce0},'transaction':_0x537305});});return Promise[_0x39d0('0x90')](_0x41e651);});});return Promise[_0x39d0('0x90')](_0x5db10e);});});return Promise[_0x39d0('0x90')](_0x24fe11)['then'](function(){return _0x37f593[_0x39d0('0x91')](_0x3a3cc2,{'transaction':_0x537305});})['then'](function(){return db['TeamVoicePrefix']['findOne']({'where':{'teamId':_0x455c4a}})[_0x39d0('0x27')](function(_0x20af5a){if(_0x20af5a){var _0x3155df=_['map'](_0x3a3cc2,function(_0x3e6762){db[_0x39d0('0x6e')]['destroy']({'where':{'UserId':_0x3e6762,'VoicePrefixId':_0x20af5a['VoicePrefixId']}});});return Promise[_0x39d0('0x90')](_0x3155df);}});});});}})[_0x39d0('0x27')](respondWithStatusCode(_0x414a98,null))['catch'](handleError(_0x414a98,null));};exports[_0x39d0('0x94')]=function(_0x4ab02e,_0x1e31a0,_0x525ecf){var _0x5a5773={};var _0x131ee2={};var _0x4918cf;var _0x2dd47c;return db['Team']['findOne']({'where':{'id':_0x4ab02e[_0x39d0('0x54')]['id']}})['then'](handleEntityNotFound(_0x1e31a0,null))[_0x39d0('0x27')](function(_0x3ac34f){if(_0x3ac34f){_0x4918cf=_0x3ac34f;_0x131ee2[_0x39d0('0x32')]=_['keys'](db[_0x39d0('0x95')]['rawAttributes']);_0x131ee2[_0x39d0('0x34')]=_[_0x39d0('0x33')](_0x4ab02e[_0x39d0('0x34')]);_0x131ee2[_0x39d0('0x35')]=_[_0x39d0('0x37')](_0x131ee2[_0x39d0('0x32')],_0x131ee2[_0x39d0('0x34')]);_0x5a5773[_0x39d0('0x36')]=_[_0x39d0('0x37')](_0x131ee2['model'],qs[_0x39d0('0x38')](_0x4ab02e[_0x39d0('0x34')][_0x39d0('0x38')]));_0x5a5773['attributes']=_0x5a5773[_0x39d0('0x36')]['length']?_0x5a5773['attributes']:_0x131ee2['model'];_0x5a5773[_0x39d0('0x96')]=qs[_0x39d0('0x3c')](_0x4ab02e[_0x39d0('0x34')][_0x39d0('0x3c')]);_0x5a5773['where']=qs['filters'](_[_0x39d0('0x3e')](_0x4ab02e[_0x39d0('0x34')],_0x131ee2['filters']));if(_0x4ab02e[_0x39d0('0x34')][_0x39d0('0x41')]){_0x5a5773[_0x39d0('0x3d')]=_[_0x39d0('0x3f')](_0x5a5773[_0x39d0('0x3d')],{'$or':_['map'](_0x5a5773[_0x39d0('0x36')],function(_0x42a09a){var _0x2f0548={};_0x2f0548[_0x42a09a]={'$like':'%'+_0x4ab02e['query'][_0x39d0('0x41')]+'%'};return _0x2f0548;})});}_0x5a5773=_[_0x39d0('0x3f')]({},_0x5a5773,_0x4ab02e[_0x39d0('0x42')]);return _0x4918cf[_0x39d0('0x94')](_0x5a5773);}})[_0x39d0('0x27')](function(_0x53b8c1){if(_0x53b8c1){_0x2dd47c=_0x53b8c1[_0x39d0('0x39')];if(!_0x4ab02e[_0x39d0('0x34')][_0x39d0('0x3a')](_0x39d0('0x3b'))){_0x5a5773[_0x39d0('0x24')]=qs[_0x39d0('0x24')](_0x4ab02e[_0x39d0('0x34')]['limit']);_0x5a5773[_0x39d0('0x22')]=qs['offset'](_0x4ab02e[_0x39d0('0x34')][_0x39d0('0x22')]);}return _0x4918cf[_0x39d0('0x94')](_0x5a5773);}})['then'](function(_0xc783e7){if(_0xc783e7){return _0xc783e7?{'count':_0x2dd47c,'rows':_0xc783e7}:null;}})[_0x39d0('0x27')](respondWithResult(_0x1e31a0,null))['catch'](handleError(_0x1e31a0,null));};
\ No newline at end of file
+var _0xe69c=['Queue:save','online','voicePause','UserVoiceQueueRt','upsert','isNil','interface','format','SIP/%s','all','UserVoicePrefix','spread','removeAgents','Sms','Queue:remove','getAgents','hasOwnProperty','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','redis','defaults','localhost','socket.io-emitter','./team.socket','register','sendStatus','json','undefined','limit','count','offset','set','Content-Range','save','then','error','stack','status','send','index','Team','rawAttributes','fieldName','type','key','model','map','name','keys','query','filters','attributes','intersection','fields','length','nolimit','sort','where','merge','filter','includeAll','include','findAll','rows','options','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','params','sequelize','transaction','Sequelize','QueryTypes','SELECT','UserId','SELECT\x20VoiceQueueId\x20FROM\x20team_has_voice_queues\x20WHERE\x20TeamId\x20=\x20','VoiceQueueId','UserVoiceQueue','SmsQueueId','UserSmsQueue','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','OpenchannelQueueId','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','TeamVoicePrefix','VoicePrefixId','end','getQueues','findOne','channel','ValidationError','Unknown\x20channel','toLowerCase','order','pick','capitalize','Queues','addQueues','isValidChannel','add','ids','removeQueues','remove','addAgents','isArray','Voice','Chat','Mail','Fax','Openchannel','Whatsapp','through','penalty','QueueId','TeamVoiceQueue','User','Queue','emit'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xe69c,0xb4));var _0xce69=function(_0x3a1ea5,_0x349f01){_0x3a1ea5=_0x3a1ea5-0x0;var _0xfac9b2=_0xe69c[_0x3a1ea5];return _0xfac9b2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xce69('0x0'));var zipdir=require(_0xce69('0x1'));var jsonpatch=require(_0xce69('0x2'));var rp=require(_0xce69('0x3'));var moment=require(_0xce69('0x4'));var BPromise=require(_0xce69('0x5'));var Mustache=require(_0xce69('0x6'));var util=require(_0xce69('0x7'));var path=require(_0xce69('0x8'));var sox=require(_0xce69('0x9'));var csv=require(_0xce69('0xa'));var ejs=require(_0xce69('0xb'));var fs=require('fs');var fs_extra=require(_0xce69('0xc'));var _=require(_0xce69('0xd'));var squel=require(_0xce69('0xe'));var crypto=require(_0xce69('0xf'));var jsforce=require(_0xce69('0x10'));var deskjs=require(_0xce69('0x11'));var toCsv=require('to-csv');var querystring=require(_0xce69('0x12'));var Papa=require(_0xce69('0x13'));var Redis=require(_0xce69('0x14'));var authService=require('../../components/auth/service');var qs=require(_0xce69('0x15'));var as=require(_0xce69('0x16'));var hardwareService=require(_0xce69('0x17'));var logger=require(_0xce69('0x18'))('api');var utils=require(_0xce69('0x19'));var config=require(_0xce69('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xce69('0x1b')]=_[_0xce69('0x1c')](config['redis'],{'host':_0xce69('0x1d'),'port':0x18eb});var socket=require(_0xce69('0x1e'))(new Redis(config[_0xce69('0x1b')]));require(_0xce69('0x1f'))[_0xce69('0x20')](socket);function respondWithStatusCode(_0x318f33,_0x4fe34a){_0x4fe34a=_0x4fe34a||0xcc;return function(_0xfa7ef1){if(_0xfa7ef1){return _0x318f33[_0xce69('0x21')](_0x4fe34a);}return _0x318f33['status'](_0x4fe34a)['end']();};}function respondWithResult(_0xbc03ef,_0x2e4ca){_0x2e4ca=_0x2e4ca||0xc8;return function(_0x121581){if(_0x121581){return _0xbc03ef['status'](_0x2e4ca)[_0xce69('0x22')](_0x121581);}};}function respondWithFilteredResult(_0xcab22c,_0x4debd8){return function(_0x4489f6){if(_0x4489f6){var _0x597254=typeof _0x4debd8['offset']===_0xce69('0x23')&&typeof _0x4debd8[_0xce69('0x24')]===_0xce69('0x23');var _0x2f3395=_0x4489f6[_0xce69('0x25')];var _0x1d95f9=_0x597254?0x0:_0x4debd8[_0xce69('0x26')];var _0x2e8611=_0x597254?_0x4489f6[_0xce69('0x25')]:_0x4debd8[_0xce69('0x26')]+_0x4debd8[_0xce69('0x24')];var _0x563822;if(_0x2e8611>=_0x2f3395){_0x2e8611=_0x2f3395;_0x563822=0xc8;}else{_0x563822=0xce;}_0xcab22c['status'](_0x563822);return _0xcab22c[_0xce69('0x27')](_0xce69('0x28'),_0x1d95f9+'-'+_0x2e8611+'/'+_0x2f3395)[_0xce69('0x22')](_0x4489f6);}return null;};}function patchUpdates(_0xf24ed7){return function(_0x15e563){try{jsonpatch['apply'](_0x15e563,_0xf24ed7,!![]);}catch(_0x40316a){return BPromise['reject'](_0x40316a);}return _0x15e563[_0xce69('0x29')]();};}function saveUpdates(_0x59e802,_0x2fc6f9){return function(_0x23a5d0){if(_0x23a5d0){return _0x23a5d0['update'](_0x59e802)[_0xce69('0x2a')](function(_0x129793){return _0x129793;});}return null;};}function handleEntityNotFound(_0x2f4340,_0x42de4f){return function(_0x2b977e){if(!_0x2b977e){_0x2f4340[_0xce69('0x21')](0x194);}return _0x2b977e;};}function handleError(_0x3106aa,_0x327458){_0x327458=_0x327458||0x1f4;return function(_0x424edf){logger[_0xce69('0x2b')](_0x424edf[_0xce69('0x2c')]);if(_0x424edf['name']){delete _0x424edf['name'];}_0x3106aa[_0xce69('0x2d')](_0x327458)[_0xce69('0x2e')](_0x424edf);};}exports[_0xce69('0x2f')]=function(_0x2526e6,_0xd2d4e0){var _0xa28755={},_0x431999={},_0x26aba5={'count':0x0,'rows':[]};var _0x5636d4=_['map'](db[_0xce69('0x30')][_0xce69('0x31')],function(_0x56e164){return{'name':_0x56e164[_0xce69('0x32')],'type':_0x56e164[_0xce69('0x33')][_0xce69('0x34')]};});_0x431999[_0xce69('0x35')]=_[_0xce69('0x36')](_0x5636d4,_0xce69('0x37'));_0x431999['query']=_[_0xce69('0x38')](_0x2526e6[_0xce69('0x39')]);_0x431999[_0xce69('0x3a')]=_['intersection'](_0x431999[_0xce69('0x35')],_0x431999[_0xce69('0x39')]);_0xa28755[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x431999[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x2526e6[_0xce69('0x39')][_0xce69('0x3d')]));_0xa28755['attributes']=_0xa28755[_0xce69('0x3b')][_0xce69('0x3e')]?_0xa28755['attributes']:_0x431999['model'];if(!_0x2526e6[_0xce69('0x39')]['hasOwnProperty'](_0xce69('0x3f'))){_0xa28755[_0xce69('0x24')]=qs[_0xce69('0x24')](_0x2526e6[_0xce69('0x39')][_0xce69('0x24')]);_0xa28755['offset']=qs[_0xce69('0x26')](_0x2526e6['query'][_0xce69('0x26')]);}_0xa28755['order']=qs[_0xce69('0x40')](_0x2526e6[_0xce69('0x39')][_0xce69('0x40')]);_0xa28755[_0xce69('0x41')]=qs['filters'](_['pick'](_0x2526e6['query'],_0x431999[_0xce69('0x3a')]),_0x5636d4);if(_0x2526e6[_0xce69('0x39')]['filter']){_0xa28755[_0xce69('0x41')]=_[_0xce69('0x42')](_0xa28755[_0xce69('0x41')],{'$or':_[_0xce69('0x36')](_0x5636d4,function(_0x7fb242){if(_0x7fb242[_0xce69('0x33')]!=='VIRTUAL'){var _0x3d38a5={};_0x3d38a5[_0x7fb242[_0xce69('0x37')]]={'$like':'%'+_0x2526e6[_0xce69('0x39')][_0xce69('0x43')]+'%'};return _0x3d38a5;}})});}_0xa28755=_[_0xce69('0x42')]({},_0xa28755,_0x2526e6['options']);var _0x311b10={'where':_0xa28755[_0xce69('0x41')]};return db[_0xce69('0x30')][_0xce69('0x25')](_0x311b10)['then'](function(_0x2140cc){_0x26aba5[_0xce69('0x25')]=_0x2140cc;if(_0x2526e6[_0xce69('0x39')][_0xce69('0x44')]){_0xa28755[_0xce69('0x45')]=[{'all':!![]}];}return db['Team'][_0xce69('0x46')](_0xa28755);})[_0xce69('0x2a')](function(_0x438d77){_0x26aba5[_0xce69('0x47')]=_0x438d77;return _0x26aba5;})[_0xce69('0x2a')](respondWithFilteredResult(_0xd2d4e0,_0xa28755))['catch'](handleError(_0xd2d4e0,null));};exports['show']=function(_0x4cb392,_0xed3cbd){var _0x3fde8b={'raw':![],'where':{'id':_0x4cb392['params']['id']}},_0x28a1bf={};_0x28a1bf[_0xce69('0x35')]=_['keys'](db[_0xce69('0x30')][_0xce69('0x31')]);_0x28a1bf[_0xce69('0x39')]=_['keys'](_0x4cb392[_0xce69('0x39')]);_0x28a1bf[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x28a1bf[_0xce69('0x35')],_0x28a1bf['query']);_0x3fde8b[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x28a1bf['model'],qs[_0xce69('0x3d')](_0x4cb392[_0xce69('0x39')][_0xce69('0x3d')]));_0x3fde8b['attributes']=_0x3fde8b[_0xce69('0x3b')][_0xce69('0x3e')]?_0x3fde8b[_0xce69('0x3b')]:_0x28a1bf[_0xce69('0x35')];if(_0x4cb392['query'][_0xce69('0x44')]){_0x3fde8b[_0xce69('0x45')]=[{'all':!![]}];}_0x3fde8b=_[_0xce69('0x42')]({},_0x3fde8b,_0x4cb392[_0xce69('0x48')]);return db[_0xce69('0x30')][_0xce69('0x49')](_0x3fde8b)[_0xce69('0x2a')](handleEntityNotFound(_0xed3cbd,null))[_0xce69('0x2a')](respondWithResult(_0xed3cbd,null))[_0xce69('0x4a')](handleError(_0xed3cbd,null));};exports['create']=function(_0x1f6b4a,_0x37542b){return db[_0xce69('0x30')][_0xce69('0x4b')](_0x1f6b4a[_0xce69('0x4c')],{})[_0xce69('0x2a')](function(_0x8c1f62){var _0x24ed9d=_0x1f6b4a[_0xce69('0x4d')][_0xce69('0x4e')]({'plain':!![]});if(!_0x24ed9d)throw new Error(_0xce69('0x4f'));if(_0x24ed9d[_0xce69('0x50')]===_0xce69('0x4d')){var _0x3810c5=_0x8c1f62['get']({'plain':!![]});var _0x15ff73=_0xce69('0x51');return db[_0xce69('0x52')][_0xce69('0x49')]({'where':{'name':_0x15ff73,'userProfileId':_0x24ed9d[_0xce69('0x53')]},'raw':!![]})['then'](function(_0x43e2f2){if(_0x43e2f2&&_0x43e2f2[_0xce69('0x54')]===0x0){return db[_0xce69('0x55')]['create']({'name':_0x3810c5[_0xce69('0x37')],'resourceId':_0x3810c5['id'],'type':_0x43e2f2[_0xce69('0x37')],'sectionId':_0x43e2f2['id']},{})[_0xce69('0x2a')](function(){return _0x8c1f62;});}else{return _0x8c1f62;}})[_0xce69('0x4a')](function(_0x22147b){logger['error'](_0xce69('0x56'),_0x22147b);throw _0x22147b;});}return _0x8c1f62;})['then'](respondWithResult(_0x37542b,0xc9))['catch'](handleError(_0x37542b,null));};exports[_0xce69('0x57')]=function(_0x1ca122,_0x329b8e){if(_0x1ca122[_0xce69('0x4c')]['id']){delete _0x1ca122[_0xce69('0x4c')]['id'];}return db[_0xce69('0x30')][_0xce69('0x49')]({'where':{'id':_0x1ca122['params']['id']}})[_0xce69('0x2a')](handleEntityNotFound(_0x329b8e,null))['then'](saveUpdates(_0x1ca122['body'],null))[_0xce69('0x2a')](respondWithResult(_0x329b8e,null))[_0xce69('0x4a')](handleError(_0x329b8e,null));};exports[_0xce69('0x58')]=function(_0x492519,_0x2bc4b5){var _0x519e4b=_0x492519[_0xce69('0x59')]['id'];var _0x2cf0f1=[];return db[_0xce69('0x5a')][_0xce69('0x5b')](function(_0x1bc4cc){var _0x1f39db='SELECT\x20UserId\x20FROM\x20user_has_teams\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db[_0xce69('0x5a')]['query'](_0x1f39db,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc})['then'](function(_0x5649ce){_0x2cf0f1=_['map'](_0x5649ce,function(_0x4424af){return Number(_0x4424af[_0xce69('0x5f')]);});})['then'](function(){var _0x30e6c3=_0xce69('0x60')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x30e6c3,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x158279){var _0x17ed9e=_['map'](_0x158279,function(_0x3d3f26){return Number(_0x3d3f26[_0xce69('0x61')]);});return db[_0xce69('0x62')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'VoiceQueueId':{'$in':_0x17ed9e}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x2bfd55='SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x2bfd55,{'type':db[_0xce69('0x5c')]['QueryTypes']['SELECT'],'raw':!![],'transaction':_0x1bc4cc});})['then'](function(_0x237d82){var _0x359f98=_['map'](_0x237d82,function(_0xcc0167){return Number(_0xcc0167['MailQueueId']);});return db['UserMailQueue'][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'MailQueueId':{'$in':_0x359f98}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x2fc64f='SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20'+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x2fc64f,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})['then'](function(_0x284680){var _0x16ded8=_[_0xce69('0x36')](_0x284680,function(_0x3502f8){return Number(_0x3502f8[_0xce69('0x63')]);});return db[_0xce69('0x64')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'SmsQueueId':{'$in':_0x16ded8}},'transaction':_0x1bc4cc});})['then'](function(){var _0x4941b1=_0xce69('0x65')+_0x519e4b;return db['sequelize']['query'](_0x4941b1,{'type':db[_0xce69('0x5c')][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x35f9f1){var _0x1332ab=_[_0xce69('0x36')](_0x35f9f1,function(_0x210552){return Number(_0x210552[_0xce69('0x66')]);});return db[_0xce69('0x67')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'ChatQueueId':{'$in':_0x1332ab}},'transaction':_0x1bc4cc});})['then'](function(){var _0x4377a8=_0xce69('0x68')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x4377a8,{'type':db[_0xce69('0x5c')]['QueryTypes'][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x108f87){var _0x44b57e=_[_0xce69('0x36')](_0x108f87,function(_0x38712a){return Number(_0x38712a[_0xce69('0x69')]);});return db[_0xce69('0x6a')]['destroy']({'where':{'UserId':{'$in':_0x2cf0f1},'FaxQueueId':{'$in':_0x44b57e}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x1223da=_0xce69('0x6b')+_0x519e4b;return db[_0xce69('0x5a')][_0xce69('0x39')](_0x1223da,{'type':db[_0xce69('0x5c')]['QueryTypes'][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x28cd5a){var _0x26b016=_[_0xce69('0x36')](_0x28cd5a,function(_0x5b931e){return Number(_0x5b931e[_0xce69('0x6c')]);});return db[_0xce69('0x6d')][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'OpenchannelQueueId':{'$in':_0x26b016}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){var _0x580157=_0xce69('0x6e')+_0x519e4b;return db['sequelize'][_0xce69('0x39')](_0x580157,{'type':db['Sequelize'][_0xce69('0x5d')][_0xce69('0x5e')],'raw':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x243707){var _0x4db058=_[_0xce69('0x36')](_0x243707,function(_0x16ea4e){return Number(_0x16ea4e[_0xce69('0x6f')]);});return db['UserWhatsappQueue'][_0xce69('0x58')]({'where':{'UserId':{'$in':_0x2cf0f1},'WhatsappQueueId':{'$in':_0x4db058}},'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(){return db[_0xce69('0x70')][_0xce69('0x49')]({'where':{'TeamId':_0x519e4b}});})[_0xce69('0x2a')](function(_0x13cfac){if(_0x13cfac===null){return;}return db['UserVoicePrefix']['destroy']({'where':{'UserId':{'$in':_0x2cf0f1},'VoicePrefixId':_0x13cfac[_0xce69('0x71')]},'transaction':_0x1bc4cc});})['then'](function(){return db['Team']['destroy']({'where':{'id':_0x519e4b},'cascade':!![],'transaction':_0x1bc4cc});})[_0xce69('0x2a')](function(_0x41dfb0){if(_0x41dfb0===0x0){_0x2bc4b5[_0xce69('0x21')](0x194);}else{return db[_0xce69('0x55')][_0xce69('0x58')]({'where':{'type':'Teams','resourceId':_0x519e4b},'cascade':!![],'transaction':_0x1bc4cc})['then'](function(){_0x2bc4b5[_0xce69('0x2d')](0xcc)[_0xce69('0x72')]();});}})[_0xce69('0x4a')](function(_0x2e8bd4){_0x2bc4b5['status'](0x1f4)[_0xce69('0x2e')](_0x2e8bd4);});});};exports[_0xce69('0x73')]=function(_0x1f4359,_0x141ee3,_0x586a5e){return db[_0xce69('0x30')][_0xce69('0x74')]({'where':{'id':_0x1f4359[_0xce69('0x59')]['id']}})['then'](handleEntityNotFound(_0x141ee3,null))['then'](function(_0x387c7e){if(!_0x1f4359['query'][_0xce69('0x75')]||!utils['isValidChannel'](_0x1f4359[_0xce69('0x39')]['channel'])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}var _0xcf40b2={};var _0x1f786e={};_0x1f786e[_0xce69('0x35')]=_[_0xce69('0x38')](db[_['capitalize'](_0x1f4359[_0xce69('0x39')]['channel'][_0xce69('0x78')]())+'Queue']['rawAttributes']);_0x1f786e['query']=_[_0xce69('0x38')](_0x1f4359['query']);_0x1f786e[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x1f786e['model'],_0x1f786e['query']);_0xcf40b2[_0xce69('0x3b')]=_[_0xce69('0x3c')](_0x1f786e[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x1f4359[_0xce69('0x39')]['fields']));_0xcf40b2[_0xce69('0x3b')]=_0xcf40b2[_0xce69('0x3b')]['length']?_0xcf40b2['attributes']:_0x1f786e[_0xce69('0x35')];_0xcf40b2[_0xce69('0x24')]=qs['limit'](_0x1f4359[_0xce69('0x39')][_0xce69('0x24')]);_0xcf40b2[_0xce69('0x26')]=qs[_0xce69('0x26')](_0x1f4359[_0xce69('0x39')][_0xce69('0x26')]);_0xcf40b2[_0xce69('0x79')]=qs['sort'](_0x1f4359[_0xce69('0x39')][_0xce69('0x40')]);_0xcf40b2[_0xce69('0x41')]=qs[_0xce69('0x3a')](_[_0xce69('0x7a')](_0x1f4359[_0xce69('0x39')],_0x1f786e['filters']));_0xcf40b2=_[_0xce69('0x42')]({},_0xcf40b2,_0x1f4359[_0xce69('0x48')]);return _0x387c7e['get'+_[_0xce69('0x7b')](_0x1f4359[_0xce69('0x39')][_0xce69('0x75')]['toLowerCase']())+_0xce69('0x7c')](_0xcf40b2);})[_0xce69('0x2a')](respondWithResult(_0x141ee3,null))['catch'](handleError(_0x141ee3,null));};exports[_0xce69('0x7d')]=function(_0x5d5a21,_0x2a45e8,_0x590c43){return db[_0xce69('0x30')]['findOne']({'where':{'id':_0x5d5a21[_0xce69('0x59')]['id']}})[_0xce69('0x2a')](function(_0x1a2251){if(_0x1a2251){if(!_0x5d5a21[_0xce69('0x4c')][_0xce69('0x75')]||!utils[_0xce69('0x7e')](_0x5d5a21['body'][_0xce69('0x75')])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}return _0x1a2251[_0xce69('0x7f')+_[_0xce69('0x7b')](_0x5d5a21[_0xce69('0x4c')]['channel'][_0xce69('0x78')]())+'Queues'](_0x5d5a21[_0xce69('0x4c')][_0xce69('0x80')]);}return null;})['then'](handleEntityNotFound(_0x2a45e8,null))[_0xce69('0x2a')](respondWithStatusCode(_0x2a45e8,null))[_0xce69('0x4a')](handleError(_0x2a45e8,null));};exports[_0xce69('0x81')]=function(_0x37557f,_0x28fb39,_0x1122ff){return db[_0xce69('0x30')][_0xce69('0x74')]({'where':{'id':_0x37557f['params']['id']}})['then'](function(_0x6b8878){if(_0x6b8878){if(!_0x37557f['query'][_0xce69('0x75')]||!utils[_0xce69('0x7e')](_0x37557f[_0xce69('0x39')][_0xce69('0x75')])){throw new db[(_0xce69('0x5c'))][(_0xce69('0x76'))](_0xce69('0x77'));}return _0x6b8878[_0xce69('0x82')+_[_0xce69('0x7b')](_0x37557f['query'][_0xce69('0x75')][_0xce69('0x78')]())+_0xce69('0x7c')](_0x37557f[_0xce69('0x39')][_0xce69('0x80')]);}return null;})['then'](handleEntityNotFound(_0x28fb39,null))[_0xce69('0x2a')](respondWithStatusCode(_0x28fb39,null))[_0xce69('0x4a')](handleError(_0x28fb39,null));};exports[_0xce69('0x83')]=function(_0x4ef427,_0x32dd2c){var _0x1a923f=_[_0xce69('0x84')](_0x4ef427['body']['ids'])?_0x4ef427['body'][_0xce69('0x80')]:[_0x4ef427[_0xce69('0x4c')][_0xce69('0x80')]];var _0x1f0a8e=_0x4ef427['params']['id'];return db['Team'][_0xce69('0x49')]({'where':{'id':_0x1f0a8e}})[_0xce69('0x2a')](handleEntityNotFound(_0x32dd2c,null))['then'](function(_0x570def){if(_0x570def){var _0x3d7a42=[_0xce69('0x85'),_0xce69('0x86'),_0xce69('0x87'),'Sms',_0xce69('0x88'),_0xce69('0x89'),_0xce69('0x8a')];return db[_0xce69('0x5a')][_0xce69('0x5b')](function(_0x561444){var _0x2447dc=_[_0xce69('0x36')](_0x3d7a42,function(_0x16de40){var _0x7d8b5d={'attributes':['id',_0xce69('0x37')]};if(_0x16de40==='Voice'){_0x7d8b5d[_0xce69('0x8b')]={'attributes':[_0xce69('0x8c')]};}return _0x570def[_0xce69('0x4e')+_0x16de40+_0xce69('0x7c')](_0x7d8b5d)[_0xce69('0x2a')](function(_0x1a3d3a){var _0x53f237=_['map'](_0x1a3d3a,function(_0x24b4b9){var _0x22eec7=_[_0xce69('0x36')](_0x1a923f,function(_0x38fe4e){var _0x4b8e92={'where':{'UserId':_0x38fe4e,[_0x16de40+_0xce69('0x8d')]:_0x24b4b9['id']},'transaction':_0x561444};if(_0x16de40===_0xce69('0x85')){_0x4b8e92[_0xce69('0x1c')]={'penalty':_0x24b4b9[_0xce69('0x8e')][_0xce69('0x8c')]};}return db[_0xce69('0x8f')+_0x16de40+_0xce69('0x90')]['findOrCreate'](_0x4b8e92)[_0xce69('0x2a')](function(){socket[_0xce69('0x91')](_0xce69('0x4d')+_0x16de40+_0xce69('0x92'),{'UserId':_0x38fe4e,[_0x16de40+_0xce69('0x8d')]:_0x24b4b9['id']});if(_0x16de40!==_0xce69('0x85')){return;}return db[_0xce69('0x8f')]['findAll']({'where':{'id':_0x1a923f,'online':0x1},'attributes':['id',_0xce69('0x37'),_0xce69('0x93'),_0xce69('0x94'),'interface'],'raw':!![]})['then'](function(_0x5cb04c){var _0x18e4eb=_[_0xce69('0x36')](_0x5cb04c,function(_0xc798d2){return db[_0xce69('0x95')][_0xce69('0x96')]({'membername':_0xc798d2[_0xce69('0x37')],'UserId':_0xc798d2['id'],'queue_name':_0x24b4b9[_0xce69('0x37')],'VoiceQueueId':_0x24b4b9['id'],'interface':_[_0xce69('0x97')](_0xc798d2[_0xce69('0x98')])?util[_0xce69('0x99')](_0xce69('0x9a'),_0xc798d2[_0xce69('0x37')]):_0xc798d2['interface'],'paused':_0xc798d2[_0xce69('0x94')]||![],'penalty':_0x24b4b9[_0xce69('0x8e')]['penalty']},{'transaction':_0x561444});});return Promise[_0xce69('0x9b')](_0x18e4eb);});});});return Promise[_0xce69('0x9b')](_0x22eec7);});return Promise[_0xce69('0x9b')](_0x53f237);})['then'](function(){return db[_0xce69('0x70')]['findOne']({'where':{'teamId':_0x1f0a8e}})[_0xce69('0x2a')](function(_0x36ac11){if(_0x36ac11){var _0x2e56ec=_[_0xce69('0x36')](_0x1a923f,function(_0x457c2b){db[_0xce69('0x9c')][_0xce69('0x96')]({'UserId':_0x457c2b,'VoicePrefixId':_0x36ac11[_0xce69('0x71')]});});return Promise[_0xce69('0x9b')](_0x2e56ec);}});});});return Promise['all'](_0x2447dc)[_0xce69('0x2a')](function(){return _0x570def[_0xce69('0x83')](_0x1a923f,{'transaction':_0x561444})[_0xce69('0x9d')](function(_0x1bce86){return _0x1bce86;});});});}})[_0xce69('0x2a')](respondWithResult(_0x32dd2c,null))['catch'](handleError(_0x32dd2c,null));};exports[_0xce69('0x9e')]=function(_0x944609,_0x1e3f0e){var _0x38a26a=_[_0xce69('0x84')](_0x944609[_0xce69('0x39')][_0xce69('0x80')])?_0x944609['query'][_0xce69('0x80')]:[_0x944609[_0xce69('0x39')][_0xce69('0x80')]];var _0x3ddd5c=_0x944609[_0xce69('0x59')]['id'];return db[_0xce69('0x30')][_0xce69('0x49')]({'where':{'id':_0x3ddd5c}})['then'](handleEntityNotFound(_0x1e3f0e,null))[_0xce69('0x2a')](function(_0x4197b0){if(_0x4197b0){var _0x1cbed6=[_0xce69('0x85'),_0xce69('0x86'),'Mail',_0xce69('0x9f'),'Fax',_0xce69('0x89'),_0xce69('0x8a')];return db[_0xce69('0x5a')]['transaction'](function(_0x4eae82){var _0x267a1f=_[_0xce69('0x36')](_0x1cbed6,function(_0x119bca){var _0x38e046={'attributes':['id',_0xce69('0x37')]};return _0x4197b0[_0xce69('0x4e')+_0x119bca+_0xce69('0x7c')](_0x38e046)[_0xce69('0x2a')](function(_0xcaab04){var _0x54986b=_['map'](_0xcaab04,function(_0x1e95ba){return _0x1e95ba[_0xce69('0x9e')](_0x38a26a,{'transaction':_0x4eae82})[_0xce69('0x2a')](function(){var _0x127fce=_[_0xce69('0x36')](_0x38a26a,function(_0x3d922a){socket[_0xce69('0x91')]('user'+_0x119bca+_0xce69('0xa0'),{'UserId':Number(_0x3d922a),[_0x119bca+_0xce69('0x8d')]:_0x1e95ba['id']});if(_0x119bca!==_0xce69('0x85')){return;}return db['UserVoiceQueueRt'][_0xce69('0x58')]({'where':{'VoiceQueueId':_0x1e95ba['id'],'UserId':_0x3d922a},'transaction':_0x4eae82});});return Promise['all'](_0x127fce);});});return Promise['all'](_0x54986b);});});return Promise[_0xce69('0x9b')](_0x267a1f)[_0xce69('0x2a')](function(){return _0x4197b0['removeAgents'](_0x38a26a,{'transaction':_0x4eae82});})[_0xce69('0x2a')](function(){return db['TeamVoicePrefix'][_0xce69('0x74')]({'where':{'teamId':_0x3ddd5c}})[_0xce69('0x2a')](function(_0x49ac4){if(_0x49ac4){var _0x3354fc=_[_0xce69('0x36')](_0x38a26a,function(_0x579b06){db['UserVoicePrefix']['destroy']({'where':{'UserId':_0x579b06,'VoicePrefixId':_0x49ac4[_0xce69('0x71')]}});});return Promise['all'](_0x3354fc);}});});});}})['then'](respondWithStatusCode(_0x1e3f0e,null))[_0xce69('0x4a')](handleError(_0x1e3f0e,null));};exports['getAgents']=function(_0x32eee9,_0x2c5826,_0x2718c5){var _0x6fb2c0={};var _0x970a={};var _0x15a6db;var _0x4ac0a3;return db[_0xce69('0x30')]['findOne']({'where':{'id':_0x32eee9[_0xce69('0x59')]['id']}})[_0xce69('0x2a')](handleEntityNotFound(_0x2c5826,null))[_0xce69('0x2a')](function(_0x504417){if(_0x504417){_0x15a6db=_0x504417;_0x970a[_0xce69('0x35')]=_[_0xce69('0x38')](db[_0xce69('0x8f')][_0xce69('0x31')]);_0x970a[_0xce69('0x39')]=_['keys'](_0x32eee9['query']);_0x970a[_0xce69('0x3a')]=_[_0xce69('0x3c')](_0x970a['model'],_0x970a[_0xce69('0x39')]);_0x6fb2c0['attributes']=_['intersection'](_0x970a[_0xce69('0x35')],qs[_0xce69('0x3d')](_0x32eee9[_0xce69('0x39')][_0xce69('0x3d')]));_0x6fb2c0[_0xce69('0x3b')]=_0x6fb2c0['attributes'][_0xce69('0x3e')]?_0x6fb2c0[_0xce69('0x3b')]:_0x970a[_0xce69('0x35')];_0x6fb2c0[_0xce69('0x79')]=qs['sort'](_0x32eee9['query'][_0xce69('0x40')]);_0x6fb2c0[_0xce69('0x41')]=qs[_0xce69('0x3a')](_[_0xce69('0x7a')](_0x32eee9[_0xce69('0x39')],_0x970a[_0xce69('0x3a')]));if(_0x32eee9['query'][_0xce69('0x43')]){_0x6fb2c0[_0xce69('0x41')]=_['merge'](_0x6fb2c0[_0xce69('0x41')],{'$or':_[_0xce69('0x36')](_0x6fb2c0[_0xce69('0x3b')],function(_0x4c9ec9){var _0x37a139={};_0x37a139[_0x4c9ec9]={'$like':'%'+_0x32eee9[_0xce69('0x39')][_0xce69('0x43')]+'%'};return _0x37a139;})});}_0x6fb2c0=_[_0xce69('0x42')]({},_0x6fb2c0,_0x32eee9['options']);return _0x15a6db[_0xce69('0xa1')](_0x6fb2c0);}})[_0xce69('0x2a')](function(_0x2f77ed){if(_0x2f77ed){_0x4ac0a3=_0x2f77ed[_0xce69('0x3e')];if(!_0x32eee9[_0xce69('0x39')][_0xce69('0xa2')]('nolimit')){_0x6fb2c0[_0xce69('0x24')]=qs[_0xce69('0x24')](_0x32eee9[_0xce69('0x39')][_0xce69('0x24')]);_0x6fb2c0[_0xce69('0x26')]=qs[_0xce69('0x26')](_0x32eee9['query'][_0xce69('0x26')]);}return _0x15a6db[_0xce69('0xa1')](_0x6fb2c0);}})[_0xce69('0x2a')](function(_0x3b95cb){if(_0x3b95cb){return _0x3b95cb?{'count':_0x4ac0a3,'rows':_0x3b95cb}:null;}})[_0xce69('0x2a')](respondWithResult(_0x2c5826,null))[_0xce69('0x4a')](handleError(_0x2c5826,null));};
\ No newline at end of file
index 3768721..aef7501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51c1=['events','../../mysqldb','Team','setMaxListeners','save','update','emit','hasOwnProperty','exports'];(function(_0x1c8c07,_0x2579af){var _0x4aa88f=function(_0x2ad13d){while(--_0x2ad13d){_0x1c8c07['push'](_0x1c8c07['shift']());}};_0x4aa88f(++_0x2579af);}(_0x51c1,0x14d));var _0x151c=function(_0x46a38b,_0x16ffb5){_0x46a38b=_0x46a38b-0x0;var _0x346e75=_0x51c1[_0x46a38b];return _0x346e75;};'use strict';var EventEmitter=require(_0x151c('0x0'));var Team=require(_0x151c('0x1'))['db'][_0x151c('0x2')];var TeamEvents=new EventEmitter();TeamEvents[_0x151c('0x3')](0x0);var events={'afterCreate':_0x151c('0x4'),'afterUpdate':_0x151c('0x5'),'afterDestroy':'remove'};function emitEvent(_0x30c639){return function(_0x991fa6,_0xa704c4,_0x328635){TeamEvents[_0x151c('0x6')](_0x30c639+':'+_0x991fa6['id'],_0x991fa6);TeamEvents[_0x151c('0x6')](_0x30c639,_0x991fa6);_0x328635(null);};}for(var e in events){if(events[_0x151c('0x7')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x151c('0x8')]=TeamEvents;
\ No newline at end of file
+var _0xe7d0=['setMaxListeners','save','emit','exports','events','../../mysqldb'];(function(_0x2ff94e,_0x170aca){var _0x31e317=function(_0x29be0f){while(--_0x29be0f){_0x2ff94e['push'](_0x2ff94e['shift']());}};_0x31e317(++_0x170aca);}(_0xe7d0,0x1ea));var _0x0e7d=function(_0x432920,_0x3b6441){_0x432920=_0x432920-0x0;var _0x2da094=_0xe7d0[_0x432920];return _0x2da094;};'use strict';var EventEmitter=require(_0x0e7d('0x0'));var Team=require(_0x0e7d('0x1'))['db']['Team'];var TeamEvents=new EventEmitter();TeamEvents[_0x0e7d('0x2')](0x0);var events={'afterCreate':_0x0e7d('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x14ed84){return function(_0x127bbb,_0x2e77d5,_0xfd34b1){TeamEvents[_0x0e7d('0x4')](_0x14ed84+':'+_0x127bbb['id'],_0x127bbb);TeamEvents[_0x0e7d('0x4')](_0x14ed84,_0x127bbb);_0xfd34b1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x0e7d('0x5')]=TeamEvents;
\ No newline at end of file
index be30e7a..36283f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ebc=['all','get','then','map','setDataValue','channel','catch','exports','define','teams','Chat','Fax','Openchannel','Voice','resolve'];(function(_0x25d2fb,_0x18a774){var _0x1ded53=function(_0x4c0715){while(--_0x4c0715){_0x25d2fb['push'](_0x25d2fb['shift']());}};_0x1ded53(++_0x18a774);}(_0x9ebc,0x1b4));var _0xc9eb=function(_0x310690,_0xe580d5){_0x310690=_0x310690-0x0;var _0x10ccb9=_0x9ebc[_0x310690];return _0x10ccb9;};'use strict';var _=require('lodash');var attributes=require('./team.attributes');function getQueuesByChannel(_0x64f7c8,_0x48cef9){var _0x2e07d2=_0xc9eb('0x0')+_0x48cef9+'Queues';return _0x64f7c8[_0x2e07d2]()[_0xc9eb('0x1')](function(_0xe23ac5){return _[_0xc9eb('0x2')](_0xe23ac5,function(_0x47cf3c){_0x47cf3c[_0xc9eb('0x3')](_0xc9eb('0x4'),_0x48cef9);return _0x47cf3c;});})[_0xc9eb('0x5')](function(_0x37e08e){throw _0x37e08e;});}module[_0xc9eb('0x6')]=function(_0x16cd93){return _0x16cd93[_0xc9eb('0x7')]('Team',attributes,{'tableName':_0xc9eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x12eb23=this;var _0x3f2a5d=[_0xc9eb('0x9'),_0xc9eb('0xa'),'Mail',_0xc9eb('0xb'),'Sms',_0xc9eb('0xc'),'Whatsapp'];return Promise[_0xc9eb('0xd')]()[_0xc9eb('0x1')](function(){var _0xc392ae=_[_0xc9eb('0x2')](_0x3f2a5d,function(_0xd7598b){return getQueuesByChannel(_0x12eb23,_0xd7598b);});return Promise[_0xc9eb('0xe')](_0xc392ae);})[_0xc9eb('0x5')](function(_0x54cefb){throw _0x54cefb;});}}});};
\ No newline at end of file
+var _0xb585=['then','map','setDataValue','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Voice','Whatsapp','all','lodash','./team.attributes','get','Queues'];(function(_0x22c1e2,_0x5032a9){var _0x27be85=function(_0x1c64d0){while(--_0x1c64d0){_0x22c1e2['push'](_0x22c1e2['shift']());}};_0x27be85(++_0x5032a9);}(_0xb585,0x178));var _0x5b58=function(_0x4ffa05,_0x2d312e){_0x4ffa05=_0x4ffa05-0x0;var _0x1c4b4d=_0xb585[_0x4ffa05];return _0x1c4b4d;};'use strict';var _=require(_0x5b58('0x0'));var attributes=require(_0x5b58('0x1'));function getQueuesByChannel(_0x1aae17,_0x26e480){var _0x420cc2=_0x5b58('0x2')+_0x26e480+_0x5b58('0x3');return _0x1aae17[_0x420cc2]()[_0x5b58('0x4')](function(_0x4870c0){return _[_0x5b58('0x5')](_0x4870c0,function(_0xbfb099){_0xbfb099[_0x5b58('0x6')]('channel',_0x26e480);return _0xbfb099;});})[_0x5b58('0x7')](function(_0x28d4c5){throw _0x28d4c5;});}module[_0x5b58('0x8')]=function(_0x3d9dc7){return _0x3d9dc7[_0x5b58('0x9')](_0x5b58('0xa'),attributes,{'tableName':_0x5b58('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0xb6230b=this;var _0x189172=[_0x5b58('0xc'),_0x5b58('0xd'),_0x5b58('0xe'),_0x5b58('0xf'),_0x5b58('0x10'),_0x5b58('0x11'),_0x5b58('0x12')];return Promise['resolve']()[_0x5b58('0x4')](function(){var _0x33f643=_['map'](_0x189172,function(_0x439ccf){return getQueuesByChannel(_0xb6230b,_0x439ccf);});return Promise[_0x5b58('0x13')](_0x33f643);})[_0x5b58('0x7')](function(_0x320de5){throw _0x320de5;});}}});};
\ No newline at end of file
index 6a73b60..1bbe511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90c3=['debug','Team,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','localhost','register','request','then','Team,\x20%s,\x20%s'];(function(_0x220008,_0x19d6cf){var _0x540d32=function(_0x4fd2f7){while(--_0x4fd2f7){_0x220008['push'](_0x220008['shift']());}};_0x540d32(++_0x19d6cf);}(_0x90c3,0x192));var _0x390c=function(_0x486562,_0x3690f3){_0x486562=_0x486562-0x0;var _0x1162f9=_0x90c3[_0x486562];return _0x1162f9;};'use strict';var _=require(_0x390c('0x0'));var util=require(_0x390c('0x1'));var moment=require('moment');var BPromise=require(_0x390c('0x2'));var rs=require(_0x390c('0x3'));var fs=require('fs');var Redis=require(_0x390c('0x4'));var db=require(_0x390c('0x5'))['db'];var utils=require(_0x390c('0x6'));var logger=require(_0x390c('0x7'))('rpc');var config=require(_0x390c('0x8'));var jayson=require(_0x390c('0x9'));var client=jayson[_0x390c('0xa')]['http']({'port':0x232a});config[_0x390c('0xb')]=_[_0x390c('0xc')](config[_0x390c('0xb')],{'host':_0x390c('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x390c('0xb')]));require('./team.socket')[_0x390c('0xe')](socket);function respondWithRpcPromise(_0x5144cd,_0x59322e,_0x136800){return new BPromise(function(_0x5e3307,_0x57e85b){return client[_0x390c('0xf')](_0x5144cd,_0x136800)[_0x390c('0x10')](function(_0x1af91d){logger['info'](_0x390c('0x11'),_0x59322e,'request\x20sent');logger[_0x390c('0x12')](_0x390c('0x13'),_0x59322e,'request\x20sent',JSON[_0x390c('0x14')](_0x1af91d));if(_0x1af91d[_0x390c('0x15')]){if(_0x1af91d[_0x390c('0x15')][_0x390c('0x16')]===0x1f4){logger[_0x390c('0x15')](_0x390c('0x11'),_0x59322e,_0x1af91d[_0x390c('0x15')][_0x390c('0x17')]);return _0x57e85b(_0x1af91d['error'][_0x390c('0x17')]);}logger[_0x390c('0x15')](_0x390c('0x11'),_0x59322e,_0x1af91d[_0x390c('0x15')]['message']);return _0x5e3307(_0x1af91d[_0x390c('0x15')][_0x390c('0x17')]);}else{logger[_0x390c('0x18')]('Team,\x20%s,\x20%s',_0x59322e,_0x390c('0x19'));_0x5e3307(_0x1af91d[_0x390c('0x1a')][_0x390c('0x17')]);}})[_0x390c('0x1b')](function(_0x3d9cd5){logger['error'](_0x390c('0x11'),_0x59322e,_0x3d9cd5);_0x57e85b(_0x3d9cd5);});});}
\ No newline at end of file
+var _0x065c=['error','code','message','info','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./team.socket','register','request','Team,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x065c,0xde));var _0xc065=function(_0x22ee1e,_0x3eff80){_0x22ee1e=_0x22ee1e-0x0;var _0x49a5c9=_0x065c[_0x22ee1e];return _0x49a5c9;};'use strict';var _=require(_0xc065('0x0'));var util=require(_0xc065('0x1'));var moment=require(_0xc065('0x2'));var BPromise=require('bluebird');var rs=require(_0xc065('0x3'));var fs=require('fs');var Redis=require(_0xc065('0x4'));var db=require(_0xc065('0x5'))['db'];var utils=require(_0xc065('0x6'));var logger=require('../../config/logger')(_0xc065('0x7'));var config=require(_0xc065('0x8'));var jayson=require(_0xc065('0x9'));var client=jayson[_0xc065('0xa')][_0xc065('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0xc065('0xc')],{'host':_0xc065('0xd'),'port':0x18eb});var socket=require(_0xc065('0xe'))(new Redis(config[_0xc065('0xc')]));require(_0xc065('0xf'))[_0xc065('0x10')](socket);function respondWithRpcPromise(_0x4f0189,_0xa50c4c,_0x48ec54){return new BPromise(function(_0xd9fa42,_0x541115){return client[_0xc065('0x11')](_0x4f0189,_0x48ec54)['then'](function(_0x5b4e1d){logger['info'](_0xc065('0x12'),_0xa50c4c,_0xc065('0x13'));logger['debug']('Team,\x20%s,\x20%s,\x20%s',_0xa50c4c,_0xc065('0x13'),JSON[_0xc065('0x14')](_0x5b4e1d));if(_0x5b4e1d[_0xc065('0x15')]){if(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x16')]===0x1f4){logger[_0xc065('0x15')](_0xc065('0x12'),_0xa50c4c,_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);return _0x541115(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);}logger['error'](_0xc065('0x12'),_0xa50c4c,_0x5b4e1d['error'][_0xc065('0x17')]);return _0xd9fa42(_0x5b4e1d[_0xc065('0x15')][_0xc065('0x17')]);}else{logger[_0xc065('0x18')](_0xc065('0x12'),_0xa50c4c,'request\x20sent');_0xd9fa42(_0x5b4e1d[_0xc065('0x19')][_0xc065('0x17')]);}})[_0xc065('0x1a')](function(_0x580c2e){logger[_0xc065('0x15')](_0xc065('0x12'),_0xa50c4c,_0x580c2e);_0x541115(_0x580c2e);});});}
\ No newline at end of file
index d338a6d..6beb2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1572=['update','emit','removeListener','register','length','./team.events','save','remove'];(function(_0x24487f,_0x9b3ea0){var _0x456456=function(_0x2ba373){while(--_0x2ba373){_0x24487f['push'](_0x24487f['shift']());}};_0x456456(++_0x9b3ea0);}(_0x1572,0xf5));var _0x2157=function(_0x32fa75,_0x1153ae){_0x32fa75=_0x32fa75-0x0;var _0x22501c=_0x1572[_0x32fa75];return _0x22501c;};'use strict';var TeamEvents=require(_0x2157('0x0'));var events=[_0x2157('0x1'),_0x2157('0x2'),_0x2157('0x3')];function createListener(_0x11c390,_0x18c6ec){return function(_0x9a039b){_0x18c6ec[_0x2157('0x4')](_0x11c390,_0x9a039b);};}function removeListener(_0x214311,_0x30e5c6){return function(){TeamEvents[_0x2157('0x5')](_0x214311,_0x30e5c6);};}exports[_0x2157('0x6')]=function(_0x2f13ab){for(var _0x9e1c46=0x0,_0x286be0=events[_0x2157('0x7')];_0x9e1c46<_0x286be0;_0x9e1c46++){var _0x471e09=events[_0x9e1c46];var _0x91bf75=createListener('team:'+_0x471e09,_0x2f13ab);TeamEvents['on'](_0x471e09,_0x91bf75);}};
\ No newline at end of file
+var _0x1e8c=['team:','save','remove','update','removeListener','register','length'];(function(_0x2577c4,_0x73a8ae){var _0x43e4b8=function(_0x1474e3){while(--_0x1474e3){_0x2577c4['push'](_0x2577c4['shift']());}};_0x43e4b8(++_0x73a8ae);}(_0x1e8c,0xd3));var _0xc1e8=function(_0x33d4a2,_0x2baaf4){_0x33d4a2=_0x33d4a2-0x0;var _0x2c793f=_0x1e8c[_0x33d4a2];return _0x2c793f;};'use strict';var TeamEvents=require('./team.events');var events=[_0xc1e8('0x0'),_0xc1e8('0x1'),_0xc1e8('0x2')];function createListener(_0x3e305e,_0x30b815){return function(_0x396907){_0x30b815['emit'](_0x3e305e,_0x396907);};}function removeListener(_0xe38ad6,_0x1c7941){return function(){TeamEvents[_0xc1e8('0x3')](_0xe38ad6,_0x1c7941);};}exports[_0xc1e8('0x4')]=function(_0x2547e3){for(var _0x18613e=0x0,_0x547868=events[_0xc1e8('0x5')];_0x18613e<_0x547868;_0x18613e++){var _0x40e7cd=events[_0x18613e];var _0x3b5001=createListener(_0xc1e8('0x6')+_0x40e7cd,_0x2547e3);TeamEvents['on'](_0x40e7cd,_0x3b5001);}};
\ No newline at end of file
index eac1e8e..82b878b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb32d=['sequelize','exports','INTEGER'];(function(_0x260bd7,_0x3912e9){var _0x533577=function(_0x546e4e){while(--_0x546e4e){_0x260bd7['push'](_0x260bd7['shift']());}};_0x533577(++_0x3912e9);}(_0xb32d,0x1da));var _0xdb32=function(_0x11c06e,_0x1cb9c7){_0x11c06e=_0x11c06e-0x0;var _0x20a7dc=_0xb32d[_0x11c06e];return _0x20a7dc;};'use strict';var Sequelize=require(_0xdb32('0x0'));module[_0xdb32('0x1')]={'TeamId':{'type':Sequelize[_0xdb32('0x2')]},'VoicePrefixId':{'type':Sequelize[_0xdb32('0x2')]}};
\ No newline at end of file
+var _0xfc9f=['sequelize','INTEGER'];(function(_0x318397,_0x4a2f1f){var _0x29adcc=function(_0x5196ff){while(--_0x5196ff){_0x318397['push'](_0x318397['shift']());}};_0x29adcc(++_0x4a2f1f);}(_0xfc9f,0x7a));var _0xffc9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xfc9f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xffc9('0x0'));module['exports']={'TeamId':{'type':Sequelize[_0xffc9('0x1')]},'VoicePrefixId':{'type':Sequelize[_0xffc9('0x1')]}};
\ No newline at end of file
index 2542673..e138915 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3276=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','team_has_voice_prefixes','lodash'];(function(_0x19843a,_0x5af7b3){var _0x18bd67=function(_0xd5849a){while(--_0xd5849a){_0x19843a['push'](_0x19843a['shift']());}};_0x18bd67(++_0x5af7b3);}(_0x3276,0xc7));var _0x6327=function(_0xf5b9a1,_0x59737e){_0xf5b9a1=_0xf5b9a1-0x0;var _0xeb3edc=_0x3276[_0xf5b9a1];return _0xeb3edc;};'use strict';var _=require(_0x6327('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x6327('0x1'));var moment=require(_0x6327('0x2'));var BPromise=require(_0x6327('0x3'));var rp=require(_0x6327('0x4'));var fs=require('fs');var path=require(_0x6327('0x5'));var rimraf=require(_0x6327('0x6'));var config=require(_0x6327('0x7'));var attributes=require('./teamVoicePrefix.attributes');module['exports']=function(_0x10b982,_0x37adde){return _0x10b982[_0x6327('0x8')]('TeamVoicePrefix',attributes,{'tableName':_0x6327('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc06d=['bluebird','request-promise','../../config/environment','exports','TeamVoicePrefix','team_has_voice_prefixes','lodash','util','../../config/logger','api'];(function(_0x584ca0,_0xe401da){var _0x4125dc=function(_0x34fc80){while(--_0x34fc80){_0x584ca0['push'](_0x584ca0['shift']());}};_0x4125dc(++_0xe401da);}(_0xc06d,0x15a));var _0xdc06=function(_0x43d3ca,_0x5ace94){_0x43d3ca=_0x43d3ca-0x0;var _0x1bc9dd=_0xc06d[_0x43d3ca];return _0x1bc9dd;};'use strict';var _=require(_0xdc06('0x0'));var util=require(_0xdc06('0x1'));var logger=require(_0xdc06('0x2'))(_0xdc06('0x3'));var moment=require('moment');var BPromise=require(_0xdc06('0x4'));var rp=require(_0xdc06('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdc06('0x6'));var attributes=require('./teamVoicePrefix.attributes');module[_0xdc06('0x7')]=function(_0x2f7692,_0x5ce60c){return _0x2f7692['define'](_0xdc06('0x8'),attributes,{'tableName':_0xdc06('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce78d78..b2552d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x4d161e,_0x523a15){var _0x55d845=function(_0x1d3193){while(--_0x1d3193){_0x4d161e['push'](_0x4d161e['shift']());}};_0x55d845(++_0x523a15);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x16ef9c,_0x55568f){var _0x38ad91=function(_0x459f6c){while(--_0x459f6c){_0x16ef9c['push'](_0x16ef9c['shift']());}};_0x38ad91(++_0x55568f);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
index 63d3016..2af77f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb68a=['INTEGER','sequelize','exports'];(function(_0x2ffb43,_0x30c2d0){var _0x44fab3=function(_0x24c643){while(--_0x24c643){_0x2ffb43['push'](_0x2ffb43['shift']());}};_0x44fab3(++_0x30c2d0);}(_0xb68a,0xac));var _0xab68=function(_0x564eec,_0x2174aa){_0x564eec=_0x564eec-0x0;var _0xb25d75=_0xb68a[_0x564eec];return _0xb25d75;};'use strict';var Sequelize=require(_0xab68('0x0'));module[_0xab68('0x1')]={'penalty':{'type':Sequelize[_0xab68('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x8109=['INTEGER','sequelize'];(function(_0x1e5ce3,_0x16f008){var _0x19b7a7=function(_0x1b0011){while(--_0x1b0011){_0x1e5ce3['push'](_0x1e5ce3['shift']());}};_0x19b7a7(++_0x16f008);}(_0x8109,0xff));var _0x9810=function(_0x3e334d,_0x5d37db){_0x3e334d=_0x3e334d-0x0;var _0x2949ce=_0x8109[_0x3e334d];return _0x2949ce;};'use strict';var Sequelize=require(_0x9810('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x9810('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 5f112ca..e8c7c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2285=['define','TeamVoiceQueue','team_has_voice_queues','util','../../config/logger','api','moment','bluebird','path','rimraf','./teamVoiceQueue.attributes','exports'];(function(_0x236a3c,_0x1b41c2){var _0x58143e=function(_0x404abd){while(--_0x404abd){_0x236a3c['push'](_0x236a3c['shift']());}};_0x58143e(++_0x1b41c2);}(_0x2285,0x177));var _0x5228=function(_0x6d2084,_0x685029){_0x6d2084=_0x6d2084-0x0;var _0x474ffc=_0x2285[_0x6d2084];return _0x474ffc;};'use strict';var _=require('lodash');var util=require(_0x5228('0x0'));var logger=require(_0x5228('0x1'))(_0x5228('0x2'));var moment=require(_0x5228('0x3'));var BPromise=require(_0x5228('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5228('0x5'));var rimraf=require(_0x5228('0x6'));var config=require('../../config/environment');var attributes=require(_0x5228('0x7'));module[_0x5228('0x8')]=function(_0x322927,_0x5ef1d3){return _0x322927[_0x5228('0x9')](_0x5228('0xa'),attributes,{'tableName':_0x5228('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6c96=['api','bluebird','request-promise','path','rimraf','../../config/environment','./teamVoiceQueue.attributes','exports','TeamVoiceQueue','lodash','../../config/logger'];(function(_0x4828b1,_0x5c8cf3){var _0x1fec1b=function(_0x3f2e5a){while(--_0x3f2e5a){_0x4828b1['push'](_0x4828b1['shift']());}};_0x1fec1b(++_0x5c8cf3);}(_0x6c96,0x1c1));var _0x66c9=function(_0x4f969e,_0xc440b){_0x4f969e=_0x4f969e-0x0;var _0x2958ea=_0x6c96[_0x4f969e];return _0x2958ea;};'use strict';var _=require(_0x66c9('0x0'));var util=require('util');var logger=require(_0x66c9('0x1'))(_0x66c9('0x2'));var moment=require('moment');var BPromise=require(_0x66c9('0x3'));var rp=require(_0x66c9('0x4'));var fs=require('fs');var path=require(_0x66c9('0x5'));var rimraf=require(_0x66c9('0x6'));var config=require(_0x66c9('0x7'));var attributes=require(_0x66c9('0x8'));module[_0x66c9('0x9')]=function(_0x55b24d,_0x1c8b59){return _0x55b24d['define'](_0x66c9('0xa'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8ada800..d60e0ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18a9=['then','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x23fe16,_0x2d4a79){var _0x38e52d=function(_0xa923d0){while(--_0xa923d0){_0x23fe16['push'](_0x23fe16['shift']());}};_0x38e52d(++_0x2d4a79);}(_0x18a9,0x15b));var _0x918a=function(_0x4ef878,_0x460fb6){_0x4ef878=_0x4ef878-0x0;var _0x5654db=_0x18a9[_0x4ef878];return _0x5654db;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x918a('0x0'));var BPromise=require(_0x918a('0x1'));var rs=require(_0x918a('0x2'));var fs=require('fs');var Redis=require(_0x918a('0x3'));var db=require(_0x918a('0x4'))['db'];var utils=require(_0x918a('0x5'));var logger=require(_0x918a('0x6'))(_0x918a('0x7'));var config=require(_0x918a('0x8'));var jayson=require(_0x918a('0x9'));var client=jayson[_0x918a('0xa')][_0x918a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x492c39,_0xdb8dd8,_0x266256){return new BPromise(function(_0x51caca,_0x40518f){return client[_0x918a('0xc')](_0x492c39,_0x266256)[_0x918a('0xd')](function(_0x224a87){logger[_0x918a('0xe')](_0x918a('0xf'),_0xdb8dd8,_0x918a('0x10'));logger['debug'](_0x918a('0x11'),_0xdb8dd8,_0x918a('0x10'),JSON[_0x918a('0x12')](_0x224a87));if(_0x224a87[_0x918a('0x13')]){if(_0x224a87['error'][_0x918a('0x14')]===0x1f4){logger[_0x918a('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0xdb8dd8,_0x224a87[_0x918a('0x13')][_0x918a('0x15')]);return _0x40518f(_0x224a87[_0x918a('0x13')][_0x918a('0x15')]);}logger['error'](_0x918a('0xf'),_0xdb8dd8,_0x224a87['error'][_0x918a('0x15')]);return _0x51caca(_0x224a87['error']['message']);}else{logger[_0x918a('0xe')](_0x918a('0xf'),_0xdb8dd8,'request\x20sent');_0x51caca(_0x224a87[_0x918a('0x16')]['message']);}})[_0x918a('0x17')](function(_0x17f988){logger[_0x918a('0x13')]('TeamVoiceQueue,\x20%s,\x20%s',_0xdb8dd8,_0x17f988);_0x40518f(_0x17f988);});});}
\ No newline at end of file
+var _0x3731=['TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','info','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x54f18,_0x5831e4){var _0x1d1867=function(_0x565b32){while(--_0x565b32){_0x54f18['push'](_0x54f18['shift']());}};_0x1d1867(++_0x5831e4);}(_0x3731,0xba));var _0x1373=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x3731[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x1373('0x0'));var util=require('util');var moment=require(_0x1373('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x1373('0x2'));var logger=require(_0x1373('0x3'))(_0x1373('0x4'));var config=require(_0x1373('0x5'));var jayson=require(_0x1373('0x6'));var client=jayson['client'][_0x1373('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x38f978,_0x3135b7,_0x4ca32a){return new BPromise(function(_0x497188,_0x201409){return client['request'](_0x38f978,_0x4ca32a)['then'](function(_0x4bba81){logger[_0x1373('0x8')](_0x1373('0x9'),_0x3135b7,_0x1373('0xa'));logger[_0x1373('0xb')](_0x1373('0xc'),_0x3135b7,_0x1373('0xa'),JSON[_0x1373('0xd')](_0x4bba81));if(_0x4bba81[_0x1373('0xe')]){if(_0x4bba81[_0x1373('0xe')][_0x1373('0xf')]===0x1f4){logger[_0x1373('0xe')](_0x1373('0x9'),_0x3135b7,_0x4bba81[_0x1373('0xe')][_0x1373('0x10')]);return _0x201409(_0x4bba81['error']['message']);}logger[_0x1373('0xe')](_0x1373('0x9'),_0x3135b7,_0x4bba81[_0x1373('0xe')]['message']);return _0x497188(_0x4bba81['error'][_0x1373('0x10')]);}else{logger[_0x1373('0x8')](_0x1373('0x9'),_0x3135b7,_0x1373('0xa'));_0x497188(_0x4bba81[_0x1373('0x11')][_0x1373('0x10')]);}})['catch'](function(_0x10e19c){logger['error'](_0x1373('0x9'),_0x3135b7,_0x10e19c);_0x201409(_0x10e19c);});});}
\ No newline at end of file
index 28f2a78..aea7a4d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf5=['util','connect-timeout','Router','fs-extra','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','post','put','update','destroy','multer'];(function(_0xf6e75d,_0xc70967){var _0x27514d=function(_0xc2c6dd){while(--_0xc2c6dd){_0xf6e75d['push'](_0xf6e75d['shift']());}};_0x27514d(++_0xc70967);}(_0x2cf5,0x19f));var _0x52cf=function(_0x76fdde,_0x5847d6){_0x76fdde=_0x76fdde-0x0;var _0x2afae0=_0x2cf5[_0x76fdde];return _0x2afae0;};'use strict';var multer=require(_0x52cf('0x0'));var util=require(_0x52cf('0x1'));var path=require('path');var timeout=require(_0x52cf('0x2'));var express=require('express');var router=express[_0x52cf('0x3')]();var fs_extra=require(_0x52cf('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x52cf('0x5'));var controller=require(_0x52cf('0x6'));router[_0x52cf('0x7')]('/',auth[_0x52cf('0x8')](),controller[_0x52cf('0x9')]);router[_0x52cf('0x7')](_0x52cf('0xa'),auth[_0x52cf('0x8')](),controller[_0x52cf('0xb')]);router[_0x52cf('0xc')]('/',auth[_0x52cf('0x8')](),controller['create']);router[_0x52cf('0xd')](_0x52cf('0xa'),auth[_0x52cf('0x8')](),controller[_0x52cf('0xe')]);router['delete'](_0x52cf('0xa'),auth[_0x52cf('0x8')](),controller[_0x52cf('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xd4a2=['../../components/auth/service','../../config/environment','./template.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','connect-timeout','Router'];(function(_0x365143,_0x5bee07){var _0x13dc56=function(_0x12d874){while(--_0x12d874){_0x365143['push'](_0x365143['shift']());}};_0x13dc56(++_0x5bee07);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4bfe23,_0x4c147c){_0x4bfe23=_0x4bfe23-0x0;var _0x379fd8=_0xd4a2[_0x4bfe23];return _0x379fd8;};'use strict';var multer=require(_0x2d4a('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x2d4a('0x1'));var express=require('express');var router=express[_0x2d4a('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x2d4a('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x2d4a('0x4'));var controller=require(_0x2d4a('0x5'));router[_0x2d4a('0x6')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0x8')]);router['get'](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xa')]);router[_0x2d4a('0xb')]('/',auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xc')]);router[_0x2d4a('0xd')](_0x2d4a('0x9'),auth[_0x2d4a('0x7')](),controller[_0x2d4a('0xe')]);router[_0x2d4a('0xf')](_0x2d4a('0x9'),auth['isAuthenticated'](),controller['destroy']);module[_0x2d4a('0x10')]=router;
\ No newline at end of file
index 510e51e..65a8a88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbfb=['STRING','TEXT','sequelize','exports'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0xdbfb,0x1be));var _0xbdbf=function(_0x3ffee7,_0x47c970){_0x3ffee7=_0x3ffee7-0x0;var _0x9fd056=_0xdbfb[_0x3ffee7];return _0x9fd056;};'use strict';var Sequelize=require(_0xbdbf('0x0'));module[_0xbdbf('0x1')]={'name':{'type':Sequelize[_0xbdbf('0x2')]},'description':{'type':Sequelize[_0xbdbf('0x2')]},'html':{'type':Sequelize[_0xbdbf('0x3')]}};
\ No newline at end of file
+var _0x4493=['sequelize','STRING'];(function(_0x5191b2,_0x5353dc){var _0x21f585=function(_0x316d5c){while(--_0x316d5c){_0x5191b2['push'](_0x5191b2['shift']());}};_0x21f585(++_0x5353dc);}(_0x4493,0xd8));var _0x3449=function(_0x27097b,_0x2c45bb){_0x27097b=_0x27097b-0x0;var _0x308529=_0x4493[_0x27097b];return _0x308529;};'use strict';var Sequelize=require(_0x3449('0x0'));module['exports']={'name':{'type':Sequelize[_0x3449('0x1')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index a50ce27..5951786 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb4f=['create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Templates','UserProfileSection','autoAssociation','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','set','apply','reject','update','then','destroy','UserProfileResource','error','stack','index','map','Template','fieldName','type','key','name','query','keys','filters','model','attributes','intersection','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','rawAttributes','fields','length','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb4f,0x1a9));var _0xfcb4=function(_0x4fde08,_0x463a36){_0x4fde08=_0x4fde08-0x0;var _0x12e725=_0xcb4f[_0x4fde08];return _0x12e725;};'use strict';var emlformat=require(_0xfcb4('0x0'));var rimraf=require(_0xfcb4('0x1'));var zipdir=require(_0xfcb4('0x2'));var jsonpatch=require(_0xfcb4('0x3'));var rp=require(_0xfcb4('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xfcb4('0x5'));var util=require(_0xfcb4('0x6'));var path=require(_0xfcb4('0x7'));var sox=require(_0xfcb4('0x8'));var csv=require('to-csv');var ejs=require(_0xfcb4('0x9'));var fs=require('fs');var fs_extra=require(_0xfcb4('0xa'));var _=require(_0xfcb4('0xb'));var squel=require(_0xfcb4('0xc'));var crypto=require(_0xfcb4('0xd'));var jsforce=require(_0xfcb4('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xfcb4('0xf'));var querystring=require(_0xfcb4('0x10'));var Papa=require(_0xfcb4('0x11'));var Redis=require(_0xfcb4('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xfcb4('0x13'));var as=require(_0xfcb4('0x14'));var hardwareService=require(_0xfcb4('0x15'));var logger=require(_0xfcb4('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xfcb4('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2748dc,_0x563cb4){_0x563cb4=_0x563cb4||0xcc;return function(_0x254093){if(_0x254093){return _0x2748dc[_0xfcb4('0x18')](_0x563cb4);}return _0x2748dc['status'](_0x563cb4)[_0xfcb4('0x19')]();};}function respondWithResult(_0x2e522e,_0x13dcc2){_0x13dcc2=_0x13dcc2||0xc8;return function(_0x390d0b){if(_0x390d0b){return _0x2e522e[_0xfcb4('0x1a')](_0x13dcc2)[_0xfcb4('0x1b')](_0x390d0b);}};}function respondWithFilteredResult(_0x55a7dd,_0x2ea632){return function(_0x572de7){if(_0x572de7){var _0x44f679=typeof _0x2ea632[_0xfcb4('0x1c')]===_0xfcb4('0x1d')&&typeof _0x2ea632[_0xfcb4('0x1e')]===_0xfcb4('0x1d');var _0x574221=_0x572de7['count'];var _0x383911=_0x44f679?0x0:_0x2ea632['offset'];var _0x57020c=_0x44f679?_0x572de7[_0xfcb4('0x1f')]:_0x2ea632[_0xfcb4('0x1c')]+_0x2ea632[_0xfcb4('0x1e')];var _0x2c3626;if(_0x57020c>=_0x574221){_0x57020c=_0x574221;_0x2c3626=0xc8;}else{_0x2c3626=0xce;}_0x55a7dd[_0xfcb4('0x1a')](_0x2c3626);return _0x55a7dd[_0xfcb4('0x20')]('Content-Range',_0x383911+'-'+_0x57020c+'/'+_0x574221)[_0xfcb4('0x1b')](_0x572de7);}return null;};}function patchUpdates(_0x38c5c7){return function(_0x17af0a){try{jsonpatch[_0xfcb4('0x21')](_0x17af0a,_0x38c5c7,!![]);}catch(_0x3ff48b){return BPromise[_0xfcb4('0x22')](_0x3ff48b);}return _0x17af0a['save']();};}function saveUpdates(_0x480b9d,_0x146281){return function(_0x605ce2){if(_0x605ce2){return _0x605ce2[_0xfcb4('0x23')](_0x480b9d)[_0xfcb4('0x24')](function(_0x27b8fb){return _0x27b8fb;});}return null;};}function removeEntity(_0x160f6a,_0xae0d9f){return function(_0x1394de){if(_0x1394de){return _0x1394de[_0xfcb4('0x25')]()[_0xfcb4('0x24')](function(){var _0x2d0b62=_0x1394de['get']({'plain':!![]});var _0x4990eb='Templates';return db[_0xfcb4('0x26')]['destroy']({'where':{'type':_0x4990eb,'resourceId':_0x2d0b62['id']}})[_0xfcb4('0x24')](function(){return _0x1394de;});})[_0xfcb4('0x24')](function(){_0x160f6a[_0xfcb4('0x1a')](0xcc)[_0xfcb4('0x19')]();});}};}function handleEntityNotFound(_0x1c1ce7,_0x54b8b6){return function(_0x167545){if(!_0x167545){_0x1c1ce7[_0xfcb4('0x18')](0x194);}return _0x167545;};}function handleError(_0x573c53,_0x1299e3){_0x1299e3=_0x1299e3||0x1f4;return function(_0x47ba30){logger[_0xfcb4('0x27')](_0x47ba30[_0xfcb4('0x28')]);if(_0x47ba30['name']){delete _0x47ba30['name'];}_0x573c53[_0xfcb4('0x1a')](_0x1299e3)['send'](_0x47ba30);};}exports[_0xfcb4('0x29')]=function(_0x47baa8,_0x149bc2){var _0x3a1a8d={},_0x4b5f78={},_0x4f1094={'count':0x0,'rows':[]};var _0x59ac23=_[_0xfcb4('0x2a')](db[_0xfcb4('0x2b')]['rawAttributes'],function(_0x23f0e1){return{'name':_0x23f0e1[_0xfcb4('0x2c')],'type':_0x23f0e1[_0xfcb4('0x2d')][_0xfcb4('0x2e')]};});_0x4b5f78['model']=_[_0xfcb4('0x2a')](_0x59ac23,_0xfcb4('0x2f'));_0x4b5f78[_0xfcb4('0x30')]=_[_0xfcb4('0x31')](_0x47baa8['query']);_0x4b5f78[_0xfcb4('0x32')]=_['intersection'](_0x4b5f78[_0xfcb4('0x33')],_0x4b5f78[_0xfcb4('0x30')]);_0x3a1a8d[_0xfcb4('0x34')]=_[_0xfcb4('0x35')](_0x4b5f78[_0xfcb4('0x33')],qs['fields'](_0x47baa8[_0xfcb4('0x30')]['fields']));_0x3a1a8d['attributes']=_0x3a1a8d[_0xfcb4('0x34')]['length']?_0x3a1a8d[_0xfcb4('0x34')]:_0x4b5f78[_0xfcb4('0x33')];if(!_0x47baa8[_0xfcb4('0x30')][_0xfcb4('0x36')](_0xfcb4('0x37'))){_0x3a1a8d[_0xfcb4('0x1e')]=qs['limit'](_0x47baa8[_0xfcb4('0x30')][_0xfcb4('0x1e')]);_0x3a1a8d['offset']=qs[_0xfcb4('0x1c')](_0x47baa8['query'][_0xfcb4('0x1c')]);}_0x3a1a8d[_0xfcb4('0x38')]=qs[_0xfcb4('0x39')](_0x47baa8[_0xfcb4('0x30')][_0xfcb4('0x39')]);_0x3a1a8d[_0xfcb4('0x3a')]=qs[_0xfcb4('0x32')](_[_0xfcb4('0x3b')](_0x47baa8[_0xfcb4('0x30')],_0x4b5f78['filters']),_0x59ac23);if(_0x47baa8[_0xfcb4('0x30')][_0xfcb4('0x3c')]){_0x3a1a8d[_0xfcb4('0x3a')]=_[_0xfcb4('0x3d')](_0x3a1a8d[_0xfcb4('0x3a')],{'$or':_[_0xfcb4('0x2a')](_0x59ac23,function(_0x5d299a){if(_0x5d299a[_0xfcb4('0x2d')]!==_0xfcb4('0x3e')){var _0x9b8212={};_0x9b8212[_0x5d299a['name']]={'$like':'%'+_0x47baa8[_0xfcb4('0x30')][_0xfcb4('0x3c')]+'%'};return _0x9b8212;}})});}_0x3a1a8d=_[_0xfcb4('0x3d')]({},_0x3a1a8d,_0x47baa8[_0xfcb4('0x3f')]);var _0x433f44={'where':_0x3a1a8d['where']};return db[_0xfcb4('0x2b')][_0xfcb4('0x1f')](_0x433f44)[_0xfcb4('0x24')](function(_0x1d2aca){_0x4f1094[_0xfcb4('0x1f')]=_0x1d2aca;if(_0x47baa8['query'][_0xfcb4('0x40')]){_0x3a1a8d[_0xfcb4('0x41')]=[{'all':!![]}];}return db[_0xfcb4('0x2b')][_0xfcb4('0x42')](_0x3a1a8d);})['then'](function(_0x446716){_0x4f1094['rows']=_0x446716;return _0x4f1094;})[_0xfcb4('0x24')](respondWithFilteredResult(_0x149bc2,_0x3a1a8d))[_0xfcb4('0x43')](handleError(_0x149bc2,null));};exports[_0xfcb4('0x44')]=function(_0x3bb034,_0x78a17e){var _0x2e1b2c={'raw':!![],'where':{'id':_0x3bb034['params']['id']}},_0x2d7329={};_0x2d7329[_0xfcb4('0x33')]=_[_0xfcb4('0x31')](db[_0xfcb4('0x2b')][_0xfcb4('0x45')]);_0x2d7329[_0xfcb4('0x30')]=_['keys'](_0x3bb034[_0xfcb4('0x30')]);_0x2d7329[_0xfcb4('0x32')]=_[_0xfcb4('0x35')](_0x2d7329[_0xfcb4('0x33')],_0x2d7329['query']);_0x2e1b2c[_0xfcb4('0x34')]=_[_0xfcb4('0x35')](_0x2d7329['model'],qs[_0xfcb4('0x46')](_0x3bb034[_0xfcb4('0x30')][_0xfcb4('0x46')]));_0x2e1b2c[_0xfcb4('0x34')]=_0x2e1b2c[_0xfcb4('0x34')][_0xfcb4('0x47')]?_0x2e1b2c[_0xfcb4('0x34')]:_0x2d7329[_0xfcb4('0x33')];if(_0x3bb034[_0xfcb4('0x30')]['includeAll']){_0x2e1b2c[_0xfcb4('0x41')]=[{'all':!![]}];}_0x2e1b2c=_['merge']({},_0x2e1b2c,_0x3bb034[_0xfcb4('0x3f')]);return db['Template'][_0xfcb4('0x48')](_0x2e1b2c)[_0xfcb4('0x24')](handleEntityNotFound(_0x78a17e,null))[_0xfcb4('0x24')](respondWithResult(_0x78a17e,null))['catch'](handleError(_0x78a17e,null));};exports[_0xfcb4('0x49')]=function(_0x3b02df,_0xac557c){return db[_0xfcb4('0x2b')]['create'](_0x3b02df[_0xfcb4('0x4a')],{})[_0xfcb4('0x24')](function(_0x430172){var _0x5a7ff4=_0x3b02df[_0xfcb4('0x4b')][_0xfcb4('0x4c')]({'plain':!![]});if(!_0x5a7ff4)throw new Error(_0xfcb4('0x4d'));if(_0x5a7ff4[_0xfcb4('0x4e')]===_0xfcb4('0x4b')){var _0x249898=_0x430172[_0xfcb4('0x4c')]({'plain':!![]});var _0x1d5db8=_0xfcb4('0x4f');return db[_0xfcb4('0x50')][_0xfcb4('0x48')]({'where':{'name':_0x1d5db8,'userProfileId':_0x5a7ff4['userProfileId']},'raw':!![]})['then'](function(_0x12ef31){if(_0x12ef31&&_0x12ef31[_0xfcb4('0x51')]===0x0){return db['UserProfileResource'][_0xfcb4('0x49')]({'name':_0x249898[_0xfcb4('0x2f')],'resourceId':_0x249898['id'],'type':_0x12ef31[_0xfcb4('0x2f')],'sectionId':_0x12ef31['id']},{})['then'](function(){return _0x430172;});}else{return _0x430172;}})['catch'](function(_0x122a2f){logger[_0xfcb4('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x122a2f);throw _0x122a2f;});}return _0x430172;})['then'](respondWithResult(_0xac557c,0xc9))['catch'](handleError(_0xac557c,null));};exports[_0xfcb4('0x23')]=function(_0x2d3acd,_0x1f5fc0){if(_0x2d3acd[_0xfcb4('0x4a')]['id']){delete _0x2d3acd[_0xfcb4('0x4a')]['id'];}return db[_0xfcb4('0x2b')]['find']({'where':{'id':_0x2d3acd[_0xfcb4('0x52')]['id']}})[_0xfcb4('0x24')](handleEntityNotFound(_0x1f5fc0,null))[_0xfcb4('0x24')](saveUpdates(_0x2d3acd[_0xfcb4('0x4a')],null))[_0xfcb4('0x24')](respondWithResult(_0x1f5fc0,null))[_0xfcb4('0x43')](handleError(_0x1f5fc0,null));};exports[_0xfcb4('0x25')]=function(_0x330160,_0xa22b1e){return db['Template'][_0xfcb4('0x48')]({'where':{'id':_0x330160['params']['id']}})[_0xfcb4('0x24')](handleEntityNotFound(_0xa22b1e,null))['then'](removeEntity(_0xa22b1e,null))[_0xfcb4('0x43')](handleError(_0xa22b1e,null));};
\ No newline at end of file
+var _0x83c8=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','update','then','destroy','get','Templates','end','error','stack','name','send','index','Template','rawAttributes','fieldName','type','key','model','map','query','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s'];(function(_0x1407af,_0x4f2880){var _0x1b1640=function(_0x4e072b){while(--_0x4e072b){_0x1407af['push'](_0x1407af['shift']());}};_0x1b1640(++_0x4f2880);}(_0x83c8,0xff));var _0x883c=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0x83c8[_0x3718b7];return _0xf8c91e;};'use strict';var emlformat=require(_0x883c('0x0'));var rimraf=require(_0x883c('0x1'));var zipdir=require(_0x883c('0x2'));var jsonpatch=require(_0x883c('0x3'));var rp=require(_0x883c('0x4'));var moment=require(_0x883c('0x5'));var BPromise=require(_0x883c('0x6'));var Mustache=require(_0x883c('0x7'));var util=require(_0x883c('0x8'));var path=require(_0x883c('0x9'));var sox=require(_0x883c('0xa'));var csv=require('to-csv');var ejs=require(_0x883c('0xb'));var fs=require('fs');var fs_extra=require(_0x883c('0xc'));var _=require(_0x883c('0xd'));var squel=require(_0x883c('0xe'));var crypto=require(_0x883c('0xf'));var jsforce=require(_0x883c('0x10'));var deskjs=require(_0x883c('0x11'));var toCsv=require('to-csv');var querystring=require(_0x883c('0x12'));var Papa=require(_0x883c('0x13'));var Redis=require(_0x883c('0x14'));var authService=require(_0x883c('0x15'));var qs=require(_0x883c('0x16'));var as=require(_0x883c('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x883c('0x18'))('api');var utils=require(_0x883c('0x19'));var config=require(_0x883c('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x883c('0x1b'))['db'];function respondWithStatusCode(_0x5bab95,_0x18ac2e){_0x18ac2e=_0x18ac2e||0xcc;return function(_0x115fea){if(_0x115fea){return _0x5bab95['sendStatus'](_0x18ac2e);}return _0x5bab95[_0x883c('0x1c')](_0x18ac2e)['end']();};}function respondWithResult(_0x386cd3,_0x5ed8ea){_0x5ed8ea=_0x5ed8ea||0xc8;return function(_0x3576c6){if(_0x3576c6){return _0x386cd3[_0x883c('0x1c')](_0x5ed8ea)[_0x883c('0x1d')](_0x3576c6);}};}function respondWithFilteredResult(_0x323b0f,_0x583ac6){return function(_0x5bfe5e){if(_0x5bfe5e){var _0x2e6e45=typeof _0x583ac6[_0x883c('0x1e')]===_0x883c('0x1f')&&typeof _0x583ac6[_0x883c('0x20')]===_0x883c('0x1f');var _0x21af86=_0x5bfe5e[_0x883c('0x21')];var _0x1d2c8b=_0x2e6e45?0x0:_0x583ac6[_0x883c('0x1e')];var _0x1dcfc9=_0x2e6e45?_0x5bfe5e[_0x883c('0x21')]:_0x583ac6['offset']+_0x583ac6[_0x883c('0x20')];var _0x3e28ac;if(_0x1dcfc9>=_0x21af86){_0x1dcfc9=_0x21af86;_0x3e28ac=0xc8;}else{_0x3e28ac=0xce;}_0x323b0f[_0x883c('0x1c')](_0x3e28ac);return _0x323b0f['set']('Content-Range',_0x1d2c8b+'-'+_0x1dcfc9+'/'+_0x21af86)[_0x883c('0x1d')](_0x5bfe5e);}return null;};}function patchUpdates(_0x527e8b){return function(_0x2f78ad){try{jsonpatch[_0x883c('0x22')](_0x2f78ad,_0x527e8b,!![]);}catch(_0xd40f6b){return BPromise[_0x883c('0x23')](_0xd40f6b);}return _0x2f78ad['save']();};}function saveUpdates(_0x43f58c,_0x3d20fe){return function(_0x2f566d){if(_0x2f566d){return _0x2f566d[_0x883c('0x24')](_0x43f58c)[_0x883c('0x25')](function(_0x38c00a){return _0x38c00a;});}return null;};}function removeEntity(_0x7f417e,_0x450dc7){return function(_0x474174){if(_0x474174){return _0x474174[_0x883c('0x26')]()[_0x883c('0x25')](function(){var _0x34a3b5=_0x474174[_0x883c('0x27')]({'plain':!![]});var _0x3d7110=_0x883c('0x28');return db['UserProfileResource'][_0x883c('0x26')]({'where':{'type':_0x3d7110,'resourceId':_0x34a3b5['id']}})['then'](function(){return _0x474174;});})[_0x883c('0x25')](function(){_0x7f417e[_0x883c('0x1c')](0xcc)[_0x883c('0x29')]();});}};}function handleEntityNotFound(_0x3a124e,_0x318e4a){return function(_0x4104b7){if(!_0x4104b7){_0x3a124e['sendStatus'](0x194);}return _0x4104b7;};}function handleError(_0x4ccb70,_0x34559d){_0x34559d=_0x34559d||0x1f4;return function(_0x378940){logger[_0x883c('0x2a')](_0x378940[_0x883c('0x2b')]);if(_0x378940[_0x883c('0x2c')]){delete _0x378940['name'];}_0x4ccb70[_0x883c('0x1c')](_0x34559d)[_0x883c('0x2d')](_0x378940);};}exports[_0x883c('0x2e')]=function(_0x1a0f07,_0x4570f1){var _0xc56c5f={},_0x175626={},_0xd80934={'count':0x0,'rows':[]};var _0x36fa3b=_['map'](db[_0x883c('0x2f')][_0x883c('0x30')],function(_0x2b0ac7){return{'name':_0x2b0ac7[_0x883c('0x31')],'type':_0x2b0ac7[_0x883c('0x32')][_0x883c('0x33')]};});_0x175626[_0x883c('0x34')]=_[_0x883c('0x35')](_0x36fa3b,_0x883c('0x2c'));_0x175626[_0x883c('0x36')]=_['keys'](_0x1a0f07[_0x883c('0x36')]);_0x175626['filters']=_['intersection'](_0x175626[_0x883c('0x34')],_0x175626[_0x883c('0x36')]);_0xc56c5f[_0x883c('0x37')]=_[_0x883c('0x38')](_0x175626[_0x883c('0x34')],qs[_0x883c('0x39')](_0x1a0f07['query']['fields']));_0xc56c5f[_0x883c('0x37')]=_0xc56c5f[_0x883c('0x37')][_0x883c('0x3a')]?_0xc56c5f[_0x883c('0x37')]:_0x175626['model'];if(!_0x1a0f07['query'][_0x883c('0x3b')]('nolimit')){_0xc56c5f[_0x883c('0x20')]=qs[_0x883c('0x20')](_0x1a0f07[_0x883c('0x36')][_0x883c('0x20')]);_0xc56c5f[_0x883c('0x1e')]=qs[_0x883c('0x1e')](_0x1a0f07[_0x883c('0x36')][_0x883c('0x1e')]);}_0xc56c5f[_0x883c('0x3c')]=qs[_0x883c('0x3d')](_0x1a0f07[_0x883c('0x36')]['sort']);_0xc56c5f[_0x883c('0x3e')]=qs[_0x883c('0x3f')](_[_0x883c('0x40')](_0x1a0f07[_0x883c('0x36')],_0x175626['filters']),_0x36fa3b);if(_0x1a0f07[_0x883c('0x36')][_0x883c('0x41')]){_0xc56c5f['where']=_[_0x883c('0x42')](_0xc56c5f[_0x883c('0x3e')],{'$or':_[_0x883c('0x35')](_0x36fa3b,function(_0x11defe){if(_0x11defe[_0x883c('0x32')]!==_0x883c('0x43')){var _0x4ec617={};_0x4ec617[_0x11defe['name']]={'$like':'%'+_0x1a0f07[_0x883c('0x36')][_0x883c('0x41')]+'%'};return _0x4ec617;}})});}_0xc56c5f=_[_0x883c('0x42')]({},_0xc56c5f,_0x1a0f07[_0x883c('0x44')]);var _0x51176b={'where':_0xc56c5f['where']};return db[_0x883c('0x2f')][_0x883c('0x21')](_0x51176b)[_0x883c('0x25')](function(_0x1f6a41){_0xd80934[_0x883c('0x21')]=_0x1f6a41;if(_0x1a0f07['query'][_0x883c('0x45')]){_0xc56c5f[_0x883c('0x46')]=[{'all':!![]}];}return db[_0x883c('0x2f')][_0x883c('0x47')](_0xc56c5f);})[_0x883c('0x25')](function(_0x54a6fe){_0xd80934[_0x883c('0x48')]=_0x54a6fe;return _0xd80934;})[_0x883c('0x25')](respondWithFilteredResult(_0x4570f1,_0xc56c5f))[_0x883c('0x49')](handleError(_0x4570f1,null));};exports[_0x883c('0x4a')]=function(_0x552a7a,_0x7de566){var _0x84d084={'raw':!![],'where':{'id':_0x552a7a[_0x883c('0x4b')]['id']}},_0x163377={};_0x163377[_0x883c('0x34')]=_['keys'](db[_0x883c('0x2f')][_0x883c('0x30')]);_0x163377['query']=_[_0x883c('0x4c')](_0x552a7a['query']);_0x163377['filters']=_['intersection'](_0x163377[_0x883c('0x34')],_0x163377['query']);_0x84d084[_0x883c('0x37')]=_['intersection'](_0x163377['model'],qs[_0x883c('0x39')](_0x552a7a[_0x883c('0x36')][_0x883c('0x39')]));_0x84d084[_0x883c('0x37')]=_0x84d084['attributes'][_0x883c('0x3a')]?_0x84d084[_0x883c('0x37')]:_0x163377['model'];if(_0x552a7a['query'][_0x883c('0x45')]){_0x84d084[_0x883c('0x46')]=[{'all':!![]}];}_0x84d084=_['merge']({},_0x84d084,_0x552a7a[_0x883c('0x44')]);return db[_0x883c('0x2f')][_0x883c('0x4d')](_0x84d084)[_0x883c('0x25')](handleEntityNotFound(_0x7de566,null))[_0x883c('0x25')](respondWithResult(_0x7de566,null))[_0x883c('0x49')](handleError(_0x7de566,null));};exports[_0x883c('0x4e')]=function(_0x4bc3e5,_0x3703f2){return db['Template'][_0x883c('0x4e')](_0x4bc3e5[_0x883c('0x4f')],{})[_0x883c('0x25')](function(_0x15abfd){var _0x331b25=_0x4bc3e5['user']['get']({'plain':!![]});if(!_0x331b25)throw new Error(_0x883c('0x50'));if(_0x331b25[_0x883c('0x51')]===_0x883c('0x52')){var _0x17cf9e=_0x15abfd[_0x883c('0x27')]({'plain':!![]});var _0x12f9c2=_0x883c('0x28');return db['UserProfileSection'][_0x883c('0x4d')]({'where':{'name':_0x12f9c2,'userProfileId':_0x331b25[_0x883c('0x53')]},'raw':!![]})[_0x883c('0x25')](function(_0x5b6434){if(_0x5b6434&&_0x5b6434['autoAssociation']===0x0){return db['UserProfileResource'][_0x883c('0x4e')]({'name':_0x17cf9e['name'],'resourceId':_0x17cf9e['id'],'type':_0x5b6434[_0x883c('0x2c')],'sectionId':_0x5b6434['id']},{})[_0x883c('0x25')](function(){return _0x15abfd;});}else{return _0x15abfd;}})[_0x883c('0x49')](function(_0x1d8b49){logger[_0x883c('0x2a')](_0x883c('0x54'),_0x1d8b49);throw _0x1d8b49;});}return _0x15abfd;})[_0x883c('0x25')](respondWithResult(_0x3703f2,0xc9))[_0x883c('0x49')](handleError(_0x3703f2,null));};exports[_0x883c('0x24')]=function(_0x4fbd73,_0x1538a5){if(_0x4fbd73[_0x883c('0x4f')]['id']){delete _0x4fbd73[_0x883c('0x4f')]['id'];}return db[_0x883c('0x2f')][_0x883c('0x4d')]({'where':{'id':_0x4fbd73[_0x883c('0x4b')]['id']}})[_0x883c('0x25')](handleEntityNotFound(_0x1538a5,null))['then'](saveUpdates(_0x4fbd73[_0x883c('0x4f')],null))[_0x883c('0x25')](respondWithResult(_0x1538a5,null))[_0x883c('0x49')](handleError(_0x1538a5,null));};exports['destroy']=function(_0x3fa7a4,_0x449266){return db['Template'][_0x883c('0x4d')]({'where':{'id':_0x3fa7a4[_0x883c('0x4b')]['id']}})[_0x883c('0x25')](handleEntityNotFound(_0x449266,null))[_0x883c('0x25')](removeEntity(_0x449266,null))[_0x883c('0x49')](handleError(_0x449266,null));};
\ No newline at end of file
index 7cb0769..3f917d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a2d=['../../config/environment','./template.attributes','exports','define','Template','tools_templates','util','../../config/logger','api','moment','request-promise','rimraf'];(function(_0x38e827,_0x37e04e){var _0x361484=function(_0x58ad44){while(--_0x58ad44){_0x38e827['push'](_0x38e827['shift']());}};_0x361484(++_0x37e04e);}(_0x5a2d,0x1f2));var _0xd5a2=function(_0x36d8d9,_0x17b58a){_0x36d8d9=_0x36d8d9-0x0;var _0x1ac3a2=_0x5a2d[_0x36d8d9];return _0x1ac3a2;};'use strict';var _=require('lodash');var util=require(_0xd5a2('0x0'));var logger=require(_0xd5a2('0x1'))(_0xd5a2('0x2'));var moment=require(_0xd5a2('0x3'));var BPromise=require('bluebird');var rp=require(_0xd5a2('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd5a2('0x5'));var config=require(_0xd5a2('0x6'));var attributes=require(_0xd5a2('0x7'));module[_0xd5a2('0x8')]=function(_0x3fdba8,_0x168b73){return _0x3fdba8[_0xd5a2('0x9')](_0xd5a2('0xa'),attributes,{'tableName':_0xd5a2('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd6d6=['bluebird','path','rimraf','../../config/environment','./template.attributes','exports','define','lodash','../../config/logger'];(function(_0xd01c97,_0x44dd5d){var _0x35809c=function(_0x2c3044){while(--_0x2c3044){_0xd01c97['push'](_0xd01c97['shift']());}};_0x35809c(++_0x44dd5d);}(_0xd6d6,0x1ae));var _0x6d6d=function(_0x5bf9ac,_0x1053d1){_0x5bf9ac=_0x5bf9ac-0x0;var _0x24ea1a=_0xd6d6[_0x5bf9ac];return _0x24ea1a;};'use strict';var _=require(_0x6d6d('0x0'));var util=require('util');var logger=require(_0x6d6d('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6d6d('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6d6d('0x3'));var rimraf=require(_0x6d6d('0x4'));var config=require(_0x6d6d('0x5'));var attributes=require(_0x6d6d('0x6'));module[_0x6d6d('0x7')]=function(_0x240e4c,_0x436a94){return _0x240e4c[_0x6d6d('0x8')]('Template',attributes,{'tableName':'tools_templates','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c579466..d715bca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf3=['http','request','then','info','Template,\x20%s,\x20%s','request\x20sent','debug','Template,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetTemplate','Template','findAll','options','raw','where','attributes','limit','include','model','map','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client'];(function(_0x3087e3,_0x5f3edf){var _0x4a1f60=function(_0x119f15){while(--_0x119f15){_0x3087e3['push'](_0x3087e3['shift']());}};_0x4a1f60(++_0x5f3edf);}(_0xbaf3,0x1df));var _0x3baf=function(_0x4fcabf,_0x3536af){_0x4fcabf=_0x4fcabf-0x0;var _0xe9651=_0xbaf3[_0x4fcabf];return _0xe9651;};'use strict';var _=require(_0x3baf('0x0'));var util=require(_0x3baf('0x1'));var moment=require(_0x3baf('0x2'));var BPromise=require(_0x3baf('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3baf('0x4'));var db=require(_0x3baf('0x5'))['db'];var utils=require(_0x3baf('0x6'));var logger=require('../../config/logger')(_0x3baf('0x7'));var config=require(_0x3baf('0x8'));var jayson=require(_0x3baf('0x9'));var client=jayson[_0x3baf('0xa')][_0x3baf('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x518d8d,_0x2775d0,_0x514868){return new BPromise(function(_0x430daf,_0x11ca2a){return client[_0x3baf('0xc')](_0x518d8d,_0x514868)[_0x3baf('0xd')](function(_0x251262){logger[_0x3baf('0xe')](_0x3baf('0xf'),_0x2775d0,_0x3baf('0x10'));logger[_0x3baf('0x11')](_0x3baf('0x12'),_0x2775d0,_0x3baf('0x10'),JSON[_0x3baf('0x13')](_0x251262));if(_0x251262[_0x3baf('0x14')]){if(_0x251262[_0x3baf('0x14')][_0x3baf('0x15')]===0x1f4){logger[_0x3baf('0x14')](_0x3baf('0xf'),_0x2775d0,_0x251262[_0x3baf('0x14')]['message']);return _0x11ca2a(_0x251262[_0x3baf('0x14')][_0x3baf('0x16')]);}logger[_0x3baf('0x14')](_0x3baf('0xf'),_0x2775d0,_0x251262[_0x3baf('0x14')][_0x3baf('0x16')]);return _0x430daf(_0x251262[_0x3baf('0x14')][_0x3baf('0x16')]);}else{logger[_0x3baf('0xe')](_0x3baf('0xf'),_0x2775d0,_0x3baf('0x10'));_0x430daf(_0x251262['result'][_0x3baf('0x16')]);}})[_0x3baf('0x17')](function(_0x5817bb){logger['error'](_0x3baf('0xf'),_0x2775d0,_0x5817bb);_0x11ca2a(_0x5817bb);});});}exports[_0x3baf('0x18')]=function(_0xf92cad){var _0x2d8b8a=this;return new Promise(function(_0x2158cb,_0x32bbc9){return db[_0x3baf('0x19')][_0x3baf('0x1a')]({'raw':_0xf92cad[_0x3baf('0x1b')]?_0xf92cad[_0x3baf('0x1b')][_0x3baf('0x1c')]===undefined?!![]:![]:!![],'where':_0xf92cad[_0x3baf('0x1b')]?_0xf92cad[_0x3baf('0x1b')][_0x3baf('0x1d')]||null:null,'attributes':_0xf92cad['options']?_0xf92cad[_0x3baf('0x1b')][_0x3baf('0x1e')]||null:null,'limit':_0xf92cad[_0x3baf('0x1b')]?_0xf92cad[_0x3baf('0x1b')][_0x3baf('0x1f')]||null:null,'include':_0xf92cad['options']?_0xf92cad[_0x3baf('0x1b')][_0x3baf('0x20')]?_['map'](_0xf92cad[_0x3baf('0x1b')]['include'],function(_0x25482e){return{'model':db[_0x25482e['model']],'as':_0x25482e['as'],'attributes':_0x25482e[_0x3baf('0x1e')],'include':_0x25482e[_0x3baf('0x20')]?_['map'](_0x25482e['include'],function(_0x43dcfb){return{'model':db[_0x43dcfb[_0x3baf('0x21')]],'as':_0x43dcfb['as'],'attributes':_0x43dcfb[_0x3baf('0x1e')],'include':_0x43dcfb[_0x3baf('0x20')]?_[_0x3baf('0x22')](_0x43dcfb[_0x3baf('0x20')],function(_0x3ae7ea){return{'model':db[_0x3ae7ea['model']],'as':_0x3ae7ea['as'],'attributes':_0x3ae7ea[_0x3baf('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x3baf('0xd')](function(_0x92f83d){logger['info'](_0x3baf('0x18'),_0xf92cad);logger[_0x3baf('0x11')](_0x3baf('0x18'),_0xf92cad,JSON[_0x3baf('0x13')](_0x92f83d));_0x2158cb(_0x92f83d);})[_0x3baf('0x17')](function(_0x20d55){logger[_0x3baf('0x14')](_0x3baf('0x18'),_0x20d55[_0x3baf('0x16')],_0xf92cad);_0x32bbc9(_0x2d8b8a[_0x3baf('0x14')](0x1f4,_0x20d55[_0x3baf('0x16')]));});});};
\ No newline at end of file
+var _0x07e5=['result','catch','GetTemplate','findAll','options','where','limit','map','include','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','stringify','error','code','Template,\x20%s,\x20%s','message'];(function(_0x5d8d1d,_0x3eb3f){var _0x1b9cc7=function(_0x55f0d2){while(--_0x55f0d2){_0x5d8d1d['push'](_0x5d8d1d['shift']());}};_0x1b9cc7(++_0x3eb3f);}(_0x07e5,0xc5));var _0x507e=function(_0x263cc0,_0x182e9c){_0x263cc0=_0x263cc0-0x0;var _0x298414=_0x07e5[_0x263cc0];return _0x298414;};'use strict';var _=require(_0x507e('0x0'));var util=require('util');var moment=require(_0x507e('0x1'));var BPromise=require(_0x507e('0x2'));var rs=require(_0x507e('0x3'));var fs=require('fs');var Redis=require(_0x507e('0x4'));var db=require(_0x507e('0x5'))['db'];var utils=require(_0x507e('0x6'));var logger=require('../../config/logger')(_0x507e('0x7'));var config=require(_0x507e('0x8'));var jayson=require(_0x507e('0x9'));var client=jayson[_0x507e('0xa')][_0x507e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bc806,_0x3b256a,_0x44f72b){return new BPromise(function(_0x46629d,_0x5b49e6){return client['request'](_0x2bc806,_0x44f72b)[_0x507e('0xc')](function(_0x436ec9){logger[_0x507e('0xd')]('Template,\x20%s,\x20%s',_0x3b256a,_0x507e('0xe'));logger['debug']('Template,\x20%s,\x20%s,\x20%s',_0x3b256a,'request\x20sent',JSON[_0x507e('0xf')](_0x436ec9));if(_0x436ec9[_0x507e('0x10')]){if(_0x436ec9[_0x507e('0x10')][_0x507e('0x11')]===0x1f4){logger[_0x507e('0x10')](_0x507e('0x12'),_0x3b256a,_0x436ec9['error'][_0x507e('0x13')]);return _0x5b49e6(_0x436ec9[_0x507e('0x10')][_0x507e('0x13')]);}logger[_0x507e('0x10')](_0x507e('0x12'),_0x3b256a,_0x436ec9[_0x507e('0x10')][_0x507e('0x13')]);return _0x46629d(_0x436ec9[_0x507e('0x10')]['message']);}else{logger[_0x507e('0xd')]('Template,\x20%s,\x20%s',_0x3b256a,_0x507e('0xe'));_0x46629d(_0x436ec9[_0x507e('0x14')][_0x507e('0x13')]);}})[_0x507e('0x15')](function(_0x461845){logger['error'](_0x507e('0x12'),_0x3b256a,_0x461845);_0x5b49e6(_0x461845);});});}exports[_0x507e('0x16')]=function(_0x3ab25c){var _0x44e204=this;return new Promise(function(_0x26a564,_0x170e58){return db['Template'][_0x507e('0x17')]({'raw':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c['options']['raw']===undefined?!![]:![]:!![],'where':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')][_0x507e('0x19')]||null:null,'attributes':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')]['attributes']||null:null,'limit':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')][_0x507e('0x1a')]||null:null,'include':_0x3ab25c[_0x507e('0x18')]?_0x3ab25c[_0x507e('0x18')]['include']?_[_0x507e('0x1b')](_0x3ab25c[_0x507e('0x18')][_0x507e('0x1c')],function(_0x4add45){return{'model':db[_0x4add45[_0x507e('0x1d')]],'as':_0x4add45['as'],'attributes':_0x4add45[_0x507e('0x1e')],'include':_0x4add45[_0x507e('0x1c')]?_[_0x507e('0x1b')](_0x4add45[_0x507e('0x1c')],function(_0x37f65a){return{'model':db[_0x37f65a['model']],'as':_0x37f65a['as'],'attributes':_0x37f65a['attributes'],'include':_0x37f65a[_0x507e('0x1c')]?_['map'](_0x37f65a['include'],function(_0x21cd8e){return{'model':db[_0x21cd8e[_0x507e('0x1d')]],'as':_0x21cd8e['as'],'attributes':_0x21cd8e[_0x507e('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x507e('0xc')](function(_0x3706b5){logger[_0x507e('0xd')](_0x507e('0x16'),_0x3ab25c);logger['debug'](_0x507e('0x16'),_0x3ab25c,JSON[_0x507e('0xf')](_0x3706b5));_0x26a564(_0x3706b5);})[_0x507e('0x15')](function(_0x536e01){logger[_0x507e('0x10')]('GetTemplate',_0x536e01[_0x507e('0x13')],_0x3ab25c);_0x170e58(_0x44e204[_0x507e('0x10')](0x1f4,_0x536e01[_0x507e('0x13')]));});});};
\ No newline at end of file
index a05edea..ef8da12 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b95=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','isAuthenticated','index','get','/:id','show','getAllConditions','/:id/any_conditions','getActions','post','create','/:id/all_conditions','addAnyCondition','put','delete','destroy','exports'];(function(_0x3473e4,_0x120b11){var _0x55ff34=function(_0x307bb4){while(--_0x307bb4){_0x3473e4['push'](_0x3473e4['shift']());}};_0x55ff34(++_0x120b11);}(_0x0b95,0x198));var _0x50b9=function(_0x37d39d,_0x24fd57){_0x37d39d=_0x37d39d-0x0;var _0x4bcec2=_0x0b95[_0x37d39d];return _0x4bcec2;};'use strict';var multer=require('multer');var util=require(_0x50b9('0x0'));var path=require(_0x50b9('0x1'));var timeout=require(_0x50b9('0x2'));var express=require(_0x50b9('0x3'));var router=express[_0x50b9('0x4')]();var fs_extra=require(_0x50b9('0x5'));var auth=require(_0x50b9('0x6'));var interaction=require(_0x50b9('0x7'));var config=require('../../config/environment');var controller=require('./trigger.controller');router['get']('/',auth[_0x50b9('0x8')](),controller[_0x50b9('0x9')]);router[_0x50b9('0xa')](_0x50b9('0xb'),auth['isAuthenticated'](),controller[_0x50b9('0xc')]);router['get']('/:id/all_conditions',auth['isAuthenticated'](),controller[_0x50b9('0xd')]);router['get'](_0x50b9('0xe'),auth[_0x50b9('0x8')](),controller['getAnyConditions']);router[_0x50b9('0xa')]('/:id/actions',auth[_0x50b9('0x8')](),controller[_0x50b9('0xf')]);router[_0x50b9('0x10')]('/',auth[_0x50b9('0x8')](),controller[_0x50b9('0x11')]);router[_0x50b9('0x10')](_0x50b9('0x12'),auth[_0x50b9('0x8')](),controller['addAllCondition']);router[_0x50b9('0x10')](_0x50b9('0xe'),auth[_0x50b9('0x8')](),controller[_0x50b9('0x13')]);router[_0x50b9('0x10')]('/:id/actions',auth[_0x50b9('0x8')](),controller['addAction']);router[_0x50b9('0x14')](_0x50b9('0xb'),auth['isAuthenticated'](),controller['update']);router[_0x50b9('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x50b9('0x16')]);module[_0x50b9('0x17')]=router;
\ No newline at end of file
+var _0xbced=['getAnyConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','delete','exports','connect-timeout','express','Router','fs-extra','../../components/auth/service','./trigger.controller','isAuthenticated','index','/:id','get','/:id/all_conditions','getAllConditions','/:id/any_conditions'];(function(_0x3d7f78,_0x17e4d0){var _0x3bf252=function(_0x2dd1c0){while(--_0x2dd1c0){_0x3d7f78['push'](_0x3d7f78['shift']());}};_0x3bf252(++_0x17e4d0);}(_0xbced,0x1d6));var _0xdbce=function(_0x4a3471,_0x474995){_0x4a3471=_0x4a3471-0x0;var _0x2cd24c=_0xbced[_0x4a3471];return _0x2cd24c;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xdbce('0x0'));var express=require(_0xdbce('0x1'));var router=express[_0xdbce('0x2')]();var fs_extra=require(_0xdbce('0x3'));var auth=require(_0xdbce('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdbce('0x5'));router['get']('/',auth[_0xdbce('0x6')](),controller[_0xdbce('0x7')]);router['get'](_0xdbce('0x8'),auth[_0xdbce('0x6')](),controller['show']);router[_0xdbce('0x9')](_0xdbce('0xa'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xb')]);router[_0xdbce('0x9')](_0xdbce('0xc'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xd')]);router[_0xdbce('0x9')](_0xdbce('0xe'),auth[_0xdbce('0x6')](),controller[_0xdbce('0xf')]);router[_0xdbce('0x10')]('/',auth[_0xdbce('0x6')](),controller[_0xdbce('0x11')]);router['post']('/:id/all_conditions',auth[_0xdbce('0x6')](),controller[_0xdbce('0x12')]);router[_0xdbce('0x10')](_0xdbce('0xc'),auth[_0xdbce('0x6')](),controller[_0xdbce('0x13')]);router[_0xdbce('0x10')](_0xdbce('0xe'),auth[_0xdbce('0x6')](),controller[_0xdbce('0x14')]);router['put']('/:id',auth[_0xdbce('0x6')](),controller['update']);router[_0xdbce('0x15')](_0xdbce('0x8'),auth[_0xdbce('0x6')](),controller['destroy']);module[_0xdbce('0x16')]=router;
\ No newline at end of file
index 8687eda..67049bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5993=['BOOLEAN','sequelize','exports','STRING'];(function(_0x330266,_0x210602){var _0x321409=function(_0x3e8398){while(--_0x3e8398){_0x330266['push'](_0x330266['shift']());}};_0x321409(++_0x210602);}(_0x5993,0x71));var _0x3599=function(_0x2459fd,_0x575d9b){_0x2459fd=_0x2459fd-0x0;var _0x364cd2=_0x5993[_0x2459fd];return _0x364cd2;};'use strict';var Sequelize=require(_0x3599('0x0'));module[_0x3599('0x1')]={'name':{'type':Sequelize[_0x3599('0x2')]},'channel':{'type':Sequelize[_0x3599('0x2')]},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0x3599('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xbb6d=['exports','STRING','BOOLEAN'];(function(_0x403c20,_0x4a7b99){var _0x2b271a=function(_0x106ecb){while(--_0x106ecb){_0x403c20['push'](_0x403c20['shift']());}};_0x2b271a(++_0x4a7b99);}(_0xbb6d,0x108));var _0xdbb6=function(_0x4e0364,_0x3c2813){_0x4e0364=_0x4e0364-0x0;var _0x174f43=_0xbb6d[_0x4e0364];return _0x174f43;};'use strict';var Sequelize=require('sequelize');module[_0xdbb6('0x0')]={'name':{'type':Sequelize[_0xdbb6('0x1')]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xdbb6('0x1')]},'status':{'type':Sequelize[_0xdbb6('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 4669d6c..c48f6ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5525=['role','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','destroy','addAllCondition','TriggerAllId','Condition','TriggerAnyId','getAllConditions','findOne','filter','nolimit','length','pick','getAnyConditions','addAction','TriggerId','Action','getActions','hasOwnProperty','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','update','then','Triggers','UserProfileResource','stack','name','send','map','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','order','sort','where','type','VIRTUAL','includeAll','include','Trigger','findAll','rows','catch','show','params','merge','options','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x4df17c,_0x2d2b61){var _0x4e79b5=function(_0x2134a5){while(--_0x2134a5){_0x4df17c['push'](_0x4df17c['shift']());}};_0x4e79b5(++_0x2d2b61);}(_0x5525,0x1ec));var _0x5552=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5525[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x5552('0x0'));var rimraf=require(_0x5552('0x1'));var zipdir=require(_0x5552('0x2'));var jsonpatch=require(_0x5552('0x3'));var rp=require('request-promise');var moment=require(_0x5552('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5552('0x5'));var util=require(_0x5552('0x6'));var path=require(_0x5552('0x7'));var sox=require(_0x5552('0x8'));var csv=require('to-csv');var ejs=require(_0x5552('0x9'));var fs=require('fs');var fs_extra=require(_0x5552('0xa'));var _=require(_0x5552('0xb'));var squel=require('squel');var crypto=require(_0x5552('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x5552('0xd'));var toCsv=require(_0x5552('0xe'));var querystring=require(_0x5552('0xf'));var Papa=require(_0x5552('0x10'));var Redis=require(_0x5552('0x11'));var authService=require(_0x5552('0x12'));var qs=require(_0x5552('0x13'));var as=require(_0x5552('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x5552('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x5552('0x16'));var db=require(_0x5552('0x17'))['db'];function respondWithStatusCode(_0x2ffdb1,_0x302ad4){_0x302ad4=_0x302ad4||0xcc;return function(_0x3b4c69){if(_0x3b4c69){return _0x2ffdb1[_0x5552('0x18')](_0x302ad4);}return _0x2ffdb1[_0x5552('0x19')](_0x302ad4)[_0x5552('0x1a')]();};}function respondWithResult(_0x3586d9,_0x4213fb){_0x4213fb=_0x4213fb||0xc8;return function(_0x5488de){if(_0x5488de){return _0x3586d9[_0x5552('0x19')](_0x4213fb)[_0x5552('0x1b')](_0x5488de);}};}function respondWithFilteredResult(_0x156f63,_0x968894){return function(_0x4bfc85){if(_0x4bfc85){var _0x48fa43=typeof _0x968894[_0x5552('0x1c')]==='undefined'&&typeof _0x968894[_0x5552('0x1d')]===_0x5552('0x1e');var _0x539b81=_0x4bfc85[_0x5552('0x1f')];var _0x3891ad=_0x48fa43?0x0:_0x968894['offset'];var _0x1e03db=_0x48fa43?_0x4bfc85[_0x5552('0x1f')]:_0x968894[_0x5552('0x1c')]+_0x968894[_0x5552('0x1d')];var _0x438559;if(_0x1e03db>=_0x539b81){_0x1e03db=_0x539b81;_0x438559=0xc8;}else{_0x438559=0xce;}_0x156f63[_0x5552('0x19')](_0x438559);return _0x156f63[_0x5552('0x20')](_0x5552('0x21'),_0x3891ad+'-'+_0x1e03db+'/'+_0x539b81)['json'](_0x4bfc85);}return null;};}function patchUpdates(_0x3fa605){return function(_0x6b3df9){try{jsonpatch['apply'](_0x6b3df9,_0x3fa605,!![]);}catch(_0x533444){return BPromise['reject'](_0x533444);}return _0x6b3df9['save']();};}function saveUpdates(_0xe2c9c6,_0x38fc67){return function(_0x3daf08){if(_0x3daf08){return _0x3daf08[_0x5552('0x22')](_0xe2c9c6)[_0x5552('0x23')](function(_0x52171b){return _0x52171b;});}return null;};}function removeEntity(_0x3bce0e,_0x3835c2){return function(_0x1ca9fa){if(_0x1ca9fa){return _0x1ca9fa['destroy']()[_0x5552('0x23')](function(){var _0x3aa159=_0x1ca9fa['get']({'plain':!![]});var _0x17aa0d=_0x5552('0x24');return db[_0x5552('0x25')]['destroy']({'where':{'type':_0x17aa0d,'resourceId':_0x3aa159['id']}})[_0x5552('0x23')](function(){return _0x1ca9fa;});})[_0x5552('0x23')](function(){_0x3bce0e[_0x5552('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x16ddfe,_0x972ae2){return function(_0x5383cb){if(!_0x5383cb){_0x16ddfe[_0x5552('0x18')](0x194);}return _0x5383cb;};}function handleError(_0x5ae974,_0x30edc2){_0x30edc2=_0x30edc2||0x1f4;return function(_0x190fee){logger['error'](_0x190fee[_0x5552('0x26')]);if(_0x190fee[_0x5552('0x27')]){delete _0x190fee[_0x5552('0x27')];}_0x5ae974[_0x5552('0x19')](_0x30edc2)[_0x5552('0x28')](_0x190fee);};}exports['index']=function(_0x42c3c6,_0x2ac196){var _0x4adc38={},_0xee1bd8={},_0x17a668={'count':0x0,'rows':[]};var _0x72d50c=_[_0x5552('0x29')](db['Trigger'][_0x5552('0x2a')],function(_0x406be4){return{'name':_0x406be4[_0x5552('0x2b')],'type':_0x406be4['type'][_0x5552('0x2c')]};});_0xee1bd8[_0x5552('0x2d')]=_[_0x5552('0x29')](_0x72d50c,_0x5552('0x27'));_0xee1bd8[_0x5552('0x2e')]=_[_0x5552('0x2f')](_0x42c3c6[_0x5552('0x2e')]);_0xee1bd8[_0x5552('0x30')]=_['intersection'](_0xee1bd8[_0x5552('0x2d')],_0xee1bd8['query']);_0x4adc38[_0x5552('0x31')]=_[_0x5552('0x32')](_0xee1bd8['model'],qs[_0x5552('0x33')](_0x42c3c6[_0x5552('0x2e')][_0x5552('0x33')]));_0x4adc38[_0x5552('0x31')]=_0x4adc38[_0x5552('0x31')]['length']?_0x4adc38[_0x5552('0x31')]:_0xee1bd8[_0x5552('0x2d')];if(!_0x42c3c6[_0x5552('0x2e')]['hasOwnProperty']('nolimit')){_0x4adc38['limit']=qs[_0x5552('0x1d')](_0x42c3c6[_0x5552('0x2e')][_0x5552('0x1d')]);_0x4adc38[_0x5552('0x1c')]=qs[_0x5552('0x1c')](_0x42c3c6['query'][_0x5552('0x1c')]);}_0x4adc38[_0x5552('0x34')]=qs[_0x5552('0x35')](_0x42c3c6['query'][_0x5552('0x35')]);_0x4adc38['where']=qs[_0x5552('0x30')](_['pick'](_0x42c3c6[_0x5552('0x2e')],_0xee1bd8['filters']),_0x72d50c);if(_0x42c3c6[_0x5552('0x2e')]['filter']){_0x4adc38['where']=_['merge'](_0x4adc38[_0x5552('0x36')],{'$or':_[_0x5552('0x29')](_0x72d50c,function(_0x18df66){if(_0x18df66[_0x5552('0x37')]!==_0x5552('0x38')){var _0xeaf84f={};_0xeaf84f[_0x18df66[_0x5552('0x27')]]={'$like':'%'+_0x42c3c6['query']['filter']+'%'};return _0xeaf84f;}})});}_0x4adc38=_['merge']({},_0x4adc38,_0x42c3c6['options']);var _0x51d009={'where':_0x4adc38['where']};return db['Trigger']['count'](_0x51d009)[_0x5552('0x23')](function(_0x29ad73){_0x17a668['count']=_0x29ad73;if(_0x42c3c6[_0x5552('0x2e')][_0x5552('0x39')]){_0x4adc38[_0x5552('0x3a')]=[{'all':!![]}];}return db[_0x5552('0x3b')][_0x5552('0x3c')](_0x4adc38);})['then'](function(_0x5df1b3){_0x17a668[_0x5552('0x3d')]=_0x5df1b3;return _0x17a668;})[_0x5552('0x23')](respondWithFilteredResult(_0x2ac196,_0x4adc38))[_0x5552('0x3e')](handleError(_0x2ac196,null));};exports[_0x5552('0x3f')]=function(_0x19b7b4,_0x209790){var _0x5b1a0e={'raw':![],'where':{'id':_0x19b7b4[_0x5552('0x40')]['id']}},_0x490e3e={};_0x490e3e[_0x5552('0x2d')]=_[_0x5552('0x2f')](db[_0x5552('0x3b')][_0x5552('0x2a')]);_0x490e3e[_0x5552('0x2e')]=_['keys'](_0x19b7b4['query']);_0x490e3e[_0x5552('0x30')]=_['intersection'](_0x490e3e[_0x5552('0x2d')],_0x490e3e[_0x5552('0x2e')]);_0x5b1a0e['attributes']=_[_0x5552('0x32')](_0x490e3e[_0x5552('0x2d')],qs['fields'](_0x19b7b4[_0x5552('0x2e')]['fields']));_0x5b1a0e[_0x5552('0x31')]=_0x5b1a0e[_0x5552('0x31')]['length']?_0x5b1a0e[_0x5552('0x31')]:_0x490e3e['model'];if(_0x19b7b4[_0x5552('0x2e')][_0x5552('0x39')]){_0x5b1a0e[_0x5552('0x3a')]=[{'all':!![]}];}_0x5b1a0e=_[_0x5552('0x41')]({},_0x5b1a0e,_0x19b7b4[_0x5552('0x42')]);return db[_0x5552('0x3b')]['find'](_0x5b1a0e)[_0x5552('0x23')](handleEntityNotFound(_0x209790,null))[_0x5552('0x23')](respondWithResult(_0x209790,null))[_0x5552('0x3e')](handleError(_0x209790,null));};exports[_0x5552('0x43')]=function(_0x41ed64,_0x1dd489){return db['Trigger']['create'](_0x41ed64[_0x5552('0x44')],{})['then'](function(_0x4b06c1){var _0x5ce3b9=_0x41ed64[_0x5552('0x45')][_0x5552('0x46')]({'plain':!![]});if(!_0x5ce3b9)throw new Error(_0x5552('0x47'));if(_0x5ce3b9[_0x5552('0x48')]===_0x5552('0x45')){var _0x2025d2=_0x4b06c1['get']({'plain':!![]});var _0x35adc1=_0x5552('0x24');return db['UserProfileSection'][_0x5552('0x49')]({'where':{'name':_0x35adc1,'userProfileId':_0x5ce3b9[_0x5552('0x4a')]},'raw':!![]})[_0x5552('0x23')](function(_0x4a544a){if(_0x4a544a&&_0x4a544a[_0x5552('0x4b')]===0x0){return db[_0x5552('0x25')]['create']({'name':_0x2025d2['name'],'resourceId':_0x2025d2['id'],'type':_0x4a544a[_0x5552('0x27')],'sectionId':_0x4a544a['id']},{})['then'](function(){return _0x4b06c1;});}else{return _0x4b06c1;}})[_0x5552('0x3e')](function(_0x3683a6){logger['error'](_0x5552('0x4c'),_0x3683a6);throw _0x3683a6;});}return _0x4b06c1;})[_0x5552('0x23')](respondWithResult(_0x1dd489,0xc9))[_0x5552('0x3e')](handleError(_0x1dd489,null));};exports[_0x5552('0x22')]=function(_0x26a181,_0x19df70){if(_0x26a181['body']['id']){delete _0x26a181[_0x5552('0x44')]['id'];}return db[_0x5552('0x3b')][_0x5552('0x49')]({'where':{'id':_0x26a181['params']['id']}})[_0x5552('0x23')](handleEntityNotFound(_0x19df70,null))[_0x5552('0x23')](saveUpdates(_0x26a181[_0x5552('0x44')],null))[_0x5552('0x23')](respondWithResult(_0x19df70,null))['catch'](handleError(_0x19df70,null));};exports[_0x5552('0x4d')]=function(_0xa875cd,_0x7212aa){return db[_0x5552('0x3b')][_0x5552('0x49')]({'where':{'id':_0xa875cd['params']['id']}})['then'](handleEntityNotFound(_0x7212aa,null))['then'](removeEntity(_0x7212aa,null))[_0x5552('0x3e')](handleError(_0x7212aa,null));};exports[_0x5552('0x4e')]=function(_0x2340c9,_0x287531,_0x2f1321){if(_0x2340c9[_0x5552('0x44')]['id']){delete _0x2340c9[_0x5552('0x44')]['id'];}return db[_0x5552('0x3b')][_0x5552('0x49')]({'where':{'id':_0x2340c9[_0x5552('0x40')]['id']}})[_0x5552('0x23')](handleEntityNotFound(_0x287531,null))[_0x5552('0x23')](function(_0x77d38a){if(_0x77d38a){_0x2340c9[_0x5552('0x44')][_0x5552('0x4f')]=_0x77d38a['id'];return db[_0x5552('0x50')]['create'](_0x2340c9[_0x5552('0x44')]);}})[_0x5552('0x23')](respondWithResult(_0x287531,null))[_0x5552('0x3e')](handleError(_0x287531,null));};exports['addAnyCondition']=function(_0x574a78,_0x6f6700,_0xa86364){if(_0x574a78[_0x5552('0x44')]['id']){delete _0x574a78[_0x5552('0x44')]['id'];}return db['Trigger'][_0x5552('0x49')]({'where':{'id':_0x574a78[_0x5552('0x40')]['id']}})[_0x5552('0x23')](handleEntityNotFound(_0x6f6700,null))[_0x5552('0x23')](function(_0x145a82){if(_0x145a82){_0x574a78[_0x5552('0x44')][_0x5552('0x51')]=_0x145a82['id'];return db[_0x5552('0x50')][_0x5552('0x43')](_0x574a78['body']);}})['then'](respondWithResult(_0x6f6700,null))[_0x5552('0x3e')](handleError(_0x6f6700,null));};exports[_0x5552('0x52')]=function(_0xf3d155,_0x54248a,_0x2870e7){var _0x5a616a={};var _0x4da9d0={};var _0x55be42;var _0x119c35;return db['Trigger'][_0x5552('0x53')]({'where':{'id':_0xf3d155['params']['id']}})['then'](handleEntityNotFound(_0x54248a,null))[_0x5552('0x23')](function(_0x233589){if(_0x233589){_0x55be42=_0x233589;_0x4da9d0['model']=_[_0x5552('0x2f')](db[_0x5552('0x50')][_0x5552('0x2a')]);_0x4da9d0[_0x5552('0x2e')]=_['keys'](_0xf3d155[_0x5552('0x2e')]);_0x4da9d0[_0x5552('0x30')]=_[_0x5552('0x32')](_0x4da9d0[_0x5552('0x2d')],_0x4da9d0[_0x5552('0x2e')]);_0x5a616a[_0x5552('0x31')]=_['intersection'](_0x4da9d0[_0x5552('0x2d')],qs['fields'](_0xf3d155[_0x5552('0x2e')][_0x5552('0x33')]));_0x5a616a['attributes']=_0x5a616a['attributes']['length']?_0x5a616a[_0x5552('0x31')]:_0x4da9d0[_0x5552('0x2d')];_0x5a616a[_0x5552('0x34')]=qs['sort'](_0xf3d155[_0x5552('0x2e')][_0x5552('0x35')]);_0x5a616a['where']=qs[_0x5552('0x30')](_['pick'](_0xf3d155[_0x5552('0x2e')],_0x4da9d0[_0x5552('0x30')]));if(_0xf3d155[_0x5552('0x2e')][_0x5552('0x54')]){_0x5a616a[_0x5552('0x36')]=_[_0x5552('0x41')](_0x5a616a[_0x5552('0x36')],{'$or':_[_0x5552('0x29')](_0x5a616a[_0x5552('0x31')],function(_0x302bc9){var _0xbd6f9b={};_0xbd6f9b[_0x302bc9]={'$like':'%'+_0xf3d155[_0x5552('0x2e')]['filter']+'%'};return _0xbd6f9b;})});}_0x5a616a=_[_0x5552('0x41')]({},_0x5a616a,_0xf3d155[_0x5552('0x42')]);return _0x55be42[_0x5552('0x52')](_0x5a616a);}})[_0x5552('0x23')](function(_0x365a1d){if(_0x365a1d){_0x119c35=_0x365a1d['length'];if(!_0xf3d155['query']['hasOwnProperty'](_0x5552('0x55'))){_0x5a616a[_0x5552('0x1d')]=qs[_0x5552('0x1d')](_0xf3d155[_0x5552('0x2e')][_0x5552('0x1d')]);_0x5a616a['offset']=qs[_0x5552('0x1c')](_0xf3d155[_0x5552('0x2e')][_0x5552('0x1c')]);}return _0x55be42[_0x5552('0x52')](_0x5a616a);}})[_0x5552('0x23')](function(_0x1a7e10){if(_0x1a7e10){return _0x1a7e10?{'count':_0x119c35,'rows':_0x1a7e10}:null;}})[_0x5552('0x23')](respondWithResult(_0x54248a,null))[_0x5552('0x3e')](handleError(_0x54248a,null));};exports['getAnyConditions']=function(_0x55802d,_0x3ebcb5,_0x409d36){var _0x3631a2={};var _0x670748={};var _0x3c59e3;var _0x1a3cd1;return db[_0x5552('0x3b')][_0x5552('0x53')]({'where':{'id':_0x55802d[_0x5552('0x40')]['id']}})[_0x5552('0x23')](handleEntityNotFound(_0x3ebcb5,null))[_0x5552('0x23')](function(_0x491119){if(_0x491119){_0x3c59e3=_0x491119;_0x670748[_0x5552('0x2d')]=_[_0x5552('0x2f')](db[_0x5552('0x50')][_0x5552('0x2a')]);_0x670748[_0x5552('0x2e')]=_[_0x5552('0x2f')](_0x55802d[_0x5552('0x2e')]);_0x670748[_0x5552('0x30')]=_[_0x5552('0x32')](_0x670748[_0x5552('0x2d')],_0x670748[_0x5552('0x2e')]);_0x3631a2[_0x5552('0x31')]=_[_0x5552('0x32')](_0x670748[_0x5552('0x2d')],qs[_0x5552('0x33')](_0x55802d[_0x5552('0x2e')][_0x5552('0x33')]));_0x3631a2[_0x5552('0x31')]=_0x3631a2[_0x5552('0x31')][_0x5552('0x56')]?_0x3631a2[_0x5552('0x31')]:_0x670748['model'];_0x3631a2[_0x5552('0x34')]=qs[_0x5552('0x35')](_0x55802d[_0x5552('0x2e')][_0x5552('0x35')]);_0x3631a2[_0x5552('0x36')]=qs[_0x5552('0x30')](_[_0x5552('0x57')](_0x55802d['query'],_0x670748[_0x5552('0x30')]));if(_0x55802d[_0x5552('0x2e')][_0x5552('0x54')]){_0x3631a2[_0x5552('0x36')]=_[_0x5552('0x41')](_0x3631a2[_0x5552('0x36')],{'$or':_[_0x5552('0x29')](_0x3631a2['attributes'],function(_0x16ea81){var _0x3e2663={};_0x3e2663[_0x16ea81]={'$like':'%'+_0x55802d[_0x5552('0x2e')][_0x5552('0x54')]+'%'};return _0x3e2663;})});}_0x3631a2=_[_0x5552('0x41')]({},_0x3631a2,_0x55802d[_0x5552('0x42')]);return _0x3c59e3[_0x5552('0x58')](_0x3631a2);}})[_0x5552('0x23')](function(_0x152418){if(_0x152418){_0x1a3cd1=_0x152418['length'];if(!_0x55802d[_0x5552('0x2e')]['hasOwnProperty'](_0x5552('0x55'))){_0x3631a2['limit']=qs[_0x5552('0x1d')](_0x55802d[_0x5552('0x2e')][_0x5552('0x1d')]);_0x3631a2[_0x5552('0x1c')]=qs[_0x5552('0x1c')](_0x55802d[_0x5552('0x2e')][_0x5552('0x1c')]);}return _0x3c59e3[_0x5552('0x58')](_0x3631a2);}})[_0x5552('0x23')](function(_0x5a9c4e){if(_0x5a9c4e){return _0x5a9c4e?{'count':_0x1a3cd1,'rows':_0x5a9c4e}:null;}})['then'](respondWithResult(_0x3ebcb5,null))['catch'](handleError(_0x3ebcb5,null));};exports[_0x5552('0x59')]=function(_0x3edf27,_0x5b4425,_0x1d607c){if(_0x3edf27[_0x5552('0x44')]['id']){delete _0x3edf27[_0x5552('0x44')]['id'];}return db[_0x5552('0x3b')][_0x5552('0x49')]({'where':{'id':_0x3edf27[_0x5552('0x40')]['id']}})[_0x5552('0x23')](handleEntityNotFound(_0x5b4425,null))['then'](function(_0x3b50ea){if(_0x3b50ea){_0x3edf27[_0x5552('0x44')][_0x5552('0x5a')]=_0x3b50ea['id'];return db[_0x5552('0x5b')][_0x5552('0x43')](_0x3edf27[_0x5552('0x44')]);}})['then'](respondWithResult(_0x5b4425,null))['catch'](handleError(_0x5b4425,null));};exports[_0x5552('0x5c')]=function(_0xcfb3c2,_0x1cb034,_0x1a9e3c){var _0x317075={};var _0x1f1e64={};var _0x524d24;var _0x20bdfa;return db[_0x5552('0x3b')][_0x5552('0x53')]({'where':{'id':_0xcfb3c2['params']['id']}})['then'](handleEntityNotFound(_0x1cb034,null))[_0x5552('0x23')](function(_0x529a98){if(_0x529a98){_0x524d24=_0x529a98;_0x1f1e64[_0x5552('0x2d')]=_[_0x5552('0x2f')](db[_0x5552('0x5b')]['rawAttributes']);_0x1f1e64[_0x5552('0x2e')]=_[_0x5552('0x2f')](_0xcfb3c2[_0x5552('0x2e')]);_0x1f1e64[_0x5552('0x30')]=_[_0x5552('0x32')](_0x1f1e64[_0x5552('0x2d')],_0x1f1e64[_0x5552('0x2e')]);_0x317075[_0x5552('0x31')]=_[_0x5552('0x32')](_0x1f1e64['model'],qs[_0x5552('0x33')](_0xcfb3c2[_0x5552('0x2e')]['fields']));_0x317075[_0x5552('0x31')]=_0x317075[_0x5552('0x31')]['length']?_0x317075[_0x5552('0x31')]:_0x1f1e64[_0x5552('0x2d')];_0x317075['order']=qs[_0x5552('0x35')](_0xcfb3c2[_0x5552('0x2e')][_0x5552('0x35')]);_0x317075[_0x5552('0x36')]=qs[_0x5552('0x30')](_[_0x5552('0x57')](_0xcfb3c2[_0x5552('0x2e')],_0x1f1e64[_0x5552('0x30')]));if(_0xcfb3c2[_0x5552('0x2e')][_0x5552('0x54')]){_0x317075['where']=_[_0x5552('0x41')](_0x317075[_0x5552('0x36')],{'$or':_[_0x5552('0x29')](_0x317075['attributes'],function(_0xf32099){var _0xf8e6b6={};_0xf8e6b6[_0xf32099]={'$like':'%'+_0xcfb3c2[_0x5552('0x2e')][_0x5552('0x54')]+'%'};return _0xf8e6b6;})});}_0x317075=_['merge']({},_0x317075,_0xcfb3c2[_0x5552('0x42')]);return _0x524d24[_0x5552('0x5c')](_0x317075);}})[_0x5552('0x23')](function(_0x50fd87){if(_0x50fd87){_0x20bdfa=_0x50fd87[_0x5552('0x56')];if(!_0xcfb3c2[_0x5552('0x2e')][_0x5552('0x5d')](_0x5552('0x55'))){_0x317075[_0x5552('0x1d')]=qs[_0x5552('0x1d')](_0xcfb3c2[_0x5552('0x2e')][_0x5552('0x1d')]);_0x317075['offset']=qs[_0x5552('0x1c')](_0xcfb3c2[_0x5552('0x2e')]['offset']);}return _0x524d24[_0x5552('0x5c')](_0x317075);}})[_0x5552('0x23')](function(_0x3478a3){if(_0x3478a3){return _0x3478a3?{'count':_0x20bdfa,'rows':_0x3478a3}:null;}})[_0x5552('0x23')](respondWithResult(_0x1cb034,null))[_0x5552('0x3e')](handleError(_0x1cb034,null));};
\ No newline at end of file
+var _0x140e=['nolimit','addAction','TriggerId','Action','getActions','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','limit','undefined','set','Content-Range','json','apply','destroy','then','get','Triggers','UserProfileResource','stack','name','send','index','map','Trigger','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','sort','where','pick','filter','merge','VIRTUAL','options','count','include','rows','catch','params','includeAll','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','addAllCondition','TriggerAllId','Condition','TriggerAnyId','findOne','order','hasOwnProperty','getAllConditions','getAnyConditions'];(function(_0x3920c2,_0x55b692){var _0x4a9753=function(_0x10b158){while(--_0x10b158){_0x3920c2['push'](_0x3920c2['shift']());}};_0x4a9753(++_0x55b692);}(_0x140e,0xc5));var _0xe140=function(_0x3ac4a2,_0x38320b){_0x3ac4a2=_0x3ac4a2-0x0;var _0x48851b=_0x140e[_0x3ac4a2];return _0x48851b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe140('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe140('0x1'));var rp=require(_0xe140('0x2'));var moment=require('moment');var BPromise=require(_0xe140('0x3'));var Mustache=require(_0xe140('0x4'));var util=require('util');var path=require(_0xe140('0x5'));var sox=require(_0xe140('0x6'));var csv=require(_0xe140('0x7'));var ejs=require(_0xe140('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe140('0x9'));var squel=require(_0xe140('0xa'));var crypto=require('crypto');var jsforce=require(_0xe140('0xb'));var deskjs=require(_0xe140('0xc'));var toCsv=require(_0xe140('0x7'));var querystring=require(_0xe140('0xd'));var Papa=require(_0xe140('0xe'));var Redis=require(_0xe140('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xe140('0x10'));var as=require(_0xe140('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xe140('0x12'))(_0xe140('0x13'));var utils=require(_0xe140('0x14'));var config=require(_0xe140('0x15'));var licenseUtil=require(_0xe140('0x16'));var db=require(_0xe140('0x17'))['db'];function respondWithStatusCode(_0x25fbf2,_0x360958){_0x360958=_0x360958||0xcc;return function(_0x5e1362){if(_0x5e1362){return _0x25fbf2[_0xe140('0x18')](_0x360958);}return _0x25fbf2['status'](_0x360958)[_0xe140('0x19')]();};}function respondWithResult(_0x45862c,_0x27b512){_0x27b512=_0x27b512||0xc8;return function(_0x424712){if(_0x424712){return _0x45862c[_0xe140('0x1a')](_0x27b512)['json'](_0x424712);}};}function respondWithFilteredResult(_0x5ac2b1,_0x3cdddf){return function(_0xe17138){if(_0xe17138){var _0x303cce=typeof _0x3cdddf[_0xe140('0x1b')]==='undefined'&&typeof _0x3cdddf[_0xe140('0x1c')]===_0xe140('0x1d');var _0x52816b=_0xe17138['count'];var _0x311fa2=_0x303cce?0x0:_0x3cdddf['offset'];var _0x4b272f=_0x303cce?_0xe17138['count']:_0x3cdddf[_0xe140('0x1b')]+_0x3cdddf['limit'];var _0x36bcd3;if(_0x4b272f>=_0x52816b){_0x4b272f=_0x52816b;_0x36bcd3=0xc8;}else{_0x36bcd3=0xce;}_0x5ac2b1['status'](_0x36bcd3);return _0x5ac2b1[_0xe140('0x1e')](_0xe140('0x1f'),_0x311fa2+'-'+_0x4b272f+'/'+_0x52816b)[_0xe140('0x20')](_0xe17138);}return null;};}function patchUpdates(_0x5ed54b){return function(_0x2ee126){try{jsonpatch[_0xe140('0x21')](_0x2ee126,_0x5ed54b,!![]);}catch(_0x3087bb){return BPromise['reject'](_0x3087bb);}return _0x2ee126['save']();};}function saveUpdates(_0x48fcdd,_0x55f8db){return function(_0xd0c430){if(_0xd0c430){return _0xd0c430['update'](_0x48fcdd)['then'](function(_0x1318c4){return _0x1318c4;});}return null;};}function removeEntity(_0x311cfb,_0x50df49){return function(_0x230177){if(_0x230177){return _0x230177[_0xe140('0x22')]()[_0xe140('0x23')](function(){var _0x21eeeb=_0x230177[_0xe140('0x24')]({'plain':!![]});var _0x536417=_0xe140('0x25');return db[_0xe140('0x26')]['destroy']({'where':{'type':_0x536417,'resourceId':_0x21eeeb['id']}})[_0xe140('0x23')](function(){return _0x230177;});})[_0xe140('0x23')](function(){_0x311cfb[_0xe140('0x1a')](0xcc)[_0xe140('0x19')]();});}};}function handleEntityNotFound(_0x58e342,_0x274edc){return function(_0x128382){if(!_0x128382){_0x58e342[_0xe140('0x18')](0x194);}return _0x128382;};}function handleError(_0x27d9cf,_0x19cbb2){_0x19cbb2=_0x19cbb2||0x1f4;return function(_0x129ab3){logger['error'](_0x129ab3[_0xe140('0x27')]);if(_0x129ab3[_0xe140('0x28')]){delete _0x129ab3[_0xe140('0x28')];}_0x27d9cf[_0xe140('0x1a')](_0x19cbb2)[_0xe140('0x29')](_0x129ab3);};}exports[_0xe140('0x2a')]=function(_0x3b0b5d,_0x4b701b){var _0x46b389={},_0x3a9f24={},_0x4e9e83={'count':0x0,'rows':[]};var _0x1e6c11=_[_0xe140('0x2b')](db[_0xe140('0x2c')][_0xe140('0x2d')],function(_0x3a2a7e){return{'name':_0x3a2a7e[_0xe140('0x2e')],'type':_0x3a2a7e[_0xe140('0x2f')][_0xe140('0x30')]};});_0x3a9f24[_0xe140('0x31')]=_['map'](_0x1e6c11,_0xe140('0x28'));_0x3a9f24[_0xe140('0x32')]=_[_0xe140('0x33')](_0x3b0b5d[_0xe140('0x32')]);_0x3a9f24[_0xe140('0x34')]=_['intersection'](_0x3a9f24[_0xe140('0x31')],_0x3a9f24[_0xe140('0x32')]);_0x46b389[_0xe140('0x35')]=_[_0xe140('0x36')](_0x3a9f24['model'],qs['fields'](_0x3b0b5d['query'][_0xe140('0x37')]));_0x46b389[_0xe140('0x35')]=_0x46b389['attributes'][_0xe140('0x38')]?_0x46b389[_0xe140('0x35')]:_0x3a9f24[_0xe140('0x31')];if(!_0x3b0b5d['query']['hasOwnProperty']('nolimit')){_0x46b389[_0xe140('0x1c')]=qs[_0xe140('0x1c')](_0x3b0b5d[_0xe140('0x32')][_0xe140('0x1c')]);_0x46b389[_0xe140('0x1b')]=qs[_0xe140('0x1b')](_0x3b0b5d[_0xe140('0x32')][_0xe140('0x1b')]);}_0x46b389['order']=qs[_0xe140('0x39')](_0x3b0b5d['query'][_0xe140('0x39')]);_0x46b389[_0xe140('0x3a')]=qs[_0xe140('0x34')](_[_0xe140('0x3b')](_0x3b0b5d[_0xe140('0x32')],_0x3a9f24[_0xe140('0x34')]),_0x1e6c11);if(_0x3b0b5d['query'][_0xe140('0x3c')]){_0x46b389[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x46b389[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x1e6c11,function(_0x5c3c45){if(_0x5c3c45['type']!==_0xe140('0x3e')){var _0x11c790={};_0x11c790[_0x5c3c45[_0xe140('0x28')]]={'$like':'%'+_0x3b0b5d['query']['filter']+'%'};return _0x11c790;}})});}_0x46b389=_[_0xe140('0x3d')]({},_0x46b389,_0x3b0b5d[_0xe140('0x3f')]);var _0x26bf69={'where':_0x46b389[_0xe140('0x3a')]};return db[_0xe140('0x2c')][_0xe140('0x40')](_0x26bf69)['then'](function(_0x442409){_0x4e9e83[_0xe140('0x40')]=_0x442409;if(_0x3b0b5d[_0xe140('0x32')]['includeAll']){_0x46b389[_0xe140('0x41')]=[{'all':!![]}];}return db[_0xe140('0x2c')]['findAll'](_0x46b389);})[_0xe140('0x23')](function(_0x337ac3){_0x4e9e83[_0xe140('0x42')]=_0x337ac3;return _0x4e9e83;})[_0xe140('0x23')](respondWithFilteredResult(_0x4b701b,_0x46b389))[_0xe140('0x43')](handleError(_0x4b701b,null));};exports['show']=function(_0x5924d3,_0x2ff135){var _0x51ff98={'raw':![],'where':{'id':_0x5924d3[_0xe140('0x44')]['id']}},_0x1d9367={};_0x1d9367[_0xe140('0x31')]=_[_0xe140('0x33')](db[_0xe140('0x2c')][_0xe140('0x2d')]);_0x1d9367[_0xe140('0x32')]=_[_0xe140('0x33')](_0x5924d3[_0xe140('0x32')]);_0x1d9367[_0xe140('0x34')]=_[_0xe140('0x36')](_0x1d9367[_0xe140('0x31')],_0x1d9367[_0xe140('0x32')]);_0x51ff98['attributes']=_[_0xe140('0x36')](_0x1d9367[_0xe140('0x31')],qs[_0xe140('0x37')](_0x5924d3['query'][_0xe140('0x37')]));_0x51ff98[_0xe140('0x35')]=_0x51ff98['attributes'][_0xe140('0x38')]?_0x51ff98['attributes']:_0x1d9367['model'];if(_0x5924d3[_0xe140('0x32')][_0xe140('0x45')]){_0x51ff98['include']=[{'all':!![]}];}_0x51ff98=_[_0xe140('0x3d')]({},_0x51ff98,_0x5924d3[_0xe140('0x3f')]);return db[_0xe140('0x2c')][_0xe140('0x46')](_0x51ff98)['then'](handleEntityNotFound(_0x2ff135,null))[_0xe140('0x23')](respondWithResult(_0x2ff135,null))[_0xe140('0x43')](handleError(_0x2ff135,null));};exports['create']=function(_0x526596,_0x5c51be){return db['Trigger'][_0xe140('0x47')](_0x526596[_0xe140('0x48')],{})['then'](function(_0x34233f){var _0x124027=_0x526596[_0xe140('0x49')][_0xe140('0x24')]({'plain':!![]});if(!_0x124027)throw new Error(_0xe140('0x4a'));if(_0x124027[_0xe140('0x4b')]===_0xe140('0x49')){var _0x5944ea=_0x34233f[_0xe140('0x24')]({'plain':!![]});var _0x3e6e5d='Triggers';return db[_0xe140('0x4c')][_0xe140('0x46')]({'where':{'name':_0x3e6e5d,'userProfileId':_0x124027[_0xe140('0x4d')]},'raw':!![]})[_0xe140('0x23')](function(_0xcb5535){if(_0xcb5535&&_0xcb5535[_0xe140('0x4e')]===0x0){return db[_0xe140('0x26')]['create']({'name':_0x5944ea[_0xe140('0x28')],'resourceId':_0x5944ea['id'],'type':_0xcb5535[_0xe140('0x28')],'sectionId':_0xcb5535['id']},{})[_0xe140('0x23')](function(){return _0x34233f;});}else{return _0x34233f;}})[_0xe140('0x43')](function(_0x3207f2){logger[_0xe140('0x4f')](_0xe140('0x50'),_0x3207f2);throw _0x3207f2;});}return _0x34233f;})[_0xe140('0x23')](respondWithResult(_0x5c51be,0xc9))[_0xe140('0x43')](handleError(_0x5c51be,null));};exports[_0xe140('0x51')]=function(_0x4bb48a,_0x49a78b){if(_0x4bb48a[_0xe140('0x48')]['id']){delete _0x4bb48a[_0xe140('0x48')]['id'];}return db['Trigger'][_0xe140('0x46')]({'where':{'id':_0x4bb48a[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x49a78b,null))['then'](saveUpdates(_0x4bb48a[_0xe140('0x48')],null))[_0xe140('0x23')](respondWithResult(_0x49a78b,null))[_0xe140('0x43')](handleError(_0x49a78b,null));};exports[_0xe140('0x22')]=function(_0x3525d1,_0x54562c){return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x3525d1[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x54562c,null))[_0xe140('0x23')](removeEntity(_0x54562c,null))[_0xe140('0x43')](handleError(_0x54562c,null));};exports[_0xe140('0x52')]=function(_0x3ffa38,_0x3e9d45,_0x59c92f){if(_0x3ffa38[_0xe140('0x48')]['id']){delete _0x3ffa38[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x3ffa38['params']['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x3e9d45,null))[_0xe140('0x23')](function(_0x27010d){if(_0x27010d){_0x3ffa38[_0xe140('0x48')][_0xe140('0x53')]=_0x27010d['id'];return db[_0xe140('0x54')][_0xe140('0x47')](_0x3ffa38[_0xe140('0x48')]);}})['then'](respondWithResult(_0x3e9d45,null))['catch'](handleError(_0x3e9d45,null));};exports['addAnyCondition']=function(_0x329a68,_0x5decf4,_0x21bc16){if(_0x329a68[_0xe140('0x48')]['id']){delete _0x329a68[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x329a68['params']['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x5decf4,null))[_0xe140('0x23')](function(_0x428840){if(_0x428840){_0x329a68[_0xe140('0x48')][_0xe140('0x55')]=_0x428840['id'];return db[_0xe140('0x54')]['create'](_0x329a68[_0xe140('0x48')]);}})[_0xe140('0x23')](respondWithResult(_0x5decf4,null))[_0xe140('0x43')](handleError(_0x5decf4,null));};exports['getAllConditions']=function(_0x169cd0,_0x23ad53,_0x5e2910){var _0x4918a1={};var _0x2d1e7a={};var _0x5f2717;var _0x3f6f2b;return db[_0xe140('0x2c')][_0xe140('0x56')]({'where':{'id':_0x169cd0[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x23ad53,null))[_0xe140('0x23')](function(_0x4fbdc9){if(_0x4fbdc9){_0x5f2717=_0x4fbdc9;_0x2d1e7a[_0xe140('0x31')]=_['keys'](db[_0xe140('0x54')][_0xe140('0x2d')]);_0x2d1e7a['query']=_['keys'](_0x169cd0['query']);_0x2d1e7a[_0xe140('0x34')]=_[_0xe140('0x36')](_0x2d1e7a[_0xe140('0x31')],_0x2d1e7a[_0xe140('0x32')]);_0x4918a1[_0xe140('0x35')]=_['intersection'](_0x2d1e7a['model'],qs[_0xe140('0x37')](_0x169cd0[_0xe140('0x32')][_0xe140('0x37')]));_0x4918a1[_0xe140('0x35')]=_0x4918a1[_0xe140('0x35')][_0xe140('0x38')]?_0x4918a1['attributes']:_0x2d1e7a[_0xe140('0x31')];_0x4918a1[_0xe140('0x57')]=qs[_0xe140('0x39')](_0x169cd0['query'][_0xe140('0x39')]);_0x4918a1[_0xe140('0x3a')]=qs[_0xe140('0x34')](_[_0xe140('0x3b')](_0x169cd0['query'],_0x2d1e7a[_0xe140('0x34')]));if(_0x169cd0[_0xe140('0x32')][_0xe140('0x3c')]){_0x4918a1[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x4918a1[_0xe140('0x3a')],{'$or':_['map'](_0x4918a1[_0xe140('0x35')],function(_0x309a15){var _0x32e519={};_0x32e519[_0x309a15]={'$like':'%'+_0x169cd0[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x32e519;})});}_0x4918a1=_[_0xe140('0x3d')]({},_0x4918a1,_0x169cd0[_0xe140('0x3f')]);return _0x5f2717['getAllConditions'](_0x4918a1);}})[_0xe140('0x23')](function(_0x3942f3){if(_0x3942f3){_0x3f6f2b=_0x3942f3[_0xe140('0x38')];if(!_0x169cd0[_0xe140('0x32')][_0xe140('0x58')]('nolimit')){_0x4918a1[_0xe140('0x1c')]=qs['limit'](_0x169cd0[_0xe140('0x32')][_0xe140('0x1c')]);_0x4918a1['offset']=qs[_0xe140('0x1b')](_0x169cd0[_0xe140('0x32')][_0xe140('0x1b')]);}return _0x5f2717[_0xe140('0x59')](_0x4918a1);}})[_0xe140('0x23')](function(_0xdbdd96){if(_0xdbdd96){return _0xdbdd96?{'count':_0x3f6f2b,'rows':_0xdbdd96}:null;}})['then'](respondWithResult(_0x23ad53,null))[_0xe140('0x43')](handleError(_0x23ad53,null));};exports[_0xe140('0x5a')]=function(_0x36176a,_0x1fcbe0,_0x229d5a){var _0x35688a={};var _0x2d4ac4={};var _0x2f368d;var _0x400a7e;return db[_0xe140('0x2c')][_0xe140('0x56')]({'where':{'id':_0x36176a[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x1fcbe0,null))[_0xe140('0x23')](function(_0x234b92){if(_0x234b92){_0x2f368d=_0x234b92;_0x2d4ac4['model']=_[_0xe140('0x33')](db[_0xe140('0x54')][_0xe140('0x2d')]);_0x2d4ac4[_0xe140('0x32')]=_[_0xe140('0x33')](_0x36176a[_0xe140('0x32')]);_0x2d4ac4[_0xe140('0x34')]=_[_0xe140('0x36')](_0x2d4ac4[_0xe140('0x31')],_0x2d4ac4[_0xe140('0x32')]);_0x35688a[_0xe140('0x35')]=_[_0xe140('0x36')](_0x2d4ac4[_0xe140('0x31')],qs[_0xe140('0x37')](_0x36176a[_0xe140('0x32')]['fields']));_0x35688a[_0xe140('0x35')]=_0x35688a['attributes'][_0xe140('0x38')]?_0x35688a[_0xe140('0x35')]:_0x2d4ac4[_0xe140('0x31')];_0x35688a[_0xe140('0x57')]=qs[_0xe140('0x39')](_0x36176a[_0xe140('0x32')][_0xe140('0x39')]);_0x35688a[_0xe140('0x3a')]=qs[_0xe140('0x34')](_['pick'](_0x36176a[_0xe140('0x32')],_0x2d4ac4[_0xe140('0x34')]));if(_0x36176a[_0xe140('0x32')][_0xe140('0x3c')]){_0x35688a[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x35688a[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x35688a[_0xe140('0x35')],function(_0x13d321){var _0x3d748f={};_0x3d748f[_0x13d321]={'$like':'%'+_0x36176a[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x3d748f;})});}_0x35688a=_[_0xe140('0x3d')]({},_0x35688a,_0x36176a[_0xe140('0x3f')]);return _0x2f368d[_0xe140('0x5a')](_0x35688a);}})['then'](function(_0x16cf32){if(_0x16cf32){_0x400a7e=_0x16cf32[_0xe140('0x38')];if(!_0x36176a[_0xe140('0x32')][_0xe140('0x58')](_0xe140('0x5b'))){_0x35688a['limit']=qs[_0xe140('0x1c')](_0x36176a[_0xe140('0x32')][_0xe140('0x1c')]);_0x35688a[_0xe140('0x1b')]=qs['offset'](_0x36176a[_0xe140('0x32')]['offset']);}return _0x2f368d[_0xe140('0x5a')](_0x35688a);}})['then'](function(_0x6e5f1a){if(_0x6e5f1a){return _0x6e5f1a?{'count':_0x400a7e,'rows':_0x6e5f1a}:null;}})['then'](respondWithResult(_0x1fcbe0,null))[_0xe140('0x43')](handleError(_0x1fcbe0,null));};exports[_0xe140('0x5c')]=function(_0x5695ac,_0x22935b,_0x499a0a){if(_0x5695ac[_0xe140('0x48')]['id']){delete _0x5695ac[_0xe140('0x48')]['id'];}return db[_0xe140('0x2c')][_0xe140('0x46')]({'where':{'id':_0x5695ac[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x22935b,null))[_0xe140('0x23')](function(_0x4a6b00){if(_0x4a6b00){_0x5695ac[_0xe140('0x48')][_0xe140('0x5d')]=_0x4a6b00['id'];return db[_0xe140('0x5e')][_0xe140('0x47')](_0x5695ac[_0xe140('0x48')]);}})['then'](respondWithResult(_0x22935b,null))[_0xe140('0x43')](handleError(_0x22935b,null));};exports[_0xe140('0x5f')]=function(_0x563ee9,_0x9effc9,_0x589a3c){var _0x15f823={};var _0x276679={};var _0x338ce4;var _0xa88a96;return db['Trigger'][_0xe140('0x56')]({'where':{'id':_0x563ee9[_0xe140('0x44')]['id']}})[_0xe140('0x23')](handleEntityNotFound(_0x9effc9,null))[_0xe140('0x23')](function(_0x180e38){if(_0x180e38){_0x338ce4=_0x180e38;_0x276679[_0xe140('0x31')]=_[_0xe140('0x33')](db[_0xe140('0x5e')]['rawAttributes']);_0x276679[_0xe140('0x32')]=_[_0xe140('0x33')](_0x563ee9[_0xe140('0x32')]);_0x276679['filters']=_[_0xe140('0x36')](_0x276679[_0xe140('0x31')],_0x276679[_0xe140('0x32')]);_0x15f823['attributes']=_[_0xe140('0x36')](_0x276679['model'],qs[_0xe140('0x37')](_0x563ee9['query'][_0xe140('0x37')]));_0x15f823[_0xe140('0x35')]=_0x15f823[_0xe140('0x35')]['length']?_0x15f823[_0xe140('0x35')]:_0x276679[_0xe140('0x31')];_0x15f823[_0xe140('0x57')]=qs['sort'](_0x563ee9[_0xe140('0x32')][_0xe140('0x39')]);_0x15f823[_0xe140('0x3a')]=qs[_0xe140('0x34')](_['pick'](_0x563ee9[_0xe140('0x32')],_0x276679[_0xe140('0x34')]));if(_0x563ee9[_0xe140('0x32')][_0xe140('0x3c')]){_0x15f823[_0xe140('0x3a')]=_[_0xe140('0x3d')](_0x15f823[_0xe140('0x3a')],{'$or':_[_0xe140('0x2b')](_0x15f823[_0xe140('0x35')],function(_0x47c7c8){var _0x1515a7={};_0x1515a7[_0x47c7c8]={'$like':'%'+_0x563ee9[_0xe140('0x32')][_0xe140('0x3c')]+'%'};return _0x1515a7;})});}_0x15f823=_[_0xe140('0x3d')]({},_0x15f823,_0x563ee9[_0xe140('0x3f')]);return _0x338ce4[_0xe140('0x5f')](_0x15f823);}})[_0xe140('0x23')](function(_0x32b932){if(_0x32b932){_0xa88a96=_0x32b932['length'];if(!_0x563ee9[_0xe140('0x32')][_0xe140('0x58')]('nolimit')){_0x15f823[_0xe140('0x1c')]=qs[_0xe140('0x1c')](_0x563ee9[_0xe140('0x32')][_0xe140('0x1c')]);_0x15f823[_0xe140('0x1b')]=qs[_0xe140('0x1b')](_0x563ee9['query'][_0xe140('0x1b')]);}return _0x338ce4[_0xe140('0x5f')](_0x15f823);}})[_0xe140('0x23')](function(_0x1e8284){if(_0x1e8284){return _0x1e8284?{'count':_0xa88a96,'rows':_0x1e8284}:null;}})[_0xe140('0x23')](respondWithResult(_0x9effc9,null))['catch'](handleError(_0x9effc9,null));};
\ No newline at end of file
index 2655d62..c85b3d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd691=['exports','tools_triggers','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./trigger.attributes'];(function(_0x3df12f,_0xe54256){var _0x49a2db=function(_0x3b7bb8){while(--_0x3b7bb8){_0x3df12f['push'](_0x3df12f['shift']());}};_0x49a2db(++_0xe54256);}(_0xd691,0xe6));var _0x1d69=function(_0x5ea82f,_0x41ef96){_0x5ea82f=_0x5ea82f-0x0;var _0x2f38b6=_0xd691[_0x5ea82f];return _0x2f38b6;};'use strict';var _=require(_0x1d69('0x0'));var util=require(_0x1d69('0x1'));var logger=require(_0x1d69('0x2'))('api');var moment=require(_0x1d69('0x3'));var BPromise=require(_0x1d69('0x4'));var rp=require(_0x1d69('0x5'));var fs=require('fs');var path=require(_0x1d69('0x6'));var rimraf=require(_0x1d69('0x7'));var config=require(_0x1d69('0x8'));var attributes=require(_0x1d69('0x9'));module[_0x1d69('0xa')]=function(_0xdbf1f2,_0x3b36f5){return _0xdbf1f2['define']('Trigger',attributes,{'tableName':_0x1d69('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1061=['request-promise','path','rimraf','../../config/environment','./trigger.attributes','exports','define','lodash','moment','bluebird'];(function(_0x3930b1,_0x471bd7){var _0x974647=function(_0x31ea9b){while(--_0x31ea9b){_0x3930b1['push'](_0x3930b1['shift']());}};_0x974647(++_0x471bd7);}(_0x1061,0x1b5));var _0x1106=function(_0xad13ed,_0x328800){_0xad13ed=_0xad13ed-0x0;var _0x2c6d94=_0x1061[_0xad13ed];return _0x2c6d94;};'use strict';var _=require(_0x1106('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x1106('0x1'));var BPromise=require(_0x1106('0x2'));var rp=require(_0x1106('0x3'));var fs=require('fs');var path=require(_0x1106('0x4'));var rimraf=require(_0x1106('0x5'));var config=require(_0x1106('0x6'));var attributes=require(_0x1106('0x7'));module[_0x1106('0x8')]=function(_0x5120c6,_0x1f098a){return _0x5120c6[_0x1106('0x9')]('Trigger',attributes,{'tableName':'tools_triggers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8a436f8..d795e55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826c=['jayson/promise','http','request','then','info','Trigger,\x20%s,\x20%s','Trigger,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','Trigger','options','where','attributes','limit','include','model','map','GetTrigger','ShowTrigger','find','debug','lodash','util','bluebird','randomstring','ioredis','../../config/logger','../../config/environment'];(function(_0x119b3e,_0x588d50){var _0x1169ae=function(_0x377422){while(--_0x377422){_0x119b3e['push'](_0x119b3e['shift']());}};_0x1169ae(++_0x588d50);}(_0x826c,0x1ca));var _0xc826=function(_0x17fb10,_0x4cd9e9){_0x17fb10=_0x17fb10-0x0;var _0x54d75b=_0x826c[_0x17fb10];return _0x54d75b;};'use strict';var _=require(_0xc826('0x0'));var util=require(_0xc826('0x1'));var moment=require('moment');var BPromise=require(_0xc826('0x2'));var rs=require(_0xc826('0x3'));var fs=require('fs');var Redis=require(_0xc826('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc826('0x5'))('rpc');var config=require(_0xc826('0x6'));var jayson=require(_0xc826('0x7'));var client=jayson['client'][_0xc826('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5e6f3e,_0x41a8f5,_0x2eff57){return new BPromise(function(_0x19dc22,_0x4a969a){return client[_0xc826('0x9')](_0x5e6f3e,_0x2eff57)[_0xc826('0xa')](function(_0x400805){logger[_0xc826('0xb')](_0xc826('0xc'),_0x41a8f5,'request\x20sent');logger['debug'](_0xc826('0xd'),_0x41a8f5,'request\x20sent',JSON[_0xc826('0xe')](_0x400805));if(_0x400805[_0xc826('0xf')]){if(_0x400805[_0xc826('0xf')]['code']===0x1f4){logger[_0xc826('0xf')](_0xc826('0xc'),_0x41a8f5,_0x400805[_0xc826('0xf')]['message']);return _0x4a969a(_0x400805[_0xc826('0xf')][_0xc826('0x10')]);}logger[_0xc826('0xf')](_0xc826('0xc'),_0x41a8f5,_0x400805[_0xc826('0xf')]['message']);return _0x19dc22(_0x400805[_0xc826('0xf')][_0xc826('0x10')]);}else{logger[_0xc826('0xb')](_0xc826('0xc'),_0x41a8f5,'request\x20sent');_0x19dc22(_0x400805[_0xc826('0x11')]['message']);}})[_0xc826('0x12')](function(_0x42cc74){logger[_0xc826('0xf')](_0xc826('0xc'),_0x41a8f5,_0x42cc74);_0x4a969a(_0x42cc74);});});}exports['GetTrigger']=function(_0x3a16df){var _0x16f8dc=this;return new Promise(function(_0x101273,_0xb25799){return db[_0xc826('0x13')]['findAll']({'raw':_0x3a16df['options']?_0x3a16df['options']['raw']===undefined?!![]:![]:!![],'where':_0x3a16df[_0xc826('0x14')]?_0x3a16df[_0xc826('0x14')][_0xc826('0x15')]||null:null,'attributes':_0x3a16df['options']?_0x3a16df[_0xc826('0x14')][_0xc826('0x16')]||null:null,'limit':_0x3a16df['options']?_0x3a16df[_0xc826('0x14')][_0xc826('0x17')]||null:null,'include':_0x3a16df[_0xc826('0x14')]?_0x3a16df[_0xc826('0x14')][_0xc826('0x18')]?_['map'](_0x3a16df[_0xc826('0x14')][_0xc826('0x18')],function(_0x2a41a9){return{'model':db[_0x2a41a9[_0xc826('0x19')]],'as':_0x2a41a9['as'],'attributes':_0x2a41a9[_0xc826('0x16')],'include':_0x2a41a9[_0xc826('0x18')]?_[_0xc826('0x1a')](_0x2a41a9[_0xc826('0x18')],function(_0x5179f3){return{'model':db[_0x5179f3[_0xc826('0x19')]],'as':_0x5179f3['as'],'attributes':_0x5179f3[_0xc826('0x16')],'include':_0x5179f3[_0xc826('0x18')]?_[_0xc826('0x1a')](_0x5179f3['include'],function(_0x7ad6d0){return{'model':db[_0x7ad6d0['model']],'as':_0x7ad6d0['as'],'attributes':_0x7ad6d0['attributes']};}):[]};}):[]};}):[]:[]})[_0xc826('0xa')](function(_0x5c1d4b){logger['info'](_0xc826('0x1b'),_0x3a16df);logger['debug'](_0xc826('0x1b'),_0x3a16df,JSON[_0xc826('0xe')](_0x5c1d4b));_0x101273(_0x5c1d4b);})[_0xc826('0x12')](function(_0x4cdebf){logger[_0xc826('0xf')](_0xc826('0x1b'),_0x4cdebf[_0xc826('0x10')],_0x3a16df);_0xb25799(_0x16f8dc[_0xc826('0xf')](0x1f4,_0x4cdebf[_0xc826('0x10')]));});});};exports[_0xc826('0x1c')]=function(_0x289e7e){var _0x34f327=this;return new Promise(function(_0x1c4582,_0x2a9370){return db[_0xc826('0x13')][_0xc826('0x1d')]({'raw':_0x289e7e[_0xc826('0x14')]?_0x289e7e[_0xc826('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x289e7e['options']?_0x289e7e[_0xc826('0x14')][_0xc826('0x15')]||null:null,'attributes':_0x289e7e[_0xc826('0x14')]?_0x289e7e['options'][_0xc826('0x16')]||null:null,'include':_0x289e7e['options']?_0x289e7e[_0xc826('0x14')][_0xc826('0x18')]?_[_0xc826('0x1a')](_0x289e7e[_0xc826('0x14')][_0xc826('0x18')],function(_0x17791c){return{'model':db[_0x17791c[_0xc826('0x19')]],'as':_0x17791c['as'],'attributes':_0x17791c[_0xc826('0x16')],'include':_0x17791c[_0xc826('0x18')]?_['map'](_0x17791c['include'],function(_0x717464){return{'model':db[_0x717464[_0xc826('0x19')]],'as':_0x717464['as'],'attributes':_0x717464[_0xc826('0x16')],'include':_0x717464[_0xc826('0x18')]?_[_0xc826('0x1a')](_0x717464[_0xc826('0x18')],function(_0x540fd6){return{'model':db[_0x540fd6['model']],'as':_0x540fd6['as'],'attributes':_0x540fd6[_0xc826('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x542f84){logger['info'](_0xc826('0x1c'),_0x289e7e);logger[_0xc826('0x1e')](_0xc826('0x1c'),_0x289e7e,JSON[_0xc826('0xe')](_0x542f84));_0x1c4582(_0x542f84);})[_0xc826('0x12')](function(_0x538123){logger[_0xc826('0xf')]('ShowTrigger',_0x538123['message'],_0x289e7e);_0x2a9370(_0x34f327[_0xc826('0xf')](0x1f4,_0x538123['message']));});});};
\ No newline at end of file
+var _0x121b=['http','request','then','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','GetTrigger','Trigger','findAll','options','raw','where','limit','include','model','attributes','map','stringify','ShowTrigger','find','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x24717a,_0x26f6dc){var _0x32cf54=function(_0x1282a6){while(--_0x1282a6){_0x24717a['push'](_0x24717a['shift']());}};_0x32cf54(++_0x26f6dc);}(_0x121b,0x183));var _0xb121=function(_0x1ab0e6,_0x17ba8d){_0x1ab0e6=_0x1ab0e6-0x0;var _0x248815=_0x121b[_0x1ab0e6];return _0x248815;};'use strict';var _=require(_0xb121('0x0'));var util=require(_0xb121('0x1'));var moment=require('moment');var BPromise=require(_0xb121('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb121('0x3'));var db=require(_0xb121('0x4'))['db'];var utils=require(_0xb121('0x5'));var logger=require('../../config/logger')(_0xb121('0x6'));var config=require(_0xb121('0x7'));var jayson=require(_0xb121('0x8'));var client=jayson['client'][_0xb121('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x45823a,_0x4c7e0e,_0x24d7cd){return new BPromise(function(_0x22ce09,_0x4acfd6){return client[_0xb121('0xa')](_0x45823a,_0x24d7cd)[_0xb121('0xb')](function(_0x534e22){logger['info'](_0xb121('0xc'),_0x4c7e0e,_0xb121('0xd'));logger[_0xb121('0xe')](_0xb121('0xf'),_0x4c7e0e,_0xb121('0xd'),JSON['stringify'](_0x534e22));if(_0x534e22[_0xb121('0x10')]){if(_0x534e22[_0xb121('0x10')][_0xb121('0x11')]===0x1f4){logger[_0xb121('0x10')](_0xb121('0xc'),_0x4c7e0e,_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);return _0x4acfd6(_0x534e22['error']['message']);}logger[_0xb121('0x10')](_0xb121('0xc'),_0x4c7e0e,_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);return _0x22ce09(_0x534e22[_0xb121('0x10')][_0xb121('0x12')]);}else{logger[_0xb121('0x13')]('Trigger,\x20%s,\x20%s',_0x4c7e0e,_0xb121('0xd'));_0x22ce09(_0x534e22[_0xb121('0x14')][_0xb121('0x12')]);}})[_0xb121('0x15')](function(_0x4d4791){logger[_0xb121('0x10')]('Trigger,\x20%s,\x20%s',_0x4c7e0e,_0x4d4791);_0x4acfd6(_0x4d4791);});});}exports[_0xb121('0x16')]=function(_0x47cd30){var _0x2f7c8a=this;return new Promise(function(_0x4898fa,_0x24a548){return db[_0xb121('0x17')][_0xb121('0x18')]({'raw':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1a')]===undefined?!![]:![]:!![],'where':_0x47cd30[_0xb121('0x19')]?_0x47cd30['options'][_0xb121('0x1b')]||null:null,'attributes':_0x47cd30['options']?_0x47cd30['options']['attributes']||null:null,'limit':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1c')]||null:null,'include':_0x47cd30[_0xb121('0x19')]?_0x47cd30[_0xb121('0x19')][_0xb121('0x1d')]?_['map'](_0x47cd30[_0xb121('0x19')][_0xb121('0x1d')],function(_0x3e683b){return{'model':db[_0x3e683b[_0xb121('0x1e')]],'as':_0x3e683b['as'],'attributes':_0x3e683b[_0xb121('0x1f')],'include':_0x3e683b[_0xb121('0x1d')]?_['map'](_0x3e683b[_0xb121('0x1d')],function(_0x15a538){return{'model':db[_0x15a538[_0xb121('0x1e')]],'as':_0x15a538['as'],'attributes':_0x15a538[_0xb121('0x1f')],'include':_0x15a538[_0xb121('0x1d')]?_[_0xb121('0x20')](_0x15a538['include'],function(_0x9682d2){return{'model':db[_0x9682d2[_0xb121('0x1e')]],'as':_0x9682d2['as'],'attributes':_0x9682d2[_0xb121('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb121('0xb')](function(_0x552f4f){logger[_0xb121('0x13')](_0xb121('0x16'),_0x47cd30);logger['debug'](_0xb121('0x16'),_0x47cd30,JSON[_0xb121('0x21')](_0x552f4f));_0x4898fa(_0x552f4f);})[_0xb121('0x15')](function(_0x1bf87f){logger[_0xb121('0x10')](_0xb121('0x16'),_0x1bf87f[_0xb121('0x12')],_0x47cd30);_0x24a548(_0x2f7c8a[_0xb121('0x10')](0x1f4,_0x1bf87f[_0xb121('0x12')]));});});};exports[_0xb121('0x22')]=function(_0x4c4994){var _0x40b6fb=this;return new Promise(function(_0x76002a,_0x63a8b2){return db['Trigger'][_0xb121('0x23')]({'raw':_0x4c4994[_0xb121('0x19')]?_0x4c4994['options'][_0xb121('0x1a')]===undefined?!![]:![]:!![],'where':_0x4c4994[_0xb121('0x19')]?_0x4c4994[_0xb121('0x19')][_0xb121('0x1b')]||null:null,'attributes':_0x4c4994['options']?_0x4c4994[_0xb121('0x19')][_0xb121('0x1f')]||null:null,'include':_0x4c4994[_0xb121('0x19')]?_0x4c4994[_0xb121('0x19')][_0xb121('0x1d')]?_[_0xb121('0x20')](_0x4c4994[_0xb121('0x19')]['include'],function(_0x4d30a1){return{'model':db[_0x4d30a1[_0xb121('0x1e')]],'as':_0x4d30a1['as'],'attributes':_0x4d30a1[_0xb121('0x1f')],'include':_0x4d30a1[_0xb121('0x1d')]?_[_0xb121('0x20')](_0x4d30a1['include'],function(_0x272349){return{'model':db[_0x272349[_0xb121('0x1e')]],'as':_0x272349['as'],'attributes':_0x272349['attributes'],'include':_0x272349['include']?_[_0xb121('0x20')](_0x272349[_0xb121('0x1d')],function(_0x1025cc){return{'model':db[_0x1025cc[_0xb121('0x1e')]],'as':_0x1025cc['as'],'attributes':_0x1025cc['attributes']};}):[]};}):[]};}):[]:[]})[_0xb121('0xb')](function(_0x554864){logger['info'](_0xb121('0x22'),_0x4c4994);logger['debug'](_0xb121('0x22'),_0x4c4994,JSON[_0xb121('0x21')](_0x554864));_0x76002a(_0x554864);})[_0xb121('0x15')](function(_0x158aed){logger[_0xb121('0x10')]('ShowTrigger',_0x158aed[_0xb121('0x12')],_0x4c4994);_0x63a8b2(_0x40b6fb[_0xb121('0x10')](0x1f4,_0x158aed[_0xb121('0x12')]));});});};
\ No newline at end of file
index 0d50f1f..c1d0583 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d92=['destroy','exports','multer','util','path','../../components/interaction/service','../../config/environment','./trunk.controller','isAuthenticated','index','get','/:id','show','post','/:id/clone','create','put','update'];(function(_0xd0c837,_0x99ac23){var _0x5a55d6=function(_0x630d40){while(--_0x630d40){_0xd0c837['push'](_0xd0c837['shift']());}};_0x5a55d6(++_0x99ac23);}(_0x4d92,0x146));var _0x24d9=function(_0x4052c0,_0x4271ab){_0x4052c0=_0x4052c0-0x0;var _0x296f04=_0x4d92[_0x4052c0];return _0x296f04;};'use strict';var multer=require(_0x24d9('0x0'));var util=require(_0x24d9('0x1'));var path=require(_0x24d9('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x24d9('0x3'));var config=require(_0x24d9('0x4'));var controller=require(_0x24d9('0x5'));router['get']('/',auth[_0x24d9('0x6')](),controller[_0x24d9('0x7')]);router[_0x24d9('0x8')](_0x24d9('0x9'),auth[_0x24d9('0x6')](),controller[_0x24d9('0xa')]);router[_0x24d9('0xb')](_0x24d9('0xc'),auth[_0x24d9('0x6')](),controller['clone']);router[_0x24d9('0xb')]('/',auth[_0x24d9('0x6')](),controller[_0x24d9('0xd')]);router[_0x24d9('0xe')](_0x24d9('0x9'),auth[_0x24d9('0x6')](),controller[_0x24d9('0xf')]);router['delete'](_0x24d9('0x9'),auth[_0x24d9('0x6')](),controller[_0x24d9('0x10')]);module[_0x24d9('0x11')]=router;
\ No newline at end of file
+var _0x2d02=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','/:id/clone','create','update','delete','exports'];(function(_0xf13346,_0x56b703){var _0x50207e=function(_0x4ecb78){while(--_0x4ecb78){_0xf13346['push'](_0xf13346['shift']());}};_0x50207e(++_0x56b703);}(_0x2d02,0xbd));var _0x22d0=function(_0x598b79,_0xdd2ec9){_0x598b79=_0x598b79-0x0;var _0x201b1d=_0x2d02[_0x598b79];return _0x201b1d;};'use strict';var multer=require(_0x22d0('0x0'));var util=require(_0x22d0('0x1'));var path=require(_0x22d0('0x2'));var timeout=require(_0x22d0('0x3'));var express=require(_0x22d0('0x4'));var router=express[_0x22d0('0x5')]();var fs_extra=require(_0x22d0('0x6'));var auth=require(_0x22d0('0x7'));var interaction=require(_0x22d0('0x8'));var config=require(_0x22d0('0x9'));var controller=require('./trunk.controller');router[_0x22d0('0xa')]('/',auth['isAuthenticated'](),controller[_0x22d0('0xb')]);router[_0x22d0('0xa')](_0x22d0('0xc'),auth[_0x22d0('0xd')](),controller[_0x22d0('0xe')]);router[_0x22d0('0xf')](_0x22d0('0x10'),auth[_0x22d0('0xd')](),controller['clone']);router[_0x22d0('0xf')]('/',auth[_0x22d0('0xd')](),controller[_0x22d0('0x11')]);router['put'](_0x22d0('0xc'),auth['isAuthenticated'](),controller[_0x22d0('0x12')]);router[_0x22d0('0x13')](_0x22d0('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x22d0('0x14')]=router;
\ No newline at end of file
index 3e7c6e7..1a24b08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb444=['exports','STRING','name','ENUM','friend','user','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','udp','transport','join','getDataValue','split','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','setDataValue','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','accept','refuse','originate','uac','uas','pai','fingerprint','dynamic','update,nonat','BOOLEAN','sequelize'];(function(_0x130813,_0x3fbc67){var _0x42d8f5=function(_0x36ed25){while(--_0x36ed25){_0x130813['push'](_0x130813['shift']());}};_0x42d8f5(++_0x3fbc67);}(_0xb444,0x19d));var _0x4b44=function(_0x52a139,_0x4225f4){_0x52a139=_0x52a139-0x0;var _0x4ce1ef=_0xb444[_0x52a139];return _0x4ce1ef;};'use strict';var Sequelize=require(_0x4b44('0x0'));module[_0x4b44('0x1')]={'name':{'type':Sequelize[_0x4b44('0x2')],'allowNull':![],'unique':_0x4b44('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x5'),_0x4b44('0x6'),'peer'),'allowNull':![],'defaultValue':_0x4b44('0x5')},'context':{'type':Sequelize[_0x4b44('0x2')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x7'),_0x4b44('0x8'),'ALLOWED_FAILED_SCREEN',_0x4b44('0x9'),_0x4b44('0xa'),_0x4b44('0xb'),'PROHIB_FAILED_SCREEN','PROHIB')},'deny':{'type':Sequelize[_0x4b44('0x2')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0x4b44('0x2')]},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0x4b44('0x2')]},'transport':{'type':Sequelize[_0x4b44('0x2')],'defaultValue':_0x4b44('0xc'),'set':function(_0x398463){this['setDataValue'](_0x4b44('0xd'),_0x398463?_0x398463[_0x4b44('0xe')](','):null);},'get':function(){return this[_0x4b44('0xf')]('transport')?this[_0x4b44('0xf')](_0x4b44('0xd'))[_0x4b44('0x10')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0x4b44('0x11'),_0x4b44('0x12'),_0x4b44('0x13'),_0x4b44('0x14'),_0x4b44('0x15')),'defaultValue':_0x4b44('0x11')},'directmedia':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no',_0x4b44('0x17'),_0x4b44('0x18'),_0x4b44('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x4b44('0x4')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING']},'directmediadeny':{'type':Sequelize[_0x4b44('0x2')]},'nat':{'type':Sequelize['STRING'],'defaultValue':'force_rport,comedia','set':function(_0xcb9561){this[_0x4b44('0x1a')](_0x4b44('0x1b'),_0xcb9561?_0xcb9561[_0x4b44('0xe')](','):null);},'get':function(){return this[_0x4b44('0xf')](_0x4b44('0x1b'))?this[_0x4b44('0xf')]('nat')[_0x4b44('0x10')](','):null;},'comment':_0x4b44('0x1c')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x4b44('0x2')]},'pickupgroup':{'type':Sequelize[_0x4b44('0x2')]},'namedpickupgroup':{'type':Sequelize[_0x4b44('0x2')]},'language':{'type':Sequelize[_0x4b44('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x4b44('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize[_0x4b44('0x2')],'defaultValue':_0x4b44('0x1d')},'allow':{'type':Sequelize[_0x4b44('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4ab192){this['setDataValue'](_0x4b44('0x1e'),_0x4ab192?_0x4ab192[_0x4b44('0xe')](';'):_0x4b44('0x1f'));},'get':function(){return this['getDataValue']('allow')?this[_0x4b44('0xf')](_0x4b44('0x1e'))[_0x4b44('0x10')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0x4b44('0x4')]('yes','no')},'insecure':{'type':Sequelize['STRING'],'defaultValue':'port,invite','set':function(_0x299716){this[_0x4b44('0x1a')](_0x4b44('0x20'),_0x299716?_0x299716[_0x4b44('0xe')](','):null);},'get':function(){return this[_0x4b44('0xf')](_0x4b44('0x20'))?this['getDataValue'](_0x4b44('0x20'))[_0x4b44('0x10')](','):null;},'comment':_0x4b44('0x21')},'trustrpid':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x4b44('0x4')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no',_0x4b44('0x22'))},'promiscredir':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'useclientcode':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'accountcode':{'type':Sequelize[_0x4b44('0x23')](0xb)},'setvar':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x4b44('0x2')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no'),'defaultValue':_0x4b44('0x16')},'busylevel':{'type':Sequelize['INTEGER'](0xb)},'allowoverlap':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no')},'allowtransfer':{'type':Sequelize['ENUM'](_0x4b44('0x16'),'no')},'ignoresdpversion':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'subscribecontext':{'type':Sequelize[_0x4b44('0x2')]},'template':{'type':Sequelize[_0x4b44('0x2')]},'videosupport':{'type':Sequelize['ENUM'](_0x4b44('0x16'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x4b44('0x23')](0xb)},'rfc2833compensate':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'mailbox':{'type':Sequelize['STRING']},'session_timers':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x24'),_0x4b44('0x25'),_0x4b44('0x26'))},'session_expires':{'type':Sequelize[_0x4b44('0x23')](0xb)},'session_minse':{'type':Sequelize[_0x4b44('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x27'),_0x4b44('0x28')),'defaultValue':_0x4b44('0x28')},'t38pt_usertpsource':{'type':Sequelize['STRING']},'regexten':{'type':Sequelize[_0x4b44('0x2')]},'fromdomain':{'type':Sequelize[_0x4b44('0x2')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x4b44('0x23')](0x5)},'qualify':{'type':Sequelize['ENUM'](_0x4b44('0x16'),'no'),'defaultValue':_0x4b44('0x16')},'keepalive':{'type':Sequelize[_0x4b44('0x23')](0xb)},'defaultip':{'type':Sequelize[_0x4b44('0x2')]},'defaultuser':{'type':Sequelize[_0x4b44('0x2')]},'rtptimeout':{'type':Sequelize[_0x4b44('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0x4b44('0x4')]('yes','no',_0x4b44('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x4b44('0x2')]},'callbackextension':{'type':Sequelize[_0x4b44('0x2')]},'timert1':{'type':Sequelize[_0x4b44('0x23')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0x4b44('0x23')](0xb)},'contactpermit':{'type':Sequelize[_0x4b44('0x2')]},'contactdeny':{'type':Sequelize[_0x4b44('0x2')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0x4b44('0x2')]},'use_q850_reason':{'type':Sequelize['STRING']},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize['ENUM'](_0x4b44('0x16'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM'](_0x4b44('0x16'),'no')},'force_avp':{'type':Sequelize['ENUM']('yes','no')},'icesupport':{'type':Sequelize[_0x4b44('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize['ENUM']('yes','no')},'dtlsverify':{'type':Sequelize[_0x4b44('0x4')]('yes','no',_0x4b44('0x2a'),'certificate')},'dtlsrekey':{'type':Sequelize[_0x4b44('0x23')](0xb)},'dtlscertfile':{'type':Sequelize[_0x4b44('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0x4b44('0x2')]},'dtlscipher':{'type':Sequelize[_0x4b44('0x2')]},'dtlscafile':{'type':Sequelize[_0x4b44('0x2')]},'dtlscapath':{'type':Sequelize[_0x4b44('0x2')]},'dtlssetup':{'type':Sequelize[_0x4b44('0x4')]('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING']},'usereqphone':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x4b44('0x2')]},'recordofffeature':{'type':Sequelize[_0x4b44('0x2')]},'call_limit':{'type':Sequelize[_0x4b44('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0x4b44('0x4')]('yes','no')},'subscribemwi':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no')},'vmexten':{'type':Sequelize[_0x4b44('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0x4b44('0x2')]},'parkinglot':{'type':Sequelize[_0x4b44('0x2')]},'description':{'type':Sequelize[_0x4b44('0x2')]},'host':{'type':Sequelize['STRING'],'defaultValue':_0x4b44('0x2b')},'canreinvite':{'type':Sequelize[_0x4b44('0x4')](_0x4b44('0x16'),'no',_0x4b44('0x17'),'update',_0x4b44('0x2c')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0x4b44('0x2')]},'active':{'type':Sequelize[_0x4b44('0x2d')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
+var _0xfc9e=['passive','dynamic','nonat','update,nonat','BOOLEAN','exports','STRING','name','ENUM','friend','user','peer','from-voip-provider','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','setDataValue','transport','getDataValue','shortinfo','inband','auto','rfc2833','update','outgoing','nat','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]','yes','port,invite','insecure','never','INTEGER','always','accept','originate','uac','pai','fingerprint','active'];(function(_0x348860,_0x4531f6){var _0x2fc2ad=function(_0x3b449f){while(--_0x3b449f){_0x348860['push'](_0x348860['shift']());}};_0x2fc2ad(++_0x4531f6);}(_0xfc9e,0x18d));var _0xefc9=function(_0x334d1e,_0x28a488){_0x334d1e=_0x334d1e-0x0;var _0x3b33ba=_0xfc9e[_0x334d1e];return _0x3b33ba;};'use strict';var Sequelize=require('sequelize');module[_0xefc9('0x0')]={'name':{'type':Sequelize[_0xefc9('0x1')],'allowNull':![],'unique':_0xefc9('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x4'),_0xefc9('0x5'),_0xefc9('0x6')),'allowNull':![],'defaultValue':_0xefc9('0x4')},'context':{'type':Sequelize[_0xefc9('0x1')],'allowNull':![],'defaultValue':_0xefc9('0x7')},'callingpres':{'type':Sequelize[_0xefc9('0x3')]('ALLOWED_NOT_SCREENED',_0xefc9('0x8'),_0xefc9('0x9'),_0xefc9('0xa'),'PROHIB_NOT_SCREENED',_0xefc9('0xb'),_0xefc9('0xc'),_0xefc9('0xd'))},'deny':{'type':Sequelize[_0xefc9('0x1')]},'permit':{'type':Sequelize['STRING']},'secret':{'type':Sequelize[_0xefc9('0x1')]},'md5secret':{'type':Sequelize[_0xefc9('0x1')]},'remotesecret':{'type':Sequelize[_0xefc9('0x1')]},'transport':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0xe'),'set':function(_0x33c3f7){this[_0xefc9('0xf')](_0xefc9('0x10'),_0x33c3f7?_0x33c3f7['join'](','):null);},'get':function(){return this[_0xefc9('0x11')]('transport')?this[_0xefc9('0x11')](_0xefc9('0x10'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize[_0xefc9('0x3')]('rfc2833','info',_0xefc9('0x12'),_0xefc9('0x13'),_0xefc9('0x14')),'defaultValue':_0xefc9('0x15')},'directmedia':{'type':Sequelize[_0xefc9('0x3')]('yes','no','nonat',_0xefc9('0x16'),_0xefc9('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xefc9('0x1')]},'directmediadeny':{'type':Sequelize[_0xefc9('0x1')]},'nat':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':'force_rport,comedia','set':function(_0x23033b){this['setDataValue'](_0xefc9('0x18'),_0x23033b?_0x23033b[_0xefc9('0x19')](','):null);},'get':function(){return this[_0xefc9('0x11')]('nat')?this[_0xefc9('0x11')](_0xefc9('0x18'))[_0xefc9('0x1a')](','):null;},'comment':_0xefc9('0x1b')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0xefc9('0x1')]},'pickupgroup':{'type':Sequelize[_0xefc9('0x1')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xefc9('0x1')],'allowNull':!![]},'disallow':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x1c')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xefc9('0x1d'),'set':function(_0x5c1fa6){this[_0xefc9('0xf')]('allow',_0x5c1fa6?_0x5c1fa6[_0xefc9('0x19')](';'):_0xefc9('0x1d'));},'get':function(){return this[_0xefc9('0x11')](_0xefc9('0x1e'))?this[_0xefc9('0x11')](_0xefc9('0x1e'))['split'](';'):null;},'comment':_0xefc9('0x1f')},'autoframing':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'insecure':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x21'),'set':function(_0x33eeb2){this[_0xefc9('0xf')]('insecure',_0x33eeb2?_0x33eeb2[_0xefc9('0x19')](','):null);},'get':function(){return this[_0xefc9('0x11')](_0xefc9('0x22'))?this[_0xefc9('0x11')](_0xefc9('0x22'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x23'))},'promiscredir':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'useclientcode':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no')},'accountcode':{'type':Sequelize[_0xefc9('0x24')](0xb)},'setvar':{'type':Sequelize[_0xefc9('0x1')]},'callerid':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize[_0xefc9('0x1')]},'callcounter':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no'),'defaultValue':_0xefc9('0x20')},'busylevel':{'type':Sequelize[_0xefc9('0x24')](0xb)},'allowoverlap':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'allowsubscribe':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'allowtransfer':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'ignoresdpversion':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'subscribecontext':{'type':Sequelize[_0xefc9('0x1')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no',_0xefc9('0x25')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rfc2833compensate':{'type':Sequelize['ENUM'](_0xefc9('0x20'),'no')},'mailbox':{'type':Sequelize[_0xefc9('0x1')]},'session_timers':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x26'),'refuse',_0xefc9('0x27'))},'session_expires':{'type':Sequelize[_0xefc9('0x24')](0xb)},'session_minse':{'type':Sequelize[_0xefc9('0x24')](0xb)},'session_refresher':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x28'),'uas'),'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0xefc9('0x1')]},'regexten':{'type':Sequelize['STRING']},'fromdomain':{'type':Sequelize[_0xefc9('0x1')]},'fromuser':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER'](0x5)},'qualify':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':_0xefc9('0x20')},'keepalive':{'type':Sequelize[_0xefc9('0x24')](0xb)},'defaultip':{'type':Sequelize[_0xefc9('0x1')]},'defaultuser':{'type':Sequelize[_0xefc9('0x1')]},'rtptimeout':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xefc9('0x24')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xefc9('0x24')](0xb)},'sendrpid':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x29')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xefc9('0x1')]},'callbackextension':{'type':Sequelize[_0xefc9('0x1')]},'timert1':{'type':Sequelize[_0xefc9('0x24')](0xb)},'timerb':{'type':Sequelize['INTEGER'](0xb)},'qualifyfreq':{'type':Sequelize[_0xefc9('0x24')](0xb)},'contactpermit':{'type':Sequelize['STRING']},'contactdeny':{'type':Sequelize[_0xefc9('0x1')]},'contactacl':{'type':Sequelize[_0xefc9('0x1')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xefc9('0x1')]},'maxforwards':{'type':Sequelize['INTEGER'](0xb)},'encryption':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'force_avp':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'icesupport':{'type':Sequelize[_0xefc9('0x3')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'dtlsverify':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no',_0xefc9('0x2a'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xefc9('0x24')](0xb)},'dtlscertfile':{'type':Sequelize[_0xefc9('0x1')]},'dtlsprivatekey':{'type':Sequelize[_0xefc9('0x1')]},'dtlscipher':{'type':Sequelize[_0xefc9('0x1')]},'dtlscafile':{'type':Sequelize[_0xefc9('0x1')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM'](_0xefc9('0x2b'),_0xefc9('0x2c'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xefc9('0x1')]},'usereqphone':{'type':Sequelize[_0xefc9('0x3')]('yes','no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xefc9('0x1')]},'recordofffeature':{'type':Sequelize[_0xefc9('0x1')]},'call_limit':{'type':Sequelize[_0xefc9('0x24')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'subscribemwi':{'type':Sequelize[_0xefc9('0x3')](_0xefc9('0x20'),'no')},'vmexten':{'type':Sequelize[_0xefc9('0x1')]},'mohinterpret':{'type':Sequelize[_0xefc9('0x1')]},'mohsuggest':{'type':Sequelize[_0xefc9('0x1')]},'parkinglot':{'type':Sequelize[_0xefc9('0x1')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xefc9('0x1')],'defaultValue':_0xefc9('0x2d')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0xefc9('0x2e'),_0xefc9('0x16'),_0xefc9('0x2f')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xefc9('0x1')]},'active':{'type':Sequelize[_0xefc9('0x30')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize['STRING'],'defaultValue':'no'}};
\ No newline at end of file
index 326e061..834a419 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['server/files/templates/registry.ejs','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','destroy','get','UserProfileResource','end','name','send','map','Trunk','fieldName','type','key','query','intersection','model','attributes','fields','length','order','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','keys','rawAttributes','find','createdAt','updatedAt','body','create','user','UserProfileSection','userProfileId','autoAssociation','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','Trunks','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload'];(function(_0x25ae65,_0x550dbd){var _0x3bddb9=function(_0x46896d){while(--_0x46896d){_0x25ae65['push'](_0x25ae65['shift']());}};_0x3bddb9(++_0x550dbd);}(_0xa41a,0x6b));var _0xaa41=function(_0x39e19e,_0x5d539e){_0x39e19e=_0x39e19e-0x0;var _0xec1beb=_0xa41a[_0x39e19e];return _0xec1beb;};'use strict';var emlformat=require(_0xaa41('0x0'));var rimraf=require(_0xaa41('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa41('0x2'));var rp=require(_0xaa41('0x3'));var moment=require(_0xaa41('0x4'));var BPromise=require(_0xaa41('0x5'));var Mustache=require(_0xaa41('0x6'));var util=require(_0xaa41('0x7'));var path=require(_0xaa41('0x8'));var sox=require(_0xaa41('0x9'));var csv=require('to-csv');var ejs=require(_0xaa41('0xa'));var fs=require('fs');var fs_extra=require(_0xaa41('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xaa41('0xc'));var jsforce=require(_0xaa41('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xaa41('0xe'));var querystring=require(_0xaa41('0xf'));var Papa=require(_0xaa41('0x10'));var Redis=require(_0xaa41('0x11'));var authService=require(_0xaa41('0x12'));var qs=require(_0xaa41('0x13'));var as=require(_0xaa41('0x14'));var hardwareService=require(_0xaa41('0x15'));var logger=require(_0xaa41('0x16'))('api');var utils=require(_0xaa41('0x17'));var config=require(_0xaa41('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0xaa41('0x19'));var client=jayson['client'][_0xaa41('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x12d9e6,_0x2f64bc,_0x889d44,_0x6f9ade){return new BPromise(function(_0x4eaf81,_0x1e9d7f){var _0x178170=_0x6f9ade||client;return _0x178170[_0xaa41('0x1b')](_0x12d9e6,_0x889d44)[_0xaa41('0x1c')](function(_0x2a6988){logger[_0xaa41('0x1d')](_0xaa41('0x1e'),_0x2f64bc,'request\x20sent');logger[_0xaa41('0x1f')](_0xaa41('0x20'),_0x2f64bc,_0xaa41('0x21'),JSON[_0xaa41('0x22')](_0x2a6988));if(_0x2a6988[_0xaa41('0x23')]){if(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x24')]===0x1f4){logger[_0xaa41('0x23')](_0xaa41('0x1e'),_0x2f64bc,_0x2a6988['error']['message']);return _0x1e9d7f(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);}logger[_0xaa41('0x23')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);return _0x4eaf81(_0x2a6988['error']['message']);}else{logger[_0xaa41('0x1d')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0xaa41('0x21'));_0x4eaf81(_0x2a6988[_0xaa41('0x26')][_0xaa41('0x25')]);}})[_0xaa41('0x27')](function(_0x1d623c){logger['error'](_0xaa41('0x1e'),_0x2f64bc,_0x1d623c);_0x1e9d7f(_0x1d623c);});});}function respondWithStatusCode(_0x43a85c,_0x448a21){_0x448a21=_0x448a21||0xcc;return function(_0x21f596){if(_0x21f596){return _0x43a85c[_0xaa41('0x28')](_0x448a21);}return _0x43a85c[_0xaa41('0x29')](_0x448a21)['end']();};}function respondWithResult(_0x5795f4,_0x16aec5){_0x16aec5=_0x16aec5||0xc8;return function(_0x527cac){if(_0x527cac){return _0x5795f4['status'](_0x16aec5)[_0xaa41('0x2a')](_0x527cac);}};}function respondWithFilteredResult(_0x59707f,_0x536bed){return function(_0x2d0ac0){if(_0x2d0ac0){var _0x9c8c21=typeof _0x536bed[_0xaa41('0x2b')]===_0xaa41('0x2c')&&typeof _0x536bed[_0xaa41('0x2d')]===_0xaa41('0x2c');var _0x57ef96=_0x2d0ac0[_0xaa41('0x2e')];var _0x1f0275=_0x9c8c21?0x0:_0x536bed[_0xaa41('0x2b')];var _0x9a16e3=_0x9c8c21?_0x2d0ac0[_0xaa41('0x2e')]:_0x536bed[_0xaa41('0x2b')]+_0x536bed[_0xaa41('0x2d')];var _0x104a95;if(_0x9a16e3>=_0x57ef96){_0x9a16e3=_0x57ef96;_0x104a95=0xc8;}else{_0x104a95=0xce;}_0x59707f['status'](_0x104a95);return _0x59707f[_0xaa41('0x2f')]('Content-Range',_0x1f0275+'-'+_0x9a16e3+'/'+_0x57ef96)['json'](_0x2d0ac0);}return null;};}function patchUpdates(_0x714537){return function(_0x1176bd){try{jsonpatch['apply'](_0x1176bd,_0x714537,!![]);}catch(_0x392b5d){return BPromise[_0xaa41('0x30')](_0x392b5d);}return _0x1176bd['save']();};}function saveUpdates(_0x5022fb,_0x5c25fb){return function(_0x1cf3da){if(_0x1cf3da){return _0x1cf3da[_0xaa41('0x31')](_0x5022fb)[_0xaa41('0x1c')](function(_0x38afc4){return _0x38afc4;});}return null;};}function removeEntity(_0x58f203,_0x289c4a){return function(_0x45c8fe){if(_0x45c8fe){return _0x45c8fe[_0xaa41('0x32')]()['then'](function(){var _0x387c55=_0x45c8fe[_0xaa41('0x33')]({'plain':!![]});var _0x321eb7='Trunks';return db[_0xaa41('0x34')][_0xaa41('0x32')]({'where':{'type':_0x321eb7,'resourceId':_0x387c55['id']}})['then'](function(){return _0x45c8fe;});})[_0xaa41('0x1c')](function(){_0x58f203[_0xaa41('0x29')](0xcc)[_0xaa41('0x35')]();});}};}function handleEntityNotFound(_0x5cec87,_0x22b272){return function(_0x48335f){if(!_0x48335f){_0x5cec87[_0xaa41('0x28')](0x194);}return _0x48335f;};}function handleError(_0x199b24,_0xf13742){_0xf13742=_0xf13742||0x1f4;return function(_0x49b77a){logger['error'](_0x49b77a['stack']);if(_0x49b77a[_0xaa41('0x36')]){delete _0x49b77a[_0xaa41('0x36')];}_0x199b24[_0xaa41('0x29')](_0xf13742)[_0xaa41('0x37')](_0x49b77a);};}exports['index']=function(_0x53a2e4,_0x267999){var _0x5673c={},_0x951e52={},_0x4e8d2e={'count':0x0,'rows':[]};var _0xba115a=_[_0xaa41('0x38')](db[_0xaa41('0x39')]['rawAttributes'],function(_0x3adc28){return{'name':_0x3adc28[_0xaa41('0x3a')],'type':_0x3adc28[_0xaa41('0x3b')][_0xaa41('0x3c')]};});_0x951e52['model']=_['map'](_0xba115a,_0xaa41('0x36'));_0x951e52[_0xaa41('0x3d')]=_['keys'](_0x53a2e4[_0xaa41('0x3d')]);_0x951e52['filters']=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],_0x951e52[_0xaa41('0x3d')]);_0x5673c[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x53a2e4[_0xaa41('0x3d')]['fields']));_0x5673c[_0xaa41('0x40')]=_0x5673c[_0xaa41('0x40')][_0xaa41('0x42')]?_0x5673c[_0xaa41('0x40')]:_0x951e52[_0xaa41('0x3f')];if(!_0x53a2e4[_0xaa41('0x3d')]['hasOwnProperty']('nolimit')){_0x5673c[_0xaa41('0x2d')]=qs['limit'](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2d')]);_0x5673c[_0xaa41('0x2b')]=qs[_0xaa41('0x2b')](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2b')]);}_0x5673c[_0xaa41('0x43')]=qs['sort'](_0x53a2e4[_0xaa41('0x3d')]['sort']);_0x5673c['where']=qs[_0xaa41('0x44')](_['pick'](_0x53a2e4['query'],_0x951e52['filters']),_0xba115a);if(_0x53a2e4[_0xaa41('0x3d')]['filter']){_0x5673c[_0xaa41('0x45')]=_[_0xaa41('0x46')](_0x5673c['where'],{'$or':_['map'](_0xba115a,function(_0xe58f5e){if(_0xe58f5e[_0xaa41('0x3b')]!==_0xaa41('0x47')){var _0x2af8ba={};_0x2af8ba[_0xe58f5e[_0xaa41('0x36')]]={'$like':'%'+_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x48')]+'%'};return _0x2af8ba;}})});}_0x5673c=_[_0xaa41('0x46')]({},_0x5673c,_0x53a2e4[_0xaa41('0x49')]);var _0x4e1ac4={'where':_0x5673c[_0xaa41('0x45')]};return db[_0xaa41('0x39')][_0xaa41('0x2e')](_0x4e1ac4)[_0xaa41('0x1c')](function(_0x206d86){_0x4e8d2e[_0xaa41('0x2e')]=_0x206d86;if(_0x53a2e4['query'][_0xaa41('0x4a')]){_0x5673c[_0xaa41('0x4b')]=[{'all':!![]}];}return db[_0xaa41('0x39')][_0xaa41('0x4c')](_0x5673c);})['then'](function(_0x23bc61){_0x4e8d2e['rows']=_0x23bc61;return _0x4e8d2e;})['then'](respondWithFilteredResult(_0x267999,_0x5673c))[_0xaa41('0x27')](handleError(_0x267999,null));};exports[_0xaa41('0x4d')]=function(_0x3e16ef,_0x4ca114){var _0xb4773b={'raw':![],'where':{'id':_0x3e16ef[_0xaa41('0x4e')]['id']}},_0x3e1a73={};_0x3e1a73['model']=_[_0xaa41('0x4f')](db[_0xaa41('0x39')][_0xaa41('0x50')]);_0x3e1a73[_0xaa41('0x3d')]=_[_0xaa41('0x4f')](_0x3e16ef[_0xaa41('0x3d')]);_0x3e1a73[_0xaa41('0x44')]=_[_0xaa41('0x3e')](_0x3e1a73['model'],_0x3e1a73[_0xaa41('0x3d')]);_0xb4773b['attributes']=_['intersection'](_0x3e1a73[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x41')]));_0xb4773b[_0xaa41('0x40')]=_0xb4773b[_0xaa41('0x40')][_0xaa41('0x42')]?_0xb4773b[_0xaa41('0x40')]:_0x3e1a73['model'];if(_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0xb4773b[_0xaa41('0x4b')]=[{'all':!![]}];}_0xb4773b=_['merge']({},_0xb4773b,_0x3e16ef[_0xaa41('0x49')]);return db[_0xaa41('0x39')]['find'](_0xb4773b)[_0xaa41('0x1c')](handleEntityNotFound(_0x4ca114,null))[_0xaa41('0x1c')](respondWithResult(_0x4ca114,null))[_0xaa41('0x27')](handleError(_0x4ca114,null));};exports['clone']=function(_0x2cf32c,_0xc8e626){var _0x4e3b13={'where':{'id':_0x2cf32c[_0xaa41('0x4e')]['id']}},_0x49789a={};_0x49789a[_0xaa41('0x3f')]=_[_0xaa41('0x4f')](db['Trunk'][_0xaa41('0x50')]);_0x4e3b13[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x49789a[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x2cf32c['query'][_0xaa41('0x41')]));_0x4e3b13['attributes']=_0x4e3b13['attributes'][_0xaa41('0x42')]?_0x4e3b13['attributes']:_0x49789a[_0xaa41('0x3f')];if(_0x2cf32c[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0x4e3b13['include']=[{'all':!![]}];}_0x4e3b13=_[_0xaa41('0x46')]({},_0x4e3b13,_0x2cf32c[_0xaa41('0x49')]);return db[_0xaa41('0x39')][_0xaa41('0x51')](_0x4e3b13)[_0xaa41('0x1c')](handleEntityNotFound(_0xc8e626,null))[_0xaa41('0x1c')](function(_0xc56018){if(_0xc56018){var _0x337059=_0xc56018[_0xaa41('0x33')]({'plain':!![]});_0x337059=qs['omit'](_0x337059,['id',_0xaa41('0x52'),_0xaa41('0x53')]);_0x2cf32c[_0xaa41('0x54')]=_['omit'](_0x2cf32c[_0xaa41('0x54')],['id',_0xaa41('0x52'),_0xaa41('0x53')]);return db[_0xaa41('0x39')][_0xaa41('0x55')](_[_0xaa41('0x46')](_0x337059,_0x2cf32c[_0xaa41('0x54')]),{'include':_0x2cf32c['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x540325){var _0x4ec357=_0x2cf32c['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x4ec357)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ec357['role']===_0xaa41('0x56')){var _0x40a524=_0x540325[_0xaa41('0x33')]({'plain':!![]});var _0x312eee='Trunks';return db[_0xaa41('0x57')][_0xaa41('0x51')]({'where':{'name':_0x312eee,'userProfileId':_0x4ec357[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0xa71432){if(_0xa71432&&_0xa71432[_0xaa41('0x59')]===0x0){return db[_0xaa41('0x34')][_0xaa41('0x55')]({'name':_0x40a524[_0xaa41('0x36')],'resourceId':_0x40a524['id'],'type':_0xa71432['name'],'sectionId':_0xa71432['id']},{})[_0xaa41('0x1c')](function(){return _0x540325;});}else{return _0x540325;}})[_0xaa41('0x27')](function(_0x50170f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50170f);throw _0x50170f;});}return _0x540325;});}})[_0xaa41('0x1c')](respondWithResult(_0xc8e626,0xc9))['catch'](handleError(_0xc8e626,null));};exports[_0xaa41('0x55')]=function(_0x5c8028,_0x5423b6,_0x18d18b){var _0x4b1ec4;return db[_0xaa41('0x39')][_0xaa41('0x55')](_0x5c8028[_0xaa41('0x54')],{'raw':!![]})[_0xaa41('0x1c')](function(_0x5a2683){_0x4b1ec4=_0x5a2683;return db['Trunk'][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x4d6d0c){var _0x5954ba=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x5a385e=fs[_0xaa41('0x5a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x19ec63=ejs[_0xaa41('0x5f')](_0x5954ba,{'trunks':_0x4d6d0c||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x19ec63);if(_0x4b1ec4[_0xaa41('0x61')]){var _0x19ed68=ejs[_0xaa41('0x5f')](_0x5a385e,{'trunks':_0x4d6d0c||[]});fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x19ed68);}})[_0xaa41('0x1c')](function(){return respondWithRpcPromise('Reload',_0xaa41('0x55'),{'module':_0xaa41('0x64')});})[_0xaa41('0x1c')](function(){var _0x175ca9=_0x5c8028['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x175ca9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x175ca9[_0xaa41('0x65')]===_0xaa41('0x56')){var _0x2b9e68=_0x4b1ec4[_0xaa41('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xaa41('0x51')]({'where':{'name':_0xaa41('0x66'),'userProfileId':_0x175ca9[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0x59052d){if(_0x59052d&&_0x59052d[_0xaa41('0x59')]===0x0){return db['UserProfileResource'][_0xaa41('0x55')]({'name':_0x2b9e68[_0xaa41('0x36')],'resourceId':_0x2b9e68['id'],'type':_0x59052d['name'],'sectionId':_0x59052d['id']},{})[_0xaa41('0x1c')](function(){return _0x4b1ec4;});}else{return _0x4b1ec4;}})[_0xaa41('0x27')](function(_0x2ba160){logger[_0xaa41('0x23')](_0xaa41('0x67'),_0x2ba160);throw _0x2ba160;});}return _0x4b1ec4;})[_0xaa41('0x1c')](respondWithResult(_0x5423b6,0xc9))[_0xaa41('0x27')](handleError(_0x5423b6,null));};exports[_0xaa41('0x31')]=function(_0x33b5f4,_0x3d4f1e,_0x25a064){var _0x59a30b;return db[_0xaa41('0x39')][_0xaa41('0x51')]({'where':{'id':_0x33b5f4[_0xaa41('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d4f1e,null))['then'](saveUpdates(_0x33b5f4[_0xaa41('0x54')],null))[_0xaa41('0x1c')](function(_0x59fd6a){if(_0x59fd6a){_0x59a30b=_0x59fd6a;return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});}})['then'](function(_0x305050){if(_0x305050){var _0x3dd47e=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x1472be=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x44154f=ejs[_0xaa41('0x5f')](_0x3dd47e,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x44154f);var _0x404c38=ejs[_0xaa41('0x5f')](_0x1472be,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x63'),_0x404c38);return respondWithRpcPromise(_0xaa41('0x68'),'update',{'module':_0xaa41('0x64')});}return null;})['then'](function(_0x53faf4){if(_0x53faf4){return _0x59a30b;}})[_0xaa41('0x1c')](respondWithResult(_0x3d4f1e,null))[_0xaa41('0x27')](handleError(_0x3d4f1e,null));};exports['destroy']=function(_0x5a8cb0,_0x241e1a,_0x1726ec){var _0x3c189d;return db[_0xaa41('0x39')]['find']({'where':{'id':_0x5a8cb0[_0xaa41('0x4e')]['id']}})[_0xaa41('0x1c')](handleEntityNotFound(_0x241e1a,null))[_0xaa41('0x1c')](removeEntity(_0x241e1a,null))['then'](function(){return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x5697b6){var _0x183b36=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],_0xaa41('0x5d')),'utf8');var _0x399fbd=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config['root'],_0xaa41('0x69')),_0xaa41('0x5e'));var _0x1a2deb=ejs[_0xaa41('0x5f')](_0x183b36,{'trunks':_0x5697b6});var _0x38f5d0=ejs['render'](_0x399fbd,{'trunks':_0x5697b6});fs[_0xaa41('0x62')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1a2deb);fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x38f5d0);return respondWithRpcPromise(_0xaa41('0x68'),_0xaa41('0x32'),{'module':_0xaa41('0x64')});})[_0xaa41('0x27')](handleError(_0x241e1a,null));};
\ No newline at end of file
+var _0x9a19=['query','keys','filters','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','show','include','find','clone','params','omit','updatedAt','body','createdAt','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','/etc/asterisk/sip_xcally_trunks.conf','registry','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','autoAssociation','findAll','readFileSync','writeFileSync','Reload','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','destroy','get','Trunks','UserProfileResource','stack','name','index','map','Trunk','rawAttributes','fieldName','type'];(function(_0x114fa2,_0x18e427){var _0x1b8a07=function(_0x46cb38){while(--_0x46cb38){_0x114fa2['push'](_0x114fa2['shift']());}};_0x1b8a07(++_0x18e427);}(_0x9a19,0x114));var _0x99a1=function(_0x3c0dcc,_0x18c419){_0x3c0dcc=_0x3c0dcc-0x0;var _0x1a224c=_0x9a19[_0x3c0dcc];return _0x1a224c;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];var jayson=require(_0x99a1('0x19'));var client=jayson[_0x99a1('0x1a')][_0x99a1('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0xf713b9,_0x40c19c,_0x3a865c,_0x47815e){return new BPromise(function(_0xe1a1f,_0x3c9ef4){var _0x39ee55=_0x47815e||client;return _0x39ee55['request'](_0xf713b9,_0x3a865c)[_0x99a1('0x1c')](function(_0x3e45d4){logger[_0x99a1('0x1d')](_0x99a1('0x1e'),_0x40c19c,_0x99a1('0x1f'));logger[_0x99a1('0x20')](_0x99a1('0x21'),_0x40c19c,'request\x20sent',JSON['stringify'](_0x3e45d4));if(_0x3e45d4[_0x99a1('0x22')]){if(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x23')]===0x1f4){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);return _0x3c9ef4(_0x3e45d4[_0x99a1('0x22')][_0x99a1('0x24')]);}logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x3e45d4['error'][_0x99a1('0x24')]);return _0xe1a1f(_0x3e45d4[_0x99a1('0x22')]['message']);}else{logger[_0x99a1('0x1d')]('Trunk,\x20%s,\x20%s',_0x40c19c,_0x99a1('0x1f'));_0xe1a1f(_0x3e45d4[_0x99a1('0x25')][_0x99a1('0x24')]);}})[_0x99a1('0x26')](function(_0x5a88c6){logger[_0x99a1('0x22')](_0x99a1('0x1e'),_0x40c19c,_0x5a88c6);_0x3c9ef4(_0x5a88c6);});});}function respondWithStatusCode(_0x483c17,_0x44df2d){_0x44df2d=_0x44df2d||0xcc;return function(_0x5b5dfa){if(_0x5b5dfa){return _0x483c17[_0x99a1('0x27')](_0x44df2d);}return _0x483c17[_0x99a1('0x28')](_0x44df2d)[_0x99a1('0x29')]();};}function respondWithResult(_0xdaa27d,_0x3c813){_0x3c813=_0x3c813||0xc8;return function(_0x491341){if(_0x491341){return _0xdaa27d['status'](_0x3c813)[_0x99a1('0x2a')](_0x491341);}};}function respondWithFilteredResult(_0x5dabd9,_0x5dc733){return function(_0xafea84){if(_0xafea84){var _0x440879=typeof _0x5dc733[_0x99a1('0x2b')]===_0x99a1('0x2c')&&typeof _0x5dc733[_0x99a1('0x2d')]===_0x99a1('0x2c');var _0x183037=_0xafea84['count'];var _0xf41b0d=_0x440879?0x0:_0x5dc733['offset'];var _0x255197=_0x440879?_0xafea84[_0x99a1('0x2e')]:_0x5dc733[_0x99a1('0x2b')]+_0x5dc733['limit'];var _0x371edf;if(_0x255197>=_0x183037){_0x255197=_0x183037;_0x371edf=0xc8;}else{_0x371edf=0xce;}_0x5dabd9[_0x99a1('0x28')](_0x371edf);return _0x5dabd9['set'](_0x99a1('0x2f'),_0xf41b0d+'-'+_0x255197+'/'+_0x183037)[_0x99a1('0x2a')](_0xafea84);}return null;};}function patchUpdates(_0x36aa34){return function(_0x303d1e){try{jsonpatch[_0x99a1('0x30')](_0x303d1e,_0x36aa34,!![]);}catch(_0x969f6e){return BPromise[_0x99a1('0x31')](_0x969f6e);}return _0x303d1e[_0x99a1('0x32')]();};}function saveUpdates(_0x52da8d,_0x4960e4){return function(_0x3fa342){if(_0x3fa342){return _0x3fa342['update'](_0x52da8d)[_0x99a1('0x1c')](function(_0x400581){return _0x400581;});}return null;};}function removeEntity(_0x5b1a79,_0xa5972b){return function(_0x3503d5){if(_0x3503d5){return _0x3503d5[_0x99a1('0x33')]()[_0x99a1('0x1c')](function(){var _0x13f4db=_0x3503d5[_0x99a1('0x34')]({'plain':!![]});var _0x3081cd=_0x99a1('0x35');return db[_0x99a1('0x36')][_0x99a1('0x33')]({'where':{'type':_0x3081cd,'resourceId':_0x13f4db['id']}})[_0x99a1('0x1c')](function(){return _0x3503d5;});})[_0x99a1('0x1c')](function(){_0x5b1a79[_0x99a1('0x28')](0xcc)[_0x99a1('0x29')]();});}};}function handleEntityNotFound(_0x55005e,_0x53fed5){return function(_0x46e3f2){if(!_0x46e3f2){_0x55005e[_0x99a1('0x27')](0x194);}return _0x46e3f2;};}function handleError(_0x416a36,_0x4131e0){_0x4131e0=_0x4131e0||0x1f4;return function(_0x2690bd){logger[_0x99a1('0x22')](_0x2690bd[_0x99a1('0x37')]);if(_0x2690bd['name']){delete _0x2690bd[_0x99a1('0x38')];}_0x416a36[_0x99a1('0x28')](_0x4131e0)['send'](_0x2690bd);};}exports[_0x99a1('0x39')]=function(_0x2d328c,_0x391afa){var _0x3cd1a0={},_0x430cbc={},_0x399fd4={'count':0x0,'rows':[]};var _0x30e8a9=_[_0x99a1('0x3a')](db[_0x99a1('0x3b')][_0x99a1('0x3c')],function(_0x1da3e7){return{'name':_0x1da3e7[_0x99a1('0x3d')],'type':_0x1da3e7[_0x99a1('0x3e')]['key']};});_0x430cbc['model']=_['map'](_0x30e8a9,_0x99a1('0x38'));_0x430cbc[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x2d328c[_0x99a1('0x3f')]);_0x430cbc[_0x99a1('0x41')]=_['intersection'](_0x430cbc[_0x99a1('0x42')],_0x430cbc[_0x99a1('0x3f')]);_0x3cd1a0[_0x99a1('0x43')]=_['intersection'](_0x430cbc['model'],qs[_0x99a1('0x44')](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x3cd1a0['attributes']=_0x3cd1a0[_0x99a1('0x43')][_0x99a1('0x45')]?_0x3cd1a0[_0x99a1('0x43')]:_0x430cbc[_0x99a1('0x42')];if(!_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x46')](_0x99a1('0x47'))){_0x3cd1a0[_0x99a1('0x2d')]=qs[_0x99a1('0x2d')](_0x2d328c[_0x99a1('0x3f')]['limit']);_0x3cd1a0[_0x99a1('0x2b')]=qs[_0x99a1('0x2b')](_0x2d328c[_0x99a1('0x3f')]['offset']);}_0x3cd1a0[_0x99a1('0x48')]=qs['sort'](_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x49')]);_0x3cd1a0[_0x99a1('0x4a')]=qs[_0x99a1('0x41')](_[_0x99a1('0x4b')](_0x2d328c[_0x99a1('0x3f')],_0x430cbc['filters']),_0x30e8a9);if(_0x2d328c[_0x99a1('0x3f')]['filter']){_0x3cd1a0[_0x99a1('0x4a')]=_[_0x99a1('0x4c')](_0x3cd1a0[_0x99a1('0x4a')],{'$or':_[_0x99a1('0x3a')](_0x30e8a9,function(_0x3a0b44){if(_0x3a0b44[_0x99a1('0x3e')]!==_0x99a1('0x4d')){var _0x3861b6={};_0x3861b6[_0x3a0b44[_0x99a1('0x38')]]={'$like':'%'+_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x4e')]+'%'};return _0x3861b6;}})});}_0x3cd1a0=_['merge']({},_0x3cd1a0,_0x2d328c[_0x99a1('0x4f')]);var _0x330e3b={'where':_0x3cd1a0['where']};return db[_0x99a1('0x3b')][_0x99a1('0x2e')](_0x330e3b)[_0x99a1('0x1c')](function(_0x2e377b){_0x399fd4[_0x99a1('0x2e')]=_0x2e377b;if(_0x2d328c[_0x99a1('0x3f')][_0x99a1('0x50')]){_0x3cd1a0['include']=[{'all':!![]}];}return db[_0x99a1('0x3b')]['findAll'](_0x3cd1a0);})[_0x99a1('0x1c')](function(_0x269798){_0x399fd4['rows']=_0x269798;return _0x399fd4;})['then'](respondWithFilteredResult(_0x391afa,_0x3cd1a0))[_0x99a1('0x26')](handleError(_0x391afa,null));};exports[_0x99a1('0x51')]=function(_0x462c15,_0x4519fb){var _0xee2b1b={'raw':![],'where':{'id':_0x462c15['params']['id']}},_0x597836={};_0x597836['model']=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x597836[_0x99a1('0x3f')]=_[_0x99a1('0x40')](_0x462c15[_0x99a1('0x3f')]);_0x597836[_0x99a1('0x41')]=_['intersection'](_0x597836[_0x99a1('0x42')],_0x597836[_0x99a1('0x3f')]);_0xee2b1b[_0x99a1('0x43')]=_['intersection'](_0x597836[_0x99a1('0x42')],qs['fields'](_0x462c15['query'][_0x99a1('0x44')]));_0xee2b1b[_0x99a1('0x43')]=_0xee2b1b[_0x99a1('0x43')][_0x99a1('0x45')]?_0xee2b1b[_0x99a1('0x43')]:_0x597836[_0x99a1('0x42')];if(_0x462c15[_0x99a1('0x3f')][_0x99a1('0x50')]){_0xee2b1b[_0x99a1('0x52')]=[{'all':!![]}];}_0xee2b1b=_['merge']({},_0xee2b1b,_0x462c15[_0x99a1('0x4f')]);return db['Trunk'][_0x99a1('0x53')](_0xee2b1b)[_0x99a1('0x1c')](handleEntityNotFound(_0x4519fb,null))['then'](respondWithResult(_0x4519fb,null))[_0x99a1('0x26')](handleError(_0x4519fb,null));};exports[_0x99a1('0x54')]=function(_0x469e10,_0x2b2d63){var _0x2800d5={'where':{'id':_0x469e10[_0x99a1('0x55')]['id']}},_0x1bff78={};_0x1bff78[_0x99a1('0x42')]=_[_0x99a1('0x40')](db[_0x99a1('0x3b')][_0x99a1('0x3c')]);_0x2800d5[_0x99a1('0x43')]=_['intersection'](_0x1bff78['model'],qs[_0x99a1('0x44')](_0x469e10[_0x99a1('0x3f')][_0x99a1('0x44')]));_0x2800d5[_0x99a1('0x43')]=_0x2800d5[_0x99a1('0x43')]['length']?_0x2800d5[_0x99a1('0x43')]:_0x1bff78[_0x99a1('0x42')];if(_0x469e10['query'][_0x99a1('0x50')]){_0x2800d5[_0x99a1('0x52')]=[{'all':!![]}];}_0x2800d5=_[_0x99a1('0x4c')]({},_0x2800d5,_0x469e10[_0x99a1('0x4f')]);return db[_0x99a1('0x3b')]['find'](_0x2800d5)[_0x99a1('0x1c')](handleEntityNotFound(_0x2b2d63,null))[_0x99a1('0x1c')](function(_0x1bb1cb){if(_0x1bb1cb){var _0x22811f=_0x1bb1cb[_0x99a1('0x34')]({'plain':!![]});_0x22811f=qs[_0x99a1('0x56')](_0x22811f,['id','createdAt',_0x99a1('0x57')]);_0x469e10[_0x99a1('0x58')]=_['omit'](_0x469e10[_0x99a1('0x58')],['id',_0x99a1('0x59'),_0x99a1('0x57')]);return db[_0x99a1('0x3b')][_0x99a1('0x5a')](_['merge'](_0x22811f,_0x469e10[_0x99a1('0x58')]),{'include':_0x469e10['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x38ce3c){var _0x3f7c16=_0x469e10['user']['get']({'plain':!![]});if(!_0x3f7c16)throw new Error(_0x99a1('0x5b'));if(_0x3f7c16['role']===_0x99a1('0x5c')){var _0x263db3=_0x38ce3c[_0x99a1('0x34')]({'plain':!![]});var _0x180c1e='Trunks';return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x180c1e,'userProfileId':_0x3f7c16[_0x99a1('0x5e')]},'raw':!![]})['then'](function(_0x3a62c6){if(_0x3a62c6&&_0x3a62c6['autoAssociation']===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x263db3[_0x99a1('0x38')],'resourceId':_0x263db3['id'],'type':_0x3a62c6[_0x99a1('0x38')],'sectionId':_0x3a62c6['id']},{})[_0x99a1('0x1c')](function(){return _0x38ce3c;});}else{return _0x38ce3c;}})['catch'](function(_0x4d37f8){logger['error'](_0x99a1('0x5f'),_0x4d37f8);throw _0x4d37f8;});}return _0x38ce3c;});}})[_0x99a1('0x1c')](respondWithResult(_0x2b2d63,0xc9))['catch'](handleError(_0x2b2d63,null));};exports['create']=function(_0x1fe7af,_0x2f5587,_0x401c8f){var _0x509d4f;return db['Trunk'][_0x99a1('0x5a')](_0x1fe7af['body'],{'raw':!![]})[_0x99a1('0x1c')](function(_0x129690){_0x509d4f=_0x129690;return db[_0x99a1('0x3b')]['findAll']({'raw':!![]});})[_0x99a1('0x1c')](function(_0x28c7d8){var _0x4ac99e=fs['readFileSync'](path[_0x99a1('0x60')](config['root'],_0x99a1('0x61')),_0x99a1('0x62'));var _0x30a0a5=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x3d0ff6=ejs['render'](_0x4ac99e,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x65'),_0x3d0ff6);if(_0x509d4f[_0x99a1('0x66')]){var _0x1750d5=ejs[_0x99a1('0x67')](_0x30a0a5,{'trunks':_0x28c7d8||[]});fs['writeFileSync'](_0x99a1('0x68'),_0x1750d5);}})['then'](function(){return respondWithRpcPromise('Reload',_0x99a1('0x5a'),{'module':_0x99a1('0x69')});})[_0x99a1('0x1c')](function(){var _0x525969=_0x1fe7af[_0x99a1('0x5c')][_0x99a1('0x34')]({'plain':!![]});if(!_0x525969)throw new Error(_0x99a1('0x5b'));if(_0x525969[_0x99a1('0x6a')]===_0x99a1('0x5c')){var _0x4ae313=_0x509d4f[_0x99a1('0x34')]({'plain':!![]});return db[_0x99a1('0x5d')][_0x99a1('0x53')]({'where':{'name':_0x99a1('0x35'),'userProfileId':_0x525969[_0x99a1('0x5e')]},'raw':!![]})[_0x99a1('0x1c')](function(_0x5e42be){if(_0x5e42be&&_0x5e42be[_0x99a1('0x6b')]===0x0){return db[_0x99a1('0x36')][_0x99a1('0x5a')]({'name':_0x4ae313[_0x99a1('0x38')],'resourceId':_0x4ae313['id'],'type':_0x5e42be[_0x99a1('0x38')],'sectionId':_0x5e42be['id']},{})['then'](function(){return _0x509d4f;});}else{return _0x509d4f;}})[_0x99a1('0x26')](function(_0x68c944){logger[_0x99a1('0x22')](_0x99a1('0x5f'),_0x68c944);throw _0x68c944;});}return _0x509d4f;})[_0x99a1('0x1c')](respondWithResult(_0x2f5587,0xc9))[_0x99a1('0x26')](handleError(_0x2f5587,null));};exports['update']=function(_0xaa953e,_0x33d96b,_0x4a5617){var _0x56716a;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0xaa953e['params']['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x33d96b,null))[_0x99a1('0x1c')](saveUpdates(_0xaa953e[_0x99a1('0x58')],null))[_0x99a1('0x1c')](function(_0x43156f){if(_0x43156f){_0x56716a=_0x43156f;return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});}})[_0x99a1('0x1c')](function(_0x4260d7){if(_0x4260d7){var _0x3e099c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],'server/files/templates/trunk.ejs'),_0x99a1('0x62'));var _0x5a9a7d=fs['readFileSync'](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0xbbbe26=ejs[_0x99a1('0x67')](_0x3e099c,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0xbbbe26);var _0x361ce6=ejs['render'](_0x5a9a7d,{'trunks':_0x4260d7||[]});fs[_0x99a1('0x6e')](_0x99a1('0x68'),_0x361ce6);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x70'),{'module':_0x99a1('0x69')});}return null;})[_0x99a1('0x1c')](function(_0x6dab29){if(_0x6dab29){return _0x56716a;}})[_0x99a1('0x1c')](respondWithResult(_0x33d96b,null))['catch'](handleError(_0x33d96b,null));};exports['destroy']=function(_0x51c289,_0x2dd29b,_0x353f25){var _0x53cdb3;return db[_0x99a1('0x3b')][_0x99a1('0x53')]({'where':{'id':_0x51c289[_0x99a1('0x55')]['id']}})[_0x99a1('0x1c')](handleEntityNotFound(_0x2dd29b,null))['then'](removeEntity(_0x2dd29b,null))[_0x99a1('0x1c')](function(){return db[_0x99a1('0x3b')][_0x99a1('0x6c')]({'raw':!![]});})[_0x99a1('0x1c')](function(_0x4e9fe9){var _0x24aa05=fs['readFileSync'](path['join'](config['root'],_0x99a1('0x61')),'utf8');var _0xb7744c=fs[_0x99a1('0x6d')](path[_0x99a1('0x60')](config[_0x99a1('0x63')],_0x99a1('0x64')),_0x99a1('0x62'));var _0x444e43=ejs['render'](_0x24aa05,{'trunks':_0x4e9fe9});var _0x4fcd65=ejs[_0x99a1('0x67')](_0xb7744c,{'trunks':_0x4e9fe9});fs[_0x99a1('0x6e')](_0x99a1('0x65'),_0x444e43);fs['writeFileSync'](_0x99a1('0x68'),_0x4fcd65);return respondWithRpcPromise(_0x99a1('0x6f'),_0x99a1('0x33'),{'module':'chan_sip.so'});})[_0x99a1('0x26')](handleError(_0x2dd29b,null));};
\ No newline at end of file
index 36b5ffd..7b9bdc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2efc=['../../config/logger','api','bluebird','request-promise','path','rimraf','exports','Trunk','tools_trunks','util'];(function(_0x416928,_0x1078dc){var _0x21f8d6=function(_0x5125eb){while(--_0x5125eb){_0x416928['push'](_0x416928['shift']());}};_0x21f8d6(++_0x1078dc);}(_0x2efc,0xdb));var _0xc2ef=function(_0x20ef64,_0x4a8fe9){_0x20ef64=_0x20ef64-0x0;var _0x3707d8=_0x2efc[_0x20ef64];return _0x3707d8;};'use strict';var _=require('lodash');var util=require(_0xc2ef('0x0'));var logger=require(_0xc2ef('0x1'))(_0xc2ef('0x2'));var moment=require('moment');var BPromise=require(_0xc2ef('0x3'));var rp=require(_0xc2ef('0x4'));var fs=require('fs');var path=require(_0xc2ef('0x5'));var rimraf=require(_0xc2ef('0x6'));var config=require('../../config/environment');var attributes=require('./trunk.attributes');module[_0xc2ef('0x7')]=function(_0x254e13,_0x3af94e){return _0x254e13['define'](_0xc2ef('0x8'),attributes,{'tableName':_0xc2ef('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa13d=['Trunk','tools_trunks','lodash','../../config/logger','request-promise','path','rimraf','../../config/environment','./trunk.attributes','exports'];(function(_0x25444a,_0x476ca6){var _0x20fe0b=function(_0x4ba279){while(--_0x4ba279){_0x25444a['push'](_0x25444a['shift']());}};_0x20fe0b(++_0x476ca6);}(_0xa13d,0x124));var _0xda13=function(_0x2061e4,_0x30c10f){_0x2061e4=_0x2061e4-0x0;var _0x4cd9ca=_0xa13d[_0x2061e4];return _0x4cd9ca;};'use strict';var _=require(_0xda13('0x0'));var util=require('util');var logger=require(_0xda13('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xda13('0x2'));var fs=require('fs');var path=require(_0xda13('0x3'));var rimraf=require(_0xda13('0x4'));var config=require(_0xda13('0x5'));var attributes=require(_0xda13('0x6'));module[_0xda13('0x7')]=function(_0x3281c3,_0x5e0cfc){return _0x3281c3['define'](_0xda13('0x8'),attributes,{'tableName':_0xda13('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ec87d1b..b84735c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15ec=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','Trunk','findAll','options','raw','attributes','limit','include','map','model','debug','GetTrunk','ShowTrunk','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x333329,_0x128176){var _0x4798f4=function(_0x289824){while(--_0x289824){_0x333329['push'](_0x333329['shift']());}};_0x4798f4(++_0x128176);}(_0x15ec,0x157));var _0xc15e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0x15ec[_0x4baae2];return _0x1a2285;};'use strict';var _=require(_0xc15e('0x0'));var util=require('util');var moment=require(_0xc15e('0x1'));var BPromise=require('bluebird');var rs=require(_0xc15e('0x2'));var fs=require('fs');var Redis=require(_0xc15e('0x3'));var db=require(_0xc15e('0x4'))['db'];var utils=require(_0xc15e('0x5'));var logger=require(_0xc15e('0x6'))(_0xc15e('0x7'));var config=require(_0xc15e('0x8'));var jayson=require(_0xc15e('0x9'));var client=jayson[_0xc15e('0xa')][_0xc15e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54d2c3,_0x194957,_0x4c37f8){return new BPromise(function(_0x65e791,_0x5b8f91){return client[_0xc15e('0xc')](_0x54d2c3,_0x4c37f8)[_0xc15e('0xd')](function(_0x433c47){logger[_0xc15e('0xe')](_0xc15e('0xf'),_0x194957,_0xc15e('0x10'));logger['debug']('Trunk,\x20%s,\x20%s,\x20%s',_0x194957,_0xc15e('0x10'),JSON[_0xc15e('0x11')](_0x433c47));if(_0x433c47[_0xc15e('0x12')]){if(_0x433c47['error'][_0xc15e('0x13')]===0x1f4){logger[_0xc15e('0x12')](_0xc15e('0xf'),_0x194957,_0x433c47[_0xc15e('0x12')][_0xc15e('0x14')]);return _0x5b8f91(_0x433c47['error'][_0xc15e('0x14')]);}logger[_0xc15e('0x12')](_0xc15e('0xf'),_0x194957,_0x433c47[_0xc15e('0x12')][_0xc15e('0x14')]);return _0x65e791(_0x433c47[_0xc15e('0x12')][_0xc15e('0x14')]);}else{logger[_0xc15e('0xe')]('Trunk,\x20%s,\x20%s',_0x194957,'request\x20sent');_0x65e791(_0x433c47['result'][_0xc15e('0x14')]);}})[_0xc15e('0x15')](function(_0x5a3079){logger[_0xc15e('0x12')]('Trunk,\x20%s,\x20%s',_0x194957,_0x5a3079);_0x5b8f91(_0x5a3079);});});}exports['GetTrunk']=function(_0x3106fd){var _0x53fa63=this;return new Promise(function(_0x57c50b,_0x2f7dcd){return db[_0xc15e('0x16')][_0xc15e('0x17')]({'raw':_0x3106fd['options']?_0x3106fd[_0xc15e('0x18')][_0xc15e('0x19')]===undefined?!![]:![]:!![],'where':_0x3106fd[_0xc15e('0x18')]?_0x3106fd[_0xc15e('0x18')]['where']||null:null,'attributes':_0x3106fd[_0xc15e('0x18')]?_0x3106fd['options'][_0xc15e('0x1a')]||null:null,'limit':_0x3106fd[_0xc15e('0x18')]?_0x3106fd['options'][_0xc15e('0x1b')]||null:null,'include':_0x3106fd[_0xc15e('0x18')]?_0x3106fd[_0xc15e('0x18')][_0xc15e('0x1c')]?_[_0xc15e('0x1d')](_0x3106fd[_0xc15e('0x18')][_0xc15e('0x1c')],function(_0xee9a7d){return{'model':db[_0xee9a7d[_0xc15e('0x1e')]],'as':_0xee9a7d['as'],'attributes':_0xee9a7d['attributes'],'include':_0xee9a7d[_0xc15e('0x1c')]?_['map'](_0xee9a7d['include'],function(_0x29919a){return{'model':db[_0x29919a[_0xc15e('0x1e')]],'as':_0x29919a['as'],'attributes':_0x29919a['attributes'],'include':_0x29919a[_0xc15e('0x1c')]?_[_0xc15e('0x1d')](_0x29919a[_0xc15e('0x1c')],function(_0x531c93){return{'model':db[_0x531c93[_0xc15e('0x1e')]],'as':_0x531c93['as'],'attributes':_0x531c93[_0xc15e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc15e('0xd')](function(_0x68c093){logger[_0xc15e('0xe')]('GetTrunk',_0x3106fd);logger[_0xc15e('0x1f')](_0xc15e('0x20'),_0x3106fd,JSON['stringify'](_0x68c093));_0x57c50b(_0x68c093);})['catch'](function(_0x269a25){logger['error'](_0xc15e('0x20'),_0x269a25[_0xc15e('0x14')],_0x3106fd);_0x2f7dcd(_0x53fa63[_0xc15e('0x12')](0x1f4,_0x269a25[_0xc15e('0x14')]));});});};exports[_0xc15e('0x21')]=function(_0x25e331){var _0x39edf2=this;return new Promise(function(_0x5750a2,_0xeddad2){return db[_0xc15e('0x16')][_0xc15e('0x22')]({'raw':_0x25e331['options']?_0x25e331['options']['raw']===undefined?!![]:![]:!![],'where':_0x25e331['options']?_0x25e331[_0xc15e('0x18')]['where']||null:null,'attributes':_0x25e331[_0xc15e('0x18')]?_0x25e331[_0xc15e('0x18')][_0xc15e('0x1a')]||null:null,'include':_0x25e331[_0xc15e('0x18')]?_0x25e331[_0xc15e('0x18')][_0xc15e('0x1c')]?_[_0xc15e('0x1d')](_0x25e331[_0xc15e('0x18')]['include'],function(_0x27bd78){return{'model':db[_0x27bd78[_0xc15e('0x1e')]],'as':_0x27bd78['as'],'attributes':_0x27bd78[_0xc15e('0x1a')],'include':_0x27bd78[_0xc15e('0x1c')]?_['map'](_0x27bd78[_0xc15e('0x1c')],function(_0x3d4069){return{'model':db[_0x3d4069['model']],'as':_0x3d4069['as'],'attributes':_0x3d4069[_0xc15e('0x1a')],'include':_0x3d4069[_0xc15e('0x1c')]?_['map'](_0x3d4069['include'],function(_0x354eb1){return{'model':db[_0x354eb1['model']],'as':_0x354eb1['as'],'attributes':_0x354eb1[_0xc15e('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xc15e('0xd')](function(_0x5b9a5c){logger[_0xc15e('0xe')]('ShowTrunk',_0x25e331);logger['debug'](_0xc15e('0x21'),_0x25e331,JSON['stringify'](_0x5b9a5c));_0x5750a2(_0x5b9a5c);})[_0xc15e('0x15')](function(_0x3b05fd){logger['error'](_0xc15e('0x21'),_0x3b05fd[_0xc15e('0x14')],_0x25e331);_0xeddad2(_0x39edf2[_0xc15e('0x12')](0x1f4,_0x3b05fd[_0xc15e('0x14')]));});});};
\ No newline at end of file
+var _0x3403=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','error','code','message','catch','GetTrunk','Trunk','options','raw','where','attributes','limit','include','map','model','stringify','find','ShowTrunk','lodash','util','moment','bluebird','randomstring'];(function(_0x1f6a60,_0x1465de){var _0x526310=function(_0x18fef2){while(--_0x18fef2){_0x1f6a60['push'](_0x1f6a60['shift']());}};_0x526310(++_0x1465de);}(_0x3403,0x136));var _0x3340=function(_0x29d94e,_0xf386d6){_0x29d94e=_0x29d94e-0x0;var _0x106237=_0x3403[_0x29d94e];return _0x106237;};'use strict';var _=require(_0x3340('0x0'));var util=require(_0x3340('0x1'));var moment=require(_0x3340('0x2'));var BPromise=require(_0x3340('0x3'));var rs=require(_0x3340('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3340('0x5'))['db'];var utils=require(_0x3340('0x6'));var logger=require(_0x3340('0x7'))('rpc');var config=require(_0x3340('0x8'));var jayson=require(_0x3340('0x9'));var client=jayson[_0x3340('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x218e20,_0x580f36,_0x1f531b){return new BPromise(function(_0x54ca59,_0x3e46b6){return client[_0x3340('0xb')](_0x218e20,_0x1f531b)[_0x3340('0xc')](function(_0x172e55){logger[_0x3340('0xd')](_0x3340('0xe'),_0x580f36,_0x3340('0xf'));logger[_0x3340('0x10')](_0x3340('0x11'),_0x580f36,_0x3340('0xf'),JSON['stringify'](_0x172e55));if(_0x172e55[_0x3340('0x12')]){if(_0x172e55[_0x3340('0x12')][_0x3340('0x13')]===0x1f4){logger[_0x3340('0x12')]('Trunk,\x20%s,\x20%s',_0x580f36,_0x172e55[_0x3340('0x12')][_0x3340('0x14')]);return _0x3e46b6(_0x172e55[_0x3340('0x12')]['message']);}logger[_0x3340('0x12')](_0x3340('0xe'),_0x580f36,_0x172e55['error'][_0x3340('0x14')]);return _0x54ca59(_0x172e55[_0x3340('0x12')][_0x3340('0x14')]);}else{logger[_0x3340('0xd')](_0x3340('0xe'),_0x580f36,'request\x20sent');_0x54ca59(_0x172e55['result'][_0x3340('0x14')]);}})[_0x3340('0x15')](function(_0xdd3f25){logger['error']('Trunk,\x20%s,\x20%s',_0x580f36,_0xdd3f25);_0x3e46b6(_0xdd3f25);});});}exports[_0x3340('0x16')]=function(_0x38a84e){var _0x27a4fc=this;return new Promise(function(_0x2355f4,_0x4fb1e6){return db[_0x3340('0x17')]['findAll']({'raw':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x19')]===undefined?!![]:![]:!![],'where':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1a')]||null:null,'attributes':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1b')]||null:null,'limit':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1c')]||null:null,'include':_0x38a84e[_0x3340('0x18')]?_0x38a84e[_0x3340('0x18')][_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x38a84e[_0x3340('0x18')][_0x3340('0x1d')],function(_0x1fe605){return{'model':db[_0x1fe605[_0x3340('0x1f')]],'as':_0x1fe605['as'],'attributes':_0x1fe605[_0x3340('0x1b')],'include':_0x1fe605[_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x1fe605['include'],function(_0x1c4724){return{'model':db[_0x1c4724[_0x3340('0x1f')]],'as':_0x1c4724['as'],'attributes':_0x1c4724[_0x3340('0x1b')],'include':_0x1c4724[_0x3340('0x1d')]?_['map'](_0x1c4724[_0x3340('0x1d')],function(_0x3ee06f){return{'model':db[_0x3ee06f['model']],'as':_0x3ee06f['as'],'attributes':_0x3ee06f[_0x3340('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3340('0xc')](function(_0x5a515c){logger[_0x3340('0xd')](_0x3340('0x16'),_0x38a84e);logger['debug'](_0x3340('0x16'),_0x38a84e,JSON[_0x3340('0x20')](_0x5a515c));_0x2355f4(_0x5a515c);})[_0x3340('0x15')](function(_0x46691b){logger['error'](_0x3340('0x16'),_0x46691b[_0x3340('0x14')],_0x38a84e);_0x4fb1e6(_0x27a4fc[_0x3340('0x12')](0x1f4,_0x46691b[_0x3340('0x14')]));});});};exports['ShowTrunk']=function(_0x11c9c7){var _0x51634c=this;return new Promise(function(_0x306064,_0x532113){return db['Trunk'][_0x3340('0x21')]({'raw':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7['options'][_0x3340('0x19')]===undefined?!![]:![]:!![],'where':_0x11c9c7['options']?_0x11c9c7[_0x3340('0x18')][_0x3340('0x1a')]||null:null,'attributes':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7[_0x3340('0x18')][_0x3340('0x1b')]||null:null,'include':_0x11c9c7[_0x3340('0x18')]?_0x11c9c7[_0x3340('0x18')]['include']?_[_0x3340('0x1e')](_0x11c9c7[_0x3340('0x18')][_0x3340('0x1d')],function(_0x3533a3){return{'model':db[_0x3533a3[_0x3340('0x1f')]],'as':_0x3533a3['as'],'attributes':_0x3533a3[_0x3340('0x1b')],'include':_0x3533a3['include']?_[_0x3340('0x1e')](_0x3533a3[_0x3340('0x1d')],function(_0x136c6a){return{'model':db[_0x136c6a[_0x3340('0x1f')]],'as':_0x136c6a['as'],'attributes':_0x136c6a[_0x3340('0x1b')],'include':_0x136c6a[_0x3340('0x1d')]?_[_0x3340('0x1e')](_0x136c6a[_0x3340('0x1d')],function(_0x3b5e8b){return{'model':db[_0x3b5e8b[_0x3340('0x1f')]],'as':_0x3b5e8b['as'],'attributes':_0x3b5e8b[_0x3340('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3340('0xc')](function(_0x370134){logger['info']('ShowTrunk',_0x11c9c7);logger[_0x3340('0x10')](_0x3340('0x22'),_0x11c9c7,JSON[_0x3340('0x20')](_0x370134));_0x306064(_0x370134);})[_0x3340('0x15')](function(_0x334b6f){logger[_0x3340('0x12')](_0x3340('0x22'),_0x334b6f['message'],_0x11c9c7);_0x532113(_0x51634c[_0x3340('0x12')](0x1f4,_0x334b6f[_0x3340('0x14')]));});});};
\ No newline at end of file
index c49fd61..445e6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf618=['./user-setting.controller','put','/:id','update'];(function(_0x3c3144,_0x5764dc){var _0x398869=function(_0x4c33f6){while(--_0x4c33f6){_0x3c3144['push'](_0x3c3144['shift']());}};_0x398869(++_0x5764dc);}(_0xf618,0x120));var _0x8f61=function(_0x13db75,_0x4d0d5f){_0x13db75=_0x13db75-0x0;var _0x1b1571=_0xf618[_0x13db75];return _0x1b1571;};'use strict';var express=require('express');var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0x8f61('0x0'));router[_0x8f61('0x1')](_0x8f61('0x2'),auth['isAuthenticated'](),controller[_0x8f61('0x3')]);module['exports']=router;
\ No newline at end of file
+var _0xab26=['Router','./user-setting.controller','put','isAuthenticated'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xab26,0x64));var _0x6ab2=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xab26[_0x122ef9];return _0x42fba0;};'use strict';var express=require('express');var router=express[_0x6ab2('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x6ab2('0x1'));router[_0x6ab2('0x2')]('/:id',auth[_0x6ab2('0x3')](),controller['update']);module['exports']=router;
\ No newline at end of file
index 9f4e508..39a7a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x46f8=['info','exports','ENUM','BOOLEAN','TEXT','DATE','INTEGER','sequelize','error','warning'];(function(_0x2dcb3e,_0x26414d){var _0x884bc5=function(_0x30b958){while(--_0x30b958){_0x2dcb3e['push'](_0x2dcb3e['shift']());}};_0x884bc5(++_0x26414d);}(_0x46f8,0xa7));var _0x846f=function(_0x22e91b,_0x5c12c1){_0x22e91b=_0x22e91b-0x0;var _0x4f7a8e=_0x46f8[_0x22e91b];return _0x4f7a8e;};'use strict';var Sequelize=require(_0x846f('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x846f('0x1'),_0x846f('0x2'),_0x846f('0x3'),'debug'];module[_0x846f('0x4')]={'clientSideLoggingLevel':{'type':Sequelize[_0x846f('0x5')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x846f('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x846f('0x6')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x846f('0x7')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x846f('0x8')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x846f('0x9')],'unique':'UserId'}};
\ No newline at end of file
+var _0xec65=['TEXT','DATE','INTEGER','UserId','sequelize','error','warning','info','debug','exports','ENUM','BOOLEAN'];(function(_0x2fbce7,_0x2ce748){var _0x107c98=function(_0x48b9d2){while(--_0x48b9d2){_0x2fbce7['push'](_0x2fbce7['shift']());}};_0x107c98(++_0x2ce748);}(_0xec65,0xa0));var _0x5ec6=function(_0x39ea42,_0x3c1f50){_0x39ea42=_0x39ea42-0x0;var _0x33f5b7=_0xec65[_0x39ea42];return _0x33f5b7;};'use strict';var Sequelize=require(_0x5ec6('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x5ec6('0x1'),_0x5ec6('0x2'),_0x5ec6('0x3'),_0x5ec6('0x4')];module[_0x5ec6('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x5ec6('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x5ec6('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x5ec6('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x5ec6('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x5ec6('0x9')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x5ec6('0xa')],'unique':_0x5ec6('0xb')}};
\ No newline at end of file
index f7a6f3b..7cae025 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd6ce=['../../config/environment','../../mysqldb','socket.io-emitter','redis','defaults','localhost','status','update','then','stack','name','user','role','admin','Unauthorized','UserSetting','find','params','catch','lodash','ioredis','../../config/logger','api'];(function(_0x48c035,_0x172049){var _0x2f0905=function(_0xdc63c0){while(--_0xdc63c0){_0x48c035['push'](_0x48c035['shift']());}};_0x2f0905(++_0x172049);}(_0xd6ce,0x127));var _0xed6c=function(_0x29c040,_0x7c5007){_0x29c040=_0x29c040-0x0;var _0x146bce=_0xd6ce[_0x29c040];return _0x146bce;};'use strict';var _=require(_0xed6c('0x0'));var Redis=require(_0xed6c('0x1'));var logger=require(_0xed6c('0x2'))(_0xed6c('0x3'));var config=require(_0xed6c('0x4'));var db=require(_0xed6c('0x5'))['db'];var socket=require(_0xed6c('0x6'))(new Redis(config[_0xed6c('0x7')]));require('./user-setting.socket')['register'](socket);config[_0xed6c('0x7')]=_[_0xed6c('0x8')](config[_0xed6c('0x7')],{'host':_0xed6c('0x9'),'port':0x18eb});function respondWithResult(_0x4a6546,_0x5e0e3a){_0x5e0e3a=_0x5e0e3a||0xc8;return function(_0x7668a7){if(_0x7668a7){return _0x4a6546[_0xed6c('0xa')](_0x5e0e3a)['json'](_0x7668a7);}};}function saveUpdates(_0x583dfb){return function(_0x8c0011){if(_0x8c0011){return _0x8c0011[_0xed6c('0xb')](_0x583dfb)[_0xed6c('0xc')](function(_0x3ae670){return _0x3ae670;});}return null;};}function handleEntityNotFound(_0x5f3581){return function(_0x4ac99a){if(!_0x4ac99a){_0x5f3581['sendStatus'](0x194);}return _0x4ac99a;};}function handleError(_0x54d96d,_0x978b9f){_0x978b9f=_0x978b9f||0x1f4;return function(_0x5ec77f){logger['error'](_0x5ec77f[_0xed6c('0xd')]);if(_0x5ec77f[_0xed6c('0xe')]){delete _0x5ec77f['name'];}_0x54d96d[_0xed6c('0xa')](_0x978b9f)['send'](_0x5ec77f);};}exports[_0xed6c('0xb')]=function(_0xbcf0f4,_0x47c392){if(_0xbcf0f4[_0xed6c('0xf')][_0xed6c('0x10')]!==_0xed6c('0x11'))throw new Error(_0xed6c('0x12'));if(isNaN(Number(_0xbcf0f4['params']['id'])))throw new Error('Invalid\x20user\x20setting\x20id');return db[_0xed6c('0x13')][_0xed6c('0x14')]({'where':{'id':_0xbcf0f4[_0xed6c('0x15')]['id']}})['then'](handleEntityNotFound(_0x47c392,null))[_0xed6c('0xc')](saveUpdates(_0xbcf0f4['body'],null))[_0xed6c('0xc')](respondWithResult(_0x47c392,null))[_0xed6c('0x16')](handleError(_0x47c392,null));};
\ No newline at end of file
+var _0xf296=['stack','name','send','role','admin','Unauthorized','Invalid\x20user\x20setting\x20id','find','params','catch','lodash','ioredis','api','socket.io-emitter','redis','register','defaults','localhost','status','json','update','then','error'];(function(_0x493fe7,_0x31f891){var _0xecac55=function(_0x29b9bd){while(--_0x29b9bd){_0x493fe7['push'](_0x493fe7['shift']());}};_0xecac55(++_0x31f891);}(_0xf296,0x94));var _0x6f29=function(_0x2fe959,_0x351d77){_0x2fe959=_0x2fe959-0x0;var _0x2f6ace=_0xf296[_0x2fe959];return _0x2f6ace;};'use strict';var _=require(_0x6f29('0x0'));var Redis=require(_0x6f29('0x1'));var logger=require('../../config/logger')(_0x6f29('0x2'));var config=require('../../config/environment');var db=require('../../mysqldb')['db'];var socket=require(_0x6f29('0x3'))(new Redis(config[_0x6f29('0x4')]));require('./user-setting.socket')[_0x6f29('0x5')](socket);config[_0x6f29('0x4')]=_[_0x6f29('0x6')](config['redis'],{'host':_0x6f29('0x7'),'port':0x18eb});function respondWithResult(_0x295563,_0x584956){_0x584956=_0x584956||0xc8;return function(_0x8ea46){if(_0x8ea46){return _0x295563[_0x6f29('0x8')](_0x584956)[_0x6f29('0x9')](_0x8ea46);}};}function saveUpdates(_0x8d27ae){return function(_0x1ef7e1){if(_0x1ef7e1){return _0x1ef7e1[_0x6f29('0xa')](_0x8d27ae)[_0x6f29('0xb')](function(_0x533e59){return _0x533e59;});}return null;};}function handleEntityNotFound(_0x53db5d){return function(_0xbf45fd){if(!_0xbf45fd){_0x53db5d['sendStatus'](0x194);}return _0xbf45fd;};}function handleError(_0x5201d4,_0x29c69c){_0x29c69c=_0x29c69c||0x1f4;return function(_0x5e24b4){logger[_0x6f29('0xc')](_0x5e24b4[_0x6f29('0xd')]);if(_0x5e24b4[_0x6f29('0xe')]){delete _0x5e24b4['name'];}_0x5201d4[_0x6f29('0x8')](_0x29c69c)[_0x6f29('0xf')](_0x5e24b4);};}exports[_0x6f29('0xa')]=function(_0x1a50f2,_0x300182){if(_0x1a50f2['user'][_0x6f29('0x10')]!==_0x6f29('0x11'))throw new Error(_0x6f29('0x12'));if(isNaN(Number(_0x1a50f2['params']['id'])))throw new Error(_0x6f29('0x13'));return db['UserSetting'][_0x6f29('0x14')]({'where':{'id':_0x1a50f2[_0x6f29('0x15')]['id']}})[_0x6f29('0xb')](handleEntityNotFound(_0x300182,null))[_0x6f29('0xb')](saveUpdates(_0x1a50f2['body'],null))['then'](respondWithResult(_0x300182,null))[_0x6f29('0x16')](handleError(_0x300182,null));};
\ No newline at end of file
index 5ed79d5..9b27cf2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb6d=['hasOwnProperty','hook','exports','events','../../mysqldb','save','update','remove','emit'];(function(_0x1038b4,_0x4a32ed){var _0x63c82f=function(_0x27bb20){while(--_0x27bb20){_0x1038b4['push'](_0x1038b4['shift']());}};_0x63c82f(++_0x4a32ed);}(_0xbb6d,0x198));var _0xdbb6=function(_0x3c5519,_0x470865){_0x3c5519=_0x3c5519-0x0;var _0x2b7690=_0xbb6d[_0x3c5519];return _0x2b7690;};'use strict';var EventEmitter=require(_0xdbb6('0x0'));var UserSetting=require(_0xdbb6('0x1'))['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xdbb6('0x2'),'afterUpdate':_0xdbb6('0x3'),'afterDestroy':_0xdbb6('0x4')};function emitEvent(_0x404392){return function(_0x516388,_0x2abb6c,_0x246272){UserSettingEvents[_0xdbb6('0x5')](_0x404392+':'+_0x516388['id'],_0x516388);UserSettingEvents['emit'](_0x404392,_0x516388);_0x246272(null);};}for(var e in events){if(events[_0xdbb6('0x6')](e)){var event=events[e];UserSetting[_0xdbb6('0x7')](e,emitEvent(event));}}module[_0xdbb6('0x8')]=UserSettingEvents;
\ No newline at end of file
+var _0xf724=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserSetting'];(function(_0x443f79,_0x33e446){var _0x3847e4=function(_0x42fa01){while(--_0x42fa01){_0x443f79['push'](_0x443f79['shift']());}};_0x3847e4(++_0x33e446);}(_0xf724,0x1cb));var _0x4f72=function(_0x5ecadc,_0x1cf9f1){_0x5ecadc=_0x5ecadc-0x0;var _0x565037=_0xf724[_0x5ecadc];return _0x565037;};'use strict';var EventEmitter=require(_0x4f72('0x0'));var UserSetting=require(_0x4f72('0x1'))['db'][_0x4f72('0x2')];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x4f72('0x3')](0x0);var events={'afterCreate':_0x4f72('0x4'),'afterUpdate':_0x4f72('0x5'),'afterDestroy':_0x4f72('0x6')};function emitEvent(_0x4ce031){return function(_0x1a210f,_0x30479c,_0x1fa912){UserSettingEvents['emit'](_0x4ce031+':'+_0x1a210f['id'],_0x1a210f);UserSettingEvents[_0x4f72('0x7')](_0x4ce031,_0x1a210f);_0x1fa912(null);};}for(var e in events){if(events[_0x4f72('0x8')](e)){var event=events[e];UserSetting[_0x4f72('0x9')](e,emitEvent(event));}}module[_0x4f72('0xa')]=UserSettingEvents;
\ No newline at end of file
index 1fd08a2..7b3f1ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9434=['user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting'];(function(_0x193357,_0x145555){var _0x142c68=function(_0x769c46){while(--_0x769c46){_0x193357['push'](_0x193357['shift']());}};_0x142c68(++_0x145555);}(_0x9434,0x168));var _0x4943=function(_0x3ab6ba,_0x59ddb3){_0x3ab6ba=_0x3ab6ba-0x0;var _0x545a66=_0x9434[_0x3ab6ba];return _0x545a66;};'use strict';var attributes=require(_0x4943('0x0'));module[_0x4943('0x1')]=function(_0x354681){return _0x354681[_0x4943('0x2')](_0x4943('0x3'),attributes,{'tableName':_0x4943('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x599fb3){if(!_0x599fb3[_0x4943('0x5')])_0x599fb3[_0x4943('0x6')]=null;else if(_0x599fb3['clientSideLoggingEnabledSince']===null)_0x599fb3[_0x4943('0x6')]=new Date();}}});};
\ No newline at end of file
+var _0xd52a=['UserSetting','user_settings','clientSideLoggingEnabled','clientSideLoggingEnabledSince','exports','define'];(function(_0x4b87e8,_0x4bcc67){var _0x2d8e46=function(_0x15a9b9){while(--_0x15a9b9){_0x4b87e8['push'](_0x4b87e8['shift']());}};_0x2d8e46(++_0x4bcc67);}(_0xd52a,0xca));var _0xad52=function(_0x333604,_0x2861af){_0x333604=_0x333604-0x0;var _0x246130=_0xd52a[_0x333604];return _0x246130;};'use strict';var attributes=require('./user-setting.attributes');module[_0xad52('0x0')]=function(_0x5e6aa7){return _0x5e6aa7[_0xad52('0x1')](_0xad52('0x2'),attributes,{'tableName':_0xad52('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x572592){if(!_0x572592[_0xad52('0x4')])_0x572592[_0xad52('0x5')]=null;else if(_0x572592[_0xad52('0x5')]===null)_0x572592[_0xad52('0x5')]=new Date();}}});};
\ No newline at end of file
index 540275e..c62706a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a4a=['update','user-setting:update','emit','user-setting:update:user-','UserId','length','user-setting:','save','remove'];(function(_0x492398,_0x573a46){var _0x4a797f=function(_0x53358b){while(--_0x53358b){_0x492398['push'](_0x492398['shift']());}};_0x4a797f(++_0x573a46);}(_0x2a4a,0x193));var _0xa2a4=function(_0x1b1cbe,_0x5120fd){_0x1b1cbe=_0x1b1cbe-0x0;var _0x410167=_0x2a4a[_0x1b1cbe];return _0x410167;};'use strict';var UserSettingEvents=require('./user-setting.events');var events=[_0xa2a4('0x0'),_0xa2a4('0x1'),_0xa2a4('0x2')];function createListener(_0x1aeb8a,_0x1c71fe){return function(_0x541b7c){_0x1c71fe['emit'](_0x1aeb8a,_0x541b7c);if(_0x1aeb8a===_0xa2a4('0x3')){_0x1c71fe[_0xa2a4('0x4')](_0xa2a4('0x5')+_0x541b7c[_0xa2a4('0x6')],_0x541b7c);}};}exports['register']=function(_0x1e1593){for(var _0x649398=0x0,_0x416516=events[_0xa2a4('0x7')];_0x649398<_0x416516;_0x649398++){var _0x1c438f=events[_0x649398];var _0x856f2a=createListener(_0xa2a4('0x8')+_0x1c438f,_0x1e1593);UserSettingEvents['on'](_0x1c438f,_0x856f2a);}};
\ No newline at end of file
+var _0x3be4=['UserId','register','length','user-setting:','./user-setting.events','save','remove','emit','user-setting:update:user-'];(function(_0x463f29,_0x315360){var _0x516d9b=function(_0x8c52c9){while(--_0x8c52c9){_0x463f29['push'](_0x463f29['shift']());}};_0x516d9b(++_0x315360);}(_0x3be4,0xaf));var _0x43be=function(_0x5b13c9,_0x44e067){_0x5b13c9=_0x5b13c9-0x0;var _0x453edd=_0x3be4[_0x5b13c9];return _0x453edd;};'use strict';var UserSettingEvents=require(_0x43be('0x0'));var events=[_0x43be('0x1'),_0x43be('0x2'),'update'];function createListener(_0x240879,_0x65c56b){return function(_0x551498){_0x65c56b[_0x43be('0x3')](_0x240879,_0x551498);if(_0x240879==='user-setting:update'){_0x65c56b[_0x43be('0x3')](_0x43be('0x4')+_0x551498[_0x43be('0x5')],_0x551498);}};}exports[_0x43be('0x6')]=function(_0x57973d){for(var _0x11faa1=0x0,_0x3efc56=events[_0x43be('0x7')];_0x11faa1<_0x3efc56;_0x11faa1++){var _0x3f35f4=events[_0x11faa1];var _0x148950=createListener(_0x43be('0x8')+_0x3f35f4,_0x57973d);UserSettingEvents['on'](_0x3f35f4,_0x148950);}};
\ No newline at end of file
index 79a33f1..5a74819 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./user.controller','get','isAuthenticated','index','/whoami','whoami','/presence','/:id','/:id/open_tabs','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','getScreenRecordings','getChatInteractions','getOpenchannelInteractions','/:id/mail/interactions','getMailInteractions','/:id/fax/interactions','getFaxInteractions','/:id/whatsapp/interactions','/:id/lists','/:id/agents','/:id/prefixes','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','getOpenchannelAccounts','getSmsAccounts','/:id/chat_websites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/scheduled_calls','/:id/api_key','getApiKey','create','post','/create_many','bulkCreate','diskStorage','root','server/files/images/','format','%s-%s','originalname','/:id/avatar','single','file','addAvatar','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','/:id/sms_accounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','createApiKey','put','update','changePassword','delete','/:id/teams','destroy','/:id/chat_interactions','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeOpenchannelInteractions','/:id/whatsapp_interactions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeWhatsappAccounts','multer','util','path','connect-timeout'];(function(_0xbf9f5b,_0x40bafb){var _0x11f1f9=function(_0x2ec9c4){while(--_0x2ec9c4){_0xbf9f5b['push'](_0xbf9f5b['shift']());}};_0x11f1f9(++_0x40bafb);}(_0xd61e,0x13d));var _0xed61=function(_0x4b4e2e,_0x2eea3d){_0x4b4e2e=_0x4b4e2e-0x0;var _0xb27bac=_0xd61e[_0x4b4e2e];return _0xb27bac;};'use strict';var multer=require(_0xed61('0x0'));var util=require(_0xed61('0x1'));var path=require(_0xed61('0x2'));var timeout=require(_0xed61('0x3'));var express=require(_0xed61('0x4'));var router=express[_0xed61('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xed61('0x6'));var interaction=require(_0xed61('0x7'));var config=require(_0xed61('0x8'));var controller=require(_0xed61('0x9'));router[_0xed61('0xa')]('/',auth[_0xed61('0xb')](),controller[_0xed61('0xc')]);router['get']('/describe',auth['isAuthenticated'](),controller['describe']);router['get'](_0xed61('0xd'),auth[_0xed61('0xb')](),controller[_0xed61('0xe')]);router[_0xed61('0xa')](_0xed61('0xf'),auth['isAuthenticated'](),controller['getPresence']);router['get'](_0xed61('0x10'),auth[_0xed61('0xb')](),controller['show']);router['get']('/:id/avatar',controller['getAvatar']);router[_0xed61('0xa')](_0xed61('0x11'),auth[_0xed61('0xb')](),controller[_0xed61('0x12')]);router['get'](_0xed61('0x13'),auth[_0xed61('0xb')](),controller[_0xed61('0x14')]);router['get'](_0xed61('0x15'),auth[_0xed61('0xb')](),controller[_0xed61('0x16')]);router[_0xed61('0xa')]('/:id/queues_rt',auth[_0xed61('0xb')](),controller[_0xed61('0x17')]);router[_0xed61('0xa')](_0xed61('0x18'),auth['isAuthenticated'](),controller[_0xed61('0x19')]);router[_0xed61('0xa')]('/:id/recordings',auth[_0xed61('0xb')](),controller[_0xed61('0x1a')]);router[_0xed61('0xa')]('/:id/screen_recordings',auth[_0xed61('0xb')](),controller[_0xed61('0x1b')]);router[_0xed61('0xa')]('/:id/chat/interactions',auth[_0xed61('0xb')](),controller[_0xed61('0x1c')]);router[_0xed61('0xa')]('/:id/openchannel/interactions',auth[_0xed61('0xb')](),controller[_0xed61('0x1d')]);router['get'](_0xed61('0x1e'),auth[_0xed61('0xb')](),controller[_0xed61('0x1f')]);router['get']('/:id/sms/interactions',auth[_0xed61('0xb')](),controller['getSmsInteractions']);router[_0xed61('0xa')](_0xed61('0x20'),auth[_0xed61('0xb')](),controller[_0xed61('0x21')]);router[_0xed61('0xa')](_0xed61('0x22'),auth['isAuthenticated'](),controller['getWhatsappInteractions']);router['get']('/:id/teams',auth[_0xed61('0xb')](),controller['getTeams']);router[_0xed61('0xa')](_0xed61('0x23'),auth['isAuthenticated'](),controller['getLists']);router[_0xed61('0xa')](_0xed61('0x24'),auth[_0xed61('0xb')](),controller['getAgents']);router[_0xed61('0xa')](_0xed61('0x25'),auth[_0xed61('0xb')](),controller['getVoicePrefixes']);router[_0xed61('0xa')]('/:id/fax_accounts',auth[_0xed61('0xb')](),controller[_0xed61('0x26')]);router[_0xed61('0xa')]('/:id/mail_accounts',auth[_0xed61('0xb')](),controller[_0xed61('0x27')]);router[_0xed61('0xa')](_0xed61('0x28'),auth['isAuthenticated'](),controller[_0xed61('0x29')]);router['get']('/:id/sms_accounts',auth[_0xed61('0xb')](),controller[_0xed61('0x2a')]);router[_0xed61('0xa')](_0xed61('0x2b'),auth['isAuthenticated'](),controller['getChatWebsites']);router[_0xed61('0xa')](_0xed61('0x2c'),auth[_0xed61('0xb')](),controller[_0xed61('0x2d')]);router[_0xed61('0xa')](_0xed61('0x2e'),auth[_0xed61('0xb')](),controller['getScheduledCalls']);router['get'](_0xed61('0x2f'),auth['isAuthenticated'](),controller[_0xed61('0x30')]);router['post']('/:id/contacts',auth['isAuthenticated'](),controller['addContacts']);router['post']('/',auth[_0xed61('0xb')](),controller[_0xed61('0x31')]);router[_0xed61('0x32')](_0xed61('0x33'),auth[_0xed61('0xb')](),controller[_0xed61('0x34')]);router[_0xed61('0x32')](_0xed61('0x15'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0xed61('0x35')]({'destination':function(_0x16391d,_0x3d3e36,_0x395fcc){_0x395fcc(null,path['join'](config[_0xed61('0x36')],_0xed61('0x37')));},'filename':function(_0x5badb8,_0x11ce2e,_0xceb303){_0xceb303(null,util[_0xed61('0x38')](_0xed61('0x39'),Date['now'](),_0x11ce2e[_0xed61('0x3a')]));}})});router[_0xed61('0x32')](_0xed61('0x3b'),upload[_0xed61('0x3c')](_0xed61('0x3d')),controller[_0xed61('0x3e')]);router[_0xed61('0x32')]('/:id/login',auth[_0xed61('0xb')](),controller[_0xed61('0x3f')]);router[_0xed61('0x32')](_0xed61('0x40'),auth[_0xed61('0xb')](),controller[_0xed61('0x41')]);router[_0xed61('0x32')](_0xed61('0x42'),auth[_0xed61('0xb')](),controller[_0xed61('0x43')]);router[_0xed61('0x32')](_0xed61('0x44'),auth[_0xed61('0xb')](),controller[_0xed61('0x45')]);router['post']('/:id/teams',auth[_0xed61('0xb')](),controller[_0xed61('0x46')]);router['post']('/:id/chat_interactions',auth['isAuthenticated'](),controller['addChatInteractions']);router[_0xed61('0x32')](_0xed61('0x47'),auth[_0xed61('0xb')](),controller[_0xed61('0x48')]);router[_0xed61('0x32')](_0xed61('0x49'),auth['isAuthenticated'](),controller[_0xed61('0x4a')]);router[_0xed61('0x32')](_0xed61('0x4b'),auth['isAuthenticated'](),controller[_0xed61('0x4c')]);router[_0xed61('0x32')](_0xed61('0x4d'),auth[_0xed61('0xb')](),controller[_0xed61('0x4e')]);router['post']('/:id/whatsapp_interactions',auth[_0xed61('0xb')](),controller[_0xed61('0x4f')]);router[_0xed61('0x32')](_0xed61('0x50'),auth['isAuthenticated'](),controller[_0xed61('0x51')]);router[_0xed61('0x32')](_0xed61('0x52'),auth['isAuthenticated'](),controller[_0xed61('0x53')]);router[_0xed61('0x32')]('/:id/openchannel_accounts',auth[_0xed61('0xb')](),controller[_0xed61('0x54')]);router[_0xed61('0x32')](_0xed61('0x55'),auth[_0xed61('0xb')](),controller[_0xed61('0x56')]);router[_0xed61('0x32')](_0xed61('0x2b'),auth[_0xed61('0xb')](),controller[_0xed61('0x57')]);router[_0xed61('0x32')](_0xed61('0x2c'),auth[_0xed61('0xb')](),controller[_0xed61('0x58')]);router[_0xed61('0x32')](_0xed61('0x2f'),auth[_0xed61('0xb')](),controller[_0xed61('0x59')]);router[_0xed61('0x5a')](_0xed61('0x10'),auth[_0xed61('0xb')](),controller[_0xed61('0x5b')]);router[_0xed61('0x5a')]('/:id/password',auth['isAuthenticated'](),controller[_0xed61('0x5c')]);router[_0xed61('0x5d')](_0xed61('0x15'),auth[_0xed61('0xb')](),controller['removeQueues']);router[_0xed61('0x5d')](_0xed61('0x5e'),auth[_0xed61('0xb')](),controller['removeTeams']);router['delete']('/:id',auth[_0xed61('0xb')](),controller[_0xed61('0x5f')]);router[_0xed61('0x5d')](_0xed61('0x60'),auth[_0xed61('0xb')](),controller[_0xed61('0x61')]);router[_0xed61('0x5d')](_0xed61('0x47'),auth['isAuthenticated'](),controller[_0xed61('0x62')]);router[_0xed61('0x5d')]('/:id/fax_interactions',auth[_0xed61('0xb')](),controller[_0xed61('0x63')]);router[_0xed61('0x5d')]('/:id/sms_interactions',auth[_0xed61('0xb')](),controller['removeSmsInteractions']);router[_0xed61('0x5d')](_0xed61('0x4d'),auth[_0xed61('0xb')](),controller[_0xed61('0x64')]);router[_0xed61('0x5d')](_0xed61('0x65'),auth[_0xed61('0xb')](),controller['removeWhatsappInteractions']);router[_0xed61('0x5d')](_0xed61('0x50'),auth[_0xed61('0xb')](),controller[_0xed61('0x66')]);router[_0xed61('0x5d')](_0xed61('0x52'),auth['isAuthenticated'](),controller[_0xed61('0x67')]);router['delete'](_0xed61('0x28'),auth['isAuthenticated'](),controller[_0xed61('0x68')]);router[_0xed61('0x5d')]('/:id/sms_accounts',auth[_0xed61('0xb')](),controller[_0xed61('0x69')]);router[_0xed61('0x5d')](_0xed61('0x2b'),auth[_0xed61('0xb')](),controller['removeChatWebsites']);router[_0xed61('0x5d')](_0xed61('0x2c'),auth[_0xed61('0xb')](),controller[_0xed61('0x6a')]);router[_0xed61('0x5d')](_0xed61('0x2f'),auth[_0xed61('0xb')](),controller['removeApiKey']);module['exports']=router;
\ No newline at end of file
+var _0xe07b=['/:id/scheduled_calls','/:id/api_key','getApiKey','addContacts','create','post','/create_many','bulkCreate','diskStorage','join','root','format','%s-%s','now','single','file','addAvatar','login','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','/:id/fax_interactions','/:id/sms_interactions','addSmsInteractions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','/:id/chat_websites','createApiKey','put','/:id','update','/:id/password','changePassword','removeTeams','delete','removeChatInteractions','removeMailInteractions','removeSmsInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','removeFaxAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','exports','multer','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/whoami','whoami','/presence','show','/:id/avatar','getAvatar','/:id/open_tabs','getOpenTabs','getContacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/mail/interactions','getMailInteractions','/:id/sms/interactions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/whatsapp_accounts','getWhatsappAccounts'];(function(_0x16fbaf,_0x3504c9){var _0x50d295=function(_0x2b570b){while(--_0x2b570b){_0x16fbaf['push'](_0x16fbaf['shift']());}};_0x50d295(++_0x3504c9);}(_0xe07b,0x181));var _0xbe07=function(_0x353c43,_0x3a4111){_0x353c43=_0x353c43-0x0;var _0x515e2c=_0xe07b[_0x353c43];return _0x515e2c;};'use strict';var multer=require(_0xbe07('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe07('0x1'));var router=express[_0xbe07('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0xbe07('0x3'));var interaction=require(_0xbe07('0x4'));var config=require(_0xbe07('0x5'));var controller=require('./user.controller');router[_0xbe07('0x6')]('/',auth[_0xbe07('0x7')](),controller[_0xbe07('0x8')]);router[_0xbe07('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xbe07('0x9')]);router[_0xbe07('0x6')](_0xbe07('0xa'),auth[_0xbe07('0x7')](),controller[_0xbe07('0xb')]);router[_0xbe07('0x6')](_0xbe07('0xc'),auth['isAuthenticated'](),controller['getPresence']);router[_0xbe07('0x6')]('/:id',auth[_0xbe07('0x7')](),controller[_0xbe07('0xd')]);router[_0xbe07('0x6')](_0xbe07('0xe'),controller[_0xbe07('0xf')]);router[_0xbe07('0x6')](_0xbe07('0x10'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x11')]);router['get']('/:id/contacts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x12')]);router['get'](_0xbe07('0x13'),auth['isAuthenticated'](),controller[_0xbe07('0x14')]);router[_0xbe07('0x6')](_0xbe07('0x15'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x16')]);router[_0xbe07('0x6')](_0xbe07('0x17'),auth['isAuthenticated'](),controller[_0xbe07('0x18')]);router['get']('/:id/recordings',auth[_0xbe07('0x7')](),controller[_0xbe07('0x19')]);router[_0xbe07('0x6')](_0xbe07('0x1a'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x1b')]);router[_0xbe07('0x6')](_0xbe07('0x1c'),auth['isAuthenticated'](),controller[_0xbe07('0x1d')]);router['get']('/:id/openchannel/interactions',auth['isAuthenticated'](),controller['getOpenchannelInteractions']);router['get'](_0xbe07('0x1e'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x1f')]);router[_0xbe07('0x6')](_0xbe07('0x20'),auth[_0xbe07('0x7')](),controller['getSmsInteractions']);router[_0xbe07('0x6')](_0xbe07('0x21'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x22')]);router['get']('/:id/whatsapp/interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x23')]);router['get']('/:id/teams',auth[_0xbe07('0x7')](),controller[_0xbe07('0x24')]);router[_0xbe07('0x6')](_0xbe07('0x25'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x26')]);router[_0xbe07('0x6')](_0xbe07('0x27'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x28')]);router[_0xbe07('0x6')](_0xbe07('0x29'),auth['isAuthenticated'](),controller[_0xbe07('0x2a')]);router[_0xbe07('0x6')](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller['getFaxAccounts']);router[_0xbe07('0x6')](_0xbe07('0x2c'),auth[_0xbe07('0x7')](),controller['getMailAccounts']);router[_0xbe07('0x6')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x2e')]);router[_0xbe07('0x6')](_0xbe07('0x2f'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x30')]);router[_0xbe07('0x6')]('/:id/chat_websites',auth[_0xbe07('0x7')](),controller['getChatWebsites']);router['get'](_0xbe07('0x31'),auth['isAuthenticated'](),controller[_0xbe07('0x32')]);router[_0xbe07('0x6')](_0xbe07('0x33'),auth[_0xbe07('0x7')](),controller['getScheduledCalls']);router['get'](_0xbe07('0x34'),auth['isAuthenticated'](),controller[_0xbe07('0x35')]);router['post']('/:id/contacts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x36')]);router['post']('/',auth[_0xbe07('0x7')](),controller[_0xbe07('0x37')]);router[_0xbe07('0x38')](_0xbe07('0x39'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x3a')]);router[_0xbe07('0x38')](_0xbe07('0x13'),auth['isAuthenticated'](),controller['addQueues']);var upload=multer({'storage':multer[_0xbe07('0x3b')]({'destination':function(_0x249a72,_0x2478c5,_0xc36888){_0xc36888(null,path[_0xbe07('0x3c')](config[_0xbe07('0x3d')],'server/files/images/'));},'filename':function(_0x244265,_0x596fa5,_0x493682){_0x493682(null,util[_0xbe07('0x3e')](_0xbe07('0x3f'),Date[_0xbe07('0x40')](),_0x596fa5['originalname']));}})});router['post'](_0xbe07('0xe'),upload[_0xbe07('0x41')](_0xbe07('0x42')),controller[_0xbe07('0x43')]);router[_0xbe07('0x38')]('/:id/login',auth[_0xbe07('0x7')](),controller[_0xbe07('0x44')]);router[_0xbe07('0x38')]('/:id/logout',auth[_0xbe07('0x7')](),controller[_0xbe07('0x45')]);router[_0xbe07('0x38')](_0xbe07('0x46'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x47')]);router['post'](_0xbe07('0x48'),auth['isAuthenticated'](),controller[_0xbe07('0x49')]);router[_0xbe07('0x38')](_0xbe07('0x4a'),auth['isAuthenticated'](),controller[_0xbe07('0x4b')]);router[_0xbe07('0x38')](_0xbe07('0x4c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x4d')]);router['post'](_0xbe07('0x4e'),auth['isAuthenticated'](),controller['addMailInteractions']);router[_0xbe07('0x38')](_0xbe07('0x4f'),auth['isAuthenticated'](),controller['addFaxInteractions']);router[_0xbe07('0x38')](_0xbe07('0x50'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x51')]);router[_0xbe07('0x38')](_0xbe07('0x52'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x53')]);router[_0xbe07('0x38')](_0xbe07('0x54'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x55')]);router['post'](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller['addFaxAccounts']);router[_0xbe07('0x38')](_0xbe07('0x2c'),auth['isAuthenticated'](),controller[_0xbe07('0x56')]);router[_0xbe07('0x38')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x57')]);router['post']('/:id/sms_accounts',auth[_0xbe07('0x7')](),controller[_0xbe07('0x58')]);router[_0xbe07('0x38')](_0xbe07('0x59'),auth[_0xbe07('0x7')](),controller['addChatWebsites']);router[_0xbe07('0x38')](_0xbe07('0x31'),auth[_0xbe07('0x7')](),controller['addWhatsappAccounts']);router[_0xbe07('0x38')]('/:id/api_key',auth[_0xbe07('0x7')](),controller[_0xbe07('0x5a')]);router[_0xbe07('0x5b')](_0xbe07('0x5c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x5d')]);router[_0xbe07('0x5b')](_0xbe07('0x5e'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x5f')]);router['delete'](_0xbe07('0x13'),auth[_0xbe07('0x7')](),controller['removeQueues']);router['delete'](_0xbe07('0x4a'),auth['isAuthenticated'](),controller[_0xbe07('0x60')]);router[_0xbe07('0x61')](_0xbe07('0x5c'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0xbe07('0x4c'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x62')]);router[_0xbe07('0x61')](_0xbe07('0x4e'),auth['isAuthenticated'](),controller[_0xbe07('0x63')]);router['delete'](_0xbe07('0x4f'),auth[_0xbe07('0x7')](),controller['removeFaxInteractions']);router[_0xbe07('0x61')]('/:id/sms_interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x64')]);router['delete']('/:id/openchannel_interactions',auth['isAuthenticated'](),controller[_0xbe07('0x65')]);router[_0xbe07('0x61')]('/:id/whatsapp_interactions',auth[_0xbe07('0x7')](),controller[_0xbe07('0x66')]);router[_0xbe07('0x61')](_0xbe07('0x2b'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x67')]);router[_0xbe07('0x61')](_0xbe07('0x2c'),auth[_0xbe07('0x7')](),controller['removeMailAccounts']);router[_0xbe07('0x61')](_0xbe07('0x2d'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x68')]);router[_0xbe07('0x61')](_0xbe07('0x2f'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x69')]);router[_0xbe07('0x61')](_0xbe07('0x59'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x6a')]);router[_0xbe07('0x61')](_0xbe07('0x31'),auth[_0xbe07('0x7')](),controller[_0xbe07('0x6b')]);router['delete'](_0xbe07('0x34'),auth[_0xbe07('0x7')](),controller['removeApiKey']);module[_0xbe07('0x6c')]=router;
\ No newline at end of file
index 9d6305a..57437d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['refuse','originate','uac','uas','fingerprint','update,nonat','TEXT','showWebBar','get','isArray','wss','udp','encryption','avpf','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlsprivatekey','rtcp_mux','actpass','dtlscertfile','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','true','false','screenrecording','blocked','blockedAt','loginAttempts','sequelize','moment','util','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','user','agent','telephone','INTEGER','BOOLEAN','DATE','dynamic','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','join','transport','split','rfc2833','info','shortinfo','inband','auto','yes','nonat','update','outgoing','force_rport,comedia','nat','ulaw;alaw;gsm','allow','insecure','\x22\x22\x20<>','always','accept'];(function(_0x8256ba,_0x3e243d){var _0x19a384=function(_0x44c73c){while(--_0x44c73c){_0x8256ba['push'](_0x8256ba['shift']());}};_0x19a384(++_0x3e243d);}(_0x70e0,0x17b));var _0x070e=function(_0x1bd25c,_0x30b4a0){_0x1bd25c=_0x1bd25c-0x0;var _0x55251f=_0x70e0[_0x1bd25c];return _0x55251f;};'use strict';var Sequelize=require(_0x070e('0x0'));var moment=require(_0x070e('0x1'));var util=require(_0x070e('0x2'));var _=require('lodash');module['exports']={'name':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'unique':_0x070e('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x277d32){this[_0x070e('0x5')]('name',_0x277d32);this[_0x070e('0x5')]('defaultuser',_0x277d32);},'comment':_0x070e('0x6')},'fullname':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x56e420){this['setDataValue'](_0x070e('0x7'),_0x56e420);this[_0x070e('0x5')](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),_0x56e420,this[_0x070e('0xb')](_0x070e('0xc'))));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x070e('0xd'),'validate':{'isEmail':!![]},'set':function(_0x2e3e5e){if(_0x2e3e5e){this[_0x070e('0x5')](_0x070e('0xd'),_0x2e3e5e[_0x070e('0xe')]());}}},'role':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x10'),_0x070e('0x11'),_0x070e('0x12'),_0x070e('0x13')),'allowNull':![]},'password':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':'local'},'internal':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':![],'unique':'internal','set':function(_0x4a33d2){this['setDataValue'](_0x070e('0xc'),_0x4a33d2);this[_0x070e('0x5')]('accountcode',_0x4a33d2);this['setDataValue'](_0x070e('0x8'),util[_0x070e('0x9')](_0x070e('0xa'),this[_0x070e('0xb')]('fullname'),_0x4a33d2));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x070e('0x3')]},'mobile':{'type':Sequelize[_0x070e('0x3')]},'address':{'type':Sequelize[_0x070e('0x3')]},'zipcode':{'type':Sequelize[_0x070e('0x3')]},'userpic':{'type':Sequelize[_0x070e('0x3')]},'city':{'type':Sequelize['STRING']},'country':{'type':Sequelize[_0x070e('0x3')]},'online':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x070e('0x16')]},'voicePause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'DEFAULT\x20PAUSE'},'lastPauseAt':{'type':Sequelize[_0x070e('0x16')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x070e('0x14')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x17')},'ipaddr':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'port':{'type':Sequelize[_0x070e('0x14')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x18'),_0x070e('0x11'),_0x070e('0x19')),'allowNull':!![],'defaultValue':_0x070e('0x18')},'context':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'defaultValue':'from-sip'},'callingpres':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x1a'),_0x070e('0x1b'),'ALLOWED_FAILED_SCREEN','ALLOWED',_0x070e('0x1c'),_0x070e('0x1d'),_0x070e('0x1e'),'PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'permit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'udp','set':function(_0x59c5b4){this[_0x070e('0x5')]('transport',_0x59c5b4?_0x59c5b4[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')]('transport')?this['getDataValue'](_0x070e('0x20'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]'},'dtmfmode':{'type':Sequelize['ENUM'](_0x070e('0x22'),_0x070e('0x23'),_0x070e('0x24'),_0x070e('0x25'),_0x070e('0x26')),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x28'),_0x070e('0x29'),_0x070e('0x2a')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x2b'),'set':function(_0x34746e){this['setDataValue']('nat',_0x34746e?_0x34746e['join'](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2c'))?this[_0x070e('0xb')](_0x070e('0x2c'))[_0x070e('0x21')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x070e('0x3')]},'namedcallgroup':{'type':Sequelize[_0x070e('0x3')]},'pickupgroup':{'type':Sequelize[_0x070e('0x3')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x070e('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x070e('0x3')]},'disallow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':'all'},'allow':{'type':Sequelize[_0x070e('0x3')],'allowNull':![],'defaultValue':_0x070e('0x2d'),'set':function(_0x4800a9){this[_0x070e('0x5')]('allow',_0x4800a9?_0x4800a9[_0x070e('0x1f')](';'):_0x070e('0x2d'));},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2e'))?this[_0x070e('0xb')]('allow')[_0x070e('0x21')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![],'set':function(_0x38879f){this['setDataValue'](_0x070e('0x2f'),_0x38879f?_0x38879f[_0x070e('0x1f')](','):null);},'get':function(){return this[_0x070e('0xb')](_0x070e('0x2f'))?this['getDataValue'](_0x070e('0x2f'))['split'](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize['STRING'],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x070e('0x30')},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x31')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x32'),_0x070e('0x33'),_0x070e('0x34')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x35'),'uas'),'allowNull':!![],'defaultValue':_0x070e('0x36')},'t38pt_usertpsource':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':_0x070e('0x27')},'keepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize['STRING'],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize['STRING'],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize['STRING'],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x070e('0xf')]('yes','no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no',_0x070e('0x37'),'certificate'),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x070e('0xf')]('active','passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize['STRING'],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x070e('0x14')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize['STRING'],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x070e('0xf')](_0x070e('0x27'),'no',_0x070e('0x28'),'update',_0x070e('0x38')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize['STRING']},'resetPasswordExpires':{'type':Sequelize[_0x070e('0x16')]},'passwordResetAt':{'type':Sequelize['DATE'],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x070e('0x39')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x4cb86f){this['setDataValue'](_0x070e('0x3a'),_0x4cb86f);var _0x1ae5cb=this[_0x070e('0x3b')]({'plain':!![]});switch(_0x4cb86f){case 0x0:case 0x1:var _0x122198=_0x1ae5cb[_0x070e('0x20')]?_[_0x070e('0x3c')](_0x1ae5cb['transport'])?_0x1ae5cb[_0x070e('0x20')]['join']():_0x1ae5cb[_0x070e('0x20')]:'udp';if(_0x122198===_0x070e('0x3d')){_0x122198=_0x070e('0x3e');}this['setDataValue'](_0x070e('0x20'),_0x122198);this['setDataValue'](_0x070e('0x3f'),'no');this[_0x070e('0x5')](_0x070e('0x40'),null);this[_0x070e('0x5')](_0x070e('0x41'),null);this[_0x070e('0x5')](_0x070e('0x42'),null);this[_0x070e('0x5')](_0x070e('0x43'),null);this[_0x070e('0x5')](_0x070e('0x44'),null);this[_0x070e('0x5')](_0x070e('0x45'),null);this[_0x070e('0x5')]('dtlscertfile',null);this[_0x070e('0x5')](_0x070e('0x46'),null);this[_0x070e('0x5')](_0x070e('0x47'),'no');break;case 0x2:this['setDataValue'](_0x070e('0x20'),_0x070e('0x3d'));this[_0x070e('0x5')](_0x070e('0x3f'),_0x070e('0x27'));this[_0x070e('0x5')]('avpf',_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x41'),_0x070e('0x27'));this['setDataValue'](_0x070e('0x42'),'yes');this[_0x070e('0x5')](_0x070e('0x43'),_0x070e('0x27'));this[_0x070e('0x5')](_0x070e('0x44'),'no');this['setDataValue'](_0x070e('0x45'),_0x070e('0x48'));this[_0x070e('0x5')](_0x070e('0x49'),_0x1ae5cb['dtlscertfile']||_0x070e('0x4a'));this['setDataValue'](_0x070e('0x46'),_0x1ae5cb[_0x070e('0x46')]||_0x070e('0x4b'));this['setDataValue'](_0x070e('0x47'),'yes');break;default:}}},'permissions':{'type':Sequelize[_0x070e('0x39')],'set':function(_0x5ce157){this[_0x070e('0x5')](_0x070e('0x4c'),_0x5ce157?_0x5ce157['join'](','):[]);},'get':function(){return this[_0x070e('0xb')]('permissions')?_[_0x070e('0x4d')](this[_0x070e('0xb')]('permissions')['split'](','),function(_0x29ee66){return parseInt(_0x29ee66,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x070e('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x070e('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize['ENUM'](_0x070e('0x27'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x070e('0x4e')],'get':function(){return this[_0x070e('0xb')](_0x070e('0x4f'))?this[_0x070e('0xb')](_0x070e('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'interface':{'type':Sequelize[_0x070e('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x070e('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x4f720f){if(typeof _0x4f720f==='string'){var _0x1624cd=_0x4f720f==='1'?!![]:_0x4f720f==='0'?![]:_0x4f720f===_0x070e('0x50')?!![]:_0x4f720f===_0x070e('0x51')?![]:![];this[_0x070e('0x5')]('screenrecording',_0x1624cd);}else{this[_0x070e('0x5')](_0x070e('0x52'),_0x4f720f);}}},'blocked':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![],'set':function(_0xd74f9c){this[_0x070e('0x5')](_0x070e('0x53'),_0xd74f9c);if(_0xd74f9c===!![]){this['setDataValue'](_0x070e('0x54'),moment());this['setDataValue'](_0x070e('0x55'),0x0);}else{this[_0x070e('0x5')](_0x070e('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x070e('0x16')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'disabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x070e('0x14')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x070e('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x070e('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x070e('0x14')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x34e8=['isArray','wss','encryption','force_avp','icesupport','dtlsenable','dtlsverify','dtlssetup','dtlscertfile','rtcp_mux','avpf','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','permissions','map','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','sequelize','moment','util','lodash','STRING','name','setDataValue','defaultuser','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','internal','email','toLowerCase','ENUM','admin','agent','telephone','local','INTEGER','accountcode','BOOLEAN','DEFAULT\x20PAUSE','DATE','dynamic','friend','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','PROHIB','udp','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','ulaw;alaw;gsm','allow','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]','insecure','never','\x22\x22\x20<>','always','accept','refuse','originate','uac','uas','certificate','passive','actpass','update,nonat','TEXT','showWebBar','get'];(function(_0x2d8a8c,_0x365e01){var _0x2770d8=function(_0x4ac0bb){while(--_0x4ac0bb){_0x2d8a8c['push'](_0x2d8a8c['shift']());}};_0x2770d8(++_0x365e01);}(_0x34e8,0x12c));var _0x834e=function(_0x5efbe6,_0x5569b7){_0x5efbe6=_0x5efbe6-0x0;var _0x27e808=_0x34e8[_0x5efbe6];return _0x27e808;};'use strict';var Sequelize=require(_0x834e('0x0'));var moment=require(_0x834e('0x1'));var util=require(_0x834e('0x2'));var _=require(_0x834e('0x3'));module['exports']={'name':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0x5'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x472111){this[_0x834e('0x6')](_0x834e('0x5'),_0x472111);this[_0x834e('0x6')](_0x834e('0x7'),_0x472111);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'set':function(_0x52056d){this[_0x834e('0x6')](_0x834e('0x8'),_0x52056d);this[_0x834e('0x6')](_0x834e('0x9'),util[_0x834e('0xa')](_0x834e('0xb'),_0x52056d,this[_0x834e('0xc')](_0x834e('0xd'))));}},'alias':{'type':Sequelize[_0x834e('0x4')]},'email':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'unique':_0x834e('0xe'),'validate':{'isEmail':!![]},'set':function(_0x36e124){if(_0x36e124){this[_0x834e('0x6')](_0x834e('0xe'),_0x36e124[_0x834e('0xf')]());}}},'role':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x11'),'user',_0x834e('0x12'),_0x834e('0x13')),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x834e('0x4')],'defaultValue':_0x834e('0x14')},'internal':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':![],'unique':_0x834e('0xd'),'set':function(_0x50e860){this[_0x834e('0x6')](_0x834e('0xd'),_0x50e860);this['setDataValue'](_0x834e('0x16'),_0x50e860);this['setDataValue'](_0x834e('0x9'),util[_0x834e('0xa')]('\x22%s\x22\x20<%s>',this[_0x834e('0xc')](_0x834e('0x8')),_0x50e860));}},'salt':{'type':Sequelize[_0x834e('0x4')]},'phone':{'type':Sequelize['STRING']},'mobile':{'type':Sequelize[_0x834e('0x4')]},'address':{'type':Sequelize[_0x834e('0x4')]},'zipcode':{'type':Sequelize[_0x834e('0x4')]},'userpic':{'type':Sequelize[_0x834e('0x4')]},'city':{'type':Sequelize[_0x834e('0x4')]},'country':{'type':Sequelize[_0x834e('0x4')]},'online':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize['DATE']},'voicePause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'pauseType':{'type':Sequelize['STRING'],'defaultValue':_0x834e('0x18')},'lastPauseAt':{'type':Sequelize[_0x834e('0x19')]},'chatCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x834e('0x15')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'description':{'type':Sequelize['STRING'],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x1a')},'ipaddr':{'type':Sequelize['STRING'],'allowNull':!![]},'port':{'type':Sequelize[_0x834e('0x15')](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'type':{'type':Sequelize['ENUM']('friend','user','peer'),'allowNull':!![],'defaultValue':_0x834e('0x1b')},'context':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x1c')},'callingpres':{'type':Sequelize['ENUM'](_0x834e('0x1d'),_0x834e('0x1e'),_0x834e('0x1f'),_0x834e('0x20'),_0x834e('0x21'),_0x834e('0x22'),_0x834e('0x23'),_0x834e('0x24')),'allowNull':!![]},'deny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'permit':{'type':Sequelize['STRING'],'allowNull':!![]},'secret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'md5secret':{'type':Sequelize['STRING'],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'transport':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x25'),'set':function(_0x2b3418){this[_0x834e('0x6')](_0x834e('0x26'),_0x2b3418?_0x2b3418[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x26'))?this[_0x834e('0xc')]('transport')[_0x834e('0x28')](','):null;},'comment':_0x834e('0x29')},'dtmfmode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2a'),'info',_0x834e('0x2b'),_0x834e('0x2c'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x30')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize['STRING'],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x834e('0x31'),'set':function(_0x6a3ac){this['setDataValue'](_0x834e('0x32'),_0x6a3ac?_0x6a3ac[_0x834e('0x27')](','):null);},'get':function(){return this['getDataValue']('nat')?this[_0x834e('0xc')](_0x834e('0x32'))[_0x834e('0x28')](','):null;},'comment':_0x834e('0x33')},'callgroup':{'type':Sequelize[_0x834e('0x4')]},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize[_0x834e('0x4')]},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize['STRING'],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x834e('0x4')]},'disallow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x834e('0x34')},'allow':{'type':Sequelize[_0x834e('0x4')],'allowNull':![],'defaultValue':_0x834e('0x35'),'set':function(_0x3c59af){this[_0x834e('0x6')]('allow',_0x3c59af?_0x3c59af[_0x834e('0x27')](';'):_0x834e('0x35'));},'get':function(){return this[_0x834e('0xc')]('allow')?this[_0x834e('0xc')](_0x834e('0x36'))['split'](';'):null;},'comment':_0x834e('0x37')},'autoframing':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'set':function(_0x4a18bb){this['setDataValue'](_0x834e('0x38'),_0x4a18bb?_0x4a18bb[_0x834e('0x27')](','):null);},'get':function(){return this[_0x834e('0xc')](_0x834e('0x38'))?this[_0x834e('0xc')](_0x834e('0x38'))[_0x834e('0x28')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x834e('0x10')]('yes','no',_0x834e('0x39')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![],'defaultValue':_0x834e('0x3a')},'amaflags':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'busylevel':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'template':{'type':Sequelize['STRING'],'allowNull':!![]},'videosupport':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x3b')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3c'),_0x834e('0x3d'),_0x834e('0x3e')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x3f'),_0x834e('0x40')),'allowNull':!![],'defaultValue':_0x834e('0x40')},'t38pt_usertpsource':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':_0x834e('0x2d')},'keepalive':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x834e('0x10')]('yes','no','fingerprint',_0x834e('0x41')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x834e('0x15')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x834e('0x10')]('active',_0x834e('0x42'),_0x834e('0x43')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize['STRING'],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x834e('0x10')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'call_limit':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'canreinvite':{'type':Sequelize['ENUM'](_0x834e('0x2d'),'no',_0x834e('0x2e'),_0x834e('0x2f'),_0x834e('0x44')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x834e('0x4')]},'resetPasswordExpires':{'type':Sequelize[_0x834e('0x19')]},'passwordResetAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x834e('0x45')]},'showWebBar':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0,'set':function(_0x1e4310){this[_0x834e('0x6')](_0x834e('0x46'),_0x1e4310);var _0x1659c8=this[_0x834e('0x47')]({'plain':!![]});switch(_0x1e4310){case 0x0:case 0x1:var _0x17b8e3=_0x1659c8[_0x834e('0x26')]?_[_0x834e('0x48')](_0x1659c8[_0x834e('0x26')])?_0x1659c8[_0x834e('0x26')][_0x834e('0x27')]():_0x1659c8[_0x834e('0x26')]:'udp';if(_0x17b8e3===_0x834e('0x49')){_0x17b8e3=_0x834e('0x25');}this[_0x834e('0x6')](_0x834e('0x26'),_0x17b8e3);this['setDataValue'](_0x834e('0x4a'),'no');this['setDataValue']('avpf',null);this[_0x834e('0x6')](_0x834e('0x4b'),null);this[_0x834e('0x6')](_0x834e('0x4c'),null);this[_0x834e('0x6')](_0x834e('0x4d'),null);this[_0x834e('0x6')](_0x834e('0x4e'),null);this['setDataValue'](_0x834e('0x4f'),null);this['setDataValue'](_0x834e('0x50'),null);this[_0x834e('0x6')]('dtlsprivatekey',null);this['setDataValue'](_0x834e('0x51'),'no');break;case 0x2:this[_0x834e('0x6')](_0x834e('0x26'),_0x834e('0x49'));this[_0x834e('0x6')]('encryption',_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x52'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4b'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4c'),_0x834e('0x2d'));this['setDataValue'](_0x834e('0x4d'),_0x834e('0x2d'));this[_0x834e('0x6')](_0x834e('0x4e'),'no');this['setDataValue'](_0x834e('0x4f'),'actpass');this['setDataValue']('dtlscertfile',_0x1659c8[_0x834e('0x50')]||_0x834e('0x53'));this['setDataValue'](_0x834e('0x54'),_0x1659c8[_0x834e('0x54')]||'/etc/pki/tls/private/motion.key');this[_0x834e('0x6')](_0x834e('0x51'),'yes');break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x346be5){this[_0x834e('0x6')](_0x834e('0x55'),_0x346be5?_0x346be5[_0x834e('0x27')](','):[]);},'get':function(){return this[_0x834e('0xc')]('permissions')?_[_0x834e('0x56')](this['getDataValue'](_0x834e('0x55'))[_0x834e('0x28')](','),function(_0x2c758c){return parseInt(_0x2c758c,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize['STRING']},'phoneBarNoReplyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarBusyNumber':{'type':Sequelize[_0x834e('0x4')]},'phoneBarUnconditional':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x834e('0x4')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x834e('0x10')](_0x834e('0x2d'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x834e('0x4')]},'phoneBarEnableJaws':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this['getDataValue']('phoneBarEnableScreenRecordingByAgent')?this[_0x834e('0xc')](_0x834e('0x57')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x834e('0x4')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x18ddac){if(typeof _0x18ddac===_0x834e('0x58')){var _0x5acf5c=_0x18ddac==='1'?!![]:_0x18ddac==='0'?![]:_0x18ddac===_0x834e('0x59')?!![]:_0x18ddac===_0x834e('0x5a')?![]:![];this[_0x834e('0x6')]('screenrecording',_0x5acf5c);}else{this[_0x834e('0x6')](_0x834e('0x5b'),_0x18ddac);}}},'blocked':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![],'set':function(_0x443633){this[_0x834e('0x6')]('blocked',_0x443633);if(_0x443633===!![]){this['setDataValue'](_0x834e('0x5c'),moment());this[_0x834e('0x6')]('loginAttempts',0x0);}else{this[_0x834e('0x6')]('blockedAt',null);}}},'blockedAt':{'type':Sequelize[_0x834e('0x19')],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x834e('0x15')](0x5)['UNSIGNED'],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x834e('0x17')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x834e('0x17')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize[_0x834e('0x15')],'defaultValue':0x0}};
\ No newline at end of file
index fcf5623..c0931b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b14=['undefined','count','limit','set','update','role','agent','emit','userNotification:recalc:','get','Users','user','Agents','telephone','filter','ignore','map','value','find','name','UserProfileResource','destroy','stack','send','User','rawAttributes','type','key','includes','password','getOptions','where','query','includeAll','include','userSetting','UserSetting','attributes','push','findAll','true','rows','length','dataValues','fax','all','show','params','model','keys','salt','filters','intersection','fields','openTabs','chat','sms','openchannel','mail','body','describe','addContacts','ids','omit','findById','validatePasswordPattern','max','internal','isNil','min_internal','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','sequelize','QueryTypes','from','voicemail','mailbox','VoiceMail','fullname','email','permissions','101','102','113','110','104','105','106','109','100','111','114','115','create','Unauthorized','admin','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','Telephones','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','authenticate','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','Setting','enforcePasswordHistory','securePassword','previousPasswords','validatePasswordHistory','passwordHistoryLimit','channel','online','loginInPause','interface','Unknown\x20channel','add','toLowerCase','penalty','spread','capitalize','QueueId','Queue:save','voice','VoiceQueue','format','SIP/%s','voicePause','upsert','removeQueues','isValidChannel','Queue:remove','UserVoiceQueueRt','addAvatar','userpic','file','filename','join','server/files/images/logos/default_profile.png','download','server/files/images/','getOpenTabs','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','findOne','CmContact','order','sort','pick','merge','options','hasOwnProperty','CmList','List','Tag','color','tag','nolimit','getQueues','Queue','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','getOpenchannelInteractions','MailInteraction','SmsInteraction','getSmsInteractions','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','phone','LOCAL/%s@from-sip/n','intrf','user:forcelogout','x-forwarded-for','connection','remoteAddress','socket','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','MemberReport','forEach','getChannels','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','bulkCreate','isMiddleware','resolve','pause','QueuePause','PAUSE','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','openchannelPause','smsPause','whatsappPause','pauseType','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','Team','getTeams','transaction','getAssociatedQueues','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getDataValue','isArray','Query\x20parameter\x20\x27ids\x27\x20is\x20required','flattenDeep','removeAgent','getLists','getAgents','getVoiceQueues','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','user_has_fax_interactions:save','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getScheduledCalls','CmHopper','$gt','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','firstName','lastName','Contact','dialActive','getApiKey','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','createApiKey','iat','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','removeApiKey','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','teams','queues','isEmpty','inbound','flatten','lower','col','toString','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','SELECT','select','field','ui.','ui.createdAt','_interactions','ui.UserId\x20=\x20?','moment','util','path','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APIBadRequestError','handleError','../../mysqldb','redis','./user.socket','register','defaults','localhost','client','http','request','then','User,\x20%s,\x20%s','request\x20sent','debug','error','code','message','info','result','catch','sendStatus','status','end','json','offset'];(function(_0x3bc82d,_0x59187f){var _0x2cfb3d=function(_0x515ac3){while(--_0x515ac3){_0x3bc82d['push'](_0x3bc82d['shift']());}};_0x2cfb3d(++_0x59187f);}(_0x5b14,0x166));var _0x45b1=function(_0xf1f37e,_0x159a20){_0xf1f37e=_0xf1f37e-0x0;var _0x2e3a6d=_0x5b14[_0xf1f37e];return _0x2e3a6d;};'use strict';var moment=require(_0x45b1('0x0'));var util=require(_0x45b1('0x1'));var path=require(_0x45b1('0x2'));var fs=require('fs');var _=require('lodash');var squel=require(_0x45b1('0x3'));var jayson=require(_0x45b1('0x4'));var Redis=require(_0x45b1('0x5'));var authService=require(_0x45b1('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x45b1('0x7'))(_0x45b1('0x8'));var utils=require(_0x45b1('0x9'));var config=require(_0x45b1('0xa'));var licenseUtil=require(_0x45b1('0xb'));var APIBadRequestError=require(_0x45b1('0xc'))[_0x45b1('0xd')];var APINotFoundError=require(_0x45b1('0xc'))['APINotFoundError'];var APIHandleError=require(_0x45b1('0xc'))[_0x45b1('0xe')];var db=require(_0x45b1('0xf'))['db'];var socket=require('socket.io-emitter')(new Redis(config[_0x45b1('0x10')]));require(_0x45b1('0x11'))[_0x45b1('0x12')](socket);config[_0x45b1('0x10')]=_[_0x45b1('0x13')](config['redis'],{'host':_0x45b1('0x14'),'port':0x18eb});var amiClient=jayson[_0x45b1('0x15')][_0x45b1('0x16')]({'port':0x232a});var values;function respondWithRpcPromise(_0x9d692c,_0xea3680,_0x4ef150,_0x4b9386){return new Promise(function(_0x4e0b4d,_0x19eca2){var _0xfb96b7=_0x4b9386||amiClient;return _0xfb96b7[_0x45b1('0x17')](_0x9d692c,_0x4ef150)[_0x45b1('0x18')](function(_0x26bd42){logger['info'](_0x45b1('0x19'),_0xea3680,_0x45b1('0x1a'));logger[_0x45b1('0x1b')]('User,\x20%s,\x20%s,\x20%s',_0xea3680,_0x45b1('0x1a'),JSON['stringify'](_0x26bd42));if(_0x26bd42['error']){if(_0x26bd42[_0x45b1('0x1c')][_0x45b1('0x1d')]===0x1f4){logger[_0x45b1('0x1c')](_0x45b1('0x19'),_0xea3680,_0x26bd42[_0x45b1('0x1c')][_0x45b1('0x1e')]);return _0x19eca2(_0x26bd42[_0x45b1('0x1c')][_0x45b1('0x1e')]);}logger[_0x45b1('0x1c')](_0x45b1('0x19'),_0xea3680,_0x26bd42[_0x45b1('0x1c')][_0x45b1('0x1e')]);return _0x4e0b4d(_0x26bd42['error']['message']);}else{logger[_0x45b1('0x1f')](_0x45b1('0x19'),_0xea3680,'request\x20sent');_0x4e0b4d(_0x26bd42[_0x45b1('0x20')][_0x45b1('0x1e')]);}})[_0x45b1('0x21')](function(_0x22fd82){logger[_0x45b1('0x1c')](_0x45b1('0x19'),_0xea3680,_0x22fd82);_0x19eca2(_0x22fd82);});});}function respondWithStatusCode(_0x3b72ea,_0x531b8c){_0x531b8c=_0x531b8c||0xcc;return function(_0x13634d){if(_0x13634d){return _0x3b72ea[_0x45b1('0x22')](_0x531b8c);}return _0x3b72ea[_0x45b1('0x23')](_0x531b8c)[_0x45b1('0x24')]();};}function respondWithResult(_0x362b3c,_0x2e6e7d){_0x2e6e7d=_0x2e6e7d||0xc8;return function(_0x4ce072){if(_0x4ce072){return _0x362b3c[_0x45b1('0x23')](_0x2e6e7d)[_0x45b1('0x25')](_0x4ce072);}};}function respondWithFilteredResult(_0x1e3235,_0x418c5e){return function(_0x84c623){if(_0x84c623){var _0x483a20=typeof _0x418c5e[_0x45b1('0x26')]===_0x45b1('0x27')&&typeof _0x418c5e['limit']===_0x45b1('0x27');var _0x9af316=_0x84c623[_0x45b1('0x28')];var _0x54d2eb=_0x483a20?0x0:_0x418c5e[_0x45b1('0x26')];var _0x2d6f40=_0x483a20?_0x84c623['count']:_0x418c5e['offset']+_0x418c5e[_0x45b1('0x29')];var _0x4e4a37;if(_0x2d6f40>=_0x9af316){_0x2d6f40=_0x9af316;_0x4e4a37=0xc8;}else{_0x4e4a37=0xce;}_0x1e3235[_0x45b1('0x23')](_0x4e4a37);return _0x1e3235[_0x45b1('0x2a')]('Content-Range',_0x54d2eb+'-'+_0x2d6f40+'/'+_0x9af316)[_0x45b1('0x25')](_0x84c623);}return null;};}function saveUpdates(_0x349955){return function(_0x7d6e1c){if(_0x7d6e1c){return _0x7d6e1c[_0x45b1('0x2b')](_0x349955)[_0x45b1('0x18')](function(_0x1aeb8a){if(_0x1aeb8a[_0x45b1('0x2c')]===_0x45b1('0x2d')){socket[_0x45b1('0x2e')](_0x45b1('0x2f')+_0x1aeb8a['id'],_0x1aeb8a);}return _0x1aeb8a;});}return null;};}function removeEntity(_0x5b5558){return function(_0x4c09ca){if(_0x4c09ca){return _0x4c09ca['destroy']()[_0x45b1('0x18')](function(){var _0x2db144=_0x4c09ca[_0x45b1('0x30')]({'plain':!![]});if(_0x2db144['role']==='admin')return;var _0x25b7af=[{'name':_0x45b1('0x31'),'value':_0x45b1('0x32'),'ignore':!![]},{'name':_0x45b1('0x33'),'value':_0x45b1('0x2d'),'ignore':![]},{'name':'Telephones','value':_0x45b1('0x34'),'ignore':![]}];var _0x184793=_(_0x25b7af)[_0x45b1('0x35')](_0x45b1('0x36'))[_0x45b1('0x37')](_0x45b1('0x38'))[_0x45b1('0x38')]();if(_['includes'](_0x184793,_0x2db144[_0x45b1('0x2c')])){return;}var _0x41aa29=_[_0x45b1('0x39')](_0x25b7af,[_0x45b1('0x38'),_0x2db144['role']])[_0x45b1('0x3a')];return db[_0x45b1('0x3b')][_0x45b1('0x3c')]({'where':{'type':_0x41aa29,'resourceId':_0x2db144['id']}})[_0x45b1('0x18')](function(){return _0x4c09ca;});})[_0x45b1('0x18')](function(){_0x5b5558[_0x45b1('0x23')](0xcc)[_0x45b1('0x24')]();});}};}function handleEntityNotFound(_0x293241){return function(_0x59b283){if(!_0x59b283){_0x293241[_0x45b1('0x22')](0x194);}return _0x59b283;};}function handleError(_0x581f9f,_0x9f8ee3){_0x9f8ee3=_0x9f8ee3||0x1f4;return function(_0x3b835f){logger[_0x45b1('0x1c')](_0x3b835f[_0x45b1('0x3d')]);if(_0x3b835f[_0x45b1('0x3a')]){delete _0x3b835f[_0x45b1('0x3a')];}_0x581f9f[_0x45b1('0x23')](_0x9f8ee3)[_0x45b1('0x3e')](_0x3b835f);};}exports['index']=function(_0x183ab0,_0x20a3fa){var _0x3df1e9={},_0x4bd421={'count':0x0,'rows':[]};var _0x2dcaa0=_(db[_0x45b1('0x3f')][_0x45b1('0x40')])['map'](function(_0x42b949){return{'name':_0x42b949['fieldName'],'type':_0x42b949[_0x45b1('0x41')][_0x45b1('0x42')]};})['filter'](function(_0xb10dc4){return!_[_0x45b1('0x43')]([_0x45b1('0x44'),'salt'],_0xb10dc4[_0x45b1('0x3a')]);})[_0x45b1('0x38')]();_0x3df1e9=qs[_0x45b1('0x45')](_0x2dcaa0,_0x183ab0);var _0x57a9b6={'where':_0x3df1e9[_0x45b1('0x46')]};return db['User']['count'](_0x57a9b6)['then'](function(_0x298390){_0x4bd421[_0x45b1('0x28')]=_0x298390;if(_0x183ab0[_0x45b1('0x47')][_0x45b1('0x48')]){_0x3df1e9[_0x45b1('0x49')]=[{'all':!![]}];}if(_0x183ab0[_0x45b1('0x47')][_0x45b1('0x4a')]==='true'){_0x3df1e9[_0x45b1('0x49')]=[{'model':db[_0x45b1('0x4b')],'as':'userSetting'}];}if(!_['includes'](_0x3df1e9['attributes'],'id')){_0x3df1e9[_0x45b1('0x4c')][_0x45b1('0x4d')]('id');}return db[_0x45b1('0x3f')][_0x45b1('0x4e')](_0x3df1e9);})['then'](function(_0x5393fe){_0x4bd421['rows']=_0x5393fe;if(_0x183ab0[_0x45b1('0x47')]['openTabs']===_0x45b1('0x4f')){var _0x529f07=[];for(var _0x33aba3=0x0;_0x33aba3<_0x4bd421[_0x45b1('0x50')][_0x45b1('0x51')];_0x33aba3++){_0x529f07['push'](get_open_tabs('chat',_0x4bd421[_0x45b1('0x50')][_0x33aba3][_0x45b1('0x52')]));_0x529f07['push'](get_open_tabs('sms',_0x4bd421['rows'][_0x33aba3][_0x45b1('0x52')]));_0x529f07['push'](get_open_tabs(_0x45b1('0x53'),_0x4bd421[_0x45b1('0x50')][_0x33aba3][_0x45b1('0x52')]));_0x529f07['push'](get_open_tabs('mail',_0x4bd421[_0x45b1('0x50')][_0x33aba3][_0x45b1('0x52')]));_0x529f07[_0x45b1('0x4d')](get_open_tabs('openchannel',_0x4bd421[_0x45b1('0x50')][_0x33aba3][_0x45b1('0x52')]));_0x529f07['push'](get_open_tabs('whatsapp',_0x4bd421[_0x45b1('0x50')][_0x33aba3]['dataValues']));}return Promise[_0x45b1('0x54')](_0x529f07)['then'](function(){return _0x4bd421;});}else{return _0x4bd421;}})[_0x45b1('0x18')](respondWithFilteredResult(_0x20a3fa,_0x3df1e9))[_0x45b1('0x21')](handleError(_0x20a3fa,null));};exports[_0x45b1('0x55')]=function(_0x1feb05,_0xc72740){var _0x34406d={'raw':![],'where':{'id':_0x1feb05[_0x45b1('0x56')]['id']}},_0x5b5fe1={};_0x5b5fe1[_0x45b1('0x57')]=_['differenceBy'](_[_0x45b1('0x58')](db[_0x45b1('0x3f')][_0x45b1('0x40')]),[_0x45b1('0x44'),_0x45b1('0x59')]);_0x5b5fe1['query']=_['keys'](_0x1feb05[_0x45b1('0x47')]);_0x5b5fe1[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x5b5fe1[_0x45b1('0x57')],_0x5b5fe1[_0x45b1('0x47')]);_0x34406d[_0x45b1('0x4c')]=_['intersection'](_0x5b5fe1['model'],qs['fields'](_0x1feb05['query'][_0x45b1('0x5c')]));_0x34406d[_0x45b1('0x4c')]=_0x34406d[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x34406d[_0x45b1('0x4c')]:_0x5b5fe1[_0x45b1('0x57')];if(_0x1feb05[_0x45b1('0x47')][_0x45b1('0x48')]){_0x34406d[_0x45b1('0x49')]=[{'all':!![]}];}if(_0x1feb05['query'][_0x45b1('0x4a')]===_0x45b1('0x4f')){_0x34406d['include']=[{'model':db[_0x45b1('0x4b')],'as':_0x45b1('0x4a')}];}_0x34406d=_['merge']({},_0x34406d,_0x1feb05['options']);if(!_[_0x45b1('0x43')](_0x34406d[_0x45b1('0x4c')],'id')){_0x34406d['attributes'][_0x45b1('0x4d')]('id');}return db[_0x45b1('0x3f')]['find'](_0x34406d)['then'](handleEntityNotFound(_0xc72740,null))[_0x45b1('0x18')](function(_0x5f49c9){var _0xeb92df=[];values=_0x5f49c9;if(_0x1feb05['query'][_0x45b1('0x5d')]===_0x45b1('0x4f')){_0xeb92df[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x5e'),_0x5f49c9[_0x45b1('0x52')]));_0xeb92df[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x5f'),_0x5f49c9[_0x45b1('0x52')]));_0xeb92df[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x60'),_0x5f49c9[_0x45b1('0x52')]));_0xeb92df['push'](get_open_tabs('whatsapp',_0x5f49c9[_0x45b1('0x52')]));_0xeb92df[_0x45b1('0x4d')](get_open_tabs('fax',_0x5f49c9[_0x45b1('0x52')]));_0xeb92df['push'](get_open_tabs(_0x45b1('0x61'),_0x5f49c9['dataValues']));return Promise['all'](_0xeb92df);}else{return values;}})[_0x45b1('0x18')](function(){return values;})[_0x45b1('0x18')](respondWithResult(_0xc72740,null))[_0x45b1('0x21')](handleError(_0xc72740,null));};exports[_0x45b1('0x2b')]=function(_0x8e1800,_0x721d0a){if(_0x8e1800['body']['id']){delete _0x8e1800[_0x45b1('0x62')]['id'];}delete _0x8e1800[_0x45b1('0x62')][_0x45b1('0x2c')];return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x8e1800[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x721d0a,null))[_0x45b1('0x18')](saveUpdates(_0x8e1800['body'],null))[_0x45b1('0x18')](respondWithResult(_0x721d0a,null))[_0x45b1('0x21')](handleError(_0x721d0a,null));};exports[_0x45b1('0x63')]=function(_0x45a688,_0x532b58){return db[_0x45b1('0x3f')][_0x45b1('0x63')]()[_0x45b1('0x18')](respondWithResult(_0x532b58,null))[_0x45b1('0x21')](handleError(_0x532b58,null));};exports[_0x45b1('0x64')]=function(_0x574564,_0x58bdd9){return db[_0x45b1('0x3f')]['find']({'where':{'id':_0x574564[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x58bdd9,null))[_0x45b1('0x18')](function(_0x4a01d5){if(_0x4a01d5){return _0x4a01d5[_0x45b1('0x64')](_0x574564[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x574564[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x58bdd9,null))[_0x45b1('0x21')](handleError(_0x58bdd9,null));};function validateUser(_0x4341c3){return new Promise(function(_0x58891b,_0xe57ba1){if(_0x4341c3['internal'])return _0x58891b(_0x4341c3);return db['Setting'][_0x45b1('0x67')](0x1)['then'](function(_0x4e28f5){if(_0x4e28f5['securePassword'])authService[_0x45b1('0x68')](_0x4341c3[_0x45b1('0x44')]);db['User'][_0x45b1('0x69')](_0x45b1('0x6a'))[_0x45b1('0x18')](function(_0x1195fd){if(_[_0x45b1('0x6b')](_0x1195fd)){_0x4341c3['internal']=_0x4e28f5[_0x45b1('0x6c')]||0x1;return;}if(_['isNil'](_0x4e28f5[_0x45b1('0x6c')])||_0x4e28f5[_0x45b1('0x6c')]===_0x1195fd){_0x4341c3['internal']=_0x1195fd+0x1;return;}if(_0x4e28f5[_0x45b1('0x6c')]>_0x1195fd){_0x4341c3[_0x45b1('0x6a')]=_0x4e28f5[_0x45b1('0x6c')];return;}return db['sequelize'][_0x45b1('0x47')](_0x45b1('0x6d'),{'type':db[_0x45b1('0x6e')][_0x45b1('0x6f')]['SELECT']})['then'](function(_0x568159){if(_0x568159&&_0x568159[_0x45b1('0x51')]){for(var _0x2535f5=0x0,_0x5e1acb=_0x568159['length'];_0x2535f5<_0x5e1acb&&_[_0x45b1('0x6b')](_0x4341c3[_0x45b1('0x6a')]);_0x2535f5++){if(_0x4e28f5[_0x45b1('0x6c')]<=_0x568159[_0x2535f5][_0x45b1('0x70')]){_0x4341c3[_0x45b1('0x6a')]=_0x568159[_0x2535f5][_0x45b1('0x70')];}else if(_0x4e28f5[_0x45b1('0x6c')]>_0x568159[_0x2535f5]['from']&&_0x4e28f5[_0x45b1('0x6c')]<=_0x568159[_0x2535f5]['to']){_0x4341c3[_0x45b1('0x6a')]=_0x4e28f5['min_internal'];}}}if(_[_0x45b1('0x6b')](_0x4341c3['internal'])){_0x4341c3['internal']=_0x1195fd+0x1;}return _0x58891b(_0x4341c3);});});})['catch'](function(_0xd6b861){_0xe57ba1(_0xd6b861);});});}function updateUser(_0x3376ef){return new Promise(function(_0x260c96,_0x394499){try{if(_0x3376ef[_0x45b1('0x71')]){_0x3376ef[_0x45b1('0x72')]=_0x3376ef[_0x45b1('0x6a')];_0x3376ef[_0x45b1('0x73')]={'mailbox':_0x3376ef[_0x45b1('0x6a')],'password':_0x3376ef[_0x45b1('0x44')],'fullname':_0x3376ef[_0x45b1('0x74')],'email':_0x3376ef[_0x45b1('0x75')]};}if(_0x3376ef[_0x45b1('0x2c')]==='agent'){if(!_0x3376ef[_0x45b1('0x76')])_0x3376ef[_0x45b1('0x76')]=[_0x45b1('0x77'),_0x45b1('0x78'),'103',_0x45b1('0x79'),_0x45b1('0x7a'),_0x45b1('0x7b'),_0x45b1('0x7c'),_0x45b1('0x7d'),'107','108',_0x45b1('0x7e'),_0x45b1('0x7f'),_0x45b1('0x80'),_0x45b1('0x81'),_0x45b1('0x82')];}_0x260c96(_0x3376ef);}catch(_0x45015e){_0x394499(_0x45015e);}});}exports[_0x45b1('0x83')]=function(_0x2d8c87,_0x14b63d){if(_0x2d8c87[_0x45b1('0x32')][_0x45b1('0x2c')]===_0x45b1('0x2d'))throw new Error(_0x45b1('0x84'));if(_0x2d8c87[_0x45b1('0x62')][_0x45b1('0x2c')]===_0x45b1('0x32')&&_0x2d8c87[_0x45b1('0x32')][_0x45b1('0x2c')]!==_0x45b1('0x85')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_0x2d8c87[_0x45b1('0x62')][_0x45b1('0x2c')]===_0x45b1('0x85')&&_0x2d8c87[_0x45b1('0x32')][_0x45b1('0x2c')]!==_0x45b1('0x85')){throw new Error(_0x45b1('0x86'));}return licenseUtil[_0x45b1('0x87')]([_0x2d8c87['body']])[_0x45b1('0x18')](function(){return validateUser(_0x2d8c87[_0x45b1('0x62')]);})[_0x45b1('0x18')](function(_0xbb8f3f){return updateUser(_0xbb8f3f)[_0x45b1('0x18')](function(_0x198888){if(_0x198888['role']==='admin'){_0x198888[_0x45b1('0x88')]=_0x2d8c87[_0x45b1('0x32')]['settingsEnabled'];delete _0x198888[_0x45b1('0x89')];}return _0x198888;});})[_0x45b1('0x18')](function(_0x36c77f){return db['User'][_0x45b1('0x83')](_0x36c77f,{'include':[{'model':db[_0x45b1('0x73')],'as':_0x45b1('0x73')}]});})['then'](function(_0x37431e){if(_0x2d8c87['body'][_0x45b1('0x2c')]==='user')return _0x37431e;if(_0x2d8c87[_0x45b1('0x32')][_0x45b1('0x2c')]!=='user')return _0x37431e;return db[_0x45b1('0x8a')]['find']({'where':{'name':_0x37431e[_0x45b1('0x2c')]===_0x45b1('0x2d')?'Agents':_0x45b1('0x8b'),'userProfileId':_0x2d8c87[_0x45b1('0x32')][_0x45b1('0x89')]},'raw':!![]})['then'](function(_0x209115){if(!_0x209115||_0x209115[_0x45b1('0x8c')]!=0x0)return _0x37431e;return db['UserProfileResource'][_0x45b1('0x83')]({'name':_0x37431e[_0x45b1('0x3a')],'resourceId':_0x37431e['id'],'type':_0x209115[_0x45b1('0x3a')],'sectionId':_0x209115['id']},{})[_0x45b1('0x18')](function(){return _0x37431e;});})[_0x45b1('0x21')](function(_0x15da38){logger[_0x45b1('0x1c')](_0x45b1('0x8d'),_0x15da38);throw _0x15da38;});})['then'](respondWithResult(_0x14b63d,0xc9))[_0x45b1('0x21')](handleError(_0x14b63d,null));};exports['bulkCreate']=function(_0x570af9,_0x15e515){var _0x52d9be=_0x570af9[_0x45b1('0x62')];var _0x3e4635=[];if(_0x570af9[_0x45b1('0x32')][_0x45b1('0x2c')]==='agent')throw new Error(_0x45b1('0x84'));if(_[_0x45b1('0x8e')](_0x52d9be,['role',_0x45b1('0x32')])&&_0x570af9['user']['role']!==_0x45b1('0x85')){throw new Error(_0x45b1('0x8f'));}if(_[_0x45b1('0x8e')](_0x52d9be,['role',_0x45b1('0x85')])&&_0x570af9[_0x45b1('0x32')][_0x45b1('0x2c')]!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x52d9be)['then'](function(){return validateUser(_0x52d9be[0x0]);})[_0x45b1('0x18')](function(){for(var _0xaee297=0x1;_0xaee297<_0x52d9be['length'];_0xaee297++){var _0x46f981=_0x52d9be[_0xaee297-0x1][_0x45b1('0x6a')];if(!_0x52d9be[_0xaee297][_0x45b1('0x6a')])_0x52d9be[_0xaee297]['internal']=_0x46f981+0x1;_0x3e4635[_0x45b1('0x4d')](validateUser(_0x52d9be[_0xaee297]));}return Promise['all'](_0x3e4635);})[_0x45b1('0x18')](function(){_0x3e4635=[];for(var _0x3af32b=0x0;_0x3af32b<_0x52d9be[_0x45b1('0x51')];_0x3af32b++){_0x3e4635[_0x45b1('0x4d')](updateUser(_0x52d9be[_0x3af32b]));}return Promise['all'](_0x3e4635);})[_0x45b1('0x18')](function(){_0x3e4635=_0x52d9be['map'](function(_0xc482c6){return db['User']['create'](_0xc482c6,{'include':[{'model':db['VoiceMail'],'as':_0x45b1('0x73')}]})[_0x45b1('0x18')](function(_0x1ff044){_0xc482c6['id']=_0x1ff044['id'];return _0xc482c6;});});return Promise['all'](_0x3e4635);})[_0x45b1('0x18')](function(_0x757e6b){if(_0x570af9['body'][_0x45b1('0x2c')]===_0x45b1('0x32'))return _0x757e6b;if(_0x570af9[_0x45b1('0x32')][_0x45b1('0x2c')]!==_0x45b1('0x32'))return _0x757e6b;var _0x52e7a9=_['some'](_0x757e6b,function(_0x353ad7){return _0x353ad7[_0x45b1('0x2c')]===_0x45b1('0x2d')||_0x353ad7['role']===_0x45b1('0x34');});if(!_0x52e7a9)return _0x757e6b;return db[_0x45b1('0x8a')][_0x45b1('0x4e')]({'where':{'name':{'$or':[_0x45b1('0x33'),_0x45b1('0x8b')]},'userProfileId':_0x570af9['user'][_0x45b1('0x89')]},'raw':!![]})[_0x45b1('0x18')](function(_0x2a6fc7){if(_['isEmpty'](_0x2a6fc7)||!_[_0x45b1('0x8e')](_0x2a6fc7,[_0x45b1('0x8c'),0x0]))return _0x757e6b;_0x3e4635=[];var _0x4c1b49=_(_0x2a6fc7)['map'](function(_0x452273){if(_0x452273[_0x45b1('0x8c')]===0x1)return;return _0x452273['name']===_0x45b1('0x33')?_0x45b1('0x2d'):_0x45b1('0x34');})['compact']()[_0x45b1('0x38')]();for(var _0x3933cf=0x0;_0x3933cf<_0x757e6b[_0x45b1('0x51')];_0x3933cf++){if(!_[_0x45b1('0x43')](_0x4c1b49,_0x757e6b[_0x3933cf][_0x45b1('0x2c')]))return;var _0x46924a=_0x757e6b[_0x3933cf][_0x45b1('0x2c')]===_0x45b1('0x2d')?_0x45b1('0x33'):'Telephones';_0x3e4635[_0x45b1('0x4d')](db[_0x45b1('0x3b')]['create']({'name':_0x757e6b[_0x3933cf][_0x45b1('0x3a')],'resourceId':_0x757e6b[_0x3933cf]['id'],'type':_0x46924a,'sectionId':_[_0x45b1('0x39')](_0x2a6fc7,['name',_0x46924a])['id']},{}));}return Promise[_0x45b1('0x54')](_0x3e4635);});})['then'](respondWithResult(_0x15e515,0xc9))['catch'](handleError(_0x15e515,null));};exports[_0x45b1('0x90')]=function(_0x1ff139,_0x1377cb){if(_0x1ff139[_0x45b1('0x62')]['id']){delete _0x1ff139[_0x45b1('0x62')]['id'];}return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x1ff139[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](function(_0x191a14){if(!_0x191a14)return null;if(_0x191a14['id']===_0x1ff139[_0x45b1('0x32')]['id']){if(!_0x1ff139[_0x45b1('0x62')][_0x45b1('0x91')]||!_0x1ff139['body'][_0x45b1('0x92')]){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0x95'));}if(!_0x191a14[_0x45b1('0x96')](_0x1ff139[_0x45b1('0x62')]['oldPassword'])){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0x97'));}if(_0x1ff139['body'][_0x45b1('0x91')]===_0x1ff139[_0x45b1('0x62')][_0x45b1('0x92')]){throw new db[(_0x45b1('0x93'))]['ValidationError'](_0x45b1('0x98'));}}else if(_0x1ff139[_0x45b1('0x32')][_0x45b1('0x2c')]==='admin'){if(!_0x1ff139[_0x45b1('0x62')][_0x45b1('0x92')]){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x1ff139['user'][_0x45b1('0x2c')]===_0x45b1('0x32')){if(!_0x1ff139[_0x45b1('0x62')]['newPassword']){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0x99'));}if(_0x191a14[_0x45b1('0x2c')]!=='agent'){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0x84'));}}else{throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0x84'));}return _0x191a14;})['then'](handleEntityNotFound(_0x1377cb,null))['then'](function(_0x2dbadb){return db[_0x45b1('0x9a')]['findOne']({'attributes':['id','securePassword',_0x45b1('0x9b'),'passwordHistoryLimit']})[_0x45b1('0x18')](function(_0xfee84e){if(_0xfee84e[_0x45b1('0x9c')])authService[_0x45b1('0x68')](_0x1ff139[_0x45b1('0x62')]['newPassword']);if(!_0xfee84e[_0x45b1('0x9b')]||!_0x2dbadb[_0x45b1('0x9d')])return _0x2dbadb;authService[_0x45b1('0x9e')](_0x1ff139[_0x45b1('0x62')]['newPassword'],_0x2dbadb[_0x45b1('0x9d')],_0xfee84e[_0x45b1('0x9f')]);return _0x2dbadb;})['then'](saveUpdates({'password':_0x1ff139[_0x45b1('0x62')][_0x45b1('0x92')],'passwordResetAt':_0x1ff139['user']['id']==_0x1ff139['params']['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x1ff139['body'][_0x45b1('0x92')],_0x2dbadb['previousPasswords'])},null));})['then'](respondWithResult(_0x1377cb,null))[_0x45b1('0x21')](handleError(_0x1377cb,null));};exports['addQueues']=function(_0x591ec1,_0x4c9ce6){var _0x343e13=_0x591ec1[_0x45b1('0x62')][_0x45b1('0xa0')];return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x591ec1[_0x45b1('0x56')]['id']},'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x2c'),_0x45b1('0xa1'),_0x45b1('0xa2'),'voicePause',_0x45b1('0xa3')]})['then'](handleEntityNotFound(_0x4c9ce6,null))[_0x45b1('0x18')](function(_0x4710be){if(_0x4710be){if(!utils['isValidChannel'](_0x343e13)){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0xa4'));}return _0x4710be[_0x45b1('0xa5')+_['capitalize'](_0x343e13[_0x45b1('0xa6')]())+'Queues'](_0x591ec1[_0x45b1('0x62')][_0x45b1('0x65')],{'penalty':_0x591ec1[_0x45b1('0x62')][_0x45b1('0xa7')]||0x0})[_0x45b1('0xa8')](function(_0x3e990d){for(var _0x186153=0x0;_0x186153<_0x591ec1[_0x45b1('0x62')]['ids'][_0x45b1('0x51')];_0x186153+=0x1){var _0x5a3454={'UserId':Number(_0x591ec1[_0x45b1('0x56')]['id'])};_0x5a3454[_[_0x45b1('0xa9')](_0x343e13[_0x45b1('0xa6')]())+_0x45b1('0xaa')]=Number(_0x591ec1[_0x45b1('0x62')]['ids'][_0x186153]);socket['emit'](_0x45b1('0x32')+_[_0x45b1('0xa9')](_0x343e13['toLowerCase']())+_0x45b1('0xab'),_0x5a3454);}return _0x3e990d;})['then'](function(){if(_0x343e13===_0x45b1('0xac')){return db[_0x45b1('0xad')][_0x45b1('0x4e')]({'where':{'id':_0x591ec1['body'][_0x45b1('0x65')]||[]},'raw':!![],'attributes':['id','name']});}})[_0x45b1('0x18')](function(_0x19ddcb){var _0x19f053=_0x4710be[_0x45b1('0x30')]({'plain':!![]});var _0x32a860=[];if(_0x343e13===_0x45b1('0xac')&&_0x19f053[_0x45b1('0x2c')]==='agent'&&_0x19f053[_0x45b1('0xa1')]){for(let _0x146363=0x0;_0x146363<_0x19ddcb[_0x45b1('0x51')];_0x146363+=0x1){_0x32a860[_0x45b1('0x4d')]({'membername':_0x19f053[_0x45b1('0x3a')],'UserId':_0x19f053['id'],'queue_name':_0x19ddcb[_0x146363][_0x45b1('0x3a')],'VoiceQueueId':_0x19ddcb[_0x146363]['id'],'interface':_[_0x45b1('0x6b')](_0x19f053[_0x45b1('0xa3')])?util[_0x45b1('0xae')](_0x45b1('0xaf'),_0x19f053[_0x45b1('0x3a')]):_0x19f053[_0x45b1('0xa3')],'paused':_0x19f053[_0x45b1('0xb0')]||![],'penalty':_0x591ec1['body']['penalty']||0x0});}return Promise[_0x45b1('0x54')](_0x32a860[_0x45b1('0x37')](function(_0x50cd93){return db['UserVoiceQueueRt'][_0x45b1('0xb1')](_0x50cd93);}));}return _0x4710be;});}})[_0x45b1('0x18')](respondWithStatusCode(_0x4c9ce6,null))[_0x45b1('0x21')](handleError(_0x4c9ce6,null));};exports[_0x45b1('0xb2')]=function(_0x50ad6c,_0x3f68e8){var _0x5aec63,_0xcce087;return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x50ad6c[_0x45b1('0x56')]['id']},'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x2c')]})[_0x45b1('0x18')](handleEntityNotFound(_0x3f68e8,null))[_0x45b1('0x18')](function(_0x4d0632){if(_0x4d0632){_0x5aec63=_0x4d0632;if(!_0x50ad6c[_0x45b1('0x47')]['channel']||!utils[_0x45b1('0xb3')](_0x50ad6c['query'][_0x45b1('0xa0')])){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0xa4'));}return _0x4d0632['remove'+_[_0x45b1('0xa9')](_0x50ad6c[_0x45b1('0x47')][_0x45b1('0xa0')][_0x45b1('0xa6')]())+'Queues'](_0x50ad6c['query']['ids']);}})[_0x45b1('0x18')](function(_0x5d8e30){if(_['isArray'](_0x50ad6c[_0x45b1('0x47')][_0x45b1('0x65')])){for(var _0x3e971a=0x0;_0x3e971a<_0x50ad6c[_0x45b1('0x47')][_0x45b1('0x65')][_0x45b1('0x51')];_0x3e971a+=0x1){_0xcce087={'UserId':Number(_0x50ad6c[_0x45b1('0x56')]['id'])};_0xcce087[_['capitalize'](_0x50ad6c['query'][_0x45b1('0xa0')]['toLowerCase']())+_0x45b1('0xaa')]=Number(_0x50ad6c['query'][_0x45b1('0x65')][_0x3e971a]);socket[_0x45b1('0x2e')]('user'+_[_0x45b1('0xa9')](_0x50ad6c[_0x45b1('0x47')][_0x45b1('0xa0')]['toLowerCase']())+'Queue:remove',_0xcce087);}}else{_0xcce087={'UserId':Number(_0x50ad6c['params']['id'])};_0xcce087[_[_0x45b1('0xa9')](_0x50ad6c[_0x45b1('0x47')][_0x45b1('0xa0')][_0x45b1('0xa6')]())+_0x45b1('0xaa')]=Number(_0x50ad6c[_0x45b1('0x47')][_0x45b1('0x65')]);socket['emit']('user'+_[_0x45b1('0xa9')](_0x50ad6c['query'][_0x45b1('0xa0')]['toLowerCase']())+_0x45b1('0xb4'),_0xcce087);}return _0x5d8e30;})['then'](function(){if(_0x50ad6c[_0x45b1('0x47')][_0x45b1('0xa0')]===_0x45b1('0xac')){return db[_0x45b1('0xb5')][_0x45b1('0x3c')]({'where':{'UserId':_0x50ad6c[_0x45b1('0x56')]['id'],'VoiceQueueId':_0x50ad6c[_0x45b1('0x47')][_0x45b1('0x65')]},'individualHooks':!![]})['then'](function(){return _0x5aec63;});}return _0x5aec63;})['then'](respondWithStatusCode(_0x3f68e8,null))[_0x45b1('0x21')](handleError(_0x3f68e8,null));};exports[_0x45b1('0xb6')]=function(_0x38f4bf,_0x3a710d){_0x38f4bf['body'][_0x45b1('0xb7')]=_0x38f4bf[_0x45b1('0xb8')][_0x45b1('0xb9')];return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x38f4bf[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3a710d,null))[_0x45b1('0x18')](saveUpdates(_0x38f4bf['body'],null))[_0x45b1('0x18')](respondWithResult(_0x3a710d,null))['catch'](handleError(_0x3a710d,null));};exports['getAvatar']=function(_0x2a3c6b,_0x3ea4ec){var _0x576b16=path[_0x45b1('0xba')](config['root'],_0x45b1('0xbb'));return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x2a3c6b['params']['id']},'attributes':['id',_0x45b1('0xb7')],'raw':!![]})['then'](handleEntityNotFound(_0x3ea4ec,null))[_0x45b1('0x18')](function(_0x59f22d){if(_0x59f22d){if(_[_0x45b1('0x6b')](_0x59f22d['userpic'])){return _0x3ea4ec[_0x45b1('0xbc')](_0x576b16);}else{if(!fs['existsSync'](path[_0x45b1('0xba')](config['root'],_0x45b1('0xbd'),_0x59f22d[_0x45b1('0xb7')]))){return _0x3ea4ec[_0x45b1('0xbc')](_0x576b16);}return _0x3ea4ec[_0x45b1('0xbc')](path[_0x45b1('0xba')](config['root'],_0x45b1('0xbd'),_0x59f22d[_0x45b1('0xb7')]));}}})[_0x45b1('0x21')](handleError(_0x3ea4ec,null));};exports[_0x45b1('0xbe')]=function(_0x4d8269,_0x4e67e0){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x4d8269[_0x45b1('0x56')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x4e67e0,null))[_0x45b1('0x18')](function(_0x59d90d){var _0x2651f1=[];values=_0x59d90d[_0x45b1('0x52')];_0x2651f1['push'](get_open_tabs(_0x45b1('0x5e'),_0x59d90d[_0x45b1('0x52')]));_0x2651f1[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x5f'),_0x59d90d[_0x45b1('0x52')]));_0x2651f1[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x60'),_0x59d90d[_0x45b1('0x52')]));_0x2651f1[_0x45b1('0x4d')](get_open_tabs('whatsapp',_0x59d90d[_0x45b1('0x52')]));_0x2651f1[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x53'),_0x59d90d[_0x45b1('0x52')]));_0x2651f1[_0x45b1('0x4d')](get_open_tabs(_0x45b1('0x61'),_0x59d90d[_0x45b1('0x52')]));return Promise['all'](_0x2651f1);})[_0x45b1('0x18')](function(_0xd51549){if(_0xd51549){var _0x596546=_['map'](values['ChatOpenTabs'],function(_0x5f39f5){return{'channel':'CHAT','id':_0x5f39f5['id'],'createdAt':_0x5f39f5[_0x45b1('0xbf')]};});var _0x59594a=_[_0x45b1('0x37')](values[_0x45b1('0xc0')],function(_0x4a9eae){return{'channel':_0x45b1('0xc1'),'id':_0x4a9eae['id'],'createdAt':_0x4a9eae[_0x45b1('0xbf')]};});var _0x3cdd5b=_[_0x45b1('0x37')](values[_0x45b1('0xc2')],function(_0x2ae700){return{'channel':_0x45b1('0xc3'),'id':_0x2ae700['id'],'createdAt':_0x2ae700['createdAt']};});var _0x44016e=_['map'](values[_0x45b1('0xc4')],function(_0x2efced){return{'channel':'MAIL','id':_0x2efced['id'],'createdAt':_0x2efced[_0x45b1('0xbf')]};});var _0x3aaf64=_[_0x45b1('0x37')](values[_0x45b1('0xc5')],function(_0xb830e0){return{'channel':_0x45b1('0xc6'),'id':_0xb830e0['id'],'createdAt':_0xb830e0[_0x45b1('0xbf')]};});var _0x444d5d=_[_0x45b1('0x37')](values[_0x45b1('0xc7')],function(_0x1272d1){return{'channel':_0x45b1('0xc8'),'id':_0x1272d1['id'],'createdAt':_0x1272d1[_0x45b1('0xbf')]};});var _0x486b88=_[_0x45b1('0xc9')](_0x596546,_0x59594a,_0x3cdd5b,_0x44016e,_0x3aaf64,_0x444d5d);var _0x20c7f3={'count':_0x486b88[_0x45b1('0x51')],'rows':_0x486b88};return _0x20c7f3;}else return null;})[_0x45b1('0x18')](respondWithResult(_0x4e67e0,null))[_0x45b1('0x21')](handleError(_0x4e67e0,null));};exports[_0x45b1('0xca')]=function(_0x144478,_0x565240){var _0x321ed8={};var _0x203b9e={};var _0x3e3b21;var _0x35e87d;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x144478['params']['id']}})['then'](handleEntityNotFound(_0x565240,null))['then'](function(_0x582a98){if(_0x582a98){_0x3e3b21=_0x582a98;_0x203b9e['model']=_[_0x45b1('0x58')](db[_0x45b1('0xcc')][_0x45b1('0x40')]);_0x203b9e['query']=_[_0x45b1('0x58')](_0x144478[_0x45b1('0x47')]);_0x203b9e['filters']=_[_0x45b1('0x5b')](_0x203b9e[_0x45b1('0x57')],_0x203b9e[_0x45b1('0x47')]);_0x321ed8['attributes']=_[_0x45b1('0x5b')](_0x203b9e[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x144478[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x321ed8['attributes']=_0x321ed8[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x321ed8[_0x45b1('0x4c')]:_0x203b9e[_0x45b1('0x57')];_0x321ed8[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x144478[_0x45b1('0x47')][_0x45b1('0xce')]);_0x321ed8[_0x45b1('0x46')]=qs['filters'](_[_0x45b1('0xcf')](_0x144478[_0x45b1('0x47')],_0x203b9e[_0x45b1('0x5a')]));if(_0x144478[_0x45b1('0x47')][_0x45b1('0x35')]){_0x321ed8['where']=_[_0x45b1('0xd0')](_0x321ed8[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x321ed8[_0x45b1('0x4c')],function(_0x2e7e4e){var _0x4fb9b3={};_0x4fb9b3[_0x2e7e4e]={'$like':'%'+_0x144478[_0x45b1('0x47')]['filter']+'%'};return _0x4fb9b3;})});}_0x321ed8=_['merge']({},_0x321ed8,_0x144478[_0x45b1('0xd1')]);return _0x3e3b21[_0x45b1('0xca')](_0x321ed8);}})[_0x45b1('0x18')](function(_0xd3a8fb){if(_0xd3a8fb){_0x35e87d=_0xd3a8fb[_0x45b1('0x51')];if(_0x144478[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0x48'))){_0x321ed8[_0x45b1('0x49')]=[{'model':db[_0x45b1('0xd3')],'as':_0x45b1('0xd4'),'required':![]},{'model':db[_0x45b1('0xd5')],'as':'Tags','attributes':['id',_0x45b1('0x3a'),_0x45b1('0xd6')],'where':_0x144478[_0x45b1('0x47')][_0x45b1('0xd7')]?{'id':_0x144478['query'][_0x45b1('0xd7')]}:undefined,'required':_0x144478[_0x45b1('0x47')][_0x45b1('0xd7')]?!![]:![]}];}if(!_0x144478[_0x45b1('0x47')]['hasOwnProperty'](_0x45b1('0xd8'))){_0x321ed8[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x144478['query'][_0x45b1('0x29')]);_0x321ed8['offset']=qs['offset'](_0x144478['query'][_0x45b1('0x26')]);}return _0x3e3b21[_0x45b1('0xca')](_0x321ed8);}})[_0x45b1('0x18')](function(_0x5518cb){if(_0x5518cb){return _0x5518cb?{'count':_0x35e87d,'rows':_0x5518cb}:null;}})[_0x45b1('0x18')](respondWithResult(_0x565240,null))[_0x45b1('0x21')](handleError(_0x565240,null));};exports[_0x45b1('0xd9')]=function(_0x14cf5e,_0x241df9){var _0x2ca3f3;var _0x5f2c1a={};var _0xc89135;return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x14cf5e[_0x45b1('0x56')]['id']},'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x2c')]})[_0x45b1('0x18')](handleEntityNotFound(_0x241df9,null))[_0x45b1('0x18')](function(_0x5b05a7){if(!utils['isValidChannel'](_0x14cf5e[_0x45b1('0x47')]['channel'])){throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0xa4'));}_0x2ca3f3=_0x5b05a7;var _0x367719={};_0x367719['model']=_[_0x45b1('0x58')](db[_[_0x45b1('0xa9')](_0x14cf5e[_0x45b1('0x47')]['channel'])+'Queue']['rawAttributes']);_0x367719['query']=_[_0x45b1('0x58')](_0x14cf5e['query']);_0x367719[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x367719[_0x45b1('0x57')],_0x367719[_0x45b1('0x47')]);_0x5f2c1a[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x367719[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x14cf5e['query'][_0x45b1('0x5c')]));_0x5f2c1a['attributes']=_0x5f2c1a[_0x45b1('0x4c')]['length']?_0x5f2c1a[_0x45b1('0x4c')]:_0x367719['model'];_0x5f2c1a[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x14cf5e['query'][_0x45b1('0xce')]);_0x5f2c1a[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x14cf5e[_0x45b1('0x47')],_0x367719['filters']));if(_0x14cf5e['query'][_0x45b1('0x35')]){_0x5f2c1a['where']=_[_0x45b1('0xd0')](_0x5f2c1a[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x5f2c1a[_0x45b1('0x4c')],function(_0x56fa2f){var _0x528f13={};_0x528f13[_0x56fa2f]={'$like':'%'+_0x14cf5e[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x528f13;})});}_0x5f2c1a=_['merge']({},_0x5f2c1a,_0x14cf5e[_0x45b1('0xd1')]);switch(_0x2ca3f3[_0x45b1('0x2c')]){case _0x45b1('0x85'):return db[_['capitalize'](_0x14cf5e[_0x45b1('0x47')][_0x45b1('0xa0')])+_0x45b1('0xda')][_0x45b1('0x4e')](_0x5f2c1a);case _0x45b1('0x32'):case _0x45b1('0x2d'):return _0x2ca3f3[_0x45b1('0x30')+_[_0x45b1('0xa9')](_0x14cf5e[_0x45b1('0x47')][_0x45b1('0xa0')])+'Queues'](_0x5f2c1a);default:throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))]('Unknown\x20role');}})[_0x45b1('0x18')](function(_0x35517c){_0xc89135=_0x35517c[_0x45b1('0x51')];if(!_0x14cf5e['query']['hasOwnProperty'](_0x45b1('0xd8'))){_0x5f2c1a[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x14cf5e[_0x45b1('0x47')]['limit']);_0x5f2c1a['offset']=qs['offset'](_0x14cf5e[_0x45b1('0x47')][_0x45b1('0x26')]);}switch(_0x2ca3f3['role']){case _0x45b1('0x85'):return db[_['capitalize'](_0x14cf5e[_0x45b1('0x47')][_0x45b1('0xa0')])+_0x45b1('0xda')][_0x45b1('0x4e')](_0x5f2c1a);case _0x45b1('0x32'):case _0x45b1('0x2d'):return _0x2ca3f3['get'+_[_0x45b1('0xa9')](_0x14cf5e[_0x45b1('0x47')][_0x45b1('0xa0')])+'Queues'](_0x5f2c1a);}})['then'](function(_0x250562){return{'count':_0xc89135,'rows':_0x250562};})[_0x45b1('0x18')](respondWithResult(_0x241df9,null))['catch'](handleError(_0x241df9,null));};exports[_0x45b1('0xdb')]=function(_0x4b4fa2,_0x2c8b93){var _0x2eabf5={};var _0x41e75e={};var _0x12b20e;var _0x59d2c8;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x4b4fa2[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x2c8b93,null))[_0x45b1('0x18')](function(_0x192cd3){if(_0x192cd3){_0x12b20e=_0x192cd3;_0x41e75e[_0x45b1('0x57')]=_['keys'](db[_0x45b1('0xb5')][_0x45b1('0x40')]);_0x41e75e[_0x45b1('0x47')]=_['keys'](_0x4b4fa2[_0x45b1('0x47')]);_0x41e75e[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x41e75e['model'],_0x41e75e['query']);_0x2eabf5['attributes']=_[_0x45b1('0x5b')](_0x41e75e[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x2eabf5[_0x45b1('0x4c')]=_0x2eabf5[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x2eabf5[_0x45b1('0x4c')]:_0x41e75e['model'];_0x2eabf5['order']=qs['sort'](_0x4b4fa2[_0x45b1('0x47')]['sort']);_0x2eabf5[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_['pick'](_0x4b4fa2[_0x45b1('0x47')],_0x41e75e[_0x45b1('0x5a')]));if(_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0x35')]){_0x2eabf5['where']=_[_0x45b1('0xd0')](_0x2eabf5[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x2eabf5[_0x45b1('0x4c')],function(_0x5725ac){var _0x41f7d4={};_0x41f7d4[_0x5725ac]={'$like':'%'+_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x41f7d4;})});}_0x2eabf5=_['merge']({},_0x2eabf5,_0x4b4fa2[_0x45b1('0xd1')]);return _0x12b20e[_0x45b1('0xdb')](_0x2eabf5);}})[_0x45b1('0x18')](function(_0x3b8241){if(_0x3b8241){_0x59d2c8=_0x3b8241['length'];if(!_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x2eabf5[_0x45b1('0x29')]=qs['limit'](_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0x29')]);_0x2eabf5[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x4b4fa2[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x12b20e[_0x45b1('0xdb')](_0x2eabf5);}})[_0x45b1('0x18')](function(_0x1c06a7){if(_0x1c06a7){return _0x1c06a7?{'count':_0x59d2c8,'rows':_0x1c06a7}:null;}})[_0x45b1('0x18')](respondWithResult(_0x2c8b93,null))['catch'](handleError(_0x2c8b93,null));};exports[_0x45b1('0xdc')]=function(_0x39cfb4,_0x4afc30){var _0x33465b={};var _0x5eac76={};var _0x265c6d;var _0x1839cb;return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x39cfb4[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4afc30,null))['then'](function(_0x3c0163){if(_0x3c0163){_0x265c6d=_0x3c0163;_0x5eac76[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0xdd')]['rawAttributes']);_0x5eac76[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x39cfb4[_0x45b1('0x47')]);_0x5eac76[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x5eac76[_0x45b1('0x57')],_0x5eac76[_0x45b1('0x47')]);_0x33465b[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x5eac76[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x39cfb4[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x33465b[_0x45b1('0x4c')]=_0x33465b['attributes'][_0x45b1('0x51')]?_0x33465b[_0x45b1('0x4c')]:_0x5eac76[_0x45b1('0x57')];_0x33465b[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x39cfb4[_0x45b1('0x47')][_0x45b1('0xce')]);_0x33465b['where']=qs[_0x45b1('0x5a')](_['pick'](_0x39cfb4[_0x45b1('0x47')],_0x5eac76[_0x45b1('0x5a')]));if(_0x39cfb4[_0x45b1('0x47')][_0x45b1('0x35')]){_0x33465b[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x33465b['where'],{'$or':_['map'](_0x33465b[_0x45b1('0x4c')],function(_0xc8a6bc){var _0x3380e2={};_0x3380e2[_0xc8a6bc]={'$like':'%'+_0x39cfb4['query']['filter']+'%'};return _0x3380e2;})});}_0x33465b=_[_0x45b1('0xd0')]({},_0x33465b,_0x39cfb4[_0x45b1('0xd1')]);return _0x265c6d[_0x45b1('0xdc')](_0x33465b);}})[_0x45b1('0x18')](function(_0x45affc){if(_0x45affc){_0x1839cb=_0x45affc[_0x45b1('0x51')];if(!_0x39cfb4[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x33465b[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x39cfb4[_0x45b1('0x47')][_0x45b1('0x29')]);_0x33465b[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x39cfb4[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x265c6d[_0x45b1('0xdc')](_0x33465b);}})[_0x45b1('0x18')](function(_0x5ebbf7){if(_0x5ebbf7){return _0x5ebbf7?{'count':_0x1839cb,'rows':_0x5ebbf7}:null;}})[_0x45b1('0x18')](respondWithResult(_0x4afc30,null))[_0x45b1('0x21')](handleError(_0x4afc30,null));};exports[_0x45b1('0xde')]=function(_0x321414,_0x5336f0){var _0x2a5f3f={'raw':!![],'where':{}};var _0x37604d={};var _0x3055e9={'count':0x0,'rows':[]};return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x321414[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x5336f0,null))[_0x45b1('0x18')](function(_0x1ac0b0){if(_0x1ac0b0){_0x37604d['model']=_[_0x45b1('0x58')](db[_0x45b1('0xdf')][_0x45b1('0x40')]);_0x37604d[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x321414[_0x45b1('0x47')]);_0x37604d[_0x45b1('0x5a')]=_['intersection'](_0x37604d['model'],_0x37604d[_0x45b1('0x47')]);_0x2a5f3f[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x37604d[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x321414[_0x45b1('0x47')]['fields']));_0x2a5f3f[_0x45b1('0x4c')]=_0x2a5f3f[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x2a5f3f[_0x45b1('0x4c')]:_0x37604d['model'];if(!_0x321414['query'][_0x45b1('0xd2')]('nolimit')){_0x2a5f3f[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x321414[_0x45b1('0x47')][_0x45b1('0x29')]);_0x2a5f3f[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x321414[_0x45b1('0x47')][_0x45b1('0x26')]);}_0x2a5f3f['order']=qs[_0x45b1('0xce')](_0x321414['query'][_0x45b1('0xce')]);_0x2a5f3f[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x321414[_0x45b1('0x47')],_0x37604d[_0x45b1('0x5a')]));_0x2a5f3f['where'][_0x45b1('0xe0')]=_0x1ac0b0['id'];if(_0x321414[_0x45b1('0x47')]['filter']){_0x2a5f3f[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x2a5f3f[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x2a5f3f[_0x45b1('0x4c')],function(_0x2254bb){var _0x3d065f={};_0x3d065f[_0x2254bb]={'$like':'%'+_0x321414[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x3d065f;})});}_0x2a5f3f=_['merge']({},_0x2a5f3f,_0x321414['options']);return db[_0x45b1('0xdf')][_0x45b1('0x28')]({'where':_0x2a5f3f[_0x45b1('0x46')]})[_0x45b1('0x18')](function(_0x439d05){_0x3055e9[_0x45b1('0x28')]=_0x439d05;if(_0x321414[_0x45b1('0x47')][_0x45b1('0x48')]){_0x2a5f3f[_0x45b1('0x49')]=[{'all':!![]}];}return db[_0x45b1('0xdf')][_0x45b1('0x4e')](_0x2a5f3f);})[_0x45b1('0x18')](function(_0x5aa440){_0x3055e9[_0x45b1('0x50')]=_0x5aa440;return _0x3055e9;});}})['then'](respondWithFilteredResult(_0x5336f0,_0x2a5f3f))[_0x45b1('0x21')](handleError(_0x5336f0,null));};exports[_0x45b1('0xe1')]=function(_0x147bb8,_0x3ebb1f){var _0x29c260={'raw':!![],'where':{}};var _0x4a89cd={};var _0x2f97f8={'count':0x0,'rows':[]};return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x147bb8[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3ebb1f,null))[_0x45b1('0x18')](function(_0x5756ef){if(_0x5756ef){_0x4a89cd['model']=_[_0x45b1('0x58')](db[_0x45b1('0xe2')][_0x45b1('0x40')]);_0x4a89cd[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x147bb8['query']);_0x4a89cd[_0x45b1('0x5a')]=_['intersection'](_0x4a89cd[_0x45b1('0x57')],_0x4a89cd[_0x45b1('0x47')]);_0x29c260[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x4a89cd[_0x45b1('0x57')],qs['fields'](_0x147bb8['query'][_0x45b1('0x5c')]));_0x29c260[_0x45b1('0x4c')]=_0x29c260['attributes']['length']?_0x29c260[_0x45b1('0x4c')]:_0x4a89cd[_0x45b1('0x57')];if(!_0x147bb8[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x29c260[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x147bb8[_0x45b1('0x47')][_0x45b1('0x29')]);_0x29c260['offset']=qs['offset'](_0x147bb8[_0x45b1('0x47')][_0x45b1('0x26')]);}_0x29c260[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x147bb8[_0x45b1('0x47')][_0x45b1('0xce')]);_0x29c260['where']=qs['filters'](_[_0x45b1('0xcf')](_0x147bb8['query'],_0x4a89cd[_0x45b1('0x5a')]));_0x29c260[_0x45b1('0x46')]['UserId']=_0x5756ef['id'];if(_0x147bb8[_0x45b1('0x47')][_0x45b1('0x35')]){_0x29c260[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x29c260[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x29c260['attributes'],function(_0x4ea497){var _0x40bd9e={};_0x40bd9e[_0x4ea497]={'$like':'%'+_0x147bb8['query'][_0x45b1('0x35')]+'%'};return _0x40bd9e;})});}_0x29c260=_[_0x45b1('0xd0')]({},_0x29c260,_0x147bb8[_0x45b1('0xd1')]);return db['ScreenRecording']['count']({'where':_0x29c260['where']})[_0x45b1('0x18')](function(_0x4f96a7){_0x2f97f8[_0x45b1('0x28')]=_0x4f96a7;if(_0x147bb8[_0x45b1('0x47')][_0x45b1('0x48')]){_0x29c260[_0x45b1('0x49')]=[{'all':!![]}];}return db[_0x45b1('0xe2')][_0x45b1('0x4e')](_0x29c260);})[_0x45b1('0x18')](function(_0x3b1985){_0x2f97f8[_0x45b1('0x50')]=_0x3b1985;return _0x2f97f8;});}})[_0x45b1('0x18')](respondWithFilteredResult(_0x3ebb1f,_0x29c260))[_0x45b1('0x21')](handleError(_0x3ebb1f,null));};exports[_0x45b1('0xe3')]=function(_0x2dd8e4,_0x3badd1){var _0x53c2cd={};var _0x51cdc4={};var _0x11c83d;var _0x270ee0;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x2dd8e4[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x3badd1,null))[_0x45b1('0x18')](function(_0x11337a){if(_0x11337a){_0x11c83d=_0x11337a;_0x51cdc4[_0x45b1('0x57')]=_[_0x45b1('0x58')](db['ChatInteraction'][_0x45b1('0x40')]);_0x51cdc4[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x2dd8e4[_0x45b1('0x47')]);_0x51cdc4[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x51cdc4['model'],_0x51cdc4[_0x45b1('0x47')]);_0x53c2cd[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x51cdc4[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x2dd8e4['query'][_0x45b1('0x5c')]));_0x53c2cd[_0x45b1('0x4c')]=_0x53c2cd[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x53c2cd[_0x45b1('0x4c')]:_0x51cdc4[_0x45b1('0x57')];_0x53c2cd[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x2dd8e4[_0x45b1('0x47')]['sort']);_0x53c2cd['where']=qs['filters'](_[_0x45b1('0xcf')](_0x2dd8e4[_0x45b1('0x47')],_0x51cdc4['filters']));if(_0x2dd8e4['query'][_0x45b1('0x35')]){_0x53c2cd[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x53c2cd[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x53c2cd[_0x45b1('0x4c')],function(_0xd7500){var _0x39794f={};_0x39794f[_0xd7500]={'$like':'%'+_0x2dd8e4[_0x45b1('0x47')]['filter']+'%'};return _0x39794f;})});}_0x53c2cd=_['merge']({},_0x53c2cd,_0x2dd8e4[_0x45b1('0xd1')]);return _0x11c83d[_0x45b1('0xe3')](_0x53c2cd);}})[_0x45b1('0x18')](function(_0x4f40fb){if(_0x4f40fb){_0x270ee0=_0x4f40fb[_0x45b1('0x51')];if(!_0x2dd8e4['query'][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x53c2cd[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x2dd8e4[_0x45b1('0x47')][_0x45b1('0x29')]);_0x53c2cd[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x2dd8e4[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x11c83d['getChatInteractions'](_0x53c2cd);}})[_0x45b1('0x18')](function(_0x328e5e){if(_0x328e5e){return _0x328e5e?{'count':_0x270ee0,'rows':_0x328e5e}:null;}})[_0x45b1('0x18')](respondWithResult(_0x3badd1,null))['catch'](handleError(_0x3badd1,null));};exports[_0x45b1('0xe4')]=function(_0x536293,_0x31425f){var _0x1e8f5e={};var _0x159eca={};var _0x347969;var _0x2ccbc6;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x536293[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x31425f,null))[_0x45b1('0x18')](function(_0x505857){if(_0x505857){_0x347969=_0x505857;_0x159eca['model']=_[_0x45b1('0x58')](db['OpenchannelInteraction']['rawAttributes']);_0x159eca['query']=_[_0x45b1('0x58')](_0x536293['query']);_0x159eca[_0x45b1('0x5a')]=_['intersection'](_0x159eca['model'],_0x159eca[_0x45b1('0x47')]);_0x1e8f5e[_0x45b1('0x4c')]=_['intersection'](_0x159eca[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x536293['query']['fields']));_0x1e8f5e[_0x45b1('0x4c')]=_0x1e8f5e[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x1e8f5e[_0x45b1('0x4c')]:_0x159eca[_0x45b1('0x57')];_0x1e8f5e[_0x45b1('0xcd')]=qs['sort'](_0x536293[_0x45b1('0x47')][_0x45b1('0xce')]);_0x1e8f5e[_0x45b1('0x46')]=qs['filters'](_[_0x45b1('0xcf')](_0x536293[_0x45b1('0x47')],_0x159eca['filters']));if(_0x536293[_0x45b1('0x47')][_0x45b1('0x35')]){_0x1e8f5e[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x1e8f5e[_0x45b1('0x46')],{'$or':_['map'](_0x1e8f5e[_0x45b1('0x4c')],function(_0x52da4a){var _0x55b92b={};_0x55b92b[_0x52da4a]={'$like':'%'+_0x536293[_0x45b1('0x47')]['filter']+'%'};return _0x55b92b;})});}_0x1e8f5e=_[_0x45b1('0xd0')]({},_0x1e8f5e,_0x536293[_0x45b1('0xd1')]);return _0x347969[_0x45b1('0xe4')](_0x1e8f5e);}})['then'](function(_0xb3383d){if(_0xb3383d){_0x2ccbc6=_0xb3383d[_0x45b1('0x51')];if(!_0x536293[_0x45b1('0x47')]['hasOwnProperty']('nolimit')){_0x1e8f5e['limit']=qs['limit'](_0x536293[_0x45b1('0x47')][_0x45b1('0x29')]);_0x1e8f5e['offset']=qs[_0x45b1('0x26')](_0x536293[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x347969[_0x45b1('0xe4')](_0x1e8f5e);}})[_0x45b1('0x18')](function(_0x30502b){if(_0x30502b){return _0x30502b?{'count':_0x2ccbc6,'rows':_0x30502b}:null;}})['then'](respondWithResult(_0x31425f,null))[_0x45b1('0x21')](handleError(_0x31425f,null));};exports['getMailInteractions']=function(_0x467916,_0xe4dc6e){var _0x276ffb={'raw':!![],'where':{}};var _0x1935ee={};var _0x4d36b4={'count':0x0,'rows':[]};return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x467916['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0xe4dc6e,null))['then'](function(_0x52bae6){if(_0x52bae6){_0x1935ee[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0xe5')]['rawAttributes']);_0x1935ee[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x467916['query']);_0x1935ee[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x1935ee['model'],_0x1935ee[_0x45b1('0x47')]);_0x276ffb[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x1935ee['model'],qs['fields'](_0x467916['query'][_0x45b1('0x5c')]));_0x276ffb[_0x45b1('0x4c')]=_0x276ffb['attributes'][_0x45b1('0x51')]?_0x276ffb[_0x45b1('0x4c')]:_0x1935ee[_0x45b1('0x57')];if(!_0x467916[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x276ffb[_0x45b1('0x29')]=qs['limit'](_0x467916['query']['limit']);_0x276ffb[_0x45b1('0x26')]=qs['offset'](_0x467916['query'][_0x45b1('0x26')]);}_0x276ffb[_0x45b1('0xcd')]=qs['sort'](_0x467916[_0x45b1('0x47')][_0x45b1('0xce')]);_0x276ffb[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x467916['query'],_0x1935ee[_0x45b1('0x5a')]));_0x276ffb[_0x45b1('0x46')]['UserId']=_0x52bae6['id'];if(_0x467916['query'][_0x45b1('0x35')]){_0x276ffb[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x276ffb[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x276ffb[_0x45b1('0x4c')],function(_0x165c5a){var _0x5f0fc4={};_0x5f0fc4[_0x165c5a]={'$like':'%'+_0x467916[_0x45b1('0x47')]['filter']+'%'};return _0x5f0fc4;})});}_0x276ffb=_[_0x45b1('0xd0')]({},_0x276ffb,_0x467916[_0x45b1('0xd1')]);return db[_0x45b1('0xe5')]['count']({'where':_0x276ffb[_0x45b1('0x46')]})[_0x45b1('0x18')](function(_0x39ea83){_0x4d36b4[_0x45b1('0x28')]=_0x39ea83;if(_0x467916['query'][_0x45b1('0x48')]){_0x276ffb[_0x45b1('0x49')]=[{'all':!![]}];}return db[_0x45b1('0xe5')][_0x45b1('0x4e')](_0x276ffb);})[_0x45b1('0x18')](function(_0x76b4b){_0x4d36b4[_0x45b1('0x50')]=_0x76b4b;return _0x4d36b4;});}})[_0x45b1('0x18')](respondWithFilteredResult(_0xe4dc6e,_0x276ffb))[_0x45b1('0x21')](handleError(_0xe4dc6e,null));};exports['getSmsInteractions']=function(_0x57bc46,_0x4e3c07){var _0x227d96={};var _0x3418d5={};var _0x253679;var _0x4a342f;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x57bc46[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x4e3c07,null))[_0x45b1('0x18')](function(_0x2d936f){if(_0x2d936f){_0x253679=_0x2d936f;_0x3418d5[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0xe6')][_0x45b1('0x40')]);_0x3418d5[_0x45b1('0x47')]=_['keys'](_0x57bc46[_0x45b1('0x47')]);_0x3418d5[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x3418d5['model'],_0x3418d5[_0x45b1('0x47')]);_0x227d96[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x3418d5['model'],qs[_0x45b1('0x5c')](_0x57bc46['query'][_0x45b1('0x5c')]));_0x227d96[_0x45b1('0x4c')]=_0x227d96[_0x45b1('0x4c')]['length']?_0x227d96[_0x45b1('0x4c')]:_0x3418d5[_0x45b1('0x57')];_0x227d96['order']=qs[_0x45b1('0xce')](_0x57bc46[_0x45b1('0x47')][_0x45b1('0xce')]);_0x227d96[_0x45b1('0x46')]=qs['filters'](_[_0x45b1('0xcf')](_0x57bc46[_0x45b1('0x47')],_0x3418d5[_0x45b1('0x5a')]));if(_0x57bc46['query'][_0x45b1('0x35')]){_0x227d96[_0x45b1('0x46')]=_['merge'](_0x227d96[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x227d96[_0x45b1('0x4c')],function(_0x13035a){var _0x5d197a={};_0x5d197a[_0x13035a]={'$like':'%'+_0x57bc46['query'][_0x45b1('0x35')]+'%'};return _0x5d197a;})});}_0x227d96=_['merge']({},_0x227d96,_0x57bc46['options']);return _0x253679[_0x45b1('0xe7')](_0x227d96);}})['then'](function(_0x2726ad){if(_0x2726ad){_0x4a342f=_0x2726ad[_0x45b1('0x51')];if(!_0x57bc46[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x227d96[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x57bc46['query']['limit']);_0x227d96['offset']=qs['offset'](_0x57bc46[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x253679[_0x45b1('0xe7')](_0x227d96);}})['then'](function(_0x1f17e2){if(_0x1f17e2){return _0x1f17e2?{'count':_0x4a342f,'rows':_0x1f17e2}:null;}})[_0x45b1('0x18')](respondWithResult(_0x4e3c07,null))[_0x45b1('0x21')](handleError(_0x4e3c07,null));};exports[_0x45b1('0xe8')]=function(_0x616bf4,_0x180260){var _0x5906de={};var _0x4f8a8f={};var _0x587c22;var _0x1c2d4;return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x616bf4[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x180260,null))[_0x45b1('0x18')](function(_0x4db39f){if(_0x4db39f){_0x587c22=_0x4db39f;_0x4f8a8f['model']=_[_0x45b1('0x58')](db[_0x45b1('0xe9')]['rawAttributes']);_0x4f8a8f['query']=_[_0x45b1('0x58')](_0x616bf4['query']);_0x4f8a8f[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x4f8a8f[_0x45b1('0x57')],_0x4f8a8f[_0x45b1('0x47')]);_0x5906de[_0x45b1('0x4c')]=_['intersection'](_0x4f8a8f[_0x45b1('0x57')],qs['fields'](_0x616bf4[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x5906de[_0x45b1('0x4c')]=_0x5906de['attributes']['length']?_0x5906de[_0x45b1('0x4c')]:_0x4f8a8f[_0x45b1('0x57')];_0x5906de[_0x45b1('0xcd')]=qs['sort'](_0x616bf4[_0x45b1('0x47')][_0x45b1('0xce')]);_0x5906de[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_['pick'](_0x616bf4[_0x45b1('0x47')],_0x4f8a8f['filters']));if(_0x616bf4[_0x45b1('0x47')][_0x45b1('0x35')]){_0x5906de['where']=_[_0x45b1('0xd0')](_0x5906de[_0x45b1('0x46')],{'$or':_['map'](_0x5906de[_0x45b1('0x4c')],function(_0x354cda){var _0x24be06={};_0x24be06[_0x354cda]={'$like':'%'+_0x616bf4['query']['filter']+'%'};return _0x24be06;})});}_0x5906de=_['merge']({},_0x5906de,_0x616bf4[_0x45b1('0xd1')]);return _0x587c22['getFaxInteractions'](_0x5906de);}})[_0x45b1('0x18')](function(_0x105fcb){if(_0x105fcb){_0x1c2d4=_0x105fcb[_0x45b1('0x51')];if(!_0x616bf4[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x5906de[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x616bf4[_0x45b1('0x47')][_0x45b1('0x29')]);_0x5906de[_0x45b1('0x26')]=qs['offset'](_0x616bf4[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x587c22[_0x45b1('0xe8')](_0x5906de);}})[_0x45b1('0x18')](function(_0x3620e){if(_0x3620e){return _0x3620e?{'count':_0x1c2d4,'rows':_0x3620e}:null;}})['then'](respondWithResult(_0x180260,null))[_0x45b1('0x21')](handleError(_0x180260,null));};exports[_0x45b1('0xea')]=function(_0x3eb895,_0xc190bd){var _0x4d6397={};var _0x59a315={};var _0x54ec7b;var _0x41ac49;return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x3eb895[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0xc190bd,null))[_0x45b1('0x18')](function(_0x28abed){if(_0x28abed){_0x54ec7b=_0x28abed;_0x59a315[_0x45b1('0x57')]=_['keys'](db[_0x45b1('0xeb')][_0x45b1('0x40')]);_0x59a315['query']=_[_0x45b1('0x58')](_0x3eb895[_0x45b1('0x47')]);_0x59a315[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x59a315[_0x45b1('0x57')],_0x59a315[_0x45b1('0x47')]);_0x4d6397[_0x45b1('0x4c')]=_['intersection'](_0x59a315[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x3eb895['query']['fields']));_0x4d6397[_0x45b1('0x4c')]=_0x4d6397[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x4d6397[_0x45b1('0x4c')]:_0x59a315[_0x45b1('0x57')];_0x4d6397['order']=qs[_0x45b1('0xce')](_0x3eb895[_0x45b1('0x47')]['sort']);_0x4d6397['where']=qs['filters'](_[_0x45b1('0xcf')](_0x3eb895[_0x45b1('0x47')],_0x59a315['filters']));if(_0x3eb895[_0x45b1('0x47')][_0x45b1('0x35')]){_0x4d6397[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x4d6397['where'],{'$or':_['map'](_0x4d6397[_0x45b1('0x4c')],function(_0x670a5c){var _0x2d306d={};_0x2d306d[_0x670a5c]={'$like':'%'+_0x3eb895[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x2d306d;})});}_0x4d6397=_[_0x45b1('0xd0')]({},_0x4d6397,_0x3eb895[_0x45b1('0xd1')]);return _0x54ec7b[_0x45b1('0xea')](_0x4d6397);}})[_0x45b1('0x18')](function(_0x2d9230){if(_0x2d9230){_0x41ac49=_0x2d9230[_0x45b1('0x51')];if(!_0x3eb895[_0x45b1('0x47')]['hasOwnProperty'](_0x45b1('0xd8'))){_0x4d6397[_0x45b1('0x29')]=qs['limit'](_0x3eb895[_0x45b1('0x47')][_0x45b1('0x29')]);_0x4d6397['offset']=qs['offset'](_0x3eb895['query'][_0x45b1('0x26')]);}return _0x54ec7b[_0x45b1('0xea')](_0x4d6397);}})[_0x45b1('0x18')](function(_0x487eb6){if(_0x487eb6){return _0x487eb6?{'count':_0x41ac49,'rows':_0x487eb6}:null;}})[_0x45b1('0x18')](respondWithResult(_0xc190bd,null))['catch'](handleError(_0xc190bd,null));};exports['login']=function(_0x4efc54,_0x119c4a,_0x39a547){var _0x3b9b04;var _0x4247bd;var _0x52d9d3;var _0x4bcc00=!_[_0x45b1('0x6b')](_0x4efc54[_0x45b1('0x56')]['id'])?_0x4efc54[_0x45b1('0x56')]['id']:!_[_0x45b1('0x6b')](_0x4efc54[_0x45b1('0x32')]['id'])?_0x4efc54['user']['id']:null;return db['User'][_0x45b1('0x39')]({'where':{'id':_0x4bcc00,'role':{'$or':[_0x45b1('0x85'),_0x45b1('0x32'),_0x45b1('0x2d')]}},'attributes':['id',_0x45b1('0x3a'),_0x45b1('0xec'),'mobile',_0x45b1('0x2c'),_0x45b1('0x6a'),_0x45b1('0xa2')]})[_0x45b1('0x18')](function(_0x376527){if(_0x376527){if(_0x376527[_0x45b1('0x2c')]===_0x45b1('0x2d')){_0x3b9b04=_0x376527;if(_0x4efc54[_0x45b1('0x62')]['interface']){_0x52d9d3=util[_0x45b1('0xae')](_0x45b1('0xed'),_0x3b9b04[_0x4efc54[_0x45b1('0x62')][_0x45b1('0xa3')]]);}else if(_0x4efc54['body'][_0x45b1('0xee')]){_0x52d9d3=util['format'](_0x45b1('0xaf'),_0x4efc54[_0x45b1('0x62')]['intrf']);}else{_0x52d9d3=util[_0x45b1('0xae')](_0x45b1('0xaf'),_0x3b9b04[_0x45b1('0x3a')]);}socket['to'](util[_0x45b1('0xae')]('user:%s',_0x3b9b04[_0x45b1('0x3a')]))[_0x45b1('0x2e')](_0x45b1('0xef'),{'user':{'id':_0x3b9b04['id'],'name':_0x3b9b04[_0x45b1('0x3a')]},'ip':_0x4efc54['headers'][_0x45b1('0xf0')]||_0x4efc54[_0x45b1('0xf1')][_0x45b1('0xf2')]||_0x4efc54[_0x45b1('0xf3')]['remoteAddress']||_0x4efc54[_0x45b1('0xf1')][_0x45b1('0xf3')][_0x45b1('0xf2')]});return db[_0x45b1('0xb5')][_0x45b1('0x3c')]({'where':{'membername':_0x3b9b04[_0x45b1('0x3a')]},'individualHooks':!![]});}}else{throw new db[(_0x45b1('0x93'))][(_0x45b1('0x94'))](_0x45b1('0xf4'));}})[_0x45b1('0x18')](function(){if(_0x3b9b04){return _0x3b9b04['getVoiceQueues']({'raw':!![]});}})[_0x45b1('0x18')](function(_0x1416f3){if(_0x3b9b04){if(_0x1416f3){_0x4247bd=_0x1416f3;if(_0x4247bd[_0x45b1('0x51')]){var _0x423d6f=_0x4247bd['map'](function(_0x3a485a){var _0x1f9b32={'membername':_0x3b9b04[_0x45b1('0x3a')],'UserId':_0x3b9b04['id'],'queue_name':_0x3a485a[_0x45b1('0x3a')],'VoiceQueueId':_0x3a485a['id'],'interface':_0x52d9d3,'paused':_0x3b9b04['loginInPause']||![],'penalty':_0x3a485a[_0x45b1('0xf5')]||0x0};return db['UserVoiceQueueRt'][_0x45b1('0xb1')](_0x1f9b32);});return Promise[_0x45b1('0x54')](_0x423d6f);}}}})[_0x45b1('0x18')](function(){if(_0x3b9b04){return db[_0x45b1('0xf6')][_0x45b1('0x4e')]({'where':{'membername':_0x3b9b04[_0x45b1('0x3a')],'exitAt':null}});}})[_0x45b1('0x18')](function(_0x48fc47){if(_0x3b9b04){var _0x398114=[];_0x48fc47[_0x45b1('0xf7')](function(_0x380f77){_0x398114[_0x45b1('0x4d')](_0x380f77[_0x45b1('0x2b')]({'exitAt':moment()[_0x45b1('0xae')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x45b1('0x54')](_0x398114);}})[_0x45b1('0x18')](function(){if(_0x3b9b04){var _0x4432df=[];var _0x44c451=[];var _0x11a1ff=utils[_0x45b1('0xf8')]();var _0x5b558e={'membername':_0x3b9b04[_0x45b1('0x3a')],'interface':_0x52d9d3,'enterAt':moment()[_0x45b1('0xae')](_0x45b1('0xf9')),'role':_0x3b9b04[_0x45b1('0x2c')],'internal':_0x3b9b04[_0x45b1('0x6a')]};_0x11a1ff[_0x45b1('0xf7')](function(_0x5a0972){_0x4432df[_0x45b1('0x4d')](_[_0x45b1('0xd0')]({'channel':_0x5a0972,'type':_0x45b1('0xfa'),'data1':_0x4efc54[_0x45b1('0x62')][_0x45b1('0xfb')],'data2':_0x52d9d3},_0x5b558e));if(_0x3b9b04[_0x45b1('0xa2')]){_0x44c451['push'](_['merge']({'channel':_0x5a0972,'type':'PAUSE','data1':'LOGININPAUSE'},_0x5b558e));}});return db[_0x45b1('0xf6')][_0x45b1('0xfc')](_0x4432df['concat'](_0x44c451),{'individualHooks':!![]});}})[_0x45b1('0x18')](function(){if(_0x3b9b04){return _0x3b9b04[_0x45b1('0x2b')]({'online':!![],'lastLoginAt':moment()[_0x45b1('0xae')](_0x45b1('0xf9')),'voicePause':_0x3b9b04['loginInPause']||![],'mailPause':_0x3b9b04[_0x45b1('0xa2')]||![],'chatPause':_0x3b9b04['loginInPause']||![],'faxPause':_0x3b9b04[_0x45b1('0xa2')]||![],'smsPause':_0x3b9b04[_0x45b1('0xa2')]||![],'openchannelPause':_0x3b9b04[_0x45b1('0xa2')]||![],'whatsappPause':_0x3b9b04[_0x45b1('0xa2')]||![],'pauseType':_0x3b9b04['loginInPause']?'LOGININPAUSE':null,'interface':_0x52d9d3,'lastPauseAt':moment()[_0x45b1('0xae')](_0x45b1('0xf9'))});}})[_0x45b1('0x18')](function(_0x5ce4c5){if(_0x4efc54[_0x45b1('0xfd')]){return _0x39a547();}else{return Promise[_0x45b1('0xfe')](_0x5ce4c5)[_0x45b1('0x18')](respondWithResult(_0x119c4a,null));}})[_0x45b1('0x21')](handleError(_0x119c4a,null));};exports['logout']=function(_0x4997b8,_0x25f293){var _0x25a895;return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x4997b8[_0x45b1('0x56')]['id'],'role':_0x45b1('0x2d')},'attributes':['id','name','role']})[_0x45b1('0x18')](handleEntityNotFound(_0x25f293,null))[_0x45b1('0x18')](function(_0x56305b){if(_0x56305b){_0x25a895=_0x56305b;return db['UserVoiceQueueRt'][_0x45b1('0x3c')]({'where':{'membername':_0x25a895[_0x45b1('0x3a')]},'individualHooks':!![]});}})['then'](function(){return db[_0x45b1('0xf6')][_0x45b1('0x4e')]({'where':{'membername':_0x25a895[_0x45b1('0x3a')],'exitAt':null}});})[_0x45b1('0x18')](function(_0x479f02){var _0x562349=[];_0x479f02[_0x45b1('0xf7')](function(_0x44fc6b){_0x562349[_0x45b1('0x4d')](_0x44fc6b[_0x45b1('0x2b')]({'exitAt':moment()[_0x45b1('0xae')]('YYYY-MM-DD\x20HH:mm:ss')}));});return Promise[_0x45b1('0x54')](_0x562349);})[_0x45b1('0x18')](function(){return _0x25a895[_0x45b1('0x2b')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x25f293,null))['catch'](handleError(_0x25f293,null));};exports[_0x45b1('0xff')]=function(_0x59f7e1,_0x4f944a){var _0x1fad8f;return db['UserVoiceQueueRt']['update']({'paused':0x1},{'where':{'UserId':_0x59f7e1[_0x45b1('0x56')]['id']},'individualHooks':!![]})['then'](function(){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x59f7e1[_0x45b1('0x56')]['id'],'role':_0x45b1('0x2d')},'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x2c'),_0x45b1('0x6a'),'interface',_0x45b1('0xa1')]});})[_0x45b1('0x18')](handleEntityNotFound(_0x4f944a,null))[_0x45b1('0x18')](function(_0x157181){if(_0x157181){_0x1fad8f=_0x157181;return respondWithRpcPromise(_0x45b1('0x100'),_0x45b1('0xff'),{'id':_0x1fad8f['id'],'name':_0x1fad8f['name'],'pause':!![]});}})[_0x45b1('0x18')](function(){if(_0x1fad8f){return db[_0x45b1('0xf6')]['findAll']({'where':{'membername':_0x1fad8f[_0x45b1('0x3a')],'type':'PAUSE','exitAt':null}});}})[_0x45b1('0x18')](function(_0x2c638a){if(_0x2c638a[_0x45b1('0x51')]){var _0x4de898=moment()[_0x45b1('0xae')](_0x45b1('0xf9'));for(var _0x10b68f=0x0,_0x2b7cff=_0x2c638a[_0x45b1('0x51')];_0x10b68f<_0x2b7cff;_0x10b68f++){_0x2c638a[_0x10b68f]['updateAttributes']({'exitAt':_0x4de898});}}})[_0x45b1('0x18')](function(){var _0xa86aba=[];var _0x168ac9=utils[_0x45b1('0xf8')]();_0x168ac9[_0x45b1('0xf7')](function(_0x2d02a6){_0xa86aba['push']({'channel':_0x2d02a6,'membername':_0x1fad8f[_0x45b1('0x3a')],'interface':_[_0x45b1('0x6b')](_0x1fad8f[_0x45b1('0xa3')])?util[_0x45b1('0xae')](_0x45b1('0xaf'),_0x1fad8f[_0x45b1('0x3a')]):_0x1fad8f[_0x45b1('0xa3')],'type':_0x45b1('0x101'),'enterAt':moment()[_0x45b1('0xae')](_0x45b1('0xf9')),'data1':_0x59f7e1[_0x45b1('0x62')][_0x45b1('0x41')]||_0x45b1('0x102'),'role':_0x1fad8f['role'],'internal':_0x1fad8f[_0x45b1('0x6a')]});});return db[_0x45b1('0xf6')]['bulkCreate'](_0xa86aba,{'individualHooks':!![]});})['then'](function(){return _0x1fad8f[_0x45b1('0x2b')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x59f7e1[_0x45b1('0x62')]['type']||_0x45b1('0x102'),'lastPauseAt':moment()[_0x45b1('0xae')](_0x45b1('0xf9'))});})[_0x45b1('0x18')](respondWithResult(_0x4f944a,null))[_0x45b1('0x21')](handleError(_0x4f944a,null));};exports[_0x45b1('0x103')]=function(_0x245afd,_0x5274d5){if(_0x245afd['body'][_0x45b1('0xa0')]&&!utils['isValidChannel'](_0x245afd[_0x45b1('0x62')][_0x45b1('0xa0')])){throw new APIBadRequestError(util['format']('Channel\x20parameter\x20%s\x20is\x20invalid',_0x245afd[_0x45b1('0x62')]['channel']));}return db['User']['find']({'where':{'id':_0x245afd[_0x45b1('0x56')]['id']},'attributes':['id',_0x45b1('0x3a'),'role',_0x45b1('0x6a'),_0x45b1('0xa3'),_0x45b1('0xa1'),_0x45b1('0xb0'),_0x45b1('0x104'),_0x45b1('0x105'),_0x45b1('0x106'),_0x45b1('0x107'),_0x45b1('0x108'),_0x45b1('0x109'),_0x45b1('0x10a'),_0x45b1('0x10b')]})[_0x45b1('0x18')](function(_0x5cfef9){if(!_0x5cfef9){throw new APINotFoundError(util[_0x45b1('0xae')](_0x45b1('0x10c'),_0x245afd[_0x45b1('0x56')]['id']));}return _0x5cfef9[_0x45b1('0x103')](_0x245afd['body'][_0x45b1('0xa0')]);})['then'](respondWithResult(_0x5274d5,null))[_0x45b1('0x21')](APIHandleError(_0x5274d5));};exports['getTeams']=function(_0x105b97,_0x1ebff8){var _0x15a41d={};var _0x284a16={};var _0x4e7b01;var _0x30690e;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x105b97[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x1ebff8,null))['then'](function(_0x2b1d58){if(_0x2b1d58){_0x4e7b01=_0x2b1d58;_0x284a16[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0x10d')][_0x45b1('0x40')]);_0x284a16[_0x45b1('0x47')]=_['keys'](_0x105b97['query']);_0x284a16[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x284a16[_0x45b1('0x57')],_0x284a16[_0x45b1('0x47')]);_0x15a41d['attributes']=_['intersection'](_0x284a16[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x105b97[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x15a41d[_0x45b1('0x4c')]=_0x15a41d[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x15a41d['attributes']:_0x284a16[_0x45b1('0x57')];_0x15a41d[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x105b97[_0x45b1('0x47')][_0x45b1('0xce')]);_0x15a41d['where']=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x105b97[_0x45b1('0x47')],_0x284a16[_0x45b1('0x5a')]));if(_0x105b97['query'][_0x45b1('0x35')]){_0x15a41d[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x15a41d['where'],{'$or':_['map'](_0x15a41d[_0x45b1('0x4c')],function(_0x2bd985){var _0x5203fa={};_0x5203fa[_0x2bd985]={'$like':'%'+_0x105b97[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x5203fa;})});}_0x15a41d=_['merge']({},_0x15a41d,_0x105b97['options']);return _0x4e7b01[_0x45b1('0x10e')](_0x15a41d);}})['then'](function(_0x30d0f9){if(_0x30d0f9){_0x30690e=_0x30d0f9[_0x45b1('0x51')];if(!_0x105b97[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x15a41d['limit']=qs[_0x45b1('0x29')](_0x105b97[_0x45b1('0x47')][_0x45b1('0x29')]);_0x15a41d[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x105b97['query']['offset']);}return _0x4e7b01[_0x45b1('0x10e')](_0x15a41d);}})[_0x45b1('0x18')](function(_0x4a788d){if(_0x4a788d){return _0x4a788d?{'count':_0x30690e,'rows':_0x4a788d}:null;}})[_0x45b1('0x18')](respondWithResult(_0x1ebff8,null))[_0x45b1('0x21')](handleError(_0x1ebff8,null));};exports['addTeams']=function(_0x39bffc,_0x420d65){var _0x155e0b=_0x39bffc['params']['id'];var _0x42adbe=_0x39bffc[_0x45b1('0x62')]?_0x39bffc[_0x45b1('0x62')][_0x45b1('0x65')]:null;var _0x5624e5=[];return Promise['resolve']()[_0x45b1('0x18')](function(){if(!_0x42adbe)throw new APIBadRequestError('Body\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0x45b1('0x18')](function(){return db[_0x45b1('0x3f')]['findOne']({'where':{'id':_0x155e0b}});})[_0x45b1('0x18')](function(_0x466551){if(!_0x466551)throw new APINotFoundError(util[_0x45b1('0xae')](_0x45b1('0x10c'),_0x39bffc[_0x45b1('0x56')]['id']));return db[_0x45b1('0x6e')][_0x45b1('0x10f')](function(_0x50488c){return _0x466551['addTeams'](_0x42adbe,{'transaction':_0x50488c})[_0x45b1('0x18')](function(){return db['Team'][_0x45b1('0x4e')]({'where':{'id':{'$in':_0x42adbe}}});})[_0x45b1('0x18')](function(_0x5906e3){var _0x464592=_[_0x45b1('0x37')](_0x5906e3,function(_0x2b2fe9){return _0x2b2fe9[_0x45b1('0x110')]();});return Promise['all'](_0x464592);})[_0x45b1('0x18')](function(_0x104974){_0x5624e5=_['flattenDeep'](_0x104974);var _0x542347=_[_0x45b1('0x37')](_0x5624e5,function(_0x98dc15){return _0x98dc15['addAgent'](_0x466551['id'],{'transaction':_0x50488c});});return Promise[_0x45b1('0x54')](_0x542347);})[_0x45b1('0x18')](function(){if(!_0x466551['online'])return;var _0x33d6e9=_['filter'](_0x5624e5,function(_0x2a9859){return _0x2a9859['getDataValue'](_0x45b1('0xa0'))===_0x45b1('0x111');});var _0x15c11a=_[_0x45b1('0x37')](_0x33d6e9,function(_0x2b4b2d){return db[_0x45b1('0xb5')][_0x45b1('0xb1')]({'membername':_0x466551['name'],'UserId':_0x466551['id'],'queue_name':_0x2b4b2d[_0x45b1('0x3a')],'VoiceQueueId':_0x2b4b2d['id'],'interface':_['isNil'](_0x466551[_0x45b1('0xa3')])?util[_0x45b1('0xae')](_0x45b1('0xaf'),_0x466551[_0x45b1('0x3a')]):_0x466551['interface'],'paused':_0x466551[_0x45b1('0xb0')]||![],'penalty':_0x466551[_0x45b1('0xa7')]},{'transaction':_0x50488c});});return Promise['all'](_0x15c11a);})[_0x45b1('0x18')](function(){return db[_0x45b1('0x112')][_0x45b1('0x4e')]({'where':{'teamId':{'$in':_0x42adbe}}});})['then'](function(_0x269812){var _0x2102e3=_[_0x45b1('0x37')](_0x269812,function(_0x2dadd1){return db[_0x45b1('0x113')]['create']({'UserId':_0x466551['id'],'VoicePrefixId':_0x2dadd1[_0x45b1('0x114')]},{'transaction':_0x50488c});});return Promise[_0x45b1('0x54')](_0x2102e3);});});})[_0x45b1('0x18')](function(){for(var _0x8d74df=0x0;_0x8d74df<_0x5624e5[_0x45b1('0x51')];_0x8d74df++){var _0x1adef9=_0x5624e5[_0x8d74df][_0x45b1('0x115')](_0x45b1('0xa0'));var _0x36b25c=_0x1adef9+_0x45b1('0xaa');socket[_0x45b1('0x2e')](_0x45b1('0x32')+_0x1adef9+_0x45b1('0xab'),{'UserId':_0x155e0b,['queueField']:_0x5624e5[_0x8d74df]['id']});}})['then'](respondWithStatusCode(_0x420d65,null))[_0x45b1('0x21')](APIHandleError(_0x420d65));};exports['removeTeams']=function(_0x24f2af,_0x5a5346){var _0x1c26cb=_0x24f2af[_0x45b1('0x56')]['id'];var _0x2e7ecd=null;if(_0x24f2af[_0x45b1('0x47')][_0x45b1('0x65')]){_0x2e7ecd=_[_0x45b1('0x116')](_0x24f2af[_0x45b1('0x47')][_0x45b1('0x65')])?_0x24f2af[_0x45b1('0x47')][_0x45b1('0x65')]:[_0x24f2af[_0x45b1('0x47')]['ids']];}var _0xc59f73=[];return Promise[_0x45b1('0xfe')]()[_0x45b1('0x18')](function(){if(!_0x2e7ecd)throw new APIBadRequestError(_0x45b1('0x117'));})[_0x45b1('0x18')](function(){return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x1c26cb}});})[_0x45b1('0x18')](function(_0x274083){if(!_0x274083)throw new APINotFoundError(util[_0x45b1('0xae')]('User\x20with\x20id\x20%s\x20not\x20found',_0x24f2af[_0x45b1('0x56')]['id']));return db[_0x45b1('0x6e')][_0x45b1('0x10f')](function(_0x11d088){return _0x274083['removeTeams'](_0x2e7ecd,{'transaction':_0x11d088})[_0x45b1('0x18')](function(){return db[_0x45b1('0x10d')]['findAll']({'where':{'id':{'$in':_0x2e7ecd}}});})[_0x45b1('0x18')](function(_0x5a8032){var _0x522b72=_[_0x45b1('0x37')](_0x5a8032,function(_0x2e7d13){return _0x2e7d13[_0x45b1('0x110')]();});return Promise[_0x45b1('0x54')](_0x522b72);})[_0x45b1('0x18')](function(_0x50ca8b){_0xc59f73=_[_0x45b1('0x118')](_0x50ca8b);var _0x3e6797=_['map'](_0xc59f73,function(_0x2f1dc8){return _0x2f1dc8[_0x45b1('0x119')](_0x274083['id'],{'transaction':_0x11d088});});return Promise[_0x45b1('0x54')](_0x3e6797);})[_0x45b1('0x18')](function(){if(!_0x274083[_0x45b1('0xa1')])return;var _0x5a5c43=_[_0x45b1('0x35')](_0xc59f73,function(_0x11d09a){return _0x11d09a[_0x45b1('0x115')]('channel')===_0x45b1('0x111');});var _0x821481=_[_0x45b1('0x37')](_0x5a5c43,function(_0x3873ea){return db[_0x45b1('0xb5')][_0x45b1('0x3c')]({'where':{'VoiceQueueId':_0x3873ea['id'],'UserId':_0x274083['id']},'transaction':_0x11d088});});return Promise['all'](_0x821481);})[_0x45b1('0x18')](function(){return db[_0x45b1('0x112')][_0x45b1('0x4e')]({'where':{'teamId':{'$in':_0x2e7ecd}}});})[_0x45b1('0x18')](function(_0x2f46ab){var _0x7ecb2e=_['map'](_0x2f46ab,function(_0x51acad){return db['UserVoicePrefix'][_0x45b1('0x3c')]({'where':{'UserId':_0x274083['id'],'VoicePrefixId':_0x51acad[_0x45b1('0x114')]}},{'transaction':_0x11d088});});return Promise[_0x45b1('0x54')](_0x7ecb2e);});});})[_0x45b1('0x18')](function(){for(var _0x5803f4=0x0;_0x5803f4<_0xc59f73[_0x45b1('0x51')];_0x5803f4++){var _0x7ae639=_0xc59f73[_0x5803f4][_0x45b1('0x115')](_0x45b1('0xa0'));var _0x965b0c=_0x7ae639+_0x45b1('0xaa');socket[_0x45b1('0x2e')]('user'+_0x7ae639+'Queue:remove',{'UserId':_0x1c26cb,['queueField']:_0xc59f73[_0x5803f4]['id']});}})[_0x45b1('0x18')](respondWithStatusCode(_0x5a5346,null))[_0x45b1('0x21')](APIHandleError(_0x5a5346));};exports[_0x45b1('0x11a')]=function(_0x39bf5c,_0x4d9884){var _0x3e44d0={};var _0x5b3847={};var _0x1aca6c;var _0xfe1a4c;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x39bf5c[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4d9884,null))[_0x45b1('0x18')](function(_0x12849d){if(_0x12849d){_0x1aca6c=_0x12849d;_0x5b3847[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0xd3')][_0x45b1('0x40')]);_0x5b3847['query']=_[_0x45b1('0x58')](_0x39bf5c[_0x45b1('0x47')]);_0x5b3847['filters']=_[_0x45b1('0x5b')](_0x5b3847[_0x45b1('0x57')],_0x5b3847[_0x45b1('0x47')]);_0x3e44d0['attributes']=_[_0x45b1('0x5b')](_0x5b3847[_0x45b1('0x57')],qs['fields'](_0x39bf5c[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x3e44d0['attributes']=_0x3e44d0[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x3e44d0[_0x45b1('0x4c')]:_0x5b3847[_0x45b1('0x57')];_0x3e44d0[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x39bf5c[_0x45b1('0x47')]['sort']);_0x3e44d0['where']=qs['filters'](_[_0x45b1('0xcf')](_0x39bf5c[_0x45b1('0x47')],_0x5b3847[_0x45b1('0x5a')]));if(_0x39bf5c[_0x45b1('0x47')]['filter']){_0x3e44d0['where']=_['merge'](_0x3e44d0['where'],{'$or':_[_0x45b1('0x37')](_0x3e44d0[_0x45b1('0x4c')],function(_0x53774e){var _0x530ae6={};_0x530ae6[_0x53774e]={'$like':'%'+_0x39bf5c['query'][_0x45b1('0x35')]+'%'};return _0x530ae6;})});}_0x3e44d0=_[_0x45b1('0xd0')]({},_0x3e44d0,_0x39bf5c[_0x45b1('0xd1')]);return _0x1aca6c[_0x45b1('0x11a')](_0x3e44d0);}})['then'](function(_0x56478b){if(_0x56478b){_0xfe1a4c=_0x56478b[_0x45b1('0x51')];if(!_0x39bf5c[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x3e44d0['limit']=qs['limit'](_0x39bf5c[_0x45b1('0x47')][_0x45b1('0x29')]);_0x3e44d0[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x39bf5c[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x1aca6c['getLists'](_0x3e44d0);}})[_0x45b1('0x18')](function(_0x4e0cd3){if(_0x4e0cd3){return _0x4e0cd3?{'count':_0xfe1a4c,'rows':_0x4e0cd3}:null;}})['then'](respondWithResult(_0x4d9884,null))[_0x45b1('0x21')](handleError(_0x4d9884,null));};exports[_0x45b1('0x11b')]=function(_0x32033d,_0x2e5b5f){var _0x457faa={};var _0x3ce4b4={};var _0x4176f9;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x32033d[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x2e5b5f,null))[_0x45b1('0x18')](function(_0x36ad31){if(_0x36ad31){_0x4176f9=_0x36ad31;_0x3ce4b4[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0x3f')][_0x45b1('0x40')]);_0x3ce4b4[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x32033d[_0x45b1('0x47')]);_0x3ce4b4[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x3ce4b4['model'],_0x3ce4b4['query']);_0x457faa[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x3ce4b4[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x32033d[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x457faa[_0x45b1('0x4c')]=_0x457faa['attributes'][_0x45b1('0x51')]?_0x457faa[_0x45b1('0x4c')]:_0x3ce4b4[_0x45b1('0x57')];_0x457faa[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x32033d['query'][_0x45b1('0xce')]);_0x457faa[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x32033d[_0x45b1('0x47')],_0x3ce4b4['filters']));if(_0x32033d[_0x45b1('0x47')][_0x45b1('0x35')]){_0x457faa[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x457faa[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x457faa[_0x45b1('0x4c')],function(_0x11bafc){var _0x1c5ee6={};_0x1c5ee6[_0x11bafc]={'$like':'%'+_0x32033d[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x1c5ee6;})});}_0x457faa['model']=db[_0x45b1('0x3f')];_0x457faa['as']=_0x45b1('0x33');_0x457faa=_[_0x45b1('0xd0')]({},_0x457faa,_0x32033d[_0x45b1('0xd1')]);return _0x4176f9[_0x45b1('0x11c')]({'include':[_0x457faa]});}})[_0x45b1('0x18')](function(_0x4d13a3){if(_0x4d13a3){var _0x4355c1={},_0x369681=[];for(var _0x16fc8a=0x0;_0x16fc8a<_0x4d13a3['length'];_0x16fc8a+=0x1){for(var _0x108596=0x0,_0x1f64ab;_0x108596<_0x4d13a3[_0x16fc8a][_0x45b1('0x33')][_0x45b1('0x51')];_0x108596+=0x1){_0x1f64ab=_0x4d13a3[_0x16fc8a][_0x45b1('0x33')][_0x108596][_0x45b1('0x30')]({'plain':!![]});_0x4355c1[_0x1f64ab['id']]=_0x1f64ab;}}_0x4355c1=_[_0x45b1('0x11d')](_0x4355c1);for(var _0x4fd53d=qs['offset'](_0x32033d['query'][_0x45b1('0x26')]);_0x4fd53d<_0x4355c1[_0x45b1('0x51')]&&_0x369681[_0x45b1('0x51')]<qs[_0x45b1('0x29')](_0x32033d['query'][_0x45b1('0x29')]);_0x4fd53d+=0x1){if(_0x4355c1[_0x4fd53d]){_0x369681[_0x45b1('0x4d')](_0x4355c1[_0x4fd53d]);}}return{'count':_0x4355c1[_0x45b1('0x51')],'rows':_0x369681};}})[_0x45b1('0x18')](respondWithResult(_0x2e5b5f,null))[_0x45b1('0x21')](handleError(_0x2e5b5f,null));};exports[_0x45b1('0x3c')]=function(_0x156652,_0x3cf335){if(_0x156652[_0x45b1('0x32')]['id']==_0x156652['params']['id']){return _0x3cf335[_0x45b1('0x23')](0x1f4)[_0x45b1('0x3e')]({'message':_0x45b1('0x11e')});}return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x156652['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3cf335,null))[_0x45b1('0x18')](removeEntity(_0x3cf335,null))[_0x45b1('0x21')](handleError(_0x3cf335,null));};exports[_0x45b1('0x11f')]=function(_0x2f1b81,_0x3ef1eb){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x2f1b81['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3ef1eb,null))['then'](function(_0x4cc17f){if(_0x4cc17f){return _0x4cc17f[_0x45b1('0x11f')](_0x2f1b81[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x2f1b81['body'],['ids','id'])||{})[_0x45b1('0xa8')](function(){for(var _0x56550b=0x0;_0x56550b<_0x2f1b81[_0x45b1('0x62')][_0x45b1('0x65')]['length'];_0x56550b+=0x1){socket['emit'](_0x45b1('0x120'),{'ChatInteractionId':Number(_0x2f1b81[_0x45b1('0x62')][_0x45b1('0x65')][_0x56550b]),'UserId':Number(_0x2f1b81[_0x45b1('0x56')]['id'])});}return _0x2f1b81[_0x45b1('0x62')][_0x45b1('0x65')];});}})[_0x45b1('0x18')](respondWithResult(_0x3ef1eb,null))[_0x45b1('0x21')](handleError(_0x3ef1eb,null));};exports[_0x45b1('0x121')]=function(_0x501803,_0x5aeec8){return db[_0x45b1('0x3f')]['find']({'where':{'id':_0x501803['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x5aeec8,null))[_0x45b1('0x18')](function(_0x272e4f){if(_0x272e4f){return _0x272e4f['removeChatInteractions'](_0x501803[_0x45b1('0x47')]['ids'])[_0x45b1('0x18')](function(){if(_[_0x45b1('0x116')](_0x501803[_0x45b1('0x47')]['ids'])){for(var _0x17feb1=0x0;_0x17feb1<_0x501803[_0x45b1('0x47')][_0x45b1('0x65')][_0x45b1('0x51')];_0x17feb1+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x122'),{'ChatInteractionId':Number(_0x501803[_0x45b1('0x47')][_0x45b1('0x65')][_0x17feb1]),'UserId':Number(_0x501803[_0x45b1('0x56')]['id'])});}}else{socket[_0x45b1('0x2e')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x501803[_0x45b1('0x47')][_0x45b1('0x65')]),'UserId':Number(_0x501803[_0x45b1('0x56')]['id'])});}});}})[_0x45b1('0x18')](respondWithStatusCode(_0x5aeec8,null))[_0x45b1('0x21')](handleError(_0x5aeec8,null));};exports['addMailInteractions']=function(_0xe394fb,_0x298d31){return db['User'][_0x45b1('0x39')]({'where':{'id':_0xe394fb[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x298d31,null))[_0x45b1('0x18')](function(_0x862bd6){if(_0x862bd6){return _0x862bd6[_0x45b1('0x123')](_0xe394fb[_0x45b1('0x62')][_0x45b1('0x65')],_['omit'](_0xe394fb[_0x45b1('0x62')],['ids','id'])||{})[_0x45b1('0xa8')](function(){for(var _0x2a3218=0x0;_0x2a3218<_0xe394fb[_0x45b1('0x62')][_0x45b1('0x65')][_0x45b1('0x51')];_0x2a3218+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x124'),{'MailInteractionId':Number(_0xe394fb[_0x45b1('0x62')][_0x45b1('0x65')][_0x2a3218]),'UserId':Number(_0xe394fb[_0x45b1('0x56')]['id'])});}return _0xe394fb['body'][_0x45b1('0x65')];});}})[_0x45b1('0x18')](respondWithResult(_0x298d31,null))['catch'](handleError(_0x298d31,null));};exports['removeMailInteractions']=function(_0x248955,_0x30c0d1){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x248955[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x30c0d1,null))[_0x45b1('0x18')](function(_0x4f95b9){if(_0x4f95b9){return _0x4f95b9[_0x45b1('0x125')](_0x248955['query'][_0x45b1('0x65')])[_0x45b1('0x18')](function(){if(_['isArray'](_0x248955[_0x45b1('0x47')]['ids'])){for(var _0x5a7902=0x0;_0x5a7902<_0x248955['query'][_0x45b1('0x65')][_0x45b1('0x51')];_0x5a7902+=0x1){socket['emit'](_0x45b1('0x126'),{'MailInteractionId':Number(_0x248955[_0x45b1('0x47')][_0x45b1('0x65')][_0x5a7902]),'UserId':Number(_0x248955[_0x45b1('0x56')]['id'])});}}else{socket['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x248955['query'][_0x45b1('0x65')]),'UserId':Number(_0x248955[_0x45b1('0x56')]['id'])});}});}})[_0x45b1('0x18')](respondWithStatusCode(_0x30c0d1,null))[_0x45b1('0x21')](handleError(_0x30c0d1,null));};exports[_0x45b1('0x127')]=function(_0xf3321d,_0x4d92b8){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0xf3321d[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x4d92b8,null))[_0x45b1('0x18')](function(_0x7aa14b){if(_0x7aa14b){return _0x7aa14b[_0x45b1('0x127')](_0xf3321d[_0x45b1('0x62')]['ids'],_[_0x45b1('0x66')](_0xf3321d[_0x45b1('0x62')],['ids','id'])||{})[_0x45b1('0xa8')](function(){for(var _0x167b4c=0x0;_0x167b4c<_0xf3321d[_0x45b1('0x62')][_0x45b1('0x65')][_0x45b1('0x51')];_0x167b4c+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x128'),{'FaxInteractionId':Number(_0xf3321d['body'][_0x45b1('0x65')][_0x167b4c]),'UserId':Number(_0xf3321d[_0x45b1('0x56')]['id'])});}return _0xf3321d[_0x45b1('0x62')]['ids'];});}})[_0x45b1('0x18')](respondWithResult(_0x4d92b8,null))[_0x45b1('0x21')](handleError(_0x4d92b8,null));};exports[_0x45b1('0x129')]=function(_0x39dccc,_0x4a9762){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x39dccc[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4a9762,null))['then'](function(_0x5502f0){if(_0x5502f0){return _0x5502f0[_0x45b1('0x129')](_0x39dccc[_0x45b1('0x47')][_0x45b1('0x65')])['then'](function(){if(_[_0x45b1('0x116')](_0x39dccc[_0x45b1('0x47')][_0x45b1('0x65')])){for(var _0x2e5197=0x0;_0x2e5197<_0x39dccc[_0x45b1('0x47')]['ids'][_0x45b1('0x51')];_0x2e5197+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x12a'),{'FaxInteractionId':Number(_0x39dccc[_0x45b1('0x47')][_0x45b1('0x65')][_0x2e5197]),'UserId':Number(_0x39dccc['params']['id'])});}}else{socket[_0x45b1('0x2e')](_0x45b1('0x12a'),{'FaxInteractionId':Number(_0x39dccc[_0x45b1('0x47')][_0x45b1('0x65')]),'UserId':Number(_0x39dccc[_0x45b1('0x56')]['id'])});}});}})[_0x45b1('0x18')](respondWithStatusCode(_0x4a9762,null))[_0x45b1('0x21')](handleError(_0x4a9762,null));};exports[_0x45b1('0x12b')]=function(_0x4c315b,_0x12f25a){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x4c315b['params']['id']}})['then'](handleEntityNotFound(_0x12f25a,null))[_0x45b1('0x18')](function(_0x4729db){if(_0x4729db){return _0x4729db[_0x45b1('0x12b')](_0x4c315b[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x4c315b[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{})['spread'](function(){for(var _0x1e9c2f=0x0;_0x1e9c2f<_0x4c315b[_0x45b1('0x62')][_0x45b1('0x65')][_0x45b1('0x51')];_0x1e9c2f+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x12c'),{'SmsInteractionId':Number(_0x4c315b[_0x45b1('0x62')]['ids'][_0x1e9c2f]),'UserId':Number(_0x4c315b[_0x45b1('0x56')]['id'])});}return _0x4c315b['body']['ids'];});}})[_0x45b1('0x18')](respondWithResult(_0x12f25a,null))[_0x45b1('0x21')](handleError(_0x12f25a,null));};exports[_0x45b1('0x12d')]=function(_0x120201,_0x4bf84d){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x120201[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4bf84d,null))[_0x45b1('0x18')](function(_0x29eca6){if(_0x29eca6){return _0x29eca6[_0x45b1('0x12d')](_0x120201[_0x45b1('0x47')][_0x45b1('0x65')])[_0x45b1('0x18')](function(){if(_[_0x45b1('0x116')](_0x120201[_0x45b1('0x47')][_0x45b1('0x65')])){for(var _0x596d70=0x0;_0x596d70<_0x120201[_0x45b1('0x47')][_0x45b1('0x65')][_0x45b1('0x51')];_0x596d70+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x12e'),{'SmsInteractionId':Number(_0x120201[_0x45b1('0x47')]['ids'][_0x596d70]),'UserId':Number(_0x120201[_0x45b1('0x56')]['id'])});}}else{socket['emit'](_0x45b1('0x12e'),{'SmsInteractionId':Number(_0x120201[_0x45b1('0x47')][_0x45b1('0x65')]),'UserId':Number(_0x120201['params']['id'])});}});}})[_0x45b1('0x18')](respondWithStatusCode(_0x4bf84d,null))[_0x45b1('0x21')](handleError(_0x4bf84d,null));};exports[_0x45b1('0x12f')]=function(_0x3e2365,_0x3a688c){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x3e2365[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3a688c,null))['then'](function(_0x45bab4){if(_0x45bab4){return _0x45bab4[_0x45b1('0x12f')](_0x3e2365[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x3e2365[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{})[_0x45b1('0xa8')](function(){for(var _0x58366e=0x0;_0x58366e<_0x3e2365[_0x45b1('0x62')][_0x45b1('0x65')]['length'];_0x58366e+=0x1){socket[_0x45b1('0x2e')]('user_has_openchannel_interactions:save',{'OpenchannelInteractionId':Number(_0x3e2365[_0x45b1('0x62')][_0x45b1('0x65')][_0x58366e]),'UserId':Number(_0x3e2365['params']['id'])});}return _0x3e2365[_0x45b1('0x62')][_0x45b1('0x65')];});}})[_0x45b1('0x18')](respondWithResult(_0x3a688c,null))[_0x45b1('0x21')](handleError(_0x3a688c,null));};exports[_0x45b1('0x130')]=function(_0x4e3788,_0x209fa0){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x4e3788[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x209fa0,null))[_0x45b1('0x18')](function(_0x46cde2){if(_0x46cde2){return _0x46cde2[_0x45b1('0x130')](_0x4e3788[_0x45b1('0x47')]['ids'])[_0x45b1('0x18')](function(){if(_[_0x45b1('0x116')](_0x4e3788['query'][_0x45b1('0x65')])){for(var _0x217da0=0x0;_0x217da0<_0x4e3788[_0x45b1('0x47')]['ids'][_0x45b1('0x51')];_0x217da0+=0x1){socket['emit'](_0x45b1('0x131'),{'OpenchannelInteractionId':Number(_0x4e3788[_0x45b1('0x47')][_0x45b1('0x65')][_0x217da0]),'UserId':Number(_0x4e3788[_0x45b1('0x56')]['id'])});}}else{socket[_0x45b1('0x2e')](_0x45b1('0x131'),{'OpenchannelInteractionId':Number(_0x4e3788[_0x45b1('0x47')][_0x45b1('0x65')]),'UserId':Number(_0x4e3788[_0x45b1('0x56')]['id'])});}});}})[_0x45b1('0x18')](respondWithStatusCode(_0x209fa0,null))[_0x45b1('0x21')](handleError(_0x209fa0,null));};exports['addWhatsappInteractions']=function(_0x46b6b7,_0x4c0f14){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x46b6b7[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4c0f14,null))[_0x45b1('0x18')](function(_0x18759e){if(_0x18759e){return _0x18759e[_0x45b1('0x132')](_0x46b6b7['body'][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x46b6b7[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{})['spread'](function(){for(var _0x4fd1e9=0x0;_0x4fd1e9<_0x46b6b7[_0x45b1('0x62')][_0x45b1('0x65')]['length'];_0x4fd1e9+=0x1){socket[_0x45b1('0x2e')](_0x45b1('0x133'),{'WhatsappInteractionId':Number(_0x46b6b7[_0x45b1('0x62')][_0x45b1('0x65')][_0x4fd1e9]),'UserId':Number(_0x46b6b7[_0x45b1('0x56')]['id'])});}return _0x46b6b7[_0x45b1('0x62')][_0x45b1('0x65')];});}})[_0x45b1('0x18')](respondWithResult(_0x4c0f14,null))['catch'](handleError(_0x4c0f14,null));};exports[_0x45b1('0x134')]=function(_0xb4b528,_0x385ad3){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0xb4b528[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x385ad3,null))[_0x45b1('0x18')](function(_0x54d396){if(_0x54d396){return _0x54d396['removeWhatsappInteractions'](_0xb4b528[_0x45b1('0x47')]['ids']);}})['then'](respondWithStatusCode(_0x385ad3,null))[_0x45b1('0x21')](handleError(_0x385ad3,null));};exports[_0x45b1('0x135')]=function(_0x3e93a4,_0x31a4c3){var _0x36a365={};var _0x294d09={};var _0x1ed4f8;var _0x5e6cec;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x3e93a4[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x31a4c3,null))[_0x45b1('0x18')](function(_0x1a8aea){if(_0x1a8aea){_0x1ed4f8=_0x1a8aea;_0x294d09[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0x136')][_0x45b1('0x40')]);_0x294d09['query']=_[_0x45b1('0x58')](_0x3e93a4[_0x45b1('0x47')]);_0x294d09[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x294d09[_0x45b1('0x57')],_0x294d09[_0x45b1('0x47')]);_0x36a365['attributes']=_[_0x45b1('0x5b')](_0x294d09[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x3e93a4[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x36a365[_0x45b1('0x4c')]=_0x36a365[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x36a365[_0x45b1('0x4c')]:_0x294d09[_0x45b1('0x57')];_0x36a365[_0x45b1('0xcd')]=qs['sort'](_0x3e93a4[_0x45b1('0x47')][_0x45b1('0xce')]);_0x36a365[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x3e93a4[_0x45b1('0x47')],_0x294d09['filters']));if(_0x3e93a4[_0x45b1('0x47')]['filter']){_0x36a365[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x36a365[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x36a365[_0x45b1('0x4c')],function(_0x58b525){var _0x2c1557={};_0x2c1557[_0x58b525]={'$like':'%'+_0x3e93a4[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x2c1557;})});}_0x36a365=_[_0x45b1('0xd0')]({},_0x36a365,_0x3e93a4[_0x45b1('0xd1')]);return _0x1ed4f8[_0x45b1('0x135')](_0x36a365);}})[_0x45b1('0x18')](function(_0x10817b){if(_0x10817b){_0x5e6cec=_0x10817b[_0x45b1('0x51')];if(!_0x3e93a4[_0x45b1('0x47')]['hasOwnProperty']('nolimit')){_0x36a365[_0x45b1('0x29')]=qs['limit'](_0x3e93a4[_0x45b1('0x47')]['limit']);_0x36a365['offset']=qs[_0x45b1('0x26')](_0x3e93a4['query'][_0x45b1('0x26')]);}return _0x1ed4f8['getVoicePrefixes'](_0x36a365);}})[_0x45b1('0x18')](function(_0x3f8f59){if(_0x3f8f59){return _0x3f8f59?{'count':_0x5e6cec,'rows':_0x3f8f59}:null;}})['then'](respondWithResult(_0x31a4c3,null))['catch'](handleError(_0x31a4c3,null));};exports[_0x45b1('0x137')]=function(_0x26d0cf,_0x462b41){var _0x3c55d6={};var _0x361805={};var _0x1c5f7b;var _0x16b23a;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x26d0cf['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x462b41,null))[_0x45b1('0x18')](function(_0x17a269){if(_0x17a269){_0x1c5f7b=_0x17a269;_0x361805['model']=_[_0x45b1('0x58')](db[_0x45b1('0x138')][_0x45b1('0x40')]);_0x361805[_0x45b1('0x47')]=_['keys'](_0x26d0cf[_0x45b1('0x47')]);_0x361805[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x361805[_0x45b1('0x57')],_0x361805['query']);_0x3c55d6[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x361805['model'],qs['fields'](_0x26d0cf[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x3c55d6[_0x45b1('0x4c')]=_0x3c55d6[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x3c55d6[_0x45b1('0x4c')]:_0x361805[_0x45b1('0x57')];_0x3c55d6['order']=qs[_0x45b1('0xce')](_0x26d0cf[_0x45b1('0x47')][_0x45b1('0xce')]);_0x3c55d6[_0x45b1('0x46')]=qs['filters'](_['pick'](_0x26d0cf['query'],_0x361805[_0x45b1('0x5a')]));if(_0x26d0cf[_0x45b1('0x47')][_0x45b1('0x35')]){_0x3c55d6[_0x45b1('0x46')]=_['merge'](_0x3c55d6[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x3c55d6[_0x45b1('0x4c')],function(_0xdaa23c){var _0x4aaa12={};_0x4aaa12[_0xdaa23c]={'$like':'%'+_0x26d0cf[_0x45b1('0x47')]['filter']+'%'};return _0x4aaa12;})});}_0x3c55d6=_['merge']({},_0x3c55d6,_0x26d0cf['options']);return _0x1c5f7b[_0x45b1('0x137')](_0x3c55d6);}})[_0x45b1('0x18')](function(_0x2fada6){if(_0x2fada6){_0x16b23a=_0x2fada6[_0x45b1('0x51')];if(!_0x26d0cf[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x3c55d6[_0x45b1('0x29')]=qs['limit'](_0x26d0cf[_0x45b1('0x47')][_0x45b1('0x29')]);_0x3c55d6[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x26d0cf['query'][_0x45b1('0x26')]);}return _0x1c5f7b[_0x45b1('0x137')](_0x3c55d6);}})[_0x45b1('0x18')](function(_0x2be4e3){if(_0x2be4e3){return _0x2be4e3?{'count':_0x16b23a,'rows':_0x2be4e3}:null;}})[_0x45b1('0x18')](respondWithResult(_0x462b41,null))[_0x45b1('0x21')](handleError(_0x462b41,null));};exports[_0x45b1('0x139')]=function(_0x3dc5a1,_0x3c48e8){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x3dc5a1['params']['id']}})['then'](handleEntityNotFound(_0x3c48e8,null))[_0x45b1('0x18')](function(_0x5a82b8){if(_0x5a82b8){return _0x5a82b8[_0x45b1('0x139')](_0x3dc5a1[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x3dc5a1[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})['then'](respondWithResult(_0x3c48e8,null))[_0x45b1('0x21')](handleError(_0x3c48e8,null));};exports['removeFaxAccounts']=function(_0x1888b3,_0x185e63){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x1888b3[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x185e63,null))[_0x45b1('0x18')](function(_0x144e43){if(_0x144e43){return _0x144e43[_0x45b1('0x13a')](_0x1888b3[_0x45b1('0x47')][_0x45b1('0x65')]);}})['then'](respondWithStatusCode(_0x185e63,null))[_0x45b1('0x21')](handleError(_0x185e63,null));};exports['getMailAccounts']=function(_0x4a9692,_0x4bd49e){var _0x40f714={};var _0x43249d={};var _0x84f431;var _0x37e5f7;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x4a9692['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4bd49e,null))['then'](function(_0x379cea){if(_0x379cea){_0x84f431=_0x379cea;_0x43249d[_0x45b1('0x57')]=_[_0x45b1('0x58')](db['MailAccount']['rawAttributes']);_0x43249d['query']=_[_0x45b1('0x58')](_0x4a9692[_0x45b1('0x47')]);_0x43249d[_0x45b1('0x5a')]=_['intersection'](_0x43249d['model'],_0x43249d[_0x45b1('0x47')]);_0x40f714[_0x45b1('0x4c')]=_['intersection'](_0x43249d[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x4a9692[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x40f714['attributes']=_0x40f714[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x40f714['attributes']:_0x43249d[_0x45b1('0x57')];_0x40f714[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x4a9692[_0x45b1('0x47')][_0x45b1('0xce')]);_0x40f714[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_['pick'](_0x4a9692['query'],_0x43249d['filters']));if(_0x4a9692[_0x45b1('0x47')][_0x45b1('0x35')]){_0x40f714['where']=_[_0x45b1('0xd0')](_0x40f714[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x40f714[_0x45b1('0x4c')],function(_0x2eb0df){var _0x5a513e={};_0x5a513e[_0x2eb0df]={'$like':'%'+_0x4a9692['query'][_0x45b1('0x35')]+'%'};return _0x5a513e;})});}_0x40f714=_[_0x45b1('0xd0')]({},_0x40f714,_0x4a9692[_0x45b1('0xd1')]);return _0x84f431[_0x45b1('0x13b')](_0x40f714);}})['then'](function(_0x47e2a3){if(_0x47e2a3){_0x37e5f7=_0x47e2a3[_0x45b1('0x51')];if(!_0x4a9692[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x40f714[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x4a9692[_0x45b1('0x47')]['limit']);_0x40f714[_0x45b1('0x26')]=qs['offset'](_0x4a9692[_0x45b1('0x47')]['offset']);}return _0x84f431[_0x45b1('0x13b')](_0x40f714);}})[_0x45b1('0x18')](function(_0x2046bb){if(_0x2046bb){return _0x2046bb?{'count':_0x37e5f7,'rows':_0x2046bb}:null;}})[_0x45b1('0x18')](respondWithResult(_0x4bd49e,null))[_0x45b1('0x21')](handleError(_0x4bd49e,null));};exports[_0x45b1('0x13c')]=function(_0x44227b,_0x4b7890){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x44227b[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x4b7890,null))['then'](function(_0x565536){if(_0x565536){return _0x565536['addMailAccounts'](_0x44227b['body'][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x44227b['body'],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x4b7890,null))[_0x45b1('0x21')](handleError(_0x4b7890,null));};exports[_0x45b1('0x13d')]=function(_0x3bc2d6,_0x311a1f){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x3bc2d6[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x311a1f,null))[_0x45b1('0x18')](function(_0x3b9776){if(_0x3b9776){return _0x3b9776['removeMailAccounts'](_0x3bc2d6[_0x45b1('0x47')][_0x45b1('0x65')]);}})['then'](respondWithStatusCode(_0x311a1f,null))[_0x45b1('0x21')](handleError(_0x311a1f,null));};exports[_0x45b1('0x13e')]=function(_0x9b80f9,_0x1ad224){var _0x4bd51f={};var _0x5897fe={};var _0x24c303;var _0x280216;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x9b80f9['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x1ad224,null))[_0x45b1('0x18')](function(_0x38e933){if(_0x38e933){_0x24c303=_0x38e933;_0x5897fe[_0x45b1('0x57')]=_[_0x45b1('0x58')](db[_0x45b1('0x13f')]['rawAttributes']);_0x5897fe[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x9b80f9['query']);_0x5897fe[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x5897fe[_0x45b1('0x57')],_0x5897fe[_0x45b1('0x47')]);_0x4bd51f['attributes']=_[_0x45b1('0x5b')](_0x5897fe[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x9b80f9[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x4bd51f['attributes']=_0x4bd51f[_0x45b1('0x4c')]['length']?_0x4bd51f['attributes']:_0x5897fe[_0x45b1('0x57')];_0x4bd51f[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x9b80f9[_0x45b1('0x47')][_0x45b1('0xce')]);_0x4bd51f[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_['pick'](_0x9b80f9['query'],_0x5897fe[_0x45b1('0x5a')]));if(_0x9b80f9[_0x45b1('0x47')]['filter']){_0x4bd51f[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x4bd51f[_0x45b1('0x46')],{'$or':_[_0x45b1('0x37')](_0x4bd51f[_0x45b1('0x4c')],function(_0x287971){var _0xc0ccd9={};_0xc0ccd9[_0x287971]={'$like':'%'+_0x9b80f9['query'][_0x45b1('0x35')]+'%'};return _0xc0ccd9;})});}_0x4bd51f=_[_0x45b1('0xd0')]({},_0x4bd51f,_0x9b80f9[_0x45b1('0xd1')]);return _0x24c303[_0x45b1('0x13e')](_0x4bd51f);}})[_0x45b1('0x18')](function(_0x134d79){if(_0x134d79){_0x280216=_0x134d79['length'];if(!_0x9b80f9[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x4bd51f[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x9b80f9['query'][_0x45b1('0x29')]);_0x4bd51f[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x9b80f9[_0x45b1('0x47')]['offset']);}return _0x24c303[_0x45b1('0x13e')](_0x4bd51f);}})['then'](function(_0x5d71be){if(_0x5d71be){return _0x5d71be?{'count':_0x280216,'rows':_0x5d71be}:null;}})[_0x45b1('0x18')](respondWithResult(_0x1ad224,null))[_0x45b1('0x21')](handleError(_0x1ad224,null));};exports[_0x45b1('0x140')]=function(_0x2dbbf6,_0x58aa6b){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x2dbbf6['params']['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x58aa6b,null))['then'](function(_0x4d2a91){if(_0x4d2a91){return _0x4d2a91[_0x45b1('0x140')](_0x2dbbf6['body'][_0x45b1('0x65')],_['omit'](_0x2dbbf6[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x58aa6b,null))[_0x45b1('0x21')](handleError(_0x58aa6b,null));};exports[_0x45b1('0x141')]=function(_0x28f4d2,_0x211f68){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x28f4d2[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x211f68,null))[_0x45b1('0x18')](function(_0x3e0b86){if(_0x3e0b86){return _0x3e0b86[_0x45b1('0x141')](_0x28f4d2['query']['ids']);}})['then'](respondWithStatusCode(_0x211f68,null))[_0x45b1('0x21')](handleError(_0x211f68,null));};exports[_0x45b1('0x142')]=function(_0x2c4832,_0x3eb871){var _0x45fda0={};var _0x4e6279={};var _0x17cfa4;var _0x90df43;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x2c4832[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x3eb871,null))['then'](function(_0xce16f1){if(_0xce16f1){_0x17cfa4=_0xce16f1;_0x4e6279[_0x45b1('0x57')]=_['keys'](db['SmsAccount'][_0x45b1('0x40')]);_0x4e6279[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x2c4832[_0x45b1('0x47')]);_0x4e6279['filters']=_[_0x45b1('0x5b')](_0x4e6279[_0x45b1('0x57')],_0x4e6279[_0x45b1('0x47')]);_0x45fda0[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x4e6279[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x2c4832[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x45fda0[_0x45b1('0x4c')]=_0x45fda0[_0x45b1('0x4c')]['length']?_0x45fda0[_0x45b1('0x4c')]:_0x4e6279['model'];_0x45fda0[_0x45b1('0xcd')]=qs['sort'](_0x2c4832[_0x45b1('0x47')][_0x45b1('0xce')]);_0x45fda0[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x2c4832[_0x45b1('0x47')],_0x4e6279[_0x45b1('0x5a')]));if(_0x2c4832[_0x45b1('0x47')]['filter']){_0x45fda0[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x45fda0[_0x45b1('0x46')],{'$or':_['map'](_0x45fda0['attributes'],function(_0x2760f5){var _0x958e6b={};_0x958e6b[_0x2760f5]={'$like':'%'+_0x2c4832[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x958e6b;})});}_0x45fda0=_[_0x45b1('0xd0')]({},_0x45fda0,_0x2c4832[_0x45b1('0xd1')]);return _0x17cfa4[_0x45b1('0x142')](_0x45fda0);}})[_0x45b1('0x18')](function(_0x45c857){if(_0x45c857){_0x90df43=_0x45c857['length'];if(!_0x2c4832[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x45fda0[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x2c4832['query'][_0x45b1('0x29')]);_0x45fda0[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x2c4832[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x17cfa4['getSmsAccounts'](_0x45fda0);}})[_0x45b1('0x18')](function(_0x2a4d21){if(_0x2a4d21){return _0x2a4d21?{'count':_0x90df43,'rows':_0x2a4d21}:null;}})[_0x45b1('0x18')](respondWithResult(_0x3eb871,null))[_0x45b1('0x21')](handleError(_0x3eb871,null));};exports['addSmsAccounts']=function(_0x368deb,_0x253c54){return db['User']['find']({'where':{'id':_0x368deb['params']['id']}})['then'](handleEntityNotFound(_0x253c54,null))[_0x45b1('0x18')](function(_0x16b2a0){if(_0x16b2a0){return _0x16b2a0[_0x45b1('0x143')](_0x368deb['body']['ids'],_[_0x45b1('0x66')](_0x368deb[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x253c54,null))[_0x45b1('0x21')](handleError(_0x253c54,null));};exports[_0x45b1('0x144')]=function(_0x33bea3,_0x244e48){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x33bea3[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x244e48,null))[_0x45b1('0x18')](function(_0x3ef463){if(_0x3ef463){return _0x3ef463[_0x45b1('0x144')](_0x33bea3[_0x45b1('0x47')][_0x45b1('0x65')]);}})[_0x45b1('0x18')](respondWithStatusCode(_0x244e48,null))['catch'](handleError(_0x244e48,null));};exports[_0x45b1('0x145')]=function(_0x44ea3a,_0x11153f){var _0x56b19a={};var _0x559e53={};var _0x57cdde;var _0x24b307;return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0x44ea3a['params']['id']}})['then'](handleEntityNotFound(_0x11153f,null))[_0x45b1('0x18')](function(_0x14dc51){if(_0x14dc51){_0x57cdde=_0x14dc51;_0x559e53['model']=_['keys'](db[_0x45b1('0x146')]['rawAttributes']);_0x559e53[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x44ea3a['query']);_0x559e53[_0x45b1('0x5a')]=_['intersection'](_0x559e53[_0x45b1('0x57')],_0x559e53['query']);_0x56b19a['attributes']=_['intersection'](_0x559e53[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x44ea3a[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x56b19a[_0x45b1('0x4c')]=_0x56b19a[_0x45b1('0x4c')]['length']?_0x56b19a[_0x45b1('0x4c')]:_0x559e53[_0x45b1('0x57')];_0x56b19a[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x44ea3a[_0x45b1('0x47')]['sort']);_0x56b19a['where']=qs['filters'](_['pick'](_0x44ea3a[_0x45b1('0x47')],_0x559e53[_0x45b1('0x5a')]));if(_0x44ea3a[_0x45b1('0x47')][_0x45b1('0x35')]){_0x56b19a[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x56b19a['where'],{'$or':_['map'](_0x56b19a['attributes'],function(_0x4496c3){var _0x53d957={};_0x53d957[_0x4496c3]={'$like':'%'+_0x44ea3a[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x53d957;})});}_0x56b19a=_['merge']({},_0x56b19a,_0x44ea3a[_0x45b1('0xd1')]);return _0x57cdde[_0x45b1('0x145')](_0x56b19a);}})[_0x45b1('0x18')](function(_0x6a8775){if(_0x6a8775){_0x24b307=_0x6a8775[_0x45b1('0x51')];if(!_0x44ea3a[_0x45b1('0x47')][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x56b19a[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x44ea3a[_0x45b1('0x47')][_0x45b1('0x29')]);_0x56b19a[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x44ea3a['query'][_0x45b1('0x26')]);}return _0x57cdde[_0x45b1('0x145')](_0x56b19a);}})[_0x45b1('0x18')](function(_0x197c6f){if(_0x197c6f){return _0x197c6f?{'count':_0x24b307,'rows':_0x197c6f}:null;}})[_0x45b1('0x18')](respondWithResult(_0x11153f,null))[_0x45b1('0x21')](handleError(_0x11153f,null));};exports[_0x45b1('0x147')]=function(_0x613e0e,_0x13a414){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x613e0e[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x13a414,null))[_0x45b1('0x18')](function(_0x1e6b46){if(_0x1e6b46){return _0x1e6b46[_0x45b1('0x147')](_0x613e0e[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x613e0e[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x13a414,null))['catch'](handleError(_0x13a414,null));};exports[_0x45b1('0x148')]=function(_0x27da70,_0x1f6cf7){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x27da70[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x1f6cf7,null))[_0x45b1('0x18')](function(_0x18c83b){if(_0x18c83b){return _0x18c83b[_0x45b1('0x148')](_0x27da70[_0x45b1('0x47')]['ids']);}})['then'](respondWithStatusCode(_0x1f6cf7,null))['catch'](handleError(_0x1f6cf7,null));};exports[_0x45b1('0x149')]=function(_0x382761,_0x1b96aa){var _0x3cbf89={};var _0x374868={};var _0x321781;var _0x15d15c;return db['User']['findOne']({'where':{'id':_0x382761[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x1b96aa,null))[_0x45b1('0x18')](function(_0x5ac5d6){if(_0x5ac5d6){_0x321781=_0x5ac5d6;_0x374868['model']=_['keys'](db['WhatsappAccount']['rawAttributes']);_0x374868[_0x45b1('0x47')]=_[_0x45b1('0x58')](_0x382761[_0x45b1('0x47')]);_0x374868[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x374868[_0x45b1('0x57')],_0x374868['query']);_0x3cbf89[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x374868[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x382761[_0x45b1('0x47')][_0x45b1('0x5c')]));_0x3cbf89['attributes']=_0x3cbf89['attributes'][_0x45b1('0x51')]?_0x3cbf89[_0x45b1('0x4c')]:_0x374868[_0x45b1('0x57')];_0x3cbf89['order']=qs[_0x45b1('0xce')](_0x382761['query'][_0x45b1('0xce')]);_0x3cbf89[_0x45b1('0x46')]=qs[_0x45b1('0x5a')](_[_0x45b1('0xcf')](_0x382761[_0x45b1('0x47')],_0x374868[_0x45b1('0x5a')]));if(_0x382761[_0x45b1('0x47')][_0x45b1('0x35')]){_0x3cbf89[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x3cbf89['where'],{'$or':_[_0x45b1('0x37')](_0x3cbf89[_0x45b1('0x4c')],function(_0x17ef92){var _0x4c55be={};_0x4c55be[_0x17ef92]={'$like':'%'+_0x382761[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0x4c55be;})});}_0x3cbf89=_[_0x45b1('0xd0')]({},_0x3cbf89,_0x382761[_0x45b1('0xd1')]);return _0x321781[_0x45b1('0x149')](_0x3cbf89);}})[_0x45b1('0x18')](function(_0x2efdd6){if(_0x2efdd6){_0x15d15c=_0x2efdd6[_0x45b1('0x51')];if(!_0x382761[_0x45b1('0x47')][_0x45b1('0xd2')]('nolimit')){_0x3cbf89[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x382761[_0x45b1('0x47')][_0x45b1('0x29')]);_0x3cbf89[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x382761[_0x45b1('0x47')][_0x45b1('0x26')]);}return _0x321781[_0x45b1('0x149')](_0x3cbf89);}})[_0x45b1('0x18')](function(_0xff9d67){if(_0xff9d67){return _0xff9d67?{'count':_0x15d15c,'rows':_0xff9d67}:null;}})[_0x45b1('0x18')](respondWithResult(_0x1b96aa,null))[_0x45b1('0x21')](handleError(_0x1b96aa,null));};exports[_0x45b1('0x14a')]=function(_0x1defb4,_0x1e0f52){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x1defb4[_0x45b1('0x56')]['id']}})['then'](handleEntityNotFound(_0x1e0f52,null))['then'](function(_0x197480){if(_0x197480){return _0x197480[_0x45b1('0x14a')](_0x1defb4[_0x45b1('0x62')][_0x45b1('0x65')],_[_0x45b1('0x66')](_0x1defb4[_0x45b1('0x62')],[_0x45b1('0x65'),'id'])||{});}})[_0x45b1('0x18')](respondWithResult(_0x1e0f52,null))[_0x45b1('0x21')](handleError(_0x1e0f52,null));};exports[_0x45b1('0x14b')]=function(_0x711609,_0x5cf2ba){return db[_0x45b1('0x3f')][_0x45b1('0x39')]({'where':{'id':_0x711609['params']['id']}})['then'](handleEntityNotFound(_0x5cf2ba,null))[_0x45b1('0x18')](function(_0x349b3b){if(_0x349b3b){return _0x349b3b[_0x45b1('0x14b')](_0x711609[_0x45b1('0x47')][_0x45b1('0x65')]);}})[_0x45b1('0x18')](respondWithStatusCode(_0x5cf2ba,null))['catch'](handleError(_0x5cf2ba,null));};exports[_0x45b1('0x14c')]=function(_0x520e1a,_0x5eb4ea){var _0x5e29ce={},_0x56cc19={},_0x5f3ce3={'count':0x0,'rows':[]};var _0x150e98=db[_0x45b1('0x14d')][_0x45b1('0x40')];_0x56cc19['model']=_['keys'](_0x150e98);_0x56cc19[_0x45b1('0x47')]=_['keys'](_0x520e1a['query']);_0x56cc19[_0x45b1('0x5a')]=_[_0x45b1('0x5b')](_0x56cc19['model'],_0x56cc19[_0x45b1('0x47')]);_0x56cc19[_0x45b1('0x5a')]=_[_0x45b1('0xc9')](_0x56cc19[_0x45b1('0x5a')],['$and','$or',_0x45b1('0x14e'),'$gte',_0x45b1('0x14f'),_0x45b1('0x150'),_0x45b1('0x151'),_0x45b1('0x152'),_0x45b1('0x153'),_0x45b1('0x154'),_0x45b1('0x155'),'$in',_0x45b1('0x156'),_0x45b1('0x157'),_0x45b1('0x158'),_0x45b1('0x159'),_0x45b1('0x15a'),_0x45b1('0x157'),_0x45b1('0x15b'),_0x45b1('0x15c'),'$contained',_0x45b1('0x15d')]);_0x5e29ce[_0x45b1('0x4c')]=_[_0x45b1('0x5b')](_0x56cc19[_0x45b1('0x57')],qs[_0x45b1('0x5c')](_0x520e1a[_0x45b1('0x47')]['fields']));_0x5e29ce[_0x45b1('0x4c')]=_0x5e29ce[_0x45b1('0x4c')][_0x45b1('0x51')]?_0x5e29ce[_0x45b1('0x4c')]:_0x56cc19[_0x45b1('0x57')];if(!_0x520e1a['query'][_0x45b1('0xd2')](_0x45b1('0xd8'))){_0x5e29ce[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x520e1a['query'][_0x45b1('0x29')]);_0x5e29ce['offset']=qs[_0x45b1('0x26')](_0x520e1a[_0x45b1('0x47')][_0x45b1('0x26')]);}_0x5e29ce[_0x45b1('0xcd')]=qs[_0x45b1('0xce')](_0x520e1a['query'][_0x45b1('0xce')]);_0x5e29ce[_0x45b1('0x46')]=qs['filters'](_['pick'](_0x520e1a[_0x45b1('0x47')],_0x56cc19[_0x45b1('0x5a')]));if(_0x520e1a[_0x45b1('0x47')][_0x45b1('0x35')]){_0x5e29ce[_0x45b1('0x46')]=_[_0x45b1('0xd0')](_0x5e29ce['where'],{'$or':_[_0x45b1('0x37')](_0x5e29ce[_0x45b1('0x4c')],function(_0x18b9c2){var _0xef0a3={};_0xef0a3[_0x18b9c2]={'$like':'%'+_0x520e1a[_0x45b1('0x47')][_0x45b1('0x35')]+'%'};return _0xef0a3;})});}_0x5e29ce[_0x45b1('0x46')]={'$and':[_0x5e29ce[_0x45b1('0x46')],{'$or':[{'UserId':_0x520e1a[_0x45b1('0x56')]['id']},{'OwnerId':_0x520e1a['params']['id']}]}]};_0x5e29ce=_['merge']({},_0x5e29ce,_0x520e1a[_0x45b1('0xd1')]);var _0x2cc0cb={'where':_0x5e29ce[_0x45b1('0x46')]};return db[_0x45b1('0x14d')][_0x45b1('0x28')](_0x2cc0cb)[_0x45b1('0x18')](function(_0x2e6d0b){_0x5f3ce3[_0x45b1('0x28')]=_0x2e6d0b;if(_0x520e1a['query'][_0x45b1('0x48')]){_0x5e29ce[_0x45b1('0x49')]=[{'attributes':['id',_0x45b1('0x15e'),_0x45b1('0x15f'),_0x45b1('0xec')],'model':db[_0x45b1('0xcc')],'as':_0x45b1('0x160')},{'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x161')],'model':db[_0x45b1('0xad')],'as':_0x45b1('0xda')}];}return db[_0x45b1('0x14d')][_0x45b1('0x4e')](_0x5e29ce);})[_0x45b1('0x18')](function(_0x51f23){_0x5f3ce3[_0x45b1('0x50')]=_0x51f23;return _0x5f3ce3;})[_0x45b1('0x18')](respondWithFilteredResult(_0x5eb4ea,_0x5e29ce))[_0x45b1('0x21')](handleError(_0x5eb4ea,null));};exports[_0x45b1('0x162')]=function(_0xe5284f,_0x3793de){if(!_[_0x45b1('0x6b')](_0xe5284f[_0x45b1('0x32')]['id'])&&(_0xe5284f['user'][_0x45b1('0x2c')]==_0x45b1('0x85')||_0xe5284f['user'][_0x45b1('0x2c')]=='user')){return db[_0x45b1('0x3f')][_0x45b1('0xcb')]({'where':{'id':_0xe5284f['params']['id']},'raw':!![]})[_0x45b1('0x18')](function(_0x292dc4){return authService[_0x45b1('0x163')](_0x292dc4);})[_0x45b1('0x18')](function(_0x5357bc){if(_0x5357bc){return _0x3793de[_0x45b1('0x23')](0xc8)[_0x45b1('0x25')]({'api_key':_0x5357bc[_0x45b1('0x164')]});}else{return _0x3793de[_0x45b1('0x23')](0xcc)[_0x45b1('0x25')]({'message':_0x45b1('0x165')});}})[_0x45b1('0x21')](handleError(_0x3793de,0x193));}else{return _0x3793de[_0x45b1('0x23')](0x191)['json']({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0x45b1('0x166')]=function(_0x204c5f,_0x338f67){if(!_[_0x45b1('0x6b')](_0x204c5f[_0x45b1('0x32')]['id'])&&(_0x204c5f[_0x45b1('0x32')][_0x45b1('0x2c')]==_0x45b1('0x85')||_0x204c5f[_0x45b1('0x32')][_0x45b1('0x2c')]==_0x45b1('0x32'))){return db['User'][_0x45b1('0x39')]({'where':{'id':_0x204c5f[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](function(_0x1e1408){return authService['generateApiKey'](_0x1e1408);})[_0x45b1('0x18')](function(_0x3da4cb){return db[_0x45b1('0x3f')][_0x45b1('0x2b')]({'apiKeyIat':_0x3da4cb[_0x45b1('0x167')],'apiKeyNonce':_0x3da4cb['nonce']},{'where':{'id':_0x204c5f['params']['id']}})[_0x45b1('0x18')](function(){return _0x338f67[_0x45b1('0x23')](0xc8)[_0x45b1('0x25')]({'api_key':_0x3da4cb['token']});});})['catch'](handleError(_0x338f67,0x193));}else{return _0x338f67[_0x45b1('0x23')](0x191)[_0x45b1('0x25')]({'message':_0x45b1('0x168')});}};exports[_0x45b1('0x169')]=function(_0x32215e,_0x39c540){if(!_[_0x45b1('0x6b')](_0x32215e[_0x45b1('0x32')]['id'])&&(_0x32215e[_0x45b1('0x32')][_0x45b1('0x2c')]==_0x45b1('0x85')||_0x32215e[_0x45b1('0x32')]['role']==_0x45b1('0x32'))){return db[_0x45b1('0x3f')]['find']({'where':{'id':_0x32215e[_0x45b1('0x56')]['id']}})[_0x45b1('0x18')](handleEntityNotFound(_0x39c540,null))['then'](function(_0x1331ec){if(_0x1331ec&&_0x1331ec[_0x45b1('0x16a')]&&_0x1331ec['apiKeyIat'])return _0x1331ec;else throw{'message':_0x45b1('0x16b')};})[_0x45b1('0x18')](function(){return db[_0x45b1('0x3f')][_0x45b1('0x2b')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x32215e[_0x45b1('0x56')]['id']}});})['then'](respondWithStatusCode(_0x39c540,0xc8))['catch'](handleError(_0x39c540,0x193));}else{return _0x39c540[_0x45b1('0x23')](0x191)[_0x45b1('0x25')]({'message':_0x45b1('0x168')});}};exports[_0x45b1('0x16c')]=function(_0x1427a1,_0x1e0b14){var _0x49c17b=_0x1427a1[_0x45b1('0x32')][_0x45b1('0x30')]({'plain':!![]});if(!_0x49c17b){return _0x1e0b14[_0x45b1('0x23')](0x191)[_0x45b1('0x3e')](_0x45b1('0x16d'));}else{Promise[_0x45b1('0xfe')]()[_0x45b1('0x18')](function(){if(_0x1427a1[_0x45b1('0x47')][_0x45b1('0x4a')]!==_0x45b1('0x4f'))return;return _0x1427a1[_0x45b1('0x32')][_0x45b1('0x16e')]();})[_0x45b1('0x18')](function(_0x26485a){if(!_0x26485a)return;return _0x26485a['get']({'plain':!![]});})[_0x45b1('0x18')](function(_0x2e595c){_0x49c17b['userSetting']=_0x2e595c;return _0x1e0b14['status'](0xc8)[_0x45b1('0x25')](_0x49c17b);});}};exports['getPresence']=function(_0x4aafd6,_0x4990f4){var _0x49e8a6={'offset':0x0},_0x2c9769={'count':0x0,'rows':[]};Promise[_0x45b1('0xfe')]()['then'](function(){if(!_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')]&&!_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x16f')]&&!_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x170')])return[];return Promise[_0x45b1('0xfe')]()[_0x45b1('0x18')](function(){var _0xe7fb54=[];if(!_[_0x45b1('0x171')](_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x16f')])){_0xe7fb54[_0x45b1('0x4d')](db[_0x45b1('0x10d')]['findAll']({'attributes':['id',_0x45b1('0x3a')],'where':{'id':_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x16f')]}}));}if(!_[_0x45b1('0x171')](_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x170')])){_0xe7fb54[_0x45b1('0x4d')](db[_0x45b1('0xad')][_0x45b1('0x4e')]({'attributes':['id',_0x45b1('0x3a')],'type':_0x45b1('0x172'),'where':{'id':_0x4aafd6[_0x45b1('0x47')]['queues']}}));}return Promise[_0x45b1('0x54')](_0xe7fb54);})[_0x45b1('0x18')](function(_0x4e2d94){var _0x56a520=_[_0x45b1('0x173')](_0x4e2d94)['map'](function(_0x100593){return _0x100593[_0x45b1('0x11b')]({'attributes':['id',_0x45b1('0x3a'),'internal',_0x45b1('0xa1')],'raw':!![]});});return Promise['all'](_0x56a520);})[_0x45b1('0x18')](function(_0x3d7068){var _0x5dec53=_['flatten'](_0x3d7068);if(!_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')])return _0x5dec53;if(_[_0x45b1('0x171')](_0x5dec53)){return db[_0x45b1('0x3f')]['findAll']({'attributes':['id',_0x45b1('0x3a'),_0x45b1('0x6a'),'online'],'where':{'role':_0x45b1('0x2d'),'$or':[db[_0x45b1('0x6e')][_0x45b1('0x46')](db[_0x45b1('0x6e')]['fn'](_0x45b1('0x174'),db[_0x45b1('0x6e')][_0x45b1('0x175')](_0x45b1('0x3a'))),{'$like':'%'+_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')]['toLowerCase']()+'%'}),{'internal':{'$like':'%'+_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')]+'%'}}]},'raw':!![]});}else{return _(_0x5dec53)[_0x45b1('0x173')]()[_0x45b1('0x35')](function(_0x435807){return _0x435807['name']['toLowerCase']()[_0x45b1('0x43')](_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')][_0x45b1('0xa6')]())||_0x435807[_0x45b1('0x6a')][_0x45b1('0x176')]()[_0x45b1('0x43')](_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x35')]);})['value']();}})[_0x45b1('0x18')](function(_0x7fef2){var _0x280205=_0x45b1('0x3a');var _0x3cfd3c=_0x45b1('0x177');if(_0x4aafd6[_0x45b1('0x47')]['sort']){_0x3cfd3c=_0x4aafd6[_0x45b1('0x47')][_0x45b1('0xce')][0x0]==='-'?_0x45b1('0x178'):_0x45b1('0x177');_0x280205=_0x3cfd3c===_0x45b1('0x177')?_0x4aafd6[_0x45b1('0x47')][_0x45b1('0xce')]:_0x4aafd6['query'][_0x45b1('0xce')][_0x45b1('0x179')](0x1);}return _(_0x7fef2)['uniqBy']('id')[_0x45b1('0x17a')]([function(_0x1913c5){return _0x280205==='name'?_0x1913c5[_0x280205][_0x45b1('0xa6')]():_0x1913c5[_0x280205];}],[_0x3cfd3c])[_0x45b1('0x37')](function(_0x166829){return _[_0x45b1('0xcf')](_0x166829,['id',_0x45b1('0x3a'),'internal',_0x45b1('0xa1')]);})['value']();})[_0x45b1('0x18')](function(_0x486639){return amiClient[_0x45b1('0x17')](_0x45b1('0x33'),_0x4aafd6)[_0x45b1('0x18')](function(_0x592493){if(_0x592493['error'])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)');var _0x54d794=_0x592493[_0x45b1('0x20')];var _0x1734d1=jayson[_0x45b1('0x15')][_0x45b1('0x16')]({'port':0x232c});return _0x1734d1['request'](_0x45b1('0x33'),_0x4aafd6)[_0x45b1('0x18')](function(_0x5ba3bc){if(_0x5ba3bc[_0x45b1('0x1c')])throw new Error(_0x45b1('0x17b'));var _0x41d731=_0x5ba3bc['result'];return _[_0x45b1('0xd0')]({},_0x41d731,_0x54d794);});})[_0x45b1('0x18')](function(_0x4afb83){return _['map'](_0x486639,function(_0x32c3c1){var _0x1602e7=_[_0x45b1('0x39')](_0x4afb83[_0x45b1('0x50')],['id',_0x32c3c1['id']]);if(!_0x1602e7||!_0x32c3c1[_0x45b1('0xa1')]){_0x32c3c1['status']=_0x45b1('0x17c');}else if(_0x1602e7[_0x45b1('0xb0')]){_0x32c3c1[_0x45b1('0x23')]=_0x45b1('0xff');}else{_0x32c3c1[_0x45b1('0x23')]=_[_0x45b1('0x43')]([_0x45b1('0x17d'),_0x45b1('0x17e'),_0x45b1('0x17f'),_0x45b1('0x180'),null,undefined],_0x1602e7[_0x45b1('0x181')])?_0x45b1('0xa1'):_0x45b1('0x182');}return _0x32c3c1;});});});})['then'](function(_0x40dda2){if(!_0x4aafd6[_0x45b1('0x47')]['hasOwnProperty'](_0x45b1('0xd8'))){_0x49e8a6[_0x45b1('0x29')]=qs[_0x45b1('0x29')](_0x4aafd6['query'][_0x45b1('0x29')]||0xa);_0x49e8a6[_0x45b1('0x26')]=qs[_0x45b1('0x26')](_0x4aafd6[_0x45b1('0x47')][_0x45b1('0x26')]);}_0x2c9769[_0x45b1('0x28')]=_0x40dda2['length'];_0x2c9769[_0x45b1('0x50')]=_0x49e8a6[_0x45b1('0x29')]?_0x40dda2[_0x45b1('0x183')](_0x49e8a6['offset'],_0x49e8a6['offset']+_0x49e8a6[_0x45b1('0x29')]):_0x40dda2;return _0x2c9769;})[_0x45b1('0x18')](respondWithFilteredResult(_0x4990f4,_0x49e8a6))[_0x45b1('0x21')](handleError(_0x4990f4,null));};function get_open_tabs(_0x44ad1c,_0x3d550d){var _0x49326f=_0x44ad1c[_0x45b1('0x184')](0x0)[_0x45b1('0x185')]()+_0x44ad1c[_0x45b1('0x183')](0x1);var _0x3812e4={'type':db['Sequelize'][_0x45b1('0x6f')][_0x45b1('0x186')],'raw':!![]};return new Promise(function(_0x361b1d,_0x254b29){var _0x3dc28a=squel[_0x45b1('0x187')]()[_0x45b1('0x188')](_0x45b1('0x189')+_0x49326f+'InteractionId','id')[_0x45b1('0x188')](_0x45b1('0x18a'))[_0x45b1('0x70')]('user_has_'+_0x44ad1c+_0x45b1('0x18b'),'ui')[_0x45b1('0x46')](_0x45b1('0x18c'),_0x3d550d['id']);return db[_0x45b1('0x6e')][_0x45b1('0x47')](_0x3dc28a['toString'](),_0x3812e4)[_0x45b1('0x18')](function(_0x72dfc9){_0x3d550d[_0x49326f+'OpenTabs']=_0x72dfc9;_0x361b1d(_0x72dfc9);})[_0x45b1('0x21')](function(_0x179584){_0x254b29(_0x179584);});});}
\ No newline at end of file
+var _0xf29f=['faxPause','openchannelPause','smsPause','whatsappPause','pauseType','User\x20with\x20id\x20%s\x20not\x20found','unpause','getTeams','addTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','transaction','Team','getAssociatedQueues','addAgent','getDataValue','Voice','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','Query\x20parameter\x20\x27ids\x27\x20is\x20required','flattenDeep','removeAgent','getLists','getVoiceQueues','values','You\x20can\x27t\x20delete\x20yourself','addChatInteractions','omit','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','addOpenchannelInteractions','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','user_has_whatsapp_interactions:save','removeWhatsappInteractions','getVoicePrefixes','VoicePrefix','getFaxAccounts','FaxAccount','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','getOpenchannelAccounts','OpenchannelAccount','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getScheduledCalls','CmHopper','$and','$or','$gte','$lt','$lte','$ne','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$any','lastName','Contact','retrieveApiKey','token','No\x20API\x20access\x20key\x20found!','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','nonce','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','flatten','getAgents','lower','col','toString','asc','desc','substring','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','http','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unavailable','ringing','voiceStatus','toUpperCase','slice','select','InteractionId','field','ui.createdAt','user_has_','_interactions','OpenTabs','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../errors/api','APINotFoundError','handleError','../../mysqldb','./user.socket','register','redis','localhost','client','request','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','status','end','offset','limit','undefined','count','set','json','update','emit','get','role','admin','Users','user','Agents','agent','Telephones','filter','ignore','map','value','includes','find','name','UserProfileResource','destroy','sendStatus','stack','send','index','rawAttributes','fieldName','type','key','salt','where','User','query','includeAll','include','userSetting','true','attributes','findAll','rows','openTabs','length','push','chat','dataValues','mail','whatsapp','all','show','model','differenceBy','keys','password','filters','intersection','fields','UserSetting','options','sms','openchannel','fax','body','describe','addContacts','params','ids','Setting','findById','securePassword','validatePasswordPattern','internal','isNil','min_internal','sequelize','select\x20(select\x20IFNULL(max(internal)+1,1)\x20from\x20users\x20where\x20internal\x20<\x20md.internal)\x20as\x20\x27from\x27,\x20md.internal\x20-\x201\x20as\x20\x27to\x27\x20from\x20users\x20md\x20where\x20md.internal\x20!=\x201\x20and\x20not\x20exists\x20(select\x201\x20from\x20users\x20md2\x20where\x20md2.internal\x20=\x20md.internal\x20-\x201)','QueryTypes','SELECT','from','voicemail','VoiceMail','fullname','email','permissions','101','102','103','113','110','104','105','106','107','109','100','114','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator','checkUserLimits','settingsEnabled','userProfileId','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','telephone','isEmpty','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','Invalid\x20body\x20format.\x20Use\x20newPassword','findOne','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','online','loginInPause','voicePause','interface','isValidChannel','Unknown\x20channel','add','capitalize','toLowerCase','Queues','penalty','spread','Queue:save','voice','VoiceQueue','format','SIP/%s','UserVoiceQueueRt','upsert','removeQueues','remove','isArray','QueueId','Queue:remove','userpic','file','filename','getAvatar','join','root','existsSync','server/files/images/','download','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FAX','OpenchannelOpenTabs','OPENCHANNEL','MailOpenTabs','MAIL','SmsOpenTabs','SMS','WHATSAPP','getContacts','CmContact','sort','pick','merge','hasOwnProperty','CmList','List','Tags','tag','Queue','order','Unknown\x20role','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','UserId','VoiceRecording','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','getMailInteractions','MailInteraction','getSmsInteractions','FaxInteraction','getFaxInteractions','WhatsappInteraction','getWhatsappInteractions','login','phone','LOCAL/%s@from-sip/n','intrf','user:%s','headers','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','UserVoiceQueue.penalty','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','MemberReport','concat','isMiddleware','resolve','QueuePause','pause','updateAttributes','DEFAULT\x20PAUSE','Channel\x20parameter\x20%s\x20is\x20invalid','mailPause'];(function(_0x294dde,_0x5de89a){var _0x396f6c=function(_0x9e0bce){while(--_0x9e0bce){_0x294dde['push'](_0x294dde['shift']());}};_0x396f6c(++_0x5de89a);}(_0xf29f,0x87));var _0xff29=function(_0x1f0a22,_0x199a06){_0x1f0a22=_0x1f0a22-0x0;var _0xd8b67f=_0xf29f[_0x1f0a22];return _0xd8b67f;};'use strict';var moment=require('moment');var util=require('util');var path=require(_0xff29('0x0'));var fs=require('fs');var _=require(_0xff29('0x1'));var squel=require(_0xff29('0x2'));var jayson=require(_0xff29('0x3'));var Redis=require(_0xff29('0x4'));var authService=require(_0xff29('0x5'));var qs=require(_0xff29('0x6'));var logger=require(_0xff29('0x7'))(_0xff29('0x8'));var utils=require(_0xff29('0x9'));var config=require(_0xff29('0xa'));var licenseUtil=require(_0xff29('0xb'));var APIBadRequestError=require(_0xff29('0xc'))['APIBadRequestError'];var APINotFoundError=require(_0xff29('0xc'))[_0xff29('0xd')];var APIHandleError=require(_0xff29('0xc'))[_0xff29('0xe')];var db=require(_0xff29('0xf'))['db'];var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xff29('0x10'))[_0xff29('0x11')](socket);config[_0xff29('0x12')]=_['defaults'](config['redis'],{'host':_0xff29('0x13'),'port':0x18eb});var amiClient=jayson[_0xff29('0x14')]['http']({'port':0x232a});var values;function respondWithRpcPromise(_0x437d72,_0x2e4de7,_0x92ddd1,_0x2b883a){return new Promise(function(_0x12af73,_0x3a5060){var _0x1c6a84=_0x2b883a||amiClient;return _0x1c6a84[_0xff29('0x15')](_0x437d72,_0x92ddd1)[_0xff29('0x16')](function(_0x5e9921){logger[_0xff29('0x17')](_0xff29('0x18'),_0x2e4de7,'request\x20sent');logger[_0xff29('0x19')](_0xff29('0x1a'),_0x2e4de7,_0xff29('0x1b'),JSON['stringify'](_0x5e9921));if(_0x5e9921[_0xff29('0x1c')]){if(_0x5e9921[_0xff29('0x1c')][_0xff29('0x1d')]===0x1f4){logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x5e9921[_0xff29('0x1c')][_0xff29('0x1e')]);return _0x3a5060(_0x5e9921[_0xff29('0x1c')]['message']);}logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x5e9921['error'][_0xff29('0x1e')]);return _0x12af73(_0x5e9921[_0xff29('0x1c')]['message']);}else{logger[_0xff29('0x17')](_0xff29('0x18'),_0x2e4de7,_0xff29('0x1b'));_0x12af73(_0x5e9921[_0xff29('0x1f')]['message']);}})[_0xff29('0x20')](function(_0x57e74c){logger[_0xff29('0x1c')](_0xff29('0x18'),_0x2e4de7,_0x57e74c);_0x3a5060(_0x57e74c);});});}function respondWithStatusCode(_0x5172f4,_0x1db81f){_0x1db81f=_0x1db81f||0xcc;return function(_0x2de1ea){if(_0x2de1ea){return _0x5172f4['sendStatus'](_0x1db81f);}return _0x5172f4[_0xff29('0x21')](_0x1db81f)[_0xff29('0x22')]();};}function respondWithResult(_0x3c4e21,_0x2d30e7){_0x2d30e7=_0x2d30e7||0xc8;return function(_0x1e96a4){if(_0x1e96a4){return _0x3c4e21['status'](_0x2d30e7)['json'](_0x1e96a4);}};}function respondWithFilteredResult(_0x59ff5c,_0x2fc4b1){return function(_0x165d5b){if(_0x165d5b){var _0x2322c3=typeof _0x2fc4b1[_0xff29('0x23')]==='undefined'&&typeof _0x2fc4b1[_0xff29('0x24')]===_0xff29('0x25');var _0x225f41=_0x165d5b[_0xff29('0x26')];var _0x3bb42b=_0x2322c3?0x0:_0x2fc4b1[_0xff29('0x23')];var _0x35cc88=_0x2322c3?_0x165d5b[_0xff29('0x26')]:_0x2fc4b1[_0xff29('0x23')]+_0x2fc4b1[_0xff29('0x24')];var _0x1a7311;if(_0x35cc88>=_0x225f41){_0x35cc88=_0x225f41;_0x1a7311=0xc8;}else{_0x1a7311=0xce;}_0x59ff5c[_0xff29('0x21')](_0x1a7311);return _0x59ff5c[_0xff29('0x27')]('Content-Range',_0x3bb42b+'-'+_0x35cc88+'/'+_0x225f41)[_0xff29('0x28')](_0x165d5b);}return null;};}function saveUpdates(_0x17c83b){return function(_0xc98d03){if(_0xc98d03){return _0xc98d03[_0xff29('0x29')](_0x17c83b)[_0xff29('0x16')](function(_0x499507){socket[_0xff29('0x2a')]('userNotification:recalc:'+_0x499507['id'],{});return _0x499507;});}return null;};}function removeEntity(_0x4e75c8){return function(_0x568131){if(_0x568131){return _0x568131['destroy']()[_0xff29('0x16')](function(){var _0x5076f5=_0x568131[_0xff29('0x2b')]({'plain':!![]});if(_0x5076f5[_0xff29('0x2c')]===_0xff29('0x2d'))return;var _0x2dba51=[{'name':_0xff29('0x2e'),'value':_0xff29('0x2f'),'ignore':!![]},{'name':_0xff29('0x30'),'value':_0xff29('0x31'),'ignore':![]},{'name':_0xff29('0x32'),'value':'telephone','ignore':![]}];var _0x1a5d6c=_(_0x2dba51)[_0xff29('0x33')](_0xff29('0x34'))[_0xff29('0x35')](_0xff29('0x36'))['value']();if(_[_0xff29('0x37')](_0x1a5d6c,_0x5076f5[_0xff29('0x2c')])){return;}var _0x53f230=_[_0xff29('0x38')](_0x2dba51,[_0xff29('0x36'),_0x5076f5[_0xff29('0x2c')]])[_0xff29('0x39')];return db[_0xff29('0x3a')][_0xff29('0x3b')]({'where':{'type':_0x53f230,'resourceId':_0x5076f5['id']}})[_0xff29('0x16')](function(){return _0x568131;});})[_0xff29('0x16')](function(){_0x4e75c8[_0xff29('0x21')](0xcc)[_0xff29('0x22')]();});}};}function handleEntityNotFound(_0x4df61c){return function(_0x490568){if(!_0x490568){_0x4df61c[_0xff29('0x3c')](0x194);}return _0x490568;};}function handleError(_0x1856d4,_0x18b887){_0x18b887=_0x18b887||0x1f4;return function(_0x104aa8){logger[_0xff29('0x1c')](_0x104aa8[_0xff29('0x3d')]);if(_0x104aa8['name']){delete _0x104aa8['name'];}_0x1856d4[_0xff29('0x21')](_0x18b887)[_0xff29('0x3e')](_0x104aa8);};}exports[_0xff29('0x3f')]=function(_0x138845,_0x2afa57){var _0x15b616={},_0x1d4bd0={'count':0x0,'rows':[]};var _0x1c3d51=_(db['User'][_0xff29('0x40')])[_0xff29('0x35')](function(_0x1b2da4){return{'name':_0x1b2da4[_0xff29('0x41')],'type':_0x1b2da4[_0xff29('0x42')][_0xff29('0x43')]};})['filter'](function(_0xfbb302){return!_[_0xff29('0x37')](['password',_0xff29('0x44')],_0xfbb302[_0xff29('0x39')]);})[_0xff29('0x36')]();_0x15b616=qs['getOptions'](_0x1c3d51,_0x138845);var _0x2c336d={'where':_0x15b616[_0xff29('0x45')]};return db[_0xff29('0x46')][_0xff29('0x26')](_0x2c336d)[_0xff29('0x16')](function(_0x4eafa8){_0x1d4bd0[_0xff29('0x26')]=_0x4eafa8;if(_0x138845[_0xff29('0x47')][_0xff29('0x48')]){_0x15b616[_0xff29('0x49')]=[{'all':!![]}];}if(_0x138845[_0xff29('0x47')][_0xff29('0x4a')]===_0xff29('0x4b')){_0x15b616['include']=[{'model':db['UserSetting'],'as':'userSetting'}];}if(!_[_0xff29('0x37')](_0x15b616['attributes'],'id')){_0x15b616[_0xff29('0x4c')]['push']('id');}return db['User'][_0xff29('0x4d')](_0x15b616);})['then'](function(_0x44f98f){_0x1d4bd0[_0xff29('0x4e')]=_0x44f98f;if(_0x138845[_0xff29('0x47')][_0xff29('0x4f')]==='true'){var _0x49f836=[];for(var _0x26be5f=0x0;_0x26be5f<_0x1d4bd0[_0xff29('0x4e')][_0xff29('0x50')];_0x26be5f++){_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836['push'](get_open_tabs('sms',_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs('fax',_0x1d4bd0['rows'][_0x26be5f]['dataValues']));_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x54'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs('openchannel',_0x1d4bd0[_0xff29('0x4e')][_0x26be5f][_0xff29('0x53')]));_0x49f836[_0xff29('0x51')](get_open_tabs(_0xff29('0x55'),_0x1d4bd0[_0xff29('0x4e')][_0x26be5f]['dataValues']));}return Promise[_0xff29('0x56')](_0x49f836)[_0xff29('0x16')](function(){return _0x1d4bd0;});}else{return _0x1d4bd0;}})[_0xff29('0x16')](respondWithFilteredResult(_0x2afa57,_0x15b616))['catch'](handleError(_0x2afa57,null));};exports[_0xff29('0x57')]=function(_0x346dc3,_0x4733f0){var _0x209209={'raw':![],'where':{'id':_0x346dc3['params']['id']}},_0x4b758a={};_0x4b758a[_0xff29('0x58')]=_[_0xff29('0x59')](_[_0xff29('0x5a')](db[_0xff29('0x46')]['rawAttributes']),[_0xff29('0x5b'),_0xff29('0x44')]);_0x4b758a['query']=_[_0xff29('0x5a')](_0x346dc3[_0xff29('0x47')]);_0x4b758a[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x4b758a[_0xff29('0x58')],_0x4b758a[_0xff29('0x47')]);_0x209209[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x4b758a[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x346dc3[_0xff29('0x47')][_0xff29('0x5e')]));_0x209209[_0xff29('0x4c')]=_0x209209[_0xff29('0x4c')][_0xff29('0x50')]?_0x209209[_0xff29('0x4c')]:_0x4b758a[_0xff29('0x58')];if(_0x346dc3['query'][_0xff29('0x48')]){_0x209209['include']=[{'all':!![]}];}if(_0x346dc3[_0xff29('0x47')][_0xff29('0x4a')]===_0xff29('0x4b')){_0x209209[_0xff29('0x49')]=[{'model':db[_0xff29('0x5f')],'as':_0xff29('0x4a')}];}_0x209209=_['merge']({},_0x209209,_0x346dc3[_0xff29('0x60')]);if(!_['includes'](_0x209209[_0xff29('0x4c')],'id')){_0x209209['attributes'][_0xff29('0x51')]('id');}return db['User'][_0xff29('0x38')](_0x209209)['then'](handleEntityNotFound(_0x4733f0,null))[_0xff29('0x16')](function(_0x2d8f44){var _0x3927f2=[];values=_0x2d8f44;if(_0x346dc3[_0xff29('0x47')]['openTabs']===_0xff29('0x4b')){_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x61'),_0x2d8f44['dataValues']));_0x3927f2['push'](get_open_tabs(_0xff29('0x62'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x55'),_0x2d8f44[_0xff29('0x53')]));_0x3927f2[_0xff29('0x51')](get_open_tabs(_0xff29('0x63'),_0x2d8f44['dataValues']));_0x3927f2['push'](get_open_tabs(_0xff29('0x54'),_0x2d8f44[_0xff29('0x53')]));return Promise[_0xff29('0x56')](_0x3927f2);}else{return values;}})['then'](function(){return values;})[_0xff29('0x16')](respondWithResult(_0x4733f0,null))[_0xff29('0x20')](handleError(_0x4733f0,null));};exports['update']=function(_0x1bc597,_0x47cf2d){if(_0x1bc597[_0xff29('0x64')]['id']){delete _0x1bc597['body']['id'];}delete _0x1bc597['body']['role'];return db[_0xff29('0x46')]['find']({'where':{'id':_0x1bc597['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x47cf2d,null))[_0xff29('0x16')](saveUpdates(_0x1bc597[_0xff29('0x64')],null))[_0xff29('0x16')](respondWithResult(_0x47cf2d,null))[_0xff29('0x20')](handleError(_0x47cf2d,null));};exports['describe']=function(_0x283803,_0x35993c){return db['User'][_0xff29('0x65')]()[_0xff29('0x16')](respondWithResult(_0x35993c,null))[_0xff29('0x20')](handleError(_0x35993c,null));};exports[_0xff29('0x66')]=function(_0x80993c,_0x372012){return db[_0xff29('0x46')]['find']({'where':{'id':_0x80993c[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x372012,null))[_0xff29('0x16')](function(_0x18910d){if(_0x18910d){return _0x18910d[_0xff29('0x66')](_0x80993c[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0x80993c[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x372012,null))[_0xff29('0x20')](handleError(_0x372012,null));};function validateUser(_0x320c31){return new Promise(function(_0x5da39e,_0x132a46){if(_0x320c31['internal'])return _0x5da39e(_0x320c31);return db[_0xff29('0x69')][_0xff29('0x6a')](0x1)[_0xff29('0x16')](function(_0x471059){if(_0x471059[_0xff29('0x6b')])authService[_0xff29('0x6c')](_0x320c31[_0xff29('0x5b')]);db[_0xff29('0x46')]['max'](_0xff29('0x6d'))[_0xff29('0x16')](function(_0x5cc21d){if(_[_0xff29('0x6e')](_0x5cc21d)){_0x320c31[_0xff29('0x6d')]=_0x471059[_0xff29('0x6f')]||0x1;return;}if(_[_0xff29('0x6e')](_0x471059[_0xff29('0x6f')])||_0x471059[_0xff29('0x6f')]===_0x5cc21d){_0x320c31[_0xff29('0x6d')]=_0x5cc21d+0x1;return;}if(_0x471059[_0xff29('0x6f')]>_0x5cc21d){_0x320c31[_0xff29('0x6d')]=_0x471059[_0xff29('0x6f')];return;}return db[_0xff29('0x70')][_0xff29('0x47')](_0xff29('0x71'),{'type':db[_0xff29('0x70')][_0xff29('0x72')][_0xff29('0x73')]})[_0xff29('0x16')](function(_0x16a975){if(_0x16a975&&_0x16a975[_0xff29('0x50')]){for(var _0xe7235f=0x0,_0x16a42a=_0x16a975[_0xff29('0x50')];_0xe7235f<_0x16a42a&&_[_0xff29('0x6e')](_0x320c31[_0xff29('0x6d')]);_0xe7235f++){if(_0x471059[_0xff29('0x6f')]<=_0x16a975[_0xe7235f][_0xff29('0x74')]){_0x320c31[_0xff29('0x6d')]=_0x16a975[_0xe7235f][_0xff29('0x74')];}else if(_0x471059[_0xff29('0x6f')]>_0x16a975[_0xe7235f][_0xff29('0x74')]&&_0x471059['min_internal']<=_0x16a975[_0xe7235f]['to']){_0x320c31[_0xff29('0x6d')]=_0x471059['min_internal'];}}}if(_[_0xff29('0x6e')](_0x320c31['internal'])){_0x320c31[_0xff29('0x6d')]=_0x5cc21d+0x1;}return _0x5da39e(_0x320c31);});});})['catch'](function(_0x498d4e){_0x132a46(_0x498d4e);});});}function updateUser(_0x505bf8){return new Promise(function(_0x2227a2,_0x18c5a6){try{if(_0x505bf8[_0xff29('0x75')]){_0x505bf8['mailbox']=_0x505bf8[_0xff29('0x6d')];_0x505bf8[_0xff29('0x76')]={'mailbox':_0x505bf8[_0xff29('0x6d')],'password':_0x505bf8['password'],'fullname':_0x505bf8[_0xff29('0x77')],'email':_0x505bf8[_0xff29('0x78')]};}if(_0x505bf8['role']==='agent'){if(!_0x505bf8[_0xff29('0x79')])_0x505bf8['permissions']=[_0xff29('0x7a'),_0xff29('0x7b'),_0xff29('0x7c'),_0xff29('0x7d'),_0xff29('0x7e'),_0xff29('0x7f'),_0xff29('0x80'),_0xff29('0x81'),_0xff29('0x82'),'108',_0xff29('0x83'),_0xff29('0x84'),'111',_0xff29('0x85'),_0xff29('0x86')];}_0x2227a2(_0x505bf8);}catch(_0x4b1e24){_0x18c5a6(_0x4b1e24);}});}exports[_0xff29('0x87')]=function(_0x186d50,_0x3b39fa){if(_0x186d50[_0xff29('0x2f')][_0xff29('0x2c')]===_0xff29('0x31'))throw new Error(_0xff29('0x88'));if(_0x186d50[_0xff29('0x64')]['role']===_0xff29('0x2f')&&_0x186d50[_0xff29('0x2f')][_0xff29('0x2c')]!==_0xff29('0x2d')){throw new Error(_0xff29('0x89'));}if(_0x186d50['body'][_0xff29('0x2c')]==='admin'&&_0x186d50['user'][_0xff29('0x2c')]!=='admin'){throw new Error(_0xff29('0x8a'));}return licenseUtil[_0xff29('0x8b')]([_0x186d50['body']])[_0xff29('0x16')](function(){return validateUser(_0x186d50[_0xff29('0x64')]);})['then'](function(_0x2e968f){return updateUser(_0x2e968f)[_0xff29('0x16')](function(_0x37e3da){if(_0x37e3da[_0xff29('0x2c')]===_0xff29('0x2d')){_0x37e3da[_0xff29('0x8c')]=_0x186d50[_0xff29('0x2f')][_0xff29('0x8c')];delete _0x37e3da[_0xff29('0x8d')];}return _0x37e3da;});})[_0xff29('0x16')](function(_0x5c4bc5){return db['User']['create'](_0x5c4bc5,{'include':[{'model':db[_0xff29('0x76')],'as':_0xff29('0x76')}]});})['then'](function(_0x765bc0){if(_0x186d50[_0xff29('0x64')][_0xff29('0x2c')]===_0xff29('0x2f'))return _0x765bc0;if(_0x186d50[_0xff29('0x2f')]['role']!==_0xff29('0x2f'))return _0x765bc0;return db[_0xff29('0x8e')]['find']({'where':{'name':_0x765bc0[_0xff29('0x2c')]===_0xff29('0x31')?_0xff29('0x30'):_0xff29('0x32'),'userProfileId':_0x186d50[_0xff29('0x2f')][_0xff29('0x8d')]},'raw':!![]})[_0xff29('0x16')](function(_0x30cffb){if(!_0x30cffb||_0x30cffb[_0xff29('0x8f')]!=0x0)return _0x765bc0;return db[_0xff29('0x3a')][_0xff29('0x87')]({'name':_0x765bc0[_0xff29('0x39')],'resourceId':_0x765bc0['id'],'type':_0x30cffb['name'],'sectionId':_0x30cffb['id']},{})[_0xff29('0x16')](function(){return _0x765bc0;});})[_0xff29('0x20')](function(_0x15fd72){logger[_0xff29('0x1c')](_0xff29('0x90'),_0x15fd72);throw _0x15fd72;});})['then'](respondWithResult(_0x3b39fa,0xc9))[_0xff29('0x20')](handleError(_0x3b39fa,null));};exports[_0xff29('0x91')]=function(_0x1cbb82,_0xf87fe4){var _0x2351e7=_0x1cbb82[_0xff29('0x64')];var _0x486ea8=[];if(_0x1cbb82[_0xff29('0x2f')][_0xff29('0x2c')]===_0xff29('0x31'))throw new Error(_0xff29('0x88'));if(_[_0xff29('0x92')](_0x2351e7,['role',_0xff29('0x2f')])&&_0x1cbb82[_0xff29('0x2f')]['role']!==_0xff29('0x2d')){throw new Error(_0xff29('0x89'));}if(_[_0xff29('0x92')](_0x2351e7,['role',_0xff29('0x2d')])&&_0x1cbb82[_0xff29('0x2f')][_0xff29('0x2c')]!==_0xff29('0x2d')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x2351e7)[_0xff29('0x16')](function(){return validateUser(_0x2351e7[0x0]);})[_0xff29('0x16')](function(){for(var _0x501926=0x1;_0x501926<_0x2351e7['length'];_0x501926++){var _0x5065cc=_0x2351e7[_0x501926-0x1]['internal'];if(!_0x2351e7[_0x501926][_0xff29('0x6d')])_0x2351e7[_0x501926][_0xff29('0x6d')]=_0x5065cc+0x1;_0x486ea8[_0xff29('0x51')](validateUser(_0x2351e7[_0x501926]));}return Promise[_0xff29('0x56')](_0x486ea8);})[_0xff29('0x16')](function(){_0x486ea8=[];for(var _0x1f9fdf=0x0;_0x1f9fdf<_0x2351e7[_0xff29('0x50')];_0x1f9fdf++){_0x486ea8[_0xff29('0x51')](updateUser(_0x2351e7[_0x1f9fdf]));}return Promise['all'](_0x486ea8);})[_0xff29('0x16')](function(){_0x486ea8=_0x2351e7[_0xff29('0x35')](function(_0x291987){return db[_0xff29('0x46')][_0xff29('0x87')](_0x291987,{'include':[{'model':db['VoiceMail'],'as':_0xff29('0x76')}]})[_0xff29('0x16')](function(_0x29dec2){_0x291987['id']=_0x29dec2['id'];return _0x291987;});});return Promise[_0xff29('0x56')](_0x486ea8);})[_0xff29('0x16')](function(_0x2f2c29){if(_0x1cbb82['body'][_0xff29('0x2c')]==='user')return _0x2f2c29;if(_0x1cbb82['user'][_0xff29('0x2c')]!=='user')return _0x2f2c29;var _0x4f486e=_[_0xff29('0x92')](_0x2f2c29,function(_0x58c3f8){return _0x58c3f8[_0xff29('0x2c')]==='agent'||_0x58c3f8['role']===_0xff29('0x93');});if(!_0x4f486e)return _0x2f2c29;return db['UserProfileSection'][_0xff29('0x4d')]({'where':{'name':{'$or':[_0xff29('0x30'),'Telephones']},'userProfileId':_0x1cbb82[_0xff29('0x2f')][_0xff29('0x8d')]},'raw':!![]})[_0xff29('0x16')](function(_0x285ad9){if(_[_0xff29('0x94')](_0x285ad9)||!_[_0xff29('0x92')](_0x285ad9,[_0xff29('0x8f'),0x0]))return _0x2f2c29;_0x486ea8=[];var _0x29c74e=_(_0x285ad9)[_0xff29('0x35')](function(_0x58daa7){if(_0x58daa7[_0xff29('0x8f')]===0x1)return;return _0x58daa7['name']==='Agents'?'agent':'telephone';})['compact']()[_0xff29('0x36')]();for(var _0x55ea22=0x0;_0x55ea22<_0x2f2c29['length'];_0x55ea22++){if(!_[_0xff29('0x37')](_0x29c74e,_0x2f2c29[_0x55ea22]['role']))return;var _0x413d94=_0x2f2c29[_0x55ea22][_0xff29('0x2c')]===_0xff29('0x31')?'Agents':_0xff29('0x32');_0x486ea8[_0xff29('0x51')](db[_0xff29('0x3a')][_0xff29('0x87')]({'name':_0x2f2c29[_0x55ea22][_0xff29('0x39')],'resourceId':_0x2f2c29[_0x55ea22]['id'],'type':_0x413d94,'sectionId':_[_0xff29('0x38')](_0x285ad9,['name',_0x413d94])['id']},{}));}return Promise[_0xff29('0x56')](_0x486ea8);});})[_0xff29('0x16')](respondWithResult(_0xf87fe4,0xc9))[_0xff29('0x20')](handleError(_0xf87fe4,null));};exports[_0xff29('0x95')]=function(_0x158396,_0x194c1a){if(_0x158396['body']['id']){delete _0x158396['body']['id'];}return db[_0xff29('0x46')]['find']({'where':{'id':_0x158396[_0xff29('0x67')]['id']}})[_0xff29('0x16')](function(_0x26d651){if(!_0x26d651)return null;if(_0x26d651['id']===_0x158396[_0xff29('0x2f')]['id']){if(!_0x158396['body'][_0xff29('0x96')]||!_0x158396['body'][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9a'));}if(!_0x26d651['authenticate'](_0x158396['body'][_0xff29('0x96')])){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9b'));}if(_0x158396[_0xff29('0x64')][_0xff29('0x96')]===_0x158396[_0xff29('0x64')][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9c'));}}else if(_0x158396['user'][_0xff29('0x2c')]===_0xff29('0x2d')){if(!_0x158396[_0xff29('0x64')][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x158396['user'][_0xff29('0x2c')]===_0xff29('0x2f')){if(!_0x158396['body'][_0xff29('0x97')]){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x9d'));}if(_0x26d651[_0xff29('0x2c')]!==_0xff29('0x31')){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x88'));}}else{throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0x88'));}return _0x26d651;})[_0xff29('0x16')](handleEntityNotFound(_0x194c1a,null))[_0xff29('0x16')](function(_0x38a256){return db[_0xff29('0x69')][_0xff29('0x9e')]({'attributes':['id',_0xff29('0x6b'),_0xff29('0x9f'),_0xff29('0xa0')]})[_0xff29('0x16')](function(_0x5cf198){if(_0x5cf198[_0xff29('0x6b')])authService['validatePasswordPattern'](_0x158396[_0xff29('0x64')]['newPassword']);if(!_0x5cf198['enforcePasswordHistory']||!_0x38a256[_0xff29('0xa1')])return _0x38a256;authService[_0xff29('0xa2')](_0x158396['body']['newPassword'],_0x38a256[_0xff29('0xa1')],_0x5cf198['passwordHistoryLimit']);return _0x38a256;})[_0xff29('0x16')](saveUpdates({'password':_0x158396[_0xff29('0x64')][_0xff29('0x97')],'passwordResetAt':_0x158396['user']['id']==_0x158396[_0xff29('0x67')]['id']?moment():null,'previousPasswords':authService[_0xff29('0xa3')](_0x158396['body'][_0xff29('0x97')],_0x38a256[_0xff29('0xa1')])},null));})['then'](respondWithResult(_0x194c1a,null))[_0xff29('0x20')](handleError(_0x194c1a,null));};exports['addQueues']=function(_0x1c4c5c,_0x450974){var _0x15c2a5=_0x1c4c5c[_0xff29('0x64')][_0xff29('0xa4')];return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1c4c5c[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c'),_0xff29('0xa5'),_0xff29('0xa6'),_0xff29('0xa7'),_0xff29('0xa8')]})[_0xff29('0x16')](handleEntityNotFound(_0x450974,null))[_0xff29('0x16')](function(_0x155d5a){if(_0x155d5a){if(!utils[_0xff29('0xa9')](_0x15c2a5)){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0xaa'));}return _0x155d5a[_0xff29('0xab')+_[_0xff29('0xac')](_0x15c2a5[_0xff29('0xad')]())+_0xff29('0xae')](_0x1c4c5c[_0xff29('0x64')][_0xff29('0x68')],{'penalty':_0x1c4c5c[_0xff29('0x64')][_0xff29('0xaf')]||0x0})[_0xff29('0xb0')](function(_0x116287){for(var _0x1d0ed7=0x0;_0x1d0ed7<_0x1c4c5c[_0xff29('0x64')]['ids']['length'];_0x1d0ed7+=0x1){var _0x43a1f9={'UserId':Number(_0x1c4c5c['params']['id'])};_0x43a1f9[_['capitalize'](_0x15c2a5['toLowerCase']())+'QueueId']=Number(_0x1c4c5c[_0xff29('0x64')]['ids'][_0x1d0ed7]);socket[_0xff29('0x2a')](_0xff29('0x2f')+_[_0xff29('0xac')](_0x15c2a5[_0xff29('0xad')]())+_0xff29('0xb1'),_0x43a1f9);}return _0x116287;})[_0xff29('0x16')](function(){if(_0x15c2a5===_0xff29('0xb2')){return db[_0xff29('0xb3')]['findAll']({'where':{'id':_0x1c4c5c[_0xff29('0x64')][_0xff29('0x68')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xff29('0x16')](function(_0x569191){var _0x285c6e=_0x155d5a[_0xff29('0x2b')]({'plain':!![]});var _0x3fca25=[];if(_0x15c2a5==='voice'&&_0x285c6e[_0xff29('0x2c')]===_0xff29('0x31')&&_0x285c6e['online']){for(let _0x1c355d=0x0;_0x1c355d<_0x569191[_0xff29('0x50')];_0x1c355d+=0x1){_0x3fca25[_0xff29('0x51')]({'membername':_0x285c6e[_0xff29('0x39')],'UserId':_0x285c6e['id'],'queue_name':_0x569191[_0x1c355d][_0xff29('0x39')],'VoiceQueueId':_0x569191[_0x1c355d]['id'],'interface':_[_0xff29('0x6e')](_0x285c6e[_0xff29('0xa8')])?util[_0xff29('0xb4')](_0xff29('0xb5'),_0x285c6e[_0xff29('0x39')]):_0x285c6e[_0xff29('0xa8')],'paused':_0x285c6e[_0xff29('0xa7')]||![],'penalty':_0x1c4c5c['body'][_0xff29('0xaf')]||0x0});}return Promise[_0xff29('0x56')](_0x3fca25[_0xff29('0x35')](function(_0x469377){return db[_0xff29('0xb6')][_0xff29('0xb7')](_0x469377);}));}return _0x155d5a;});}})[_0xff29('0x16')](respondWithStatusCode(_0x450974,null))['catch'](handleError(_0x450974,null));};exports[_0xff29('0xb8')]=function(_0x3bd074,_0xa7732){var _0x30b347,_0x241146;return db[_0xff29('0x46')]['find']({'where':{'id':_0x3bd074['params']['id']},'attributes':['id','name','role']})[_0xff29('0x16')](handleEntityNotFound(_0xa7732,null))['then'](function(_0x28c2ef){if(_0x28c2ef){_0x30b347=_0x28c2ef;if(!_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')]||!utils[_0xff29('0xa9')](_0x3bd074[_0xff29('0x47')]['channel'])){throw new db[(_0xff29('0x98'))]['ValidationError'](_0xff29('0xaa'));}return _0x28c2ef[_0xff29('0xb9')+_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')]['channel'][_0xff29('0xad')]())+_0xff29('0xae')](_0x3bd074[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](function(_0xf19bbb){if(_[_0xff29('0xba')](_0x3bd074[_0xff29('0x47')]['ids'])){for(var _0x39a93c=0x0;_0x39a93c<_0x3bd074['query'][_0xff29('0x68')][_0xff29('0x50')];_0x39a93c+=0x1){_0x241146={'UserId':Number(_0x3bd074['params']['id'])};_0x241146[_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')]['channel'][_0xff29('0xad')]())+'QueueId']=Number(_0x3bd074[_0xff29('0x47')][_0xff29('0x68')][_0x39a93c]);socket['emit'](_0xff29('0x2f')+_[_0xff29('0xac')](_0x3bd074['query']['channel'][_0xff29('0xad')]())+'Queue:remove',_0x241146);}}else{_0x241146={'UserId':Number(_0x3bd074[_0xff29('0x67')]['id'])};_0x241146[_['capitalize'](_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')][_0xff29('0xad')]())+_0xff29('0xbb')]=Number(_0x3bd074[_0xff29('0x47')][_0xff29('0x68')]);socket[_0xff29('0x2a')](_0xff29('0x2f')+_[_0xff29('0xac')](_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')][_0xff29('0xad')]())+_0xff29('0xbc'),_0x241146);}return _0xf19bbb;})[_0xff29('0x16')](function(){if(_0x3bd074[_0xff29('0x47')][_0xff29('0xa4')]===_0xff29('0xb2')){return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'UserId':_0x3bd074[_0xff29('0x67')]['id'],'VoiceQueueId':_0x3bd074[_0xff29('0x47')][_0xff29('0x68')]},'individualHooks':!![]})[_0xff29('0x16')](function(){return _0x30b347;});}return _0x30b347;})['then'](respondWithStatusCode(_0xa7732,null))[_0xff29('0x20')](handleError(_0xa7732,null));};exports['addAvatar']=function(_0x35c466,_0x1231b0){_0x35c466[_0xff29('0x64')][_0xff29('0xbd')]=_0x35c466[_0xff29('0xbe')][_0xff29('0xbf')];return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x35c466[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1231b0,null))[_0xff29('0x16')](saveUpdates(_0x35c466[_0xff29('0x64')],null))['then'](respondWithResult(_0x1231b0,null))['catch'](handleError(_0x1231b0,null));};exports[_0xff29('0xc0')]=function(_0x1ababc,_0x126274){var _0x72053f=path[_0xff29('0xc1')](config[_0xff29('0xc2')],'server/files/images/logos/default_profile.png');return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1ababc['params']['id']},'attributes':['id','userpic'],'raw':!![]})[_0xff29('0x16')](handleEntityNotFound(_0x126274,null))['then'](function(_0x586929){if(_0x586929){if(_[_0xff29('0x6e')](_0x586929[_0xff29('0xbd')])){return _0x126274['download'](_0x72053f);}else{if(!fs[_0xff29('0xc3')](path[_0xff29('0xc1')](config[_0xff29('0xc2')],_0xff29('0xc4'),_0x586929[_0xff29('0xbd')]))){return _0x126274['download'](_0x72053f);}return _0x126274[_0xff29('0xc5')](path['join'](config[_0xff29('0xc2')],_0xff29('0xc4'),_0x586929['userpic']));}}})[_0xff29('0x20')](handleError(_0x126274,null));};exports[_0xff29('0xc6')]=function(_0x357e36,_0x36d159){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x357e36[_0xff29('0x67')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x36d159,null))[_0xff29('0x16')](function(_0x44bfe8){var _0x1e7b32=[];values=_0x44bfe8['dataValues'];_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x52'),_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x61'),_0x44bfe8['dataValues']));_0x1e7b32['push'](get_open_tabs('openchannel',_0x44bfe8['dataValues']));_0x1e7b32['push'](get_open_tabs(_0xff29('0x55'),_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs('fax',_0x44bfe8[_0xff29('0x53')]));_0x1e7b32[_0xff29('0x51')](get_open_tabs(_0xff29('0x54'),_0x44bfe8[_0xff29('0x53')]));return Promise[_0xff29('0x56')](_0x1e7b32);})[_0xff29('0x16')](function(_0x323c3e){if(_0x323c3e){var _0x19608b=_[_0xff29('0x35')](values[_0xff29('0xc7')],function(_0x464e41){return{'channel':_0xff29('0xc8'),'id':_0x464e41['id'],'createdAt':_0x464e41[_0xff29('0xc9')]};});var _0x51ab5c=_[_0xff29('0x35')](values['FaxOpenTabs'],function(_0x5454fd){return{'channel':_0xff29('0xca'),'id':_0x5454fd['id'],'createdAt':_0x5454fd['createdAt']};});var _0x910c13=_[_0xff29('0x35')](values[_0xff29('0xcb')],function(_0x3cd211){return{'channel':_0xff29('0xcc'),'id':_0x3cd211['id'],'createdAt':_0x3cd211['createdAt']};});var _0x31c75f=_[_0xff29('0x35')](values[_0xff29('0xcd')],function(_0x7246e5){return{'channel':_0xff29('0xce'),'id':_0x7246e5['id'],'createdAt':_0x7246e5[_0xff29('0xc9')]};});var _0x264171=_[_0xff29('0x35')](values[_0xff29('0xcf')],function(_0x203c31){return{'channel':_0xff29('0xd0'),'id':_0x203c31['id'],'createdAt':_0x203c31[_0xff29('0xc9')]};});var _0x46fc6d=_[_0xff29('0x35')](values['WhatsappOpenTabs'],function(_0x40dba9){return{'channel':_0xff29('0xd1'),'id':_0x40dba9['id'],'createdAt':_0x40dba9['createdAt']};});var _0x378f4e=_['concat'](_0x19608b,_0x51ab5c,_0x910c13,_0x31c75f,_0x264171,_0x46fc6d);var _0x4e0074={'count':_0x378f4e[_0xff29('0x50')],'rows':_0x378f4e};return _0x4e0074;}else return null;})[_0xff29('0x16')](respondWithResult(_0x36d159,null))[_0xff29('0x20')](handleError(_0x36d159,null));};exports[_0xff29('0xd2')]=function(_0x273721,_0x218bc0){var _0xaebad={};var _0x52e899={};var _0x1e8c4a;var _0x4850c9;return db['User']['findOne']({'where':{'id':_0x273721[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x218bc0,null))[_0xff29('0x16')](function(_0x5913f5){if(_0x5913f5){_0x1e8c4a=_0x5913f5;_0x52e899[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xd3')]['rawAttributes']);_0x52e899['query']=_[_0xff29('0x5a')](_0x273721[_0xff29('0x47')]);_0x52e899[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x52e899[_0xff29('0x58')],_0x52e899[_0xff29('0x47')]);_0xaebad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x52e899[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x273721[_0xff29('0x47')]['fields']));_0xaebad[_0xff29('0x4c')]=_0xaebad[_0xff29('0x4c')]['length']?_0xaebad[_0xff29('0x4c')]:_0x52e899[_0xff29('0x58')];_0xaebad['order']=qs['sort'](_0x273721[_0xff29('0x47')][_0xff29('0xd4')]);_0xaebad['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x273721[_0xff29('0x47')],_0x52e899[_0xff29('0x5c')]));if(_0x273721[_0xff29('0x47')][_0xff29('0x33')]){_0xaebad['where']=_['merge'](_0xaebad[_0xff29('0x45')],{'$or':_['map'](_0xaebad['attributes'],function(_0x225831){var _0x2967a2={};_0x2967a2[_0x225831]={'$like':'%'+_0x273721[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x2967a2;})});}_0xaebad=_[_0xff29('0xd6')]({},_0xaebad,_0x273721[_0xff29('0x60')]);return _0x1e8c4a[_0xff29('0xd2')](_0xaebad);}})[_0xff29('0x16')](function(_0x40e2a7){if(_0x40e2a7){_0x4850c9=_0x40e2a7[_0xff29('0x50')];if(_0x273721[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0x48'))){_0xaebad[_0xff29('0x49')]=[{'model':db[_0xff29('0xd8')],'as':_0xff29('0xd9'),'required':![]},{'model':db['Tag'],'as':_0xff29('0xda'),'attributes':['id','name','color'],'where':_0x273721['query'][_0xff29('0xdb')]?{'id':_0x273721[_0xff29('0x47')][_0xff29('0xdb')]}:undefined,'required':_0x273721[_0xff29('0x47')][_0xff29('0xdb')]?!![]:![]}];}if(!_0x273721[_0xff29('0x47')]['hasOwnProperty']('nolimit')){_0xaebad[_0xff29('0x24')]=qs['limit'](_0x273721[_0xff29('0x47')]['limit']);_0xaebad['offset']=qs['offset'](_0x273721[_0xff29('0x47')][_0xff29('0x23')]);}return _0x1e8c4a[_0xff29('0xd2')](_0xaebad);}})[_0xff29('0x16')](function(_0x4032cc){if(_0x4032cc){return _0x4032cc?{'count':_0x4850c9,'rows':_0x4032cc}:null;}})[_0xff29('0x16')](respondWithResult(_0x218bc0,null))[_0xff29('0x20')](handleError(_0x218bc0,null));};exports['getQueues']=function(_0x4c6d29,_0x5d19a6){var _0x11aaae;var _0x309017={};var _0x20ceba;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x4c6d29[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c')]})[_0xff29('0x16')](handleEntityNotFound(_0x5d19a6,null))[_0xff29('0x16')](function(_0x38402b){if(!utils[_0xff29('0xa9')](_0x4c6d29[_0xff29('0x47')]['channel'])){throw new db[(_0xff29('0x98'))][(_0xff29('0x99'))](_0xff29('0xaa'));}_0x11aaae=_0x38402b;var _0x352d91={};_0x352d91[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')]['channel'])+_0xff29('0xdc')][_0xff29('0x40')]);_0x352d91['query']=_['keys'](_0x4c6d29[_0xff29('0x47')]);_0x352d91[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x352d91[_0xff29('0x58')],_0x352d91['query']);_0x309017['attributes']=_[_0xff29('0x5d')](_0x352d91['model'],qs[_0xff29('0x5e')](_0x4c6d29[_0xff29('0x47')][_0xff29('0x5e')]));_0x309017[_0xff29('0x4c')]=_0x309017['attributes'][_0xff29('0x50')]?_0x309017[_0xff29('0x4c')]:_0x352d91[_0xff29('0x58')];_0x309017[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xd4')]);_0x309017[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x4c6d29[_0xff29('0x47')],_0x352d91['filters']));if(_0x4c6d29[_0xff29('0x47')][_0xff29('0x33')]){_0x309017[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x309017[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x309017[_0xff29('0x4c')],function(_0x3040c2){var _0x365196={};_0x365196[_0x3040c2]={'$like':'%'+_0x4c6d29[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x365196;})});}_0x309017=_[_0xff29('0xd6')]({},_0x309017,_0x4c6d29[_0xff29('0x60')]);switch(_0x11aaae['role']){case _0xff29('0x2d'):return db[_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xa4')])+'Queue'][_0xff29('0x4d')](_0x309017);case'user':case _0xff29('0x31'):return _0x11aaae[_0xff29('0x2b')+_['capitalize'](_0x4c6d29['query'][_0xff29('0xa4')])+_0xff29('0xae')](_0x309017);default:throw new db['Sequelize']['ValidationError'](_0xff29('0xde'));}})[_0xff29('0x16')](function(_0x5d2bf4){_0x20ceba=_0x5d2bf4['length'];if(!_0x4c6d29[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x309017[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x4c6d29['query'][_0xff29('0x24')]);_0x309017[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x4c6d29[_0xff29('0x47')][_0xff29('0x23')]);}switch(_0x11aaae['role']){case'admin':return db[_[_0xff29('0xac')](_0x4c6d29['query'][_0xff29('0xa4')])+'Queue'][_0xff29('0x4d')](_0x309017);case _0xff29('0x2f'):case _0xff29('0x31'):return _0x11aaae['get'+_[_0xff29('0xac')](_0x4c6d29[_0xff29('0x47')][_0xff29('0xa4')])+_0xff29('0xae')](_0x309017);}})[_0xff29('0x16')](function(_0x2960c6){return{'count':_0x20ceba,'rows':_0x2960c6};})[_0xff29('0x16')](respondWithResult(_0x5d19a6,null))['catch'](handleError(_0x5d19a6,null));};exports[_0xff29('0xe0')]=function(_0x1e09d3,_0x3e4f0d){var _0x2a985d={};var _0xee22fd={};var _0x20d212;var _0x52b880;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x1e09d3[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3e4f0d,null))[_0xff29('0x16')](function(_0x7c3de9){if(_0x7c3de9){_0x20d212=_0x7c3de9;_0xee22fd[_0xff29('0x58')]=_['keys'](db[_0xff29('0xb6')]['rawAttributes']);_0xee22fd[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x1e09d3[_0xff29('0x47')]);_0xee22fd[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0xee22fd['model'],_0xee22fd['query']);_0x2a985d[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0xee22fd[_0xff29('0x58')],qs['fields'](_0x1e09d3[_0xff29('0x47')][_0xff29('0x5e')]));_0x2a985d[_0xff29('0x4c')]=_0x2a985d[_0xff29('0x4c')][_0xff29('0x50')]?_0x2a985d[_0xff29('0x4c')]:_0xee22fd['model'];_0x2a985d[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x1e09d3[_0xff29('0x47')][_0xff29('0xd4')]);_0x2a985d[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x1e09d3[_0xff29('0x47')],_0xee22fd[_0xff29('0x5c')]));if(_0x1e09d3['query'][_0xff29('0x33')]){_0x2a985d[_0xff29('0x45')]=_['merge'](_0x2a985d[_0xff29('0x45')],{'$or':_['map'](_0x2a985d[_0xff29('0x4c')],function(_0x220996){var _0xc21c1e={};_0xc21c1e[_0x220996]={'$like':'%'+_0x1e09d3[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0xc21c1e;})});}_0x2a985d=_[_0xff29('0xd6')]({},_0x2a985d,_0x1e09d3[_0xff29('0x60')]);return _0x20d212[_0xff29('0xe0')](_0x2a985d);}})[_0xff29('0x16')](function(_0x1ad086){if(_0x1ad086){_0x52b880=_0x1ad086[_0xff29('0x50')];if(!_0x1e09d3[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x2a985d[_0xff29('0x24')]=qs['limit'](_0x1e09d3[_0xff29('0x47')][_0xff29('0x24')]);_0x2a985d[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x1e09d3[_0xff29('0x47')][_0xff29('0x23')]);}return _0x20d212['getVoiceQueuesRt'](_0x2a985d);}})[_0xff29('0x16')](function(_0x8ce490){if(_0x8ce490){return _0x8ce490?{'count':_0x52b880,'rows':_0x8ce490}:null;}})[_0xff29('0x16')](respondWithResult(_0x3e4f0d,null))[_0xff29('0x20')](handleError(_0x3e4f0d,null));};exports[_0xff29('0xe1')]=function(_0x2243bd,_0x1b8c05){var _0x50f47f={};var _0x5c8531={};var _0x3fd37a;var _0x57bc23;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2243bd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1b8c05,null))[_0xff29('0x16')](function(_0x428de0){if(_0x428de0){_0x3fd37a=_0x428de0;_0x5c8531[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xe2')][_0xff29('0x40')]);_0x5c8531[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2243bd['query']);_0x5c8531[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x5c8531['model'],_0x5c8531['query']);_0x50f47f[_0xff29('0x4c')]=_['intersection'](_0x5c8531[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x2243bd[_0xff29('0x47')][_0xff29('0x5e')]));_0x50f47f['attributes']=_0x50f47f['attributes']['length']?_0x50f47f[_0xff29('0x4c')]:_0x5c8531['model'];_0x50f47f[_0xff29('0xdd')]=qs['sort'](_0x2243bd[_0xff29('0x47')][_0xff29('0xd4')]);_0x50f47f['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2243bd[_0xff29('0x47')],_0x5c8531[_0xff29('0x5c')]));if(_0x2243bd[_0xff29('0x47')]['filter']){_0x50f47f[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x50f47f[_0xff29('0x45')],{'$or':_['map'](_0x50f47f[_0xff29('0x4c')],function(_0x49ceb5){var _0x5af10e={};_0x5af10e[_0x49ceb5]={'$like':'%'+_0x2243bd[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5af10e;})});}_0x50f47f=_[_0xff29('0xd6')]({},_0x50f47f,_0x2243bd[_0xff29('0x60')]);return _0x3fd37a[_0xff29('0xe1')](_0x50f47f);}})[_0xff29('0x16')](function(_0x305904){if(_0x305904){_0x57bc23=_0x305904['length'];if(!_0x2243bd[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x50f47f[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x2243bd[_0xff29('0x47')][_0xff29('0x24')]);_0x50f47f['offset']=qs[_0xff29('0x23')](_0x2243bd['query'][_0xff29('0x23')]);}return _0x3fd37a[_0xff29('0xe1')](_0x50f47f);}})['then'](function(_0x22f872){if(_0x22f872){return _0x22f872?{'count':_0x57bc23,'rows':_0x22f872}:null;}})['then'](respondWithResult(_0x1b8c05,null))[_0xff29('0x20')](handleError(_0x1b8c05,null));};exports[_0xff29('0xe3')]=function(_0x19c702,_0x2a5b6e){var _0x2e6a0b={'raw':!![],'where':{}};var _0x35020d={};var _0x9f8f7b={'count':0x0,'rows':[]};return db[_0xff29('0x46')]['findOne']({'where':{'id':_0x19c702[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2a5b6e,null))[_0xff29('0x16')](function(_0x270fc2){if(_0x270fc2){_0x35020d['model']=_[_0xff29('0x5a')](db['VoiceRecording'][_0xff29('0x40')]);_0x35020d['query']=_['keys'](_0x19c702['query']);_0x35020d[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x35020d['model'],_0x35020d[_0xff29('0x47')]);_0x2e6a0b[_0xff29('0x4c')]=_['intersection'](_0x35020d['model'],qs[_0xff29('0x5e')](_0x19c702[_0xff29('0x47')][_0xff29('0x5e')]));_0x2e6a0b[_0xff29('0x4c')]=_0x2e6a0b['attributes']['length']?_0x2e6a0b[_0xff29('0x4c')]:_0x35020d[_0xff29('0x58')];if(!_0x19c702[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x2e6a0b[_0xff29('0x24')]=qs['limit'](_0x19c702[_0xff29('0x47')][_0xff29('0x24')]);_0x2e6a0b['offset']=qs[_0xff29('0x23')](_0x19c702[_0xff29('0x47')][_0xff29('0x23')]);}_0x2e6a0b[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x19c702[_0xff29('0x47')]['sort']);_0x2e6a0b['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x19c702['query'],_0x35020d[_0xff29('0x5c')]));_0x2e6a0b['where'][_0xff29('0xe4')]=_0x270fc2['id'];if(_0x19c702['query'][_0xff29('0x33')]){_0x2e6a0b['where']=_['merge'](_0x2e6a0b['where'],{'$or':_[_0xff29('0x35')](_0x2e6a0b[_0xff29('0x4c')],function(_0x227f03){var _0x4d010c={};_0x4d010c[_0x227f03]={'$like':'%'+_0x19c702[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4d010c;})});}_0x2e6a0b=_['merge']({},_0x2e6a0b,_0x19c702[_0xff29('0x60')]);return db[_0xff29('0xe5')][_0xff29('0x26')]({'where':_0x2e6a0b[_0xff29('0x45')]})['then'](function(_0x1b9f9e){_0x9f8f7b[_0xff29('0x26')]=_0x1b9f9e;if(_0x19c702[_0xff29('0x47')]['includeAll']){_0x2e6a0b[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xe5')]['findAll'](_0x2e6a0b);})[_0xff29('0x16')](function(_0x3b5d61){_0x9f8f7b[_0xff29('0x4e')]=_0x3b5d61;return _0x9f8f7b;});}})['then'](respondWithFilteredResult(_0x2a5b6e,_0x2e6a0b))[_0xff29('0x20')](handleError(_0x2a5b6e,null));};exports[_0xff29('0xe6')]=function(_0x1d8540,_0x4c2e91){var _0x3517eb={'raw':!![],'where':{}};var _0x25b31f={};var _0x22bc10={'count':0x0,'rows':[]};return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x1d8540[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x4c2e91,null))[_0xff29('0x16')](function(_0x3e8c4c){if(_0x3e8c4c){_0x25b31f[_0xff29('0x58')]=_['keys'](db[_0xff29('0xe7')][_0xff29('0x40')]);_0x25b31f[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x1d8540[_0xff29('0x47')]);_0x25b31f[_0xff29('0x5c')]=_['intersection'](_0x25b31f['model'],_0x25b31f[_0xff29('0x47')]);_0x3517eb[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x25b31f['model'],qs[_0xff29('0x5e')](_0x1d8540[_0xff29('0x47')][_0xff29('0x5e')]));_0x3517eb[_0xff29('0x4c')]=_0x3517eb['attributes'][_0xff29('0x50')]?_0x3517eb['attributes']:_0x25b31f[_0xff29('0x58')];if(!_0x1d8540['query'][_0xff29('0xd7')](_0xff29('0xdf'))){_0x3517eb[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x1d8540[_0xff29('0x47')][_0xff29('0x24')]);_0x3517eb[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x1d8540[_0xff29('0x47')][_0xff29('0x23')]);}_0x3517eb['order']=qs['sort'](_0x1d8540['query']['sort']);_0x3517eb[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x1d8540[_0xff29('0x47')],_0x25b31f[_0xff29('0x5c')]));_0x3517eb[_0xff29('0x45')][_0xff29('0xe4')]=_0x3e8c4c['id'];if(_0x1d8540[_0xff29('0x47')][_0xff29('0x33')]){_0x3517eb['where']=_[_0xff29('0xd6')](_0x3517eb[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x3517eb[_0xff29('0x4c')],function(_0x19c841){var _0x4b5df9={};_0x4b5df9[_0x19c841]={'$like':'%'+_0x1d8540['query']['filter']+'%'};return _0x4b5df9;})});}_0x3517eb=_['merge']({},_0x3517eb,_0x1d8540[_0xff29('0x60')]);return db['ScreenRecording'][_0xff29('0x26')]({'where':_0x3517eb['where']})[_0xff29('0x16')](function(_0x5cf86c){_0x22bc10[_0xff29('0x26')]=_0x5cf86c;if(_0x1d8540['query'][_0xff29('0x48')]){_0x3517eb[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xe7')][_0xff29('0x4d')](_0x3517eb);})[_0xff29('0x16')](function(_0x5be7dd){_0x22bc10['rows']=_0x5be7dd;return _0x22bc10;});}})['then'](respondWithFilteredResult(_0x4c2e91,_0x3517eb))[_0xff29('0x20')](handleError(_0x4c2e91,null));};exports[_0xff29('0xe8')]=function(_0x6e7f8,_0x39821d){var _0x4e9b1e={};var _0x27c85c={};var _0x2a50a0;var _0x19544e;return db['User']['findOne']({'where':{'id':_0x6e7f8[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x39821d,null))['then'](function(_0x4fdb3b){if(_0x4fdb3b){_0x2a50a0=_0x4fdb3b;_0x27c85c[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xe9')][_0xff29('0x40')]);_0x27c85c['query']=_[_0xff29('0x5a')](_0x6e7f8[_0xff29('0x47')]);_0x27c85c[_0xff29('0x5c')]=_['intersection'](_0x27c85c['model'],_0x27c85c['query']);_0x4e9b1e[_0xff29('0x4c')]=_['intersection'](_0x27c85c['model'],qs[_0xff29('0x5e')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x5e')]));_0x4e9b1e['attributes']=_0x4e9b1e[_0xff29('0x4c')][_0xff29('0x50')]?_0x4e9b1e[_0xff29('0x4c')]:_0x27c85c[_0xff29('0x58')];_0x4e9b1e[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x6e7f8[_0xff29('0x47')][_0xff29('0xd4')]);_0x4e9b1e[_0xff29('0x45')]=qs[_0xff29('0x5c')](_['pick'](_0x6e7f8[_0xff29('0x47')],_0x27c85c['filters']));if(_0x6e7f8[_0xff29('0x47')][_0xff29('0x33')]){_0x4e9b1e[_0xff29('0x45')]=_['merge'](_0x4e9b1e[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x4e9b1e['attributes'],function(_0x5b58c9){var _0x157505={};_0x157505[_0x5b58c9]={'$like':'%'+_0x6e7f8['query'][_0xff29('0x33')]+'%'};return _0x157505;})});}_0x4e9b1e=_[_0xff29('0xd6')]({},_0x4e9b1e,_0x6e7f8[_0xff29('0x60')]);return _0x2a50a0[_0xff29('0xe8')](_0x4e9b1e);}})['then'](function(_0x1dcfc5){if(_0x1dcfc5){_0x19544e=_0x1dcfc5[_0xff29('0x50')];if(!_0x6e7f8[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x4e9b1e[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x24')]);_0x4e9b1e[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x6e7f8[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2a50a0[_0xff29('0xe8')](_0x4e9b1e);}})[_0xff29('0x16')](function(_0x56be68){if(_0x56be68){return _0x56be68?{'count':_0x19544e,'rows':_0x56be68}:null;}})[_0xff29('0x16')](respondWithResult(_0x39821d,null))[_0xff29('0x20')](handleError(_0x39821d,null));};exports[_0xff29('0xea')]=function(_0x5bc42d,_0x466bb7){var _0x21c185={};var _0x241643={};var _0x5d5728;var _0x3cb33b;return db[_0xff29('0x46')]['findOne']({'where':{'id':_0x5bc42d[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x466bb7,null))[_0xff29('0x16')](function(_0x3076c8){if(_0x3076c8){_0x5d5728=_0x3076c8;_0x241643['model']=_[_0xff29('0x5a')](db['OpenchannelInteraction']['rawAttributes']);_0x241643['query']=_[_0xff29('0x5a')](_0x5bc42d[_0xff29('0x47')]);_0x241643['filters']=_['intersection'](_0x241643['model'],_0x241643[_0xff29('0x47')]);_0x21c185[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x241643[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x5bc42d['query'][_0xff29('0x5e')]));_0x21c185['attributes']=_0x21c185[_0xff29('0x4c')]['length']?_0x21c185[_0xff29('0x4c')]:_0x241643[_0xff29('0x58')];_0x21c185[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x5bc42d['query'][_0xff29('0xd4')]);_0x21c185['where']=qs['filters'](_['pick'](_0x5bc42d[_0xff29('0x47')],_0x241643[_0xff29('0x5c')]));if(_0x5bc42d['query'][_0xff29('0x33')]){_0x21c185[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x21c185[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x21c185[_0xff29('0x4c')],function(_0x3cc171){var _0xd75fb3={};_0xd75fb3[_0x3cc171]={'$like':'%'+_0x5bc42d['query'][_0xff29('0x33')]+'%'};return _0xd75fb3;})});}_0x21c185=_[_0xff29('0xd6')]({},_0x21c185,_0x5bc42d[_0xff29('0x60')]);return _0x5d5728[_0xff29('0xea')](_0x21c185);}})['then'](function(_0xee4a6c){if(_0xee4a6c){_0x3cb33b=_0xee4a6c[_0xff29('0x50')];if(!_0x5bc42d[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x21c185[_0xff29('0x24')]=qs['limit'](_0x5bc42d[_0xff29('0x47')][_0xff29('0x24')]);_0x21c185[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x5bc42d[_0xff29('0x47')]['offset']);}return _0x5d5728['getOpenchannelInteractions'](_0x21c185);}})[_0xff29('0x16')](function(_0x208f4e){if(_0x208f4e){return _0x208f4e?{'count':_0x3cb33b,'rows':_0x208f4e}:null;}})[_0xff29('0x16')](respondWithResult(_0x466bb7,null))[_0xff29('0x20')](handleError(_0x466bb7,null));};exports[_0xff29('0xeb')]=function(_0x2ddaab,_0x53a075){var _0x270287={'raw':!![],'where':{}};var _0x37d44c={};var _0x1f9d18={'count':0x0,'rows':[]};return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2ddaab[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x53a075,null))[_0xff29('0x16')](function(_0x33504b){if(_0x33504b){_0x37d44c['model']=_[_0xff29('0x5a')](db[_0xff29('0xec')]['rawAttributes']);_0x37d44c[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2ddaab['query']);_0x37d44c[_0xff29('0x5c')]=_['intersection'](_0x37d44c['model'],_0x37d44c[_0xff29('0x47')]);_0x270287[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x37d44c['model'],qs['fields'](_0x2ddaab[_0xff29('0x47')][_0xff29('0x5e')]));_0x270287[_0xff29('0x4c')]=_0x270287[_0xff29('0x4c')][_0xff29('0x50')]?_0x270287[_0xff29('0x4c')]:_0x37d44c[_0xff29('0x58')];if(!_0x2ddaab[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x270287[_0xff29('0x24')]=qs['limit'](_0x2ddaab[_0xff29('0x47')][_0xff29('0x24')]);_0x270287[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2ddaab[_0xff29('0x47')][_0xff29('0x23')]);}_0x270287['order']=qs[_0xff29('0xd4')](_0x2ddaab[_0xff29('0x47')]['sort']);_0x270287['where']=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2ddaab[_0xff29('0x47')],_0x37d44c[_0xff29('0x5c')]));_0x270287[_0xff29('0x45')][_0xff29('0xe4')]=_0x33504b['id'];if(_0x2ddaab['query']['filter']){_0x270287[_0xff29('0x45')]=_['merge'](_0x270287[_0xff29('0x45')],{'$or':_['map'](_0x270287['attributes'],function(_0x3eed33){var _0x5a486c={};_0x5a486c[_0x3eed33]={'$like':'%'+_0x2ddaab[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5a486c;})});}_0x270287=_[_0xff29('0xd6')]({},_0x270287,_0x2ddaab[_0xff29('0x60')]);return db[_0xff29('0xec')][_0xff29('0x26')]({'where':_0x270287[_0xff29('0x45')]})[_0xff29('0x16')](function(_0x374e8c){_0x1f9d18[_0xff29('0x26')]=_0x374e8c;if(_0x2ddaab['query'][_0xff29('0x48')]){_0x270287[_0xff29('0x49')]=[{'all':!![]}];}return db[_0xff29('0xec')][_0xff29('0x4d')](_0x270287);})[_0xff29('0x16')](function(_0x7ffc4a){_0x1f9d18[_0xff29('0x4e')]=_0x7ffc4a;return _0x1f9d18;});}})['then'](respondWithFilteredResult(_0x53a075,_0x270287))[_0xff29('0x20')](handleError(_0x53a075,null));};exports[_0xff29('0xed')]=function(_0x31326b,_0x3bc533){var _0x3c2185={};var _0x320d21={};var _0x45b595;var _0x58cd74;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x31326b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3bc533,null))['then'](function(_0x241f66){if(_0x241f66){_0x45b595=_0x241f66;_0x320d21[_0xff29('0x58')]=_['keys'](db['SmsInteraction'][_0xff29('0x40')]);_0x320d21[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x31326b[_0xff29('0x47')]);_0x320d21[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x320d21['model'],_0x320d21[_0xff29('0x47')]);_0x3c2185[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x320d21[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x31326b[_0xff29('0x47')]['fields']));_0x3c2185[_0xff29('0x4c')]=_0x3c2185['attributes'][_0xff29('0x50')]?_0x3c2185['attributes']:_0x320d21['model'];_0x3c2185['order']=qs['sort'](_0x31326b[_0xff29('0x47')]['sort']);_0x3c2185[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x31326b[_0xff29('0x47')],_0x320d21[_0xff29('0x5c')]));if(_0x31326b[_0xff29('0x47')][_0xff29('0x33')]){_0x3c2185[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x3c2185['where'],{'$or':_[_0xff29('0x35')](_0x3c2185[_0xff29('0x4c')],function(_0x104181){var _0x3666ce={};_0x3666ce[_0x104181]={'$like':'%'+_0x31326b[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x3666ce;})});}_0x3c2185=_[_0xff29('0xd6')]({},_0x3c2185,_0x31326b[_0xff29('0x60')]);return _0x45b595[_0xff29('0xed')](_0x3c2185);}})[_0xff29('0x16')](function(_0x2b029c){if(_0x2b029c){_0x58cd74=_0x2b029c[_0xff29('0x50')];if(!_0x31326b[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x3c2185[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x31326b[_0xff29('0x47')]['limit']);_0x3c2185['offset']=qs[_0xff29('0x23')](_0x31326b['query']['offset']);}return _0x45b595['getSmsInteractions'](_0x3c2185);}})[_0xff29('0x16')](function(_0x1846dc){if(_0x1846dc){return _0x1846dc?{'count':_0x58cd74,'rows':_0x1846dc}:null;}})[_0xff29('0x16')](respondWithResult(_0x3bc533,null))[_0xff29('0x20')](handleError(_0x3bc533,null));};exports['getFaxInteractions']=function(_0xb59d1c,_0x4ca06e){var _0x3ffa67={};var _0x56ffad={};var _0x4ee5c7;var _0x467522;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0xb59d1c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ca06e,null))[_0xff29('0x16')](function(_0x12a188){if(_0x12a188){_0x4ee5c7=_0x12a188;_0x56ffad[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0xee')][_0xff29('0x40')]);_0x56ffad[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xb59d1c['query']);_0x56ffad[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x56ffad[_0xff29('0x58')],_0x56ffad[_0xff29('0x47')]);_0x3ffa67['attributes']=_[_0xff29('0x5d')](_0x56ffad[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xb59d1c[_0xff29('0x47')]['fields']));_0x3ffa67['attributes']=_0x3ffa67[_0xff29('0x4c')][_0xff29('0x50')]?_0x3ffa67[_0xff29('0x4c')]:_0x56ffad[_0xff29('0x58')];_0x3ffa67[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0xb59d1c[_0xff29('0x47')][_0xff29('0xd4')]);_0x3ffa67[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0xb59d1c[_0xff29('0x47')],_0x56ffad[_0xff29('0x5c')]));if(_0xb59d1c[_0xff29('0x47')][_0xff29('0x33')]){_0x3ffa67['where']=_[_0xff29('0xd6')](_0x3ffa67[_0xff29('0x45')],{'$or':_['map'](_0x3ffa67[_0xff29('0x4c')],function(_0x5750e6){var _0x41519c={};_0x41519c[_0x5750e6]={'$like':'%'+_0xb59d1c[_0xff29('0x47')]['filter']+'%'};return _0x41519c;})});}_0x3ffa67=_[_0xff29('0xd6')]({},_0x3ffa67,_0xb59d1c[_0xff29('0x60')]);return _0x4ee5c7[_0xff29('0xef')](_0x3ffa67);}})[_0xff29('0x16')](function(_0x2131cf){if(_0x2131cf){_0x467522=_0x2131cf[_0xff29('0x50')];if(!_0xb59d1c[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x3ffa67[_0xff29('0x24')]=qs[_0xff29('0x24')](_0xb59d1c[_0xff29('0x47')]['limit']);_0x3ffa67[_0xff29('0x23')]=qs[_0xff29('0x23')](_0xb59d1c[_0xff29('0x47')][_0xff29('0x23')]);}return _0x4ee5c7['getFaxInteractions'](_0x3ffa67);}})[_0xff29('0x16')](function(_0x177c07){if(_0x177c07){return _0x177c07?{'count':_0x467522,'rows':_0x177c07}:null;}})[_0xff29('0x16')](respondWithResult(_0x4ca06e,null))[_0xff29('0x20')](handleError(_0x4ca06e,null));};exports['getWhatsappInteractions']=function(_0xf17c02,_0x30028a){var _0x46ee7e={};var _0x17902a={};var _0xf313b3;var _0x52db1b;return db['User'][_0xff29('0x9e')]({'where':{'id':_0xf17c02[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x30028a,null))[_0xff29('0x16')](function(_0x3f24f0){if(_0x3f24f0){_0xf313b3=_0x3f24f0;_0x17902a[_0xff29('0x58')]=_['keys'](db[_0xff29('0xf0')]['rawAttributes']);_0x17902a[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xf17c02[_0xff29('0x47')]);_0x17902a[_0xff29('0x5c')]=_['intersection'](_0x17902a[_0xff29('0x58')],_0x17902a['query']);_0x46ee7e[_0xff29('0x4c')]=_['intersection'](_0x17902a[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xf17c02['query'][_0xff29('0x5e')]));_0x46ee7e[_0xff29('0x4c')]=_0x46ee7e['attributes'][_0xff29('0x50')]?_0x46ee7e[_0xff29('0x4c')]:_0x17902a[_0xff29('0x58')];_0x46ee7e['order']=qs['sort'](_0xf17c02[_0xff29('0x47')][_0xff29('0xd4')]);_0x46ee7e[_0xff29('0x45')]=qs['filters'](_['pick'](_0xf17c02[_0xff29('0x47')],_0x17902a[_0xff29('0x5c')]));if(_0xf17c02['query'][_0xff29('0x33')]){_0x46ee7e[_0xff29('0x45')]=_['merge'](_0x46ee7e[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x46ee7e[_0xff29('0x4c')],function(_0x55e8ab){var _0x4af5be={};_0x4af5be[_0x55e8ab]={'$like':'%'+_0xf17c02[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4af5be;})});}_0x46ee7e=_[_0xff29('0xd6')]({},_0x46ee7e,_0xf17c02['options']);return _0xf313b3[_0xff29('0xf1')](_0x46ee7e);}})[_0xff29('0x16')](function(_0x271f93){if(_0x271f93){_0x52db1b=_0x271f93[_0xff29('0x50')];if(!_0xf17c02[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x46ee7e[_0xff29('0x24')]=qs[_0xff29('0x24')](_0xf17c02[_0xff29('0x47')]['limit']);_0x46ee7e[_0xff29('0x23')]=qs['offset'](_0xf17c02[_0xff29('0x47')][_0xff29('0x23')]);}return _0xf313b3['getWhatsappInteractions'](_0x46ee7e);}})[_0xff29('0x16')](function(_0x4d199f){if(_0x4d199f){return _0x4d199f?{'count':_0x52db1b,'rows':_0x4d199f}:null;}})[_0xff29('0x16')](respondWithResult(_0x30028a,null))[_0xff29('0x20')](handleError(_0x30028a,null));};exports[_0xff29('0xf2')]=function(_0x451c37,_0x4d61e8,_0x2049ad){var _0x2eee92;var _0xa417b7;var _0x3129da;var _0x2bee1b=!_[_0xff29('0x6e')](_0x451c37[_0xff29('0x67')]['id'])?_0x451c37[_0xff29('0x67')]['id']:!_[_0xff29('0x6e')](_0x451c37[_0xff29('0x2f')]['id'])?_0x451c37[_0xff29('0x2f')]['id']:null;return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x2bee1b,'role':{'$or':[_0xff29('0x2d'),_0xff29('0x2f'),_0xff29('0x31')]}},'attributes':['id',_0xff29('0x39'),_0xff29('0xf3'),'mobile',_0xff29('0x2c'),'internal',_0xff29('0xa6')]})[_0xff29('0x16')](function(_0x3b63c2){if(_0x3b63c2){if(_0x3b63c2[_0xff29('0x2c')]===_0xff29('0x31')){_0x2eee92=_0x3b63c2;if(_0x451c37[_0xff29('0x64')][_0xff29('0xa8')]){_0x3129da=util[_0xff29('0xb4')](_0xff29('0xf4'),_0x2eee92[_0x451c37['body'][_0xff29('0xa8')]]);}else if(_0x451c37['body']['intrf']){_0x3129da=util[_0xff29('0xb4')](_0xff29('0xb5'),_0x451c37[_0xff29('0x64')][_0xff29('0xf5')]);}else{_0x3129da=util[_0xff29('0xb4')](_0xff29('0xb5'),_0x2eee92[_0xff29('0x39')]);}socket['to'](util[_0xff29('0xb4')](_0xff29('0xf6'),_0x2eee92['name']))[_0xff29('0x2a')]('user:forcelogout',{'user':{'id':_0x2eee92['id'],'name':_0x2eee92[_0xff29('0x39')]},'ip':_0x451c37[_0xff29('0xf7')][_0xff29('0xf8')]||_0x451c37['connection'][_0xff29('0xf9')]||_0x451c37[_0xff29('0xfa')]['remoteAddress']||_0x451c37[_0xff29('0xfb')]['socket'][_0xff29('0xf9')]});return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'membername':_0x2eee92[_0xff29('0x39')]},'individualHooks':!![]});}}else{throw new db[(_0xff29('0x98'))]['ValidationError'](_0xff29('0xfc'));}})[_0xff29('0x16')](function(){if(_0x2eee92){return _0x2eee92['getVoiceQueues']({'raw':!![]});}})[_0xff29('0x16')](function(_0x1ee065){if(_0x2eee92){if(_0x1ee065){_0xa417b7=_0x1ee065;if(_0xa417b7[_0xff29('0x50')]){var _0x448124=_0xa417b7['map'](function(_0x318016){var _0x461a1d={'membername':_0x2eee92[_0xff29('0x39')],'UserId':_0x2eee92['id'],'queue_name':_0x318016[_0xff29('0x39')],'VoiceQueueId':_0x318016['id'],'interface':_0x3129da,'paused':_0x2eee92['loginInPause']||![],'penalty':_0x318016[_0xff29('0xfd')]||0x0};return db['UserVoiceQueueRt'][_0xff29('0xb7')](_0x461a1d);});return Promise[_0xff29('0x56')](_0x448124);}}}})[_0xff29('0x16')](function(){if(_0x2eee92){return db['MemberReport']['findAll']({'where':{'membername':_0x2eee92[_0xff29('0x39')],'exitAt':null}});}})[_0xff29('0x16')](function(_0x550139){if(_0x2eee92){var _0x28f8ba=[];_0x550139[_0xff29('0xfe')](function(_0xd28778){_0x28f8ba[_0xff29('0x51')](_0xd28778[_0xff29('0x29')]({'exitAt':moment()[_0xff29('0xb4')](_0xff29('0xff'))}));});return Promise['all'](_0x28f8ba);}})[_0xff29('0x16')](function(){if(_0x2eee92){var _0x5d9d9b=[];var _0x141aba=[];var _0x5e9f08=utils[_0xff29('0x100')]();var _0x48dc31={'membername':_0x2eee92[_0xff29('0x39')],'interface':_0x3129da,'enterAt':moment()['format'](_0xff29('0xff')),'role':_0x2eee92[_0xff29('0x2c')],'internal':_0x2eee92[_0xff29('0x6d')]};_0x5e9f08[_0xff29('0xfe')](function(_0x23afa4){_0x5d9d9b[_0xff29('0x51')](_[_0xff29('0xd6')]({'channel':_0x23afa4,'type':_0xff29('0x101'),'data1':_0x451c37['body'][_0xff29('0x102')],'data2':_0x3129da},_0x48dc31));if(_0x2eee92[_0xff29('0xa6')]){_0x141aba[_0xff29('0x51')](_['merge']({'channel':_0x23afa4,'type':_0xff29('0x103'),'data1':_0xff29('0x104')},_0x48dc31));}});return db[_0xff29('0x105')][_0xff29('0x91')](_0x5d9d9b[_0xff29('0x106')](_0x141aba),{'individualHooks':!![]});}})['then'](function(){if(_0x2eee92){return _0x2eee92[_0xff29('0x29')]({'online':!![],'lastLoginAt':moment()[_0xff29('0xb4')](_0xff29('0xff')),'voicePause':_0x2eee92['loginInPause']||![],'mailPause':_0x2eee92['loginInPause']||![],'chatPause':_0x2eee92[_0xff29('0xa6')]||![],'faxPause':_0x2eee92[_0xff29('0xa6')]||![],'smsPause':_0x2eee92['loginInPause']||![],'openchannelPause':_0x2eee92['loginInPause']||![],'whatsappPause':_0x2eee92[_0xff29('0xa6')]||![],'pauseType':_0x2eee92[_0xff29('0xa6')]?'LOGININPAUSE':null,'interface':_0x3129da,'lastPauseAt':moment()[_0xff29('0xb4')](_0xff29('0xff'))});}})[_0xff29('0x16')](function(_0x459729){if(_0x451c37[_0xff29('0x107')]){return _0x2049ad();}else{return Promise[_0xff29('0x108')](_0x459729)[_0xff29('0x16')](respondWithResult(_0x4d61e8,null));}})[_0xff29('0x20')](handleError(_0x4d61e8,null));};exports['logout']=function(_0x13569d,_0x777639){var _0x1a89aa;return db[_0xff29('0x46')]['find']({'where':{'id':_0x13569d[_0xff29('0x67')]['id'],'role':'agent'},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c')]})['then'](handleEntityNotFound(_0x777639,null))['then'](function(_0x7ab48){if(_0x7ab48){_0x1a89aa=_0x7ab48;return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'membername':_0x1a89aa[_0xff29('0x39')]},'individualHooks':!![]});}})[_0xff29('0x16')](function(){return db[_0xff29('0x105')]['findAll']({'where':{'membername':_0x1a89aa[_0xff29('0x39')],'exitAt':null}});})[_0xff29('0x16')](function(_0x186fc5){var _0x57df54=[];_0x186fc5[_0xff29('0xfe')](function(_0x3a6d69){_0x57df54['push'](_0x3a6d69['update']({'exitAt':moment()['format'](_0xff29('0xff'))}));});return Promise[_0xff29('0x56')](_0x57df54);})['then'](function(){return _0x1a89aa[_0xff29('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x777639,null))[_0xff29('0x20')](handleError(_0x777639,null));};exports['pause']=function(_0x42fc02,_0x1d8246){var _0x39ccd5;return db[_0xff29('0xb6')][_0xff29('0x29')]({'paused':0x1},{'where':{'UserId':_0x42fc02['params']['id']},'individualHooks':!![]})['then'](function(){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x42fc02['params']['id'],'role':'agent'},'attributes':['id',_0xff29('0x39'),_0xff29('0x2c'),_0xff29('0x6d'),_0xff29('0xa8'),_0xff29('0xa5')]});})[_0xff29('0x16')](handleEntityNotFound(_0x1d8246,null))['then'](function(_0x2ced3b){if(_0x2ced3b){_0x39ccd5=_0x2ced3b;return respondWithRpcPromise(_0xff29('0x109'),_0xff29('0x10a'),{'id':_0x39ccd5['id'],'name':_0x39ccd5['name'],'pause':!![]});}})[_0xff29('0x16')](function(){if(_0x39ccd5){return db[_0xff29('0x105')][_0xff29('0x4d')]({'where':{'membername':_0x39ccd5['name'],'type':_0xff29('0x103'),'exitAt':null}});}})[_0xff29('0x16')](function(_0x310804){if(_0x310804[_0xff29('0x50')]){var _0x31ab89=moment()[_0xff29('0xb4')](_0xff29('0xff'));for(var _0x334f1d=0x0,_0x469598=_0x310804[_0xff29('0x50')];_0x334f1d<_0x469598;_0x334f1d++){_0x310804[_0x334f1d][_0xff29('0x10b')]({'exitAt':_0x31ab89});}}})[_0xff29('0x16')](function(){var _0x58a768=[];var _0x2a175b=utils[_0xff29('0x100')]();_0x2a175b[_0xff29('0xfe')](function(_0x59df99){_0x58a768[_0xff29('0x51')]({'channel':_0x59df99,'membername':_0x39ccd5['name'],'interface':_[_0xff29('0x6e')](_0x39ccd5['interface'])?util[_0xff29('0xb4')]('SIP/%s',_0x39ccd5[_0xff29('0x39')]):_0x39ccd5[_0xff29('0xa8')],'type':_0xff29('0x103'),'enterAt':moment()['format'](_0xff29('0xff')),'data1':_0x42fc02[_0xff29('0x64')][_0xff29('0x42')]||_0xff29('0x10c'),'role':_0x39ccd5[_0xff29('0x2c')],'internal':_0x39ccd5[_0xff29('0x6d')]});});return db[_0xff29('0x105')][_0xff29('0x91')](_0x58a768,{'individualHooks':!![]});})[_0xff29('0x16')](function(){return _0x39ccd5[_0xff29('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x42fc02[_0xff29('0x64')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()['format'](_0xff29('0xff'))});})[_0xff29('0x16')](respondWithResult(_0x1d8246,null))[_0xff29('0x20')](handleError(_0x1d8246,null));};exports['unpause']=function(_0x2e2bb6,_0x5136cc){if(_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]&&!utils['isValidChannel'](_0x2e2bb6['body']['channel'])){throw new APIBadRequestError(util['format'](_0xff29('0x10d'),_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]));}return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x2e2bb6[_0xff29('0x67')]['id']},'attributes':['id',_0xff29('0x39'),'role',_0xff29('0x6d'),_0xff29('0xa8'),_0xff29('0xa5'),_0xff29('0xa7'),_0xff29('0x10e'),'chatPause',_0xff29('0x10f'),_0xff29('0x110'),_0xff29('0x111'),_0xff29('0x112'),_0xff29('0x113'),'lastPauseAt']})[_0xff29('0x16')](function(_0x5d4393){if(!_0x5d4393){throw new APINotFoundError(util[_0xff29('0xb4')](_0xff29('0x114'),_0x2e2bb6[_0xff29('0x67')]['id']));}return _0x5d4393[_0xff29('0x115')](_0x2e2bb6[_0xff29('0x64')][_0xff29('0xa4')]);})['then'](respondWithResult(_0x5136cc,null))[_0xff29('0x20')](APIHandleError(_0x5136cc));};exports[_0xff29('0x116')]=function(_0x18ff44,_0x29a547){var _0x1500ad={};var _0x23b913={};var _0x162621;var _0x5a2018;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x18ff44[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x29a547,null))['then'](function(_0x73b2b9){if(_0x73b2b9){_0x162621=_0x73b2b9;_0x23b913[_0xff29('0x58')]=_['keys'](db['Team'][_0xff29('0x40')]);_0x23b913[_0xff29('0x47')]=_['keys'](_0x18ff44[_0xff29('0x47')]);_0x23b913['filters']=_[_0xff29('0x5d')](_0x23b913[_0xff29('0x58')],_0x23b913[_0xff29('0x47')]);_0x1500ad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x23b913[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x18ff44[_0xff29('0x47')]['fields']));_0x1500ad[_0xff29('0x4c')]=_0x1500ad[_0xff29('0x4c')]['length']?_0x1500ad[_0xff29('0x4c')]:_0x23b913[_0xff29('0x58')];_0x1500ad[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x18ff44[_0xff29('0x47')][_0xff29('0xd4')]);_0x1500ad[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x18ff44[_0xff29('0x47')],_0x23b913[_0xff29('0x5c')]));if(_0x18ff44['query']['filter']){_0x1500ad[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x1500ad[_0xff29('0x45')],{'$or':_['map'](_0x1500ad[_0xff29('0x4c')],function(_0xd1bb1a){var _0x28668c={};_0x28668c[_0xd1bb1a]={'$like':'%'+_0x18ff44[_0xff29('0x47')]['filter']+'%'};return _0x28668c;})});}_0x1500ad=_['merge']({},_0x1500ad,_0x18ff44[_0xff29('0x60')]);return _0x162621[_0xff29('0x116')](_0x1500ad);}})[_0xff29('0x16')](function(_0x587a65){if(_0x587a65){_0x5a2018=_0x587a65[_0xff29('0x50')];if(!_0x18ff44[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x1500ad[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x18ff44['query'][_0xff29('0x24')]);_0x1500ad[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x18ff44['query'][_0xff29('0x23')]);}return _0x162621['getTeams'](_0x1500ad);}})[_0xff29('0x16')](function(_0x5a4aad){if(_0x5a4aad){return _0x5a4aad?{'count':_0x5a2018,'rows':_0x5a4aad}:null;}})['then'](respondWithResult(_0x29a547,null))['catch'](handleError(_0x29a547,null));};exports[_0xff29('0x117')]=function(_0xeaccd5,_0x18ab4b){var _0x8fb563=_0xeaccd5[_0xff29('0x67')]['id'];var _0x32c565=_0xeaccd5[_0xff29('0x64')]?_0xeaccd5['body'][_0xff29('0x68')]:null;var _0x1848e3=[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x32c565)throw new APIBadRequestError(_0xff29('0x118'));})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x8fb563}});})[_0xff29('0x16')](function(_0x4e2114){if(!_0x4e2114)throw new APINotFoundError(util[_0xff29('0xb4')](_0xff29('0x114'),_0xeaccd5[_0xff29('0x67')]['id']));return db[_0xff29('0x70')][_0xff29('0x119')](function(_0x55c828){return _0x4e2114[_0xff29('0x117')](_0x32c565,{'transaction':_0x55c828})[_0xff29('0x16')](function(){return db[_0xff29('0x11a')]['findAll']({'where':{'id':{'$in':_0x32c565}}});})[_0xff29('0x16')](function(_0x1c1d1b){var _0x1b607f=_[_0xff29('0x35')](_0x1c1d1b,function(_0x33afab){return _0x33afab[_0xff29('0x11b')]();});return Promise[_0xff29('0x56')](_0x1b607f);})[_0xff29('0x16')](function(_0x886eec){_0x1848e3=_['flattenDeep'](_0x886eec);var _0x1aa13e=_[_0xff29('0x35')](_0x1848e3,function(_0x310b29){return _0x310b29[_0xff29('0x11c')](_0x4e2114['id'],{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x1aa13e);})[_0xff29('0x16')](function(){if(!_0x4e2114['online'])return;var _0x200610=_[_0xff29('0x33')](_0x1848e3,function(_0x17198c){return _0x17198c[_0xff29('0x11d')](_0xff29('0xa4'))===_0xff29('0x11e');});var _0x55a37a=_['map'](_0x200610,function(_0x1bbb22){return db[_0xff29('0xb6')]['upsert']({'membername':_0x4e2114[_0xff29('0x39')],'UserId':_0x4e2114['id'],'queue_name':_0x1bbb22[_0xff29('0x39')],'VoiceQueueId':_0x1bbb22['id'],'interface':_[_0xff29('0x6e')](_0x4e2114['interface'])?util[_0xff29('0xb4')]('SIP/%s',_0x4e2114[_0xff29('0x39')]):_0x4e2114[_0xff29('0xa8')],'paused':_0x4e2114[_0xff29('0xa7')]||![],'penalty':_0x4e2114[_0xff29('0xaf')]},{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x55a37a);})[_0xff29('0x16')](function(){return db[_0xff29('0x11f')][_0xff29('0x4d')]({'where':{'teamId':{'$in':_0x32c565}}});})['then'](function(_0x57e659){var _0x34e9b0=_['map'](_0x57e659,function(_0x2b8564){return db[_0xff29('0x120')][_0xff29('0x87')]({'UserId':_0x4e2114['id'],'VoicePrefixId':_0x2b8564[_0xff29('0x121')]},{'transaction':_0x55c828});});return Promise[_0xff29('0x56')](_0x34e9b0);});});})['then'](function(){for(var _0x1a1791=0x0;_0x1a1791<_0x1848e3[_0xff29('0x50')];_0x1a1791++){var _0x56ddf4=_0x1848e3[_0x1a1791]['getDataValue'](_0xff29('0xa4'));var _0x24e23e=_0x56ddf4+_0xff29('0xbb');socket[_0xff29('0x2a')]('user'+_0x56ddf4+'Queue:save',{'UserId':_0x8fb563,['queueField']:_0x1848e3[_0x1a1791]['id']});}})['then'](respondWithStatusCode(_0x18ab4b,null))[_0xff29('0x20')](APIHandleError(_0x18ab4b));};exports[_0xff29('0x122')]=function(_0xd661a9,_0x3d78f2){var _0x508e29=_0xd661a9[_0xff29('0x67')]['id'];var _0x2252d5=null;if(_0xd661a9[_0xff29('0x47')][_0xff29('0x68')]){_0x2252d5=_[_0xff29('0xba')](_0xd661a9[_0xff29('0x47')][_0xff29('0x68')])?_0xd661a9[_0xff29('0x47')][_0xff29('0x68')]:[_0xd661a9['query'][_0xff29('0x68')]];}var _0x58d585=[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x2252d5)throw new APIBadRequestError(_0xff29('0x123'));})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x508e29}});})['then'](function(_0x4619d7){if(!_0x4619d7)throw new APINotFoundError(util['format']('User\x20with\x20id\x20%s\x20not\x20found',_0xd661a9[_0xff29('0x67')]['id']));return db[_0xff29('0x70')][_0xff29('0x119')](function(_0x3e7fe8){return _0x4619d7['removeTeams'](_0x2252d5,{'transaction':_0x3e7fe8})[_0xff29('0x16')](function(){return db[_0xff29('0x11a')][_0xff29('0x4d')]({'where':{'id':{'$in':_0x2252d5}}});})[_0xff29('0x16')](function(_0x1f36a4){var _0x4d2efb=_['map'](_0x1f36a4,function(_0x16cd89){return _0x16cd89[_0xff29('0x11b')]();});return Promise[_0xff29('0x56')](_0x4d2efb);})[_0xff29('0x16')](function(_0x4f1ac1){_0x58d585=_[_0xff29('0x124')](_0x4f1ac1);var _0xacabdf=_[_0xff29('0x35')](_0x58d585,function(_0x42049a){return _0x42049a[_0xff29('0x125')](_0x4619d7['id'],{'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0xacabdf);})[_0xff29('0x16')](function(){if(!_0x4619d7[_0xff29('0xa5')])return;var _0x351157=_[_0xff29('0x33')](_0x58d585,function(_0x327af5){return _0x327af5['getDataValue']('channel')===_0xff29('0x11e');});var _0x10cad0=_[_0xff29('0x35')](_0x351157,function(_0x5c5a1c){return db[_0xff29('0xb6')][_0xff29('0x3b')]({'where':{'VoiceQueueId':_0x5c5a1c['id'],'UserId':_0x4619d7['id']},'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0x10cad0);})[_0xff29('0x16')](function(){return db[_0xff29('0x11f')]['findAll']({'where':{'teamId':{'$in':_0x2252d5}}});})['then'](function(_0x2c96be){var _0x3e214b=_[_0xff29('0x35')](_0x2c96be,function(_0x4f82d7){return db['UserVoicePrefix'][_0xff29('0x3b')]({'where':{'UserId':_0x4619d7['id'],'VoicePrefixId':_0x4f82d7[_0xff29('0x121')]}},{'transaction':_0x3e7fe8});});return Promise[_0xff29('0x56')](_0x3e214b);});});})['then'](function(){for(var _0x5c2241=0x0;_0x5c2241<_0x58d585['length'];_0x5c2241++){var _0x55abb4=_0x58d585[_0x5c2241]['getDataValue'](_0xff29('0xa4'));var _0x2ffb86=_0x55abb4+'QueueId';socket[_0xff29('0x2a')](_0xff29('0x2f')+_0x55abb4+_0xff29('0xbc'),{'UserId':_0x508e29,['queueField']:_0x58d585[_0x5c2241]['id']});}})[_0xff29('0x16')](respondWithStatusCode(_0x3d78f2,null))[_0xff29('0x20')](APIHandleError(_0x3d78f2));};exports[_0xff29('0x126')]=function(_0x38fd31,_0x11ebb7){var _0x29d7b6={};var _0x43ce04={};var _0x2f6ed2;var _0x2a4e8c;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x38fd31[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x11ebb7,null))[_0xff29('0x16')](function(_0x4b498c){if(_0x4b498c){_0x2f6ed2=_0x4b498c;_0x43ce04[_0xff29('0x58')]=_[_0xff29('0x5a')](db['CmList']['rawAttributes']);_0x43ce04[_0xff29('0x47')]=_['keys'](_0x38fd31[_0xff29('0x47')]);_0x43ce04[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x43ce04['model'],_0x43ce04['query']);_0x29d7b6['attributes']=_[_0xff29('0x5d')](_0x43ce04[_0xff29('0x58')],qs['fields'](_0x38fd31[_0xff29('0x47')][_0xff29('0x5e')]));_0x29d7b6[_0xff29('0x4c')]=_0x29d7b6[_0xff29('0x4c')][_0xff29('0x50')]?_0x29d7b6['attributes']:_0x43ce04[_0xff29('0x58')];_0x29d7b6['order']=qs[_0xff29('0xd4')](_0x38fd31[_0xff29('0x47')][_0xff29('0xd4')]);_0x29d7b6['where']=qs[_0xff29('0x5c')](_['pick'](_0x38fd31[_0xff29('0x47')],_0x43ce04[_0xff29('0x5c')]));if(_0x38fd31[_0xff29('0x47')][_0xff29('0x33')]){_0x29d7b6[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x29d7b6['where'],{'$or':_[_0xff29('0x35')](_0x29d7b6[_0xff29('0x4c')],function(_0x128ba6){var _0x5c4994={};_0x5c4994[_0x128ba6]={'$like':'%'+_0x38fd31[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x5c4994;})});}_0x29d7b6=_['merge']({},_0x29d7b6,_0x38fd31['options']);return _0x2f6ed2['getLists'](_0x29d7b6);}})['then'](function(_0x55f446){if(_0x55f446){_0x2a4e8c=_0x55f446[_0xff29('0x50')];if(!_0x38fd31[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x29d7b6[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x38fd31['query'][_0xff29('0x24')]);_0x29d7b6[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x38fd31[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2f6ed2[_0xff29('0x126')](_0x29d7b6);}})[_0xff29('0x16')](function(_0x450b1c){if(_0x450b1c){return _0x450b1c?{'count':_0x2a4e8c,'rows':_0x450b1c}:null;}})['then'](respondWithResult(_0x11ebb7,null))[_0xff29('0x20')](handleError(_0x11ebb7,null));};exports['getAgents']=function(_0x37b87c,_0x295fc4){var _0xd22d24={};var _0x42dac6={};var _0x52f8f0;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x37b87c[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x295fc4,null))[_0xff29('0x16')](function(_0x1f7ad4){if(_0x1f7ad4){_0x52f8f0=_0x1f7ad4;_0x42dac6[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x46')][_0xff29('0x40')]);_0x42dac6[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x37b87c['query']);_0x42dac6[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x42dac6[_0xff29('0x58')],_0x42dac6['query']);_0xd22d24[_0xff29('0x4c')]=_['intersection'](_0x42dac6[_0xff29('0x58')],qs['fields'](_0x37b87c['query'][_0xff29('0x5e')]));_0xd22d24[_0xff29('0x4c')]=_0xd22d24['attributes'][_0xff29('0x50')]?_0xd22d24['attributes']:_0x42dac6[_0xff29('0x58')];_0xd22d24['order']=qs[_0xff29('0xd4')](_0x37b87c[_0xff29('0x47')][_0xff29('0xd4')]);_0xd22d24[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x37b87c['query'],_0x42dac6['filters']));if(_0x37b87c[_0xff29('0x47')][_0xff29('0x33')]){_0xd22d24[_0xff29('0x45')]=_[_0xff29('0xd6')](_0xd22d24[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0xd22d24['attributes'],function(_0x17f002){var _0x16f226={};_0x16f226[_0x17f002]={'$like':'%'+_0x37b87c[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x16f226;})});}_0xd22d24['model']=db[_0xff29('0x46')];_0xd22d24['as']=_0xff29('0x30');_0xd22d24=_[_0xff29('0xd6')]({},_0xd22d24,_0x37b87c[_0xff29('0x60')]);return _0x52f8f0[_0xff29('0x127')]({'include':[_0xd22d24]});}})['then'](function(_0xf837d4){if(_0xf837d4){var _0x254c66={},_0x989cf6=[];for(var _0x18fe5c=0x0;_0x18fe5c<_0xf837d4[_0xff29('0x50')];_0x18fe5c+=0x1){for(var _0x584aef=0x0,_0x40e04b;_0x584aef<_0xf837d4[_0x18fe5c]['Agents'][_0xff29('0x50')];_0x584aef+=0x1){_0x40e04b=_0xf837d4[_0x18fe5c][_0xff29('0x30')][_0x584aef][_0xff29('0x2b')]({'plain':!![]});_0x254c66[_0x40e04b['id']]=_0x40e04b;}}_0x254c66=_[_0xff29('0x128')](_0x254c66);for(var _0x160fc8=qs[_0xff29('0x23')](_0x37b87c[_0xff29('0x47')][_0xff29('0x23')]);_0x160fc8<_0x254c66[_0xff29('0x50')]&&_0x989cf6[_0xff29('0x50')]<qs[_0xff29('0x24')](_0x37b87c[_0xff29('0x47')][_0xff29('0x24')]);_0x160fc8+=0x1){if(_0x254c66[_0x160fc8]){_0x989cf6[_0xff29('0x51')](_0x254c66[_0x160fc8]);}}return{'count':_0x254c66[_0xff29('0x50')],'rows':_0x989cf6};}})['then'](respondWithResult(_0x295fc4,null))[_0xff29('0x20')](handleError(_0x295fc4,null));};exports[_0xff29('0x3b')]=function(_0x51a939,_0x25707a){if(_0x51a939[_0xff29('0x2f')]['id']==_0x51a939[_0xff29('0x67')]['id']){return _0x25707a[_0xff29('0x21')](0x1f4)['send']({'message':_0xff29('0x129')});}return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x51a939['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x25707a,null))[_0xff29('0x16')](removeEntity(_0x25707a,null))[_0xff29('0x20')](handleError(_0x25707a,null));};exports[_0xff29('0x12a')]=function(_0x34f0f9,_0x598440){return db[_0xff29('0x46')]['find']({'where':{'id':_0x34f0f9['params']['id']}})['then'](handleEntityNotFound(_0x598440,null))['then'](function(_0x7f4840){if(_0x7f4840){return _0x7f4840[_0xff29('0x12a')](_0x34f0f9[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x34f0f9[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x5abf79=0x0;_0x5abf79<_0x34f0f9[_0xff29('0x64')][_0xff29('0x68')]['length'];_0x5abf79+=0x1){socket[_0xff29('0x2a')](_0xff29('0x12c'),{'ChatInteractionId':Number(_0x34f0f9['body'][_0xff29('0x68')][_0x5abf79]),'UserId':Number(_0x34f0f9['params']['id'])});}return _0x34f0f9[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x598440,null))[_0xff29('0x20')](handleError(_0x598440,null));};exports[_0xff29('0x12d')]=function(_0x6f1157,_0x15b640){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x6f1157[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x15b640,null))[_0xff29('0x16')](function(_0x1c1ba5){if(_0x1c1ba5){return _0x1c1ba5[_0xff29('0x12d')](_0x6f1157['query'][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x6f1157['query'][_0xff29('0x68')])){for(var _0x1f4a4a=0x0;_0x1f4a4a<_0x6f1157[_0xff29('0x47')][_0xff29('0x68')][_0xff29('0x50')];_0x1f4a4a+=0x1){socket[_0xff29('0x2a')](_0xff29('0x12e'),{'ChatInteractionId':Number(_0x6f1157['query']['ids'][_0x1f4a4a]),'UserId':Number(_0x6f1157['params']['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x12e'),{'ChatInteractionId':Number(_0x6f1157['query'][_0xff29('0x68')]),'UserId':Number(_0x6f1157[_0xff29('0x67')]['id'])});}});}})['then'](respondWithStatusCode(_0x15b640,null))[_0xff29('0x20')](handleError(_0x15b640,null));};exports[_0xff29('0x12f')]=function(_0x32fa59,_0x2ee1b3){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x32fa59[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2ee1b3,null))[_0xff29('0x16')](function(_0x13c96e){if(_0x13c96e){return _0x13c96e[_0xff29('0x12f')](_0x32fa59['body'][_0xff29('0x68')],_[_0xff29('0x12b')](_0x32fa59[_0xff29('0x64')],['ids','id'])||{})[_0xff29('0xb0')](function(){for(var _0x6276cd=0x0;_0x6276cd<_0x32fa59[_0xff29('0x64')]['ids'][_0xff29('0x50')];_0x6276cd+=0x1){socket['emit']('user_has_mail_interactions:save',{'MailInteractionId':Number(_0x32fa59[_0xff29('0x64')]['ids'][_0x6276cd]),'UserId':Number(_0x32fa59['params']['id'])});}return _0x32fa59[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x2ee1b3,null))[_0xff29('0x20')](handleError(_0x2ee1b3,null));};exports['removeMailInteractions']=function(_0x55bfa8,_0x39c006){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x55bfa8[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x39c006,null))['then'](function(_0x2cc5ce){if(_0x2cc5ce){return _0x2cc5ce[_0xff29('0x130')](_0x55bfa8[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x55bfa8['query'][_0xff29('0x68')])){for(var _0x40e818=0x0;_0x40e818<_0x55bfa8['query'][_0xff29('0x68')][_0xff29('0x50')];_0x40e818+=0x1){socket[_0xff29('0x2a')](_0xff29('0x131'),{'MailInteractionId':Number(_0x55bfa8[_0xff29('0x47')][_0xff29('0x68')][_0x40e818]),'UserId':Number(_0x55bfa8[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x55bfa8[_0xff29('0x47')]['ids']),'UserId':Number(_0x55bfa8[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x39c006,null))[_0xff29('0x20')](handleError(_0x39c006,null));};exports['addFaxInteractions']=function(_0x56dd56,_0x3de3a8){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x56dd56[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3de3a8,null))[_0xff29('0x16')](function(_0x28763b){if(_0x28763b){return _0x28763b[_0xff29('0x132')](_0x56dd56[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0x56dd56[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x59aad9=0x0;_0x59aad9<_0x56dd56[_0xff29('0x64')][_0xff29('0x68')][_0xff29('0x50')];_0x59aad9+=0x1){socket[_0xff29('0x2a')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x56dd56[_0xff29('0x64')][_0xff29('0x68')][_0x59aad9]),'UserId':Number(_0x56dd56['params']['id'])});}return _0x56dd56[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x3de3a8,null))[_0xff29('0x20')](handleError(_0x3de3a8,null));};exports[_0xff29('0x133')]=function(_0xfceef7,_0xd96e81){return db['User']['find']({'where':{'id':_0xfceef7['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0xd96e81,null))['then'](function(_0x46de68){if(_0x46de68){return _0x46de68[_0xff29('0x133')](_0xfceef7[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_['isArray'](_0xfceef7[_0xff29('0x47')][_0xff29('0x68')])){for(var _0x396961=0x0;_0x396961<_0xfceef7[_0xff29('0x47')][_0xff29('0x68')][_0xff29('0x50')];_0x396961+=0x1){socket[_0xff29('0x2a')](_0xff29('0x134'),{'FaxInteractionId':Number(_0xfceef7[_0xff29('0x47')]['ids'][_0x396961]),'UserId':Number(_0xfceef7[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x134'),{'FaxInteractionId':Number(_0xfceef7[_0xff29('0x47')][_0xff29('0x68')]),'UserId':Number(_0xfceef7['params']['id'])});}});}})['then'](respondWithStatusCode(_0xd96e81,null))[_0xff29('0x20')](handleError(_0xd96e81,null));};exports['addSmsInteractions']=function(_0x2b0ec1,_0x2c1bad){return db['User'][_0xff29('0x38')]({'where':{'id':_0x2b0ec1[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x2c1bad,null))['then'](function(_0x13dacb){if(_0x13dacb){return _0x13dacb[_0xff29('0x135')](_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x2b0ec1['body'],['ids','id'])||{})[_0xff29('0xb0')](function(){for(var _0x4079ac=0x0;_0x4079ac<_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')]['length'];_0x4079ac+=0x1){socket[_0xff29('0x2a')](_0xff29('0x136'),{'SmsInteractionId':Number(_0x2b0ec1[_0xff29('0x64')][_0xff29('0x68')][_0x4079ac]),'UserId':Number(_0x2b0ec1[_0xff29('0x67')]['id'])});}return _0x2b0ec1[_0xff29('0x64')]['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x2c1bad,null))[_0xff29('0x20')](handleError(_0x2c1bad,null));};exports[_0xff29('0x137')]=function(_0x1e0789,_0x5b7e09){return db['User'][_0xff29('0x38')]({'where':{'id':_0x1e0789[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x5b7e09,null))[_0xff29('0x16')](function(_0x1fb7a6){if(_0x1fb7a6){return _0x1fb7a6['removeSmsInteractions'](_0x1e0789[_0xff29('0x47')][_0xff29('0x68')])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x1e0789[_0xff29('0x47')][_0xff29('0x68')])){for(var _0x4f95ad=0x0;_0x4f95ad<_0x1e0789[_0xff29('0x47')]['ids'][_0xff29('0x50')];_0x4f95ad+=0x1){socket[_0xff29('0x2a')](_0xff29('0x138'),{'SmsInteractionId':Number(_0x1e0789[_0xff29('0x47')][_0xff29('0x68')][_0x4f95ad]),'UserId':Number(_0x1e0789[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x138'),{'SmsInteractionId':Number(_0x1e0789[_0xff29('0x47')][_0xff29('0x68')]),'UserId':Number(_0x1e0789[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x5b7e09,null))[_0xff29('0x20')](handleError(_0x5b7e09,null));};exports[_0xff29('0x139')]=function(_0x151f86,_0x4582c7){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x151f86[_0xff29('0x67')]['id']}})['then'](handleEntityNotFound(_0x4582c7,null))[_0xff29('0x16')](function(_0x462fad){if(_0x462fad){return _0x462fad[_0xff29('0x139')](_0x151f86[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x151f86[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})['spread'](function(){for(var _0x4d708c=0x0;_0x4d708c<_0x151f86[_0xff29('0x64')][_0xff29('0x68')][_0xff29('0x50')];_0x4d708c+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13a'),{'OpenchannelInteractionId':Number(_0x151f86['body'][_0xff29('0x68')][_0x4d708c]),'UserId':Number(_0x151f86['params']['id'])});}return _0x151f86['body'][_0xff29('0x68')];});}})['then'](respondWithResult(_0x4582c7,null))['catch'](handleError(_0x4582c7,null));};exports[_0xff29('0x13b')]=function(_0x10da66,_0x20e26d){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x10da66[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x20e26d,null))[_0xff29('0x16')](function(_0x29fce3){if(_0x29fce3){return _0x29fce3['removeOpenchannelInteractions'](_0x10da66[_0xff29('0x47')]['ids'])[_0xff29('0x16')](function(){if(_[_0xff29('0xba')](_0x10da66['query'][_0xff29('0x68')])){for(var _0x4c6a77=0x0;_0x4c6a77<_0x10da66['query'][_0xff29('0x68')][_0xff29('0x50')];_0x4c6a77+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13c'),{'OpenchannelInteractionId':Number(_0x10da66[_0xff29('0x47')][_0xff29('0x68')][_0x4c6a77]),'UserId':Number(_0x10da66[_0xff29('0x67')]['id'])});}}else{socket[_0xff29('0x2a')](_0xff29('0x13c'),{'OpenchannelInteractionId':Number(_0x10da66['query'][_0xff29('0x68')]),'UserId':Number(_0x10da66[_0xff29('0x67')]['id'])});}});}})[_0xff29('0x16')](respondWithStatusCode(_0x20e26d,null))[_0xff29('0x20')](handleError(_0x20e26d,null));};exports[_0xff29('0x13d')]=function(_0x44c0b2,_0x5b36b8){return db['User'][_0xff29('0x38')]({'where':{'id':_0x44c0b2[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x5b36b8,null))[_0xff29('0x16')](function(_0x3f3d1c){if(_0x3f3d1c){return _0x3f3d1c['addWhatsappInteractions'](_0x44c0b2[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x44c0b2[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{})[_0xff29('0xb0')](function(){for(var _0x30ace5=0x0;_0x30ace5<_0x44c0b2['body']['ids']['length'];_0x30ace5+=0x1){socket[_0xff29('0x2a')](_0xff29('0x13e'),{'WhatsappInteractionId':Number(_0x44c0b2[_0xff29('0x64')][_0xff29('0x68')][_0x30ace5]),'UserId':Number(_0x44c0b2[_0xff29('0x67')]['id'])});}return _0x44c0b2['body']['ids'];});}})[_0xff29('0x16')](respondWithResult(_0x5b36b8,null))['catch'](handleError(_0x5b36b8,null));};exports[_0xff29('0x13f')]=function(_0x13edfe,_0x4a1fca){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x13edfe[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4a1fca,null))['then'](function(_0x4b7171){if(_0x4b7171){return _0x4b7171['removeWhatsappInteractions'](_0x13edfe[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](respondWithStatusCode(_0x4a1fca,null))['catch'](handleError(_0x4a1fca,null));};exports[_0xff29('0x140')]=function(_0x57f4cd,_0x419399){var _0x1c62db={};var _0x34ed8b={};var _0x5b3178;var _0x3034be;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x57f4cd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x419399,null))[_0xff29('0x16')](function(_0x3bf473){if(_0x3bf473){_0x5b3178=_0x3bf473;_0x34ed8b[_0xff29('0x58')]=_['keys'](db[_0xff29('0x141')][_0xff29('0x40')]);_0x34ed8b[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x57f4cd[_0xff29('0x47')]);_0x34ed8b['filters']=_[_0xff29('0x5d')](_0x34ed8b[_0xff29('0x58')],_0x34ed8b[_0xff29('0x47')]);_0x1c62db[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x34ed8b[_0xff29('0x58')],qs['fields'](_0x57f4cd[_0xff29('0x47')][_0xff29('0x5e')]));_0x1c62db[_0xff29('0x4c')]=_0x1c62db[_0xff29('0x4c')]['length']?_0x1c62db[_0xff29('0x4c')]:_0x34ed8b['model'];_0x1c62db[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x57f4cd['query']['sort']);_0x1c62db['where']=qs[_0xff29('0x5c')](_['pick'](_0x57f4cd['query'],_0x34ed8b[_0xff29('0x5c')]));if(_0x57f4cd[_0xff29('0x47')][_0xff29('0x33')]){_0x1c62db[_0xff29('0x45')]=_['merge'](_0x1c62db['where'],{'$or':_[_0xff29('0x35')](_0x1c62db['attributes'],function(_0x13aba9){var _0x109a92={};_0x109a92[_0x13aba9]={'$like':'%'+_0x57f4cd[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x109a92;})});}_0x1c62db=_[_0xff29('0xd6')]({},_0x1c62db,_0x57f4cd[_0xff29('0x60')]);return _0x5b3178[_0xff29('0x140')](_0x1c62db);}})[_0xff29('0x16')](function(_0xb900a5){if(_0xb900a5){_0x3034be=_0xb900a5[_0xff29('0x50')];if(!_0x57f4cd[_0xff29('0x47')][_0xff29('0xd7')]('nolimit')){_0x1c62db[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x57f4cd['query']['limit']);_0x1c62db[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x57f4cd[_0xff29('0x47')][_0xff29('0x23')]);}return _0x5b3178[_0xff29('0x140')](_0x1c62db);}})[_0xff29('0x16')](function(_0x33c298){if(_0x33c298){return _0x33c298?{'count':_0x3034be,'rows':_0x33c298}:null;}})[_0xff29('0x16')](respondWithResult(_0x419399,null))['catch'](handleError(_0x419399,null));};exports[_0xff29('0x142')]=function(_0x292ec1,_0x34990a){var _0x4c9672={};var _0x3b867d={};var _0x56b646;var _0x3fb11b;return db['User']['findOne']({'where':{'id':_0x292ec1[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x34990a,null))[_0xff29('0x16')](function(_0x4179d7){if(_0x4179d7){_0x56b646=_0x4179d7;_0x3b867d[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x143')][_0xff29('0x40')]);_0x3b867d[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x292ec1['query']);_0x3b867d[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x3b867d[_0xff29('0x58')],_0x3b867d[_0xff29('0x47')]);_0x4c9672['attributes']=_['intersection'](_0x3b867d[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x292ec1[_0xff29('0x47')]['fields']));_0x4c9672[_0xff29('0x4c')]=_0x4c9672[_0xff29('0x4c')][_0xff29('0x50')]?_0x4c9672[_0xff29('0x4c')]:_0x3b867d[_0xff29('0x58')];_0x4c9672[_0xff29('0xdd')]=qs['sort'](_0x292ec1[_0xff29('0x47')][_0xff29('0xd4')]);_0x4c9672[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x292ec1['query'],_0x3b867d[_0xff29('0x5c')]));if(_0x292ec1[_0xff29('0x47')]['filter']){_0x4c9672[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x4c9672[_0xff29('0x45')],{'$or':_['map'](_0x4c9672[_0xff29('0x4c')],function(_0x220ece){var _0x3ad537={};_0x3ad537[_0x220ece]={'$like':'%'+_0x292ec1['query'][_0xff29('0x33')]+'%'};return _0x3ad537;})});}_0x4c9672=_['merge']({},_0x4c9672,_0x292ec1[_0xff29('0x60')]);return _0x56b646[_0xff29('0x142')](_0x4c9672);}})[_0xff29('0x16')](function(_0x3851b1){if(_0x3851b1){_0x3fb11b=_0x3851b1[_0xff29('0x50')];if(!_0x292ec1['query'][_0xff29('0xd7')](_0xff29('0xdf'))){_0x4c9672[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x292ec1['query'][_0xff29('0x24')]);_0x4c9672[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x292ec1[_0xff29('0x47')][_0xff29('0x23')]);}return _0x56b646['getFaxAccounts'](_0x4c9672);}})[_0xff29('0x16')](function(_0x1e6b45){if(_0x1e6b45){return _0x1e6b45?{'count':_0x3fb11b,'rows':_0x1e6b45}:null;}})[_0xff29('0x16')](respondWithResult(_0x34990a,null))[_0xff29('0x20')](handleError(_0x34990a,null));};exports[_0xff29('0x144')]=function(_0xce819b,_0x4ee189){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0xce819b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ee189,null))[_0xff29('0x16')](function(_0x1dea40){if(_0x1dea40){return _0x1dea40[_0xff29('0x144')](_0xce819b['body'][_0xff29('0x68')],_[_0xff29('0x12b')](_0xce819b[_0xff29('0x64')],['ids','id'])||{});}})['then'](respondWithResult(_0x4ee189,null))[_0xff29('0x20')](handleError(_0x4ee189,null));};exports[_0xff29('0x145')]=function(_0x2aabfb,_0x3d55f7){return db[_0xff29('0x46')]['find']({'where':{'id':_0x2aabfb[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x3d55f7,null))[_0xff29('0x16')](function(_0x34189f){if(_0x34189f){return _0x34189f[_0xff29('0x145')](_0x2aabfb[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x3d55f7,null))['catch'](handleError(_0x3d55f7,null));};exports[_0xff29('0x146')]=function(_0xff7f00,_0x1a46f3){var _0x2a7070={};var _0x5bd136={};var _0x4e38a7;var _0x324baa;return db['User'][_0xff29('0x9e')]({'where':{'id':_0xff7f00[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1a46f3,null))[_0xff29('0x16')](function(_0x312bf9){if(_0x312bf9){_0x4e38a7=_0x312bf9;_0x5bd136['model']=_[_0xff29('0x5a')](db['MailAccount']['rawAttributes']);_0x5bd136[_0xff29('0x47')]=_[_0xff29('0x5a')](_0xff7f00[_0xff29('0x47')]);_0x5bd136[_0xff29('0x5c')]=_['intersection'](_0x5bd136[_0xff29('0x58')],_0x5bd136[_0xff29('0x47')]);_0x2a7070[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x5bd136[_0xff29('0x58')],qs[_0xff29('0x5e')](_0xff7f00[_0xff29('0x47')]['fields']));_0x2a7070['attributes']=_0x2a7070[_0xff29('0x4c')][_0xff29('0x50')]?_0x2a7070['attributes']:_0x5bd136[_0xff29('0x58')];_0x2a7070[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0xff7f00[_0xff29('0x47')]['sort']);_0x2a7070[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0xff7f00[_0xff29('0x47')],_0x5bd136[_0xff29('0x5c')]));if(_0xff7f00[_0xff29('0x47')][_0xff29('0x33')]){_0x2a7070[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x2a7070[_0xff29('0x45')],{'$or':_['map'](_0x2a7070['attributes'],function(_0x51950d){var _0x33dd66={};_0x33dd66[_0x51950d]={'$like':'%'+_0xff7f00[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x33dd66;})});}_0x2a7070=_[_0xff29('0xd6')]({},_0x2a7070,_0xff7f00['options']);return _0x4e38a7[_0xff29('0x146')](_0x2a7070);}})['then'](function(_0x1b7ba7){if(_0x1b7ba7){_0x324baa=_0x1b7ba7[_0xff29('0x50')];if(!_0xff7f00[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x2a7070[_0xff29('0x24')]=qs['limit'](_0xff7f00[_0xff29('0x47')][_0xff29('0x24')]);_0x2a7070[_0xff29('0x23')]=qs[_0xff29('0x23')](_0xff7f00[_0xff29('0x47')][_0xff29('0x23')]);}return _0x4e38a7[_0xff29('0x146')](_0x2a7070);}})[_0xff29('0x16')](function(_0x1b2d4a){if(_0x1b2d4a){return _0x1b2d4a?{'count':_0x324baa,'rows':_0x1b2d4a}:null;}})[_0xff29('0x16')](respondWithResult(_0x1a46f3,null))[_0xff29('0x20')](handleError(_0x1a46f3,null));};exports[_0xff29('0x147')]=function(_0x3e1c75,_0x1d1a56){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x3e1c75[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x1d1a56,null))[_0xff29('0x16')](function(_0x28ca9b){if(_0x28ca9b){return _0x28ca9b[_0xff29('0x147')](_0x3e1c75[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x3e1c75['body'],[_0xff29('0x68'),'id'])||{});}})['then'](respondWithResult(_0x1d1a56,null))[_0xff29('0x20')](handleError(_0x1d1a56,null));};exports['removeMailAccounts']=function(_0x35611c,_0x399234){return db['User'][_0xff29('0x38')]({'where':{'id':_0x35611c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x399234,null))[_0xff29('0x16')](function(_0x5a641d){if(_0x5a641d){return _0x5a641d['removeMailAccounts'](_0x35611c[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x399234,null))[_0xff29('0x20')](handleError(_0x399234,null));};exports[_0xff29('0x148')]=function(_0x2d4540,_0x362362){var _0x46f2ad={};var _0x4530b9={};var _0x186f16;var _0x14dbdf;return db['User'][_0xff29('0x9e')]({'where':{'id':_0x2d4540[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x362362,null))[_0xff29('0x16')](function(_0x5213cb){if(_0x5213cb){_0x186f16=_0x5213cb;_0x4530b9[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x149')][_0xff29('0x40')]);_0x4530b9['query']=_[_0xff29('0x5a')](_0x2d4540[_0xff29('0x47')]);_0x4530b9[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0x4530b9[_0xff29('0x58')],_0x4530b9[_0xff29('0x47')]);_0x46f2ad[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x4530b9[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x2d4540[_0xff29('0x47')][_0xff29('0x5e')]));_0x46f2ad[_0xff29('0x4c')]=_0x46f2ad[_0xff29('0x4c')][_0xff29('0x50')]?_0x46f2ad[_0xff29('0x4c')]:_0x4530b9[_0xff29('0x58')];_0x46f2ad[_0xff29('0xdd')]=qs[_0xff29('0xd4')](_0x2d4540['query']['sort']);_0x46f2ad[_0xff29('0x45')]=qs[_0xff29('0x5c')](_['pick'](_0x2d4540[_0xff29('0x47')],_0x4530b9[_0xff29('0x5c')]));if(_0x2d4540[_0xff29('0x47')][_0xff29('0x33')]){_0x46f2ad['where']=_[_0xff29('0xd6')](_0x46f2ad[_0xff29('0x45')],{'$or':_['map'](_0x46f2ad[_0xff29('0x4c')],function(_0x2f6e83){var _0xa493b5={};_0xa493b5[_0x2f6e83]={'$like':'%'+_0x2d4540[_0xff29('0x47')]['filter']+'%'};return _0xa493b5;})});}_0x46f2ad=_[_0xff29('0xd6')]({},_0x46f2ad,_0x2d4540[_0xff29('0x60')]);return _0x186f16[_0xff29('0x148')](_0x46f2ad);}})[_0xff29('0x16')](function(_0x3beb0c){if(_0x3beb0c){_0x14dbdf=_0x3beb0c[_0xff29('0x50')];if(!_0x2d4540[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x46f2ad[_0xff29('0x24')]=qs[_0xff29('0x24')](_0x2d4540[_0xff29('0x47')][_0xff29('0x24')]);_0x46f2ad[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2d4540[_0xff29('0x47')][_0xff29('0x23')]);}return _0x186f16[_0xff29('0x148')](_0x46f2ad);}})[_0xff29('0x16')](function(_0x48a93f){if(_0x48a93f){return _0x48a93f?{'count':_0x14dbdf,'rows':_0x48a93f}:null;}})[_0xff29('0x16')](respondWithResult(_0x362362,null))[_0xff29('0x20')](handleError(_0x362362,null));};exports[_0xff29('0x14a')]=function(_0x270bf5,_0x449e02){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x270bf5[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x449e02,null))['then'](function(_0x409853){if(_0x409853){return _0x409853[_0xff29('0x14a')](_0x270bf5[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x270bf5[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x449e02,null))['catch'](handleError(_0x449e02,null));};exports[_0xff29('0x14b')]=function(_0x5b85b7,_0x357b7e){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x5b85b7[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x357b7e,null))['then'](function(_0x1f22c2){if(_0x1f22c2){return _0x1f22c2['removeOpenchannelAccounts'](_0x5b85b7[_0xff29('0x47')]['ids']);}})[_0xff29('0x16')](respondWithStatusCode(_0x357b7e,null))[_0xff29('0x20')](handleError(_0x357b7e,null));};exports['getSmsAccounts']=function(_0x25fa8b,_0x15abd0){var _0x45b907={};var _0x1d99fb={};var _0xe55d3;var _0x210ddc;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x25fa8b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x15abd0,null))['then'](function(_0x252503){if(_0x252503){_0xe55d3=_0x252503;_0x1d99fb['model']=_[_0xff29('0x5a')](db['SmsAccount'][_0xff29('0x40')]);_0x1d99fb[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x25fa8b['query']);_0x1d99fb['filters']=_[_0xff29('0x5d')](_0x1d99fb['model'],_0x1d99fb[_0xff29('0x47')]);_0x45b907['attributes']=_[_0xff29('0x5d')](_0x1d99fb['model'],qs[_0xff29('0x5e')](_0x25fa8b['query'][_0xff29('0x5e')]));_0x45b907[_0xff29('0x4c')]=_0x45b907['attributes'][_0xff29('0x50')]?_0x45b907['attributes']:_0x1d99fb[_0xff29('0x58')];_0x45b907['order']=qs[_0xff29('0xd4')](_0x25fa8b[_0xff29('0x47')]['sort']);_0x45b907[_0xff29('0x45')]=qs['filters'](_[_0xff29('0xd5')](_0x25fa8b[_0xff29('0x47')],_0x1d99fb[_0xff29('0x5c')]));if(_0x25fa8b[_0xff29('0x47')]['filter']){_0x45b907[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x45b907['where'],{'$or':_[_0xff29('0x35')](_0x45b907[_0xff29('0x4c')],function(_0x628aa5){var _0x223fe1={};_0x223fe1[_0x628aa5]={'$like':'%'+_0x25fa8b['query']['filter']+'%'};return _0x223fe1;})});}_0x45b907=_[_0xff29('0xd6')]({},_0x45b907,_0x25fa8b[_0xff29('0x60')]);return _0xe55d3[_0xff29('0x14c')](_0x45b907);}})[_0xff29('0x16')](function(_0x1c4e23){if(_0x1c4e23){_0x210ddc=_0x1c4e23[_0xff29('0x50')];if(!_0x25fa8b[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x45b907[_0xff29('0x24')]=qs['limit'](_0x25fa8b['query'][_0xff29('0x24')]);_0x45b907[_0xff29('0x23')]=qs['offset'](_0x25fa8b[_0xff29('0x47')][_0xff29('0x23')]);}return _0xe55d3[_0xff29('0x14c')](_0x45b907);}})[_0xff29('0x16')](function(_0x5d1854){if(_0x5d1854){return _0x5d1854?{'count':_0x210ddc,'rows':_0x5d1854}:null;}})[_0xff29('0x16')](respondWithResult(_0x15abd0,null))[_0xff29('0x20')](handleError(_0x15abd0,null));};exports[_0xff29('0x14d')]=function(_0xc29a17,_0x7ec26f){return db[_0xff29('0x46')]['find']({'where':{'id':_0xc29a17['params']['id']}})['then'](handleEntityNotFound(_0x7ec26f,null))['then'](function(_0xdd6594){if(_0xdd6594){return _0xdd6594[_0xff29('0x14d')](_0xc29a17[_0xff29('0x64')][_0xff29('0x68')],_['omit'](_0xc29a17[_0xff29('0x64')],['ids','id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x7ec26f,null))['catch'](handleError(_0x7ec26f,null));};exports[_0xff29('0x14e')]=function(_0x3e36dd,_0x4ee0f6){return db['User'][_0xff29('0x38')]({'where':{'id':_0x3e36dd[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x4ee0f6,null))['then'](function(_0x917451){if(_0x917451){return _0x917451[_0xff29('0x14e')](_0x3e36dd['query'][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x4ee0f6,null))[_0xff29('0x20')](handleError(_0x4ee0f6,null));};exports[_0xff29('0x14f')]=function(_0x3adbd0,_0x948a54){var _0x17eafe={};var _0x22d6a5={};var _0x2843ae;var _0x53f8eb;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x3adbd0[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x948a54,null))['then'](function(_0x73c3e8){if(_0x73c3e8){_0x2843ae=_0x73c3e8;_0x22d6a5[_0xff29('0x58')]=_['keys'](db[_0xff29('0x150')][_0xff29('0x40')]);_0x22d6a5[_0xff29('0x47')]=_['keys'](_0x3adbd0[_0xff29('0x47')]);_0x22d6a5['filters']=_[_0xff29('0x5d')](_0x22d6a5[_0xff29('0x58')],_0x22d6a5[_0xff29('0x47')]);_0x17eafe[_0xff29('0x4c')]=_['intersection'](_0x22d6a5['model'],qs[_0xff29('0x5e')](_0x3adbd0[_0xff29('0x47')][_0xff29('0x5e')]));_0x17eafe[_0xff29('0x4c')]=_0x17eafe['attributes'][_0xff29('0x50')]?_0x17eafe['attributes']:_0x22d6a5[_0xff29('0x58')];_0x17eafe[_0xff29('0xdd')]=qs['sort'](_0x3adbd0['query']['sort']);_0x17eafe[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x3adbd0[_0xff29('0x47')],_0x22d6a5['filters']));if(_0x3adbd0[_0xff29('0x47')][_0xff29('0x33')]){_0x17eafe[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x17eafe[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x17eafe[_0xff29('0x4c')],function(_0x15bf30){var _0x59648d={};_0x59648d[_0x15bf30]={'$like':'%'+_0x3adbd0[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x59648d;})});}_0x17eafe=_['merge']({},_0x17eafe,_0x3adbd0[_0xff29('0x60')]);return _0x2843ae['getChatWebsites'](_0x17eafe);}})['then'](function(_0x7c4471){if(_0x7c4471){_0x53f8eb=_0x7c4471['length'];if(!_0x3adbd0[_0xff29('0x47')]['hasOwnProperty'](_0xff29('0xdf'))){_0x17eafe['limit']=qs[_0xff29('0x24')](_0x3adbd0['query'][_0xff29('0x24')]);_0x17eafe[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x3adbd0[_0xff29('0x47')][_0xff29('0x23')]);}return _0x2843ae['getChatWebsites'](_0x17eafe);}})['then'](function(_0x3dc868){if(_0x3dc868){return _0x3dc868?{'count':_0x53f8eb,'rows':_0x3dc868}:null;}})[_0xff29('0x16')](respondWithResult(_0x948a54,null))[_0xff29('0x20')](handleError(_0x948a54,null));};exports[_0xff29('0x151')]=function(_0x12a5bb,_0x169927){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x12a5bb['params']['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x169927,null))[_0xff29('0x16')](function(_0x4dca3b){if(_0x4dca3b){return _0x4dca3b[_0xff29('0x151')](_0x12a5bb[_0xff29('0x64')][_0xff29('0x68')],_[_0xff29('0x12b')](_0x12a5bb[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x169927,null))['catch'](handleError(_0x169927,null));};exports['removeChatWebsites']=function(_0x5dc48c,_0x591f5e){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x5dc48c[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x591f5e,null))[_0xff29('0x16')](function(_0x1f219d){if(_0x1f219d){return _0x1f219d[_0xff29('0x152')](_0x5dc48c[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x591f5e,null))[_0xff29('0x20')](handleError(_0x591f5e,null));};exports[_0xff29('0x153')]=function(_0x2955fc,_0x136538){var _0x306f34={};var _0x402192={};var _0x5dae85;var _0x3b1a0b;return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x2955fc[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x136538,null))['then'](function(_0x5463a5){if(_0x5463a5){_0x5dae85=_0x5463a5;_0x402192[_0xff29('0x58')]=_[_0xff29('0x5a')](db[_0xff29('0x154')][_0xff29('0x40')]);_0x402192[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x2955fc[_0xff29('0x47')]);_0x402192[_0xff29('0x5c')]=_['intersection'](_0x402192[_0xff29('0x58')],_0x402192[_0xff29('0x47')]);_0x306f34[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0x402192['model'],qs[_0xff29('0x5e')](_0x2955fc[_0xff29('0x47')][_0xff29('0x5e')]));_0x306f34[_0xff29('0x4c')]=_0x306f34[_0xff29('0x4c')][_0xff29('0x50')]?_0x306f34['attributes']:_0x402192[_0xff29('0x58')];_0x306f34[_0xff29('0xdd')]=qs['sort'](_0x2955fc['query'][_0xff29('0xd4')]);_0x306f34[_0xff29('0x45')]=qs[_0xff29('0x5c')](_[_0xff29('0xd5')](_0x2955fc[_0xff29('0x47')],_0x402192[_0xff29('0x5c')]));if(_0x2955fc[_0xff29('0x47')]['filter']){_0x306f34[_0xff29('0x45')]=_[_0xff29('0xd6')](_0x306f34[_0xff29('0x45')],{'$or':_['map'](_0x306f34[_0xff29('0x4c')],function(_0x461246){var _0x5e9c5a={};_0x5e9c5a[_0x461246]={'$like':'%'+_0x2955fc[_0xff29('0x47')]['filter']+'%'};return _0x5e9c5a;})});}_0x306f34=_[_0xff29('0xd6')]({},_0x306f34,_0x2955fc[_0xff29('0x60')]);return _0x5dae85['getWhatsappAccounts'](_0x306f34);}})['then'](function(_0x2083d7){if(_0x2083d7){_0x3b1a0b=_0x2083d7['length'];if(!_0x2955fc['query'][_0xff29('0xd7')]('nolimit')){_0x306f34['limit']=qs[_0xff29('0x24')](_0x2955fc[_0xff29('0x47')][_0xff29('0x24')]);_0x306f34[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x2955fc[_0xff29('0x47')][_0xff29('0x23')]);}return _0x5dae85[_0xff29('0x153')](_0x306f34);}})[_0xff29('0x16')](function(_0x1d9abf){if(_0x1d9abf){return _0x1d9abf?{'count':_0x3b1a0b,'rows':_0x1d9abf}:null;}})[_0xff29('0x16')](respondWithResult(_0x136538,null))['catch'](handleError(_0x136538,null));};exports['addWhatsappAccounts']=function(_0x360e32,_0x31780c){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x360e32[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x31780c,null))[_0xff29('0x16')](function(_0x41facf){if(_0x41facf){return _0x41facf[_0xff29('0x155')](_0x360e32[_0xff29('0x64')]['ids'],_[_0xff29('0x12b')](_0x360e32[_0xff29('0x64')],[_0xff29('0x68'),'id'])||{});}})[_0xff29('0x16')](respondWithResult(_0x31780c,null))[_0xff29('0x20')](handleError(_0x31780c,null));};exports['removeWhatsappAccounts']=function(_0x369a57,_0x27b5f9){return db['User']['find']({'where':{'id':_0x369a57[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x27b5f9,null))[_0xff29('0x16')](function(_0x2a6fd6){if(_0x2a6fd6){return _0x2a6fd6['removeWhatsappAccounts'](_0x369a57[_0xff29('0x47')][_0xff29('0x68')]);}})[_0xff29('0x16')](respondWithStatusCode(_0x27b5f9,null))[_0xff29('0x20')](handleError(_0x27b5f9,null));};exports[_0xff29('0x156')]=function(_0x46acf3,_0x32c794){var _0x40e1db={},_0xf98b08={},_0x1ee492={'count':0x0,'rows':[]};var _0x2ed201=db[_0xff29('0x157')][_0xff29('0x40')];_0xf98b08[_0xff29('0x58')]=_[_0xff29('0x5a')](_0x2ed201);_0xf98b08[_0xff29('0x47')]=_[_0xff29('0x5a')](_0x46acf3[_0xff29('0x47')]);_0xf98b08[_0xff29('0x5c')]=_[_0xff29('0x5d')](_0xf98b08[_0xff29('0x58')],_0xf98b08['query']);_0xf98b08['filters']=_['concat'](_0xf98b08['filters'],[_0xff29('0x158'),_0xff29('0x159'),'$gt',_0xff29('0x15a'),_0xff29('0x15b'),_0xff29('0x15c'),_0xff29('0x15d'),'$eq','$not','$between',_0xff29('0x15e'),_0xff29('0x15f'),_0xff29('0x160'),_0xff29('0x161'),_0xff29('0x162'),_0xff29('0x163'),_0xff29('0x164'),_0xff29('0x161'),_0xff29('0x165'),_0xff29('0x166'),'$contained',_0xff29('0x167')]);_0x40e1db[_0xff29('0x4c')]=_[_0xff29('0x5d')](_0xf98b08[_0xff29('0x58')],qs[_0xff29('0x5e')](_0x46acf3[_0xff29('0x47')][_0xff29('0x5e')]));_0x40e1db[_0xff29('0x4c')]=_0x40e1db[_0xff29('0x4c')][_0xff29('0x50')]?_0x40e1db[_0xff29('0x4c')]:_0xf98b08['model'];if(!_0x46acf3['query']['hasOwnProperty'](_0xff29('0xdf'))){_0x40e1db['limit']=qs[_0xff29('0x24')](_0x46acf3[_0xff29('0x47')]['limit']);_0x40e1db[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x46acf3[_0xff29('0x47')][_0xff29('0x23')]);}_0x40e1db['order']=qs[_0xff29('0xd4')](_0x46acf3[_0xff29('0x47')][_0xff29('0xd4')]);_0x40e1db['where']=qs['filters'](_[_0xff29('0xd5')](_0x46acf3[_0xff29('0x47')],_0xf98b08[_0xff29('0x5c')]));if(_0x46acf3[_0xff29('0x47')]['filter']){_0x40e1db[_0xff29('0x45')]=_['merge'](_0x40e1db[_0xff29('0x45')],{'$or':_[_0xff29('0x35')](_0x40e1db[_0xff29('0x4c')],function(_0x56f2fe){var _0x4be1ed={};_0x4be1ed[_0x56f2fe]={'$like':'%'+_0x46acf3[_0xff29('0x47')][_0xff29('0x33')]+'%'};return _0x4be1ed;})});}_0x40e1db['where']={'$and':[_0x40e1db['where'],{'$or':[{'UserId':_0x46acf3[_0xff29('0x67')]['id']},{'OwnerId':_0x46acf3[_0xff29('0x67')]['id']}]}]};_0x40e1db=_[_0xff29('0xd6')]({},_0x40e1db,_0x46acf3[_0xff29('0x60')]);var _0x5b9c4f={'where':_0x40e1db[_0xff29('0x45')]};return db[_0xff29('0x157')][_0xff29('0x26')](_0x5b9c4f)['then'](function(_0x217aac){_0x1ee492[_0xff29('0x26')]=_0x217aac;if(_0x46acf3[_0xff29('0x47')][_0xff29('0x48')]){_0x40e1db[_0xff29('0x49')]=[{'attributes':['id','firstName',_0xff29('0x168'),_0xff29('0xf3')],'model':db[_0xff29('0xd3')],'as':_0xff29('0x169')},{'attributes':['id','name','dialActive'],'model':db[_0xff29('0xb3')],'as':_0xff29('0xdc')}];}return db['CmHopper']['findAll'](_0x40e1db);})[_0xff29('0x16')](function(_0x341b4d){_0x1ee492[_0xff29('0x4e')]=_0x341b4d;return _0x1ee492;})['then'](respondWithFilteredResult(_0x32c794,_0x40e1db))[_0xff29('0x20')](handleError(_0x32c794,null));};exports['getApiKey']=function(_0x13bc0c,_0x1a2c5e){if(!_[_0xff29('0x6e')](_0x13bc0c[_0xff29('0x2f')]['id'])&&(_0x13bc0c[_0xff29('0x2f')][_0xff29('0x2c')]==_0xff29('0x2d')||_0x13bc0c[_0xff29('0x2f')]['role']=='user')){return db[_0xff29('0x46')][_0xff29('0x9e')]({'where':{'id':_0x13bc0c[_0xff29('0x67')]['id']},'raw':!![]})[_0xff29('0x16')](function(_0x2b8d94){return authService[_0xff29('0x16a')](_0x2b8d94);})[_0xff29('0x16')](function(_0xe8fd18){if(_0xe8fd18){return _0x1a2c5e[_0xff29('0x21')](0xc8)[_0xff29('0x28')]({'api_key':_0xe8fd18[_0xff29('0x16b')]});}else{return _0x1a2c5e[_0xff29('0x21')](0xcc)[_0xff29('0x28')]({'message':_0xff29('0x16c')});}})['catch'](handleError(_0x1a2c5e,0x193));}else{return _0x1a2c5e[_0xff29('0x21')](0x191)[_0xff29('0x28')]({'message':_0xff29('0x16d')});}};exports[_0xff29('0x16e')]=function(_0x11581b,_0x52fe15){if(!_[_0xff29('0x6e')](_0x11581b[_0xff29('0x2f')]['id'])&&(_0x11581b[_0xff29('0x2f')][_0xff29('0x2c')]=='admin'||_0x11581b['user']['role']==_0xff29('0x2f'))){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x11581b[_0xff29('0x67')]['id']}})[_0xff29('0x16')](function(_0x31143b){return authService[_0xff29('0x16f')](_0x31143b);})[_0xff29('0x16')](function(_0x1ff78d){return db[_0xff29('0x46')][_0xff29('0x29')]({'apiKeyIat':_0x1ff78d[_0xff29('0x170')],'apiKeyNonce':_0x1ff78d[_0xff29('0x171')]},{'where':{'id':_0x11581b[_0xff29('0x67')]['id']}})['then'](function(){return _0x52fe15['status'](0xc8)[_0xff29('0x28')]({'api_key':_0x1ff78d['token']});});})[_0xff29('0x20')](handleError(_0x52fe15,0x193));}else{return _0x52fe15['status'](0x191)[_0xff29('0x28')]({'message':_0xff29('0x16d')});}};exports[_0xff29('0x172')]=function(_0x1ace30,_0x5bde0c){if(!_[_0xff29('0x6e')](_0x1ace30[_0xff29('0x2f')]['id'])&&(_0x1ace30['user'][_0xff29('0x2c')]==_0xff29('0x2d')||_0x1ace30[_0xff29('0x2f')]['role']=='user')){return db[_0xff29('0x46')][_0xff29('0x38')]({'where':{'id':_0x1ace30[_0xff29('0x67')]['id']}})[_0xff29('0x16')](handleEntityNotFound(_0x5bde0c,null))[_0xff29('0x16')](function(_0x14dc50){if(_0x14dc50&&_0x14dc50[_0xff29('0x173')]&&_0x14dc50[_0xff29('0x174')])return _0x14dc50;else throw{'message':_0xff29('0x175')};})[_0xff29('0x16')](function(){return db[_0xff29('0x46')][_0xff29('0x29')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x1ace30[_0xff29('0x67')]['id']}});})[_0xff29('0x16')](respondWithStatusCode(_0x5bde0c,0xc8))[_0xff29('0x20')](handleError(_0x5bde0c,0x193));}else{return _0x5bde0c[_0xff29('0x21')](0x191)[_0xff29('0x28')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports['whoami']=function(_0x49843a,_0x5384e6){var _0x3b7efb=_0x49843a[_0xff29('0x2f')]['get']({'plain':!![]});if(!_0x3b7efb){return _0x5384e6[_0xff29('0x21')](0x191)[_0xff29('0x3e')](_0xff29('0x176'));}else{Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(_0x49843a[_0xff29('0x47')]['userSetting']!==_0xff29('0x4b'))return;return _0x49843a[_0xff29('0x2f')][_0xff29('0x177')]();})['then'](function(_0x17622e){if(!_0x17622e)return;return _0x17622e[_0xff29('0x2b')]({'plain':!![]});})[_0xff29('0x16')](function(_0x5921b4){_0x3b7efb[_0xff29('0x4a')]=_0x5921b4;return _0x5384e6[_0xff29('0x21')](0xc8)['json'](_0x3b7efb);});}};exports[_0xff29('0x178')]=function(_0x40f685,_0x59f3be){var _0x24d24d={'offset':0x0},_0x5e4425={'count':0x0,'rows':[]};Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){if(!_0x40f685[_0xff29('0x47')][_0xff29('0x33')]&&!_0x40f685['query'][_0xff29('0x179')]&&!_0x40f685['query'][_0xff29('0x17a')])return[];return Promise[_0xff29('0x108')]()[_0xff29('0x16')](function(){var _0x2d5584=[];if(!_[_0xff29('0x94')](_0x40f685[_0xff29('0x47')]['teams'])){_0x2d5584[_0xff29('0x51')](db[_0xff29('0x11a')][_0xff29('0x4d')]({'attributes':['id','name'],'where':{'id':_0x40f685['query'][_0xff29('0x179')]}}));}if(!_[_0xff29('0x94')](_0x40f685[_0xff29('0x47')][_0xff29('0x17a')])){_0x2d5584['push'](db[_0xff29('0xb3')][_0xff29('0x4d')]({'attributes':['id',_0xff29('0x39')],'type':_0xff29('0x17b'),'where':{'id':_0x40f685[_0xff29('0x47')]['queues']}}));}return Promise[_0xff29('0x56')](_0x2d5584);})[_0xff29('0x16')](function(_0x168433){var _0x140c0b=_[_0xff29('0x17c')](_0x168433)['map'](function(_0x5f0022){return _0x5f0022[_0xff29('0x17d')]({'attributes':['id',_0xff29('0x39'),'internal',_0xff29('0xa5')],'raw':!![]});});return Promise[_0xff29('0x56')](_0x140c0b);})[_0xff29('0x16')](function(_0x4f6bbd){var _0x4028e8=_['flatten'](_0x4f6bbd);if(!_0x40f685[_0xff29('0x47')]['filter'])return _0x4028e8;if(_[_0xff29('0x94')](_0x4028e8)){return db['User'][_0xff29('0x4d')]({'attributes':['id','name',_0xff29('0x6d'),'online'],'where':{'role':_0xff29('0x31'),'$or':[db[_0xff29('0x70')][_0xff29('0x45')](db['sequelize']['fn'](_0xff29('0x17e'),db['sequelize'][_0xff29('0x17f')]('name')),{'$like':'%'+_0x40f685[_0xff29('0x47')]['filter'][_0xff29('0xad')]()+'%'}),{'internal':{'$like':'%'+_0x40f685[_0xff29('0x47')]['filter']+'%'}}]},'raw':!![]});}else{return _(_0x4028e8)[_0xff29('0x17c')]()[_0xff29('0x33')](function(_0x967b2b){return _0x967b2b[_0xff29('0x39')]['toLowerCase']()['includes'](_0x40f685[_0xff29('0x47')][_0xff29('0x33')][_0xff29('0xad')]())||_0x967b2b[_0xff29('0x6d')][_0xff29('0x180')]()[_0xff29('0x37')](_0x40f685[_0xff29('0x47')][_0xff29('0x33')]);})[_0xff29('0x36')]();}})[_0xff29('0x16')](function(_0x4e0f52){var _0x5bbee1=_0xff29('0x39');var _0x30a33d=_0xff29('0x181');if(_0x40f685[_0xff29('0x47')]['sort']){_0x30a33d=_0x40f685[_0xff29('0x47')]['sort'][0x0]==='-'?_0xff29('0x182'):_0xff29('0x181');_0x5bbee1=_0x30a33d==='asc'?_0x40f685[_0xff29('0x47')][_0xff29('0xd4')]:_0x40f685[_0xff29('0x47')][_0xff29('0xd4')][_0xff29('0x183')](0x1);}return _(_0x4e0f52)['uniqBy']('id')[_0xff29('0x184')]([function(_0x1c1308){return _0x5bbee1===_0xff29('0x39')?_0x1c1308[_0x5bbee1][_0xff29('0xad')]():_0x1c1308[_0x5bbee1];}],[_0x30a33d])[_0xff29('0x35')](function(_0x395989){return _[_0xff29('0xd5')](_0x395989,['id',_0xff29('0x39'),'internal','online']);})[_0xff29('0x36')]();})['then'](function(_0x2dfde8){return amiClient[_0xff29('0x15')](_0xff29('0x30'),_0x40f685)['then'](function(_0x57a187){if(_0x57a187['error'])throw new Error(_0xff29('0x185'));var _0x4f592d=_0x57a187[_0xff29('0x1f')];var _0x5850bc=jayson[_0xff29('0x14')][_0xff29('0x186')]({'port':0x232c});return _0x5850bc[_0xff29('0x15')](_0xff29('0x30'),_0x40f685)[_0xff29('0x16')](function(_0x41b96e){if(_0x41b96e[_0xff29('0x1c')])throw new Error(_0xff29('0x187'));var _0xeb114e=_0x41b96e['result'];return _[_0xff29('0xd6')]({},_0xeb114e,_0x4f592d);});})['then'](function(_0x34475d){return _[_0xff29('0x35')](_0x2dfde8,function(_0x27bcf8){var _0x3a022f=_[_0xff29('0x38')](_0x34475d['rows'],['id',_0x27bcf8['id']]);if(!_0x3a022f||!_0x27bcf8[_0xff29('0xa5')]){_0x27bcf8[_0xff29('0x21')]=_0xff29('0x188');}else if(_0x3a022f[_0xff29('0xa7')]){_0x27bcf8[_0xff29('0x21')]=_0xff29('0x10a');}else{_0x27bcf8[_0xff29('0x21')]=_[_0xff29('0x37')]([_0xff29('0x189'),'unknown',_0xff29('0x18a'),_0xff29('0x18b'),null,undefined],_0x3a022f[_0xff29('0x18c')])?'online':'busy';}return _0x27bcf8;});});});})[_0xff29('0x16')](function(_0x4fbd22){if(!_0x40f685[_0xff29('0x47')][_0xff29('0xd7')](_0xff29('0xdf'))){_0x24d24d[_0xff29('0x24')]=qs['limit'](_0x40f685['query']['limit']||0xa);_0x24d24d[_0xff29('0x23')]=qs[_0xff29('0x23')](_0x40f685[_0xff29('0x47')][_0xff29('0x23')]);}_0x5e4425[_0xff29('0x26')]=_0x4fbd22[_0xff29('0x50')];_0x5e4425[_0xff29('0x4e')]=_0x24d24d[_0xff29('0x24')]?_0x4fbd22['slice'](_0x24d24d['offset'],_0x24d24d[_0xff29('0x23')]+_0x24d24d[_0xff29('0x24')]):_0x4fbd22;return _0x5e4425;})[_0xff29('0x16')](respondWithFilteredResult(_0x59f3be,_0x24d24d))['catch'](handleError(_0x59f3be,null));};function get_open_tabs(_0x139ef1,_0x3b91ec){var _0x455241=_0x139ef1['charAt'](0x0)[_0xff29('0x18d')]()+_0x139ef1[_0xff29('0x18e')](0x1);var _0x518c45={'type':db[_0xff29('0x98')][_0xff29('0x72')][_0xff29('0x73')],'raw':!![]};return new Promise(function(_0x2d848e,_0x5c6023){var _0x7066a7=squel[_0xff29('0x18f')]()['field']('ui.'+_0x455241+_0xff29('0x190'),'id')[_0xff29('0x191')](_0xff29('0x192'))['from'](_0xff29('0x193')+_0x139ef1+_0xff29('0x194'),'ui')['where']('ui.UserId\x20=\x20?',_0x3b91ec['id']);return db['sequelize']['query'](_0x7066a7['toString'](),_0x518c45)[_0xff29('0x16')](function(_0x3d7956){_0x3b91ec[_0x455241+_0xff29('0x195')]=_0x3d7956;_0x2d848e(_0x3d7956);})[_0xff29('0x20')](function(_0x36a3ab){_0x5c6023(_0x36a3ab);});});}
\ No newline at end of file
index 37c3d4f..166874d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2cc=['emit','hasOwnProperty','exports','events','../../mysqldb','User','setMaxListeners','remove'];(function(_0x45fc6a,_0x166adb){var _0x14bcfd=function(_0x3ba718){while(--_0x3ba718){_0x45fc6a['push'](_0x45fc6a['shift']());}};_0x14bcfd(++_0x166adb);}(_0xa2cc,0x73));var _0xca2c=function(_0x1ccdc1,_0x4d6df8){_0x1ccdc1=_0x1ccdc1-0x0;var _0x499d4a=_0xa2cc[_0x1ccdc1];return _0x499d4a;};'use strict';var EventEmitter=require(_0xca2c('0x0'));var User=require(_0xca2c('0x1'))['db'][_0xca2c('0x2')];var UserEvents=new EventEmitter();UserEvents[_0xca2c('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xca2c('0x4')};function emitEvent(_0x4746be){return function(_0x1926f1,_0x35a0bd,_0x1099ae){UserEvents[_0xca2c('0x5')](_0x4746be+':'+_0x1926f1['id'],_0x1926f1);UserEvents['emit'](_0x4746be,_0x1926f1);_0x1099ae(null);};}for(var e in events){if(events[_0xca2c('0x6')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0xca2c('0x7')]=UserEvents;
\ No newline at end of file
+var _0xf597=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','remove'];(function(_0xde214d,_0x43f6f9){var _0x2a7d36=function(_0x33e0ae){while(--_0x33e0ae){_0xde214d['push'](_0xde214d['shift']());}};_0x2a7d36(++_0x43f6f9);}(_0xf597,0x11c));var _0x7f59=function(_0x16bb33,_0x45c563){_0x16bb33=_0x16bb33-0x0;var _0x15b66a=_0xf597[_0x16bb33];return _0x15b66a;};'use strict';var EventEmitter=require(_0x7f59('0x0'));var User=require(_0x7f59('0x1'))['db']['User'];var UserEvents=new EventEmitter();UserEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7f59('0x2')};function emitEvent(_0x5b84b0){return function(_0x4efe3a,_0x5f564f,_0x3ed741){UserEvents['emit'](_0x5b84b0+':'+_0x4efe3a['id'],_0x4efe3a);UserEvents[_0x7f59('0x3')](_0x5b84b0,_0x4efe3a);_0x3ed741(null);};}for(var e in events){if(events[_0x7f59('0x4')](e)){var event=events[e];User[_0x7f59('0x5')](e,emitEvent(event));}}module[_0x7f59('0x6')]=UserEvents;
\ No newline at end of file
index 3e00313..6562568 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe77f=['Hangup','priority','defaults','VoiceChanSpy','findAll','then','catch','exports','models','define','User','utf8','utf8_bin','userProfileId','undefined','UserProfile','find','privacyEnabled','updateMd5Password','changed','updatePassword','internal','concat','userSetting','createUserSetting','bulkCreate','VoiceExtension','resolve','context','destroy','function','randomBytes','base64','salt','from','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','Invalid\x20password','encryptPassword','md5secret',':asterisk:','client','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)','manual','voice','Unable\x20to\x20unpause\x20agent\x20%s:$s','result','message','UserVoiceQueueRt','findOne','channel','isArray','update','all','voicePause','mailPause','chatPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','getChannels','forEach','Status','setDataValue','bluebird','crypto','md5','moment','jayson/promise','./user.attributes','length','from-sip','system','%s%s','prefix','push','merge','format','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','Authenticate','password','ChanSpy','SIP/%s,%s','name','options','join','wav','gsm','Set','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxXU(xcally-mixmonitor-context)'];(function(_0x24579a,_0x59612d){var _0x59dff7=function(_0x47c50f){while(--_0x47c50f){_0x24579a['push'](_0x24579a['shift']());}};_0x59dff7(++_0x59612d);}(_0xe77f,0xba));var _0xfe77=function(_0x131e4f,_0xf72a3d){_0x131e4f=_0x131e4f-0x0;var _0x45d7f1=_0xe77f[_0x131e4f];return _0x45d7f1;};'use strict';var BPromise=require(_0xfe77('0x0'));var crypto=require(_0xfe77('0x1'));var util=require('util');var md5=require(_0xfe77('0x2'));var moment=require(_0xfe77('0x3'));var _=require('lodash');var jayson=require(_0xfe77('0x4'));var attributes=require(_0xfe77('0x5'));var authTypes=['google'];var validatePresenceOf=function(_0x150fc9){return _0x150fc9&&_0x150fc9[_0xfe77('0x6')];};var getChanSpyApplications=function(_0xaad04a,_0x1ce970,_0x130b85){var _0x51d137={'context':_0xaad04a['context']||_0xfe77('0x7'),'type':_0xfe77('0x8'),'isApp':![],'UserId':_0xaad04a['id']};var _0x1bb5e0=[];for(var _0x1a2809=0x0,_0x394bc0=0x1;_0x1a2809<_0x130b85[_0xfe77('0x6')];_0x1a2809++,_0x394bc0=0x1){var _0x5ba7f2={'exten':util['format'](_0xfe77('0x9'),_0x130b85[_0x1a2809][_0xfe77('0xa')],_0x1ce970),'ChanSpyId':_0x130b85[_0x1a2809]['id']};_0x1bb5e0[_0xfe77('0xb')](_[_0xfe77('0xc')]({'app':'Set','appdata':util[_0xfe77('0xd')](_0xfe77('0xe'),_0xfe77('0xf')),'priority':_0x394bc0++},_0x51d137,_0x5ba7f2));if(_0x130b85[_0x1a2809][_0xfe77('0x10')]){_0x1bb5e0['push'](_[_0xfe77('0xc')]({'app':_0xfe77('0x11'),'appdata':util[_0xfe77('0xd')]('${UNIQUEID}.%s,a',_0x130b85[_0x1a2809][_0xfe77('0x12')]),'priority':_0x394bc0++},_0x51d137,_0x5ba7f2));}if(_0x130b85[_0x1a2809][_0xfe77('0x13')]){_0x1bb5e0['push'](_[_0xfe77('0xc')]({'app':_0xfe77('0x14'),'appdata':_0x130b85[_0x1a2809][_0xfe77('0x15')],'priority':_0x394bc0++},_0x51d137,_0x5ba7f2));}_0x1bb5e0[_0xfe77('0xb')](_[_0xfe77('0xc')]({'app':_0xfe77('0x16'),'appdata':util[_0xfe77('0xd')](_0xfe77('0x17'),_0xaad04a[_0xfe77('0x18')],_0x130b85[_0x1a2809][_0xfe77('0x19')]?_0x130b85[_0x1a2809][_0xfe77('0x19')][_0xfe77('0x1a')](''):''),'priority':_0x394bc0++},_0x51d137,_0x5ba7f2));if(_0x130b85[_0x1a2809][_0xfe77('0x10')]){_0x1bb5e0['push'](_[_0xfe77('0xc')]({'app':'StopMixMonitor','priority':_0x394bc0++},_0x51d137,_0x5ba7f2));}}return _0x1bb5e0;};var getUserApplications=function(_0x465e0d,_0x1916c1){var _0x53c6de=[_0xfe77('0x1b'),'WAV',_0xfe77('0x1c')];var _0x4b628d={'context':_0x465e0d['context']||_0xfe77('0x7'),'exten':_0x1916c1,'type':'system','isApp':![],'UserId':_0x465e0d['id']};var _0x3ddb1c=[{'app':_0xfe77('0x1d'),'appdata':_0xfe77('0x1e')}];if(_0x465e0d[_0xfe77('0x1f')]&&_[_0xfe77('0x20')](_0x53c6de,_0x465e0d[_0xfe77('0x1f')])){_0x3ddb1c[_0xfe77('0xb')]({'app':_0xfe77('0x1d'),'appdata':_0xfe77('0x21')});_0x3ddb1c[_0xfe77('0xb')]({'app':_0xfe77('0x1d'),'appdata':util[_0xfe77('0xd')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x465e0d['extensionMonitor'])});_0x3ddb1c['push']({'app':_0xfe77('0x22'),'appdata':util[_0xfe77('0xd')](_0xfe77('0x23'),_0x465e0d[_0xfe77('0x18')])});}else{_0x3ddb1c['push']({'app':_0xfe77('0x22'),'appdata':util[_0xfe77('0xd')]('SIP/%s,,tTxX',_0x465e0d[_0xfe77('0x18')])});}_0x3ddb1c[_0xfe77('0xb')]({'app':_0xfe77('0x24')});for(var _0x69a279=0x0;_0x69a279<_0x3ddb1c[_0xfe77('0x6')];_0x69a279++){_0x3ddb1c[_0x69a279][_0xfe77('0x25')]=_0x69a279+0x1;_0x3ddb1c[_0x69a279]=_[_0xfe77('0x26')](_0x3ddb1c[_0x69a279],_0x4b628d);}return _0x3ddb1c;};var getChanSpyPromise=function(_0x10f4d6,_0x4565f9){return new BPromise(function(_0x52cee8,_0x243171){return _0x10f4d6[_0xfe77('0x27')][_0xfe77('0x28')]()[_0xfe77('0x29')](function(_0x102248){if(_0x102248){var _0x16c2e7=getChanSpyApplications(_0x4565f9,_0x4565f9['internal'],_0x102248);if(_0x4565f9['internal']!=_0x4565f9[_0xfe77('0x18')]){_0x16c2e7=_0x16c2e7['concat'](getChanSpyApplications(_0x4565f9,_0x4565f9[_0xfe77('0x18')],_0x102248));}return _0x52cee8(_0x16c2e7);}return _0x52cee8([]);})[_0xfe77('0x2a')](function(_0x74188a){_0x243171(_0x74188a);});});};module[_0xfe77('0x2b')]=function(_0x4a4b33){var _0x2a5a71=_0x4a4b33[_0xfe77('0x2c')];return _0x4a4b33[_0xfe77('0x2d')](_0xfe77('0x2e'),attributes,{'tableName':'users','charset':_0xfe77('0x2f'),'collate':_0xfe77('0x30'),'hooks':{'beforeCreate':function(_0x2dcc18,_0x282f9f,_0x45c3ce){var _0x4ad2aa=typeof _0x2dcc18[_0xfe77('0x31')]===_0xfe77('0x32')?BPromise['resolve'](null):_0x2a5a71[_0xfe77('0x33')][_0xfe77('0x34')]({'where':{'id':_0x2dcc18['userProfileId']}});_0x4ad2aa[_0xfe77('0x29')](function(_0x2a24dc){if(_0x2a24dc){_0x2dcc18[_0xfe77('0x35')]=_0x2a24dc[_0xfe77('0x35')];}})[_0xfe77('0x29')](function(){_0x2dcc18[_0xfe77('0x36')]();_0x2dcc18['updatePassword'](_0x45c3ce);})[_0xfe77('0x2a')](function(_0x1b65ce){_0x45c3ce(_0x1b65ce);});},'beforeUpdate':function(_0xbaa9e6,_0x27aa83,_0x8df2ca){Promise['resolve']()[_0xfe77('0x29')](function(){if(_0xbaa9e6[_0xfe77('0x37')](_0xfe77('0x31'))===![])return;return _0x2a5a71[_0xfe77('0x33')][_0xfe77('0x34')]({'where':{'id':_0xbaa9e6[_0xfe77('0x31')]}})['then'](function(_0x3e0121){if(_0x3e0121)_0xbaa9e6[_0xfe77('0x35')]=_0x3e0121[_0xfe77('0x35')];return;});})[_0xfe77('0x29')](function(){if(_0xbaa9e6[_0xfe77('0x37')]('password')){_0xbaa9e6[_0xfe77('0x36')]();return _0xbaa9e6[_0xfe77('0x38')](_0x8df2ca);}_0x8df2ca();})[_0xfe77('0x2a')](function(_0x46f1db){_0x8df2ca(_0x46f1db);});},'afterCreate':function(_0x374204,_0x56aa33,_0x515e38){var _0x497b4e=getUserApplications(_0x374204,_0x374204[_0xfe77('0x39')]);if(_0x374204['internal']!=_0x374204[_0xfe77('0x18')]){_0x497b4e=_0x497b4e[_0xfe77('0x3a')](getUserApplications(_0x374204,_0x374204['name']));}return Promise['resolve']()[_0xfe77('0x29')](function(){if(!_0x374204[_0xfe77('0x3b')]){return _0x374204[_0xfe77('0x3c')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x2a5a71['VoiceExtension'][_0xfe77('0x3d')](_0x497b4e);})[_0xfe77('0x29')](function(){if(_0x374204[_0xfe77('0xf')]){return getChanSpyPromise(_0x2a5a71,_0x374204);}})['then'](function(_0x590356){if(_0x590356&&_0x590356[_0xfe77('0x6')]){return _0x2a5a71[_0xfe77('0x3e')]['bulkCreate'](_0x590356);}})[_0xfe77('0x29')](function(){_0x515e38();})[_0xfe77('0x2a')](function(_0x4d9222){_0x515e38(_0x4d9222);});},'afterUpdate':function(_0x592b1a,_0x1a512a,_0x39937b){return BPromise[_0xfe77('0x3f')]()[_0xfe77('0x29')](function(){if(_0x592b1a['changed'](_0xfe77('0xf'))||_0x592b1a[_0xfe77('0x37')](_0xfe77('0x40'))){return _0x2a5a71[_0xfe77('0x3e')][_0xfe77('0x41')]({'where':{'UserId':_0x592b1a['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xfe77('0x29')](function(){if(_0x592b1a['chanspy']){return getChanSpyPromise(_0x2a5a71,_0x592b1a)['then'](function(_0x4373b4){if(_0x4373b4&&_0x4373b4['length']){return _0x2a5a71['VoiceExtension'][_0xfe77('0x3d')](_0x4373b4);}});}});}})[_0xfe77('0x29')](function(){if(_0x592b1a[_0xfe77('0x37')](_0xfe77('0x1f'))||_0x592b1a[_0xfe77('0x37')](_0xfe77('0x40'))){return _0x2a5a71[_0xfe77('0x3e')][_0xfe77('0x41')]({'where':{'UserId':_0x592b1a['id'],'type':_0xfe77('0x8'),'ChanSpyId':null}})[_0xfe77('0x29')](function(){var _0xa14682=getUserApplications(_0x592b1a,_0x592b1a['internal']);if(_0x592b1a[_0xfe77('0x39')]!=_0x592b1a[_0xfe77('0x18')]){_0xa14682=_0xa14682[_0xfe77('0x3a')](getUserApplications(_0x592b1a,_0x592b1a[_0xfe77('0x18')]));}return _0x2a5a71['VoiceExtension'][_0xfe77('0x3d')](_0xa14682);});}})['then'](function(){_0x39937b();})[_0xfe77('0x2a')](function(_0x5dbed9){_0x39937b(_0x5dbed9);});},'afterDestroy':function(_0x45e626){return _0x2a5a71[_0xfe77('0x3e')][_0xfe77('0x41')]({'where':{'UserId':_0x45e626['id'],'type':_0xfe77('0x8')}});}},'instanceMethods':{'authenticate':function(_0x52f673,_0x1c0497){if(!_0x1c0497){return this[_0xfe77('0x15')]===this['encryptPassword'](_0x52f673);}var _0x5d12f0=this;this['encryptPassword'](_0x52f673,function(_0x5c02bc,_0x5026f8){if(_0x5c02bc){_0x1c0497(_0x5c02bc);}if(_0x5d12f0[_0xfe77('0x15')]===_0x5026f8){_0x1c0497(null,!![]);}else{_0x1c0497(null,![]);}});},'makeSalt':function(_0x1a9635,_0x563c65){var _0x584a3b=0x10;if(typeof arguments[0x0]==='function'){_0x563c65=arguments[0x0];_0x1a9635=_0x584a3b;}else if(typeof arguments[0x1]===_0xfe77('0x42')){_0x563c65=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x1a9635){_0x1a9635=_0x584a3b;}return crypto[_0xfe77('0x43')](_0x1a9635,function(_0x3b06d9,_0x4351aa){if(_0x3b06d9){_0x563c65(_0x3b06d9);}return _0x563c65(null,_0x4351aa['toString'](_0xfe77('0x44')));});},'encryptPassword':function(_0xb3b8ca,_0x794340){if(!_0xb3b8ca||!this[_0xfe77('0x45')]){return _0x794340?_0x794340(null):null;}var _0x2a851f=0x2710;var _0x318513=0x40;var _0x2999bc=Buffer[_0xfe77('0x46')](this[_0xfe77('0x45')],'base64');if(!_0x794340){return crypto[_0xfe77('0x47')](_0xb3b8ca,_0x2999bc,_0x2a851f,_0x318513,_0xfe77('0x48'))[_0xfe77('0x49')]('base64');}return crypto[_0xfe77('0x4a')](_0xb3b8ca,_0x2999bc,_0x2a851f,_0x318513,_0xfe77('0x48'),function(_0x5cec9d,_0x24365e){if(_0x5cec9d){_0x794340(_0x5cec9d);}return _0x794340(null,_0x24365e['toString'](_0xfe77('0x44')));});},'updatePassword':function(_0x3c7a8a){if(!this[_0xfe77('0x15')]){return _0x3c7a8a(null);}if(!validatePresenceOf(this['password'])&&authTypes[_0xfe77('0x4b')](this['provider'])===-0x1){_0x3c7a8a(new Error(_0xfe77('0x4c')));}var _0x4bbf5f=this;this['makeSalt'](function(_0x283a21,_0x297715){if(_0x283a21){return _0x3c7a8a(_0x283a21);}_0x4bbf5f['salt']=_0x297715;_0x4bbf5f[_0xfe77('0x4d')](_0x4bbf5f[_0xfe77('0x15')],function(_0x40720e,_0x5e893c){if(_0x40720e){_0x3c7a8a(_0x40720e);}_0x4bbf5f[_0xfe77('0x15')]=_0x5e893c;_0x3c7a8a(null);});});},'updateMd5Password':function(){this[_0xfe77('0x4e')]=md5(this[_0xfe77('0x18')]+_0xfe77('0x4f')+this['password']);return this['md5secret'];},'getRealtimeData':function(){var _0x222349={'id':this['id']};var _0x3ec881=jayson[_0xfe77('0x50')][_0xfe77('0x51')]({'port':0x232a});var _0x5560bd=jayson[_0xfe77('0x50')]['http']({'port':0x232c});var _0x1cccdd={};var _0x119938={};return _0x3ec881[_0xfe77('0x52')](_0xfe77('0x53'),_0x222349)[_0xfe77('0x29')](function(_0x3e1c17){if(_0x3e1c17[_0xfe77('0x54')]){throw new Error(_0xfe77('0x55'));}_0x1cccdd=_0x3e1c17['result'];return _0x5560bd[_0xfe77('0x52')](_0xfe77('0x53'),_0x222349);})[_0xfe77('0x29')](function(_0x939ddb){if(_0x939ddb[_0xfe77('0x54')]){throw new Error(_0xfe77('0x56'));}_0x119938=_0x939ddb['result'];var _0x52e460=_['merge']({},_0x1cccdd,_0x119938);return _0x52e460;})[_0xfe77('0x2a')](function(_0x33d954){throw _0x33d954;});},'unpause':function(_0x294e05,_0x313f33=_0xfe77('0x57')){var _0xf35b0a=this;var _0x3e3a7c={};return Promise[_0xfe77('0x3f')]()['then'](function(){if(!_0x294e05||_0x294e05===_0xfe77('0x58')&&_0x313f33===_0xfe77('0x57')){var _0x41aad0=jayson[_0xfe77('0x50')][_0xfe77('0x51')]({'port':0x232a});return _0x41aad0[_0xfe77('0x52')]('QueuePause',{'id':_0xf35b0a['id'],'name':_0xf35b0a[_0xfe77('0x18')],'pause':![]})[_0xfe77('0x29')](function(_0x421186){if(_0x421186[_0xfe77('0x54')]){throw new Error(util['format'](_0xfe77('0x59'),_0xf35b0a['id'],_0xf35b0a[_0xfe77('0x18')]));}return _0x421186[_0xfe77('0x5a')][_0xfe77('0x5b')];});}})[_0xfe77('0x29')](function(){if(!_0x294e05||_0x294e05==='voice'){return _0x2a5a71[_0xfe77('0x5c')]['update']({'paused':0x0},{'where':{'UserId':_0xf35b0a['id']},'individualHooks':!![]});}})[_0xfe77('0x29')](function(){var _0x17fb2f=!_0x294e05?_0xfe77('0x28'):_0xfe77('0x5d');var _0x211c7e={'membername':_0xf35b0a['name'],'type':'PAUSE','exitAt':null};if(_0x294e05){_0x211c7e[_0xfe77('0x5e')]=_0x294e05;}return _0x2a5a71['MemberReport'][_0x17fb2f]({'where':_0x211c7e});})[_0xfe77('0x29')](function(_0x259e2d){if(_0x259e2d){var _0x4f50e4=Array[_0xfe77('0x5f')](_0x259e2d)?_0x259e2d:[_0x259e2d];var _0x3fd24d=_0x4f50e4['map'](function(_0x141302){return _0x141302[_0xfe77('0x60')]({'exitAt':moment()[_0xfe77('0xd')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x313f33});});return Promise[_0xfe77('0x61')](_0x3fd24d);}})['then'](function(){if(!_0x294e05){_0x3e3a7c[_0xfe77('0x62')]=![];_0x3e3a7c[_0xfe77('0x63')]=![];_0x3e3a7c[_0xfe77('0x64')]=![];_0x3e3a7c['faxPause']=![];_0x3e3a7c[_0xfe77('0x65')]=![];_0x3e3a7c[_0xfe77('0x66')]=![];_0x3e3a7c[_0xfe77('0x67')]=![];}else{_0x3e3a7c[_0x294e05+_0xfe77('0x68')]=![];}return _0xf35b0a[_0xfe77('0x69')]();})[_0xfe77('0x29')](function(_0x2a98ca){var _0x88e73a=require(_0xfe77('0x6a'));var _0x69141e=_0x88e73a[_0xfe77('0x6b')]();_0x69141e[_0xfe77('0x6c')](function(_0x1ca235){var _0x205f69=_0x1ca235+_0xfe77('0x6d');_0xf35b0a[_0xfe77('0x6e')]([_0x205f69],_0x2a98ca[_0x205f69]);});return _0xf35b0a[_0xfe77('0x60')](_0x3e3a7c);})[_0xfe77('0x2a')](function(_0x417cdf){throw _0x417cdf;});}}});};
\ No newline at end of file
+var _0x383d=['QueuePause','Unable\x20to\x20unpause\x20agent\x20%s:$s','message','UserVoiceQueueRt','update','findOne','PAUSE','channel','MemberReport','isArray','map','chatPause','faxPause','smsPause','whatsappPause','openchannelPause','Pause','getRealtimeData','../../config/utils','forEach','Status','setDataValue','util','md5','moment','jayson/promise','./user.attributes','google','length','context','from-sip','system','format','%s%s','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','Authenticate','password','ChanSpy','options','join','StopMixMonitor','wav','WAV','gsm','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','Dial','SIP/%s,,tTxX','Hangup','priority','defaults','VoiceChanSpy','findAll','then','internal','name','concat','catch','exports','define','User','users','utf8','utf8_bin','undefined','UserProfile','userProfileId','privacyEnabled','updateMd5Password','updatePassword','resolve','find','changed','userSetting','createUserSetting','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','toString','base64','from','salt','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt',':asterisk:','client','http','request','Agents','error','Unable\x20to\x20retrieve\x20RPC\x20agent\x20(AMI)','result','manual','voice'];(function(_0x25b0c0,_0x177e85){var _0x5e3a8c=function(_0x20fe14){while(--_0x20fe14){_0x25b0c0['push'](_0x25b0c0['shift']());}};_0x5e3a8c(++_0x177e85);}(_0x383d,0x86));var _0xd383=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x383d[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require('bluebird');var crypto=require('crypto');var util=require(_0xd383('0x0'));var md5=require(_0xd383('0x1'));var moment=require(_0xd383('0x2'));var _=require('lodash');var jayson=require(_0xd383('0x3'));var attributes=require(_0xd383('0x4'));var authTypes=[_0xd383('0x5')];var validatePresenceOf=function(_0x3439dd){return _0x3439dd&&_0x3439dd[_0xd383('0x6')];};var getChanSpyApplications=function(_0x43ab08,_0x5a0b1d,_0xc64e9b){var _0x30ba82={'context':_0x43ab08[_0xd383('0x7')]||_0xd383('0x8'),'type':_0xd383('0x9'),'isApp':![],'UserId':_0x43ab08['id']};var _0x5d4e0f=[];for(var _0x55478b=0x0,_0x19c4aa=0x1;_0x55478b<_0xc64e9b[_0xd383('0x6')];_0x55478b++,_0x19c4aa=0x1){var _0x59baad={'exten':util[_0xd383('0xa')](_0xd383('0xb'),_0xc64e9b[_0x55478b][_0xd383('0xc')],_0x5a0b1d),'ChanSpyId':_0xc64e9b[_0x55478b]['id']};_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0xf'),'appdata':util['format'](_0xd383('0x10'),_0xd383('0x11')),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));if(_0xc64e9b[_0x55478b][_0xd383('0x12')]){_0x5d4e0f[_0xd383('0xd')](_['merge']({'app':_0xd383('0x13'),'appdata':util[_0xd383('0xa')](_0xd383('0x14'),_0xc64e9b[_0x55478b][_0xd383('0x15')]),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}if(_0xc64e9b[_0x55478b]['auth']){_0x5d4e0f[_0xd383('0xd')](_['merge']({'app':_0xd383('0x16'),'appdata':_0xc64e9b[_0x55478b][_0xd383('0x17')],'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0x18'),'appdata':util[_0xd383('0xa')]('SIP/%s,%s',_0x43ab08['name'],_0xc64e9b[_0x55478b][_0xd383('0x19')]?_0xc64e9b[_0x55478b][_0xd383('0x19')][_0xd383('0x1a')](''):''),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));if(_0xc64e9b[_0x55478b][_0xd383('0x12')]){_0x5d4e0f[_0xd383('0xd')](_[_0xd383('0xe')]({'app':_0xd383('0x1b'),'priority':_0x19c4aa++},_0x30ba82,_0x59baad));}}return _0x5d4e0f;};var getUserApplications=function(_0x808fe7,_0x59e8d1){var _0x42a290=[_0xd383('0x1c'),_0xd383('0x1d'),_0xd383('0x1e')];var _0x213f72={'context':_0x808fe7[_0xd383('0x7')]||'from-sip','exten':_0x59e8d1,'type':_0xd383('0x9'),'isApp':![],'UserId':_0x808fe7['id']};var _0x514261=[{'app':_0xd383('0xf'),'appdata':'CDR(type)=internal'}];if(_0x808fe7[_0xd383('0x1f')]&&_[_0xd383('0x20')](_0x42a290,_0x808fe7['extensionMonitor'])){_0x514261[_0xd383('0xd')]({'app':_0xd383('0xf'),'appdata':_0xd383('0x21')});_0x514261['push']({'app':'Set','appdata':util[_0xd383('0xa')]('_XCALLY_MIXMONITOR_FORMAT=%s',_0x808fe7['extensionMonitor'])});_0x514261[_0xd383('0xd')]({'app':'Dial','appdata':util[_0xd383('0xa')]('SIP/%s,,tTxXU(xcally-mixmonitor-context)',_0x808fe7['name'])});}else{_0x514261['push']({'app':_0xd383('0x22'),'appdata':util[_0xd383('0xa')](_0xd383('0x23'),_0x808fe7['name'])});}_0x514261[_0xd383('0xd')]({'app':_0xd383('0x24')});for(var _0x252f79=0x0;_0x252f79<_0x514261[_0xd383('0x6')];_0x252f79++){_0x514261[_0x252f79][_0xd383('0x25')]=_0x252f79+0x1;_0x514261[_0x252f79]=_[_0xd383('0x26')](_0x514261[_0x252f79],_0x213f72);}return _0x514261;};var getChanSpyPromise=function(_0x13d395,_0x208247){return new BPromise(function(_0x1981db,_0x4f2ec6){return _0x13d395[_0xd383('0x27')][_0xd383('0x28')]()[_0xd383('0x29')](function(_0x3ab284){if(_0x3ab284){var _0x138d81=getChanSpyApplications(_0x208247,_0x208247[_0xd383('0x2a')],_0x3ab284);if(_0x208247[_0xd383('0x2a')]!=_0x208247[_0xd383('0x2b')]){_0x138d81=_0x138d81[_0xd383('0x2c')](getChanSpyApplications(_0x208247,_0x208247[_0xd383('0x2b')],_0x3ab284));}return _0x1981db(_0x138d81);}return _0x1981db([]);})[_0xd383('0x2d')](function(_0x12298f){_0x4f2ec6(_0x12298f);});});};module[_0xd383('0x2e')]=function(_0x4284dd){var _0x15b20b=_0x4284dd['models'];return _0x4284dd[_0xd383('0x2f')](_0xd383('0x30'),attributes,{'tableName':_0xd383('0x31'),'charset':_0xd383('0x32'),'collate':_0xd383('0x33'),'hooks':{'beforeCreate':function(_0x18f305,_0x2f2d1c,_0x3bb4b5){var _0x2aea0b=typeof _0x18f305['userProfileId']===_0xd383('0x34')?BPromise['resolve'](null):_0x15b20b[_0xd383('0x35')]['find']({'where':{'id':_0x18f305[_0xd383('0x36')]}});_0x2aea0b['then'](function(_0x15d06b){if(_0x15d06b){_0x18f305[_0xd383('0x37')]=_0x15d06b['privacyEnabled'];}})[_0xd383('0x29')](function(){_0x18f305[_0xd383('0x38')]();_0x18f305[_0xd383('0x39')](_0x3bb4b5);})[_0xd383('0x2d')](function(_0x15b65a){_0x3bb4b5(_0x15b65a);});},'beforeUpdate':function(_0x2f6bdc,_0x16a816,_0x2d3f88){Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(_0x2f6bdc['changed'](_0xd383('0x36'))===![])return;return _0x15b20b[_0xd383('0x35')][_0xd383('0x3b')]({'where':{'id':_0x2f6bdc[_0xd383('0x36')]}})[_0xd383('0x29')](function(_0x3262c6){if(_0x3262c6)_0x2f6bdc[_0xd383('0x37')]=_0x3262c6[_0xd383('0x37')];return;});})[_0xd383('0x29')](function(){if(_0x2f6bdc[_0xd383('0x3c')](_0xd383('0x17'))){_0x2f6bdc['updateMd5Password']();return _0x2f6bdc[_0xd383('0x39')](_0x2d3f88);}_0x2d3f88();})[_0xd383('0x2d')](function(_0x4345ec){_0x2d3f88(_0x4345ec);});},'afterCreate':function(_0x3762c5,_0xc6ae65,_0x50cc11){var _0x45161e=getUserApplications(_0x3762c5,_0x3762c5[_0xd383('0x2a')]);if(_0x3762c5['internal']!=_0x3762c5['name']){_0x45161e=_0x45161e[_0xd383('0x2c')](getUserApplications(_0x3762c5,_0x3762c5[_0xd383('0x2b')]));}return Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(!_0x3762c5[_0xd383('0x3d')]){return _0x3762c5[_0xd383('0x3e')]({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})[_0xd383('0x29')](function(){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x45161e);})[_0xd383('0x29')](function(){if(_0x3762c5[_0xd383('0x11')]){return getChanSpyPromise(_0x15b20b,_0x3762c5);}})[_0xd383('0x29')](function(_0x2d109a){if(_0x2d109a&&_0x2d109a[_0xd383('0x6')]){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x2d109a);}})[_0xd383('0x29')](function(){_0x50cc11();})[_0xd383('0x2d')](function(_0x57f81a){_0x50cc11(_0x57f81a);});},'afterUpdate':function(_0x4f1d94,_0x4850d7,_0x25a8d6){return BPromise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(_0x4f1d94['changed'](_0xd383('0x11'))||_0x4f1d94[_0xd383('0x3c')](_0xd383('0x7'))){return _0x15b20b[_0xd383('0x3f')]['destroy']({'where':{'UserId':_0x4f1d94['id'],'type':_0xd383('0x9'),'ChanSpyId':{'$ne':null}}})[_0xd383('0x29')](function(){if(_0x4f1d94[_0xd383('0x11')]){return getChanSpyPromise(_0x15b20b,_0x4f1d94)[_0xd383('0x29')](function(_0x457226){if(_0x457226&&_0x457226['length']){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0x457226);}});}});}})['then'](function(){if(_0x4f1d94[_0xd383('0x3c')](_0xd383('0x1f'))||_0x4f1d94[_0xd383('0x3c')]('context')){return _0x15b20b[_0xd383('0x3f')]['destroy']({'where':{'UserId':_0x4f1d94['id'],'type':_0xd383('0x9'),'ChanSpyId':null}})[_0xd383('0x29')](function(){var _0xb3f550=getUserApplications(_0x4f1d94,_0x4f1d94['internal']);if(_0x4f1d94['internal']!=_0x4f1d94[_0xd383('0x2b')]){_0xb3f550=_0xb3f550[_0xd383('0x2c')](getUserApplications(_0x4f1d94,_0x4f1d94['name']));}return _0x15b20b[_0xd383('0x3f')][_0xd383('0x40')](_0xb3f550);});}})[_0xd383('0x29')](function(){_0x25a8d6();})[_0xd383('0x2d')](function(_0x5415fd){_0x25a8d6(_0x5415fd);});},'afterDestroy':function(_0x58ccbb){return _0x15b20b[_0xd383('0x3f')][_0xd383('0x41')]({'where':{'UserId':_0x58ccbb['id'],'type':_0xd383('0x9')}});}},'instanceMethods':{'authenticate':function(_0x41bbc6,_0x2df7ef){if(!_0x2df7ef){return this[_0xd383('0x17')]===this[_0xd383('0x42')](_0x41bbc6);}var _0x1c21e9=this;this[_0xd383('0x42')](_0x41bbc6,function(_0x10adc2,_0x1cf984){if(_0x10adc2){_0x2df7ef(_0x10adc2);}if(_0x1c21e9[_0xd383('0x17')]===_0x1cf984){_0x2df7ef(null,!![]);}else{_0x2df7ef(null,![]);}});},'makeSalt':function(_0xb0716a,_0x557de7){var _0x1f3b92=0x10;if(typeof arguments[0x0]===_0xd383('0x43')){_0x557de7=arguments[0x0];_0xb0716a=_0x1f3b92;}else if(typeof arguments[0x1]==='function'){_0x557de7=arguments[0x1];}else{throw new Error(_0xd383('0x44'));}if(!_0xb0716a){_0xb0716a=_0x1f3b92;}return crypto[_0xd383('0x45')](_0xb0716a,function(_0x2ab6ff,_0xdfd18){if(_0x2ab6ff){_0x557de7(_0x2ab6ff);}return _0x557de7(null,_0xdfd18[_0xd383('0x46')](_0xd383('0x47')));});},'encryptPassword':function(_0x2252aa,_0x566d21){if(!_0x2252aa||!this['salt']){return _0x566d21?_0x566d21(null):null;}var _0x1b506d=0x2710;var _0x24458e=0x40;var _0x3dc478=Buffer[_0xd383('0x48')](this[_0xd383('0x49')],_0xd383('0x47'));if(!_0x566d21){return crypto['pbkdf2Sync'](_0x2252aa,_0x3dc478,_0x1b506d,_0x24458e,_0xd383('0x4a'))[_0xd383('0x46')](_0xd383('0x47'));}return crypto[_0xd383('0x4b')](_0x2252aa,_0x3dc478,_0x1b506d,_0x24458e,_0xd383('0x4a'),function(_0x124200,_0x121ba0){if(_0x124200){_0x566d21(_0x124200);}return _0x566d21(null,_0x121ba0['toString'](_0xd383('0x47')));});},'updatePassword':function(_0x10ce20){if(!this[_0xd383('0x17')]){return _0x10ce20(null);}if(!validatePresenceOf(this[_0xd383('0x17')])&&authTypes[_0xd383('0x4c')](this[_0xd383('0x4d')])===-0x1){_0x10ce20(new Error(_0xd383('0x4e')));}var _0x375a48=this;this[_0xd383('0x4f')](function(_0x2aebda,_0x4f0691){if(_0x2aebda){return _0x10ce20(_0x2aebda);}_0x375a48[_0xd383('0x49')]=_0x4f0691;_0x375a48[_0xd383('0x42')](_0x375a48['password'],function(_0x55352e,_0x5d260b){if(_0x55352e){_0x10ce20(_0x55352e);}_0x375a48['password']=_0x5d260b;_0x10ce20(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xd383('0x2b')]+_0xd383('0x50')+this[_0xd383('0x17')]);return this['md5secret'];},'getRealtimeData':function(){var _0x243d73={'id':this['id']};var _0x3cbf92=jayson[_0xd383('0x51')][_0xd383('0x52')]({'port':0x232a});var _0x3bf42f=jayson['client'][_0xd383('0x52')]({'port':0x232c});var _0x23ae84={};var _0x1a4764={};return _0x3cbf92[_0xd383('0x53')](_0xd383('0x54'),_0x243d73)['then'](function(_0x2812d0){if(_0x2812d0[_0xd383('0x55')]){throw new Error(_0xd383('0x56'));}_0x23ae84=_0x2812d0['result'];return _0x3bf42f[_0xd383('0x53')](_0xd383('0x54'),_0x243d73);})[_0xd383('0x29')](function(_0x49ecae){if(_0x49ecae[_0xd383('0x55')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agent\x20(Routing)');}_0x1a4764=_0x49ecae[_0xd383('0x57')];var _0x5304c2=_[_0xd383('0xe')]({},_0x23ae84,_0x1a4764);return _0x5304c2;})['catch'](function(_0x375dbb){throw _0x375dbb;});},'unpause':function(_0x571c95,_0x77c975=_0xd383('0x58')){var _0x123424=this;var _0x4e5d62={};return Promise[_0xd383('0x3a')]()[_0xd383('0x29')](function(){if(!_0x571c95||_0x571c95===_0xd383('0x59')&&_0x77c975===_0xd383('0x58')){var _0x24c61a=jayson['client'][_0xd383('0x52')]({'port':0x232a});return _0x24c61a[_0xd383('0x53')](_0xd383('0x5a'),{'id':_0x123424['id'],'name':_0x123424[_0xd383('0x2b')],'pause':![]})['then'](function(_0x324f01){if(_0x324f01[_0xd383('0x55')]){throw new Error(util[_0xd383('0xa')](_0xd383('0x5b'),_0x123424['id'],_0x123424[_0xd383('0x2b')]));}return _0x324f01[_0xd383('0x57')][_0xd383('0x5c')];});}})[_0xd383('0x29')](function(){if(!_0x571c95||_0x571c95===_0xd383('0x59')){return _0x15b20b[_0xd383('0x5d')][_0xd383('0x5e')]({'paused':0x0},{'where':{'UserId':_0x123424['id']},'individualHooks':!![]});}})[_0xd383('0x29')](function(){var _0x247df4=!_0x571c95?'findAll':_0xd383('0x5f');var _0x2c8ce4={'membername':_0x123424[_0xd383('0x2b')],'type':_0xd383('0x60'),'exitAt':null};if(_0x571c95){_0x2c8ce4[_0xd383('0x61')]=_0x571c95;}return _0x15b20b[_0xd383('0x62')][_0x247df4]({'where':_0x2c8ce4});})[_0xd383('0x29')](function(_0x3c2011){if(_0x3c2011){var _0x1b9b07=Array[_0xd383('0x63')](_0x3c2011)?_0x3c2011:[_0x3c2011];var _0x4213ae=_0x1b9b07[_0xd383('0x64')](function(_0x547b57){return _0x547b57[_0xd383('0x5e')]({'exitAt':moment()[_0xd383('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x77c975});});return Promise['all'](_0x4213ae);}})[_0xd383('0x29')](function(){if(!_0x571c95){_0x4e5d62['voicePause']=![];_0x4e5d62['mailPause']=![];_0x4e5d62[_0xd383('0x65')]=![];_0x4e5d62[_0xd383('0x66')]=![];_0x4e5d62[_0xd383('0x67')]=![];_0x4e5d62[_0xd383('0x68')]=![];_0x4e5d62[_0xd383('0x69')]=![];}else{_0x4e5d62[_0x571c95+_0xd383('0x6a')]=![];}return _0x123424[_0xd383('0x6b')]();})[_0xd383('0x29')](function(_0x423a53){var _0x5036c8=require(_0xd383('0x6c'));var _0x1c5326=_0x5036c8['getChannels']();_0x1c5326[_0xd383('0x6d')](function(_0x13aff0){var _0x2cc77f=_0x13aff0+_0xd383('0x6e');_0x123424[_0xd383('0x6f')]([_0x2cc77f],_0x423a53[_0x2cc77f]);});return _0x123424[_0xd383('0x5e')](_0x4e5d62);})[_0xd383('0x2d')](function(_0x200d6c){throw _0x200d6c;});}}});};
\ No newline at end of file
index e72b84f..ab38945 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa11b=['mobile','phone','loginInPause','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','UserVoiceQueue.penalty','merge','LOGIN','callysquare','PAUSE','LOGININPAUSE','bulkCreate','concat','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','socket.io-emitter','./user.socket','register','findAll','raw','options','where','limit','include','map','model','attributes','then','info','GetUser','stringify','catch','error','message','ShowUser','User','find','debug','PauseUser','name','role','internal','interface','UserVoiceQueueRt','update','length','updateAttributes','getChannels','push','format','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','UnpauseUser','channel','isValidChannel','Channel\x20parameter\x20%s\x20is\x20invalid','voicePause','mailPause','chatPause','openchannelPause','smsPause','whatsappPause','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','system','LogoutUser','findOne','destroy','MemberReport','forEach','all'];(function(_0x2b7fe1,_0x278871){var _0x4232ca=function(_0x449d14){while(--_0x449d14){_0x2b7fe1['push'](_0x2b7fe1['shift']());}};_0x4232ca(++_0x278871);}(_0xa11b,0x69));var _0xba11=function(_0x73caba,_0x42f145){_0x73caba=_0x73caba-0x0;var _0x134e0d=_0xa11b[_0x73caba];return _0x134e0d;};'use strict';var _=require(_0xba11('0x0'));var util=require(_0xba11('0x1'));var moment=require(_0xba11('0x2'));var BPromise=require(_0xba11('0x3'));var Redis=require(_0xba11('0x4'));var db=require(_0xba11('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xba11('0x6'))(_0xba11('0x7'));var config=require(_0xba11('0x8'));config[_0xba11('0x9')]=_[_0xba11('0xa')](config[_0xba11('0x9')],{'host':_0xba11('0xb'),'port':0x18eb});var socket=require(_0xba11('0xc'))(new Redis(config[_0xba11('0x9')]));require(_0xba11('0xd'))[_0xba11('0xe')](socket);exports['GetUser']=function(_0x36c44f){var _0x2c4e24=this;return new Promise(function(_0x16a7f8,_0x2a8d68){return db['User'][_0xba11('0xf')]({'raw':_0x36c44f['options']?_0x36c44f['options'][_0xba11('0x10')]===undefined?!![]:![]:!![],'where':_0x36c44f['options']?_0x36c44f[_0xba11('0x11')][_0xba11('0x12')]||null:null,'attributes':_0x36c44f[_0xba11('0x11')]?_0x36c44f[_0xba11('0x11')]['attributes']||null:null,'limit':_0x36c44f[_0xba11('0x11')]?_0x36c44f[_0xba11('0x11')][_0xba11('0x13')]||null:null,'include':_0x36c44f[_0xba11('0x11')]?_0x36c44f[_0xba11('0x11')][_0xba11('0x14')]?_[_0xba11('0x15')](_0x36c44f[_0xba11('0x11')][_0xba11('0x14')],function(_0xeacbcc){return{'model':db[_0xeacbcc[_0xba11('0x16')]],'as':_0xeacbcc['as'],'attributes':_0xeacbcc['attributes'],'include':_0xeacbcc['include']?_[_0xba11('0x15')](_0xeacbcc[_0xba11('0x14')],function(_0x41dccc){return{'model':db[_0x41dccc[_0xba11('0x16')]],'as':_0x41dccc['as'],'attributes':_0x41dccc[_0xba11('0x17')],'include':_0x41dccc[_0xba11('0x14')]?_[_0xba11('0x15')](_0x41dccc[_0xba11('0x14')],function(_0x4b3649){return{'model':db[_0x4b3649[_0xba11('0x16')]],'as':_0x4b3649['as'],'attributes':_0x4b3649[_0xba11('0x17')]};}):[]};}):[]};}):[]:[]})[_0xba11('0x18')](function(_0x450b23){logger[_0xba11('0x19')]('GetUser',_0x36c44f);logger['debug'](_0xba11('0x1a'),_0x36c44f,JSON[_0xba11('0x1b')](_0x450b23));_0x16a7f8(_0x450b23);})[_0xba11('0x1c')](function(_0x2d0dc1){logger[_0xba11('0x1d')](_0xba11('0x1a'),_0x2d0dc1[_0xba11('0x1e')],_0x36c44f);_0x2a8d68(_0x2c4e24['error'](0x1f4,_0x2d0dc1[_0xba11('0x1e')]));});});};exports[_0xba11('0x1f')]=function(_0x47e803){var _0x3fa24b=this;return new Promise(function(_0xa062e0,_0x22cf17){return db[_0xba11('0x20')][_0xba11('0x21')]({'raw':_0x47e803[_0xba11('0x11')]?_0x47e803[_0xba11('0x11')]['raw']===undefined?!![]:![]:!![],'where':_0x47e803['options']?_0x47e803['options']['where']||null:null,'attributes':_0x47e803[_0xba11('0x11')]?_0x47e803[_0xba11('0x11')][_0xba11('0x17')]||null:null,'include':_0x47e803[_0xba11('0x11')]?_0x47e803['options'][_0xba11('0x14')]?_[_0xba11('0x15')](_0x47e803[_0xba11('0x11')][_0xba11('0x14')],function(_0x5a6a86){return{'model':db[_0x5a6a86[_0xba11('0x16')]],'as':_0x5a6a86['as'],'attributes':_0x5a6a86[_0xba11('0x17')],'include':_0x5a6a86[_0xba11('0x14')]?_['map'](_0x5a6a86[_0xba11('0x14')],function(_0x105107){return{'model':db[_0x105107['model']],'as':_0x105107['as'],'attributes':_0x105107[_0xba11('0x17')],'include':_0x105107[_0xba11('0x14')]?_['map'](_0x105107[_0xba11('0x14')],function(_0x3441b3){return{'model':db[_0x3441b3[_0xba11('0x16')]],'as':_0x3441b3['as'],'attributes':_0x3441b3[_0xba11('0x17')]};}):[]};}):[]};}):[]:[]})[_0xba11('0x18')](function(_0x70cf31){logger[_0xba11('0x19')]('ShowUser',_0x47e803);logger[_0xba11('0x22')](_0xba11('0x1f'),_0x47e803,JSON[_0xba11('0x1b')](_0x70cf31));_0xa062e0(_0x70cf31);})['catch'](function(_0x55917a){logger[_0xba11('0x1d')](_0xba11('0x1f'),_0x55917a[_0xba11('0x1e')],_0x47e803);_0x22cf17(_0x3fa24b[_0xba11('0x1d')](0x1f4,_0x55917a[_0xba11('0x1e')]));});});};exports[_0xba11('0x23')]=function(_0x1fe044){var _0x4b3052=this;return new Promise(function(_0xc7a61f,_0x1c6da3){var _0x47b7fe;return db[_0xba11('0x20')][_0xba11('0x21')]({'where':_0x1fe044[_0xba11('0x11')][_0xba11('0x12')]||{},'attributes':['id',_0xba11('0x24'),_0xba11('0x25'),_0xba11('0x26'),_0xba11('0x27')]})[_0xba11('0x18')](function(_0x46c30a){if(_0x46c30a){_0x47b7fe=_0x46c30a;return db[_0xba11('0x28')][_0xba11('0x29')]({'paused':0x1},{'where':{'UserId':_0x47b7fe['id']},'individualHooks':!![]});}})[_0xba11('0x18')](function(){if(_0x47b7fe){return db['MemberReport'][_0xba11('0xf')]({'where':{'membername':_0x47b7fe[_0xba11('0x24')],'type':'PAUSE','exitAt':null}});}})[_0xba11('0x18')](function(_0x1d543c){if(_0x47b7fe){if(_0x1d543c&&_0x1d543c[_0xba11('0x2a')]){var _0x1354dc=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x2962d5=0x0,_0x33cce2=_0x1d543c[_0xba11('0x2a')];_0x2962d5<_0x33cce2;_0x2962d5++){_0x1d543c[_0x2962d5][_0xba11('0x2b')]({'exitAt':_0x1354dc});}}}})['then'](function(){if(_0x47b7fe){var _0x14df2d=[];var _0x2dc35e=utils[_0xba11('0x2c')]();_0x2dc35e['forEach'](function(_0xed2839){_0x14df2d[_0xba11('0x2d')]({'channel':_0xed2839,'membername':_0x47b7fe[_0xba11('0x24')],'interface':_['isNil'](_0x47b7fe[_0xba11('0x27')])?util[_0xba11('0x2e')](_0xba11('0x2f'),_0x47b7fe[_0xba11('0x24')]):_0x47b7fe['interface'],'type':'PAUSE','enterAt':moment()[_0xba11('0x2e')](_0xba11('0x30')),'data1':_0x1fe044[_0xba11('0x31')][_0xba11('0x32')]||_0xba11('0x33'),'role':_0x47b7fe[_0xba11('0x25')],'internal':_0x47b7fe[_0xba11('0x26')],'uniqueid':_0x1fe044[_0xba11('0x31')][_0xba11('0x34')]||null});});return db['MemberReport']['bulkCreate'](_0x14df2d,{'individualHooks':!![]});}})[_0xba11('0x18')](function(){if(_0x47b7fe){return _0x47b7fe[_0xba11('0x29')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x1fe044[_0xba11('0x31')]['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xba11('0x2e')](_0xba11('0x30'))});}})[_0xba11('0x18')](function(_0x45bcb2){_0xc7a61f(_0x45bcb2);})['catch'](function(_0x7b4ec4){_0x1c6da3(_0x4b3052[_0xba11('0x1d')](0x1f4,_0x7b4ec4[_0xba11('0x1e')]));});});};exports[_0xba11('0x35')]=function(_0x22ac98){var _0xb8fe3e=this;return new Promise(function(_0xb4c60c,_0xaecd4){if(_0x22ac98[_0xba11('0x31')][_0xba11('0x36')]&&!utils[_0xba11('0x37')](_0x22ac98[_0xba11('0x31')][_0xba11('0x36')])){throw new Error(util[_0xba11('0x2e')](_0xba11('0x38'),_0x22ac98['body'][_0xba11('0x36')]));}return db[_0xba11('0x20')]['findOne']({'where':_0x22ac98[_0xba11('0x11')][_0xba11('0x12')]||{},'attributes':['id',_0xba11('0x24'),'role',_0xba11('0x26'),_0xba11('0x27'),'online',_0xba11('0x39'),_0xba11('0x3a'),_0xba11('0x3b'),'faxPause',_0xba11('0x3c'),_0xba11('0x3d'),_0xba11('0x3e'),'pauseType',_0xba11('0x3f')]})[_0xba11('0x18')](function(_0x4f702d){if(!_0x4f702d){throw new Error(util[_0xba11('0x2e')](_0xba11('0x40'),_0x22ac98[_0xba11('0x41')]['id']));}return _0x4f702d['unpause'](_0x22ac98[_0xba11('0x31')][_0xba11('0x36')],_0xba11('0x42'));})['then'](function(_0x5b04f1){_0xb4c60c(_0x5b04f1);})['catch'](function(_0x8e9453){_0xaecd4(_0xb8fe3e[_0xba11('0x1d')](0x1f4,_0x8e9453[_0xba11('0x1e')]));});});};exports[_0xba11('0x43')]=function(_0xd607ce){var _0x30a1ad=this;return new Promise(function(_0x5bc904,_0x3d8e69){var _0x4b816c;return db[_0xba11('0x20')][_0xba11('0x44')]({'where':_0xd607ce[_0xba11('0x11')][_0xba11('0x12')]||{},'attributes':['id',_0xba11('0x24')]})['then'](function(_0x5aba30){if(_0x5aba30){_0x4b816c=_0x5aba30;return db[_0xba11('0x28')][_0xba11('0x45')]({'where':{'membername':_0x4b816c[_0xba11('0x24')]},'individualHooks':!![]});}})['then'](function(){if(_0x4b816c){return db[_0xba11('0x46')][_0xba11('0xf')]({'where':{'membername':_0x4b816c[_0xba11('0x24')],'exitAt':null}});}})[_0xba11('0x18')](function(_0x145b85){if(_0x4b816c){if(_0x145b85&&_0x145b85[_0xba11('0x2a')]){var _0x7135f7=[];_0x145b85[_0xba11('0x47')](function(_0x192b37){_0x7135f7['push'](_0x192b37[_0xba11('0x29')]({'exitAt':moment()[_0xba11('0x2e')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xba11('0x48')](_0x7135f7);}}})['then'](function(){if(_0x4b816c){return _0x4b816c[_0xba11('0x29')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0xba11('0x18')](function(_0x467004){_0x5bc904(_0x467004);})[_0xba11('0x1c')](function(_0x43843){_0x3d8e69(_0x30a1ad[_0xba11('0x1d')](0x1f4,_0x43843[_0xba11('0x1e')]));});});};exports['LoginUser']=function(_0x164925){var _0x26d5f6=this;return new Promise(function(_0x4d583c,_0x3834bd){var _0x4563a9;var _0x437db5;var _0x3be6b9;var _0x78ff4;return db[_0xba11('0x20')][_0xba11('0x44')]({'where':_0x164925['options'][_0xba11('0x12')]||{},'attributes':['id',_0xba11('0x24'),'role',_0xba11('0x49'),_0xba11('0x4a'),_0xba11('0x26'),_0xba11('0x4b'),_0xba11('0x27')]})[_0xba11('0x18')](function(_0x407784){if(_0x407784){_0x4563a9=_0x407784;_0x78ff4=_0x164925[_0xba11('0x31')]['interface']?_0x164925['body'][_0xba11('0x27')]:util[_0xba11('0x2e')](_0xba11('0x2f'),_0x4563a9[_0xba11('0x24')]);return db[_0xba11('0x20')]['count']({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4563a9['id']}}});}})['then'](function(_0x4cd724){if(_0x4cd724){_0x3be6b9=_0x4cd724;return require('../../config/license/util')[_0xba11('0x4c')]();}})[_0xba11('0x18')](function(_0x472745){if(_0x472745&&_0x472745['agents']&&_0x3be6b9>=_0x472745[_0xba11('0x4d')]){throw new Error(_0xba11('0x4e'));}})[_0xba11('0x18')](function(){if(_0x4563a9){return db[_0xba11('0x28')][_0xba11('0x45')]({'where':{'membername':_0x4563a9['name']},'individualHooks':!![]});}})['then'](function(){if(_0x4563a9){return _0x4563a9[_0xba11('0x4f')]({'raw':!![]});}})['then'](function(_0x3f5575){if(_0x4563a9){if(_0x3f5575){var _0x4fc11d=[];_0x437db5=_0x3f5575;if(_0x437db5[_0xba11('0x2a')]){for(var _0xbdf7ef=0x0;_0xbdf7ef<_0x437db5[_0xba11('0x2a')];_0xbdf7ef++){_0x4fc11d[_0xba11('0x2d')](db[_0xba11('0x28')][_0xba11('0x50')]({'membername':_0x4563a9[_0xba11('0x24')],'UserId':_0x4563a9['id'],'queue_name':_0x437db5[_0xbdf7ef][_0xba11('0x24')],'VoiceQueueId':_0x437db5[_0xbdf7ef]['id'],'interface':_0x78ff4,'paused':_0x4563a9[_0xba11('0x4b')]||![],'penalty':_0x437db5[_0xbdf7ef][_0xba11('0x51')]||0x0}));}return BPromise[_0xba11('0x48')](_0x4fc11d);}}}})[_0xba11('0x18')](function(){if(_0x4563a9){return db['MemberReport']['findAll']({'where':{'membername':_0x4563a9[_0xba11('0x24')],'exitAt':null}});}})[_0xba11('0x18')](function(_0x538e30){if(_0x4563a9){if(_0x538e30&&_0x538e30[_0xba11('0x2a')]){var _0xb94015=[];_0x538e30[_0xba11('0x47')](function(_0x2e9511){_0xb94015[_0xba11('0x2d')](_0x2e9511[_0xba11('0x29')]({'exitAt':moment()[_0xba11('0x2e')](_0xba11('0x30'))}));});return BPromise[_0xba11('0x48')](_0xb94015);}}})[_0xba11('0x18')](function(){if(_0x4563a9){var _0xe9d372=[];var _0x42f1c0=[];var _0x471b08=utils[_0xba11('0x2c')]();var _0x549941={'membername':_0x4563a9[_0xba11('0x24')],'interface':_0x78ff4,'enterAt':moment()['format'](_0xba11('0x30')),'role':_0x4563a9['role'],'internal':_0x4563a9[_0xba11('0x26')]};_0x471b08[_0xba11('0x47')](function(_0x4ff0e8){_0xe9d372[_0xba11('0x2d')](_[_0xba11('0x52')]({'channel':_0x4ff0e8,'type':_0xba11('0x53'),'data1':_0xba11('0x54'),'data2':_0x78ff4},_0x549941));if(_0x4563a9['loginInPause']){_0x42f1c0[_0xba11('0x2d')](_[_0xba11('0x52')]({'channel':_0x4ff0e8,'type':_0xba11('0x55'),'data1':_0xba11('0x56')},_0x549941));}});return db[_0xba11('0x46')][_0xba11('0x57')](_0xe9d372[_0xba11('0x58')](_0x42f1c0),{'individualHooks':!![]});}})['then'](function(){if(_0x4563a9){return _0x4563a9[_0xba11('0x29')]({'online':!![],'lastLoginAt':moment()['format'](_0xba11('0x30')),'voicePause':_0x4563a9[_0xba11('0x4b')]||![],'mailPause':_0x4563a9[_0xba11('0x4b')]||![],'chatPause':_0x4563a9[_0xba11('0x4b')]||![],'faxPause':_0x4563a9[_0xba11('0x4b')]||![],'smsPause':_0x4563a9[_0xba11('0x4b')]||![],'openchannelPause':_0x4563a9[_0xba11('0x4b')]||![],'pauseType':_0x4563a9['loginInPause']?_0xba11('0x56'):null,'lastPauseAt':moment()[_0xba11('0x2e')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x78ff4});}})['then'](function(_0x51d274){_0x4d583c(_0x51d274);})[_0xba11('0x1c')](function(_0x23344b){_0x3834bd(_0x26d5f6[_0xba11('0x1d')](0x1f4,_0x23344b[_0xba11('0x1e')]));});});};
\ No newline at end of file
+var _0xaec7=['localhost','socket.io-emitter','register','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','then','info','stringify','catch','error','ShowUser','find','debug','message','role','internal','interface','update','PAUSE','length','updateAttributes','getChannels','forEach','name','format','SIP/%s','body','type','DEFAULT\x20PAUSE','uniqueid','YYYY-MM-DD\x20HH:mm:ss','UnpauseUser','channel','Channel\x20parameter\x20%s\x20is\x20invalid','findOne','voicePause','chatPause','whatsappPause','lastPauseAt','User\x20with\x20id\x20%s\x20not\x20found','params','unpause','system','LogoutUser','UserVoiceQueueRt','destroy','MemberReport','push','all','mobile','count','agent','../../config/license/util','Maximum\x20login\x20has\x20been\x20reached','loginInPause','merge','LOGIN','callysquare','LOGININPAUSE','bulkCreate','concat','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','redis','defaults'];(function(_0x43131d,_0x2db0c4){var _0x27918b=function(_0x50b798){while(--_0x50b798){_0x43131d['push'](_0x43131d['shift']());}};_0x27918b(++_0x2db0c4);}(_0xaec7,0x182));var _0x7aec=function(_0x5d07ff,_0x1f976f){_0x5d07ff=_0x5d07ff-0x0;var _0x5226ad=_0xaec7[_0x5d07ff];return _0x5226ad;};'use strict';var _=require('lodash');var util=require(_0x7aec('0x0'));var moment=require(_0x7aec('0x1'));var BPromise=require(_0x7aec('0x2'));var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7aec('0x3'));var logger=require(_0x7aec('0x4'))(_0x7aec('0x5'));var config=require(_0x7aec('0x6'));config[_0x7aec('0x7')]=_[_0x7aec('0x8')](config[_0x7aec('0x7')],{'host':_0x7aec('0x9'),'port':0x18eb});var socket=require(_0x7aec('0xa'))(new Redis(config['redis']));require('./user.socket')[_0x7aec('0xb')](socket);exports[_0x7aec('0xc')]=function(_0x25b43a){var _0x3711f7=this;return new Promise(function(_0xfabe2,_0x3cfac7){return db[_0x7aec('0xd')][_0x7aec('0xe')]({'raw':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x10')]===undefined?!![]:![]:!![],'where':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x11')]||null:null,'attributes':_0x25b43a[_0x7aec('0xf')]?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x12')]||null:null,'limit':_0x25b43a[_0x7aec('0xf')]?_0x25b43a['options'][_0x7aec('0x13')]||null:null,'include':_0x25b43a['options']?_0x25b43a[_0x7aec('0xf')][_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x25b43a[_0x7aec('0xf')][_0x7aec('0x14')],function(_0x2f762d){return{'model':db[_0x2f762d[_0x7aec('0x16')]],'as':_0x2f762d['as'],'attributes':_0x2f762d[_0x7aec('0x12')],'include':_0x2f762d[_0x7aec('0x14')]?_['map'](_0x2f762d[_0x7aec('0x14')],function(_0x2a2838){return{'model':db[_0x2a2838[_0x7aec('0x16')]],'as':_0x2a2838['as'],'attributes':_0x2a2838[_0x7aec('0x12')],'include':_0x2a2838[_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x2a2838[_0x7aec('0x14')],function(_0x12597d){return{'model':db[_0x12597d[_0x7aec('0x16')]],'as':_0x12597d['as'],'attributes':_0x12597d[_0x7aec('0x12')]};}):[]};}):[]};}):[]:[]})[_0x7aec('0x17')](function(_0x5df970){logger[_0x7aec('0x18')](_0x7aec('0xc'),_0x25b43a);logger['debug'](_0x7aec('0xc'),_0x25b43a,JSON[_0x7aec('0x19')](_0x5df970));_0xfabe2(_0x5df970);})[_0x7aec('0x1a')](function(_0x527330){logger[_0x7aec('0x1b')]('GetUser',_0x527330['message'],_0x25b43a);_0x3cfac7(_0x3711f7[_0x7aec('0x1b')](0x1f4,_0x527330['message']));});});};exports[_0x7aec('0x1c')]=function(_0x5ef249){var _0x14061c=this;return new Promise(function(_0x3dd39a,_0x4b9e80){return db[_0x7aec('0xd')][_0x7aec('0x1d')]({'raw':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x10')]===undefined?!![]:![]:!![],'where':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x11')]||null:null,'attributes':_0x5ef249['options']?_0x5ef249['options']['attributes']||null:null,'include':_0x5ef249[_0x7aec('0xf')]?_0x5ef249[_0x7aec('0xf')][_0x7aec('0x14')]?_[_0x7aec('0x15')](_0x5ef249[_0x7aec('0xf')]['include'],function(_0x28036f){return{'model':db[_0x28036f[_0x7aec('0x16')]],'as':_0x28036f['as'],'attributes':_0x28036f[_0x7aec('0x12')],'include':_0x28036f['include']?_[_0x7aec('0x15')](_0x28036f[_0x7aec('0x14')],function(_0x86289d){return{'model':db[_0x86289d['model']],'as':_0x86289d['as'],'attributes':_0x86289d[_0x7aec('0x12')],'include':_0x86289d['include']?_['map'](_0x86289d['include'],function(_0x224344){return{'model':db[_0x224344['model']],'as':_0x224344['as'],'attributes':_0x224344['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0xb97001){logger[_0x7aec('0x18')](_0x7aec('0x1c'),_0x5ef249);logger[_0x7aec('0x1e')]('ShowUser',_0x5ef249,JSON['stringify'](_0xb97001));_0x3dd39a(_0xb97001);})['catch'](function(_0x1c647d){logger[_0x7aec('0x1b')]('ShowUser',_0x1c647d[_0x7aec('0x1f')],_0x5ef249);_0x4b9e80(_0x14061c['error'](0x1f4,_0x1c647d['message']));});});};exports['PauseUser']=function(_0x56349b){var _0x103f7c=this;return new Promise(function(_0x3ce4c9,_0x32764a){var _0x517bb3;return db[_0x7aec('0xd')][_0x7aec('0x1d')]({'where':_0x56349b['options']['where']||{},'attributes':['id','name',_0x7aec('0x20'),_0x7aec('0x21'),_0x7aec('0x22')]})[_0x7aec('0x17')](function(_0x6bf614){if(_0x6bf614){_0x517bb3=_0x6bf614;return db['UserVoiceQueueRt'][_0x7aec('0x23')]({'paused':0x1},{'where':{'UserId':_0x517bb3['id']},'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x517bb3){return db['MemberReport'][_0x7aec('0xe')]({'where':{'membername':_0x517bb3['name'],'type':_0x7aec('0x24'),'exitAt':null}});}})['then'](function(_0x5627b6){if(_0x517bb3){if(_0x5627b6&&_0x5627b6[_0x7aec('0x25')]){var _0x2d3e66=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');for(var _0x1b7f8c=0x0,_0x1dae3e=_0x5627b6['length'];_0x1b7f8c<_0x1dae3e;_0x1b7f8c++){_0x5627b6[_0x1b7f8c][_0x7aec('0x26')]({'exitAt':_0x2d3e66});}}}})[_0x7aec('0x17')](function(){if(_0x517bb3){var _0x4845c9=[];var _0x3e5d1a=utils[_0x7aec('0x27')]();_0x3e5d1a[_0x7aec('0x28')](function(_0x1d2075){_0x4845c9['push']({'channel':_0x1d2075,'membername':_0x517bb3[_0x7aec('0x29')],'interface':_['isNil'](_0x517bb3['interface'])?util[_0x7aec('0x2a')](_0x7aec('0x2b'),_0x517bb3[_0x7aec('0x29')]):_0x517bb3[_0x7aec('0x22')],'type':_0x7aec('0x24'),'enterAt':moment()[_0x7aec('0x2a')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x56349b[_0x7aec('0x2c')][_0x7aec('0x2d')]||_0x7aec('0x2e'),'role':_0x517bb3['role'],'internal':_0x517bb3[_0x7aec('0x21')],'uniqueid':_0x56349b[_0x7aec('0x2c')][_0x7aec('0x2f')]||null});});return db['MemberReport']['bulkCreate'](_0x4845c9,{'individualHooks':!![]});}})['then'](function(){if(_0x517bb3){return _0x517bb3[_0x7aec('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x56349b[_0x7aec('0x2c')]['type']||_0x7aec('0x2e'),'lastPauseAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))});}})[_0x7aec('0x17')](function(_0x7ded4){_0x3ce4c9(_0x7ded4);})[_0x7aec('0x1a')](function(_0x33a7f5){_0x32764a(_0x103f7c[_0x7aec('0x1b')](0x1f4,_0x33a7f5[_0x7aec('0x1f')]));});});};exports[_0x7aec('0x31')]=function(_0x5e6682){var _0x38de00=this;return new Promise(function(_0x1cfb8a,_0x3dac91){if(_0x5e6682[_0x7aec('0x2c')]['channel']&&!utils['isValidChannel'](_0x5e6682['body'][_0x7aec('0x32')])){throw new Error(util[_0x7aec('0x2a')](_0x7aec('0x33'),_0x5e6682[_0x7aec('0x2c')][_0x7aec('0x32')]));}return db['User'][_0x7aec('0x34')]({'where':_0x5e6682[_0x7aec('0xf')][_0x7aec('0x11')]||{},'attributes':['id',_0x7aec('0x29'),_0x7aec('0x20'),_0x7aec('0x21'),_0x7aec('0x22'),'online',_0x7aec('0x35'),'mailPause',_0x7aec('0x36'),'faxPause','openchannelPause','smsPause',_0x7aec('0x37'),'pauseType',_0x7aec('0x38')]})[_0x7aec('0x17')](function(_0x52e0f4){if(!_0x52e0f4){throw new Error(util[_0x7aec('0x2a')](_0x7aec('0x39'),_0x5e6682[_0x7aec('0x3a')]['id']));}return _0x52e0f4[_0x7aec('0x3b')](_0x5e6682['body']['channel'],_0x7aec('0x3c'));})[_0x7aec('0x17')](function(_0x394cb4){_0x1cfb8a(_0x394cb4);})[_0x7aec('0x1a')](function(_0x53cce3){_0x3dac91(_0x38de00[_0x7aec('0x1b')](0x1f4,_0x53cce3[_0x7aec('0x1f')]));});});};exports[_0x7aec('0x3d')]=function(_0x2e818b){var _0x2d4249=this;return new Promise(function(_0x16f739,_0x27b7e5){var _0x2bba50;return db['User'][_0x7aec('0x34')]({'where':_0x2e818b[_0x7aec('0xf')]['where']||{},'attributes':['id','name']})[_0x7aec('0x17')](function(_0x1fe871){if(_0x1fe871){_0x2bba50=_0x1fe871;return db[_0x7aec('0x3e')][_0x7aec('0x3f')]({'where':{'membername':_0x2bba50['name']},'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x2bba50){return db[_0x7aec('0x40')][_0x7aec('0xe')]({'where':{'membername':_0x2bba50['name'],'exitAt':null}});}})[_0x7aec('0x17')](function(_0x3bb3a5){if(_0x2bba50){if(_0x3bb3a5&&_0x3bb3a5[_0x7aec('0x25')]){var _0x558e31=[];_0x3bb3a5[_0x7aec('0x28')](function(_0x28d06c){_0x558e31[_0x7aec('0x41')](_0x28d06c[_0x7aec('0x23')]({'exitAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))}));});return BPromise[_0x7aec('0x42')](_0x558e31);}}})[_0x7aec('0x17')](function(){if(_0x2bba50){return _0x2bba50[_0x7aec('0x23')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})['then'](function(_0x2a304c){_0x16f739(_0x2a304c);})[_0x7aec('0x1a')](function(_0x2c5109){_0x27b7e5(_0x2d4249['error'](0x1f4,_0x2c5109[_0x7aec('0x1f')]));});});};exports['LoginUser']=function(_0x2064fd){var _0x39d451=this;return new Promise(function(_0x35e447,_0xfcfd22){var _0x391c03;var _0x10ea3a;var _0x470f9a;var _0x5a0eb9;return db[_0x7aec('0xd')][_0x7aec('0x34')]({'where':_0x2064fd[_0x7aec('0xf')][_0x7aec('0x11')]||{},'attributes':['id',_0x7aec('0x29'),'role',_0x7aec('0x43'),'phone',_0x7aec('0x21'),'loginInPause',_0x7aec('0x22')]})[_0x7aec('0x17')](function(_0x4a0653){if(_0x4a0653){_0x391c03=_0x4a0653;_0x5a0eb9=_0x2064fd[_0x7aec('0x2c')]['interface']?_0x2064fd['body'][_0x7aec('0x22')]:util[_0x7aec('0x2a')](_0x7aec('0x2b'),_0x391c03[_0x7aec('0x29')]);return db[_0x7aec('0xd')][_0x7aec('0x44')]({'where':{'role':_0x7aec('0x45'),'online':!![],'id':{'$ne':_0x391c03['id']}}});}})[_0x7aec('0x17')](function(_0x56b55d){if(_0x56b55d){_0x470f9a=_0x56b55d;return require(_0x7aec('0x46'))['getLicense']();}})[_0x7aec('0x17')](function(_0x5841fa){if(_0x5841fa&&_0x5841fa['agents']&&_0x470f9a>=_0x5841fa['agents']){throw new Error(_0x7aec('0x47'));}})['then'](function(){if(_0x391c03){return db[_0x7aec('0x3e')]['destroy']({'where':{'membername':_0x391c03[_0x7aec('0x29')]},'individualHooks':!![]});}})['then'](function(){if(_0x391c03){return _0x391c03['getVoiceQueues']({'raw':!![]});}})['then'](function(_0x50c44b){if(_0x391c03){if(_0x50c44b){var _0x50defd=[];_0x10ea3a=_0x50c44b;if(_0x10ea3a[_0x7aec('0x25')]){for(var _0x3609ca=0x0;_0x3609ca<_0x10ea3a[_0x7aec('0x25')];_0x3609ca++){_0x50defd[_0x7aec('0x41')](db[_0x7aec('0x3e')]['upsert']({'membername':_0x391c03['name'],'UserId':_0x391c03['id'],'queue_name':_0x10ea3a[_0x3609ca][_0x7aec('0x29')],'VoiceQueueId':_0x10ea3a[_0x3609ca]['id'],'interface':_0x5a0eb9,'paused':_0x391c03[_0x7aec('0x48')]||![],'penalty':_0x10ea3a[_0x3609ca]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x50defd);}}}})[_0x7aec('0x17')](function(){if(_0x391c03){return db['MemberReport'][_0x7aec('0xe')]({'where':{'membername':_0x391c03[_0x7aec('0x29')],'exitAt':null}});}})[_0x7aec('0x17')](function(_0x2a0d4c){if(_0x391c03){if(_0x2a0d4c&&_0x2a0d4c['length']){var _0x2ee50b=[];_0x2a0d4c['forEach'](function(_0x3a98c7){_0x2ee50b[_0x7aec('0x41')](_0x3a98c7['update']({'exitAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30'))}));});return BPromise[_0x7aec('0x42')](_0x2ee50b);}}})['then'](function(){if(_0x391c03){var _0x5d9591=[];var _0x361ca4=[];var _0x1cef50=utils['getChannels']();var _0x48b64a={'membername':_0x391c03[_0x7aec('0x29')],'interface':_0x5a0eb9,'enterAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'role':_0x391c03[_0x7aec('0x20')],'internal':_0x391c03[_0x7aec('0x21')]};_0x1cef50[_0x7aec('0x28')](function(_0x5d7b84){_0x5d9591[_0x7aec('0x41')](_[_0x7aec('0x49')]({'channel':_0x5d7b84,'type':_0x7aec('0x4a'),'data1':_0x7aec('0x4b'),'data2':_0x5a0eb9},_0x48b64a));if(_0x391c03[_0x7aec('0x48')]){_0x361ca4[_0x7aec('0x41')](_[_0x7aec('0x49')]({'channel':_0x5d7b84,'type':_0x7aec('0x24'),'data1':_0x7aec('0x4c')},_0x48b64a));}});return db[_0x7aec('0x40')][_0x7aec('0x4d')](_0x5d9591[_0x7aec('0x4e')](_0x361ca4),{'individualHooks':!![]});}})[_0x7aec('0x17')](function(){if(_0x391c03){return _0x391c03[_0x7aec('0x23')]({'online':!![],'lastLoginAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'voicePause':_0x391c03['loginInPause']||![],'mailPause':_0x391c03[_0x7aec('0x48')]||![],'chatPause':_0x391c03[_0x7aec('0x48')]||![],'faxPause':_0x391c03[_0x7aec('0x48')]||![],'smsPause':_0x391c03['loginInPause']||![],'openchannelPause':_0x391c03[_0x7aec('0x48')]||![],'pauseType':_0x391c03['loginInPause']?'LOGININPAUSE':null,'lastPauseAt':moment()[_0x7aec('0x2a')](_0x7aec('0x30')),'interface':_0x5a0eb9});}})['then'](function(_0x53a96c){_0x35e447(_0x53a96c);})[_0x7aec('0x1a')](function(_0x164e61){_0xfcfd22(_0x39d451[_0x7aec('0x1b')](0x1f4,_0x164e61['message']));});});};
\ No newline at end of file
index 20c5fc4..c4ef3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x369a=['register','length','user:','remove','update','emit'];(function(_0x35a819,_0x5bac0a){var _0x51f10c=function(_0x2035ea){while(--_0x2035ea){_0x35a819['push'](_0x35a819['shift']());}};_0x51f10c(++_0x5bac0a);}(_0x369a,0xcf));var _0xa369=function(_0x41477e,_0x4ff3f1){_0x41477e=_0x41477e-0x0;var _0x3ef007=_0x369a[_0x41477e];return _0x3ef007;};'use strict';var UserEvents=require('./user.events');var events=['save',_0xa369('0x0'),_0xa369('0x1')];function createListener(_0x1fc8df,_0x37c05e){return function(_0x2da0a7){_0x37c05e[_0xa369('0x2')](_0x1fc8df,_0x2da0a7);};}function removeListener(_0x95d1f5,_0xb4c1c4){return function(){UserEvents['removeListener'](_0x95d1f5,_0xb4c1c4);};}exports[_0xa369('0x3')]=function(_0x5af8aa){for(var _0x509fa7=0x0,_0x5b04ce=events[_0xa369('0x4')];_0x509fa7<_0x5b04ce;_0x509fa7++){var _0x15f195=events[_0x509fa7];var _0x3898c1=createListener(_0xa369('0x5')+_0x15f195,_0x5af8aa);UserEvents['on'](_0x15f195,_0x3898c1);}};
\ No newline at end of file
+var _0x6902=['update','emit','register','length','user:','./user.events','save','remove'];(function(_0x286dbe,_0x51e5cf){var _0x5a5a99=function(_0x2590fd){while(--_0x2590fd){_0x286dbe['push'](_0x286dbe['shift']());}};_0x5a5a99(++_0x51e5cf);}(_0x6902,0x18d));var _0x2690=function(_0x2785ef,_0x2faf3a){_0x2785ef=_0x2785ef-0x0;var _0x4a6c6c=_0x6902[_0x2785ef];return _0x4a6c6c;};'use strict';var UserEvents=require(_0x2690('0x0'));var events=[_0x2690('0x1'),_0x2690('0x2'),_0x2690('0x3')];function createListener(_0x4e0772,_0xe998e4){return function(_0x399064){_0xe998e4[_0x2690('0x4')](_0x4e0772,_0x399064);};}function removeListener(_0x1b738f,_0xff525d){return function(){UserEvents['removeListener'](_0x1b738f,_0xff525d);};}exports[_0x2690('0x5')]=function(_0x5b7207){for(var _0x37fff1=0x0,_0x5bbf8d=events[_0x2690('0x6')];_0x37fff1<_0x5bbf8d;_0x37fff1++){var _0x11f8df=events[_0x37fff1];var _0x477878=createListener(_0x2690('0x7')+_0x11f8df,_0x5b7207);UserEvents['on'](_0x11f8df,_0x477878);}};
\ No newline at end of file
index ea95587..4519c5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x196982,_0x4ba1e7){var _0x4d8b33=function(_0x1ea4e4){while(--_0x1ea4e4){_0x196982['push'](_0x196982['shift']());}};_0x4d8b33(++_0x4ba1e7);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var multer=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0d8b('0x2')]();var fs_extra=require(_0x0d8b('0x3'));var auth=require(_0x0d8b('0x4'));var interaction=require(_0x0d8b('0x5'));var config=require(_0x0d8b('0x6'));module['exports']=router;
\ No newline at end of file
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4842bb,_0x5b7a74){var _0x5da2f0=function(_0x254e9c){while(--_0x254e9c){_0x4842bb['push'](_0x4842bb['shift']());}};_0x5da2f0(++_0x5b7a74);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
index e41c0c9..338608c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x18c3=['INTEGER','sequelize','exports'];(function(_0x5bf0d7,_0x102884){var _0x33ceb5=function(_0x261b30){while(--_0x261b30){_0x5bf0d7['push'](_0x5bf0d7['shift']());}};_0x33ceb5(++_0x102884);}(_0x18c3,0x136));var _0x318c=function(_0x106237,_0xa9e23a){_0x106237=_0x106237-0x0;var _0x4b15c5=_0x18c3[_0x106237];return _0x4b15c5;};'use strict';var Sequelize=require(_0x318c('0x0'));module[_0x318c('0x1')]={'penalty':{'type':Sequelize[_0x318c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3bd0=['sequelize','exports','INTEGER'];(function(_0x271c5b,_0x46d768){var _0x1d36eb=function(_0x3b46a8){while(--_0x3b46a8){_0x271c5b['push'](_0x271c5b['shift']());}};_0x1d36eb(++_0x46d768);}(_0x3bd0,0x93));var _0x03bd=function(_0x3a7722,_0x5d6f9f){_0x3a7722=_0x3a7722-0x0;var _0x2755aa=_0x3bd0[_0x3a7722];return _0x2755aa;};'use strict';var Sequelize=require(_0x03bd('0x0'));module[_0x03bd('0x1')]={'penalty':{'type':Sequelize[_0x03bd('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 409fac6..ecb3ec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2f0=['bluebird','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','define','UserChatQueue','user_has_chat_queues','lodash','../../config/logger','api','moment'];(function(_0x469d12,_0x2fdb73){var _0x42ca37=function(_0x542ace){while(--_0x542ace){_0x469d12['push'](_0x469d12['shift']());}};_0x42ca37(++_0x2fdb73);}(_0xe2f0,0x122));var _0x0e2f=function(_0x54fc1f,_0x1703c2){_0x54fc1f=_0x54fc1f-0x0;var _0x53f699=_0xe2f0[_0x54fc1f];return _0x53f699;};'use strict';var _=require(_0x0e2f('0x0'));var util=require('util');var logger=require(_0x0e2f('0x1'))(_0x0e2f('0x2'));var moment=require(_0x0e2f('0x3'));var BPromise=require(_0x0e2f('0x4'));var rp=require(_0x0e2f('0x5'));var fs=require('fs');var path=require(_0x0e2f('0x6'));var rimraf=require(_0x0e2f('0x7'));var config=require(_0x0e2f('0x8'));var attributes=require(_0x0e2f('0x9'));module[_0x0e2f('0xa')]=function(_0x52585b,_0x5711ac){return _0x52585b[_0x0e2f('0xb')](_0x0e2f('0xc'),attributes,{'tableName':_0x0e2f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4f9c=['request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','UserChatQueue','lodash','util','moment','bluebird'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x4f9c,0x1a0));var _0xc4f9=function(_0x406e46,_0x5799cb){_0x406e46=_0x406e46-0x0;var _0x4a3742=_0x4f9c[_0x406e46];return _0x4a3742;};'use strict';var _=require(_0xc4f9('0x0'));var util=require(_0xc4f9('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xc4f9('0x2'));var BPromise=require(_0xc4f9('0x3'));var rp=require(_0xc4f9('0x4'));var fs=require('fs');var path=require(_0xc4f9('0x5'));var rimraf=require(_0xc4f9('0x6'));var config=require(_0xc4f9('0x7'));var attributes=require(_0xc4f9('0x8'));module['exports']=function(_0x2c7bc7,_0x44dac5){return _0x2c7bc7['define'](_0xc4f9('0x9'),attributes,{'tableName':'user_has_chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4dda1ae..f90e827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc463=['debug','stringify','error','message','UserChatQueue,\x20%s,\x20%s','result','util','bluebird','randomstring','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent'];(function(_0x33bfd3,_0x688263){var _0x45d02c=function(_0x37a74f){while(--_0x37a74f){_0x33bfd3['push'](_0x33bfd3['shift']());}};_0x45d02c(++_0x688263);}(_0xc463,0x72));var _0x3c46=function(_0x544ded,_0x2cd874){_0x544ded=_0x544ded-0x0;var _0x598372=_0xc463[_0x544ded];return _0x598372;};'use strict';var _=require('lodash');var util=require(_0x3c46('0x0'));var moment=require('moment');var BPromise=require(_0x3c46('0x1'));var rs=require(_0x3c46('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3c46('0x3'))(_0x3c46('0x4'));var config=require(_0x3c46('0x5'));var jayson=require(_0x3c46('0x6'));var client=jayson[_0x3c46('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc397fc,_0x3590d1,_0x5cfc7d){return new BPromise(function(_0x3c5f41,_0x1477b4){return client[_0x3c46('0x8')](_0xc397fc,_0x5cfc7d)[_0x3c46('0x9')](function(_0x22c7b4){logger[_0x3c46('0xa')]('UserChatQueue,\x20%s,\x20%s',_0x3590d1,_0x3c46('0xb'));logger[_0x3c46('0xc')]('UserChatQueue,\x20%s,\x20%s,\x20%s',_0x3590d1,_0x3c46('0xb'),JSON[_0x3c46('0xd')](_0x22c7b4));if(_0x22c7b4['error']){if(_0x22c7b4[_0x3c46('0xe')]['code']===0x1f4){logger[_0x3c46('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x3590d1,_0x22c7b4[_0x3c46('0xe')][_0x3c46('0xf')]);return _0x1477b4(_0x22c7b4[_0x3c46('0xe')][_0x3c46('0xf')]);}logger[_0x3c46('0xe')]('UserChatQueue,\x20%s,\x20%s',_0x3590d1,_0x22c7b4['error'][_0x3c46('0xf')]);return _0x3c5f41(_0x22c7b4[_0x3c46('0xe')][_0x3c46('0xf')]);}else{logger['info'](_0x3c46('0x10'),_0x3590d1,_0x3c46('0xb'));_0x3c5f41(_0x22c7b4[_0x3c46('0x11')][_0x3c46('0xf')]);}})['catch'](function(_0x1d7e8c){logger['error'](_0x3c46('0x10'),_0x3590d1,_0x1d7e8c);_0x1477b4(_0x1d7e8c);});});}
\ No newline at end of file
+var _0x6c2c=['then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request'];(function(_0x14165d,_0x46dd72){var _0x48b655=function(_0x3c7167){while(--_0x3c7167){_0x14165d['push'](_0x14165d['shift']());}};_0x48b655(++_0x46dd72);}(_0x6c2c,0x16b));var _0xc6c2=function(_0x3b49ad,_0x224a65){_0x3b49ad=_0x3b49ad-0x0;var _0x1c212d=_0x6c2c[_0x3b49ad];return _0x1c212d;};'use strict';var _=require(_0xc6c2('0x0'));var util=require(_0xc6c2('0x1'));var moment=require(_0xc6c2('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc6c2('0x3'));var db=require(_0xc6c2('0x4'))['db'];var utils=require(_0xc6c2('0x5'));var logger=require(_0xc6c2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xc6c2('0x7'));var client=jayson[_0xc6c2('0x8')][_0xc6c2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x331e8d,_0x256265,_0x7587b6){return new BPromise(function(_0x403660,_0x307850){return client[_0xc6c2('0xa')](_0x331e8d,_0x7587b6)[_0xc6c2('0xb')](function(_0x3cf5a8){logger[_0xc6c2('0xc')](_0xc6c2('0xd'),_0x256265,_0xc6c2('0xe'));logger[_0xc6c2('0xf')](_0xc6c2('0x10'),_0x256265,_0xc6c2('0xe'),JSON[_0xc6c2('0x11')](_0x3cf5a8));if(_0x3cf5a8[_0xc6c2('0x12')]){if(_0x3cf5a8[_0xc6c2('0x12')]['code']===0x1f4){logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x3cf5a8[_0xc6c2('0x12')][_0xc6c2('0x13')]);return _0x307850(_0x3cf5a8[_0xc6c2('0x12')][_0xc6c2('0x13')]);}logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x3cf5a8['error'][_0xc6c2('0x13')]);return _0x403660(_0x3cf5a8['error'][_0xc6c2('0x13')]);}else{logger['info'](_0xc6c2('0xd'),_0x256265,_0xc6c2('0xe'));_0x403660(_0x3cf5a8[_0xc6c2('0x14')]['message']);}})[_0xc6c2('0x15')](function(_0x4819b7){logger[_0xc6c2('0x12')](_0xc6c2('0xd'),_0x256265,_0x4819b7);_0x307850(_0x4819b7);});});}
\ No newline at end of file
index 9dcbe48..c0bb587 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4622cc,_0x42cba0){var _0x3bebba=function(_0x333157){while(--_0x333157){_0x4622cc['push'](_0x4622cc['shift']());}};_0x3bebba(++_0x42cba0);}(_0xe706,0xa3));var _0x6e70=function(_0x24f9d9,_0x6b4d81){_0x24f9d9=_0x24f9d9-0x0;var _0x392b6c=_0xe706[_0x24f9d9];return _0x392b6c;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x515be2,_0x51b3ff){var _0x514679=function(_0x562c51){while(--_0x562c51){_0x515be2['push'](_0x515be2['shift']());}};_0x514679(++_0x51b3ff);}(_0xa9e0,0x123));var _0x0a9e=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0xa9e0[_0x484e36];return _0xafc85d;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index d470654..773343e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb508=['sequelize','exports','INTEGER','STRING'];(function(_0x5d30b4,_0x199248){var _0x1acfb8=function(_0x3544b2){while(--_0x3544b2){_0x5d30b4['push'](_0x5d30b4['shift']());}};_0x1acfb8(++_0x199248);}(_0xb508,0xa8));var _0x8b50=function(_0x123a90,_0x1bb8d6){_0x123a90=_0x123a90-0x0;var _0x583560=_0xb508[_0x123a90];return _0x583560;};'use strict';var Sequelize=require(_0x8b50('0x0'));module[_0x8b50('0x1')]={'penalty':{'type':Sequelize[_0x8b50('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x8b50('0x3')]}};
\ No newline at end of file
+var _0x5a53=['exports','INTEGER','STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5a53,0x8f));var _0x35a5=function(_0xed5edf,_0x4259b5){_0xed5edf=_0xed5edf-0x0;var _0x1727f4=_0x5a53[_0xed5edf];return _0x1727f4;};'use strict';var Sequelize=require(_0x35a5('0x0'));module[_0x35a5('0x1')]={'penalty':{'type':Sequelize[_0x35a5('0x2')],'defaultValue':0x0},'assigned':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'queue':{'type':Sequelize[_0x35a5('0x3')]}};
\ No newline at end of file
index bf19bb3..4e00fb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0476=['UserFaxQueue','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./userFaxQueue.attributes','exports','define'];(function(_0x38db27,_0x17bce4){var _0x443bd6=function(_0x4c0258){while(--_0x4c0258){_0x38db27['push'](_0x38db27['shift']());}};_0x443bd6(++_0x17bce4);}(_0x0476,0xfe));var _0x6047=function(_0xd93b26,_0x12bbf2){_0xd93b26=_0xd93b26-0x0;var _0x25f668=_0x0476[_0xd93b26];return _0x25f668;};'use strict';var _=require('lodash');var util=require(_0x6047('0x0'));var logger=require(_0x6047('0x1'))('api');var moment=require(_0x6047('0x2'));var BPromise=require(_0x6047('0x3'));var rp=require(_0x6047('0x4'));var fs=require('fs');var path=require(_0x6047('0x5'));var rimraf=require(_0x6047('0x6'));var config=require('../../config/environment');var attributes=require(_0x6047('0x7'));module[_0x6047('0x8')]=function(_0x19e161,_0x4a8e04){return _0x19e161[_0x6047('0x9')](_0x6047('0xa'),attributes,{'tableName':'user_has_fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x41f4=['user_has_fax_queues','lodash','util','moment','bluebird','request-promise','path','../../config/environment','./userFaxQueue.attributes','define'];(function(_0x262baa,_0x283058){var _0x4f2257=function(_0x2cd1c6){while(--_0x2cd1c6){_0x262baa['push'](_0x262baa['shift']());}};_0x4f2257(++_0x283058);}(_0x41f4,0x14b));var _0x441f=function(_0x3591ae,_0x4ce0cc){_0x3591ae=_0x3591ae-0x0;var _0x4ebb7e=_0x41f4[_0x3591ae];return _0x4ebb7e;};'use strict';var _=require(_0x441f('0x0'));var util=require(_0x441f('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x441f('0x2'));var BPromise=require(_0x441f('0x3'));var rp=require(_0x441f('0x4'));var fs=require('fs');var path=require(_0x441f('0x5'));var rimraf=require('rimraf');var config=require(_0x441f('0x6'));var attributes=require(_0x441f('0x7'));module['exports']=function(_0x18c980,_0x12734a){return _0x18c980[_0x441f('0x8')]('UserFaxQueue',attributes,{'tableName':_0x441f('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 43d82f3..0e5bba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ff=['error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x178bf7,_0x4e1f61){var _0x7080d6=function(_0xe253bb){while(--_0xe253bb){_0x178bf7['push'](_0x178bf7['shift']());}};_0x7080d6(++_0x4e1f61);}(_0x82ff,0xc1));var _0xf82f=function(_0xf4f34a,_0x44c29f){_0xf4f34a=_0xf4f34a-0x0;var _0x31316f=_0x82ff[_0xf4f34a];return _0x31316f;};'use strict';var _=require(_0xf82f('0x0'));var util=require(_0xf82f('0x1'));var moment=require(_0xf82f('0x2'));var BPromise=require(_0xf82f('0x3'));var rs=require(_0xf82f('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf82f('0x5'))['db'];var utils=require(_0xf82f('0x6'));var logger=require('../../config/logger')(_0xf82f('0x7'));var config=require('../../config/environment');var jayson=require(_0xf82f('0x8'));var client=jayson[_0xf82f('0x9')][_0xf82f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x155c1b,_0x4bd1c4,_0x13eed3){return new BPromise(function(_0x926d7b,_0xc0b934){return client['request'](_0x155c1b,_0x13eed3)['then'](function(_0x32e19d){logger[_0xf82f('0xb')](_0xf82f('0xc'),_0x4bd1c4,_0xf82f('0xd'));logger[_0xf82f('0xe')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x4bd1c4,_0xf82f('0xd'),JSON[_0xf82f('0xf')](_0x32e19d));if(_0x32e19d['error']){if(_0x32e19d['error'][_0xf82f('0x10')]===0x1f4){logger['error'](_0xf82f('0xc'),_0x4bd1c4,_0x32e19d[_0xf82f('0x11')][_0xf82f('0x12')]);return _0xc0b934(_0x32e19d[_0xf82f('0x11')][_0xf82f('0x12')]);}logger['error']('UserFaxQueue,\x20%s,\x20%s',_0x4bd1c4,_0x32e19d[_0xf82f('0x11')][_0xf82f('0x12')]);return _0x926d7b(_0x32e19d[_0xf82f('0x11')][_0xf82f('0x12')]);}else{logger['info'](_0xf82f('0xc'),_0x4bd1c4,_0xf82f('0xd'));_0x926d7b(_0x32e19d[_0xf82f('0x13')][_0xf82f('0x12')]);}})[_0xf82f('0x14')](function(_0x5d54a6){logger['error'](_0xf82f('0xc'),_0x4bd1c4,_0x5d54a6);_0xc0b934(_0x5d54a6);});});}
\ No newline at end of file
+var _0xddee=['error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','then','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5a6eb,_0x226bfb){var _0x962fd4=function(_0x6f28a1){while(--_0x6f28a1){_0x5a6eb['push'](_0x5a6eb['shift']());}};_0x962fd4(++_0x226bfb);}(_0xddee,0x1a8));var _0xedde=function(_0x5d860f,_0x467498){_0x5d860f=_0x5d860f-0x0;var _0x236490=_0xddee[_0x5d860f];return _0x236490;};'use strict';var _=require(_0xedde('0x0'));var util=require('util');var moment=require(_0xedde('0x1'));var BPromise=require(_0xedde('0x2'));var rs=require(_0xedde('0x3'));var fs=require('fs');var Redis=require(_0xedde('0x4'));var db=require(_0xedde('0x5'))['db'];var utils=require(_0xedde('0x6'));var logger=require('../../config/logger')(_0xedde('0x7'));var config=require(_0xedde('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xedde('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x418a4f,_0x318545,_0x2df004){return new BPromise(function(_0x5c104b,_0x5d091a){return client['request'](_0x418a4f,_0x2df004)[_0xedde('0xa')](function(_0x42a0ae){logger['info'](_0xedde('0xb'),_0x318545,_0xedde('0xc'));logger[_0xedde('0xd')](_0xedde('0xe'),_0x318545,_0xedde('0xc'),JSON[_0xedde('0xf')](_0x42a0ae));if(_0x42a0ae[_0xedde('0x10')]){if(_0x42a0ae[_0xedde('0x10')][_0xedde('0x11')]===0x1f4){logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);return _0x5d091a(_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);}logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);return _0x5c104b(_0x42a0ae[_0xedde('0x10')][_0xedde('0x12')]);}else{logger[_0xedde('0x13')]('UserFaxQueue,\x20%s,\x20%s',_0x318545,_0xedde('0xc'));_0x5c104b(_0x42a0ae[_0xedde('0x14')]['message']);}})[_0xedde('0x15')](function(_0x18bbf3){logger[_0xedde('0x10')](_0xedde('0xb'),_0x318545,_0x18bbf3);_0x5d091a(_0x18bbf3);});});}
\ No newline at end of file
index cbe6a69..90c8b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x32dfab,_0x461927){var _0x5e8bd3=function(_0x196e8e){while(--_0x196e8e){_0x32dfab['push'](_0x32dfab['shift']());}};_0x5e8bd3(++_0x461927);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x32981f,_0x903148){var _0x2d29bb=function(_0xab7417){while(--_0xab7417){_0x32981f['push'](_0x32981f['shift']());}};_0x2d29bb(++_0x903148);}(_0xe706,0xa3));var _0x6e70=function(_0x293fa7,_0x1bdf5c){_0x293fa7=_0x293fa7-0x0;var _0x3f54dc=_0xe706[_0x293fa7];return _0x3f54dc;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 50d8031..1447251 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf3c=['INTEGER','sequelize'];(function(_0x4109ca,_0x182541){var _0x3b2fdb=function(_0xef5963){while(--_0xef5963){_0x4109ca['push'](_0x4109ca['shift']());}};_0x3b2fdb(++_0x182541);}(_0xaf3c,0x109));var _0xcaf3=function(_0x11de95,_0x16df12){_0x11de95=_0x11de95-0x0;var _0x5627c8=_0xaf3c[_0x11de95];return _0x5627c8;};'use strict';var Sequelize=require(_0xcaf3('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xcaf3('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbc48=['sequelize','exports','INTEGER'];(function(_0x13b2eb,_0x4ac476){var _0xfc76ba=function(_0x3e15f){while(--_0x3e15f){_0x13b2eb['push'](_0x13b2eb['shift']());}};_0xfc76ba(++_0x4ac476);}(_0xbc48,0xd2));var _0x8bc4=function(_0x14ccb7,_0x19f4c3){_0x14ccb7=_0x14ccb7-0x0;var _0x502a9f=_0xbc48[_0x14ccb7];return _0x502a9f;};'use strict';var Sequelize=require(_0x8bc4('0x0'));module[_0x8bc4('0x1')]={'penalty':{'type':Sequelize[_0x8bc4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 3743208..df9fd5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x884d=['define','UserMailQueue','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','./userMailQueue.attributes','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x884d,0x9e));var _0xd884=function(_0x352e36,_0x6148d2){_0x352e36=_0x352e36-0x0;var _0xe68d7f=_0x884d[_0x352e36];return _0xe68d7f;};'use strict';var _=require(_0xd884('0x0'));var util=require(_0xd884('0x1'));var logger=require(_0xd884('0x2'))(_0xd884('0x3'));var moment=require(_0xd884('0x4'));var BPromise=require(_0xd884('0x5'));var rp=require(_0xd884('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd884('0x7'));var config=require('../../config/environment');var attributes=require(_0xd884('0x8'));module[_0xd884('0x9')]=function(_0x346f92,_0x187fd8){return _0x346f92[_0xd884('0xa')](_0xd884('0xb'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6154=['UserMailQueue','user_has_mail_queues','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','exports'];(function(_0x26f3bb,_0x123c73){var _0x59f67b=function(_0x370d85){while(--_0x370d85){_0x26f3bb['push'](_0x26f3bb['shift']());}};_0x59f67b(++_0x123c73);}(_0x6154,0x1d0));var _0x4615=function(_0x3a981e,_0x167074){_0x3a981e=_0x3a981e-0x0;var _0x38624a=_0x6154[_0x3a981e];return _0x38624a;};'use strict';var _=require('lodash');var util=require(_0x4615('0x0'));var logger=require(_0x4615('0x1'))(_0x4615('0x2'));var moment=require(_0x4615('0x3'));var BPromise=require(_0x4615('0x4'));var rp=require(_0x4615('0x5'));var fs=require('fs');var path=require(_0x4615('0x6'));var rimraf=require(_0x4615('0x7'));var config=require('../../config/environment');var attributes=require('./userMailQueue.attributes');module[_0x4615('0x8')]=function(_0x254356,_0x12df51){return _0x254356['define'](_0x4615('0x9'),attributes,{'tableName':_0x4615('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e832151..67bcb0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['stringify','error','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','request','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s'];(function(_0x4c51b7,_0x5f3b62){var _0x1bd56a=function(_0x22dce7){while(--_0x22dce7){_0x4c51b7['push'](_0x4c51b7['shift']());}};_0x1bd56a(++_0x5f3b62);}(_0x00bb,0x1d8));var _0xb00b=function(_0x411add,_0x1aed38){_0x411add=_0x411add-0x0;var _0x238242=_0x00bb[_0x411add];return _0x238242;};'use strict';var _=require(_0xb00b('0x0'));var util=require(_0xb00b('0x1'));var moment=require(_0xb00b('0x2'));var BPromise=require('bluebird');var rs=require(_0xb00b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb00b('0x4'))['db'];var utils=require(_0xb00b('0x5'));var logger=require('../../config/logger')(_0xb00b('0x6'));var config=require(_0xb00b('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x36e363,_0xf737d0,_0x41dfc9){return new BPromise(function(_0x37f07d,_0xfa4181){return client[_0xb00b('0x8')](_0x36e363,_0x41dfc9)['then'](function(_0x51d12b){logger[_0xb00b('0x9')](_0xb00b('0xa'),_0xf737d0,_0xb00b('0xb'));logger[_0xb00b('0xc')](_0xb00b('0xd'),_0xf737d0,'request\x20sent',JSON[_0xb00b('0xe')](_0x51d12b));if(_0x51d12b['error']){if(_0x51d12b['error']['code']===0x1f4){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);return _0xfa4181(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}logger['error'](_0xb00b('0xa'),_0xf737d0,_0x51d12b[_0xb00b('0xf')]['message']);return _0x37f07d(_0x51d12b[_0xb00b('0xf')][_0xb00b('0x10')]);}else{logger['info']('UserMailQueue,\x20%s,\x20%s',_0xf737d0,_0xb00b('0xb'));_0x37f07d(_0x51d12b['result']['message']);}})[_0xb00b('0x11')](function(_0x638443){logger[_0xb00b('0xf')](_0xb00b('0xa'),_0xf737d0,_0x638443);_0xfa4181(_0x638443);});});}
\ No newline at end of file
+var _0x9957=['message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x544cc6,_0x28a762){var _0x547ae5=function(_0x1f33d5){while(--_0x1f33d5){_0x544cc6['push'](_0x544cc6['shift']());}};_0x547ae5(++_0x28a762);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var moment=require(_0x7995('0x2'));var BPromise=require(_0x7995('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7995('0x4'));var db=require(_0x7995('0x5'))['db'];var utils=require(_0x7995('0x6'));var logger=require(_0x7995('0x7'))('rpc');var config=require(_0x7995('0x8'));var jayson=require(_0x7995('0x9'));var client=jayson[_0x7995('0xa')][_0x7995('0xb')]({'port':0x232a});function respondWithRpcPromise(_0xbda126,_0x326741,_0x4996ca){return new BPromise(function(_0x465276,_0x1cad37){return client['request'](_0xbda126,_0x4996ca)[_0x7995('0xc')](function(_0x3116fb){logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));logger[_0x7995('0x10')](_0x7995('0x11'),_0x326741,'request\x20sent',JSON[_0x7995('0x12')](_0x3116fb));if(_0x3116fb[_0x7995('0x13')]){if(_0x3116fb['error'][_0x7995('0x14')]===0x1f4){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x1cad37(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}logger['error']('UserMailQueue,\x20%s,\x20%s',_0x326741,_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);return _0x465276(_0x3116fb[_0x7995('0x13')][_0x7995('0x15')]);}else{logger[_0x7995('0xd')](_0x7995('0xe'),_0x326741,_0x7995('0xf'));_0x465276(_0x3116fb[_0x7995('0x16')]['message']);}})[_0x7995('0x17')](function(_0x565d97){logger[_0x7995('0x13')](_0x7995('0xe'),_0x326741,_0x565d97);_0x1cad37(_0x565d97);});});}
\ No newline at end of file
index 76f5515..3d7958f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x395d=['./userNotification.controller','post','sendUserNotification','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x3ebbee,_0x42bf47){var _0x7b9fdd=function(_0x32252a){while(--_0x32252a){_0x3ebbee['push'](_0x3ebbee['shift']());}};_0x7b9fdd(++_0x42bf47);}(_0x395d,0x18a));var _0xd395=function(_0x39fa14,_0x27d773){_0x39fa14=_0x39fa14-0x0;var _0x4352af=_0x395d[_0x39fa14];return _0x4352af;};'use strict';var multer=require(_0xd395('0x0'));var util=require('util');var path=require(_0xd395('0x1'));var timeout=require(_0xd395('0x2'));var express=require(_0xd395('0x3'));var router=express[_0xd395('0x4')]();var fs_extra=require(_0xd395('0x5'));var auth=require(_0xd395('0x6'));var interaction=require(_0xd395('0x7'));var config=require(_0xd395('0x8'));var controller=require(_0xd395('0x9'));router[_0xd395('0xa')]('/',auth['isAuthenticated'](),controller[_0xd395('0xb')]);module[_0xd395('0xc')]=router;
\ No newline at end of file
+var _0x924e=['sendUserNotification','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated'];(function(_0xf6a8d,_0x359266){var _0x1101d3=function(_0x3825e4){while(--_0x3825e4){_0xf6a8d['push'](_0xf6a8d['shift']());}};_0x1101d3(++_0x359266);}(_0x924e,0x113));var _0xe924=function(_0x2f6075,_0x432a21){_0x2f6075=_0x2f6075-0x0;var _0x5bd973=_0x924e[_0x2f6075];return _0x5bd973;};'use strict';var multer=require(_0xe924('0x0'));var util=require(_0xe924('0x1'));var path=require('path');var timeout=require(_0xe924('0x2'));var express=require(_0xe924('0x3'));var router=express[_0xe924('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe924('0x5'));var interaction=require(_0xe924('0x6'));var config=require(_0xe924('0x7'));var controller=require(_0xe924('0x8'));router[_0xe924('0x9')]('/',auth[_0xe924('0xa')](),controller[_0xe924('0xb')]);module[_0xe924('0xc')]=router;
\ No newline at end of file
index 7754cc3..6feb7af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72dd=['exports','TEXT','STRING','BOOLEAN','sequelize'];(function(_0x2d460c,_0x4f08c0){var _0xf6fc4c=function(_0x4fb81c){while(--_0x4fb81c){_0x2d460c['push'](_0x2d460c['shift']());}};_0xf6fc4c(++_0x4f08c0);}(_0x72dd,0x18a));var _0xd72d=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x72dd[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xd72d('0x0'));module[_0xd72d('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0xd72d('0x2')]},'recipientsDescription':{'type':Sequelize[_0xd72d('0x3')]},'beep':{'type':Sequelize[_0xd72d('0x4')]}};
\ No newline at end of file
+var _0x9897=['STRING','TEXT','BOOLEAN','sequelize','exports'];(function(_0x132d12,_0x2c9799){var _0x1c3163=function(_0x7d9136){while(--_0x7d9136){_0x132d12['push'](_0x132d12['shift']());}};_0x1c3163(++_0x2c9799);}(_0x9897,0x1c0));var _0x7989=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0x9897[_0x5037ab];return _0x512adb;};'use strict';var Sequelize=require(_0x7989('0x0'));module[_0x7989('0x1')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize[_0x7989('0x2')]},'recipientsId':{'type':Sequelize[_0x7989('0x3')]},'recipientsDescription':{'type':Sequelize[_0x7989('0x2')]},'beep':{'type':Sequelize[_0x7989('0x4')]}};
\ No newline at end of file
index 99f62ba..c658dcb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1969=['join','sequelize','UserNotification','create','forEach','recipient','userNotification:send','Template','findOne','html','TemplateId','render','catch','startCase','User','union','queue','replace','Queue','ids','push','flatten','getAgents','map','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./userNotification.socket','register','status','undefined','limit','count','offset','set','Content-Range','json','reject','save','destroy','then','end','stack','name','sendUserNotification','body','hasOwnProperty','text','Sequelize','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','chatqueue','faxqueue','openchannelqueue','smsqueue','voicequeue','whatsappqueue','team','some','model','toLowerCase','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','isEmpty','recipientsDescription','beep','SenderId','user','recipientsId','sortBy'];(function(_0x5ac758,_0x4e413b){var _0x27e6ff=function(_0x297575){while(--_0x297575){_0x5ac758['push'](_0x5ac758['shift']());}};_0x27e6ff(++_0x4e413b);}(_0x1969,0x7c));var _0x9196=function(_0x2c0409,_0x3c00a6){_0x2c0409=_0x2c0409-0x0;var _0x107b6b=_0x1969[_0x2c0409];return _0x107b6b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9196('0x0'));var zipdir=require(_0x9196('0x1'));var jsonpatch=require(_0x9196('0x2'));var rp=require(_0x9196('0x3'));var moment=require(_0x9196('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x9196('0x5'));var util=require('util');var path=require(_0x9196('0x6'));var sox=require(_0x9196('0x7'));var csv=require(_0x9196('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9196('0x9'));var _=require(_0x9196('0xa'));var squel=require(_0x9196('0xb'));var crypto=require(_0x9196('0xc'));var jsforce=require(_0x9196('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x9196('0x8'));var querystring=require(_0x9196('0xe'));var Papa=require(_0x9196('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x9196('0x10'));var as=require(_0x9196('0x11'));var hardwareService=require(_0x9196('0x12'));var logger=require(_0x9196('0x13'))(_0x9196('0x14'));var utils=require(_0x9196('0x15'));var config=require(_0x9196('0x16'));var licenseUtil=require(_0x9196('0x17'));var db=require(_0x9196('0x18'))['db'];config['redis']=_[_0x9196('0x19')](config[_0x9196('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x9196('0x1b'))(new Redis(config[_0x9196('0x1a')]));require(_0x9196('0x1c'))[_0x9196('0x1d')](socket);function respondWithStatusCode(_0x3e9843,_0x117bba){_0x117bba=_0x117bba||0xcc;return function(_0x81bcd6){if(_0x81bcd6){return _0x3e9843['sendStatus'](_0x117bba);}return _0x3e9843[_0x9196('0x1e')](_0x117bba)['end']();};}function respondWithResult(_0x356082,_0x54d76a){_0x54d76a=_0x54d76a||0xc8;return function(_0x1b171d){if(_0x1b171d){return _0x356082[_0x9196('0x1e')](_0x54d76a)['json'](_0x1b171d);}};}function respondWithFilteredResult(_0x2054e1,_0x38ec07){return function(_0x3e039f){if(_0x3e039f){var _0x5a292d=typeof _0x38ec07['offset']===_0x9196('0x1f')&&typeof _0x38ec07[_0x9196('0x20')]==='undefined';var _0x3850b7=_0x3e039f[_0x9196('0x21')];var _0x25f1de=_0x5a292d?0x0:_0x38ec07[_0x9196('0x22')];var _0x24a742=_0x5a292d?_0x3e039f[_0x9196('0x21')]:_0x38ec07[_0x9196('0x22')]+_0x38ec07[_0x9196('0x20')];var _0x1048fa;if(_0x24a742>=_0x3850b7){_0x24a742=_0x3850b7;_0x1048fa=0xc8;}else{_0x1048fa=0xce;}_0x2054e1['status'](_0x1048fa);return _0x2054e1[_0x9196('0x23')](_0x9196('0x24'),_0x25f1de+'-'+_0x24a742+'/'+_0x3850b7)[_0x9196('0x25')](_0x3e039f);}return null;};}function patchUpdates(_0x1b60dc){return function(_0x7beda){try{jsonpatch['apply'](_0x7beda,_0x1b60dc,!![]);}catch(_0x41dbd7){return BPromise[_0x9196('0x26')](_0x41dbd7);}return _0x7beda[_0x9196('0x27')]();};}function saveUpdates(_0x243962,_0xbf1a7){return function(_0x168578){if(_0x168578){return _0x168578['update'](_0x243962)['then'](function(_0xe4282){return _0xe4282;});}return null;};}function removeEntity(_0x556fd9,_0x384266){return function(_0x2313a2){if(_0x2313a2){return _0x2313a2[_0x9196('0x28')]()[_0x9196('0x29')](function(){_0x556fd9[_0x9196('0x1e')](0xcc)[_0x9196('0x2a')]();});}};}function handleEntityNotFound(_0x59d866,_0x462669){return function(_0x443178){if(!_0x443178){_0x59d866['sendStatus'](0x194);}return _0x443178;};}function handleError(_0x144c7f,_0x270be6){_0x270be6=_0x270be6||0x1f4;return function(_0x45c67d){logger['error'](_0x45c67d[_0x9196('0x2b')]);if(_0x45c67d[_0x9196('0x2c')]){delete _0x45c67d[_0x9196('0x2c')];}_0x144c7f[_0x9196('0x1e')](_0x270be6)['send'](_0x45c67d);};}exports[_0x9196('0x2d')]=function(_0x4f4fd5,_0x414115,_0x40f949){if(!_0x4f4fd5[_0x9196('0x2e')][_0x9196('0x2f')](_0x9196('0x30'))&&!_0x4f4fd5['body'][_0x9196('0x2f')]('TemplateId')){throw new db[(_0x9196('0x31'))][(_0x9196('0x32'))](_0x9196('0x33'));}else{if(_0x4f4fd5[_0x9196('0x2e')]['hasOwnProperty']('TemplateId')&&!_0x4f4fd5[_0x9196('0x2e')][_0x9196('0x2f')]('view')){throw new db[(_0x9196('0x31'))][(_0x9196('0x32'))](_0x9196('0x34'));}if(!_0x4f4fd5[_0x9196('0x2e')]['hasOwnProperty'](_0x9196('0x35'))){throw new db[(_0x9196('0x31'))]['ValidationError'](_0x9196('0x36'));}else{try{var _0x495901=JSON[_0x9196('0x37')](_0x4f4fd5[_0x9196('0x2e')][_0x9196('0x35')]);}catch(_0x25d480){logger['error'](_0x25d480);throw new db[(_0x9196('0x31'))][(_0x9196('0x32'))]('Invalid\x20\x27recipients\x27\x20object');}var _0x91399b=[_0x9196('0x38'),_0x9196('0x39'),'mailqueue',_0x9196('0x3a'),_0x9196('0x3b'),_0x9196('0x3c'),_0x9196('0x3d'),_0x9196('0x3e'),'user'];if(_[_0x9196('0x3f')](_0x495901,function(_0x5133e6){return!_['includes'](_0x91399b,_0x5133e6[_0x9196('0x40')][_0x9196('0x41')]());})){throw new db[(_0x9196('0x31'))][(_0x9196('0x32'))](_0x9196('0x42'));}}}var _0x428f16={};_0x428f16[_0x9196('0x43')]=_0x4f4fd5[_0x9196('0x2e')][_0x9196('0x2f')](_0x9196('0x43'))?_0x4f4fd5[_0x9196('0x2e')]['senderName']:_0x4f4fd5['user'][_0x9196('0x44')];_0x428f16['recipientsDescription']=_[_0x9196('0x45')](_0x4f4fd5[_0x9196('0x2e')]['recipientsDescription'])?null:_0x4f4fd5[_0x9196('0x2e')][_0x9196('0x46')];_0x428f16[_0x9196('0x47')]=_0x4f4fd5[_0x9196('0x2e')]['beep']||![];_0x428f16[_0x9196('0x48')]=_0x4f4fd5[_0x9196('0x49')]['id'];return getContent(_0x4f4fd5[_0x9196('0x2e')])[_0x9196('0x29')](function(_0x1b1ed6){_0x428f16['body']=_0x1b1ed6;return getRecipients(_0x495901);})[_0x9196('0x29')](function(_0x4bd8c0){_0x428f16[_0x9196('0x4a')]=_[_0x9196('0x4b')](_0x4bd8c0)[_0x9196('0x4c')](',');return db[_0x9196('0x4d')]['transaction'](function(_0x4984fd){return db[_0x9196('0x4e')][_0x9196('0x4f')](_0x428f16,{'raw':!![],'transaction':_0x4984fd})[_0x9196('0x29')](function(_0x49b873){var _0x39115c={'sender':_0x428f16['senderName'],'description':_0x428f16[_0x9196('0x46')],'content':_0x428f16[_0x9196('0x2e')],'beep':_0x428f16[_0x9196('0x47')]};_0x4bd8c0[_0x9196('0x50')](function(_0x394f69){_0x39115c[_0x9196('0x51')]=_0x394f69;socket['emit'](_0x9196('0x52'),_0x39115c);});return _0x49b873;});});})[_0x9196('0x29')](respondWithResult(_0x414115,0xc9))['catch'](handleError(_0x414115,null));};function getContent(_0x191b0d){return new BPromise(function(_0x8a0d5f,_0x257644){if(_0x191b0d[_0x9196('0x30')]){_0x8a0d5f(_0x191b0d[_0x9196('0x30')]);return;}return db[_0x9196('0x53')][_0x9196('0x54')]({'attributes':[_0x9196('0x55')],'where':{'id':_0x191b0d[_0x9196('0x56')]},'raw':!![]})[_0x9196('0x29')](function(_0x12df4d){if(!_0x12df4d)throw new db[(_0x9196('0x31'))][(_0x9196('0x32'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x298d53=Mustache[_0x9196('0x57')](_0x12df4d[_0x9196('0x55')],_0x191b0d['view']);_0x8a0d5f(_0x298d53);})[_0x9196('0x58')](function(_0x50a91b){_0x257644(_0x50a91b);});});}function getRecipients(_0xc6b407){return new BPromise(function(_0x2683e1,_0x59aeab){var _0x37421e=[];var _0x100d77=[];_0xc6b407[_0x9196('0x50')](function(_0x3138d3){var _0x46d030=_[_0x9196('0x59')](_0x3138d3[_0x9196('0x40')][_0x9196('0x41')]());if(_0x46d030===_0x9196('0x5a')){_0x37421e=_[_0x9196('0x5b')](_0x37421e,_0x3138d3['ids']);}else{if(_['includes'](_0x46d030,_0x9196('0x5c')))_0x46d030=_0x46d030[_0x9196('0x5d')]('queue',_0x9196('0x5e'));_0x3138d3[_0x9196('0x5f')][_0x9196('0x50')](function(_0x3e4008){_0x100d77[_0x9196('0x60')](getAgents(_0x46d030,_0x3e4008));});}});return BPromise['all'](_0x100d77)[_0x9196('0x29')](function(_0x454f29){_0x37421e=_[_0x9196('0x5b')](_0x37421e,_[_0x9196('0x61')](_0x454f29));_0x2683e1(_0x37421e);})['catch'](function(_0x505920){_0x59aeab(_0x505920);});});}function getAgents(_0xcb57d2,_0x454519){return new BPromise(function(_0x4846eb,_0x1ede0d){return db[_0xcb57d2][_0x9196('0x54')]({'where':{'id':_0x454519}})['then'](function(_0x4b21aa){return _0x4b21aa[_0x9196('0x62')]({'attributes':['id'],'raw':!![]})[_0x9196('0x29')](function(_0xe5f8d8){var _0x29e720=_[_0x9196('0x63')](_0xe5f8d8,'id');_0x4846eb(_0x29e720);});})[_0x9196('0x58')](function(_0x6aeda9){_0x1ede0d(_0x6aeda9);});});}
\ No newline at end of file
+var _0x80b1=['offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','then','end','stack','name','send','sendUserNotification','body','text','hasOwnProperty','TemplateId','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','ValidationError','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','error','Sequelize','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','openchannelqueue','smsqueue','voicequeue','team','user','some','includes','toLowerCase','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','create','forEach','recipient','emit','userNotification:send','catch','Template','findOne','html','Invalid\x20\x27TemplateId\x27\x20parameter','model','User','union','ids','queue','Queue','push','flatten','getAgents','map','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','ejs','fs-extra','squel','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','sendStatus','status','json'];(function(_0x197063,_0x44e5f8){var _0x5b5457=function(_0x135cca){while(--_0x135cca){_0x197063['push'](_0x197063['shift']());}};_0x5b5457(++_0x44e5f8);}(_0x80b1,0x167));var _0x180b=function(_0x5aba01,_0x11a9ed){_0x5aba01=_0x5aba01-0x0;var _0x1b6c10=_0x80b1[_0x5aba01];return _0x1b6c10;};'use strict';var emlformat=require(_0x180b('0x0'));var rimraf=require(_0x180b('0x1'));var zipdir=require(_0x180b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x180b('0x3'));var moment=require(_0x180b('0x4'));var BPromise=require(_0x180b('0x5'));var Mustache=require('mustache');var util=require(_0x180b('0x6'));var path=require('path');var sox=require(_0x180b('0x7'));var csv=require('to-csv');var ejs=require(_0x180b('0x8'));var fs=require('fs');var fs_extra=require(_0x180b('0x9'));var _=require('lodash');var squel=require(_0x180b('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x180b('0xb'));var toCsv=require(_0x180b('0xc'));var querystring=require(_0x180b('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x180b('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x180b('0xf'));var hardwareService=require(_0x180b('0x10'));var logger=require(_0x180b('0x11'))('api');var utils=require(_0x180b('0x12'));var config=require(_0x180b('0x13'));var licenseUtil=require(_0x180b('0x14'));var db=require(_0x180b('0x15'))['db'];config[_0x180b('0x16')]=_[_0x180b('0x17')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x180b('0x18'))(new Redis(config[_0x180b('0x16')]));require(_0x180b('0x19'))['register'](socket);function respondWithStatusCode(_0x4cf2ed,_0x5a316a){_0x5a316a=_0x5a316a||0xcc;return function(_0x1d20fc){if(_0x1d20fc){return _0x4cf2ed[_0x180b('0x1a')](_0x5a316a);}return _0x4cf2ed[_0x180b('0x1b')](_0x5a316a)['end']();};}function respondWithResult(_0x390948,_0x2ef1af){_0x2ef1af=_0x2ef1af||0xc8;return function(_0x3f8348){if(_0x3f8348){return _0x390948['status'](_0x2ef1af)[_0x180b('0x1c')](_0x3f8348);}};}function respondWithFilteredResult(_0x11477f,_0x31baf0){return function(_0x31f7b9){if(_0x31f7b9){var _0x4e21a2=typeof _0x31baf0[_0x180b('0x1d')]===_0x180b('0x1e')&&typeof _0x31baf0[_0x180b('0x1f')]===_0x180b('0x1e');var _0xc7de94=_0x31f7b9[_0x180b('0x20')];var _0x35f509=_0x4e21a2?0x0:_0x31baf0[_0x180b('0x1d')];var _0x5f0e5f=_0x4e21a2?_0x31f7b9['count']:_0x31baf0[_0x180b('0x1d')]+_0x31baf0[_0x180b('0x1f')];var _0x5f2edd;if(_0x5f0e5f>=_0xc7de94){_0x5f0e5f=_0xc7de94;_0x5f2edd=0xc8;}else{_0x5f2edd=0xce;}_0x11477f[_0x180b('0x1b')](_0x5f2edd);return _0x11477f['set'](_0x180b('0x21'),_0x35f509+'-'+_0x5f0e5f+'/'+_0xc7de94)['json'](_0x31f7b9);}return null;};}function patchUpdates(_0x1c4203){return function(_0x1eed53){try{jsonpatch[_0x180b('0x22')](_0x1eed53,_0x1c4203,!![]);}catch(_0x4979c3){return BPromise[_0x180b('0x23')](_0x4979c3);}return _0x1eed53['save']();};}function saveUpdates(_0x2de159,_0x1d805a){return function(_0xaa5508){if(_0xaa5508){return _0xaa5508[_0x180b('0x24')](_0x2de159)['then'](function(_0x3a24f3){return _0x3a24f3;});}return null;};}function removeEntity(_0x3db6f7,_0x52f7fe){return function(_0xc066d6){if(_0xc066d6){return _0xc066d6[_0x180b('0x25')]()[_0x180b('0x26')](function(){_0x3db6f7[_0x180b('0x1b')](0xcc)[_0x180b('0x27')]();});}};}function handleEntityNotFound(_0x447d40,_0x3d1222){return function(_0x4f2678){if(!_0x4f2678){_0x447d40['sendStatus'](0x194);}return _0x4f2678;};}function handleError(_0x57d6bd,_0x3ee571){_0x3ee571=_0x3ee571||0x1f4;return function(_0x4de28b){logger['error'](_0x4de28b[_0x180b('0x28')]);if(_0x4de28b[_0x180b('0x29')]){delete _0x4de28b[_0x180b('0x29')];}_0x57d6bd[_0x180b('0x1b')](_0x3ee571)[_0x180b('0x2a')](_0x4de28b);};}exports[_0x180b('0x2b')]=function(_0x1e463f,_0x4eab29,_0x449dd3){if(!_0x1e463f[_0x180b('0x2c')]['hasOwnProperty'](_0x180b('0x2d'))&&!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x2f'))){throw new db['Sequelize']['ValidationError'](_0x180b('0x30'));}else{if(_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x2f'))&&!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x31'))){throw new db['Sequelize'][(_0x180b('0x32'))](_0x180b('0x33'));}if(!_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')](_0x180b('0x34'))){throw new db['Sequelize'][(_0x180b('0x32'))](_0x180b('0x35'));}else{try{var _0xd233ee=JSON[_0x180b('0x36')](_0x1e463f['body'][_0x180b('0x34')]);}catch(_0x3bbeae){logger[_0x180b('0x37')](_0x3bbeae);throw new db[(_0x180b('0x38'))]['ValidationError'](_0x180b('0x39'));}var _0x2162aa=['chatqueue',_0x180b('0x3a'),_0x180b('0x3b'),_0x180b('0x3c'),_0x180b('0x3d'),_0x180b('0x3e'),'whatsappqueue',_0x180b('0x3f'),_0x180b('0x40')];if(_[_0x180b('0x41')](_0xd233ee,function(_0xb6a23a){return!_[_0x180b('0x42')](_0x2162aa,_0xb6a23a['model'][_0x180b('0x43')]());})){throw new db[(_0x180b('0x38'))][(_0x180b('0x32'))]('Invalid\x20model\x20in\x20\x27recipients\x27\x20object');}}}var _0x456ef0={};_0x456ef0[_0x180b('0x44')]=_0x1e463f[_0x180b('0x2c')][_0x180b('0x2e')]('senderName')?_0x1e463f[_0x180b('0x2c')][_0x180b('0x44')]:_0x1e463f[_0x180b('0x40')][_0x180b('0x45')];_0x456ef0[_0x180b('0x46')]=_[_0x180b('0x47')](_0x1e463f[_0x180b('0x2c')][_0x180b('0x46')])?null:_0x1e463f[_0x180b('0x2c')]['recipientsDescription'];_0x456ef0['beep']=_0x1e463f[_0x180b('0x2c')][_0x180b('0x48')]||![];_0x456ef0[_0x180b('0x49')]=_0x1e463f[_0x180b('0x40')]['id'];return getContent(_0x1e463f[_0x180b('0x2c')])[_0x180b('0x26')](function(_0x22a47f){_0x456ef0[_0x180b('0x2c')]=_0x22a47f;return getRecipients(_0xd233ee);})[_0x180b('0x26')](function(_0x3cb12a){_0x456ef0[_0x180b('0x4a')]=_[_0x180b('0x4b')](_0x3cb12a)[_0x180b('0x4c')](',');return db['sequelize']['transaction'](function(_0x7d4e8b){return db['UserNotification'][_0x180b('0x4d')](_0x456ef0,{'raw':!![],'transaction':_0x7d4e8b})[_0x180b('0x26')](function(_0x2f85ba){var _0x42b827={'sender':_0x456ef0['senderName'],'description':_0x456ef0[_0x180b('0x46')],'content':_0x456ef0[_0x180b('0x2c')],'beep':_0x456ef0[_0x180b('0x48')]};_0x3cb12a[_0x180b('0x4e')](function(_0x2f1266){_0x42b827[_0x180b('0x4f')]=_0x2f1266;socket[_0x180b('0x50')](_0x180b('0x51'),_0x42b827);});return _0x2f85ba;});});})[_0x180b('0x26')](respondWithResult(_0x4eab29,0xc9))[_0x180b('0x52')](handleError(_0x4eab29,null));};function getContent(_0x5b6d74){return new BPromise(function(_0x88e349,_0x3ca881){if(_0x5b6d74[_0x180b('0x2d')]){_0x88e349(_0x5b6d74[_0x180b('0x2d')]);return;}return db[_0x180b('0x53')][_0x180b('0x54')]({'attributes':[_0x180b('0x55')],'where':{'id':_0x5b6d74[_0x180b('0x2f')]},'raw':!![]})[_0x180b('0x26')](function(_0x1d2d63){if(!_0x1d2d63)throw new db[(_0x180b('0x38'))]['ValidationError'](_0x180b('0x56'));var _0x4a7b69=Mustache['render'](_0x1d2d63[_0x180b('0x55')],_0x5b6d74[_0x180b('0x31')]);_0x88e349(_0x4a7b69);})[_0x180b('0x52')](function(_0x100adf){_0x3ca881(_0x100adf);});});}function getRecipients(_0x36f12a){return new BPromise(function(_0x4884ca,_0x3f40c4){var _0x37278c=[];var _0x465845=[];_0x36f12a[_0x180b('0x4e')](function(_0x1d082a){var _0x257a1f=_['startCase'](_0x1d082a[_0x180b('0x57')]['toLowerCase']());if(_0x257a1f===_0x180b('0x58')){_0x37278c=_[_0x180b('0x59')](_0x37278c,_0x1d082a[_0x180b('0x5a')]);}else{if(_[_0x180b('0x42')](_0x257a1f,_0x180b('0x5b')))_0x257a1f=_0x257a1f['replace']('queue',_0x180b('0x5c'));_0x1d082a['ids'][_0x180b('0x4e')](function(_0x2d0aea){_0x465845[_0x180b('0x5d')](getAgents(_0x257a1f,_0x2d0aea));});}});return BPromise['all'](_0x465845)[_0x180b('0x26')](function(_0x2953d4){_0x37278c=_[_0x180b('0x59')](_0x37278c,_[_0x180b('0x5e')](_0x2953d4));_0x4884ca(_0x37278c);})[_0x180b('0x52')](function(_0x2988ad){_0x3f40c4(_0x2988ad);});});}function getAgents(_0x258795,_0x5c0614){return new BPromise(function(_0x52d812,_0x126088){return db[_0x258795][_0x180b('0x54')]({'where':{'id':_0x5c0614}})[_0x180b('0x26')](function(_0x45a446){return _0x45a446[_0x180b('0x5f')]({'attributes':['id'],'raw':!![]})['then'](function(_0x4b2153){var _0x3fe5ab=_[_0x180b('0x60')](_0x4b2153,'id');_0x52d812(_0x3fe5ab);});})['catch'](function(_0x4c6536){_0x126088(_0x4c6536);});});}
\ No newline at end of file
index 4fcdd4c..76a7ba6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x368e=['hasOwnProperty','hook','exports','events','save','remove'];(function(_0x42655e,_0xa29e96){var _0xabd052=function(_0x4bd2b6){while(--_0x4bd2b6){_0x42655e['push'](_0x42655e['shift']());}};_0xabd052(++_0xa29e96);}(_0x368e,0x15f));var _0xe368=function(_0x39bc44,_0x1d4373){_0x39bc44=_0x39bc44-0x0;var _0x2916d8=_0x368e[_0x39bc44];return _0x2916d8;};'use strict';var EventEmitter=require(_0xe368('0x0'));var UserNotification=require('../../mysqldb')['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe368('0x1'),'afterUpdate':'update','afterDestroy':_0xe368('0x2')};function emitEvent(_0x10e89c){return function(_0x1ae56d,_0x2eaa5c,_0x480dd8){UserNotificationEvents['emit'](_0x10e89c+':'+_0x1ae56d['id'],_0x1ae56d);UserNotificationEvents['emit'](_0x10e89c,_0x1ae56d);_0x480dd8(null);};}for(var e in events){if(events[_0xe368('0x3')](e)){var event=events[e];UserNotification[_0xe368('0x4')](e,emitEvent(event));}}module[_0xe368('0x5')]=UserNotificationEvents;
\ No newline at end of file
+var _0xa16b=['../../mysqldb','UserNotification','save','update','emit','hook','exports'];(function(_0x25d386,_0x108d0d){var _0x857f4a=function(_0x3eb98d){while(--_0x3eb98d){_0x25d386['push'](_0x25d386['shift']());}};_0x857f4a(++_0x108d0d);}(_0xa16b,0x181));var _0xba16=function(_0x3058b4,_0x5a42b2){_0x3058b4=_0x3058b4-0x0;var _0x449053=_0xa16b[_0x3058b4];return _0x449053;};'use strict';var EventEmitter=require('events');var UserNotification=require(_0xba16('0x0'))['db'][_0xba16('0x1')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xba16('0x2'),'afterUpdate':_0xba16('0x3'),'afterDestroy':'remove'};function emitEvent(_0x46d47f){return function(_0x21d043,_0x2154d6,_0x209734){UserNotificationEvents[_0xba16('0x4')](_0x46d47f+':'+_0x21d043['id'],_0x21d043);UserNotificationEvents['emit'](_0x46d47f,_0x21d043);_0x209734(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];UserNotification[_0xba16('0x5')](e,emitEvent(event));}}module[_0xba16('0x6')]=UserNotificationEvents;
\ No newline at end of file
index 17fda19..ed1138a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf948=['request-promise','path','rimraf','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird'];(function(_0x271a80,_0x268bac){var _0xf8233e=function(_0x825987){while(--_0x825987){_0x271a80['push'](_0x271a80['shift']());}};_0xf8233e(++_0x268bac);}(_0xf948,0x79));var _0x8f94=function(_0x535563,_0x5866f7){_0x535563=_0x535563-0x0;var _0x4cfa9b=_0xf948[_0x535563];return _0x4cfa9b;};'use strict';var _=require(_0x8f94('0x0'));var util=require(_0x8f94('0x1'));var logger=require(_0x8f94('0x2'))(_0x8f94('0x3'));var moment=require('moment');var BPromise=require(_0x8f94('0x4'));var rp=require(_0x8f94('0x5'));var fs=require('fs');var path=require(_0x8f94('0x6'));var rimraf=require(_0x8f94('0x7'));var config=require('../../config/environment');var attributes=require(_0x8f94('0x8'));module[_0x8f94('0x9')]=function(_0x85cf13,_0x2a89b5){return _0x85cf13[_0x8f94('0xa')](_0x8f94('0xb'),attributes,{'tableName':_0x8f94('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x8f94('0xd')});};
\ No newline at end of file
+var _0xe2e3=['path','rimraf','exports','define','userNotifications','utf8mb4','lodash','util','api'];(function(_0xe5300,_0x47ad43){var _0xdca19c=function(_0x54d2f2){while(--_0x54d2f2){_0xe5300['push'](_0xe5300['shift']());}};_0xdca19c(++_0x47ad43);}(_0xe2e3,0x114));var _0x3e2e=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xe2e3[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x3e2e('0x0'));var util=require(_0x3e2e('0x1'));var logger=require('../../config/logger')(_0x3e2e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3e2e('0x3'));var rimraf=require(_0x3e2e('0x4'));var config=require('../../config/environment');var attributes=require('./userNotification.attributes');module[_0x3e2e('0x5')]=function(_0x1f4be5,_0x34de6b){return _0x1f4be5[_0x3e2e('0x6')]('UserNotification',attributes,{'tableName':_0x3e2e('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3e2e('0x8'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 87b8103..f6211be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60ca=['register','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket'];(function(_0x31c04d,_0x59a5d5){var _0x3fd81b=function(_0x4c05dc){while(--_0x4c05dc){_0x31c04d['push'](_0x31c04d['shift']());}};_0x3fd81b(++_0x59a5d5);}(_0x60ca,0xad));var _0xa60c=function(_0x5aeb1b,_0x5d28e4){_0x5aeb1b=_0x5aeb1b-0x0;var _0x270575=_0x60ca[_0x5aeb1b];return _0x270575;};'use strict';var _=require(_0xa60c('0x0'));var util=require(_0xa60c('0x1'));var moment=require(_0xa60c('0x2'));var BPromise=require(_0xa60c('0x3'));var rs=require(_0xa60c('0x4'));var fs=require('fs');var Redis=require(_0xa60c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xa60c('0x6'));var logger=require('../../config/logger')(_0xa60c('0x7'));var config=require(_0xa60c('0x8'));var jayson=require(_0xa60c('0x9'));var client=jayson['client'][_0xa60c('0xa')]({'port':0x232a});config[_0xa60c('0xb')]=_[_0xa60c('0xc')](config[_0xa60c('0xb')],{'host':_0xa60c('0xd'),'port':0x18eb});var socket=require(_0xa60c('0xe'))(new Redis(config[_0xa60c('0xb')]));require(_0xa60c('0xf'))[_0xa60c('0x10')](socket);function respondWithRpcPromise(_0x1f9ed9,_0x3853eb,_0x135356){return new BPromise(function(_0x88600b,_0x101fdc){return client['request'](_0x1f9ed9,_0x135356)[_0xa60c('0x11')](function(_0x185acc){logger[_0xa60c('0x12')](_0xa60c('0x13'),_0x3853eb,_0xa60c('0x14'));logger['debug'](_0xa60c('0x15'),_0x3853eb,_0xa60c('0x14'),JSON[_0xa60c('0x16')](_0x185acc));if(_0x185acc[_0xa60c('0x17')]){if(_0x185acc[_0xa60c('0x17')]['code']===0x1f4){logger[_0xa60c('0x17')](_0xa60c('0x13'),_0x3853eb,_0x185acc['error']['message']);return _0x101fdc(_0x185acc['error'][_0xa60c('0x18')]);}logger[_0xa60c('0x17')](_0xa60c('0x13'),_0x3853eb,_0x185acc[_0xa60c('0x17')][_0xa60c('0x18')]);return _0x88600b(_0x185acc[_0xa60c('0x17')]['message']);}else{logger[_0xa60c('0x12')](_0xa60c('0x13'),_0x3853eb,_0xa60c('0x14'));_0x88600b(_0x185acc[_0xa60c('0x19')][_0xa60c('0x18')]);}})[_0xa60c('0x1a')](function(_0x49c770){logger['error'](_0xa60c('0x13'),_0x3853eb,_0x49c770);_0x101fdc(_0x49c770);});});}
\ No newline at end of file
+var _0x235d=['result','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','./userNotification.socket','register','request','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x235d,0xb7));var _0xd235=function(_0x4e11f,_0x1522cc){_0x4e11f=_0x4e11f-0x0;var _0x4240c3=_0x235d[_0x4e11f];return _0x4240c3;};'use strict';var _=require(_0xd235('0x0'));var util=require(_0xd235('0x1'));var moment=require('moment');var BPromise=require(_0xd235('0x2'));var rs=require(_0xd235('0x3'));var fs=require('fs');var Redis=require(_0xd235('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xd235('0x5'));var logger=require(_0xd235('0x6'))('rpc');var config=require(_0xd235('0x7'));var jayson=require(_0xd235('0x8'));var client=jayson[_0xd235('0x9')][_0xd235('0xa')]({'port':0x232a});config[_0xd235('0xb')]=_[_0xd235('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xd235('0xd'))[_0xd235('0xe')](socket);function respondWithRpcPromise(_0x39f4cf,_0x37619a,_0x29738c){return new BPromise(function(_0x4bcf6a,_0x2ff5b0){return client[_0xd235('0xf')](_0x39f4cf,_0x29738c)['then'](function(_0x5bfd35){logger[_0xd235('0x10')](_0xd235('0x11'),_0x37619a,_0xd235('0x12'));logger[_0xd235('0x13')](_0xd235('0x14'),_0x37619a,'request\x20sent',JSON[_0xd235('0x15')](_0x5bfd35));if(_0x5bfd35['error']){if(_0x5bfd35[_0xd235('0x16')][_0xd235('0x17')]===0x1f4){logger['error'](_0xd235('0x11'),_0x37619a,_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);return _0x2ff5b0(_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);}logger[_0xd235('0x16')](_0xd235('0x11'),_0x37619a,_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);return _0x4bcf6a(_0x5bfd35[_0xd235('0x16')][_0xd235('0x18')]);}else{logger[_0xd235('0x10')]('UserNotification,\x20%s,\x20%s',_0x37619a,'request\x20sent');_0x4bcf6a(_0x5bfd35[_0xd235('0x19')][_0xd235('0x18')]);}})['catch'](function(_0x5839b0){logger[_0xd235('0x16')](_0xd235('0x11'),_0x37619a,_0x5839b0);_0x2ff5b0(_0x5839b0);});});}
\ No newline at end of file
index 02674de..71eb8f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b0=['remove','update','userNotification:'];(function(_0x84ef1,_0x4066de){var _0x35348e=function(_0x28e5e6){while(--_0x28e5e6){_0x84ef1['push'](_0x84ef1['shift']());}};_0x35348e(++_0x4066de);}(_0x26b0,0x1b3));var _0x026b=function(_0x260f23,_0x2d90ee){_0x260f23=_0x260f23-0x0;var _0x222dc1=_0x26b0[_0x260f23];return _0x222dc1;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=['save',_0x026b('0x0'),_0x026b('0x1')];function createListener(_0x26f2d1,_0x527af8){return function(_0x1f272a){_0x527af8['emit'](_0x26f2d1,_0x1f272a);};}function removeListener(_0x57689a,_0x2a941c){return function(){UserNotificationEvents['removeListener'](_0x57689a,_0x2a941c);};}exports['register']=function(_0x5539de){for(var _0x383620=0x0,_0x8e3618=events['length'];_0x383620<_0x8e3618;_0x383620++){var _0x2bd5ed=events[_0x383620];var _0x34f5c6=createListener(_0x026b('0x2')+_0x2bd5ed,_0x5539de);UserNotificationEvents['on'](_0x2bd5ed,_0x34f5c6);}};
\ No newline at end of file
+var _0xa93c=['length','userNotification:','./userNotification.events','save','remove','update','emit','register'];(function(_0x62f1a2,_0x7d84cb){var _0x137fb0=function(_0xdea36a){while(--_0xdea36a){_0x62f1a2['push'](_0x62f1a2['shift']());}};_0x137fb0(++_0x7d84cb);}(_0xa93c,0x1b2));var _0xca93=function(_0x270adf,_0x1daaa3){_0x270adf=_0x270adf-0x0;var _0x29eda9=_0xa93c[_0x270adf];return _0x29eda9;};'use strict';var UserNotificationEvents=require(_0xca93('0x0'));var events=[_0xca93('0x1'),_0xca93('0x2'),_0xca93('0x3')];function createListener(_0xd01418,_0x425fdb){return function(_0x25224f){_0x425fdb[_0xca93('0x4')](_0xd01418,_0x25224f);};}function removeListener(_0x3708a5,_0x1f9b96){return function(){UserNotificationEvents['removeListener'](_0x3708a5,_0x1f9b96);};}exports[_0xca93('0x5')]=function(_0x2e64ce){for(var _0x49d7a3=0x0,_0x4dbb16=events[_0xca93('0x6')];_0x49d7a3<_0x4dbb16;_0x49d7a3++){var _0x270e74=events[_0x49d7a3];var _0x40760c=createListener(_0xca93('0x7')+_0x270e74,_0x2e64ce);UserNotificationEvents['on'](_0x270e74,_0x40760c);}};
\ No newline at end of file
index 54314c6..efa1eaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x26a626,_0x9f79a3){var _0x430f65=function(_0x4d1a69){while(--_0x4d1a69){_0x26a626['push'](_0x26a626['shift']());}};_0x430f65(++_0x9f79a3);}(_0x70e0,0x17b));var _0x070e=function(_0x4dbfcb,_0x5e0cae){_0x4dbfcb=_0x4dbfcb-0x0;var _0xca3789=_0x70e0[_0x4dbfcb];return _0xca3789;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x4ded50,_0x4a6af3){var _0xa92135=function(_0xe09b41){while(--_0xe09b41){_0x4ded50['push'](_0x4ded50['shift']());}};_0xa92135(++_0x4a6af3);}(_0xa9e0,0x123));var _0x0a9e=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0xa9e0[_0x6131cd];return _0x47e916;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
index 1c059b5..662b4e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8303=['sequelize','exports'];(function(_0x452817,_0x2c6d5f){var _0x104ae3=function(_0x56e7a1){while(--_0x56e7a1){_0x452817['push'](_0x452817['shift']());}};_0x104ae3(++_0x2c6d5f);}(_0x8303,0x176));var _0x3830=function(_0x34229c,_0x44df84){_0x34229c=_0x34229c-0x0;var _0x7105d=_0x8303[_0x34229c];return _0x7105d;};'use strict';var Sequelize=require(_0x3830('0x0'));module[_0x3830('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x523a=['exports','INTEGER','sequelize'];(function(_0x8dc2b2,_0x50910f){var _0x6a3346=function(_0x28825d){while(--_0x28825d){_0x8dc2b2['push'](_0x8dc2b2['shift']());}};_0x6a3346(++_0x50910f);}(_0x523a,0x7a));var _0xa523=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0x523a[_0xf50820];return _0x2a9b10;};'use strict';var Sequelize=require(_0xa523('0x0'));module[_0xa523('0x1')]={'penalty':{'type':Sequelize[_0xa523('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 37a19ab..4091ce0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3ce=['util','api','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash'];(function(_0x33b335,_0x3f422a){var _0x12f19d=function(_0x394718){while(--_0x394718){_0x33b335['push'](_0x33b335['shift']());}};_0x12f19d(++_0x3f422a);}(_0xa3ce,0xa8));var _0xea3c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa3ce[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xea3c('0x0'));var util=require(_0xea3c('0x1'));var logger=require('../../config/logger')(_0xea3c('0x2'));var moment=require('moment');var BPromise=require(_0xea3c('0x3'));var rp=require(_0xea3c('0x4'));var fs=require('fs');var path=require(_0xea3c('0x5'));var rimraf=require(_0xea3c('0x6'));var config=require(_0xea3c('0x7'));var attributes=require(_0xea3c('0x8'));module[_0xea3c('0x9')]=function(_0x1b453d,_0x4e2259){return _0x1b453d[_0xea3c('0xa')](_0xea3c('0xb'),attributes,{'tableName':_0xea3c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x52ba=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./userOpenchannelQueue.attributes','define','user_has_openchannel_queues','lodash','api'];(function(_0x3c71ae,_0x3dd3a4){var _0x151b4e=function(_0x4e6c8a){while(--_0x4e6c8a){_0x3c71ae['push'](_0x3c71ae['shift']());}};_0x151b4e(++_0x3dd3a4);}(_0x52ba,0x18a));var _0xa52b=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x52ba[_0x21a9d9];return _0x46adce;};'use strict';var _=require(_0xa52b('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa52b('0x1'));var moment=require(_0xa52b('0x2'));var BPromise=require(_0xa52b('0x3'));var rp=require(_0xa52b('0x4'));var fs=require('fs');var path=require(_0xa52b('0x5'));var rimraf=require(_0xa52b('0x6'));var config=require(_0xa52b('0x7'));var attributes=require(_0xa52b('0x8'));module['exports']=function(_0x3f7016,_0xb1964e){return _0x3f7016[_0xa52b('0x9')]('UserOpenchannelQueue',attributes,{'tableName':_0xa52b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7044d83..b19f9d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17b2=['debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','catch','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','request\x20sent'];(function(_0x113855,_0x2bd31b){var _0x229a37=function(_0x7ddb1f){while(--_0x7ddb1f){_0x113855['push'](_0x113855['shift']());}};_0x229a37(++_0x2bd31b);}(_0x17b2,0x1d7));var _0x217b=function(_0x43d852,_0x4538ef){_0x43d852=_0x43d852-0x0;var _0x2c4b73=_0x17b2[_0x43d852];return _0x2c4b73;};'use strict';var _=require(_0x217b('0x0'));var util=require(_0x217b('0x1'));var moment=require(_0x217b('0x2'));var BPromise=require('bluebird');var rs=require(_0x217b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x217b('0x4'));var logger=require(_0x217b('0x5'))(_0x217b('0x6'));var config=require('../../config/environment');var jayson=require(_0x217b('0x7'));var client=jayson[_0x217b('0x8')][_0x217b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5bf50e,_0x21c220,_0x174c54){return new BPromise(function(_0x9fef24,_0x33ab26){return client['request'](_0x5bf50e,_0x174c54)[_0x217b('0xa')](function(_0x4c8b7c){logger[_0x217b('0xb')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x21c220,_0x217b('0xc'));logger[_0x217b('0xd')](_0x217b('0xe'),_0x21c220,'request\x20sent',JSON[_0x217b('0xf')](_0x4c8b7c));if(_0x4c8b7c[_0x217b('0x10')]){if(_0x4c8b7c[_0x217b('0x10')][_0x217b('0x11')]===0x1f4){logger[_0x217b('0x10')](_0x217b('0x12'),_0x21c220,_0x4c8b7c[_0x217b('0x10')]['message']);return _0x33ab26(_0x4c8b7c[_0x217b('0x10')][_0x217b('0x13')]);}logger[_0x217b('0x10')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x21c220,_0x4c8b7c[_0x217b('0x10')]['message']);return _0x9fef24(_0x4c8b7c['error']['message']);}else{logger[_0x217b('0xb')](_0x217b('0x12'),_0x21c220,'request\x20sent');_0x9fef24(_0x4c8b7c[_0x217b('0x14')][_0x217b('0x13')]);}})[_0x217b('0x15')](function(_0x5e061e){logger[_0x217b('0x10')](_0x217b('0x12'),_0x21c220,_0x5e061e);_0x33ab26(_0x5e061e);});});}
\ No newline at end of file
+var _0xf38b=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserOpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','ioredis'];(function(_0x34a0b2,_0xc75f81){var _0x1d62fd=function(_0x3431e4){while(--_0x3431e4){_0x34a0b2['push'](_0x34a0b2['shift']());}};_0x1d62fd(++_0xc75f81);}(_0xf38b,0x133));var _0xbf38=function(_0x22a2d9,_0x4b375b){_0x22a2d9=_0x22a2d9-0x0;var _0x574a5b=_0xf38b[_0x22a2d9];return _0x574a5b;};'use strict';var _=require(_0xbf38('0x0'));var util=require(_0xbf38('0x1'));var moment=require('moment');var BPromise=require(_0xbf38('0x2'));var rs=require(_0xbf38('0x3'));var fs=require('fs');var Redis=require(_0xbf38('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xbf38('0x5'))(_0xbf38('0x6'));var config=require(_0xbf38('0x7'));var jayson=require(_0xbf38('0x8'));var client=jayson[_0xbf38('0x9')][_0xbf38('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3385ff,_0x4c2632,_0x2a09e9){return new BPromise(function(_0x1b7780,_0xfbcdf9){return client[_0xbf38('0xb')](_0x3385ff,_0x2a09e9)[_0xbf38('0xc')](function(_0x242690){logger[_0xbf38('0xd')](_0xbf38('0xe'),_0x4c2632,_0xbf38('0xf'));logger[_0xbf38('0x10')](_0xbf38('0x11'),_0x4c2632,_0xbf38('0xf'),JSON[_0xbf38('0x12')](_0x242690));if(_0x242690[_0xbf38('0x13')]){if(_0x242690[_0xbf38('0x13')][_0xbf38('0x14')]===0x1f4){logger['error'](_0xbf38('0xe'),_0x4c2632,_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);return _0xfbcdf9(_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);}logger['error'](_0xbf38('0xe'),_0x4c2632,_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);return _0x1b7780(_0x242690[_0xbf38('0x13')][_0xbf38('0x15')]);}else{logger[_0xbf38('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4c2632,_0xbf38('0xf'));_0x1b7780(_0x242690[_0xbf38('0x16')][_0xbf38('0x15')]);}})[_0xbf38('0x17')](function(_0x1ffa02){logger[_0xbf38('0x13')](_0xbf38('0xe'),_0x4c2632,_0x1ffa02);_0xfbcdf9(_0x1ffa02);});});}
\ No newline at end of file
index db69878..3e967ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc77d=['/:id/resources','getResources','create','/:id/clone','clone','post','/:id/sections','addSections','addResources','update','destroy','delete','removeSections','removeResources','exports','multer','connect-timeout','express','Router','./userProfile.controller','get','isAuthenticated','/describe','describe','/:id','getSections'];(function(_0x1ee351,_0x54261b){var _0x245aaf=function(_0x3e4b65){while(--_0x3e4b65){_0x1ee351['push'](_0x1ee351['shift']());}};_0x245aaf(++_0x54261b);}(_0xc77d,0x1af));var _0xdc77=function(_0x3cdcfc,_0x5c259b){_0x3cdcfc=_0x3cdcfc-0x0;var _0x4b7c43=_0xc77d[_0x3cdcfc];return _0x4b7c43;};'use strict';var multer=require(_0xdc77('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xdc77('0x1'));var express=require(_0xdc77('0x2'));var router=express[_0xdc77('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdc77('0x4'));router[_0xdc77('0x5')]('/',auth[_0xdc77('0x6')](),controller['index']);router[_0xdc77('0x5')](_0xdc77('0x7'),auth['isAuthenticated'](),controller[_0xdc77('0x8')]);router['get'](_0xdc77('0x9'),auth['isAuthenticated'](),controller['show']);router['get']('/:id/sections',auth['isAuthenticated'](),controller[_0xdc77('0xa')]);router[_0xdc77('0x5')](_0xdc77('0xb'),auth[_0xdc77('0x6')](),controller[_0xdc77('0xc')]);router['post']('/',auth['isAuthenticated'](),controller[_0xdc77('0xd')]);router['post'](_0xdc77('0xe'),auth[_0xdc77('0x6')](),controller[_0xdc77('0xf')]);router[_0xdc77('0x10')](_0xdc77('0x11'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x12')]);router[_0xdc77('0x10')](_0xdc77('0xb'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x13')]);router['put'](_0xdc77('0x9'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x14')]);router['delete'](_0xdc77('0x9'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x15')]);router[_0xdc77('0x16')](_0xdc77('0x11'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x17')]);router[_0xdc77('0x16')](_0xdc77('0xb'),auth[_0xdc77('0x6')](),controller[_0xdc77('0x18')]);module[_0xdc77('0x19')]=router;
\ No newline at end of file
+var _0x7a23=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/sections','getSections','/:id/resources','getResources','post','/:id/clone','clone','addSections','addResources','put','update','delete','destroy','removeResources','exports','util','path','connect-timeout','express'];(function(_0x4c2808,_0x10765a){var _0x54f96a=function(_0x5825ec){while(--_0x5825ec){_0x4c2808['push'](_0x4c2808['shift']());}};_0x54f96a(++_0x10765a);}(_0x7a23,0x1a0));var _0x37a2=function(_0x94a875,_0x536eef){_0x94a875=_0x94a875-0x0;var _0x287a2c=_0x7a23[_0x94a875];return _0x287a2c;};'use strict';var multer=require('multer');var util=require(_0x37a2('0x0'));var path=require(_0x37a2('0x1'));var timeout=require(_0x37a2('0x2'));var express=require(_0x37a2('0x3'));var router=express[_0x37a2('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x37a2('0x5'));var interaction=require(_0x37a2('0x6'));var config=require(_0x37a2('0x7'));var controller=require(_0x37a2('0x8'));router[_0x37a2('0x9')]('/',auth[_0x37a2('0xa')](),controller[_0x37a2('0xb')]);router[_0x37a2('0x9')](_0x37a2('0xc'),auth['isAuthenticated'](),controller['describe']);router[_0x37a2('0x9')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0xe')]);router[_0x37a2('0x9')](_0x37a2('0xf'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x10')]);router['get'](_0x37a2('0x11'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x12')]);router[_0x37a2('0x13')]('/',auth[_0x37a2('0xa')](),controller['create']);router['post'](_0x37a2('0x14'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x15')]);router[_0x37a2('0x13')]('/:id/sections',auth[_0x37a2('0xa')](),controller[_0x37a2('0x16')]);router[_0x37a2('0x13')]('/:id/resources',auth[_0x37a2('0xa')](),controller[_0x37a2('0x17')]);router[_0x37a2('0x18')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x19')]);router[_0x37a2('0x1a')](_0x37a2('0xd'),auth[_0x37a2('0xa')](),controller[_0x37a2('0x1b')]);router[_0x37a2('0x1a')](_0x37a2('0xf'),auth[_0x37a2('0xa')](),controller['removeSections']);router[_0x37a2('0x1a')](_0x37a2('0x11'),auth['isAuthenticated'](),controller[_0x37a2('0x1c')]);module[_0x37a2('0x1d')]=router;
\ No newline at end of file
index a693825..f6e6a85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6463=['join','getDataValue','crudPermissions','BOOLEAN','sequelize','STRING'];(function(_0x512d29,_0x5acca7){var _0x3666a9=function(_0x39fb9c){while(--_0x39fb9c){_0x512d29['push'](_0x512d29['shift']());}};_0x3666a9(++_0x5acca7);}(_0x6463,0x6a));var _0x3646=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6463[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3646('0x0'));module['exports']={'name':{'type':Sequelize[_0x3646('0x1')],'allowNull':![],'unique':'name'},'crudPermissions':{'type':Sequelize[_0x3646('0x1')],'set':function(_0x508a58){this['setDataValue']('crudPermissions',_0x508a58?_0x508a58[_0x3646('0x2')](''):[]);},'get':function(){return this[_0x3646('0x3')](_0x3646('0x4'))?this[_0x3646('0x3')](_0x3646('0x4'))['split'](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x3646('0x1')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x3646('0x5')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x3646('0x5')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x3646('0x5')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x3646('0x5')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x4808=['BOOLEAN','exports','name','setDataValue','crudPermissions','getDataValue','split','STRING'];(function(_0x51d129,_0x175d7d){var _0x44c377=function(_0x5ee454){while(--_0x5ee454){_0x51d129['push'](_0x51d129['shift']());}};_0x44c377(++_0x175d7d);}(_0x4808,0x1f1));var _0x8480=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0x4808[_0x550d12];return _0x12103d;};'use strict';var Sequelize=require('sequelize');module[_0x8480('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x8480('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x202f2a){this[_0x8480('0x2')](_0x8480('0x3'),_0x202f2a?_0x202f2a['join'](''):[]);},'get':function(){return this[_0x8480('0x4')](_0x8480('0x3'))?this[_0x8480('0x4')](_0x8480('0x3'))[_0x8480('0x5')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x8480('0x6')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x8480('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x8480('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 4e0f81d..addbb2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc9c=['defaults','redis','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','map','UserProfile','rawAttributes','fieldName','key','model','keys','filters','intersection','fields','query','attributes','length','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','catch','show','params','find','create','body','clone','get','omit','updatedAt','crudPermissions','createdAt','sequelize','transaction','findAll','each','autoAssociation','UserProfileResource','userProfileId','Resources','UserProfileSection','describe','addSections','sectionId','push','removeSections','ids','getSections','enabled','includes','isEmpty','subsections','forEach','resourceId','Plugin','addResources','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x860520,_0x20520a){var _0x22ce80=function(_0x54ccbf){while(--_0x54ccbf){_0x860520['push'](_0x860520['shift']());}};_0x22ce80(++_0x20520a);}(_0xdc9c,0x13f));var _0xcdc9=function(_0x52e86a,_0x4f247a){_0x52e86a=_0x52e86a-0x0;var _0x36019f=_0xdc9c[_0x52e86a];return _0x36019f;};'use strict';var emlformat=require(_0xcdc9('0x0'));var rimraf=require(_0xcdc9('0x1'));var zipdir=require(_0xcdc9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xcdc9('0x3'));var BPromise=require(_0xcdc9('0x4'));var Mustache=require(_0xcdc9('0x5'));var util=require('util');var path=require(_0xcdc9('0x6'));var sox=require(_0xcdc9('0x7'));var csv=require(_0xcdc9('0x8'));var ejs=require(_0xcdc9('0x9'));var fs=require('fs');var fs_extra=require(_0xcdc9('0xa'));var _=require(_0xcdc9('0xb'));var squel=require(_0xcdc9('0xc'));var crypto=require(_0xcdc9('0xd'));var jsforce=require(_0xcdc9('0xe'));var deskjs=require(_0xcdc9('0xf'));var toCsv=require(_0xcdc9('0x8'));var querystring=require(_0xcdc9('0x10'));var Papa=require('papaparse');var Redis=require(_0xcdc9('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xcdc9('0x12'));var as=require(_0xcdc9('0x13'));var hardwareService=require(_0xcdc9('0x14'));var logger=require(_0xcdc9('0x15'))(_0xcdc9('0x16'));var utils=require('../../config/utils');var config=require(_0xcdc9('0x17'));var licenseUtil=require(_0xcdc9('0x18'));var db=require(_0xcdc9('0x19'))['db'];config['redis']=_[_0xcdc9('0x1a')](config[_0xcdc9('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xcdc9('0x1c'))(new Redis(config['redis']));require(_0xcdc9('0x1d'))[_0xcdc9('0x1e')](socket);function respondWithStatusCode(_0x2e31be,_0x28f482){_0x28f482=_0x28f482||0xcc;return function(_0x4d4269){if(_0x4d4269){return _0x2e31be[_0xcdc9('0x1f')](_0x28f482);}return _0x2e31be[_0xcdc9('0x20')](_0x28f482)[_0xcdc9('0x21')]();};}function respondWithResult(_0xa497e7,_0x5b8d9f){_0x5b8d9f=_0x5b8d9f||0xc8;return function(_0x39e2bd){if(_0x39e2bd){return _0xa497e7[_0xcdc9('0x20')](_0x5b8d9f)['json'](_0x39e2bd);}};}function respondWithFilteredResult(_0x2cf1b6,_0x21839d){return function(_0x4b726f){if(_0x4b726f){var _0x45e9e8=typeof _0x21839d[_0xcdc9('0x22')]==='undefined'&&typeof _0x21839d[_0xcdc9('0x23')]===_0xcdc9('0x24');var _0x45e5c5=_0x4b726f[_0xcdc9('0x25')];var _0x463dc2=_0x45e9e8?0x0:_0x21839d[_0xcdc9('0x22')];var _0x39e9e5=_0x45e9e8?_0x4b726f[_0xcdc9('0x25')]:_0x21839d['offset']+_0x21839d[_0xcdc9('0x23')];var _0x295e9f;if(_0x39e9e5>=_0x45e5c5){_0x39e9e5=_0x45e5c5;_0x295e9f=0xc8;}else{_0x295e9f=0xce;}_0x2cf1b6[_0xcdc9('0x20')](_0x295e9f);return _0x2cf1b6['set'](_0xcdc9('0x26'),_0x463dc2+'-'+_0x39e9e5+'/'+_0x45e5c5)['json'](_0x4b726f);}return null;};}function patchUpdates(_0x146327){return function(_0x5ebdf0){try{jsonpatch[_0xcdc9('0x27')](_0x5ebdf0,_0x146327,!![]);}catch(_0x2221d4){return BPromise[_0xcdc9('0x28')](_0x2221d4);}return _0x5ebdf0[_0xcdc9('0x29')]();};}function saveUpdates(_0x4f7ffe,_0x1439c0){return function(_0x35fefe){if(_0x35fefe){return _0x35fefe[_0xcdc9('0x2a')](_0x4f7ffe)[_0xcdc9('0x2b')](function(_0x21396b){return _0x21396b;});}return null;};}function removeEntity(_0x5b7992,_0x2ba68b){return function(_0x582d48){if(_0x582d48){return _0x582d48[_0xcdc9('0x2c')]()[_0xcdc9('0x2b')](function(){_0x5b7992[_0xcdc9('0x20')](0xcc)[_0xcdc9('0x21')]();});}};}function handleEntityNotFound(_0x4e2936,_0x29bd29){return function(_0x372a39){if(!_0x372a39){_0x4e2936[_0xcdc9('0x1f')](0x194);}return _0x372a39;};}function handleError(_0x5e6a2d,_0x2dd2ce){_0x2dd2ce=_0x2dd2ce||0x1f4;return function(_0x2fb2bb){logger[_0xcdc9('0x2d')](_0x2fb2bb['stack']);if(_0x2fb2bb[_0xcdc9('0x2e')]){delete _0x2fb2bb[_0xcdc9('0x2e')];}_0x5e6a2d[_0xcdc9('0x20')](_0x2dd2ce)[_0xcdc9('0x2f')](_0x2fb2bb);};}exports[_0xcdc9('0x30')]=function(_0xd31d28,_0x4f1668){var _0x294231={},_0x57628f={},_0x3b71bb={'count':0x0,'rows':[]};var _0x4e48f6=_[_0xcdc9('0x31')](db[_0xcdc9('0x32')][_0xcdc9('0x33')],function(_0x16afc5){return{'name':_0x16afc5[_0xcdc9('0x34')],'type':_0x16afc5['type'][_0xcdc9('0x35')]};});_0x57628f[_0xcdc9('0x36')]=_[_0xcdc9('0x31')](_0x4e48f6,_0xcdc9('0x2e'));_0x57628f['query']=_[_0xcdc9('0x37')](_0xd31d28['query']);_0x57628f[_0xcdc9('0x38')]=_['intersection'](_0x57628f[_0xcdc9('0x36')],_0x57628f['query']);_0x294231['attributes']=_[_0xcdc9('0x39')](_0x57628f['model'],qs[_0xcdc9('0x3a')](_0xd31d28[_0xcdc9('0x3b')]['fields']));_0x294231['attributes']=_0x294231[_0xcdc9('0x3c')][_0xcdc9('0x3d')]?_0x294231[_0xcdc9('0x3c')]:_0x57628f[_0xcdc9('0x36')];if(!_0xd31d28[_0xcdc9('0x3b')]['hasOwnProperty'](_0xcdc9('0x3e'))){_0x294231[_0xcdc9('0x23')]=qs['limit'](_0xd31d28[_0xcdc9('0x3b')]['limit']);_0x294231[_0xcdc9('0x22')]=qs[_0xcdc9('0x22')](_0xd31d28[_0xcdc9('0x3b')][_0xcdc9('0x22')]);}_0x294231[_0xcdc9('0x3f')]=qs[_0xcdc9('0x40')](_0xd31d28['query'][_0xcdc9('0x40')]);_0x294231[_0xcdc9('0x41')]=qs[_0xcdc9('0x38')](_[_0xcdc9('0x42')](_0xd31d28[_0xcdc9('0x3b')],_0x57628f['filters']),_0x4e48f6);if(_0xd31d28[_0xcdc9('0x3b')][_0xcdc9('0x43')]){_0x294231[_0xcdc9('0x41')]=_[_0xcdc9('0x44')](_0x294231['where'],{'$or':_['map'](_0x4e48f6,function(_0x2391a7){if(_0x2391a7[_0xcdc9('0x45')]!==_0xcdc9('0x46')){var _0x19bf28={};_0x19bf28[_0x2391a7['name']]={'$like':'%'+_0xd31d28[_0xcdc9('0x3b')][_0xcdc9('0x43')]+'%'};return _0x19bf28;}})});}_0x294231=_[_0xcdc9('0x44')]({},_0x294231,_0xd31d28[_0xcdc9('0x47')]);var _0x566b77={'where':_0x294231['where']};return db['UserProfile'][_0xcdc9('0x25')](_0x566b77)[_0xcdc9('0x2b')](function(_0x105ed1){_0x3b71bb[_0xcdc9('0x25')]=_0x105ed1;if(_0xd31d28['query'][_0xcdc9('0x48')]){_0x294231[_0xcdc9('0x49')]=[{'all':!![]}];}return db[_0xcdc9('0x32')]['findAll'](_0x294231);})[_0xcdc9('0x2b')](function(_0x5b6209){_0x3b71bb['rows']=_0x5b6209;return _0x3b71bb;})[_0xcdc9('0x2b')](respondWithFilteredResult(_0x4f1668,_0x294231))[_0xcdc9('0x4a')](handleError(_0x4f1668,null));};exports[_0xcdc9('0x4b')]=function(_0x116fe1,_0x2a1d8d){var _0x347b06={'raw':![],'where':{'id':_0x116fe1[_0xcdc9('0x4c')]['id']}},_0x1f01bc={};_0x1f01bc[_0xcdc9('0x36')]=_[_0xcdc9('0x37')](db['UserProfile'][_0xcdc9('0x33')]);_0x1f01bc[_0xcdc9('0x3b')]=_['keys'](_0x116fe1[_0xcdc9('0x3b')]);_0x1f01bc[_0xcdc9('0x38')]=_['intersection'](_0x1f01bc['model'],_0x1f01bc[_0xcdc9('0x3b')]);_0x347b06[_0xcdc9('0x3c')]=_[_0xcdc9('0x39')](_0x1f01bc[_0xcdc9('0x36')],qs[_0xcdc9('0x3a')](_0x116fe1[_0xcdc9('0x3b')][_0xcdc9('0x3a')]));_0x347b06[_0xcdc9('0x3c')]=_0x347b06[_0xcdc9('0x3c')]['length']?_0x347b06[_0xcdc9('0x3c')]:_0x1f01bc[_0xcdc9('0x36')];if(_0x116fe1[_0xcdc9('0x3b')]['includeAll']){_0x347b06[_0xcdc9('0x49')]=[{'all':!![]}];}_0x347b06=_['merge']({},_0x347b06,_0x116fe1[_0xcdc9('0x47')]);return db['UserProfile'][_0xcdc9('0x4d')](_0x347b06)[_0xcdc9('0x2b')](handleEntityNotFound(_0x2a1d8d,null))['then'](respondWithResult(_0x2a1d8d,null))[_0xcdc9('0x4a')](handleError(_0x2a1d8d,null));};exports['create']=function(_0x120f73,_0x1b9074){return db[_0xcdc9('0x32')][_0xcdc9('0x4e')](_0x120f73[_0xcdc9('0x4f')],{})[_0xcdc9('0x2b')](respondWithResult(_0x1b9074,0xc9))['catch'](handleError(_0x1b9074,null));};exports[_0xcdc9('0x50')]=function(_0x41221e,_0x454590){var _0x7cf1a9={'where':{'id':_0x41221e['params']['id']}},_0x4b7aac={};_0x4b7aac[_0xcdc9('0x36')]=_[_0xcdc9('0x37')](db[_0xcdc9('0x32')][_0xcdc9('0x33')]);_0x7cf1a9[_0xcdc9('0x3c')]=_[_0xcdc9('0x39')](_0x4b7aac[_0xcdc9('0x36')],qs[_0xcdc9('0x3a')](_0x41221e[_0xcdc9('0x3b')][_0xcdc9('0x3a')]));_0x7cf1a9['attributes']=_0x7cf1a9['attributes'][_0xcdc9('0x3d')]?_0x7cf1a9[_0xcdc9('0x3c')]:_0x4b7aac[_0xcdc9('0x36')];if(_0x41221e['query'][_0xcdc9('0x48')]){_0x7cf1a9['include']=[{'all':!![]}];}_0x7cf1a9=_[_0xcdc9('0x44')]({},_0x7cf1a9,_0x41221e[_0xcdc9('0x47')]);return db['UserProfile'][_0xcdc9('0x4d')](_0x7cf1a9)['then'](handleEntityNotFound(_0x454590,null))['then'](function(_0x5bd3d0){if(_0x5bd3d0){var _0x384f9f=_0x5bd3d0[_0xcdc9('0x51')]({'plain':!![]});_0x384f9f=qs[_0xcdc9('0x52')](_0x384f9f,['id','createdAt',_0xcdc9('0x53'),_0xcdc9('0x54')]);_0x41221e[_0xcdc9('0x4f')]=_['omit'](_0x41221e['body'],['id',_0xcdc9('0x55'),_0xcdc9('0x53')]);return db[_0xcdc9('0x56')][_0xcdc9('0x57')](function(_0x52c6e6){return db[_0xcdc9('0x32')][_0xcdc9('0x4e')](_[_0xcdc9('0x44')](_0x384f9f,_0x41221e[_0xcdc9('0x4f')]),{'include':_0x41221e['query'][_0xcdc9('0x48')]?[{'all':!![]}]:undefined,'transaction':_0x52c6e6})[_0xcdc9('0x2b')](function(_0x20863a){var _0x2bd7ff=_0x20863a[_0xcdc9('0x51')]({'plain':!![]});return db['UserProfileSection'][_0xcdc9('0x58')]({'where':{'userProfileId':_0x41221e[_0xcdc9('0x4c')]['id']},'raw':!![]})[_0xcdc9('0x2b')](function(_0x137aa3){if(_0x137aa3){return BPromise[_0xcdc9('0x59')](_0x137aa3,function(_0x4d71e4){return new BPromise(function(_0x15dcf0,_0x549971){if(_0x4d71e4[_0xcdc9('0x5a')]===null||_0x4d71e4[_0xcdc9('0x5a')]===0x1)_0x15dcf0(null);return db[_0xcdc9('0x5b')][_0xcdc9('0x58')]({'where':{'sectionId':_0x4d71e4['id']},'raw':!![]})[_0xcdc9('0x2b')](function(_0x262982){var _0x47e8d3=_[_0xcdc9('0x31')](_0x262982,function(_0x268f09){return qs[_0xcdc9('0x52')](_0x268f09,['id','createdAt',_0xcdc9('0x53'),'sectionId']);});_0x15dcf0(_0x47e8d3);})['catch'](function(_0x59a512){_0x549971(_0x59a512);});})[_0xcdc9('0x2b')](function(_0x31510e){var _0x1a7e05=qs[_0xcdc9('0x52')](_0x4d71e4,['id','createdAt',_0xcdc9('0x53')]);_0x1a7e05[_0xcdc9('0x5c')]=_0x2bd7ff['id'];if(_0x31510e)_0x1a7e05[_0xcdc9('0x5d')]=_0x31510e;return _0x1a7e05;})['then'](function(_0x9a20df){return db[_0xcdc9('0x5e')][_0xcdc9('0x4e')](_0x9a20df,{'include':[{'model':db[_0xcdc9('0x5b')],'as':_0xcdc9('0x5d')}],'raw':!![],'transaction':_0x52c6e6});});})[_0xcdc9('0x2b')](function(){return _0x2bd7ff;});}});});});}})[_0xcdc9('0x2b')](respondWithResult(_0x454590,0xc9))[_0xcdc9('0x4a')](handleError(_0x454590,null));};exports[_0xcdc9('0x2a')]=function(_0x25604b,_0x473c8c){if(_0x25604b['body']['id']){delete _0x25604b['body']['id'];}return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0x25604b['params']['id']}})['then'](handleEntityNotFound(_0x473c8c,null))[_0xcdc9('0x2b')](saveUpdates(_0x25604b[_0xcdc9('0x4f')],null))[_0xcdc9('0x2b')](respondWithResult(_0x473c8c,null))['catch'](handleError(_0x473c8c,null));};exports[_0xcdc9('0x2c')]=function(_0xbe6f60,_0x34d189){return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0xbe6f60[_0xcdc9('0x4c')]['id']}})[_0xcdc9('0x2b')](handleEntityNotFound(_0x34d189,null))[_0xcdc9('0x2b')](removeEntity(_0x34d189,null))[_0xcdc9('0x4a')](handleError(_0x34d189,null));};exports[_0xcdc9('0x5f')]=function(_0x342ab2,_0x4e3fc0){return db[_0xcdc9('0x32')][_0xcdc9('0x5f')]()[_0xcdc9('0x2b')](respondWithResult(_0x4e3fc0,null))[_0xcdc9('0x4a')](handleError(_0x4e3fc0,null));};exports[_0xcdc9('0x60')]=function(_0x58b221,_0x410b01){var _0x3bc15c=_0x58b221[_0xcdc9('0x4f')];return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0x58b221[_0xcdc9('0x4c')]['id']}})[_0xcdc9('0x2b')](handleEntityNotFound(_0x410b01,null))['then'](function(_0x3afce9){if(_0x3afce9){return db[_0xcdc9('0x56')][_0xcdc9('0x57')](function(_0x3ec8a7){return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x58b221[_0xcdc9('0x4c')]['id'],'sectionId':_['map'](_0x3bc15c,function(_0x42d77a){return _0x42d77a[_0xcdc9('0x61')];})},'transaction':_0x3ec8a7})[_0xcdc9('0x2b')](function(){var _0x375b1d=_['map'](_0x3bc15c,function(_0x187951){_0x187951['userProfileId']=_0x58b221[_0xcdc9('0x4c')]['id'];return _0x187951;});var _0x2359dd=[];return BPromise[_0xcdc9('0x59')](_0x375b1d,function(_0x4705b7){return db[_0xcdc9('0x5e')][_0xcdc9('0x4e')](_0x4705b7,{'include':[{'model':db[_0xcdc9('0x5b')],'as':'Resources'}],'raw':!![],'transaction':_0x3ec8a7})[_0xcdc9('0x2b')](function(_0x1c340e){_0x2359dd[_0xcdc9('0x62')](_0x1c340e[_0xcdc9('0x51')]({'plain':!![]}));});})[_0xcdc9('0x2b')](function(){return _0x2359dd;});});});}})[_0xcdc9('0x2b')](function(_0x68635d){return _0x68635d;})[_0xcdc9('0x2b')](respondWithResult(_0x410b01,null))[_0xcdc9('0x4a')](handleError(_0x410b01,null));};exports[_0xcdc9('0x63')]=function(_0x10b096,_0x27a6d7){var _0x291ea;return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0x10b096[_0xcdc9('0x4c')]['id']},'attributes':['id',_0xcdc9('0x2e')]})[_0xcdc9('0x2b')](handleEntityNotFound(_0x27a6d7,null))[_0xcdc9('0x2b')](function(_0x40779c){if(_0x40779c){_0x291ea=_0x40779c;return db[_0xcdc9('0x5e')][_0xcdc9('0x2c')]({'where':{'userProfileId':_0x10b096['params']['id'],'sectionId':_0x10b096['query'][_0xcdc9('0x64')]}});}})[_0xcdc9('0x2b')](function(){return _0x291ea;})['then'](respondWithStatusCode(_0x27a6d7,null))['catch'](handleError(_0x27a6d7,null));};exports[_0xcdc9('0x65')]=function(_0x7cc91f,_0x1d30b6){var _0x46489d=[];var _0x4b26f1=[];return db['UserProfileSection'][_0xcdc9('0x58')]({'where':{'userProfileId':_0x7cc91f[_0xcdc9('0x4c')]['id']},'raw':!![]})[_0xcdc9('0x2b')](function(_0x459d26){_0x46489d=_['filter'](_0x459d26,function(_0xf4e249){return _0xf4e249[_0xcdc9('0x66')]===0x1||_[_0xcdc9('0x67')]([0x3eb,0x709],_0xf4e249['sectionId']);});if(!_[_0xcdc9('0x68')](_0x46489d)){return _[_0xcdc9('0x31')](_0x46489d,function(_0x379f02){return _0x379f02[_0xcdc9('0x61')];});}else{return;}})[_0xcdc9('0x2b')](function(_0xfd26d7){if(_0xfd26d7)_0x4b26f1=_0xfd26d7;if(_['includes'](_0x4b26f1,0x64)){var _0x48d82a=_[_0xcdc9('0x4d')](_0x46489d,{'sectionId':0x64});return hasDefaultDashboard(_0x48d82a)[_0xcdc9('0x2b')](function(_0x49754d){return _['map'](_0x46489d,function(_0x80c0f){if(_0x80c0f[_0xcdc9('0x61')]===0x64){_0x80c0f['subsections']=_0x49754d;}return _0x80c0f;});});}else{return;}})[_0xcdc9('0x2b')](function(_0x235870){if(_0x235870)_0x46489d=_0x235870;if(_[_0xcdc9('0x67')](_0x4b26f1,0x3eb)){var _0x147d42=_[_0xcdc9('0x4d')](_0x46489d,{'sectionId':0x3eb});return getCustomDashboards(_0x147d42)[_0xcdc9('0x2b')](function(_0x3597a1){return _[_0xcdc9('0x31')](_0x46489d,function(_0x59d0ad){if(_0x147d42[_0xcdc9('0x66')]){if(_0x59d0ad[_0xcdc9('0x61')]===0x3eb){_0x59d0ad[_0xcdc9('0x69')]=_0x3597a1;}}else{if(_0x59d0ad[_0xcdc9('0x61')]===0x64){if(!_0x59d0ad[_0xcdc9('0x69')]){_0x59d0ad[_0xcdc9('0x69')]=[];}_0x59d0ad[_0xcdc9('0x69')]=_0x59d0ad['subsections']['concat'](_0x3597a1);}}return _0x59d0ad;});});}else{return;}})[_0xcdc9('0x2b')](function(_0x832467){if(_0x832467)_0x46489d=_0x832467;if(_[_0xcdc9('0x67')](_0x4b26f1,0x709)){var _0x513102=_[_0xcdc9('0x4d')](_0x46489d,{'sectionId':0x709});return getPlugins(_0x513102)[_0xcdc9('0x2b')](function(_0x5b10b0){if(_0x513102[_0xcdc9('0x66')]){return _['map'](_0x46489d,function(_0x2b9af2){if(_0x2b9af2['sectionId']===0x709){_0x2b9af2[_0xcdc9('0x69')]=_0x5b10b0;}return _0x2b9af2;});}else{var _0x32a5ad={'sectionId':0x76c,'enabled':0x1,'subsections':_0x5b10b0};var _0xfc49a6=_['map'](_0x46489d);_0xfc49a6['push'](_0x32a5ad);return _0xfc49a6;}});}else{return;}})[_0xcdc9('0x2b')](function(_0x3d2524){if(_0x3d2524)_0x46489d=_0x3d2524;return _[_0xcdc9('0x43')](_0x46489d,[_0xcdc9('0x66'),0x1]);})['then'](respondWithResult(_0x1d30b6,null))[_0xcdc9('0x4a')](handleError(_0x1d30b6,null));};function hasDefaultDashboard(_0x2e67f4){var _0x3bac12=[0x65];return new BPromise(function(_0x3dfc20,_0x299015){try{if(_0x2e67f4[_0xcdc9('0x5a')]){_0x3dfc20(_0x3bac12);}else{return db['UserProfileResource']['findOne']({'where':{'sectionId':_0x2e67f4['id']},'raw':!![]})['then'](function(_0x552ad4){_0x552ad4?_0x3dfc20(_0x3bac12):_0x3dfc20();});}}catch(_0x1a31d4){_0x299015(_0x1a31d4);}});}function getCustomDashboards(_0x533929){var _0x5f4072=[];return new BPromise(function(_0x21298d,_0x4ab288){try{if(_0x533929[_0xcdc9('0x5a')]){return db['Dashboard'][_0xcdc9('0x58')]({'raw':!![]})[_0xcdc9('0x2b')](function(_0x21f568){_0x21f568[_0xcdc9('0x6a')](function(_0x48b4f9){_0x5f4072['push'](_0x48b4f9['id']+0x1869f);});_0x21298d(_0x5f4072);});}else{return db[_0xcdc9('0x5b')]['findAll']({'where':{'sectionId':_0x533929['id']},'raw':!![]})[_0xcdc9('0x2b')](function(_0x53ff9f){_0x53ff9f[_0xcdc9('0x6a')](function(_0x1fb8d9){_0x5f4072['push'](_0x1fb8d9[_0xcdc9('0x6b')]+0x1869f);});_0x21298d(_0x5f4072);});}}catch(_0x3b82bf){_0x4ab288(_0x3b82bf);}});}function getPlugins(_0x15f127){var _0x5ea0b2=[];return new BPromise(function(_0x1b3544,_0x4d08bb){try{if(_0x15f127['autoAssociation']){return db[_0xcdc9('0x6c')]['findAll']({'raw':!![]})[_0xcdc9('0x2b')](function(_0x49f54a){_0x49f54a[_0xcdc9('0x6a')](function(_0x504458){_0x5ea0b2[_0xcdc9('0x62')](_0x504458['id']+0x15b38);});_0x1b3544(_0x5ea0b2);});}else{return db['UserProfileResource'][_0xcdc9('0x58')]({'where':{'sectionId':_0x15f127['id']},'raw':!![]})[_0xcdc9('0x2b')](function(_0xc8205e){_0xc8205e['forEach'](function(_0x35aa7f){_0x5ea0b2[_0xcdc9('0x62')](_0x35aa7f[_0xcdc9('0x6b')]+0x15b38);});_0x1b3544(_0x5ea0b2);});}}catch(_0x3b3868){_0x4d08bb(_0x3b3868);}});}exports[_0xcdc9('0x6d')]=function(_0x13c928,_0x4c8a6d){return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0x13c928[_0xcdc9('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4c8a6d,null))[_0xcdc9('0x2b')](function(_0x3c01ac){if(_0x3c01ac){return db[_0xcdc9('0x56')][_0xcdc9('0x57')](function(_0x19aca9){return db[_0xcdc9('0x5e')][_0xcdc9('0x58')]({'where':{'userProfileId':_0x13c928[_0xcdc9('0x4c')]['id']},'attributes':['id'],'raw':!![]})[_0xcdc9('0x2b')](function(_0x2805b9){if(_0x2805b9){return db[_0xcdc9('0x5e')]['destroy']({'where':{'userProfileId':_0x13c928[_0xcdc9('0x4c')]['id'],'id':_['map'](_0x2805b9,function(_0x3c6747){return _0x3c6747['id'];})},'transaction':_0x19aca9});}})['then'](function(_0x41be60){var _0x3f6522=_[_0xcdc9('0x31')](_0x13c928[_0xcdc9('0x4f')],function(_0x5e2f47){_0x5e2f47['userProfileId']=_0x13c928['params']['id'];return _0x5e2f47;});return db['UserProfileSection'][_0xcdc9('0x6e')](_0x3f6522,{'raw':!![],'transaction':_0x19aca9});})['then'](function(_0x1a64cf){var _0x4b292f=_['filter'](_['map'](_0x1a64cf,function(_0x1632ee){return _0x1632ee['get']({'plain':!![]});}),{'includeAll':![]});if(_0x4b292f){return db[_0xcdc9('0x5e')]['findAll']({'where':{'userProfileId':_0x13c928[_0xcdc9('0x4c')]['id'],'sectionId':_[_0xcdc9('0x31')](_0x4b292f,function(_0x40bd18){return _0x40bd18['sectionId'];})},'attributes':['id',_0xcdc9('0x61')],'raw':!![]})['then'](function(_0x4c90c9){var _0x530251=_[_0xcdc9('0x31')](_0x13c928[_0xcdc9('0x4f')],function(_0x57bb3a){_0x57bb3a[_0xcdc9('0x5c')]=_0x13c928['params']['id'];return _0x57bb3a;});return db[_0xcdc9('0x5b')]['bulkCreate'](_0x530251,{'raw':!![],'transaction':_0x19aca9});});}})[_0xcdc9('0x4a')](handleError(_0x4c8a6d,null));});}})['then'](function(_0x3b5fa4){var _0x234b09=_[_0xcdc9('0x31')](_0x3b5fa4,function(_0xd393fe){return _0xd393fe[_0xcdc9('0x51')]({'plain':!![]});});})[_0xcdc9('0x2b')](respondWithResult(_0x4c8a6d,null))[_0xcdc9('0x4a')](handleError(_0x4c8a6d,null));};exports[_0xcdc9('0x6f')]=function(_0xf4ba5f,_0x4444c6,_0x10901e){return db['UserProfile'][_0xcdc9('0x4d')]({'where':{'id':_0xf4ba5f[_0xcdc9('0x4c')]['id']}})[_0xcdc9('0x2b')](handleEntityNotFound(_0x4444c6,null))['then'](function(_0x2eff0b){if(_0x2eff0b){return _0x2eff0b[_0xcdc9('0x6f')](_0xf4ba5f[_0xcdc9('0x3b')][_0xcdc9('0x64')]);}})['then'](respondWithStatusCode(_0x4444c6,null))['catch'](handleError(_0x4444c6,null));};exports[_0xcdc9('0x70')]=function(_0x3ec69c,_0x4e4ed7){var _0x34670d={};if(!_0x3ec69c[_0xcdc9('0x3b')]['section'])throw new Error(_0xcdc9('0x71'));if(!_0x3ec69c[_0xcdc9('0x3b')]['hasOwnProperty']('nolimit')){_0x34670d[_0xcdc9('0x23')]=qs[_0xcdc9('0x23')](_0x3ec69c[_0xcdc9('0x3b')][_0xcdc9('0x23')]);_0x34670d[_0xcdc9('0x22')]=qs[_0xcdc9('0x22')](_0x3ec69c['query'][_0xcdc9('0x22')]);}return db[_0xcdc9('0x32')][_0xcdc9('0x4d')]({'where':{'id':_0x3ec69c['params']['id']}})[_0xcdc9('0x2b')](function(_0x260459){if(!_0x260459)throw new Error(_0xcdc9('0x72')+_0x3ec69c[_0xcdc9('0x4c')]['id']);return db[_0xcdc9('0x32')][_0xcdc9('0x70')](_0x3ec69c);})[_0xcdc9('0x2b')](respondWithFilteredResult(_0x4e4ed7,_0x34670d))[_0xcdc9('0x4a')](handleError(_0x4e4ed7,null));};
\ No newline at end of file
+var _0x8aad=['fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','UserProfile','rawAttributes','fieldName','type','key','model','map','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','clone','createdAt','updatedAt','crudPermissions','omit','sequelize','transaction','get','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','userProfileId','Resources','describe','addSections','push','removeSections','ids','getSections','enabled','includes','subsections','forEach','resourceId','bulkCreate','removeResources','getResources','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs'];(function(_0x2d2258,_0x2ce510){var _0x18e155=function(_0x11949e){while(--_0x11949e){_0x2d2258['push'](_0x2d2258['shift']());}};_0x18e155(++_0x2ce510);}(_0x8aad,0x146));var _0xd8aa=function(_0x5074e1,_0x5e1389){_0x5074e1=_0x5074e1-0x0;var _0x420516=_0x8aad[_0x5074e1];return _0x420516;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];config[_0xd8aa('0x17')]=_[_0xd8aa('0x18')](config[_0xd8aa('0x17')],{'host':_0xd8aa('0x19'),'port':0x18eb});var socket=require(_0xd8aa('0x1a'))(new Redis(config['redis']));require('./userProfile.socket')[_0xd8aa('0x1b')](socket);function respondWithStatusCode(_0x319ffe,_0x2bbd1e){_0x2bbd1e=_0x2bbd1e||0xcc;return function(_0x47c131){if(_0x47c131){return _0x319ffe[_0xd8aa('0x1c')](_0x2bbd1e);}return _0x319ffe[_0xd8aa('0x1d')](_0x2bbd1e)[_0xd8aa('0x1e')]();};}function respondWithResult(_0x404ed6,_0x47a0e3){_0x47a0e3=_0x47a0e3||0xc8;return function(_0x476930){if(_0x476930){return _0x404ed6[_0xd8aa('0x1d')](_0x47a0e3)['json'](_0x476930);}};}function respondWithFilteredResult(_0x16d5c6,_0x223a34){return function(_0x32e2cd){if(_0x32e2cd){var _0x3a29ca=typeof _0x223a34[_0xd8aa('0x1f')]==='undefined'&&typeof _0x223a34[_0xd8aa('0x20')]===_0xd8aa('0x21');var _0xb156e6=_0x32e2cd[_0xd8aa('0x22')];var _0x56936b=_0x3a29ca?0x0:_0x223a34[_0xd8aa('0x1f')];var _0x3df281=_0x3a29ca?_0x32e2cd[_0xd8aa('0x22')]:_0x223a34[_0xd8aa('0x1f')]+_0x223a34[_0xd8aa('0x20')];var _0x4fe5d8;if(_0x3df281>=_0xb156e6){_0x3df281=_0xb156e6;_0x4fe5d8=0xc8;}else{_0x4fe5d8=0xce;}_0x16d5c6[_0xd8aa('0x1d')](_0x4fe5d8);return _0x16d5c6[_0xd8aa('0x23')](_0xd8aa('0x24'),_0x56936b+'-'+_0x3df281+'/'+_0xb156e6)['json'](_0x32e2cd);}return null;};}function patchUpdates(_0xa7cf85){return function(_0x7a4ce7){try{jsonpatch[_0xd8aa('0x25')](_0x7a4ce7,_0xa7cf85,!![]);}catch(_0x290849){return BPromise[_0xd8aa('0x26')](_0x290849);}return _0x7a4ce7[_0xd8aa('0x27')]();};}function saveUpdates(_0x1f64f8,_0x34d957){return function(_0x375f64){if(_0x375f64){return _0x375f64[_0xd8aa('0x28')](_0x1f64f8)[_0xd8aa('0x29')](function(_0x370d6f){return _0x370d6f;});}return null;};}function removeEntity(_0x26cc66,_0x5f1027){return function(_0x1f066a){if(_0x1f066a){return _0x1f066a[_0xd8aa('0x2a')]()[_0xd8aa('0x29')](function(){_0x26cc66[_0xd8aa('0x1d')](0xcc)[_0xd8aa('0x1e')]();});}};}function handleEntityNotFound(_0x3696fd,_0x26ab06){return function(_0x19edee){if(!_0x19edee){_0x3696fd[_0xd8aa('0x1c')](0x194);}return _0x19edee;};}function handleError(_0xbe531,_0x4cdb90){_0x4cdb90=_0x4cdb90||0x1f4;return function(_0x1f2a28){logger[_0xd8aa('0x2b')](_0x1f2a28[_0xd8aa('0x2c')]);if(_0x1f2a28['name']){delete _0x1f2a28[_0xd8aa('0x2d')];}_0xbe531['status'](_0x4cdb90)[_0xd8aa('0x2e')](_0x1f2a28);};}exports[_0xd8aa('0x2f')]=function(_0x37902c,_0x168a2e){var _0x44f783={},_0x28f3cc={},_0xd8d3b3={'count':0x0,'rows':[]};var _0x3cbe8d=_['map'](db[_0xd8aa('0x30')][_0xd8aa('0x31')],function(_0x11071f){return{'name':_0x11071f[_0xd8aa('0x32')],'type':_0x11071f[_0xd8aa('0x33')][_0xd8aa('0x34')]};});_0x28f3cc[_0xd8aa('0x35')]=_[_0xd8aa('0x36')](_0x3cbe8d,'name');_0x28f3cc[_0xd8aa('0x37')]=_[_0xd8aa('0x38')](_0x37902c[_0xd8aa('0x37')]);_0x28f3cc['filters']=_[_0xd8aa('0x39')](_0x28f3cc[_0xd8aa('0x35')],_0x28f3cc[_0xd8aa('0x37')]);_0x44f783[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x28f3cc[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x3b')]));_0x44f783['attributes']=_0x44f783[_0xd8aa('0x3a')][_0xd8aa('0x3c')]?_0x44f783[_0xd8aa('0x3a')]:_0x28f3cc[_0xd8aa('0x35')];if(!_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x3d')](_0xd8aa('0x3e'))){_0x44f783[_0xd8aa('0x20')]=qs[_0xd8aa('0x20')](_0x37902c['query'][_0xd8aa('0x20')]);_0x44f783['offset']=qs[_0xd8aa('0x1f')](_0x37902c[_0xd8aa('0x37')]['offset']);}_0x44f783[_0xd8aa('0x3f')]=qs[_0xd8aa('0x40')](_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x40')]);_0x44f783[_0xd8aa('0x41')]=qs['filters'](_['pick'](_0x37902c[_0xd8aa('0x37')],_0x28f3cc['filters']),_0x3cbe8d);if(_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x42')]){_0x44f783[_0xd8aa('0x41')]=_[_0xd8aa('0x43')](_0x44f783[_0xd8aa('0x41')],{'$or':_[_0xd8aa('0x36')](_0x3cbe8d,function(_0x3e79b6){if(_0x3e79b6[_0xd8aa('0x33')]!==_0xd8aa('0x44')){var _0xa34bea={};_0xa34bea[_0x3e79b6[_0xd8aa('0x2d')]]={'$like':'%'+_0x37902c['query'][_0xd8aa('0x42')]+'%'};return _0xa34bea;}})});}_0x44f783=_[_0xd8aa('0x43')]({},_0x44f783,_0x37902c[_0xd8aa('0x45')]);var _0x4b1de0={'where':_0x44f783[_0xd8aa('0x41')]};return db[_0xd8aa('0x30')][_0xd8aa('0x22')](_0x4b1de0)[_0xd8aa('0x29')](function(_0x3a0284){_0xd8d3b3[_0xd8aa('0x22')]=_0x3a0284;if(_0x37902c[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x44f783[_0xd8aa('0x47')]=[{'all':!![]}];}return db[_0xd8aa('0x30')][_0xd8aa('0x48')](_0x44f783);})[_0xd8aa('0x29')](function(_0x3b26c9){_0xd8d3b3[_0xd8aa('0x49')]=_0x3b26c9;return _0xd8d3b3;})[_0xd8aa('0x29')](respondWithFilteredResult(_0x168a2e,_0x44f783))[_0xd8aa('0x4a')](handleError(_0x168a2e,null));};exports[_0xd8aa('0x4b')]=function(_0x139ed6,_0x5a17aa){var _0x25d2d4={'raw':![],'where':{'id':_0x139ed6[_0xd8aa('0x4c')]['id']}},_0x22cce6={};_0x22cce6[_0xd8aa('0x35')]=_[_0xd8aa('0x38')](db[_0xd8aa('0x30')]['rawAttributes']);_0x22cce6[_0xd8aa('0x37')]=_['keys'](_0x139ed6[_0xd8aa('0x37')]);_0x22cce6['filters']=_[_0xd8aa('0x39')](_0x22cce6['model'],_0x22cce6['query']);_0x25d2d4[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x22cce6[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x139ed6[_0xd8aa('0x37')][_0xd8aa('0x3b')]));_0x25d2d4['attributes']=_0x25d2d4[_0xd8aa('0x3a')][_0xd8aa('0x3c')]?_0x25d2d4[_0xd8aa('0x3a')]:_0x22cce6[_0xd8aa('0x35')];if(_0x139ed6[_0xd8aa('0x37')]['includeAll']){_0x25d2d4['include']=[{'all':!![]}];}_0x25d2d4=_['merge']({},_0x25d2d4,_0x139ed6[_0xd8aa('0x45')]);return db[_0xd8aa('0x30')][_0xd8aa('0x4d')](_0x25d2d4)[_0xd8aa('0x29')](handleEntityNotFound(_0x5a17aa,null))[_0xd8aa('0x29')](respondWithResult(_0x5a17aa,null))[_0xd8aa('0x4a')](handleError(_0x5a17aa,null));};exports['create']=function(_0x221e2b,_0x241e23){return db['UserProfile'][_0xd8aa('0x4e')](_0x221e2b[_0xd8aa('0x4f')],{})[_0xd8aa('0x29')](respondWithResult(_0x241e23,0xc9))['catch'](handleError(_0x241e23,null));};exports[_0xd8aa('0x50')]=function(_0x625df9,_0x3b93b1){var _0x1f3ed6={'where':{'id':_0x625df9[_0xd8aa('0x4c')]['id']}},_0x1c6a21={};_0x1c6a21['model']=_['keys'](db[_0xd8aa('0x30')][_0xd8aa('0x31')]);_0x1f3ed6[_0xd8aa('0x3a')]=_[_0xd8aa('0x39')](_0x1c6a21[_0xd8aa('0x35')],qs[_0xd8aa('0x3b')](_0x625df9[_0xd8aa('0x37')]['fields']));_0x1f3ed6[_0xd8aa('0x3a')]=_0x1f3ed6[_0xd8aa('0x3a')]['length']?_0x1f3ed6[_0xd8aa('0x3a')]:_0x1c6a21['model'];if(_0x625df9[_0xd8aa('0x37')][_0xd8aa('0x46')]){_0x1f3ed6[_0xd8aa('0x47')]=[{'all':!![]}];}_0x1f3ed6=_['merge']({},_0x1f3ed6,_0x625df9['options']);return db['UserProfile']['find'](_0x1f3ed6)[_0xd8aa('0x29')](handleEntityNotFound(_0x3b93b1,null))[_0xd8aa('0x29')](function(_0x36222e){if(_0x36222e){var _0x5113b5=_0x36222e['get']({'plain':!![]});_0x5113b5=qs['omit'](_0x5113b5,['id',_0xd8aa('0x51'),_0xd8aa('0x52'),_0xd8aa('0x53')]);_0x625df9[_0xd8aa('0x4f')]=_[_0xd8aa('0x54')](_0x625df9[_0xd8aa('0x4f')],['id',_0xd8aa('0x51'),_0xd8aa('0x52')]);return db[_0xd8aa('0x55')][_0xd8aa('0x56')](function(_0x3153f3){return db[_0xd8aa('0x30')][_0xd8aa('0x4e')](_['merge'](_0x5113b5,_0x625df9['body']),{'include':_0x625df9[_0xd8aa('0x37')][_0xd8aa('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x3153f3})[_0xd8aa('0x29')](function(_0xe216d8){var _0x586dcf=_0xe216d8[_0xd8aa('0x57')]({'plain':!![]});return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x625df9['params']['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x38e1ec){if(_0x38e1ec){return BPromise[_0xd8aa('0x59')](_0x38e1ec,function(_0x410436){return new BPromise(function(_0x54aaef,_0x541a8b){if(_0x410436[_0xd8aa('0x5a')]===null||_0x410436['autoAssociation']===0x1)_0x54aaef(null);return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x410436['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x2d41c9){var _0x158eee=_[_0xd8aa('0x36')](_0x2d41c9,function(_0x4e4a62){return qs[_0xd8aa('0x54')](_0x4e4a62,['id',_0xd8aa('0x51'),_0xd8aa('0x52'),_0xd8aa('0x5c')]);});_0x54aaef(_0x158eee);})[_0xd8aa('0x4a')](function(_0x170954){_0x541a8b(_0x170954);});})[_0xd8aa('0x29')](function(_0x33706c){var _0x3fba51=qs[_0xd8aa('0x54')](_0x410436,['id',_0xd8aa('0x51'),_0xd8aa('0x52')]);_0x3fba51[_0xd8aa('0x5d')]=_0x586dcf['id'];if(_0x33706c)_0x3fba51[_0xd8aa('0x5e')]=_0x33706c;return _0x3fba51;})[_0xd8aa('0x29')](function(_0x406c32){return db[_0xd8aa('0x58')][_0xd8aa('0x4e')](_0x406c32,{'include':[{'model':db[_0xd8aa('0x5b')],'as':_0xd8aa('0x5e')}],'raw':!![],'transaction':_0x3153f3});});})[_0xd8aa('0x29')](function(){return _0x586dcf;});}});});});}})['then'](respondWithResult(_0x3b93b1,0xc9))['catch'](handleError(_0x3b93b1,null));};exports['update']=function(_0x2e0cfb,_0x5e3369){if(_0x2e0cfb[_0xd8aa('0x4f')]['id']){delete _0x2e0cfb[_0xd8aa('0x4f')]['id'];}return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x2e0cfb[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x5e3369,null))[_0xd8aa('0x29')](saveUpdates(_0x2e0cfb[_0xd8aa('0x4f')],null))[_0xd8aa('0x29')](respondWithResult(_0x5e3369,null))[_0xd8aa('0x4a')](handleError(_0x5e3369,null));};exports[_0xd8aa('0x2a')]=function(_0x508c37,_0x5a4c5c){return db[_0xd8aa('0x30')]['find']({'where':{'id':_0x508c37[_0xd8aa('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5a4c5c,null))['then'](removeEntity(_0x5a4c5c,null))[_0xd8aa('0x4a')](handleError(_0x5a4c5c,null));};exports[_0xd8aa('0x5f')]=function(_0x5b0d21,_0x3ee72e){return db['UserProfile'][_0xd8aa('0x5f')]()[_0xd8aa('0x29')](respondWithResult(_0x3ee72e,null))[_0xd8aa('0x4a')](handleError(_0x3ee72e,null));};exports[_0xd8aa('0x60')]=function(_0x17bc21,_0x24132d){var _0x20865a=_0x17bc21[_0xd8aa('0x4f')];return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x17bc21['params']['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x24132d,null))[_0xd8aa('0x29')](function(_0x19651c){if(_0x19651c){return db['sequelize']['transaction'](function(_0x6a8bb1){return db[_0xd8aa('0x58')]['destroy']({'where':{'userProfileId':_0x17bc21[_0xd8aa('0x4c')]['id'],'sectionId':_[_0xd8aa('0x36')](_0x20865a,function(_0x2def5a){return _0x2def5a[_0xd8aa('0x5c')];})},'transaction':_0x6a8bb1})[_0xd8aa('0x29')](function(){var _0x27c98a=_[_0xd8aa('0x36')](_0x20865a,function(_0x4b6ee8){_0x4b6ee8[_0xd8aa('0x5d')]=_0x17bc21[_0xd8aa('0x4c')]['id'];return _0x4b6ee8;});var _0x85c97b=[];return BPromise[_0xd8aa('0x59')](_0x27c98a,function(_0x3e69d9){return db[_0xd8aa('0x58')][_0xd8aa('0x4e')](_0x3e69d9,{'include':[{'model':db[_0xd8aa('0x5b')],'as':'Resources'}],'raw':!![],'transaction':_0x6a8bb1})[_0xd8aa('0x29')](function(_0x45da98){_0x85c97b[_0xd8aa('0x61')](_0x45da98['get']({'plain':!![]}));});})[_0xd8aa('0x29')](function(){return _0x85c97b;});});});}})[_0xd8aa('0x29')](function(_0x19aa56){return _0x19aa56;})[_0xd8aa('0x29')](respondWithResult(_0x24132d,null))[_0xd8aa('0x4a')](handleError(_0x24132d,null));};exports[_0xd8aa('0x62')]=function(_0x95427d,_0x2c6083){var _0x12f182;return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x95427d[_0xd8aa('0x4c')]['id']},'attributes':['id',_0xd8aa('0x2d')]})[_0xd8aa('0x29')](handleEntityNotFound(_0x2c6083,null))[_0xd8aa('0x29')](function(_0x12638b){if(_0x12638b){_0x12f182=_0x12638b;return db[_0xd8aa('0x58')][_0xd8aa('0x2a')]({'where':{'userProfileId':_0x95427d['params']['id'],'sectionId':_0x95427d[_0xd8aa('0x37')][_0xd8aa('0x63')]}});}})[_0xd8aa('0x29')](function(){return _0x12f182;})[_0xd8aa('0x29')](respondWithStatusCode(_0x2c6083,null))['catch'](handleError(_0x2c6083,null));};exports[_0xd8aa('0x64')]=function(_0x160a59,_0x3cec88){var _0x8ffb88=[];var _0x5bb727=[];return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x160a59[_0xd8aa('0x4c')]['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0xb725b3){_0x8ffb88=_[_0xd8aa('0x42')](_0xb725b3,function(_0xd02eb6){return _0xd02eb6[_0xd8aa('0x65')]===0x1||_[_0xd8aa('0x66')]([0x3eb,0x709],_0xd02eb6['sectionId']);});if(!_['isEmpty'](_0x8ffb88)){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x4299c4){return _0x4299c4[_0xd8aa('0x5c')];});}else{return;}})['then'](function(_0xc575c8){if(_0xc575c8)_0x5bb727=_0xc575c8;if(_[_0xd8aa('0x66')](_0x5bb727,0x64)){var _0x56cd3d=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x64});return hasDefaultDashboard(_0x56cd3d)[_0xd8aa('0x29')](function(_0x518588){return _['map'](_0x8ffb88,function(_0x2aaecc){if(_0x2aaecc['sectionId']===0x64){_0x2aaecc[_0xd8aa('0x67')]=_0x518588;}return _0x2aaecc;});});}else{return;}})[_0xd8aa('0x29')](function(_0x9093a7){if(_0x9093a7)_0x8ffb88=_0x9093a7;if(_[_0xd8aa('0x66')](_0x5bb727,0x3eb)){var _0xb8f3a6=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x3eb});return getCustomDashboards(_0xb8f3a6)['then'](function(_0xd23e6b){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x3b574f){if(_0xb8f3a6['enabled']){if(_0x3b574f['sectionId']===0x3eb){_0x3b574f['subsections']=_0xd23e6b;}}else{if(_0x3b574f['sectionId']===0x64){_0x3b574f[_0xd8aa('0x67')]=_0xd23e6b;}}return _0x3b574f;});});}else{return;}})[_0xd8aa('0x29')](function(_0x5050a0){if(_0x5050a0)_0x8ffb88=_0x5050a0;if(_['includes'](_0x5bb727,0x709)){var _0x40b35d=_[_0xd8aa('0x4d')](_0x8ffb88,{'sectionId':0x709});return getPlugins(_0x40b35d)['then'](function(_0x52ffaf){if(_0x40b35d[_0xd8aa('0x65')]){return _[_0xd8aa('0x36')](_0x8ffb88,function(_0x5ece00){if(_0x5ece00['sectionId']===0x709){_0x5ece00['subsections']=_0x52ffaf;}return _0x5ece00;});}else{var _0x3dd2ed={'sectionId':0x76c,'enabled':0x1,'subsections':_0x52ffaf};var _0x417dcf=_[_0xd8aa('0x36')](_0x8ffb88);_0x417dcf[_0xd8aa('0x61')](_0x3dd2ed);return _0x417dcf;}});}else{return;}})[_0xd8aa('0x29')](function(_0x41d5a9){if(_0x41d5a9)_0x8ffb88=_0x41d5a9;return _[_0xd8aa('0x42')](_0x8ffb88,[_0xd8aa('0x65'),0x1]);})[_0xd8aa('0x29')](respondWithResult(_0x3cec88,null))[_0xd8aa('0x4a')](handleError(_0x3cec88,null));};function hasDefaultDashboard(_0x44a16f){var _0x3497a3=[0x65];return new BPromise(function(_0x1c6e62,_0x3bb8f6){try{if(_0x44a16f[_0xd8aa('0x5a')]){_0x1c6e62(_0x3497a3);}else{return db[_0xd8aa('0x5b')]['findOne']({'where':{'sectionId':_0x44a16f['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x3f4aff){_0x3f4aff?_0x1c6e62(_0x3497a3):_0x1c6e62();});}}catch(_0x47b401){_0x3bb8f6(_0x47b401);}});}function getCustomDashboards(_0x320a99){var _0x352bce=[];return new BPromise(function(_0x2c3239,_0x141043){try{if(_0x320a99[_0xd8aa('0x5a')]){return db['Dashboard'][_0xd8aa('0x48')]({'raw':!![]})[_0xd8aa('0x29')](function(_0x57eaff){_0x57eaff[_0xd8aa('0x68')](function(_0xb117cc){_0x352bce['push'](_0xb117cc['id']+0x1869f);});_0x2c3239(_0x352bce);});}else{return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x320a99['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x2c2915){_0x2c2915[_0xd8aa('0x68')](function(_0x2bfbaa){_0x352bce['push'](_0x2bfbaa[_0xd8aa('0x69')]+0x1869f);});_0x2c3239(_0x352bce);});}}catch(_0x580eb2){_0x141043(_0x580eb2);}});}function getPlugins(_0x44b53b){var _0x21e46a=[];return new BPromise(function(_0x2f6386,_0x5e490c){try{if(_0x44b53b[_0xd8aa('0x5a')]){return db['Plugin'][_0xd8aa('0x48')]({'raw':!![]})[_0xd8aa('0x29')](function(_0x1e1341){_0x1e1341[_0xd8aa('0x68')](function(_0x48db69){_0x21e46a[_0xd8aa('0x61')](_0x48db69['id']+0x15b38);});_0x2f6386(_0x21e46a);});}else{return db[_0xd8aa('0x5b')][_0xd8aa('0x48')]({'where':{'sectionId':_0x44b53b['id']},'raw':!![]})[_0xd8aa('0x29')](function(_0x4edac6){_0x4edac6[_0xd8aa('0x68')](function(_0x44ed5f){_0x21e46a[_0xd8aa('0x61')](_0x44ed5f[_0xd8aa('0x69')]+0x15b38);});_0x2f6386(_0x21e46a);});}}catch(_0x3cfcb9){_0x5e490c(_0x3cfcb9);}});}exports['addResources']=function(_0x5b0831,_0x3289cf){return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x5b0831[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](handleEntityNotFound(_0x3289cf,null))[_0xd8aa('0x29')](function(_0x3db85b){if(_0x3db85b){return db['sequelize'][_0xd8aa('0x56')](function(_0x237ed9){return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x2a9b73){if(_0x2a9b73){return db[_0xd8aa('0x58')][_0xd8aa('0x2a')]({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id'],'id':_[_0xd8aa('0x36')](_0x2a9b73,function(_0x414ddb){return _0x414ddb['id'];})},'transaction':_0x237ed9});}})['then'](function(_0x5e6075){var _0x554fb1=_[_0xd8aa('0x36')](_0x5b0831[_0xd8aa('0x4f')],function(_0x107d62){_0x107d62[_0xd8aa('0x5d')]=_0x5b0831['params']['id'];return _0x107d62;});return db[_0xd8aa('0x58')][_0xd8aa('0x6a')](_0x554fb1,{'raw':!![],'transaction':_0x237ed9});})['then'](function(_0x1cc629){var _0x2d3cd6=_[_0xd8aa('0x42')](_[_0xd8aa('0x36')](_0x1cc629,function(_0x149dc5){return _0x149dc5[_0xd8aa('0x57')]({'plain':!![]});}),{'includeAll':![]});if(_0x2d3cd6){return db[_0xd8aa('0x58')]['findAll']({'where':{'userProfileId':_0x5b0831[_0xd8aa('0x4c')]['id'],'sectionId':_['map'](_0x2d3cd6,function(_0x112535){return _0x112535[_0xd8aa('0x5c')];})},'attributes':['id','sectionId'],'raw':!![]})[_0xd8aa('0x29')](function(_0x13d59c){var _0x182cbd=_[_0xd8aa('0x36')](_0x5b0831[_0xd8aa('0x4f')],function(_0x1cd8aa){_0x1cd8aa[_0xd8aa('0x5d')]=_0x5b0831['params']['id'];return _0x1cd8aa;});return db[_0xd8aa('0x5b')][_0xd8aa('0x6a')](_0x182cbd,{'raw':!![],'transaction':_0x237ed9});});}})[_0xd8aa('0x4a')](handleError(_0x3289cf,null));});}})[_0xd8aa('0x29')](function(_0x4f1f80){var _0xdad00e=_[_0xd8aa('0x36')](_0x4f1f80,function(_0x5b590c){return _0x5b590c['get']({'plain':!![]});});})['then'](respondWithResult(_0x3289cf,null))['catch'](handleError(_0x3289cf,null));};exports[_0xd8aa('0x6b')]=function(_0x359ed6,_0xe8b39e,_0x47954e){return db[_0xd8aa('0x30')]['find']({'where':{'id':_0x359ed6[_0xd8aa('0x4c')]['id']}})['then'](handleEntityNotFound(_0xe8b39e,null))['then'](function(_0x50e12f){if(_0x50e12f){return _0x50e12f[_0xd8aa('0x6b')](_0x359ed6['query'][_0xd8aa('0x63')]);}})[_0xd8aa('0x29')](respondWithStatusCode(_0xe8b39e,null))[_0xd8aa('0x4a')](handleError(_0xe8b39e,null));};exports[_0xd8aa('0x6c')]=function(_0x161aaa,_0x4c164e){var _0x2a5d25={};if(!_0x161aaa['query']['section'])throw new Error(_0xd8aa('0x6d'));if(!_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x3d')](_0xd8aa('0x3e'))){_0x2a5d25['limit']=qs[_0xd8aa('0x20')](_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x20')]);_0x2a5d25[_0xd8aa('0x1f')]=qs['offset'](_0x161aaa[_0xd8aa('0x37')][_0xd8aa('0x1f')]);}return db[_0xd8aa('0x30')][_0xd8aa('0x4d')]({'where':{'id':_0x161aaa[_0xd8aa('0x4c')]['id']}})[_0xd8aa('0x29')](function(_0x3d5219){if(!_0x3d5219)throw new Error(_0xd8aa('0x6e')+_0x161aaa[_0xd8aa('0x4c')]['id']);return db['UserProfile'][_0xd8aa('0x6c')](_0x161aaa);})['then'](respondWithFilteredResult(_0x4c164e,_0x2a5d25))[_0xd8aa('0x4a')](handleError(_0x4c164e,null));};
\ No newline at end of file
index a6ae772..c5da8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49fe=['remove','emit','hasOwnProperty','hook','exports','events','save','update'];(function(_0xdeb8fe,_0x455878){var _0x4c7674=function(_0x439b27){while(--_0x439b27){_0xdeb8fe['push'](_0xdeb8fe['shift']());}};_0x4c7674(++_0x455878);}(_0x49fe,0x75));var _0xe49f=function(_0x34df13,_0x4126a5){_0x34df13=_0x34df13-0x0;var _0x2ad70b=_0x49fe[_0x34df13];return _0x2ad70b;};'use strict';var EventEmitter=require(_0xe49f('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xe49f('0x1'),'afterUpdate':_0xe49f('0x2'),'afterDestroy':_0xe49f('0x3')};function emitEvent(_0xb99c7){return function(_0x1cac40,_0x2db0ec,_0x1235f4){UserProfileEvents[_0xe49f('0x4')](_0xb99c7+':'+_0x1cac40['id'],_0x1cac40);UserProfileEvents[_0xe49f('0x4')](_0xb99c7,_0x1cac40);_0x1235f4(null);};}for(var e in events){if(events[_0xe49f('0x5')](e)){var event=events[e];UserProfile[_0xe49f('0x6')](e,emitEvent(event));}}module[_0xe49f('0x7')]=UserProfileEvents;
\ No newline at end of file
+var _0x47c5=['setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserProfile'];(function(_0x119163,_0x34b2ea){var _0x16bb37=function(_0x2f40c6){while(--_0x2f40c6){_0x119163['push'](_0x119163['shift']());}};_0x16bb37(++_0x34b2ea);}(_0x47c5,0x165));var _0x547c=function(_0x5a1cc9,_0x28f54d){_0x5a1cc9=_0x5a1cc9-0x0;var _0x471761=_0x47c5[_0x5a1cc9];return _0x471761;};'use strict';var EventEmitter=require(_0x547c('0x0'));var UserProfile=require(_0x547c('0x1'))['db'][_0x547c('0x2')];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x547c('0x3')](0x0);var events={'afterCreate':_0x547c('0x4'),'afterUpdate':_0x547c('0x5'),'afterDestroy':'remove'};function emitEvent(_0xddb439){return function(_0x16f4db,_0x5b48c9,_0x3e827e){UserProfileEvents[_0x547c('0x6')](_0xddb439+':'+_0x16f4db['id'],_0x16f4db);UserProfileEvents['emit'](_0xddb439,_0x16f4db);_0x3e827e(null);};}for(var e in events){if(events[_0x547c('0x7')](e)){var event=events[e];UserProfile[_0x547c('0x8')](e,emitEvent(event));}}module[_0x547c('0x9')]=UserProfileEvents;
\ No newline at end of file
index 1bb8cd3..78afbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfddf=['chat','dataValues','fax','mail','openchannel','whatsapp','./userProfile.attributes','../../components/parsers/qs','exports','models','field','findAll','then','associatedResources','map','filter','model','name','UserProfileResource','AnalyticExtractedReport','resourceId','type','catch','toLowerCase','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','JscriptyProject','contacts','Lists','ListId','CmCompany','globalcustomfields','CmCustomField','chatqueues','ChatQueue','chatwebsites','faxqueues','faxaccounts','FaxAccount','inboundroutes','internalroutes','outboundroutes','VoiceExtension','contexts','voicemails','VoiceMail','voicerecordings','VoiceRecording','Agents','membername','role','agent','Telephones','User','telephone','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','musiconholds','VoiceMusicOnHold','chanspies','VoiceChanSpy','Campaign','mailqueues','MailQueue','mailsubstatuses','openchannelqueues','openchannelaccounts','OpenchannelAccount','smsqueues','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','Team','voicequeues','users','agents','telephones','admin','user','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','Dashboard','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trunk','variables','Variable','plugins','Plugin','extractedreports','Reports','reportId','metrics','Sequelize','QueryTypes','SELECT','select','ui.','InteractionId','ui.createdAt','user_has_','where','ui.UserId\x20=\x20?','sequelize','query','define','UserProfile','raw','section','mergeResources','Invalid\x20section\x20\x27','push','find','params','all','isEmpty','union','length','ignore','rawAttributes','keys','filters','intersection','fields','attributes','hasOwnProperty','limit','offset','order','sort','pick','key','VIRTUAL','foreignKey','forEach','merge','options','autoAssociation','includeAll','include','reportType','custom','CustomReports','count','rows','ids','customSorting','extraQueryConditions','CmContact','Tags','color','tag','ThroughTags','openTabs','true'];(function(_0x38a52b,_0x2b718c){var _0x5c9d06=function(_0x5a2fad){while(--_0x5a2fad){_0x38a52b['push'](_0x38a52b['shift']());}};_0x5c9d06(++_0x2b718c);}(_0xfddf,0xc5));var _0xffdd=function(_0xccd60b,_0x5523be){_0xccd60b=_0xccd60b-0x0;var _0x2f352c=_0xfddf[_0xccd60b];return _0x2f352c;};'use strict';var _=require('lodash');var attributes=require(_0xffdd('0x0'));var qs=require(_0xffdd('0x1'));var squel=require('squel');module[_0xffdd('0x2')]=function(_0x2d3c96){var _0x488908=_0x2d3c96[_0xffdd('0x3')];function _0x36817a(_0x17b4b9,_0x5de4b3){return new Promise(function(_0x121601,_0x9a1447){if(!_0x5de4b3)return _0x121601(null);var _0x1c8dc8=_0x5de4b3['filter']?{[_0x5de4b3['filter'][_0xffdd('0x4')]]:_0x5de4b3['filter']['value']}:undefined;return _0x488908[_0x17b4b9][_0xffdd('0x5')]({'where':_0x1c8dc8,'raw':!![]})[_0xffdd('0x6')](function(_0x469722){_0x5de4b3[_0xffdd('0x7')]=_[_0xffdd('0x8')](_0x469722,'id');_0x121601(_0x5de4b3);})['catch'](function(_0x18b0c7){_0x9a1447(_0x18b0c7);});});}function _0x577861(_0x771674,_0xb3f1aa){return new Promise(function(_0x20f5ab,_0x22d235){var _0x49cc82=_0x771674[_0xffdd('0x9')]?{[_0x771674[_0xffdd('0x9')][_0xffdd('0x4')]]:_0x771674[_0xffdd('0x9')]['value']}:undefined;return _0x488908[_0x771674[_0xffdd('0xa')]][_0xffdd('0x5')]({'where':_0x49cc82,'raw':!![]})['then'](function(_0x37b691){_0xb3f1aa['associatedResources']=_[_0xffdd('0x8')](_0x37b691,function(_0xeb3e94){return _0xeb3e94[_0xffdd('0xb')];});_0x20f5ab(_0xb3f1aa);})['catch'](function(_0x23716e){_0x22d235(_0x23716e);});});}function _0xe0bfc3(_0x201403,_0x24830a,_0x7257a2){if(!_0x24830a)return Promise['resolve'](null);return new Promise(function(_0x1760d9,_0x1c0f53){return _0x488908[_0xffdd('0xc')][_0xffdd('0x5')]({'where':{'sectionId':_0x24830a['id']},'raw':!![]})[_0xffdd('0x6')](function(_0x42f3f0){if(_0x201403[_0xffdd('0x4')]&&_0x201403[_0xffdd('0x4')]!=='id'){_0x24830a[_0xffdd('0x7')]=_['map'](_0x42f3f0,function(_0x4e2b76){return _0x4e2b76[_0x201403['field']];});}else{if(_0x7257a2===_0xffdd('0xd')){_0x24830a['associatedResources']=_[_0xffdd('0x8')](_0x42f3f0,function(_0x253d74){return{'id':_0x253d74[_0xffdd('0xe')],'type':_0x253d74[_0xffdd('0xf')]};});}else{_0x24830a[_0xffdd('0x7')]=_['map'](_0x42f3f0,function(_0xad6374){return _0xad6374['resourceId'];});}}_0x1760d9(_0x24830a);})[_0xffdd('0x10')](function(_0x829dc){_0x1c0f53(_0x829dc);});});}function _0x176881(_0x1a6f7c,_0x2e69c9){var _0x3fcc2a={'parentSections':[]};switch(_0x1a6f7c[_0xffdd('0x11')]()){case'squareprojects':_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x13');break;case _0xffdd('0x14'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x15');break;case _0xffdd('0x16'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x17');_0x3fcc2a[_0xffdd('0x18')]=[{'name':_0xffdd('0x19'),'field':_0xffdd('0xb'),'foreignKey':_0xffdd('0x1a')}];break;case _0xffdd('0x1b'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x1c');break;case _0xffdd('0x1d'):_0x3fcc2a[_0xffdd('0x12')]='CmContact';_0x3fcc2a[_0xffdd('0x18')]=[{'name':_0xffdd('0x1e'),'field':'id','foreignKey':_0xffdd('0x1f')}];break;case'lists':_0x3fcc2a[_0xffdd('0x12')]='CmList';break;case'companies':_0x3fcc2a['childModel']=_0xffdd('0x20');break;case _0xffdd('0x21'):_0x3fcc2a['childModel']=_0xffdd('0x22');break;case _0xffdd('0x23'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x24');break;case _0xffdd('0x25'):_0x3fcc2a[_0xffdd('0x12')]='ChatWebsite';break;case _0xffdd('0x26'):_0x3fcc2a[_0xffdd('0x12')]='FaxQueue';break;case _0xffdd('0x27'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x28');break;case _0xffdd('0x29'):case _0xffdd('0x2a'):case _0xffdd('0x2b'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x2c');break;case _0xffdd('0x2d'):_0x3fcc2a[_0xffdd('0x12')]='VoiceContext';break;case _0xffdd('0x2e'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x2f');break;case _0xffdd('0x30'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x31');_0x3fcc2a['parentSections']=[{'name':_0xffdd('0x32'),'field':'name','foreignKey':_0xffdd('0x33'),'model':'User','filter':{'field':_0xffdd('0x34'),'value':[_0xffdd('0x35')]}},{'name':_0xffdd('0x36'),'field':_0xffdd('0xb'),'foreignKey':'membername','model':_0xffdd('0x37'),'filter':{'field':_0xffdd('0x34'),'value':[_0xffdd('0x38')]}},{'name':_0xffdd('0x39'),'field':_0xffdd('0xb'),'foreignKey':_0xffdd('0x3a'),'model':_0xffdd('0x3b'),'filter':{'field':_0xffdd('0xf'),'value':[_0xffdd('0x3c')]}},{'name':_0xffdd('0x3d'),'field':_0xffdd('0xb'),'foreignKey':'queue','model':_0xffdd('0x3b'),'filter':{'field':_0xffdd('0xf'),'value':['outbound']}}];break;case _0xffdd('0x3e'):_0x3fcc2a['childModel']=_0xffdd('0x3f');break;case _0xffdd('0x40'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x41');break;case'voiceprefixes':_0x3fcc2a[_0xffdd('0x12')]='VoicePrefix';break;case'ivrcampaigns':_0x3fcc2a['childModel']=_0xffdd('0x42');break;case _0xffdd('0x43'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x44');break;case'mailaccounts':_0x3fcc2a[_0xffdd('0x12')]='MailAccount';break;case _0xffdd('0x45'):_0x3fcc2a[_0xffdd('0x12')]='MailSubstatus';break;case _0xffdd('0x46'):_0x3fcc2a[_0xffdd('0x12')]='OpenchannelQueue';break;case _0xffdd('0x47'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x48');break;case _0xffdd('0x49'):_0x3fcc2a['childModel']='SmsQueue';break;case _0xffdd('0x4a'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x4b');break;case _0xffdd('0x4c'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x4d');break;case _0xffdd('0x4e'):_0x3fcc2a['childModel']=_0xffdd('0x4f');break;case _0xffdd('0x50'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x51');break;case _0xffdd('0x52'):case'queuecampaigns':_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x3b');if(_0x2e69c9){_0x3fcc2a[_0xffdd('0x18')]=[{'name':'VoiceQueues'},{'name':_0xffdd('0x3d')}];}break;case _0xffdd('0x53'):case _0xffdd('0x54'):case _0xffdd('0x55'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x37');if(_0x2e69c9){_0x3fcc2a[_0xffdd('0x18')]=[{'name':'Users','filter':{'field':_0xffdd('0x34'),'value':[_0xffdd('0x56'),_0xffdd('0x57')]},'ignore':!![]},{'name':_0xffdd('0x32')},{'name':_0xffdd('0x36')}];}break;case _0xffdd('0x58'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x59');break;case _0xffdd('0x5a'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x5b');break;case'freshdeskaccounts':_0x3fcc2a[_0xffdd('0x12')]='FreshdeskAccount';break;case _0xffdd('0x5c'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x5d');break;case _0xffdd('0x5e'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x5f');break;case _0xffdd('0x60'):_0x3fcc2a[_0xffdd('0x12')]='ZohoAccount';break;case _0xffdd('0x61'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x37');break;case _0xffdd('0x62'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x63');break;case _0xffdd('0x64'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x65');break;case'customdashboards':_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x66');break;case'intervals':_0x3fcc2a[_0xffdd('0x12')]='Interval';break;case _0xffdd('0x67'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x68');break;case _0xffdd('0x69'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x6a');break;case _0xffdd('0x6b'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x6c');break;case _0xffdd('0x6d'):_0x3fcc2a['childModel']=_0xffdd('0x6e');break;case _0xffdd('0x6f'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x70');break;case _0xffdd('0x71'):_0x3fcc2a['childModel']='Trigger';break;case'trunks':_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x72');break;case _0xffdd('0x73'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x74');break;case _0xffdd('0x75'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0x76');break;case _0xffdd('0x77'):_0x3fcc2a[_0xffdd('0x12')]=_0xffdd('0xd');_0x3fcc2a['parentSections']=[{'name':_0xffdd('0x78'),'field':'id','foreignKey':_0xffdd('0x79')}];break;case _0xffdd('0x7a'):_0x3fcc2a[_0xffdd('0x12')]='AnalyticMetric';break;}return _0x3fcc2a;}function _0x353e55(_0x1f5024,_0x3928bc){var _0x29c7da=_0x1f5024['charAt'](0x0)['toUpperCase']()+_0x1f5024['slice'](0x1);var _0x55da68={'type':_0x488908[_0xffdd('0x7b')][_0xffdd('0x7c')][_0xffdd('0x7d')],'raw':!![]};return new Promise(function(_0x52a5fa,_0x2bf40b){var _0x8193bc=squel[_0xffdd('0x7e')]()[_0xffdd('0x4')](_0xffdd('0x7f')+_0x29c7da+_0xffdd('0x80'),'id')['field'](_0xffdd('0x81'))['from'](_0xffdd('0x82')+_0x1f5024+'_interactions','ui')[_0xffdd('0x83')](_0xffdd('0x84'),_0x3928bc['id']);return _0x488908[_0xffdd('0x85')][_0xffdd('0x86')](_0x8193bc['toString'](),_0x55da68)[_0xffdd('0x6')](function(_0x5715e9){_0x3928bc[_0x29c7da+'OpenTabs']=_0x5715e9;_0x52a5fa(_0x5715e9);})[_0xffdd('0x10')](function(_0x5b607d){_0x2bf40b(_0x5b607d);});});}return _0x2d3c96[_0xffdd('0x87')](_0xffdd('0x88'),attributes,{'tableName':'user_profiles','paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x542e6e){var _0x18d412={'raw':_0x542e6e[_0xffdd('0x86')][_0xffdd('0x89')],'where':{}};var _0x2995dc={};var _0x528014={'count':0x0,'rows':[]};var _0x3cc8f2=_0x542e6e[_0xffdd('0x86')][_0xffdd('0x8a')];var _0x1cc93b=_0x542e6e[_0xffdd('0x86')][_0xffdd('0x8b')]||![];var _0x175282=_0x176881(_0x3cc8f2,_0x1cc93b);if(!_0x175282[_0xffdd('0x12')])throw new Error(_0xffdd('0x8c')+_0x3cc8f2+'\x27');var _0xe542e7=[{'name':_0x3cc8f2}];if(!_['isEmpty'](_0x175282[_0xffdd('0x18')]))_0xe542e7=_0x175282['parentSections'];var _0x3c9994=[];for(var _0x11f5c6=0x0;_0x11f5c6<_0xe542e7['length'];_0x11f5c6++){_0x3c9994[_0xffdd('0x8d')](_0x488908['UserProfileSection'][_0xffdd('0x8e')]({'where':{'userProfileId':_0x542e6e[_0xffdd('0x8f')]['id'],'name':_0xe542e7[_0x11f5c6]['name']},'raw':!![]}));}return Promise[_0xffdd('0x90')](_0x3c9994)[_0xffdd('0x6')](function(_0x49a1f7){var _0x1d9990=_[_0xffdd('0x9')](_0x49a1f7,function(_0x40483){return _0x40483?_0x40483:undefined;});var _0x41b0a6=_[_0xffdd('0x9')](_0xe542e7,['ignore',!![]]);var _0x1f97c4=_[_0xffdd('0x91')](_0x1d9990)&&_[_0xffdd('0x91')](_0x41b0a6)?null:_[_0xffdd('0x92')](_0x41b0a6,_0x1d9990);if(!_0x1f97c4)return null;var _0x317383=[];for(var _0x17cda0=0x0;_0x17cda0<_0x1f97c4[_0xffdd('0x93')];_0x17cda0++){var _0x85e896=_[_0xffdd('0x8e')](_0xe542e7,function(_0x3a3695){return _0x1f97c4[_0x17cda0]?_0x3a3695['name']===_0x1f97c4[_0x17cda0][_0xffdd('0xb')]:null;});if(_0x85e896){if(_0x1f97c4[_0x17cda0][_0xffdd('0x94')]){_0x317383['push'](_0x36817a(_0x175282[_0xffdd('0x12')],_0x1f97c4[_0x17cda0]));}else{if(!_0x1f97c4[_0x17cda0]['autoAssociation']){_0x317383[_0xffdd('0x8d')](_0xe0bfc3(_0x85e896,_0x1f97c4[_0x17cda0],_0x175282[_0xffdd('0x12')]));}else{if(_0x85e896[_0xffdd('0xa')]){_0x317383['push'](_0x577861(_0x85e896,_0x1f97c4[_0x17cda0]));}}}}}return Promise[_0xffdd('0x90')](_0x317383);})[_0xffdd('0x6')](function(_0x2281f3){var _0x2f1687=_0x2281f3;var _0x59c14e=null;if(_0x2f1687){_0x59c14e=_0x2f1687[_0xffdd('0x93')]===0x1?_0x2f1687[0x0]:null;}if(!_0x59c14e&&!_0x2f1687)return _0x528014;var _0x220b5e=_0x488908[_0x175282[_0xffdd('0x12')]][_0xffdd('0x95')];_0x2995dc[_0xffdd('0xa')]=_['keys'](_0x220b5e);_0x2995dc[_0xffdd('0x86')]=_[_0xffdd('0x96')](_0x542e6e[_0xffdd('0x86')]);_0x2995dc[_0xffdd('0x97')]=_[_0xffdd('0x98')](_0x2995dc['model'],_0x2995dc[_0xffdd('0x86')]);_0x18d412['attributes']=_['intersection'](_0x2995dc[_0xffdd('0xa')],qs[_0xffdd('0x99')](_0x542e6e[_0xffdd('0x86')][_0xffdd('0x99')]));_0x18d412[_0xffdd('0x9a')]=_0x18d412[_0xffdd('0x9a')][_0xffdd('0x93')]?_0x18d412[_0xffdd('0x9a')]:_0x2995dc[_0xffdd('0xa')];if(!_0x542e6e[_0xffdd('0x86')][_0xffdd('0x9b')]('nolimit')){_0x18d412[_0xffdd('0x9c')]=qs[_0xffdd('0x9c')](_0x542e6e[_0xffdd('0x86')]['limit']);_0x18d412['offset']=qs[_0xffdd('0x9d')](_0x542e6e['query'][_0xffdd('0x9d')]);}_0x18d412[_0xffdd('0x9e')]=qs['sort'](_0x542e6e[_0xffdd('0x86')][_0xffdd('0x9f')]);_0x18d412[_0xffdd('0x83')]=qs['filters'](_[_0xffdd('0xa0')](_0x542e6e['query'],_0x2995dc[_0xffdd('0x97')]));if(_0x542e6e['query'][_0xffdd('0x9')]){_0x18d412[_0xffdd('0x83')]=_['merge'](_0x18d412['where'],{'$or':_['map'](_0x220b5e,function(_0x1b2f5d){if(_0x1b2f5d['type'][_0xffdd('0xa1')]!==_0xffdd('0xa2')){var _0x317b62={};_0x317b62[_0x1b2f5d[_0xffdd('0x4')]]={'$like':'%'+_0x542e6e[_0xffdd('0x86')]['filter']+'%'};return _0x317b62;}})});}var _0x244fa7=[];var _0x34039e=null;var _0xda3063={};if(_0x59c14e){_0x34039e=_[_0xffdd('0x8e')](_0xe542e7,['name',_0x59c14e[_0xffdd('0xb')]]);if(_0x34039e['field']){_0xda3063={};if(_0x175282[_0xffdd('0x12')]==='AnalyticExtractedReport'){_0xda3063[_0x34039e[_0xffdd('0xa3')]]=_[_0xffdd('0x8')](_0x59c14e[_0xffdd('0x7')],'id');}else{_0xda3063[_0x34039e[_0xffdd('0xa3')]]=_0x59c14e[_0xffdd('0x7')];}_0x244fa7[_0xffdd('0x8d')](_0xda3063);}else{_0x18d412[_0xffdd('0x83')]['id']=_0x59c14e[_0xffdd('0x7')];}}else{for(var _0x3f4745=0x0;_0x3f4745<_0x2f1687['length'];_0x3f4745++){_0x34039e=_['find'](_0xe542e7,[_0xffdd('0xb'),_0x2f1687[_0x3f4745][_0xffdd('0xb')]]);if(_0x34039e[_0xffdd('0x4')]){_0xda3063={};_0xda3063[_0x34039e[_0xffdd('0xa3')]]=_0x2f1687[_0x3f4745][_0xffdd('0x7')];_0x244fa7[_0xffdd('0x8d')](_0xda3063);}else{if(!_0x18d412[_0xffdd('0x83')]['id'])_0x18d412[_0xffdd('0x83')]['id']=[];_0x2f1687[_0x3f4745][_0xffdd('0x7')][_0xffdd('0xa4')](function(_0x2ea070){_0x18d412['where']['id'][_0xffdd('0x8d')](_0x2ea070);});}}}if(!_[_0xffdd('0x91')](_0x244fa7)){_0x18d412['where']=_[_0xffdd('0xa5')](_0x18d412['where'],{'$and':{'$or':_0x244fa7}});}_0x18d412=_['merge']({},_0x18d412,_0x542e6e[_0xffdd('0xa6')]);if(_0x59c14e&&!_0x59c14e[_0xffdd('0xa7')]&&_0x175282[_0xffdd('0x12')]===_0xffdd('0xd')){if(_0x542e6e[_0xffdd('0x86')][_0xffdd('0xa8')]){_0x18d412[_0xffdd('0xa9')]=[{'all':!![]}];}return _0x488908[_0x175282['childModel']][_0xffdd('0x5')](_0x18d412)[_0xffdd('0x6')](function(_0x367562){var _0x3490cf=[];_0x367562[_0xffdd('0xa4')](function(_0x155b0b){var _0x3b7d11;switch(_0x155b0b[_0xffdd('0xaa')]){case'default':_0x3b7d11=_[_0xffdd('0x8e')](_0x59c14e['associatedResources'],function(_0x48890d){return _0x48890d['id']===_0x155b0b[_0xffdd('0x79')]&&_0x48890d['type']==='DefaultReports';});break;case _0xffdd('0xab'):_0x3b7d11=_['find'](_0x59c14e[_0xffdd('0x7')],function(_0x5079f5){return _0x5079f5['id']===_0x155b0b[_0xffdd('0x79')]&&_0x5079f5['type']===_0xffdd('0xac');});break;}if(_0x3b7d11)_0x3490cf[_0xffdd('0x8d')](_0x155b0b);});_0x528014[_0xffdd('0xad')]=_0x3490cf[_0xffdd('0x93')];_0x528014[_0xffdd('0xae')]=_0x3490cf;return _0x528014;});}else{if(!_['isEmpty'](_0x542e6e[_0xffdd('0x86')][_0xffdd('0xaf')])){_0x18d412['where']['id']=_0x18d412[_0xffdd('0x83')]['id']?_[_0xffdd('0x98')](_0x18d412[_0xffdd('0x83')]['id'],_0x542e6e[_0xffdd('0x86')][_0xffdd('0xaf')]):_0x542e6e[_0xffdd('0x86')][_0xffdd('0xaf')];if(_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb0')]){_0x18d412[_0xffdd('0x9e')]=_0x542e6e[_0xffdd('0x86')]['customSorting'];}}if(_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb1')]){_0x18d412[_0xffdd('0x83')]=_[_0xffdd('0xa5')](_0x18d412[_0xffdd('0x83')],{'$and':_0x542e6e['query'][_0xffdd('0xb1')]});}return _0x488908[_0x175282['childModel']][_0xffdd('0xad')]({'where':_0x18d412['where']})[_0xffdd('0x6')](function(_0x56445c){_0x528014['count']=_0x56445c;if(_0x542e6e[_0xffdd('0x86')][_0xffdd('0xa8')]){if(_0x175282[_0xffdd('0x12')]===_0xffdd('0xb2')){_0x18d412[_0xffdd('0xa9')]=[{'model':_0x488908[_0xffdd('0x6e')],'as':_0xffdd('0xb3'),'attributes':['id',_0xffdd('0xb'),_0xffdd('0xb4')],'required':_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb5')]?!![]:![]},{'model':_0x488908[_0xffdd('0x6e')],'as':_0xffdd('0xb6'),'attributes':['id',_0xffdd('0xb'),'color'],'through':_0x542e6e['query'][_0xffdd('0xb5')]?{'attributes':[],'where':{'TagId':_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb5')]||undefined}}:{},'required':_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb5')]?!![]:![]}];}else{_0x18d412[_0xffdd('0xa9')]=[{'all':!![]}];}}return _0x488908[_0x175282[_0xffdd('0x12')]][_0xffdd('0x5')](_0x18d412);})['then'](function(_0xf63d85){_0x528014[_0xffdd('0xae')]=_0xf63d85;if(_0x3cc8f2===_0xffdd('0x32')&&_0x542e6e[_0xffdd('0x86')][_0xffdd('0xb7')]===_0xffdd('0xb8')){var _0x6a959e=[];for(var _0x13b226=0x0;_0x13b226<_0x528014[_0xffdd('0xae')][_0xffdd('0x93')];_0x13b226++){_0x6a959e[_0xffdd('0x8d')](_0x353e55(_0xffdd('0xb9'),_0x528014[_0xffdd('0xae')][_0x13b226][_0xffdd('0xba')]));_0x6a959e['push'](_0x353e55('sms',_0x528014['rows'][_0x13b226][_0xffdd('0xba')]));_0x6a959e['push'](_0x353e55(_0xffdd('0xbb'),_0x528014[_0xffdd('0xae')][_0x13b226]['dataValues']));_0x6a959e[_0xffdd('0x8d')](_0x353e55(_0xffdd('0xbc'),_0x528014[_0xffdd('0xae')][_0x13b226][_0xffdd('0xba')]));_0x6a959e['push'](_0x353e55(_0xffdd('0xbd'),_0x528014['rows'][_0x13b226][_0xffdd('0xba')]));_0x6a959e['push'](_0x353e55(_0xffdd('0xbe'),_0x528014[_0xffdd('0xae')][_0x13b226][_0xffdd('0xba')]));}return Promise[_0xffdd('0x90')](_0x6a959e)[_0xffdd('0x6')](function(){return _0x528014;});}return _0x528014;});}});}}});};
\ No newline at end of file
+var _0x4c87=['CustomReports','rows','ids','customSorting','extraQueryConditions','count','Tags','color','tag','ThroughTags','true','chat','sms','dataValues','mail','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','field','value','findAll','then','map','model','associatedResources','name','catch','resolve','UserProfileResource','AnalyticExtractedReport','resourceId','type','toLowerCase','SquareProject','childModel','squarerecordings','SquareRecording','parentSections','SquareProjects','projectName','projects','contacts','Lists','ListId','lists','CmList','companies','CmCompany','globalcustomfields','CmCustomField','ChatQueue','chatwebsites','faxqueues','FaxQueue','FaxAccount','inboundroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','voicemails','voicerecordings','VoiceRecording','membername','User','role','agent','VoiceQueues','queue','VoiceQueue','inbound','QueueCampaigns','outbound','musiconholds','VoiceChanSpy','voiceprefixes','VoicePrefix','ivrcampaigns','mailqueues','MailQueue','mailaccounts','MailAccount','MailSubstatus','OpenchannelQueue','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','SmsAccount','whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','voicequeues','queuecampaigns','users','telephones','Users','admin','Agents','Telephones','zendeskaccounts','ZendeskAccount','salesforceaccounts','SalesforceAccount','freshdeskaccounts','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','vtigeraccounts','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','Interval','pauses','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','templates','Template','triggers','Trigger','trunks','Variable','plugins','Plugin','extractedreports','Reports','reportId','metrics','AnalyticMetric','charAt','toUpperCase','slice','QueryTypes','select','InteractionId','ui.createdAt','from','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','define','user_profiles','section','mergeResources','isEmpty','length','push','UserProfileSection','find','params','all','union','ignore','autoAssociation','keys','intersection','fields','attributes','hasOwnProperty','nolimit','limit','offset','order','sort','filters','pick','merge','key','foreignKey','forEach','options','includeAll','include','reportType','default','DefaultReports','custom'];(function(_0xd1513b,_0x3f9174){var _0x3b2581=function(_0x3ec539){while(--_0x3ec539){_0xd1513b['push'](_0xd1513b['shift']());}};_0x3b2581(++_0x3f9174);}(_0x4c87,0x1a3));var _0x74c8=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4c87[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x74c8('0x0'));var attributes=require(_0x74c8('0x1'));var qs=require(_0x74c8('0x2'));var squel=require(_0x74c8('0x3'));module[_0x74c8('0x4')]=function(_0x5aaf6e){var _0x23af30=_0x5aaf6e[_0x74c8('0x5')];function _0x4cfe19(_0xa8b427,_0x47cc0a){return new Promise(function(_0x306ebf,_0x25658c){if(!_0x47cc0a)return _0x306ebf(null);var _0x4a353a=_0x47cc0a['filter']?{[_0x47cc0a[_0x74c8('0x6')][_0x74c8('0x7')]]:_0x47cc0a['filter'][_0x74c8('0x8')]}:undefined;return _0x23af30[_0xa8b427][_0x74c8('0x9')]({'where':_0x4a353a,'raw':!![]})[_0x74c8('0xa')](function(_0x33808d){_0x47cc0a['associatedResources']=_[_0x74c8('0xb')](_0x33808d,'id');_0x306ebf(_0x47cc0a);})['catch'](function(_0x17ec17){_0x25658c(_0x17ec17);});});}function _0x1fd573(_0x377267,_0x1e0c10){return new Promise(function(_0x5352a0,_0x1906c6){var _0x427e1c=_0x377267[_0x74c8('0x6')]?{[_0x377267[_0x74c8('0x6')][_0x74c8('0x7')]]:_0x377267[_0x74c8('0x6')][_0x74c8('0x8')]}:undefined;return _0x23af30[_0x377267[_0x74c8('0xc')]][_0x74c8('0x9')]({'where':_0x427e1c,'raw':!![]})[_0x74c8('0xa')](function(_0x21bdea){_0x1e0c10[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x21bdea,function(_0x281872){return _0x281872[_0x74c8('0xe')];});_0x5352a0(_0x1e0c10);})[_0x74c8('0xf')](function(_0x5609e0){_0x1906c6(_0x5609e0);});});}function _0x4d3da4(_0x43c617,_0x60971b,_0x53d22e){if(!_0x60971b)return Promise[_0x74c8('0x10')](null);return new Promise(function(_0x572620,_0x52cd37){return _0x23af30[_0x74c8('0x11')][_0x74c8('0x9')]({'where':{'sectionId':_0x60971b['id']},'raw':!![]})[_0x74c8('0xa')](function(_0x1a0d70){if(_0x43c617[_0x74c8('0x7')]&&_0x43c617['field']!=='id'){_0x60971b[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x1a0d70,function(_0x17c0bc){return _0x17c0bc[_0x43c617[_0x74c8('0x7')]];});}else{if(_0x53d22e===_0x74c8('0x12')){_0x60971b[_0x74c8('0xd')]=_[_0x74c8('0xb')](_0x1a0d70,function(_0x245d25){return{'id':_0x245d25[_0x74c8('0x13')],'type':_0x245d25[_0x74c8('0x14')]};});}else{_0x60971b[_0x74c8('0xd')]=_['map'](_0x1a0d70,function(_0x5f27b4){return _0x5f27b4['resourceId'];});}}_0x572620(_0x60971b);})['catch'](function(_0x5de1c5){_0x52cd37(_0x5de1c5);});});}function _0x14335a(_0x407fdf,_0x340375){var _0x5e02ce={'parentSections':[]};switch(_0x407fdf[_0x74c8('0x15')]()){case'squareprojects':_0x5e02ce['childModel']=_0x74c8('0x16');break;case'odbc':_0x5e02ce[_0x74c8('0x17')]='SquareOdbc';break;case _0x74c8('0x18'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x19');_0x5e02ce[_0x74c8('0x1a')]=[{'name':_0x74c8('0x1b'),'field':_0x74c8('0xe'),'foreignKey':_0x74c8('0x1c')}];break;case _0x74c8('0x1d'):_0x5e02ce[_0x74c8('0x17')]='JscriptyProject';break;case _0x74c8('0x1e'):_0x5e02ce['childModel']='CmContact';_0x5e02ce['parentSections']=[{'name':_0x74c8('0x1f'),'field':'id','foreignKey':_0x74c8('0x20')}];break;case _0x74c8('0x21'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x22');break;case _0x74c8('0x23'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x24');break;case _0x74c8('0x25'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x26');break;case'chatqueues':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x27');break;case _0x74c8('0x28'):_0x5e02ce[_0x74c8('0x17')]='ChatWebsite';break;case _0x74c8('0x29'):_0x5e02ce['childModel']=_0x74c8('0x2a');break;case'faxaccounts':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x2b');break;case _0x74c8('0x2c'):case'internalroutes':case _0x74c8('0x2d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x2e');break;case _0x74c8('0x2f'):_0x5e02ce['childModel']=_0x74c8('0x30');break;case _0x74c8('0x31'):_0x5e02ce[_0x74c8('0x17')]='VoiceMail';break;case _0x74c8('0x32'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x33');_0x5e02ce[_0x74c8('0x1a')]=[{'name':'Agents','field':'name','foreignKey':_0x74c8('0x34'),'model':_0x74c8('0x35'),'filter':{'field':_0x74c8('0x36'),'value':[_0x74c8('0x37')]}},{'name':'Telephones','field':'name','foreignKey':'membername','model':_0x74c8('0x35'),'filter':{'field':_0x74c8('0x36'),'value':['telephone']}},{'name':_0x74c8('0x38'),'field':_0x74c8('0xe'),'foreignKey':_0x74c8('0x39'),'model':_0x74c8('0x3a'),'filter':{'field':_0x74c8('0x14'),'value':[_0x74c8('0x3b')]}},{'name':_0x74c8('0x3c'),'field':'name','foreignKey':_0x74c8('0x39'),'model':'VoiceQueue','filter':{'field':_0x74c8('0x14'),'value':[_0x74c8('0x3d')]}}];break;case _0x74c8('0x3e'):_0x5e02ce[_0x74c8('0x17')]='VoiceMusicOnHold';break;case'chanspies':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x3f');break;case _0x74c8('0x40'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x41');break;case _0x74c8('0x42'):_0x5e02ce[_0x74c8('0x17')]='Campaign';break;case _0x74c8('0x43'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x44');break;case _0x74c8('0x45'):_0x5e02ce['childModel']=_0x74c8('0x46');break;case'mailsubstatuses':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x47');break;case'openchannelqueues':_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x48');break;case _0x74c8('0x49'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4a');break;case _0x74c8('0x4b'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4c');break;case _0x74c8('0x4d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x4e');break;case _0x74c8('0x4f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x50');break;case _0x74c8('0x51'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x52');break;case'teams':_0x5e02ce[_0x74c8('0x17')]='Team';break;case _0x74c8('0x53'):case _0x74c8('0x54'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x3a');if(_0x340375){_0x5e02ce[_0x74c8('0x1a')]=[{'name':_0x74c8('0x38')},{'name':'QueueCampaigns'}];}break;case _0x74c8('0x55'):case'agents':case _0x74c8('0x56'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x35');if(_0x340375){_0x5e02ce['parentSections']=[{'name':_0x74c8('0x57'),'filter':{'field':'role','value':[_0x74c8('0x58'),'user']},'ignore':!![]},{'name':_0x74c8('0x59')},{'name':_0x74c8('0x5a')}];}break;case _0x74c8('0x5b'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x5c');break;case _0x74c8('0x5d'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x5e');break;case _0x74c8('0x5f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x60');break;case _0x74c8('0x61'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x62');break;case _0x74c8('0x63'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x64');break;case _0x74c8('0x65'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x66');break;case _0x74c8('0x67'):_0x5e02ce[_0x74c8('0x17')]='User';break;case _0x74c8('0x68'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x69');break;case _0x74c8('0x6a'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x6b');break;case _0x74c8('0x6c'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x6d');break;case'intervals':_0x5e02ce['childModel']=_0x74c8('0x6e');break;case _0x74c8('0x6f'):_0x5e02ce['childModel']=_0x74c8('0x70');break;case _0x74c8('0x71'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x72');break;case _0x74c8('0x73'):_0x5e02ce['childModel']=_0x74c8('0x74');break;case _0x74c8('0x75'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x76');break;case _0x74c8('0x77'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x78');break;case _0x74c8('0x79'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x7a');break;case _0x74c8('0x7b'):_0x5e02ce[_0x74c8('0x17')]='Trunk';break;case'variables':_0x5e02ce['childModel']=_0x74c8('0x7c');break;case _0x74c8('0x7d'):_0x5e02ce['childModel']=_0x74c8('0x7e');break;case _0x74c8('0x7f'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x12');_0x5e02ce['parentSections']=[{'name':_0x74c8('0x80'),'field':'id','foreignKey':_0x74c8('0x81')}];break;case _0x74c8('0x82'):_0x5e02ce[_0x74c8('0x17')]=_0x74c8('0x83');break;}return _0x5e02ce;}function _0x5cedf9(_0x2174d9,_0x3e3b44){var _0x34ee4b=_0x2174d9[_0x74c8('0x84')](0x0)[_0x74c8('0x85')]()+_0x2174d9[_0x74c8('0x86')](0x1);var _0x1d73e6={'type':_0x23af30['Sequelize'][_0x74c8('0x87')]['SELECT'],'raw':!![]};return new Promise(function(_0x2224f9,_0x17f6fa){var _0x483064=squel[_0x74c8('0x88')]()[_0x74c8('0x7')]('ui.'+_0x34ee4b+_0x74c8('0x89'),'id')[_0x74c8('0x7')](_0x74c8('0x8a'))[_0x74c8('0x8b')](_0x74c8('0x8c')+_0x2174d9+_0x74c8('0x8d'),'ui')[_0x74c8('0x8e')](_0x74c8('0x8f'),_0x3e3b44['id']);return _0x23af30[_0x74c8('0x90')][_0x74c8('0x91')](_0x483064[_0x74c8('0x92')](),_0x1d73e6)[_0x74c8('0xa')](function(_0x317943){_0x3e3b44[_0x34ee4b+'OpenTabs']=_0x317943;_0x2224f9(_0x317943);})['catch'](function(_0xed4a0c){_0x17f6fa(_0xed4a0c);});});}return _0x5aaf6e[_0x74c8('0x93')]('UserProfile',attributes,{'tableName':_0x74c8('0x94'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x10c28){var _0xa2f73c={'raw':_0x10c28['query']['raw'],'where':{}};var _0x3f5c23={};var _0xdaf4a5={'count':0x0,'rows':[]};var _0x182b45=_0x10c28[_0x74c8('0x91')][_0x74c8('0x95')];var _0x4e2fa3=_0x10c28[_0x74c8('0x91')][_0x74c8('0x96')]||![];var _0x36a322=_0x14335a(_0x182b45,_0x4e2fa3);if(!_0x36a322[_0x74c8('0x17')])throw new Error('Invalid\x20section\x20\x27'+_0x182b45+'\x27');var _0xf3f7fc=[{'name':_0x182b45}];if(!_[_0x74c8('0x97')](_0x36a322[_0x74c8('0x1a')]))_0xf3f7fc=_0x36a322[_0x74c8('0x1a')];var _0x2dc9dd=[];for(var _0x3375fa=0x0;_0x3375fa<_0xf3f7fc[_0x74c8('0x98')];_0x3375fa++){_0x2dc9dd[_0x74c8('0x99')](_0x23af30[_0x74c8('0x9a')][_0x74c8('0x9b')]({'where':{'userProfileId':_0x10c28[_0x74c8('0x9c')]['id'],'name':_0xf3f7fc[_0x3375fa][_0x74c8('0xe')]},'raw':!![]}));}return Promise[_0x74c8('0x9d')](_0x2dc9dd)[_0x74c8('0xa')](function(_0x210252){var _0x5d0a4f=_[_0x74c8('0x6')](_0x210252,function(_0x297f72){return _0x297f72?_0x297f72:undefined;});var _0x39feff=_[_0x74c8('0x6')](_0xf3f7fc,['ignore',!![]]);var _0xf78948=_[_0x74c8('0x97')](_0x5d0a4f)&&_[_0x74c8('0x97')](_0x39feff)?null:_[_0x74c8('0x9e')](_0x39feff,_0x5d0a4f);if(!_0xf78948)return null;var _0x3586a1=[];for(var _0x2e15e7=0x0;_0x2e15e7<_0xf78948[_0x74c8('0x98')];_0x2e15e7++){var _0x239a55=_[_0x74c8('0x9b')](_0xf3f7fc,function(_0x2021f5){return _0xf78948[_0x2e15e7]?_0x2021f5['name']===_0xf78948[_0x2e15e7][_0x74c8('0xe')]:null;});if(_0x239a55){if(_0xf78948[_0x2e15e7][_0x74c8('0x9f')]){_0x3586a1[_0x74c8('0x99')](_0x4cfe19(_0x36a322['childModel'],_0xf78948[_0x2e15e7]));}else{if(!_0xf78948[_0x2e15e7][_0x74c8('0xa0')]){_0x3586a1[_0x74c8('0x99')](_0x4d3da4(_0x239a55,_0xf78948[_0x2e15e7],_0x36a322[_0x74c8('0x17')]));}else{if(_0x239a55['model']){_0x3586a1[_0x74c8('0x99')](_0x1fd573(_0x239a55,_0xf78948[_0x2e15e7]));}}}}}return Promise[_0x74c8('0x9d')](_0x3586a1);})[_0x74c8('0xa')](function(_0x3ddaac){var _0x14d854=_0x3ddaac;var _0x238f7b=null;if(_0x14d854){_0x238f7b=_0x14d854[_0x74c8('0x98')]===0x1?_0x14d854[0x0]:null;}if(!_0x238f7b&&!_0x14d854)return _0xdaf4a5;var _0x17cc78=_0x23af30[_0x36a322[_0x74c8('0x17')]]['rawAttributes'];_0x3f5c23[_0x74c8('0xc')]=_['keys'](_0x17cc78);_0x3f5c23[_0x74c8('0x91')]=_[_0x74c8('0xa1')](_0x10c28['query']);_0x3f5c23['filters']=_[_0x74c8('0xa2')](_0x3f5c23[_0x74c8('0xc')],_0x3f5c23[_0x74c8('0x91')]);_0xa2f73c['attributes']=_[_0x74c8('0xa2')](_0x3f5c23[_0x74c8('0xc')],qs['fields'](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa3')]));_0xa2f73c[_0x74c8('0xa4')]=_0xa2f73c[_0x74c8('0xa4')][_0x74c8('0x98')]?_0xa2f73c[_0x74c8('0xa4')]:_0x3f5c23[_0x74c8('0xc')];if(!_0x10c28[_0x74c8('0x91')][_0x74c8('0xa5')](_0x74c8('0xa6'))){_0xa2f73c['limit']=qs[_0x74c8('0xa7')](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa7')]);_0xa2f73c[_0x74c8('0xa8')]=qs[_0x74c8('0xa8')](_0x10c28[_0x74c8('0x91')][_0x74c8('0xa8')]);}_0xa2f73c[_0x74c8('0xa9')]=qs[_0x74c8('0xaa')](_0x10c28['query'][_0x74c8('0xaa')]);_0xa2f73c[_0x74c8('0x8e')]=qs[_0x74c8('0xab')](_[_0x74c8('0xac')](_0x10c28[_0x74c8('0x91')],_0x3f5c23[_0x74c8('0xab')]));if(_0x10c28[_0x74c8('0x91')][_0x74c8('0x6')]){_0xa2f73c['where']=_[_0x74c8('0xad')](_0xa2f73c[_0x74c8('0x8e')],{'$or':_[_0x74c8('0xb')](_0x17cc78,function(_0xfe9469){if(_0xfe9469[_0x74c8('0x14')][_0x74c8('0xae')]!=='VIRTUAL'){var _0x45621f={};_0x45621f[_0xfe9469['field']]={'$like':'%'+_0x10c28[_0x74c8('0x91')][_0x74c8('0x6')]+'%'};return _0x45621f;}})});}var _0x228392=[];var _0x46f261=null;var _0x4b90a4={};if(_0x238f7b){_0x46f261=_[_0x74c8('0x9b')](_0xf3f7fc,[_0x74c8('0xe'),_0x238f7b[_0x74c8('0xe')]]);if(_0x46f261['field']){_0x4b90a4={};if(_0x36a322['childModel']===_0x74c8('0x12')){_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_[_0x74c8('0xb')](_0x238f7b[_0x74c8('0xd')],'id');}else{_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_0x238f7b[_0x74c8('0xd')];}_0x228392[_0x74c8('0x99')](_0x4b90a4);}else{_0xa2f73c[_0x74c8('0x8e')]['id']=_0x238f7b[_0x74c8('0xd')];}}else{for(var _0x24534e=0x0;_0x24534e<_0x14d854[_0x74c8('0x98')];_0x24534e++){_0x46f261=_[_0x74c8('0x9b')](_0xf3f7fc,['name',_0x14d854[_0x24534e]['name']]);if(_0x46f261[_0x74c8('0x7')]){_0x4b90a4={};_0x4b90a4[_0x46f261[_0x74c8('0xaf')]]=_0x14d854[_0x24534e]['associatedResources'];_0x228392[_0x74c8('0x99')](_0x4b90a4);}else{if(!_0xa2f73c['where']['id'])_0xa2f73c[_0x74c8('0x8e')]['id']=[];_0x14d854[_0x24534e][_0x74c8('0xd')][_0x74c8('0xb0')](function(_0x5e4fef){_0xa2f73c['where']['id']['push'](_0x5e4fef);});}}}if(!_[_0x74c8('0x97')](_0x228392)){_0xa2f73c[_0x74c8('0x8e')]=_['merge'](_0xa2f73c[_0x74c8('0x8e')],{'$and':{'$or':_0x228392}});}_0xa2f73c=_[_0x74c8('0xad')]({},_0xa2f73c,_0x10c28[_0x74c8('0xb1')]);if(_0x238f7b&&!_0x238f7b[_0x74c8('0xa0')]&&_0x36a322[_0x74c8('0x17')]==='AnalyticExtractedReport'){if(_0x10c28['query'][_0x74c8('0xb2')]){_0xa2f73c[_0x74c8('0xb3')]=[{'all':!![]}];}return _0x23af30[_0x36a322['childModel']]['findAll'](_0xa2f73c)[_0x74c8('0xa')](function(_0x7e4b83){var _0x5ec8fc=[];_0x7e4b83['forEach'](function(_0x47aad9){var _0x56c996;switch(_0x47aad9[_0x74c8('0xb4')]){case _0x74c8('0xb5'):_0x56c996=_['find'](_0x238f7b[_0x74c8('0xd')],function(_0x270012){return _0x270012['id']===_0x47aad9[_0x74c8('0x81')]&&_0x270012[_0x74c8('0x14')]===_0x74c8('0xb6');});break;case _0x74c8('0xb7'):_0x56c996=_[_0x74c8('0x9b')](_0x238f7b[_0x74c8('0xd')],function(_0x9d049){return _0x9d049['id']===_0x47aad9[_0x74c8('0x81')]&&_0x9d049[_0x74c8('0x14')]===_0x74c8('0xb8');});break;}if(_0x56c996)_0x5ec8fc[_0x74c8('0x99')](_0x47aad9);});_0xdaf4a5['count']=_0x5ec8fc[_0x74c8('0x98')];_0xdaf4a5[_0x74c8('0xb9')]=_0x5ec8fc;return _0xdaf4a5;});}else{if(!_[_0x74c8('0x97')](_0x10c28['query'][_0x74c8('0xba')])){_0xa2f73c[_0x74c8('0x8e')]['id']=_0xa2f73c[_0x74c8('0x8e')]['id']?_['intersection'](_0xa2f73c[_0x74c8('0x8e')]['id'],_0x10c28[_0x74c8('0x91')][_0x74c8('0xba')]):_0x10c28[_0x74c8('0x91')]['ids'];if(_0x10c28[_0x74c8('0x91')][_0x74c8('0xbb')]){_0xa2f73c[_0x74c8('0xa9')]=_0x10c28[_0x74c8('0x91')][_0x74c8('0xbb')];}}if(_0x10c28[_0x74c8('0x91')][_0x74c8('0xbc')]){_0xa2f73c[_0x74c8('0x8e')]=_[_0x74c8('0xad')](_0xa2f73c[_0x74c8('0x8e')],{'$and':_0x10c28['query'][_0x74c8('0xbc')]});}return _0x23af30[_0x36a322[_0x74c8('0x17')]][_0x74c8('0xbd')]({'where':_0xa2f73c[_0x74c8('0x8e')]})[_0x74c8('0xa')](function(_0x63e630){_0xdaf4a5[_0x74c8('0xbd')]=_0x63e630;if(_0x10c28['query'][_0x74c8('0xb2')]){if(_0x36a322[_0x74c8('0x17')]==='CmContact'){_0xa2f73c[_0x74c8('0xb3')]=[{'model':_0x23af30[_0x74c8('0x76')],'as':_0x74c8('0xbe'),'attributes':['id',_0x74c8('0xe'),_0x74c8('0xbf')],'required':_0x10c28[_0x74c8('0x91')][_0x74c8('0xc0')]?!![]:![]},{'model':_0x23af30[_0x74c8('0x76')],'as':_0x74c8('0xc1'),'attributes':['id','name','color'],'through':_0x10c28[_0x74c8('0x91')]['tag']?{'attributes':[],'where':{'TagId':_0x10c28[_0x74c8('0x91')]['tag']||undefined}}:{},'required':_0x10c28['query']['tag']?!![]:![]}];}else{_0xa2f73c['include']=[{'all':!![]}];}}return _0x23af30[_0x36a322[_0x74c8('0x17')]][_0x74c8('0x9')](_0xa2f73c);})[_0x74c8('0xa')](function(_0x5d1af4){_0xdaf4a5[_0x74c8('0xb9')]=_0x5d1af4;if(_0x182b45===_0x74c8('0x59')&&_0x10c28[_0x74c8('0x91')]['openTabs']===_0x74c8('0xc2')){var _0x53dee1=[];for(var _0x18c272=0x0;_0x18c272<_0xdaf4a5['rows'][_0x74c8('0x98')];_0x18c272++){_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc3'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));_0x53dee1['push'](_0x5cedf9(_0x74c8('0xc4'),_0xdaf4a5['rows'][_0x18c272][_0x74c8('0xc5')]));_0x53dee1[_0x74c8('0x99')](_0x5cedf9('fax',_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc6'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272][_0x74c8('0xc5')]));_0x53dee1['push'](_0x5cedf9(_0x74c8('0xc7'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272][_0x74c8('0xc5')]));_0x53dee1[_0x74c8('0x99')](_0x5cedf9(_0x74c8('0xc8'),_0xdaf4a5[_0x74c8('0xb9')][_0x18c272]['dataValues']));}return Promise['all'](_0x53dee1)['then'](function(){return _0xdaf4a5;});}return _0xdaf4a5;});}});}}});};
\ No newline at end of file
index 456f823..748146d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeba2=['debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','then','UserProfile,\x20%s,\x20%s','request\x20sent'];(function(_0x493503,_0x351993){var _0x1986d0=function(_0x59a6a1){while(--_0x59a6a1){_0x493503['push'](_0x493503['shift']());}};_0x1986d0(++_0x351993);}(_0xeba2,0x70));var _0x2eba=function(_0x264d4d,_0x118fb5){_0x264d4d=_0x264d4d-0x0;var _0xc917e2=_0xeba2[_0x264d4d];return _0xc917e2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2eba('0x0'));var BPromise=require(_0x2eba('0x1'));var rs=require(_0x2eba('0x2'));var fs=require('fs');var Redis=require(_0x2eba('0x3'));var db=require(_0x2eba('0x4'))['db'];var utils=require(_0x2eba('0x5'));var logger=require(_0x2eba('0x6'))(_0x2eba('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x2eba('0x8')]({'port':0x232a});config[_0x2eba('0x9')]=_[_0x2eba('0xa')](config['redis'],{'host':_0x2eba('0xb'),'port':0x18eb});var socket=require(_0x2eba('0xc'))(new Redis(config[_0x2eba('0x9')]));require(_0x2eba('0xd'))[_0x2eba('0xe')](socket);function respondWithRpcPromise(_0x3a5bfe,_0x32b1d0,_0xd336b6){return new BPromise(function(_0x40b678,_0x38939a){return client['request'](_0x3a5bfe,_0xd336b6)[_0x2eba('0xf')](function(_0x669096){logger['info'](_0x2eba('0x10'),_0x32b1d0,_0x2eba('0x11'));logger[_0x2eba('0x12')](_0x2eba('0x13'),_0x32b1d0,_0x2eba('0x11'),JSON[_0x2eba('0x14')](_0x669096));if(_0x669096[_0x2eba('0x15')]){if(_0x669096['error']['code']===0x1f4){logger[_0x2eba('0x15')](_0x2eba('0x10'),_0x32b1d0,_0x669096[_0x2eba('0x15')][_0x2eba('0x16')]);return _0x38939a(_0x669096[_0x2eba('0x15')]['message']);}logger[_0x2eba('0x15')](_0x2eba('0x10'),_0x32b1d0,_0x669096[_0x2eba('0x15')][_0x2eba('0x16')]);return _0x40b678(_0x669096[_0x2eba('0x15')]['message']);}else{logger[_0x2eba('0x17')]('UserProfile,\x20%s,\x20%s',_0x32b1d0,'request\x20sent');_0x40b678(_0x669096[_0x2eba('0x18')][_0x2eba('0x16')]);}})[_0x2eba('0x19')](function(_0x354265){logger[_0x2eba('0x15')](_0x2eba('0x10'),_0x32b1d0,_0x354265);_0x38939a(_0x354265);});});}
\ No newline at end of file
+var _0x44fe=['http','redis','localhost','socket.io-emitter','./userProfile.socket','request','then','info','request\x20sent','debug','stringify','error','code','UserProfile,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x20daf4,_0x239f24){var _0x103fa6=function(_0x8c276c){while(--_0x8c276c){_0x20daf4['push'](_0x20daf4['shift']());}};_0x103fa6(++_0x239f24);}(_0x44fe,0x16f));var _0xe44f=function(_0x45e0af,_0x452121){_0x45e0af=_0x45e0af-0x0;var _0x397de6=_0x44fe[_0x45e0af];return _0x397de6;};'use strict';var _=require(_0xe44f('0x0'));var util=require(_0xe44f('0x1'));var moment=require(_0xe44f('0x2'));var BPromise=require(_0xe44f('0x3'));var rs=require(_0xe44f('0x4'));var fs=require('fs');var Redis=require(_0xe44f('0x5'));var db=require(_0xe44f('0x6'))['db'];var utils=require(_0xe44f('0x7'));var logger=require(_0xe44f('0x8'))(_0xe44f('0x9'));var config=require(_0xe44f('0xa'));var jayson=require('jayson/promise');var client=jayson['client'][_0xe44f('0xb')]({'port':0x232a});config[_0xe44f('0xc')]=_['defaults'](config[_0xe44f('0xc')],{'host':_0xe44f('0xd'),'port':0x18eb});var socket=require(_0xe44f('0xe'))(new Redis(config[_0xe44f('0xc')]));require(_0xe44f('0xf'))['register'](socket);function respondWithRpcPromise(_0x12bdfb,_0x28ed63,_0x44b180){return new BPromise(function(_0x447184,_0x2d6ec5){return client[_0xe44f('0x10')](_0x12bdfb,_0x44b180)[_0xe44f('0x11')](function(_0xdb9b6c){logger[_0xe44f('0x12')]('UserProfile,\x20%s,\x20%s',_0x28ed63,_0xe44f('0x13'));logger[_0xe44f('0x14')]('UserProfile,\x20%s,\x20%s,\x20%s',_0x28ed63,_0xe44f('0x13'),JSON[_0xe44f('0x15')](_0xdb9b6c));if(_0xdb9b6c[_0xe44f('0x16')]){if(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x17')]===0x1f4){logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xdb9b6c[_0xe44f('0x16')]['message']);return _0x2d6ec5(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);}logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);return _0x447184(_0xdb9b6c[_0xe44f('0x16')][_0xe44f('0x19')]);}else{logger[_0xe44f('0x12')](_0xe44f('0x18'),_0x28ed63,_0xe44f('0x13'));_0x447184(_0xdb9b6c[_0xe44f('0x1a')]['message']);}})['catch'](function(_0xf3b4df){logger[_0xe44f('0x16')](_0xe44f('0x18'),_0x28ed63,_0xf3b4df);_0x2d6ec5(_0xf3b4df);});});}
\ No newline at end of file
index a609ed7..e0b7217 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35be=['length','userProfile:','./userProfile.events','save','remove','emit','removeListener'];(function(_0x485b5a,_0x2b289b){var _0xd2b34d=function(_0x34dcbd){while(--_0x34dcbd){_0x485b5a['push'](_0x485b5a['shift']());}};_0xd2b34d(++_0x2b289b);}(_0x35be,0x72));var _0xe35b=function(_0x4adf20,_0x41cc23){_0x4adf20=_0x4adf20-0x0;var _0x5e2b5b=_0x35be[_0x4adf20];return _0x5e2b5b;};'use strict';var UserProfileEvents=require(_0xe35b('0x0'));var events=[_0xe35b('0x1'),_0xe35b('0x2'),'update'];function createListener(_0x3a53f,_0x31106e){return function(_0x55901e){_0x31106e[_0xe35b('0x3')](_0x3a53f,_0x55901e);};}function removeListener(_0x315d98,_0x2c0706){return function(){UserProfileEvents[_0xe35b('0x4')](_0x315d98,_0x2c0706);};}exports['register']=function(_0x4220f4){for(var _0x1b038a=0x0,_0x900204=events[_0xe35b('0x5')];_0x1b038a<_0x900204;_0x1b038a++){var _0x568797=events[_0x1b038a];var _0x11f66c=createListener(_0xe35b('0x6')+_0x568797,_0x4220f4);UserProfileEvents['on'](_0x568797,_0x11f66c);}};
\ No newline at end of file
+var _0x517b=['removeListener','register','./userProfile.events','update'];(function(_0x5a3cf0,_0x160a68){var _0x5a64ee=function(_0x34cd1d){while(--_0x34cd1d){_0x5a3cf0['push'](_0x5a3cf0['shift']());}};_0x5a64ee(++_0x160a68);}(_0x517b,0x152));var _0xb517=function(_0x4f522f,_0x4ac9e0){_0x4f522f=_0x4f522f-0x0;var _0x5701b3=_0x517b[_0x4f522f];return _0x5701b3;};'use strict';var UserProfileEvents=require(_0xb517('0x0'));var events=['save','remove',_0xb517('0x1')];function createListener(_0x30d048,_0x123f3f){return function(_0xc66c91){_0x123f3f['emit'](_0x30d048,_0xc66c91);};}function removeListener(_0x29ba21,_0x16ae13){return function(){UserProfileEvents[_0xb517('0x2')](_0x29ba21,_0x16ae13);};}exports[_0xb517('0x3')]=function(_0x36b111){for(var _0x2c2045=0x0,_0xca734a=events['length'];_0x2c2045<_0xca734a;_0x2c2045++){var _0x488f3c=events[_0x2c2045];var _0x48b3dd=createListener('userProfile:'+_0x488f3c,_0x36b111);UserProfileEvents['on'](_0x488f3c,_0x48b3dd);}};
\ No newline at end of file
index 889cd99..13e78b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf7e=['index','get','/describe','show','post','create','put','/:id','update','delete','destroy','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileResource.controller','isAuthenticated'];(function(_0x95411e,_0x38b4c3){var _0x2c8718=function(_0x35c672){while(--_0x35c672){_0x95411e['push'](_0x95411e['shift']());}};_0x2c8718(++_0x38b4c3);}(_0xbf7e,0x1d9));var _0xebf7=function(_0x5f5a19,_0x5c31a7){_0x5f5a19=_0x5f5a19-0x0;var _0x2aba96=_0xbf7e[_0x5f5a19];return _0x2aba96;};'use strict';var multer=require(_0xebf7('0x0'));var util=require('util');var path=require(_0xebf7('0x1'));var timeout=require('connect-timeout');var express=require(_0xebf7('0x2'));var router=express[_0xebf7('0x3')]();var fs_extra=require(_0xebf7('0x4'));var auth=require(_0xebf7('0x5'));var interaction=require(_0xebf7('0x6'));var config=require(_0xebf7('0x7'));var controller=require(_0xebf7('0x8'));router['get']('/',auth[_0xebf7('0x9')](),controller[_0xebf7('0xa')]);router[_0xebf7('0xb')](_0xebf7('0xc'),auth[_0xebf7('0x9')](),controller['describe']);router[_0xebf7('0xb')]('/:id',auth[_0xebf7('0x9')](),controller[_0xebf7('0xd')]);router[_0xebf7('0xe')]('/',auth[_0xebf7('0x9')](),controller[_0xebf7('0xf')]);router[_0xebf7('0x10')](_0xebf7('0x11'),auth['isAuthenticated'](),controller[_0xebf7('0x12')]);router[_0xebf7('0x13')](_0xebf7('0x11'),auth['isAuthenticated'](),controller[_0xebf7('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0xe835=['update','destroy','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put'];(function(_0x4a7ef6,_0x43c1b5){var _0x5685f1=function(_0x453324){while(--_0x453324){_0x4a7ef6['push'](_0x4a7ef6['shift']());}};_0x5685f1(++_0x43c1b5);}(_0xe835,0x1ca));var _0x5e83=function(_0x273dc5,_0x268a81){_0x273dc5=_0x273dc5-0x0;var _0x46dae7=_0xe835[_0x273dc5];return _0x46dae7;};'use strict';var multer=require(_0x5e83('0x0'));var util=require(_0x5e83('0x1'));var path=require(_0x5e83('0x2'));var timeout=require(_0x5e83('0x3'));var express=require('express');var router=express[_0x5e83('0x4')]();var fs_extra=require(_0x5e83('0x5'));var auth=require(_0x5e83('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userProfileResource.controller');router[_0x5e83('0x7')]('/',auth[_0x5e83('0x8')](),controller[_0x5e83('0x9')]);router['get'](_0x5e83('0xa'),auth['isAuthenticated'](),controller[_0x5e83('0xb')]);router[_0x5e83('0x7')](_0x5e83('0xc'),auth[_0x5e83('0x8')](),controller[_0x5e83('0xd')]);router[_0x5e83('0xe')]('/',auth[_0x5e83('0x8')](),controller[_0x5e83('0xf')]);router[_0x5e83('0x10')](_0x5e83('0xc'),auth[_0x5e83('0x8')](),controller[_0x5e83('0x11')]);router['delete']('/:id',auth[_0x5e83('0x8')](),controller[_0x5e83('0x12')]);module['exports']=router;
\ No newline at end of file
index 1677a03..ef4c514 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2187=['INTEGER','sequelize','STRING'];(function(_0xe1d7db,_0x4d45b4){var _0x49e669=function(_0x5e58f0){while(--_0x5e58f0){_0xe1d7db['push'](_0xe1d7db['shift']());}};_0x49e669(++_0x4d45b4);}(_0x2187,0x1ae));var _0x7218=function(_0x1a8816,_0x2c7b08){_0x1a8816=_0x1a8816-0x0;var _0x3209d5=_0x2187[_0x1a8816];return _0x3209d5;};'use strict';var Sequelize=require(_0x7218('0x0'));module['exports']={'name':{'type':Sequelize[_0x7218('0x1')],'allowNull':![]},'resourceId':{'type':Sequelize[_0x7218('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7218('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xfd16=['INTEGER','exports'];(function(_0x58965a,_0x2e71db){var _0x254efc=function(_0xf14fb4){while(--_0xf14fb4){_0x58965a['push'](_0x58965a['shift']());}};_0x254efc(++_0x2e71db);}(_0xfd16,0x1bf));var _0x6fd1=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0xfd16[_0x45d3f0];return _0x314b79;};'use strict';var Sequelize=require('sequelize');module[_0x6fd1('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x6fd1('0x1')],'allowNull':![]},'type':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index b54e092..d1f5d77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','UserProfileResource','includeAll','catch','show','params','create','body','find','describe','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save'];(function(_0x33e706,_0x13cbcc){var _0x5a8382=function(_0x488191){while(--_0x488191){_0x33e706['push'](_0x33e706['shift']());}};_0x5a8382(++_0x13cbcc);}(_0xafc4,0x69));var _0x4afc=function(_0x161005,_0xe63d63){_0x161005=_0x161005-0x0;var _0x12a7c7=_0xafc4[_0x161005];return _0x12a7c7;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['UserProfileResource'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['UserProfileResource']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['UserProfileResource']['create'](_0x4772db['body'],{})[_0x4afc('0x25')](respondWithResult(_0x19a0ac,0xc9))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x269c24,_0xb5cca9){if(_0x269c24[_0x4afc('0x43')]['id']){delete _0x269c24[_0x4afc('0x43')]['id'];}return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x269c24[_0x4afc('0x41')]['id']}})['then'](handleEntityNotFound(_0xb5cca9,null))[_0x4afc('0x25')](saveUpdates(_0x269c24['body'],null))['then'](respondWithResult(_0xb5cca9,null))[_0x4afc('0x3f')](handleError(_0xb5cca9,null));};exports['destroy']=function(_0x428d78,_0x355198){return db[_0x4afc('0x3d')][_0x4afc('0x44')]({'where':{'id':_0x428d78['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x355198,null))['then'](removeEntity(_0x355198,null))[_0x4afc('0x3f')](handleError(_0x355198,null));};exports[_0x4afc('0x45')]=function(_0x3625c9,_0x387834){return db[_0x4afc('0x3d')][_0x4afc('0x45')]()[_0x4afc('0x25')](respondWithResult(_0x387834,null))[_0x4afc('0x3f')](handleError(_0x387834,null));};
\ No newline at end of file
+var _0xc1c6=['filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','UserProfileResource','rawAttributes','type','key','model','query'];(function(_0x477a5d,_0x549533){var _0x24b79e=function(_0xce90bb){while(--_0xce90bb){_0x477a5d['push'](_0x477a5d['shift']());}};_0x24b79e(++_0x549533);}(_0xc1c6,0xf7));var _0x6c1c=function(_0x5a060f,_0x5bf8d3){_0x5a060f=_0x5a060f-0x0;var _0x16c409=_0xc1c6[_0x5a060f];return _0x16c409;};'use strict';var emlformat=require(_0x6c1c('0x0'));var rimraf=require(_0x6c1c('0x1'));var zipdir=require(_0x6c1c('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6c1c('0x3'));var moment=require('moment');var BPromise=require(_0x6c1c('0x4'));var Mustache=require(_0x6c1c('0x5'));var util=require(_0x6c1c('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x6c1c('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6c1c('0x8'));var _=require('lodash');var squel=require(_0x6c1c('0x9'));var crypto=require(_0x6c1c('0xa'));var jsforce=require(_0x6c1c('0xb'));var deskjs=require(_0x6c1c('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6c1c('0xd'));var Papa=require(_0x6c1c('0xe'));var Redis=require('ioredis');var authService=require(_0x6c1c('0xf'));var qs=require(_0x6c1c('0x10'));var as=require(_0x6c1c('0x11'));var hardwareService=require(_0x6c1c('0x12'));var logger=require('../../config/logger')(_0x6c1c('0x13'));var utils=require(_0x6c1c('0x14'));var config=require(_0x6c1c('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x6c1c('0x16'))['db'];function respondWithStatusCode(_0x12a9e6,_0x2067bd){_0x2067bd=_0x2067bd||0xcc;return function(_0x49304f){if(_0x49304f){return _0x12a9e6[_0x6c1c('0x17')](_0x2067bd);}return _0x12a9e6['status'](_0x2067bd)[_0x6c1c('0x18')]();};}function respondWithResult(_0x15a1fc,_0x2d279e){_0x2d279e=_0x2d279e||0xc8;return function(_0x154107){if(_0x154107){return _0x15a1fc[_0x6c1c('0x19')](_0x2d279e)[_0x6c1c('0x1a')](_0x154107);}};}function respondWithFilteredResult(_0x297c33,_0x41aa74){return function(_0x448f35){if(_0x448f35){var _0x5f3758=typeof _0x41aa74[_0x6c1c('0x1b')]===_0x6c1c('0x1c')&&typeof _0x41aa74['limit']===_0x6c1c('0x1c');var _0x237cac=_0x448f35['count'];var _0x137770=_0x5f3758?0x0:_0x41aa74['offset'];var _0x338dc2=_0x5f3758?_0x448f35[_0x6c1c('0x1d')]:_0x41aa74['offset']+_0x41aa74[_0x6c1c('0x1e')];var _0x59ab38;if(_0x338dc2>=_0x237cac){_0x338dc2=_0x237cac;_0x59ab38=0xc8;}else{_0x59ab38=0xce;}_0x297c33[_0x6c1c('0x19')](_0x59ab38);return _0x297c33[_0x6c1c('0x1f')](_0x6c1c('0x20'),_0x137770+'-'+_0x338dc2+'/'+_0x237cac)[_0x6c1c('0x1a')](_0x448f35);}return null;};}function patchUpdates(_0x1acf7f){return function(_0x1efb19){try{jsonpatch[_0x6c1c('0x21')](_0x1efb19,_0x1acf7f,!![]);}catch(_0x2ed830){return BPromise[_0x6c1c('0x22')](_0x2ed830);}return _0x1efb19[_0x6c1c('0x23')]();};}function saveUpdates(_0x3d2bf3,_0x450b1f){return function(_0x2382c0){if(_0x2382c0){return _0x2382c0[_0x6c1c('0x24')](_0x3d2bf3)[_0x6c1c('0x25')](function(_0x19c269){return _0x19c269;});}return null;};}function removeEntity(_0x2319d3,_0x12c638){return function(_0x3a3f13){if(_0x3a3f13){return _0x3a3f13[_0x6c1c('0x26')]()[_0x6c1c('0x25')](function(){_0x2319d3[_0x6c1c('0x19')](0xcc)[_0x6c1c('0x18')]();});}};}function handleEntityNotFound(_0x7ff10d,_0x18452d){return function(_0x80bc05){if(!_0x80bc05){_0x7ff10d[_0x6c1c('0x17')](0x194);}return _0x80bc05;};}function handleError(_0x1b9d7d,_0x2feaf4){_0x2feaf4=_0x2feaf4||0x1f4;return function(_0x5f4568){logger[_0x6c1c('0x27')](_0x5f4568['stack']);if(_0x5f4568[_0x6c1c('0x28')]){delete _0x5f4568['name'];}_0x1b9d7d[_0x6c1c('0x19')](_0x2feaf4)['send'](_0x5f4568);};}exports[_0x6c1c('0x29')]=function(_0xf557ba,_0x504348){var _0x3b1a4f={},_0x24da4c={},_0x4e13e3={'count':0x0,'rows':[]};var _0x3b319a=_[_0x6c1c('0x2a')](db[_0x6c1c('0x2b')][_0x6c1c('0x2c')],function(_0x4fc279){return{'name':_0x4fc279['fieldName'],'type':_0x4fc279[_0x6c1c('0x2d')][_0x6c1c('0x2e')]};});_0x24da4c[_0x6c1c('0x2f')]=_[_0x6c1c('0x2a')](_0x3b319a,_0x6c1c('0x28'));_0x24da4c[_0x6c1c('0x30')]=_['keys'](_0xf557ba[_0x6c1c('0x30')]);_0x24da4c[_0x6c1c('0x31')]=_['intersection'](_0x24da4c[_0x6c1c('0x2f')],_0x24da4c[_0x6c1c('0x30')]);_0x3b1a4f[_0x6c1c('0x32')]=_[_0x6c1c('0x33')](_0x24da4c['model'],qs[_0x6c1c('0x34')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x3b1a4f['attributes']=_0x3b1a4f[_0x6c1c('0x32')]['length']?_0x3b1a4f[_0x6c1c('0x32')]:_0x24da4c['model'];if(!_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x35')](_0x6c1c('0x36'))){_0x3b1a4f['limit']=qs['limit'](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x1e')]);_0x3b1a4f[_0x6c1c('0x1b')]=qs['offset'](_0xf557ba[_0x6c1c('0x30')]['offset']);}_0x3b1a4f['order']=qs[_0x6c1c('0x37')](_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x37')]);_0x3b1a4f[_0x6c1c('0x38')]=qs['filters'](_[_0x6c1c('0x39')](_0xf557ba[_0x6c1c('0x30')],_0x24da4c[_0x6c1c('0x31')]),_0x3b319a);if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]){_0x3b1a4f[_0x6c1c('0x38')]=_[_0x6c1c('0x3b')](_0x3b1a4f[_0x6c1c('0x38')],{'$or':_[_0x6c1c('0x2a')](_0x3b319a,function(_0x232508){if(_0x232508['type']!==_0x6c1c('0x3c')){var _0x464549={};_0x464549[_0x232508[_0x6c1c('0x28')]]={'$like':'%'+_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3a')]+'%'};return _0x464549;}})});}_0x3b1a4f=_['merge']({},_0x3b1a4f,_0xf557ba['options']);var _0x549db1={'where':_0x3b1a4f[_0x6c1c('0x38')]};return db['UserProfileResource']['count'](_0x549db1)[_0x6c1c('0x25')](function(_0x37244e){_0x4e13e3['count']=_0x37244e;if(_0xf557ba[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x3b1a4f[_0x6c1c('0x3e')]=[{'all':!![]}];}return db['UserProfileResource'][_0x6c1c('0x3f')](_0x3b1a4f);})[_0x6c1c('0x25')](function(_0x502e75){_0x4e13e3[_0x6c1c('0x40')]=_0x502e75;return _0x4e13e3;})['then'](respondWithFilteredResult(_0x504348,_0x3b1a4f))[_0x6c1c('0x41')](handleError(_0x504348,null));};exports[_0x6c1c('0x42')]=function(_0x16a389,_0x174f2c){var _0x10764a={'raw':![],'where':{'id':_0x16a389[_0x6c1c('0x43')]['id']}},_0x595ba2={};_0x595ba2[_0x6c1c('0x2f')]=_[_0x6c1c('0x44')](db['UserProfileResource'][_0x6c1c('0x2c')]);_0x595ba2[_0x6c1c('0x30')]=_[_0x6c1c('0x44')](_0x16a389[_0x6c1c('0x30')]);_0x595ba2[_0x6c1c('0x31')]=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],_0x595ba2['query']);_0x10764a['attributes']=_['intersection'](_0x595ba2[_0x6c1c('0x2f')],qs[_0x6c1c('0x34')](_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x34')]));_0x10764a[_0x6c1c('0x32')]=_0x10764a[_0x6c1c('0x32')][_0x6c1c('0x45')]?_0x10764a[_0x6c1c('0x32')]:_0x595ba2['model'];if(_0x16a389[_0x6c1c('0x30')][_0x6c1c('0x3d')]){_0x10764a['include']=[{'all':!![]}];}_0x10764a=_[_0x6c1c('0x3b')]({},_0x10764a,_0x16a389['options']);return db[_0x6c1c('0x2b')][_0x6c1c('0x46')](_0x10764a)[_0x6c1c('0x25')](handleEntityNotFound(_0x174f2c,null))[_0x6c1c('0x25')](respondWithResult(_0x174f2c,null))[_0x6c1c('0x41')](handleError(_0x174f2c,null));};exports['create']=function(_0x1fe6e8,_0x58d075){return db[_0x6c1c('0x2b')][_0x6c1c('0x47')](_0x1fe6e8[_0x6c1c('0x48')],{})[_0x6c1c('0x25')](respondWithResult(_0x58d075,0xc9))[_0x6c1c('0x41')](handleError(_0x58d075,null));};exports[_0x6c1c('0x24')]=function(_0x52c14d,_0xa9889a){if(_0x52c14d[_0x6c1c('0x48')]['id']){delete _0x52c14d['body']['id'];}return db[_0x6c1c('0x2b')][_0x6c1c('0x46')]({'where':{'id':_0x52c14d[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0xa9889a,null))['then'](saveUpdates(_0x52c14d[_0x6c1c('0x48')],null))[_0x6c1c('0x25')](respondWithResult(_0xa9889a,null))[_0x6c1c('0x41')](handleError(_0xa9889a,null));};exports['destroy']=function(_0x5b8d69,_0x56b367){return db['UserProfileResource']['find']({'where':{'id':_0x5b8d69[_0x6c1c('0x43')]['id']}})[_0x6c1c('0x25')](handleEntityNotFound(_0x56b367,null))['then'](removeEntity(_0x56b367,null))[_0x6c1c('0x41')](handleError(_0x56b367,null));};exports[_0x6c1c('0x49')]=function(_0x2450ab,_0x5489ac){return db['UserProfileResource'][_0x6c1c('0x49')]()[_0x6c1c('0x25')](respondWithResult(_0x5489ac,null))['catch'](handleError(_0x5489ac,null));};
\ No newline at end of file
index aadaea8..5e2dbd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd527=['define','user_profile_has_resources','compositeIndex','resourceId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment','./userProfileResource.attributes','exports'];(function(_0x39b170,_0x4c69e9){var _0x4e7706=function(_0x15b27f){while(--_0x15b27f){_0x39b170['push'](_0x39b170['shift']());}};_0x4e7706(++_0x4c69e9);}(_0xd527,0x12a));var _0x7d52=function(_0xe15270,_0x227d06){_0xe15270=_0xe15270-0x0;var _0x1e813b=_0xd527[_0xe15270];return _0x1e813b;};'use strict';var _=require(_0x7d52('0x0'));var util=require(_0x7d52('0x1'));var logger=require(_0x7d52('0x2'))(_0x7d52('0x3'));var moment=require(_0x7d52('0x4'));var BPromise=require(_0x7d52('0x5'));var rp=require(_0x7d52('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7d52('0x7'));var attributes=require(_0x7d52('0x8'));module[_0x7d52('0x9')]=function(_0x4fd2ac,_0x44d62d){return _0x4fd2ac[_0x7d52('0xa')]('UserProfileResource',attributes,{'tableName':_0x7d52('0xb'),'paranoid':![],'indexes':[{'name':_0x7d52('0xc'),'fields':[_0x7d52('0xd'),'sectionId']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3266=['../../config/environment','UserProfileResource','compositeIndex','resourceId','sectionId','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0x8aec06,_0x3d5724){var _0x4c3613=function(_0x3c85da){while(--_0x3c85da){_0x8aec06['push'](_0x8aec06['shift']());}};_0x4c3613(++_0x3d5724);}(_0x3266,0x1a9));var _0x6326=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x3266[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x6326('0x0'));var util=require('util');var logger=require(_0x6326('0x1'))(_0x6326('0x2'));var moment=require(_0x6326('0x3'));var BPromise=require(_0x6326('0x4'));var rp=require(_0x6326('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6326('0x6'));var config=require(_0x6326('0x7'));var attributes=require('./userProfileResource.attributes');module['exports']=function(_0x2d6694,_0x2a5178){return _0x2d6694['define'](_0x6326('0x8'),attributes,{'tableName':'user_profile_has_resources','paranoid':![],'indexes':[{'name':_0x6326('0x9'),'fields':[_0x6326('0xa'),_0x6326('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 732df26..8f6a94d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x541d=['error','code','message','result','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','then','UserProfileResource,\x20%s,\x20%s','request\x20sent','UserProfileResource,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x29e416,_0x465da1){var _0x2722e2=function(_0x4a0134){while(--_0x4a0134){_0x29e416['push'](_0x29e416['shift']());}};_0x2722e2(++_0x465da1);}(_0x541d,0xd5));var _0xd541=function(_0x3d2f57,_0x181e69){_0x3d2f57=_0x3d2f57-0x0;var _0xc7e303=_0x541d[_0x3d2f57];return _0xc7e303;};'use strict';var _=require('lodash');var util=require(_0xd541('0x0'));var moment=require('moment');var BPromise=require(_0xd541('0x1'));var rs=require(_0xd541('0x2'));var fs=require('fs');var Redis=require(_0xd541('0x3'));var db=require(_0xd541('0x4'))['db'];var utils=require(_0xd541('0x5'));var logger=require('../../config/logger')(_0xd541('0x6'));var config=require('../../config/environment');var jayson=require(_0xd541('0x7'));var client=jayson[_0xd541('0x8')][_0xd541('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x191b2b,_0x1de20d,_0xd6e04b){return new BPromise(function(_0x116e9e,_0xcb2fef){return client['request'](_0x191b2b,_0xd6e04b)[_0xd541('0xa')](function(_0x2dbb91){logger['info'](_0xd541('0xb'),_0x1de20d,_0xd541('0xc'));logger['debug'](_0xd541('0xd'),_0x1de20d,_0xd541('0xc'),JSON[_0xd541('0xe')](_0x2dbb91));if(_0x2dbb91[_0xd541('0xf')]){if(_0x2dbb91['error'][_0xd541('0x10')]===0x1f4){logger[_0xd541('0xf')](_0xd541('0xb'),_0x1de20d,_0x2dbb91['error'][_0xd541('0x11')]);return _0xcb2fef(_0x2dbb91[_0xd541('0xf')]['message']);}logger['error'](_0xd541('0xb'),_0x1de20d,_0x2dbb91['error'][_0xd541('0x11')]);return _0x116e9e(_0x2dbb91[_0xd541('0xf')][_0xd541('0x11')]);}else{logger['info']('UserProfileResource,\x20%s,\x20%s',_0x1de20d,_0xd541('0xc'));_0x116e9e(_0x2dbb91[_0xd541('0x12')][_0xd541('0x11')]);}})['catch'](function(_0x1b1389){logger[_0xd541('0xf')](_0xd541('0xb'),_0x1de20d,_0x1b1389);_0xcb2fef(_0x1b1389);});});}
\ No newline at end of file
+var _0xdf0e=['moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','message','result','catch','lodash'];(function(_0x1cf728,_0x56712f){var _0x32538c=function(_0x5c1540){while(--_0x5c1540){_0x1cf728['push'](_0x1cf728['shift']());}};_0x32538c(++_0x56712f);}(_0xdf0e,0x8b));var _0xedf0=function(_0x4c217f,_0x82a1ae){_0x4c217f=_0x4c217f-0x0;var _0x4033b2=_0xdf0e[_0x4c217f];return _0x4033b2;};'use strict';var _=require(_0xedf0('0x0'));var util=require('util');var moment=require(_0xedf0('0x1'));var BPromise=require('bluebird');var rs=require(_0xedf0('0x2'));var fs=require('fs');var Redis=require(_0xedf0('0x3'));var db=require(_0xedf0('0x4'))['db'];var utils=require(_0xedf0('0x5'));var logger=require(_0xedf0('0x6'))('rpc');var config=require(_0xedf0('0x7'));var jayson=require(_0xedf0('0x8'));var client=jayson[_0xedf0('0x9')][_0xedf0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x42ffb6,_0x45482b,_0x24e65d){return new BPromise(function(_0x3fb93a,_0x3d3869){return client['request'](_0x42ffb6,_0x24e65d)['then'](function(_0x2db53c){logger[_0xedf0('0xb')](_0xedf0('0xc'),_0x45482b,_0xedf0('0xd'));logger[_0xedf0('0xe')](_0xedf0('0xf'),_0x45482b,_0xedf0('0xd'),JSON['stringify'](_0x2db53c));if(_0x2db53c[_0xedf0('0x10')]){if(_0x2db53c[_0xedf0('0x10')]['code']===0x1f4){logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x2db53c['error']['message']);return _0x3d3869(_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);}logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);return _0x3fb93a(_0x2db53c[_0xedf0('0x10')][_0xedf0('0x11')]);}else{logger[_0xedf0('0xb')](_0xedf0('0xc'),_0x45482b,_0xedf0('0xd'));_0x3fb93a(_0x2db53c[_0xedf0('0x12')]['message']);}})[_0xedf0('0x13')](function(_0x464248){logger[_0xedf0('0x10')](_0xedf0('0xc'),_0x45482b,_0x464248);_0x3d3869(_0x464248);});});}
\ No newline at end of file
index 9e1a17c..0815b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53bc=['isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./userProfileSection.controller','get'];(function(_0x2d6566,_0x74d6da){var _0x3ec4c3=function(_0x3e4342){while(--_0x3e4342){_0x2d6566['push'](_0x2d6566['shift']());}};_0x3ec4c3(++_0x74d6da);}(_0x53bc,0x1da));var _0xc53b=function(_0x4ed0af,_0x4359d2){_0x4ed0af=_0x4ed0af-0x0;var _0x2ef8d3=_0x53bc[_0x4ed0af];return _0x2ef8d3;};'use strict';var multer=require(_0xc53b('0x0'));var util=require(_0xc53b('0x1'));var path=require(_0xc53b('0x2'));var timeout=require(_0xc53b('0x3'));var express=require(_0xc53b('0x4'));var router=express['Router']();var fs_extra=require(_0xc53b('0x5'));var auth=require(_0xc53b('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xc53b('0x7'));var controller=require(_0xc53b('0x8'));router[_0xc53b('0x9')]('/',auth[_0xc53b('0xa')](),controller[_0xc53b('0xb')]);router[_0xc53b('0x9')](_0xc53b('0xc'),auth[_0xc53b('0xa')](),controller[_0xc53b('0xd')]);router[_0xc53b('0x9')](_0xc53b('0xe'),auth[_0xc53b('0xa')](),controller[_0xc53b('0xf')]);router[_0xc53b('0x10')]('/',auth[_0xc53b('0xa')](),controller[_0xc53b('0x11')]);router[_0xc53b('0x12')]('/:id',auth[_0xc53b('0xa')](),controller[_0xc53b('0x13')]);router['delete'](_0xc53b('0xe'),auth[_0xc53b('0xa')](),controller[_0xc53b('0x14')]);module[_0xc53b('0x15')]=router;
\ No newline at end of file
+var _0x1b1f=['/:id','show','post','create','update','destroy','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller','get','isAuthenticated','index','/describe','describe'];(function(_0x40b166,_0x1d7cf6){var _0x2219fe=function(_0xcce13d){while(--_0xcce13d){_0x40b166['push'](_0x40b166['shift']());}};_0x2219fe(++_0x1d7cf6);}(_0x1b1f,0xaf));var _0xf1b1=function(_0x570668,_0x5db8c2){_0x570668=_0x570668-0x0;var _0x101f2b=_0x1b1f[_0x570668];return _0x101f2b;};'use strict';var multer=require(_0xf1b1('0x0'));var util=require(_0xf1b1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf1b1('0x2'));var router=express[_0xf1b1('0x3')]();var fs_extra=require(_0xf1b1('0x4'));var auth=require(_0xf1b1('0x5'));var interaction=require(_0xf1b1('0x6'));var config=require(_0xf1b1('0x7'));var controller=require(_0xf1b1('0x8'));router[_0xf1b1('0x9')]('/',auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xb')]);router[_0xf1b1('0x9')](_0xf1b1('0xc'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xd')]);router['get'](_0xf1b1('0xe'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0xf')]);router[_0xf1b1('0x10')]('/',auth['isAuthenticated'](),controller[_0xf1b1('0x11')]);router['put'](_0xf1b1('0xe'),auth[_0xf1b1('0xa')](),controller[_0xf1b1('0x12')]);router['delete'](_0xf1b1('0xe'),auth['isAuthenticated'](),controller[_0xf1b1('0x13')]);module[_0xf1b1('0x14')]=router;
\ No newline at end of file
index e7b025c..9a0805a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['INTEGER','BOOLEAN','setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xf4f4,0xe3));var _0x4f4f=function(_0xae6db5,_0x5b81e9){_0xae6db5=_0xae6db5-0x0;var _0x526e3c=_0xf4f4[_0xae6db5];return _0x526e3c;};'use strict';var Sequelize=require(_0x4f4f('0x0'));module[_0x4f4f('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'category':{'type':Sequelize[_0x4f4f('0x2')],'allowNull':![]},'sectionId':{'type':Sequelize[_0x4f4f('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x4f4f('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x4f4f('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x4f4f('0x2')],'set':function(_0x510b24){this[_0x4f4f('0x5')]('crudPermissions',_0x510b24?_0x510b24[_0x4f4f('0x6')](''):[]);},'get':function(){return this[_0x4f4f('0x7')](_0x4f4f('0x8'))?this[_0x4f4f('0x7')](_0x4f4f('0x8'))[_0x4f4f('0x9')](''):[];}}};
\ No newline at end of file
+var _0xae60=['setDataValue','join','getDataValue','crudPermissions','split','sequelize','exports','STRING','INTEGER','BOOLEAN'];(function(_0x119b28,_0x515bcf){var _0x5d9e67=function(_0x8ae0bc){while(--_0x8ae0bc){_0x119b28['push'](_0x119b28['shift']());}};_0x5d9e67(++_0x515bcf);}(_0xae60,0x1c7));var _0x0ae6=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0xae60[_0x49b207];return _0x2dc8fa;};'use strict';var Sequelize=require(_0x0ae6('0x0'));module[_0x0ae6('0x1')]={'name':{'type':Sequelize[_0x0ae6('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x0ae6('0x3')],'allowNull':![]},'enabled':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x0ae6('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x4c014f){this[_0x0ae6('0x5')]('crudPermissions',_0x4c014f?_0x4c014f[_0x0ae6('0x6')](''):[]);},'get':function(){return this[_0x0ae6('0x7')](_0x0ae6('0x8'))?this[_0x0ae6('0x7')](_0x0ae6('0x8'))[_0x0ae6('0x9')](''):[];}}};
\ No newline at end of file
index ea8d66d..9e92e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcade=['lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','apply','reject','save','then','name','send','index','UserProfileSection','rawAttributes','type','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','create','update','body','find','params','destroy','describe','rimraf','zip-dir','request-promise','bluebird','util','path','sox','to-csv','fs-extra'];(function(_0x9fea02,_0x113929){var _0x2d1e70=function(_0x1a62f0){while(--_0x1a62f0){_0x9fea02['push'](_0x9fea02['shift']());}};_0x2d1e70(++_0x113929);}(_0xcade,0x117));var _0xecad=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcade[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xecad('0x0'));var zipdir=require(_0xecad('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xecad('0x2'));var moment=require('moment');var BPromise=require(_0xecad('0x3'));var Mustache=require('mustache');var util=require(_0xecad('0x4'));var path=require(_0xecad('0x5'));var sox=require(_0xecad('0x6'));var csv=require(_0xecad('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xecad('0x8'));var _=require(_0xecad('0x9'));var squel=require(_0xecad('0xa'));var crypto=require('crypto');var jsforce=require(_0xecad('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xecad('0x7'));var querystring=require('querystring');var Papa=require(_0xecad('0xc'));var Redis=require(_0xecad('0xd'));var authService=require(_0xecad('0xe'));var qs=require(_0xecad('0xf'));var as=require(_0xecad('0x10'));var hardwareService=require(_0xecad('0x11'));var logger=require(_0xecad('0x12'))(_0xecad('0x13'));var utils=require(_0xecad('0x14'));var config=require(_0xecad('0x15'));var licenseUtil=require(_0xecad('0x16'));var db=require(_0xecad('0x17'))['db'];function respondWithStatusCode(_0x46b46b,_0x160b4c){_0x160b4c=_0x160b4c||0xcc;return function(_0x52647e){if(_0x52647e){return _0x46b46b[_0xecad('0x18')](_0x160b4c);}return _0x46b46b[_0xecad('0x19')](_0x160b4c)[_0xecad('0x1a')]();};}function respondWithResult(_0x167973,_0x3c2a7d){_0x3c2a7d=_0x3c2a7d||0xc8;return function(_0x44a1a4){if(_0x44a1a4){return _0x167973[_0xecad('0x19')](_0x3c2a7d)[_0xecad('0x1b')](_0x44a1a4);}};}function respondWithFilteredResult(_0x14f03b,_0x4ebc3f){return function(_0x51c939){if(_0x51c939){var _0x200bea=typeof _0x4ebc3f[_0xecad('0x1c')]==='undefined'&&typeof _0x4ebc3f[_0xecad('0x1d')]===_0xecad('0x1e');var _0x2bf9a2=_0x51c939[_0xecad('0x1f')];var _0x2dc71e=_0x200bea?0x0:_0x4ebc3f[_0xecad('0x1c')];var _0x46c151=_0x200bea?_0x51c939[_0xecad('0x1f')]:_0x4ebc3f[_0xecad('0x1c')]+_0x4ebc3f[_0xecad('0x1d')];var _0x59bf7a;if(_0x46c151>=_0x2bf9a2){_0x46c151=_0x2bf9a2;_0x59bf7a=0xc8;}else{_0x59bf7a=0xce;}_0x14f03b[_0xecad('0x19')](_0x59bf7a);return _0x14f03b[_0xecad('0x20')]('Content-Range',_0x2dc71e+'-'+_0x46c151+'/'+_0x2bf9a2)['json'](_0x51c939);}return null;};}function patchUpdates(_0x3f81aa){return function(_0x548cd9){try{jsonpatch[_0xecad('0x21')](_0x548cd9,_0x3f81aa,!![]);}catch(_0x31804e){return BPromise[_0xecad('0x22')](_0x31804e);}return _0x548cd9[_0xecad('0x23')]();};}function saveUpdates(_0x1655b9,_0x5cad10){return function(_0x406db5){if(_0x406db5){return _0x406db5['update'](_0x1655b9)['then'](function(_0x275aab){return _0x275aab;});}return null;};}function removeEntity(_0x55bfc6,_0x4a7cdc){return function(_0x168dc8){if(_0x168dc8){return _0x168dc8['destroy']()[_0xecad('0x24')](function(){_0x55bfc6[_0xecad('0x19')](0xcc)[_0xecad('0x1a')]();});}};}function handleEntityNotFound(_0x2d06c7,_0x3ffa67){return function(_0x302776){if(!_0x302776){_0x2d06c7[_0xecad('0x18')](0x194);}return _0x302776;};}function handleError(_0x551020,_0x12d799){_0x12d799=_0x12d799||0x1f4;return function(_0x3cbbbb){logger['error'](_0x3cbbbb['stack']);if(_0x3cbbbb[_0xecad('0x25')]){delete _0x3cbbbb[_0xecad('0x25')];}_0x551020[_0xecad('0x19')](_0x12d799)[_0xecad('0x26')](_0x3cbbbb);};}exports[_0xecad('0x27')]=function(_0x4627c9,_0x1cf613){var _0x3cd8f4={},_0x5864c2={},_0x2287f8={'count':0x0,'rows':[]};var _0x500bc7=_['map'](db[_0xecad('0x28')][_0xecad('0x29')],function(_0x4fb0b6){return{'name':_0x4fb0b6['fieldName'],'type':_0x4fb0b6[_0xecad('0x2a')]['key']};});_0x5864c2[_0xecad('0x2b')]=_[_0xecad('0x2c')](_0x500bc7,_0xecad('0x25'));_0x5864c2[_0xecad('0x2d')]=_[_0xecad('0x2e')](_0x4627c9['query']);_0x5864c2[_0xecad('0x2f')]=_[_0xecad('0x30')](_0x5864c2[_0xecad('0x2b')],_0x5864c2[_0xecad('0x2d')]);_0x3cd8f4[_0xecad('0x31')]=_[_0xecad('0x30')](_0x5864c2[_0xecad('0x2b')],qs[_0xecad('0x32')](_0x4627c9[_0xecad('0x2d')]['fields']));_0x3cd8f4['attributes']=_0x3cd8f4[_0xecad('0x31')]['length']?_0x3cd8f4[_0xecad('0x31')]:_0x5864c2[_0xecad('0x2b')];if(!_0x4627c9[_0xecad('0x2d')][_0xecad('0x33')](_0xecad('0x34'))){_0x3cd8f4['limit']=qs[_0xecad('0x1d')](_0x4627c9['query'][_0xecad('0x1d')]);_0x3cd8f4[_0xecad('0x1c')]=qs[_0xecad('0x1c')](_0x4627c9[_0xecad('0x2d')][_0xecad('0x1c')]);}_0x3cd8f4[_0xecad('0x35')]=qs[_0xecad('0x36')](_0x4627c9['query'][_0xecad('0x36')]);_0x3cd8f4[_0xecad('0x37')]=qs['filters'](_[_0xecad('0x38')](_0x4627c9[_0xecad('0x2d')],_0x5864c2[_0xecad('0x2f')]),_0x500bc7);if(_0x4627c9['query'][_0xecad('0x39')]){_0x3cd8f4['where']=_[_0xecad('0x3a')](_0x3cd8f4['where'],{'$or':_[_0xecad('0x2c')](_0x500bc7,function(_0x8701fd){if(_0x8701fd[_0xecad('0x2a')]!==_0xecad('0x3b')){var _0x170c33={};_0x170c33[_0x8701fd[_0xecad('0x25')]]={'$like':'%'+_0x4627c9['query'][_0xecad('0x39')]+'%'};return _0x170c33;}})});}_0x3cd8f4=_[_0xecad('0x3a')]({},_0x3cd8f4,_0x4627c9[_0xecad('0x3c')]);var _0xbeb175={'where':_0x3cd8f4[_0xecad('0x37')]};return db['UserProfileSection']['count'](_0xbeb175)[_0xecad('0x24')](function(_0x58e01c){_0x2287f8['count']=_0x58e01c;if(_0x4627c9[_0xecad('0x2d')][_0xecad('0x3d')]){_0x3cd8f4['include']=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x3cd8f4);})[_0xecad('0x24')](function(_0x53a268){_0x2287f8[_0xecad('0x3e')]=_0x53a268;return _0x2287f8;})['then'](respondWithFilteredResult(_0x1cf613,_0x3cd8f4))[_0xecad('0x3f')](handleError(_0x1cf613,null));};exports[_0xecad('0x40')]=function(_0x14cbcf,_0x5b907e){var _0x5eecf7={'raw':![],'where':{'id':_0x14cbcf['params']['id']}},_0x45bc7b={};_0x45bc7b['model']=_[_0xecad('0x2e')](db[_0xecad('0x28')][_0xecad('0x29')]);_0x45bc7b[_0xecad('0x2d')]=_[_0xecad('0x2e')](_0x14cbcf[_0xecad('0x2d')]);_0x45bc7b[_0xecad('0x2f')]=_[_0xecad('0x30')](_0x45bc7b[_0xecad('0x2b')],_0x45bc7b['query']);_0x5eecf7[_0xecad('0x31')]=_[_0xecad('0x30')](_0x45bc7b['model'],qs[_0xecad('0x32')](_0x14cbcf['query'][_0xecad('0x32')]));_0x5eecf7[_0xecad('0x31')]=_0x5eecf7['attributes']['length']?_0x5eecf7[_0xecad('0x31')]:_0x45bc7b['model'];if(_0x14cbcf[_0xecad('0x2d')]['includeAll']){_0x5eecf7['include']=[{'all':!![]}];}_0x5eecf7=_[_0xecad('0x3a')]({},_0x5eecf7,_0x14cbcf[_0xecad('0x3c')]);return db['UserProfileSection']['find'](_0x5eecf7)[_0xecad('0x24')](handleEntityNotFound(_0x5b907e,null))['then'](respondWithResult(_0x5b907e,null))[_0xecad('0x3f')](handleError(_0x5b907e,null));};exports['create']=function(_0x4ee2e2,_0x21cf52){return db[_0xecad('0x28')][_0xecad('0x41')](_0x4ee2e2['body'],{})[_0xecad('0x24')](respondWithResult(_0x21cf52,0xc9))[_0xecad('0x3f')](handleError(_0x21cf52,null));};exports[_0xecad('0x42')]=function(_0x38e073,_0x308b98){if(_0x38e073[_0xecad('0x43')]['id']){delete _0x38e073[_0xecad('0x43')]['id'];}return db[_0xecad('0x28')][_0xecad('0x44')]({'where':{'id':_0x38e073[_0xecad('0x45')]['id']}})[_0xecad('0x24')](handleEntityNotFound(_0x308b98,null))['then'](saveUpdates(_0x38e073['body'],null))[_0xecad('0x24')](respondWithResult(_0x308b98,null))[_0xecad('0x3f')](handleError(_0x308b98,null));};exports[_0xecad('0x46')]=function(_0x56eaeb,_0x32a7cf){return db[_0xecad('0x28')][_0xecad('0x44')]({'where':{'id':_0x56eaeb[_0xecad('0x45')]['id']}})['then'](handleEntityNotFound(_0x32a7cf,null))['then'](removeEntity(_0x32a7cf,null))[_0xecad('0x3f')](handleError(_0x32a7cf,null));};exports[_0xecad('0x47')]=function(_0x3e0304,_0x255260){return db[_0xecad('0x28')][_0xecad('0x47')]()['then'](respondWithResult(_0x255260,null))['catch'](handleError(_0x255260,null));};
\ No newline at end of file
+var _0xd1f9=['intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','offset','undefined','count','status','Content-Range','json','apply','reject','save','update','then','destroy','end','error','send','index','map','UserProfileSection','fieldName','key','model','name','query','filters'];(function(_0x4e2d9c,_0x4af02c){var _0x214f3f=function(_0x3c8122){while(--_0x3c8122){_0x4e2d9c['push'](_0x4e2d9c['shift']());}};_0x214f3f(++_0x4af02c);}(_0xd1f9,0x19f));var _0x9d1f=function(_0x310dc2,_0x2299c4){_0x310dc2=_0x310dc2-0x0;var _0x24980f=_0xd1f9[_0x310dc2];return _0x24980f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9d1f('0x0'));var zipdir=require(_0x9d1f('0x1'));var jsonpatch=require(_0x9d1f('0x2'));var rp=require('request-promise');var moment=require(_0x9d1f('0x3'));var BPromise=require(_0x9d1f('0x4'));var Mustache=require(_0x9d1f('0x5'));var util=require(_0x9d1f('0x6'));var path=require(_0x9d1f('0x7'));var sox=require('sox');var csv=require(_0x9d1f('0x8'));var ejs=require(_0x9d1f('0x9'));var fs=require('fs');var fs_extra=require(_0x9d1f('0xa'));var _=require('lodash');var squel=require(_0x9d1f('0xb'));var crypto=require(_0x9d1f('0xc'));var jsforce=require(_0x9d1f('0xd'));var deskjs=require(_0x9d1f('0xe'));var toCsv=require(_0x9d1f('0x8'));var querystring=require(_0x9d1f('0xf'));var Papa=require(_0x9d1f('0x10'));var Redis=require(_0x9d1f('0x11'));var authService=require(_0x9d1f('0x12'));var qs=require(_0x9d1f('0x13'));var as=require(_0x9d1f('0x14'));var hardwareService=require(_0x9d1f('0x15'));var logger=require(_0x9d1f('0x16'))(_0x9d1f('0x17'));var utils=require(_0x9d1f('0x18'));var config=require(_0x9d1f('0x19'));var licenseUtil=require(_0x9d1f('0x1a'));var db=require(_0x9d1f('0x1b'))['db'];function respondWithStatusCode(_0x37266b,_0x3cf742){_0x3cf742=_0x3cf742||0xcc;return function(_0x555c4f){if(_0x555c4f){return _0x37266b[_0x9d1f('0x1c')](_0x3cf742);}return _0x37266b['status'](_0x3cf742)['end']();};}function respondWithResult(_0x1c8859,_0x106354){_0x106354=_0x106354||0xc8;return function(_0x281873){if(_0x281873){return _0x1c8859['status'](_0x106354)['json'](_0x281873);}};}function respondWithFilteredResult(_0xaecdad,_0xf8273){return function(_0x184770){if(_0x184770){var _0x7afbe6=typeof _0xf8273[_0x9d1f('0x1d')]===_0x9d1f('0x1e')&&typeof _0xf8273['limit']===_0x9d1f('0x1e');var _0x5ea02f=_0x184770[_0x9d1f('0x1f')];var _0xc724c7=_0x7afbe6?0x0:_0xf8273[_0x9d1f('0x1d')];var _0x1944ea=_0x7afbe6?_0x184770[_0x9d1f('0x1f')]:_0xf8273[_0x9d1f('0x1d')]+_0xf8273['limit'];var _0x4cdf96;if(_0x1944ea>=_0x5ea02f){_0x1944ea=_0x5ea02f;_0x4cdf96=0xc8;}else{_0x4cdf96=0xce;}_0xaecdad[_0x9d1f('0x20')](_0x4cdf96);return _0xaecdad['set'](_0x9d1f('0x21'),_0xc724c7+'-'+_0x1944ea+'/'+_0x5ea02f)[_0x9d1f('0x22')](_0x184770);}return null;};}function patchUpdates(_0x22bb55){return function(_0x3112c4){try{jsonpatch[_0x9d1f('0x23')](_0x3112c4,_0x22bb55,!![]);}catch(_0x4e79ba){return BPromise[_0x9d1f('0x24')](_0x4e79ba);}return _0x3112c4[_0x9d1f('0x25')]();};}function saveUpdates(_0x183dd8,_0x1951d4){return function(_0x4f9ba8){if(_0x4f9ba8){return _0x4f9ba8[_0x9d1f('0x26')](_0x183dd8)[_0x9d1f('0x27')](function(_0x392fce){return _0x392fce;});}return null;};}function removeEntity(_0x466c6c,_0x45b510){return function(_0x3649ed){if(_0x3649ed){return _0x3649ed[_0x9d1f('0x28')]()[_0x9d1f('0x27')](function(){_0x466c6c[_0x9d1f('0x20')](0xcc)[_0x9d1f('0x29')]();});}};}function handleEntityNotFound(_0x5ca358,_0x2c239f){return function(_0x4ad9e7){if(!_0x4ad9e7){_0x5ca358[_0x9d1f('0x1c')](0x194);}return _0x4ad9e7;};}function handleError(_0x24b92e,_0x4b886c){_0x4b886c=_0x4b886c||0x1f4;return function(_0x32bdf7){logger[_0x9d1f('0x2a')](_0x32bdf7['stack']);if(_0x32bdf7['name']){delete _0x32bdf7['name'];}_0x24b92e[_0x9d1f('0x20')](_0x4b886c)[_0x9d1f('0x2b')](_0x32bdf7);};}exports[_0x9d1f('0x2c')]=function(_0x59a9af,_0x3bb516){var _0x322b46={},_0x19ab82={},_0x345b17={'count':0x0,'rows':[]};var _0x5a6198=_[_0x9d1f('0x2d')](db[_0x9d1f('0x2e')]['rawAttributes'],function(_0x2437d1){return{'name':_0x2437d1[_0x9d1f('0x2f')],'type':_0x2437d1['type'][_0x9d1f('0x30')]};});_0x19ab82[_0x9d1f('0x31')]=_[_0x9d1f('0x2d')](_0x5a6198,_0x9d1f('0x32'));_0x19ab82[_0x9d1f('0x33')]=_['keys'](_0x59a9af[_0x9d1f('0x33')]);_0x19ab82[_0x9d1f('0x34')]=_[_0x9d1f('0x35')](_0x19ab82[_0x9d1f('0x31')],_0x19ab82[_0x9d1f('0x33')]);_0x322b46[_0x9d1f('0x36')]=_[_0x9d1f('0x35')](_0x19ab82[_0x9d1f('0x31')],qs['fields'](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x37')]));_0x322b46[_0x9d1f('0x36')]=_0x322b46[_0x9d1f('0x36')][_0x9d1f('0x38')]?_0x322b46[_0x9d1f('0x36')]:_0x19ab82[_0x9d1f('0x31')];if(!_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x39')](_0x9d1f('0x3a'))){_0x322b46[_0x9d1f('0x3b')]=qs['limit'](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x3b')]);_0x322b46[_0x9d1f('0x1d')]=qs[_0x9d1f('0x1d')](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x1d')]);}_0x322b46[_0x9d1f('0x3c')]=qs[_0x9d1f('0x3d')](_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x3d')]);_0x322b46[_0x9d1f('0x3e')]=qs[_0x9d1f('0x34')](_[_0x9d1f('0x3f')](_0x59a9af['query'],_0x19ab82[_0x9d1f('0x34')]),_0x5a6198);if(_0x59a9af['query']['filter']){_0x322b46['where']=_[_0x9d1f('0x40')](_0x322b46[_0x9d1f('0x3e')],{'$or':_[_0x9d1f('0x2d')](_0x5a6198,function(_0x2e5268){if(_0x2e5268['type']!==_0x9d1f('0x41')){var _0x18cbae={};_0x18cbae[_0x2e5268[_0x9d1f('0x32')]]={'$like':'%'+_0x59a9af['query'][_0x9d1f('0x42')]+'%'};return _0x18cbae;}})});}_0x322b46=_[_0x9d1f('0x40')]({},_0x322b46,_0x59a9af[_0x9d1f('0x43')]);var _0x1d0134={'where':_0x322b46['where']};return db[_0x9d1f('0x2e')][_0x9d1f('0x1f')](_0x1d0134)[_0x9d1f('0x27')](function(_0x11ac8f){_0x345b17['count']=_0x11ac8f;if(_0x59a9af[_0x9d1f('0x33')][_0x9d1f('0x44')]){_0x322b46[_0x9d1f('0x45')]=[{'all':!![]}];}return db[_0x9d1f('0x2e')][_0x9d1f('0x46')](_0x322b46);})[_0x9d1f('0x27')](function(_0x5a84f9){_0x345b17[_0x9d1f('0x47')]=_0x5a84f9;return _0x345b17;})[_0x9d1f('0x27')](respondWithFilteredResult(_0x3bb516,_0x322b46))['catch'](handleError(_0x3bb516,null));};exports[_0x9d1f('0x48')]=function(_0x19651d,_0x35df1d){var _0x4e03ac={'raw':![],'where':{'id':_0x19651d[_0x9d1f('0x49')]['id']}},_0x31834c={};_0x31834c['model']=_['keys'](db[_0x9d1f('0x2e')]['rawAttributes']);_0x31834c[_0x9d1f('0x33')]=_['keys'](_0x19651d[_0x9d1f('0x33')]);_0x31834c[_0x9d1f('0x34')]=_[_0x9d1f('0x35')](_0x31834c[_0x9d1f('0x31')],_0x31834c[_0x9d1f('0x33')]);_0x4e03ac[_0x9d1f('0x36')]=_[_0x9d1f('0x35')](_0x31834c[_0x9d1f('0x31')],qs[_0x9d1f('0x37')](_0x19651d[_0x9d1f('0x33')][_0x9d1f('0x37')]));_0x4e03ac[_0x9d1f('0x36')]=_0x4e03ac[_0x9d1f('0x36')][_0x9d1f('0x38')]?_0x4e03ac[_0x9d1f('0x36')]:_0x31834c[_0x9d1f('0x31')];if(_0x19651d['query'][_0x9d1f('0x44')]){_0x4e03ac[_0x9d1f('0x45')]=[{'all':!![]}];}_0x4e03ac=_[_0x9d1f('0x40')]({},_0x4e03ac,_0x19651d['options']);return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')](_0x4e03ac)[_0x9d1f('0x27')](handleEntityNotFound(_0x35df1d,null))[_0x9d1f('0x27')](respondWithResult(_0x35df1d,null))['catch'](handleError(_0x35df1d,null));};exports[_0x9d1f('0x4b')]=function(_0x24ade0,_0x4d6518){return db['UserProfileSection']['create'](_0x24ade0[_0x9d1f('0x4c')],{})[_0x9d1f('0x27')](respondWithResult(_0x4d6518,0xc9))['catch'](handleError(_0x4d6518,null));};exports[_0x9d1f('0x26')]=function(_0x5b6493,_0x2dc003){if(_0x5b6493[_0x9d1f('0x4c')]['id']){delete _0x5b6493[_0x9d1f('0x4c')]['id'];}return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')]({'where':{'id':_0x5b6493['params']['id']}})[_0x9d1f('0x27')](handleEntityNotFound(_0x2dc003,null))[_0x9d1f('0x27')](saveUpdates(_0x5b6493[_0x9d1f('0x4c')],null))[_0x9d1f('0x27')](respondWithResult(_0x2dc003,null))['catch'](handleError(_0x2dc003,null));};exports[_0x9d1f('0x28')]=function(_0x300c2a,_0x5ea2e9){return db[_0x9d1f('0x2e')][_0x9d1f('0x4a')]({'where':{'id':_0x300c2a['params']['id']}})[_0x9d1f('0x27')](handleEntityNotFound(_0x5ea2e9,null))[_0x9d1f('0x27')](removeEntity(_0x5ea2e9,null))['catch'](handleError(_0x5ea2e9,null));};exports[_0x9d1f('0x4d')]=function(_0xcbe675,_0x2f4524){return db[_0x9d1f('0x2e')][_0x9d1f('0x4d')]()[_0x9d1f('0x27')](respondWithResult(_0x2f4524,null))['catch'](handleError(_0x2f4524,null));};
\ No newline at end of file
index 0acd738..be78a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05e2=['path','../../config/environment','./userProfileSection.attributes','exports','define','UserProfileSection','user_profile_has_sections','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4256a1,_0x1b593a){var _0x2a4f89=function(_0x5c5482){while(--_0x5c5482){_0x4256a1['push'](_0x4256a1['shift']());}};_0x2a4f89(++_0x1b593a);}(_0x05e2,0x179));var _0x205e=function(_0x3238ea,_0x91809d){_0x3238ea=_0x3238ea-0x0;var _0x4aaac2=_0x05e2[_0x3238ea];return _0x4aaac2;};'use strict';var _=require(_0x205e('0x0'));var util=require(_0x205e('0x1'));var logger=require(_0x205e('0x2'))(_0x205e('0x3'));var moment=require(_0x205e('0x4'));var BPromise=require(_0x205e('0x5'));var rp=require(_0x205e('0x6'));var fs=require('fs');var path=require(_0x205e('0x7'));var rimraf=require('rimraf');var config=require(_0x205e('0x8'));var attributes=require(_0x205e('0x9'));module[_0x205e('0xa')]=function(_0x3c439b,_0x1363f0){return _0x3c439b[_0x205e('0xb')](_0x205e('0xc'),attributes,{'tableName':_0x205e('0xd'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':[_0x205e('0xe'),_0x205e('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xc458=['define','UserProfileSection','user_profile_has_sections','compositeIndex','sectionId','userProfileId','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userProfileSection.attributes','exports'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xc458,0x1f3));var _0x8c45=function(_0x27d271,_0x364840){_0x27d271=_0x27d271-0x0;var _0x14d6e9=_0xc458[_0x27d271];return _0x14d6e9;};'use strict';var _=require(_0x8c45('0x0'));var util=require(_0x8c45('0x1'));var logger=require(_0x8c45('0x2'))(_0x8c45('0x3'));var moment=require(_0x8c45('0x4'));var BPromise=require(_0x8c45('0x5'));var rp=require(_0x8c45('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8c45('0x7'));var config=require(_0x8c45('0x8'));var attributes=require(_0x8c45('0x9'));module[_0x8c45('0xa')]=function(_0x1c509e,_0x55abab){return _0x1c509e[_0x8c45('0xb')](_0x8c45('0xc'),attributes,{'tableName':_0x8c45('0xd'),'paranoid':![],'indexes':[{'name':_0x8c45('0xe'),'fields':[_0x8c45('0xf'),_0x8c45('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index 1eaa760..de7a96d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5e5=['error','code','message','result','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4a4c4f,_0x2de179){var _0x11d741=function(_0x1d7739){while(--_0x1d7739){_0x4a4c4f['push'](_0x4a4c4f['shift']());}};_0x11d741(++_0x2de179);}(_0xe5e5,0x7c));var _0x5e5e=function(_0x10102c,_0x56ed26){_0x10102c=_0x10102c-0x0;var _0x51a161=_0xe5e5[_0x10102c];return _0x51a161;};'use strict';var _=require(_0x5e5e('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5e5e('0x1'));var rs=require(_0x5e5e('0x2'));var fs=require('fs');var Redis=require(_0x5e5e('0x3'));var db=require(_0x5e5e('0x4'))['db'];var utils=require(_0x5e5e('0x5'));var logger=require(_0x5e5e('0x6'))(_0x5e5e('0x7'));var config=require(_0x5e5e('0x8'));var jayson=require(_0x5e5e('0x9'));var client=jayson[_0x5e5e('0xa')][_0x5e5e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2336ec,_0x179979,_0x5e9ed7){return new BPromise(function(_0x6b4779,_0x44be9d){return client[_0x5e5e('0xc')](_0x2336ec,_0x5e9ed7)[_0x5e5e('0xd')](function(_0x59e38b){logger[_0x5e5e('0xe')](_0x5e5e('0xf'),_0x179979,_0x5e5e('0x10'));logger[_0x5e5e('0x11')](_0x5e5e('0x12'),_0x179979,'request\x20sent',JSON[_0x5e5e('0x13')](_0x59e38b));if(_0x59e38b[_0x5e5e('0x14')]){if(_0x59e38b[_0x5e5e('0x14')][_0x5e5e('0x15')]===0x1f4){logger[_0x5e5e('0x14')]('UserProfileSection,\x20%s,\x20%s',_0x179979,_0x59e38b[_0x5e5e('0x14')][_0x5e5e('0x16')]);return _0x44be9d(_0x59e38b[_0x5e5e('0x14')][_0x5e5e('0x16')]);}logger[_0x5e5e('0x14')](_0x5e5e('0xf'),_0x179979,_0x59e38b[_0x5e5e('0x14')][_0x5e5e('0x16')]);return _0x6b4779(_0x59e38b[_0x5e5e('0x14')][_0x5e5e('0x16')]);}else{logger[_0x5e5e('0xe')](_0x5e5e('0xf'),_0x179979,_0x5e5e('0x10'));_0x6b4779(_0x59e38b[_0x5e5e('0x17')]['message']);}})['catch'](function(_0xfcd63b){logger[_0x5e5e('0x14')](_0x5e5e('0xf'),_0x179979,_0xfcd63b);_0x44be9d(_0xfcd63b);});});}
\ No newline at end of file
+var _0x9956=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error','code','message','UserProfileSection,\x20%s,\x20%s','result'];(function(_0x28bda5,_0x21e90b){var _0x305a7e=function(_0x11fbb6){while(--_0x11fbb6){_0x28bda5['push'](_0x28bda5['shift']());}};_0x305a7e(++_0x21e90b);}(_0x9956,0x1b1));var _0x6995=function(_0x4f7fd2,_0x19c13b){_0x4f7fd2=_0x4f7fd2-0x0;var _0x541c53=_0x9956[_0x4f7fd2];return _0x541c53;};'use strict';var _=require(_0x6995('0x0'));var util=require(_0x6995('0x1'));var moment=require('moment');var BPromise=require(_0x6995('0x2'));var rs=require(_0x6995('0x3'));var fs=require('fs');var Redis=require(_0x6995('0x4'));var db=require(_0x6995('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x6995('0x6'))(_0x6995('0x7'));var config=require(_0x6995('0x8'));var jayson=require(_0x6995('0x9'));var client=jayson[_0x6995('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x487f1c,_0x147cd9,_0xfd3df1){return new BPromise(function(_0xe969cd,_0x349544){return client[_0x6995('0xb')](_0x487f1c,_0xfd3df1)[_0x6995('0xc')](function(_0x10c422){logger[_0x6995('0xd')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x6995('0xe'));logger[_0x6995('0xf')](_0x6995('0x10'),_0x147cd9,'request\x20sent',JSON[_0x6995('0x11')](_0x10c422));if(_0x10c422[_0x6995('0x12')]){if(_0x10c422['error'][_0x6995('0x13')]===0x1f4){logger[_0x6995('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);return _0x349544(_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);}logger[_0x6995('0x12')]('UserProfileSection,\x20%s,\x20%s',_0x147cd9,_0x10c422[_0x6995('0x12')]['message']);return _0xe969cd(_0x10c422[_0x6995('0x12')][_0x6995('0x14')]);}else{logger['info'](_0x6995('0x15'),_0x147cd9,_0x6995('0xe'));_0xe969cd(_0x10c422[_0x6995('0x16')]['message']);}})[_0x6995('0x17')](function(_0x3397ee){logger[_0x6995('0x12')](_0x6995('0x15'),_0x147cd9,_0x3397ee);_0x349544(_0x3397ee);});});}
\ No newline at end of file
index 3fff5e5..86f2225 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../components/interaction/service','../../config/environment','exports','multer','util','path','Router','../../components/auth/service'];(function(_0x402baf,_0x1ef0ba){var _0x1974d8=function(_0x36a33f){while(--_0x36a33f){_0x402baf['push'](_0x402baf['shift']());}};_0x1974d8(++_0x1ef0ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));module[_0x0a9e('0x7')]=router;
\ No newline at end of file
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x5e0823,_0x146024){var _0x592fbb=function(_0x5ec112){while(--_0x5ec112){_0x5e0823['push'](_0x5e0823['shift']());}};_0x592fbb(++_0x146024);}(_0x9c44,0x178));var _0x49c4=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x9c44[_0x1694f5];return _0x5b4321;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x49c4('0x0'));var timeout=require(_0x49c4('0x1'));var express=require(_0x49c4('0x2'));var router=express[_0x49c4('0x3')]();var fs_extra=require(_0x49c4('0x4'));var auth=require(_0x49c4('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');module[_0x49c4('0x6')]=router;
\ No newline at end of file
index dd68b58..417dacb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c9=['sequelize','exports','INTEGER'];(function(_0x2bb2d2,_0x4b05a7){var _0x325ef1=function(_0x5d2424){while(--_0x5d2424){_0x2bb2d2['push'](_0x2bb2d2['shift']());}};_0x325ef1(++_0x4b05a7);}(_0x80c9,0xba));var _0x980c=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x80c9[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x980c('0x0'));module[_0x980c('0x1')]={'penalty':{'type':Sequelize[_0x980c('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf811=['sequelize'];(function(_0xa27110,_0xc62924){var _0x440477=function(_0x1b8e33){while(--_0x1b8e33){_0xa27110['push'](_0xa27110['shift']());}};_0x440477(++_0xc62924);}(_0xf811,0x1bd));var _0x1f81=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0xf811[_0x21549c];return _0x426cbd;};'use strict';var Sequelize=require(_0x1f81('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d0bb4ea..3a9f42d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eba=['user_has_sms_queues','util','../../config/logger','api','moment','path','../../config/environment','./userSmsQueue.attributes','exports'];(function(_0x13409a,_0x8f949e){var _0x12815b=function(_0x4ee9ab){while(--_0x4ee9ab){_0x13409a['push'](_0x13409a['shift']());}};_0x12815b(++_0x8f949e);}(_0x2eba,0xc7));var _0xa2eb=function(_0x45c8b7,_0x537706){_0x45c8b7=_0x45c8b7-0x0;var _0x144cb6=_0x2eba[_0x45c8b7];return _0x144cb6;};'use strict';var _=require('lodash');var util=require(_0xa2eb('0x0'));var logger=require(_0xa2eb('0x1'))(_0xa2eb('0x2'));var moment=require(_0xa2eb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa2eb('0x4'));var rimraf=require('rimraf');var config=require(_0xa2eb('0x5'));var attributes=require(_0xa2eb('0x6'));module[_0xa2eb('0x7')]=function(_0x1e6fa2,_0x575a5c){return _0x1e6fa2['define']('UserSmsQueue',attributes,{'tableName':_0xa2eb('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xde46=['./userSmsQueue.attributes','exports','define','user_has_sms_queues','lodash','util','../../config/logger','api','request-promise','rimraf','../../config/environment'];(function(_0x5e5417,_0x3a4d7f){var _0x1521dc=function(_0x3d2158){while(--_0x3d2158){_0x5e5417['push'](_0x5e5417['shift']());}};_0x1521dc(++_0x3a4d7f);}(_0xde46,0x14e));var _0x6de4=function(_0x43d123,_0x48cd06){_0x43d123=_0x43d123-0x0;var _0x511350=_0xde46[_0x43d123];return _0x511350;};'use strict';var _=require(_0x6de4('0x0'));var util=require(_0x6de4('0x1'));var logger=require(_0x6de4('0x2'))(_0x6de4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6de4('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x6de4('0x5'));var config=require(_0x6de4('0x6'));var attributes=require(_0x6de4('0x7'));module[_0x6de4('0x8')]=function(_0x525dcc,_0x47eb32){return _0x525dcc[_0x6de4('0x9')]('UserSmsQueue',attributes,{'tableName':_0x6de4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc8298a..2046d7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa7f6=['lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4e1a7f,_0x150206){var _0x21148b=function(_0x51b15b){while(--_0x51b15b){_0x4e1a7f['push'](_0x4e1a7f['shift']());}};_0x21148b(++_0x150206);}(_0xa7f6,0x108));var _0x6a7f=function(_0x2800b5,_0x419221){_0x2800b5=_0x2800b5-0x0;var _0x405ae5=_0xa7f6[_0x2800b5];return _0x405ae5;};'use strict';var _=require(_0x6a7f('0x0'));var util=require(_0x6a7f('0x1'));var moment=require('moment');var BPromise=require(_0x6a7f('0x2'));var rs=require(_0x6a7f('0x3'));var fs=require('fs');var Redis=require(_0x6a7f('0x4'));var db=require(_0x6a7f('0x5'))['db'];var utils=require(_0x6a7f('0x6'));var logger=require(_0x6a7f('0x7'))(_0x6a7f('0x8'));var config=require(_0x6a7f('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6a7f('0xa')][_0x6a7f('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4c7590,_0x2a2618,_0xec28b7){return new BPromise(function(_0x2aa34f,_0x4fca19){return client['request'](_0x4c7590,_0xec28b7)[_0x6a7f('0xc')](function(_0x27e9f9){logger[_0x6a7f('0xd')](_0x6a7f('0xe'),_0x2a2618,_0x6a7f('0xf'));logger[_0x6a7f('0x10')](_0x6a7f('0x11'),_0x2a2618,_0x6a7f('0xf'),JSON[_0x6a7f('0x12')](_0x27e9f9));if(_0x27e9f9['error']){if(_0x27e9f9[_0x6a7f('0x13')][_0x6a7f('0x14')]===0x1f4){logger['error'](_0x6a7f('0xe'),_0x2a2618,_0x27e9f9['error'][_0x6a7f('0x15')]);return _0x4fca19(_0x27e9f9['error']['message']);}logger[_0x6a7f('0x13')](_0x6a7f('0xe'),_0x2a2618,_0x27e9f9[_0x6a7f('0x13')][_0x6a7f('0x15')]);return _0x2aa34f(_0x27e9f9[_0x6a7f('0x13')][_0x6a7f('0x15')]);}else{logger[_0x6a7f('0xd')](_0x6a7f('0xe'),_0x2a2618,_0x6a7f('0xf'));_0x2aa34f(_0x27e9f9['result']['message']);}})['catch'](function(_0x559bbf){logger[_0x6a7f('0x13')](_0x6a7f('0xe'),_0x2a2618,_0x559bbf);_0x4fca19(_0x559bbf);});});}
\ No newline at end of file
+var _0x980e=['request','then','info','UserSmsQueue,\x20%s,\x20%s','request\x20sent','debug','UserSmsQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http'];(function(_0x5ed66c,_0x3ef02e){var _0x2871ab=function(_0x6e3fca){while(--_0x6e3fca){_0x5ed66c['push'](_0x5ed66c['shift']());}};_0x2871ab(++_0x3ef02e);}(_0x980e,0x175));var _0xe980=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x980e[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe980('0x0'));var util=require('util');var moment=require(_0xe980('0x1'));var BPromise=require(_0xe980('0x2'));var rs=require(_0xe980('0x3'));var fs=require('fs');var Redis=require(_0xe980('0x4'));var db=require(_0xe980('0x5'))['db'];var utils=require(_0xe980('0x6'));var logger=require('../../config/logger')(_0xe980('0x7'));var config=require(_0xe980('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xe980('0x9')][_0xe980('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe58413,_0x3c8451,_0xe94a26){return new BPromise(function(_0x50d911,_0x5bd6fc){return client[_0xe980('0xb')](_0xe58413,_0xe94a26)[_0xe980('0xc')](function(_0x3352c1){logger[_0xe980('0xd')](_0xe980('0xe'),_0x3c8451,_0xe980('0xf'));logger[_0xe980('0x10')](_0xe980('0x11'),_0x3c8451,_0xe980('0xf'),JSON[_0xe980('0x12')](_0x3352c1));if(_0x3352c1[_0xe980('0x13')]){if(_0x3352c1[_0xe980('0x13')][_0xe980('0x14')]===0x1f4){logger[_0xe980('0x13')](_0xe980('0xe'),_0x3c8451,_0x3352c1[_0xe980('0x13')]['message']);return _0x5bd6fc(_0x3352c1['error'][_0xe980('0x15')]);}logger['error'](_0xe980('0xe'),_0x3c8451,_0x3352c1[_0xe980('0x13')]['message']);return _0x50d911(_0x3352c1['error'][_0xe980('0x15')]);}else{logger['info'](_0xe980('0xe'),_0x3c8451,_0xe980('0xf'));_0x50d911(_0x3352c1[_0xe980('0x16')]['message']);}})[_0xe980('0x17')](function(_0x2de72e){logger['error'](_0xe980('0xe'),_0x3c8451,_0x2de72e);_0x5bd6fc(_0x2de72e);});});}
\ No newline at end of file
index 2956b37..df2d8e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xefbe=['sequelize','INTEGER'];(function(_0x5046cf,_0x44c493){var _0x2fb819=function(_0x412a83){while(--_0x412a83){_0x5046cf['push'](_0x5046cf['shift']());}};_0x2fb819(++_0x44c493);}(_0xefbe,0x15a));var _0xeefb=function(_0x185791,_0x13e9ac){_0x185791=_0x185791-0x0;var _0x3a605e=_0xefbe[_0x185791];return _0x3a605e;};'use strict';var Sequelize=require(_0xeefb('0x0'));module['exports']={'UserId':{'type':Sequelize[_0xeefb('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xc779=['exports','INTEGER'];(function(_0x3a9815,_0x47eb16){var _0x188653=function(_0x203e84){while(--_0x203e84){_0x3a9815['push'](_0x3a9815['shift']());}};_0x188653(++_0x47eb16);}(_0xc779,0x8e));var _0x9c77=function(_0x52f27b,_0x3e4aa6){_0x52f27b=_0x52f27b-0x0;var _0xde855c=_0xc779[_0x52f27b];return _0xde855c;};'use strict';var Sequelize=require('sequelize');module[_0x9c77('0x0')]={'UserId':{'type':Sequelize[_0x9c77('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x9c77('0x1')]}};
\ No newline at end of file
index 9f1a55c..74ec11b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x58a4a0,_0x99cd94){var _0x21f5d0=function(_0x56e235){while(--_0x56e235){_0x58a4a0['push'](_0x58a4a0['shift']());}};_0x21f5d0(++_0x99cd94);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xa9e0[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa9e0=['../../config/environment','./userVoicePrefix.attributes','exports','define','UserVoicePrefix','lodash','util','../../config/logger','bluebird','path','rimraf'];(function(_0x1b0f29,_0x487fd1){var _0x21de22=function(_0x14ce52){while(--_0x14ce52){_0x1b0f29['push'](_0x1b0f29['shift']());}};_0x21de22(++_0x487fd1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var logger=require(_0x0a9e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x0a9e('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0a9e('0x4'));var rimraf=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var attributes=require(_0x0a9e('0x7'));module[_0x0a9e('0x8')]=function(_0x57b080,_0x219af0){return _0x57b080[_0x0a9e('0x9')](_0x0a9e('0xa'),attributes,{'tableName':'user_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e01d799..aa07e8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x6e75f9,_0xafb397){var _0x2d78e5=function(_0x4e970f){while(--_0x4e970f){_0x6e75f9['push'](_0x6e75f9['shift']());}};_0x2d78e5(++_0xafb397);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x4feaf9,_0x11d59f){var _0x15a078=function(_0x223d9f){while(--_0x223d9f){_0x4feaf9['push'](_0x4feaf9['shift']());}};_0x15a078(++_0x11d59f);}(_0xe706,0xa3));var _0x6e70=function(_0x1ff275,_0x12b011){_0x1ff275=_0x1ff275-0x0;var _0x156912=_0xe706[_0x1ff275];return _0x156912;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 86f931a..b59eca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44d8=['exports','sequelize'];(function(_0x5e06db,_0x9741fd){var _0xb4424b=function(_0x25473e){while(--_0x25473e){_0x5e06db['push'](_0x5e06db['shift']());}};_0xb4424b(++_0x9741fd);}(_0x44d8,0x9b));var _0x844d=function(_0x45f4bc,_0x2369bb){_0x45f4bc=_0x45f4bc-0x0;var _0x40d14b=_0x44d8[_0x45f4bc];return _0x40d14b;};'use strict';var Sequelize=require(_0x844d('0x0'));module[_0x844d('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xdf0f=['INTEGER','exports'];(function(_0x2329ff,_0x1bd48b){var _0x497656=function(_0x467541){while(--_0x467541){_0x2329ff['push'](_0x2329ff['shift']());}};_0x497656(++_0x1bd48b);}(_0xdf0f,0x1e9));var _0xfdf0=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0xdf0f[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require('sequelize');module[_0xfdf0('0x0')]={'penalty':{'type':Sequelize[_0xfdf0('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index 9e937a6..25b5dbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe896=['request-promise','path','rimraf','./userVoiceQueue.attributes','exports','define','UserVoiceQueue','user_has_voice_queues','lodash','util','api','moment','bluebird'];(function(_0xe4bb3d,_0x21e87e){var _0xd9e51=function(_0x1f732b){while(--_0x1f732b){_0xe4bb3d['push'](_0xe4bb3d['shift']());}};_0xd9e51(++_0x21e87e);}(_0xe896,0x119));var _0x6e89=function(_0x196f82,_0x48eeb5){_0x196f82=_0x196f82-0x0;var _0x140382=_0xe896[_0x196f82];return _0x140382;};'use strict';var _=require(_0x6e89('0x0'));var util=require(_0x6e89('0x1'));var logger=require('../../config/logger')(_0x6e89('0x2'));var moment=require(_0x6e89('0x3'));var BPromise=require(_0x6e89('0x4'));var rp=require(_0x6e89('0x5'));var fs=require('fs');var path=require(_0x6e89('0x6'));var rimraf=require(_0x6e89('0x7'));var config=require('../../config/environment');var attributes=require(_0x6e89('0x8'));module[_0x6e89('0x9')]=function(_0x5a3b81,_0x123463){return _0x5a3b81[_0x6e89('0xa')](_0x6e89('0xb'),attributes,{'tableName':_0x6e89('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdce2=['lodash','api','moment','path','rimraf','../../config/environment','exports','define','UserVoiceQueue'];(function(_0x1e4369,_0x526215){var _0x2d7b80=function(_0x3c550f){while(--_0x3c550f){_0x1e4369['push'](_0x1e4369['shift']());}};_0x2d7b80(++_0x526215);}(_0xdce2,0x6c));var _0x2dce=function(_0x2dadb9,_0x42cfe6){_0x2dadb9=_0x2dadb9-0x0;var _0x2f0097=_0xdce2[_0x2dadb9];return _0x2f0097;};'use strict';var _=require(_0x2dce('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x2dce('0x1'));var moment=require(_0x2dce('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2dce('0x3'));var rimraf=require(_0x2dce('0x4'));var config=require(_0x2dce('0x5'));var attributes=require('./userVoiceQueue.attributes');module[_0x2dce('0x6')]=function(_0x4e6151,_0x6e285c){return _0x4e6151[_0x2dce('0x7')](_0x2dce('0x8'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a930d6d..2b9c8e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe63b=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x47d689,_0x42f62b){var _0x570f3d=function(_0x37cb76){while(--_0x37cb76){_0x47d689['push'](_0x47d689['shift']());}};_0x570f3d(++_0x42f62b);}(_0xe63b,0x16a));var _0xbe63=function(_0x211632,_0x378e2e){_0x211632=_0x211632-0x0;var _0x5a1da1=_0xe63b[_0x211632];return _0x5a1da1;};'use strict';var _=require(_0xbe63('0x0'));var util=require(_0xbe63('0x1'));var moment=require(_0xbe63('0x2'));var BPromise=require(_0xbe63('0x3'));var rs=require(_0xbe63('0x4'));var fs=require('fs');var Redis=require(_0xbe63('0x5'));var db=require(_0xbe63('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xbe63('0x7'))(_0xbe63('0x8'));var config=require(_0xbe63('0x9'));var jayson=require(_0xbe63('0xa'));var client=jayson['client'][_0xbe63('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x14be5b,_0x5d0e00,_0x3e83b6){return new BPromise(function(_0x5007bc,_0x55652c){return client[_0xbe63('0xc')](_0x14be5b,_0x3e83b6)['then'](function(_0x30c7b3){logger[_0xbe63('0xd')](_0xbe63('0xe'),_0x5d0e00,_0xbe63('0xf'));logger['debug'](_0xbe63('0x10'),_0x5d0e00,_0xbe63('0xf'),JSON[_0xbe63('0x11')](_0x30c7b3));if(_0x30c7b3[_0xbe63('0x12')]){if(_0x30c7b3[_0xbe63('0x12')][_0xbe63('0x13')]===0x1f4){logger['error'](_0xbe63('0xe'),_0x5d0e00,_0x30c7b3[_0xbe63('0x12')][_0xbe63('0x14')]);return _0x55652c(_0x30c7b3[_0xbe63('0x12')][_0xbe63('0x14')]);}logger['error'](_0xbe63('0xe'),_0x5d0e00,_0x30c7b3[_0xbe63('0x12')]['message']);return _0x5007bc(_0x30c7b3['error']['message']);}else{logger[_0xbe63('0xd')]('UserVoiceQueue,\x20%s,\x20%s',_0x5d0e00,_0xbe63('0xf'));_0x5007bc(_0x30c7b3[_0xbe63('0x15')]['message']);}})[_0xbe63('0x16')](function(_0x22e3ec){logger[_0xbe63('0x12')](_0xbe63('0xe'),_0x5d0e00,_0x22e3ec);_0x55652c(_0x22e3ec);});});}
\ No newline at end of file
+var _0xc2d5=['request','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x219a70,_0x232d83){var _0x1e01ab=function(_0x4c8e0f){while(--_0x4c8e0f){_0x219a70['push'](_0x219a70['shift']());}};_0x1e01ab(++_0x232d83);}(_0xc2d5,0xa4));var _0x5c2d=function(_0x42245d,_0x51758f){_0x42245d=_0x42245d-0x0;var _0x4b211a=_0xc2d5[_0x42245d];return _0x4b211a;};'use strict';var _=require(_0x5c2d('0x0'));var util=require('util');var moment=require(_0x5c2d('0x1'));var BPromise=require(_0x5c2d('0x2'));var rs=require(_0x5c2d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5c2d('0x4'))['db'];var utils=require(_0x5c2d('0x5'));var logger=require(_0x5c2d('0x6'))(_0x5c2d('0x7'));var config=require(_0x5c2d('0x8'));var jayson=require(_0x5c2d('0x9'));var client=jayson[_0x5c2d('0xa')][_0x5c2d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x454e64,_0xd13093,_0x3cecb6){return new BPromise(function(_0x1d54eb,_0x927353){return client[_0x5c2d('0xc')](_0x454e64,_0x3cecb6)['then'](function(_0x2b8b8f){logger[_0x5c2d('0xd')](_0x5c2d('0xe'),_0xd13093,_0x5c2d('0xf'));logger['debug'](_0x5c2d('0x10'),_0xd13093,_0x5c2d('0xf'),JSON[_0x5c2d('0x11')](_0x2b8b8f));if(_0x2b8b8f[_0x5c2d('0x12')]){if(_0x2b8b8f[_0x5c2d('0x12')]['code']===0x1f4){logger['error'](_0x5c2d('0xe'),_0xd13093,_0x2b8b8f[_0x5c2d('0x12')]['message']);return _0x927353(_0x2b8b8f[_0x5c2d('0x12')][_0x5c2d('0x13')]);}logger[_0x5c2d('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0xd13093,_0x2b8b8f['error'][_0x5c2d('0x13')]);return _0x1d54eb(_0x2b8b8f[_0x5c2d('0x12')][_0x5c2d('0x13')]);}else{logger[_0x5c2d('0xd')](_0x5c2d('0xe'),_0xd13093,_0x5c2d('0xf'));_0x1d54eb(_0x2b8b8f[_0x5c2d('0x14')][_0x5c2d('0x13')]);}})[_0x5c2d('0x15')](function(_0x1334a4){logger[_0x5c2d('0x12')](_0x5c2d('0xe'),_0xd13093,_0x1334a4);_0x927353(_0x1334a4);});});}
\ No newline at end of file
index 318e03c..741ce30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x56eda8,_0x5189fb){var _0x2a1c58=function(_0x1bc8bf){while(--_0x1bc8bf){_0x56eda8['push'](_0x56eda8['shift']());}};_0x2a1c58(++_0x5189fb);}(_0x70e0,0x17b));var _0x070e=function(_0x3c8024,_0xc27256){_0x3c8024=_0x3c8024-0x0;var _0x2b855c=_0x70e0[_0x3c8024];return _0x2b855c;};'use strict';var multer=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var path=require(_0x070e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x070e('0x3')]();var fs_extra=require(_0x070e('0x4'));var auth=require(_0x070e('0x5'));var interaction=require(_0x070e('0x6'));var config=require('../../config/environment');module[_0x070e('0x7')]=router;
\ No newline at end of file
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x189449,_0x3e3282){var _0x1fa8e5=function(_0x381a73){while(--_0x381a73){_0x189449['push'](_0x189449['shift']());}};_0x1fa8e5(++_0x3e3282);}(_0xe706,0xa3));var _0x6e70=function(_0x4b55cb,_0x49791b){_0x4b55cb=_0x4b55cb-0x0;var _0x2631df=_0xe706[_0x4b55cb];return _0x2631df;};'use strict';var multer=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var path=require(_0x6e70('0x2'));var timeout=require('connect-timeout');var express=require(_0x6e70('0x3'));var router=express[_0x6e70('0x4')]();var fs_extra=require(_0x6e70('0x5'));var auth=require(_0x6e70('0x6'));var interaction=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));module[_0x6e70('0x9')]=router;
\ No newline at end of file
index 994a7fb..3eacb2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0880=['INTEGER','STRING','queue_interface','Required\x20by\x20Asterisk','sequelize'];(function(_0x14b26d,_0x225458){var _0x3c0d47=function(_0x580640){while(--_0x580640){_0x14b26d['push'](_0x14b26d['shift']());}};_0x3c0d47(++_0x225458);}(_0x0880,0x7c));var _0x0088=function(_0x4a7193,_0x556c6a){_0x4a7193=_0x4a7193-0x0;var _0xc33d94=_0x0880[_0x4a7193];return _0xc33d94;};'use strict';var Sequelize=require(_0x0088('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x0088('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x0088('0x2')],'allowNull':![],'comment':'Required\x20by\x20Asterisk'},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x0088('0x3'),'comment':'Required\x20by\x20Asterisk'},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize['STRING'],'allowNull':![],'unique':'queue_interface','comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x0088('0x1')](0xb),'defaultValue':0x0,'comment':_0x0088('0x4')},'paused':{'type':Sequelize[_0x0088('0x1')](0xb),'defaultValue':0x0,'comment':_0x0088('0x4')}};
\ No newline at end of file
+var _0x4202=['queue_interface','STRING','sequelize','exports','Required\x20by\x20Asterisk','INTEGER'];(function(_0x5a7dd3,_0x26b7cf){var _0x2f4d07=function(_0x280510){while(--_0x280510){_0x5a7dd3['push'](_0x5a7dd3['shift']());}};_0x2f4d07(++_0x26b7cf);}(_0x4202,0x8c));var _0x2420=function(_0x44ea1b,_0x36bbd3){_0x44ea1b=_0x44ea1b-0x0;var _0x239690=_0x4202[_0x44ea1b];return _0x239690;};'use strict';var Sequelize=require(_0x2420('0x0'));module[_0x2420('0x1')]={'uniqueid':{'type':Sequelize['INTEGER'],'primaryKey':!![],'autoIncrement':!![],'comment':_0x2420('0x2')},'membername':{'type':Sequelize['STRING'],'allowNull':![],'comment':_0x2420('0x2')},'UserId':{'type':Sequelize[_0x2420('0x3')],'allowNull':![]},'queue_name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2420('0x4'),'comment':_0x2420('0x2')},'VoiceQueueId':{'type':Sequelize['INTEGER'],'allowNull':![]},'interface':{'type':Sequelize[_0x2420('0x5')],'allowNull':![],'unique':_0x2420('0x4'),'comment':'Required\x20by\x20Asterisk'},'penalty':{'type':Sequelize[_0x2420('0x3')](0xb),'defaultValue':0x0,'comment':_0x2420('0x2')},'paused':{'type':Sequelize[_0x2420('0x3')](0xb),'defaultValue':0x0,'comment':_0x2420('0x2')}};
\ No newline at end of file
index 45dc56e..cfbbbc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f1=['save','update','remove','emit','hasOwnProperty','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners'];(function(_0x50ca77,_0xaf6074){var _0x5a7eff=function(_0x3e26f2){while(--_0x3e26f2){_0x50ca77['push'](_0x50ca77['shift']());}};_0x5a7eff(++_0xaf6074);}(_0x38f1,0xef));var _0x138f=function(_0x42817d,_0x17482f){_0x42817d=_0x42817d-0x0;var _0x2edeb1=_0x38f1[_0x42817d];return _0x2edeb1;};'use strict';var EventEmitter=require(_0x138f('0x0'));var UserVoiceQueueRt=require(_0x138f('0x1'))['db'][_0x138f('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x138f('0x3')](0x0);var events={'afterCreate':_0x138f('0x4'),'afterUpdate':_0x138f('0x5'),'afterDestroy':_0x138f('0x6')};function emitEvent(_0xeb6dfe){return function(_0x368c08,_0x2b674b,_0x26f3c8){UserVoiceQueueRtEvents[_0x138f('0x7')](_0xeb6dfe+':'+_0x368c08['id'],_0x368c08);UserVoiceQueueRtEvents[_0x138f('0x7')](_0xeb6dfe,_0x368c08);_0x26f3c8(null);};}for(var e in events){if(events[_0x138f('0x8')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x0069=['emit','hasOwnProperty','hook','exports','events','../../mysqldb','UserVoiceQueueRt','setMaxListeners','save','update','remove'];(function(_0x1fd8b3,_0x3bd29a){var _0x1f461f=function(_0x171f72){while(--_0x171f72){_0x1fd8b3['push'](_0x1fd8b3['shift']());}};_0x1f461f(++_0x3bd29a);}(_0x0069,0x17a));var _0x9006=function(_0x2868ec,_0x3aef29){_0x2868ec=_0x2868ec-0x0;var _0x2ad998=_0x0069[_0x2868ec];return _0x2ad998;};'use strict';var EventEmitter=require(_0x9006('0x0'));var UserVoiceQueueRt=require(_0x9006('0x1'))['db'][_0x9006('0x2')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0x9006('0x3')](0x0);var events={'afterCreate':_0x9006('0x4'),'afterUpdate':_0x9006('0x5'),'afterDestroy':_0x9006('0x6')};function emitEvent(_0x506c63){return function(_0x51b42f,_0x4bcf2b,_0x4246ad){UserVoiceQueueRtEvents[_0x9006('0x7')](_0x506c63+':'+_0x51b42f['id'],_0x51b42f);UserVoiceQueueRtEvents[_0x9006('0x7')](_0x506c63,_0x51b42f);_0x4246ad(null);};}for(var e in events){if(events[_0x9006('0x8')](e)){var event=events[e];UserVoiceQueueRt[_0x9006('0x9')](e,emitEvent(event));}}module[_0x9006('0xa')]=UserVoiceQueueRtEvents;
\ No newline at end of file
index 45f8f32..0647ab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x528c=['rimraf','./userVoiceQueueRt.attributes','exports','UserVoiceQueueRt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x58caff,_0x4f7e01){var _0x2cdfdd=function(_0x3be9a){while(--_0x3be9a){_0x58caff['push'](_0x58caff['shift']());}};_0x2cdfdd(++_0x4f7e01);}(_0x528c,0x1a8));var _0xc528=function(_0x181aaa,_0x30c832){_0x181aaa=_0x181aaa-0x0;var _0xebacd2=_0x528c[_0x181aaa];return _0xebacd2;};'use strict';var _=require(_0xc528('0x0'));var util=require(_0xc528('0x1'));var logger=require(_0xc528('0x2'))(_0xc528('0x3'));var moment=require(_0xc528('0x4'));var BPromise=require(_0xc528('0x5'));var rp=require(_0xc528('0x6'));var fs=require('fs');var path=require(_0xc528('0x7'));var rimraf=require(_0xc528('0x8'));var config=require('../../config/environment');var attributes=require(_0xc528('0x9'));module[_0xc528('0xa')]=function(_0x41716a,_0x20eb74){return _0x41716a['define'](_0xc528('0xb'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x88b5=['./userVoiceQueueRt.attributes','UserVoiceQueueRt','user_has_voice_queues_rt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x3e5566,_0x403e50){var _0x381923=function(_0x5914bd){while(--_0x5914bd){_0x3e5566['push'](_0x3e5566['shift']());}};_0x381923(++_0x403e50);}(_0x88b5,0x183));var _0x588b=function(_0x41bec4,_0x256bba){_0x41bec4=_0x41bec4-0x0;var _0x37b75c=_0x88b5[_0x41bec4];return _0x37b75c;};'use strict';var _=require(_0x588b('0x0'));var util=require(_0x588b('0x1'));var logger=require(_0x588b('0x2'))(_0x588b('0x3'));var moment=require(_0x588b('0x4'));var BPromise=require(_0x588b('0x5'));var rp=require(_0x588b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x588b('0x7'));var config=require(_0x588b('0x8'));var attributes=require(_0x588b('0x9'));module['exports']=function(_0x5272de,_0x5b9299){return _0x5272de['define'](_0x588b('0xa'),attributes,{'tableName':_0x588b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 23e7277..2adbf10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ec=['UserVoiceQueueRt,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','message','info','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','options','raw','where','sequelize','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','lodash','moment','bluebird','randomstring','../../config/logger','rpc','client','http','redis','defaults','localhost','socket.io-emitter','./userVoiceQueueRt.socket','register','then'];(function(_0x31a371,_0x50828e){var _0x2a5bd6=function(_0x2fb481){while(--_0x2fb481){_0x31a371['push'](_0x31a371['shift']());}};_0x2a5bd6(++_0x50828e);}(_0x69ec,0x1bf));var _0xc69e=function(_0x4cb0e3,_0x5e0445){_0x4cb0e3=_0x4cb0e3-0x0;var _0x46ea93=_0x69ec[_0x4cb0e3];return _0x46ea93;};'use strict';var _=require(_0xc69e('0x0'));var util=require('util');var moment=require(_0xc69e('0x1'));var BPromise=require(_0xc69e('0x2'));var rs=require(_0xc69e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xc69e('0x4'))(_0xc69e('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xc69e('0x6')][_0xc69e('0x7')]({'port':0x232a});config[_0xc69e('0x8')]=_[_0xc69e('0x9')](config[_0xc69e('0x8')],{'host':_0xc69e('0xa'),'port':0x18eb});var socket=require(_0xc69e('0xb'))(new Redis(config[_0xc69e('0x8')]));require(_0xc69e('0xc'))[_0xc69e('0xd')](socket);function respondWithRpcPromise(_0x290912,_0x4db613,_0x5b514a){return new BPromise(function(_0x5bfdd4,_0xc18ff3){return client['request'](_0x290912,_0x5b514a)[_0xc69e('0xe')](function(_0x1dc80d){logger['info'](_0xc69e('0xf'),_0x4db613,_0xc69e('0x10'));logger[_0xc69e('0x11')](_0xc69e('0x12'),_0x4db613,_0xc69e('0x10'),JSON['stringify'](_0x1dc80d));if(_0x1dc80d[_0xc69e('0x13')]){if(_0x1dc80d[_0xc69e('0x13')][_0xc69e('0x14')]===0x1f4){logger[_0xc69e('0x13')](_0xc69e('0xf'),_0x4db613,_0x1dc80d[_0xc69e('0x13')]['message']);return _0xc18ff3(_0x1dc80d[_0xc69e('0x13')][_0xc69e('0x15')]);}logger[_0xc69e('0x13')](_0xc69e('0xf'),_0x4db613,_0x1dc80d[_0xc69e('0x13')]['message']);return _0x5bfdd4(_0x1dc80d[_0xc69e('0x13')][_0xc69e('0x15')]);}else{logger[_0xc69e('0x16')](_0xc69e('0xf'),_0x4db613,_0xc69e('0x10'));_0x5bfdd4(_0x1dc80d[_0xc69e('0x17')]['message']);}})['catch'](function(_0x1fc5ff){logger[_0xc69e('0x13')](_0xc69e('0xf'),_0x4db613,_0x1fc5ff);_0xc18ff3(_0x1fc5ff);});});}exports[_0xc69e('0x18')]=function(_0x177140){var _0x143403=this;return new Promise(function(_0x585494,_0x1ec76b){return db[_0xc69e('0x19')]['findAll']({'raw':_0x177140[_0xc69e('0x1a')]?_0x177140['options'][_0xc69e('0x1b')]===undefined?!![]:![]:!![],'where':_0x177140[_0xc69e('0x1a')]?_0x177140['options'][_0xc69e('0x1c')]||null:null,'attributes':[[db[_0xc69e('0x1d')]['fn'](_0xc69e('0x1e'),db[_0xc69e('0x1d')]['fn']('IF',db[_0xc69e('0x1d')][_0xc69e('0x1f')](_0xc69e('0x20')))),'outboundQueuePauses']]})[_0xc69e('0xe')](function(_0x3a25e1){logger[_0xc69e('0x16')](_0xc69e('0x18'),_0x177140);logger[_0xc69e('0x11')](_0xc69e('0x18'),_0x177140,JSON['stringify'](_0x3a25e1));_0x585494(_0x3a25e1);})['catch'](function(_0x53cff5){logger[_0xc69e('0x13')](_0xc69e('0x18'),_0x53cff5[_0xc69e('0x15')],_0x177140);_0x1ec76b(_0x143403['error'](0x1f4,_0x53cff5['message']));});});};
\ No newline at end of file
+var _0x8198=['request\x20sent','debug','stringify','error','code','message','catch','UserVoiceQueueRt','findAll','options','raw','where','COUNT','literal','`paused`\x20=\x201,\x201,\x20null','GetVoiceQueueRtPauses','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','./userVoiceQueueRt.socket','request','then','info','UserVoiceQueueRt,\x20%s,\x20%s'];(function(_0x3dee9e,_0x4857b8){var _0x439481=function(_0x3a60e7){while(--_0x3a60e7){_0x3dee9e['push'](_0x3dee9e['shift']());}};_0x439481(++_0x4857b8);}(_0x8198,0x118));var _0x8819=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x8198[_0x2bf141];return _0x48277b;};'use strict';var _=require('lodash');var util=require(_0x8819('0x0'));var moment=require('moment');var BPromise=require(_0x8819('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8819('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x8819('0x3'));var logger=require(_0x8819('0x4'))(_0x8819('0x5'));var config=require(_0x8819('0x6'));var jayson=require(_0x8819('0x7'));var client=jayson[_0x8819('0x8')][_0x8819('0x9')]({'port':0x232a});config['redis']=_[_0x8819('0xa')](config[_0x8819('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8819('0xb')]));require(_0x8819('0xc'))['register'](socket);function respondWithRpcPromise(_0x220f6e,_0x16df74,_0x413d19){return new BPromise(function(_0x49d422,_0x508bbf){return client[_0x8819('0xd')](_0x220f6e,_0x413d19)[_0x8819('0xe')](function(_0x37e837){logger[_0x8819('0xf')](_0x8819('0x10'),_0x16df74,_0x8819('0x11'));logger[_0x8819('0x12')]('UserVoiceQueueRt,\x20%s,\x20%s,\x20%s',_0x16df74,'request\x20sent',JSON[_0x8819('0x13')](_0x37e837));if(_0x37e837[_0x8819('0x14')]){if(_0x37e837[_0x8819('0x14')][_0x8819('0x15')]===0x1f4){logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x16df74,_0x37e837['error']['message']);return _0x508bbf(_0x37e837[_0x8819('0x14')][_0x8819('0x16')]);}logger['error']('UserVoiceQueueRt,\x20%s,\x20%s',_0x16df74,_0x37e837[_0x8819('0x14')][_0x8819('0x16')]);return _0x49d422(_0x37e837[_0x8819('0x14')]['message']);}else{logger[_0x8819('0xf')](_0x8819('0x10'),_0x16df74,'request\x20sent');_0x49d422(_0x37e837['result'][_0x8819('0x16')]);}})[_0x8819('0x17')](function(_0xae1afa){logger[_0x8819('0x14')](_0x8819('0x10'),_0x16df74,_0xae1afa);_0x508bbf(_0xae1afa);});});}exports['GetVoiceQueueRtPauses']=function(_0x46b6a7){var _0x2c9b3e=this;return new Promise(function(_0xc0e07e,_0xdbacb6){return db[_0x8819('0x18')][_0x8819('0x19')]({'raw':_0x46b6a7[_0x8819('0x1a')]?_0x46b6a7[_0x8819('0x1a')][_0x8819('0x1b')]===undefined?!![]:![]:!![],'where':_0x46b6a7['options']?_0x46b6a7[_0x8819('0x1a')][_0x8819('0x1c')]||null:null,'attributes':[[db['sequelize']['fn'](_0x8819('0x1d'),db['sequelize']['fn']('IF',db['sequelize'][_0x8819('0x1e')](_0x8819('0x1f')))),'outboundQueuePauses']]})[_0x8819('0xe')](function(_0x108169){logger[_0x8819('0xf')](_0x8819('0x20'),_0x46b6a7);logger[_0x8819('0x12')](_0x8819('0x20'),_0x46b6a7,JSON[_0x8819('0x13')](_0x108169));_0xc0e07e(_0x108169);})[_0x8819('0x17')](function(_0x13f556){logger[_0x8819('0x14')](_0x8819('0x20'),_0x13f556['message'],_0x46b6a7);_0xdbacb6(_0x2c9b3e[_0x8819('0x14')](0x1f4,_0x13f556[_0x8819('0x16')]));});});};
\ No newline at end of file
index c732249..e97623c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a6b=['removeListener','length','./userVoiceQueueRt.events','emit'];(function(_0x468b0f,_0x408566){var _0x3e74d9=function(_0x27a545){while(--_0x27a545){_0x468b0f['push'](_0x468b0f['shift']());}};_0x3e74d9(++_0x408566);}(_0x0a6b,0x18e));var _0xb0a6=function(_0x1c78dd,_0x117d6e){_0x1c78dd=_0x1c78dd-0x0;var _0x927903=_0x0a6b[_0x1c78dd];return _0x927903;};'use strict';var UserVoiceQueueRtEvents=require(_0xb0a6('0x0'));var events=['save','remove','update'];function createListener(_0x16a15d,_0x50d3d5){return function(_0x2245d7){_0x50d3d5[_0xb0a6('0x1')](_0x16a15d,_0x2245d7);};}function removeListener(_0x1d3b78,_0x544a64){return function(){UserVoiceQueueRtEvents[_0xb0a6('0x2')](_0x1d3b78,_0x544a64);};}exports['register']=function(_0xbbdf89){for(var _0x415e9e=0x0,_0x5e2d2d=events[_0xb0a6('0x3')];_0x415e9e<_0x5e2d2d;_0x415e9e++){var _0x24515c=events[_0x415e9e];var _0x2a8516=createListener('userVoiceQueueRt:'+_0x24515c,_0xbbdf89);UserVoiceQueueRtEvents['on'](_0x24515c,_0x2a8516);}};
\ No newline at end of file
+var _0xda19=['removeListener','register','length','save','remove'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0xda19,0xd5));var _0x9da1=function(_0x2d59a5,_0x5603f1){_0x2d59a5=_0x2d59a5-0x0;var _0x4bc96f=_0xda19[_0x2d59a5];return _0x4bc96f;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=[_0x9da1('0x0'),_0x9da1('0x1'),'update'];function createListener(_0x175479,_0x503770){return function(_0x435076){_0x503770['emit'](_0x175479,_0x435076);};}function removeListener(_0x2a77c7,_0xef6f5a){return function(){UserVoiceQueueRtEvents[_0x9da1('0x2')](_0x2a77c7,_0xef6f5a);};}exports[_0x9da1('0x3')]=function(_0x156faf){for(var _0x2dcbc6=0x0,_0x23e4f7=events[_0x9da1('0x4')];_0x2dcbc6<_0x23e4f7;_0x2dcbc6++){var _0x1c24e6=events[_0x2dcbc6];var _0x5e2d18=createListener('userVoiceQueueRt:'+_0x1c24e6,_0x156faf);UserVoiceQueueRtEvents['on'](_0x1c24e6,_0x5e2d18);}};
\ No newline at end of file
index 99a37f1..03b142f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x43fd75,_0x48dc5c){var _0x3cb02d=function(_0x2eb0d0){while(--_0x2eb0d0){_0x43fd75['push'](_0x43fd75['shift']());}};_0x3cb02d(++_0x48dc5c);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3071('0x0'));var timeout=require(_0x3071('0x1'));var express=require(_0x3071('0x2'));var router=express[_0x3071('0x3')]();var fs_extra=require(_0x3071('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));module[_0x3071('0x7')]=router;
\ No newline at end of file
+var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x117afe,_0xc7fa7){var _0x1743d7=function(_0x46176c){while(--_0x46176c){_0x117afe['push'](_0x117afe['shift']());}};_0x1743d7(++_0xc7fa7);}(_0xedd9,0xfc));var _0x9edd=function(_0x13ff0c,_0x2e0181){_0x13ff0c=_0x13ff0c-0x0;var _0x2c005d=_0xedd9[_0x13ff0c];return _0x2c005d;};'use strict';var multer=require('multer');var util=require(_0x9edd('0x0'));var path=require(_0x9edd('0x1'));var timeout=require(_0x9edd('0x2'));var express=require(_0x9edd('0x3'));var router=express[_0x9edd('0x4')]();var fs_extra=require(_0x9edd('0x5'));var auth=require(_0x9edd('0x6'));var interaction=require(_0x9edd('0x7'));var config=require('../../config/environment');module[_0x9edd('0x8')]=router;
\ No newline at end of file
index 02c77b3..f0ae896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6510=['INTEGER','sequelize'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x6510,0x1a3));var _0x0651=function(_0x2be172,_0x1dff08){_0x2be172=_0x2be172-0x0;var _0xfab385=_0x6510[_0x2be172];return _0xfab385;};'use strict';var Sequelize=require(_0x0651('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x0651('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xc5fb=['sequelize','exports','INTEGER'];(function(_0x50ae92,_0x37aca9){var _0x4ed238=function(_0x11a387){while(--_0x11a387){_0x50ae92['push'](_0x50ae92['shift']());}};_0x4ed238(++_0x37aca9);}(_0xc5fb,0xa8));var _0xbc5f=function(_0x5cb6f3,_0x4085bc){_0x5cb6f3=_0x5cb6f3-0x0;var _0x225ffe=_0xc5fb[_0x5cb6f3];return _0x225ffe;};'use strict';var Sequelize=require(_0xbc5f('0x0'));module[_0xbc5f('0x1')]={'penalty':{'type':Sequelize[_0xbc5f('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index da1c610..b3fa4b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a82=['moment','bluebird','request-promise','rimraf','../../config/environment','./userWhatsappQueue.attributes','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','api'];(function(_0x37c3a5,_0x1f7bf3){var _0x693995=function(_0x2d0ca5){while(--_0x2d0ca5){_0x37c3a5['push'](_0x37c3a5['shift']());}};_0x693995(++_0x1f7bf3);}(_0x9a82,0x12a));var _0x29a8=function(_0x48ac48,_0x2c4323){_0x48ac48=_0x48ac48-0x0;var _0x8431b3=_0x9a82[_0x48ac48];return _0x8431b3;};'use strict';var _=require(_0x29a8('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x29a8('0x1'));var moment=require(_0x29a8('0x2'));var BPromise=require(_0x29a8('0x3'));var rp=require(_0x29a8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x29a8('0x5'));var config=require(_0x29a8('0x6'));var attributes=require(_0x29a8('0x7'));module[_0x29a8('0x8')]=function(_0x2c154d,_0x5ec7e8){return _0x2c154d[_0x29a8('0x9')](_0x29a8('0xa'),attributes,{'tableName':_0x29a8('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x10e7=['util','../../config/logger','bluebird','request-promise','path','rimraf','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash'];(function(_0x3b7b8a,_0x52c3b0){var _0x441206=function(_0x5d34d3){while(--_0x5d34d3){_0x3b7b8a['push'](_0x3b7b8a['shift']());}};_0x441206(++_0x52c3b0);}(_0x10e7,0x180));var _0x710e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x10e7[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x710e('0x0'));var util=require(_0x710e('0x1'));var logger=require(_0x710e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x710e('0x3'));var rp=require(_0x710e('0x4'));var fs=require('fs');var path=require(_0x710e('0x5'));var rimraf=require(_0x710e('0x6'));var config=require('../../config/environment');var attributes=require('./userWhatsappQueue.attributes');module[_0x710e('0x7')]=function(_0x44b775,_0x20b3b3){return _0x44b775[_0x710e('0x8')](_0x710e('0x9'),attributes,{'tableName':_0x710e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a162941..602dccf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87f7=['request\x20sent','debug','UserWhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','UserWhatsappQueue,\x20%s,\x20%s'];(function(_0x3ff9bf,_0x2510e4){var _0x156e50=function(_0x145bef){while(--_0x145bef){_0x3ff9bf['push'](_0x3ff9bf['shift']());}};_0x156e50(++_0x2510e4);}(_0x87f7,0x102));var _0x787f=function(_0x249d6a,_0x5beaa1){_0x249d6a=_0x249d6a-0x0;var _0x591c89=_0x87f7[_0x249d6a];return _0x591c89;};'use strict';var _=require(_0x787f('0x0'));var util=require(_0x787f('0x1'));var moment=require(_0x787f('0x2'));var BPromise=require('bluebird');var rs=require(_0x787f('0x3'));var fs=require('fs');var Redis=require(_0x787f('0x4'));var db=require(_0x787f('0x5'))['db'];var utils=require(_0x787f('0x6'));var logger=require(_0x787f('0x7'))(_0x787f('0x8'));var config=require(_0x787f('0x9'));var jayson=require(_0x787f('0xa'));var client=jayson[_0x787f('0xb')][_0x787f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x102e61,_0x54a47d,_0x2288dd){return new BPromise(function(_0x2a5b72,_0x3f8ff2){return client[_0x787f('0xd')](_0x102e61,_0x2288dd)[_0x787f('0xe')](function(_0x1125e8){logger[_0x787f('0xf')](_0x787f('0x10'),_0x54a47d,_0x787f('0x11'));logger[_0x787f('0x12')](_0x787f('0x13'),_0x54a47d,_0x787f('0x11'),JSON[_0x787f('0x14')](_0x1125e8));if(_0x1125e8[_0x787f('0x15')]){if(_0x1125e8[_0x787f('0x15')][_0x787f('0x16')]===0x1f4){logger[_0x787f('0x15')](_0x787f('0x10'),_0x54a47d,_0x1125e8[_0x787f('0x15')][_0x787f('0x17')]);return _0x3f8ff2(_0x1125e8[_0x787f('0x15')]['message']);}logger[_0x787f('0x15')]('UserWhatsappQueue,\x20%s,\x20%s',_0x54a47d,_0x1125e8[_0x787f('0x15')][_0x787f('0x17')]);return _0x2a5b72(_0x1125e8[_0x787f('0x15')]['message']);}else{logger['info']('UserWhatsappQueue,\x20%s,\x20%s',_0x54a47d,_0x787f('0x11'));_0x2a5b72(_0x1125e8[_0x787f('0x18')][_0x787f('0x17')]);}})['catch'](function(_0x531245){logger['error'](_0x787f('0x10'),_0x54a47d,_0x531245);_0x3f8ff2(_0x531245);});});}
\ No newline at end of file
+var _0x0db1=['code','message','info','request\x20sent','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','UserWhatsappQueue,\x20%s,\x20%s','debug','error'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0db1,0x1bc));var _0x10db=function(_0x4a2019,_0x2d9501){_0x4a2019=_0x4a2019-0x0;var _0x4518f9=_0x0db1[_0x4a2019];return _0x4518f9;};'use strict';var _=require(_0x10db('0x0'));var util=require('util');var moment=require(_0x10db('0x1'));var BPromise=require(_0x10db('0x2'));var rs=require(_0x10db('0x3'));var fs=require('fs');var Redis=require(_0x10db('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x10db('0x5'));var logger=require(_0x10db('0x6'))(_0x10db('0x7'));var config=require(_0x10db('0x8'));var jayson=require(_0x10db('0x9'));var client=jayson[_0x10db('0xa')][_0x10db('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12c92d,_0x2a07ce,_0x54c7c7){return new BPromise(function(_0x17d529,_0x2e2cb3){return client[_0x10db('0xc')](_0x12c92d,_0x54c7c7)['then'](function(_0x712577){logger['info'](_0x10db('0xd'),_0x2a07ce,'request\x20sent');logger[_0x10db('0xe')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x2a07ce,'request\x20sent',JSON['stringify'](_0x712577));if(_0x712577['error']){if(_0x712577[_0x10db('0xf')][_0x10db('0x10')]===0x1f4){logger[_0x10db('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x712577[_0x10db('0xf')][_0x10db('0x11')]);return _0x2e2cb3(_0x712577['error']['message']);}logger[_0x10db('0xf')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x712577[_0x10db('0xf')][_0x10db('0x11')]);return _0x17d529(_0x712577['error'][_0x10db('0x11')]);}else{logger[_0x10db('0x12')]('UserWhatsappQueue,\x20%s,\x20%s',_0x2a07ce,_0x10db('0x13'));_0x17d529(_0x712577['result'][_0x10db('0x11')]);}})['catch'](function(_0x4446e5){logger[_0x10db('0xf')](_0x10db('0xd'),_0x2a07ce,_0x4446e5);_0x2e2cb3(_0x4446e5);});});}
\ No newline at end of file
index 141f1ce..4997b2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3379=['connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./variable.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x5a6a5a,_0x1c9fe6){var _0x2d4f8a=function(_0x13cb12){while(--_0x13cb12){_0x5a6a5a['push'](_0x5a6a5a['shift']());}};_0x2d4f8a(++_0x1c9fe6);}(_0x3379,0x115));var _0x9337=function(_0x1a116d,_0x567bd2){_0x1a116d=_0x1a116d-0x0;var _0x234c94=_0x3379[_0x1a116d];return _0x234c94;};'use strict';var multer=require(_0x9337('0x0'));var util=require(_0x9337('0x1'));var path=require(_0x9337('0x2'));var timeout=require(_0x9337('0x3'));var express=require('express');var router=express[_0x9337('0x4')]();var fs_extra=require(_0x9337('0x5'));var auth=require(_0x9337('0x6'));var interaction=require(_0x9337('0x7'));var config=require('../../config/environment');var controller=require(_0x9337('0x8'));router[_0x9337('0x9')]('/',auth[_0x9337('0xa')](),controller[_0x9337('0xb')]);router['get'](_0x9337('0xc'),auth['isAuthenticated'](),controller[_0x9337('0xd')]);router[_0x9337('0xe')]('/',auth[_0x9337('0xa')](),controller[_0x9337('0xf')]);router[_0x9337('0x10')]('/:id',auth[_0x9337('0xa')](),controller[_0x9337('0x11')]);router[_0x9337('0x12')](_0x9337('0xc'),auth[_0x9337('0xa')](),controller['destroy']);module[_0x9337('0x13')]=router;
\ No newline at end of file
+var _0x1159=['update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','isAuthenticated','index','get','/:id','show','post','create','put'];(function(_0x196092,_0xc5ea6f){var _0x376189=function(_0x1c6642){while(--_0x1c6642){_0x196092['push'](_0x196092['shift']());}};_0x376189(++_0xc5ea6f);}(_0x1159,0xf3));var _0x9115=function(_0x274cb5,_0x2c220a){_0x274cb5=_0x274cb5-0x0;var _0x3e53ff=_0x1159[_0x274cb5];return _0x3e53ff;};'use strict';var multer=require(_0x9115('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x9115('0x1'));var express=require(_0x9115('0x2'));var router=express[_0x9115('0x3')]();var fs_extra=require(_0x9115('0x4'));var auth=require(_0x9115('0x5'));var interaction=require(_0x9115('0x6'));var config=require(_0x9115('0x7'));var controller=require(_0x9115('0x8'));router['get']('/',auth[_0x9115('0x9')](),controller[_0x9115('0xa')]);router[_0x9115('0xb')](_0x9115('0xc'),auth[_0x9115('0x9')](),controller[_0x9115('0xd')]);router[_0x9115('0xe')]('/',auth['isAuthenticated'](),controller[_0x9115('0xf')]);router[_0x9115('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x9115('0x11')]);router['delete'](_0x9115('0xc'),auth[_0x9115('0x9')](),controller[_0x9115('0x12')]);module[_0x9115('0x13')]=router;
\ No newline at end of file
index 7ea1fdc..020dad8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27e7=['STRING','sequelize'];(function(_0x712be0,_0x5b4371){var _0xed004a=function(_0x9ec6af){while(--_0x9ec6af){_0x712be0['push'](_0x712be0['shift']());}};_0xed004a(++_0x5b4371);}(_0x27e7,0x67));var _0x727e=function(_0x2764c6,_0x2d1bb7){_0x2764c6=_0x2764c6-0x0;var _0x4bee43=_0x27e7[_0x2764c6];return _0x4bee43;};'use strict';var Sequelize=require(_0x727e('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x727e('0x1')]}};
\ No newline at end of file
+var _0x397a=['name','sequelize','exports','STRING'];(function(_0x2cab45,_0x3cfcb8){var _0x37f14a=function(_0x2bf4e9){while(--_0x2bf4e9){_0x2cab45['push'](_0x2cab45['shift']());}};_0x37f14a(++_0x3cfcb8);}(_0x397a,0x9d));var _0xa397=function(_0x2d6349,_0x54701a){_0x2d6349=_0x2d6349-0x0;var _0x290472=_0x397a[_0x2d6349];return _0x290472;};'use strict';var Sequelize=require(_0xa397('0x0'));module[_0xa397('0x1')]={'name':{'type':Sequelize[_0xa397('0x2')],'unique':_0xa397('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4896585..3e5ccc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc90=['userProfileId','autoAssociation','error','body','rimraf','fast-json-patch','request-promise','mustache','path','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','get','Variables','UserProfileResource','stack','name','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','length','nolimit','order','sort','where','filter','merge','VIRTUAL','Variable','includeAll','include','findAll','rows','catch','show','params','rawAttributes','fields','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection'];(function(_0x4ea992,_0x4f895a){var _0x4c8575=function(_0x53aaba){while(--_0x53aaba){_0x4ea992['push'](_0x4ea992['shift']());}};_0x4c8575(++_0x4f895a);}(_0xbc90,0xee));var _0x0bc9=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0xbc90[_0x4d8ed9];return _0x1e2140;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0bc9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0bc9('0x1'));var rp=require(_0x0bc9('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x0bc9('0x3'));var util=require('util');var path=require(_0x0bc9('0x4'));var sox=require('sox');var csv=require(_0x0bc9('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0bc9('0x6'));var _=require(_0x0bc9('0x7'));var squel=require('squel');var crypto=require(_0x0bc9('0x8'));var jsforce=require(_0x0bc9('0x9'));var deskjs=require(_0x0bc9('0xa'));var toCsv=require(_0x0bc9('0x5'));var querystring=require(_0x0bc9('0xb'));var Papa=require(_0x0bc9('0xc'));var Redis=require(_0x0bc9('0xd'));var authService=require(_0x0bc9('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x0bc9('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0bc9('0x10'))(_0x0bc9('0x11'));var utils=require(_0x0bc9('0x12'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xca238,_0x5101d3){_0x5101d3=_0x5101d3||0xcc;return function(_0x52f57c){if(_0x52f57c){return _0xca238[_0x0bc9('0x13')](_0x5101d3);}return _0xca238[_0x0bc9('0x14')](_0x5101d3)[_0x0bc9('0x15')]();};}function respondWithResult(_0x5c7e29,_0x8c4c98){_0x8c4c98=_0x8c4c98||0xc8;return function(_0x44a58f){if(_0x44a58f){return _0x5c7e29[_0x0bc9('0x14')](_0x8c4c98)[_0x0bc9('0x16')](_0x44a58f);}};}function respondWithFilteredResult(_0x18726b,_0x382a47){return function(_0x5b8045){if(_0x5b8045){var _0x59dbad=typeof _0x382a47[_0x0bc9('0x17')]==='undefined'&&typeof _0x382a47['limit']===_0x0bc9('0x18');var _0x4acf51=_0x5b8045[_0x0bc9('0x19')];var _0x228b7f=_0x59dbad?0x0:_0x382a47[_0x0bc9('0x17')];var _0x20bafb=_0x59dbad?_0x5b8045[_0x0bc9('0x19')]:_0x382a47[_0x0bc9('0x17')]+_0x382a47['limit'];var _0x421b04;if(_0x20bafb>=_0x4acf51){_0x20bafb=_0x4acf51;_0x421b04=0xc8;}else{_0x421b04=0xce;}_0x18726b[_0x0bc9('0x14')](_0x421b04);return _0x18726b[_0x0bc9('0x1a')](_0x0bc9('0x1b'),_0x228b7f+'-'+_0x20bafb+'/'+_0x4acf51)[_0x0bc9('0x16')](_0x5b8045);}return null;};}function patchUpdates(_0x42493e){return function(_0x2f5895){try{jsonpatch[_0x0bc9('0x1c')](_0x2f5895,_0x42493e,!![]);}catch(_0x174457){return BPromise[_0x0bc9('0x1d')](_0x174457);}return _0x2f5895['save']();};}function saveUpdates(_0x5d9724,_0x45c47c){return function(_0x492cef){if(_0x492cef){return _0x492cef[_0x0bc9('0x1e')](_0x5d9724)[_0x0bc9('0x1f')](function(_0x2f77f2){return _0x2f77f2;});}return null;};}function removeEntity(_0x19f0e7,_0x4e0a35){return function(_0x59c128){if(_0x59c128){return _0x59c128[_0x0bc9('0x20')]()[_0x0bc9('0x1f')](function(){var _0x465acc=_0x59c128[_0x0bc9('0x21')]({'plain':!![]});var _0x5ecc07=_0x0bc9('0x22');return db[_0x0bc9('0x23')][_0x0bc9('0x20')]({'where':{'type':_0x5ecc07,'resourceId':_0x465acc['id']}})['then'](function(){return _0x59c128;});})[_0x0bc9('0x1f')](function(){_0x19f0e7[_0x0bc9('0x14')](0xcc)[_0x0bc9('0x15')]();});}};}function handleEntityNotFound(_0x18fd75,_0x307f10){return function(_0xdeb8b0){if(!_0xdeb8b0){_0x18fd75[_0x0bc9('0x13')](0x194);}return _0xdeb8b0;};}function handleError(_0x4ef93d,_0x5ab37){_0x5ab37=_0x5ab37||0x1f4;return function(_0x59713a){logger['error'](_0x59713a[_0x0bc9('0x24')]);if(_0x59713a[_0x0bc9('0x25')]){delete _0x59713a[_0x0bc9('0x25')];}_0x4ef93d[_0x0bc9('0x14')](_0x5ab37)['send'](_0x59713a);};}exports[_0x0bc9('0x26')]=function(_0x408dcb,_0x8cad6b){var _0xffb236={},_0x14d60d={},_0x31491a={'count':0x0,'rows':[]};var _0x50b421=_[_0x0bc9('0x27')](db['Variable']['rawAttributes'],function(_0x20f99f){return{'name':_0x20f99f[_0x0bc9('0x28')],'type':_0x20f99f[_0x0bc9('0x29')][_0x0bc9('0x2a')]};});_0x14d60d[_0x0bc9('0x2b')]=_[_0x0bc9('0x27')](_0x50b421,_0x0bc9('0x25'));_0x14d60d[_0x0bc9('0x2c')]=_[_0x0bc9('0x2d')](_0x408dcb['query']);_0x14d60d[_0x0bc9('0x2e')]=_[_0x0bc9('0x2f')](_0x14d60d[_0x0bc9('0x2b')],_0x14d60d[_0x0bc9('0x2c')]);_0xffb236[_0x0bc9('0x30')]=_[_0x0bc9('0x2f')](_0x14d60d[_0x0bc9('0x2b')],qs['fields'](_0x408dcb[_0x0bc9('0x2c')]['fields']));_0xffb236['attributes']=_0xffb236[_0x0bc9('0x30')][_0x0bc9('0x31')]?_0xffb236[_0x0bc9('0x30')]:_0x14d60d['model'];if(!_0x408dcb[_0x0bc9('0x2c')]['hasOwnProperty'](_0x0bc9('0x32'))){_0xffb236['limit']=qs['limit'](_0x408dcb['query']['limit']);_0xffb236[_0x0bc9('0x17')]=qs['offset'](_0x408dcb[_0x0bc9('0x2c')][_0x0bc9('0x17')]);}_0xffb236[_0x0bc9('0x33')]=qs[_0x0bc9('0x34')](_0x408dcb['query'][_0x0bc9('0x34')]);_0xffb236[_0x0bc9('0x35')]=qs[_0x0bc9('0x2e')](_['pick'](_0x408dcb[_0x0bc9('0x2c')],_0x14d60d[_0x0bc9('0x2e')]),_0x50b421);if(_0x408dcb[_0x0bc9('0x2c')][_0x0bc9('0x36')]){_0xffb236[_0x0bc9('0x35')]=_[_0x0bc9('0x37')](_0xffb236['where'],{'$or':_['map'](_0x50b421,function(_0x1ce1bc){if(_0x1ce1bc[_0x0bc9('0x29')]!==_0x0bc9('0x38')){var _0x58f30d={};_0x58f30d[_0x1ce1bc['name']]={'$like':'%'+_0x408dcb['query']['filter']+'%'};return _0x58f30d;}})});}_0xffb236=_[_0x0bc9('0x37')]({},_0xffb236,_0x408dcb['options']);var _0x159cd2={'where':_0xffb236[_0x0bc9('0x35')]};return db[_0x0bc9('0x39')][_0x0bc9('0x19')](_0x159cd2)[_0x0bc9('0x1f')](function(_0x173bbc){_0x31491a[_0x0bc9('0x19')]=_0x173bbc;if(_0x408dcb['query'][_0x0bc9('0x3a')]){_0xffb236[_0x0bc9('0x3b')]=[{'all':!![]}];}return db[_0x0bc9('0x39')][_0x0bc9('0x3c')](_0xffb236);})[_0x0bc9('0x1f')](function(_0x171c29){_0x31491a[_0x0bc9('0x3d')]=_0x171c29;return _0x31491a;})[_0x0bc9('0x1f')](respondWithFilteredResult(_0x8cad6b,_0xffb236))[_0x0bc9('0x3e')](handleError(_0x8cad6b,null));};exports[_0x0bc9('0x3f')]=function(_0x2cb11f,_0x10cd4e){var _0x31d433={'raw':!![],'where':{'id':_0x2cb11f[_0x0bc9('0x40')]['id']}},_0x428be7={};_0x428be7[_0x0bc9('0x2b')]=_[_0x0bc9('0x2d')](db[_0x0bc9('0x39')][_0x0bc9('0x41')]);_0x428be7[_0x0bc9('0x2c')]=_[_0x0bc9('0x2d')](_0x2cb11f['query']);_0x428be7[_0x0bc9('0x2e')]=_['intersection'](_0x428be7[_0x0bc9('0x2b')],_0x428be7[_0x0bc9('0x2c')]);_0x31d433['attributes']=_[_0x0bc9('0x2f')](_0x428be7['model'],qs['fields'](_0x2cb11f[_0x0bc9('0x2c')][_0x0bc9('0x42')]));_0x31d433[_0x0bc9('0x30')]=_0x31d433['attributes'][_0x0bc9('0x31')]?_0x31d433[_0x0bc9('0x30')]:_0x428be7[_0x0bc9('0x2b')];if(_0x2cb11f['query'][_0x0bc9('0x3a')]){_0x31d433[_0x0bc9('0x3b')]=[{'all':!![]}];}_0x31d433=_[_0x0bc9('0x37')]({},_0x31d433,_0x2cb11f[_0x0bc9('0x43')]);return db[_0x0bc9('0x39')][_0x0bc9('0x44')](_0x31d433)[_0x0bc9('0x1f')](handleEntityNotFound(_0x10cd4e,null))[_0x0bc9('0x1f')](respondWithResult(_0x10cd4e,null))[_0x0bc9('0x3e')](handleError(_0x10cd4e,null));};exports[_0x0bc9('0x45')]=function(_0x5b1da4,_0x2ad1ef){return db[_0x0bc9('0x39')]['create'](_0x5b1da4['body'],{})[_0x0bc9('0x1f')](function(_0x5acb6d){var _0x1e0b7=_0x5b1da4[_0x0bc9('0x46')][_0x0bc9('0x21')]({'plain':!![]});if(!_0x1e0b7)throw new Error(_0x0bc9('0x47'));if(_0x1e0b7[_0x0bc9('0x48')]===_0x0bc9('0x46')){var _0x4bbdaf=_0x5acb6d[_0x0bc9('0x21')]({'plain':!![]});var _0x1d332b=_0x0bc9('0x22');return db[_0x0bc9('0x49')][_0x0bc9('0x44')]({'where':{'name':_0x1d332b,'userProfileId':_0x1e0b7[_0x0bc9('0x4a')]},'raw':!![]})[_0x0bc9('0x1f')](function(_0x3dfd55){if(_0x3dfd55&&_0x3dfd55[_0x0bc9('0x4b')]===0x0){return db[_0x0bc9('0x23')][_0x0bc9('0x45')]({'name':_0x4bbdaf[_0x0bc9('0x25')],'resourceId':_0x4bbdaf['id'],'type':_0x3dfd55[_0x0bc9('0x25')],'sectionId':_0x3dfd55['id']},{})[_0x0bc9('0x1f')](function(){return _0x5acb6d;});}else{return _0x5acb6d;}})['catch'](function(_0x13bcf5){logger[_0x0bc9('0x4c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x13bcf5);throw _0x13bcf5;});}return _0x5acb6d;})[_0x0bc9('0x1f')](respondWithResult(_0x2ad1ef,0xc9))[_0x0bc9('0x3e')](handleError(_0x2ad1ef,null));};exports[_0x0bc9('0x1e')]=function(_0x4f16c7,_0x4f5e52){if(_0x4f16c7['body']['id']){delete _0x4f16c7[_0x0bc9('0x4d')]['id'];}return db['Variable'][_0x0bc9('0x44')]({'where':{'id':_0x4f16c7[_0x0bc9('0x40')]['id']}})[_0x0bc9('0x1f')](handleEntityNotFound(_0x4f5e52,null))['then'](saveUpdates(_0x4f16c7['body'],null))[_0x0bc9('0x1f')](respondWithResult(_0x4f5e52,null))['catch'](handleError(_0x4f5e52,null));};exports[_0x0bc9('0x20')]=function(_0x25e481,_0x1af61e){return db[_0x0bc9('0x39')][_0x0bc9('0x44')]({'where':{'id':_0x25e481['params']['id']}})['then'](handleEntityNotFound(_0x1af61e,null))[_0x0bc9('0x1f')](removeEntity(_0x1af61e,null))[_0x0bc9('0x3e')](handleError(_0x1af61e,null));};
\ No newline at end of file
+var _0x7eea=['to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','end','status','offset','undefined','count','limit','set','Content-Range','json','apply','reject','save','update','destroy','then','get','Variables','UserProfileResource','sendStatus','error','name','index','map','Variable','rawAttributes','fieldName','type','key','query','filters','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','intersection','find','catch','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path'];(function(_0x465028,_0x4570ac){var _0xb783d4=function(_0x5458c5){while(--_0x5458c5){_0x465028['push'](_0x465028['shift']());}};_0xb783d4(++_0x4570ac);}(_0x7eea,0x14c));var _0xa7ee=function(_0x324029,_0x351869){_0x324029=_0x324029-0x0;var _0x83c0f8=_0x7eea[_0x324029];return _0x83c0f8;};'use strict';var emlformat=require(_0xa7ee('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa7ee('0x1'));var jsonpatch=require(_0xa7ee('0x2'));var rp=require(_0xa7ee('0x3'));var moment=require(_0xa7ee('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xa7ee('0x5'));var util=require(_0xa7ee('0x6'));var path=require(_0xa7ee('0x7'));var sox=require('sox');var csv=require(_0xa7ee('0x8'));var ejs=require(_0xa7ee('0x9'));var fs=require('fs');var fs_extra=require(_0xa7ee('0xa'));var _=require(_0xa7ee('0xb'));var squel=require(_0xa7ee('0xc'));var crypto=require(_0xa7ee('0xd'));var jsforce=require(_0xa7ee('0xe'));var deskjs=require(_0xa7ee('0xf'));var toCsv=require(_0xa7ee('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa7ee('0x10'));var qs=require(_0xa7ee('0x11'));var as=require(_0xa7ee('0x12'));var hardwareService=require(_0xa7ee('0x13'));var logger=require(_0xa7ee('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xa7ee('0x15'));var licenseUtil=require(_0xa7ee('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xf70e28,_0x2bce29){_0x2bce29=_0x2bce29||0xcc;return function(_0x48d8d9){if(_0x48d8d9){return _0xf70e28['sendStatus'](_0x2bce29);}return _0xf70e28['status'](_0x2bce29)[_0xa7ee('0x17')]();};}function respondWithResult(_0x389ca3,_0xe414d){_0xe414d=_0xe414d||0xc8;return function(_0x5b9429){if(_0x5b9429){return _0x389ca3[_0xa7ee('0x18')](_0xe414d)['json'](_0x5b9429);}};}function respondWithFilteredResult(_0x4e20cb,_0x4ad7d8){return function(_0x320365){if(_0x320365){var _0x3d447d=typeof _0x4ad7d8[_0xa7ee('0x19')]===_0xa7ee('0x1a')&&typeof _0x4ad7d8['limit']===_0xa7ee('0x1a');var _0x3e08cb=_0x320365[_0xa7ee('0x1b')];var _0x4c23aa=_0x3d447d?0x0:_0x4ad7d8[_0xa7ee('0x19')];var _0x1d8fce=_0x3d447d?_0x320365[_0xa7ee('0x1b')]:_0x4ad7d8[_0xa7ee('0x19')]+_0x4ad7d8[_0xa7ee('0x1c')];var _0x421a7f;if(_0x1d8fce>=_0x3e08cb){_0x1d8fce=_0x3e08cb;_0x421a7f=0xc8;}else{_0x421a7f=0xce;}_0x4e20cb[_0xa7ee('0x18')](_0x421a7f);return _0x4e20cb[_0xa7ee('0x1d')](_0xa7ee('0x1e'),_0x4c23aa+'-'+_0x1d8fce+'/'+_0x3e08cb)[_0xa7ee('0x1f')](_0x320365);}return null;};}function patchUpdates(_0x5e4e0a){return function(_0x100e5d){try{jsonpatch[_0xa7ee('0x20')](_0x100e5d,_0x5e4e0a,!![]);}catch(_0x1bff06){return BPromise[_0xa7ee('0x21')](_0x1bff06);}return _0x100e5d[_0xa7ee('0x22')]();};}function saveUpdates(_0x45e300,_0x4b97c9){return function(_0xb68074){if(_0xb68074){return _0xb68074[_0xa7ee('0x23')](_0x45e300)['then'](function(_0x5465e6){return _0x5465e6;});}return null;};}function removeEntity(_0x5b29a9,_0xb44761){return function(_0x1edd3f){if(_0x1edd3f){return _0x1edd3f[_0xa7ee('0x24')]()[_0xa7ee('0x25')](function(){var _0x4cee16=_0x1edd3f[_0xa7ee('0x26')]({'plain':!![]});var _0x24f34e=_0xa7ee('0x27');return db[_0xa7ee('0x28')][_0xa7ee('0x24')]({'where':{'type':_0x24f34e,'resourceId':_0x4cee16['id']}})[_0xa7ee('0x25')](function(){return _0x1edd3f;});})['then'](function(){_0x5b29a9['status'](0xcc)[_0xa7ee('0x17')]();});}};}function handleEntityNotFound(_0xcb02cc,_0x5ab937){return function(_0x57d1c5){if(!_0x57d1c5){_0xcb02cc[_0xa7ee('0x29')](0x194);}return _0x57d1c5;};}function handleError(_0x22ba48,_0x246ad1){_0x246ad1=_0x246ad1||0x1f4;return function(_0x1ce28a){logger[_0xa7ee('0x2a')](_0x1ce28a['stack']);if(_0x1ce28a[_0xa7ee('0x2b')]){delete _0x1ce28a[_0xa7ee('0x2b')];}_0x22ba48[_0xa7ee('0x18')](_0x246ad1)['send'](_0x1ce28a);};}exports[_0xa7ee('0x2c')]=function(_0x6bb84f,_0x330269){var _0x1971a3={},_0x6b02fb={},_0x35df8b={'count':0x0,'rows':[]};var _0x3760af=_[_0xa7ee('0x2d')](db[_0xa7ee('0x2e')][_0xa7ee('0x2f')],function(_0x23bdca){return{'name':_0x23bdca[_0xa7ee('0x30')],'type':_0x23bdca[_0xa7ee('0x31')][_0xa7ee('0x32')]};});_0x6b02fb['model']=_[_0xa7ee('0x2d')](_0x3760af,_0xa7ee('0x2b'));_0x6b02fb[_0xa7ee('0x33')]=_['keys'](_0x6bb84f[_0xa7ee('0x33')]);_0x6b02fb[_0xa7ee('0x34')]=_['intersection'](_0x6b02fb[_0xa7ee('0x35')],_0x6b02fb['query']);_0x1971a3[_0xa7ee('0x36')]=_['intersection'](_0x6b02fb[_0xa7ee('0x35')],qs[_0xa7ee('0x37')](_0x6bb84f['query'][_0xa7ee('0x37')]));_0x1971a3[_0xa7ee('0x36')]=_0x1971a3['attributes'][_0xa7ee('0x38')]?_0x1971a3[_0xa7ee('0x36')]:_0x6b02fb['model'];if(!_0x6bb84f[_0xa7ee('0x33')]['hasOwnProperty'](_0xa7ee('0x39'))){_0x1971a3[_0xa7ee('0x1c')]=qs[_0xa7ee('0x1c')](_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x1c')]);_0x1971a3[_0xa7ee('0x19')]=qs[_0xa7ee('0x19')](_0x6bb84f['query'][_0xa7ee('0x19')]);}_0x1971a3[_0xa7ee('0x3a')]=qs[_0xa7ee('0x3b')](_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x3b')]);_0x1971a3[_0xa7ee('0x3c')]=qs[_0xa7ee('0x34')](_[_0xa7ee('0x3d')](_0x6bb84f[_0xa7ee('0x33')],_0x6b02fb['filters']),_0x3760af);if(_0x6bb84f[_0xa7ee('0x33')][_0xa7ee('0x3e')]){_0x1971a3[_0xa7ee('0x3c')]=_[_0xa7ee('0x3f')](_0x1971a3[_0xa7ee('0x3c')],{'$or':_[_0xa7ee('0x2d')](_0x3760af,function(_0x12fb0d){if(_0x12fb0d[_0xa7ee('0x31')]!==_0xa7ee('0x40')){var _0x2ff587={};_0x2ff587[_0x12fb0d[_0xa7ee('0x2b')]]={'$like':'%'+_0x6bb84f['query'][_0xa7ee('0x3e')]+'%'};return _0x2ff587;}})});}_0x1971a3=_[_0xa7ee('0x3f')]({},_0x1971a3,_0x6bb84f[_0xa7ee('0x41')]);var _0x572838={'where':_0x1971a3[_0xa7ee('0x3c')]};return db[_0xa7ee('0x2e')][_0xa7ee('0x1b')](_0x572838)['then'](function(_0x486c88){_0x35df8b[_0xa7ee('0x1b')]=_0x486c88;if(_0x6bb84f['query'][_0xa7ee('0x42')]){_0x1971a3[_0xa7ee('0x43')]=[{'all':!![]}];}return db[_0xa7ee('0x2e')][_0xa7ee('0x44')](_0x1971a3);})[_0xa7ee('0x25')](function(_0x4122df){_0x35df8b[_0xa7ee('0x45')]=_0x4122df;return _0x35df8b;})[_0xa7ee('0x25')](respondWithFilteredResult(_0x330269,_0x1971a3))['catch'](handleError(_0x330269,null));};exports[_0xa7ee('0x46')]=function(_0x2be3ce,_0x251650){var _0x41f89b={'raw':!![],'where':{'id':_0x2be3ce[_0xa7ee('0x47')]['id']}},_0xb5e6af={};_0xb5e6af[_0xa7ee('0x35')]=_[_0xa7ee('0x48')](db[_0xa7ee('0x2e')][_0xa7ee('0x2f')]);_0xb5e6af['query']=_[_0xa7ee('0x48')](_0x2be3ce[_0xa7ee('0x33')]);_0xb5e6af[_0xa7ee('0x34')]=_[_0xa7ee('0x49')](_0xb5e6af[_0xa7ee('0x35')],_0xb5e6af['query']);_0x41f89b[_0xa7ee('0x36')]=_[_0xa7ee('0x49')](_0xb5e6af[_0xa7ee('0x35')],qs[_0xa7ee('0x37')](_0x2be3ce[_0xa7ee('0x33')][_0xa7ee('0x37')]));_0x41f89b[_0xa7ee('0x36')]=_0x41f89b['attributes'][_0xa7ee('0x38')]?_0x41f89b['attributes']:_0xb5e6af['model'];if(_0x2be3ce[_0xa7ee('0x33')][_0xa7ee('0x42')]){_0x41f89b[_0xa7ee('0x43')]=[{'all':!![]}];}_0x41f89b=_[_0xa7ee('0x3f')]({},_0x41f89b,_0x2be3ce['options']);return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')](_0x41f89b)[_0xa7ee('0x25')](handleEntityNotFound(_0x251650,null))[_0xa7ee('0x25')](respondWithResult(_0x251650,null))[_0xa7ee('0x4b')](handleError(_0x251650,null));};exports['create']=function(_0x529307,_0x32c6ab){return db[_0xa7ee('0x2e')][_0xa7ee('0x4c')](_0x529307['body'],{})[_0xa7ee('0x25')](function(_0x4b81ca){var _0x2e432a=_0x529307[_0xa7ee('0x4d')][_0xa7ee('0x26')]({'plain':!![]});if(!_0x2e432a)throw new Error(_0xa7ee('0x4e'));if(_0x2e432a[_0xa7ee('0x4f')]===_0xa7ee('0x4d')){var _0x1a4f47=_0x4b81ca[_0xa7ee('0x26')]({'plain':!![]});var _0x418505=_0xa7ee('0x27');return db[_0xa7ee('0x50')][_0xa7ee('0x4a')]({'where':{'name':_0x418505,'userProfileId':_0x2e432a[_0xa7ee('0x51')]},'raw':!![]})[_0xa7ee('0x25')](function(_0x1f358f){if(_0x1f358f&&_0x1f358f[_0xa7ee('0x52')]===0x0){return db[_0xa7ee('0x28')][_0xa7ee('0x4c')]({'name':_0x1a4f47[_0xa7ee('0x2b')],'resourceId':_0x1a4f47['id'],'type':_0x1f358f[_0xa7ee('0x2b')],'sectionId':_0x1f358f['id']},{})[_0xa7ee('0x25')](function(){return _0x4b81ca;});}else{return _0x4b81ca;}})[_0xa7ee('0x4b')](function(_0x334c35){logger[_0xa7ee('0x2a')](_0xa7ee('0x53'),_0x334c35);throw _0x334c35;});}return _0x4b81ca;})[_0xa7ee('0x25')](respondWithResult(_0x32c6ab,0xc9))['catch'](handleError(_0x32c6ab,null));};exports[_0xa7ee('0x23')]=function(_0x43265d,_0x2229a9){if(_0x43265d[_0xa7ee('0x54')]['id']){delete _0x43265d['body']['id'];}return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')]({'where':{'id':_0x43265d[_0xa7ee('0x47')]['id']}})[_0xa7ee('0x25')](handleEntityNotFound(_0x2229a9,null))['then'](saveUpdates(_0x43265d[_0xa7ee('0x54')],null))['then'](respondWithResult(_0x2229a9,null))[_0xa7ee('0x4b')](handleError(_0x2229a9,null));};exports[_0xa7ee('0x24')]=function(_0x5e5c62,_0x446039){return db[_0xa7ee('0x2e')][_0xa7ee('0x4a')]({'where':{'id':_0x5e5c62[_0xa7ee('0x47')]['id']}})[_0xa7ee('0x25')](handleEntityNotFound(_0x446039,null))[_0xa7ee('0x25')](removeEntity(_0x446039,null))[_0xa7ee('0x4b')](handleError(_0x446039,null));};
\ No newline at end of file
index bc61d24..3336e2f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc49f=['bluebird','request-promise','path','rimraf','../../config/environment','./variable.attributes','exports','define','Variable','lodash','util','moment'];(function(_0x5373f2,_0x38e815){var _0x514a14=function(_0x39999f){while(--_0x39999f){_0x5373f2['push'](_0x5373f2['shift']());}};_0x514a14(++_0x38e815);}(_0xc49f,0x14d));var _0xfc49=function(_0x3c27b3,_0x178edc){_0x3c27b3=_0x3c27b3-0x0;var _0x2fa01b=_0xc49f[_0x3c27b3];return _0x2fa01b;};'use strict';var _=require(_0xfc49('0x0'));var util=require(_0xfc49('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xfc49('0x2'));var BPromise=require(_0xfc49('0x3'));var rp=require(_0xfc49('0x4'));var fs=require('fs');var path=require(_0xfc49('0x5'));var rimraf=require(_0xfc49('0x6'));var config=require(_0xfc49('0x7'));var attributes=require(_0xfc49('0x8'));module[_0xfc49('0x9')]=function(_0x7b2f74,_0x25020e){return _0x7b2f74[_0xfc49('0xa')](_0xfc49('0xb'),attributes,{'tableName':'tools_variables','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7780=['./variable.attributes','exports','Variable','tools_variables','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x7780,0xe8));var _0x0778=function(_0x23f50a,_0x1e0fbc){_0x23f50a=_0x23f50a-0x0;var _0x3d48e2=_0x7780[_0x23f50a];return _0x3d48e2;};'use strict';var _=require(_0x0778('0x0'));var util=require(_0x0778('0x1'));var logger=require(_0x0778('0x2'))('api');var moment=require(_0x0778('0x3'));var BPromise=require(_0x0778('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0778('0x5'));var rimraf=require(_0x0778('0x6'));var config=require(_0x0778('0x7'));var attributes=require(_0x0778('0x8'));module[_0x0778('0x9')]=function(_0x3cd022,_0x476c1c){return _0x3cd022['define'](_0x0778('0xa'),attributes,{'tableName':_0x0778('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6f520b6..1b47241 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['debug','Variable,\x20%s,\x20%s,\x20%s','error','message','result','catch','ShowVariable','options','raw','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Variable,\x20%s,\x20%s','request\x20sent'];(function(_0x102e37,_0x14a181){var _0x35a07c=function(_0x16577f){while(--_0x16577f){_0x102e37['push'](_0x102e37['shift']());}};_0x35a07c(++_0x14a181);}(_0xa41a,0x6b));var _0xaa41=function(_0x4d108b,_0x105e02){_0x4d108b=_0x4d108b-0x0;var _0x24ac8f=_0xa41a[_0x4d108b];return _0x24ac8f;};'use strict';var _=require(_0xaa41('0x0'));var util=require(_0xaa41('0x1'));var moment=require('moment');var BPromise=require(_0xaa41('0x2'));var rs=require(_0xaa41('0x3'));var fs=require('fs');var Redis=require(_0xaa41('0x4'));var db=require(_0xaa41('0x5'))['db'];var utils=require(_0xaa41('0x6'));var logger=require(_0xaa41('0x7'))(_0xaa41('0x8'));var config=require(_0xaa41('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xaa41('0xa')][_0xaa41('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54bc5a,_0x5b1fff,_0x179545){return new BPromise(function(_0x202cce,_0x588ab4){return client[_0xaa41('0xc')](_0x54bc5a,_0x179545)[_0xaa41('0xd')](function(_0x409dab){logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));logger[_0xaa41('0x11')](_0xaa41('0x12'),_0x5b1fff,_0xaa41('0x10'),JSON['stringify'](_0x409dab));if(_0x409dab[_0xaa41('0x13')]){if(_0x409dab[_0xaa41('0x13')]['code']===0x1f4){logger['error'](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x588ab4(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x409dab['error'][_0xaa41('0x14')]);return _0x202cce(_0x409dab[_0xaa41('0x13')][_0xaa41('0x14')]);}else{logger[_0xaa41('0xe')](_0xaa41('0xf'),_0x5b1fff,_0xaa41('0x10'));_0x202cce(_0x409dab[_0xaa41('0x15')]['message']);}})[_0xaa41('0x16')](function(_0x16b930){logger[_0xaa41('0x13')](_0xaa41('0xf'),_0x5b1fff,_0x16b930);_0x588ab4(_0x16b930);});});}exports[_0xaa41('0x17')]=function(_0xd20ddf){var _0x29efe5=this;return new Promise(function(_0x46e6d3,_0x150ddf){return db['Variable']['find']({'raw':_0xd20ddf[_0xaa41('0x18')]?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x19')]===undefined?!![]:![]:!![],'where':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1a')]||null:null,'attributes':_0xd20ddf['options']?_0xd20ddf['options'][_0xaa41('0x1b')]||null:null,'include':_0xd20ddf['options']?_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0xd20ddf[_0xaa41('0x18')][_0xaa41('0x1c')],function(_0x4eb01f){return{'model':db[_0x4eb01f[_0xaa41('0x1e')]],'as':_0x4eb01f['as'],'attributes':_0x4eb01f[_0xaa41('0x1b')],'include':_0x4eb01f[_0xaa41('0x1c')]?_[_0xaa41('0x1d')](_0x4eb01f[_0xaa41('0x1c')],function(_0xa1f024){return{'model':db[_0xa1f024['model']],'as':_0xa1f024['as'],'attributes':_0xa1f024['attributes'],'include':_0xa1f024[_0xaa41('0x1c')]?_['map'](_0xa1f024['include'],function(_0x12e362){return{'model':db[_0x12e362['model']],'as':_0x12e362['as'],'attributes':_0x12e362['attributes']};}):[]};}):[]};}):[]:[]})[_0xaa41('0xd')](function(_0x9c8c21){logger[_0xaa41('0xe')](_0xaa41('0x17'),_0xd20ddf);logger[_0xaa41('0x11')](_0xaa41('0x17'),_0xd20ddf,JSON['stringify'](_0x9c8c21));_0x46e6d3(_0x9c8c21);})[_0xaa41('0x16')](function(_0x1f0275){logger[_0xaa41('0x13')](_0xaa41('0x17'),_0x1f0275[_0xaa41('0x14')],_0xd20ddf);_0x150ddf(_0x29efe5[_0xaa41('0x13')](0x1f4,_0x1f0275[_0xaa41('0x14')]));});});};
\ No newline at end of file
+var _0x814b=['model','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','ShowVariable','options','where','include','map','attributes'];(function(_0x8ccfdc,_0x59d713){var _0x1e106e=function(_0x2c4745){while(--_0x2c4745){_0x8ccfdc['push'](_0x8ccfdc['shift']());}};_0x1e106e(++_0x59d713);}(_0x814b,0x1a2));var _0xb814=function(_0x1d8119,_0xc98f17){_0x1d8119=_0x1d8119-0x0;var _0x3e30f6=_0x814b[_0x1d8119];return _0x3e30f6;};'use strict';var _=require(_0xb814('0x0'));var util=require(_0xb814('0x1'));var moment=require(_0xb814('0x2'));var BPromise=require(_0xb814('0x3'));var rs=require(_0xb814('0x4'));var fs=require('fs');var Redis=require(_0xb814('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xb814('0x6'));var logger=require(_0xb814('0x7'))(_0xb814('0x8'));var config=require(_0xb814('0x9'));var jayson=require(_0xb814('0xa'));var client=jayson[_0xb814('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b0829,_0x2e6272,_0x5c8539){return new BPromise(function(_0x271af9,_0x2913a6){return client[_0xb814('0xc')](_0x3b0829,_0x5c8539)[_0xb814('0xd')](function(_0x1fea33){logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));logger[_0xb814('0x11')](_0xb814('0x12'),_0x2e6272,_0xb814('0x10'),JSON['stringify'](_0x1fea33));if(_0x1fea33[_0xb814('0x13')]){if(_0x1fea33['error'][_0xb814('0x14')]===0x1f4){logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x2913a6(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}logger[_0xb814('0x13')](_0xb814('0xf'),_0x2e6272,_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);return _0x271af9(_0x1fea33[_0xb814('0x13')][_0xb814('0x15')]);}else{logger[_0xb814('0xe')](_0xb814('0xf'),_0x2e6272,_0xb814('0x10'));_0x271af9(_0x1fea33[_0xb814('0x16')][_0xb814('0x15')]);}})[_0xb814('0x17')](function(_0x21b73f){logger[_0xb814('0x13')]('Variable,\x20%s,\x20%s',_0x2e6272,_0x21b73f);_0x2913a6(_0x21b73f);});});}exports[_0xb814('0x18')]=function(_0x55ba16){var _0x270598=this;return new Promise(function(_0xfac75b,_0x4c3007){return db['Variable']['find']({'raw':_0x55ba16[_0xb814('0x19')]?_0x55ba16['options']['raw']===undefined?!![]:![]:!![],'where':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1a')]||null:null,'attributes':_0x55ba16['options']?_0x55ba16[_0xb814('0x19')]['attributes']||null:null,'include':_0x55ba16[_0xb814('0x19')]?_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x55ba16[_0xb814('0x19')][_0xb814('0x1b')],function(_0x1f5d40){return{'model':db[_0x1f5d40['model']],'as':_0x1f5d40['as'],'attributes':_0x1f5d40[_0xb814('0x1d')],'include':_0x1f5d40['include']?_[_0xb814('0x1c')](_0x1f5d40[_0xb814('0x1b')],function(_0x31c7ec){return{'model':db[_0x31c7ec[_0xb814('0x1e')]],'as':_0x31c7ec['as'],'attributes':_0x31c7ec[_0xb814('0x1d')],'include':_0x31c7ec[_0xb814('0x1b')]?_[_0xb814('0x1c')](_0x31c7ec['include'],function(_0x392222){return{'model':db[_0x392222[_0xb814('0x1e')]],'as':_0x392222['as'],'attributes':_0x392222[_0xb814('0x1d')]};}):[]};}):[]};}):[]:[]})[_0xb814('0xd')](function(_0x32ed56){logger[_0xb814('0xe')](_0xb814('0x18'),_0x55ba16);logger[_0xb814('0x11')]('ShowVariable',_0x55ba16,JSON[_0xb814('0x1f')](_0x32ed56));_0xfac75b(_0x32ed56);})[_0xb814('0x17')](function(_0x52ed64){logger[_0xb814('0x13')](_0xb814('0x18'),_0x52ed64[_0xb814('0x15')],_0x55ba16);_0x4c3007(_0x270598['error'](0x1f4,_0x52ed64[_0xb814('0x15')]));});});};
\ No newline at end of file
index b2fe4a6..2fee9e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x435c=['restart','/migrations','migrations','express','Router','../../components/auth/service','./version.controller','get','/fetch','isAuthenticated','canUpdate','fetch','/reset','reset','/pull','/restart'];(function(_0x38d1b4,_0x58378e){var _0xe7f2d3=function(_0x1e7f81){while(--_0x1e7f81){_0x38d1b4['push'](_0x38d1b4['shift']());}};_0xe7f2d3(++_0x58378e);}(_0x435c,0x1f3));var _0xc435=function(_0x602ca8,_0x568e82){_0x602ca8=_0x602ca8-0x0;var _0x26e8ab=_0x435c[_0x602ca8];return _0x26e8ab;};'use strict';var express=require(_0xc435('0x0'));var router=express[_0xc435('0x1')]();var auth=require(_0xc435('0x2'));var controller=require(_0xc435('0x3'));router[_0xc435('0x4')]('/',controller['index']);router[_0xc435('0x4')](_0xc435('0x5'),auth[_0xc435('0x6')](),auth[_0xc435('0x7')](),controller[_0xc435('0x8')]);router[_0xc435('0x4')](_0xc435('0x9'),auth['isAuthenticated'](),auth[_0xc435('0x7')](),controller[_0xc435('0xa')]);router[_0xc435('0x4')](_0xc435('0xb'),auth[_0xc435('0x6')](),auth[_0xc435('0x7')](),controller['pull']);router[_0xc435('0x4')](_0xc435('0xc'),auth[_0xc435('0x6')](),controller[_0xc435('0xd')]);router[_0xc435('0x4')](_0xc435('0xe'),controller[_0xc435('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xac4b=['isAuthenticated','canUpdate','fetch','/reset','pull','/migrations','exports','express','Router','get','index','/fetch'];(function(_0x1f75d4,_0x183581){var _0x72f2ca=function(_0x5aafee){while(--_0x5aafee){_0x1f75d4['push'](_0x1f75d4['shift']());}};_0x72f2ca(++_0x183581);}(_0xac4b,0x157));var _0xbac4=function(_0xfaf9e9,_0x54e675){_0xfaf9e9=_0xfaf9e9-0x0;var _0xc28fbf=_0xac4b[_0xfaf9e9];return _0xc28fbf;};'use strict';var express=require(_0xbac4('0x0'));var router=express[_0xbac4('0x1')]();var auth=require('../../components/auth/service');var controller=require('./version.controller');router[_0xbac4('0x2')]('/',controller[_0xbac4('0x3')]);router[_0xbac4('0x2')](_0xbac4('0x4'),auth[_0xbac4('0x5')](),auth[_0xbac4('0x6')](),controller[_0xbac4('0x7')]);router['get'](_0xbac4('0x8'),auth['isAuthenticated'](),auth[_0xbac4('0x6')](),controller['reset']);router[_0xbac4('0x2')]('/pull',auth[_0xbac4('0x5')](),auth['canUpdate'](),controller[_0xbac4('0x9')]);router[_0xbac4('0x2')]('/restart',auth[_0xbac4('0x5')](),controller['restart']);router[_0xbac4('0x2')](_0xbac4('0xa'),controller['migrations']);module[_0xbac4('0xb')]=router;
\ No newline at end of file
index 6e7f951..26ed876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9b=['compare-versions','child_process','../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','2.0.0','status','json','master','error','info','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard','pull','npm\x20install\x20--production','restart','motion2','then','Your\x20system\x20has\x20been\x20restart\x20successfully','migrations','readdirSync','join','server','length','.js','push','sort','sequelize','Migration','getQueryInterface','Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.','map','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','catch','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version'];(function(_0x1b672b,_0x1c16a4){var _0x22675a=function(_0x2736ea){while(--_0x2736ea){_0x1b672b['push'](_0x1b672b['shift']());}};_0x22675a(++_0x1c16a4);}(_0x0f9b,0x13f));var _0xb0f9=function(_0x1bf05a,_0x1617f7){_0x1bf05a=_0x1bf05a-0x0;var _0x252f74=_0x0f9b[_0x1bf05a];return _0x252f74;};'use strict';var Umzug=require(_0xb0f9('0x0'));var path=require(_0xb0f9('0x1'));var fs=require('fs');var _=require(_0xb0f9('0x2'));var pkginfo=require(_0xb0f9('0x3'))(module,_0xb0f9('0x4'));var compareVersions=require(_0xb0f9('0x5'));var exec=require(_0xb0f9('0x6'))['exec'];var db=require(_0xb0f9('0x7'))['db'];var config=require(_0xb0f9('0x8'));var pm2=require(_0xb0f9('0x9'));var logger=require(_0xb0f9('0xa'))(_0xb0f9('0xb'));var git=require(_0xb0f9('0xc'))(config[_0xb0f9('0xd')]);exports[_0xb0f9('0xe')]=function(_0x61e985,_0x16249b){var _0x539bab={'current':module[_0xb0f9('0xf')][_0xb0f9('0x4')],'phonebar':0x2};if(_0x61e985[_0xb0f9('0x10')]&&_0x61e985[_0xb0f9('0x10')][_0xb0f9('0x11')]){return git[_0xb0f9('0x12')]()['tags'](function(_0x48b79c,_0x17adfc){_0x539bab[_0xb0f9('0x11')]=(_0x48b79c?module[_0xb0f9('0xf')][_0xb0f9('0x4')]:_0x17adfc[_0xb0f9('0x11')])||_0xb0f9('0x13');return _0x16249b[_0xb0f9('0x14')](0xc8)['json'](_0x539bab);});}else{return _0x16249b[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')](_0x539bab);}};exports['fetch']=function(_0x429aea,_0x2a70a0){return git[_0xb0f9('0x12')](['origin',_0xb0f9('0x16')],function(_0x2ca02d){if(_0x2ca02d){logger[_0xb0f9('0x17')](_0x2ca02d);return _0x2a70a0[_0xb0f9('0x14')](0x1f4)[_0xb0f9('0x15')](_0x2ca02d);}logger[_0xb0f9('0x18')]('git\x20fetch');return _0x2a70a0[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x19')});});};exports[_0xb0f9('0x1a')]=function(_0x1242f4,_0x152d30){return git['reset']([_0xb0f9('0x1b'),_0xb0f9('0x1c')],function(_0xc9f22a){if(_0xc9f22a){logger[_0xb0f9('0x17')](_0xc9f22a);return _0x152d30[_0xb0f9('0x14')](0x1f4)['json'](_0xc9f22a);}logger[_0xb0f9('0x18')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x152d30[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x1d')});});};exports[_0xb0f9('0x1e')]=function(_0x36e329,_0x208a4f){exec(_0xb0f9('0x1f'),function(_0x342445,_0x4f8bda,_0x325dd2){logger[_0xb0f9('0x18')](_0x4f8bda);logger[_0xb0f9('0x18')](_0x325dd2);if(_0x342445){logger[_0xb0f9('0x17')](_0x342445);return _0x208a4f[_0xb0f9('0x14')](0x1f4)[_0xb0f9('0x15')](_0x342445);}return _0x208a4f['status'](0xc8)[_0xb0f9('0x15')]({'output':_0x4f8bda});});};exports[_0xb0f9('0x20')]=function(_0x170aa4,_0x4df93a){return pm2[_0xb0f9('0x20')](_0xb0f9('0x21'))[_0xb0f9('0x22')](function(_0x7fe714){logger['info']('pm2\x20restart\x20motion\x20%s',_0x7fe714);return _0x4df93a['status'](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x23')});})['catch'](function(_0xc1ba7d){logger[_0xb0f9('0x17')](_0xc1ba7d);return _0x4df93a[_0xb0f9('0x14')](0x1f4)[_0xb0f9('0x15')](_0xc1ba7d);});};exports[_0xb0f9('0x24')]=function(_0x1084b9,_0x2e2fe6){var _0x4f905e=fs[_0xb0f9('0x25')](path[_0xb0f9('0x26')](config[_0xb0f9('0xd')],_0xb0f9('0x27'),_0xb0f9('0x24')));var _0x561542=[];for(var _0x5c8834=0x0;_0x5c8834<_0x4f905e[_0xb0f9('0x28')];_0x5c8834++){var _0x53816d=_0x4f905e[_0x5c8834]['replace'](_0xb0f9('0x29'),'');if(compareVersions(module[_0xb0f9('0xf')][_0xb0f9('0x4')],_0x53816d)===-0x1){_0x561542[_0xb0f9('0x2a')](_0x53816d);}}if(_0x561542['length']){var _0x5ccdd8=_0x561542[_0xb0f9('0x2b')](compareVersions);var _0x4c467d=new Umzug({'storage':_0xb0f9('0x2c'),'storageOptions':{'model':db[_0xb0f9('0x2d')],'modelName':_0xb0f9('0x2d'),'columnName':_0xb0f9('0x4')},'migrations':{'params':[db[_0xb0f9('0x2c')][_0xb0f9('0x2e')](),db[_0xb0f9('0x2c')]['constructor'],function(){throw new Error(_0xb0f9('0x2f'));}],'path':path[_0xb0f9('0x26')](config[_0xb0f9('0xd')],'server',_0xb0f9('0x24')),'pattern':/\.js$/}});_0x4c467d['up']({'migrations':_[_0xb0f9('0x30')](_0x5ccdd8,function(_0x421c85){return _0x421c85+_0xb0f9('0x29');})})['then'](function(){return _0x2e2fe6[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x31')+module['exports'][_0xb0f9('0x4')]+_0xb0f9('0x32')+_[_0xb0f9('0x33')](_0x5ccdd8),'migrations':_[_0xb0f9('0x26')](_0x5ccdd8)});})[_0xb0f9('0x34')](function(_0x58837e){if(_0x58837e instanceof db[_0xb0f9('0x2c')]['UniqueConstraintError']){return _0x2e2fe6[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x35')});}else{return _0x2e2fe6[_0xb0f9('0x14')](0x1f4)['json'](_0x58837e);}});}else{return _0x2e2fe6[_0xb0f9('0x14')](0xc8)[_0xb0f9('0x15')]({'output':_0xb0f9('0x35')});}};
\ No newline at end of file
+var _0xa46b=['Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','join','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','compare-versions','child_process','exec','../../mysqldb','../../config/environment','../../config/logger','update','simple-git','root','index','exports','version','query','latest','fetch','2.0.0','status','json','origin','error','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','info','git\x20reset\x20--hard\x20FETCH_HEAD','pull','npm\x20install\x20--production','restart','motion2','pm2\x20restart\x20motion\x20%s','catch','server','length','replace','.js','push','sort','sequelize','Migration','getQueryInterface','migrations','map','then'];(function(_0x1bd5e9,_0x2dd9d8){var _0x2c802c=function(_0x1ba7a2){while(--_0x1ba7a2){_0x1bd5e9['push'](_0x1bd5e9['shift']());}};_0x2c802c(++_0x2dd9d8);}(_0xa46b,0x6f));var _0xba46=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xa46b[_0x432682];return _0x463d05;};'use strict';var Umzug=require(_0xba46('0x0'));var path=require(_0xba46('0x1'));var fs=require('fs');var _=require(_0xba46('0x2'));var pkginfo=require(_0xba46('0x3'))(module,'version');var compareVersions=require(_0xba46('0x4'));var exec=require(_0xba46('0x5'))[_0xba46('0x6')];var db=require(_0xba46('0x7'))['db'];var config=require(_0xba46('0x8'));var pm2=require('../../config/pm2');var logger=require(_0xba46('0x9'))(_0xba46('0xa'));var git=require(_0xba46('0xb'))(config[_0xba46('0xc')]);exports[_0xba46('0xd')]=function(_0x1f4096,_0x2fc7f5){var _0x513a63={'current':module[_0xba46('0xe')][_0xba46('0xf')],'phonebar':0x2};if(_0x1f4096[_0xba46('0x10')]&&_0x1f4096[_0xba46('0x10')][_0xba46('0x11')]){return git[_0xba46('0x12')]()['tags'](function(_0x44e7f2,_0x1f3658){_0x513a63['latest']=(_0x44e7f2?module[_0xba46('0xe')][_0xba46('0xf')]:_0x1f3658[_0xba46('0x11')])||_0xba46('0x13');return _0x2fc7f5[_0xba46('0x14')](0xc8)[_0xba46('0x15')](_0x513a63);});}else{return _0x2fc7f5['status'](0xc8)[_0xba46('0x15')](_0x513a63);}};exports[_0xba46('0x12')]=function(_0x45cd2a,_0x38d679){return git[_0xba46('0x12')]([_0xba46('0x16'),'master'],function(_0x4f4e78){if(_0x4f4e78){logger[_0xba46('0x17')](_0x4f4e78);return _0x38d679[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x4f4e78);}logger['info'](_0xba46('0x18'));return _0x38d679[_0xba46('0x14')](0xc8)['json']({'output':_0xba46('0x19')});});};exports['reset']=function(_0x2ece31,_0x75ae45){return git[_0xba46('0x1a')]([_0xba46('0x1b'),'FETCH_HEAD'],function(_0x5ac40e){if(_0x5ac40e){logger[_0xba46('0x17')](_0x5ac40e);return _0x75ae45[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x5ac40e);}logger[_0xba46('0x1c')](_0xba46('0x1d'));return _0x75ae45[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':'git\x20reset\x20--hard'});});};exports[_0xba46('0x1e')]=function(_0x22780f,_0x58ad6e){exec(_0xba46('0x1f'),function(_0x71f0e2,_0x3aaa65,_0x579494){logger['info'](_0x3aaa65);logger[_0xba46('0x1c')](_0x579494);if(_0x71f0e2){logger['error'](_0x71f0e2);return _0x58ad6e[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x71f0e2);}return _0x58ad6e['status'](0xc8)['json']({'output':_0x3aaa65});});};exports['restart']=function(_0x555f5f,_0x516ffb){return pm2[_0xba46('0x20')](_0xba46('0x21'))['then'](function(_0x4e59f2){logger[_0xba46('0x1c')](_0xba46('0x22'),_0x4e59f2);return _0x516ffb[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':'Your\x20system\x20has\x20been\x20restart\x20successfully'});})[_0xba46('0x23')](function(_0x1aee85){logger[_0xba46('0x17')](_0x1aee85);return _0x516ffb['status'](0x1f4)['json'](_0x1aee85);});};exports['migrations']=function(_0x2af376,_0x413e7b){var _0x412af9=fs['readdirSync'](path['join'](config[_0xba46('0xc')],_0xba46('0x24'),'migrations'));var _0x4ecb72=[];for(var _0x3c061e=0x0;_0x3c061e<_0x412af9[_0xba46('0x25')];_0x3c061e++){var _0x4a357c=_0x412af9[_0x3c061e][_0xba46('0x26')](_0xba46('0x27'),'');if(compareVersions(module[_0xba46('0xe')][_0xba46('0xf')],_0x4a357c)===-0x1){_0x4ecb72[_0xba46('0x28')](_0x4a357c);}}if(_0x4ecb72['length']){var _0x19577c=_0x4ecb72[_0xba46('0x29')](compareVersions);var _0x47dfd0=new Umzug({'storage':_0xba46('0x2a'),'storageOptions':{'model':db[_0xba46('0x2b')],'modelName':'Migration','columnName':_0xba46('0xf')},'migrations':{'params':[db[_0xba46('0x2a')][_0xba46('0x2c')](),db[_0xba46('0x2a')]['constructor'],function(){throw new Error('Migration\x20tried\x20to\x20use\x20old\x20style\x20\x22done\x22\x20callback.\x20Please\x20upgrade\x20to\x20\x22umzug\x22\x20and\x20return\x20a\x20promise\x20instead.');}],'path':path['join'](config[_0xba46('0xc')],_0xba46('0x24'),_0xba46('0x2d')),'pattern':/\.js$/}});_0x47dfd0['up']({'migrations':_[_0xba46('0x2e')](_0x19577c,function(_0x59024d){return _0x59024d+'.js';})})[_0xba46('0x2f')](function(){return _0x413e7b[_0xba46('0x14')](0xc8)[_0xba46('0x15')]({'output':_0xba46('0x30')+module[_0xba46('0xe')]['version']+_0xba46('0x31')+_[_0xba46('0x32')](_0x19577c),'migrations':_[_0xba46('0x33')](_0x19577c)});})['catch'](function(_0x537eb3){if(_0x537eb3 instanceof db[_0xba46('0x2a')]['UniqueConstraintError']){return _0x413e7b['status'](0xc8)['json']({'output':_0xba46('0x34')});}else{return _0x413e7b[_0xba46('0x14')](0x1f4)[_0xba46('0x15')](_0x537eb3);}});}else{return _0x413e7b[_0xba46('0x14')](0xc8)['json']({'output':'Database\x20already\x20up-to-date'});}};
\ No newline at end of file
index d6adb13..4d26dfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ee=['fs-extra','../../components/auth/service','../../components/interaction/service','./voiceAgentReport.controller','get','isAuthenticated','index','describe','/:id','show','post','create','update','exports','multer','util','path','express','Router'];(function(_0x13c174,_0xda25fe){var _0x160654=function(_0x1b6ac2){while(--_0x1b6ac2){_0x13c174['push'](_0x13c174['shift']());}};_0x160654(++_0xda25fe);}(_0xa4ee,0x1d6));var _0xea4e=function(_0x680b65,_0x5b2e9c){_0x680b65=_0x680b65-0x0;var _0x1c2053=_0xa4ee[_0x680b65];return _0x1c2053;};'use strict';var multer=require(_0xea4e('0x0'));var util=require(_0xea4e('0x1'));var path=require(_0xea4e('0x2'));var timeout=require('connect-timeout');var express=require(_0xea4e('0x3'));var router=express[_0xea4e('0x4')]();var fs_extra=require(_0xea4e('0x5'));var auth=require(_0xea4e('0x6'));var interaction=require(_0xea4e('0x7'));var config=require('../../config/environment');var controller=require(_0xea4e('0x8'));router[_0xea4e('0x9')]('/',auth[_0xea4e('0xa')](),controller[_0xea4e('0xb')]);router[_0xea4e('0x9')]('/describe',auth[_0xea4e('0xa')](),controller[_0xea4e('0xc')]);router['get'](_0xea4e('0xd'),auth[_0xea4e('0xa')](),controller[_0xea4e('0xe')]);router[_0xea4e('0xf')]('/',auth[_0xea4e('0xa')](),controller[_0xea4e('0x10')]);router['put'](_0xea4e('0xd'),auth['isAuthenticated'](),controller[_0xea4e('0x11')]);router['delete']('/:id',auth[_0xea4e('0xa')](),controller['destroy']);module[_0xea4e('0x12')]=router;
\ No newline at end of file
+var _0x6675=['../../components/interaction/service','../../config/environment','isAuthenticated','index','get','describe','post','create','update','delete','/:id','exports','multer','path','connect-timeout','fs-extra'];(function(_0x3eb5fb,_0x372fff){var _0x44e483=function(_0x13feae){while(--_0x13feae){_0x3eb5fb['push'](_0x3eb5fb['shift']());}};_0x44e483(++_0x372fff);}(_0x6675,0x15c));var _0x5667=function(_0x2b0bb4,_0x19adb6){_0x2b0bb4=_0x2b0bb4-0x0;var _0x262b70=_0x6675[_0x2b0bb4];return _0x262b70;};'use strict';var multer=require(_0x5667('0x0'));var util=require('util');var path=require(_0x5667('0x1'));var timeout=require(_0x5667('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5667('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x5667('0x4'));var config=require(_0x5667('0x5'));var controller=require('./voiceAgentReport.controller');router['get']('/',auth[_0x5667('0x6')](),controller[_0x5667('0x7')]);router[_0x5667('0x8')]('/describe',auth[_0x5667('0x6')](),controller[_0x5667('0x9')]);router[_0x5667('0x8')]('/:id',auth[_0x5667('0x6')](),controller['show']);router[_0x5667('0xa')]('/',auth[_0x5667('0x6')](),controller[_0x5667('0xb')]);router['put']('/:id',auth[_0x5667('0x6')](),controller[_0x5667('0xc')]);router[_0x5667('0xd')](_0x5667('0xe'),auth[_0x5667('0x6')](),controller['destroy']);module[_0x5667('0xf')]=router;
\ No newline at end of file
index 18e03f9..2d25515 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x531a=['DATE','INTEGER','BOOLEAN','FORWARD,\x20BLIND,\x20ATTENDED','sequelize','exports','STRING'];(function(_0x295415,_0x15b6ff){var _0x423354=function(_0x123aa6){while(--_0x123aa6){_0x295415['push'](_0x295415['shift']());}};_0x423354(++_0x15b6ff);}(_0x531a,0x100));var _0xa531=function(_0x2eb795,_0x53ae4f){_0x2eb795=_0x2eb795-0x0;var _0x568a65=_0x531a[_0x2eb795];return _0x568a65;};'use strict';var Sequelize=require(_0xa531('0x0'));module[_0xa531('0x1')]={'type':{'type':Sequelize[_0xa531('0x2')]},'uniqueid':{'type':Sequelize[_0xa531('0x2')]},'calleridnum':{'type':Sequelize[_0xa531('0x2')]},'calleridname':{'type':Sequelize[_0xa531('0x2')]},'queue':{'type':Sequelize[_0xa531('0x2')]},'interface':{'type':Sequelize[_0xa531('0x2')]},'membername':{'type':Sequelize[_0xa531('0x2')]},'agentcalledAt':{'type':Sequelize[_0xa531('0x3')]},'agentconnectAt':{'type':Sequelize['DATE']},'agentcompleteAt':{'type':Sequelize[_0xa531('0x3')]},'agentringnoanswerAt':{'type':Sequelize['DATE']},'agentdumpAt':{'type':Sequelize[_0xa531('0x3')]},'holdtime':{'type':Sequelize[_0xa531('0x4')]},'agentcomplete':{'type':Sequelize[_0xa531('0x5')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0xa531('0x5')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0xa531('0x5')],'defaultValue':![]},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0xa531('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0xa531('0x4')]},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0xa531('0x2')]},'channel':{'type':Sequelize[_0xa531('0x2')]},'channelstate':{'type':Sequelize[_0xa531('0x4')]},'channelstatedesc':{'type':Sequelize[_0xa531('0x2')]},'connectedlinenum':{'type':Sequelize[_0xa531('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xa531('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0xa531('0x2')]},'exten':{'type':Sequelize[_0xa531('0x2')]},'priority':{'type':Sequelize[_0xa531('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xa531('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0xa531('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xa531('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xa531('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xa531('0x2')]},'destaccountcode':{'type':Sequelize[_0xa531('0x2')]},'destcontext':{'type':Sequelize[_0xa531('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize['STRING']},'destuniqueid':{'type':Sequelize['STRING']},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0xa531('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0xa531('0x2')]},'transfer':{'type':Sequelize[_0xa531('0x5')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xa531('0x2')],'comment':_0xa531('0x6')},'transferexten':{'type':Sequelize[_0xa531('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0xa531('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4325=['sequelize','exports','STRING','DATE','BOOLEAN','INTEGER'];(function(_0x4c445a,_0x4ee80f){var _0x2f611c=function(_0x4f3699){while(--_0x4f3699){_0x4c445a['push'](_0x4c445a['shift']());}};_0x2f611c(++_0x4ee80f);}(_0x4325,0x1da));var _0x5432=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x4325[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x5432('0x0'));module[_0x5432('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x5432('0x2')]},'calleridnum':{'type':Sequelize[_0x5432('0x2')]},'calleridname':{'type':Sequelize[_0x5432('0x2')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x5432('0x2')]},'agentcalledAt':{'type':Sequelize[_0x5432('0x3')]},'agentconnectAt':{'type':Sequelize[_0x5432('0x3')]},'agentcompleteAt':{'type':Sequelize['DATE']},'agentringnoanswerAt':{'type':Sequelize[_0x5432('0x3')]},'agentdumpAt':{'type':Sequelize[_0x5432('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x5432('0x5')]},'agentacw':{'type':Sequelize[_0x5432('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x5432('0x5')]},'reason':{'type':Sequelize[_0x5432('0x2')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x5432('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x5432('0x2')]},'connectedlinenum':{'type':Sequelize[_0x5432('0x2')]},'connectedlinename':{'type':Sequelize[_0x5432('0x2')]},'language':{'type':Sequelize[_0x5432('0x2')]},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x5432('0x2')]},'priority':{'type':Sequelize[_0x5432('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0x5432('0x5')]},'destchannelstatedesc':{'type':Sequelize[_0x5432('0x2')]},'destcalleridnum':{'type':Sequelize[_0x5432('0x2')]},'destcalleridname':{'type':Sequelize[_0x5432('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x5432('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x5432('0x2')]},'destlanguage':{'type':Sequelize['STRING']},'destaccountcode':{'type':Sequelize['STRING']},'destcontext':{'type':Sequelize[_0x5432('0x2')]},'destexten':{'type':Sequelize[_0x5432('0x2')]},'destpriority':{'type':Sequelize[_0x5432('0x2')]},'destuniqueid':{'type':Sequelize[_0x5432('0x2')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x5432('0x2')]},'answeredelsewheremembername':{'type':Sequelize[_0x5432('0x2')]},'transfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x5432('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x5432('0x2')]},'transferuniqueid':{'type':Sequelize[_0x5432('0x2')]},'agententerreason':{'type':Sequelize[_0x5432('0x5')],'defaultValue':0x0}};
\ No newline at end of file
index c92897b..13fef3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x411017,_0x4a8117){var _0x2adeea=function(_0x545222){while(--_0x545222){_0x411017['push'](_0x411017['shift']());}};_0x2adeea(++_0x4a8117);}(_0xa9e0,0x123));var _0x0a9e=function(_0x387777,_0x356171){_0x387777=_0x387777-0x0;var _0x3f84c0=_0xa9e0[_0x387777];return _0x3f84c0;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
+var _0xa9e0=['type','options','includeAll','include','findAll','catch','show','params','find','body','describe','eml-format','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','offset','count','set','Content-Range','apply','save','update','then','destroy','stack','name','send','index','VoiceAgentReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge'];(function(_0x725b8e,_0xc22b48){var _0x43ac45=function(_0x46bb4a){while(--_0x46bb4a){_0x725b8e['push'](_0x725b8e['shift']());}};_0x43ac45(++_0xc22b48);}(_0xa9e0,0x123));var _0x0a9e=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0xa9e0[_0x297fd3];return _0x2af381;};'use strict';var emlformat=require(_0x0a9e('0x0'));var rimraf=require(_0x0a9e('0x1'));var zipdir=require(_0x0a9e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0a9e('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x0a9e('0x4'));var util=require(_0x0a9e('0x5'));var path=require(_0x0a9e('0x6'));var sox=require(_0x0a9e('0x7'));var csv=require(_0x0a9e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0a9e('0x9'));var _=require(_0x0a9e('0xa'));var squel=require(_0x0a9e('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0a9e('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0a9e('0xd'));var Redis=require(_0x0a9e('0xe'));var authService=require(_0x0a9e('0xf'));var qs=require(_0x0a9e('0x10'));var as=require(_0x0a9e('0x11'));var hardwareService=require(_0x0a9e('0x12'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0a9e('0x13'));var db=require(_0x0a9e('0x14'))['db'];function respondWithStatusCode(_0xd5b662,_0x26d672){_0x26d672=_0x26d672||0xcc;return function(_0x32d742){if(_0x32d742){return _0xd5b662[_0x0a9e('0x15')](_0x26d672);}return _0xd5b662['status'](_0x26d672)[_0x0a9e('0x16')]();};}function respondWithResult(_0x239b12,_0x2b4227){_0x2b4227=_0x2b4227||0xc8;return function(_0x281129){if(_0x281129){return _0x239b12[_0x0a9e('0x17')](_0x2b4227)[_0x0a9e('0x18')](_0x281129);}};}function respondWithFilteredResult(_0x52a03d,_0x22dccb){return function(_0x5d0880){if(_0x5d0880){var _0x1985b6=typeof _0x22dccb['offset']===_0x0a9e('0x19')&&typeof _0x22dccb[_0x0a9e('0x1a')]==='undefined';var _0x225616=_0x5d0880['count'];var _0x459eb1=_0x1985b6?0x0:_0x22dccb[_0x0a9e('0x1b')];var _0x106033=_0x1985b6?_0x5d0880[_0x0a9e('0x1c')]:_0x22dccb[_0x0a9e('0x1b')]+_0x22dccb[_0x0a9e('0x1a')];var _0x530eb7;if(_0x106033>=_0x225616){_0x106033=_0x225616;_0x530eb7=0xc8;}else{_0x530eb7=0xce;}_0x52a03d[_0x0a9e('0x17')](_0x530eb7);return _0x52a03d[_0x0a9e('0x1d')](_0x0a9e('0x1e'),_0x459eb1+'-'+_0x106033+'/'+_0x225616)[_0x0a9e('0x18')](_0x5d0880);}return null;};}function patchUpdates(_0x105080){return function(_0x4bb1e3){try{jsonpatch[_0x0a9e('0x1f')](_0x4bb1e3,_0x105080,!![]);}catch(_0x155cce){return BPromise['reject'](_0x155cce);}return _0x4bb1e3[_0x0a9e('0x20')]();};}function saveUpdates(_0x5a09ef,_0x588269){return function(_0x3a02e1){if(_0x3a02e1){return _0x3a02e1[_0x0a9e('0x21')](_0x5a09ef)[_0x0a9e('0x22')](function(_0x30bae6){return _0x30bae6;});}return null;};}function removeEntity(_0x4abc77,_0xfb6e48){return function(_0x2fb0e4){if(_0x2fb0e4){return _0x2fb0e4[_0x0a9e('0x23')]()[_0x0a9e('0x22')](function(){_0x4abc77[_0x0a9e('0x17')](0xcc)[_0x0a9e('0x16')]();});}};}function handleEntityNotFound(_0x16b1ca,_0x5ea472){return function(_0x59181e){if(!_0x59181e){_0x16b1ca[_0x0a9e('0x15')](0x194);}return _0x59181e;};}function handleError(_0x3a8e58,_0x40c424){_0x40c424=_0x40c424||0x1f4;return function(_0x33161b){logger['error'](_0x33161b[_0x0a9e('0x24')]);if(_0x33161b['name']){delete _0x33161b[_0x0a9e('0x25')];}_0x3a8e58['status'](_0x40c424)[_0x0a9e('0x26')](_0x33161b);};}exports[_0x0a9e('0x27')]=function(_0x25fba9,_0x14433c){var _0x140511={},_0x1538a4={},_0x11c3b6={'count':0x0,'rows':[]};var _0x14de77=_['map'](db[_0x0a9e('0x28')][_0x0a9e('0x29')],function(_0x2b1f27){return{'name':_0x2b1f27[_0x0a9e('0x2a')],'type':_0x2b1f27['type'][_0x0a9e('0x2b')]};});_0x1538a4[_0x0a9e('0x2c')]=_[_0x0a9e('0x2d')](_0x14de77,_0x0a9e('0x25'));_0x1538a4[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x25fba9[_0x0a9e('0x2e')]);_0x1538a4[_0x0a9e('0x30')]=_[_0x0a9e('0x31')](_0x1538a4['model'],_0x1538a4[_0x0a9e('0x2e')]);_0x140511['attributes']=_[_0x0a9e('0x31')](_0x1538a4[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0x140511['attributes']=_0x140511[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0x140511[_0x0a9e('0x33')]:_0x1538a4[_0x0a9e('0x2c')];if(!_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x35')](_0x0a9e('0x36'))){_0x140511[_0x0a9e('0x1a')]=qs['limit'](_0x25fba9[_0x0a9e('0x2e')]['limit']);_0x140511[_0x0a9e('0x1b')]=qs[_0x0a9e('0x1b')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x1b')]);}_0x140511['order']=qs[_0x0a9e('0x37')](_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x37')]);_0x140511[_0x0a9e('0x38')]=qs['filters'](_['pick'](_0x25fba9[_0x0a9e('0x2e')],_0x1538a4['filters']),_0x14de77);if(_0x25fba9[_0x0a9e('0x2e')][_0x0a9e('0x39')]){_0x140511[_0x0a9e('0x38')]=_[_0x0a9e('0x3a')](_0x140511['where'],{'$or':_[_0x0a9e('0x2d')](_0x14de77,function(_0x3bfce8){if(_0x3bfce8[_0x0a9e('0x3b')]!=='VIRTUAL'){var _0x1dbf74={};_0x1dbf74[_0x3bfce8[_0x0a9e('0x25')]]={'$like':'%'+_0x25fba9[_0x0a9e('0x2e')]['filter']+'%'};return _0x1dbf74;}})});}_0x140511=_['merge']({},_0x140511,_0x25fba9[_0x0a9e('0x3c')]);var _0x40d766={'where':_0x140511['where']};return db[_0x0a9e('0x28')][_0x0a9e('0x1c')](_0x40d766)[_0x0a9e('0x22')](function(_0x148f55){_0x11c3b6['count']=_0x148f55;if(_0x25fba9['query'][_0x0a9e('0x3d')]){_0x140511[_0x0a9e('0x3e')]=[{'all':!![]}];}return db['VoiceAgentReport'][_0x0a9e('0x3f')](_0x140511);})[_0x0a9e('0x22')](function(_0x1459bb){_0x11c3b6['rows']=_0x1459bb;return _0x11c3b6;})[_0x0a9e('0x22')](respondWithFilteredResult(_0x14433c,_0x140511))[_0x0a9e('0x40')](handleError(_0x14433c,null));};exports[_0x0a9e('0x41')]=function(_0x43dd5b,_0x13cb1f){var _0xeaa5e5={'raw':![],'where':{'id':_0x43dd5b[_0x0a9e('0x42')]['id']}},_0x2881b3={};_0x2881b3[_0x0a9e('0x2c')]=_[_0x0a9e('0x2f')](db[_0x0a9e('0x28')][_0x0a9e('0x29')]);_0x2881b3[_0x0a9e('0x2e')]=_[_0x0a9e('0x2f')](_0x43dd5b[_0x0a9e('0x2e')]);_0x2881b3['filters']=_['intersection'](_0x2881b3[_0x0a9e('0x2c')],_0x2881b3[_0x0a9e('0x2e')]);_0xeaa5e5[_0x0a9e('0x33')]=_[_0x0a9e('0x31')](_0x2881b3[_0x0a9e('0x2c')],qs[_0x0a9e('0x32')](_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x32')]));_0xeaa5e5[_0x0a9e('0x33')]=_0xeaa5e5[_0x0a9e('0x33')][_0x0a9e('0x34')]?_0xeaa5e5[_0x0a9e('0x33')]:_0x2881b3['model'];if(_0x43dd5b[_0x0a9e('0x2e')][_0x0a9e('0x3d')]){_0xeaa5e5[_0x0a9e('0x3e')]=[{'all':!![]}];}_0xeaa5e5=_[_0x0a9e('0x3a')]({},_0xeaa5e5,_0x43dd5b[_0x0a9e('0x3c')]);return db[_0x0a9e('0x28')][_0x0a9e('0x43')](_0xeaa5e5)[_0x0a9e('0x22')](handleEntityNotFound(_0x13cb1f,null))['then'](respondWithResult(_0x13cb1f,null))[_0x0a9e('0x40')](handleError(_0x13cb1f,null));};exports['create']=function(_0x473dc8,_0x476688){return db[_0x0a9e('0x28')]['create'](_0x473dc8[_0x0a9e('0x44')],{})[_0x0a9e('0x22')](respondWithResult(_0x476688,0xc9))[_0x0a9e('0x40')](handleError(_0x476688,null));};exports[_0x0a9e('0x21')]=function(_0x45c845,_0x37be73){if(_0x45c845[_0x0a9e('0x44')]['id']){delete _0x45c845['body']['id'];}return db[_0x0a9e('0x28')][_0x0a9e('0x43')]({'where':{'id':_0x45c845[_0x0a9e('0x42')]['id']}})[_0x0a9e('0x22')](handleEntityNotFound(_0x37be73,null))[_0x0a9e('0x22')](saveUpdates(_0x45c845[_0x0a9e('0x44')],null))[_0x0a9e('0x22')](respondWithResult(_0x37be73,null))[_0x0a9e('0x40')](handleError(_0x37be73,null));};exports[_0x0a9e('0x23')]=function(_0x58a5c2,_0xe401a){return db[_0x0a9e('0x28')]['find']({'where':{'id':_0x58a5c2['params']['id']}})['then'](handleEntityNotFound(_0xe401a,null))[_0x0a9e('0x22')](removeEntity(_0xe401a,null))[_0x0a9e('0x40')](handleError(_0xe401a,null));};exports[_0x0a9e('0x45')]=function(_0x11545a,_0x61bb17){return db[_0x0a9e('0x28')][_0x0a9e('0x45')]()[_0x0a9e('0x22')](respondWithResult(_0x61bb17,null))['catch'](handleError(_0x61bb17,null));};
\ No newline at end of file
index d2e500e..5382f13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x33c5=['exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./voiceAgentReport.attributes'];(function(_0x1b62b8,_0x3e78d9){var _0x47a5a0=function(_0x479a5b){while(--_0x479a5b){_0x1b62b8['push'](_0x1b62b8['shift']());}};_0x47a5a0(++_0x3e78d9);}(_0x33c5,0xe6));var _0x533c=function(_0x54e4ec,_0x183144){_0x54e4ec=_0x54e4ec-0x0;var _0x44ef91=_0x33c5[_0x54e4ec];return _0x44ef91;};'use strict';var _=require('lodash');var util=require(_0x533c('0x0'));var logger=require(_0x533c('0x1'))('api');var moment=require(_0x533c('0x2'));var BPromise=require(_0x533c('0x3'));var rp=require(_0x533c('0x4'));var fs=require('fs');var path=require(_0x533c('0x5'));var rimraf=require(_0x533c('0x6'));var config=require('../../config/environment');var attributes=require(_0x533c('0x7'));module[_0x533c('0x8')]=function(_0x31d912,_0x151732){return _0x31d912[_0x533c('0x9')](_0x533c('0xa'),attributes,{'tableName':_0x533c('0xb'),'paranoid':![],'indexes':[{'fields':[_0x533c('0xc'),_0x533c('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x9576=['request-promise','path','rimraf','../../config/environment','./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','util','../../config/logger','api'];(function(_0xf260d,_0x14205c){var _0xe2b85c=function(_0x128924){while(--_0x128924){_0xf260d['push'](_0xf260d['shift']());}};_0xe2b85c(++_0x14205c);}(_0x9576,0x182));var _0x6957=function(_0x43647f,_0xeb1445){_0x43647f=_0x43647f-0x0;var _0x25a27f=_0x9576[_0x43647f];return _0x25a27f;};'use strict';var _=require(_0x6957('0x0'));var util=require(_0x6957('0x1'));var logger=require(_0x6957('0x2'))(_0x6957('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x6957('0x4'));var fs=require('fs');var path=require(_0x6957('0x5'));var rimraf=require(_0x6957('0x6'));var config=require(_0x6957('0x7'));var attributes=require(_0x6957('0x8'));module[_0x6957('0x9')]=function(_0x2eb79e,_0x49e08a){return _0x2eb79e[_0x6957('0xa')](_0x6957('0xb'),attributes,{'tableName':_0x6957('0xc'),'paranoid':![],'indexes':[{'fields':[_0x6957('0xd'),_0x6957('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 88c5469..6bbfe9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47a9=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','then','info','VoiceAgentReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','update','where','lodash','util','moment','bluebird','randomstring'];(function(_0x3160e6,_0x4a7bd6){var _0x5022ca=function(_0x29a871){while(--_0x29a871){_0x3160e6['push'](_0x3160e6['shift']());}};_0x5022ca(++_0x4a7bd6);}(_0x47a9,0xd4));var _0x947a=function(_0x38fc1c,_0x4cce51){_0x38fc1c=_0x38fc1c-0x0;var _0x5b23c2=_0x47a9[_0x38fc1c];return _0x5b23c2;};'use strict';var _=require(_0x947a('0x0'));var util=require(_0x947a('0x1'));var moment=require(_0x947a('0x2'));var BPromise=require(_0x947a('0x3'));var rs=require(_0x947a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x947a('0x5'))['db'];var utils=require(_0x947a('0x6'));var logger=require(_0x947a('0x7'))(_0x947a('0x8'));var config=require('../../config/environment');var jayson=require(_0x947a('0x9'));var client=jayson['client'][_0x947a('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x547dec,_0x25a5e9,_0x37e9bf){return new BPromise(function(_0x56dcde,_0x31abf5){return client['request'](_0x547dec,_0x37e9bf)[_0x947a('0xb')](function(_0x2e204a){logger[_0x947a('0xc')](_0x947a('0xd'),_0x25a5e9,'request\x20sent');logger[_0x947a('0xe')]('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x25a5e9,_0x947a('0xf'),JSON[_0x947a('0x10')](_0x2e204a));if(_0x2e204a[_0x947a('0x11')]){if(_0x2e204a[_0x947a('0x11')][_0x947a('0x12')]===0x1f4){logger[_0x947a('0x11')](_0x947a('0xd'),_0x25a5e9,_0x2e204a['error']['message']);return _0x31abf5(_0x2e204a['error']['message']);}logger[_0x947a('0x11')]('VoiceAgentReport,\x20%s,\x20%s',_0x25a5e9,_0x2e204a['error'][_0x947a('0x13')]);return _0x56dcde(_0x2e204a['error'][_0x947a('0x13')]);}else{logger[_0x947a('0xc')](_0x947a('0xd'),_0x25a5e9,_0x947a('0xf'));_0x56dcde(_0x2e204a[_0x947a('0x14')][_0x947a('0x13')]);}})[_0x947a('0x15')](function(_0x444b3c){logger[_0x947a('0x11')](_0x947a('0xd'),_0x25a5e9,_0x444b3c);_0x31abf5(_0x444b3c);});});}exports[_0x947a('0x16')]=function(_0x4380c3){var _0x7a591c=this;return new Promise(function(_0x529c9b,_0x50f4ea){return db[_0x947a('0x17')][_0x947a('0x18')](_0x4380c3[_0x947a('0x19')],{'raw':_0x4380c3[_0x947a('0x1a')]?_0x4380c3[_0x947a('0x1a')][_0x947a('0x1b')]===undefined?!![]:![]:!![]})[_0x947a('0xb')](function(_0x3bf970){logger['info'](_0x947a('0x16'),_0x4380c3);logger[_0x947a('0xe')]('CreateVoiceAgentReport',_0x4380c3,JSON[_0x947a('0x10')](_0x3bf970));_0x529c9b(_0x3bf970);})['catch'](function(_0xd4db0){logger[_0x947a('0x11')](_0x947a('0x16'),_0xd4db0[_0x947a('0x13')],_0x4380c3);_0x50f4ea(_0x7a591c[_0x947a('0x11')](0x1f4,_0xd4db0[_0x947a('0x13')]));});});};exports[_0x947a('0x1c')]=function(_0x5d87ad){var _0x1e87de=this;return new Promise(function(_0x254061,_0x4bcae3){return db[_0x947a('0x17')][_0x947a('0x1d')](_0x5d87ad[_0x947a('0x19')],{'raw':_0x5d87ad[_0x947a('0x1a')]?_0x5d87ad[_0x947a('0x1a')][_0x947a('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d87ad[_0x947a('0x1a')]?_0x5d87ad['options'][_0x947a('0x1e')]||null:null,'attributes':_0x5d87ad[_0x947a('0x1a')]?_0x5d87ad[_0x947a('0x1a')]['attributes']||null:null,'limit':_0x5d87ad[_0x947a('0x1a')]?_0x5d87ad[_0x947a('0x1a')]['limit']||null:null})['then'](function(_0x2facc6){logger[_0x947a('0xc')](_0x947a('0x1c'),_0x5d87ad);logger[_0x947a('0xe')](_0x947a('0x1c'),_0x5d87ad,JSON[_0x947a('0x10')](_0x2facc6));_0x254061(_0x2facc6);})['catch'](function(_0x1a4afe){logger[_0x947a('0x11')](_0x947a('0x1c'),_0x1a4afe['message'],_0x5d87ad);_0x4bcae3(_0x1e87de[_0x947a('0x11')](0x1f4,_0x1a4afe[_0x947a('0x13')]));});});};
\ No newline at end of file
+var _0x1d27=['debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','CreateVoiceAgentReport','create','body','options','raw','UpdateVoiceAgentReport','VoiceAgentReport','update','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','request\x20sent'];(function(_0x6f2eb8,_0x317f95){var _0x1ad3d6=function(_0x3f0a19){while(--_0x3f0a19){_0x6f2eb8['push'](_0x6f2eb8['shift']());}};_0x1ad3d6(++_0x317f95);}(_0x1d27,0xa7));var _0x71d2=function(_0x53d8e6,_0x30de3e){_0x53d8e6=_0x53d8e6-0x0;var _0x8b5fe2=_0x1d27[_0x53d8e6];return _0x8b5fe2;};'use strict';var _=require(_0x71d2('0x0'));var util=require(_0x71d2('0x1'));var moment=require(_0x71d2('0x2'));var BPromise=require(_0x71d2('0x3'));var rs=require(_0x71d2('0x4'));var fs=require('fs');var Redis=require(_0x71d2('0x5'));var db=require(_0x71d2('0x6'))['db'];var utils=require(_0x71d2('0x7'));var logger=require(_0x71d2('0x8'))(_0x71d2('0x9'));var config=require(_0x71d2('0xa'));var jayson=require(_0x71d2('0xb'));var client=jayson[_0x71d2('0xc')][_0x71d2('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x1c0541,_0x5a8b16,_0xe00585){return new BPromise(function(_0xe2a843,_0x4167aa){return client[_0x71d2('0xe')](_0x1c0541,_0xe00585)[_0x71d2('0xf')](function(_0x4ff17d){logger['info'](_0x71d2('0x10'),_0x5a8b16,_0x71d2('0x11'));logger[_0x71d2('0x12')](_0x71d2('0x13'),_0x5a8b16,_0x71d2('0x11'),JSON[_0x71d2('0x14')](_0x4ff17d));if(_0x4ff17d[_0x71d2('0x15')]){if(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x16')]===0x1f4){logger[_0x71d2('0x15')](_0x71d2('0x10'),_0x5a8b16,_0x4ff17d['error']['message']);return _0x4167aa(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x17')]);}logger[_0x71d2('0x15')](_0x71d2('0x10'),_0x5a8b16,_0x4ff17d[_0x71d2('0x15')]['message']);return _0xe2a843(_0x4ff17d[_0x71d2('0x15')][_0x71d2('0x17')]);}else{logger[_0x71d2('0x18')]('VoiceAgentReport,\x20%s,\x20%s',_0x5a8b16,_0x71d2('0x11'));_0xe2a843(_0x4ff17d[_0x71d2('0x19')]['message']);}})[_0x71d2('0x1a')](function(_0x2050b5){logger[_0x71d2('0x15')]('VoiceAgentReport,\x20%s,\x20%s',_0x5a8b16,_0x2050b5);_0x4167aa(_0x2050b5);});});}exports[_0x71d2('0x1b')]=function(_0x49e9c2){var _0x42b6ce=this;return new Promise(function(_0x2f6dd8,_0x452cc2){return db['VoiceAgentReport'][_0x71d2('0x1c')](_0x49e9c2[_0x71d2('0x1d')],{'raw':_0x49e9c2[_0x71d2('0x1e')]?_0x49e9c2[_0x71d2('0x1e')][_0x71d2('0x1f')]===undefined?!![]:![]:!![]})[_0x71d2('0xf')](function(_0x2f4375){logger[_0x71d2('0x18')](_0x71d2('0x1b'),_0x49e9c2);logger[_0x71d2('0x12')](_0x71d2('0x1b'),_0x49e9c2,JSON[_0x71d2('0x14')](_0x2f4375));_0x2f6dd8(_0x2f4375);})[_0x71d2('0x1a')](function(_0x1870be){logger[_0x71d2('0x15')](_0x71d2('0x1b'),_0x1870be[_0x71d2('0x17')],_0x49e9c2);_0x452cc2(_0x42b6ce['error'](0x1f4,_0x1870be[_0x71d2('0x17')]));});});};exports[_0x71d2('0x20')]=function(_0x105973){var _0x372294=this;return new Promise(function(_0x31b992,_0x206cce){return db[_0x71d2('0x21')][_0x71d2('0x22')](_0x105973[_0x71d2('0x1d')],{'raw':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')]['where']||null:null,'attributes':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')][_0x71d2('0x23')]||null:null,'limit':_0x105973[_0x71d2('0x1e')]?_0x105973[_0x71d2('0x1e')][_0x71d2('0x24')]||null:null})['then'](function(_0x45630d){logger['info'](_0x71d2('0x20'),_0x105973);logger[_0x71d2('0x12')]('UpdateVoiceAgentReport',_0x105973,JSON[_0x71d2('0x14')](_0x45630d));_0x31b992(_0x45630d);})['catch'](function(_0x33c884){logger[_0x71d2('0x15')](_0x71d2('0x20'),_0x33c884[_0x71d2('0x17')],_0x105973);_0x206cce(_0x372294[_0x71d2('0x15')](0x1f4,_0x33c884[_0x71d2('0x17')]));});});};
\ No newline at end of file
index c54ec61..da4ad86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c5a=['fs-extra','../../components/interaction/service','../../config/environment','get','index','describe','isAuthenticated','show','create','update','delete','/:id','destroy','exports','multer','util','connect-timeout','express','Router'];(function(_0x342baa,_0x4a110f){var _0x1208f3=function(_0x56a645){while(--_0x56a645){_0x342baa['push'](_0x342baa['shift']());}};_0x1208f3(++_0x4a110f);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0x4526cc,_0x58b7b6){_0x4526cc=_0x4526cc-0x0;var _0x4158e7=_0x9c5a[_0x4526cc];return _0x4158e7;};'use strict';var multer=require(_0xa9c5('0x0'));var util=require(_0xa9c5('0x1'));var path=require('path');var timeout=require(_0xa9c5('0x2'));var express=require(_0xa9c5('0x3'));var router=express[_0xa9c5('0x4')]();var fs_extra=require(_0xa9c5('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa9c5('0x6'));var config=require(_0xa9c5('0x7'));var controller=require('./voiceCallReport.controller');router[_0xa9c5('0x8')]('/',auth['isAuthenticated'](),controller[_0xa9c5('0x9')]);router[_0xa9c5('0x8')]('/describe',auth['isAuthenticated'](),controller[_0xa9c5('0xa')]);router[_0xa9c5('0x8')]('/:id',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xc')]);router['post']('/',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xd')]);router['put']('/:id',auth[_0xa9c5('0xb')](),controller[_0xa9c5('0xe')]);router[_0xa9c5('0xf')](_0xa9c5('0x10'),auth[_0xa9c5('0xb')](),controller[_0xa9c5('0x11')]);module[_0xa9c5('0x12')]=router;
\ No newline at end of file
+var _0xe015=['../../components/interaction/service','../../config/environment','./voiceCallReport.controller','isAuthenticated','index','describe','get','/:id','show','put','update','multer','util','path','Router','../../components/auth/service'];(function(_0x222e21,_0x2e4242){var _0x4d2a68=function(_0x456282){while(--_0x456282){_0x222e21['push'](_0x222e21['shift']());}};_0x4d2a68(++_0x2e4242);}(_0xe015,0x13b));var _0x5e01=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xe015[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0x5e01('0x0'));var util=require(_0x5e01('0x1'));var path=require(_0x5e01('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x5e01('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x5e01('0x4'));var interaction=require(_0x5e01('0x5'));var config=require(_0x5e01('0x6'));var controller=require(_0x5e01('0x7'));router['get']('/',auth[_0x5e01('0x8')](),controller[_0x5e01('0x9')]);router['get']('/describe',auth[_0x5e01('0x8')](),controller[_0x5e01('0xa')]);router[_0x5e01('0xb')](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller[_0x5e01('0xd')]);router['post']('/',auth[_0x5e01('0x8')](),controller['create']);router[_0x5e01('0xe')]('/:id',auth[_0x5e01('0x8')](),controller[_0x5e01('0xf')]);router['delete'](_0x5e01('0xc'),auth[_0x5e01('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 88dc4bc..bfedbb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd397=['outbound','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound','internal'];(function(_0x4bc4e9,_0x2f2833){var _0x41dec7=function(_0x503fb2){while(--_0x503fb2){_0x4bc4e9['push'](_0x4bc4e9['shift']());}};_0x41dec7(++_0x2f2833);}(_0xd397,0xae));var _0x7d39=function(_0x3028db,_0x109c73){_0x3028db=_0x3028db-0x0;var _0x5791dd=_0xd397[_0x3028db];return _0x5791dd;};'use strict';var Sequelize=require(_0x7d39('0x0'));module[_0x7d39('0x1')]={'uniqueid':{'type':Sequelize[_0x7d39('0x2')]},'type':{'type':Sequelize[_0x7d39('0x3')](_0x7d39('0x4'),_0x7d39('0x5'),_0x7d39('0x6'),'inbound-fax',_0x7d39('0x7'),_0x7d39('0x8'))},'tag':{'type':Sequelize[_0x7d39('0x2')]},'accountcode':{'type':Sequelize[_0x7d39('0x2')]},'source':{'type':Sequelize[_0x7d39('0x2')]},'destination':{'type':Sequelize[_0x7d39('0x2')]},'destinationcontext':{'type':Sequelize[_0x7d39('0x2')]},'callerid':{'type':Sequelize[_0x7d39('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize['STRING']},'lastapplication':{'type':Sequelize[_0x7d39('0x2')]},'lastdata':{'type':Sequelize[_0x7d39('0x9')]},'starttime':{'type':Sequelize[_0x7d39('0xa')]},'systemanswertime':{'type':Sequelize[_0x7d39('0xa')]},'answertime':{'type':Sequelize[_0x7d39('0xa')]},'endtime':{'type':Sequelize[_0x7d39('0xa')]},'duration':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x7d39('0xb')]},'mohtime':{'type':Sequelize[_0x7d39('0xb')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x7d39('0x2')]},'userfield':{'type':Sequelize[_0x7d39('0x2')]},'userDisposition':{'type':Sequelize[_0x7d39('0x2')]},'userSecondDisposition':{'type':Sequelize[_0x7d39('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x7d39('0x2')]},'note':{'type':Sequelize[_0x7d39('0x2')]},'prefix':{'type':Sequelize[_0x7d39('0x2')]},'routeid':{'type':Sequelize[_0x7d39('0xb')]},'sipcallid':{'type':Sequelize[_0x7d39('0x2')]}};
\ No newline at end of file
+var _0xf56c=['dialer','TEXT','DATE','INTEGER','exports','STRING','ENUM','inbound','outbound','inbound-fax','outbound-fax'];(function(_0x3f5af3,_0x27212a){var _0x3bb9c1=function(_0x2add28){while(--_0x2add28){_0x3f5af3['push'](_0x3f5af3['shift']());}};_0x3bb9c1(++_0x27212a);}(_0xf56c,0x67));var _0xcf56=function(_0x4ce684,_0x4b9f3e){_0x4ce684=_0x4ce684-0x0;var _0x423a96=_0xf56c[_0x4ce684];return _0x423a96;};'use strict';var Sequelize=require('sequelize');module[_0xcf56('0x0')]={'uniqueid':{'type':Sequelize[_0xcf56('0x1')]},'type':{'type':Sequelize[_0xcf56('0x2')](_0xcf56('0x3'),'internal',_0xcf56('0x4'),_0xcf56('0x5'),_0xcf56('0x6'),_0xcf56('0x7'))},'tag':{'type':Sequelize[_0xcf56('0x1')]},'accountcode':{'type':Sequelize[_0xcf56('0x1')]},'source':{'type':Sequelize[_0xcf56('0x1')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0xcf56('0x1')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0xcf56('0x1')]},'destinationchannel':{'type':Sequelize[_0xcf56('0x1')]},'lastapplication':{'type':Sequelize[_0xcf56('0x1')]},'lastdata':{'type':Sequelize[_0xcf56('0x8')]},'starttime':{'type':Sequelize[_0xcf56('0x9')]},'systemanswertime':{'type':Sequelize['DATE']},'answertime':{'type':Sequelize[_0xcf56('0x9')]},'endtime':{'type':Sequelize[_0xcf56('0x9')]},'duration':{'type':Sequelize[_0xcf56('0xa')]},'billableseconds':{'type':Sequelize[_0xcf56('0xa')]},'mohtime':{'type':Sequelize[_0xcf56('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xcf56('0x1')]},'amaflags':{'type':Sequelize[_0xcf56('0x1')]},'userfield':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize[_0xcf56('0x1')]},'userSecondDisposition':{'type':Sequelize[_0xcf56('0x1')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xcf56('0x1')]},'prefix':{'type':Sequelize[_0xcf56('0x1')]},'routeid':{'type':Sequelize[_0xcf56('0xa')]},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
index f0c88a5..f04c7b9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['filter','VIRTUAL','merge','options','includeAll','include','fullname','User','findAll','rows','show','rawAttributes','length','find','catch','body','params','describe','uniqueid','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','VoiceCallReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filters'];(function(_0x28b0a1,_0x99bd0a){var _0x21470c=function(_0x45bf01){while(--_0x45bf01){_0x28b0a1['push'](_0x28b0a1['shift']());}};_0x21470c(++_0x99bd0a);}(_0xadb5,0xad));var _0x5adb=function(_0x408d46,_0x4de6d2){_0x408d46=_0x408d46-0x0;var _0x108f89=_0xadb5[_0x408d46];return _0x108f89;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5adb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5adb('0x1'));var rp=require(_0x5adb('0x2'));var moment=require(_0x5adb('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x5adb('0x4'));var util=require(_0x5adb('0x5'));var path=require(_0x5adb('0x6'));var sox=require('sox');var csv=require(_0x5adb('0x7'));var ejs=require(_0x5adb('0x8'));var fs=require('fs');var fs_extra=require(_0x5adb('0x9'));var _=require(_0x5adb('0xa'));var squel=require(_0x5adb('0xb'));var crypto=require(_0x5adb('0xc'));var jsforce=require(_0x5adb('0xd'));var deskjs=require(_0x5adb('0xe'));var toCsv=require(_0x5adb('0x7'));var querystring=require(_0x5adb('0xf'));var Papa=require(_0x5adb('0x10'));var Redis=require(_0x5adb('0x11'));var authService=require(_0x5adb('0x12'));var qs=require(_0x5adb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x5adb('0x14'))(_0x5adb('0x15'));var utils=require(_0x5adb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x5adb('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2a0b70,_0x5433bf){_0x5433bf=_0x5433bf||0xcc;return function(_0x8cfcc6){if(_0x8cfcc6){return _0x2a0b70[_0x5adb('0x18')](_0x5433bf);}return _0x2a0b70[_0x5adb('0x19')](_0x5433bf)['end']();};}function respondWithResult(_0x2a545b,_0x34af2c){_0x34af2c=_0x34af2c||0xc8;return function(_0xf82f72){if(_0xf82f72){return _0x2a545b['status'](_0x34af2c)[_0x5adb('0x1a')](_0xf82f72);}};}function respondWithFilteredResult(_0x518823,_0x367d82){return function(_0x42a482){if(_0x42a482){var _0x30614e=typeof _0x367d82[_0x5adb('0x1b')]===_0x5adb('0x1c')&&typeof _0x367d82[_0x5adb('0x1d')]===_0x5adb('0x1c');var _0x42f4c6=_0x42a482[_0x5adb('0x1e')];var _0x529b65=_0x30614e?0x0:_0x367d82[_0x5adb('0x1b')];var _0x5de028=_0x30614e?_0x42a482[_0x5adb('0x1e')]:_0x367d82['offset']+_0x367d82[_0x5adb('0x1d')];var _0x50e84f;if(_0x5de028>=_0x42f4c6){_0x5de028=_0x42f4c6;_0x50e84f=0xc8;}else{_0x50e84f=0xce;}_0x518823['status'](_0x50e84f);return _0x518823[_0x5adb('0x1f')](_0x5adb('0x20'),_0x529b65+'-'+_0x5de028+'/'+_0x42f4c6)[_0x5adb('0x1a')](_0x42a482);}return null;};}function patchUpdates(_0x1fd4a7){return function(_0x99bc6c){try{jsonpatch['apply'](_0x99bc6c,_0x1fd4a7,!![]);}catch(_0x3255b3){return BPromise['reject'](_0x3255b3);}return _0x99bc6c['save']();};}function saveUpdates(_0x3754cc,_0x379b33){return function(_0x1a38d3){if(_0x1a38d3){return _0x1a38d3[_0x5adb('0x21')](_0x3754cc)[_0x5adb('0x22')](function(_0x413911){return _0x413911;});}return null;};}function removeEntity(_0xfd9bb9,_0x4ca150){return function(_0x4b1957){if(_0x4b1957){return _0x4b1957[_0x5adb('0x23')]()[_0x5adb('0x22')](function(){_0xfd9bb9[_0x5adb('0x19')](0xcc)[_0x5adb('0x24')]();});}};}function handleEntityNotFound(_0x49f203,_0x2fee18){return function(_0x2e1e63){if(!_0x2e1e63){_0x49f203['sendStatus'](0x194);}return _0x2e1e63;};}function handleError(_0x1feecf,_0x1ded9f){_0x1ded9f=_0x1ded9f||0x1f4;return function(_0x1a0acd){logger['error'](_0x1a0acd[_0x5adb('0x25')]);if(_0x1a0acd[_0x5adb('0x26')]){delete _0x1a0acd[_0x5adb('0x26')];}_0x1feecf[_0x5adb('0x19')](_0x1ded9f)[_0x5adb('0x27')](_0x1a0acd);};}exports[_0x5adb('0x28')]=function(_0x4a5d46,_0x49992e){var _0x5d457e={},_0x39bddd={},_0x1eac55={'count':0x0,'rows':[]};var _0x60a672=_[_0x5adb('0x29')](db[_0x5adb('0x2a')]['rawAttributes'],function(_0x11ec2a){return{'name':_0x11ec2a[_0x5adb('0x2b')],'type':_0x11ec2a[_0x5adb('0x2c')][_0x5adb('0x2d')]};});_0x39bddd[_0x5adb('0x2e')]=_[_0x5adb('0x29')](_0x60a672,_0x5adb('0x26'));_0x39bddd[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x4a5d46[_0x5adb('0x2f')]);_0x39bddd['filters']=_[_0x5adb('0x31')](_0x39bddd['model'],_0x39bddd[_0x5adb('0x2f')]);_0x5d457e[_0x5adb('0x32')]=_['intersection'](_0x39bddd[_0x5adb('0x2e')],qs[_0x5adb('0x33')](_0x4a5d46[_0x5adb('0x2f')]['fields']));_0x5d457e[_0x5adb('0x32')]=_0x5d457e[_0x5adb('0x32')]['length']?_0x5d457e['attributes']:_0x39bddd[_0x5adb('0x2e')];if(!_0x4a5d46['query'][_0x5adb('0x34')](_0x5adb('0x35'))){_0x5d457e[_0x5adb('0x1d')]=qs[_0x5adb('0x1d')](_0x4a5d46[_0x5adb('0x2f')]['limit']);_0x5d457e[_0x5adb('0x1b')]=qs[_0x5adb('0x1b')](_0x4a5d46[_0x5adb('0x2f')]['offset']);}_0x5d457e['order']=qs[_0x5adb('0x36')](_0x4a5d46[_0x5adb('0x2f')]['sort']);_0x5d457e[_0x5adb('0x37')]=qs['filters'](_[_0x5adb('0x38')](_0x4a5d46['query'],_0x39bddd[_0x5adb('0x39')]),_0x60a672);if(_0x4a5d46['query'][_0x5adb('0x3a')]){_0x5d457e[_0x5adb('0x37')]=_['merge'](_0x5d457e[_0x5adb('0x37')],{'$or':_['map'](_0x60a672,function(_0xadbe37){if(_0xadbe37[_0x5adb('0x2c')]!==_0x5adb('0x3b')){var _0x50edd1={};_0x50edd1[_0xadbe37[_0x5adb('0x26')]]={'$like':'%'+_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3a')]+'%'};return _0x50edd1;}})});}_0x5d457e=_[_0x5adb('0x3c')]({},_0x5d457e,_0x4a5d46[_0x5adb('0x3d')]);var _0x52d74f={'where':_0x5d457e['where']};return db['VoiceCallReport']['count'](_0x52d74f)[_0x5adb('0x22')](function(_0x2fbe14){_0x1eac55[_0x5adb('0x1e')]=_0x2fbe14;if(_0x4a5d46[_0x5adb('0x2f')][_0x5adb('0x3e')]){_0x5d457e[_0x5adb('0x3f')]=[{'attributes':['id',_0x5adb('0x26'),_0x5adb('0x40'),'alias'],'model':db['User'],'as':_0x5adb('0x41')}];}return db['VoiceCallReport'][_0x5adb('0x42')](_0x5d457e);})[_0x5adb('0x22')](function(_0x299746){_0x1eac55[_0x5adb('0x43')]=_0x299746;return _0x1eac55;})[_0x5adb('0x22')](respondWithFilteredResult(_0x49992e,_0x5d457e))['catch'](handleError(_0x49992e,null));};exports[_0x5adb('0x44')]=function(_0x565b03,_0x508690){var _0x4160ad={'raw':!![],'where':{'id':_0x565b03['params']['id']}},_0x1a256c={};_0x1a256c[_0x5adb('0x2e')]=_[_0x5adb('0x30')](db[_0x5adb('0x2a')][_0x5adb('0x45')]);_0x1a256c[_0x5adb('0x2f')]=_[_0x5adb('0x30')](_0x565b03[_0x5adb('0x2f')]);_0x1a256c['filters']=_['intersection'](_0x1a256c[_0x5adb('0x2e')],_0x1a256c[_0x5adb('0x2f')]);_0x4160ad[_0x5adb('0x32')]=_[_0x5adb('0x31')](_0x1a256c['model'],qs['fields'](_0x565b03[_0x5adb('0x2f')][_0x5adb('0x33')]));_0x4160ad[_0x5adb('0x32')]=_0x4160ad[_0x5adb('0x32')][_0x5adb('0x46')]?_0x4160ad['attributes']:_0x1a256c[_0x5adb('0x2e')];if(_0x565b03[_0x5adb('0x2f')]['includeAll']){_0x4160ad[_0x5adb('0x3f')]=[{'all':!![]}];}_0x4160ad=_[_0x5adb('0x3c')]({},_0x4160ad,_0x565b03[_0x5adb('0x3d')]);return db[_0x5adb('0x2a')][_0x5adb('0x47')](_0x4160ad)[_0x5adb('0x22')](handleEntityNotFound(_0x508690,null))[_0x5adb('0x22')](respondWithResult(_0x508690,null))[_0x5adb('0x48')](handleError(_0x508690,null));};exports['create']=function(_0x3a925b,_0x57dc8b){return db['VoiceCallReport']['create'](_0x3a925b[_0x5adb('0x49')],{})[_0x5adb('0x22')](respondWithResult(_0x57dc8b,0xc9))[_0x5adb('0x48')](handleError(_0x57dc8b,null));};exports['destroy']=function(_0x2ad69d,_0x5cbab5){return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'id':_0x2ad69d[_0x5adb('0x4a')]['id']}})['then'](handleEntityNotFound(_0x5cbab5,null))[_0x5adb('0x22')](removeEntity(_0x5cbab5,null))['catch'](handleError(_0x5cbab5,null));};exports[_0x5adb('0x4b')]=function(_0x6dc067,_0x55c535){return db[_0x5adb('0x2a')][_0x5adb('0x4b')]()[_0x5adb('0x22')](respondWithResult(_0x55c535,null))[_0x5adb('0x48')](handleError(_0x55c535,null));};exports[_0x5adb('0x21')]=function(_0x4cb36c,_0x36b847){if(_0x4cb36c[_0x5adb('0x49')][_0x5adb('0x4c')]){delete _0x4cb36c[_0x5adb('0x49')]['uniqueid'];}return db[_0x5adb('0x2a')][_0x5adb('0x47')]({'where':{'uniqueid':_0x4cb36c[_0x5adb('0x4a')]['id'],'UserId':{'$or':[null,_0x4cb36c['user']['id']]}}})[_0x5adb('0x22')](handleEntityNotFound(_0x36b847,null))[_0x5adb('0x22')](saveUpdates(_0x4cb36c[_0x5adb('0x49')],null))[_0x5adb('0x22')](respondWithResult(_0x36b847,null))['catch'](handleError(_0x36b847,null));};
\ No newline at end of file
+var _0x2ef3=['pick','filter','merge','options','VoiceCallReport','then','includeAll','include','fullname','alias','User','findAll','rows','catch','show','params','keys','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x2ef3,0xba));var _0x32ef=function(_0x7fa9a8,_0x6fb420){_0x7fa9a8=_0x7fa9a8-0x0;var _0x369929=_0x2ef3[_0x7fa9a8];return _0x369929;};'use strict';var emlformat=require(_0x32ef('0x0'));var rimraf=require(_0x32ef('0x1'));var zipdir=require(_0x32ef('0x2'));var jsonpatch=require(_0x32ef('0x3'));var rp=require(_0x32ef('0x4'));var moment=require(_0x32ef('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x32ef('0x6'));var util=require(_0x32ef('0x7'));var path=require('path');var sox=require(_0x32ef('0x8'));var csv=require(_0x32ef('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x32ef('0xa'));var squel=require(_0x32ef('0xb'));var crypto=require(_0x32ef('0xc'));var jsforce=require(_0x32ef('0xd'));var deskjs=require(_0x32ef('0xe'));var toCsv=require(_0x32ef('0x9'));var querystring=require(_0x32ef('0xf'));var Papa=require(_0x32ef('0x10'));var Redis=require(_0x32ef('0x11'));var authService=require(_0x32ef('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x32ef('0x13'));var logger=require(_0x32ef('0x14'))(_0x32ef('0x15'));var utils=require(_0x32ef('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x32ef('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1a5106,_0x49d590){_0x49d590=_0x49d590||0xcc;return function(_0x3e98df){if(_0x3e98df){return _0x1a5106[_0x32ef('0x18')](_0x49d590);}return _0x1a5106['status'](_0x49d590)['end']();};}function respondWithResult(_0x19ce1,_0x4d8009){_0x4d8009=_0x4d8009||0xc8;return function(_0x326fce){if(_0x326fce){return _0x19ce1[_0x32ef('0x19')](_0x4d8009)[_0x32ef('0x1a')](_0x326fce);}};}function respondWithFilteredResult(_0x54c7f5,_0x57aff1){return function(_0x55bf0b){if(_0x55bf0b){var _0x531e30=typeof _0x57aff1[_0x32ef('0x1b')]===_0x32ef('0x1c')&&typeof _0x57aff1[_0x32ef('0x1d')]==='undefined';var _0x5d559b=_0x55bf0b[_0x32ef('0x1e')];var _0x1a9476=_0x531e30?0x0:_0x57aff1[_0x32ef('0x1b')];var _0x57863c=_0x531e30?_0x55bf0b[_0x32ef('0x1e')]:_0x57aff1[_0x32ef('0x1b')]+_0x57aff1['limit'];var _0x304505;if(_0x57863c>=_0x5d559b){_0x57863c=_0x5d559b;_0x304505=0xc8;}else{_0x304505=0xce;}_0x54c7f5[_0x32ef('0x19')](_0x304505);return _0x54c7f5[_0x32ef('0x1f')](_0x32ef('0x20'),_0x1a9476+'-'+_0x57863c+'/'+_0x5d559b)[_0x32ef('0x1a')](_0x55bf0b);}return null;};}function patchUpdates(_0x3aec05){return function(_0x4de441){try{jsonpatch[_0x32ef('0x21')](_0x4de441,_0x3aec05,!![]);}catch(_0x5cc3ef){return BPromise[_0x32ef('0x22')](_0x5cc3ef);}return _0x4de441[_0x32ef('0x23')]();};}function saveUpdates(_0x49f2d8,_0x1af371){return function(_0x97780){if(_0x97780){return _0x97780[_0x32ef('0x24')](_0x49f2d8)['then'](function(_0x57f5e5){return _0x57f5e5;});}return null;};}function removeEntity(_0x22f2d7,_0xb30fab){return function(_0x225feb){if(_0x225feb){return _0x225feb['destroy']()['then'](function(){_0x22f2d7[_0x32ef('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x51a412,_0x278495){return function(_0x14d4b3){if(!_0x14d4b3){_0x51a412[_0x32ef('0x18')](0x194);}return _0x14d4b3;};}function handleError(_0x1dbe98,_0x15ce54){_0x15ce54=_0x15ce54||0x1f4;return function(_0x234175){logger[_0x32ef('0x25')](_0x234175[_0x32ef('0x26')]);if(_0x234175[_0x32ef('0x27')]){delete _0x234175[_0x32ef('0x27')];}_0x1dbe98[_0x32ef('0x19')](_0x15ce54)[_0x32ef('0x28')](_0x234175);};}exports['index']=function(_0xd65fde,_0x2f5d06){var _0x5a04cd={},_0x12de1a={},_0x3c569d={'count':0x0,'rows':[]};var _0x30b250=_[_0x32ef('0x29')](db['VoiceCallReport'][_0x32ef('0x2a')],function(_0x22bf86){return{'name':_0x22bf86[_0x32ef('0x2b')],'type':_0x22bf86[_0x32ef('0x2c')][_0x32ef('0x2d')]};});_0x12de1a[_0x32ef('0x2e')]=_[_0x32ef('0x29')](_0x30b250,'name');_0x12de1a[_0x32ef('0x2f')]=_['keys'](_0xd65fde[_0x32ef('0x2f')]);_0x12de1a[_0x32ef('0x30')]=_['intersection'](_0x12de1a[_0x32ef('0x2e')],_0x12de1a[_0x32ef('0x2f')]);_0x5a04cd[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0x12de1a[_0x32ef('0x2e')],qs['fields'](_0xd65fde['query'][_0x32ef('0x33')]));_0x5a04cd['attributes']=_0x5a04cd[_0x32ef('0x31')][_0x32ef('0x34')]?_0x5a04cd[_0x32ef('0x31')]:_0x12de1a[_0x32ef('0x2e')];if(!_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x35')]('nolimit')){_0x5a04cd['limit']=qs['limit'](_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x1d')]);_0x5a04cd[_0x32ef('0x1b')]=qs['offset'](_0xd65fde['query'][_0x32ef('0x1b')]);}_0x5a04cd[_0x32ef('0x36')]=qs[_0x32ef('0x37')](_0xd65fde['query']['sort']);_0x5a04cd[_0x32ef('0x38')]=qs[_0x32ef('0x30')](_[_0x32ef('0x39')](_0xd65fde[_0x32ef('0x2f')],_0x12de1a[_0x32ef('0x30')]),_0x30b250);if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]){_0x5a04cd[_0x32ef('0x38')]=_[_0x32ef('0x3b')](_0x5a04cd['where'],{'$or':_[_0x32ef('0x29')](_0x30b250,function(_0x36e374){if(_0x36e374[_0x32ef('0x2c')]!=='VIRTUAL'){var _0x365125={};_0x365125[_0x36e374[_0x32ef('0x27')]]={'$like':'%'+_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3a')]+'%'};return _0x365125;}})});}_0x5a04cd=_[_0x32ef('0x3b')]({},_0x5a04cd,_0xd65fde[_0x32ef('0x3c')]);var _0x256c40={'where':_0x5a04cd[_0x32ef('0x38')]};return db[_0x32ef('0x3d')][_0x32ef('0x1e')](_0x256c40)[_0x32ef('0x3e')](function(_0x4615b4){_0x3c569d['count']=_0x4615b4;if(_0xd65fde[_0x32ef('0x2f')][_0x32ef('0x3f')]){_0x5a04cd[_0x32ef('0x40')]=[{'attributes':['id',_0x32ef('0x27'),_0x32ef('0x41'),_0x32ef('0x42')],'model':db[_0x32ef('0x43')],'as':'User'}];}return db['VoiceCallReport'][_0x32ef('0x44')](_0x5a04cd);})[_0x32ef('0x3e')](function(_0x2a33dd){_0x3c569d[_0x32ef('0x45')]=_0x2a33dd;return _0x3c569d;})['then'](respondWithFilteredResult(_0x2f5d06,_0x5a04cd))[_0x32ef('0x46')](handleError(_0x2f5d06,null));};exports[_0x32ef('0x47')]=function(_0x5d2f06,_0x4744ba){var _0x4bc5bc={'raw':!![],'where':{'id':_0x5d2f06[_0x32ef('0x48')]['id']}},_0xcb3c08={};_0xcb3c08[_0x32ef('0x2e')]=_[_0x32ef('0x49')](db[_0x32ef('0x3d')][_0x32ef('0x2a')]);_0xcb3c08[_0x32ef('0x2f')]=_[_0x32ef('0x49')](_0x5d2f06[_0x32ef('0x2f')]);_0xcb3c08[_0x32ef('0x30')]=_['intersection'](_0xcb3c08[_0x32ef('0x2e')],_0xcb3c08['query']);_0x4bc5bc[_0x32ef('0x31')]=_[_0x32ef('0x32')](_0xcb3c08[_0x32ef('0x2e')],qs['fields'](_0x5d2f06[_0x32ef('0x2f')][_0x32ef('0x33')]));_0x4bc5bc[_0x32ef('0x31')]=_0x4bc5bc[_0x32ef('0x31')][_0x32ef('0x34')]?_0x4bc5bc[_0x32ef('0x31')]:_0xcb3c08[_0x32ef('0x2e')];if(_0x5d2f06['query']['includeAll']){_0x4bc5bc[_0x32ef('0x40')]=[{'all':!![]}];}_0x4bc5bc=_[_0x32ef('0x3b')]({},_0x4bc5bc,_0x5d2f06[_0x32ef('0x3c')]);return db[_0x32ef('0x3d')][_0x32ef('0x4a')](_0x4bc5bc)[_0x32ef('0x3e')](handleEntityNotFound(_0x4744ba,null))[_0x32ef('0x3e')](respondWithResult(_0x4744ba,null))[_0x32ef('0x46')](handleError(_0x4744ba,null));};exports[_0x32ef('0x4b')]=function(_0x1ebedf,_0x35a294){return db[_0x32ef('0x3d')][_0x32ef('0x4b')](_0x1ebedf['body'],{})[_0x32ef('0x3e')](respondWithResult(_0x35a294,0xc9))[_0x32ef('0x46')](handleError(_0x35a294,null));};exports[_0x32ef('0x4c')]=function(_0xd42609,_0x1cc9f3){return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'id':_0xd42609[_0x32ef('0x48')]['id']}})[_0x32ef('0x3e')](handleEntityNotFound(_0x1cc9f3,null))[_0x32ef('0x3e')](removeEntity(_0x1cc9f3,null))[_0x32ef('0x46')](handleError(_0x1cc9f3,null));};exports[_0x32ef('0x4d')]=function(_0x272377,_0x326445){return db[_0x32ef('0x3d')][_0x32ef('0x4d')]()[_0x32ef('0x3e')](respondWithResult(_0x326445,null))[_0x32ef('0x46')](handleError(_0x326445,null));};exports['update']=function(_0x515ac9,_0x179c2f){if(_0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')]){delete _0x515ac9[_0x32ef('0x4e')][_0x32ef('0x4f')];}return db[_0x32ef('0x3d')][_0x32ef('0x4a')]({'where':{'uniqueid':_0x515ac9[_0x32ef('0x48')]['id'],'UserId':{'$or':[null,_0x515ac9[_0x32ef('0x50')]['id']]}}})[_0x32ef('0x3e')](handleEntityNotFound(_0x179c2f,null))[_0x32ef('0x3e')](saveUpdates(_0x515ac9['body'],null))[_0x32ef('0x3e')](respondWithResult(_0x179c2f,null))[_0x32ef('0x46')](handleError(_0x179c2f,null));};
\ No newline at end of file
index ef5188b..c294b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9515=['report_call','lodash','api','request-promise','path','rimraf','../../config/environment','exports','define','VoiceCallReport'];(function(_0x2ba813,_0x99d182){var _0x1b56c0=function(_0x4c885d){while(--_0x4c885d){_0x2ba813['push'](_0x2ba813['shift']());}};_0x1b56c0(++_0x99d182);}(_0x9515,0xe7));var _0x5951=function(_0x4d45d6,_0x2c74f0){_0x4d45d6=_0x4d45d6-0x0;var _0x19cd3f=_0x9515[_0x4d45d6];return _0x19cd3f;};'use strict';var _=require(_0x5951('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5951('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5951('0x2'));var fs=require('fs');var path=require(_0x5951('0x3'));var rimraf=require(_0x5951('0x4'));var config=require(_0x5951('0x5'));var attributes=require('./voiceCallReport.attributes');module[_0x5951('0x6')]=function(_0xa35d0f,_0x2bb252){return _0xa35d0f[_0x5951('0x7')](_0x5951('0x8'),attributes,{'tableName':_0x5951('0x9'),'paranoid':![],'indexes':[{'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b00=['uniqueid','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./voiceCallReport.attributes','exports','define','VoiceCallReport'];(function(_0x38e5b0,_0x358b34){var _0x31a65a=function(_0x243ea1){while(--_0x243ea1){_0x38e5b0['push'](_0x38e5b0['shift']());}};_0x31a65a(++_0x358b34);}(_0x7b00,0x135));var _0x07b0=function(_0x504a5d,_0x26c3d1){_0x504a5d=_0x504a5d-0x0;var _0x1750f0=_0x7b00[_0x504a5d];return _0x1750f0;};'use strict';var _=require(_0x07b0('0x0'));var util=require(_0x07b0('0x1'));var logger=require(_0x07b0('0x2'))(_0x07b0('0x3'));var moment=require(_0x07b0('0x4'));var BPromise=require(_0x07b0('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x07b0('0x6'));var rimraf=require(_0x07b0('0x7'));var config=require(_0x07b0('0x8'));var attributes=require(_0x07b0('0x9'));module[_0x07b0('0xa')]=function(_0x26b098,_0x4c390c){return _0x26b098[_0x07b0('0xb')](_0x07b0('0xc'),attributes,{'tableName':'report_call','paranoid':![],'indexes':[{'fields':[_0x07b0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 0d1aaec..a63fcb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0b=['VoiceCallReport','options','raw','where','attributes','include','map','model','then','CreateVoiceCallReport','body','update','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch'];(function(_0xb24a3e,_0x4a3594){var _0x4038d7=function(_0x1ea3c3){while(--_0x1ea3c3){_0xb24a3e['push'](_0xb24a3e['shift']());}};_0x4038d7(++_0x4a3594);}(_0x2c0b,0x8c));var _0xb2c0=function(_0x5aed25,_0xd91252){_0x5aed25=_0x5aed25-0x0;var _0x2761e9=_0x2c0b[_0x5aed25];return _0x2761e9;};'use strict';var _=require(_0xb2c0('0x0'));var util=require('util');var moment=require(_0xb2c0('0x1'));var BPromise=require('bluebird');var rs=require(_0xb2c0('0x2'));var fs=require('fs');var Redis=require(_0xb2c0('0x3'));var db=require(_0xb2c0('0x4'))['db'];var utils=require(_0xb2c0('0x5'));var logger=require('../../config/logger')(_0xb2c0('0x6'));var config=require(_0xb2c0('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xb2c0('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x489530,_0x5d93bd,_0x227847){return new BPromise(function(_0x47f15c,_0x59cd7d){return client['request'](_0x489530,_0x227847)['then'](function(_0x5a9bd7){logger['info'](_0xb2c0('0x9'),_0x5d93bd,_0xb2c0('0xa'));logger[_0xb2c0('0xb')](_0xb2c0('0xc'),_0x5d93bd,'request\x20sent',JSON[_0xb2c0('0xd')](_0x5a9bd7));if(_0x5a9bd7[_0xb2c0('0xe')]){if(_0x5a9bd7[_0xb2c0('0xe')][_0xb2c0('0xf')]===0x1f4){logger[_0xb2c0('0xe')](_0xb2c0('0x9'),_0x5d93bd,_0x5a9bd7[_0xb2c0('0xe')]['message']);return _0x59cd7d(_0x5a9bd7[_0xb2c0('0xe')][_0xb2c0('0x10')]);}logger[_0xb2c0('0xe')](_0xb2c0('0x9'),_0x5d93bd,_0x5a9bd7[_0xb2c0('0xe')][_0xb2c0('0x10')]);return _0x47f15c(_0x5a9bd7['error'][_0xb2c0('0x10')]);}else{logger[_0xb2c0('0x11')]('VoiceCallReport,\x20%s,\x20%s',_0x5d93bd,'request\x20sent');_0x47f15c(_0x5a9bd7[_0xb2c0('0x12')][_0xb2c0('0x10')]);}})[_0xb2c0('0x13')](function(_0x1ebd53){logger['error'](_0xb2c0('0x9'),_0x5d93bd,_0x1ebd53);_0x59cd7d(_0x1ebd53);});});}exports['GetVoiceCallReport']=function(_0x21c7e3){var _0x4bd338=this;return new Promise(function(_0x426da1,_0x5d7b8e){return db[_0xb2c0('0x14')]['findAll']({'raw':_0x21c7e3[_0xb2c0('0x15')]?_0x21c7e3[_0xb2c0('0x15')][_0xb2c0('0x16')]===undefined?!![]:![]:!![],'where':_0x21c7e3['options']?_0x21c7e3[_0xb2c0('0x15')][_0xb2c0('0x17')]||null:null,'attributes':_0x21c7e3[_0xb2c0('0x15')]?_0x21c7e3[_0xb2c0('0x15')][_0xb2c0('0x18')]||null:null,'limit':_0x21c7e3[_0xb2c0('0x15')]?_0x21c7e3['options']['limit']||null:null,'include':_0x21c7e3[_0xb2c0('0x15')]?_0x21c7e3[_0xb2c0('0x15')][_0xb2c0('0x19')]?_[_0xb2c0('0x1a')](_0x21c7e3[_0xb2c0('0x15')][_0xb2c0('0x19')],function(_0x37a7f3){return{'model':db[_0x37a7f3[_0xb2c0('0x1b')]],'as':_0x37a7f3['as'],'attributes':_0x37a7f3['attributes'],'include':_0x37a7f3['include']?_['map'](_0x37a7f3[_0xb2c0('0x19')],function(_0x365b74){return{'model':db[_0x365b74[_0xb2c0('0x1b')]],'as':_0x365b74['as'],'attributes':_0x365b74[_0xb2c0('0x18')],'include':_0x365b74[_0xb2c0('0x19')]?_[_0xb2c0('0x1a')](_0x365b74['include'],function(_0x3bc564){return{'model':db[_0x3bc564[_0xb2c0('0x1b')]],'as':_0x3bc564['as'],'attributes':_0x3bc564[_0xb2c0('0x18')]};}):[]};}):[]};}):[]:[]})[_0xb2c0('0x1c')](function(_0x9d7e77){logger['info']('GetVoiceCallReport',_0x21c7e3);logger[_0xb2c0('0xb')]('GetVoiceCallReport',_0x21c7e3,JSON[_0xb2c0('0xd')](_0x9d7e77));_0x426da1(_0x9d7e77);})[_0xb2c0('0x13')](function(_0x588692){logger[_0xb2c0('0xe')]('GetVoiceCallReport',_0x588692[_0xb2c0('0x10')],_0x21c7e3);_0x5d7b8e(_0x4bd338['error'](0x1f4,_0x588692[_0xb2c0('0x10')]));});});};exports[_0xb2c0('0x1d')]=function(_0x5e4eae){var _0x5e65da=this;return new Promise(function(_0x56f2e4,_0xfbe1e2){return db[_0xb2c0('0x14')]['create'](_0x5e4eae[_0xb2c0('0x1e')],{'raw':_0x5e4eae[_0xb2c0('0x15')]?_0x5e4eae[_0xb2c0('0x15')][_0xb2c0('0x16')]===undefined?!![]:![]:!![]})[_0xb2c0('0x1c')](function(_0x5129dd){logger[_0xb2c0('0x11')]('CreateVoiceCallReport',_0x5e4eae);logger[_0xb2c0('0xb')](_0xb2c0('0x1d'),_0x5e4eae,JSON['stringify'](_0x5129dd));_0x56f2e4(_0x5129dd);})['catch'](function(_0xdceeee){logger['error'](_0xb2c0('0x1d'),_0xdceeee[_0xb2c0('0x10')],_0x5e4eae);_0xfbe1e2(_0x5e65da[_0xb2c0('0xe')](0x1f4,_0xdceeee[_0xb2c0('0x10')]));});});};exports['UpdateVoiceCallReport']=function(_0x53a44f){var _0x3163e8=this;return new Promise(function(_0x2e5c3d,_0x1e6b7c){return db['VoiceCallReport'][_0xb2c0('0x1f')](_0x53a44f['body'],{'raw':_0x53a44f[_0xb2c0('0x15')]?_0x53a44f[_0xb2c0('0x15')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x53a44f[_0xb2c0('0x15')]?_0x53a44f['options'][_0xb2c0('0x17')]||null:null,'attributes':_0x53a44f[_0xb2c0('0x15')]?_0x53a44f[_0xb2c0('0x15')][_0xb2c0('0x18')]||null:null,'limit':_0x53a44f[_0xb2c0('0x15')]?_0x53a44f[_0xb2c0('0x15')]['limit']||null:null})['then'](function(_0x344723){logger[_0xb2c0('0x11')]('UpdateVoiceCallReport',_0x53a44f);logger[_0xb2c0('0xb')]('UpdateVoiceCallReport',_0x53a44f,JSON[_0xb2c0('0xd')](_0x344723));_0x2e5c3d(_0x344723);})[_0xb2c0('0x13')](function(_0x418e90){logger[_0xb2c0('0xe')]('UpdateVoiceCallReport',_0x418e90[_0xb2c0('0x10')],_0x53a44f);_0x1e6b7c(_0x3163e8[_0xb2c0('0xe')](0x1f4,_0x418e90[_0xb2c0('0x10')]));});});};
\ No newline at end of file
+var _0x38a2=['UpdateVoiceCallReport','update','body','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','VoiceCallReport','findAll','options','where','attributes','limit','include','map','model','GetVoiceCallReport','CreateVoiceCallReport','raw','stringify'];(function(_0x2eb04a,_0x9443bf){var _0x57665b=function(_0xc0ed17){while(--_0xc0ed17){_0x2eb04a['push'](_0x2eb04a['shift']());}};_0x57665b(++_0x9443bf);}(_0x38a2,0x11b));var _0x238a=function(_0x487f81,_0x40d371){_0x487f81=_0x487f81-0x0;var _0x269079=_0x38a2[_0x487f81];return _0x269079;};'use strict';var _=require(_0x238a('0x0'));var util=require(_0x238a('0x1'));var moment=require('moment');var BPromise=require(_0x238a('0x2'));var rs=require(_0x238a('0x3'));var fs=require('fs');var Redis=require(_0x238a('0x4'));var db=require(_0x238a('0x5'))['db'];var utils=require(_0x238a('0x6'));var logger=require(_0x238a('0x7'))(_0x238a('0x8'));var config=require(_0x238a('0x9'));var jayson=require(_0x238a('0xa'));var client=jayson[_0x238a('0xb')][_0x238a('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5f4383,_0x13de53,_0x5c3a95){return new BPromise(function(_0x5078b3,_0x49fbe5){return client[_0x238a('0xd')](_0x5f4383,_0x5c3a95)[_0x238a('0xe')](function(_0x4ce6ae){logger[_0x238a('0xf')](_0x238a('0x10'),_0x13de53,_0x238a('0x11'));logger[_0x238a('0x12')]('VoiceCallReport,\x20%s,\x20%s,\x20%s',_0x13de53,_0x238a('0x11'),JSON['stringify'](_0x4ce6ae));if(_0x4ce6ae[_0x238a('0x13')]){if(_0x4ce6ae[_0x238a('0x13')][_0x238a('0x14')]===0x1f4){logger[_0x238a('0x13')](_0x238a('0x10'),_0x13de53,_0x4ce6ae[_0x238a('0x13')][_0x238a('0x15')]);return _0x49fbe5(_0x4ce6ae[_0x238a('0x13')][_0x238a('0x15')]);}logger[_0x238a('0x13')]('VoiceCallReport,\x20%s,\x20%s',_0x13de53,_0x4ce6ae[_0x238a('0x13')]['message']);return _0x5078b3(_0x4ce6ae[_0x238a('0x13')]['message']);}else{logger[_0x238a('0xf')](_0x238a('0x10'),_0x13de53,_0x238a('0x11'));_0x5078b3(_0x4ce6ae[_0x238a('0x16')][_0x238a('0x15')]);}})[_0x238a('0x17')](function(_0x214f57){logger[_0x238a('0x13')](_0x238a('0x10'),_0x13de53,_0x214f57);_0x49fbe5(_0x214f57);});});}exports['GetVoiceCallReport']=function(_0x10f374){var _0x461572=this;return new Promise(function(_0x5b976a,_0x20036a){return db[_0x238a('0x18')][_0x238a('0x19')]({'raw':_0x10f374[_0x238a('0x1a')]?_0x10f374['options']['raw']===undefined?!![]:![]:!![],'where':_0x10f374['options']?_0x10f374[_0x238a('0x1a')][_0x238a('0x1b')]||null:null,'attributes':_0x10f374[_0x238a('0x1a')]?_0x10f374['options'][_0x238a('0x1c')]||null:null,'limit':_0x10f374['options']?_0x10f374['options'][_0x238a('0x1d')]||null:null,'include':_0x10f374[_0x238a('0x1a')]?_0x10f374[_0x238a('0x1a')][_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x10f374['options']['include'],function(_0x23e952){return{'model':db[_0x23e952[_0x238a('0x20')]],'as':_0x23e952['as'],'attributes':_0x23e952['attributes'],'include':_0x23e952[_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x23e952[_0x238a('0x1e')],function(_0x424896){return{'model':db[_0x424896[_0x238a('0x20')]],'as':_0x424896['as'],'attributes':_0x424896['attributes'],'include':_0x424896[_0x238a('0x1e')]?_[_0x238a('0x1f')](_0x424896[_0x238a('0x1e')],function(_0x4a85a0){return{'model':db[_0x4a85a0['model']],'as':_0x4a85a0['as'],'attributes':_0x4a85a0['attributes']};}):[]};}):[]};}):[]:[]})[_0x238a('0xe')](function(_0x1263e2){logger[_0x238a('0xf')]('GetVoiceCallReport',_0x10f374);logger[_0x238a('0x12')](_0x238a('0x21'),_0x10f374,JSON['stringify'](_0x1263e2));_0x5b976a(_0x1263e2);})[_0x238a('0x17')](function(_0xfac9c5){logger[_0x238a('0x13')]('GetVoiceCallReport',_0xfac9c5[_0x238a('0x15')],_0x10f374);_0x20036a(_0x461572['error'](0x1f4,_0xfac9c5[_0x238a('0x15')]));});});};exports[_0x238a('0x22')]=function(_0x4b3918){var _0x4657a9=this;return new Promise(function(_0x7536b8,_0x53f544){return db['VoiceCallReport']['create'](_0x4b3918['body'],{'raw':_0x4b3918[_0x238a('0x1a')]?_0x4b3918[_0x238a('0x1a')][_0x238a('0x23')]===undefined?!![]:![]:!![]})[_0x238a('0xe')](function(_0x125eb0){logger[_0x238a('0xf')]('CreateVoiceCallReport',_0x4b3918);logger[_0x238a('0x12')]('CreateVoiceCallReport',_0x4b3918,JSON[_0x238a('0x24')](_0x125eb0));_0x7536b8(_0x125eb0);})[_0x238a('0x17')](function(_0x3a828b){logger[_0x238a('0x13')](_0x238a('0x22'),_0x3a828b[_0x238a('0x15')],_0x4b3918);_0x53f544(_0x4657a9[_0x238a('0x13')](0x1f4,_0x3a828b[_0x238a('0x15')]));});});};exports[_0x238a('0x25')]=function(_0x5564a1){var _0x5f340f=this;return new Promise(function(_0x104760,_0x488402){return db['VoiceCallReport'][_0x238a('0x26')](_0x5564a1[_0x238a('0x27')],{'raw':_0x5564a1[_0x238a('0x1a')]?_0x5564a1['options'][_0x238a('0x23')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5564a1['options']?_0x5564a1['options']['where']||null:null,'attributes':_0x5564a1[_0x238a('0x1a')]?_0x5564a1[_0x238a('0x1a')][_0x238a('0x1c')]||null:null,'limit':_0x5564a1[_0x238a('0x1a')]?_0x5564a1[_0x238a('0x1a')]['limit']||null:null})[_0x238a('0xe')](function(_0x166f59){logger['info'](_0x238a('0x25'),_0x5564a1);logger[_0x238a('0x12')](_0x238a('0x25'),_0x5564a1,JSON['stringify'](_0x166f59));_0x104760(_0x166f59);})[_0x238a('0x17')](function(_0x532b6f){logger[_0x238a('0x13')](_0x238a('0x25'),_0x532b6f[_0x238a('0x15')],_0x5564a1);_0x488402(_0x5f340f[_0x238a('0x13')](0x1f4,_0x532b6f[_0x238a('0x15')]));});});};
\ No newline at end of file
index e694b63..68346e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b4=['fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','index','/:id','isAuthenticated','show','post','update','destroy','exports','multer','connect-timeout','Router'];(function(_0x77a668,_0x4aa05f){var _0xf21b10=function(_0xd43ec1){while(--_0xd43ec1){_0x77a668['push'](_0x77a668['shift']());}};_0xf21b10(++_0x4aa05f);}(_0x35b4,0xcd));var _0x435b=function(_0x183116,_0x326f1a){_0x183116=_0x183116-0x0;var _0x294bd6=_0x35b4[_0x183116];return _0x294bd6;};'use strict';var multer=require(_0x435b('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x435b('0x1'));var express=require('express');var router=express[_0x435b('0x2')]();var fs_extra=require(_0x435b('0x3'));var auth=require(_0x435b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x435b('0x5'));var controller=require(_0x435b('0x6'));router[_0x435b('0x7')]('/',auth['isAuthenticated'](),controller[_0x435b('0x8')]);router[_0x435b('0x7')](_0x435b('0x9'),auth[_0x435b('0xa')](),controller[_0x435b('0xb')]);router[_0x435b('0xc')]('/',auth[_0x435b('0xa')](),controller['create']);router['put'](_0x435b('0x9'),auth[_0x435b('0xa')](),controller[_0x435b('0xd')]);router['delete'](_0x435b('0x9'),auth[_0x435b('0xa')](),controller[_0x435b('0xe')]);module[_0x435b('0xf')]=router;
\ No newline at end of file
+var _0x7611=['util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','/:id','show','post','create','put','update','exports','multer'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x7611,0x77));var _0x1761=function(_0x2fe469,_0x32a238){_0x2fe469=_0x2fe469-0x0;var _0x279b6c=_0x7611[_0x2fe469];return _0x279b6c;};'use strict';var multer=require(_0x1761('0x0'));var util=require(_0x1761('0x1'));var path=require(_0x1761('0x2'));var timeout=require(_0x1761('0x3'));var express=require('express');var router=express[_0x1761('0x4')]();var fs_extra=require(_0x1761('0x5'));var auth=require(_0x1761('0x6'));var interaction=require(_0x1761('0x7'));var config=require(_0x1761('0x8'));var controller=require(_0x1761('0x9'));router[_0x1761('0xa')]('/',auth[_0x1761('0xb')](),controller[_0x1761('0xc')]);router[_0x1761('0xa')](_0x1761('0xd'),auth['isAuthenticated'](),controller[_0x1761('0xe')]);router[_0x1761('0xf')]('/',auth[_0x1761('0xb')](),controller[_0x1761('0x10')]);router[_0x1761('0x11')](_0x1761('0xd'),auth[_0x1761('0xb')](),controller[_0x1761('0x12')]);router['delete'](_0x1761('0xd'),auth[_0x1761('0xb')](),controller['destroy']);module[_0x1761('0x13')]=router;
\ No newline at end of file
index ab858a5..f03cf05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ff=['STRING','name','setDataValue','join','getDataValue','options','BOOLEAN','sequelize'];(function(_0x47ca58,_0x540f3a){var _0x2dbf65=function(_0x2ab567){while(--_0x2ab567){_0x47ca58['push'](_0x47ca58['shift']());}};_0x2dbf65(++_0x540f3a);}(_0x45ff,0x67));var _0xf45f=function(_0x562362,_0x5d54f4){_0x562362=_0x562362-0x0;var _0x3a18ce=_0x45ff[_0x562362];return _0x3a18ce;};'use strict';var Sequelize=require(_0xf45f('0x0'));module['exports']={'name':{'type':Sequelize[_0xf45f('0x1')]},'prefix':{'type':Sequelize[_0xf45f('0x1')],'unique':_0xf45f('0x2'),'allowNull':![]},'options':{'type':Sequelize['STRING'],'set':function(_0x303818){this[_0xf45f('0x3')]('options',_0x303818?_0x303818[_0xf45f('0x4')](''):[]);},'get':function(){return this[_0xf45f('0x5')]('options')?this[_0xf45f('0x5')](_0xf45f('0x6'))['split'](''):[];}},'auth':{'type':Sequelize[_0xf45f('0x7')],'defaultValue':![]},'password':{'type':Sequelize[_0xf45f('0x1')]},'record':{'type':Sequelize[_0xf45f('0x7')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0xf45f('0x1')]},'description':{'type':Sequelize[_0xf45f('0x1')]}};
\ No newline at end of file
+var _0xecc5=['options','join','getDataValue','split','BOOLEAN','sequelize','exports','STRING','name'];(function(_0x3a7e42,_0x58e47d){var _0x7122b7=function(_0x42acab){while(--_0x42acab){_0x3a7e42['push'](_0x3a7e42['shift']());}};_0x7122b7(++_0x58e47d);}(_0xecc5,0x1be));var _0x5ecc=function(_0x17a1bc,_0x4eb8a5){_0x17a1bc=_0x17a1bc-0x0;var _0x5b683f=_0xecc5[_0x17a1bc];return _0x5b683f;};'use strict';var Sequelize=require(_0x5ecc('0x0'));module[_0x5ecc('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize[_0x5ecc('0x2')],'unique':_0x5ecc('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x5ecc('0x2')],'set':function(_0x270f86){this['setDataValue'](_0x5ecc('0x4'),_0x270f86?_0x270f86[_0x5ecc('0x5')](''):[]);},'get':function(){return this['getDataValue'](_0x5ecc('0x4'))?this[_0x5ecc('0x6')](_0x5ecc('0x4'))[_0x5ecc('0x7')](''):[];}},'auth':{'type':Sequelize[_0x5ecc('0x8')],'defaultValue':![]},'password':{'type':Sequelize[_0x5ecc('0x2')]},'record':{'type':Sequelize[_0x5ecc('0x8')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x5ecc('0x2')]},'description':{'type':Sequelize[_0x5ecc('0x2')]}};
\ No newline at end of file
index 66b089c..e19e797 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de3=['request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','status','end','json','offset','undefined','limit','count','set','reject','save','then','get','ChanSpies','destroy','sendStatus','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filters','pick','filter','merge','VoiceChanSpy','includeAll','include','findAll','rows','catch','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','zip-dir','fast-json-patch'];(function(_0x19b0ba,_0x1c1f9a){var _0x1db808=function(_0x6fe12f){while(--_0x6fe12f){_0x19b0ba['push'](_0x19b0ba['shift']());}};_0x1db808(++_0x1c1f9a);}(_0x9de3,0xea));var _0x39de=function(_0x1b1eda,_0x2b0f77){_0x1b1eda=_0x1b1eda-0x0;var _0x197f08=_0x9de3[_0x1b1eda];return _0x197f08;};'use strict';var emlformat=require(_0x39de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x39de('0x1'));var jsonpatch=require(_0x39de('0x2'));var rp=require(_0x39de('0x3'));var moment=require('moment');var BPromise=require(_0x39de('0x4'));var Mustache=require('mustache');var util=require(_0x39de('0x5'));var path=require(_0x39de('0x6'));var sox=require(_0x39de('0x7'));var csv=require(_0x39de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x39de('0x9'));var _=require(_0x39de('0xa'));var squel=require(_0x39de('0xb'));var crypto=require(_0x39de('0xc'));var jsforce=require(_0x39de('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x39de('0xe'));var Redis=require(_0x39de('0xf'));var authService=require(_0x39de('0x10'));var qs=require(_0x39de('0x11'));var as=require(_0x39de('0x12'));var hardwareService=require(_0x39de('0x13'));var logger=require(_0x39de('0x14'))(_0x39de('0x15'));var utils=require('../../config/utils');var config=require(_0x39de('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2bd0f0,_0x35061b){_0x35061b=_0x35061b||0xcc;return function(_0x32d610){if(_0x32d610){return _0x2bd0f0['sendStatus'](_0x35061b);}return _0x2bd0f0[_0x39de('0x17')](_0x35061b)[_0x39de('0x18')]();};}function respondWithResult(_0x1318d8,_0x905132){_0x905132=_0x905132||0xc8;return function(_0x38fe3b){if(_0x38fe3b){return _0x1318d8[_0x39de('0x17')](_0x905132)[_0x39de('0x19')](_0x38fe3b);}};}function respondWithFilteredResult(_0x25ca17,_0xaff589){return function(_0x316fdb){if(_0x316fdb){var _0x4c56df=typeof _0xaff589[_0x39de('0x1a')]===_0x39de('0x1b')&&typeof _0xaff589[_0x39de('0x1c')]===_0x39de('0x1b');var _0x493200=_0x316fdb['count'];var _0x2d355b=_0x4c56df?0x0:_0xaff589['offset'];var _0x1fb6fa=_0x4c56df?_0x316fdb[_0x39de('0x1d')]:_0xaff589['offset']+_0xaff589[_0x39de('0x1c')];var _0x5dcb96;if(_0x1fb6fa>=_0x493200){_0x1fb6fa=_0x493200;_0x5dcb96=0xc8;}else{_0x5dcb96=0xce;}_0x25ca17[_0x39de('0x17')](_0x5dcb96);return _0x25ca17[_0x39de('0x1e')]('Content-Range',_0x2d355b+'-'+_0x1fb6fa+'/'+_0x493200)['json'](_0x316fdb);}return null;};}function patchUpdates(_0xab6f89){return function(_0x5e4ab2){try{jsonpatch['apply'](_0x5e4ab2,_0xab6f89,!![]);}catch(_0x315e4a){return BPromise[_0x39de('0x1f')](_0x315e4a);}return _0x5e4ab2[_0x39de('0x20')]();};}function saveUpdates(_0x292dda,_0x400d62){return function(_0x10c0fc){if(_0x10c0fc){return _0x10c0fc['update'](_0x292dda)[_0x39de('0x21')](function(_0x3baec4){return _0x3baec4;});}return null;};}function removeEntity(_0x45abce,_0x578eaa){return function(_0x372564){if(_0x372564){return _0x372564['destroy']()[_0x39de('0x21')](function(){var _0x102c5b=_0x372564[_0x39de('0x22')]({'plain':!![]});var _0x39d01a=_0x39de('0x23');return db['UserProfileResource'][_0x39de('0x24')]({'where':{'type':_0x39d01a,'resourceId':_0x102c5b['id']}})[_0x39de('0x21')](function(){return _0x372564;});})[_0x39de('0x21')](function(){_0x45abce[_0x39de('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3fd91a,_0x59e64f){return function(_0x4c11b3){if(!_0x4c11b3){_0x3fd91a[_0x39de('0x25')](0x194);}return _0x4c11b3;};}function handleError(_0x1d3b79,_0xfd80c8){_0xfd80c8=_0xfd80c8||0x1f4;return function(_0x3ff4d8){logger[_0x39de('0x26')](_0x3ff4d8['stack']);if(_0x3ff4d8[_0x39de('0x27')]){delete _0x3ff4d8[_0x39de('0x27')];}_0x1d3b79[_0x39de('0x17')](_0xfd80c8)[_0x39de('0x28')](_0x3ff4d8);};}exports[_0x39de('0x29')]=function(_0x2db103,_0x414647){var _0x497f1a={},_0xdf658b={},_0x2ca57d={'count':0x0,'rows':[]};var _0x3760c7=_[_0x39de('0x2a')](db['VoiceChanSpy'][_0x39de('0x2b')],function(_0x3d6562){return{'name':_0x3d6562[_0x39de('0x2c')],'type':_0x3d6562[_0x39de('0x2d')]['key']};});_0xdf658b[_0x39de('0x2e')]=_[_0x39de('0x2a')](_0x3760c7,_0x39de('0x27'));_0xdf658b[_0x39de('0x2f')]=_[_0x39de('0x30')](_0x2db103['query']);_0xdf658b['filters']=_[_0x39de('0x31')](_0xdf658b[_0x39de('0x2e')],_0xdf658b[_0x39de('0x2f')]);_0x497f1a[_0x39de('0x32')]=_['intersection'](_0xdf658b[_0x39de('0x2e')],qs['fields'](_0x2db103[_0x39de('0x2f')][_0x39de('0x33')]));_0x497f1a[_0x39de('0x32')]=_0x497f1a['attributes'][_0x39de('0x34')]?_0x497f1a[_0x39de('0x32')]:_0xdf658b[_0x39de('0x2e')];if(!_0x2db103[_0x39de('0x2f')][_0x39de('0x35')](_0x39de('0x36'))){_0x497f1a[_0x39de('0x1c')]=qs[_0x39de('0x1c')](_0x2db103[_0x39de('0x2f')]['limit']);_0x497f1a[_0x39de('0x1a')]=qs[_0x39de('0x1a')](_0x2db103[_0x39de('0x2f')][_0x39de('0x1a')]);}_0x497f1a[_0x39de('0x37')]=qs['sort'](_0x2db103[_0x39de('0x2f')]['sort']);_0x497f1a[_0x39de('0x38')]=qs[_0x39de('0x39')](_[_0x39de('0x3a')](_0x2db103[_0x39de('0x2f')],_0xdf658b[_0x39de('0x39')]),_0x3760c7);if(_0x2db103[_0x39de('0x2f')][_0x39de('0x3b')]){_0x497f1a[_0x39de('0x38')]=_[_0x39de('0x3c')](_0x497f1a['where'],{'$or':_[_0x39de('0x2a')](_0x3760c7,function(_0x3dd32d){if(_0x3dd32d[_0x39de('0x2d')]!=='VIRTUAL'){var _0x6f1636={};_0x6f1636[_0x3dd32d[_0x39de('0x27')]]={'$like':'%'+_0x2db103[_0x39de('0x2f')][_0x39de('0x3b')]+'%'};return _0x6f1636;}})});}_0x497f1a=_['merge']({},_0x497f1a,_0x2db103['options']);var _0x156310={'where':_0x497f1a[_0x39de('0x38')]};return db[_0x39de('0x3d')][_0x39de('0x1d')](_0x156310)['then'](function(_0x71c4b6){_0x2ca57d[_0x39de('0x1d')]=_0x71c4b6;if(_0x2db103[_0x39de('0x2f')][_0x39de('0x3e')]){_0x497f1a[_0x39de('0x3f')]=[{'all':!![]}];}return db[_0x39de('0x3d')][_0x39de('0x40')](_0x497f1a);})[_0x39de('0x21')](function(_0x5ad678){_0x2ca57d[_0x39de('0x41')]=_0x5ad678;return _0x2ca57d;})[_0x39de('0x21')](respondWithFilteredResult(_0x414647,_0x497f1a))[_0x39de('0x42')](handleError(_0x414647,null));};exports['show']=function(_0x1bfc75,_0x796fac){var _0x2c0503={'raw':![],'where':{'id':_0x1bfc75[_0x39de('0x43')]['id']}},_0x49d4a9={};_0x49d4a9[_0x39de('0x2e')]=_[_0x39de('0x30')](db['VoiceChanSpy'][_0x39de('0x2b')]);_0x49d4a9[_0x39de('0x2f')]=_[_0x39de('0x30')](_0x1bfc75[_0x39de('0x2f')]);_0x49d4a9['filters']=_[_0x39de('0x31')](_0x49d4a9[_0x39de('0x2e')],_0x49d4a9['query']);_0x2c0503['attributes']=_['intersection'](_0x49d4a9[_0x39de('0x2e')],qs[_0x39de('0x33')](_0x1bfc75[_0x39de('0x2f')][_0x39de('0x33')]));_0x2c0503[_0x39de('0x32')]=_0x2c0503[_0x39de('0x32')]['length']?_0x2c0503[_0x39de('0x32')]:_0x49d4a9[_0x39de('0x2e')];if(_0x1bfc75[_0x39de('0x2f')]['includeAll']){_0x2c0503[_0x39de('0x3f')]=[{'all':!![]}];}_0x2c0503=_[_0x39de('0x3c')]({},_0x2c0503,_0x1bfc75['options']);return db['VoiceChanSpy'][_0x39de('0x44')](_0x2c0503)[_0x39de('0x21')](handleEntityNotFound(_0x796fac,null))['then'](respondWithResult(_0x796fac,null))[_0x39de('0x42')](handleError(_0x796fac,null));};exports[_0x39de('0x45')]=function(_0x49514c,_0x1674da){return db[_0x39de('0x3d')][_0x39de('0x45')](_0x49514c[_0x39de('0x46')],{})[_0x39de('0x21')](function(_0x4caace){var _0x18abca=_0x49514c[_0x39de('0x47')]['get']({'plain':!![]});if(!_0x18abca)throw new Error(_0x39de('0x48'));if(_0x18abca[_0x39de('0x49')]==='user'){var _0x576a40=_0x4caace[_0x39de('0x22')]({'plain':!![]});var _0x5c473c=_0x39de('0x23');return db['UserProfileSection'][_0x39de('0x44')]({'where':{'name':_0x5c473c,'userProfileId':_0x18abca[_0x39de('0x4a')]},'raw':!![]})[_0x39de('0x21')](function(_0x58a177){if(_0x58a177&&_0x58a177[_0x39de('0x4b')]===0x0){return db[_0x39de('0x4c')][_0x39de('0x45')]({'name':_0x576a40['name'],'resourceId':_0x576a40['id'],'type':_0x58a177[_0x39de('0x27')],'sectionId':_0x58a177['id']},{})[_0x39de('0x21')](function(){return _0x4caace;});}else{return _0x4caace;}})['catch'](function(_0x53baea){logger[_0x39de('0x26')](_0x39de('0x4d'),_0x53baea);throw _0x53baea;});}return _0x4caace;})[_0x39de('0x21')](respondWithResult(_0x1674da,0xc9))[_0x39de('0x42')](handleError(_0x1674da,null));};exports[_0x39de('0x4e')]=function(_0x39ba53,_0x17241c){if(_0x39ba53[_0x39de('0x46')]['id']){delete _0x39ba53[_0x39de('0x46')]['id'];}return db['VoiceChanSpy'][_0x39de('0x44')]({'where':{'id':_0x39ba53['params']['id']}})[_0x39de('0x21')](handleEntityNotFound(_0x17241c,null))[_0x39de('0x21')](saveUpdates(_0x39ba53[_0x39de('0x46')],null))[_0x39de('0x21')](respondWithResult(_0x17241c,null))['catch'](handleError(_0x17241c,null));};exports[_0x39de('0x24')]=function(_0x1f5ac0,_0x38b0fa){return db[_0x39de('0x3d')][_0x39de('0x44')]({'where':{'id':_0x1f5ac0['params']['id']}})['then'](handleEntityNotFound(_0x38b0fa,null))[_0x39de('0x21')](removeEntity(_0x38b0fa,null))['catch'](handleError(_0x38b0fa,null));};
\ No newline at end of file
+var _0xe2cc=['merge','VIRTUAL','includeAll','include','VoiceChanSpy','findAll','rows','show','params','options','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','get','ChanSpies','UserProfileResource','sendStatus','error','stack','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter'];(function(_0x138443,_0xd4c791){var _0x3bc680=function(_0x42d02e){while(--_0x42d02e){_0x138443['push'](_0x138443['shift']());}};_0x3bc680(++_0xd4c791);}(_0xe2cc,0x69));var _0xce2c=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xe2cc[_0x432682];return _0x463d05;};'use strict';var emlformat=require(_0xce2c('0x0'));var rimraf=require(_0xce2c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xce2c('0x2'));var moment=require(_0xce2c('0x3'));var BPromise=require(_0xce2c('0x4'));var Mustache=require(_0xce2c('0x5'));var util=require(_0xce2c('0x6'));var path=require(_0xce2c('0x7'));var sox=require(_0xce2c('0x8'));var csv=require(_0xce2c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xce2c('0xa'));var squel=require(_0xce2c('0xb'));var crypto=require(_0xce2c('0xc'));var jsforce=require(_0xce2c('0xd'));var deskjs=require(_0xce2c('0xe'));var toCsv=require(_0xce2c('0x9'));var querystring=require('querystring');var Papa=require(_0xce2c('0xf'));var Redis=require(_0xce2c('0x10'));var authService=require(_0xce2c('0x11'));var qs=require(_0xce2c('0x12'));var as=require(_0xce2c('0x13'));var hardwareService=require(_0xce2c('0x14'));var logger=require(_0xce2c('0x15'))(_0xce2c('0x16'));var utils=require(_0xce2c('0x17'));var config=require(_0xce2c('0x18'));var licenseUtil=require(_0xce2c('0x19'));var db=require(_0xce2c('0x1a'))['db'];function respondWithStatusCode(_0x2f3b17,_0x27928d){_0x27928d=_0x27928d||0xcc;return function(_0x2421f6){if(_0x2421f6){return _0x2f3b17['sendStatus'](_0x27928d);}return _0x2f3b17['status'](_0x27928d)[_0xce2c('0x1b')]();};}function respondWithResult(_0x57c898,_0x214c62){_0x214c62=_0x214c62||0xc8;return function(_0x179855){if(_0x179855){return _0x57c898[_0xce2c('0x1c')](_0x214c62)[_0xce2c('0x1d')](_0x179855);}};}function respondWithFilteredResult(_0x4873e6,_0xb99213){return function(_0x1c3046){if(_0x1c3046){var _0x146830=typeof _0xb99213[_0xce2c('0x1e')]===_0xce2c('0x1f')&&typeof _0xb99213[_0xce2c('0x20')]===_0xce2c('0x1f');var _0x561b9e=_0x1c3046[_0xce2c('0x21')];var _0x35bc08=_0x146830?0x0:_0xb99213[_0xce2c('0x1e')];var _0x151422=_0x146830?_0x1c3046[_0xce2c('0x21')]:_0xb99213['offset']+_0xb99213[_0xce2c('0x20')];var _0xcc8a80;if(_0x151422>=_0x561b9e){_0x151422=_0x561b9e;_0xcc8a80=0xc8;}else{_0xcc8a80=0xce;}_0x4873e6['status'](_0xcc8a80);return _0x4873e6['set'](_0xce2c('0x22'),_0x35bc08+'-'+_0x151422+'/'+_0x561b9e)[_0xce2c('0x1d')](_0x1c3046);}return null;};}function patchUpdates(_0x43ee21){return function(_0x2f409c){try{jsonpatch[_0xce2c('0x23')](_0x2f409c,_0x43ee21,!![]);}catch(_0x228bf3){return BPromise[_0xce2c('0x24')](_0x228bf3);}return _0x2f409c['save']();};}function saveUpdates(_0x30380e,_0xb8057b){return function(_0x399f67){if(_0x399f67){return _0x399f67[_0xce2c('0x25')](_0x30380e)[_0xce2c('0x26')](function(_0x1c8bb6){return _0x1c8bb6;});}return null;};}function removeEntity(_0x1e263d,_0x39880d){return function(_0x451e86){if(_0x451e86){return _0x451e86[_0xce2c('0x27')]()['then'](function(){var _0x452cfa=_0x451e86[_0xce2c('0x28')]({'plain':!![]});var _0x333471=_0xce2c('0x29');return db[_0xce2c('0x2a')][_0xce2c('0x27')]({'where':{'type':_0x333471,'resourceId':_0x452cfa['id']}})['then'](function(){return _0x451e86;});})[_0xce2c('0x26')](function(){_0x1e263d['status'](0xcc)[_0xce2c('0x1b')]();});}};}function handleEntityNotFound(_0x1aea2c,_0xbb1756){return function(_0x2b6ce6){if(!_0x2b6ce6){_0x1aea2c[_0xce2c('0x2b')](0x194);}return _0x2b6ce6;};}function handleError(_0x19846d,_0x253ca2){_0x253ca2=_0x253ca2||0x1f4;return function(_0x32caae){logger[_0xce2c('0x2c')](_0x32caae[_0xce2c('0x2d')]);if(_0x32caae[_0xce2c('0x2e')]){delete _0x32caae[_0xce2c('0x2e')];}_0x19846d[_0xce2c('0x1c')](_0x253ca2)['send'](_0x32caae);};}exports[_0xce2c('0x2f')]=function(_0xc2cff6,_0x472a5f){var _0x371a3b={},_0x1a057b={},_0x59b8cd={'count':0x0,'rows':[]};var _0x1d0bfd=_[_0xce2c('0x30')](db['VoiceChanSpy'][_0xce2c('0x31')],function(_0x1a2ae7){return{'name':_0x1a2ae7[_0xce2c('0x32')],'type':_0x1a2ae7[_0xce2c('0x33')][_0xce2c('0x34')]};});_0x1a057b['model']=_[_0xce2c('0x30')](_0x1d0bfd,'name');_0x1a057b[_0xce2c('0x35')]=_[_0xce2c('0x36')](_0xc2cff6['query']);_0x1a057b[_0xce2c('0x37')]=_[_0xce2c('0x38')](_0x1a057b[_0xce2c('0x39')],_0x1a057b[_0xce2c('0x35')]);_0x371a3b['attributes']=_[_0xce2c('0x38')](_0x1a057b[_0xce2c('0x39')],qs['fields'](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x3a')]));_0x371a3b[_0xce2c('0x3b')]=_0x371a3b[_0xce2c('0x3b')][_0xce2c('0x3c')]?_0x371a3b[_0xce2c('0x3b')]:_0x1a057b[_0xce2c('0x39')];if(!_0xc2cff6[_0xce2c('0x35')]['hasOwnProperty'](_0xce2c('0x3d'))){_0x371a3b[_0xce2c('0x20')]=qs['limit'](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x20')]);_0x371a3b[_0xce2c('0x1e')]=qs[_0xce2c('0x1e')](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x1e')]);}_0x371a3b[_0xce2c('0x3e')]=qs[_0xce2c('0x3f')](_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x3f')]);_0x371a3b[_0xce2c('0x40')]=qs['filters'](_[_0xce2c('0x41')](_0xc2cff6[_0xce2c('0x35')],_0x1a057b[_0xce2c('0x37')]),_0x1d0bfd);if(_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x42')]){_0x371a3b[_0xce2c('0x40')]=_[_0xce2c('0x43')](_0x371a3b[_0xce2c('0x40')],{'$or':_[_0xce2c('0x30')](_0x1d0bfd,function(_0x2a4775){if(_0x2a4775[_0xce2c('0x33')]!==_0xce2c('0x44')){var _0x45ab99={};_0x45ab99[_0x2a4775[_0xce2c('0x2e')]]={'$like':'%'+_0xc2cff6['query']['filter']+'%'};return _0x45ab99;}})});}_0x371a3b=_['merge']({},_0x371a3b,_0xc2cff6['options']);var _0x35f35f={'where':_0x371a3b[_0xce2c('0x40')]};return db['VoiceChanSpy']['count'](_0x35f35f)[_0xce2c('0x26')](function(_0x29a022){_0x59b8cd[_0xce2c('0x21')]=_0x29a022;if(_0xc2cff6[_0xce2c('0x35')][_0xce2c('0x45')]){_0x371a3b[_0xce2c('0x46')]=[{'all':!![]}];}return db[_0xce2c('0x47')][_0xce2c('0x48')](_0x371a3b);})['then'](function(_0x8bbc9a){_0x59b8cd[_0xce2c('0x49')]=_0x8bbc9a;return _0x59b8cd;})[_0xce2c('0x26')](respondWithFilteredResult(_0x472a5f,_0x371a3b))['catch'](handleError(_0x472a5f,null));};exports[_0xce2c('0x4a')]=function(_0x3b7223,_0x4cd90b){var _0x5e1127={'raw':![],'where':{'id':_0x3b7223[_0xce2c('0x4b')]['id']}},_0x22060b={};_0x22060b['model']=_['keys'](db['VoiceChanSpy'][_0xce2c('0x31')]);_0x22060b[_0xce2c('0x35')]=_['keys'](_0x3b7223[_0xce2c('0x35')]);_0x22060b[_0xce2c('0x37')]=_['intersection'](_0x22060b['model'],_0x22060b['query']);_0x5e1127[_0xce2c('0x3b')]=_['intersection'](_0x22060b[_0xce2c('0x39')],qs[_0xce2c('0x3a')](_0x3b7223['query'][_0xce2c('0x3a')]));_0x5e1127[_0xce2c('0x3b')]=_0x5e1127[_0xce2c('0x3b')][_0xce2c('0x3c')]?_0x5e1127['attributes']:_0x22060b[_0xce2c('0x39')];if(_0x3b7223[_0xce2c('0x35')][_0xce2c('0x45')]){_0x5e1127['include']=[{'all':!![]}];}_0x5e1127=_[_0xce2c('0x43')]({},_0x5e1127,_0x3b7223[_0xce2c('0x4c')]);return db['VoiceChanSpy'][_0xce2c('0x4d')](_0x5e1127)['then'](handleEntityNotFound(_0x4cd90b,null))[_0xce2c('0x26')](respondWithResult(_0x4cd90b,null))[_0xce2c('0x4e')](handleError(_0x4cd90b,null));};exports[_0xce2c('0x4f')]=function(_0x23fb2b,_0xff694f){return db[_0xce2c('0x47')]['create'](_0x23fb2b[_0xce2c('0x50')],{})[_0xce2c('0x26')](function(_0x4025af){var _0x2644c2=_0x23fb2b[_0xce2c('0x51')][_0xce2c('0x28')]({'plain':!![]});if(!_0x2644c2)throw new Error(_0xce2c('0x52'));if(_0x2644c2[_0xce2c('0x53')]===_0xce2c('0x51')){var _0x7b381f=_0x4025af[_0xce2c('0x28')]({'plain':!![]});var _0x29406c=_0xce2c('0x29');return db['UserProfileSection']['find']({'where':{'name':_0x29406c,'userProfileId':_0x2644c2['userProfileId']},'raw':!![]})[_0xce2c('0x26')](function(_0x2d50c1){if(_0x2d50c1&&_0x2d50c1[_0xce2c('0x54')]===0x0){return db[_0xce2c('0x2a')][_0xce2c('0x4f')]({'name':_0x7b381f[_0xce2c('0x2e')],'resourceId':_0x7b381f['id'],'type':_0x2d50c1[_0xce2c('0x2e')],'sectionId':_0x2d50c1['id']},{})[_0xce2c('0x26')](function(){return _0x4025af;});}else{return _0x4025af;}})['catch'](function(_0xb420b0){logger['error'](_0xce2c('0x55'),_0xb420b0);throw _0xb420b0;});}return _0x4025af;})[_0xce2c('0x26')](respondWithResult(_0xff694f,0xc9))[_0xce2c('0x4e')](handleError(_0xff694f,null));};exports[_0xce2c('0x25')]=function(_0x52a479,_0x107429){if(_0x52a479[_0xce2c('0x50')]['id']){delete _0x52a479['body']['id'];}return db[_0xce2c('0x47')][_0xce2c('0x4d')]({'where':{'id':_0x52a479['params']['id']}})[_0xce2c('0x26')](handleEntityNotFound(_0x107429,null))[_0xce2c('0x26')](saveUpdates(_0x52a479[_0xce2c('0x50')],null))[_0xce2c('0x26')](respondWithResult(_0x107429,null))[_0xce2c('0x4e')](handleError(_0x107429,null));};exports[_0xce2c('0x27')]=function(_0xa33a8d,_0x47741a){return db[_0xce2c('0x47')]['find']({'where':{'id':_0xa33a8d[_0xce2c('0x4b')]['id']}})[_0xce2c('0x26')](handleEntityNotFound(_0x47741a,null))[_0xce2c('0x26')](removeEntity(_0x47741a,null))[_0xce2c('0x4e')](handleError(_0x47741a,null));};
\ No newline at end of file
index e6f9142..1d347ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0432=['voice_chanspy','then','VoiceExtension','destroy','bulkCreate','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','prefix','system','push','Set','CDR(type)=%s','record','merge','MixMonitor','${UNIQUEID}.%s,a','auth','Authenticate','password','ChanSpy','format','name','options','join','StopMixMonitor','length','concat','internal','findAll','agent','catch','exports','models','define','VoiceChanSpy'];(function(_0xfe9365,_0x4f9b01){var _0x419138=function(_0xf916b6){while(--_0xf916b6){_0xfe9365['push'](_0xfe9365['shift']());}};_0x419138(++_0x4f9b01);}(_0x0432,0xe9));var _0x2043=function(_0x50315b,_0x4ec280){_0x50315b=_0x50315b-0x0;var _0x13e0a9=_0x0432[_0x50315b];return _0x13e0a9;};'use strict';var _=require('lodash');var util=require('util');var BPromise=require(_0x2043('0x0'));var attributes=require(_0x2043('0x1'));var getUserApplications=function(_0x4d24fa,_0x22ff70,_0xc8fa0){var _0x483ab8=0x1;var _0x12c2f3=[];var _0x1378ee={'context':_0x22ff70[_0x2043('0x2')]||_0x2043('0x3'),'exten':util['format'](_0x2043('0x4'),_0x4d24fa[_0x2043('0x5')],_0xc8fa0),'type':_0x2043('0x6'),'isApp':![],'ChanSpyId':_0x4d24fa['id'],'UserId':_0x22ff70['id']};_0x12c2f3[_0x2043('0x7')](_['merge']({'app':_0x2043('0x8'),'appdata':util['format'](_0x2043('0x9'),'chanspy'),'priority':_0x483ab8++},_0x1378ee));if(_0x4d24fa[_0x2043('0xa')]){_0x12c2f3[_0x2043('0x7')](_[_0x2043('0xb')]({'app':_0x2043('0xc'),'appdata':util['format'](_0x2043('0xd'),_0x4d24fa['recordingFormat']),'priority':_0x483ab8++},_0x1378ee));}if(_0x4d24fa[_0x2043('0xe')]){_0x12c2f3[_0x2043('0x7')](_['merge']({'app':_0x2043('0xf'),'appdata':_0x4d24fa[_0x2043('0x10')],'priority':_0x483ab8++},_0x1378ee));}_0x12c2f3[_0x2043('0x7')](_[_0x2043('0xb')]({'app':_0x2043('0x11'),'appdata':util[_0x2043('0x12')]('SIP/%s,%s',_0x22ff70[_0x2043('0x13')],_0x4d24fa[_0x2043('0x14')]?_0x4d24fa[_0x2043('0x14')][_0x2043('0x15')](''):''),'priority':_0x483ab8++},_0x1378ee));if(_0x4d24fa[_0x2043('0xa')]){_0x12c2f3[_0x2043('0x7')](_[_0x2043('0xb')]({'app':_0x2043('0x16'),'priority':_0x483ab8++},_0x1378ee));}return _0x12c2f3;};var getChanSpyApplications=function(_0x4e35b0,_0xe256fc){var _0x46ecc2=[];for(var _0x72d6f1=0x0,_0x5ee559=0x1;_0x72d6f1<_0xe256fc[_0x2043('0x17')];_0x72d6f1++,_0x5ee559=0x1){_0x46ecc2=_0x46ecc2[_0x2043('0x18')](getUserApplications(_0x4e35b0,_0xe256fc[_0x72d6f1],_0xe256fc[_0x72d6f1][_0x2043('0x19')]));if(_0xe256fc[_0x72d6f1]['internal']!=_0xe256fc[_0x72d6f1][_0x2043('0x13')]){_0x46ecc2=_0x46ecc2['concat'](getUserApplications(_0x4e35b0,_0xe256fc[_0x72d6f1],_0xe256fc[_0x72d6f1][_0x2043('0x13')]));}}return _0x46ecc2;};var getChanSpyPromise=function(_0x37e6df,_0x2cc74d){return new BPromise(function(_0x815d87,_0x208aca){return _0x37e6df['User'][_0x2043('0x1a')]({'attributes':['id',_0x2043('0x13'),_0x2043('0x19')],'where':{'role':_0x2043('0x1b'),'chanspy':!![]},'raw':!![]})['then'](function(_0x436e7b){if(_0x436e7b){return _0x815d87(getChanSpyApplications(_0x2cc74d,_0x436e7b));}return _0x815d87([]);})[_0x2043('0x1c')](function(_0x1998ac){_0x208aca(_0x1998ac);});});};module[_0x2043('0x1d')]=function(_0x235165,_0x414bf4){var _0x37b07f=_0x235165[_0x2043('0x1e')];return _0x235165[_0x2043('0x1f')](_0x2043('0x20'),attributes,{'tableName':_0x2043('0x21'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x595f89,_0x412774,_0x38e018){return getChanSpyPromise(_0x37b07f,_0x595f89)[_0x2043('0x22')](function(_0x2ba8e6){if(_0x2ba8e6&&_0x2ba8e6[_0x2043('0x17')]){return _0x37b07f[_0x2043('0x23')]['bulkCreate'](_0x2ba8e6);}})['then'](function(){_0x38e018();})[_0x2043('0x1c')](function(_0x28c83d){_0x38e018(_0x28c83d);});},'afterUpdate':function(_0x1fc164,_0x59291e,_0x283a37){return _0x37b07f[_0x2043('0x23')][_0x2043('0x24')]({'where':{'ChanSpyId':_0x1fc164['id']}})[_0x2043('0x22')](function(){return getChanSpyPromise(_0x37b07f,_0x1fc164);})[_0x2043('0x22')](function(_0xde5156){if(_0xde5156&&_0xde5156[_0x2043('0x17')]){return _0x37b07f[_0x2043('0x23')][_0x2043('0x25')](_0xde5156);}})[_0x2043('0x22')](function(){_0x283a37();})[_0x2043('0x1c')](function(_0x2d1146){_0x283a37(_0x2d1146);});},'afterDestroy':function(_0x46924d,_0x4f2e95,_0x55481c){return _0x37b07f[_0x2043('0x23')][_0x2043('0x24')]({'where':{'ChanSpyId':_0x46924d['id']}})[_0x2043('0x22')](function(){_0x55481c();})[_0x2043('0x1c')](function(_0x2695d8){_0x55481c(_0x2695d8);});}}});};
\ No newline at end of file
+var _0x12b0=['push','merge','Set','chanspy','record','auth','Authenticate','ChanSpy','SIP/%s,%s','name','options','join','StopMixMonitor','concat','internal','User','findAll','agent','then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension','bulkCreate','destroy','lodash','util','bluebird','./voiceChanSpy.attributes','context','from-sip','format','%s%s','prefix','system'];(function(_0x458a20,_0x206f85){var _0x3cce8a=function(_0x41b460){while(--_0x41b460){_0x458a20['push'](_0x458a20['shift']());}};_0x3cce8a(++_0x206f85);}(_0x12b0,0x12e));var _0x012b=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x12b0[_0x19950b];return _0x3c6b41;};'use strict';var _=require(_0x012b('0x0'));var util=require(_0x012b('0x1'));var BPromise=require(_0x012b('0x2'));var attributes=require(_0x012b('0x3'));var getUserApplications=function(_0x1ee49f,_0x2286b6,_0x2636a1){var _0x17c329=0x1;var _0x352f83=[];var _0x28830f={'context':_0x2286b6[_0x012b('0x4')]||_0x012b('0x5'),'exten':util[_0x012b('0x6')](_0x012b('0x7'),_0x1ee49f[_0x012b('0x8')],_0x2636a1),'type':_0x012b('0x9'),'isApp':![],'ChanSpyId':_0x1ee49f['id'],'UserId':_0x2286b6['id']};_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':_0x012b('0xc'),'appdata':util[_0x012b('0x6')]('CDR(type)=%s',_0x012b('0xd')),'priority':_0x17c329++},_0x28830f));if(_0x1ee49f[_0x012b('0xe')]){_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':'MixMonitor','appdata':util['format']('${UNIQUEID}.%s,a',_0x1ee49f['recordingFormat']),'priority':_0x17c329++},_0x28830f));}if(_0x1ee49f[_0x012b('0xf')]){_0x352f83[_0x012b('0xa')](_['merge']({'app':_0x012b('0x10'),'appdata':_0x1ee49f['password'],'priority':_0x17c329++},_0x28830f));}_0x352f83[_0x012b('0xa')](_['merge']({'app':_0x012b('0x11'),'appdata':util[_0x012b('0x6')](_0x012b('0x12'),_0x2286b6[_0x012b('0x13')],_0x1ee49f[_0x012b('0x14')]?_0x1ee49f[_0x012b('0x14')][_0x012b('0x15')](''):''),'priority':_0x17c329++},_0x28830f));if(_0x1ee49f[_0x012b('0xe')]){_0x352f83[_0x012b('0xa')](_[_0x012b('0xb')]({'app':_0x012b('0x16'),'priority':_0x17c329++},_0x28830f));}return _0x352f83;};var getChanSpyApplications=function(_0x2e2282,_0x43a425){var _0x1166f8=[];for(var _0x1c1b89=0x0,_0x4f5ce7=0x1;_0x1c1b89<_0x43a425['length'];_0x1c1b89++,_0x4f5ce7=0x1){_0x1166f8=_0x1166f8[_0x012b('0x17')](getUserApplications(_0x2e2282,_0x43a425[_0x1c1b89],_0x43a425[_0x1c1b89][_0x012b('0x18')]));if(_0x43a425[_0x1c1b89][_0x012b('0x18')]!=_0x43a425[_0x1c1b89]['name']){_0x1166f8=_0x1166f8[_0x012b('0x17')](getUserApplications(_0x2e2282,_0x43a425[_0x1c1b89],_0x43a425[_0x1c1b89][_0x012b('0x13')]));}}return _0x1166f8;};var getChanSpyPromise=function(_0x470960,_0x3a5820){return new BPromise(function(_0x5984e6,_0x49b388){return _0x470960[_0x012b('0x19')][_0x012b('0x1a')]({'attributes':['id',_0x012b('0x13'),_0x012b('0x18')],'where':{'role':_0x012b('0x1b'),'chanspy':!![]},'raw':!![]})[_0x012b('0x1c')](function(_0x855023){if(_0x855023){return _0x5984e6(getChanSpyApplications(_0x3a5820,_0x855023));}return _0x5984e6([]);})[_0x012b('0x1d')](function(_0x518c20){_0x49b388(_0x518c20);});});};module[_0x012b('0x1e')]=function(_0x1437b4,_0x829112){var _0x5b4712=_0x1437b4[_0x012b('0x1f')];return _0x1437b4[_0x012b('0x20')](_0x012b('0x21'),attributes,{'tableName':_0x012b('0x22'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x447cf0,_0x2a6b74,_0x18f9c7){return getChanSpyPromise(_0x5b4712,_0x447cf0)['then'](function(_0x4bcdac){if(_0x4bcdac&&_0x4bcdac[_0x012b('0x23')]){return _0x5b4712[_0x012b('0x24')][_0x012b('0x25')](_0x4bcdac);}})[_0x012b('0x1c')](function(){_0x18f9c7();})[_0x012b('0x1d')](function(_0x2cbe32){_0x18f9c7(_0x2cbe32);});},'afterUpdate':function(_0x53c8c1,_0x540499,_0x1ac691){return _0x5b4712['VoiceExtension'][_0x012b('0x26')]({'where':{'ChanSpyId':_0x53c8c1['id']}})[_0x012b('0x1c')](function(){return getChanSpyPromise(_0x5b4712,_0x53c8c1);})[_0x012b('0x1c')](function(_0x4109a0){if(_0x4109a0&&_0x4109a0[_0x012b('0x23')]){return _0x5b4712[_0x012b('0x24')][_0x012b('0x25')](_0x4109a0);}})[_0x012b('0x1c')](function(){_0x1ac691();})[_0x012b('0x1d')](function(_0x483233){_0x1ac691(_0x483233);});},'afterDestroy':function(_0x2ceed9,_0x2cf385,_0x368d87){return _0x5b4712['VoiceExtension'][_0x012b('0x26')]({'where':{'ChanSpyId':_0x2ceed9['id']}})['then'](function(){_0x368d87();})[_0x012b('0x1d')](function(_0x51a7a7){_0x368d87(_0x51a7a7);});}}});};
\ No newline at end of file
index f31edce..7c95d6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa588=['stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','VoiceChanSpy,\x20%s,\x20%s,\x20%s'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xa588,0xe1));var _0x8a58=function(_0x5925e9,_0x51b161){_0x5925e9=_0x5925e9-0x0;var _0x72efff=_0xa588[_0x5925e9];return _0x72efff;};'use strict';var _=require('lodash');var util=require(_0x8a58('0x0'));var moment=require(_0x8a58('0x1'));var BPromise=require(_0x8a58('0x2'));var rs=require(_0x8a58('0x3'));var fs=require('fs');var Redis=require(_0x8a58('0x4'));var db=require(_0x8a58('0x5'))['db'];var utils=require(_0x8a58('0x6'));var logger=require(_0x8a58('0x7'))(_0x8a58('0x8'));var config=require('../../config/environment');var jayson=require(_0x8a58('0x9'));var client=jayson[_0x8a58('0xa')][_0x8a58('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x35d5ad,_0xe0af18,_0x140f99){return new BPromise(function(_0x77b421,_0x585376){return client['request'](_0x35d5ad,_0x140f99)[_0x8a58('0xc')](function(_0x39a20e){logger[_0x8a58('0xd')](_0x8a58('0xe'),_0xe0af18,_0x8a58('0xf'));logger['debug'](_0x8a58('0x10'),_0xe0af18,_0x8a58('0xf'),JSON[_0x8a58('0x11')](_0x39a20e));if(_0x39a20e[_0x8a58('0x12')]){if(_0x39a20e['error']['code']===0x1f4){logger[_0x8a58('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0xe0af18,_0x39a20e[_0x8a58('0x12')][_0x8a58('0x13')]);return _0x585376(_0x39a20e['error'][_0x8a58('0x13')]);}logger[_0x8a58('0x12')]('VoiceChanSpy,\x20%s,\x20%s',_0xe0af18,_0x39a20e[_0x8a58('0x12')][_0x8a58('0x13')]);return _0x77b421(_0x39a20e['error'][_0x8a58('0x13')]);}else{logger[_0x8a58('0xd')](_0x8a58('0xe'),_0xe0af18,_0x8a58('0xf'));_0x77b421(_0x39a20e[_0x8a58('0x14')][_0x8a58('0x13')]);}})[_0x8a58('0x15')](function(_0x49ee0e){logger['error'](_0x8a58('0xe'),_0xe0af18,_0x49ee0e);_0x585376(_0x49ee0e);});});}
\ No newline at end of file
+var _0xb248=['lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','http','request','then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch'];(function(_0x4b375c,_0x48d684){var _0x4fd5ef=function(_0x2f21d9){while(--_0x2f21d9){_0x4b375c['push'](_0x4b375c['shift']());}};_0x4fd5ef(++_0x48d684);}(_0xb248,0xc6));var _0x8b24=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xb248[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0x8b24('0x0'));var util=require('util');var moment=require(_0x8b24('0x1'));var BPromise=require(_0x8b24('0x2'));var rs=require(_0x8b24('0x3'));var fs=require('fs');var Redis=require(_0x8b24('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x8b24('0x5'));var logger=require(_0x8b24('0x6'))('rpc');var config=require(_0x8b24('0x7'));var jayson=require(_0x8b24('0x8'));var client=jayson['client'][_0x8b24('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4705e0,_0x588ca8,_0x3198a2){return new BPromise(function(_0x51bbad,_0x43b851){return client[_0x8b24('0xa')](_0x4705e0,_0x3198a2)[_0x8b24('0xb')](function(_0x4ad0db){logger[_0x8b24('0xc')](_0x8b24('0xd'),_0x588ca8,_0x8b24('0xe'));logger[_0x8b24('0xf')](_0x8b24('0x10'),_0x588ca8,_0x8b24('0xe'),JSON[_0x8b24('0x11')](_0x4ad0db));if(_0x4ad0db[_0x8b24('0x12')]){if(_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x13')]===0x1f4){logger[_0x8b24('0x12')](_0x8b24('0xd'),_0x588ca8,_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);return _0x43b851(_0x4ad0db['error']['message']);}logger[_0x8b24('0x12')](_0x8b24('0xd'),_0x588ca8,_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);return _0x51bbad(_0x4ad0db[_0x8b24('0x12')][_0x8b24('0x14')]);}else{logger[_0x8b24('0xc')](_0x8b24('0xd'),_0x588ca8,'request\x20sent');_0x51bbad(_0x4ad0db['result']['message']);}})[_0x8b24('0x15')](function(_0x523863){logger['error'](_0x8b24('0xd'),_0x588ca8,_0x523863);_0x43b851(_0x523863);});});}
\ No newline at end of file
index 21c7869..d5b2bed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa230=['put','/:id','update','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index','post'];(function(_0x59b201,_0x2203dd){var _0x2b39e2=function(_0x533a73){while(--_0x533a73){_0x59b201['push'](_0x59b201['shift']());}};_0x2b39e2(++_0x2203dd);}(_0xa230,0x65));var _0x0a23=function(_0x1cd07f,_0x2c1871){_0x1cd07f=_0x1cd07f-0x0;var _0x566181=_0xa230[_0x1cd07f];return _0x566181;};'use strict';var multer=require(_0x0a23('0x0'));var util=require(_0x0a23('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a23('0x2')]();var fs_extra=require(_0x0a23('0x3'));var auth=require(_0x0a23('0x4'));var interaction=require(_0x0a23('0x5'));var config=require(_0x0a23('0x6'));var controller=require(_0x0a23('0x7'));router['get']('/',auth[_0x0a23('0x8')](),controller[_0x0a23('0x9')]);router['get']('/:id',auth[_0x0a23('0x8')](),controller['show']);router[_0x0a23('0xa')]('/',auth[_0x0a23('0x8')](),controller['create']);router[_0x0a23('0xb')](_0x0a23('0xc'),auth[_0x0a23('0x8')](),controller[_0x0a23('0xd')]);router['delete'](_0x0a23('0xc'),auth[_0x0a23('0x8')](),controller[_0x0a23('0xe')]);module[_0x0a23('0xf')]=router;
\ No newline at end of file
+var _0xaacd=['get','/:id','show','post','create','put','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index'];(function(_0x3096f2,_0x45189f){var _0x1509af=function(_0x4156f4){while(--_0x4156f4){_0x3096f2['push'](_0x3096f2['shift']());}};_0x1509af(++_0x45189f);}(_0xaacd,0xf8));var _0xdaac=function(_0x2a81cb,_0xa8c94a){_0x2a81cb=_0x2a81cb-0x0;var _0xe02861=_0xaacd[_0x2a81cb];return _0xe02861;};'use strict';var multer=require(_0xdaac('0x0'));var util=require('util');var path=require(_0xdaac('0x1'));var timeout=require(_0xdaac('0x2'));var express=require(_0xdaac('0x3'));var router=express[_0xdaac('0x4')]();var fs_extra=require(_0xdaac('0x5'));var auth=require(_0xdaac('0x6'));var interaction=require(_0xdaac('0x7'));var config=require(_0xdaac('0x8'));var controller=require(_0xdaac('0x9'));router['get']('/',auth[_0xdaac('0xa')](),controller[_0xdaac('0xb')]);router[_0xdaac('0xc')](_0xdaac('0xd'),auth[_0xdaac('0xa')](),controller[_0xdaac('0xe')]);router[_0xdaac('0xf')]('/',auth[_0xdaac('0xa')](),controller[_0xdaac('0x10')]);router[_0xdaac('0x11')](_0xdaac('0xd'),auth[_0xdaac('0xa')](),controller['update']);router[_0xdaac('0x12')](_0xdaac('0xd'),auth['isAuthenticated'](),controller[_0xdaac('0x13')]);module['exports']=router;
\ No newline at end of file
index 92be812..ae035ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2109=['exports','STRING','name','BOOLEAN','sequelize'];(function(_0x1eda2b,_0x3c6187){var _0x3da4c9=function(_0x56f8ae){while(--_0x56f8ae){_0x1eda2b['push'](_0x1eda2b['shift']());}};_0x3da4c9(++_0x3c6187);}(_0x2109,0xdb));var _0x9210=function(_0x62e5cd,_0x2fb26b){_0x62e5cd=_0x62e5cd-0x0;var _0x368da3=_0x2109[_0x62e5cd];return _0x368da3;};'use strict';var Sequelize=require(_0x9210('0x0'));module[_0x9210('0x1')]={'name':{'type':Sequelize[_0x9210('0x2')],'unique':_0x9210('0x3')},'description':{'type':Sequelize[_0x9210('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x9210('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x2c13=['name','STRING'];(function(_0x26e5ce,_0x1434bd){var _0x5f14df=function(_0x186f5c){while(--_0x186f5c){_0x26e5ce['push'](_0x26e5ce['shift']());}};_0x5f14df(++_0x1434bd);}(_0x2c13,0x15b));var _0x32c1=function(_0x45275d,_0x35f242){_0x45275d=_0x45275d-0x0;var _0x27306d=_0x2c13[_0x45275d];return _0x27306d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x32c1('0x0')],'unique':_0x32c1('0x1')},'description':{'type':Sequelize[_0x32c1('0x0')],'allowNull':!![]},'defaultEntry':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0}};
\ No newline at end of file
index 832470a..6c21b2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42c9=['root','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','server/files/templates/context.ejs','join','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../mysqldb','jayson/promise','client','then','debug','VoiceContext,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','save','update','destroy','get','Contexts','UserProfileResource','name','send','index','map','VoiceContext','fieldName','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filters','pick','where','merge','VIRTUAL','includeAll','include','rows','show','params','rawAttributes','length','options','create','body','findAll','readFileSync'];(function(_0x24779f,_0x4b35b7){var _0x4f2180=function(_0x1dc458){while(--_0x1dc458){_0x24779f['push'](_0x24779f['shift']());}};_0x4f2180(++_0x4b35b7);}(_0x42c9,0x1ae));var _0x942c=function(_0x337748,_0x402b05){_0x337748=_0x337748-0x0;var _0x3bb03f=_0x42c9[_0x337748];return _0x3bb03f;};'use strict';var emlformat=require(_0x942c('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x942c('0x1'));var jsonpatch=require(_0x942c('0x2'));var rp=require(_0x942c('0x3'));var moment=require(_0x942c('0x4'));var BPromise=require(_0x942c('0x5'));var Mustache=require(_0x942c('0x6'));var util=require(_0x942c('0x7'));var path=require(_0x942c('0x8'));var sox=require(_0x942c('0x9'));var csv=require(_0x942c('0xa'));var ejs=require(_0x942c('0xb'));var fs=require('fs');var fs_extra=require(_0x942c('0xc'));var _=require(_0x942c('0xd'));var squel=require(_0x942c('0xe'));var crypto=require(_0x942c('0xf'));var jsforce=require(_0x942c('0x10'));var deskjs=require('desk.js');var toCsv=require(_0x942c('0xa'));var querystring=require(_0x942c('0x11'));var Papa=require(_0x942c('0x12'));var Redis=require('ioredis');var authService=require(_0x942c('0x13'));var qs=require(_0x942c('0x14'));var as=require(_0x942c('0x15'));var hardwareService=require(_0x942c('0x16'));var logger=require(_0x942c('0x17'))('api');var utils=require(_0x942c('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x942c('0x19'))['db'];var jayson=require(_0x942c('0x1a'));var client=jayson[_0x942c('0x1b')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55ad8e,_0x14e60f,_0x53715d,_0x43f72b){return new BPromise(function(_0x2578d6,_0x21a131){var _0xba4d41=_0x43f72b||client;return _0xba4d41['request'](_0x55ad8e,_0x53715d)[_0x942c('0x1c')](function(_0x16782a){logger['info']('VoiceContext,\x20%s,\x20%s',_0x14e60f,'request\x20sent');logger[_0x942c('0x1d')](_0x942c('0x1e'),_0x14e60f,_0x942c('0x1f'),JSON[_0x942c('0x20')](_0x16782a));if(_0x16782a[_0x942c('0x21')]){if(_0x16782a[_0x942c('0x21')][_0x942c('0x22')]===0x1f4){logger[_0x942c('0x21')](_0x942c('0x23'),_0x14e60f,_0x16782a[_0x942c('0x21')][_0x942c('0x24')]);return _0x21a131(_0x16782a[_0x942c('0x21')][_0x942c('0x24')]);}logger[_0x942c('0x21')]('VoiceContext,\x20%s,\x20%s',_0x14e60f,_0x16782a[_0x942c('0x21')][_0x942c('0x24')]);return _0x2578d6(_0x16782a[_0x942c('0x21')][_0x942c('0x24')]);}else{logger['info'](_0x942c('0x23'),_0x14e60f,'request\x20sent');_0x2578d6(_0x16782a[_0x942c('0x25')][_0x942c('0x24')]);}})[_0x942c('0x26')](function(_0x1c50fe){logger[_0x942c('0x21')](_0x942c('0x23'),_0x14e60f,_0x1c50fe);_0x21a131(_0x1c50fe);});});}function respondWithStatusCode(_0x5c470c,_0x4b72d5){_0x4b72d5=_0x4b72d5||0xcc;return function(_0x58f409){if(_0x58f409){return _0x5c470c[_0x942c('0x27')](_0x4b72d5);}return _0x5c470c[_0x942c('0x28')](_0x4b72d5)[_0x942c('0x29')]();};}function respondWithResult(_0x421449,_0x377d1f){_0x377d1f=_0x377d1f||0xc8;return function(_0x263f63){if(_0x263f63){return _0x421449[_0x942c('0x28')](_0x377d1f)[_0x942c('0x2a')](_0x263f63);}};}function respondWithFilteredResult(_0x44c255,_0x13061a){return function(_0x2200ed){if(_0x2200ed){var _0x4ab7cd=typeof _0x13061a[_0x942c('0x2b')]===_0x942c('0x2c')&&typeof _0x13061a[_0x942c('0x2d')]===_0x942c('0x2c');var _0x554878=_0x2200ed['count'];var _0x33286b=_0x4ab7cd?0x0:_0x13061a[_0x942c('0x2b')];var _0x2e9930=_0x4ab7cd?_0x2200ed[_0x942c('0x2e')]:_0x13061a[_0x942c('0x2b')]+_0x13061a[_0x942c('0x2d')];var _0x59761d;if(_0x2e9930>=_0x554878){_0x2e9930=_0x554878;_0x59761d=0xc8;}else{_0x59761d=0xce;}_0x44c255[_0x942c('0x28')](_0x59761d);return _0x44c255[_0x942c('0x2f')](_0x942c('0x30'),_0x33286b+'-'+_0x2e9930+'/'+_0x554878)[_0x942c('0x2a')](_0x2200ed);}return null;};}function patchUpdates(_0x4a90ba){return function(_0x22b8af){try{jsonpatch['apply'](_0x22b8af,_0x4a90ba,!![]);}catch(_0x17c13b){return BPromise['reject'](_0x17c13b);}return _0x22b8af[_0x942c('0x31')]();};}function saveUpdates(_0x402dca,_0x1c4a87){return function(_0x4ee512){if(_0x4ee512){return _0x4ee512[_0x942c('0x32')](_0x402dca)[_0x942c('0x1c')](function(_0x506ec4){return _0x506ec4;});}return null;};}function removeEntity(_0x305505,_0x112223){return function(_0x1da715){if(_0x1da715){return _0x1da715[_0x942c('0x33')]()[_0x942c('0x1c')](function(){var _0x392f8f=_0x1da715[_0x942c('0x34')]({'plain':!![]});var _0x5a22c0=_0x942c('0x35');return db[_0x942c('0x36')][_0x942c('0x33')]({'where':{'type':_0x5a22c0,'resourceId':_0x392f8f['id']}})[_0x942c('0x1c')](function(){return _0x1da715;});})[_0x942c('0x1c')](function(){_0x305505[_0x942c('0x28')](0xcc)[_0x942c('0x29')]();});}};}function handleEntityNotFound(_0x144927,_0x4c523a){return function(_0x498401){if(!_0x498401){_0x144927[_0x942c('0x27')](0x194);}return _0x498401;};}function handleError(_0x29b17f,_0x56f538){_0x56f538=_0x56f538||0x1f4;return function(_0x4b9fee){logger[_0x942c('0x21')](_0x4b9fee['stack']);if(_0x4b9fee[_0x942c('0x37')]){delete _0x4b9fee[_0x942c('0x37')];}_0x29b17f[_0x942c('0x28')](_0x56f538)[_0x942c('0x38')](_0x4b9fee);};}exports[_0x942c('0x39')]=function(_0x1069fd,_0x7a1bf){var _0x1a8d59={},_0x2275a7={},_0x1d007e={'count':0x0,'rows':[]};var _0x1da66b=_[_0x942c('0x3a')](db[_0x942c('0x3b')]['rawAttributes'],function(_0x2f192b){return{'name':_0x2f192b[_0x942c('0x3c')],'type':_0x2f192b[_0x942c('0x3d')][_0x942c('0x3e')]};});_0x2275a7[_0x942c('0x3f')]=_['map'](_0x1da66b,_0x942c('0x37'));_0x2275a7[_0x942c('0x40')]=_[_0x942c('0x41')](_0x1069fd[_0x942c('0x40')]);_0x2275a7['filters']=_[_0x942c('0x42')](_0x2275a7['model'],_0x2275a7[_0x942c('0x40')]);_0x1a8d59['attributes']=_[_0x942c('0x42')](_0x2275a7['model'],qs[_0x942c('0x43')](_0x1069fd['query'][_0x942c('0x43')]));_0x1a8d59[_0x942c('0x44')]=_0x1a8d59[_0x942c('0x44')]['length']?_0x1a8d59[_0x942c('0x44')]:_0x2275a7['model'];if(!_0x1069fd[_0x942c('0x40')][_0x942c('0x45')](_0x942c('0x46'))){_0x1a8d59[_0x942c('0x2d')]=qs['limit'](_0x1069fd[_0x942c('0x40')][_0x942c('0x2d')]);_0x1a8d59['offset']=qs[_0x942c('0x2b')](_0x1069fd[_0x942c('0x40')][_0x942c('0x2b')]);}_0x1a8d59[_0x942c('0x47')]=qs[_0x942c('0x48')](_0x1069fd[_0x942c('0x40')][_0x942c('0x48')]);_0x1a8d59['where']=qs[_0x942c('0x49')](_[_0x942c('0x4a')](_0x1069fd[_0x942c('0x40')],_0x2275a7['filters']),_0x1da66b);if(_0x1069fd[_0x942c('0x40')]['filter']){_0x1a8d59[_0x942c('0x4b')]=_[_0x942c('0x4c')](_0x1a8d59['where'],{'$or':_[_0x942c('0x3a')](_0x1da66b,function(_0x22a341){if(_0x22a341[_0x942c('0x3d')]!==_0x942c('0x4d')){var _0x3858a0={};_0x3858a0[_0x22a341[_0x942c('0x37')]]={'$like':'%'+_0x1069fd[_0x942c('0x40')]['filter']+'%'};return _0x3858a0;}})});}_0x1a8d59=_['merge']({},_0x1a8d59,_0x1069fd['options']);var _0x12debb={'where':_0x1a8d59['where']};return db['VoiceContext'][_0x942c('0x2e')](_0x12debb)[_0x942c('0x1c')](function(_0x3ec18b){_0x1d007e[_0x942c('0x2e')]=_0x3ec18b;if(_0x1069fd[_0x942c('0x40')][_0x942c('0x4e')]){_0x1a8d59[_0x942c('0x4f')]=[{'all':!![]}];}return db[_0x942c('0x3b')]['findAll'](_0x1a8d59);})['then'](function(_0x1141a6){_0x1d007e[_0x942c('0x50')]=_0x1141a6;return _0x1d007e;})[_0x942c('0x1c')](respondWithFilteredResult(_0x7a1bf,_0x1a8d59))[_0x942c('0x26')](handleError(_0x7a1bf,null));};exports[_0x942c('0x51')]=function(_0x103b68,_0x230993){var _0x38f042={'raw':![],'where':{'id':_0x103b68[_0x942c('0x52')]['id']}},_0x35280a={};_0x35280a['model']=_[_0x942c('0x41')](db[_0x942c('0x3b')][_0x942c('0x53')]);_0x35280a[_0x942c('0x40')]=_['keys'](_0x103b68[_0x942c('0x40')]);_0x35280a['filters']=_[_0x942c('0x42')](_0x35280a[_0x942c('0x3f')],_0x35280a['query']);_0x38f042[_0x942c('0x44')]=_[_0x942c('0x42')](_0x35280a[_0x942c('0x3f')],qs[_0x942c('0x43')](_0x103b68[_0x942c('0x40')][_0x942c('0x43')]));_0x38f042['attributes']=_0x38f042['attributes'][_0x942c('0x54')]?_0x38f042[_0x942c('0x44')]:_0x35280a[_0x942c('0x3f')];if(_0x103b68[_0x942c('0x40')]['includeAll']){_0x38f042[_0x942c('0x4f')]=[{'all':!![]}];}_0x38f042=_[_0x942c('0x4c')]({},_0x38f042,_0x103b68[_0x942c('0x55')]);return db[_0x942c('0x3b')]['find'](_0x38f042)[_0x942c('0x1c')](handleEntityNotFound(_0x230993,null))[_0x942c('0x1c')](respondWithResult(_0x230993,null))[_0x942c('0x26')](handleError(_0x230993,null));};exports[_0x942c('0x56')]=function(_0x29ee55,_0x489339,_0x32785c){var _0x178037;return db[_0x942c('0x3b')][_0x942c('0x56')](_0x29ee55[_0x942c('0x57')],{'raw':!![]})[_0x942c('0x1c')](function(_0x11acb8){_0x178037=_0x11acb8;return db['VoiceContext'][_0x942c('0x58')]({'raw':!![]});})[_0x942c('0x1c')](function(_0x553d46){var _0x3520cd=fs[_0x942c('0x59')](path['join'](config[_0x942c('0x5a')],'server/files/templates/context.ejs'),_0x942c('0x5b'));var _0x20c1b0=ejs[_0x942c('0x5c')](_0x3520cd,{'contexts':_0x553d46||[]});fs[_0x942c('0x5d')](_0x942c('0x5e'),_0x20c1b0);})[_0x942c('0x1c')](function(){return respondWithRpcPromise(_0x942c('0x5f'),'create',{'module':'chan_sip.so'});})['then'](function(){var _0x25cf1a=_0x29ee55[_0x942c('0x60')][_0x942c('0x34')]({'plain':!![]});if(!_0x25cf1a)throw new Error(_0x942c('0x61'));if(_0x25cf1a[_0x942c('0x62')]===_0x942c('0x60')){var _0x1a306c=_0x178037[_0x942c('0x34')]({'plain':!![]});return db['UserProfileSection'][_0x942c('0x63')]({'where':{'name':_0x942c('0x35'),'userProfileId':_0x25cf1a[_0x942c('0x64')]},'raw':!![]})[_0x942c('0x1c')](function(_0x4d5be3){if(_0x4d5be3&&_0x4d5be3['autoAssociation']===0x0){return db[_0x942c('0x36')][_0x942c('0x56')]({'name':_0x1a306c[_0x942c('0x37')],'resourceId':_0x1a306c['id'],'type':_0x4d5be3[_0x942c('0x37')],'sectionId':_0x4d5be3['id']},{})[_0x942c('0x1c')](function(){return _0x178037;});}else{return _0x178037;}})[_0x942c('0x26')](function(_0x31f9e3){logger['error'](_0x942c('0x65'),_0x31f9e3);throw _0x31f9e3;});}return _0x178037;})[_0x942c('0x1c')](respondWithResult(_0x489339,0xc9))['catch'](handleError(_0x489339,null));};exports[_0x942c('0x32')]=function(_0x4d9ba9,_0x330d6d,_0x872af3){var _0x477425;return db['VoiceContext'][_0x942c('0x63')]({'where':{'id':_0x4d9ba9[_0x942c('0x52')]['id']}})[_0x942c('0x1c')](handleEntityNotFound(_0x330d6d,null))[_0x942c('0x1c')](saveUpdates(_0x4d9ba9['body'],null))[_0x942c('0x1c')](function(_0x34bf5d){if(_0x34bf5d){_0x477425=_0x34bf5d;return db[_0x942c('0x3b')]['findAll']({'raw':!![]});}})[_0x942c('0x1c')](function(_0x2e2ece){var _0x9a495b=fs[_0x942c('0x59')](path['join'](config[_0x942c('0x5a')],_0x942c('0x66')),_0x942c('0x5b'));var _0x27db2d=ejs[_0x942c('0x5c')](_0x9a495b,{'contexts':_0x2e2ece||[]});fs[_0x942c('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x27db2d);})[_0x942c('0x1c')](function(){return respondWithRpcPromise(_0x942c('0x5f'),'update',{'module':'chan_sip.so'});})[_0x942c('0x1c')](function(){return _0x477425;})['then'](respondWithResult(_0x330d6d,null))[_0x942c('0x26')](handleError(_0x330d6d,null));};exports[_0x942c('0x33')]=function(_0x548565,_0x394b8a,_0x697050){var _0x79b53c;return db['VoiceContext'][_0x942c('0x63')]({'where':{'id':_0x548565['params']['id']}})[_0x942c('0x1c')](handleEntityNotFound(_0x394b8a,null))[_0x942c('0x1c')](removeEntity(_0x394b8a,null))[_0x942c('0x1c')](function(){return db['VoiceContext']['findAll']({'raw':!![]});})[_0x942c('0x1c')](function(_0x3dbdee){var _0x4000be=fs[_0x942c('0x59')](path[_0x942c('0x67')](config['root'],_0x942c('0x66')),'utf8');var _0x1ec219=ejs[_0x942c('0x5c')](_0x4000be,{'contexts':_0x3dbdee});fs[_0x942c('0x5d')]('/etc/asterisk/extensions_xcally_contexts.conf',_0x1ec219);return respondWithRpcPromise('Reload',_0x942c('0x33'),{'module':'chan_sip.so'});})['catch'](handleError(_0x394b8a,null));};
\ No newline at end of file
+var _0x5f74=['find','create','readFileSync','join','server/files/templates/context.ejs','utf8','render','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','root','writeFileSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','http','request','then','info','VoiceContext,\x20%s,\x20%s','request\x20sent','error','message','result','catch','sendStatus','end','status','undefined','limit','count','set','json','apply','reject','update','destroy','get','Contexts','stack','name','send','map','VoiceContext','rawAttributes','fieldName','type','key','model','keys','filters','attributes','fields','query','length','hasOwnProperty','nolimit','offset','order','sort','where','pick','filter','include','findAll','rows','show','params','intersection','merge','options'];(function(_0x2a4006,_0x24cddc){var _0x58223d=function(_0x27595d){while(--_0x27595d){_0x2a4006['push'](_0x2a4006['shift']());}};_0x58223d(++_0x24cddc);}(_0x5f74,0x19d));var _0x45f7=function(_0x3b97f6,_0x4ce1f7){_0x3b97f6=_0x3b97f6-0x0;var _0x287014=_0x5f74[_0x3b97f6];return _0x287014;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x45f7('0x0'));var zipdir=require(_0x45f7('0x1'));var jsonpatch=require(_0x45f7('0x2'));var rp=require(_0x45f7('0x3'));var moment=require(_0x45f7('0x4'));var BPromise=require(_0x45f7('0x5'));var Mustache=require(_0x45f7('0x6'));var util=require(_0x45f7('0x7'));var path=require(_0x45f7('0x8'));var sox=require('sox');var csv=require(_0x45f7('0x9'));var ejs=require(_0x45f7('0xa'));var fs=require('fs');var fs_extra=require(_0x45f7('0xb'));var _=require(_0x45f7('0xc'));var squel=require(_0x45f7('0xd'));var crypto=require(_0x45f7('0xe'));var jsforce=require(_0x45f7('0xf'));var deskjs=require(_0x45f7('0x10'));var toCsv=require(_0x45f7('0x9'));var querystring=require(_0x45f7('0x11'));var Papa=require('papaparse');var Redis=require(_0x45f7('0x12'));var authService=require(_0x45f7('0x13'));var qs=require(_0x45f7('0x14'));var as=require(_0x45f7('0x15'));var hardwareService=require(_0x45f7('0x16'));var logger=require(_0x45f7('0x17'))(_0x45f7('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x45f7('0x19'))['db'];var jayson=require('jayson/promise');var client=jayson['client'][_0x45f7('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x95130f,_0x46f3e5,_0x25c70e,_0x2d3a13){return new BPromise(function(_0x18e0cf,_0x5317ba){var _0x4930c5=_0x2d3a13||client;return _0x4930c5[_0x45f7('0x1b')](_0x95130f,_0x25c70e)[_0x45f7('0x1c')](function(_0x2c35ab){logger[_0x45f7('0x1d')](_0x45f7('0x1e'),_0x46f3e5,_0x45f7('0x1f'));logger['debug']('VoiceContext,\x20%s,\x20%s,\x20%s',_0x46f3e5,'request\x20sent',JSON['stringify'](_0x2c35ab));if(_0x2c35ab[_0x45f7('0x20')]){if(_0x2c35ab[_0x45f7('0x20')]['code']===0x1f4){logger['error'](_0x45f7('0x1e'),_0x46f3e5,_0x2c35ab[_0x45f7('0x20')][_0x45f7('0x21')]);return _0x5317ba(_0x2c35ab['error']['message']);}logger[_0x45f7('0x20')]('VoiceContext,\x20%s,\x20%s',_0x46f3e5,_0x2c35ab['error'][_0x45f7('0x21')]);return _0x18e0cf(_0x2c35ab[_0x45f7('0x20')][_0x45f7('0x21')]);}else{logger[_0x45f7('0x1d')](_0x45f7('0x1e'),_0x46f3e5,'request\x20sent');_0x18e0cf(_0x2c35ab[_0x45f7('0x22')]['message']);}})[_0x45f7('0x23')](function(_0x5b516a){logger[_0x45f7('0x20')](_0x45f7('0x1e'),_0x46f3e5,_0x5b516a);_0x5317ba(_0x5b516a);});});}function respondWithStatusCode(_0x309353,_0x2b37f8){_0x2b37f8=_0x2b37f8||0xcc;return function(_0x234e68){if(_0x234e68){return _0x309353[_0x45f7('0x24')](_0x2b37f8);}return _0x309353['status'](_0x2b37f8)[_0x45f7('0x25')]();};}function respondWithResult(_0xa85053,_0xf15078){_0xf15078=_0xf15078||0xc8;return function(_0x3baf2b){if(_0x3baf2b){return _0xa85053[_0x45f7('0x26')](_0xf15078)['json'](_0x3baf2b);}};}function respondWithFilteredResult(_0x38fb32,_0x8f874){return function(_0x263d1d){if(_0x263d1d){var _0x726540=typeof _0x8f874['offset']===_0x45f7('0x27')&&typeof _0x8f874[_0x45f7('0x28')]==='undefined';var _0x1ac167=_0x263d1d['count'];var _0x45fd80=_0x726540?0x0:_0x8f874['offset'];var _0x3673bb=_0x726540?_0x263d1d[_0x45f7('0x29')]:_0x8f874['offset']+_0x8f874['limit'];var _0x366de7;if(_0x3673bb>=_0x1ac167){_0x3673bb=_0x1ac167;_0x366de7=0xc8;}else{_0x366de7=0xce;}_0x38fb32[_0x45f7('0x26')](_0x366de7);return _0x38fb32[_0x45f7('0x2a')]('Content-Range',_0x45fd80+'-'+_0x3673bb+'/'+_0x1ac167)[_0x45f7('0x2b')](_0x263d1d);}return null;};}function patchUpdates(_0x36c3c7){return function(_0xc2ff05){try{jsonpatch[_0x45f7('0x2c')](_0xc2ff05,_0x36c3c7,!![]);}catch(_0x5dbbc1){return BPromise[_0x45f7('0x2d')](_0x5dbbc1);}return _0xc2ff05['save']();};}function saveUpdates(_0x1c72c7,_0x35f9fb){return function(_0x2257f9){if(_0x2257f9){return _0x2257f9[_0x45f7('0x2e')](_0x1c72c7)['then'](function(_0x48f147){return _0x48f147;});}return null;};}function removeEntity(_0x3091cd,_0x26c22c){return function(_0x406ae6){if(_0x406ae6){return _0x406ae6[_0x45f7('0x2f')]()[_0x45f7('0x1c')](function(){var _0x33898e=_0x406ae6[_0x45f7('0x30')]({'plain':!![]});var _0x4e3ad7=_0x45f7('0x31');return db['UserProfileResource'][_0x45f7('0x2f')]({'where':{'type':_0x4e3ad7,'resourceId':_0x33898e['id']}})[_0x45f7('0x1c')](function(){return _0x406ae6;});})[_0x45f7('0x1c')](function(){_0x3091cd[_0x45f7('0x26')](0xcc)[_0x45f7('0x25')]();});}};}function handleEntityNotFound(_0xd2704b,_0xd9afc2){return function(_0x5d87e5){if(!_0x5d87e5){_0xd2704b[_0x45f7('0x24')](0x194);}return _0x5d87e5;};}function handleError(_0x3e8d5b,_0x531fb8){_0x531fb8=_0x531fb8||0x1f4;return function(_0x58e6f3){logger[_0x45f7('0x20')](_0x58e6f3[_0x45f7('0x32')]);if(_0x58e6f3[_0x45f7('0x33')]){delete _0x58e6f3[_0x45f7('0x33')];}_0x3e8d5b[_0x45f7('0x26')](_0x531fb8)[_0x45f7('0x34')](_0x58e6f3);};}exports['index']=function(_0x25a540,_0x1d018e){var _0x56fd63={},_0x5b8491={},_0x5cd1b9={'count':0x0,'rows':[]};var _0x5c8e22=_[_0x45f7('0x35')](db[_0x45f7('0x36')][_0x45f7('0x37')],function(_0x1f9d87){return{'name':_0x1f9d87[_0x45f7('0x38')],'type':_0x1f9d87[_0x45f7('0x39')][_0x45f7('0x3a')]};});_0x5b8491[_0x45f7('0x3b')]=_[_0x45f7('0x35')](_0x5c8e22,_0x45f7('0x33'));_0x5b8491['query']=_[_0x45f7('0x3c')](_0x25a540['query']);_0x5b8491[_0x45f7('0x3d')]=_['intersection'](_0x5b8491[_0x45f7('0x3b')],_0x5b8491['query']);_0x56fd63[_0x45f7('0x3e')]=_['intersection'](_0x5b8491['model'],qs[_0x45f7('0x3f')](_0x25a540[_0x45f7('0x40')][_0x45f7('0x3f')]));_0x56fd63['attributes']=_0x56fd63[_0x45f7('0x3e')][_0x45f7('0x41')]?_0x56fd63[_0x45f7('0x3e')]:_0x5b8491[_0x45f7('0x3b')];if(!_0x25a540[_0x45f7('0x40')][_0x45f7('0x42')](_0x45f7('0x43'))){_0x56fd63[_0x45f7('0x28')]=qs[_0x45f7('0x28')](_0x25a540[_0x45f7('0x40')]['limit']);_0x56fd63[_0x45f7('0x44')]=qs[_0x45f7('0x44')](_0x25a540[_0x45f7('0x40')][_0x45f7('0x44')]);}_0x56fd63[_0x45f7('0x45')]=qs['sort'](_0x25a540[_0x45f7('0x40')][_0x45f7('0x46')]);_0x56fd63[_0x45f7('0x47')]=qs[_0x45f7('0x3d')](_[_0x45f7('0x48')](_0x25a540[_0x45f7('0x40')],_0x5b8491[_0x45f7('0x3d')]),_0x5c8e22);if(_0x25a540[_0x45f7('0x40')][_0x45f7('0x49')]){_0x56fd63[_0x45f7('0x47')]=_['merge'](_0x56fd63['where'],{'$or':_[_0x45f7('0x35')](_0x5c8e22,function(_0x4d5a94){if(_0x4d5a94[_0x45f7('0x39')]!=='VIRTUAL'){var _0x3199ac={};_0x3199ac[_0x4d5a94['name']]={'$like':'%'+_0x25a540[_0x45f7('0x40')][_0x45f7('0x49')]+'%'};return _0x3199ac;}})});}_0x56fd63=_['merge']({},_0x56fd63,_0x25a540['options']);var _0xa3821b={'where':_0x56fd63[_0x45f7('0x47')]};return db[_0x45f7('0x36')][_0x45f7('0x29')](_0xa3821b)[_0x45f7('0x1c')](function(_0x1ac429){_0x5cd1b9[_0x45f7('0x29')]=_0x1ac429;if(_0x25a540[_0x45f7('0x40')]['includeAll']){_0x56fd63[_0x45f7('0x4a')]=[{'all':!![]}];}return db['VoiceContext'][_0x45f7('0x4b')](_0x56fd63);})['then'](function(_0x49556f){_0x5cd1b9[_0x45f7('0x4c')]=_0x49556f;return _0x5cd1b9;})['then'](respondWithFilteredResult(_0x1d018e,_0x56fd63))[_0x45f7('0x23')](handleError(_0x1d018e,null));};exports[_0x45f7('0x4d')]=function(_0x4561f1,_0x5f53bf){var _0x2c3634={'raw':![],'where':{'id':_0x4561f1[_0x45f7('0x4e')]['id']}},_0x21df57={};_0x21df57[_0x45f7('0x3b')]=_[_0x45f7('0x3c')](db[_0x45f7('0x36')][_0x45f7('0x37')]);_0x21df57[_0x45f7('0x40')]=_[_0x45f7('0x3c')](_0x4561f1[_0x45f7('0x40')]);_0x21df57[_0x45f7('0x3d')]=_[_0x45f7('0x4f')](_0x21df57['model'],_0x21df57[_0x45f7('0x40')]);_0x2c3634[_0x45f7('0x3e')]=_[_0x45f7('0x4f')](_0x21df57[_0x45f7('0x3b')],qs['fields'](_0x4561f1[_0x45f7('0x40')][_0x45f7('0x3f')]));_0x2c3634[_0x45f7('0x3e')]=_0x2c3634['attributes']['length']?_0x2c3634['attributes']:_0x21df57[_0x45f7('0x3b')];if(_0x4561f1[_0x45f7('0x40')]['includeAll']){_0x2c3634[_0x45f7('0x4a')]=[{'all':!![]}];}_0x2c3634=_[_0x45f7('0x50')]({},_0x2c3634,_0x4561f1[_0x45f7('0x51')]);return db['VoiceContext'][_0x45f7('0x52')](_0x2c3634)[_0x45f7('0x1c')](handleEntityNotFound(_0x5f53bf,null))[_0x45f7('0x1c')](respondWithResult(_0x5f53bf,null))[_0x45f7('0x23')](handleError(_0x5f53bf,null));};exports[_0x45f7('0x53')]=function(_0x4b93b7,_0x455855,_0x30dfbc){var _0x129839;return db[_0x45f7('0x36')][_0x45f7('0x53')](_0x4b93b7['body'],{'raw':!![]})['then'](function(_0x4902e2){_0x129839=_0x4902e2;return db[_0x45f7('0x36')]['findAll']({'raw':!![]});})['then'](function(_0x5a155e){var _0x17233e=fs[_0x45f7('0x54')](path[_0x45f7('0x55')](config['root'],_0x45f7('0x56')),_0x45f7('0x57'));var _0x16140c=ejs[_0x45f7('0x58')](_0x17233e,{'contexts':_0x5a155e||[]});fs['writeFileSync'](_0x45f7('0x59'),_0x16140c);})[_0x45f7('0x1c')](function(){return respondWithRpcPromise(_0x45f7('0x5a'),_0x45f7('0x53'),{'module':_0x45f7('0x5b')});})['then'](function(){var _0x136d4a=_0x4b93b7[_0x45f7('0x5c')][_0x45f7('0x30')]({'plain':!![]});if(!_0x136d4a)throw new Error(_0x45f7('0x5d'));if(_0x136d4a['role']===_0x45f7('0x5c')){var _0x4b41d6=_0x129839['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':'Contexts','userProfileId':_0x136d4a[_0x45f7('0x5e')]},'raw':!![]})[_0x45f7('0x1c')](function(_0x9d9cd3){if(_0x9d9cd3&&_0x9d9cd3['autoAssociation']===0x0){return db[_0x45f7('0x5f')][_0x45f7('0x53')]({'name':_0x4b41d6[_0x45f7('0x33')],'resourceId':_0x4b41d6['id'],'type':_0x9d9cd3[_0x45f7('0x33')],'sectionId':_0x9d9cd3['id']},{})[_0x45f7('0x1c')](function(){return _0x129839;});}else{return _0x129839;}})[_0x45f7('0x23')](function(_0x35b8a7){logger[_0x45f7('0x20')](_0x45f7('0x60'),_0x35b8a7);throw _0x35b8a7;});}return _0x129839;})[_0x45f7('0x1c')](respondWithResult(_0x455855,0xc9))[_0x45f7('0x23')](handleError(_0x455855,null));};exports['update']=function(_0x4666bb,_0x3ff83e,_0xf3dd5){var _0x3a516f;return db[_0x45f7('0x36')]['find']({'where':{'id':_0x4666bb[_0x45f7('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3ff83e,null))[_0x45f7('0x1c')](saveUpdates(_0x4666bb['body'],null))[_0x45f7('0x1c')](function(_0x55e9e6){if(_0x55e9e6){_0x3a516f=_0x55e9e6;return db['VoiceContext'][_0x45f7('0x4b')]({'raw':!![]});}})['then'](function(_0x5c086e){var _0x5106da=fs[_0x45f7('0x54')](path['join'](config[_0x45f7('0x61')],_0x45f7('0x56')),_0x45f7('0x57'));var _0x198cdc=ejs[_0x45f7('0x58')](_0x5106da,{'contexts':_0x5c086e||[]});fs[_0x45f7('0x62')](_0x45f7('0x59'),_0x198cdc);})[_0x45f7('0x1c')](function(){return respondWithRpcPromise('Reload',_0x45f7('0x2e'),{'module':'chan_sip.so'});})[_0x45f7('0x1c')](function(){return _0x3a516f;})[_0x45f7('0x1c')](respondWithResult(_0x3ff83e,null))[_0x45f7('0x23')](handleError(_0x3ff83e,null));};exports['destroy']=function(_0x50aaa1,_0x130810,_0x416cb1){var _0x1d2ee5;return db[_0x45f7('0x36')][_0x45f7('0x52')]({'where':{'id':_0x50aaa1[_0x45f7('0x4e')]['id']}})[_0x45f7('0x1c')](handleEntityNotFound(_0x130810,null))[_0x45f7('0x1c')](removeEntity(_0x130810,null))[_0x45f7('0x1c')](function(){return db[_0x45f7('0x36')][_0x45f7('0x4b')]({'raw':!![]});})[_0x45f7('0x1c')](function(_0x190f5b){var _0x549d59=fs[_0x45f7('0x54')](path[_0x45f7('0x55')](config[_0x45f7('0x61')],_0x45f7('0x56')),_0x45f7('0x57'));var _0xc3935c=ejs[_0x45f7('0x58')](_0x549d59,{'contexts':_0x190f5b});fs[_0x45f7('0x62')](_0x45f7('0x59'),_0xc3935c);return respondWithRpcPromise(_0x45f7('0x5a'),_0x45f7('0x2f'),{'module':_0x45f7('0x5b')});})['catch'](handleError(_0x130810,null));};
\ No newline at end of file
index 9126643..fb3f10a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82bb=['util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','define','VoiceContext','voice_contexts','lodash'];(function(_0x450510,_0x5636e9){var _0xe94a9=function(_0x447551){while(--_0x447551){_0x450510['push'](_0x450510['shift']());}};_0xe94a9(++_0x5636e9);}(_0x82bb,0xd0));var _0xb82b=function(_0x4cab90,_0x1acab9){_0x4cab90=_0x4cab90-0x0;var _0x2a7c1d=_0x82bb[_0x4cab90];return _0x2a7c1d;};'use strict';var _=require(_0xb82b('0x0'));var util=require(_0xb82b('0x1'));var logger=require(_0xb82b('0x2'))(_0xb82b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xb82b('0x4'));var fs=require('fs');var path=require(_0xb82b('0x5'));var rimraf=require(_0xb82b('0x6'));var config=require(_0xb82b('0x7'));var attributes=require('./voiceContext.attributes');module['exports']=function(_0x452d64,_0x1ce845){return _0x452d64[_0xb82b('0x8')](_0xb82b('0x9'),attributes,{'tableName':_0xb82b('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb640=['./voiceContext.attributes','define','VoiceContext','voice_contexts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x1eb82d,_0x1e23cb){var _0x2c9502=function(_0x4a3500){while(--_0x4a3500){_0x1eb82d['push'](_0x1eb82d['shift']());}};_0x2c9502(++_0x1e23cb);}(_0xb640,0xc7));var _0x0b64=function(_0x9517c4,_0x4efdb8){_0x9517c4=_0x9517c4-0x0;var _0x5623f7=_0xb640[_0x9517c4];return _0x5623f7;};'use strict';var _=require(_0x0b64('0x0'));var util=require(_0x0b64('0x1'));var logger=require(_0x0b64('0x2'))(_0x0b64('0x3'));var moment=require(_0x0b64('0x4'));var BPromise=require(_0x0b64('0x5'));var rp=require(_0x0b64('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x0b64('0x7'));var config=require(_0x0b64('0x8'));var attributes=require(_0x0b64('0x9'));module['exports']=function(_0x159628,_0x47c4da){return _0x159628[_0x0b64('0xa')](_0x0b64('0xb'),attributes,{'tableName':_0x0b64('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6daf2e8..a46706f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b35=['code','VoiceContext,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','stringify','error'];(function(_0x3ed8e0,_0x79c682){var _0x1d2d1e=function(_0x2a7f3){while(--_0x2a7f3){_0x3ed8e0['push'](_0x3ed8e0['shift']());}};_0x1d2d1e(++_0x79c682);}(_0x8b35,0x17a));var _0x58b3=function(_0x1aed91,_0x373232){_0x1aed91=_0x1aed91-0x0;var _0x4b23cc=_0x8b35[_0x1aed91];return _0x4b23cc;};'use strict';var _=require(_0x58b3('0x0'));var util=require(_0x58b3('0x1'));var moment=require(_0x58b3('0x2'));var BPromise=require(_0x58b3('0x3'));var rs=require(_0x58b3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x58b3('0x5'))['db'];var utils=require(_0x58b3('0x6'));var logger=require(_0x58b3('0x7'))(_0x58b3('0x8'));var config=require(_0x58b3('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x58b3('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x35d044,_0x5ec362,_0x503b78){return new BPromise(function(_0x126232,_0x46fda3){return client[_0x58b3('0xb')](_0x35d044,_0x503b78)[_0x58b3('0xc')](function(_0x446e8d){logger[_0x58b3('0xd')]('VoiceContext,\x20%s,\x20%s',_0x5ec362,_0x58b3('0xe'));logger[_0x58b3('0xf')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x5ec362,_0x58b3('0xe'),JSON[_0x58b3('0x10')](_0x446e8d));if(_0x446e8d[_0x58b3('0x11')]){if(_0x446e8d['error'][_0x58b3('0x12')]===0x1f4){logger['error'](_0x58b3('0x13'),_0x5ec362,_0x446e8d[_0x58b3('0x11')][_0x58b3('0x14')]);return _0x46fda3(_0x446e8d[_0x58b3('0x11')][_0x58b3('0x14')]);}logger[_0x58b3('0x11')](_0x58b3('0x13'),_0x5ec362,_0x446e8d['error'][_0x58b3('0x14')]);return _0x126232(_0x446e8d[_0x58b3('0x11')]['message']);}else{logger[_0x58b3('0xd')](_0x58b3('0x13'),_0x5ec362,'request\x20sent');_0x126232(_0x446e8d['result'][_0x58b3('0x14')]);}})[_0x58b3('0x15')](function(_0x38f6a7){logger[_0x58b3('0x11')]('VoiceContext,\x20%s,\x20%s',_0x5ec362,_0x38f6a7);_0x46fda3(_0x38f6a7);});});}
\ No newline at end of file
+var _0x85cf=['jayson/promise','client','request','info','debug','request\x20sent','stringify','error','code','VoiceContext,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x4e623c,_0x110ef0){var _0x43fbbf=function(_0x38eafe){while(--_0x38eafe){_0x4e623c['push'](_0x4e623c['shift']());}};_0x43fbbf(++_0x110ef0);}(_0x85cf,0x76));var _0xf85c=function(_0x20f433,_0x19154a){_0x20f433=_0x20f433-0x0;var _0x5ad992=_0x85cf[_0x20f433];return _0x5ad992;};'use strict';var _=require('lodash');var util=require(_0xf85c('0x0'));var moment=require(_0xf85c('0x1'));var BPromise=require(_0xf85c('0x2'));var rs=require(_0xf85c('0x3'));var fs=require('fs');var Redis=require(_0xf85c('0x4'));var db=require(_0xf85c('0x5'))['db'];var utils=require(_0xf85c('0x6'));var logger=require(_0xf85c('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf85c('0x8'));var client=jayson[_0xf85c('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x386a60,_0x41d08d,_0xe1be83){return new BPromise(function(_0x1bebcf,_0x1857d9){return client[_0xf85c('0xa')](_0x386a60,_0xe1be83)['then'](function(_0x25aa6e){logger[_0xf85c('0xb')]('VoiceContext,\x20%s,\x20%s',_0x41d08d,'request\x20sent');logger[_0xf85c('0xc')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x41d08d,_0xf85c('0xd'),JSON[_0xf85c('0xe')](_0x25aa6e));if(_0x25aa6e[_0xf85c('0xf')]){if(_0x25aa6e['error'][_0xf85c('0x10')]===0x1f4){logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x25aa6e[_0xf85c('0xf')]['message']);return _0x1857d9(_0x25aa6e[_0xf85c('0xf')][_0xf85c('0x12')]);}logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x25aa6e['error'][_0xf85c('0x12')]);return _0x1bebcf(_0x25aa6e['error'][_0xf85c('0x12')]);}else{logger['info'](_0xf85c('0x11'),_0x41d08d,'request\x20sent');_0x1bebcf(_0x25aa6e[_0xf85c('0x13')]['message']);}})[_0xf85c('0x14')](function(_0x30b768){logger[_0xf85c('0xf')](_0xf85c('0x11'),_0x41d08d,_0x30b768);_0x1857d9(_0x30b768);});});}
\ No newline at end of file
index 766d5c3..d03d72b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95cc=['get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller'];(function(_0x258229,_0x32027f){var _0x482c09=function(_0x4624d4){while(--_0x4624d4){_0x258229['push'](_0x258229['shift']());}};_0x482c09(++_0x32027f);}(_0x95cc,0x19a));var _0xc95c=function(_0x25e625,_0x2a97e2){_0x25e625=_0x25e625-0x0;var _0x3312cb=_0x95cc[_0x25e625];return _0x3312cb;};'use strict';var multer=require(_0xc95c('0x0'));var util=require(_0xc95c('0x1'));var path=require(_0xc95c('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xc95c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xc95c('0x4'));var interaction=require(_0xc95c('0x5'));var config=require(_0xc95c('0x6'));var controller=require(_0xc95c('0x7'));router[_0xc95c('0x8')]('/',auth[_0xc95c('0x9')](),controller[_0xc95c('0xa')]);router[_0xc95c('0x8')](_0xc95c('0xb'),auth[_0xc95c('0x9')](),controller[_0xc95c('0xc')]);router['get'](_0xc95c('0xd'),auth[_0xc95c('0x9')](),controller[_0xc95c('0xe')]);router[_0xc95c('0xf')]('/',auth[_0xc95c('0x9')](),controller[_0xc95c('0x10')]);router[_0xc95c('0x11')](_0xc95c('0xd'),auth[_0xc95c('0x9')](),controller[_0xc95c('0x12')]);router[_0xc95c('0x13')](_0xc95c('0xd'),auth[_0xc95c('0x9')](),controller[_0xc95c('0x14')]);module[_0xc95c('0x15')]=router;
\ No newline at end of file
+var _0x68ef=['show','post','create','put','update','delete','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','/:id'];(function(_0x2313a6,_0x37b377){var _0x5414ec=function(_0x5eade4){while(--_0x5eade4){_0x2313a6['push'](_0x2313a6['shift']());}};_0x5414ec(++_0x37b377);}(_0x68ef,0x196));var _0xf68e=function(_0x136476,_0x1d4dfb){_0x136476=_0x136476-0x0;var _0x1347f3=_0x68ef[_0x136476];return _0x1347f3;};'use strict';var multer=require(_0xf68e('0x0'));var util=require('util');var path=require(_0xf68e('0x1'));var timeout=require(_0xf68e('0x2'));var express=require(_0xf68e('0x3'));var router=express['Router']();var fs_extra=require(_0xf68e('0x4'));var auth=require(_0xf68e('0x5'));var interaction=require(_0xf68e('0x6'));var config=require(_0xf68e('0x7'));var controller=require(_0xf68e('0x8'));router[_0xf68e('0x9')]('/',auth[_0xf68e('0xa')](),controller[_0xf68e('0xb')]);router[_0xf68e('0x9')](_0xf68e('0xc'),auth[_0xf68e('0xa')](),controller['describe']);router[_0xf68e('0x9')](_0xf68e('0xd'),auth['isAuthenticated'](),controller[_0xf68e('0xe')]);router[_0xf68e('0xf')]('/',auth[_0xf68e('0xa')](),controller[_0xf68e('0x10')]);router[_0xf68e('0x11')]('/:id',auth[_0xf68e('0xa')](),controller[_0xf68e('0x12')]);router[_0xf68e('0x13')]('/:id',auth[_0xf68e('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 5eaf088..cc01a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['INTEGER','STRING','DATE','called,connect,complete','sequelize','exports'];(function(_0x426aa9,_0xc9fd9f){var _0x4fb0bd=function(_0x31aa6e){while(--_0x31aa6e){_0x426aa9['push'](_0x426aa9['shift']());}};_0x4fb0bd(++_0xc9fd9f);}(_0x4b84,0x1cc));var _0x44b8=function(_0x837dad,_0x1d9098){_0x837dad=_0x837dad-0x0;var _0x1d62d3=_0x4b84[_0x837dad];return _0x1d62d3;};'use strict';var Sequelize=require(_0x44b8('0x0'));module[_0x44b8('0x1')]={'privilege':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x44b8('0x2')]},'channelstatedesc':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x44b8('0x3')]},'connectedlinenum':{'type':Sequelize[_0x44b8('0x3')]},'connectedlinename':{'type':Sequelize[_0x44b8('0x3')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize['STRING']},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x44b8('0x3')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x44b8('0x3')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x44b8('0x3')]},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize[_0x44b8('0x3')]},'destcalleridname':{'type':Sequelize[_0x44b8('0x3')]},'destconnectedlinenum':{'type':Sequelize[_0x44b8('0x3')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x44b8('0x3')]},'destaccountcode':{'type':Sequelize[_0x44b8('0x3')]},'destcontext':{'type':Sequelize[_0x44b8('0x3')]},'destexten':{'type':Sequelize[_0x44b8('0x3')]},'destpriority':{'type':Sequelize[_0x44b8('0x2')]},'destuniqueid':{'type':Sequelize[_0x44b8('0x3')]},'destlinkedid':{'type':Sequelize[_0x44b8('0x3')]},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x44b8('0x3')]},'starttime':{'type':Sequelize[_0x44b8('0x4')]},'answertime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x44b8('0x4')]},'lastevent':{'type':Sequelize['STRING'],'comment':_0x44b8('0x5')},'routeId':{'type':Sequelize[_0x44b8('0x2')]},'duration':{'type':Sequelize['INTEGER']},'holdtime':{'type':Sequelize[_0x44b8('0x2')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd6d6=['STRING','INTEGER','DATE','called,connect,complete','sequelize','exports'];(function(_0x51ed46,_0x4b7ad2){var _0xc2b1e7=function(_0x43ec08){while(--_0x43ec08){_0x51ed46['push'](_0x51ed46['shift']());}};_0xc2b1e7(++_0x4b7ad2);}(_0xd6d6,0xbe));var _0x6d6d=function(_0x511d41,_0x371d28){_0x511d41=_0x511d41-0x0;var _0x3184d6=_0xd6d6[_0x511d41];return _0x3184d6;};'use strict';var Sequelize=require(_0x6d6d('0x0'));module[_0x6d6d('0x1')]={'privilege':{'type':Sequelize[_0x6d6d('0x2')]},'channel':{'type':Sequelize[_0x6d6d('0x2')]},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'calleridnum':{'type':Sequelize[_0x6d6d('0x2')]},'calleridname':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'connectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'language':{'type':Sequelize[_0x6d6d('0x2')]},'accountcode':{'type':Sequelize[_0x6d6d('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x6d6d('0x2')]},'priority':{'type':Sequelize[_0x6d6d('0x3')]},'uniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'linkedid':{'type':Sequelize[_0x6d6d('0x2')]},'destchannel':{'type':Sequelize[_0x6d6d('0x2')]},'destchannelstate':{'type':Sequelize[_0x6d6d('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x6d6d('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x6d6d('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x6d6d('0x2')]},'destlanguage':{'type':Sequelize[_0x6d6d('0x2')]},'destaccountcode':{'type':Sequelize[_0x6d6d('0x2')]},'destcontext':{'type':Sequelize[_0x6d6d('0x2')]},'destexten':{'type':Sequelize['STRING']},'destpriority':{'type':Sequelize[_0x6d6d('0x3')]},'destuniqueid':{'type':Sequelize[_0x6d6d('0x2')]},'destlinkedid':{'type':Sequelize['STRING']},'dialstring':{'type':Sequelize['STRING']},'dialstatus':{'type':Sequelize[_0x6d6d('0x2')]},'starttime':{'type':Sequelize[_0x6d6d('0x4')]},'answertime':{'type':Sequelize[_0x6d6d('0x4')]},'endtime':{'type':Sequelize[_0x6d6d('0x4')]},'lastevent':{'type':Sequelize[_0x6d6d('0x2')],'comment':_0x6d6d('0x5')},'routeId':{'type':Sequelize[_0x6d6d('0x3')]},'duration':{'type':Sequelize[_0x6d6d('0x3')]},'holdtime':{'type':Sequelize['INTEGER']},'billableseconds':{'type':Sequelize[_0x6d6d('0x3')]}};
\ No newline at end of file
index e81df5c..ffb65e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff9c=['describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','options','include','catch','show','params','rawAttributes','includeAll','find','create','body'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xff9c,0x187));var _0xcff9=function(_0x9f3a38,_0x5f1cd6){_0x9f3a38=_0x9f3a38-0x0;var _0x5a5b06=_0xff9c[_0x9f3a38];return _0x5a5b06;};'use strict';var emlformat=require(_0xcff9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xcff9('0x1'));var jsonpatch=require(_0xcff9('0x2'));var rp=require(_0xcff9('0x3'));var moment=require(_0xcff9('0x4'));var BPromise=require(_0xcff9('0x5'));var Mustache=require(_0xcff9('0x6'));var util=require(_0xcff9('0x7'));var path=require('path');var sox=require(_0xcff9('0x8'));var csv=require(_0xcff9('0x9'));var ejs=require(_0xcff9('0xa'));var fs=require('fs');var fs_extra=require(_0xcff9('0xb'));var _=require(_0xcff9('0xc'));var squel=require('squel');var crypto=require(_0xcff9('0xd'));var jsforce=require(_0xcff9('0xe'));var deskjs=require(_0xcff9('0xf'));var toCsv=require(_0xcff9('0x9'));var querystring=require(_0xcff9('0x10'));var Papa=require(_0xcff9('0x11'));var Redis=require('ioredis');var authService=require(_0xcff9('0x12'));var qs=require(_0xcff9('0x13'));var as=require(_0xcff9('0x14'));var hardwareService=require(_0xcff9('0x15'));var logger=require(_0xcff9('0x16'))('api');var utils=require(_0xcff9('0x17'));var config=require(_0xcff9('0x18'));var licenseUtil=require(_0xcff9('0x19'));var db=require(_0xcff9('0x1a'))['db'];function respondWithStatusCode(_0x440248,_0x27e247){_0x27e247=_0x27e247||0xcc;return function(_0x445d43){if(_0x445d43){return _0x440248[_0xcff9('0x1b')](_0x27e247);}return _0x440248[_0xcff9('0x1c')](_0x27e247)[_0xcff9('0x1d')]();};}function respondWithResult(_0x160eee,_0x5f0e88){_0x5f0e88=_0x5f0e88||0xc8;return function(_0x49f10f){if(_0x49f10f){return _0x160eee[_0xcff9('0x1c')](_0x5f0e88)[_0xcff9('0x1e')](_0x49f10f);}};}function respondWithFilteredResult(_0x17ea79,_0x53eed6){return function(_0x58ba21){if(_0x58ba21){var _0x351839=typeof _0x53eed6['offset']===_0xcff9('0x1f')&&typeof _0x53eed6['limit']===_0xcff9('0x1f');var _0x5b348a=_0x58ba21[_0xcff9('0x20')];var _0x30ef44=_0x351839?0x0:_0x53eed6[_0xcff9('0x21')];var _0x220336=_0x351839?_0x58ba21['count']:_0x53eed6['offset']+_0x53eed6[_0xcff9('0x22')];var _0x25ddf2;if(_0x220336>=_0x5b348a){_0x220336=_0x5b348a;_0x25ddf2=0xc8;}else{_0x25ddf2=0xce;}_0x17ea79[_0xcff9('0x1c')](_0x25ddf2);return _0x17ea79[_0xcff9('0x23')]('Content-Range',_0x30ef44+'-'+_0x220336+'/'+_0x5b348a)[_0xcff9('0x1e')](_0x58ba21);}return null;};}function patchUpdates(_0xedf157){return function(_0x41dfe2){try{jsonpatch[_0xcff9('0x24')](_0x41dfe2,_0xedf157,!![]);}catch(_0x177abe){return BPromise[_0xcff9('0x25')](_0x177abe);}return _0x41dfe2[_0xcff9('0x26')]();};}function saveUpdates(_0x328603,_0x334a30){return function(_0x184096){if(_0x184096){return _0x184096[_0xcff9('0x27')](_0x328603)[_0xcff9('0x28')](function(_0x3495ee){return _0x3495ee;});}return null;};}function removeEntity(_0x327e72,_0x17bab0){return function(_0x3b4cd6){if(_0x3b4cd6){return _0x3b4cd6[_0xcff9('0x29')]()[_0xcff9('0x28')](function(){_0x327e72[_0xcff9('0x1c')](0xcc)[_0xcff9('0x1d')]();});}};}function handleEntityNotFound(_0x465c46,_0x348642){return function(_0x5e9585){if(!_0x5e9585){_0x465c46[_0xcff9('0x1b')](0x194);}return _0x5e9585;};}function handleError(_0x394e06,_0x4d4e4b){_0x4d4e4b=_0x4d4e4b||0x1f4;return function(_0x463249){logger[_0xcff9('0x2a')](_0x463249[_0xcff9('0x2b')]);if(_0x463249[_0xcff9('0x2c')]){delete _0x463249[_0xcff9('0x2c')];}_0x394e06['status'](_0x4d4e4b)[_0xcff9('0x2d')](_0x463249);};}exports[_0xcff9('0x2e')]=function(_0x6accc1,_0x57c493){var _0x1b08c7={},_0xafe592={},_0x162618={'count':0x0,'rows':[]};var _0x3f3c1d=_[_0xcff9('0x2f')](db[_0xcff9('0x30')]['rawAttributes'],function(_0xd1dae6){return{'name':_0xd1dae6[_0xcff9('0x31')],'type':_0xd1dae6[_0xcff9('0x32')][_0xcff9('0x33')]};});_0xafe592[_0xcff9('0x34')]=_[_0xcff9('0x2f')](_0x3f3c1d,_0xcff9('0x2c'));_0xafe592[_0xcff9('0x35')]=_[_0xcff9('0x36')](_0x6accc1[_0xcff9('0x35')]);_0xafe592['filters']=_[_0xcff9('0x37')](_0xafe592['model'],_0xafe592[_0xcff9('0x35')]);_0x1b08c7[_0xcff9('0x38')]=_['intersection'](_0xafe592['model'],qs['fields'](_0x6accc1[_0xcff9('0x35')][_0xcff9('0x39')]));_0x1b08c7[_0xcff9('0x38')]=_0x1b08c7[_0xcff9('0x38')][_0xcff9('0x3a')]?_0x1b08c7[_0xcff9('0x38')]:_0xafe592[_0xcff9('0x34')];if(!_0x6accc1[_0xcff9('0x35')][_0xcff9('0x3b')](_0xcff9('0x3c'))){_0x1b08c7['limit']=qs[_0xcff9('0x22')](_0x6accc1[_0xcff9('0x35')]['limit']);_0x1b08c7[_0xcff9('0x21')]=qs['offset'](_0x6accc1[_0xcff9('0x35')][_0xcff9('0x21')]);}_0x1b08c7[_0xcff9('0x3d')]=qs['sort'](_0x6accc1[_0xcff9('0x35')][_0xcff9('0x3e')]);_0x1b08c7[_0xcff9('0x3f')]=qs[_0xcff9('0x40')](_[_0xcff9('0x41')](_0x6accc1['query'],_0xafe592[_0xcff9('0x40')]),_0x3f3c1d);if(_0x6accc1[_0xcff9('0x35')]['filter']){_0x1b08c7[_0xcff9('0x3f')]=_[_0xcff9('0x42')](_0x1b08c7['where'],{'$or':_[_0xcff9('0x2f')](_0x3f3c1d,function(_0x236769){if(_0x236769[_0xcff9('0x32')]!=='VIRTUAL'){var _0x2a6ccc={};_0x2a6ccc[_0x236769[_0xcff9('0x2c')]]={'$like':'%'+_0x6accc1[_0xcff9('0x35')]['filter']+'%'};return _0x2a6ccc;}})});}_0x1b08c7=_[_0xcff9('0x42')]({},_0x1b08c7,_0x6accc1[_0xcff9('0x43')]);var _0x2d5506={'where':_0x1b08c7[_0xcff9('0x3f')]};return db[_0xcff9('0x30')][_0xcff9('0x20')](_0x2d5506)[_0xcff9('0x28')](function(_0x3e5744){_0x162618[_0xcff9('0x20')]=_0x3e5744;if(_0x6accc1[_0xcff9('0x35')]['includeAll']){_0x1b08c7[_0xcff9('0x44')]=[{'all':!![]}];}return db[_0xcff9('0x30')]['findAll'](_0x1b08c7);})[_0xcff9('0x28')](function(_0x1839f6){_0x162618['rows']=_0x1839f6;return _0x162618;})['then'](respondWithFilteredResult(_0x57c493,_0x1b08c7))[_0xcff9('0x45')](handleError(_0x57c493,null));};exports[_0xcff9('0x46')]=function(_0xc6c645,_0x9cf846){var _0x743e2d={'raw':!![],'where':{'id':_0xc6c645[_0xcff9('0x47')]['id']}},_0x3cd739={};_0x3cd739[_0xcff9('0x34')]=_[_0xcff9('0x36')](db[_0xcff9('0x30')][_0xcff9('0x48')]);_0x3cd739[_0xcff9('0x35')]=_[_0xcff9('0x36')](_0xc6c645[_0xcff9('0x35')]);_0x3cd739[_0xcff9('0x40')]=_[_0xcff9('0x37')](_0x3cd739[_0xcff9('0x34')],_0x3cd739[_0xcff9('0x35')]);_0x743e2d[_0xcff9('0x38')]=_[_0xcff9('0x37')](_0x3cd739[_0xcff9('0x34')],qs[_0xcff9('0x39')](_0xc6c645['query'][_0xcff9('0x39')]));_0x743e2d[_0xcff9('0x38')]=_0x743e2d[_0xcff9('0x38')]['length']?_0x743e2d['attributes']:_0x3cd739[_0xcff9('0x34')];if(_0xc6c645[_0xcff9('0x35')][_0xcff9('0x49')]){_0x743e2d[_0xcff9('0x44')]=[{'all':!![]}];}_0x743e2d=_[_0xcff9('0x42')]({},_0x743e2d,_0xc6c645[_0xcff9('0x43')]);return db['VoiceDialReport'][_0xcff9('0x4a')](_0x743e2d)[_0xcff9('0x28')](handleEntityNotFound(_0x9cf846,null))[_0xcff9('0x28')](respondWithResult(_0x9cf846,null))['catch'](handleError(_0x9cf846,null));};exports[_0xcff9('0x4b')]=function(_0x11e54f,_0x5e138d){return db[_0xcff9('0x30')][_0xcff9('0x4b')](_0x11e54f[_0xcff9('0x4c')],{})[_0xcff9('0x28')](respondWithResult(_0x5e138d,0xc9))[_0xcff9('0x45')](handleError(_0x5e138d,null));};exports[_0xcff9('0x27')]=function(_0x36f60b,_0x314107){if(_0x36f60b['body']['id']){delete _0x36f60b[_0xcff9('0x4c')]['id'];}return db[_0xcff9('0x30')][_0xcff9('0x4a')]({'where':{'id':_0x36f60b[_0xcff9('0x47')]['id']}})[_0xcff9('0x28')](handleEntityNotFound(_0x314107,null))[_0xcff9('0x28')](saveUpdates(_0x36f60b[_0xcff9('0x4c')],null))['then'](respondWithResult(_0x314107,null))[_0xcff9('0x45')](handleError(_0x314107,null));};exports[_0xcff9('0x29')]=function(_0x4468c2,_0x9e544c){return db['VoiceDialReport'][_0xcff9('0x4a')]({'where':{'id':_0x4468c2[_0xcff9('0x47')]['id']}})[_0xcff9('0x28')](handleEntityNotFound(_0x9e544c,null))[_0xcff9('0x28')](removeEntity(_0x9e544c,null))['catch'](handleError(_0x9e544c,null));};exports['describe']=function(_0x1c2861,_0x224afd){return db[_0xcff9('0x30')][_0xcff9('0x4d')]()['then'](respondWithResult(_0x224afd,null))[_0xcff9('0x45')](handleError(_0x224afd,null));};
\ No newline at end of file
+var _0xe993=['status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','destroy','sendStatus','error','stack','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','VoiceDialReport','then','includeAll','findAll','rows','show','params','include','catch','create','body','find','describe','eml-format','zip-dir','fast-json-patch','bluebird','util','path','sox','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe993,0x1ea));var _0x3e99=function(_0x509692,_0xe7045d){_0x509692=_0x509692-0x0;var _0x25266e=_0xe993[_0x509692];return _0x25266e;};'use strict';var emlformat=require(_0x3e99('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x3e99('0x1'));var jsonpatch=require(_0x3e99('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3e99('0x3'));var Mustache=require('mustache');var util=require(_0x3e99('0x4'));var path=require(_0x3e99('0x5'));var sox=require(_0x3e99('0x6'));var csv=require('to-csv');var ejs=require(_0x3e99('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3e99('0x8'));var squel=require(_0x3e99('0x9'));var crypto=require(_0x3e99('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x3e99('0xb'));var toCsv=require(_0x3e99('0xc'));var querystring=require(_0x3e99('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x3e99('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x3e99('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3e99('0x10'))(_0x3e99('0x11'));var utils=require(_0x3e99('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3e99('0x13'));var db=require(_0x3e99('0x14'))['db'];function respondWithStatusCode(_0x33ebf4,_0x82a58e){_0x82a58e=_0x82a58e||0xcc;return function(_0x1407e5){if(_0x1407e5){return _0x33ebf4['sendStatus'](_0x82a58e);}return _0x33ebf4[_0x3e99('0x15')](_0x82a58e)[_0x3e99('0x16')]();};}function respondWithResult(_0x318f09,_0x3e2c8f){_0x3e2c8f=_0x3e2c8f||0xc8;return function(_0x52f236){if(_0x52f236){return _0x318f09['status'](_0x3e2c8f)[_0x3e99('0x17')](_0x52f236);}};}function respondWithFilteredResult(_0x2cc41b,_0x3b2051){return function(_0x135f19){if(_0x135f19){var _0x14c0c3=typeof _0x3b2051[_0x3e99('0x18')]==='undefined'&&typeof _0x3b2051['limit']===_0x3e99('0x19');var _0x1a6551=_0x135f19[_0x3e99('0x1a')];var _0x34b3b0=_0x14c0c3?0x0:_0x3b2051[_0x3e99('0x18')];var _0x569061=_0x14c0c3?_0x135f19[_0x3e99('0x1a')]:_0x3b2051[_0x3e99('0x18')]+_0x3b2051[_0x3e99('0x1b')];var _0x5800b7;if(_0x569061>=_0x1a6551){_0x569061=_0x1a6551;_0x5800b7=0xc8;}else{_0x5800b7=0xce;}_0x2cc41b['status'](_0x5800b7);return _0x2cc41b[_0x3e99('0x1c')](_0x3e99('0x1d'),_0x34b3b0+'-'+_0x569061+'/'+_0x1a6551)['json'](_0x135f19);}return null;};}function patchUpdates(_0x86bf80){return function(_0x37059c){try{jsonpatch[_0x3e99('0x1e')](_0x37059c,_0x86bf80,!![]);}catch(_0x2a57cb){return BPromise[_0x3e99('0x1f')](_0x2a57cb);}return _0x37059c['save']();};}function saveUpdates(_0x123f62,_0x577805){return function(_0x53e8d8){if(_0x53e8d8){return _0x53e8d8[_0x3e99('0x20')](_0x123f62)['then'](function(_0x4f0adc){return _0x4f0adc;});}return null;};}function removeEntity(_0x297636,_0x351c64){return function(_0x1bc227){if(_0x1bc227){return _0x1bc227[_0x3e99('0x21')]()['then'](function(){_0x297636[_0x3e99('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x59f29e,_0x47d66b){return function(_0x2ee50a){if(!_0x2ee50a){_0x59f29e[_0x3e99('0x22')](0x194);}return _0x2ee50a;};}function handleError(_0x5cb365,_0x44a544){_0x44a544=_0x44a544||0x1f4;return function(_0x49507d){logger[_0x3e99('0x23')](_0x49507d[_0x3e99('0x24')]);if(_0x49507d[_0x3e99('0x25')]){delete _0x49507d['name'];}_0x5cb365['status'](_0x44a544)['send'](_0x49507d);};}exports['index']=function(_0x51898c,_0x5f0e67){var _0x5ee5c3={},_0x327956={},_0x5cf242={'count':0x0,'rows':[]};var _0x152b97=_[_0x3e99('0x26')](db['VoiceDialReport'][_0x3e99('0x27')],function(_0x2de86f){return{'name':_0x2de86f[_0x3e99('0x28')],'type':_0x2de86f[_0x3e99('0x29')][_0x3e99('0x2a')]};});_0x327956[_0x3e99('0x2b')]=_[_0x3e99('0x26')](_0x152b97,_0x3e99('0x25'));_0x327956[_0x3e99('0x2c')]=_[_0x3e99('0x2d')](_0x51898c[_0x3e99('0x2c')]);_0x327956[_0x3e99('0x2e')]=_[_0x3e99('0x2f')](_0x327956['model'],_0x327956[_0x3e99('0x2c')]);_0x5ee5c3[_0x3e99('0x30')]=_['intersection'](_0x327956['model'],qs[_0x3e99('0x31')](_0x51898c[_0x3e99('0x2c')][_0x3e99('0x31')]));_0x5ee5c3[_0x3e99('0x30')]=_0x5ee5c3[_0x3e99('0x30')][_0x3e99('0x32')]?_0x5ee5c3[_0x3e99('0x30')]:_0x327956[_0x3e99('0x2b')];if(!_0x51898c[_0x3e99('0x2c')][_0x3e99('0x33')](_0x3e99('0x34'))){_0x5ee5c3['limit']=qs['limit'](_0x51898c['query'][_0x3e99('0x1b')]);_0x5ee5c3[_0x3e99('0x18')]=qs[_0x3e99('0x18')](_0x51898c[_0x3e99('0x2c')]['offset']);}_0x5ee5c3['order']=qs[_0x3e99('0x35')](_0x51898c[_0x3e99('0x2c')]['sort']);_0x5ee5c3['where']=qs['filters'](_[_0x3e99('0x36')](_0x51898c[_0x3e99('0x2c')],_0x327956[_0x3e99('0x2e')]),_0x152b97);if(_0x51898c[_0x3e99('0x2c')]['filter']){_0x5ee5c3[_0x3e99('0x37')]=_[_0x3e99('0x38')](_0x5ee5c3[_0x3e99('0x37')],{'$or':_['map'](_0x152b97,function(_0x44649a){if(_0x44649a[_0x3e99('0x29')]!==_0x3e99('0x39')){var _0xc40e47={};_0xc40e47[_0x44649a[_0x3e99('0x25')]]={'$like':'%'+_0x51898c[_0x3e99('0x2c')][_0x3e99('0x3a')]+'%'};return _0xc40e47;}})});}_0x5ee5c3=_[_0x3e99('0x38')]({},_0x5ee5c3,_0x51898c[_0x3e99('0x3b')]);var _0x32f6fb={'where':_0x5ee5c3[_0x3e99('0x37')]};return db[_0x3e99('0x3c')]['count'](_0x32f6fb)[_0x3e99('0x3d')](function(_0x21e677){_0x5cf242[_0x3e99('0x1a')]=_0x21e677;if(_0x51898c[_0x3e99('0x2c')][_0x3e99('0x3e')]){_0x5ee5c3['include']=[{'all':!![]}];}return db[_0x3e99('0x3c')][_0x3e99('0x3f')](_0x5ee5c3);})[_0x3e99('0x3d')](function(_0x14e2ec){_0x5cf242[_0x3e99('0x40')]=_0x14e2ec;return _0x5cf242;})[_0x3e99('0x3d')](respondWithFilteredResult(_0x5f0e67,_0x5ee5c3))['catch'](handleError(_0x5f0e67,null));};exports[_0x3e99('0x41')]=function(_0x2553a3,_0x8776dc){var _0x15a9b2={'raw':!![],'where':{'id':_0x2553a3[_0x3e99('0x42')]['id']}},_0xe5abd2={};_0xe5abd2['model']=_[_0x3e99('0x2d')](db[_0x3e99('0x3c')][_0x3e99('0x27')]);_0xe5abd2['query']=_[_0x3e99('0x2d')](_0x2553a3[_0x3e99('0x2c')]);_0xe5abd2['filters']=_['intersection'](_0xe5abd2[_0x3e99('0x2b')],_0xe5abd2[_0x3e99('0x2c')]);_0x15a9b2[_0x3e99('0x30')]=_['intersection'](_0xe5abd2[_0x3e99('0x2b')],qs[_0x3e99('0x31')](_0x2553a3[_0x3e99('0x2c')][_0x3e99('0x31')]));_0x15a9b2[_0x3e99('0x30')]=_0x15a9b2[_0x3e99('0x30')][_0x3e99('0x32')]?_0x15a9b2[_0x3e99('0x30')]:_0xe5abd2[_0x3e99('0x2b')];if(_0x2553a3[_0x3e99('0x2c')][_0x3e99('0x3e')]){_0x15a9b2[_0x3e99('0x43')]=[{'all':!![]}];}_0x15a9b2=_['merge']({},_0x15a9b2,_0x2553a3['options']);return db[_0x3e99('0x3c')]['find'](_0x15a9b2)[_0x3e99('0x3d')](handleEntityNotFound(_0x8776dc,null))['then'](respondWithResult(_0x8776dc,null))[_0x3e99('0x44')](handleError(_0x8776dc,null));};exports[_0x3e99('0x45')]=function(_0x5cc9e6,_0x74c6ea){return db['VoiceDialReport']['create'](_0x5cc9e6[_0x3e99('0x46')],{})[_0x3e99('0x3d')](respondWithResult(_0x74c6ea,0xc9))[_0x3e99('0x44')](handleError(_0x74c6ea,null));};exports[_0x3e99('0x20')]=function(_0x6c9edf,_0x5ea073){if(_0x6c9edf[_0x3e99('0x46')]['id']){delete _0x6c9edf[_0x3e99('0x46')]['id'];}return db[_0x3e99('0x3c')][_0x3e99('0x47')]({'where':{'id':_0x6c9edf['params']['id']}})['then'](handleEntityNotFound(_0x5ea073,null))[_0x3e99('0x3d')](saveUpdates(_0x6c9edf[_0x3e99('0x46')],null))[_0x3e99('0x3d')](respondWithResult(_0x5ea073,null))[_0x3e99('0x44')](handleError(_0x5ea073,null));};exports[_0x3e99('0x21')]=function(_0x162a69,_0x39fe43){return db[_0x3e99('0x3c')][_0x3e99('0x47')]({'where':{'id':_0x162a69[_0x3e99('0x42')]['id']}})[_0x3e99('0x3d')](handleEntityNotFound(_0x39fe43,null))['then'](removeEntity(_0x39fe43,null))[_0x3e99('0x44')](handleError(_0x39fe43,null));};exports['describe']=function(_0xdd6c54,_0x26a329){return db[_0x3e99('0x3c')][_0x3e99('0x48')]()[_0x3e99('0x3d')](respondWithResult(_0x26a329,null))['catch'](handleError(_0x26a329,null));};
\ No newline at end of file
index 66c0591..c1ea941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b67=['moment','bluebird','path','../../config/environment','./voiceDialReport.attributes','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api'];(function(_0x1cc040,_0x40e0d7){var _0x3cd89e=function(_0x523e80){while(--_0x523e80){_0x1cc040['push'](_0x1cc040['shift']());}};_0x3cd89e(++_0x40e0d7);}(_0x2b67,0xf3));var _0x72b6=function(_0x3476b2,_0x47ded3){_0x3476b2=_0x3476b2-0x0;var _0x1611a6=_0x2b67[_0x3476b2];return _0x1611a6;};'use strict';var _=require(_0x72b6('0x0'));var util=require(_0x72b6('0x1'));var logger=require(_0x72b6('0x2'))(_0x72b6('0x3'));var moment=require(_0x72b6('0x4'));var BPromise=require(_0x72b6('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x72b6('0x6'));var rimraf=require('rimraf');var config=require(_0x72b6('0x7'));var attributes=require(_0x72b6('0x8'));module['exports']=function(_0x572088,_0x5232be){return _0x572088[_0x72b6('0x9')](_0x72b6('0xa'),attributes,{'tableName':_0x72b6('0xb'),'paranoid':![],'indexes':[{'fields':[_0x72b6('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2cc1=['api','moment','bluebird','request-promise','path','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger'];(function(_0x190d84,_0x28ae7a){var _0x476687=function(_0x3e2090){while(--_0x3e2090){_0x190d84['push'](_0x190d84['shift']());}};_0x476687(++_0x28ae7a);}(_0x2cc1,0x1bd));var _0x12cc=function(_0x58c56a,_0x40d9e4){_0x58c56a=_0x58c56a-0x0;var _0x4f83d0=_0x2cc1[_0x58c56a];return _0x4f83d0;};'use strict';var _=require(_0x12cc('0x0'));var util=require(_0x12cc('0x1'));var logger=require(_0x12cc('0x2'))(_0x12cc('0x3'));var moment=require(_0x12cc('0x4'));var BPromise=require(_0x12cc('0x5'));var rp=require(_0x12cc('0x6'));var fs=require('fs');var path=require(_0x12cc('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x12cc('0x8'));module[_0x12cc('0x9')]=function(_0x4d6ec4,_0x496867){return _0x4d6ec4[_0x12cc('0xa')](_0x12cc('0xb'),attributes,{'tableName':_0x12cc('0xc'),'paranoid':![],'indexes':[{'fields':[_0x12cc('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 6afbfaf..ec87936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f26=['code','message','info','result','VoiceDialReport','create','body','options','raw','CreateVoiceDialReport','catch','UpdateVoiceDialReport','update','where','attributes','limit','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','request','then','VoiceDialReport,\x20%s,\x20%s','request\x20sent','debug','VoiceDialReport,\x20%s,\x20%s,\x20%s','error'];(function(_0x1d5d38,_0x48247a){var _0x173c83=function(_0x2a0d83){while(--_0x2a0d83){_0x1d5d38['push'](_0x1d5d38['shift']());}};_0x173c83(++_0x48247a);}(_0x5f26,0x19c));var _0x65f2=function(_0x4432f2,_0x22697a){_0x4432f2=_0x4432f2-0x0;var _0x1c97d6=_0x5f26[_0x4432f2];return _0x1c97d6;};'use strict';var _=require('lodash');var util=require(_0x65f2('0x0'));var moment=require(_0x65f2('0x1'));var BPromise=require('bluebird');var rs=require(_0x65f2('0x2'));var fs=require('fs');var Redis=require(_0x65f2('0x3'));var db=require(_0x65f2('0x4'))['db'];var utils=require(_0x65f2('0x5'));var logger=require('../../config/logger')(_0x65f2('0x6'));var config=require(_0x65f2('0x7'));var jayson=require(_0x65f2('0x8'));var client=jayson['client'][_0x65f2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x15ac31,_0x405388,_0x569ff6){return new BPromise(function(_0x37fefe,_0x19c165){return client[_0x65f2('0xa')](_0x15ac31,_0x569ff6)[_0x65f2('0xb')](function(_0xd5d214){logger['info'](_0x65f2('0xc'),_0x405388,_0x65f2('0xd'));logger[_0x65f2('0xe')](_0x65f2('0xf'),_0x405388,_0x65f2('0xd'),JSON['stringify'](_0xd5d214));if(_0xd5d214['error']){if(_0xd5d214[_0x65f2('0x10')][_0x65f2('0x11')]===0x1f4){logger[_0x65f2('0x10')](_0x65f2('0xc'),_0x405388,_0xd5d214['error'][_0x65f2('0x12')]);return _0x19c165(_0xd5d214[_0x65f2('0x10')][_0x65f2('0x12')]);}logger[_0x65f2('0x10')](_0x65f2('0xc'),_0x405388,_0xd5d214[_0x65f2('0x10')][_0x65f2('0x12')]);return _0x37fefe(_0xd5d214['error'][_0x65f2('0x12')]);}else{logger[_0x65f2('0x13')](_0x65f2('0xc'),_0x405388,_0x65f2('0xd'));_0x37fefe(_0xd5d214[_0x65f2('0x14')][_0x65f2('0x12')]);}})['catch'](function(_0x2dcb9f){logger[_0x65f2('0x10')](_0x65f2('0xc'),_0x405388,_0x2dcb9f);_0x19c165(_0x2dcb9f);});});}exports['CreateVoiceDialReport']=function(_0x378229){var _0x100502=this;return new Promise(function(_0x182496,_0x5d3fda){return db[_0x65f2('0x15')][_0x65f2('0x16')](_0x378229[_0x65f2('0x17')],{'raw':_0x378229[_0x65f2('0x18')]?_0x378229['options'][_0x65f2('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x3ce683){logger[_0x65f2('0x13')](_0x65f2('0x1a'),_0x378229);logger['debug'](_0x65f2('0x1a'),_0x378229,JSON['stringify'](_0x3ce683));_0x182496(_0x3ce683);})[_0x65f2('0x1b')](function(_0x5a829d){logger[_0x65f2('0x10')](_0x65f2('0x1a'),_0x5a829d[_0x65f2('0x12')],_0x378229);_0x5d3fda(_0x100502[_0x65f2('0x10')](0x1f4,_0x5a829d['message']));});});};exports[_0x65f2('0x1c')]=function(_0x39b2d5){var _0x12e2da=this;return new Promise(function(_0x2cb92d,_0x1eea03){return db[_0x65f2('0x15')][_0x65f2('0x1d')](_0x39b2d5['body'],{'raw':_0x39b2d5[_0x65f2('0x18')]?_0x39b2d5[_0x65f2('0x18')][_0x65f2('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x39b2d5[_0x65f2('0x18')]?_0x39b2d5[_0x65f2('0x18')][_0x65f2('0x1e')]||null:null,'attributes':_0x39b2d5[_0x65f2('0x18')]?_0x39b2d5[_0x65f2('0x18')][_0x65f2('0x1f')]||null:null,'limit':_0x39b2d5[_0x65f2('0x18')]?_0x39b2d5[_0x65f2('0x18')][_0x65f2('0x20')]||null:null})[_0x65f2('0xb')](function(_0x338d12){logger[_0x65f2('0x13')](_0x65f2('0x1c'),_0x39b2d5);logger[_0x65f2('0xe')](_0x65f2('0x1c'),_0x39b2d5,JSON['stringify'](_0x338d12));_0x2cb92d(_0x338d12);})[_0x65f2('0x1b')](function(_0x4c41d0){logger['error'](_0x65f2('0x1c'),_0x4c41d0[_0x65f2('0x12')],_0x39b2d5);_0x1eea03(_0x12e2da[_0x65f2('0x10')](0x1f4,_0x4c41d0[_0x65f2('0x12')]));});});};
\ No newline at end of file
+var _0xfbd8=['randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceDialReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','options','raw','UpdateVoiceDialReport','update','body','attributes','limit','lodash','util','moment','bluebird'];(function(_0x33768b,_0x4c6540){var _0x182e97=function(_0xf6bff5){while(--_0xf6bff5){_0x33768b['push'](_0x33768b['shift']());}};_0x182e97(++_0x4c6540);}(_0xfbd8,0x146));var _0x8fbd=function(_0x9336f8,_0x286899){_0x9336f8=_0x9336f8-0x0;var _0x32adbb=_0xfbd8[_0x9336f8];return _0x32adbb;};'use strict';var _=require(_0x8fbd('0x0'));var util=require(_0x8fbd('0x1'));var moment=require(_0x8fbd('0x2'));var BPromise=require(_0x8fbd('0x3'));var rs=require(_0x8fbd('0x4'));var fs=require('fs');var Redis=require(_0x8fbd('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x8fbd('0x6'));var logger=require(_0x8fbd('0x7'))(_0x8fbd('0x8'));var config=require(_0x8fbd('0x9'));var jayson=require(_0x8fbd('0xa'));var client=jayson['client'][_0x8fbd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cb930,_0x57d03f,_0x5ecf05){return new BPromise(function(_0x4b8b94,_0x505bae){return client[_0x8fbd('0xc')](_0x1cb930,_0x5ecf05)[_0x8fbd('0xd')](function(_0x11eabf){logger[_0x8fbd('0xe')](_0x8fbd('0xf'),_0x57d03f,'request\x20sent');logger[_0x8fbd('0x10')]('VoiceDialReport,\x20%s,\x20%s,\x20%s',_0x57d03f,_0x8fbd('0x11'),JSON[_0x8fbd('0x12')](_0x11eabf));if(_0x11eabf[_0x8fbd('0x13')]){if(_0x11eabf[_0x8fbd('0x13')]['code']===0x1f4){logger[_0x8fbd('0x13')](_0x8fbd('0xf'),_0x57d03f,_0x11eabf[_0x8fbd('0x13')][_0x8fbd('0x14')]);return _0x505bae(_0x11eabf['error'][_0x8fbd('0x14')]);}logger[_0x8fbd('0x13')](_0x8fbd('0xf'),_0x57d03f,_0x11eabf['error'][_0x8fbd('0x14')]);return _0x4b8b94(_0x11eabf[_0x8fbd('0x13')]['message']);}else{logger[_0x8fbd('0xe')]('VoiceDialReport,\x20%s,\x20%s',_0x57d03f,'request\x20sent');_0x4b8b94(_0x11eabf[_0x8fbd('0x15')][_0x8fbd('0x14')]);}})[_0x8fbd('0x16')](function(_0x428727){logger['error'](_0x8fbd('0xf'),_0x57d03f,_0x428727);_0x505bae(_0x428727);});});}exports[_0x8fbd('0x17')]=function(_0x14aa7f){var _0x1c81b8=this;return new Promise(function(_0x54f419,_0x9186f2){return db[_0x8fbd('0x18')][_0x8fbd('0x19')](_0x14aa7f['body'],{'raw':_0x14aa7f[_0x8fbd('0x1a')]?_0x14aa7f[_0x8fbd('0x1a')][_0x8fbd('0x1b')]===undefined?!![]:![]:!![]})[_0x8fbd('0xd')](function(_0x2c0d04){logger[_0x8fbd('0xe')](_0x8fbd('0x17'),_0x14aa7f);logger[_0x8fbd('0x10')](_0x8fbd('0x17'),_0x14aa7f,JSON[_0x8fbd('0x12')](_0x2c0d04));_0x54f419(_0x2c0d04);})[_0x8fbd('0x16')](function(_0x3e76ba){logger[_0x8fbd('0x13')](_0x8fbd('0x17'),_0x3e76ba['message'],_0x14aa7f);_0x9186f2(_0x1c81b8[_0x8fbd('0x13')](0x1f4,_0x3e76ba[_0x8fbd('0x14')]));});});};exports[_0x8fbd('0x1c')]=function(_0x575a26){var _0x4652f5=this;return new Promise(function(_0x466f94,_0x28039f){return db['VoiceDialReport'][_0x8fbd('0x1d')](_0x575a26[_0x8fbd('0x1e')],{'raw':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')][_0x8fbd('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')]['where']||null:null,'attributes':_0x575a26[_0x8fbd('0x1a')]?_0x575a26[_0x8fbd('0x1a')][_0x8fbd('0x1f')]||null:null,'limit':_0x575a26['options']?_0x575a26['options'][_0x8fbd('0x20')]||null:null})[_0x8fbd('0xd')](function(_0x106255){logger[_0x8fbd('0xe')](_0x8fbd('0x1c'),_0x575a26);logger[_0x8fbd('0x10')](_0x8fbd('0x1c'),_0x575a26,JSON[_0x8fbd('0x12')](_0x106255));_0x466f94(_0x106255);})[_0x8fbd('0x16')](function(_0x300c9b){logger['error'](_0x8fbd('0x1c'),_0x300c9b['message'],_0x575a26);_0x28039f(_0x4652f5[_0x8fbd('0x13')](0x1f4,_0x300c9b[_0x8fbd('0x14')]));});});};
\ No newline at end of file
index 3e02615..c22aaf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a8b=['/:id','isAuthenticated','show','addApplications','put','update','delete','destroy','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceExtension.controller','get'];(function(_0xb8e6fa,_0x5d75c7){var _0x2ac333=function(_0x5ccbb1){while(--_0x5ccbb1){_0xb8e6fa['push'](_0xb8e6fa['shift']());}};_0x2ac333(++_0x5d75c7);}(_0x5a8b,0x1ee));var _0xb5a8=function(_0x49f547,_0x3484f3){_0x49f547=_0x49f547-0x0;var _0xfc9aa4=_0x5a8b[_0x49f547];return _0xfc9aa4;};'use strict';var multer=require(_0xb5a8('0x0'));var util=require('util');var path=require(_0xb5a8('0x1'));var timeout=require(_0xb5a8('0x2'));var express=require(_0xb5a8('0x3'));var router=express[_0xb5a8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xb5a8('0x5'));var interaction=require(_0xb5a8('0x6'));var config=require(_0xb5a8('0x7'));var controller=require(_0xb5a8('0x8'));router[_0xb5a8('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xb5a8('0x9')](_0xb5a8('0xa'),auth[_0xb5a8('0xb')](),controller[_0xb5a8('0xc')]);router['post']('/',auth[_0xb5a8('0xb')](),controller['create']);router['post']('/:id/applications',auth[_0xb5a8('0xb')](),controller[_0xb5a8('0xd')]);router[_0xb5a8('0xe')](_0xb5a8('0xa'),auth[_0xb5a8('0xb')](),controller[_0xb5a8('0xf')]);router[_0xb5a8('0x10')](_0xb5a8('0xa'),auth['isAuthenticated'](),controller[_0xb5a8('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xc6c6=['../../components/interaction/service','../../config/environment','./voiceExtension.controller','get','isAuthenticated','index','/:id','post','/:id/applications','addApplications','put','update','delete','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service'];(function(_0x8ae98b,_0x155f88){var _0xc30bd4=function(_0x5ca462){while(--_0x5ca462){_0x8ae98b['push'](_0x8ae98b['shift']());}};_0xc30bd4(++_0x155f88);}(_0xc6c6,0x15f));var _0x6c6c=function(_0x297c55,_0x34fa75){_0x297c55=_0x297c55-0x0;var _0x120389=_0xc6c6[_0x297c55];return _0x120389;};'use strict';var multer=require(_0x6c6c('0x0'));var util=require('util');var path=require(_0x6c6c('0x1'));var timeout=require(_0x6c6c('0x2'));var express=require(_0x6c6c('0x3'));var router=express['Router']();var fs_extra=require(_0x6c6c('0x4'));var auth=require(_0x6c6c('0x5'));var interaction=require(_0x6c6c('0x6'));var config=require(_0x6c6c('0x7'));var controller=require(_0x6c6c('0x8'));router[_0x6c6c('0x9')]('/',auth[_0x6c6c('0xa')](),controller[_0x6c6c('0xb')]);router[_0x6c6c('0x9')](_0x6c6c('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x6c6c('0xd')]('/',auth[_0x6c6c('0xa')](),controller['create']);router[_0x6c6c('0xd')](_0x6c6c('0xe'),auth[_0x6c6c('0xa')](),controller[_0x6c6c('0xf')]);router[_0x6c6c('0x10')](_0x6c6c('0xc'),auth['isAuthenticated'](),controller[_0x6c6c('0x11')]);router[_0x6c6c('0x12')](_0x6c6c('0xc'),auth[_0x6c6c('0xa')](),controller[_0x6c6c('0x13')]);module[_0x6c6c('0x14')]=router;
\ No newline at end of file
index 74e2b18..c78c420 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30d2=['exten','sequelize','exports','compositeIndex','STRING','NoOp','ENUM','internal','inbound-fax','outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue'];(function(_0x5bc69d,_0x25137d){var _0x154d9c=function(_0x10a8b0){while(--_0x10a8b0){_0x5bc69d['push'](_0x5bc69d['shift']());}};_0x154d9c(++_0x25137d);}(_0x30d2,0x122));var _0x230d=function(_0x2040a7,_0x8da657){_0x2040a7=_0x2040a7-0x0;var _0x346357=_0x30d2[_0x2040a7];return _0x346357;};'use strict';var Sequelize=require(_0x230d('0x0'));module[_0x230d('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x230d('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x230d('0x3')],'allowNull':![],'defaultValue':'1','unique':'compositeIndex'},'tag':{'type':Sequelize[_0x230d('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x230d('0x3')],'allowNull':![],'defaultValue':_0x230d('0x4')},'appdata':{'type':Sequelize[_0x230d('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x230d('0x5')]('inbound','outbound',_0x230d('0x6'),_0x230d('0x7'),_0x230d('0x8'),_0x230d('0x9'),'any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x230d('0x3')],'allowNull':![],'defaultValue':_0x230d('0xa')},'IntervalId':{'type':Sequelize[_0x230d('0xb')]},'isApp':{'type':Sequelize[_0x230d('0xc')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x230d('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0x230d('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0x230d('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x230d('0xb')]},'recordingFormat':{'type':Sequelize[_0x230d('0x3')],'defaultValue':_0x230d('0xd')},'answer':{'type':Sequelize[_0x230d('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x230d('0xe')],'get':function(_0x2f0254){return this[_0x230d('0xf')](_0x230d('0x10'));}},'alias':{'type':Sequelize[_0x230d('0x3')],'allowNull':!![]}};
\ No newline at end of file
+var _0x81ac=['compositeIndex','STRING','NoOp','ENUM','inbound','outbound','internal','inbound-fax','outbound-fax','system','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','exports'];(function(_0x27af45,_0x1b57aa){var _0x18df21=function(_0x4b7679){while(--_0x4b7679){_0x27af45['push'](_0x27af45['shift']());}};_0x18df21(++_0x1b57aa);}(_0x81ac,0x6a));var _0xc81a=function(_0x34317c,_0x349d02){_0x34317c=_0x34317c-0x0;var _0x4007af=_0x81ac[_0x34317c];return _0x4007af;};'use strict';var Sequelize=require(_0xc81a('0x0'));module[_0xc81a('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xc81a('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'unique':_0xc81a('0x2')},'priority':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':'1','unique':_0xc81a('0x2')},'tag':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':_0xc81a('0x4')},'appdata':{'type':Sequelize[_0xc81a('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0xc81a('0x5')](_0xc81a('0x6'),_0xc81a('0x7'),_0xc81a('0x8'),_0xc81a('0x9'),_0xc81a('0xa'),_0xc81a('0xb'),'any'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xc81a('0x3')],'allowNull':![],'defaultValue':_0xc81a('0xc')},'IntervalId':{'type':Sequelize[_0xc81a('0xd')]},'isApp':{'type':Sequelize[_0xc81a('0xe')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0xc81a('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0xc81a('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0xc81a('0xe')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0xc81a('0xd')]},'recordingFormat':{'type':Sequelize[_0xc81a('0x3')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0xc81a('0xe')],'defaultValue':!![]},'name':{'type':Sequelize[_0xc81a('0xf')],'get':function(_0x2a17ae){return this[_0xc81a('0x10')](_0xc81a('0x11'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
index d198d48..3ac4ccc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87a1=['model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','rows','catch','show','params','rawAttributes','create','startsWith','body','exten','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','internal','UserProfileSection','update','context','description','recordingFormat','cutdigits','mandatoryDisposition','alias','addApplications','sequelize','transaction','READ_COMMITTED','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','destroy','then','get','InboundRoutes','inbound','OutboundRoutes','outbound','InternalRoutes','ignore','map','value','includes','type','find','name','UserProfileResource','error','stack','send','index','VoiceExtension','fieldName','key'];(function(_0x13ea00,_0x12f610){var _0x1f7347=function(_0x34ae63){while(--_0x34ae63){_0x13ea00['push'](_0x13ea00['shift']());}};_0x1f7347(++_0x12f610);}(_0x87a1,0x150));var _0x187a=function(_0x134c2e,_0x3573c4){_0x134c2e=_0x134c2e-0x0;var _0x2825db=_0x87a1[_0x134c2e];return _0x2825db;};'use strict';var _=require(_0x187a('0x0'));var Redis=require(_0x187a('0x1'));var qs=require(_0x187a('0x2'));var logger=require(_0x187a('0x3'))(_0x187a('0x4'));var config=require(_0x187a('0x5'));var db=require(_0x187a('0x6'))['db'];config[_0x187a('0x7')]=_[_0x187a('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x187a('0x9'))(new Redis(config[_0x187a('0x7')]));require(_0x187a('0xa'))[_0x187a('0xb')](socket);function respondWithStatusCode(_0xa98d3b,_0x1d6d00){_0x1d6d00=_0x1d6d00||0xcc;return function(_0x3ee69){if(_0x3ee69){return _0xa98d3b[_0x187a('0xc')](_0x1d6d00);}return _0xa98d3b[_0x187a('0xd')](_0x1d6d00)[_0x187a('0xe')]();};}function respondWithResult(_0x35bb39,_0xfb68e6){_0xfb68e6=_0xfb68e6||0xc8;return function(_0x141e1c){if(_0x141e1c){return _0x35bb39['status'](_0xfb68e6)[_0x187a('0xf')](_0x141e1c);}};}function respondWithFilteredResult(_0x2e3f87,_0x90ed80){return function(_0x32af4d){if(_0x32af4d){var _0x5ca392=typeof _0x90ed80[_0x187a('0x10')]===_0x187a('0x11')&&typeof _0x90ed80['limit']==='undefined';var _0x324d36=_0x32af4d[_0x187a('0x12')];var _0x3e38ba=_0x5ca392?0x0:_0x90ed80[_0x187a('0x10')];var _0x59ddb8=_0x5ca392?_0x32af4d[_0x187a('0x12')]:_0x90ed80[_0x187a('0x10')]+_0x90ed80[_0x187a('0x13')];var _0x4f9a8d;if(_0x59ddb8>=_0x324d36){_0x59ddb8=_0x324d36;_0x4f9a8d=0xc8;}else{_0x4f9a8d=0xce;}_0x2e3f87[_0x187a('0xd')](_0x4f9a8d);return _0x2e3f87['set'](_0x187a('0x14'),_0x3e38ba+'-'+_0x59ddb8+'/'+_0x324d36)['json'](_0x32af4d);}return null;};}function removeEntity(_0x202ce3){return function(_0x50b706){if(_0x50b706){return _0x50b706[_0x187a('0x15')]()[_0x187a('0x16')](function(){var _0x129146=_0x50b706[_0x187a('0x17')]({'plain':!![]});var _0x2e88f1=[{'name':_0x187a('0x18'),'value':_0x187a('0x19'),'ignore':![]},{'name':_0x187a('0x1a'),'value':_0x187a('0x1b'),'ignore':![]},{'name':_0x187a('0x1c'),'value':'internal','ignore':![]}];var _0x4d2326=_(_0x2e88f1)['filter'](_0x187a('0x1d'))[_0x187a('0x1e')](_0x187a('0x1f'))[_0x187a('0x1f')]();if(_[_0x187a('0x20')](_0x4d2326,_0x129146[_0x187a('0x21')])){return;}var _0x92363c=_[_0x187a('0x22')](_0x2e88f1,[_0x187a('0x1f'),_0x129146['type']])[_0x187a('0x23')];return db[_0x187a('0x24')][_0x187a('0x15')]({'where':{'type':_0x92363c,'resourceId':_0x129146['id']}})[_0x187a('0x16')](function(){return _0x50b706;});})[_0x187a('0x16')](function(){_0x202ce3['status'](0xcc)[_0x187a('0xe')]();});}};}function handleEntityNotFound(_0x11e71a){return function(_0xb51076){if(!_0xb51076){_0x11e71a['sendStatus'](0x194);}return _0xb51076;};}function handleError(_0x301866,_0x562183){_0x562183=_0x562183||0x1f4;return function(_0x1ccf38){logger[_0x187a('0x25')](_0x1ccf38[_0x187a('0x26')]);if(_0x1ccf38['name']){delete _0x1ccf38[_0x187a('0x23')];}_0x301866['status'](_0x562183)[_0x187a('0x27')](_0x1ccf38);};}exports[_0x187a('0x28')]=function(_0x5d82e2,_0x11fde5){var _0x10b252={},_0x328100={},_0x3d79f3={'count':0x0,'rows':[]};var _0x47cd2c=_[_0x187a('0x1e')](db[_0x187a('0x29')]['rawAttributes'],function(_0x59af44){return{'name':_0x59af44[_0x187a('0x2a')],'type':_0x59af44[_0x187a('0x21')][_0x187a('0x2b')]};});_0x328100[_0x187a('0x2c')]=_[_0x187a('0x1e')](_0x47cd2c,_0x187a('0x23'));_0x328100['query']=_[_0x187a('0x2d')](_0x5d82e2[_0x187a('0x2e')]);_0x328100[_0x187a('0x2f')]=_['intersection'](_0x328100[_0x187a('0x2c')],_0x328100[_0x187a('0x2e')]);_0x10b252[_0x187a('0x30')]=_[_0x187a('0x31')](_0x328100[_0x187a('0x2c')],qs['fields'](_0x5d82e2[_0x187a('0x2e')][_0x187a('0x32')]));_0x10b252[_0x187a('0x30')]=_0x10b252[_0x187a('0x30')][_0x187a('0x33')]?_0x10b252[_0x187a('0x30')]:_0x328100['model'];if(!_0x5d82e2[_0x187a('0x2e')][_0x187a('0x34')](_0x187a('0x35'))){_0x10b252['limit']=qs[_0x187a('0x13')](_0x5d82e2['query'][_0x187a('0x13')]);_0x10b252[_0x187a('0x10')]=qs[_0x187a('0x10')](_0x5d82e2[_0x187a('0x2e')][_0x187a('0x10')]);}_0x10b252[_0x187a('0x36')]=qs[_0x187a('0x37')](_0x5d82e2['query']['sort']);_0x10b252['where']=qs[_0x187a('0x2f')](_[_0x187a('0x38')](_0x5d82e2[_0x187a('0x2e')],_0x328100[_0x187a('0x2f')]),_0x47cd2c);if(_0x5d82e2[_0x187a('0x2e')]['filter']){_0x10b252[_0x187a('0x39')]=_[_0x187a('0x3a')](_0x10b252[_0x187a('0x39')],{'$or':_[_0x187a('0x1e')](_0x47cd2c,function(_0x5474d9){if(_0x5474d9[_0x187a('0x21')]!==_0x187a('0x3b')){var _0x10551c={};_0x10551c[_0x5474d9[_0x187a('0x23')]]={'$like':'%'+_0x5d82e2[_0x187a('0x2e')][_0x187a('0x3c')]+'%'};return _0x10551c;}})});}_0x10b252=_[_0x187a('0x3a')]({},_0x10b252,_0x5d82e2[_0x187a('0x3d')]);var _0xe5a7d6={'where':_0x10b252[_0x187a('0x39')]};return db[_0x187a('0x29')]['count'](_0xe5a7d6)['then'](function(_0x43856d){_0x3d79f3[_0x187a('0x12')]=_0x43856d;if(_0x5d82e2[_0x187a('0x2e')][_0x187a('0x3e')]){_0x10b252['include']=[{'all':!![]}];}return db[_0x187a('0x29')][_0x187a('0x3f')](_0x10b252);})[_0x187a('0x16')](function(_0x39279a){_0x3d79f3[_0x187a('0x40')]=_0x39279a;return _0x3d79f3;})[_0x187a('0x16')](respondWithFilteredResult(_0x11fde5,_0x10b252))[_0x187a('0x41')](handleError(_0x11fde5,null));};exports[_0x187a('0x42')]=function(_0x21a4c3,_0x345ee0){var _0x33ac34={'raw':![],'where':{'id':_0x21a4c3[_0x187a('0x43')]['id']}},_0x5396df={};_0x5396df[_0x187a('0x2c')]=_['keys'](db[_0x187a('0x29')][_0x187a('0x44')]);_0x5396df[_0x187a('0x2e')]=_[_0x187a('0x2d')](_0x21a4c3['query']);_0x5396df[_0x187a('0x2f')]=_[_0x187a('0x31')](_0x5396df[_0x187a('0x2c')],_0x5396df['query']);_0x33ac34['attributes']=_[_0x187a('0x31')](_0x5396df['model'],qs[_0x187a('0x32')](_0x21a4c3[_0x187a('0x2e')][_0x187a('0x32')]));_0x33ac34[_0x187a('0x30')]=_0x33ac34[_0x187a('0x30')][_0x187a('0x33')]?_0x33ac34['attributes']:_0x5396df[_0x187a('0x2c')];if(_0x21a4c3[_0x187a('0x2e')]['includeAll']){_0x33ac34['include']=[{'all':!![]}];}_0x33ac34=_['merge']({},_0x33ac34,_0x21a4c3[_0x187a('0x3d')]);return db[_0x187a('0x29')][_0x187a('0x22')](_0x33ac34)['then'](handleEntityNotFound(_0x345ee0,null))[_0x187a('0x16')](respondWithResult(_0x345ee0,null))[_0x187a('0x41')](handleError(_0x345ee0,null));};exports[_0x187a('0x15')]=function(_0x3328b3,_0x9415a8){return db[_0x187a('0x29')][_0x187a('0x22')]({'where':{'id':_0x3328b3[_0x187a('0x43')]['id']}})[_0x187a('0x16')](handleEntityNotFound(_0x9415a8,null))[_0x187a('0x16')](removeEntity(_0x9415a8,null))['catch'](handleError(_0x9415a8,null));};exports[_0x187a('0x45')]=function(_0x7dd45c,_0x2196c8){if(_0x7dd45c['body']['type']==='outbound'&&!_[_0x187a('0x46')](_0x7dd45c[_0x187a('0x47')][_0x187a('0x48')],'_')){_0x7dd45c['body'][_0x187a('0x48')]='_'['concat'](_0x7dd45c['body']['exten']);}return db['VoiceExtension'][_0x187a('0x45')](_0x7dd45c['body'],{'raw':![]})[_0x187a('0x16')](function(_0x4d5089){var _0x26fb1d=_0x7dd45c[_0x187a('0x49')]['get']({'plain':!![]});if(!_0x26fb1d)throw new Error(_0x187a('0x4a'));if(_0x26fb1d[_0x187a('0x4b')]===_0x187a('0x49')){var _0x3f8593=_0x4d5089['get']({'plain':!![]});var _0x33f619=[{'name':'InboundRoutes','value':_0x187a('0x19')},{'name':_0x187a('0x1a'),'value':'outbound'},{'name':'InternalRoutes','value':_0x187a('0x4c')}];var _0x2b86f2=_['find'](_0x33f619,[_0x187a('0x1f'),_0x3f8593['type']])['name'];return db[_0x187a('0x4d')][_0x187a('0x22')]({'where':{'name':_0x2b86f2,'userProfileId':_0x26fb1d['userProfileId']},'raw':!![]})['then'](function(_0x1e079d){if(_0x1e079d&&_0x1e079d['autoAssociation']===0x0){return db[_0x187a('0x24')][_0x187a('0x45')]({'name':_0x3f8593[_0x187a('0x23')],'resourceId':_0x3f8593['id'],'type':_0x1e079d[_0x187a('0x23')],'sectionId':_0x1e079d['id']},{})[_0x187a('0x16')](function(){return _0x4d5089;});}else{return _0x4d5089;}})[_0x187a('0x41')](function(_0x19534a){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x19534a);throw _0x19534a;});}return _0x4d5089;})[_0x187a('0x16')](respondWithResult(_0x2196c8,0xc9))[_0x187a('0x41')](handleError(_0x2196c8,null));};exports['update']=function(_0x56ecde,_0x38d3d5){if(_0x56ecde[_0x187a('0x47')]['id']){delete _0x56ecde[_0x187a('0x47')]['id'];}return db[_0x187a('0x29')][_0x187a('0x22')]({'where':{'id':_0x56ecde['params']['id']}})[_0x187a('0x16')](handleEntityNotFound(_0x38d3d5,null))[_0x187a('0x16')](function(_0x4b235d){if(_0x4b235d){return db[_0x187a('0x29')][_0x187a('0x4e')](_[_0x187a('0x38')](_0x56ecde['body'],[_0x187a('0x48'),_0x187a('0x4f'),_0x187a('0x50'),_0x187a('0x51'),_0x187a('0x52'),_0x187a('0x53'),_0x187a('0x54')]),{'where':{'context':_0x4b235d[_0x187a('0x4f')],'exten':_0x4b235d[_0x187a('0x48')]},'individualHooks':!![]})[_0x187a('0x16')](function(_0x32488c){return _0x32488c;});}return null;})[_0x187a('0x16')](respondWithStatusCode(_0x38d3d5,null))['catch'](handleError(_0x38d3d5,null));};exports[_0x187a('0x55')]=function(_0x96fa76,_0x5e83dd){var _0x5d80d8=_0x96fa76[_0x187a('0x43')]['id'];var _0x4db137=_0x96fa76[_0x187a('0x47')];var _0xf6ccdb=0xc8;var _0x59df2c=null;return db[_0x187a('0x56')][_0x187a('0x57')]({'isolationLevel':db[_0x187a('0x56')]['Transaction']['ISOLATION_LEVELS'][_0x187a('0x58')]},function(_0x459e75){return db[_0x187a('0x29')]['findOne']({'where':{'id':_0x5d80d8},'transaction':_0x459e75})['then'](function(_0x1ceb11){if(_0x1ceb11){return db[_0x187a('0x29')][_0x187a('0x15')]({'where':{'VoiceExtensionId':_0x5d80d8},'transaction':_0x459e75})[_0x187a('0x16')](function(){var _0x39b002=_[_0x187a('0x1e')](_0x4db137,function(_0x506096){_0x506096[_0x187a('0x59')]=_0x5d80d8;_0x506096[_0x187a('0x5a')]=!![];return _0x506096;});return _0x1ceb11[_0x187a('0x5b')](_0x39b002);})['then'](function(_0x1fd861){return db[_0x187a('0x29')][_0x187a('0x5c')](_0x1fd861,{'transaction':_0x459e75});});}else{_0xf6ccdb=0x194;_0x59df2c=[];}});})['then'](function(){if(_0xf6ccdb!==0x194){return db[_0x187a('0x29')][_0x187a('0x5d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5d80d8},'order':_0x187a('0x5e')})[_0x187a('0x16')](function(_0x12bd6e){_0x59df2c=_0x12bd6e;});}})[_0x187a('0x41')](function(_0x3b41e7){_0xf6ccdb=0x1f4;logger[_0x187a('0x25')](_0x3b41e7[_0x187a('0x26')]);if(_0x3b41e7['name']){delete _0x3b41e7['name'];}_0x59df2c=_0x3b41e7;})['finally'](function(){if(_0x59df2c===null){_0x5e83dd['sendStatus'](_0xf6ccdb);}else{if(_0xf6ccdb===0x1f4){_0x5e83dd['status'](_0xf6ccdb)[_0x187a('0x27')](_0x59df2c);}else{_0x5e83dd[_0x187a('0xd')](_0xf6ccdb)['json'](_0x59df2c);}}});};
\ No newline at end of file
+var _0x11b9=['outbound','startsWith','exten','concat','create','role','user','InboundRoutes','inbound','InternalRoutes','internal','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','recordingFormat','alias','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','cast(priority\x20as\x20unsigned)','finally','lodash','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','destroy','get','OutboundRoutes','filter','ignore','value','includes','type','find','name','then','error','send','map','rawAttributes','fieldName','key','query','keys','intersection','model','attributes','fields','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','VoiceExtension','show','params','length','options','catch','body'];(function(_0x587066,_0x13695f){var _0x2e2a57=function(_0x50b612){while(--_0x50b612){_0x587066['push'](_0x587066['shift']());}};_0x2e2a57(++_0x13695f);}(_0x11b9,0x142));var _0x911b=function(_0x4f317e,_0x3a42b5){_0x4f317e=_0x4f317e-0x0;var _0x59bd95=_0x11b9[_0x4f317e];return _0x59bd95;};'use strict';var _=require(_0x911b('0x0'));var Redis=require(_0x911b('0x1'));var qs=require(_0x911b('0x2'));var logger=require('../../config/logger')(_0x911b('0x3'));var config=require(_0x911b('0x4'));var db=require(_0x911b('0x5'))['db'];config[_0x911b('0x6')]=_[_0x911b('0x7')](config[_0x911b('0x6')],{'host':_0x911b('0x8'),'port':0x18eb});var socket=require(_0x911b('0x9'))(new Redis(config[_0x911b('0x6')]));require(_0x911b('0xa'))[_0x911b('0xb')](socket);function respondWithStatusCode(_0x8ed1d3,_0x1d4678){_0x1d4678=_0x1d4678||0xcc;return function(_0x5ea77f){if(_0x5ea77f){return _0x8ed1d3[_0x911b('0xc')](_0x1d4678);}return _0x8ed1d3[_0x911b('0xd')](_0x1d4678)[_0x911b('0xe')]();};}function respondWithResult(_0x443dbb,_0x7ad9e0){_0x7ad9e0=_0x7ad9e0||0xc8;return function(_0x539f3c){if(_0x539f3c){return _0x443dbb[_0x911b('0xd')](_0x7ad9e0)[_0x911b('0xf')](_0x539f3c);}};}function respondWithFilteredResult(_0x3c0524,_0x9b0e32){return function(_0xde1d0a){if(_0xde1d0a){var _0x3de5dd=typeof _0x9b0e32['offset']===_0x911b('0x10')&&typeof _0x9b0e32[_0x911b('0x11')]==='undefined';var _0x3d17c3=_0xde1d0a[_0x911b('0x12')];var _0x53bb79=_0x3de5dd?0x0:_0x9b0e32[_0x911b('0x13')];var _0x4838f2=_0x3de5dd?_0xde1d0a['count']:_0x9b0e32[_0x911b('0x13')]+_0x9b0e32['limit'];var _0x108710;if(_0x4838f2>=_0x3d17c3){_0x4838f2=_0x3d17c3;_0x108710=0xc8;}else{_0x108710=0xce;}_0x3c0524[_0x911b('0xd')](_0x108710);return _0x3c0524[_0x911b('0x14')](_0x911b('0x15'),_0x53bb79+'-'+_0x4838f2+'/'+_0x3d17c3)['json'](_0xde1d0a);}return null;};}function removeEntity(_0x13027e){return function(_0x1aaa59){if(_0x1aaa59){return _0x1aaa59[_0x911b('0x16')]()['then'](function(){var _0x21f218=_0x1aaa59[_0x911b('0x17')]({'plain':!![]});var _0x374262=[{'name':'InboundRoutes','value':'inbound','ignore':![]},{'name':_0x911b('0x18'),'value':'outbound','ignore':![]},{'name':'InternalRoutes','value':'internal','ignore':![]}];var _0x4aa77b=_(_0x374262)[_0x911b('0x19')](_0x911b('0x1a'))['map'](_0x911b('0x1b'))['value']();if(_[_0x911b('0x1c')](_0x4aa77b,_0x21f218[_0x911b('0x1d')])){return;}var _0x3aee45=_[_0x911b('0x1e')](_0x374262,[_0x911b('0x1b'),_0x21f218[_0x911b('0x1d')]])[_0x911b('0x1f')];return db['UserProfileResource'][_0x911b('0x16')]({'where':{'type':_0x3aee45,'resourceId':_0x21f218['id']}})['then'](function(){return _0x1aaa59;});})[_0x911b('0x20')](function(){_0x13027e[_0x911b('0xd')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4eef74){return function(_0x2b0210){if(!_0x2b0210){_0x4eef74[_0x911b('0xc')](0x194);}return _0x2b0210;};}function handleError(_0x2f48b9,_0x30c2e8){_0x30c2e8=_0x30c2e8||0x1f4;return function(_0x1dd61c){logger[_0x911b('0x21')](_0x1dd61c['stack']);if(_0x1dd61c[_0x911b('0x1f')]){delete _0x1dd61c['name'];}_0x2f48b9[_0x911b('0xd')](_0x30c2e8)[_0x911b('0x22')](_0x1dd61c);};}exports['index']=function(_0x580a3a,_0x2a5dbb){var _0xf0e9e2={},_0xc6a284={},_0x40a8f1={'count':0x0,'rows':[]};var _0x5999e7=_[_0x911b('0x23')](db['VoiceExtension'][_0x911b('0x24')],function(_0x3cc10a){return{'name':_0x3cc10a[_0x911b('0x25')],'type':_0x3cc10a[_0x911b('0x1d')][_0x911b('0x26')]};});_0xc6a284['model']=_[_0x911b('0x23')](_0x5999e7,'name');_0xc6a284[_0x911b('0x27')]=_[_0x911b('0x28')](_0x580a3a[_0x911b('0x27')]);_0xc6a284['filters']=_[_0x911b('0x29')](_0xc6a284[_0x911b('0x2a')],_0xc6a284[_0x911b('0x27')]);_0xf0e9e2[_0x911b('0x2b')]=_[_0x911b('0x29')](_0xc6a284[_0x911b('0x2a')],qs[_0x911b('0x2c')](_0x580a3a[_0x911b('0x27')][_0x911b('0x2c')]));_0xf0e9e2[_0x911b('0x2b')]=_0xf0e9e2['attributes']['length']?_0xf0e9e2['attributes']:_0xc6a284[_0x911b('0x2a')];if(!_0x580a3a[_0x911b('0x27')]['hasOwnProperty'](_0x911b('0x2d'))){_0xf0e9e2[_0x911b('0x11')]=qs[_0x911b('0x11')](_0x580a3a['query'][_0x911b('0x11')]);_0xf0e9e2[_0x911b('0x13')]=qs[_0x911b('0x13')](_0x580a3a['query'][_0x911b('0x13')]);}_0xf0e9e2[_0x911b('0x2e')]=qs['sort'](_0x580a3a[_0x911b('0x27')][_0x911b('0x2f')]);_0xf0e9e2[_0x911b('0x30')]=qs[_0x911b('0x31')](_[_0x911b('0x32')](_0x580a3a[_0x911b('0x27')],_0xc6a284[_0x911b('0x31')]),_0x5999e7);if(_0x580a3a['query'][_0x911b('0x19')]){_0xf0e9e2[_0x911b('0x30')]=_[_0x911b('0x33')](_0xf0e9e2[_0x911b('0x30')],{'$or':_['map'](_0x5999e7,function(_0x4db2a8){if(_0x4db2a8[_0x911b('0x1d')]!==_0x911b('0x34')){var _0x5530ac={};_0x5530ac[_0x4db2a8[_0x911b('0x1f')]]={'$like':'%'+_0x580a3a['query'][_0x911b('0x19')]+'%'};return _0x5530ac;}})});}_0xf0e9e2=_[_0x911b('0x33')]({},_0xf0e9e2,_0x580a3a['options']);var _0x4d9801={'where':_0xf0e9e2['where']};return db['VoiceExtension']['count'](_0x4d9801)[_0x911b('0x20')](function(_0x1dd418){_0x40a8f1[_0x911b('0x12')]=_0x1dd418;if(_0x580a3a[_0x911b('0x27')][_0x911b('0x35')]){_0xf0e9e2[_0x911b('0x36')]=[{'all':!![]}];}return db[_0x911b('0x37')]['findAll'](_0xf0e9e2);})[_0x911b('0x20')](function(_0x15099b){_0x40a8f1['rows']=_0x15099b;return _0x40a8f1;})['then'](respondWithFilteredResult(_0x2a5dbb,_0xf0e9e2))['catch'](handleError(_0x2a5dbb,null));};exports[_0x911b('0x38')]=function(_0x2dea2c,_0x531b29){var _0x262b03={'raw':![],'where':{'id':_0x2dea2c[_0x911b('0x39')]['id']}},_0x5752d8={};_0x5752d8[_0x911b('0x2a')]=_['keys'](db[_0x911b('0x37')][_0x911b('0x24')]);_0x5752d8[_0x911b('0x27')]=_[_0x911b('0x28')](_0x2dea2c[_0x911b('0x27')]);_0x5752d8[_0x911b('0x31')]=_[_0x911b('0x29')](_0x5752d8[_0x911b('0x2a')],_0x5752d8[_0x911b('0x27')]);_0x262b03[_0x911b('0x2b')]=_[_0x911b('0x29')](_0x5752d8[_0x911b('0x2a')],qs[_0x911b('0x2c')](_0x2dea2c[_0x911b('0x27')]['fields']));_0x262b03['attributes']=_0x262b03['attributes'][_0x911b('0x3a')]?_0x262b03[_0x911b('0x2b')]:_0x5752d8[_0x911b('0x2a')];if(_0x2dea2c['query'][_0x911b('0x35')]){_0x262b03[_0x911b('0x36')]=[{'all':!![]}];}_0x262b03=_[_0x911b('0x33')]({},_0x262b03,_0x2dea2c[_0x911b('0x3b')]);return db[_0x911b('0x37')]['find'](_0x262b03)[_0x911b('0x20')](handleEntityNotFound(_0x531b29,null))[_0x911b('0x20')](respondWithResult(_0x531b29,null))[_0x911b('0x3c')](handleError(_0x531b29,null));};exports['destroy']=function(_0x24af51,_0x142dac){return db['VoiceExtension'][_0x911b('0x1e')]({'where':{'id':_0x24af51[_0x911b('0x39')]['id']}})[_0x911b('0x20')](handleEntityNotFound(_0x142dac,null))['then'](removeEntity(_0x142dac,null))[_0x911b('0x3c')](handleError(_0x142dac,null));};exports['create']=function(_0x3cbaac,_0x19e664){if(_0x3cbaac[_0x911b('0x3d')]['type']===_0x911b('0x3e')&&!_[_0x911b('0x3f')](_0x3cbaac['body'][_0x911b('0x40')],'_')){_0x3cbaac[_0x911b('0x3d')][_0x911b('0x40')]='_'[_0x911b('0x41')](_0x3cbaac[_0x911b('0x3d')]['exten']);}return db[_0x911b('0x37')][_0x911b('0x42')](_0x3cbaac[_0x911b('0x3d')],{'raw':![]})[_0x911b('0x20')](function(_0x37f8a2){var _0x4cbfa6=_0x3cbaac['user']['get']({'plain':!![]});if(!_0x4cbfa6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4cbfa6[_0x911b('0x43')]===_0x911b('0x44')){var _0x8d303b=_0x37f8a2[_0x911b('0x17')]({'plain':!![]});var _0x48361d=[{'name':_0x911b('0x45'),'value':_0x911b('0x46')},{'name':_0x911b('0x18'),'value':_0x911b('0x3e')},{'name':_0x911b('0x47'),'value':_0x911b('0x48')}];var _0xa25789=_[_0x911b('0x1e')](_0x48361d,['value',_0x8d303b[_0x911b('0x1d')]])['name'];return db[_0x911b('0x49')][_0x911b('0x1e')]({'where':{'name':_0xa25789,'userProfileId':_0x4cbfa6[_0x911b('0x4a')]},'raw':!![]})[_0x911b('0x20')](function(_0x41519b){if(_0x41519b&&_0x41519b[_0x911b('0x4b')]===0x0){return db[_0x911b('0x4c')]['create']({'name':_0x8d303b[_0x911b('0x1f')],'resourceId':_0x8d303b['id'],'type':_0x41519b[_0x911b('0x1f')],'sectionId':_0x41519b['id']},{})['then'](function(){return _0x37f8a2;});}else{return _0x37f8a2;}})[_0x911b('0x3c')](function(_0x3800b2){logger[_0x911b('0x21')](_0x911b('0x4d'),_0x3800b2);throw _0x3800b2;});}return _0x37f8a2;})[_0x911b('0x20')](respondWithResult(_0x19e664,0xc9))[_0x911b('0x3c')](handleError(_0x19e664,null));};exports[_0x911b('0x4e')]=function(_0x41661,_0x399319){if(_0x41661['body']['id']){delete _0x41661[_0x911b('0x3d')]['id'];}return db[_0x911b('0x37')][_0x911b('0x1e')]({'where':{'id':_0x41661['params']['id']}})['then'](handleEntityNotFound(_0x399319,null))['then'](function(_0x148cf1){if(_0x148cf1){return db[_0x911b('0x37')][_0x911b('0x4e')](_[_0x911b('0x32')](_0x41661['body'],['exten',_0x911b('0x4f'),'description',_0x911b('0x50'),'cutdigits','mandatoryDisposition',_0x911b('0x51')]),{'where':{'context':_0x148cf1['context'],'exten':_0x148cf1[_0x911b('0x40')]},'individualHooks':!![]})[_0x911b('0x20')](function(_0x1ca3e1){return _0x1ca3e1;});}return null;})[_0x911b('0x20')](respondWithStatusCode(_0x399319,null))[_0x911b('0x3c')](handleError(_0x399319,null));};exports[_0x911b('0x52')]=function(_0x274a03,_0xf7ef01){var _0x1c73c2=_0x274a03[_0x911b('0x39')]['id'];var _0x2860ed=_0x274a03[_0x911b('0x3d')];var _0x3aa488=0xc8;var _0x57e354=null;return db[_0x911b('0x53')][_0x911b('0x54')]({'isolationLevel':db[_0x911b('0x53')][_0x911b('0x55')][_0x911b('0x56')][_0x911b('0x57')]},function(_0xcfa5ef){return db['VoiceExtension'][_0x911b('0x58')]({'where':{'id':_0x1c73c2},'transaction':_0xcfa5ef})[_0x911b('0x20')](function(_0x2d88b4){if(_0x2d88b4){return db[_0x911b('0x37')][_0x911b('0x16')]({'where':{'VoiceExtensionId':_0x1c73c2},'transaction':_0xcfa5ef})[_0x911b('0x20')](function(){var _0x4236b1=_['map'](_0x2860ed,function(_0x5c3acf){_0x5c3acf[_0x911b('0x59')]=_0x1c73c2;_0x5c3acf[_0x911b('0x5a')]=!![];return _0x5c3acf;});return _0x2d88b4[_0x911b('0x5b')](_0x4236b1);})[_0x911b('0x20')](function(_0x4cada9){return db[_0x911b('0x37')][_0x911b('0x5c')](_0x4cada9,{'transaction':_0xcfa5ef});});}else{_0x3aa488=0x194;_0x57e354=[];}});})['then'](function(){if(_0x3aa488!==0x194){return db[_0x911b('0x37')][_0x911b('0x5d')]({'where':{'isApp':!![],'VoiceExtensionId':_0x1c73c2},'order':_0x911b('0x5e')})[_0x911b('0x20')](function(_0x953674){_0x57e354=_0x953674;});}})[_0x911b('0x3c')](function(_0x15c01c){_0x3aa488=0x1f4;logger[_0x911b('0x21')](_0x15c01c['stack']);if(_0x15c01c[_0x911b('0x1f')]){delete _0x15c01c[_0x911b('0x1f')];}_0x57e354=_0x15c01c;})[_0x911b('0x5f')](function(){if(_0x57e354===null){_0xf7ef01['sendStatus'](_0x3aa488);}else{if(_0x3aa488===0x1f4){_0xf7ef01['status'](_0x3aa488)[_0x911b('0x22')](_0x57e354);}else{_0xf7ef01[_0x911b('0xd')](_0x3aa488)['json'](_0x57e354);}}});};
\ No newline at end of file
index 46e5d9e..f50dcd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7311=['../../mysqldb','VoiceExtension','update','remove','emit','hook','exports'];(function(_0x452968,_0x31e391){var _0xb6f9ae=function(_0x263987){while(--_0x263987){_0x452968['push'](_0x452968['shift']());}};_0xb6f9ae(++_0x31e391);}(_0x7311,0xb6));var _0x1731=function(_0x16f0e8,_0x25b381){_0x16f0e8=_0x16f0e8-0x0;var _0x418a8f=_0x7311[_0x16f0e8];return _0x418a8f;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0x1731('0x0'))['db'][_0x1731('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x1731('0x2'),'afterDestroy':_0x1731('0x3')};function emitEvent(_0x56de32){return function(_0x549fa1,_0x21bd8d,_0x1f5d4d){VoiceExtensionEvents[_0x1731('0x4')](_0x56de32+':'+_0x549fa1['id'],_0x549fa1);VoiceExtensionEvents['emit'](_0x56de32,_0x549fa1);_0x1f5d4d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0x1731('0x5')](e,emitEvent(event));}}module[_0x1731('0x6')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0x7a0a=['remove','emit','hook','events','VoiceExtension','setMaxListeners','save'];(function(_0x4220ec,_0x47e9f3){var _0x431285=function(_0x13881d){while(--_0x13881d){_0x4220ec['push'](_0x4220ec['shift']());}};_0x431285(++_0x47e9f3);}(_0x7a0a,0x176));var _0xa7a0=function(_0x556f37,_0x5be04c){_0x556f37=_0x556f37-0x0;var _0x3e39f8=_0x7a0a[_0x556f37];return _0x3e39f8;};'use strict';var EventEmitter=require(_0xa7a0('0x0'));var VoiceExtension=require('../../mysqldb')['db'][_0xa7a0('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xa7a0('0x2')](0x0);var events={'afterCreate':_0xa7a0('0x3'),'afterUpdate':'update','afterDestroy':_0xa7a0('0x4')};function emitEvent(_0x3b4152){return function(_0x2119f6,_0x36c430,_0x440019){VoiceExtensionEvents[_0xa7a0('0x5')](_0x3b4152+':'+_0x2119f6['id'],_0x2119f6);VoiceExtensionEvents[_0xa7a0('0x5')](_0x3b4152,_0x2119f6);_0x440019(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension[_0xa7a0('0x6')](e,emitEvent(event));}}module['exports']=VoiceExtensionEvents;
\ No newline at end of file
index b1b4e79..51a7049 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7380=['interval','IntervalId','then','*,*,*,*','intervals','map','filter','toLowerCase','tag','CDR(tag)=','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','Set(CALLERID(all)=','callerID','NoOp(No\x20number\x20available)','answer','queue','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','VoiceExtension','get','Hangup','./voiceExtension.attributes','exports','models','type','context','alias','Set','NoOp','No\x20alias\x20set','exten','inbound','CDR(routeid)=','push','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','outbound','CDR(routeAlias)=','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','wav','timeout','options','split','length','name','trunk','param','prefix','phone','SIP','join','U(xcally-mixmonitor-context)','findAll'];(function(_0x4914ad,_0x551a18){var _0x3cd61f=function(_0x2a773e){while(--_0x2a773e){_0x4914ad['push'](_0x4914ad['shift']());}};_0x3cd61f(++_0x551a18);}(_0x7380,0x172));var _0x0738=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x7380[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var attributes=require(_0x0738('0x0'));module[_0x0738('0x1')]=function(_0x4eeea9){var _0x48479a=_0x4eeea9[_0x0738('0x2')];function _0xdb7ed1(_0x51c93f){var _0x235e91=0x2;var _0x2ed2be=[{'type':_0x51c93f[_0x0738('0x3')],'app':'Set','appdata':'CDR(type)='+_0x51c93f[_0x0738('0x3')],'context':_0x51c93f[_0x0738('0x4')],'exten':_0x51c93f['exten'],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']},{'type':_0x51c93f['type'],'app':_0x51c93f[_0x0738('0x5')]?_0x0738('0x6'):_0x0738('0x7'),'appdata':_0x51c93f[_0x0738('0x5')]?'CDR(routeAlias)='+_0x51c93f['alias']:_0x0738('0x8'),'context':_0x51c93f['context'],'exten':_0x51c93f[_0x0738('0x9')],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']}];if(_0x51c93f[_0x0738('0x3')]===_0x0738('0xa')){_0x2ed2be['push']({'type':_0x0738('0xa'),'app':'Set','appdata':_0x0738('0xb')+_0x51c93f['id'],'context':_0x51c93f[_0x0738('0x4')],'exten':_0x51c93f[_0x0738('0x9')],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']});}_0x2ed2be[_0x0738('0xc')]({'type':_0x51c93f[_0x0738('0x3')],'app':_0x0738('0x6'),'appdata':_0x0738('0xd'),'context':_0x51c93f[_0x0738('0x4')],'exten':_0x51c93f[_0x0738('0x9')],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']},{'type':_0x51c93f['type'],'app':_0x0738('0x6'),'appdata':_0x0738('0xe'),'context':_0x51c93f[_0x0738('0x4')],'exten':_0x51c93f['exten'],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']},{'type':_0x51c93f[_0x0738('0x3')],'app':_0x0738('0x6'),'appdata':_0x0738('0xf'),'context':_0x51c93f[_0x0738('0x4')],'exten':_0x51c93f[_0x0738('0x9')],'priority':_0x235e91++,'VoiceExtensionId':_0x51c93f['id']});return _0x2ed2be;}function _0x36bd81(_0x1e4dd0){var _0x14f259=0x2;var _0x8b333f=[{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':'CDR(type)=outbound','context':_0x1e4dd0['context'],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x1e4dd0[_0x0738('0x5')]?'Set':'NoOp','appdata':_0x1e4dd0[_0x0738('0x5')]?_0x0738('0x11')+_0x1e4dd0[_0x0738('0x5')]:_0x0738('0x8'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x0738('0x12')+(_0x1e4dd0['cutdigits']?_0x0738('0x13')+_0x1e4dd0[_0x0738('0x14')]+'}':_0x0738('0x15')),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x0738('0xb')+_0x1e4dd0['id'],'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':'ExecIf','appdata':_0x0738('0x16')+(_0x14f259+0x2)+'):Goto('+(_0x14f259+0x1)+')','context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x1e4dd0[_0x0738('0x14')]?_0x0738('0x17')+_0x1e4dd0[_0x0738('0x14')]+'}':_0x0738('0x18'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':'Set','appdata':_0x0738('0xd'),'context':_0x1e4dd0['context'],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x0738('0xe'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x0738('0xf'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':'outbound','app':_0x0738('0x6'),'appdata':_0x0738('0x19')+_0x1e4dd0['id'],'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0['exten'],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']}];if(_0x1e4dd0[_0x0738('0x1a')](_0x0738('0x1b'))&&_0x1e4dd0['recordingFormat']!==_0x0738('0x1c')){_0x8b333f['push']({'type':_0x0738('0x10'),'app':'Set','appdata':_0x0738('0x1d'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']},{'type':_0x0738('0x10'),'app':_0x0738('0x6'),'appdata':_0x0738('0x1e')+_0x1e4dd0[_0x0738('0x1b')]||_0x0738('0x1f'),'context':_0x1e4dd0[_0x0738('0x4')],'exten':_0x1e4dd0[_0x0738('0x9')],'priority':_0x14f259++,'VoiceExtensionId':_0x1e4dd0['id']});}return _0x8b333f;}function _0x335b8d(_0x547d53,_0x46d373){var _0x3df84e=[{'name':'trunk','param':0x0},{'name':_0x0738('0x20'),'param':0x1},{'name':_0x0738('0x21'),'param':0x2},{'name':'url','param':0x3}];var _0xd4f4ca={};var _0x2073fa=_0x46d373[_0x0738('0x22')](',');var _0x104237=[];for(var _0x25323a=0x0;_0x25323a<_0x3df84e[_0x0738('0x23')];_0x25323a++){switch(_0x3df84e[_0x25323a][_0x0738('0x24')]){case'trunk':_0xd4f4ca[_0x0738('0x25')]=_0x2073fa[_0x3df84e[_0x25323a][_0x0738('0x26')]][_0x0738('0x22')]('/')[0x1];_0xd4f4ca['phone']=_0x2073fa[_0x3df84e[_0x25323a][_0x0738('0x26')]][_0x0738('0x22')]('/')[0x2];_0xd4f4ca[_0x0738('0x27')]=_0xd4f4ca['phone']?_0xd4f4ca[_0x0738('0x28')]['split']('$')[0x0]:undefined;_0xd4f4ca[_0x0738('0x28')]=_0x547d53[_0x0738('0x14')]?(_0xd4f4ca[_0x0738('0x27')]||'')+'${EXTEN:'+_0x547d53[_0x0738('0x14')]+'}':(_0xd4f4ca['prefix']||'')+'${EXTEN}';_0x104237[_0x3df84e[_0x25323a][_0x0738('0x26')]]=[_0x0738('0x29'),_0xd4f4ca['trunk'],_0xd4f4ca['phone']][_0x0738('0x2a')]('/');break;case'options':_0xd4f4ca[_0x0738('0x21')]=_0x2073fa[_0x3df84e[_0x25323a][_0x0738('0x26')]];if(_0x547d53[_0x0738('0x1b')]!==_0x0738('0x1c')){if(_0xd4f4ca['options']['indexOf'](_0x0738('0x2b'))<0x0){_0xd4f4ca[_0x0738('0x21')]+='U(xcally-mixmonitor-context)';}}else{_0xd4f4ca[_0x0738('0x21')]=_0xd4f4ca[_0x0738('0x21')]['replace'](_0x0738('0x2b'),'');}_0x104237[_0x3df84e[_0x25323a][_0x0738('0x26')]]=_0xd4f4ca[_0x0738('0x21')];break;default:_0x104237[_0x3df84e[_0x25323a][_0x0738('0x26')]]=_0x2073fa[_0x3df84e[_0x25323a][_0x0738('0x26')]];}}return _0x104237['join'](',');}function _0xf55150(_0x567479,_0x5564b9,_0x17e7bf){return new Promise(function(_0x315139,_0x300a72){var _0x595e34=[];if(_['isEmpty'](_0x5564b9))return _0x315139(_0x595e34);_0x48479a['Interval'][_0x0738('0x2c')]({'attributes':['id',_0x0738('0x2d'),_0x0738('0x2e')],'raw':!![]})[_0x0738('0x2f')](function(_0x2aae84){for(var _0x54873f=0x0,_0x2d99ba=0x0;_0x54873f<_0x5564b9[_0x0738('0x23')];_0x54873f++,_0x2d99ba=0x0){var _0x321082=_0x5564b9[_0x54873f];var _0x5ad8eb=[];var _0x13d458=[];delete _0x321082['id'];if(_0x321082[_0x0738('0x2d')]!==_0x0738('0x30')){_0x321082[_0x0738('0x31')]=[_0x321082[_0x0738('0x2d')]];}else{_0x321082[_0x0738('0x31')]=_0x321082[_0x0738('0x2e')]?_[_0x0738('0x32')](_[_0x0738('0x33')](_0x2aae84,{'IntervalId':_0x321082[_0x0738('0x2e')]}),_0x0738('0x2d')):[];}_0x321082[_0x0738('0x4')]=_0x567479[_0x0738('0x4')];_0x321082[_0x0738('0x9')]=_0x567479['exten'];if(_0x321082[_0x0738('0x3')])_0x321082[_0x0738('0x3')]=_0x321082[_0x0738('0x3')][_0x0738('0x34')]();if(_0x567479[_0x0738('0x3')]===_0x0738('0x10')){if(_0x321082[_0x0738('0x1a')](_0x0738('0x35'))&&_0x321082[_0x0738('0x35')]&&_0x321082[_0x0738('0x35')]!=='--'){_0x5ad8eb[_0x0738('0xc')]({'type':_0x321082[_0x0738('0x3')][_0x0738('0x34')](),'app':_0x0738('0x6'),'appdata':_0x0738('0x36')+_0x321082[_0x0738('0x35')],'context':_0x567479[_0x0738('0x4')],'exten':_0x567479[_0x0738('0x9')],'priority':_0x321082[_0x0738('0x31')][_0x0738('0x23')]+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});}_0x5ad8eb['push']({'type':_0x321082[_0x0738('0x3')]['toLowerCase'](),'app':_0x0738('0x37'),'appdata':_0x0738('0x38')+(_0x321082['callerID']?_0x0738('0x39')+_0x321082[_0x0738('0x3a')]+')':_0x0738('0x3b')),'context':_0x567479[_0x0738('0x4')],'exten':_0x567479[_0x0738('0x9')],'priority':_0x321082[_0x0738('0x31')]['length']+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});}else{if(_0x321082[_0x0738('0x1a')](_0x0738('0x3c'))){if([_0x0738('0x3d'),_0x0738('0x3e')][_0x0738('0x3f')](_0x321082[_0x0738('0x40')]['toLowerCase']())&&_0x321082[_0x0738('0x41')]!==_0x0738('0x42')){if(_0x321082[_0x0738('0x3c')]){_0x5ad8eb[_0x0738('0xc')]({'type':_0x321082['type'][_0x0738('0x34')](),'app':_0x0738('0x37'),'appdata':_0x0738('0x43'),'context':_0x567479[_0x0738('0x4')],'exten':_0x567479[_0x0738('0x9')],'priority':_0x321082['intervals'][_0x0738('0x23')]+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});_0x5ad8eb[_0x0738('0xc')]({'type':_0x321082[_0x0738('0x3')]['toLowerCase'](),'app':_0x0738('0x6'),'appdata':_0x0738('0x44'),'context':_0x567479[_0x0738('0x4')],'exten':_0x567479['exten'],'priority':_0x321082[_0x0738('0x31')][_0x0738('0x23')]+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});}else{_0x5ad8eb[_0x0738('0xc')]({'type':_0x321082['type'][_0x0738('0x34')](),'app':_0x0738('0x37'),'appdata':_0x0738('0x45'),'context':_0x567479['context'],'exten':_0x567479[_0x0738('0x9')],'priority':_0x321082[_0x0738('0x31')][_0x0738('0x23')]+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});_0x5ad8eb[_0x0738('0xc')]({'type':_0x321082['type'][_0x0738('0x34')](),'app':_0x0738('0x6'),'appdata':_0x0738('0x46'),'context':_0x567479[_0x0738('0x4')],'exten':_0x567479[_0x0738('0x9')],'priority':_0x321082[_0x0738('0x31')][_0x0738('0x23')]+_0x17e7bf+_0x2d99ba++,'VoiceExtensionId':_0x567479['id']});}}}}for(var _0x6f2a5a=0x0;_0x6f2a5a<_0x321082['intervals'][_0x0738('0x23')];_0x6f2a5a++){var _0x2e214e=_0x17e7bf+_0x321082[_0x0738('0x31')]['length'];var _0x12a31f=_0x6f2a5a===_0x321082[_0x0738('0x31')][_0x0738('0x23')]-0x1?_0x17e7bf+_0x5ad8eb[_0x0738('0x23')]+_0x13d458[_0x0738('0x23')]+0x2:_0x17e7bf+_0x6f2a5a+0x1;_0x5ad8eb['splice'](_0x6f2a5a,0x0,{'type':_0x567479[_0x0738('0x3')],'app':_0x0738('0x47'),'appdata':_0x321082[_0x0738('0x31')][_0x6f2a5a]+'?'+_0x567479[_0x0738('0x4')]+_0x0738('0x48')+_0x2e214e+':'+_0x567479[_0x0738('0x4')]+_0x0738('0x48')+_0x12a31f,'exten':_0x567479[_0x0738('0x9')],'context':_0x567479[_0x0738('0x4')],'priority':_0x17e7bf+_0x6f2a5a,'VoiceExtensionId':_0x567479['id']});}if(_0x321082['appType']===_0x0738('0x49'))_0x321082[_0x0738('0x4a')]=_0x335b8d(_0x567479,_0x321082[_0x0738('0x4a')]);_0x321082[_0x0738('0x4b')]=_0x5ad8eb[_0x0738('0x23')]?_[_0x0738('0x4c')](_0x5ad8eb)[_0x0738('0x4b')]+0x1:_0x17e7bf;_0x595e34=_[_0x0738('0x4d')](_0x595e34,_0x5ad8eb,[_0x321082],_0x13d458);_0x17e7bf=_[_0x0738('0x4c')](_0x595e34)[_0x0738('0x4b')]+0x1;}return _0x315139(_0x595e34);})[_0x0738('0x4e')](function(_0x5564f6){_0x300a72(_0x5564f6);});});}return _0x4eeea9[_0x0738('0x4f')](_0x0738('0x50'),attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x169736){var _0x3e172e=this[_0x0738('0x51')]({'plain':!![]});var _0x2f0757=_0x3e172e['type']===_0x0738('0x10')?_0x36bd81(_0x3e172e):_0xdb7ed1(_0x3e172e);return _0xf55150(_0x3e172e,_0x169736,_[_0x0738('0x4c')](_0x2f0757)['priority']+0x1)[_0x0738('0x2f')](function(_0x420377){var _0x1630b8=_[_0x0738('0x4d')](_0x2f0757,_0x420377);_0x1630b8[_0x0738('0xc')]({'type':_0x3e172e[_0x0738('0x3')],'app':_0x0738('0x52'),'exten':_0x3e172e[_0x0738('0x9')],'context':_0x3e172e[_0x0738('0x4')],'priority':_[_0x0738('0x4c')](_0x1630b8)[_0x0738('0x4b')]+0x1,'VoiceExtensionId':_0x3e172e['id']});return _0x1630b8;});}}});};
\ No newline at end of file
+var _0x83d3=['replace','isEmpty','Interval','findAll','interval','IntervalId','then','length','*,*,*,*','map','filter','toLowerCase','tag','CDR(tag)=','intervals','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','answer','queue','playback','includes','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','appType','appdata','priority','last','define','voice_extensions','get','concat','Hangup','lodash','./voiceExtension.attributes','exports','Set','context','exten','type','CDR(routeAlias)=','alias','inbound','push','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','No\x20alias\x20set','CDR(destination)=','${EXTEN:','cutdigits','${EXTEN}','CDR(routeid)=','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','timeout','options','url','split','name','phone','param','prefix','SIP','join','indexOf','U(xcally-mixmonitor-context)'];(function(_0x22431e,_0x5af0a3){var _0xd978e9=function(_0x2bbdd7){while(--_0x2bbdd7){_0x22431e['push'](_0x22431e['shift']());}};_0xd978e9(++_0x5af0a3);}(_0x83d3,0x17c));var _0x383d=function(_0x2b85d5,_0x3115b7){_0x2b85d5=_0x2b85d5-0x0;var _0xe8c96f=_0x83d3[_0x2b85d5];return _0xe8c96f;};'use strict';var _=require(_0x383d('0x0'));var attributes=require(_0x383d('0x1'));module[_0x383d('0x2')]=function(_0x381df6){var _0x37aa24=_0x381df6['models'];function _0x9287d4(_0x1184a6){var _0x31cbfc=0x2;var _0x202ffc=[{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':'CDR(type)='+_0x1184a6['type'],'context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6[_0x383d('0x6')],'app':_0x1184a6['alias']?_0x383d('0x3'):'NoOp','appdata':_0x1184a6['alias']?_0x383d('0x7')+_0x1184a6[_0x383d('0x8')]:'No\x20alias\x20set','context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']}];if(_0x1184a6[_0x383d('0x6')]===_0x383d('0x9')){_0x202ffc[_0x383d('0xa')]({'type':_0x383d('0x9'),'app':'Set','appdata':'CDR(routeid)='+_0x1184a6['id'],'context':_0x1184a6['context'],'exten':_0x1184a6[_0x383d('0x5')],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']});}_0x202ffc['push']({'type':_0x1184a6[_0x383d('0x6')],'app':_0x383d('0x3'),'appdata':_0x383d('0xb'),'context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x1184a6[_0x383d('0x4')],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']},{'type':_0x1184a6['type'],'app':_0x383d('0x3'),'appdata':_0x383d('0xc'),'context':_0x1184a6['context'],'exten':_0x1184a6['exten'],'priority':_0x31cbfc++,'VoiceExtensionId':_0x1184a6['id']});return _0x202ffc;}function _0x11c1f9(_0x2a3025){var _0x5be3d7=0x2;var _0x475a84=[{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xe'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x2a3025['alias']?_0x383d('0x3'):_0x383d('0xf'),'appdata':_0x2a3025[_0x383d('0x8')]?_0x383d('0x7')+_0x2a3025[_0x383d('0x8')]:_0x383d('0x10'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':_0x383d('0x3'),'appdata':_0x383d('0x11')+(_0x2a3025['cutdigits']?_0x383d('0x12')+_0x2a3025[_0x383d('0x13')]+'}':_0x383d('0x14')),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0x15')+_0x2a3025['id'],'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':'ExecIf','appdata':_0x383d('0x16')+(_0x5be3d7+0x2)+_0x383d('0x17')+(_0x5be3d7+0x1)+')','context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x2a3025[_0x383d('0x13')]?'CDR(prefix)=${EXTEN:0:'+_0x2a3025[_0x383d('0x13')]+'}':_0x383d('0x18'),'context':_0x2a3025['context'],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xb'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x19'),'context':_0x2a3025['context'],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':_0x383d('0x3'),'appdata':_0x383d('0xc'),'context':_0x2a3025['context'],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x1a')+_0x2a3025['id'],'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025['exten'],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']}];if(_0x2a3025[_0x383d('0x1b')]('recordingFormat')&&_0x2a3025[_0x383d('0x1c')]!==_0x383d('0x1d')){_0x475a84['push']({'type':_0x383d('0xd'),'app':'Set','appdata':_0x383d('0x1e'),'context':_0x2a3025['context'],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']},{'type':'outbound','app':_0x383d('0x3'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x2a3025[_0x383d('0x1c')]||_0x383d('0x1f'),'context':_0x2a3025[_0x383d('0x4')],'exten':_0x2a3025[_0x383d('0x5')],'priority':_0x5be3d7++,'VoiceExtensionId':_0x2a3025['id']});}return _0x475a84;}function _0x48a2a9(_0x28254f,_0x5379cc){var _0x23aeb4=[{'name':_0x383d('0x20'),'param':0x0},{'name':_0x383d('0x21'),'param':0x1},{'name':_0x383d('0x22'),'param':0x2},{'name':_0x383d('0x23'),'param':0x3}];var _0x1f6313={};var _0x47a5e0=_0x5379cc[_0x383d('0x24')](',');var _0x5cc6c4=[];for(var _0x31ea5e=0x0;_0x31ea5e<_0x23aeb4['length'];_0x31ea5e++){switch(_0x23aeb4[_0x31ea5e][_0x383d('0x25')]){case _0x383d('0x20'):_0x1f6313[_0x383d('0x20')]=_0x47a5e0[_0x23aeb4[_0x31ea5e]['param']][_0x383d('0x24')]('/')[0x1];_0x1f6313[_0x383d('0x26')]=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]['split']('/')[0x2];_0x1f6313[_0x383d('0x28')]=_0x1f6313['phone']?_0x1f6313[_0x383d('0x26')][_0x383d('0x24')]('$')[0x0]:undefined;_0x1f6313['phone']=_0x28254f['cutdigits']?(_0x1f6313[_0x383d('0x28')]||'')+_0x383d('0x12')+_0x28254f[_0x383d('0x13')]+'}':(_0x1f6313[_0x383d('0x28')]||'')+_0x383d('0x14');_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=[_0x383d('0x29'),_0x1f6313[_0x383d('0x20')],_0x1f6313['phone']][_0x383d('0x2a')]('/');break;case _0x383d('0x22'):_0x1f6313['options']=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]];if(_0x28254f[_0x383d('0x1c')]!==_0x383d('0x1d')){if(_0x1f6313[_0x383d('0x22')][_0x383d('0x2b')](_0x383d('0x2c'))<0x0){_0x1f6313[_0x383d('0x22')]+=_0x383d('0x2c');}}else{_0x1f6313[_0x383d('0x22')]=_0x1f6313['options'][_0x383d('0x2d')](_0x383d('0x2c'),'');}_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=_0x1f6313['options'];break;default:_0x5cc6c4[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]]=_0x47a5e0[_0x23aeb4[_0x31ea5e][_0x383d('0x27')]];}}return _0x5cc6c4[_0x383d('0x2a')](',');}function _0x508cf3(_0x5c7c3e,_0x3c0184,_0x5bf5cc){return new Promise(function(_0x3a4aaa,_0x693b48){var _0x48dd52=[];if(_[_0x383d('0x2e')](_0x3c0184))return _0x3a4aaa(_0x48dd52);_0x37aa24[_0x383d('0x2f')][_0x383d('0x30')]({'attributes':['id',_0x383d('0x31'),_0x383d('0x32')],'raw':!![]})[_0x383d('0x33')](function(_0x2f98f1){for(var _0x5072a5=0x0,_0x44bf8c=0x0;_0x5072a5<_0x3c0184[_0x383d('0x34')];_0x5072a5++,_0x44bf8c=0x0){var _0x59cabf=_0x3c0184[_0x5072a5];var _0x4735c0=[];var _0xa8b119=[];delete _0x59cabf['id'];if(_0x59cabf['interval']!==_0x383d('0x35')){_0x59cabf['intervals']=[_0x59cabf[_0x383d('0x31')]];}else{_0x59cabf['intervals']=_0x59cabf['IntervalId']?_[_0x383d('0x36')](_[_0x383d('0x37')](_0x2f98f1,{'IntervalId':_0x59cabf[_0x383d('0x32')]}),_0x383d('0x31')):[];}_0x59cabf[_0x383d('0x4')]=_0x5c7c3e['context'];_0x59cabf[_0x383d('0x5')]=_0x5c7c3e[_0x383d('0x5')];if(_0x59cabf[_0x383d('0x6')])_0x59cabf[_0x383d('0x6')]=_0x59cabf['type'][_0x383d('0x38')]();if(_0x5c7c3e[_0x383d('0x6')]===_0x383d('0xd')){if(_0x59cabf[_0x383d('0x1b')](_0x383d('0x39'))&&_0x59cabf['tag']&&_0x59cabf[_0x383d('0x39')]!=='--'){_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3'),'appdata':_0x383d('0x3a')+_0x59cabf[_0x383d('0x39')],'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x3d')+(_0x59cabf[_0x383d('0x3e')]?_0x383d('0x3f')+_0x59cabf[_0x383d('0x3e')]+')':_0x383d('0x40')),'context':_0x5c7c3e['context'],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}else{if(_0x59cabf[_0x383d('0x1b')](_0x383d('0x41'))){if([_0x383d('0x42'),_0x383d('0x43')][_0x383d('0x44')](_0x59cabf['app']['toLowerCase']())&&_0x59cabf['appType']!==_0x383d('0x45')){if(_0x59cabf['answer']){_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf[_0x383d('0x6')][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x46'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf['type']['toLowerCase'](),'app':_0x383d('0x3'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e['exten'],'priority':_0x59cabf[_0x383d('0x3b')]['length']+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}else{_0x4735c0[_0x383d('0xa')]({'type':_0x59cabf['type'][_0x383d('0x38')](),'app':_0x383d('0x3c'),'appdata':_0x383d('0x47'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});_0x4735c0['push']({'type':_0x59cabf[_0x383d('0x6')]['toLowerCase'](),'app':_0x383d('0x3'),'appdata':_0x383d('0x48'),'context':_0x5c7c3e[_0x383d('0x4')],'exten':_0x5c7c3e[_0x383d('0x5')],'priority':_0x59cabf[_0x383d('0x3b')]['length']+_0x5bf5cc+_0x44bf8c++,'VoiceExtensionId':_0x5c7c3e['id']});}}}}for(var _0x220e4c=0x0;_0x220e4c<_0x59cabf[_0x383d('0x3b')]['length'];_0x220e4c++){var _0x510806=_0x5bf5cc+_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')];var _0x4c4a86=_0x220e4c===_0x59cabf[_0x383d('0x3b')][_0x383d('0x34')]-0x1?_0x5bf5cc+_0x4735c0[_0x383d('0x34')]+_0xa8b119[_0x383d('0x34')]+0x2:_0x5bf5cc+_0x220e4c+0x1;_0x4735c0[_0x383d('0x49')](_0x220e4c,0x0,{'type':_0x5c7c3e[_0x383d('0x6')],'app':_0x383d('0x4a'),'appdata':_0x59cabf['intervals'][_0x220e4c]+'?'+_0x5c7c3e['context']+_0x383d('0x4b')+_0x510806+':'+_0x5c7c3e[_0x383d('0x4')]+_0x383d('0x4b')+_0x4c4a86,'exten':_0x5c7c3e[_0x383d('0x5')],'context':_0x5c7c3e[_0x383d('0x4')],'priority':_0x5bf5cc+_0x220e4c,'VoiceExtensionId':_0x5c7c3e['id']});}if(_0x59cabf[_0x383d('0x4c')]==='outboundDial')_0x59cabf[_0x383d('0x4d')]=_0x48a2a9(_0x5c7c3e,_0x59cabf[_0x383d('0x4d')]);_0x59cabf[_0x383d('0x4e')]=_0x4735c0[_0x383d('0x34')]?_[_0x383d('0x4f')](_0x4735c0)[_0x383d('0x4e')]+0x1:_0x5bf5cc;_0x48dd52=_['concat'](_0x48dd52,_0x4735c0,[_0x59cabf],_0xa8b119);_0x5bf5cc=_[_0x383d('0x4f')](_0x48dd52)[_0x383d('0x4e')]+0x1;}return _0x3a4aaa(_0x48dd52);})['catch'](function(_0x251934){_0x693b48(_0x251934);});});}return _0x381df6[_0x383d('0x50')]('VoiceExtension',attributes,{'tableName':_0x383d('0x51'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x21c6cf){var _0x15c570=this[_0x383d('0x52')]({'plain':!![]});var _0x336c76=_0x15c570[_0x383d('0x6')]===_0x383d('0xd')?_0x11c1f9(_0x15c570):_0x9287d4(_0x15c570);return _0x508cf3(_0x15c570,_0x21c6cf,_[_0x383d('0x4f')](_0x336c76)[_0x383d('0x4e')]+0x1)[_0x383d('0x33')](function(_0x2a6543){var _0x41edbd=_[_0x383d('0x53')](_0x336c76,_0x2a6543);_0x41edbd['push']({'type':_0x15c570[_0x383d('0x6')],'app':_0x383d('0x54'),'exten':_0x15c570[_0x383d('0x5')],'context':_0x15c570['context'],'priority':_[_0x383d('0x4f')](_0x41edbd)['priority']+0x1,'VoiceExtensionId':_0x15c570['id']});return _0x41edbd;});}}});};
\ No newline at end of file
index 8ea7b57..d22e0c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafdd=['then','info','VoiceExtension,\x20%s,\x20%s','debug','stringify','error','code','message','GetVoiceExtension','VoiceExtension','findAll','options','raw','where','limit','include','map','model','attributes','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request'];(function(_0x2cfb58,_0x3d9412){var _0xd99951=function(_0x329afa){while(--_0x329afa){_0x2cfb58['push'](_0x2cfb58['shift']());}};_0xd99951(++_0x3d9412);}(_0xafdd,0x19a));var _0xdafd=function(_0x3146dd,_0x467f10){_0x3146dd=_0x3146dd-0x0;var _0x18e2bb=_0xafdd[_0x3146dd];return _0x18e2bb;};'use strict';var _=require(_0xdafd('0x0'));var util=require(_0xdafd('0x1'));var moment=require(_0xdafd('0x2'));var BPromise=require(_0xdafd('0x3'));var rs=require(_0xdafd('0x4'));var fs=require('fs');var Redis=require(_0xdafd('0x5'));var db=require(_0xdafd('0x6'))['db'];var utils=require(_0xdafd('0x7'));var logger=require('../../config/logger')(_0xdafd('0x8'));var config=require(_0xdafd('0x9'));var jayson=require(_0xdafd('0xa'));var client=jayson[_0xdafd('0xb')][_0xdafd('0xc')]({'port':0x232a});config[_0xdafd('0xd')]=_[_0xdafd('0xe')](config['redis'],{'host':_0xdafd('0xf'),'port':0x18eb});var socket=require(_0xdafd('0x10'))(new Redis(config[_0xdafd('0xd')]));require('./voiceExtension.socket')[_0xdafd('0x11')](socket);function respondWithRpcPromise(_0x413d23,_0xb2514d,_0x2f3bb3){return new BPromise(function(_0x5a4bcd,_0x42373f){return client[_0xdafd('0x12')](_0x413d23,_0x2f3bb3)[_0xdafd('0x13')](function(_0x44e13d){logger[_0xdafd('0x14')](_0xdafd('0x15'),_0xb2514d,'request\x20sent');logger[_0xdafd('0x16')]('VoiceExtension,\x20%s,\x20%s,\x20%s',_0xb2514d,'request\x20sent',JSON[_0xdafd('0x17')](_0x44e13d));if(_0x44e13d[_0xdafd('0x18')]){if(_0x44e13d['error'][_0xdafd('0x19')]===0x1f4){logger['error']('VoiceExtension,\x20%s,\x20%s',_0xb2514d,_0x44e13d[_0xdafd('0x18')][_0xdafd('0x1a')]);return _0x42373f(_0x44e13d[_0xdafd('0x18')][_0xdafd('0x1a')]);}logger[_0xdafd('0x18')]('VoiceExtension,\x20%s,\x20%s',_0xb2514d,_0x44e13d[_0xdafd('0x18')][_0xdafd('0x1a')]);return _0x5a4bcd(_0x44e13d[_0xdafd('0x18')]['message']);}else{logger[_0xdafd('0x14')](_0xdafd('0x15'),_0xb2514d,'request\x20sent');_0x5a4bcd(_0x44e13d['result'][_0xdafd('0x1a')]);}})['catch'](function(_0x3556da){logger[_0xdafd('0x18')](_0xdafd('0x15'),_0xb2514d,_0x3556da);_0x42373f(_0x3556da);});});}exports[_0xdafd('0x1b')]=function(_0x1c2029){var _0x367ead=this;return new Promise(function(_0x44f825,_0x42e0f9){return db[_0xdafd('0x1c')][_0xdafd('0x1d')]({'raw':_0x1c2029[_0xdafd('0x1e')]?_0x1c2029[_0xdafd('0x1e')][_0xdafd('0x1f')]===undefined?!![]:![]:!![],'where':_0x1c2029[_0xdafd('0x1e')]?_0x1c2029['options'][_0xdafd('0x20')]||null:null,'attributes':_0x1c2029['options']?_0x1c2029[_0xdafd('0x1e')]['attributes']||null:null,'limit':_0x1c2029[_0xdafd('0x1e')]?_0x1c2029[_0xdafd('0x1e')][_0xdafd('0x21')]||null:null,'include':_0x1c2029[_0xdafd('0x1e')]?_0x1c2029[_0xdafd('0x1e')][_0xdafd('0x22')]?_[_0xdafd('0x23')](_0x1c2029[_0xdafd('0x1e')][_0xdafd('0x22')],function(_0x5cd11d){return{'model':db[_0x5cd11d[_0xdafd('0x24')]],'as':_0x5cd11d['as'],'attributes':_0x5cd11d[_0xdafd('0x25')],'include':_0x5cd11d[_0xdafd('0x22')]?_[_0xdafd('0x23')](_0x5cd11d[_0xdafd('0x22')],function(_0x25f277){return{'model':db[_0x25f277[_0xdafd('0x24')]],'as':_0x25f277['as'],'attributes':_0x25f277[_0xdafd('0x25')],'include':_0x25f277[_0xdafd('0x22')]?_[_0xdafd('0x23')](_0x25f277['include'],function(_0x243182){return{'model':db[_0x243182[_0xdafd('0x24')]],'as':_0x243182['as'],'attributes':_0x243182[_0xdafd('0x25')]};}):[]};}):[]};}):[]:[]})[_0xdafd('0x13')](function(_0x21edb6){logger[_0xdafd('0x14')]('GetVoiceExtension',_0x1c2029);logger['debug']('GetVoiceExtension',_0x1c2029,JSON[_0xdafd('0x17')](_0x21edb6));_0x44f825(_0x21edb6);})[_0xdafd('0x26')](function(_0x568996){logger['error'](_0xdafd('0x1b'),_0x568996[_0xdafd('0x1a')],_0x1c2029);_0x42e0f9(_0x367ead[_0xdafd('0x18')](0x1f4,_0x568996[_0xdafd('0x1a')]));});});};
\ No newline at end of file
+var _0x8d0a=['findAll','options','where','attributes','limit','include','map','model','stringify','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','VoiceExtension,\x20%s,\x20%s','message','request\x20sent','result','GetVoiceExtension','VoiceExtension'];(function(_0x450689,_0x3b857c){var _0x46ffb0=function(_0x5d3679){while(--_0x5d3679){_0x450689['push'](_0x450689['shift']());}};_0x46ffb0(++_0x3b857c);}(_0x8d0a,0x172));var _0xa8d0=function(_0x3acc94,_0x4216ef){_0x3acc94=_0x3acc94-0x0;var _0x93e335=_0x8d0a[_0x3acc94];return _0x93e335;};'use strict';var _=require(_0xa8d0('0x0'));var util=require(_0xa8d0('0x1'));var moment=require(_0xa8d0('0x2'));var BPromise=require('bluebird');var rs=require(_0xa8d0('0x3'));var fs=require('fs');var Redis=require(_0xa8d0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8d0('0x5'));var logger=require(_0xa8d0('0x6'))(_0xa8d0('0x7'));var config=require('../../config/environment');var jayson=require(_0xa8d0('0x8'));var client=jayson[_0xa8d0('0x9')][_0xa8d0('0xa')]({'port':0x232a});config[_0xa8d0('0xb')]=_[_0xa8d0('0xc')](config[_0xa8d0('0xb')],{'host':_0xa8d0('0xd'),'port':0x18eb});var socket=require(_0xa8d0('0xe'))(new Redis(config[_0xa8d0('0xb')]));require(_0xa8d0('0xf'))[_0xa8d0('0x10')](socket);function respondWithRpcPromise(_0x9fee79,_0x3c1221,_0x23cbc5){return new BPromise(function(_0x3a1138,_0xe516eb){return client[_0xa8d0('0x11')](_0x9fee79,_0x23cbc5)[_0xa8d0('0x12')](function(_0x380cc5){logger[_0xa8d0('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x3c1221,'request\x20sent');logger[_0xa8d0('0x14')](_0xa8d0('0x15'),_0x3c1221,'request\x20sent',JSON['stringify'](_0x380cc5));if(_0x380cc5[_0xa8d0('0x16')]){if(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x17')]===0x1f4){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);return _0xe516eb(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);}logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5['error'][_0xa8d0('0x19')]);return _0x3a1138(_0x380cc5[_0xa8d0('0x16')]['message']);}else{logger[_0xa8d0('0x13')](_0xa8d0('0x18'),_0x3c1221,_0xa8d0('0x1a'));_0x3a1138(_0x380cc5[_0xa8d0('0x1b')][_0xa8d0('0x19')]);}})['catch'](function(_0x35554e){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x35554e);_0xe516eb(_0x35554e);});});}exports[_0xa8d0('0x1c')]=function(_0x1b5dfb){var _0x16e479=this;return new Promise(function(_0x21a6ca,_0x595452){return db[_0xa8d0('0x1d')][_0xa8d0('0x1e')]({'raw':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x20')]||null:null,'attributes':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb['options'][_0xa8d0('0x21')]||null:null,'limit':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x22')]||null:null,'include':_0x1b5dfb['options']?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x1b5dfb['options'][_0xa8d0('0x23')],function(_0x5f5dfb){return{'model':db[_0x5f5dfb[_0xa8d0('0x25')]],'as':_0x5f5dfb['as'],'attributes':_0x5f5dfb[_0xa8d0('0x21')],'include':_0x5f5dfb['include']?_['map'](_0x5f5dfb[_0xa8d0('0x23')],function(_0x5d9a04){return{'model':db[_0x5d9a04[_0xa8d0('0x25')]],'as':_0x5d9a04['as'],'attributes':_0x5d9a04[_0xa8d0('0x21')],'include':_0x5d9a04[_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x5d9a04[_0xa8d0('0x23')],function(_0x5a5079){return{'model':db[_0x5a5079[_0xa8d0('0x25')]],'as':_0x5a5079['as'],'attributes':_0x5a5079[_0xa8d0('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa8d0('0x12')](function(_0x500cec){logger['info']('GetVoiceExtension',_0x1b5dfb);logger[_0xa8d0('0x14')](_0xa8d0('0x1c'),_0x1b5dfb,JSON[_0xa8d0('0x26')](_0x500cec));_0x21a6ca(_0x500cec);})[_0xa8d0('0x27')](function(_0x2c9ff2){logger[_0xa8d0('0x16')](_0xa8d0('0x1c'),_0x2c9ff2['message'],_0x1b5dfb);_0x595452(_0x16e479[_0xa8d0('0x16')](0x1f4,_0x2c9ff2['message']));});});};
\ No newline at end of file
index 816717e..c416e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['save','remove','update','emit','removeListener','voiceExtension:'];(function(_0x4f22ec,_0x4784b5){var _0x21f4ca=function(_0x2d0e30){while(--_0x2d0e30){_0x4f22ec['push'](_0x4f22ec['shift']());}};_0x21f4ca(++_0x4784b5);}(_0x1261,0x144));var _0x1126=function(_0x5cbcdf,_0x2224a4){_0x5cbcdf=_0x5cbcdf-0x0;var _0x4be16f=_0x1261[_0x5cbcdf];return _0x4be16f;};'use strict';var VoiceExtensionEvents=require('./voiceExtension.events');var events=[_0x1126('0x0'),_0x1126('0x1'),_0x1126('0x2')];function createListener(_0x331a2c,_0x39b786){return function(_0x350f3a){_0x39b786[_0x1126('0x3')](_0x331a2c,_0x350f3a);};}function removeListener(_0x4245ca,_0x21a480){return function(){VoiceExtensionEvents[_0x1126('0x4')](_0x4245ca,_0x21a480);};}exports['register']=function(_0x5c68c8){for(var _0x40ba58=0x0,_0x907180=events['length'];_0x40ba58<_0x907180;_0x40ba58++){var _0x17e5f0=events[_0x40ba58];var _0x28772d=createListener(_0x1126('0x5')+_0x17e5f0,_0x5c68c8);VoiceExtensionEvents['on'](_0x17e5f0,_0x28772d);}};
\ No newline at end of file
+var _0x7a54=['remove','emit','removeListener','register','length','voiceExtension:','./voiceExtension.events','save'];(function(_0x118540,_0x4c53b3){var _0xc900be=function(_0x3ffa03){while(--_0x3ffa03){_0x118540['push'](_0x118540['shift']());}};_0xc900be(++_0x4c53b3);}(_0x7a54,0x106));var _0x47a5=function(_0x2ca188,_0x24577f){_0x2ca188=_0x2ca188-0x0;var _0x3ba3ff=_0x7a54[_0x2ca188];return _0x3ba3ff;};'use strict';var VoiceExtensionEvents=require(_0x47a5('0x0'));var events=[_0x47a5('0x1'),_0x47a5('0x2'),'update'];function createListener(_0x1d33e,_0x4086cd){return function(_0x4880bf){_0x4086cd[_0x47a5('0x3')](_0x1d33e,_0x4880bf);};}function removeListener(_0x11bf85,_0x2a1a7e){return function(){VoiceExtensionEvents[_0x47a5('0x4')](_0x11bf85,_0x2a1a7e);};}exports[_0x47a5('0x5')]=function(_0x545a97){for(var _0x3d5629=0x0,_0x59199c=events[_0x47a5('0x6')];_0x3d5629<_0x59199c;_0x3d5629++){var _0x30e405=events[_0x3d5629];var _0x506eda=createListener(_0x47a5('0x7')+_0x30e405,_0x545a97);VoiceExtensionEvents['on'](_0x30e405,_0x506eda);}};
\ No newline at end of file
index ceab005..9f8de6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf61e=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get','index','isAuthenticated','show','getMessages','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x15c815,_0x4137f4){var _0x58df88=function(_0x363ebd){while(--_0x363ebd){_0x15c815['push'](_0x15c815['shift']());}};_0x58df88(++_0x4137f4);}(_0xf61e,0x191));var _0xef61=function(_0x136cfc,_0x21167f){_0x136cfc=_0x136cfc-0x0;var _0x43a3d5=_0xf61e[_0x136cfc];return _0x43a3d5;};'use strict';var multer=require(_0xef61('0x0'));var util=require(_0xef61('0x1'));var path=require(_0xef61('0x2'));var timeout=require(_0xef61('0x3'));var express=require(_0xef61('0x4'));var router=express[_0xef61('0x5')]();var fs_extra=require(_0xef61('0x6'));var auth=require(_0xef61('0x7'));var interaction=require(_0xef61('0x8'));var config=require(_0xef61('0x9'));var controller=require(_0xef61('0xa'));router[_0xef61('0xb')]('/',auth['isAuthenticated'](),controller[_0xef61('0xc')]);router[_0xef61('0xb')]('/:id',auth[_0xef61('0xd')](),controller[_0xef61('0xe')]);router[_0xef61('0xb')]('/:id/messages',auth['isAuthenticated'](),controller[_0xef61('0xf')]);router[_0xef61('0x10')]('/',auth[_0xef61('0xd')](),controller[_0xef61('0x11')]);router[_0xef61('0x12')](_0xef61('0x13'),auth[_0xef61('0xd')](),controller[_0xef61('0x14')]);router[_0xef61('0x15')](_0xef61('0x13'),auth[_0xef61('0xd')](),controller[_0xef61('0x16')]);module[_0xef61('0x17')]=router;
\ No newline at end of file
+var _0x741c=['get','isAuthenticated','index','/:id','/:id/messages','getMessages','create','put','update','delete','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','./voiceMail.controller'];(function(_0x3fcd66,_0x83eaec){var _0x54a268=function(_0x4ec8e2){while(--_0x4ec8e2){_0x3fcd66['push'](_0x3fcd66['shift']());}};_0x54a268(++_0x83eaec);}(_0x741c,0x196));var _0xc741=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x741c[_0x40a045];return _0x1a687c;};'use strict';var multer=require(_0xc741('0x0'));var util=require(_0xc741('0x1'));var path=require(_0xc741('0x2'));var timeout=require(_0xc741('0x3'));var express=require(_0xc741('0x4'));var router=express[_0xc741('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xc741('0x6'));var config=require('../../config/environment');var controller=require(_0xc741('0x7'));router[_0xc741('0x8')]('/',auth[_0xc741('0x9')](),controller[_0xc741('0xa')]);router[_0xc741('0x8')](_0xc741('0xb'),auth[_0xc741('0x9')](),controller['show']);router[_0xc741('0x8')](_0xc741('0xc'),auth['isAuthenticated'](),controller[_0xc741('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xc741('0xe')]);router[_0xc741('0xf')](_0xc741('0xb'),auth[_0xc741('0x9')](),controller[_0xc741('0x10')]);router[_0xc741('0x11')](_0xc741('0xb'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 619ff43..02e7c88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc716=['TIMESTAMP','INTEGER','VIRTUAL','getDataValue','fullname','mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','string','trim','central','ENUM','yes'];(function(_0x30ba6c,_0x234a17){var _0x9c7617=function(_0x166660){while(--_0x166660){_0x30ba6c['push'](_0x30ba6c['shift']());}};_0x9c7617(++_0x234a17);}(_0xc716,0xde));var _0x6c71=function(_0x3157f4,_0x1d32c8){_0x3157f4=_0x3157f4-0x0;var _0x42ef99=_0xc716[_0x3157f4];return _0x42ef99;};'use strict';var Sequelize=require(_0x6c71('0x0'));module[_0x6c71('0x1')]={'customer_id':{'type':Sequelize[_0x6c71('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0x6c71('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0x6c71('0x2')],'defaultValue':'','allowNull':![],'unique':_0x6c71('0x4')},'password':{'type':Sequelize[_0x6c71('0x2')]},'fullname':{'type':Sequelize[_0x6c71('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]},'set':function(_0x223b7c){this[_0x6c71('0x5')](_0x6c71('0x6'),typeof _0x223b7c===_0x6c71('0x7')&&_0x223b7c[_0x6c71('0x8')]()?_0x223b7c[_0x6c71('0x8')]():null);}},'pager':{'type':Sequelize[_0x6c71('0x2')]},'tz':{'type':Sequelize[_0x6c71('0x2')],'defaultValue':_0x6c71('0x9')},'attach':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':_0x6c71('0xb'),'allowNull':![]},'saycid':{'type':Sequelize[_0x6c71('0xa')]('yes','no'),'defaultValue':_0x6c71('0xb'),'allowNull':![]},'dialout':{'type':Sequelize[_0x6c71('0x2')]},'callback':{'type':Sequelize[_0x6c71('0x2')]},'review':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x6c71('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':'TINYINT(4)','defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x6c71('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x6c71('0xb'),'allowNull':![]},'forcename':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x6c71('0xa')](_0x6c71('0xb'),'no'),'defaultValue':'yes','allowNull':![]},'stamp':{'type':_0x6c71('0xc')},'emailsubject':{'type':Sequelize[_0x6c71('0x2')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize[_0x6c71('0xd')](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x6c71('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x6c71('0xe')],'get':function(){return this[_0x6c71('0xf')](_0x6c71('0x10'))+'\x20-\x20'+this[_0x6c71('0xf')](_0x6c71('0x11'));}}};
\ No newline at end of file
+var _0x5ca8=['STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','central','ENUM','yes','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue','\x20-\x20','mailbox','exports'];(function(_0x3e91e0,_0x2175e0){var _0x2d243d=function(_0x48c3b6){while(--_0x48c3b6){_0x3e91e0['push'](_0x3e91e0['shift']());}};_0x2d243d(++_0x2175e0);}(_0x5ca8,0x1db));var _0x85ca=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5ca8[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require('sequelize');module[_0x85ca('0x0')]={'customer_id':{'type':Sequelize[_0x85ca('0x1')]},'context':{'type':Sequelize[_0x85ca('0x1')],'defaultValue':_0x85ca('0x2'),'unique':_0x85ca('0x3')},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x85ca('0x3')},'password':{'type':Sequelize['STRING']},'fullname':{'type':Sequelize[_0x85ca('0x1')]},'email':{'type':Sequelize[_0x85ca('0x1')],'validate':{'isEmail':!![]},'set':function(_0x2cd720){this[_0x85ca('0x4')](_0x85ca('0x5'),typeof _0x2cd720==='string'&&_0x2cd720[_0x85ca('0x6')]()?_0x2cd720['trim']():null);}},'pager':{'type':Sequelize[_0x85ca('0x1')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x85ca('0x7')},'attach':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x85ca('0x1')]},'callback':{'type':Sequelize[_0x85ca('0x1')]},'review':{'type':Sequelize['ENUM'](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x85ca('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0x85ca('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0x85ca('0x8')](_0x85ca('0x9'),'no'),'defaultValue':_0x85ca('0x9'),'allowNull':![]},'stamp':{'type':_0x85ca('0xb')},'emailsubject':{'type':Sequelize[_0x85ca('0x1')]},'emailbody':{'type':Sequelize['STRING']},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x85ca('0xc')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x85ca('0xd')],'get':function(){return this[_0x85ca('0xe')]('fullname')+_0x85ca('0xf')+this[_0x85ca('0xe')](_0x85ca('0x10'));}}};
\ No newline at end of file
index 569ce7b..cc9e280 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['model','keys','query','intersection','attributes','fields','length','hasOwnProperty','order','sort','where','filters','pick','merge','filter','options','VoiceMail','includeAll','include','findAll','rows','params','find','catch','create','user','role','UserProfileSection','userProfileId','autoAssociation','error','body','findOne','VoiceMailMessage','rawAttributes','nolimit','findAndCountAll','rimraf','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','count','set','Content-Range','save','update','then','destroy','get','UserProfileResource','sendStatus','stack','name','send','index','map','fieldName','type'];(function(_0xdb8aba,_0x584954){var _0x790caa=function(_0x5c33dd){while(--_0x5c33dd){_0xdb8aba['push'](_0xdb8aba['shift']());}};_0x790caa(++_0x584954);}(_0xb9a7,0x112));var _0x7b9a=function(_0x1969a7,_0x5a133a){_0x1969a7=_0x1969a7-0x0;var _0x3d665f=_0xb9a7[_0x1969a7];return _0x3d665f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7b9a('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7b9a('0x1'));var BPromise=require('bluebird');var Mustache=require(_0x7b9a('0x2'));var util=require(_0x7b9a('0x3'));var path=require(_0x7b9a('0x4'));var sox=require(_0x7b9a('0x5'));var csv=require(_0x7b9a('0x6'));var ejs=require(_0x7b9a('0x7'));var fs=require('fs');var fs_extra=require(_0x7b9a('0x8'));var _=require(_0x7b9a('0x9'));var squel=require(_0x7b9a('0xa'));var crypto=require(_0x7b9a('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x7b9a('0xc'));var toCsv=require(_0x7b9a('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x7b9a('0xd'));var qs=require(_0x7b9a('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x7b9a('0xf'));var logger=require('../../config/logger')(_0x7b9a('0x10'));var utils=require('../../config/utils');var config=require(_0x7b9a('0x11'));var licenseUtil=require(_0x7b9a('0x12'));var db=require(_0x7b9a('0x13'))['db'];function respondWithStatusCode(_0x5948ca,_0x32f616){_0x32f616=_0x32f616||0xcc;return function(_0xec5949){if(_0xec5949){return _0x5948ca['sendStatus'](_0x32f616);}return _0x5948ca[_0x7b9a('0x14')](_0x32f616)[_0x7b9a('0x15')]();};}function respondWithResult(_0x4b7ec0,_0xb157e5){_0xb157e5=_0xb157e5||0xc8;return function(_0xde180d){if(_0xde180d){return _0x4b7ec0[_0x7b9a('0x14')](_0xb157e5)[_0x7b9a('0x16')](_0xde180d);}};}function respondWithFilteredResult(_0x344fa7,_0x346daa){return function(_0x22a7e4){if(_0x22a7e4){var _0x35e602=typeof _0x346daa[_0x7b9a('0x17')]==='undefined'&&typeof _0x346daa[_0x7b9a('0x18')]==='undefined';var _0x123921=_0x22a7e4[_0x7b9a('0x19')];var _0x271263=_0x35e602?0x0:_0x346daa[_0x7b9a('0x17')];var _0x44a232=_0x35e602?_0x22a7e4[_0x7b9a('0x19')]:_0x346daa[_0x7b9a('0x17')]+_0x346daa[_0x7b9a('0x18')];var _0x2064a0;if(_0x44a232>=_0x123921){_0x44a232=_0x123921;_0x2064a0=0xc8;}else{_0x2064a0=0xce;}_0x344fa7[_0x7b9a('0x14')](_0x2064a0);return _0x344fa7[_0x7b9a('0x1a')](_0x7b9a('0x1b'),_0x271263+'-'+_0x44a232+'/'+_0x123921)[_0x7b9a('0x16')](_0x22a7e4);}return null;};}function patchUpdates(_0x58aed7){return function(_0x993048){try{jsonpatch['apply'](_0x993048,_0x58aed7,!![]);}catch(_0x1eacbc){return BPromise['reject'](_0x1eacbc);}return _0x993048[_0x7b9a('0x1c')]();};}function saveUpdates(_0x331ae6,_0x23d812){return function(_0x54fda7){if(_0x54fda7){return _0x54fda7[_0x7b9a('0x1d')](_0x331ae6)[_0x7b9a('0x1e')](function(_0x5705b2){return _0x5705b2;});}return null;};}function removeEntity(_0x35aca7,_0x374dca){return function(_0x269c07){if(_0x269c07){return _0x269c07[_0x7b9a('0x1f')]()[_0x7b9a('0x1e')](function(){var _0x5b2f52=_0x269c07[_0x7b9a('0x20')]({'plain':!![]});var _0x23219e='Voicemails';return db[_0x7b9a('0x21')]['destroy']({'where':{'type':_0x23219e,'resourceId':_0x5b2f52['id']}})[_0x7b9a('0x1e')](function(){return _0x269c07;});})[_0x7b9a('0x1e')](function(){_0x35aca7['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x24d886,_0x55301c){return function(_0x54df8a){if(!_0x54df8a){_0x24d886[_0x7b9a('0x22')](0x194);}return _0x54df8a;};}function handleError(_0x58fec8,_0x5be740){_0x5be740=_0x5be740||0x1f4;return function(_0x3847b4){logger['error'](_0x3847b4[_0x7b9a('0x23')]);if(_0x3847b4[_0x7b9a('0x24')]){delete _0x3847b4['name'];}_0x58fec8[_0x7b9a('0x14')](_0x5be740)[_0x7b9a('0x25')](_0x3847b4);};}exports[_0x7b9a('0x26')]=function(_0x5b64d7,_0x45ccf5){var _0x2ce78b={},_0x181e9c={},_0x6c8b1f={'count':0x0,'rows':[]};var _0x5028e7=_[_0x7b9a('0x27')](db['VoiceMail']['rawAttributes'],function(_0x2d278e){return{'name':_0x2d278e[_0x7b9a('0x28')],'type':_0x2d278e[_0x7b9a('0x29')]['key']};});_0x181e9c[_0x7b9a('0x2a')]=_[_0x7b9a('0x27')](_0x5028e7,'name');_0x181e9c['query']=_[_0x7b9a('0x2b')](_0x5b64d7[_0x7b9a('0x2c')]);_0x181e9c['filters']=_[_0x7b9a('0x2d')](_0x181e9c[_0x7b9a('0x2a')],_0x181e9c[_0x7b9a('0x2c')]);_0x2ce78b[_0x7b9a('0x2e')]=_[_0x7b9a('0x2d')](_0x181e9c['model'],qs[_0x7b9a('0x2f')](_0x5b64d7[_0x7b9a('0x2c')][_0x7b9a('0x2f')]));_0x2ce78b[_0x7b9a('0x2e')]=_0x2ce78b[_0x7b9a('0x2e')][_0x7b9a('0x30')]?_0x2ce78b['attributes']:_0x181e9c['model'];if(!_0x5b64d7[_0x7b9a('0x2c')][_0x7b9a('0x31')]('nolimit')){_0x2ce78b[_0x7b9a('0x18')]=qs[_0x7b9a('0x18')](_0x5b64d7[_0x7b9a('0x2c')]['limit']);_0x2ce78b[_0x7b9a('0x17')]=qs[_0x7b9a('0x17')](_0x5b64d7['query']['offset']);}_0x2ce78b[_0x7b9a('0x32')]=qs[_0x7b9a('0x33')](_0x5b64d7[_0x7b9a('0x2c')][_0x7b9a('0x33')]);_0x2ce78b[_0x7b9a('0x34')]=qs[_0x7b9a('0x35')](_[_0x7b9a('0x36')](_0x5b64d7[_0x7b9a('0x2c')],_0x181e9c['filters']),_0x5028e7);if(_0x5b64d7[_0x7b9a('0x2c')]['filter']){_0x2ce78b[_0x7b9a('0x34')]=_[_0x7b9a('0x37')](_0x2ce78b[_0x7b9a('0x34')],{'$or':_[_0x7b9a('0x27')](_0x5028e7,function(_0x3fa4cd){if(_0x3fa4cd[_0x7b9a('0x29')]!=='VIRTUAL'){var _0x34eebe={};_0x34eebe[_0x3fa4cd[_0x7b9a('0x24')]]={'$like':'%'+_0x5b64d7[_0x7b9a('0x2c')][_0x7b9a('0x38')]+'%'};return _0x34eebe;}})});}_0x2ce78b=_['merge']({},_0x2ce78b,_0x5b64d7[_0x7b9a('0x39')]);var _0xf86939={'where':_0x2ce78b[_0x7b9a('0x34')]};return db[_0x7b9a('0x3a')]['count'](_0xf86939)[_0x7b9a('0x1e')](function(_0x53d89a){_0x6c8b1f[_0x7b9a('0x19')]=_0x53d89a;if(_0x5b64d7[_0x7b9a('0x2c')][_0x7b9a('0x3b')]){_0x2ce78b[_0x7b9a('0x3c')]=[{'all':!![]}];}return db[_0x7b9a('0x3a')][_0x7b9a('0x3d')](_0x2ce78b);})['then'](function(_0x33edc6){_0x6c8b1f[_0x7b9a('0x3e')]=_0x33edc6;return _0x6c8b1f;})[_0x7b9a('0x1e')](respondWithFilteredResult(_0x45ccf5,_0x2ce78b))['catch'](handleError(_0x45ccf5,null));};exports['show']=function(_0x3724fe,_0x454b35){var _0x995d59={'raw':!![],'where':{'id':_0x3724fe[_0x7b9a('0x3f')]['id']}},_0x5cd3dd={};_0x5cd3dd[_0x7b9a('0x2a')]=_['keys'](db['VoiceMail']['rawAttributes']);_0x5cd3dd[_0x7b9a('0x2c')]=_[_0x7b9a('0x2b')](_0x3724fe['query']);_0x5cd3dd[_0x7b9a('0x35')]=_[_0x7b9a('0x2d')](_0x5cd3dd[_0x7b9a('0x2a')],_0x5cd3dd['query']);_0x995d59[_0x7b9a('0x2e')]=_['intersection'](_0x5cd3dd[_0x7b9a('0x2a')],qs[_0x7b9a('0x2f')](_0x3724fe[_0x7b9a('0x2c')][_0x7b9a('0x2f')]));_0x995d59[_0x7b9a('0x2e')]=_0x995d59['attributes'][_0x7b9a('0x30')]?_0x995d59['attributes']:_0x5cd3dd[_0x7b9a('0x2a')];if(_0x3724fe['query']['includeAll']){_0x995d59[_0x7b9a('0x3c')]=[{'all':!![]}];}_0x995d59=_[_0x7b9a('0x37')]({},_0x995d59,_0x3724fe[_0x7b9a('0x39')]);return db[_0x7b9a('0x3a')][_0x7b9a('0x40')](_0x995d59)[_0x7b9a('0x1e')](handleEntityNotFound(_0x454b35,null))[_0x7b9a('0x1e')](respondWithResult(_0x454b35,null))[_0x7b9a('0x41')](handleError(_0x454b35,null));};exports[_0x7b9a('0x42')]=function(_0x5088c7,_0x1d7957){return db[_0x7b9a('0x3a')]['create'](_0x5088c7['body'],{})['then'](function(_0x1b3e65){var _0x30296e=_0x5088c7[_0x7b9a('0x43')][_0x7b9a('0x20')]({'plain':!![]});if(!_0x30296e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x30296e[_0x7b9a('0x44')]===_0x7b9a('0x43')){var _0x287dea=_0x1b3e65[_0x7b9a('0x20')]({'plain':!![]});var _0x2d083b='Voicemails';return db[_0x7b9a('0x45')]['find']({'where':{'name':_0x2d083b,'userProfileId':_0x30296e[_0x7b9a('0x46')]},'raw':!![]})[_0x7b9a('0x1e')](function(_0x239146){if(_0x239146&&_0x239146[_0x7b9a('0x47')]===0x0){return db['UserProfileResource'][_0x7b9a('0x42')]({'name':_0x287dea[_0x7b9a('0x24')],'resourceId':_0x287dea['id'],'type':_0x239146[_0x7b9a('0x24')],'sectionId':_0x239146['id']},{})[_0x7b9a('0x1e')](function(){return _0x1b3e65;});}else{return _0x1b3e65;}})[_0x7b9a('0x41')](function(_0x3e2f1b){logger[_0x7b9a('0x48')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3e2f1b);throw _0x3e2f1b;});}return _0x1b3e65;})['then'](respondWithResult(_0x1d7957,0xc9))['catch'](handleError(_0x1d7957,null));};exports[_0x7b9a('0x1d')]=function(_0x2f8929,_0x5a1b7d){if(_0x2f8929['body']['id']){delete _0x2f8929['body']['id'];}return db['VoiceMail'][_0x7b9a('0x40')]({'where':{'id':_0x2f8929[_0x7b9a('0x3f')]['id']}})[_0x7b9a('0x1e')](handleEntityNotFound(_0x5a1b7d,null))[_0x7b9a('0x1e')](saveUpdates(_0x2f8929[_0x7b9a('0x49')],null))[_0x7b9a('0x1e')](respondWithResult(_0x5a1b7d,null))[_0x7b9a('0x41')](handleError(_0x5a1b7d,null));};exports[_0x7b9a('0x1f')]=function(_0x5dc17e,_0x1f99f5){return db['VoiceMail'][_0x7b9a('0x40')]({'where':{'id':_0x5dc17e[_0x7b9a('0x3f')]['id']}})[_0x7b9a('0x1e')](handleEntityNotFound(_0x1f99f5,null))[_0x7b9a('0x1e')](removeEntity(_0x1f99f5,null))[_0x7b9a('0x41')](handleError(_0x1f99f5,null));};exports['getMessages']=function(_0x25ec82,_0x491804,_0x3d2df4){return db[_0x7b9a('0x3a')][_0x7b9a('0x4a')]({'where':{'id':_0x25ec82['params']['id']}})['then'](handleEntityNotFound(_0x491804,null))['then'](function(_0x4f6843){var _0x33375c;var _0x8a777f={},_0xb91099={};_0xb91099['model']=_[_0x7b9a('0x2b')](db[_0x7b9a('0x4b')][_0x7b9a('0x4c')]);_0xb91099[_0x7b9a('0x2c')]=_[_0x7b9a('0x2b')](_0x25ec82['query']);_0xb91099[_0x7b9a('0x35')]=_[_0x7b9a('0x2d')](_0xb91099[_0x7b9a('0x2a')],_0xb91099['query']);_0x8a777f['attributes']=_['intersection'](_0xb91099[_0x7b9a('0x2a')],qs[_0x7b9a('0x2f')](_0x25ec82[_0x7b9a('0x2c')]['fields']));_0x8a777f[_0x7b9a('0x2e')]=_0x8a777f[_0x7b9a('0x2e')]['length']?_0x8a777f[_0x7b9a('0x2e')]:_0xb91099['model'];if(!_0x25ec82[_0x7b9a('0x2c')]['hasOwnProperty'](_0x7b9a('0x4d'))){_0x8a777f[_0x7b9a('0x18')]=qs[_0x7b9a('0x18')](_0x25ec82[_0x7b9a('0x2c')]['limit']);_0x8a777f[_0x7b9a('0x17')]=qs[_0x7b9a('0x17')](_0x25ec82[_0x7b9a('0x2c')][_0x7b9a('0x17')]);}_0x8a777f['order']=qs[_0x7b9a('0x33')](_0x25ec82['query'][_0x7b9a('0x33')]);_0x8a777f['where']=qs[_0x7b9a('0x35')](_['pick'](_0x25ec82['query'],_0xb91099['filters']));if(_0x25ec82['query'][_0x7b9a('0x38')]){_0x8a777f[_0x7b9a('0x34')]=_[_0x7b9a('0x37')](_0x8a777f[_0x7b9a('0x34')],{'$or':_['map'](_0x8a777f[_0x7b9a('0x2e')],function(_0x4b9462){var _0x50b6f1={};_0x50b6f1[_0x4b9462]={'$like':'%'+_0x25ec82[_0x7b9a('0x2c')]['filter']+'%'};return _0x50b6f1;})});}_0x8a777f['where']=_[_0x7b9a('0x37')](_0x8a777f[_0x7b9a('0x34')],{'mailboxuser':_0x4f6843['mailbox']});_0x8a777f=_[_0x7b9a('0x37')]({},_0x8a777f,_0x25ec82['options']);return db[_0x7b9a('0x4b')][_0x7b9a('0x4e')](_0x8a777f)[_0x7b9a('0x1e')](respondWithFilteredResult(_0x491804,_0x8a777f));})['catch'](handleError(_0x491804,null));};
\ No newline at end of file
+var _0xd914=['limit','order','sort','where','filters','pick','VIRTUAL','options','VoiceMail','includeAll','include','rows','catch','show','params','merge','find','create','body','get','role','user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','findOne','VoiceMailMessage','filter','mailbox','findAndCountAll','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','Voicemails','UserProfileResource','name','send','map','rawAttributes','type','key','query','keys','intersection','model','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x4859fb,_0x4f7617){var _0x323bd8=function(_0x171085){while(--_0x171085){_0x4859fb['push'](_0x4859fb['shift']());}};_0x323bd8(++_0x4f7617);}(_0xd914,0x17f));var _0x4d91=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0xd914[_0x2e3dfc];return _0x4b1245;};'use strict';var emlformat=require(_0x4d91('0x0'));var rimraf=require(_0x4d91('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4d91('0x2'));var rp=require(_0x4d91('0x3'));var moment=require(_0x4d91('0x4'));var BPromise=require(_0x4d91('0x5'));var Mustache=require(_0x4d91('0x6'));var util=require(_0x4d91('0x7'));var path=require('path');var sox=require(_0x4d91('0x8'));var csv=require('to-csv');var ejs=require(_0x4d91('0x9'));var fs=require('fs');var fs_extra=require(_0x4d91('0xa'));var _=require(_0x4d91('0xb'));var squel=require(_0x4d91('0xc'));var crypto=require(_0x4d91('0xd'));var jsforce=require(_0x4d91('0xe'));var deskjs=require(_0x4d91('0xf'));var toCsv=require(_0x4d91('0x10'));var querystring=require('querystring');var Papa=require(_0x4d91('0x11'));var Redis=require(_0x4d91('0x12'));var authService=require(_0x4d91('0x13'));var qs=require(_0x4d91('0x14'));var as=require(_0x4d91('0x15'));var hardwareService=require(_0x4d91('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0x4d91('0x17'));var config=require(_0x4d91('0x18'));var licenseUtil=require(_0x4d91('0x19'));var db=require(_0x4d91('0x1a'))['db'];function respondWithStatusCode(_0x1c15b7,_0x318e0c){_0x318e0c=_0x318e0c||0xcc;return function(_0x4ea591){if(_0x4ea591){return _0x1c15b7['sendStatus'](_0x318e0c);}return _0x1c15b7[_0x4d91('0x1b')](_0x318e0c)[_0x4d91('0x1c')]();};}function respondWithResult(_0xb6590d,_0x3c9fd6){_0x3c9fd6=_0x3c9fd6||0xc8;return function(_0x33fbd4){if(_0x33fbd4){return _0xb6590d[_0x4d91('0x1b')](_0x3c9fd6)[_0x4d91('0x1d')](_0x33fbd4);}};}function respondWithFilteredResult(_0x4f5aef,_0x3a8ec9){return function(_0x42631a){if(_0x42631a){var _0x1e2ef7=typeof _0x3a8ec9[_0x4d91('0x1e')]===_0x4d91('0x1f')&&typeof _0x3a8ec9['limit']===_0x4d91('0x1f');var _0xb75abf=_0x42631a[_0x4d91('0x20')];var _0x44b9a7=_0x1e2ef7?0x0:_0x3a8ec9['offset'];var _0x350e23=_0x1e2ef7?_0x42631a[_0x4d91('0x20')]:_0x3a8ec9[_0x4d91('0x1e')]+_0x3a8ec9['limit'];var _0x13ef2c;if(_0x350e23>=_0xb75abf){_0x350e23=_0xb75abf;_0x13ef2c=0xc8;}else{_0x13ef2c=0xce;}_0x4f5aef[_0x4d91('0x1b')](_0x13ef2c);return _0x4f5aef[_0x4d91('0x21')](_0x4d91('0x22'),_0x44b9a7+'-'+_0x350e23+'/'+_0xb75abf)[_0x4d91('0x1d')](_0x42631a);}return null;};}function patchUpdates(_0x40cde4){return function(_0xc1d44f){try{jsonpatch[_0x4d91('0x23')](_0xc1d44f,_0x40cde4,!![]);}catch(_0x30d911){return BPromise[_0x4d91('0x24')](_0x30d911);}return _0xc1d44f['save']();};}function saveUpdates(_0x4493da,_0x5f5236){return function(_0x57913e){if(_0x57913e){return _0x57913e[_0x4d91('0x25')](_0x4493da)[_0x4d91('0x26')](function(_0x341d18){return _0x341d18;});}return null;};}function removeEntity(_0x9cb864,_0x7d8cbf){return function(_0x12b722){if(_0x12b722){return _0x12b722[_0x4d91('0x27')]()[_0x4d91('0x26')](function(){var _0x55356b=_0x12b722['get']({'plain':!![]});var _0x1ee6b3=_0x4d91('0x28');return db[_0x4d91('0x29')][_0x4d91('0x27')]({'where':{'type':_0x1ee6b3,'resourceId':_0x55356b['id']}})[_0x4d91('0x26')](function(){return _0x12b722;});})[_0x4d91('0x26')](function(){_0x9cb864[_0x4d91('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3dc353,_0xda9802){return function(_0x12ac74){if(!_0x12ac74){_0x3dc353['sendStatus'](0x194);}return _0x12ac74;};}function handleError(_0x480a56,_0x299f27){_0x299f27=_0x299f27||0x1f4;return function(_0x470079){logger['error'](_0x470079['stack']);if(_0x470079[_0x4d91('0x2a')]){delete _0x470079[_0x4d91('0x2a')];}_0x480a56[_0x4d91('0x1b')](_0x299f27)[_0x4d91('0x2b')](_0x470079);};}exports['index']=function(_0x2587a1,_0x31bbf8){var _0x468e95={},_0xee7535={},_0xa63422={'count':0x0,'rows':[]};var _0x3466f3=_[_0x4d91('0x2c')](db['VoiceMail'][_0x4d91('0x2d')],function(_0x4f44ff){return{'name':_0x4f44ff['fieldName'],'type':_0x4f44ff[_0x4d91('0x2e')][_0x4d91('0x2f')]};});_0xee7535['model']=_[_0x4d91('0x2c')](_0x3466f3,_0x4d91('0x2a'));_0xee7535[_0x4d91('0x30')]=_[_0x4d91('0x31')](_0x2587a1[_0x4d91('0x30')]);_0xee7535['filters']=_[_0x4d91('0x32')](_0xee7535[_0x4d91('0x33')],_0xee7535[_0x4d91('0x30')]);_0x468e95[_0x4d91('0x34')]=_[_0x4d91('0x32')](_0xee7535[_0x4d91('0x33')],qs['fields'](_0x2587a1[_0x4d91('0x30')][_0x4d91('0x35')]));_0x468e95['attributes']=_0x468e95[_0x4d91('0x34')][_0x4d91('0x36')]?_0x468e95[_0x4d91('0x34')]:_0xee7535['model'];if(!_0x2587a1[_0x4d91('0x30')][_0x4d91('0x37')](_0x4d91('0x38'))){_0x468e95[_0x4d91('0x39')]=qs['limit'](_0x2587a1[_0x4d91('0x30')][_0x4d91('0x39')]);_0x468e95[_0x4d91('0x1e')]=qs[_0x4d91('0x1e')](_0x2587a1['query']['offset']);}_0x468e95[_0x4d91('0x3a')]=qs[_0x4d91('0x3b')](_0x2587a1['query'][_0x4d91('0x3b')]);_0x468e95[_0x4d91('0x3c')]=qs[_0x4d91('0x3d')](_[_0x4d91('0x3e')](_0x2587a1['query'],_0xee7535[_0x4d91('0x3d')]),_0x3466f3);if(_0x2587a1[_0x4d91('0x30')]['filter']){_0x468e95[_0x4d91('0x3c')]=_['merge'](_0x468e95[_0x4d91('0x3c')],{'$or':_['map'](_0x3466f3,function(_0x2dc892){if(_0x2dc892['type']!==_0x4d91('0x3f')){var _0x2782d2={};_0x2782d2[_0x2dc892[_0x4d91('0x2a')]]={'$like':'%'+_0x2587a1[_0x4d91('0x30')]['filter']+'%'};return _0x2782d2;}})});}_0x468e95=_['merge']({},_0x468e95,_0x2587a1[_0x4d91('0x40')]);var _0x55c8d0={'where':_0x468e95[_0x4d91('0x3c')]};return db[_0x4d91('0x41')]['count'](_0x55c8d0)[_0x4d91('0x26')](function(_0x2ae356){_0xa63422[_0x4d91('0x20')]=_0x2ae356;if(_0x2587a1[_0x4d91('0x30')][_0x4d91('0x42')]){_0x468e95[_0x4d91('0x43')]=[{'all':!![]}];}return db[_0x4d91('0x41')]['findAll'](_0x468e95);})[_0x4d91('0x26')](function(_0x4c70af){_0xa63422[_0x4d91('0x44')]=_0x4c70af;return _0xa63422;})[_0x4d91('0x26')](respondWithFilteredResult(_0x31bbf8,_0x468e95))[_0x4d91('0x45')](handleError(_0x31bbf8,null));};exports[_0x4d91('0x46')]=function(_0x20ec78,_0x1fc884){var _0x4b8e12={'raw':!![],'where':{'id':_0x20ec78[_0x4d91('0x47')]['id']}},_0x4ffc08={};_0x4ffc08[_0x4d91('0x33')]=_['keys'](db[_0x4d91('0x41')][_0x4d91('0x2d')]);_0x4ffc08[_0x4d91('0x30')]=_[_0x4d91('0x31')](_0x20ec78[_0x4d91('0x30')]);_0x4ffc08[_0x4d91('0x3d')]=_[_0x4d91('0x32')](_0x4ffc08[_0x4d91('0x33')],_0x4ffc08[_0x4d91('0x30')]);_0x4b8e12['attributes']=_['intersection'](_0x4ffc08[_0x4d91('0x33')],qs['fields'](_0x20ec78[_0x4d91('0x30')][_0x4d91('0x35')]));_0x4b8e12[_0x4d91('0x34')]=_0x4b8e12[_0x4d91('0x34')]['length']?_0x4b8e12[_0x4d91('0x34')]:_0x4ffc08['model'];if(_0x20ec78['query'][_0x4d91('0x42')]){_0x4b8e12[_0x4d91('0x43')]=[{'all':!![]}];}_0x4b8e12=_[_0x4d91('0x48')]({},_0x4b8e12,_0x20ec78[_0x4d91('0x40')]);return db[_0x4d91('0x41')][_0x4d91('0x49')](_0x4b8e12)['then'](handleEntityNotFound(_0x1fc884,null))[_0x4d91('0x26')](respondWithResult(_0x1fc884,null))[_0x4d91('0x45')](handleError(_0x1fc884,null));};exports[_0x4d91('0x4a')]=function(_0x449dd8,_0x106e5b){return db[_0x4d91('0x41')][_0x4d91('0x4a')](_0x449dd8[_0x4d91('0x4b')],{})[_0x4d91('0x26')](function(_0x145dfd){var _0x16f776=_0x449dd8['user'][_0x4d91('0x4c')]({'plain':!![]});if(!_0x16f776)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x16f776[_0x4d91('0x4d')]===_0x4d91('0x4e')){var _0x195e65=_0x145dfd[_0x4d91('0x4c')]({'plain':!![]});var _0x436a3d=_0x4d91('0x28');return db[_0x4d91('0x4f')][_0x4d91('0x49')]({'where':{'name':_0x436a3d,'userProfileId':_0x16f776['userProfileId']},'raw':!![]})[_0x4d91('0x26')](function(_0x43e72c){if(_0x43e72c&&_0x43e72c[_0x4d91('0x50')]===0x0){return db[_0x4d91('0x29')][_0x4d91('0x4a')]({'name':_0x195e65[_0x4d91('0x2a')],'resourceId':_0x195e65['id'],'type':_0x43e72c[_0x4d91('0x2a')],'sectionId':_0x43e72c['id']},{})['then'](function(){return _0x145dfd;});}else{return _0x145dfd;}})[_0x4d91('0x45')](function(_0x2159e4){logger[_0x4d91('0x51')](_0x4d91('0x52'),_0x2159e4);throw _0x2159e4;});}return _0x145dfd;})[_0x4d91('0x26')](respondWithResult(_0x106e5b,0xc9))[_0x4d91('0x45')](handleError(_0x106e5b,null));};exports[_0x4d91('0x25')]=function(_0x4138c5,_0x645923){if(_0x4138c5[_0x4d91('0x4b')]['id']){delete _0x4138c5[_0x4d91('0x4b')]['id'];}return db[_0x4d91('0x41')][_0x4d91('0x49')]({'where':{'id':_0x4138c5[_0x4d91('0x47')]['id']}})[_0x4d91('0x26')](handleEntityNotFound(_0x645923,null))[_0x4d91('0x26')](saveUpdates(_0x4138c5[_0x4d91('0x4b')],null))['then'](respondWithResult(_0x645923,null))['catch'](handleError(_0x645923,null));};exports['destroy']=function(_0x45cf4e,_0x10c1dd){return db[_0x4d91('0x41')]['find']({'where':{'id':_0x45cf4e[_0x4d91('0x47')]['id']}})[_0x4d91('0x26')](handleEntityNotFound(_0x10c1dd,null))[_0x4d91('0x26')](removeEntity(_0x10c1dd,null))['catch'](handleError(_0x10c1dd,null));};exports['getMessages']=function(_0x5bc877,_0x75aa6d,_0x26bfde){return db[_0x4d91('0x41')][_0x4d91('0x53')]({'where':{'id':_0x5bc877[_0x4d91('0x47')]['id']}})['then'](handleEntityNotFound(_0x75aa6d,null))[_0x4d91('0x26')](function(_0x20c0f2){var _0x4d9b87;var _0x563558={},_0x3f4f24={};_0x3f4f24['model']=_[_0x4d91('0x31')](db[_0x4d91('0x54')][_0x4d91('0x2d')]);_0x3f4f24['query']=_[_0x4d91('0x31')](_0x5bc877[_0x4d91('0x30')]);_0x3f4f24[_0x4d91('0x3d')]=_[_0x4d91('0x32')](_0x3f4f24[_0x4d91('0x33')],_0x3f4f24[_0x4d91('0x30')]);_0x563558[_0x4d91('0x34')]=_['intersection'](_0x3f4f24['model'],qs['fields'](_0x5bc877['query'][_0x4d91('0x35')]));_0x563558[_0x4d91('0x34')]=_0x563558[_0x4d91('0x34')]['length']?_0x563558[_0x4d91('0x34')]:_0x3f4f24['model'];if(!_0x5bc877[_0x4d91('0x30')][_0x4d91('0x37')]('nolimit')){_0x563558['limit']=qs[_0x4d91('0x39')](_0x5bc877[_0x4d91('0x30')][_0x4d91('0x39')]);_0x563558[_0x4d91('0x1e')]=qs[_0x4d91('0x1e')](_0x5bc877[_0x4d91('0x30')][_0x4d91('0x1e')]);}_0x563558[_0x4d91('0x3a')]=qs[_0x4d91('0x3b')](_0x5bc877[_0x4d91('0x30')]['sort']);_0x563558['where']=qs[_0x4d91('0x3d')](_[_0x4d91('0x3e')](_0x5bc877[_0x4d91('0x30')],_0x3f4f24[_0x4d91('0x3d')]));if(_0x5bc877[_0x4d91('0x30')][_0x4d91('0x55')]){_0x563558[_0x4d91('0x3c')]=_[_0x4d91('0x48')](_0x563558[_0x4d91('0x3c')],{'$or':_['map'](_0x563558['attributes'],function(_0x515574){var _0x51156f={};_0x51156f[_0x515574]={'$like':'%'+_0x5bc877[_0x4d91('0x30')][_0x4d91('0x55')]+'%'};return _0x51156f;})});}_0x563558[_0x4d91('0x3c')]=_[_0x4d91('0x48')](_0x563558[_0x4d91('0x3c')],{'mailboxuser':_0x20c0f2[_0x4d91('0x56')]});_0x563558=_[_0x4d91('0x48')]({},_0x563558,_0x5bc877[_0x4d91('0x40')]);return db[_0x4d91('0x54')][_0x4d91('0x57')](_0x563558)[_0x4d91('0x26')](respondWithFilteredResult(_0x75aa6d,_0x563558));})[_0x4d91('0x45')](handleError(_0x75aa6d,null));};
\ No newline at end of file
index a287145..6e0f610 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11ca=['../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','mailbox_context','mailbox','context','lodash','util','../../config/logger','api','request-promise','path','rimraf'];(function(_0x3fad77,_0x35b5f9){var _0x2eb632=function(_0xc0f8a5){while(--_0xc0f8a5){_0x3fad77['push'](_0x3fad77['shift']());}};_0x2eb632(++_0x35b5f9);}(_0x11ca,0x1d9));var _0xa11c=function(_0x4ac10a,_0x12f0b4){_0x4ac10a=_0x4ac10a-0x0;var _0x1bee4=_0x11ca[_0x4ac10a];return _0x1bee4;};'use strict';var _=require(_0xa11c('0x0'));var util=require(_0xa11c('0x1'));var logger=require(_0xa11c('0x2'))(_0xa11c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xa11c('0x4'));var fs=require('fs');var path=require(_0xa11c('0x5'));var rimraf=require(_0xa11c('0x6'));var config=require(_0xa11c('0x7'));var attributes=require(_0xa11c('0x8'));module[_0xa11c('0x9')]=function(_0x31a966,_0x47f53c){return _0x31a966[_0xa11c('0xa')](_0xa11c('0xb'),attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xa11c('0xc'),'fields':[_0xa11c('0xd'),_0xa11c('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x931f=['define','mailbox_context','mailbox','lodash','../../config/logger','api','bluebird','request-promise','rimraf','./voiceMail.attributes'];(function(_0x127cf7,_0x4e2ab1){var _0xa4bfec=function(_0x56d865){while(--_0x56d865){_0x127cf7['push'](_0x127cf7['shift']());}};_0xa4bfec(++_0x4e2ab1);}(_0x931f,0xc1));var _0xf931=function(_0x34c8ff,_0x674110){_0x34c8ff=_0x34c8ff-0x0;var _0x42601c=_0x931f[_0x34c8ff];return _0x42601c;};'use strict';var _=require(_0xf931('0x0'));var util=require('util');var logger=require(_0xf931('0x1'))(_0xf931('0x2'));var moment=require('moment');var BPromise=require(_0xf931('0x3'));var rp=require(_0xf931('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf931('0x5'));var config=require('../../config/environment');var attributes=require(_0xf931('0x6'));module['exports']=function(_0x5600a8,_0x1ad875){return _0x5600a8[_0xf931('0x7')]('VoiceMail',attributes,{'tableName':'voice_voicemail','paranoid':![],'indexes':[{'name':_0xf931('0x8'),'fields':[_0xf931('0x9'),'context']}],'timestamps':!![]});};
\ No newline at end of file
index 47926a0..e9deed6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c4b=['bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','lodash','util','moment'];(function(_0x1c546c,_0x5c57cb){var _0x2cc384=function(_0x4dee11){while(--_0x4dee11){_0x1c546c['push'](_0x1c546c['shift']());}};_0x2cc384(++_0x5c57cb);}(_0x6c4b,0x97));var _0xb6c4=function(_0x48de63,_0xbc0033){_0x48de63=_0x48de63-0x0;var _0x581139=_0x6c4b[_0x48de63];return _0x581139;};'use strict';var _=require(_0xb6c4('0x0'));var util=require(_0xb6c4('0x1'));var moment=require(_0xb6c4('0x2'));var BPromise=require(_0xb6c4('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb6c4('0x4'))['db'];var utils=require(_0xb6c4('0x5'));var logger=require(_0xb6c4('0x6'))(_0xb6c4('0x7'));var config=require('../../config/environment');var jayson=require(_0xb6c4('0x8'));var client=jayson[_0xb6c4('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x478220,_0x240d58,_0x534404){return new BPromise(function(_0x48a0b8,_0x2912bd){return client[_0xb6c4('0xa')](_0x478220,_0x534404)[_0xb6c4('0xb')](function(_0x794104){logger[_0xb6c4('0xc')](_0xb6c4('0xd'),_0x240d58,'request\x20sent');logger[_0xb6c4('0xe')](_0xb6c4('0xf'),_0x240d58,_0xb6c4('0x10'),JSON[_0xb6c4('0x11')](_0x794104));if(_0x794104[_0xb6c4('0x12')]){if(_0x794104['error'][_0xb6c4('0x13')]===0x1f4){logger[_0xb6c4('0x12')]('VoiceMail,\x20%s,\x20%s',_0x240d58,_0x794104[_0xb6c4('0x12')][_0xb6c4('0x14')]);return _0x2912bd(_0x794104[_0xb6c4('0x12')][_0xb6c4('0x14')]);}logger[_0xb6c4('0x12')]('VoiceMail,\x20%s,\x20%s',_0x240d58,_0x794104['error']['message']);return _0x48a0b8(_0x794104[_0xb6c4('0x12')][_0xb6c4('0x14')]);}else{logger[_0xb6c4('0xc')](_0xb6c4('0xd'),_0x240d58,_0xb6c4('0x10'));_0x48a0b8(_0x794104[_0xb6c4('0x15')][_0xb6c4('0x14')]);}})['catch'](function(_0x444a9b){logger[_0xb6c4('0x12')](_0xb6c4('0xd'),_0x240d58,_0x444a9b);_0x2912bd(_0x444a9b);});});}
\ No newline at end of file
+var _0xe11f=['randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','request\x20sent','debug','VoiceMail,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceMail,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird'];(function(_0x534214,_0xf6f3cb){var _0x5480a6=function(_0x532f3e){while(--_0x532f3e){_0x534214['push'](_0x534214['shift']());}};_0x5480a6(++_0xf6f3cb);}(_0xe11f,0x1cb));var _0xfe11=function(_0x4bc0f7,_0x329c69){_0x4bc0f7=_0x4bc0f7-0x0;var _0x1fa851=_0xe11f[_0x4bc0f7];return _0x1fa851;};'use strict';var _=require(_0xfe11('0x0'));var util=require('util');var moment=require(_0xfe11('0x1'));var BPromise=require(_0xfe11('0x2'));var rs=require(_0xfe11('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfe11('0x4'))['db'];var utils=require(_0xfe11('0x5'));var logger=require(_0xfe11('0x6'))('rpc');var config=require(_0xfe11('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xfe11('0x8')][_0xfe11('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xb17c21,_0x26f39b,_0x390098){return new BPromise(function(_0x106bc1,_0x186163){return client[_0xfe11('0xa')](_0xb17c21,_0x390098)[_0xfe11('0xb')](function(_0x2d50e0){logger['info']('VoiceMail,\x20%s,\x20%s',_0x26f39b,_0xfe11('0xc'));logger[_0xfe11('0xd')](_0xfe11('0xe'),_0x26f39b,_0xfe11('0xc'),JSON[_0xfe11('0xf')](_0x2d50e0));if(_0x2d50e0[_0xfe11('0x10')]){if(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x11')]===0x1f4){logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x2d50e0[_0xfe11('0x10')]['message']);return _0x186163(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);}logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);return _0x106bc1(_0x2d50e0[_0xfe11('0x10')][_0xfe11('0x13')]);}else{logger['info'](_0xfe11('0x12'),_0x26f39b,_0xfe11('0xc'));_0x106bc1(_0x2d50e0[_0xfe11('0x14')][_0xfe11('0x13')]);}})[_0xfe11('0x15')](function(_0x5d801c){logger[_0xfe11('0x10')](_0xfe11('0x12'),_0x26f39b,_0x5d801c);_0x186163(_0x5d801c);});});}
\ No newline at end of file
index 0fde707..6003f4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x361f=['index','get','isAuthenticated','show','/:id/download','download','create','/:id','update','delete','multer','util','path','connect-timeout','express','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x361f,0xbe));var _0xf361=function(_0x11d2f6,_0x3c0e83){_0x11d2f6=_0x11d2f6-0x0;var _0x2d6257=_0x361f[_0x11d2f6];return _0x2d6257;};'use strict';var multer=require(_0xf361('0x0'));var util=require(_0xf361('0x1'));var path=require(_0xf361('0x2'));var timeout=require(_0xf361('0x3'));var express=require(_0xf361('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf361('0x5'));var config=require(_0xf361('0x6'));var controller=require(_0xf361('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0xf361('0x8')]);router[_0xf361('0x9')]('/:id',auth[_0xf361('0xa')](),controller[_0xf361('0xb')]);router[_0xf361('0x9')](_0xf361('0xc'),auth['isAuthenticated'](),controller[_0xf361('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0xf361('0xe')]);router['put'](_0xf361('0xf'),auth[_0xf361('0xa')](),controller[_0xf361('0x10')]);router[_0xf361('0x11')](_0xf361('0xf'),auth[_0xf361('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x5528=['exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated','index','/:id/download','download','post','create','put','delete','/:id','destroy'];(function(_0x4217b9,_0x2e2a50){var _0x156685=function(_0x2bcff4){while(--_0x2bcff4){_0x4217b9['push'](_0x4217b9['shift']());}};_0x156685(++_0x2e2a50);}(_0x5528,0x13c));var _0x8552=function(_0x128bef,_0xc7a0af){_0x128bef=_0x128bef-0x0;var _0x1ba862=_0x5528[_0x128bef];return _0x1ba862;};'use strict';var multer=require(_0x8552('0x0'));var util=require(_0x8552('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x8552('0x2'));var router=express[_0x8552('0x3')]();var fs_extra=require(_0x8552('0x4'));var auth=require(_0x8552('0x5'));var interaction=require(_0x8552('0x6'));var config=require(_0x8552('0x7'));var controller=require(_0x8552('0x8'));router[_0x8552('0x9')]('/',auth[_0x8552('0xa')](),controller[_0x8552('0xb')]);router[_0x8552('0x9')]('/:id',auth[_0x8552('0xa')](),controller['show']);router['get'](_0x8552('0xc'),auth[_0x8552('0xa')](),controller[_0x8552('0xd')]);router[_0x8552('0xe')]('/',auth[_0x8552('0xa')](),controller[_0x8552('0xf')]);router[_0x8552('0x10')]('/:id',auth[_0x8552('0xa')](),controller['update']);router[_0x8552('0x11')](_0x8552('0x12'),auth[_0x8552('0xa')](),controller[_0x8552('0x13')]);module[_0x8552('0x14')]=router;
\ No newline at end of file
index b59e87f..e11c0f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed5c=['long','TIMESTAMP','literal','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xed5c,0x81));var _0xced5=function(_0x4a80e2,_0x27c5e4){_0x4a80e2=_0x4a80e2-0x0;var _0x1507e5=_0xed5c[_0x4a80e2];return _0x1507e5;};'use strict';var Sequelize=require(_0xced5('0x0'));module[_0xced5('0x1')]={'name':{'type':Sequelize[_0xced5('0x2')],'get':function(_0x21fae7){return this[_0xced5('0x3')]('id');}},'msgnum':{'type':Sequelize[_0xced5('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'origtime':{'type':Sequelize['STRING'],'defaultValue':''},'duration':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0xced5('0x6')),'defaultValue':null},'flag':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0xced5('0x5')],'defaultValue':''},'stamp':{'type':_0xced5('0x7'),'defaultValue':Sequelize[_0xced5('0x8')]('CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP')}};
\ No newline at end of file
+var _0xb524=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','VIRTUAL','getDataValue','INTEGER','STRING','TIMESTAMP','literal'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0xb524,0x1f1));var _0x4b52=function(_0x404483,_0x18f84a){_0x404483=_0x404483-0x0;var _0x497fac=_0xb524[_0x404483];return _0x497fac;};'use strict';var Sequelize=require(_0x4b52('0x0'));module['exports']={'name':{'type':Sequelize[_0x4b52('0x1')],'get':function(_0x5b2569){return this[_0x4b52('0x2')]('id');}},'msgnum':{'type':Sequelize[_0x4b52('0x3')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'context':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'callerid':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'origtime':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'duration':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'recording':{'type':Sequelize['BLOB']('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x4b52('0x4')],'defaultValue':''},'stamp':{'type':_0x4b52('0x5'),'defaultValue':Sequelize[_0x4b52('0x6')](_0x4b52('0x7'))}};
\ No newline at end of file
index f38da19..afab206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5508=['update','then','destroy','name','send','index','map','VoiceMailMessage','rawAttributes','type','key','model','differenceBy','keys','query','filters','attributes','intersection','fields','length','order','sort','where','filter','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','find','body','download','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','recording','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','save'];(function(_0x76d2ec,_0x45ea7c){var _0x540bdc=function(_0xf4d00a){while(--_0xf4d00a){_0x76d2ec['push'](_0x76d2ec['shift']());}};_0x540bdc(++_0x45ea7c);}(_0x5508,0x1d2));var _0x8550=function(_0x572262,_0x2988c1){_0x572262=_0x572262-0x0;var _0x29571d=_0x5508[_0x572262];return _0x29571d;};'use strict';var emlformat=require(_0x8550('0x0'));var rimraf=require(_0x8550('0x1'));var zipdir=require(_0x8550('0x2'));var jsonpatch=require(_0x8550('0x3'));var rp=require(_0x8550('0x4'));var moment=require(_0x8550('0x5'));var BPromise=require(_0x8550('0x6'));var Mustache=require(_0x8550('0x7'));var util=require(_0x8550('0x8'));var path=require(_0x8550('0x9'));var sox=require(_0x8550('0xa'));var csv=require(_0x8550('0xb'));var ejs=require(_0x8550('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8550('0xd'));var crypto=require(_0x8550('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x8550('0xb'));var querystring=require(_0x8550('0xf'));var Papa=require(_0x8550('0x10'));var Redis=require(_0x8550('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8550('0x12'));var as=require(_0x8550('0x13'));var hardwareService=require(_0x8550('0x14'));var logger=require('../../config/logger')(_0x8550('0x15'));var utils=require(_0x8550('0x16'));var config=require(_0x8550('0x17'));var licenseUtil=require(_0x8550('0x18'));var db=require(_0x8550('0x19'))['db'];function respondWithStatusCode(_0x48daba,_0x45b31a){_0x45b31a=_0x45b31a||0xcc;return function(_0x3f59b3){if(_0x3f59b3){return _0x48daba[_0x8550('0x1a')](_0x45b31a);}return _0x48daba[_0x8550('0x1b')](_0x45b31a)[_0x8550('0x1c')]();};}function respondWithResult(_0x330573,_0x198109){_0x198109=_0x198109||0xc8;return function(_0x31d293){if(_0x31d293){return _0x330573[_0x8550('0x1b')](_0x198109)[_0x8550('0x1d')](_0x31d293);}};}function respondWithFilteredResult(_0x1c50a1,_0x3e79d3){return function(_0x4bc792){if(_0x4bc792){var _0x54f701=typeof _0x3e79d3[_0x8550('0x1e')]==='undefined'&&typeof _0x3e79d3[_0x8550('0x1f')]===_0x8550('0x20');var _0x42b54d=_0x4bc792[_0x8550('0x21')];var _0xd914e3=_0x54f701?0x0:_0x3e79d3[_0x8550('0x1e')];var _0xfa934c=_0x54f701?_0x4bc792['count']:_0x3e79d3['offset']+_0x3e79d3[_0x8550('0x1f')];var _0xca770b;if(_0xfa934c>=_0x42b54d){_0xfa934c=_0x42b54d;_0xca770b=0xc8;}else{_0xca770b=0xce;}_0x1c50a1[_0x8550('0x1b')](_0xca770b);return _0x1c50a1[_0x8550('0x22')](_0x8550('0x23'),_0xd914e3+'-'+_0xfa934c+'/'+_0x42b54d)[_0x8550('0x1d')](_0x4bc792);}return null;};}function patchUpdates(_0x2a7a8f){return function(_0x8f63f3){try{jsonpatch['apply'](_0x8f63f3,_0x2a7a8f,!![]);}catch(_0x254274){return BPromise[_0x8550('0x24')](_0x254274);}return _0x8f63f3[_0x8550('0x25')]();};}function saveUpdates(_0x38dbfb,_0x3bd059){return function(_0x5475be){if(_0x5475be){return _0x5475be[_0x8550('0x26')](_0x38dbfb)[_0x8550('0x27')](function(_0x314bb2){return _0x314bb2;});}return null;};}function removeEntity(_0x4d200f,_0x1c36ab){return function(_0x4357b4){if(_0x4357b4){return _0x4357b4[_0x8550('0x28')]()[_0x8550('0x27')](function(){_0x4d200f[_0x8550('0x1b')](0xcc)[_0x8550('0x1c')]();});}};}function handleEntityNotFound(_0x4640bc,_0x196062){return function(_0x289349){if(!_0x289349){_0x4640bc[_0x8550('0x1a')](0x194);}return _0x289349;};}function handleError(_0xf92a32,_0x4be0c4){_0x4be0c4=_0x4be0c4||0x1f4;return function(_0x5f30ec){logger['error'](_0x5f30ec['stack']);if(_0x5f30ec[_0x8550('0x29')]){delete _0x5f30ec[_0x8550('0x29')];}_0xf92a32[_0x8550('0x1b')](_0x4be0c4)[_0x8550('0x2a')](_0x5f30ec);};}exports[_0x8550('0x2b')]=function(_0x5213b8,_0x5302e8){var _0x304c5b={},_0x5574ed={},_0x3e41f2={'count':0x0,'rows':[]};var _0x44acaf=_[_0x8550('0x2c')](db[_0x8550('0x2d')][_0x8550('0x2e')],function(_0x2f9e19){return{'name':_0x2f9e19['fieldName'],'type':_0x2f9e19[_0x8550('0x2f')][_0x8550('0x30')]};});_0x5574ed[_0x8550('0x31')]=_[_0x8550('0x32')](_[_0x8550('0x2c')](_0x44acaf,'name'),[_0x8550('0x29')]);_0x5574ed['query']=_[_0x8550('0x33')](_0x5213b8[_0x8550('0x34')]);_0x5574ed[_0x8550('0x35')]=_['intersection'](_0x5574ed[_0x8550('0x31')],_0x5574ed['query']);_0x304c5b[_0x8550('0x36')]=_[_0x8550('0x37')](_0x5574ed['model'],qs[_0x8550('0x38')](_0x5213b8[_0x8550('0x34')][_0x8550('0x38')]));_0x304c5b['attributes']=_0x304c5b[_0x8550('0x36')][_0x8550('0x39')]?_0x304c5b[_0x8550('0x36')]:_0x5574ed[_0x8550('0x31')];if(!_0x5213b8['query']['hasOwnProperty']('nolimit')){_0x304c5b[_0x8550('0x1f')]=qs[_0x8550('0x1f')](_0x5213b8[_0x8550('0x34')][_0x8550('0x1f')]);_0x304c5b[_0x8550('0x1e')]=qs[_0x8550('0x1e')](_0x5213b8[_0x8550('0x34')][_0x8550('0x1e')]);}_0x304c5b[_0x8550('0x3a')]=qs[_0x8550('0x3b')](_0x5213b8[_0x8550('0x34')]['sort']);_0x304c5b[_0x8550('0x3c')]=qs[_0x8550('0x35')](_['pick'](_0x5213b8[_0x8550('0x34')],_0x5574ed[_0x8550('0x35')]),_0x44acaf);if(_0x5213b8['query'][_0x8550('0x3d')]){_0x304c5b[_0x8550('0x3c')]=_['merge'](_0x304c5b[_0x8550('0x3c')],{'$or':_[_0x8550('0x2c')](_0x44acaf,function(_0x5003b6){if(_0x5003b6[_0x8550('0x2f')]!==_0x8550('0x3e')){var _0x19b377={};_0x19b377[_0x5003b6[_0x8550('0x29')]]={'$like':'%'+_0x5213b8[_0x8550('0x34')][_0x8550('0x3d')]+'%'};return _0x19b377;}})});}_0x304c5b=_[_0x8550('0x3f')]({},_0x304c5b,_0x5213b8[_0x8550('0x40')]);var _0x3f214a={'where':_0x304c5b['where']};return db['VoiceMailMessage']['count'](_0x3f214a)[_0x8550('0x27')](function(_0x4d477f){_0x3e41f2[_0x8550('0x21')]=_0x4d477f;if(_0x5213b8[_0x8550('0x34')]['includeAll']){_0x304c5b[_0x8550('0x41')]=[{'all':!![]}];}return db[_0x8550('0x2d')][_0x8550('0x42')](_0x304c5b);})[_0x8550('0x27')](function(_0x2e544f){_0x3e41f2[_0x8550('0x43')]=_0x2e544f;return _0x3e41f2;})[_0x8550('0x27')](respondWithFilteredResult(_0x5302e8,_0x304c5b))[_0x8550('0x44')](handleError(_0x5302e8,null));};exports[_0x8550('0x45')]=function(_0x33dcdf,_0x39977b){var _0x16d5bb={'raw':!![],'where':{'id':_0x33dcdf[_0x8550('0x46')]['id']}},_0x5c9147={};_0x5c9147['model']=_[_0x8550('0x33')](db[_0x8550('0x2d')][_0x8550('0x2e')]);_0x5c9147[_0x8550('0x34')]=_[_0x8550('0x33')](_0x33dcdf[_0x8550('0x34')]);_0x5c9147[_0x8550('0x35')]=_[_0x8550('0x37')](_0x5c9147[_0x8550('0x31')],_0x5c9147['query']);_0x16d5bb[_0x8550('0x36')]=_[_0x8550('0x37')](_0x5c9147['model'],qs[_0x8550('0x38')](_0x33dcdf[_0x8550('0x34')]['fields']));_0x16d5bb[_0x8550('0x36')]=_0x16d5bb[_0x8550('0x36')][_0x8550('0x39')]?_0x16d5bb['attributes']:_0x5c9147[_0x8550('0x31')];if(_0x33dcdf['query'][_0x8550('0x47')]){_0x16d5bb[_0x8550('0x41')]=[{'all':!![]}];}_0x16d5bb=_[_0x8550('0x3f')]({},_0x16d5bb,_0x33dcdf['options']);return db[_0x8550('0x2d')][_0x8550('0x48')](_0x16d5bb)['then'](handleEntityNotFound(_0x39977b,null))['then'](respondWithResult(_0x39977b,null))['catch'](handleError(_0x39977b,null));};exports['create']=function(_0x269fac,_0x47923a){return db['VoiceMailMessage']['create'](_0x269fac[_0x8550('0x49')],{})[_0x8550('0x27')](respondWithResult(_0x47923a,0xc9))[_0x8550('0x44')](handleError(_0x47923a,null));};exports[_0x8550('0x26')]=function(_0x50aa45,_0x41eb72){if(_0x50aa45['body']['id']){delete _0x50aa45['body']['id'];}return db['VoiceMailMessage'][_0x8550('0x48')]({'where':{'id':_0x50aa45['params']['id']}})[_0x8550('0x27')](handleEntityNotFound(_0x41eb72,null))['then'](saveUpdates(_0x50aa45[_0x8550('0x49')],null))[_0x8550('0x27')](respondWithResult(_0x41eb72,null))[_0x8550('0x44')](handleError(_0x41eb72,null));};exports['destroy']=function(_0x5ec558,_0x3b85a1){return db['VoiceMailMessage'][_0x8550('0x48')]({'where':{'id':_0x5ec558['params']['id']}})[_0x8550('0x27')](handleEntityNotFound(_0x3b85a1,null))[_0x8550('0x27')](removeEntity(_0x3b85a1,null))['catch'](handleError(_0x3b85a1,null));};exports[_0x8550('0x4a')]=function(_0x21486b,_0x4dc2b4,_0x20004f){return db['VoiceMailMessage'][_0x8550('0x48')]({'where':{'id':_0x21486b[_0x8550('0x46')]['id']},'attributes':['id','recording','msg_id']})[_0x8550('0x27')](handleEntityNotFound(_0x4dc2b4,null))[_0x8550('0x27')](function(_0x1de7b7){if(_0x1de7b7){if(!_0x1de7b7['recording']){throw new db['Sequelize'][(_0x8550('0x4b'))](_0x8550('0x4c'));}var _0x1969c3={'Content-Type':_0x8550('0x4d'),'Content-Disposition':_0x8550('0x4e')};if(_0x1de7b7[_0x8550('0x4f')]){_0x1969c3[_0x8550('0x50')]=_0x8550('0x51')+_0x1de7b7[_0x8550('0x4f')]+_0x8550('0x52');}_0x4dc2b4[_0x8550('0x22')](_0x1969c3);return _0x4dc2b4[_0x8550('0x2a')](new Buffer(_0x1de7b7[_0x8550('0x53')]));}})[_0x8550('0x44')](handleError(_0x4dc2b4,null));};
\ No newline at end of file
+var _0x50fe=['recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','attachment','Content-Disposition','attachment;\x20filename=\x22','.wav\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','limit','count','offset','apply','reject','save','update','destroy','error','stack','name','send','index','map','VoiceMailMessage','type','key','model','differenceBy','query','keys','intersection','attributes','fields','length','order','sort','where','filters','filter','VIRTUAL','merge','options','includeAll','include','then','rows','catch','show','rawAttributes','find','create','body','download'];(function(_0x1dc24d,_0x541fa4){var _0x5d7fb2=function(_0x7ccd26){while(--_0x7ccd26){_0x1dc24d['push'](_0x1dc24d['shift']());}};_0x5d7fb2(++_0x541fa4);}(_0x50fe,0x1e3));var _0xe50f=function(_0x418fa7,_0x1bce1a){_0x418fa7=_0x418fa7-0x0;var _0x496da9=_0x50fe[_0x418fa7];return _0x496da9;};'use strict';var emlformat=require(_0xe50f('0x0'));var rimraf=require(_0xe50f('0x1'));var zipdir=require(_0xe50f('0x2'));var jsonpatch=require(_0xe50f('0x3'));var rp=require(_0xe50f('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xe50f('0x5'));var util=require('util');var path=require(_0xe50f('0x6'));var sox=require(_0xe50f('0x7'));var csv=require(_0xe50f('0x8'));var ejs=require(_0xe50f('0x9'));var fs=require('fs');var fs_extra=require(_0xe50f('0xa'));var _=require(_0xe50f('0xb'));var squel=require(_0xe50f('0xc'));var crypto=require('crypto');var jsforce=require(_0xe50f('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe50f('0x8'));var querystring=require(_0xe50f('0xe'));var Papa=require(_0xe50f('0xf'));var Redis=require('ioredis');var authService=require(_0xe50f('0x10'));var qs=require(_0xe50f('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe50f('0x12'));var utils=require(_0xe50f('0x13'));var config=require(_0xe50f('0x14'));var licenseUtil=require(_0xe50f('0x15'));var db=require(_0xe50f('0x16'))['db'];function respondWithStatusCode(_0x5c8bb6,_0x35f43c){_0x35f43c=_0x35f43c||0xcc;return function(_0x3eb791){if(_0x3eb791){return _0x5c8bb6[_0xe50f('0x17')](_0x35f43c);}return _0x5c8bb6[_0xe50f('0x18')](_0x35f43c)[_0xe50f('0x19')]();};}function respondWithResult(_0x2268c4,_0x63bc5a){_0x63bc5a=_0x63bc5a||0xc8;return function(_0x3f7d1b){if(_0x3f7d1b){return _0x2268c4[_0xe50f('0x18')](_0x63bc5a)['json'](_0x3f7d1b);}};}function respondWithFilteredResult(_0x596511,_0x2eaba3){return function(_0x120e86){if(_0x120e86){var _0x411148=typeof _0x2eaba3['offset']==='undefined'&&typeof _0x2eaba3[_0xe50f('0x1a')]==='undefined';var _0x3c7a72=_0x120e86[_0xe50f('0x1b')];var _0x17b508=_0x411148?0x0:_0x2eaba3['offset'];var _0x4f595d=_0x411148?_0x120e86[_0xe50f('0x1b')]:_0x2eaba3[_0xe50f('0x1c')]+_0x2eaba3[_0xe50f('0x1a')];var _0x4d05f6;if(_0x4f595d>=_0x3c7a72){_0x4f595d=_0x3c7a72;_0x4d05f6=0xc8;}else{_0x4d05f6=0xce;}_0x596511[_0xe50f('0x18')](_0x4d05f6);return _0x596511['set']('Content-Range',_0x17b508+'-'+_0x4f595d+'/'+_0x3c7a72)['json'](_0x120e86);}return null;};}function patchUpdates(_0x4b41eb){return function(_0x5ac675){try{jsonpatch[_0xe50f('0x1d')](_0x5ac675,_0x4b41eb,!![]);}catch(_0x50191a){return BPromise[_0xe50f('0x1e')](_0x50191a);}return _0x5ac675[_0xe50f('0x1f')]();};}function saveUpdates(_0x14ce76,_0x56f5ed){return function(_0x4ce897){if(_0x4ce897){return _0x4ce897[_0xe50f('0x20')](_0x14ce76)['then'](function(_0x5af541){return _0x5af541;});}return null;};}function removeEntity(_0x516109,_0x56753e){return function(_0x1b83b0){if(_0x1b83b0){return _0x1b83b0[_0xe50f('0x21')]()['then'](function(){_0x516109[_0xe50f('0x18')](0xcc)[_0xe50f('0x19')]();});}};}function handleEntityNotFound(_0x211fef,_0x2f5b10){return function(_0x499d6b){if(!_0x499d6b){_0x211fef[_0xe50f('0x17')](0x194);}return _0x499d6b;};}function handleError(_0x4c3244,_0x9510c8){_0x9510c8=_0x9510c8||0x1f4;return function(_0x43d351){logger[_0xe50f('0x22')](_0x43d351[_0xe50f('0x23')]);if(_0x43d351[_0xe50f('0x24')]){delete _0x43d351[_0xe50f('0x24')];}_0x4c3244[_0xe50f('0x18')](_0x9510c8)[_0xe50f('0x25')](_0x43d351);};}exports[_0xe50f('0x26')]=function(_0x530b72,_0x44361f){var _0x4f078c={},_0x3c90b5={},_0x3be39f={'count':0x0,'rows':[]};var _0x2c3380=_[_0xe50f('0x27')](db[_0xe50f('0x28')]['rawAttributes'],function(_0x935aad){return{'name':_0x935aad['fieldName'],'type':_0x935aad[_0xe50f('0x29')][_0xe50f('0x2a')]};});_0x3c90b5[_0xe50f('0x2b')]=_[_0xe50f('0x2c')](_[_0xe50f('0x27')](_0x2c3380,_0xe50f('0x24')),[_0xe50f('0x24')]);_0x3c90b5[_0xe50f('0x2d')]=_[_0xe50f('0x2e')](_0x530b72['query']);_0x3c90b5['filters']=_[_0xe50f('0x2f')](_0x3c90b5[_0xe50f('0x2b')],_0x3c90b5[_0xe50f('0x2d')]);_0x4f078c[_0xe50f('0x30')]=_[_0xe50f('0x2f')](_0x3c90b5['model'],qs[_0xe50f('0x31')](_0x530b72[_0xe50f('0x2d')][_0xe50f('0x31')]));_0x4f078c[_0xe50f('0x30')]=_0x4f078c[_0xe50f('0x30')][_0xe50f('0x32')]?_0x4f078c['attributes']:_0x3c90b5[_0xe50f('0x2b')];if(!_0x530b72[_0xe50f('0x2d')]['hasOwnProperty']('nolimit')){_0x4f078c[_0xe50f('0x1a')]=qs[_0xe50f('0x1a')](_0x530b72[_0xe50f('0x2d')]['limit']);_0x4f078c[_0xe50f('0x1c')]=qs[_0xe50f('0x1c')](_0x530b72[_0xe50f('0x2d')]['offset']);}_0x4f078c[_0xe50f('0x33')]=qs[_0xe50f('0x34')](_0x530b72['query'][_0xe50f('0x34')]);_0x4f078c[_0xe50f('0x35')]=qs[_0xe50f('0x36')](_['pick'](_0x530b72[_0xe50f('0x2d')],_0x3c90b5[_0xe50f('0x36')]),_0x2c3380);if(_0x530b72[_0xe50f('0x2d')][_0xe50f('0x37')]){_0x4f078c[_0xe50f('0x35')]=_['merge'](_0x4f078c[_0xe50f('0x35')],{'$or':_[_0xe50f('0x27')](_0x2c3380,function(_0x1ba5b8){if(_0x1ba5b8[_0xe50f('0x29')]!==_0xe50f('0x38')){var _0x94bbad={};_0x94bbad[_0x1ba5b8['name']]={'$like':'%'+_0x530b72[_0xe50f('0x2d')][_0xe50f('0x37')]+'%'};return _0x94bbad;}})});}_0x4f078c=_[_0xe50f('0x39')]({},_0x4f078c,_0x530b72[_0xe50f('0x3a')]);var _0xe0994e={'where':_0x4f078c['where']};return db[_0xe50f('0x28')][_0xe50f('0x1b')](_0xe0994e)['then'](function(_0x2747b4){_0x3be39f[_0xe50f('0x1b')]=_0x2747b4;if(_0x530b72['query'][_0xe50f('0x3b')]){_0x4f078c[_0xe50f('0x3c')]=[{'all':!![]}];}return db[_0xe50f('0x28')]['findAll'](_0x4f078c);})[_0xe50f('0x3d')](function(_0x16466e){_0x3be39f[_0xe50f('0x3e')]=_0x16466e;return _0x3be39f;})[_0xe50f('0x3d')](respondWithFilteredResult(_0x44361f,_0x4f078c))[_0xe50f('0x3f')](handleError(_0x44361f,null));};exports[_0xe50f('0x40')]=function(_0x134a9a,_0x4106a5){var _0x4756cf={'raw':!![],'where':{'id':_0x134a9a['params']['id']}},_0x44474e={};_0x44474e[_0xe50f('0x2b')]=_[_0xe50f('0x2e')](db[_0xe50f('0x28')][_0xe50f('0x41')]);_0x44474e[_0xe50f('0x2d')]=_['keys'](_0x134a9a[_0xe50f('0x2d')]);_0x44474e[_0xe50f('0x36')]=_[_0xe50f('0x2f')](_0x44474e[_0xe50f('0x2b')],_0x44474e[_0xe50f('0x2d')]);_0x4756cf[_0xe50f('0x30')]=_[_0xe50f('0x2f')](_0x44474e[_0xe50f('0x2b')],qs[_0xe50f('0x31')](_0x134a9a[_0xe50f('0x2d')][_0xe50f('0x31')]));_0x4756cf[_0xe50f('0x30')]=_0x4756cf[_0xe50f('0x30')]['length']?_0x4756cf[_0xe50f('0x30')]:_0x44474e['model'];if(_0x134a9a['query'][_0xe50f('0x3b')]){_0x4756cf[_0xe50f('0x3c')]=[{'all':!![]}];}_0x4756cf=_[_0xe50f('0x39')]({},_0x4756cf,_0x134a9a[_0xe50f('0x3a')]);return db[_0xe50f('0x28')][_0xe50f('0x42')](_0x4756cf)[_0xe50f('0x3d')](handleEntityNotFound(_0x4106a5,null))['then'](respondWithResult(_0x4106a5,null))[_0xe50f('0x3f')](handleError(_0x4106a5,null));};exports[_0xe50f('0x43')]=function(_0x5cc629,_0x4dbaf4){return db[_0xe50f('0x28')][_0xe50f('0x43')](_0x5cc629['body'],{})[_0xe50f('0x3d')](respondWithResult(_0x4dbaf4,0xc9))[_0xe50f('0x3f')](handleError(_0x4dbaf4,null));};exports[_0xe50f('0x20')]=function(_0xb77c12,_0x5c7f04){if(_0xb77c12[_0xe50f('0x44')]['id']){delete _0xb77c12[_0xe50f('0x44')]['id'];}return db[_0xe50f('0x28')][_0xe50f('0x42')]({'where':{'id':_0xb77c12['params']['id']}})[_0xe50f('0x3d')](handleEntityNotFound(_0x5c7f04,null))['then'](saveUpdates(_0xb77c12[_0xe50f('0x44')],null))[_0xe50f('0x3d')](respondWithResult(_0x5c7f04,null))[_0xe50f('0x3f')](handleError(_0x5c7f04,null));};exports[_0xe50f('0x21')]=function(_0x175334,_0x3e7f64){return db['VoiceMailMessage'][_0xe50f('0x42')]({'where':{'id':_0x175334['params']['id']}})[_0xe50f('0x3d')](handleEntityNotFound(_0x3e7f64,null))[_0xe50f('0x3d')](removeEntity(_0x3e7f64,null))[_0xe50f('0x3f')](handleError(_0x3e7f64,null));};exports[_0xe50f('0x45')]=function(_0x5a60d3,_0x2409f0,_0x4cfcfa){return db[_0xe50f('0x28')][_0xe50f('0x42')]({'where':{'id':_0x5a60d3['params']['id']},'attributes':['id',_0xe50f('0x46'),_0xe50f('0x47')]})['then'](handleEntityNotFound(_0x2409f0,null))[_0xe50f('0x3d')](function(_0x42dfea){if(_0x42dfea){if(!_0x42dfea[_0xe50f('0x46')]){throw new db[(_0xe50f('0x48'))][(_0xe50f('0x49'))](_0xe50f('0x4a'));}var _0x57b4e9={'Content-Type':'audio/wav','Content-Disposition':_0xe50f('0x4b')};if(_0x42dfea[_0xe50f('0x47')]){_0x57b4e9[_0xe50f('0x4c')]=_0xe50f('0x4d')+_0x42dfea[_0xe50f('0x47')]+_0xe50f('0x4e');}_0x2409f0['set'](_0x57b4e9);return _0x2409f0['send'](new Buffer(_0x42dfea[_0xe50f('0x46')]));}})[_0xe50f('0x3f')](handleError(_0x2409f0,null));};
\ No newline at end of file
index e69682a..db3e480 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6298=['../../config/environment','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','../../config/logger','api','moment','path'];(function(_0x2f9467,_0x40576f){var _0x39894c=function(_0x13e344){while(--_0x13e344){_0x2f9467['push'](_0x2f9467['shift']());}};_0x39894c(++_0x40576f);}(_0x6298,0x1dc));var _0x8629=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6298[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x8629('0x0'))(_0x8629('0x1'));var moment=require(_0x8629('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8629('0x3'));var rimraf=require('rimraf');var config=require(_0x8629('0x4'));var attributes=require('./voiceMailMessage.attributes');module[_0x8629('0x5')]=function(_0x2f7c2d,_0x25710c){return _0x2f7c2d[_0x8629('0x6')](_0x8629('0x7'),attributes,{'tableName':_0x8629('0x8'),'paranoid':![],'indexes':[{'name':_0x8629('0x9'),'fields':[_0x8629('0x9')]}],'timestamps':![]});};
\ No newline at end of file
+var _0x643a=['./voiceMailMessage.attributes','exports','define','VoiceMailMessage','voice_voicemail_messages','dir','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment'];(function(_0x401588,_0x51cd98){var _0x11e331=function(_0x4aeb70){while(--_0x4aeb70){_0x401588['push'](_0x401588['shift']());}};_0x11e331(++_0x51cd98);}(_0x643a,0x17d));var _0xa643=function(_0x4cfe90,_0x416cef){_0x4cfe90=_0x4cfe90-0x0;var _0x1471c7=_0x643a[_0x4cfe90];return _0x1471c7;};'use strict';var _=require(_0xa643('0x0'));var util=require(_0xa643('0x1'));var logger=require(_0xa643('0x2'))(_0xa643('0x3'));var moment=require(_0xa643('0x4'));var BPromise=require('bluebird');var rp=require(_0xa643('0x5'));var fs=require('fs');var path=require(_0xa643('0x6'));var rimraf=require(_0xa643('0x7'));var config=require(_0xa643('0x8'));var attributes=require(_0xa643('0x9'));module[_0xa643('0xa')]=function(_0x3ab5b2,_0x12553a){return _0x3ab5b2[_0xa643('0xb')](_0xa643('0xc'),attributes,{'tableName':_0xa643('0xd'),'paranoid':![],'indexes':[{'name':_0xa643('0xe'),'fields':[_0xa643('0xe')]}],'timestamps':![]});};
\ No newline at end of file
index 223e883..6fd8d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6bb6=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch'];(function(_0x4059b5,_0x4b9fab){var _0x277d0a=function(_0x455cf2){while(--_0x455cf2){_0x4059b5['push'](_0x4059b5['shift']());}};_0x277d0a(++_0x4b9fab);}(_0x6bb6,0xb8));var _0x66bb=function(_0x2e3681,_0x23ef81){_0x2e3681=_0x2e3681-0x0;var _0x4b8c22=_0x6bb6[_0x2e3681];return _0x4b8c22;};'use strict';var _=require(_0x66bb('0x0'));var util=require(_0x66bb('0x1'));var moment=require(_0x66bb('0x2'));var BPromise=require(_0x66bb('0x3'));var rs=require(_0x66bb('0x4'));var fs=require('fs');var Redis=require(_0x66bb('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x66bb('0x6'));var logger=require(_0x66bb('0x7'))(_0x66bb('0x8'));var config=require(_0x66bb('0x9'));var jayson=require(_0x66bb('0xa'));var client=jayson[_0x66bb('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3a54b9,_0x2dfc48,_0x3f2c1d){return new BPromise(function(_0x4e783d,_0x5c9b35){return client[_0x66bb('0xc')](_0x3a54b9,_0x3f2c1d)[_0x66bb('0xd')](function(_0xde5b83){logger[_0x66bb('0xe')](_0x66bb('0xf'),_0x2dfc48,_0x66bb('0x10'));logger['debug'](_0x66bb('0x11'),_0x2dfc48,_0x66bb('0x10'),JSON[_0x66bb('0x12')](_0xde5b83));if(_0xde5b83[_0x66bb('0x13')]){if(_0xde5b83[_0x66bb('0x13')]['code']===0x1f4){logger[_0x66bb('0x13')](_0x66bb('0xf'),_0x2dfc48,_0xde5b83[_0x66bb('0x13')][_0x66bb('0x14')]);return _0x5c9b35(_0xde5b83[_0x66bb('0x13')]['message']);}logger['error'](_0x66bb('0xf'),_0x2dfc48,_0xde5b83[_0x66bb('0x13')][_0x66bb('0x14')]);return _0x4e783d(_0xde5b83['error'][_0x66bb('0x14')]);}else{logger[_0x66bb('0xe')]('VoiceMailMessage,\x20%s,\x20%s',_0x2dfc48,_0x66bb('0x10'));_0x4e783d(_0xde5b83[_0x66bb('0x15')]['message']);}})[_0x66bb('0x16')](function(_0x4d6737){logger[_0x66bb('0x13')](_0x66bb('0xf'),_0x2dfc48,_0x4d6737);_0x5c9b35(_0x4d6737);});});}
\ No newline at end of file
+var _0xd69f=['error','code','message','result','catch','lodash','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','VoiceMailMessage,\x20%s,\x20%s','VoiceMailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x673ea4,_0x449076){var _0x3e5938=function(_0x4152e0){while(--_0x4152e0){_0x673ea4['push'](_0x673ea4['shift']());}};_0x3e5938(++_0x449076);}(_0xd69f,0x9d));var _0xfd69=function(_0x1792eb,_0x1cb57b){_0x1792eb=_0x1792eb-0x0;var _0x515c0a=_0xd69f[_0x1792eb];return _0x515c0a;};'use strict';var _=require(_0xfd69('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfd69('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0xfd69('0x2'));var logger=require(_0xfd69('0x3'))(_0xfd69('0x4'));var config=require(_0xfd69('0x5'));var jayson=require(_0xfd69('0x6'));var client=jayson[_0xfd69('0x7')][_0xfd69('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1105aa,_0x7d2179,_0x1ac2cf){return new BPromise(function(_0x56e7c9,_0x4a8afc){return client['request'](_0x1105aa,_0x1ac2cf)['then'](function(_0x4b7521){logger[_0xfd69('0x9')](_0xfd69('0xa'),_0x7d2179,'request\x20sent');logger['debug'](_0xfd69('0xb'),_0x7d2179,_0xfd69('0xc'),JSON[_0xfd69('0xd')](_0x4b7521));if(_0x4b7521[_0xfd69('0xe')]){if(_0x4b7521[_0xfd69('0xe')][_0xfd69('0xf')]===0x1f4){logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);return _0x4a8afc(_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);}logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4b7521[_0xfd69('0xe')]['message']);return _0x56e7c9(_0x4b7521[_0xfd69('0xe')][_0xfd69('0x10')]);}else{logger['info']('VoiceMailMessage,\x20%s,\x20%s',_0x7d2179,'request\x20sent');_0x56e7c9(_0x4b7521[_0xfd69('0x11')][_0xfd69('0x10')]);}})[_0xfd69('0x12')](function(_0x4ded34){logger[_0xfd69('0xe')](_0xfd69('0xa'),_0x7d2179,_0x4ded34);_0x4a8afc(_0x4ded34);});});}
\ No newline at end of file
index b65f13d..b43f169 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2b=['./voiceMusicOnHold.controller','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','create','post','addSound','put','delete','/:id/sounds/:id2','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x19d24c,_0x62bc50){var _0x2fae8d=function(_0x419856){while(--_0x419856){_0x19d24c['push'](_0x19d24c['shift']());}};_0x2fae8d(++_0x62bc50);}(_0x3e2b,0x1c7));var _0xb3e2=function(_0x290614,_0x172eb6){_0x290614=_0x290614-0x0;var _0x3840f1=_0x3e2b[_0x290614];return _0x3840f1;};'use strict';var multer=require(_0xb3e2('0x0'));var util=require(_0xb3e2('0x1'));var path=require('path');var timeout=require(_0xb3e2('0x2'));var express=require('express');var router=express[_0xb3e2('0x3')]();var fs_extra=require(_0xb3e2('0x4'));var auth=require(_0xb3e2('0x5'));var interaction=require(_0xb3e2('0x6'));var config=require('../../config/environment');var controller=require(_0xb3e2('0x7'));router[_0xb3e2('0x8')]('/',auth[_0xb3e2('0x9')](),controller[_0xb3e2('0xa')]);router[_0xb3e2('0x8')](_0xb3e2('0xb'),auth[_0xb3e2('0x9')](),controller[_0xb3e2('0xc')]);router['get'](_0xb3e2('0xd'),auth[_0xb3e2('0x9')](),controller[_0xb3e2('0xe')]);router['post']('/',auth[_0xb3e2('0x9')](),controller[_0xb3e2('0xf')]);router[_0xb3e2('0x10')]('/:id/sounds',auth[_0xb3e2('0x9')](),controller[_0xb3e2('0x11')]);router[_0xb3e2('0x12')](_0xb3e2('0xb'),auth[_0xb3e2('0x9')](),controller['update']);router[_0xb3e2('0x13')](_0xb3e2('0xb'),auth[_0xb3e2('0x9')](),controller['destroy']);router[_0xb3e2('0x13')](_0xb3e2('0x14'),auth[_0xb3e2('0x9')](),controller['removeSound']);module[_0xb3e2('0x15')]=router;
\ No newline at end of file
+var _0x2bf4=['/:id/sounds/:id2','multer','util','path','connect-timeout','Router','../../components/auth/service','../../config/environment','./voiceMusicOnHold.controller','isAuthenticated','index','get','/:id','show','/:id/sounds','post','addSound','put','update','destroy','delete'];(function(_0x2b775e,_0x5be870){var _0x3ef379=function(_0x1fc136){while(--_0x1fc136){_0x2b775e['push'](_0x2b775e['shift']());}};_0x3ef379(++_0x5be870);}(_0x2bf4,0x166));var _0x42bf=function(_0x1b1bd5,_0xf50a3){_0x1b1bd5=_0x1b1bd5-0x0;var _0x12bf17=_0x2bf4[_0x1b1bd5];return _0x12bf17;};'use strict';var multer=require(_0x42bf('0x0'));var util=require(_0x42bf('0x1'));var path=require(_0x42bf('0x2'));var timeout=require(_0x42bf('0x3'));var express=require('express');var router=express[_0x42bf('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42bf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x42bf('0x6'));var controller=require(_0x42bf('0x7'));router['get']('/',auth[_0x42bf('0x8')](),controller[_0x42bf('0x9')]);router[_0x42bf('0xa')](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0xc')]);router['get'](_0x42bf('0xd'),auth[_0x42bf('0x8')](),controller['getSounds']);router['post']('/',auth[_0x42bf('0x8')](),controller['create']);router[_0x42bf('0xe')](_0x42bf('0xd'),auth[_0x42bf('0x8')](),controller[_0x42bf('0xf')]);router[_0x42bf('0x10')](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0x11')]);router['delete'](_0x42bf('0xb'),auth[_0x42bf('0x8')](),controller[_0x42bf('0x12')]);router[_0x42bf('0x13')](_0x42bf('0x14'),auth[_0x42bf('0x8')](),controller['removeSound']);module['exports']=router;
\ No newline at end of file
index 911e766..3765f94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea0b=['custom','files','mp3nb','quietmp3nb','quietmp3','alpha','TIMESTAMP','BOOLEAN','sequelize','exports','STRING','name','ENUM'];(function(_0x260a28,_0xb429d0){var _0x1fd65f=function(_0x247152){while(--_0x247152){_0x260a28['push'](_0x260a28['shift']());}};_0x1fd65f(++_0xb429d0);}(_0xea0b,0x140));var _0xbea0=function(_0x3d197f,_0x3186d3){_0x3d197f=_0x3d197f-0x0;var _0x37c656=_0xea0b[_0x3d197f];return _0x37c656;};'use strict';var Sequelize=require(_0xbea0('0x0'));module[_0xbea0('0x1')]={'name':{'type':Sequelize[_0xbea0('0x2')],'allowNull':![],'unique':_0xbea0('0x3')},'mode':{'type':Sequelize[_0xbea0('0x4')](_0xbea0('0x5'),_0xbea0('0x6'),_0xbea0('0x7'),_0xbea0('0x8'),_0xbea0('0x9'),'mp3'),'allowNull':!![],'defaultValue':_0xbea0('0x6')},'directory':{'type':Sequelize['STRING'],'allowNull':!![]},'application':{'type':Sequelize[_0xbea0('0x2')],'allowNull':!![]},'digit':{'type':Sequelize[_0xbea0('0x2')],'allowNull':!![]},'sort':{'type':Sequelize[_0xbea0('0x2')],'allowNull':!![],'defaultValue':_0xbea0('0xa')},'format':{'type':Sequelize[_0xbea0('0x2')],'allowNull':!![]},'stamp':{'type':_0xbea0('0xb')},'defaultEntry':{'type':Sequelize[_0xbea0('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9edf=['exports','name','ENUM','custom','files','mp3nb','quietmp3nb','quietmp3','mp3','STRING','alpha','TIMESTAMP','BOOLEAN'];(function(_0x587c0f,_0x4e548a){var _0x4931b5=function(_0x960fb4){while(--_0x960fb4){_0x587c0f['push'](_0x587c0f['shift']());}};_0x4931b5(++_0x4e548a);}(_0x9edf,0x11e));var _0xf9ed=function(_0x18e467,_0x4b91df){_0x18e467=_0x18e467-0x0;var _0x451cd4=_0x9edf[_0x18e467];return _0x451cd4;};'use strict';var Sequelize=require('sequelize');module[_0xf9ed('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xf9ed('0x1')},'mode':{'type':Sequelize[_0xf9ed('0x2')](_0xf9ed('0x3'),_0xf9ed('0x4'),_0xf9ed('0x5'),_0xf9ed('0x6'),_0xf9ed('0x7'),_0xf9ed('0x8')),'allowNull':!![],'defaultValue':_0xf9ed('0x4')},'directory':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'sort':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![],'defaultValue':_0xf9ed('0xa')},'format':{'type':Sequelize[_0xf9ed('0x9')],'allowNull':!![]},'stamp':{'type':_0xf9ed('0xb')},'defaultEntry':{'type':Sequelize[_0xf9ed('0xc')],'defaultValue':0x0}};
\ No newline at end of file
index 9e7c105..143afb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0c=['nolimit','eml-format','rimraf','zip-dir','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','get','MusicOnHolds','UserProfileResource','destroy','error','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','VIRTUAL','filter','includeAll','findAll','rows','catch','params','include','find','body','create','sequelize','transaction','mode','directory','root','server/files/moh','files','mkdirSync','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','readdirSync','unlinkSync','join','rmdirSync','ValidationError','message','addSound','Sound','save_name','converted_format','server/files/sounds/converted','format','%s.%s','basename','extname','symlinkSync','Sequelize','removeSound','findOne','id2','createdAt','getSounds','options'];(function(_0x328b1c,_0xec0b4f){var _0x4dbeaa=function(_0x432519){while(--_0x432519){_0x328b1c['push'](_0x328b1c['shift']());}};_0x4dbeaa(++_0xec0b4f);}(_0x0b0c,0x1bd));var _0xc0b0=function(_0xa9b067,_0x2047eb){_0xa9b067=_0xa9b067-0x0;var _0x492156=_0x0b0c[_0xa9b067];return _0x492156;};'use strict';var emlformat=require(_0xc0b0('0x0'));var rimraf=require(_0xc0b0('0x1'));var zipdir=require(_0xc0b0('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xc0b0('0x3'));var Mustache=require('mustache');var util=require(_0xc0b0('0x4'));var path=require('path');var sox=require(_0xc0b0('0x5'));var csv=require(_0xc0b0('0x6'));var ejs=require(_0xc0b0('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc0b0('0x8'));var squel=require(_0xc0b0('0x9'));var crypto=require(_0xc0b0('0xa'));var jsforce=require('jsforce');var deskjs=require(_0xc0b0('0xb'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc0b0('0xc'));var Redis=require(_0xc0b0('0xd'));var authService=require(_0xc0b0('0xe'));var qs=require(_0xc0b0('0xf'));var as=require(_0xc0b0('0x10'));var hardwareService=require(_0xc0b0('0x11'));var logger=require(_0xc0b0('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xc0b0('0x13'));var licenseUtil=require(_0xc0b0('0x14'));var db=require(_0xc0b0('0x15'))['db'];function respondWithStatusCode(_0x113ddb,_0x3c7378){_0x3c7378=_0x3c7378||0xcc;return function(_0x48814b){if(_0x48814b){return _0x113ddb[_0xc0b0('0x16')](_0x3c7378);}return _0x113ddb[_0xc0b0('0x17')](_0x3c7378)[_0xc0b0('0x18')]();};}function respondWithResult(_0x2461b5,_0x48fc21){_0x48fc21=_0x48fc21||0xc8;return function(_0x4fb6f5){if(_0x4fb6f5){return _0x2461b5['status'](_0x48fc21)[_0xc0b0('0x19')](_0x4fb6f5);}};}function respondWithFilteredResult(_0x3e9b93,_0x4c8547){return function(_0x1a2751){if(_0x1a2751){var _0x54d284=typeof _0x4c8547[_0xc0b0('0x1a')]===_0xc0b0('0x1b')&&typeof _0x4c8547[_0xc0b0('0x1c')]==='undefined';var _0xc837af=_0x1a2751[_0xc0b0('0x1d')];var _0x2e33de=_0x54d284?0x0:_0x4c8547[_0xc0b0('0x1a')];var _0x444865=_0x54d284?_0x1a2751['count']:_0x4c8547['offset']+_0x4c8547[_0xc0b0('0x1c')];var _0x4aa635;if(_0x444865>=_0xc837af){_0x444865=_0xc837af;_0x4aa635=0xc8;}else{_0x4aa635=0xce;}_0x3e9b93[_0xc0b0('0x17')](_0x4aa635);return _0x3e9b93[_0xc0b0('0x1e')]('Content-Range',_0x2e33de+'-'+_0x444865+'/'+_0xc837af)[_0xc0b0('0x19')](_0x1a2751);}return null;};}function patchUpdates(_0x514a4d){return function(_0x4ec752){try{jsonpatch[_0xc0b0('0x1f')](_0x4ec752,_0x514a4d,!![]);}catch(_0x50d8e1){return BPromise[_0xc0b0('0x20')](_0x50d8e1);}return _0x4ec752[_0xc0b0('0x21')]();};}function saveUpdates(_0x25dbfc,_0x319f0b){return function(_0x102d1c){if(_0x102d1c){return _0x102d1c[_0xc0b0('0x22')](_0x25dbfc)['then'](function(_0xfb1c77){return _0xfb1c77;});}return null;};}function removeEntity(_0x553ab1,_0xdc9969){return function(_0x4567e0){if(_0x4567e0){return _0x4567e0['destroy']()[_0xc0b0('0x23')](function(){var _0x341e6f=_0x4567e0[_0xc0b0('0x24')]({'plain':!![]});var _0x4b1606=_0xc0b0('0x25');return db[_0xc0b0('0x26')][_0xc0b0('0x27')]({'where':{'type':_0x4b1606,'resourceId':_0x341e6f['id']}})[_0xc0b0('0x23')](function(){return _0x4567e0;});})['then'](function(){_0x553ab1['status'](0xcc)[_0xc0b0('0x18')]();});}};}function handleEntityNotFound(_0x17956d,_0x151168){return function(_0x269c97){if(!_0x269c97){_0x17956d[_0xc0b0('0x16')](0x194);}return _0x269c97;};}function handleError(_0x2cae6e,_0x218991){_0x218991=_0x218991||0x1f4;return function(_0x31f956){logger[_0xc0b0('0x28')](_0x31f956['stack']);if(_0x31f956[_0xc0b0('0x29')]){delete _0x31f956[_0xc0b0('0x29')];}_0x2cae6e['status'](_0x218991)[_0xc0b0('0x2a')](_0x31f956);};}exports[_0xc0b0('0x2b')]=function(_0x3ab63d,_0x469b60){var _0x3b694f={},_0x3c7691={},_0x2084c6={'count':0x0,'rows':[]};var _0x162b5a=_[_0xc0b0('0x2c')](db[_0xc0b0('0x2d')][_0xc0b0('0x2e')],function(_0x8959a1){return{'name':_0x8959a1[_0xc0b0('0x2f')],'type':_0x8959a1['type']['key']};});_0x3c7691['model']=_[_0xc0b0('0x2c')](_0x162b5a,_0xc0b0('0x29'));_0x3c7691[_0xc0b0('0x30')]=_[_0xc0b0('0x31')](_0x3ab63d[_0xc0b0('0x30')]);_0x3c7691[_0xc0b0('0x32')]=_[_0xc0b0('0x33')](_0x3c7691[_0xc0b0('0x34')],_0x3c7691[_0xc0b0('0x30')]);_0x3b694f[_0xc0b0('0x35')]=_[_0xc0b0('0x33')](_0x3c7691[_0xc0b0('0x34')],qs['fields'](_0x3ab63d[_0xc0b0('0x30')][_0xc0b0('0x36')]));_0x3b694f[_0xc0b0('0x35')]=_0x3b694f[_0xc0b0('0x35')][_0xc0b0('0x37')]?_0x3b694f[_0xc0b0('0x35')]:_0x3c7691[_0xc0b0('0x34')];if(!_0x3ab63d[_0xc0b0('0x30')][_0xc0b0('0x38')]('nolimit')){_0x3b694f['limit']=qs['limit'](_0x3ab63d[_0xc0b0('0x30')][_0xc0b0('0x1c')]);_0x3b694f[_0xc0b0('0x1a')]=qs[_0xc0b0('0x1a')](_0x3ab63d['query'][_0xc0b0('0x1a')]);}_0x3b694f[_0xc0b0('0x39')]=qs[_0xc0b0('0x3a')](_0x3ab63d[_0xc0b0('0x30')][_0xc0b0('0x3a')]);delete _0x3ab63d['query'][_0xc0b0('0x3a')];_0x3b694f[_0xc0b0('0x3b')]=qs['filters'](_[_0xc0b0('0x3c')](_0x3ab63d[_0xc0b0('0x30')],_0x3c7691[_0xc0b0('0x32')]),_0x162b5a);if(_0x3ab63d['query']['filter']){_0x3b694f[_0xc0b0('0x3b')]=_[_0xc0b0('0x3d')](_0x3b694f[_0xc0b0('0x3b')],{'$or':_[_0xc0b0('0x2c')](_0x162b5a,function(_0x1e2c83){if(_0x1e2c83[_0xc0b0('0x3e')]!==_0xc0b0('0x3f')){var _0x5458a7={};_0x5458a7[_0x1e2c83['name']]={'$like':'%'+_0x3ab63d[_0xc0b0('0x30')][_0xc0b0('0x40')]+'%'};return _0x5458a7;}})});}_0x3b694f=_[_0xc0b0('0x3d')]({},_0x3b694f,_0x3ab63d['options']);var _0xd6e346={'where':_0x3b694f[_0xc0b0('0x3b')]};return db[_0xc0b0('0x2d')][_0xc0b0('0x1d')](_0xd6e346)[_0xc0b0('0x23')](function(_0x3b5257){_0x2084c6[_0xc0b0('0x1d')]=_0x3b5257;if(_0x3ab63d['query'][_0xc0b0('0x41')]){_0x3b694f['include']=[{'all':!![]}];}return db['VoiceMusicOnHold'][_0xc0b0('0x42')](_0x3b694f);})['then'](function(_0x19f0a1){_0x2084c6[_0xc0b0('0x43')]=_0x19f0a1;return _0x2084c6;})[_0xc0b0('0x23')](respondWithFilteredResult(_0x469b60,_0x3b694f))[_0xc0b0('0x44')](handleError(_0x469b60,null));};exports['show']=function(_0x1ab8d0,_0x3221ee){var _0x5d9a58={'raw':![],'where':{'id':_0x1ab8d0[_0xc0b0('0x45')]['id']}},_0x8adeae={};_0x8adeae[_0xc0b0('0x34')]=_[_0xc0b0('0x31')](db[_0xc0b0('0x2d')][_0xc0b0('0x2e')]);_0x8adeae[_0xc0b0('0x30')]=_[_0xc0b0('0x31')](_0x1ab8d0[_0xc0b0('0x30')]);_0x8adeae[_0xc0b0('0x32')]=_[_0xc0b0('0x33')](_0x8adeae[_0xc0b0('0x34')],_0x8adeae[_0xc0b0('0x30')]);_0x5d9a58[_0xc0b0('0x35')]=_[_0xc0b0('0x33')](_0x8adeae[_0xc0b0('0x34')],qs[_0xc0b0('0x36')](_0x1ab8d0['query'][_0xc0b0('0x36')]));_0x5d9a58[_0xc0b0('0x35')]=_0x5d9a58['attributes'][_0xc0b0('0x37')]?_0x5d9a58['attributes']:_0x8adeae[_0xc0b0('0x34')];if(_0x1ab8d0['query'][_0xc0b0('0x41')]){_0x5d9a58[_0xc0b0('0x46')]=[{'all':!![]}];}_0x5d9a58=_[_0xc0b0('0x3d')]({},_0x5d9a58,_0x1ab8d0['options']);return db['VoiceMusicOnHold'][_0xc0b0('0x47')](_0x5d9a58)[_0xc0b0('0x23')](handleEntityNotFound(_0x3221ee,null))[_0xc0b0('0x23')](respondWithResult(_0x3221ee,null))[_0xc0b0('0x44')](handleError(_0x3221ee,null));};exports['update']=function(_0x110366,_0x5367bb){if(_0x110366[_0xc0b0('0x48')]['id']){delete _0x110366['body']['id'];}return db[_0xc0b0('0x2d')]['find']({'where':{'id':_0x110366[_0xc0b0('0x45')]['id']}})[_0xc0b0('0x23')](handleEntityNotFound(_0x5367bb,null))[_0xc0b0('0x23')](saveUpdates(_0x110366[_0xc0b0('0x48')],null))[_0xc0b0('0x23')](respondWithResult(_0x5367bb,null))['catch'](handleError(_0x5367bb,null));};exports[_0xc0b0('0x49')]=function(_0xcd8d70,_0x12bfdb,_0x132519){return db[_0xc0b0('0x4a')][_0xc0b0('0x4b')](function(_0x226cea){if(_0xcd8d70[_0xc0b0('0x48')][_0xc0b0('0x4c')]==='files'){_0xcd8d70['body'][_0xc0b0('0x4d')]=path['join'](config[_0xc0b0('0x4e')],_0xc0b0('0x4f'),_0xcd8d70[_0xc0b0('0x48')][_0xc0b0('0x29')]);}return db[_0xc0b0('0x2d')][_0xc0b0('0x49')](_0xcd8d70[_0xc0b0('0x48')],{'transaction':_0x226cea})[_0xc0b0('0x23')](function(_0x2b04f3){if(_0xcd8d70[_0xc0b0('0x48')][_0xc0b0('0x4c')]===_0xc0b0('0x50')){fs[_0xc0b0('0x51')](_0x2b04f3[_0xc0b0('0x4d')],parseInt('0777',0x8));}var _0x21ddf9=_0xcd8d70[_0xc0b0('0x52')][_0xc0b0('0x24')]({'plain':!![]});if(!_0x21ddf9)throw new Error(_0xc0b0('0x53'));if(_0x21ddf9['role']===_0xc0b0('0x52')){var _0x422a22=_0x2b04f3['get']({'plain':!![]});return db['UserProfileSection']['find']({'where':{'name':_0xc0b0('0x25'),'userProfileId':_0x21ddf9[_0xc0b0('0x54')]},'raw':!![]})['then'](function(_0xa5f503){if(_0xa5f503&&_0xa5f503[_0xc0b0('0x55')]===0x0){return db[_0xc0b0('0x26')][_0xc0b0('0x49')]({'name':_0x422a22['name'],'resourceId':_0x422a22['id'],'type':_0xa5f503['name'],'sectionId':_0xa5f503['id']},{})[_0xc0b0('0x23')](function(){return _0x2b04f3;});}else{return _0x2b04f3;}})[_0xc0b0('0x44')](function(_0x9024ff){logger[_0xc0b0('0x28')](_0xc0b0('0x56'),_0x9024ff);});}return _0x2b04f3;});})[_0xc0b0('0x23')](respondWithResult(_0x12bfdb,0xc9))['catch'](handleError(_0x12bfdb,null));};exports[_0xc0b0('0x27')]=function(_0x51daa9,_0x173bbc,_0x4ea67f){var _0x49c44b;return db['VoiceMusicOnHold']['find']({'where':{'id':_0x51daa9['params']['id']}})[_0xc0b0('0x23')](function(_0xccf404){if(_0xccf404){return db[_0xc0b0('0x4a')][_0xc0b0('0x4b')](function(_0x35ed48){return _0xccf404[_0xc0b0('0x27')]({'transaction':_0x35ed48,'raw':!![]})[_0xc0b0('0x23')](function(_0x4e0014){if(_0x4e0014[_0xc0b0('0x4d')]){fs[_0xc0b0('0x57')](_0x4e0014[_0xc0b0('0x4d')])['forEach'](function(_0x45d53b){fs[_0xc0b0('0x58')](path[_0xc0b0('0x59')](_0x4e0014['directory'],_0x45d53b));});fs[_0xc0b0('0x5a')](_0x4e0014[_0xc0b0('0x4d')]);}return _0x4e0014;});})[_0xc0b0('0x44')](function(_0x204e0c){throw new db['Sequelize'][(_0xc0b0('0x5b'))](_0x204e0c[_0xc0b0('0x5c')]);});}})[_0xc0b0('0x23')](handleEntityNotFound(_0x173bbc,null))[_0xc0b0('0x23')](removeEntity(_0x173bbc,null))[_0xc0b0('0x44')](handleError(_0x173bbc,null));};exports[_0xc0b0('0x5d')]=function(_0x570919,_0x46cd7e,_0x2c99ea){return db['sequelize']['transaction'](function(_0x2da54a){var _0x146ae9;return db[_0xc0b0('0x2d')]['find']({'where':{'id':_0x570919[_0xc0b0('0x45')]['id']}})['then'](function(_0x16e833){if(_0x16e833){_0x146ae9=_0x16e833;return _0x16e833[_0xc0b0('0x5d')](_0x570919[_0xc0b0('0x48')]['id'],{'transaction':_0x2da54a});}})[_0xc0b0('0x23')](function(_0x538dc4){if(_0x538dc4){return db[_0xc0b0('0x5e')]['findOne']({'where':{'id':_0x570919[_0xc0b0('0x48')]['id']},'attributes':['id','name',_0xc0b0('0x5f'),_0xc0b0('0x60'),'createdAt'],'raw':!![]});}})[_0xc0b0('0x23')](function(_0x192c9b){if(_0x192c9b){var _0x539f4d=path['join'](config[_0xc0b0('0x4e')],_0xc0b0('0x61'),util[_0xc0b0('0x62')](_0xc0b0('0x63'),path[_0xc0b0('0x64')](_0x192c9b[_0xc0b0('0x5f')],path[_0xc0b0('0x65')](_0x192c9b[_0xc0b0('0x5f')])),_0x192c9b[_0xc0b0('0x60')]));var _0x2e6bd1=path[_0xc0b0('0x59')](config[_0xc0b0('0x4e')],_0xc0b0('0x4f'),_0x146ae9[_0xc0b0('0x29')],util[_0xc0b0('0x62')]('%s.%s',_0x192c9b[_0xc0b0('0x29')],_0x192c9b[_0xc0b0('0x60')]));fs[_0xc0b0('0x66')](_0x539f4d,_0x2e6bd1);return _0x192c9b;}})[_0xc0b0('0x44')](function(_0x1e2a27){throw new db[(_0xc0b0('0x67'))]['ValidationError'](_0x1e2a27[_0xc0b0('0x5c')]);});})[_0xc0b0('0x23')](handleEntityNotFound(_0x46cd7e,null))[_0xc0b0('0x23')](respondWithResult(_0x46cd7e,0xc9))[_0xc0b0('0x44')](handleError(_0x46cd7e,null));};exports[_0xc0b0('0x68')]=function(_0x5526e9,_0x1278a1,_0x591ce7){return db[_0xc0b0('0x4a')][_0xc0b0('0x4b')](function(_0x22c8ef){var _0x46892c;return db[_0xc0b0('0x2d')][_0xc0b0('0x69')]({'where':{'id':_0x5526e9[_0xc0b0('0x45')]['id']}})[_0xc0b0('0x23')](handleEntityNotFound(_0x1278a1,null))[_0xc0b0('0x23')](function(_0x163874){if(_0x163874){_0x46892c=_0x163874;return _0x163874[_0xc0b0('0x68')](_0x5526e9[_0xc0b0('0x45')][_0xc0b0('0x6a')]);}})[_0xc0b0('0x23')](function(_0x4fe81d){if(_0x4fe81d){return db[_0xc0b0('0x5e')]['findOne']({'where':{'id':_0x5526e9['params'][_0xc0b0('0x6a')]},'attributes':['id',_0xc0b0('0x29'),_0xc0b0('0x5f'),_0xc0b0('0x60'),_0xc0b0('0x6b')],'raw':!![]});}})[_0xc0b0('0x23')](function(_0x42b9fd){if(_0x42b9fd){fs[_0xc0b0('0x58')](path[_0xc0b0('0x59')](_0x46892c[_0xc0b0('0x4d')],util[_0xc0b0('0x62')](_0xc0b0('0x63'),_0x42b9fd['name'],_0x42b9fd['converted_format'])));return _0x42b9fd;}})[_0xc0b0('0x44')](function(_0x42186d){throw new db[(_0xc0b0('0x67'))][(_0xc0b0('0x5b'))](_0x42186d['message']);});})[_0xc0b0('0x23')](handleEntityNotFound(_0x1278a1,null))[_0xc0b0('0x23')](respondWithStatusCode(_0x1278a1,0xcc))['catch'](handleError(_0x1278a1,null));};exports[_0xc0b0('0x6c')]=function(_0x2fd21c,_0x282934,_0x3d2192){var _0x2fa5ff={};var _0x7ead3a={};var _0x2005d4;var _0x50fc8d;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x2fd21c['params']['id']}})['then'](handleEntityNotFound(_0x282934,null))['then'](function(_0x3ee198){if(_0x3ee198){_0x2005d4=_0x3ee198;_0x7ead3a[_0xc0b0('0x34')]=_[_0xc0b0('0x31')](db[_0xc0b0('0x5e')][_0xc0b0('0x2e')]);_0x7ead3a[_0xc0b0('0x30')]=_[_0xc0b0('0x31')](_0x2fd21c['query']);_0x7ead3a['filters']=_[_0xc0b0('0x33')](_0x7ead3a[_0xc0b0('0x34')],_0x7ead3a[_0xc0b0('0x30')]);_0x2fa5ff[_0xc0b0('0x35')]=_[_0xc0b0('0x33')](_0x7ead3a[_0xc0b0('0x34')],qs[_0xc0b0('0x36')](_0x2fd21c[_0xc0b0('0x30')]['fields']));_0x2fa5ff[_0xc0b0('0x35')]=_0x2fa5ff[_0xc0b0('0x35')][_0xc0b0('0x37')]?_0x2fa5ff['attributes']:_0x7ead3a[_0xc0b0('0x34')];_0x2fa5ff['order']=qs[_0xc0b0('0x3a')](_0x2fd21c[_0xc0b0('0x30')][_0xc0b0('0x3a')]);_0x2fa5ff[_0xc0b0('0x3b')]=qs[_0xc0b0('0x32')](_['pick'](_0x2fd21c['query'],_0x7ead3a['filters']));if(_0x2fd21c['query'][_0xc0b0('0x40')]){_0x2fa5ff[_0xc0b0('0x3b')]=_[_0xc0b0('0x3d')](_0x2fa5ff['where'],{'$or':_[_0xc0b0('0x2c')](_0x2fa5ff[_0xc0b0('0x35')],function(_0xc60e98){var _0x22c771={};_0x22c771[_0xc60e98]={'$like':'%'+_0x2fd21c[_0xc0b0('0x30')][_0xc0b0('0x40')]+'%'};return _0x22c771;})});}_0x2fa5ff=_['merge']({},_0x2fa5ff,_0x2fd21c[_0xc0b0('0x6d')]);return _0x2005d4[_0xc0b0('0x6c')](_0x2fa5ff);}})['then'](function(_0x1e74dd){if(_0x1e74dd){_0x50fc8d=_0x1e74dd[_0xc0b0('0x37')];if(!_0x2fd21c['query'][_0xc0b0('0x38')](_0xc0b0('0x6e'))){_0x2fa5ff['limit']=qs[_0xc0b0('0x1c')](_0x2fd21c['query'][_0xc0b0('0x1c')]);_0x2fa5ff[_0xc0b0('0x1a')]=qs[_0xc0b0('0x1a')](_0x2fd21c[_0xc0b0('0x30')][_0xc0b0('0x1a')]);}return _0x2005d4['getSounds'](_0x2fa5ff);}})[_0xc0b0('0x23')](function(_0x3f6e0c){if(_0x3f6e0c){return _0x3f6e0c?{'count':_0x50fc8d,'rows':_0x3f6e0c}:null;}})[_0xc0b0('0x23')](respondWithResult(_0x282934,null))[_0xc0b0('0x44')](handleError(_0x282934,null));};
\ No newline at end of file
+var _0xf76a=['length','options','find','body','create','transaction','mode','files','directory','join','root','mkdirSync','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','readdirSync','forEach','rmdirSync','Sequelize','ValidationError','message','addSound','Sound','findOne','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','extname','server/files/moh','symlinkSync','removeSound','id2','getSounds','filter','hasOwnProperty','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','name','index','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','keys','intersection','model','attributes','fields','nolimit','order','sort','where','filters','pick','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params'];(function(_0x2f9f43,_0x56eda0){var _0x41b9ac=function(_0x36e82f){while(--_0x36e82f){_0x2f9f43['push'](_0x2f9f43['shift']());}};_0x41b9ac(++_0x56eda0);}(_0xf76a,0x10b));var _0xaf76=function(_0x5425b2,_0x1a87c0){_0x5425b2=_0x5425b2-0x0;var _0x5e8d35=_0xf76a[_0x5425b2];return _0x5e8d35;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf76('0x0'));var zipdir=require(_0xaf76('0x1'));var jsonpatch=require(_0xaf76('0x2'));var rp=require('request-promise');var moment=require(_0xaf76('0x3'));var BPromise=require(_0xaf76('0x4'));var Mustache=require(_0xaf76('0x5'));var util=require(_0xaf76('0x6'));var path=require('path');var sox=require(_0xaf76('0x7'));var csv=require(_0xaf76('0x8'));var ejs=require(_0xaf76('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xaf76('0xa'));var squel=require(_0xaf76('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xaf76('0x8'));var querystring=require(_0xaf76('0xc'));var Papa=require(_0xaf76('0xd'));var Redis=require(_0xaf76('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xaf76('0xf'));var as=require(_0xaf76('0x10'));var hardwareService=require(_0xaf76('0x11'));var logger=require(_0xaf76('0x12'))(_0xaf76('0x13'));var utils=require(_0xaf76('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xaf76('0x15'))['db'];function respondWithStatusCode(_0x23f3c0,_0x3aebfc){_0x3aebfc=_0x3aebfc||0xcc;return function(_0x9193cb){if(_0x9193cb){return _0x23f3c0[_0xaf76('0x16')](_0x3aebfc);}return _0x23f3c0[_0xaf76('0x17')](_0x3aebfc)[_0xaf76('0x18')]();};}function respondWithResult(_0x2a6361,_0x569b91){_0x569b91=_0x569b91||0xc8;return function(_0x5f7630){if(_0x5f7630){return _0x2a6361[_0xaf76('0x17')](_0x569b91)[_0xaf76('0x19')](_0x5f7630);}};}function respondWithFilteredResult(_0x291d8f,_0x51d7b6){return function(_0x311ccd){if(_0x311ccd){var _0x17a528=typeof _0x51d7b6[_0xaf76('0x1a')]==='undefined'&&typeof _0x51d7b6[_0xaf76('0x1b')]===_0xaf76('0x1c');var _0x9bb9c1=_0x311ccd['count'];var _0x2dcf66=_0x17a528?0x0:_0x51d7b6[_0xaf76('0x1a')];var _0x2bc25e=_0x17a528?_0x311ccd[_0xaf76('0x1d')]:_0x51d7b6['offset']+_0x51d7b6[_0xaf76('0x1b')];var _0x7e316;if(_0x2bc25e>=_0x9bb9c1){_0x2bc25e=_0x9bb9c1;_0x7e316=0xc8;}else{_0x7e316=0xce;}_0x291d8f[_0xaf76('0x17')](_0x7e316);return _0x291d8f[_0xaf76('0x1e')](_0xaf76('0x1f'),_0x2dcf66+'-'+_0x2bc25e+'/'+_0x9bb9c1)[_0xaf76('0x19')](_0x311ccd);}return null;};}function patchUpdates(_0x26507d){return function(_0x76cd0f){try{jsonpatch['apply'](_0x76cd0f,_0x26507d,!![]);}catch(_0x1f1330){return BPromise[_0xaf76('0x20')](_0x1f1330);}return _0x76cd0f['save']();};}function saveUpdates(_0x163eca,_0x37664c){return function(_0x1f855c){if(_0x1f855c){return _0x1f855c['update'](_0x163eca)[_0xaf76('0x21')](function(_0x4010cf){return _0x4010cf;});}return null;};}function removeEntity(_0x1a330c,_0x38a5ac){return function(_0x20a35c){if(_0x20a35c){return _0x20a35c[_0xaf76('0x22')]()['then'](function(){var _0x18acd6=_0x20a35c['get']({'plain':!![]});var _0x4e6abf='MusicOnHolds';return db['UserProfileResource'][_0xaf76('0x22')]({'where':{'type':_0x4e6abf,'resourceId':_0x18acd6['id']}})['then'](function(){return _0x20a35c;});})[_0xaf76('0x21')](function(){_0x1a330c[_0xaf76('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3a46e1,_0x1dd916){return function(_0x191309){if(!_0x191309){_0x3a46e1[_0xaf76('0x16')](0x194);}return _0x191309;};}function handleError(_0x10247a,_0x2c780a){_0x2c780a=_0x2c780a||0x1f4;return function(_0x732df5){logger[_0xaf76('0x23')](_0x732df5[_0xaf76('0x24')]);if(_0x732df5['name']){delete _0x732df5[_0xaf76('0x25')];}_0x10247a[_0xaf76('0x17')](_0x2c780a)['send'](_0x732df5);};}exports[_0xaf76('0x26')]=function(_0x188aed,_0x5175de){var _0x56d9bc={},_0x3f5776={},_0x240441={'count':0x0,'rows':[]};var _0x440565=_['map'](db[_0xaf76('0x27')][_0xaf76('0x28')],function(_0x308c88){return{'name':_0x308c88[_0xaf76('0x29')],'type':_0x308c88[_0xaf76('0x2a')][_0xaf76('0x2b')]};});_0x3f5776['model']=_['map'](_0x440565,'name');_0x3f5776[_0xaf76('0x2c')]=_[_0xaf76('0x2d')](_0x188aed[_0xaf76('0x2c')]);_0x3f5776['filters']=_[_0xaf76('0x2e')](_0x3f5776[_0xaf76('0x2f')],_0x3f5776[_0xaf76('0x2c')]);_0x56d9bc[_0xaf76('0x30')]=_[_0xaf76('0x2e')](_0x3f5776[_0xaf76('0x2f')],qs['fields'](_0x188aed[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x56d9bc['attributes']=_0x56d9bc[_0xaf76('0x30')]['length']?_0x56d9bc[_0xaf76('0x30')]:_0x3f5776[_0xaf76('0x2f')];if(!_0x188aed[_0xaf76('0x2c')]['hasOwnProperty'](_0xaf76('0x32'))){_0x56d9bc[_0xaf76('0x1b')]=qs[_0xaf76('0x1b')](_0x188aed['query'][_0xaf76('0x1b')]);_0x56d9bc[_0xaf76('0x1a')]=qs[_0xaf76('0x1a')](_0x188aed['query'][_0xaf76('0x1a')]);}_0x56d9bc[_0xaf76('0x33')]=qs[_0xaf76('0x34')](_0x188aed[_0xaf76('0x2c')][_0xaf76('0x34')]);delete _0x188aed['query'][_0xaf76('0x34')];_0x56d9bc[_0xaf76('0x35')]=qs[_0xaf76('0x36')](_[_0xaf76('0x37')](_0x188aed['query'],_0x3f5776[_0xaf76('0x36')]),_0x440565);if(_0x188aed[_0xaf76('0x2c')]['filter']){_0x56d9bc[_0xaf76('0x35')]=_[_0xaf76('0x38')](_0x56d9bc[_0xaf76('0x35')],{'$or':_[_0xaf76('0x39')](_0x440565,function(_0x3269f6){if(_0x3269f6[_0xaf76('0x2a')]!==_0xaf76('0x3a')){var _0x25f6fc={};_0x25f6fc[_0x3269f6[_0xaf76('0x25')]]={'$like':'%'+_0x188aed[_0xaf76('0x2c')]['filter']+'%'};return _0x25f6fc;}})});}_0x56d9bc=_[_0xaf76('0x38')]({},_0x56d9bc,_0x188aed['options']);var _0xc2ad7={'where':_0x56d9bc[_0xaf76('0x35')]};return db[_0xaf76('0x27')][_0xaf76('0x1d')](_0xc2ad7)[_0xaf76('0x21')](function(_0x2f4941){_0x240441[_0xaf76('0x1d')]=_0x2f4941;if(_0x188aed[_0xaf76('0x2c')][_0xaf76('0x3b')]){_0x56d9bc[_0xaf76('0x3c')]=[{'all':!![]}];}return db[_0xaf76('0x27')][_0xaf76('0x3d')](_0x56d9bc);})['then'](function(_0x234304){_0x240441[_0xaf76('0x3e')]=_0x234304;return _0x240441;})['then'](respondWithFilteredResult(_0x5175de,_0x56d9bc))[_0xaf76('0x3f')](handleError(_0x5175de,null));};exports[_0xaf76('0x40')]=function(_0x3656e0,_0x287690){var _0x5e9eb6={'raw':![],'where':{'id':_0x3656e0[_0xaf76('0x41')]['id']}},_0x1fd8eb={};_0x1fd8eb[_0xaf76('0x2f')]=_[_0xaf76('0x2d')](db['VoiceMusicOnHold']['rawAttributes']);_0x1fd8eb[_0xaf76('0x2c')]=_['keys'](_0x3656e0[_0xaf76('0x2c')]);_0x1fd8eb[_0xaf76('0x36')]=_[_0xaf76('0x2e')](_0x1fd8eb[_0xaf76('0x2f')],_0x1fd8eb[_0xaf76('0x2c')]);_0x5e9eb6[_0xaf76('0x30')]=_['intersection'](_0x1fd8eb[_0xaf76('0x2f')],qs[_0xaf76('0x31')](_0x3656e0[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x5e9eb6[_0xaf76('0x30')]=_0x5e9eb6[_0xaf76('0x30')][_0xaf76('0x42')]?_0x5e9eb6['attributes']:_0x1fd8eb[_0xaf76('0x2f')];if(_0x3656e0[_0xaf76('0x2c')][_0xaf76('0x3b')]){_0x5e9eb6['include']=[{'all':!![]}];}_0x5e9eb6=_['merge']({},_0x5e9eb6,_0x3656e0[_0xaf76('0x43')]);return db[_0xaf76('0x27')][_0xaf76('0x44')](_0x5e9eb6)['then'](handleEntityNotFound(_0x287690,null))[_0xaf76('0x21')](respondWithResult(_0x287690,null))[_0xaf76('0x3f')](handleError(_0x287690,null));};exports['update']=function(_0x538063,_0x2a6be9){if(_0x538063[_0xaf76('0x45')]['id']){delete _0x538063[_0xaf76('0x45')]['id'];}return db[_0xaf76('0x27')][_0xaf76('0x44')]({'where':{'id':_0x538063[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x2a6be9,null))['then'](saveUpdates(_0x538063[_0xaf76('0x45')],null))[_0xaf76('0x21')](respondWithResult(_0x2a6be9,null))['catch'](handleError(_0x2a6be9,null));};exports[_0xaf76('0x46')]=function(_0x225a67,_0x84e95d,_0x3f073f){return db['sequelize'][_0xaf76('0x47')](function(_0x228026){if(_0x225a67[_0xaf76('0x45')][_0xaf76('0x48')]===_0xaf76('0x49')){_0x225a67[_0xaf76('0x45')][_0xaf76('0x4a')]=path[_0xaf76('0x4b')](config[_0xaf76('0x4c')],'server/files/moh',_0x225a67[_0xaf76('0x45')]['name']);}return db[_0xaf76('0x27')][_0xaf76('0x46')](_0x225a67[_0xaf76('0x45')],{'transaction':_0x228026})[_0xaf76('0x21')](function(_0x5e74ad){if(_0x225a67['body'][_0xaf76('0x48')]===_0xaf76('0x49')){fs[_0xaf76('0x4d')](_0x5e74ad[_0xaf76('0x4a')],parseInt('0777',0x8));}var _0x21a5b2=_0x225a67[_0xaf76('0x4e')][_0xaf76('0x4f')]({'plain':!![]});if(!_0x21a5b2)throw new Error(_0xaf76('0x50'));if(_0x21a5b2[_0xaf76('0x51')]===_0xaf76('0x4e')){var _0x52dfb5=_0x5e74ad[_0xaf76('0x4f')]({'plain':!![]});return db[_0xaf76('0x52')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x21a5b2[_0xaf76('0x53')]},'raw':!![]})[_0xaf76('0x21')](function(_0x508bda){if(_0x508bda&&_0x508bda[_0xaf76('0x54')]===0x0){return db['UserProfileResource'][_0xaf76('0x46')]({'name':_0x52dfb5[_0xaf76('0x25')],'resourceId':_0x52dfb5['id'],'type':_0x508bda[_0xaf76('0x25')],'sectionId':_0x508bda['id']},{})[_0xaf76('0x21')](function(){return _0x5e74ad;});}else{return _0x5e74ad;}})[_0xaf76('0x3f')](function(_0x3270fd){logger[_0xaf76('0x23')](_0xaf76('0x55'),_0x3270fd);});}return _0x5e74ad;});})[_0xaf76('0x21')](respondWithResult(_0x84e95d,0xc9))[_0xaf76('0x3f')](handleError(_0x84e95d,null));};exports[_0xaf76('0x22')]=function(_0x237804,_0x45291b,_0xb86af8){var _0x2cc495;return db[_0xaf76('0x27')]['find']({'where':{'id':_0x237804[_0xaf76('0x41')]['id']}})['then'](function(_0x3f0ae2){if(_0x3f0ae2){return db[_0xaf76('0x56')]['transaction'](function(_0x252360){return _0x3f0ae2['destroy']({'transaction':_0x252360,'raw':!![]})[_0xaf76('0x21')](function(_0x2b1778){if(_0x2b1778[_0xaf76('0x4a')]){fs[_0xaf76('0x57')](_0x2b1778['directory'])[_0xaf76('0x58')](function(_0x27861b){fs['unlinkSync'](path[_0xaf76('0x4b')](_0x2b1778[_0xaf76('0x4a')],_0x27861b));});fs[_0xaf76('0x59')](_0x2b1778['directory']);}return _0x2b1778;});})['catch'](function(_0x311bf8){throw new db[(_0xaf76('0x5a'))][(_0xaf76('0x5b'))](_0x311bf8[_0xaf76('0x5c')]);});}})[_0xaf76('0x21')](handleEntityNotFound(_0x45291b,null))[_0xaf76('0x21')](removeEntity(_0x45291b,null))[_0xaf76('0x3f')](handleError(_0x45291b,null));};exports[_0xaf76('0x5d')]=function(_0x1dd469,_0x2c57da,_0x136704){return db['sequelize'][_0xaf76('0x47')](function(_0x9b122b){var _0x2935c9;return db[_0xaf76('0x27')]['find']({'where':{'id':_0x1dd469[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](function(_0x505821){if(_0x505821){_0x2935c9=_0x505821;return _0x505821[_0xaf76('0x5d')](_0x1dd469[_0xaf76('0x45')]['id'],{'transaction':_0x9b122b});}})[_0xaf76('0x21')](function(_0x3980ee){if(_0x3980ee){return db[_0xaf76('0x5e')][_0xaf76('0x5f')]({'where':{'id':_0x1dd469[_0xaf76('0x45')]['id']},'attributes':['id',_0xaf76('0x25'),_0xaf76('0x60'),_0xaf76('0x61'),_0xaf76('0x62')],'raw':!![]});}})[_0xaf76('0x21')](function(_0x5c0325){if(_0x5c0325){var _0x4ab23c=path[_0xaf76('0x4b')](config[_0xaf76('0x4c')],_0xaf76('0x63'),util[_0xaf76('0x64')](_0xaf76('0x65'),path[_0xaf76('0x66')](_0x5c0325[_0xaf76('0x60')],path[_0xaf76('0x67')](_0x5c0325[_0xaf76('0x60')])),_0x5c0325[_0xaf76('0x61')]));var _0x2747c4=path['join'](config[_0xaf76('0x4c')],_0xaf76('0x68'),_0x2935c9[_0xaf76('0x25')],util['format'](_0xaf76('0x65'),_0x5c0325['name'],_0x5c0325[_0xaf76('0x61')]));fs[_0xaf76('0x69')](_0x4ab23c,_0x2747c4);return _0x5c0325;}})[_0xaf76('0x3f')](function(_0x2b3caa){throw new db['Sequelize'][(_0xaf76('0x5b'))](_0x2b3caa['message']);});})[_0xaf76('0x21')](handleEntityNotFound(_0x2c57da,null))['then'](respondWithResult(_0x2c57da,0xc9))[_0xaf76('0x3f')](handleError(_0x2c57da,null));};exports[_0xaf76('0x6a')]=function(_0x4206fb,_0x44bea6,_0x326428){return db[_0xaf76('0x56')]['transaction'](function(_0x38612d){var _0x318afd;return db[_0xaf76('0x27')]['findOne']({'where':{'id':_0x4206fb[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x44bea6,null))['then'](function(_0x4b9f0c){if(_0x4b9f0c){_0x318afd=_0x4b9f0c;return _0x4b9f0c['removeSound'](_0x4206fb['params'][_0xaf76('0x6b')]);}})[_0xaf76('0x21')](function(_0x442815){if(_0x442815){return db[_0xaf76('0x5e')][_0xaf76('0x5f')]({'where':{'id':_0x4206fb['params']['id2']},'attributes':['id','name',_0xaf76('0x60'),_0xaf76('0x61'),_0xaf76('0x62')],'raw':!![]});}})['then'](function(_0x2c5bf7){if(_0x2c5bf7){fs['unlinkSync'](path[_0xaf76('0x4b')](_0x318afd['directory'],util[_0xaf76('0x64')]('%s.%s',_0x2c5bf7[_0xaf76('0x25')],_0x2c5bf7[_0xaf76('0x61')])));return _0x2c5bf7;}})['catch'](function(_0x9279fa){throw new db[(_0xaf76('0x5a'))][(_0xaf76('0x5b'))](_0x9279fa['message']);});})['then'](handleEntityNotFound(_0x44bea6,null))['then'](respondWithStatusCode(_0x44bea6,0xcc))[_0xaf76('0x3f')](handleError(_0x44bea6,null));};exports[_0xaf76('0x6c')]=function(_0x25e918,_0x4c243d,_0x4f142f){var _0x23b8f7={};var _0x22fb47={};var _0x56f6bc;var _0x57f53a;return db[_0xaf76('0x27')]['findOne']({'where':{'id':_0x25e918[_0xaf76('0x41')]['id']}})[_0xaf76('0x21')](handleEntityNotFound(_0x4c243d,null))[_0xaf76('0x21')](function(_0x1f5b64){if(_0x1f5b64){_0x56f6bc=_0x1f5b64;_0x22fb47['model']=_[_0xaf76('0x2d')](db[_0xaf76('0x5e')]['rawAttributes']);_0x22fb47[_0xaf76('0x2c')]=_[_0xaf76('0x2d')](_0x25e918[_0xaf76('0x2c')]);_0x22fb47['filters']=_['intersection'](_0x22fb47[_0xaf76('0x2f')],_0x22fb47[_0xaf76('0x2c')]);_0x23b8f7[_0xaf76('0x30')]=_[_0xaf76('0x2e')](_0x22fb47[_0xaf76('0x2f')],qs[_0xaf76('0x31')](_0x25e918[_0xaf76('0x2c')][_0xaf76('0x31')]));_0x23b8f7[_0xaf76('0x30')]=_0x23b8f7['attributes']['length']?_0x23b8f7[_0xaf76('0x30')]:_0x22fb47[_0xaf76('0x2f')];_0x23b8f7['order']=qs['sort'](_0x25e918['query'][_0xaf76('0x34')]);_0x23b8f7[_0xaf76('0x35')]=qs[_0xaf76('0x36')](_[_0xaf76('0x37')](_0x25e918['query'],_0x22fb47['filters']));if(_0x25e918[_0xaf76('0x2c')]['filter']){_0x23b8f7[_0xaf76('0x35')]=_[_0xaf76('0x38')](_0x23b8f7[_0xaf76('0x35')],{'$or':_[_0xaf76('0x39')](_0x23b8f7['attributes'],function(_0x451f3b){var _0x17721c={};_0x17721c[_0x451f3b]={'$like':'%'+_0x25e918['query'][_0xaf76('0x6d')]+'%'};return _0x17721c;})});}_0x23b8f7=_[_0xaf76('0x38')]({},_0x23b8f7,_0x25e918[_0xaf76('0x43')]);return _0x56f6bc[_0xaf76('0x6c')](_0x23b8f7);}})[_0xaf76('0x21')](function(_0x133f8a){if(_0x133f8a){_0x57f53a=_0x133f8a[_0xaf76('0x42')];if(!_0x25e918[_0xaf76('0x2c')][_0xaf76('0x6e')](_0xaf76('0x32'))){_0x23b8f7[_0xaf76('0x1b')]=qs[_0xaf76('0x1b')](_0x25e918['query'][_0xaf76('0x1b')]);_0x23b8f7[_0xaf76('0x1a')]=qs[_0xaf76('0x1a')](_0x25e918[_0xaf76('0x2c')][_0xaf76('0x1a')]);}return _0x56f6bc[_0xaf76('0x6c')](_0x23b8f7);}})['then'](function(_0x4ad3e5){if(_0x4ad3e5){return _0x4ad3e5?{'count':_0x57f53a,'rows':_0x4ad3e5}:null;}})[_0xaf76('0x21')](respondWithResult(_0x4c243d,null))[_0xaf76('0x3f')](handleError(_0x4c243d,null));};
\ No newline at end of file
index 9a50f2e..bb8ca2d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd03=['../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','VoiceMusicOnHold'];(function(_0x3e6aed,_0x97a2f1){var _0x3220dd=function(_0x252cd2){while(--_0x252cd2){_0x3e6aed['push'](_0x3e6aed['shift']());}};_0x3220dd(++_0x97a2f1);}(_0xfd03,0xa2));var _0x3fd0=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0xfd03[_0x46a671];return _0x526d75;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x3fd0('0x0'))(_0x3fd0('0x1'));var moment=require(_0x3fd0('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x3fd0('0x3'));var rimraf=require(_0x3fd0('0x4'));var config=require(_0x3fd0('0x5'));var attributes=require('./voiceMusicOnHold.attributes');module[_0x3fd0('0x6')]=function(_0x59d2f4,_0x35c9ba){return _0x59d2f4[_0x3fd0('0x7')](_0x3fd0('0x8'),attributes,{'tableName':'voice_musiconhold','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf30=['../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','define','VoiceMusicOnHold','voice_musiconhold','lodash','util'];(function(_0x1a0600,_0x41feef){var _0x734670=function(_0x2da4e4){while(--_0x2da4e4){_0x1a0600['push'](_0x1a0600['shift']());}};_0x734670(++_0x41feef);}(_0xcf30,0x102));var _0x0cf3=function(_0x48b14e,_0x57e63f){_0x48b14e=_0x48b14e-0x0;var _0x4f1ffb=_0xcf30[_0x48b14e];return _0x4f1ffb;};'use strict';var _=require(_0x0cf3('0x0'));var util=require(_0x0cf3('0x1'));var logger=require(_0x0cf3('0x2'))(_0x0cf3('0x3'));var moment=require('moment');var BPromise=require(_0x0cf3('0x4'));var rp=require(_0x0cf3('0x5'));var fs=require('fs');var path=require(_0x0cf3('0x6'));var rimraf=require(_0x0cf3('0x7'));var config=require(_0x0cf3('0x8'));var attributes=require(_0x0cf3('0x9'));module['exports']=function(_0xad12b3,_0x2bbbbf){return _0xad12b3[_0x0cf3('0xa')](_0x0cf3('0xb'),attributes,{'tableName':_0x0cf3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2a83830..162d7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','code','VoiceMusicOnHold,\x20%s,\x20%s','message','catch','util'];(function(_0x4af6fe,_0x3c2802){var _0x49ace7=function(_0x3a93e3){while(--_0x3a93e3){_0x4af6fe['push'](_0x4af6fe['shift']());}};_0x49ace7(++_0x3c2802);}(_0xedd9,0xfc));var _0x9edd=function(_0x3cffdd,_0x1f91f7){_0x3cffdd=_0x3cffdd-0x0;var _0x17ee9c=_0xedd9[_0x3cffdd];return _0x17ee9c;};'use strict';var _=require('lodash');var util=require(_0x9edd('0x0'));var moment=require(_0x9edd('0x1'));var BPromise=require(_0x9edd('0x2'));var rs=require(_0x9edd('0x3'));var fs=require('fs');var Redis=require(_0x9edd('0x4'));var db=require(_0x9edd('0x5'))['db'];var utils=require(_0x9edd('0x6'));var logger=require(_0x9edd('0x7'))('rpc');var config=require(_0x9edd('0x8'));var jayson=require(_0x9edd('0x9'));var client=jayson[_0x9edd('0xa')][_0x9edd('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5319f7,_0xf0b2d8,_0x571af9){return new BPromise(function(_0x172522,_0x190185){return client[_0x9edd('0xc')](_0x5319f7,_0x571af9)[_0x9edd('0xd')](function(_0x49d5e3){logger[_0x9edd('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'));logger[_0x9edd('0x10')]('VoiceMusicOnHold,\x20%s,\x20%s,\x20%s',_0xf0b2d8,_0x9edd('0xf'),JSON[_0x9edd('0x11')](_0x49d5e3));if(_0x49d5e3['error']){if(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x13')]===0x1f4){logger[_0x9edd('0x12')](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x190185(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);return _0x172522(_0x49d5e3[_0x9edd('0x12')][_0x9edd('0x15')]);}else{logger[_0x9edd('0xe')](_0x9edd('0x14'),_0xf0b2d8,_0x9edd('0xf'));_0x172522(_0x49d5e3['result'][_0x9edd('0x15')]);}})[_0x9edd('0x16')](function(_0x449cee){logger['error'](_0x9edd('0x14'),_0xf0b2d8,_0x449cee);_0x190185(_0x449cee);});});}
\ No newline at end of file
+var _0x34e8=['lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch'];(function(_0x2963a7,_0x1472c9){var _0x20a494=function(_0xaa8003){while(--_0xaa8003){_0x2963a7['push'](_0x2963a7['shift']());}};_0x20a494(++_0x1472c9);}(_0x34e8,0x12c));var _0x834e=function(_0x4b3b73,_0x469cc9){_0x4b3b73=_0x4b3b73-0x0;var _0x439291=_0x34e8[_0x4b3b73];return _0x439291;};'use strict';var _=require(_0x834e('0x0'));var util=require(_0x834e('0x1'));var moment=require(_0x834e('0x2'));var BPromise=require(_0x834e('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x834e('0x4'));var db=require(_0x834e('0x5'))['db'];var utils=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));var config=require(_0x834e('0x9'));var jayson=require(_0x834e('0xa'));var client=jayson['client'][_0x834e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x52056d,_0x3e16d2,_0x3cc2e3){return new BPromise(function(_0x3a3ef6,_0x2e69e2){return client[_0x834e('0xc')](_0x52056d,_0x3cc2e3)[_0x834e('0xd')](function(_0x363786){logger[_0x834e('0xe')](_0x834e('0xf'),_0x3e16d2,_0x834e('0x10'));logger[_0x834e('0x11')](_0x834e('0x12'),_0x3e16d2,_0x834e('0x10'),JSON[_0x834e('0x13')](_0x363786));if(_0x363786[_0x834e('0x14')]){if(_0x363786[_0x834e('0x14')][_0x834e('0x15')]===0x1f4){logger['error'](_0x834e('0xf'),_0x3e16d2,_0x363786[_0x834e('0x14')]['message']);return _0x2e69e2(_0x363786[_0x834e('0x14')][_0x834e('0x16')]);}logger[_0x834e('0x14')](_0x834e('0xf'),_0x3e16d2,_0x363786['error'][_0x834e('0x16')]);return _0x3a3ef6(_0x363786[_0x834e('0x14')]['message']);}else{logger[_0x834e('0xe')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x834e('0x10'));_0x3a3ef6(_0x363786[_0x834e('0x17')]['message']);}})[_0x834e('0x18')](function(_0x22106e){logger[_0x834e('0x14')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x3e16d2,_0x22106e);_0x2e69e2(_0x22106e);});});}
\ No newline at end of file
index 85cafd0..c4b3fe5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd41=['../../config/environment','./voicePrefix.controller','isAuthenticated','index','/describe','get','/:id/users','getAgents','/:id/teams','getTeams','post','create','addAgents','addTeams','put','update','delete','/:id','destroy','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','Router','fs-extra'];(function(_0x38f86b,_0x45b662){var _0x10832f=function(_0x35f66a){while(--_0x35f66a){_0x38f86b['push'](_0x38f86b['shift']());}};_0x10832f(++_0x45b662);}(_0xdd41,0x1f2));var _0x1dd4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd41[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x1dd4('0x0'));var util=require(_0x1dd4('0x1'));var path=require(_0x1dd4('0x2'));var timeout=require(_0x1dd4('0x3'));var express=require('express');var router=express[_0x1dd4('0x4')]();var fs_extra=require(_0x1dd4('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x1dd4('0x6'));var controller=require(_0x1dd4('0x7'));router['get']('/',auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x9')]);router['get'](_0x1dd4('0xa'),auth['isAuthenticated'](),controller['describe']);router['get']('/:id',auth[_0x1dd4('0x8')](),controller['show']);router[_0x1dd4('0xb')](_0x1dd4('0xc'),auth[_0x1dd4('0x8')](),controller[_0x1dd4('0xd')]);router['get'](_0x1dd4('0xe'),auth['isAuthenticated'](),controller[_0x1dd4('0xf')]);router[_0x1dd4('0x10')]('/',auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x11')]);router[_0x1dd4('0x10')]('/:id/users',auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x12')]);router[_0x1dd4('0x10')](_0x1dd4('0xe'),auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x13')]);router[_0x1dd4('0x14')]('/:id',auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x15')]);router[_0x1dd4('0x16')](_0x1dd4('0x17'),auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x18')]);router[_0x1dd4('0x16')](_0x1dd4('0xc'),auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x19')]);router['delete']('/:id/teams',auth[_0x1dd4('0x8')](),controller[_0x1dd4('0x1a')]);module[_0x1dd4('0x1b')]=router;
\ No newline at end of file
+var _0xc01b=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','show','/:id/users','getAgents','/:id/teams','getTeams','post','addTeams','put','/:id','update','delete','destroy','removeAgents','removeTeams'];(function(_0x354cf0,_0x5f3201){var _0x1ef41a=function(_0x398529){while(--_0x398529){_0x354cf0['push'](_0x354cf0['shift']());}};_0x1ef41a(++_0x5f3201);}(_0xc01b,0x74));var _0xbc01=function(_0x4cc9d4,_0x240bee){_0x4cc9d4=_0x4cc9d4-0x0;var _0x44871d=_0xc01b[_0x4cc9d4];return _0x44871d;};'use strict';var multer=require(_0xbc01('0x0'));var util=require(_0xbc01('0x1'));var path=require(_0xbc01('0x2'));var timeout=require(_0xbc01('0x3'));var express=require(_0xbc01('0x4'));var router=express[_0xbc01('0x5')]();var fs_extra=require(_0xbc01('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xbc01('0x7'));var config=require(_0xbc01('0x8'));var controller=require(_0xbc01('0x9'));router[_0xbc01('0xa')]('/',auth[_0xbc01('0xb')](),controller[_0xbc01('0xc')]);router[_0xbc01('0xa')](_0xbc01('0xd'),auth[_0xbc01('0xb')](),controller[_0xbc01('0xe')]);router[_0xbc01('0xa')]('/:id',auth['isAuthenticated'](),controller[_0xbc01('0xf')]);router[_0xbc01('0xa')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x11')]);router[_0xbc01('0xa')](_0xbc01('0x12'),auth['isAuthenticated'](),controller[_0xbc01('0x13')]);router[_0xbc01('0x14')]('/',auth[_0xbc01('0xb')](),controller['create']);router[_0xbc01('0x14')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller['addAgents']);router['post']('/:id/teams',auth[_0xbc01('0xb')](),controller[_0xbc01('0x15')]);router[_0xbc01('0x16')](_0xbc01('0x17'),auth['isAuthenticated'](),controller[_0xbc01('0x18')]);router[_0xbc01('0x19')](_0xbc01('0x17'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1a')]);router[_0xbc01('0x19')](_0xbc01('0x10'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1b')]);router[_0xbc01('0x19')](_0xbc01('0x12'),auth[_0xbc01('0xb')](),controller[_0xbc01('0x1c')]);module['exports']=router;
\ No newline at end of file
index 5d34a12..5dbad1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80c6=['getDataValue','INTEGER','sequelize','STRING','name','VIRTUAL','system-'];(function(_0x571915,_0x16f00c){var _0x57c6ea=function(_0x1f18c1){while(--_0x1f18c1){_0x571915['push'](_0x571915['shift']());}};_0x57c6ea(++_0x16f00c);}(_0x80c6,0x160));var _0x680c=function(_0x304f7a,_0x33989c){_0x304f7a=_0x304f7a-0x0;var _0x42ef52=_0x80c6[_0x304f7a];return _0x42ef52;};'use strict';var Sequelize=require(_0x680c('0x0'));module['exports']={'name':{'type':Sequelize[_0x680c('0x1')],'allowNull':![],'unique':_0x680c('0x2')},'prefix':{'type':Sequelize[_0x680c('0x3')],'get':function(_0xfb022d){return _0x680c('0x4')+this[_0x680c('0x5')](_0x680c('0x2'))+'-';}},'description':{'type':Sequelize[_0x680c('0x1')]},'callerIdAll':{'type':Sequelize[_0x680c('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x680c('0x6')]}};
\ No newline at end of file
+var _0x84a8=['exports','STRING','VIRTUAL','system-','getDataValue','name','INTEGER','sequelize'];(function(_0x81ae4c,_0x46f493){var _0x54de8a=function(_0xb562dd){while(--_0xb562dd){_0x81ae4c['push'](_0x81ae4c['shift']());}};_0x54de8a(++_0x46f493);}(_0x84a8,0x1a7));var _0x884a=function(_0x581249,_0x483f03){_0x581249=_0x581249-0x0;var _0x284bae=_0x84a8[_0x581249];return _0x284bae;};'use strict';var Sequelize=require(_0x884a('0x0'));module[_0x884a('0x1')]={'name':{'type':Sequelize[_0x884a('0x2')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x884a('0x3')],'get':function(_0x3f41f1){return _0x884a('0x4')+this[_0x884a('0x5')](_0x884a('0x6'))+'-';}},'description':{'type':Sequelize['STRING']},'callerIdAll':{'type':Sequelize[_0x884a('0x2')]},'VoiceExtensionId':{'type':Sequelize[_0x884a('0x7')]}};
\ No newline at end of file
index ef58c21..e510ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','VoicePrefixes','UserProfileResource','then','error','stack','name','index','map','VoicePrefix','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','order','sort','where','pick','merge','VIRTUAL','filter','options','findAll','rows','catch','params','keys','includeAll','include','describe','create','sequelize','body','VoiceExtension','find','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','from-sip','exten','app','system','description','appdata','prefix','NoOp','VoicePrefixId','Extensions\x20creation\x20failed','push','Set','CDR(prefix)=','callerIdAll','No\x20callerid\x20available','goto','context','${EXTEN:','charAt','transaction','findById','addAgents','ids','omit','emit','userVoicePrefix:save','removeAgents','userVoicePrefix:remove','User','getAgents','hasOwnProperty','nolimit','getTeams','Team','addTeams','Agents','online','voicePause','interface','upsert','UserVoicePrefix','findOrCreate','forEach','removeTeams','select','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','SELECT','every','TeamId','all','union','compact','value','isEmpty','rimraf','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x36d815,_0x2c7143){var _0x55a7df=function(_0x4d03f7){while(--_0x4d03f7){_0x36d815['push'](_0x36d815['shift']());}};_0x55a7df(++_0x2c7143);}(_0x1775,0x1db));var _0x5177=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x1775[_0x3947c9];return _0x2e7871;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5177('0x0'));var zipdir=require(_0x5177('0x1'));var jsonpatch=require(_0x5177('0x2'));var rp=require(_0x5177('0x3'));var moment=require(_0x5177('0x4'));var BPromise=require(_0x5177('0x5'));var Mustache=require(_0x5177('0x6'));var util=require(_0x5177('0x7'));var path=require(_0x5177('0x8'));var sox=require(_0x5177('0x9'));var csv=require(_0x5177('0xa'));var ejs=require(_0x5177('0xb'));var fs=require('fs');var fs_extra=require(_0x5177('0xc'));var _=require(_0x5177('0xd'));var squel=require(_0x5177('0xe'));var crypto=require(_0x5177('0xf'));var jsforce=require(_0x5177('0x10'));var deskjs=require(_0x5177('0x11'));var toCsv=require(_0x5177('0xa'));var querystring=require(_0x5177('0x12'));var Papa=require(_0x5177('0x13'));var Redis=require(_0x5177('0x14'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5177('0x15'));var hardwareService=require(_0x5177('0x16'));var logger=require(_0x5177('0x17'))(_0x5177('0x18'));var utils=require(_0x5177('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x5177('0x1a'));var db=require(_0x5177('0x1b'))['db'];config[_0x5177('0x1c')]=_[_0x5177('0x1d')](config[_0x5177('0x1c')],{'host':_0x5177('0x1e'),'port':0x18eb});var socket=require(_0x5177('0x1f'))(new Redis(config[_0x5177('0x1c')]));require(_0x5177('0x20'))[_0x5177('0x21')](socket);function respondWithStatusCode(_0x41bef4,_0x2bf5bb){_0x2bf5bb=_0x2bf5bb||0xcc;return function(_0x29cd2c){if(_0x29cd2c){return _0x41bef4[_0x5177('0x22')](_0x2bf5bb);}return _0x41bef4[_0x5177('0x23')](_0x2bf5bb)[_0x5177('0x24')]();};}function respondWithResult(_0x2ab5e5,_0x7dba6f){_0x7dba6f=_0x7dba6f||0xc8;return function(_0xe6dcf6){if(_0xe6dcf6){return _0x2ab5e5['status'](_0x7dba6f)[_0x5177('0x25')](_0xe6dcf6);}};}function respondWithFilteredResult(_0x41e687,_0x3f5ab5){return function(_0x1b4102){if(_0x1b4102){var _0x5f5bd4=typeof _0x3f5ab5[_0x5177('0x26')]===_0x5177('0x27')&&typeof _0x3f5ab5[_0x5177('0x28')]==='undefined';var _0x86f5f8=_0x1b4102['count'];var _0xc2b2b5=_0x5f5bd4?0x0:_0x3f5ab5[_0x5177('0x26')];var _0x219744=_0x5f5bd4?_0x1b4102[_0x5177('0x29')]:_0x3f5ab5[_0x5177('0x26')]+_0x3f5ab5[_0x5177('0x28')];var _0x174c4f;if(_0x219744>=_0x86f5f8){_0x219744=_0x86f5f8;_0x174c4f=0xc8;}else{_0x174c4f=0xce;}_0x41e687[_0x5177('0x23')](_0x174c4f);return _0x41e687[_0x5177('0x2a')](_0x5177('0x2b'),_0xc2b2b5+'-'+_0x219744+'/'+_0x86f5f8)[_0x5177('0x25')](_0x1b4102);}return null;};}function patchUpdates(_0x3b0c37){return function(_0x5d9a9c){try{jsonpatch[_0x5177('0x2c')](_0x5d9a9c,_0x3b0c37,!![]);}catch(_0x556f96){return BPromise[_0x5177('0x2d')](_0x556f96);}return _0x5d9a9c[_0x5177('0x2e')]();};}function saveUpdates(_0x3b39b5,_0x2d51d0){return function(_0x4bc8e2){if(_0x4bc8e2){return _0x4bc8e2[_0x5177('0x2f')](_0x3b39b5)['then'](function(_0x564139){return _0x564139;});}return null;};}function removeEntity(_0x19a0c2,_0x15cb93){return function(_0x577bf7){if(_0x577bf7){return _0x577bf7[_0x5177('0x30')]()['then'](function(){var _0x231d35=_0x577bf7[_0x5177('0x31')]({'plain':!![]});var _0x58846c=_0x5177('0x32');return db[_0x5177('0x33')][_0x5177('0x30')]({'where':{'type':_0x58846c,'resourceId':_0x231d35['id']}})[_0x5177('0x34')](function(){return _0x577bf7;});})[_0x5177('0x34')](function(){_0x19a0c2[_0x5177('0x23')](0xcc)['end']();});}};}function handleEntityNotFound(_0x498fcd,_0x45cf20){return function(_0x1c660e){if(!_0x1c660e){_0x498fcd[_0x5177('0x22')](0x194);}return _0x1c660e;};}function handleError(_0x174f7a,_0x2e1985){_0x2e1985=_0x2e1985||0x1f4;return function(_0x8134f9){logger[_0x5177('0x35')](_0x8134f9[_0x5177('0x36')]);if(_0x8134f9['name']){delete _0x8134f9[_0x5177('0x37')];}_0x174f7a[_0x5177('0x23')](_0x2e1985)['send'](_0x8134f9);};}exports[_0x5177('0x38')]=function(_0x5e4c48,_0x172b36){var _0x1a2c46={},_0x1ba51c={},_0x5e2e5a={'count':0x0,'rows':[]};var _0x4f70df=_[_0x5177('0x39')](db[_0x5177('0x3a')][_0x5177('0x3b')],function(_0x3735e9){return{'name':_0x3735e9[_0x5177('0x3c')],'type':_0x3735e9[_0x5177('0x3d')][_0x5177('0x3e')]};});_0x1ba51c[_0x5177('0x3f')]=_['map'](_0x4f70df,_0x5177('0x37'));_0x1ba51c[_0x5177('0x40')]=_['keys'](_0x5e4c48[_0x5177('0x40')]);_0x1ba51c[_0x5177('0x41')]=_[_0x5177('0x42')](_0x1ba51c[_0x5177('0x3f')],_0x1ba51c[_0x5177('0x40')]);_0x1a2c46[_0x5177('0x43')]=_['intersection'](_0x1ba51c[_0x5177('0x3f')],qs[_0x5177('0x44')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x44')]));_0x1a2c46[_0x5177('0x43')]=_0x1a2c46[_0x5177('0x43')][_0x5177('0x45')]?_0x1a2c46['attributes']:_0x1ba51c[_0x5177('0x3f')];if(!_0x5e4c48[_0x5177('0x40')]['hasOwnProperty']('nolimit')){_0x1a2c46[_0x5177('0x28')]=qs[_0x5177('0x28')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x28')]);_0x1a2c46[_0x5177('0x26')]=qs[_0x5177('0x26')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x26')]);}_0x1a2c46[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x5e4c48[_0x5177('0x40')][_0x5177('0x47')]);_0x1a2c46[_0x5177('0x48')]=qs['filters'](_[_0x5177('0x49')](_0x5e4c48[_0x5177('0x40')],_0x1ba51c['filters']),_0x4f70df);if(_0x5e4c48[_0x5177('0x40')]['filter']){_0x1a2c46[_0x5177('0x48')]=_[_0x5177('0x4a')](_0x1a2c46[_0x5177('0x48')],{'$or':_['map'](_0x4f70df,function(_0x56eba4){if(_0x56eba4[_0x5177('0x3d')]!==_0x5177('0x4b')){var _0x1a149b={};_0x1a149b[_0x56eba4[_0x5177('0x37')]]={'$like':'%'+_0x5e4c48[_0x5177('0x40')][_0x5177('0x4c')]+'%'};return _0x1a149b;}})});}_0x1a2c46=_[_0x5177('0x4a')]({},_0x1a2c46,_0x5e4c48[_0x5177('0x4d')]);var _0x4e287e={'where':_0x1a2c46[_0x5177('0x48')]};return db['VoicePrefix']['count'](_0x4e287e)[_0x5177('0x34')](function(_0x17dc98){_0x5e2e5a['count']=_0x17dc98;if(_0x5e4c48[_0x5177('0x40')]['includeAll']){_0x1a2c46['include']=[{'all':!![]}];}return db[_0x5177('0x3a')][_0x5177('0x4e')](_0x1a2c46);})[_0x5177('0x34')](function(_0x3776b8){_0x5e2e5a[_0x5177('0x4f')]=_0x3776b8;return _0x5e2e5a;})[_0x5177('0x34')](respondWithFilteredResult(_0x172b36,_0x1a2c46))[_0x5177('0x50')](handleError(_0x172b36,null));};exports['show']=function(_0x5396cc,_0x12b70){var _0x511dc0={'raw':![],'where':{'id':_0x5396cc[_0x5177('0x51')]['id']}},_0x23be2a={};_0x23be2a[_0x5177('0x3f')]=_[_0x5177('0x52')](db['VoicePrefix'][_0x5177('0x3b')]);_0x23be2a[_0x5177('0x40')]=_[_0x5177('0x52')](_0x5396cc[_0x5177('0x40')]);_0x23be2a[_0x5177('0x41')]=_[_0x5177('0x42')](_0x23be2a[_0x5177('0x3f')],_0x23be2a[_0x5177('0x40')]);_0x511dc0[_0x5177('0x43')]=_[_0x5177('0x42')](_0x23be2a[_0x5177('0x3f')],qs['fields'](_0x5396cc[_0x5177('0x40')]['fields']));_0x511dc0['attributes']=_0x511dc0['attributes'][_0x5177('0x45')]?_0x511dc0[_0x5177('0x43')]:_0x23be2a['model'];if(_0x5396cc[_0x5177('0x40')][_0x5177('0x53')]){_0x511dc0[_0x5177('0x54')]=[{'all':!![]}];}_0x511dc0=_['merge']({},_0x511dc0,_0x5396cc[_0x5177('0x4d')]);return db['VoicePrefix']['find'](_0x511dc0)['then'](handleEntityNotFound(_0x12b70,null))[_0x5177('0x34')](respondWithResult(_0x12b70,null))[_0x5177('0x50')](handleError(_0x12b70,null));};exports[_0x5177('0x30')]=function(_0x5a1f8b,_0x4e53e4){return db[_0x5177('0x3a')]['find']({'where':{'id':_0x5a1f8b[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x4e53e4,null))[_0x5177('0x34')](removeEntity(_0x4e53e4,null))[_0x5177('0x50')](handleError(_0x4e53e4,null));};exports[_0x5177('0x55')]=function(_0xa0edd7,_0x26bac0){return db[_0x5177('0x3a')][_0x5177('0x55')]()[_0x5177('0x34')](respondWithResult(_0x26bac0,null))[_0x5177('0x50')](handleError(_0x26bac0,null));};exports[_0x5177('0x56')]=function(_0x422d6c,_0x4c2068){var _0x59376b;return db[_0x5177('0x57')]['transaction'](function(_0x649c6f){return db['VoicePrefix'][_0x5177('0x56')](_0x422d6c[_0x5177('0x58')],{'transaction':_0x649c6f})[_0x5177('0x34')](function(_0x55a0b6){_0x59376b=_0x55a0b6['get']({'plain':!![]});return db[_0x5177('0x59')][_0x5177('0x5a')]({'where':{'id':_0x59376b[_0x5177('0x5b')]},'raw':!![]})[_0x5177('0x34')](function(_0x4a4758){return createVoicePrefixExtensions(_0x59376b,_0x4a4758,_0x649c6f);});});})['then'](function(){var _0x3f0e89=_0x422d6c[_0x5177('0x5c')][_0x5177('0x31')]({'plain':!![]});if(!_0x3f0e89)throw new Error(_0x5177('0x5d'));if(_0x3f0e89['role']===_0x5177('0x5c')){var _0x143aff=_0x59376b;return db[_0x5177('0x5e')]['find']({'where':{'name':_0x5177('0x32'),'userProfileId':_0x3f0e89[_0x5177('0x5f')]},'raw':!![]})[_0x5177('0x34')](function(_0x49e3e3){if(_0x49e3e3&&_0x49e3e3[_0x5177('0x60')]===0x0){return db['UserProfileResource'][_0x5177('0x56')]({'name':_0x143aff[_0x5177('0x37')],'resourceId':_0x143aff['id'],'type':_0x49e3e3[_0x5177('0x37')],'sectionId':_0x49e3e3['id']},{})['then'](function(){return _0x59376b;});}else{return _0x59376b;}})[_0x5177('0x50')](function(_0x161e03){logger[_0x5177('0x35')](_0x5177('0x61'),_0x161e03);throw _0x161e03;});}return _0x59376b;})[_0x5177('0x34')](respondWithResult(_0x4c2068,null))[_0x5177('0x50')](handleError(_0x4c2068,null));};function Extension(_0x37380c,_0x267599,_0x5ceed2,_0x5d96ce){this['context']=_0x5177('0x62');this[_0x5177('0x63')]=_0x37380c;this[_0x5177('0x64')]=_0x5ceed2;this[_0x5177('0x3d')]=_0x5177('0x65');this[_0x5177('0x66')]='Voice\x20Prefix\x20Extension';this['priority']=_0x267599;this[_0x5177('0x67')]=_0x5d96ce;}function createVoicePrefixExtensions(_0x23eb6e,_0x1f294e,_0x336017){return new BPromise(function(_0x123d40,_0x1b1778){var _0x2d1745=new Extension(formatPrefixName(_0x23eb6e[_0x5177('0x68')]),0x1,_0x5177('0x69'),'Voice\x20Prefix');_0x2d1745[_0x5177('0x6a')]=_0x23eb6e['id'];return db[_0x5177('0x59')]['create'](_0x2d1745,{'transaction':_0x336017})[_0x5177('0x34')](function(_0x4481b6){var _0x4edebc=_0x4481b6[_0x5177('0x31')]({'plain':!![]});var _0x2f3344=_[_0x5177('0x39')](addVoicePrefixExtensions(_0x23eb6e,_0x1f294e),function(_0x4be4b2){_0x4be4b2[_0x5177('0x5b')]=_0x4edebc['id'];_0x4be4b2[_0x5177('0x6a')]=_0x23eb6e['id'];return _0x4be4b2;});return db['VoiceExtension']['bulkCreate'](_0x2f3344,{'transaction':_0x336017})[_0x5177('0x34')](function(_0x4f76d7){if(!_0x4f76d7){return _0x1b1778(_0x5177('0x6b'));}else{return _0x123d40(_0x4f76d7);}})['catch'](function(_0x2771fa){return _0x1b1778(_0x2771fa);});});;});};function addVoicePrefixExtensions(_0x16f17c,_0x5a8ada){var _0x2af938=[];var _0x3b090d=formatPrefixName(_0x16f17c[_0x5177('0x68')]);_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x2,_0x5177('0x6d'),_0x5177('0x6e')+_0x16f17c[_0x5177('0x37')]));if(_0x16f17c['callerIdAll']){_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x3,'Set','PREFIX-CALLERIDALL='+_0x16f17c[_0x5177('0x6f')]));}else{_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x3,'NoOp',_0x5177('0x70')));}_0x2af938[_0x5177('0x6c')](new Extension(_0x3b090d,0x4,_0x5177('0x71'),_0x5a8ada[_0x5177('0x72')]+','+_0x5177('0x73')+(0x8+_0x16f17c[_0x5177('0x37')][_0x5177('0x45')])+'}'+','+0x1));return _0x2af938;}function formatPrefixName(_0x3b26f4){var _0x478d5e='_';for(var _0x54b28f=0x0;_0x54b28f<_0x3b26f4[_0x5177('0x45')];_0x54b28f++){if(_0x3b26f4[_0x5177('0x74')](_0x54b28f)=='-'){_0x478d5e+=_0x3b26f4[_0x5177('0x74')](_0x54b28f);}else{_0x478d5e+='['+_0x3b26f4[_0x5177('0x74')](_0x54b28f)+']';}}_0x478d5e+='.';return _0x478d5e;}exports[_0x5177('0x2f')]=function(_0x3dd58f,_0x4fc289,_0x3692b2){var _0x397b75=_0x3dd58f[_0x5177('0x58')];_0x397b75[_0x5177('0x68')]='system-'+_0x397b75[_0x5177('0x37')]+'-';return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x22da9d){return db[_0x5177('0x3a')]['update'](_0x397b75,{'where':{'id':_0x397b75['id']},'transaction':_0x22da9d})[_0x5177('0x34')](function(){return db['VoiceExtension'][_0x5177('0x30')]({'where':{'VoicePrefixId':_0x397b75['id']},'transaction':_0x22da9d})[_0x5177('0x34')](function(){return db['VoiceExtension'][_0x5177('0x5a')]({'where':{'id':_0x397b75[_0x5177('0x5b')]},'raw':!![]})[_0x5177('0x34')](function(_0x44ed82){return createVoicePrefixExtensions(_0x397b75,_0x44ed82,_0x22da9d);});});});})['then'](function(){return db[_0x5177('0x3a')][_0x5177('0x76')](_0x397b75['id']);})[_0x5177('0x34')](respondWithResult(_0x4fc289,null))[_0x5177('0x50')](handleError(_0x4fc289,null));};exports['addAgents']=function(_0x16b85b,_0x17456b,_0x3502dd){return db['VoicePrefix']['find']({'where':{'id':_0x16b85b[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x17456b,null))[_0x5177('0x34')](function(_0x170e25){if(_0x170e25){return _0x170e25[_0x5177('0x77')](_0x16b85b[_0x5177('0x58')][_0x5177('0x78')],_[_0x5177('0x79')](_0x16b85b[_0x5177('0x58')],['ids','id'])||{})['spread'](function(_0x597a84){for(var _0x290315=0x0;_0x290315<_0x16b85b['body'][_0x5177('0x78')][_0x5177('0x45')];_0x290315+=0x1){socket[_0x5177('0x7a')](_0x5177('0x7b'),{'UserId':Number(_0x16b85b[_0x5177('0x58')]['ids'][_0x290315]),'VoicePrefixId':Number(_0x16b85b[_0x5177('0x51')]['id'])});}return _0x597a84;});}})[_0x5177('0x34')](respondWithResult(_0x17456b,null))[_0x5177('0x50')](handleError(_0x17456b,null));};exports['removeAgents']=function(_0x3d845e,_0x484762,_0x3d95df){return db[_0x5177('0x3a')]['find']({'where':{'id':_0x3d845e[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x484762,null))['then'](function(_0x5f0141){if(_0x5f0141){return _0x5f0141[_0x5177('0x7c')](_0x3d845e['query'][_0x5177('0x78')])[_0x5177('0x34')](function(){if(_['isArray'](_0x3d845e[_0x5177('0x40')][_0x5177('0x78')])){for(var _0xcbbb73=0x0;_0xcbbb73<_0x3d845e[_0x5177('0x40')][_0x5177('0x78')][_0x5177('0x45')];_0xcbbb73+=0x1){socket[_0x5177('0x7a')](_0x5177('0x7d'),{'UserId':Number(_0x3d845e['query'][_0x5177('0x78')][_0xcbbb73]),'VoicePrefixId':Number(_0x3d845e['params']['id'])});}}else{socket[_0x5177('0x7a')](_0x5177('0x7d'),{'UserId':Number(_0x3d845e[_0x5177('0x40')][_0x5177('0x78')]),'VoicePrefixId':Number(_0x3d845e['params']['id'])});}});}})[_0x5177('0x34')](respondWithStatusCode(_0x484762,null))[_0x5177('0x50')](handleError(_0x484762,null));};exports['getAgents']=function(_0x17efe1,_0x30c2dc,_0x523012){var _0x33e1a6={};var _0x5f57bc={};var _0x3f1aad;var _0x558e04;return db['VoicePrefix']['findOne']({'where':{'id':_0x17efe1[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x30c2dc,null))[_0x5177('0x34')](function(_0x516d0b){if(_0x516d0b){_0x3f1aad=_0x516d0b;_0x5f57bc[_0x5177('0x3f')]=_[_0x5177('0x52')](db[_0x5177('0x7e')][_0x5177('0x3b')]);_0x5f57bc[_0x5177('0x40')]=_['keys'](_0x17efe1[_0x5177('0x40')]);_0x5f57bc[_0x5177('0x41')]=_['intersection'](_0x5f57bc[_0x5177('0x3f')],_0x5f57bc['query']);_0x33e1a6[_0x5177('0x43')]=_['intersection'](_0x5f57bc[_0x5177('0x3f')],qs[_0x5177('0x44')](_0x17efe1[_0x5177('0x40')][_0x5177('0x44')]));_0x33e1a6[_0x5177('0x43')]=_0x33e1a6[_0x5177('0x43')]['length']?_0x33e1a6['attributes']:_0x5f57bc[_0x5177('0x3f')];_0x33e1a6[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x17efe1['query'][_0x5177('0x47')]);_0x33e1a6[_0x5177('0x48')]=qs['filters'](_[_0x5177('0x49')](_0x17efe1['query'],_0x5f57bc[_0x5177('0x41')]));if(_0x17efe1[_0x5177('0x40')][_0x5177('0x4c')]){_0x33e1a6['where']=_[_0x5177('0x4a')](_0x33e1a6['where'],{'$or':_[_0x5177('0x39')](_0x33e1a6[_0x5177('0x43')],function(_0x5a40f1){var _0x5a8146={};_0x5a8146[_0x5a40f1]={'$like':'%'+_0x17efe1['query'][_0x5177('0x4c')]+'%'};return _0x5a8146;})});}_0x33e1a6=_['merge']({},_0x33e1a6,_0x17efe1[_0x5177('0x4d')]);return _0x3f1aad[_0x5177('0x7f')](_0x33e1a6);}})[_0x5177('0x34')](function(_0x57adf4){if(_0x57adf4){_0x558e04=_0x57adf4['length'];if(!_0x17efe1['query'][_0x5177('0x80')](_0x5177('0x81'))){_0x33e1a6[_0x5177('0x28')]=qs['limit'](_0x17efe1[_0x5177('0x40')][_0x5177('0x28')]);_0x33e1a6['offset']=qs[_0x5177('0x26')](_0x17efe1['query'][_0x5177('0x26')]);}return _0x3f1aad['getAgents'](_0x33e1a6);}})['then'](function(_0x5910a8){if(_0x5910a8){return _0x5910a8?{'count':_0x558e04,'rows':_0x5910a8}:null;}})[_0x5177('0x34')](respondWithResult(_0x30c2dc,null))['catch'](handleError(_0x30c2dc,null));};exports[_0x5177('0x82')]=function(_0x450c61,_0x1d351b,_0x1372ad){var _0x3b4cab={};var _0x197377={};var _0x580d34;var _0x1e76cf;return db[_0x5177('0x3a')]['findOne']({'where':{'id':_0x450c61[_0x5177('0x51')]['id']}})[_0x5177('0x34')](handleEntityNotFound(_0x1d351b,null))[_0x5177('0x34')](function(_0x51f7ce){if(_0x51f7ce){_0x580d34=_0x51f7ce;_0x197377['model']=_['keys'](db[_0x5177('0x83')][_0x5177('0x3b')]);_0x197377[_0x5177('0x40')]=_[_0x5177('0x52')](_0x450c61[_0x5177('0x40')]);_0x197377[_0x5177('0x41')]=_[_0x5177('0x42')](_0x197377[_0x5177('0x3f')],_0x197377[_0x5177('0x40')]);_0x3b4cab[_0x5177('0x43')]=_[_0x5177('0x42')](_0x197377[_0x5177('0x3f')],qs['fields'](_0x450c61[_0x5177('0x40')]['fields']));_0x3b4cab[_0x5177('0x43')]=_0x3b4cab[_0x5177('0x43')][_0x5177('0x45')]?_0x3b4cab['attributes']:_0x197377[_0x5177('0x3f')];_0x3b4cab[_0x5177('0x46')]=qs[_0x5177('0x47')](_0x450c61[_0x5177('0x40')][_0x5177('0x47')]);_0x3b4cab[_0x5177('0x48')]=qs[_0x5177('0x41')](_[_0x5177('0x49')](_0x450c61['query'],_0x197377['filters']));if(_0x450c61[_0x5177('0x40')]['filter']){_0x3b4cab[_0x5177('0x48')]=_[_0x5177('0x4a')](_0x3b4cab['where'],{'$or':_[_0x5177('0x39')](_0x3b4cab[_0x5177('0x43')],function(_0x54efd0){var _0x3e8a29={};_0x3e8a29[_0x54efd0]={'$like':'%'+_0x450c61[_0x5177('0x40')][_0x5177('0x4c')]+'%'};return _0x3e8a29;})});}_0x3b4cab=_[_0x5177('0x4a')]({},_0x3b4cab,_0x450c61[_0x5177('0x4d')]);return _0x580d34[_0x5177('0x82')](_0x3b4cab);}})[_0x5177('0x34')](function(_0x7a67fb){if(_0x7a67fb){_0x1e76cf=_0x7a67fb[_0x5177('0x45')];if(!_0x450c61[_0x5177('0x40')][_0x5177('0x80')](_0x5177('0x81'))){_0x3b4cab[_0x5177('0x28')]=qs['limit'](_0x450c61[_0x5177('0x40')][_0x5177('0x28')]);_0x3b4cab[_0x5177('0x26')]=qs['offset'](_0x450c61[_0x5177('0x40')][_0x5177('0x26')]);}return _0x580d34['getTeams'](_0x3b4cab);}})[_0x5177('0x34')](function(_0x5cbc48){if(_0x5cbc48){return _0x5cbc48?{'count':_0x1e76cf,'rows':_0x5cbc48}:null;}})['then'](respondWithResult(_0x1d351b,null))[_0x5177('0x50')](handleError(_0x1d351b,null));};exports[_0x5177('0x84')]=function(_0xd8f8f3,_0x40ded0,_0x356874){var _0x219a7c=_0xd8f8f3['body'][_0x5177('0x78')];var _0xcb831c;return db['Team'][_0x5177('0x4e')]({'where':{'id':_0x219a7c},'attributes':['id'],'include':[{'model':db[_0x5177('0x7e')],'as':_0x5177('0x85'),'attributes':['id',_0x5177('0x37'),_0x5177('0x86'),_0x5177('0x87'),_0x5177('0x88')],'raw':!![]}]})[_0x5177('0x34')](function(_0x4e60b2){if(_0x4e60b2){_0xcb831c=_0x4e60b2;var _0x193dbf=_['flatMap'](_0x4e60b2,function(_0xecd419){var _0x4970b3=_0xecd419[_0x5177('0x31')]({'plain':!![]});return _0x4970b3[_0x5177('0x85')];});return db[_0x5177('0x3a')][_0x5177('0x5a')]({'where':{'id':_0xd8f8f3['params']['id']}})[_0x5177('0x34')](function(_0x1b7c52){return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x4e8c0c){return _0x1b7c52['addTeams'](_0x219a7c,{'transaction':_0x4e8c0c})['then'](function(){return BPromise['each'](_0xcb831c,function(_0xaafc9f){return db['TeamVoicePrefix'][_0x5177('0x89')]({'TeamId':_0xaafc9f['id'],'VoicePrefixId':_0xd8f8f3['params']['id']},{'transaction':_0x4e8c0c});});})[_0x5177('0x34')](function(){return BPromise['each'](_0x193dbf,function(_0x384af7){return db[_0x5177('0x8a')][_0x5177('0x8b')]({'where':{'UserId':_0x384af7['id'],'VoicePrefixId':_0xd8f8f3[_0x5177('0x51')]['id']},'transaction':_0x4e8c0c});});})[_0x5177('0x34')](function(){_0x193dbf[_0x5177('0x8c')](function(_0x3a9c65){socket[_0x5177('0x7a')](_0x5177('0x7b'),{'UserId':_0x3a9c65['id'],'VoicePrefixId':_0x1b7c52['id']});});});});});}})[_0x5177('0x34')](respondWithStatusCode(_0x40ded0,null))['catch'](handleError(_0x40ded0,null));};exports[_0x5177('0x8d')]=function(_0x13fa90,_0x3475c3,_0x5ed46a){return db[_0x5177('0x83')][_0x5177('0x4e')]({'where':{'id':_0x13fa90[_0x5177('0x40')][_0x5177('0x78')]},'attributes':['id'],'include':[{'model':db[_0x5177('0x7e')],'as':_0x5177('0x85'),'attributes':['id'],'raw':!![]}]})[_0x5177('0x34')](handleEntityNotFound(_0x3475c3,null))[_0x5177('0x34')](function(_0xb8f7de){var _0x1bc4cb=_[_0x5177('0x39')](_0xb8f7de,'id');var _0x4d29b7=[];var _0x1f8c26=[];var _0x365b68=squel[_0x5177('0x8e')]();_0x365b68['field'](_0x5177('0x8f'))[_0x5177('0x90')]('team_has_voice_prefixes','tq')[_0x5177('0x91')](_0x5177('0x92'),'ut',_0x5177('0x93'))['where'](_0x5177('0x94'),_0x13fa90[_0x5177('0x51')]['id']);for(var _0x3b8c79=0x0;_0x3b8c79<_0xb8f7de[_0x5177('0x45')];_0x3b8c79+=0x1){let _0x2a16ed=_0xb8f7de[_0x3b8c79];for(var _0x5d1909=0x0;_0x5d1909<_0x2a16ed['Agents'][_0x5177('0x45')];_0x5d1909+=0x1){let _0x61ead2=_0x2a16ed['Agents'][_0x5d1909];var _0x2ffb25=_0x365b68[_0x5177('0x95')]();_0x2ffb25['where'](_0x5177('0x96'),_0x61ead2['id']);_0x1f8c26[_0x5177('0x6c')](db['sequelize']['query'](_0x2ffb25[_0x5177('0x97')](),{'type':db['sequelize']['QueryTypes'][_0x5177('0x98')]})[_0x5177('0x34')](function(_0x58170f){if(_0x58170f[_0x5177('0x45')]===0x1){return _0x61ead2['id'];}else{var _0xdc5504=_[_0x5177('0x99')](_[_0x5177('0x39')](_0x58170f,_0x5177('0x9a')),function(_0x2fa026){return _['includes'](_0x1bc4cb,_0x2fa026);});if(_0xdc5504){return _0x61ead2['id'];}}}));}}return BPromise[_0x5177('0x9b')](_0x1f8c26)['then'](function(_0x55e914){_0x4d29b7=_(_0x4d29b7)[_0x5177('0x9c')](_0x55e914)[_0x5177('0x9d')]()[_0x5177('0x9e')]();return db['VoicePrefix'][_0x5177('0x5a')]({'where':{'id':_0x13fa90[_0x5177('0x51')]['id']}})[_0x5177('0x34')](function(_0x3873ca){return db[_0x5177('0x57')][_0x5177('0x75')](function(_0x10698d){return _0x3873ca[_0x5177('0x8d')](_0x13fa90[_0x5177('0x40')][_0x5177('0x78')],{'transaction':_0x10698d})[_0x5177('0x34')](function(){if(!_[_0x5177('0x9f')](_0x4d29b7)){return _0x3873ca['removeAgents'](_0x4d29b7,{'transaction':_0x10698d});}})[_0x5177('0x34')](function(){_0x4d29b7[_0x5177('0x8c')](function(_0x38f0f4){socket[_0x5177('0x7a')]('userVoicePrefix:remove',{'UserId':_0x38f0f4,'VoicePrefixId':_0x3873ca['id']});});});});});});})['then'](respondWithStatusCode(_0x3475c3,null))['catch'](handleError(_0x3475c3,null));};
\ No newline at end of file
+var _0x8952=['rawAttributes','fieldName','type','map','keys','filters','intersection','query','fields','attributes','length','model','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','rows','catch','params','find','describe','create','sequelize','transaction','body','get','VoiceExtension','VoiceExtensionId','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','UserProfileResource','context','from-sip','exten','system','Voice\x20Prefix\x20Extension','prefix','Voice\x20Prefix','VoicePrefixId','push','Set','CDR(prefix)=','callerIdAll','NoOp','No\x20callerid\x20available','goto','${EXTEN:','charAt','system-','findById','addAgents','ids','omit','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','User','getTeams','Team','findAll','Agents','online','interface','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','forEach','select','field','from','team_has_voice_prefixes','join','user_has_teams','VoicePrefixId\x20=\x20?','every','includes','all','union','compact','value','removeTeams','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../mysqldb','redis','localhost','./voicePrefix.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','VoicePrefixes','error','stack','name','send','index','VoicePrefix'];(function(_0x2b948f,_0x398e62){var _0x1237bc=function(_0x3c1843){while(--_0x3c1843){_0x2b948f['push'](_0x2b948f['shift']());}};_0x1237bc(++_0x398e62);}(_0x8952,0x17e));var _0x2895=function(_0x449b4c,_0x2f0678){_0x449b4c=_0x449b4c-0x0;var _0x586280=_0x8952[_0x449b4c];return _0x586280;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2895('0x0'));var zipdir=require(_0x2895('0x1'));var jsonpatch=require(_0x2895('0x2'));var rp=require(_0x2895('0x3'));var moment=require(_0x2895('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2895('0x5'));var util=require(_0x2895('0x6'));var path=require(_0x2895('0x7'));var sox=require('sox');var csv=require(_0x2895('0x8'));var ejs=require(_0x2895('0x9'));var fs=require('fs');var fs_extra=require(_0x2895('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x2895('0xb'));var jsforce=require(_0x2895('0xc'));var deskjs=require(_0x2895('0xd'));var toCsv=require(_0x2895('0x8'));var querystring=require(_0x2895('0xe'));var Papa=require('papaparse');var Redis=require(_0x2895('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x2895('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2895('0x11'));var utils=require(_0x2895('0x12'));var config=require(_0x2895('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x2895('0x14'))['db'];config[_0x2895('0x15')]=_['defaults'](config[_0x2895('0x15')],{'host':_0x2895('0x16'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x2895('0x17'))[_0x2895('0x18')](socket);function respondWithStatusCode(_0x5777a0,_0x2198c3){_0x2198c3=_0x2198c3||0xcc;return function(_0xd8192e){if(_0xd8192e){return _0x5777a0[_0x2895('0x19')](_0x2198c3);}return _0x5777a0[_0x2895('0x1a')](_0x2198c3)[_0x2895('0x1b')]();};}function respondWithResult(_0x2627e6,_0x6a5c7e){_0x6a5c7e=_0x6a5c7e||0xc8;return function(_0x31bb7f){if(_0x31bb7f){return _0x2627e6[_0x2895('0x1a')](_0x6a5c7e)[_0x2895('0x1c')](_0x31bb7f);}};}function respondWithFilteredResult(_0x10a1bf,_0x183b05){return function(_0xbf8b63){if(_0xbf8b63){var _0x2cb505=typeof _0x183b05[_0x2895('0x1d')]===_0x2895('0x1e')&&typeof _0x183b05[_0x2895('0x1f')]===_0x2895('0x1e');var _0x5a8eab=_0xbf8b63['count'];var _0x493851=_0x2cb505?0x0:_0x183b05[_0x2895('0x1d')];var _0x12c2fb=_0x2cb505?_0xbf8b63[_0x2895('0x20')]:_0x183b05['offset']+_0x183b05[_0x2895('0x1f')];var _0x190b79;if(_0x12c2fb>=_0x5a8eab){_0x12c2fb=_0x5a8eab;_0x190b79=0xc8;}else{_0x190b79=0xce;}_0x10a1bf[_0x2895('0x1a')](_0x190b79);return _0x10a1bf[_0x2895('0x21')](_0x2895('0x22'),_0x493851+'-'+_0x12c2fb+'/'+_0x5a8eab)['json'](_0xbf8b63);}return null;};}function patchUpdates(_0x30c6c3){return function(_0x5e93a4){try{jsonpatch['apply'](_0x5e93a4,_0x30c6c3,!![]);}catch(_0x142e58){return BPromise[_0x2895('0x23')](_0x142e58);}return _0x5e93a4[_0x2895('0x24')]();};}function saveUpdates(_0x511286,_0x4e884f){return function(_0x3a72fa){if(_0x3a72fa){return _0x3a72fa[_0x2895('0x25')](_0x511286)[_0x2895('0x26')](function(_0x4a21cf){return _0x4a21cf;});}return null;};}function removeEntity(_0x3d3320,_0x3690ce){return function(_0x480604){if(_0x480604){return _0x480604[_0x2895('0x27')]()[_0x2895('0x26')](function(){var _0x2cd4df=_0x480604['get']({'plain':!![]});var _0x320661=_0x2895('0x28');return db['UserProfileResource'][_0x2895('0x27')]({'where':{'type':_0x320661,'resourceId':_0x2cd4df['id']}})['then'](function(){return _0x480604;});})['then'](function(){_0x3d3320[_0x2895('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfa4f85,_0x381538){return function(_0x4fdd94){if(!_0x4fdd94){_0xfa4f85['sendStatus'](0x194);}return _0x4fdd94;};}function handleError(_0x32db49,_0x30dc2f){_0x30dc2f=_0x30dc2f||0x1f4;return function(_0x190e07){logger[_0x2895('0x29')](_0x190e07[_0x2895('0x2a')]);if(_0x190e07[_0x2895('0x2b')]){delete _0x190e07[_0x2895('0x2b')];}_0x32db49['status'](_0x30dc2f)[_0x2895('0x2c')](_0x190e07);};}exports[_0x2895('0x2d')]=function(_0x3625ba,_0x5546eb){var _0x1e9c13={},_0x458a55={},_0x31ab90={'count':0x0,'rows':[]};var _0x35a2e8=_['map'](db[_0x2895('0x2e')][_0x2895('0x2f')],function(_0x4765c9){return{'name':_0x4765c9[_0x2895('0x30')],'type':_0x4765c9[_0x2895('0x31')]['key']};});_0x458a55['model']=_[_0x2895('0x32')](_0x35a2e8,_0x2895('0x2b'));_0x458a55['query']=_[_0x2895('0x33')](_0x3625ba['query']);_0x458a55[_0x2895('0x34')]=_[_0x2895('0x35')](_0x458a55['model'],_0x458a55[_0x2895('0x36')]);_0x1e9c13['attributes']=_[_0x2895('0x35')](_0x458a55['model'],qs['fields'](_0x3625ba[_0x2895('0x36')][_0x2895('0x37')]));_0x1e9c13[_0x2895('0x38')]=_0x1e9c13['attributes'][_0x2895('0x39')]?_0x1e9c13[_0x2895('0x38')]:_0x458a55[_0x2895('0x3a')];if(!_0x3625ba[_0x2895('0x36')][_0x2895('0x3b')](_0x2895('0x3c'))){_0x1e9c13[_0x2895('0x1f')]=qs[_0x2895('0x1f')](_0x3625ba[_0x2895('0x36')][_0x2895('0x1f')]);_0x1e9c13['offset']=qs[_0x2895('0x1d')](_0x3625ba[_0x2895('0x36')][_0x2895('0x1d')]);}_0x1e9c13[_0x2895('0x3d')]=qs[_0x2895('0x3e')](_0x3625ba[_0x2895('0x36')][_0x2895('0x3e')]);_0x1e9c13['where']=qs['filters'](_[_0x2895('0x3f')](_0x3625ba[_0x2895('0x36')],_0x458a55[_0x2895('0x34')]),_0x35a2e8);if(_0x3625ba[_0x2895('0x36')][_0x2895('0x40')]){_0x1e9c13[_0x2895('0x41')]=_['merge'](_0x1e9c13['where'],{'$or':_[_0x2895('0x32')](_0x35a2e8,function(_0x20208f){if(_0x20208f['type']!=='VIRTUAL'){var _0x2a0eaf={};_0x2a0eaf[_0x20208f[_0x2895('0x2b')]]={'$like':'%'+_0x3625ba[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x2a0eaf;}})});}_0x1e9c13=_[_0x2895('0x42')]({},_0x1e9c13,_0x3625ba[_0x2895('0x43')]);var _0x5d4e23={'where':_0x1e9c13[_0x2895('0x41')]};return db[_0x2895('0x2e')][_0x2895('0x20')](_0x5d4e23)[_0x2895('0x26')](function(_0x4af6d6){_0x31ab90[_0x2895('0x20')]=_0x4af6d6;if(_0x3625ba[_0x2895('0x36')][_0x2895('0x44')]){_0x1e9c13[_0x2895('0x45')]=[{'all':!![]}];}return db['VoicePrefix']['findAll'](_0x1e9c13);})[_0x2895('0x26')](function(_0x19ce85){_0x31ab90[_0x2895('0x46')]=_0x19ce85;return _0x31ab90;})[_0x2895('0x26')](respondWithFilteredResult(_0x5546eb,_0x1e9c13))[_0x2895('0x47')](handleError(_0x5546eb,null));};exports['show']=function(_0x5bd425,_0x4b336c){var _0x28dd37={'raw':![],'where':{'id':_0x5bd425[_0x2895('0x48')]['id']}},_0x2130b2={};_0x2130b2[_0x2895('0x3a')]=_[_0x2895('0x33')](db[_0x2895('0x2e')]['rawAttributes']);_0x2130b2[_0x2895('0x36')]=_[_0x2895('0x33')](_0x5bd425[_0x2895('0x36')]);_0x2130b2[_0x2895('0x34')]=_[_0x2895('0x35')](_0x2130b2[_0x2895('0x3a')],_0x2130b2[_0x2895('0x36')]);_0x28dd37[_0x2895('0x38')]=_['intersection'](_0x2130b2[_0x2895('0x3a')],qs[_0x2895('0x37')](_0x5bd425[_0x2895('0x36')]['fields']));_0x28dd37[_0x2895('0x38')]=_0x28dd37[_0x2895('0x38')]['length']?_0x28dd37[_0x2895('0x38')]:_0x2130b2[_0x2895('0x3a')];if(_0x5bd425[_0x2895('0x36')][_0x2895('0x44')]){_0x28dd37[_0x2895('0x45')]=[{'all':!![]}];}_0x28dd37=_[_0x2895('0x42')]({},_0x28dd37,_0x5bd425[_0x2895('0x43')]);return db['VoicePrefix'][_0x2895('0x49')](_0x28dd37)[_0x2895('0x26')](handleEntityNotFound(_0x4b336c,null))['then'](respondWithResult(_0x4b336c,null))['catch'](handleError(_0x4b336c,null));};exports['destroy']=function(_0x212a1f,_0xe552b6){return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x212a1f[_0x2895('0x48')]['id']}})[_0x2895('0x26')](handleEntityNotFound(_0xe552b6,null))[_0x2895('0x26')](removeEntity(_0xe552b6,null))[_0x2895('0x47')](handleError(_0xe552b6,null));};exports[_0x2895('0x4a')]=function(_0x3d043c,_0x45302c){return db[_0x2895('0x2e')][_0x2895('0x4a')]()[_0x2895('0x26')](respondWithResult(_0x45302c,null))[_0x2895('0x47')](handleError(_0x45302c,null));};exports[_0x2895('0x4b')]=function(_0x2116a6,_0x3e0fde){var _0xbcf98;return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x90ed5d){return db[_0x2895('0x2e')][_0x2895('0x4b')](_0x2116a6[_0x2895('0x4e')],{'transaction':_0x90ed5d})[_0x2895('0x26')](function(_0x16ff3d){_0xbcf98=_0x16ff3d[_0x2895('0x4f')]({'plain':!![]});return db[_0x2895('0x50')][_0x2895('0x49')]({'where':{'id':_0xbcf98[_0x2895('0x51')]},'raw':!![]})['then'](function(_0xbc538a){return createVoicePrefixExtensions(_0xbcf98,_0xbc538a,_0x90ed5d);});});})[_0x2895('0x26')](function(){var _0x2bc573=_0x2116a6[_0x2895('0x52')][_0x2895('0x4f')]({'plain':!![]});if(!_0x2bc573)throw new Error(_0x2895('0x53'));if(_0x2bc573['role']===_0x2895('0x52')){var _0x5579b3=_0xbcf98;return db[_0x2895('0x54')][_0x2895('0x49')]({'where':{'name':_0x2895('0x28'),'userProfileId':_0x2bc573[_0x2895('0x55')]},'raw':!![]})[_0x2895('0x26')](function(_0x56a2c0){if(_0x56a2c0&&_0x56a2c0['autoAssociation']===0x0){return db[_0x2895('0x56')][_0x2895('0x4b')]({'name':_0x5579b3[_0x2895('0x2b')],'resourceId':_0x5579b3['id'],'type':_0x56a2c0['name'],'sectionId':_0x56a2c0['id']},{})[_0x2895('0x26')](function(){return _0xbcf98;});}else{return _0xbcf98;}})['catch'](function(_0x3c1f50){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3c1f50);throw _0x3c1f50;});}return _0xbcf98;})['then'](respondWithResult(_0x3e0fde,null))['catch'](handleError(_0x3e0fde,null));};function Extension(_0x36177d,_0x2ff725,_0x402e00,_0x4336c){this[_0x2895('0x57')]=_0x2895('0x58');this[_0x2895('0x59')]=_0x36177d;this['app']=_0x402e00;this[_0x2895('0x31')]=_0x2895('0x5a');this['description']=_0x2895('0x5b');this['priority']=_0x2ff725;this['appdata']=_0x4336c;}function createVoicePrefixExtensions(_0x2a9194,_0x14d7f9,_0x50299a){return new BPromise(function(_0xf5be,_0x3c5e32){var _0x35d979=new Extension(formatPrefixName(_0x2a9194[_0x2895('0x5c')]),0x1,'NoOp',_0x2895('0x5d'));_0x35d979['VoicePrefixId']=_0x2a9194['id'];return db[_0x2895('0x50')]['create'](_0x35d979,{'transaction':_0x50299a})['then'](function(_0x1af031){var _0x58f96a=_0x1af031[_0x2895('0x4f')]({'plain':!![]});var _0x39a28b=_[_0x2895('0x32')](addVoicePrefixExtensions(_0x2a9194,_0x14d7f9),function(_0x559ef3){_0x559ef3[_0x2895('0x51')]=_0x58f96a['id'];_0x559ef3[_0x2895('0x5e')]=_0x2a9194['id'];return _0x559ef3;});return db['VoiceExtension']['bulkCreate'](_0x39a28b,{'transaction':_0x50299a})[_0x2895('0x26')](function(_0x347445){if(!_0x347445){return _0x3c5e32('Extensions\x20creation\x20failed');}else{return _0xf5be(_0x347445);}})[_0x2895('0x47')](function(_0x53f9d8){return _0x3c5e32(_0x53f9d8);});});;});};function addVoicePrefixExtensions(_0x567520,_0x98b64d){var _0x3241cb=[];var _0x16b39c=formatPrefixName(_0x567520['prefix']);_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x2,_0x2895('0x60'),_0x2895('0x61')+_0x567520[_0x2895('0x2b')]));if(_0x567520[_0x2895('0x62')]){_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x3,_0x2895('0x60'),'PREFIX-CALLERIDALL='+_0x567520[_0x2895('0x62')]));}else{_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x3,_0x2895('0x63'),_0x2895('0x64')));}_0x3241cb[_0x2895('0x5f')](new Extension(_0x16b39c,0x4,_0x2895('0x65'),_0x98b64d[_0x2895('0x57')]+','+_0x2895('0x66')+(0x8+_0x567520['name'][_0x2895('0x39')])+'}'+','+0x1));return _0x3241cb;}function formatPrefixName(_0x354718){var _0x16f369='_';for(var _0x2288ff=0x0;_0x2288ff<_0x354718[_0x2895('0x39')];_0x2288ff++){if(_0x354718[_0x2895('0x67')](_0x2288ff)=='-'){_0x16f369+=_0x354718[_0x2895('0x67')](_0x2288ff);}else{_0x16f369+='['+_0x354718[_0x2895('0x67')](_0x2288ff)+']';}}_0x16f369+='.';return _0x16f369;}exports[_0x2895('0x25')]=function(_0x2862aa,_0x53a270,_0x477385){var _0x1a2045=_0x2862aa[_0x2895('0x4e')];_0x1a2045[_0x2895('0x5c')]=_0x2895('0x68')+_0x1a2045[_0x2895('0x2b')]+'-';return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x203609){return db[_0x2895('0x2e')]['update'](_0x1a2045,{'where':{'id':_0x1a2045['id']},'transaction':_0x203609})[_0x2895('0x26')](function(){return db[_0x2895('0x50')][_0x2895('0x27')]({'where':{'VoicePrefixId':_0x1a2045['id']},'transaction':_0x203609})[_0x2895('0x26')](function(){return db[_0x2895('0x50')]['find']({'where':{'id':_0x1a2045[_0x2895('0x51')]},'raw':!![]})[_0x2895('0x26')](function(_0x4c569e){return createVoicePrefixExtensions(_0x1a2045,_0x4c569e,_0x203609);});});});})['then'](function(){return db['VoicePrefix'][_0x2895('0x69')](_0x1a2045['id']);})[_0x2895('0x26')](respondWithResult(_0x53a270,null))[_0x2895('0x47')](handleError(_0x53a270,null));};exports[_0x2895('0x6a')]=function(_0x31e21a,_0x48c014,_0x5e6a1f){return db[_0x2895('0x2e')]['find']({'where':{'id':_0x31e21a[_0x2895('0x48')]['id']}})['then'](handleEntityNotFound(_0x48c014,null))[_0x2895('0x26')](function(_0x3de634){if(_0x3de634){return _0x3de634['addAgents'](_0x31e21a[_0x2895('0x4e')][_0x2895('0x6b')],_[_0x2895('0x6c')](_0x31e21a[_0x2895('0x4e')],['ids','id'])||{})['spread'](function(_0x10ca0f){for(var _0x5dde20=0x0;_0x5dde20<_0x31e21a['body'][_0x2895('0x6b')][_0x2895('0x39')];_0x5dde20+=0x1){socket[_0x2895('0x6d')](_0x2895('0x6e'),{'UserId':Number(_0x31e21a['body'][_0x2895('0x6b')][_0x5dde20]),'VoicePrefixId':Number(_0x31e21a[_0x2895('0x48')]['id'])});}return _0x10ca0f;});}})[_0x2895('0x26')](respondWithResult(_0x48c014,null))[_0x2895('0x47')](handleError(_0x48c014,null));};exports[_0x2895('0x6f')]=function(_0x45e80c,_0x21d3dd,_0x3346c2){return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x45e80c[_0x2895('0x48')]['id']}})[_0x2895('0x26')](handleEntityNotFound(_0x21d3dd,null))['then'](function(_0x1a9c84){if(_0x1a9c84){return _0x1a9c84[_0x2895('0x6f')](_0x45e80c[_0x2895('0x36')]['ids'])[_0x2895('0x26')](function(){if(_[_0x2895('0x70')](_0x45e80c['query'][_0x2895('0x6b')])){for(var _0x1693b6=0x0;_0x1693b6<_0x45e80c[_0x2895('0x36')]['ids'][_0x2895('0x39')];_0x1693b6+=0x1){socket[_0x2895('0x6d')](_0x2895('0x71'),{'UserId':Number(_0x45e80c[_0x2895('0x36')]['ids'][_0x1693b6]),'VoicePrefixId':Number(_0x45e80c[_0x2895('0x48')]['id'])});}}else{socket[_0x2895('0x6d')](_0x2895('0x71'),{'UserId':Number(_0x45e80c['query'][_0x2895('0x6b')]),'VoicePrefixId':Number(_0x45e80c['params']['id'])});}});}})[_0x2895('0x26')](respondWithStatusCode(_0x21d3dd,null))[_0x2895('0x47')](handleError(_0x21d3dd,null));};exports[_0x2895('0x72')]=function(_0x253e07,_0x570dd9,_0x6eef86){var _0x46bbca={};var _0x413aa4={};var _0x5e892a;var _0x34898e;return db['VoicePrefix'][_0x2895('0x73')]({'where':{'id':_0x253e07[_0x2895('0x48')]['id']}})['then'](handleEntityNotFound(_0x570dd9,null))['then'](function(_0x3bd07c){if(_0x3bd07c){_0x5e892a=_0x3bd07c;_0x413aa4[_0x2895('0x3a')]=_['keys'](db[_0x2895('0x74')][_0x2895('0x2f')]);_0x413aa4['query']=_[_0x2895('0x33')](_0x253e07[_0x2895('0x36')]);_0x413aa4[_0x2895('0x34')]=_[_0x2895('0x35')](_0x413aa4[_0x2895('0x3a')],_0x413aa4['query']);_0x46bbca[_0x2895('0x38')]=_[_0x2895('0x35')](_0x413aa4[_0x2895('0x3a')],qs[_0x2895('0x37')](_0x253e07[_0x2895('0x36')]['fields']));_0x46bbca[_0x2895('0x38')]=_0x46bbca[_0x2895('0x38')][_0x2895('0x39')]?_0x46bbca[_0x2895('0x38')]:_0x413aa4['model'];_0x46bbca[_0x2895('0x3d')]=qs[_0x2895('0x3e')](_0x253e07[_0x2895('0x36')][_0x2895('0x3e')]);_0x46bbca['where']=qs[_0x2895('0x34')](_[_0x2895('0x3f')](_0x253e07[_0x2895('0x36')],_0x413aa4[_0x2895('0x34')]));if(_0x253e07[_0x2895('0x36')][_0x2895('0x40')]){_0x46bbca['where']=_[_0x2895('0x42')](_0x46bbca[_0x2895('0x41')],{'$or':_[_0x2895('0x32')](_0x46bbca['attributes'],function(_0x553af0){var _0x1ff21e={};_0x1ff21e[_0x553af0]={'$like':'%'+_0x253e07[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x1ff21e;})});}_0x46bbca=_[_0x2895('0x42')]({},_0x46bbca,_0x253e07[_0x2895('0x43')]);return _0x5e892a['getAgents'](_0x46bbca);}})[_0x2895('0x26')](function(_0x837eef){if(_0x837eef){_0x34898e=_0x837eef[_0x2895('0x39')];if(!_0x253e07['query']['hasOwnProperty'](_0x2895('0x3c'))){_0x46bbca[_0x2895('0x1f')]=qs[_0x2895('0x1f')](_0x253e07['query'][_0x2895('0x1f')]);_0x46bbca[_0x2895('0x1d')]=qs[_0x2895('0x1d')](_0x253e07[_0x2895('0x36')]['offset']);}return _0x5e892a[_0x2895('0x72')](_0x46bbca);}})[_0x2895('0x26')](function(_0x71d436){if(_0x71d436){return _0x71d436?{'count':_0x34898e,'rows':_0x71d436}:null;}})[_0x2895('0x26')](respondWithResult(_0x570dd9,null))[_0x2895('0x47')](handleError(_0x570dd9,null));};exports[_0x2895('0x75')]=function(_0x3ae81f,_0x25f5c9,_0x2d6167){var _0x265c7a={};var _0x32baef={};var _0x3d2996;var _0x3d47d0;return db[_0x2895('0x2e')]['findOne']({'where':{'id':_0x3ae81f['params']['id']}})['then'](handleEntityNotFound(_0x25f5c9,null))['then'](function(_0x440fbf){if(_0x440fbf){_0x3d2996=_0x440fbf;_0x32baef[_0x2895('0x3a')]=_[_0x2895('0x33')](db[_0x2895('0x76')][_0x2895('0x2f')]);_0x32baef[_0x2895('0x36')]=_[_0x2895('0x33')](_0x3ae81f[_0x2895('0x36')]);_0x32baef[_0x2895('0x34')]=_[_0x2895('0x35')](_0x32baef[_0x2895('0x3a')],_0x32baef[_0x2895('0x36')]);_0x265c7a[_0x2895('0x38')]=_[_0x2895('0x35')](_0x32baef['model'],qs[_0x2895('0x37')](_0x3ae81f[_0x2895('0x36')][_0x2895('0x37')]));_0x265c7a['attributes']=_0x265c7a['attributes'][_0x2895('0x39')]?_0x265c7a[_0x2895('0x38')]:_0x32baef['model'];_0x265c7a[_0x2895('0x3d')]=qs['sort'](_0x3ae81f[_0x2895('0x36')][_0x2895('0x3e')]);_0x265c7a[_0x2895('0x41')]=qs[_0x2895('0x34')](_[_0x2895('0x3f')](_0x3ae81f[_0x2895('0x36')],_0x32baef[_0x2895('0x34')]));if(_0x3ae81f['query'][_0x2895('0x40')]){_0x265c7a[_0x2895('0x41')]=_['merge'](_0x265c7a[_0x2895('0x41')],{'$or':_[_0x2895('0x32')](_0x265c7a['attributes'],function(_0x1cf787){var _0x3c8ea2={};_0x3c8ea2[_0x1cf787]={'$like':'%'+_0x3ae81f[_0x2895('0x36')][_0x2895('0x40')]+'%'};return _0x3c8ea2;})});}_0x265c7a=_[_0x2895('0x42')]({},_0x265c7a,_0x3ae81f[_0x2895('0x43')]);return _0x3d2996[_0x2895('0x75')](_0x265c7a);}})[_0x2895('0x26')](function(_0xdbd16a){if(_0xdbd16a){_0x3d47d0=_0xdbd16a[_0x2895('0x39')];if(!_0x3ae81f[_0x2895('0x36')][_0x2895('0x3b')](_0x2895('0x3c'))){_0x265c7a[_0x2895('0x1f')]=qs['limit'](_0x3ae81f[_0x2895('0x36')][_0x2895('0x1f')]);_0x265c7a[_0x2895('0x1d')]=qs[_0x2895('0x1d')](_0x3ae81f[_0x2895('0x36')][_0x2895('0x1d')]);}return _0x3d2996[_0x2895('0x75')](_0x265c7a);}})['then'](function(_0x17055a){if(_0x17055a){return _0x17055a?{'count':_0x3d47d0,'rows':_0x17055a}:null;}})['then'](respondWithResult(_0x25f5c9,null))[_0x2895('0x47')](handleError(_0x25f5c9,null));};exports['addTeams']=function(_0x204af3,_0x3e2994,_0x1e85d9){var _0x53ccff=_0x204af3[_0x2895('0x4e')]['ids'];var _0x3f024f;return db[_0x2895('0x76')][_0x2895('0x77')]({'where':{'id':_0x53ccff},'attributes':['id'],'include':[{'model':db[_0x2895('0x74')],'as':_0x2895('0x78'),'attributes':['id',_0x2895('0x2b'),_0x2895('0x79'),'voicePause',_0x2895('0x7a')],'raw':!![]}]})[_0x2895('0x26')](function(_0x1b8f32){if(_0x1b8f32){_0x3f024f=_0x1b8f32;var _0x4b7c11=_['flatMap'](_0x1b8f32,function(_0x335da0){var _0x13e113=_0x335da0[_0x2895('0x4f')]({'plain':!![]});return _0x13e113['Agents'];});return db[_0x2895('0x2e')][_0x2895('0x49')]({'where':{'id':_0x204af3[_0x2895('0x48')]['id']}})[_0x2895('0x26')](function(_0x1dcc85){return db[_0x2895('0x4c')][_0x2895('0x4d')](function(_0x2d6109){return _0x1dcc85[_0x2895('0x7b')](_0x53ccff,{'transaction':_0x2d6109})[_0x2895('0x26')](function(){return BPromise[_0x2895('0x7c')](_0x3f024f,function(_0x16ec29){return db[_0x2895('0x7d')][_0x2895('0x7e')]({'TeamId':_0x16ec29['id'],'VoicePrefixId':_0x204af3[_0x2895('0x48')]['id']},{'transaction':_0x2d6109});});})[_0x2895('0x26')](function(){return BPromise[_0x2895('0x7c')](_0x4b7c11,function(_0x2c6df4){return db[_0x2895('0x7f')]['findOrCreate']({'where':{'UserId':_0x2c6df4['id'],'VoicePrefixId':_0x204af3['params']['id']},'transaction':_0x2d6109});});})[_0x2895('0x26')](function(){_0x4b7c11[_0x2895('0x80')](function(_0x366ca5){socket[_0x2895('0x6d')](_0x2895('0x6e'),{'UserId':_0x366ca5['id'],'VoicePrefixId':_0x1dcc85['id']});});});});});}})[_0x2895('0x26')](respondWithStatusCode(_0x3e2994,null))['catch'](handleError(_0x3e2994,null));};exports['removeTeams']=function(_0x51b96a,_0x40d48c,_0x4f0b85){return db[_0x2895('0x76')][_0x2895('0x77')]({'where':{'id':_0x51b96a[_0x2895('0x36')]['ids']},'attributes':['id'],'include':[{'model':db[_0x2895('0x74')],'as':_0x2895('0x78'),'attributes':['id'],'raw':!![]}]})[_0x2895('0x26')](handleEntityNotFound(_0x40d48c,null))['then'](function(_0x340cb7){var _0x2458f1=_[_0x2895('0x32')](_0x340cb7,'id');var _0x2e3651=[];var _0x2187ce=[];var _0x175202=squel[_0x2895('0x81')]();_0x175202[_0x2895('0x82')]('tq.TeamId')[_0x2895('0x83')](_0x2895('0x84'),'tq')[_0x2895('0x85')](_0x2895('0x86'),'ut','ut.TeamId\x20=\x20tq.TeamId')['where'](_0x2895('0x87'),_0x51b96a[_0x2895('0x48')]['id']);for(var _0x53eef2=0x0;_0x53eef2<_0x340cb7[_0x2895('0x39')];_0x53eef2+=0x1){let _0x1e2311=_0x340cb7[_0x53eef2];for(var _0x368a30=0x0;_0x368a30<_0x1e2311['Agents'][_0x2895('0x39')];_0x368a30+=0x1){let _0x2dd3d9=_0x1e2311[_0x2895('0x78')][_0x368a30];var _0x233136=_0x175202['clone']();_0x233136[_0x2895('0x41')]('ut.UserId\x20=\x20?',_0x2dd3d9['id']);_0x2187ce['push'](db['sequelize'][_0x2895('0x36')](_0x233136['toString'](),{'type':db['sequelize']['QueryTypes']['SELECT']})['then'](function(_0x2bbb3e){if(_0x2bbb3e[_0x2895('0x39')]===0x1){return _0x2dd3d9['id'];}else{var _0x25969b=_[_0x2895('0x88')](_['map'](_0x2bbb3e,'TeamId'),function(_0x5cc9fc){return _[_0x2895('0x89')](_0x2458f1,_0x5cc9fc);});if(_0x25969b){return _0x2dd3d9['id'];}}}));}}return BPromise[_0x2895('0x8a')](_0x2187ce)[_0x2895('0x26')](function(_0x2ccc9f){_0x2e3651=_(_0x2e3651)[_0x2895('0x8b')](_0x2ccc9f)[_0x2895('0x8c')]()[_0x2895('0x8d')]();return db[_0x2895('0x2e')]['find']({'where':{'id':_0x51b96a[_0x2895('0x48')]['id']}})[_0x2895('0x26')](function(_0x16f74a){return db['sequelize'][_0x2895('0x4d')](function(_0x5d05d3){return _0x16f74a[_0x2895('0x8e')](_0x51b96a[_0x2895('0x36')][_0x2895('0x6b')],{'transaction':_0x5d05d3})[_0x2895('0x26')](function(){if(!_['isEmpty'](_0x2e3651)){return _0x16f74a[_0x2895('0x6f')](_0x2e3651,{'transaction':_0x5d05d3});}})[_0x2895('0x26')](function(){_0x2e3651[_0x2895('0x80')](function(_0x3fb18a){socket[_0x2895('0x6d')]('userVoicePrefix:remove',{'UserId':_0x3fb18a,'VoicePrefixId':_0x16f74a['id']});});});});});});})[_0x2895('0x26')](respondWithStatusCode(_0x40d48c,null))[_0x2895('0x47')](handleError(_0x40d48c,null));};
\ No newline at end of file
index 18a1e54..23fdf7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb49=['hasOwnProperty','hook','events','../../mysqldb','VoicePrefix','setMaxListeners','save','update','remove','emit'];(function(_0x2c7618,_0x26be9c){var _0x5ce3f0=function(_0x1837b3){while(--_0x1837b3){_0x2c7618['push'](_0x2c7618['shift']());}};_0x5ce3f0(++_0x26be9c);}(_0xcb49,0x66));var _0x9cb4=function(_0x291aaf,_0x4c6d8d){_0x291aaf=_0x291aaf-0x0;var _0x5571e6=_0xcb49[_0x291aaf];return _0x5571e6;};'use strict';var EventEmitter=require(_0x9cb4('0x0'));var VoicePrefix=require(_0x9cb4('0x1'))['db'][_0x9cb4('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x9cb4('0x3')](0x0);var events={'afterCreate':_0x9cb4('0x4'),'afterUpdate':_0x9cb4('0x5'),'afterDestroy':_0x9cb4('0x6')};function emitEvent(_0x4753fb){return function(_0x2732c8,_0x598fea,_0x32bb46){VoicePrefixEvents[_0x9cb4('0x7')](_0x4753fb+':'+_0x2732c8['id'],_0x2732c8);VoicePrefixEvents[_0x9cb4('0x7')](_0x4753fb,_0x2732c8);_0x32bb46(null);};}for(var e in events){if(events[_0x9cb4('0x8')](e)){var event=events[e];VoicePrefix[_0x9cb4('0x9')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
+var _0xdef4=['hook','VoicePrefix','setMaxListeners','save','update','remove','emit'];(function(_0x29e4f0,_0x1199ff){var _0x435aa7=function(_0x3088d7){while(--_0x3088d7){_0x29e4f0['push'](_0x29e4f0['shift']());}};_0x435aa7(++_0x1199ff);}(_0xdef4,0x17b));var _0x4def=function(_0x3dea7d,_0x2cd4ea){_0x3dea7d=_0x3dea7d-0x0;var _0x53919a=_0xdef4[_0x3dea7d];return _0x53919a;};'use strict';var EventEmitter=require('events');var VoicePrefix=require('../../mysqldb')['db'][_0x4def('0x0')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0x4def('0x1')](0x0);var events={'afterCreate':_0x4def('0x2'),'afterUpdate':_0x4def('0x3'),'afterDestroy':_0x4def('0x4')};function emitEvent(_0x2ac5b2){return function(_0xa3889c,_0x3d3979,_0x32ab4d){VoicePrefixEvents['emit'](_0x2ac5b2+':'+_0xa3889c['id'],_0xa3889c);VoicePrefixEvents[_0x4def('0x5')](_0x2ac5b2,_0xa3889c);_0x32ab4d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoicePrefix[_0x4def('0x6')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index a88a2d3..6dd3a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e45=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','voice_prefixes'];(function(_0x184b14,_0xe302d7){var _0xe118d6=function(_0x1328cf){while(--_0x1328cf){_0x184b14['push'](_0x184b14['shift']());}};_0xe118d6(++_0xe302d7);}(_0x5e45,0x18c));var _0x55e4=function(_0x55af57,_0x5705f0){_0x55af57=_0x55af57-0x0;var _0x848ee0=_0x5e45[_0x55af57];return _0x848ee0;};'use strict';var _=require(_0x55e4('0x0'));var util=require(_0x55e4('0x1'));var logger=require(_0x55e4('0x2'))(_0x55e4('0x3'));var moment=require(_0x55e4('0x4'));var BPromise=require(_0x55e4('0x5'));var rp=require(_0x55e4('0x6'));var fs=require('fs');var path=require(_0x55e4('0x7'));var rimraf=require(_0x55e4('0x8'));var config=require(_0x55e4('0x9'));var attributes=require('./voicePrefix.attributes');module[_0x55e4('0xa')]=function(_0x107026,_0x19ef79){return _0x107026['define']('VoicePrefix',attributes,{'tableName':_0x55e4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb4f0=['rimraf','./voicePrefix.attributes','exports','define','lodash','util','../../config/logger','api','bluebird','request-promise','path'];(function(_0x3e2167,_0x28fdbe){var _0x592f32=function(_0x6c3172){while(--_0x6c3172){_0x3e2167['push'](_0x3e2167['shift']());}};_0x592f32(++_0x28fdbe);}(_0xb4f0,0xd5));var _0x0b4f=function(_0x4a3898,_0x4c9853){_0x4a3898=_0x4a3898-0x0;var _0x25ceb0=_0xb4f0[_0x4a3898];return _0x25ceb0;};'use strict';var _=require(_0x0b4f('0x0'));var util=require(_0x0b4f('0x1'));var logger=require(_0x0b4f('0x2'))(_0x0b4f('0x3'));var moment=require('moment');var BPromise=require(_0x0b4f('0x4'));var rp=require(_0x0b4f('0x5'));var fs=require('fs');var path=require(_0x0b4f('0x6'));var rimraf=require(_0x0b4f('0x7'));var config=require('../../config/environment');var attributes=require(_0x0b4f('0x8'));module[_0x0b4f('0x9')]=function(_0x204521,_0x51177e){return _0x204521[_0x0b4f('0xa')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4158abd..b0889f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a85=['catch','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','http','defaults','redis','socket.io-emitter','register','request','then','info','VoicePrefix,\x20%s,\x20%s','request\x20sent','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x897bdc,_0x309e3e){var _0x53dc75=function(_0x4f8e09){while(--_0x4f8e09){_0x897bdc['push'](_0x897bdc['shift']());}};_0x53dc75(++_0x309e3e);}(_0x1a85,0x178));var _0x51a8=function(_0x40bfc2,_0x538e26){_0x40bfc2=_0x40bfc2-0x0;var _0x14d1db=_0x1a85[_0x40bfc2];return _0x14d1db;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x51a8('0x0'));var BPromise=require(_0x51a8('0x1'));var rs=require(_0x51a8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x51a8('0x3'));var logger=require(_0x51a8('0x4'))(_0x51a8('0x5'));var config=require('../../config/environment');var jayson=require(_0x51a8('0x6'));var client=jayson['client'][_0x51a8('0x7')]({'port':0x232a});config['redis']=_[_0x51a8('0x8')](config[_0x51a8('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0x51a8('0xa'))(new Redis(config['redis']));require('./voicePrefix.socket')[_0x51a8('0xb')](socket);function respondWithRpcPromise(_0x2f276b,_0x1a476d,_0x45a3f4){return new BPromise(function(_0x418f06,_0x421fa4){return client[_0x51a8('0xc')](_0x2f276b,_0x45a3f4)[_0x51a8('0xd')](function(_0x34c887){logger[_0x51a8('0xe')](_0x51a8('0xf'),_0x1a476d,_0x51a8('0x10'));logger[_0x51a8('0x11')](_0x51a8('0x12'),_0x1a476d,_0x51a8('0x10'),JSON[_0x51a8('0x13')](_0x34c887));if(_0x34c887[_0x51a8('0x14')]){if(_0x34c887['error'][_0x51a8('0x15')]===0x1f4){logger[_0x51a8('0x14')](_0x51a8('0xf'),_0x1a476d,_0x34c887['error'][_0x51a8('0x16')]);return _0x421fa4(_0x34c887['error'][_0x51a8('0x16')]);}logger[_0x51a8('0x14')](_0x51a8('0xf'),_0x1a476d,_0x34c887[_0x51a8('0x14')][_0x51a8('0x16')]);return _0x418f06(_0x34c887[_0x51a8('0x14')][_0x51a8('0x16')]);}else{logger['info'](_0x51a8('0xf'),_0x1a476d,_0x51a8('0x10'));_0x418f06(_0x34c887[_0x51a8('0x17')][_0x51a8('0x16')]);}})[_0x51a8('0x18')](function(_0x544886){logger['error'](_0x51a8('0xf'),_0x1a476d,_0x544886);_0x421fa4(_0x544886);});});}
\ No newline at end of file
+var _0x9f0e=['../../config/environment','jayson/promise','redis','defaults','socket.io-emitter','./voicePrefix.socket','register','then','info','request\x20sent','VoicePrefix,\x20%s,\x20%s,\x20%s','stringify','error','code','VoicePrefix,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x315f3d,_0x593f5d){var _0x1dfd5e=function(_0x565fe7){while(--_0x565fe7){_0x315f3d['push'](_0x315f3d['shift']());}};_0x1dfd5e(++_0x593f5d);}(_0x9f0e,0x116));var _0xe9f0=function(_0x1665ea,_0xef41bc){_0x1665ea=_0x1665ea-0x0;var _0x153939=_0x9f0e[_0x1665ea];return _0x153939;};'use strict';var _=require(_0xe9f0('0x0'));var util=require(_0xe9f0('0x1'));var moment=require(_0xe9f0('0x2'));var BPromise=require(_0xe9f0('0x3'));var rs=require(_0xe9f0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xe9f0('0x5'));var logger=require(_0xe9f0('0x6'))(_0xe9f0('0x7'));var config=require(_0xe9f0('0x8'));var jayson=require(_0xe9f0('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xe9f0('0xa')]=_[_0xe9f0('0xb')](config[_0xe9f0('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xe9f0('0xc'))(new Redis(config[_0xe9f0('0xa')]));require(_0xe9f0('0xd'))[_0xe9f0('0xe')](socket);function respondWithRpcPromise(_0xa523c0,_0x240932,_0x807322){return new BPromise(function(_0x3724f4,_0x6acfb){return client['request'](_0xa523c0,_0x807322)[_0xe9f0('0xf')](function(_0x329ecd){logger[_0xe9f0('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x240932,_0xe9f0('0x11'));logger['debug'](_0xe9f0('0x12'),_0x240932,_0xe9f0('0x11'),JSON[_0xe9f0('0x13')](_0x329ecd));if(_0x329ecd[_0xe9f0('0x14')]){if(_0x329ecd['error'][_0xe9f0('0x15')]===0x1f4){logger['error'](_0xe9f0('0x16'),_0x240932,_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);return _0x6acfb(_0x329ecd['error'][_0xe9f0('0x17')]);}logger[_0xe9f0('0x14')](_0xe9f0('0x16'),_0x240932,_0x329ecd['error'][_0xe9f0('0x17')]);return _0x3724f4(_0x329ecd[_0xe9f0('0x14')][_0xe9f0('0x17')]);}else{logger[_0xe9f0('0x10')](_0xe9f0('0x16'),_0x240932,_0xe9f0('0x11'));_0x3724f4(_0x329ecd[_0xe9f0('0x18')]['message']);}})[_0xe9f0('0x19')](function(_0x19e090){logger[_0xe9f0('0x14')]('VoicePrefix,\x20%s,\x20%s',_0x240932,_0x19e090);_0x6acfb(_0x19e090);});});}
\ No newline at end of file
index 71c008c..f8022c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa900=['length','./voicePrefix.events','save','remove','update','emit','removeListener','register'];(function(_0x7e3995,_0x4c57ac){var _0x21ba44=function(_0x475532){while(--_0x475532){_0x7e3995['push'](_0x7e3995['shift']());}};_0x21ba44(++_0x4c57ac);}(_0xa900,0x101));var _0x0a90=function(_0x476031,_0x41aef3){_0x476031=_0x476031-0x0;var _0x4950fb=_0xa900[_0x476031];return _0x4950fb;};'use strict';var VoicePrefixEvents=require(_0x0a90('0x0'));var events=[_0x0a90('0x1'),_0x0a90('0x2'),_0x0a90('0x3')];function createListener(_0x2a9b60,_0x4e133b){return function(_0x55f0b7){_0x4e133b[_0x0a90('0x4')](_0x2a9b60,_0x55f0b7);};}function removeListener(_0x5872bf,_0x4f5b00){return function(){VoicePrefixEvents[_0x0a90('0x5')](_0x5872bf,_0x4f5b00);};}exports[_0x0a90('0x6')]=function(_0x461b32){for(var _0x34ee43=0x0,_0x56a1e5=events[_0x0a90('0x7')];_0x34ee43<_0x56a1e5;_0x34ee43++){var _0x4718e9=events[_0x34ee43];var _0x33e3cf=createListener('voicePrefix:'+_0x4718e9,_0x461b32);VoicePrefixEvents['on'](_0x4718e9,_0x33e3cf);}};
\ No newline at end of file
+var _0x0531=['emit','removeListener','register','length','voicePrefix:','./voicePrefix.events','save'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0531,0xde));var _0x1053=function(_0x12c280,_0x51dd07){_0x12c280=_0x12c280-0x0;var _0x3638d3=_0x0531[_0x12c280];return _0x3638d3;};'use strict';var VoicePrefixEvents=require(_0x1053('0x0'));var events=[_0x1053('0x1'),'remove','update'];function createListener(_0x450b81,_0x48bca0){return function(_0x5ced96){_0x48bca0[_0x1053('0x2')](_0x450b81,_0x5ced96);};}function removeListener(_0x117b5a,_0x12d7ea){return function(){VoicePrefixEvents[_0x1053('0x3')](_0x117b5a,_0x12d7ea);};}exports[_0x1053('0x4')]=function(_0x5d8ce2){for(var _0x29e7cd=0x0,_0x3350a0=events[_0x1053('0x5')];_0x29e7cd<_0x3350a0;_0x29e7cd++){var _0x3d052e=events[_0x29e7cd];var _0x4f1877=createListener(_0x1053('0x6')+_0x3d052e,_0x5d8ce2);VoicePrefixEvents['on'](_0x3d052e,_0x4f1877);}};
\ No newline at end of file
index e924480..072d3b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','isAuthenticated','show','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperBlacks','/:id/teams','getTeams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','/:id/blacklists','getBlackLists','post','create','/:id/clone','addTeams','addAgents','addLists','addBlackLists','put','/:id','update','delete','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','path','connect-timeout'];(function(_0x223c0d,_0x3ec04d){var _0x207827=function(_0x39d240){while(--_0x39d240){_0x223c0d['push'](_0x223c0d['shift']());}};_0x207827(++_0x3ec04d);}(_0xb10b,0x12a));var _0xbb10=function(_0x3388d8,_0x256024){_0x3388d8=_0x3388d8-0x0;var _0x2bbe73=_0xb10b[_0x3388d8];return _0x2bbe73;};'use strict';var multer=require(_0xbb10('0x0'));var util=require('util');var path=require(_0xbb10('0x1'));var timeout=require(_0xbb10('0x2'));var express=require(_0xbb10('0x3'));var router=express['Router']();var fs_extra=require(_0xbb10('0x4'));var auth=require(_0xbb10('0x5'));var interaction=require(_0xbb10('0x6'));var config=require(_0xbb10('0x7'));var controller=require(_0xbb10('0x8'));router[_0xbb10('0x9')]('/',auth['isAuthenticated'](),controller[_0xbb10('0xa')]);router[_0xbb10('0x9')]('/:id',auth[_0xbb10('0xb')](),controller[_0xbb10('0xc')]);router[_0xbb10('0x9')](_0xbb10('0xd'),auth[_0xbb10('0xb')](),controller[_0xbb10('0xe')]);router[_0xbb10('0x9')](_0xbb10('0xf'),auth['isAuthenticated'](),controller['getHopperHistories']);router[_0xbb10('0x9')](_0xbb10('0x10'),auth[_0xbb10('0xb')](),controller['getHopperFinals']);router[_0xbb10('0x9')]('/:id/hopper_black',auth[_0xbb10('0xb')](),controller[_0xbb10('0x11')]);router[_0xbb10('0x9')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x13')]);router['get'](_0xbb10('0x14'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x15')]);router[_0xbb10('0x9')](_0xbb10('0x16'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x17')]);router[_0xbb10('0x9')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller['getLists']);router[_0xbb10('0x9')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1a')]);router[_0xbb10('0x1b')]('/',auth[_0xbb10('0xb')](),controller[_0xbb10('0x1c')]);router[_0xbb10('0x1b')](_0xbb10('0x1d'),auth[_0xbb10('0xb')](),controller['clone']);router[_0xbb10('0x1b')](_0xbb10('0x12'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x1e')]);router[_0xbb10('0x1b')](_0xbb10('0x14'),auth['isAuthenticated'](),controller[_0xbb10('0x1f')]);router[_0xbb10('0x1b')]('/:id/lists',auth['isAuthenticated'](),controller[_0xbb10('0x20')]);router[_0xbb10('0x1b')](_0xbb10('0x19'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x21')]);router[_0xbb10('0x22')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x24')]);router[_0xbb10('0x25')](_0xbb10('0x23'),auth[_0xbb10('0xb')](),controller['destroy']);router['delete']('/:id/teams',auth[_0xbb10('0xb')](),controller[_0xbb10('0x26')]);router[_0xbb10('0x25')]('/:id/users',auth[_0xbb10('0xb')](),controller[_0xbb10('0x27')]);router[_0xbb10('0x25')](_0xbb10('0x18'),auth[_0xbb10('0xb')](),controller[_0xbb10('0x28')]);router[_0xbb10('0x25')]('/:id/blacklists',auth[_0xbb10('0xb')](),controller[_0xbb10('0x29')]);module[_0xbb10('0x2a')]=router;
\ No newline at end of file
+var _0xa9e0=['addAgents','/:id/blacklists','addBlackLists','update','delete','destroy','removeTeams','removeAgents','removeLists','removeBlackLists','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceQueue.controller','get','index','/:id','getHoppers','/:id/hopper_histories','isAuthenticated','getHopperHistories','/:id/hopper_black','getHopperBlacks','/:id/teams','/:id/users','getAgents','/:id/members','getMembers','/:id/lists','getLists','post','create','/:id/clone','clone','addTeams'];(function(_0x56eb70,_0x2bd75c){var _0x47f1fe=function(_0x1fbb17){while(--_0x1fbb17){_0x56eb70['push'](_0x56eb70['shift']());}};_0x47f1fe(++_0x2bd75c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'use strict';var multer=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0a9e('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x0a9e('0x4'));var interaction=require(_0x0a9e('0x5'));var config=require(_0x0a9e('0x6'));var controller=require(_0x0a9e('0x7'));router[_0x0a9e('0x8')]('/',auth['isAuthenticated'](),controller[_0x0a9e('0x9')]);router[_0x0a9e('0x8')](_0x0a9e('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x0a9e('0x8')]('/:id/hoppers',auth['isAuthenticated'](),controller[_0x0a9e('0xb')]);router[_0x0a9e('0x8')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0xe')]);router[_0x0a9e('0x8')]('/:id/hopper_finals',auth['isAuthenticated'](),controller['getHopperFinals']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getTeams']);router[_0x0a9e('0x8')](_0x0a9e('0x12'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);router[_0x0a9e('0x8')](_0x0a9e('0x14'),auth['isAuthenticated'](),controller[_0x0a9e('0x15')]);router['get'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x17')]);router[_0x0a9e('0x8')]('/:id/blacklists',auth[_0x0a9e('0xd')](),controller['getBlackLists']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/users',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller['addLists']);router[_0x0a9e('0x18')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1f')]);router['put'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);router[_0x0a9e('0x21')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x22')]);router['delete']('/:id/teams',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x23')]);router[_0x0a9e('0x21')](_0x0a9e('0x12'),auth['isAuthenticated'](),controller[_0x0a9e('0x24')]);router['delete'](_0x0a9e('0x16'),auth['isAuthenticated'](),controller[_0x0a9e('0x25')]);router[_0x0a9e('0x21')](_0x0a9e('0x1e'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x26')]);module[_0x0a9e('0x27')]=router;
\ No newline at end of file
index 2b71d5d..d39d7ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3855=['Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Abandoned\x20Retry\x20(min:1,\x20max:999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','inbound','outbound','default','ringall','leastrecent','fewestcalls','random','rrmemory','linear','wrandom','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','predictive','power','INTEGER','yes','ENUM','once','TEXT','periodic_announce','split','joinempty','leavewhenempty','join','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','progressive','Dial\x20Method.','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','agentBusyFactor','dropRate','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'];(function(_0x193634,_0x2484e7){var _0x31a11b=function(_0x72f1a1){while(--_0x72f1a1){_0x193634['push'](_0x193634['shift']());}};_0x31a11b(++_0x2484e7);}(_0x3855,0x1b6));var _0x5385=function(_0x57f419,_0x3a81e1){_0x57f419=_0x57f419-0x0;var _0x55e76a=_0x3855[_0x57f419];return _0x55e76a;};'use strict';var Sequelize=require(_0x5385('0x0'));module[_0x5385('0x1')]={'name':{'type':Sequelize[_0x5385('0x2')],'allowNull':![],'unique':_0x5385('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0x5385('0x4'),_0x5385('0x5')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x5385('0x2')],'defaultValue':_0x5385('0x6')},'announce':{'type':Sequelize[_0x5385('0x2')],'defaultValue':''},'strategy':{'type':Sequelize['ENUM']('rr',_0x5385('0x7'),_0x5385('0x8'),_0x5385('0x9'),_0x5385('0xa'),_0x5385('0xb'),_0x5385('0xc'),_0x5385('0xd'),'rrordered'),'allowNull':![],'defaultValue':_0x5385('0x7'),'set':function(_0x1fc85c){this[_0x5385('0xe')](_0x5385('0xf'),_0x1fc85c?_0x1fc85c:_0x5385('0xb'));},'get':function(){var _0x268f3d=this[_0x5385('0x10')](_0x5385('0x11'));var _0x4f53e0=this[_0x5385('0x10')](_0x5385('0x12'));var _0x4a5f07=this[_0x5385('0x10')]('strategy');if(_0x268f3d===_0x5385('0x4')){return _0x4a5f07;}if(_0x4f53e0===_0x5385('0x13')&&_0x4a5f07==='rrmemory'||_0x4f53e0===_0x5385('0x13')&&_0x4a5f07===_0x5385('0x14')){return _0x4a5f07;}if(_0x4f53e0==='progressive'||_0x4f53e0===_0x5385('0x15')||_0x4f53e0===_0x5385('0x16')){return _0x4a5f07;}return null;}},'servicelevel':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x5385('0x17')](0xb)},'timeout':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0x5385('0x17')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no'),'defaultValue':_0x5385('0x18')},'autopause':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x5385('0x17')](0xb)},'autopausebusy':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x5385('0x19')]('yes','no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x5385('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no',_0x5385('0x1a')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0x5385('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x5385('0x19')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x5385('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize['STRING'],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize['STRING'],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0x5385('0x2')]},'queue_quantity1':{'type':Sequelize[_0x5385('0x2')]},'queue_quantity2':{'type':Sequelize[_0x5385('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x5385('0x2')]},'queue_less_than':{'type':Sequelize[_0x5385('0x2')]},'periodic_announce':{'type':Sequelize[_0x5385('0x1b')],'set':function(_0xadb5c4){this[_0x5385('0xe')](_0x5385('0x1c'),_0xadb5c4?_0xadb5c4['join'](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this[_0x5385('0x10')]('periodic_announce')[_0x5385('0x1d')](','):[];}},'joinempty':{'type':Sequelize[_0x5385('0x2')],'defaultValue':_0x5385('0x18'),'set':function(_0x1d963e){this[_0x5385('0xe')](_0x5385('0x1e'),_0x1d963e?_0x1d963e['join'](','):undefined);},'get':function(){return this[_0x5385('0x10')](_0x5385('0x1e'))?this[_0x5385('0x10')]('joinempty')[_0x5385('0x1d')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x5385('0x2')],'defaultValue':'no','set':function(_0x54402a){this[_0x5385('0xe')](_0x5385('0x1f'),_0x54402a?_0x54402a[_0x5385('0x20')](','):undefined);},'get':function(){return this[_0x5385('0x10')](_0x5385('0x1f'))?this['getDataValue'](_0x5385('0x1f'))[_0x5385('0x1d')](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x5385('0x18'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x18'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x5385('0x2')]},'description':{'type':Sequelize[_0x5385('0x2')]},'acw':{'type':Sequelize[_0x5385('0x21')],'defaultValue':0x0,'set':function(_0x625ce8){this['setDataValue']('acw',_0x625ce8);if(_0x625ce8){if(this['getDataValue']('wrapuptime')<0x2){this[_0x5385('0xe')](_0x5385('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0x5385('0x17')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x5385('0x23')},'dialMethod':{'type':Sequelize[_0x5385('0x19')]('preview',_0x5385('0x24'),_0x5385('0x16'),_0x5385('0x15'),'booked'),'defaultValue':_0x5385('0x24'),'comment':_0x5385('0x25')},'dialLimitChannel':{'type':Sequelize['INTEGER'](0x4)[_0x5385('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5385('0x27')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0x5385('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x5385('0x28')},'dialPowerLevel':{'type':Sequelize[_0x5385('0x29')](0x2)[_0x5385('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM'](_0x5385('0x2a'),_0x5385('0x2b')),'defaultValue':_0x5385('0x2b'),'comment':'Only\x20for\x20predictive\x20method.'},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x5385('0x29')](0x2)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x5385('0x2c')},'dialPredictiveInterval':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x5385('0x2d')},'dialOriginateCallerIdName':{'type':Sequelize['STRING']},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5385('0x2')]},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0x5385('0x26')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize[_0x5385('0x2')],'defaultValue':_0x5385('0x2e'),'comment':_0x5385('0x2f')},'dialQueueTimeout':{'type':Sequelize[_0x5385('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5385('0x30')},'dialQueueProject':{'type':Sequelize[_0x5385('0x2')],'comment':'AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)'},'dialCongestionMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5385('0x31')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x32')},'dialBusyMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5385('0x33')},'dialBusyRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x34')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'comment':_0x5385('0x35')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialGlobalMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5385('0x36')},'dialTimezone':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5385('0x2')],'defaultValue':_0x5385('0x37')},'dialPrefix':{'type':Sequelize[_0x5385('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0x5385('0x38'),_0x5385('0x39'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x5385('0x21')],'defaultValue':0x0,'comment':_0x5385('0x3a')},'dialAMDInitialSilence':{'type':Sequelize[_0x5385('0x17')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x5385('0x3b')},'dialAMDGreeting':{'type':Sequelize[_0x5385('0x17')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x5385('0x3c')},'dialAMDAfterGreetingSilence':{'type':Sequelize['INTEGER'](0x9)[_0x5385('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x5385('0x3d')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5385('0x17')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x5385('0x17')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x5385('0x3e')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5385('0x17')](0x9)[_0x5385('0x26')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x5385('0x3f')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5385('0x17')](0x9)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5385('0x17')](0x5)[_0x5385('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':'#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)'},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0x5385('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5385('0x40')},'dialRecallMeTimeout':{'type':Sequelize[_0x5385('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x5385('0x41')},'dialRecallInQueue':{'type':Sequelize[_0x5385('0x21')],'defaultValue':0x0,'comment':_0x5385('0x42')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5385('0x19')](_0x5385('0x43'),'ASC'),'defaultValue':_0x5385('0x43')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x5385('0x44')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x5385('0x21')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x5385('0x21')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5385('0x45')},'dialCutDigit':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5385('0x46')},'dialNoSuchNumberMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5385('0x47')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x5385('0x17')](0x5)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x48')},'dialDropMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x5385('0x17')](0x5)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5385('0x4a')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x4b')},'dialMachineMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Machine\x20Retry\x20(min:1,\x20max:999)'},'dialMachineRetryFrequency':{'type':Sequelize[_0x5385('0x17')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5385('0x17')](0x5)[_0x5385('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5385('0x4d')},'mandatoryDispositionPauseId':{'type':Sequelize[_0x5385('0x17')],'allowNull':!![],'comment':_0x5385('0x4e')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x18094f){if(!_0x18094f)this[_0x5385('0xe')](_0x5385('0x4f'),null);this['setDataValue'](_0x5385('0x50'),_0x18094f);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x5385('0x17')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x5385('0x21')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x5385('0x17')](0x3)[_0x5385('0x26')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x5385('0x21')],'defaultValue':![]}};
\ No newline at end of file
+var _0x04b6=['Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#NoAnswer\x20Retry\x20(min:1,\x20max:999)','NoAnswer\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Global\x20Max\x20Retry\x20(min:1,\x20max:999)','07:00-22:00,*,*,*','always','never','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)','Active/Disactive\x20Recall\x20In\x20Queue','DESC','ASC','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Drop\x20Retry\x20(min:1,\x20max:999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Machine\x20Retry\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','sequelize','exports','STRING','name','outbound','ENUM','leastrecent','fewestcalls','random','rrmemory','linear','setDataValue','strategy','getDataValue','inbound','booked','roundrobin','predictive','power','INTEGER','yes','all','once','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','BOOLEAN','wrapuptime','Active/Disactive\x20Campaign','preview','progressive','UNSIGNED','Max\x209999\x20channels,\x200\x20means\x20unlimited.','Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.','FLOAT','dropRate','Only\x20for\x20predictive\x20method.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','tTxX','https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue','Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','AGI\x20queue\x20option\x20(use:\x20agi://127.0.0.1/square,<project_name>)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)'];(function(_0x12fcbd,_0x884804){var _0x28ec2a=function(_0xa5ff99){while(--_0xa5ff99){_0x12fcbd['push'](_0x12fcbd['shift']());}};_0x28ec2a(++_0x884804);}(_0x04b6,0x169));var _0x604b=function(_0x287a47,_0x2f731c){_0x287a47=_0x287a47-0x0;var _0x3fb726=_0x04b6[_0x287a47];return _0x3fb726;};'use strict';var Sequelize=require(_0x604b('0x0'));module[_0x604b('0x1')]={'name':{'type':Sequelize[_0x604b('0x2')],'allowNull':![],'unique':_0x604b('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0x604b('0x4')),'allowNull':![],'defaultValue':'inbound'},'musiconhold':{'type':Sequelize[_0x604b('0x2')],'defaultValue':'default'},'announce':{'type':Sequelize[_0x604b('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0x604b('0x5')]('rr','ringall',_0x604b('0x6'),_0x604b('0x7'),_0x604b('0x8'),_0x604b('0x9'),_0x604b('0xa'),'wrandom','rrordered'),'allowNull':![],'defaultValue':'ringall','set':function(_0x132587){this[_0x604b('0xb')](_0x604b('0xc'),_0x132587?_0x132587:_0x604b('0x9'));},'get':function(){var _0x2868aa=this[_0x604b('0xd')]('type');var _0x5b6050=this['getDataValue']('dialMethod');var _0x3795dd=this[_0x604b('0xd')]('strategy');if(_0x2868aa===_0x604b('0xe')){return _0x3795dd;}if(_0x5b6050===_0x604b('0xf')&&_0x3795dd===_0x604b('0x9')||_0x5b6050==='booked'&&_0x3795dd===_0x604b('0x10')){return _0x3795dd;}if(_0x5b6050==='progressive'||_0x5b6050===_0x604b('0x11')||_0x5b6050===_0x604b('0x12')){return _0x3795dd;}return null;}},'servicelevel':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize[_0x604b('0x13')](0xb)},'timeout':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0x604b('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':_0x604b('0x14')},'autopause':{'type':Sequelize['ENUM']('yes','no',_0x604b('0x15')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0x604b('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0x604b('0x5')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0x604b('0x5')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0x604b('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no',_0x604b('0x16')),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no')},'announce_position_limit':{'type':Sequelize[_0x604b('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize[_0x604b('0x5')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0x604b('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0x604b('0x2')]},'queue_youarenext':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0x604b('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'queue_reporthold':{'type':Sequelize['STRING']},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0x604b('0x2')]},'queue_periodic_announce':{'type':Sequelize[_0x604b('0x2')]},'queue_less_than':{'type':Sequelize[_0x604b('0x2')]},'periodic_announce':{'type':Sequelize[_0x604b('0x17')],'set':function(_0x413d0c){this[_0x604b('0xb')](_0x604b('0x18'),_0x413d0c?_0x413d0c[_0x604b('0x19')](','):[]);},'get':function(){return this[_0x604b('0xd')](_0x604b('0x18'))?this[_0x604b('0xd')]('periodic_announce')[_0x604b('0x1a')](','):[];}},'joinempty':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x14'),'set':function(_0x1850e5){this[_0x604b('0xb')](_0x604b('0x1b'),_0x1850e5?_0x1850e5['join'](','):undefined);},'get':function(){return this[_0x604b('0xd')]('joinempty')?this[_0x604b('0xd')](_0x604b('0x1b'))[_0x604b('0x1a')](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0x604b('0x2')],'defaultValue':'no','set':function(_0x122c2f){this[_0x604b('0xb')]('leavewhenempty',_0x122c2f?_0x122c2f['join'](','):undefined);},'get':function(){return this[_0x604b('0xd')](_0x604b('0x1c'))?this[_0x604b('0xd')]('leavewhenempty')['split'](','):undefined;}},'reportholdtime':{'type':Sequelize['ENUM'](_0x604b('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0x604b('0x2')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'set':function(_0x4583cc){this[_0x604b('0xb')]('acw',_0x4583cc);if(_0x4583cc){if(this[_0x604b('0xd')]('wrapuptime')<0x2){this[_0x604b('0xb')](_0x604b('0x1e'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'comment':_0x604b('0x1f')},'dialMethod':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x20'),_0x604b('0x21'),'power',_0x604b('0x11'),'booked'),'defaultValue':_0x604b('0x21'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0x604b('0x13')](0x4)[_0x604b('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x604b('0x23')},'dialLimitQueue':{'type':Sequelize[_0x604b('0x13')](0x4)[_0x604b('0x22')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0x604b('0x24')},'dialPowerLevel':{'type':Sequelize[_0x604b('0x25')](0x2)[_0x604b('0x22')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':'Power\x20Level:\x20Calls\x20for\x20agents\x20(min:1,\x20max:10).'},'dialPredictiveOptimization':{'type':Sequelize['ENUM']('agentBusyFactor',_0x604b('0x26')),'defaultValue':'dropRate','comment':_0x604b('0x27')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0x604b('0x25')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0x604b('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0x604b('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0x604b('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':'Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueOptions':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x2a'),'comment':_0x604b('0x2b')},'dialQueueTimeout':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x2c')},'dialQueueProject':{'type':Sequelize[_0x604b('0x2')],'comment':_0x604b('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x2e')},'dialCongestionRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x2f')},'dialBusyMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x30')},'dialBusyRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x31')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x604b('0x32')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x33')},'dialGlobalMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x604b('0x34')},'dialTimezone':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0x604b('0x35')},'dialPrefix':{'type':Sequelize[_0x604b('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0x604b('0x5')](_0x604b('0x36'),_0x604b('0x37'),'onlyIfOpen'),'defaultValue':_0x604b('0x36')},'dialAMDActive':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':0x0,'comment':_0x604b('0x38')},'dialAMDInitialSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0x604b('0x39')},'dialAMDGreeting':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0x604b('0x3a')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0x604b('0x3b')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x604b('0x3c')},'dialAMDMinWordLength':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0x604b('0x3d')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0x604b('0x3e')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x604b('0x13')](0x9)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x604b('0x3f')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x604b('0x13')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x604b('0x40')},'dialRecallMeTimeout':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0x604b('0x41')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x604b('0x42')},'dialOrderByScheduledAt':{'type':Sequelize['ENUM'](_0x604b('0x43'),_0x604b('0x44')),'defaultValue':_0x604b('0x43')},'dialQueueProject2':{'type':Sequelize['STRING'],'comment':_0x604b('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x604b('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x48')},'dialDropRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x49')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Abandoned\x20Retry\x20(min:1,\x20max:999)'},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4a')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0x604b('0x22')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4c')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x604b('0x4d')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x604b('0x13')](0x5)[_0x604b('0x22')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x604b('0x4e')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':_0x604b('0x4f')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x604b('0x50'),'set':function(_0x57d04a){if(!_0x57d04a)this[_0x604b('0xb')](_0x604b('0x51'),null);this[_0x604b('0xb')]('mandatoryDisposition',_0x57d04a);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize['INTEGER'](0x3)[_0x604b('0x22')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0x604b('0x13')](0x3)['UNSIGNED'],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0x604b('0x13')](0x3)[_0x604b('0x22')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0x604b('0x1d')],'defaultValue':![]}};
\ No newline at end of file
index 2d1fdbf..aae94a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0e4b=['ContactId','ListId','CmListId','toString','from','cm_contacts','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','onlyIfOpen','ListId\x20=\x20?','deletedAt\x20IS\x20NULL','cm_hopper_additional_phones','CmHopperId','OrderBy','ci.item','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','rimraf','zip-dir','request-promise','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./voiceQueue.socket','register','status','end','json','undefined','limit','count','offset','set','update','then','get','inbound','QueueCampaigns','outbound','filter','ignore','map','value','includes','find','type','name','UserProfileResource','destroy','stack','send','rawAttributes','fieldName','key','model','intersection','query','fields','attributes','length','nolimit','sort','where','filters','pick','merge','VIRTUAL','options','VoiceQueue','include','findAll','rows','catch','show','params','keys','includeAll','create','VoiceQueues','UserProfileSection','userProfileId','autoAssociation','error','omit','createdAt','updatedAt','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','CmHopper','hasOwnProperty','order','VoiceQueueId','getHopperHistories','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','Team','getTeams','addTeams','teams','User','Agents','voicePause','interface','flatMap','forEach','penalty','sequelize','transaction','each','upsert','UserVoiceQueue','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','userVoiceQueue:save','removeTeams','ids','select','field','tq.TeamId','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','union','isEmpty','removeAgents','emit','userVoiceQueue:remove','addAgents','spread','online','getAgents','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','dialCheckDuplicateType','always','insert','into','cm_hopper','fromQuery','phone','scheduledAt'];(function(_0x474f18,_0x3fc4ed){var _0x1c372d=function(_0x5625cb){while(--_0x5625cb){_0x474f18['push'](_0x474f18['shift']());}};_0x1c372d(++_0x3fc4ed);}(_0x0e4b,0xdc));var _0xb0e4=function(_0x2b73cb,_0x35754a){_0x2b73cb=_0x2b73cb-0x0;var _0x2fae69=_0x0e4b[_0x2b73cb];return _0x2fae69;};'use strict';var emlformat=require(_0xb0e4('0x0'));var rimraf=require(_0xb0e4('0x1'));var zipdir=require(_0xb0e4('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb0e4('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xb0e4('0x4'));var sox=require(_0xb0e4('0x5'));var csv=require('to-csv');var ejs=require(_0xb0e4('0x6'));var fs=require('fs');var fs_extra=require(_0xb0e4('0x7'));var _=require(_0xb0e4('0x8'));var squel=require(_0xb0e4('0x9'));var crypto=require(_0xb0e4('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb0e4('0xb'));var querystring=require(_0xb0e4('0xc'));var Papa=require(_0xb0e4('0xd'));var Redis=require(_0xb0e4('0xe'));var authService=require(_0xb0e4('0xf'));var qs=require(_0xb0e4('0x10'));var as=require(_0xb0e4('0x11'));var hardwareService=require(_0xb0e4('0x12'));var logger=require(_0xb0e4('0x13'))(_0xb0e4('0x14'));var utils=require(_0xb0e4('0x15'));var config=require(_0xb0e4('0x16'));var licenseUtil=require(_0xb0e4('0x17'));var db=require(_0xb0e4('0x18'))['db'];config[_0xb0e4('0x19')]=_['defaults'](config[_0xb0e4('0x19')],{'host':_0xb0e4('0x1a'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb0e4('0x19')]));require(_0xb0e4('0x1b'))[_0xb0e4('0x1c')](socket);function respondWithStatusCode(_0x460180,_0x1e1ca5){_0x1e1ca5=_0x1e1ca5||0xcc;return function(_0x57ba9d){if(_0x57ba9d){return _0x460180['sendStatus'](_0x1e1ca5);}return _0x460180[_0xb0e4('0x1d')](_0x1e1ca5)[_0xb0e4('0x1e')]();};}function respondWithResult(_0x5b219a,_0x152ceb){_0x152ceb=_0x152ceb||0xc8;return function(_0x376d1f){if(_0x376d1f){return _0x5b219a[_0xb0e4('0x1d')](_0x152ceb)[_0xb0e4('0x1f')](_0x376d1f);}};}function respondWithFilteredResult(_0x74c379,_0x3355c6){return function(_0x570886){if(_0x570886){var _0x491a29=typeof _0x3355c6['offset']===_0xb0e4('0x20')&&typeof _0x3355c6[_0xb0e4('0x21')]===_0xb0e4('0x20');var _0x690682=_0x570886[_0xb0e4('0x22')];var _0x2f3809=_0x491a29?0x0:_0x3355c6['offset'];var _0x436667=_0x491a29?_0x570886[_0xb0e4('0x22')]:_0x3355c6[_0xb0e4('0x23')]+_0x3355c6[_0xb0e4('0x21')];var _0x4bbb10;if(_0x436667>=_0x690682){_0x436667=_0x690682;_0x4bbb10=0xc8;}else{_0x4bbb10=0xce;}_0x74c379[_0xb0e4('0x1d')](_0x4bbb10);return _0x74c379[_0xb0e4('0x24')]('Content-Range',_0x2f3809+'-'+_0x436667+'/'+_0x690682)[_0xb0e4('0x1f')](_0x570886);}return null;};}function patchUpdates(_0x2774be){return function(_0xe6a9cf){try{jsonpatch['apply'](_0xe6a9cf,_0x2774be,!![]);}catch(_0x1a6810){return BPromise['reject'](_0x1a6810);}return _0xe6a9cf['save']();};}function saveUpdates(_0x21276c,_0x39db8d){return function(_0x139c84){if(_0x139c84){return _0x139c84[_0xb0e4('0x25')](_0x21276c)[_0xb0e4('0x26')](function(_0x248aa5){return _0x248aa5;});}return null;};}function removeEntity(_0x6665e,_0x50fe9e){return function(_0x28ed88){if(_0x28ed88){return _0x28ed88['destroy']()[_0xb0e4('0x26')](function(){var _0x22033f=_0x28ed88[_0xb0e4('0x27')]({'plain':!![]});var _0xfef785=[{'name':'VoiceQueues','value':_0xb0e4('0x28'),'ignore':![]},{'name':_0xb0e4('0x29'),'value':_0xb0e4('0x2a'),'ignore':![]}];var _0x451008=_(_0xfef785)[_0xb0e4('0x2b')](_0xb0e4('0x2c'))[_0xb0e4('0x2d')](_0xb0e4('0x2e'))['value']();if(_[_0xb0e4('0x2f')](_0x451008,_0x22033f['type'])){return;}var _0x16f13e=_[_0xb0e4('0x30')](_0xfef785,['value',_0x22033f[_0xb0e4('0x31')]])[_0xb0e4('0x32')];return db[_0xb0e4('0x33')][_0xb0e4('0x34')]({'where':{'type':_0x16f13e,'resourceId':_0x22033f['id']}})[_0xb0e4('0x26')](function(){return _0x28ed88;});})[_0xb0e4('0x26')](function(){_0x6665e['status'](0xcc)[_0xb0e4('0x1e')]();});}};}function handleEntityNotFound(_0x57339c,_0x5b3d93){return function(_0x311ce3){if(!_0x311ce3){_0x57339c['sendStatus'](0x194);}return _0x311ce3;};}function handleError(_0xc51bcb,_0x5f2498){_0x5f2498=_0x5f2498||0x1f4;return function(_0x7d1cf7){logger['error'](_0x7d1cf7[_0xb0e4('0x35')]);if(_0x7d1cf7[_0xb0e4('0x32')]){delete _0x7d1cf7[_0xb0e4('0x32')];}_0xc51bcb['status'](_0x5f2498)[_0xb0e4('0x36')](_0x7d1cf7);};}exports['index']=function(_0xfbc43,_0x2d3e83){var _0x23ab51={},_0x129aec={},_0x6a7758={'count':0x0,'rows':[]};var _0x59870f=_[_0xb0e4('0x2d')](db['VoiceQueue'][_0xb0e4('0x37')],function(_0x434630){return{'name':_0x434630[_0xb0e4('0x38')],'type':_0x434630['type'][_0xb0e4('0x39')]};});_0x129aec[_0xb0e4('0x3a')]=_[_0xb0e4('0x2d')](_0x59870f,_0xb0e4('0x32'));_0x129aec['query']=_['keys'](_0xfbc43['query']);_0x129aec['filters']=_[_0xb0e4('0x3b')](_0x129aec['model'],_0x129aec[_0xb0e4('0x3c')]);_0x23ab51['attributes']=_[_0xb0e4('0x3b')](_0x129aec['model'],qs[_0xb0e4('0x3d')](_0xfbc43[_0xb0e4('0x3c')][_0xb0e4('0x3d')]));_0x23ab51[_0xb0e4('0x3e')]=_0x23ab51['attributes'][_0xb0e4('0x3f')]?_0x23ab51[_0xb0e4('0x3e')]:_0x129aec['model'];if(!_0xfbc43[_0xb0e4('0x3c')]['hasOwnProperty'](_0xb0e4('0x40'))){_0x23ab51[_0xb0e4('0x21')]=qs['limit'](_0xfbc43[_0xb0e4('0x3c')]['limit']);_0x23ab51['offset']=qs['offset'](_0xfbc43[_0xb0e4('0x3c')][_0xb0e4('0x23')]);}_0x23ab51['order']=qs[_0xb0e4('0x41')](_0xfbc43['query'][_0xb0e4('0x41')]);_0x23ab51[_0xb0e4('0x42')]=qs[_0xb0e4('0x43')](_[_0xb0e4('0x44')](_0xfbc43['query'],_0x129aec[_0xb0e4('0x43')]),_0x59870f);if(_0xfbc43[_0xb0e4('0x3c')][_0xb0e4('0x2b')]){_0x23ab51[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x23ab51[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x59870f,function(_0xd1fec){if(_0xd1fec[_0xb0e4('0x31')]!==_0xb0e4('0x46')){var _0x13faed={};_0x13faed[_0xd1fec[_0xb0e4('0x32')]]={'$like':'%'+_0xfbc43[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0x13faed;}})});}_0x23ab51=_[_0xb0e4('0x45')]({},_0x23ab51,_0xfbc43[_0xb0e4('0x47')]);var _0x5b7448={'where':_0x23ab51[_0xb0e4('0x42')]};return db[_0xb0e4('0x48')][_0xb0e4('0x22')](_0x5b7448)[_0xb0e4('0x26')](function(_0x4b3ec2){_0x6a7758[_0xb0e4('0x22')]=_0x4b3ec2;if(_0xfbc43[_0xb0e4('0x3c')]['includeAll']){_0x23ab51[_0xb0e4('0x49')]=[{'all':!![]}];}return db[_0xb0e4('0x48')][_0xb0e4('0x4a')](_0x23ab51);})[_0xb0e4('0x26')](function(_0x48ad47){_0x6a7758[_0xb0e4('0x4b')]=_0x48ad47;return _0x6a7758;})[_0xb0e4('0x26')](respondWithFilteredResult(_0x2d3e83,_0x23ab51))[_0xb0e4('0x4c')](handleError(_0x2d3e83,null));};exports[_0xb0e4('0x4d')]=function(_0x78b898,_0x2ffb16){var _0x2a5b12={'raw':![],'where':{'id':_0x78b898[_0xb0e4('0x4e')]['id']}},_0xe9ee50={};_0xe9ee50[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db['VoiceQueue'][_0xb0e4('0x37')]);_0xe9ee50[_0xb0e4('0x3c')]=_['keys'](_0x78b898['query']);_0xe9ee50['filters']=_[_0xb0e4('0x3b')](_0xe9ee50[_0xb0e4('0x3a')],_0xe9ee50['query']);_0x2a5b12['attributes']=_['intersection'](_0xe9ee50['model'],qs['fields'](_0x78b898['query'][_0xb0e4('0x3d')]));_0x2a5b12['attributes']=_0x2a5b12[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x2a5b12[_0xb0e4('0x3e')]:_0xe9ee50[_0xb0e4('0x3a')];if(_0x78b898['query'][_0xb0e4('0x50')]){_0x2a5b12[_0xb0e4('0x49')]=[{'all':!![]}];}_0x2a5b12=_['merge']({},_0x2a5b12,_0x78b898[_0xb0e4('0x47')]);return db['VoiceQueue'][_0xb0e4('0x30')](_0x2a5b12)[_0xb0e4('0x26')](handleEntityNotFound(_0x2ffb16,null))[_0xb0e4('0x26')](respondWithResult(_0x2ffb16,null))[_0xb0e4('0x4c')](handleError(_0x2ffb16,null));};exports['create']=function(_0x312ccc,_0x3b87a7){return db[_0xb0e4('0x48')][_0xb0e4('0x51')](_0x312ccc['body'],{})[_0xb0e4('0x26')](function(_0x1f9d98){var _0x167583=_0x312ccc['user']['get']({'plain':!![]});if(!_0x167583)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x167583['role']==='user'){var _0x288582=_0x1f9d98['get']({'plain':!![]});var _0x3a4f50=[{'name':_0xb0e4('0x52'),'value':_0xb0e4('0x28')},{'name':_0xb0e4('0x29'),'value':'outbound'}];var _0x387319=_[_0xb0e4('0x30')](_0x3a4f50,['value',_0x288582[_0xb0e4('0x31')]])['name'];return db[_0xb0e4('0x53')][_0xb0e4('0x30')]({'where':{'name':_0x387319,'userProfileId':_0x167583[_0xb0e4('0x54')]},'raw':!![]})['then'](function(_0x3ad23a){if(_0x3ad23a&&_0x3ad23a[_0xb0e4('0x55')]===0x0){return db['UserProfileResource'][_0xb0e4('0x51')]({'name':_0x288582[_0xb0e4('0x32')],'resourceId':_0x288582['id'],'type':_0x3ad23a['name'],'sectionId':_0x3ad23a['id']},{})['then'](function(){return _0x1f9d98;});}else{return _0x1f9d98;}})[_0xb0e4('0x4c')](function(_0xa4c0b0){logger[_0xb0e4('0x56')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa4c0b0);throw _0xa4c0b0;});}return _0x1f9d98;})[_0xb0e4('0x26')](respondWithResult(_0x3b87a7,0xc9))[_0xb0e4('0x4c')](handleError(_0x3b87a7,null));};exports['clone']=function(_0x313801,_0x32d5b7){var _0x571a5e={'where':{'id':_0x313801[_0xb0e4('0x4e')]['id']}},_0x108395={};_0x108395[_0xb0e4('0x3a')]=_['keys'](db[_0xb0e4('0x48')][_0xb0e4('0x37')]);_0x571a5e[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x108395['model'],qs[_0xb0e4('0x3d')](_0x313801[_0xb0e4('0x3c')][_0xb0e4('0x3d')]));_0x571a5e[_0xb0e4('0x3e')]=_0x571a5e[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x571a5e[_0xb0e4('0x3e')]:_0x108395['model'];if(_0x313801['query'][_0xb0e4('0x50')]){_0x571a5e[_0xb0e4('0x49')]=[{'all':!![]}];}_0x571a5e=_[_0xb0e4('0x45')]({},_0x571a5e,_0x313801[_0xb0e4('0x47')]);return db[_0xb0e4('0x48')][_0xb0e4('0x30')](_0x571a5e)[_0xb0e4('0x26')](handleEntityNotFound(_0x32d5b7,null))[_0xb0e4('0x26')](function(_0xf035a2){if(_0xf035a2){var _0x2f8e3c=_0xf035a2[_0xb0e4('0x27')]({'plain':!![]});_0x2f8e3c=qs[_0xb0e4('0x57')](_0x2f8e3c,['id',_0xb0e4('0x58'),_0xb0e4('0x59')]);_0x313801[_0xb0e4('0x5a')]=_[_0xb0e4('0x57')](_0x313801['body'],['id','createdAt',_0xb0e4('0x59')]);return db[_0xb0e4('0x48')][_0xb0e4('0x51')](_[_0xb0e4('0x45')](_0x2f8e3c,_0x313801[_0xb0e4('0x5a')]),{'include':_0x313801['query']['includeAll']?[{'all':!![]}]:undefined})[_0xb0e4('0x26')](function(_0x26d172){var _0xa05a06=_0x313801['user'][_0xb0e4('0x27')]({'plain':!![]});if(!_0xa05a06)throw new Error(_0xb0e4('0x5b'));if(_0xa05a06['role']==='user'){var _0x2c46de=_0x26d172['get']({'plain':!![]});var _0x2400e0=[{'name':_0xb0e4('0x52'),'value':_0xb0e4('0x28')},{'name':_0xb0e4('0x29'),'value':_0xb0e4('0x2a')}];var _0x27e561=_[_0xb0e4('0x30')](_0x2400e0,[_0xb0e4('0x2e'),_0x2c46de[_0xb0e4('0x31')]])[_0xb0e4('0x32')];return db[_0xb0e4('0x53')]['find']({'where':{'name':_0x27e561,'userProfileId':_0xa05a06[_0xb0e4('0x54')]},'raw':!![]})[_0xb0e4('0x26')](function(_0x1add3a){if(_0x1add3a&&_0x1add3a[_0xb0e4('0x55')]===0x0){return db[_0xb0e4('0x33')][_0xb0e4('0x51')]({'name':_0x2c46de[_0xb0e4('0x32')],'resourceId':_0x2c46de['id'],'type':_0x1add3a[_0xb0e4('0x32')],'sectionId':_0x1add3a['id']},{})['then'](function(){return _0x26d172;});}else{return _0x26d172;}})[_0xb0e4('0x4c')](function(_0xffe7f){logger[_0xb0e4('0x56')](_0xb0e4('0x5c'),_0xffe7f);throw _0xffe7f;});}return _0x26d172;});}})[_0xb0e4('0x26')](respondWithResult(_0x32d5b7,0xc9))[_0xb0e4('0x4c')](handleError(_0x32d5b7,null));};exports[_0xb0e4('0x25')]=function(_0x474956,_0x37c1d0){if(_0x474956['body']['id']){delete _0x474956[_0xb0e4('0x5a')]['id'];}return db['VoiceQueue'][_0xb0e4('0x30')]({'where':{'id':_0x474956['params']['id']}})['then'](handleEntityNotFound(_0x37c1d0,null))['then'](saveUpdates(_0x474956[_0xb0e4('0x5a')],null))[_0xb0e4('0x26')](respondWithResult(_0x37c1d0,null))[_0xb0e4('0x4c')](handleError(_0x37c1d0,null));};exports[_0xb0e4('0x34')]=function(_0x317e13,_0x157d14){return db[_0xb0e4('0x48')]['find']({'where':{'id':_0x317e13[_0xb0e4('0x4e')]['id']}})['then'](handleEntityNotFound(_0x157d14,null))[_0xb0e4('0x26')](removeEntity(_0x157d14,null))['catch'](handleError(_0x157d14,null));};exports['getHoppers']=function(_0x100be6,_0x536fc5,_0x4bb7a6){var _0x1ac0b5={'raw':![],'where':{}};var _0x6fba98={};var _0x27e840={'count':0x0,'rows':[]};return db[_0xb0e4('0x48')]['findOne']({'where':{'id':_0x100be6[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x536fc5,null))[_0xb0e4('0x26')](function(_0x5751ae){if(_0x5751ae){_0x6fba98['model']=_[_0xb0e4('0x4f')](db[_0xb0e4('0x5d')][_0xb0e4('0x37')]);_0x6fba98[_0xb0e4('0x3c')]=_['keys'](_0x100be6[_0xb0e4('0x3c')]);_0x6fba98['filters']=_[_0xb0e4('0x3b')](_0x6fba98[_0xb0e4('0x3a')],_0x6fba98[_0xb0e4('0x3c')]);_0x1ac0b5[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x6fba98[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x100be6['query'][_0xb0e4('0x3d')]));_0x1ac0b5[_0xb0e4('0x3e')]=_0x1ac0b5[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x1ac0b5[_0xb0e4('0x3e')]:_0x6fba98[_0xb0e4('0x3a')];if(!_0x100be6[_0xb0e4('0x3c')][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0x1ac0b5[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x100be6[_0xb0e4('0x3c')]['limit']);_0x1ac0b5[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x100be6[_0xb0e4('0x3c')]['offset']);}_0x1ac0b5[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x100be6[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0x1ac0b5[_0xb0e4('0x42')]=qs[_0xb0e4('0x43')](_[_0xb0e4('0x44')](_0x100be6['query'],_0x6fba98['filters']));_0x1ac0b5['where'][_0xb0e4('0x60')]=_0x5751ae['id'];if(_0x100be6[_0xb0e4('0x3c')][_0xb0e4('0x2b')]){_0x1ac0b5[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x1ac0b5[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x1ac0b5[_0xb0e4('0x3e')],function(_0x125f8f){var _0xdd477d={};_0xdd477d[_0x125f8f]={'$like':'%'+_0x100be6[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0xdd477d;})});}_0x1ac0b5=_[_0xb0e4('0x45')]({},_0x1ac0b5,_0x100be6[_0xb0e4('0x47')]);return db[_0xb0e4('0x5d')][_0xb0e4('0x22')]({'where':_0x1ac0b5['where']})[_0xb0e4('0x26')](function(_0x406242){_0x27e840['count']=_0x406242;if(_0x100be6[_0xb0e4('0x3c')][_0xb0e4('0x50')]){_0x1ac0b5['include']=[{'all':!![]}];}return db[_0xb0e4('0x5d')][_0xb0e4('0x4a')](_0x1ac0b5);})[_0xb0e4('0x26')](function(_0x5cf0cc){_0x27e840[_0xb0e4('0x4b')]=_0x5cf0cc;return _0x27e840;});}})[_0xb0e4('0x26')](respondWithFilteredResult(_0x536fc5,_0x1ac0b5))[_0xb0e4('0x4c')](handleError(_0x536fc5,null));};exports[_0xb0e4('0x61')]=function(_0x5409af,_0x344f9b,_0x332767){var _0x47e242={'raw':!![],'where':{}};var _0x22d455={};var _0x4698a1={'count':0x0,'rows':[]};return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x5409af['params']['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x344f9b,null))[_0xb0e4('0x26')](function(_0x231c64){if(_0x231c64){_0x22d455[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db[_0xb0e4('0x63')][_0xb0e4('0x37')]);_0x22d455['query']=_[_0xb0e4('0x4f')](_0x5409af[_0xb0e4('0x3c')]);_0x22d455['filters']=_[_0xb0e4('0x3b')](_0x22d455['model'],_0x22d455[_0xb0e4('0x3c')]);_0x47e242[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x22d455[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x5409af[_0xb0e4('0x3c')][_0xb0e4('0x3d')]));_0x47e242[_0xb0e4('0x3e')]=_0x47e242[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x47e242[_0xb0e4('0x3e')]:_0x22d455[_0xb0e4('0x3a')];if(!_0x5409af[_0xb0e4('0x3c')][_0xb0e4('0x5e')]('nolimit')){_0x47e242[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x5409af[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x47e242['offset']=qs['offset'](_0x5409af[_0xb0e4('0x3c')][_0xb0e4('0x23')]);}_0x47e242[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x5409af[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0x47e242[_0xb0e4('0x42')]=qs[_0xb0e4('0x43')](_['pick'](_0x5409af[_0xb0e4('0x3c')],_0x22d455[_0xb0e4('0x43')]));_0x47e242['where']['VoiceQueueId']=_0x231c64['id'];if(_0x5409af['query'][_0xb0e4('0x2b')]){_0x47e242[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x47e242['where'],{'$or':_[_0xb0e4('0x2d')](_0x47e242[_0xb0e4('0x3e')],function(_0x2517fd){var _0x60bfb6={};_0x60bfb6[_0x2517fd]={'$like':'%'+_0x5409af[_0xb0e4('0x3c')]['filter']+'%'};return _0x60bfb6;})});}_0x47e242=_['merge']({},_0x47e242,_0x5409af['options']);return db[_0xb0e4('0x63')]['count']({'where':_0x47e242[_0xb0e4('0x42')]})[_0xb0e4('0x26')](function(_0xe0b486){_0x4698a1[_0xb0e4('0x22')]=_0xe0b486;if(_0x5409af['query']['includeAll']){_0x47e242[_0xb0e4('0x49')]=[{'all':!![]}];}return db[_0xb0e4('0x63')][_0xb0e4('0x4a')](_0x47e242);})[_0xb0e4('0x26')](function(_0xa8d3f){_0x4698a1[_0xb0e4('0x4b')]=_0xa8d3f;return _0x4698a1;});}})[_0xb0e4('0x26')](respondWithFilteredResult(_0x344f9b,_0x47e242))[_0xb0e4('0x4c')](handleError(_0x344f9b,null));};exports[_0xb0e4('0x64')]=function(_0x2387b3,_0x1bf6eb,_0x534787){var _0x5518a9={'raw':!![],'where':{}};var _0x509c99={};var _0x140058={'count':0x0,'rows':[]};return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x2387b3['params']['id']}})['then'](handleEntityNotFound(_0x1bf6eb,null))[_0xb0e4('0x26')](function(_0x1ab225){if(_0x1ab225){_0x509c99[_0xb0e4('0x3a')]=_['keys'](db[_0xb0e4('0x65')][_0xb0e4('0x37')]);_0x509c99[_0xb0e4('0x3c')]=_[_0xb0e4('0x4f')](_0x2387b3[_0xb0e4('0x3c')]);_0x509c99[_0xb0e4('0x43')]=_[_0xb0e4('0x3b')](_0x509c99[_0xb0e4('0x3a')],_0x509c99[_0xb0e4('0x3c')]);_0x5518a9['attributes']=_[_0xb0e4('0x3b')](_0x509c99[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x2387b3['query']['fields']));_0x5518a9[_0xb0e4('0x3e')]=_0x5518a9[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x5518a9[_0xb0e4('0x3e')]:_0x509c99[_0xb0e4('0x3a')];if(!_0x2387b3[_0xb0e4('0x3c')]['hasOwnProperty'](_0xb0e4('0x40'))){_0x5518a9[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x2387b3[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x5518a9[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x2387b3[_0xb0e4('0x3c')]['offset']);}_0x5518a9[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x2387b3[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0x5518a9['where']=qs['filters'](_[_0xb0e4('0x44')](_0x2387b3[_0xb0e4('0x3c')],_0x509c99[_0xb0e4('0x43')]));_0x5518a9[_0xb0e4('0x42')][_0xb0e4('0x60')]=_0x1ab225['id'];if(_0x2387b3[_0xb0e4('0x3c')]['filter']){_0x5518a9['where']=_['merge'](_0x5518a9[_0xb0e4('0x42')],{'$or':_['map'](_0x5518a9[_0xb0e4('0x3e')],function(_0x4848eb){var _0x40a25f={};_0x40a25f[_0x4848eb]={'$like':'%'+_0x2387b3[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0x40a25f;})});}_0x5518a9=_['merge']({},_0x5518a9,_0x2387b3['options']);return db[_0xb0e4('0x65')]['count']({'where':_0x5518a9[_0xb0e4('0x42')]})[_0xb0e4('0x26')](function(_0x56fdd3){_0x140058[_0xb0e4('0x22')]=_0x56fdd3;if(_0x2387b3[_0xb0e4('0x3c')][_0xb0e4('0x50')]){_0x5518a9['include']=[{'all':!![]}];}return db[_0xb0e4('0x65')][_0xb0e4('0x4a')](_0x5518a9);})[_0xb0e4('0x26')](function(_0x3f197c){_0x140058[_0xb0e4('0x4b')]=_0x3f197c;return _0x140058;});}})[_0xb0e4('0x26')](respondWithFilteredResult(_0x1bf6eb,_0x5518a9))[_0xb0e4('0x4c')](handleError(_0x1bf6eb,null));};exports[_0xb0e4('0x66')]=function(_0x293736,_0x2296d6,_0x43d723){var _0x1a7d8a={'raw':!![],'where':{}};var _0x1210b9={};var _0x4fd363={'count':0x0,'rows':[]};return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x293736[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x2296d6,null))['then'](function(_0x40f443){if(_0x40f443){_0x1210b9[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db[_0xb0e4('0x67')][_0xb0e4('0x37')]);_0x1210b9[_0xb0e4('0x3c')]=_[_0xb0e4('0x4f')](_0x293736[_0xb0e4('0x3c')]);_0x1210b9[_0xb0e4('0x43')]=_['intersection'](_0x1210b9[_0xb0e4('0x3a')],_0x1210b9[_0xb0e4('0x3c')]);_0x1a7d8a[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x1210b9[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x293736[_0xb0e4('0x3c')]['fields']));_0x1a7d8a[_0xb0e4('0x3e')]=_0x1a7d8a['attributes'][_0xb0e4('0x3f')]?_0x1a7d8a[_0xb0e4('0x3e')]:_0x1210b9[_0xb0e4('0x3a')];if(!_0x293736['query'][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0x1a7d8a[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x293736[_0xb0e4('0x3c')]['limit']);_0x1a7d8a[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x293736[_0xb0e4('0x3c')][_0xb0e4('0x23')]);}_0x1a7d8a[_0xb0e4('0x5f')]=qs['sort'](_0x293736['query'][_0xb0e4('0x41')]);_0x1a7d8a['where']=qs[_0xb0e4('0x43')](_[_0xb0e4('0x44')](_0x293736[_0xb0e4('0x3c')],_0x1210b9[_0xb0e4('0x43')]));_0x1a7d8a['where'][_0xb0e4('0x60')]=_0x40f443['id'];if(_0x293736['query'][_0xb0e4('0x2b')]){_0x1a7d8a[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x1a7d8a[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x1a7d8a[_0xb0e4('0x3e')],function(_0x4b14c8){var _0x38a8ae={};_0x38a8ae[_0x4b14c8]={'$like':'%'+_0x293736[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0x38a8ae;})});}_0x1a7d8a=_[_0xb0e4('0x45')]({},_0x1a7d8a,_0x293736[_0xb0e4('0x47')]);return db['CmHopperBlack']['count']({'where':_0x1a7d8a['where']})[_0xb0e4('0x26')](function(_0x4f61ed){_0x4fd363[_0xb0e4('0x22')]=_0x4f61ed;if(_0x293736[_0xb0e4('0x3c')][_0xb0e4('0x50')]){_0x1a7d8a['include']=[{'all':!![]}];}return db[_0xb0e4('0x67')]['findAll'](_0x1a7d8a);})[_0xb0e4('0x26')](function(_0x26fb02){_0x4fd363[_0xb0e4('0x4b')]=_0x26fb02;return _0x4fd363;});}})[_0xb0e4('0x26')](respondWithFilteredResult(_0x2296d6,_0x1a7d8a))['catch'](handleError(_0x2296d6,null));};exports['getTeams']=function(_0x1caa18,_0x20aec7,_0x2b2995){var _0x1fee04={};var _0x5346de={};var _0x42b6d7;var _0x22ef0e;return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x1caa18['params']['id']}})['then'](handleEntityNotFound(_0x20aec7,null))[_0xb0e4('0x26')](function(_0xb19b0){if(_0xb19b0){_0x42b6d7=_0xb19b0;_0x5346de['model']=_[_0xb0e4('0x4f')](db[_0xb0e4('0x68')][_0xb0e4('0x37')]);_0x5346de[_0xb0e4('0x3c')]=_[_0xb0e4('0x4f')](_0x1caa18[_0xb0e4('0x3c')]);_0x5346de[_0xb0e4('0x43')]=_['intersection'](_0x5346de[_0xb0e4('0x3a')],_0x5346de[_0xb0e4('0x3c')]);_0x1fee04[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x5346de[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x1caa18['query'][_0xb0e4('0x3d')]));_0x1fee04['attributes']=_0x1fee04['attributes'][_0xb0e4('0x3f')]?_0x1fee04[_0xb0e4('0x3e')]:_0x5346de['model'];_0x1fee04[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x1caa18['query'][_0xb0e4('0x41')]);_0x1fee04['where']=qs['filters'](_[_0xb0e4('0x44')](_0x1caa18[_0xb0e4('0x3c')],_0x5346de[_0xb0e4('0x43')]));if(_0x1caa18['query'][_0xb0e4('0x2b')]){_0x1fee04[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x1fee04[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x1fee04[_0xb0e4('0x3e')],function(_0x209df7){var _0x5293b3={};_0x5293b3[_0x209df7]={'$like':'%'+_0x1caa18[_0xb0e4('0x3c')]['filter']+'%'};return _0x5293b3;})});}_0x1fee04=_[_0xb0e4('0x45')]({},_0x1fee04,_0x1caa18[_0xb0e4('0x47')]);return _0x42b6d7[_0xb0e4('0x69')](_0x1fee04);}})[_0xb0e4('0x26')](function(_0x548862){if(_0x548862){_0x22ef0e=_0x548862[_0xb0e4('0x3f')];if(!_0x1caa18[_0xb0e4('0x3c')]['hasOwnProperty'](_0xb0e4('0x40'))){_0x1fee04['limit']=qs[_0xb0e4('0x21')](_0x1caa18[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x1fee04[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x1caa18[_0xb0e4('0x3c')]['offset']);}return _0x42b6d7[_0xb0e4('0x69')](_0x1fee04);}})['then'](function(_0x321cc5){if(_0x321cc5){return _0x321cc5?{'count':_0x22ef0e,'rows':_0x321cc5}:null;}})[_0xb0e4('0x26')](respondWithResult(_0x20aec7,null))['catch'](handleError(_0x20aec7,null));};exports[_0xb0e4('0x6a')]=function(_0x2ef6eb,_0x441b6b,_0x5caa7b){var _0x3fd177=_0x2ef6eb[_0xb0e4('0x5a')][_0xb0e4('0x6b')];var _0x58cf93=_['map'](_0x3fd177,'id');return db[_0xb0e4('0x68')]['findAll']({'where':{'id':_0x58cf93},'attributes':['id'],'include':[{'model':db[_0xb0e4('0x6c')],'as':_0xb0e4('0x6d'),'attributes':['id',_0xb0e4('0x32'),'online',_0xb0e4('0x6e'),_0xb0e4('0x6f')],'raw':!![]}]})['then'](function(_0x3dc09e){if(_0x3dc09e){var _0x11947a=_[_0xb0e4('0x70')](_0x3dc09e,function(_0x1b144f){var _0x211461=_0x1b144f[_0xb0e4('0x27')]({'plain':!![]});_0x211461['Agents'][_0xb0e4('0x71')](function(_0x2d6dcd){_0x2d6dcd[_0xb0e4('0x72')]=_['find'](_0x3fd177,{'id':_0x211461['id']})[_0xb0e4('0x72')];});return _0x211461[_0xb0e4('0x6d')];});return db[_0xb0e4('0x48')][_0xb0e4('0x30')]({'where':{'id':_0x2ef6eb[_0xb0e4('0x4e')]['id']}})['then'](function(_0x5ae25){return db[_0xb0e4('0x73')][_0xb0e4('0x74')](function(_0x48b0a6){return _0x5ae25[_0xb0e4('0x6a')](_0x58cf93,{'transaction':_0x48b0a6})[_0xb0e4('0x26')](function(){return BPromise[_0xb0e4('0x75')](_0x3fd177,function(_0x16de36){return db['TeamVoiceQueue'][_0xb0e4('0x76')]({'TeamId':_0x16de36['id'],'VoiceQueueId':_0x2ef6eb[_0xb0e4('0x4e')]['id'],'penalty':_0x16de36[_0xb0e4('0x72')]},{'transaction':_0x48b0a6});});})[_0xb0e4('0x26')](function(){return BPromise[_0xb0e4('0x75')](_0x11947a,function(_0x312c84){return db[_0xb0e4('0x77')][_0xb0e4('0x78')]({'where':{'UserId':_0x312c84['id'],'VoiceQueueId':_0x2ef6eb['params']['id']},'defaults':{'penalty':_0x312c84[_0xb0e4('0x72')]},'transaction':_0x48b0a6});});})[_0xb0e4('0x26')](function(){return BPromise['each'](_['filter'](_0x11947a,{'online':!![]}),function(_0x1cbc7f){return db[_0xb0e4('0x79')][_0xb0e4('0x76')]({'membername':_0x1cbc7f[_0xb0e4('0x32')],'UserId':_0x1cbc7f['id'],'queue_name':_0x5ae25[_0xb0e4('0x32')],'VoiceQueueId':_0x5ae25['id'],'interface':_[_0xb0e4('0x7a')](_0x1cbc7f[_0xb0e4('0x6f')])?util[_0xb0e4('0x7b')](_0xb0e4('0x7c'),_0x1cbc7f[_0xb0e4('0x32')]):_0x1cbc7f[_0xb0e4('0x6f')],'paused':_0x1cbc7f['voicePause']||![],'penalty':_0x1cbc7f[_0xb0e4('0x72')]},{'transaction':_0x48b0a6});});})[_0xb0e4('0x26')](function(){_0x11947a[_0xb0e4('0x71')](function(_0x36f9d1){socket['emit'](_0xb0e4('0x7d'),{'UserId':_0x36f9d1['id'],'VoiceQueueId':_0x5ae25['id']});});});});});}})[_0xb0e4('0x26')](respondWithStatusCode(_0x441b6b,null))[_0xb0e4('0x4c')](handleError(_0x441b6b,null));};exports[_0xb0e4('0x7e')]=function(_0x550785,_0x1bfa34,_0x3f2494){return db[_0xb0e4('0x68')][_0xb0e4('0x4a')]({'where':{'id':_0x550785[_0xb0e4('0x3c')][_0xb0e4('0x7f')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xb0e4('0x6d'),'attributes':['id'],'raw':!![]}]})[_0xb0e4('0x26')](handleEntityNotFound(_0x1bfa34,null))[_0xb0e4('0x26')](function(_0x56e199){var _0x4fda88=_[_0xb0e4('0x2d')](_0x56e199,'id');var _0x45d06a=[];var _0x3c881c=[];var _0x39d243=squel[_0xb0e4('0x80')]();_0x39d243[_0xb0e4('0x81')](_0xb0e4('0x82'))['from'](_0xb0e4('0x83'),'tq')[_0xb0e4('0x84')](_0xb0e4('0x85'),'ut',_0xb0e4('0x86'))[_0xb0e4('0x42')]('VoiceQueueId\x20=\x20?',_0x550785[_0xb0e4('0x4e')]['id']);for(var _0x4628b5=0x0;_0x4628b5<_0x56e199[_0xb0e4('0x3f')];_0x4628b5+=0x1){let _0x54895e=_0x56e199[_0x4628b5];for(var _0x4407a6=0x0;_0x4407a6<_0x54895e[_0xb0e4('0x6d')]['length'];_0x4407a6+=0x1){let _0x21ba5d=_0x54895e['Agents'][_0x4407a6];var _0x14b3b0=_0x39d243['clone']();_0x14b3b0[_0xb0e4('0x42')](_0xb0e4('0x87'),_0x21ba5d['id']);_0x3c881c[_0xb0e4('0x88')](db[_0xb0e4('0x73')][_0xb0e4('0x3c')](_0x14b3b0['toString'](),{'type':db['sequelize'][_0xb0e4('0x89')][_0xb0e4('0x8a')]})['then'](function(_0x30cbd6){if(_0x30cbd6[_0xb0e4('0x3f')]===0x1){return _0x21ba5d['id'];}else{var _0x37b28c=_[_0xb0e4('0x8b')](_['map'](_0x30cbd6,_0xb0e4('0x8c')),function(_0x54e81c){return _[_0xb0e4('0x2f')](_0x4fda88,_0x54e81c);});if(_0x37b28c){return _0x21ba5d['id'];}}}));}}return BPromise[_0xb0e4('0x8d')](_0x3c881c)[_0xb0e4('0x26')](function(_0x3e89b7){_0x45d06a=_(_0x45d06a)[_0xb0e4('0x8e')](_0x3e89b7)['compact']()['value']();return db['VoiceQueue'][_0xb0e4('0x30')]({'where':{'id':_0x550785['params']['id']}})[_0xb0e4('0x26')](function(_0x5bc5ba){return db[_0xb0e4('0x73')]['transaction'](function(_0x5257e4){return _0x5bc5ba[_0xb0e4('0x7e')](_0x550785[_0xb0e4('0x3c')]['ids'],{'transaction':_0x5257e4})[_0xb0e4('0x26')](function(){if(!_[_0xb0e4('0x8f')](_0x45d06a)){return _0x5bc5ba[_0xb0e4('0x90')](_0x45d06a,{'transaction':_0x5257e4})['then'](function(){return db[_0xb0e4('0x79')][_0xb0e4('0x34')]({'where':{'VoiceQueueId':_0x550785[_0xb0e4('0x4e')]['id'],'UserId':_0x45d06a},'transaction':_0x5257e4});});}})[_0xb0e4('0x26')](function(){_0x45d06a[_0xb0e4('0x71')](function(_0x3e648a){socket[_0xb0e4('0x91')](_0xb0e4('0x92'),{'UserId':_0x3e648a,'VoiceQueueId':_0x5bc5ba['id']});});});});});});})[_0xb0e4('0x26')](respondWithStatusCode(_0x1bfa34,null))[_0xb0e4('0x4c')](handleError(_0x1bfa34,null));};exports[_0xb0e4('0x93')]=function(_0x13d842,_0x231ddd,_0x3cd7d4){var _0x150760,_0x3755bb;return db['VoiceQueue'][_0xb0e4('0x30')]({'where':{'id':_0x13d842[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x231ddd,null))[_0xb0e4('0x26')](function(_0x19e9af){if(_0x19e9af){_0x3755bb=_0x19e9af;return _0x19e9af[_0xb0e4('0x93')](_0x13d842[_0xb0e4('0x5a')][_0xb0e4('0x7f')],_[_0xb0e4('0x57')](_0x13d842[_0xb0e4('0x5a')],[_0xb0e4('0x7f'),'id'])||{})[_0xb0e4('0x94')](function(_0x2fd8cb){for(var _0x40307d=0x0;_0x40307d<_0x13d842['body'][_0xb0e4('0x7f')][_0xb0e4('0x3f')];_0x40307d+=0x1){socket[_0xb0e4('0x91')](_0xb0e4('0x7d'),{'UserId':Number(_0x13d842[_0xb0e4('0x5a')][_0xb0e4('0x7f')][_0x40307d]),'VoiceQueueId':Number(_0x13d842[_0xb0e4('0x4e')]['id'])});}return _0x2fd8cb;});}})['then'](function(_0x1cd767){_0x150760=_0x1cd767||[];if(_0x3755bb){return db[_0xb0e4('0x6c')][_0xb0e4('0x4a')]({'where':{'id':_0x13d842['body'][_0xb0e4('0x7f')]},'attributes':['id',_0xb0e4('0x32'),'online',_0xb0e4('0x6e'),_0xb0e4('0x6f')],'raw':!![]});}})['then'](function(_0x5c9f5c){if(!_[_0xb0e4('0x8f')](_0x5c9f5c)){var _0x395e41=[];for(var _0x1549bf=0x0;_0x1549bf<_0x5c9f5c['length'];_0x1549bf++){if(_0x5c9f5c[_0x1549bf][_0xb0e4('0x95')]){_0x395e41[_0xb0e4('0x88')](db[_0xb0e4('0x79')][_0xb0e4('0x76')]({'membername':_0x5c9f5c[_0x1549bf]['name'],'UserId':_0x5c9f5c[_0x1549bf]['id'],'queue_name':_0x3755bb[_0xb0e4('0x32')],'VoiceQueueId':_0x3755bb['id'],'interface':_[_0xb0e4('0x7a')](_0x5c9f5c[_0x1549bf][_0xb0e4('0x6f')])?util[_0xb0e4('0x7b')](_0xb0e4('0x7c'),_0x5c9f5c[_0x1549bf]['name']):_0x5c9f5c[_0x1549bf]['interface'],'paused':_0x5c9f5c[_0x1549bf][_0xb0e4('0x6e')]||![],'penalty':_0x13d842[_0xb0e4('0x5a')]['penalty']||0x0}));}}return BPromise[_0xb0e4('0x8d')](_0x395e41);}})[_0xb0e4('0x26')](function(){return _0x150760;})[_0xb0e4('0x26')](respondWithResult(_0x231ddd,null))[_0xb0e4('0x4c')](handleError(_0x231ddd,null));};exports[_0xb0e4('0x90')]=function(_0x379674,_0x5279b1,_0x378de3){return db[_0xb0e4('0x48')][_0xb0e4('0x30')]({'where':{'id':_0x379674[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x5279b1,null))['then'](function(_0x322f70){if(_0x322f70){return _0x322f70[_0xb0e4('0x90')](_0x379674[_0xb0e4('0x3c')]['ids'])[_0xb0e4('0x26')](function(){if(_['isArray'](_0x379674[_0xb0e4('0x3c')][_0xb0e4('0x7f')])){for(var _0x392b9a=0x0;_0x392b9a<_0x379674['query'][_0xb0e4('0x7f')][_0xb0e4('0x3f')];_0x392b9a+=0x1){socket[_0xb0e4('0x91')](_0xb0e4('0x92'),{'UserId':Number(_0x379674['query'][_0xb0e4('0x7f')][_0x392b9a]),'VoiceQueueId':Number(_0x379674['params']['id'])});}}else{socket[_0xb0e4('0x91')](_0xb0e4('0x92'),{'UserId':Number(_0x379674[_0xb0e4('0x3c')][_0xb0e4('0x7f')]),'VoiceQueueId':Number(_0x379674[_0xb0e4('0x4e')]['id'])});}});}})[_0xb0e4('0x26')](function(_0x242a83){return db[_0xb0e4('0x79')][_0xb0e4('0x34')]({'where':{'VoiceQueueId':_0x379674[_0xb0e4('0x4e')]['id'],'UserId':_0x379674[_0xb0e4('0x3c')][_0xb0e4('0x7f')]}})[_0xb0e4('0x26')](function(){return _0x242a83;});})[_0xb0e4('0x26')](respondWithStatusCode(_0x5279b1,null))[_0xb0e4('0x4c')](handleError(_0x5279b1,null));};exports[_0xb0e4('0x96')]=function(_0x52ba8c,_0x441ad6,_0xf43e88){var _0x47213f={};var _0x3655d6={};var _0x49e982;var _0x290180;return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x52ba8c[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x441ad6,null))['then'](function(_0x4bbd32){if(_0x4bbd32){_0x49e982=_0x4bbd32;_0x3655d6[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db[_0xb0e4('0x6c')][_0xb0e4('0x37')]);_0x3655d6[_0xb0e4('0x3c')]=_[_0xb0e4('0x4f')](_0x52ba8c['query']);_0x3655d6[_0xb0e4('0x43')]=_[_0xb0e4('0x3b')](_0x3655d6[_0xb0e4('0x3a')],_0x3655d6[_0xb0e4('0x3c')]);_0x47213f[_0xb0e4('0x3e')]=_['intersection'](_0x3655d6[_0xb0e4('0x3a')],qs['fields'](_0x52ba8c[_0xb0e4('0x3c')][_0xb0e4('0x3d')]));_0x47213f[_0xb0e4('0x3e')]=_0x47213f[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x47213f[_0xb0e4('0x3e')]:_0x3655d6['model'];_0x47213f['order']=qs[_0xb0e4('0x41')](_0x52ba8c[_0xb0e4('0x3c')]['sort']);_0x47213f[_0xb0e4('0x42')]=qs[_0xb0e4('0x43')](_[_0xb0e4('0x44')](_0x52ba8c[_0xb0e4('0x3c')],_0x3655d6[_0xb0e4('0x43')]));if(_0x52ba8c[_0xb0e4('0x3c')][_0xb0e4('0x2b')]){_0x47213f[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x47213f[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x47213f[_0xb0e4('0x3e')],function(_0x40ff22){var _0x29b4fb={};_0x29b4fb[_0x40ff22]={'$like':'%'+_0x52ba8c['query']['filter']+'%'};return _0x29b4fb;})});}_0x47213f=_[_0xb0e4('0x45')]({},_0x47213f,_0x52ba8c[_0xb0e4('0x47')]);return _0x49e982[_0xb0e4('0x96')](_0x47213f);}})[_0xb0e4('0x26')](function(_0x2490a8){if(_0x2490a8){_0x290180=_0x2490a8[_0xb0e4('0x3f')];if(!_0x52ba8c['query'][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0x47213f['limit']=qs[_0xb0e4('0x21')](_0x52ba8c[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x47213f[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x52ba8c[_0xb0e4('0x3c')]['offset']);}return _0x49e982[_0xb0e4('0x96')](_0x47213f);}})[_0xb0e4('0x26')](function(_0x49fbf3){if(_0x49fbf3){return _0x49fbf3?{'count':_0x290180,'rows':_0x49fbf3}:null;}})[_0xb0e4('0x26')](respondWithResult(_0x441ad6,null))[_0xb0e4('0x4c')](handleError(_0x441ad6,null));};exports['getMembers']=function(_0x195cbd,_0x505517,_0x217d5e){var _0x762206={};var _0x34d607={};var _0x16a5d1;var _0x2cd857;return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0x195cbd[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x505517,null))[_0xb0e4('0x26')](function(_0xf4f29e){if(_0xf4f29e){_0x16a5d1=_0xf4f29e;_0x34d607[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db['UserVoiceQueueRt'][_0xb0e4('0x37')]);_0x34d607[_0xb0e4('0x3c')]=_[_0xb0e4('0x4f')](_0x195cbd['query']);_0x34d607[_0xb0e4('0x43')]=_['intersection'](_0x34d607['model'],_0x34d607['query']);_0x762206[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x34d607[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x195cbd[_0xb0e4('0x3c')]['fields']));_0x762206[_0xb0e4('0x3e')]=_0x762206[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x762206[_0xb0e4('0x3e')]:_0x34d607[_0xb0e4('0x3a')];_0x762206[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x195cbd[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0x762206['where']=qs[_0xb0e4('0x43')](_[_0xb0e4('0x44')](_0x195cbd['query'],_0x34d607[_0xb0e4('0x43')]));if(_0x195cbd['query'][_0xb0e4('0x2b')]){_0x762206[_0xb0e4('0x42')]=_['merge'](_0x762206[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x762206[_0xb0e4('0x3e')],function(_0x5ebdf8){var _0x1bfff1={};_0x1bfff1[_0x5ebdf8]={'$like':'%'+_0x195cbd[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0x1bfff1;})});}_0x762206=_[_0xb0e4('0x45')]({},_0x762206,_0x195cbd[_0xb0e4('0x47')]);return _0x16a5d1['getMembers'](_0x762206);}})[_0xb0e4('0x26')](function(_0x4457a5){if(_0x4457a5){_0x2cd857=_0x4457a5[_0xb0e4('0x3f')];if(!_0x195cbd[_0xb0e4('0x3c')][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0x762206[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x195cbd[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x762206[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0x195cbd[_0xb0e4('0x3c')][_0xb0e4('0x23')]);}return _0x16a5d1['getMembers'](_0x762206);}})[_0xb0e4('0x26')](function(_0x24bc26){return _0x24bc26?{'count':_0x2cd857,'rows':_0x24bc26}:null;})[_0xb0e4('0x26')](respondWithResult(_0x505517,null))[_0xb0e4('0x4c')](handleError(_0x505517,null));};exports[_0xb0e4('0x97')]=function(_0xddfd88,_0x2f72a8,_0x33d16c){var _0x587527={};var _0x51e5e8={};var _0x35832e;var _0x52fdd9;return db[_0xb0e4('0x48')][_0xb0e4('0x62')]({'where':{'id':_0xddfd88[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x2f72a8,null))[_0xb0e4('0x26')](function(_0xfb5ce7){if(_0xfb5ce7){_0x35832e=_0xfb5ce7;_0x51e5e8[_0xb0e4('0x3a')]=_[_0xb0e4('0x4f')](db['CmList'][_0xb0e4('0x37')]);_0x51e5e8['query']=_[_0xb0e4('0x4f')](_0xddfd88[_0xb0e4('0x3c')]);_0x51e5e8[_0xb0e4('0x43')]=_[_0xb0e4('0x3b')](_0x51e5e8[_0xb0e4('0x3a')],_0x51e5e8[_0xb0e4('0x3c')]);_0x587527[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x51e5e8[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0xddfd88['query'][_0xb0e4('0x3d')]));_0x587527[_0xb0e4('0x3e')]=_0x587527[_0xb0e4('0x3e')][_0xb0e4('0x3f')]?_0x587527[_0xb0e4('0x3e')]:_0x51e5e8[_0xb0e4('0x3a')];_0x587527[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0xddfd88[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0x587527[_0xb0e4('0x42')]=qs['filters'](_[_0xb0e4('0x44')](_0xddfd88['query'],_0x51e5e8[_0xb0e4('0x43')]));if(_0xddfd88[_0xb0e4('0x3c')]['filter']){_0x587527[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0x587527[_0xb0e4('0x42')],{'$or':_[_0xb0e4('0x2d')](_0x587527[_0xb0e4('0x3e')],function(_0x10ad16){var _0x6bacad={};_0x6bacad[_0x10ad16]={'$like':'%'+_0xddfd88['query'][_0xb0e4('0x2b')]+'%'};return _0x6bacad;})});}_0x587527=_[_0xb0e4('0x45')]({},_0x587527,_0xddfd88[_0xb0e4('0x47')]);return _0x35832e[_0xb0e4('0x97')](_0x587527);}})[_0xb0e4('0x26')](function(_0x4fd36d){if(_0x4fd36d){_0x52fdd9=_0x4fd36d[_0xb0e4('0x3f')];if(!_0xddfd88[_0xb0e4('0x3c')][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0x587527[_0xb0e4('0x21')]=qs['limit'](_0xddfd88[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0x587527[_0xb0e4('0x23')]=qs[_0xb0e4('0x23')](_0xddfd88[_0xb0e4('0x3c')][_0xb0e4('0x23')]);}return _0x35832e[_0xb0e4('0x97')](_0x587527);}})[_0xb0e4('0x26')](function(_0x1ff972){if(_0x1ff972){return _0x1ff972?{'count':_0x52fdd9,'rows':_0x1ff972}:null;}})[_0xb0e4('0x26')](respondWithResult(_0x2f72a8,null))[_0xb0e4('0x4c')](handleError(_0x2f72a8,null));};exports[_0xb0e4('0x98')]=function(_0x993bd2,_0x4e20a6,_0xb33f71){var _0x4de18e=moment()[_0xb0e4('0x7b')](_0xb0e4('0x99'));var _0x2b5fe4,_0x340557;return db['VoiceQueue'][_0xb0e4('0x30')]({'where':{'id':_0x993bd2['params']['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x4e20a6,null))['then'](function(_0x197dbb){if(_0x197dbb){_0x340557=_0x197dbb;return _0x197dbb['addLists'](_0x993bd2['body']['ids'],_[_0xb0e4('0x57')](_0x993bd2[_0xb0e4('0x5a')],['ids','id'])||{});}return null;})[_0xb0e4('0x94')](function(_0x1dffce){var _0x1a6698;_0x2b5fe4=_0x1dffce||[];var _0x51be52=[];if(_0x1dffce){for(var _0x500950=0x0;_0x500950<_0x1dffce['length'];_0x500950+=0x1){var _0x35927b=_0x1dffce[_0x500950][_0xb0e4('0x27')]({'plain':!![]});_0x340557[_0xb0e4('0x9a')]=_0x993bd2[_0xb0e4('0x5a')]['dialCheckDuplicateType']?_0x993bd2[_0xb0e4('0x5a')][_0xb0e4('0x9a')]:_0x340557[_0xb0e4('0x9a')];switch(_0x340557[_0xb0e4('0x9a')]){case _0xb0e4('0x9b'):_0x1a6698=squel[_0xb0e4('0x9c')]()[_0xb0e4('0x9d')](_0xb0e4('0x9e'))[_0xb0e4('0x9f')]([_0xb0e4('0xa0'),_0xb0e4('0xa1'),_0xb0e4('0xa2'),_0xb0e4('0xa3'),_0xb0e4('0x60'),_0xb0e4('0x58'),_0xb0e4('0x59')],squel[_0xb0e4('0x80')]()[_0xb0e4('0x81')](_0xb0e4('0xa0'),_0xb0e4('0xa0'))['field']('\x27'+_0x4de18e+'\x27',_0xb0e4('0xa1'))[_0xb0e4('0x81')]('id',_0xb0e4('0xa2'))['field'](_0x35927b[_0xb0e4('0xa4')][_0xb0e4('0xa5')](),'ListId')[_0xb0e4('0x81')](_0x993bd2[_0xb0e4('0x4e')]['id'][_0xb0e4('0xa5')](),'VoiceQueueId')[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27',_0xb0e4('0x58'))[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27',_0xb0e4('0x59'))[_0xb0e4('0xa6')](_0xb0e4('0xa7'))[_0xb0e4('0x42')]('deletedAt\x20IS\x20NULL')['where']('ListId\x20=\x20?',_0x35927b[_0xb0e4('0xa4')][_0xb0e4('0xa5')]())[_0xb0e4('0x42')](_0xb0e4('0xa8'))[_0xb0e4('0x42')](_0xb0e4('0xa9'),squel['select']()['field'](_0xb0e4('0xaa'))[_0xb0e4('0xa6')](_0xb0e4('0xab'))['where'](_0xb0e4('0xac'),_0x993bd2['params']['id']['toString']()))[_0xb0e4('0x42')]('phone\x20NOT\x20IN\x20(?)',squel[_0xb0e4('0x80')]()[_0xb0e4('0x81')](_0xb0e4('0xad'))[_0xb0e4('0xa6')](_0xb0e4('0x9e'))[_0xb0e4('0x42')](_0xb0e4('0xac'),_0x993bd2[_0xb0e4('0x4e')]['id']['toString']())))[_0xb0e4('0xa5')]();break;case _0xb0e4('0xae'):_0x1a6698=squel[_0xb0e4('0x9c')]()['into'](_0xb0e4('0x9e'))['fromQuery']([_0xb0e4('0xa0'),_0xb0e4('0xa1'),_0xb0e4('0xa2'),_0xb0e4('0xa3'),'VoiceQueueId',_0xb0e4('0x58'),_0xb0e4('0x59')],squel['select']()[_0xb0e4('0x81')](_0xb0e4('0xa0'),'phone')[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27','scheduledAt')[_0xb0e4('0x81')]('id','ContactId')['field'](_0x35927b[_0xb0e4('0xa4')][_0xb0e4('0xa5')](),_0xb0e4('0xa3'))[_0xb0e4('0x81')](_0x993bd2['params']['id'][_0xb0e4('0xa5')](),'VoiceQueueId')[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27',_0xb0e4('0x58'))[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27',_0xb0e4('0x59'))[_0xb0e4('0xa6')](_0xb0e4('0xa7'))[_0xb0e4('0x42')]('deletedAt\x20IS\x20NULL')[_0xb0e4('0x42')](_0xb0e4('0xaf'),_0x35927b['CmListId'][_0xb0e4('0xa5')]())[_0xb0e4('0x42')](_0xb0e4('0xa8'))['where'](_0xb0e4('0xa9'),squel[_0xb0e4('0x80')]()[_0xb0e4('0x81')]('COALESCE(phone,\x27\x27)')['from'](_0xb0e4('0x9e'))['where'](_0xb0e4('0xac'),_0x993bd2[_0xb0e4('0x4e')]['id'][_0xb0e4('0xa5')]())))[_0xb0e4('0xa5')]();break;default:_0x1a6698=squel[_0xb0e4('0x9c')]()[_0xb0e4('0x9d')](_0xb0e4('0x9e'))[_0xb0e4('0x9f')]([_0xb0e4('0xa0'),_0xb0e4('0xa1'),'ContactId','ListId',_0xb0e4('0x60'),'createdAt',_0xb0e4('0x59')],squel[_0xb0e4('0x80')]()[_0xb0e4('0x81')]('phone','phone')[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27',_0xb0e4('0xa1'))['field']('id',_0xb0e4('0xa2'))['field'](_0x35927b['CmListId'][_0xb0e4('0xa5')](),_0xb0e4('0xa3'))[_0xb0e4('0x81')](_0x993bd2['params']['id'][_0xb0e4('0xa5')](),_0xb0e4('0x60'))[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27','createdAt')[_0xb0e4('0x81')]('\x27'+_0x4de18e+'\x27','updatedAt')[_0xb0e4('0xa6')](_0xb0e4('0xa7'))['where'](_0xb0e4('0xb0'))[_0xb0e4('0x42')](_0xb0e4('0xaf'),_0x35927b[_0xb0e4('0xa4')][_0xb0e4('0xa5')]())['where'](_0xb0e4('0xa8')))[_0xb0e4('0xa5')]();}_0x51be52[_0xb0e4('0x88')](db['sequelize'][_0xb0e4('0x3c')](_0x1a6698));}return BPromise[_0xb0e4('0x8d')](_0x51be52);}})[_0xb0e4('0x26')](function(){var _0x4bb0fd=[];var _0x5d7907=squel['insert']()[_0xb0e4('0x9d')](_0xb0e4('0xb1'))[_0xb0e4('0x9f')]([_0xb0e4('0xb2'),_0xb0e4('0xa0'),_0xb0e4('0xb3'),_0xb0e4('0x58'),_0xb0e4('0x59')],squel[_0xb0e4('0x80')]()['field']('h.id')['field'](_0xb0e4('0xb4'))['field']('ci.OrderBy+1')['field']('\x27'+_0x4de18e+'\x27',_0xb0e4('0x58'))['field']('\x27'+_0x4de18e+'\x27',_0xb0e4('0x59'))['from'](_0xb0e4('0xb5'),'ci')['join'](_0xb0e4('0x9e'),'h',_0xb0e4('0xb6'))[_0xb0e4('0x42')](_0xb0e4('0xb7'),_0x4de18e)[_0xb0e4('0x42')](_0xb0e4('0xb8'),'PHONE'))[_0xb0e4('0xa5')]();_0x4bb0fd[_0xb0e4('0x88')](db[_0xb0e4('0x73')][_0xb0e4('0x3c')](_0x5d7907));return BPromise[_0xb0e4('0x8d')](_0x4bb0fd);})['then'](function(){return _0x2b5fe4;})[_0xb0e4('0x26')](respondWithResult(_0x4e20a6,null))[_0xb0e4('0x4c')](handleError(_0x4e20a6,null));};exports['removeLists']=function(_0x58b8c9,_0x5ef04d,_0x5e7e48){return db['VoiceQueue']['find']({'where':{'id':_0x58b8c9[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x5ef04d,null))['then'](function(_0x5eecf5){if(_0x5eecf5){return _0x5eecf5[_0xb0e4('0xb9')](_0x58b8c9[_0xb0e4('0x3c')]['ids']);}})['then'](function(_0x4169c9){if(_0x4169c9){return db[_0xb0e4('0x5d')]['destroy']({'where':{'ListId':_0x58b8c9['query']['ids'],'VoiceQueueId':_0x58b8c9[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](function(){return _0x4169c9;});}})['then'](respondWithStatusCode(_0x5ef04d,null))[_0xb0e4('0x4c')](handleError(_0x5ef04d,null));};exports[_0xb0e4('0xba')]=function(_0x19ad57,_0x594ec9,_0x30046d){var _0xda96ad={};var _0x3dc077={};var _0xbaae34;var _0xc62649;return db[_0xb0e4('0x48')]['findOne']({'where':{'id':_0x19ad57[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x594ec9,null))[_0xb0e4('0x26')](function(_0x5b8771){if(_0x5b8771){_0xbaae34=_0x5b8771;_0x3dc077['model']=_[_0xb0e4('0x4f')](db['CmList'][_0xb0e4('0x37')]);_0x3dc077['query']=_[_0xb0e4('0x4f')](_0x19ad57[_0xb0e4('0x3c')]);_0x3dc077[_0xb0e4('0x43')]=_['intersection'](_0x3dc077[_0xb0e4('0x3a')],_0x3dc077[_0xb0e4('0x3c')]);_0xda96ad[_0xb0e4('0x3e')]=_[_0xb0e4('0x3b')](_0x3dc077[_0xb0e4('0x3a')],qs[_0xb0e4('0x3d')](_0x19ad57['query'][_0xb0e4('0x3d')]));_0xda96ad[_0xb0e4('0x3e')]=_0xda96ad['attributes'][_0xb0e4('0x3f')]?_0xda96ad[_0xb0e4('0x3e')]:_0x3dc077[_0xb0e4('0x3a')];_0xda96ad[_0xb0e4('0x5f')]=qs[_0xb0e4('0x41')](_0x19ad57[_0xb0e4('0x3c')][_0xb0e4('0x41')]);_0xda96ad[_0xb0e4('0x42')]=qs['filters'](_[_0xb0e4('0x44')](_0x19ad57[_0xb0e4('0x3c')],_0x3dc077[_0xb0e4('0x43')]));if(_0x19ad57[_0xb0e4('0x3c')][_0xb0e4('0x2b')]){_0xda96ad[_0xb0e4('0x42')]=_[_0xb0e4('0x45')](_0xda96ad['where'],{'$or':_[_0xb0e4('0x2d')](_0xda96ad['attributes'],function(_0xb130d5){var _0x3ab153={};_0x3ab153[_0xb130d5]={'$like':'%'+_0x19ad57[_0xb0e4('0x3c')][_0xb0e4('0x2b')]+'%'};return _0x3ab153;})});}_0xda96ad=_[_0xb0e4('0x45')]({},_0xda96ad,_0x19ad57['options']);return _0xbaae34[_0xb0e4('0xba')](_0xda96ad);}})[_0xb0e4('0x26')](function(_0x50c88d){if(_0x50c88d){_0xc62649=_0x50c88d['length'];if(!_0x19ad57[_0xb0e4('0x3c')][_0xb0e4('0x5e')](_0xb0e4('0x40'))){_0xda96ad[_0xb0e4('0x21')]=qs[_0xb0e4('0x21')](_0x19ad57[_0xb0e4('0x3c')][_0xb0e4('0x21')]);_0xda96ad[_0xb0e4('0x23')]=qs['offset'](_0x19ad57['query'][_0xb0e4('0x23')]);}return _0xbaae34[_0xb0e4('0xba')](_0xda96ad);}})['then'](function(_0x4a23bb){if(_0x4a23bb){return _0x4a23bb?{'count':_0xc62649,'rows':_0x4a23bb}:null;}})['then'](respondWithResult(_0x594ec9,null))[_0xb0e4('0x4c')](handleError(_0x594ec9,null));};exports['addBlackLists']=function(_0x9f7bae,_0x589af6,_0x14457a){var _0x594c8c,_0x9e11d1;return db[_0xb0e4('0x48')][_0xb0e4('0x30')]({'where':{'id':_0x9f7bae[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x589af6,null))[_0xb0e4('0x26')](function(_0x17930a){if(_0x17930a){_0x9e11d1=_0x17930a;return _0x17930a[_0xb0e4('0xbb')](_0x9f7bae[_0xb0e4('0x5a')]['ids'],_[_0xb0e4('0x57')](_0x9f7bae[_0xb0e4('0x5a')],[_0xb0e4('0x7f'),'id'])||{});}return null;})[_0xb0e4('0x94')](function(_0x5b2b04){var _0x5164d5;_0x594c8c=_0x5b2b04||[];var _0x5b2384=[];if(_0x5b2b04){for(var _0x5646ca=0x0;_0x5646ca<_0x5b2b04['length'];_0x5646ca+=0x1){var _0x1ccc92=_0x5b2b04[_0x5646ca][_0xb0e4('0x27')]({'plain':!![]});_0x5164d5=squel[_0xb0e4('0x9c')]()[_0xb0e4('0x9d')](_0xb0e4('0xbc'))[_0xb0e4('0x9f')]([_0xb0e4('0xa0'),_0xb0e4('0xa2'),'ListId',_0xb0e4('0x60'),_0xb0e4('0x58'),_0xb0e4('0x59')],squel[_0xb0e4('0x80')]()[_0xb0e4('0x81')](_0xb0e4('0xa0'),_0xb0e4('0xa0'))[_0xb0e4('0x81')]('id',_0xb0e4('0xa2'))['field'](_0x1ccc92[_0xb0e4('0xa4')][_0xb0e4('0xa5')](),_0xb0e4('0xa3'))[_0xb0e4('0x81')](_0x9f7bae[_0xb0e4('0x4e')]['id'][_0xb0e4('0xa5')](),'VoiceQueueId')['field'](_0xb0e4('0xbd'),_0xb0e4('0x58'))[_0xb0e4('0x81')](_0xb0e4('0xbd'),_0xb0e4('0x59'))[_0xb0e4('0xa6')](_0xb0e4('0xa7'))[_0xb0e4('0x42')](_0xb0e4('0xb0'))[_0xb0e4('0x42')](_0xb0e4('0xaf'),_0x1ccc92[_0xb0e4('0xa4')]['toString']())[_0xb0e4('0x42')](_0xb0e4('0xa8')))['toString']();_0x5b2384[_0xb0e4('0x88')](db[_0xb0e4('0x73')][_0xb0e4('0x3c')](_0x5164d5));}return BPromise[_0xb0e4('0x8d')](_0x5b2384);}})[_0xb0e4('0x26')](function(){return _0x594c8c;})[_0xb0e4('0x26')](respondWithResult(_0x589af6,null))['catch'](handleError(_0x589af6,null));};exports[_0xb0e4('0xbe')]=function(_0x41df90,_0x1c5337,_0x22834f){return db[_0xb0e4('0x48')][_0xb0e4('0x30')]({'where':{'id':_0x41df90[_0xb0e4('0x4e')]['id']}})[_0xb0e4('0x26')](handleEntityNotFound(_0x1c5337,null))[_0xb0e4('0x26')](function(_0x366abb){if(_0x366abb){return _0x366abb[_0xb0e4('0xbe')](_0x41df90['query'][_0xb0e4('0x7f')]);}})[_0xb0e4('0x26')](function(_0x55d5aa){if(_0x55d5aa){return db['CmHopperBlack']['destroy']({'where':{'ListId':_0x41df90[_0xb0e4('0x3c')]['ids'],'VoiceQueueId':_0x41df90['params']['id']}})[_0xb0e4('0x26')](function(){return _0x55d5aa;});}})[_0xb0e4('0x26')](respondWithStatusCode(_0x1c5337,null))['catch'](handleError(_0x1c5337,null));};
\ No newline at end of file
+var _0x8c46=['ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./voiceQueue.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','VoiceQueues','inbound','QueueCampaigns','outbound','filter','map','value','includes','type','find','name','UserProfileResource','then','end','sendStatus','error','send','index','VoiceQueue','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','includeAll','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','omit','createdAt','updatedAt','userProfileId','autoAssociation','findOne','CmHopper','order','getHopperHistories','CmHopperHistory','VoiceQueueId','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','teams','User','Agents','online','interface','flatMap','forEach','penalty','transaction','each','upsert','findOrCreate','isNil','format','SIP/%s','voicePause','emit','Team','field','from','team_has_voice_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','sequelize','QueryTypes','SELECT','every','TeamId','union','compact','removeTeams','ids','isEmpty','removeAgents','UserVoiceQueueRt','userVoiceQueue:remove','addAgents','push','all','getAgents','getMembers','getLists','CmList','addLists','spread','dialCheckDuplicateType','insert','into','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','select','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','COALESCE(calleridnum,\x27\x27)','cm_hopper_final','phone\x20NOT\x20IN\x20(?)','onlyIfOpen','ListId\x20=\x20?','COALESCE(phone,\x27\x27)','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','ci.ItemClass=?','PHONE','removeLists','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse'];(function(_0x36f415,_0x19680a){var _0x2488b1=function(_0x46a8be){while(--_0x46a8be){_0x36f415['push'](_0x36f415['shift']());}};_0x2488b1(++_0x19680a);}(_0x8c46,0x171));var _0x68c4=function(_0xddb6b4,_0x36c947){_0xddb6b4=_0xddb6b4-0x0;var _0x4cbc03=_0x8c46[_0xddb6b4];return _0x4cbc03;};'use strict';var emlformat=require(_0x68c4('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x68c4('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x68c4('0x2'));var Mustache=require(_0x68c4('0x3'));var util=require(_0x68c4('0x4'));var path=require(_0x68c4('0x5'));var sox=require(_0x68c4('0x6'));var csv=require(_0x68c4('0x7'));var ejs=require(_0x68c4('0x8'));var fs=require('fs');var fs_extra=require(_0x68c4('0x9'));var _=require(_0x68c4('0xa'));var squel=require(_0x68c4('0xb'));var crypto=require('crypto');var jsforce=require(_0x68c4('0xc'));var deskjs=require(_0x68c4('0xd'));var toCsv=require(_0x68c4('0x7'));var querystring=require('querystring');var Papa=require(_0x68c4('0xe'));var Redis=require(_0x68c4('0xf'));var authService=require(_0x68c4('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x68c4('0x11'));var logger=require(_0x68c4('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x68c4('0x13'));var licenseUtil=require(_0x68c4('0x14'));var db=require(_0x68c4('0x15'))['db'];config['redis']=_[_0x68c4('0x16')](config[_0x68c4('0x17')],{'host':_0x68c4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x68c4('0x17')]));require(_0x68c4('0x19'))[_0x68c4('0x1a')](socket);function respondWithStatusCode(_0x52f031,_0x211793){_0x211793=_0x211793||0xcc;return function(_0x38fd57){if(_0x38fd57){return _0x52f031['sendStatus'](_0x211793);}return _0x52f031[_0x68c4('0x1b')](_0x211793)['end']();};}function respondWithResult(_0x1a7045,_0x556aa6){_0x556aa6=_0x556aa6||0xc8;return function(_0x5497bf){if(_0x5497bf){return _0x1a7045[_0x68c4('0x1b')](_0x556aa6)[_0x68c4('0x1c')](_0x5497bf);}};}function respondWithFilteredResult(_0x4f4797,_0x2d6c1b){return function(_0x1d757c){if(_0x1d757c){var _0x38ac38=typeof _0x2d6c1b[_0x68c4('0x1d')]===_0x68c4('0x1e')&&typeof _0x2d6c1b[_0x68c4('0x1f')]===_0x68c4('0x1e');var _0x415ef2=_0x1d757c[_0x68c4('0x20')];var _0x3befda=_0x38ac38?0x0:_0x2d6c1b[_0x68c4('0x1d')];var _0x58f87d=_0x38ac38?_0x1d757c[_0x68c4('0x20')]:_0x2d6c1b['offset']+_0x2d6c1b['limit'];var _0x34d3a6;if(_0x58f87d>=_0x415ef2){_0x58f87d=_0x415ef2;_0x34d3a6=0xc8;}else{_0x34d3a6=0xce;}_0x4f4797[_0x68c4('0x1b')](_0x34d3a6);return _0x4f4797[_0x68c4('0x21')](_0x68c4('0x22'),_0x3befda+'-'+_0x58f87d+'/'+_0x415ef2)['json'](_0x1d757c);}return null;};}function patchUpdates(_0x35e865){return function(_0x310bc6){try{jsonpatch['apply'](_0x310bc6,_0x35e865,!![]);}catch(_0x201742){return BPromise[_0x68c4('0x23')](_0x201742);}return _0x310bc6[_0x68c4('0x24')]();};}function saveUpdates(_0x10278e,_0x12ecd1){return function(_0x20e78b){if(_0x20e78b){return _0x20e78b[_0x68c4('0x25')](_0x10278e)['then'](function(_0x2ff4a5){return _0x2ff4a5;});}return null;};}function removeEntity(_0x55355d,_0xf16a78){return function(_0x10c67e){if(_0x10c67e){return _0x10c67e[_0x68c4('0x26')]()['then'](function(){var _0x1e14db=_0x10c67e[_0x68c4('0x27')]({'plain':!![]});var _0x496f4d=[{'name':_0x68c4('0x28'),'value':_0x68c4('0x29'),'ignore':![]},{'name':_0x68c4('0x2a'),'value':_0x68c4('0x2b'),'ignore':![]}];var _0x5589d6=_(_0x496f4d)[_0x68c4('0x2c')]('ignore')[_0x68c4('0x2d')](_0x68c4('0x2e'))['value']();if(_[_0x68c4('0x2f')](_0x5589d6,_0x1e14db[_0x68c4('0x30')])){return;}var _0x48e4bd=_[_0x68c4('0x31')](_0x496f4d,[_0x68c4('0x2e'),_0x1e14db[_0x68c4('0x30')]])[_0x68c4('0x32')];return db[_0x68c4('0x33')][_0x68c4('0x26')]({'where':{'type':_0x48e4bd,'resourceId':_0x1e14db['id']}})[_0x68c4('0x34')](function(){return _0x10c67e;});})[_0x68c4('0x34')](function(){_0x55355d[_0x68c4('0x1b')](0xcc)[_0x68c4('0x35')]();});}};}function handleEntityNotFound(_0x19bc4a,_0x925289){return function(_0x302237){if(!_0x302237){_0x19bc4a[_0x68c4('0x36')](0x194);}return _0x302237;};}function handleError(_0x3ce082,_0x3a3a75){_0x3a3a75=_0x3a3a75||0x1f4;return function(_0x33fcc7){logger[_0x68c4('0x37')](_0x33fcc7['stack']);if(_0x33fcc7[_0x68c4('0x32')]){delete _0x33fcc7[_0x68c4('0x32')];}_0x3ce082[_0x68c4('0x1b')](_0x3a3a75)[_0x68c4('0x38')](_0x33fcc7);};}exports[_0x68c4('0x39')]=function(_0x5a4e0c,_0x32fef0){var _0x4f4672={},_0x586e9c={},_0x4dcd5b={'count':0x0,'rows':[]};var _0xb86553=_[_0x68c4('0x2d')](db[_0x68c4('0x3a')][_0x68c4('0x3b')],function(_0x5953cc){return{'name':_0x5953cc[_0x68c4('0x3c')],'type':_0x5953cc[_0x68c4('0x30')][_0x68c4('0x3d')]};});_0x586e9c['model']=_[_0x68c4('0x2d')](_0xb86553,_0x68c4('0x32'));_0x586e9c[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x5a4e0c[_0x68c4('0x3e')]);_0x586e9c[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x586e9c[_0x68c4('0x42')],_0x586e9c[_0x68c4('0x3e')]);_0x4f4672[_0x68c4('0x43')]=_['intersection'](_0x586e9c['model'],qs[_0x68c4('0x44')](_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x4f4672[_0x68c4('0x43')]=_0x4f4672[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4f4672[_0x68c4('0x43')]:_0x586e9c[_0x68c4('0x42')];if(!_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x4f4672[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x5a4e0c['query']['limit']);_0x4f4672[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x4f4672['order']=qs[_0x68c4('0x48')](_0x5a4e0c[_0x68c4('0x3e')]['sort']);_0x4f4672['where']=qs['filters'](_[_0x68c4('0x49')](_0x5a4e0c['query'],_0x586e9c[_0x68c4('0x40')]),_0xb86553);if(_0x5a4e0c['query'][_0x68c4('0x2c')]){_0x4f4672[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x4f4672[_0x68c4('0x4a')],{'$or':_['map'](_0xb86553,function(_0x3d82be){if(_0x3d82be[_0x68c4('0x30')]!==_0x68c4('0x4c')){var _0x10cf85={};_0x10cf85[_0x3d82be['name']]={'$like':'%'+_0x5a4e0c[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x10cf85;}})});}_0x4f4672=_[_0x68c4('0x4b')]({},_0x4f4672,_0x5a4e0c[_0x68c4('0x4d')]);var _0x215183={'where':_0x4f4672['where']};return db['VoiceQueue']['count'](_0x215183)[_0x68c4('0x34')](function(_0x268bf4){_0x4dcd5b[_0x68c4('0x20')]=_0x268bf4;if(_0x5a4e0c[_0x68c4('0x3e')]['includeAll']){_0x4f4672[_0x68c4('0x4e')]=[{'all':!![]}];}return db[_0x68c4('0x3a')][_0x68c4('0x4f')](_0x4f4672);})[_0x68c4('0x34')](function(_0x25be7a){_0x4dcd5b[_0x68c4('0x50')]=_0x25be7a;return _0x4dcd5b;})[_0x68c4('0x34')](respondWithFilteredResult(_0x32fef0,_0x4f4672))[_0x68c4('0x51')](handleError(_0x32fef0,null));};exports[_0x68c4('0x52')]=function(_0x9d03e6,_0x1ba892){var _0x4eb9bb={'raw':![],'where':{'id':_0x9d03e6['params']['id']}},_0x1c5206={};_0x1c5206[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x3a')][_0x68c4('0x3b')]);_0x1c5206['query']=_[_0x68c4('0x3f')](_0x9d03e6['query']);_0x1c5206[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x1c5206['model'],_0x1c5206[_0x68c4('0x3e')]);_0x4eb9bb[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x1c5206[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x9d03e6[_0x68c4('0x3e')]['fields']));_0x4eb9bb[_0x68c4('0x43')]=_0x4eb9bb[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4eb9bb[_0x68c4('0x43')]:_0x1c5206['model'];if(_0x9d03e6[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x4eb9bb[_0x68c4('0x4e')]=[{'all':!![]}];}_0x4eb9bb=_[_0x68c4('0x4b')]({},_0x4eb9bb,_0x9d03e6[_0x68c4('0x4d')]);return db[_0x68c4('0x3a')]['find'](_0x4eb9bb)[_0x68c4('0x34')](handleEntityNotFound(_0x1ba892,null))[_0x68c4('0x34')](respondWithResult(_0x1ba892,null))[_0x68c4('0x51')](handleError(_0x1ba892,null));};exports['create']=function(_0x354035,_0x2e98b0){return db['VoiceQueue']['create'](_0x354035[_0x68c4('0x54')],{})[_0x68c4('0x34')](function(_0xa727fc){var _0x31eda2=_0x354035[_0x68c4('0x55')][_0x68c4('0x27')]({'plain':!![]});if(!_0x31eda2)throw new Error(_0x68c4('0x56'));if(_0x31eda2[_0x68c4('0x57')]==='user'){var _0xb62438=_0xa727fc['get']({'plain':!![]});var _0x59157e=[{'name':'VoiceQueues','value':_0x68c4('0x29')},{'name':_0x68c4('0x2a'),'value':_0x68c4('0x2b')}];var _0x50d030=_[_0x68c4('0x31')](_0x59157e,[_0x68c4('0x2e'),_0xb62438['type']])[_0x68c4('0x32')];return db['UserProfileSection'][_0x68c4('0x31')]({'where':{'name':_0x50d030,'userProfileId':_0x31eda2['userProfileId']},'raw':!![]})[_0x68c4('0x34')](function(_0x21bfb8){if(_0x21bfb8&&_0x21bfb8['autoAssociation']===0x0){return db[_0x68c4('0x33')][_0x68c4('0x58')]({'name':_0xb62438['name'],'resourceId':_0xb62438['id'],'type':_0x21bfb8[_0x68c4('0x32')],'sectionId':_0x21bfb8['id']},{})[_0x68c4('0x34')](function(){return _0xa727fc;});}else{return _0xa727fc;}})['catch'](function(_0x1511f0){logger[_0x68c4('0x37')](_0x68c4('0x59'),_0x1511f0);throw _0x1511f0;});}return _0xa727fc;})[_0x68c4('0x34')](respondWithResult(_0x2e98b0,0xc9))[_0x68c4('0x51')](handleError(_0x2e98b0,null));};exports[_0x68c4('0x5a')]=function(_0x1a2ede,_0x22424b){var _0x24bb5d={'where':{'id':_0x1a2ede[_0x68c4('0x5b')]['id']}},_0x52aa52={};_0x52aa52[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x3a')][_0x68c4('0x3b')]);_0x24bb5d[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x52aa52['model'],qs['fields'](_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x24bb5d['attributes']=_0x24bb5d[_0x68c4('0x43')][_0x68c4('0x45')]?_0x24bb5d[_0x68c4('0x43')]:_0x52aa52[_0x68c4('0x42')];if(_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x24bb5d['include']=[{'all':!![]}];}_0x24bb5d=_[_0x68c4('0x4b')]({},_0x24bb5d,_0x1a2ede[_0x68c4('0x4d')]);return db[_0x68c4('0x3a')][_0x68c4('0x31')](_0x24bb5d)[_0x68c4('0x34')](handleEntityNotFound(_0x22424b,null))['then'](function(_0x4bb60c){if(_0x4bb60c){var _0x200dba=_0x4bb60c[_0x68c4('0x27')]({'plain':!![]});_0x200dba=qs[_0x68c4('0x5c')](_0x200dba,['id',_0x68c4('0x5d'),_0x68c4('0x5e')]);_0x1a2ede['body']=_[_0x68c4('0x5c')](_0x1a2ede[_0x68c4('0x54')],['id',_0x68c4('0x5d'),_0x68c4('0x5e')]);return db[_0x68c4('0x3a')][_0x68c4('0x58')](_[_0x68c4('0x4b')](_0x200dba,_0x1a2ede[_0x68c4('0x54')]),{'include':_0x1a2ede[_0x68c4('0x3e')][_0x68c4('0x53')]?[{'all':!![]}]:undefined})['then'](function(_0x418647){var _0x482e3e=_0x1a2ede[_0x68c4('0x55')][_0x68c4('0x27')]({'plain':!![]});if(!_0x482e3e)throw new Error(_0x68c4('0x56'));if(_0x482e3e['role']===_0x68c4('0x55')){var _0x4fa64d=_0x418647[_0x68c4('0x27')]({'plain':!![]});var _0x1a6594=[{'name':_0x68c4('0x28'),'value':_0x68c4('0x29')},{'name':_0x68c4('0x2a'),'value':'outbound'}];var _0x3882ca=_[_0x68c4('0x31')](_0x1a6594,[_0x68c4('0x2e'),_0x4fa64d[_0x68c4('0x30')]])[_0x68c4('0x32')];return db['UserProfileSection'][_0x68c4('0x31')]({'where':{'name':_0x3882ca,'userProfileId':_0x482e3e[_0x68c4('0x5f')]},'raw':!![]})[_0x68c4('0x34')](function(_0x550ed2){if(_0x550ed2&&_0x550ed2[_0x68c4('0x60')]===0x0){return db[_0x68c4('0x33')][_0x68c4('0x58')]({'name':_0x4fa64d['name'],'resourceId':_0x4fa64d['id'],'type':_0x550ed2[_0x68c4('0x32')],'sectionId':_0x550ed2['id']},{})['then'](function(){return _0x418647;});}else{return _0x418647;}})['catch'](function(_0x43af21){logger[_0x68c4('0x37')](_0x68c4('0x59'),_0x43af21);throw _0x43af21;});}return _0x418647;});}})['then'](respondWithResult(_0x22424b,0xc9))['catch'](handleError(_0x22424b,null));};exports[_0x68c4('0x25')]=function(_0x1ead72,_0x4b0788){if(_0x1ead72[_0x68c4('0x54')]['id']){delete _0x1ead72[_0x68c4('0x54')]['id'];}return db['VoiceQueue']['find']({'where':{'id':_0x1ead72[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4b0788,null))[_0x68c4('0x34')](saveUpdates(_0x1ead72[_0x68c4('0x54')],null))['then'](respondWithResult(_0x4b0788,null))[_0x68c4('0x51')](handleError(_0x4b0788,null));};exports['destroy']=function(_0x220ac8,_0x4208a4){return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x220ac8[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4208a4,null))[_0x68c4('0x34')](removeEntity(_0x4208a4,null))[_0x68c4('0x51')](handleError(_0x4208a4,null));};exports['getHoppers']=function(_0x2d4c32,_0x4a0f4e,_0x60af6f){var _0x2314b2={'raw':![],'where':{}};var _0xce0b25={};var _0x242b48={'count':0x0,'rows':[]};return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0x2d4c32[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x4a0f4e,null))[_0x68c4('0x34')](function(_0x227358){if(_0x227358){_0xce0b25[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x62')][_0x68c4('0x3b')]);_0xce0b25[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x2d4c32[_0x68c4('0x3e')]);_0xce0b25[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0xce0b25[_0x68c4('0x42')],_0xce0b25[_0x68c4('0x3e')]);_0x2314b2[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0xce0b25[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x2d4c32['query'][_0x68c4('0x44')]));_0x2314b2[_0x68c4('0x43')]=_0x2314b2['attributes'][_0x68c4('0x45')]?_0x2314b2[_0x68c4('0x43')]:_0xce0b25['model'];if(!_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x2314b2[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x2314b2['offset']=qs[_0x68c4('0x1d')](_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x2314b2[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x2d4c32['query']['sort']);_0x2314b2[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x2d4c32[_0x68c4('0x3e')],_0xce0b25[_0x68c4('0x40')]));_0x2314b2[_0x68c4('0x4a')]['VoiceQueueId']=_0x227358['id'];if(_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x2314b2['where']=_[_0x68c4('0x4b')](_0x2314b2[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x2314b2[_0x68c4('0x43')],function(_0x4645e9){var _0x3aebef={};_0x3aebef[_0x4645e9]={'$like':'%'+_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x3aebef;})});}_0x2314b2=_[_0x68c4('0x4b')]({},_0x2314b2,_0x2d4c32[_0x68c4('0x4d')]);return db[_0x68c4('0x62')][_0x68c4('0x20')]({'where':_0x2314b2[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x562722){_0x242b48['count']=_0x562722;if(_0x2d4c32[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x2314b2[_0x68c4('0x4e')]=[{'all':!![]}];}return db['CmHopper']['findAll'](_0x2314b2);})[_0x68c4('0x34')](function(_0x2ec0af){_0x242b48['rows']=_0x2ec0af;return _0x242b48;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x4a0f4e,_0x2314b2))[_0x68c4('0x51')](handleError(_0x4a0f4e,null));};exports[_0x68c4('0x64')]=function(_0x141acd,_0x59f44a,_0x2a5570){var _0x3172dd={'raw':!![],'where':{}};var _0x281a26={};var _0x36e5dc={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x141acd[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x59f44a,null))[_0x68c4('0x34')](function(_0x2cbfad){if(_0x2cbfad){_0x281a26[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x65')]['rawAttributes']);_0x281a26['query']=_[_0x68c4('0x3f')](_0x141acd[_0x68c4('0x3e')]);_0x281a26[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x281a26[_0x68c4('0x42')],_0x281a26[_0x68c4('0x3e')]);_0x3172dd[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x281a26[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x141acd['query'][_0x68c4('0x44')]));_0x3172dd[_0x68c4('0x43')]=_0x3172dd['attributes'][_0x68c4('0x45')]?_0x3172dd[_0x68c4('0x43')]:_0x281a26[_0x68c4('0x42')];if(!_0x141acd['query'][_0x68c4('0x46')](_0x68c4('0x47'))){_0x3172dd['limit']=qs[_0x68c4('0x1f')](_0x141acd[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x3172dd[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x141acd[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x3172dd['order']=qs[_0x68c4('0x48')](_0x141acd['query'][_0x68c4('0x48')]);_0x3172dd[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x141acd[_0x68c4('0x3e')],_0x281a26[_0x68c4('0x40')]));_0x3172dd['where'][_0x68c4('0x66')]=_0x2cbfad['id'];if(_0x141acd[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x3172dd[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x3172dd['where'],{'$or':_[_0x68c4('0x2d')](_0x3172dd[_0x68c4('0x43')],function(_0x580c01){var _0x27f038={};_0x27f038[_0x580c01]={'$like':'%'+_0x141acd[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x27f038;})});}_0x3172dd=_[_0x68c4('0x4b')]({},_0x3172dd,_0x141acd[_0x68c4('0x4d')]);return db['CmHopperHistory'][_0x68c4('0x20')]({'where':_0x3172dd[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x14f058){_0x36e5dc[_0x68c4('0x20')]=_0x14f058;if(_0x141acd['query']['includeAll']){_0x3172dd[_0x68c4('0x4e')]=[{'all':!![]}];}return db['CmHopperHistory'][_0x68c4('0x4f')](_0x3172dd);})[_0x68c4('0x34')](function(_0x34e3a2){_0x36e5dc[_0x68c4('0x50')]=_0x34e3a2;return _0x36e5dc;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x59f44a,_0x3172dd))[_0x68c4('0x51')](handleError(_0x59f44a,null));};exports[_0x68c4('0x67')]=function(_0xf08f80,_0x2f671c,_0x51d2dd){var _0x340634={'raw':!![],'where':{}};var _0x2313a2={};var _0x33c4fb={'count':0x0,'rows':[]};return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0xf08f80['params']['id']}})['then'](handleEntityNotFound(_0x2f671c,null))[_0x68c4('0x34')](function(_0x3154da){if(_0x3154da){_0x2313a2[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x68')][_0x68c4('0x3b')]);_0x2313a2[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0xf08f80[_0x68c4('0x3e')]);_0x2313a2['filters']=_[_0x68c4('0x41')](_0x2313a2[_0x68c4('0x42')],_0x2313a2[_0x68c4('0x3e')]);_0x340634[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x2313a2[_0x68c4('0x42')],qs['fields'](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x340634[_0x68c4('0x43')]=_0x340634[_0x68c4('0x43')][_0x68c4('0x45')]?_0x340634[_0x68c4('0x43')]:_0x2313a2[_0x68c4('0x42')];if(!_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x340634[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0xf08f80['query'][_0x68c4('0x1f')]);_0x340634[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x1d')]);}_0x340634[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0xf08f80[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x340634[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0xf08f80[_0x68c4('0x3e')],_0x2313a2['filters']));_0x340634[_0x68c4('0x4a')][_0x68c4('0x66')]=_0x3154da['id'];if(_0xf08f80['query'][_0x68c4('0x2c')]){_0x340634[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x340634[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x340634[_0x68c4('0x43')],function(_0x10686a){var _0x25508e={};_0x25508e[_0x10686a]={'$like':'%'+_0xf08f80['query'][_0x68c4('0x2c')]+'%'};return _0x25508e;})});}_0x340634=_['merge']({},_0x340634,_0xf08f80[_0x68c4('0x4d')]);return db[_0x68c4('0x68')][_0x68c4('0x20')]({'where':_0x340634['where']})[_0x68c4('0x34')](function(_0x1419fb){_0x33c4fb[_0x68c4('0x20')]=_0x1419fb;if(_0xf08f80['query'][_0x68c4('0x53')]){_0x340634['include']=[{'all':!![]}];}return db[_0x68c4('0x68')][_0x68c4('0x4f')](_0x340634);})[_0x68c4('0x34')](function(_0x567979){_0x33c4fb[_0x68c4('0x50')]=_0x567979;return _0x33c4fb;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x2f671c,_0x340634))[_0x68c4('0x51')](handleError(_0x2f671c,null));};exports[_0x68c4('0x69')]=function(_0x28839e,_0x1c545c,_0x57b5cd){var _0x643ed4={'raw':!![],'where':{}};var _0x52d4e3={};var _0x442171={'count':0x0,'rows':[]};return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x28839e['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x1c545c,null))['then'](function(_0x92fe39){if(_0x92fe39){_0x52d4e3[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db['CmHopperBlack'][_0x68c4('0x3b')]);_0x52d4e3[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x28839e[_0x68c4('0x3e')]);_0x52d4e3['filters']=_[_0x68c4('0x41')](_0x52d4e3[_0x68c4('0x42')],_0x52d4e3[_0x68c4('0x3e')]);_0x643ed4[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x52d4e3[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x28839e['query'][_0x68c4('0x44')]));_0x643ed4['attributes']=_0x643ed4[_0x68c4('0x43')][_0x68c4('0x45')]?_0x643ed4['attributes']:_0x52d4e3[_0x68c4('0x42')];if(!_0x28839e[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x643ed4[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x28839e['query'][_0x68c4('0x1f')]);_0x643ed4['offset']=qs[_0x68c4('0x1d')](_0x28839e[_0x68c4('0x3e')]['offset']);}_0x643ed4[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x28839e[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x643ed4[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x28839e[_0x68c4('0x3e')],_0x52d4e3[_0x68c4('0x40')]));_0x643ed4[_0x68c4('0x4a')][_0x68c4('0x66')]=_0x92fe39['id'];if(_0x28839e[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x643ed4[_0x68c4('0x4a')]=_['merge'](_0x643ed4[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x643ed4[_0x68c4('0x43')],function(_0x23b1fa){var _0x4194ed={};_0x4194ed[_0x23b1fa]={'$like':'%'+_0x28839e[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x4194ed;})});}_0x643ed4=_[_0x68c4('0x4b')]({},_0x643ed4,_0x28839e[_0x68c4('0x4d')]);return db[_0x68c4('0x6a')][_0x68c4('0x20')]({'where':_0x643ed4[_0x68c4('0x4a')]})[_0x68c4('0x34')](function(_0x2d7f6b){_0x442171[_0x68c4('0x20')]=_0x2d7f6b;if(_0x28839e[_0x68c4('0x3e')][_0x68c4('0x53')]){_0x643ed4[_0x68c4('0x4e')]=[{'all':!![]}];}return db[_0x68c4('0x6a')][_0x68c4('0x4f')](_0x643ed4);})[_0x68c4('0x34')](function(_0x2337c5){_0x442171[_0x68c4('0x50')]=_0x2337c5;return _0x442171;});}})[_0x68c4('0x34')](respondWithFilteredResult(_0x1c545c,_0x643ed4))['catch'](handleError(_0x1c545c,null));};exports[_0x68c4('0x6b')]=function(_0xcfff56,_0x5a4431,_0x1b2d21){var _0x28d484={};var _0x5f5c87={};var _0x224b46;var _0x54f69a;return db[_0x68c4('0x3a')][_0x68c4('0x61')]({'where':{'id':_0xcfff56[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5a4431,null))['then'](function(_0x45332b){if(_0x45332b){_0x224b46=_0x45332b;_0x5f5c87[_0x68c4('0x42')]=_['keys'](db['Team'][_0x68c4('0x3b')]);_0x5f5c87[_0x68c4('0x3e')]=_['keys'](_0xcfff56[_0x68c4('0x3e')]);_0x5f5c87[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x5f5c87[_0x68c4('0x42')],_0x5f5c87[_0x68c4('0x3e')]);_0x28d484[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x5f5c87['model'],qs['fields'](_0xcfff56['query']['fields']));_0x28d484[_0x68c4('0x43')]=_0x28d484[_0x68c4('0x43')][_0x68c4('0x45')]?_0x28d484[_0x68c4('0x43')]:_0x5f5c87[_0x68c4('0x42')];_0x28d484[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x28d484['where']=qs[_0x68c4('0x40')](_['pick'](_0xcfff56[_0x68c4('0x3e')],_0x5f5c87[_0x68c4('0x40')]));if(_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x28d484[_0x68c4('0x4a')]=_['merge'](_0x28d484[_0x68c4('0x4a')],{'$or':_['map'](_0x28d484[_0x68c4('0x43')],function(_0x4b7d22){var _0x11b33e={};_0x11b33e[_0x4b7d22]={'$like':'%'+_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x11b33e;})});}_0x28d484=_['merge']({},_0x28d484,_0xcfff56['options']);return _0x224b46['getTeams'](_0x28d484);}})[_0x68c4('0x34')](function(_0x5abcc4){if(_0x5abcc4){_0x54f69a=_0x5abcc4[_0x68c4('0x45')];if(!_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x28d484[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x28d484[_0x68c4('0x1d')]=qs['offset'](_0xcfff56[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x224b46[_0x68c4('0x6b')](_0x28d484);}})['then'](function(_0x563f64){if(_0x563f64){return _0x563f64?{'count':_0x54f69a,'rows':_0x563f64}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5a4431,null))[_0x68c4('0x51')](handleError(_0x5a4431,null));};exports['addTeams']=function(_0x47551d,_0x69c698,_0x58ec57){var _0x321c91=_0x47551d['body'][_0x68c4('0x6c')];var _0x18a99e=_[_0x68c4('0x2d')](_0x321c91,'id');return db['Team'][_0x68c4('0x4f')]({'where':{'id':_0x18a99e},'attributes':['id'],'include':[{'model':db[_0x68c4('0x6d')],'as':_0x68c4('0x6e'),'attributes':['id',_0x68c4('0x32'),_0x68c4('0x6f'),'voicePause',_0x68c4('0x70')],'raw':!![]}]})['then'](function(_0x317d54){if(_0x317d54){var _0xb218aa=_[_0x68c4('0x71')](_0x317d54,function(_0x366836){var _0x32b8ec=_0x366836['get']({'plain':!![]});_0x32b8ec['Agents'][_0x68c4('0x72')](function(_0x3a9b30){_0x3a9b30[_0x68c4('0x73')]=_[_0x68c4('0x31')](_0x321c91,{'id':_0x32b8ec['id']})[_0x68c4('0x73')];});return _0x32b8ec['Agents'];});return db['VoiceQueue'][_0x68c4('0x31')]({'where':{'id':_0x47551d['params']['id']}})['then'](function(_0x1f64bb){return db['sequelize'][_0x68c4('0x74')](function(_0xdd470){return _0x1f64bb['addTeams'](_0x18a99e,{'transaction':_0xdd470})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_0x321c91,function(_0x13cf3a){return db['TeamVoiceQueue'][_0x68c4('0x76')]({'TeamId':_0x13cf3a['id'],'VoiceQueueId':_0x47551d[_0x68c4('0x5b')]['id'],'penalty':_0x13cf3a[_0x68c4('0x73')]},{'transaction':_0xdd470});});})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_0xb218aa,function(_0x23d953){return db['UserVoiceQueue'][_0x68c4('0x77')]({'where':{'UserId':_0x23d953['id'],'VoiceQueueId':_0x47551d[_0x68c4('0x5b')]['id']},'defaults':{'penalty':_0x23d953[_0x68c4('0x73')]},'transaction':_0xdd470});});})[_0x68c4('0x34')](function(){return BPromise[_0x68c4('0x75')](_[_0x68c4('0x2c')](_0xb218aa,{'online':!![]}),function(_0x424b09){return db['UserVoiceQueueRt'][_0x68c4('0x76')]({'membername':_0x424b09[_0x68c4('0x32')],'UserId':_0x424b09['id'],'queue_name':_0x1f64bb[_0x68c4('0x32')],'VoiceQueueId':_0x1f64bb['id'],'interface':_[_0x68c4('0x78')](_0x424b09[_0x68c4('0x70')])?util[_0x68c4('0x79')](_0x68c4('0x7a'),_0x424b09[_0x68c4('0x32')]):_0x424b09[_0x68c4('0x70')],'paused':_0x424b09[_0x68c4('0x7b')]||![],'penalty':_0x424b09[_0x68c4('0x73')]},{'transaction':_0xdd470});});})['then'](function(){_0xb218aa[_0x68c4('0x72')](function(_0x2622d5){socket[_0x68c4('0x7c')]('userVoiceQueue:save',{'UserId':_0x2622d5['id'],'VoiceQueueId':_0x1f64bb['id']});});});});});}})[_0x68c4('0x34')](respondWithStatusCode(_0x69c698,null))[_0x68c4('0x51')](handleError(_0x69c698,null));};exports['removeTeams']=function(_0xb5cc8,_0x44ed2d,_0x31d3ce){return db[_0x68c4('0x7d')][_0x68c4('0x4f')]({'where':{'id':_0xb5cc8[_0x68c4('0x3e')]['ids']},'attributes':['id'],'include':[{'model':db[_0x68c4('0x6d')],'as':_0x68c4('0x6e'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x44ed2d,null))['then'](function(_0x28dcc4){var _0xffc880=_[_0x68c4('0x2d')](_0x28dcc4,'id');var _0x367bf5=[];var _0x5758bd=[];var _0x5e338a=squel['select']();_0x5e338a[_0x68c4('0x7e')]('tq.TeamId')[_0x68c4('0x7f')](_0x68c4('0x80'),'tq')[_0x68c4('0x81')](_0x68c4('0x82'),'ut',_0x68c4('0x83'))['where'](_0x68c4('0x84'),_0xb5cc8[_0x68c4('0x5b')]['id']);for(var _0x324b7b=0x0;_0x324b7b<_0x28dcc4['length'];_0x324b7b+=0x1){let _0x299cb2=_0x28dcc4[_0x324b7b];for(var _0xf58301=0x0;_0xf58301<_0x299cb2[_0x68c4('0x6e')][_0x68c4('0x45')];_0xf58301+=0x1){let _0x433d01=_0x299cb2[_0x68c4('0x6e')][_0xf58301];var _0x15e67c=_0x5e338a[_0x68c4('0x5a')]();_0x15e67c[_0x68c4('0x4a')](_0x68c4('0x85'),_0x433d01['id']);_0x5758bd['push'](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0x15e67c['toString'](),{'type':db['sequelize'][_0x68c4('0x87')][_0x68c4('0x88')]})['then'](function(_0x1697bb){if(_0x1697bb[_0x68c4('0x45')]===0x1){return _0x433d01['id'];}else{var _0x575880=_[_0x68c4('0x89')](_[_0x68c4('0x2d')](_0x1697bb,_0x68c4('0x8a')),function(_0x2501eb){return _['includes'](_0xffc880,_0x2501eb);});if(_0x575880){return _0x433d01['id'];}}}));}}return BPromise['all'](_0x5758bd)['then'](function(_0x52a09c){_0x367bf5=_(_0x367bf5)[_0x68c4('0x8b')](_0x52a09c)[_0x68c4('0x8c')]()[_0x68c4('0x2e')]();return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0xb5cc8[_0x68c4('0x5b')]['id']}})['then'](function(_0x27a611){return db[_0x68c4('0x86')][_0x68c4('0x74')](function(_0x522239){return _0x27a611[_0x68c4('0x8d')](_0xb5cc8[_0x68c4('0x3e')][_0x68c4('0x8e')],{'transaction':_0x522239})[_0x68c4('0x34')](function(){if(!_[_0x68c4('0x8f')](_0x367bf5)){return _0x27a611[_0x68c4('0x90')](_0x367bf5,{'transaction':_0x522239})[_0x68c4('0x34')](function(){return db[_0x68c4('0x91')][_0x68c4('0x26')]({'where':{'VoiceQueueId':_0xb5cc8['params']['id'],'UserId':_0x367bf5},'transaction':_0x522239});});}})['then'](function(){_0x367bf5[_0x68c4('0x72')](function(_0x3eb8fe){socket[_0x68c4('0x7c')](_0x68c4('0x92'),{'UserId':_0x3eb8fe,'VoiceQueueId':_0x27a611['id']});});});});});});})['then'](respondWithStatusCode(_0x44ed2d,null))[_0x68c4('0x51')](handleError(_0x44ed2d,null));};exports[_0x68c4('0x93')]=function(_0x1a7057,_0x2d6c9a,_0x5a75fd){var _0x51d63d,_0x22276a;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x1a7057[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x2d6c9a,null))['then'](function(_0x3eae09){if(_0x3eae09){_0x22276a=_0x3eae09;return _0x3eae09[_0x68c4('0x93')](_0x1a7057[_0x68c4('0x54')][_0x68c4('0x8e')],_[_0x68c4('0x5c')](_0x1a7057['body'],[_0x68c4('0x8e'),'id'])||{})['spread'](function(_0x5343f1){for(var _0x2a515a=0x0;_0x2a515a<_0x1a7057[_0x68c4('0x54')]['ids'][_0x68c4('0x45')];_0x2a515a+=0x1){socket[_0x68c4('0x7c')]('userVoiceQueue:save',{'UserId':Number(_0x1a7057[_0x68c4('0x54')]['ids'][_0x2a515a]),'VoiceQueueId':Number(_0x1a7057[_0x68c4('0x5b')]['id'])});}return _0x5343f1;});}})[_0x68c4('0x34')](function(_0x4769d0){_0x51d63d=_0x4769d0||[];if(_0x22276a){return db[_0x68c4('0x6d')][_0x68c4('0x4f')]({'where':{'id':_0x1a7057[_0x68c4('0x54')]['ids']},'attributes':['id',_0x68c4('0x32'),_0x68c4('0x6f'),_0x68c4('0x7b'),_0x68c4('0x70')],'raw':!![]});}})['then'](function(_0x525c3f){if(!_[_0x68c4('0x8f')](_0x525c3f)){var _0x38ff95=[];for(var _0x4db93c=0x0;_0x4db93c<_0x525c3f['length'];_0x4db93c++){if(_0x525c3f[_0x4db93c]['online']){_0x38ff95[_0x68c4('0x94')](db['UserVoiceQueueRt'][_0x68c4('0x76')]({'membername':_0x525c3f[_0x4db93c][_0x68c4('0x32')],'UserId':_0x525c3f[_0x4db93c]['id'],'queue_name':_0x22276a[_0x68c4('0x32')],'VoiceQueueId':_0x22276a['id'],'interface':_['isNil'](_0x525c3f[_0x4db93c]['interface'])?util[_0x68c4('0x79')](_0x68c4('0x7a'),_0x525c3f[_0x4db93c][_0x68c4('0x32')]):_0x525c3f[_0x4db93c][_0x68c4('0x70')],'paused':_0x525c3f[_0x4db93c][_0x68c4('0x7b')]||![],'penalty':_0x1a7057[_0x68c4('0x54')][_0x68c4('0x73')]||0x0}));}}return BPromise[_0x68c4('0x95')](_0x38ff95);}})['then'](function(){return _0x51d63d;})[_0x68c4('0x34')](respondWithResult(_0x2d6c9a,null))[_0x68c4('0x51')](handleError(_0x2d6c9a,null));};exports[_0x68c4('0x90')]=function(_0x5afc0a,_0x47f307,_0x2cc6ae){return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x5afc0a['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x47f307,null))[_0x68c4('0x34')](function(_0x32a565){if(_0x32a565){return _0x32a565[_0x68c4('0x90')](_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')])[_0x68c4('0x34')](function(){if(_['isArray'](_0x5afc0a[_0x68c4('0x3e')]['ids'])){for(var _0x410973=0x0;_0x410973<_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')][_0x68c4('0x45')];_0x410973+=0x1){socket[_0x68c4('0x7c')]('userVoiceQueue:remove',{'UserId':Number(_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')][_0x410973]),'VoiceQueueId':Number(_0x5afc0a[_0x68c4('0x5b')]['id'])});}}else{socket['emit'](_0x68c4('0x92'),{'UserId':Number(_0x5afc0a[_0x68c4('0x3e')][_0x68c4('0x8e')]),'VoiceQueueId':Number(_0x5afc0a[_0x68c4('0x5b')]['id'])});}});}})[_0x68c4('0x34')](function(_0x3f4c7b){return db['UserVoiceQueueRt'][_0x68c4('0x26')]({'where':{'VoiceQueueId':_0x5afc0a[_0x68c4('0x5b')]['id'],'UserId':_0x5afc0a[_0x68c4('0x3e')]['ids']}})[_0x68c4('0x34')](function(){return _0x3f4c7b;});})[_0x68c4('0x34')](respondWithStatusCode(_0x47f307,null))['catch'](handleError(_0x47f307,null));};exports['getAgents']=function(_0x53e78d,_0x2bde6f,_0x297f5a){var _0x792f08={};var _0x754694={};var _0x4843cb;var _0x5cb555;return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x53e78d[_0x68c4('0x5b')]['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x2bde6f,null))[_0x68c4('0x34')](function(_0x42c0ab){if(_0x42c0ab){_0x4843cb=_0x42c0ab;_0x754694[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db['User'][_0x68c4('0x3b')]);_0x754694[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x53e78d[_0x68c4('0x3e')]);_0x754694[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x754694[_0x68c4('0x42')],_0x754694[_0x68c4('0x3e')]);_0x792f08[_0x68c4('0x43')]=_['intersection'](_0x754694[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x792f08[_0x68c4('0x43')]=_0x792f08[_0x68c4('0x43')][_0x68c4('0x45')]?_0x792f08[_0x68c4('0x43')]:_0x754694[_0x68c4('0x42')];_0x792f08[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x792f08[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_['pick'](_0x53e78d['query'],_0x754694[_0x68c4('0x40')]));if(_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x792f08[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x792f08['where'],{'$or':_['map'](_0x792f08[_0x68c4('0x43')],function(_0x525839){var _0x4285b1={};_0x4285b1[_0x525839]={'$like':'%'+_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x4285b1;})});}_0x792f08=_[_0x68c4('0x4b')]({},_0x792f08,_0x53e78d[_0x68c4('0x4d')]);return _0x4843cb[_0x68c4('0x96')](_0x792f08);}})['then'](function(_0x3c008a){if(_0x3c008a){_0x5cb555=_0x3c008a['length'];if(!_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x792f08[_0x68c4('0x1f')]=qs['limit'](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x792f08[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x53e78d[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x4843cb['getAgents'](_0x792f08);}})['then'](function(_0x44f028){if(_0x44f028){return _0x44f028?{'count':_0x5cb555,'rows':_0x44f028}:null;}})['then'](respondWithResult(_0x2bde6f,null))[_0x68c4('0x51')](handleError(_0x2bde6f,null));};exports[_0x68c4('0x97')]=function(_0x536262,_0x761be5,_0x14f02f){var _0x574f30={};var _0x16e4a1={};var _0x5ace9e;var _0x29f9dd;return db[_0x68c4('0x3a')]['findOne']({'where':{'id':_0x536262['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x761be5,null))['then'](function(_0x26a719){if(_0x26a719){_0x5ace9e=_0x26a719;_0x16e4a1[_0x68c4('0x42')]=_['keys'](db['UserVoiceQueueRt'][_0x68c4('0x3b')]);_0x16e4a1[_0x68c4('0x3e')]=_[_0x68c4('0x3f')](_0x536262[_0x68c4('0x3e')]);_0x16e4a1[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x16e4a1['model'],_0x16e4a1[_0x68c4('0x3e')]);_0x574f30[_0x68c4('0x43')]=_['intersection'](_0x16e4a1[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x574f30[_0x68c4('0x43')]=_0x574f30[_0x68c4('0x43')]['length']?_0x574f30[_0x68c4('0x43')]:_0x16e4a1[_0x68c4('0x42')];_0x574f30[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x574f30[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x536262[_0x68c4('0x3e')],_0x16e4a1['filters']));if(_0x536262['query']['filter']){_0x574f30[_0x68c4('0x4a')]=_[_0x68c4('0x4b')](_0x574f30['where'],{'$or':_[_0x68c4('0x2d')](_0x574f30['attributes'],function(_0x450986){var _0xe4914b={};_0xe4914b[_0x450986]={'$like':'%'+_0x536262[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0xe4914b;})});}_0x574f30=_[_0x68c4('0x4b')]({},_0x574f30,_0x536262['options']);return _0x5ace9e[_0x68c4('0x97')](_0x574f30);}})['then'](function(_0x8e4a98){if(_0x8e4a98){_0x29f9dd=_0x8e4a98[_0x68c4('0x45')];if(!_0x536262[_0x68c4('0x3e')][_0x68c4('0x46')](_0x68c4('0x47'))){_0x574f30[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x536262['query'][_0x68c4('0x1f')]);_0x574f30['offset']=qs[_0x68c4('0x1d')](_0x536262[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x5ace9e[_0x68c4('0x97')](_0x574f30);}})[_0x68c4('0x34')](function(_0x6150c6){return _0x6150c6?{'count':_0x29f9dd,'rows':_0x6150c6}:null;})[_0x68c4('0x34')](respondWithResult(_0x761be5,null))[_0x68c4('0x51')](handleError(_0x761be5,null));};exports[_0x68c4('0x98')]=function(_0x32cfa8,_0x5be923,_0x3e07fa){var _0x4b6321={};var _0x3c982a={};var _0x1f91b7;var _0x3f5d06;return db['VoiceQueue']['findOne']({'where':{'id':_0x32cfa8[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5be923,null))[_0x68c4('0x34')](function(_0x1abafa){if(_0x1abafa){_0x1f91b7=_0x1abafa;_0x3c982a[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x99')][_0x68c4('0x3b')]);_0x3c982a[_0x68c4('0x3e')]=_['keys'](_0x32cfa8['query']);_0x3c982a['filters']=_[_0x68c4('0x41')](_0x3c982a[_0x68c4('0x42')],_0x3c982a['query']);_0x4b6321[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x3c982a[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x4b6321[_0x68c4('0x43')]=_0x4b6321[_0x68c4('0x43')][_0x68c4('0x45')]?_0x4b6321[_0x68c4('0x43')]:_0x3c982a['model'];_0x4b6321[_0x68c4('0x63')]=qs[_0x68c4('0x48')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x48')]);_0x4b6321['where']=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x32cfa8[_0x68c4('0x3e')],_0x3c982a[_0x68c4('0x40')]));if(_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x4b6321[_0x68c4('0x4a')]=_['merge'](_0x4b6321[_0x68c4('0x4a')],{'$or':_['map'](_0x4b6321[_0x68c4('0x43')],function(_0x462b58){var _0x2de851={};_0x2de851[_0x462b58]={'$like':'%'+_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0x2de851;})});}_0x4b6321=_[_0x68c4('0x4b')]({},_0x4b6321,_0x32cfa8[_0x68c4('0x4d')]);return _0x1f91b7[_0x68c4('0x98')](_0x4b6321);}})['then'](function(_0x3f45be){if(_0x3f45be){_0x3f5d06=_0x3f45be['length'];if(!_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x46')]('nolimit')){_0x4b6321['limit']=qs[_0x68c4('0x1f')](_0x32cfa8[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x4b6321[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x32cfa8['query'][_0x68c4('0x1d')]);}return _0x1f91b7[_0x68c4('0x98')](_0x4b6321);}})[_0x68c4('0x34')](function(_0x5ed4c0){if(_0x5ed4c0){return _0x5ed4c0?{'count':_0x3f5d06,'rows':_0x5ed4c0}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5be923,null))['catch'](handleError(_0x5be923,null));};exports[_0x68c4('0x9a')]=function(_0x14538e,_0x44ff59,_0x2d3def){var _0x35e37a=moment()[_0x68c4('0x79')]('YYYY-MM-DD\x20HH:mm:ss');var _0x76cd3,_0x24fab4;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x14538e[_0x68c4('0x5b')]['id']}})['then'](handleEntityNotFound(_0x44ff59,null))[_0x68c4('0x34')](function(_0x4e4ffa){if(_0x4e4ffa){_0x24fab4=_0x4e4ffa;return _0x4e4ffa['addLists'](_0x14538e[_0x68c4('0x54')][_0x68c4('0x8e')],_[_0x68c4('0x5c')](_0x14538e[_0x68c4('0x54')],[_0x68c4('0x8e'),'id'])||{});}return null;})[_0x68c4('0x9b')](function(_0x136782){var _0x2782c5;_0x76cd3=_0x136782||[];var _0x204e20=[];if(_0x136782){for(var _0x5cd266=0x0;_0x5cd266<_0x136782[_0x68c4('0x45')];_0x5cd266+=0x1){var _0x3757ea=_0x136782[_0x5cd266]['get']({'plain':!![]});_0x24fab4[_0x68c4('0x9c')]=_0x14538e['body']['dialCheckDuplicateType']?_0x14538e[_0x68c4('0x54')][_0x68c4('0x9c')]:_0x24fab4[_0x68c4('0x9c')];switch(_0x24fab4[_0x68c4('0x9c')]){case'always':_0x2782c5=squel[_0x68c4('0x9d')]()[_0x68c4('0x9e')](_0x68c4('0x9f'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa2'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),'updatedAt'],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0xa2'))[_0x68c4('0x7e')]('id',_0x68c4('0xa3'))[_0x68c4('0x7e')](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x14538e[_0x68c4('0x5b')]['id']['toString'](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))['field']('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xa8'))[_0x68c4('0x4a')](_0x68c4('0xa9'))[_0x68c4('0x4a')]('ListId\x20=\x20?',_0x3757ea[_0x68c4('0xa6')]['toString']())['where'](_0x68c4('0xaa'))[_0x68c4('0x4a')]('phone\x20NOT\x20IN\x20(?)',squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xab'))[_0x68c4('0x7f')](_0x68c4('0xac'))['where'](_0x68c4('0x84'),_0x14538e['params']['id'][_0x68c4('0xa7')]()))['where'](_0x68c4('0xad'),squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')]('COALESCE(phone,\x27\x27)')[_0x68c4('0x7f')](_0x68c4('0x9f'))[_0x68c4('0x4a')](_0x68c4('0x84'),_0x14538e[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')]())))['toString']();break;case _0x68c4('0xae'):_0x2782c5=squel['insert']()[_0x68c4('0x9e')]('cm_hopper')['fromQuery']([_0x68c4('0xa1'),_0x68c4('0xa2'),'ContactId',_0x68c4('0xa4'),'VoiceQueueId',_0x68c4('0x5d'),'updatedAt'],squel['select']()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))['field']('\x27'+_0x35e37a+'\x27','scheduledAt')[_0x68c4('0x7e')]('id',_0x68c4('0xa3'))[_0x68c4('0x7e')](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),_0x68c4('0xa4'))[_0x68c4('0x7e')](_0x14538e['params']['id']['toString'](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','createdAt')[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')]('cm_contacts')[_0x68c4('0x4a')](_0x68c4('0xa9'))[_0x68c4('0x4a')](_0x68c4('0xaf'),_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')]())['where'](_0x68c4('0xaa'))[_0x68c4('0x4a')](_0x68c4('0xad'),squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xb0'))[_0x68c4('0x7f')](_0x68c4('0x9f'))[_0x68c4('0x4a')]('VoiceQueueId\x20=\x20?',_0x14538e[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')]())))[_0x68c4('0xa7')]();break;default:_0x2782c5=squel[_0x68c4('0x9d')]()[_0x68c4('0x9e')](_0x68c4('0x9f'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa2'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),_0x68c4('0xa1'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','scheduledAt')['field']('id',_0x68c4('0xa3'))['field'](_0x3757ea[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x14538e['params']['id'][_0x68c4('0xa7')](),_0x68c4('0x66'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27','updatedAt')[_0x68c4('0x7f')](_0x68c4('0xa8'))['where'](_0x68c4('0xa9'))[_0x68c4('0x4a')]('ListId\x20=\x20?',_0x3757ea[_0x68c4('0xa6')]['toString']())['where'](_0x68c4('0xaa')))['toString']();}_0x204e20[_0x68c4('0x94')](db['sequelize'][_0x68c4('0x3e')](_0x2782c5));}return BPromise['all'](_0x204e20);}})['then'](function(){var _0x131281=[];var _0xa46915=squel['insert']()[_0x68c4('0x9e')]('cm_hopper_additional_phones')[_0x68c4('0xa0')](['CmHopperId',_0x68c4('0xa1'),_0x68c4('0xb1'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel['select']()[_0x68c4('0x7e')](_0x68c4('0xb2'))[_0x68c4('0x7e')](_0x68c4('0xb3'))[_0x68c4('0x7e')](_0x68c4('0xb4'))['field']('\x27'+_0x35e37a+'\x27',_0x68c4('0x5d'))[_0x68c4('0x7e')]('\x27'+_0x35e37a+'\x27',_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xb5'),'ci')['join'](_0x68c4('0x9f'),'h',_0x68c4('0xb6'))[_0x68c4('0x4a')](_0x68c4('0xb7'),_0x35e37a)[_0x68c4('0x4a')](_0x68c4('0xb8'),_0x68c4('0xb9')))['toString']();_0x131281[_0x68c4('0x94')](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0xa46915));return BPromise[_0x68c4('0x95')](_0x131281);})['then'](function(){return _0x76cd3;})[_0x68c4('0x34')](respondWithResult(_0x44ff59,null))[_0x68c4('0x51')](handleError(_0x44ff59,null));};exports[_0x68c4('0xba')]=function(_0x209ae8,_0x421a7b,_0x5430b1){return db[_0x68c4('0x3a')]['find']({'where':{'id':_0x209ae8['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x421a7b,null))[_0x68c4('0x34')](function(_0x45f198){if(_0x45f198){return _0x45f198[_0x68c4('0xba')](_0x209ae8[_0x68c4('0x3e')][_0x68c4('0x8e')]);}})[_0x68c4('0x34')](function(_0x18236e){if(_0x18236e){return db['CmHopper'][_0x68c4('0x26')]({'where':{'ListId':_0x209ae8[_0x68c4('0x3e')][_0x68c4('0x8e')],'VoiceQueueId':_0x209ae8['params']['id']}})['then'](function(){return _0x18236e;});}})['then'](respondWithStatusCode(_0x421a7b,null))['catch'](handleError(_0x421a7b,null));};exports[_0x68c4('0xbb')]=function(_0x4191fe,_0x5d1d0,_0x2682e6){var _0x5e1014={};var _0x2ed260={};var _0x2cbb90;var _0x5c09ef;return db['VoiceQueue'][_0x68c4('0x61')]({'where':{'id':_0x4191fe['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x5d1d0,null))[_0x68c4('0x34')](function(_0x16d537){if(_0x16d537){_0x2cbb90=_0x16d537;_0x2ed260[_0x68c4('0x42')]=_[_0x68c4('0x3f')](db[_0x68c4('0x99')][_0x68c4('0x3b')]);_0x2ed260['query']=_[_0x68c4('0x3f')](_0x4191fe[_0x68c4('0x3e')]);_0x2ed260[_0x68c4('0x40')]=_[_0x68c4('0x41')](_0x2ed260['model'],_0x2ed260[_0x68c4('0x3e')]);_0x5e1014[_0x68c4('0x43')]=_[_0x68c4('0x41')](_0x2ed260[_0x68c4('0x42')],qs[_0x68c4('0x44')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x44')]));_0x5e1014['attributes']=_0x5e1014[_0x68c4('0x43')][_0x68c4('0x45')]?_0x5e1014['attributes']:_0x2ed260[_0x68c4('0x42')];_0x5e1014['order']=qs[_0x68c4('0x48')](_0x4191fe['query'][_0x68c4('0x48')]);_0x5e1014[_0x68c4('0x4a')]=qs[_0x68c4('0x40')](_[_0x68c4('0x49')](_0x4191fe['query'],_0x2ed260[_0x68c4('0x40')]));if(_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x2c')]){_0x5e1014['where']=_[_0x68c4('0x4b')](_0x5e1014[_0x68c4('0x4a')],{'$or':_[_0x68c4('0x2d')](_0x5e1014[_0x68c4('0x43')],function(_0x16869a){var _0xadc66d={};_0xadc66d[_0x16869a]={'$like':'%'+_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x2c')]+'%'};return _0xadc66d;})});}_0x5e1014=_[_0x68c4('0x4b')]({},_0x5e1014,_0x4191fe[_0x68c4('0x4d')]);return _0x2cbb90[_0x68c4('0xbb')](_0x5e1014);}})[_0x68c4('0x34')](function(_0x3244d8){if(_0x3244d8){_0x5c09ef=_0x3244d8[_0x68c4('0x45')];if(!_0x4191fe[_0x68c4('0x3e')]['hasOwnProperty'](_0x68c4('0x47'))){_0x5e1014[_0x68c4('0x1f')]=qs[_0x68c4('0x1f')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x1f')]);_0x5e1014[_0x68c4('0x1d')]=qs[_0x68c4('0x1d')](_0x4191fe[_0x68c4('0x3e')][_0x68c4('0x1d')]);}return _0x2cbb90[_0x68c4('0xbb')](_0x5e1014);}})[_0x68c4('0x34')](function(_0x41e6c4){if(_0x41e6c4){return _0x41e6c4?{'count':_0x5c09ef,'rows':_0x41e6c4}:null;}})[_0x68c4('0x34')](respondWithResult(_0x5d1d0,null))[_0x68c4('0x51')](handleError(_0x5d1d0,null));};exports['addBlackLists']=function(_0x3d155a,_0x8e3fd9,_0x1b3554){var _0x28e0c4,_0x12c06a;return db[_0x68c4('0x3a')][_0x68c4('0x31')]({'where':{'id':_0x3d155a['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x8e3fd9,null))[_0x68c4('0x34')](function(_0x35ad90){if(_0x35ad90){_0x12c06a=_0x35ad90;return _0x35ad90[_0x68c4('0xbc')](_0x3d155a[_0x68c4('0x54')][_0x68c4('0x8e')],_['omit'](_0x3d155a[_0x68c4('0x54')],[_0x68c4('0x8e'),'id'])||{});}return null;})[_0x68c4('0x9b')](function(_0x14555a){var _0xe8c33f;_0x28e0c4=_0x14555a||[];var _0x27a10c=[];if(_0x14555a){for(var _0x4e1bc5=0x0;_0x4e1bc5<_0x14555a[_0x68c4('0x45')];_0x4e1bc5+=0x1){var _0x8fc106=_0x14555a[_0x4e1bc5][_0x68c4('0x27')]({'plain':!![]});_0xe8c33f=squel[_0x68c4('0x9d')]()['into'](_0x68c4('0xbd'))[_0x68c4('0xa0')]([_0x68c4('0xa1'),_0x68c4('0xa3'),_0x68c4('0xa4'),_0x68c4('0x66'),_0x68c4('0x5d'),_0x68c4('0x5e')],squel[_0x68c4('0xa5')]()[_0x68c4('0x7e')](_0x68c4('0xa1'),'phone')[_0x68c4('0x7e')]('id','ContactId')['field'](_0x8fc106[_0x68c4('0xa6')][_0x68c4('0xa7')](),'ListId')[_0x68c4('0x7e')](_0x3d155a[_0x68c4('0x5b')]['id'][_0x68c4('0xa7')](),_0x68c4('0x66'))[_0x68c4('0x7e')]('NOW()',_0x68c4('0x5d'))['field'](_0x68c4('0xbe'),_0x68c4('0x5e'))[_0x68c4('0x7f')](_0x68c4('0xa8'))[_0x68c4('0x4a')]('deletedAt\x20IS\x20NULL')[_0x68c4('0x4a')](_0x68c4('0xaf'),_0x8fc106['CmListId'][_0x68c4('0xa7')]())[_0x68c4('0x4a')](_0x68c4('0xaa')))[_0x68c4('0xa7')]();_0x27a10c[_0x68c4('0x94')](db[_0x68c4('0x86')][_0x68c4('0x3e')](_0xe8c33f));}return BPromise['all'](_0x27a10c);}})[_0x68c4('0x34')](function(){return _0x28e0c4;})[_0x68c4('0x34')](respondWithResult(_0x8e3fd9,null))['catch'](handleError(_0x8e3fd9,null));};exports[_0x68c4('0xbf')]=function(_0x4647cd,_0x58cc75,_0xc4f30){return db[_0x68c4('0x3a')]['find']({'where':{'id':_0x4647cd['params']['id']}})[_0x68c4('0x34')](handleEntityNotFound(_0x58cc75,null))[_0x68c4('0x34')](function(_0x20e00f){if(_0x20e00f){return _0x20e00f[_0x68c4('0xbf')](_0x4647cd[_0x68c4('0x3e')]['ids']);}})[_0x68c4('0x34')](function(_0x349564){if(_0x349564){return db['CmHopperBlack'][_0x68c4('0x26')]({'where':{'ListId':_0x4647cd[_0x68c4('0x3e')][_0x68c4('0x8e')],'VoiceQueueId':_0x4647cd['params']['id']}})[_0x68c4('0x34')](function(){return _0x349564;});}})[_0x68c4('0x34')](respondWithStatusCode(_0x58cc75,null))[_0x68c4('0x51')](handleError(_0x58cc75,null));};
\ No newline at end of file
index 695f2bb..f75ad5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9471=['emit','hook','exports','../../mysqldb','setMaxListeners','save','update','remove'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x9471,0x173));var _0x1947=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9471[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var VoiceQueue=require(_0x1947('0x0'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x1947('0x1')](0x0);var events={'afterCreate':_0x1947('0x2'),'afterUpdate':_0x1947('0x3'),'afterDestroy':_0x1947('0x4')};function emitEvent(_0x1c8604){return function(_0x62bc84,_0x3b0bdb,_0x9e5c50){VoiceQueueEvents['emit'](_0x1c8604+':'+_0x62bc84['id'],_0x62bc84);VoiceQueueEvents[_0x1947('0x5')](_0x1c8604,_0x62bc84);_0x9e5c50(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0x1947('0x6')](e,emitEvent(event));}}module[_0x1947('0x7')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x858f=['save','update','remove','emit','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x319993,_0x47e278){var _0x496a98=function(_0x34e364){while(--_0x34e364){_0x319993['push'](_0x319993['shift']());}};_0x496a98(++_0x47e278);}(_0x858f,0xf9));var _0xf858=function(_0x1fd9e7,_0x24cdbe){_0x1fd9e7=_0x1fd9e7-0x0;var _0x1781f2=_0x858f[_0x1fd9e7];return _0x1781f2;};'use strict';var EventEmitter=require(_0xf858('0x0'));var VoiceQueue=require(_0xf858('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xf858('0x2')](0x0);var events={'afterCreate':_0xf858('0x3'),'afterUpdate':_0xf858('0x4'),'afterDestroy':_0xf858('0x5')};function emitEvent(_0x3bff11){return function(_0x103c5b,_0x3c3440,_0x143c74){VoiceQueueEvents[_0xf858('0x6')](_0x3bff11+':'+_0x103c5b['id'],_0x103c5b);VoiceQueueEvents['emit'](_0x3bff11,_0x103c5b);_0x143c74(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueue[_0xf858('0x7')](e,emitEvent(event));}}module[_0xf858('0x8')]=VoiceQueueEvents;
\ No newline at end of file
index c1aed53..cc8aade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x3e3221,_0x392851){var _0x190da4=function(_0x13d601){while(--_0x13d601){_0x3e3221['push'](_0x3e3221['shift']());}};_0x190da4(++_0x392851);}(_0x70e0,0x17b));var _0x070e=function(_0x3da149,_0x321951){_0x3da149=_0x3da149-0x0;var _0x415552=_0x70e0[_0x3da149];return _0x415552;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0x3c789f,_0x9dacd1){var _0x3e8568=function(_0x456552){while(--_0x456552){_0x3c789f['push'](_0x3c789f['shift']());}};_0x3e8568(++_0x9dacd1);}(_0x70e0,0x17b));var _0x070e=function(_0x19f546,_0x2a1afd){_0x19f546=_0x19f546-0x0;var _0x51a3ff=_0x70e0[_0x19f546];return _0x51a3ff;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index edd8f6f..f9947c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03af=['localhost','./voiceQueue.socket','register','request','then','info','request\x20sent','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','VoiceQueue,\x20%s,\x20%s','message','catch','GetVoiceQueue','VoiceQueue','options','where','limit','include','model','attributes','map','ShowVoiceQueue','find','debug','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','defaults'];(function(_0x23c047,_0x3dca4e){var _0x581e4e=function(_0x499e46){while(--_0x499e46){_0x23c047['push'](_0x23c047['shift']());}};_0x581e4e(++_0x3dca4e);}(_0x03af,0xdc));var _0xf03a=function(_0x21f0b3,_0x4fd9e4){_0x21f0b3=_0x21f0b3-0x0;var _0x3e66ab=_0x03af[_0x21f0b3];return _0x3e66ab;};'use strict';var _=require(_0xf03a('0x0'));var util=require(_0xf03a('0x1'));var moment=require(_0xf03a('0x2'));var BPromise=require('bluebird');var rs=require(_0xf03a('0x3'));var fs=require('fs');var Redis=require(_0xf03a('0x4'));var db=require(_0xf03a('0x5'))['db'];var utils=require(_0xf03a('0x6'));var logger=require(_0xf03a('0x7'))(_0xf03a('0x8'));var config=require(_0xf03a('0x9'));var jayson=require(_0xf03a('0xa'));var client=jayson[_0xf03a('0xb')]['http']({'port':0x232a});config[_0xf03a('0xc')]=_[_0xf03a('0xd')](config[_0xf03a('0xc')],{'host':_0xf03a('0xe'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xf03a('0xf'))[_0xf03a('0x10')](socket);function respondWithRpcPromise(_0x477d60,_0x4f8759,_0x2b05af){return new BPromise(function(_0x523dc0,_0x42a46b){return client[_0xf03a('0x11')](_0x477d60,_0x2b05af)[_0xf03a('0x12')](function(_0x3c7d93){logger[_0xf03a('0x13')]('VoiceQueue,\x20%s,\x20%s',_0x4f8759,_0xf03a('0x14'));logger['debug'](_0xf03a('0x15'),_0x4f8759,_0xf03a('0x14'),JSON[_0xf03a('0x16')](_0x3c7d93));if(_0x3c7d93[_0xf03a('0x17')]){if(_0x3c7d93['error']['code']===0x1f4){logger[_0xf03a('0x17')](_0xf03a('0x18'),_0x4f8759,_0x3c7d93['error'][_0xf03a('0x19')]);return _0x42a46b(_0x3c7d93[_0xf03a('0x17')][_0xf03a('0x19')]);}logger['error'](_0xf03a('0x18'),_0x4f8759,_0x3c7d93[_0xf03a('0x17')][_0xf03a('0x19')]);return _0x523dc0(_0x3c7d93['error']['message']);}else{logger[_0xf03a('0x13')](_0xf03a('0x18'),_0x4f8759,_0xf03a('0x14'));_0x523dc0(_0x3c7d93['result']['message']);}})[_0xf03a('0x1a')](function(_0x52e568){logger[_0xf03a('0x17')](_0xf03a('0x18'),_0x4f8759,_0x52e568);_0x42a46b(_0x52e568);});});}exports[_0xf03a('0x1b')]=function(_0x14025b){var _0x2d41d0=this;return new Promise(function(_0xcd683f,_0x3393f2){return db[_0xf03a('0x1c')]['findAll']({'raw':_0x14025b['options']?_0x14025b[_0xf03a('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x14025b['options']?_0x14025b[_0xf03a('0x1d')][_0xf03a('0x1e')]||null:null,'attributes':_0x14025b[_0xf03a('0x1d')]?_0x14025b[_0xf03a('0x1d')]['attributes']||null:null,'limit':_0x14025b['options']?_0x14025b[_0xf03a('0x1d')][_0xf03a('0x1f')]||null:null,'include':_0x14025b[_0xf03a('0x1d')]?_0x14025b[_0xf03a('0x1d')][_0xf03a('0x20')]?_['map'](_0x14025b[_0xf03a('0x1d')][_0xf03a('0x20')],function(_0x105c47){return{'model':db[_0x105c47[_0xf03a('0x21')]],'as':_0x105c47['as'],'attributes':_0x105c47[_0xf03a('0x22')],'include':_0x105c47[_0xf03a('0x20')]?_[_0xf03a('0x23')](_0x105c47[_0xf03a('0x20')],function(_0x4b0848){return{'model':db[_0x4b0848[_0xf03a('0x21')]],'as':_0x4b0848['as'],'attributes':_0x4b0848[_0xf03a('0x22')],'include':_0x4b0848['include']?_[_0xf03a('0x23')](_0x4b0848[_0xf03a('0x20')],function(_0xa893b5){return{'model':db[_0xa893b5[_0xf03a('0x21')]],'as':_0xa893b5['as'],'attributes':_0xa893b5[_0xf03a('0x22')]};}):[]};}):[]};}):[]:[]})[_0xf03a('0x12')](function(_0xaae061){logger[_0xf03a('0x13')]('GetVoiceQueue',_0x14025b);logger['debug'](_0xf03a('0x1b'),_0x14025b,JSON['stringify'](_0xaae061));_0xcd683f(_0xaae061);})[_0xf03a('0x1a')](function(_0x2f7de7){logger[_0xf03a('0x17')](_0xf03a('0x1b'),_0x2f7de7['message'],_0x14025b);_0x3393f2(_0x2d41d0[_0xf03a('0x17')](0x1f4,_0x2f7de7[_0xf03a('0x19')]));});});};exports[_0xf03a('0x24')]=function(_0x1daa8b){var _0x4c8862=this;return new Promise(function(_0x48e2dc,_0x529574){return db[_0xf03a('0x1c')][_0xf03a('0x25')]({'raw':_0x1daa8b[_0xf03a('0x1d')]?_0x1daa8b[_0xf03a('0x1d')]['raw']===undefined?!![]:![]:!![],'where':_0x1daa8b['options']?_0x1daa8b[_0xf03a('0x1d')][_0xf03a('0x1e')]||null:null,'attributes':_0x1daa8b[_0xf03a('0x1d')]?_0x1daa8b[_0xf03a('0x1d')][_0xf03a('0x22')]||null:null,'include':_0x1daa8b[_0xf03a('0x1d')]?_0x1daa8b[_0xf03a('0x1d')][_0xf03a('0x20')]?_[_0xf03a('0x23')](_0x1daa8b[_0xf03a('0x1d')]['include'],function(_0x5355fe){return{'model':db[_0x5355fe[_0xf03a('0x21')]],'as':_0x5355fe['as'],'attributes':_0x5355fe[_0xf03a('0x22')],'include':_0x5355fe[_0xf03a('0x20')]?_[_0xf03a('0x23')](_0x5355fe['include'],function(_0xa0718f){return{'model':db[_0xa0718f['model']],'as':_0xa0718f['as'],'attributes':_0xa0718f[_0xf03a('0x22')],'include':_0xa0718f['include']?_[_0xf03a('0x23')](_0xa0718f[_0xf03a('0x20')],function(_0x3bffaf){return{'model':db[_0x3bffaf[_0xf03a('0x21')]],'as':_0x3bffaf['as'],'attributes':_0x3bffaf[_0xf03a('0x22')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4fee26){logger['info'](_0xf03a('0x24'),_0x1daa8b);logger[_0xf03a('0x26')](_0xf03a('0x24'),_0x1daa8b,JSON[_0xf03a('0x16')](_0x4fee26));_0x48e2dc(_0x4fee26);})[_0xf03a('0x1a')](function(_0x2b540b){logger[_0xf03a('0x17')]('ShowVoiceQueue',_0x2b540b[_0xf03a('0x19')],_0x1daa8b);_0x529574(_0x4c8862[_0xf03a('0x17')](0x1f4,_0x2b540b['message']));});});};
\ No newline at end of file
+var _0x04c1=['raw','where','util','moment','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','localhost','redis','request','then','info','VoiceQueue,\x20%s,\x20%s','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetVoiceQueue','VoiceQueue','options','attributes','include','model','map','ShowVoiceQueue','find'];(function(_0x4a5224,_0x2822be){var _0x334a3f=function(_0x294972){while(--_0x294972){_0x4a5224['push'](_0x4a5224['shift']());}};_0x334a3f(++_0x2822be);}(_0x04c1,0x92));var _0x104c=function(_0x1928c9,_0x13a6d1){_0x1928c9=_0x1928c9-0x0;var _0x51b5fb=_0x04c1[_0x1928c9];return _0x51b5fb;};'use strict';var _=require('lodash');var util=require(_0x104c('0x0'));var moment=require(_0x104c('0x1'));var BPromise=require(_0x104c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x104c('0x3'));var logger=require(_0x104c('0x4'))(_0x104c('0x5'));var config=require(_0x104c('0x6'));var jayson=require(_0x104c('0x7'));var client=jayson[_0x104c('0x8')]['http']({'port':0x232a});config['redis']=_[_0x104c('0x9')](config['redis'],{'host':_0x104c('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x104c('0xb')]));require('./voiceQueue.socket')['register'](socket);function respondWithRpcPromise(_0x12edcf,_0x34f8c2,_0xce0c92){return new BPromise(function(_0x4af0bd,_0x9b19b4){return client[_0x104c('0xc')](_0x12edcf,_0xce0c92)[_0x104c('0xd')](function(_0x3a4f66){logger[_0x104c('0xe')](_0x104c('0xf'),_0x34f8c2,'request\x20sent');logger[_0x104c('0x10')](_0x104c('0x11'),_0x34f8c2,_0x104c('0x12'),JSON[_0x104c('0x13')](_0x3a4f66));if(_0x3a4f66[_0x104c('0x14')]){if(_0x3a4f66[_0x104c('0x14')][_0x104c('0x15')]===0x1f4){logger[_0x104c('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x34f8c2,_0x3a4f66[_0x104c('0x14')][_0x104c('0x16')]);return _0x9b19b4(_0x3a4f66['error']['message']);}logger[_0x104c('0x14')](_0x104c('0xf'),_0x34f8c2,_0x3a4f66[_0x104c('0x14')]['message']);return _0x4af0bd(_0x3a4f66[_0x104c('0x14')][_0x104c('0x16')]);}else{logger[_0x104c('0xe')](_0x104c('0xf'),_0x34f8c2,_0x104c('0x12'));_0x4af0bd(_0x3a4f66[_0x104c('0x17')][_0x104c('0x16')]);}})[_0x104c('0x18')](function(_0x3e350a){logger[_0x104c('0x14')](_0x104c('0xf'),_0x34f8c2,_0x3e350a);_0x9b19b4(_0x3e350a);});});}exports[_0x104c('0x19')]=function(_0x5475de){var _0x4f238c=this;return new Promise(function(_0x5c3f3d,_0x1e330d){return db[_0x104c('0x1a')]['findAll']({'raw':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['where']||null:null,'attributes':_0x5475de[_0x104c('0x1b')]?_0x5475de['options'][_0x104c('0x1c')]||null:null,'limit':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')]['limit']||null:null,'include':_0x5475de[_0x104c('0x1b')]?_0x5475de[_0x104c('0x1b')][_0x104c('0x1d')]?_['map'](_0x5475de['options'][_0x104c('0x1d')],function(_0x120b5f){return{'model':db[_0x120b5f[_0x104c('0x1e')]],'as':_0x120b5f['as'],'attributes':_0x120b5f[_0x104c('0x1c')],'include':_0x120b5f[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x120b5f['include'],function(_0x26436f){return{'model':db[_0x26436f[_0x104c('0x1e')]],'as':_0x26436f['as'],'attributes':_0x26436f[_0x104c('0x1c')],'include':_0x26436f[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x26436f[_0x104c('0x1d')],function(_0x3eec39){return{'model':db[_0x3eec39[_0x104c('0x1e')]],'as':_0x3eec39['as'],'attributes':_0x3eec39['attributes']};}):[]};}):[]};}):[]:[]})[_0x104c('0xd')](function(_0x730660){logger[_0x104c('0xe')]('GetVoiceQueue',_0x5475de);logger[_0x104c('0x10')](_0x104c('0x19'),_0x5475de,JSON[_0x104c('0x13')](_0x730660));_0x5c3f3d(_0x730660);})[_0x104c('0x18')](function(_0x41c5db){logger['error'](_0x104c('0x19'),_0x41c5db['message'],_0x5475de);_0x1e330d(_0x4f238c[_0x104c('0x14')](0x1f4,_0x41c5db[_0x104c('0x16')]));});});};exports[_0x104c('0x20')]=function(_0x4995f1){var _0x37d37a=this;return new Promise(function(_0xbba13b,_0xbcf8bc){return db[_0x104c('0x1a')][_0x104c('0x21')]({'raw':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x22')]===undefined?!![]:![]:!![],'where':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x23')]||null:null,'attributes':_0x4995f1[_0x104c('0x1b')]?_0x4995f1[_0x104c('0x1b')][_0x104c('0x1c')]||null:null,'include':_0x4995f1[_0x104c('0x1b')]?_0x4995f1['options'][_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x4995f1['options'][_0x104c('0x1d')],function(_0x267c4b){return{'model':db[_0x267c4b[_0x104c('0x1e')]],'as':_0x267c4b['as'],'attributes':_0x267c4b['attributes'],'include':_0x267c4b[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x267c4b[_0x104c('0x1d')],function(_0x12ee01){return{'model':db[_0x12ee01[_0x104c('0x1e')]],'as':_0x12ee01['as'],'attributes':_0x12ee01[_0x104c('0x1c')],'include':_0x12ee01[_0x104c('0x1d')]?_[_0x104c('0x1f')](_0x12ee01[_0x104c('0x1d')],function(_0x530565){return{'model':db[_0x530565[_0x104c('0x1e')]],'as':_0x530565['as'],'attributes':_0x530565['attributes']};}):[]};}):[]};}):[]:[]})[_0x104c('0xd')](function(_0x38e86a){logger[_0x104c('0xe')](_0x104c('0x20'),_0x4995f1);logger[_0x104c('0x10')](_0x104c('0x20'),_0x4995f1,JSON[_0x104c('0x13')](_0x38e86a));_0xbba13b(_0x38e86a);})[_0x104c('0x18')](function(_0x1c72cb){logger['error'](_0x104c('0x20'),_0x1c72cb[_0x104c('0x16')],_0x4995f1);_0xbcf8bc(_0x37d37a[_0x104c('0x14')](0x1f4,_0x1c72cb[_0x104c('0x16')]));});});};
\ No newline at end of file
index 3213efb..93184f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x822e=['emit','removeListener','register','length','./voiceQueue.events','save','remove','update'];(function(_0x3a8dc1,_0x2f03b8){var _0x4b3595=function(_0x1c19e7){while(--_0x1c19e7){_0x3a8dc1['push'](_0x3a8dc1['shift']());}};_0x4b3595(++_0x2f03b8);}(_0x822e,0x1f4));var _0xe822=function(_0x5a7bfe,_0x56b03c){_0x5a7bfe=_0x5a7bfe-0x0;var _0x16197d=_0x822e[_0x5a7bfe];return _0x16197d;};'use strict';var VoiceQueueEvents=require(_0xe822('0x0'));var events=[_0xe822('0x1'),_0xe822('0x2'),_0xe822('0x3')];function createListener(_0x5713d0,_0x2db697){return function(_0x3d884d){_0x2db697[_0xe822('0x4')](_0x5713d0,_0x3d884d);};}function removeListener(_0x1f0c91,_0x596b55){return function(){VoiceQueueEvents[_0xe822('0x5')](_0x1f0c91,_0x596b55);};}exports[_0xe822('0x6')]=function(_0x5b28dc){for(var _0x577840=0x0,_0x4fdc0e=events[_0xe822('0x7')];_0x577840<_0x4fdc0e;_0x577840++){var _0x2805b9=events[_0x577840];var _0x300875=createListener('voiceQueue:'+_0x2805b9,_0x5b28dc);VoiceQueueEvents['on'](_0x2805b9,_0x300875);}};
\ No newline at end of file
+var _0x2746=['length','voiceQueue:','./voiceQueue.events','save','remove','update','emit','removeListener','register'];(function(_0x410b06,_0x2d35b6){var _0x5522ee=function(_0x41333a){while(--_0x41333a){_0x410b06['push'](_0x410b06['shift']());}};_0x5522ee(++_0x2d35b6);}(_0x2746,0x146));var _0x6274=function(_0x25e4d4,_0x17f8e0){_0x25e4d4=_0x25e4d4-0x0;var _0x1d7fbe=_0x2746[_0x25e4d4];return _0x1d7fbe;};'use strict';var VoiceQueueEvents=require(_0x6274('0x0'));var events=[_0x6274('0x1'),_0x6274('0x2'),_0x6274('0x3')];function createListener(_0x5f4a59,_0x23daef){return function(_0x5734d8){_0x23daef[_0x6274('0x4')](_0x5f4a59,_0x5734d8);};}function removeListener(_0x113084,_0x42cd92){return function(){VoiceQueueEvents[_0x6274('0x5')](_0x113084,_0x42cd92);};}exports[_0x6274('0x6')]=function(_0x2e1a1f){for(var _0x49b63c=0x0,_0x44e985=events[_0x6274('0x7')];_0x49b63c<_0x44e985;_0x49b63c++){var _0x4c8bc4=events[_0x49b63c];var _0x2c235b=createListener(_0x6274('0x8')+_0x4c8bc4,_0x2e1a1f);VoiceQueueEvents['on'](_0x4c8bc4,_0x2c235b);}};
\ No newline at end of file
index a705af2..3827b66 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3c5=['delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/index','getVoiceQueuesReport','show','create','put'];(function(_0x4b055c,_0x4b870b){var _0x4b62bb=function(_0x4884c2){while(--_0x4884c2){_0x4b055c['push'](_0x4b055c['shift']());}};_0x4b62bb(++_0x4b870b);}(_0xb3c5,0x192));var _0x5b3c=function(_0x311c35,_0x534915){_0x311c35=_0x311c35-0x0;var _0x5cc50c=_0xb3c5[_0x311c35];return _0x5cc50c;};'use strict';var multer=require(_0x5b3c('0x0'));var util=require(_0x5b3c('0x1'));var path=require(_0x5b3c('0x2'));var timeout=require(_0x5b3c('0x3'));var express=require('express');var router=express[_0x5b3c('0x4')]();var fs_extra=require(_0x5b3c('0x5'));var auth=require(_0x5b3c('0x6'));var interaction=require(_0x5b3c('0x7'));var config=require(_0x5b3c('0x8'));var controller=require('./voiceQueueReport.controller');router[_0x5b3c('0x9')]('/',auth[_0x5b3c('0xa')](),controller[_0x5b3c('0xb')]);router['get']('/describe',auth['isAuthenticated'](),controller[_0x5b3c('0xc')]);router[_0x5b3c('0x9')](_0x5b3c('0xd'),auth[_0x5b3c('0xa')](),controller[_0x5b3c('0xe')]);router[_0x5b3c('0x9')]('/:id',auth[_0x5b3c('0xa')](),controller[_0x5b3c('0xf')]);router['post']('/',auth['isAuthenticated'](),controller[_0x5b3c('0x10')]);router[_0x5b3c('0x11')]('/:id',auth[_0x5b3c('0xa')](),controller['update']);router[_0x5b3c('0x12')]('/:id',auth[_0x5b3c('0xa')](),controller[_0x5b3c('0x13')]);module[_0x5b3c('0x14')]=router;
\ No newline at end of file
+var _0x15a0=['/describe','describe','/index','getVoiceQueuesReport','show','post','create','put','update','/:id','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueueReport.controller','get','isAuthenticated','index'];(function(_0x4e141a,_0x29b849){var _0x1ce7fa=function(_0xcfdfd7){while(--_0xcfdfd7){_0x4e141a['push'](_0x4e141a['shift']());}};_0x1ce7fa(++_0x29b849);}(_0x15a0,0x1ad));var _0x015a=function(_0x22cb5f,_0x2cdd63){_0x22cb5f=_0x22cb5f-0x0;var _0x274d36=_0x15a0[_0x22cb5f];return _0x274d36;};'use strict';var multer=require('multer');var util=require(_0x015a('0x0'));var path=require(_0x015a('0x1'));var timeout=require('connect-timeout');var express=require(_0x015a('0x2'));var router=express[_0x015a('0x3')]();var fs_extra=require(_0x015a('0x4'));var auth=require(_0x015a('0x5'));var interaction=require(_0x015a('0x6'));var config=require('../../config/environment');var controller=require(_0x015a('0x7'));router[_0x015a('0x8')]('/',auth[_0x015a('0x9')](),controller[_0x015a('0xa')]);router['get'](_0x015a('0xb'),auth[_0x015a('0x9')](),controller[_0x015a('0xc')]);router[_0x015a('0x8')](_0x015a('0xd'),auth[_0x015a('0x9')](),controller[_0x015a('0xe')]);router[_0x015a('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x015a('0xf')]);router[_0x015a('0x10')]('/',auth[_0x015a('0x9')](),controller[_0x015a('0x11')]);router[_0x015a('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x015a('0x13')]);router['delete'](_0x015a('0x14'),auth[_0x015a('0x9')](),controller['destroy']);module[_0x015a('0x15')]=router;
\ No newline at end of file
index 5a6c774..a660aa3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77a7=['diff','seconds','setDataValue','queuecallerleaveAt','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','FORWARD,\x20BLIND,\x20ATTENDED','moment','exports','STRING','DATE','getDataValue','queuecallerjoinAt'];(function(_0x4e0adf,_0xb8bb74){var _0x1a019a=function(_0x300662){while(--_0x300662){_0x4e0adf['push'](_0x4e0adf['shift']());}};_0x1a019a(++_0xb8bb74);}(_0x77a7,0xbe));var _0x777a=function(_0x42853d,_0x49d6ee){_0x42853d=_0x42853d-0x0;var _0x119be3=_0x77a7[_0x42853d];return _0x119be3;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x777a('0x0'));module[_0x777a('0x1')]={'type':{'type':Sequelize[_0x777a('0x2')]},'uniqueid':{'type':Sequelize[_0x777a('0x2')]},'calleridnum':{'type':Sequelize[_0x777a('0x2')]},'calleridname':{'type':Sequelize[_0x777a('0x2')]},'queue':{'type':Sequelize[_0x777a('0x2')]},'queuecallerjoinAt':{'type':Sequelize[_0x777a('0x3')]},'queuecallerleaveAt':{'type':Sequelize[_0x777a('0x3')],'set':function(_0x2c0111){var _0xda68b6=moment(_0x2c0111);var _0x370055=moment(this[_0x777a('0x4')](_0x777a('0x5')))['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x15282b=_0xda68b6[_0x777a('0x6')](_0x370055,_0x777a('0x7'));this[_0x777a('0x8')](_0x777a('0x9'),_0x2c0111);this[_0x777a('0x8')]('holdtime',_0x15282b||null);}},'position':{'type':Sequelize[_0x777a('0xa')]},'count':{'type':Sequelize[_0x777a('0xa')]},'queuecallerabandon':{'type':Sequelize[_0x777a('0xb')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x777a('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x777a('0x3')]},'queuecallerexit':{'type':Sequelize[_0x777a('0xb')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x777a('0x2')],'comment':_0x777a('0xc')},'originalposition':{'type':Sequelize[_0x777a('0xa')]},'channel':{'type':Sequelize[_0x777a('0x2')]},'connectedlinenum':{'type':Sequelize[_0x777a('0x2')]},'connectedlinename':{'type':Sequelize[_0x777a('0x2')]},'accountcode':{'type':Sequelize[_0x777a('0x2')]},'context':{'type':Sequelize[_0x777a('0x2')]},'exten':{'type':Sequelize[_0x777a('0x2')]},'priority':{'type':Sequelize[_0x777a('0x2')]},'holdtime':{'type':Sequelize[_0x777a('0xa')]},'mohtime':{'type':Sequelize[_0x777a('0xa')],'defaultValue':0x0},'assigned':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x777a('0x2')]},'transfer':{'type':Sequelize[_0x777a('0xb')],'defaultValue':![]},'transfertype':{'type':Sequelize['STRING'],'comment':_0x777a('0xd')},'transferexten':{'type':Sequelize[_0x777a('0x2')]},'transferuniqueid':{'type':Sequelize[_0x777a('0x2')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x777a('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'note':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4739=['STRING','DATE','getDataValue','queuecallerjoinAt','YYYY-MM-DD\x20HH:mm:ss','diff','seconds','setDataValue','holdtime','INTEGER','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','moment','exports'];(function(_0x17abe0,_0x2becec){var _0x5dd1a2=function(_0x244f5e){while(--_0x244f5e){_0x17abe0['push'](_0x17abe0['shift']());}};_0x5dd1a2(++_0x2becec);}(_0x4739,0x1cc));var _0x9473=function(_0x22d114,_0x2d249b){_0x22d114=_0x22d114-0x0;var _0x17c386=_0x4739[_0x22d114];return _0x17c386;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9473('0x0'));module[_0x9473('0x1')]={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x9473('0x2')]},'calleridname':{'type':Sequelize[_0x9473('0x2')]},'queue':{'type':Sequelize[_0x9473('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x9473('0x3')],'set':function(_0x109a3e){var _0x1dfd1a=moment(_0x109a3e);var _0x3f9076=moment(this[_0x9473('0x4')](_0x9473('0x5')))['format'](_0x9473('0x6'));var _0xefec4e=_0x1dfd1a[_0x9473('0x7')](_0x3f9076,_0x9473('0x8'));this[_0x9473('0x9')]('queuecallerleaveAt',_0x109a3e);this[_0x9473('0x9')](_0x9473('0xa'),_0xefec4e||null);}},'position':{'type':Sequelize[_0x9473('0xb')]},'count':{'type':Sequelize[_0x9473('0xb')]},'queuecallerabandon':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x9473('0x3')]},'queuecallercomplete':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x9473('0x3')]},'queuecallerexit':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize['STRING'],'comment':_0x9473('0xd')},'originalposition':{'type':Sequelize[_0x9473('0xb')]},'channel':{'type':Sequelize[_0x9473('0x2')]},'connectedlinenum':{'type':Sequelize[_0x9473('0x2')]},'connectedlinename':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x9473('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x9473('0x2')]},'priority':{'type':Sequelize[_0x9473('0x2')]},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0x9473('0xb')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0x9473('0x2')]},'transfer':{'type':Sequelize[_0x9473('0xc')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x9473('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize['STRING']},'transferuniqueid':{'type':Sequelize[_0x9473('0x2')]},'disposition':{'type':Sequelize[_0x9473('0x2')]},'secondDisposition':{'type':Sequelize[_0x9473('0x2')]},'thirdDisposition':{'type':Sequelize[_0x9473('0x2')]},'queuecallerenterreason':{'type':Sequelize[_0x9473('0xb')],'defaultValue':0x0},'note':{'type':Sequelize[_0x9473('0x2')]}};
\ No newline at end of file
index 02179f2..85b1ac8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb09=['status','json','offset','undefined','count','limit','set','Content-Range','save','destroy','then','end','error','stack','name','map','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','VoiceQueueReport','includeAll','findAll','rows','catch','show','params','include','find','create','body','update','describe','getVoiceQueuesReport','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus'];(function(_0x7f2d6,_0x34a999){var _0x4c1f62=function(_0xa9f8f7){while(--_0xa9f8f7){_0x7f2d6['push'](_0x7f2d6['shift']());}};_0x4c1f62(++_0x34a999);}(_0xfb09,0x81));var _0x9fb0=function(_0x392d4a,_0x19f3e1){_0x392d4a=_0x392d4a-0x0;var _0x3774ab=_0xfb09[_0x392d4a];return _0x3774ab;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9fb0('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9fb0('0x1'));var rp=require(_0x9fb0('0x2'));var moment=require(_0x9fb0('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x9fb0('0x4'));var util=require('util');var path=require(_0x9fb0('0x5'));var sox=require(_0x9fb0('0x6'));var csv=require(_0x9fb0('0x7'));var ejs=require(_0x9fb0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9fb0('0x9'));var squel=require(_0x9fb0('0xa'));var crypto=require(_0x9fb0('0xb'));var jsforce=require(_0x9fb0('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x9fb0('0x7'));var querystring=require(_0x9fb0('0xd'));var Papa=require(_0x9fb0('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x9fb0('0xf'));var hardwareService=require(_0x9fb0('0x10'));var logger=require(_0x9fb0('0x11'))('api');var utils=require(_0x9fb0('0x12'));var config=require(_0x9fb0('0x13'));var licenseUtil=require(_0x9fb0('0x14'));var db=require(_0x9fb0('0x15'))['db'];config[_0x9fb0('0x16')]=_[_0x9fb0('0x17')](config[_0x9fb0('0x16')],{'host':_0x9fb0('0x18'),'port':0x18eb});var socket=require(_0x9fb0('0x19'))(new Redis(config['redis']));require(_0x9fb0('0x1a'))[_0x9fb0('0x1b')](socket);function respondWithStatusCode(_0x5842d4,_0x95d27d){_0x95d27d=_0x95d27d||0xcc;return function(_0x530e2d){if(_0x530e2d){return _0x5842d4[_0x9fb0('0x1c')](_0x95d27d);}return _0x5842d4[_0x9fb0('0x1d')](_0x95d27d)['end']();};}function respondWithResult(_0x303f7e,_0x5a577b){_0x5a577b=_0x5a577b||0xc8;return function(_0xffa1d9){if(_0xffa1d9){return _0x303f7e[_0x9fb0('0x1d')](_0x5a577b)[_0x9fb0('0x1e')](_0xffa1d9);}};}function respondWithFilteredResult(_0x9331f8,_0x24711f){return function(_0xfa3396){if(_0xfa3396){var _0x1f8a7f=typeof _0x24711f[_0x9fb0('0x1f')]==='undefined'&&typeof _0x24711f['limit']===_0x9fb0('0x20');var _0x23fd11=_0xfa3396[_0x9fb0('0x21')];var _0x267bfd=_0x1f8a7f?0x0:_0x24711f['offset'];var _0x445d9c=_0x1f8a7f?_0xfa3396['count']:_0x24711f[_0x9fb0('0x1f')]+_0x24711f[_0x9fb0('0x22')];var _0x1709bd;if(_0x445d9c>=_0x23fd11){_0x445d9c=_0x23fd11;_0x1709bd=0xc8;}else{_0x1709bd=0xce;}_0x9331f8['status'](_0x1709bd);return _0x9331f8[_0x9fb0('0x23')](_0x9fb0('0x24'),_0x267bfd+'-'+_0x445d9c+'/'+_0x23fd11)[_0x9fb0('0x1e')](_0xfa3396);}return null;};}function patchUpdates(_0x238ef7){return function(_0x521b56){try{jsonpatch['apply'](_0x521b56,_0x238ef7,!![]);}catch(_0x321f76){return BPromise['reject'](_0x321f76);}return _0x521b56[_0x9fb0('0x25')]();};}function saveUpdates(_0xec4d41,_0x184e01){return function(_0xdf6804){if(_0xdf6804){return _0xdf6804['update'](_0xec4d41)['then'](function(_0x4d6084){return _0x4d6084;});}return null;};}function removeEntity(_0xb3e161,_0x2c32b1){return function(_0x8da79e){if(_0x8da79e){return _0x8da79e[_0x9fb0('0x26')]()[_0x9fb0('0x27')](function(){_0xb3e161[_0x9fb0('0x1d')](0xcc)[_0x9fb0('0x28')]();});}};}function handleEntityNotFound(_0x374ce6,_0x1c5629){return function(_0x2acdab){if(!_0x2acdab){_0x374ce6[_0x9fb0('0x1c')](0x194);}return _0x2acdab;};}function handleError(_0x2d607b,_0x3d3229){_0x3d3229=_0x3d3229||0x1f4;return function(_0x1bf773){logger[_0x9fb0('0x29')](_0x1bf773[_0x9fb0('0x2a')]);if(_0x1bf773[_0x9fb0('0x2b')]){delete _0x1bf773['name'];}_0x2d607b['status'](_0x3d3229)['send'](_0x1bf773);};}exports['index']=function(_0x57fc4d,_0x456f40){var _0x4b6505={},_0x3d40a6={},_0x50f786={'count':0x0,'rows':[]};var _0xd2be90=_[_0x9fb0('0x2c')](db['VoiceQueueReport'][_0x9fb0('0x2d')],function(_0x5a80e3){return{'name':_0x5a80e3['fieldName'],'type':_0x5a80e3[_0x9fb0('0x2e')][_0x9fb0('0x2f')]};});_0x3d40a6[_0x9fb0('0x30')]=_['map'](_0xd2be90,_0x9fb0('0x2b'));_0x3d40a6['query']=_[_0x9fb0('0x31')](_0x57fc4d[_0x9fb0('0x32')]);_0x3d40a6[_0x9fb0('0x33')]=_[_0x9fb0('0x34')](_0x3d40a6[_0x9fb0('0x30')],_0x3d40a6[_0x9fb0('0x32')]);_0x4b6505[_0x9fb0('0x35')]=_[_0x9fb0('0x34')](_0x3d40a6['model'],qs['fields'](_0x57fc4d['query'][_0x9fb0('0x36')]));_0x4b6505[_0x9fb0('0x35')]=_0x4b6505['attributes'][_0x9fb0('0x37')]?_0x4b6505['attributes']:_0x3d40a6[_0x9fb0('0x30')];if(!_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x38')](_0x9fb0('0x39'))){_0x4b6505[_0x9fb0('0x22')]=qs[_0x9fb0('0x22')](_0x57fc4d['query']['limit']);_0x4b6505[_0x9fb0('0x1f')]=qs[_0x9fb0('0x1f')](_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x1f')]);}_0x4b6505[_0x9fb0('0x3a')]=qs[_0x9fb0('0x3b')](_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x3b')]);_0x4b6505[_0x9fb0('0x3c')]=qs[_0x9fb0('0x33')](_[_0x9fb0('0x3d')](_0x57fc4d['query'],_0x3d40a6[_0x9fb0('0x33')]),_0xd2be90);if(_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x3e')]){_0x4b6505[_0x9fb0('0x3c')]=_[_0x9fb0('0x3f')](_0x4b6505[_0x9fb0('0x3c')],{'$or':_[_0x9fb0('0x2c')](_0xd2be90,function(_0x588d44){if(_0x588d44[_0x9fb0('0x2e')]!=='VIRTUAL'){var _0x1fa98c={};_0x1fa98c[_0x588d44[_0x9fb0('0x2b')]]={'$like':'%'+_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x3e')]+'%'};return _0x1fa98c;}})});}_0x4b6505=_['merge']({},_0x4b6505,_0x57fc4d[_0x9fb0('0x40')]);var _0x1b49d4={'where':_0x4b6505[_0x9fb0('0x3c')]};return db[_0x9fb0('0x41')][_0x9fb0('0x21')](_0x1b49d4)[_0x9fb0('0x27')](function(_0x3a74fc){_0x50f786['count']=_0x3a74fc;if(_0x57fc4d[_0x9fb0('0x32')][_0x9fb0('0x42')]){_0x4b6505['include']=[{'all':!![]}];}return db[_0x9fb0('0x41')][_0x9fb0('0x43')](_0x4b6505);})[_0x9fb0('0x27')](function(_0x17b08b){_0x50f786[_0x9fb0('0x44')]=_0x17b08b;return _0x50f786;})[_0x9fb0('0x27')](respondWithFilteredResult(_0x456f40,_0x4b6505))[_0x9fb0('0x45')](handleError(_0x456f40,null));};exports[_0x9fb0('0x46')]=function(_0x202d6b,_0xb384ff){var _0xe2e200={'raw':![],'where':{'id':_0x202d6b[_0x9fb0('0x47')]['id']}},_0x540114={};_0x540114[_0x9fb0('0x30')]=_[_0x9fb0('0x31')](db['VoiceQueueReport']['rawAttributes']);_0x540114[_0x9fb0('0x32')]=_[_0x9fb0('0x31')](_0x202d6b[_0x9fb0('0x32')]);_0x540114[_0x9fb0('0x33')]=_[_0x9fb0('0x34')](_0x540114[_0x9fb0('0x30')],_0x540114['query']);_0xe2e200[_0x9fb0('0x35')]=_[_0x9fb0('0x34')](_0x540114[_0x9fb0('0x30')],qs[_0x9fb0('0x36')](_0x202d6b['query'][_0x9fb0('0x36')]));_0xe2e200[_0x9fb0('0x35')]=_0xe2e200[_0x9fb0('0x35')]['length']?_0xe2e200['attributes']:_0x540114[_0x9fb0('0x30')];if(_0x202d6b[_0x9fb0('0x32')][_0x9fb0('0x42')]){_0xe2e200[_0x9fb0('0x48')]=[{'all':!![]}];}_0xe2e200=_[_0x9fb0('0x3f')]({},_0xe2e200,_0x202d6b[_0x9fb0('0x40')]);return db[_0x9fb0('0x41')][_0x9fb0('0x49')](_0xe2e200)['then'](handleEntityNotFound(_0xb384ff,null))[_0x9fb0('0x27')](respondWithResult(_0xb384ff,null))[_0x9fb0('0x45')](handleError(_0xb384ff,null));};exports[_0x9fb0('0x4a')]=function(_0x28f25b,_0x2ae780){return db['VoiceQueueReport'][_0x9fb0('0x4a')](_0x28f25b[_0x9fb0('0x4b')],{})[_0x9fb0('0x27')](respondWithResult(_0x2ae780,0xc9))[_0x9fb0('0x45')](handleError(_0x2ae780,null));};exports[_0x9fb0('0x4c')]=function(_0x9f706,_0x1735a2){if(_0x9f706[_0x9fb0('0x4b')]['id']){delete _0x9f706[_0x9fb0('0x4b')]['id'];}return db['VoiceQueueReport'][_0x9fb0('0x49')]({'where':{'id':_0x9f706['params']['id']}})[_0x9fb0('0x27')](handleEntityNotFound(_0x1735a2,null))[_0x9fb0('0x27')](saveUpdates(_0x9f706[_0x9fb0('0x4b')],null))['then'](respondWithResult(_0x1735a2,null))[_0x9fb0('0x45')](handleError(_0x1735a2,null));};exports[_0x9fb0('0x26')]=function(_0x3f1ebd,_0x13f067){return db[_0x9fb0('0x41')]['find']({'where':{'id':_0x3f1ebd['params']['id']}})[_0x9fb0('0x27')](handleEntityNotFound(_0x13f067,null))[_0x9fb0('0x27')](removeEntity(_0x13f067,null))[_0x9fb0('0x45')](handleError(_0x13f067,null));};exports[_0x9fb0('0x4d')]=function(_0x1252a5,_0x23bb9b){return db[_0x9fb0('0x41')][_0x9fb0('0x4d')]()[_0x9fb0('0x27')](respondWithResult(_0x23bb9b,null))[_0x9fb0('0x45')](handleError(_0x23bb9b,null));};exports[_0x9fb0('0x4e')]=function(_0xb4704d,_0x1dd5ec){var _0x5660b0={},_0x4351aa={},_0x335429={'count':0x0,'rows':[]};_0x4351aa['model']=_[_0x9fb0('0x31')](db[_0x9fb0('0x41')]['rawAttributes']);_0x4351aa[_0x9fb0('0x32')]=_[_0x9fb0('0x31')](_0xb4704d[_0x9fb0('0x32')]);_0x4351aa['filters']=_['intersection'](_0x4351aa[_0x9fb0('0x30')],_0x4351aa[_0x9fb0('0x32')]);_0x5660b0['attributes']=_[_0x9fb0('0x34')](_0x4351aa[_0x9fb0('0x30')],qs[_0x9fb0('0x36')](_0xb4704d[_0x9fb0('0x32')][_0x9fb0('0x36')]));_0x5660b0[_0x9fb0('0x35')]=_0x5660b0[_0x9fb0('0x35')][_0x9fb0('0x37')]?_0x5660b0['attributes']:_0x4351aa['model'];if(!_0xb4704d[_0x9fb0('0x32')][_0x9fb0('0x38')](_0x9fb0('0x39'))){_0x5660b0[_0x9fb0('0x22')]=qs[_0x9fb0('0x22')](_0xb4704d[_0x9fb0('0x32')][_0x9fb0('0x22')]);_0x5660b0['offset']=qs[_0x9fb0('0x1f')](_0xb4704d[_0x9fb0('0x32')][_0x9fb0('0x1f')]);}_0x5660b0[_0x9fb0('0x3a')]=qs[_0x9fb0('0x3b')](_0xb4704d['query'][_0x9fb0('0x3b')]);_0x5660b0[_0x9fb0('0x3c')]=qs['filters'](_[_0x9fb0('0x3d')](_0xb4704d[_0x9fb0('0x32')],_0x4351aa['filters']));if(_0xb4704d[_0x9fb0('0x32')]['filter']){_0x5660b0[_0x9fb0('0x3c')]=_['merge'](_0x5660b0['where'],{'$or':_[_0x9fb0('0x2c')](_0x5660b0[_0x9fb0('0x35')],function(_0x3e1e77){var _0x25e800={};_0x25e800[_0x3e1e77]={'$like':'%'+_0xb4704d[_0x9fb0('0x32')][_0x9fb0('0x3e')]+'%'};return _0x25e800;})});}_0x5660b0=_['merge']({},_0x5660b0,_0xb4704d[_0x9fb0('0x40')]);var _0x2abc61={'where':_0x5660b0['where']};return db['VoiceQueueReport'][_0x9fb0('0x21')](_0x2abc61)[_0x9fb0('0x27')](function(_0x47c02e){_0x335429['count']=_0x47c02e;if(_0xb4704d[_0x9fb0('0x32')]['includeAll']){_0x5660b0[_0x9fb0('0x48')]=[{'all':!![]}];}return db[_0x9fb0('0x41')][_0x9fb0('0x43')](_0x5660b0);})[_0x9fb0('0x27')](function(_0x425927){_0x335429[_0x9fb0('0x44')]=_0x425927;return _0x335429;})[_0x9fb0('0x27')](respondWithFilteredResult(_0x1dd5ec,_0x5660b0,_0x9fb0('0x4e')))['catch'](handleError(_0x1dd5ec,null,_0x9fb0('0x4e')));};
\ No newline at end of file
+var _0xdcb5=['VIRTUAL','options','includeAll','rows','catch','params','length','include','create','body','find','describe','getVoiceQueuesReport','findAll','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','apply','reject','save','update','then','destroy','end','error','stack','name','send','index','map','VoiceQueueReport','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge'];(function(_0xa8883,_0x1f107f){var _0x479426=function(_0x4e56b9){while(--_0x4e56b9){_0xa8883['push'](_0xa8883['shift']());}};_0x479426(++_0x1f107f);}(_0xdcb5,0x67));var _0x5dcb=function(_0x25e286,_0x573fab){_0x25e286=_0x25e286-0x0;var _0x7be8f7=_0xdcb5[_0x25e286];return _0x7be8f7;};'use strict';var emlformat=require(_0x5dcb('0x0'));var rimraf=require(_0x5dcb('0x1'));var zipdir=require(_0x5dcb('0x2'));var jsonpatch=require(_0x5dcb('0x3'));var rp=require(_0x5dcb('0x4'));var moment=require(_0x5dcb('0x5'));var BPromise=require(_0x5dcb('0x6'));var Mustache=require(_0x5dcb('0x7'));var util=require(_0x5dcb('0x8'));var path=require(_0x5dcb('0x9'));var sox=require(_0x5dcb('0xa'));var csv=require(_0x5dcb('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5dcb('0xc'));var _=require(_0x5dcb('0xd'));var squel=require(_0x5dcb('0xe'));var crypto=require(_0x5dcb('0xf'));var jsforce=require(_0x5dcb('0x10'));var deskjs=require(_0x5dcb('0x11'));var toCsv=require(_0x5dcb('0xb'));var querystring=require(_0x5dcb('0x12'));var Papa=require(_0x5dcb('0x13'));var Redis=require(_0x5dcb('0x14'));var authService=require(_0x5dcb('0x15'));var qs=require(_0x5dcb('0x16'));var as=require(_0x5dcb('0x17'));var hardwareService=require(_0x5dcb('0x18'));var logger=require(_0x5dcb('0x19'))('api');var utils=require(_0x5dcb('0x1a'));var config=require(_0x5dcb('0x1b'));var licenseUtil=require(_0x5dcb('0x1c'));var db=require(_0x5dcb('0x1d'))['db'];config[_0x5dcb('0x1e')]=_[_0x5dcb('0x1f')](config[_0x5dcb('0x1e')],{'host':'localhost','port':0x18eb});var socket=require(_0x5dcb('0x20'))(new Redis(config[_0x5dcb('0x1e')]));require(_0x5dcb('0x21'))['register'](socket);function respondWithStatusCode(_0x317cdc,_0x564621){_0x564621=_0x564621||0xcc;return function(_0x39ec4a){if(_0x39ec4a){return _0x317cdc[_0x5dcb('0x22')](_0x564621);}return _0x317cdc[_0x5dcb('0x23')](_0x564621)['end']();};}function respondWithResult(_0x26d9a2,_0x5312ea){_0x5312ea=_0x5312ea||0xc8;return function(_0x559064){if(_0x559064){return _0x26d9a2[_0x5dcb('0x23')](_0x5312ea)[_0x5dcb('0x24')](_0x559064);}};}function respondWithFilteredResult(_0xdf01ce,_0x12440b){return function(_0x3fa5a8){if(_0x3fa5a8){var _0x3b993e=typeof _0x12440b['offset']===_0x5dcb('0x25')&&typeof _0x12440b['limit']===_0x5dcb('0x25');var _0x4e1d8d=_0x3fa5a8[_0x5dcb('0x26')];var _0xe286bf=_0x3b993e?0x0:_0x12440b[_0x5dcb('0x27')];var _0x330b37=_0x3b993e?_0x3fa5a8[_0x5dcb('0x26')]:_0x12440b[_0x5dcb('0x27')]+_0x12440b[_0x5dcb('0x28')];var _0x23559c;if(_0x330b37>=_0x4e1d8d){_0x330b37=_0x4e1d8d;_0x23559c=0xc8;}else{_0x23559c=0xce;}_0xdf01ce[_0x5dcb('0x23')](_0x23559c);return _0xdf01ce[_0x5dcb('0x29')](_0x5dcb('0x2a'),_0xe286bf+'-'+_0x330b37+'/'+_0x4e1d8d)[_0x5dcb('0x24')](_0x3fa5a8);}return null;};}function patchUpdates(_0x146841){return function(_0x2e6071){try{jsonpatch[_0x5dcb('0x2b')](_0x2e6071,_0x146841,!![]);}catch(_0x4387f1){return BPromise[_0x5dcb('0x2c')](_0x4387f1);}return _0x2e6071[_0x5dcb('0x2d')]();};}function saveUpdates(_0x4012bf,_0x2c911c){return function(_0x13f6bd){if(_0x13f6bd){return _0x13f6bd[_0x5dcb('0x2e')](_0x4012bf)[_0x5dcb('0x2f')](function(_0xed26d){return _0xed26d;});}return null;};}function removeEntity(_0xc5d53d,_0xf39f98){return function(_0x970c70){if(_0x970c70){return _0x970c70[_0x5dcb('0x30')]()[_0x5dcb('0x2f')](function(){_0xc5d53d[_0x5dcb('0x23')](0xcc)[_0x5dcb('0x31')]();});}};}function handleEntityNotFound(_0x31477d,_0x5c698e){return function(_0x11eda6){if(!_0x11eda6){_0x31477d['sendStatus'](0x194);}return _0x11eda6;};}function handleError(_0x5a6fc5,_0x88081a){_0x88081a=_0x88081a||0x1f4;return function(_0x389115){logger[_0x5dcb('0x32')](_0x389115[_0x5dcb('0x33')]);if(_0x389115[_0x5dcb('0x34')]){delete _0x389115[_0x5dcb('0x34')];}_0x5a6fc5[_0x5dcb('0x23')](_0x88081a)[_0x5dcb('0x35')](_0x389115);};}exports[_0x5dcb('0x36')]=function(_0x23ca8b,_0x4eaea0){var _0x1aaf7b={},_0x333af3={},_0x2ee69e={'count':0x0,'rows':[]};var _0x5d215c=_[_0x5dcb('0x37')](db[_0x5dcb('0x38')][_0x5dcb('0x39')],function(_0x3465b3){return{'name':_0x3465b3[_0x5dcb('0x3a')],'type':_0x3465b3[_0x5dcb('0x3b')]['key']};});_0x333af3[_0x5dcb('0x3c')]=_[_0x5dcb('0x37')](_0x5d215c,_0x5dcb('0x34'));_0x333af3[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0x23ca8b['query']);_0x333af3['filters']=_[_0x5dcb('0x3f')](_0x333af3[_0x5dcb('0x3c')],_0x333af3[_0x5dcb('0x3d')]);_0x1aaf7b[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x333af3[_0x5dcb('0x3c')],qs[_0x5dcb('0x41')](_0x23ca8b[_0x5dcb('0x3d')]['fields']));_0x1aaf7b[_0x5dcb('0x40')]=_0x1aaf7b[_0x5dcb('0x40')]['length']?_0x1aaf7b[_0x5dcb('0x40')]:_0x333af3[_0x5dcb('0x3c')];if(!_0x23ca8b['query'][_0x5dcb('0x42')](_0x5dcb('0x43'))){_0x1aaf7b['limit']=qs['limit'](_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x28')]);_0x1aaf7b['offset']=qs[_0x5dcb('0x27')](_0x23ca8b[_0x5dcb('0x3d')]['offset']);}_0x1aaf7b[_0x5dcb('0x44')]=qs[_0x5dcb('0x45')](_0x23ca8b['query'][_0x5dcb('0x45')]);_0x1aaf7b[_0x5dcb('0x46')]=qs[_0x5dcb('0x47')](_[_0x5dcb('0x48')](_0x23ca8b[_0x5dcb('0x3d')],_0x333af3['filters']),_0x5d215c);if(_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x49')]){_0x1aaf7b[_0x5dcb('0x46')]=_[_0x5dcb('0x4a')](_0x1aaf7b[_0x5dcb('0x46')],{'$or':_['map'](_0x5d215c,function(_0x68cce0){if(_0x68cce0[_0x5dcb('0x3b')]!==_0x5dcb('0x4b')){var _0x4aae42={};_0x4aae42[_0x68cce0[_0x5dcb('0x34')]]={'$like':'%'+_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x49')]+'%'};return _0x4aae42;}})});}_0x1aaf7b=_[_0x5dcb('0x4a')]({},_0x1aaf7b,_0x23ca8b[_0x5dcb('0x4c')]);var _0x4ad3fc={'where':_0x1aaf7b[_0x5dcb('0x46')]};return db[_0x5dcb('0x38')]['count'](_0x4ad3fc)['then'](function(_0xa264b3){_0x2ee69e['count']=_0xa264b3;if(_0x23ca8b[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x1aaf7b['include']=[{'all':!![]}];}return db[_0x5dcb('0x38')]['findAll'](_0x1aaf7b);})[_0x5dcb('0x2f')](function(_0x2503f3){_0x2ee69e[_0x5dcb('0x4e')]=_0x2503f3;return _0x2ee69e;})['then'](respondWithFilteredResult(_0x4eaea0,_0x1aaf7b))[_0x5dcb('0x4f')](handleError(_0x4eaea0,null));};exports['show']=function(_0x206fc3,_0x1cbfb8){var _0x37f4ea={'raw':![],'where':{'id':_0x206fc3[_0x5dcb('0x50')]['id']}},_0x2edccf={};_0x2edccf[_0x5dcb('0x3c')]=_[_0x5dcb('0x3e')](db[_0x5dcb('0x38')][_0x5dcb('0x39')]);_0x2edccf[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0x206fc3['query']);_0x2edccf[_0x5dcb('0x47')]=_[_0x5dcb('0x3f')](_0x2edccf[_0x5dcb('0x3c')],_0x2edccf['query']);_0x37f4ea[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x2edccf[_0x5dcb('0x3c')],qs[_0x5dcb('0x41')](_0x206fc3[_0x5dcb('0x3d')]['fields']));_0x37f4ea[_0x5dcb('0x40')]=_0x37f4ea['attributes'][_0x5dcb('0x51')]?_0x37f4ea[_0x5dcb('0x40')]:_0x2edccf[_0x5dcb('0x3c')];if(_0x206fc3[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x37f4ea[_0x5dcb('0x52')]=[{'all':!![]}];}_0x37f4ea=_[_0x5dcb('0x4a')]({},_0x37f4ea,_0x206fc3['options']);return db['VoiceQueueReport']['find'](_0x37f4ea)[_0x5dcb('0x2f')](handleEntityNotFound(_0x1cbfb8,null))[_0x5dcb('0x2f')](respondWithResult(_0x1cbfb8,null))[_0x5dcb('0x4f')](handleError(_0x1cbfb8,null));};exports[_0x5dcb('0x53')]=function(_0x184d56,_0x357a47){return db['VoiceQueueReport']['create'](_0x184d56[_0x5dcb('0x54')],{})[_0x5dcb('0x2f')](respondWithResult(_0x357a47,0xc9))['catch'](handleError(_0x357a47,null));};exports[_0x5dcb('0x2e')]=function(_0x43b640,_0xfcd0d0){if(_0x43b640[_0x5dcb('0x54')]['id']){delete _0x43b640[_0x5dcb('0x54')]['id'];}return db[_0x5dcb('0x38')]['find']({'where':{'id':_0x43b640[_0x5dcb('0x50')]['id']}})[_0x5dcb('0x2f')](handleEntityNotFound(_0xfcd0d0,null))[_0x5dcb('0x2f')](saveUpdates(_0x43b640[_0x5dcb('0x54')],null))['then'](respondWithResult(_0xfcd0d0,null))[_0x5dcb('0x4f')](handleError(_0xfcd0d0,null));};exports[_0x5dcb('0x30')]=function(_0x4bfd8c,_0x1d0e1d){return db[_0x5dcb('0x38')][_0x5dcb('0x55')]({'where':{'id':_0x4bfd8c[_0x5dcb('0x50')]['id']}})['then'](handleEntityNotFound(_0x1d0e1d,null))['then'](removeEntity(_0x1d0e1d,null))[_0x5dcb('0x4f')](handleError(_0x1d0e1d,null));};exports[_0x5dcb('0x56')]=function(_0x3b6ae0,_0x57254d){return db['VoiceQueueReport']['describe']()['then'](respondWithResult(_0x57254d,null))[_0x5dcb('0x4f')](handleError(_0x57254d,null));};exports[_0x5dcb('0x57')]=function(_0xafd586,_0x12d54e){var _0x46bf1c={},_0x591039={},_0x799a0c={'count':0x0,'rows':[]};_0x591039['model']=_[_0x5dcb('0x3e')](db[_0x5dcb('0x38')][_0x5dcb('0x39')]);_0x591039[_0x5dcb('0x3d')]=_[_0x5dcb('0x3e')](_0xafd586['query']);_0x591039[_0x5dcb('0x47')]=_[_0x5dcb('0x3f')](_0x591039[_0x5dcb('0x3c')],_0x591039[_0x5dcb('0x3d')]);_0x46bf1c[_0x5dcb('0x40')]=_[_0x5dcb('0x3f')](_0x591039['model'],qs[_0x5dcb('0x41')](_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x41')]));_0x46bf1c[_0x5dcb('0x40')]=_0x46bf1c[_0x5dcb('0x40')][_0x5dcb('0x51')]?_0x46bf1c[_0x5dcb('0x40')]:_0x591039[_0x5dcb('0x3c')];if(!_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x42')](_0x5dcb('0x43'))){_0x46bf1c['limit']=qs[_0x5dcb('0x28')](_0xafd586['query'][_0x5dcb('0x28')]);_0x46bf1c[_0x5dcb('0x27')]=qs[_0x5dcb('0x27')](_0xafd586[_0x5dcb('0x3d')]['offset']);}_0x46bf1c[_0x5dcb('0x44')]=qs['sort'](_0xafd586[_0x5dcb('0x3d')]['sort']);_0x46bf1c[_0x5dcb('0x46')]=qs['filters'](_[_0x5dcb('0x48')](_0xafd586['query'],_0x591039[_0x5dcb('0x47')]));if(_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x49')]){_0x46bf1c[_0x5dcb('0x46')]=_[_0x5dcb('0x4a')](_0x46bf1c['where'],{'$or':_[_0x5dcb('0x37')](_0x46bf1c[_0x5dcb('0x40')],function(_0x56de98){var _0x47d310={};_0x47d310[_0x56de98]={'$like':'%'+_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x49')]+'%'};return _0x47d310;})});}_0x46bf1c=_[_0x5dcb('0x4a')]({},_0x46bf1c,_0xafd586[_0x5dcb('0x4c')]);var _0x434e20={'where':_0x46bf1c[_0x5dcb('0x46')]};return db['VoiceQueueReport'][_0x5dcb('0x26')](_0x434e20)['then'](function(_0x8c2138){_0x799a0c[_0x5dcb('0x26')]=_0x8c2138;if(_0xafd586[_0x5dcb('0x3d')][_0x5dcb('0x4d')]){_0x46bf1c[_0x5dcb('0x52')]=[{'all':!![]}];}return db[_0x5dcb('0x38')][_0x5dcb('0x58')](_0x46bf1c);})[_0x5dcb('0x2f')](function(_0x4e396d){_0x799a0c[_0x5dcb('0x4e')]=_0x4e396d;return _0x799a0c;})[_0x5dcb('0x2f')](respondWithFilteredResult(_0x12d54e,_0x46bf1c,'getVoiceQueuesReport'))[_0x5dcb('0x4f')](handleError(_0x12d54e,null,'getVoiceQueuesReport'));};
\ No newline at end of file
index 1e6d692..b16f4d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3202=['events','../../mysqldb','VoiceQueueReport','setMaxListeners','save','update','remove','emit'];(function(_0x36feb2,_0x53abef){var _0x292b43=function(_0x52a460){while(--_0x52a460){_0x36feb2['push'](_0x36feb2['shift']());}};_0x292b43(++_0x53abef);}(_0x3202,0x1b8));var _0x2320=function(_0x3becdf,_0x7482c7){_0x3becdf=_0x3becdf-0x0;var _0x2a52df=_0x3202[_0x3becdf];return _0x2a52df;};'use strict';var EventEmitter=require(_0x2320('0x0'));var VoiceQueueReport=require(_0x2320('0x1'))['db'][_0x2320('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2320('0x3')](0x0);var events={'afterCreate':_0x2320('0x4'),'afterUpdate':_0x2320('0x5'),'afterDestroy':_0x2320('0x6')};function emitEvent(_0x2f6fc6){return function(_0x2e7d79,_0x25836e,_0x183228){VoiceQueueReportEvents['emit'](_0x2f6fc6+':'+_0x2e7d79['id'],_0x2e7d79);VoiceQueueReportEvents[_0x2320('0x7')](_0x2f6fc6,_0x2e7d79);_0x183228(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
+var _0xaf22=['setMaxListeners','save','update','remove','emit','exports','events','../../mysqldb','VoiceQueueReport'];(function(_0x30b9f1,_0x39542c){var _0x537f5e=function(_0x1da733){while(--_0x1da733){_0x30b9f1['push'](_0x30b9f1['shift']());}};_0x537f5e(++_0x39542c);}(_0xaf22,0x19b));var _0x2af2=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xaf22[_0x1facfa];return _0x9ec701;};'use strict';var EventEmitter=require(_0x2af2('0x0'));var VoiceQueueReport=require(_0x2af2('0x1'))['db'][_0x2af2('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x2af2('0x3')](0x0);var events={'afterCreate':_0x2af2('0x4'),'afterUpdate':_0x2af2('0x5'),'afterDestroy':_0x2af2('0x6')};function emitEvent(_0x503e9a){return function(_0x2fb879,_0x346274,_0x27c382){VoiceQueueReportEvents[_0x2af2('0x7')](_0x503e9a+':'+_0x2fb879['id'],_0x2fb879);VoiceQueueReportEvents['emit'](_0x503e9a,_0x2fb879);_0x27c382(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module[_0x2af2('0x8')]=VoiceQueueReportEvents;
\ No newline at end of file
index d42e32f..41b861a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c43=['report_queue','lodash','util','api','moment','bluebird','request-promise','path','./voiceQueueReport.attributes','exports','define','VoiceQueueReport'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x0c43,0x199));var _0x30c4=function(_0x155c97,_0x112419){_0x155c97=_0x155c97-0x0;var _0x4fca83=_0x0c43[_0x155c97];return _0x4fca83;};'use strict';var _=require(_0x30c4('0x0'));var util=require(_0x30c4('0x1'));var logger=require('../../config/logger')(_0x30c4('0x2'));var moment=require(_0x30c4('0x3'));var BPromise=require(_0x30c4('0x4'));var rp=require(_0x30c4('0x5'));var fs=require('fs');var path=require(_0x30c4('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x30c4('0x7'));module[_0x30c4('0x8')]=function(_0x24cb32,_0x2d8e37){return _0x24cb32[_0x30c4('0x9')](_0x30c4('0xa'),attributes,{'tableName':_0x30c4('0xb'),'paranoid':![],'indexes':[{'fields':['uniqueid']},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x2882=['util','request-promise','path','rimraf','../../config/environment','./voiceQueueReport.attributes','define','VoiceQueueReport','report_queue','uniqueid','lodash'];(function(_0x4bd67a,_0x4f9725){var _0x2be5fb=function(_0x33e132){while(--_0x33e132){_0x4bd67a['push'](_0x4bd67a['shift']());}};_0x2be5fb(++_0x4f9725);}(_0x2882,0x180));var _0x2288=function(_0x1f76b2,_0x1f78f1){_0x1f76b2=_0x1f76b2-0x0;var _0x2a8fb5=_0x2882[_0x1f76b2];return _0x2a8fb5;};'use strict';var _=require(_0x2288('0x0'));var util=require(_0x2288('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x2288('0x2'));var fs=require('fs');var path=require(_0x2288('0x3'));var rimraf=require(_0x2288('0x4'));var config=require(_0x2288('0x5'));var attributes=require(_0x2288('0x6'));module['exports']=function(_0x3c4d6b,_0x43c7ae){return _0x3c4d6b[_0x2288('0x7')](_0x2288('0x8'),attributes,{'tableName':_0x2288('0x9'),'paranoid':![],'indexes':[{'fields':[_0x2288('0xa')]},{'fields':['calleridnum']}],'timestamps':!![]});};
\ No newline at end of file
index 07f33b5..55908ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8260=['body','UpdateVoiceQueueReport','update','limit','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','defaults','localhost','./voiceQueueReport.socket','register','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetVoiceQueueReport','findAll','options','raw','where','map','include','model','attributes','CreateVoiceQueueReport','VoiceQueueReport','create'];(function(_0x1e6000,_0x48db6f){var _0x1ecef3=function(_0x5e7450){while(--_0x5e7450){_0x1e6000['push'](_0x1e6000['shift']());}};_0x1ecef3(++_0x48db6f);}(_0x8260,0x190));var _0x0826=function(_0x187e24,_0x393e15){_0x187e24=_0x187e24-0x0;var _0x39b658=_0x8260[_0x187e24];return _0x39b658;};'use strict';var _=require(_0x0826('0x0'));var util=require('util');var moment=require(_0x0826('0x1'));var BPromise=require('bluebird');var rs=require(_0x0826('0x2'));var fs=require('fs');var Redis=require(_0x0826('0x3'));var db=require(_0x0826('0x4'))['db'];var utils=require(_0x0826('0x5'));var logger=require(_0x0826('0x6'))('rpc');var config=require(_0x0826('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0826('0x8')][_0x0826('0x9')]({'port':0x232a});config[_0x0826('0xa')]=_[_0x0826('0xb')](config[_0x0826('0xa')],{'host':_0x0826('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0826('0xd'))[_0x0826('0xe')](socket);function respondWithRpcPromise(_0x136d2e,_0x1c7853,_0x29871f){return new BPromise(function(_0x5dd0dd,_0x3d0c0e){return client[_0x0826('0xf')](_0x136d2e,_0x29871f)[_0x0826('0x10')](function(_0x56e06b){logger['info'](_0x0826('0x11'),_0x1c7853,_0x0826('0x12'));logger[_0x0826('0x13')](_0x0826('0x14'),_0x1c7853,_0x0826('0x12'),JSON[_0x0826('0x15')](_0x56e06b));if(_0x56e06b['error']){if(_0x56e06b[_0x0826('0x16')][_0x0826('0x17')]===0x1f4){logger[_0x0826('0x16')](_0x0826('0x11'),_0x1c7853,_0x56e06b[_0x0826('0x16')]['message']);return _0x3d0c0e(_0x56e06b[_0x0826('0x16')][_0x0826('0x18')]);}logger[_0x0826('0x16')](_0x0826('0x11'),_0x1c7853,_0x56e06b[_0x0826('0x16')][_0x0826('0x18')]);return _0x5dd0dd(_0x56e06b['error'][_0x0826('0x18')]);}else{logger[_0x0826('0x19')](_0x0826('0x11'),_0x1c7853,_0x0826('0x12'));_0x5dd0dd(_0x56e06b[_0x0826('0x1a')][_0x0826('0x18')]);}})[_0x0826('0x1b')](function(_0x4c1bd3){logger['error'](_0x0826('0x11'),_0x1c7853,_0x4c1bd3);_0x3d0c0e(_0x4c1bd3);});});}exports[_0x0826('0x1c')]=function(_0x41b611){var _0x414b91=this;return new Promise(function(_0x15226f,_0x2c5711){return db['VoiceQueueReport'][_0x0826('0x1d')]({'raw':_0x41b611[_0x0826('0x1e')]?_0x41b611[_0x0826('0x1e')][_0x0826('0x1f')]===undefined?!![]:![]:!![],'where':_0x41b611[_0x0826('0x1e')]?_0x41b611[_0x0826('0x1e')][_0x0826('0x20')]||null:null,'attributes':_0x41b611['options']?_0x41b611['options']['attributes']||null:null,'limit':_0x41b611[_0x0826('0x1e')]?_0x41b611[_0x0826('0x1e')]['limit']||null:null,'include':_0x41b611[_0x0826('0x1e')]?_0x41b611[_0x0826('0x1e')]['include']?_[_0x0826('0x21')](_0x41b611[_0x0826('0x1e')][_0x0826('0x22')],function(_0x57c94f){return{'model':db[_0x57c94f[_0x0826('0x23')]],'as':_0x57c94f['as'],'attributes':_0x57c94f['attributes'],'include':_0x57c94f[_0x0826('0x22')]?_[_0x0826('0x21')](_0x57c94f[_0x0826('0x22')],function(_0x55fee8){return{'model':db[_0x55fee8[_0x0826('0x23')]],'as':_0x55fee8['as'],'attributes':_0x55fee8['attributes'],'include':_0x55fee8[_0x0826('0x22')]?_['map'](_0x55fee8['include'],function(_0x5cba10){return{'model':db[_0x5cba10[_0x0826('0x23')]],'as':_0x5cba10['as'],'attributes':_0x5cba10[_0x0826('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x41c246){logger[_0x0826('0x19')](_0x0826('0x1c'),_0x41b611);logger[_0x0826('0x13')]('GetVoiceQueueReport',_0x41b611,JSON[_0x0826('0x15')](_0x41c246));_0x15226f(_0x41c246);})[_0x0826('0x1b')](function(_0x371493){logger[_0x0826('0x16')]('GetVoiceQueueReport',_0x371493[_0x0826('0x18')],_0x41b611);_0x2c5711(_0x414b91[_0x0826('0x16')](0x1f4,_0x371493['message']));});});};exports[_0x0826('0x25')]=function(_0xabb195){var _0x2e8970=this;return new Promise(function(_0x496243,_0x306803){return db[_0x0826('0x26')][_0x0826('0x27')](_0xabb195[_0x0826('0x28')],{'raw':_0xabb195['options']?_0xabb195['options'][_0x0826('0x1f')]===undefined?!![]:![]:!![]})[_0x0826('0x10')](function(_0x19dc22){logger['info'](_0x0826('0x25'),_0xabb195);logger[_0x0826('0x13')](_0x0826('0x25'),_0xabb195,JSON[_0x0826('0x15')](_0x19dc22));_0x496243(_0x19dc22);})['catch'](function(_0x4df03e){logger[_0x0826('0x16')](_0x0826('0x25'),_0x4df03e[_0x0826('0x18')],_0xabb195);_0x306803(_0x2e8970[_0x0826('0x16')](0x1f4,_0x4df03e[_0x0826('0x18')]));});});};exports[_0x0826('0x29')]=function(_0x228f55){var _0xeed620=this;return new Promise(function(_0x6caf67,_0x32c184){return db[_0x0826('0x26')][_0x0826('0x2a')](_0x228f55['body'],{'raw':_0x228f55[_0x0826('0x1e')]?_0x228f55[_0x0826('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x228f55['options']?_0x228f55[_0x0826('0x1e')][_0x0826('0x20')]||null:null,'attributes':_0x228f55[_0x0826('0x1e')]?_0x228f55[_0x0826('0x1e')]['attributes']||null:null,'limit':_0x228f55['options']?_0x228f55[_0x0826('0x1e')][_0x0826('0x2b')]||null:null})[_0x0826('0x10')](function(_0x78e3a7){logger[_0x0826('0x19')](_0x0826('0x29'),_0x228f55);logger[_0x0826('0x13')]('UpdateVoiceQueueReport',_0x228f55,JSON[_0x0826('0x15')](_0x78e3a7));_0x6caf67(_0x78e3a7);})['catch'](function(_0x46e622){logger[_0x0826('0x16')]('UpdateVoiceQueueReport',_0x46e622[_0x0826('0x18')],_0x228f55);_0x32c184(_0xeed620[_0x0826('0x16')](0x1f4,_0x46e622['message']));});});};
\ No newline at end of file
+var _0xa557=['UpdateVoiceQueueReport','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','info','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','code','VoiceQueueReport,\x20%s,\x20%s','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','findAll','options','raw','where','attributes','limit','map','include','model','stringify','create','body','then','CreateVoiceQueueReport'];(function(_0x5b67ce,_0x43622c){var _0x25c0b3=function(_0x4d3070){while(--_0x4d3070){_0x5b67ce['push'](_0x5b67ce['shift']());}};_0x25c0b3(++_0x43622c);}(_0xa557,0x1af));var _0x7a55=function(_0x1f52d7,_0x1759d7){_0x1f52d7=_0x1f52d7-0x0;var _0x5013f8=_0xa557[_0x1f52d7];return _0x5013f8;};'use strict';var _=require(_0x7a55('0x0'));var util=require(_0x7a55('0x1'));var moment=require(_0x7a55('0x2'));var BPromise=require('bluebird');var rs=require(_0x7a55('0x3'));var fs=require('fs');var Redis=require(_0x7a55('0x4'));var db=require(_0x7a55('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7a55('0x6'))(_0x7a55('0x7'));var config=require('../../config/environment');var jayson=require(_0x7a55('0x8'));var client=jayson[_0x7a55('0x9')]['http']({'port':0x232a});config[_0x7a55('0xa')]=_[_0x7a55('0xb')](config[_0x7a55('0xa')],{'host':_0x7a55('0xc'),'port':0x18eb});var socket=require(_0x7a55('0xd'))(new Redis(config[_0x7a55('0xa')]));require(_0x7a55('0xe'))[_0x7a55('0xf')](socket);function respondWithRpcPromise(_0x2451b1,_0x1fe16d,_0x25a1ba){return new BPromise(function(_0x3fa64b,_0x5c93be){return client['request'](_0x2451b1,_0x25a1ba)['then'](function(_0x3eaf3b){logger[_0x7a55('0x10')]('VoiceQueueReport,\x20%s,\x20%s',_0x1fe16d,_0x7a55('0x11'));logger[_0x7a55('0x12')](_0x7a55('0x13'),_0x1fe16d,'request\x20sent',JSON['stringify'](_0x3eaf3b));if(_0x3eaf3b[_0x7a55('0x14')]){if(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x15')]===0x1f4){logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0x3eaf3b[_0x7a55('0x14')]['message']);return _0x5c93be(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);}logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);return _0x3fa64b(_0x3eaf3b[_0x7a55('0x14')][_0x7a55('0x17')]);}else{logger[_0x7a55('0x10')](_0x7a55('0x16'),_0x1fe16d,_0x7a55('0x11'));_0x3fa64b(_0x3eaf3b[_0x7a55('0x18')][_0x7a55('0x17')]);}})[_0x7a55('0x19')](function(_0xf04089){logger[_0x7a55('0x14')](_0x7a55('0x16'),_0x1fe16d,_0xf04089);_0x5c93be(_0xf04089);});});}exports[_0x7a55('0x1a')]=function(_0x25e303){var _0x17ea0e=this;return new Promise(function(_0x57ba4f,_0x585641){return db[_0x7a55('0x1b')][_0x7a55('0x1c')]({'raw':_0x25e303['options']?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x1e')]===undefined?!![]:![]:!![],'where':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x1f')]||null:null,'attributes':_0x25e303[_0x7a55('0x1d')]?_0x25e303['options'][_0x7a55('0x20')]||null:null,'limit':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')][_0x7a55('0x21')]||null:null,'include':_0x25e303[_0x7a55('0x1d')]?_0x25e303[_0x7a55('0x1d')]['include']?_[_0x7a55('0x22')](_0x25e303[_0x7a55('0x1d')][_0x7a55('0x23')],function(_0x19c543){return{'model':db[_0x19c543[_0x7a55('0x24')]],'as':_0x19c543['as'],'attributes':_0x19c543['attributes'],'include':_0x19c543[_0x7a55('0x23')]?_['map'](_0x19c543[_0x7a55('0x23')],function(_0x21da61){return{'model':db[_0x21da61[_0x7a55('0x24')]],'as':_0x21da61['as'],'attributes':_0x21da61[_0x7a55('0x20')],'include':_0x21da61[_0x7a55('0x23')]?_[_0x7a55('0x22')](_0x21da61[_0x7a55('0x23')],function(_0x5cad1d){return{'model':db[_0x5cad1d['model']],'as':_0x5cad1d['as'],'attributes':_0x5cad1d[_0x7a55('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x3b44c8){logger['info'](_0x7a55('0x1a'),_0x25e303);logger[_0x7a55('0x12')](_0x7a55('0x1a'),_0x25e303,JSON[_0x7a55('0x25')](_0x3b44c8));_0x57ba4f(_0x3b44c8);})['catch'](function(_0xf2008e){logger['error']('GetVoiceQueueReport',_0xf2008e[_0x7a55('0x17')],_0x25e303);_0x585641(_0x17ea0e[_0x7a55('0x14')](0x1f4,_0xf2008e['message']));});});};exports['CreateVoiceQueueReport']=function(_0x1831a3){var _0x37f8c6=this;return new Promise(function(_0x19525a,_0x2dd4aa){return db['VoiceQueueReport'][_0x7a55('0x26')](_0x1831a3[_0x7a55('0x27')],{'raw':_0x1831a3[_0x7a55('0x1d')]?_0x1831a3['options'][_0x7a55('0x1e')]===undefined?!![]:![]:!![]})[_0x7a55('0x28')](function(_0x517b61){logger[_0x7a55('0x10')](_0x7a55('0x29'),_0x1831a3);logger['debug'](_0x7a55('0x29'),_0x1831a3,JSON[_0x7a55('0x25')](_0x517b61));_0x19525a(_0x517b61);})[_0x7a55('0x19')](function(_0x180e86){logger[_0x7a55('0x14')](_0x7a55('0x29'),_0x180e86[_0x7a55('0x17')],_0x1831a3);_0x2dd4aa(_0x37f8c6[_0x7a55('0x14')](0x1f4,_0x180e86['message']));});});};exports[_0x7a55('0x2a')]=function(_0x5bd8a2){var _0x2db140=this;return new Promise(function(_0x261b65,_0x237d9c){return db[_0x7a55('0x1b')]['update'](_0x5bd8a2[_0x7a55('0x27')],{'raw':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5bd8a2['options']?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x1f')]||null:null,'attributes':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x20')]||null:null,'limit':_0x5bd8a2[_0x7a55('0x1d')]?_0x5bd8a2[_0x7a55('0x1d')][_0x7a55('0x21')]||null:null})[_0x7a55('0x28')](function(_0x11f2be){logger[_0x7a55('0x10')]('UpdateVoiceQueueReport',_0x5bd8a2);logger[_0x7a55('0x12')](_0x7a55('0x2a'),_0x5bd8a2,JSON[_0x7a55('0x25')](_0x11f2be));_0x261b65(_0x11f2be);})[_0x7a55('0x19')](function(_0x3fd54d){logger[_0x7a55('0x14')](_0x7a55('0x2a'),_0x3fd54d[_0x7a55('0x17')],_0x5bd8a2);_0x237d9c(_0x2db140['error'](0x1f4,_0x3fd54d[_0x7a55('0x17')]));});});};
\ No newline at end of file
index 993acd1..702320f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9576=['save','remove','update','emit','removeListener','register','length','voiceQueueReport:','./voiceQueueReport.events'];(function(_0x29006c,_0x31016b){var _0x151ad9=function(_0x32d4e7){while(--_0x32d4e7){_0x29006c['push'](_0x29006c['shift']());}};_0x151ad9(++_0x31016b);}(_0x9576,0x182));var _0x6957=function(_0x35bd53,_0xe6db40){_0x35bd53=_0x35bd53-0x0;var _0x204057=_0x9576[_0x35bd53];return _0x204057;};'use strict';var VoiceQueueReportEvents=require(_0x6957('0x0'));var events=[_0x6957('0x1'),_0x6957('0x2'),_0x6957('0x3')];function createListener(_0x47fd53,_0x4ee0d8){return function(_0xf9d8fc){_0x4ee0d8[_0x6957('0x4')](_0x47fd53,_0xf9d8fc);};}function removeListener(_0x9e834,_0x10ed80){return function(){VoiceQueueReportEvents[_0x6957('0x5')](_0x9e834,_0x10ed80);};}exports[_0x6957('0x6')]=function(_0x2eb79e){for(var _0x49e08a=0x0,_0x6d8af8=events[_0x6957('0x7')];_0x49e08a<_0x6d8af8;_0x49e08a++){var _0x70b8c4=events[_0x49e08a];var _0x2e5727=createListener(_0x6957('0x8')+_0x70b8c4,_0x2eb79e);VoiceQueueReportEvents['on'](_0x70b8c4,_0x2e5727);}};
\ No newline at end of file
+var _0x2a76=['remove','update','emit','removeListener','length','voiceQueueReport:','./voiceQueueReport.events','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2a76,0xde));var _0x62a7=function(_0xc2e46e,_0x3b979c){_0xc2e46e=_0xc2e46e-0x0;var _0x1a355d=_0x2a76[_0xc2e46e];return _0x1a355d;};'use strict';var VoiceQueueReportEvents=require(_0x62a7('0x0'));var events=[_0x62a7('0x1'),_0x62a7('0x2'),_0x62a7('0x3')];function createListener(_0x42601f,_0x1cbd7c){return function(_0x108f6f){_0x1cbd7c[_0x62a7('0x4')](_0x42601f,_0x108f6f);};}function removeListener(_0x44abef,_0x28e476){return function(){VoiceQueueReportEvents[_0x62a7('0x5')](_0x44abef,_0x28e476);};}exports['register']=function(_0x3aa52a){for(var _0x5a2c8f=0x0,_0x10a163=events[_0x62a7('0x6')];_0x5a2c8f<_0x10a163;_0x5a2c8f++){var _0x520e2a=events[_0x5a2c8f];var _0x5af567=createListener(_0x62a7('0x7')+_0x520e2a,_0x3aa52a);VoiceQueueReportEvents['on'](_0x520e2a,_0x5af567);}};
\ No newline at end of file
index 1e366fd..73ed863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x01e7=['multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','post','put','delete','destroy'];(function(_0x5381e9,_0x47f0b0){var _0x4403c6=function(_0x4a7dc8){while(--_0x4a7dc8){_0x5381e9['push'](_0x5381e9['shift']());}};_0x4403c6(++_0x47f0b0);}(_0x01e7,0x134));var _0x701e=function(_0x3d1f0a,_0x228622){_0x3d1f0a=_0x3d1f0a-0x0;var _0x50d587=_0x01e7[_0x3d1f0a];return _0x50d587;};'use strict';var multer=require(_0x701e('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x701e('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x701e('0x2'));var auth=require(_0x701e('0x3'));var interaction=require(_0x701e('0x4'));var config=require('../../config/environment');var controller=require(_0x701e('0x5'));router[_0x701e('0x6')]('/',auth[_0x701e('0x7')](),controller[_0x701e('0x8')]);router['get'](_0x701e('0x9'),auth[_0x701e('0x7')](),controller['show']);router[_0x701e('0xa')]('/',auth['isAuthenticated'](),controller['create']);router[_0x701e('0xb')]('/:id',auth[_0x701e('0x7')](),controller['update']);router[_0x701e('0xc')](_0x701e('0x9'),auth['isAuthenticated'](),controller[_0x701e('0xd')]);module['exports']=router;
\ No newline at end of file
+var _0xb5fe=['isAuthenticated','/:id','post','put','update','destroy','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xb5fe,0x192));var _0xeb5f=function(_0x420809,_0x3da7e9){_0x420809=_0x420809-0x0;var _0x8bad16=_0xb5fe[_0x420809];return _0x8bad16;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xeb5f('0x0'));var express=require('express');var router=express[_0xeb5f('0x1')]();var fs_extra=require(_0xeb5f('0x2'));var auth=require(_0xeb5f('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0xeb5f('0x4'));var controller=require('./voiceQueuesLog.controller');router[_0xeb5f('0x5')]('/',auth[_0xeb5f('0x6')](),controller['index']);router[_0xeb5f('0x5')](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller['show']);router[_0xeb5f('0x8')]('/',auth[_0xeb5f('0x6')](),controller['create']);router[_0xeb5f('0x9')](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller[_0xeb5f('0xa')]);router['delete'](_0xeb5f('0x7'),auth[_0xeb5f('0x6')](),controller[_0xeb5f('0xb')]);module['exports']=router;
\ No newline at end of file
index cc7d9d4..849891a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa56=['CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','STRING','literal'];(function(_0x586986,_0xa68308){var _0x43e149=function(_0x53507a){while(--_0x53507a){_0x586986['push'](_0x586986['shift']());}};_0x43e149(++_0xa68308);}(_0xaa56,0x135));var _0x6aa5=function(_0x515830,_0x41fc93){_0x515830=_0x515830-0x0;var _0x54381c=_0xaa56[_0x515830];return _0x54381c;};'use strict';var Sequelize=require(_0x6aa5('0x0'));var moment=require('moment');module['exports']={'time':{'type':Sequelize[_0x6aa5('0x1')]},'callid':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x6aa5('0x1')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x6aa5('0x2')](_0x6aa5('0x3'))}};
\ No newline at end of file
+var _0x2c06=['moment','exports','STRING','DATE','literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize'];(function(_0x3469a7,_0x2ce225){var _0x394098=function(_0x42d03f){while(--_0x42d03f){_0x3469a7['push'](_0x3469a7['shift']());}};_0x394098(++_0x2ce225);}(_0x2c06,0x1b1));var _0x62c0=function(_0x14f502,_0xf32dc1){_0x14f502=_0x14f502-0x0;var _0x263674=_0x2c06[_0x14f502];return _0x263674;};'use strict';var Sequelize=require(_0x62c0('0x0'));var moment=require(_0x62c0('0x1'));module[_0x62c0('0x2')]={'time':{'type':Sequelize['STRING']},'callid':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x62c0('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x62c0('0x4')],'allowNull':![],'defaultValue':Sequelize[_0x62c0('0x5')](_0x62c0('0x6'))}};
\ No newline at end of file
index 1471f72..759edf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9de3=['set','Content-Range','apply','reject','then','destroy','sendStatus','error','stack','index','rawAttributes','fieldName','type','model','map','name','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','VoiceQueuesLog','includeAll','include','rows','catch','keys','find','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','undefined','limit','count','offset'];(function(_0x358be7,_0x37bdc0){var _0x5e0ecb=function(_0x278825){while(--_0x278825){_0x358be7['push'](_0x358be7['shift']());}};_0x5e0ecb(++_0x37bdc0);}(_0x9de3,0x72));var _0x39de=function(_0x33df82,_0x314322){_0x33df82=_0x33df82-0x0;var _0x2b9c5f=_0x9de3[_0x33df82];return _0x2b9c5f;};'use strict';var emlformat=require(_0x39de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x39de('0x1'));var jsonpatch=require(_0x39de('0x2'));var rp=require(_0x39de('0x3'));var moment=require(_0x39de('0x4'));var BPromise=require(_0x39de('0x5'));var Mustache=require(_0x39de('0x6'));var util=require(_0x39de('0x7'));var path=require(_0x39de('0x8'));var sox=require(_0x39de('0x9'));var csv=require('to-csv');var ejs=require(_0x39de('0xa'));var fs=require('fs');var fs_extra=require(_0x39de('0xb'));var _=require(_0x39de('0xc'));var squel=require(_0x39de('0xd'));var crypto=require(_0x39de('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x39de('0xf'));var querystring=require(_0x39de('0x10'));var Papa=require(_0x39de('0x11'));var Redis=require('ioredis');var authService=require(_0x39de('0x12'));var qs=require(_0x39de('0x13'));var as=require(_0x39de('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x39de('0x15'))(_0x39de('0x16'));var utils=require(_0x39de('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x39de('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4b37aa,_0x1e207f){_0x1e207f=_0x1e207f||0xcc;return function(_0x56aaec){if(_0x56aaec){return _0x4b37aa['sendStatus'](_0x1e207f);}return _0x4b37aa[_0x39de('0x19')](_0x1e207f)[_0x39de('0x1a')]();};}function respondWithResult(_0x1e3ee3,_0x74ab1b){_0x74ab1b=_0x74ab1b||0xc8;return function(_0x3a59ec){if(_0x3a59ec){return _0x1e3ee3[_0x39de('0x19')](_0x74ab1b)[_0x39de('0x1b')](_0x3a59ec);}};}function respondWithFilteredResult(_0x30d19e,_0x468c53){return function(_0x32cd16){if(_0x32cd16){var _0x18c3d7=typeof _0x468c53['offset']===_0x39de('0x1c')&&typeof _0x468c53[_0x39de('0x1d')]===_0x39de('0x1c');var _0xeae810=_0x32cd16[_0x39de('0x1e')];var _0x22a1ef=_0x18c3d7?0x0:_0x468c53[_0x39de('0x1f')];var _0xbafa8d=_0x18c3d7?_0x32cd16[_0x39de('0x1e')]:_0x468c53[_0x39de('0x1f')]+_0x468c53['limit'];var _0x5335e2;if(_0xbafa8d>=_0xeae810){_0xbafa8d=_0xeae810;_0x5335e2=0xc8;}else{_0x5335e2=0xce;}_0x30d19e[_0x39de('0x19')](_0x5335e2);return _0x30d19e[_0x39de('0x20')](_0x39de('0x21'),_0x22a1ef+'-'+_0xbafa8d+'/'+_0xeae810)[_0x39de('0x1b')](_0x32cd16);}return null;};}function patchUpdates(_0x224454){return function(_0x3f1167){try{jsonpatch[_0x39de('0x22')](_0x3f1167,_0x224454,!![]);}catch(_0x2024f6){return BPromise[_0x39de('0x23')](_0x2024f6);}return _0x3f1167['save']();};}function saveUpdates(_0x45e76c,_0x19a0b8){return function(_0xe70540){if(_0xe70540){return _0xe70540['update'](_0x45e76c)[_0x39de('0x24')](function(_0x229db4){return _0x229db4;});}return null;};}function removeEntity(_0x20cfc9,_0x29fa88){return function(_0x4715d9){if(_0x4715d9){return _0x4715d9[_0x39de('0x25')]()[_0x39de('0x24')](function(){_0x20cfc9[_0x39de('0x19')](0xcc)[_0x39de('0x1a')]();});}};}function handleEntityNotFound(_0x2c923d,_0x7e9b5){return function(_0x55bcb8){if(!_0x55bcb8){_0x2c923d[_0x39de('0x26')](0x194);}return _0x55bcb8;};}function handleError(_0x422dc9,_0x15443d){_0x15443d=_0x15443d||0x1f4;return function(_0xcf6bbc){logger[_0x39de('0x27')](_0xcf6bbc[_0x39de('0x28')]);if(_0xcf6bbc['name']){delete _0xcf6bbc['name'];}_0x422dc9[_0x39de('0x19')](_0x15443d)['send'](_0xcf6bbc);};}exports[_0x39de('0x29')]=function(_0x15a031,_0x5f541b){var _0x534a4e={},_0x4c8fe4={},_0x47c498={'count':0x0,'rows':[]};var _0x21a368=_['map'](db['VoiceQueuesLog'][_0x39de('0x2a')],function(_0x4b314d){return{'name':_0x4b314d[_0x39de('0x2b')],'type':_0x4b314d[_0x39de('0x2c')]['key']};});_0x4c8fe4[_0x39de('0x2d')]=_[_0x39de('0x2e')](_0x21a368,_0x39de('0x2f'));_0x4c8fe4[_0x39de('0x30')]=_['keys'](_0x15a031[_0x39de('0x30')]);_0x4c8fe4['filters']=_['intersection'](_0x4c8fe4['model'],_0x4c8fe4['query']);_0x534a4e['attributes']=_[_0x39de('0x31')](_0x4c8fe4[_0x39de('0x2d')],qs[_0x39de('0x32')](_0x15a031['query']['fields']));_0x534a4e['attributes']=_0x534a4e[_0x39de('0x33')][_0x39de('0x34')]?_0x534a4e['attributes']:_0x4c8fe4[_0x39de('0x2d')];if(!_0x15a031[_0x39de('0x30')]['hasOwnProperty'](_0x39de('0x35'))){_0x534a4e['limit']=qs[_0x39de('0x1d')](_0x15a031['query'][_0x39de('0x1d')]);_0x534a4e[_0x39de('0x1f')]=qs['offset'](_0x15a031['query'][_0x39de('0x1f')]);}_0x534a4e[_0x39de('0x36')]=qs[_0x39de('0x37')](_0x15a031[_0x39de('0x30')][_0x39de('0x37')]);_0x534a4e[_0x39de('0x38')]=qs[_0x39de('0x39')](_[_0x39de('0x3a')](_0x15a031[_0x39de('0x30')],_0x4c8fe4[_0x39de('0x39')]),_0x21a368);if(_0x15a031[_0x39de('0x30')][_0x39de('0x3b')]){_0x534a4e[_0x39de('0x38')]=_[_0x39de('0x3c')](_0x534a4e[_0x39de('0x38')],{'$or':_[_0x39de('0x2e')](_0x21a368,function(_0x39fc33){if(_0x39fc33[_0x39de('0x2c')]!==_0x39de('0x3d')){var _0x13f15d={};_0x13f15d[_0x39fc33[_0x39de('0x2f')]]={'$like':'%'+_0x15a031['query'][_0x39de('0x3b')]+'%'};return _0x13f15d;}})});}_0x534a4e=_[_0x39de('0x3c')]({},_0x534a4e,_0x15a031[_0x39de('0x3e')]);var _0x40718c={'where':_0x534a4e['where']};return db[_0x39de('0x3f')]['count'](_0x40718c)[_0x39de('0x24')](function(_0x268c01){_0x47c498['count']=_0x268c01;if(_0x15a031[_0x39de('0x30')][_0x39de('0x40')]){_0x534a4e[_0x39de('0x41')]=[{'all':!![]}];}return db[_0x39de('0x3f')]['findAll'](_0x534a4e);})[_0x39de('0x24')](function(_0x99c933){_0x47c498[_0x39de('0x42')]=_0x99c933;return _0x47c498;})[_0x39de('0x24')](respondWithFilteredResult(_0x5f541b,_0x534a4e))[_0x39de('0x43')](handleError(_0x5f541b,null));};exports['show']=function(_0x462d57,_0x4df5c4){var _0x39feb6={'raw':!![],'where':{'id':_0x462d57['params']['id']}},_0x42cc85={};_0x42cc85[_0x39de('0x2d')]=_[_0x39de('0x44')](db[_0x39de('0x3f')]['rawAttributes']);_0x42cc85[_0x39de('0x30')]=_[_0x39de('0x44')](_0x462d57['query']);_0x42cc85[_0x39de('0x39')]=_[_0x39de('0x31')](_0x42cc85['model'],_0x42cc85[_0x39de('0x30')]);_0x39feb6[_0x39de('0x33')]=_[_0x39de('0x31')](_0x42cc85[_0x39de('0x2d')],qs[_0x39de('0x32')](_0x462d57[_0x39de('0x30')]['fields']));_0x39feb6['attributes']=_0x39feb6['attributes']['length']?_0x39feb6[_0x39de('0x33')]:_0x42cc85['model'];if(_0x462d57[_0x39de('0x30')][_0x39de('0x40')]){_0x39feb6[_0x39de('0x41')]=[{'all':!![]}];}_0x39feb6=_['merge']({},_0x39feb6,_0x462d57[_0x39de('0x3e')]);return db[_0x39de('0x3f')][_0x39de('0x45')](_0x39feb6)[_0x39de('0x24')](handleEntityNotFound(_0x4df5c4,null))[_0x39de('0x24')](respondWithResult(_0x4df5c4,null))['catch'](handleError(_0x4df5c4,null));};exports[_0x39de('0x46')]=function(_0x5e1801,_0x460d16){return db['VoiceQueuesLog'][_0x39de('0x46')](_0x5e1801['body'],{})[_0x39de('0x24')](respondWithResult(_0x460d16,0xc9))[_0x39de('0x43')](handleError(_0x460d16,null));};exports['update']=function(_0x2a26a6,_0x17ff45){if(_0x2a26a6[_0x39de('0x47')]['id']){delete _0x2a26a6[_0x39de('0x47')]['id'];}return db[_0x39de('0x3f')]['find']({'where':{'id':_0x2a26a6[_0x39de('0x48')]['id']}})[_0x39de('0x24')](handleEntityNotFound(_0x17ff45,null))[_0x39de('0x24')](saveUpdates(_0x2a26a6['body'],null))[_0x39de('0x24')](respondWithResult(_0x17ff45,null))['catch'](handleError(_0x17ff45,null));};exports[_0x39de('0x25')]=function(_0x1f4344,_0x54c6f1){return db['VoiceQueuesLog'][_0x39de('0x45')]({'where':{'id':_0x1f4344[_0x39de('0x48')]['id']}})[_0x39de('0x24')](handleEntityNotFound(_0x54c6f1,null))[_0x39de('0x24')](removeEntity(_0x54c6f1,null))[_0x39de('0x43')](handleError(_0x54c6f1,null));};
\ No newline at end of file
+var _0x40ad=['../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','count','limit','status','set','Content-Range','json','apply','reject','update','then','error','stack','name','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','query','keys','intersection','model','attributes','fields','length','nolimit','order','sort','filters','pick','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','catch','show','include','find','create','body','params','destroy','eml-format','rimraf','zip-dir','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','ioredis','../../components/parsers/qs'];(function(_0x28f74d,_0x37a93f){var _0x5abe79=function(_0x2b325c){while(--_0x2b325c){_0x28f74d['push'](_0x28f74d['shift']());}};_0x5abe79(++_0x37a93f);}(_0x40ad,0x11b));var _0xd40a=function(_0x1bb889,_0x49c4b5){_0x1bb889=_0x1bb889-0x0;var _0xd8b76d=_0x40ad[_0x1bb889];return _0xd8b76d;};'use strict';var emlformat=require(_0xd40a('0x0'));var rimraf=require(_0xd40a('0x1'));var zipdir=require(_0xd40a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd40a('0x3'));var BPromise=require(_0xd40a('0x4'));var Mustache=require('mustache');var util=require(_0xd40a('0x5'));var path=require(_0xd40a('0x6'));var sox=require(_0xd40a('0x7'));var csv=require(_0xd40a('0x8'));var ejs=require(_0xd40a('0x9'));var fs=require('fs');var fs_extra=require(_0xd40a('0xa'));var _=require('lodash');var squel=require(_0xd40a('0xb'));var crypto=require(_0xd40a('0xc'));var jsforce=require(_0xd40a('0xd'));var deskjs=require(_0xd40a('0xe'));var toCsv=require(_0xd40a('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd40a('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd40a('0x10'));var as=require(_0xd40a('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd40a('0x12'))(_0xd40a('0x13'));var utils=require(_0xd40a('0x14'));var config=require(_0xd40a('0x15'));var licenseUtil=require(_0xd40a('0x16'));var db=require(_0xd40a('0x17'))['db'];function respondWithStatusCode(_0x587e49,_0x185cf4){_0x185cf4=_0x185cf4||0xcc;return function(_0x5616dc){if(_0x5616dc){return _0x587e49[_0xd40a('0x18')](_0x185cf4);}return _0x587e49['status'](_0x185cf4)[_0xd40a('0x19')]();};}function respondWithResult(_0x365489,_0x5279b8){_0x5279b8=_0x5279b8||0xc8;return function(_0x173211){if(_0x173211){return _0x365489['status'](_0x5279b8)['json'](_0x173211);}};}function respondWithFilteredResult(_0xd31280,_0x375ec7){return function(_0x245931){if(_0x245931){var _0x37b920=typeof _0x375ec7[_0xd40a('0x1a')]===_0xd40a('0x1b')&&typeof _0x375ec7['limit']==='undefined';var _0x5b215c=_0x245931[_0xd40a('0x1c')];var _0x13e1aa=_0x37b920?0x0:_0x375ec7[_0xd40a('0x1a')];var _0x15b13a=_0x37b920?_0x245931[_0xd40a('0x1c')]:_0x375ec7[_0xd40a('0x1a')]+_0x375ec7[_0xd40a('0x1d')];var _0x24b17c;if(_0x15b13a>=_0x5b215c){_0x15b13a=_0x5b215c;_0x24b17c=0xc8;}else{_0x24b17c=0xce;}_0xd31280[_0xd40a('0x1e')](_0x24b17c);return _0xd31280[_0xd40a('0x1f')](_0xd40a('0x20'),_0x13e1aa+'-'+_0x15b13a+'/'+_0x5b215c)[_0xd40a('0x21')](_0x245931);}return null;};}function patchUpdates(_0x442324){return function(_0x52df9e){try{jsonpatch[_0xd40a('0x22')](_0x52df9e,_0x442324,!![]);}catch(_0x5a96e3){return BPromise[_0xd40a('0x23')](_0x5a96e3);}return _0x52df9e['save']();};}function saveUpdates(_0x584f65,_0x2f7bc4){return function(_0x2f42c7){if(_0x2f42c7){return _0x2f42c7[_0xd40a('0x24')](_0x584f65)[_0xd40a('0x25')](function(_0x2647c4){return _0x2647c4;});}return null;};}function removeEntity(_0xaac0b9,_0x17c852){return function(_0x2d0a00){if(_0x2d0a00){return _0x2d0a00['destroy']()[_0xd40a('0x25')](function(){_0xaac0b9[_0xd40a('0x1e')](0xcc)[_0xd40a('0x19')]();});}};}function handleEntityNotFound(_0x41f81f,_0x1a6120){return function(_0x587400){if(!_0x587400){_0x41f81f[_0xd40a('0x18')](0x194);}return _0x587400;};}function handleError(_0x4e16a2,_0x165cca){_0x165cca=_0x165cca||0x1f4;return function(_0x52d6cb){logger[_0xd40a('0x26')](_0x52d6cb[_0xd40a('0x27')]);if(_0x52d6cb[_0xd40a('0x28')]){delete _0x52d6cb['name'];}_0x4e16a2[_0xd40a('0x1e')](_0x165cca)['send'](_0x52d6cb);};}exports[_0xd40a('0x29')]=function(_0x193f35,_0x51d479){var _0x485eb8={},_0x5a7a4d={},_0xfd959d={'count':0x0,'rows':[]};var _0x4dc65d=_[_0xd40a('0x2a')](db[_0xd40a('0x2b')][_0xd40a('0x2c')],function(_0x19523d){return{'name':_0x19523d[_0xd40a('0x2d')],'type':_0x19523d[_0xd40a('0x2e')]['key']};});_0x5a7a4d['model']=_[_0xd40a('0x2a')](_0x4dc65d,_0xd40a('0x28'));_0x5a7a4d[_0xd40a('0x2f')]=_[_0xd40a('0x30')](_0x193f35[_0xd40a('0x2f')]);_0x5a7a4d['filters']=_[_0xd40a('0x31')](_0x5a7a4d[_0xd40a('0x32')],_0x5a7a4d[_0xd40a('0x2f')]);_0x485eb8[_0xd40a('0x33')]=_['intersection'](_0x5a7a4d[_0xd40a('0x32')],qs[_0xd40a('0x34')](_0x193f35['query']['fields']));_0x485eb8[_0xd40a('0x33')]=_0x485eb8[_0xd40a('0x33')][_0xd40a('0x35')]?_0x485eb8[_0xd40a('0x33')]:_0x5a7a4d[_0xd40a('0x32')];if(!_0x193f35['query']['hasOwnProperty'](_0xd40a('0x36'))){_0x485eb8[_0xd40a('0x1d')]=qs[_0xd40a('0x1d')](_0x193f35[_0xd40a('0x2f')][_0xd40a('0x1d')]);_0x485eb8[_0xd40a('0x1a')]=qs[_0xd40a('0x1a')](_0x193f35[_0xd40a('0x2f')]['offset']);}_0x485eb8[_0xd40a('0x37')]=qs[_0xd40a('0x38')](_0x193f35[_0xd40a('0x2f')][_0xd40a('0x38')]);_0x485eb8['where']=qs[_0xd40a('0x39')](_[_0xd40a('0x3a')](_0x193f35[_0xd40a('0x2f')],_0x5a7a4d[_0xd40a('0x39')]),_0x4dc65d);if(_0x193f35[_0xd40a('0x2f')][_0xd40a('0x3b')]){_0x485eb8[_0xd40a('0x3c')]=_[_0xd40a('0x3d')](_0x485eb8['where'],{'$or':_[_0xd40a('0x2a')](_0x4dc65d,function(_0x260ef3){if(_0x260ef3[_0xd40a('0x2e')]!==_0xd40a('0x3e')){var _0x4ee19e={};_0x4ee19e[_0x260ef3[_0xd40a('0x28')]]={'$like':'%'+_0x193f35['query'][_0xd40a('0x3b')]+'%'};return _0x4ee19e;}})});}_0x485eb8=_[_0xd40a('0x3d')]({},_0x485eb8,_0x193f35[_0xd40a('0x3f')]);var _0x1c10f0={'where':_0x485eb8[_0xd40a('0x3c')]};return db[_0xd40a('0x2b')][_0xd40a('0x1c')](_0x1c10f0)[_0xd40a('0x25')](function(_0x1389f1){_0xfd959d['count']=_0x1389f1;if(_0x193f35[_0xd40a('0x2f')][_0xd40a('0x40')]){_0x485eb8['include']=[{'all':!![]}];}return db['VoiceQueuesLog'][_0xd40a('0x41')](_0x485eb8);})[_0xd40a('0x25')](function(_0x486c13){_0xfd959d[_0xd40a('0x42')]=_0x486c13;return _0xfd959d;})[_0xd40a('0x25')](respondWithFilteredResult(_0x51d479,_0x485eb8))[_0xd40a('0x43')](handleError(_0x51d479,null));};exports[_0xd40a('0x44')]=function(_0x1161c9,_0x353612){var _0x29eb95={'raw':!![],'where':{'id':_0x1161c9['params']['id']}},_0x327b9b={};_0x327b9b['model']=_[_0xd40a('0x30')](db[_0xd40a('0x2b')][_0xd40a('0x2c')]);_0x327b9b[_0xd40a('0x2f')]=_[_0xd40a('0x30')](_0x1161c9[_0xd40a('0x2f')]);_0x327b9b[_0xd40a('0x39')]=_[_0xd40a('0x31')](_0x327b9b[_0xd40a('0x32')],_0x327b9b['query']);_0x29eb95[_0xd40a('0x33')]=_[_0xd40a('0x31')](_0x327b9b[_0xd40a('0x32')],qs[_0xd40a('0x34')](_0x1161c9[_0xd40a('0x2f')][_0xd40a('0x34')]));_0x29eb95['attributes']=_0x29eb95[_0xd40a('0x33')]['length']?_0x29eb95[_0xd40a('0x33')]:_0x327b9b[_0xd40a('0x32')];if(_0x1161c9['query']['includeAll']){_0x29eb95[_0xd40a('0x45')]=[{'all':!![]}];}_0x29eb95=_[_0xd40a('0x3d')]({},_0x29eb95,_0x1161c9[_0xd40a('0x3f')]);return db[_0xd40a('0x2b')][_0xd40a('0x46')](_0x29eb95)[_0xd40a('0x25')](handleEntityNotFound(_0x353612,null))['then'](respondWithResult(_0x353612,null))[_0xd40a('0x43')](handleError(_0x353612,null));};exports['create']=function(_0x5b1672,_0x5a08a4){return db[_0xd40a('0x2b')][_0xd40a('0x47')](_0x5b1672[_0xd40a('0x48')],{})['then'](respondWithResult(_0x5a08a4,0xc9))['catch'](handleError(_0x5a08a4,null));};exports[_0xd40a('0x24')]=function(_0x3fd0e2,_0x1205f4){if(_0x3fd0e2[_0xd40a('0x48')]['id']){delete _0x3fd0e2[_0xd40a('0x48')]['id'];}return db[_0xd40a('0x2b')]['find']({'where':{'id':_0x3fd0e2[_0xd40a('0x49')]['id']}})['then'](handleEntityNotFound(_0x1205f4,null))[_0xd40a('0x25')](saveUpdates(_0x3fd0e2['body'],null))['then'](respondWithResult(_0x1205f4,null))['catch'](handleError(_0x1205f4,null));};exports[_0xd40a('0x4a')]=function(_0x4ed00c,_0x29212c){return db[_0xd40a('0x2b')]['find']({'where':{'id':_0x4ed00c[_0xd40a('0x49')]['id']}})[_0xd40a('0x25')](handleEntityNotFound(_0x29212c,null))[_0xd40a('0x25')](removeEntity(_0x29212c,null))['catch'](handleError(_0x29212c,null));};
\ No newline at end of file
index 1504da5..815de68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b13=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','exports','define','VoiceQueuesLog','voice_queues_log','event','dtm','lodash','util','../../config/logger','api'];(function(_0x55e393,_0x157928){var _0x219ab0=function(_0x7d4311){while(--_0x7d4311){_0x55e393['push'](_0x55e393['shift']());}};_0x219ab0(++_0x157928);}(_0x0b13,0x150));var _0x30b1=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0b13[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x30b1('0x0'));var util=require(_0x30b1('0x1'));var logger=require(_0x30b1('0x2'))(_0x30b1('0x3'));var moment=require(_0x30b1('0x4'));var BPromise=require(_0x30b1('0x5'));var rp=require(_0x30b1('0x6'));var fs=require('fs');var path=require(_0x30b1('0x7'));var rimraf=require(_0x30b1('0x8'));var config=require(_0x30b1('0x9'));var attributes=require(_0x30b1('0xa'));module[_0x30b1('0xb')]=function(_0x2ec728,_0x17504d){return _0x2ec728[_0x30b1('0xc')](_0x30b1('0xd'),attributes,{'tableName':_0x30b1('0xe'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x30b1('0xf'),_0x30b1('0x10')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xc7be=['rimraf','./voiceQueuesLog.attributes','exports','VoiceQueuesLog','voice_queues_log','event_dtm','event','dtm','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x41aa18,_0x375545){var _0x96ad61=function(_0x9b06d3){while(--_0x9b06d3){_0x41aa18['push'](_0x41aa18['shift']());}};_0x96ad61(++_0x375545);}(_0xc7be,0x78));var _0xec7b=function(_0x18b1a8,_0x4331ae){_0x18b1a8=_0x18b1a8-0x0;var _0x1659fc=_0xc7be[_0x18b1a8];return _0x1659fc;};'use strict';var _=require(_0xec7b('0x0'));var util=require(_0xec7b('0x1'));var logger=require(_0xec7b('0x2'))(_0xec7b('0x3'));var moment=require(_0xec7b('0x4'));var BPromise=require(_0xec7b('0x5'));var rp=require(_0xec7b('0x6'));var fs=require('fs');var path=require(_0xec7b('0x7'));var rimraf=require(_0xec7b('0x8'));var config=require('../../config/environment');var attributes=require(_0xec7b('0x9'));module[_0xec7b('0xa')]=function(_0x1c5720,_0x5877e9){return _0x1c5720['define'](_0xec7b('0xb'),attributes,{'tableName':_0xec7b('0xc'),'paranoid':![],'indexes':[{'name':_0xec7b('0xd'),'fields':[_0xec7b('0xe'),_0xec7b('0xf')]}],'timestamps':![]});};
\ No newline at end of file
index aefe2a6..622c1ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f73=['stringify','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s'];(function(_0x2867d8,_0xef3ee0){var _0x3b8176=function(_0x2b9eb8){while(--_0x2b9eb8){_0x2867d8['push'](_0x2867d8['shift']());}};_0x3b8176(++_0xef3ee0);}(_0x4f73,0x10f));var _0x34f7=function(_0x13cab0,_0x14d825){_0x13cab0=_0x13cab0-0x0;var _0x38804f=_0x4f73[_0x13cab0];return _0x38804f;};'use strict';var _=require(_0x34f7('0x0'));var util=require(_0x34f7('0x1'));var moment=require(_0x34f7('0x2'));var BPromise=require(_0x34f7('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34f7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34f7('0x5'));var logger=require('../../config/logger')(_0x34f7('0x6'));var config=require(_0x34f7('0x7'));var jayson=require(_0x34f7('0x8'));var client=jayson[_0x34f7('0x9')][_0x34f7('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5b02ca,_0x576be8,_0x39e1e8){return new BPromise(function(_0x3b0938,_0x29031d){return client[_0x34f7('0xb')](_0x5b02ca,_0x39e1e8)[_0x34f7('0xc')](function(_0x2fabed){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x576be8,_0x34f7('0xd'));logger['debug'](_0x34f7('0xe'),_0x576be8,_0x34f7('0xd'),JSON[_0x34f7('0xf')](_0x2fabed));if(_0x2fabed[_0x34f7('0x10')]){if(_0x2fabed[_0x34f7('0x10')][_0x34f7('0x11')]===0x1f4){logger[_0x34f7('0x10')](_0x34f7('0x12'),_0x576be8,_0x2fabed['error'][_0x34f7('0x13')]);return _0x29031d(_0x2fabed[_0x34f7('0x10')]['message']);}logger[_0x34f7('0x10')](_0x34f7('0x12'),_0x576be8,_0x2fabed[_0x34f7('0x10')][_0x34f7('0x13')]);return _0x3b0938(_0x2fabed[_0x34f7('0x10')]['message']);}else{logger[_0x34f7('0x14')](_0x34f7('0x12'),_0x576be8,_0x34f7('0xd'));_0x3b0938(_0x2fabed[_0x34f7('0x15')][_0x34f7('0x13')]);}})['catch'](function(_0x3460b4){logger[_0x34f7('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x576be8,_0x3460b4);_0x29031d(_0x3460b4);});});}
\ No newline at end of file
+var _0xe129=['request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','error','code','VoiceQueuesLog,\x20%s,\x20%s','message','info','result','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then'];(function(_0x4a7631,_0x2c85b9){var _0x1a5a6f=function(_0x1ee3fd){while(--_0x1ee3fd){_0x4a7631['push'](_0x4a7631['shift']());}};_0x1a5a6f(++_0x2c85b9);}(_0xe129,0x94));var _0x9e12=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe129[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x9e12('0x0'));var util=require(_0x9e12('0x1'));var moment=require('moment');var BPromise=require(_0x9e12('0x2'));var rs=require(_0x9e12('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e12('0x4'))['db'];var utils=require(_0x9e12('0x5'));var logger=require('../../config/logger')(_0x9e12('0x6'));var config=require(_0x9e12('0x7'));var jayson=require(_0x9e12('0x8'));var client=jayson[_0x9e12('0x9')][_0x9e12('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x242bb7,_0x525e08,_0x185f3c){return new BPromise(function(_0x50227b,_0x458427){return client['request'](_0x242bb7,_0x185f3c)[_0x9e12('0xb')](function(_0xa8941e){logger['info']('VoiceQueuesLog,\x20%s,\x20%s',_0x525e08,_0x9e12('0xc'));logger['debug'](_0x9e12('0xd'),_0x525e08,_0x9e12('0xc'),JSON['stringify'](_0xa8941e));if(_0xa8941e[_0x9e12('0xe')]){if(_0xa8941e[_0x9e12('0xe')][_0x9e12('0xf')]===0x1f4){logger[_0x9e12('0xe')](_0x9e12('0x10'),_0x525e08,_0xa8941e[_0x9e12('0xe')][_0x9e12('0x11')]);return _0x458427(_0xa8941e['error'][_0x9e12('0x11')]);}logger['error']('VoiceQueuesLog,\x20%s,\x20%s',_0x525e08,_0xa8941e['error'][_0x9e12('0x11')]);return _0x50227b(_0xa8941e['error'][_0x9e12('0x11')]);}else{logger[_0x9e12('0x12')](_0x9e12('0x10'),_0x525e08,'request\x20sent');_0x50227b(_0xa8941e[_0x9e12('0x13')]['message']);}})['catch'](function(_0x1e0366){logger[_0x9e12('0xe')](_0x9e12('0x10'),_0x525e08,_0x1e0366);_0x458427(_0x1e0366);});});}
\ No newline at end of file
index 73236cc..cf1d44f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0c4=['/:id/download','download','/:id/downloads','downloads','downloadTranscribe','post','create','/:id/transcribe','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../config/environment','./voiceRecording.controller','isAuthenticated','index','get','describe','/:id'];(function(_0x2be7c5,_0x17a20e){var _0x54b6cb=function(_0x1a4c09){while(--_0x1a4c09){_0x2be7c5['push'](_0x2be7c5['shift']());}};_0x54b6cb(++_0x17a20e);}(_0xb0c4,0x8a));var _0x4b0c=function(_0x102881,_0x58d723){_0x102881=_0x102881-0x0;var _0x5c63d0=_0xb0c4[_0x102881];return _0x5c63d0;};'use strict';var multer=require(_0x4b0c('0x0'));var util=require('util');var path=require(_0x4b0c('0x1'));var timeout=require('connect-timeout');var express=require(_0x4b0c('0x2'));var router=express[_0x4b0c('0x3')]();var fs_extra=require(_0x4b0c('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x4b0c('0x5'));var controller=require(_0x4b0c('0x6'));router['get']('/',auth[_0x4b0c('0x7')](),controller[_0x4b0c('0x8')]);router[_0x4b0c('0x9')]('/describe',auth[_0x4b0c('0x7')](),controller[_0x4b0c('0xa')]);router[_0x4b0c('0x9')](_0x4b0c('0xb'),auth[_0x4b0c('0x7')](),controller['show']);router['get'](_0x4b0c('0xc'),auth[_0x4b0c('0x7')](),controller[_0x4b0c('0xd')]);router[_0x4b0c('0x9')](_0x4b0c('0xe'),controller[_0x4b0c('0xf')]);router[_0x4b0c('0x9')]('/:id/transcribe',auth['isAuthenticated'](),controller[_0x4b0c('0x10')]);router[_0x4b0c('0x11')]('/',auth['isAuthenticated'](),controller[_0x4b0c('0x12')]);router[_0x4b0c('0x11')](_0x4b0c('0x13'),auth[_0x4b0c('0x7')](),controller['runTranscribe']);router[_0x4b0c('0x14')](_0x4b0c('0xb'),auth[_0x4b0c('0x7')](),controller[_0x4b0c('0x15')]);router[_0x4b0c('0x16')](_0x4b0c('0xb'),auth[_0x4b0c('0x7')](),controller[_0x4b0c('0x17')]);module[_0x4b0c('0x18')]=router;
\ No newline at end of file
+var _0xd6ea=['/:id','show','/:id/download','download','/:id/downloads','/:id/transcribe','downloadTranscribe','post','put','update','delete','destroy','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceRecording.controller','isAuthenticated','get','/describe','describe'];(function(_0x3909ae,_0x3183c7){var _0x15000b=function(_0x591ff5){while(--_0x591ff5){_0x3909ae['push'](_0x3909ae['shift']());}};_0x15000b(++_0x3183c7);}(_0xd6ea,0x71));var _0xad6e=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xd6ea[_0xa148b7];return _0x51efd3;};'use strict';var multer=require(_0xad6e('0x0'));var util=require(_0xad6e('0x1'));var path=require('path');var timeout=require(_0xad6e('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xad6e('0x3'));var auth=require(_0xad6e('0x4'));var interaction=require(_0xad6e('0x5'));var config=require(_0xad6e('0x6'));var controller=require(_0xad6e('0x7'));router['get']('/',auth[_0xad6e('0x8')](),controller['index']);router[_0xad6e('0x9')](_0xad6e('0xa'),auth[_0xad6e('0x8')](),controller[_0xad6e('0xb')]);router[_0xad6e('0x9')](_0xad6e('0xc'),auth[_0xad6e('0x8')](),controller[_0xad6e('0xd')]);router[_0xad6e('0x9')](_0xad6e('0xe'),auth['isAuthenticated'](),controller[_0xad6e('0xf')]);router[_0xad6e('0x9')](_0xad6e('0x10'),controller['downloads']);router['get'](_0xad6e('0x11'),auth['isAuthenticated'](),controller[_0xad6e('0x12')]);router[_0xad6e('0x13')]('/',auth[_0xad6e('0x8')](),controller['create']);router[_0xad6e('0x13')]('/:id/transcribe',auth[_0xad6e('0x8')](),controller['runTranscribe']);router[_0xad6e('0x14')](_0xad6e('0xc'),auth['isAuthenticated'](),controller[_0xad6e('0x15')]);router[_0xad6e('0x16')](_0xad6e('0xc'),auth[_0xad6e('0x8')](),controller[_0xad6e('0x17')]);module[_0xad6e('0x18')]=router;
\ No newline at end of file
index 27845bc..de91941 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0xa9e0[_0x3635ce];return _0x97ecd0;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
+var _0xa9e0=['DATE','updatedAt','toString','sequelize','moment','path','getDataValue','extname','value','STRING','setDataValue','channel','TEXT','NEW','FLOAT','BOOLEAN','format','MM-DD-YYYY\x20HH:mm'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x56482c,_0x16118d){_0x56482c=_0x56482c-0x0;var _0x5aae7a=_0xa9e0[_0x56482c];return _0x5aae7a;};'use strict';var Sequelize=require(_0x0a9e('0x0'));var moment=require(_0x0a9e('0x1'));var path=require(_0x0a9e('0x2'));module['exports']={'format':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x0a9e('0x3')]('value')?path[_0x0a9e('0x4')](this[_0x0a9e('0x3')](_0x0a9e('0x5'))):undefined;}},'uniqueid':{'type':Sequelize[_0x0a9e('0x6')]},'channel':{'type':Sequelize[_0x0a9e('0x6')],'set':function(_0x57b080){if(_0x57b080){this[_0x0a9e('0x7')](_0x0a9e('0x8'),_0x57b080);this[_0x0a9e('0x7')]('membername',_0x57b080['split'](/\/|-/)[0x1]);}}},'membername':{'type':Sequelize[_0x0a9e('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'connectedlinenum':{'type':Sequelize[_0x0a9e('0x6')]},'connectedlinename':{'type':Sequelize[_0x0a9e('0x6')]},'accountcode':{'type':Sequelize[_0x0a9e('0x6')]},'context':{'type':Sequelize[_0x0a9e('0x6')]},'exten':{'type':Sequelize[_0x0a9e('0x6')]},'value':{'type':Sequelize[_0x0a9e('0x6')]},'type':{'type':Sequelize['STRING']},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'queue':{'type':Sequelize['STRING']},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'userThirdDisposition':{'type':Sequelize[_0x0a9e('0x6')]},'location':{'type':Sequelize[_0x0a9e('0x9')]},'transcribeName':{'type':Sequelize[_0x0a9e('0x6')]},'transcribeStatus':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':_0x0a9e('0xa')},'fileUri':{'type':Sequelize['TEXT']},'fileText':{'type':Sequelize[_0x0a9e('0x9')]},'failureReason':{'type':Sequelize[_0x0a9e('0x9')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')]},'sPositive':{'type':Sequelize[_0x0a9e('0xb')]},'sNegative':{'type':Sequelize[_0x0a9e('0xb')]},'sNeutral':{'type':Sequelize[_0x0a9e('0xb')]},'sMixed':{'type':Sequelize['FLOAT']},'tempSentiment':{'type':Sequelize[_0x0a9e('0xc')],'defaultValue':![]},'createdAt':{'type':Sequelize['DATE'],'get':function(){return moment(this[_0x0a9e('0x3')]('createdAt'))[_0x0a9e('0xd')](_0x0a9e('0xe'))['toString']();}},'updatedAt':{'type':Sequelize[_0x0a9e('0xf')],'get':function(){return moment(this['getDataValue'](_0x0a9e('0x10')))[_0x0a9e('0xd')](_0x0a9e('0xe'))[_0x0a9e('0x11')]();}}};
\ No newline at end of file
index 83b3d55..3c32736 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5bf=['mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','index','map','VoiceRecording','rawAttributes','type','key','model','format','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','includeAll','catch','show','params','keys','include','options','find','create','body','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','unlink','message','sequelize','MD5','col','token','$and','push','extname','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','listBuckets','createBucket','upload','TranscribeService','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','Location','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','data1','data2','Cloud\x20Provider\x20not\x20configured','transcribeRegion','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','language','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x43fdf8,_0x8426b3){var _0x1160c6=function(_0x281fb6){while(--_0x281fb6){_0x43fdf8['push'](_0x43fdf8['shift']());}};_0x1160c6(++_0x8426b3);}(_0xd5bf,0x1c7));var _0xfd5b=function(_0x501fa2,_0x413a32){_0x501fa2=_0x501fa2-0x0;var _0x57e564=_0xd5bf[_0x501fa2];return _0x57e564;};'use strict';var emlformat=require(_0xfd5b('0x0'));var rimraf=require(_0xfd5b('0x1'));var zipdir=require(_0xfd5b('0x2'));var jsonpatch=require(_0xfd5b('0x3'));var rp=require(_0xfd5b('0x4'));var moment=require(_0xfd5b('0x5'));var BPromise=require(_0xfd5b('0x6'));var Mustache=require(_0xfd5b('0x7'));var util=require(_0xfd5b('0x8'));var path=require(_0xfd5b('0x9'));var sox=require(_0xfd5b('0xa'));var csv=require(_0xfd5b('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfd5b('0xc'));var _=require(_0xfd5b('0xd'));var squel=require(_0xfd5b('0xe'));var crypto=require(_0xfd5b('0xf'));var jsforce=require(_0xfd5b('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xfd5b('0xb'));var querystring=require(_0xfd5b('0x11'));var Papa=require('papaparse');var AWS=require('aws-sdk');var uuidv4=require('uuid/v4');var Redis=require('ioredis');var authService=require(_0xfd5b('0x12'));var qs=require(_0xfd5b('0x13'));var as=require(_0xfd5b('0x14'));var hardwareService=require(_0xfd5b('0x15'));var logger=require(_0xfd5b('0x16'))(_0xfd5b('0x17'));var utils=require(_0xfd5b('0x18'));var config=require(_0xfd5b('0x19'));var licenseUtil=require(_0xfd5b('0x1a'));var db=require(_0xfd5b('0x1b'))['db'];function respondWithStatusCode(_0x2d408d,_0x8027e7){_0x8027e7=_0x8027e7||0xcc;return function(_0x54cd63){if(_0x54cd63){return _0x2d408d[_0xfd5b('0x1c')](_0x8027e7);}return _0x2d408d[_0xfd5b('0x1d')](_0x8027e7)[_0xfd5b('0x1e')]();};}function respondWithResult(_0x3511f4,_0x2e0cc4){_0x2e0cc4=_0x2e0cc4||0xc8;return function(_0x2fdab8){if(_0x2fdab8){return _0x3511f4[_0xfd5b('0x1d')](_0x2e0cc4)[_0xfd5b('0x1f')](_0x2fdab8);}};}function respondWithFilteredResult(_0x99e586,_0x46df8c){return function(_0x322188){if(_0x322188){var _0x12eb85=typeof _0x46df8c[_0xfd5b('0x20')]===_0xfd5b('0x21')&&typeof _0x46df8c[_0xfd5b('0x22')]===_0xfd5b('0x21');var _0x430e6f=_0x322188[_0xfd5b('0x23')];var _0x352990=_0x12eb85?0x0:_0x46df8c[_0xfd5b('0x20')];var _0x5202d3=_0x12eb85?_0x322188[_0xfd5b('0x23')]:_0x46df8c[_0xfd5b('0x20')]+_0x46df8c[_0xfd5b('0x22')];var _0x4b4fdc;if(_0x5202d3>=_0x430e6f){_0x5202d3=_0x430e6f;_0x4b4fdc=0xc8;}else{_0x4b4fdc=0xce;}_0x99e586['status'](_0x4b4fdc);return _0x99e586['set'](_0xfd5b('0x24'),_0x352990+'-'+_0x5202d3+'/'+_0x430e6f)['json'](_0x322188);}return null;};}function patchUpdates(_0xb31227){return function(_0xab0c3f){try{jsonpatch[_0xfd5b('0x25')](_0xab0c3f,_0xb31227,!![]);}catch(_0x5b99e3){return BPromise[_0xfd5b('0x26')](_0x5b99e3);}return _0xab0c3f[_0xfd5b('0x27')]();};}function saveUpdates(_0x25a382,_0x5887fb){return function(_0x3cedf4){if(_0x3cedf4){return _0x3cedf4[_0xfd5b('0x28')](_0x25a382)[_0xfd5b('0x29')](function(_0x210144){return _0x210144;});}return null;};}function removeEntity(_0x37627a,_0x36c72c){return function(_0x3a35fd){if(_0x3a35fd){return _0x3a35fd[_0xfd5b('0x2a')]()[_0xfd5b('0x29')](function(){_0x37627a[_0xfd5b('0x1d')](0xcc)['end']();});}};}function handleEntityNotFound(_0x467f7d,_0x2b091b){return function(_0x2af671){if(!_0x2af671){_0x467f7d['sendStatus'](0x194);}return _0x2af671;};}function handleError(_0x2b048c,_0x1c48ea){_0x1c48ea=_0x1c48ea||0x1f4;return function(_0x53a319){logger['error'](_0x53a319[_0xfd5b('0x2b')]);if(_0x53a319[_0xfd5b('0x2c')]){delete _0x53a319[_0xfd5b('0x2c')];}_0x2b048c[_0xfd5b('0x1d')](_0x1c48ea)[_0xfd5b('0x2d')](_0x53a319);};}exports[_0xfd5b('0x2e')]=function(_0x16c3d0,_0x40587a){var _0x49832c={},_0xccb374={},_0x4a08b3={'count':0x0,'rows':[]};var _0xf0847e=_[_0xfd5b('0x2f')](db[_0xfd5b('0x30')][_0xfd5b('0x31')],function(_0x37705a){return{'name':_0x37705a['fieldName'],'type':_0x37705a[_0xfd5b('0x32')][_0xfd5b('0x33')]};});_0xccb374[_0xfd5b('0x34')]=_['differenceBy'](_[_0xfd5b('0x2f')](_0xf0847e,_0xfd5b('0x2c')),[_0xfd5b('0x35')]);_0xccb374['query']=_['keys'](_0x16c3d0['query']);_0xccb374[_0xfd5b('0x36')]=_[_0xfd5b('0x37')](_0xccb374[_0xfd5b('0x34')],_0xccb374[_0xfd5b('0x38')]);_0x49832c[_0xfd5b('0x39')]=_['intersection'](_0xccb374[_0xfd5b('0x34')],qs[_0xfd5b('0x3a')](_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x3a')]));_0x49832c[_0xfd5b('0x39')]=_0x49832c[_0xfd5b('0x39')][_0xfd5b('0x3b')]?_0x49832c[_0xfd5b('0x39')]:_0xccb374[_0xfd5b('0x34')];if(!_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x3c')](_0xfd5b('0x3d'))){_0x49832c[_0xfd5b('0x22')]=qs['limit'](_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x22')]);_0x49832c[_0xfd5b('0x20')]=qs[_0xfd5b('0x20')](_0x16c3d0[_0xfd5b('0x38')]['offset']);}_0x49832c['order']=qs[_0xfd5b('0x3e')](_0x16c3d0[_0xfd5b('0x38')]['sort']);_0x49832c[_0xfd5b('0x3f')]=qs[_0xfd5b('0x36')](_[_0xfd5b('0x40')](_0x16c3d0[_0xfd5b('0x38')],_0xccb374[_0xfd5b('0x36')]),_0xf0847e);if(_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x41')]){_0x49832c[_0xfd5b('0x3f')]=_[_0xfd5b('0x42')](_0x49832c[_0xfd5b('0x3f')],{'$or':_[_0xfd5b('0x2f')](_0xf0847e,function(_0x31afca){if(_0x31afca['type']!==_0xfd5b('0x43')){var _0x570b3b={};_0x570b3b[_0x31afca[_0xfd5b('0x2c')]]={'$like':'%'+_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x41')]+'%'};return _0x570b3b;}})});}_0x49832c=_[_0xfd5b('0x42')]({},_0x49832c,_0x16c3d0['options']);var _0x1b4cca={'where':_0x49832c['where']};return db[_0xfd5b('0x30')][_0xfd5b('0x23')](_0x1b4cca)[_0xfd5b('0x29')](function(_0x409010){_0x4a08b3[_0xfd5b('0x23')]=_0x409010;if(_0x16c3d0[_0xfd5b('0x38')][_0xfd5b('0x44')]){_0x49832c['include']=[{'all':!![]}];}return db[_0xfd5b('0x30')]['findAll'](_0x49832c);})[_0xfd5b('0x29')](function(_0x186d0a){_0x4a08b3['rows']=_0x186d0a;return _0x4a08b3;})[_0xfd5b('0x29')](respondWithFilteredResult(_0x40587a,_0x49832c))[_0xfd5b('0x45')](handleError(_0x40587a,null));};exports[_0xfd5b('0x46')]=function(_0x1aad76,_0x2cce35){var _0x3a2193={'raw':![],'where':{'id':_0x1aad76[_0xfd5b('0x47')]['id']}},_0x4b871a={};_0x4b871a['model']=_[_0xfd5b('0x48')](db[_0xfd5b('0x30')][_0xfd5b('0x31')]);_0x4b871a[_0xfd5b('0x38')]=_['keys'](_0x1aad76[_0xfd5b('0x38')]);_0x4b871a[_0xfd5b('0x36')]=_[_0xfd5b('0x37')](_0x4b871a['model'],_0x4b871a[_0xfd5b('0x38')]);_0x3a2193[_0xfd5b('0x39')]=_['intersection'](_0x4b871a[_0xfd5b('0x34')],qs[_0xfd5b('0x3a')](_0x1aad76[_0xfd5b('0x38')][_0xfd5b('0x3a')]));_0x3a2193[_0xfd5b('0x39')]=_0x3a2193[_0xfd5b('0x39')][_0xfd5b('0x3b')]?_0x3a2193[_0xfd5b('0x39')]:_0x4b871a[_0xfd5b('0x34')];if(_0x1aad76[_0xfd5b('0x38')][_0xfd5b('0x44')]){_0x3a2193[_0xfd5b('0x49')]=[{'all':!![]}];}_0x3a2193=_[_0xfd5b('0x42')]({},_0x3a2193,_0x1aad76[_0xfd5b('0x4a')]);return db[_0xfd5b('0x30')][_0xfd5b('0x4b')](_0x3a2193)[_0xfd5b('0x29')](handleEntityNotFound(_0x2cce35,null))['then'](respondWithResult(_0x2cce35,null))['catch'](handleError(_0x2cce35,null));};exports[_0xfd5b('0x4c')]=function(_0x5ed4ff,_0x2a19a5){return db[_0xfd5b('0x30')][_0xfd5b('0x4c')](_0x5ed4ff[_0xfd5b('0x4d')],{})[_0xfd5b('0x29')](respondWithResult(_0x2a19a5,0xc9))[_0xfd5b('0x45')](handleError(_0x2a19a5,null));};exports[_0xfd5b('0x28')]=function(_0x169928,_0x3e1c78){if(_0x169928[_0xfd5b('0x4d')]['id']){delete _0x169928[_0xfd5b('0x4d')]['id'];}return db[_0xfd5b('0x30')][_0xfd5b('0x4b')]({'where':{'id':_0x169928['params']['id']}})[_0xfd5b('0x29')](handleEntityNotFound(_0x3e1c78,null))['then'](saveUpdates(_0x169928[_0xfd5b('0x4d')],null))[_0xfd5b('0x29')](respondWithResult(_0x3e1c78,null))[_0xfd5b('0x45')](handleError(_0x3e1c78,null));};exports[_0xfd5b('0x4e')]=function(_0x3b7de0,_0x45c232){return db[_0xfd5b('0x30')][_0xfd5b('0x4e')]()[_0xfd5b('0x29')](respondWithResult(_0x45c232,null))[_0xfd5b('0x45')](handleError(_0x45c232,null));};exports[_0xfd5b('0x4f')]=function(_0x2f8fef,_0x24d62d,_0x4d3f91){var _0x27c0f9=require(_0xfd5b('0x50'));var _0x55b3ef=![];var _0x5ef2e7={};if(_0x2f8fef[_0xfd5b('0x38')][_0xfd5b('0x32')]&&_0x2f8fef[_0xfd5b('0x38')][_0xfd5b('0x32')]===_0xfd5b('0x51')){_0x5ef2e7[_0xfd5b('0x51')]=_0x2f8fef['params']['id'];}else{_0x5ef2e7['id']=_0x2f8fef[_0xfd5b('0x47')]['id'];}return db[_0xfd5b('0x30')]['find']({'where':_0x5ef2e7,'attributes':['id','value'],'raw':!![]})[_0xfd5b('0x29')](handleEntityNotFound(_0x24d62d,null))[_0xfd5b('0x29')](function(_0x33f38b){if(_0x33f38b){var _0x2ab8dc=_0x33f38b[_0xfd5b('0x52')];var _0x18a2eb=util['format'](_0xfd5b('0x53'),_0x2ab8dc);if(fs[_0xfd5b('0x54')](_0x18a2eb)){_0x55b3ef=!![];return _0x27c0f9[_0xfd5b('0x55')](_0x18a2eb,_0x2ab8dc,config[_0xfd5b('0x56')][_0xfd5b('0x57')])[_0xfd5b('0x29')](function(){return _0x33f38b;});}return _0x33f38b;}})['then'](function(_0x55b324){if(_0x55b324){var _0x5e5b5c=_0x55b324[_0xfd5b('0x52')];if(!fs[_0xfd5b('0x54')](_0x5e5b5c)){throw new db[(_0xfd5b('0x58'))][(_0xfd5b('0x59'))](_0xfd5b('0x5a'));}if(_0x55b324[_0xfd5b('0x5b')]){return _0x24d62d[_0xfd5b('0x4f')](_0x5e5b5c,_0x55b324[_0xfd5b('0x5b')]+path['extname'](_0x5e5b5c),function(){if(_0x55b3ef){fs[_0xfd5b('0x5c')](_0x5e5b5c);}});}else{return _0x24d62d[_0xfd5b('0x4f')](_0x5e5b5c,function(_0x71940a){if(_0x55b3ef){fs[_0xfd5b('0x5c')](_0x5e5b5c);}});}}})[_0xfd5b('0x45')](function(_0x57b56f){if(_0x57b56f[_0xfd5b('0x5d')]===_0xfd5b('0x5a')){_0x24d62d[_0xfd5b('0x1d')](0x194)[_0xfd5b('0x2d')]('Not\x20found');}else{return handleError(_0x24d62d,null);}});};exports['downloads']=function(_0x2751d2,_0x291d2e,_0x33bdbc){var _0x5d403d=require('../../components/encryptor');var _0x40c276=![];var _0x6729ee={'$and':[db[_0xfd5b('0x5e')]['where'](db[_0xfd5b('0x5e')]['fn'](_0xfd5b('0x5f'),db[_0xfd5b('0x5e')][_0xfd5b('0x60')](_0xfd5b('0x51'))),_0x2751d2['query'][_0xfd5b('0x61')])]};if(_0x2751d2[_0xfd5b('0x38')][_0xfd5b('0x32')]&&_0x2751d2[_0xfd5b('0x38')][_0xfd5b('0x32')]===_0xfd5b('0x51')){_0x6729ee[_0xfd5b('0x62')][_0xfd5b('0x63')]({'uniqueid':_0x2751d2[_0xfd5b('0x47')]['id']});}else{_0x6729ee['$and'][_0xfd5b('0x63')]({'id':_0x2751d2[_0xfd5b('0x47')]['id']});}return db[_0xfd5b('0x30')]['find']({'where':_0x6729ee,'attributes':['id','value'],'raw':!![]})['then'](handleEntityNotFound(_0x291d2e,null))['then'](function(_0x332c1b){if(_0x332c1b){var _0x46e976=util[_0xfd5b('0x35')](_0xfd5b('0x53'),_0x332c1b[_0xfd5b('0x52')]);if(fs[_0xfd5b('0x54')](_0x46e976)){_0x40c276=!![];return _0x5d403d['decryptFile'](_0x46e976,_0x332c1b[_0xfd5b('0x52')],config['secrets'][_0xfd5b('0x57')])['then'](function(){return _0x332c1b;});}return _0x332c1b;}})[_0xfd5b('0x29')](function(_0x472314){if(_0x472314){if(!fs[_0xfd5b('0x54')](_0x472314[_0xfd5b('0x52')])){throw new db[(_0xfd5b('0x58'))]['ValidationError'](_0xfd5b('0x5a'));}if(_0x472314[_0xfd5b('0x5b')]){return _0x291d2e['download'](_0x472314[_0xfd5b('0x52')],_0x472314['filename']+path[_0xfd5b('0x64')](_0x472314[_0xfd5b('0x52')]),function(){if(_0x40c276){fs[_0xfd5b('0x5c')](_0x472314[_0xfd5b('0x52')]);}});}else{return _0x291d2e['download'](_0x472314['value'],function(_0x47016e){if(_0x40c276){fs[_0xfd5b('0x5c')](_0x472314[_0xfd5b('0x52')]);}});}}})[_0xfd5b('0x45')](handleError(_0x291d2e,null));};exports[_0xfd5b('0x2a')]=function(_0xdf16b9,_0xd474a6){return db[_0xfd5b('0x30')][_0xfd5b('0x4b')]({'where':{'id':_0xdf16b9[_0xfd5b('0x47')]['id']}})[_0xfd5b('0x29')](function(_0x32f609){if(_[_0xfd5b('0x65')](_0x32f609)){throw new ReferenceError(_0xfd5b('0x66'));}return _0x32f609;})['then'](function(_0x43f24e){var _0x3d8edc=_0x43f24e[_0xfd5b('0x52')];logger[_0xfd5b('0x67')](_0xfd5b('0x68'),_0x3d8edc);if(!_['isNil'](_0x43f24e[_0xfd5b('0x52')])&&fs[_0xfd5b('0x54')](_0x3d8edc)){logger['info'](_0xfd5b('0x69')+_0x3d8edc+_0xfd5b('0x6a'));fs[_0xfd5b('0x6b')](_0x3d8edc);}_0x3d8edc=_0x3d8edc+_0xfd5b('0x6c');if(!_[_0xfd5b('0x65')](_0x43f24e[_0xfd5b('0x52')])&&fs[_0xfd5b('0x54')](_0x3d8edc)){logger['info']('File:\x20\x22'+_0x3d8edc+_0xfd5b('0x6a'));fs['unlinkSync'](_0x3d8edc);}return _0x43f24e;})[_0xfd5b('0x29')](function(_0x148ea3){if(!_0x148ea3)throw new InternalError();return _0x148ea3[_0xfd5b('0x2a')]();})['then'](function(){_0xd474a6[_0xfd5b('0x1d')](0xcc)[_0xfd5b('0x1e')]();})['catch'](handleError(_0xd474a6,null));};function getBucketslist(_0x5e4676,_0x570dfc,_0xce0ea3){return new Promise(function(_0x5c10ee,_0x1d7067){var _0xf6fa1d=new AWS['S3']({'accessKeyId':_0x570dfc,'secretAccessKey':_0x5e4676,'region':_0xce0ea3});_0xf6fa1d[_0xfd5b('0x6d')]({},function(_0x245077,_0x8139f3){if(_0x245077){return _0x1d7067(_0x245077);}else{return _0x5c10ee(_0x8139f3);}});});}function createBucket(_0x403301,_0x5f0ae7,_0x7cfc80,_0x4656ed){return new Promise(function(_0xec6b80,_0x7fe9b0){var _0x194fef=new AWS['S3']({'accessKeyId':_0x5f0ae7,'secretAccessKey':_0x403301,'region':_0x7cfc80});_0x194fef[_0xfd5b('0x6e')]({'Bucket':_0x4656ed},function(_0x10107f,_0x53a297){if(_0x10107f){return _0x7fe9b0(_0x10107f);}else{return _0xec6b80(_0x53a297);}});});}function uploadFile(_0x18333e,_0x44d2d5,_0x4e3765,_0x2900ec,_0x5f47ea,_0x918958){return new Promise(function(_0x4b8278,_0x5cbf7b){var _0xac8efd=new AWS['S3']({'accessKeyId':_0x44d2d5,'secretAccessKey':_0x18333e,'region':_0x4e3765});_0xac8efd[_0xfd5b('0x6f')]({'Bucket':_0x2900ec,'Key':_0x5f47ea,'Body':_0x918958},function(_0x4bca3f,_0x107db0){if(_0x4bca3f){return _0x5cbf7b(_0x4bca3f);}else{return _0x4b8278(_0x107db0);}});});}function startTranscribe(_0x23f2c6,_0x4b881e,_0x3f5d69,_0x4bac56,_0x4fb4e4,_0x51dac6){return new Promise(function(_0x2456a7,_0x5bbed4){var _0x45aaa4=new AWS[(_0xfd5b('0x70'))]({'accessKeyId':_0x4b881e,'secretAccessKey':_0x23f2c6,'region':_0x3f5d69});_0x45aaa4[_0xfd5b('0x71')]({'TranscriptionJobName':_0x4bac56,'LanguageCode':_0x4fb4e4,'Media':{'MediaFileUri':_0x51dac6}},function(_0x38eb34,_0x253026){if(_0x38eb34){return _0x5bbed4(_0x38eb34);}else{return _0x2456a7(_0x253026);}});});}function transcribe(_0x2adc1b,_0x11f0dd,_0x5769a2,_0x69e91e,_0x35095f,_0x20c256,_0x8097b0){return new Promise(function(_0x3d0da0,_0x59dcdb){var _0x14a9bd={};logger['info'](util[_0xfd5b('0x35')](_0xfd5b('0x72'),_0x2adc1b,_0x35095f));return uploadFile(_0x11f0dd,_0x5769a2,_0x69e91e,_0x35095f,path['basename'](_0x20c256),fs['readFileSync'](_0x20c256))[_0xfd5b('0x29')](function(_0x385c3e){logger[_0xfd5b('0x67')](util['format'](_0xfd5b('0x73'),_0x2adc1b,_0x35095f,_0x385c3e['Location']));_0x14a9bd[_0xfd5b('0x74')]=_0x385c3e['Bucket'];_0x14a9bd[_0xfd5b('0x75')]=_0x385c3e['Location'];logger[_0xfd5b('0x67')](util['format'](_0xfd5b('0x76'),_0x2adc1b));return startTranscribe(_0x11f0dd,_0x5769a2,_0x69e91e,uuidv4(),_0x8097b0,_0x385c3e[_0xfd5b('0x77')]);})[_0xfd5b('0x29')](function(_0x502e1b){logger['info'](util[_0xfd5b('0x35')]('[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created',_0x2adc1b,_0x502e1b[_0xfd5b('0x78')][_0xfd5b('0x79')]));_0x14a9bd[_0xfd5b('0x7a')]=_0x502e1b[_0xfd5b('0x78')][_0xfd5b('0x79')];_0x14a9bd[_0xfd5b('0x7b')]=_0x502e1b[_0xfd5b('0x78')][_0xfd5b('0x7c')];return _0x3d0da0(_0x14a9bd);})[_0xfd5b('0x45')](function(_0x420f6d){return _0x59dcdb(_0x420f6d);});});}exports['runTranscribe']=function(_0x31a5b9,_0x471a70,_0xfc2a62){var _0x2b1c9a;var _0x5a51cd;var _0x11b648;var _0x9be635=require(_0xfd5b('0x50'));return db[_0xfd5b('0x30')]['findOne']({'where':{'id':_0x31a5b9[_0xfd5b('0x47')]['id']}})[_0xfd5b('0x29')](function(_0x2b1642){if(_0x2b1642){var _0x5e48af=util[_0xfd5b('0x35')](_0xfd5b('0x53'),_0x2b1642[_0xfd5b('0x52')]);if(fs[_0xfd5b('0x54')](_0x5e48af)){cypher=!![];return _0x9be635[_0xfd5b('0x55')](_0x5e48af,_0x2b1642[_0xfd5b('0x52')],config[_0xfd5b('0x56')][_0xfd5b('0x57')])['then'](function(){return _0x2b1642;});}return _0x2b1642;}})[_0xfd5b('0x29')](function(_0x57eaac){if(!_0x57eaac){throw new db['Sequelize'][(_0xfd5b('0x59'))](_0xfd5b('0x7d'));}_0x5a51cd=_0x57eaac;return db[_0xfd5b('0x7e')]['findOne']({'where':{'id':0x1}});})['then'](handleEntityNotFound(_0x471a70,null))[_0xfd5b('0x29')](function(_0xebb69c){if(_0xebb69c){_0x2b1c9a=_0xebb69c;if(!_0x2b1c9a[_0xfd5b('0x7f')]||!_0x2b1c9a[_0xfd5b('0x80')]||!_0x2b1c9a['transcribeRegion']||!_0x2b1c9a['language']||!_0x2b1c9a[_0xfd5b('0x74')]){throw new db[(_0xfd5b('0x58'))][(_0xfd5b('0x59'))](_0xfd5b('0x81'));}if(_0x31a5b9[_0xfd5b('0x4d')][_0xfd5b('0x82')]&&(!_0x2b1c9a['sentiment']||!_0x2b1c9a[_0xfd5b('0x83')]||!_0x2b1c9a[_0xfd5b('0x84')]||!_0x2b1c9a['language']||!_0x2b1c9a[_0xfd5b('0x74')])){throw new db[(_0xfd5b('0x58'))]['ValidationError'](_0xfd5b('0x85'));}return db[_0xfd5b('0x86')][_0xfd5b('0x87')]({'where':{'id':_0x2b1c9a[_0xfd5b('0x80')]}});}})[_0xfd5b('0x29')](function(_0x3ec021){if(!_0x3ec021){throw new db[(_0xfd5b('0x58'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x3ec021[_0xfd5b('0x88')]||!_0x3ec021[_0xfd5b('0x89')]){throw new db[(_0xfd5b('0x58'))][(_0xfd5b('0x59'))](_0xfd5b('0x8a'));}_0x11b648=_0x3ec021;return getBucketslist(_0x11b648[_0xfd5b('0x88')],_0x11b648['data2'],_0x2b1c9a[_0xfd5b('0x8b')]);})[_0xfd5b('0x29')](function(_0x43b2f2){if(_0x43b2f2&&_0x43b2f2['Buckets']){var _0x3918dd=_[_0xfd5b('0x4b')](_0x43b2f2[_0xfd5b('0x8c')],function(_0x28b540){return _0x28b540[_0xfd5b('0x8d')]===_0x2b1c9a[_0xfd5b('0x74')];});if(!_0x3918dd){logger[_0xfd5b('0x67')](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x31a5b9['params']['id'],_0x2b1c9a[_0xfd5b('0x74')]));return createBucket(_0x11b648[_0xfd5b('0x88')],_0x11b648['data2'],_0x2b1c9a[_0xfd5b('0x8b')],_0x2b1c9a[_0xfd5b('0x74')]);}logger['info'](util[_0xfd5b('0x35')](_0xfd5b('0x8e'),_0x31a5b9[_0xfd5b('0x47')]['id'],_0x2b1c9a[_0xfd5b('0x74')]));return;}})[_0xfd5b('0x29')](function(_0x51836f){if(_0x5a51cd[_0xfd5b('0x7b')]===_0xfd5b('0x8f')){return transcribe(_0x31a5b9[_0xfd5b('0x47')]['id'],_0x11b648['data1'],_0x11b648['data2'],_0x2b1c9a[_0xfd5b('0x8b')],_0x2b1c9a['bucket'],_0x5a51cd['value'],_0x2b1c9a[_0xfd5b('0x90')]);}else{logger[_0xfd5b('0x67')](util[_0xfd5b('0x35')]('[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested',_0x31a5b9['params']['id']));return{'transcribeStatus':_0xfd5b('0x91')};}})[_0xfd5b('0x29')](function(_0x3a1640){if(_0x3a1640){_0x3a1640[_0xfd5b('0x92')]=_0x31a5b9[_0xfd5b('0x4d')][_0xfd5b('0x82')];return _0x5a51cd[_0xfd5b('0x93')](_0x3a1640);}})[_0xfd5b('0x29')](respondWithResult(_0x471a70,null))[_0xfd5b('0x45')](handleError(_0x471a70,null));};function writeFile(_0x2d5af9,_0x5ee0cb){return new Promise(function(_0xe34ea5,_0x5e28ea){fs[_0xfd5b('0x94')](_0x5ee0cb,_0x2d5af9,function(_0x529adb,_0x20fdf3){if(_0x529adb){return _0x5e28ea(_0x529adb);}else{return _0xe34ea5(_0x20fdf3);}});});}exports[_0xfd5b('0x95')]=function(_0x2c8911,_0x181c9f,_0x21b12b){return db['VoiceRecording'][_0xfd5b('0x87')]({'where':{'id':_0x2c8911[_0xfd5b('0x47')]['id']}})['then'](handleEntityNotFound(_0x181c9f))[_0xfd5b('0x29')](function(_0xc2b9d7){if(_0xc2b9d7&&_0xc2b9d7[_0xfd5b('0x96')]){var _0x6e2d50=_0xc2b9d7[_0xfd5b('0x96')];var _0x52598b=config['root']+_0xfd5b('0x97')+_0xc2b9d7['id']+_0xfd5b('0x98');if(fs['existsSync'](_0x52598b)){return _0x52598b;}return writeFile(_0x6e2d50,_0x52598b)[_0xfd5b('0x29')](function(){return _0x52598b;});}else{throw new db[(_0xfd5b('0x58'))][(_0xfd5b('0x59'))](_0xfd5b('0x99'));}})[_0xfd5b('0x29')](function(_0x39168b){return _0x181c9f[_0xfd5b('0x4f')](_0x39168b);})[_0xfd5b('0x45')](handleError(_0x181c9f));};
\ No newline at end of file
+var _0x938d=['VoiceRecording\x20not\x20found','filename','extname','unlink','message','Not\x20found','downloads','sequelize','MD5','col','$and','push','Entity\x20not\x20found','isNil','info','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','File:\x20\x22','listBuckets','createBucket','upload','startTranscriptionJob','[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','bucket','Bucket','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request','[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','transcribeName','TranscriptionJob','TranscriptionJobName','transcribeStatus','runTranscribe','findOne','Voice\x20Recording\x20not\x20found','Setting','transcribe','transcribeAccountId','transcribeRegion','language','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','data1','data2','Cloud\x20Provider\x20not\x20configured','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','writeFile','fileText','root','Transcript\x20not\x20available','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','aws-sdk','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','error','stack','name','send','index','map','VoiceRecording','rawAttributes','type','model','differenceBy','format','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','keys','find','catch','create','body','params','describe','download','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError'];(function(_0x321c6d,_0x6e6f64){var _0x2f36da=function(_0x11c29a){while(--_0x11c29a){_0x321c6d['push'](_0x321c6d['shift']());}};_0x2f36da(++_0x6e6f64);}(_0x938d,0xd8));var _0xd938=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x938d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd938('0x0'));var rimraf=require(_0xd938('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd938('0x2'));var rp=require(_0xd938('0x3'));var moment=require(_0xd938('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xd938('0x5'));var util=require(_0xd938('0x6'));var path=require(_0xd938('0x7'));var sox=require(_0xd938('0x8'));var csv=require(_0xd938('0x9'));var ejs=require(_0xd938('0xa'));var fs=require('fs');var fs_extra=require(_0xd938('0xb'));var _=require(_0xd938('0xc'));var squel=require('squel');var crypto=require(_0xd938('0xd'));var jsforce=require(_0xd938('0xe'));var deskjs=require(_0xd938('0xf'));var toCsv=require(_0xd938('0x9'));var querystring=require(_0xd938('0x10'));var Papa=require(_0xd938('0x11'));var AWS=require(_0xd938('0x12'));var uuidv4=require('uuid/v4');var Redis=require(_0xd938('0x13'));var authService=require('../../components/auth/service');var qs=require(_0xd938('0x14'));var as=require(_0xd938('0x15'));var hardwareService=require(_0xd938('0x16'));var logger=require(_0xd938('0x17'))(_0xd938('0x18'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xd938('0x19'));var db=require(_0xd938('0x1a'))['db'];function respondWithStatusCode(_0x4496c5,_0x4dd724){_0x4dd724=_0x4dd724||0xcc;return function(_0xb321a1){if(_0xb321a1){return _0x4496c5[_0xd938('0x1b')](_0x4dd724);}return _0x4496c5[_0xd938('0x1c')](_0x4dd724)[_0xd938('0x1d')]();};}function respondWithResult(_0x5a015a,_0x469002){_0x469002=_0x469002||0xc8;return function(_0x19ae01){if(_0x19ae01){return _0x5a015a[_0xd938('0x1c')](_0x469002)['json'](_0x19ae01);}};}function respondWithFilteredResult(_0x1fb09c,_0x5628b7){return function(_0x1e54bc){if(_0x1e54bc){var _0x423790=typeof _0x5628b7[_0xd938('0x1e')]===_0xd938('0x1f')&&typeof _0x5628b7[_0xd938('0x20')]===_0xd938('0x1f');var _0x1d9571=_0x1e54bc[_0xd938('0x21')];var _0x52a92e=_0x423790?0x0:_0x5628b7['offset'];var _0x2a86e5=_0x423790?_0x1e54bc[_0xd938('0x21')]:_0x5628b7[_0xd938('0x1e')]+_0x5628b7[_0xd938('0x20')];var _0x2e8a21;if(_0x2a86e5>=_0x1d9571){_0x2a86e5=_0x1d9571;_0x2e8a21=0xc8;}else{_0x2e8a21=0xce;}_0x1fb09c[_0xd938('0x1c')](_0x2e8a21);return _0x1fb09c[_0xd938('0x22')](_0xd938('0x23'),_0x52a92e+'-'+_0x2a86e5+'/'+_0x1d9571)[_0xd938('0x24')](_0x1e54bc);}return null;};}function patchUpdates(_0x24674f){return function(_0x2ff57a){try{jsonpatch[_0xd938('0x25')](_0x2ff57a,_0x24674f,!![]);}catch(_0x1e99e3){return BPromise['reject'](_0x1e99e3);}return _0x2ff57a[_0xd938('0x26')]();};}function saveUpdates(_0x395a0a,_0x1b049c){return function(_0x9b3a7b){if(_0x9b3a7b){return _0x9b3a7b[_0xd938('0x27')](_0x395a0a)['then'](function(_0x3c99b0){return _0x3c99b0;});}return null;};}function removeEntity(_0x41245d,_0x5a8826){return function(_0x2c490a){if(_0x2c490a){return _0x2c490a[_0xd938('0x28')]()[_0xd938('0x29')](function(){_0x41245d['status'](0xcc)[_0xd938('0x1d')]();});}};}function handleEntityNotFound(_0x15f595,_0x5e1f1f){return function(_0x30d6db){if(!_0x30d6db){_0x15f595[_0xd938('0x1b')](0x194);}return _0x30d6db;};}function handleError(_0x124be8,_0x361b1b){_0x361b1b=_0x361b1b||0x1f4;return function(_0x254950){logger[_0xd938('0x2a')](_0x254950[_0xd938('0x2b')]);if(_0x254950['name']){delete _0x254950[_0xd938('0x2c')];}_0x124be8[_0xd938('0x1c')](_0x361b1b)[_0xd938('0x2d')](_0x254950);};}exports[_0xd938('0x2e')]=function(_0x59d39c,_0x517ae1){var _0x4b1961={},_0x4ec011={},_0x48ac98={'count':0x0,'rows':[]};var _0x42c27f=_[_0xd938('0x2f')](db[_0xd938('0x30')][_0xd938('0x31')],function(_0x1385f7){return{'name':_0x1385f7['fieldName'],'type':_0x1385f7[_0xd938('0x32')]['key']};});_0x4ec011[_0xd938('0x33')]=_[_0xd938('0x34')](_['map'](_0x42c27f,'name'),[_0xd938('0x35')]);_0x4ec011[_0xd938('0x36')]=_['keys'](_0x59d39c[_0xd938('0x36')]);_0x4ec011[_0xd938('0x37')]=_[_0xd938('0x38')](_0x4ec011['model'],_0x4ec011['query']);_0x4b1961['attributes']=_[_0xd938('0x38')](_0x4ec011[_0xd938('0x33')],qs[_0xd938('0x39')](_0x59d39c[_0xd938('0x36')]['fields']));_0x4b1961[_0xd938('0x3a')]=_0x4b1961['attributes'][_0xd938('0x3b')]?_0x4b1961[_0xd938('0x3a')]:_0x4ec011[_0xd938('0x33')];if(!_0x59d39c['query'][_0xd938('0x3c')](_0xd938('0x3d'))){_0x4b1961[_0xd938('0x20')]=qs['limit'](_0x59d39c['query'][_0xd938('0x20')]);_0x4b1961['offset']=qs[_0xd938('0x1e')](_0x59d39c[_0xd938('0x36')][_0xd938('0x1e')]);}_0x4b1961[_0xd938('0x3e')]=qs['sort'](_0x59d39c[_0xd938('0x36')][_0xd938('0x3f')]);_0x4b1961[_0xd938('0x40')]=qs[_0xd938('0x37')](_['pick'](_0x59d39c['query'],_0x4ec011[_0xd938('0x37')]),_0x42c27f);if(_0x59d39c['query']['filter']){_0x4b1961[_0xd938('0x40')]=_[_0xd938('0x41')](_0x4b1961[_0xd938('0x40')],{'$or':_[_0xd938('0x2f')](_0x42c27f,function(_0x353f88){if(_0x353f88['type']!==_0xd938('0x42')){var _0x19fb7f={};_0x19fb7f[_0x353f88['name']]={'$like':'%'+_0x59d39c[_0xd938('0x36')][_0xd938('0x43')]+'%'};return _0x19fb7f;}})});}_0x4b1961=_[_0xd938('0x41')]({},_0x4b1961,_0x59d39c[_0xd938('0x44')]);var _0x274d61={'where':_0x4b1961[_0xd938('0x40')]};return db[_0xd938('0x30')][_0xd938('0x21')](_0x274d61)[_0xd938('0x29')](function(_0x20727f){_0x48ac98[_0xd938('0x21')]=_0x20727f;if(_0x59d39c[_0xd938('0x36')][_0xd938('0x45')]){_0x4b1961[_0xd938('0x46')]=[{'all':!![]}];}return db[_0xd938('0x30')][_0xd938('0x47')](_0x4b1961);})[_0xd938('0x29')](function(_0xab1ede){_0x48ac98[_0xd938('0x48')]=_0xab1ede;return _0x48ac98;})[_0xd938('0x29')](respondWithFilteredResult(_0x517ae1,_0x4b1961))['catch'](handleError(_0x517ae1,null));};exports[_0xd938('0x49')]=function(_0x5af294,_0x3c41ff){var _0x2fa030={'raw':![],'where':{'id':_0x5af294['params']['id']}},_0x16ab83={};_0x16ab83['model']=_[_0xd938('0x4a')](db['VoiceRecording']['rawAttributes']);_0x16ab83['query']=_[_0xd938('0x4a')](_0x5af294[_0xd938('0x36')]);_0x16ab83[_0xd938('0x37')]=_[_0xd938('0x38')](_0x16ab83[_0xd938('0x33')],_0x16ab83[_0xd938('0x36')]);_0x2fa030[_0xd938('0x3a')]=_['intersection'](_0x16ab83[_0xd938('0x33')],qs[_0xd938('0x39')](_0x5af294['query']['fields']));_0x2fa030[_0xd938('0x3a')]=_0x2fa030['attributes'][_0xd938('0x3b')]?_0x2fa030[_0xd938('0x3a')]:_0x16ab83[_0xd938('0x33')];if(_0x5af294[_0xd938('0x36')][_0xd938('0x45')]){_0x2fa030[_0xd938('0x46')]=[{'all':!![]}];}_0x2fa030=_[_0xd938('0x41')]({},_0x2fa030,_0x5af294[_0xd938('0x44')]);return db[_0xd938('0x30')][_0xd938('0x4b')](_0x2fa030)['then'](handleEntityNotFound(_0x3c41ff,null))[_0xd938('0x29')](respondWithResult(_0x3c41ff,null))[_0xd938('0x4c')](handleError(_0x3c41ff,null));};exports[_0xd938('0x4d')]=function(_0x254f98,_0x3ce088){return db[_0xd938('0x30')]['create'](_0x254f98[_0xd938('0x4e')],{})[_0xd938('0x29')](respondWithResult(_0x3ce088,0xc9))['catch'](handleError(_0x3ce088,null));};exports[_0xd938('0x27')]=function(_0x395752,_0x1011a5){if(_0x395752[_0xd938('0x4e')]['id']){delete _0x395752[_0xd938('0x4e')]['id'];}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':{'id':_0x395752[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](handleEntityNotFound(_0x1011a5,null))[_0xd938('0x29')](saveUpdates(_0x395752[_0xd938('0x4e')],null))[_0xd938('0x29')](respondWithResult(_0x1011a5,null))[_0xd938('0x4c')](handleError(_0x1011a5,null));};exports['describe']=function(_0x21307f,_0x3ed73b){return db[_0xd938('0x30')][_0xd938('0x50')]()[_0xd938('0x29')](respondWithResult(_0x3ed73b,null))[_0xd938('0x4c')](handleError(_0x3ed73b,null));};exports[_0xd938('0x51')]=function(_0x1ac442,_0x3cf93d,_0x4e23ac){var _0x125869=require(_0xd938('0x52'));var _0x532aca=![];var _0x3113fc={};if(_0x1ac442['query'][_0xd938('0x32')]&&_0x1ac442[_0xd938('0x36')][_0xd938('0x32')]==='uniqueid'){_0x3113fc[_0xd938('0x53')]=_0x1ac442[_0xd938('0x4f')]['id'];}else{_0x3113fc['id']=_0x1ac442[_0xd938('0x4f')]['id'];}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':_0x3113fc,'attributes':['id',_0xd938('0x54')],'raw':!![]})[_0xd938('0x29')](handleEntityNotFound(_0x3cf93d,null))[_0xd938('0x29')](function(_0xff61fc){if(_0xff61fc){var _0xb72662=_0xff61fc[_0xd938('0x54')];var _0xa6c33f=util[_0xd938('0x35')](_0xd938('0x55'),_0xb72662);if(fs[_0xd938('0x56')](_0xa6c33f)){_0x532aca=!![];return _0x125869[_0xd938('0x57')](_0xa6c33f,_0xb72662,config[_0xd938('0x58')][_0xd938('0x59')])[_0xd938('0x29')](function(){return _0xff61fc;});}return _0xff61fc;}})[_0xd938('0x29')](function(_0x4efce8){if(_0x4efce8){var _0x5c8d59=_0x4efce8['value'];if(!fs[_0xd938('0x56')](_0x5c8d59)){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x5c'));}if(_0x4efce8['filename']){return _0x3cf93d[_0xd938('0x51')](_0x5c8d59,_0x4efce8[_0xd938('0x5d')]+path[_0xd938('0x5e')](_0x5c8d59),function(){if(_0x532aca){fs[_0xd938('0x5f')](_0x5c8d59);}});}else{return _0x3cf93d[_0xd938('0x51')](_0x5c8d59,function(_0x51e461){if(_0x532aca){fs[_0xd938('0x5f')](_0x5c8d59);}});}}})['catch'](function(_0x1317be){if(_0x1317be[_0xd938('0x60')]===_0xd938('0x5c')){_0x3cf93d[_0xd938('0x1c')](0x194)[_0xd938('0x2d')](_0xd938('0x61'));}else{return handleError(_0x3cf93d,null);}});};exports[_0xd938('0x62')]=function(_0x2d7c41,_0x36a445,_0x3d7281){var _0x3b14c7=require(_0xd938('0x52'));var _0x5ebf27=![];var _0x4733ff={'$and':[db[_0xd938('0x63')][_0xd938('0x40')](db['sequelize']['fn'](_0xd938('0x64'),db[_0xd938('0x63')][_0xd938('0x65')]('uniqueid')),_0x2d7c41[_0xd938('0x36')]['token'])]};if(_0x2d7c41[_0xd938('0x36')][_0xd938('0x32')]&&_0x2d7c41[_0xd938('0x36')][_0xd938('0x32')]===_0xd938('0x53')){_0x4733ff[_0xd938('0x66')][_0xd938('0x67')]({'uniqueid':_0x2d7c41[_0xd938('0x4f')]['id']});}else{_0x4733ff[_0xd938('0x66')][_0xd938('0x67')]({'id':_0x2d7c41[_0xd938('0x4f')]['id']});}return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':_0x4733ff,'attributes':['id',_0xd938('0x54')],'raw':!![]})[_0xd938('0x29')](handleEntityNotFound(_0x36a445,null))[_0xd938('0x29')](function(_0x18ca53){if(_0x18ca53){var _0x8f55b8=util[_0xd938('0x35')](_0xd938('0x55'),_0x18ca53[_0xd938('0x54')]);if(fs[_0xd938('0x56')](_0x8f55b8)){_0x5ebf27=!![];return _0x3b14c7[_0xd938('0x57')](_0x8f55b8,_0x18ca53[_0xd938('0x54')],config['secrets'][_0xd938('0x59')])[_0xd938('0x29')](function(){return _0x18ca53;});}return _0x18ca53;}})[_0xd938('0x29')](function(_0xf6434d){if(_0xf6434d){if(!fs[_0xd938('0x56')](_0xf6434d[_0xd938('0x54')])){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))]('VoiceRecording\x20not\x20found');}if(_0xf6434d[_0xd938('0x5d')]){return _0x36a445[_0xd938('0x51')](_0xf6434d[_0xd938('0x54')],_0xf6434d[_0xd938('0x5d')]+path[_0xd938('0x5e')](_0xf6434d['value']),function(){if(_0x5ebf27){fs[_0xd938('0x5f')](_0xf6434d[_0xd938('0x54')]);}});}else{return _0x36a445[_0xd938('0x51')](_0xf6434d[_0xd938('0x54')],function(_0x5f38ae){if(_0x5ebf27){fs[_0xd938('0x5f')](_0xf6434d['value']);}});}}})[_0xd938('0x4c')](handleError(_0x36a445,null));};exports[_0xd938('0x28')]=function(_0x5350b5,_0xf7c797){return db[_0xd938('0x30')][_0xd938('0x4b')]({'where':{'id':_0x5350b5[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](function(_0x170114){if(_['isNil'](_0x170114)){throw new ReferenceError(_0xd938('0x68'));}return _0x170114;})[_0xd938('0x29')](function(_0x51d02a){var _0x291698=_0x51d02a['value'];logger['info']('cancellazione\x20fisica\x20documento\x20%s',_0x291698);if(!_[_0xd938('0x69')](_0x51d02a[_0xd938('0x54')])&&fs[_0xd938('0x56')](_0x291698)){logger[_0xd938('0x6a')]('File:\x20\x22'+_0x291698+_0xd938('0x6b'));fs[_0xd938('0x6c')](_0x291698);}_0x291698=_0x291698+'.cypher';if(!_['isNil'](_0x51d02a[_0xd938('0x54')])&&fs['existsSync'](_0x291698)){logger['info'](_0xd938('0x6d')+_0x291698+_0xd938('0x6b'));fs['unlinkSync'](_0x291698);}return _0x51d02a;})[_0xd938('0x29')](function(_0x35a777){if(!_0x35a777)throw new InternalError();return _0x35a777[_0xd938('0x28')]();})[_0xd938('0x29')](function(){_0xf7c797[_0xd938('0x1c')](0xcc)[_0xd938('0x1d')]();})[_0xd938('0x4c')](handleError(_0xf7c797,null));};function getBucketslist(_0x95773,_0x4598b8,_0x317719){return new Promise(function(_0x47765e,_0x432539){var _0x11d06c=new AWS['S3']({'accessKeyId':_0x4598b8,'secretAccessKey':_0x95773,'region':_0x317719});_0x11d06c[_0xd938('0x6e')]({},function(_0x2bbf75,_0x326429){if(_0x2bbf75){return _0x432539(_0x2bbf75);}else{return _0x47765e(_0x326429);}});});}function createBucket(_0x2cc56d,_0x4614ae,_0x5799da,_0x43c7cb){return new Promise(function(_0x31c324,_0x2fdf14){var _0x4ef041=new AWS['S3']({'accessKeyId':_0x4614ae,'secretAccessKey':_0x2cc56d,'region':_0x5799da});_0x4ef041[_0xd938('0x6f')]({'Bucket':_0x43c7cb},function(_0x360863,_0x32120f){if(_0x360863){return _0x2fdf14(_0x360863);}else{return _0x31c324(_0x32120f);}});});}function uploadFile(_0x5c479d,_0x2e35f8,_0x141cac,_0x2c91e4,_0x659056,_0xccfbd7){return new Promise(function(_0x21e5e6,_0x7fd8ac){var _0x1da438=new AWS['S3']({'accessKeyId':_0x2e35f8,'secretAccessKey':_0x5c479d,'region':_0x141cac});_0x1da438[_0xd938('0x70')]({'Bucket':_0x2c91e4,'Key':_0x659056,'Body':_0xccfbd7},function(_0x22a703,_0x1199ec){if(_0x22a703){return _0x7fd8ac(_0x22a703);}else{return _0x21e5e6(_0x1199ec);}});});}function startTranscribe(_0x32eb8d,_0x10059a,_0x152944,_0x183c54,_0x5bcab,_0x2e0191){return new Promise(function(_0xcd0dfd,_0x1c8c95){var _0x451d65=new AWS['TranscribeService']({'accessKeyId':_0x10059a,'secretAccessKey':_0x32eb8d,'region':_0x152944});_0x451d65[_0xd938('0x71')]({'TranscriptionJobName':_0x183c54,'LanguageCode':_0x5bcab,'Media':{'MediaFileUri':_0x2e0191}},function(_0x292258,_0x5060a0){if(_0x292258){return _0x1c8c95(_0x292258);}else{return _0xcd0dfd(_0x5060a0);}});});}function transcribe(_0x18820a,_0x2b0d36,_0x74c394,_0x4d39c0,_0x44ca7b,_0x3f53ed,_0x4ddeca){return new Promise(function(_0x1623e9,_0x5e8fc7){var _0x580a38={};logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x72'),_0x18820a,_0x44ca7b));return uploadFile(_0x2b0d36,_0x74c394,_0x4d39c0,_0x44ca7b,path[_0xd938('0x73')](_0x3f53ed),fs[_0xd938('0x74')](_0x3f53ed))['then'](function(_0x3a81d4){logger[_0xd938('0x6a')](util['format'](_0xd938('0x75'),_0x18820a,_0x44ca7b,_0x3a81d4[_0xd938('0x76')]));_0x580a38[_0xd938('0x77')]=_0x3a81d4[_0xd938('0x78')];_0x580a38['location']=_0x3a81d4[_0xd938('0x76')];logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x79'),_0x18820a));return startTranscribe(_0x2b0d36,_0x74c394,_0x4d39c0,uuidv4(),_0x4ddeca,_0x3a81d4[_0xd938('0x76')]);})['then'](function(_0x2de8fd){logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x7a'),_0x18820a,_0x2de8fd['TranscriptionJob']['TranscriptionJobName']));_0x580a38[_0xd938('0x7b')]=_0x2de8fd[_0xd938('0x7c')][_0xd938('0x7d')];_0x580a38[_0xd938('0x7e')]=_0x2de8fd[_0xd938('0x7c')]['TranscriptionJobStatus'];return _0x1623e9(_0x580a38);})[_0xd938('0x4c')](function(_0x5c81d5){return _0x5e8fc7(_0x5c81d5);});});}exports[_0xd938('0x7f')]=function(_0x4b5935,_0x4e7a46,_0x749ab7){var _0x546799;var _0x2a65af;var _0x3289ad;var _0x3adf08=require(_0xd938('0x52'));return db['VoiceRecording'][_0xd938('0x80')]({'where':{'id':_0x4b5935[_0xd938('0x4f')]['id']}})['then'](function(_0x2e1b5e){if(_0x2e1b5e){var _0x12ab0b=util[_0xd938('0x35')]('%s.cypher',_0x2e1b5e[_0xd938('0x54')]);if(fs['existsSync'](_0x12ab0b)){cypher=!![];return _0x3adf08[_0xd938('0x57')](_0x12ab0b,_0x2e1b5e[_0xd938('0x54')],config[_0xd938('0x58')][_0xd938('0x59')])['then'](function(){return _0x2e1b5e;});}return _0x2e1b5e;}})[_0xd938('0x29')](function(_0x5d9c27){if(!_0x5d9c27){throw new db['Sequelize']['ValidationError'](_0xd938('0x81'));}_0x2a65af=_0x5d9c27;return db[_0xd938('0x82')][_0xd938('0x80')]({'where':{'id':0x1}});})[_0xd938('0x29')](handleEntityNotFound(_0x4e7a46,null))[_0xd938('0x29')](function(_0x3ba515){if(_0x3ba515){_0x546799=_0x3ba515;if(!_0x546799[_0xd938('0x83')]||!_0x546799[_0xd938('0x84')]||!_0x546799[_0xd938('0x85')]||!_0x546799[_0xd938('0x86')]||!_0x546799[_0xd938('0x77')]){throw new db[(_0xd938('0x5a'))]['ValidationError'](_0xd938('0x87'));}if(_0x4b5935[_0xd938('0x4e')][_0xd938('0x88')]&&(!_0x546799['sentiment']||!_0x546799[_0xd938('0x89')]||!_0x546799['sentimentRegion']||!_0x546799[_0xd938('0x86')]||!_0x546799[_0xd938('0x77')])){throw new db['Sequelize'][(_0xd938('0x5b'))](_0xd938('0x8a'));}return db[_0xd938('0x8b')][_0xd938('0x80')]({'where':{'id':_0x546799[_0xd938('0x84')]}});}})['then'](function(_0x45e980){if(!_0x45e980){throw new db[(_0xd938('0x5a'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x45e980[_0xd938('0x8c')]||!_0x45e980[_0xd938('0x8d')]){throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x8e'));}_0x3289ad=_0x45e980;return getBucketslist(_0x3289ad[_0xd938('0x8c')],_0x3289ad['data2'],_0x546799[_0xd938('0x85')]);})['then'](function(_0x55d649){if(_0x55d649&&_0x55d649[_0xd938('0x8f')]){var _0x212784=_['find'](_0x55d649['Buckets'],function(_0x783883){return _0x783883[_0xd938('0x90')]===_0x546799[_0xd938('0x77')];});if(!_0x212784){logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x91'),_0x4b5935[_0xd938('0x4f')]['id'],_0x546799[_0xd938('0x77')]));return createBucket(_0x3289ad[_0xd938('0x8c')],_0x3289ad[_0xd938('0x8d')],_0x546799[_0xd938('0x85')],_0x546799['bucket']);}logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x92'),_0x4b5935['params']['id'],_0x546799[_0xd938('0x77')]));return;}})[_0xd938('0x29')](function(_0x2bfc53){if(_0x2a65af[_0xd938('0x7e')]===_0xd938('0x93')){return transcribe(_0x4b5935['params']['id'],_0x3289ad[_0xd938('0x8c')],_0x3289ad[_0xd938('0x8d')],_0x546799[_0xd938('0x85')],_0x546799[_0xd938('0x77')],_0x2a65af[_0xd938('0x54')],_0x546799['language']);}else{logger[_0xd938('0x6a')](util[_0xd938('0x35')](_0xd938('0x94'),_0x4b5935[_0xd938('0x4f')]['id']));return{'transcribeStatus':_0xd938('0x95')};}})['then'](function(_0x289e42){if(_0x289e42){_0x289e42['tempSentiment']=_0x4b5935[_0xd938('0x4e')][_0xd938('0x88')];return _0x2a65af['updateAttributes'](_0x289e42);}})[_0xd938('0x29')](respondWithResult(_0x4e7a46,null))[_0xd938('0x4c')](handleError(_0x4e7a46,null));};function writeFile(_0x5cdb5f,_0x2426a0){return new Promise(function(_0x91a1a4,_0x15bf68){fs[_0xd938('0x96')](_0x2426a0,_0x5cdb5f,function(_0x575811,_0x619524){if(_0x575811){return _0x15bf68(_0x575811);}else{return _0x91a1a4(_0x619524);}});});}exports['downloadTranscribe']=function(_0x30f6b4,_0x3d837d,_0x58860b){return db[_0xd938('0x30')][_0xd938('0x80')]({'where':{'id':_0x30f6b4[_0xd938('0x4f')]['id']}})[_0xd938('0x29')](handleEntityNotFound(_0x3d837d))[_0xd938('0x29')](function(_0x4d8676){if(_0x4d8676&&_0x4d8676[_0xd938('0x97')]){var _0xc6e2b5=_0x4d8676[_0xd938('0x97')];var _0x3910d6=config[_0xd938('0x98')]+'/server/files/transcribes/transcribe_'+_0x4d8676['id']+'.txt';if(fs['existsSync'](_0x3910d6)){return _0x3910d6;}return writeFile(_0xc6e2b5,_0x3910d6)[_0xd938('0x29')](function(){return _0x3910d6;});}else{throw new db[(_0xd938('0x5a'))][(_0xd938('0x5b'))](_0xd938('0x99'));}})['then'](function(_0xd50aeb){return _0x3d837d[_0xd938('0x51')](_0xd50aeb);})['catch'](handleError(_0x3d837d));};
\ No newline at end of file
index d464d7e..c922926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49e9=['transcribeStatus','./voiceRecording.attributes','exports','define','VoiceRecording','uniqueid'];(function(_0x27402f,_0x38eb47){var _0xa2eaf1=function(_0x2d7c67){while(--_0x2d7c67){_0x27402f['push'](_0x27402f['shift']());}};_0xa2eaf1(++_0x38eb47);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var attributes=require(_0x949e('0x0'));module[_0x949e('0x1')]=function(_0x4d18e7,_0x41404c){return _0x4d18e7[_0x949e('0x2')](_0x949e('0x3'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x949e('0x4')]},{'name':'transcribeStatus','fields':[_0x949e('0x5')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x3248=['exports','define','VoiceRecording','voice_recordings','uniqueid','transcribeStatus'];(function(_0x5da4b5,_0xb2535c){var _0x3c602e=function(_0x4dd1df){while(--_0x4dd1df){_0x5da4b5['push'](_0x5da4b5['shift']());}};_0x3c602e(++_0xb2535c);}(_0x3248,0x1bc));var _0x8324=function(_0x2f23bc,_0x43a1c7){_0x2f23bc=_0x2f23bc-0x0;var _0x13813b=_0x3248[_0x2f23bc];return _0x13813b;};'use strict';var attributes=require('./voiceRecording.attributes');module[_0x8324('0x0')]=function(_0x5b736a,_0x5f314a){return _0x5b736a[_0x8324('0x1')](_0x8324('0x2'),attributes,{'tableName':_0x8324('0x3'),'paranoid':![],'indexes':[{'name':_0x8324('0x4'),'fields':[_0x8324('0x4')]},{'name':_0x8324('0x5'),'fields':['transcribeStatus']}],'timestamps':!![]});};
\ No newline at end of file
index dda2b61..0a9f3da 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['randomstring','../../mysqldb','rpc','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','update','body','options','raw','where','attributes','limit','debug','UpdateVoiceRecording','CreateVoiceRecording','../../components/encryptor','Setting','findOne','callRecordingEncryption','VoiceRecording','create','existsSync','%s.cypher','value','encryptFile','secrets','recording','unlink','CreateVoiceRecording\x20file\x20encrypted','lodash','util','moment','bluebird'];(function(_0x5a11ce,_0x22bf95){var _0x4af3ae=function(_0x1a2516){while(--_0x1a2516){_0x5a11ce['push'](_0x5a11ce['shift']());}};_0x4af3ae(++_0x22bf95);}(_0x955f,0x1eb));var _0xf955=function(_0x594990,_0x55654a){_0x594990=_0x594990-0x0;var _0x5643da=_0x955f[_0x594990];return _0x5643da;};'use strict';var _=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var moment=require(_0xf955('0x2'));var BPromise=require(_0xf955('0x3'));var rs=require(_0xf955('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf955('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xf955('0x6'));var config=require('../../config/environment');var jayson=require(_0xf955('0x7'));var client=jayson[_0xf955('0x8')][_0xf955('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59d5b3,_0x18432f,_0x20c096){return new BPromise(function(_0x4f58fb,_0x254b38){return client[_0xf955('0xa')](_0x59d5b3,_0x20c096)[_0xf955('0xb')](function(_0x38b190){logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,_0xf955('0xe'));logger['debug'](_0xf955('0xf'),_0x18432f,'request\x20sent',JSON[_0xf955('0x10')](_0x38b190));if(_0x38b190[_0xf955('0x11')]){if(_0x38b190[_0xf955('0x11')]['code']===0x1f4){logger[_0xf955('0x11')]('VoiceRecording,\x20%s,\x20%s',_0x18432f,_0x38b190[_0xf955('0x11')]['message']);return _0x254b38(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);return _0x4f58fb(_0x38b190[_0xf955('0x11')][_0xf955('0x12')]);}else{logger[_0xf955('0xc')](_0xf955('0xd'),_0x18432f,'request\x20sent');_0x4f58fb(_0x38b190[_0xf955('0x13')]['message']);}})[_0xf955('0x14')](function(_0x3a814f){logger[_0xf955('0x11')](_0xf955('0xd'),_0x18432f,_0x3a814f);_0x254b38(_0x3a814f);});});}exports['UpdateVoiceRecording']=function(_0x5ac6cb){var _0x1e20d1=this;return new Promise(function(_0xe6de5c,_0x3c49c0){return db['VoiceRecording'][_0xf955('0x15')](_0x5ac6cb[_0xf955('0x16')],{'raw':_0x5ac6cb[_0xf955('0x17')]?_0x5ac6cb[_0xf955('0x17')][_0xf955('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5ac6cb['options']?_0x5ac6cb[_0xf955('0x17')][_0xf955('0x19')]||null:null,'attributes':_0x5ac6cb[_0xf955('0x17')]?_0x5ac6cb['options'][_0xf955('0x1a')]||null:null,'limit':_0x5ac6cb['options']?_0x5ac6cb[_0xf955('0x17')][_0xf955('0x1b')]||null:null})[_0xf955('0xb')](function(_0xa4ebb4){logger[_0xf955('0xc')]('UpdateVoiceRecording',_0x5ac6cb);logger[_0xf955('0x1c')](_0xf955('0x1d'),_0x5ac6cb,JSON[_0xf955('0x10')](_0xa4ebb4));_0xe6de5c(_0xa4ebb4);})[_0xf955('0x14')](function(_0x17dec2){logger[_0xf955('0x11')](_0xf955('0x1d'),_0x17dec2['message'],_0x5ac6cb);_0x3c49c0(_0x1e20d1[_0xf955('0x11')](0x1f4,_0x17dec2[_0xf955('0x12')]));});});};exports[_0xf955('0x1e')]=function(_0x406632){var _0x2dcd55=this;return new Promise(function(_0x13a86d,_0x3796f7){var _0x51f3ab=require(_0xf955('0x1f'));var _0x145098;return db[_0xf955('0x20')][_0xf955('0x21')]({'attributes':['id',_0xf955('0x22')],'where':{'id':0x1},'raw':!![]})[_0xf955('0xb')](function(_0x4d4af0){_0x145098=_0x4d4af0;return db[_0xf955('0x23')][_0xf955('0x24')](_0x406632['body']);})[_0xf955('0xb')](function(_0x2c8df1){if(_0x145098[_0xf955('0x22')]&&fs[_0xf955('0x25')](_0x2c8df1['value'])){var _0x3a951c=util['format'](_0xf955('0x26'),_0x2c8df1[_0xf955('0x27')]);return _0x51f3ab[_0xf955('0x28')](_0x2c8df1[_0xf955('0x27')],_0x3a951c,config[_0xf955('0x29')][_0xf955('0x2a')])[_0xf955('0xb')](function(){fs[_0xf955('0x2b')](_0x2c8df1['value']);logger[_0xf955('0xc')](_0xf955('0x2c'));return _0x2c8df1;});}return _0x2c8df1;})[_0xf955('0xb')](function(_0x2046c8){logger['info'](_0xf955('0x1e'),_0x406632);logger[_0xf955('0x1c')](_0xf955('0x1e'),_0x406632,JSON[_0xf955('0x10')](_0x2046c8));_0x13a86d(_0x2046c8);})[_0xf955('0x14')](function(_0x4eb2c3){logger['error']('CreateVoiceRecording',_0x4eb2c3[_0xf955('0x12')],_0x406632);_0x3796f7(_0x2dcd55[_0xf955('0x11')](0x1f4,_0x4eb2c3[_0xf955('0x12')]));});});};
\ No newline at end of file
+var _0xadb5=['encryptFile','secrets','recording','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','UpdateVoiceRecording','update','options','raw','where','limit','debug','../../components/encryptor','Setting','findOne','callRecordingEncryption','create','body','value','format','%s.cypher'];(function(_0x418408,_0x4d929a){var _0x47d9e9=function(_0xacbee9){while(--_0xacbee9){_0x418408['push'](_0x418408['shift']());}};_0x47d9e9(++_0x4d929a);}(_0xadb5,0xad));var _0x5adb=function(_0xb3b976,_0x100fdb){_0xb3b976=_0xb3b976-0x0;var _0x36cac9=_0xadb5[_0xb3b976];return _0x36cac9;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('VoiceRecording,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['VoiceRecording'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x529b65[_0x5adb('0x17')]?_0x529b65[_0x5adb('0x17')][_0x5adb('0x19')]||null:null,'attributes':_0x529b65['options']?_0x529b65[_0x5adb('0x17')]['attributes']||null:null,'limit':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x1a')]||null:null})[_0x5adb('0xb')](function(_0x1a8014){logger[_0x5adb('0xc')](_0x5adb('0x15'),_0x529b65);logger[_0x5adb('0x1b')]('UpdateVoiceRecording',_0x529b65,JSON[_0x5adb('0xf')](_0x1a8014));_0x5de028(_0x1a8014);})[_0x5adb('0x14')](function(_0x3220cd){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x3220cd['message'],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x3220cd[_0x5adb('0x12')]));});});};exports['CreateVoiceRecording']=function(_0x1feecf){var _0x1ded9f=this;return new Promise(function(_0x1a0acd,_0x55b40a){var _0x13ad1d=require(_0x5adb('0x1c'));var _0x3a4fca;return db[_0x5adb('0x1d')][_0x5adb('0x1e')]({'attributes':['id',_0x5adb('0x1f')],'where':{'id':0x1},'raw':!![]})['then'](function(_0x49992e){_0x3a4fca=_0x49992e;return db['VoiceRecording'][_0x5adb('0x20')](_0x1feecf[_0x5adb('0x21')]);})[_0x5adb('0xb')](function(_0x512bab){if(_0x3a4fca[_0x5adb('0x1f')]&&fs['existsSync'](_0x512bab[_0x5adb('0x22')])){var _0x34b793=util[_0x5adb('0x23')](_0x5adb('0x24'),_0x512bab[_0x5adb('0x22')]);return _0x13ad1d[_0x5adb('0x25')](_0x512bab[_0x5adb('0x22')],_0x34b793,config[_0x5adb('0x26')][_0x5adb('0x27')])[_0x5adb('0xb')](function(){fs['unlink'](_0x512bab[_0x5adb('0x22')]);logger['info'](_0x5adb('0x28'));return _0x512bab;});}return _0x512bab;})[_0x5adb('0xb')](function(_0x5d1441){logger[_0x5adb('0xc')](_0x5adb('0x29'),_0x1feecf);logger[_0x5adb('0x1b')]('CreateVoiceRecording',_0x1feecf,JSON[_0x5adb('0xf')](_0x5d1441));_0x1a0acd(_0x5d1441);})[_0x5adb('0x14')](function(_0x4b5887){logger['error'](_0x5adb('0x29'),_0x4b5887['message'],_0x1feecf);_0x55b40a(_0x1ded9f[_0x5adb('0x10')](0x1f4,_0x4b5887[_0x5adb('0x12')]));});});};
\ No newline at end of file
index 6082dc5..fbada1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc762=['index','/describe','describe','/:id','show','post','create','put','destroy','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./voiceTransferReport.controller','isAuthenticated'];(function(_0xedc3bf,_0x4557bc){var _0x567ee0=function(_0x335080){while(--_0x335080){_0xedc3bf['push'](_0xedc3bf['shift']());}};_0x567ee0(++_0x4557bc);}(_0xc762,0x8f));var _0x2c76=function(_0x29db25,_0x457467){_0x29db25=_0x29db25-0x0;var _0x48b1a5=_0xc762[_0x29db25];return _0x48b1a5;};'use strict';var multer=require(_0x2c76('0x0'));var util=require('util');var path=require(_0x2c76('0x1'));var timeout=require(_0x2c76('0x2'));var express=require(_0x2c76('0x3'));var router=express['Router']();var fs_extra=require(_0x2c76('0x4'));var auth=require(_0x2c76('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x2c76('0x6'));var controller=require(_0x2c76('0x7'));router['get']('/',auth[_0x2c76('0x8')](),controller[_0x2c76('0x9')]);router['get'](_0x2c76('0xa'),auth[_0x2c76('0x8')](),controller[_0x2c76('0xb')]);router['get'](_0x2c76('0xc'),auth[_0x2c76('0x8')](),controller[_0x2c76('0xd')]);router[_0x2c76('0xe')]('/',auth[_0x2c76('0x8')](),controller[_0x2c76('0xf')]);router[_0x2c76('0x10')](_0x2c76('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x2c76('0xc'),auth[_0x2c76('0x8')](),controller[_0x2c76('0x11')]);module[_0x2c76('0x12')]=router;
\ No newline at end of file
+var _0x677d=['../../components/auth/service','../../config/environment','./voiceTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','put','destroy','exports','util','path','connect-timeout','Router'];(function(_0x55cd6a,_0x335c4b){var _0x407d6f=function(_0xd59d15){while(--_0xd59d15){_0x55cd6a['push'](_0x55cd6a['shift']());}};_0x407d6f(++_0x335c4b);}(_0x677d,0x10c));var _0xd677=function(_0x23bcd4,_0xd3deb0){_0x23bcd4=_0x23bcd4-0x0;var _0x4cb792=_0x677d[_0x23bcd4];return _0x4cb792;};'use strict';var multer=require('multer');var util=require(_0xd677('0x0'));var path=require(_0xd677('0x1'));var timeout=require(_0xd677('0x2'));var express=require('express');var router=express[_0xd677('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd677('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd677('0x5'));var controller=require(_0xd677('0x6'));router[_0xd677('0x7')]('/',auth[_0xd677('0x8')](),controller['index']);router[_0xd677('0x7')](_0xd677('0x9'),auth['isAuthenticated'](),controller[_0xd677('0xa')]);router[_0xd677('0x7')](_0xd677('0xb'),auth[_0xd677('0x8')](),controller[_0xd677('0xc')]);router['post']('/',auth[_0xd677('0x8')](),controller['create']);router[_0xd677('0xd')]('/:id',auth[_0xd677('0x8')](),controller['update']);router['delete']('/:id',auth[_0xd677('0x8')](),controller[_0xd677('0xe')]);module[_0xd677('0xf')]=router;
\ No newline at end of file
index 358f76c..feea8a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d2=['Yes','exports','ENUM','blind','attended','STRING'];(function(_0x82247a,_0xe2498e){var _0x3df0d2=function(_0x101b45){while(--_0x101b45){_0x82247a['push'](_0x82247a['shift']());}};_0x3df0d2(++_0xe2498e);}(_0xf4d2,0x103));var _0x2f4d=function(_0x1bbfa4,_0x388934){_0x1bbfa4=_0x1bbfa4-0x0;var _0xe526d7=_0xf4d2[_0x1bbfa4];return _0xe526d7;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0x2f4d('0x0')]={'type':{'type':Sequelize[_0x2f4d('0x1')](_0x2f4d('0x2'),_0x2f4d('0x3'))},'result':{'type':Sequelize[_0x2f4d('0x4')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0x2f4d('0x4')]},'transferercalleridname':{'type':Sequelize[_0x2f4d('0x4')]},'transfererconnectedlinenum':{'type':Sequelize[_0x2f4d('0x4')]},'transfererconnectedlinename':{'type':Sequelize['STRING']},'transfereraccountcode':{'type':Sequelize['STRING']},'transferercontext':{'type':Sequelize[_0x2f4d('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x2f4d('0x4')]},'transfereechannel':{'type':Sequelize[_0x2f4d('0x4')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize['STRING']},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x2f4d('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x2f4d('0x4')]},'transfereecontext':{'type':Sequelize[_0x2f4d('0x4')]},'transfereeexten':{'type':Sequelize[_0x2f4d('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x2f4d('0x1')](_0x2f4d('0x5'),'No')},'context':{'type':Sequelize[_0x2f4d('0x4')]},'extension':{'type':Sequelize[_0x2f4d('0x4')]}};
\ No newline at end of file
+var _0x6e18=['moment','exports','ENUM','blind','attended','STRING','Yes','sequelize'];(function(_0x234e8a,_0x9b5f28){var _0x32385c=function(_0x1ea8fa){while(--_0x1ea8fa){_0x234e8a['push'](_0x234e8a['shift']());}};_0x32385c(++_0x9b5f28);}(_0x6e18,0x11f));var _0x86e1=function(_0x46ae5f,_0x598b7d){_0x46ae5f=_0x46ae5f-0x0;var _0x145e4d=_0x6e18[_0x46ae5f];return _0x145e4d;};'use strict';var Sequelize=require(_0x86e1('0x0'));var moment=require(_0x86e1('0x1'));module[_0x86e1('0x2')]={'type':{'type':Sequelize[_0x86e1('0x3')](_0x86e1('0x4'),_0x86e1('0x5'))},'result':{'type':Sequelize[_0x86e1('0x6')]},'transfererchannel':{'type':Sequelize[_0x86e1('0x6')]},'transferercalleridnum':{'type':Sequelize[_0x86e1('0x6')]},'transferercalleridname':{'type':Sequelize[_0x86e1('0x6')]},'transfererconnectedlinenum':{'type':Sequelize[_0x86e1('0x6')]},'transfererconnectedlinename':{'type':Sequelize[_0x86e1('0x6')]},'transfereraccountcode':{'type':Sequelize[_0x86e1('0x6')]},'transferercontext':{'type':Sequelize[_0x86e1('0x6')]},'transfererexten':{'type':Sequelize[_0x86e1('0x6')]},'transfererlinkedid':{'type':Sequelize[_0x86e1('0x6')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0x86e1('0x6')]},'transfereeconnectedlinenum':{'type':Sequelize['STRING']},'transfereeconnectedlinename':{'type':Sequelize[_0x86e1('0x6')]},'transfereeaccountcode':{'type':Sequelize[_0x86e1('0x6')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize[_0x86e1('0x6')]},'transfereelinkedid':{'type':Sequelize[_0x86e1('0x6')]},'isexternal':{'type':Sequelize[_0x86e1('0x3')](_0x86e1('0x7'),'No')},'context':{'type':Sequelize[_0x86e1('0x6')]},'extension':{'type':Sequelize[_0x86e1('0x6')]}};
\ No newline at end of file
index dd7c654..b438a3d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9bd=['querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then','error','name','send','index','VoiceTransferReport','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','nolimit','sort','pick','filter','where','merge','map','type','VIRTUAL','include','rows','show','params','keys','length','includeAll','options','find','create','body','catch','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','squel','crypto'];(function(_0xa1e3e3,_0x29fe0e){var _0xc980e9=function(_0x1f5adc){while(--_0x1f5adc){_0xa1e3e3['push'](_0xa1e3e3['shift']());}};_0xc980e9(++_0x29fe0e);}(_0xc9bd,0x87));var _0xdc9b=function(_0xf0bc07,_0x510ebf){_0xf0bc07=_0xf0bc07-0x0;var _0x1c50c2=_0xc9bd[_0xf0bc07];return _0x1c50c2;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xdc9b('0x0'));var zipdir=require(_0xdc9b('0x1'));var jsonpatch=require(_0xdc9b('0x2'));var rp=require(_0xdc9b('0x3'));var moment=require(_0xdc9b('0x4'));var BPromise=require(_0xdc9b('0x5'));var Mustache=require(_0xdc9b('0x6'));var util=require(_0xdc9b('0x7'));var path=require('path');var sox=require(_0xdc9b('0x8'));var csv=require(_0xdc9b('0x9'));var ejs=require(_0xdc9b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xdc9b('0xb'));var crypto=require(_0xdc9b('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdc9b('0x9'));var querystring=require(_0xdc9b('0xd'));var Papa=require(_0xdc9b('0xe'));var Redis=require(_0xdc9b('0xf'));var authService=require(_0xdc9b('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xdc9b('0x11'));var logger=require(_0xdc9b('0x12'))('api');var utils=require(_0xdc9b('0x13'));var config=require(_0xdc9b('0x14'));var licenseUtil=require(_0xdc9b('0x15'));var db=require(_0xdc9b('0x16'))['db'];function respondWithStatusCode(_0x268ebd,_0x2d0a29){_0x2d0a29=_0x2d0a29||0xcc;return function(_0x580189){if(_0x580189){return _0x268ebd[_0xdc9b('0x17')](_0x2d0a29);}return _0x268ebd['status'](_0x2d0a29)[_0xdc9b('0x18')]();};}function respondWithResult(_0x2afed8,_0x520afc){_0x520afc=_0x520afc||0xc8;return function(_0x5006b8){if(_0x5006b8){return _0x2afed8['status'](_0x520afc)[_0xdc9b('0x19')](_0x5006b8);}};}function respondWithFilteredResult(_0x245fa5,_0x348cec){return function(_0x48e8ef){if(_0x48e8ef){var _0x28b7c4=typeof _0x348cec[_0xdc9b('0x1a')]===_0xdc9b('0x1b')&&typeof _0x348cec[_0xdc9b('0x1c')]===_0xdc9b('0x1b');var _0x58b6f0=_0x48e8ef['count'];var _0x5fea97=_0x28b7c4?0x0:_0x348cec[_0xdc9b('0x1a')];var _0x26d7e0=_0x28b7c4?_0x48e8ef[_0xdc9b('0x1d')]:_0x348cec['offset']+_0x348cec[_0xdc9b('0x1c')];var _0x3fe9f1;if(_0x26d7e0>=_0x58b6f0){_0x26d7e0=_0x58b6f0;_0x3fe9f1=0xc8;}else{_0x3fe9f1=0xce;}_0x245fa5[_0xdc9b('0x1e')](_0x3fe9f1);return _0x245fa5['set'](_0xdc9b('0x1f'),_0x5fea97+'-'+_0x26d7e0+'/'+_0x58b6f0)[_0xdc9b('0x19')](_0x48e8ef);}return null;};}function patchUpdates(_0x32ef81){return function(_0x58b70a){try{jsonpatch[_0xdc9b('0x20')](_0x58b70a,_0x32ef81,!![]);}catch(_0x12d7de){return BPromise[_0xdc9b('0x21')](_0x12d7de);}return _0x58b70a[_0xdc9b('0x22')]();};}function saveUpdates(_0x1c974d,_0x3ac8b3){return function(_0x305f2d){if(_0x305f2d){return _0x305f2d[_0xdc9b('0x23')](_0x1c974d)[_0xdc9b('0x24')](function(_0x3d073d){return _0x3d073d;});}return null;};}function removeEntity(_0x3472a4,_0x2e189f){return function(_0x583eae){if(_0x583eae){return _0x583eae['destroy']()[_0xdc9b('0x24')](function(){_0x3472a4[_0xdc9b('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x508559,_0x131219){return function(_0x32cd7d){if(!_0x32cd7d){_0x508559[_0xdc9b('0x17')](0x194);}return _0x32cd7d;};}function handleError(_0x42c0c8,_0x197a02){_0x197a02=_0x197a02||0x1f4;return function(_0x4fdd93){logger[_0xdc9b('0x25')](_0x4fdd93['stack']);if(_0x4fdd93['name']){delete _0x4fdd93[_0xdc9b('0x26')];}_0x42c0c8[_0xdc9b('0x1e')](_0x197a02)[_0xdc9b('0x27')](_0x4fdd93);};}exports[_0xdc9b('0x28')]=function(_0x1436d8,_0x2fd594){var _0x3cde36={},_0x5e0053={},_0x497d5c={'count':0x0,'rows':[]};var _0xab383b=_['map'](db[_0xdc9b('0x29')][_0xdc9b('0x2a')],function(_0x379ae7){return{'name':_0x379ae7[_0xdc9b('0x2b')],'type':_0x379ae7['type'][_0xdc9b('0x2c')]};});_0x5e0053[_0xdc9b('0x2d')]=_['map'](_0xab383b,_0xdc9b('0x26'));_0x5e0053[_0xdc9b('0x2e')]=_['keys'](_0x1436d8[_0xdc9b('0x2e')]);_0x5e0053[_0xdc9b('0x2f')]=_['intersection'](_0x5e0053[_0xdc9b('0x2d')],_0x5e0053[_0xdc9b('0x2e')]);_0x3cde36[_0xdc9b('0x30')]=_[_0xdc9b('0x31')](_0x5e0053[_0xdc9b('0x2d')],qs[_0xdc9b('0x32')](_0x1436d8[_0xdc9b('0x2e')][_0xdc9b('0x32')]));_0x3cde36[_0xdc9b('0x30')]=_0x3cde36['attributes']['length']?_0x3cde36[_0xdc9b('0x30')]:_0x5e0053[_0xdc9b('0x2d')];if(!_0x1436d8[_0xdc9b('0x2e')]['hasOwnProperty'](_0xdc9b('0x33'))){_0x3cde36[_0xdc9b('0x1c')]=qs[_0xdc9b('0x1c')](_0x1436d8[_0xdc9b('0x2e')][_0xdc9b('0x1c')]);_0x3cde36[_0xdc9b('0x1a')]=qs['offset'](_0x1436d8[_0xdc9b('0x2e')][_0xdc9b('0x1a')]);}_0x3cde36['order']=qs['sort'](_0x1436d8['query'][_0xdc9b('0x34')]);_0x3cde36['where']=qs[_0xdc9b('0x2f')](_[_0xdc9b('0x35')](_0x1436d8[_0xdc9b('0x2e')],_0x5e0053['filters']),_0xab383b);if(_0x1436d8[_0xdc9b('0x2e')][_0xdc9b('0x36')]){_0x3cde36[_0xdc9b('0x37')]=_[_0xdc9b('0x38')](_0x3cde36['where'],{'$or':_[_0xdc9b('0x39')](_0xab383b,function(_0x20743f){if(_0x20743f[_0xdc9b('0x3a')]!==_0xdc9b('0x3b')){var _0xae90fc={};_0xae90fc[_0x20743f[_0xdc9b('0x26')]]={'$like':'%'+_0x1436d8[_0xdc9b('0x2e')][_0xdc9b('0x36')]+'%'};return _0xae90fc;}})});}_0x3cde36=_[_0xdc9b('0x38')]({},_0x3cde36,_0x1436d8['options']);var _0x32fd70={'where':_0x3cde36[_0xdc9b('0x37')]};return db['VoiceTransferReport']['count'](_0x32fd70)[_0xdc9b('0x24')](function(_0x3f92ed){_0x497d5c[_0xdc9b('0x1d')]=_0x3f92ed;if(_0x1436d8['query']['includeAll']){_0x3cde36[_0xdc9b('0x3c')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0x3cde36);})[_0xdc9b('0x24')](function(_0x8eb711){_0x497d5c[_0xdc9b('0x3d')]=_0x8eb711;return _0x497d5c;})[_0xdc9b('0x24')](respondWithFilteredResult(_0x2fd594,_0x3cde36))['catch'](handleError(_0x2fd594,null));};exports[_0xdc9b('0x3e')]=function(_0x4758b5,_0xfe7db2){var _0x3d92cc={'raw':!![],'where':{'id':_0x4758b5[_0xdc9b('0x3f')]['id']}},_0x1e7e0f={};_0x1e7e0f['model']=_[_0xdc9b('0x40')](db[_0xdc9b('0x29')]['rawAttributes']);_0x1e7e0f[_0xdc9b('0x2e')]=_[_0xdc9b('0x40')](_0x4758b5[_0xdc9b('0x2e')]);_0x1e7e0f[_0xdc9b('0x2f')]=_['intersection'](_0x1e7e0f[_0xdc9b('0x2d')],_0x1e7e0f[_0xdc9b('0x2e')]);_0x3d92cc[_0xdc9b('0x30')]=_[_0xdc9b('0x31')](_0x1e7e0f[_0xdc9b('0x2d')],qs[_0xdc9b('0x32')](_0x4758b5['query']['fields']));_0x3d92cc['attributes']=_0x3d92cc[_0xdc9b('0x30')][_0xdc9b('0x41')]?_0x3d92cc[_0xdc9b('0x30')]:_0x1e7e0f[_0xdc9b('0x2d')];if(_0x4758b5[_0xdc9b('0x2e')][_0xdc9b('0x42')]){_0x3d92cc[_0xdc9b('0x3c')]=[{'all':!![]}];}_0x3d92cc=_['merge']({},_0x3d92cc,_0x4758b5[_0xdc9b('0x43')]);return db['VoiceTransferReport'][_0xdc9b('0x44')](_0x3d92cc)['then'](handleEntityNotFound(_0xfe7db2,null))['then'](respondWithResult(_0xfe7db2,null))['catch'](handleError(_0xfe7db2,null));};exports[_0xdc9b('0x45')]=function(_0x431332,_0x48bf7f){return db[_0xdc9b('0x29')]['create'](_0x431332[_0xdc9b('0x46')],{})[_0xdc9b('0x24')](respondWithResult(_0x48bf7f,0xc9))[_0xdc9b('0x47')](handleError(_0x48bf7f,null));};exports[_0xdc9b('0x23')]=function(_0x10e39a,_0x5ceb10){if(_0x10e39a[_0xdc9b('0x46')]['id']){delete _0x10e39a['body']['id'];}return db['VoiceTransferReport'][_0xdc9b('0x44')]({'where':{'id':_0x10e39a['params']['id']}})[_0xdc9b('0x24')](handleEntityNotFound(_0x5ceb10,null))[_0xdc9b('0x24')](saveUpdates(_0x10e39a['body'],null))[_0xdc9b('0x24')](respondWithResult(_0x5ceb10,null))[_0xdc9b('0x47')](handleError(_0x5ceb10,null));};exports[_0xdc9b('0x48')]=function(_0x227f5c,_0x622967){return db[_0xdc9b('0x29')]['find']({'where':{'id':_0x227f5c['params']['id']}})['then'](handleEntityNotFound(_0x622967,null))[_0xdc9b('0x24')](removeEntity(_0x622967,null))[_0xdc9b('0x47')](handleError(_0x622967,null));};exports[_0xdc9b('0x49')]=function(_0x1760f8,_0x573e93){return db['VoiceTransferReport'][_0xdc9b('0x49')]()[_0xdc9b('0x24')](respondWithResult(_0x573e93,null))[_0xdc9b('0x47')](handleError(_0x573e93,null));};
\ No newline at end of file
+var _0xce1b=['limit','set','Content-Range','apply','reject','save','update','then','destroy','error','name','index','map','VoiceTransferReport','rawAttributes','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','params','includeAll','find','create','body','eml-format','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset'];(function(_0x38ca2d,_0x32240f){var _0x3d8356=function(_0x14abb9){while(--_0x14abb9){_0x38ca2d['push'](_0x38ca2d['shift']());}};_0x3d8356(++_0x32240f);}(_0xce1b,0x6b));var _0xbce1=function(_0x5ac1ed,_0x11f3b8){_0x5ac1ed=_0x5ac1ed-0x0;var _0x1bb1c1=_0xce1b[_0x5ac1ed];return _0x1bb1c1;};'use strict';var emlformat=require(_0xbce1('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xbce1('0x1'));var moment=require(_0xbce1('0x2'));var BPromise=require(_0xbce1('0x3'));var Mustache=require(_0xbce1('0x4'));var util=require('util');var path=require(_0xbce1('0x5'));var sox=require('sox');var csv=require(_0xbce1('0x6'));var ejs=require(_0xbce1('0x7'));var fs=require('fs');var fs_extra=require(_0xbce1('0x8'));var _=require('lodash');var squel=require(_0xbce1('0x9'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xbce1('0xa'));var toCsv=require(_0xbce1('0x6'));var querystring=require(_0xbce1('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xbce1('0xc'));var qs=require(_0xbce1('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbce1('0xe'))('api');var utils=require(_0xbce1('0xf'));var config=require(_0xbce1('0x10'));var licenseUtil=require(_0xbce1('0x11'));var db=require(_0xbce1('0x12'))['db'];function respondWithStatusCode(_0x13798a,_0x4af9de){_0x4af9de=_0x4af9de||0xcc;return function(_0x3ae99e){if(_0x3ae99e){return _0x13798a[_0xbce1('0x13')](_0x4af9de);}return _0x13798a[_0xbce1('0x14')](_0x4af9de)[_0xbce1('0x15')]();};}function respondWithResult(_0x10c709,_0x205b7e){_0x205b7e=_0x205b7e||0xc8;return function(_0x3b338e){if(_0x3b338e){return _0x10c709[_0xbce1('0x14')](_0x205b7e)[_0xbce1('0x16')](_0x3b338e);}};}function respondWithFilteredResult(_0x13e5c4,_0x40fa4d){return function(_0x3b8153){if(_0x3b8153){var _0x130910=typeof _0x40fa4d['offset']==='undefined'&&typeof _0x40fa4d['limit']==='undefined';var _0x37d417=_0x3b8153[_0xbce1('0x17')];var _0x315edf=_0x130910?0x0:_0x40fa4d[_0xbce1('0x18')];var _0x2cbe86=_0x130910?_0x3b8153[_0xbce1('0x17')]:_0x40fa4d[_0xbce1('0x18')]+_0x40fa4d[_0xbce1('0x19')];var _0x32ea86;if(_0x2cbe86>=_0x37d417){_0x2cbe86=_0x37d417;_0x32ea86=0xc8;}else{_0x32ea86=0xce;}_0x13e5c4[_0xbce1('0x14')](_0x32ea86);return _0x13e5c4[_0xbce1('0x1a')](_0xbce1('0x1b'),_0x315edf+'-'+_0x2cbe86+'/'+_0x37d417)['json'](_0x3b8153);}return null;};}function patchUpdates(_0x44c630){return function(_0x2c6f33){try{jsonpatch[_0xbce1('0x1c')](_0x2c6f33,_0x44c630,!![]);}catch(_0x563af6){return BPromise[_0xbce1('0x1d')](_0x563af6);}return _0x2c6f33[_0xbce1('0x1e')]();};}function saveUpdates(_0x209518,_0x23e93a){return function(_0x2f69cd){if(_0x2f69cd){return _0x2f69cd[_0xbce1('0x1f')](_0x209518)[_0xbce1('0x20')](function(_0x5ad076){return _0x5ad076;});}return null;};}function removeEntity(_0x2cac11,_0x5da49c){return function(_0x39d10b){if(_0x39d10b){return _0x39d10b[_0xbce1('0x21')]()[_0xbce1('0x20')](function(){_0x2cac11[_0xbce1('0x14')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2bea2b,_0xdd8c76){return function(_0xfd6a20){if(!_0xfd6a20){_0x2bea2b[_0xbce1('0x13')](0x194);}return _0xfd6a20;};}function handleError(_0x31edc9,_0x34ecf7){_0x34ecf7=_0x34ecf7||0x1f4;return function(_0x32824d){logger[_0xbce1('0x22')](_0x32824d['stack']);if(_0x32824d[_0xbce1('0x23')]){delete _0x32824d[_0xbce1('0x23')];}_0x31edc9[_0xbce1('0x14')](_0x34ecf7)['send'](_0x32824d);};}exports[_0xbce1('0x24')]=function(_0x2e05d4,_0xfad389){var _0xb81694={},_0xefe45f={},_0x580f7c={'count':0x0,'rows':[]};var _0xb5322a=_[_0xbce1('0x25')](db[_0xbce1('0x26')][_0xbce1('0x27')],function(_0x4c4ceb){return{'name':_0x4c4ceb['fieldName'],'type':_0x4c4ceb[_0xbce1('0x28')][_0xbce1('0x29')]};});_0xefe45f[_0xbce1('0x2a')]=_['map'](_0xb5322a,_0xbce1('0x23'));_0xefe45f['query']=_[_0xbce1('0x2b')](_0x2e05d4[_0xbce1('0x2c')]);_0xefe45f[_0xbce1('0x2d')]=_[_0xbce1('0x2e')](_0xefe45f['model'],_0xefe45f[_0xbce1('0x2c')]);_0xb81694[_0xbce1('0x2f')]=_[_0xbce1('0x2e')](_0xefe45f[_0xbce1('0x2a')],qs[_0xbce1('0x30')](_0x2e05d4[_0xbce1('0x2c')]['fields']));_0xb81694[_0xbce1('0x2f')]=_0xb81694[_0xbce1('0x2f')][_0xbce1('0x31')]?_0xb81694['attributes']:_0xefe45f['model'];if(!_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x32')]('nolimit')){_0xb81694[_0xbce1('0x19')]=qs[_0xbce1('0x19')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x19')]);_0xb81694[_0xbce1('0x18')]=qs[_0xbce1('0x18')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x18')]);}_0xb81694['order']=qs[_0xbce1('0x33')](_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x33')]);_0xb81694[_0xbce1('0x34')]=qs[_0xbce1('0x2d')](_[_0xbce1('0x35')](_0x2e05d4[_0xbce1('0x2c')],_0xefe45f[_0xbce1('0x2d')]),_0xb5322a);if(_0x2e05d4[_0xbce1('0x2c')][_0xbce1('0x36')]){_0xb81694[_0xbce1('0x34')]=_[_0xbce1('0x37')](_0xb81694[_0xbce1('0x34')],{'$or':_[_0xbce1('0x25')](_0xb5322a,function(_0x488934){if(_0x488934[_0xbce1('0x28')]!==_0xbce1('0x38')){var _0x952c05={};_0x952c05[_0x488934[_0xbce1('0x23')]]={'$like':'%'+_0x2e05d4['query'][_0xbce1('0x36')]+'%'};return _0x952c05;}})});}_0xb81694=_['merge']({},_0xb81694,_0x2e05d4[_0xbce1('0x39')]);var _0x512d02={'where':_0xb81694[_0xbce1('0x34')]};return db[_0xbce1('0x26')][_0xbce1('0x17')](_0x512d02)[_0xbce1('0x20')](function(_0x374663){_0x580f7c[_0xbce1('0x17')]=_0x374663;if(_0x2e05d4[_0xbce1('0x2c')]['includeAll']){_0xb81694[_0xbce1('0x3a')]=[{'all':!![]}];}return db['VoiceTransferReport']['findAll'](_0xb81694);})[_0xbce1('0x20')](function(_0x2c946f){_0x580f7c[_0xbce1('0x3b')]=_0x2c946f;return _0x580f7c;})[_0xbce1('0x20')](respondWithFilteredResult(_0xfad389,_0xb81694))[_0xbce1('0x3c')](handleError(_0xfad389,null));};exports['show']=function(_0x44db03,_0x17e360){var _0x385a5f={'raw':!![],'where':{'id':_0x44db03[_0xbce1('0x3d')]['id']}},_0x1f6dfe={};_0x1f6dfe[_0xbce1('0x2a')]=_['keys'](db[_0xbce1('0x26')]['rawAttributes']);_0x1f6dfe[_0xbce1('0x2c')]=_[_0xbce1('0x2b')](_0x44db03[_0xbce1('0x2c')]);_0x1f6dfe[_0xbce1('0x2d')]=_[_0xbce1('0x2e')](_0x1f6dfe['model'],_0x1f6dfe[_0xbce1('0x2c')]);_0x385a5f['attributes']=_[_0xbce1('0x2e')](_0x1f6dfe[_0xbce1('0x2a')],qs['fields'](_0x44db03['query'][_0xbce1('0x30')]));_0x385a5f[_0xbce1('0x2f')]=_0x385a5f[_0xbce1('0x2f')][_0xbce1('0x31')]?_0x385a5f['attributes']:_0x1f6dfe[_0xbce1('0x2a')];if(_0x44db03[_0xbce1('0x2c')][_0xbce1('0x3e')]){_0x385a5f[_0xbce1('0x3a')]=[{'all':!![]}];}_0x385a5f=_[_0xbce1('0x37')]({},_0x385a5f,_0x44db03[_0xbce1('0x39')]);return db[_0xbce1('0x26')][_0xbce1('0x3f')](_0x385a5f)[_0xbce1('0x20')](handleEntityNotFound(_0x17e360,null))['then'](respondWithResult(_0x17e360,null))[_0xbce1('0x3c')](handleError(_0x17e360,null));};exports['create']=function(_0x5b4b29,_0x58baa7){return db['VoiceTransferReport'][_0xbce1('0x40')](_0x5b4b29[_0xbce1('0x41')],{})[_0xbce1('0x20')](respondWithResult(_0x58baa7,0xc9))[_0xbce1('0x3c')](handleError(_0x58baa7,null));};exports[_0xbce1('0x1f')]=function(_0x32c16c,_0x2419ed){if(_0x32c16c[_0xbce1('0x41')]['id']){delete _0x32c16c[_0xbce1('0x41')]['id'];}return db[_0xbce1('0x26')][_0xbce1('0x3f')]({'where':{'id':_0x32c16c[_0xbce1('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2419ed,null))[_0xbce1('0x20')](saveUpdates(_0x32c16c['body'],null))['then'](respondWithResult(_0x2419ed,null))[_0xbce1('0x3c')](handleError(_0x2419ed,null));};exports[_0xbce1('0x21')]=function(_0x186b22,_0xe09fa9){return db[_0xbce1('0x26')][_0xbce1('0x3f')]({'where':{'id':_0x186b22[_0xbce1('0x3d')]['id']}})[_0xbce1('0x20')](handleEntityNotFound(_0xe09fa9,null))[_0xbce1('0x20')](removeEntity(_0xe09fa9,null))[_0xbce1('0x3c')](handleError(_0xe09fa9,null));};exports['describe']=function(_0x510ab7,_0x497845){return db[_0xbce1('0x26')]['describe']()[_0xbce1('0x20')](respondWithResult(_0x497845,null))['catch'](handleError(_0x497845,null));};
\ No newline at end of file
index 41e789e..f94777f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5eac=['moment','request-promise','rimraf','../../config/environment','exports','define','VoiceTransferReport','report_call_transfer','util','../../config/logger'];(function(_0x19e574,_0x25d02f){var _0x22b768=function(_0x36b103){while(--_0x36b103){_0x19e574['push'](_0x19e574['shift']());}};_0x22b768(++_0x25d02f);}(_0x5eac,0x198));var _0xc5ea=function(_0x5baa19,_0x3d2cd1){_0x5baa19=_0x5baa19-0x0;var _0x2a1020=_0x5eac[_0x5baa19];return _0x2a1020;};'use strict';var _=require('lodash');var util=require(_0xc5ea('0x0'));var logger=require(_0xc5ea('0x1'))('api');var moment=require(_0xc5ea('0x2'));var BPromise=require('bluebird');var rp=require(_0xc5ea('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc5ea('0x4'));var config=require(_0xc5ea('0x5'));var attributes=require('./voiceTransferReport.attributes');module[_0xc5ea('0x6')]=function(_0x235bab,_0x13cfd8){return _0x235bab[_0xc5ea('0x7')](_0xc5ea('0x8'),attributes,{'tableName':_0xc5ea('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9531=['moment','bluebird','request-promise','rimraf','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','../../config/logger'];(function(_0x1e39d4,_0x56422c){var _0x2ab307=function(_0x41b78c){while(--_0x41b78c){_0x1e39d4['push'](_0x1e39d4['shift']());}};_0x2ab307(++_0x56422c);}(_0x9531,0x15d));var _0x1953=function(_0x27cd93,_0x3a5e81){_0x27cd93=_0x27cd93-0x0;var _0x4bb34c=_0x9531[_0x27cd93];return _0x4bb34c;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x1953('0x0'))('api');var moment=require(_0x1953('0x1'));var BPromise=require(_0x1953('0x2'));var rp=require(_0x1953('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x1953('0x4'));var config=require('../../config/environment');var attributes=require(_0x1953('0x5'));module[_0x1953('0x6')]=function(_0x1d8867,_0x31b66e){return _0x1d8867[_0x1953('0x7')](_0x1953('0x8'),attributes,{'tableName':_0x1953('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fd997fb..c533cf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0246=['jayson/promise','client','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','error','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','stringify','util','moment','bluebird','ioredis','../../config/environment'];(function(_0x1d81c2,_0x7a8e60){var _0x11d059=function(_0x5511b0){while(--_0x5511b0){_0x1d81c2['push'](_0x1d81c2['shift']());}};_0x11d059(++_0x7a8e60);}(_0x0246,0x1de));var _0x6024=function(_0x36301c,_0x44d88e){_0x36301c=_0x36301c-0x0;var _0xadef0d=_0x0246[_0x36301c];return _0xadef0d;};'use strict';var _=require('lodash');var util=require(_0x6024('0x0'));var moment=require(_0x6024('0x1'));var BPromise=require(_0x6024('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6024('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x6024('0x4'));var jayson=require(_0x6024('0x5'));var client=jayson[_0x6024('0x6')][_0x6024('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1d3256,_0x101c95,_0x479d7c){return new BPromise(function(_0x30e29f,_0x15d207){return client[_0x6024('0x8')](_0x1d3256,_0x479d7c)[_0x6024('0x9')](function(_0x370a7b){logger[_0x6024('0xa')](_0x6024('0xb'),_0x101c95,_0x6024('0xc'));logger['debug']('VoiceTransferReport,\x20%s,\x20%s,\x20%s',_0x101c95,_0x6024('0xc'),JSON['stringify'](_0x370a7b));if(_0x370a7b[_0x6024('0xd')]){if(_0x370a7b[_0x6024('0xd')]['code']===0x1f4){logger[_0x6024('0xd')](_0x6024('0xb'),_0x101c95,_0x370a7b['error']['message']);return _0x15d207(_0x370a7b[_0x6024('0xd')][_0x6024('0xe')]);}logger['error'](_0x6024('0xb'),_0x101c95,_0x370a7b[_0x6024('0xd')][_0x6024('0xe')]);return _0x30e29f(_0x370a7b[_0x6024('0xd')]['message']);}else{logger[_0x6024('0xa')](_0x6024('0xb'),_0x101c95,'request\x20sent');_0x30e29f(_0x370a7b[_0x6024('0xf')][_0x6024('0xe')]);}})[_0x6024('0x10')](function(_0x1b030f){logger[_0x6024('0xd')](_0x6024('0xb'),_0x101c95,_0x1b030f);_0x15d207(_0x1b030f);});});}exports[_0x6024('0x11')]=function(_0x5f4938){var _0x181419=this;return new Promise(function(_0x4aaf70,_0x4b1390){return db[_0x6024('0x12')][_0x6024('0x13')](_0x5f4938[_0x6024('0x14')],{'raw':_0x5f4938[_0x6024('0x15')]?_0x5f4938['options']['raw']===undefined?!![]:![]:!![]})['then'](function(_0x4bdf67){logger[_0x6024('0xa')](_0x6024('0x11'),_0x5f4938);logger['debug'](_0x6024('0x11'),_0x5f4938,JSON[_0x6024('0x16')](_0x4bdf67));_0x4aaf70(_0x4bdf67);})[_0x6024('0x10')](function(_0x2ea671){logger[_0x6024('0xd')](_0x6024('0x11'),_0x2ea671['message'],_0x5f4938);_0x4b1390(_0x181419[_0x6024('0xd')](0x1f4,_0x2ea671[_0x6024('0xe')]));});});};
\ No newline at end of file
+var _0xb936=['client','http','request','then','info','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','VoiceTransferReport,\x20%s,\x20%s','message','result','catch','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xb936,0xa5));var _0x6b93=function(_0x476dd2,_0x485c07){_0x476dd2=_0x476dd2-0x0;var _0x1b5f46=_0xb936[_0x476dd2];return _0x1b5f46;};'use strict';var _=require('lodash');var util=require(_0x6b93('0x0'));var moment=require(_0x6b93('0x1'));var BPromise=require(_0x6b93('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6b93('0x3'));var db=require(_0x6b93('0x4'))['db'];var utils=require(_0x6b93('0x5'));var logger=require(_0x6b93('0x6'))('rpc');var config=require(_0x6b93('0x7'));var jayson=require(_0x6b93('0x8'));var client=jayson[_0x6b93('0x9')][_0x6b93('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xdada9b,_0x22bc74,_0x2e9249){return new BPromise(function(_0x42bbcb,_0xa055a){return client[_0x6b93('0xb')](_0xdada9b,_0x2e9249)[_0x6b93('0xc')](function(_0x9b714e){logger[_0x6b93('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x22bc74,_0x6b93('0xe'));logger[_0x6b93('0xf')](_0x6b93('0x10'),_0x22bc74,_0x6b93('0xe'),JSON[_0x6b93('0x11')](_0x9b714e));if(_0x9b714e[_0x6b93('0x12')]){if(_0x9b714e[_0x6b93('0x12')][_0x6b93('0x13')]===0x1f4){logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x9b714e[_0x6b93('0x12')][_0x6b93('0x15')]);return _0xa055a(_0x9b714e[_0x6b93('0x12')]['message']);}logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x9b714e[_0x6b93('0x12')]['message']);return _0x42bbcb(_0x9b714e[_0x6b93('0x12')][_0x6b93('0x15')]);}else{logger[_0x6b93('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x22bc74,_0x6b93('0xe'));_0x42bbcb(_0x9b714e[_0x6b93('0x16')][_0x6b93('0x15')]);}})[_0x6b93('0x17')](function(_0x3d1bfc){logger[_0x6b93('0x12')](_0x6b93('0x14'),_0x22bc74,_0x3d1bfc);_0xa055a(_0x3d1bfc);});});}exports[_0x6b93('0x18')]=function(_0x293728){var _0x1f74a4=this;return new Promise(function(_0x4b5d59,_0x1599bc){return db[_0x6b93('0x19')][_0x6b93('0x1a')](_0x293728['body'],{'raw':_0x293728[_0x6b93('0x1b')]?_0x293728[_0x6b93('0x1b')][_0x6b93('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x51eb2f){logger[_0x6b93('0xd')](_0x6b93('0x18'),_0x293728);logger[_0x6b93('0xf')](_0x6b93('0x18'),_0x293728,JSON[_0x6b93('0x11')](_0x51eb2f));_0x4b5d59(_0x51eb2f);})['catch'](function(_0x24688f){logger[_0x6b93('0x12')](_0x6b93('0x18'),_0x24688f[_0x6b93('0x15')],_0x293728);_0x1599bc(_0x1f74a4[_0x6b93('0x12')](0x1f4,_0x24688f['message']));});});};
\ No newline at end of file
index f110859..000a1a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['/unhold','unhold','/calls','calls','/transfer','transfer','exports','express','Router','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','isAuthenticated','hangup','/answer','answer'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x1bbc08,_0x444008){_0x1bbc08=_0x1bbc08-0x0;var _0x5d825b=_0xf3cd[_0x1bbc08];return _0x5d825b;};'use strict';var express=require(_0xdf3c('0x0'));var router=express[_0xdf3c('0x1')]();var auth=require(_0xdf3c('0x2'));var controller=require(_0xdf3c('0x3'));router[_0xdf3c('0x4')](_0xdf3c('0x5'),auth['isAuthenticated'](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x7')]);router[_0xdf3c('0x4')]('/hangup',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0x9')]);router[_0xdf3c('0x4')](_0xdf3c('0xa'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xb')]);router['post']('/hold',auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller['hold']);router[_0xdf3c('0x4')](_0xdf3c('0xc'),auth[_0xdf3c('0x8')](),auth[_0xdf3c('0x6')](),controller[_0xdf3c('0xd')]);router[_0xdf3c('0x4')](_0xdf3c('0xe'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0xf')]);router[_0xdf3c('0x4')](_0xdf3c('0x10'),auth[_0xdf3c('0x8')](),auth['isWebrtcLicence'](),controller[_0xdf3c('0x11')]);module[_0xdf3c('0x12')]=router;
\ No newline at end of file
+var _0x5b02=['Router','../../components/auth/service','./webbar.controller','isAuthenticated','originate','post','/hangup','isWebrtcLicence','/answer','/hold','/unhold','unhold','/calls','calls','/transfer','transfer','exports','express'];(function(_0x10ad9a,_0x31ed2c){var _0x2f7257=function(_0x1e9e10){while(--_0x1e9e10){_0x10ad9a['push'](_0x10ad9a['shift']());}};_0x2f7257(++_0x31ed2c);}(_0x5b02,0xe9));var _0x25b0=function(_0xdbd224,_0x3ed10d){_0xdbd224=_0xdbd224-0x0;var _0x43669c=_0x5b02[_0xdbd224];return _0x43669c;};'use strict';var express=require(_0x25b0('0x0'));var router=express[_0x25b0('0x1')]();var auth=require(_0x25b0('0x2'));var controller=require(_0x25b0('0x3'));router['post']('/originate',auth[_0x25b0('0x4')](),auth['isWebrtcLicence'](),controller[_0x25b0('0x5')]);router[_0x25b0('0x6')](_0x25b0('0x7'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hangup']);router[_0x25b0('0x6')](_0x25b0('0x9'),auth['isAuthenticated'](),auth[_0x25b0('0x8')](),controller['answer']);router['post'](_0x25b0('0xa'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller['hold']);router[_0x25b0('0x6')](_0x25b0('0xb'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xc')]);router[_0x25b0('0x6')](_0x25b0('0xd'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0xe')]);router[_0x25b0('0x6')](_0x25b0('0xf'),auth[_0x25b0('0x4')](),auth[_0x25b0('0x8')](),controller[_0x25b0('0x10')]);module[_0x25b0('0x11')]=router;
\ No newline at end of file
index e612149..f94d262 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['findOne','VoiceChannels','all','rows','UserId','sessionId','sessionId\x20','originate','originate\x20fired:','body','length','json','userId','callNumber','callerId','callbackUrl','format','user:%s','webbar:originate','originate\x20executed!','hangup','hangup\x20fired:','entityFound:','hangup\x20executed!','answer','answer\x20fired:','validate','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls\x20fired:','filter','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transferNumber','webbar:transfer','../../mysqldb','../../config/environment','util','bluebird','client','http','webbarapi','ioredis','defaults','redis','socket.io-emitter','number','callNumber\x20is\x20required','string','userId\x20is\x20required','transferNumber\x20is\x20required','info','stringify','emit','error','stack','name','status','send','NotFound','request','then','message','result','catch','User'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x3a6e4b,_0x118cd9){_0x3a6e4b=_0x3a6e4b-0x0;var _0x36572d=_0xcb91[_0x3a6e4b];return _0x36572d;};'use strict';var path=require('path');var fs=require('fs');var _=require('lodash');var db=require(_0x1cb9('0x0'))['db'];var config=require(_0x1cb9('0x1'));var util=require(_0x1cb9('0x2'));var BPromise=require(_0x1cb9('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x1cb9('0x4')][_0x1cb9('0x5')]({'port':0x232a});var logger=require('../../config/logger')(_0x1cb9('0x6'));var Redis=require(_0x1cb9('0x7'));config['redis']=_[_0x1cb9('0x8')](config[_0x1cb9('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x1cb9('0xa'))(new Redis(config[_0x1cb9('0x9')]));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],'userId\x20is\x20required']},'callNumber':{'type':'string','required':[!![],_0x1cb9('0xc')]},'callerId':{'type':_0x1cb9('0xd')},'callbackUrl':{'type':_0x1cb9('0xd')}});var hangupValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],_0x1cb9('0xe')]},'sessionId':{'type':'string','required':![]}});var answerValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],_0x1cb9('0xe')]},'sessionId':{'type':_0x1cb9('0xd'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],_0x1cb9('0xe')]},'sessionId':{'type':'string','required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':'string','required':[!![],_0x1cb9('0xf')]}});var holdValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],_0x1cb9('0xe')]},'sessionId':{'type':_0x1cb9('0xd'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x1cb9('0xe')]},'sessionId':{'type':_0x1cb9('0xd'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],_0x1cb9('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x1cb9('0xb'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x5572cb,_0xd446a3,_0x3cc765){logger[_0x1cb9('0x10')](_0x5572cb,_0xd446a3,JSON[_0x1cb9('0x11')](_0x3cc765));io['to'](_0x5572cb)[_0x1cb9('0x12')](_0xd446a3,_0x3cc765);}function handleError(_0xf22920){return function(_0x23d3a9){console['log']('handleError:',_0x23d3a9,_0x23d3a9 instanceof RangeError);logger[_0x1cb9('0x13')](_0x23d3a9[_0x1cb9('0x14')]);if(_0x23d3a9 instanceof RangeError){if(_0x23d3a9[_0x1cb9('0x15')]){delete _0x23d3a9[_0x1cb9('0x15')];}_0xf22920[_0x1cb9('0x16')](0x194)[_0x1cb9('0x17')](_0x23d3a9);}else{if(_0x23d3a9[_0x1cb9('0x15')]){delete _0x23d3a9['name'];}_0xf22920['status'](0x1f4)[_0x1cb9('0x17')](_0x23d3a9);}};}function checkError(){return function(_0x5dbfae){if(!_0x5dbfae){throw new RangeError(_0x1cb9('0x18'));}return _0x5dbfae;};}function respondWithRpcPromise(_0x2265ea,_0x523b26){return new BPromise(function(_0x599275,_0x2e3854){var _0x325637=amiClient;return _0x325637[_0x1cb9('0x19')](_0x2265ea,_0x523b26)[_0x1cb9('0x1a')](function(_0x45b8d3){if(_0x45b8d3[_0x1cb9('0x13')]){if(_0x45b8d3['error']['code']===0x1f4){return _0x2e3854(_0x45b8d3[_0x1cb9('0x13')]['message']);}return _0x599275(_0x45b8d3[_0x1cb9('0x13')][_0x1cb9('0x1b')]);}else{_0x599275(_0x45b8d3[_0x1cb9('0x1c')]);}})[_0x1cb9('0x1d')](function(_0x43a100){_0x2e3854(_0x43a100);});});}function getAgent(_0x53f9fa){return db[_0x1cb9('0x1e')][_0x1cb9('0x1f')]({'where':{'id':_0x53f9fa,'role':'agent'}})[_0x1cb9('0x1a')](checkError());}function getAgentCheckSession(_0x21effa,_0x41a9a0){return new BPromise(function(_0x1804fd,_0x406821){var _0x21d6f5=respondWithRpcPromise(_0x1cb9('0x20'));var _0xb644b3=getAgent(_0x21effa);Promise[_0x1cb9('0x21')]([_0x21d6f5,_0xb644b3])[_0x1cb9('0x1a')](function(_0x48888d){var _0x405a2f=_0x48888d[0x0];var _0x536635=_0x48888d[0x1];var _0x110282=_['filter'](_0x405a2f[_0x1cb9('0x22')],function(_0x41011c){return _0x41011c[_0x1cb9('0x23')]==_0x536635['id']&&_0x41011c[_0x1cb9('0x24')]==_0x41a9a0;});if(_0x110282['length']==0x1){_0x1804fd(_0x536635);}else{_0x406821(new RangeError(_0x1cb9('0x25')+_0x41a9a0+'\x20not\x20found!'));}});});}exports[_0x1cb9('0x26')]=function(_0x336a98,_0x4220d7){logger['info'](_0x1cb9('0x27'),_0x336a98['body']);var _0x3a3543=originateValidation['validate'](_0x336a98[_0x1cb9('0x28')]);if(_0x3a3543[_0x1cb9('0x29')]>0x0){return _0x4220d7[_0x1cb9('0x16')](0x190)[_0x1cb9('0x2a')](_0x3a3543);}var _0x56c3e0=_0x336a98[_0x1cb9('0x28')][_0x1cb9('0x2b')];var _0x3467d5=_0x336a98[_0x1cb9('0x28')][_0x1cb9('0x2c')];var _0x2794fa=_0x336a98[_0x1cb9('0x28')][_0x1cb9('0x2d')];var _0x386e8b=_0x336a98[_0x1cb9('0x28')][_0x1cb9('0x2e')];return getAgent(_0x56c3e0)[_0x1cb9('0x1a')](function(_0x29f149){logger['info']('entityFound:',_0x29f149[_0x1cb9('0x15')]);emit(util[_0x1cb9('0x2f')](_0x1cb9('0x30'),_0x29f149[_0x1cb9('0x15')]),_0x1cb9('0x31'),{'callNumber':_0x3467d5,'callerId':_0x2794fa,'callbackUrl':_0x386e8b});return _0x4220d7[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'error':![],'message':_0x1cb9('0x32')});})['catch'](handleError(_0x4220d7));};exports[_0x1cb9('0x33')]=function(_0x1482c4,_0xefe136){logger['info'](_0x1cb9('0x34'),_0x1482c4['body']);var _0x313e34=hangupValidation['validate'](_0x1482c4[_0x1cb9('0x28')]);if(_0x313e34[_0x1cb9('0x29')]>0x0){return _0xefe136[_0x1cb9('0x16')](0x190)[_0x1cb9('0x2a')](_0x313e34);}var _0x34ada2=_0x1482c4[_0x1cb9('0x28')][_0x1cb9('0x2b')];var _0x4a4788=_0x1482c4['body'][_0x1cb9('0x24')];return getAgent(_0x34ada2)[_0x1cb9('0x1a')](function(_0x7a0d8b){logger[_0x1cb9('0x10')](_0x1cb9('0x35'),_0x7a0d8b[_0x1cb9('0x15')]);emit(util[_0x1cb9('0x2f')]('user:%s',_0x7a0d8b[_0x1cb9('0x15')]),'webbar:hangup',{'sessionId':_0x4a4788});return _0xefe136['status'](0xc8)['json']({'error':![],'message':_0x1cb9('0x36')});})[_0x1cb9('0x1d')](handleError(_0xefe136));};exports[_0x1cb9('0x37')]=function(_0x2e3cf3,_0x2817e9){logger['info'](_0x1cb9('0x38'),_0x2e3cf3['body']);var _0x91121=answerValidation[_0x1cb9('0x39')](_0x2e3cf3[_0x1cb9('0x28')]);if(_0x91121['length']>0x0){return _0x2817e9[_0x1cb9('0x16')](0x190)['json'](_0x91121);}var _0xda1a44=_0x2e3cf3[_0x1cb9('0x28')]['userId'];var _0x5839aa=_0x2e3cf3[_0x1cb9('0x28')][_0x1cb9('0x24')];return getAgent(_0xda1a44)[_0x1cb9('0x1a')](function(_0x162712){logger[_0x1cb9('0x10')]('entityFound:',_0x162712[_0x1cb9('0x15')]);emit(util['format']('user:%s',_0x162712['name']),_0x1cb9('0x3a'),{'sessionId':_0x5839aa});return _0x2817e9[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'error':![],'message':_0x1cb9('0x3b')});})[_0x1cb9('0x1d')](handleError(_0x2817e9));};exports[_0x1cb9('0x3c')]=function(_0x40ca68,_0x409b89){logger[_0x1cb9('0x10')](_0x1cb9('0x3d'),_0x40ca68[_0x1cb9('0x28')]);var _0x4ce899=holdValidation[_0x1cb9('0x39')](_0x40ca68[_0x1cb9('0x28')]);if(_0x4ce899[_0x1cb9('0x29')]>0x0){return _0x409b89['status'](0x190)[_0x1cb9('0x2a')](_0x4ce899);}var _0x57251=_0x40ca68[_0x1cb9('0x28')][_0x1cb9('0x2b')];var _0x4599a4=_0x40ca68['body'][_0x1cb9('0x24')];return getAgent(_0x57251)['then'](function(_0x2eaa11){logger['info'](_0x1cb9('0x35'),_0x2eaa11[_0x1cb9('0x15')]);emit(util[_0x1cb9('0x2f')](_0x1cb9('0x30'),_0x2eaa11['name']),_0x1cb9('0x3e'),{'sessionId':_0x4599a4});return _0x409b89[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'error':![],'message':_0x1cb9('0x3f')});})[_0x1cb9('0x1d')](handleError(_0x409b89));};exports[_0x1cb9('0x40')]=function(_0x17b92a,_0x3b6a92){logger[_0x1cb9('0x10')](_0x1cb9('0x41'),_0x17b92a['body']);var _0x5092a6=unholdValidation[_0x1cb9('0x39')](_0x17b92a[_0x1cb9('0x28')]);if(_0x5092a6[_0x1cb9('0x29')]>0x0){return _0x3b6a92[_0x1cb9('0x16')](0x190)[_0x1cb9('0x2a')](_0x5092a6);}var _0x2d076b=_0x17b92a[_0x1cb9('0x28')][_0x1cb9('0x2b')];var _0x36c53a=_0x17b92a[_0x1cb9('0x28')]['sessionId'];return getAgent(_0x2d076b)[_0x1cb9('0x1a')](function(_0x5e773d){logger[_0x1cb9('0x10')]('entityFound:',_0x5e773d[_0x1cb9('0x15')]);emit(util['format']('user:%s',_0x5e773d[_0x1cb9('0x15')]),_0x1cb9('0x42'),{'sessionId':_0x36c53a});return _0x3b6a92[_0x1cb9('0x16')](0xc8)['json']({'error':![],'message':_0x1cb9('0x43')});})[_0x1cb9('0x1d')](handleError(_0x3b6a92));};exports['calls']=function(_0x571b33,_0x398d9d){logger[_0x1cb9('0x10')](_0x1cb9('0x44'),_0x398d9d[_0x1cb9('0x28')]);var _0x3de325=callsValidation[_0x1cb9('0x39')](_0x571b33[_0x1cb9('0x28')]);if(_0x3de325['length']>0x0){return _0x398d9d[_0x1cb9('0x16')](0x190)[_0x1cb9('0x2a')](_0x3de325);}var _0x108551=_0x571b33['body'][_0x1cb9('0x2b')];var _0x9893a3=respondWithRpcPromise(_0x1cb9('0x20'));var _0xf6eb2d=getAgent(_0x108551);return Promise[_0x1cb9('0x21')]([_0x9893a3,_0xf6eb2d])[_0x1cb9('0x1a')](function(_0x5ae762){var _0x37ceb5=_0x5ae762[0x0];var _0x36c40d=_0x5ae762[0x1];var _0x41e81f=_[_0x1cb9('0x45')](_0x37ceb5[_0x1cb9('0x22')],function(_0x274c90){return _0x274c90[_0x1cb9('0x23')]==_0x36c40d['id'];});return _0x398d9d[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'count':_0x41e81f[_0x1cb9('0x29')],'rows':_0x41e81f});})[_0x1cb9('0x1d')](handleError(_0x398d9d));};exports['conference']=function(_0xfc39e1,_0xb4c211){logger[_0x1cb9('0x10')](_0x1cb9('0x46'),_0xfc39e1['body']);var _0x4a9cf8=conferenceValidation[_0x1cb9('0x39')](_0xfc39e1[_0x1cb9('0x28')]);if(_0x4a9cf8[_0x1cb9('0x29')]>0x0){return _0xb4c211[_0x1cb9('0x16')](0x190)[_0x1cb9('0x2a')](_0x4a9cf8);}var _0x75c734=_0xfc39e1[_0x1cb9('0x28')][_0x1cb9('0x2b')];return getAgent(_0x75c734)['then'](function(_0x49f74c){logger[_0x1cb9('0x10')]('entityFound:',_0x49f74c['name']);emit(util['format']('user:%s',_0x49f74c['name']),_0x1cb9('0x47'));return _0xb4c211[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'error':![],'message':_0x1cb9('0x48')});})[_0x1cb9('0x1d')](handleError(_0xb4c211));};exports[_0x1cb9('0x49')]=function(_0x54f008,_0x27d7ef){logger[_0x1cb9('0x10')]('transfer\x20fired:',_0x54f008['body']);var _0x150441=transferValidation[_0x1cb9('0x39')](_0x54f008[_0x1cb9('0x28')]);if(_0x150441[_0x1cb9('0x29')]>0x0){return _0x27d7ef[_0x1cb9('0x16')](0x190)['json'](_0x150441);}var _0x538ff0=_0x54f008['body'][_0x1cb9('0x2b')];var _0x2fd5a0=_0x54f008[_0x1cb9('0x28')][_0x1cb9('0x24')];var _0x349f33=_0x54f008['body'][_0x1cb9('0x4a')];return getAgent(_0x538ff0)[_0x1cb9('0x1a')](function(_0x5c65cd){logger['info'](_0x1cb9('0x35'),_0x5c65cd['name']);emit(util[_0x1cb9('0x2f')](_0x1cb9('0x30'),_0x5c65cd[_0x1cb9('0x15')]),_0x1cb9('0x4b'),{'sessionId':_0x2fd5a0,'transferNumber':_0x349f33});return _0x27d7ef[_0x1cb9('0x16')](0xc8)[_0x1cb9('0x2a')]({'error':![],'message':'transfer\x20executed!'});})[_0x1cb9('0x1d')](handleError(_0x27d7ef));};
\ No newline at end of file
+var _0x1306=['name','status','send','code','catch','User','agent','VoiceChannels','all','then','filter','rows','UserId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','json','userId','callNumber','callbackUrl','entityFound:','user:%s','originate\x20executed!','hangup','hangup\x20fired:','sessionId','format','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','webbar:answer','hold','hold\x20fired:','webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','calls\x20fired:','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','bluebird','jayson/promise','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','localhost','socket.io-emitter','validate','number','userId\x20is\x20required','string','callNumber\x20is\x20required','transferNumber\x20is\x20required','info','log','handleError:','error','stack'];(function(_0x4b92a4,_0x1cf00d){var _0x249a0c=function(_0x4f290a){while(--_0x4f290a){_0x4b92a4['push'](_0x4b92a4['shift']());}};_0x249a0c(++_0x1cf00d);}(_0x1306,0x17a));var _0x6130=function(_0x5d980b,_0x29d8b5){_0x5d980b=_0x5d980b-0x0;var _0x173f6a=_0x1306[_0x5d980b];return _0x173f6a;};'use strict';var path=require(_0x6130('0x0'));var fs=require('fs');var _=require(_0x6130('0x1'));var db=require(_0x6130('0x2'))['db'];var config=require(_0x6130('0x3'));var util=require(_0x6130('0x4'));var BPromise=require(_0x6130('0x5'));var jayson=require(_0x6130('0x6'));var amiClient=jayson[_0x6130('0x7')][_0x6130('0x8')]({'port':0x232a});var logger=require(_0x6130('0x9'))(_0x6130('0xa'));var Redis=require(_0x6130('0xb'));config[_0x6130('0xc')]=_[_0x6130('0xd')](config[_0x6130('0xc')],{'host':_0x6130('0xe'),'port':0x18eb});var io=require(_0x6130('0xf'))(new Redis(config[_0x6130('0xc')]));var Schema=require(_0x6130('0x10'));var originateValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'callNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x14')]},'callerId':{'type':_0x6130('0x13')},'callbackUrl':{'type':_0x6130('0x13')}});var hangupValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var transferValidation=new Schema({'userId':{'type':'number','required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x6130('0x13'),'required':[!![],_0x6130('0x15')]}});var holdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]},'sessionId':{'type':_0x6130('0x13'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});var conferenceValidation=new Schema({'userId':{'type':_0x6130('0x11'),'required':[!![],_0x6130('0x12')]}});function emit(_0x39b444,_0x274659,_0x3298f0){logger[_0x6130('0x16')](_0x39b444,_0x274659,JSON['stringify'](_0x3298f0));io['to'](_0x39b444)['emit'](_0x274659,_0x3298f0);}function handleError(_0x1f80e0){return function(_0x49803e){console[_0x6130('0x17')](_0x6130('0x18'),_0x49803e,_0x49803e instanceof RangeError);logger[_0x6130('0x19')](_0x49803e[_0x6130('0x1a')]);if(_0x49803e instanceof RangeError){if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e['name'];}_0x1f80e0[_0x6130('0x1c')](0x194)['send'](_0x49803e);}else{if(_0x49803e[_0x6130('0x1b')]){delete _0x49803e[_0x6130('0x1b')];}_0x1f80e0[_0x6130('0x1c')](0x1f4)[_0x6130('0x1d')](_0x49803e);}};}function checkError(){return function(_0x42f498){if(!_0x42f498){throw new RangeError('NotFound');}return _0x42f498;};}function respondWithRpcPromise(_0x5be413,_0x2c01cd){return new BPromise(function(_0x534390,_0x30b4f2){var _0x289c7b=amiClient;return _0x289c7b['request'](_0x5be413,_0x2c01cd)['then'](function(_0x54fc67){if(_0x54fc67[_0x6130('0x19')]){if(_0x54fc67['error'][_0x6130('0x1e')]===0x1f4){return _0x30b4f2(_0x54fc67['error']['message']);}return _0x534390(_0x54fc67['error']['message']);}else{_0x534390(_0x54fc67['result']);}})[_0x6130('0x1f')](function(_0x1ba07d){_0x30b4f2(_0x1ba07d);});});}function getAgent(_0x4d7442){return db[_0x6130('0x20')]['findOne']({'where':{'id':_0x4d7442,'role':_0x6130('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x5787a6,_0x9196d1){return new BPromise(function(_0x456231,_0x401a31){var _0x2997fd=respondWithRpcPromise(_0x6130('0x22'));var _0x392386=getAgent(_0x5787a6);Promise[_0x6130('0x23')]([_0x2997fd,_0x392386])[_0x6130('0x24')](function(_0x14dff0){var _0x5809e4=_0x14dff0[0x0];var _0x5363cc=_0x14dff0[0x1];var _0x383c56=_[_0x6130('0x25')](_0x5809e4[_0x6130('0x26')],function(_0x4345ac){return _0x4345ac[_0x6130('0x27')]==_0x5363cc['id']&&_0x4345ac['sessionId']==_0x9196d1;});if(_0x383c56[_0x6130('0x28')]==0x1){_0x456231(_0x5363cc);}else{_0x401a31(new RangeError(_0x6130('0x29')+_0x9196d1+_0x6130('0x2a')));}});});}exports[_0x6130('0x2b')]=function(_0x76dfa6,_0x4cf1d3){logger[_0x6130('0x16')](_0x6130('0x2c'),_0x76dfa6[_0x6130('0x2d')]);var _0x4b0c9c=originateValidation[_0x6130('0x10')](_0x76dfa6[_0x6130('0x2d')]);if(_0x4b0c9c[_0x6130('0x28')]>0x0){return _0x4cf1d3[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x4b0c9c);}var _0x6389a3=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x2f')];var _0x25fabf=_0x76dfa6['body'][_0x6130('0x30')];var _0x4df5ed=_0x76dfa6['body']['callerId'];var _0x1ffc85=_0x76dfa6[_0x6130('0x2d')][_0x6130('0x31')];return getAgent(_0x6389a3)[_0x6130('0x24')](function(_0x438cde){logger[_0x6130('0x16')](_0x6130('0x32'),_0x438cde[_0x6130('0x1b')]);emit(util['format'](_0x6130('0x33'),_0x438cde[_0x6130('0x1b')]),'webbar:originate',{'callNumber':_0x25fabf,'callerId':_0x4df5ed,'callbackUrl':_0x1ffc85});return _0x4cf1d3[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x34')});})['catch'](handleError(_0x4cf1d3));};exports[_0x6130('0x35')]=function(_0x147663,_0x501630){logger['info'](_0x6130('0x36'),_0x147663[_0x6130('0x2d')]);var _0x3b1f14=hangupValidation['validate'](_0x147663['body']);if(_0x3b1f14[_0x6130('0x28')]>0x0){return _0x501630[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x3b1f14);}var _0x7d3014=_0x147663[_0x6130('0x2d')][_0x6130('0x2f')];var _0x167b31=_0x147663['body'][_0x6130('0x37')];return getAgent(_0x7d3014)[_0x6130('0x24')](function(_0x101aab){logger[_0x6130('0x16')](_0x6130('0x32'),_0x101aab[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x101aab[_0x6130('0x1b')]),_0x6130('0x39'),{'sessionId':_0x167b31});return _0x501630[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x3a')});})[_0x6130('0x1f')](handleError(_0x501630));};exports[_0x6130('0x3b')]=function(_0x7e02ef,_0x566e43){logger[_0x6130('0x16')](_0x6130('0x3c'),_0x7e02ef[_0x6130('0x2d')]);var _0x4c727b=answerValidation[_0x6130('0x10')](_0x7e02ef[_0x6130('0x2d')]);if(_0x4c727b[_0x6130('0x28')]>0x0){return _0x566e43['status'](0x190)['json'](_0x4c727b);}var _0x3ee3f8=_0x7e02ef[_0x6130('0x2d')][_0x6130('0x2f')];var _0xd87943=_0x7e02ef[_0x6130('0x2d')]['sessionId'];return getAgent(_0x3ee3f8)[_0x6130('0x24')](function(_0xef11b5){logger['info'](_0x6130('0x32'),_0xef11b5[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0xef11b5[_0x6130('0x1b')]),_0x6130('0x3d'),{'sessionId':_0xd87943});return _0x566e43[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':'answer\x20executed!'});})['catch'](handleError(_0x566e43));};exports[_0x6130('0x3e')]=function(_0x534a67,_0x28fb1f){logger[_0x6130('0x16')](_0x6130('0x3f'),_0x534a67[_0x6130('0x2d')]);var _0x15adfd=holdValidation[_0x6130('0x10')](_0x534a67[_0x6130('0x2d')]);if(_0x15adfd[_0x6130('0x28')]>0x0){return _0x28fb1f[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x15adfd);}var _0x3936a8=_0x534a67['body'][_0x6130('0x2f')];var _0x134198=_0x534a67[_0x6130('0x2d')][_0x6130('0x37')];return getAgent(_0x3936a8)[_0x6130('0x24')](function(_0x13f591){logger[_0x6130('0x16')](_0x6130('0x32'),_0x13f591[_0x6130('0x1b')]);emit(util[_0x6130('0x38')]('user:%s',_0x13f591[_0x6130('0x1b')]),_0x6130('0x40'),{'sessionId':_0x134198});return _0x28fb1f[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x41')});})[_0x6130('0x1f')](handleError(_0x28fb1f));};exports[_0x6130('0x42')]=function(_0x37ee0c,_0x3a64ef){logger['info'](_0x6130('0x43'),_0x37ee0c[_0x6130('0x2d')]);var _0x1d0240=unholdValidation[_0x6130('0x10')](_0x37ee0c[_0x6130('0x2d')]);if(_0x1d0240[_0x6130('0x28')]>0x0){return _0x3a64ef['status'](0x190)[_0x6130('0x2e')](_0x1d0240);}var _0x1cbd0e=_0x37ee0c[_0x6130('0x2d')]['userId'];var _0x4f5207=_0x37ee0c['body']['sessionId'];return getAgent(_0x1cbd0e)[_0x6130('0x24')](function(_0xa9b10a){logger[_0x6130('0x16')]('entityFound:',_0xa9b10a['name']);emit(util['format']('user:%s',_0xa9b10a[_0x6130('0x1b')]),_0x6130('0x44'),{'sessionId':_0x4f5207});return _0x3a64ef[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x45')});})['catch'](handleError(_0x3a64ef));};exports[_0x6130('0x46')]=function(_0x305d99,_0x49e3cf){logger[_0x6130('0x16')](_0x6130('0x47'),_0x49e3cf[_0x6130('0x2d')]);var _0x32bf20=callsValidation[_0x6130('0x10')](_0x305d99[_0x6130('0x2d')]);if(_0x32bf20[_0x6130('0x28')]>0x0){return _0x49e3cf[_0x6130('0x1c')](0x190)['json'](_0x32bf20);}var _0x159ff8=_0x305d99[_0x6130('0x2d')][_0x6130('0x2f')];var _0x4934ca=respondWithRpcPromise('VoiceChannels');var _0x1b4f82=getAgent(_0x159ff8);return Promise[_0x6130('0x23')]([_0x4934ca,_0x1b4f82])[_0x6130('0x24')](function(_0xc253f){var _0x37b89b=_0xc253f[0x0];var _0x519a0c=_0xc253f[0x1];var _0x29630a=_[_0x6130('0x25')](_0x37b89b[_0x6130('0x26')],function(_0x372c53){return _0x372c53[_0x6130('0x27')]==_0x519a0c['id'];});return _0x49e3cf[_0x6130('0x1c')](0xc8)['json']({'count':_0x29630a['length'],'rows':_0x29630a});})[_0x6130('0x1f')](handleError(_0x49e3cf));};exports[_0x6130('0x48')]=function(_0x5c55cf,_0x442fee){logger[_0x6130('0x16')](_0x6130('0x49'),_0x5c55cf[_0x6130('0x2d')]);var _0x54c565=conferenceValidation[_0x6130('0x10')](_0x5c55cf[_0x6130('0x2d')]);if(_0x54c565[_0x6130('0x28')]>0x0){return _0x442fee[_0x6130('0x1c')](0x190)[_0x6130('0x2e')](_0x54c565);}var _0x198da8=_0x5c55cf[_0x6130('0x2d')][_0x6130('0x2f')];return getAgent(_0x198da8)['then'](function(_0x46f586){logger[_0x6130('0x16')](_0x6130('0x32'),_0x46f586[_0x6130('0x1b')]);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x46f586['name']),_0x6130('0x4a'));return _0x442fee[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x4b')});})[_0x6130('0x1f')](handleError(_0x442fee));};exports[_0x6130('0x4c')]=function(_0x2d27e6,_0x31d20d){logger[_0x6130('0x16')](_0x6130('0x4d'),_0x2d27e6[_0x6130('0x2d')]);var _0x3a5876=transferValidation['validate'](_0x2d27e6['body']);if(_0x3a5876['length']>0x0){return _0x31d20d['status'](0x190)['json'](_0x3a5876);}var _0x101894=_0x2d27e6[_0x6130('0x2d')]['userId'];var _0x1d8286=_0x2d27e6['body'][_0x6130('0x37')];var _0xf82ecf=_0x2d27e6[_0x6130('0x2d')][_0x6130('0x4e')];return getAgent(_0x101894)[_0x6130('0x24')](function(_0x35f2df){logger[_0x6130('0x16')](_0x6130('0x32'),_0x35f2df['name']);emit(util[_0x6130('0x38')](_0x6130('0x33'),_0x35f2df['name']),_0x6130('0x4f'),{'sessionId':_0x1d8286,'transferNumber':_0xf82ecf});return _0x31d20d[_0x6130('0x1c')](0xc8)[_0x6130('0x2e')]({'error':![],'message':_0x6130('0x50')});})['catch'](handleError(_0x31d20d));};
\ No newline at end of file
index 7de61c0..6d94f7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x781d=['post','addDisposition','/:id/canned_answers','addAnswer','addAgents','addApplications','/:id/notify','notify','/:id/send','send','put','/:id','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id/dispositions','getDispositions','getAnswers','/:id/users','getAgents','/:id/applications','getApplications'];(function(_0x38ff1e,_0x3b9385){var _0x3755d4=function(_0x6e6692){while(--_0x6e6692){_0x38ff1e['push'](_0x38ff1e['shift']());}};_0x3755d4(++_0x3b9385);}(_0x781d,0x14a));var _0xd781=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x781d[_0x397e5f];return _0x5302b8;};'use strict';var multer=require(_0xd781('0x0'));var util=require(_0xd781('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xd781('0x2'));var router=express[_0xd781('0x3')]();var fs_extra=require(_0xd781('0x4'));var auth=require(_0xd781('0x5'));var interaction=require(_0xd781('0x6'));var config=require(_0xd781('0x7'));var controller=require(_0xd781('0x8'));router[_0xd781('0x9')]('/',auth[_0xd781('0xa')](),controller[_0xd781('0xb')]);router['get'](_0xd781('0xc'),auth[_0xd781('0xa')](),controller[_0xd781('0xd')]);router[_0xd781('0x9')]('/:id',auth[_0xd781('0xa')](),controller['show']);router[_0xd781('0x9')](_0xd781('0xe'),auth['isAuthenticated'](),controller[_0xd781('0xf')]);router[_0xd781('0x9')]('/:id/canned_answers',auth['isAuthenticated'](),controller[_0xd781('0x10')]);router[_0xd781('0x9')](_0xd781('0x11'),auth[_0xd781('0xa')](),controller[_0xd781('0x12')]);router[_0xd781('0x9')](_0xd781('0x13'),auth[_0xd781('0xa')](),controller[_0xd781('0x14')]);router[_0xd781('0x15')]('/',auth[_0xd781('0xa')](),controller['create']);router[_0xd781('0x15')](_0xd781('0xe'),auth['isAuthenticated'](),controller[_0xd781('0x16')]);router['post'](_0xd781('0x17'),auth[_0xd781('0xa')](),controller[_0xd781('0x18')]);router[_0xd781('0x15')](_0xd781('0x11'),auth[_0xd781('0xa')](),controller[_0xd781('0x19')]);router['post'](_0xd781('0x13'),auth[_0xd781('0xa')](),controller[_0xd781('0x1a')]);router[_0xd781('0x15')](_0xd781('0x1b'),controller[_0xd781('0x1c')]);router[_0xd781('0x15')](_0xd781('0x1d'),auth['isAuthenticated'](),controller[_0xd781('0x1e')]);router[_0xd781('0x1f')](_0xd781('0x20'),auth[_0xd781('0xa')](),controller[_0xd781('0x21')]);router[_0xd781('0x22')](_0xd781('0x20'),auth['isAuthenticated'](),controller[_0xd781('0x23')]);router['delete']('/:id/dispositions',auth[_0xd781('0xa')](),controller['removeDispositions']);router[_0xd781('0x22')](_0xd781('0x17'),auth[_0xd781('0xa')](),controller[_0xd781('0x24')]);router[_0xd781('0x22')](_0xd781('0x11'),auth[_0xd781('0xa')](),controller[_0xd781('0x25')]);module[_0xd781('0x26')]=router;
\ No newline at end of file
+var _0x2ef3=['multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappAccount.controller','get','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','addDisposition','addAnswer','/:id/notify','/:id/send','send','put','update','delete','removeAnswers'];(function(_0x5d0ef0,_0x1afa61){var _0x4d1913=function(_0x491be4){while(--_0x491be4){_0x5d0ef0['push'](_0x5d0ef0['shift']());}};_0x4d1913(++_0x1afa61);}(_0x2ef3,0xba));var _0x32ef=function(_0x4a2d9d,_0x259c7a){_0x4a2d9d=_0x4a2d9d-0x0;var _0x2462f4=_0x2ef3[_0x4a2d9d];return _0x2462f4;};'use strict';var multer=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var path=require(_0x32ef('0x2'));var timeout=require(_0x32ef('0x3'));var express=require(_0x32ef('0x4'));var router=express[_0x32ef('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x32ef('0x6'));var interaction=require(_0x32ef('0x7'));var config=require('../../config/environment');var controller=require(_0x32ef('0x8'));router[_0x32ef('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x32ef('0x9')](_0x32ef('0xa'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xc')]);router[_0x32ef('0x9')](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller[_0x32ef('0xe')]);router[_0x32ef('0x9')](_0x32ef('0xf'),auth['isAuthenticated'](),controller['getDispositions']);router[_0x32ef('0x9')](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x11')]);router['get'](_0x32ef('0x12'),auth['isAuthenticated'](),controller[_0x32ef('0x13')]);router['get'](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['getApplications']);router['post']('/',auth[_0x32ef('0xb')](),controller['create']);router[_0x32ef('0x15')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x16')]);router['post']('/:id/canned_answers',auth['isAuthenticated'](),controller[_0x32ef('0x17')]);router[_0x32ef('0x15')](_0x32ef('0x12'),auth['isAuthenticated'](),controller['addAgents']);router[_0x32ef('0x15')](_0x32ef('0x14'),auth[_0x32ef('0xb')](),controller['addApplications']);router[_0x32ef('0x15')](_0x32ef('0x18'),controller['notify']);router[_0x32ef('0x15')](_0x32ef('0x19'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1a')]);router[_0x32ef('0x1b')](_0x32ef('0xd'),auth['isAuthenticated'](),controller[_0x32ef('0x1c')]);router['delete'](_0x32ef('0xd'),auth[_0x32ef('0xb')](),controller['destroy']);router[_0x32ef('0x1d')](_0x32ef('0xf'),auth[_0x32ef('0xb')](),controller['removeDispositions']);router['delete'](_0x32ef('0x10'),auth[_0x32ef('0xb')](),controller[_0x32ef('0x1e')]);router['delete']('/:id/users',auth[_0x32ef('0xb')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
index ec03f3c..fc5cdd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaab9=['twilio','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','randomstring','exports','STRING','name','generate'];(function(_0x2abc3d,_0x48edca){var _0x252745=function(_0x32bb6f){while(--_0x32bb6f){_0x2abc3d['push'](_0x2abc3d['shift']());}};_0x252745(++_0x48edca);}(_0xaab9,0x10a));var _0x9aab=function(_0x4ef8c1,_0x27fcfc){_0x4ef8c1=_0x4ef8c1-0x0;var _0x48f7a3=_0xaab9[_0x4ef8c1];return _0x48f7a3;};'use strict';var Sequelize=require(_0x9aab('0x0'));var rs=require(_0x9aab('0x1'));module[_0x9aab('0x2')]={'name':{'type':Sequelize[_0x9aab('0x3')],'unique':_0x9aab('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0x9aab('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0x9aab('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0x9aab('0x3')],'defaultValue':function(){return rs[_0x9aab('0x5')]();}},'phone':{'type':Sequelize[_0x9aab('0x3')]},'type':{'type':Sequelize['ENUM'](_0x9aab('0x6'),_0x9aab('0x7'))},'accountSid':{'type':Sequelize[_0x9aab('0x3')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize['STRING']},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x9aab('0x8');}},'notificationSound':{'type':Sequelize[_0x9aab('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x9aab('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x9aab('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x9aab('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x9aab('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x9aab('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x9aab('0xa')],'comment':_0x9aab('0xb')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0x9aab('0xc'),'set':function(_0x2892ce){if(!_0x2892ce){this[_0x9aab('0xd')](_0x9aab('0xe'),null);}this[_0x9aab('0xd')](_0x9aab('0xf'),_0x2892ce);}},'description':{'type':Sequelize[_0x9aab('0x3')]}};
\ No newline at end of file
+var _0x3c25=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','generate','sinch','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x1ff40,_0x5f498e){var _0x303079=function(_0x1c531f){while(--_0x1c531f){_0x1ff40['push'](_0x1ff40['shift']());}};_0x303079(++_0x5f498e);}(_0x3c25,0xc8));var _0x53c2=function(_0x5877ce,_0x45a4bd){_0x5877ce=_0x5877ce-0x0;var _0x6d6d47=_0x3c25[_0x5877ce];return _0x6d6d47;};'use strict';var Sequelize=require(_0x53c2('0x0'));var rs=require('randomstring');module[_0x53c2('0x1')]={'name':{'type':Sequelize[_0x53c2('0x2')],'unique':_0x53c2('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x53c2('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x53c2('0x2')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0x53c2('0x4')]();}},'phone':{'type':Sequelize[_0x53c2('0x2')]},'type':{'type':Sequelize['ENUM']('twilio',_0x53c2('0x5'))},'accountSid':{'type':Sequelize[_0x53c2('0x2')]},'baseUrl':{'type':Sequelize['STRING']},'authToken':{'type':Sequelize[_0x53c2('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x53c2('0x6');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x53c2('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x53c2('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x53c2('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x53c2('0x7')],'comment':_0x53c2('0x9')},'mandatoryDisposition':{'type':Sequelize[_0x53c2('0x8')],'defaultValue':![],'comment':_0x53c2('0xa'),'set':function(_0x378839){if(!_0x378839){this[_0x53c2('0xb')](_0x53c2('0xc'),null);}this[_0x53c2('0xb')](_0x53c2('0xd'),_0x378839);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 531c77d..3242618 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf74d=['orderBy','priority','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','mobile','twilio','from','From','replace','messageId','MessageSid','notifications','isNil','from\x20is\x20mandatory','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','ListId','Contacts','DESC','list','WhatsappInteraction','interaction','created','push','close','unmanaged','*,*,*,*','UserId','unshift','agent','waitForTheAssignedAgent','Start','startRouting','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','body\x20is\x20mandatory\x20and\x20not\x20empty','to\x20is\x20mandatory','List','out','Messages','dataValues','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','socket.io-emitter','register','jayson/promise','client','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','get','UserProfileResource','destroy','stack','send','index','Pause','map','rawAttributes','fieldName','type','model','name','keys','filters','intersection','query','attributes','length','hasOwnProperty','nolimit','sort','pick','filter','where','merge','VIRTUAL','options','WhatsappAccount','includeAll','include','findAll','params','fields','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','describe','addDisposition','WhatsappAccountId','Disposition','order','rows','ids','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','omit','spread','userWhatsappAccount:save','emit','userWhatsappAccount:remove','User','getAgents','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','WhatsappApplication','bulkCreate','findAndCountAll','finally','getApplications','notify','Applications','account','sinch','statuses','read','WhatsappMessage','timestamp','message_id','applications'];(function(_0x302e04,_0x476769){var _0x53e36f=function(_0x22342a){while(--_0x22342a){_0x302e04['push'](_0x302e04['shift']());}};_0x53e36f(++_0x476769);}(_0xf74d,0xfa));var _0xdf74=function(_0x599389,_0x2caba7){_0x599389=_0x599389-0x0;var _0x4b2f10=_0xf74d[_0x599389];return _0x4b2f10;};'use strict';var emlformat=require(_0xdf74('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdf74('0x1'));var jsonpatch=require(_0xdf74('0x2'));var rp=require(_0xdf74('0x3'));var moment=require(_0xdf74('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xdf74('0x5'));var util=require(_0xdf74('0x6'));var path=require(_0xdf74('0x7'));var sox=require(_0xdf74('0x8'));var csv=require(_0xdf74('0x9'));var ejs=require(_0xdf74('0xa'));var fs=require('fs');var fs_extra=require(_0xdf74('0xb'));var _=require(_0xdf74('0xc'));var squel=require(_0xdf74('0xd'));var crypto=require(_0xdf74('0xe'));var jsforce=require(_0xdf74('0xf'));var deskjs=require(_0xdf74('0x10'));var toCsv=require(_0xdf74('0x9'));var querystring=require('querystring');var Papa=require(_0xdf74('0x11'));var Redis=require('ioredis');var authService=require(_0xdf74('0x12'));var qs=require(_0xdf74('0x13'));var as=require(_0xdf74('0x14'));var hardwareService=require(_0xdf74('0x15'));var logger=require(_0xdf74('0x16'))(_0xdf74('0x17'));var utils=require(_0xdf74('0x18'));var config=require(_0xdf74('0x19'));var licenseUtil=require(_0xdf74('0x1a'));var db=require('../../mysqldb')['db'];config[_0xdf74('0x1b')]=_[_0xdf74('0x1c')](config[_0xdf74('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0xdf74('0x1d'))(new Redis(config[_0xdf74('0x1b')]));require('./whatsappAccount.socket')[_0xdf74('0x1e')](socket);var jayson=require(_0xdf74('0x1f'));var client=jayson[_0xdf74('0x20')]['http']({'port':0x232c});function respondWithRpcPromise(_0x4d2837,_0x5d2d14,_0xf44298,_0x5b101b){return new BPromise(function(_0x26df56,_0x52ee79){var _0x426b05=_0x5b101b||client;return _0x426b05[_0xdf74('0x21')](_0x4d2837,_0xf44298)[_0xdf74('0x22')](function(_0x59d6e7){logger[_0xdf74('0x23')](_0xdf74('0x24'),_0x5d2d14,_0xdf74('0x25'));logger[_0xdf74('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x5d2d14,_0xdf74('0x25'),JSON[_0xdf74('0x27')](_0x59d6e7));if(_0x59d6e7[_0xdf74('0x28')]){if(_0x59d6e7[_0xdf74('0x28')][_0xdf74('0x29')]===0x1f4){logger['error'](_0xdf74('0x24'),_0x5d2d14,_0x59d6e7[_0xdf74('0x28')][_0xdf74('0x2a')]);return _0x52ee79(_0x59d6e7[_0xdf74('0x28')][_0xdf74('0x2a')]);}logger[_0xdf74('0x28')]('WhatsappAccount,\x20%s,\x20%s',_0x5d2d14,_0x59d6e7['error'][_0xdf74('0x2a')]);return _0x26df56(_0x59d6e7[_0xdf74('0x28')][_0xdf74('0x2a')]);}else{logger[_0xdf74('0x23')](_0xdf74('0x24'),_0x5d2d14,_0xdf74('0x25'));_0x26df56(_0x59d6e7[_0xdf74('0x2b')][_0xdf74('0x2a')]);}})[_0xdf74('0x2c')](function(_0x197079){logger[_0xdf74('0x28')](_0xdf74('0x24'),_0x5d2d14,_0x197079);_0x52ee79(_0x197079);});});}function respondWithStatusCode(_0x43a262,_0x43c78b){_0x43c78b=_0x43c78b||0xcc;return function(_0xd8fa63){if(_0xd8fa63){return _0x43a262[_0xdf74('0x2d')](_0x43c78b);}return _0x43a262[_0xdf74('0x2e')](_0x43c78b)[_0xdf74('0x2f')]();};}function respondWithResult(_0x3ed5a3,_0x3015ac){_0x3015ac=_0x3015ac||0xc8;return function(_0x3097d8){if(_0x3097d8){return _0x3ed5a3[_0xdf74('0x2e')](_0x3015ac)[_0xdf74('0x30')](_0x3097d8);}};}function respondWithFilteredResult(_0x5b748d,_0x162f2b){return function(_0x39b088){if(_0x39b088){var _0x4fba9d=typeof _0x162f2b[_0xdf74('0x31')]===_0xdf74('0x32')&&typeof _0x162f2b['limit']===_0xdf74('0x32');var _0x42d3b3=_0x39b088[_0xdf74('0x33')];var _0x5208fd=_0x4fba9d?0x0:_0x162f2b[_0xdf74('0x31')];var _0x24139f=_0x4fba9d?_0x39b088[_0xdf74('0x33')]:_0x162f2b['offset']+_0x162f2b[_0xdf74('0x34')];var _0x18ee1a;if(_0x24139f>=_0x42d3b3){_0x24139f=_0x42d3b3;_0x18ee1a=0xc8;}else{_0x18ee1a=0xce;}_0x5b748d[_0xdf74('0x2e')](_0x18ee1a);return _0x5b748d[_0xdf74('0x35')](_0xdf74('0x36'),_0x5208fd+'-'+_0x24139f+'/'+_0x42d3b3)['json'](_0x39b088);}return null;};}function patchUpdates(_0x11087f){return function(_0x3cee42){try{jsonpatch[_0xdf74('0x37')](_0x3cee42,_0x11087f,!![]);}catch(_0x47e9ad){return BPromise[_0xdf74('0x38')](_0x47e9ad);}return _0x3cee42[_0xdf74('0x39')]();};}function saveUpdates(_0x543182,_0x199715){return function(_0x50d753){if(_0x50d753){return _0x50d753[_0xdf74('0x3a')](_0x543182)[_0xdf74('0x22')](function(_0xbbcf02){return _0xbbcf02;});}return null;};}function removeEntity(_0x26ebe1,_0x36bc8b){return function(_0x12e627){if(_0x12e627){return _0x12e627['destroy']()['then'](function(){var _0x3901c0=_0x12e627[_0xdf74('0x3b')]({'plain':!![]});var _0x464770='WhatsappAccounts';return db[_0xdf74('0x3c')][_0xdf74('0x3d')]({'where':{'type':_0x464770,'resourceId':_0x3901c0['id']}})[_0xdf74('0x22')](function(){return _0x12e627;});})[_0xdf74('0x22')](function(){_0x26ebe1[_0xdf74('0x2e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x3c795a,_0x139641){return function(_0x487d3e){if(!_0x487d3e){_0x3c795a[_0xdf74('0x2d')](0x194);}return _0x487d3e;};}function handleError(_0x3b9597,_0x9c7731){_0x9c7731=_0x9c7731||0x1f4;return function(_0x2c3160){logger['error'](_0x2c3160[_0xdf74('0x3e')]);if(_0x2c3160['name']){delete _0x2c3160['name'];}_0x3b9597[_0xdf74('0x2e')](_0x9c7731)[_0xdf74('0x3f')](_0x2c3160);};}exports[_0xdf74('0x40')]=function(_0xb678fd,_0x10fc36){var _0x56a1c3={'include':[{'model':db[_0xdf74('0x41')],'as':'mandatoryDispositionPause'}]},_0x5428bc={},_0x103f41={'count':0x0,'rows':[]};var _0x140c50=_[_0xdf74('0x42')](db['WhatsappAccount'][_0xdf74('0x43')],function(_0x31d6e6){return{'name':_0x31d6e6[_0xdf74('0x44')],'type':_0x31d6e6[_0xdf74('0x45')]['key']};});_0x5428bc[_0xdf74('0x46')]=_['map'](_0x140c50,_0xdf74('0x47'));_0x5428bc['query']=_[_0xdf74('0x48')](_0xb678fd['query']);_0x5428bc[_0xdf74('0x49')]=_[_0xdf74('0x4a')](_0x5428bc[_0xdf74('0x46')],_0x5428bc[_0xdf74('0x4b')]);_0x56a1c3['attributes']=_[_0xdf74('0x4a')](_0x5428bc[_0xdf74('0x46')],qs['fields'](_0xb678fd[_0xdf74('0x4b')]['fields']));_0x56a1c3['attributes']=_0x56a1c3[_0xdf74('0x4c')][_0xdf74('0x4d')]?_0x56a1c3[_0xdf74('0x4c')]:_0x5428bc[_0xdf74('0x46')];if(!_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x4e')](_0xdf74('0x4f'))){_0x56a1c3[_0xdf74('0x34')]=qs['limit'](_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x34')]);_0x56a1c3['offset']=qs[_0xdf74('0x31')](_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x31')]);}_0x56a1c3['order']=qs[_0xdf74('0x50')](_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x50')]);_0x56a1c3['where']=qs[_0xdf74('0x49')](_[_0xdf74('0x51')](_0xb678fd[_0xdf74('0x4b')],_0x5428bc[_0xdf74('0x49')]),_0x140c50);if(_0xb678fd['query'][_0xdf74('0x52')]){_0x56a1c3[_0xdf74('0x53')]=_[_0xdf74('0x54')](_0x56a1c3['where'],{'$or':_['map'](_0x140c50,function(_0x246af7){if(_0x246af7[_0xdf74('0x45')]!==_0xdf74('0x55')){var _0xe616d6={};_0xe616d6[_0x246af7[_0xdf74('0x47')]]={'$like':'%'+_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x52')]+'%'};return _0xe616d6;}})});}_0x56a1c3=_[_0xdf74('0x54')]({},_0x56a1c3,_0xb678fd[_0xdf74('0x56')]);var _0x1abe43={'where':_0x56a1c3[_0xdf74('0x53')]};return db[_0xdf74('0x57')]['count'](_0x1abe43)[_0xdf74('0x22')](function(_0x32dc5b){_0x103f41[_0xdf74('0x33')]=_0x32dc5b;if(_0xb678fd[_0xdf74('0x4b')][_0xdf74('0x58')]){_0x56a1c3[_0xdf74('0x59')]=[{'all':!![]}];}return db[_0xdf74('0x57')][_0xdf74('0x5a')](_0x56a1c3);})['then'](function(_0x25c179){_0x103f41['rows']=_0x25c179;return _0x103f41;})[_0xdf74('0x22')](respondWithFilteredResult(_0x10fc36,_0x56a1c3))[_0xdf74('0x2c')](handleError(_0x10fc36,null));};exports['show']=function(_0x23a91a,_0xf01671){var _0x407830={'raw':![],'where':{'id':_0x23a91a[_0xdf74('0x5b')]['id']},'include':[{'model':db[_0xdf74('0x41')],'as':'mandatoryDispositionPause'}]},_0xf46036={};_0xf46036['model']=_[_0xdf74('0x48')](db[_0xdf74('0x57')][_0xdf74('0x43')]);_0xf46036['query']=_[_0xdf74('0x48')](_0x23a91a[_0xdf74('0x4b')]);_0xf46036[_0xdf74('0x49')]=_[_0xdf74('0x4a')](_0xf46036[_0xdf74('0x46')],_0xf46036[_0xdf74('0x4b')]);_0x407830['attributes']=_[_0xdf74('0x4a')](_0xf46036[_0xdf74('0x46')],qs[_0xdf74('0x5c')](_0x23a91a[_0xdf74('0x4b')][_0xdf74('0x5c')]));_0x407830[_0xdf74('0x4c')]=_0x407830[_0xdf74('0x4c')][_0xdf74('0x4d')]?_0x407830[_0xdf74('0x4c')]:_0xf46036['model'];if(_0x23a91a[_0xdf74('0x4b')][_0xdf74('0x58')]){_0x407830[_0xdf74('0x59')]=[{'all':!![]}];}_0x407830=_[_0xdf74('0x54')]({},_0x407830,_0x23a91a[_0xdf74('0x56')]);return db['WhatsappAccount'][_0xdf74('0x5d')](_0x407830)[_0xdf74('0x22')](handleEntityNotFound(_0xf01671,null))['then'](respondWithResult(_0xf01671,null))[_0xdf74('0x2c')](handleError(_0xf01671,null));};exports[_0xdf74('0x5e')]=function(_0x18ff28,_0x18a957){return db[_0xdf74('0x57')][_0xdf74('0x5e')](_0x18ff28[_0xdf74('0x5f')],{})['then'](function(_0x36455b){var _0x3a6cf7=_0x18ff28[_0xdf74('0x60')]['get']({'plain':!![]});if(!_0x3a6cf7)throw new Error(_0xdf74('0x61'));if(_0x3a6cf7[_0xdf74('0x62')]===_0xdf74('0x60')){var _0x4d211a=_0x36455b['get']({'plain':!![]});var _0x424251='WhatsappAccounts';return db[_0xdf74('0x63')][_0xdf74('0x5d')]({'where':{'name':_0x424251,'userProfileId':_0x3a6cf7[_0xdf74('0x64')]},'raw':!![]})[_0xdf74('0x22')](function(_0x48e000){if(_0x48e000&&_0x48e000[_0xdf74('0x65')]===0x0){return db[_0xdf74('0x3c')][_0xdf74('0x5e')]({'name':_0x4d211a['name'],'resourceId':_0x4d211a['id'],'type':_0x48e000['name'],'sectionId':_0x48e000['id']},{})[_0xdf74('0x22')](function(){return _0x36455b;});}else{return _0x36455b;}})[_0xdf74('0x2c')](function(_0x43ef9a){logger[_0xdf74('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x43ef9a);throw _0x43ef9a;});}return _0x36455b;})['then'](respondWithResult(_0x18a957,0xc9))[_0xdf74('0x2c')](handleError(_0x18a957,null));};exports[_0xdf74('0x3a')]=function(_0xba0e5d,_0x6f8a0a){if(_0xba0e5d[_0xdf74('0x5f')]['id']){delete _0xba0e5d[_0xdf74('0x5f')]['id'];}return db[_0xdf74('0x57')][_0xdf74('0x5d')]({'where':{'id':_0xba0e5d['params']['id']},'include':[{'model':db[_0xdf74('0x41')],'as':'mandatoryDispositionPause'}]})[_0xdf74('0x22')](handleEntityNotFound(_0x6f8a0a,null))[_0xdf74('0x22')](saveUpdates(_0xba0e5d[_0xdf74('0x5f')],null))['then'](respondWithResult(_0x6f8a0a,null))[_0xdf74('0x2c')](handleError(_0x6f8a0a,null));};exports[_0xdf74('0x3d')]=function(_0x5e018b,_0x1d97fa){return db[_0xdf74('0x57')]['find']({'where':{'id':_0x5e018b[_0xdf74('0x5b')]['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x1d97fa,null))['then'](removeEntity(_0x1d97fa,null))[_0xdf74('0x2c')](handleError(_0x1d97fa,null));};exports['describe']=function(_0x1806ea,_0x1d4433){return db[_0xdf74('0x57')][_0xdf74('0x66')]()[_0xdf74('0x22')](respondWithResult(_0x1d4433,null))[_0xdf74('0x2c')](handleError(_0x1d4433,null));};exports[_0xdf74('0x67')]=function(_0x55f72f,_0x21059f,_0x2beff9){if(_0x55f72f['body']['id']){delete _0x55f72f[_0xdf74('0x5f')]['id'];}return db[_0xdf74('0x57')][_0xdf74('0x5d')]({'where':{'id':_0x55f72f[_0xdf74('0x5b')]['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x21059f,null))[_0xdf74('0x22')](function(_0x3d0ed4){if(_0x3d0ed4){_0x55f72f[_0xdf74('0x5f')][_0xdf74('0x68')]=_0x3d0ed4['id'];return db[_0xdf74('0x69')][_0xdf74('0x5e')](_0x55f72f[_0xdf74('0x5f')]);}})[_0xdf74('0x22')](respondWithResult(_0x21059f,null))[_0xdf74('0x2c')](handleError(_0x21059f,null));};exports['getDispositions']=function(_0x37c2f4,_0xe7c3d,_0x535d0b){var _0x2572f7={'raw':![],'where':{}};var _0x27f008={};var _0x2bff75={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x37c2f4[_0xdf74('0x5b')]['id']}})['then'](handleEntityNotFound(_0xe7c3d,null))[_0xdf74('0x22')](function(_0x9354){if(_0x9354){_0x27f008[_0xdf74('0x46')]=_[_0xdf74('0x48')](db['Disposition']['rawAttributes']);_0x27f008[_0xdf74('0x4b')]=_['keys'](_0x37c2f4[_0xdf74('0x4b')]);_0x27f008[_0xdf74('0x49')]=_[_0xdf74('0x4a')](_0x27f008[_0xdf74('0x46')],_0x27f008['query']);_0x2572f7['attributes']=_[_0xdf74('0x4a')](_0x27f008['model'],qs[_0xdf74('0x5c')](_0x37c2f4[_0xdf74('0x4b')]['fields']));_0x2572f7[_0xdf74('0x4c')]=_0x2572f7['attributes'][_0xdf74('0x4d')]?_0x2572f7[_0xdf74('0x4c')]:_0x27f008[_0xdf74('0x46')];if(!_0x37c2f4[_0xdf74('0x4b')]['hasOwnProperty'](_0xdf74('0x4f'))){_0x2572f7['limit']=qs[_0xdf74('0x34')](_0x37c2f4[_0xdf74('0x4b')][_0xdf74('0x34')]);_0x2572f7[_0xdf74('0x31')]=qs[_0xdf74('0x31')](_0x37c2f4['query'][_0xdf74('0x31')]);}_0x2572f7[_0xdf74('0x6a')]=qs['sort'](_0x37c2f4[_0xdf74('0x4b')][_0xdf74('0x50')]);_0x2572f7[_0xdf74('0x53')]=qs[_0xdf74('0x49')](_[_0xdf74('0x51')](_0x37c2f4[_0xdf74('0x4b')],_0x27f008[_0xdf74('0x49')]));_0x2572f7['where']['WhatsappAccountId']=_0x9354['id'];if(_0x37c2f4[_0xdf74('0x4b')][_0xdf74('0x52')]){_0x2572f7['where']=_[_0xdf74('0x54')](_0x2572f7['where'],{'$or':_['map'](_0x2572f7[_0xdf74('0x4c')],function(_0x4edb4e){var _0x4e6a76={};_0x4e6a76[_0x4edb4e]={'$like':'%'+_0x37c2f4[_0xdf74('0x4b')][_0xdf74('0x52')]+'%'};return _0x4e6a76;})});}_0x2572f7=_[_0xdf74('0x54')]({},_0x2572f7,_0x37c2f4['options']);return db[_0xdf74('0x69')]['count']({'where':_0x2572f7[_0xdf74('0x53')]})[_0xdf74('0x22')](function(_0x3af5d3){_0x2bff75[_0xdf74('0x33')]=_0x3af5d3;if(_0x37c2f4[_0xdf74('0x4b')][_0xdf74('0x58')]){_0x2572f7['include']=[{'all':!![]}];}return db['Disposition'][_0xdf74('0x5a')](_0x2572f7);})['then'](function(_0x5c5394){_0x2bff75[_0xdf74('0x6b')]=_0x5c5394;return _0x2bff75;});}})[_0xdf74('0x22')](respondWithFilteredResult(_0xe7c3d,_0x2572f7))[_0xdf74('0x2c')](handleError(_0xe7c3d,null));};exports['removeDispositions']=function(_0x5bdf64,_0x1b08a4,_0x412a01){return db[_0xdf74('0x57')][_0xdf74('0x5d')]({'where':{'id':_0x5bdf64[_0xdf74('0x5b')]['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x1b08a4,null))[_0xdf74('0x22')](function(_0x1a0eef){if(_0x1a0eef){return _0x1a0eef['removeDispositions'](_0x5bdf64[_0xdf74('0x4b')][_0xdf74('0x6c')]);}})[_0xdf74('0x22')](respondWithStatusCode(_0x1b08a4,null))[_0xdf74('0x2c')](handleError(_0x1b08a4,null));};exports[_0xdf74('0x6d')]=function(_0x3e2a9d,_0x17e8e9,_0x38c3ce){if(_0x3e2a9d[_0xdf74('0x5f')]['id']){delete _0x3e2a9d[_0xdf74('0x5f')]['id'];}return db[_0xdf74('0x57')][_0xdf74('0x5d')]({'where':{'id':_0x3e2a9d[_0xdf74('0x5b')]['id']}})['then'](handleEntityNotFound(_0x17e8e9,null))['then'](function(_0x4f8dc2){if(_0x4f8dc2){_0x3e2a9d[_0xdf74('0x5f')][_0xdf74('0x68')]=_0x4f8dc2['id'];return db[_0xdf74('0x6e')][_0xdf74('0x5e')](_0x3e2a9d[_0xdf74('0x5f')]);}})[_0xdf74('0x22')](respondWithResult(_0x17e8e9,null))[_0xdf74('0x2c')](handleError(_0x17e8e9,null));};exports[_0xdf74('0x6f')]=function(_0x456ecb,_0xda49db,_0x437ada){var _0x3287b1={'raw':![],'where':{}};var _0x265fb5={};var _0x1145e0={'count':0x0,'rows':[]};return db[_0xdf74('0x57')][_0xdf74('0x70')]({'where':{'id':_0x456ecb['params']['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0xda49db,null))[_0xdf74('0x22')](function(_0x5b64f8){if(_0x5b64f8){_0x265fb5[_0xdf74('0x46')]=_[_0xdf74('0x48')](db[_0xdf74('0x6e')][_0xdf74('0x43')]);_0x265fb5[_0xdf74('0x4b')]=_[_0xdf74('0x48')](_0x456ecb[_0xdf74('0x4b')]);_0x265fb5[_0xdf74('0x49')]=_[_0xdf74('0x4a')](_0x265fb5['model'],_0x265fb5[_0xdf74('0x4b')]);_0x3287b1[_0xdf74('0x4c')]=_[_0xdf74('0x4a')](_0x265fb5[_0xdf74('0x46')],qs['fields'](_0x456ecb['query'][_0xdf74('0x5c')]));_0x3287b1[_0xdf74('0x4c')]=_0x3287b1['attributes']['length']?_0x3287b1['attributes']:_0x265fb5['model'];if(!_0x456ecb[_0xdf74('0x4b')][_0xdf74('0x4e')](_0xdf74('0x4f'))){_0x3287b1['limit']=qs[_0xdf74('0x34')](_0x456ecb['query']['limit']);_0x3287b1['offset']=qs[_0xdf74('0x31')](_0x456ecb[_0xdf74('0x4b')]['offset']);}_0x3287b1[_0xdf74('0x6a')]=qs[_0xdf74('0x50')](_0x456ecb['query'][_0xdf74('0x50')]);_0x3287b1[_0xdf74('0x53')]=qs[_0xdf74('0x49')](_['pick'](_0x456ecb[_0xdf74('0x4b')],_0x265fb5[_0xdf74('0x49')]));_0x3287b1[_0xdf74('0x53')][_0xdf74('0x68')]=_0x5b64f8['id'];if(_0x456ecb[_0xdf74('0x4b')][_0xdf74('0x52')]){_0x3287b1[_0xdf74('0x53')]=_['merge'](_0x3287b1['where'],{'$or':_['map'](_0x3287b1['attributes'],function(_0x3f5ed1){var _0x252a8f={};_0x252a8f[_0x3f5ed1]={'$like':'%'+_0x456ecb[_0xdf74('0x4b')][_0xdf74('0x52')]+'%'};return _0x252a8f;})});}_0x3287b1=_[_0xdf74('0x54')]({},_0x3287b1,_0x456ecb[_0xdf74('0x56')]);return db[_0xdf74('0x6e')][_0xdf74('0x33')]({'where':_0x3287b1[_0xdf74('0x53')]})[_0xdf74('0x22')](function(_0x57758f){_0x1145e0[_0xdf74('0x33')]=_0x57758f;if(_0x456ecb[_0xdf74('0x4b')][_0xdf74('0x58')]){_0x3287b1[_0xdf74('0x59')]=[{'all':!![]}];}return db[_0xdf74('0x6e')]['findAll'](_0x3287b1);})['then'](function(_0x33f0fd){_0x1145e0[_0xdf74('0x6b')]=_0x33f0fd;return _0x1145e0;});}})[_0xdf74('0x22')](respondWithFilteredResult(_0xda49db,_0x3287b1))[_0xdf74('0x2c')](handleError(_0xda49db,null));};exports[_0xdf74('0x71')]=function(_0x49349b,_0x2fb04d,_0x1c5b9d){return db['WhatsappAccount'][_0xdf74('0x5d')]({'where':{'id':_0x49349b[_0xdf74('0x5b')]['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x2fb04d,null))[_0xdf74('0x22')](function(_0x2dc2d8){if(_0x2dc2d8){return _0x2dc2d8[_0xdf74('0x71')](_0x49349b[_0xdf74('0x4b')][_0xdf74('0x6c')]);}})[_0xdf74('0x22')](respondWithStatusCode(_0x2fb04d,null))[_0xdf74('0x2c')](handleError(_0x2fb04d,null));};exports[_0xdf74('0x72')]=function(_0x37c4db,_0x35c6d1,_0x3e0872){return db[_0xdf74('0x57')][_0xdf74('0x5d')]({'where':{'id':_0x37c4db[_0xdf74('0x5b')]['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x35c6d1,null))[_0xdf74('0x22')](function(_0x25c74d){if(_0x25c74d){return _0x25c74d['addAgents'](_0x37c4db[_0xdf74('0x5f')][_0xdf74('0x6c')],_[_0xdf74('0x73')](_0x37c4db[_0xdf74('0x5f')],[_0xdf74('0x6c'),'id'])||{})[_0xdf74('0x74')](function(_0x1eed76){for(var _0x1da0c7=0x0;_0x1da0c7<_0x37c4db[_0xdf74('0x5f')][_0xdf74('0x6c')]['length'];_0x1da0c7+=0x1){socket['emit'](_0xdf74('0x75'),{'UserId':Number(_0x37c4db[_0xdf74('0x5f')][_0xdf74('0x6c')][_0x1da0c7]),'WhatsappAccountId':Number(_0x37c4db['params']['id'])});}return _0x1eed76;});}})['then'](respondWithResult(_0x35c6d1,null))['catch'](handleError(_0x35c6d1,null));};exports['removeAgents']=function(_0xe1b326,_0x45fc97,_0x5778ed){return db['WhatsappAccount'][_0xdf74('0x5d')]({'where':{'id':_0xe1b326['params']['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x45fc97,null))[_0xdf74('0x22')](function(_0x5de961){if(_0x5de961){return _0x5de961['removeAgents'](_0xe1b326[_0xdf74('0x4b')][_0xdf74('0x6c')])[_0xdf74('0x22')](function(){if(_['isArray'](_0xe1b326['query']['ids'])){for(var _0x25e6b5=0x0;_0x25e6b5<_0xe1b326['query'][_0xdf74('0x6c')][_0xdf74('0x4d')];_0x25e6b5+=0x1){socket[_0xdf74('0x76')]('userWhatsappAccount:remove',{'UserId':Number(_0xe1b326[_0xdf74('0x4b')][_0xdf74('0x6c')][_0x25e6b5]),'WhatsappAccountId':Number(_0xe1b326['params']['id'])});}}else{socket['emit'](_0xdf74('0x77'),{'UserId':Number(_0xe1b326['query']['ids']),'WhatsappAccountId':Number(_0xe1b326[_0xdf74('0x5b')]['id'])});}});}})[_0xdf74('0x22')](respondWithStatusCode(_0x45fc97,null))[_0xdf74('0x2c')](handleError(_0x45fc97,null));};exports['getAgents']=function(_0x431df2,_0x2044fa,_0x256f8e){var _0x2e97f6={};var _0x5e3959={};var _0x1816cf;var _0xa7248b;return db[_0xdf74('0x57')][_0xdf74('0x70')]({'where':{'id':_0x431df2['params']['id']}})[_0xdf74('0x22')](handleEntityNotFound(_0x2044fa,null))[_0xdf74('0x22')](function(_0x4c3ab6){if(_0x4c3ab6){_0x1816cf=_0x4c3ab6;_0x5e3959[_0xdf74('0x46')]=_[_0xdf74('0x48')](db[_0xdf74('0x78')][_0xdf74('0x43')]);_0x5e3959['query']=_['keys'](_0x431df2[_0xdf74('0x4b')]);_0x5e3959[_0xdf74('0x49')]=_[_0xdf74('0x4a')](_0x5e3959[_0xdf74('0x46')],_0x5e3959[_0xdf74('0x4b')]);_0x2e97f6[_0xdf74('0x4c')]=_['intersection'](_0x5e3959[_0xdf74('0x46')],qs[_0xdf74('0x5c')](_0x431df2['query'][_0xdf74('0x5c')]));_0x2e97f6[_0xdf74('0x4c')]=_0x2e97f6[_0xdf74('0x4c')][_0xdf74('0x4d')]?_0x2e97f6[_0xdf74('0x4c')]:_0x5e3959[_0xdf74('0x46')];_0x2e97f6['order']=qs['sort'](_0x431df2[_0xdf74('0x4b')]['sort']);_0x2e97f6[_0xdf74('0x53')]=qs[_0xdf74('0x49')](_[_0xdf74('0x51')](_0x431df2['query'],_0x5e3959[_0xdf74('0x49')]));if(_0x431df2[_0xdf74('0x4b')]['filter']){_0x2e97f6[_0xdf74('0x53')]=_['merge'](_0x2e97f6[_0xdf74('0x53')],{'$or':_[_0xdf74('0x42')](_0x2e97f6['attributes'],function(_0x22dceb){var _0x391453={};_0x391453[_0x22dceb]={'$like':'%'+_0x431df2[_0xdf74('0x4b')][_0xdf74('0x52')]+'%'};return _0x391453;})});}_0x2e97f6=_[_0xdf74('0x54')]({},_0x2e97f6,_0x431df2['options']);return _0x1816cf['getAgents'](_0x2e97f6);}})[_0xdf74('0x22')](function(_0x19ab37){if(_0x19ab37){_0xa7248b=_0x19ab37['length'];if(!_0x431df2[_0xdf74('0x4b')]['hasOwnProperty'](_0xdf74('0x4f'))){_0x2e97f6[_0xdf74('0x34')]=qs[_0xdf74('0x34')](_0x431df2[_0xdf74('0x4b')][_0xdf74('0x34')]);_0x2e97f6[_0xdf74('0x31')]=qs[_0xdf74('0x31')](_0x431df2['query'][_0xdf74('0x31')]);}return _0x1816cf[_0xdf74('0x79')](_0x2e97f6);}})[_0xdf74('0x22')](function(_0x4fc024){if(_0x4fc024){return _0x4fc024?{'count':_0xa7248b,'rows':_0x4fc024}:null;}})[_0xdf74('0x22')](respondWithResult(_0x2044fa,null))[_0xdf74('0x2c')](handleError(_0x2044fa,null));};exports['addApplications']=function(_0x5572ef,_0x3f44fb){var _0x59eb8b=_0x5572ef['params']['id'];var _0x1bce7e=_0x5572ef[_0xdf74('0x5f')];var _0x5e0de2=0xc8;var _0x146284=null;return db[_0xdf74('0x7a')][_0xdf74('0x7b')]({'isolationLevel':db[_0xdf74('0x7a')][_0xdf74('0x7c')][_0xdf74('0x7d')][_0xdf74('0x7e')]},function(_0x1a3145){return db[_0xdf74('0x57')][_0xdf74('0x70')]({'where':{'id':_0x59eb8b},'transaction':_0x1a3145})[_0xdf74('0x22')](function(_0x24c58a){if(_0x24c58a){return db['WhatsappApplication'][_0xdf74('0x3d')]({'where':{'WhatsappAccountId':_0x59eb8b},'transaction':_0x1a3145})[_0xdf74('0x22')](function(){var _0x17a98e=_[_0xdf74('0x42')](_0x1bce7e,function(_0x58e869){_0x58e869[_0xdf74('0x68')]=_0x59eb8b;return _0x58e869;});return db[_0xdf74('0x7f')][_0xdf74('0x80')](_0x17a98e,{'transaction':_0x1a3145});});}else{_0x5e0de2=0x194;_0x146284=[];}});})[_0xdf74('0x22')](function(){if(_0x5e0de2!==0x194){return db['WhatsappApplication'][_0xdf74('0x81')]({'where':{'WhatsappAccountId':_0x59eb8b},'order':'priority'})['then'](function(_0x5b28f6){_0x146284=_0x5b28f6;});}})['catch'](function(_0x1e20ea){_0x5e0de2=0x1f4;logger[_0xdf74('0x28')](_0x1e20ea['stack']);if(_0x1e20ea[_0xdf74('0x47')]){delete _0x1e20ea[_0xdf74('0x47')];}_0x146284=_0x1e20ea;})[_0xdf74('0x82')](function(){if(_0x146284===null){_0x3f44fb[_0xdf74('0x2d')](_0x5e0de2);}else{if(_0x5e0de2===0x1f4){_0x3f44fb[_0xdf74('0x2e')](_0x5e0de2)[_0xdf74('0x3f')](_0x146284);}else{_0x3f44fb[_0xdf74('0x2e')](_0x5e0de2)[_0xdf74('0x30')](_0x146284);}}});};exports[_0xdf74('0x83')]=function(_0x36d6b2,_0x3e2a0e,_0x395a0a){var _0x30a395={};var _0x3abd2d={};var _0x44ae4b;var _0x1eed1b;return db[_0xdf74('0x57')][_0xdf74('0x70')]({'where':{'id':_0x36d6b2['params']['id']}})['then'](handleEntityNotFound(_0x3e2a0e,null))[_0xdf74('0x22')](function(_0x58cb52){if(_0x58cb52){_0x44ae4b=_0x58cb52;_0x3abd2d['model']=_['keys'](db[_0xdf74('0x7f')][_0xdf74('0x43')]);_0x3abd2d[_0xdf74('0x4b')]=_[_0xdf74('0x48')](_0x36d6b2[_0xdf74('0x4b')]);_0x3abd2d[_0xdf74('0x49')]=_['intersection'](_0x3abd2d[_0xdf74('0x46')],_0x3abd2d[_0xdf74('0x4b')]);_0x30a395[_0xdf74('0x4c')]=_[_0xdf74('0x4a')](_0x3abd2d[_0xdf74('0x46')],qs[_0xdf74('0x5c')](_0x36d6b2[_0xdf74('0x4b')][_0xdf74('0x5c')]));_0x30a395['attributes']=_0x30a395[_0xdf74('0x4c')][_0xdf74('0x4d')]?_0x30a395['attributes']:_0x3abd2d[_0xdf74('0x46')];_0x30a395[_0xdf74('0x6a')]=qs['sort'](_0x36d6b2[_0xdf74('0x4b')][_0xdf74('0x50')]);_0x30a395[_0xdf74('0x53')]=qs[_0xdf74('0x49')](_[_0xdf74('0x51')](_0x36d6b2[_0xdf74('0x4b')],_0x3abd2d[_0xdf74('0x49')]));if(_0x36d6b2[_0xdf74('0x4b')]['filter']){_0x30a395[_0xdf74('0x53')]=_[_0xdf74('0x54')](_0x30a395[_0xdf74('0x53')],{'$or':_[_0xdf74('0x42')](_0x30a395[_0xdf74('0x4c')],function(_0x1e32a8){var _0x3482de={};_0x3482de[_0x1e32a8]={'$like':'%'+_0x36d6b2[_0xdf74('0x4b')][_0xdf74('0x52')]+'%'};return _0x3482de;})});}_0x30a395=_[_0xdf74('0x54')]({},_0x30a395,_0x36d6b2['options']);return _0x44ae4b[_0xdf74('0x83')](_0x30a395);}})[_0xdf74('0x22')](function(_0x30bc2d){if(_0x30bc2d){_0x1eed1b=_0x30bc2d[_0xdf74('0x4d')];if(!_0x36d6b2['query'][_0xdf74('0x4e')](_0xdf74('0x4f'))){_0x30a395['limit']=qs[_0xdf74('0x34')](_0x36d6b2['query'][_0xdf74('0x34')]);_0x30a395['offset']=qs[_0xdf74('0x31')](_0x36d6b2[_0xdf74('0x4b')][_0xdf74('0x31')]);}return _0x44ae4b[_0xdf74('0x83')](_0x30a395);}})[_0xdf74('0x22')](function(_0x10f862){if(_0x10f862){return _0x10f862?{'count':_0x1eed1b,'rows':_0x10f862}:null;}})[_0xdf74('0x22')](respondWithResult(_0x3e2a0e,null))[_0xdf74('0x2c')](handleError(_0x3e2a0e,null));};exports[_0xdf74('0x84')]=function(_0x35165c,_0x330c2e,_0x498f0c){var _0x429d8e={'channel':'whatsapp'};var _0x549599=[];var _0x3f87b7=[];var _0x1b58a0={};return db['WhatsappAccount'][_0xdf74('0x5d')]({'where':{'id':_0x35165c[_0xdf74('0x5b')]['id']},'include':[{'model':db[_0xdf74('0x7f')],'as':_0xdf74('0x85')}]})[_0xdf74('0x22')](handleEntityNotFound(_0x330c2e,null))[_0xdf74('0x22')](function(_0x13848f){_0x429d8e[_0xdf74('0x86')]=_0x13848f;if(_0x429d8e[_0xdf74('0x86')]&&_0x429d8e[_0xdf74('0x86')][_0xdf74('0x45')]===_0xdf74('0x87')&&_0x35165c[_0xdf74('0x5f')][_0xdf74('0x88')]){if(_0x35165c['body'][_0xdf74('0x88')][_0xdf74('0x4d')]===0x0)return;if(_0x35165c[_0xdf74('0x5f')]['statuses'][0x0]['state']!==_0xdf74('0x89'))return;return db[_0xdf74('0x8a')]['update']({'read':!![],'readAt':_0x35165c[_0xdf74('0x5f')][_0xdf74('0x88')][0x0][_0xdf74('0x8b')]},{'where':{'messageId':_0x35165c[_0xdf74('0x5f')]['statuses'][0x0][_0xdf74('0x8c')]},'individualHooks':!![]})['then'](function(_0x7a860d){return _0x330c2e[_0xdf74('0x2e')](0xc8)['json'](_0x7a860d);});}_0x429d8e[_0xdf74('0x8d')]=_[_0xdf74('0x8e')](_0x13848f['Applications'],[_0xdf74('0x8f')],[_0xdf74('0x90')]);if(_0x429d8e[_0xdf74('0x86')][_0xdf74('0x85')]){delete _0x429d8e['account'][_0xdf74('0x85')];}return db[_0xdf74('0x91')]['describe']()['then'](function(_0x2d5672){if(!_0x2d5672){throw new db[(_0xdf74('0x92'))][(_0xdf74('0x93'))](_0xdf74('0x94'));}_0x549599=_[_0xdf74('0x95')](_[_0xdf74('0x48')](_0x2d5672),[_0xdf74('0x96'),_0xdf74('0x97')]);_0x3f87b7=_['difference'](_[_0xdf74('0x48')](_0x2d5672),[_0xdf74('0x96'),'updatedAt',_0xdf74('0x98'),'ListId']);_0x429d8e['body']={'mapKey':_0xdf74('0x99')};if(_0x429d8e[_0xdf74('0x86')]&&_0x429d8e[_0xdf74('0x86')]['type']===_0xdf74('0x9a')){_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9b')]=_0x35165c['body'][_0xdf74('0x9c')][_0xdf74('0x9d')]('whatsapp:','');_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x5f')]=_0x35165c[_0xdf74('0x5f')]['Body'];_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9e')]=_0x35165c[_0xdf74('0x5f')][_0xdf74('0x9f')];}if(_0x429d8e['account']&&_0x429d8e[_0xdf74('0x86')]['type']===_0xdf74('0x87')){_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9b')]=_0x35165c[_0xdf74('0x5f')][_0xdf74('0xa0')][0x0]['from'];_0x429d8e[_0xdf74('0x5f')]['body']=_0x35165c[_0xdf74('0x5f')][_0xdf74('0xa0')][0x0][_0xdf74('0x2a')][_0xdf74('0x5f')];_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9e')]=_0x35165c[_0xdf74('0x5f')][_0xdf74('0xa0')][0x0][_0xdf74('0x8c')];}if(_0x429d8e[_0xdf74('0x5f')]['id']){delete _0x429d8e['body']['id'];}if(_[_0xdf74('0xa1')](_0x429d8e['body']['from'])){throw new db['Sequelize'][(_0xdf74('0x93'))](_0xdf74('0xa2'));}if(_[_0xdf74('0xa1')](_0x429d8e['body'][_0xdf74('0x5f')])||_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x5f')]===''){throw new db[(_0xdf74('0x92'))][(_0xdf74('0x93'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xdf74('0xa1')](_0x429d8e[_0xdf74('0x5f')]['mapKey'])){throw new db[(_0xdf74('0x92'))]['ValidationError'](_0xdf74('0xa3')+_0x3f87b7);}if(!_[_0xdf74('0xa4')](_0x3f87b7,_0x429d8e[_0xdf74('0x5f')][_0xdf74('0xa5')])){throw new db[(_0xdf74('0x92'))][(_0xdf74('0x93'))](_0xdf74('0xa6')+_0x3f87b7);}_0x1b58a0[_0x429d8e['body'][_0xdf74('0xa5')]]=_0x429d8e['body'][_0xdf74('0x9b')];return db[_0xdf74('0xa7')][_0xdf74('0x5d')]({'where':{'id':_0x429d8e[_0xdf74('0x86')][_0xdf74('0xa8')]},'include':[{'model':db['CmContact'],'as':_0xdf74('0xa9'),'where':_0x1b58a0,'limit':0x1,'order':[[_0xdf74('0x97'),_0xdf74('0xaa')]]}]});})['then'](handleEntityNotFound(_0x330c2e,null))[_0xdf74('0x22')](function(_0x69b81a){if(_0x69b81a){_0x429d8e[_0xdf74('0xab')]=_['omit'](_0x69b81a,[_0xdf74('0xa9')]);if(_0x69b81a[_0xdf74('0xa9')][_0xdf74('0x4d')]){return _0x69b81a['Contacts'][0x0];}var _0x36be5b=_[_0xdf74('0x1c')](_0x429d8e[_0xdf74('0x5f')],{'firstName':_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9b')],'ListId':_0x69b81a['id']});_0x36be5b[_0x429d8e[_0xdf74('0x5f')][_0xdf74('0xa5')]]=_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9b')];return db[_0xdf74('0x91')]['create'](_0x36be5b,{'fields':_0x549599,'raw':!![]});}})[_0xdf74('0x22')](handleEntityNotFound(_0x330c2e,null))[_0xdf74('0x22')](function(_0x1add7b){if(_0x1add7b){_0x429d8e['contact']=_0x1add7b;var _0x147e4e={'ContactId':_0x1add7b['id'],'phone':_0x429d8e[_0xdf74('0x5f')]['from'],'WhatsappAccountId':_0x35165c[_0xdf74('0x5b')]['id']};var _0x5feee4={'ContactId':_0x1add7b['id'],'WhatsappAccountId':_0x35165c['params']['id'],'closed':![]};return db[_0xdf74('0xac')]['find']({'where':_0x5feee4})[_0xdf74('0x22')](function(_0x30cc2c){if(_0x30cc2c){return[_0x30cc2c,![]];}return db[_0xdf74('0xac')][_0xdf74('0x5e')](_0x147e4e)[_0xdf74('0x22')](function(_0x317a52){return[_0x317a52,!![]];});});}})[_0xdf74('0x74')](function(_0xa4780d,_0x287632){_0x429d8e[_0xdf74('0xad')]=_0xa4780d[_0xdf74('0x3b')]({'plain':!![]});_0x429d8e[_0xdf74('0xad')][_0xdf74('0xae')]=![];if(_0x287632){if(_0x429d8e[_0xdf74('0x86')]['autoclose']){_0x429d8e[_0xdf74('0x8d')][_0xdf74('0xaf')]({'id':0x0,'priority':_0x429d8e[_0xdf74('0x8d')][_0xdf74('0x4d')]+0x1,'app':_0xdf74('0xb0'),'appdata':_0xdf74('0xb1'),'interval':_0xdf74('0xb2')});}_0x429d8e[_0xdf74('0xad')][_0xdf74('0xae')]=!![];}return db[_0xdf74('0x8a')][_0xdf74('0x5e')]({'phone':_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9b')],'messageId':_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x9e')],'body':_0x429d8e[_0xdf74('0x5f')][_0xdf74('0x5f')],'WhatsappAccountId':_0x35165c[_0xdf74('0x5b')]['id'],'WhatsappInteractionId':_0xa4780d['id'],'direction':'in','ContactId':_0xa4780d['ContactId'],'AttachmentId':_0x429d8e['body']['AttachmentId']});})[_0xdf74('0x22')](function(_0x59dcbf){_0x429d8e[_0xdf74('0x2a')]=_0x59dcbf;if(_0x429d8e[_0xdf74('0xad')][_0xdf74('0xb3')]){return db[_0xdf74('0x78')][_0xdf74('0x5d')]({'attributes':['id',_0xdf74('0x47')],'where':{'id':_0x429d8e[_0xdf74('0xad')][_0xdf74('0xb3')]}})['then'](function(_0x588249){if(_0x588249){_0x429d8e[_0xdf74('0x8d')][_0xdf74('0xb4')]({'id':0x0,'priority':0x0,'app':_0xdf74('0xb5'),'appdata':_0x588249[_0xdf74('0x47')]+','+(_0x429d8e[_0xdf74('0x86')][_0xdf74('0xb6')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xdf74('0xb7'),_0xdf74('0xb8'),_0x429d8e);});}return respondWithRpcPromise(_0xdf74('0xb7'),'startRouting',_0x429d8e);})[_0xdf74('0x22')](function(_0x2e3bd8){if(_0x2e3bd8){var _0x3ad59d=0xc8;var _0x207428='receiveMessage';logger[_0xdf74('0x23')](_0xdf74('0xb9'),_0x207428,_0x3ad59d,_0xdf74('0xba'));logger[_0xdf74('0x26')]('WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x207428,_0x3ad59d,'entity\x20found',JSON[_0xdf74('0x27')](_0x2e3bd8));if(_0x429d8e[_0xdf74('0x86')]['type']==='twilio'){return _0x330c2e[_0xdf74('0x2e')](_0x3ad59d)[_0xdf74('0x35')](_0xdf74('0xbb'),_0xdf74('0xbc'))['send'](_0xdf74('0xbd'));}else{return _0x330c2e[_0xdf74('0x2e')](_0x3ad59d)[_0xdf74('0x30')](_0x2e3bd8);}}});})[_0xdf74('0x2c')](handleError(_0x330c2e,null));};exports[_0xdf74('0x3f')]=function(_0x1202ca,_0x5ab9ae,_0x235612){var _0x7748a,_0x3b5421,_0x560934;if(_[_0xdf74('0xa1')](_0x1202ca[_0xdf74('0x5f')][_0xdf74('0x5f')])||_0x1202ca[_0xdf74('0x5f')][_0xdf74('0x5f')]===''){throw new db[(_0xdf74('0x92'))][(_0xdf74('0x93'))](_0xdf74('0xbe'));}if(_[_0xdf74('0xa1')](_0x1202ca['body']['to'])){throw new db['Sequelize'][(_0xdf74('0x93'))](_0xdf74('0xbf'));}_0x7748a=_0x1202ca['body']['to'];return db[_0xdf74('0x57')]['find']({'where':{'id':_0x1202ca[_0xdf74('0x5b')]['id']},'include':[{'model':db[_0xdf74('0xa7')],'as':_0xdf74('0xc0'),'include':[{'model':db[_0xdf74('0x91')],'as':'Contacts','where':{'mobile':_0x7748a},'limit':0x1,'order':[[_0xdf74('0x97'),_0xdf74('0xaa')]]}]}]})[_0xdf74('0x22')](handleEntityNotFound(_0x5ab9ae,null))[_0xdf74('0x22')](function(_0x586934){if(_0x586934&&_0x586934['List']){_0x3b5421=_0x586934[_0xdf74('0x3b')]({'plain':!![]});if(_0x3b5421[_0xdf74('0xc0')]&&_0x3b5421['List'][_0xdf74('0xa9')][_0xdf74('0x4d')]){return _0x3b5421[_0xdf74('0xc0')][_0xdf74('0xa9')][0x0];}return db['CmContact']['create'](_[_0xdf74('0x1c')](_0x1202ca[_0xdf74('0x5f')],{'firstName':_0x7748a,'mobile':_0x7748a,'phone':_0x7748a,'ListId':_0x3b5421[_0xdf74('0xa8')]}));}})[_0xdf74('0x22')](handleEntityNotFound(_0x5ab9ae,null))[_0xdf74('0x22')](function(_0x525255){if(_0x525255){_0x560934=_0x525255;return db[_0xdf74('0xac')][_0xdf74('0x5d')]({'where':{'ContactId':_0x560934['id'],'closed':![],'WhatsappAccountId':_0x3b5421['id']}})[_0xdf74('0x22')](function(_0x206d70){if(_0x206d70){return[_0x206d70,![]];}return db[_0xdf74('0xac')][_0xdf74('0x5e')]({'UserId':_0x1202ca[_0xdf74('0x60')]['id'],'ContactId':_0x560934['id'],'WhatsappAccountId':_0x3b5421['id'],'phone':_0x7748a,'firstMsgDirection':_0xdf74('0xc1'),'Messages':[_[_0xdf74('0x54')](_0x1202ca[_0xdf74('0x5f')],{'read':![],'body':_0x1202ca[_0xdf74('0x5f')][_0xdf74('0x5f')],'phone':_0x7748a,'WhatsappAccountId':_0x3b5421['id'],'UserId':_0x1202ca[_0xdf74('0x60')]['id'],'ContactId':_0x560934['id']})]},{'include':[{'model':db[_0xdf74('0x8a')],'as':_0xdf74('0xc2')}]})[_0xdf74('0x22')](function(_0x2afc4c){return[_0x2afc4c,!![]];});});}})[_0xdf74('0x74')](function(_0x43e64f,_0x1cdde1){if(_0x1cdde1){return _0x43e64f;}return db[_0xdf74('0x8a')]['create'](_[_0xdf74('0x54')](_0x1202ca[_0xdf74('0x5f')],{'read':![],'body':_0x1202ca[_0xdf74('0x5f')][_0xdf74('0x5f')],'phone':_0x7748a,'WhatsappAccountId':_0x3b5421['id'],'WhatsappInteractionId':_0x43e64f['id'],'UserId':_0x1202ca[_0xdf74('0x60')]['id'],'ContactId':_0x560934['id']}))[_0xdf74('0x22')](function(_0x2cd1d5){_0x43e64f[_0xdf74('0xc3')]['Messages']=[];_0x43e64f[_0xdf74('0xc3')][_0xdf74('0xc2')][_0xdf74('0xaf')](_0x2cd1d5['dataValues']);return _0x43e64f;});})[_0xdf74('0x22')](respondWithResult(_0x5ab9ae,null))[_0xdf74('0x2c')](handleError(_0x5ab9ae,null));};
\ No newline at end of file
+var _0x9dee=['push','close','ContactId','AttachmentId','UserId','unshift','*,*,*,*','Start','startRouting','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','List','DESC','out','dataValues','Messages','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','client','http','request','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','WhatsappAccounts','stack','name','index','Pause','map','rawAttributes','fieldName','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','WhatsappAccount','includeAll','include','findAll','show','params','mandatoryDispositionPause','keys','find','create','body','user','get','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','WhatsappAccountId','findOne','Disposition','rows','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','length','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','getAgents','User','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','bulkCreate','WhatsappApplication','priority','finally','send','getApplications','notify','Applications','account','type','statuses','WhatsappMessage','message_id','applications','asc','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','replace','whatsapp:','Body','messageId','MessageSid','sinch','notifications','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','includes','CmList','omit','Contacts','WhatsappInteraction','interaction','created','autoclose'];(function(_0x1f1719,_0xcc8e22){var _0x26dcd1=function(_0x503f5b){while(--_0x503f5b){_0x1f1719['push'](_0x1f1719['shift']());}};_0x26dcd1(++_0xcc8e22);}(_0x9dee,0xd9));var _0xe9de=function(_0x434783,_0xff395d){_0x434783=_0x434783-0x0;var _0x13efcf=_0x9dee[_0x434783];return _0x13efcf;};'use strict';var emlformat=require(_0xe9de('0x0'));var rimraf=require(_0xe9de('0x1'));var zipdir=require(_0xe9de('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe9de('0x3'));var moment=require(_0xe9de('0x4'));var BPromise=require(_0xe9de('0x5'));var Mustache=require('mustache');var util=require(_0xe9de('0x6'));var path=require('path');var sox=require(_0xe9de('0x7'));var csv=require(_0xe9de('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9de('0x9'));var _=require(_0xe9de('0xa'));var squel=require(_0xe9de('0xb'));var crypto=require(_0xe9de('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xe9de('0xd'));var toCsv=require(_0xe9de('0x8'));var querystring=require(_0xe9de('0xe'));var Papa=require(_0xe9de('0xf'));var Redis=require(_0xe9de('0x10'));var authService=require(_0xe9de('0x11'));var qs=require(_0xe9de('0x12'));var as=require(_0xe9de('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xe9de('0x14'));var utils=require(_0xe9de('0x15'));var config=require(_0xe9de('0x16'));var licenseUtil=require(_0xe9de('0x17'));var db=require(_0xe9de('0x18'))['db'];config[_0xe9de('0x19')]=_[_0xe9de('0x1a')](config['redis'],{'host':_0xe9de('0x1b'),'port':0x18eb});var socket=require(_0xe9de('0x1c'))(new Redis(config[_0xe9de('0x19')]));require(_0xe9de('0x1d'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xe9de('0x1e')][_0xe9de('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x346e3c,_0x33f160,_0x19a5a6,_0x4925c3){return new BPromise(function(_0x575afc,_0x396dba){var _0x26ac71=_0x4925c3||client;return _0x26ac71[_0xe9de('0x20')](_0x346e3c,_0x19a5a6)[_0xe9de('0x21')](function(_0x5740c6){logger[_0xe9de('0x22')](_0xe9de('0x23'),_0x33f160,_0xe9de('0x24'));logger[_0xe9de('0x25')]('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0x33f160,'request\x20sent',JSON[_0xe9de('0x26')](_0x5740c6));if(_0x5740c6[_0xe9de('0x27')]){if(_0x5740c6['error']['code']===0x1f4){logger[_0xe9de('0x27')](_0xe9de('0x23'),_0x33f160,_0x5740c6[_0xe9de('0x27')]['message']);return _0x396dba(_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);}logger[_0xe9de('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x33f160,_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);return _0x575afc(_0x5740c6[_0xe9de('0x27')][_0xe9de('0x28')]);}else{logger[_0xe9de('0x22')](_0xe9de('0x23'),_0x33f160,_0xe9de('0x24'));_0x575afc(_0x5740c6[_0xe9de('0x29')][_0xe9de('0x28')]);}})[_0xe9de('0x2a')](function(_0x2a11f6){logger[_0xe9de('0x27')](_0xe9de('0x23'),_0x33f160,_0x2a11f6);_0x396dba(_0x2a11f6);});});}function respondWithStatusCode(_0x372b32,_0x1dfe73){_0x1dfe73=_0x1dfe73||0xcc;return function(_0x5e2f9f){if(_0x5e2f9f){return _0x372b32[_0xe9de('0x2b')](_0x1dfe73);}return _0x372b32[_0xe9de('0x2c')](_0x1dfe73)[_0xe9de('0x2d')]();};}function respondWithResult(_0x34b86a,_0x4ddd7d){_0x4ddd7d=_0x4ddd7d||0xc8;return function(_0x2f5f37){if(_0x2f5f37){return _0x34b86a[_0xe9de('0x2c')](_0x4ddd7d)[_0xe9de('0x2e')](_0x2f5f37);}};}function respondWithFilteredResult(_0xc0fcf7,_0x56a707){return function(_0x5f5185){if(_0x5f5185){var _0x23e9db=typeof _0x56a707[_0xe9de('0x2f')]===_0xe9de('0x30')&&typeof _0x56a707[_0xe9de('0x31')]==='undefined';var _0x4ac8be=_0x5f5185[_0xe9de('0x32')];var _0x1da3c7=_0x23e9db?0x0:_0x56a707[_0xe9de('0x2f')];var _0x2134a6=_0x23e9db?_0x5f5185[_0xe9de('0x32')]:_0x56a707[_0xe9de('0x2f')]+_0x56a707[_0xe9de('0x31')];var _0x464f24;if(_0x2134a6>=_0x4ac8be){_0x2134a6=_0x4ac8be;_0x464f24=0xc8;}else{_0x464f24=0xce;}_0xc0fcf7['status'](_0x464f24);return _0xc0fcf7[_0xe9de('0x33')](_0xe9de('0x34'),_0x1da3c7+'-'+_0x2134a6+'/'+_0x4ac8be)[_0xe9de('0x2e')](_0x5f5185);}return null;};}function patchUpdates(_0x29d593){return function(_0x32294e){try{jsonpatch['apply'](_0x32294e,_0x29d593,!![]);}catch(_0x27326c){return BPromise[_0xe9de('0x35')](_0x27326c);}return _0x32294e[_0xe9de('0x36')]();};}function saveUpdates(_0x524f16,_0x20aa98){return function(_0x487df5){if(_0x487df5){return _0x487df5[_0xe9de('0x37')](_0x524f16)[_0xe9de('0x21')](function(_0x4079d2){return _0x4079d2;});}return null;};}function removeEntity(_0x28d24c,_0x266e7c){return function(_0x84d837){if(_0x84d837){return _0x84d837[_0xe9de('0x38')]()['then'](function(){var _0x19e56c=_0x84d837['get']({'plain':!![]});var _0x54a498=_0xe9de('0x39');return db['UserProfileResource'][_0xe9de('0x38')]({'where':{'type':_0x54a498,'resourceId':_0x19e56c['id']}})['then'](function(){return _0x84d837;});})[_0xe9de('0x21')](function(){_0x28d24c[_0xe9de('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0xe25a5b,_0x37c3a8){return function(_0x1253c4){if(!_0x1253c4){_0xe25a5b[_0xe9de('0x2b')](0x194);}return _0x1253c4;};}function handleError(_0x16b165,_0x16a2d2){_0x16a2d2=_0x16a2d2||0x1f4;return function(_0x3e8831){logger[_0xe9de('0x27')](_0x3e8831[_0xe9de('0x3a')]);if(_0x3e8831[_0xe9de('0x3b')]){delete _0x3e8831['name'];}_0x16b165['status'](_0x16a2d2)['send'](_0x3e8831);};}exports[_0xe9de('0x3c')]=function(_0x18a9e0,_0x508533){var _0x27b8be={'include':[{'model':db[_0xe9de('0x3d')],'as':'mandatoryDispositionPause'}]},_0x479da5={},_0x552e7b={'count':0x0,'rows':[]};var _0x24df70=_[_0xe9de('0x3e')](db['WhatsappAccount'][_0xe9de('0x3f')],function(_0x25d09d){return{'name':_0x25d09d[_0xe9de('0x40')],'type':_0x25d09d['type'][_0xe9de('0x41')]};});_0x479da5[_0xe9de('0x42')]=_[_0xe9de('0x3e')](_0x24df70,_0xe9de('0x3b'));_0x479da5[_0xe9de('0x43')]=_['keys'](_0x18a9e0[_0xe9de('0x43')]);_0x479da5[_0xe9de('0x44')]=_[_0xe9de('0x45')](_0x479da5[_0xe9de('0x42')],_0x479da5[_0xe9de('0x43')]);_0x27b8be[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x479da5[_0xe9de('0x42')],qs[_0xe9de('0x47')](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x47')]));_0x27b8be['attributes']=_0x27b8be['attributes']['length']?_0x27b8be[_0xe9de('0x46')]:_0x479da5[_0xe9de('0x42')];if(!_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x48')](_0xe9de('0x49'))){_0x27b8be[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x31')]);_0x27b8be[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x18a9e0['query'][_0xe9de('0x2f')]);}_0x27b8be[_0xe9de('0x4a')]=qs['sort'](_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4b')]);_0x27b8be[_0xe9de('0x4c')]=qs['filters'](_[_0xe9de('0x4d')](_0x18a9e0[_0xe9de('0x43')],_0x479da5[_0xe9de('0x44')]),_0x24df70);if(_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x27b8be['where']=_[_0xe9de('0x4f')](_0x27b8be[_0xe9de('0x4c')],{'$or':_[_0xe9de('0x3e')](_0x24df70,function(_0x822c6e){if(_0x822c6e['type']!==_0xe9de('0x50')){var _0x3f9a9e={};_0x3f9a9e[_0x822c6e[_0xe9de('0x3b')]]={'$like':'%'+_0x18a9e0[_0xe9de('0x43')][_0xe9de('0x4e')]+'%'};return _0x3f9a9e;}})});}_0x27b8be=_[_0xe9de('0x4f')]({},_0x27b8be,_0x18a9e0[_0xe9de('0x51')]);var _0x515331={'where':_0x27b8be[_0xe9de('0x4c')]};return db[_0xe9de('0x52')][_0xe9de('0x32')](_0x515331)[_0xe9de('0x21')](function(_0xd05a90){_0x552e7b['count']=_0xd05a90;if(_0x18a9e0['query'][_0xe9de('0x53')]){_0x27b8be[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x52')][_0xe9de('0x55')](_0x27b8be);})[_0xe9de('0x21')](function(_0x211c84){_0x552e7b['rows']=_0x211c84;return _0x552e7b;})['then'](respondWithFilteredResult(_0x508533,_0x27b8be))[_0xe9de('0x2a')](handleError(_0x508533,null));};exports[_0xe9de('0x56')]=function(_0x1e8190,_0x58b296){var _0x4bc699={'raw':![],'where':{'id':_0x1e8190[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x3d')],'as':_0xe9de('0x58')}]},_0x1624f2={};_0x1624f2[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x52')][_0xe9de('0x3f')]);_0x1624f2['query']=_[_0xe9de('0x59')](_0x1e8190[_0xe9de('0x43')]);_0x1624f2[_0xe9de('0x44')]=_['intersection'](_0x1624f2['model'],_0x1624f2['query']);_0x4bc699[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x1624f2[_0xe9de('0x42')],qs['fields'](_0x1e8190[_0xe9de('0x43')][_0xe9de('0x47')]));_0x4bc699[_0xe9de('0x46')]=_0x4bc699[_0xe9de('0x46')]['length']?_0x4bc699[_0xe9de('0x46')]:_0x1624f2[_0xe9de('0x42')];if(_0x1e8190[_0xe9de('0x43')][_0xe9de('0x53')]){_0x4bc699['include']=[{'all':!![]}];}_0x4bc699=_[_0xe9de('0x4f')]({},_0x4bc699,_0x1e8190[_0xe9de('0x51')]);return db['WhatsappAccount'][_0xe9de('0x5a')](_0x4bc699)[_0xe9de('0x21')](handleEntityNotFound(_0x58b296,null))[_0xe9de('0x21')](respondWithResult(_0x58b296,null))['catch'](handleError(_0x58b296,null));};exports[_0xe9de('0x5b')]=function(_0x194568,_0x186035){return db['WhatsappAccount'][_0xe9de('0x5b')](_0x194568[_0xe9de('0x5c')],{})['then'](function(_0x31f4f9){var _0x1e2065=_0x194568[_0xe9de('0x5d')][_0xe9de('0x5e')]({'plain':!![]});if(!_0x1e2065)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e2065[_0xe9de('0x5f')]===_0xe9de('0x5d')){var _0x7aa6f6=_0x31f4f9['get']({'plain':!![]});var _0x584f9f=_0xe9de('0x39');return db[_0xe9de('0x60')][_0xe9de('0x5a')]({'where':{'name':_0x584f9f,'userProfileId':_0x1e2065[_0xe9de('0x61')]},'raw':!![]})[_0xe9de('0x21')](function(_0x30a259){if(_0x30a259&&_0x30a259[_0xe9de('0x62')]===0x0){return db[_0xe9de('0x63')][_0xe9de('0x5b')]({'name':_0x7aa6f6[_0xe9de('0x3b')],'resourceId':_0x7aa6f6['id'],'type':_0x30a259[_0xe9de('0x3b')],'sectionId':_0x30a259['id']},{})['then'](function(){return _0x31f4f9;});}else{return _0x31f4f9;}})[_0xe9de('0x2a')](function(_0xeb67e4){logger['error'](_0xe9de('0x64'),_0xeb67e4);throw _0xeb67e4;});}return _0x31f4f9;})[_0xe9de('0x21')](respondWithResult(_0x186035,0xc9))['catch'](handleError(_0x186035,null));};exports[_0xe9de('0x37')]=function(_0x1d06a1,_0x404158){if(_0x1d06a1['body']['id']){delete _0x1d06a1[_0xe9de('0x5c')]['id'];}return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x1d06a1[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x3d')],'as':_0xe9de('0x58')}]})['then'](handleEntityNotFound(_0x404158,null))['then'](saveUpdates(_0x1d06a1[_0xe9de('0x5c')],null))['then'](respondWithResult(_0x404158,null))[_0xe9de('0x2a')](handleError(_0x404158,null));};exports[_0xe9de('0x38')]=function(_0x52e9af,_0x374c9a){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x52e9af[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x374c9a,null))[_0xe9de('0x21')](removeEntity(_0x374c9a,null))[_0xe9de('0x2a')](handleError(_0x374c9a,null));};exports[_0xe9de('0x65')]=function(_0x6ac4c2,_0x579110){return db[_0xe9de('0x52')][_0xe9de('0x65')]()['then'](respondWithResult(_0x579110,null))[_0xe9de('0x2a')](handleError(_0x579110,null));};exports[_0xe9de('0x66')]=function(_0x16d14a,_0x29be4e,_0x255746){if(_0x16d14a['body']['id']){delete _0x16d14a[_0xe9de('0x5c')]['id'];}return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x16d14a[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x29be4e,null))[_0xe9de('0x21')](function(_0x35be1e){if(_0x35be1e){_0x16d14a[_0xe9de('0x5c')][_0xe9de('0x67')]=_0x35be1e['id'];return db['Disposition'][_0xe9de('0x5b')](_0x16d14a[_0xe9de('0x5c')]);}})[_0xe9de('0x21')](respondWithResult(_0x29be4e,null))[_0xe9de('0x2a')](handleError(_0x29be4e,null));};exports['getDispositions']=function(_0x3659e9,_0x1670aa,_0x17c870){var _0x1ca2d2={'raw':![],'where':{}};var _0x2d66da={};var _0x5a57c4={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x3659e9['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1670aa,null))[_0xe9de('0x21')](function(_0xc4d10c){if(_0xc4d10c){_0x2d66da[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x69')][_0xe9de('0x3f')]);_0x2d66da['query']=_[_0xe9de('0x59')](_0x3659e9[_0xe9de('0x43')]);_0x2d66da[_0xe9de('0x44')]=_['intersection'](_0x2d66da[_0xe9de('0x42')],_0x2d66da[_0xe9de('0x43')]);_0x1ca2d2[_0xe9de('0x46')]=_['intersection'](_0x2d66da[_0xe9de('0x42')],qs[_0xe9de('0x47')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x47')]));_0x1ca2d2[_0xe9de('0x46')]=_0x1ca2d2['attributes']['length']?_0x1ca2d2['attributes']:_0x2d66da[_0xe9de('0x42')];if(!_0x3659e9[_0xe9de('0x43')]['hasOwnProperty']('nolimit')){_0x1ca2d2[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x31')]);_0x1ca2d2[_0xe9de('0x2f')]=qs['offset'](_0x3659e9['query'][_0xe9de('0x2f')]);}_0x1ca2d2[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x3659e9[_0xe9de('0x43')][_0xe9de('0x4b')]);_0x1ca2d2[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x3659e9[_0xe9de('0x43')],_0x2d66da['filters']));_0x1ca2d2[_0xe9de('0x4c')][_0xe9de('0x67')]=_0xc4d10c['id'];if(_0x3659e9['query'][_0xe9de('0x4e')]){_0x1ca2d2[_0xe9de('0x4c')]=_[_0xe9de('0x4f')](_0x1ca2d2[_0xe9de('0x4c')],{'$or':_[_0xe9de('0x3e')](_0x1ca2d2['attributes'],function(_0x51d8f4){var _0x4460b2={};_0x4460b2[_0x51d8f4]={'$like':'%'+_0x3659e9[_0xe9de('0x43')]['filter']+'%'};return _0x4460b2;})});}_0x1ca2d2=_[_0xe9de('0x4f')]({},_0x1ca2d2,_0x3659e9[_0xe9de('0x51')]);return db[_0xe9de('0x69')][_0xe9de('0x32')]({'where':_0x1ca2d2[_0xe9de('0x4c')]})['then'](function(_0x400e3d){_0x5a57c4[_0xe9de('0x32')]=_0x400e3d;if(_0x3659e9['query']['includeAll']){_0x1ca2d2[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x69')]['findAll'](_0x1ca2d2);})[_0xe9de('0x21')](function(_0x4fd993){_0x5a57c4[_0xe9de('0x6a')]=_0x4fd993;return _0x5a57c4;});}})['then'](respondWithFilteredResult(_0x1670aa,_0x1ca2d2))[_0xe9de('0x2a')](handleError(_0x1670aa,null));};exports['removeDispositions']=function(_0x56c4d6,_0x25bce0,_0x3ca556){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x56c4d6['params']['id']}})['then'](handleEntityNotFound(_0x25bce0,null))['then'](function(_0x50507e){if(_0x50507e){return _0x50507e[_0xe9de('0x6b')](_0x56c4d6[_0xe9de('0x43')][_0xe9de('0x6c')]);}})[_0xe9de('0x21')](respondWithStatusCode(_0x25bce0,null))[_0xe9de('0x2a')](handleError(_0x25bce0,null));};exports[_0xe9de('0x6d')]=function(_0x2d86a5,_0x1a9f02,_0x3d4551){if(_0x2d86a5['body']['id']){delete _0x2d86a5['body']['id'];}return db['WhatsappAccount'][_0xe9de('0x5a')]({'where':{'id':_0x2d86a5['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1a9f02,null))[_0xe9de('0x21')](function(_0x346d30){if(_0x346d30){_0x2d86a5[_0xe9de('0x5c')]['WhatsappAccountId']=_0x346d30['id'];return db[_0xe9de('0x6e')][_0xe9de('0x5b')](_0x2d86a5['body']);}})['then'](respondWithResult(_0x1a9f02,null))[_0xe9de('0x2a')](handleError(_0x1a9f02,null));};exports[_0xe9de('0x6f')]=function(_0x22a9eb,_0x5b7e11,_0x33ebd5){var _0x5865fb={'raw':![],'where':{}};var _0xa36b5b={};var _0x4704e2={'count':0x0,'rows':[]};return db[_0xe9de('0x52')][_0xe9de('0x68')]({'where':{'id':_0x22a9eb[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x5b7e11,null))[_0xe9de('0x21')](function(_0xe00096){if(_0xe00096){_0xa36b5b['model']=_[_0xe9de('0x59')](db[_0xe9de('0x6e')][_0xe9de('0x3f')]);_0xa36b5b[_0xe9de('0x43')]=_[_0xe9de('0x59')](_0x22a9eb[_0xe9de('0x43')]);_0xa36b5b[_0xe9de('0x44')]=_[_0xe9de('0x45')](_0xa36b5b[_0xe9de('0x42')],_0xa36b5b['query']);_0x5865fb[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0xa36b5b['model'],qs[_0xe9de('0x47')](_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x47')]));_0x5865fb[_0xe9de('0x46')]=_0x5865fb[_0xe9de('0x46')][_0xe9de('0x70')]?_0x5865fb[_0xe9de('0x46')]:_0xa36b5b[_0xe9de('0x42')];if(!_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x48')](_0xe9de('0x49'))){_0x5865fb[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x31')]);_0x5865fb[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x22a9eb['query'][_0xe9de('0x2f')]);}_0x5865fb['order']=qs[_0xe9de('0x4b')](_0x22a9eb[_0xe9de('0x43')]['sort']);_0x5865fb[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_['pick'](_0x22a9eb[_0xe9de('0x43')],_0xa36b5b['filters']));_0x5865fb[_0xe9de('0x4c')][_0xe9de('0x67')]=_0xe00096['id'];if(_0x22a9eb['query']['filter']){_0x5865fb[_0xe9de('0x4c')]=_['merge'](_0x5865fb[_0xe9de('0x4c')],{'$or':_['map'](_0x5865fb[_0xe9de('0x46')],function(_0x593761){var _0x16fc05={};_0x16fc05[_0x593761]={'$like':'%'+_0x22a9eb['query'][_0xe9de('0x4e')]+'%'};return _0x16fc05;})});}_0x5865fb=_[_0xe9de('0x4f')]({},_0x5865fb,_0x22a9eb['options']);return db[_0xe9de('0x6e')][_0xe9de('0x32')]({'where':_0x5865fb[_0xe9de('0x4c')]})[_0xe9de('0x21')](function(_0x4913de){_0x4704e2[_0xe9de('0x32')]=_0x4913de;if(_0x22a9eb[_0xe9de('0x43')][_0xe9de('0x53')]){_0x5865fb[_0xe9de('0x54')]=[{'all':!![]}];}return db[_0xe9de('0x6e')][_0xe9de('0x55')](_0x5865fb);})[_0xe9de('0x21')](function(_0x1366ae){_0x4704e2[_0xe9de('0x6a')]=_0x1366ae;return _0x4704e2;});}})[_0xe9de('0x21')](respondWithFilteredResult(_0x5b7e11,_0x5865fb))[_0xe9de('0x2a')](handleError(_0x5b7e11,null));};exports['removeAnswers']=function(_0x15b849,_0x1325db,_0x39ab5e){return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x15b849[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x1325db,null))[_0xe9de('0x21')](function(_0x5a4305){if(_0x5a4305){return _0x5a4305[_0xe9de('0x71')](_0x15b849[_0xe9de('0x43')][_0xe9de('0x6c')]);}})[_0xe9de('0x21')](respondWithStatusCode(_0x1325db,null))[_0xe9de('0x2a')](handleError(_0x1325db,null));};exports[_0xe9de('0x72')]=function(_0x39bd2c,_0x2ecf64,_0x596596){return db[_0xe9de('0x52')]['find']({'where':{'id':_0x39bd2c[_0xe9de('0x57')]['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x2ecf64,null))[_0xe9de('0x21')](function(_0x20e8a1){if(_0x20e8a1){return _0x20e8a1[_0xe9de('0x72')](_0x39bd2c[_0xe9de('0x5c')][_0xe9de('0x6c')],_['omit'](_0x39bd2c['body'],['ids','id'])||{})[_0xe9de('0x73')](function(_0x55adab){for(var _0x37af8e=0x0;_0x37af8e<_0x39bd2c[_0xe9de('0x5c')][_0xe9de('0x6c')][_0xe9de('0x70')];_0x37af8e+=0x1){socket[_0xe9de('0x74')](_0xe9de('0x75'),{'UserId':Number(_0x39bd2c['body'][_0xe9de('0x6c')][_0x37af8e]),'WhatsappAccountId':Number(_0x39bd2c[_0xe9de('0x57')]['id'])});}return _0x55adab;});}})[_0xe9de('0x21')](respondWithResult(_0x2ecf64,null))[_0xe9de('0x2a')](handleError(_0x2ecf64,null));};exports[_0xe9de('0x76')]=function(_0xe7690d,_0x2204d6,_0x305cf0){return db['WhatsappAccount']['find']({'where':{'id':_0xe7690d['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x2204d6,null))[_0xe9de('0x21')](function(_0x4b2a34){if(_0x4b2a34){return _0x4b2a34[_0xe9de('0x76')](_0xe7690d['query'][_0xe9de('0x6c')])[_0xe9de('0x21')](function(){if(_[_0xe9de('0x77')](_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')])){for(var _0x56c542=0x0;_0x56c542<_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')][_0xe9de('0x70')];_0x56c542+=0x1){socket[_0xe9de('0x74')]('userWhatsappAccount:remove',{'UserId':Number(_0xe7690d['query'][_0xe9de('0x6c')][_0x56c542]),'WhatsappAccountId':Number(_0xe7690d[_0xe9de('0x57')]['id'])});}}else{socket[_0xe9de('0x74')]('userWhatsappAccount:remove',{'UserId':Number(_0xe7690d[_0xe9de('0x43')][_0xe9de('0x6c')]),'WhatsappAccountId':Number(_0xe7690d[_0xe9de('0x57')]['id'])});}});}})[_0xe9de('0x21')](respondWithStatusCode(_0x2204d6,null))['catch'](handleError(_0x2204d6,null));};exports[_0xe9de('0x78')]=function(_0x89536f,_0x3ea531,_0x41bc71){var _0x187b14={};var _0x49d9b4={};var _0xf58473;var _0x3b13d2;return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x89536f['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x3ea531,null))[_0xe9de('0x21')](function(_0x11f4be){if(_0x11f4be){_0xf58473=_0x11f4be;_0x49d9b4[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x79')][_0xe9de('0x3f')]);_0x49d9b4[_0xe9de('0x43')]=_[_0xe9de('0x59')](_0x89536f[_0xe9de('0x43')]);_0x49d9b4['filters']=_[_0xe9de('0x45')](_0x49d9b4['model'],_0x49d9b4[_0xe9de('0x43')]);_0x187b14[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x49d9b4[_0xe9de('0x42')],qs['fields'](_0x89536f[_0xe9de('0x43')][_0xe9de('0x47')]));_0x187b14[_0xe9de('0x46')]=_0x187b14[_0xe9de('0x46')][_0xe9de('0x70')]?_0x187b14[_0xe9de('0x46')]:_0x49d9b4[_0xe9de('0x42')];_0x187b14[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x89536f['query']['sort']);_0x187b14[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x89536f[_0xe9de('0x43')],_0x49d9b4[_0xe9de('0x44')]));if(_0x89536f[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x187b14[_0xe9de('0x4c')]=_[_0xe9de('0x4f')](_0x187b14['where'],{'$or':_[_0xe9de('0x3e')](_0x187b14['attributes'],function(_0x596bb8){var _0xaa6e4e={};_0xaa6e4e[_0x596bb8]={'$like':'%'+_0x89536f[_0xe9de('0x43')][_0xe9de('0x4e')]+'%'};return _0xaa6e4e;})});}_0x187b14=_['merge']({},_0x187b14,_0x89536f[_0xe9de('0x51')]);return _0xf58473[_0xe9de('0x78')](_0x187b14);}})[_0xe9de('0x21')](function(_0xa28aab){if(_0xa28aab){_0x3b13d2=_0xa28aab[_0xe9de('0x70')];if(!_0x89536f['query']['hasOwnProperty'](_0xe9de('0x49'))){_0x187b14['limit']=qs['limit'](_0x89536f['query'][_0xe9de('0x31')]);_0x187b14[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x89536f[_0xe9de('0x43')][_0xe9de('0x2f')]);}return _0xf58473[_0xe9de('0x78')](_0x187b14);}})['then'](function(_0x131e30){if(_0x131e30){return _0x131e30?{'count':_0x3b13d2,'rows':_0x131e30}:null;}})['then'](respondWithResult(_0x3ea531,null))['catch'](handleError(_0x3ea531,null));};exports[_0xe9de('0x7a')]=function(_0x537363,_0x20a65d){var _0x220b08=_0x537363['params']['id'];var _0x2c0532=_0x537363[_0xe9de('0x5c')];var _0x816c18=0xc8;var _0x19f861=null;return db[_0xe9de('0x7b')][_0xe9de('0x7c')]({'isolationLevel':db[_0xe9de('0x7b')]['Transaction'][_0xe9de('0x7d')][_0xe9de('0x7e')]},function(_0x43572b){return db[_0xe9de('0x52')]['findOne']({'where':{'id':_0x220b08},'transaction':_0x43572b})['then'](function(_0x53d34b){if(_0x53d34b){return db['WhatsappApplication'][_0xe9de('0x38')]({'where':{'WhatsappAccountId':_0x220b08},'transaction':_0x43572b})['then'](function(){var _0x496457=_[_0xe9de('0x3e')](_0x2c0532,function(_0x4df6dd){_0x4df6dd[_0xe9de('0x67')]=_0x220b08;return _0x4df6dd;});return db['WhatsappApplication'][_0xe9de('0x7f')](_0x496457,{'transaction':_0x43572b});});}else{_0x816c18=0x194;_0x19f861=[];}});})[_0xe9de('0x21')](function(){if(_0x816c18!==0x194){return db[_0xe9de('0x80')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x220b08},'order':_0xe9de('0x81')})['then'](function(_0x4ab0e8){_0x19f861=_0x4ab0e8;});}})[_0xe9de('0x2a')](function(_0x51b551){_0x816c18=0x1f4;logger[_0xe9de('0x27')](_0x51b551[_0xe9de('0x3a')]);if(_0x51b551[_0xe9de('0x3b')]){delete _0x51b551[_0xe9de('0x3b')];}_0x19f861=_0x51b551;})[_0xe9de('0x82')](function(){if(_0x19f861===null){_0x20a65d[_0xe9de('0x2b')](_0x816c18);}else{if(_0x816c18===0x1f4){_0x20a65d[_0xe9de('0x2c')](_0x816c18)[_0xe9de('0x83')](_0x19f861);}else{_0x20a65d[_0xe9de('0x2c')](_0x816c18)['json'](_0x19f861);}}});};exports['getApplications']=function(_0x57f9e8,_0x319e1e,_0x2fd9ca){var _0x90fcd5={};var _0x3fd9ee={};var _0x1e5008;var _0x289c5a;return db['WhatsappAccount'][_0xe9de('0x68')]({'where':{'id':_0x57f9e8['params']['id']}})[_0xe9de('0x21')](handleEntityNotFound(_0x319e1e,null))[_0xe9de('0x21')](function(_0x6c40be){if(_0x6c40be){_0x1e5008=_0x6c40be;_0x3fd9ee[_0xe9de('0x42')]=_[_0xe9de('0x59')](db[_0xe9de('0x80')][_0xe9de('0x3f')]);_0x3fd9ee[_0xe9de('0x43')]=_['keys'](_0x57f9e8[_0xe9de('0x43')]);_0x3fd9ee[_0xe9de('0x44')]=_['intersection'](_0x3fd9ee[_0xe9de('0x42')],_0x3fd9ee['query']);_0x90fcd5[_0xe9de('0x46')]=_[_0xe9de('0x45')](_0x3fd9ee['model'],qs['fields'](_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x47')]));_0x90fcd5[_0xe9de('0x46')]=_0x90fcd5[_0xe9de('0x46')][_0xe9de('0x70')]?_0x90fcd5[_0xe9de('0x46')]:_0x3fd9ee[_0xe9de('0x42')];_0x90fcd5[_0xe9de('0x4a')]=qs[_0xe9de('0x4b')](_0x57f9e8['query'][_0xe9de('0x4b')]);_0x90fcd5[_0xe9de('0x4c')]=qs[_0xe9de('0x44')](_[_0xe9de('0x4d')](_0x57f9e8['query'],_0x3fd9ee[_0xe9de('0x44')]));if(_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x4e')]){_0x90fcd5[_0xe9de('0x4c')]=_['merge'](_0x90fcd5['where'],{'$or':_[_0xe9de('0x3e')](_0x90fcd5[_0xe9de('0x46')],function(_0x5e8e34){var _0x2a7dfa={};_0x2a7dfa[_0x5e8e34]={'$like':'%'+_0x57f9e8['query'][_0xe9de('0x4e')]+'%'};return _0x2a7dfa;})});}_0x90fcd5=_[_0xe9de('0x4f')]({},_0x90fcd5,_0x57f9e8[_0xe9de('0x51')]);return _0x1e5008[_0xe9de('0x84')](_0x90fcd5);}})[_0xe9de('0x21')](function(_0x7e0fa7){if(_0x7e0fa7){_0x289c5a=_0x7e0fa7[_0xe9de('0x70')];if(!_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x48')]('nolimit')){_0x90fcd5[_0xe9de('0x31')]=qs[_0xe9de('0x31')](_0x57f9e8[_0xe9de('0x43')][_0xe9de('0x31')]);_0x90fcd5[_0xe9de('0x2f')]=qs[_0xe9de('0x2f')](_0x57f9e8['query'][_0xe9de('0x2f')]);}return _0x1e5008[_0xe9de('0x84')](_0x90fcd5);}})[_0xe9de('0x21')](function(_0x40b2b5){if(_0x40b2b5){return _0x40b2b5?{'count':_0x289c5a,'rows':_0x40b2b5}:null;}})[_0xe9de('0x21')](respondWithResult(_0x319e1e,null))[_0xe9de('0x2a')](handleError(_0x319e1e,null));};exports[_0xe9de('0x85')]=function(_0x249dd1,_0x1f15f7,_0x2b8cfe){var _0x4f3a31={'channel':'whatsapp'};var _0x106ae3=[];var _0x5c88f3=[];var _0x4124ad={};return db[_0xe9de('0x52')][_0xe9de('0x5a')]({'where':{'id':_0x249dd1[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0x80')],'as':_0xe9de('0x86')}]})['then'](handleEntityNotFound(_0x1f15f7,null))[_0xe9de('0x21')](function(_0x20aa69){_0x4f3a31[_0xe9de('0x87')]=_0x20aa69;if(_0x4f3a31[_0xe9de('0x87')]&&_0x4f3a31['account'][_0xe9de('0x88')]==='sinch'&&_0x249dd1['body'][_0xe9de('0x89')]){if(_0x249dd1[_0xe9de('0x5c')][_0xe9de('0x89')]['length']===0x0)return;if(_0x249dd1['body'][_0xe9de('0x89')][0x0]['state']!=='read')return;return db[_0xe9de('0x8a')]['update']({'read':!![],'readAt':_0x249dd1['body'][_0xe9de('0x89')][0x0]['timestamp']},{'where':{'messageId':_0x249dd1['body']['statuses'][0x0][_0xe9de('0x8b')]},'individualHooks':!![]})[_0xe9de('0x21')](function(_0x38e957){return _0x1f15f7[_0xe9de('0x2c')](0xc8)[_0xe9de('0x2e')](_0x38e957);});}_0x4f3a31[_0xe9de('0x8c')]=_['orderBy'](_0x20aa69['Applications'],['priority'],[_0xe9de('0x8d')]);if(_0x4f3a31[_0xe9de('0x87')]['Applications']){delete _0x4f3a31[_0xe9de('0x87')][_0xe9de('0x86')];}return db[_0xe9de('0x8e')][_0xe9de('0x65')]()['then'](function(_0x1b8c22){if(!_0x1b8c22){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0x91'));}_0x106ae3=_[_0xe9de('0x92')](_['keys'](_0x1b8c22),[_0xe9de('0x93'),_0xe9de('0x94')]);_0x5c88f3=_[_0xe9de('0x92')](_[_0xe9de('0x59')](_0x1b8c22),[_0xe9de('0x93'),_0xe9de('0x94'),_0xe9de('0x95'),_0xe9de('0x96')]);_0x4f3a31[_0xe9de('0x5c')]={'mapKey':_0xe9de('0x97')};if(_0x4f3a31['account']&&_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0x98')){_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')]=_0x249dd1['body'][_0xe9de('0x9a')][_0xe9de('0x9b')](_0xe9de('0x9c'),'');_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')]=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0x9d')];_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x9e')]=_0x249dd1['body'][_0xe9de('0x9f')];}if(_0x4f3a31['account']&&_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0xa0')){_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')]=_0x249dd1['body'][_0xe9de('0xa1')][0x0]['from'];_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')]=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0xa1')][0x0][_0xe9de('0x28')][_0xe9de('0x5c')];_0x4f3a31[_0xe9de('0x5c')]['messageId']=_0x249dd1[_0xe9de('0x5c')][_0xe9de('0xa1')][0x0][_0xe9de('0x8b')];}if(_0x4f3a31[_0xe9de('0x5c')]['id']){delete _0x4f3a31[_0xe9de('0x5c')]['id'];}if(_['isNil'](_0x4f3a31['body'][_0xe9de('0x99')])){throw new db[(_0xe9de('0x8f'))]['ValidationError'](_0xe9de('0xa2'));}if(_[_0xe9de('0xa3')](_0x4f3a31[_0xe9de('0x5c')]['body'])||_0x4f3a31['body'][_0xe9de('0x5c')]===''){throw new db[(_0xe9de('0x8f'))]['ValidationError'](_0xe9de('0xa4'));}if(_[_0xe9de('0xa3')](_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')])){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xa6')+_0x5c88f3);}if(!_[_0xe9de('0xa7')](_0x5c88f3,_0x4f3a31[_0xe9de('0x5c')]['mapKey'])){throw new db['Sequelize'][(_0xe9de('0x90'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x5c88f3);}_0x4124ad[_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')]]=_0x4f3a31['body'][_0xe9de('0x99')];return db[_0xe9de('0xa8')]['find']({'where':{'id':_0x4f3a31[_0xe9de('0x87')][_0xe9de('0x96')]},'include':[{'model':db[_0xe9de('0x8e')],'as':'Contacts','where':_0x4124ad,'limit':0x1,'order':[[_0xe9de('0x94'),'DESC']]}]});})[_0xe9de('0x21')](handleEntityNotFound(_0x1f15f7,null))[_0xe9de('0x21')](function(_0x447c64){if(_0x447c64){_0x4f3a31['list']=_[_0xe9de('0xa9')](_0x447c64,[_0xe9de('0xaa')]);if(_0x447c64[_0xe9de('0xaa')][_0xe9de('0x70')]){return _0x447c64[_0xe9de('0xaa')][0x0];}var _0x56d35b=_[_0xe9de('0x1a')](_0x4f3a31[_0xe9de('0x5c')],{'firstName':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')],'ListId':_0x447c64['id']});_0x56d35b[_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xa5')]]=_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')];return db[_0xe9de('0x8e')]['create'](_0x56d35b,{'fields':_0x106ae3,'raw':!![]});}})[_0xe9de('0x21')](handleEntityNotFound(_0x1f15f7,null))['then'](function(_0x1305f6){if(_0x1305f6){_0x4f3a31['contact']=_0x1305f6;var _0x5cef4c={'ContactId':_0x1305f6['id'],'phone':_0x4f3a31[_0xe9de('0x5c')]['from'],'WhatsappAccountId':_0x249dd1[_0xe9de('0x57')]['id']};var _0x2d7e7a={'ContactId':_0x1305f6['id'],'WhatsappAccountId':_0x249dd1['params']['id'],'closed':![]};return db[_0xe9de('0xab')][_0xe9de('0x5a')]({'where':_0x2d7e7a})[_0xe9de('0x21')](function(_0x1ecbd0){if(_0x1ecbd0){return[_0x1ecbd0,![]];}return db[_0xe9de('0xab')][_0xe9de('0x5b')](_0x5cef4c)[_0xe9de('0x21')](function(_0x526588){return[_0x526588,!![]];});});}})[_0xe9de('0x73')](function(_0x16b3c9,_0x25795b){_0x4f3a31[_0xe9de('0xac')]=_0x16b3c9[_0xe9de('0x5e')]({'plain':!![]});_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xad')]=![];if(_0x25795b){if(_0x4f3a31['account'][_0xe9de('0xae')]){_0x4f3a31[_0xe9de('0x8c')][_0xe9de('0xaf')]({'id':0x0,'priority':_0x4f3a31[_0xe9de('0x8c')]['length']+0x1,'app':_0xe9de('0xb0'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xad')]=!![];}return db['WhatsappMessage'][_0xe9de('0x5b')]({'phone':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x99')],'messageId':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x9e')],'body':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0x5c')],'WhatsappAccountId':_0x249dd1['params']['id'],'WhatsappInteractionId':_0x16b3c9['id'],'direction':'in','ContactId':_0x16b3c9[_0xe9de('0xb1')],'AttachmentId':_0x4f3a31[_0xe9de('0x5c')][_0xe9de('0xb2')]});})['then'](function(_0x1a9364){_0x4f3a31[_0xe9de('0x28')]=_0x1a9364;if(_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xb3')]){return db[_0xe9de('0x79')][_0xe9de('0x5a')]({'attributes':['id','name'],'where':{'id':_0x4f3a31[_0xe9de('0xac')][_0xe9de('0xb3')]}})['then'](function(_0x4176a6){if(_0x4176a6){_0x4f3a31[_0xe9de('0x8c')][_0xe9de('0xb4')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4176a6['name']+','+(_0x4f3a31['account']['waitForTheAssignedAgent']||0xa),'interval':_0xe9de('0xb5')});}return respondWithRpcPromise('Start','startRouting',_0x4f3a31);});}return respondWithRpcPromise(_0xe9de('0xb6'),_0xe9de('0xb7'),_0x4f3a31);})[_0xe9de('0x21')](function(_0x4f9baa){if(_0x4f9baa){var _0x1bdabc=0xc8;var _0x539040=_0xe9de('0xb8');logger[_0xe9de('0x22')](_0xe9de('0xb9'),_0x539040,_0x1bdabc,_0xe9de('0xba'));logger[_0xe9de('0x25')](_0xe9de('0xbb'),_0x539040,_0x1bdabc,'entity\x20found',JSON[_0xe9de('0x26')](_0x4f9baa));if(_0x4f3a31['account'][_0xe9de('0x88')]===_0xe9de('0x98')){return _0x1f15f7[_0xe9de('0x2c')](_0x1bdabc)['set']('Content-Type',_0xe9de('0xbc'))[_0xe9de('0x83')](_0xe9de('0xbd'));}else{return _0x1f15f7[_0xe9de('0x2c')](_0x1bdabc)[_0xe9de('0x2e')](_0x4f9baa);}}});})[_0xe9de('0x2a')](handleError(_0x1f15f7,null));};exports[_0xe9de('0x83')]=function(_0x2b5a0f,_0x55f2cc,_0x3d9155){var _0xf7035f,_0x75695d,_0xf79882;if(_[_0xe9de('0xa3')](_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')])||_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')]===''){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xa4'));}if(_[_0xe9de('0xa3')](_0x2b5a0f[_0xe9de('0x5c')]['to'])){throw new db[(_0xe9de('0x8f'))][(_0xe9de('0x90'))](_0xe9de('0xbe'));}_0xf7035f=_0x2b5a0f[_0xe9de('0x5c')]['to'];return db['WhatsappAccount'][_0xe9de('0x5a')]({'where':{'id':_0x2b5a0f[_0xe9de('0x57')]['id']},'include':[{'model':db[_0xe9de('0xa8')],'as':_0xe9de('0xbf'),'include':[{'model':db['CmContact'],'as':_0xe9de('0xaa'),'where':{'mobile':_0xf7035f},'limit':0x1,'order':[['updatedAt',_0xe9de('0xc0')]]}]}]})[_0xe9de('0x21')](handleEntityNotFound(_0x55f2cc,null))[_0xe9de('0x21')](function(_0x114446){if(_0x114446&&_0x114446[_0xe9de('0xbf')]){_0x75695d=_0x114446[_0xe9de('0x5e')]({'plain':!![]});if(_0x75695d[_0xe9de('0xbf')]&&_0x75695d[_0xe9de('0xbf')]['Contacts']['length']){return _0x75695d['List']['Contacts'][0x0];}return db['CmContact'][_0xe9de('0x5b')](_[_0xe9de('0x1a')](_0x2b5a0f[_0xe9de('0x5c')],{'firstName':_0xf7035f,'mobile':_0xf7035f,'phone':_0xf7035f,'ListId':_0x75695d[_0xe9de('0x96')]}));}})['then'](handleEntityNotFound(_0x55f2cc,null))[_0xe9de('0x21')](function(_0x59a99a){if(_0x59a99a){_0xf79882=_0x59a99a;return db[_0xe9de('0xab')][_0xe9de('0x5a')]({'where':{'ContactId':_0xf79882['id'],'closed':![],'WhatsappAccountId':_0x75695d['id']}})[_0xe9de('0x21')](function(_0x16f098){if(_0x16f098){return[_0x16f098,![]];}return db[_0xe9de('0xab')]['create']({'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id'],'WhatsappAccountId':_0x75695d['id'],'phone':_0xf7035f,'firstMsgDirection':_0xe9de('0xc1'),'Messages':[_[_0xe9de('0x4f')](_0x2b5a0f[_0xe9de('0x5c')],{'read':![],'body':_0x2b5a0f[_0xe9de('0x5c')][_0xe9de('0x5c')],'phone':_0xf7035f,'WhatsappAccountId':_0x75695d['id'],'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id']})]},{'include':[{'model':db[_0xe9de('0x8a')],'as':'Messages'}]})[_0xe9de('0x21')](function(_0x3a854c){return[_0x3a854c,!![]];});});}})['spread'](function(_0xaceec7,_0x1d3005){if(_0x1d3005){return _0xaceec7;}return db['WhatsappMessage'][_0xe9de('0x5b')](_['merge'](_0x2b5a0f[_0xe9de('0x5c')],{'read':![],'body':_0x2b5a0f['body'][_0xe9de('0x5c')],'phone':_0xf7035f,'WhatsappAccountId':_0x75695d['id'],'WhatsappInteractionId':_0xaceec7['id'],'UserId':_0x2b5a0f[_0xe9de('0x5d')]['id'],'ContactId':_0xf79882['id']}))[_0xe9de('0x21')](function(_0x19f98d){_0xaceec7[_0xe9de('0xc2')][_0xe9de('0xc3')]=[];_0xaceec7[_0xe9de('0xc2')]['Messages']['push'](_0x19f98d['dataValues']);return _0xaceec7;});})[_0xe9de('0x21')](respondWithResult(_0x55f2cc,null))[_0xe9de('0x2a')](handleError(_0x55f2cc,null));};
\ No newline at end of file
index 157fdc8..a17b708 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6137=['../../mysqldb','WhatsappAccount','setMaxListeners','remove','emit','hook','events'];(function(_0x37c07d,_0xdbdb5f){var _0x10dadc=function(_0x2bafb7){while(--_0x2bafb7){_0x37c07d['push'](_0x37c07d['shift']());}};_0x10dadc(++_0xdbdb5f);}(_0x6137,0xbc));var _0x7613=function(_0x2e7f5c,_0x31915d){_0x2e7f5c=_0x2e7f5c-0x0;var _0x3c8afc=_0x6137[_0x2e7f5c];return _0x3c8afc;};'use strict';var EventEmitter=require(_0x7613('0x0'));var WhatsappAccount=require(_0x7613('0x1'))['db'][_0x7613('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x7613('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x7613('0x4')};function emitEvent(_0x487a76){return function(_0x362528,_0x439ea3,_0x15b588){WhatsappAccountEvents[_0x7613('0x5')](_0x487a76+':'+_0x362528['id'],_0x362528);WhatsappAccountEvents['emit'](_0x487a76,_0x362528);_0x15b588(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappAccount[_0x7613('0x6')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
+var _0xbb26=['emit','hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','update'];(function(_0x25a45a,_0x156e4b){var _0x237f87=function(_0x17c9e5){while(--_0x17c9e5){_0x25a45a['push'](_0x25a45a['shift']());}};_0x237f87(++_0x156e4b);}(_0xbb26,0xcb));var _0x6bb2=function(_0x3f7283,_0x59fb3f){_0x3f7283=_0x3f7283-0x0;var _0x241971=_0xbb26[_0x3f7283];return _0x241971;};'use strict';var EventEmitter=require(_0x6bb2('0x0'));var WhatsappAccount=require(_0x6bb2('0x1'))['db'][_0x6bb2('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0x6bb2('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x6bb2('0x4'),'afterDestroy':'remove'};function emitEvent(_0x25ff7a){return function(_0x105383,_0x1a64a9,_0x153f0f){WhatsappAccountEvents[_0x6bb2('0x5')](_0x25ff7a+':'+_0x105383['id'],_0x105383);WhatsappAccountEvents[_0x6bb2('0x5')](_0x25ff7a,_0x105383);_0x153f0f(null);};}for(var e in events){if(events[_0x6bb2('0x6')](e)){var event=events[e];WhatsappAccount[_0x6bb2('0x7')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index cfd32b6..ba2af1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b1e=['rimraf','./whatsappAccount.attributes','exports','lodash','../../config/logger','bluebird','request-promise'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x4b1e,0x1ae));var _0xe4b1=function(_0x51bda1,_0x44f80d){_0x51bda1=_0x51bda1-0x0;var _0x1ce08c=_0x4b1e[_0x51bda1];return _0x1ce08c;};'use strict';var _=require(_0xe4b1('0x0'));var util=require('util');var logger=require(_0xe4b1('0x1'))('api');var moment=require('moment');var BPromise=require(_0xe4b1('0x2'));var rp=require(_0xe4b1('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe4b1('0x4'));var config=require('../../config/environment');var attributes=require(_0xe4b1('0x5'));module[_0xe4b1('0x6')]=function(_0x360899,_0x48dbca){return _0x360899['define']('WhatsappAccount',attributes,{'tableName':'whatsapp_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x967e=['path','exports','define','WhatsappAccount','whatsapp_accounts','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5ae9d6,_0x53eb0a){var _0x592881=function(_0x2af8c2){while(--_0x2af8c2){_0x5ae9d6['push'](_0x5ae9d6['shift']());}};_0x592881(++_0x53eb0a);}(_0x967e,0xcb));var _0xe967=function(_0x3e0265,_0x1cbed9){_0x3e0265=_0x3e0265-0x0;var _0x571ecf=_0x967e[_0x3e0265];return _0x571ecf;};'use strict';var _=require('lodash');var util=require(_0xe967('0x0'));var logger=require(_0xe967('0x1'))(_0xe967('0x2'));var moment=require(_0xe967('0x3'));var BPromise=require(_0xe967('0x4'));var rp=require(_0xe967('0x5'));var fs=require('fs');var path=require(_0xe967('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module[_0xe967('0x7')]=function(_0x15b6ec,_0x59bb83){return _0x15b6ec[_0xe967('0x8')](_0xe967('0x9'),attributes,{'tableName':_0xe967('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 5bf2b79..905113f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1530=['moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','WhatsappAccount','options','raw','where','attributes','include','map','model','ShowWhatsappAccount','lodash','util'];(function(_0x2e7f99,_0x23fb26){var _0x368568=function(_0x4ed8d9){while(--_0x4ed8d9){_0x2e7f99['push'](_0x2e7f99['shift']());}};_0x368568(++_0x23fb26);}(_0x1530,0xc6));var _0x0153=function(_0x273c39,_0x1052e6){_0x273c39=_0x273c39-0x0;var _0x46d6b5=_0x1530[_0x273c39];return _0x46d6b5;};'use strict';var _=require(_0x0153('0x0'));var util=require(_0x0153('0x1'));var moment=require(_0x0153('0x2'));var BPromise=require(_0x0153('0x3'));var rs=require(_0x0153('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0153('0x5'))['db'];var utils=require(_0x0153('0x6'));var logger=require(_0x0153('0x7'))(_0x0153('0x8'));var config=require(_0x0153('0x9'));var jayson=require(_0x0153('0xa'));var client=jayson[_0x0153('0xb')][_0x0153('0xc')]({'port':0x232a});config[_0x0153('0xd')]=_[_0x0153('0xe')](config[_0x0153('0xd')],{'host':_0x0153('0xf'),'port':0x18eb});var socket=require(_0x0153('0x10'))(new Redis(config[_0x0153('0xd')]));require(_0x0153('0x11'))['register'](socket);function respondWithRpcPromise(_0x521bba,_0x1df009,_0x27ec05){return new BPromise(function(_0xbab6b8,_0x5066a4){return client[_0x0153('0x12')](_0x521bba,_0x27ec05)[_0x0153('0x13')](function(_0xefeae9){logger['info'](_0x0153('0x14'),_0x1df009,_0x0153('0x15'));logger[_0x0153('0x16')](_0x0153('0x17'),_0x1df009,_0x0153('0x15'),JSON[_0x0153('0x18')](_0xefeae9));if(_0xefeae9[_0x0153('0x19')]){if(_0xefeae9[_0x0153('0x19')][_0x0153('0x1a')]===0x1f4){logger['error'](_0x0153('0x14'),_0x1df009,_0xefeae9[_0x0153('0x19')]['message']);return _0x5066a4(_0xefeae9[_0x0153('0x19')][_0x0153('0x1b')]);}logger[_0x0153('0x19')](_0x0153('0x14'),_0x1df009,_0xefeae9[_0x0153('0x19')][_0x0153('0x1b')]);return _0xbab6b8(_0xefeae9['error'][_0x0153('0x1b')]);}else{logger[_0x0153('0x1c')](_0x0153('0x14'),_0x1df009,_0x0153('0x15'));_0xbab6b8(_0xefeae9[_0x0153('0x1d')]['message']);}})[_0x0153('0x1e')](function(_0x1a66c7){logger[_0x0153('0x19')]('WhatsappAccount,\x20%s,\x20%s',_0x1df009,_0x1a66c7);_0x5066a4(_0x1a66c7);});});}exports['ShowWhatsappAccount']=function(_0x1e281f){var _0x3e1f51=this;return new Promise(function(_0x189f85,_0x157e9c){return db[_0x0153('0x1f')]['find']({'raw':_0x1e281f[_0x0153('0x20')]?_0x1e281f[_0x0153('0x20')][_0x0153('0x21')]===undefined?!![]:![]:!![],'where':_0x1e281f[_0x0153('0x20')]?_0x1e281f[_0x0153('0x20')][_0x0153('0x22')]||null:null,'attributes':_0x1e281f[_0x0153('0x20')]?_0x1e281f[_0x0153('0x20')][_0x0153('0x23')]||null:null,'include':_0x1e281f[_0x0153('0x20')]?_0x1e281f['options'][_0x0153('0x24')]?_[_0x0153('0x25')](_0x1e281f['options'][_0x0153('0x24')],function(_0x4baa54){return{'model':db[_0x4baa54[_0x0153('0x26')]],'as':_0x4baa54['as'],'attributes':_0x4baa54[_0x0153('0x23')],'include':_0x4baa54['include']?_[_0x0153('0x25')](_0x4baa54[_0x0153('0x24')],function(_0x56906e){return{'model':db[_0x56906e[_0x0153('0x26')]],'as':_0x56906e['as'],'attributes':_0x56906e[_0x0153('0x23')],'include':_0x56906e[_0x0153('0x24')]?_[_0x0153('0x25')](_0x56906e[_0x0153('0x24')],function(_0xed71a4){return{'model':db[_0xed71a4[_0x0153('0x26')]],'as':_0xed71a4['as'],'attributes':_0xed71a4[_0x0153('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1de293){logger[_0x0153('0x1c')](_0x0153('0x27'),_0x1e281f);logger[_0x0153('0x16')](_0x0153('0x27'),_0x1e281f,JSON[_0x0153('0x18')](_0x1de293));_0x189f85(_0x1de293);})[_0x0153('0x1e')](function(_0x4a6810){logger[_0x0153('0x19')]('ShowWhatsappAccount',_0x4a6810[_0x0153('0x1b')],_0x1e281f);_0x157e9c(_0x3e1f51[_0x0153('0x19')](0x1f4,_0x4a6810[_0x0153('0x1b')]));});});};
\ No newline at end of file
+var _0x84dc=['code','error','message','result','catch','WhatsappAccount','find','options','raw','where','attributes','map','include','model','info','ShowWhatsappAccount','lodash','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','request','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5cf0a4,_0x20ef87){var _0x5abd18=function(_0x50808c){while(--_0x50808c){_0x5cf0a4['push'](_0x5cf0a4['shift']());}};_0x5abd18(++_0x20ef87);}(_0x84dc,0x113));var _0xc84d=function(_0x328750,_0x58f152){_0x328750=_0x328750-0x0;var _0x2c625b=_0x84dc[_0x328750];return _0x2c625b;};'use strict';var _=require(_0xc84d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc84d('0x1'))['db'];var utils=require('../../config/utils');var logger=require(_0xc84d('0x2'))(_0xc84d('0x3'));var config=require(_0xc84d('0x4'));var jayson=require(_0xc84d('0x5'));var client=jayson[_0xc84d('0x6')][_0xc84d('0x7')]({'port':0x232a});config[_0xc84d('0x8')]=_[_0xc84d('0x9')](config[_0xc84d('0x8')],{'host':_0xc84d('0xa'),'port':0x18eb});var socket=require(_0xc84d('0xb'))(new Redis(config[_0xc84d('0x8')]));require(_0xc84d('0xc'))[_0xc84d('0xd')](socket);function respondWithRpcPromise(_0x262d9c,_0x9ef7f7,_0x587cad){return new BPromise(function(_0x329241,_0x22e499){return client[_0xc84d('0xe')](_0x262d9c,_0x587cad)[_0xc84d('0xf')](function(_0x186a9e){logger['info'](_0xc84d('0x10'),_0x9ef7f7,_0xc84d('0x11'));logger[_0xc84d('0x12')](_0xc84d('0x13'),_0x9ef7f7,'request\x20sent',JSON[_0xc84d('0x14')](_0x186a9e));if(_0x186a9e['error']){if(_0x186a9e['error'][_0xc84d('0x15')]===0x1f4){logger[_0xc84d('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0x186a9e[_0xc84d('0x16')]['message']);return _0x22e499(_0x186a9e['error'][_0xc84d('0x17')]);}logger[_0xc84d('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0x186a9e['error'][_0xc84d('0x17')]);return _0x329241(_0x186a9e[_0xc84d('0x16')][_0xc84d('0x17')]);}else{logger['info']('WhatsappAccount,\x20%s,\x20%s',_0x9ef7f7,_0xc84d('0x11'));_0x329241(_0x186a9e[_0xc84d('0x18')][_0xc84d('0x17')]);}})[_0xc84d('0x19')](function(_0x3f0ab4){logger[_0xc84d('0x16')](_0xc84d('0x10'),_0x9ef7f7,_0x3f0ab4);_0x22e499(_0x3f0ab4);});});}exports['ShowWhatsappAccount']=function(_0x3d5a72){var _0x7e9598=this;return new Promise(function(_0x305565,_0x2fc852){return db[_0xc84d('0x1a')][_0xc84d('0x1b')]({'raw':_0x3d5a72['options']?_0x3d5a72[_0xc84d('0x1c')][_0xc84d('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d5a72[_0xc84d('0x1c')]?_0x3d5a72['options'][_0xc84d('0x1e')]||null:null,'attributes':_0x3d5a72['options']?_0x3d5a72[_0xc84d('0x1c')][_0xc84d('0x1f')]||null:null,'include':_0x3d5a72[_0xc84d('0x1c')]?_0x3d5a72['options']['include']?_[_0xc84d('0x20')](_0x3d5a72[_0xc84d('0x1c')]['include'],function(_0x323ca5){return{'model':db[_0x323ca5['model']],'as':_0x323ca5['as'],'attributes':_0x323ca5['attributes'],'include':_0x323ca5[_0xc84d('0x21')]?_['map'](_0x323ca5[_0xc84d('0x21')],function(_0x2295d8){return{'model':db[_0x2295d8[_0xc84d('0x22')]],'as':_0x2295d8['as'],'attributes':_0x2295d8[_0xc84d('0x1f')],'include':_0x2295d8[_0xc84d('0x21')]?_[_0xc84d('0x20')](_0x2295d8[_0xc84d('0x21')],function(_0x4ecd84){return{'model':db[_0x4ecd84['model']],'as':_0x4ecd84['as'],'attributes':_0x4ecd84['attributes']};}):[]};}):[]};}):[]:[]})[_0xc84d('0xf')](function(_0x14634e){logger[_0xc84d('0x23')](_0xc84d('0x24'),_0x3d5a72);logger[_0xc84d('0x12')](_0xc84d('0x24'),_0x3d5a72,JSON['stringify'](_0x14634e));_0x305565(_0x14634e);})[_0xc84d('0x19')](function(_0x4e0b66){logger[_0xc84d('0x16')](_0xc84d('0x24'),_0x4e0b66['message'],_0x3d5a72);_0x2fc852(_0x7e9598[_0xc84d('0x16')](0x1f4,_0x4e0b66['message']));});});};
\ No newline at end of file
index 6675815..2a20b04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca7=['removeListener','register','length','whatsappAccount:','./whatsappAccount.events','save','emit'];(function(_0x15264c,_0x1bdd4b){var _0x5e737c=function(_0x49ee38){while(--_0x49ee38){_0x15264c['push'](_0x15264c['shift']());}};_0x5e737c(++_0x1bdd4b);}(_0x3ca7,0xa5));var _0x73ca=function(_0x24106c,_0x367a6f){_0x24106c=_0x24106c-0x0;var _0xbaeb73=_0x3ca7[_0x24106c];return _0xbaeb73;};'use strict';var WhatsappAccountEvents=require(_0x73ca('0x0'));var events=[_0x73ca('0x1'),'remove','update'];function createListener(_0x44e827,_0x13a58b){return function(_0x59a5df){_0x13a58b[_0x73ca('0x2')](_0x44e827,_0x59a5df);};}function removeListener(_0x1d7d5d,_0x20c340){return function(){WhatsappAccountEvents[_0x73ca('0x3')](_0x1d7d5d,_0x20c340);};}exports[_0x73ca('0x4')]=function(_0x51ad2a){for(var _0x3c11a9=0x0,_0x25e981=events[_0x73ca('0x5')];_0x3c11a9<_0x25e981;_0x3c11a9++){var _0xc160f4=events[_0x3c11a9];var _0x31573a=createListener(_0x73ca('0x6')+_0xc160f4,_0x51ad2a);WhatsappAccountEvents['on'](_0xc160f4,_0x31573a);}};
\ No newline at end of file
+var _0x492f=['./whatsappAccount.events','remove','update','removeListener','length','whatsappAccount:'];(function(_0x7b5141,_0x2e82a0){var _0xe1fd72=function(_0x4a7c9b){while(--_0x4a7c9b){_0x7b5141['push'](_0x7b5141['shift']());}};_0xe1fd72(++_0x2e82a0);}(_0x492f,0x192));var _0xf492=function(_0x1bf795,_0x8bee44){_0x1bf795=_0x1bf795-0x0;var _0x3b256a=_0x492f[_0x1bf795];return _0x3b256a;};'use strict';var WhatsappAccountEvents=require(_0xf492('0x0'));var events=['save',_0xf492('0x1'),_0xf492('0x2')];function createListener(_0x39c00a,_0x22de40){return function(_0x5dd35b){_0x22de40['emit'](_0x39c00a,_0x5dd35b);};}function removeListener(_0x488727,_0x461139){return function(){WhatsappAccountEvents[_0xf492('0x3')](_0x488727,_0x461139);};}exports['register']=function(_0x40e72b){for(var _0x49b1c7=0x0,_0x38bdcb=events[_0xf492('0x4')];_0x49b1c7<_0x38bdcb;_0x49b1c7++){var _0x2496ca=events[_0x49b1c7];var _0x3a45ce=createListener(_0xf492('0x5')+_0x2496ca,_0x40e72b);WhatsappAccountEvents['on'](_0x2496ca,_0x3a45ce);}};
\ No newline at end of file
index 5bef874..49a211a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430f=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','post','create','update','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x4c0e4c,_0xf69c08){var _0x318372=function(_0x530b18){while(--_0x530b18){_0x4c0e4c['push'](_0x4c0e4c['shift']());}};_0x318372(++_0xf69c08);}(_0x430f,0x140));var _0xf430=function(_0x5d0765,_0x145489){_0x5d0765=_0x5d0765-0x0;var _0x3f94c8=_0x430f[_0x5d0765];return _0x3f94c8;};'use strict';var multer=require(_0xf430('0x0'));var util=require('util');var path=require(_0xf430('0x1'));var timeout=require(_0xf430('0x2'));var express=require(_0xf430('0x3'));var router=express[_0xf430('0x4')]();var fs_extra=require(_0xf430('0x5'));var auth=require(_0xf430('0x6'));var interaction=require(_0xf430('0x7'));var config=require(_0xf430('0x8'));var controller=require('./whatsappApplication.controller');router[_0xf430('0x9')]('/',auth['isAuthenticated'](),controller[_0xf430('0xa')]);router[_0xf430('0x9')](_0xf430('0xb'),auth[_0xf430('0xc')](),controller['show']);router[_0xf430('0xd')]('/',auth[_0xf430('0xc')](),controller[_0xf430('0xe')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf430('0xf')]);router[_0xf430('0x10')](_0xf430('0xb'),auth[_0xf430('0xc')](),controller[_0xf430('0x11')]);module[_0xf430('0x12')]=router;
\ No newline at end of file
+var _0x384a=['post','create','put','update','destroy','exports','multer','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated','index','/:id'];(function(_0x51bda1,_0x44f80d){var _0x1ce08c=function(_0x5b788e){while(--_0x5b788e){_0x51bda1['push'](_0x51bda1['shift']());}};_0x1ce08c(++_0x44f80d);}(_0x384a,0xf0));var _0xa384=function(_0x38a7ac,_0x45514b){_0x38a7ac=_0x38a7ac-0x0;var _0x53061a=_0x384a[_0x38a7ac];return _0x53061a;};'use strict';var multer=require(_0xa384('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xa384('0x1'));var express=require(_0xa384('0x2'));var router=express[_0xa384('0x3')]();var fs_extra=require(_0xa384('0x4'));var auth=require(_0xa384('0x5'));var interaction=require(_0xa384('0x6'));var config=require('../../config/environment');var controller=require(_0xa384('0x7'));router[_0xa384('0x8')]('/',auth[_0xa384('0x9')](),controller[_0xa384('0xa')]);router[_0xa384('0x8')](_0xa384('0xb'),auth[_0xa384('0x9')](),controller['show']);router[_0xa384('0xc')]('/',auth[_0xa384('0x9')](),controller[_0xa384('0xd')]);router[_0xa384('0xe')](_0xa384('0xb'),auth[_0xa384('0x9')](),controller[_0xa384('0xf')]);router['delete'](_0xa384('0xb'),auth[_0xa384('0x9')](),controller[_0xa384('0x10')]);module[_0xa384('0x11')]=router;
\ No newline at end of file
index 584d256..c5d6fc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f9=['exports','STRING','noop','TEXT','*,*,*,*','sequelize'];(function(_0xd2fb71,_0x2f6d54){var _0x2a71e5=function(_0x38b2a5){while(--_0x38b2a5){_0xd2fb71['push'](_0xd2fb71['shift']());}};_0x2a71e5(++_0x2f6d54);}(_0xe4f9,0x71));var _0x9e4f=function(_0x97b028,_0x1539f3){_0x97b028=_0x97b028-0x0;var _0x159e67=_0xe4f9[_0x97b028];return _0x159e67;};'use strict';var Sequelize=require(_0x9e4f('0x0'));module[_0x9e4f('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x9e4f('0x2')],'allowNull':![],'defaultValue':_0x9e4f('0x3')},'appdata':{'type':Sequelize[_0x9e4f('0x4')]()},'description':{'type':Sequelize[_0x9e4f('0x2')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x9e4f('0x5')}};
\ No newline at end of file
+var _0xea4b=['*,*,*,*','INTEGER','STRING'];(function(_0x2459fd,_0x575d9b){var _0x364cd2=function(_0x4b22f6){while(--_0x4b22f6){_0x2459fd['push'](_0x2459fd['shift']());}};_0x364cd2(++_0x575d9b);}(_0xea4b,0xac));var _0xbea4=function(_0x269c23,_0x289264){_0x269c23=_0x269c23-0x0;var _0x184ecd=_0xea4b[_0x269c23];return _0x184ecd;};'use strict';var Sequelize=require('sequelize');module['exports']={'priority':{'type':Sequelize[_0xbea4('0x0')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0xbea4('0x1')],'defaultValue':_0xbea4('0x2')}};
\ No newline at end of file
index f28abab..e520660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d11=['lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','apply','reject','then','destroy','stack','name','send','index','map','WhatsappApplication','rawAttributes','key','model','query','keys','filters','intersection','attributes','length','sort','where','filter','merge','VIRTUAL','options','count','includeAll','include','show','params','fields','catch','create','body','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra'];(function(_0x53f7d0,_0x520044){var _0x55d6f0=function(_0x3346f2){while(--_0x3346f2){_0x53f7d0['push'](_0x53f7d0['shift']());}};_0x55d6f0(++_0x520044);}(_0x6d11,0xbf));var _0x16d1=function(_0x589cd2,_0x340f8a){_0x589cd2=_0x589cd2-0x0;var _0x4739bc=_0x6d11[_0x589cd2];return _0x4739bc;};'use strict';var emlformat=require(_0x16d1('0x0'));var rimraf=require(_0x16d1('0x1'));var zipdir=require(_0x16d1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x16d1('0x3'));var moment=require('moment');var BPromise=require(_0x16d1('0x4'));var Mustache=require(_0x16d1('0x5'));var util=require('util');var path=require('path');var sox=require(_0x16d1('0x6'));var csv=require(_0x16d1('0x7'));var ejs=require(_0x16d1('0x8'));var fs=require('fs');var fs_extra=require(_0x16d1('0x9'));var _=require(_0x16d1('0xa'));var squel=require(_0x16d1('0xb'));var crypto=require(_0x16d1('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x16d1('0xd'));var Papa=require(_0x16d1('0xe'));var Redis=require(_0x16d1('0xf'));var authService=require(_0x16d1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x16d1('0x11'));var hardwareService=require(_0x16d1('0x12'));var logger=require(_0x16d1('0x13'))(_0x16d1('0x14'));var utils=require(_0x16d1('0x15'));var config=require(_0x16d1('0x16'));var licenseUtil=require(_0x16d1('0x17'));var db=require(_0x16d1('0x18'))['db'];function respondWithStatusCode(_0x4de260,_0x32fa68){_0x32fa68=_0x32fa68||0xcc;return function(_0x2e71fa){if(_0x2e71fa){return _0x4de260[_0x16d1('0x19')](_0x32fa68);}return _0x4de260[_0x16d1('0x1a')](_0x32fa68)[_0x16d1('0x1b')]();};}function respondWithResult(_0x5a1429,_0xc034b7){_0xc034b7=_0xc034b7||0xc8;return function(_0x1b71d3){if(_0x1b71d3){return _0x5a1429[_0x16d1('0x1a')](_0xc034b7)[_0x16d1('0x1c')](_0x1b71d3);}};}function respondWithFilteredResult(_0x29ebba,_0x173e16){return function(_0x2d7e8a){if(_0x2d7e8a){var _0x4ee46c=typeof _0x173e16[_0x16d1('0x1d')]===_0x16d1('0x1e')&&typeof _0x173e16['limit']==='undefined';var _0x1a9ec8=_0x2d7e8a['count'];var _0x46a25e=_0x4ee46c?0x0:_0x173e16['offset'];var _0x1da1b8=_0x4ee46c?_0x2d7e8a['count']:_0x173e16[_0x16d1('0x1d')]+_0x173e16[_0x16d1('0x1f')];var _0x48cd70;if(_0x1da1b8>=_0x1a9ec8){_0x1da1b8=_0x1a9ec8;_0x48cd70=0xc8;}else{_0x48cd70=0xce;}_0x29ebba['status'](_0x48cd70);return _0x29ebba['set']('Content-Range',_0x46a25e+'-'+_0x1da1b8+'/'+_0x1a9ec8)[_0x16d1('0x1c')](_0x2d7e8a);}return null;};}function patchUpdates(_0x55a0e0){return function(_0x34b88f){try{jsonpatch[_0x16d1('0x20')](_0x34b88f,_0x55a0e0,!![]);}catch(_0x1f6add){return BPromise[_0x16d1('0x21')](_0x1f6add);}return _0x34b88f['save']();};}function saveUpdates(_0x2c7825,_0x58a03b){return function(_0x2a897d){if(_0x2a897d){return _0x2a897d['update'](_0x2c7825)[_0x16d1('0x22')](function(_0x8c7266){return _0x8c7266;});}return null;};}function removeEntity(_0x17e038,_0x47cad4){return function(_0x215c23){if(_0x215c23){return _0x215c23[_0x16d1('0x23')]()[_0x16d1('0x22')](function(){_0x17e038[_0x16d1('0x1a')](0xcc)[_0x16d1('0x1b')]();});}};}function handleEntityNotFound(_0x335c24,_0x4b2b5c){return function(_0x15203b){if(!_0x15203b){_0x335c24[_0x16d1('0x19')](0x194);}return _0x15203b;};}function handleError(_0x262f89,_0x346b69){_0x346b69=_0x346b69||0x1f4;return function(_0x2b8403){logger['error'](_0x2b8403[_0x16d1('0x24')]);if(_0x2b8403[_0x16d1('0x25')]){delete _0x2b8403[_0x16d1('0x25')];}_0x262f89['status'](_0x346b69)[_0x16d1('0x26')](_0x2b8403);};}exports[_0x16d1('0x27')]=function(_0x364bf7,_0x22e5b3){var _0x6396fc={},_0x462e5b={},_0x1dd574={'count':0x0,'rows':[]};var _0x562908=_[_0x16d1('0x28')](db[_0x16d1('0x29')][_0x16d1('0x2a')],function(_0x30cd8f){return{'name':_0x30cd8f['fieldName'],'type':_0x30cd8f['type'][_0x16d1('0x2b')]};});_0x462e5b[_0x16d1('0x2c')]=_[_0x16d1('0x28')](_0x562908,_0x16d1('0x25'));_0x462e5b[_0x16d1('0x2d')]=_[_0x16d1('0x2e')](_0x364bf7[_0x16d1('0x2d')]);_0x462e5b[_0x16d1('0x2f')]=_[_0x16d1('0x30')](_0x462e5b[_0x16d1('0x2c')],_0x462e5b[_0x16d1('0x2d')]);_0x6396fc[_0x16d1('0x31')]=_[_0x16d1('0x30')](_0x462e5b[_0x16d1('0x2c')],qs['fields'](_0x364bf7[_0x16d1('0x2d')]['fields']));_0x6396fc[_0x16d1('0x31')]=_0x6396fc[_0x16d1('0x31')][_0x16d1('0x32')]?_0x6396fc[_0x16d1('0x31')]:_0x462e5b[_0x16d1('0x2c')];if(!_0x364bf7[_0x16d1('0x2d')]['hasOwnProperty']('nolimit')){_0x6396fc['limit']=qs[_0x16d1('0x1f')](_0x364bf7[_0x16d1('0x2d')][_0x16d1('0x1f')]);_0x6396fc[_0x16d1('0x1d')]=qs['offset'](_0x364bf7[_0x16d1('0x2d')][_0x16d1('0x1d')]);}_0x6396fc['order']=qs['sort'](_0x364bf7['query'][_0x16d1('0x33')]);_0x6396fc[_0x16d1('0x34')]=qs[_0x16d1('0x2f')](_['pick'](_0x364bf7[_0x16d1('0x2d')],_0x462e5b[_0x16d1('0x2f')]),_0x562908);if(_0x364bf7[_0x16d1('0x2d')][_0x16d1('0x35')]){_0x6396fc[_0x16d1('0x34')]=_[_0x16d1('0x36')](_0x6396fc[_0x16d1('0x34')],{'$or':_['map'](_0x562908,function(_0x50267b){if(_0x50267b['type']!==_0x16d1('0x37')){var _0x2306d3={};_0x2306d3[_0x50267b[_0x16d1('0x25')]]={'$like':'%'+_0x364bf7[_0x16d1('0x2d')][_0x16d1('0x35')]+'%'};return _0x2306d3;}})});}_0x6396fc=_[_0x16d1('0x36')]({},_0x6396fc,_0x364bf7[_0x16d1('0x38')]);var _0x369b1c={'where':_0x6396fc['where']};return db[_0x16d1('0x29')]['count'](_0x369b1c)['then'](function(_0x352c5b){_0x1dd574[_0x16d1('0x39')]=_0x352c5b;if(_0x364bf7[_0x16d1('0x2d')][_0x16d1('0x3a')]){_0x6396fc[_0x16d1('0x3b')]=[{'all':!![]}];}return db[_0x16d1('0x29')]['findAll'](_0x6396fc);})[_0x16d1('0x22')](function(_0x525212){_0x1dd574['rows']=_0x525212;return _0x1dd574;})['then'](respondWithFilteredResult(_0x22e5b3,_0x6396fc))['catch'](handleError(_0x22e5b3,null));};exports[_0x16d1('0x3c')]=function(_0x168e14,_0x24038b){var _0x1eb761={'raw':!![],'where':{'id':_0x168e14[_0x16d1('0x3d')]['id']}},_0x53de06={};_0x53de06['model']=_[_0x16d1('0x2e')](db[_0x16d1('0x29')][_0x16d1('0x2a')]);_0x53de06[_0x16d1('0x2d')]=_[_0x16d1('0x2e')](_0x168e14[_0x16d1('0x2d')]);_0x53de06[_0x16d1('0x2f')]=_[_0x16d1('0x30')](_0x53de06[_0x16d1('0x2c')],_0x53de06[_0x16d1('0x2d')]);_0x1eb761[_0x16d1('0x31')]=_[_0x16d1('0x30')](_0x53de06[_0x16d1('0x2c')],qs[_0x16d1('0x3e')](_0x168e14[_0x16d1('0x2d')]['fields']));_0x1eb761['attributes']=_0x1eb761[_0x16d1('0x31')][_0x16d1('0x32')]?_0x1eb761[_0x16d1('0x31')]:_0x53de06[_0x16d1('0x2c')];if(_0x168e14[_0x16d1('0x2d')][_0x16d1('0x3a')]){_0x1eb761['include']=[{'all':!![]}];}_0x1eb761=_[_0x16d1('0x36')]({},_0x1eb761,_0x168e14[_0x16d1('0x38')]);return db[_0x16d1('0x29')]['find'](_0x1eb761)['then'](handleEntityNotFound(_0x24038b,null))[_0x16d1('0x22')](respondWithResult(_0x24038b,null))[_0x16d1('0x3f')](handleError(_0x24038b,null));};exports['create']=function(_0x1cc137,_0x583151){return db[_0x16d1('0x29')][_0x16d1('0x40')](_0x1cc137[_0x16d1('0x41')],{})[_0x16d1('0x22')](respondWithResult(_0x583151,0xc9))['catch'](handleError(_0x583151,null));};exports['update']=function(_0x1d92cd,_0x8bb0c1){if(_0x1d92cd['body']['id']){delete _0x1d92cd[_0x16d1('0x41')]['id'];}return db[_0x16d1('0x29')][_0x16d1('0x42')]({'where':{'id':_0x1d92cd[_0x16d1('0x3d')]['id']}})[_0x16d1('0x22')](handleEntityNotFound(_0x8bb0c1,null))['then'](saveUpdates(_0x1d92cd[_0x16d1('0x41')],null))['then'](respondWithResult(_0x8bb0c1,null))[_0x16d1('0x3f')](handleError(_0x8bb0c1,null));};exports[_0x16d1('0x23')]=function(_0x5d384c,_0x413acd){return db[_0x16d1('0x29')][_0x16d1('0x42')]({'where':{'id':_0x5d384c[_0x16d1('0x3d')]['id']}})['then'](handleEntityNotFound(_0x413acd,null))['then'](removeEntity(_0x413acd,null))['catch'](handleError(_0x413acd,null));};
\ No newline at end of file
+var _0x7c71=['eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','send','index','map','WhatsappApplication','rawAttributes','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','findAll','rows','show','include','find','create','catch','body','params'];(function(_0x1acc37,_0x248522){var _0x2372b7=function(_0x50ebe6){while(--_0x50ebe6){_0x1acc37['push'](_0x1acc37['shift']());}};_0x2372b7(++_0x248522);}(_0x7c71,0x177));var _0x17c7=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x7c71[_0x3305de];return _0x3b5a84;};'use strict';var emlformat=require(_0x17c7('0x0'));var rimraf=require(_0x17c7('0x1'));var zipdir=require(_0x17c7('0x2'));var jsonpatch=require(_0x17c7('0x3'));var rp=require('request-promise');var moment=require(_0x17c7('0x4'));var BPromise=require(_0x17c7('0x5'));var Mustache=require(_0x17c7('0x6'));var util=require('util');var path=require('path');var sox=require(_0x17c7('0x7'));var csv=require(_0x17c7('0x8'));var ejs=require(_0x17c7('0x9'));var fs=require('fs');var fs_extra=require(_0x17c7('0xa'));var _=require(_0x17c7('0xb'));var squel=require(_0x17c7('0xc'));var crypto=require(_0x17c7('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x17c7('0xe'));var toCsv=require(_0x17c7('0x8'));var querystring=require(_0x17c7('0xf'));var Papa=require(_0x17c7('0x10'));var Redis=require(_0x17c7('0x11'));var authService=require(_0x17c7('0x12'));var qs=require(_0x17c7('0x13'));var as=require(_0x17c7('0x14'));var hardwareService=require(_0x17c7('0x15'));var logger=require(_0x17c7('0x16'))('api');var utils=require('../../config/utils');var config=require(_0x17c7('0x17'));var licenseUtil=require(_0x17c7('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x430506,_0x22ad50){_0x22ad50=_0x22ad50||0xcc;return function(_0x4fd6af){if(_0x4fd6af){return _0x430506[_0x17c7('0x19')](_0x22ad50);}return _0x430506[_0x17c7('0x1a')](_0x22ad50)['end']();};}function respondWithResult(_0x56ef3b,_0xfae300){_0xfae300=_0xfae300||0xc8;return function(_0x2d980d){if(_0x2d980d){return _0x56ef3b[_0x17c7('0x1a')](_0xfae300)[_0x17c7('0x1b')](_0x2d980d);}};}function respondWithFilteredResult(_0x3d0fb2,_0x2851){return function(_0x2c992f){if(_0x2c992f){var _0x295168=typeof _0x2851[_0x17c7('0x1c')]===_0x17c7('0x1d')&&typeof _0x2851[_0x17c7('0x1e')]===_0x17c7('0x1d');var _0x5470ab=_0x2c992f[_0x17c7('0x1f')];var _0x81d998=_0x295168?0x0:_0x2851['offset'];var _0x42d06c=_0x295168?_0x2c992f[_0x17c7('0x1f')]:_0x2851[_0x17c7('0x1c')]+_0x2851[_0x17c7('0x1e')];var _0x5b9e72;if(_0x42d06c>=_0x5470ab){_0x42d06c=_0x5470ab;_0x5b9e72=0xc8;}else{_0x5b9e72=0xce;}_0x3d0fb2['status'](_0x5b9e72);return _0x3d0fb2[_0x17c7('0x20')](_0x17c7('0x21'),_0x81d998+'-'+_0x42d06c+'/'+_0x5470ab)[_0x17c7('0x1b')](_0x2c992f);}return null;};}function patchUpdates(_0x86956b){return function(_0x2579b7){try{jsonpatch[_0x17c7('0x22')](_0x2579b7,_0x86956b,!![]);}catch(_0x357c27){return BPromise['reject'](_0x357c27);}return _0x2579b7[_0x17c7('0x23')]();};}function saveUpdates(_0x3885c8,_0x3c25ba){return function(_0x16700d){if(_0x16700d){return _0x16700d[_0x17c7('0x24')](_0x3885c8)[_0x17c7('0x25')](function(_0x29a4ac){return _0x29a4ac;});}return null;};}function removeEntity(_0x196e0e,_0x512c3c){return function(_0x312373){if(_0x312373){return _0x312373[_0x17c7('0x26')]()[_0x17c7('0x25')](function(){_0x196e0e[_0x17c7('0x1a')](0xcc)[_0x17c7('0x27')]();});}};}function handleEntityNotFound(_0xa6cfe5,_0x4eb516){return function(_0x36236d){if(!_0x36236d){_0xa6cfe5[_0x17c7('0x19')](0x194);}return _0x36236d;};}function handleError(_0x5e21ec,_0x30a3be){_0x30a3be=_0x30a3be||0x1f4;return function(_0x4d2460){logger[_0x17c7('0x28')](_0x4d2460[_0x17c7('0x29')]);if(_0x4d2460['name']){delete _0x4d2460[_0x17c7('0x2a')];}_0x5e21ec[_0x17c7('0x1a')](_0x30a3be)[_0x17c7('0x2b')](_0x4d2460);};}exports[_0x17c7('0x2c')]=function(_0xe6f177,_0xc6d7b2){var _0x3ca9d3={},_0x14ddac={},_0x3ccf3b={'count':0x0,'rows':[]};var _0x24a2cc=_[_0x17c7('0x2d')](db[_0x17c7('0x2e')][_0x17c7('0x2f')],function(_0xd38b0b){return{'name':_0xd38b0b['fieldName'],'type':_0xd38b0b[_0x17c7('0x30')]['key']};});_0x14ddac[_0x17c7('0x31')]=_[_0x17c7('0x2d')](_0x24a2cc,_0x17c7('0x2a'));_0x14ddac[_0x17c7('0x32')]=_[_0x17c7('0x33')](_0xe6f177['query']);_0x14ddac['filters']=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],_0x14ddac[_0x17c7('0x32')]);_0x3ca9d3[_0x17c7('0x35')]=_[_0x17c7('0x34')](_0x14ddac[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x36')]));_0x3ca9d3['attributes']=_0x3ca9d3[_0x17c7('0x35')][_0x17c7('0x37')]?_0x3ca9d3[_0x17c7('0x35')]:_0x14ddac['model'];if(!_0xe6f177[_0x17c7('0x32')][_0x17c7('0x38')](_0x17c7('0x39'))){_0x3ca9d3[_0x17c7('0x1e')]=qs[_0x17c7('0x1e')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x1e')]);_0x3ca9d3['offset']=qs['offset'](_0xe6f177['query'][_0x17c7('0x1c')]);}_0x3ca9d3['order']=qs[_0x17c7('0x3a')](_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3a')]);_0x3ca9d3['where']=qs[_0x17c7('0x3b')](_['pick'](_0xe6f177['query'],_0x14ddac[_0x17c7('0x3b')]),_0x24a2cc);if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]){_0x3ca9d3[_0x17c7('0x3d')]=_[_0x17c7('0x3e')](_0x3ca9d3[_0x17c7('0x3d')],{'$or':_[_0x17c7('0x2d')](_0x24a2cc,function(_0x342b18){if(_0x342b18[_0x17c7('0x30')]!==_0x17c7('0x3f')){var _0x4ae7a6={};_0x4ae7a6[_0x342b18[_0x17c7('0x2a')]]={'$like':'%'+_0xe6f177[_0x17c7('0x32')][_0x17c7('0x3c')]+'%'};return _0x4ae7a6;}})});}_0x3ca9d3=_[_0x17c7('0x3e')]({},_0x3ca9d3,_0xe6f177[_0x17c7('0x40')]);var _0xbd845c={'where':_0x3ca9d3['where']};return db[_0x17c7('0x2e')][_0x17c7('0x1f')](_0xbd845c)[_0x17c7('0x25')](function(_0x21f15d){_0x3ccf3b[_0x17c7('0x1f')]=_0x21f15d;if(_0xe6f177[_0x17c7('0x32')][_0x17c7('0x41')]){_0x3ca9d3['include']=[{'all':!![]}];}return db['WhatsappApplication'][_0x17c7('0x42')](_0x3ca9d3);})[_0x17c7('0x25')](function(_0xef91f1){_0x3ccf3b[_0x17c7('0x43')]=_0xef91f1;return _0x3ccf3b;})[_0x17c7('0x25')](respondWithFilteredResult(_0xc6d7b2,_0x3ca9d3))['catch'](handleError(_0xc6d7b2,null));};exports[_0x17c7('0x44')]=function(_0x2813ef,_0x5b45db){var _0x13420f={'raw':!![],'where':{'id':_0x2813ef['params']['id']}},_0x3d4f9d={};_0x3d4f9d[_0x17c7('0x31')]=_[_0x17c7('0x33')](db[_0x17c7('0x2e')]['rawAttributes']);_0x3d4f9d['query']=_[_0x17c7('0x33')](_0x2813ef[_0x17c7('0x32')]);_0x3d4f9d[_0x17c7('0x3b')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],_0x3d4f9d['query']);_0x13420f[_0x17c7('0x35')]=_['intersection'](_0x3d4f9d[_0x17c7('0x31')],qs[_0x17c7('0x36')](_0x2813ef[_0x17c7('0x32')]['fields']));_0x13420f[_0x17c7('0x35')]=_0x13420f[_0x17c7('0x35')][_0x17c7('0x37')]?_0x13420f[_0x17c7('0x35')]:_0x3d4f9d[_0x17c7('0x31')];if(_0x2813ef[_0x17c7('0x32')][_0x17c7('0x41')]){_0x13420f[_0x17c7('0x45')]=[{'all':!![]}];}_0x13420f=_[_0x17c7('0x3e')]({},_0x13420f,_0x2813ef[_0x17c7('0x40')]);return db['WhatsappApplication'][_0x17c7('0x46')](_0x13420f)['then'](handleEntityNotFound(_0x5b45db,null))[_0x17c7('0x25')](respondWithResult(_0x5b45db,null))['catch'](handleError(_0x5b45db,null));};exports[_0x17c7('0x47')]=function(_0x48d0e5,_0x3b2e65){return db[_0x17c7('0x2e')]['create'](_0x48d0e5['body'],{})[_0x17c7('0x25')](respondWithResult(_0x3b2e65,0xc9))[_0x17c7('0x48')](handleError(_0x3b2e65,null));};exports[_0x17c7('0x24')]=function(_0x32d007,_0x2f1136){if(_0x32d007[_0x17c7('0x49')]['id']){delete _0x32d007[_0x17c7('0x49')]['id'];}return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x32d007[_0x17c7('0x4a')]['id']}})[_0x17c7('0x25')](handleEntityNotFound(_0x2f1136,null))[_0x17c7('0x25')](saveUpdates(_0x32d007[_0x17c7('0x49')],null))[_0x17c7('0x25')](respondWithResult(_0x2f1136,null))[_0x17c7('0x48')](handleError(_0x2f1136,null));};exports[_0x17c7('0x26')]=function(_0x5166c0,_0xb2bb36){return db[_0x17c7('0x2e')]['find']({'where':{'id':_0x5166c0[_0x17c7('0x4a')]['id']}})['then'](handleEntityNotFound(_0xb2bb36,null))[_0x17c7('0x25')](removeEntity(_0xb2bb36,null))[_0x17c7('0x48')](handleError(_0xb2bb36,null));};
\ No newline at end of file
index e38ae63..e2e80e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90d=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./whatsappApplication.attributes','define','WhatsappApplication','whatsapp_applications'];(function(_0x3c5aba,_0x335f28){var _0x1bab64=function(_0x9b339f){while(--_0x9b339f){_0x3c5aba['push'](_0x3c5aba['shift']());}};_0x1bab64(++_0x335f28);}(_0xb90d,0x17a));var _0xdb90=function(_0x3d7a9f,_0x24e0f1){_0x3d7a9f=_0x3d7a9f-0x0;var _0x13f5f1=_0xb90d[_0x3d7a9f];return _0x13f5f1;};'use strict';var _=require('lodash');var util=require(_0xdb90('0x0'));var logger=require(_0xdb90('0x1'))(_0xdb90('0x2'));var moment=require(_0xdb90('0x3'));var BPromise=require(_0xdb90('0x4'));var rp=require(_0xdb90('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdb90('0x6'));var config=require(_0xdb90('0x7'));var attributes=require(_0xdb90('0x8'));module['exports']=function(_0x5a0622,_0x2cc7cd){return _0x5a0622[_0xdb90('0x9')](_0xdb90('0xa'),attributes,{'tableName':_0xdb90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xdb90('0xc')});};
\ No newline at end of file
+var _0xb903=['api','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappApplication.attributes','exports','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger'];(function(_0x36bf88,_0x15c459){var _0x332914=function(_0x512adf){while(--_0x512adf){_0x36bf88['push'](_0x36bf88['shift']());}};_0x332914(++_0x15c459);}(_0xb903,0x185));var _0x3b90=function(_0x1c6ffb,_0x2fde07){_0x1c6ffb=_0x1c6ffb-0x0;var _0x5a6e34=_0xb903[_0x1c6ffb];return _0x5a6e34;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var logger=require(_0x3b90('0x2'))(_0x3b90('0x3'));var moment=require('moment');var BPromise=require(_0x3b90('0x4'));var rp=require(_0x3b90('0x5'));var fs=require('fs');var path=require(_0x3b90('0x6'));var rimraf=require(_0x3b90('0x7'));var config=require(_0x3b90('0x8'));var attributes=require(_0x3b90('0x9'));module[_0x3b90('0xa')]=function(_0x5acd76,_0x15b68f){return _0x5acd76['define']('WhatsappApplication',attributes,{'tableName':_0x3b90('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x3b90('0xc'),'collate':_0x3b90('0xd')});};
\ No newline at end of file
index 2893af6..3a28276 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['http','request','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','error','WhatsappApplication,\x20%s,\x20%s','message','info','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x26013b,_0x2ed582){var _0x5627ca=function(_0x336621){while(--_0x336621){_0x26013b['push'](_0x26013b['shift']());}};_0x5627ca(++_0x2ed582);}(_0xb903,0x185));var _0x3b90=function(_0x3bd6a5,_0xd5bd6b){_0x3bd6a5=_0x3bd6a5-0x0;var _0x54a78a=_0xb903[_0x3bd6a5];return _0x54a78a;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var moment=require(_0x3b90('0x2'));var BPromise=require(_0x3b90('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b90('0x4'));var db=require(_0x3b90('0x5'))['db'];var utils=require(_0x3b90('0x6'));var logger=require(_0x3b90('0x7'))(_0x3b90('0x8'));var config=require(_0x3b90('0x9'));var jayson=require(_0x3b90('0xa'));var client=jayson['client'][_0x3b90('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5e845a,_0x55792c,_0x153283){return new BPromise(function(_0x2e4c06,_0x42efe8){return client[_0x3b90('0xc')](_0x5e845a,_0x153283)['then'](function(_0x5cda1d){logger['info']('WhatsappApplication,\x20%s,\x20%s',_0x55792c,'request\x20sent');logger['debug'](_0x3b90('0xd'),_0x55792c,_0x3b90('0xe'),JSON['stringify'](_0x5cda1d));if(_0x5cda1d[_0x3b90('0xf')]){if(_0x5cda1d[_0x3b90('0xf')]['code']===0x1f4){logger[_0x3b90('0xf')](_0x3b90('0x10'),_0x55792c,_0x5cda1d[_0x3b90('0xf')]['message']);return _0x42efe8(_0x5cda1d['error'][_0x3b90('0x11')]);}logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x55792c,_0x5cda1d[_0x3b90('0xf')][_0x3b90('0x11')]);return _0x2e4c06(_0x5cda1d['error']['message']);}else{logger[_0x3b90('0x12')](_0x3b90('0x10'),_0x55792c,_0x3b90('0xe'));_0x2e4c06(_0x5cda1d[_0x3b90('0x13')][_0x3b90('0x11')]);}})['catch'](function(_0x494970){logger[_0x3b90('0xf')](_0x3b90('0x10'),_0x55792c,_0x494970);_0x42efe8(_0x494970);});});}
\ No newline at end of file
+var _0xe14d=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','WhatsappApplication,\x20%s,\x20%s','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb'];(function(_0x5d8de7,_0x1cd195){var _0x55df29=function(_0x20e6d9){while(--_0x20e6d9){_0x5d8de7['push'](_0x5d8de7['shift']());}};_0x55df29(++_0x1cd195);}(_0xe14d,0x1ee));var _0xde14=function(_0x6cf19c,_0x2f3f02){_0x6cf19c=_0x6cf19c-0x0;var _0xce14f3=_0xe14d[_0x6cf19c];return _0xce14f3;};'use strict';var _=require(_0xde14('0x0'));var util=require(_0xde14('0x1'));var moment=require(_0xde14('0x2'));var BPromise=require(_0xde14('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde14('0x4'));var db=require(_0xde14('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xde14('0x6'))(_0xde14('0x7'));var config=require(_0xde14('0x8'));var jayson=require(_0xde14('0x9'));var client=jayson[_0xde14('0xa')][_0xde14('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4b1f6b,_0x5a1344,_0x1bd49d){return new BPromise(function(_0x115b7d,_0x2b0e7c){return client[_0xde14('0xc')](_0x4b1f6b,_0x1bd49d)[_0xde14('0xd')](function(_0x176909){logger[_0xde14('0xe')](_0xde14('0xf'),_0x5a1344,'request\x20sent');logger[_0xde14('0x10')](_0xde14('0x11'),_0x5a1344,_0xde14('0x12'),JSON[_0xde14('0x13')](_0x176909));if(_0x176909[_0xde14('0x14')]){if(_0x176909[_0xde14('0x14')][_0xde14('0x15')]===0x1f4){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909[_0xde14('0x14')][_0xde14('0x16')]);return _0x2b0e7c(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x176909['error']['message']);return _0x115b7d(_0x176909[_0xde14('0x14')][_0xde14('0x16')]);}else{logger[_0xde14('0xe')]('WhatsappApplication,\x20%s,\x20%s',_0x5a1344,_0xde14('0x12'));_0x115b7d(_0x176909[_0xde14('0x17')][_0xde14('0x16')]);}})[_0xde14('0x18')](function(_0x3de959){logger[_0xde14('0x14')](_0xde14('0xf'),_0x5a1344,_0x3de959);_0x2b0e7c(_0x3de959);});});}
\ No newline at end of file
index 53c7180..eee0655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['put','whatsappinteraction:update','update','delete','exports','multer','util','path','connect-timeout','express','Router','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','/:id','show','/:id/messages','getMessages','/:id/download','download','create','post','addMessage','/:id/tags','tracked','whatsapp','whatsappinteraction:addtags','addTags'];(function(_0xff07ae,_0x1b8fa7){var _0x577f5c=function(_0x33f745){while(--_0x33f745){_0xff07ae['push'](_0xff07ae['shift']());}};_0x577f5c(++_0x1b8fa7);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x2e4aa2,_0x11956a){_0x2e4aa2=_0x2e4aa2-0x0;var _0x5e6092=_0xc4aa[_0x2e4aa2];return _0x5e6092;};'use strict';var multer=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var path=require(_0xac4a('0x2'));var timeout=require(_0xac4a('0x3'));var express=require(_0xac4a('0x4'));var router=express[_0xac4a('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xac4a('0x6'));var controller=require(_0xac4a('0x7'));router[_0xac4a('0x8')]('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0xa')]);router[_0xac4a('0x8')](_0xac4a('0xb'),auth[_0xac4a('0x9')](),controller['describe']);router['get'](_0xac4a('0xc'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xd')]);router['get'](_0xac4a('0xe'),auth[_0xac4a('0x9')](),controller[_0xac4a('0xf')]);router['get'](_0xac4a('0x10'),auth['isAuthenticated'](),controller[_0xac4a('0x11')]);router['post']('/',auth[_0xac4a('0x9')](),controller[_0xac4a('0x12')]);router[_0xac4a('0x13')]('/:id/messages',auth[_0xac4a('0x9')](),controller[_0xac4a('0x14')]);router[_0xac4a('0x13')](_0xac4a('0x15'),auth[_0xac4a('0x9')](),interaction[_0xac4a('0x16')](_0xac4a('0x17'),_0xac4a('0x18')),controller[_0xac4a('0x19')]);router[_0xac4a('0x1a')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),interaction['tracked'](_0xac4a('0x17'),_0xac4a('0x1b')),controller[_0xac4a('0x1c')]);router[_0xac4a('0x1d')](_0xac4a('0xc'),auth[_0xac4a('0x9')](),interaction[_0xac4a('0x16')](_0xac4a('0x17'),'whatsappinteraction:destroy'),controller['destroy']);router[_0xac4a('0x1d')](_0xac4a('0x15'),auth[_0xac4a('0x9')](),controller['removeTags']);module[_0xac4a('0x1e')]=router;
\ No newline at end of file
+var _0x292c=['getMessages','download','post','create','addMessage','/:id/tags','whatsappinteraction:addtags','addTags','whatsapp','update','delete','tracked','destroy','removeTags','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','/:id/messages'];(function(_0x4ca536,_0x57c8de){var _0x3bd35f=function(_0x26d91d){while(--_0x26d91d){_0x4ca536['push'](_0x4ca536['shift']());}};_0x3bd35f(++_0x57c8de);}(_0x292c,0x66));var _0xc292=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x292c[_0x14add3];return _0x4a174f;};'use strict';var multer=require(_0xc292('0x0'));var util=require('util');var path=require(_0xc292('0x1'));var timeout=require(_0xc292('0x2'));var express=require(_0xc292('0x3'));var router=express[_0xc292('0x4')]();var fs_extra=require(_0xc292('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xc292('0x6'));var config=require('../../config/environment');var controller=require('./whatsappInteraction.controller');router[_0xc292('0x7')]('/',auth[_0xc292('0x8')](),controller[_0xc292('0x9')]);router[_0xc292('0x7')](_0xc292('0xa'),auth[_0xc292('0x8')](),controller[_0xc292('0xb')]);router[_0xc292('0x7')](_0xc292('0xc'),auth[_0xc292('0x8')](),controller['show']);router[_0xc292('0x7')](_0xc292('0xd'),auth[_0xc292('0x8')](),controller[_0xc292('0xe')]);router[_0xc292('0x7')]('/:id/download',auth[_0xc292('0x8')](),controller[_0xc292('0xf')]);router[_0xc292('0x10')]('/',auth[_0xc292('0x8')](),controller[_0xc292('0x11')]);router[_0xc292('0x10')]('/:id/messages',auth[_0xc292('0x8')](),controller[_0xc292('0x12')]);router[_0xc292('0x10')](_0xc292('0x13'),auth[_0xc292('0x8')](),interaction['tracked']('whatsapp',_0xc292('0x14')),controller[_0xc292('0x15')]);router['put'](_0xc292('0xc'),auth['isAuthenticated'](),interaction['tracked'](_0xc292('0x16'),'whatsappinteraction:update'),controller[_0xc292('0x17')]);router[_0xc292('0x18')](_0xc292('0xc'),auth['isAuthenticated'](),interaction[_0xc292('0x19')]('whatsapp','whatsappinteraction:destroy'),controller[_0xc292('0x1a')]);router[_0xc292('0x18')]('/:id/tags',auth[_0xc292('0x8')](),controller[_0xc292('0x1b')]);module[_0xc292('0x1c')]=router;
\ No newline at end of file
index 8278a91..ce6ae01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61df=['DATE','STRING','ENUM','out','BOOLEAN'];(function(_0x26848e,_0x1b6235){var _0x37fd5b=function(_0x28dc7f){while(--_0x28dc7f){_0x26848e['push'](_0x26848e['shift']());}};_0x37fd5b(++_0x1b6235);}(_0x61df,0xbd));var _0xf61d=function(_0x355197,_0x3e8dc9){_0x355197=_0x355197-0x0;var _0x33edb3=_0x61df[_0x355197];return _0x33edb3;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0xf61d('0x0')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xf61d('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf61d('0x2')]},'thirdDisposition':{'type':Sequelize[_0xf61d('0x2')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0xf61d('0x2')]},'read1stAt':{'type':Sequelize[_0xf61d('0x1')]},'firstMsgDirection':{'type':Sequelize[_0xf61d('0x3')]('in',_0xf61d('0x4')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xf61d('0x1')]},'lastMsgDirection':{'type':Sequelize[_0xf61d('0x3')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0xf61d('0x0')],'defaultValue':![]}};
\ No newline at end of file
+var _0x8c46=['DATE','ENUM','out','sequelize','BOOLEAN','STRING'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x8c46,0x171));var _0x68c4=function(_0x3a7c38,_0x3e30cb){_0x3a7c38=_0x3a7c38-0x0;var _0x31b925=_0x8c46[_0x3a7c38];return _0x31b925;};'use strict';var Sequelize=require(_0x68c4('0x0'));var moment=require('moment');module['exports']={'closed':{'type':Sequelize[_0x68c4('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize['DATE']},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x68c4('0x2')]},'thirdDisposition':{'type':Sequelize[_0x68c4('0x2')]},'note':{'type':Sequelize[_0x68c4('0x2')]},'phone':{'type':Sequelize[_0x68c4('0x2')]},'read1stAt':{'type':Sequelize[_0x68c4('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x68c4('0x4')]('in',_0x68c4('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x68c4('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x68c4('0x4')]('in',_0x68c4('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index e397fb0..0e4fc7d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c01=['createdAt','secret','read','WhatsappAccount','Owner','get','mkdirSync','Whatsapp','Account','fullname','toString','closed','closedAt','disposition','existsSync','createReadStream','pipe','basename','direction','System','Contact','firstName','out','value','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','log','err','rimraf','bluebird','ejs','lodash','ioredis','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','../../config/environment','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','error','stack','map','WhatsappInteraction','rawAttributes','type','getOptions','findAll','whatsapp','query','catch','show','params','model','keys','filters','attributes','intersection','fields','length','includeAll','include','options','create','body','addMessage','WhatsappMessage','ids','omit','getMessages','sort','where','filter','merge','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','find','setTags','name','color','emit','whatsappInteractionTags:save','removeTags','download','unix','root','server','files','attachments','join','transcript-%d-%s.zip','User','push','CmContact','lastName','Attachment','Messages'];(function(_0x69f9ff,_0x2dd452){var _0x3f91a3=function(_0x5be5e1){while(--_0x5be5e1){_0x69f9ff['push'](_0x69f9ff['shift']());}};_0x3f91a3(++_0x2dd452);}(_0x0c01,0x10f));var _0x10c0=function(_0x48189c,_0x5aa295){_0x48189c=_0x48189c-0x0;var _0x1121f4=_0x0c01[_0x48189c];return _0x1121f4;};'use strict';var rimraf=require(_0x10c0('0x0'));var zipdir=require('zip-dir');var moment=require('moment');var BPromise=require(_0x10c0('0x1'));var util=require('util');var path=require('path');var ejs=require(_0x10c0('0x2'));var fs=require('fs');var _=require(_0x10c0('0x3'));var Redis=require(_0x10c0('0x4'));var interaction=require(_0x10c0('0x5'));var qs=require(_0x10c0('0x6'));var pdf=require(_0x10c0('0x7'));var logger=require(_0x10c0('0x8'))('api');var config=require(_0x10c0('0x9'));var db=require('../../mysqldb')['db'];config[_0x10c0('0xa')]=_['defaults'](config[_0x10c0('0xa')],{'host':_0x10c0('0xb'),'port':0x18eb});var socket=require(_0x10c0('0xc'))(new Redis(config[_0x10c0('0xa')]));require(_0x10c0('0xd'))[_0x10c0('0xe')](socket);function respondWithStatusCode(_0x1f5986,_0x5c84d3){_0x5c84d3=_0x5c84d3||0xcc;return function(_0x85125b){if(_0x85125b){return _0x1f5986[_0x10c0('0xf')](_0x5c84d3);}return _0x1f5986['status'](_0x5c84d3)['end']();};}function respondWithResult(_0x57a24f,_0x20f2de){_0x20f2de=_0x20f2de||0xc8;return function(_0x3050ba){if(_0x3050ba){return _0x57a24f[_0x10c0('0x10')](_0x20f2de)[_0x10c0('0x11')](_0x3050ba);}};}function respondWithFilteredResult(_0x4337bf,_0x327558){return function(_0x8f1593){if(_0x8f1593){var _0x3f687c=typeof _0x327558[_0x10c0('0x12')]===_0x10c0('0x13')&&typeof _0x327558[_0x10c0('0x14')]==='undefined';var _0x17bcf3=_0x8f1593['count'];var _0x3ac0a1=_0x3f687c?0x0:_0x327558[_0x10c0('0x12')];var _0x3ddc80=_0x3f687c?_0x8f1593[_0x10c0('0x15')]:_0x327558[_0x10c0('0x12')]+_0x327558[_0x10c0('0x14')];var _0x2a8964;if(_0x3ddc80>=_0x17bcf3){_0x3ddc80=_0x17bcf3;_0x2a8964=0xc8;}else{_0x2a8964=0xce;}_0x4337bf[_0x10c0('0x10')](_0x2a8964);return _0x4337bf[_0x10c0('0x16')](_0x10c0('0x17'),_0x3ac0a1+'-'+_0x3ddc80+'/'+_0x17bcf3)[_0x10c0('0x11')](_0x8f1593);}return null;};}function saveUpdates(_0x150efe){return function(_0x5d83ef){if(_0x5d83ef){return _0x5d83ef[_0x10c0('0x18')](_0x150efe)[_0x10c0('0x19')](function(_0x279239){return _0x279239;});}return null;};}function removeEntity(_0x28cf0f){return function(_0x1420b0){if(_0x1420b0){return _0x1420b0[_0x10c0('0x1a')]()['then'](function(){_0x28cf0f['status'](0xcc)[_0x10c0('0x1b')]();});}};}function handleEntityNotFound(_0x561f53){return function(_0xbdebe4){if(!_0xbdebe4){_0x561f53[_0x10c0('0xf')](0x194);}return _0xbdebe4;};}function handleError(_0x57d1ed,_0x4aabb7){_0x4aabb7=_0x4aabb7||0x1f4;return function(_0x392fa4){logger[_0x10c0('0x1c')](_0x392fa4[_0x10c0('0x1d')]);if(_0x392fa4['name']){delete _0x392fa4['name'];}_0x57d1ed[_0x10c0('0x10')](_0x4aabb7)['send'](_0x392fa4);};}exports['index']=function(_0x5eab76,_0x1fa180){var _0x5d5940={};var _0xfeca43=_[_0x10c0('0x1e')](db[_0x10c0('0x1f')][_0x10c0('0x20')],function(_0x321458){return{'name':_0x321458['fieldName'],'type':_0x321458[_0x10c0('0x21')]['key']};});_0x5d5940=qs[_0x10c0('0x22')](_0xfeca43,_0x5eab76);return interaction[_0x10c0('0x23')](_0x10c0('0x24'),_0x5eab76[_0x10c0('0x25')],_0x5eab76['user'],_0x5d5940,_0xfeca43)[_0x10c0('0x19')](respondWithFilteredResult(_0x1fa180,_0x5d5940))[_0x10c0('0x26')](handleError(_0x1fa180,null));};exports[_0x10c0('0x27')]=function(_0x5e8da0,_0x449901){var _0x1a39fb={'raw':![],'where':{'id':_0x5e8da0[_0x10c0('0x28')]['id']}},_0x4217fc={};_0x4217fc[_0x10c0('0x29')]=_['keys'](db[_0x10c0('0x1f')][_0x10c0('0x20')]);_0x4217fc[_0x10c0('0x25')]=_[_0x10c0('0x2a')](_0x5e8da0[_0x10c0('0x25')]);_0x4217fc[_0x10c0('0x2b')]=_['intersection'](_0x4217fc[_0x10c0('0x29')],_0x4217fc[_0x10c0('0x25')]);_0x1a39fb[_0x10c0('0x2c')]=_[_0x10c0('0x2d')](_0x4217fc[_0x10c0('0x29')],qs['fields'](_0x5e8da0[_0x10c0('0x25')][_0x10c0('0x2e')]));_0x1a39fb[_0x10c0('0x2c')]=_0x1a39fb[_0x10c0('0x2c')][_0x10c0('0x2f')]?_0x1a39fb[_0x10c0('0x2c')]:_0x4217fc[_0x10c0('0x29')];if(_0x5e8da0[_0x10c0('0x25')][_0x10c0('0x30')]){_0x1a39fb[_0x10c0('0x31')]=[{'all':!![]}];}_0x1a39fb=_['merge']({},_0x1a39fb,_0x5e8da0[_0x10c0('0x32')]);return db[_0x10c0('0x1f')]['find'](_0x1a39fb)[_0x10c0('0x19')](handleEntityNotFound(_0x449901,null))['then'](respondWithResult(_0x449901,null))[_0x10c0('0x26')](handleError(_0x449901,null));};exports[_0x10c0('0x33')]=function(_0x173bd5,_0x370105){return db[_0x10c0('0x1f')][_0x10c0('0x33')](_0x173bd5[_0x10c0('0x34')],{})[_0x10c0('0x19')](respondWithResult(_0x370105,0xc9))[_0x10c0('0x26')](handleError(_0x370105,null));};exports[_0x10c0('0x18')]=function(_0x454873,_0x292400){if(_0x454873[_0x10c0('0x34')]['id']){delete _0x454873[_0x10c0('0x34')]['id'];}return db[_0x10c0('0x1f')]['find']({'where':{'id':_0x454873[_0x10c0('0x28')]['id']}})[_0x10c0('0x19')](handleEntityNotFound(_0x292400,null))['then'](saveUpdates(_0x454873[_0x10c0('0x34')],null))[_0x10c0('0x19')](respondWithResult(_0x292400,null))[_0x10c0('0x26')](handleError(_0x292400,null));};exports[_0x10c0('0x1a')]=function(_0x401d42,_0x3940cb){return db[_0x10c0('0x1f')]['find']({'where':{'id':_0x401d42[_0x10c0('0x28')]['id']}})[_0x10c0('0x19')](handleEntityNotFound(_0x3940cb,null))[_0x10c0('0x19')](removeEntity(_0x3940cb,null))[_0x10c0('0x26')](handleError(_0x3940cb,null));};exports['describe']=function(_0x10f88e,_0xe18ccd){return db['WhatsappInteraction']['describe']()['then'](respondWithResult(_0xe18ccd,null))[_0x10c0('0x26')](handleError(_0xe18ccd,null));};exports[_0x10c0('0x35')]=function(_0x589046,_0x372b37){return db[_0x10c0('0x36')]['find']({'where':{'id':_0x589046[_0x10c0('0x28')]['id']}})['then'](handleEntityNotFound(_0x372b37,null))[_0x10c0('0x19')](function(_0x582ef3){if(_0x582ef3){return _0x582ef3['addMessage'](_0x589046[_0x10c0('0x34')][_0x10c0('0x37')],_[_0x10c0('0x38')](_0x589046[_0x10c0('0x34')],[_0x10c0('0x37'),'id'])||{});}})['then'](respondWithResult(_0x372b37,null))[_0x10c0('0x26')](handleError(_0x372b37,null));};exports[_0x10c0('0x39')]=function(_0x41311b,_0x34be0d){var _0x5a2263={'raw':![],'where':{}};var _0x1b1e7f={};var _0x5112fd={'count':0x0,'rows':[]};return db[_0x10c0('0x1f')]['findOne']({'where':{'id':_0x41311b[_0x10c0('0x28')]['id']}})[_0x10c0('0x19')](handleEntityNotFound(_0x34be0d,null))['then'](function(_0x8f44c9){if(_0x8f44c9){_0x1b1e7f[_0x10c0('0x29')]=_[_0x10c0('0x2a')](db[_0x10c0('0x36')]['rawAttributes']);_0x1b1e7f[_0x10c0('0x25')]=_[_0x10c0('0x2a')](_0x41311b['query']);_0x1b1e7f[_0x10c0('0x2b')]=_[_0x10c0('0x2d')](_0x1b1e7f[_0x10c0('0x29')],_0x1b1e7f[_0x10c0('0x25')]);_0x5a2263[_0x10c0('0x2c')]=_[_0x10c0('0x2d')](_0x1b1e7f[_0x10c0('0x29')],qs[_0x10c0('0x2e')](_0x41311b[_0x10c0('0x25')][_0x10c0('0x2e')]));_0x5a2263[_0x10c0('0x2c')]=_0x5a2263[_0x10c0('0x2c')]['length']?_0x5a2263[_0x10c0('0x2c')]:_0x1b1e7f[_0x10c0('0x29')];if(!_0x41311b[_0x10c0('0x25')]['hasOwnProperty']('nolimit')){_0x5a2263['limit']=qs[_0x10c0('0x14')](_0x41311b[_0x10c0('0x25')][_0x10c0('0x14')]);_0x5a2263[_0x10c0('0x12')]=qs[_0x10c0('0x12')](_0x41311b['query'][_0x10c0('0x12')]);}_0x5a2263['order']=qs[_0x10c0('0x3a')](_0x41311b[_0x10c0('0x25')]['sort']);_0x5a2263[_0x10c0('0x3b')]=qs[_0x10c0('0x2b')](_['pick'](_0x41311b[_0x10c0('0x25')],_0x1b1e7f[_0x10c0('0x2b')]));_0x5a2263['where']['WhatsappInteractionId']=_0x8f44c9['id'];if(_0x41311b[_0x10c0('0x25')][_0x10c0('0x3c')]){_0x5a2263[_0x10c0('0x3b')]=_[_0x10c0('0x3d')](_0x5a2263['where'],{'$or':_[_0x10c0('0x1e')](_0x5a2263['attributes'],function(_0x320732){var _0x310ccc={};_0x310ccc[_0x320732]={'$like':'%'+_0x41311b[_0x10c0('0x25')]['filter']+'%'};return _0x310ccc;})});}if(_0x41311b[_0x10c0('0x25')][_0x10c0('0x3e')]){var _0x2e4c74=_0x41311b[_0x10c0('0x25')][_0x10c0('0x3e')][_0x10c0('0x3f')](',');var _0x4bef65={};_0x4bef65[_0x2e4c74[0x0]]={'$gte':moment(_0x2e4c74[0x1])[_0x10c0('0x40')](_0x10c0('0x41'))};_0x5a2263[_0x10c0('0x3b')]=_[_0x10c0('0x3d')](_0x5a2263['where'],_0x4bef65);}_0x5a2263=_['merge']({},_0x5a2263,_0x41311b[_0x10c0('0x32')]);return db[_0x10c0('0x36')][_0x10c0('0x15')]({'where':_0x5a2263[_0x10c0('0x3b')]})['then'](function(_0x5b5519){_0x5112fd[_0x10c0('0x15')]=_0x5b5519;if(_0x41311b[_0x10c0('0x25')]['includeAll']){_0x5a2263[_0x10c0('0x31')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x5a2263);})['then'](function(_0x10742c){_0x5112fd[_0x10c0('0x42')]=_0x10742c;return _0x5112fd;});}})['then'](respondWithFilteredResult(_0x34be0d,_0x5a2263))[_0x10c0('0x26')](handleError(_0x34be0d,null));};exports[_0x10c0('0x43')]=function(_0x1a140a,_0xec572){return db[_0x10c0('0x1f')][_0x10c0('0x44')]({'where':{'id':_0x1a140a['params']['id']}})[_0x10c0('0x19')](handleEntityNotFound(_0xec572,null))[_0x10c0('0x19')](function(_0x401477){if(_0x401477){return _0x401477[_0x10c0('0x45')](_0x1a140a[_0x10c0('0x34')][_0x10c0('0x37')],_[_0x10c0('0x38')](_0x1a140a[_0x10c0('0x34')],[_0x10c0('0x37'),'id'])||{})['spread'](function(){return db['Tag'][_0x10c0('0x23')]({'attributes':['id',_0x10c0('0x46'),_0x10c0('0x47')],'where':{'id':_0x1a140a[_0x10c0('0x34')]['ids']}});})[_0x10c0('0x19')](function(_0x1aa8d6){socket[_0x10c0('0x48')](_0x10c0('0x49'),{'id':Number(_0x1a140a[_0x10c0('0x28')]['id']),'tags':_0x1aa8d6||[]});return{'id':Number(_0x1a140a[_0x10c0('0x28')]['id']),'tags':_0x1aa8d6||[]};});}})[_0x10c0('0x19')](respondWithResult(_0xec572,null))[_0x10c0('0x26')](handleError(_0xec572,null));};exports[_0x10c0('0x4a')]=function(_0xbc8115,_0x5bac2c){return db[_0x10c0('0x1f')][_0x10c0('0x44')]({'where':{'id':_0xbc8115[_0x10c0('0x28')]['id']}})['then'](handleEntityNotFound(_0x5bac2c,null))[_0x10c0('0x19')](function(_0x2af3dd){if(_0x2af3dd){return _0x2af3dd[_0x10c0('0x4a')](_0xbc8115[_0x10c0('0x25')][_0x10c0('0x37')]);}})[_0x10c0('0x19')](respondWithStatusCode(_0x5bac2c,null))[_0x10c0('0x26')](handleError(_0x5bac2c,null));};exports[_0x10c0('0x4b')]=function(_0x44bd97,_0x39f6a){var _0x5f2aa6=moment()[_0x10c0('0x4c')]()['toString']();var _0x4e40b6=path['join'](config[_0x10c0('0x4d')],_0x10c0('0x4e'),'files','tmp');var _0x3309c4=path['join'](config['root'],_0x10c0('0x4e'),_0x10c0('0x4f'),_0x10c0('0x50'));var _0x626990=path[_0x10c0('0x51')](_0x4e40b6,_0x5f2aa6);var _0x280043=util[_0x10c0('0x40')](_0x10c0('0x52'),_0x44bd97[_0x10c0('0x28')]['id'],_0x5f2aa6);var _0x58c32e=path[_0x10c0('0x51')](_0x4e40b6,_0x280043);var _0x2b25ca=[];_0x2b25ca['push']({'model':db[_0x10c0('0x53')],'as':_0x10c0('0x53'),'attributes':['id','fullname'],'raw':!![]});_0x2b25ca[_0x10c0('0x54')]({'model':db[_0x10c0('0x55')],'as':'Contact','attributes':['id','firstName',_0x10c0('0x56')],'raw':!![]});if(_0x44bd97[_0x10c0('0x25')][_0x10c0('0x50')]){_0x2b25ca[_0x10c0('0x54')]({'model':db[_0x10c0('0x57')],'as':_0x10c0('0x57'),'raw':!![]});}var _0x372c74=[{'model':db[_0x10c0('0x36')],'as':_0x10c0('0x58'),'attributes':['id','body',_0x10c0('0x59'),'direction',_0x10c0('0x5a'),_0x10c0('0x5b')],'include':_0x2b25ca}];_0x372c74[_0x10c0('0x54')]({'model':db[_0x10c0('0x5c')],'as':'Account','attributes':['id',_0x10c0('0x46')]});_0x372c74[_0x10c0('0x54')]({'model':db[_0x10c0('0x53')],'as':_0x10c0('0x5d'),'attributes':['id','fullname']});return db['WhatsappInteraction'][_0x10c0('0x44')]({'where':{'id':_0x44bd97[_0x10c0('0x28')]['id']},'include':_0x372c74})[_0x10c0('0x19')](handleEntityNotFound(_0x39f6a,null))['then'](function(_0x4df481){if(_0x4df481){var _0x475d40=_0x4df481[_0x10c0('0x5e')]({'plain':!![]});fs[_0x10c0('0x5f')](_0x626990);var _0x5d8746={'channel':_0x10c0('0x60'),'account':_0x475d40[_0x10c0('0x61')][_0x10c0('0x46')],'agent':_0x475d40[_0x10c0('0x5d')]?_0x475d40[_0x10c0('0x5d')][_0x10c0('0x62')]:'N.A.','createdAt':moment(_0x475d40[_0x10c0('0x59')])[_0x10c0('0x40')](_0x10c0('0x41'))[_0x10c0('0x63')](),'closedAt':_0x475d40[_0x10c0('0x64')]?moment(_0x475d40[_0x10c0('0x65')])['format'](_0x10c0('0x41'))[_0x10c0('0x63')]():'','disposition':_0x475d40[_0x10c0('0x66')],'messages':_(_0x475d40[_0x10c0('0x58')])[_0x10c0('0x3c')]({'secret':![]})[_0x10c0('0x1e')](function(_0x124249){if(_0x124249[_0x10c0('0x57')]){var _0x198dc6=path[_0x10c0('0x51')](_0x3309c4,_0x124249[_0x10c0('0x57')]['basename']);if(fs[_0x10c0('0x67')](_0x198dc6)){fs[_0x10c0('0x68')](_0x198dc6)[_0x10c0('0x69')](fs['createWriteStream'](path['join'](_0x626990,_0x124249['Attachment'][_0x10c0('0x6a')])));}}return{'date':moment(_0x124249[_0x10c0('0x59')])[_0x10c0('0x40')](_0x10c0('0x41'))[_0x10c0('0x63')](),'sender':_0x124249[_0x10c0('0x6b')]==='out'?_0x124249[_0x10c0('0x53')]?_0x124249[_0x10c0('0x53')]['fullname']:_0x10c0('0x6c'):_0x124249[_0x10c0('0x6d')][_0x10c0('0x6e')]+(_0x124249[_0x10c0('0x6d')][_0x10c0('0x56')]?'\x20'+_0x124249[_0x10c0('0x6d')][_0x10c0('0x56')]:''),'body':_0x124249[_0x10c0('0x57')]?_0x124249[_0x10c0('0x57')]['basename']:_0x124249['body'],'direction':_0x124249[_0x10c0('0x6b')]===_0x10c0('0x6f')?'A':'C','secret':_0x124249['secret'],'read':_0x124249['read'],'attachment':_0x124249[_0x10c0('0x57')]};})[_0x10c0('0x70')]()};return ejs[_0x10c0('0x71')](path[_0x10c0('0x51')](config[_0x10c0('0x4d')],_0x10c0('0x4e'),_0x10c0('0x72'),_0x10c0('0x73')),{'interaction':_0x5d8746})['then'](function(_0x4e6a01){var _0x10f3f2=path['join'](_0x626990,_0x10c0('0x74')+_0x475d40['id']+'-'+_0x5f2aa6+'.pdf');var _0x1d26a2={'path':_0x10f3f2,'channel':_0x10c0('0x60'),'interactionId':_0x475d40['id']};return pdf[_0x10c0('0x75')](_0x4e6a01,_0x1d26a2);})[_0x10c0('0x19')](function(){return new BPromise(function(_0x4e6047,_0x1672fd){zipdir(_0x626990,{'saveTo':_0x58c32e},function(_0x55bfd3,_0x4f8be0){if(_0x55bfd3)return _0x1672fd(_0x55bfd3);return _0x4e6047(_0x4f8be0);});})['then'](function(){return new BPromise(function(_0x14eac3,_0x14eb91){rimraf(_0x626990,function(_0x4b917b){if(_0x4b917b)_0x14eb91(_0x4b917b);return _0x14eac3();});});})[_0x10c0('0x19')](function(){return _0x39f6a['download'](_0x58c32e,_0x280043,function(_0xe78274){if(_0xe78274){console[_0x10c0('0x76')](_0x10c0('0x77'),_0xe78274);}else{fs['unlinkSync'](_0x58c32e);}});});});}else{return _0x39f6a[_0x10c0('0xf')](0xc8);}})[_0x10c0('0x26')](handleError(_0x39f6a,null));};
\ No newline at end of file
+var _0x6beb=['WhatsappMessage','ids','omit','getMessages','findOne','hasOwnProperty','nolimit','order','sort','WhatsappInteractionId','filter','where','$gte','format','YYYY-MM-DD\x20HH:mm:ss','rows','addTags','whatsappInteractionTags:save','removeTags','download','unix','toString','root','files','join','server','attachments','transcript-%d-%s.zip','push','User','fullname','firstName','Attachment','Messages','direction','secret','read','WhatsappAccount','Account','Owner','mkdirSync','Whatsapp','createdAt','closed','disposition','basename','existsSync','createReadStream','pipe','out','System','Contact','lastName','value','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','log','err','unlinkSync','rimraf','zip-dir','moment','util','path','lodash','../../components/interaction/service','../../components/parsers/qs','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','json','offset','undefined','count','limit','status','set','Content-Range','update','then','destroy','end','stack','name','send','index','map','WhatsappInteraction','rawAttributes','type','getOptions','findAll','whatsapp','query','show','params','model','keys','filters','intersection','attributes','fields','length','includeAll','include','merge','find','catch','create','body','describe','addMessage'];(function(_0x510000,_0x3ad84a){var _0x38f83b=function(_0x1c5a25){while(--_0x1c5a25){_0x510000['push'](_0x510000['shift']());}};_0x38f83b(++_0x3ad84a);}(_0x6beb,0x1b2));var _0xb6be=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x6beb[_0x2dafbe];return _0x58a45a;};'use strict';var rimraf=require(_0xb6be('0x0'));var zipdir=require(_0xb6be('0x1'));var moment=require(_0xb6be('0x2'));var BPromise=require('bluebird');var util=require(_0xb6be('0x3'));var path=require(_0xb6be('0x4'));var ejs=require('ejs');var fs=require('fs');var _=require(_0xb6be('0x5'));var Redis=require('ioredis');var interaction=require(_0xb6be('0x6'));var qs=require(_0xb6be('0x7'));var pdf=require(_0xb6be('0x8'));var logger=require(_0xb6be('0x9'))(_0xb6be('0xa'));var config=require(_0xb6be('0xb'));var db=require(_0xb6be('0xc'))['db'];config['redis']=_[_0xb6be('0xd')](config[_0xb6be('0xe')],{'host':_0xb6be('0xf'),'port':0x18eb});var socket=require(_0xb6be('0x10'))(new Redis(config[_0xb6be('0xe')]));require(_0xb6be('0x11'))[_0xb6be('0x12')](socket);function respondWithStatusCode(_0x384409,_0x527e1d){_0x527e1d=_0x527e1d||0xcc;return function(_0x1518a2){if(_0x1518a2){return _0x384409[_0xb6be('0x13')](_0x527e1d);}return _0x384409['status'](_0x527e1d)['end']();};}function respondWithResult(_0x1803ec,_0x286a15){_0x286a15=_0x286a15||0xc8;return function(_0x59f242){if(_0x59f242){return _0x1803ec['status'](_0x286a15)[_0xb6be('0x14')](_0x59f242);}};}function respondWithFilteredResult(_0xa690fe,_0x29c71e){return function(_0x51039c){if(_0x51039c){var _0x3a41e3=typeof _0x29c71e[_0xb6be('0x15')]===_0xb6be('0x16')&&typeof _0x29c71e['limit']===_0xb6be('0x16');var _0x3a1b1b=_0x51039c[_0xb6be('0x17')];var _0x35e0d3=_0x3a41e3?0x0:_0x29c71e[_0xb6be('0x15')];var _0x335a70=_0x3a41e3?_0x51039c['count']:_0x29c71e[_0xb6be('0x15')]+_0x29c71e[_0xb6be('0x18')];var _0x3fb0bc;if(_0x335a70>=_0x3a1b1b){_0x335a70=_0x3a1b1b;_0x3fb0bc=0xc8;}else{_0x3fb0bc=0xce;}_0xa690fe[_0xb6be('0x19')](_0x3fb0bc);return _0xa690fe[_0xb6be('0x1a')](_0xb6be('0x1b'),_0x35e0d3+'-'+_0x335a70+'/'+_0x3a1b1b)[_0xb6be('0x14')](_0x51039c);}return null;};}function saveUpdates(_0x1304fb){return function(_0x483674){if(_0x483674){return _0x483674[_0xb6be('0x1c')](_0x1304fb)[_0xb6be('0x1d')](function(_0x12cd1f){return _0x12cd1f;});}return null;};}function removeEntity(_0x27c69d){return function(_0xf0048a){if(_0xf0048a){return _0xf0048a[_0xb6be('0x1e')]()['then'](function(){_0x27c69d[_0xb6be('0x19')](0xcc)[_0xb6be('0x1f')]();});}};}function handleEntityNotFound(_0x125468){return function(_0x3760f4){if(!_0x3760f4){_0x125468[_0xb6be('0x13')](0x194);}return _0x3760f4;};}function handleError(_0x51e172,_0x8c05d3){_0x8c05d3=_0x8c05d3||0x1f4;return function(_0x430853){logger['error'](_0x430853[_0xb6be('0x20')]);if(_0x430853[_0xb6be('0x21')]){delete _0x430853[_0xb6be('0x21')];}_0x51e172[_0xb6be('0x19')](_0x8c05d3)[_0xb6be('0x22')](_0x430853);};}exports[_0xb6be('0x23')]=function(_0x5308e4,_0x49e4db){var _0xf33f76={};var _0x46e4e1=_[_0xb6be('0x24')](db[_0xb6be('0x25')][_0xb6be('0x26')],function(_0x1ad990){return{'name':_0x1ad990['fieldName'],'type':_0x1ad990[_0xb6be('0x27')]['key']};});_0xf33f76=qs[_0xb6be('0x28')](_0x46e4e1,_0x5308e4);return interaction[_0xb6be('0x29')](_0xb6be('0x2a'),_0x5308e4[_0xb6be('0x2b')],_0x5308e4['user'],_0xf33f76,_0x46e4e1)['then'](respondWithFilteredResult(_0x49e4db,_0xf33f76))['catch'](handleError(_0x49e4db,null));};exports[_0xb6be('0x2c')]=function(_0x1d4d66,_0x236baa){var _0x543269={'raw':![],'where':{'id':_0x1d4d66[_0xb6be('0x2d')]['id']}},_0x2b74c8={};_0x2b74c8[_0xb6be('0x2e')]=_['keys'](db['WhatsappInteraction'][_0xb6be('0x26')]);_0x2b74c8[_0xb6be('0x2b')]=_[_0xb6be('0x2f')](_0x1d4d66[_0xb6be('0x2b')]);_0x2b74c8[_0xb6be('0x30')]=_[_0xb6be('0x31')](_0x2b74c8[_0xb6be('0x2e')],_0x2b74c8[_0xb6be('0x2b')]);_0x543269[_0xb6be('0x32')]=_[_0xb6be('0x31')](_0x2b74c8['model'],qs['fields'](_0x1d4d66['query'][_0xb6be('0x33')]));_0x543269['attributes']=_0x543269['attributes'][_0xb6be('0x34')]?_0x543269[_0xb6be('0x32')]:_0x2b74c8['model'];if(_0x1d4d66[_0xb6be('0x2b')][_0xb6be('0x35')]){_0x543269[_0xb6be('0x36')]=[{'all':!![]}];}_0x543269=_[_0xb6be('0x37')]({},_0x543269,_0x1d4d66['options']);return db[_0xb6be('0x25')][_0xb6be('0x38')](_0x543269)[_0xb6be('0x1d')](handleEntityNotFound(_0x236baa,null))[_0xb6be('0x1d')](respondWithResult(_0x236baa,null))[_0xb6be('0x39')](handleError(_0x236baa,null));};exports[_0xb6be('0x3a')]=function(_0x5567d4,_0x55e9fe){return db[_0xb6be('0x25')]['create'](_0x5567d4[_0xb6be('0x3b')],{})[_0xb6be('0x1d')](respondWithResult(_0x55e9fe,0xc9))[_0xb6be('0x39')](handleError(_0x55e9fe,null));};exports[_0xb6be('0x1c')]=function(_0x46a811,_0x3453ff){if(_0x46a811[_0xb6be('0x3b')]['id']){delete _0x46a811[_0xb6be('0x3b')]['id'];}return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x46a811[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x3453ff,null))[_0xb6be('0x1d')](saveUpdates(_0x46a811[_0xb6be('0x3b')],null))['then'](respondWithResult(_0x3453ff,null))[_0xb6be('0x39')](handleError(_0x3453ff,null));};exports[_0xb6be('0x1e')]=function(_0x1c09c1,_0x3a485e){return db['WhatsappInteraction'][_0xb6be('0x38')]({'where':{'id':_0x1c09c1[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x3a485e,null))[_0xb6be('0x1d')](removeEntity(_0x3a485e,null))[_0xb6be('0x39')](handleError(_0x3a485e,null));};exports['describe']=function(_0x428a4f,_0x8c0c3d){return db[_0xb6be('0x25')][_0xb6be('0x3c')]()['then'](respondWithResult(_0x8c0c3d,null))[_0xb6be('0x39')](handleError(_0x8c0c3d,null));};exports[_0xb6be('0x3d')]=function(_0x4efe75,_0x4e0df0){return db[_0xb6be('0x3e')][_0xb6be('0x38')]({'where':{'id':_0x4efe75[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x4e0df0,null))[_0xb6be('0x1d')](function(_0x42f785){if(_0x42f785){return _0x42f785[_0xb6be('0x3d')](_0x4efe75[_0xb6be('0x3b')][_0xb6be('0x3f')],_[_0xb6be('0x40')](_0x4efe75[_0xb6be('0x3b')],[_0xb6be('0x3f'),'id'])||{});}})['then'](respondWithResult(_0x4e0df0,null))['catch'](handleError(_0x4e0df0,null));};exports[_0xb6be('0x41')]=function(_0x408326,_0x2213d3){var _0x27670e={'raw':![],'where':{}};var _0x1f245f={};var _0x38a939={'count':0x0,'rows':[]};return db[_0xb6be('0x25')][_0xb6be('0x42')]({'where':{'id':_0x408326[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x2213d3,null))['then'](function(_0x4683c6){if(_0x4683c6){_0x1f245f[_0xb6be('0x2e')]=_['keys'](db[_0xb6be('0x3e')][_0xb6be('0x26')]);_0x1f245f[_0xb6be('0x2b')]=_[_0xb6be('0x2f')](_0x408326[_0xb6be('0x2b')]);_0x1f245f['filters']=_[_0xb6be('0x31')](_0x1f245f[_0xb6be('0x2e')],_0x1f245f['query']);_0x27670e[_0xb6be('0x32')]=_[_0xb6be('0x31')](_0x1f245f[_0xb6be('0x2e')],qs['fields'](_0x408326['query']['fields']));_0x27670e[_0xb6be('0x32')]=_0x27670e[_0xb6be('0x32')][_0xb6be('0x34')]?_0x27670e[_0xb6be('0x32')]:_0x1f245f[_0xb6be('0x2e')];if(!_0x408326[_0xb6be('0x2b')][_0xb6be('0x43')](_0xb6be('0x44'))){_0x27670e[_0xb6be('0x18')]=qs[_0xb6be('0x18')](_0x408326[_0xb6be('0x2b')][_0xb6be('0x18')]);_0x27670e[_0xb6be('0x15')]=qs[_0xb6be('0x15')](_0x408326[_0xb6be('0x2b')]['offset']);}_0x27670e[_0xb6be('0x45')]=qs[_0xb6be('0x46')](_0x408326[_0xb6be('0x2b')][_0xb6be('0x46')]);_0x27670e['where']=qs['filters'](_['pick'](_0x408326[_0xb6be('0x2b')],_0x1f245f[_0xb6be('0x30')]));_0x27670e['where'][_0xb6be('0x47')]=_0x4683c6['id'];if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x48')]){_0x27670e['where']=_[_0xb6be('0x37')](_0x27670e[_0xb6be('0x49')],{'$or':_[_0xb6be('0x24')](_0x27670e[_0xb6be('0x32')],function(_0x51b221){var _0x3de817={};_0x3de817[_0x51b221]={'$like':'%'+_0x408326[_0xb6be('0x2b')][_0xb6be('0x48')]+'%'};return _0x3de817;})});}if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x4a')]){var _0x1b53c6=_0x408326['query'][_0xb6be('0x4a')]['split'](',');var _0x46e52={};_0x46e52[_0x1b53c6[0x0]]={'$gte':moment(_0x1b53c6[0x1])[_0xb6be('0x4b')](_0xb6be('0x4c'))};_0x27670e[_0xb6be('0x49')]=_['merge'](_0x27670e[_0xb6be('0x49')],_0x46e52);}_0x27670e=_[_0xb6be('0x37')]({},_0x27670e,_0x408326['options']);return db[_0xb6be('0x3e')][_0xb6be('0x17')]({'where':_0x27670e['where']})[_0xb6be('0x1d')](function(_0x46ddaf){_0x38a939[_0xb6be('0x17')]=_0x46ddaf;if(_0x408326[_0xb6be('0x2b')][_0xb6be('0x35')]){_0x27670e[_0xb6be('0x36')]=[{'all':!![]}];}return db[_0xb6be('0x3e')][_0xb6be('0x29')](_0x27670e);})[_0xb6be('0x1d')](function(_0x10ac1f){_0x38a939[_0xb6be('0x4d')]=_0x10ac1f;return _0x38a939;});}})[_0xb6be('0x1d')](respondWithFilteredResult(_0x2213d3,_0x27670e))[_0xb6be('0x39')](handleError(_0x2213d3,null));};exports[_0xb6be('0x4e')]=function(_0x61d75e,_0xcc63a4){return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x61d75e[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0xcc63a4,null))[_0xb6be('0x1d')](function(_0x2e776c){if(_0x2e776c){return _0x2e776c['setTags'](_0x61d75e['body'][_0xb6be('0x3f')],_['omit'](_0x61d75e[_0xb6be('0x3b')],[_0xb6be('0x3f'),'id'])||{})['spread'](function(){return db['Tag'][_0xb6be('0x29')]({'attributes':['id','name','color'],'where':{'id':_0x61d75e[_0xb6be('0x3b')][_0xb6be('0x3f')]}});})['then'](function(_0x5390cd){socket['emit'](_0xb6be('0x4f'),{'id':Number(_0x61d75e[_0xb6be('0x2d')]['id']),'tags':_0x5390cd||[]});return{'id':Number(_0x61d75e['params']['id']),'tags':_0x5390cd||[]};});}})[_0xb6be('0x1d')](respondWithResult(_0xcc63a4,null))[_0xb6be('0x39')](handleError(_0xcc63a4,null));};exports[_0xb6be('0x50')]=function(_0x9085aa,_0x19b3e8){return db[_0xb6be('0x25')][_0xb6be('0x38')]({'where':{'id':_0x9085aa[_0xb6be('0x2d')]['id']}})[_0xb6be('0x1d')](handleEntityNotFound(_0x19b3e8,null))[_0xb6be('0x1d')](function(_0x57aac9){if(_0x57aac9){return _0x57aac9['removeTags'](_0x9085aa['query'][_0xb6be('0x3f')]);}})[_0xb6be('0x1d')](respondWithStatusCode(_0x19b3e8,null))[_0xb6be('0x39')](handleError(_0x19b3e8,null));};exports[_0xb6be('0x51')]=function(_0x1535a5,_0x377293){var _0x9f1b89=moment()[_0xb6be('0x52')]()[_0xb6be('0x53')]();var _0x7dd1b0=path['join'](config[_0xb6be('0x54')],'server',_0xb6be('0x55'),'tmp');var _0x259769=path[_0xb6be('0x56')](config[_0xb6be('0x54')],_0xb6be('0x57'),'files',_0xb6be('0x58'));var _0x5732a0=path[_0xb6be('0x56')](_0x7dd1b0,_0x9f1b89);var _0x54333d=util[_0xb6be('0x4b')](_0xb6be('0x59'),_0x1535a5[_0xb6be('0x2d')]['id'],_0x9f1b89);var _0x5e5dd8=path[_0xb6be('0x56')](_0x7dd1b0,_0x54333d);var _0xadf46e=[];_0xadf46e[_0xb6be('0x5a')]({'model':db[_0xb6be('0x5b')],'as':'User','attributes':['id',_0xb6be('0x5c')],'raw':!![]});_0xadf46e[_0xb6be('0x5a')]({'model':db['CmContact'],'as':'Contact','attributes':['id',_0xb6be('0x5d'),'lastName'],'raw':!![]});if(_0x1535a5[_0xb6be('0x2b')]['attachments']){_0xadf46e['push']({'model':db[_0xb6be('0x5e')],'as':'Attachment','raw':!![]});}var _0x55be96=[{'model':db[_0xb6be('0x3e')],'as':_0xb6be('0x5f'),'attributes':['id','body','createdAt',_0xb6be('0x60'),_0xb6be('0x61'),_0xb6be('0x62')],'include':_0xadf46e}];_0x55be96[_0xb6be('0x5a')]({'model':db[_0xb6be('0x63')],'as':_0xb6be('0x64'),'attributes':['id',_0xb6be('0x21')]});_0x55be96[_0xb6be('0x5a')]({'model':db[_0xb6be('0x5b')],'as':_0xb6be('0x65'),'attributes':['id',_0xb6be('0x5c')]});return db[_0xb6be('0x25')]['find']({'where':{'id':_0x1535a5[_0xb6be('0x2d')]['id']},'include':_0x55be96})[_0xb6be('0x1d')](handleEntityNotFound(_0x377293,null))[_0xb6be('0x1d')](function(_0x2613b2){if(_0x2613b2){var _0x1ed92a=_0x2613b2['get']({'plain':!![]});fs[_0xb6be('0x66')](_0x5732a0);var _0x500e5f={'channel':_0xb6be('0x67'),'account':_0x1ed92a[_0xb6be('0x64')]['name'],'agent':_0x1ed92a[_0xb6be('0x65')]?_0x1ed92a['Owner'][_0xb6be('0x5c')]:'N.A.','createdAt':moment(_0x1ed92a[_0xb6be('0x68')])[_0xb6be('0x4b')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x1ed92a[_0xb6be('0x69')]?moment(_0x1ed92a['closedAt'])['format'](_0xb6be('0x4c'))[_0xb6be('0x53')]():'','disposition':_0x1ed92a[_0xb6be('0x6a')],'messages':_(_0x1ed92a[_0xb6be('0x5f')])[_0xb6be('0x48')]({'secret':![]})[_0xb6be('0x24')](function(_0x35b8a3){if(_0x35b8a3[_0xb6be('0x5e')]){var _0xed6bbe=path['join'](_0x259769,_0x35b8a3['Attachment'][_0xb6be('0x6b')]);if(fs[_0xb6be('0x6c')](_0xed6bbe)){fs[_0xb6be('0x6d')](_0xed6bbe)[_0xb6be('0x6e')](fs['createWriteStream'](path['join'](_0x5732a0,_0x35b8a3['Attachment'][_0xb6be('0x6b')])));}}return{'date':moment(_0x35b8a3[_0xb6be('0x68')])[_0xb6be('0x4b')](_0xb6be('0x4c'))[_0xb6be('0x53')](),'sender':_0x35b8a3[_0xb6be('0x60')]===_0xb6be('0x6f')?_0x35b8a3[_0xb6be('0x5b')]?_0x35b8a3[_0xb6be('0x5b')]['fullname']:_0xb6be('0x70'):_0x35b8a3[_0xb6be('0x71')][_0xb6be('0x5d')]+(_0x35b8a3[_0xb6be('0x71')][_0xb6be('0x72')]?'\x20'+_0x35b8a3['Contact'][_0xb6be('0x72')]:''),'body':_0x35b8a3['Attachment']?_0x35b8a3['Attachment'][_0xb6be('0x6b')]:_0x35b8a3['body'],'direction':_0x35b8a3['direction']===_0xb6be('0x6f')?'A':'C','secret':_0x35b8a3[_0xb6be('0x61')],'read':_0x35b8a3[_0xb6be('0x62')],'attachment':_0x35b8a3[_0xb6be('0x5e')]};})[_0xb6be('0x73')]()};return ejs[_0xb6be('0x74')](path[_0xb6be('0x56')](config[_0xb6be('0x54')],_0xb6be('0x57'),_0xb6be('0x75'),_0xb6be('0x76')),{'interaction':_0x500e5f})['then'](function(_0xe7d1b8){var _0x5d2b94=path[_0xb6be('0x56')](_0x5732a0,_0xb6be('0x77')+_0x1ed92a['id']+'-'+_0x9f1b89+_0xb6be('0x78'));var _0x1998e7={'path':_0x5d2b94,'channel':_0xb6be('0x67'),'interactionId':_0x1ed92a['id']};return pdf['createPdfFromHTML'](_0xe7d1b8,_0x1998e7);})[_0xb6be('0x1d')](function(){return new BPromise(function(_0x14b182,_0x46b091){zipdir(_0x5732a0,{'saveTo':_0x5e5dd8},function(_0x59045e,_0x411625){if(_0x59045e)return _0x46b091(_0x59045e);return _0x14b182(_0x411625);});})[_0xb6be('0x1d')](function(){return new BPromise(function(_0x2e99e0,_0x1f0f3b){rimraf(_0x5732a0,function(_0x5d5d05){if(_0x5d5d05)_0x1f0f3b(_0x5d5d05);return _0x2e99e0();});});})[_0xb6be('0x1d')](function(){return _0x377293['download'](_0x5e5dd8,_0x54333d,function(_0x5c797a){if(_0x5c797a){console[_0xb6be('0x79')](_0xb6be('0x7a'),_0x5c797a);}else{fs[_0xb6be('0x7b')](_0x5e5dd8);}});});});}else{return _0x377293[_0xb6be('0x13')](0xc8);}})[_0xb6be('0x39')](handleError(_0x377293,null));};
\ No newline at end of file
index 3f0a1d7..c92394a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa477=['save','update','remove','getUsers','Users','findAll','setDataValue','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage','setMaxListeners'];(function(_0x465e1c,_0xdff365){var _0xb35dda=function(_0x496535){while(--_0x496535){_0x465e1c['push'](_0x465e1c['shift']());}};_0xb35dda(++_0xdff365);}(_0xa477,0xe6));var _0x7a47=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0xa477[_0x21a9d9];return _0x46adce;};'use strict';var EventEmitter=require(_0x7a47('0x0'));var WhatsappInteraction=require(_0x7a47('0x1'))['db']['WhatsappInteraction'];var WhatsappMessage=require(_0x7a47('0x1'))['db'][_0x7a47('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0x7a47('0x3')](0x0);var events={'afterCreate':_0x7a47('0x4'),'afterUpdate':_0x7a47('0x5'),'afterDestroy':_0x7a47('0x6')};function emitEvent(_0x1b595e){return function(_0x56b589,_0x493cad,_0x307852){_0x56b589[_0x7a47('0x7')]({'attributes':['id'],'raw':!![]})['then'](function(_0x54e9aa){_0x56b589['setDataValue'](_0x7a47('0x8'),_0x54e9aa['map'](function(_0x2dc504){return{'id':_0x2dc504['id']};}));return WhatsappMessage[_0x7a47('0x9')]({'where':{'WhatsappInteractionId':_0x56b589['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x3afd71){_0x56b589[_0x7a47('0xa')](_0x7a47('0xb'),_0x3afd71[_0x7a47('0xc')]);WhatsappInteractionEvents[_0x7a47('0xd')](_0x1b595e+':'+_0x56b589['id'],_0x56b589);WhatsappInteractionEvents['emit'](_0x1b595e,_0x56b589);_0x307852(null);})[_0x7a47('0xe')](_0x307852(null));};}for(var e in events){if(events[_0x7a47('0xf')](e)){var event=events[e];WhatsappInteraction[_0x7a47('0x10')](e,emitEvent(event));}}module[_0x7a47('0x11')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x4157=['save','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappInteraction','WhatsappMessage'];(function(_0x45acdb,_0x220bf2){var _0x3bbadd=function(_0x2a7903){while(--_0x2a7903){_0x45acdb['push'](_0x45acdb['shift']());}};_0x3bbadd(++_0x220bf2);}(_0x4157,0xf3));var _0x7415=function(_0x2590aa,_0x21217e){_0x2590aa=_0x2590aa-0x0;var _0x339f70=_0x4157[_0x2590aa];return _0x339f70;};'use strict';var EventEmitter=require(_0x7415('0x0'));var WhatsappInteraction=require(_0x7415('0x1'))['db'][_0x7415('0x2')];var WhatsappMessage=require(_0x7415('0x1'))['db'][_0x7415('0x3')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7415('0x4'),'afterUpdate':_0x7415('0x5'),'afterDestroy':_0x7415('0x6')};function emitEvent(_0x341b12){return function(_0x7e7a68,_0x6c6d0d,_0x23038f){_0x7e7a68[_0x7415('0x7')]({'attributes':['id'],'raw':!![]})[_0x7415('0x8')](function(_0x49b694){_0x7e7a68[_0x7415('0x9')]('Users',_0x49b694[_0x7415('0xa')](function(_0x5b0c6f){return{'id':_0x5b0c6f['id']};}));return WhatsappMessage[_0x7415('0xb')]({'where':{'WhatsappInteractionId':_0x7e7a68['id'],'direction':'in','read':![]},'raw':!![]});})[_0x7415('0x8')](function(_0x30090b){_0x7e7a68[_0x7415('0x9')](_0x7415('0xc'),_0x30090b[_0x7415('0xd')]);WhatsappInteractionEvents[_0x7415('0xe')](_0x341b12+':'+_0x7e7a68['id'],_0x7e7a68);WhatsappInteractionEvents['emit'](_0x341b12,_0x7e7a68);_0x23038f(null);})[_0x7415('0xf')](_0x23038f(null));};}for(var e in events){if(events[_0x7415('0x10')](e)){var event=events[e];WhatsappInteraction[_0x7415('0x11')](e,emitEvent(event));}}module[_0x7415('0x12')]=WhatsappInteractionEvents;
\ No newline at end of file
index 75149d5..640235f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc175=['define','WhatsappInteraction','changed','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports'];(function(_0x45ee60,_0x5b0f76){var _0x4d185d=function(_0x102078){while(--_0x102078){_0x45ee60['push'](_0x45ee60['shift']());}};_0x4d185d(++_0x5b0f76);}(_0xc175,0x196));var _0x5c17=function(_0x1a6a8c,_0x12d6c9){_0x1a6a8c=_0x1a6a8c-0x0;var _0x572fb0=_0xc175[_0x1a6a8c];return _0x572fb0;};'use strict';var _=require(_0x5c17('0x0'));var util=require(_0x5c17('0x1'));var logger=require(_0x5c17('0x2'))(_0x5c17('0x3'));var moment=require(_0x5c17('0x4'));var BPromise=require(_0x5c17('0x5'));var rp=require(_0x5c17('0x6'));var fs=require('fs');var path=require(_0x5c17('0x7'));var rimraf=require(_0x5c17('0x8'));var config=require(_0x5c17('0x9'));var attributes=require(_0x5c17('0xa'));module[_0x5c17('0xb')]=function(_0x13b557,_0x485105){return _0x13b557[_0x5c17('0xc')](_0x5c17('0xd'),attributes,{'tableName':'whatsapp_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4a35b3,_0x194a37,_0x2699d1){if(_0x4a35b3[_0x5c17('0xe')](_0x5c17('0xf'))){_0x4a35b3[_0x5c17('0x10')]=moment()[_0x5c17('0x11')](_0x5c17('0x12'));}_0x2699d1(null,_0x4a35b3);}}});};
\ No newline at end of file
+var _0xb4aa=['path','../../config/environment','./whatsappInteraction.attributes','exports','WhatsappInteraction','whatsapp_interactions','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','api'];(function(_0x497602,_0x49b60b){var _0xb4dbfd=function(_0x122198){while(--_0x122198){_0x497602['push'](_0x497602['shift']());}};_0xb4dbfd(++_0x49b60b);}(_0xb4aa,0xc0));var _0xab4a=function(_0x2c950e,_0x340c14){_0x2c950e=_0x2c950e-0x0;var _0x3c9a42=_0xb4aa[_0x2c950e];return _0x3c9a42;};'use strict';var _=require(_0xab4a('0x0'));var util=require(_0xab4a('0x1'));var logger=require('../../config/logger')(_0xab4a('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xab4a('0x3'));var rimraf=require('rimraf');var config=require(_0xab4a('0x4'));var attributes=require(_0xab4a('0x5'));module[_0xab4a('0x6')]=function(_0x12f90d,_0x3536bf){return _0x12f90d['define'](_0xab4a('0x7'),attributes,{'tableName':_0xab4a('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x261597,_0xad735f,_0x5850cb){if(_0x261597[_0xab4a('0x9')]('closed')){_0x261597[_0xab4a('0xa')]=moment()[_0xab4a('0xb')](_0xab4a('0xc'));}_0x5850cb(null,_0x261597);}}});};
\ No newline at end of file
index 0c10166..92bb0a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8b3=['code','message','info','result','catch','WhatsappInteraction','update','body','options','raw','where','attributes','limit','debug','UpdateWhatsappInteraction','AddTagsToWhatsappInteraction','find','addTags','ids','omit','AddTags','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','then','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x1f47c9,_0x587a0d){var _0x2360df=function(_0x33dea9){while(--_0x33dea9){_0x1f47c9['push'](_0x1f47c9['shift']());}};_0x2360df(++_0x587a0d);}(_0xb8b3,0x93));var _0x3b8b=function(_0x28aea5,_0x3bb12e){_0x28aea5=_0x28aea5-0x0;var _0x6a55f9=_0xb8b3[_0x28aea5];return _0x6a55f9;};'use strict';var _=require(_0x3b8b('0x0'));var util=require(_0x3b8b('0x1'));var moment=require(_0x3b8b('0x2'));var BPromise=require('bluebird');var rs=require(_0x3b8b('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3b8b('0x4'))['db'];var utils=require(_0x3b8b('0x5'));var logger=require('../../config/logger')(_0x3b8b('0x6'));var config=require(_0x3b8b('0x7'));var jayson=require(_0x3b8b('0x8'));var client=jayson[_0x3b8b('0x9')][_0x3b8b('0xa')]({'port':0x232a});config[_0x3b8b('0xb')]=_[_0x3b8b('0xc')](config[_0x3b8b('0xb')],{'host':_0x3b8b('0xd'),'port':0x18eb});var socket=require(_0x3b8b('0xe'))(new Redis(config[_0x3b8b('0xb')]));require('./whatsappInteraction.socket')[_0x3b8b('0xf')](socket);function respondWithRpcPromise(_0x2095fa,_0x57417d,_0x37bc88){return new BPromise(function(_0x1ef076,_0x180288){return client['request'](_0x2095fa,_0x37bc88)[_0x3b8b('0x10')](function(_0x402d79){logger['info'](_0x3b8b('0x11'),_0x57417d,_0x3b8b('0x12'));logger['debug']('WhatsappInteraction,\x20%s,\x20%s,\x20%s',_0x57417d,_0x3b8b('0x12'),JSON[_0x3b8b('0x13')](_0x402d79));if(_0x402d79[_0x3b8b('0x14')]){if(_0x402d79[_0x3b8b('0x14')][_0x3b8b('0x15')]===0x1f4){logger[_0x3b8b('0x14')](_0x3b8b('0x11'),_0x57417d,_0x402d79[_0x3b8b('0x14')][_0x3b8b('0x16')]);return _0x180288(_0x402d79[_0x3b8b('0x14')][_0x3b8b('0x16')]);}logger[_0x3b8b('0x14')](_0x3b8b('0x11'),_0x57417d,_0x402d79[_0x3b8b('0x14')][_0x3b8b('0x16')]);return _0x1ef076(_0x402d79[_0x3b8b('0x14')][_0x3b8b('0x16')]);}else{logger[_0x3b8b('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x57417d,'request\x20sent');_0x1ef076(_0x402d79[_0x3b8b('0x18')][_0x3b8b('0x16')]);}})[_0x3b8b('0x19')](function(_0x439f72){logger[_0x3b8b('0x14')](_0x3b8b('0x11'),_0x57417d,_0x439f72);_0x180288(_0x439f72);});});}exports['UpdateWhatsappInteraction']=function(_0x106d4e){var _0x2a5cbb=this;return new Promise(function(_0x1be5ed,_0x22a742){return db[_0x3b8b('0x1a')][_0x3b8b('0x1b')](_0x106d4e[_0x3b8b('0x1c')],{'raw':_0x106d4e[_0x3b8b('0x1d')]?_0x106d4e[_0x3b8b('0x1d')][_0x3b8b('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x106d4e[_0x3b8b('0x1d')]?_0x106d4e['options'][_0x3b8b('0x1f')]||null:null,'attributes':_0x106d4e[_0x3b8b('0x1d')]?_0x106d4e[_0x3b8b('0x1d')][_0x3b8b('0x20')]||null:null,'limit':_0x106d4e[_0x3b8b('0x1d')]?_0x106d4e[_0x3b8b('0x1d')][_0x3b8b('0x21')]||null:null})[_0x3b8b('0x10')](function(_0x2625fe){logger[_0x3b8b('0x17')]('UpdateWhatsappInteraction',_0x106d4e);logger[_0x3b8b('0x22')](_0x3b8b('0x23'),_0x106d4e,JSON[_0x3b8b('0x13')](_0x2625fe));_0x1be5ed(_0x2625fe);})[_0x3b8b('0x19')](function(_0x5162a4){logger[_0x3b8b('0x14')]('UpdateWhatsappInteraction',_0x5162a4[_0x3b8b('0x16')],_0x106d4e);_0x22a742(_0x2a5cbb['error'](0x1f4,_0x5162a4[_0x3b8b('0x16')]));});});};exports[_0x3b8b('0x24')]=function(_0x4f7ad3){return new Promise(function(_0x4851a4,_0x69a2b2){return db[_0x3b8b('0x1a')][_0x3b8b('0x25')]({'where':_0x4f7ad3[_0x3b8b('0x1d')]?_0x4f7ad3[_0x3b8b('0x1d')][_0x3b8b('0x1f')]||null:null})['then'](function(_0x2b8d12){if(_0x2b8d12){return _0x2b8d12[_0x3b8b('0x26')](_0x4f7ad3[_0x3b8b('0x1c')][_0x3b8b('0x27')],_[_0x3b8b('0x28')](_0x4f7ad3[_0x3b8b('0x1c')],['ids','id'])||{});}})['spread'](function(_0x27f61a){logger[_0x3b8b('0x17')](_0x3b8b('0x29'),_0x4f7ad3);logger[_0x3b8b('0x22')]('AddTags',_0x4f7ad3,JSON['stringify'](_0x27f61a));_0x4851a4(_0x27f61a);})[_0x3b8b('0x19')](function(_0x3b8f14){logger[_0x3b8b('0x14')](_0x3b8b('0x29'),_0x3b8f14[_0x3b8b('0x16')],_0x4f7ad3);_0x69a2b2(_this[_0x3b8b('0x14')](0x1f4,_0x3b8f14[_0x3b8b('0x16')]));});});};
\ No newline at end of file
+var _0xebec=['debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','where','attributes','limit','stringify','AddTagsToWhatsappInteraction','find','addTags','omit','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','redis','localhost','socket.io-emitter','register','request','then','info','WhatsappInteraction,\x20%s,\x20%s'];(function(_0x34a65c,_0x57a5c9){var _0x228735=function(_0x3a7980){while(--_0x3a7980){_0x34a65c['push'](_0x34a65c['shift']());}};_0x228735(++_0x57a5c9);}(_0xebec,0xf4));var _0xcebe=function(_0x3aa17a,_0x42e72c){_0x3aa17a=_0x3aa17a-0x0;var _0x3c8895=_0xebec[_0x3aa17a];return _0x3c8895;};'use strict';var _=require(_0xcebe('0x0'));var util=require(_0xcebe('0x1'));var moment=require(_0xcebe('0x2'));var BPromise=require(_0xcebe('0x3'));var rs=require(_0xcebe('0x4'));var fs=require('fs');var Redis=require(_0xcebe('0x5'));var db=require(_0xcebe('0x6'))['db'];var utils=require(_0xcebe('0x7'));var logger=require(_0xcebe('0x8'))('rpc');var config=require(_0xcebe('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xcebe('0xa')][_0xcebe('0xb')]({'port':0x232a});config[_0xcebe('0xc')]=_['defaults'](config['redis'],{'host':_0xcebe('0xd'),'port':0x18eb});var socket=require(_0xcebe('0xe'))(new Redis(config[_0xcebe('0xc')]));require('./whatsappInteraction.socket')[_0xcebe('0xf')](socket);function respondWithRpcPromise(_0x57160d,_0x42f187,_0x4b83a1){return new BPromise(function(_0x199f7e,_0x205229){return client[_0xcebe('0x10')](_0x57160d,_0x4b83a1)[_0xcebe('0x11')](function(_0x40d84c){logger[_0xcebe('0x12')](_0xcebe('0x13'),_0x42f187,'request\x20sent');logger[_0xcebe('0x14')](_0xcebe('0x15'),_0x42f187,_0xcebe('0x16'),JSON['stringify'](_0x40d84c));if(_0x40d84c[_0xcebe('0x17')]){if(_0x40d84c[_0xcebe('0x17')][_0xcebe('0x18')]===0x1f4){logger[_0xcebe('0x17')](_0xcebe('0x13'),_0x42f187,_0x40d84c['error'][_0xcebe('0x19')]);return _0x205229(_0x40d84c[_0xcebe('0x17')]['message']);}logger[_0xcebe('0x17')](_0xcebe('0x13'),_0x42f187,_0x40d84c[_0xcebe('0x17')][_0xcebe('0x19')]);return _0x199f7e(_0x40d84c[_0xcebe('0x17')][_0xcebe('0x19')]);}else{logger[_0xcebe('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x42f187,_0xcebe('0x16'));_0x199f7e(_0x40d84c[_0xcebe('0x1a')][_0xcebe('0x19')]);}})[_0xcebe('0x1b')](function(_0x12fe75){logger[_0xcebe('0x17')]('WhatsappInteraction,\x20%s,\x20%s',_0x42f187,_0x12fe75);_0x205229(_0x12fe75);});});}exports[_0xcebe('0x1c')]=function(_0x14e289){var _0x501007=this;return new Promise(function(_0x5b8dd8,_0x2a52e7){return db[_0xcebe('0x1d')][_0xcebe('0x1e')](_0x14e289[_0xcebe('0x1f')],{'raw':_0x14e289[_0xcebe('0x20')]?_0x14e289['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x21')]||null:null,'attributes':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x22')]||null:null,'limit':_0x14e289[_0xcebe('0x20')]?_0x14e289[_0xcebe('0x20')][_0xcebe('0x23')]||null:null})[_0xcebe('0x11')](function(_0x2c27e8){logger[_0xcebe('0x12')](_0xcebe('0x1c'),_0x14e289);logger[_0xcebe('0x14')]('UpdateWhatsappInteraction',_0x14e289,JSON[_0xcebe('0x24')](_0x2c27e8));_0x5b8dd8(_0x2c27e8);})['catch'](function(_0x34c8b4){logger[_0xcebe('0x17')]('UpdateWhatsappInteraction',_0x34c8b4[_0xcebe('0x19')],_0x14e289);_0x2a52e7(_0x501007[_0xcebe('0x17')](0x1f4,_0x34c8b4[_0xcebe('0x19')]));});});};exports[_0xcebe('0x25')]=function(_0x3af074){return new Promise(function(_0x20632d,_0x47d424){return db[_0xcebe('0x1d')][_0xcebe('0x26')]({'where':_0x3af074['options']?_0x3af074[_0xcebe('0x20')]['where']||null:null})[_0xcebe('0x11')](function(_0x25053f){if(_0x25053f){return _0x25053f[_0xcebe('0x27')](_0x3af074['body']['ids'],_[_0xcebe('0x28')](_0x3af074[_0xcebe('0x1f')],[_0xcebe('0x29'),'id'])||{});}})[_0xcebe('0x2a')](function(_0x2afc66){logger[_0xcebe('0x12')]('AddTags',_0x3af074);logger['debug'](_0xcebe('0x2b'),_0x3af074,JSON[_0xcebe('0x24')](_0x2afc66));_0x20632d(_0x2afc66);})['catch'](function(_0x7d176){logger['error'](_0xcebe('0x2b'),_0x7d176[_0xcebe('0x19')],_0x3af074);_0x47d424(_this[_0xcebe('0x17')](0x1f4,_0x7d176[_0xcebe('0x19')]));});});};
\ No newline at end of file
index 132a613..d024349 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f5f=['save','remove','update','register','length','whatsappInteraction:','./whatsappInteraction.events'];(function(_0x3070dc,_0x40cf11){var _0x431489=function(_0x49bc2a){while(--_0x49bc2a){_0x3070dc['push'](_0x3070dc['shift']());}};_0x431489(++_0x40cf11);}(_0x2f5f,0x6f));var _0xf2f5=function(_0x1bb848,_0x3bb208){_0x1bb848=_0x1bb848-0x0;var _0x484bb2=_0x2f5f[_0x1bb848];return _0x484bb2;};'use strict';var WhatsappInteractionEvents=require(_0xf2f5('0x0'));var events=[_0xf2f5('0x1'),_0xf2f5('0x2'),_0xf2f5('0x3')];function createListener(_0x2e6882,_0x1a7326){return function(_0x57867a){_0x1a7326['emit'](_0x2e6882,_0x57867a);};}function removeListener(_0xd7f807,_0x196c78){return function(){WhatsappInteractionEvents['removeListener'](_0xd7f807,_0x196c78);};}exports[_0xf2f5('0x4')]=function(_0xc1fc24){for(var _0x4740f9=0x0,_0x115548=events[_0xf2f5('0x5')];_0x4740f9<_0x115548;_0x4740f9++){var _0x1ab9a2=events[_0x4740f9];var _0x18d037=createListener(_0xf2f5('0x6')+_0x1ab9a2,_0xc1fc24);WhatsappInteractionEvents['on'](_0x1ab9a2,_0x18d037);}};
\ No newline at end of file
+var _0x9d51=['register','whatsappInteraction:','save','remove','update','emit','removeListener'];(function(_0x332354,_0x149358){var _0x4782bb=function(_0x4c2cbe){while(--_0x4c2cbe){_0x332354['push'](_0x332354['shift']());}};_0x4782bb(++_0x149358);}(_0x9d51,0x79));var _0x19d5=function(_0x3daf5b,_0x47920e){_0x3daf5b=_0x3daf5b-0x0;var _0x18415b=_0x9d51[_0x3daf5b];return _0x18415b;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x19d5('0x0'),_0x19d5('0x1'),_0x19d5('0x2')];function createListener(_0x2b864e,_0x22c223){return function(_0x337655){_0x22c223[_0x19d5('0x3')](_0x2b864e,_0x337655);};}function removeListener(_0x27d5b3,_0x280fca){return function(){WhatsappInteractionEvents[_0x19d5('0x4')](_0x27d5b3,_0x280fca);};}exports[_0x19d5('0x5')]=function(_0x43c6c0){for(var _0x27a596=0x0,_0x400161=events['length'];_0x27a596<_0x400161;_0x27a596++){var _0x51a083=events[_0x27a596];var _0x129728=createListener(_0x19d5('0x6')+_0x51a083,_0x43c6c0);WhatsappInteractionEvents['on'](_0x51a083,_0x129728);}};
\ No newline at end of file
index ef91be1..01b61a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d48=['whatsapp','create','status','update','put','/:id/accept','/:id/reject','reject','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/describe','describe','/:id','tracked'];(function(_0x154cbb,_0x43c57f){var _0x494584=function(_0x971bd9){while(--_0x971bd9){_0x154cbb['push'](_0x154cbb['shift']());}};_0x494584(++_0x43c57f);}(_0x1d48,0xb8));var _0x81d4=function(_0x19aba0,_0x4d920b){_0x19aba0=_0x19aba0-0x0;var _0x198c24=_0x1d48[_0x19aba0];return _0x198c24;};'use strict';var multer=require(_0x81d4('0x0'));var util=require(_0x81d4('0x1'));var path=require('path');var timeout=require(_0x81d4('0x2'));var express=require(_0x81d4('0x3'));var router=express[_0x81d4('0x4')]();var fs_extra=require(_0x81d4('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x81d4('0x6'));var config=require(_0x81d4('0x7'));var controller=require('./whatsappMessage.controller');router[_0x81d4('0x8')]('/',auth[_0x81d4('0x9')](),controller['index']);router[_0x81d4('0x8')](_0x81d4('0xa'),auth[_0x81d4('0x9')](),controller[_0x81d4('0xb')]);router['get'](_0x81d4('0xc'),auth[_0x81d4('0x9')](),controller['show']);router['post']('/',auth[_0x81d4('0x9')](),interaction[_0x81d4('0xd')](_0x81d4('0xe'),'whatsappmessage:create'),controller[_0x81d4('0xf')]);router['post']('/:id/status',controller[_0x81d4('0x10')]);router['put']('/:id',auth[_0x81d4('0x9')](),controller[_0x81d4('0x11')]);router[_0x81d4('0x12')](_0x81d4('0x13'),auth[_0x81d4('0x9')](),controller['accept']);router['put'](_0x81d4('0x14'),auth[_0x81d4('0x9')](),controller[_0x81d4('0x15')]);router['delete'](_0x81d4('0xc'),auth[_0x81d4('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x9074=['../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','isAuthenticated','describe','/:id','post','tracked','create','status','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x59af47,_0x2cb60e){var _0x5a02e5=function(_0x6d5831){while(--_0x6d5831){_0x59af47['push'](_0x59af47['shift']());}};_0x5a02e5(++_0x2cb60e);}(_0x9074,0x159));var _0x4907=function(_0x16ba88,_0x58e5fe){_0x16ba88=_0x16ba88-0x0;var _0x3d1272=_0x9074[_0x16ba88];return _0x3d1272;};'use strict';var multer=require(_0x4907('0x0'));var util=require('util');var path=require(_0x4907('0x1'));var timeout=require(_0x4907('0x2'));var express=require(_0x4907('0x3'));var router=express[_0x4907('0x4')]();var fs_extra=require(_0x4907('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4907('0x6'));var config=require(_0x4907('0x7'));var controller=require(_0x4907('0x8'));router[_0x4907('0x9')]('/',auth['isAuthenticated'](),controller[_0x4907('0xa')]);router[_0x4907('0x9')]('/describe',auth[_0x4907('0xb')](),controller[_0x4907('0xc')]);router[_0x4907('0x9')](_0x4907('0xd'),auth[_0x4907('0xb')](),controller['show']);router[_0x4907('0xe')]('/',auth['isAuthenticated'](),interaction[_0x4907('0xf')]('whatsapp','whatsappmessage:create'),controller[_0x4907('0x10')]);router['post']('/:id/status',controller[_0x4907('0x11')]);router[_0x4907('0x12')](_0x4907('0xd'),auth['isAuthenticated'](),controller[_0x4907('0x13')]);router[_0x4907('0x12')](_0x4907('0x14'),auth[_0x4907('0xb')](),controller[_0x4907('0x15')]);router[_0x4907('0x12')](_0x4907('0x16'),auth[_0x4907('0xb')](),controller[_0x4907('0x17')]);router[_0x4907('0x18')](_0x4907('0xd'),auth[_0x4907('0xb')](),controller[_0x4907('0x19')]);module[_0x4907('0x1a')]=router;
\ No newline at end of file
index cb2779d..5e520fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x702c=['BOOLEAN','out','STRING','DATE','sequelize','exports','TEXT','medium'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x702c,0x1e4));var _0xc702=function(_0x470995,_0x49eb0e){_0x470995=_0x470995-0x0;var _0x107dee=_0x702c[_0x470995];return _0x107dee;};'use strict';var Sequelize=require(_0xc702('0x0'));module[_0xc702('0x1')]={'body':{'type':Sequelize[_0xc702('0x2')](_0xc702('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xc702('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc702('0x5')),'defaultValue':_0xc702('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xc702('0x6')](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0xc702('0x7')]},'secret':{'type':Sequelize[_0xc702('0x4')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x0882=['sequelize','TEXT','medium','BOOLEAN','ENUM','out','STRING','DATE'];(function(_0x6cf19c,_0x2f3f02){var _0xce14f3=function(_0x474587){while(--_0x474587){_0x6cf19c['push'](_0x6cf19c['shift']());}};_0xce14f3(++_0x2f3f02);}(_0x0882,0x1f0));var _0x2088=function(_0x2e7087,_0x112eec){_0x2e7087=_0x2e7087-0x0;var _0xb5b3a6=_0x0882[_0x2e7087];return _0xb5b3a6;};'use strict';var Sequelize=require(_0x2088('0x0'));module['exports']={'body':{'type':Sequelize[_0x2088('0x1')](_0x2088('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x2088('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x2088('0x4')]('in',_0x2088('0x5')),'defaultValue':_0x2088('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x2088('0x6')](0xbe)},'phone':{'type':Sequelize[_0x2088('0x6')]},'readAt':{'type':Sequelize[_0x2088('0x7')]},'secret':{'type':Sequelize[_0x2088('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x2088('0x6')]},'providerResponse':{'type':Sequelize[_0x2088('0x1')]}};
\ No newline at end of file
index 2f6aa3b..5aa40ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bee=['null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','User','agent','fullname','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','WhatsappInteractionId','role','RejectMessage','rejectMessage','QueryTypes','contact','email','internal','rejectmessage','WhatsappAccount','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','rimraf','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','WhatsappMessage,\x20%s,\x20%s','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','status','end','json','offset','undefined','limit','count','set','apply','reject','save','destroy','stack','name','send','index','map','WhatsappMessage','type','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','rows','keys','create','body','update','find','params','describe','whatsapp-interactions','accept','whatsapp','read','readAt','format','UserId','user','get','WhatsappInteraction','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify'];(function(_0x5ed954,_0x2fc5ed){var _0x4b067d=function(_0x4f5915){while(--_0x4f5915){_0x5ed954['push'](_0x5ed954['shift']());}};_0x4b067d(++_0x2fc5ed);}(_0x8bee,0x12f));var _0xe8be=function(_0x493c04,_0x4de40b){_0x493c04=_0x493c04-0x0;var _0x4f9981=_0x8bee[_0x493c04];return _0x4f9981;};'use strict';var emlformat=require(_0xe8be('0x0'));var rimraf=require(_0xe8be('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe8be('0x2'));var rp=require(_0xe8be('0x3'));var moment=require(_0xe8be('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xe8be('0x5'));var util=require('util');var path=require(_0xe8be('0x6'));var sox=require(_0xe8be('0x7'));var csv=require(_0xe8be('0x8'));var ejs=require(_0xe8be('0x9'));var fs=require('fs');var fs_extra=require(_0xe8be('0xa'));var _=require(_0xe8be('0xb'));var squel=require(_0xe8be('0xc'));var crypto=require(_0xe8be('0xd'));var jsforce=require(_0xe8be('0xe'));var deskjs=require(_0xe8be('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe8be('0x10'));var Redis=require(_0xe8be('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe8be('0x12'));var hardwareService=require(_0xe8be('0x13'));var logger=require(_0xe8be('0x14'))(_0xe8be('0x15'));var utils=require('../../config/utils');var config=require(_0xe8be('0x16'));var licenseUtil=require(_0xe8be('0x17'));var db=require('../../mysqldb')['db'];config[_0xe8be('0x18')]=_[_0xe8be('0x19')](config[_0xe8be('0x18')],{'host':_0xe8be('0x1a'),'port':0x18eb});var socket=require(_0xe8be('0x1b'))(new Redis(config[_0xe8be('0x18')]));require('./whatsappMessage.socket')[_0xe8be('0x1c')](socket);var jayson=require(_0xe8be('0x1d'));var client=jayson[_0xe8be('0x1e')][_0xe8be('0x1f')]({'port':0x232c});var client9002=jayson[_0xe8be('0x1e')][_0xe8be('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x26f51e,_0x4664ad,_0x23f0fd,_0x4f2985){return new BPromise(function(_0x48d14e,_0x51b794){var _0x38580d=_0x4f2985||client;return _0x38580d[_0xe8be('0x20')](_0x26f51e,_0x23f0fd)[_0xe8be('0x21')](function(_0x52965b){logger['info'](_0xe8be('0x22'),_0x4664ad,'request\x20sent');logger[_0xe8be('0x23')](_0xe8be('0x24'),_0x4664ad,_0xe8be('0x25'),JSON['stringify'](_0x52965b));if(_0x52965b[_0xe8be('0x26')]){if(_0x52965b['error'][_0xe8be('0x27')]===0x1f4){logger['error'](_0xe8be('0x22'),_0x4664ad,_0x52965b[_0xe8be('0x26')][_0xe8be('0x28')]);return _0x51b794(_0x52965b[_0xe8be('0x26')][_0xe8be('0x28')]);}logger[_0xe8be('0x26')]('WhatsappMessage,\x20%s,\x20%s',_0x4664ad,_0x52965b[_0xe8be('0x26')][_0xe8be('0x28')]);return _0x48d14e(_0x52965b[_0xe8be('0x26')][_0xe8be('0x28')]);}else{logger[_0xe8be('0x29')](_0xe8be('0x22'),_0x4664ad,'request\x20sent');_0x48d14e(_0x52965b[_0xe8be('0x2a')][_0xe8be('0x28')]);}})[_0xe8be('0x2b')](function(_0x57406b){logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x4664ad,_0x57406b);_0x51b794(_0x57406b);});});}function respondWithStatusCode(_0x54ace4,_0x13d148){_0x13d148=_0x13d148||0xcc;return function(_0x18005f){if(_0x18005f){return _0x54ace4['sendStatus'](_0x13d148);}return _0x54ace4[_0xe8be('0x2c')](_0x13d148)[_0xe8be('0x2d')]();};}function respondWithResult(_0x4e4d09,_0x3b571b){_0x3b571b=_0x3b571b||0xc8;return function(_0x2deb15){if(_0x2deb15){return _0x4e4d09[_0xe8be('0x2c')](_0x3b571b)[_0xe8be('0x2e')](_0x2deb15);}};}function respondWithFilteredResult(_0x1c92ac,_0x28a125){return function(_0x7f091b){if(_0x7f091b){var _0x4cf34d=typeof _0x28a125[_0xe8be('0x2f')]===_0xe8be('0x30')&&typeof _0x28a125[_0xe8be('0x31')]===_0xe8be('0x30');var _0x360bdf=_0x7f091b[_0xe8be('0x32')];var _0xe787c9=_0x4cf34d?0x0:_0x28a125['offset'];var _0x25def2=_0x4cf34d?_0x7f091b['count']:_0x28a125[_0xe8be('0x2f')]+_0x28a125[_0xe8be('0x31')];var _0x1b7f13;if(_0x25def2>=_0x360bdf){_0x25def2=_0x360bdf;_0x1b7f13=0xc8;}else{_0x1b7f13=0xce;}_0x1c92ac['status'](_0x1b7f13);return _0x1c92ac[_0xe8be('0x33')]('Content-Range',_0xe787c9+'-'+_0x25def2+'/'+_0x360bdf)['json'](_0x7f091b);}return null;};}function patchUpdates(_0x34e7f7){return function(_0x49a47a){try{jsonpatch[_0xe8be('0x34')](_0x49a47a,_0x34e7f7,!![]);}catch(_0x2aaa99){return BPromise[_0xe8be('0x35')](_0x2aaa99);}return _0x49a47a[_0xe8be('0x36')]();};}function saveUpdates(_0xd41c11,_0x56ecef){return function(_0x3f4a98){if(_0x3f4a98){return _0x3f4a98['update'](_0xd41c11)[_0xe8be('0x21')](function(_0x4ede8e){return _0x4ede8e;});}return null;};}function removeEntity(_0x728a25,_0x32ff09){return function(_0x1b7b8d){if(_0x1b7b8d){return _0x1b7b8d[_0xe8be('0x37')]()[_0xe8be('0x21')](function(){_0x728a25[_0xe8be('0x2c')](0xcc)[_0xe8be('0x2d')]();});}};}function handleEntityNotFound(_0x561e3d,_0x5e1ca4){return function(_0x57f68e){if(!_0x57f68e){_0x561e3d['sendStatus'](0x194);}return _0x57f68e;};}function handleError(_0xeb7e3,_0x2b0ef5){_0x2b0ef5=_0x2b0ef5||0x1f4;return function(_0xa2060b){logger['error'](_0xa2060b[_0xe8be('0x38')]);if(_0xa2060b[_0xe8be('0x39')]){delete _0xa2060b[_0xe8be('0x39')];}_0xeb7e3['status'](_0x2b0ef5)[_0xe8be('0x3a')](_0xa2060b);};}exports[_0xe8be('0x3b')]=function(_0x58b13a,_0x351b92){var _0x183827={},_0x14db5c={},_0x256ab7={'count':0x0,'rows':[]};var _0x2beada=_[_0xe8be('0x3c')](db[_0xe8be('0x3d')]['rawAttributes'],function(_0x171405){return{'name':_0x171405['fieldName'],'type':_0x171405[_0xe8be('0x3e')]['key']};});_0x14db5c[_0xe8be('0x3f')]=_['map'](_0x2beada,_0xe8be('0x39'));_0x14db5c[_0xe8be('0x40')]=_['keys'](_0x58b13a['query']);_0x14db5c['filters']=_[_0xe8be('0x41')](_0x14db5c[_0xe8be('0x3f')],_0x14db5c[_0xe8be('0x40')]);_0x183827[_0xe8be('0x42')]=_['intersection'](_0x14db5c[_0xe8be('0x3f')],qs[_0xe8be('0x43')](_0x58b13a['query'][_0xe8be('0x43')]));_0x183827[_0xe8be('0x42')]=_0x183827[_0xe8be('0x42')]['length']?_0x183827[_0xe8be('0x42')]:_0x14db5c['model'];if(!_0x58b13a['query'][_0xe8be('0x44')](_0xe8be('0x45'))){_0x183827[_0xe8be('0x31')]=qs[_0xe8be('0x31')](_0x58b13a[_0xe8be('0x40')][_0xe8be('0x31')]);_0x183827[_0xe8be('0x2f')]=qs[_0xe8be('0x2f')](_0x58b13a['query'][_0xe8be('0x2f')]);}_0x183827[_0xe8be('0x46')]=qs[_0xe8be('0x47')](_0x58b13a[_0xe8be('0x40')][_0xe8be('0x47')]);_0x183827[_0xe8be('0x48')]=qs['filters'](_['pick'](_0x58b13a[_0xe8be('0x40')],_0x14db5c[_0xe8be('0x49')]),_0x2beada);if(_0x58b13a[_0xe8be('0x40')][_0xe8be('0x4a')]){_0x183827[_0xe8be('0x48')]=_[_0xe8be('0x4b')](_0x183827[_0xe8be('0x48')],{'$or':_[_0xe8be('0x3c')](_0x2beada,function(_0x1b6495){if(_0x1b6495[_0xe8be('0x3e')]!=='VIRTUAL'){var _0x69b89={};_0x69b89[_0x1b6495['name']]={'$like':'%'+_0x58b13a[_0xe8be('0x40')][_0xe8be('0x4a')]+'%'};return _0x69b89;}})});}_0x183827=_[_0xe8be('0x4b')]({},_0x183827,_0x58b13a[_0xe8be('0x4c')]);var _0x15960a={'where':_0x183827[_0xe8be('0x48')]};return db[_0xe8be('0x3d')][_0xe8be('0x32')](_0x15960a)[_0xe8be('0x21')](function(_0x24ae4a){_0x256ab7[_0xe8be('0x32')]=_0x24ae4a;if(_0x58b13a[_0xe8be('0x40')][_0xe8be('0x4d')]){_0x183827[_0xe8be('0x4e')]=[{'all':!![]}];}return db['WhatsappMessage']['findAll'](_0x183827);})[_0xe8be('0x21')](function(_0x4d0443){_0x256ab7[_0xe8be('0x4f')]=_0x4d0443;return _0x256ab7;})[_0xe8be('0x21')](respondWithFilteredResult(_0x351b92,_0x183827))[_0xe8be('0x2b')](handleError(_0x351b92,null));};exports['show']=function(_0x40cabe,_0x201d1e){var _0x16ae4e={'raw':!![],'where':{'id':_0x40cabe['params']['id']}},_0x47bcff={};_0x47bcff[_0xe8be('0x3f')]=_[_0xe8be('0x50')](db[_0xe8be('0x3d')]['rawAttributes']);_0x47bcff[_0xe8be('0x40')]=_[_0xe8be('0x50')](_0x40cabe[_0xe8be('0x40')]);_0x47bcff[_0xe8be('0x49')]=_['intersection'](_0x47bcff[_0xe8be('0x3f')],_0x47bcff['query']);_0x16ae4e['attributes']=_['intersection'](_0x47bcff['model'],qs[_0xe8be('0x43')](_0x40cabe[_0xe8be('0x40')][_0xe8be('0x43')]));_0x16ae4e[_0xe8be('0x42')]=_0x16ae4e['attributes']['length']?_0x16ae4e['attributes']:_0x47bcff[_0xe8be('0x3f')];if(_0x40cabe[_0xe8be('0x40')][_0xe8be('0x4d')]){_0x16ae4e[_0xe8be('0x4e')]=[{'all':!![]}];}_0x16ae4e=_[_0xe8be('0x4b')]({},_0x16ae4e,_0x40cabe[_0xe8be('0x4c')]);return db[_0xe8be('0x3d')]['find'](_0x16ae4e)[_0xe8be('0x21')](handleEntityNotFound(_0x201d1e,null))[_0xe8be('0x21')](respondWithResult(_0x201d1e,null))[_0xe8be('0x2b')](handleError(_0x201d1e,null));};exports['create']=function(_0x5b425c,_0x424204){return db[_0xe8be('0x3d')][_0xe8be('0x51')](_0x5b425c[_0xe8be('0x52')],{})['then'](respondWithResult(_0x424204,0xc9))[_0xe8be('0x2b')](handleError(_0x424204,null));};exports[_0xe8be('0x53')]=function(_0x1b2d5f,_0x2fcb90){if(_0x1b2d5f[_0xe8be('0x52')]['id']){delete _0x1b2d5f[_0xe8be('0x52')]['id'];}return db[_0xe8be('0x3d')][_0xe8be('0x54')]({'where':{'id':_0x1b2d5f[_0xe8be('0x55')]['id']}})['then'](handleEntityNotFound(_0x2fcb90,null))[_0xe8be('0x21')](saveUpdates(_0x1b2d5f[_0xe8be('0x52')],null))[_0xe8be('0x21')](respondWithResult(_0x2fcb90,null))['catch'](handleError(_0x2fcb90,null));};exports[_0xe8be('0x37')]=function(_0x4c23e0,_0x400cb7){return db['WhatsappMessage'][_0xe8be('0x54')]({'where':{'id':_0x4c23e0['params']['id']}})['then'](handleEntityNotFound(_0x400cb7,null))[_0xe8be('0x21')](removeEntity(_0x400cb7,null))['catch'](handleError(_0x400cb7,null));};exports['describe']=function(_0x36fce6,_0x767a9e){return db['WhatsappMessage'][_0xe8be('0x56')]()['then'](respondWithResult(_0x767a9e,null))['catch'](handleError(_0x767a9e,null));};var interaction_log=require(_0xe8be('0x14'))(_0xe8be('0x57'));exports[_0xe8be('0x58')]=function(_0x2a37ca,_0xf05dc9,_0x390088){var _0x1fa111={'agent':{},'channel':_0xe8be('0x59')};if(_0x2a37ca[_0xe8be('0x52')]['id']){delete _0x2a37ca[_0xe8be('0x52')]['id'];}_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5a')]=!![];_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5b')]=moment()[_0xe8be('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');_0x2a37ca['body']['UserId']=_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5d')]||_0x2a37ca[_0xe8be('0x5e')]['id'];_0x1fa111['agent']['id']=_0x2a37ca['body'][_0xe8be('0x5d')];return db[_0xe8be('0x3d')][_0xe8be('0x54')]({'where':{'id':_0x2a37ca[_0xe8be('0x55')]['id'],'UserId':null}})[_0xe8be('0x21')](handleEntityNotFound(_0xf05dc9,null))['then'](saveUpdates(_0x2a37ca['body'],null))[_0xe8be('0x21')](function(_0x497da7){if(_0x497da7){_0x1fa111[_0xe8be('0x28')]=_0x497da7[_0xe8be('0x5f')]({'plain':!![]});return db[_0xe8be('0x60')][_0xe8be('0x54')]({'where':{'id':_0x497da7['WhatsappInteractionId']}});}return null;})[_0xe8be('0x21')](handleEntityNotFound(_0xf05dc9,null))[_0xe8be('0x21')](function(_0x186a25){if(_0x186a25){return _0x186a25['update']({'UserId':_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5d')],'read1stAt':_['isNil'](_0x186a25[_0xe8be('0x61')])?moment()['format'](_0xe8be('0x62')):undefined});}return null;})['then'](function(_0x463794){if(_0x463794){_0x1fa111[_0xe8be('0x63')]=_0x463794[_0xe8be('0x5f')]({'plain':!![]});interaction_log[_0xe8be('0x29')](_0xe8be('0x64'),_0x2a37ca[_0xe8be('0x5e')]['id'],_0x2a37ca[_0xe8be('0x5e')]['name'],_0x2a37ca['user']['role'],_0x1fa111[_0xe8be('0x63')]['id'],_0x2a37ca[_0xe8be('0x52')]?JSON[_0xe8be('0x65')](_0x2a37ca[_0xe8be('0x52')]):_0xe8be('0x66'));return respondWithRpcPromise(_0xe8be('0x67'),'acceptMessage',_0x1fa111);}return null;})[_0xe8be('0x21')](function(_0x3e603c){var _0x1d8ad4=_0xe8be('0x68')+_0x3e603c[_0xe8be('0x28')][_0xe8be('0x69')];return db[_0xe8be('0x6a')][_0xe8be('0x40')](_0x1d8ad4,{'type':db[_0xe8be('0x6b')]['QueryTypes'][_0xe8be('0x6c')],'raw':!![]})['then'](function(_0x35e8d4){return _0x35e8d4;});})[_0xe8be('0x21')](function(_0x14132a){if(_0x14132a){_0x1fa111['message']['contact']=_0x14132a[0x0];if(!_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5d')])return;return db[_0xe8be('0x6d')][_0xe8be('0x54')]({'where':{'id':_0x2a37ca[_0xe8be('0x52')][_0xe8be('0x5d')],'role':_0xe8be('0x6e')},'attributes':['id',_0xe8be('0x39'),_0xe8be('0x6f'),'email','internal'],'raw':!![]});}return null;})[_0xe8be('0x21')](function(_0x5bb001){if(!_0x5bb001)return null;_0x1fa111['message']['agent']=_0x5bb001;return _0x1fa111;})['then'](function(_0x2e71e2){if(_0x2e71e2){if(_0x2a37ca[_0xe8be('0x52')]['manual']){_0x1fa111[_0xe8be('0x28')]['interface']=util[_0xe8be('0x5c')](_0xe8be('0x70'),_0x2a37ca[_0xe8be('0x5e')]['name']);_0x1fa111[_0xe8be('0x28')][_0xe8be('0x71')]=_0x1fa111[_0xe8be('0x71')];_0x1fa111[_0xe8be('0x28')][_0xe8be('0x72')]=_0x1fa111[_0xe8be('0x71')];_0x1fa111[_0xe8be('0x28')][_0xe8be('0x73')]=_0xe8be('0x58');return respondWithRpcPromise(_0xe8be('0x74'),_0xe8be('0x74'),{'event':_0xe8be('0x75'),'message':_0x1fa111[_0xe8be('0x28')]},client9002)['then'](function(){return _0x1fa111;});}return _0x1fa111;}return null;})[_0xe8be('0x21')](respondWithResult(_0xf05dc9,null))[_0xe8be('0x2b')](handleError(_0xf05dc9,null));};var interaction_log=require(_0xe8be('0x14'))(_0xe8be('0x57'));exports[_0xe8be('0x35')]=function(_0x41b4ea,_0x5f08f0,_0x35b0ee){var _0xc00cc3={'agent':{},'channel':_0xe8be('0x59')};if(_0x41b4ea[_0xe8be('0x52')]['id']){delete _0x41b4ea[_0xe8be('0x52')]['id'];}_0x41b4ea['body'][_0xe8be('0x5d')]=_0x41b4ea[_0xe8be('0x52')][_0xe8be('0x5d')]||_0x41b4ea[_0xe8be('0x5e')]['id'];_0xc00cc3[_0xe8be('0x6e')]['id']=_0x41b4ea['body']['UserId'];return db[_0xe8be('0x3d')][_0xe8be('0x54')]({'where':{'id':_0x41b4ea[_0xe8be('0x55')]['id'],'UserId':null}})[_0xe8be('0x21')](handleEntityNotFound(_0x5f08f0,null))[_0xe8be('0x21')](function(_0x189d35){if(_0x189d35){_0xc00cc3[_0xe8be('0x28')]=_0x189d35['get']({'plain':!![]});return db[_0xe8be('0x60')][_0xe8be('0x54')]({'where':{'id':_0x189d35[_0xe8be('0x76')]}});}return null;})[_0xe8be('0x21')](handleEntityNotFound(_0x5f08f0,null))['then'](function(_0x4ae0a2){if(_0x4ae0a2){_0xc00cc3[_0xe8be('0x63')]=_0x4ae0a2['get']({'plain':!![]});interaction_log[_0xe8be('0x29')]('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x41b4ea[_0xe8be('0x5e')]['id'],_0x41b4ea['user'][_0xe8be('0x39')],_0x41b4ea['user'][_0xe8be('0x77')],_0xc00cc3[_0xe8be('0x63')]['id'],_0x41b4ea[_0xe8be('0x52')]?JSON['stringify'](_0x41b4ea[_0xe8be('0x52')]):_0xe8be('0x66'));return respondWithRpcPromise(_0xe8be('0x78'),_0xe8be('0x79'),_0xc00cc3);}return null;})[_0xe8be('0x21')](function(_0x19446a){var _0x2262b3='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x19446a[_0xe8be('0x28')][_0xe8be('0x69')];return db[_0xe8be('0x6a')][_0xe8be('0x40')](_0x2262b3,{'type':db[_0xe8be('0x6b')][_0xe8be('0x7a')][_0xe8be('0x6c')],'raw':!![]})[_0xe8be('0x21')](function(_0x12bca9){return _0x12bca9;});})[_0xe8be('0x21')](function(_0x53abb4){if(_0x53abb4){_0xc00cc3['message'][_0xe8be('0x7b')]=_0x53abb4[0x0];if(!_0x41b4ea[_0xe8be('0x52')][_0xe8be('0x5d')])return;return db[_0xe8be('0x6d')][_0xe8be('0x54')]({'where':{'id':_0x41b4ea[_0xe8be('0x52')][_0xe8be('0x5d')],'role':'agent'},'attributes':['id',_0xe8be('0x39'),_0xe8be('0x6f'),_0xe8be('0x7c'),_0xe8be('0x7d')],'raw':!![]});}return null;})[_0xe8be('0x21')](function(_0x2c0aac){if(!_0x2c0aac)return null;_0xc00cc3['message']['agent']=_0x2c0aac;return _0xc00cc3;})[_0xe8be('0x21')](function(_0x219248){if(_0x219248){_0x219248[_0xe8be('0x28')]['interface']=util[_0xe8be('0x5c')](_0xe8be('0x70'),_0x41b4ea[_0xe8be('0x5e')][_0xe8be('0x39')]);_0x219248[_0xe8be('0x28')][_0xe8be('0x71')]=_0xc00cc3[_0xe8be('0x71')];_0x219248[_0xe8be('0x28')]['motionChannel']=_0xc00cc3[_0xe8be('0x71')];_0x219248['message'][_0xe8be('0x73')]=_0xe8be('0x35');respondWithRpcPromise(_0xe8be('0x74'),_0xe8be('0x74'),{'event':_0xe8be('0x7e'),'message':_0x219248[_0xe8be('0x28')]},client9002);return _0xc00cc3;}return null;})['then'](respondWithResult(_0x5f08f0,null))[_0xe8be('0x2b')](handleError(_0x5f08f0,null));};exports[_0xe8be('0x2c')]=function(_0x5d64e9,_0x1c3024,_0x31a203){if(_0x5d64e9[_0xe8be('0x52')]['id']){delete _0x5d64e9[_0xe8be('0x52')]['id'];}var _0xf2c215;return db[_0xe8be('0x3d')][_0xe8be('0x54')]({'where':{'id':_0x5d64e9[_0xe8be('0x55')]['id']}})['then'](handleEntityNotFound(_0x1c3024,null))[_0xe8be('0x21')](function(_0x47181b){if(_0x47181b){_0xf2c215=_0x47181b;return db[_0xe8be('0x7f')]['find']({'where':{'id':_0x47181b['WhatsappAccountId']}});}})[_0xe8be('0x21')](handleEntityNotFound(_0x1c3024,null))['then'](function(_0x5afc08){if(_0x5afc08){logger[_0xe8be('0x23')]('WhatsppMessage,\x20%s,\x20%s,\x20%s',_0xe8be('0x2c'),_0xe8be('0x80'),_0x5afc08[_0xe8be('0x3e')],util[_0xe8be('0x81')](_0x5d64e9['body'],{'showHidden':![],'depth':null}));switch(_0x5afc08['type']){case _0xe8be('0x82'):if(_0x5d64e9[_0xe8be('0x52')][_0xe8be('0x83')]&&_0x5d64e9['body'][_0xe8be('0x83')]===_0xf2c215[_0xe8be('0x84')]&&_0x5d64e9[_0xe8be('0x52')][_0xe8be('0x85')]&&_0x5d64e9['body'][_0xe8be('0x85')]==='read'){return _0xf2c215['update']({'read':!![]});}else{logger[_0xe8be('0x26')](_0xe8be('0x86'),_0xe8be('0x2c'),_0xe8be('0x82'),util[_0xe8be('0x81')](_0x5d64e9[_0xe8be('0x52')],{'showHidden':![],'depth':null}));}break;}return _0xf2c215;}})[_0xe8be('0x21')](respondWithResult(_0x1c3024,null))[_0xe8be('0x2b')](handleError(_0x1c3024,null));};
\ No newline at end of file
+var _0xb9ba=['socket.io-emitter','register','jayson/promise','client','http','request','info','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappMessage,\x20%s,\x20%s','message','catch','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','sendStatus','stack','name','send','index','map','WhatsappMessage','rawAttributes','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','show','params','find','create','body','describe','../../config/logger','accept','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteraction','isNil','read1stAt','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','User','fullname','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','whatsapp-interactions','get','WhatsappInteractionId','role','RejectMessage','rejectMessage','ContactId','WhatsappAccount','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','MessageStatus','WhatsappAccount,\x20%s,\x20%s,\x20%s','eml-format','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','redis','defaults','localhost'];(function(_0x2a453b,_0x479c50){var _0x132f79=function(_0x5e3d83){while(--_0x5e3d83){_0x2a453b['push'](_0x2a453b['shift']());}};_0x132f79(++_0x479c50);}(_0xb9ba,0x102));var _0xab9b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xb9ba[_0x122ef9];return _0x42fba0;};'use strict';var emlformat=require(_0xab9b('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xab9b('0x1'));var jsonpatch=require(_0xab9b('0x2'));var rp=require('request-promise');var moment=require(_0xab9b('0x3'));var BPromise=require(_0xab9b('0x4'));var Mustache=require(_0xab9b('0x5'));var util=require(_0xab9b('0x6'));var path=require(_0xab9b('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xab9b('0x8'));var fs=require('fs');var fs_extra=require(_0xab9b('0x9'));var _=require('lodash');var squel=require(_0xab9b('0xa'));var crypto=require(_0xab9b('0xb'));var jsforce=require(_0xab9b('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xab9b('0xd'));var Papa=require(_0xab9b('0xe'));var Redis=require(_0xab9b('0xf'));var authService=require(_0xab9b('0x10'));var qs=require(_0xab9b('0x11'));var as=require(_0xab9b('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xab9b('0x13'));var utils=require('../../config/utils');var config=require(_0xab9b('0x14'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xab9b('0x15')]=_[_0xab9b('0x16')](config[_0xab9b('0x15')],{'host':_0xab9b('0x17'),'port':0x18eb});var socket=require(_0xab9b('0x18'))(new Redis(config[_0xab9b('0x15')]));require('./whatsappMessage.socket')[_0xab9b('0x19')](socket);var jayson=require(_0xab9b('0x1a'));var client=jayson[_0xab9b('0x1b')][_0xab9b('0x1c')]({'port':0x232c});var client9002=jayson['client'][_0xab9b('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0x2e6a5f,_0x1b2ddb,_0x409d23,_0x1e953b){return new BPromise(function(_0x4dc73d,_0x2caae0){var _0x55a3a7=_0x1e953b||client;return _0x55a3a7[_0xab9b('0x1d')](_0x2e6a5f,_0x409d23)['then'](function(_0x2ef05c){logger[_0xab9b('0x1e')]('WhatsappMessage,\x20%s,\x20%s',_0x1b2ddb,_0xab9b('0x1f'));logger[_0xab9b('0x20')](_0xab9b('0x21'),_0x1b2ddb,_0xab9b('0x1f'),JSON[_0xab9b('0x22')](_0x2ef05c));if(_0x2ef05c[_0xab9b('0x23')]){if(_0x2ef05c[_0xab9b('0x23')][_0xab9b('0x24')]===0x1f4){logger['error'](_0xab9b('0x25'),_0x1b2ddb,_0x2ef05c['error']['message']);return _0x2caae0(_0x2ef05c[_0xab9b('0x23')]['message']);}logger['error']('WhatsappMessage,\x20%s,\x20%s',_0x1b2ddb,_0x2ef05c[_0xab9b('0x23')]['message']);return _0x4dc73d(_0x2ef05c[_0xab9b('0x23')][_0xab9b('0x26')]);}else{logger[_0xab9b('0x1e')](_0xab9b('0x25'),_0x1b2ddb,_0xab9b('0x1f'));_0x4dc73d(_0x2ef05c['result']['message']);}})[_0xab9b('0x27')](function(_0x3bf280){logger[_0xab9b('0x23')](_0xab9b('0x25'),_0x1b2ddb,_0x3bf280);_0x2caae0(_0x3bf280);});});}function respondWithStatusCode(_0x327673,_0x478df5){_0x478df5=_0x478df5||0xcc;return function(_0x543f08){if(_0x543f08){return _0x327673['sendStatus'](_0x478df5);}return _0x327673[_0xab9b('0x28')](_0x478df5)['end']();};}function respondWithResult(_0x4a6702,_0x3c5057){_0x3c5057=_0x3c5057||0xc8;return function(_0x9bf131){if(_0x9bf131){return _0x4a6702[_0xab9b('0x28')](_0x3c5057)[_0xab9b('0x29')](_0x9bf131);}};}function respondWithFilteredResult(_0x23910b,_0x1e441d){return function(_0x35770c){if(_0x35770c){var _0x3e0898=typeof _0x1e441d[_0xab9b('0x2a')]===_0xab9b('0x2b')&&typeof _0x1e441d[_0xab9b('0x2c')]===_0xab9b('0x2b');var _0xd660e2=_0x35770c[_0xab9b('0x2d')];var _0x49c48f=_0x3e0898?0x0:_0x1e441d[_0xab9b('0x2a')];var _0x1e084b=_0x3e0898?_0x35770c['count']:_0x1e441d['offset']+_0x1e441d[_0xab9b('0x2c')];var _0x2d1501;if(_0x1e084b>=_0xd660e2){_0x1e084b=_0xd660e2;_0x2d1501=0xc8;}else{_0x2d1501=0xce;}_0x23910b[_0xab9b('0x28')](_0x2d1501);return _0x23910b['set'](_0xab9b('0x2e'),_0x49c48f+'-'+_0x1e084b+'/'+_0xd660e2)[_0xab9b('0x29')](_0x35770c);}return null;};}function patchUpdates(_0x27c909){return function(_0x4dc314){try{jsonpatch[_0xab9b('0x2f')](_0x4dc314,_0x27c909,!![]);}catch(_0x290680){return BPromise[_0xab9b('0x30')](_0x290680);}return _0x4dc314[_0xab9b('0x31')]();};}function saveUpdates(_0x210aea,_0x807dc6){return function(_0x253ac9){if(_0x253ac9){return _0x253ac9[_0xab9b('0x32')](_0x210aea)['then'](function(_0xfa2438){return _0xfa2438;});}return null;};}function removeEntity(_0x238c9c,_0x350a92){return function(_0x30c3ea){if(_0x30c3ea){return _0x30c3ea[_0xab9b('0x33')]()[_0xab9b('0x34')](function(){_0x238c9c[_0xab9b('0x28')](0xcc)[_0xab9b('0x35')]();});}};}function handleEntityNotFound(_0xcd839d,_0x5b9239){return function(_0x46fe8d){if(!_0x46fe8d){_0xcd839d[_0xab9b('0x36')](0x194);}return _0x46fe8d;};}function handleError(_0x2ace43,_0x1e327d){_0x1e327d=_0x1e327d||0x1f4;return function(_0x58f9d1){logger[_0xab9b('0x23')](_0x58f9d1[_0xab9b('0x37')]);if(_0x58f9d1[_0xab9b('0x38')]){delete _0x58f9d1[_0xab9b('0x38')];}_0x2ace43[_0xab9b('0x28')](_0x1e327d)[_0xab9b('0x39')](_0x58f9d1);};}exports[_0xab9b('0x3a')]=function(_0x5f2ea4,_0x248b6d){var _0x31ec7f={},_0x4eabb3={},_0x33d826={'count':0x0,'rows':[]};var _0x2fbc95=_[_0xab9b('0x3b')](db[_0xab9b('0x3c')][_0xab9b('0x3d')],function(_0x39504a){return{'name':_0x39504a['fieldName'],'type':_0x39504a[_0xab9b('0x3e')][_0xab9b('0x3f')]};});_0x4eabb3[_0xab9b('0x40')]=_['map'](_0x2fbc95,_0xab9b('0x38'));_0x4eabb3[_0xab9b('0x41')]=_[_0xab9b('0x42')](_0x5f2ea4['query']);_0x4eabb3[_0xab9b('0x43')]=_[_0xab9b('0x44')](_0x4eabb3[_0xab9b('0x40')],_0x4eabb3['query']);_0x31ec7f['attributes']=_[_0xab9b('0x44')](_0x4eabb3['model'],qs[_0xab9b('0x45')](_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x45')]));_0x31ec7f['attributes']=_0x31ec7f[_0xab9b('0x46')][_0xab9b('0x47')]?_0x31ec7f['attributes']:_0x4eabb3[_0xab9b('0x40')];if(!_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x48')](_0xab9b('0x49'))){_0x31ec7f['limit']=qs['limit'](_0x5f2ea4['query'][_0xab9b('0x2c')]);_0x31ec7f[_0xab9b('0x2a')]=qs['offset'](_0x5f2ea4[_0xab9b('0x41')]['offset']);}_0x31ec7f['order']=qs[_0xab9b('0x4a')](_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x4a')]);_0x31ec7f['where']=qs[_0xab9b('0x43')](_[_0xab9b('0x4b')](_0x5f2ea4[_0xab9b('0x41')],_0x4eabb3[_0xab9b('0x43')]),_0x2fbc95);if(_0x5f2ea4[_0xab9b('0x41')]['filter']){_0x31ec7f[_0xab9b('0x4c')]=_[_0xab9b('0x4d')](_0x31ec7f[_0xab9b('0x4c')],{'$or':_[_0xab9b('0x3b')](_0x2fbc95,function(_0x31b55c){if(_0x31b55c[_0xab9b('0x3e')]!==_0xab9b('0x4e')){var _0x9939c8={};_0x9939c8[_0x31b55c[_0xab9b('0x38')]]={'$like':'%'+_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x4f')]+'%'};return _0x9939c8;}})});}_0x31ec7f=_[_0xab9b('0x4d')]({},_0x31ec7f,_0x5f2ea4[_0xab9b('0x50')]);var _0x87be5c={'where':_0x31ec7f[_0xab9b('0x4c')]};return db[_0xab9b('0x3c')]['count'](_0x87be5c)[_0xab9b('0x34')](function(_0x390404){_0x33d826[_0xab9b('0x2d')]=_0x390404;if(_0x5f2ea4[_0xab9b('0x41')][_0xab9b('0x51')]){_0x31ec7f[_0xab9b('0x52')]=[{'all':!![]}];}return db[_0xab9b('0x3c')][_0xab9b('0x53')](_0x31ec7f);})[_0xab9b('0x34')](function(_0x23c5f1){_0x33d826[_0xab9b('0x54')]=_0x23c5f1;return _0x33d826;})[_0xab9b('0x34')](respondWithFilteredResult(_0x248b6d,_0x31ec7f))['catch'](handleError(_0x248b6d,null));};exports[_0xab9b('0x55')]=function(_0x203d7c,_0x29609d){var _0x1a6c39={'raw':!![],'where':{'id':_0x203d7c[_0xab9b('0x56')]['id']}},_0x3e919a={};_0x3e919a[_0xab9b('0x40')]=_['keys'](db[_0xab9b('0x3c')][_0xab9b('0x3d')]);_0x3e919a[_0xab9b('0x41')]=_[_0xab9b('0x42')](_0x203d7c[_0xab9b('0x41')]);_0x3e919a[_0xab9b('0x43')]=_[_0xab9b('0x44')](_0x3e919a['model'],_0x3e919a[_0xab9b('0x41')]);_0x1a6c39[_0xab9b('0x46')]=_[_0xab9b('0x44')](_0x3e919a['model'],qs[_0xab9b('0x45')](_0x203d7c[_0xab9b('0x41')][_0xab9b('0x45')]));_0x1a6c39[_0xab9b('0x46')]=_0x1a6c39['attributes'][_0xab9b('0x47')]?_0x1a6c39[_0xab9b('0x46')]:_0x3e919a[_0xab9b('0x40')];if(_0x203d7c[_0xab9b('0x41')]['includeAll']){_0x1a6c39[_0xab9b('0x52')]=[{'all':!![]}];}_0x1a6c39=_[_0xab9b('0x4d')]({},_0x1a6c39,_0x203d7c['options']);return db[_0xab9b('0x3c')][_0xab9b('0x57')](_0x1a6c39)[_0xab9b('0x34')](handleEntityNotFound(_0x29609d,null))['then'](respondWithResult(_0x29609d,null))[_0xab9b('0x27')](handleError(_0x29609d,null));};exports['create']=function(_0x101cf4,_0xead1be){return db['WhatsappMessage'][_0xab9b('0x58')](_0x101cf4[_0xab9b('0x59')],{})[_0xab9b('0x34')](respondWithResult(_0xead1be,0xc9))[_0xab9b('0x27')](handleError(_0xead1be,null));};exports[_0xab9b('0x32')]=function(_0x327f3b,_0x7eb32e){if(_0x327f3b['body']['id']){delete _0x327f3b['body']['id'];}return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x327f3b[_0xab9b('0x56')]['id']}})[_0xab9b('0x34')](handleEntityNotFound(_0x7eb32e,null))[_0xab9b('0x34')](saveUpdates(_0x327f3b[_0xab9b('0x59')],null))['then'](respondWithResult(_0x7eb32e,null))[_0xab9b('0x27')](handleError(_0x7eb32e,null));};exports[_0xab9b('0x33')]=function(_0x1fd7de,_0x54db1a){return db[_0xab9b('0x3c')]['find']({'where':{'id':_0x1fd7de[_0xab9b('0x56')]['id']}})[_0xab9b('0x34')](handleEntityNotFound(_0x54db1a,null))[_0xab9b('0x34')](removeEntity(_0x54db1a,null))[_0xab9b('0x27')](handleError(_0x54db1a,null));};exports[_0xab9b('0x5a')]=function(_0x289405,_0x230b66){return db[_0xab9b('0x3c')][_0xab9b('0x5a')]()[_0xab9b('0x34')](respondWithResult(_0x230b66,null))[_0xab9b('0x27')](handleError(_0x230b66,null));};var interaction_log=require(_0xab9b('0x5b'))('whatsapp-interactions');exports[_0xab9b('0x5c')]=function(_0x5b6ae7,_0x3aa6d7,_0x2169c1){var _0x9448c0={'agent':{},'channel':_0xab9b('0x5d')};if(_0x5b6ae7['body']['id']){delete _0x5b6ae7[_0xab9b('0x59')]['id'];}_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x5e')]=!![];_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x5f')]=moment()[_0xab9b('0x60')](_0xab9b('0x61'));_0x5b6ae7['body'][_0xab9b('0x62')]=_0x5b6ae7[_0xab9b('0x59')]['UserId']||_0x5b6ae7[_0xab9b('0x63')]['id'];_0x9448c0[_0xab9b('0x64')]['id']=_0x5b6ae7['body'][_0xab9b('0x62')];return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x5b6ae7['params']['id'],'UserId':null}})[_0xab9b('0x34')](handleEntityNotFound(_0x3aa6d7,null))[_0xab9b('0x34')](saveUpdates(_0x5b6ae7[_0xab9b('0x59')],null))['then'](function(_0x4ff95f){if(_0x4ff95f){_0x9448c0[_0xab9b('0x26')]=_0x4ff95f['get']({'plain':!![]});return db[_0xab9b('0x65')][_0xab9b('0x57')]({'where':{'id':_0x4ff95f['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x3aa6d7,null))[_0xab9b('0x34')](function(_0x4d87c4){if(_0x4d87c4){return _0x4d87c4['update']({'UserId':_0x5b6ae7[_0xab9b('0x59')][_0xab9b('0x62')],'read1stAt':_[_0xab9b('0x66')](_0x4d87c4[_0xab9b('0x67')])?moment()['format'](_0xab9b('0x61')):undefined});}return null;})[_0xab9b('0x34')](function(_0x534c19){if(_0x534c19){_0x9448c0[_0xab9b('0x68')]=_0x534c19['get']({'plain':!![]});interaction_log[_0xab9b('0x1e')](_0xab9b('0x69'),_0x5b6ae7['user']['id'],_0x5b6ae7[_0xab9b('0x63')][_0xab9b('0x38')],_0x5b6ae7[_0xab9b('0x63')]['role'],_0x9448c0[_0xab9b('0x68')]['id'],_0x5b6ae7[_0xab9b('0x59')]?JSON[_0xab9b('0x22')](_0x5b6ae7[_0xab9b('0x59')]):_0xab9b('0x6a'));return respondWithRpcPromise(_0xab9b('0x6b'),_0xab9b('0x6c'),_0x9448c0);}return null;})[_0xab9b('0x34')](function(_0x25bed6){var _0x48c787=_0xab9b('0x6d')+_0x25bed6[_0xab9b('0x26')]['ContactId'];return db[_0xab9b('0x6e')]['query'](_0x48c787,{'type':db[_0xab9b('0x6f')][_0xab9b('0x70')][_0xab9b('0x71')],'raw':!![]})['then'](function(_0x3628df){return _0x3628df;});})[_0xab9b('0x34')](function(_0x5e4621){if(_0x5e4621){_0x9448c0['message'][_0xab9b('0x72')]=_0x5e4621[0x0];if(!_0x5b6ae7[_0xab9b('0x59')]['UserId'])return;return db[_0xab9b('0x73')][_0xab9b('0x57')]({'where':{'id':_0x5b6ae7['body'][_0xab9b('0x62')],'role':_0xab9b('0x64')},'attributes':['id',_0xab9b('0x38'),_0xab9b('0x74'),'email','internal'],'raw':!![]});}return null;})[_0xab9b('0x34')](function(_0xea5197){if(!_0xea5197)return null;_0x9448c0[_0xab9b('0x26')][_0xab9b('0x64')]=_0xea5197;return _0x9448c0;})[_0xab9b('0x34')](function(_0x2ca936){if(_0x2ca936){if(_0x5b6ae7['body'][_0xab9b('0x75')]){_0x9448c0[_0xab9b('0x26')][_0xab9b('0x76')]=util[_0xab9b('0x60')](_0xab9b('0x77'),_0x5b6ae7[_0xab9b('0x63')][_0xab9b('0x38')]);_0x9448c0[_0xab9b('0x26')][_0xab9b('0x78')]=_0x9448c0[_0xab9b('0x78')];_0x9448c0[_0xab9b('0x26')][_0xab9b('0x79')]=_0x9448c0[_0xab9b('0x78')];_0x9448c0[_0xab9b('0x26')][_0xab9b('0x7a')]=_0xab9b('0x5c');return respondWithRpcPromise(_0xab9b('0x7b'),_0xab9b('0x7b'),{'event':_0xab9b('0x7c'),'message':_0x9448c0[_0xab9b('0x26')]},client9002)[_0xab9b('0x34')](function(){return _0x9448c0;});}return _0x9448c0;}return null;})[_0xab9b('0x34')](respondWithResult(_0x3aa6d7,null))['catch'](handleError(_0x3aa6d7,null));};var interaction_log=require(_0xab9b('0x5b'))(_0xab9b('0x7d'));exports[_0xab9b('0x30')]=function(_0x13f697,_0x358062,_0x29adfa){var _0x38d88c={'agent':{},'channel':'whatsapp'};if(_0x13f697['body']['id']){delete _0x13f697['body']['id'];}_0x13f697['body']['UserId']=_0x13f697[_0xab9b('0x59')]['UserId']||_0x13f697[_0xab9b('0x63')]['id'];_0x38d88c[_0xab9b('0x64')]['id']=_0x13f697['body']['UserId'];return db[_0xab9b('0x3c')][_0xab9b('0x57')]({'where':{'id':_0x13f697[_0xab9b('0x56')]['id'],'UserId':null}})[_0xab9b('0x34')](handleEntityNotFound(_0x358062,null))[_0xab9b('0x34')](function(_0x5e5981){if(_0x5e5981){_0x38d88c[_0xab9b('0x26')]=_0x5e5981[_0xab9b('0x7e')]({'plain':!![]});return db[_0xab9b('0x65')][_0xab9b('0x57')]({'where':{'id':_0x5e5981[_0xab9b('0x7f')]}});}return null;})[_0xab9b('0x34')](handleEntityNotFound(_0x358062,null))[_0xab9b('0x34')](function(_0x2ce1e7){if(_0x2ce1e7){_0x38d88c[_0xab9b('0x68')]=_0x2ce1e7['get']({'plain':!![]});interaction_log['info']('[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x13f697[_0xab9b('0x63')]['id'],_0x13f697[_0xab9b('0x63')][_0xab9b('0x38')],_0x13f697[_0xab9b('0x63')][_0xab9b('0x80')],_0x38d88c[_0xab9b('0x68')]['id'],_0x13f697[_0xab9b('0x59')]?JSON[_0xab9b('0x22')](_0x13f697[_0xab9b('0x59')]):'null');return respondWithRpcPromise(_0xab9b('0x81'),_0xab9b('0x82'),_0x38d88c);}return null;})['then'](function(_0x302707){var _0x2834dd=_0xab9b('0x6d')+_0x302707[_0xab9b('0x26')][_0xab9b('0x83')];return db[_0xab9b('0x6e')][_0xab9b('0x41')](_0x2834dd,{'type':db[_0xab9b('0x6f')]['QueryTypes'][_0xab9b('0x71')],'raw':!![]})[_0xab9b('0x34')](function(_0x4aa4ca){return _0x4aa4ca;});})['then'](function(_0x3d671b){if(_0x3d671b){_0x38d88c[_0xab9b('0x26')][_0xab9b('0x72')]=_0x3d671b[0x0];if(!_0x13f697[_0xab9b('0x59')][_0xab9b('0x62')])return;return db[_0xab9b('0x73')][_0xab9b('0x57')]({'where':{'id':_0x13f697[_0xab9b('0x59')][_0xab9b('0x62')],'role':_0xab9b('0x64')},'attributes':['id',_0xab9b('0x38'),_0xab9b('0x74'),'email','internal'],'raw':!![]});}return null;})[_0xab9b('0x34')](function(_0x202e1){if(!_0x202e1)return null;_0x38d88c[_0xab9b('0x26')][_0xab9b('0x64')]=_0x202e1;return _0x38d88c;})[_0xab9b('0x34')](function(_0x419d1f){if(_0x419d1f){_0x419d1f[_0xab9b('0x26')][_0xab9b('0x76')]=util[_0xab9b('0x60')]('SIP/%s',_0x13f697['user']['name']);_0x419d1f['message'][_0xab9b('0x78')]=_0x38d88c[_0xab9b('0x78')];_0x419d1f[_0xab9b('0x26')][_0xab9b('0x79')]=_0x38d88c[_0xab9b('0x78')];_0x419d1f[_0xab9b('0x26')][_0xab9b('0x7a')]=_0xab9b('0x30');respondWithRpcPromise('EventManager',_0xab9b('0x7b'),{'event':'rejectmessage','message':_0x419d1f['message']},client9002);return _0x38d88c;}return null;})[_0xab9b('0x34')](respondWithResult(_0x358062,null))[_0xab9b('0x27')](handleError(_0x358062,null));};exports['status']=function(_0x5dc737,_0x2a30ca,_0xb3aa3a){if(_0x5dc737[_0xab9b('0x59')]['id']){delete _0x5dc737[_0xab9b('0x59')]['id'];}var _0x16d55d;return db[_0xab9b('0x3c')]['find']({'where':{'id':_0x5dc737['params']['id']}})['then'](handleEntityNotFound(_0x2a30ca,null))[_0xab9b('0x34')](function(_0x3f0c49){if(_0x3f0c49){_0x16d55d=_0x3f0c49;return db[_0xab9b('0x84')]['find']({'where':{'id':_0x3f0c49['WhatsappAccountId']}});}})[_0xab9b('0x34')](handleEntityNotFound(_0x2a30ca,null))['then'](function(_0x3b6d8a){if(_0x3b6d8a){logger['debug'](_0xab9b('0x85'),'status',_0xab9b('0x86'),_0x3b6d8a[_0xab9b('0x3e')],util[_0xab9b('0x87')](_0x5dc737[_0xab9b('0x59')],{'showHidden':![],'depth':null}));switch(_0x3b6d8a[_0xab9b('0x3e')]){case _0xab9b('0x88'):if(_0x5dc737[_0xab9b('0x59')][_0xab9b('0x89')]&&_0x5dc737[_0xab9b('0x59')][_0xab9b('0x89')]===_0x16d55d[_0xab9b('0x8a')]&&_0x5dc737[_0xab9b('0x59')][_0xab9b('0x8b')]&&_0x5dc737['body'][_0xab9b('0x8b')]===_0xab9b('0x5e')){return _0x16d55d[_0xab9b('0x32')]({'read':!![]});}else{logger[_0xab9b('0x23')](_0xab9b('0x8c'),_0xab9b('0x28'),_0xab9b('0x88'),util[_0xab9b('0x87')](_0x5dc737[_0xab9b('0x59')],{'showHidden':![],'depth':null}));}break;}return _0x16d55d;}})[_0xab9b('0x34')](respondWithResult(_0x2a30ca,null))[_0xab9b('0x27')](handleError(_0x2a30ca,null));};
\ No newline at end of file
index 5ad9195..64d1878 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1152=['remove','emit','events','../../mysqldb','WhatsappMessage','setMaxListeners','save','update'];(function(_0x1b9ce4,_0x19142b){var _0x488f43=function(_0x240f3d){while(--_0x240f3d){_0x1b9ce4['push'](_0x1b9ce4['shift']());}};_0x488f43(++_0x19142b);}(_0x1152,0x182));var _0x2115=function(_0x9e3edc,_0x594d61){_0x9e3edc=_0x9e3edc-0x0;var _0x44a387=_0x1152[_0x9e3edc];return _0x44a387;};'use strict';var EventEmitter=require(_0x2115('0x0'));var WhatsappMessage=require(_0x2115('0x1'))['db'][_0x2115('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x2115('0x3')](0x0);var events={'afterCreate':_0x2115('0x4'),'afterUpdate':_0x2115('0x5'),'afterDestroy':_0x2115('0x6')};function emitEvent(_0x3b8dfa){return function(_0x4d0f31,_0x1e8a26,_0x5c17b3){WhatsappMessageEvents[_0x2115('0x7')](_0x3b8dfa+':'+_0x4d0f31['id'],_0x4d0f31);WhatsappMessageEvents[_0x2115('0x7')](_0x3b8dfa,_0x4d0f31);_0x5c17b3(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module['exports']=WhatsappMessageEvents;
\ No newline at end of file
+var _0xe9e8=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappMessage'];(function(_0x1f1511,_0x4ea911){var _0x1d9ab8=function(_0x53276a){while(--_0x53276a){_0x1f1511['push'](_0x1f1511['shift']());}};_0x1d9ab8(++_0x4ea911);}(_0xe9e8,0x6b));var _0x8e9e=function(_0x1eb572,_0x599e09){_0x1eb572=_0x1eb572-0x0;var _0x741426=_0xe9e8[_0x1eb572];return _0x741426;};'use strict';var EventEmitter=require(_0x8e9e('0x0'));var WhatsappMessage=require(_0x8e9e('0x1'))['db'][_0x8e9e('0x2')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x8e9e('0x3')](0x0);var events={'afterCreate':_0x8e9e('0x4'),'afterUpdate':_0x8e9e('0x5'),'afterDestroy':_0x8e9e('0x6')};function emitEvent(_0x48233f){return function(_0x103d8b,_0x2a1d41,_0x1c09c6){WhatsappMessageEvents['emit'](_0x48233f+':'+_0x103d8b['id'],_0x103d8b);WhatsappMessageEvents[_0x8e9e('0x7')](_0x48233f,_0x103d8b);_0x1c09c6(null);};}for(var e in events){if(events[_0x8e9e('0x8')](e)){var event=events[e];WhatsappMessage[_0x8e9e('0x9')](e,emitEvent(event));}}module[_0x8e9e('0xa')]=WhatsappMessageEvents;
\ No newline at end of file
index d7d7585..1667268 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3b4=['baseUrl','text','POST','Bearer\x20','application/json','statuses','message_id','err','finally','lodash','util','api','moment','request-promise','node-fetch','path','../../config/environment','exports','whatsapp_messages','messageId','fti_whatsapp_messages','body','models','get','direction','toLowerCase','out','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','catch','secret','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','messages','whatsapp:','phone','remote','/api/whatsapp/messages/','/status?token=','token','sid','error','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xf3b4,0x11c));var _0x4f3b=function(_0x2f8bd1,_0x36d5e4){_0x2f8bd1=_0x2f8bd1-0x0;var _0x17ea35=_0xf3b4[_0x2f8bd1];return _0x17ea35;};'use strict';var _=require(_0x4f3b('0x0'));var util=require(_0x4f3b('0x1'));var logger=require('../../config/logger')(_0x4f3b('0x2'));var moment=require(_0x4f3b('0x3'));var BPromise=require('bluebird');var rp=require(_0x4f3b('0x4'));var fetch=require(_0x4f3b('0x5'));var fs=require('fs');var path=require(_0x4f3b('0x6'));var rimraf=require('rimraf');var config=require(_0x4f3b('0x7'));var attributes=require('./whatsappMessage.attributes');module[_0x4f3b('0x8')]=function(_0x115986,_0x1891c3){return _0x115986['define']('WhatsappMessage',attributes,{'tableName':_0x4f3b('0x9'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x4f3b('0xa')]},{'name':_0x4f3b('0xb'),'fields':[_0x4f3b('0xc')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1a346f,_0x31128d,_0x34ca8a){var _0x5c698d=_0x115986[_0x4f3b('0xd')];var _0x3270c7=_0x1a346f[_0x4f3b('0xe')]({'plain':!![]});if(_0x3270c7[_0x4f3b('0xf')][_0x4f3b('0x10')]()==='in'||_0x3270c7[_0x4f3b('0xf')][_0x4f3b('0x10')]()===_0x4f3b('0x11')&&!_0x3270c7['secret']&&!_['isNil'](_0x3270c7[_0x4f3b('0x12')])){_0x5c698d[_0x4f3b('0x13')][_0x4f3b('0x14')]({'where':{'id':_0x3270c7[_0x4f3b('0x15')]}})[_0x4f3b('0x16')](function(_0x318749){if(_0x318749){_0x318749[_0x4f3b('0x17')]({'lastMsgAt':_0x3270c7['createdAt'],'lastMsgDirection':_0x3270c7[_0x4f3b('0xf')]['toLowerCase']()});}})[_0x4f3b('0x18')](function(_0x237eb7){console['error'](_0x237eb7);});}if(_0x3270c7[_0x4f3b('0xf')]==='out'&&!_0x3270c7[_0x4f3b('0x19')]){var _0x135b1c;_0x5c698d[_0x4f3b('0x1a')][_0x4f3b('0x1b')]({'where':{'id':_0x3270c7[_0x4f3b('0x1c')]},'raw':!![]})['then'](function(_0x34febb){_0x135b1c=_0x34febb;if(_0x135b1c&&_0x135b1c[_0x4f3b('0x1d')]){switch(_0x135b1c[_0x4f3b('0x1d')]){case _0x4f3b('0x1e'):var _0x2ebcc7=require(_0x4f3b('0x1e'));if(_0x135b1c[_0x4f3b('0x1f')]&&_0x135b1c[_0x4f3b('0x20')]&&_0x135b1c['phone']){var _0x2753b0=new _0x2ebcc7(_0x135b1c['accountSid'],_0x135b1c[_0x4f3b('0x20')]);_0x2753b0[_0x4f3b('0x21')]['create']({'body':_0x3270c7['body'],'to':_0x4f3b('0x22')+_0x3270c7[_0x4f3b('0x23')],'from':'whatsapp:'+_0x135b1c[_0x4f3b('0x23')],'statusCallback':_0x135b1c[_0x4f3b('0x24')]+_0x4f3b('0x25')+_0x3270c7['id']+_0x4f3b('0x26')+_0x135b1c[_0x4f3b('0x27')]})['then'](function(_0x300202){if(_0x300202[_0x4f3b('0x28')]){return _0x1a346f[_0x4f3b('0x17')]({'messageId':_0x300202[_0x4f3b('0x28')]});}})[_0x4f3b('0x18')](function(_0x15c742){logger[_0x4f3b('0x29')](_0x4f3b('0x2a'),_0x4f3b('0x2b'),_0x4f3b('0x1e'),util[_0x4f3b('0x2c')](_0x15c742,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x4f3b('0x2a'),'afterCreate',_0x4f3b('0x1e'),_0x4f3b('0x2d'));}break;case'sinch':var _0x1ac016=_0x135b1c[_0x4f3b('0x1f')];var _0x22a4ce=_0x135b1c[_0x4f3b('0x20')];var _0x2b6e97=_0x135b1c[_0x4f3b('0x2e')]+'/whatsapp/v1/'+_0x1ac016+'/messages/';var _0x3f3d7f={'to':[_0x3270c7['phone']],'message':{'type':_0x4f3b('0x2f'),'text':_0x3270c7[_0x4f3b('0xc')]}};var _0xd4191b={'method':_0x4f3b('0x30'),'uri':_0x2b6e97,'headers':{'Authorization':_0x4f3b('0x31')+_0x22a4ce,'Content-Type':_0x4f3b('0x32')},'body':_0x3f3d7f,'json':!![]};rp(_0xd4191b)[_0x4f3b('0x16')](function(_0x51f911){if(_0x51f911[_0x4f3b('0x33')][0x0][_0x4f3b('0x34')]){return _0x1a346f[_0x4f3b('0x17')]({'messageId':_0x51f911[_0x4f3b('0x33')][0x0]['message_id']});}})[_0x4f3b('0x18')](function(_0x10db5f){logger[_0x4f3b('0x35')]('WhatsappMessage,\x20%s',_0x10db5f);});break;}}})[_0x4f3b('0x36')](function(){_0x34ca8a();});}else{_0x34ca8a();}}},'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x949a=['whatsapp:','then','update','sid','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','error','/whatsapp/v1/','/messages/','POST','Bearer\x20','application/json','statuses','err','WhatsappMessage,\x20%s','finally','utf8mb4_unicode_ci','lodash','api','moment','request-promise','node-fetch','path','rimraf','./whatsappMessage.attributes','exports','WhatsappMessage','whatsapp_messages','messageId','body','FULLTEXT','models','get','toLowerCase','direction','out','secret','isNil','UserId','WhatsappInteraction','findOne','catch','find','type','twilio','accountSid','authToken','phone','messages','create'];(function(_0x4d28a8,_0x160fa6){var _0x3d8ec2=function(_0x2c70a6){while(--_0x2c70a6){_0x4d28a8['push'](_0x4d28a8['shift']());}};_0x3d8ec2(++_0x160fa6);}(_0x949a,0x1d3));var _0xa949=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x949a[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0xa949('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xa949('0x1'));var moment=require(_0xa949('0x2'));var BPromise=require('bluebird');var rp=require(_0xa949('0x3'));var fetch=require(_0xa949('0x4'));var fs=require('fs');var path=require(_0xa949('0x5'));var rimraf=require(_0xa949('0x6'));var config=require('../../config/environment');var attributes=require(_0xa949('0x7'));module[_0xa949('0x8')]=function(_0x5bca3c,_0x4b0d73){return _0x5bca3c['define'](_0xa949('0x9'),attributes,{'tableName':_0xa949('0xa'),'paranoid':![],'indexes':[{'name':_0xa949('0xb'),'fields':[_0xa949('0xb')]},{'name':'fti_whatsapp_messages','fields':[_0xa949('0xc')],'type':_0xa949('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x5876f3,_0x2725be,_0x31ec68){var _0x3d37f7=_0x5bca3c[_0xa949('0xe')];var _0x150a4c=_0x5876f3[_0xa949('0xf')]({'plain':!![]});if(_0x150a4c['direction'][_0xa949('0x10')]()==='in'||_0x150a4c[_0xa949('0x11')][_0xa949('0x10')]()===_0xa949('0x12')&&!_0x150a4c[_0xa949('0x13')]&&!_[_0xa949('0x14')](_0x150a4c[_0xa949('0x15')])){_0x3d37f7[_0xa949('0x16')][_0xa949('0x17')]({'where':{'id':_0x150a4c['WhatsappInteractionId']}})['then'](function(_0x567a39){if(_0x567a39){_0x567a39['update']({'lastMsgAt':_0x150a4c['createdAt'],'lastMsgDirection':_0x150a4c[_0xa949('0x11')][_0xa949('0x10')]()});}})[_0xa949('0x18')](function(_0x3242e7){console['error'](_0x3242e7);});}if(_0x150a4c[_0xa949('0x11')]===_0xa949('0x12')&&!_0x150a4c[_0xa949('0x13')]){var _0x1934c1;_0x3d37f7['WhatsappAccount'][_0xa949('0x19')]({'where':{'id':_0x150a4c['WhatsappAccountId']},'raw':!![]})['then'](function(_0x583c91){_0x1934c1=_0x583c91;if(_0x1934c1&&_0x1934c1[_0xa949('0x1a')]){switch(_0x1934c1[_0xa949('0x1a')]){case'twilio':var _0x50e115=require(_0xa949('0x1b'));if(_0x1934c1[_0xa949('0x1c')]&&_0x1934c1[_0xa949('0x1d')]&&_0x1934c1[_0xa949('0x1e')]){var _0x271d33=new _0x50e115(_0x1934c1[_0xa949('0x1c')],_0x1934c1[_0xa949('0x1d')]);_0x271d33[_0xa949('0x1f')][_0xa949('0x20')]({'body':_0x150a4c[_0xa949('0xc')],'to':_0xa949('0x21')+_0x150a4c[_0xa949('0x1e')],'from':_0xa949('0x21')+_0x1934c1['phone'],'statusCallback':_0x1934c1['remote']+'/api/whatsapp/messages/'+_0x150a4c['id']+'/status?token='+_0x1934c1['token']})[_0xa949('0x22')](function(_0x11d2f5){if(_0x11d2f5['sid']){return _0x5876f3[_0xa949('0x23')]({'messageId':_0x11d2f5[_0xa949('0x24')]});}})[_0xa949('0x18')](function(_0x1e5379){logger['error'](_0xa949('0x25'),_0xa949('0x26'),_0xa949('0x1b'),util['inspect'](_0x1e5379,{'showHidden':![],'depth':null}));});}else{logger[_0xa949('0x27')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0xa949('0x26'),'twilio','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken');}break;case'sinch':var _0x532adc=_0x1934c1['accountSid'];var _0x17e7d7=_0x1934c1['authToken'];var _0xe596b7=_0x1934c1['baseUrl']+_0xa949('0x28')+_0x532adc+_0xa949('0x29');var _0xea158={'to':[_0x150a4c[_0xa949('0x1e')]],'message':{'type':'text','text':_0x150a4c[_0xa949('0xc')]}};var _0x5e6468={'method':_0xa949('0x2a'),'uri':_0xe596b7,'headers':{'Authorization':_0xa949('0x2b')+_0x17e7d7,'Content-Type':_0xa949('0x2c')},'body':_0xea158,'json':!![]};rp(_0x5e6468)[_0xa949('0x22')](function(_0x20d747){if(_0x20d747[_0xa949('0x2d')][0x0]['message_id']){return _0x5876f3[_0xa949('0x23')]({'messageId':_0x20d747[_0xa949('0x2d')][0x0]['message_id']});}})[_0xa949('0x18')](function(_0x53fd24){logger[_0xa949('0x2e')](_0xa949('0x2f'),_0x53fd24);});break;}}})[_0xa949('0x30')](function(){_0x31ec68();});}else{_0x31ec68();}}},'charset':'utf8mb4','collate':_0xa949('0x31')});};
\ No newline at end of file
index cb896ba..cd3a6af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x385d=['register','request','then','info','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','request\x20sent','code','error','message','WhatsappMessage,\x20%s,\x20%s','catch','CreateWhatsappMessage','WhatsappMessage','create','options','raw','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappMessage.socket'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x385d,0x9e));var _0xd385=function(_0x1d026b,_0x26dc5d){_0x1d026b=_0x1d026b-0x0;var _0x1e152a=_0x385d[_0x1d026b];return _0x1e152a;};'use strict';var _=require(_0xd385('0x0'));var util=require(_0xd385('0x1'));var moment=require(_0xd385('0x2'));var BPromise=require(_0xd385('0x3'));var rs=require(_0xd385('0x4'));var fs=require('fs');var Redis=require(_0xd385('0x5'));var db=require(_0xd385('0x6'))['db'];var utils=require(_0xd385('0x7'));var logger=require('../../config/logger')(_0xd385('0x8'));var config=require(_0xd385('0x9'));var jayson=require(_0xd385('0xa'));var client=jayson[_0xd385('0xb')][_0xd385('0xc')]({'port':0x232a});config[_0xd385('0xd')]=_[_0xd385('0xe')](config[_0xd385('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xd385('0xf'))(new Redis(config[_0xd385('0xd')]));require(_0xd385('0x10'))[_0xd385('0x11')](socket);function respondWithRpcPromise(_0xe027eb,_0x23d865,_0x486372){return new BPromise(function(_0x4f5b,_0x57f2b0){return client[_0xd385('0x12')](_0xe027eb,_0x486372)[_0xd385('0x13')](function(_0x546044){logger[_0xd385('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x23d865,'request\x20sent');logger[_0xd385('0x15')](_0xd385('0x16'),_0x23d865,_0xd385('0x17'),JSON['stringify'](_0x546044));if(_0x546044['error']){if(_0x546044['error'][_0xd385('0x18')]===0x1f4){logger[_0xd385('0x19')]('WhatsappMessage,\x20%s,\x20%s',_0x23d865,_0x546044[_0xd385('0x19')]['message']);return _0x57f2b0(_0x546044[_0xd385('0x19')][_0xd385('0x1a')]);}logger[_0xd385('0x19')]('WhatsappMessage,\x20%s,\x20%s',_0x23d865,_0x546044[_0xd385('0x19')]['message']);return _0x4f5b(_0x546044[_0xd385('0x19')][_0xd385('0x1a')]);}else{logger[_0xd385('0x14')](_0xd385('0x1b'),_0x23d865,'request\x20sent');_0x4f5b(_0x546044['result'][_0xd385('0x1a')]);}})[_0xd385('0x1c')](function(_0x400534){logger[_0xd385('0x19')](_0xd385('0x1b'),_0x23d865,_0x400534);_0x57f2b0(_0x400534);});});}exports[_0xd385('0x1d')]=function(_0x269762){var _0x1993f6=this;return new Promise(function(_0x23ebbd,_0xbdf696){return db[_0xd385('0x1e')][_0xd385('0x1f')](_0x269762['body'],{'raw':_0x269762[_0xd385('0x20')]?_0x269762['options'][_0xd385('0x21')]===undefined?!![]:![]:!![]})[_0xd385('0x13')](function(_0x5b58a9){logger[_0xd385('0x14')]('CreateWhatsappMessage',_0x269762);logger[_0xd385('0x15')](_0xd385('0x1d'),_0x269762,JSON[_0xd385('0x22')](_0x5b58a9));_0x23ebbd(_0x5b58a9);})['catch'](function(_0x310dbd){logger[_0xd385('0x19')](_0xd385('0x1d'),_0x310dbd[_0xd385('0x1a')],_0x269762);_0xbdf696(_0x1993f6[_0xd385('0x19')](0x1f4,_0x310dbd[_0xd385('0x1a')]));});});};
\ No newline at end of file
+var _0xb62c=['options','raw','CreateWhatsappMessage','stringify','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','defaults','redis','localhost','socket.io-emitter','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','WhatsappMessage,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','WhatsappMessage','create'];(function(_0x1d2b70,_0x35d59b){var _0x28c608=function(_0x233b1f){while(--_0x233b1f){_0x1d2b70['push'](_0x1d2b70['shift']());}};_0x28c608(++_0x35d59b);}(_0xb62c,0x13a));var _0xcb62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb62c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xcb62('0x0'));var moment=require(_0xcb62('0x1'));var BPromise=require(_0xcb62('0x2'));var rs=require(_0xcb62('0x3'));var fs=require('fs');var Redis=require(_0xcb62('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xcb62('0x5'));var logger=require('../../config/logger')(_0xcb62('0x6'));var config=require(_0xcb62('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xcb62('0x8')]['http']({'port':0x232a});config['redis']=_[_0xcb62('0x9')](config[_0xcb62('0xa')],{'host':_0xcb62('0xb'),'port':0x18eb});var socket=require(_0xcb62('0xc'))(new Redis(config[_0xcb62('0xa')]));require('./whatsappMessage.socket')[_0xcb62('0xd')](socket);function respondWithRpcPromise(_0x11c05f,_0x61a64a,_0x5bbbc5){return new BPromise(function(_0x3a9d9e,_0x2c35cf){return client[_0xcb62('0xe')](_0x11c05f,_0x5bbbc5)[_0xcb62('0xf')](function(_0x3914fc){logger[_0xcb62('0x10')](_0xcb62('0x11'),_0x61a64a,_0xcb62('0x12'));logger['debug'](_0xcb62('0x13'),_0x61a64a,_0xcb62('0x12'),JSON['stringify'](_0x3914fc));if(_0x3914fc[_0xcb62('0x14')]){if(_0x3914fc[_0xcb62('0x14')][_0xcb62('0x15')]===0x1f4){logger[_0xcb62('0x14')](_0xcb62('0x11'),_0x61a64a,_0x3914fc[_0xcb62('0x14')]['message']);return _0x2c35cf(_0x3914fc[_0xcb62('0x14')][_0xcb62('0x16')]);}logger[_0xcb62('0x14')](_0xcb62('0x11'),_0x61a64a,_0x3914fc[_0xcb62('0x14')][_0xcb62('0x16')]);return _0x3a9d9e(_0x3914fc[_0xcb62('0x14')]['message']);}else{logger[_0xcb62('0x10')]('WhatsappMessage,\x20%s,\x20%s',_0x61a64a,_0xcb62('0x12'));_0x3a9d9e(_0x3914fc[_0xcb62('0x17')]['message']);}})[_0xcb62('0x18')](function(_0x35ab6d){logger[_0xcb62('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x61a64a,_0x35ab6d);_0x2c35cf(_0x35ab6d);});});}exports['CreateWhatsappMessage']=function(_0x2ef38a){var _0x725aae=this;return new Promise(function(_0x3879ee,_0x3f91aa){return db[_0xcb62('0x19')][_0xcb62('0x1a')](_0x2ef38a['body'],{'raw':_0x2ef38a['options']?_0x2ef38a[_0xcb62('0x1b')][_0xcb62('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0xdc7c39){logger['info'](_0xcb62('0x1d'),_0x2ef38a);logger['debug'](_0xcb62('0x1d'),_0x2ef38a,JSON[_0xcb62('0x1e')](_0xdc7c39));_0x3879ee(_0xdc7c39);})[_0xcb62('0x18')](function(_0x5b46cf){logger[_0xcb62('0x14')](_0xcb62('0x1d'),_0x5b46cf[_0xcb62('0x16')],_0x2ef38a);_0x3f91aa(_0x725aae[_0xcb62('0x14')](0x1f4,_0x5b46cf['message']));});});};
\ No newline at end of file
index ec2db09..02644c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca6=['update','removeListener','length','whatsappMessage:','remove'];(function(_0x477e2e,_0x3fa019){var _0x27e036=function(_0x335b74){while(--_0x335b74){_0x477e2e['push'](_0x477e2e['shift']());}};_0x27e036(++_0x3fa019);}(_0xeca6,0x72));var _0x6eca=function(_0x24948f,_0x50451d){_0x24948f=_0x24948f-0x0;var _0x216686=_0xeca6[_0x24948f];return _0x216686;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=['save',_0x6eca('0x0'),_0x6eca('0x1')];function createListener(_0x23fd9d,_0x44243d){return function(_0x4d3a00){_0x44243d['emit'](_0x23fd9d,_0x4d3a00);};}function removeListener(_0x2716be,_0x3e9870){return function(){WhatsappMessageEvents[_0x6eca('0x2')](_0x2716be,_0x3e9870);};}exports['register']=function(_0x54cd23){for(var _0x20d183=0x0,_0x5abca5=events[_0x6eca('0x3')];_0x20d183<_0x5abca5;_0x20d183++){var _0x663166=events[_0x20d183];var _0x3d3601=createListener(_0x6eca('0x4')+_0x663166,_0x54cd23);WhatsappMessageEvents['on'](_0x663166,_0x3d3601);}};
\ No newline at end of file
+var _0x5e6a=['remove','emit','removeListener','whatsappMessage:','./whatsappMessage.events','save'];(function(_0x158498,_0x5b1e56){var _0x55f5a6=function(_0x2a4789){while(--_0x2a4789){_0x158498['push'](_0x158498['shift']());}};_0x55f5a6(++_0x5b1e56);}(_0x5e6a,0x15a));var _0xa5e6=function(_0x2a98fd,_0x5d13f7){_0x2a98fd=_0x2a98fd-0x0;var _0x45fce8=_0x5e6a[_0x2a98fd];return _0x45fce8;};'use strict';var WhatsappMessageEvents=require(_0xa5e6('0x0'));var events=[_0xa5e6('0x1'),_0xa5e6('0x2'),'update'];function createListener(_0x52a320,_0x1f50ed){return function(_0x4ed601){_0x1f50ed[_0xa5e6('0x3')](_0x52a320,_0x4ed601);};}function removeListener(_0x1da8b1,_0x86c6e3){return function(){WhatsappMessageEvents[_0xa5e6('0x4')](_0x1da8b1,_0x86c6e3);};}exports['register']=function(_0x377b7a){for(var _0x5197a8=0x0,_0x4d37c4=events['length'];_0x5197a8<_0x4d37c4;_0x5197a8++){var _0x27ac7b=events[_0x5197a8];var _0x3bacad=createListener(_0xa5e6('0x5')+_0x27ac7b,_0x377b7a);WhatsappMessageEvents['on'](_0x27ac7b,_0x3bacad);}};
\ No newline at end of file
index 58e2490..ec9fa24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6074=['/describe','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents','post','create','addAgents','put','destroy','delete','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','./whatsappQueue.controller','get','isAuthenticated','index'];(function(_0x121edc,_0x2befbc){var _0x23aa0d=function(_0x3f69f4){while(--_0x3f69f4){_0x121edc['push'](_0x121edc['shift']());}};_0x23aa0d(++_0x2befbc);}(_0x6074,0xd6));var _0x4607=function(_0x5783f4,_0x4a9e0a){_0x5783f4=_0x5783f4-0x0;var _0x28e380=_0x6074[_0x5783f4];return _0x28e380;};'use strict';var multer=require(_0x4607('0x0'));var util=require('util');var path=require(_0x4607('0x1'));var timeout=require(_0x4607('0x2'));var express=require(_0x4607('0x3'));var router=express['Router']();var fs_extra=require(_0x4607('0x4'));var auth=require(_0x4607('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4607('0x6'));router[_0x4607('0x7')]('/',auth[_0x4607('0x8')](),controller[_0x4607('0x9')]);router[_0x4607('0x7')](_0x4607('0xa'),auth['isAuthenticated'](),controller[_0x4607('0xb')]);router['get'](_0x4607('0xc'),auth[_0x4607('0x8')](),controller[_0x4607('0xd')]);router[_0x4607('0x7')](_0x4607('0xe'),auth[_0x4607('0x8')](),controller['getMembers']);router[_0x4607('0x7')](_0x4607('0xf'),auth[_0x4607('0x8')](),controller[_0x4607('0x10')]);router[_0x4607('0x7')](_0x4607('0x11'),auth['isAuthenticated'](),controller[_0x4607('0x12')]);router[_0x4607('0x13')]('/',auth[_0x4607('0x8')](),controller[_0x4607('0x14')]);router['post'](_0x4607('0xf'),auth[_0x4607('0x8')](),controller['addTeams']);router[_0x4607('0x13')](_0x4607('0x11'),auth['isAuthenticated'](),controller[_0x4607('0x15')]);router[_0x4607('0x16')](_0x4607('0xc'),auth[_0x4607('0x8')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x4607('0x17')]);router[_0x4607('0x18')](_0x4607('0xf'),auth[_0x4607('0x8')](),controller[_0x4607('0x19')]);router[_0x4607('0x18')](_0x4607('0x11'),auth[_0x4607('0x8')](),controller[_0x4607('0x1a')]);module[_0x4607('0x1b')]=router;
\ No newline at end of file
+var _0xf0d3=['getTeams','getAgents','post','/:id/users','addAgents','put','update','delete','destroy','removeTeams','exports','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams'];(function(_0x55999a,_0x253086){var _0x472f68=function(_0x384629){while(--_0x384629){_0x55999a['push'](_0x55999a['shift']());}};_0x472f68(++_0x253086);}(_0xf0d3,0x15b));var _0x3f0d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf0d3[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require('multer');var util=require(_0x3f0d('0x0'));var path=require(_0x3f0d('0x1'));var timeout=require(_0x3f0d('0x2'));var express=require(_0x3f0d('0x3'));var router=express[_0x3f0d('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3f0d('0x5'));var config=require(_0x3f0d('0x6'));var controller=require('./whatsappQueue.controller');router[_0x3f0d('0x7')]('/',auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x9')]);router[_0x3f0d('0x7')](_0x3f0d('0xa'),auth['isAuthenticated'](),controller[_0x3f0d('0xb')]);router[_0x3f0d('0x7')](_0x3f0d('0xc'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0xd')]);router['get'](_0x3f0d('0xe'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0xf')]);router[_0x3f0d('0x7')](_0x3f0d('0x10'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x11')]);router[_0x3f0d('0x7')]('/:id/users',auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x12')]);router[_0x3f0d('0x13')]('/',auth[_0x3f0d('0x8')](),controller['create']);router[_0x3f0d('0x13')]('/:id/teams',auth['isAuthenticated'](),controller['addTeams']);router[_0x3f0d('0x13')](_0x3f0d('0x14'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x15')]);router[_0x3f0d('0x16')](_0x3f0d('0xc'),auth['isAuthenticated'](),controller[_0x3f0d('0x17')]);router[_0x3f0d('0x18')](_0x3f0d('0xc'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x19')]);router[_0x3f0d('0x18')](_0x3f0d('0x10'),auth[_0x3f0d('0x8')](),controller[_0x3f0d('0x1a')]);router['delete'](_0x3f0d('0x14'),auth[_0x3f0d('0x8')](),controller['removeAgents']);module[_0x3f0d('0x1b')]=router;
\ No newline at end of file
index 9b9937a..9f7699a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3dc=['ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING','INTEGER'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xf3dc,0x9c));var _0xcf3d=function(_0x35ea44,_0x314ac5){_0x35ea44=_0x35ea44-0x0;var _0x432f30=_0xf3dc[_0x35ea44];return _0x432f30;};'use strict';var Sequelize=require(_0xcf3d('0x0'));module[_0xcf3d('0x1')]={'name':{'type':Sequelize[_0xcf3d('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xcf3d('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xcf3d('0x4')](_0xcf3d('0x5'),_0xcf3d('0x6'),_0xcf3d('0x7'))},'description':{'type':Sequelize[_0xcf3d('0x2')]}};
\ No newline at end of file
+var _0x1f38=['exports','STRING','name','INTEGER','ENUM','beepall','roundrobin','sequelize'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1f38,0xd7));var _0x81f3=function(_0x14a513,_0x3239f){_0x14a513=_0x14a513-0x0;var _0x47236c=_0x1f38[_0x14a513];return _0x47236c;};'use strict';var Sequelize=require(_0x81f3('0x0'));module[_0x81f3('0x1')]={'name':{'type':Sequelize[_0x81f3('0x2')],'unique':_0x81f3('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0x81f3('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x81f3('0x5')]('rrmemory',_0x81f3('0x6'),_0x81f3('0x7'))},'description':{'type':Sequelize[_0x81f3('0x2')]}};
\ No newline at end of file
index 367eb2c..d081820 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x380a=['Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','order','WhatsappQueueId','UserWhatsappQueue','User','findAndCountAll','UserId','agent','whatsappPause','updatedAt','createdAt','getTeams','Team','ids','Agents','voicePause','interface','transaction','addTeams','each','findOrCreate','forEach','emit','removeTeams','field','tq.TeamId','team_has_whatsapp_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','toString','QueryTypes','SELECT','TeamId','includes','union','compact','value','isEmpty','removeAgents','userWhatsappQueue:remove','addAgents','omit','userWhatsappQueue:save','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','./whatsappQueue.socket','register','status','json','undefined','limit','count','offset','apply','reject','save','then','get','WhatsappQueues','destroy','end','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filters','merge','VIRTUAL','filter','options','WhatsappQueue','includeAll','findAll','rows','catch','show','params','keys','include','find','create','user'];(function(_0x2b34c1,_0x837daf){var _0x2fdc6f=function(_0x4fce2b){while(--_0x4fce2b){_0x2b34c1['push'](_0x2b34c1['shift']());}};_0x2fdc6f(++_0x837daf);}(_0x380a,0xc6));var _0xa380=function(_0x1d997f,_0x259b5a){_0x1d997f=_0x1d997f-0x0;var _0x307704=_0x380a[_0x1d997f];return _0x307704;};'use strict';var emlformat=require(_0xa380('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xa380('0x1'));var jsonpatch=require(_0xa380('0x2'));var rp=require(_0xa380('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa380('0x4'));var util=require(_0xa380('0x5'));var path=require(_0xa380('0x6'));var sox=require(_0xa380('0x7'));var csv=require(_0xa380('0x8'));var ejs=require(_0xa380('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa380('0xa'));var squel=require(_0xa380('0xb'));var crypto=require(_0xa380('0xc'));var jsforce=require(_0xa380('0xd'));var deskjs=require(_0xa380('0xe'));var toCsv=require(_0xa380('0x8'));var querystring=require(_0xa380('0xf'));var Papa=require('papaparse');var Redis=require(_0xa380('0x10'));var authService=require(_0xa380('0x11'));var qs=require(_0xa380('0x12'));var as=require(_0xa380('0x13'));var hardwareService=require(_0xa380('0x14'));var logger=require('../../config/logger')(_0xa380('0x15'));var utils=require(_0xa380('0x16'));var config=require(_0xa380('0x17'));var licenseUtil=require(_0xa380('0x18'));var db=require(_0xa380('0x19'))['db'];config['redis']=_[_0xa380('0x1a')](config[_0xa380('0x1b')],{'host':_0xa380('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa380('0x1b')]));require(_0xa380('0x1d'))[_0xa380('0x1e')](socket);function respondWithStatusCode(_0x32a547,_0x286dc4){_0x286dc4=_0x286dc4||0xcc;return function(_0x355240){if(_0x355240){return _0x32a547['sendStatus'](_0x286dc4);}return _0x32a547[_0xa380('0x1f')](_0x286dc4)['end']();};}function respondWithResult(_0x4968d4,_0x2fd93c){_0x2fd93c=_0x2fd93c||0xc8;return function(_0x545cbd){if(_0x545cbd){return _0x4968d4[_0xa380('0x1f')](_0x2fd93c)[_0xa380('0x20')](_0x545cbd);}};}function respondWithFilteredResult(_0x26dfbb,_0x54eba6){return function(_0x18af40){if(_0x18af40){var _0x4ad629=typeof _0x54eba6['offset']===_0xa380('0x21')&&typeof _0x54eba6[_0xa380('0x22')]==='undefined';var _0x57494a=_0x18af40[_0xa380('0x23')];var _0xcde0e2=_0x4ad629?0x0:_0x54eba6['offset'];var _0x128238=_0x4ad629?_0x18af40[_0xa380('0x23')]:_0x54eba6[_0xa380('0x24')]+_0x54eba6[_0xa380('0x22')];var _0x177a77;if(_0x128238>=_0x57494a){_0x128238=_0x57494a;_0x177a77=0xc8;}else{_0x177a77=0xce;}_0x26dfbb[_0xa380('0x1f')](_0x177a77);return _0x26dfbb['set']('Content-Range',_0xcde0e2+'-'+_0x128238+'/'+_0x57494a)[_0xa380('0x20')](_0x18af40);}return null;};}function patchUpdates(_0xf6dc2d){return function(_0xc99ff8){try{jsonpatch[_0xa380('0x25')](_0xc99ff8,_0xf6dc2d,!![]);}catch(_0x1eeb09){return BPromise[_0xa380('0x26')](_0x1eeb09);}return _0xc99ff8[_0xa380('0x27')]();};}function saveUpdates(_0x14f718,_0x2efbf6){return function(_0x1451d0){if(_0x1451d0){return _0x1451d0['update'](_0x14f718)[_0xa380('0x28')](function(_0x1a4e6d){return _0x1a4e6d;});}return null;};}function removeEntity(_0x45a97f,_0xc02dba){return function(_0x21172b){if(_0x21172b){return _0x21172b['destroy']()[_0xa380('0x28')](function(){var _0x395670=_0x21172b[_0xa380('0x29')]({'plain':!![]});var _0x2a0eae=_0xa380('0x2a');return db['UserProfileResource'][_0xa380('0x2b')]({'where':{'type':_0x2a0eae,'resourceId':_0x395670['id']}})[_0xa380('0x28')](function(){return _0x21172b;});})['then'](function(){_0x45a97f[_0xa380('0x1f')](0xcc)[_0xa380('0x2c')]();});}};}function handleEntityNotFound(_0x273825,_0x1aa273){return function(_0x425032){if(!_0x425032){_0x273825['sendStatus'](0x194);}return _0x425032;};}function handleError(_0x26042e,_0x494664){_0x494664=_0x494664||0x1f4;return function(_0xda7784){logger[_0xa380('0x2d')](_0xda7784[_0xa380('0x2e')]);if(_0xda7784[_0xa380('0x2f')]){delete _0xda7784[_0xa380('0x2f')];}_0x26042e[_0xa380('0x1f')](_0x494664)[_0xa380('0x30')](_0xda7784);};}exports[_0xa380('0x31')]=function(_0x5d400d,_0x905779){var _0x36fba3={},_0x31c9c9={},_0x1855c9={'count':0x0,'rows':[]};var _0xa37560=_[_0xa380('0x32')](db['WhatsappQueue'][_0xa380('0x33')],function(_0x4c7994){return{'name':_0x4c7994[_0xa380('0x34')],'type':_0x4c7994['type'][_0xa380('0x35')]};});_0x31c9c9[_0xa380('0x36')]=_[_0xa380('0x32')](_0xa37560,_0xa380('0x2f'));_0x31c9c9['query']=_['keys'](_0x5d400d[_0xa380('0x37')]);_0x31c9c9['filters']=_[_0xa380('0x38')](_0x31c9c9['model'],_0x31c9c9[_0xa380('0x37')]);_0x36fba3['attributes']=_[_0xa380('0x38')](_0x31c9c9[_0xa380('0x36')],qs[_0xa380('0x39')](_0x5d400d[_0xa380('0x37')][_0xa380('0x39')]));_0x36fba3[_0xa380('0x3a')]=_0x36fba3['attributes'][_0xa380('0x3b')]?_0x36fba3[_0xa380('0x3a')]:_0x31c9c9[_0xa380('0x36')];if(!_0x5d400d[_0xa380('0x37')][_0xa380('0x3c')](_0xa380('0x3d'))){_0x36fba3[_0xa380('0x22')]=qs[_0xa380('0x22')](_0x5d400d[_0xa380('0x37')][_0xa380('0x22')]);_0x36fba3[_0xa380('0x24')]=qs[_0xa380('0x24')](_0x5d400d[_0xa380('0x37')]['offset']);}_0x36fba3['order']=qs['sort'](_0x5d400d[_0xa380('0x37')][_0xa380('0x3e')]);_0x36fba3[_0xa380('0x3f')]=qs['filters'](_[_0xa380('0x40')](_0x5d400d[_0xa380('0x37')],_0x31c9c9[_0xa380('0x41')]),_0xa37560);if(_0x5d400d[_0xa380('0x37')]['filter']){_0x36fba3[_0xa380('0x3f')]=_[_0xa380('0x42')](_0x36fba3['where'],{'$or':_[_0xa380('0x32')](_0xa37560,function(_0x4a3a2c){if(_0x4a3a2c['type']!==_0xa380('0x43')){var _0x2ea475={};_0x2ea475[_0x4a3a2c['name']]={'$like':'%'+_0x5d400d[_0xa380('0x37')][_0xa380('0x44')]+'%'};return _0x2ea475;}})});}_0x36fba3=_[_0xa380('0x42')]({},_0x36fba3,_0x5d400d[_0xa380('0x45')]);var _0x17190f={'where':_0x36fba3[_0xa380('0x3f')]};return db[_0xa380('0x46')][_0xa380('0x23')](_0x17190f)[_0xa380('0x28')](function(_0x1b7063){_0x1855c9[_0xa380('0x23')]=_0x1b7063;if(_0x5d400d[_0xa380('0x37')][_0xa380('0x47')]){_0x36fba3['include']=[{'all':!![]}];}return db[_0xa380('0x46')][_0xa380('0x48')](_0x36fba3);})['then'](function(_0xe4fdfa){_0x1855c9[_0xa380('0x49')]=_0xe4fdfa;return _0x1855c9;})[_0xa380('0x28')](respondWithFilteredResult(_0x905779,_0x36fba3))[_0xa380('0x4a')](handleError(_0x905779,null));};exports[_0xa380('0x4b')]=function(_0x3caaef,_0x4e699c){var _0x545d0f={'raw':!![],'where':{'id':_0x3caaef[_0xa380('0x4c')]['id']}},_0x2e71dd={};_0x2e71dd[_0xa380('0x36')]=_['keys'](db[_0xa380('0x46')][_0xa380('0x33')]);_0x2e71dd[_0xa380('0x37')]=_[_0xa380('0x4d')](_0x3caaef[_0xa380('0x37')]);_0x2e71dd[_0xa380('0x41')]=_[_0xa380('0x38')](_0x2e71dd['model'],_0x2e71dd[_0xa380('0x37')]);_0x545d0f[_0xa380('0x3a')]=_[_0xa380('0x38')](_0x2e71dd['model'],qs['fields'](_0x3caaef['query']['fields']));_0x545d0f[_0xa380('0x3a')]=_0x545d0f[_0xa380('0x3a')]['length']?_0x545d0f[_0xa380('0x3a')]:_0x2e71dd['model'];if(_0x3caaef[_0xa380('0x37')][_0xa380('0x47')]){_0x545d0f[_0xa380('0x4e')]=[{'all':!![]}];}_0x545d0f=_[_0xa380('0x42')]({},_0x545d0f,_0x3caaef[_0xa380('0x45')]);return db[_0xa380('0x46')][_0xa380('0x4f')](_0x545d0f)['then'](handleEntityNotFound(_0x4e699c,null))[_0xa380('0x28')](respondWithResult(_0x4e699c,null))[_0xa380('0x4a')](handleError(_0x4e699c,null));};exports[_0xa380('0x50')]=function(_0x59c4fb,_0x44a0e6){return db['WhatsappQueue']['create'](_0x59c4fb['body'],{})['then'](function(_0x4477e4){var _0x36b6da=_0x59c4fb[_0xa380('0x51')][_0xa380('0x29')]({'plain':!![]});if(!_0x36b6da)throw new Error(_0xa380('0x52'));if(_0x36b6da['role']==='user'){var _0x49d4d0=_0x4477e4[_0xa380('0x29')]({'plain':!![]});var _0x5f559e='WhatsappQueues';return db[_0xa380('0x53')][_0xa380('0x4f')]({'where':{'name':_0x5f559e,'userProfileId':_0x36b6da[_0xa380('0x54')]},'raw':!![]})[_0xa380('0x28')](function(_0xf52dc8){if(_0xf52dc8&&_0xf52dc8[_0xa380('0x55')]===0x0){return db[_0xa380('0x56')][_0xa380('0x50')]({'name':_0x49d4d0['name'],'resourceId':_0x49d4d0['id'],'type':_0xf52dc8['name'],'sectionId':_0xf52dc8['id']},{})[_0xa380('0x28')](function(){return _0x4477e4;});}else{return _0x4477e4;}})[_0xa380('0x4a')](function(_0x58e6fb){logger[_0xa380('0x2d')](_0xa380('0x57'),_0x58e6fb);throw _0x58e6fb;});}return _0x4477e4;})[_0xa380('0x28')](respondWithResult(_0x44a0e6,0xc9))[_0xa380('0x4a')](handleError(_0x44a0e6,null));};exports['update']=function(_0x5263e7,_0x5c964d){if(_0x5263e7[_0xa380('0x58')]['id']){delete _0x5263e7[_0xa380('0x58')]['id'];}return db[_0xa380('0x46')][_0xa380('0x4f')]({'where':{'id':_0x5263e7['params']['id']}})[_0xa380('0x28')](handleEntityNotFound(_0x5c964d,null))[_0xa380('0x28')](saveUpdates(_0x5263e7[_0xa380('0x58')],null))[_0xa380('0x28')](respondWithResult(_0x5c964d,null))[_0xa380('0x4a')](handleError(_0x5c964d,null));};exports['destroy']=function(_0x42823d,_0x2ac6c1){return db['WhatsappQueue'][_0xa380('0x4f')]({'where':{'id':_0x42823d[_0xa380('0x4c')]['id']}})[_0xa380('0x28')](handleEntityNotFound(_0x2ac6c1,null))['then'](removeEntity(_0x2ac6c1,null))[_0xa380('0x4a')](handleError(_0x2ac6c1,null));};exports[_0xa380('0x59')]=function(_0x8e6790,_0x264a9a){return db['WhatsappQueue']['describe']()[_0xa380('0x28')](respondWithResult(_0x264a9a,null))[_0xa380('0x4a')](handleError(_0x264a9a,null));};exports[_0xa380('0x5a')]=function(_0x298867,_0x5a8303,_0x143cb8){var _0x15558f={'raw':!![],'where':{}},_0x5a9dbf={},_0x46803f;return db[_0xa380('0x46')][_0xa380('0x5b')]({'where':{'id':_0x298867['params']['id']}})[_0xa380('0x28')](handleEntityNotFound(_0x5a8303,null))[_0xa380('0x28')](function(_0x42600d){if(_0x42600d){_0x46803f=_0x42600d[_0xa380('0x29')]({'plain':!![]});_0x5a9dbf[_0xa380('0x36')]=_['keys'](db['UserWhatsappQueue'][_0xa380('0x33')]);_0x5a9dbf[_0xa380('0x37')]=_[_0xa380('0x4d')](_0x298867[_0xa380('0x37')]);_0x5a9dbf['filters']=_['intersection'](_0x5a9dbf['model'],_0x5a9dbf[_0xa380('0x37')]);_0x15558f['attributes']=_[_0xa380('0x38')](_0x5a9dbf['model'],qs[_0xa380('0x39')](_0x298867['query'][_0xa380('0x39')]));_0x15558f[_0xa380('0x3a')]=_0x15558f[_0xa380('0x3a')][_0xa380('0x3b')]?_0x15558f['attributes']:_0x5a9dbf[_0xa380('0x36')];if(!_0x298867[_0xa380('0x37')][_0xa380('0x3c')](_0xa380('0x3d'))){_0x15558f[_0xa380('0x22')]=qs[_0xa380('0x22')](_0x298867[_0xa380('0x37')][_0xa380('0x22')]);_0x15558f['offset']=qs[_0xa380('0x24')](_0x298867[_0xa380('0x37')][_0xa380('0x24')]);}_0x15558f[_0xa380('0x5c')]=qs['sort'](_0x298867['query'][_0xa380('0x3e')]);_0x15558f[_0xa380('0x3f')]=qs[_0xa380('0x41')](_['pick'](_0x298867['query'],_0x5a9dbf['filters']));_0x15558f['where'][_0xa380('0x5d')]=_0x42600d['id'];if(_0x298867['query'][_0xa380('0x44')]){_0x15558f[_0xa380('0x3f')]=_['merge'](_0x15558f['where'],{'$or':_[_0xa380('0x32')](_0x15558f[_0xa380('0x3a')],function(_0x1ed3dd){var _0x2580b8={};_0x2580b8[_0x1ed3dd]={'$like':'%'+_0x298867['query'][_0xa380('0x44')]+'%'};return _0x2580b8;})});}_0x15558f=_['merge']({},_0x15558f,_0x298867[_0xa380('0x45')]);return db[_0xa380('0x5e')][_0xa380('0x48')](_0x15558f);}})[_0xa380('0x28')](function(_0x5e43bd){if(_0x5e43bd){return db[_0xa380('0x5f')][_0xa380('0x60')]({'where':{'id':_[_0xa380('0x32')](_0x5e43bd,_0xa380('0x61')),'role':_0xa380('0x62')},'attributes':['id',_0xa380('0x2f'),_0xa380('0x63'),_0xa380('0x64'),_0xa380('0x65')]});}})['then'](function(_0x39a59a){if(_0x39a59a){return{'count':_0x39a59a[_0xa380('0x23')],'rows':_['map'](_0x39a59a[_0xa380('0x49')],function(_0x4b7b01){return{'membername':_0x4b7b01[_0xa380('0x2f')],'UserId':_0x4b7b01['id'],'queue_name':_0x46803f[_0xa380('0x2f')],'WhatsappQueueId':_0x46803f['id'],'interface':util['format']('%s/%s','SIP',_0x4b7b01[_0xa380('0x2f')]),'penalty':0x0,'paused':_0x4b7b01[_0xa380('0x63')],'createdAt':_0x4b7b01[_0xa380('0x65')],'updatedAt':_0x4b7b01['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xa380('0x28')](respondWithFilteredResult(_0x5a8303,_0x15558f))[_0xa380('0x4a')](handleError(_0x5a8303,null));};exports[_0xa380('0x66')]=function(_0x29a939,_0xef5879,_0xf8b83a){var _0x40c3c4={};var _0x31da0c={};var _0x556cd7;var _0x2d2697;return db['WhatsappQueue']['findOne']({'where':{'id':_0x29a939[_0xa380('0x4c')]['id']}})[_0xa380('0x28')](handleEntityNotFound(_0xef5879,null))[_0xa380('0x28')](function(_0x385ff6){if(_0x385ff6){_0x556cd7=_0x385ff6;_0x31da0c[_0xa380('0x36')]=_[_0xa380('0x4d')](db[_0xa380('0x67')][_0xa380('0x33')]);_0x31da0c[_0xa380('0x37')]=_[_0xa380('0x4d')](_0x29a939['query']);_0x31da0c[_0xa380('0x41')]=_[_0xa380('0x38')](_0x31da0c[_0xa380('0x36')],_0x31da0c['query']);_0x40c3c4[_0xa380('0x3a')]=_['intersection'](_0x31da0c[_0xa380('0x36')],qs[_0xa380('0x39')](_0x29a939[_0xa380('0x37')][_0xa380('0x39')]));_0x40c3c4[_0xa380('0x3a')]=_0x40c3c4[_0xa380('0x3a')][_0xa380('0x3b')]?_0x40c3c4[_0xa380('0x3a')]:_0x31da0c[_0xa380('0x36')];_0x40c3c4[_0xa380('0x5c')]=qs[_0xa380('0x3e')](_0x29a939[_0xa380('0x37')][_0xa380('0x3e')]);_0x40c3c4[_0xa380('0x3f')]=qs['filters'](_['pick'](_0x29a939[_0xa380('0x37')],_0x31da0c[_0xa380('0x41')]));if(_0x29a939['query'][_0xa380('0x44')]){_0x40c3c4[_0xa380('0x3f')]=_[_0xa380('0x42')](_0x40c3c4[_0xa380('0x3f')],{'$or':_[_0xa380('0x32')](_0x40c3c4[_0xa380('0x3a')],function(_0x535ead){var _0x1b730c={};_0x1b730c[_0x535ead]={'$like':'%'+_0x29a939[_0xa380('0x37')]['filter']+'%'};return _0x1b730c;})});}_0x40c3c4=_[_0xa380('0x42')]({},_0x40c3c4,_0x29a939['options']);return _0x556cd7[_0xa380('0x66')](_0x40c3c4);}})['then'](function(_0x143d49){if(_0x143d49){_0x2d2697=_0x143d49[_0xa380('0x3b')];if(!_0x29a939[_0xa380('0x37')][_0xa380('0x3c')](_0xa380('0x3d'))){_0x40c3c4[_0xa380('0x22')]=qs[_0xa380('0x22')](_0x29a939['query'][_0xa380('0x22')]);_0x40c3c4[_0xa380('0x24')]=qs['offset'](_0x29a939[_0xa380('0x37')][_0xa380('0x24')]);}return _0x556cd7[_0xa380('0x66')](_0x40c3c4);}})[_0xa380('0x28')](function(_0x141da2){if(_0x141da2){return _0x141da2?{'count':_0x2d2697,'rows':_0x141da2}:null;}})['then'](respondWithResult(_0xef5879,null))[_0xa380('0x4a')](handleError(_0xef5879,null));};exports['addTeams']=function(_0x551be3,_0x2f4680,_0x20a6a7){var _0x21cb1f=_0x551be3[_0xa380('0x58')][_0xa380('0x68')];return db['Team']['findAll']({'where':{'id':_0x21cb1f},'attributes':['id'],'include':[{'model':db[_0xa380('0x5f')],'as':_0xa380('0x69'),'attributes':['id','name','online',_0xa380('0x6a'),_0xa380('0x6b')],'raw':!![]}]})['then'](function(_0x435003){if(_0x435003){var _0x50bc13=_['flatMap'](_0x435003,function(_0x59377b){var _0x4fa097=_0x59377b[_0xa380('0x29')]({'plain':!![]});return _0x4fa097[_0xa380('0x69')];});return db[_0xa380('0x46')][_0xa380('0x4f')]({'where':{'id':_0x551be3['params']['id']}})[_0xa380('0x28')](function(_0x5e9f87){return db['sequelize'][_0xa380('0x6c')](function(_0x425657){return _0x5e9f87[_0xa380('0x6d')](_0x21cb1f,{'transaction':_0x425657})[_0xa380('0x28')](function(){return BPromise[_0xa380('0x6e')](_0x50bc13,function(_0xfa9f71){return db[_0xa380('0x5e')][_0xa380('0x6f')]({'where':{'UserId':_0xfa9f71['id'],'WhatsappQueueId':_0x551be3[_0xa380('0x4c')]['id']},'transaction':_0x425657});});})[_0xa380('0x28')](function(){_0x50bc13[_0xa380('0x70')](function(_0x47027d){socket[_0xa380('0x71')]('userWhatsappQueue:save',{'UserId':_0x47027d['id'],'WhatsappQueueId':_0x5e9f87['id']});});});});});}})[_0xa380('0x28')](respondWithStatusCode(_0x2f4680,null))[_0xa380('0x4a')](handleError(_0x2f4680,null));};exports[_0xa380('0x72')]=function(_0x35e6ca,_0x55e4af,_0x93e73c){return db[_0xa380('0x67')][_0xa380('0x48')]({'where':{'id':_0x35e6ca['query'][_0xa380('0x68')]},'attributes':['id'],'include':[{'model':db[_0xa380('0x5f')],'as':_0xa380('0x69'),'attributes':['id'],'raw':!![]}]})[_0xa380('0x28')](handleEntityNotFound(_0x55e4af,null))[_0xa380('0x28')](function(_0x126f01){var _0x4d0bbc=_[_0xa380('0x32')](_0x126f01,'id');var _0x3aa3c7=[];var _0xdb58dc=[];var _0x2b50e1=squel['select']();_0x2b50e1[_0xa380('0x73')](_0xa380('0x74'))['from'](_0xa380('0x75'),'tq')[_0xa380('0x76')](_0xa380('0x77'),'ut',_0xa380('0x78'))[_0xa380('0x3f')](_0xa380('0x79'),_0x35e6ca[_0xa380('0x4c')]['id']);for(var _0x3dc7e6=0x0;_0x3dc7e6<_0x126f01[_0xa380('0x3b')];_0x3dc7e6+=0x1){let _0x285556=_0x126f01[_0x3dc7e6];for(var _0x5669be=0x0;_0x5669be<_0x285556['Agents'][_0xa380('0x3b')];_0x5669be+=0x1){let _0x311c1f=_0x285556['Agents'][_0x5669be];var _0x4e85c9=_0x2b50e1['clone']();_0x4e85c9[_0xa380('0x3f')](_0xa380('0x7a'),_0x311c1f['id']);_0xdb58dc[_0xa380('0x7b')](db[_0xa380('0x7c')]['query'](_0x4e85c9[_0xa380('0x7d')](),{'type':db[_0xa380('0x7c')][_0xa380('0x7e')][_0xa380('0x7f')]})[_0xa380('0x28')](function(_0x1a5fb4){if(_0x1a5fb4[_0xa380('0x3b')]===0x1){return _0x311c1f['id'];}else{var _0x3cfbab=_['every'](_[_0xa380('0x32')](_0x1a5fb4,_0xa380('0x80')),function(_0x1ed4b5){return _[_0xa380('0x81')](_0x4d0bbc,_0x1ed4b5);});if(_0x3cfbab){return _0x311c1f['id'];}}}));}}return BPromise['all'](_0xdb58dc)[_0xa380('0x28')](function(_0x56784e){_0x3aa3c7=_(_0x3aa3c7)[_0xa380('0x82')](_0x56784e)[_0xa380('0x83')]()[_0xa380('0x84')]();return db['WhatsappQueue'][_0xa380('0x4f')]({'where':{'id':_0x35e6ca[_0xa380('0x4c')]['id']}})[_0xa380('0x28')](function(_0x399222){return db['sequelize'][_0xa380('0x6c')](function(_0x48da79){return _0x399222[_0xa380('0x72')](_0x35e6ca['query'][_0xa380('0x68')],{'transaction':_0x48da79})[_0xa380('0x28')](function(){if(!_[_0xa380('0x85')](_0x3aa3c7)){return _0x399222[_0xa380('0x86')](_0x3aa3c7,{'transaction':_0x48da79});}})[_0xa380('0x28')](function(){_0x3aa3c7['forEach'](function(_0x44e4df){socket[_0xa380('0x71')](_0xa380('0x87'),{'UserId':_0x44e4df,'WhatsappQueueId':_0x399222['id']});});});});});});})[_0xa380('0x28')](respondWithStatusCode(_0x55e4af,null))[_0xa380('0x4a')](handleError(_0x55e4af,null));};exports[_0xa380('0x88')]=function(_0x3dafae,_0x5d319a,_0x3f82e8){return db[_0xa380('0x46')][_0xa380('0x4f')]({'where':{'id':_0x3dafae['params']['id']}})['then'](handleEntityNotFound(_0x5d319a,null))['then'](function(_0x1d5816){if(_0x1d5816){return _0x1d5816[_0xa380('0x88')](_0x3dafae[_0xa380('0x58')][_0xa380('0x68')],_[_0xa380('0x89')](_0x3dafae[_0xa380('0x58')],[_0xa380('0x68'),'id'])||{})['spread'](function(_0x7ac9a1){for(var _0x4712f9=0x0;_0x4712f9<_0x3dafae[_0xa380('0x58')][_0xa380('0x68')][_0xa380('0x3b')];_0x4712f9+=0x1){socket['emit'](_0xa380('0x8a'),{'UserId':Number(_0x3dafae[_0xa380('0x58')][_0xa380('0x68')][_0x4712f9]),'WhatsappQueueId':Number(_0x3dafae['params']['id'])});}return _0x7ac9a1;});}})['then'](respondWithResult(_0x5d319a,null))['catch'](handleError(_0x5d319a,null));};exports['removeAgents']=function(_0x1be158,_0x564344,_0x3f4538){return db[_0xa380('0x46')][_0xa380('0x4f')]({'where':{'id':_0x1be158['params']['id']}})['then'](handleEntityNotFound(_0x564344,null))[_0xa380('0x28')](function(_0x5882c0){if(_0x5882c0){return _0x5882c0[_0xa380('0x86')](_0x1be158[_0xa380('0x37')][_0xa380('0x68')])[_0xa380('0x28')](function(){if(_['isArray'](_0x1be158['query'][_0xa380('0x68')])){for(var _0x348e8d=0x0;_0x348e8d<_0x1be158[_0xa380('0x37')]['ids']['length'];_0x348e8d+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x1be158['query']['ids'][_0x348e8d]),'WhatsappQueueId':Number(_0x1be158[_0xa380('0x4c')]['id'])});}}else{socket['emit'](_0xa380('0x87'),{'UserId':Number(_0x1be158[_0xa380('0x37')][_0xa380('0x68')]),'WhatsappQueueId':Number(_0x1be158['params']['id'])});}});}})[_0xa380('0x28')](respondWithStatusCode(_0x564344,null))[_0xa380('0x4a')](handleError(_0x564344,null));};exports[_0xa380('0x8b')]=function(_0x44e54a,_0xc58b32,_0x37053e){var _0x3a7f14={};var _0x5010ce={};var _0x5ed067;var _0x286e25;return db[_0xa380('0x46')]['findOne']({'where':{'id':_0x44e54a[_0xa380('0x4c')]['id']}})['then'](handleEntityNotFound(_0xc58b32,null))[_0xa380('0x28')](function(_0x432506){if(_0x432506){_0x5ed067=_0x432506;_0x5010ce[_0xa380('0x36')]=_[_0xa380('0x4d')](db[_0xa380('0x5f')][_0xa380('0x33')]);_0x5010ce['query']=_['keys'](_0x44e54a[_0xa380('0x37')]);_0x5010ce[_0xa380('0x41')]=_[_0xa380('0x38')](_0x5010ce['model'],_0x5010ce[_0xa380('0x37')]);_0x3a7f14['attributes']=_[_0xa380('0x38')](_0x5010ce['model'],qs[_0xa380('0x39')](_0x44e54a[_0xa380('0x37')][_0xa380('0x39')]));_0x3a7f14[_0xa380('0x3a')]=_0x3a7f14[_0xa380('0x3a')][_0xa380('0x3b')]?_0x3a7f14['attributes']:_0x5010ce[_0xa380('0x36')];_0x3a7f14[_0xa380('0x5c')]=qs[_0xa380('0x3e')](_0x44e54a[_0xa380('0x37')][_0xa380('0x3e')]);_0x3a7f14['where']=qs['filters'](_[_0xa380('0x40')](_0x44e54a[_0xa380('0x37')],_0x5010ce['filters']));if(_0x44e54a['query'][_0xa380('0x44')]){_0x3a7f14['where']=_['merge'](_0x3a7f14[_0xa380('0x3f')],{'$or':_[_0xa380('0x32')](_0x3a7f14[_0xa380('0x3a')],function(_0x55cc45){var _0x3fb903={};_0x3fb903[_0x55cc45]={'$like':'%'+_0x44e54a[_0xa380('0x37')]['filter']+'%'};return _0x3fb903;})});}_0x3a7f14=_[_0xa380('0x42')]({},_0x3a7f14,_0x44e54a[_0xa380('0x45')]);return _0x5ed067[_0xa380('0x8b')](_0x3a7f14);}})[_0xa380('0x28')](function(_0x35b6eb){if(_0x35b6eb){_0x286e25=_0x35b6eb['length'];if(!_0x44e54a[_0xa380('0x37')][_0xa380('0x3c')](_0xa380('0x3d'))){_0x3a7f14[_0xa380('0x22')]=qs[_0xa380('0x22')](_0x44e54a['query'][_0xa380('0x22')]);_0x3a7f14[_0xa380('0x24')]=qs['offset'](_0x44e54a['query'][_0xa380('0x24')]);}return _0x5ed067[_0xa380('0x8b')](_0x3a7f14);}})[_0xa380('0x28')](function(_0x5f47ea){if(_0x5f47ea){return _0x5f47ea?{'count':_0x286e25,'rows':_0x5f47ea}:null;}})[_0xa380('0x28')](respondWithResult(_0xc58b32,null))[_0xa380('0x4a')](handleError(_0xc58b32,null));};
\ No newline at end of file
+var _0xd8cd=['ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappQueue.socket','register','sendStatus','status','end','offset','limit','undefined','count','set','apply','reject','update','then','get','WhatsappQueues','UserProfileResource','destroy','stack','name','send','index','WhatsappQueue','rawAttributes','fieldName','type','key','model','map','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','describe','getMembers','findOne','UserWhatsappQueue','WhatsappQueueId','UserId','agent','whatsappPause','updatedAt','format','SIP','createdAt','getTeams','Team','pick','addTeams','User','Agents','online','voicePause','flatMap','sequelize','transaction','each','findOrCreate','emit','userWhatsappQueue:save','removeTeams','ids','select','field','tq.TeamId','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','removeAgents','forEach','userWhatsappQueue:remove','addAgents','spread','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','squel','crypto','papaparse'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0xd8cd,0x82));var _0xdd8c=function(_0x4ab7eb,_0x11653f){_0x4ab7eb=_0x4ab7eb-0x0;var _0x46860d=_0xd8cd[_0x4ab7eb];return _0x46860d;};'use strict';var emlformat=require(_0xdd8c('0x0'));var rimraf=require(_0xdd8c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdd8c('0x2'));var rp=require(_0xdd8c('0x3'));var moment=require(_0xdd8c('0x4'));var BPromise=require(_0xdd8c('0x5'));var Mustache=require('mustache');var util=require(_0xdd8c('0x6'));var path=require(_0xdd8c('0x7'));var sox=require('sox');var csv=require(_0xdd8c('0x8'));var ejs=require(_0xdd8c('0x9'));var fs=require('fs');var fs_extra=require(_0xdd8c('0xa'));var _=require('lodash');var squel=require(_0xdd8c('0xb'));var crypto=require(_0xdd8c('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xdd8c('0x8'));var querystring=require('querystring');var Papa=require(_0xdd8c('0xd'));var Redis=require(_0xdd8c('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xdd8c('0xf'));var as=require(_0xdd8c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdd8c('0x11'))(_0xdd8c('0x12'));var utils=require(_0xdd8c('0x13'));var config=require(_0xdd8c('0x14'));var licenseUtil=require(_0xdd8c('0x15'));var db=require(_0xdd8c('0x16'))['db'];config[_0xdd8c('0x17')]=_[_0xdd8c('0x18')](config[_0xdd8c('0x17')],{'host':_0xdd8c('0x19'),'port':0x18eb});var socket=require(_0xdd8c('0x1a'))(new Redis(config['redis']));require(_0xdd8c('0x1b'))[_0xdd8c('0x1c')](socket);function respondWithStatusCode(_0x3e97ac,_0x176cbb){_0x176cbb=_0x176cbb||0xcc;return function(_0xc9f82d){if(_0xc9f82d){return _0x3e97ac[_0xdd8c('0x1d')](_0x176cbb);}return _0x3e97ac[_0xdd8c('0x1e')](_0x176cbb)[_0xdd8c('0x1f')]();};}function respondWithResult(_0x23ae22,_0x27725d){_0x27725d=_0x27725d||0xc8;return function(_0x136436){if(_0x136436){return _0x23ae22[_0xdd8c('0x1e')](_0x27725d)['json'](_0x136436);}};}function respondWithFilteredResult(_0x329d4b,_0x216f89){return function(_0x3031c8){if(_0x3031c8){var _0x8c85fc=typeof _0x216f89[_0xdd8c('0x20')]==='undefined'&&typeof _0x216f89[_0xdd8c('0x21')]===_0xdd8c('0x22');var _0x52f222=_0x3031c8[_0xdd8c('0x23')];var _0x2f4db3=_0x8c85fc?0x0:_0x216f89[_0xdd8c('0x20')];var _0x3c9ecb=_0x8c85fc?_0x3031c8[_0xdd8c('0x23')]:_0x216f89['offset']+_0x216f89[_0xdd8c('0x21')];var _0x5ad9bd;if(_0x3c9ecb>=_0x52f222){_0x3c9ecb=_0x52f222;_0x5ad9bd=0xc8;}else{_0x5ad9bd=0xce;}_0x329d4b[_0xdd8c('0x1e')](_0x5ad9bd);return _0x329d4b[_0xdd8c('0x24')]('Content-Range',_0x2f4db3+'-'+_0x3c9ecb+'/'+_0x52f222)['json'](_0x3031c8);}return null;};}function patchUpdates(_0x4be3dd){return function(_0x2f6f80){try{jsonpatch[_0xdd8c('0x25')](_0x2f6f80,_0x4be3dd,!![]);}catch(_0x548a24){return BPromise[_0xdd8c('0x26')](_0x548a24);}return _0x2f6f80['save']();};}function saveUpdates(_0x10eea1,_0x4464ab){return function(_0x52dbbf){if(_0x52dbbf){return _0x52dbbf[_0xdd8c('0x27')](_0x10eea1)[_0xdd8c('0x28')](function(_0xbdfa5b){return _0xbdfa5b;});}return null;};}function removeEntity(_0xca6a62,_0x56b49d){return function(_0x2610a9){if(_0x2610a9){return _0x2610a9['destroy']()[_0xdd8c('0x28')](function(){var _0x5e41d7=_0x2610a9[_0xdd8c('0x29')]({'plain':!![]});var _0x4ea8e0=_0xdd8c('0x2a');return db[_0xdd8c('0x2b')][_0xdd8c('0x2c')]({'where':{'type':_0x4ea8e0,'resourceId':_0x5e41d7['id']}})['then'](function(){return _0x2610a9;});})['then'](function(){_0xca6a62['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x590585,_0xc0d9b7){return function(_0x5e6024){if(!_0x5e6024){_0x590585[_0xdd8c('0x1d')](0x194);}return _0x5e6024;};}function handleError(_0x4b4c39,_0x1eb046){_0x1eb046=_0x1eb046||0x1f4;return function(_0x1f5c94){logger['error'](_0x1f5c94[_0xdd8c('0x2d')]);if(_0x1f5c94[_0xdd8c('0x2e')]){delete _0x1f5c94[_0xdd8c('0x2e')];}_0x4b4c39[_0xdd8c('0x1e')](_0x1eb046)[_0xdd8c('0x2f')](_0x1f5c94);};}exports[_0xdd8c('0x30')]=function(_0x3dd7eb,_0x58d4de){var _0x4140d9={},_0x39b6b3={},_0x3a2fbd={'count':0x0,'rows':[]};var _0x1b6deb=_['map'](db[_0xdd8c('0x31')][_0xdd8c('0x32')],function(_0xb48d9b){return{'name':_0xb48d9b[_0xdd8c('0x33')],'type':_0xb48d9b[_0xdd8c('0x34')][_0xdd8c('0x35')]};});_0x39b6b3[_0xdd8c('0x36')]=_[_0xdd8c('0x37')](_0x1b6deb,_0xdd8c('0x2e'));_0x39b6b3[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x3dd7eb[_0xdd8c('0x38')]);_0x39b6b3[_0xdd8c('0x3a')]=_['intersection'](_0x39b6b3[_0xdd8c('0x36')],_0x39b6b3[_0xdd8c('0x38')]);_0x4140d9[_0xdd8c('0x3b')]=_['intersection'](_0x39b6b3[_0xdd8c('0x36')],qs[_0xdd8c('0x3c')](_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x4140d9['attributes']=_0x4140d9[_0xdd8c('0x3b')]['length']?_0x4140d9[_0xdd8c('0x3b')]:_0x39b6b3[_0xdd8c('0x36')];if(!_0x3dd7eb['query'][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x4140d9['limit']=qs['limit'](_0x3dd7eb[_0xdd8c('0x38')]['limit']);_0x4140d9['offset']=qs[_0xdd8c('0x20')](_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x20')]);}_0x4140d9[_0xdd8c('0x3f')]=qs[_0xdd8c('0x40')](_0x3dd7eb['query']['sort']);_0x4140d9[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_['pick'](_0x3dd7eb[_0xdd8c('0x38')],_0x39b6b3['filters']),_0x1b6deb);if(_0x3dd7eb[_0xdd8c('0x38')][_0xdd8c('0x42')]){_0x4140d9[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x4140d9[_0xdd8c('0x41')],{'$or':_['map'](_0x1b6deb,function(_0x4caf2a){if(_0x4caf2a[_0xdd8c('0x34')]!=='VIRTUAL'){var _0x25f5b1={};_0x25f5b1[_0x4caf2a[_0xdd8c('0x2e')]]={'$like':'%'+_0x3dd7eb['query']['filter']+'%'};return _0x25f5b1;}})});}_0x4140d9=_[_0xdd8c('0x43')]({},_0x4140d9,_0x3dd7eb[_0xdd8c('0x44')]);var _0x242986={'where':_0x4140d9[_0xdd8c('0x41')]};return db['WhatsappQueue'][_0xdd8c('0x23')](_0x242986)[_0xdd8c('0x28')](function(_0x917bbd){_0x3a2fbd[_0xdd8c('0x23')]=_0x917bbd;if(_0x3dd7eb['query'][_0xdd8c('0x45')]){_0x4140d9[_0xdd8c('0x46')]=[{'all':!![]}];}return db[_0xdd8c('0x31')][_0xdd8c('0x47')](_0x4140d9);})[_0xdd8c('0x28')](function(_0x4780cc){_0x3a2fbd[_0xdd8c('0x48')]=_0x4780cc;return _0x3a2fbd;})[_0xdd8c('0x28')](respondWithFilteredResult(_0x58d4de,_0x4140d9))[_0xdd8c('0x49')](handleError(_0x58d4de,null));};exports[_0xdd8c('0x4a')]=function(_0x412985,_0x25d69c){var _0x47d494={'raw':!![],'where':{'id':_0x412985[_0xdd8c('0x4b')]['id']}},_0x48dbee={};_0x48dbee[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x31')][_0xdd8c('0x32')]);_0x48dbee[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x412985['query']);_0x48dbee[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x48dbee[_0xdd8c('0x36')],_0x48dbee['query']);_0x47d494[_0xdd8c('0x3b')]=_['intersection'](_0x48dbee['model'],qs[_0xdd8c('0x3c')](_0x412985[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x47d494['attributes']=_0x47d494[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x47d494[_0xdd8c('0x3b')]:_0x48dbee[_0xdd8c('0x36')];if(_0x412985['query']['includeAll']){_0x47d494[_0xdd8c('0x46')]=[{'all':!![]}];}_0x47d494=_['merge']({},_0x47d494,_0x412985[_0xdd8c('0x44')]);return db[_0xdd8c('0x31')]['find'](_0x47d494)[_0xdd8c('0x28')](handleEntityNotFound(_0x25d69c,null))[_0xdd8c('0x28')](respondWithResult(_0x25d69c,null))['catch'](handleError(_0x25d69c,null));};exports[_0xdd8c('0x4e')]=function(_0x389643,_0x51bde2){return db[_0xdd8c('0x31')][_0xdd8c('0x4e')](_0x389643[_0xdd8c('0x4f')],{})[_0xdd8c('0x28')](function(_0x17f3e4){var _0x4d0d76=_0x389643['user'][_0xdd8c('0x29')]({'plain':!![]});if(!_0x4d0d76)throw new Error(_0xdd8c('0x50'));if(_0x4d0d76[_0xdd8c('0x51')]===_0xdd8c('0x52')){var _0x10dd48=_0x17f3e4[_0xdd8c('0x29')]({'plain':!![]});var _0x5c0f91=_0xdd8c('0x2a');return db[_0xdd8c('0x53')]['find']({'where':{'name':_0x5c0f91,'userProfileId':_0x4d0d76[_0xdd8c('0x54')]},'raw':!![]})[_0xdd8c('0x28')](function(_0x32633f){if(_0x32633f&&_0x32633f[_0xdd8c('0x55')]===0x0){return db[_0xdd8c('0x2b')]['create']({'name':_0x10dd48['name'],'resourceId':_0x10dd48['id'],'type':_0x32633f[_0xdd8c('0x2e')],'sectionId':_0x32633f['id']},{})[_0xdd8c('0x28')](function(){return _0x17f3e4;});}else{return _0x17f3e4;}})[_0xdd8c('0x49')](function(_0x443431){logger[_0xdd8c('0x56')](_0xdd8c('0x57'),_0x443431);throw _0x443431;});}return _0x17f3e4;})[_0xdd8c('0x28')](respondWithResult(_0x51bde2,0xc9))[_0xdd8c('0x49')](handleError(_0x51bde2,null));};exports['update']=function(_0x226429,_0x2ce39c){if(_0x226429[_0xdd8c('0x4f')]['id']){delete _0x226429[_0xdd8c('0x4f')]['id'];}return db['WhatsappQueue'][_0xdd8c('0x58')]({'where':{'id':_0x226429[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x2ce39c,null))[_0xdd8c('0x28')](saveUpdates(_0x226429[_0xdd8c('0x4f')],null))[_0xdd8c('0x28')](respondWithResult(_0x2ce39c,null))[_0xdd8c('0x49')](handleError(_0x2ce39c,null));};exports[_0xdd8c('0x2c')]=function(_0x5cf550,_0x29d1ea){return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x5cf550[_0xdd8c('0x4b')]['id']}})['then'](handleEntityNotFound(_0x29d1ea,null))[_0xdd8c('0x28')](removeEntity(_0x29d1ea,null))['catch'](handleError(_0x29d1ea,null));};exports[_0xdd8c('0x59')]=function(_0x279ee4,_0x5586dd){return db[_0xdd8c('0x31')][_0xdd8c('0x59')]()[_0xdd8c('0x28')](respondWithResult(_0x5586dd,null))[_0xdd8c('0x49')](handleError(_0x5586dd,null));};exports[_0xdd8c('0x5a')]=function(_0x3deeb3,_0x4882b1,_0x1d3e68){var _0x42b8cf={'raw':!![],'where':{}},_0x2e55be={},_0x268534;return db['WhatsappQueue'][_0xdd8c('0x5b')]({'where':{'id':_0x3deeb3[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x4882b1,null))[_0xdd8c('0x28')](function(_0x43da24){if(_0x43da24){_0x268534=_0x43da24[_0xdd8c('0x29')]({'plain':!![]});_0x2e55be[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x5c')][_0xdd8c('0x32')]);_0x2e55be[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x3deeb3[_0xdd8c('0x38')]);_0x2e55be[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x2e55be[_0xdd8c('0x36')],_0x2e55be[_0xdd8c('0x38')]);_0x42b8cf[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x2e55be['model'],qs[_0xdd8c('0x3c')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x42b8cf[_0xdd8c('0x3b')]=_0x42b8cf['attributes'][_0xdd8c('0x4d')]?_0x42b8cf[_0xdd8c('0x3b')]:_0x2e55be[_0xdd8c('0x36')];if(!_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x42b8cf['limit']=qs[_0xdd8c('0x21')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x42b8cf[_0xdd8c('0x20')]=qs[_0xdd8c('0x20')](_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x20')]);}_0x42b8cf['order']=qs[_0xdd8c('0x40')](_0x3deeb3['query']['sort']);_0x42b8cf[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_['pick'](_0x3deeb3[_0xdd8c('0x38')],_0x2e55be[_0xdd8c('0x3a')]));_0x42b8cf[_0xdd8c('0x41')][_0xdd8c('0x5d')]=_0x43da24['id'];if(_0x3deeb3[_0xdd8c('0x38')][_0xdd8c('0x42')]){_0x42b8cf[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x42b8cf[_0xdd8c('0x41')],{'$or':_[_0xdd8c('0x37')](_0x42b8cf[_0xdd8c('0x3b')],function(_0x441257){var _0x1e1d03={};_0x1e1d03[_0x441257]={'$like':'%'+_0x3deeb3['query'][_0xdd8c('0x42')]+'%'};return _0x1e1d03;})});}_0x42b8cf=_['merge']({},_0x42b8cf,_0x3deeb3['options']);return db[_0xdd8c('0x5c')]['findAll'](_0x42b8cf);}})[_0xdd8c('0x28')](function(_0x29c61f){if(_0x29c61f){return db['User']['findAndCountAll']({'where':{'id':_[_0xdd8c('0x37')](_0x29c61f,_0xdd8c('0x5e')),'role':_0xdd8c('0x5f')},'attributes':['id',_0xdd8c('0x2e'),_0xdd8c('0x60'),_0xdd8c('0x61'),'createdAt']});}})[_0xdd8c('0x28')](function(_0xf3ae10){if(_0xf3ae10){return{'count':_0xf3ae10[_0xdd8c('0x23')],'rows':_[_0xdd8c('0x37')](_0xf3ae10[_0xdd8c('0x48')],function(_0x53c86a){return{'membername':_0x53c86a[_0xdd8c('0x2e')],'UserId':_0x53c86a['id'],'queue_name':_0x268534[_0xdd8c('0x2e')],'WhatsappQueueId':_0x268534['id'],'interface':util[_0xdd8c('0x62')]('%s/%s',_0xdd8c('0x63'),_0x53c86a[_0xdd8c('0x2e')]),'penalty':0x0,'paused':_0x53c86a['whatsappPause'],'createdAt':_0x53c86a[_0xdd8c('0x64')],'updatedAt':_0x53c86a[_0xdd8c('0x61')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xdd8c('0x28')](respondWithFilteredResult(_0x4882b1,_0x42b8cf))[_0xdd8c('0x49')](handleError(_0x4882b1,null));};exports[_0xdd8c('0x65')]=function(_0x5058c2,_0x39ab87,_0x4752aa){var _0x5dfec3={};var _0x28b4e2={};var _0xc23507;var _0x2daa45;return db[_0xdd8c('0x31')][_0xdd8c('0x5b')]({'where':{'id':_0x5058c2[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x39ab87,null))[_0xdd8c('0x28')](function(_0x21a851){if(_0x21a851){_0xc23507=_0x21a851;_0x28b4e2[_0xdd8c('0x36')]=_[_0xdd8c('0x39')](db[_0xdd8c('0x66')]['rawAttributes']);_0x28b4e2[_0xdd8c('0x38')]=_[_0xdd8c('0x39')](_0x5058c2[_0xdd8c('0x38')]);_0x28b4e2[_0xdd8c('0x3a')]=_['intersection'](_0x28b4e2[_0xdd8c('0x36')],_0x28b4e2[_0xdd8c('0x38')]);_0x5dfec3[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x28b4e2[_0xdd8c('0x36')],qs['fields'](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x3c')]));_0x5dfec3['attributes']=_0x5dfec3[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x5dfec3[_0xdd8c('0x3b')]:_0x28b4e2[_0xdd8c('0x36')];_0x5dfec3['order']=qs[_0xdd8c('0x40')](_0x5058c2['query'][_0xdd8c('0x40')]);_0x5dfec3[_0xdd8c('0x41')]=qs[_0xdd8c('0x3a')](_[_0xdd8c('0x67')](_0x5058c2[_0xdd8c('0x38')],_0x28b4e2[_0xdd8c('0x3a')]));if(_0x5058c2[_0xdd8c('0x38')]['filter']){_0x5dfec3['where']=_['merge'](_0x5dfec3['where'],{'$or':_[_0xdd8c('0x37')](_0x5dfec3[_0xdd8c('0x3b')],function(_0x3b64ab){var _0x723708={};_0x723708[_0x3b64ab]={'$like':'%'+_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x42')]+'%'};return _0x723708;})});}_0x5dfec3=_[_0xdd8c('0x43')]({},_0x5dfec3,_0x5058c2[_0xdd8c('0x44')]);return _0xc23507[_0xdd8c('0x65')](_0x5dfec3);}})[_0xdd8c('0x28')](function(_0x31dd1d){if(_0x31dd1d){_0x2daa45=_0x31dd1d['length'];if(!_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x5dfec3['limit']=qs[_0xdd8c('0x21')](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x5dfec3[_0xdd8c('0x20')]=qs[_0xdd8c('0x20')](_0x5058c2[_0xdd8c('0x38')][_0xdd8c('0x20')]);}return _0xc23507[_0xdd8c('0x65')](_0x5dfec3);}})[_0xdd8c('0x28')](function(_0x3e22d8){if(_0x3e22d8){return _0x3e22d8?{'count':_0x2daa45,'rows':_0x3e22d8}:null;}})['then'](respondWithResult(_0x39ab87,null))[_0xdd8c('0x49')](handleError(_0x39ab87,null));};exports[_0xdd8c('0x68')]=function(_0x783e8b,_0x5bc89a,_0x4f88d8){var _0x4f01e8=_0x783e8b['body']['ids'];return db[_0xdd8c('0x66')][_0xdd8c('0x47')]({'where':{'id':_0x4f01e8},'attributes':['id'],'include':[{'model':db[_0xdd8c('0x69')],'as':_0xdd8c('0x6a'),'attributes':['id','name',_0xdd8c('0x6b'),_0xdd8c('0x6c'),'interface'],'raw':!![]}]})[_0xdd8c('0x28')](function(_0x4deff8){if(_0x4deff8){var _0x4ed27f=_[_0xdd8c('0x6d')](_0x4deff8,function(_0x30da6d){var _0x6d5628=_0x30da6d[_0xdd8c('0x29')]({'plain':!![]});return _0x6d5628[_0xdd8c('0x6a')];});return db['WhatsappQueue'][_0xdd8c('0x58')]({'where':{'id':_0x783e8b[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](function(_0x1d1fb5){return db[_0xdd8c('0x6e')][_0xdd8c('0x6f')](function(_0x52044a){return _0x1d1fb5[_0xdd8c('0x68')](_0x4f01e8,{'transaction':_0x52044a})[_0xdd8c('0x28')](function(){return BPromise[_0xdd8c('0x70')](_0x4ed27f,function(_0x374a03){return db[_0xdd8c('0x5c')][_0xdd8c('0x71')]({'where':{'UserId':_0x374a03['id'],'WhatsappQueueId':_0x783e8b[_0xdd8c('0x4b')]['id']},'transaction':_0x52044a});});})[_0xdd8c('0x28')](function(){_0x4ed27f['forEach'](function(_0x55243d){socket[_0xdd8c('0x72')](_0xdd8c('0x73'),{'UserId':_0x55243d['id'],'WhatsappQueueId':_0x1d1fb5['id']});});});});});}})[_0xdd8c('0x28')](respondWithStatusCode(_0x5bc89a,null))[_0xdd8c('0x49')](handleError(_0x5bc89a,null));};exports[_0xdd8c('0x74')]=function(_0x511d03,_0x4a00fb,_0x3b07b7){return db[_0xdd8c('0x66')]['findAll']({'where':{'id':_0x511d03[_0xdd8c('0x38')][_0xdd8c('0x75')]},'attributes':['id'],'include':[{'model':db[_0xdd8c('0x69')],'as':_0xdd8c('0x6a'),'attributes':['id'],'raw':!![]}]})[_0xdd8c('0x28')](handleEntityNotFound(_0x4a00fb,null))['then'](function(_0x49aa31){var _0x583464=_[_0xdd8c('0x37')](_0x49aa31,'id');var _0x3178cd=[];var _0x1e25bd=[];var _0x199237=squel[_0xdd8c('0x76')]();_0x199237[_0xdd8c('0x77')](_0xdd8c('0x78'))[_0xdd8c('0x79')]('team_has_whatsapp_queues','tq')[_0xdd8c('0x7a')](_0xdd8c('0x7b'),'ut',_0xdd8c('0x7c'))[_0xdd8c('0x41')](_0xdd8c('0x7d'),_0x511d03['params']['id']);for(var _0x5d656f=0x0;_0x5d656f<_0x49aa31[_0xdd8c('0x4d')];_0x5d656f+=0x1){let _0x52f3fa=_0x49aa31[_0x5d656f];for(var _0x1fb986=0x0;_0x1fb986<_0x52f3fa[_0xdd8c('0x6a')][_0xdd8c('0x4d')];_0x1fb986+=0x1){let _0x3c1ca8=_0x52f3fa['Agents'][_0x1fb986];var _0x55ae19=_0x199237['clone']();_0x55ae19[_0xdd8c('0x41')](_0xdd8c('0x7e'),_0x3c1ca8['id']);_0x1e25bd[_0xdd8c('0x7f')](db[_0xdd8c('0x6e')][_0xdd8c('0x38')](_0x55ae19['toString'](),{'type':db['sequelize']['QueryTypes'][_0xdd8c('0x80')]})['then'](function(_0x57c197){if(_0x57c197['length']===0x1){return _0x3c1ca8['id'];}else{var _0x145e08=_[_0xdd8c('0x81')](_[_0xdd8c('0x37')](_0x57c197,_0xdd8c('0x82')),function(_0x58a6b1){return _[_0xdd8c('0x83')](_0x583464,_0x58a6b1);});if(_0x145e08){return _0x3c1ca8['id'];}}}));}}return BPromise[_0xdd8c('0x84')](_0x1e25bd)['then'](function(_0x4cee07){_0x3178cd=_(_0x3178cd)[_0xdd8c('0x85')](_0x4cee07)[_0xdd8c('0x86')]()[_0xdd8c('0x87')]();return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x511d03[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](function(_0x4355ad){return db[_0xdd8c('0x6e')][_0xdd8c('0x6f')](function(_0x1debcd){return _0x4355ad[_0xdd8c('0x74')](_0x511d03['query'][_0xdd8c('0x75')],{'transaction':_0x1debcd})[_0xdd8c('0x28')](function(){if(!_[_0xdd8c('0x88')](_0x3178cd)){return _0x4355ad[_0xdd8c('0x89')](_0x3178cd,{'transaction':_0x1debcd});}})['then'](function(){_0x3178cd[_0xdd8c('0x8a')](function(_0x34fab3){socket['emit'](_0xdd8c('0x8b'),{'UserId':_0x34fab3,'WhatsappQueueId':_0x4355ad['id']});});});});});});})[_0xdd8c('0x28')](respondWithStatusCode(_0x4a00fb,null))[_0xdd8c('0x49')](handleError(_0x4a00fb,null));};exports[_0xdd8c('0x8c')]=function(_0x61f1a,_0x542d5d,_0xb5531){return db[_0xdd8c('0x31')][_0xdd8c('0x58')]({'where':{'id':_0x61f1a[_0xdd8c('0x4b')]['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x542d5d,null))[_0xdd8c('0x28')](function(_0x352ad0){if(_0x352ad0){return _0x352ad0[_0xdd8c('0x8c')](_0x61f1a[_0xdd8c('0x4f')][_0xdd8c('0x75')],_['omit'](_0x61f1a[_0xdd8c('0x4f')],['ids','id'])||{})[_0xdd8c('0x8d')](function(_0x22a2b8){for(var _0x261729=0x0;_0x261729<_0x61f1a[_0xdd8c('0x4f')]['ids']['length'];_0x261729+=0x1){socket[_0xdd8c('0x72')](_0xdd8c('0x73'),{'UserId':Number(_0x61f1a[_0xdd8c('0x4f')]['ids'][_0x261729]),'WhatsappQueueId':Number(_0x61f1a[_0xdd8c('0x4b')]['id'])});}return _0x22a2b8;});}})['then'](respondWithResult(_0x542d5d,null))[_0xdd8c('0x49')](handleError(_0x542d5d,null));};exports[_0xdd8c('0x89')]=function(_0x26ba26,_0xad50bf,_0xf73e0b){return db[_0xdd8c('0x31')]['find']({'where':{'id':_0x26ba26['params']['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0xad50bf,null))[_0xdd8c('0x28')](function(_0x569d3c){if(_0x569d3c){return _0x569d3c['removeAgents'](_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')])[_0xdd8c('0x28')](function(){if(_[_0xdd8c('0x8e')](_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')])){for(var _0x4cc073=0x0;_0x4cc073<_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')][_0xdd8c('0x4d')];_0x4cc073+=0x1){socket[_0xdd8c('0x72')](_0xdd8c('0x8b'),{'UserId':Number(_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')][_0x4cc073]),'WhatsappQueueId':Number(_0x26ba26[_0xdd8c('0x4b')]['id'])});}}else{socket[_0xdd8c('0x72')]('userWhatsappQueue:remove',{'UserId':Number(_0x26ba26[_0xdd8c('0x38')][_0xdd8c('0x75')]),'WhatsappQueueId':Number(_0x26ba26[_0xdd8c('0x4b')]['id'])});}});}})[_0xdd8c('0x28')](respondWithStatusCode(_0xad50bf,null))[_0xdd8c('0x49')](handleError(_0xad50bf,null));};exports[_0xdd8c('0x8f')]=function(_0x178490,_0x59dd45,_0xde908e){var _0x2f340c={};var _0x3c8fbe={};var _0x449a34;var _0x52ae52;return db[_0xdd8c('0x31')][_0xdd8c('0x5b')]({'where':{'id':_0x178490['params']['id']}})[_0xdd8c('0x28')](handleEntityNotFound(_0x59dd45,null))[_0xdd8c('0x28')](function(_0x523463){if(_0x523463){_0x449a34=_0x523463;_0x3c8fbe[_0xdd8c('0x36')]=_['keys'](db[_0xdd8c('0x69')]['rawAttributes']);_0x3c8fbe['query']=_[_0xdd8c('0x39')](_0x178490['query']);_0x3c8fbe[_0xdd8c('0x3a')]=_[_0xdd8c('0x4c')](_0x3c8fbe[_0xdd8c('0x36')],_0x3c8fbe[_0xdd8c('0x38')]);_0x2f340c[_0xdd8c('0x3b')]=_[_0xdd8c('0x4c')](_0x3c8fbe[_0xdd8c('0x36')],qs['fields'](_0x178490[_0xdd8c('0x38')]['fields']));_0x2f340c[_0xdd8c('0x3b')]=_0x2f340c[_0xdd8c('0x3b')][_0xdd8c('0x4d')]?_0x2f340c[_0xdd8c('0x3b')]:_0x3c8fbe[_0xdd8c('0x36')];_0x2f340c['order']=qs['sort'](_0x178490[_0xdd8c('0x38')]['sort']);_0x2f340c['where']=qs[_0xdd8c('0x3a')](_[_0xdd8c('0x67')](_0x178490[_0xdd8c('0x38')],_0x3c8fbe[_0xdd8c('0x3a')]));if(_0x178490['query'][_0xdd8c('0x42')]){_0x2f340c[_0xdd8c('0x41')]=_[_0xdd8c('0x43')](_0x2f340c['where'],{'$or':_['map'](_0x2f340c[_0xdd8c('0x3b')],function(_0x2bb585){var _0x53768b={};_0x53768b[_0x2bb585]={'$like':'%'+_0x178490['query'][_0xdd8c('0x42')]+'%'};return _0x53768b;})});}_0x2f340c=_[_0xdd8c('0x43')]({},_0x2f340c,_0x178490[_0xdd8c('0x44')]);return _0x449a34[_0xdd8c('0x8f')](_0x2f340c);}})[_0xdd8c('0x28')](function(_0x37dc4e){if(_0x37dc4e){_0x52ae52=_0x37dc4e[_0xdd8c('0x4d')];if(!_0x178490[_0xdd8c('0x38')][_0xdd8c('0x3d')](_0xdd8c('0x3e'))){_0x2f340c[_0xdd8c('0x21')]=qs[_0xdd8c('0x21')](_0x178490[_0xdd8c('0x38')][_0xdd8c('0x21')]);_0x2f340c['offset']=qs[_0xdd8c('0x20')](_0x178490['query']['offset']);}return _0x449a34[_0xdd8c('0x8f')](_0x2f340c);}})[_0xdd8c('0x28')](function(_0x59099b){if(_0x59099b){return _0x59099b?{'count':_0x52ae52,'rows':_0x59099b}:null;}})['then'](respondWithResult(_0x59dd45,null))[_0xdd8c('0x49')](handleError(_0x59dd45,null));};
\ No newline at end of file
index e7c56bc..bb88020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9c=['exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x286949,_0x1ba55d){var _0x35a894=function(_0x51d62d){while(--_0x51d62d){_0x286949['push'](_0x286949['shift']());}};_0x35a894(++_0x1ba55d);}(_0x4d9c,0x169));var _0xc4d9=function(_0x8ad34c,_0x4d6fb5){_0x8ad34c=_0x8ad34c-0x0;var _0x27ddc5=_0x4d9c[_0x8ad34c];return _0x27ddc5;};'use strict';var EventEmitter=require(_0xc4d9('0x0'));var WhatsappQueue=require(_0xc4d9('0x1'))['db'][_0xc4d9('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xc4d9('0x3')](0x0);var events={'afterCreate':_0xc4d9('0x4'),'afterUpdate':'update','afterDestroy':_0xc4d9('0x5')};function emitEvent(_0x18e979){return function(_0x436d7a,_0x17936d,_0x110818){WhatsappQueueEvents['emit'](_0x18e979+':'+_0x436d7a['id'],_0x436d7a);WhatsappQueueEvents[_0xc4d9('0x6')](_0x18e979,_0x436d7a);_0x110818(null);};}for(var e in events){if(events[_0xc4d9('0x7')](e)){var event=events[e];WhatsappQueue[_0xc4d9('0x8')](e,emitEvent(event));}}module[_0xc4d9('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
+var _0xe8be=['setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xe8be,0x1cb));var _0xee8b=function(_0x69a451,_0x49fd37){_0x69a451=_0x69a451-0x0;var _0x3d6ef5=_0xe8be[_0x69a451];return _0x3d6ef5;};'use strict';var EventEmitter=require(_0xee8b('0x0'));var WhatsappQueue=require(_0xee8b('0x1'))['db'][_0xee8b('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xee8b('0x3')](0x0);var events={'afterCreate':_0xee8b('0x4'),'afterUpdate':_0xee8b('0x5'),'afterDestroy':_0xee8b('0x6')};function emitEvent(_0xe17d8){return function(_0xc61bd6,_0x54c0cf,_0x1875c3){WhatsappQueueEvents[_0xee8b('0x7')](_0xe17d8+':'+_0xc61bd6['id'],_0xc61bd6);WhatsappQueueEvents['emit'](_0xe17d8,_0xc61bd6);_0x1875c3(null);};}for(var e in events){if(events[_0xee8b('0x8')](e)){var event=events[e];WhatsappQueue[_0xee8b('0x9')](e,emitEvent(event));}}module[_0xee8b('0xa')]=WhatsappQueueEvents;
\ No newline at end of file
index 5b7afe6..520387a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdceb=['whatsapp_queues','lodash','util','api','request-promise','path','./whatsappQueue.attributes','exports','define','WhatsappQueue'];(function(_0x92d580,_0x4928fb){var _0x4ee344=function(_0x55aa0c){while(--_0x55aa0c){_0x92d580['push'](_0x92d580['shift']());}};_0x4ee344(++_0x4928fb);}(_0xdceb,0x187));var _0xbdce=function(_0x24b615,_0x14a5d8){_0x24b615=_0x24b615-0x0;var _0x3b8bae=_0xdceb[_0x24b615];return _0x3b8bae;};'use strict';var _=require(_0xbdce('0x0'));var util=require(_0xbdce('0x1'));var logger=require('../../config/logger')(_0xbdce('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xbdce('0x3'));var fs=require('fs');var path=require(_0xbdce('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbdce('0x5'));module[_0xbdce('0x6')]=function(_0x25fb0b,_0x171011){return _0x25fb0b[_0xbdce('0x7')](_0xbdce('0x8'),attributes,{'tableName':_0xbdce('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9a86=['path','rimraf','../../config/environment','exports','define','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x20c4e6,_0x550999){var _0x31e54a=function(_0x380748){while(--_0x380748){_0x20c4e6['push'](_0x20c4e6['shift']());}};_0x31e54a(++_0x550999);}(_0x9a86,0x1b5));var _0x69a8=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x9a86[_0x5c9307];return _0x373e29;};'use strict';var _=require(_0x69a8('0x0'));var util=require(_0x69a8('0x1'));var logger=require(_0x69a8('0x2'))(_0x69a8('0x3'));var moment=require(_0x69a8('0x4'));var BPromise=require(_0x69a8('0x5'));var rp=require(_0x69a8('0x6'));var fs=require('fs');var path=require(_0x69a8('0x7'));var rimraf=require(_0x69a8('0x8'));var config=require(_0x69a8('0x9'));var attributes=require('./whatsappQueue.attributes');module[_0x69a8('0xa')]=function(_0x91af11,_0x2d9406){return _0x91af11[_0x69a8('0xb')]('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3440eef..e072c6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36c3=['result','catch','options','raw','where','attributes','include','model','map','GetWhatsappQueue','ShowWhatsappQueue','find','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','redis','localhost','socket.io-emitter','./whatsappQueue.socket','register','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0xdcf7cb,_0x38ba96){var _0x38181d=function(_0x358975){while(--_0x358975){_0xdcf7cb['push'](_0xdcf7cb['shift']());}};_0x38181d(++_0x38ba96);}(_0x36c3,0x7e));var _0x336c=function(_0x4489f2,_0x1f9128){_0x4489f2=_0x4489f2-0x0;var _0x5cc527=_0x36c3[_0x4489f2];return _0x5cc527;};'use strict';var _=require(_0x336c('0x0'));var util=require('util');var moment=require(_0x336c('0x1'));var BPromise=require(_0x336c('0x2'));var rs=require(_0x336c('0x3'));var fs=require('fs');var Redis=require(_0x336c('0x4'));var db=require(_0x336c('0x5'))['db'];var utils=require(_0x336c('0x6'));var logger=require(_0x336c('0x7'))(_0x336c('0x8'));var config=require(_0x336c('0x9'));var jayson=require(_0x336c('0xa'));var client=jayson[_0x336c('0xb')]['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x336c('0xc')],{'host':_0x336c('0xd'),'port':0x18eb});var socket=require(_0x336c('0xe'))(new Redis(config[_0x336c('0xc')]));require(_0x336c('0xf'))[_0x336c('0x10')](socket);function respondWithRpcPromise(_0x16f621,_0x59bc8a,_0x418594){return new BPromise(function(_0x34f65e,_0x4e4b4f){return client['request'](_0x16f621,_0x418594)['then'](function(_0x191104){logger[_0x336c('0x11')](_0x336c('0x12'),_0x59bc8a,_0x336c('0x13'));logger[_0x336c('0x14')](_0x336c('0x15'),_0x59bc8a,'request\x20sent',JSON[_0x336c('0x16')](_0x191104));if(_0x191104[_0x336c('0x17')]){if(_0x191104[_0x336c('0x17')][_0x336c('0x18')]===0x1f4){logger[_0x336c('0x17')](_0x336c('0x12'),_0x59bc8a,_0x191104['error']['message']);return _0x4e4b4f(_0x191104['error'][_0x336c('0x19')]);}logger['error'](_0x336c('0x12'),_0x59bc8a,_0x191104['error'][_0x336c('0x19')]);return _0x34f65e(_0x191104[_0x336c('0x17')][_0x336c('0x19')]);}else{logger[_0x336c('0x11')]('WhatsappQueue,\x20%s,\x20%s',_0x59bc8a,_0x336c('0x13'));_0x34f65e(_0x191104[_0x336c('0x1a')]['message']);}})[_0x336c('0x1b')](function(_0x129bbb){logger[_0x336c('0x17')](_0x336c('0x12'),_0x59bc8a,_0x129bbb);_0x4e4b4f(_0x129bbb);});});}exports['GetWhatsappQueue']=function(_0x22c903){var _0x538284=this;return new Promise(function(_0x240d31,_0x5db430){return db['WhatsappQueue']['findAll']({'raw':_0x22c903['options']?_0x22c903[_0x336c('0x1c')][_0x336c('0x1d')]===undefined?!![]:![]:!![],'where':_0x22c903[_0x336c('0x1c')]?_0x22c903[_0x336c('0x1c')][_0x336c('0x1e')]||null:null,'attributes':_0x22c903['options']?_0x22c903[_0x336c('0x1c')][_0x336c('0x1f')]||null:null,'limit':_0x22c903['options']?_0x22c903['options']['limit']||null:null,'include':_0x22c903[_0x336c('0x1c')]?_0x22c903['options'][_0x336c('0x20')]?_['map'](_0x22c903[_0x336c('0x1c')][_0x336c('0x20')],function(_0x1c789f){return{'model':db[_0x1c789f[_0x336c('0x21')]],'as':_0x1c789f['as'],'attributes':_0x1c789f[_0x336c('0x1f')],'include':_0x1c789f[_0x336c('0x20')]?_['map'](_0x1c789f[_0x336c('0x20')],function(_0x5500cb){return{'model':db[_0x5500cb[_0x336c('0x21')]],'as':_0x5500cb['as'],'attributes':_0x5500cb[_0x336c('0x1f')],'include':_0x5500cb[_0x336c('0x20')]?_[_0x336c('0x22')](_0x5500cb[_0x336c('0x20')],function(_0xcedda3){return{'model':db[_0xcedda3[_0x336c('0x21')]],'as':_0xcedda3['as'],'attributes':_0xcedda3[_0x336c('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2f5965){logger[_0x336c('0x11')](_0x336c('0x23'),_0x22c903);logger[_0x336c('0x14')]('GetWhatsappQueue',_0x22c903,JSON[_0x336c('0x16')](_0x2f5965));_0x240d31(_0x2f5965);})[_0x336c('0x1b')](function(_0x1cdd36){logger['error'](_0x336c('0x23'),_0x1cdd36['message'],_0x22c903);_0x5db430(_0x538284[_0x336c('0x17')](0x1f4,_0x1cdd36['message']));});});};exports[_0x336c('0x24')]=function(_0x119fbd){var _0x3f42fe=this;return new Promise(function(_0x5af6b0,_0x27a0fe){return db['WhatsappQueue'][_0x336c('0x25')]({'raw':_0x119fbd['options']?_0x119fbd[_0x336c('0x1c')][_0x336c('0x1d')]===undefined?!![]:![]:!![],'where':_0x119fbd['options']?_0x119fbd[_0x336c('0x1c')][_0x336c('0x1e')]||null:null,'attributes':_0x119fbd[_0x336c('0x1c')]?_0x119fbd[_0x336c('0x1c')][_0x336c('0x1f')]||null:null,'include':_0x119fbd[_0x336c('0x1c')]?_0x119fbd['options'][_0x336c('0x20')]?_[_0x336c('0x22')](_0x119fbd['options'][_0x336c('0x20')],function(_0x7367ac){return{'model':db[_0x7367ac[_0x336c('0x21')]],'as':_0x7367ac['as'],'attributes':_0x7367ac['attributes'],'include':_0x7367ac[_0x336c('0x20')]?_[_0x336c('0x22')](_0x7367ac[_0x336c('0x20')],function(_0x515d4f){return{'model':db[_0x515d4f['model']],'as':_0x515d4f['as'],'attributes':_0x515d4f['attributes'],'include':_0x515d4f[_0x336c('0x20')]?_[_0x336c('0x22')](_0x515d4f[_0x336c('0x20')],function(_0x141a3e){return{'model':db[_0x141a3e['model']],'as':_0x141a3e['as'],'attributes':_0x141a3e[_0x336c('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x41569b){logger[_0x336c('0x11')](_0x336c('0x24'),_0x119fbd);logger[_0x336c('0x14')](_0x336c('0x24'),_0x119fbd,JSON['stringify'](_0x41569b));_0x5af6b0(_0x41569b);})[_0x336c('0x1b')](function(_0x5d1d72){logger[_0x336c('0x17')](_0x336c('0x24'),_0x5d1d72[_0x336c('0x19')],_0x119fbd);_0x27a0fe(_0x3f42fe[_0x336c('0x17')](0x1f4,_0x5d1d72['message']));});});};
\ No newline at end of file
+var _0xd28f=['localhost','socket.io-emitter','./whatsappQueue.socket','register','request','info','request\x20sent','debug','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappQueue,\x20%s,\x20%s','message','result','WhatsappQueue','findAll','options','raw','where','attributes','include','map','model','then','GetWhatsappQueue','ShowWhatsappQueue','find','catch','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults'];(function(_0x585d81,_0xf6d74f){var _0x1aca0d=function(_0x3782d3){while(--_0x3782d3){_0x585d81['push'](_0x585d81['shift']());}};_0x1aca0d(++_0xf6d74f);}(_0xd28f,0xef));var _0xfd28=function(_0x522efd,_0x31022d){_0x522efd=_0x522efd-0x0;var _0x5c1101=_0xd28f[_0x522efd];return _0x5c1101;};'use strict';var _=require('lodash');var util=require(_0xfd28('0x0'));var moment=require(_0xfd28('0x1'));var BPromise=require(_0xfd28('0x2'));var rs=require(_0xfd28('0x3'));var fs=require('fs');var Redis=require(_0xfd28('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfd28('0x5'))(_0xfd28('0x6'));var config=require(_0xfd28('0x7'));var jayson=require(_0xfd28('0x8'));var client=jayson[_0xfd28('0x9')][_0xfd28('0xa')]({'port':0x232a});config[_0xfd28('0xb')]=_[_0xfd28('0xc')](config[_0xfd28('0xb')],{'host':_0xfd28('0xd'),'port':0x18eb});var socket=require(_0xfd28('0xe'))(new Redis(config[_0xfd28('0xb')]));require(_0xfd28('0xf'))[_0xfd28('0x10')](socket);function respondWithRpcPromise(_0xe9357d,_0x3f1d08,_0x38ad89){return new BPromise(function(_0x497044,_0x4af76d){return client[_0xfd28('0x11')](_0xe9357d,_0x38ad89)['then'](function(_0x4497e3){logger[_0xfd28('0x12')]('WhatsappQueue,\x20%s,\x20%s',_0x3f1d08,_0xfd28('0x13'));logger[_0xfd28('0x14')](_0xfd28('0x15'),_0x3f1d08,_0xfd28('0x13'),JSON[_0xfd28('0x16')](_0x4497e3));if(_0x4497e3[_0xfd28('0x17')]){if(_0x4497e3['error'][_0xfd28('0x18')]===0x1f4){logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);return _0x4af76d(_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);}logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x4497e3[_0xfd28('0x17')][_0xfd28('0x1a')]);return _0x497044(_0x4497e3['error'][_0xfd28('0x1a')]);}else{logger['info'](_0xfd28('0x19'),_0x3f1d08,_0xfd28('0x13'));_0x497044(_0x4497e3[_0xfd28('0x1b')][_0xfd28('0x1a')]);}})['catch'](function(_0x1eea51){logger[_0xfd28('0x17')](_0xfd28('0x19'),_0x3f1d08,_0x1eea51);_0x4af76d(_0x1eea51);});});}exports['GetWhatsappQueue']=function(_0x4e00d2){var _0x1bfae4=this;return new Promise(function(_0x5564c5,_0x3cb301){return db[_0xfd28('0x1c')][_0xfd28('0x1d')]({'raw':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x1f')]===undefined?!![]:![]:!![],'where':_0x4e00d2['options']?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x20')]||null:null,'attributes':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2['options'][_0xfd28('0x21')]||null:null,'limit':_0x4e00d2['options']?_0x4e00d2[_0xfd28('0x1e')]['limit']||null:null,'include':_0x4e00d2[_0xfd28('0x1e')]?_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x4e00d2[_0xfd28('0x1e')][_0xfd28('0x22')],function(_0x5d00d6){return{'model':db[_0x5d00d6[_0xfd28('0x24')]],'as':_0x5d00d6['as'],'attributes':_0x5d00d6[_0xfd28('0x21')],'include':_0x5d00d6['include']?_[_0xfd28('0x23')](_0x5d00d6[_0xfd28('0x22')],function(_0x24f3aa){return{'model':db[_0x24f3aa[_0xfd28('0x24')]],'as':_0x24f3aa['as'],'attributes':_0x24f3aa[_0xfd28('0x21')],'include':_0x24f3aa[_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x24f3aa['include'],function(_0x17f63b){return{'model':db[_0x17f63b[_0xfd28('0x24')]],'as':_0x17f63b['as'],'attributes':_0x17f63b[_0xfd28('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfd28('0x25')](function(_0xbe5213){logger[_0xfd28('0x12')](_0xfd28('0x26'),_0x4e00d2);logger[_0xfd28('0x14')](_0xfd28('0x26'),_0x4e00d2,JSON[_0xfd28('0x16')](_0xbe5213));_0x5564c5(_0xbe5213);})['catch'](function(_0x330d7c){logger[_0xfd28('0x17')](_0xfd28('0x26'),_0x330d7c[_0xfd28('0x1a')],_0x4e00d2);_0x3cb301(_0x1bfae4[_0xfd28('0x17')](0x1f4,_0x330d7c[_0xfd28('0x1a')]));});});};exports[_0xfd28('0x27')]=function(_0x21d100){var _0x59d396=this;return new Promise(function(_0x1aba48,_0x4282cc){return db[_0xfd28('0x1c')][_0xfd28('0x28')]({'raw':_0x21d100['options']?_0x21d100[_0xfd28('0x1e')][_0xfd28('0x1f')]===undefined?!![]:![]:!![],'where':_0x21d100['options']?_0x21d100['options'][_0xfd28('0x20')]||null:null,'attributes':_0x21d100[_0xfd28('0x1e')]?_0x21d100[_0xfd28('0x1e')][_0xfd28('0x21')]||null:null,'include':_0x21d100[_0xfd28('0x1e')]?_0x21d100['options'][_0xfd28('0x22')]?_['map'](_0x21d100[_0xfd28('0x1e')]['include'],function(_0x57cb46){return{'model':db[_0x57cb46['model']],'as':_0x57cb46['as'],'attributes':_0x57cb46[_0xfd28('0x21')],'include':_0x57cb46[_0xfd28('0x22')]?_[_0xfd28('0x23')](_0x57cb46['include'],function(_0x2f406b){return{'model':db[_0x2f406b[_0xfd28('0x24')]],'as':_0x2f406b['as'],'attributes':_0x2f406b[_0xfd28('0x21')],'include':_0x2f406b['include']?_['map'](_0x2f406b[_0xfd28('0x22')],function(_0x42f971){return{'model':db[_0x42f971[_0xfd28('0x24')]],'as':_0x42f971['as'],'attributes':_0x42f971[_0xfd28('0x21')]};}):[]};}):[]};}):[]:[]})[_0xfd28('0x25')](function(_0x241106){logger['info']('ShowWhatsappQueue',_0x21d100);logger[_0xfd28('0x14')](_0xfd28('0x27'),_0x21d100,JSON[_0xfd28('0x16')](_0x241106));_0x1aba48(_0x241106);})[_0xfd28('0x29')](function(_0x5da3da){logger[_0xfd28('0x17')](_0xfd28('0x27'),_0x5da3da[_0xfd28('0x1a')],_0x21d100);_0x4282cc(_0x59d396[_0xfd28('0x17')](0x1f4,_0x5da3da[_0xfd28('0x1a')]));});});};
\ No newline at end of file
index 219e4f0..bb5f88e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38c3=['save','update','emit','register','length','whatsappQueue:','./whatsappQueue.events'];(function(_0x5908b8,_0x544699){var _0xe24a76=function(_0x2bd33f){while(--_0x2bd33f){_0x5908b8['push'](_0x5908b8['shift']());}};_0xe24a76(++_0x544699);}(_0x38c3,0x164));var _0x338c=function(_0x4804d7,_0x56ef10){_0x4804d7=_0x4804d7-0x0;var _0x532259=_0x38c3[_0x4804d7];return _0x532259;};'use strict';var WhatsappQueueEvents=require(_0x338c('0x0'));var events=[_0x338c('0x1'),'remove',_0x338c('0x2')];function createListener(_0x496aa2,_0x43d4db){return function(_0x444115){_0x43d4db[_0x338c('0x3')](_0x496aa2,_0x444115);};}function removeListener(_0x45155c,_0xe9afd6){return function(){WhatsappQueueEvents['removeListener'](_0x45155c,_0xe9afd6);};}exports[_0x338c('0x4')]=function(_0x131e71){for(var _0x21230e=0x0,_0x2e0462=events[_0x338c('0x5')];_0x21230e<_0x2e0462;_0x21230e++){var _0x2dd5a7=events[_0x21230e];var _0x5ca247=createListener(_0x338c('0x6')+_0x2dd5a7,_0x131e71);WhatsappQueueEvents['on'](_0x2dd5a7,_0x5ca247);}};
\ No newline at end of file
+var _0x8c5e=['register','length','whatsappQueue:','save','remove','update','emit','removeListener'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x8c5e,0x19b));var _0xe8c5=function(_0x572105,_0x215b90){_0x572105=_0x572105-0x0;var _0x54d0c3=_0x8c5e[_0x572105];return _0x54d0c3;};'use strict';var WhatsappQueueEvents=require('./whatsappQueue.events');var events=[_0xe8c5('0x0'),_0xe8c5('0x1'),_0xe8c5('0x2')];function createListener(_0x476d00,_0x5ce562){return function(_0x4647ff){_0x5ce562[_0xe8c5('0x3')](_0x476d00,_0x4647ff);};}function removeListener(_0x53c9dd,_0x42ea8f){return function(){WhatsappQueueEvents[_0xe8c5('0x4')](_0x53c9dd,_0x42ea8f);};}exports[_0xe8c5('0x5')]=function(_0x2b4572){for(var _0x3953f3=0x0,_0x5c8a74=events[_0xe8c5('0x6')];_0x3953f3<_0x5c8a74;_0x3953f3++){var _0x3ac4d1=events[_0x3953f3];var _0x1db566=createListener(_0xe8c5('0x7')+_0x3ac4d1,_0x2b4572);WhatsappQueueEvents['on'](_0x3ac4d1,_0x1db566);}};
\ No newline at end of file
index ed67e80..dab5ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c66=['post','create','put','/:id','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','index','/describe','isAuthenticated','describe','get','show'];(function(_0x2f6af4,_0x2875fc){var _0xa5f3be=function(_0x406555){while(--_0x406555){_0x2f6af4['push'](_0x2f6af4['shift']());}};_0xa5f3be(++_0x2875fc);}(_0x5c66,0x192));var _0x65c6=function(_0x1e5a35,_0x2dfee4){_0x1e5a35=_0x1e5a35-0x0;var _0x1fb6d3=_0x5c66[_0x1e5a35];return _0x1fb6d3;};'use strict';var multer=require(_0x65c6('0x0'));var util=require(_0x65c6('0x1'));var path=require(_0x65c6('0x2'));var timeout=require(_0x65c6('0x3'));var express=require(_0x65c6('0x4'));var router=express[_0x65c6('0x5')]();var fs_extra=require(_0x65c6('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x65c6('0x7'));var config=require(_0x65c6('0x8'));var controller=require(_0x65c6('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x65c6('0xa')]);router['get'](_0x65c6('0xb'),auth[_0x65c6('0xc')](),controller[_0x65c6('0xd')]);router[_0x65c6('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x65c6('0xf')]);router[_0x65c6('0x10')]('/',auth[_0x65c6('0xc')](),controller[_0x65c6('0x11')]);router[_0x65c6('0x12')](_0x65c6('0x13'),auth[_0x65c6('0xc')](),controller['update']);router[_0x65c6('0x14')](_0x65c6('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0x65c6('0x15')]=router;
\ No newline at end of file
+var _0x4b0f=['describe','/:id','post','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','index','/describe'];(function(_0x348fa1,_0x1f815c){var _0xe177d3=function(_0x2cd736){while(--_0x2cd736){_0x348fa1['push'](_0x348fa1['shift']());}};_0xe177d3(++_0x1f815c);}(_0x4b0f,0xa3));var _0xf4b0=function(_0x17d703,_0x2266eb){_0x17d703=_0x17d703-0x0;var _0x4fd652=_0x4b0f[_0x17d703];return _0x4fd652;};'use strict';var multer=require('multer');var util=require(_0xf4b0('0x0'));var path=require(_0xf4b0('0x1'));var timeout=require(_0xf4b0('0x2'));var express=require('express');var router=express[_0xf4b0('0x3')]();var fs_extra=require(_0xf4b0('0x4'));var auth=require(_0xf4b0('0x5'));var interaction=require(_0xf4b0('0x6'));var config=require(_0xf4b0('0x7'));var controller=require(_0xf4b0('0x8'));router[_0xf4b0('0x9')]('/',auth[_0xf4b0('0xa')](),controller[_0xf4b0('0xb')]);router[_0xf4b0('0x9')](_0xf4b0('0xc'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0xd')]);router[_0xf4b0('0x9')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller['show']);router[_0xf4b0('0xf')]('/',auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x10')]);router[_0xf4b0('0x11')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x12')]);router[_0xf4b0('0x13')](_0xf4b0('0xe'),auth[_0xf4b0('0xa')](),controller[_0xf4b0('0x14')]);module[_0xf4b0('0x15')]=router;
\ No newline at end of file
index bfc87cc..c5e70c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x4395f1,_0x147638){var _0x4991d8=function(_0x2750dc){while(--_0x2750dc){_0x4395f1['push'](_0x4395f1['shift']());}};_0x4991d8(++_0x147638);}(_0x7a54,0x106));var _0x47a5=function(_0x3fe532,_0x2f56cd){_0x3fe532=_0x3fe532-0x0;var _0x1459eb=_0x7a54[_0x3fe532];return _0x1459eb;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0xd15193,_0xc79d49){var _0x2e6722=function(_0x5ea25b){while(--_0x5ea25b){_0xd15193['push'](_0xd15193['shift']());}};_0x2e6722(++_0xc79d49);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'uniqueid':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x7995('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x7995('0x3')]},'acceptAt':{'type':Sequelize[_0x7995('0x3')]},'exitAt':{'type':Sequelize[_0x7995('0x3')]},'reason':{'type':Sequelize[_0x7995('0x2')]}};
\ No newline at end of file
index 0d654c7..7e1a9e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7af2=['desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','sort','pick','filter','merge','VIRTUAL','options','where','includeAll','include','findAll','rows','catch','params','keys','create','body','find','destroy','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x1d506a,_0x4fc4a0){var _0x5edd79=function(_0x4f7567){while(--_0x4f7567){_0x1d506a['push'](_0x1d506a['shift']());}};_0x5edd79(++_0x4fc4a0);}(_0x7af2,0x119));var _0x27af=function(_0x248c97,_0x1d9091){_0x248c97=_0x248c97-0x0;var _0x23b211=_0x7af2[_0x248c97];return _0x23b211;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x27af('0x0'));var zipdir=require(_0x27af('0x1'));var jsonpatch=require(_0x27af('0x2'));var rp=require(_0x27af('0x3'));var moment=require('moment');var BPromise=require(_0x27af('0x4'));var Mustache=require(_0x27af('0x5'));var util=require(_0x27af('0x6'));var path=require(_0x27af('0x7'));var sox=require(_0x27af('0x8'));var csv=require(_0x27af('0x9'));var ejs=require(_0x27af('0xa'));var fs=require('fs');var fs_extra=require(_0x27af('0xb'));var _=require(_0x27af('0xc'));var squel=require('squel');var crypto=require(_0x27af('0xd'));var jsforce=require(_0x27af('0xe'));var deskjs=require(_0x27af('0xf'));var toCsv=require('to-csv');var querystring=require(_0x27af('0x10'));var Papa=require(_0x27af('0x11'));var Redis=require(_0x27af('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x27af('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x27af('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x27af('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x27af('0x16'))['db'];function respondWithStatusCode(_0x49a883,_0x406340){_0x406340=_0x406340||0xcc;return function(_0x203501){if(_0x203501){return _0x49a883[_0x27af('0x17')](_0x406340);}return _0x49a883[_0x27af('0x18')](_0x406340)[_0x27af('0x19')]();};}function respondWithResult(_0x1edb50,_0x234825){_0x234825=_0x234825||0xc8;return function(_0x3da435){if(_0x3da435){return _0x1edb50[_0x27af('0x18')](_0x234825)[_0x27af('0x1a')](_0x3da435);}};}function respondWithFilteredResult(_0x30f675,_0x9c2d4b){return function(_0x2d7800){if(_0x2d7800){var _0x3102c4=typeof _0x9c2d4b[_0x27af('0x1b')]===_0x27af('0x1c')&&typeof _0x9c2d4b[_0x27af('0x1d')]===_0x27af('0x1c');var _0x58583a=_0x2d7800[_0x27af('0x1e')];var _0x31d702=_0x3102c4?0x0:_0x9c2d4b['offset'];var _0x4e6e2f=_0x3102c4?_0x2d7800[_0x27af('0x1e')]:_0x9c2d4b[_0x27af('0x1b')]+_0x9c2d4b[_0x27af('0x1d')];var _0x31573a;if(_0x4e6e2f>=_0x58583a){_0x4e6e2f=_0x58583a;_0x31573a=0xc8;}else{_0x31573a=0xce;}_0x30f675[_0x27af('0x18')](_0x31573a);return _0x30f675['set'](_0x27af('0x1f'),_0x31d702+'-'+_0x4e6e2f+'/'+_0x58583a)[_0x27af('0x1a')](_0x2d7800);}return null;};}function patchUpdates(_0xcb4b90){return function(_0x5e7c19){try{jsonpatch[_0x27af('0x20')](_0x5e7c19,_0xcb4b90,!![]);}catch(_0x2eec5f){return BPromise[_0x27af('0x21')](_0x2eec5f);}return _0x5e7c19['save']();};}function saveUpdates(_0x2dce2b,_0x2460f4){return function(_0x30720b){if(_0x30720b){return _0x30720b[_0x27af('0x22')](_0x2dce2b)[_0x27af('0x23')](function(_0x396156){return _0x396156;});}return null;};}function removeEntity(_0x43dd9e,_0x35b36d){return function(_0x2e1bb0){if(_0x2e1bb0){return _0x2e1bb0['destroy']()['then'](function(){_0x43dd9e['status'](0xcc)[_0x27af('0x19')]();});}};}function handleEntityNotFound(_0x4feaf1,_0x12625c){return function(_0x396326){if(!_0x396326){_0x4feaf1['sendStatus'](0x194);}return _0x396326;};}function handleError(_0x393190,_0x1d9341){_0x1d9341=_0x1d9341||0x1f4;return function(_0x463e36){logger[_0x27af('0x24')](_0x463e36[_0x27af('0x25')]);if(_0x463e36[_0x27af('0x26')]){delete _0x463e36[_0x27af('0x26')];}_0x393190['status'](_0x1d9341)[_0x27af('0x27')](_0x463e36);};}exports[_0x27af('0x28')]=function(_0xadd38e,_0xe009a){var _0x25d65a={},_0xa08dd9={},_0x42a5b7={'count':0x0,'rows':[]};var _0x2b26ac=_[_0x27af('0x29')](db[_0x27af('0x2a')][_0x27af('0x2b')],function(_0x4f4955){return{'name':_0x4f4955[_0x27af('0x2c')],'type':_0x4f4955[_0x27af('0x2d')][_0x27af('0x2e')]};});_0xa08dd9[_0x27af('0x2f')]=_[_0x27af('0x29')](_0x2b26ac,_0x27af('0x26'));_0xa08dd9['query']=_['keys'](_0xadd38e[_0x27af('0x30')]);_0xa08dd9[_0x27af('0x31')]=_['intersection'](_0xa08dd9[_0x27af('0x2f')],_0xa08dd9[_0x27af('0x30')]);_0x25d65a[_0x27af('0x32')]=_[_0x27af('0x33')](_0xa08dd9[_0x27af('0x2f')],qs[_0x27af('0x34')](_0xadd38e[_0x27af('0x30')][_0x27af('0x34')]));_0x25d65a[_0x27af('0x32')]=_0x25d65a[_0x27af('0x32')][_0x27af('0x35')]?_0x25d65a['attributes']:_0xa08dd9['model'];if(!_0xadd38e[_0x27af('0x30')][_0x27af('0x36')]('nolimit')){_0x25d65a[_0x27af('0x1d')]=qs[_0x27af('0x1d')](_0xadd38e['query'][_0x27af('0x1d')]);_0x25d65a[_0x27af('0x1b')]=qs[_0x27af('0x1b')](_0xadd38e[_0x27af('0x30')][_0x27af('0x1b')]);}_0x25d65a['order']=qs[_0x27af('0x37')](_0xadd38e[_0x27af('0x30')]['sort']);_0x25d65a['where']=qs[_0x27af('0x31')](_[_0x27af('0x38')](_0xadd38e[_0x27af('0x30')],_0xa08dd9[_0x27af('0x31')]),_0x2b26ac);if(_0xadd38e[_0x27af('0x30')][_0x27af('0x39')]){_0x25d65a['where']=_[_0x27af('0x3a')](_0x25d65a['where'],{'$or':_[_0x27af('0x29')](_0x2b26ac,function(_0x38a532){if(_0x38a532[_0x27af('0x2d')]!==_0x27af('0x3b')){var _0x1c6a4d={};_0x1c6a4d[_0x38a532['name']]={'$like':'%'+_0xadd38e[_0x27af('0x30')][_0x27af('0x39')]+'%'};return _0x1c6a4d;}})});}_0x25d65a=_[_0x27af('0x3a')]({},_0x25d65a,_0xadd38e[_0x27af('0x3c')]);var _0x10c1be={'where':_0x25d65a[_0x27af('0x3d')]};return db[_0x27af('0x2a')][_0x27af('0x1e')](_0x10c1be)[_0x27af('0x23')](function(_0x18f11b){_0x42a5b7[_0x27af('0x1e')]=_0x18f11b;if(_0xadd38e[_0x27af('0x30')][_0x27af('0x3e')]){_0x25d65a[_0x27af('0x3f')]=[{'all':!![]}];}return db['WhatsappQueueReport'][_0x27af('0x40')](_0x25d65a);})[_0x27af('0x23')](function(_0x44534b){_0x42a5b7[_0x27af('0x41')]=_0x44534b;return _0x42a5b7;})['then'](respondWithFilteredResult(_0xe009a,_0x25d65a))[_0x27af('0x42')](handleError(_0xe009a,null));};exports['show']=function(_0x516651,_0x2425dd){var _0x3c9c81={'raw':!![],'where':{'id':_0x516651[_0x27af('0x43')]['id']}},_0x279f99={};_0x279f99[_0x27af('0x2f')]=_[_0x27af('0x44')](db[_0x27af('0x2a')][_0x27af('0x2b')]);_0x279f99[_0x27af('0x30')]=_[_0x27af('0x44')](_0x516651[_0x27af('0x30')]);_0x279f99[_0x27af('0x31')]=_['intersection'](_0x279f99[_0x27af('0x2f')],_0x279f99[_0x27af('0x30')]);_0x3c9c81['attributes']=_['intersection'](_0x279f99[_0x27af('0x2f')],qs[_0x27af('0x34')](_0x516651[_0x27af('0x30')][_0x27af('0x34')]));_0x3c9c81[_0x27af('0x32')]=_0x3c9c81['attributes'][_0x27af('0x35')]?_0x3c9c81['attributes']:_0x279f99[_0x27af('0x2f')];if(_0x516651[_0x27af('0x30')][_0x27af('0x3e')]){_0x3c9c81[_0x27af('0x3f')]=[{'all':!![]}];}_0x3c9c81=_[_0x27af('0x3a')]({},_0x3c9c81,_0x516651[_0x27af('0x3c')]);return db[_0x27af('0x2a')]['find'](_0x3c9c81)['then'](handleEntityNotFound(_0x2425dd,null))[_0x27af('0x23')](respondWithResult(_0x2425dd,null))['catch'](handleError(_0x2425dd,null));};exports[_0x27af('0x45')]=function(_0x1b43e2,_0x226025){return db[_0x27af('0x2a')][_0x27af('0x45')](_0x1b43e2[_0x27af('0x46')],{})[_0x27af('0x23')](respondWithResult(_0x226025,0xc9))['catch'](handleError(_0x226025,null));};exports[_0x27af('0x22')]=function(_0xc7e2a8,_0x20e180){if(_0xc7e2a8[_0x27af('0x46')]['id']){delete _0xc7e2a8[_0x27af('0x46')]['id'];}return db['WhatsappQueueReport'][_0x27af('0x47')]({'where':{'id':_0xc7e2a8[_0x27af('0x43')]['id']}})[_0x27af('0x23')](handleEntityNotFound(_0x20e180,null))['then'](saveUpdates(_0xc7e2a8['body'],null))[_0x27af('0x23')](respondWithResult(_0x20e180,null))[_0x27af('0x42')](handleError(_0x20e180,null));};exports[_0x27af('0x48')]=function(_0x5be44f,_0x495794){return db[_0x27af('0x2a')]['find']({'where':{'id':_0x5be44f[_0x27af('0x43')]['id']}})[_0x27af('0x23')](handleEntityNotFound(_0x495794,null))[_0x27af('0x23')](removeEntity(_0x495794,null))[_0x27af('0x42')](handleError(_0x495794,null));};exports[_0x27af('0x49')]=function(_0xb9e23,_0x123533){return db[_0x27af('0x2a')][_0x27af('0x49')]()[_0x27af('0x23')](respondWithResult(_0x123533,null))[_0x27af('0x42')](handleError(_0x123533,null));};
\ No newline at end of file
+var _0x1eba=['name','send','WhatsappQueueReport','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','attributes','fields','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','reject','save','update','then','destroy','sendStatus','error'];(function(_0x4b7b69,_0x3ab075){var _0x173b4c=function(_0x234d5f){while(--_0x234d5f){_0x4b7b69['push'](_0x4b7b69['shift']());}};_0x173b4c(++_0x3ab075);}(_0x1eba,0x1d7));var _0xa1eb=function(_0x52085a,_0x3717ca){_0x52085a=_0x52085a-0x0;var _0x5afc1a=_0x1eba[_0x52085a];return _0x5afc1a;};'use strict';var emlformat=require(_0xa1eb('0x0'));var rimraf=require(_0xa1eb('0x1'));var zipdir=require(_0xa1eb('0x2'));var jsonpatch=require(_0xa1eb('0x3'));var rp=require(_0xa1eb('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa1eb('0x5'));var util=require(_0xa1eb('0x6'));var path=require(_0xa1eb('0x7'));var sox=require(_0xa1eb('0x8'));var csv=require(_0xa1eb('0x9'));var ejs=require(_0xa1eb('0xa'));var fs=require('fs');var fs_extra=require(_0xa1eb('0xb'));var _=require(_0xa1eb('0xc'));var squel=require(_0xa1eb('0xd'));var crypto=require(_0xa1eb('0xe'));var jsforce=require(_0xa1eb('0xf'));var deskjs=require(_0xa1eb('0x10'));var toCsv=require('to-csv');var querystring=require(_0xa1eb('0x11'));var Papa=require('papaparse');var Redis=require(_0xa1eb('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa1eb('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa1eb('0x14'));var logger=require('../../config/logger')(_0xa1eb('0x15'));var utils=require(_0xa1eb('0x16'));var config=require(_0xa1eb('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa1eb('0x18'))['db'];function respondWithStatusCode(_0x39b4a3,_0x5df92d){_0x5df92d=_0x5df92d||0xcc;return function(_0x16a623){if(_0x16a623){return _0x39b4a3['sendStatus'](_0x5df92d);}return _0x39b4a3['status'](_0x5df92d)[_0xa1eb('0x19')]();};}function respondWithResult(_0x4c7983,_0x25d058){_0x25d058=_0x25d058||0xc8;return function(_0x2178e2){if(_0x2178e2){return _0x4c7983[_0xa1eb('0x1a')](_0x25d058)[_0xa1eb('0x1b')](_0x2178e2);}};}function respondWithFilteredResult(_0x3cd675,_0x44f37d){return function(_0x1c858c){if(_0x1c858c){var _0x45d6dd=typeof _0x44f37d[_0xa1eb('0x1c')]==='undefined'&&typeof _0x44f37d[_0xa1eb('0x1d')]==='undefined';var _0x1401ef=_0x1c858c[_0xa1eb('0x1e')];var _0x33c4e3=_0x45d6dd?0x0:_0x44f37d[_0xa1eb('0x1c')];var _0x49bfaa=_0x45d6dd?_0x1c858c[_0xa1eb('0x1e')]:_0x44f37d[_0xa1eb('0x1c')]+_0x44f37d[_0xa1eb('0x1d')];var _0xcf45c1;if(_0x49bfaa>=_0x1401ef){_0x49bfaa=_0x1401ef;_0xcf45c1=0xc8;}else{_0xcf45c1=0xce;}_0x3cd675[_0xa1eb('0x1a')](_0xcf45c1);return _0x3cd675[_0xa1eb('0x1f')](_0xa1eb('0x20'),_0x33c4e3+'-'+_0x49bfaa+'/'+_0x1401ef)[_0xa1eb('0x1b')](_0x1c858c);}return null;};}function patchUpdates(_0x4fc14a){return function(_0x137e2c){try{jsonpatch['apply'](_0x137e2c,_0x4fc14a,!![]);}catch(_0x2258d1){return BPromise[_0xa1eb('0x21')](_0x2258d1);}return _0x137e2c[_0xa1eb('0x22')]();};}function saveUpdates(_0x250f99,_0x5e7a34){return function(_0x539634){if(_0x539634){return _0x539634[_0xa1eb('0x23')](_0x250f99)[_0xa1eb('0x24')](function(_0x5b0903){return _0x5b0903;});}return null;};}function removeEntity(_0x437b2a,_0x250728){return function(_0x258d3a){if(_0x258d3a){return _0x258d3a[_0xa1eb('0x25')]()[_0xa1eb('0x24')](function(){_0x437b2a[_0xa1eb('0x1a')](0xcc)[_0xa1eb('0x19')]();});}};}function handleEntityNotFound(_0x364b1c,_0xd7bb88){return function(_0x352796){if(!_0x352796){_0x364b1c[_0xa1eb('0x26')](0x194);}return _0x352796;};}function handleError(_0x208844,_0x57d089){_0x57d089=_0x57d089||0x1f4;return function(_0x7c617e){logger[_0xa1eb('0x27')](_0x7c617e['stack']);if(_0x7c617e[_0xa1eb('0x28')]){delete _0x7c617e['name'];}_0x208844[_0xa1eb('0x1a')](_0x57d089)[_0xa1eb('0x29')](_0x7c617e);};}exports['index']=function(_0x45ff0d,_0x1581ee){var _0x136835={},_0x4f64bb={},_0x12cf56={'count':0x0,'rows':[]};var _0x41b3ad=_['map'](db[_0xa1eb('0x2a')][_0xa1eb('0x2b')],function(_0x401510){return{'name':_0x401510[_0xa1eb('0x2c')],'type':_0x401510[_0xa1eb('0x2d')]['key']};});_0x4f64bb[_0xa1eb('0x2e')]=_[_0xa1eb('0x2f')](_0x41b3ad,_0xa1eb('0x28'));_0x4f64bb[_0xa1eb('0x30')]=_[_0xa1eb('0x31')](_0x45ff0d[_0xa1eb('0x30')]);_0x4f64bb[_0xa1eb('0x32')]=_[_0xa1eb('0x33')](_0x4f64bb[_0xa1eb('0x2e')],_0x4f64bb[_0xa1eb('0x30')]);_0x136835[_0xa1eb('0x34')]=_['intersection'](_0x4f64bb['model'],qs[_0xa1eb('0x35')](_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x35')]));_0x136835[_0xa1eb('0x34')]=_0x136835[_0xa1eb('0x34')]['length']?_0x136835['attributes']:_0x4f64bb[_0xa1eb('0x2e')];if(!_0x45ff0d[_0xa1eb('0x30')]['hasOwnProperty']('nolimit')){_0x136835[_0xa1eb('0x1d')]=qs['limit'](_0x45ff0d[_0xa1eb('0x30')]['limit']);_0x136835[_0xa1eb('0x1c')]=qs[_0xa1eb('0x1c')](_0x45ff0d[_0xa1eb('0x30')]['offset']);}_0x136835[_0xa1eb('0x36')]=qs[_0xa1eb('0x37')](_0x45ff0d[_0xa1eb('0x30')]['sort']);_0x136835[_0xa1eb('0x38')]=qs[_0xa1eb('0x32')](_[_0xa1eb('0x39')](_0x45ff0d[_0xa1eb('0x30')],_0x4f64bb[_0xa1eb('0x32')]),_0x41b3ad);if(_0x45ff0d['query'][_0xa1eb('0x3a')]){_0x136835[_0xa1eb('0x38')]=_[_0xa1eb('0x3b')](_0x136835[_0xa1eb('0x38')],{'$or':_[_0xa1eb('0x2f')](_0x41b3ad,function(_0x2af1d1){if(_0x2af1d1[_0xa1eb('0x2d')]!==_0xa1eb('0x3c')){var _0x53f251={};_0x53f251[_0x2af1d1[_0xa1eb('0x28')]]={'$like':'%'+_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x3a')]+'%'};return _0x53f251;}})});}_0x136835=_[_0xa1eb('0x3b')]({},_0x136835,_0x45ff0d[_0xa1eb('0x3d')]);var _0x5bf994={'where':_0x136835[_0xa1eb('0x38')]};return db[_0xa1eb('0x2a')][_0xa1eb('0x1e')](_0x5bf994)['then'](function(_0x334849){_0x12cf56[_0xa1eb('0x1e')]=_0x334849;if(_0x45ff0d[_0xa1eb('0x30')][_0xa1eb('0x3e')]){_0x136835[_0xa1eb('0x3f')]=[{'all':!![]}];}return db[_0xa1eb('0x2a')][_0xa1eb('0x40')](_0x136835);})['then'](function(_0x3c8713){_0x12cf56[_0xa1eb('0x41')]=_0x3c8713;return _0x12cf56;})['then'](respondWithFilteredResult(_0x1581ee,_0x136835))[_0xa1eb('0x42')](handleError(_0x1581ee,null));};exports['show']=function(_0x1744e4,_0x3a6f36){var _0x75f7f6={'raw':!![],'where':{'id':_0x1744e4[_0xa1eb('0x43')]['id']}},_0x361675={};_0x361675[_0xa1eb('0x2e')]=_[_0xa1eb('0x31')](db[_0xa1eb('0x2a')][_0xa1eb('0x2b')]);_0x361675[_0xa1eb('0x30')]=_[_0xa1eb('0x31')](_0x1744e4[_0xa1eb('0x30')]);_0x361675[_0xa1eb('0x32')]=_[_0xa1eb('0x33')](_0x361675[_0xa1eb('0x2e')],_0x361675[_0xa1eb('0x30')]);_0x75f7f6['attributes']=_[_0xa1eb('0x33')](_0x361675['model'],qs[_0xa1eb('0x35')](_0x1744e4[_0xa1eb('0x30')]['fields']));_0x75f7f6['attributes']=_0x75f7f6[_0xa1eb('0x34')][_0xa1eb('0x44')]?_0x75f7f6[_0xa1eb('0x34')]:_0x361675['model'];if(_0x1744e4[_0xa1eb('0x30')][_0xa1eb('0x3e')]){_0x75f7f6[_0xa1eb('0x3f')]=[{'all':!![]}];}_0x75f7f6=_[_0xa1eb('0x3b')]({},_0x75f7f6,_0x1744e4[_0xa1eb('0x3d')]);return db[_0xa1eb('0x2a')][_0xa1eb('0x45')](_0x75f7f6)[_0xa1eb('0x24')](handleEntityNotFound(_0x3a6f36,null))[_0xa1eb('0x24')](respondWithResult(_0x3a6f36,null))[_0xa1eb('0x42')](handleError(_0x3a6f36,null));};exports[_0xa1eb('0x46')]=function(_0x393f95,_0x39d3c6){return db[_0xa1eb('0x2a')]['create'](_0x393f95[_0xa1eb('0x47')],{})[_0xa1eb('0x24')](respondWithResult(_0x39d3c6,0xc9))[_0xa1eb('0x42')](handleError(_0x39d3c6,null));};exports[_0xa1eb('0x23')]=function(_0x2b0cbf,_0x12dfd4){if(_0x2b0cbf[_0xa1eb('0x47')]['id']){delete _0x2b0cbf['body']['id'];}return db[_0xa1eb('0x2a')][_0xa1eb('0x45')]({'where':{'id':_0x2b0cbf[_0xa1eb('0x43')]['id']}})[_0xa1eb('0x24')](handleEntityNotFound(_0x12dfd4,null))[_0xa1eb('0x24')](saveUpdates(_0x2b0cbf[_0xa1eb('0x47')],null))[_0xa1eb('0x24')](respondWithResult(_0x12dfd4,null))[_0xa1eb('0x42')](handleError(_0x12dfd4,null));};exports[_0xa1eb('0x25')]=function(_0x4f7c05,_0x190370){return db['WhatsappQueueReport'][_0xa1eb('0x45')]({'where':{'id':_0x4f7c05['params']['id']}})[_0xa1eb('0x24')](handleEntityNotFound(_0x190370,null))[_0xa1eb('0x24')](removeEntity(_0x190370,null))[_0xa1eb('0x42')](handleError(_0x190370,null));};exports['describe']=function(_0x3fbd6c,_0xbd9a42){return db['WhatsappQueueReport'][_0xa1eb('0x48')]()[_0xa1eb('0x24')](respondWithResult(_0xbd9a42,null))[_0xa1eb('0x42')](handleError(_0xbd9a42,null));};
\ No newline at end of file
index 4ed190b..a55758a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfae0=['../../config/logger','api','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','uniqueid','lodash'];(function(_0x3a0cbe,_0x3e8f5a){var _0x2eeecc=function(_0x541c36){while(--_0x541c36){_0x3a0cbe['push'](_0x3a0cbe['shift']());}};_0x2eeecc(++_0x3e8f5a);}(_0xfae0,0x154));var _0x0fae=function(_0x52753e,_0x1718bc){_0x52753e=_0x52753e-0x0;var _0x5b2cd5=_0xfae0[_0x52753e];return _0x5b2cd5;};'use strict';var _=require(_0x0fae('0x0'));var util=require('util');var logger=require(_0x0fae('0x1'))(_0x0fae('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x0fae('0x3'));var fs=require('fs');var path=require(_0x0fae('0x4'));var rimraf=require('rimraf');var config=require(_0x0fae('0x5'));var attributes=require(_0x0fae('0x6'));module[_0x0fae('0x7')]=function(_0x2e10bf,_0x402886){return _0x2e10bf[_0x0fae('0x8')](_0x0fae('0x9'),attributes,{'tableName':'report_whatsapp_queue','paranoid':![],'indexes':[{'name':_0x0fae('0xa'),'fields':[_0x0fae('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdd07=['api','moment','bluebird','request-promise','path','../../config/environment','./whatsappQueueReport.attributes','exports','define','report_whatsapp_queue','util'];(function(_0x5d28ca,_0x398dcc){var _0x748034=function(_0x215836){while(--_0x215836){_0x5d28ca['push'](_0x5d28ca['shift']());}};_0x748034(++_0x398dcc);}(_0xdd07,0xa4));var _0x7dd0=function(_0x18cd5b,_0x10240b){_0x18cd5b=_0x18cd5b-0x0;var _0x5eaa52=_0xdd07[_0x18cd5b];return _0x5eaa52;};'use strict';var _=require('lodash');var util=require(_0x7dd0('0x0'));var logger=require('../../config/logger')(_0x7dd0('0x1'));var moment=require(_0x7dd0('0x2'));var BPromise=require(_0x7dd0('0x3'));var rp=require(_0x7dd0('0x4'));var fs=require('fs');var path=require(_0x7dd0('0x5'));var rimraf=require('rimraf');var config=require(_0x7dd0('0x6'));var attributes=require(_0x7dd0('0x7'));module[_0x7dd0('0x8')]=function(_0x5a22df,_0x29fdf4){return _0x5a22df[_0x7dd0('0x9')]('WhatsappQueueReport',attributes,{'tableName':_0x7dd0('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index 16cc2cf..0fbbde8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a20=['http','request','then','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','WhatsappQueueReport','create','body','options','raw','CreateWhatsappQueueReport','stringify','update','where','attributes','limit','UpdateWhatsappQueueReport','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','jayson/promise','client'];(function(_0x9213a5,_0x5aeddb){var _0x31353c=function(_0x50eaa6){while(--_0x50eaa6){_0x9213a5['push'](_0x9213a5['shift']());}};_0x31353c(++_0x5aeddb);}(_0x1a20,0x14b));var _0x01a2=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1a20[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var util=require(_0x01a2('0x0'));var moment=require(_0x01a2('0x1'));var BPromise=require(_0x01a2('0x2'));var rs=require(_0x01a2('0x3'));var fs=require('fs');var Redis=require(_0x01a2('0x4'));var db=require(_0x01a2('0x5'))['db'];var utils=require(_0x01a2('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x01a2('0x7'));var client=jayson[_0x01a2('0x8')][_0x01a2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d9015,_0xa6268c,_0x2c9849){return new BPromise(function(_0x11fe2f,_0x52d216){return client[_0x01a2('0xa')](_0x4d9015,_0x2c9849)[_0x01a2('0xb')](function(_0x28b0db){logger[_0x01a2('0xc')](_0x01a2('0xd'),_0xa6268c,_0x01a2('0xe'));logger[_0x01a2('0xf')](_0x01a2('0x10'),_0xa6268c,_0x01a2('0xe'),JSON['stringify'](_0x28b0db));if(_0x28b0db[_0x01a2('0x11')]){if(_0x28b0db[_0x01a2('0x11')][_0x01a2('0x12')]===0x1f4){logger['error'](_0x01a2('0xd'),_0xa6268c,_0x28b0db['error']['message']);return _0x52d216(_0x28b0db[_0x01a2('0x11')]['message']);}logger['error'](_0x01a2('0xd'),_0xa6268c,_0x28b0db[_0x01a2('0x11')][_0x01a2('0x13')]);return _0x11fe2f(_0x28b0db[_0x01a2('0x11')][_0x01a2('0x13')]);}else{logger[_0x01a2('0xc')](_0x01a2('0xd'),_0xa6268c,'request\x20sent');_0x11fe2f(_0x28b0db[_0x01a2('0x14')][_0x01a2('0x13')]);}})[_0x01a2('0x15')](function(_0x13418a){logger['error'](_0x01a2('0xd'),_0xa6268c,_0x13418a);_0x52d216(_0x13418a);});});}exports['CreateWhatsappQueueReport']=function(_0x2feba7){var _0x1bee86=this;return new Promise(function(_0x55cd82,_0x276ed6){return db[_0x01a2('0x16')][_0x01a2('0x17')](_0x2feba7[_0x01a2('0x18')],{'raw':_0x2feba7[_0x01a2('0x19')]?_0x2feba7['options'][_0x01a2('0x1a')]===undefined?!![]:![]:!![]})[_0x01a2('0xb')](function(_0x8d99ee){logger[_0x01a2('0xc')](_0x01a2('0x1b'),_0x2feba7);logger[_0x01a2('0xf')](_0x01a2('0x1b'),_0x2feba7,JSON[_0x01a2('0x1c')](_0x8d99ee));_0x55cd82(_0x8d99ee);})['catch'](function(_0x2bcb54){logger[_0x01a2('0x11')](_0x01a2('0x1b'),_0x2bcb54[_0x01a2('0x13')],_0x2feba7);_0x276ed6(_0x1bee86[_0x01a2('0x11')](0x1f4,_0x2bcb54['message']));});});};exports['UpdateWhatsappQueueReport']=function(_0xf21449){var _0x8975b6=this;return new Promise(function(_0x3cb414,_0x1dd541){return db[_0x01a2('0x16')][_0x01a2('0x1d')](_0xf21449[_0x01a2('0x18')],{'raw':_0xf21449[_0x01a2('0x19')]?_0xf21449[_0x01a2('0x19')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xf21449[_0x01a2('0x19')]?_0xf21449['options'][_0x01a2('0x1e')]||null:null,'attributes':_0xf21449[_0x01a2('0x19')]?_0xf21449[_0x01a2('0x19')][_0x01a2('0x1f')]||null:null,'limit':_0xf21449[_0x01a2('0x19')]?_0xf21449[_0x01a2('0x19')][_0x01a2('0x20')]||null:null})[_0x01a2('0xb')](function(_0x32e420){logger[_0x01a2('0xc')](_0x01a2('0x21'),_0xf21449);logger['debug'](_0x01a2('0x21'),_0xf21449,JSON['stringify'](_0x32e420));_0x3cb414(_0x32e420);})[_0x01a2('0x15')](function(_0x3f0531){logger[_0x01a2('0x11')](_0x01a2('0x21'),_0x3f0531[_0x01a2('0x13')],_0xf21449);_0x1dd541(_0x8975b6['error'](0x1f4,_0x3f0531[_0x01a2('0x13')]));});});};
\ No newline at end of file
+var _0x813c=['bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','request','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','body','options','raw','stringify','update','where','attributes','UpdateWhatsappQueueReport','debug','lodash','util','moment'];(function(_0x255d5b,_0x4f6f35){var _0x3e141a=function(_0x249ee2){while(--_0x249ee2){_0x255d5b['push'](_0x255d5b['shift']());}};_0x3e141a(++_0x4f6f35);}(_0x813c,0xab));var _0xc813=function(_0x32880c,_0x3ded21){_0x32880c=_0x32880c-0x0;var _0xdaa55b=_0x813c[_0x32880c];return _0xdaa55b;};'use strict';var _=require(_0xc813('0x0'));var util=require(_0xc813('0x1'));var moment=require(_0xc813('0x2'));var BPromise=require(_0xc813('0x3'));var rs=require(_0xc813('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xc813('0x5'))['db'];var utils=require(_0xc813('0x6'));var logger=require(_0xc813('0x7'))('rpc');var config=require(_0xc813('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x543718,_0x1ab41d,_0xb5da87){return new BPromise(function(_0x51d2c0,_0x43b837){return client[_0xc813('0x9')](_0x543718,_0xb5da87)['then'](function(_0x2702ee){logger['info'](_0xc813('0xa'),_0x1ab41d,_0xc813('0xb'));logger['debug'](_0xc813('0xc'),_0x1ab41d,_0xc813('0xb'),JSON['stringify'](_0x2702ee));if(_0x2702ee['error']){if(_0x2702ee[_0xc813('0xd')]['code']===0x1f4){logger[_0xc813('0xd')](_0xc813('0xa'),_0x1ab41d,_0x2702ee['error']['message']);return _0x43b837(_0x2702ee[_0xc813('0xd')][_0xc813('0xe')]);}logger[_0xc813('0xd')](_0xc813('0xa'),_0x1ab41d,_0x2702ee[_0xc813('0xd')]['message']);return _0x51d2c0(_0x2702ee[_0xc813('0xd')]['message']);}else{logger[_0xc813('0xf')](_0xc813('0xa'),_0x1ab41d,_0xc813('0xb'));_0x51d2c0(_0x2702ee[_0xc813('0x10')][_0xc813('0xe')]);}})[_0xc813('0x11')](function(_0x35d7ff){logger['error'](_0xc813('0xa'),_0x1ab41d,_0x35d7ff);_0x43b837(_0x35d7ff);});});}exports[_0xc813('0x12')]=function(_0x37d370){var _0x5a0b7f=this;return new Promise(function(_0x28ffb2,_0x4a718d){return db[_0xc813('0x13')]['create'](_0x37d370[_0xc813('0x14')],{'raw':_0x37d370[_0xc813('0x15')]?_0x37d370[_0xc813('0x15')][_0xc813('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x412946){logger['info'](_0xc813('0x12'),_0x37d370);logger['debug']('CreateWhatsappQueueReport',_0x37d370,JSON[_0xc813('0x17')](_0x412946));_0x28ffb2(_0x412946);})[_0xc813('0x11')](function(_0x51eff3){logger[_0xc813('0xd')](_0xc813('0x12'),_0x51eff3[_0xc813('0xe')],_0x37d370);_0x4a718d(_0x5a0b7f[_0xc813('0xd')](0x1f4,_0x51eff3[_0xc813('0xe')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x185952){var _0x2c3e02=this;return new Promise(function(_0x1c7e2d,_0x7459d7){return db[_0xc813('0x13')][_0xc813('0x18')](_0x185952['body'],{'raw':_0x185952[_0xc813('0x15')]?_0x185952[_0xc813('0x15')][_0xc813('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x185952['options']?_0x185952['options'][_0xc813('0x19')]||null:null,'attributes':_0x185952['options']?_0x185952[_0xc813('0x15')][_0xc813('0x1a')]||null:null,'limit':_0x185952[_0xc813('0x15')]?_0x185952[_0xc813('0x15')]['limit']||null:null})['then'](function(_0x537841){logger['info'](_0xc813('0x1b'),_0x185952);logger[_0xc813('0x1c')]('UpdateWhatsappQueueReport',_0x185952,JSON[_0xc813('0x17')](_0x537841));_0x1c7e2d(_0x537841);})['catch'](function(_0x152387){logger['error'](_0xc813('0x1b'),_0x152387[_0xc813('0xe')],_0x185952);_0x7459d7(_0x2c3e02['error'](0x1f4,_0x152387[_0xc813('0xe')]));});});};
\ No newline at end of file
index 60feb6c..29b362a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe454=['destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','update','delete'];(function(_0x5703a6,_0x278b59){var _0x3823f9=function(_0x59e20a){while(--_0x59e20a){_0x5703a6['push'](_0x5703a6['shift']());}};_0x3823f9(++_0x278b59);}(_0xe454,0x66));var _0x4e45=function(_0x5d0f93,_0x14703c){_0x5d0f93=_0x5d0f93-0x0;var _0x5b4632=_0xe454[_0x5d0f93];return _0x5b4632;};'use strict';var multer=require(_0x4e45('0x0'));var util=require('util');var path=require(_0x4e45('0x1'));var timeout=require(_0x4e45('0x2'));var express=require(_0x4e45('0x3'));var router=express[_0x4e45('0x4')]();var fs_extra=require(_0x4e45('0x5'));var auth=require(_0x4e45('0x6'));var interaction=require(_0x4e45('0x7'));var config=require(_0x4e45('0x8'));var controller=require('./whatsappTransferReport.controller');router[_0x4e45('0x9')]('/',auth['isAuthenticated'](),controller[_0x4e45('0xa')]);router[_0x4e45('0x9')](_0x4e45('0xb'),auth[_0x4e45('0xc')](),controller[_0x4e45('0xd')]);router[_0x4e45('0x9')](_0x4e45('0xe'),auth[_0x4e45('0xc')](),controller[_0x4e45('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0x4e45('0xe'),auth[_0x4e45('0xc')](),controller[_0x4e45('0x10')]);router[_0x4e45('0x11')](_0x4e45('0xe'),auth[_0x4e45('0xc')](),controller[_0x4e45('0x12')]);module[_0x4e45('0x13')]=router;
\ No newline at end of file
+var _0x5cfc=['./whatsappTransferReport.controller','get','isAuthenticated','/describe','/:id','create','put','update','delete','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x5df59e,_0x4b5423){var _0x23ba82=function(_0xa9db26){while(--_0xa9db26){_0x5df59e['push'](_0x5df59e['shift']());}};_0x23ba82(++_0x4b5423);}(_0x5cfc,0xba));var _0xc5cf=function(_0x152121,_0x120c53){_0x152121=_0x152121-0x0;var _0x592a85=_0x5cfc[_0x152121];return _0x592a85;};'use strict';var multer=require(_0xc5cf('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xc5cf('0x1'));var express=require(_0xc5cf('0x2'));var router=express['Router']();var fs_extra=require(_0xc5cf('0x3'));var auth=require(_0xc5cf('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xc5cf('0x5'));var controller=require(_0xc5cf('0x6'));router[_0xc5cf('0x7')]('/',auth[_0xc5cf('0x8')](),controller['index']);router[_0xc5cf('0x7')](_0xc5cf('0x9'),auth[_0xc5cf('0x8')](),controller['describe']);router[_0xc5cf('0x7')](_0xc5cf('0xa'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xb')]);router[_0xc5cf('0xc')](_0xc5cf('0xa'),auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xd')]);router[_0xc5cf('0xe')](_0xc5cf('0xa'),auth[_0xc5cf('0x8')](),controller[_0xc5cf('0xf')]);module['exports']=router;
\ No newline at end of file
index f51469a..c604c74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x373d=['agent','DATE','sequelize','STRING','ENUM','account'];(function(_0x5d9ca3,_0x25f0d3){var _0x3c70f4=function(_0x1f3360){while(--_0x1f3360){_0x5d9ca3['push'](_0x5d9ca3['shift']());}};_0x3c70f4(++_0x25f0d3);}(_0x373d,0x1e2));var _0xd373=function(_0x46ee6b,_0x7f3e6c){_0x46ee6b=_0x46ee6b-0x0;var _0x97d54b=_0x373d[_0x46ee6b];return _0x97d54b;};'use strict';var Sequelize=require(_0xd373('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xd373('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0xd373('0x2')](_0xd373('0x3'),_0xd373('0x4'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize[_0xd373('0x5')]}};
\ No newline at end of file
+var _0xb7e2=['STRING','account','queue','sequelize'];(function(_0x29b02d,_0x3cfec9){var _0xe05de0=function(_0x33399a){while(--_0x33399a){_0x29b02d['push'](_0x29b02d['shift']());}};_0xe05de0(++_0x3cfec9);}(_0xb7e2,0x103));var _0x2b7e=function(_0x3a7519,_0x4fd98c){_0x3a7519=_0x3a7519-0x0;var _0x370fff=_0xb7e2[_0x3a7519];return _0x370fff;};'use strict';var Sequelize=require(_0x2b7e('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x2b7e('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x2b7e('0x2'),'agent',_0x2b7e('0x3')),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index 07c4182..40de7e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0554=['offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','end','sendStatus','error','stack','name','send','map','WhatsappTransferReport','type','key','model','query','keys','intersection','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','filter','merge','options','include','findAll','catch','rawAttributes','length','create','body','find','params','describe','eml-format','rimraf','fast-json-patch','moment','bluebird','mustache','util','to-csv','ejs','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','status','json'];(function(_0x46369a,_0x141daa){var _0x59e91d=function(_0x141fa3){while(--_0x141fa3){_0x46369a['push'](_0x46369a['shift']());}};_0x59e91d(++_0x141daa);}(_0x0554,0x176));var _0x4055=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x0554[_0x6c993a];return _0x27f547;};'use strict';var emlformat=require(_0x4055('0x0'));var rimraf=require(_0x4055('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4055('0x2'));var rp=require('request-promise');var moment=require(_0x4055('0x3'));var BPromise=require(_0x4055('0x4'));var Mustache=require(_0x4055('0x5'));var util=require(_0x4055('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x4055('0x7'));var ejs=require(_0x4055('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4055('0x9'));var crypto=require(_0x4055('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4055('0xb'));var toCsv=require(_0x4055('0x7'));var querystring=require('querystring');var Papa=require(_0x4055('0xc'));var Redis=require(_0x4055('0xd'));var authService=require(_0x4055('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0x4055('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4055('0x10'))(_0x4055('0x11'));var utils=require(_0x4055('0x12'));var config=require(_0x4055('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x44b64b,_0x5b019c){_0x5b019c=_0x5b019c||0xcc;return function(_0x4a6960){if(_0x4a6960){return _0x44b64b['sendStatus'](_0x5b019c);}return _0x44b64b[_0x4055('0x14')](_0x5b019c)['end']();};}function respondWithResult(_0x4abacb,_0x12edc9){_0x12edc9=_0x12edc9||0xc8;return function(_0x105b69){if(_0x105b69){return _0x4abacb[_0x4055('0x14')](_0x12edc9)[_0x4055('0x15')](_0x105b69);}};}function respondWithFilteredResult(_0x2b434a,_0x4ef6e5){return function(_0xade709){if(_0xade709){var _0x291d4e=typeof _0x4ef6e5[_0x4055('0x16')]==='undefined'&&typeof _0x4ef6e5[_0x4055('0x17')]===_0x4055('0x18');var _0x3de065=_0xade709[_0x4055('0x19')];var _0x256896=_0x291d4e?0x0:_0x4ef6e5[_0x4055('0x16')];var _0x57fc4a=_0x291d4e?_0xade709[_0x4055('0x19')]:_0x4ef6e5[_0x4055('0x16')]+_0x4ef6e5[_0x4055('0x17')];var _0xf8e995;if(_0x57fc4a>=_0x3de065){_0x57fc4a=_0x3de065;_0xf8e995=0xc8;}else{_0xf8e995=0xce;}_0x2b434a[_0x4055('0x14')](_0xf8e995);return _0x2b434a['set'](_0x4055('0x1a'),_0x256896+'-'+_0x57fc4a+'/'+_0x3de065)[_0x4055('0x15')](_0xade709);}return null;};}function patchUpdates(_0x59dbdc){return function(_0x45e279){try{jsonpatch[_0x4055('0x1b')](_0x45e279,_0x59dbdc,!![]);}catch(_0x7a7c15){return BPromise[_0x4055('0x1c')](_0x7a7c15);}return _0x45e279[_0x4055('0x1d')]();};}function saveUpdates(_0x1fc087,_0x779021){return function(_0x2e0d57){if(_0x2e0d57){return _0x2e0d57[_0x4055('0x1e')](_0x1fc087)[_0x4055('0x1f')](function(_0x2182f4){return _0x2182f4;});}return null;};}function removeEntity(_0x3c961e,_0x5838d1){return function(_0x35b599){if(_0x35b599){return _0x35b599['destroy']()['then'](function(){_0x3c961e[_0x4055('0x14')](0xcc)[_0x4055('0x20')]();});}};}function handleEntityNotFound(_0x130440,_0x785ba3){return function(_0x1c0c52){if(!_0x1c0c52){_0x130440[_0x4055('0x21')](0x194);}return _0x1c0c52;};}function handleError(_0x50c85c,_0x185f0b){_0x185f0b=_0x185f0b||0x1f4;return function(_0x2df9bf){logger[_0x4055('0x22')](_0x2df9bf[_0x4055('0x23')]);if(_0x2df9bf[_0x4055('0x24')]){delete _0x2df9bf[_0x4055('0x24')];}_0x50c85c[_0x4055('0x14')](_0x185f0b)[_0x4055('0x25')](_0x2df9bf);};}exports['index']=function(_0x4c78df,_0x657e51){var _0x115487={},_0xf88855={},_0x1e1b7e={'count':0x0,'rows':[]};var _0x31379b=_[_0x4055('0x26')](db[_0x4055('0x27')]['rawAttributes'],function(_0x3e3540){return{'name':_0x3e3540['fieldName'],'type':_0x3e3540[_0x4055('0x28')][_0x4055('0x29')]};});_0xf88855[_0x4055('0x2a')]=_[_0x4055('0x26')](_0x31379b,_0x4055('0x24'));_0xf88855[_0x4055('0x2b')]=_[_0x4055('0x2c')](_0x4c78df[_0x4055('0x2b')]);_0xf88855['filters']=_[_0x4055('0x2d')](_0xf88855[_0x4055('0x2a')],_0xf88855['query']);_0x115487['attributes']=_[_0x4055('0x2d')](_0xf88855[_0x4055('0x2a')],qs[_0x4055('0x2e')](_0x4c78df[_0x4055('0x2b')]['fields']));_0x115487[_0x4055('0x2f')]=_0x115487[_0x4055('0x2f')]['length']?_0x115487['attributes']:_0xf88855['model'];if(!_0x4c78df['query'][_0x4055('0x30')](_0x4055('0x31'))){_0x115487[_0x4055('0x17')]=qs[_0x4055('0x17')](_0x4c78df['query'][_0x4055('0x17')]);_0x115487[_0x4055('0x16')]=qs[_0x4055('0x16')](_0x4c78df['query']['offset']);}_0x115487['order']=qs[_0x4055('0x32')](_0x4c78df['query'][_0x4055('0x32')]);_0x115487[_0x4055('0x33')]=qs[_0x4055('0x34')](_['pick'](_0x4c78df[_0x4055('0x2b')],_0xf88855[_0x4055('0x34')]),_0x31379b);if(_0x4c78df[_0x4055('0x2b')][_0x4055('0x35')]){_0x115487[_0x4055('0x33')]=_[_0x4055('0x36')](_0x115487[_0x4055('0x33')],{'$or':_[_0x4055('0x26')](_0x31379b,function(_0x1ee3d1){if(_0x1ee3d1[_0x4055('0x28')]!=='VIRTUAL'){var _0x394771={};_0x394771[_0x1ee3d1[_0x4055('0x24')]]={'$like':'%'+_0x4c78df[_0x4055('0x2b')]['filter']+'%'};return _0x394771;}})});}_0x115487=_['merge']({},_0x115487,_0x4c78df[_0x4055('0x37')]);var _0x177f69={'where':_0x115487['where']};return db[_0x4055('0x27')]['count'](_0x177f69)[_0x4055('0x1f')](function(_0x13a8f6){_0x1e1b7e[_0x4055('0x19')]=_0x13a8f6;if(_0x4c78df['query']['includeAll']){_0x115487[_0x4055('0x38')]=[{'all':!![]}];}return db[_0x4055('0x27')][_0x4055('0x39')](_0x115487);})[_0x4055('0x1f')](function(_0x4f762e){_0x1e1b7e['rows']=_0x4f762e;return _0x1e1b7e;})[_0x4055('0x1f')](respondWithFilteredResult(_0x657e51,_0x115487))[_0x4055('0x3a')](handleError(_0x657e51,null));};exports['show']=function(_0x25e6f8,_0x47ccdf){var _0x1849a1={'raw':!![],'where':{'id':_0x25e6f8['params']['id']}},_0x3a0b10={};_0x3a0b10[_0x4055('0x2a')]=_[_0x4055('0x2c')](db[_0x4055('0x27')][_0x4055('0x3b')]);_0x3a0b10[_0x4055('0x2b')]=_['keys'](_0x25e6f8[_0x4055('0x2b')]);_0x3a0b10[_0x4055('0x34')]=_[_0x4055('0x2d')](_0x3a0b10[_0x4055('0x2a')],_0x3a0b10['query']);_0x1849a1[_0x4055('0x2f')]=_[_0x4055('0x2d')](_0x3a0b10[_0x4055('0x2a')],qs['fields'](_0x25e6f8[_0x4055('0x2b')][_0x4055('0x2e')]));_0x1849a1[_0x4055('0x2f')]=_0x1849a1[_0x4055('0x2f')][_0x4055('0x3c')]?_0x1849a1['attributes']:_0x3a0b10[_0x4055('0x2a')];if(_0x25e6f8[_0x4055('0x2b')]['includeAll']){_0x1849a1['include']=[{'all':!![]}];}_0x1849a1=_[_0x4055('0x36')]({},_0x1849a1,_0x25e6f8[_0x4055('0x37')]);return db[_0x4055('0x27')]['find'](_0x1849a1)[_0x4055('0x1f')](handleEntityNotFound(_0x47ccdf,null))[_0x4055('0x1f')](respondWithResult(_0x47ccdf,null))[_0x4055('0x3a')](handleError(_0x47ccdf,null));};exports[_0x4055('0x3d')]=function(_0x30e9dd,_0x418b08){return db[_0x4055('0x27')]['create'](_0x30e9dd['body'],{})['then'](respondWithResult(_0x418b08,0xc9))['catch'](handleError(_0x418b08,null));};exports[_0x4055('0x1e')]=function(_0x2ef34d,_0x386bcc){if(_0x2ef34d[_0x4055('0x3e')]['id']){delete _0x2ef34d[_0x4055('0x3e')]['id'];}return db[_0x4055('0x27')][_0x4055('0x3f')]({'where':{'id':_0x2ef34d[_0x4055('0x40')]['id']}})['then'](handleEntityNotFound(_0x386bcc,null))[_0x4055('0x1f')](saveUpdates(_0x2ef34d[_0x4055('0x3e')],null))[_0x4055('0x1f')](respondWithResult(_0x386bcc,null))[_0x4055('0x3a')](handleError(_0x386bcc,null));};exports['destroy']=function(_0x4b907b,_0x195a5e){return db[_0x4055('0x27')][_0x4055('0x3f')]({'where':{'id':_0x4b907b['params']['id']}})[_0x4055('0x1f')](handleEntityNotFound(_0x195a5e,null))[_0x4055('0x1f')](removeEntity(_0x195a5e,null))[_0x4055('0x3a')](handleError(_0x195a5e,null));};exports[_0x4055('0x41')]=function(_0x45c918,_0x10f9f2){return db[_0x4055('0x27')]['describe']()[_0x4055('0x1f')](respondWithResult(_0x10f9f2,null))[_0x4055('0x3a')](handleError(_0x10f9f2,null));};
\ No newline at end of file
+var _0x84ce=['fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','catch','show','options','find','create','update','body','params','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','offset','limit','count','set','Content-Range','json','apply','reject','then','destroy','sendStatus','error','stack','name','send','map','WhatsappTransferReport','rawAttributes'];(function(_0x4474a9,_0x38167d){var _0x24b4dc=function(_0x4d811e){while(--_0x4d811e){_0x4474a9['push'](_0x4474a9['shift']());}};_0x24b4dc(++_0x38167d);}(_0x84ce,0x6d));var _0xe84c=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x84ce[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xe84c('0x0'));var rimraf=require(_0xe84c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe84c('0x2'));var moment=require(_0xe84c('0x3'));var BPromise=require(_0xe84c('0x4'));var Mustache=require(_0xe84c('0x5'));var util=require(_0xe84c('0x6'));var path=require(_0xe84c('0x7'));var sox=require(_0xe84c('0x8'));var csv=require(_0xe84c('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe84c('0xa'));var squel=require(_0xe84c('0xb'));var crypto=require('crypto');var jsforce=require(_0xe84c('0xc'));var deskjs=require(_0xe84c('0xd'));var toCsv=require(_0xe84c('0x9'));var querystring=require(_0xe84c('0xe'));var Papa=require(_0xe84c('0xf'));var Redis=require('ioredis');var authService=require(_0xe84c('0x10'));var qs=require(_0xe84c('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe84c('0x12'));var logger=require(_0xe84c('0x13'))(_0xe84c('0x14'));var utils=require(_0xe84c('0x15'));var config=require(_0xe84c('0x16'));var licenseUtil=require(_0xe84c('0x17'));var db=require(_0xe84c('0x18'))['db'];function respondWithStatusCode(_0x50be7f,_0x485f3d){_0x485f3d=_0x485f3d||0xcc;return function(_0x491914){if(_0x491914){return _0x50be7f['sendStatus'](_0x485f3d);}return _0x50be7f['status'](_0x485f3d)[_0xe84c('0x19')]();};}function respondWithResult(_0x5a30d6,_0x3d93ac){_0x3d93ac=_0x3d93ac||0xc8;return function(_0x157cd1){if(_0x157cd1){return _0x5a30d6[_0xe84c('0x1a')](_0x3d93ac)['json'](_0x157cd1);}};}function respondWithFilteredResult(_0xa90008,_0x16297f){return function(_0x796089){if(_0x796089){var _0x641309=typeof _0x16297f[_0xe84c('0x1b')]==='undefined'&&typeof _0x16297f[_0xe84c('0x1c')]==='undefined';var _0x4bbae6=_0x796089[_0xe84c('0x1d')];var _0x7c41d1=_0x641309?0x0:_0x16297f['offset'];var _0x41a81d=_0x641309?_0x796089[_0xe84c('0x1d')]:_0x16297f[_0xe84c('0x1b')]+_0x16297f[_0xe84c('0x1c')];var _0x2022e2;if(_0x41a81d>=_0x4bbae6){_0x41a81d=_0x4bbae6;_0x2022e2=0xc8;}else{_0x2022e2=0xce;}_0xa90008['status'](_0x2022e2);return _0xa90008[_0xe84c('0x1e')](_0xe84c('0x1f'),_0x7c41d1+'-'+_0x41a81d+'/'+_0x4bbae6)[_0xe84c('0x20')](_0x796089);}return null;};}function patchUpdates(_0x34e3c1){return function(_0x420128){try{jsonpatch[_0xe84c('0x21')](_0x420128,_0x34e3c1,!![]);}catch(_0x166fd4){return BPromise[_0xe84c('0x22')](_0x166fd4);}return _0x420128['save']();};}function saveUpdates(_0x715d1,_0x52240f){return function(_0x527e80){if(_0x527e80){return _0x527e80['update'](_0x715d1)[_0xe84c('0x23')](function(_0x3fc018){return _0x3fc018;});}return null;};}function removeEntity(_0x1d2447,_0x172272){return function(_0x40300f){if(_0x40300f){return _0x40300f[_0xe84c('0x24')]()[_0xe84c('0x23')](function(){_0x1d2447['status'](0xcc)[_0xe84c('0x19')]();});}};}function handleEntityNotFound(_0x5ceaca,_0x52a5b4){return function(_0x5e76d7){if(!_0x5e76d7){_0x5ceaca[_0xe84c('0x25')](0x194);}return _0x5e76d7;};}function handleError(_0x37ccd4,_0x58fb0b){_0x58fb0b=_0x58fb0b||0x1f4;return function(_0x2c255a){logger[_0xe84c('0x26')](_0x2c255a[_0xe84c('0x27')]);if(_0x2c255a[_0xe84c('0x28')]){delete _0x2c255a[_0xe84c('0x28')];}_0x37ccd4[_0xe84c('0x1a')](_0x58fb0b)[_0xe84c('0x29')](_0x2c255a);};}exports['index']=function(_0x36dda8,_0x48f0e2){var _0x3771c3={},_0x41fe6e={},_0x9ec47f={'count':0x0,'rows':[]};var _0x1b6d5e=_[_0xe84c('0x2a')](db[_0xe84c('0x2b')][_0xe84c('0x2c')],function(_0x216835){return{'name':_0x216835[_0xe84c('0x2d')],'type':_0x216835[_0xe84c('0x2e')][_0xe84c('0x2f')]};});_0x41fe6e[_0xe84c('0x30')]=_[_0xe84c('0x2a')](_0x1b6d5e,_0xe84c('0x28'));_0x41fe6e[_0xe84c('0x31')]=_[_0xe84c('0x32')](_0x36dda8['query']);_0x41fe6e[_0xe84c('0x33')]=_[_0xe84c('0x34')](_0x41fe6e[_0xe84c('0x30')],_0x41fe6e['query']);_0x3771c3[_0xe84c('0x35')]=_[_0xe84c('0x34')](_0x41fe6e['model'],qs['fields'](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x36')]));_0x3771c3[_0xe84c('0x35')]=_0x3771c3['attributes'][_0xe84c('0x37')]?_0x3771c3[_0xe84c('0x35')]:_0x41fe6e[_0xe84c('0x30')];if(!_0x36dda8['query'][_0xe84c('0x38')](_0xe84c('0x39'))){_0x3771c3[_0xe84c('0x1c')]=qs[_0xe84c('0x1c')](_0x36dda8[_0xe84c('0x31')]['limit']);_0x3771c3['offset']=qs[_0xe84c('0x1b')](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x1b')]);}_0x3771c3[_0xe84c('0x3a')]=qs[_0xe84c('0x3b')](_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3b')]);_0x3771c3[_0xe84c('0x3c')]=qs['filters'](_[_0xe84c('0x3d')](_0x36dda8['query'],_0x41fe6e[_0xe84c('0x33')]),_0x1b6d5e);if(_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3e')]){_0x3771c3[_0xe84c('0x3c')]=_[_0xe84c('0x3f')](_0x3771c3['where'],{'$or':_['map'](_0x1b6d5e,function(_0x2bf466){if(_0x2bf466['type']!==_0xe84c('0x40')){var _0x4c3104={};_0x4c3104[_0x2bf466['name']]={'$like':'%'+_0x36dda8[_0xe84c('0x31')][_0xe84c('0x3e')]+'%'};return _0x4c3104;}})});}_0x3771c3=_[_0xe84c('0x3f')]({},_0x3771c3,_0x36dda8['options']);var _0x2e2909={'where':_0x3771c3[_0xe84c('0x3c')]};return db[_0xe84c('0x2b')][_0xe84c('0x1d')](_0x2e2909)['then'](function(_0xab0cc3){_0x9ec47f[_0xe84c('0x1d')]=_0xab0cc3;if(_0x36dda8[_0xe84c('0x31')][_0xe84c('0x41')]){_0x3771c3[_0xe84c('0x42')]=[{'all':!![]}];}return db['WhatsappTransferReport'][_0xe84c('0x43')](_0x3771c3);})['then'](function(_0x129fd5){_0x9ec47f['rows']=_0x129fd5;return _0x9ec47f;})['then'](respondWithFilteredResult(_0x48f0e2,_0x3771c3))[_0xe84c('0x44')](handleError(_0x48f0e2,null));};exports[_0xe84c('0x45')]=function(_0x159b70,_0x485179){var _0x436d18={'raw':!![],'where':{'id':_0x159b70['params']['id']}},_0x475d91={};_0x475d91[_0xe84c('0x30')]=_['keys'](db[_0xe84c('0x2b')]['rawAttributes']);_0x475d91[_0xe84c('0x31')]=_[_0xe84c('0x32')](_0x159b70[_0xe84c('0x31')]);_0x475d91[_0xe84c('0x33')]=_[_0xe84c('0x34')](_0x475d91[_0xe84c('0x30')],_0x475d91['query']);_0x436d18[_0xe84c('0x35')]=_['intersection'](_0x475d91[_0xe84c('0x30')],qs['fields'](_0x159b70['query'][_0xe84c('0x36')]));_0x436d18[_0xe84c('0x35')]=_0x436d18['attributes'][_0xe84c('0x37')]?_0x436d18[_0xe84c('0x35')]:_0x475d91[_0xe84c('0x30')];if(_0x159b70[_0xe84c('0x31')][_0xe84c('0x41')]){_0x436d18['include']=[{'all':!![]}];}_0x436d18=_[_0xe84c('0x3f')]({},_0x436d18,_0x159b70[_0xe84c('0x46')]);return db[_0xe84c('0x2b')][_0xe84c('0x47')](_0x436d18)[_0xe84c('0x23')](handleEntityNotFound(_0x485179,null))[_0xe84c('0x23')](respondWithResult(_0x485179,null))['catch'](handleError(_0x485179,null));};exports['create']=function(_0x160f74,_0x4c10cc){return db[_0xe84c('0x2b')][_0xe84c('0x48')](_0x160f74['body'],{})[_0xe84c('0x23')](respondWithResult(_0x4c10cc,0xc9))['catch'](handleError(_0x4c10cc,null));};exports[_0xe84c('0x49')]=function(_0x138895,_0x420e9c){if(_0x138895[_0xe84c('0x4a')]['id']){delete _0x138895[_0xe84c('0x4a')]['id'];}return db[_0xe84c('0x2b')]['find']({'where':{'id':_0x138895[_0xe84c('0x4b')]['id']}})[_0xe84c('0x23')](handleEntityNotFound(_0x420e9c,null))[_0xe84c('0x23')](saveUpdates(_0x138895[_0xe84c('0x4a')],null))[_0xe84c('0x23')](respondWithResult(_0x420e9c,null))[_0xe84c('0x44')](handleError(_0x420e9c,null));};exports[_0xe84c('0x24')]=function(_0x5a5bb0,_0x311e6a){return db[_0xe84c('0x2b')][_0xe84c('0x47')]({'where':{'id':_0x5a5bb0[_0xe84c('0x4b')]['id']}})[_0xe84c('0x23')](handleEntityNotFound(_0x311e6a,null))[_0xe84c('0x23')](removeEntity(_0x311e6a,null))[_0xe84c('0x44')](handleError(_0x311e6a,null));};exports[_0xe84c('0x4c')]=function(_0x51fbd0,_0xb06667){return db['WhatsappTransferReport']['describe']()['then'](respondWithResult(_0xb06667,null))['catch'](handleError(_0xb06667,null));};
\ No newline at end of file
index 9331ab9..20a89cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x230b=['../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./whatsappTransferReport.attributes','exports','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util'];(function(_0x37c3f5,_0x252425){var _0x3f6584=function(_0x282b82){while(--_0x282b82){_0x37c3f5['push'](_0x37c3f5['shift']());}};_0x3f6584(++_0x252425);}(_0x230b,0x7c));var _0xb230=function(_0x14d1e1,_0x9ab9ba){_0x14d1e1=_0x14d1e1-0x0;var _0x58f075=_0x230b[_0x14d1e1];return _0x58f075;};'use strict';var _=require(_0xb230('0x0'));var util=require(_0xb230('0x1'));var logger=require(_0xb230('0x2'))('api');var moment=require(_0xb230('0x3'));var BPromise=require(_0xb230('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb230('0x5'));var rimraf=require(_0xb230('0x6'));var config=require(_0xb230('0x7'));var attributes=require(_0xb230('0x8'));module[_0xb230('0x9')]=function(_0x3720ba,_0x254609){return _0x3720ba[_0xb230('0xa')](_0xb230('0xb'),attributes,{'tableName':_0xb230('0xc'),'paranoid':![],'indexes':[{'name':_0xb230('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb2cb=['WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','api','moment','request-promise','../../config/environment','./whatsappTransferReport.attributes','exports','define'];(function(_0x4f096e,_0x30d3c3){var _0x4a33ce=function(_0x107ba6){while(--_0x107ba6){_0x4f096e['push'](_0x4f096e['shift']());}};_0x4a33ce(++_0x30d3c3);}(_0xb2cb,0x123));var _0xbb2c=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xb2cb[_0x1b6c6d];return _0x290d9d;};'use strict';var _=require(_0xbb2c('0x0'));var util=require(_0xbb2c('0x1'));var logger=require('../../config/logger')(_0xbb2c('0x2'));var moment=require(_0xbb2c('0x3'));var BPromise=require('bluebird');var rp=require(_0xbb2c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xbb2c('0x5'));var attributes=require(_0xbb2c('0x6'));module[_0xbb2c('0x7')]=function(_0x24cfdc,_0x34ec64){return _0x24cfdc[_0xbb2c('0x8')](_0xbb2c('0x9'),attributes,{'tableName':_0xbb2c('0xa'),'paranoid':![],'indexes':[{'name':_0xbb2c('0xb'),'fields':[_0xbb2c('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 14f6194..3a0f266 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f0f=['then','info','WhatsappTransferReport,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x2f0f,0x15a));var _0xf2f0=function(_0x12f4d8,_0x1f6d82){_0x12f4d8=_0x12f4d8-0x0;var _0x265413=_0x2f0f[_0x12f4d8];return _0x265413;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf2f0('0x0'));var BPromise=require(_0xf2f0('0x1'));var rs=require(_0xf2f0('0x2'));var fs=require('fs');var Redis=require(_0xf2f0('0x3'));var db=require(_0xf2f0('0x4'))['db'];var utils=require(_0xf2f0('0x5'));var logger=require(_0xf2f0('0x6'))(_0xf2f0('0x7'));var config=require('../../config/environment');var jayson=require(_0xf2f0('0x8'));var client=jayson[_0xf2f0('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x58c48e,_0x6e2d65,_0x5d42fb){return new BPromise(function(_0x226dfb,_0x34ef5d){return client[_0xf2f0('0xa')](_0x58c48e,_0x5d42fb)[_0xf2f0('0xb')](function(_0x30cbfc){logger[_0xf2f0('0xc')](_0xf2f0('0xd'),_0x6e2d65,'request\x20sent');logger[_0xf2f0('0xe')]('WhatsappTransferReport,\x20%s,\x20%s,\x20%s',_0x6e2d65,_0xf2f0('0xf'),JSON[_0xf2f0('0x10')](_0x30cbfc));if(_0x30cbfc[_0xf2f0('0x11')]){if(_0x30cbfc['error'][_0xf2f0('0x12')]===0x1f4){logger[_0xf2f0('0x11')](_0xf2f0('0xd'),_0x6e2d65,_0x30cbfc[_0xf2f0('0x11')][_0xf2f0('0x13')]);return _0x34ef5d(_0x30cbfc[_0xf2f0('0x11')][_0xf2f0('0x13')]);}logger['error']('WhatsappTransferReport,\x20%s,\x20%s',_0x6e2d65,_0x30cbfc[_0xf2f0('0x11')]['message']);return _0x226dfb(_0x30cbfc[_0xf2f0('0x11')]['message']);}else{logger['info'](_0xf2f0('0xd'),_0x6e2d65,_0xf2f0('0xf'));_0x226dfb(_0x30cbfc['result'][_0xf2f0('0x13')]);}})[_0xf2f0('0x14')](function(_0x3782d8){logger[_0xf2f0('0x11')]('WhatsappTransferReport,\x20%s,\x20%s',_0x6e2d65,_0x3782d8);_0x34ef5d(_0x3782d8);});});}
\ No newline at end of file
+var _0x8b62=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb'];(function(_0x450a0d,_0x2c019f){var _0x5904cd=function(_0x418fad){while(--_0x418fad){_0x450a0d['push'](_0x450a0d['shift']());}};_0x5904cd(++_0x2c019f);}(_0x8b62,0xe2));var _0x28b6=function(_0x137d1d,_0x35c663){_0x137d1d=_0x137d1d-0x0;var _0x485108=_0x8b62[_0x137d1d];return _0x485108;};'use strict';var _=require(_0x28b6('0x0'));var util=require(_0x28b6('0x1'));var moment=require(_0x28b6('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x28b6('0x3'));var db=require(_0x28b6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x28b6('0x5'))(_0x28b6('0x6'));var config=require(_0x28b6('0x7'));var jayson=require(_0x28b6('0x8'));var client=jayson['client'][_0x28b6('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x59a71a,_0x496f69,_0x376658){return new BPromise(function(_0x22d39c,_0x407d5a){return client[_0x28b6('0xa')](_0x59a71a,_0x376658)[_0x28b6('0xb')](function(_0x3723be){logger[_0x28b6('0xc')](_0x28b6('0xd'),_0x496f69,_0x28b6('0xe'));logger['debug'](_0x28b6('0xf'),_0x496f69,'request\x20sent',JSON['stringify'](_0x3723be));if(_0x3723be['error']){if(_0x3723be[_0x28b6('0x10')][_0x28b6('0x11')]===0x1f4){logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x3723be[_0x28b6('0x10')][_0x28b6('0x12')]);return _0x407d5a(_0x3723be['error'][_0x28b6('0x12')]);}logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x3723be['error'][_0x28b6('0x12')]);return _0x22d39c(_0x3723be[_0x28b6('0x10')][_0x28b6('0x12')]);}else{logger[_0x28b6('0xc')](_0x28b6('0xd'),_0x496f69,_0x28b6('0xe'));_0x22d39c(_0x3723be[_0x28b6('0x13')]['message']);}})[_0x28b6('0x14')](function(_0x5e78c6){logger[_0x28b6('0x10')](_0x28b6('0xd'),_0x496f69,_0x5e78c6);_0x407d5a(_0x5e78c6);});});}
\ No newline at end of file
index 017c705..febe753 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9417=['lodash','./mysqldb','./config/seedDB','./config/license','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sync','then','seedDB','listen','info','start','filter','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','join','status','None','log','App\x20Ready!','catch','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit'];(function(_0x3bb490,_0x94fac5){var _0x252879=function(_0x426f3a){while(--_0x426f3a){_0x3bb490['push'](_0x3bb490['shift']());}};_0x252879(++_0x94fac5);}(_0x9417,0xb4));var _0x7941=function(_0x38f5f8,_0xefe164){_0x38f5f8=_0x38f5f8-0x0;var _0x34e820=_0x9417[_0x38f5f8];return _0x34e820;};'use strict';var _=require(_0x7941('0x0'));var db=require(_0x7941('0x1'))['db'];var seedDb=require(_0x7941('0x2'));var checkLicense=require(_0x7941('0x3'));var rpc=require('./rpc');var config=require(_0x7941('0x4'));var logger=require(_0x7941('0x5'))(_0x7941('0x6'));var pm2=require(_0x7941('0x7'));var pm2Config=require(_0x7941('0x8'));var schedule=require(_0x7941('0x9'));var chat=require(_0x7941('0xa'));var whatsapp=require(_0x7941('0xb'));var transcribe=require(_0x7941('0xc'));var provider=require(_0x7941('0xd'));function main(){return db['sequelize'][_0x7941('0xe')]()[_0x7941('0xf')](function(){if(config[_0x7941('0x10')]){return seedDb['default']();}})[_0x7941('0xf')](function(){return checkLicense['default']();})['then'](function(){return rpc[_0x7941('0x11')]();})[_0x7941('0xf')](function(_0x34b34b){logger[_0x7941('0x12')](_0x34b34b);return chat[_0x7941('0x13')]();})[_0x7941('0xf')](function(){return whatsapp[_0x7941('0x13')]();})[_0x7941('0xf')](function(){return schedule['start']();})[_0x7941('0xf')](function(){return transcribe['start']();})[_0x7941('0xf')](function(){return provider[_0x7941('0x13')]();})['then'](function(_0x4f40af){logger[_0x7941('0x12')](_0x4f40af);return pm2['start'](pm2Config);})[_0x7941('0xf')](function(_0x45c08f){var _0xa9f093=_0x45c08f[_0x7941('0x14')](function(_0x1da410){return typeof _0x1da410[_0x7941('0x15')]==='number'&&_0x1da410[_0x7941('0x15')]>=0x0;});if(_0xa9f093[_0x7941('0x16')]>0x0){throw new Error(_0xa9f093[_0x7941('0x16')]+_0x7941('0x17')+_[_0x7941('0x18')](_0xa9f093,function(_0x256f45){return'\x22'+_0x256f45[_0x7941('0x19')][_0x7941('0x1a')]+'\x22';}));}logger[_0x7941('0x12')]('Online\x20apps:',_['map'](_[_0x7941('0x14')](_0x45c08f,{'status':'online'}),_0x7941('0x1a'))[_0x7941('0x1b')]());logger[_0x7941('0x12')]('Offline\x20apps:',_['map'](_[_0x7941('0x14')](_0x45c08f,function(_0x4d3b28){return _0x4d3b28[_0x7941('0x1c')]!=='online';}),_0x7941('0x1a'))[_0x7941('0x1b')]()||_0x7941('0x1d'));console[_0x7941('0x1e')](_0x7941('0x1f'));})[_0x7941('0x20')](function(_0x368a07){console['log'](_0x7941('0x21'),_0x368a07);logger['error'](_0x7941('0x22'),_0x368a07);process[_0x7941('0x23')](0x1);});}main();
\ No newline at end of file
+var _0xfd7b=['./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','then','default','start','number','exitCode','length','\x20processes\x20failed\x20at\x20startup:\x20','map','pm2_env','name','filter','join','status','online','None','log','App\x20Ready!','catch','error','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule','./config/schedule/chat'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xfd7b,0x1df));var _0xbfd7=function(_0x1ca9e9,_0x1c4391){_0x1ca9e9=_0x1ca9e9-0x0;var _0x309f3c=_0xfd7b[_0x1ca9e9];return _0x309f3c;};'use strict';var _=require('lodash');var db=require(_0xbfd7('0x0'))['db'];var seedDb=require(_0xbfd7('0x1'));var checkLicense=require(_0xbfd7('0x2'));var rpc=require(_0xbfd7('0x3'));var config=require(_0xbfd7('0x4'));var logger=require(_0xbfd7('0x5'))(_0xbfd7('0x6'));var pm2=require(_0xbfd7('0x7'));var pm2Config=require(_0xbfd7('0x8'));var schedule=require(_0xbfd7('0x9'));var chat=require(_0xbfd7('0xa'));var whatsapp=require(_0xbfd7('0xb'));var transcribe=require(_0xbfd7('0xc'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0xbfd7('0xd')]['sync']()[_0xbfd7('0xe')](function(){if(config['seedDB']){return seedDb[_0xbfd7('0xf')]();}})[_0xbfd7('0xe')](function(){return checkLicense[_0xbfd7('0xf')]();})[_0xbfd7('0xe')](function(){return rpc['listen']();})[_0xbfd7('0xe')](function(_0x14c84b){logger['info'](_0x14c84b);return chat['start']();})[_0xbfd7('0xe')](function(){return whatsapp[_0xbfd7('0x10')]();})[_0xbfd7('0xe')](function(){return schedule[_0xbfd7('0x10')]();})[_0xbfd7('0xe')](function(){return transcribe['start']();})[_0xbfd7('0xe')](function(){return provider['start']();})[_0xbfd7('0xe')](function(_0x4e9bd7){logger['info'](_0x4e9bd7);return pm2[_0xbfd7('0x10')](pm2Config);})[_0xbfd7('0xe')](function(_0x3789b7){var _0x371592=_0x3789b7['filter'](function(_0x5efd54){return typeof _0x5efd54['exitCode']===_0xbfd7('0x11')&&_0x5efd54[_0xbfd7('0x12')]>=0x0;});if(_0x371592[_0xbfd7('0x13')]>0x0){throw new Error(_0x371592[_0xbfd7('0x13')]+_0xbfd7('0x14')+_[_0xbfd7('0x15')](_0x371592,function(_0x137d50){return'\x22'+_0x137d50[_0xbfd7('0x16')][_0xbfd7('0x17')]+'\x22';}));}logger['info']('Online\x20apps:',_[_0xbfd7('0x15')](_[_0xbfd7('0x18')](_0x3789b7,{'status':'online'}),'name')[_0xbfd7('0x19')]());logger['info']('Offline\x20apps:',_[_0xbfd7('0x15')](_['filter'](_0x3789b7,function(_0x594792){return _0x594792[_0xbfd7('0x1a')]!==_0xbfd7('0x1b');}),_0xbfd7('0x17'))['join']()||_0xbfd7('0x1c'));console[_0xbfd7('0x1d')](_0xbfd7('0x1e'));})[_0xbfd7('0x1f')](function(_0x229f2f){console[_0xbfd7('0x1d')]('Server\x20failed\x20to\x20start\x20due\x20to\x20error!',_0x229f2f);logger[_0xbfd7('0x20')](_0xbfd7('0x21'),_0x229f2f);process[_0xbfd7('0x22')](0x1);});}main();
\ No newline at end of file
index 43b2c43..2655738 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['whatsappAutoanswerDelay','isChatInteractionAuthorized','use','user','ChatInteraction','params','closed','disposition','then','status','unmanaged','Forbidden.','catch','isAuthenticated','headers','authorization','startsWith','User','find','authenticate','pass','json','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','blockDuration','apiKeyNonce','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','blocked','blockedAt','add','minutes','Invalid\x20API\x20access\x20key','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','Forbidden','isWebrtcLicence','webrtc','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','motion.token','redirect','send','isNil','generateApiKey','regenerateApiKey','apiKeyIat','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','join','sign','secret','payload','options','promisify','verify','randomBytes','toString','hex','floor','now','HS512','../../config/environment','../../config/license/util','lodash','jsonwebtoken','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','secrets','session','role','fullname','name','internal','email','userpic','permissions','chatPause','mailPause','faxPause','openchannelPause','pauseType','showWebBar','lastLoginAt','crudPermissions','passwordResetAt','alias','phoneBarAutoAnswer','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','phoneBarRemoteControlPort','interface','userProfileId','privacyEnabled','wssPort','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9bde,0xe1));var _0xe9bd=function(_0x23fa1c,_0x49c936){_0x23fa1c=_0x23fa1c-0x0;var _0x30dcbb=_0x9bde[_0x23fa1c];return _0x30dcbb;};'use strict';var db=require('../../mysqldb')['db'];var config=require(_0xe9bd('0x0'));var hardwareConf=require('../../config/license/hardware');var licenseUtil=require(_0xe9bd('0x1'));var encryptor=require('../encryptor');var _=require(_0xe9bd('0x2'));var jwt=require(_0xe9bd('0x3'));var expressJwt=require(_0xe9bd('0x4'));var compose=require(_0xe9bd('0x5'));var basicAuth=require(_0xe9bd('0x6'));var crypto=require(_0xe9bd('0x7'));var BPromise=require(_0xe9bd('0x8'));var util=require('util');var moment=require(_0xe9bd('0x9'));var validateJwt=expressJwt({'secret':config[_0xe9bd('0xa')][_0xe9bd('0xb')]});var userAttributes=['id',_0xe9bd('0xc'),_0xe9bd('0xd'),_0xe9bd('0xe'),_0xe9bd('0xf'),_0xe9bd('0x10'),_0xe9bd('0x11'),_0xe9bd('0x12'),'md5secret','voicePause',_0xe9bd('0x13'),_0xe9bd('0x14'),_0xe9bd('0x15'),'smsPause',_0xe9bd('0x16'),_0xe9bd('0x17'),_0xe9bd('0x18'),_0xe9bd('0x19'),'lastPauseAt',_0xe9bd('0x1a'),'allowmessenger',_0xe9bd('0x1b'),_0xe9bd('0x1c'),_0xe9bd('0x1d'),'phoneBarAutoAnswerDelay','phoneBarDnd',_0xe9bd('0x1e'),_0xe9bd('0x1f'),_0xe9bd('0x20'),_0xe9bd('0x21'),_0xe9bd('0x22'),_0xe9bd('0x23'),_0xe9bd('0x24'),'hotdesk',_0xe9bd('0x25'),_0xe9bd('0x26'),_0xe9bd('0x27'),'settingsEnabled',_0xe9bd('0x28'),_0xe9bd('0x29'),_0xe9bd('0x2a'),_0xe9bd('0x2b'),'ignorePauseForPreviewCalls',_0xe9bd('0x2c'),'chatAutoanswer',_0xe9bd('0x2d'),'emailAutoanswer',_0xe9bd('0x2e'),_0xe9bd('0x2f'),_0xe9bd('0x30'),_0xe9bd('0x31'),_0xe9bd('0x32'),_0xe9bd('0x33'),_0xe9bd('0x34'),'whatsappAutoanswer',_0xe9bd('0x35')];exports[_0xe9bd('0x36')]=function(){return this['isAuthenticated'](!![])[_0xe9bd('0x37')](function(_0x505c23,_0x238ab1,_0x1b9cc9){if(_0x505c23[_0xe9bd('0x38')]){_0x1b9cc9();}else{return db[_0xe9bd('0x39')]['findOne']({'where':{'id':_0x505c23[_0xe9bd('0x3a')]['id']},'attributes':['id',_0xe9bd('0x3b'),_0xe9bd('0x3c')],'raw':!![]})[_0xe9bd('0x3d')](function(_0x2641be){if(_0x2641be&&_0x2641be[_0xe9bd('0x3b')]){return _0x238ab1[_0xe9bd('0x3e')](_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?0x195:0x193)['json']({'message':_0x2641be[_0xe9bd('0x3c')]===_0xe9bd('0x3f')?'Unmanaged.':_0xe9bd('0x40')});}else{_0x1b9cc9();}})[_0xe9bd('0x41')](function(_0x119672){_0x1b9cc9(_0x119672);});}});};exports[_0xe9bd('0x42')]=function isAuthenticated(_0x141b95){return compose()[_0xe9bd('0x37')](function(_0x519f48,_0x5b7f1d,_0x1de54c){var _0x56e409;if(_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')]){if(_[_0xe9bd('0x45')](_0x519f48[_0xe9bd('0x43')][_0xe9bd('0x44')],'Basic')){var _0x4b7bc2=basicAuth(_0x519f48);db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'name':_0x4b7bc2[_0xe9bd('0xe')]}})[_0xe9bd('0x3d')](function(_0xe2436){if(!_0xe2436||!_0xe2436[_0xe9bd('0x48')](_0x4b7bc2[_0xe9bd('0x49')])){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':'Wrong\x20credentials.'});}_0x519f48[_0xe9bd('0x38')]={'id':_0xe2436['id']};_0x1de54c();})[_0xe9bd('0x41')](function(_0x390a43){_0x1de54c(_0x390a43);});}else if(_['startsWith'](_0x519f48['headers'][_0xe9bd('0x44')],_0xe9bd('0x4b'))){validateJwt(_0x519f48,_0x5b7f1d,_0x1de54c);}else{if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}}}else if(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')]){try{var _0x1c6173={'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};verifyJwt(_0x519f48[_0xe9bd('0x4d')][_0xe9bd('0x4e')],_0x1c6173)[_0xe9bd('0x3d')](function(_0x199477){return db[_0xe9bd('0x46')][_0xe9bd('0x47')]({'where':{'id':_0x199477[_0xe9bd('0x50')]}})[_0xe9bd('0x3d')](function(_0x4c689d){_0x56e409=_0x4c689d;return db[_0xe9bd('0x51')][_0xe9bd('0x52')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0xe9bd('0x53')],'raw':!![]});})[_0xe9bd('0x3d')](function(_0x4c7d47){if(!_0x56e409||!_['isEqual'](_0x56e409[_0xe9bd('0x54')],_0x199477[_0xe9bd('0x55')])){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x56')});}if(_0x56e409[_0xe9bd('0x57')]){return _0x5b7f1d['status'](0x191)[_0xe9bd('0x4a')]({'message':'Invalid\x20API\x20access\x20key'});}if(_0x56e409[_0xe9bd('0x58')]){if(_0x4c7d47[_0xe9bd('0x53')]>0x0){if(moment(_0x56e409[_0xe9bd('0x59')])[_0xe9bd('0x5a')](_0x4c7d47['blockDuration'],_0xe9bd('0x5b'))>moment()){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}else{return _0x5b7f1d[_0xe9bd('0x3e')](0x191)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5c')});}}_0x519f48[_0xe9bd('0x38')]={'id':_0x56e409['id']};_0x1de54c();});})[_0xe9bd('0x41')](function(){return _0x5b7f1d[_0xe9bd('0x3e')](0x191)['json']({'message':'Invalid\x20API\x20access\x20key'});});}catch(_0xcf9a0c){_0x1de54c(_0xcf9a0c);}}else if(_0x141b95){_0x1de54c();}else{return _0x5b7f1d['status'](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x4c')});}})[_0xe9bd('0x37')](function(_0x480797,_0x1ba613,_0x2923cf){if(_0x480797[_0xe9bd('0x38')]){db['User'][_0xe9bd('0x47')]({'where':{'id':_0x480797[_0xe9bd('0x38')]['id']},'attributes':userAttributes})[_0xe9bd('0x3d')](function(_0x388132){if(!_0x388132){return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5d')});}_0x480797[_0xe9bd('0x38')]=_0x388132;_0x2923cf();})[_0xe9bd('0x41')](function(_0x300e07){_0x2923cf(_0x300e07);});}else if(_0x141b95){_0x2923cf();}else{return _0x1ba613[_0xe9bd('0x3e')](0x194)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x5e')});}});};exports[_0xe9bd('0x5f')]=function canUpdate(){return compose()[_0xe9bd('0x37')](function(_0x5b70d3,_0x5a86fd,_0x283e67){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x58828b){if(_0x58828b['update']){_0x283e67();}else{return _0x5a86fd[_0xe9bd('0x3e')](0x193)[_0xe9bd('0x4a')]({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0x39fb61){_0x283e67(_0x39fb61);});});};exports[_0xe9bd('0x62')]=function isWebrtcLicence(){return compose()[_0xe9bd('0x37')](function(_0x512899,_0x1e45fc,_0x4cc146){return licenseUtil[_0xe9bd('0x60')]()[_0xe9bd('0x3d')](function(_0x33ba69){if(_0x33ba69[_0xe9bd('0x63')]){_0x4cc146();}else{return _0x1e45fc[_0xe9bd('0x3e')](0x193)['json']({'message':_0xe9bd('0x61')});}})[_0xe9bd('0x41')](function(_0xe14fa4){_0x4cc146(_0xe14fa4);});});};exports['isMiddleware']=function(_0xff4e14,_0x476f23,_0x34f787){_0xff4e14['isMiddleware']=!![];return _0x34f787();};exports[_0xe9bd('0x64')]=function signToken(_0x27e7b0){return signJwt(_0x27e7b0);};exports[_0xe9bd('0x65')]=function(_0x10ec29,_0x1ee09c){if(!_0x10ec29['user']){return _0x1ee09c[_0xe9bd('0x3e')](0x194)['json']({'message':_0xe9bd('0x66')});}var _0x239be9={'payload':{'id':_0x10ec29[_0xe9bd('0x38')]['id'],'role':_0x10ec29[_0xe9bd('0x38')][_0xe9bd('0xc')]},'options':{'expiresIn':0x15180}};return signJwt(_0x239be9)['then'](function(_0x15d1d0){_0x1ee09c['cookie'](_0xe9bd('0x67'),_0x15d1d0);_0x1ee09c[_0xe9bd('0x68')]('/dashboards/general');})['catch'](function(_0x1ce539){return _0x1ee09c['status'](0x1f4)[_0xe9bd('0x69')](_0x1ce539);});};exports['retrieveApiKey']=function(_0x26b25a){if(_[_0xe9bd('0x6a')](_0x26b25a['apiKeyNonce'])||_[_0xe9bd('0x6a')](_0x26b25a['apiKeyIat'])){return null;}else{return createJwt(_0x26b25a);}};exports[_0xe9bd('0x6b')]=function(_0x2d9a94){_0x2d9a94[_0xe9bd('0x54')]=generateNonce();_0x2d9a94['apiKeyIat']=generateIssuedAt();return createJwt(_0x2d9a94);};exports[_0xe9bd('0x6c')]=function(_0x1d703f,_0x45b69e){var _0x232a36=_0x1d703f['query']['apikey'];if(_0x232a36){var _0x441f89={'nonce':_0x45b69e['apiKeyNonce'],'iat':_0x45b69e[_0xe9bd('0x6d')],'audience':hardwareConf[_0xe9bd('0x4f')](),'issuer':hardwareConf[_0xe9bd('0x4f')]()};return verifyJwt(_0x232a36,_0x441f89)[_0xe9bd('0x3d')](function(){return generateApiKey(_0x45b69e);});}else{throw{'message':_0xe9bd('0x6e')};}};exports[_0xe9bd('0x6f')]=function(_0x373057){var _0x3381ee=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x3381ee[_0xe9bd('0x70')](_0x373057))throw new db[(_0xe9bd('0x71'))][(_0xe9bd('0x72'))](_0xe9bd('0x73'));return;};exports['validatePasswordHistory']=function(_0x596a7d,_0x566dd8,_0x10e685){var _0x5a516e=encryptor[_0xe9bd('0x74')](_0x566dd8)[_0xe9bd('0x75')](',');for(var _0x90db01=0x0;_0x90db01<_0x10e685;_0x90db01++){if(!_0x5a516e[_0x90db01])break;if(_0x596a7d[_0xe9bd('0x76')]()===_0x5a516e[_0x90db01][_0xe9bd('0x76')]()){var _0xaf6ffd=util[_0xe9bd('0x77')](_0xe9bd('0x78'),_0x10e685);if(_0x10e685===0x1){_0xaf6ffd=_0xe9bd('0x79');}throw new db['Sequelize'][(_0xe9bd('0x72'))](_0xaf6ffd);}}return;};exports[_0xe9bd('0x7a')]=function(_0x3d3e74,_0x3f848d){var _0x4d58c1=_0x3f848d?encryptor[_0xe9bd('0x74')](_0x3f848d)[_0xe9bd('0x75')](','):[];if(_0x4d58c1[_0xe9bd('0x7b')]===0x5){_0x4d58c1['splice'](-0x1,0x1);}_0x4d58c1[_0xe9bd('0x7c')](_0x3d3e74);return encryptor[_0xe9bd('0x7d')](_0x4d58c1[_0xe9bd('0x7e')](','));};function signJwt(_0xfe82f7){var _0x4ee26a=BPromise['promisify'](jwt[_0xe9bd('0x7f')],{'context':jwt});var _0x188891=_0xfe82f7[_0xe9bd('0x80')]||config[_0xe9bd('0xa')]['session'];return new BPromise(function(_0x49add9,_0x305efa){_0x4ee26a(_0xfe82f7[_0xe9bd('0x81')],_0x188891,_0xfe82f7[_0xe9bd('0x82')])[_0xe9bd('0x3d')](function(_0x1fd2b5){_0x49add9(_0x1fd2b5);})[_0xe9bd('0x41')](function(_0x4870f8){_0x305efa(_0x4870f8);});});}function verifyJwt(_0x179c8d,_0x5681ab,_0x27e07c){var _0x28dd03=BPromise[_0xe9bd('0x83')](jwt[_0xe9bd('0x84')],{'context':jwt});var _0x5bc1f8=_0x27e07c||config[_0xe9bd('0xa')][_0xe9bd('0xb')];return new BPromise(function(_0x3b0190,_0x4f35c4){_0x28dd03(_0x179c8d,_0x5bc1f8,_0x5681ab)[_0xe9bd('0x3d')](function(_0x1a9d0c){_0x3b0190(_0x1a9d0c);})[_0xe9bd('0x41')](function(_0x3e3e05){_0x4f35c4(_0x3e3e05);});});}function generateNonce(){return crypto[_0xe9bd('0x85')](0x10)[_0xe9bd('0x86')](_0xe9bd('0x87'));}function generateIssuedAt(){return Math[_0xe9bd('0x88')](Date[_0xe9bd('0x89')]()/0x3e8)[_0xe9bd('0x86')]();}function createJwt(_0x14c599){var _0x37d07a={'payload':{'iat':_0x14c599['apiKeyIat'],'nonce':_0x14c599[_0xe9bd('0x54')]},'options':{'algorithm':_0xe9bd('0x8a'),'subject':_0x14c599['id']['toString'](),'issuer':hardwareConf[_0xe9bd('0x4f')](),'audience':hardwareConf[_0xe9bd('0x4f')]()}};return signJwt(_0x37d07a)['then'](function(_0x561165){return{'iat':_0x14c599[_0xe9bd('0x6d')],'nonce':_0x14c599[_0xe9bd('0x54')],'token':_0x561165};});}
\ No newline at end of file
+var _0xa9e0=['role','redirect','/dashboards/general','send','retrieveApiKey','apiKeyIat','generateApiKey','regenerateApiKey','apiKeyNonce','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','test','ValidationError','validatePasswordHistory','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','Sequelize','decryptString','length','unshift','encryptString','promisify','payload','options','verify','randomBytes','toString','hex','now','../../mysqldb','../../config/environment','../../config/license/hardware','lodash','express-jwt','composable-middleware','basic-auth','crypto','bluebird','moment','secrets','session','name','userpic','permissions','md5secret','voicePause','chatPause','mailPause','showWebBar','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','passwordResetAt','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarPrefixRequired','phoneBarRemoteControlPort','interface','userProfileId','settingsEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','use','ChatInteraction','findOne','params','closed','disposition','then','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','startsWith','authorization','Basic','User','find','authenticate','pass','status','user','Bearer','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','allowedLoginAttempts','blockDuration','isEqual','nonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blockedAt','add','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','isWebrtcLicence','Forbidden','isMiddleware','signToken','setTokenCookie','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'];(function(_0x455f7e,_0x4e2f93){var _0x482a74=function(_0x537632){while(--_0x537632){_0x455f7e['push'](_0x455f7e['shift']());}};_0x482a74(++_0x4e2f93);}(_0xa9e0,0x123));var _0x0a9e=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0xa9e0[_0x18a79d];return _0x4f8848;};'use strict';var db=require(_0x0a9e('0x0'))['db'];var config=require(_0x0a9e('0x1'));var hardwareConf=require(_0x0a9e('0x2'));var licenseUtil=require('../../config/license/util');var encryptor=require('../encryptor');var _=require(_0x0a9e('0x3'));var jwt=require('jsonwebtoken');var expressJwt=require(_0x0a9e('0x4'));var compose=require(_0x0a9e('0x5'));var basicAuth=require(_0x0a9e('0x6'));var crypto=require(_0x0a9e('0x7'));var BPromise=require(_0x0a9e('0x8'));var util=require('util');var moment=require(_0x0a9e('0x9'));var validateJwt=expressJwt({'secret':config[_0x0a9e('0xa')][_0x0a9e('0xb')]});var userAttributes=['id','role','fullname',_0x0a9e('0xc'),'internal','email',_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),_0x0a9e('0x11'),_0x0a9e('0x12'),'faxPause','smsPause','openchannelPause','pauseType',_0x0a9e('0x13'),_0x0a9e('0x14'),_0x0a9e('0x15'),_0x0a9e('0x16'),_0x0a9e('0x17'),_0x0a9e('0x18'),'alias',_0x0a9e('0x19'),_0x0a9e('0x1a'),_0x0a9e('0x1b'),_0x0a9e('0x1c'),_0x0a9e('0x1d'),_0x0a9e('0x1e'),'phoneBarExpires',_0x0a9e('0x1f'),'phoneBarRemoteControl',_0x0a9e('0x20'),'hotdesk',_0x0a9e('0x21'),_0x0a9e('0x22'),'privacyEnabled',_0x0a9e('0x23'),'wssPort',_0x0a9e('0x24'),_0x0a9e('0x25'),_0x0a9e('0x26'),_0x0a9e('0x27'),_0x0a9e('0x28'),_0x0a9e('0x29'),_0x0a9e('0x2a'),_0x0a9e('0x2b'),_0x0a9e('0x2c'),_0x0a9e('0x2d'),_0x0a9e('0x2e'),_0x0a9e('0x2f'),'openchannelAutoanswerDelay',_0x0a9e('0x30'),_0x0a9e('0x31'),'whatsappAutoanswer',_0x0a9e('0x32')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])[_0x0a9e('0x33')](function(_0x432e56,_0x38e7c4,_0x30bae6){if(_0x432e56['user']){_0x30bae6();}else{return db[_0x0a9e('0x34')][_0x0a9e('0x35')]({'where':{'id':_0x432e56[_0x0a9e('0x36')]['id']},'attributes':['id',_0x0a9e('0x37'),_0x0a9e('0x38')],'raw':!![]})[_0x0a9e('0x39')](function(_0x16b1ca){if(_0x16b1ca&&_0x16b1ca['closed']){return _0x38e7c4['status'](_0x16b1ca[_0x0a9e('0x38')]===_0x0a9e('0x3a')?0x195:0x193)[_0x0a9e('0x3b')]({'message':_0x16b1ca[_0x0a9e('0x38')]==='unmanaged'?_0x0a9e('0x3c'):'Forbidden.'});}else{_0x30bae6();}})[_0x0a9e('0x3d')](function(_0x5bfb33){_0x30bae6(_0x5bfb33);});}});};exports[_0x0a9e('0x3e')]=function isAuthenticated(_0x34dc65){return compose()[_0x0a9e('0x33')](function(_0x14433c,_0x140511,_0x1538a4){var _0x11c3b6;if(_0x14433c[_0x0a9e('0x3f')]['authorization']){if(_[_0x0a9e('0x40')](_0x14433c[_0x0a9e('0x3f')][_0x0a9e('0x41')],_0x0a9e('0x42'))){var _0x5c877d=basicAuth(_0x14433c);db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'name':_0x5c877d[_0x0a9e('0xc')]}})[_0x0a9e('0x39')](function(_0x58b06f){if(!_0x58b06f||!_0x58b06f[_0x0a9e('0x45')](_0x5c877d[_0x0a9e('0x46')])){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':'Wrong\x20credentials.'});}_0x14433c[_0x0a9e('0x48')]={'id':_0x58b06f['id']};_0x1538a4();})['catch'](function(_0x2407f9){_0x1538a4(_0x2407f9);});}else if(_[_0x0a9e('0x40')](_0x14433c[_0x0a9e('0x3f')][_0x0a9e('0x41')],_0x0a9e('0x49'))){validateJwt(_0x14433c,_0x140511,_0x1538a4);}else{if(_0x34dc65){_0x1538a4();}else{return _0x140511['status'](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x4a')});}}}else if(_0x14433c[_0x0a9e('0x4b')][_0x0a9e('0x4c')]){try{var _0x2b45ea={'audience':hardwareConf[_0x0a9e('0x4d')](),'issuer':hardwareConf[_0x0a9e('0x4d')]()};verifyJwt(_0x14433c[_0x0a9e('0x4b')]['apikey'],_0x2b45ea)[_0x0a9e('0x39')](function(_0x5e7238){return db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'id':_0x5e7238[_0x0a9e('0x4e')]}})[_0x0a9e('0x39')](function(_0x567193){_0x11c3b6=_0x567193;return db[_0x0a9e('0x4f')][_0x0a9e('0x35')]({'where':{'id':0x1},'attributes':[_0x0a9e('0x50'),_0x0a9e('0x51')],'raw':!![]});})['then'](function(_0x54135e){if(!_0x11c3b6||!_[_0x0a9e('0x52')](_0x11c3b6['apiKeyNonce'],_0x5e7238[_0x0a9e('0x53')])){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x54')});}if(_0x11c3b6['disabled']){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});}if(_0x11c3b6['blocked']){if(_0x54135e[_0x0a9e('0x51')]>0x0){if(moment(_0x11c3b6[_0x0a9e('0x56')])[_0x0a9e('0x57')](_0x54135e['blockDuration'],'minutes')>moment()){return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x140511[_0x0a9e('0x47')](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});}}_0x14433c[_0x0a9e('0x48')]={'id':_0x11c3b6['id']};_0x1538a4();});})['catch'](function(){return _0x140511['status'](0x191)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x55')});});}catch(_0x53f3ee){_0x1538a4(_0x53f3ee);}}else if(_0x34dc65){_0x1538a4();}else{return _0x140511[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x4a')});}})['use'](function(_0x316c8f,_0x2cfea9,_0x274e8e){if(_0x316c8f[_0x0a9e('0x48')]){db[_0x0a9e('0x43')][_0x0a9e('0x44')]({'where':{'id':_0x316c8f[_0x0a9e('0x48')]['id']},'attributes':userAttributes})[_0x0a9e('0x39')](function(_0x23b089){if(!_0x23b089){return _0x2cfea9[_0x0a9e('0x47')](0x194)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x58')});}_0x316c8f[_0x0a9e('0x48')]=_0x23b089;_0x274e8e();})[_0x0a9e('0x3d')](function(_0x37f6cc){_0x274e8e(_0x37f6cc);});}else if(_0x34dc65){_0x274e8e();}else{return _0x2cfea9['status'](0x194)['json']({'message':_0x0a9e('0x59')});}});};exports[_0x0a9e('0x5a')]=function canUpdate(){return compose()[_0x0a9e('0x33')](function(_0x315881,_0x1a69dd,_0xc9a702){return licenseUtil[_0x0a9e('0x5b')]()[_0x0a9e('0x39')](function(_0x432fcc){if(_0x432fcc[_0x0a9e('0x5c')]){_0xc9a702();}else{return _0x1a69dd[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':'Forbidden'});}})[_0x0a9e('0x3d')](function(_0x138b8b){_0xc9a702(_0x138b8b);});});};exports[_0x0a9e('0x5d')]=function isWebrtcLicence(){return compose()[_0x0a9e('0x33')](function(_0x2e8caf,_0xbe9d19,_0x21eb86){return licenseUtil[_0x0a9e('0x5b')]()['then'](function(_0x2e9d90){if(_0x2e9d90['webrtc']){_0x21eb86();}else{return _0xbe9d19[_0x0a9e('0x47')](0x193)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x5e')});}})['catch'](function(_0x14bec2){_0x21eb86(_0x14bec2);});});};exports[_0x0a9e('0x5f')]=function(_0x4774f4,_0x34aa5a,_0x45c845){_0x4774f4[_0x0a9e('0x5f')]=!![];return _0x45c845();};exports[_0x0a9e('0x60')]=function signToken(_0x5bbcde){return signJwt(_0x5bbcde);};exports[_0x0a9e('0x61')]=function(_0x1bde3c,_0x1b5e80){if(!_0x1bde3c[_0x0a9e('0x48')]){return _0x1b5e80[_0x0a9e('0x47')](0x194)[_0x0a9e('0x3b')]({'message':_0x0a9e('0x62')});}var _0x19383e={'payload':{'id':_0x1bde3c[_0x0a9e('0x48')]['id'],'role':_0x1bde3c['user'][_0x0a9e('0x63')]},'options':{'expiresIn':0x15180}};return signJwt(_0x19383e)[_0x0a9e('0x39')](function(_0x4f7240){_0x1b5e80['cookie']('motion.token',_0x4f7240);_0x1b5e80[_0x0a9e('0x64')](_0x0a9e('0x65'));})[_0x0a9e('0x3d')](function(_0x11545a){return _0x1b5e80[_0x0a9e('0x47')](0x1f4)[_0x0a9e('0x66')](_0x11545a);});};exports[_0x0a9e('0x67')]=function(_0x375c18){if(_['isNil'](_0x375c18['apiKeyNonce'])||_['isNil'](_0x375c18[_0x0a9e('0x68')])){return null;}else{return createJwt(_0x375c18);}};exports[_0x0a9e('0x69')]=function(_0x14d602){_0x14d602['apiKeyNonce']=generateNonce();_0x14d602[_0x0a9e('0x68')]=generateIssuedAt();return createJwt(_0x14d602);};exports[_0x0a9e('0x6a')]=function(_0x53d113,_0x5a88da){var _0x2ef381=_0x53d113['query'][_0x0a9e('0x4c')];if(_0x2ef381){var _0x4c3845={'nonce':_0x5a88da[_0x0a9e('0x6b')],'iat':_0x5a88da[_0x0a9e('0x68')],'audience':hardwareConf[_0x0a9e('0x4d')](),'issuer':hardwareConf['getUuid']()};return verifyJwt(_0x2ef381,_0x4c3845)[_0x0a9e('0x39')](function(){return generateApiKey(_0x5a88da);});}else{throw{'message':_0x0a9e('0x6c')};}};exports['validatePasswordPattern']=function(_0x50f687){var _0x128aa6=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x128aa6[_0x0a9e('0x6d')](_0x50f687))throw new db['Sequelize'][(_0x0a9e('0x6e'))]('The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.');return;};exports[_0x0a9e('0x6f')]=function(_0x523cd2,_0xe22ccc,_0x4a6deb){var _0x5da27d=encryptor['decryptString'](_0xe22ccc)[_0x0a9e('0x70')](',');for(var _0x47de4c=0x0;_0x47de4c<_0x4a6deb;_0x47de4c++){if(!_0x5da27d[_0x47de4c])break;if(_0x523cd2[_0x0a9e('0x71')]()===_0x5da27d[_0x47de4c][_0x0a9e('0x71')]()){var _0x3cfd00=util[_0x0a9e('0x72')](_0x0a9e('0x73'),_0x4a6deb);if(_0x4a6deb===0x1){_0x3cfd00=_0x0a9e('0x74');}throw new db[(_0x0a9e('0x75'))][(_0x0a9e('0x6e'))](_0x3cfd00);}}return;};exports['updatePasswordsHistory']=function(_0x1c693e,_0x121cef){var _0x2642bb=_0x121cef?encryptor[_0x0a9e('0x76')](_0x121cef)[_0x0a9e('0x70')](','):[];if(_0x2642bb[_0x0a9e('0x77')]===0x5){_0x2642bb['splice'](-0x1,0x1);}_0x2642bb[_0x0a9e('0x78')](_0x1c693e);return encryptor[_0x0a9e('0x79')](_0x2642bb['join'](','));};function signJwt(_0x3649cc){var _0x5cc8fb=BPromise[_0x0a9e('0x7a')](jwt['sign'],{'context':jwt});var _0x4b3c1a=_0x3649cc['secret']||config[_0x0a9e('0xa')]['session'];return new BPromise(function(_0x2244d6,_0x1fc70e){_0x5cc8fb(_0x3649cc[_0x0a9e('0x7b')],_0x4b3c1a,_0x3649cc[_0x0a9e('0x7c')])[_0x0a9e('0x39')](function(_0x26d7db){_0x2244d6(_0x26d7db);})['catch'](function(_0x1627a7){_0x1fc70e(_0x1627a7);});});}function verifyJwt(_0x5854cc,_0xca4ade,_0x1f07cb){var _0x51aaf7=BPromise['promisify'](jwt[_0x0a9e('0x7d')],{'context':jwt});var _0x156f1c=_0x1f07cb||config[_0x0a9e('0xa')][_0x0a9e('0xb')];return new BPromise(function(_0x497d91,_0x1d0dc8){_0x51aaf7(_0x5854cc,_0x156f1c,_0xca4ade)[_0x0a9e('0x39')](function(_0x54327c){_0x497d91(_0x54327c);})[_0x0a9e('0x3d')](function(_0x17e88c){_0x1d0dc8(_0x17e88c);});});}function generateNonce(){return crypto[_0x0a9e('0x7e')](0x10)[_0x0a9e('0x7f')](_0x0a9e('0x80'));}function generateIssuedAt(){return Math['floor'](Date[_0x0a9e('0x81')]()/0x3e8)[_0x0a9e('0x7f')]();}function createJwt(_0x281c7d){var _0x47bb43={'payload':{'iat':_0x281c7d[_0x0a9e('0x68')],'nonce':_0x281c7d['apiKeyNonce']},'options':{'algorithm':'HS512','subject':_0x281c7d['id'][_0x0a9e('0x7f')](),'issuer':hardwareConf[_0x0a9e('0x4d')](),'audience':hardwareConf[_0x0a9e('0x4d')]()}};return signJwt(_0x47bb43)[_0x0a9e('0x39')](function(_0x186f39){return{'iat':_0x281c7d[_0x0a9e('0x68')],'nonce':_0x281c7d[_0x0a9e('0x6b')],'token':_0x186f39};});}
\ No newline at end of file
index fe88fd2..1666323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb10b=['user','clause','tags','skip','checkListsRestrictions','ids','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts','rows','catch','describe','CmContact','keys','startsWith','cf_','map','CmCustomField','findOne','slice','all','fieldType','type','lodash','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseAdvancedSearchFilter','parseQueryParameters','default','where','fields','filter'];(function(_0x1d5737,_0x450bea){var _0x3843c2=function(_0x7a0646){while(--_0x7a0646){_0x1d5737['push'](_0x1d5737['shift']());}};_0x3843c2(++_0x450bea);}(_0xb10b,0x12a));var _0xbb10=function(_0x1d69e5,_0x2a29af){_0x1d69e5=_0x1d69e5-0x0;var _0x17da11=_0xb10b[_0x1d69e5];return _0x17da11;};'use strict';var _=require(_0xbb10('0x0'));var sqlUtils=require('./sql-utils');var db=require(_0xbb10('0x1'))['db'];exports[_0xbb10('0x2')]=function(_0x1dcb08,_0x4d688c,_0x4541ae,_0x9bbed){var _0x460981={'count':0x0,'rows':[]};var _0x22320e=sqlUtils[_0xbb10('0x3')](_0x4d688c,_0x1dcb08);if(_0x22320e){return Promise[_0xbb10('0x4')](_0x460981);}var _0x481979=sqlUtils[_0xbb10('0x5')]();var _0x3cdd53={};var _0x513741=![];var _0x1b9e94=![];return Promise[_0xbb10('0x4')]()[_0xbb10('0x6')](function(){if(_0x1dcb08[_0xbb10('0x7')]){return sqlUtils[_0xbb10('0x8')](_0x1dcb08[_0xbb10('0x7')],_0x9bbed);}else{return sqlUtils[_0xbb10('0x9')](_0x1dcb08,_0x9bbed);}})[_0xbb10('0x6')](function(_0x5ab04a){_0x481979['where'](_0x5ab04a[_0xbb10('0xa')]);_0x481979[_0xbb10('0xb')](_0x5ab04a[_0xbb10('0xc')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xd')]);_0x481979['where'](_0x5ab04a[_0xbb10('0xe')][_0xbb10('0xf')]);_0x3cdd53=_0x5ab04a[_0xbb10('0x10')];_0x1b9e94=_0x5ab04a[_0xbb10('0xe')][_0xbb10('0x11')];return sqlUtils[_0xbb10('0x12')](_0x4d688c,_0x1dcb08,_0x1b9e94);})['then'](function(_0x26e021){_0x481979[_0xbb10('0xb')](_0x26e021);var _0x45b9d6=_0x1dcb08[_0xbb10('0x7')]?_0x3cdd53[_0xbb10('0x13')]:_0x1dcb08[_0xbb10('0x14')];_0x513741=_0x45b9d6?!![]:![];return sqlUtils[_0xbb10('0x15')](_0x481979,_0x45b9d6);})[_0xbb10('0x6')](function(_0x3e26f4){_0x460981[_0xbb10('0x16')]=_0x3e26f4;if(_0x460981['count']===0x0){return;}return sqlUtils[_0xbb10('0x17')](_0x481979,_0x1dcb08[_0xbb10('0xc')],_0x4541ae,_0x513741,_0x3cdd53[_0xbb10('0xf')],_0x1b9e94);})[_0xbb10('0x6')](function(_0x378da8){if(!_0x378da8){return[];}return sqlUtils[_0xbb10('0x18')](_0x378da8,_0x1dcb08,_0x4541ae);})[_0xbb10('0x6')](function(_0x30efc6){_0x460981[_0xbb10('0x19')]=_0x30efc6;return _0x460981;})[_0xbb10('0x1a')](function(_0x48b6e9){throw _0x48b6e9;});};exports[_0xbb10('0x1b')]=function(){var _0x19f48d={};var _0x388fab=[];return db[_0xbb10('0x1c')][_0xbb10('0x1b')]()[_0xbb10('0x6')](function(_0x4deb49){_0x19f48d=_0x4deb49;var _0x12f888=Object[_0xbb10('0x1d')](_0x19f48d)['filter'](function(_0x4c4b0d){return _[_0xbb10('0x1e')](_0x4c4b0d,_0xbb10('0x1f'))?_0x4c4b0d:undefined;});var _0x2e911d=_0x12f888[_0xbb10('0x20')](function(_0x445761){return db[_0xbb10('0x21')][_0xbb10('0x22')]({'where':{'id':_0x445761[_0xbb10('0x23')](0x3)},'raw':!![]});});return Promise[_0xbb10('0x24')](_0x2e911d);})[_0xbb10('0x6')](function(_0x3ba6cd){for(var _0x26ad93=0x0;_0x26ad93<_0x3ba6cd['length'];_0x26ad93++){if(_0x3ba6cd[_0x26ad93]){var _0x4fedac='cf_'+_0x3ba6cd[_0x26ad93]['id'];_0x19f48d[_0x4fedac][_0xbb10('0x25')]=_0x3ba6cd[_0x26ad93][_0xbb10('0x26')];}}_0x388fab=_[_0xbb10('0x20')](Object['keys'](_0x19f48d),function(_0x2fdde9){return{'name':_0x2fdde9,'type':_0x19f48d[_0x2fdde9][_0xbb10('0x26')]};});return _0x388fab;})[_0xbb10('0x1a')](function(_0x1d5e95){throw _0x1d5e95;});};
\ No newline at end of file
+var _0x5f2f=['rows','catch','keys','filter','startsWith','cf_','map','CmCustomField','findOne','slice','length','fieldType','type','lodash','./sql-utils','../../mysqldb','findAll','skipContactsQuery','resolve','getContactsSubquery','then','search','parseQueryParameters','where','fields','user','clause','tags','skip','tag','countFilteredContacts','count','buildContactsQuery','getFilteredContacts'];(function(_0x24c38e,_0x512304){var _0x5070ed=function(_0x572f4a){while(--_0x572f4a){_0x24c38e['push'](_0x24c38e['shift']());}};_0x5070ed(++_0x512304);}(_0x5f2f,0x73));var _0xf5f2=function(_0x1c1d04,_0x270870){_0x1c1d04=_0x1c1d04-0x0;var _0x6f7e41=_0x5f2f[_0x1c1d04];return _0x6f7e41;};'use strict';var _=require(_0xf5f2('0x0'));var sqlUtils=require(_0xf5f2('0x1'));var db=require(_0xf5f2('0x2'))['db'];exports[_0xf5f2('0x3')]=function(_0x1172dd,_0x174bc7,_0x3c72ee,_0x107cf){var _0x501fbd={'count':0x0,'rows':[]};var _0x4854b6=sqlUtils[_0xf5f2('0x4')](_0x174bc7,_0x1172dd);if(_0x4854b6){return Promise[_0xf5f2('0x5')](_0x501fbd);}var _0xad7f65=sqlUtils[_0xf5f2('0x6')]();var _0x3133bc={};var _0x473100=![];var _0x5907aa=![];return Promise[_0xf5f2('0x5')]()[_0xf5f2('0x7')](function(){if(_0x1172dd[_0xf5f2('0x8')]){return sqlUtils['parseAdvancedSearchFilter'](_0x1172dd[_0xf5f2('0x8')],_0x107cf);}else{return sqlUtils[_0xf5f2('0x9')](_0x1172dd,_0x107cf);}})[_0xf5f2('0x7')](function(_0x4e0e6b){_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b['default']);_0xad7f65['where'](_0x4e0e6b[_0xf5f2('0xb')]);_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b['filter']);_0xad7f65[_0xf5f2('0xa')](_0x4e0e6b[_0xf5f2('0xc')][_0xf5f2('0xd')]);_0x3133bc=_0x4e0e6b[_0xf5f2('0xe')];_0x5907aa=_0x4e0e6b[_0xf5f2('0xc')][_0xf5f2('0xf')];return sqlUtils['checkListsRestrictions'](_0x174bc7,_0x1172dd,_0x5907aa);})[_0xf5f2('0x7')](function(_0xea612c){_0xad7f65[_0xf5f2('0xa')](_0xea612c);var _0x1c1a5c=_0x1172dd[_0xf5f2('0x8')]?_0x3133bc['ids']:_0x1172dd[_0xf5f2('0x10')];_0x473100=_0x1c1a5c?!![]:![];return sqlUtils[_0xf5f2('0x11')](_0xad7f65,_0x1c1a5c);})[_0xf5f2('0x7')](function(_0x1b6dd2){_0x501fbd[_0xf5f2('0x12')]=_0x1b6dd2;if(_0x501fbd[_0xf5f2('0x12')]===0x0){return;}return sqlUtils[_0xf5f2('0x13')](_0xad7f65,_0x1172dd[_0xf5f2('0xb')],_0x3c72ee,_0x473100,_0x3133bc[_0xf5f2('0xd')],_0x5907aa);})[_0xf5f2('0x7')](function(_0x20fccd){if(!_0x20fccd){return[];}return sqlUtils[_0xf5f2('0x14')](_0x20fccd,_0x1172dd,_0x3c72ee);})[_0xf5f2('0x7')](function(_0x3ee69){_0x501fbd[_0xf5f2('0x15')]=_0x3ee69;return _0x501fbd;})[_0xf5f2('0x16')](function(_0x1bf655){throw _0x1bf655;});};exports['describe']=function(){var _0x34706d={};var _0x47101e=[];return db['CmContact']['describe']()[_0xf5f2('0x7')](function(_0x388e6c){_0x34706d=_0x388e6c;var _0x4ae323=Object[_0xf5f2('0x17')](_0x34706d)[_0xf5f2('0x18')](function(_0x39e44a){return _[_0xf5f2('0x19')](_0x39e44a,_0xf5f2('0x1a'))?_0x39e44a:undefined;});var _0x4c691a=_0x4ae323[_0xf5f2('0x1b')](function(_0x4669a6){return db[_0xf5f2('0x1c')][_0xf5f2('0x1d')]({'where':{'id':_0x4669a6[_0xf5f2('0x1e')](0x3)},'raw':!![]});});return Promise['all'](_0x4c691a);})['then'](function(_0x5f1124){for(var _0x3f79d5=0x0;_0x3f79d5<_0x5f1124[_0xf5f2('0x1f')];_0x3f79d5++){if(_0x5f1124[_0x3f79d5]){var _0x1a5bb3=_0xf5f2('0x1a')+_0x5f1124[_0x3f79d5]['id'];_0x34706d[_0x1a5bb3][_0xf5f2('0x20')]=_0x5f1124[_0x3f79d5][_0xf5f2('0x21')];}}_0x47101e=_[_0xf5f2('0x1b')](Object[_0xf5f2('0x17')](_0x34706d),function(_0x4ab014){return{'name':_0x4ab014,'type':_0x34706d[_0x4ab014][_0xf5f2('0x21')]};});return _0x47101e;})[_0xf5f2('0x16')](function(_0x375ca8){throw _0x375ca8;});};
\ No newline at end of file
index fd4fd44..5458cd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc6d=['isEmpty','t.id\x20IN\x20?','toString','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','../interaction/utils','../../mysqldb','role','search','ListId','autocomplete','true','select','from','cm_contacts','where','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','tools_tags','phone','mobile','fax','CompanyId','deletedAt','TagIds','includes','forEach','field','GROUP_CONCAT(DISTINCT\x20t.id)','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','split','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.id\x20LIKE\x20?','c.mobile\x20LIKE\x20?','c.fax\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','parseSearch','conditions','name','dateOfBirth','fieldType','datetime','DATE','buildExpression','type','default','text','value','start','map','tags','clause','and','ids','User','user','skip','some','compact','Contact','push','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','resolve','then','fields','tag','filter','agent','getLists','attributes','group','c.id','limit','offset','subqry.id','having','order','DESC','subqry.','Tag','findAll','color','Sequelize','QueryTypes','SELECT','CmContact','sequelize','query','Tags','COUNT(*)'];(function(_0x3cc4c2,_0x856e05){var _0x1bef64=function(_0x1d8b89){while(--_0x1d8b89){_0x3cc4c2['push'](_0x3cc4c2['shift']());}};_0x1bef64(++_0x856e05);}(_0xbc6d,0x14b));var _0xdbc6=function(_0x2bf258,_0x5e0bb2){_0x2bf258=_0x2bf258-0x0;var _0x3b43af=_0xbc6d[_0x2bf258];return _0x3b43af;};'use strict';var _=require(_0xdbc6('0x0'));var squel=require(_0xdbc6('0x1'));var as=require(_0xdbc6('0x2'));var qs=require(_0xdbc6('0x3'));var utils=require(_0xdbc6('0x4'));var db=require(_0xdbc6('0x5'))['db'];function skipContactsQuery(_0x437bdb,_0x23585c){var _0x35c9a2=![];if(_0x437bdb[_0xdbc6('0x6')]==='agent'&&!_0x23585c[_0xdbc6('0x7')]&&!_0x23585c[_0xdbc6('0x8')]&&_0x23585c[_0xdbc6('0x9')]!==_0xdbc6('0xa')){_0x35c9a2=!![];}return _0x35c9a2;}function getContactsSubquery(){return squel[_0xdbc6('0xb')]()[_0xdbc6('0xc')](_0xdbc6('0xd'),'c')[_0xdbc6('0xe')](_0xdbc6('0xf'));}function applyJoinClauses(_0x308fb5,_0x49913b){var _0x1b6980=_0x49913b?'c':_0xdbc6('0x10');_0x308fb5[_0xdbc6('0x11')](_0xdbc6('0x12'),'uc',_0xdbc6('0x13')+_0x1b6980+_0xdbc6('0x14'))['left_join'](_0xdbc6('0x15'),'ct',_0xdbc6('0x16')+_0x1b6980+'.id')['left_join'](_0xdbc6('0x17'),'t','t.id\x20=\x20ct.TagId');return _0x308fb5;}function addFieldsToQuery(_0x31c5ce,_0x5c100b,_0x2110dd,_0x2e6f04,_0x43fcd5){var _0x2da40b=_0x43fcd5?'c':_0xdbc6('0x10');if(!_0x5c100b){_0x5c100b=['id','firstName','lastName',_0xdbc6('0x18'),_0xdbc6('0x19'),_0xdbc6('0x1a'),'email',_0xdbc6('0x8'),_0xdbc6('0x1b'),'createdAt','updatedAt',_0xdbc6('0x1c'),_0xdbc6('0x1d')];}else if(!_0x5c100b[_0xdbc6('0x1e')]('id')){_0x5c100b['push']('id');}var _0x1f337c=_0x2110dd&&_0x43fcd5||!_0x2110dd&&!_0x43fcd5;if(_0x2e6f04){_0x1f337c=_0x2e6f04&&_0x43fcd5||!_0x2e6f04&&!_0x43fcd5;}_0x5c100b[_0xdbc6('0x1f')](function(_0x30795c){if(_0x30795c===_0xdbc6('0x1d')){if(_0x1f337c){_0x31c5ce[_0xdbc6('0x20')](_0xdbc6('0x21'),_0x30795c);}else if(_0x2110dd||_0x2e6f04){_0x31c5ce['field'](_0x2da40b+'.'+_0x30795c);}}else{_0x31c5ce['field'](_0x2da40b+'.'+_0x30795c);}});return _0x31c5ce;}function getSqlClauses(){var _0xc96204={'default':squel[_0xdbc6('0x22')](),'fields':squel[_0xdbc6('0x22')](),'filter':squel[_0xdbc6('0x22')](),'tags':{'clause':squel[_0xdbc6('0x22')](),'ids':null},'user':{'clause':squel[_0xdbc6('0x22')](),'skip':![]}};return _0xc96204;}function parseTagParameter(_0x4eaa0a){var _0x5a80e8=squel[_0xdbc6('0x22')]();if(_0x4eaa0a){var _0x1464d5=utils[_0xdbc6('0x23')](_0x4eaa0a);_0x1464d5['forEach'](function(_0x2a9874){_0x5a80e8['or'](_0xdbc6('0x24'),'%,'+_0x2a9874+',%');});}return _0x5a80e8;}function parseSearchFilter(_0x2a6426){var _0x10f90c=squel[_0xdbc6('0x22')]();if(_0x2a6426){var _0x32c091=_0x2a6426[_0xdbc6('0x25')]('\x5c','\x5c\x5c')[_0xdbc6('0x25')](/'/g,'\x27\x27');if(_0x32c091[_0xdbc6('0x26')]('\x20')[_0xdbc6('0x27')]>0x1){_0x10f90c['or'](_0xdbc6('0x28'),qs[_0xdbc6('0x29')](_0x32c091),null);}else{if(qs[_0xdbc6('0x2a')](_0x32c091)){_0x10f90c['or'](_0xdbc6('0x2b'),_0x32c091+'%');_0x10f90c['or']('c.phone\x20LIKE\x20?',_0x32c091+'%');_0x10f90c['or'](_0xdbc6('0x2c'),_0x32c091+'%');_0x10f90c['or'](_0xdbc6('0x2d'),_0x32c091+'%');}else if(qs[_0xdbc6('0x2e')](_0x32c091)){_0x10f90c['or'](_0xdbc6('0x2f'),_0x32c091+'%');}else{_0x10f90c['or']('c.firstName\x20LIKE\x20?','%'+_0x32c091+'%');_0x10f90c['or']('c.lastName\x20LIKE\x20?','%'+_0x32c091+'%');_0x10f90c['or']('c.email\x20LIKE\x20?','%'+_0x32c091+'%');}}}return _0x10f90c;}function parseAdvancedSearchFilter(_0x80a2e4,_0x452eb5){var _0x2433c8=getSqlClauses();var _0x4d991d=as[_0xdbc6('0x30')](_0x80a2e4);var _0x19ba58=_0x4d991d['sqlOperator'];for(var _0x1240ff=0x0;_0x1240ff<_0x4d991d['conditions'][_0xdbc6('0x27')];_0x1240ff++){var _0x19cd69=_0x4d991d[_0xdbc6('0x31')][_0x1240ff];var _0x49da4a='c';var _0x43fef5=_['find'](_0x452eb5,[_0xdbc6('0x32'),_0x19cd69[_0xdbc6('0x20')]]);if(_0x43fef5){if(_0x19cd69[_0xdbc6('0x20')]===_0xdbc6('0x33')||_0x43fef5[_0xdbc6('0x34')]===_0xdbc6('0x35')){_0x19cd69['castTo']=_0xdbc6('0x36');}var _0xdf3c45=as[_0xdbc6('0x37')](_0x49da4a,_0x43fef5[_0xdbc6('0x38')],_0x19cd69);_0x2433c8[_0xdbc6('0x39')][_0x19ba58](_0xdf3c45[_0xdbc6('0x3a')],_0xdf3c45[_0xdbc6('0x3b')][_0xdbc6('0x3c')],_0xdf3c45[_0xdbc6('0x3b')]['end']);}else{if(_0x19cd69['field']==='Tag'){var _0xbd0b0b=_0x19cd69[_0xdbc6('0x3b')]['split'](',')[_0xdbc6('0x3d')](function(_0x2d926c){return Number(_0x2d926c);});var _0x147e21=parseTagParameter(_0xbd0b0b);_0x2433c8[_0xdbc6('0x3e')][_0xdbc6('0x3f')][_0xdbc6('0x40')](_0x147e21);_0x2433c8[_0xdbc6('0x3e')][_0xdbc6('0x41')]=_0xbd0b0b;}else if(_0x19cd69['field']===_0xdbc6('0x42')){_0x2433c8['user'][_0xdbc6('0x3f')]['and']('uc.UserId\x20=\x20?',_0x19cd69[_0xdbc6('0x3b')]);_0x2433c8[_0xdbc6('0x43')][_0xdbc6('0x44')]=!![];}}}return _0x2433c8;}function parseModelFields(_0x211d4f,_0x338c8d){var _0x3205cb=squel[_0xdbc6('0x22')]();var _0x1a4842=_(_0x211d4f)['keys']()[_0xdbc6('0x3d')](function(_0x2b72c9){return _[_0xdbc6('0x45')](_0x338c8d,[_0xdbc6('0x32'),_0x2b72c9])?_0x2b72c9:undefined;})[_0xdbc6('0x46')]()['value']();if(_0x211d4f[_0xdbc6('0x47')]){_0x1a4842[_0xdbc6('0x48')](_0xdbc6('0x47'));}if(_0x1a4842['length']>0x0){_0x1a4842[_0xdbc6('0x1f')](function(_0x11aec9){if(_0x11aec9===_0xdbc6('0x8')){_0x3205cb[_0xdbc6('0x40')](_0xdbc6('0x49'),[][_0xdbc6('0x4a')](_0x211d4f[_0x11aec9]));}else if(_0x11aec9==='Contact'){var _0x20fd44='%'+_0x211d4f[_0x11aec9]+'%';_0x3205cb[_0xdbc6('0x40')](_0xdbc6('0x4b'),_0x20fd44);}else{_0x3205cb['and']('c.'+_0x11aec9+_0xdbc6('0x4c'),_0x211d4f[_0x11aec9]);}});}return _0x3205cb;}function parseQueryParameters(_0x254800,_0x527be5){var _0x52113b=getSqlClauses();return Promise[_0xdbc6('0x4d')]()[_0xdbc6('0x4e')](function(){return parseModelFields(_0x254800,_0x527be5);})['then'](function(_0x4f679e){_0x52113b[_0xdbc6('0x4f')][_0xdbc6('0x40')](_0x4f679e);return parseTagParameter(_0x254800[_0xdbc6('0x50')]);})[_0xdbc6('0x4e')](function(_0x57a65b){_0x52113b[_0xdbc6('0x3e')]['clause'][_0xdbc6('0x40')](_0x57a65b);return parseSearchFilter(_0x254800[_0xdbc6('0x51')]);})['then'](function(_0x5c2e0c){_0x52113b[_0xdbc6('0x51')]=_0x5c2e0c;return _0x52113b;});}function checkListsRestrictions(_0x368341,_0x5b1366,_0x273451){var _0x467985=squel[_0xdbc6('0x22')]();return Promise[_0xdbc6('0x4d')]()[_0xdbc6('0x4e')](function(){if(_0x5b1366[_0xdbc6('0x7')]&&_0x368341[_0xdbc6('0x6')]===_0xdbc6('0x52')&&!_0x273451){return _0x368341[_0xdbc6('0x53')]({'attributes':['id'],'raw':!![]});}})[_0xdbc6('0x4e')](function(_0x17593b){if(_0x17593b){if(_0x17593b[_0xdbc6('0x27')]===0x0){_0x467985[_0xdbc6('0x40')]('c.ListId\x20IS\x20NULL');}else{_0x467985[_0xdbc6('0x40')]('c.ListId\x20IN\x20?',_[_0xdbc6('0x3d')](_0x17593b,'id'));}}})[_0xdbc6('0x4e')](function(){return _0x467985;});}function buildContactsQuery(_0x596bb5,_0x22d869,_0x26fae5,_0x330ace,_0x3422f9,_0x3f0087){if(_0x22d869){_0x22d869=_0x26fae5[_0xdbc6('0x54')];}_0x596bb5=addFieldsToQuery(_0x596bb5,_0x22d869,_0x330ace,_0x3f0087,!![]);var _0x211cf8=squel[_0xdbc6('0xb')]();_0x211cf8=addFieldsToQuery(_0x211cf8,_0x22d869,_0x330ace,_0x3f0087,![]);if(_0x330ace||_0x3f0087){_0x596bb5=applyJoinClauses(_0x596bb5,!![]);_0x596bb5[_0xdbc6('0x55')](_0xdbc6('0x56'));if(_0x26fae5[_0xdbc6('0x57')]){_0x211cf8[_0xdbc6('0x57')](_0x26fae5[_0xdbc6('0x57')]);}if(_0x26fae5[_0xdbc6('0x58')]){_0x211cf8[_0xdbc6('0x58')](_0x26fae5[_0xdbc6('0x58')]);}}else{_0x211cf8=applyJoinClauses(_0x211cf8,![]);_0x211cf8[_0xdbc6('0x55')](_0xdbc6('0x59'));if(_0x26fae5['limit']){_0x596bb5['limit'](_0x26fae5['limit']);}if(_0x26fae5[_0xdbc6('0x58')]){_0x596bb5[_0xdbc6('0x58')](_0x26fae5[_0xdbc6('0x58')]);}}_0x211cf8[_0xdbc6('0x5a')](_0x3422f9);if(_0x26fae5[_0xdbc6('0x5b')]){_0x26fae5[_0xdbc6('0x5b')][_0xdbc6('0x1f')](function(_0x5e0814){_0x596bb5[_0xdbc6('0x5b')]('c.'+_0x5e0814[0x0],_0x5e0814[0x1]===_0xdbc6('0x5c')?![]:!![]);_0x211cf8[_0xdbc6('0x5b')](_0xdbc6('0x5d')+_0x5e0814[0x0],_0x5e0814[0x1]===_0xdbc6('0x5c')?![]:!![]);});}_0x211cf8[_0xdbc6('0xc')](_0x596bb5,_0xdbc6('0x10'));return _0x211cf8;}function getFilteredContacts(_0x2657d0){var _0x276a18=[];return db[_0xdbc6('0x5e')][_0xdbc6('0x5f')]({'attributes':['id',_0xdbc6('0x32'),_0xdbc6('0x60')],'raw':!![]})[_0xdbc6('0x4e')](function(_0x14c031){_0x276a18=_['keyBy'](_0x14c031,'id');var _0x24d68b={'type':db[_0xdbc6('0x61')][_0xdbc6('0x62')][_0xdbc6('0x63')],'model':db[_0xdbc6('0x64')],'mapToModel':!![],'nest':!![],'raw':!![]};return db[_0xdbc6('0x65')][_0xdbc6('0x66')](_0x2657d0['toString'](),_0x24d68b);})[_0xdbc6('0x4e')](function(_0xffb739){_0xffb739['forEach'](function(_0x5f0256){if(_0x5f0256['TagIds']){_0x5f0256['Tags']=[];_0x5f0256['TagIds'][_0xdbc6('0x26')](',')[_0xdbc6('0x1f')](function(_0x56d5a9){_0x5f0256[_0xdbc6('0x67')][_0xdbc6('0x48')](_0x276a18[_0x56d5a9]);});}delete _0x5f0256[_0xdbc6('0x1d')];});return _0xffb739;});}function countFilteredContacts(_0x4d8120,_0x4e26ee){var _0x2e4264=_0x4d8120['clone']();_0x2e4264['field'](_0xdbc6('0x68'));_0x2e4264=applyJoinClauses(_0x2e4264,!![]);_0x4d8120[_0xdbc6('0x55')]('c.id');var _0x44525e=utils[_0xdbc6('0x23')](_0x4e26ee);if(!_[_0xdbc6('0x69')](_0x44525e)){_0x2e4264[_0xdbc6('0xe')](_0xdbc6('0x6a'),_0x44525e);}var _0xda851={'type':db[_0xdbc6('0x61')][_0xdbc6('0x62')][_0xdbc6('0x63')],'raw':!![]};return db['sequelize'][_0xdbc6('0x66')](_0x2e4264[_0xdbc6('0x6b')](),_0xda851)[_0xdbc6('0x4e')](function(_0x312b02){return _0x312b02[0x0][_0xdbc6('0x68')];});}module[_0xdbc6('0x6c')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
+var _0x7081=['deletedAt','includes','push','forEach','TagIds','field','expr','getSelectedTags','CONCAT(\x27,\x27,\x20subqry.TagIds,\x20\x27,\x27)\x20LIKE\x20?','replace','length','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','isNumeric','c.phone\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','parseSearch','conditions','find','name','dateOfBirth','datetime','castTo','DATE','buildExpression','default','text','value','end','split','map','tags','clause','and','User','user','skip','keys','compact','Contact','c.ListId\x20IN\x20?','concat','resolve','then','fields','tag','filter','role','getLists','c.ListId\x20IS\x20NULL','select','c.id','limit','offset','group','subqry.id','having','order','DESC','subqry.','Tag','color','keyBy','Sequelize','QueryTypes','CmContact','query','toString','Tags','isEmpty','where','t.id\x20IN\x20?','SELECT','sequelize','COUNT(*)','exports','squel','../parsers/qs','../interaction/utils','../../mysqldb','agent','search','ListId','autocomplete','true','from','cm_contacts','c.deletedAt\x20IS\x20NULL','subqry','left_join','cm_user_has_contacts','.id','cm_contact_has_tags','ct.CmContactId\x20=\x20','t.id\x20=\x20ct.TagId','firstName','lastName','phone','mobile','fax','email','CompanyId','createdAt'];(function(_0x1e95d6,_0x1d3723){var _0x182b24=function(_0x4c4d52){while(--_0x4c4d52){_0x1e95d6['push'](_0x1e95d6['shift']());}};_0x182b24(++_0x1d3723);}(_0x7081,0x123));var _0x1708=function(_0x209581,_0x11f596){_0x209581=_0x209581-0x0;var _0x2fed45=_0x7081[_0x209581];return _0x2fed45;};'use strict';var _=require('lodash');var squel=require(_0x1708('0x0'));var as=require('../parsers/advancedSearch');var qs=require(_0x1708('0x1'));var utils=require(_0x1708('0x2'));var db=require(_0x1708('0x3'))['db'];function skipContactsQuery(_0x38ca1a,_0x182185){var _0x43db43=![];if(_0x38ca1a['role']===_0x1708('0x4')&&!_0x182185[_0x1708('0x5')]&&!_0x182185[_0x1708('0x6')]&&_0x182185[_0x1708('0x7')]!==_0x1708('0x8')){_0x43db43=!![];}return _0x43db43;}function getContactsSubquery(){return squel['select']()[_0x1708('0x9')](_0x1708('0xa'),'c')['where'](_0x1708('0xb'));}function applyJoinClauses(_0x4a5702,_0x14c159){var _0x2ff341=_0x14c159?'c':_0x1708('0xc');_0x4a5702[_0x1708('0xd')](_0x1708('0xe'),'uc','uc.CmContactId\x20=\x20'+_0x2ff341+_0x1708('0xf'))[_0x1708('0xd')](_0x1708('0x10'),'ct',_0x1708('0x11')+_0x2ff341+_0x1708('0xf'))[_0x1708('0xd')]('tools_tags','t',_0x1708('0x12'));return _0x4a5702;}function addFieldsToQuery(_0x1e7b8b,_0x546ed4,_0x37973f,_0x1eb633,_0x41365a){var _0x2cb697=_0x41365a?'c':_0x1708('0xc');if(!_0x546ed4){_0x546ed4=['id',_0x1708('0x13'),_0x1708('0x14'),_0x1708('0x15'),_0x1708('0x16'),_0x1708('0x17'),_0x1708('0x18'),'ListId',_0x1708('0x19'),_0x1708('0x1a'),'updatedAt',_0x1708('0x1b'),'TagIds'];}else if(!_0x546ed4[_0x1708('0x1c')]('id')){_0x546ed4[_0x1708('0x1d')]('id');}var _0x1f0e1a=_0x37973f&&_0x41365a||!_0x37973f&&!_0x41365a;if(_0x1eb633){_0x1f0e1a=_0x1eb633&&_0x41365a||!_0x1eb633&&!_0x41365a;}_0x546ed4[_0x1708('0x1e')](function(_0x57bbad){if(_0x57bbad===_0x1708('0x1f')){if(_0x1f0e1a){_0x1e7b8b[_0x1708('0x20')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x57bbad);}else if(_0x37973f||_0x1eb633){_0x1e7b8b['field'](_0x2cb697+'.'+_0x57bbad);}}else{_0x1e7b8b[_0x1708('0x20')](_0x2cb697+'.'+_0x57bbad);}});return _0x1e7b8b;}function getSqlClauses(){var _0x1f9791={'default':squel[_0x1708('0x21')](),'fields':squel[_0x1708('0x21')](),'filter':squel[_0x1708('0x21')](),'tags':{'clause':squel[_0x1708('0x21')](),'ids':null},'user':{'clause':squel[_0x1708('0x21')](),'skip':![]}};return _0x1f9791;}function parseTagParameter(_0x1f4f4a){var _0xe9e863=squel[_0x1708('0x21')]();if(_0x1f4f4a){var _0x5baba4=utils[_0x1708('0x22')](_0x1f4f4a);_0x5baba4['forEach'](function(_0x909de4){_0xe9e863['or'](_0x1708('0x23'),'%,'+_0x909de4+',%');});}return _0xe9e863;}function parseSearchFilter(_0xd758e9){var _0x4093c8=squel[_0x1708('0x21')]();if(_0xd758e9){var _0x325219=_0xd758e9['replace']('\x5c','\x5c\x5c')[_0x1708('0x24')](/'/g,'\x27\x27');if(_0x325219['split']('\x20')[_0x1708('0x25')]>0x1){_0x4093c8['or'](_0x1708('0x26'),qs[_0x1708('0x27')](_0x325219),null);}else{if(qs[_0x1708('0x28')](_0x325219)){_0x4093c8['or']('c.id\x20LIKE\x20?',_0x325219+'%');_0x4093c8['or'](_0x1708('0x29'),_0x325219+'%');_0x4093c8['or']('c.mobile\x20LIKE\x20?',_0x325219+'%');_0x4093c8['or']('c.fax\x20LIKE\x20?',_0x325219+'%');}else if(qs[_0x1708('0x2a')](_0x325219)){_0x4093c8['or'](_0x1708('0x2b'),_0x325219+'%');}else{_0x4093c8['or'](_0x1708('0x2c'),'%'+_0x325219+'%');_0x4093c8['or'](_0x1708('0x2d'),'%'+_0x325219+'%');_0x4093c8['or']('c.email\x20LIKE\x20?','%'+_0x325219+'%');}}}return _0x4093c8;}function parseAdvancedSearchFilter(_0x2cb855,_0xdd47d8){var _0x1ad5f9=getSqlClauses();var _0x17b1a3=as[_0x1708('0x2e')](_0x2cb855);var _0x2d5916=_0x17b1a3['sqlOperator'];for(var _0x4c575e=0x0;_0x4c575e<_0x17b1a3[_0x1708('0x2f')][_0x1708('0x25')];_0x4c575e++){var _0x571127=_0x17b1a3[_0x1708('0x2f')][_0x4c575e];var _0x2771a9='c';var _0x251765=_[_0x1708('0x30')](_0xdd47d8,[_0x1708('0x31'),_0x571127['field']]);if(_0x251765){if(_0x571127[_0x1708('0x20')]===_0x1708('0x32')||_0x251765['fieldType']===_0x1708('0x33')){_0x571127[_0x1708('0x34')]=_0x1708('0x35');}var _0xee1c42=as[_0x1708('0x36')](_0x2771a9,_0x251765['type'],_0x571127);_0x1ad5f9[_0x1708('0x37')][_0x2d5916](_0xee1c42[_0x1708('0x38')],_0xee1c42[_0x1708('0x39')]['start'],_0xee1c42['value'][_0x1708('0x3a')]);}else{if(_0x571127[_0x1708('0x20')]==='Tag'){var _0x4f748f=_0x571127[_0x1708('0x39')][_0x1708('0x3b')](',')[_0x1708('0x3c')](function(_0x42ad58){return Number(_0x42ad58);});var _0x3f2e1a=parseTagParameter(_0x4f748f);_0x1ad5f9[_0x1708('0x3d')][_0x1708('0x3e')][_0x1708('0x3f')](_0x3f2e1a);_0x1ad5f9[_0x1708('0x3d')]['ids']=_0x4f748f;}else if(_0x571127[_0x1708('0x20')]===_0x1708('0x40')){_0x1ad5f9['user'][_0x1708('0x3e')][_0x1708('0x3f')]('uc.UserId\x20=\x20?',_0x571127[_0x1708('0x39')]);_0x1ad5f9[_0x1708('0x41')][_0x1708('0x42')]=!![];}}}return _0x1ad5f9;}function parseModelFields(_0x88cfde,_0x10bed4){var _0x5e90d9=squel[_0x1708('0x21')]();var _0x1bee8e=_(_0x88cfde)[_0x1708('0x43')]()[_0x1708('0x3c')](function(_0x1ca14b){return _['some'](_0x10bed4,[_0x1708('0x31'),_0x1ca14b])?_0x1ca14b:undefined;})[_0x1708('0x44')]()[_0x1708('0x39')]();if(_0x88cfde[_0x1708('0x45')]){_0x1bee8e[_0x1708('0x1d')](_0x1708('0x45'));}if(_0x1bee8e[_0x1708('0x25')]>0x0){_0x1bee8e[_0x1708('0x1e')](function(_0x46788f){if(_0x46788f===_0x1708('0x6')){_0x5e90d9[_0x1708('0x3f')](_0x1708('0x46'),[][_0x1708('0x47')](_0x88cfde[_0x46788f]));}else if(_0x46788f===_0x1708('0x45')){var _0x2d6015='%'+_0x88cfde[_0x46788f]+'%';_0x5e90d9[_0x1708('0x3f')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x2d6015);}else{_0x5e90d9[_0x1708('0x3f')]('c.'+_0x46788f+'\x20=\x20?',_0x88cfde[_0x46788f]);}});}return _0x5e90d9;}function parseQueryParameters(_0x37c488,_0x17316c){var _0x37189a=getSqlClauses();return Promise[_0x1708('0x48')]()[_0x1708('0x49')](function(){return parseModelFields(_0x37c488,_0x17316c);})[_0x1708('0x49')](function(_0x10f47b){_0x37189a[_0x1708('0x4a')][_0x1708('0x3f')](_0x10f47b);return parseTagParameter(_0x37c488[_0x1708('0x4b')]);})[_0x1708('0x49')](function(_0x6b44a8){_0x37189a[_0x1708('0x3d')][_0x1708('0x3e')]['and'](_0x6b44a8);return parseSearchFilter(_0x37c488[_0x1708('0x4c')]);})['then'](function(_0x6e907a){_0x37189a['filter']=_0x6e907a;return _0x37189a;});}function checkListsRestrictions(_0x3993ee,_0x5a4982,_0x17daaa){var _0x1abbdf=squel[_0x1708('0x21')]();return Promise[_0x1708('0x48')]()[_0x1708('0x49')](function(){if(_0x5a4982[_0x1708('0x5')]&&_0x3993ee[_0x1708('0x4d')]==='agent'&&!_0x17daaa){return _0x3993ee[_0x1708('0x4e')]({'attributes':['id'],'raw':!![]});}})[_0x1708('0x49')](function(_0x38b0eb){if(_0x38b0eb){if(_0x38b0eb[_0x1708('0x25')]===0x0){_0x1abbdf[_0x1708('0x3f')](_0x1708('0x4f'));}else{_0x1abbdf[_0x1708('0x3f')](_0x1708('0x46'),_[_0x1708('0x3c')](_0x38b0eb,'id'));}}})[_0x1708('0x49')](function(){return _0x1abbdf;});}function buildContactsQuery(_0x56c836,_0x5f077d,_0x310044,_0x4c6d0b,_0x5b5e3f,_0x2d3e4c){if(_0x5f077d){_0x5f077d=_0x310044['attributes'];}_0x56c836=addFieldsToQuery(_0x56c836,_0x5f077d,_0x4c6d0b,_0x2d3e4c,!![]);var _0x2fa9e7=squel[_0x1708('0x50')]();_0x2fa9e7=addFieldsToQuery(_0x2fa9e7,_0x5f077d,_0x4c6d0b,_0x2d3e4c,![]);if(_0x4c6d0b||_0x2d3e4c){_0x56c836=applyJoinClauses(_0x56c836,!![]);_0x56c836['group'](_0x1708('0x51'));if(_0x310044[_0x1708('0x52')]){_0x2fa9e7['limit'](_0x310044['limit']);}if(_0x310044[_0x1708('0x53')]){_0x2fa9e7['offset'](_0x310044[_0x1708('0x53')]);}}else{_0x2fa9e7=applyJoinClauses(_0x2fa9e7,![]);_0x2fa9e7[_0x1708('0x54')](_0x1708('0x55'));if(_0x310044['limit']){_0x56c836[_0x1708('0x52')](_0x310044['limit']);}if(_0x310044[_0x1708('0x53')]){_0x56c836['offset'](_0x310044[_0x1708('0x53')]);}}_0x2fa9e7[_0x1708('0x56')](_0x5b5e3f);if(_0x310044[_0x1708('0x57')]){_0x310044['order'][_0x1708('0x1e')](function(_0x3ae9c6){_0x56c836[_0x1708('0x57')]('c.'+_0x3ae9c6[0x0],_0x3ae9c6[0x1]===_0x1708('0x58')?![]:!![]);_0x2fa9e7[_0x1708('0x57')](_0x1708('0x59')+_0x3ae9c6[0x0],_0x3ae9c6[0x1]===_0x1708('0x58')?![]:!![]);});}_0x2fa9e7['from'](_0x56c836,_0x1708('0xc'));return _0x2fa9e7;}function getFilteredContacts(_0x486171){var _0x2d298f=[];return db[_0x1708('0x5a')]['findAll']({'attributes':['id',_0x1708('0x31'),_0x1708('0x5b')],'raw':!![]})[_0x1708('0x49')](function(_0x1e99be){_0x2d298f=_[_0x1708('0x5c')](_0x1e99be,'id');var _0x1db548={'type':db[_0x1708('0x5d')][_0x1708('0x5e')]['SELECT'],'model':db[_0x1708('0x5f')],'mapToModel':!![],'nest':!![],'raw':!![]};return db['sequelize'][_0x1708('0x60')](_0x486171[_0x1708('0x61')](),_0x1db548);})[_0x1708('0x49')](function(_0xcf3bb5){_0xcf3bb5[_0x1708('0x1e')](function(_0x214c92){if(_0x214c92[_0x1708('0x1f')]){_0x214c92[_0x1708('0x62')]=[];_0x214c92[_0x1708('0x1f')][_0x1708('0x3b')](',')[_0x1708('0x1e')](function(_0x3009f6){_0x214c92['Tags'][_0x1708('0x1d')](_0x2d298f[_0x3009f6]);});}delete _0x214c92[_0x1708('0x1f')];});return _0xcf3bb5;});}function countFilteredContacts(_0x55f397,_0x467a09){var _0x441ff6=_0x55f397['clone']();_0x441ff6['field']('COUNT(*)');_0x441ff6=applyJoinClauses(_0x441ff6,!![]);_0x55f397[_0x1708('0x54')](_0x1708('0x51'));var _0x6b787a=utils['getSelectedTags'](_0x467a09);if(!_[_0x1708('0x63')](_0x6b787a)){_0x441ff6[_0x1708('0x64')](_0x1708('0x65'),_0x6b787a);}var _0x5460e9={'type':db['Sequelize'][_0x1708('0x5e')][_0x1708('0x66')],'raw':!![]};return db[_0x1708('0x67')]['query'](_0x441ff6[_0x1708('0x61')](),_0x5460e9)['then'](function(_0x19e722){return _0x19e722[0x0][_0x1708('0x68')];});}module[_0x1708('0x69')]={'buildContactsQuery':buildContactsQuery,'checkListsRestrictions':checkListsRestrictions,'countFilteredContacts':countFilteredContacts,'getContactsSubquery':getContactsSubquery,'getFilteredContacts':getFilteredContacts,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipContactsQuery':skipContactsQuery};
\ No newline at end of file
index 508104c..2e1e686 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8229=['crypto','bluebird','lodash','../../config/environment','../../config/logger','session','encrypt','algorithm','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createWriteStream','createCipher','data','update','binary','write','end','final','close','unlink','decryptFile','createReadStream','createDecipher','encryptString','utf8','base64','decryptString','secret'];(function(_0x56c809,_0x305058){var _0x7e8952=function(_0x508ec8){while(--_0x508ec8){_0x56c809['push'](_0x56c809['shift']());}};_0x7e8952(++_0x305058);}(_0x8229,0xe7));var _0x9822=function(_0x4ed8af,_0x475fe2){_0x4ed8af=_0x4ed8af-0x0;var _0x3ee848=_0x8229[_0x4ed8af];return _0x3ee848;};'use strict';var crypto=require(_0x9822('0x0'));var fs=require('fs');var BPromise=require(_0x9822('0x1'));var _=require(_0x9822('0x2'));var config=require(_0x9822('0x3'));var logger=require(_0x9822('0x4'))('app');const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0x9822('0x5')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':'aes192'};if(config[_0x9822('0x6')]&&config['encrypt'][_0x9822('0x7')]){var isSupported=isAlgorithmSupported(config[_0x9822('0x6')][_0x9822('0x7')]);if(isSupported){fileOptions[_0x9822('0x7')]=config[_0x9822('0x6')][_0x9822('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()['join'](',\x20');logger['error'](config['encrypt'][_0x9822('0x7')],_0x9822('0x8'),supportedAlgorithms);}}function isASupportedCipher(_0x1e733b){return AES_SUPPORTED_RX[_0x9822('0x9')](_0x1e733b);}function getSupportedCiphers(){return crypto[_0x9822('0xa')]()[_0x9822('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x21cdfa){return getSupportedCiphers()[_0x9822('0xc')](_0x21cdfa)>-0x1;}function combineOptions(_0x458208){var _0x43b6c8={};for(var _0x54989d in fileOptions){if(fileOptions[_0x9822('0xd')](_0x54989d)){_0x43b6c8[_0x54989d]=fileOptions[_0x54989d];}}if(_0x458208){for(var _0x25802f in _0x458208){if(_0x458208[_0x9822('0xd')](_0x25802f)){_0x43b6c8[_0x25802f]=_0x458208[_0x25802f];}}}return _0x43b6c8;}exports[_0x9822('0xe')]=function(_0x4a3f15,_0x41a04e,_0x367b37,_0x4c8e01){return new BPromise(function(_0x7996fe,_0xc28c0d){_0x4c8e01=combineOptions(_0x4c8e01);var _0x33bc85=new Buffer(_0x367b37);var _0x37e4ce=fs['createReadStream'](_0x4a3f15);var _0x129b6f=fs[_0x9822('0xf')](_0x41a04e);var _0x15b7f9=crypto[_0x9822('0x10')](_0x4c8e01[_0x9822('0x7')],_0x33bc85);_0x37e4ce['on'](_0x9822('0x11'),function(_0x196d17){var _0x122c09=new Buffer(_0x15b7f9[_0x9822('0x12')](_0x196d17),_0x9822('0x13'));_0x129b6f[_0x9822('0x14')](_0x122c09);});_0x37e4ce['on'](_0x9822('0x15'),function(){try{var _0xd3eee8=new Buffer(_0x15b7f9[_0x9822('0x16')](_0x9822('0x13')),_0x9822('0x13'));_0x129b6f[_0x9822('0x14')](_0xd3eee8);_0x129b6f[_0x9822('0x15')]();_0x129b6f['on'](_0x9822('0x17'),function(){return _0x7996fe(_0x41a04e);});}catch(_0x2ec276){fs[_0x9822('0x18')](_0x41a04e);return _0xc28c0d(_0x2ec276);}});});};exports[_0x9822('0x19')]=function(_0x589a38,_0x318a9f,_0x363d73,_0x4b9424){return new BPromise(function(_0x48548a,_0x3219ab){_0x4b9424=combineOptions(_0x4b9424);var _0x1529a0=new Buffer(_0x363d73);var _0x442327=fs[_0x9822('0x1a')](_0x589a38);var _0x37cbec=fs['createWriteStream'](_0x318a9f);var _0x2df1d5=crypto[_0x9822('0x1b')](_0x4b9424['algorithm'],_0x1529a0);_0x442327['on'](_0x9822('0x11'),function(_0x3fda37){var _0xfba08f=new Buffer(_0x2df1d5[_0x9822('0x12')](_0x3fda37),_0x9822('0x13'));_0x37cbec['write'](_0xfba08f);});_0x442327['on'](_0x9822('0x15'),function(){try{var _0xe64ea4=new Buffer(_0x2df1d5[_0x9822('0x16')](_0x9822('0x13')),_0x9822('0x13'));_0x37cbec[_0x9822('0x14')](_0xe64ea4);_0x37cbec['end']();_0x37cbec['on'](_0x9822('0x17'),function(){return _0x48548a(_0x318a9f);});}catch(_0x27b73a){fs[_0x9822('0x18')](_0x318a9f);return _0x3219ab(_0x27b73a);}});});};exports[_0x9822('0x1c')]=function(_0x669eb1,_0x53b578,_0x26aec5){var _0x1f4ebb=_0x26aec5||stringOptions[_0x9822('0x7')];var _0x556b1a=_0x53b578||stringOptions['secret'];var _0x5ab093=crypto[_0x9822('0x10')](_0x1f4ebb,_0x556b1a);var _0x37a036=_0x5ab093[_0x9822('0x12')](_0x669eb1,_0x9822('0x1d'),'base64');_0x37a036+=_0x5ab093[_0x9822('0x16')](_0x9822('0x1e'));return _0x37a036;};exports[_0x9822('0x1f')]=function(_0x161d6e,_0x3d2388,_0x501f00){var _0x31246e=_0x501f00||stringOptions['algorithm'];var _0x3eeb50=_0x3d2388||stringOptions[_0x9822('0x20')];var _0x1f0ee0=crypto[_0x9822('0x1b')](_0x31246e,_0x3eeb50);var _0x541f4b=_0x1f0ee0[_0x9822('0x12')](_0x161d6e,'base64',_0x9822('0x1d'));_0x541f4b+=_0x1f0ee0[_0x9822('0x16')](_0x9822('0x1d'));return _0x541f4b;};
\ No newline at end of file
+var _0x35fb=['base64','decryptString','utf8','crypto','bluebird','lodash','../../config/environment','../../config/logger','app','session','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','createWriteStream','createCipher','data','binary','write','final','end','close','unlink','decryptFile','createDecipher','update','encryptString'];(function(_0x3c2666,_0x15fd23){var _0x10c814=function(_0x4660c0){while(--_0x4660c0){_0x3c2666['push'](_0x3c2666['shift']());}};_0x10c814(++_0x15fd23);}(_0x35fb,0x69));var _0xb35f=function(_0x3a2118,_0x31fc3c){_0x3a2118=_0x3a2118-0x0;var _0x1d181d=_0x35fb[_0x3a2118];return _0x1d181d;};'use strict';var crypto=require(_0xb35f('0x0'));var fs=require('fs');var BPromise=require(_0xb35f('0x1'));var _=require(_0xb35f('0x2'));var config=require(_0xb35f('0x3'));var logger=require(_0xb35f('0x4'))(_0xb35f('0x5'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets'][_0xb35f('0x6')],'algorithm':'aes-256-ctr'};const fileOptions={'algorithm':_0xb35f('0x7')};if(config['encrypt']&&config[_0xb35f('0x8')][_0xb35f('0x9')]){var isSupported=isAlgorithmSupported(config['encrypt']['algorithm']);if(isSupported){fileOptions[_0xb35f('0x9')]=config[_0xb35f('0x8')][_0xb35f('0x9')];}else{var supportedAlgorithms=getSupportedCiphers()[_0xb35f('0xa')](',\x20');logger['error'](config[_0xb35f('0x8')][_0xb35f('0x9')],_0xb35f('0xb'),supportedAlgorithms);}}function isASupportedCipher(_0x3cb2a4){return AES_SUPPORTED_RX[_0xb35f('0xc')](_0x3cb2a4);}function getSupportedCiphers(){return crypto[_0xb35f('0xd')]()[_0xb35f('0xe')](isASupportedCipher);}function isAlgorithmSupported(_0x458d22){return getSupportedCiphers()[_0xb35f('0xf')](_0x458d22)>-0x1;}function combineOptions(_0xdc8be0){var _0x14453d={};for(var _0x220475 in fileOptions){if(fileOptions[_0xb35f('0x10')](_0x220475)){_0x14453d[_0x220475]=fileOptions[_0x220475];}}if(_0xdc8be0){for(var _0x4030f6 in _0xdc8be0){if(_0xdc8be0[_0xb35f('0x10')](_0x4030f6)){_0x14453d[_0x4030f6]=_0xdc8be0[_0x4030f6];}}}return _0x14453d;}exports['encryptFile']=function(_0x4e95ef,_0x4132f7,_0x93bd0a,_0x45581e){return new BPromise(function(_0xd49a4f,_0x397bd2){_0x45581e=combineOptions(_0x45581e);var _0x55afb5=new Buffer(_0x93bd0a);var _0x335a9c=fs[_0xb35f('0x11')](_0x4e95ef);var _0x2efbd3=fs[_0xb35f('0x12')](_0x4132f7);var _0x476c44=crypto[_0xb35f('0x13')](_0x45581e[_0xb35f('0x9')],_0x55afb5);_0x335a9c['on'](_0xb35f('0x14'),function(_0x8d55af){var _0xb9ed6a=new Buffer(_0x476c44['update'](_0x8d55af),_0xb35f('0x15'));_0x2efbd3[_0xb35f('0x16')](_0xb9ed6a);});_0x335a9c['on']('end',function(){try{var _0x2945bf=new Buffer(_0x476c44[_0xb35f('0x17')](_0xb35f('0x15')),_0xb35f('0x15'));_0x2efbd3[_0xb35f('0x16')](_0x2945bf);_0x2efbd3[_0xb35f('0x18')]();_0x2efbd3['on'](_0xb35f('0x19'),function(){return _0xd49a4f(_0x4132f7);});}catch(_0x19955e){fs[_0xb35f('0x1a')](_0x4132f7);return _0x397bd2(_0x19955e);}});});};exports[_0xb35f('0x1b')]=function(_0x4f1e95,_0x5e41fa,_0x26a945,_0x5182f4){return new BPromise(function(_0x16ab77,_0x291cb2){_0x5182f4=combineOptions(_0x5182f4);var _0x9eeb1f=new Buffer(_0x26a945);var _0x5c7b3a=fs['createReadStream'](_0x4f1e95);var _0x2b17fc=fs[_0xb35f('0x12')](_0x5e41fa);var _0x4efeba=crypto[_0xb35f('0x1c')](_0x5182f4[_0xb35f('0x9')],_0x9eeb1f);_0x5c7b3a['on'](_0xb35f('0x14'),function(_0x537f70){var _0x5f0afc=new Buffer(_0x4efeba[_0xb35f('0x1d')](_0x537f70),'binary');_0x2b17fc[_0xb35f('0x16')](_0x5f0afc);});_0x5c7b3a['on']('end',function(){try{var _0x1b5df8=new Buffer(_0x4efeba[_0xb35f('0x17')](_0xb35f('0x15')),_0xb35f('0x15'));_0x2b17fc[_0xb35f('0x16')](_0x1b5df8);_0x2b17fc[_0xb35f('0x18')]();_0x2b17fc['on'](_0xb35f('0x19'),function(){return _0x16ab77(_0x5e41fa);});}catch(_0x108ec5){fs[_0xb35f('0x1a')](_0x5e41fa);return _0x291cb2(_0x108ec5);}});});};exports[_0xb35f('0x1e')]=function(_0x54a69e,_0x5d0877,_0x3d997b){var _0x4d1d92=_0x3d997b||stringOptions[_0xb35f('0x9')];var _0xc17bd1=_0x5d0877||stringOptions['secret'];var _0x23421c=crypto['createCipher'](_0x4d1d92,_0xc17bd1);var _0x3c5d32=_0x23421c[_0xb35f('0x1d')](_0x54a69e,'utf8',_0xb35f('0x1f'));_0x3c5d32+=_0x23421c['final'](_0xb35f('0x1f'));return _0x3c5d32;};exports[_0xb35f('0x20')]=function(_0x280a9a,_0x409cc3,_0x15acd9){var _0x2310e0=_0x15acd9||stringOptions[_0xb35f('0x9')];var _0x4ff5ee=_0x409cc3||stringOptions['secret'];var _0x14ea4d=crypto[_0xb35f('0x1c')](_0x2310e0,_0x4ff5ee);var _0x2deae9=_0x14ea4d[_0xb35f('0x1d')](_0x280a9a,'base64',_0xb35f('0x21'));_0x2deae9+=_0x14ea4d[_0xb35f('0x17')](_0xb35f('0x21'));return _0x2deae9;};
\ No newline at end of file
index 0b00548..fde4b02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4ce=['bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','analytics','argv','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','sequelize','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','Empty','length','forEach','query','%s\x20limit\x20%d\x20OFFSET\x20%d','push','QueryTypes','dirname','.csv','join','mkdirSync','then','%s%d.%s','%s.%s','csv','writeFileSync','zip','Completed','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','path','lodash','to-csv'];(function(_0x6918e0,_0x2bc1df){var _0x4f3c61=function(_0x2304f7){while(--_0x2304f7){_0x6918e0['push'](_0x6918e0['shift']());}};_0x4f3c61(++_0x2bc1df);}(_0xa4ce,0x1ec));var _0xea4c=function(_0x2b5eae,_0x55010d){_0x2b5eae=_0x2b5eae-0x0;var _0x5f3ac9=_0xa4ce[_0x2b5eae];return _0x5f3ac9;};'use strict';var util=require('util');var path=require(_0xea4c('0x0'));var _=require(_0xea4c('0x1'));var csv=require(_0xea4c('0x2'));var fs=require('fs');var BPromise=require(_0xea4c('0x3'));var zipdir=require(_0xea4c('0x4'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xea4c('0x5'))[_0xea4c('0x6')];var logger=require(_0xea4c('0x7'))(_0xea4c('0x8'));var EXTRACTED_REPORT_ID=Number(process[_0xea4c('0x9')][0x2]);var QUERY=process[_0xea4c('0x9')][0x3];var PATH=process['argv'][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5780c4,_0x76f1ed){var _0x44b062={'status':_0x5780c4};var _0x162434={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x76f1ed){_0x44b062['savename']=_0x76f1ed;}return db[_0xea4c('0xa')][_0xea4c('0xb')](_0x44b062,_0x162434);}function main(){var _0x91f8cc=0x1388;var _0x28ff03;logger['info'](util[_0xea4c('0xc')](_0xea4c('0xd'),EXTRACTED_REPORT_ID,_0xea4c('0xe')));return db[_0xea4c('0xf')][_0xea4c('0x10')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xea4c('0x11'),_0xea4c('0x12')]})['then'](function(_0x60236){if(_0x60236){_0x28ff03=_0x60236;_0x91f8cc=_0x28ff03[_0xea4c('0x12')]||0x1388;}})['then'](function(){return dbH[_0xea4c('0x13')]['query'](util['format'](_0xea4c('0x14'),QUERY),{'type':dbH['sequelize']['QueryTypes'][_0xea4c('0x15')]});})['then'](function(_0x29f227){if(!_0x29f227[0x0][_0xea4c('0x16')]){return analyticExtractedReport(_0xea4c('0x17'));}var _0x52cc9d=[];var _0x547bcd=0x0;if(_0x28ff03[_0xea4c('0x11')]){if(_0x29f227&&_0x29f227[_0xea4c('0x18')]){var _0x45d855=_['range'](_0x29f227[0x0][_0xea4c('0x16')]/_0x91f8cc);var _0x3cde4a=Number['isInteger'](_0x29f227[0x0]['num']/_0x91f8cc)?_0x29f227[0x0][_0xea4c('0x16')]%_0x91f8cc:0x0;_0x45d855[_0xea4c('0x19')](function(_0x22d4f3){if(_0x22d4f3>0x0){_0x547bcd+=_0x91f8cc;}_0x52cc9d['push'](dbH[_0xea4c('0x13')][_0xea4c('0x1a')](util[_0xea4c('0xc')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x91f8cc,_0x547bcd),{'type':dbH['sequelize']['QueryTypes'][_0xea4c('0x15')]}));});if(_0x3cde4a>0x0){_0x547bcd+=_0x91f8cc;_0x52cc9d['push'](dbH[_0xea4c('0x13')][_0xea4c('0x1a')](util['format'](_0xea4c('0x1b'),QUERY,_0x3cde4a,_0x547bcd),{'type':dbH[_0xea4c('0x13')]['QueryTypes'][_0xea4c('0x15')]}));}}}else{_0x52cc9d[_0xea4c('0x1c')](dbH[_0xea4c('0x13')][_0xea4c('0x1a')](QUERY,{'type':dbH['sequelize'][_0xea4c('0x1d')][_0xea4c('0x15')]}));}var _0x816a7b=path[_0xea4c('0x1e')](PATH);var _0x57b1d9=path['basename'](PATH,_0xea4c('0x1f'));var _0x511ddf=_0x28ff03[_0xea4c('0x11')]&&_0x52cc9d[_0xea4c('0x18')]>0x1;var _0x37724b=[];if(!fs['existsSync'](path[_0xea4c('0x20')](_0x816a7b,_0x57b1d9))&&_0x511ddf){fs[_0xea4c('0x21')](path['join'](_0x816a7b,_0x57b1d9));}return BPromise['each'](_0x52cc9d,function(_0x123041){_0x37724b[_0xea4c('0x1c')](_0x123041);})[_0xea4c('0x22')](function(){for(var _0x3c3648=0x0;_0x3c3648<_0x37724b[_0xea4c('0x18')];_0x3c3648+=0x1){var _0x1cc53d;var _0x4ca413=_0x37724b[_0x3c3648];if(_0x511ddf){_0x1cc53d=path[_0xea4c('0x20')](_0x816a7b,_0x57b1d9,util[_0xea4c('0xc')](_0xea4c('0x23'),_0x57b1d9,_0x3c3648,'csv'));}else{_0x1cc53d=path[_0xea4c('0x20')](_0x816a7b,util[_0xea4c('0xc')](_0xea4c('0x24'),_0x57b1d9,_0xea4c('0x25')));}fs[_0xea4c('0x26')](_0x1cc53d,csv(_0x4ca413));}})[_0xea4c('0x22')](function(){if(_0x511ddf){return new Promise(function(_0x1ed60e){zipdir(path['join'](_0x816a7b,_0x57b1d9),{'saveTo':path[_0xea4c('0x20')](_0x816a7b,util[_0xea4c('0xc')](_0xea4c('0x24'),_0x57b1d9,_0xea4c('0x27')))},function(_0x240e05,_0x104b2b){rimraf(path[_0xea4c('0x20')](_0x816a7b,_0x57b1d9),function(){});_0x1ed60e('zip\x20finished');});});}})[_0xea4c('0x22')](function(){logger['info'](util[_0xea4c('0xc')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0xea4c('0x28'),_0x511ddf?util[_0xea4c('0xc')](_0xea4c('0x24'),_0x57b1d9,_0x511ddf?_0xea4c('0x27'):_0xea4c('0x25')):null);});})['catch'](function(_0x19af50){logger[_0xea4c('0x29')](util[_0xea4c('0xc')](_0xea4c('0x2a'),EXTRACTED_REPORT_ID,'CSV'),util[_0xea4c('0x2b')](_0x19af50,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0xea4c('0x2c')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xf634=['join','mkdirSync','length','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','path','lodash','to-csv','bluebird','rimraf','../../mysqldb','../../config/logger','argv','AnalyticExtractedReport','update','info','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','then','query','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','range','isInteger','push','sequelize','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','.csv','existsSync'];(function(_0x49bf23,_0x1db15c){var _0xc1881c=function(_0x2cf44c){while(--_0x2cf44c){_0x49bf23['push'](_0x49bf23['shift']());}};_0xc1881c(++_0x1db15c);}(_0xf634,0x9f));var _0x4f63=function(_0x400a86,_0x3090ea){_0x400a86=_0x400a86-0x0;var _0x569c27=_0xf634[_0x400a86];return _0x569c27;};'use strict';var util=require('util');var path=require(_0x4f63('0x0'));var _=require(_0x4f63('0x1'));var csv=require(_0x4f63('0x2'));var fs=require('fs');var BPromise=require(_0x4f63('0x3'));var zipdir=require('zip-dir');var rimraf=require(_0x4f63('0x4'));var db=require(_0x4f63('0x5'))['db'];var dbH=require(_0x4f63('0x5'))['dbH'];var logger=require(_0x4f63('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x4f63('0x7')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x4f63('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x5a6556,_0x49ae05){var _0xde2f44={'status':_0x5a6556};var _0x5f2f70={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x49ae05){_0xde2f44['savename']=_0x49ae05;}return db[_0x4f63('0x8')][_0x4f63('0x9')](_0xde2f44,_0x5f2f70);}function main(){var _0x3af537=0x1388;var _0xde9f25;logger[_0x4f63('0xa')](util[_0x4f63('0xb')](_0x4f63('0xc'),EXTRACTED_REPORT_ID,_0x4f63('0xd')));return db[_0x4f63('0xe')][_0x4f63('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4f63('0x10'),_0x4f63('0x11')]})[_0x4f63('0x12')](function(_0x2f06a8){if(_0x2f06a8){_0xde9f25=_0x2f06a8;_0x3af537=_0xde9f25[_0x4f63('0x11')]||0x1388;}})[_0x4f63('0x12')](function(){return dbH['sequelize'][_0x4f63('0x13')](util[_0x4f63('0xb')](_0x4f63('0x14'),QUERY),{'type':dbH['sequelize'][_0x4f63('0x15')][_0x4f63('0x16')]});})[_0x4f63('0x12')](function(_0x189f46){if(!_0x189f46[0x0][_0x4f63('0x17')]){return analyticExtractedReport(_0x4f63('0x18'));}var _0x444952=[];var _0x37f68b=0x0;if(_0xde9f25[_0x4f63('0x10')]){if(_0x189f46&&_0x189f46['length']){var _0x283963=_[_0x4f63('0x19')](_0x189f46[0x0][_0x4f63('0x17')]/_0x3af537);var _0x2d5a31=Number[_0x4f63('0x1a')](_0x189f46[0x0]['num']/_0x3af537)?_0x189f46[0x0][_0x4f63('0x17')]%_0x3af537:0x0;_0x283963['forEach'](function(_0x54f5f5){if(_0x54f5f5>0x0){_0x37f68b+=_0x3af537;}_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](util['format'](_0x4f63('0x1d'),QUERY,_0x3af537,_0x37f68b),{'type':dbH[_0x4f63('0x1c')][_0x4f63('0x15')][_0x4f63('0x16')]}));});if(_0x2d5a31>0x0){_0x37f68b+=_0x3af537;_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](util[_0x4f63('0xb')](_0x4f63('0x1d'),QUERY,_0x2d5a31,_0x37f68b),{'type':dbH[_0x4f63('0x1c')]['QueryTypes'][_0x4f63('0x16')]}));}}}else{_0x444952[_0x4f63('0x1b')](dbH[_0x4f63('0x1c')][_0x4f63('0x13')](QUERY,{'type':dbH[_0x4f63('0x1c')][_0x4f63('0x15')][_0x4f63('0x16')]}));}var _0x3fd8b0=path[_0x4f63('0x1e')](PATH);var _0x1fac2a=path['basename'](PATH,_0x4f63('0x1f'));var _0xdc6f8f=_0xde9f25[_0x4f63('0x10')]&&_0x444952['length']>0x1;var _0xdbef3b=[];if(!fs[_0x4f63('0x20')](path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a))&&_0xdc6f8f){fs[_0x4f63('0x22')](path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a));}return BPromise['each'](_0x444952,function(_0x158c47){_0xdbef3b['push'](_0x158c47);})[_0x4f63('0x12')](function(){for(var _0x48d58e=0x0;_0x48d58e<_0xdbef3b[_0x4f63('0x23')];_0x48d58e+=0x1){var _0x3eb4fe;var _0x3b2922=_0xdbef3b[_0x48d58e];if(_0xdc6f8f){_0x3eb4fe=path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a,util[_0x4f63('0xb')](_0x4f63('0x24'),_0x1fac2a,_0x48d58e,_0x4f63('0x25')));}else{_0x3eb4fe=path[_0x4f63('0x21')](_0x3fd8b0,util[_0x4f63('0xb')](_0x4f63('0x26'),_0x1fac2a,_0x4f63('0x25')));}fs[_0x4f63('0x27')](_0x3eb4fe,csv(_0x3b2922));}})[_0x4f63('0x12')](function(){if(_0xdc6f8f){return new Promise(function(_0x4b83a2){zipdir(path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a),{'saveTo':path[_0x4f63('0x21')](_0x3fd8b0,util['format'](_0x4f63('0x26'),_0x1fac2a,_0x4f63('0x28')))},function(_0x242ae4,_0x283148){rimraf(path[_0x4f63('0x21')](_0x3fd8b0,_0x1fac2a),function(){});_0x4b83a2(_0x4f63('0x29'));});});}})['then'](function(){logger['info'](util[_0x4f63('0xb')](_0x4f63('0x2a'),EXTRACTED_REPORT_ID,_0x4f63('0xd')));return analyticExtractedReport('Completed',_0xdc6f8f?util[_0x4f63('0xb')]('%s.%s',_0x1fac2a,_0xdc6f8f?_0x4f63('0x28'):_0x4f63('0x25')):null);});})[_0x4f63('0x2b')](function(_0x4170c5){logger[_0x4f63('0xa')](util['format'](_0x4f63('0x2c'),EXTRACTED_REPORT_ID,_0x4f63('0xd')),util[_0x4f63('0x2d')](_0x4170c5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x4f63('0x2e')](function(){process[_0x4f63('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
index f53244b..7c0bd39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe864=['inspect','Failed','finally','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','center','Interaction\x20Transcript','finish','error','end','path','moment','html-to-pdfmake','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','bluebird','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','update','map','tableHeader','toString','value','body','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','endDate','header','pageBreak','before','margin','push','\x20/\x20','footer','Arial','Setting','split','splitSizePdf','then','length','range','num','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','basename','.pdf','existsSync','join','each','flatten','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','PDF','Completed','zip','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','AnalyticExtractedReport','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','catch','info','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format'];(function(_0x2c6905,_0x99469e){var _0x124a00=function(_0xa7dabc){while(--_0xa7dabc){_0x2c6905['push'](_0x2c6905['shift']());}};_0x124a00(++_0x99469e);}(_0xe864,0xbf));var _0x4e86=function(_0x1819d1,_0x311e3d){_0x1819d1=_0x1819d1-0x0;var _0x55e84e=_0xe864[_0x1819d1];return _0x55e84e;};'use strict';var _=require('lodash');var fs=require('fs');var util=require('util');var path=require(_0x4e86('0x0'));var moment=require(_0x4e86('0x1'));var htmlToPdfmake=require(_0x4e86('0x2'));var PdfPrinter=require(_0x4e86('0x3'));var zipdir=require(_0x4e86('0x4'));var rimraf=require(_0x4e86('0x5'));var JSDOM=require(_0x4e86('0x6'))[_0x4e86('0x7')];var window=new JSDOM('')['window'];var BPromise=require(_0x4e86('0x8'));var db=require('../../mysqldb')['db'];var dbH=require(_0x4e86('0x9'))[_0x4e86('0xa')];var logger=require(_0x4e86('0xb'))(_0x4e86('0xc'));var EXTRACTED_REPORT_ID=Number(process[_0x4e86('0xd')][0x2]);var QUERY=process[_0x4e86('0xd')][0x3];var PATH=process[_0x4e86('0xd')][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x4e86('0xe');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x1e37a6,_0x565155){var _0x387cb9={'status':_0x1e37a6};var _0x36f891={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x565155){_0x387cb9[_0x4e86('0xf')]=_0x565155;}return db['AnalyticExtractedReport'][_0x4e86('0x10')](_0x387cb9,_0x36f891);}function getHeaders(_0x5e6e2f){return _[_0x4e86('0x11')](_0x5e6e2f,function(_0x5019e8){return{'text':_0x5019e8,'style':_0x4e86('0x12')};});}function getRows(_0x55c861,_0x5aca44){return _[_0x4e86('0x11')](_0x5aca44,function(_0x3a7b64){return _(_0x3a7b64)['pick'](_0x55c861)['map'](function(_0x206257){return _0x206257?_[_0x4e86('0x13')](_0x206257):'';})[_0x4e86('0x14')]();});}function createTable(_0x25633d,_0x543965){var _0x11ef40={'widths':_['fill'](Array(_0x25633d['length']),0x91),'heights':function(_0x2fa632){return _0x2fa632===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xe02da8=getHeaders(_0x25633d);_0x11ef40[_0x4e86('0x15')]['push'](_0xe02da8);var _0x1951d4=getRows(_0x25633d,_0x543965);_0x11ef40['body']=_0x11ef40[_0x4e86('0x15')]['concat'](_0x1951d4);return _0x11ef40;}function createTables(_0x4c9641){var _0x9ab1a0=[];var _0xdcc72d=_['chunk'](Object[_0x4e86('0x16')](_0x4c9641[0x0]),0x5);_0xdcc72d[_0x4e86('0x17')](function(_0x13224f){_0x9ab1a0['push'](createTable(_0x13224f,_0x4c9641));});return _0x9ab1a0;}function getPDFDocDefinition(_0x5821b4){var _0x2ba028=util[_0x4e86('0x18')](_0x4e86('0x19'),NAME,EXTRACTED_REPORT[_0x4e86('0x1a')],moment(EXTRACTED_REPORT['startDate'])[_0x4e86('0x18')](FORMAT),moment(EXTRACTED_REPORT[_0x4e86('0x1b')])[_0x4e86('0x18')](FORMAT));var _0x1da432=[];for(var _0x54d52a=0x0;_0x54d52a<_0x5821b4['length'];_0x54d52a++){var _0x2f4d8d=[];if(_0x54d52a===0x0){_0x2f4d8d['push']({'text':_0x2ba028,'style':_0x4e86('0x1c')});}var _0x3c3a42={'table':_0x5821b4[_0x54d52a]};if(_0x54d52a>0x0){_0x3c3a42[_0x4e86('0x1d')]=_0x4e86('0x1e');_0x3c3a42[_0x4e86('0x1f')]=[0x0,0x46,0x0,0x0];}_0x2f4d8d['push'](_0x3c3a42);_0x1da432[_0x4e86('0x20')](_0x2f4d8d);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x1da432,'footer':function(_0x313cc2,_0x2df879){return{'text':_0x313cc2['toString']()+_0x4e86('0x21')+_0x2df879,'style':_0x4e86('0x22')};},'defaultStyle':{'font':_0x4e86('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x52ce3c){var _0x2d2a77=0x1388;var _0x24b9c4;if(!_0x52ce3c[0x0]['num']){return analyticExtractedReport('Empty');}return db[_0x4e86('0x24')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x4e86('0x25'),_0x4e86('0x26')]})[_0x4e86('0x27')](function(_0x371436){if(_0x371436){_0x24b9c4=_0x371436;_0x2d2a77=_0x24b9c4['splitSizePdf']||0x3e8;}})[_0x4e86('0x27')](function(){var _0x55b11e=[];var _0x3decf7=0x0;if(_0x24b9c4[_0x4e86('0x25')]){if(_0x52ce3c&&_0x52ce3c[_0x4e86('0x28')]){var _0x4153a2=_[_0x4e86('0x29')](_0x52ce3c[0x0][_0x4e86('0x2a')]/_0x2d2a77);var _0x4fcc13=Number[_0x4e86('0x2b')](_0x52ce3c[0x0][_0x4e86('0x2a')]/_0x2d2a77)?_0x52ce3c[0x0][_0x4e86('0x2a')]%_0x2d2a77:0x0;_0x4153a2[_0x4e86('0x17')](function(_0x31d998){if(_0x31d998>0x0){_0x3decf7+=_0x2d2a77;}_0x55b11e[_0x4e86('0x20')](dbH[_0x4e86('0x2c')][_0x4e86('0x2d')](util[_0x4e86('0x18')](_0x4e86('0x2e'),QUERY,_0x2d2a77,_0x3decf7),{'type':dbH['sequelize']['QueryTypes'][_0x4e86('0x2f')]}));});if(_0x4fcc13>0x0){_0x3decf7+=_0x2d2a77;_0x55b11e[_0x4e86('0x20')](dbH['sequelize']['query'](util[_0x4e86('0x18')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4fcc13,_0x3decf7),{'type':dbH['sequelize']['QueryTypes'][_0x4e86('0x2f')]}));}}}else{_0x55b11e[_0x4e86('0x20')](dbH[_0x4e86('0x2c')][_0x4e86('0x2d')](QUERY,{'type':dbH['sequelize'][_0x4e86('0x30')]['SELECT']}));}var _0x18dc7b=path['dirname'](PATH);var _0x3ad646=path[_0x4e86('0x31')](PATH,_0x4e86('0x32'));var _0x1d2824=_0x24b9c4[_0x4e86('0x25')]&&_0x55b11e['length']>0x1;var _0x2c6c9e=[];if(!fs[_0x4e86('0x33')](path['join'](_0x18dc7b,_0x3ad646))&&_0x1d2824){fs['mkdirSync'](path[_0x4e86('0x34')](_0x18dc7b,_0x3ad646));}return BPromise[_0x4e86('0x35')](_0x55b11e,function(_0x3442e1){_0x2c6c9e[_0x4e86('0x20')](_0x3442e1);})[_0x4e86('0x27')](function(){var _0x3805a0=[];for(var _0x4321a1=0x0;_0x4321a1<_0x2c6c9e['length'];_0x4321a1+=0x1){var _0x2120aa=_0x2c6c9e[_0x4321a1];var _0xdc54a0=createTables(_[_0x4e86('0x36')](_0x2120aa));var _0x2cde7f;var _0x32fefa=getPDFDocDefinition(_0xdc54a0);var _0x3c84e4=getPDFPrinter();var _0x4aafd8=_0x3c84e4[_0x4e86('0x37')](_0x32fefa);if(_0x1d2824){_0x2cde7f=path[_0x4e86('0x34')](_0x18dc7b,_0x3ad646,util['format'](_0x4e86('0x38'),_0x3ad646,_0x4321a1,_0x4e86('0x39')));}else{_0x2cde7f=path[_0x4e86('0x34')](_0x18dc7b,util[_0x4e86('0x18')](_0x4e86('0x3a'),_0x3ad646,_0x4e86('0x39')));}_0x3805a0['push'](writePDFDocument(_0x4aafd8,_0x2cde7f));}return Promise[_0x4e86('0x3b')](_0x3805a0);})['then'](function(){if(_0x1d2824){return new Promise(function(_0x50ffe9){zipdir(path[_0x4e86('0x34')](_0x18dc7b,_0x3ad646),{'saveTo':path[_0x4e86('0x34')](_0x18dc7b,util[_0x4e86('0x18')](_0x4e86('0x3a'),_0x3ad646,'zip'))},function(){rimraf(path[_0x4e86('0x34')](_0x18dc7b,_0x3ad646),function(){});_0x50ffe9('zip\x20finished');});});}})[_0x4e86('0x27')](function(){if(!_0x1d2824)return;rimraf(path[_0x4e86('0x34')](_0x18dc7b,_0x3ad646),function(){});})[_0x4e86('0x27')](function(){logger['info'](util[_0x4e86('0x18')]('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x4e86('0x3c')));return analyticExtractedReport(_0x4e86('0x3d'),_0x1d2824?util[_0x4e86('0x18')]('%s.%s',_0x3ad646,_0x1d2824?_0x4e86('0x3e'):'pdf'):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger['info'](util[_0x4e86('0x18')](_0x4e86('0x3f'),EXTRACTED_REPORT_ID,_0x4e86('0x3c')));return db[_0x4e86('0x40')][_0x4e86('0x41')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x4e86('0x27')](function(_0x74a338){EXTRACTED_REPORT=_0x74a338;return dbH[_0x4e86('0x2c')][_0x4e86('0x2d')](util['format'](_0x4e86('0x42'),QUERY),{'type':dbH[_0x4e86('0x2c')]['QueryTypes'][_0x4e86('0x2f')]});})['then'](extractReport)[_0x4e86('0x43')](function(_0x3dcd20){logger[_0x4e86('0x44')](util[_0x4e86('0x18')](_0x4e86('0x45'),EXTRACTED_REPORT_ID,'PDF'),util[_0x4e86('0x46')](_0x3dcd20,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x4e86('0x47'));})[_0x4e86('0x48')](function(){process[_0x4e86('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x35d0e5=new PdfPrinter({'Arial':{'normal':__dirname+_0x4e86('0x4a'),'bold':__dirname+_0x4e86('0x4b'),'italics':__dirname+_0x4e86('0x4c'),'bolditalics':__dirname+_0x4e86('0x4d')}});return _0x35d0e5;}function getPDFDocDefinitionFromHTML(_0x21cea3,_0x560f5a){var _0x1bdd46=util[_0x4e86('0x18')](_0x4e86('0x4e'),_0x560f5a[_0x4e86('0x4f')],_0x560f5a[_0x4e86('0x50')]);var _0x512ef8=moment()[_0x4e86('0x18')](_0x4e86('0x51'))[_0x4e86('0x13')]();var _0x55a493=htmlToPdfmake(_0x21cea3,{'window':window,'tableAutoSize':!![]});return{'content':[_0x55a493],'defaultStyle':{'font':_0x4e86('0x23')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x4e86('0x52'),'margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0x4e86('0x52'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':'center'}},'header':function(){return[{'text':_0x4e86('0x53'),'style':_0x4e86('0x1c')}];},'footer':function(_0x1cc33e,_0x3f930f){return[{'text':util[_0x4e86('0x18')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x1bdd46,_0x1cc33e,_0x3f930f,_0x512ef8),'style':_0x4e86('0x22')}];}};}function writePDFDocument(_0x1c825a,_0x3cd438){return new Promise(function(_0x4e016f,_0x2ae22c){var _0x5b9eeb=_0x1c825a['pipe'](fs['createWriteStream'](_0x3cd438));_0x5b9eeb['on'](_0x4e86('0x54'),function(){_0x4e016f(_0x4e86('0x54'));});_0x5b9eeb['on'](_0x4e86('0x55'),function(_0x1f560c){_0x2ae22c(_0x1f560c);});_0x1c825a[_0x4e86('0x56')]();});}exports['createPdfFromHTML']=function(_0x3e58d2,_0xe138a9){var _0x2a067f=getPDFPrinter();var _0x5eb5fb=getPDFDocDefinitionFromHTML(_0x3e58d2,_0xe138a9);var _0x346a17=_0x2a067f[_0x4e86('0x37')](_0x5eb5fb);return writePDFDocument(_0x346a17,_0xe138a9[_0x4e86('0x0')])[_0x4e86('0x43')](function(_0x3d2a44){throw _0x3d2a44;});};
\ No newline at end of file
+var _0xf4c3=['name','endDate','pageBreak','before','margin','\x20/\x20','footer','Arial','right','num','find','splitSizePdf','then','split','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','QueryTypes','dirname','basename','.pdf','existsSync','mkdirSync','flatten','createPdfKitDocument','join','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','findOne','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','exit','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','center','Interaction\x20Transcript','finish','error','end','createPdfFromHTML','lodash','util','path','moment','html-to-pdfmake','pdfmake/src/printer','jsdom','window','../../mysqldb','dbH','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map','tableHeader','toString','value','fill','length','auto','push','body','concat','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s'];(function(_0x21d797,_0x111a29){var _0x47602b=function(_0x4740f4){while(--_0x4740f4){_0x21d797['push'](_0x21d797['shift']());}};_0x47602b(++_0x111a29);}(_0xf4c3,0x196));var _0x3f4c=function(_0x28a5ca,_0x3ca6d5){_0x28a5ca=_0x28a5ca-0x0;var _0x1ac95e=_0xf4c3[_0x28a5ca];return _0x1ac95e;};'use strict';var _=require(_0x3f4c('0x0'));var fs=require('fs');var util=require(_0x3f4c('0x1'));var path=require(_0x3f4c('0x2'));var moment=require(_0x3f4c('0x3'));var htmlToPdfmake=require(_0x3f4c('0x4'));var PdfPrinter=require(_0x3f4c('0x5'));var zipdir=require('zip-dir');var rimraf=require('rimraf');var JSDOM=require(_0x3f4c('0x6'))['JSDOM'];var window=new JSDOM('')[_0x3f4c('0x7')];var BPromise=require('bluebird');var db=require('../../mysqldb')['db'];var dbH=require(_0x3f4c('0x8'))[_0x3f4c('0x9')];var logger=require('../../config/logger')('analytics');var EXTRACTED_REPORT_ID=Number(process['argv'][0x2]);var QUERY=process[_0x3f4c('0xa')][0x3];var PATH=process['argv'][0x4];var NAME=process['argv'][0x5];var FORMAT=_0x3f4c('0xb');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3bf04c,_0x53e99c){var _0x235c39={'status':_0x3bf04c};var _0x4e90b3={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x53e99c){_0x235c39[_0x3f4c('0xc')]=_0x53e99c;}return db[_0x3f4c('0xd')][_0x3f4c('0xe')](_0x235c39,_0x4e90b3);}function getHeaders(_0xae0cf8){return _[_0x3f4c('0xf')](_0xae0cf8,function(_0x5ce9bc){return{'text':_0x5ce9bc,'style':_0x3f4c('0x10')};});}function getRows(_0x4eed08,_0x3c785d){return _[_0x3f4c('0xf')](_0x3c785d,function(_0x29b104){return _(_0x29b104)['pick'](_0x4eed08)[_0x3f4c('0xf')](function(_0x287507){return _0x287507?_[_0x3f4c('0x11')](_0x287507):'';})[_0x3f4c('0x12')]();});}function createTable(_0xb3f216,_0x184e91){var _0x330ae3={'widths':_[_0x3f4c('0x13')](Array(_0xb3f216[_0x3f4c('0x14')]),0x91),'heights':function(_0x8e45e2){return _0x8e45e2===0x0?_0x3f4c('0x15'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x1db27c=getHeaders(_0xb3f216);_0x330ae3['body'][_0x3f4c('0x16')](_0x1db27c);var _0x4b958b=getRows(_0xb3f216,_0x184e91);_0x330ae3['body']=_0x330ae3[_0x3f4c('0x17')][_0x3f4c('0x18')](_0x4b958b);return _0x330ae3;}function createTables(_0x1a416e){var _0x152053=[];var _0x253e61=_['chunk'](Object[_0x3f4c('0x19')](_0x1a416e[0x0]),0x5);_0x253e61[_0x3f4c('0x1a')](function(_0x1b5e93){_0x152053[_0x3f4c('0x16')](createTable(_0x1b5e93,_0x1a416e));});return _0x152053;}function getPDFDocDefinition(_0x295772){var _0x5a7c74=util[_0x3f4c('0x1b')](_0x3f4c('0x1c'),NAME,EXTRACTED_REPORT[_0x3f4c('0x1d')],moment(EXTRACTED_REPORT['startDate'])[_0x3f4c('0x1b')](FORMAT),moment(EXTRACTED_REPORT[_0x3f4c('0x1e')])[_0x3f4c('0x1b')](FORMAT));var _0x4aa16e=[];for(var _0x12cdd9=0x0;_0x12cdd9<_0x295772[_0x3f4c('0x14')];_0x12cdd9++){var _0x33c1a3=[];if(_0x12cdd9===0x0){_0x33c1a3[_0x3f4c('0x16')]({'text':_0x5a7c74,'style':'header'});}var _0x2ab22a={'table':_0x295772[_0x12cdd9]};if(_0x12cdd9>0x0){_0x2ab22a[_0x3f4c('0x1f')]=_0x3f4c('0x20');_0x2ab22a[_0x3f4c('0x21')]=[0x0,0x46,0x0,0x0];}_0x33c1a3['push'](_0x2ab22a);_0x4aa16e[_0x3f4c('0x16')](_0x33c1a3);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x4aa16e,'footer':function(_0x2df303,_0x331b52){return{'text':_0x2df303[_0x3f4c('0x11')]()+_0x3f4c('0x22')+_0x331b52,'style':_0x3f4c('0x23')};},'defaultStyle':{'font':_0x3f4c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':_0x3f4c('0x25'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2f48c3){var _0x499e17=0x1388;var _0x482211;if(!_0x2f48c3[0x0][_0x3f4c('0x26')]){return analyticExtractedReport('Empty');}return db['Setting'][_0x3f4c('0x27')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x3f4c('0x28')]})['then'](function(_0xb18f56){if(_0xb18f56){_0x482211=_0xb18f56;_0x499e17=_0x482211['splitSizePdf']||0x3e8;}})[_0x3f4c('0x29')](function(){var _0x142660=[];var _0x18e919=0x0;if(_0x482211[_0x3f4c('0x2a')]){if(_0x2f48c3&&_0x2f48c3[_0x3f4c('0x14')]){var _0x272e09=_[_0x3f4c('0x2b')](_0x2f48c3[0x0][_0x3f4c('0x26')]/_0x499e17);var _0x58b31a=Number[_0x3f4c('0x2c')](_0x2f48c3[0x0][_0x3f4c('0x26')]/_0x499e17)?_0x2f48c3[0x0][_0x3f4c('0x26')]%_0x499e17:0x0;_0x272e09[_0x3f4c('0x1a')](function(_0x3d0f78){if(_0x3d0f78>0x0){_0x18e919+=_0x499e17;}_0x142660[_0x3f4c('0x16')](dbH[_0x3f4c('0x2d')][_0x3f4c('0x2e')](util['format'](_0x3f4c('0x2f'),QUERY,_0x499e17,_0x18e919),{'type':dbH['sequelize']['QueryTypes'][_0x3f4c('0x30')]}));});if(_0x58b31a>0x0){_0x18e919+=_0x499e17;_0x142660['push'](dbH['sequelize'][_0x3f4c('0x2e')](util[_0x3f4c('0x1b')](_0x3f4c('0x2f'),QUERY,_0x58b31a,_0x18e919),{'type':dbH[_0x3f4c('0x2d')][_0x3f4c('0x31')]['SELECT']}));}}}else{_0x142660[_0x3f4c('0x16')](dbH[_0x3f4c('0x2d')][_0x3f4c('0x2e')](QUERY,{'type':dbH['sequelize'][_0x3f4c('0x31')][_0x3f4c('0x30')]}));}var _0x2915f9=path[_0x3f4c('0x32')](PATH);var _0x4c0637=path[_0x3f4c('0x33')](PATH,_0x3f4c('0x34'));var _0x41cd0a=_0x482211[_0x3f4c('0x2a')]&&_0x142660['length']>0x1;var _0x49b56e=[];if(!fs[_0x3f4c('0x35')](path['join'](_0x2915f9,_0x4c0637))&&_0x41cd0a){fs[_0x3f4c('0x36')](path['join'](_0x2915f9,_0x4c0637));}return BPromise['each'](_0x142660,function(_0x3ead20){_0x49b56e[_0x3f4c('0x16')](_0x3ead20);})['then'](function(){var _0xd80e1f=[];for(var _0x2be211=0x0;_0x2be211<_0x49b56e['length'];_0x2be211+=0x1){var _0x4ff9f4=_0x49b56e[_0x2be211];var _0x40018c=createTables(_[_0x3f4c('0x37')](_0x4ff9f4));var _0x616778;var _0x3c89e1=getPDFDocDefinition(_0x40018c);var _0x33b089=getPDFPrinter();var _0x3e94b3=_0x33b089[_0x3f4c('0x38')](_0x3c89e1);if(_0x41cd0a){_0x616778=path[_0x3f4c('0x39')](_0x2915f9,_0x4c0637,util[_0x3f4c('0x1b')](_0x3f4c('0x3a'),_0x4c0637,_0x2be211,_0x3f4c('0x3b')));}else{_0x616778=path['join'](_0x2915f9,util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x3f4c('0x3b')));}_0xd80e1f[_0x3f4c('0x16')](writePDFDocument(_0x3e94b3,_0x616778));}return Promise[_0x3f4c('0x3d')](_0xd80e1f);})['then'](function(){if(_0x41cd0a){return new Promise(function(_0x5e1406){zipdir(path['join'](_0x2915f9,_0x4c0637),{'saveTo':path[_0x3f4c('0x39')](_0x2915f9,util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x3f4c('0x3e')))},function(){rimraf(path[_0x3f4c('0x39')](_0x2915f9,_0x4c0637),function(){});_0x5e1406(_0x3f4c('0x3f'));});});}})[_0x3f4c('0x29')](function(){if(!_0x41cd0a)return;rimraf(path['join'](_0x2915f9,_0x4c0637),function(){});})[_0x3f4c('0x29')](function(){logger[_0x3f4c('0x40')](util[_0x3f4c('0x1b')](_0x3f4c('0x41'),EXTRACTED_REPORT_ID,_0x3f4c('0x42')));return analyticExtractedReport('Completed',_0x41cd0a?util[_0x3f4c('0x1b')](_0x3f4c('0x3c'),_0x4c0637,_0x41cd0a?_0x3f4c('0x3e'):_0x3f4c('0x3b')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x3f4c('0x40')](util['format'](_0x3f4c('0x43'),EXTRACTED_REPORT_ID,'PDF'));return db[_0x3f4c('0xd')][_0x3f4c('0x44')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0x3f4c('0x29')](function(_0x309919){EXTRACTED_REPORT=_0x309919;return dbH['sequelize']['query'](util[_0x3f4c('0x1b')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0x3f4c('0x2d')][_0x3f4c('0x31')][_0x3f4c('0x30')]});})['then'](extractReport)[_0x3f4c('0x45')](function(_0x48e28c){logger[_0x3f4c('0x40')](util[_0x3f4c('0x1b')](_0x3f4c('0x46'),EXTRACTED_REPORT_ID,_0x3f4c('0x42')),util[_0x3f4c('0x47')](_0x48e28c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x3f4c('0x48'));})['finally'](function(){process[_0x3f4c('0x49')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x406401=new PdfPrinter({'Arial':{'normal':__dirname+_0x3f4c('0x4a'),'bold':__dirname+_0x3f4c('0x4b'),'italics':__dirname+_0x3f4c('0x4c'),'bolditalics':__dirname+_0x3f4c('0x4d')}});return _0x406401;}function getPDFDocDefinitionFromHTML(_0x4f4701,_0x20619e){var _0x79bcf1=util[_0x3f4c('0x1b')](_0x3f4c('0x4e'),_0x20619e[_0x3f4c('0x4f')],_0x20619e[_0x3f4c('0x50')]);var _0x529ba0=moment()[_0x3f4c('0x1b')]('YYYY-MM-DD')[_0x3f4c('0x11')]();var _0xd029a7=htmlToPdfmake(_0x4f4701,{'window':window,'tableAutoSize':!![]});return{'content':[_0xd029a7],'defaultStyle':{'font':_0x3f4c('0x24')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':'center','margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0x3f4c('0x51')}},'header':function(){return[{'text':_0x3f4c('0x52'),'style':'header'}];},'footer':function(_0x1cde40,_0x304b49){return[{'text':util[_0x3f4c('0x1b')]('\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s',_0x79bcf1,_0x1cde40,_0x304b49,_0x529ba0),'style':_0x3f4c('0x23')}];}};}function writePDFDocument(_0x103ca2,_0x45b312){return new Promise(function(_0x387904,_0x3be823){var _0x284118=_0x103ca2['pipe'](fs['createWriteStream'](_0x45b312));_0x284118['on']('finish',function(){_0x387904(_0x3f4c('0x53'));});_0x284118['on'](_0x3f4c('0x54'),function(_0x2b441b){_0x3be823(_0x2b441b);});_0x103ca2[_0x3f4c('0x55')]();});}exports[_0x3f4c('0x56')]=function(_0x19d3ef,_0x766ea0){var _0x567017=getPDFPrinter();var _0x831c9f=getPDFDocDefinitionFromHTML(_0x19d3ef,_0x766ea0);var _0x27949a=_0x567017['createPdfKitDocument'](_0x831c9f);return writePDFDocument(_0x27949a,_0x766ea0['path'])[_0x3f4c('0x45')](function(_0x3857e9){throw _0x3857e9;});};
\ No newline at end of file
index 8afe3ed..e4bfe7a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x620f=['Failed','exit','util','path','lodash','bluebird','zip-dir','rimraf','dbH','analytics','argv','savename','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','SELECT','num','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','dirname','basename','.xlsx','join','mkdirSync','each','%s%d.%s','xlsx','%s.%s','writeFileSync','binary','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x620f,0x160));var _0xf620=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x620f[_0x397e5f];return _0x5302b8;};'use strict';var util=require(_0xf620('0x0'));var path=require(_0xf620('0x1'));var _=require(_0xf620('0x2'));var fs=require('fs');var json2xls=require('json2xls');var BPromise=require(_0xf620('0x3'));var zipdir=require(_0xf620('0x4'));var rimraf=require(_0xf620('0x5'));var db=require('../../mysqldb')['db'];var dbH=require('../../mysqldb')[_0xf620('0x6')];var logger=require('../../config/logger')(_0xf620('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0xf620('0x8')][0x2]);var QUERY=process[_0xf620('0x8')][0x3];var PATH=process[_0xf620('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x1c308b,_0x17c0c1){var _0x98379c={'status':_0x1c308b};var _0x54231d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x17c0c1){_0x98379c[_0xf620('0x9')]=_0x17c0c1;}return db[_0xf620('0xa')]['update'](_0x98379c,_0x54231d);}function main(){var _0x296d7d=0x1388;var _0x3ab8d4;logger[_0xf620('0xb')](util['format'](_0xf620('0xc'),EXTRACTED_REPORT_ID,_0xf620('0xd')));return db[_0xf620('0xe')][_0xf620('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xf620('0x10'),_0xf620('0x11')]})[_0xf620('0x12')](function(_0xcd0ab8){if(_0xcd0ab8){_0x3ab8d4=_0xcd0ab8;_0x296d7d=_0x3ab8d4[_0xf620('0x11')]||0x1388;}})[_0xf620('0x12')](function(){return dbH[_0xf620('0x13')][_0xf620('0x14')](util[_0xf620('0x15')](_0xf620('0x16'),QUERY),{'type':dbH[_0xf620('0x13')]['QueryTypes'][_0xf620('0x17')]});})[_0xf620('0x12')](function(_0x3e1a69){if(!_0x3e1a69[0x0][_0xf620('0x18')]){return analyticExtractedReport('Empty');}var _0x2c316a=[];var _0x5c2273=0x0;if(_0x3ab8d4['split']){if(_0x3e1a69&&_0x3e1a69[_0xf620('0x19')]){var _0xe0d6b3=_[_0xf620('0x1a')](_0x3e1a69[0x0][_0xf620('0x18')]/_0x296d7d);var _0x264d38=Number[_0xf620('0x1b')](_0x3e1a69[0x0][_0xf620('0x18')]/_0x296d7d)?_0x3e1a69[0x0][_0xf620('0x18')]%_0x296d7d:0x0;_0xe0d6b3[_0xf620('0x1c')](function(_0x20ddae){if(_0x20ddae>0x0){_0x5c2273+=_0x296d7d;}_0x2c316a[_0xf620('0x1d')](dbH['sequelize'][_0xf620('0x14')](util[_0xf620('0x15')](_0xf620('0x1e'),QUERY,_0x296d7d,_0x5c2273),{'type':dbH[_0xf620('0x13')][_0xf620('0x1f')][_0xf620('0x17')]}));});if(_0x264d38>0x0){_0x5c2273+=_0x296d7d;_0x2c316a['push'](dbH[_0xf620('0x13')][_0xf620('0x14')](util[_0xf620('0x15')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x264d38,_0x5c2273),{'type':dbH[_0xf620('0x13')][_0xf620('0x1f')]['SELECT']}));}}}else{_0x2c316a[_0xf620('0x1d')](dbH[_0xf620('0x13')][_0xf620('0x14')](QUERY,{'type':dbH[_0xf620('0x13')][_0xf620('0x1f')][_0xf620('0x17')]}));}var _0x3ea7dd=path[_0xf620('0x20')](PATH);var _0x412a0c=path[_0xf620('0x21')](PATH,_0xf620('0x22'));var _0x1afb94=_0x3ab8d4[_0xf620('0x10')]&&_0x2c316a[_0xf620('0x19')]>0x1;var _0x23055f=[];if(!fs['existsSync'](path[_0xf620('0x23')](_0x3ea7dd,_0x412a0c))&&_0x1afb94){fs[_0xf620('0x24')](path['join'](_0x3ea7dd,_0x412a0c));}return BPromise[_0xf620('0x25')](_0x2c316a,function(_0x3f70c9){_0x23055f['push'](_0x3f70c9);})['then'](function(){for(var _0xfdb4c6=0x0;_0xfdb4c6<_0x23055f[_0xf620('0x19')];_0xfdb4c6+=0x1){var _0x1c70ed;var _0xd69cc=_0x23055f[_0xfdb4c6];if(_0x1afb94){_0x1c70ed=path['join'](_0x3ea7dd,_0x412a0c,util['format'](_0xf620('0x26'),_0x412a0c,_0xfdb4c6,_0xf620('0x27')));}else{_0x1c70ed=path[_0xf620('0x23')](_0x3ea7dd,util[_0xf620('0x15')](_0xf620('0x28'),_0x412a0c,_0xf620('0x27')));}fs[_0xf620('0x29')](_0x1c70ed,json2xls(_0xd69cc),_0xf620('0x2a'));}})['then'](function(){if(_0x1afb94){return new Promise(function(_0x213788){zipdir(path[_0xf620('0x23')](_0x3ea7dd,_0x412a0c),{'saveTo':path[_0xf620('0x23')](_0x3ea7dd,util[_0xf620('0x15')]('%s.%s',_0x412a0c,'zip'))},function(_0xcc74dc,_0x334191){rimraf(path[_0xf620('0x23')](_0x3ea7dd,_0x412a0c),function(){});_0x213788(_0xf620('0x2b'));});});}})['then'](function(){logger['info'](util[_0xf620('0x15')](_0xf620('0x2c'),EXTRACTED_REPORT_ID,_0xf620('0xd')));return analyticExtractedReport('Completed',_0x1afb94?util[_0xf620('0x15')](_0xf620('0x28'),_0x412a0c,_0x1afb94?'zip':_0xf620('0x27')):null);});})[_0xf620('0x2d')](function(_0x9041f0){logger[_0xf620('0xb')](util[_0xf620('0x15')](_0xf620('0x2e'),EXTRACTED_REPORT_ID,'XLSX'),util[_0xf620('0x2f')](_0x9041f0,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xf620('0x30'));})['finally'](function(){process[_0xf620('0x31')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xf0f1=['../../mysqldb','../../config/logger','analytics','argv','savename','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','splitSizeXlsx','then','sequelize','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','QueryTypes','SELECT','num','Empty','split','length','range','isInteger','push','%s\x20limit\x20%d\x20OFFSET\x20%d','basename','.xlsx','existsSync','join','mkdirSync','xlsx','%s.%s','writeFileSync','binary','zip','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','finally','exit','path','lodash','json2xls','rimraf'];(function(_0x4b8ab2,_0x3ce0e4){var _0x440bd9=function(_0x2238b2){while(--_0x2238b2){_0x4b8ab2['push'](_0x4b8ab2['shift']());}};_0x440bd9(++_0x3ce0e4);}(_0xf0f1,0x110));var _0x1f0f=function(_0xb3b452,_0x582e8e){_0xb3b452=_0xb3b452-0x0;var _0x238983=_0xf0f1[_0xb3b452];return _0x238983;};'use strict';var util=require('util');var path=require(_0x1f0f('0x0'));var _=require(_0x1f0f('0x1'));var fs=require('fs');var json2xls=require(_0x1f0f('0x2'));var BPromise=require('bluebird');var zipdir=require('zip-dir');var rimraf=require(_0x1f0f('0x3'));var db=require('../../mysqldb')['db'];var dbH=require(_0x1f0f('0x4'))['dbH'];var logger=require(_0x1f0f('0x5'))(_0x1f0f('0x6'));var EXTRACTED_REPORT_ID=Number(process[_0x1f0f('0x7')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0x1f0f('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x31266f,_0x368a4f){var _0x43e7fa={'status':_0x31266f};var _0x2aa60d={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x368a4f){_0x43e7fa[_0x1f0f('0x8')]=_0x368a4f;}return db[_0x1f0f('0x9')]['update'](_0x43e7fa,_0x2aa60d);}function main(){var _0x54cd2c=0x1388;var _0x9a9c6b;logger[_0x1f0f('0xa')](util['format'](_0x1f0f('0xb'),EXTRACTED_REPORT_ID,_0x1f0f('0xc')));return db[_0x1f0f('0xd')]['find']({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x1f0f('0xe')]})['then'](function(_0x3ff5da){if(_0x3ff5da){_0x9a9c6b=_0x3ff5da;_0x54cd2c=_0x9a9c6b[_0x1f0f('0xe')]||0x1388;}})[_0x1f0f('0xf')](function(){return dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](util[_0x1f0f('0x12')](_0x1f0f('0x13'),QUERY),{'type':dbH[_0x1f0f('0x10')][_0x1f0f('0x14')][_0x1f0f('0x15')]});})[_0x1f0f('0xf')](function(_0x392ce2){if(!_0x392ce2[0x0][_0x1f0f('0x16')]){return analyticExtractedReport(_0x1f0f('0x17'));}var _0x1edcc3=[];var _0x4abdc4=0x0;if(_0x9a9c6b[_0x1f0f('0x18')]){if(_0x392ce2&&_0x392ce2[_0x1f0f('0x19')]){var _0xfd1fe5=_[_0x1f0f('0x1a')](_0x392ce2[0x0][_0x1f0f('0x16')]/_0x54cd2c);var _0x7a8297=Number[_0x1f0f('0x1b')](_0x392ce2[0x0][_0x1f0f('0x16')]/_0x54cd2c)?_0x392ce2[0x0]['num']%_0x54cd2c:0x0;_0xfd1fe5['forEach'](function(_0x2fcc02){if(_0x2fcc02>0x0){_0x4abdc4+=_0x54cd2c;}_0x1edcc3[_0x1f0f('0x1c')](dbH['sequelize']['query'](util[_0x1f0f('0x12')](_0x1f0f('0x1d'),QUERY,_0x54cd2c,_0x4abdc4),{'type':dbH[_0x1f0f('0x10')]['QueryTypes'][_0x1f0f('0x15')]}));});if(_0x7a8297>0x0){_0x4abdc4+=_0x54cd2c;_0x1edcc3[_0x1f0f('0x1c')](dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](util[_0x1f0f('0x12')](_0x1f0f('0x1d'),QUERY,_0x7a8297,_0x4abdc4),{'type':dbH[_0x1f0f('0x10')][_0x1f0f('0x14')][_0x1f0f('0x15')]}));}}}else{_0x1edcc3[_0x1f0f('0x1c')](dbH[_0x1f0f('0x10')][_0x1f0f('0x11')](QUERY,{'type':dbH['sequelize'][_0x1f0f('0x14')][_0x1f0f('0x15')]}));}var _0xca1b4a=path['dirname'](PATH);var _0x2b8635=path[_0x1f0f('0x1e')](PATH,_0x1f0f('0x1f'));var _0x464c57=_0x9a9c6b[_0x1f0f('0x18')]&&_0x1edcc3[_0x1f0f('0x19')]>0x1;var _0x31887e=[];if(!fs[_0x1f0f('0x20')](path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635))&&_0x464c57){fs[_0x1f0f('0x22')](path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635));}return BPromise['each'](_0x1edcc3,function(_0x2a99f6){_0x31887e[_0x1f0f('0x1c')](_0x2a99f6);})[_0x1f0f('0xf')](function(){for(var _0xc959a6=0x0;_0xc959a6<_0x31887e[_0x1f0f('0x19')];_0xc959a6+=0x1){var _0x351eb6;var _0x3b7aaa=_0x31887e[_0xc959a6];if(_0x464c57){_0x351eb6=path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635,util[_0x1f0f('0x12')]('%s%d.%s',_0x2b8635,_0xc959a6,_0x1f0f('0x23')));}else{_0x351eb6=path[_0x1f0f('0x21')](_0xca1b4a,util[_0x1f0f('0x12')](_0x1f0f('0x24'),_0x2b8635,'xlsx'));}fs[_0x1f0f('0x25')](_0x351eb6,json2xls(_0x3b7aaa),_0x1f0f('0x26'));}})[_0x1f0f('0xf')](function(){if(_0x464c57){return new Promise(function(_0x1e45c0){zipdir(path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635),{'saveTo':path[_0x1f0f('0x21')](_0xca1b4a,util['format'](_0x1f0f('0x24'),_0x2b8635,_0x1f0f('0x27')))},function(_0x200306,_0xb515a5){rimraf(path[_0x1f0f('0x21')](_0xca1b4a,_0x2b8635),function(){});_0x1e45c0('zip\x20finished');});});}})[_0x1f0f('0xf')](function(){logger['info'](util[_0x1f0f('0x12')](_0x1f0f('0x28'),EXTRACTED_REPORT_ID,'XLSX'));return analyticExtractedReport('Completed',_0x464c57?util['format']('%s.%s',_0x2b8635,_0x464c57?_0x1f0f('0x27'):_0x1f0f('0x23')):null);});})[_0x1f0f('0x29')](function(_0x5cbe80){logger['info'](util[_0x1f0f('0x12')](_0x1f0f('0x2a'),EXTRACTED_REPORT_ID,_0x1f0f('0xc')),util[_0x1f0f('0x2b')](_0x5cbe80,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport('Failed');})[_0x1f0f('0x2c')](function(){process[_0x1f0f('0x2d')](EXIT_CODE);});}main();
\ No newline at end of file
index 42e26e6..c83740e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d99=['lodash','then','intervals','models','findAll','IntervalId','uniq','map','filter','groupBy','exten','playback','priority','extensions','extension','find','type','Set','CDR(type)=%s','context','push','CDR(routeid)=','VoiceExtensionId','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','CDR(prefix)=noprefix','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','createdAt','updatedAt','interval','tag','CDR(tag)=','length','outbound','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app','toLowerCase','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-PROGRESS=1','splice','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','destroy','VoiceExtension','bulkCreate','sortBy','catch'];(function(_0xd97a9c,_0x4ef415){var _0x9c59d8=function(_0x37eb31){while(--_0x37eb31){_0xd97a9c['push'](_0xd97a9c['shift']());}};_0x9c59d8(++_0x4ef415);}(_0x1d99,0xc6));var _0x91d9=function(_0x17d289,_0x4ec7cd){_0x17d289=_0x17d289-0x0;var _0x19822d=_0x1d99[_0x17d289];return _0x19822d;};'use strict';var _=require(_0x91d9('0x0'));var util=require('util');function rewrite(_0x1f064d,_0x838ca0){var _0x158714=this;return _0x1f064d['models']['Interval']['findAll']({'raw':!![]})[_0x91d9('0x1')](function(_0x2c9115){_0x158714[_0x91d9('0x2')]=_0x2c9115;return _0x1f064d[_0x91d9('0x3')]['VoiceExtension'][_0x91d9('0x4')]({'where':{'IntervalId':_0x838ca0[_0x91d9('0x5')]},'raw':!![]});})[_0x91d9('0x1')](function(_0x164622){return _0x1f064d[_0x91d9('0x3')]['VoiceExtension'][_0x91d9('0x4')]({'where':{'exten':{'$in':_[_0x91d9('0x6')](_[_0x91d9('0x7')](_0x164622,'exten'))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})['then'](function(_0x4cfc2b){var _0x35d202=_[_0x91d9('0x8')](_0x4cfc2b,{'priority':'1'});var _0x5bd492=_['filter'](_0x4cfc2b,{'isApp':0x1});var _0x53d070=_[_0x91d9('0x9')](_0x5bd492,_0x91d9('0xa'));var _0x31b798=['queue',_0x91d9('0xb')];var _0x3c8f74=[];var _0x5ed73f=[];for(var _0x4a6c22 in _0x53d070){if(_0x53d070['hasOwnProperty'](_0x4a6c22)){_0x158714[_0x91d9('0xc')]=0x2;_0x158714[_0x91d9('0xd')]=[];_0x158714[_0x91d9('0xe')]=_[_0x91d9('0xf')](_0x35d202,{'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')]});_0x158714['extensions']['push']({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':util['format'](_0x91d9('0x12'),_0x53d070[_0x4a6c22][0x0]['type']),'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId']});if(_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')]==='inbound'){_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0]['type'],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x15')+_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')],'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId']});}else if(_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')]==='outbound'){if(_0x158714[_0x91d9('0xe')]){_0x158714['extensions']['push']({'type':_0x53d070[_0x4a6c22][0x0]['type'],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x17')+(_0x158714[_0x91d9('0xe')][_0x91d9('0x18')]?_0x91d9('0x19')+_0x158714['extension'][_0x91d9('0x18')]+'}':_0x91d9('0x1a')),'context':_0x53d070[_0x4a6c22][0x0]['context'],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});}_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x15')+_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId'],'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714['priority']++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});var _0x1062f8=_0x158714['priority']++;_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x1b'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x1062f8+0x2)+'):Goto('+(_0x1062f8+0x1)+')','context':_0x53d070[_0x4a6c22][0x0]['context'],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x1062f8,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});if(_0x158714[_0x91d9('0xe')]){_0x158714[_0x91d9('0xd')]['push']({'type':_0x53d070[_0x4a6c22][0x0]['type'],'app':_0x91d9('0x11'),'appdata':_0x158714[_0x91d9('0xe')][_0x91d9('0x18')]?'CDR(prefix)=${EXTEN:0:'+_0x158714[_0x91d9('0xe')][_0x91d9('0x18')]+'}':_0x91d9('0x1c'),'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714['priority']++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});}_0x158714[_0x91d9('0xd')]['push']({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x1d')+_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId'],'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0]['exten'],'priority':_0x158714['priority']++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});if(_0x158714[_0x91d9('0xe')]&&_0x158714['extension'][_0x91d9('0x1e')](_0x91d9('0x1f'))&&_0x158714['extension'][_0x91d9('0x1f')]!==_0x91d9('0x20')){_0x158714['extensions']['push']({'type':_0x53d070[_0x4a6c22][0x0]['type'],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x21'),'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0]['exten'],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId']});_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0]['type'],'app':_0x91d9('0x11'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x158714['extension']['recordingFormat']||_0x91d9('0x22'),'context':_0x53d070[_0x4a6c22][0x0]['context'],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});}}_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x23'),'context':_0x53d070[_0x4a6c22][0x0]['context'],'exten':_0x53d070[_0x4a6c22][0x0]['exten'],'priority':_0x158714[_0x91d9('0xc')]++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x24'),'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0][_0x91d9('0xa')],'priority':_0x158714['priority']++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x25'),'context':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x13')],'exten':_0x53d070[_0x4a6c22][0x0]['exten'],'priority':_0x158714['priority']++,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId']});for(var _0x398b22=0x0,_0x22e6aa=0x0;_0x398b22<_0x53d070[_0x4a6c22]['length'];_0x398b22+=0x1,_0x22e6aa=0x0){var _0x370519=_0x53d070[_0x4a6c22][_0x398b22];if(_0x370519['type']){_0x370519['type']=_0x370519[_0x91d9('0x10')]['toLowerCase']();}var _0x2537a9=[];var _0x596c31=[];delete _0x370519['id'];delete _0x370519[_0x91d9('0x26')];delete _0x370519[_0x91d9('0x27')];var _0x4c1c52=_0x370519[_0x91d9('0x28')]!=='*,*,*,*'?[_0x370519[_0x91d9('0x28')]]:_0x370519[_0x91d9('0x5')]?_['map'](_[_0x91d9('0x8')](_0x158714[_0x91d9('0x2')],{'IntervalId':_0x370519[_0x91d9('0x5')]}),'interval'):[];if(_0x370519[_0x91d9('0x1e')](_0x91d9('0x29'))){if(_0x370519['tag']&&_0x370519[_0x91d9('0x29')]!=='--'){_0x2537a9['push']({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x2a')+_0x370519[_0x91d9('0x29')],'context':_0x370519[_0x91d9('0x13')],'exten':_0x370519['exten'],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});}}if(_0x370519[_0x91d9('0x10')]===_0x91d9('0x2c')&&_0x370519['hasOwnProperty']('callerID')){if(_0x370519[_0x91d9('0x2d')]){_0x2537a9[_0x91d9('0x14')]({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x1b'),'appdata':_0x91d9('0x2e')+_0x370519['callerID']+')','context':_0x370519[_0x91d9('0x13')],'exten':_0x370519['exten'],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});}else{_0x2537a9[_0x91d9('0x14')]({'type':_0x370519['type'],'app':'ExecIf','appdata':_0x91d9('0x2f'),'context':_0x370519[_0x91d9('0x13')],'exten':_0x370519[_0x91d9('0xa')],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});}}if(_0x370519[_0x91d9('0x1e')](_0x91d9('0x30'))){if(_0x31b798['indexOf'](_0x370519[_0x91d9('0x31')][_0x91d9('0x32')]())>=0x0&&_0x370519['appType']!==_0x91d9('0x33')){if(_0x370519[_0x91d9('0x30')]){_0x2537a9[_0x91d9('0x14')]({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x1b'),'appdata':_0x91d9('0x34'),'context':_0x370519[_0x91d9('0x13')],'exten':_0x370519[_0x91d9('0xa')],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});_0x2537a9['push']({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x370519[_0x91d9('0x13')],'exten':_0x370519[_0x91d9('0xa')],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714['priority']+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});}else{_0x2537a9[_0x91d9('0x14')]({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x1b'),'appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x370519[_0x91d9('0x13')],'exten':_0x370519[_0x91d9('0xa')],'priority':_0x4c1c52['length']+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});_0x2537a9[_0x91d9('0x14')]({'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x11'),'appdata':_0x91d9('0x35'),'context':_0x370519[_0x91d9('0x13')],'exten':_0x370519[_0x91d9('0xa')],'priority':_0x4c1c52[_0x91d9('0x2b')]+_0x158714[_0x91d9('0xc')]+_0x22e6aa++,'VoiceExtensionId':_0x370519[_0x91d9('0x16')]});}}}for(var _0x7e3b1=0x0;_0x7e3b1<_0x4c1c52[_0x91d9('0x2b')];_0x7e3b1+=0x1){var _0x247bf2=_0x158714[_0x91d9('0xc')]+_0x4c1c52['length'];var _0x383cc7=_0x7e3b1===_0x4c1c52[_0x91d9('0x2b')]-0x1?_0x158714[_0x91d9('0xc')]+_0x2537a9[_0x91d9('0x2b')]+_0x596c31['length']+0x2:_0x158714[_0x91d9('0xc')]+_0x7e3b1+0x1;_0x2537a9[_0x91d9('0x36')](_0x7e3b1,0x0,{'type':_0x370519[_0x91d9('0x10')],'app':_0x91d9('0x37'),'appdata':_0x4c1c52[_0x7e3b1]+'?'+_0x370519[_0x91d9('0x13')]+_0x91d9('0x38')+_0x247bf2+':'+_0x370519[_0x91d9('0x13')]+_0x91d9('0x38')+_0x383cc7,'exten':_0x370519[_0x91d9('0xa')],'context':_0x370519[_0x91d9('0x13')],'priority':_0x158714['priority']+_0x7e3b1,'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]});}_0x370519['priority']=_0x2537a9[_0x91d9('0x2b')]?_[_0x91d9('0x39')](_0x2537a9)[_0x91d9('0xc')]+0x1:_0x158714[_0x91d9('0xc')];_0x158714[_0x91d9('0xc')]=(_0x596c31[_0x91d9('0x2b')]?_[_0x91d9('0x39')](_0x596c31)[_0x91d9('0xc')]:_0x370519[_0x91d9('0xc')])+0x1;_0x158714[_0x91d9('0xd')]=_[_0x91d9('0x3a')](_0x158714[_0x91d9('0xd')],_0x2537a9,[_0x370519],_0x596c31);}_0x158714[_0x91d9('0xd')][_0x91d9('0x14')]({'type':_0x53d070[_0x4a6c22][0x0][_0x91d9('0x10')],'app':_0x91d9('0x3b'),'exten':_0x53d070[_0x4a6c22][0x0]['exten'],'context':_0x53d070[_0x4a6c22][0x0]['context'],'priority':_0x158714[_0x91d9('0xc')],'VoiceExtensionId':_0x53d070[_0x4a6c22][0x0]['VoiceExtensionId']});_0x3c8f74[_0x91d9('0x14')](_0x53d070[_0x4a6c22][0x0][_0x91d9('0x16')]);_0x5ed73f=_['concat'](_0x5ed73f,_0x158714[_0x91d9('0xd')]);}}return _0x1f064d[_0x91d9('0x3c')](function(_0x1487fd){return _0x1f064d['models']['VoiceExtension'][_0x91d9('0x3d')]({'where':{'VoiceExtensionId':{'$in':_0x3c8f74}},'transaction':_0x1487fd})[_0x91d9('0x1')](function(_0x23ba33){return _0x1f064d[_0x91d9('0x3')][_0x91d9('0x3e')][_0x91d9('0x3f')](_[_0x91d9('0x40')](_0x5ed73f,_0x91d9('0xc')),{'transaction':_0x1487fd});});});})[_0x91d9('0x41')](function(_0x5e66e9){console['error'](_0x5e66e9);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0xe26f=['intervals','VoiceExtension','uniq','map','exten','filter','groupBy','hasOwnProperty','priority','extension','find','extensions','push','type','format','CDR(type)=%s','VoiceExtensionId','Set','CDR(routeid)=','context','outbound','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','recordingFormat','wav','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','length','updatedAt','interval','*,*,*,*','IntervalId','tag','callerID','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','toLowerCase','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','XCALLY-MOTION-PROGRESS=1','splice',',${EXTEN},','last','concat','Hangup','bulkCreate','rewrite','util','models','Interval','findAll','then'];(function(_0x11fc5b,_0x2e02e5){var _0x344e87=function(_0x216be8){while(--_0x216be8){_0x11fc5b['push'](_0x11fc5b['shift']());}};_0x344e87(++_0x2e02e5);}(_0xe26f,0x187));var _0xfe26=function(_0x514d78,_0x1adaaf){_0x514d78=_0x514d78-0x0;var _0x524895=_0xe26f[_0x514d78];return _0x524895;};'use strict';var _=require('lodash');var util=require(_0xfe26('0x0'));function rewrite(_0x35c26b,_0x4aa84a){var _0x5814be=this;return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x2')][_0xfe26('0x3')]({'raw':!![]})[_0xfe26('0x4')](function(_0x3d6e20){_0x5814be[_0xfe26('0x5')]=_0x3d6e20;return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')][_0xfe26('0x3')]({'where':{'IntervalId':_0x4aa84a['IntervalId']},'raw':!![]});})[_0xfe26('0x4')](function(_0x4cf3d7){return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')]['findAll']({'where':{'exten':{'$in':_[_0xfe26('0x7')](_[_0xfe26('0x8')](_0x4cf3d7,_0xfe26('0x9')))}},'order':[{'raw':'CAST(priority\x20AS\x20UNSIGNED)'}],'raw':!![]});})['then'](function(_0x50af3e){var _0x2fea76=_[_0xfe26('0xa')](_0x50af3e,{'priority':'1'});var _0xff0388=_[_0xfe26('0xa')](_0x50af3e,{'isApp':0x1});var _0x4a3841=_[_0xfe26('0xb')](_0xff0388,_0xfe26('0x9'));var _0x162d57=['queue','playback'];var _0x44ee21=[];var _0x4d5803=[];for(var _0x4b82a0 in _0x4a3841){if(_0x4a3841[_0xfe26('0xc')](_0x4b82a0)){_0x5814be[_0xfe26('0xd')]=0x2;_0x5814be['extensions']=[];_0x5814be[_0xfe26('0xe')]=_[_0xfe26('0xf')](_0x2fea76,{'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')]});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':'Set','appdata':util[_0xfe26('0x13')](_0xfe26('0x14'),_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]),'context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]==='inbound'){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x17')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be['priority']++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}else if(_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')]===_0xfe26('0x19')){if(_0x5814be[_0xfe26('0xe')]){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x1a')+(_0x5814be['extension'][_0xfe26('0x1b')]?_0xfe26('0x1c')+_0x5814be[_0xfe26('0xe')][_0xfe26('0x1b')]+'}':_0xfe26('0x1d')),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x17')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});var _0x48b549=_0x5814be[_0xfe26('0xd')]++;_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x1f')+(_0x48b549+0x2)+_0xfe26('0x20')+(_0x48b549+0x1)+')','context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x48b549,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x5814be['extension']){_0x5814be[_0xfe26('0x10')]['push']({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0x5814be[_0xfe26('0xe')]['cutdigits']?_0xfe26('0x21')+_0x5814be[_0xfe26('0xe')]['cutdigits']+'}':_0xfe26('0x22'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x23')+_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')],'context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});if(_0x5814be[_0xfe26('0xe')]&&_0x5814be['extension'][_0xfe26('0xc')]('recordingFormat')&&_0x5814be[_0xfe26('0xe')]['recordingFormat']!==_0xfe26('0x24')){_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x25'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':'Set','appdata':_0xfe26('0x26')+_0x5814be[_0xfe26('0xe')][_0xfe26('0x27')]||_0xfe26('0x28'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be['priority']++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});}}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x29'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0]['type'],'app':'Set','appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x4a3841[_0x4b82a0][0x0]['context'],'exten':_0x4a3841[_0x4b82a0][0x0]['exten'],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x5814be['extensions']['push']({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x2a'),'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'priority':_0x5814be[_0xfe26('0xd')]++,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});for(var _0x1ad24d=0x0,_0x56d7d3=0x0;_0x1ad24d<_0x4a3841[_0x4b82a0][_0xfe26('0x2b')];_0x1ad24d+=0x1,_0x56d7d3=0x0){var _0x2b1e65=_0x4a3841[_0x4b82a0][_0x1ad24d];if(_0x2b1e65[_0xfe26('0x12')]){_0x2b1e65['type']=_0x2b1e65[_0xfe26('0x12')]['toLowerCase']();}var _0x3573a7=[];var _0x41679c=[];delete _0x2b1e65['id'];delete _0x2b1e65['createdAt'];delete _0x2b1e65[_0xfe26('0x2c')];var _0x2761d5=_0x2b1e65[_0xfe26('0x2d')]!==_0xfe26('0x2e')?[_0x2b1e65[_0xfe26('0x2d')]]:_0x2b1e65[_0xfe26('0x2f')]?_[_0xfe26('0x8')](_[_0xfe26('0xa')](_0x5814be[_0xfe26('0x5')],{'IntervalId':_0x2b1e65[_0xfe26('0x2f')]}),_0xfe26('0x2d')):[];if(_0x2b1e65['hasOwnProperty'](_0xfe26('0x30'))){if(_0x2b1e65[_0xfe26('0x30')]&&_0x2b1e65[_0xfe26('0x30')]!=='--'){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':'CDR(tag)='+_0x2b1e65[_0xfe26('0x30')],'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65['exten'],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65['VoiceExtensionId']});}}if(_0x2b1e65[_0xfe26('0x12')]==='outbound'&&_0x2b1e65[_0xfe26('0xc')](_0xfe26('0x31'))){if(_0x2b1e65['callerID']){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':'ExecIf','appdata':_0xfe26('0x32')+_0x2b1e65[_0xfe26('0x31')]+')','context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65['exten'],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}else{_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x33'),'context':_0x2b1e65['context'],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}}if(_0x2b1e65[_0xfe26('0xc')](_0xfe26('0x34'))){if(_0x162d57['indexOf'](_0x2b1e65['app'][_0xfe26('0x35')]())>=0x0&&_0x2b1e65[_0xfe26('0x36')]!==_0xfe26('0x37')){if(_0x2b1e65[_0xfe26('0x34')]){_0x3573a7[_0xfe26('0x11')]({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x38'),'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':'XCALLY-MOTION-ANSWER=1','context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5['length']+_0x5814be['priority']+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});}else{_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x1e'),'appdata':_0xfe26('0x39'),'context':_0x2b1e65['context'],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65[_0xfe26('0x15')]});_0x3573a7['push']({'type':_0x2b1e65[_0xfe26('0x12')],'app':_0xfe26('0x16'),'appdata':_0xfe26('0x3a'),'context':_0x2b1e65[_0xfe26('0x18')],'exten':_0x2b1e65[_0xfe26('0x9')],'priority':_0x2761d5[_0xfe26('0x2b')]+_0x5814be[_0xfe26('0xd')]+_0x56d7d3++,'VoiceExtensionId':_0x2b1e65['VoiceExtensionId']});}}}for(var _0x28c96d=0x0;_0x28c96d<_0x2761d5[_0xfe26('0x2b')];_0x28c96d+=0x1){var _0x1f2cc2=_0x5814be[_0xfe26('0xd')]+_0x2761d5['length'];var _0x284ae9=_0x28c96d===_0x2761d5[_0xfe26('0x2b')]-0x1?_0x5814be[_0xfe26('0xd')]+_0x3573a7[_0xfe26('0x2b')]+_0x41679c[_0xfe26('0x2b')]+0x2:_0x5814be[_0xfe26('0xd')]+_0x28c96d+0x1;_0x3573a7[_0xfe26('0x3b')](_0x28c96d,0x0,{'type':_0x2b1e65[_0xfe26('0x12')],'app':'GotoIfTime','appdata':_0x2761d5[_0x28c96d]+'?'+_0x2b1e65['context']+_0xfe26('0x3c')+_0x1f2cc2+':'+_0x2b1e65[_0xfe26('0x18')]+',${EXTEN},'+_0x284ae9,'exten':_0x2b1e65['exten'],'context':_0x2b1e65['context'],'priority':_0x5814be[_0xfe26('0xd')]+_0x28c96d,'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']});}_0x2b1e65['priority']=_0x3573a7[_0xfe26('0x2b')]?_[_0xfe26('0x3d')](_0x3573a7)['priority']+0x1:_0x5814be[_0xfe26('0xd')];_0x5814be['priority']=(_0x41679c['length']?_['last'](_0x41679c)[_0xfe26('0xd')]:_0x2b1e65[_0xfe26('0xd')])+0x1;_0x5814be[_0xfe26('0x10')]=_[_0xfe26('0x3e')](_0x5814be[_0xfe26('0x10')],_0x3573a7,[_0x2b1e65],_0x41679c);}_0x5814be[_0xfe26('0x10')][_0xfe26('0x11')]({'type':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x12')],'app':_0xfe26('0x3f'),'exten':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x9')],'context':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x18')],'priority':_0x5814be['priority'],'VoiceExtensionId':_0x4a3841[_0x4b82a0][0x0][_0xfe26('0x15')]});_0x44ee21[_0xfe26('0x11')](_0x4a3841[_0x4b82a0][0x0]['VoiceExtensionId']);_0x4d5803=_[_0xfe26('0x3e')](_0x4d5803,_0x5814be['extensions']);}}return _0x35c26b['transaction'](function(_0x183d7a){return _0x35c26b[_0xfe26('0x1')][_0xfe26('0x6')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x44ee21}},'transaction':_0x183d7a})['then'](function(_0x17ca82){return _0x35c26b['models'][_0xfe26('0x6')][_0xfe26('0x40')](_['sortBy'](_0x4d5803,'priority'),{'transaction':_0x183d7a});});});})['catch'](function(_0x488397){console['error'](_0x488397);});}exports[_0xfe26('0x41')]=rewrite;
\ No newline at end of file
index bf10b76..a403647 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x516d=['birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','length','find','duplicate','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','inspect','insert','cm_hopper','fromQuery','scheduledAt','createdAt','updatedAt','select','field','NOW()','ContactId','toString','from','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','id\x20IN\x20?','str','calleridnum','cm_hopper_final','into','cm_contacts','findAll','outbound','dialCheckDuplicateType','Lists','get','query','VoiceQueueId','sequelize','all','VoiceQueue','BlackLists','Campaign','CmList','always','CampaignId','onlyIfOpen','cmContact,\x20%s,\x20%s','generalCheckHopper','stringify','emit','contact:csv_','resume','resolve','unlinkSync','exit','CSV\x20import\x20process\x20stopped!','CmContact','createReadStream','parse','pause','info','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','register','argv','Missing\x20filepath\x20parameter!','undefined','null','Missing\x20binding\x20parameters!','split','Missing\x20socket_timestamp\x20parameter!','error','contact','index','test','isNil','errors','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!'];(function(_0x46236b,_0x2142a9){var _0x4fd70d=function(_0x8f9513){while(--_0x8f9513){_0x46236b['push'](_0x46236b['shift']());}};_0x4fd70d(++_0x2142a9);}(_0x516d,0x1a1));var _0xd516=function(_0x16aa09,_0xbadd28){_0x16aa09=_0x16aa09-0x0;var _0x55f174=_0x516d[_0x16aa09];return _0x55f174;};'use strict';var BPromise=require(_0xd516('0x0'));var util=require(_0xd516('0x1'));var _=require(_0xd516('0x2'));var fs=require('fs');var squel=require(_0xd516('0x3'));var Papa=require(_0xd516('0x4'));var Redis=require(_0xd516('0x5'));var db=require(_0xd516('0x6'))['db'];var config=require(_0xd516('0x7'));var logger=require('../../../config/logger')(_0xd516('0x8'));config[_0xd516('0x9')]=_[_0xd516('0xa')](config[_0xd516('0x9')],{'host':_0xd516('0xb'),'port':0x18eb});var socket=require(_0xd516('0xc'))(new Redis(config['redis']));require(_0xd516('0xd'))[_0xd516('0xe')](socket);try{if(!process[_0xd516('0xf')][0x2]||process['argv'][0x2]==='undefined'||process[_0xd516('0xf')][0x2]==='null'){throw new Error(_0xd516('0x10'));}var FILEPATH=process[_0xd516('0xf')][0x2];if(!process[_0xd516('0xf')][0x3]||process[_0xd516('0xf')][0x3]===_0xd516('0x11')||process[_0xd516('0xf')][0x3]===_0xd516('0x12')||!process[_0xd516('0xf')][0x4]||process[_0xd516('0xf')][0x4]===_0xd516('0x11')||process[_0xd516('0xf')][0x4]===_0xd516('0x12')){throw new Error(_0xd516('0x13'));}var FIELDS=_['zipObject'](process[_0xd516('0xf')][0x3]['split'](','),process[_0xd516('0xf')][0x4][_0xd516('0x14')](','));if(!process[_0xd516('0xf')][0x5]||process['argv'][0x5]===_0xd516('0x11')||process[_0xd516('0xf')][0x5]===_0xd516('0x12')){throw new Error('Missing\x20ListId\x20parameter!');}var LISTID=process[_0xd516('0xf')][0x5];var COMPANYID=process[_0xd516('0xf')][0x6]&&process[_0xd516('0xf')][0x6]!=='undefined'&&process['argv'][0x6]!=='null'?process[_0xd516('0xf')][0x6]:null;var DUPLICATES=process[_0xd516('0xf')][0x7]&&process['argv'][0x7]!==_0xd516('0x11')&&process[_0xd516('0xf')][0x7]!==_0xd516('0x12')?process['argv'][0x7]:null;if(!process[_0xd516('0xf')][0x8]||process[_0xd516('0xf')][0x8]===_0xd516('0x11')||process[_0xd516('0xf')][0x8]===_0xd516('0x12')){throw new Error(_0xd516('0x15'));}var SOCKET_TIMESTAMP=process[_0xd516('0xf')][0x8];}catch(_0x54d6e9){logger[_0xd516('0x16')](_0x54d6e9);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x3f4019,_0x3a8d75,_0xa69422,_0x2df800){var _0x4f68ec={'message':_0x3a8d75};_0x4f68ec[_0x3f4019]=!![];if(_0xa69422){_0x4f68ec[_0xd516('0x17')]=_0xa69422;}if(_0x2df800){_0x4f68ec[_0xd516('0x18')]=_0x2df800;}return _0x4f68ec;}function isEmail(_0x3e60d8){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xd516('0x19')](_0x3e60d8);}function checkRow(_0x34841d,_0x27a258,_0x534fa3){return new BPromise(function(_0x12cc33,_0x355edc){if(_[_0xd516('0x1a')](_0x34841d)){return _0x355edc(handleCheckRowError(_0xd516('0x16'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0x534fa3));}if(_0x34841d[_0xd516('0x1b')]&&_0x34841d[_0xd516('0x1b')]['length']){var _0x4b16b3=_['map'](_0x34841d[_0xd516('0x1b')],_0xd516('0x1c'))['join'](';');return _0x355edc(handleCheckRowError('error',_0x4b16b3,null,_0x534fa3));}var _0x25eb6f={};for(var _0x23166e in FIELDS){if(FIELDS[_0xd516('0x1d')](_0x23166e)&&FIELDS[_0x23166e]){_0x25eb6f[_0x23166e]=_0x34841d['data'][0x0][FIELDS[_0x23166e]]||_0x34841d[_0xd516('0x1e')][0x0]['\ufeff'+FIELDS[_0x23166e]];}}if(!_0x25eb6f[_0xd516('0x1f')]){return _0x355edc(handleCheckRowError(_0xd516('0x16'),_0xd516('0x20'),null,_0x534fa3));}if(!_0x25eb6f[_0xd516('0x21')]){return _0x355edc(handleCheckRowError(_0xd516('0x16'),_0xd516('0x22'),null,_0x534fa3));}if(_0x25eb6f[_0xd516('0x23')]){var _0x1c7d27=moment(_0x25eb6f[_0xd516('0x23')],_0xd516('0x24'));if(!_0x1c7d27[_0xd516('0x25')]()){return _0x355edc(handleCheckRowError(_0xd516('0x16'),_0xd516('0x26'),null,_0x534fa3));}}if(_0x25eb6f[_0xd516('0x27')]){if(!isEmail(_0x25eb6f[_0xd516('0x27')])){return _0x355edc(handleCheckRowError(_0xd516('0x16'),_0xd516('0x28'),null,_0x534fa3));}}_0x25eb6f[_0xd516('0x29')]=LISTID;_0x25eb6f[_0xd516('0x2a')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xd516('0x2b')]&&_0x27a258){var _0xf453d3={};for(var _0x54db42=0x0,_0x360ed1=DUPLICATES[_0xd516('0x2b')];_0x54db42<_0x360ed1;_0x54db42+=0x1){_0xf453d3[DUPLICATES[_0x54db42]]=_0x25eb6f[DUPLICATES[_0x54db42]];}var _0x2d0037=_[_0xd516('0x2c')](_0x27a258,_0xf453d3);if(_0x2d0037){return _0x355edc(handleCheckRowError(_0xd516('0x2d'),'Duplicate\x20Contact',_0x2d0037,_0x534fa3));}}return db['CmContact']['create'](_0x25eb6f,{'raw':!![],'hooks':![],'fields':_[_0xd516('0x2e')](_0x25eb6f)})[_0xd516('0x2f')](function(_0x55a913){if(DUPLICATES&&DUPLICATES[_0xd516('0x2b')]&&_0x27a258){_0x27a258[_0xd516('0x30')](_[_0xd516('0x31')](_0x25eb6f,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x55a913['id'];return _0x12cc33();})[_0xd516('0x32')](function(_0x1e613e){return _0x355edc(handleCheckRowError(_0xd516('0x16'),_0xd516('0x33')+(_0x1e613e[_0xd516('0x1c')]||JSON['stringify'](_0x1e613e)),null,_0x534fa3));});});}function checkHopper(){function _0x27061d(){return function(_0xc2ab8b){logger['error'](_0xd516('0x34'),_0xd516('0x35'),util[_0xd516('0x36')](_0xc2ab8b,{'showHidden':![],'depth':null}));};}var _0x330f17=function(_0x6df17a,_0x44cec1){var _0x128e85=squel[_0xd516('0x37')]()['into'](_0xd516('0x38'))[_0xd516('0x39')]([_0xd516('0x21'),_0xd516('0x3a'),'ContactId',_0xd516('0x29'),_0x44cec1,_0xd516('0x3b'),_0xd516('0x3c')],squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x21'),_0xd516('0x21'))[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3a'))[_0xd516('0x3e')]('id',_0xd516('0x40'))['field'](LISTID[_0xd516('0x41')](),_0xd516('0x29'))[_0xd516('0x3e')](_0x6df17a['id'][_0xd516('0x41')](),_0x44cec1)[_0xd516('0x3e')]('NOW()',_0xd516('0x3b'))[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3c'))[_0xd516('0x42')]('cm_contacts')[_0xd516('0x43')](_0xd516('0x44'))['where'](_0xd516('0x45'),LISTID[_0xd516('0x41')]())[_0xd516('0x43')](_0xd516('0x46'))['where'](_0xd516('0x47'),squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x21'))['from'](_0xd516('0x38'))[_0xd516('0x43')](_0x44cec1+_0xd516('0x48'),_0x6df17a['id']['toString']())))[_0xd516('0x41')]();return _0x128e85;};var _0x3d6e6b=function(_0x3b5c8e,_0x598b02){var _0xc56848=squel[_0xd516('0x37')]()['into'](_0xd516('0x38'))['fromQuery']([_0xd516('0x21'),_0xd516('0x3a'),'ContactId',_0xd516('0x29'),_0x598b02,_0xd516('0x3b'),_0xd516('0x3c')],squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x21'),_0xd516('0x21'))[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3a'))['field']('id',_0xd516('0x40'))[_0xd516('0x3e')](LISTID[_0xd516('0x41')](),_0xd516('0x29'))[_0xd516('0x3e')](_0x3b5c8e['id'][_0xd516('0x41')](),_0x598b02)[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3b'))[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3c'))[_0xd516('0x42')]('cm_contacts')['where'](_0xd516('0x44'))[_0xd516('0x43')](_0xd516('0x45'),LISTID[_0xd516('0x41')]())['where'](_0xd516('0x49'),squel[_0xd516('0x4a')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL')[_0xd516('0x43')](_0xd516('0x47'),squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x4b'))[_0xd516('0x42')](_0xd516('0x4c'))[_0xd516('0x43')](_0x598b02+_0xd516('0x48'),_0x3b5c8e['id'][_0xd516('0x41')]()))[_0xd516('0x43')](_0xd516('0x47'),squel[_0xd516('0x3d')]()[_0xd516('0x3e')]('phone')[_0xd516('0x42')]('cm_hopper')[_0xd516('0x43')](_0x598b02+_0xd516('0x48'),_0x3b5c8e['id'][_0xd516('0x41')]())))['toString']();return _0xc56848;};function _0x2abf48(_0x539e4a,_0x456a70){var _0x288be2=squel['insert']()[_0xd516('0x4d')]('cm_hopper')[_0xd516('0x39')](['phone',_0xd516('0x3a'),_0xd516('0x40'),_0xd516('0x29'),_0x456a70,_0xd516('0x3b'),_0xd516('0x3c')],squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x21'),'phone')[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3a'))['field']('id',_0xd516('0x40'))[_0xd516('0x3e')](LISTID[_0xd516('0x41')](),_0xd516('0x29'))[_0xd516('0x3e')](_0x539e4a['id'][_0xd516('0x41')](),_0x456a70)[_0xd516('0x3e')]('NOW()',_0xd516('0x3b'))[_0xd516('0x3e')]('NOW()','updatedAt')[_0xd516('0x42')](_0xd516('0x4e'))[_0xd516('0x43')](_0xd516('0x44'))[_0xd516('0x43')](_0xd516('0x45'),LISTID[_0xd516('0x41')]())[_0xd516('0x43')](_0xd516('0x49'),squel[_0xd516('0x4a')](hopperContacts))[_0xd516('0x43')](_0xd516('0x46')))['toString']();return _0x288be2;}function _0x14c571(_0x1429b4,_0x6a42e8){var _0x489930=squel[_0xd516('0x37')]()[_0xd516('0x4d')]('cm_hopper_black')[_0xd516('0x39')](['phone',_0xd516('0x40'),_0xd516('0x29'),_0x6a42e8,'createdAt',_0xd516('0x3c')],squel[_0xd516('0x3d')]()[_0xd516('0x3e')](_0xd516('0x21'),_0xd516('0x21'))[_0xd516('0x3e')]('id','ContactId')['field'](LISTID[_0xd516('0x41')](),_0xd516('0x29'))['field'](_0x1429b4['id']['toString'](),_0x6a42e8)['field'](_0xd516('0x3f'),_0xd516('0x3b'))[_0xd516('0x3e')](_0xd516('0x3f'),_0xd516('0x3c'))[_0xd516('0x42')](_0xd516('0x4e'))[_0xd516('0x43')]('deletedAt\x20IS\x20NULL')[_0xd516('0x43')](_0xd516('0x45'),LISTID['toString']())['where'](_0xd516('0x49'),squel[_0xd516('0x4a')](hopperContacts))[_0xd516('0x43')](_0xd516('0x46')))['toString']();return _0x489930;}return db['VoiceQueue'][_0xd516('0x4f')]({'where':{'type':_0xd516('0x50')},'attributes':['id',_0xd516('0x51')],'include':[{'model':db['CmList'],'as':_0xd516('0x52'),'where':{'id':LISTID}}]})['then'](function(_0x5464aa){var _0x1ec371=[];if(_0x5464aa){var _0x243861;for(var _0x509df0=0x0,_0x5ecb1d;_0x509df0<_0x5464aa['length'];_0x509df0+=0x1){_0x5ecb1d=_0x5464aa[_0x509df0][_0xd516('0x53')]({'plain':!![]});switch(_0x5ecb1d[_0xd516('0x51')]){case'always':_0x1ec371['push'](db['sequelize'][_0xd516('0x54')](_0x3d6e6b(_0x5ecb1d,_0xd516('0x55')))[_0xd516('0x2f')](function(){})[_0xd516('0x32')](_0x27061d()));break;case'onlyIfOpen':_0x1ec371[_0xd516('0x30')](db['sequelize'][_0xd516('0x54')](_0x330f17(_0x5ecb1d,_0xd516('0x55')))[_0xd516('0x2f')](function(){})[_0xd516('0x32')](_0x27061d()));break;default:_0x1ec371[_0xd516('0x30')](db[_0xd516('0x56')][_0xd516('0x54')](_0x2abf48(_0x5ecb1d,_0xd516('0x55')))[_0xd516('0x2f')](function(){})['catch'](_0x27061d()));}}}return _0x1ec371;})[_0xd516('0x57')]()[_0xd516('0x2f')](function(){return db[_0xd516('0x58')][_0xd516('0x4f')]({'where':{'type':_0xd516('0x50')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xd516('0x59'),'where':{'id':LISTID}}]})[_0xd516('0x2f')](function(_0x1088a6){var _0x1bb921=[];if(_0x1088a6){var _0x3333d6;for(var _0x56693d=0x0,_0x1a9d4e;_0x56693d<_0x1088a6['length'];_0x56693d+=0x1){_0x1a9d4e=_0x1088a6[_0x56693d][_0xd516('0x53')]({'plain':!![]});_0x1bb921[_0xd516('0x30')](db[_0xd516('0x56')][_0xd516('0x54')](_0x14c571(_0x1a9d4e,_0xd516('0x55')))[_0xd516('0x2f')](function(){})[_0xd516('0x32')](_0x27061d()));}}return _0x1bb921;})['all']();})[_0xd516('0x2f')](function(){return db[_0xd516('0x5a')][_0xd516('0x4f')]({'attributes':['id',_0xd516('0x51')],'include':[{'model':db[_0xd516('0x5b')],'as':_0xd516('0x52'),'where':{'id':LISTID}}]})[_0xd516('0x2f')](function(_0x4cbd8b){var _0x28d9d7=[];if(_0x4cbd8b){for(var _0x2bb6f3=0x0,_0x59a581;_0x2bb6f3<_0x4cbd8b['length'];_0x2bb6f3+=0x1){_0x59a581=_0x4cbd8b[_0x2bb6f3][_0xd516('0x53')]({'plain':!![]});switch(_0x59a581[_0xd516('0x51')]){case _0xd516('0x5c'):_0x28d9d7[_0xd516('0x30')](db['sequelize'][_0xd516('0x54')](_0x3d6e6b(_0x59a581,_0xd516('0x5d')))[_0xd516('0x2f')](function(){})[_0xd516('0x32')](_0x27061d()));break;case _0xd516('0x5e'):_0x28d9d7[_0xd516('0x30')](db[_0xd516('0x56')][_0xd516('0x54')](_0x330f17(_0x59a581,_0xd516('0x5d')))[_0xd516('0x2f')](function(){})['catch'](_0x27061d()));break;default:_0x28d9d7[_0xd516('0x30')](db['sequelize'][_0xd516('0x54')](_0x2abf48(_0x59a581,'CampaignId'))[_0xd516('0x2f')](function(){})[_0xd516('0x32')](_0x27061d()));}}}return _0x28d9d7;})[_0xd516('0x57')]();})[_0xd516('0x2f')](function(){return db['Campaign']['findAll']({'attributes':['id'],'include':[{'model':db[_0xd516('0x5b')],'as':_0xd516('0x59'),'where':{'id':LISTID}}]})[_0xd516('0x2f')](function(_0x38a367){var _0x4fe4b4=[];if(_0x38a367){for(var _0x4bcd87=0x0,_0xf11ea6;_0x4bcd87<_0x38a367[_0xd516('0x2b')];_0x4bcd87+=0x1){_0xf11ea6=_0x38a367[_0x4bcd87][_0xd516('0x53')]({'plain':!![]});_0x4fe4b4['push'](db['sequelize']['query'](_0x14c571(_0xf11ea6,'CampaignId'))['then'](function(){})[_0xd516('0x32')](_0x27061d()));}}return _0x4fe4b4;})['all']();})[_0xd516('0x32')](function(_0x13f13d){logger['error'](_0xd516('0x5f'),_0xd516('0x60'),_0x13f13d['message']);});}var processPromises=function(_0x107bce){return BPromise['all'](promises)['then'](function(_0x4b3b33){})[_0xd516('0x32')](function(_0x8c9e83){logger[_0xd516('0x16')]('Error\x20processing\x20rows\x20block:',JSON[_0xd516('0x61')](_0x8c9e83));})['finally'](function(){socket[_0xd516('0x62')](_0xd516('0x63')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x107bce){return _0x107bce[_0xd516('0x64')]();}});};var endCsv=function(){return BPromise[_0xd516('0x65')]()[_0xd516('0x2f')](function(){if(hopperContacts){return checkHopper();}})[_0xd516('0x2f')](function(){socket[_0xd516('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xd516('0x66')](FILEPATH);}catch(_0x3c9767){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON['stringify'](_0x3c9767));}finally{process[_0xd516('0x67')](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0xd516('0x68'));endCsv();});function main(){return BPromise[_0xd516('0x65')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xd516('0x14')](',');return db[_0xd516('0x69')][_0xd516('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x726be2){var _0xad495d=fs[_0xd516('0x6a')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xd516('0x6b')](_0xad495d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x4acd44,_0x275e46){total+=0x1;var _0x1792ba=total;promises[_0xd516('0x30')](checkRow(_0x4acd44,_0x726be2,_0x1792ba)['then'](function(){success+=0x1;})[_0xd516('0x32')](function(_0x4cb60c){if(_0x4cb60c[_0xd516('0x16')]){errors+=0x1;delete _0x4cb60c[_0xd516('0x16')];}else if(_0x4cb60c['duplicate']){duplicates+=0x1;delete _0x4cb60c['duplicate'];}rows[_0xd516('0x30')](_0x4cb60c);}));if(total%0xc8===0x0){_0x275e46[_0xd516('0x6c')]();return processPromises(_0x275e46);}},'complete':function(){return processPromises()[_0xd516('0x2f')](function(){logger[_0xd516('0x6d')](_0xd516('0x6e'));endCsv();});},'error':function(_0x23653f,_0x218659){logger[_0xd516('0x6d')](_0xd516('0x6f'),JSON[_0xd516('0x61')](_0x23653f));endCsv();}});})['catch'](function(_0x12a608){logger[_0xd516('0x16')](_0xd516('0x70'),JSON['stringify'](_0x12a608));});}main();
\ No newline at end of file
+var _0x000d=['all','VoiceQueue','BlackLists','Campaign','dialCheckDuplicateType','CmList','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','stringify','finally','emit','contact:csv_','resume','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','resolve','createReadStream','parse','duplicate','CSV\x20parsed\x20correctly!','info','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','lodash','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','defaults','redis','localhost','socket.io-emitter','register','argv','null','Missing\x20filepath\x20parameter!','undefined','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','index','test','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','cmContact','checkHopper','insert','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','where','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','cm_contacts','id\x20IN\x20?','str','calleridnum','from','cm_hopper_final','\x20=\x20?','deletedAt\x20IS\x20NULL','cm_hopper_black','findAll','outbound','Lists','get','always','sequelize','query','VoiceQueueId'];(function(_0x2377ee,_0x489a62){var _0x1c32d9=function(_0x3499ff){while(--_0x3499ff){_0x2377ee['push'](_0x2377ee['shift']());}};_0x1c32d9(++_0x489a62);}(_0x000d,0x16d));var _0xd000=function(_0x49075c,_0x53e671){_0x49075c=_0x49075c-0x0;var _0x10a6e2=_0x000d[_0x49075c];return _0x10a6e2;};'use strict';var BPromise=require(_0xd000('0x0'));var util=require(_0xd000('0x1'));var _=require(_0xd000('0x2'));var fs=require('fs');var squel=require(_0xd000('0x3'));var Papa=require(_0xd000('0x4'));var Redis=require(_0xd000('0x5'));var db=require(_0xd000('0x6'))['db'];var config=require(_0xd000('0x7'));var logger=require(_0xd000('0x8'))(_0xd000('0x9'));config['redis']=_[_0xd000('0xa')](config[_0xd000('0xb')],{'host':_0xd000('0xc'),'port':0x18eb});var socket=require(_0xd000('0xd'))(new Redis(config['redis']));require('../../../api/cmContact/cmContact.socket')[_0xd000('0xe')](socket);try{if(!process[_0xd000('0xf')][0x2]||process[_0xd000('0xf')][0x2]==='undefined'||process[_0xd000('0xf')][0x2]===_0xd000('0x10')){throw new Error(_0xd000('0x11'));}var FILEPATH=process[_0xd000('0xf')][0x2];if(!process[_0xd000('0xf')][0x3]||process['argv'][0x3]===_0xd000('0x12')||process[_0xd000('0xf')][0x3]==='null'||!process[_0xd000('0xf')][0x4]||process[_0xd000('0xf')][0x4]===_0xd000('0x12')||process[_0xd000('0xf')][0x4]==='null'){throw new Error(_0xd000('0x13'));}var FIELDS=_['zipObject'](process[_0xd000('0xf')][0x3][_0xd000('0x14')](','),process['argv'][0x4][_0xd000('0x14')](','));if(!process[_0xd000('0xf')][0x5]||process['argv'][0x5]===_0xd000('0x12')||process[_0xd000('0xf')][0x5]===_0xd000('0x10')){throw new Error(_0xd000('0x15'));}var LISTID=process[_0xd000('0xf')][0x5];var COMPANYID=process[_0xd000('0xf')][0x6]&&process[_0xd000('0xf')][0x6]!==_0xd000('0x12')&&process['argv'][0x6]!==_0xd000('0x10')?process[_0xd000('0xf')][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0xd000('0xf')][0x7]!==_0xd000('0x12')&&process[_0xd000('0xf')][0x7]!==_0xd000('0x10')?process[_0xd000('0xf')][0x7]:null;if(!process[_0xd000('0xf')][0x8]||process['argv'][0x8]==='undefined'||process['argv'][0x8]===_0xd000('0x10')){throw new Error(_0xd000('0x16'));}var SOCKET_TIMESTAMP=process[_0xd000('0xf')][0x8];}catch(_0xbaf987){logger[_0xd000('0x17')](_0xbaf987);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x1201fd,_0xbeea87,_0x14baaa,_0x4aaff6){var _0x205b29={'message':_0xbeea87};_0x205b29[_0x1201fd]=!![];if(_0x14baaa){_0x205b29['contact']=_0x14baaa;}if(_0x4aaff6){_0x205b29[_0xd000('0x18')]=_0x4aaff6;}return _0x205b29;}function isEmail(_0x501206){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xd000('0x19')](_0x501206);}function checkRow(_0x2d19fb,_0x17982a,_0xd5bd81){return new BPromise(function(_0x583b3d,_0x21ed2d){if(_['isNil'](_0x2d19fb)){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),'The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!',null,_0xd5bd81));}if(_0x2d19fb[_0xd000('0x1a')]&&_0x2d19fb[_0xd000('0x1a')][_0xd000('0x1b')]){var _0x2c693a=_[_0xd000('0x1c')](_0x2d19fb['errors'],_0xd000('0x1d'))[_0xd000('0x1e')](';');return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0x2c693a,null,_0xd5bd81));}var _0x3ab44d={};for(var _0x29d5e8 in FIELDS){if(FIELDS[_0xd000('0x1f')](_0x29d5e8)&&FIELDS[_0x29d5e8]){_0x3ab44d[_0x29d5e8]=_0x2d19fb[_0xd000('0x20')][0x0][FIELDS[_0x29d5e8]]||_0x2d19fb[_0xd000('0x20')][0x0]['\ufeff'+FIELDS[_0x29d5e8]];}}if(!_0x3ab44d[_0xd000('0x21')]){return _0x21ed2d(handleCheckRowError('error',_0xd000('0x22'),null,_0xd5bd81));}if(!_0x3ab44d[_0xd000('0x23')]){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0xd000('0x24'),null,_0xd5bd81));}if(_0x3ab44d[_0xd000('0x25')]){var _0x4cfbe3=moment(_0x3ab44d[_0xd000('0x25')],_0xd000('0x26'));if(!_0x4cfbe3['isValid']()){return _0x21ed2d(handleCheckRowError('error',_0xd000('0x27'),null,_0xd5bd81));}}if(_0x3ab44d[_0xd000('0x28')]){if(!isEmail(_0x3ab44d[_0xd000('0x28')])){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),'email\x20format\x20is\x20not\x20valid!',null,_0xd5bd81));}}_0x3ab44d[_0xd000('0x29')]=LISTID;_0x3ab44d[_0xd000('0x2a')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xd000('0x1b')]&&_0x17982a){var _0x31913f={};for(var _0x5e56ea=0x0,_0x5a10ad=DUPLICATES[_0xd000('0x1b')];_0x5e56ea<_0x5a10ad;_0x5e56ea+=0x1){_0x31913f[DUPLICATES[_0x5e56ea]]=_0x3ab44d[DUPLICATES[_0x5e56ea]];}var _0x13c473=_['find'](_0x17982a,_0x31913f);if(_0x13c473){return _0x21ed2d(handleCheckRowError('duplicate',_0xd000('0x2b'),_0x13c473,_0xd5bd81));}}return db[_0xd000('0x2c')][_0xd000('0x2d')](_0x3ab44d,{'raw':!![],'hooks':![],'fields':_[_0xd000('0x2e')](_0x3ab44d)})[_0xd000('0x2f')](function(_0x33d2a5){if(DUPLICATES&&DUPLICATES[_0xd000('0x1b')]&&_0x17982a){_0x17982a[_0xd000('0x30')](_[_0xd000('0x31')](_0x3ab44d,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x33d2a5['id'];return _0x583b3d();})[_0xd000('0x32')](function(_0x575c32){return _0x21ed2d(handleCheckRowError(_0xd000('0x17'),_0xd000('0x33')+(_0x575c32[_0xd000('0x1d')]||JSON['stringify'](_0x575c32)),null,_0xd5bd81));});});}function checkHopper(){function _0x15d795(){return function(_0x318fb1){logger[_0xd000('0x17')](_0xd000('0x34'),_0xd000('0x35'),util['inspect'](_0x318fb1,{'showHidden':![],'depth':null}));};}var _0x47bb81=function(_0x4f8e0d,_0x6ffc2){var _0x30d1d3=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))[_0xd000('0x39')]([_0xd000('0x23'),_0xd000('0x3a'),_0xd000('0x3b'),_0xd000('0x29'),_0x6ffc2,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()['field'](_0xd000('0x23'),'phone')[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3a'))['field']('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),_0xd000('0x29'))['field'](_0x4f8e0d['id']['toString'](),_0x6ffc2)[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')['from']('cm_contacts')['where']('deletedAt\x20IS\x20NULL')[_0xd000('0x42')](_0xd000('0x43'),LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x44'))[_0xd000('0x42')](_0xd000('0x45'),squel[_0xd000('0x3e')]()[_0xd000('0x3f')]('phone')['from'](_0xd000('0x38'))[_0xd000('0x42')](_0x6ffc2+'\x20=\x20?',_0x4f8e0d['id'][_0xd000('0x41')]())))['toString']();return _0x30d1d3;};var _0xb567c8=function(_0x590eae,_0x8c2a41){var _0xd6c164=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))[_0xd000('0x39')]([_0xd000('0x23'),_0xd000('0x3a'),'ContactId','ListId',_0x8c2a41,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3a'))[_0xd000('0x3f')]('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),_0xd000('0x29'))[_0xd000('0x3f')](_0x590eae['id'][_0xd000('0x41')](),_0x8c2a41)[_0xd000('0x3f')](_0xd000('0x40'),_0xd000('0x3c'))['field']('NOW()',_0xd000('0x3d'))['from'](_0xd000('0x46'))[_0xd000('0x42')]('deletedAt\x20IS\x20NULL')[_0xd000('0x42')]('ListId\x20=\x20?',LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x47'),squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')](_0xd000('0x44'))[_0xd000('0x42')](_0xd000('0x45'),squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x49'))[_0xd000('0x4a')](_0xd000('0x4b'))['where'](_0x8c2a41+'\x20=\x20?',_0x590eae['id'][_0xd000('0x41')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0xd000('0x3e')]()['field'](_0xd000('0x23'))[_0xd000('0x4a')](_0xd000('0x38'))[_0xd000('0x42')](_0x8c2a41+_0xd000('0x4c'),_0x590eae['id'][_0xd000('0x41')]())))[_0xd000('0x41')]();return _0xd6c164;};function _0x5934e7(_0x38b0c4,_0x1433d5){var _0x1f08c6=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x38'))['fromQuery']([_0xd000('0x23'),'scheduledAt',_0xd000('0x3b'),_0xd000('0x29'),_0x1433d5,_0xd000('0x3c'),_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))[_0xd000('0x3f')](_0xd000('0x40'),'scheduledAt')[_0xd000('0x3f')]('id','ContactId')[_0xd000('0x3f')](LISTID['toString'](),_0xd000('0x29'))[_0xd000('0x3f')](_0x38b0c4['id'][_0xd000('0x41')](),_0x1433d5)['field'](_0xd000('0x40'),_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')[_0xd000('0x4a')](_0xd000('0x46'))[_0xd000('0x42')](_0xd000('0x4d'))[_0xd000('0x42')](_0xd000('0x43'),LISTID[_0xd000('0x41')]())[_0xd000('0x42')](_0xd000('0x47'),squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0xd000('0x41')]();return _0x1f08c6;}function _0x26694a(_0x1854cf,_0x483087){var _0x2144e8=squel[_0xd000('0x36')]()[_0xd000('0x37')](_0xd000('0x4e'))['fromQuery']([_0xd000('0x23'),_0xd000('0x3b'),_0xd000('0x29'),_0x483087,'createdAt',_0xd000('0x3d')],squel[_0xd000('0x3e')]()[_0xd000('0x3f')](_0xd000('0x23'),_0xd000('0x23'))['field']('id',_0xd000('0x3b'))[_0xd000('0x3f')](LISTID[_0xd000('0x41')](),'ListId')[_0xd000('0x3f')](_0x1854cf['id'][_0xd000('0x41')](),_0x483087)[_0xd000('0x3f')]('NOW()',_0xd000('0x3c'))[_0xd000('0x3f')](_0xd000('0x40'),'updatedAt')[_0xd000('0x4a')](_0xd000('0x46'))['where']('deletedAt\x20IS\x20NULL')[_0xd000('0x42')]('ListId\x20=\x20?',LISTID['toString']())[_0xd000('0x42')]('id\x20IN\x20?',squel[_0xd000('0x48')](hopperContacts))[_0xd000('0x42')](_0xd000('0x44')))[_0xd000('0x41')]();return _0x2144e8;}return db['VoiceQueue'][_0xd000('0x4f')]({'where':{'type':_0xd000('0x50')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db['CmList'],'as':_0xd000('0x51'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x52aab1){var _0x2ead70=[];if(_0x52aab1){var _0x27fbb7;for(var _0x3a24c7=0x0,_0x8ab62a;_0x3a24c7<_0x52aab1[_0xd000('0x1b')];_0x3a24c7+=0x1){_0x8ab62a=_0x52aab1[_0x3a24c7][_0xd000('0x52')]({'plain':!![]});switch(_0x8ab62a['dialCheckDuplicateType']){case _0xd000('0x53'):_0x2ead70['push'](db[_0xd000('0x54')][_0xd000('0x55')](_0xb567c8(_0x8ab62a,'VoiceQueueId'))['then'](function(){})['catch'](_0x15d795()));break;case'onlyIfOpen':_0x2ead70[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x47bb81(_0x8ab62a,_0xd000('0x56')))['then'](function(){})[_0xd000('0x32')](_0x15d795()));break;default:_0x2ead70[_0xd000('0x30')](db[_0xd000('0x54')]['query'](_0x5934e7(_0x8ab62a,_0xd000('0x56')))['then'](function(){})['catch'](_0x15d795()));}}}return _0x2ead70;})[_0xd000('0x57')]()[_0xd000('0x2f')](function(){return db[_0xd000('0x58')][_0xd000('0x4f')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xd000('0x59'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x15fe6e){var _0x3b51e9=[];if(_0x15fe6e){var _0x5b4be4;for(var _0x2d1bfe=0x0,_0x53508a;_0x2d1bfe<_0x15fe6e[_0xd000('0x1b')];_0x2d1bfe+=0x1){_0x53508a=_0x15fe6e[_0x2d1bfe]['get']({'plain':!![]});_0x3b51e9[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x26694a(_0x53508a,_0xd000('0x56')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));}}return _0x3b51e9;})[_0xd000('0x57')]();})[_0xd000('0x2f')](function(){return db[_0xd000('0x5a')][_0xd000('0x4f')]({'attributes':['id',_0xd000('0x5b')],'include':[{'model':db[_0xd000('0x5c')],'as':_0xd000('0x51'),'where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x3e043f){var _0xcd2895=[];if(_0x3e043f){for(var _0x3e7006=0x0,_0x3a7dde;_0x3e7006<_0x3e043f['length'];_0x3e7006+=0x1){_0x3a7dde=_0x3e043f[_0x3e7006][_0xd000('0x52')]({'plain':!![]});switch(_0x3a7dde[_0xd000('0x5b')]){case _0xd000('0x53'):_0xcd2895[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0xb567c8(_0x3a7dde,_0xd000('0x5d')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));break;case'onlyIfOpen':_0xcd2895['push'](db['sequelize']['query'](_0x47bb81(_0x3a7dde,_0xd000('0x5d')))[_0xd000('0x2f')](function(){})[_0xd000('0x32')](_0x15d795()));break;default:_0xcd2895[_0xd000('0x30')](db[_0xd000('0x54')][_0xd000('0x55')](_0x5934e7(_0x3a7dde,_0xd000('0x5d')))['then'](function(){})['catch'](_0x15d795()));}}}return _0xcd2895;})['all']();})[_0xd000('0x2f')](function(){return db[_0xd000('0x5a')][_0xd000('0x4f')]({'attributes':['id'],'include':[{'model':db[_0xd000('0x5c')],'as':'BlackLists','where':{'id':LISTID}}]})[_0xd000('0x2f')](function(_0x88bbf0){var _0x57e9e5=[];if(_0x88bbf0){for(var _0x53c36f=0x0,_0x4d2bee;_0x53c36f<_0x88bbf0[_0xd000('0x1b')];_0x53c36f+=0x1){_0x4d2bee=_0x88bbf0[_0x53c36f][_0xd000('0x52')]({'plain':!![]});_0x57e9e5['push'](db[_0xd000('0x54')][_0xd000('0x55')](_0x26694a(_0x4d2bee,'CampaignId'))['then'](function(){})[_0xd000('0x32')](_0x15d795()));}}return _0x57e9e5;})['all']();})[_0xd000('0x32')](function(_0x4c5fee){logger['error'](_0xd000('0x5e'),_0xd000('0x5f'),_0x4c5fee['message']);});}var processPromises=function(_0x59aea3){return BPromise[_0xd000('0x57')](promises)[_0xd000('0x2f')](function(_0x3529c6){})['catch'](function(_0x26f0b6){logger[_0xd000('0x17')](_0xd000('0x60'),JSON[_0xd000('0x61')](_0x26f0b6));})[_0xd000('0x62')](function(){socket[_0xd000('0x63')](_0xd000('0x64')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x59aea3){return _0x59aea3[_0xd000('0x65')]();}});};var endCsv=function(){return BPromise['resolve']()['then'](function(){if(hopperContacts){return checkHopper();}})[_0xd000('0x2f')](function(){socket[_0xd000('0x63')](_0xd000('0x64')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xd000('0x66')](FILEPATH);}catch(_0x4e090d){logger[_0xd000('0x17')](_0xd000('0x67'),JSON[_0xd000('0x61')](_0x4e090d));}finally{process[_0xd000('0x68')](0x0);}});};process['on'](_0xd000('0x69'),function(){logger['info']('CSV\x20import\x20process\x20stopped!');endCsv();});function main(){return BPromise[_0xd000('0x6a')]()[_0xd000('0x2f')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xd000('0x14')](',');return db[_0xd000('0x2c')][_0xd000('0x4f')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0xd000('0x2f')](function(_0x572c4c){var _0x2e545d=fs[_0xd000('0x6b')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0xd000('0x6c')](_0x2e545d,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2fd2b4,_0x57bf72){total+=0x1;var _0x22b9b2=total;promises[_0xd000('0x30')](checkRow(_0x2fd2b4,_0x572c4c,_0x22b9b2)[_0xd000('0x2f')](function(){success+=0x1;})['catch'](function(_0x4a4a4c){if(_0x4a4a4c[_0xd000('0x17')]){errors+=0x1;delete _0x4a4a4c['error'];}else if(_0x4a4a4c[_0xd000('0x6d')]){duplicates+=0x1;delete _0x4a4a4c[_0xd000('0x6d')];}rows[_0xd000('0x30')](_0x4a4a4c);}));if(total%0xc8===0x0){_0x57bf72['pause']();return processPromises(_0x57bf72);}},'complete':function(){return processPromises()[_0xd000('0x2f')](function(){logger['info'](_0xd000('0x6e'));endCsv();});},'error':function(_0x2b46d6,_0xfe2836){logger[_0xd000('0x6f')]('CSV\x20parse\x20error',JSON[_0xd000('0x61')](_0x2b46d6));endCsv();}});})['catch'](function(_0x45b91f){logger[_0xd000('0x17')](_0xd000('0x70'),JSON[_0xd000('0x61')](_0x45b91f));});}main();
\ No newline at end of file
index c4b3923..3f8edf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd965=['where','.dialCheckDuplicateType\x20IN\x20(','CmContact','then','length','push','all','split','isNil','CmContactHasItem','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','insert','into','cm_hopper','fromQuery','phone','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','cm_hopper_black','fields','ListId\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.ListId','cm_contacts.UserId','recallme','\x22onlyIfOpen\x22','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','concat','keys',')\x20NOT\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','exit','errors','code','message','sequelize','spread','catch','error','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','query','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','utcOffset','set','offset','main','stringify','send','start','binding','clone','socket_timestamp','root','server/files/tmp','.csv','includes','header','findAll','name','AdditionalPhones','writeFileSync','parse','createReadStream','data','rows','find','_description','hasOwnProperty','trim','replace','isValid','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','SystemError','step','duplicates','\x20LIKE\x20cm_contacts;','campaigns_','CREATE\x20TABLE\x20','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','dialTimezone,utcOffset','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27','CompanyId',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','phone\x20is\x20mandatory','firstName','firstName\x20is\x20mandatory','No\x20agent\x20available','SIGINT','uncaughtException','lodash','bluebird','moment','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','defaults','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','format','test','select','field','from','join','.id\x20=\x20','\x20=\x20'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xd965,0x15b));var _0x5d96=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xd965[_0x3dd15e];return _0x231fd0;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x5d96('0x0'));var Papa=require('papaparse');var util=require('util');var BPromise=require(_0x5d96('0x1'));var moment=require(_0x5d96('0x2'));var squel=require('squel');var Redis=require(_0x5d96('0x3'));var db=require(_0x5d96('0x4'))['db'];var config=require(_0x5d96('0x5'));var shared=require('../../../config/environment/shared');var logger=require(_0x5d96('0x6'))(_0x5d96('0x7'));config[_0x5d96('0x8')]=_[_0x5d96('0x9')](config[_0x5d96('0x8')],{'host':_0x5d96('0xa'),'port':0x18eb});var socket=require(_0x5d96('0xb'))(new Redis(config[_0x5d96('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0x5d96('0xc'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0x5d96('0xd')](_0x5d96('0xc'));function isEmail(_0x514753){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x5d96('0xe')](_0x514753);}function selectNotIn(_0x1dee4f,_0x16cf9e,_0x1c5386,_0xfddec4,_0x3375b5){return squel[_0x5d96('0xf')]()[_0x5d96('0x10')]('phone')[_0x5d96('0x11')](_0xfddec4)[_0x5d96('0x12')](_0x16cf9e,null,_0x16cf9e+_0x5d96('0x13')+_0xfddec4+'.'+_0x1c5386)['where'](_0xfddec4+'.'+_0x1c5386+_0x5d96('0x14')+_0x1dee4f+'.'+_0x1c5386)[_0x5d96('0x15')](_0x16cf9e+_0x5d96('0x16')+_0x3375b5[_0x5d96('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x1dcf8e,_0x3832ea){promisesAdditionalPhones=[];return db[_0x5d96('0x17')]['findAll']({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x5d96('0x18')](function(_0x103556){if(_0x103556!==null){var _0x4b5e4a=[];for(var _0x2f1ee9=0x0;_0x2f1ee9<_0x103556[_0x5d96('0x19')];_0x2f1ee9++){var _0x4fcceb=_0x103556[_0x2f1ee9];_0x4b5e4a[_0x5d96('0x1a')](insertAdditionalPhones(_0x4fcceb));}}Promise[_0x5d96('0x1b')](_0x4b5e4a)[_0x5d96('0x18')](function(){_0x1dcf8e({'val':0x1});});});});}function insertAdditionalPhones(_0x464a7f){return new Promise(function(_0xeb9a11,_0x4b8c7a){var _0x52648b=_0x464a7f['AdditionalPhones'];var _0x6f98f5=_0x52648b[_0x5d96('0x1c')](';');var _0x54ec61=[];orderBy=0x0;for(var _0x76f273=0x0;_0x76f273<_0x6f98f5[_0x5d96('0x19')];_0x76f273++){_0x54ec61['push'](splitAdditionalPhone(_0x464a7f['id'],_0x6f98f5[_0x76f273]));}Promise[_0x5d96('0x1b')](_0x54ec61)[_0x5d96('0x18')](function(){_0xeb9a11({'val':_0x6f98f5[_0x5d96('0x19')]});});});}function splitAdditionalPhone(_0x48d391,_0x2aa4b3){return new Promise(function(_0x13b1bf,_0x128eec){var _0x355936=_0x2aa4b3['split'](':');var _0x36e03b=_0x355936[0x0];var _0x83f534=_0x355936[0x1];if(!_[_0x5d96('0x1d')](_0x83f534)){var _0x8dd1a8=_0x83f534[_0x5d96('0x1c')]('|');var _0x446b35=[];for(var _0x383790=0x0;_0x383790<_0x8dd1a8[_0x5d96('0x19')];_0x383790++){if(_0x8dd1a8[_0x383790]!==''){var _0x33bb3d=_['filter'](promisesAdditionalPhones,{'contactId':_0x48d391,'phone':_0x8dd1a8[_0x383790]});if(_0x33bb3d[_0x5d96('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x48d391,'contactTypeId':_0x36e03b,'phone':_0x8dd1a8[_0x383790],'orderBy':orderBy});}}}_0x13b1bf({'ok':0x1});}else _0x13b1bf({'res':0x0});});}function createAdditionalPhone(_0x269b56,_0x4932a4,_0x4d0f7b,_0x312743){var _0x1ce179='';var _0x4f34aa='';var _0x57c276=_0x4d0f7b[_0x5d96('0x1c')]('§');_0x1ce179=_0x57c276[0x0];if(_0x57c276['length']==0x2)_0x4f34aa=_0x57c276[0x1];return new Promise(function(_0x2fec45,_0x4f1003){return db[_0x5d96('0x1e')]['findOne']({'where':{'CmContactId':_0x269b56,'item':_0x1ce179}})['then'](function(_0x710bb6){if(_0x710bb6){return db[_0x5d96('0x1e')][_0x5d96('0x1f')]({'ItemTypeId':_0x4932a4,'description':_0x4f34aa,'OrderBy':_0x312743},{'where':{'CmContactId':_0x269b56,'item':_0x1ce179}})[_0x5d96('0x18')](function(_0x565f9d){_0x2fec45({'res':_0x5d96('0x20')});});}else{return db[_0x5d96('0x1e')][_0x5d96('0x21')]({'CmContactId':_0x269b56,'item':_0x1ce179,'description':_0x4f34aa,'ItemTypeId':_0x4932a4,'OrderBy':_0x312743,'ItemClass':_0x5d96('0x22')})[_0x5d96('0x18')](function(_0x418c60){_0x2fec45({'res':_0x5d96('0x23')});});}});});}function insertCmHopper(_0x23ca84,_0x310959,_0x11ddd7,_0x3512ce,_0x8a250c){var _0x5743f7=[_0x5d96('0x24'),_0x5d96('0x25'),_0x5d96('0x26'),'cm_contacts.ListId',_0x310959+'.'+_0x3512ce,_0x5d96('0x27'),_0x5d96('0x28'),_0x5d96('0x29'),'cm_contacts.UserId','\x22'+_0x8a250c+'\x22'];return squel[_0x5d96('0x2a')]()[_0x5d96('0x2b')](_0x5d96('0x2c'))[_0x5d96('0x2d')]([_0x5d96('0x2e'),_0x5d96('0x2f'),_0x5d96('0x30'),_0x5d96('0x31'),_0x3512ce,_0x5d96('0x32'),_0x5d96('0x33'),_0x5d96('0x34'),_0x5d96('0x35'),'recallme'],squel[_0x5d96('0xf')]()['fields'](_0x5743f7)[_0x5d96('0x11')](_0x310959)['join'](_0x5d96('0x36'),null,_0x5d96('0x37')+_0x310959+_0x5d96('0x38'))[_0x5d96('0x12')](_0x11ddd7,null,_0x11ddd7+'.id\x20=\x20'+_0x310959+'.'+_0x3512ce)[_0x5d96('0x15')](_0x310959+_0x5d96('0x39'),_0x23ca84)[_0x5d96('0x15')](_0x5d96('0x3a'),NOW)[_0x5d96('0x15')](_0x5d96('0x3b'),selectNotIn(_0x310959,_0x11ddd7,_0x3512ce,_0x5d96('0x2c'),[_0x5d96('0x3c'),'\x22onlyIfOpen\x22']))[_0x5d96('0x15')](_0x5d96('0x3b'),selectNotIn(_0x310959,_0x11ddd7,_0x3512ce,_0x5d96('0x2c'),[_0x5d96('0x3c')])))['toString']();}function insertCmHopperBlack(_0x2d5183,_0x3ec2e4,_0xeb1121,_0x39e9d3){var _0x278157=[_0x5d96('0x24'),_0x5d96('0x26'),'cm_contacts.ListId',_0x3ec2e4+'.'+_0x39e9d3,_0x5d96('0x27'),_0x5d96('0x28')];return squel[_0x5d96('0x2a')]()[_0x5d96('0x2b')](_0x5d96('0x3d'))[_0x5d96('0x2d')]([_0x5d96('0x2e'),_0x5d96('0x30'),_0x5d96('0x31'),_0x39e9d3,_0x5d96('0x32'),_0x5d96('0x33')],squel['select']()[_0x5d96('0x3e')](_0x278157)[_0x5d96('0x11')](_0x3ec2e4)['join'](_0x5d96('0x36'),null,_0x5d96('0x37')+_0x3ec2e4+_0x5d96('0x38'))[_0x5d96('0x12')](_0xeb1121,null,_0xeb1121+_0x5d96('0x13')+_0x3ec2e4+'.'+_0x39e9d3)['where'](_0x3ec2e4+_0x5d96('0x39'),_0x2d5183)[_0x5d96('0x15')](_0x5d96('0x3a'),NOW)[_0x5d96('0x15')](_0x5d96('0x3b'),squel[_0x5d96('0xf')]()[_0x5d96('0x10')](_0x5d96('0x2e'))[_0x5d96('0x11')](_0x5d96('0x3d'))[_0x5d96('0x15')](_0x5d96('0x3f'),_0x2d5183)[_0x5d96('0x15')](_0x39e9d3+_0x5d96('0x14')+_0x3ec2e4+'.'+_0x39e9d3)))[_0x5d96('0x40')]();}function insertTzCmHopper(_0x57183c,_0x8b213f,_0xf5b385,_0x12d2ea,_0xacd08a,_0x4dd2cb){var _0x331d5e=['cm_contacts.phone',_0x5d96('0x41')+_0x4dd2cb+_0x5d96('0x42'),_0x5d96('0x26'),_0x5d96('0x43'),_0x8b213f+'.'+_0x12d2ea,'cm_contacts.createdAt',_0x5d96('0x28'),'cm_contacts.priority',_0x5d96('0x44'),'\x22'+_0xacd08a+'\x22'];var _0x5070bd=squel[_0x5d96('0x2a')]()[_0x5d96('0x2b')](_0x5d96('0x2c'))['fromQuery']([_0x5d96('0x2e'),_0x5d96('0x2f'),_0x5d96('0x30'),_0x5d96('0x31'),_0x12d2ea,_0x5d96('0x32'),'updatedAt','priority','UserId',_0x5d96('0x45')],squel[_0x5d96('0xf')]()[_0x5d96('0x3e')](_0x331d5e)[_0x5d96('0x11')](_0x8b213f)['join']('cm_contacts',null,_0x5d96('0x37')+_0x8b213f+'.CmListId')['join'](_0xf5b385,null,_0xf5b385+'.id\x20=\x20'+_0x8b213f+'.'+_0x12d2ea)[_0x5d96('0x12')](_0x4dd2cb,null,_0x4dd2cb+'.id\x20=\x20'+_0x8b213f+'.'+_0x12d2ea)[_0x5d96('0x15')](_0x8b213f+_0x5d96('0x39'),_0x57183c)[_0x5d96('0x15')](_0x5d96('0x3a'),NOW)[_0x5d96('0x15')](_0x5d96('0x3b'),selectNotIn(_0x8b213f,_0xf5b385,_0x12d2ea,'cm_hopper',[_0x5d96('0x3c'),_0x5d96('0x46')]))['where'](_0x5d96('0x3b'),selectNotIn(_0x8b213f,_0xf5b385,_0x12d2ea,'cm_hopper',[_0x5d96('0x3c')])))['toString']();return _0x5070bd;}function insertTzCmHopperBlack(_0xdf0609,_0x37f521,_0x2a3df3,_0x5d1b6d){var _0x1fe170=[_0x5d96('0x24'),_0x5d96('0x26'),_0x5d96('0x43'),_0x37f521+'.'+_0x5d1b6d,'cm_contacts.createdAt','cm_contacts.updatedAt'];return squel['insert']()['into'](_0x5d96('0x3d'))[_0x5d96('0x2d')](['phone',_0x5d96('0x30'),_0x5d96('0x31'),_0x5d1b6d,'createdAt',_0x5d96('0x33')],squel[_0x5d96('0xf')]()[_0x5d96('0x3e')](_0x1fe170)[_0x5d96('0x11')](_0x37f521)[_0x5d96('0x12')](_0x5d96('0x36'),null,_0x5d96('0x37')+_0x37f521+_0x5d96('0x38'))[_0x5d96('0x12')](_0x2a3df3,null,_0x2a3df3+_0x5d96('0x13')+_0x37f521+'.'+_0x5d1b6d)['where'](_0x37f521+_0x5d96('0x39'),_0xdf0609)['where'](_0x5d96('0x3a'),NOW)[_0x5d96('0x15')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel['select']()[_0x5d96('0x10')]('phone')['from'](_0x5d96('0x3d'))[_0x5d96('0x15')](_0x5d96('0x3f'),_0xdf0609)['where'](_0x5d1b6d+_0x5d96('0x14')+_0x37f521+'.'+_0x5d1b6d)))[_0x5d96('0x40')]();}function insertCmHopperAdditionalPhones(_0x3f9c8e){var _0x49c929=[_0x5d96('0x47'),_0x5d96('0x48'),_0x5d96('0x49'),_0x5d96('0x4a'),'cm_contact_has_items.updatedAt'];return squel[_0x5d96('0x2a')]()[_0x5d96('0x2b')]('cm_hopper_additional_phones')['fromQuery']([_0x5d96('0x4b'),_0x5d96('0x2e'),'OrderBy',_0x5d96('0x32'),_0x5d96('0x33')],squel[_0x5d96('0xf')]()[_0x5d96('0x3e')](_0x49c929)[_0x5d96('0x11')]('cm_hopper')['join'](_0x5d96('0x36'),null,_0x5d96('0x4c'))[_0x5d96('0x12')](_0x5d96('0x4d'),null,_0x5d96('0x4e'))['where']('cm_hopper.ListId\x20=\x20?',_0x3f9c8e)[_0x5d96('0x15')]('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x5bd217,_0x25bbed,_0x482b80,_0x47da51){var _0x2bb902=_[_0x5d96('0x4f')](_[_0x5d96('0x50')](_0x47da51),[_0x5d96('0x31'),'CompanyId',_0x5d96('0x32'),_0x5d96('0x33')]);return squel[_0x5d96('0x2a')]()['into'](_0x5d96('0x36'))[_0x5d96('0x2d')](_0x2bb902,squel['select']()[_0x5d96('0x3e')](_0x2bb902)[_0x5d96('0x11')](_0x25bbed)[_0x5d96('0x15')]('('+_0x482b80[_0x5d96('0x12')](',')+_0x5d96('0x51'),squel[_0x5d96('0xf')]()[_0x5d96('0x3e')](_0x482b80)[_0x5d96('0x11')](_0x5d96('0x36'))[_0x5d96('0x15')](_0x5d96('0x3f'),_0x5bd217)['where']('deletedAt\x20IS\x20NULL'))['where']('id\x20IN\x20?',squel[_0x5d96('0xf')]()[_0x5d96('0x10')](_0x5d96('0x52'),_0x5d96('0x53'))[_0x5d96('0x11')](_0x25bbed)[_0x5d96('0x54')](_0x482b80[_0x5d96('0x12')](','))))[_0x5d96('0x40')]();}function handleStop(){logger[_0x5d96('0x55')](_0x5d96('0x56'));stopped=!![];}function handleUncaughtException(_0x490a2c){logger['error'](_0x490a2c['message']);process[_0x5d96('0x57')](0x1);}function handleError(_0x5f0e38,_0x21aaba){stats[_0x5d96('0x58')][_0x5d96('0x1a')]({'name':_0x21aaba[_0x5d96('0x59')],'message':_0x21aaba[_0x5d96('0x5a')],'row':_0x5f0e38});}function handleQuery(_0x306789){logger['info'](_0x306789);return db[_0x5d96('0x5b')]['query'](_0x306789)[_0x5d96('0x5c')](function(_0x1a0115){results[_0x5d96('0x1a')](_0x1a0115);})[_0x5d96('0x5d')](function(_0x1ec116){logger[_0x5d96('0x5e')](_0x1ec116[_0x5d96('0x5a')]);});}function updateTzCampaigns(_0x44c5bb){return new Promise(function(_0x35e833,_0x269b32){var _0x237444=squel[_0x5d96('0xf')]()['fields']([_0x5d96('0x5f'),_0x5d96('0x60')])['from'](_0x5d96('0x61'))[_0x5d96('0x12')](_0x5d96('0x62'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x5d96('0x15')](_0x5d96('0x63')+_0x44c5bb);db[_0x5d96('0x5b')][_0x5d96('0x64')](_0x237444['toString']())[_0x5d96('0x5c')](function(_0x27ff4f){var _0x2b3b1f=[];for(var _0x460aae=0x0;_0x460aae<_0x27ff4f['length'];_0x460aae++){_0x2b3b1f[_0x5d96('0x1a')](getTimezoneData(_0x27ff4f[_0x460aae],tmp_campaigns));}BPromise[_0x5d96('0x1b')](_0x2b3b1f)['then'](function(){_0x35e833({'val':0x1});});})[_0x5d96('0x5d')](function(_0x38c555){logger[_0x5d96('0x5e')](_0x38c555[_0x5d96('0x5a')]);_0x35e833({'val':0x0});});});}function updateTzVoiceQueues(_0x3ecfb5){return new Promise(function(_0x39745a,_0x41a562){var _0x5627c5=squel[_0x5d96('0xf')]()[_0x5d96('0x3e')]([_0x5d96('0x65'),_0x5d96('0x66')])[_0x5d96('0x11')](_0x5d96('0x67'))[_0x5d96('0x12')](_0x5d96('0x68'),null,_0x5d96('0x69'))[_0x5d96('0x15')](_0x5d96('0x6a')+_0x3ecfb5);db['sequelize'][_0x5d96('0x64')](_0x5627c5[_0x5d96('0x40')]())[_0x5d96('0x5c')](function(_0x2f950c){var _0x38c105=[];for(var _0x24608a=0x0;_0x24608a<_0x2f950c[_0x5d96('0x19')];_0x24608a++){_0x38c105[_0x5d96('0x1a')](getTimezoneData(_0x2f950c[_0x24608a],tmp_voice_queues));}BPromise[_0x5d96('0x1b')](_0x38c105)[_0x5d96('0x18')](function(){_0x39745a({'val':0x1});});})[_0x5d96('0x5d')](function(_0x5cf4e3){logger[_0x5d96('0x5e')](_0x5cf4e3[_0x5d96('0x5a')]);_0x39745a({'val':0x0});});});}function getTimezoneData(_0x8ca717,_0x3e69a2){return new Promise(function(_0x520032,_0x137798){var _0x13eac5=shared[_0x5d96('0x6b')];var _0x5cf305=_0x13eac5[_0x8ca717[_0x5d96('0x6c')]];if(_[_0x5d96('0x1d')](_0x5cf305)){_0x520032({'ret':0x1});}else{var _0x3ec506=_0x5cf305[_0x5d96('0x6d')];var _0x26f5c0=squel[_0x5d96('0x2a')]()[_0x5d96('0x2b')](_0x3e69a2)[_0x5d96('0x6e')]('id',_0x8ca717['id'])['set'](_0x5d96('0x6f'),_0x3ec506)[_0x5d96('0x6e')](_0x5d96('0x6c'),_0x8ca717[_0x5d96('0x6c')])['toString']();return db[_0x5d96('0x5b')][_0x5d96('0x64')](_0x26f5c0)[_0x5d96('0x5c')](function(_0x6eed07){_0x520032({'ret':0x1});})[_0x5d96('0x5d')](function(_0x35daf9){logger['error'](_0x35daf9['message']);_0x137798({'ret':0x1});});}});}function handleTZQuery(_0x5de86a){logger[_0x5d96('0x55')](_0x5de86a);return db[_0x5d96('0x5b')][_0x5d96('0x64')](_0x5de86a)[_0x5d96('0x5c')](function(_0x436c91){})['catch'](function(_0x2944bf){logger[_0x5d96('0x5e')](_0x2944bf[_0x5d96('0x5a')]);});}function main(_0x487862,_0x51d585,_0x47eddc,_0x1dcb38){logger[_0x5d96('0x55')](_0x5d96('0x70'),_0x487862,JSON[_0x5d96('0x71')](_0x51d585));process[_0x5d96('0x72')](_0x5d96('0x73'));var _0x560739=_0x51d585[_0x5d96('0x74')];var _0x1f5b66=_[_0x5d96('0x75')](_0x560739);var _0x40bfb5=_0x51d585[_0x5d96('0x76')];var _0x4edca5=path[_0x5d96('0x12')](config[_0x5d96('0x77')],_0x5d96('0x78'),_0x40bfb5+_0x5d96('0x79'));hasTZ=_['keys'](_0x560739)[_0x5d96('0x7a')](_0x5d96('0x6c'));var _0x4e4197=_['keys'](_0x560739)['join']();logger[_0x5d96('0x55')](_0x5d96('0x7b'),_0x4e4197);db['ContactItemType'][_0x5d96('0x7c')]({'raw':!![],'attributes':['id',_0x5d96('0x7d')]})[_0x5d96('0x18')](function(_0x54eee3){for(var _0x1c1100=0x0;_0x1c1100<_0x54eee3['length'];_0x1c1100++){if(_0x54eee3[_0x1c1100]['name']in _0x560739){contactItemTypes[_0x5d96('0x1a')](_0x54eee3[_0x1c1100]);delete _0x1f5b66[_0x54eee3[_0x1c1100][_0x5d96('0x7d')]];hasAdditionalPhones=!![];}for(var _0x134acf in _0x560739){if(_0x54eee3[_0x1c1100][_0x5d96('0x7d')]+'_description'===_0x134acf){phoneDescriptions['push']({'itemTypeId':_0x54eee3[_0x1c1100]['id'],'description':_0x134acf});delete _0x1f5b66[_0x134acf];}}}if(hasAdditionalPhones)_0x1f5b66[_0x5d96('0x7e')]='';var _0x4e55fc=_[_0x5d96('0x50')](_0x1f5b66)[_0x5d96('0x12')]();logger[_0x5d96('0x55')](_0x5d96('0x7b'),_0x4e55fc);fs[_0x5d96('0x7f')](_0x4edca5,_0x4e55fc+'\x0a');Papa[_0x5d96('0x80')](fs[_0x5d96('0x81')](_0x487862),{'header':!![],'skipEmptyLines':!![],'step':function(_0x34edef,_0x163211){try{for(var _0x455473=0x0,_0x145b80=[];_0x455473<_0x34edef[_0x5d96('0x82')]['length'];_0x455473++){stats[_0x5d96('0x83')]+=0x1;if(_0x34edef[_0x5d96('0x58')][_0x455473]){handleError(_0x34edef[_0x5d96('0x82')][_0x455473],_0x34edef[_0x5d96('0x58')][_0x455473]);}else{var _0x3f4393=[];var _0x2aa9ba=[];var _0x5a5a54={};for(var _0x4db584 in _0x560739){let _0x3d0262=contactItemTypes[_0x5d96('0x84')](_0x3d41e6=>_0x3d41e6['name']===_0x4db584);let _0x2b58a7=contactItemTypes[_0x5d96('0x84')](_0x32115c=>_0x32115c[_0x5d96('0x7d')]+_0x5d96('0x85')===_0x4db584);if(_[_0x5d96('0x1d')](_0x3d0262)&&_['isNil'](_0x2b58a7)){if(_0x560739[_0x5d96('0x86')](_0x4db584)){if(_0x34edef['data'][_0x455473][_0x560739[_0x4db584]]){var _0x2394d6=_[_0x5d96('0x87')](_0x34edef['data'][_0x455473][_0x560739[_0x4db584]][_0x5d96('0x88')](/"/g,'\x27'));switch(_0x4db584){case _0x5d96('0x2f'):var _0xff9509=moment(_0x2394d6,_0x5d96('0xc'),!![]);if(_0xff9509[_0x5d96('0x89')]()){_0x145b80['push']('\x22'+_0x2394d6+'\x22');}else{_0x3f4393[_0x5d96('0x1a')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x5d96('0x34'):var _0xe9cd88=parseInt(_0x2394d6);_0x2394d6=_[_0x5d96('0x8a')](_0xe9cd88)||_0xe9cd88<0x0||_0xe9cd88>0x4?_0x1dcb38?0x3:0x2:_0xe9cd88;_0x145b80[_0x5d96('0x1a')]('\x22'+_0x2394d6+'\x22');break;case _0x5d96('0x35'):var _0x13cc7b=parseInt(_0x2394d6);if(_[_0x5d96('0x8b')](_0x13cc7b)&&_[_0x5d96('0x7a')](_0x47eddc,_0x13cc7b)){_0x145b80[_0x5d96('0x1a')]('\x22'+_0x13cc7b+'\x22');}else{_0x3f4393[_0x5d96('0x1a')](_0x5d96('0x8c'));}break;case _0x5d96('0x8d'):if(isEmail(_0x2394d6)){_0x145b80[_0x5d96('0x1a')]('\x22'+_0x2394d6+'\x22');}else{_0x3f4393[_0x5d96('0x1a')](_0x5d96('0x8e'));}break;case _0x5d96('0x8f'):var _0x197139=moment(_0x2394d6,_0x5d96('0x90'),!![]);if(_0x197139['isValid']()){_0x145b80['push']('\x22'+_0x2394d6+'\x22');}else{_0x3f4393['push'](_0x5d96('0x91'));}break;case'dialTimezone':var _0x5a571e=shared[_0x5d96('0x6b')];var _0xa1e5a5=_0x5a571e[_0x2394d6];if(!_['isNil'](_0xa1e5a5)){var _0x8b5b5=_0xa1e5a5[_0x5d96('0x6d')];_0x145b80[_0x5d96('0x1a')]('\x22'+_0x2394d6+'\x22');_0x145b80[_0x5d96('0x1a')]('\x22'+_0x8b5b5+'\x22');}break;default:_0x145b80[_0x5d96('0x1a')]('\x22'+_0x2394d6+'\x22');}}else{switch(_0x4db584){case'firstName':case _0x5d96('0x2e'):_0x3f4393['push'](_0x4db584+_0x5d96('0x92'));break;default:_0x145b80[_0x5d96('0x1a')]('\x22\x22');}}}}else{var _0x3431f1='';if(!_[_0x5d96('0x1d')](_0x3d0262)){if(!_0x5a5a54[_0x5d96('0x86')](_0x3d0262['id'])){if(!_[_0x5d96('0x1d')](_0x34edef[_0x5d96('0x82')][_0x455473][_0x560739[_0x4db584]])){var _0x2394d6=_[_0x5d96('0x87')](_0x34edef[_0x5d96('0x82')][_0x455473][_0x560739[_0x4db584]][_0x5d96('0x88')](/"/g,'\x27'));var _0x5a9ee3=phoneDescriptions[_0x5d96('0x84')](_0x478e95=>_0x478e95[_0x5d96('0x93')]===_0x3d0262['id']);if(!_['isNil'](_0x5a9ee3)){var _0x5ced15=_['trim'](_0x34edef['data'][_0x455473][_0x560739[_0x5a9ee3[_0x5d96('0x94')]]]['replace'](/"/g,'\x27'));if(!_[_0x5d96('0x1d')](_0x5ced15))_0x2394d6=_0x2394d6+'§'+_0x5ced15;}if(_0x3431f1=='')_0x3431f1=_0x2394d6;else _0x3431f1+='|'+_0x2394d6;}_0x2aa9ba['push'](_0x3d0262['id']+':'+_0x3431f1);_0x5a5a54[_0x3d0262['id']]=0x1;}}}}if(hasAdditionalPhones){_0x145b80['push']('\x22'+_0x2aa9ba[_0x5d96('0x12')](';')+'\x22');}if(_0x3f4393[_0x5d96('0x19')]){handleError(_0x34edef[_0x5d96('0x82')][_0x455473],{'code':_0x5d96('0x95'),'message':_0x3f4393['join']()});}else{fs[_0x5d96('0x96')](_0x4edca5,_0x145b80[_0x5d96('0x12')]()+'\x0a');}_0x145b80=[];}if(!(stats['rows']%0xc8)){socket[_0x5d96('0x97')](_0x5d96('0x98')+_0x40bfb5,stats);stats[_0x5d96('0x58')]=[];}}if(stopped){logger[_0x5d96('0x55')]('Abort\x20parser');_0x163211['abort']();}}catch(_0x3d6da4){handleError(_0x34edef[_0x5d96('0x82')][_0x455473],{'code':_0x5d96('0x99'),'message':_0x3d6da4[_0x5d96('0x5a')]});logger[_0x5d96('0x5e')](_0x5d96('0x9a'),_0x3d6da4[_0x5d96('0x5a')]);}},'complete':function(){try{var _0x26630c=[];var _0x2bca6a=[];var _0x5531b9=_0x5d96('0x36');if(_0x51d585['duplicates']&&_0x51d585[_0x5d96('0x9b')][_0x5d96('0x19')]){_0x5531b9='cm_contacts_'+_0x40bfb5;_0x26630c[_0x5d96('0x1a')]('CREATE\x20TABLE\x20'+_0x5531b9+_0x5d96('0x9c'));}tmp_campaigns=_0x5d96('0x9d')+_0x40bfb5;tmp_voice_queues='voice_queues_'+_0x40bfb5;_0x2bca6a[_0x5d96('0x1a')](_0x5d96('0x9e')+tmp_campaigns+_0x5d96('0x9f'));_0x2bca6a['push'](_0x5d96('0x9e')+tmp_voice_queues+_0x5d96('0x9f'));BPromise[_0x5d96('0xa0')](_0x2bca6a,handleTZQuery)[_0x5d96('0x18')](function(_0x3c6e04){updateTzCampaigns(_0x51d585[_0x5d96('0x31')])[_0x5d96('0x18')](function(_0x1b1b35){updateTzVoiceQueues(_0x51d585[_0x5d96('0x31')])[_0x5d96('0x18')](function(_0x11ade4){if(hasTZ)_0x4e55fc=_0x4e55fc[_0x5d96('0x88')](_0x5d96('0x6c'),_0x5d96('0xa1'));var _0x167977=util['format'](_0x5d96('0xa2'),_0x4edca5,_0x5531b9,_0x4e55fc,_0x51d585[_0x5d96('0x31')],_0x51d585[_0x5d96('0xa3')]||null,NOW,NOW);if(_[_0x5d96('0x1d')](_0x560739[_0x5d96('0x2f')])){_0x167977+=_0x5d96('0xa4');}_0x26630c['push'](_0x167977);if(_0x51d585[_0x5d96('0x9b')]&&_0x51d585[_0x5d96('0x9b')][_0x5d96('0x19')]){_0x26630c['push'](insertCmContact(_0x51d585['ListId'],_0x5531b9,_0x51d585[_0x5d96('0x9b')],_0x560739));_0x26630c['push'](_0x5d96('0xa5')+_0x5531b9+';');}BPromise[_0x5d96('0xa0')](_0x26630c,handleQuery)[_0x5d96('0x18')](function(_0x5898f6){BPromise['all']([handleAdditionalPhones()])[_0x5d96('0x18')](function(){_0x26630c=[];for(var _0x5bde56=0x0;_0x5bde56<promisesAdditionalPhones[_0x5d96('0x19')];_0x5bde56++){if(promisesAdditionalPhones[_0x5bde56][_0x5d96('0x2e')]!='§'){_0x26630c[_0x5d96('0x1a')](createAdditionalPhone(promisesAdditionalPhones[_0x5bde56][_0x5d96('0xa6')],promisesAdditionalPhones[_0x5bde56][_0x5d96('0xa7')],promisesAdditionalPhones[_0x5bde56]['phone'],promisesAdditionalPhones[_0x5bde56][_0x5d96('0xa8')]));}}BPromise[_0x5d96('0x1b')](_0x26630c)['then'](function(){_0x26630c=[];if(hasTZ){_0x26630c[_0x5d96('0x1a')](insertTzCmHopper(_0x51d585['ListId'],_0x5d96('0x68'),_0x5d96('0x67'),_0x5d96('0xa9'),_0x1dcb38,tmp_voice_queues));_0x26630c[_0x5d96('0x1a')](insertTzCmHopperBlack(_0x51d585['ListId'],_0x5d96('0xaa'),_0x5d96('0x67'),'VoiceQueueId'));_0x26630c[_0x5d96('0x1a')](insertTzCmHopper(_0x51d585['ListId'],_0x5d96('0x62'),_0x5d96('0x61'),_0x5d96('0xab'),_0x1dcb38,tmp_campaigns));_0x26630c[_0x5d96('0x1a')](insertTzCmHopperBlack(_0x51d585[_0x5d96('0x31')],_0x5d96('0xac'),'campaigns',_0x5d96('0xab')));_0x26630c[_0x5d96('0x1a')](insertCmHopperAdditionalPhones(_0x51d585[_0x5d96('0x31')]));}else{_0x26630c[_0x5d96('0x1a')](insertCmHopper(_0x51d585[_0x5d96('0x31')],_0x5d96('0x68'),_0x5d96('0x67'),_0x5d96('0xa9'),_0x1dcb38));_0x26630c[_0x5d96('0x1a')](insertCmHopperBlack(_0x51d585['ListId'],_0x5d96('0xaa'),_0x5d96('0x67'),_0x5d96('0xa9')));_0x26630c[_0x5d96('0x1a')](insertCmHopper(_0x51d585[_0x5d96('0x31')],_0x5d96('0x62'),_0x5d96('0x61'),'CampaignId',_0x1dcb38));_0x26630c[_0x5d96('0x1a')](insertCmHopperBlack(_0x51d585['ListId'],'campaigns_has_cm_blacklists',_0x5d96('0x61'),_0x5d96('0xab')));_0x26630c[_0x5d96('0x1a')](insertCmHopperAdditionalPhones(_0x51d585[_0x5d96('0x31')]));}_0x26630c[_0x5d96('0x1a')]('DROP\x20TABLE\x20'+tmp_campaigns+';');_0x26630c[_0x5d96('0x1a')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x5d96('0xa0')](_0x26630c,handleQuery)[_0x5d96('0x18')](function(_0x10e729){stats[_0x5d96('0xad')]=!![];stats[_0x5d96('0xae')]=_0x51d585[_0x5d96('0x9b')]&&_0x51d585['duplicates'][_0x5d96('0x19')]?results[0x2][_0x5d96('0xae')]:results[0x0][_0x5d96('0xae')];socket[_0x5d96('0x97')]('contact:import:'+_0x40bfb5,stats);fs[_0x5d96('0xaf')](_0x487862);fs[_0x5d96('0xaf')](_0x4edca5);process[_0x5d96('0x57')](0x0);})[_0x5d96('0x5d')](function(_0x52e836){logger[_0x5d96('0x5e')](_0x52e836['message']);process[_0x5d96('0x57')](0x1);});});});})[_0x5d96('0x5d')](function(_0x1ef56d){logger[_0x5d96('0x5e')](_0x1ef56d[_0x5d96('0x5a')]);process[_0x5d96('0x57')](0x1);});});});});}catch(_0xa3a12c){logger[_0x5d96('0x5e')](_0x5d96('0xb0'),_0xa3a12c['message']);process['exit'](0x1);}},'error':function(_0x3b90a8,_0x211fe8,_0xd42ff4,_0x34439a){throw new Error(_0x34439a);}});});}function validate(){if(process[_0x5d96('0xb1')]&&process['argv'][_0x5d96('0x19')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x586064=path['join'](config[_0x5d96('0x77')],_0x5d96('0x78'),process[_0x5d96('0xb1')][0x2]);if(!fs['existsSync'](_0x586064)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x3d37e={};try{_0x3d37e=JSON[_0x5d96('0x80')](process[_0x5d96('0xb1')][0x3]);if(!_0x3d37e[_0x5d96('0x74')]){throw new Error('binding\x20doesn\x27t\x20exists');}if(!_0x3d37e[_0x5d96('0x74')]['phone']){throw new Error(_0x5d96('0xb2'));}if(!_0x3d37e[_0x5d96('0x74')][_0x5d96('0xb3')]){throw new Error(_0x5d96('0xb4'));}var _0x5b2f85=0x0;if(_0x3d37e[_0x5d96('0x74')][_0x5d96('0x35')]){_0x5b2f85=0x1;}if(!_0x3d37e[_0x5d96('0x31')]){throw new Error('ListId\x20is\x20mandatory');}}catch(_0x26fcfc){throw new Error('body\x20id\x20mandatory');}var _0x4a2194=[];try{_0x4a2194=_['map'](JSON['parse'](process[_0x5d96('0xb1')][0x4]),'id');}catch(_0x4a2908){logger[_0x5d96('0x55')](_0x5d96('0xb5'));}main(_0x586064,_0x3d37e,_0x4a2194,_0x5b2f85);}validate();process['on'](_0x5d96('0xb6'),handleStop);process['on'](_0x5d96('0xb7'),handleUncaughtException);
\ No newline at end of file
+var _0xafce=['.id\x20=\x20','where','\x20=\x20','CmContact','findAll','AdditionalPhones','then','length','all','split','push','CmContactHasItem','findOne','updated','create','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','updatedAt','priority','UserId','recallme','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','cm_hopper_black','createdAt','fields','.CmListId\x20=\x20?','ListId\x20=\x20?','toString','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.priority','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat',')\x20NOT\x20IN\x20?','id\x20IN\x20?','MIN(id)','min_id','info','error','message','exit','errors','sequelize','query','spread','catch','campaigns.id','campaigns.dialTimezone','campaigns_has_cm_lists','campaigns_has_cm_lists.CmListId=','voice_queues.id','voice_queues.dialTimezone','voice_queues','voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId','dialTimezone','utcOffset','set','main','stringify','send','start','binding','clone','.csv','keys','header','name','_description','writeFileSync','parse','createReadStream','rows','data','find','isNil','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','isNumber','agent\x20not\x20exists','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','timezones','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','SystemError','step','duplicates','cm_contacts_','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','CREATE\x20TABLE\x20','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20id\x20=\x20NULL,\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','VoiceQueueId','voice_queues_has_cm_blacklists','campaigns','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','finish','affectedRows','unlink','complete','argv','root','server/files/tmp','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','uncaughtException','path','lodash','util','bluebird','moment','squel','ioredis','../../../mysqldb','../../../config/environment/shared','../../../config/logger','import','redis','defaults','localhost','format','YYYY-MM-DD\x20HH:mm:ss','test','select','field','phone','join'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0xafce,0x9e));var _0xeafc=function(_0xdaaea1,_0x28a529){_0xdaaea1=_0xdaaea1-0x0;var _0xa0989b=_0xafce[_0xdaaea1];return _0xa0989b;};'use strict';var fs=require('fs');var path=require(_0xeafc('0x0'));var _=require(_0xeafc('0x1'));var Papa=require('papaparse');var util=require(_0xeafc('0x2'));var BPromise=require(_0xeafc('0x3'));var moment=require(_0xeafc('0x4'));var squel=require(_0xeafc('0x5'));var Redis=require(_0xeafc('0x6'));var db=require(_0xeafc('0x7'))['db'];var config=require('../../../config/environment');var shared=require(_0xeafc('0x8'));var logger=require(_0xeafc('0x9'))(_0xeafc('0xa'));config[_0xeafc('0xb')]=_[_0xeafc('0xc')](config[_0xeafc('0xb')],{'host':_0xeafc('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0xeafc('0xe')](_0xeafc('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xeafc('0xe')](_0xeafc('0xf'));function isEmail(_0xf8b717){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xeafc('0x10')](_0xf8b717);}function selectNotIn(_0x528395,_0x1d087f,_0x153c7b,_0x12d122,_0x23fcd8){return squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x13'))['from'](_0x12d122)[_0xeafc('0x14')](_0x1d087f,null,_0x1d087f+_0xeafc('0x15')+_0x12d122+'.'+_0x153c7b)[_0xeafc('0x16')](_0x12d122+'.'+_0x153c7b+_0xeafc('0x17')+_0x528395+'.'+_0x153c7b)['where'](_0x1d087f+'.dialCheckDuplicateType\x20IN\x20('+_0x23fcd8['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x5445b7,_0x1454bf){promisesAdditionalPhones=[];return db[_0xeafc('0x18')][_0xeafc('0x19')]({'raw':!![],'attributes':['id',_0xeafc('0x1a')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xeafc('0x1b')](function(_0x512811){if(_0x512811!==null){var _0x129ef1=[];for(var _0x525fb1=0x0;_0x525fb1<_0x512811[_0xeafc('0x1c')];_0x525fb1++){var _0x3d8ece=_0x512811[_0x525fb1];_0x129ef1['push'](insertAdditionalPhones(_0x3d8ece));}}Promise[_0xeafc('0x1d')](_0x129ef1)[_0xeafc('0x1b')](function(){_0x5445b7({'val':0x1});});});});}function insertAdditionalPhones(_0x16fc9e){return new Promise(function(_0x496a41,_0x53ec34){var _0x28b4b3=_0x16fc9e[_0xeafc('0x1a')];var _0x4094c2=_0x28b4b3[_0xeafc('0x1e')](';');var _0x28687f=[];orderBy=0x0;for(var _0x358709=0x0;_0x358709<_0x4094c2['length'];_0x358709++){_0x28687f[_0xeafc('0x1f')](splitAdditionalPhone(_0x16fc9e['id'],_0x4094c2[_0x358709]));}Promise['all'](_0x28687f)[_0xeafc('0x1b')](function(){_0x496a41({'val':_0x4094c2[_0xeafc('0x1c')]});});});}function splitAdditionalPhone(_0x3b5b2d,_0x5e55bf){return new Promise(function(_0x33ddfd,_0x555cb9){var _0x5a8a76=_0x5e55bf[_0xeafc('0x1e')](':');var _0x72cf1f=_0x5a8a76[0x0];var _0x4b6bb8=_0x5a8a76[0x1];if(!_['isNil'](_0x4b6bb8)){var _0x435a9d=_0x4b6bb8['split']('|');var _0x1857fb=[];for(var _0x1a4909=0x0;_0x1a4909<_0x435a9d[_0xeafc('0x1c')];_0x1a4909++){if(_0x435a9d[_0x1a4909]!==''){var _0x32684b=_['filter'](promisesAdditionalPhones,{'contactId':_0x3b5b2d,'phone':_0x435a9d[_0x1a4909]});if(_0x32684b[_0xeafc('0x1c')]==0x0){orderBy++;promisesAdditionalPhones[_0xeafc('0x1f')]({'contactId':_0x3b5b2d,'contactTypeId':_0x72cf1f,'phone':_0x435a9d[_0x1a4909],'orderBy':orderBy});}}}_0x33ddfd({'ok':0x1});}else _0x33ddfd({'res':0x0});});}function createAdditionalPhone(_0x12c81c,_0x595600,_0x39735d,_0x34b539){var _0x4b3224='';var _0x4e9ee5='';var _0xbeba85=_0x39735d[_0xeafc('0x1e')]('§');_0x4b3224=_0xbeba85[0x0];if(_0xbeba85[_0xeafc('0x1c')]==0x2)_0x4e9ee5=_0xbeba85[0x1];return new Promise(function(_0x548fbc,_0x1d1a76){return db[_0xeafc('0x20')][_0xeafc('0x21')]({'where':{'CmContactId':_0x12c81c,'item':_0x4b3224}})[_0xeafc('0x1b')](function(_0xdae449){if(_0xdae449){return db['CmContactHasItem']['update']({'ItemTypeId':_0x595600,'description':_0x4e9ee5,'OrderBy':_0x34b539},{'where':{'CmContactId':_0x12c81c,'item':_0x4b3224}})['then'](function(_0x554f57){_0x548fbc({'res':_0xeafc('0x22')});});}else{return db[_0xeafc('0x20')][_0xeafc('0x23')]({'CmContactId':_0x12c81c,'item':_0x4b3224,'description':_0x4e9ee5,'ItemTypeId':_0x595600,'OrderBy':_0x34b539,'ItemClass':'PHONE'})[_0xeafc('0x1b')](function(_0x56e028){_0x548fbc({'res':'inserted'});});}});});}function insertCmHopper(_0x37aa91,_0xf76a4,_0x1300cf,_0x480aaf,_0xa92694){var _0x5bef3f=[_0xeafc('0x24'),'cm_contacts.scheduledat',_0xeafc('0x25'),_0xeafc('0x26'),_0xf76a4+'.'+_0x480aaf,_0xeafc('0x27'),_0xeafc('0x28'),'cm_contacts.priority',_0xeafc('0x29'),'\x22'+_0xa92694+'\x22'];return squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x2c'))[_0xeafc('0x2d')]([_0xeafc('0x13'),_0xeafc('0x2e'),_0xeafc('0x2f'),_0xeafc('0x30'),_0x480aaf,'createdAt',_0xeafc('0x31'),_0xeafc('0x32'),_0xeafc('0x33'),_0xeafc('0x34')],squel[_0xeafc('0x11')]()['fields'](_0x5bef3f)[_0xeafc('0x35')](_0xf76a4)[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x37')+_0xf76a4+_0xeafc('0x38'))[_0xeafc('0x14')](_0x1300cf,null,_0x1300cf+_0xeafc('0x15')+_0xf76a4+'.'+_0x480aaf)['where'](_0xf76a4+'.CmListId\x20=\x20?',_0x37aa91)['where'](_0xeafc('0x39'),NOW)[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0xf76a4,_0x1300cf,_0x480aaf,_0xeafc('0x2c'),[_0xeafc('0x3b'),_0xeafc('0x3c')]))[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0xf76a4,_0x1300cf,_0x480aaf,'cm_hopper',[_0xeafc('0x3b')])))['toString']();}function insertCmHopperBlack(_0x80042e,_0x111a73,_0x4be232,_0x5925d8){var _0xa6da11=[_0xeafc('0x24'),_0xeafc('0x25'),_0xeafc('0x26'),_0x111a73+'.'+_0x5925d8,_0xeafc('0x27'),'cm_contacts.updatedAt'];return squel['insert']()[_0xeafc('0x2b')](_0xeafc('0x3d'))[_0xeafc('0x2d')]([_0xeafc('0x13'),'ContactId',_0xeafc('0x30'),_0x5925d8,_0xeafc('0x3e'),'updatedAt'],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0xa6da11)[_0xeafc('0x35')](_0x111a73)[_0xeafc('0x14')](_0xeafc('0x36'),null,'cm_contacts.ListId\x20=\x20'+_0x111a73+'.CmListId')[_0xeafc('0x14')](_0x4be232,null,_0x4be232+_0xeafc('0x15')+_0x111a73+'.'+_0x5925d8)[_0xeafc('0x16')](_0x111a73+_0xeafc('0x40'),_0x80042e)[_0xeafc('0x16')](_0xeafc('0x39'),NOW)[_0xeafc('0x16')](_0xeafc('0x3a'),squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x13'))[_0xeafc('0x35')](_0xeafc('0x3d'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x80042e)[_0xeafc('0x16')](_0x5925d8+'\x20=\x20'+_0x111a73+'.'+_0x5925d8)))[_0xeafc('0x42')]();}function insertTzCmHopper(_0x369058,_0x28d67a,_0x5f5c24,_0x4bbb0e,_0x7b1892,_0x29d7c1){var _0x43d5c4=[_0xeafc('0x24'),_0xeafc('0x43')+_0x29d7c1+_0xeafc('0x44'),_0xeafc('0x25'),'cm_contacts.ListId',_0x28d67a+'.'+_0x4bbb0e,'cm_contacts.createdAt',_0xeafc('0x28'),_0xeafc('0x45'),_0xeafc('0x29'),'\x22'+_0x7b1892+'\x22'];var _0xba62c1=squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x2c'))[_0xeafc('0x2d')]([_0xeafc('0x13'),_0xeafc('0x2e'),_0xeafc('0x2f'),'ListId',_0x4bbb0e,_0xeafc('0x3e'),_0xeafc('0x31'),'priority',_0xeafc('0x33'),_0xeafc('0x34')],squel['select']()[_0xeafc('0x3f')](_0x43d5c4)['from'](_0x28d67a)[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x37')+_0x28d67a+_0xeafc('0x38'))[_0xeafc('0x14')](_0x5f5c24,null,_0x5f5c24+_0xeafc('0x15')+_0x28d67a+'.'+_0x4bbb0e)[_0xeafc('0x14')](_0x29d7c1,null,_0x29d7c1+_0xeafc('0x15')+_0x28d67a+'.'+_0x4bbb0e)['where'](_0x28d67a+_0xeafc('0x40'),_0x369058)[_0xeafc('0x16')](_0xeafc('0x39'),NOW)['where'](_0xeafc('0x3a'),selectNotIn(_0x28d67a,_0x5f5c24,_0x4bbb0e,_0xeafc('0x2c'),[_0xeafc('0x3b'),_0xeafc('0x3c')]))[_0xeafc('0x16')](_0xeafc('0x3a'),selectNotIn(_0x28d67a,_0x5f5c24,_0x4bbb0e,'cm_hopper',[_0xeafc('0x3b')])))[_0xeafc('0x42')]();return _0xba62c1;}function insertTzCmHopperBlack(_0x48c751,_0x45ef25,_0x382d18,_0x54baea){var _0x3fc39e=[_0xeafc('0x24'),_0xeafc('0x25'),_0xeafc('0x26'),_0x45ef25+'.'+_0x54baea,_0xeafc('0x27'),'cm_contacts.updatedAt'];return squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0xeafc('0x3d'))['fromQuery'](['phone',_0xeafc('0x2f'),_0xeafc('0x30'),_0x54baea,_0xeafc('0x3e'),_0xeafc('0x31')],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x3fc39e)[_0xeafc('0x35')](_0x45ef25)[_0xeafc('0x14')]('cm_contacts',null,_0xeafc('0x37')+_0x45ef25+_0xeafc('0x38'))[_0xeafc('0x14')](_0x382d18,null,_0x382d18+_0xeafc('0x15')+_0x45ef25+'.'+_0x54baea)[_0xeafc('0x16')](_0x45ef25+_0xeafc('0x40'),_0x48c751)[_0xeafc('0x16')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0xeafc('0x11')]()['field'](_0xeafc('0x13'))[_0xeafc('0x35')](_0xeafc('0x3d'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x48c751)['where'](_0x54baea+'\x20=\x20'+_0x45ef25+'.'+_0x54baea)))[_0xeafc('0x42')]();}function insertCmHopperAdditionalPhones(_0x1f3c8b){var _0x419bfd=[_0xeafc('0x46'),'cm_contact_has_items.item',_0xeafc('0x47'),'cm_contact_has_items.createdAt',_0xeafc('0x48')];return squel['insert']()[_0xeafc('0x2b')](_0xeafc('0x49'))[_0xeafc('0x2d')]([_0xeafc('0x4a'),_0xeafc('0x13'),'OrderBy',_0xeafc('0x3e'),_0xeafc('0x31')],squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x419bfd)['from']('cm_hopper')[_0xeafc('0x14')](_0xeafc('0x36'),null,_0xeafc('0x4b'))[_0xeafc('0x14')](_0xeafc('0x4c'),null,_0xeafc('0x4d'))[_0xeafc('0x16')](_0xeafc('0x4e'),_0x1f3c8b)[_0xeafc('0x16')](_0xeafc('0x39'),NOW))[_0xeafc('0x42')]();}function insertCmContact(_0x1eb496,_0x2bc5b9,_0x5a7fbe,_0xb7b7cc){var _0x4a6a44=_[_0xeafc('0x4f')](_['keys'](_0xb7b7cc),[_0xeafc('0x30'),'CompanyId',_0xeafc('0x3e'),_0xeafc('0x31')]);return squel[_0xeafc('0x2a')]()['into'](_0xeafc('0x36'))[_0xeafc('0x2d')](_0x4a6a44,squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x4a6a44)[_0xeafc('0x35')](_0x2bc5b9)[_0xeafc('0x16')]('('+_0x5a7fbe['join'](',')+_0xeafc('0x50'),squel[_0xeafc('0x11')]()[_0xeafc('0x3f')](_0x5a7fbe)['from'](_0xeafc('0x36'))[_0xeafc('0x16')](_0xeafc('0x41'),_0x1eb496)[_0xeafc('0x16')]('deletedAt\x20IS\x20NULL'))['where'](_0xeafc('0x51'),squel[_0xeafc('0x11')]()[_0xeafc('0x12')](_0xeafc('0x52'),_0xeafc('0x53'))[_0xeafc('0x35')](_0x2bc5b9)['group'](_0x5a7fbe['join'](','))))[_0xeafc('0x42')]();}function handleStop(){logger[_0xeafc('0x54')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x5d71fa){logger[_0xeafc('0x55')](_0x5d71fa[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);}function handleError(_0x47fbf6,_0x1925ef){stats[_0xeafc('0x58')][_0xeafc('0x1f')]({'name':_0x1925ef['code'],'message':_0x1925ef['message'],'row':_0x47fbf6});}function handleQuery(_0x1eb6ba){logger[_0xeafc('0x54')](_0x1eb6ba);return db[_0xeafc('0x59')][_0xeafc('0x5a')](_0x1eb6ba)[_0xeafc('0x5b')](function(_0x5711f4){results['push'](_0x5711f4);})[_0xeafc('0x5c')](function(_0x39dc55){logger[_0xeafc('0x55')](_0x39dc55[_0xeafc('0x56')]);});}function updateTzCampaigns(_0x123d62){return new Promise(function(_0x439f3e,_0x357fb3){var _0xf39ead=squel[_0xeafc('0x11')]()[_0xeafc('0x3f')]([_0xeafc('0x5d'),_0xeafc('0x5e')])[_0xeafc('0x35')]('campaigns')[_0xeafc('0x14')](_0xeafc('0x5f'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0xeafc('0x16')](_0xeafc('0x60')+_0x123d62);db['sequelize'][_0xeafc('0x5a')](_0xf39ead[_0xeafc('0x42')]())[_0xeafc('0x5b')](function(_0x48fefd){var _0x50052a=[];for(var _0x4f7e98=0x0;_0x4f7e98<_0x48fefd[_0xeafc('0x1c')];_0x4f7e98++){_0x50052a[_0xeafc('0x1f')](getTimezoneData(_0x48fefd[_0x4f7e98],tmp_campaigns));}BPromise[_0xeafc('0x1d')](_0x50052a)['then'](function(){_0x439f3e({'val':0x1});});})[_0xeafc('0x5c')](function(_0x13e255){logger[_0xeafc('0x55')](_0x13e255[_0xeafc('0x56')]);_0x439f3e({'val':0x0});});});}function updateTzVoiceQueues(_0x20b224){return new Promise(function(_0x5ede92,_0x8b8e1b){var _0x4df434=squel[_0xeafc('0x11')]()[_0xeafc('0x3f')]([_0xeafc('0x61'),_0xeafc('0x62')])[_0xeafc('0x35')](_0xeafc('0x63'))[_0xeafc('0x14')]('voice_queues_has_cm_lists',null,_0xeafc('0x64'))['where']('voice_queues_has_cm_lists.CmListId='+_0x20b224);db['sequelize'][_0xeafc('0x5a')](_0x4df434[_0xeafc('0x42')]())[_0xeafc('0x5b')](function(_0x2adbf5){var _0x1b8768=[];for(var _0x2f9e47=0x0;_0x2f9e47<_0x2adbf5[_0xeafc('0x1c')];_0x2f9e47++){_0x1b8768[_0xeafc('0x1f')](getTimezoneData(_0x2adbf5[_0x2f9e47],tmp_voice_queues));}BPromise[_0xeafc('0x1d')](_0x1b8768)['then'](function(){_0x5ede92({'val':0x1});});})['catch'](function(_0x1d81c5){logger['error'](_0x1d81c5[_0xeafc('0x56')]);_0x5ede92({'val':0x0});});});}function getTimezoneData(_0x1fe1b9,_0x3d3935){return new Promise(function(_0x1179bd,_0xedff72){var _0x3ef177=shared['timezones'];var _0x5e59ff=_0x3ef177[_0x1fe1b9[_0xeafc('0x65')]];if(_['isNil'](_0x5e59ff)){_0x1179bd({'ret':0x1});}else{var _0x4b3da1=_0x5e59ff[_0xeafc('0x66')];var _0x318d18=squel[_0xeafc('0x2a')]()[_0xeafc('0x2b')](_0x3d3935)[_0xeafc('0x67')]('id',_0x1fe1b9['id'])[_0xeafc('0x67')]('offset',_0x4b3da1)[_0xeafc('0x67')](_0xeafc('0x65'),_0x1fe1b9[_0xeafc('0x65')])[_0xeafc('0x42')]();return db[_0xeafc('0x59')][_0xeafc('0x5a')](_0x318d18)[_0xeafc('0x5b')](function(_0x1b6f02){_0x1179bd({'ret':0x1});})[_0xeafc('0x5c')](function(_0x20e720){logger[_0xeafc('0x55')](_0x20e720[_0xeafc('0x56')]);_0xedff72({'ret':0x1});});}});}function handleTZQuery(_0x584430){logger['info'](_0x584430);return db['sequelize'][_0xeafc('0x5a')](_0x584430)[_0xeafc('0x5b')](function(_0xc3ceac){})[_0xeafc('0x5c')](function(_0x4e8132){logger[_0xeafc('0x55')](_0x4e8132[_0xeafc('0x56')]);});}function main(_0x201cd7,_0x28c8fc,_0x3b88f4,_0x1a9859){logger[_0xeafc('0x54')](_0xeafc('0x68'),_0x201cd7,JSON[_0xeafc('0x69')](_0x28c8fc));process[_0xeafc('0x6a')](_0xeafc('0x6b'));var _0x478008=_0x28c8fc[_0xeafc('0x6c')];var _0x1d7ed0=_[_0xeafc('0x6d')](_0x478008);var _0x430c14=_0x28c8fc['socket_timestamp'];var _0x2296e4=path[_0xeafc('0x14')](config['root'],'server/files/tmp',_0x430c14+_0xeafc('0x6e'));hasTZ=_[_0xeafc('0x6f')](_0x478008)['includes']('dialTimezone');var _0x17ca04=_[_0xeafc('0x6f')](_0x478008)[_0xeafc('0x14')]();logger['info'](_0xeafc('0x70'),_0x17ca04);db['ContactItemType'][_0xeafc('0x19')]({'raw':!![],'attributes':['id',_0xeafc('0x71')]})[_0xeafc('0x1b')](function(_0x2766ad){for(var _0x1f67c2=0x0;_0x1f67c2<_0x2766ad[_0xeafc('0x1c')];_0x1f67c2++){if(_0x2766ad[_0x1f67c2][_0xeafc('0x71')]in _0x478008){contactItemTypes['push'](_0x2766ad[_0x1f67c2]);delete _0x1d7ed0[_0x2766ad[_0x1f67c2][_0xeafc('0x71')]];hasAdditionalPhones=!![];}for(var _0x2de7ad in _0x478008){if(_0x2766ad[_0x1f67c2][_0xeafc('0x71')]+_0xeafc('0x72')===_0x2de7ad){phoneDescriptions[_0xeafc('0x1f')]({'itemTypeId':_0x2766ad[_0x1f67c2]['id'],'description':_0x2de7ad});delete _0x1d7ed0[_0x2de7ad];}}}if(hasAdditionalPhones)_0x1d7ed0['AdditionalPhones']='';var _0x4c044c=_[_0xeafc('0x6f')](_0x1d7ed0)[_0xeafc('0x14')]();logger[_0xeafc('0x54')](_0xeafc('0x70'),_0x4c044c);fs[_0xeafc('0x73')](_0x2296e4,_0x4c044c+'\x0a');Papa[_0xeafc('0x74')](fs[_0xeafc('0x75')](_0x201cd7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x50c060,_0x211eb5){try{for(var _0x5a0cbb=0x0,_0x3c307a=[];_0x5a0cbb<_0x50c060['data'][_0xeafc('0x1c')];_0x5a0cbb++){stats[_0xeafc('0x76')]+=0x1;if(_0x50c060[_0xeafc('0x58')][_0x5a0cbb]){handleError(_0x50c060[_0xeafc('0x77')][_0x5a0cbb],_0x50c060['errors'][_0x5a0cbb]);}else{var _0x4eb1c8=[];var _0x1ceb19=[];var _0x39a3e7={};for(var _0x1c2631 in _0x478008){let _0x1c8a05=contactItemTypes[_0xeafc('0x78')](_0x254890=>_0x254890[_0xeafc('0x71')]===_0x1c2631);let _0xd6a5b=contactItemTypes[_0xeafc('0x78')](_0x4e8b0a=>_0x4e8b0a[_0xeafc('0x71')]+_0xeafc('0x72')===_0x1c2631);if(_['isNil'](_0x1c8a05)&&_[_0xeafc('0x79')](_0xd6a5b)){if(_0x478008['hasOwnProperty'](_0x1c2631)){if(_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]]){var _0xe238e7=_[_0xeafc('0x7a')](_0x50c060['data'][_0x5a0cbb][_0x478008[_0x1c2631]][_0xeafc('0x7b')](/"/g,'\x27'));switch(_0x1c2631){case _0xeafc('0x2e'):var _0x4036a4=moment(_0xe238e7,_0xeafc('0xf'),!![]);if(_0x4036a4[_0xeafc('0x7c')]()){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x7d'));}break;case'priority':var _0x14e247=parseInt(_0xe238e7);_0xe238e7=_[_0xeafc('0x7e')](_0x14e247)||_0x14e247<0x0||_0x14e247>0x4?_0x1a9859?0x3:0x2:_0x14e247;_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');break;case'UserId':var _0x5772a9=parseInt(_0xe238e7);if(_[_0xeafc('0x7f')](_0x5772a9)&&_['includes'](_0x3b88f4,_0x5772a9)){_0x3c307a['push']('\x22'+_0x5772a9+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x80'));}break;case'email':if(isEmail(_0xe238e7)){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')]('email\x20wrong\x20format');}break;case _0xeafc('0x81'):var _0x5cc932=moment(_0xe238e7,'YYYY-MM-DD',!![]);if(_0x5cc932['isValid']()){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}else{_0x4eb1c8[_0xeafc('0x1f')](_0xeafc('0x82'));}break;case _0xeafc('0x65'):var _0x275602=shared[_0xeafc('0x83')];var _0x468f0a=_0x275602[_0xe238e7];if(!_[_0xeafc('0x79')](_0x468f0a)){var _0x10cee4=_0x468f0a[_0xeafc('0x66')];_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');_0x3c307a['push']('\x22'+_0x10cee4+'\x22');}break;default:_0x3c307a[_0xeafc('0x1f')]('\x22'+_0xe238e7+'\x22');}}else{switch(_0x1c2631){case _0xeafc('0x84'):case _0xeafc('0x13'):_0x4eb1c8[_0xeafc('0x1f')](_0x1c2631+_0xeafc('0x85'));break;default:_0x3c307a['push']('\x22\x22');}}}}else{var _0x1a48e3='';if(!_[_0xeafc('0x79')](_0x1c8a05)){if(!_0x39a3e7['hasOwnProperty'](_0x1c8a05['id'])){if(!_[_0xeafc('0x79')](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]])){var _0xe238e7=_[_0xeafc('0x7a')](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x1c2631]][_0xeafc('0x7b')](/"/g,'\x27'));var _0x59b00a=phoneDescriptions[_0xeafc('0x78')](_0x504878=>_0x504878[_0xeafc('0x86')]===_0x1c8a05['id']);if(!_[_0xeafc('0x79')](_0x59b00a)){var _0x2866ea=_['trim'](_0x50c060[_0xeafc('0x77')][_0x5a0cbb][_0x478008[_0x59b00a[_0xeafc('0x87')]]]['replace'](/"/g,'\x27'));if(!_['isNil'](_0x2866ea))_0xe238e7=_0xe238e7+'§'+_0x2866ea;}if(_0x1a48e3=='')_0x1a48e3=_0xe238e7;else _0x1a48e3+='|'+_0xe238e7;}_0x1ceb19['push'](_0x1c8a05['id']+':'+_0x1a48e3);_0x39a3e7[_0x1c8a05['id']]=0x1;}}}}if(hasAdditionalPhones){_0x3c307a[_0xeafc('0x1f')]('\x22'+_0x1ceb19[_0xeafc('0x14')](';')+'\x22');}if(_0x4eb1c8[_0xeafc('0x1c')]){handleError(_0x50c060['data'][_0x5a0cbb],{'code':_0xeafc('0x88'),'message':_0x4eb1c8[_0xeafc('0x14')]()});}else{fs[_0xeafc('0x89')](_0x2296e4,_0x3c307a[_0xeafc('0x14')]()+'\x0a');}_0x3c307a=[];}if(!(stats['rows']%0xc8)){socket[_0xeafc('0x8a')](_0xeafc('0x8b')+_0x430c14,stats);stats['errors']=[];}}if(stopped){logger['info'](_0xeafc('0x8c'));_0x211eb5[_0xeafc('0x8d')]();}}catch(_0xfb2bdc){handleError(_0x50c060[_0xeafc('0x77')][_0x5a0cbb],{'code':_0xeafc('0x8e'),'message':_0xfb2bdc[_0xeafc('0x56')]});logger[_0xeafc('0x55')](_0xeafc('0x8f'),_0xfb2bdc[_0xeafc('0x56')]);}},'complete':function(){try{var _0x4475b2=[];var _0x2dc461=[];var _0x2813b1=_0xeafc('0x36');if(_0x28c8fc['duplicates']&&_0x28c8fc[_0xeafc('0x90')][_0xeafc('0x1c')]){_0x2813b1=_0xeafc('0x91')+_0x430c14;_0x4475b2['push']('CREATE\x20TABLE\x20'+_0x2813b1+_0xeafc('0x92'));}tmp_campaigns=_0xeafc('0x93')+_0x430c14;tmp_voice_queues=_0xeafc('0x94')+_0x430c14;_0x2dc461[_0xeafc('0x1f')]('CREATE\x20TABLE\x20'+tmp_campaigns+_0xeafc('0x95'));_0x2dc461[_0xeafc('0x1f')](_0xeafc('0x96')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise['each'](_0x2dc461,handleTZQuery)[_0xeafc('0x1b')](function(_0x2895f6){updateTzCampaigns(_0x28c8fc[_0xeafc('0x30')])[_0xeafc('0x1b')](function(_0x3ce416){updateTzVoiceQueues(_0x28c8fc[_0xeafc('0x30')])[_0xeafc('0x1b')](function(_0x5b70bc){if(hasTZ)_0x4c044c=_0x4c044c[_0xeafc('0x7b')](_0xeafc('0x65'),'dialTimezone,utcOffset');var _0x4d5a14=util[_0xeafc('0xe')](_0xeafc('0x97'),_0x2296e4,_0x2813b1,_0x4c044c,_0x28c8fc[_0xeafc('0x30')],_0x28c8fc['CompanyId']||null,NOW,NOW);if(_[_0xeafc('0x79')](_0x478008[_0xeafc('0x2e')])){_0x4d5a14+=_0xeafc('0x98');}_0x4475b2[_0xeafc('0x1f')](_0x4d5a14);if(_0x28c8fc[_0xeafc('0x90')]&&_0x28c8fc[_0xeafc('0x90')]['length']){_0x4475b2['push'](insertCmContact(_0x28c8fc['ListId'],_0x2813b1,_0x28c8fc['duplicates'],_0x478008));_0x4475b2[_0xeafc('0x1f')]('DROP\x20TABLE\x20'+_0x2813b1+';');}BPromise[_0xeafc('0x99')](_0x4475b2,handleQuery)[_0xeafc('0x1b')](function(_0x2c0eca){BPromise[_0xeafc('0x1d')]([handleAdditionalPhones()])[_0xeafc('0x1b')](function(){_0x4475b2=[];for(var _0x140c8e=0x0;_0x140c8e<promisesAdditionalPhones['length'];_0x140c8e++){if(promisesAdditionalPhones[_0x140c8e][_0xeafc('0x13')]!='§'){_0x4475b2[_0xeafc('0x1f')](createAdditionalPhone(promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9a')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9b')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x13')],promisesAdditionalPhones[_0x140c8e][_0xeafc('0x9c')]));}}BPromise[_0xeafc('0x1d')](_0x4475b2)[_0xeafc('0x1b')](function(){_0x4475b2=[];if(hasTZ){_0x4475b2['push'](insertTzCmHopper(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x9d'),_0xeafc('0x63'),_0xeafc('0x9e'),_0x1a9859,tmp_voice_queues));_0x4475b2['push'](insertTzCmHopperBlack(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x9f'),_0xeafc('0x63'),'VoiceQueueId'));_0x4475b2[_0xeafc('0x1f')](insertTzCmHopper(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0x5f'),_0xeafc('0xa0'),_0xeafc('0xa1'),_0x1a9859,tmp_campaigns));_0x4475b2['push'](insertTzCmHopperBlack(_0x28c8fc[_0xeafc('0x30')],_0xeafc('0xa2'),'campaigns',_0xeafc('0xa1')));_0x4475b2[_0xeafc('0x1f')](insertCmHopperAdditionalPhones(_0x28c8fc[_0xeafc('0x30')]));}else{_0x4475b2[_0xeafc('0x1f')](insertCmHopper(_0x28c8fc[_0xeafc('0x30')],'voice_queues_has_cm_lists',_0xeafc('0x63'),_0xeafc('0x9e'),_0x1a9859));_0x4475b2[_0xeafc('0x1f')](insertCmHopperBlack(_0x28c8fc['ListId'],_0xeafc('0x9f'),_0xeafc('0x63'),_0xeafc('0x9e')));_0x4475b2['push'](insertCmHopper(_0x28c8fc['ListId'],'campaigns_has_cm_lists',_0xeafc('0xa0'),_0xeafc('0xa1'),_0x1a9859));_0x4475b2['push'](insertCmHopperBlack(_0x28c8fc['ListId'],'campaigns_has_cm_blacklists',_0xeafc('0xa0'),_0xeafc('0xa1')));_0x4475b2[_0xeafc('0x1f')](insertCmHopperAdditionalPhones(_0x28c8fc[_0xeafc('0x30')]));}_0x4475b2['push'](_0xeafc('0xa3')+tmp_campaigns+';');_0x4475b2['push']('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0xeafc('0x99')](_0x4475b2,handleQuery)[_0xeafc('0x1b')](function(_0xbbd948){stats[_0xeafc('0xa4')]=!![];stats['affectedRows']=_0x28c8fc['duplicates']&&_0x28c8fc[_0xeafc('0x90')][_0xeafc('0x1c')]?results[0x2][_0xeafc('0xa5')]:results[0x0][_0xeafc('0xa5')];socket[_0xeafc('0x8a')](_0xeafc('0x8b')+_0x430c14,stats);fs[_0xeafc('0xa6')](_0x201cd7);fs[_0xeafc('0xa6')](_0x2296e4);process[_0xeafc('0x57')](0x0);})[_0xeafc('0x5c')](function(_0x4b9994){logger[_0xeafc('0x55')](_0x4b9994[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);});});});})[_0xeafc('0x5c')](function(_0x5a872f){logger['error'](_0x5a872f[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);});});});});}catch(_0x346a7a){logger['error'](_0xeafc('0xa7'),_0x346a7a[_0xeafc('0x56')]);process[_0xeafc('0x57')](0x1);}},'error':function(_0x17fda5,_0x520195,_0x558faa,_0x2d75f5){throw new Error(_0x2d75f5);}});});}function validate(){if(process[_0xeafc('0xa8')]&&process['argv']['length']<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x524892=path[_0xeafc('0x14')](config[_0xeafc('0xa9')],_0xeafc('0xaa'),process['argv'][0x2]);if(!fs[_0xeafc('0xab')](_0x524892)){throw new Error(_0xeafc('0xac'));}var _0x26e732={};try{_0x26e732=JSON['parse'](process[_0xeafc('0xa8')][0x3]);if(!_0x26e732['binding']){throw new Error(_0xeafc('0xad'));}if(!_0x26e732['binding'][_0xeafc('0x13')]){throw new Error(_0xeafc('0xae'));}if(!_0x26e732[_0xeafc('0x6c')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x4a5f61=0x0;if(_0x26e732[_0xeafc('0x6c')][_0xeafc('0x33')]){_0x4a5f61=0x1;}if(!_0x26e732[_0xeafc('0x30')]){throw new Error(_0xeafc('0xaf'));}}catch(_0x419820){throw new Error(_0xeafc('0xb0'));}var _0x38221b=[];try{_0x38221b=_['map'](JSON[_0xeafc('0x74')](process[_0xeafc('0xa8')][0x4]),'id');}catch(_0x180fa4){logger[_0xeafc('0x54')](_0xeafc('0xb1'));}main(_0x524892,_0x26e732,_0x38221b,_0x4a5f61);}validate();process['on']('SIGINT',handleStop);process['on'](_0xeafc('0xb2'),handleUncaughtException);
\ No newline at end of file
index e253c71..d963cde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x915f=['toString','cm_contacts.createdAt','into','.CmListId','cm_hopper_black','\x20=\x20?','cm_hopper.id','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','CompanyId',')\x20NOT\x20IN\x20?','ListId\x20=\x20?','id\x20IN\x20?','MIN(id)','min_id','group','info','message','exit','code','sequelize','main','stringify','send','start','binding','clone','root','server/files/tmp','.csv','body','ContactItemType','findAll','name','keys','header','writeFileSync','createReadStream','rows','data','errors','find','hasOwnProperty','replace','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','includes','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','isValid','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','\x20not\x20specified','trim','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','SystemError','step','CREATE\x20TABLE\x20',',\x20scheduledAt\x20=\x20NOW()','contact','contactId','orderBy','DROP\x20TABLE\x20','each','finish','affectedRows','unlink','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','path','lodash','papaparse','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/logger','redis','localhost','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','join','.id\x20=\x20','where','.dialCheckDuplicateType\x20IN\x20(','query','select\x20*\x20from\x20','spread','isNil','AdditionalPhones','push','catch','error','split','all','length','filter','CmContactHasItem','then','update','updated','inserted','CmContact','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','insert','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','UserId','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x915f,0xf4));var _0xf915=function(_0x4a4fb4,_0xea22a8){_0x4a4fb4=_0x4a4fb4-0x0;var _0x5ac27d=_0x915f[_0x4a4fb4];return _0x5ac27d;};'use strict';var fs=require('fs');var path=require(_0xf915('0x0'));var _=require(_0xf915('0x1'));var Papa=require(_0xf915('0x2'));var util=require(_0xf915('0x3'));var BPromise=require(_0xf915('0x4'));var moment=require('moment');var squel=require(_0xf915('0x5'));var Redis=require(_0xf915('0x6'));var db=require(_0xf915('0x7'))['db'];var config=require('../../../config/environment');var logger=require(_0xf915('0x8'))('import');config[_0xf915('0x9')]=_['defaults'](config[_0xf915('0x9')],{'host':_0xf915('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf915('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xf915('0xb')](_0xf915('0xc'));var tempTableName=_0xf915('0xd')+moment()['format'](_0xf915('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x896d5b){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xf915('0xf')](_0x896d5b);}function selectNotIn(_0x57b2d2,_0x51f805,_0x208e2d,_0x2f5a2c,_0x4ce990){return squel[_0xf915('0x10')]()[_0xf915('0x11')](_0xf915('0x12'))[_0xf915('0x13')](_0x2f5a2c)[_0xf915('0x14')](_0x51f805,null,_0x51f805+_0xf915('0x15')+_0x2f5a2c+'.'+_0x208e2d)[_0xf915('0x16')](_0x2f5a2c+'.'+_0x208e2d+'\x20=\x20'+_0x57b2d2+'.'+_0x208e2d)[_0xf915('0x16')](_0x51f805+_0xf915('0x17')+_0x4ce990['join']()+')');}function handleAdditionalPhones(){return new Promise(function(_0x3a4c04,_0x19c603){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0xf915('0x18')](_0xf915('0x19')+tempTableName)[_0xf915('0x1a')](function(_0x571996){if(_0x571996!==null){var _0x390655=[];for(var _0x576fc6=0x0;_0x576fc6<_0x571996['length'];_0x576fc6++){var _0x5f4003=_0x571996[_0x576fc6];if(!_[_0xf915('0x1b')](_0x5f4003[_0xf915('0x12')])){if(!_[_0xf915('0x1b')](_0x5f4003[_0xf915('0x1c')]))_0x390655[_0xf915('0x1d')](insertAdditionalPhones(_0x5f4003));promisesContact[_0xf915('0x1d')]({'contact':_0x5f4003});}}}Promise['all'](_0x390655)['then'](function(){_0x3a4c04({'val':0x1});});})[_0xf915('0x1e')](function(_0x381fcd){logger[_0xf915('0x1f')](_0x381fcd['message']);});});}function insertAdditionalPhones(_0x1c1703){return new Promise(function(_0x4a07c5,_0x2977bb){var _0x5e6146=_0x1c1703[_0xf915('0x1c')];if(_[_0xf915('0x1b')](_0x5e6146))_0x2977bb({'val':0x0});else{var _0x31dd28=_0x5e6146[_0xf915('0x20')](';');var _0x594a1f=[];orderBy=0x0;for(var _0x16e29f=0x0;_0x16e29f<_0x31dd28['length'];_0x16e29f++){_0x594a1f[_0xf915('0x1d')](splitAdditionalPhone(_0x1c1703['id'],_0x31dd28[_0x16e29f]));}Promise[_0xf915('0x21')](_0x594a1f)['then'](function(){_0x4a07c5({'val':_0x31dd28[_0xf915('0x22')]});});}});}function splitAdditionalPhone(_0x205120,_0x30119e){return new Promise(function(_0x5af28c,_0x17b035){var _0x5b0cf4=_0x30119e[_0xf915('0x20')](':');var _0x284a37=_0x5b0cf4[0x0];var _0xb39a43=_0x5b0cf4[0x1];if(_0xb39a43!==''){var _0x2bb4b4=_0xb39a43[_0xf915('0x20')]('|');var _0x4d87df=[];for(var _0x14ac59=0x0;_0x14ac59<_0x2bb4b4[_0xf915('0x22')];_0x14ac59++){if(_0x2bb4b4[_0x14ac59]!==''){var _0x16b073=_[_0xf915('0x23')](promisesAdditionalPhones,{'contactId':_0x205120,'phone':_0x2bb4b4[_0x14ac59]});if(_0x16b073[_0xf915('0x22')]==0x0){orderBy++;promisesAdditionalPhones[_0xf915('0x1d')]({'contactId':_0x205120,'contactTypeId':_0x284a37,'phone':_0x2bb4b4[_0x14ac59],'orderBy':orderBy});}}}_0x5af28c({'ok':0x1});}else _0x5af28c({'res':0x0});});}function createAdditionalPhone(_0x440c4a,_0x40dfce,_0x23e57d,_0x1f79fc){var _0x46fbe1='';var _0xd55b9b='';var _0xd0c4ba=_0x23e57d[_0xf915('0x20')]('§');_0x46fbe1=_0xd0c4ba[0x0];if(_0xd0c4ba['length']==0x2)_0xd55b9b=_0xd0c4ba[0x1];return new Promise(function(_0x324ab0,_0x47e950){return db[_0xf915('0x24')]['findOne']({'where':{'CmContactId':_0x440c4a,'item':_0x46fbe1}})[_0xf915('0x25')](function(_0x347a39){if(_0x347a39){return db[_0xf915('0x24')][_0xf915('0x26')]({'ItemTypeId':_0x40dfce,'description':_0xd55b9b,'OrderBy':_0x1f79fc},{'where':{'CmContactId':_0x440c4a,'item':_0x46fbe1}})['then'](function(_0x34bbb1){_0x324ab0({'res':_0xf915('0x27')});});}else{return db[_0xf915('0x24')]['create']({'CmContactId':_0x440c4a,'item':_0x46fbe1,'ItemTypeId':_0x40dfce,'description':_0xd55b9b,'OrderBy':_0x1f79fc,'ItemClass':'PHONE'})[_0xf915('0x25')](function(_0xa0cb2e){_0x324ab0({'res':_0xf915('0x28')});});}});});}function updateContact(_0x38ed87){return new Promise(function(_0x5f18ec,_0x3770c6){var _0x2b7353=_0x38ed87['id'];delete _0x38ed87['id'];return db[_0xf915('0x29')][_0xf915('0x26')](_0x38ed87,{'where':{'id':_0x2b7353}})[_0xf915('0x25')](function(_0x51e81f){updatedRows+=0x1;return db[_0xf915('0x2a')]['update']({'phone':_0x38ed87[_0xf915('0x12')]},{'where':{'ContactId':_0x2b7353}})[_0xf915('0x25')](function(_0x2c04cc){_0x5f18ec({'ret':'OK'});});});});}function insertCmHopper(_0x50a15e,_0x93687c,_0x50afd7,_0x10bcd3,_0x1faf9e){var _0x1f8338=[_0xf915('0x2b'),_0xf915('0x2c'),_0xf915('0x2d'),_0xf915('0x2e'),_0x93687c+'.'+_0x10bcd3,'cm_contacts.createdAt',_0xf915('0x2f'),_0xf915('0x30'),'cm_contacts.UserId','\x22'+_0x1faf9e+'\x22'];return squel[_0xf915('0x31')]()['into'](_0xf915('0x32'))[_0xf915('0x33')]([_0xf915('0x12'),_0xf915('0x34'),_0xf915('0x35'),_0xf915('0x36'),_0x10bcd3,_0xf915('0x37'),_0xf915('0x38'),_0xf915('0x39'),_0xf915('0x3a'),_0xf915('0x3b')],squel[_0xf915('0x10')]()[_0xf915('0x3c')](_0x1f8338)['from'](_0x93687c)[_0xf915('0x14')](_0xf915('0x3d'),null,_0xf915('0x3e')+_0x93687c+'.CmListId')['join'](_0x50afd7,null,_0x50afd7+_0xf915('0x15')+_0x93687c+'.'+_0x10bcd3)['where'](_0x93687c+_0xf915('0x3f'),_0x50a15e)[_0xf915('0x16')](_0xf915('0x40'),NOW)[_0xf915('0x16')](_0xf915('0x41'),selectNotIn(_0x93687c,_0x50afd7,_0x10bcd3,_0xf915('0x32'),[_0xf915('0x42'),_0xf915('0x43')]))['where'](_0xf915('0x41'),selectNotIn(_0x93687c,_0x50afd7,_0x10bcd3,'cm_hopper',[_0xf915('0x42')])))[_0xf915('0x44')]();}function insertCmHopperBlack(_0x147bd4,_0x5c1824,_0x272e0d,_0x4be551){var _0x2a1cd2=[_0xf915('0x2b'),'cm_contacts.id',_0xf915('0x2e'),_0x5c1824+'.'+_0x4be551,_0xf915('0x45'),_0xf915('0x2f')];return squel[_0xf915('0x31')]()[_0xf915('0x46')]('cm_hopper_black')[_0xf915('0x33')]([_0xf915('0x12'),_0xf915('0x35'),_0xf915('0x36'),_0x4be551,_0xf915('0x37'),_0xf915('0x38')],squel[_0xf915('0x10')]()[_0xf915('0x3c')](_0x2a1cd2)[_0xf915('0x13')](_0x5c1824)[_0xf915('0x14')](_0xf915('0x3d'),null,_0xf915('0x3e')+_0x5c1824+_0xf915('0x47'))[_0xf915('0x14')](_0x272e0d,null,_0x272e0d+'.id\x20=\x20'+_0x5c1824+'.'+_0x4be551)['where'](_0x5c1824+_0xf915('0x3f'),_0x147bd4)['where'](_0xf915('0x40'),NOW)[_0xf915('0x16')](_0xf915('0x41'),squel[_0xf915('0x10')]()[_0xf915('0x11')](_0xf915('0x12'))['from'](_0xf915('0x48'))[_0xf915('0x16')]('ListId\x20=\x20?',_0x147bd4)[_0xf915('0x16')](_0x4be551+_0xf915('0x49'),_0x5c1824+'.'+_0x4be551)))[_0xf915('0x44')]();}function insertCmHopperAdditionalPhones(_0x191b1d){var _0x567923=[_0xf915('0x4a'),'cm_contact_has_items.item',_0xf915('0x4b'),_0xf915('0x4c'),'cm_contact_has_items.updatedAt'];return squel[_0xf915('0x31')]()[_0xf915('0x46')](_0xf915('0x4d'))[_0xf915('0x33')]([_0xf915('0x4e'),_0xf915('0x12'),'OrderBy','createdAt',_0xf915('0x38')],squel[_0xf915('0x10')]()[_0xf915('0x3c')](_0x567923)[_0xf915('0x13')](_0xf915('0x32'))['join'](_0xf915('0x3d'),null,_0xf915('0x4f'))['join'](_0xf915('0x50'),null,_0xf915('0x51'))[_0xf915('0x16')](_0xf915('0x52'),_0x191b1d)[_0xf915('0x16')](_0xf915('0x40'),NOW))[_0xf915('0x44')]();}function insertCmContact(_0x5d7942,_0x3c3ab4,_0x1a2c46,_0x5c154a){var _0x119846=_['concat'](_['keys'](_0x5c154a),[_0xf915('0x36'),_0xf915('0x53'),_0xf915('0x37'),_0xf915('0x38')]);return squel[_0xf915('0x31')]()[_0xf915('0x46')](_0xf915('0x3d'))[_0xf915('0x33')](_0x119846,squel[_0xf915('0x10')]()[_0xf915('0x3c')](_0x119846)[_0xf915('0x13')](_0x3c3ab4)['where']('('+_0x1a2c46['join'](',')+_0xf915('0x54'),squel[_0xf915('0x10')]()['fields'](_0x1a2c46)[_0xf915('0x13')](_0xf915('0x3d'))[_0xf915('0x16')](_0xf915('0x55'),_0x5d7942))[_0xf915('0x16')](_0xf915('0x56'),squel['select']()['field'](_0xf915('0x57'),_0xf915('0x58'))[_0xf915('0x13')](_0x3c3ab4)[_0xf915('0x59')](_0x1a2c46[_0xf915('0x14')](','))))[_0xf915('0x44')]();}function handleStop(){logger[_0xf915('0x5a')]('Received\x20SIGINT');stopped=!![];}function handleUncaughtException(_0x27c20d){logger[_0xf915('0x1f')](_0x27c20d[_0xf915('0x5b')]);process[_0xf915('0x5c')](0x1);}function handleError(_0x23c992,_0x53dc3f){stats['errors'][_0xf915('0x1d')]({'name':_0x53dc3f[_0xf915('0x5d')],'message':_0x53dc3f[_0xf915('0x5b')],'row':_0x23c992});}function handleQuery(_0x5e31ed){logger['info'](_0x5e31ed);return db[_0xf915('0x5e')]['query'](_0x5e31ed)['spread'](function(_0xcb1293){results['push'](_0xcb1293);})[_0xf915('0x1e')](function(_0x4f8577){logger[_0xf915('0x1f')](_0x4f8577[_0xf915('0x5b')]);});}function main(_0x17c0b7,_0x1a2ef5,_0x38406a,_0x19fbd9){logger[_0xf915('0x5a')](_0xf915('0x5f'),_0x17c0b7,JSON[_0xf915('0x60')](_0x1a2ef5));process[_0xf915('0x61')](_0xf915('0x62'));var _0x192677=_0x1a2ef5[_0xf915('0x63')];var _0x4513a1=_[_0xf915('0x64')](_0x192677);var _0x172ace=_0x1a2ef5['socket_timestamp'];var _0x2a978a=path[_0xf915('0x14')](config[_0xf915('0x65')],_0xf915('0x66'),_0x172ace+_0xf915('0x67'));logger['info'](_0xf915('0x68'),_0x1a2ef5);db[_0xf915('0x69')][_0xf915('0x6a')]({'raw':!![],'attributes':['id',_0xf915('0x6b')]})['then'](function(_0x1a86ce){for(var _0x300d10=0x0;_0x300d10<_0x1a86ce[_0xf915('0x22')];_0x300d10++){if(_0x1a86ce[_0x300d10][_0xf915('0x6b')]in _0x192677){contactItemTypes[_0xf915('0x1d')](_0x1a86ce[_0x300d10]);delete _0x4513a1[_0x1a86ce[_0x300d10][_0xf915('0x6b')]];hasAdditionalPhones=!![];}for(var _0x590516 in _0x192677){if(_0x1a86ce[_0x300d10][_0xf915('0x6b')]+'_description'===_0x590516){phoneDescriptions[_0xf915('0x1d')]({'itemTypeId':_0x1a86ce[_0x300d10]['id'],'description':_0x590516});delete _0x4513a1[_0x590516];}}}if(hasAdditionalPhones)_0x4513a1[_0xf915('0x1c')]='';var _0x4ccb7b=_[_0xf915('0x6c')](_0x4513a1)[_0xf915('0x14')]();logger['info'](_0xf915('0x6d'),_0x4ccb7b);fs[_0xf915('0x6e')](_0x2a978a,_0x4ccb7b+'\x0a');Papa['parse'](fs[_0xf915('0x6f')](_0x17c0b7),{'header':!![],'skipEmptyLines':!![],'step':function(_0x257f15,_0x41ec5f){try{for(var _0x366940=0x0,_0x2f0fef=[];_0x366940<_0x257f15['data'][_0xf915('0x22')];_0x366940++){stats[_0xf915('0x70')]+=0x1;if(_0x257f15['errors'][_0x366940]){handleError(_0x257f15[_0xf915('0x71')][_0x366940],_0x257f15[_0xf915('0x72')][_0x366940]);}else{var _0x30c998=[];var _0x849451=[];var _0x148dc7={};for(var _0x26939c in _0x192677){let _0x37ed86=contactItemTypes[_0xf915('0x73')](_0x3d4343=>_0x3d4343[_0xf915('0x6b')]===_0x26939c);let _0xf633af=contactItemTypes[_0xf915('0x73')](_0x4e2333=>_0x4e2333[_0xf915('0x6b')]+'_description'===_0x26939c);if(_['isNil'](_0x37ed86)&&_['isNil'](_0xf633af)){if(_0x192677[_0xf915('0x74')](_0x26939c)){if(_0x257f15['data'][_0x366940][_0x192677[_0x26939c]]){var _0x5ede53=_['trim'](_0x257f15['data'][_0x366940][_0x192677[_0x26939c]][_0xf915('0x75')](/"/g,'\x27'));switch(_0x26939c){case _0xf915('0x34'):var _0x22a9fd=moment(_0x5ede53,_0xf915('0xc'),!![]);if(_0x22a9fd['isValid']()){_0x2f0fef[_0xf915('0x1d')]('\x22'+_0x5ede53+'\x22');}else{_0x30c998[_0xf915('0x1d')](_0xf915('0x76'));}break;case'priority':var _0x597db2=parseInt(_0x5ede53);_0x5ede53=_['isNaN'](_0x597db2)||_0x597db2<0x0||_0x597db2>0x4?_0x19fbd9?0x3:0x2:_0x597db2;_0x2f0fef[_0xf915('0x1d')]('\x22'+_0x5ede53+'\x22');break;case _0xf915('0x3a'):var _0x2b3b12=parseInt(_0x5ede53);if(_[_0xf915('0x77')](_0x2b3b12)&&_[_0xf915('0x78')](_0x38406a,_0x2b3b12)){_0x2f0fef['push']('\x22'+_0x2b3b12+'\x22');}else{_0x30c998[_0xf915('0x1d')](_0xf915('0x79'));}break;case _0xf915('0x7a'):if(isEmail(_0x5ede53)){_0x2f0fef[_0xf915('0x1d')]('\x22'+_0x5ede53+'\x22');}else{_0x30c998[_0xf915('0x1d')](_0xf915('0x7b'));}break;case _0xf915('0x7c'):var _0x28b284=moment(_0x5ede53,_0xf915('0x7d'),!![]);if(_0x28b284[_0xf915('0x7e')]()){_0x2f0fef['push']('\x22'+_0x5ede53+'\x22');}else{_0x30c998['push'](_0xf915('0x7f'));}break;default:_0x2f0fef[_0xf915('0x1d')]('\x22'+_0x5ede53+'\x22');}}else{switch(_0x26939c){case'firstName':case'phone':_0x30c998[_0xf915('0x1d')](_0x26939c+_0xf915('0x80'));break;default:_0x2f0fef[_0xf915('0x1d')]('\x22\x22');}}}}else{var _0x2346d9='';if(!_['isNil'](_0x37ed86)){if(!_0x148dc7['hasOwnProperty'](_0x37ed86['id'])){for(var _0xecf8a4=0x0;_0xecf8a4<_0x192677[_0x26939c][_0xf915('0x22')];_0xecf8a4++){var _0x5ede53=_[_0xf915('0x81')](_0x257f15[_0xf915('0x71')][_0x366940][_0x192677[_0x26939c][_0xecf8a4]][_0xf915('0x75')](/"/g,'\x27'));var _0x2b7ff6=phoneDescriptions[_0xf915('0x73')](_0x3c1763=>_0x3c1763['itemTypeId']===_0x37ed86['id']);if(!_['isNil'](_0x2b7ff6)){var _0x3972be=_[_0xf915('0x81')](_0x257f15[_0xf915('0x71')][_0x366940][_0x192677[_0x2b7ff6['description']][0x0]][_0xf915('0x75')](/"/g,'\x27'));if(!_[_0xf915('0x1b')](_0x3972be))_0x5ede53=_0x5ede53+'§'+_0x3972be;}if(_0x2346d9=='')_0x2346d9=_0x5ede53;else _0x2346d9+='|'+_0x5ede53;}_0x849451[_0xf915('0x1d')](_0x37ed86['id']+':'+_0x2346d9);_0x148dc7[_0x37ed86['id']]=0x1;}}}}if(hasAdditionalPhones){_0x2f0fef[_0xf915('0x1d')]('\x22'+_0x849451[_0xf915('0x14')](';')+'\x22');}if(_0x30c998['length']){handleError(_0x257f15[_0xf915('0x71')][_0x366940],{'code':_0xf915('0x82'),'message':_0x30c998[_0xf915('0x14')]()});}else{fs[_0xf915('0x83')](_0x2a978a,_0x2f0fef['join']()+'\x0a');}_0x2f0fef=[];}if(!(stats['rows']%0xc8)){socket[_0xf915('0x84')](_0xf915('0x85')+_0x172ace,stats);stats[_0xf915('0x72')]=[];}}if(stopped){logger[_0xf915('0x5a')](_0xf915('0x86'));_0x41ec5f['abort']();}}catch(_0x1429fb){handleError(_0x257f15['data'][_0x366940],{'code':_0xf915('0x87'),'message':_0x1429fb[_0xf915('0x5b')]});logger[_0xf915('0x1f')](_0xf915('0x88'),_0x1429fb[_0xf915('0x5b')]);}},'complete':function(){try{var _0x5348aa=[];var _0x561f03=tempTableName;_0x5348aa[_0xf915('0x1d')](_0xf915('0x89')+_0x561f03+'\x20LIKE\x20cm_contacts;');logger['info']('CIS\x20len',contactItemTypes[_0xf915('0x22')]);var _0x557c14=util['format']('LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',_0x2a978a,_0x561f03,_0x4ccb7b,_0x1a2ef5[_0xf915('0x36')],_0x1a2ef5['CompanyId']||null,NOW,NOW);if(_[_0xf915('0x1b')](_0x192677[_0xf915('0x34')])){_0x557c14+=_0xf915('0x8a');}_0x5348aa['push'](_0x557c14);BPromise['each'](_0x5348aa,handleQuery)[_0xf915('0x25')](function(_0x570f2e){BPromise[_0xf915('0x21')]([handleAdditionalPhones()])[_0xf915('0x25')](function(){_0x5348aa=[];for(var _0x563fc0=0x0;_0x563fc0<promisesContact[_0xf915('0x22')];_0x563fc0++){_0x5348aa[_0xf915('0x1d')](updateContact(promisesContact[_0x563fc0][_0xf915('0x8b')]));}BPromise[_0xf915('0x21')](_0x5348aa)[_0xf915('0x25')](function(){_0x5348aa=[];for(var _0x41e06a=0x0;_0x41e06a<promisesAdditionalPhones['length'];_0x41e06a++){_0x5348aa[_0xf915('0x1d')](createAdditionalPhone(promisesAdditionalPhones[_0x41e06a][_0xf915('0x8c')],promisesAdditionalPhones[_0x41e06a]['contactTypeId'],promisesAdditionalPhones[_0x41e06a]['phone'],promisesAdditionalPhones[_0x41e06a][_0xf915('0x8d')]));}BPromise[_0xf915('0x21')](_0x5348aa)[_0xf915('0x25')](function(){_0x5348aa=[];_0x5348aa[_0xf915('0x1d')](insertCmHopperAdditionalPhones(_0x1a2ef5[_0xf915('0x36')]));_0x5348aa[_0xf915('0x1d')](_0xf915('0x8e')+_0x561f03+';');BPromise[_0xf915('0x8f')](_0x5348aa,handleQuery)[_0xf915('0x25')](function(_0x39d546){stats[_0xf915('0x90')]=!![];stats[_0xf915('0x91')]=updatedRows;socket[_0xf915('0x84')](_0xf915('0x85')+_0x172ace,stats);fs[_0xf915('0x92')](_0x17c0b7);fs[_0xf915('0x92')](_0x2a978a);process[_0xf915('0x5c')](0x0);})[_0xf915('0x1e')](function(_0x1320c2){logger['error'](_0x1320c2[_0xf915('0x5b')]);process[_0xf915('0x5c')](0x1);});});});});})[_0xf915('0x1e')](function(_0x254d74){logger[_0xf915('0x1f')](_0x254d74[_0xf915('0x5b')]);process['exit'](0x1);});}catch(_0x5d4157){logger[_0xf915('0x1f')]('complete',_0x5d4157[_0xf915('0x5b')]);process[_0xf915('0x5c')](0x1);}},'error':function(_0x1dfd20,_0x22ce23,_0xd0c1d3,_0x199504){throw new Error(_0x199504);}});});}function validate(){if(process[_0xf915('0x93')]&&process['argv'][_0xf915('0x22')]<0x4){throw new Error(_0xf915('0x94'));}var _0x44a85d=path[_0xf915('0x14')](config[_0xf915('0x65')],_0xf915('0x66'),process['argv'][0x2]);if(!fs[_0xf915('0x95')](_0x44a85d)){throw new Error(_0xf915('0x96'));}var _0x262e06={};try{_0x262e06=JSON['parse'](process[_0xf915('0x93')][0x3]);if(!_0x262e06[_0xf915('0x63')]){throw new Error(_0xf915('0x97'));}var _0x4207d8=0x0;if(_0x262e06[_0xf915('0x63')]['UserId']){_0x4207d8=0x1;}if(!_0x262e06[_0xf915('0x36')]){throw new Error(_0xf915('0x98'));}}catch(_0x37c377){throw new Error(_0xf915('0x99'));}var _0x214d48=[];try{_0x214d48=_[_0xf915('0x9a')](JSON['parse'](process[_0xf915('0x93')][0x4]),'id');}catch(_0x5d653f){logger['info'](_0xf915('0x9b'));}main(_0x44a85d,_0x262e06,_0x214d48,_0x4207d8);}validate();process['on']('SIGINT',handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
+var _0x4f7b=['SIGINT','uncaughtException','path','lodash','papaparse','util','moment','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','socket.io-emitter','format','cm_contacts_temp_','YYYYMMDDHHmmss','test','select','field','phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','then','catch','message','split','filter','CmContactHasItem','updated','create','PHONE','inserted','update','CmHopper','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','into','cm_hopper','fromQuery','scheduledat','updatedAt','priority','recallme','fields','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','ContactId','ListId','createdAt','cm_hopper_black','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','insert','CmHopperId','OrderBy','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','CompanyId','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','code','info','main','stringify','send','start','binding','clone','socket_timestamp','server/files/tmp','body','name','header','parse','data','errors','find','_description','hasOwnProperty','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNaN','UserId','isNumber','includes','email','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','Abort\x20parser','abort','SystemError','step','\x20LIKE\x20cm_contacts;','CIS\x20len','LOAD\x20DATA\x20LOCAL\x20INFILE\x20\x27%s\x27\x20INTO\x20TABLE\x20%s\x20CHARACTER\x20SET\x20UTF8\x20FIELDS\x20TERMINATED\x20BY\x20\x27,\x27\x20ENCLOSED\x20BY\x20\x27\x22\x27\x20LINES\x20TERMINATED\x20BY\x20\x27\x0a\x27\x20IGNORE\x201\x20ROWS\x20(%s)\x20SET\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','orderBy','DROP\x20TABLE\x20','finish','affectedRows','emit','contact:import:','unlink','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','root','existsSync','file\x20doesn\x27t\x20exists','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available'];(function(_0x5ddb1c,_0x5ea4df){var _0x354adc=function(_0x2dfb1f){while(--_0x2dfb1f){_0x5ddb1c['push'](_0x5ddb1c['shift']());}};_0x354adc(++_0x5ea4df);}(_0x4f7b,0x13e));var _0xb4f7=function(_0x1f98fa,_0x401ff){_0x1f98fa=_0x1f98fa-0x0;var _0x4f40ef=_0x4f7b[_0x1f98fa];return _0x4f40ef;};'use strict';var fs=require('fs');var path=require(_0xb4f7('0x0'));var _=require(_0xb4f7('0x1'));var Papa=require(_0xb4f7('0x2'));var util=require(_0xb4f7('0x3'));var BPromise=require('bluebird');var moment=require(_0xb4f7('0x4'));var squel=require(_0xb4f7('0x5'));var Redis=require(_0xb4f7('0x6'));var db=require(_0xb4f7('0x7'))['db'];var config=require(_0xb4f7('0x8'));var logger=require(_0xb4f7('0x9'))(_0xb4f7('0xa'));config[_0xb4f7('0xb')]=_['defaults'](config[_0xb4f7('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xb4f7('0xc'))(new Redis(config[_0xb4f7('0xb')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0xb4f7('0xd')]('YYYY-MM-DD\x20HH:mm:ss');var tempTableName=_0xb4f7('0xe')+moment()['format'](_0xb4f7('0xf'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0xa74c93){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0xb4f7('0x10')](_0xa74c93);}function selectNotIn(_0x5b372a,_0x38e537,_0x2b226f,_0x4698af,_0x436392){return squel[_0xb4f7('0x11')]()[_0xb4f7('0x12')](_0xb4f7('0x13'))[_0xb4f7('0x14')](_0x4698af)['join'](_0x38e537,null,_0x38e537+_0xb4f7('0x15')+_0x4698af+'.'+_0x2b226f)[_0xb4f7('0x16')](_0x4698af+'.'+_0x2b226f+_0xb4f7('0x17')+_0x5b372a+'.'+_0x2b226f)[_0xb4f7('0x16')](_0x38e537+_0xb4f7('0x18')+_0x436392[_0xb4f7('0x19')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x56c6a5,_0x2df636){promisesAdditionalPhones=[];promisesContact=[];return db['sequelize'][_0xb4f7('0x1a')](_0xb4f7('0x1b')+tempTableName)[_0xb4f7('0x1c')](function(_0x2c304b){if(_0x2c304b!==null){var _0x33e473=[];for(var _0x35ce44=0x0;_0x35ce44<_0x2c304b[_0xb4f7('0x1d')];_0x35ce44++){var _0x40b3ac=_0x2c304b[_0x35ce44];if(!_[_0xb4f7('0x1e')](_0x40b3ac['phone'])){if(!_[_0xb4f7('0x1e')](_0x40b3ac[_0xb4f7('0x1f')]))_0x33e473[_0xb4f7('0x20')](insertAdditionalPhones(_0x40b3ac));promisesContact['push']({'contact':_0x40b3ac});}}}Promise[_0xb4f7('0x21')](_0x33e473)[_0xb4f7('0x22')](function(){_0x56c6a5({'val':0x1});});})[_0xb4f7('0x23')](function(_0x4c7883){logger['error'](_0x4c7883[_0xb4f7('0x24')]);});});}function insertAdditionalPhones(_0x35afd5){return new Promise(function(_0x5cc40e,_0x3ce52b){var _0x26e4d3=_0x35afd5[_0xb4f7('0x1f')];if(_[_0xb4f7('0x1e')](_0x26e4d3))_0x3ce52b({'val':0x0});else{var _0x58e948=_0x26e4d3[_0xb4f7('0x25')](';');var _0x56bac5=[];orderBy=0x0;for(var _0x1cec47=0x0;_0x1cec47<_0x58e948[_0xb4f7('0x1d')];_0x1cec47++){_0x56bac5[_0xb4f7('0x20')](splitAdditionalPhone(_0x35afd5['id'],_0x58e948[_0x1cec47]));}Promise[_0xb4f7('0x21')](_0x56bac5)[_0xb4f7('0x22')](function(){_0x5cc40e({'val':_0x58e948[_0xb4f7('0x1d')]});});}});}function splitAdditionalPhone(_0x493d81,_0x1fe0cf){return new Promise(function(_0x291166,_0x19e549){var _0x327b8f=_0x1fe0cf[_0xb4f7('0x25')](':');var _0x2705e3=_0x327b8f[0x0];var _0x57cf99=_0x327b8f[0x1];if(_0x57cf99!==''){var _0xd17524=_0x57cf99[_0xb4f7('0x25')]('|');var _0x3a3afa=[];for(var _0x1f385d=0x0;_0x1f385d<_0xd17524[_0xb4f7('0x1d')];_0x1f385d++){if(_0xd17524[_0x1f385d]!==''){var _0x594c04=_[_0xb4f7('0x26')](promisesAdditionalPhones,{'contactId':_0x493d81,'phone':_0xd17524[_0x1f385d]});if(_0x594c04[_0xb4f7('0x1d')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x493d81,'contactTypeId':_0x2705e3,'phone':_0xd17524[_0x1f385d],'orderBy':orderBy});}}}_0x291166({'ok':0x1});}else _0x291166({'res':0x0});});}function createAdditionalPhone(_0x18b1f3,_0x467541,_0x99a8bb,_0x35582a){var _0x47ba78='';var _0x2cb1b3='';var _0x1832bd=_0x99a8bb[_0xb4f7('0x25')]('§');_0x47ba78=_0x1832bd[0x0];if(_0x1832bd[_0xb4f7('0x1d')]==0x2)_0x2cb1b3=_0x1832bd[0x1];return new Promise(function(_0x54c714,_0x4ea802){return db[_0xb4f7('0x27')]['findOne']({'where':{'CmContactId':_0x18b1f3,'item':_0x47ba78}})[_0xb4f7('0x22')](function(_0x2d61f0){if(_0x2d61f0){return db['CmContactHasItem']['update']({'ItemTypeId':_0x467541,'description':_0x2cb1b3,'OrderBy':_0x35582a},{'where':{'CmContactId':_0x18b1f3,'item':_0x47ba78}})[_0xb4f7('0x22')](function(_0x5bf429){_0x54c714({'res':_0xb4f7('0x28')});});}else{return db[_0xb4f7('0x27')][_0xb4f7('0x29')]({'CmContactId':_0x18b1f3,'item':_0x47ba78,'ItemTypeId':_0x467541,'description':_0x2cb1b3,'OrderBy':_0x35582a,'ItemClass':_0xb4f7('0x2a')})[_0xb4f7('0x22')](function(_0x1f88da){_0x54c714({'res':_0xb4f7('0x2b')});});}});});}function updateContact(_0x4824f5){return new Promise(function(_0x554f69,_0x2d51c2){var _0x406f86=_0x4824f5['id'];delete _0x4824f5['id'];return db['CmContact'][_0xb4f7('0x2c')](_0x4824f5,{'where':{'id':_0x406f86}})['then'](function(_0x107940){updatedRows+=0x1;return db[_0xb4f7('0x2d')][_0xb4f7('0x2c')]({'phone':_0x4824f5[_0xb4f7('0x13')]},{'where':{'ContactId':_0x406f86}})[_0xb4f7('0x22')](function(_0x2c2ea4){_0x554f69({'ret':'OK'});});});});}function insertCmHopper(_0x1172c9,_0x9ac24c,_0x231f41,_0x13c36e,_0x4a0b1b){var _0x3996ff=[_0xb4f7('0x2e'),_0xb4f7('0x2f'),_0xb4f7('0x30'),_0xb4f7('0x31'),_0x9ac24c+'.'+_0x13c36e,_0xb4f7('0x32'),_0xb4f7('0x33'),_0xb4f7('0x34'),_0xb4f7('0x35'),'\x22'+_0x4a0b1b+'\x22'];return squel['insert']()[_0xb4f7('0x36')](_0xb4f7('0x37'))[_0xb4f7('0x38')]([_0xb4f7('0x13'),_0xb4f7('0x39'),'ContactId','ListId',_0x13c36e,'createdAt',_0xb4f7('0x3a'),_0xb4f7('0x3b'),'UserId',_0xb4f7('0x3c')],squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x3996ff)[_0xb4f7('0x14')](_0x9ac24c)['join'](_0xb4f7('0x3e'),null,_0xb4f7('0x3f')+_0x9ac24c+_0xb4f7('0x40'))[_0xb4f7('0x19')](_0x231f41,null,_0x231f41+'.id\x20=\x20'+_0x9ac24c+'.'+_0x13c36e)[_0xb4f7('0x16')](_0x9ac24c+_0xb4f7('0x41'),_0x1172c9)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW)[_0xb4f7('0x16')](_0xb4f7('0x43'),selectNotIn(_0x9ac24c,_0x231f41,_0x13c36e,_0xb4f7('0x37'),[_0xb4f7('0x44'),_0xb4f7('0x45')]))[_0xb4f7('0x16')](_0xb4f7('0x43'),selectNotIn(_0x9ac24c,_0x231f41,_0x13c36e,_0xb4f7('0x37'),[_0xb4f7('0x44')])))[_0xb4f7('0x46')]();}function insertCmHopperBlack(_0x1840ad,_0xff4236,_0x278b68,_0x799855){var _0x2ab808=[_0xb4f7('0x2e'),_0xb4f7('0x30'),_0xb4f7('0x31'),_0xff4236+'.'+_0x799855,_0xb4f7('0x32'),_0xb4f7('0x33')];return squel['insert']()[_0xb4f7('0x36')]('cm_hopper_black')[_0xb4f7('0x38')]([_0xb4f7('0x13'),_0xb4f7('0x47'),_0xb4f7('0x48'),_0x799855,_0xb4f7('0x49'),_0xb4f7('0x3a')],squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x2ab808)[_0xb4f7('0x14')](_0xff4236)[_0xb4f7('0x19')]('cm_contacts',null,_0xb4f7('0x3f')+_0xff4236+'.CmListId')[_0xb4f7('0x19')](_0x278b68,null,_0x278b68+_0xb4f7('0x15')+_0xff4236+'.'+_0x799855)['where'](_0xff4236+_0xb4f7('0x41'),_0x1840ad)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW)[_0xb4f7('0x16')](_0xb4f7('0x43'),squel[_0xb4f7('0x11')]()['field'](_0xb4f7('0x13'))[_0xb4f7('0x14')](_0xb4f7('0x4a'))[_0xb4f7('0x16')](_0xb4f7('0x4b'),_0x1840ad)[_0xb4f7('0x16')](_0x799855+'\x20=\x20?',_0xff4236+'.'+_0x799855)))['toString']();}function insertCmHopperAdditionalPhones(_0x18a324){var _0x2731d5=['cm_hopper.id',_0xb4f7('0x4c'),_0xb4f7('0x4d'),'cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt'];return squel[_0xb4f7('0x4e')]()[_0xb4f7('0x36')]('cm_hopper_additional_phones')[_0xb4f7('0x38')]([_0xb4f7('0x4f'),_0xb4f7('0x13'),_0xb4f7('0x50'),_0xb4f7('0x49'),'updatedAt'],squel[_0xb4f7('0x11')]()['fields'](_0x2731d5)['from'](_0xb4f7('0x37'))[_0xb4f7('0x19')](_0xb4f7('0x3e'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xb4f7('0x19')](_0xb4f7('0x51'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xb4f7('0x16')](_0xb4f7('0x52'),_0x18a324)[_0xb4f7('0x16')](_0xb4f7('0x42'),NOW))[_0xb4f7('0x46')]();}function insertCmContact(_0x35d06e,_0x2307d0,_0x1d9326,_0x5819dc){var _0x1d7495=_[_0xb4f7('0x53')](_['keys'](_0x5819dc),[_0xb4f7('0x48'),_0xb4f7('0x54'),'createdAt','updatedAt']);return squel[_0xb4f7('0x4e')]()[_0xb4f7('0x36')](_0xb4f7('0x3e'))[_0xb4f7('0x38')](_0x1d7495,squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x1d7495)[_0xb4f7('0x14')](_0x2307d0)[_0xb4f7('0x16')]('('+_0x1d9326[_0xb4f7('0x19')](',')+')\x20NOT\x20IN\x20?',squel[_0xb4f7('0x11')]()[_0xb4f7('0x3d')](_0x1d9326)[_0xb4f7('0x14')](_0xb4f7('0x3e'))[_0xb4f7('0x16')]('ListId\x20=\x20?',_0x35d06e))[_0xb4f7('0x16')]('id\x20IN\x20?',squel[_0xb4f7('0x11')]()['field'](_0xb4f7('0x55'),_0xb4f7('0x56'))[_0xb4f7('0x14')](_0x2307d0)[_0xb4f7('0x57')](_0x1d9326[_0xb4f7('0x19')](','))))[_0xb4f7('0x46')]();}function handleStop(){logger['info'](_0xb4f7('0x58'));stopped=!![];}function handleUncaughtException(_0x2786c7){logger[_0xb4f7('0x59')](_0x2786c7['message']);process[_0xb4f7('0x5a')](0x1);}function handleError(_0x13345e,_0x2422a2){stats['errors'][_0xb4f7('0x20')]({'name':_0x2422a2[_0xb4f7('0x5b')],'message':_0x2422a2['message'],'row':_0x13345e});}function handleQuery(_0x4c12b0){logger[_0xb4f7('0x5c')](_0x4c12b0);return db['sequelize']['query'](_0x4c12b0)[_0xb4f7('0x1c')](function(_0x5383ca){results['push'](_0x5383ca);})[_0xb4f7('0x23')](function(_0x5d2cf8){logger[_0xb4f7('0x59')](_0x5d2cf8[_0xb4f7('0x24')]);});}function main(_0x2522ff,_0x3731e3,_0x586c50,_0x59bf54){logger[_0xb4f7('0x5c')](_0xb4f7('0x5d'),_0x2522ff,JSON[_0xb4f7('0x5e')](_0x3731e3));process[_0xb4f7('0x5f')](_0xb4f7('0x60'));var _0x4f7340=_0x3731e3[_0xb4f7('0x61')];var _0x285821=_[_0xb4f7('0x62')](_0x4f7340);var _0x28b60b=_0x3731e3[_0xb4f7('0x63')];var _0x328413=path['join'](config['root'],_0xb4f7('0x64'),_0x28b60b+'.csv');logger[_0xb4f7('0x5c')](_0xb4f7('0x65'),_0x3731e3);db['ContactItemType']['findAll']({'raw':!![],'attributes':['id','name']})['then'](function(_0x30976f){for(var _0x24e613=0x0;_0x24e613<_0x30976f[_0xb4f7('0x1d')];_0x24e613++){if(_0x30976f[_0x24e613][_0xb4f7('0x66')]in _0x4f7340){contactItemTypes[_0xb4f7('0x20')](_0x30976f[_0x24e613]);delete _0x285821[_0x30976f[_0x24e613][_0xb4f7('0x66')]];hasAdditionalPhones=!![];}for(var _0x19d98f in _0x4f7340){if(_0x30976f[_0x24e613]['name']+'_description'===_0x19d98f){phoneDescriptions[_0xb4f7('0x20')]({'itemTypeId':_0x30976f[_0x24e613]['id'],'description':_0x19d98f});delete _0x285821[_0x19d98f];}}}if(hasAdditionalPhones)_0x285821[_0xb4f7('0x1f')]='';var _0x52b7ea=_['keys'](_0x285821)[_0xb4f7('0x19')]();logger[_0xb4f7('0x5c')](_0xb4f7('0x67'),_0x52b7ea);fs['writeFileSync'](_0x328413,_0x52b7ea+'\x0a');Papa[_0xb4f7('0x68')](fs['createReadStream'](_0x2522ff),{'header':!![],'skipEmptyLines':!![],'step':function(_0x30dfcb,_0x498761){try{for(var _0x43f849=0x0,_0x86a4d0=[];_0x43f849<_0x30dfcb[_0xb4f7('0x69')]['length'];_0x43f849++){stats['rows']+=0x1;if(_0x30dfcb[_0xb4f7('0x6a')][_0x43f849]){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],_0x30dfcb[_0xb4f7('0x6a')][_0x43f849]);}else{var _0x101eae=[];var _0x28fa27=[];var _0x20e5ec={};for(var _0x372a50 in _0x4f7340){let _0x560f4c=contactItemTypes[_0xb4f7('0x6b')](_0x4ff54a=>_0x4ff54a[_0xb4f7('0x66')]===_0x372a50);let _0x3dab55=contactItemTypes[_0xb4f7('0x6b')](_0x414ed7=>_0x414ed7['name']+_0xb4f7('0x6c')===_0x372a50);if(_[_0xb4f7('0x1e')](_0x560f4c)&&_[_0xb4f7('0x1e')](_0x3dab55)){if(_0x4f7340[_0xb4f7('0x6d')](_0x372a50)){if(_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x372a50]]){var _0x56f6c3=_[_0xb4f7('0x6e')](_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x372a50]][_0xb4f7('0x6f')](/"/g,'\x27'));switch(_0x372a50){case _0xb4f7('0x39'):var _0xf537ea=moment(_0x56f6c3,_0xb4f7('0x70'),!![]);if(_0xf537ea[_0xb4f7('0x71')]()){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')](_0xb4f7('0x72'));}break;case'priority':var _0x51e8fe=parseInt(_0x56f6c3);_0x56f6c3=_[_0xb4f7('0x73')](_0x51e8fe)||_0x51e8fe<0x0||_0x51e8fe>0x4?_0x59bf54?0x3:0x2:_0x51e8fe;_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');break;case _0xb4f7('0x74'):var _0x120c6b=parseInt(_0x56f6c3);if(_[_0xb4f7('0x75')](_0x120c6b)&&_[_0xb4f7('0x76')](_0x586c50,_0x120c6b)){_0x86a4d0['push']('\x22'+_0x120c6b+'\x22');}else{_0x101eae[_0xb4f7('0x20')]('agent\x20not\x20exists');}break;case _0xb4f7('0x77'):if(isEmail(_0x56f6c3)){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')]('email\x20wrong\x20format');}break;case _0xb4f7('0x78'):var _0x463ddb=moment(_0x56f6c3,'YYYY-MM-DD',!![]);if(_0x463ddb[_0xb4f7('0x71')]()){_0x86a4d0['push']('\x22'+_0x56f6c3+'\x22');}else{_0x101eae[_0xb4f7('0x20')](_0xb4f7('0x79'));}break;default:_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x56f6c3+'\x22');}}else{switch(_0x372a50){case _0xb4f7('0x7a'):case _0xb4f7('0x13'):_0x101eae['push'](_0x372a50+_0xb4f7('0x7b'));break;default:_0x86a4d0[_0xb4f7('0x20')]('\x22\x22');}}}}else{var _0x65835b='';if(!_[_0xb4f7('0x1e')](_0x560f4c)){if(!_0x20e5ec[_0xb4f7('0x6d')](_0x560f4c['id'])){for(var _0x591b90=0x0;_0x591b90<_0x4f7340[_0x372a50]['length'];_0x591b90++){var _0x56f6c3=_[_0xb4f7('0x6e')](_0x30dfcb[_0xb4f7('0x69')][_0x43f849][_0x4f7340[_0x372a50][_0x591b90]][_0xb4f7('0x6f')](/"/g,'\x27'));var _0x30e4ac=phoneDescriptions[_0xb4f7('0x6b')](_0x19c560=>_0x19c560[_0xb4f7('0x7c')]===_0x560f4c['id']);if(!_[_0xb4f7('0x1e')](_0x30e4ac)){var _0x23a9f6=_[_0xb4f7('0x6e')](_0x30dfcb['data'][_0x43f849][_0x4f7340[_0x30e4ac[_0xb4f7('0x7d')]][0x0]][_0xb4f7('0x6f')](/"/g,'\x27'));if(!_[_0xb4f7('0x1e')](_0x23a9f6))_0x56f6c3=_0x56f6c3+'§'+_0x23a9f6;}if(_0x65835b=='')_0x65835b=_0x56f6c3;else _0x65835b+='|'+_0x56f6c3;}_0x28fa27[_0xb4f7('0x20')](_0x560f4c['id']+':'+_0x65835b);_0x20e5ec[_0x560f4c['id']]=0x1;}}}}if(hasAdditionalPhones){_0x86a4d0[_0xb4f7('0x20')]('\x22'+_0x28fa27[_0xb4f7('0x19')](';')+'\x22');}if(_0x101eae['length']){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],{'code':_0xb4f7('0x7e'),'message':_0x101eae[_0xb4f7('0x19')]()});}else{fs[_0xb4f7('0x7f')](_0x328413,_0x86a4d0[_0xb4f7('0x19')]()+'\x0a');}_0x86a4d0=[];}if(!(stats['rows']%0xc8)){socket['emit']('contact:import:'+_0x28b60b,stats);stats[_0xb4f7('0x6a')]=[];}}if(stopped){logger[_0xb4f7('0x5c')](_0xb4f7('0x80'));_0x498761[_0xb4f7('0x81')]();}}catch(_0x2698b0){handleError(_0x30dfcb[_0xb4f7('0x69')][_0x43f849],{'code':_0xb4f7('0x82'),'message':_0x2698b0[_0xb4f7('0x24')]});logger[_0xb4f7('0x59')](_0xb4f7('0x83'),_0x2698b0[_0xb4f7('0x24')]);}},'complete':function(){try{var _0x3c2c9a=[];var _0x2cab72=tempTableName;_0x3c2c9a[_0xb4f7('0x20')]('CREATE\x20TABLE\x20'+_0x2cab72+_0xb4f7('0x84'));logger[_0xb4f7('0x5c')](_0xb4f7('0x85'),contactItemTypes['length']);var _0x53e68e=util[_0xb4f7('0xd')](_0xb4f7('0x86'),_0x328413,_0x2cab72,_0x52b7ea,_0x3731e3['ListId'],_0x3731e3[_0xb4f7('0x54')]||null,NOW,NOW);if(_[_0xb4f7('0x1e')](_0x4f7340[_0xb4f7('0x39')])){_0x53e68e+=_0xb4f7('0x87');}_0x3c2c9a['push'](_0x53e68e);BPromise[_0xb4f7('0x88')](_0x3c2c9a,handleQuery)[_0xb4f7('0x22')](function(_0x336abc){BPromise[_0xb4f7('0x21')]([handleAdditionalPhones()])[_0xb4f7('0x22')](function(){_0x3c2c9a=[];for(var _0x2971fd=0x0;_0x2971fd<promisesContact[_0xb4f7('0x1d')];_0x2971fd++){_0x3c2c9a['push'](updateContact(promisesContact[_0x2971fd][_0xb4f7('0x89')]));}BPromise[_0xb4f7('0x21')](_0x3c2c9a)[_0xb4f7('0x22')](function(){_0x3c2c9a=[];for(var _0x34cc70=0x0;_0x34cc70<promisesAdditionalPhones[_0xb4f7('0x1d')];_0x34cc70++){_0x3c2c9a[_0xb4f7('0x20')](createAdditionalPhone(promisesAdditionalPhones[_0x34cc70]['contactId'],promisesAdditionalPhones[_0x34cc70]['contactTypeId'],promisesAdditionalPhones[_0x34cc70][_0xb4f7('0x13')],promisesAdditionalPhones[_0x34cc70][_0xb4f7('0x8a')]));}BPromise['all'](_0x3c2c9a)['then'](function(){_0x3c2c9a=[];_0x3c2c9a[_0xb4f7('0x20')](insertCmHopperAdditionalPhones(_0x3731e3[_0xb4f7('0x48')]));_0x3c2c9a[_0xb4f7('0x20')](_0xb4f7('0x8b')+_0x2cab72+';');BPromise[_0xb4f7('0x88')](_0x3c2c9a,handleQuery)[_0xb4f7('0x22')](function(_0x4f8bc8){stats[_0xb4f7('0x8c')]=!![];stats[_0xb4f7('0x8d')]=updatedRows;socket[_0xb4f7('0x8e')](_0xb4f7('0x8f')+_0x28b60b,stats);fs[_0xb4f7('0x90')](_0x2522ff);fs['unlink'](_0x328413);process[_0xb4f7('0x5a')](0x0);})[_0xb4f7('0x23')](function(_0xb87ce){logger[_0xb4f7('0x59')](_0xb87ce[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);});});});});})['catch'](function(_0x26dac3){logger[_0xb4f7('0x59')](_0x26dac3[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);});}catch(_0x234811){logger[_0xb4f7('0x59')](_0xb4f7('0x91'),_0x234811[_0xb4f7('0x24')]);process[_0xb4f7('0x5a')](0x1);}},'error':function(_0x537fb2,_0x18483b,_0x439fa9,_0x2160ed){throw new Error(_0x2160ed);}});});}function validate(){if(process['argv']&&process[_0xb4f7('0x92')][_0xb4f7('0x1d')]<0x4){throw new Error(_0xb4f7('0x93'));}var _0x2bfa9b=path[_0xb4f7('0x19')](config[_0xb4f7('0x94')],_0xb4f7('0x64'),process[_0xb4f7('0x92')][0x2]);if(!fs[_0xb4f7('0x95')](_0x2bfa9b)){throw new Error(_0xb4f7('0x96'));}var _0x5a869a={};try{_0x5a869a=JSON[_0xb4f7('0x68')](process[_0xb4f7('0x92')][0x3]);if(!_0x5a869a['binding']){throw new Error(_0xb4f7('0x97'));}var _0xfac190=0x0;if(_0x5a869a['binding'][_0xb4f7('0x74')]){_0xfac190=0x1;}if(!_0x5a869a[_0xb4f7('0x48')]){throw new Error(_0xb4f7('0x98'));}}catch(_0x1d0279){throw new Error(_0xb4f7('0x99'));}var _0x35f4b6=[];try{_0x35f4b6=_[_0xb4f7('0x9a')](JSON[_0xb4f7('0x68')](process[_0xb4f7('0x92')][0x4]),'id');}catch(_0x4c2e46){logger[_0xb4f7('0x5c')](_0xb4f7('0x9b'));}main(_0x2bfa9b,_0x5a869a,_0x35f4b6,_0xfac190);}validate();process['on'](_0xb4f7('0x9c'),handleStop);process['on'](_0xb4f7('0x9d'),handleUncaughtException);
\ No newline at end of file
index 400c5a5..d3e93c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfaad=['inbound','string','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','calleridname','Call\x20To','destexten','Queue','queue','UniqueId','uniqueid','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','outbound','Member\x20Name','membername','answertime','Complete\x20Time','Duration','duration','Billable\x20Time','getSubjects','[xCALLY\x20Ticket]','toLowerCase','push','variable','destcalleridnum','getDescriptions'];(function(_0x349ef0,_0x52a517){var _0x221d00=function(_0x45f896){while(--_0x45f896){_0x349ef0['push'](_0x349ef0['shift']());}};_0x221d00(++_0x52a517);}(_0xfaad,0x1c7));var _0xdfaa=function(_0x19b4ba,_0x4f9a13){_0x19b4ba=_0x19b4ba-0x0;var _0x84f2db=_0xfaad[_0x19b4ba];return _0x84f2db;};'use strict';exports[_0xdfaa('0x0')]=function(_0x56f50b,_0x2389eb){var _0x1b8930=[{'type':'string','content':_0xdfaa('0x1'),'variableName':null}];switch(_0x56f50b[_0xdfaa('0x2')]()){case'voice':switch(_0x2389eb['toLowerCase']()){case'inbound':_0x1b8930[_0xdfaa('0x3')]({'type':_0xdfaa('0x4'),'content':'','variableName':'queue'});_0x1b8930[_0xdfaa('0x3')]({'type':_0xdfaa('0x4'),'content':'','variableName':'calleridnum'});break;case'outbound':_0x1b8930[_0xdfaa('0x3')]({'type':'string','content':'Outbound\x20Call','variableName':null});_0x1b8930['push']({'type':_0xdfaa('0x4'),'content':'','variableName':_0xdfaa('0x5')});break;}}return _0x1b8930;};exports[_0xdfaa('0x6')]=function(_0x74886e,_0x5665a5){var _0x23546f=[];switch(_0x74886e[_0xdfaa('0x2')]()){case'voice':switch(_0x5665a5[_0xdfaa('0x2')]()){case _0xdfaa('0x7'):_0x23546f=[{'type':_0xdfaa('0x8'),'content':_0xdfaa('0x9'),'key':null,'keyType':null,'variableName':null},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0xb'),'keyType':_0xdfaa('0x4'),'variableName':'calleridnum'},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0xc'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0xd')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0xe'),'keyType':'variable','variableName':_0xdfaa('0xf')},{'type':'keyValue','content':'','key':_0xdfaa('0x10'),'keyType':'variable','variableName':_0xdfaa('0x11')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x12'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x13')},{'type':'keyValue','content':'','key':'Date','keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x14')},{'type':'string','content':_0xdfaa('0x15'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xdfaa('0x16'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x17')},{'type':'keyValue','content':'','key':_0xdfaa('0x18'),'keyType':_0xdfaa('0x4'),'variableName':'destcalleridnum'},{'type':_0xdfaa('0x8'),'content':_0xdfaa('0x19'),'key':null,'keyType':null,'variableName':null},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x1a'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x14')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x1b'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x1c')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x1d'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x1e')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x1f'),'keyType':_0xdfaa('0x4'),'variableName':_0xdfaa('0x20')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x21'),'keyType':'variable','variableName':'talktime'}];break;case _0xdfaa('0x22'):_0x23546f=[{'type':_0xdfaa('0x8'),'content':_0xdfaa('0x9'),'variableName':null},{'type':_0xdfaa('0xa'),'content':'','key':'Called\x20Number','keyType':_0xdfaa('0x4'),'keyContent':'','variableName':'destcalleridnum'},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x23'),'keyType':_0xdfaa('0x4'),'keyContent':'','variableName':_0xdfaa('0x24')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x12'),'keyType':'variable','keyContent':'','variableName':_0xdfaa('0x13')},{'type':_0xdfaa('0xa'),'content':'','key':'Date','keyType':'variable','keyContent':'','variableName':'starttime'},{'type':'string','content':_0xdfaa('0x19')},{'type':_0xdfaa('0xa'),'content':'','key':'Answer\x20Time','keyType':_0xdfaa('0x4'),'keyContent':'','variableName':_0xdfaa('0x25')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x26'),'keyType':'variable','keyContent':'','variableName':'endtime'},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x27'),'keyType':_0xdfaa('0x4'),'keyContent':'','variableName':_0xdfaa('0x28')},{'type':_0xdfaa('0xa'),'content':'','key':_0xdfaa('0x29'),'keyType':'variable','keyContent':'','variableName':'billableseconds'}];break;}}return _0x23546f;};
\ No newline at end of file
+var _0x888f=['holdtime','talktime','Called\x20Number','membername','starttime','Answer\x20Time','answertime','endtime','Duration','duration','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','push','variable','queue','calleridnum','outbound','destcalleridnum','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name','Call\x20To','destexten','Queue','UniqueId','uniqueid','Date','agentcalledAt','***\x20Agent\x20Info\x20***','Agent\x20Name','destcalleridname','***\x20Time\x20Info\x20***','Agent\x20Ring','Agent\x20Connect','agentconnectAt','agentcompleteAt','Hold\x20Time'];(function(_0x249d99,_0x16b584){var _0x5bfb05=function(_0x4f4d67){while(--_0x4f4d67){_0x249d99['push'](_0x249d99['shift']());}};_0x5bfb05(++_0x16b584);}(_0x888f,0x163));var _0xf888=function(_0x10c714,_0x521a19){_0x10c714=_0x10c714-0x0;var _0x203459=_0x888f[_0x10c714];return _0x203459;};'use strict';exports[_0xf888('0x0')]=function(_0x1d0240,_0x54dd3b){var _0x47d50a=[{'type':_0xf888('0x1'),'content':_0xf888('0x2'),'variableName':null}];switch(_0x1d0240[_0xf888('0x3')]()){case'voice':switch(_0x54dd3b[_0xf888('0x3')]()){case _0xf888('0x4'):_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x6'),'content':'','variableName':_0xf888('0x7')});_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x6'),'content':'','variableName':_0xf888('0x8')});break;case _0xf888('0x9'):_0x47d50a[_0xf888('0x5')]({'type':_0xf888('0x1'),'content':'Outbound\x20Call','variableName':null});_0x47d50a[_0xf888('0x5')]({'type':'variable','content':'','variableName':_0xf888('0xa')});break;}}return _0x47d50a;};exports['getDescriptions']=function(_0x289c86,_0x9b6b4d){var _0x409888=[];switch(_0x289c86['toLowerCase']()){case _0xf888('0xb'):switch(_0x9b6b4d['toLowerCase']()){case _0xf888('0x4'):_0x409888=[{'type':_0xf888('0x1'),'content':_0xf888('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0xe'),'keyType':'variable','variableName':'calleridnum'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0xf'),'keyType':_0xf888('0x6'),'variableName':'calleridname'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x10'),'keyType':'variable','variableName':_0xf888('0x11')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x12'),'keyType':'variable','variableName':_0xf888('0x7')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x13'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x14')},{'type':'keyValue','content':'','key':_0xf888('0x15'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x16')},{'type':_0xf888('0x1'),'content':_0xf888('0x17'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x18'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x19')},{'type':_0xf888('0xd'),'content':'','key':'Agent\x20Number','keyType':'variable','variableName':'destcalleridnum'},{'type':_0xf888('0x1'),'content':_0xf888('0x1a'),'key':null,'keyType':null,'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1b'),'keyType':_0xf888('0x6'),'variableName':'agentcalledAt'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1c'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x1d')},{'type':_0xf888('0xd'),'content':'','key':'Agent\x20Complete','keyType':_0xf888('0x6'),'variableName':_0xf888('0x1e')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x1f'),'keyType':_0xf888('0x6'),'variableName':_0xf888('0x20')},{'type':_0xf888('0xd'),'content':'','key':'Talk\x20Time','keyType':_0xf888('0x6'),'variableName':_0xf888('0x21')}];break;case _0xf888('0x9'):_0x409888=[{'type':_0xf888('0x1'),'content':_0xf888('0xc'),'variableName':null},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x22'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0xa')},{'type':_0xf888('0xd'),'content':'','key':'Member\x20Name','keyType':'variable','keyContent':'','variableName':_0xf888('0x23')},{'type':_0xf888('0xd'),'content':'','key':'UniqueId','keyType':_0xf888('0x6'),'keyContent':'','variableName':'uniqueid'},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x15'),'keyType':'variable','keyContent':'','variableName':_0xf888('0x24')},{'type':_0xf888('0x1'),'content':_0xf888('0x1a')},{'type':'keyValue','content':'','key':_0xf888('0x25'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x26')},{'type':_0xf888('0xd'),'content':'','key':'Complete\x20Time','keyType':'variable','keyContent':'','variableName':_0xf888('0x27')},{'type':_0xf888('0xd'),'content':'','key':_0xf888('0x28'),'keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x29')},{'type':'keyValue','content':'','key':'Billable\x20Time','keyType':_0xf888('0x6'),'keyContent':'','variableName':_0xf888('0x2a')}];break;}}return _0x409888;};
\ No newline at end of file
index 3ed758d..22c6896 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa17=['tags','group','i.id','ids','tag','count','length','order','forEach','closed','getClosedOrderClause','DESC','getFilteredInteractions','rows','tracked','omit','html','phone','fax','mobile','./sql-utils','./utils','findAll','skipInteractionsQuery','resolve','getInteractionsQuery','then','search','parseAdvancedSearchFilter','parseQueryParameters','where','body','contact','default','fields','filter','user','having','read'];(function(_0x5c4ee2,_0x2be882){var _0x709420=function(_0x10975b){while(--_0x10975b){_0x5c4ee2['push'](_0x5c4ee2['shift']());}};_0x709420(++_0x2be882);}(_0xfa17,0x14c));var _0x7fa1=function(_0xb1ab93,_0x3acb22){_0xb1ab93=_0xb1ab93-0x0;var _0x6ed644=_0xfa17[_0xb1ab93];return _0x6ed644;};'use strict';var _=require('lodash');var sqlUtils=require(_0x7fa1('0x0'));var utils=require(_0x7fa1('0x1'));exports[_0x7fa1('0x2')]=function(_0x4f97f7,_0x43dbc6,_0x160600,_0x5a1ffe,_0x5735da){var _0x326f97={'count':0x0,'rows':[]};var _0x3f02e6=sqlUtils[_0x7fa1('0x3')](_0x4f97f7,_0x160600,_0x43dbc6);if(_0x3f02e6){return Promise[_0x7fa1('0x4')](_0x326f97);}var _0x16ab3c=sqlUtils[_0x7fa1('0x5')](_0x4f97f7);var _0x17c92c={};return Promise[_0x7fa1('0x4')]()[_0x7fa1('0x6')](function(){if(_0x43dbc6[_0x7fa1('0x7')]){return sqlUtils[_0x7fa1('0x8')](_0x43dbc6[_0x7fa1('0x7')],_0x5735da);}else{return sqlUtils[_0x7fa1('0x9')](_0x4f97f7,_0x43dbc6,_0x5735da);}})[_0x7fa1('0x6')](function(_0x1c6b0e){_0x16ab3c[_0x7fa1('0xa')](_0x1c6b0e[_0x7fa1('0xb')]);_0x16ab3c['where'](_0x1c6b0e[_0x7fa1('0xc')]);_0x16ab3c[_0x7fa1('0xa')](_0x1c6b0e[_0x7fa1('0xd')]);_0x16ab3c['where'](_0x1c6b0e[_0x7fa1('0xe')]);_0x16ab3c[_0x7fa1('0xa')](_0x1c6b0e[_0x7fa1('0xf')]);_0x16ab3c[_0x7fa1('0xa')](_0x1c6b0e[_0x7fa1('0x10')]);_0x16ab3c[_0x7fa1('0x11')](_0x1c6b0e[_0x7fa1('0x12')]);_0x17c92c=_0x1c6b0e[_0x7fa1('0x13')];return sqlUtils['checkAccountsRestrictions'](_0x4f97f7,_0x160600,_0x43dbc6);})['then'](function(_0x17d52d){_0x16ab3c[_0x7fa1('0xa')](_0x17d52d);_0x16ab3c[_0x7fa1('0x14')](_0x7fa1('0x15'));var _0x5ba3ce=_0x43dbc6[_0x7fa1('0x7')]?_0x17c92c[_0x7fa1('0x16')]:_0x43dbc6[_0x7fa1('0x17')];return sqlUtils['countFilteredInteractions'](_0x16ab3c,_0x5ba3ce);})['then'](function(_0x4498da){_0x326f97[_0x7fa1('0x18')]=_0x4498da[_0x7fa1('0x19')];if(_0x326f97['count']===0x0){return[];}_0x16ab3c[_0x7fa1('0x11')](_0x17c92c['clause']);if(_0x5a1ffe[_0x7fa1('0x1a')]){_0x5a1ffe['order'][_0x7fa1('0x1b')](function(_0x22c42f){var _0x4b992b=_0x22c42f[0x0]==='contactName'?_0x22c42f[0x0]:'i.'+_0x22c42f[0x0];_0x16ab3c[_0x7fa1('0x1a')](_0x4b992b,_0x22c42f[0x1]==='DESC'?![]:!![]);if(_0x22c42f[0x0]===_0x7fa1('0x1c')){var _0x1eeb1b=sqlUtils[_0x7fa1('0x1d')](_0x4f97f7,_0x43dbc6);_0x16ab3c['order'](_0x1eeb1b,_0x22c42f[0x1]===_0x7fa1('0x1e')?![]:!![]);}});}return sqlUtils[_0x7fa1('0x1f')](_0x4f97f7,_0x16ab3c,_0x43dbc6,_0x5a1ffe);})[_0x7fa1('0x6')](function(_0x5ab5a4){_0x326f97[_0x7fa1('0x20')]=_0x5ab5a4;return _0x326f97;})['catch'](function(_0x3b1062){throw _0x3b1062;});};exports[_0x7fa1('0x21')]=function(_0x7f7d1d,_0x44495f){return function(_0x50d941,_0x504cd7,_0x5447fb){var _0x44f9f9=_0x50d941['user'];var _0xe54424={};var _0x2533e3=_0x50d941['query'];if(_0xe54424){_0xe54424=_['clone'](_0x50d941[_0x7fa1('0xb')]);_0xe54424=_[_0x7fa1('0x22')](_0xe54424,[_0x7fa1('0xb'),_0x7fa1('0x23'),_0x7fa1('0x24'),_0x7fa1('0x25'),_0x7fa1('0x26')]);}utils['updateUser'](_0x44f9f9,_0xe54424,_0x2533e3,_0x7f7d1d,_0x44495f);_0x5447fb(null);};};
\ No newline at end of file
+var _0xef84=['findAll','skipInteractionsQuery','resolve','then','search','parseAdvancedSearchFilter','body','where','contact','default','fields','filter','user','having','read','tags','checkAccountsRestrictions','group','i.id','ids','tag','countFilteredInteractions','length','order','forEach','DESC','closed','getClosedOrderClause','rows','catch','tracked','query','clone','omit','html','phone','fax','updateUser','lodash','./sql-utils','./utils'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0xef84,0x78));var _0x4ef8=function(_0x265be4,_0xb82560){_0x265be4=_0x265be4-0x0;var _0x40560f=_0xef84[_0x265be4];return _0x40560f;};'use strict';var _=require(_0x4ef8('0x0'));var sqlUtils=require(_0x4ef8('0x1'));var utils=require(_0x4ef8('0x2'));exports[_0x4ef8('0x3')]=function(_0x5e787b,_0x3a5dd7,_0x5b90e2,_0x21bafc,_0x40ebe2){var _0x2944d8={'count':0x0,'rows':[]};var _0x1bbde0=sqlUtils[_0x4ef8('0x4')](_0x5e787b,_0x5b90e2,_0x3a5dd7);if(_0x1bbde0){return Promise[_0x4ef8('0x5')](_0x2944d8);}var _0x376fce=sqlUtils['getInteractionsQuery'](_0x5e787b);var _0x3f6324={};return Promise[_0x4ef8('0x5')]()[_0x4ef8('0x6')](function(){if(_0x3a5dd7[_0x4ef8('0x7')]){return sqlUtils[_0x4ef8('0x8')](_0x3a5dd7[_0x4ef8('0x7')],_0x40ebe2);}else{return sqlUtils['parseQueryParameters'](_0x5e787b,_0x3a5dd7,_0x40ebe2);}})[_0x4ef8('0x6')](function(_0x5ef559){_0x376fce['where'](_0x5ef559[_0x4ef8('0x9')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xb')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xc')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xd')]);_0x376fce['where'](_0x5ef559[_0x4ef8('0xe')]);_0x376fce[_0x4ef8('0xa')](_0x5ef559[_0x4ef8('0xf')]);_0x376fce[_0x4ef8('0x10')](_0x5ef559[_0x4ef8('0x11')]);_0x3f6324=_0x5ef559[_0x4ef8('0x12')];return sqlUtils[_0x4ef8('0x13')](_0x5e787b,_0x5b90e2,_0x3a5dd7);})['then'](function(_0x2bc6f1){_0x376fce['where'](_0x2bc6f1);_0x376fce[_0x4ef8('0x14')](_0x4ef8('0x15'));var _0x35aca3=_0x3a5dd7[_0x4ef8('0x7')]?_0x3f6324[_0x4ef8('0x16')]:_0x3a5dd7[_0x4ef8('0x17')];return sqlUtils[_0x4ef8('0x18')](_0x376fce,_0x35aca3);})[_0x4ef8('0x6')](function(_0x5cbf87){_0x2944d8['count']=_0x5cbf87[_0x4ef8('0x19')];if(_0x2944d8['count']===0x0){return[];}_0x376fce[_0x4ef8('0x10')](_0x3f6324['clause']);if(_0x21bafc[_0x4ef8('0x1a')]){_0x21bafc['order'][_0x4ef8('0x1b')](function(_0x393a01){var _0x5823b8=_0x393a01[0x0]==='contactName'?_0x393a01[0x0]:'i.'+_0x393a01[0x0];_0x376fce['order'](_0x5823b8,_0x393a01[0x1]===_0x4ef8('0x1c')?![]:!![]);if(_0x393a01[0x0]===_0x4ef8('0x1d')){var _0x33829f=sqlUtils[_0x4ef8('0x1e')](_0x5e787b,_0x3a5dd7);_0x376fce['order'](_0x33829f,_0x393a01[0x1]===_0x4ef8('0x1c')?![]:!![]);}});}return sqlUtils['getFilteredInteractions'](_0x5e787b,_0x376fce,_0x3a5dd7,_0x21bafc);})[_0x4ef8('0x6')](function(_0x2af9dc){_0x2944d8[_0x4ef8('0x1f')]=_0x2af9dc;return _0x2944d8;})[_0x4ef8('0x20')](function(_0x4d5a96){throw _0x4d5a96;});};exports[_0x4ef8('0x21')]=function(_0x413c7d,_0x5cc723){return function(_0x4c2fa4,_0x19cc1b,_0x17a05c){var _0x111d97=_0x4c2fa4['user'];var _0x1163e6={};var _0x1cbfa5=_0x4c2fa4[_0x4ef8('0x22')];if(_0x1163e6){_0x1163e6=_[_0x4ef8('0x23')](_0x4c2fa4['body']);_0x1163e6=_[_0x4ef8('0x24')](_0x1163e6,[_0x4ef8('0x9'),_0x4ef8('0x25'),_0x4ef8('0x26'),_0x4ef8('0x27'),'mobile']);}utils[_0x4ef8('0x28')](_0x111d97,_0x1163e6,_0x1cbfa5,_0x413c7d,_0x5cc723);_0x17a05c(null);};};
\ No newline at end of file
index 04269ad..40a772b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x780f=['parseSearch','sqlOperator','conditions','find','name','buildExpression','type','default','text','start','value','end','unreadMessages','read','and','Contact','operator','$substring','split','contact','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','tags','ids','User','UserId','user','plainBody','body','keys','compact','forEach','concat','createdAt','$gte','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','resolve','then','fields','tag','clause','filter','get','chat','Websites','\x20IS\x20NOT\x20NULL','i.secondDisposition','i.disposition','unshift','i.substatus','closed','join','capitalize','Interaction','Sequelize','QueryTypes','query','toString','keyBy','merge','attributes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.id','i.createdAt','i.updatedAt','i.attach','i.lastMsgAt','i.subject','i.thirdDisposition','i.to','i.UserId','CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','limit','offset','sequelize','Setting','findOne','enableEmailPreview','all','clone','COUNT(*)','isEmpty','SELECT','exports','lodash','squel','../parsers/advancedSearch','../parsers/qs','./update-interaction','../../mysqldb','role','agent','search','select','field','color','from','tools_tags','user_has_','_interactions','u.id','u.fullname','users','u.id\x20=\x20ui.UserId','length','where','ui.','\x20IN\x20?','map','getInteractionsTables','getAccountFK','getInteractionFK','interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','left_join','accounts','a.id\x20=\x20i.','me.','interactionsTags','it.','\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','getSelectedTags','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','i.fax\x20LIKE\x20?','openchannel','i.from\x20LIKE\x20?','isEmail','c.email\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?'];(function(_0x5c2067,_0x5aae1a){var _0x445fea=function(_0x3bf06b){while(--_0x3bf06b){_0x5c2067['push'](_0x5c2067['shift']());}};_0x445fea(++_0x5aae1a);}(_0x780f,0x6c));var _0xf780=function(_0x48ec91,_0x212edc){_0x48ec91=_0x48ec91-0x0;var _0x22766c=_0x780f[_0x48ec91];return _0x22766c;};'use strict';var _=require(_0xf780('0x0'));var squel=require(_0xf780('0x1'));var as=require(_0xf780('0x2'));var qs=require(_0xf780('0x3'));var updateInteraction=require(_0xf780('0x4'))['updateInteraction'];var utils=require('./utils');var db=require(_0xf780('0x5'))['db'];function skipInteractionsQuery(_0x26ed87,_0x1a22c0,_0x100bb2){var _0x4af209=![];var _0x37b0a2=utils['getAccountFK'](_0x26ed87);if(_0x1a22c0[_0xf780('0x6')]===_0xf780('0x7')&&!_0x100bb2[_0xf780('0x8')]&&!_0x100bb2[_0x37b0a2]){_0x4af209=!![];}return _0x4af209;}function getTagsQuery(){return squel[_0xf780('0x9')]()[_0xf780('0xa')]('id')[_0xf780('0xa')]('name')[_0xf780('0xa')](_0xf780('0xb'))[_0xf780('0xc')](_0xf780('0xd'));}function getUsersQuery(_0x343856,_0x2d597c){var _0x491ab5=utils['getInteractionFK'](_0x343856);var _0x4b95fd=_0xf780('0xe')+_0x343856+_0xf780('0xf');var _0x16d4c9=squel[_0xf780('0x9')]()['field'](_0xf780('0x10'))[_0xf780('0xa')](_0xf780('0x11'))[_0xf780('0xa')]('ui.'+_0x491ab5)[_0xf780('0xc')](_0x4b95fd,'ui')['left_join'](_0xf780('0x12'),'u',_0xf780('0x13'));if(_0x2d597c[_0xf780('0x14')]>0x0){_0x16d4c9[_0xf780('0x15')](_0xf780('0x16')+_0x491ab5+_0xf780('0x17'),_[_0xf780('0x18')](_0x2d597c,'id'));}return _0x16d4c9;}function getInteractionsQuery(_0x51b096){var _0x450198=utils[_0xf780('0x19')](_0x51b096);var _0xa78b1b=utils[_0xf780('0x1a')](_0x51b096);var _0x5d5a81=utils[_0xf780('0x1b')](_0x51b096);return squel['select']()[_0xf780('0xc')](_0x450198[_0xf780('0x1c')],'i')['left_join'](_0xf780('0x1d'),'c',_0xf780('0x1e'))['left_join'](_0xf780('0x12'),'o',_0xf780('0x1f'))[_0xf780('0x20')](_0x450198[_0xf780('0x21')],'a',_0xf780('0x22')+_0xa78b1b)[_0xf780('0x20')](_0x450198['messages'],'me',_0xf780('0x23')+_0x5d5a81+'\x20=\x20i.id')['left_join'](_0x450198[_0xf780('0x24')],'it',_0xf780('0x25')+_0x5d5a81+_0xf780('0x26'))['left_join'](_0xf780('0xd'),'t',_0xf780('0x27'));}function getSqlClauses(){var _0x4f59b1={'body':squel[_0xf780('0x28')](),'contact':squel['expr'](),'default':squel[_0xf780('0x28')](),'fields':squel[_0xf780('0x28')](),'filter':squel['expr'](),'read':squel['expr'](),'tags':{'clause':squel[_0xf780('0x28')](),'ids':null},'user':squel[_0xf780('0x28')]()};return _0x4f59b1;}function parseTagParameter(_0x462435){var _0x40d9c9=squel[_0xf780('0x28')]();if(_0x462435){var _0x2bd6cf=utils[_0xf780('0x29')](_0x462435);_0x2bd6cf['forEach'](function(_0x5a3547){_0x40d9c9['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5a3547+',%');});}return _0x40d9c9;}function parseReadParameter(_0x3f5498){var _0xf595e2='';if(_0x3f5498){_0xf595e2=_0xf780('0x2a');if(_0x3f5498==='1'){_0xf595e2=_0xf595e2['replace']('{OPERATOR}','=');}else{_0xf595e2=_0xf595e2[_0xf780('0x2b')](_0xf780('0x2c'),'>');}}return _0xf595e2;}function parseSearchFilter(_0x2b832d,_0x5e6b25){var _0x3cc1a5=squel[_0xf780('0x28')]();if(_0x5e6b25){var _0x2368e3=_0x5e6b25[_0xf780('0x2b')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0xf780('0x2d')](_0x2368e3)){_0x3cc1a5['or']('i.id\x20LIKE\x20?',_0x2368e3+'%');if([_0xf780('0x2e'),_0xf780('0x2f')][_0xf780('0x30')](_0x2b832d)){_0x3cc1a5['or'](_0xf780('0x31'),_0x2368e3+'%');}else if(_0x2b832d===_0xf780('0x32')){_0x3cc1a5['or'](_0xf780('0x33'),_0x2368e3+'%');}else if(_0x2b832d===_0xf780('0x34')){_0x3cc1a5['or'](_0xf780('0x35'),_0x2368e3+'%');}}else if(_0x2b832d==='mail'&&qs[_0xf780('0x36')](_0x2368e3)){_0x3cc1a5['or'](_0xf780('0x37'),_0x2368e3+'%');}else{if(_0x2b832d===_0xf780('0x38')){_0x3cc1a5['or'](_0xf780('0x39'),qs[_0xf780('0x3a')](_0x2368e3))['or']('MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xf780('0x3a')](_0x2368e3));}else{if(_0x2b832d!=='fax'){_0x3cc1a5['or'](_0xf780('0x3b'),qs[_0xf780('0x3a')](_0x2368e3));}_0x3cc1a5['or'](_0xf780('0x3c'),_0x2368e3+'%');}}}return _0x3cc1a5;}function parseAdvancedSearchFilter(_0x513bdf,_0x270419){var _0x46893b=getSqlClauses();var _0x26d084=as[_0xf780('0x3d')](_0x513bdf);var _0x523b7a=_0x26d084[_0xf780('0x3e')];for(var _0x5d0553=0x0;_0x5d0553<_0x26d084[_0xf780('0x3f')]['length'];_0x5d0553++){var _0x4bf8a5=_0x26d084[_0xf780('0x3f')][_0x5d0553];var _0x4a2f5a='i';var _0x355430=_[_0xf780('0x40')](_0x270419,[_0xf780('0x41'),_0x4bf8a5[_0xf780('0xa')]]);if(_0x355430){var _0x50e90c=as[_0xf780('0x42')](_0x4a2f5a,_0x355430[_0xf780('0x43')],_0x4bf8a5);_0x46893b[_0xf780('0x44')][_0x523b7a](_0x50e90c[_0xf780('0x45')],_0x50e90c['value'][_0xf780('0x46')],_0x50e90c[_0xf780('0x47')][_0xf780('0x48')]);}else{switch(_0x4bf8a5[_0xf780('0xa')]){case _0xf780('0x49'):var _0x4b4ed8=parseReadParameter(_0x4bf8a5['value']);_0x46893b[_0xf780('0x4a')][_0xf780('0x4b')](_0x4b4ed8);break;case _0xf780('0x4c'):if(_0x4bf8a5[_0xf780('0x4d')]===_0xf780('0x4e')){if(_0x4bf8a5['value'][_0xf780('0x4f')]('\x20')['length']>0x1){_0x46893b[_0xf780('0x50')][_0x523b7a](_0xf780('0x51'),qs[_0xf780('0x3a')](_0x4bf8a5[_0xf780('0x47')]),null);}else{var _0x4b293c='%'+_0x4bf8a5[_0xf780('0x47')]+'%';_0x46893b[_0xf780('0x50')][_0x523b7a](_0xf780('0x52'),_0x4b293c,_0x4b293c,_0x4b293c);}}else{_0x355430=_[_0xf780('0x40')](_0x270419,[_0xf780('0x41'),_0xf780('0x53')]);_0x4bf8a5[_0xf780('0xa')]=_0xf780('0x53');_0x50e90c=as[_0xf780('0x42')](_0x4a2f5a,_0x355430[_0xf780('0x43')],_0x4bf8a5);_0x46893b[_0xf780('0x50')][_0x523b7a](_0x50e90c[_0xf780('0x45')],_0x50e90c[_0xf780('0x47')][_0xf780('0x46')],_0x50e90c['value'][_0xf780('0x48')]);}break;case'Tag':var _0x187444=_0x4bf8a5[_0xf780('0x47')]['split'](',')['map'](function(_0x564c9a){return Number(_0x564c9a);});var _0x5811f1=parseTagParameter(_0x187444);_0x46893b[_0xf780('0x54')]['clause'][_0xf780('0x4b')](_0x5811f1);_0x46893b[_0xf780('0x54')][_0xf780('0x55')]=_0x187444;break;case _0xf780('0x56'):if(_0x4bf8a5[_0xf780('0x4d')]==='$substring'){_0x46893b['user'][_0x523b7a]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x4bf8a5['value']+'%',null);}else{_0x355430=_[_0xf780('0x40')](_0x270419,[_0xf780('0x41'),_0xf780('0x57')]);_0x4bf8a5[_0xf780('0xa')]=_0xf780('0x57');_0x50e90c=as[_0xf780('0x42')](_0x4a2f5a,_0x355430['type'],_0x4bf8a5);_0x46893b[_0xf780('0x58')][_0x523b7a](_0x50e90c[_0xf780('0x45')],_0x50e90c[_0xf780('0x47')][_0xf780('0x46')],_0x50e90c[_0xf780('0x47')][_0xf780('0x48')]);}break;case'body':case _0xf780('0x59'):_0x50e90c=as['buildExpression']('me',null,_0x4bf8a5);_0x46893b[_0xf780('0x5a')][_0x523b7a](_0x50e90c['text'],_0x50e90c[_0xf780('0x47')]['start'],_0x50e90c['value'][_0xf780('0x48')]);break;}}}return _0x46893b;}function parseModelFields(_0x72a225,_0x189717,_0x2946a1){var _0x5b60e7=utils[_0xf780('0x1a')](_0x72a225);var _0x41ee46=squel[_0xf780('0x28')]();var _0x143665=_(_0x189717)[_0xf780('0x5b')]()['map'](function(_0x34f679){return _['some'](_0x2946a1,[_0xf780('0x41'),_0x34f679])?_0x34f679:undefined;})[_0xf780('0x5c')]()[_0xf780('0x47')]();if(_0x143665[_0xf780('0x14')]>0x0){_0x143665[_0xf780('0x5d')](function(_0x544458){if(_0x544458===_0x5b60e7){_0x41ee46['and']('i.'+_0x5b60e7+_0xf780('0x17'),[][_0xf780('0x5e')](_0x189717[_0x544458]));}else if(_0x544458===_0xf780('0x5f')){var _0x3fead1=JSON['parse'](_0x189717[_0x544458])[_0xf780('0x60')];var _0x476354=JSON[_0xf780('0x61')](_0x189717[_0x544458])[_0xf780('0x62')];_0x41ee46[_0xf780('0x4b')](_0xf780('0x63'),_0x3fead1,_0x476354);}else{if(_0x189717[_0x544458]==='null'){_0x41ee46[_0xf780('0x4b')]('i.'+_0x544458+_0xf780('0x64'));}else{_0x41ee46['and']('i.'+_0x544458+_0xf780('0x65'),_0x189717[_0x544458]);}}});}return _0x41ee46;}function parseQueryParameters(_0x1f1907,_0x276a30,_0x1429cf){var _0xad692a=getSqlClauses();return Promise[_0xf780('0x66')]()[_0xf780('0x67')](function(){return parseModelFields(_0x1f1907,_0x276a30,_0x1429cf);})[_0xf780('0x67')](function(_0x29af91){_0xad692a[_0xf780('0x68')][_0xf780('0x4b')](_0x29af91);return parseReadParameter(_0x276a30[_0xf780('0x4a')]);})['then'](function(_0x22745e){_0xad692a['read'][_0xf780('0x4b')](_0x22745e);return parseTagParameter(_0x276a30[_0xf780('0x69')]);})['then'](function(_0x4dee75){_0xad692a['tags'][_0xf780('0x6a')][_0xf780('0x4b')](_0x4dee75);return parseSearchFilter(_0x1f1907,_0x276a30[_0xf780('0x6b')]);})['then'](function(_0x586ce6){_0xad692a['filter']=_0x586ce6;return _0xad692a;});}function checkAccountsRestrictions(_0x1d3cf1,_0x5ec8e6,_0x28b057){var _0xcffb55=utils[_0xf780('0x1a')](_0x1d3cf1);var _0x593c17=_0xf780('0x6c')+_['capitalize'](_0x1d3cf1)+(_0x1d3cf1===_0xf780('0x6d')?_0xf780('0x6e'):'Accounts');var _0x27e4b3=squel[_0xf780('0x28')]();return Promise[_0xf780('0x66')]()[_0xf780('0x67')](function(){if(_0x28b057[_0xf780('0x8')]&&_0x5ec8e6[_0xf780('0x6')]===_0xf780('0x7')){return _0x5ec8e6[_0x593c17]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x5bfa4a){if(_0x5bfa4a){if(_0x5bfa4a[_0xf780('0x14')]===0x0){_0x27e4b3[_0xf780('0x4b')]('i.'+_0xcffb55+'\x20IS\x20NULL');}else{_0x27e4b3[_0xf780('0x4b')]('i.'+_0xcffb55+_0xf780('0x17'),_[_0xf780('0x18')](_0x5bfa4a,'id'));}}else if(!_0x28b057[_0xcffb55]){_0x27e4b3[_0xf780('0x4b')]('i.'+_0xcffb55+_0xf780('0x6f'));}})['then'](function(){return _0x27e4b3;});}function getClosedOrderClause(_0x5c29b8,_0x45f9a6){var _0x5f052e='';var _0xad2d7e=['i.thirdDisposition',_0xf780('0x70'),_0xf780('0x71')];if(_0x5c29b8===_0xf780('0x38')){_0xad2d7e[_0xf780('0x72')](_0xf780('0x73'));}if(_0x45f9a6['closed']==='0'&&_0x5c29b8===_0xf780('0x38')){_0x5f052e=_0xf780('0x73');}else{if(_0x45f9a6[_0xf780('0x74')]==='1'){_0xad2d7e['shift']();}_0x5f052e='CONCAT_WS(\x27\x27,\x20'+_0xad2d7e[_0xf780('0x75')](',\x20')+')';}return _0x5f052e;}function getFilteredInteractions(_0x2eb89f,_0x26541b,_0x56853b,_0x49f751){var _0x23ac0a=utils[_0xf780('0x1b')](_0x2eb89f);var _0x21e7be=_[_0xf780('0x76')](_0x2eb89f)+_0xf780('0x77');var _0x31d999=[];var _0x4cd6b7=getTagsQuery();var _0x6b14e8={'type':db[_0xf780('0x78')][_0xf780('0x79')]['SELECT'],'raw':!![]};var _0x58f573=[];var _0x1bcf9f=[];return db['sequelize'][_0xf780('0x7a')](_0x4cd6b7[_0xf780('0x7b')](),_0x6b14e8)[_0xf780('0x67')](function(_0x337465){_0x31d999=_[_0xf780('0x7c')](_0x337465,'id');_0x6b14e8=_[_0xf780('0x7d')](_0x6b14e8,{'model':db[_0x21e7be],'mapToModel':!![],'nest':!![]});if(_0x56853b[_0xf780('0x68')]){_0x49f751[_0xf780('0x7e')][_0xf780('0x5d')](function(_0x38e8cf){_0x26541b[_0xf780('0xa')]('i.'+_0x38e8cf);});}else{_0x26541b[_0xf780('0xa')](_0xf780('0x7f'),_0xf780('0x49'));_0x26541b[_0xf780('0xa')](_0xf780('0x80'),'Account.key');_0x26541b[_0xf780('0xa')]('a.mandatoryDisposition',_0xf780('0x81'));if(_0x2eb89f===_0xf780('0x38')){_0x26541b[_0xf780('0xa')]('a.email',_0xf780('0x82'));_0x26541b[_0xf780('0xa')](_0xf780('0x83'),_0xf780('0x84'));_0x26541b[_0xf780('0xa')](_0xf780('0x85'));_0x26541b[_0xf780('0xa')](_0xf780('0x86'));_0x26541b[_0xf780('0xa')](_0xf780('0x87'));_0x26541b[_0xf780('0xa')]('i.closed');_0x26541b[_0xf780('0xa')]('i.closedAt');_0x26541b['field'](_0xf780('0x88'));_0x26541b['field'](_0xf780('0x89'));_0x26541b[_0xf780('0xa')]('i.lastMsgDirection');_0x26541b[_0xf780('0xa')](_0xf780('0x8a'));_0x26541b[_0xf780('0xa')]('i.disposition');_0x26541b[_0xf780('0xa')](_0xf780('0x70'));_0x26541b[_0xf780('0xa')](_0xf780('0x8b'));_0x26541b[_0xf780('0xa')]('i.substatus');_0x26541b[_0xf780('0xa')](_0xf780('0x8c'));_0x26541b[_0xf780('0xa')]('i.ContactId');_0x26541b[_0xf780('0xa')]('i.MailAccountId');_0x26541b[_0xf780('0xa')](_0xf780('0x8d'));}else if(_0x2eb89f===_0xf780('0x34')){_0x26541b[_0xf780('0xa')](_0xf780('0x8e'),_0xf780('0x84'));}else{_0x26541b[_0xf780('0xa')]('CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xf780('0x84'));}if(_0x2eb89f!==_0xf780('0x38')){_0x26541b[_0xf780('0xa')]('i.*');}_0x26541b[_0xf780('0xa')](_0xf780('0x8f'),_0xf780('0x90'));_0x26541b['field'](_0xf780('0x91'),_0xf780('0x92'));_0x26541b[_0xf780('0xa')](_0xf780('0x93'),'Contact.email');_0x26541b[_0xf780('0xa')](_0xf780('0x94'),_0xf780('0x95'));_0x26541b[_0xf780('0xa')]('c.mobile',_0xf780('0x96'));_0x26541b[_0xf780('0xa')](_0xf780('0x97'),_0xf780('0x98'));_0x26541b['field'](_0xf780('0x99'),'Owner.fullname');_0x26541b[_0xf780('0xa')](_0xf780('0x9a'),'Owner.internal');_0x26541b[_0xf780('0xa')](_0xf780('0x9b'),_0xf780('0x9c'));}if(_0x49f751[_0xf780('0x9d')]){_0x26541b[_0xf780('0x9d')](_0x49f751[_0xf780('0x9d')]);}if(_0x49f751['offset']){_0x26541b['offset'](_0x49f751[_0xf780('0x9e')]);}return db['sequelize'][_0xf780('0x7a')](_0x26541b['toString'](),_0x6b14e8);})[_0xf780('0x67')](function(_0xde8c1b){_0x58f573=_0xde8c1b;var _0x449482=getUsersQuery(_0x2eb89f,_0x58f573);return db[_0xf780('0x9f')][_0xf780('0x7a')](_0x449482[_0xf780('0x7b')](),_0x6b14e8);})[_0xf780('0x67')](function(_0x43c98c){_0x1bcf9f=_['groupBy'](_0x43c98c,_0x23ac0a);if(_0x2eb89f==='mail'){return db[_0xf780('0xa0')][_0xf780('0xa1')]({'attributes':[_0xf780('0xa2')],'raw':!![]});}})[_0xf780('0x67')](function(_0x2d8dcb){var _0x5d5108=_0x2d8dcb?_0x2d8dcb[_0xf780('0xa2')]:undefined;var _0x231ca5=_0x58f573['map'](function(_0x14c799){return updateInteraction(_0x14c799,_0x31d999,_0x1bcf9f,_0x5d5108);});return Promise[_0xf780('0xa3')](_0x231ca5);});}function countFilteredInteractions(_0x1c49f4,_0xe8c5e9){var _0xbdbd2c=_0x1c49f4[_0xf780('0xa4')]();_0xbdbd2c['field'](_0xf780('0xa5'));_0xbdbd2c[_0xf780('0xa')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');var _0x24e0dd=utils[_0xf780('0x29')](_0xe8c5e9);if(!_[_0xf780('0xa6')](_0x24e0dd)){_0xbdbd2c[_0xf780('0x15')]('t.id\x20IN\x20?',_0x24e0dd);}var _0xeef304={'type':db[_0xf780('0x78')][_0xf780('0x79')][_0xf780('0xa7')],'raw':!![]};return db[_0xf780('0x9f')][_0xf780('0x7a')](_0xbdbd2c[_0xf780('0x7b')](),_0xeef304);}module[_0xf780('0xa8')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
+var _0xf72b=['offset','toString','Setting','findOne','clone','COUNT(*)','t.id\x20IN\x20?','exports','lodash','../parsers/advancedSearch','./update-interaction','updateInteraction','../../mysqldb','role','agent','search','select','field','from','tools_tags','getInteractionFK','user_has_','_interactions','u.id','u.fullname','ui.','u.id\x20=\x20ui.UserId','length','where','\x20IN\x20?','map','getInteractionsTables','getAccountFK','interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','users','accounts','a.id\x20=\x20i.','messages','\x20=\x20i.id','it.','t.id\x20=\x20it.TagId','expr','getSelectedTags','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','unreadMessages\x20{OPERATOR}\x200','replace','{OPERATOR}','isNumeric','i.id\x20LIKE\x20?','sms','whatsapp','includes','i.phone\x20LIKE\x20?','fax','openchannel','i.from\x20LIKE\x20?','mail','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','sqlOperator','conditions','name','buildExpression','default','text','start','and','operator','$substring','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','value','contact','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','find','ContactId','end','ids','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','UserId','type','user','body','some','compact','createdAt','parse','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','resolve','then','read','tags','Websites','Accounts','\x20IS\x20NOT\x20NULL','i.thirdDisposition','i.secondDisposition','i.disposition','unshift','i.substatus','closed','shift','CONCAT_WS(\x27\x27,\x20','join','capitalize','Interaction','QueryTypes','SELECT','sequelize','query','merge','fields','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','Account.key','Account.mandatoryDisposition','a.email','Account.email','CASE\x20WHEN\x20i.to\x20IS\x20NOT\x20NULL\x20AND\x20i.to\x20<>\x20\x27\x27\x20AND\x20i.to\x20NOT\x20LIKE\x20CONCAT(\x27%\x27,\x20a.email,\x20\x27%\x27)\x20THEN\x20TRIM(SUBSTRING_INDEX(i.to,\x20\x27<\x27,\x201))\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','contactName','i.createdAt','i.updatedAt','i.closed','i.closedAt','i.lastMsgDirection','i.to','i.ContactId','i.MailAccountId','i.UserId','CASE\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','Owner.internal','TagIds','limit'];(function(_0x1ebe53,_0x35cc29){var _0x56cb47=function(_0x1fc9fc){while(--_0x1fc9fc){_0x1ebe53['push'](_0x1ebe53['shift']());}};_0x56cb47(++_0x35cc29);}(_0xf72b,0x1d9));var _0xbf72=function(_0xade692,_0x2886c3){_0xade692=_0xade692-0x0;var _0x41ddaa=_0xf72b[_0xade692];return _0x41ddaa;};'use strict';var _=require(_0xbf72('0x0'));var squel=require('squel');var as=require(_0xbf72('0x1'));var qs=require('../parsers/qs');var updateInteraction=require(_0xbf72('0x2'))[_0xbf72('0x3')];var utils=require('./utils');var db=require(_0xbf72('0x4'))['db'];function skipInteractionsQuery(_0x550a9e,_0x37afc8,_0x3d3a6f){var _0x3b2fa6=![];var _0x2b8440=utils['getAccountFK'](_0x550a9e);if(_0x37afc8[_0xbf72('0x5')]===_0xbf72('0x6')&&!_0x3d3a6f[_0xbf72('0x7')]&&!_0x3d3a6f[_0x2b8440]){_0x3b2fa6=!![];}return _0x3b2fa6;}function getTagsQuery(){return squel[_0xbf72('0x8')]()[_0xbf72('0x9')]('id')[_0xbf72('0x9')]('name')[_0xbf72('0x9')]('color')[_0xbf72('0xa')](_0xbf72('0xb'));}function getUsersQuery(_0x4d211c,_0xaec095){var _0x1c3453=utils[_0xbf72('0xc')](_0x4d211c);var _0x145acb=_0xbf72('0xd')+_0x4d211c+_0xbf72('0xe');var _0x14f6e6=squel[_0xbf72('0x8')]()['field'](_0xbf72('0xf'))[_0xbf72('0x9')](_0xbf72('0x10'))['field'](_0xbf72('0x11')+_0x1c3453)['from'](_0x145acb,'ui')['left_join']('users','u',_0xbf72('0x12'));if(_0xaec095[_0xbf72('0x13')]>0x0){_0x14f6e6[_0xbf72('0x14')](_0xbf72('0x11')+_0x1c3453+_0xbf72('0x15'),_[_0xbf72('0x16')](_0xaec095,'id'));}return _0x14f6e6;}function getInteractionsQuery(_0x566075){var _0x266ce2=utils[_0xbf72('0x17')](_0x566075);var _0x2a8609=utils[_0xbf72('0x18')](_0x566075);var _0x27dadc=utils['getInteractionFK'](_0x566075);return squel['select']()[_0xbf72('0xa')](_0x266ce2[_0xbf72('0x19')],'i')[_0xbf72('0x1a')](_0xbf72('0x1b'),'c',_0xbf72('0x1c'))[_0xbf72('0x1a')](_0xbf72('0x1d'),'o','o.id\x20=\x20i.UserId')[_0xbf72('0x1a')](_0x266ce2[_0xbf72('0x1e')],'a',_0xbf72('0x1f')+_0x2a8609)[_0xbf72('0x1a')](_0x266ce2[_0xbf72('0x20')],'me','me.'+_0x27dadc+_0xbf72('0x21'))[_0xbf72('0x1a')](_0x266ce2['interactionsTags'],'it',_0xbf72('0x22')+_0x27dadc+_0xbf72('0x21'))[_0xbf72('0x1a')]('tools_tags','t',_0xbf72('0x23'));}function getSqlClauses(){var _0x428361={'body':squel[_0xbf72('0x24')](),'contact':squel[_0xbf72('0x24')](),'default':squel['expr'](),'fields':squel[_0xbf72('0x24')](),'filter':squel[_0xbf72('0x24')](),'read':squel[_0xbf72('0x24')](),'tags':{'clause':squel['expr'](),'ids':null},'user':squel[_0xbf72('0x24')]()};return _0x428361;}function parseTagParameter(_0xd8fefc){var _0x3df816=squel[_0xbf72('0x24')]();if(_0xd8fefc){var _0x15d60d=utils[_0xbf72('0x25')](_0xd8fefc);_0x15d60d[_0xbf72('0x26')](function(_0x25ecdf){_0x3df816['or'](_0xbf72('0x27'),'%,'+_0x25ecdf+',%');});}return _0x3df816;}function parseReadParameter(_0x92307f){var _0x280d7a='';if(_0x92307f){_0x280d7a=_0xbf72('0x28');if(_0x92307f==='1'){_0x280d7a=_0x280d7a[_0xbf72('0x29')](_0xbf72('0x2a'),'=');}else{_0x280d7a=_0x280d7a[_0xbf72('0x29')]('{OPERATOR}','>');}}return _0x280d7a;}function parseSearchFilter(_0x708fcb,_0x475a54){var _0x30f606=squel[_0xbf72('0x24')]();if(_0x475a54){var _0xb1ee4e=_0x475a54[_0xbf72('0x29')]('\x5c','\x5c\x5c')[_0xbf72('0x29')](/'/g,'\x27\x27');if(qs[_0xbf72('0x2b')](_0xb1ee4e)){_0x30f606['or'](_0xbf72('0x2c'),_0xb1ee4e+'%');if([_0xbf72('0x2d'),_0xbf72('0x2e')][_0xbf72('0x2f')](_0x708fcb)){_0x30f606['or'](_0xbf72('0x30'),_0xb1ee4e+'%');}else if(_0x708fcb===_0xbf72('0x31')){_0x30f606['or']('i.fax\x20LIKE\x20?',_0xb1ee4e+'%');}else if(_0x708fcb===_0xbf72('0x32')){_0x30f606['or'](_0xbf72('0x33'),_0xb1ee4e+'%');}}else if(_0x708fcb===_0xbf72('0x34')&&qs['isEmail'](_0xb1ee4e)){_0x30f606['or']('c.email\x20LIKE\x20?',_0xb1ee4e+'%');}else{if(_0x708fcb==='mail'){_0x30f606['or'](_0xbf72('0x35'),qs[_0xbf72('0x36')](_0xb1ee4e))['or'](_0xbf72('0x37'),qs['getFullTextValue'](_0xb1ee4e));}else{if(_0x708fcb!==_0xbf72('0x31')){_0x30f606['or'](_0xbf72('0x38'),qs['getFullTextValue'](_0xb1ee4e));}_0x30f606['or'](_0xbf72('0x39'),_0xb1ee4e+'%');}}}return _0x30f606;}function parseAdvancedSearchFilter(_0x500fee,_0x13ab4f){var _0x202497=getSqlClauses();var _0x5c2f60=as['parseSearch'](_0x500fee);var _0x424669=_0x5c2f60[_0xbf72('0x3a')];for(var _0x509aa7=0x0;_0x509aa7<_0x5c2f60[_0xbf72('0x3b')][_0xbf72('0x13')];_0x509aa7++){var _0x26c91c=_0x5c2f60[_0xbf72('0x3b')][_0x509aa7];var _0x19b5ba='i';var _0x269b8e=_['find'](_0x13ab4f,[_0xbf72('0x3c'),_0x26c91c[_0xbf72('0x9')]]);if(_0x269b8e){var _0x46d590=as[_0xbf72('0x3d')](_0x19b5ba,_0x269b8e['type'],_0x26c91c);_0x202497[_0xbf72('0x3e')][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590['value'][_0xbf72('0x40')],_0x46d590['value']['end']);}else{switch(_0x26c91c['field']){case'unreadMessages':var _0x2a94b4=parseReadParameter(_0x26c91c['value']);_0x202497['read'][_0xbf72('0x41')](_0x2a94b4);break;case'Contact':if(_0x26c91c[_0xbf72('0x42')]===_0xbf72('0x43')){if(_0x26c91c['value'][_0xbf72('0x44')]('\x20')['length']>0x1){_0x202497['contact'][_0x424669](_0xbf72('0x45'),qs[_0xbf72('0x36')](_0x26c91c[_0xbf72('0x46')]),null);}else{var _0x259c7d='%'+_0x26c91c[_0xbf72('0x46')]+'%';_0x202497[_0xbf72('0x47')][_0x424669](_0xbf72('0x48'),_0x259c7d,_0x259c7d,_0x259c7d);}}else{_0x269b8e=_[_0xbf72('0x49')](_0x13ab4f,['name',_0xbf72('0x4a')]);_0x26c91c[_0xbf72('0x9')]='ContactId';_0x46d590=as[_0xbf72('0x3d')](_0x19b5ba,_0x269b8e['type'],_0x26c91c);_0x202497['contact'][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x40')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x4b')]);}break;case'Tag':var _0x58769f=_0x26c91c['value'][_0xbf72('0x44')](',')[_0xbf72('0x16')](function(_0x3871d0){return Number(_0x3871d0);});var _0x2a679a=parseTagParameter(_0x58769f);_0x202497['tags']['clause'][_0xbf72('0x41')](_0x2a679a);_0x202497['tags'][_0xbf72('0x4c')]=_0x58769f;break;case _0xbf72('0x4d'):if(_0x26c91c[_0xbf72('0x42')]===_0xbf72('0x43')){_0x202497['user'][_0x424669](_0xbf72('0x4e'),'%'+_0x26c91c[_0xbf72('0x46')]+'%',null);}else{_0x269b8e=_[_0xbf72('0x49')](_0x13ab4f,[_0xbf72('0x3c'),'UserId']);_0x26c91c[_0xbf72('0x9')]=_0xbf72('0x4f');_0x46d590=as['buildExpression'](_0x19b5ba,_0x269b8e[_0xbf72('0x50')],_0x26c91c);_0x202497[_0xbf72('0x51')][_0x424669](_0x46d590[_0xbf72('0x3f')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x40')],_0x46d590[_0xbf72('0x46')][_0xbf72('0x4b')]);}break;case'body':case'plainBody':_0x46d590=as['buildExpression']('me',null,_0x26c91c);_0x202497[_0xbf72('0x52')][_0x424669](_0x46d590['text'],_0x46d590[_0xbf72('0x46')]['start'],_0x46d590['value']['end']);break;}}}return _0x202497;}function parseModelFields(_0x9f94ea,_0x15a271,_0x15e94f){var _0x3304b1=utils[_0xbf72('0x18')](_0x9f94ea);var _0x2f7f22=squel['expr']();var _0x3ffa72=_(_0x15a271)['keys']()[_0xbf72('0x16')](function(_0x5afd24){return _[_0xbf72('0x53')](_0x15e94f,[_0xbf72('0x3c'),_0x5afd24])?_0x5afd24:undefined;})[_0xbf72('0x54')]()[_0xbf72('0x46')]();if(_0x3ffa72[_0xbf72('0x13')]>0x0){_0x3ffa72[_0xbf72('0x26')](function(_0x578b07){if(_0x578b07===_0x3304b1){_0x2f7f22[_0xbf72('0x41')]('i.'+_0x3304b1+_0xbf72('0x15'),[]['concat'](_0x15a271[_0x578b07]));}else if(_0x578b07===_0xbf72('0x55')){var _0x2f9816=JSON[_0xbf72('0x56')](_0x15a271[_0x578b07])['$gte'];var _0x312eb6=JSON[_0xbf72('0x56')](_0x15a271[_0x578b07])[_0xbf72('0x57')];_0x2f7f22[_0xbf72('0x41')](_0xbf72('0x58'),_0x2f9816,_0x312eb6);}else{if(_0x15a271[_0x578b07]==='null'){_0x2f7f22[_0xbf72('0x41')]('i.'+_0x578b07+_0xbf72('0x59'));}else{_0x2f7f22['and']('i.'+_0x578b07+_0xbf72('0x5a'),_0x15a271[_0x578b07]);}}});}return _0x2f7f22;}function parseQueryParameters(_0x5e2dcd,_0x58080b,_0xf00ac2){var _0x25386f=getSqlClauses();return Promise[_0xbf72('0x5b')]()[_0xbf72('0x5c')](function(){return parseModelFields(_0x5e2dcd,_0x58080b,_0xf00ac2);})[_0xbf72('0x5c')](function(_0x527061){_0x25386f['fields']['and'](_0x527061);return parseReadParameter(_0x58080b[_0xbf72('0x5d')]);})[_0xbf72('0x5c')](function(_0x4573fe){_0x25386f[_0xbf72('0x5d')]['and'](_0x4573fe);return parseTagParameter(_0x58080b['tag']);})[_0xbf72('0x5c')](function(_0x18ecf7){_0x25386f[_0xbf72('0x5e')]['clause'][_0xbf72('0x41')](_0x18ecf7);return parseSearchFilter(_0x5e2dcd,_0x58080b['filter']);})[_0xbf72('0x5c')](function(_0x3da80c){_0x25386f['filter']=_0x3da80c;return _0x25386f;});}function checkAccountsRestrictions(_0x2b3c34,_0x441908,_0x55ac06){var _0x3c3e31=utils[_0xbf72('0x18')](_0x2b3c34);var _0xa50217='get'+_['capitalize'](_0x2b3c34)+(_0x2b3c34==='chat'?_0xbf72('0x5f'):_0xbf72('0x60'));var _0x28eb87=squel[_0xbf72('0x24')]();return Promise[_0xbf72('0x5b')]()[_0xbf72('0x5c')](function(){if(_0x55ac06[_0xbf72('0x7')]&&_0x441908[_0xbf72('0x5')]===_0xbf72('0x6')){return _0x441908[_0xa50217]({'attributes':['id'],'raw':!![]});}})['then'](function(_0x39d694){if(_0x39d694){if(_0x39d694[_0xbf72('0x13')]===0x0){_0x28eb87['and']('i.'+_0x3c3e31+_0xbf72('0x59'));}else{_0x28eb87[_0xbf72('0x41')]('i.'+_0x3c3e31+_0xbf72('0x15'),_[_0xbf72('0x16')](_0x39d694,'id'));}}else if(!_0x55ac06[_0x3c3e31]){_0x28eb87[_0xbf72('0x41')]('i.'+_0x3c3e31+_0xbf72('0x61'));}})[_0xbf72('0x5c')](function(){return _0x28eb87;});}function getClosedOrderClause(_0x433d32,_0x26e2ec){var _0x537398='';var _0x56cfe1=[_0xbf72('0x62'),_0xbf72('0x63'),_0xbf72('0x64')];if(_0x433d32===_0xbf72('0x34')){_0x56cfe1[_0xbf72('0x65')](_0xbf72('0x66'));}if(_0x26e2ec[_0xbf72('0x67')]==='0'&&_0x433d32===_0xbf72('0x34')){_0x537398='i.substatus';}else{if(_0x26e2ec[_0xbf72('0x67')]==='1'){_0x56cfe1[_0xbf72('0x68')]();}_0x537398=_0xbf72('0x69')+_0x56cfe1[_0xbf72('0x6a')](',\x20')+')';}return _0x537398;}function getFilteredInteractions(_0x3d51a9,_0x41c207,_0x1ba67d,_0x59495b){var _0x428902=utils[_0xbf72('0xc')](_0x3d51a9);var _0x23550f=_[_0xbf72('0x6b')](_0x3d51a9)+_0xbf72('0x6c');var _0x107391=[];var _0x872fa7=getTagsQuery();var _0x25b7ea={'type':db['Sequelize'][_0xbf72('0x6d')][_0xbf72('0x6e')],'raw':!![]};var _0x17ab12=[];var _0x5472db=[];return db[_0xbf72('0x6f')][_0xbf72('0x70')](_0x872fa7['toString'](),_0x25b7ea)[_0xbf72('0x5c')](function(_0x287198){_0x107391=_['keyBy'](_0x287198,'id');_0x25b7ea=_[_0xbf72('0x71')](_0x25b7ea,{'model':db[_0x23550f],'mapToModel':!![],'nest':!![]});if(_0x1ba67d[_0xbf72('0x72')]){_0x59495b['attributes'][_0xbf72('0x26')](function(_0x19d741){_0x41c207[_0xbf72('0x9')]('i.'+_0x19d741);});}else{_0x41c207[_0xbf72('0x9')](_0xbf72('0x73'),_0xbf72('0x74'));_0x41c207[_0xbf72('0x9')]('a.key',_0xbf72('0x75'));_0x41c207[_0xbf72('0x9')]('a.mandatoryDisposition',_0xbf72('0x76'));if(_0x3d51a9==='mail'){_0x41c207['field'](_0xbf72('0x77'),_0xbf72('0x78'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x79'),_0xbf72('0x7a'));_0x41c207[_0xbf72('0x9')]('i.id');_0x41c207[_0xbf72('0x9')](_0xbf72('0x7b'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x7c'));_0x41c207['field'](_0xbf72('0x7d'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x7e'));_0x41c207[_0xbf72('0x9')]('i.attach');_0x41c207[_0xbf72('0x9')]('i.lastMsgAt');_0x41c207[_0xbf72('0x9')](_0xbf72('0x7f'));_0x41c207[_0xbf72('0x9')]('i.subject');_0x41c207[_0xbf72('0x9')](_0xbf72('0x64'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x63'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x62'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x66'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x80'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x81'));_0x41c207['field'](_0xbf72('0x82'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x83'));}else if(_0x3d51a9==='openchannel'){_0x41c207[_0xbf72('0x9')]('CASE\x20WHEN\x20i.from\x20IS\x20NOT\x20NULL\x20AND\x20i.from\x20<>\x20\x27\x27\x20THEN\x20i.from\x20WHEN\x20(c.firstName\x20IS\x20NOT\x20NULL\x20AND\x20c.firstName\x20<>\x20\x27\x27)\x20OR\x20(c.lastName\x20IS\x20NOT\x20NULL\x20AND\x20c.lastName\x20<>\x20\x27\x27)\x20THEN\x20CONCAT(IFNULL(c.firstName,\x20\x27\x27),\x20\x27\x20\x27,\x20IFNULL(c.lastName,\x20\x27\x27))\x20ELSE\x20\x27Unknown\x27\x20END',_0xbf72('0x7a'));}else{_0x41c207[_0xbf72('0x9')](_0xbf72('0x84'),_0xbf72('0x7a'));}if(_0x3d51a9!==_0xbf72('0x34')){_0x41c207[_0xbf72('0x9')]('i.*');}_0x41c207[_0xbf72('0x9')]('c.firstName',_0xbf72('0x85'));_0x41c207['field'](_0xbf72('0x86'),_0xbf72('0x87'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x88'),_0xbf72('0x89'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8a'),_0xbf72('0x8b'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8c'),_0xbf72('0x8d'));_0x41c207[_0xbf72('0x9')](_0xbf72('0x8e'),_0xbf72('0x8f'));_0x41c207[_0xbf72('0x9')]('o.fullname','Owner.fullname');_0x41c207[_0xbf72('0x9')]('o.internal',_0xbf72('0x90'));_0x41c207[_0xbf72('0x9')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0xbf72('0x91'));}if(_0x59495b[_0xbf72('0x92')]){_0x41c207[_0xbf72('0x92')](_0x59495b['limit']);}if(_0x59495b[_0xbf72('0x93')]){_0x41c207['offset'](_0x59495b[_0xbf72('0x93')]);}return db[_0xbf72('0x6f')]['query'](_0x41c207[_0xbf72('0x94')](),_0x25b7ea);})[_0xbf72('0x5c')](function(_0x33870e){_0x17ab12=_0x33870e;var _0x5d7c8f=getUsersQuery(_0x3d51a9,_0x17ab12);return db[_0xbf72('0x6f')][_0xbf72('0x70')](_0x5d7c8f[_0xbf72('0x94')](),_0x25b7ea);})[_0xbf72('0x5c')](function(_0x55b183){_0x5472db=_['groupBy'](_0x55b183,_0x428902);if(_0x3d51a9===_0xbf72('0x34')){return db[_0xbf72('0x95')][_0xbf72('0x96')]({'attributes':['enableEmailPreview'],'raw':!![]});}})[_0xbf72('0x5c')](function(_0x47a484){var _0x444330=_0x47a484?_0x47a484['enableEmailPreview']:undefined;var _0x3d12ca=_0x17ab12[_0xbf72('0x16')](function(_0x1618ec){return updateInteraction(_0x1618ec,_0x107391,_0x5472db,_0x444330);});return Promise['all'](_0x3d12ca);});}function countFilteredInteractions(_0x311478,_0x242e07){var _0x4c82c4=_0x311478[_0xbf72('0x97')]();_0x4c82c4['field'](_0xbf72('0x98'));_0x4c82c4[_0xbf72('0x9')](_0xbf72('0x73'),_0xbf72('0x74'));var _0x464ef0=utils[_0xbf72('0x25')](_0x242e07);if(!_['isEmpty'](_0x464ef0)){_0x4c82c4[_0xbf72('0x14')](_0xbf72('0x99'),_0x464ef0);}var _0x13aa56={'type':db['Sequelize'][_0xbf72('0x6d')][_0xbf72('0x6e')],'raw':!![]};return db['sequelize']['query'](_0x4c82c4['toString'](),_0x13aa56);}module[_0xbf72('0x9a')]={'checkAccountsRestrictions':checkAccountsRestrictions,'countFilteredInteractions':countFilteredInteractions,'getClosedOrderClause':getClosedOrderClause,'getFilteredInteractions':getFilteredInteractions,'getInteractionsQuery':getInteractionsQuery,'parseAdvancedSearchFilter':parseAdvancedSearchFilter,'parseQueryParameters':parseQueryParameters,'skipInteractionsQuery':skipInteractionsQuery};
\ No newline at end of file
index d5dca48..4493949 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7761=['plainBody','-id','then','lastMsgText','trimStart','catch','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','split','forEach','push','waiting','talking','answered','unmanaged','abandoned','total','disposition','UserId','findOne','out'];(function(_0x37d686,_0x12888d){var _0xafbb57=function(_0x1ed44d){while(--_0x1ed44d){_0x37d686['push'](_0x37d686['shift']());}};_0xafbb57(++_0x12888d);}(_0x7761,0x15b));var _0x1776=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x7761[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x1776('0x0'));var db=require(_0x1776('0x1'))['db'];function getInteractionUsers(_0x4f7906,_0x515523){return new Promise(function(_0x543fd6,_0x14fcb5){try{var _0x3a7409=[];if(_0x515523[_0x4f7906]){_0x3a7409=_0x515523[_0x4f7906][_0x1776('0x2')](function(_0x405958){return{'id':_0x405958['id'],'fullname':_0x405958[_0x1776('0x3')]};});}return _0x543fd6(_0x3a7409);}catch(_0x5e0686){_0x14fcb5(_0x5e0686);}});}function getInteractionTags(_0x266d9f,_0x104fe3){var _0x16ba0e=[];if(_0x266d9f){_0x266d9f[_0x1776('0x4')](',')[_0x1776('0x5')](function(_0x256393){_0x16ba0e[_0x1776('0x6')](_0x104fe3[_0x256393]);});}return _0x16ba0e;}function updateWaitingCounter(_0x45d865){if(_0x45d865[_0x1776('0x7')]){_0x45d865[_0x1776('0x7')]-=0x1;}}function updateInteractionCounters(_0x4f1346){_0x4f1346[_0x1776('0x7')]=0x0;_0x4f1346[_0x1776('0x8')]=0x0;_0x4f1346[_0x1776('0x9')]=0x0;_0x4f1346[_0x1776('0xa')]=0x0;_0x4f1346[_0x1776('0xb')]=0x0;_0x4f1346[_0x1776('0xc')]=0x0;if(_0x4f1346['closed']){if(_0x4f1346[_0x1776('0xd')]===_0x1776('0xb')){_0x4f1346[_0x1776('0xb')]+=0x1;updateWaitingCounter(_0x4f1346);}if(_0x4f1346[_0x1776('0xe')]){_0x4f1346[_0x1776('0x9')]+=0x1;if(_0x4f1346[_0x1776('0x8')]){_0x4f1346['talking']-=0x1;}}else{if(_0x4f1346[_0x1776('0xd')]){_0x4f1346[_0x1776('0xa')]+=0x1;updateWaitingCounter(_0x4f1346);}}}else{if(!_0x4f1346['UserId']){_0x4f1346['waiting']+=0x1;}if(_0x4f1346[_0x1776('0xe')]){_0x4f1346[_0x1776('0x8')]+=0x1;updateWaitingCounter(_0x4f1346);}}_0x4f1346[_0x1776('0xc')]+=0x1;return _0x4f1346;}function getLastMessageText(_0x49560c){return db['MailMessage'][_0x1776('0xf')]({'where':{'$and':[{'MailInteractionId':_0x49560c['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0x1776('0x10')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x1776('0x11')],'order':_0x1776('0x12'),'raw':!![]})[_0x1776('0x13')](function(_0x5059c1){if(_0x5059c1&&_0x5059c1[_0x1776('0x11')]){_0x49560c[_0x1776('0x14')]=_[_0x1776('0x15')](_0x5059c1[_0x1776('0x11')]);}return _0x49560c;})[_0x1776('0x16')](function(_0x51cc72){throw _0x51cc72;});}exports['updateInteraction']=function(_0x2010b5,_0x336f35,_0x5571df,_0x33f3b7){return new Promise(function(_0x5bdfdc,_0x480e38){return getInteractionUsers(_0x2010b5['id'],_0x5571df)['then'](function(_0x152b6e){_0x2010b5[_0x1776('0x17')]=_0x152b6e;return getInteractionTags(_0x2010b5[_0x1776('0x18')],_0x336f35);})[_0x1776('0x13')](function(_0x37caa3){_0x2010b5[_0x1776('0x19')]=_0x37caa3;delete _0x2010b5[_0x1776('0x18')];return updateInteractionCounters(_0x2010b5);})['then'](function(_0x14bfc6){if(_0x33f3b7){return getLastMessageText(_0x14bfc6);}else{return _0x14bfc6;}})[_0x1776('0x13')](function(_0x425d6a){_0x5bdfdc(_0x425d6a);})[_0x1776('0x16')](function(_0x2b7835){_0x480e38(_0x2b7835);});});};
\ No newline at end of file
+var _0xb6db=['findOne','out','plainBody','-id','then','lastMsgText','trimStart','catch','updateInteraction','Users','TagIds','Tags','lodash','../../mysqldb','map','fullname','forEach','waiting','talking','unmanaged','abandoned','total','closed','UserId','answered','MailMessage'];(function(_0x29f2bb,_0x14a078){var _0x9b7a7e=function(_0x3ac1e4){while(--_0x3ac1e4){_0x29f2bb['push'](_0x29f2bb['shift']());}};_0x9b7a7e(++_0x14a078);}(_0xb6db,0x178));var _0xbb6d=function(_0x29ce46,_0x4827cb){_0x29ce46=_0x29ce46-0x0;var _0x2c7718=_0xb6db[_0x29ce46];return _0x2c7718;};'use strict';var _=require(_0xbb6d('0x0'));var db=require(_0xbb6d('0x1'))['db'];function getInteractionUsers(_0x3fb691,_0x672790){return new Promise(function(_0x190438,_0x8782ff){try{var _0x18dce6=[];if(_0x672790[_0x3fb691]){_0x18dce6=_0x672790[_0x3fb691][_0xbb6d('0x2')](function(_0x12d4f6){return{'id':_0x12d4f6['id'],'fullname':_0x12d4f6[_0xbb6d('0x3')]};});}return _0x190438(_0x18dce6);}catch(_0x1d8f7b){_0x8782ff(_0x1d8f7b);}});}function getInteractionTags(_0x2a0686,_0x50aa48){var _0x27d7b7=[];if(_0x2a0686){_0x2a0686['split'](',')[_0xbb6d('0x4')](function(_0x2ea0f0){_0x27d7b7['push'](_0x50aa48[_0x2ea0f0]);});}return _0x27d7b7;}function updateWaitingCounter(_0x5dffa5){if(_0x5dffa5[_0xbb6d('0x5')]){_0x5dffa5[_0xbb6d('0x5')]-=0x1;}}function updateInteractionCounters(_0x2065aa){_0x2065aa[_0xbb6d('0x5')]=0x0;_0x2065aa[_0xbb6d('0x6')]=0x0;_0x2065aa['answered']=0x0;_0x2065aa[_0xbb6d('0x7')]=0x0;_0x2065aa[_0xbb6d('0x8')]=0x0;_0x2065aa[_0xbb6d('0x9')]=0x0;if(_0x2065aa[_0xbb6d('0xa')]){if(_0x2065aa['disposition']===_0xbb6d('0x8')){_0x2065aa[_0xbb6d('0x8')]+=0x1;updateWaitingCounter(_0x2065aa);}if(_0x2065aa[_0xbb6d('0xb')]){_0x2065aa[_0xbb6d('0xc')]+=0x1;if(_0x2065aa[_0xbb6d('0x6')]){_0x2065aa[_0xbb6d('0x6')]-=0x1;}}else{if(_0x2065aa['disposition']){_0x2065aa[_0xbb6d('0x7')]+=0x1;updateWaitingCounter(_0x2065aa);}}}else{if(!_0x2065aa['UserId']){_0x2065aa[_0xbb6d('0x5')]+=0x1;}if(_0x2065aa[_0xbb6d('0xb')]){_0x2065aa[_0xbb6d('0x6')]+=0x1;updateWaitingCounter(_0x2065aa);}}_0x2065aa['total']+=0x1;return _0x2065aa;}function getLastMessageText(_0x5818ae){return db[_0xbb6d('0xd')][_0xbb6d('0xe')]({'where':{'$and':[{'MailInteractionId':_0x5818ae['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':_0xbb6d('0xf')},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0xbb6d('0x10')],'order':_0xbb6d('0x11'),'raw':!![]})[_0xbb6d('0x12')](function(_0x127bf6){if(_0x127bf6&&_0x127bf6[_0xbb6d('0x10')]){_0x5818ae[_0xbb6d('0x13')]=_[_0xbb6d('0x14')](_0x127bf6[_0xbb6d('0x10')]);}return _0x5818ae;})[_0xbb6d('0x15')](function(_0x134693){throw _0x134693;});}exports[_0xbb6d('0x16')]=function(_0x23116d,_0x421976,_0x404cba,_0x2e51c4){return new Promise(function(_0x39f3f7,_0x29381c){return getInteractionUsers(_0x23116d['id'],_0x404cba)[_0xbb6d('0x12')](function(_0x54ca0f){_0x23116d[_0xbb6d('0x17')]=_0x54ca0f;return getInteractionTags(_0x23116d[_0xbb6d('0x18')],_0x421976);})[_0xbb6d('0x12')](function(_0x518ace){_0x23116d[_0xbb6d('0x19')]=_0x518ace;delete _0x23116d[_0xbb6d('0x18')];return updateInteractionCounters(_0x23116d);})[_0xbb6d('0x12')](function(_0x401973){if(_0x2e51c4){return getLastMessageText(_0x401973);}else{return _0x401973;}})['then'](function(_0x5e5ae1){_0x39f3f7(_0x5e5ae1);})[_0xbb6d('0x15')](function(_0x43e724){_0x29381c(_0x43e724);});});};
\ No newline at end of file
index f43bb36..bff7923 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0c6=['info','catch','error','exports','../../mysqldb','mail-interactions','../../config/logger','fax-interactions','sms-interactions','whatsapp-interactions','capitalize','chat','Website','Account','InteractionId','upperFirst','unknown','websites','_interactions','_messages','user_has_','isArray','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','role','stringify','null','Interaction','findOne','update','then'];(function(_0x40b0f,_0x3783e5){var _0x39a923=function(_0x1464b7){while(--_0x1464b7){_0x40b0f['push'](_0x40b0f['shift']());}};_0x39a923(++_0x3783e5);}(_0xc0c6,0x64));var _0x6c0c=function(_0x4b5f1f,_0x1fee93){_0x4b5f1f=_0x4b5f1f-0x0;var _0x3bb747=_0xc0c6[_0x4b5f1f];return _0x3bb747;};'use strict';var _=require('lodash');var db=require(_0x6c0c('0x0'))['db'];var loggers={'openchannel':require('../../config/logger')('openchannel-interactions'),'mail':require('../../config/logger')(_0x6c0c('0x1')),'fax':require(_0x6c0c('0x2'))(_0x6c0c('0x3')),'sms':require(_0x6c0c('0x2'))(_0x6c0c('0x4')),'chat':require(_0x6c0c('0x2'))('chat-interactions'),'whatsapp':require(_0x6c0c('0x2'))(_0x6c0c('0x5'))};function getAccountFK(_0x495e0d){return _[_0x6c0c('0x6')](_0x495e0d)+(_0x495e0d===_0x6c0c('0x7')?_0x6c0c('0x8'):_0x6c0c('0x9'))+'Id';}function getInteractionFK(_0x3d2c73){return _[_0x6c0c('0x6')](_0x3d2c73)+_0x6c0c('0xa');}function getInteractionId(_0x1cb7c7,_0xc9bf15,_0x3a9bc9){if(_0x1cb7c7&&_0x1cb7c7[_[_0x6c0c('0xb')](_0x3a9bc9)+'InteractionId']){return _0x1cb7c7[_[_0x6c0c('0xb')](_0x3a9bc9)+_0x6c0c('0xa')];}else if(_0x1cb7c7&&_0x1cb7c7['id']){return _0x1cb7c7['id'];}else if(_0xc9bf15&&_0xc9bf15['id']){return _0xc9bf15['id'];}else{return _0x6c0c('0xc');}}function getInteractionsTables(_0x2fde58){return{'accounts':_0x2fde58+'_'+(_0x2fde58===_0x6c0c('0x7')?_0x6c0c('0xd'):'accounts'),'interactions':_0x2fde58+_0x6c0c('0xe'),'interactionsTags':_0x2fde58+'_interaction_has_tags','messages':_0x2fde58+_0x6c0c('0xf'),'userInteractions':_0x6c0c('0x10')+_0x2fde58+'_interactions'};}function getSelectedTags(_0xd58ffa){var _0x4bbf86=[];if(_0xd58ffa){_0x4bbf86=Array[_0x6c0c('0x11')](_0xd58ffa)?_0xd58ffa:[_0xd58ffa];}return _0x4bbf86;}function log(_0xbcaa6c,_0x289c96,_0x57266e,_0xbcc9ad,_0x4507b1,_0xa493b2){loggers[_0x4507b1[_0x6c0c('0x12')]()][_0xbcaa6c](_0x6c0c('0x13'),_0xa493b2[_0x6c0c('0x14')](),_0x289c96?_0x289c96['id']:null,_0x289c96?_0x289c96['name']:null,_0x289c96?_0x289c96[_0x6c0c('0x15')]:null,getInteractionId(_0x57266e,_0xbcc9ad,_0x4507b1),_0x57266e?JSON[_0x6c0c('0x16')](_0x57266e):_0x6c0c('0x17'));}function updateUser(_0x153614,_0x11d6c8,_0x3b5c9d,_0x27fbaf,_0x14dba1){db[_[_0x6c0c('0xb')](_0x27fbaf)+_0x6c0c('0x18')][_0x6c0c('0x19')]({'where':{'id':getInteractionId(_0x11d6c8,_0x3b5c9d,_0x27fbaf)}})['then'](function(_0x3df146){if(_0x3df146){return _0x3df146[_0x6c0c('0x1a')]({'UserId':_0x153614?_0x153614['id']:null});}})[_0x6c0c('0x1b')](function(_0x2194fb){if(_0x2194fb){log(_0x6c0c('0x1c'),_0x153614,_0x11d6c8,_0x3b5c9d,_0x27fbaf,_0x14dba1);}})[_0x6c0c('0x1d')](function(){log(_0x6c0c('0x1e'),_0x153614,_0x11d6c8,_0x3b5c9d,_0x27fbaf,_0x14dba1);});}module[_0x6c0c('0x1f')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
+var _0xddce=['name','role','stringify','null','findOne','then','info','catch','error','exports','lodash','../../mysqldb','../../config/logger','openchannel-interactions','mail-interactions','sms-interactions','whatsapp-interactions','Website','Account','capitalize','InteractionId','upperFirst','unknown','chat','accounts','_interaction_has_tags','_messages','user_has_','_interactions','toUpperCase'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xddce,0xdc));var _0xeddc=function(_0x149068,_0x5d816f){_0x149068=_0x149068-0x0;var _0x14a01c=_0xddce[_0x149068];return _0x14a01c;};'use strict';var _=require(_0xeddc('0x0'));var db=require(_0xeddc('0x1'))['db'];var loggers={'openchannel':require(_0xeddc('0x2'))(_0xeddc('0x3')),'mail':require(_0xeddc('0x2'))(_0xeddc('0x4')),'fax':require(_0xeddc('0x2'))('fax-interactions'),'sms':require(_0xeddc('0x2'))(_0xeddc('0x5')),'chat':require(_0xeddc('0x2'))('chat-interactions'),'whatsapp':require(_0xeddc('0x2'))(_0xeddc('0x6'))};function getAccountFK(_0x22f377){return _['capitalize'](_0x22f377)+(_0x22f377==='chat'?_0xeddc('0x7'):_0xeddc('0x8'))+'Id';}function getInteractionFK(_0x645d52){return _[_0xeddc('0x9')](_0x645d52)+_0xeddc('0xa');}function getInteractionId(_0x3f4004,_0x5e14aa,_0x1b5c17){if(_0x3f4004&&_0x3f4004[_['upperFirst'](_0x1b5c17)+'InteractionId']){return _0x3f4004[_[_0xeddc('0xb')](_0x1b5c17)+_0xeddc('0xa')];}else if(_0x3f4004&&_0x3f4004['id']){return _0x3f4004['id'];}else if(_0x5e14aa&&_0x5e14aa['id']){return _0x5e14aa['id'];}else{return _0xeddc('0xc');}}function getInteractionsTables(_0x15b05c){return{'accounts':_0x15b05c+'_'+(_0x15b05c===_0xeddc('0xd')?'websites':_0xeddc('0xe')),'interactions':_0x15b05c+'_interactions','interactionsTags':_0x15b05c+_0xeddc('0xf'),'messages':_0x15b05c+_0xeddc('0x10'),'userInteractions':_0xeddc('0x11')+_0x15b05c+_0xeddc('0x12')};}function getSelectedTags(_0x30c512){var _0x5bf0ca=[];if(_0x30c512){_0x5bf0ca=Array['isArray'](_0x30c512)?_0x30c512:[_0x30c512];}return _0x5bf0ca;}function log(_0x5bf434,_0x30c5e0,_0x134229,_0x3c7c2e,_0x3925b1,_0x407975){loggers[_0x3925b1['toLowerCase']()][_0x5bf434]('[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x407975[_0xeddc('0x13')](),_0x30c5e0?_0x30c5e0['id']:null,_0x30c5e0?_0x30c5e0[_0xeddc('0x14')]:null,_0x30c5e0?_0x30c5e0[_0xeddc('0x15')]:null,getInteractionId(_0x134229,_0x3c7c2e,_0x3925b1),_0x134229?JSON[_0xeddc('0x16')](_0x134229):_0xeddc('0x17'));}function updateUser(_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41){db[_[_0xeddc('0xb')](_0x217945)+'Interaction'][_0xeddc('0x18')]({'where':{'id':getInteractionId(_0x489ede,_0x45d2b9,_0x217945)}})[_0xeddc('0x19')](function(_0x1c320e){if(_0x1c320e){return _0x1c320e['update']({'UserId':_0x2b670d?_0x2b670d['id']:null});}})[_0xeddc('0x19')](function(_0x247846){if(_0x247846){log(_0xeddc('0x1a'),_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41);}})[_0xeddc('0x1b')](function(){log(_0xeddc('0x1c'),_0x2b670d,_0x489ede,_0x45d2b9,_0x217945,_0x240f41);});}module[_0xeddc('0x1d')]={'getAccountFK':getAccountFK,'getInteractionFK':getInteractionFK,'getInteractionsTables':getInteractionsTables,'getSelectedTags':getSelectedTags,'updateUser':updateUser};
\ No newline at end of file
index 3b6817e..41a3445 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4377=['split','createDecipher','format','%s:%s:%s','base64','final','utf8','parse','hasOwnProperty','License','findOne','then','count','json','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','user','isUserLimit','crypto','composable-middleware','../../mysqldb','data1','license'];(function(_0x1da279,_0x5968ed){var _0x56d83a=function(_0xfbe655){while(--_0xfbe655){_0x1da279['push'](_0x1da279['shift']());}};_0x56d83a(++_0x5968ed);}(_0x4377,0xf5));var _0x7437=function(_0x2a7a96,_0x232940){_0x2a7a96=_0x2a7a96-0x0;var _0xd5a479=_0x4377[_0x2a7a96];return _0xd5a479;};'use strict';var crypto=require(_0x7437('0x0'));var util=require('util');var compose=require(_0x7437('0x1'));var db=require(_0x7437('0x2'))['db'];var config=require('../../config/environment');function getValueFromLicense(_0x4ff07e,_0x3fc455){if(_0x4ff07e&&_0x3fc455){if(_0x3fc455[_0x7437('0x3')]&&_0x3fc455[_0x7437('0x4')]){var _0x22ce4c=_0x3fc455['data1'];var _0x3135fe=_0x3fc455['license'];var _0x3c6eef=_0x22ce4c[_0x7437('0x5')]('-')[0x4];var _0x208398=_0x22ce4c[_0x7437('0x5')]('-')[0x0];var _0x1714a4=crypto[_0x7437('0x6')]('aes-256-ctr',util[_0x7437('0x7')](_0x7437('0x8'),_0x3c6eef,_0x22ce4c,_0x208398));var _0x4a0cec=_0x1714a4['update'](_0x3135fe,_0x7437('0x9'),'utf8');_0x4a0cec+=_0x1714a4[_0x7437('0xa')](_0x7437('0xb'));var _0x486e25=JSON[_0x7437('0xc')](_0x4a0cec);return _0x486e25[_0x7437('0xd')](_0x4ff07e)?_0x486e25[_0x4ff07e]:null;}}return null;}function isLimit(_0x475105,_0x5e2b6d,_0x417863,_0x1094dc){var _0x2ebeca=_0x5e2b6d;return compose()['use'](function(_0x93aa59,_0x605bfa,_0x3fe7c6){return db[_0x7437('0xe')][_0x7437('0xf')]({'where':{'id':0x1},'raw':!![]})['then'](function(_0x4290b2){var _0x306ed1=getValueFromLicense(_0x475105,_0x4290b2);return _0x306ed1?_0x306ed1:_0x2ebeca;})[_0x7437('0x10')](function(_0x2f8fd5){_0x2ebeca=_0x2f8fd5;return _0x417863[_0x7437('0x11')](_0x1094dc);})['then'](function(_0x470121){if(_0x470121>=_0x2ebeca){return _0x605bfa['status'](0x193)[_0x7437('0x12')]({'message':util[_0x7437('0x7')](_0x7437('0x13'),_0x475105)});}_0x3fe7c6();})[_0x7437('0x14')](function(_0x479feb){_0x3fe7c6(_0x479feb);});});}function isUserLimit(){return isLimit(_0x7437('0x15'),0x1,db[_0x7437('0x16')],{'where':{'$or':[{'role':'admin'},{'role':_0x7437('0x17')}]}});}exports[_0x7437('0x18')]=isUserLimit;
\ No newline at end of file
+var _0x140d=['findOne','then','count','status','json','catch','users','User','admin','isUserLimit','crypto','composable-middleware','../../config/environment','data1','license','split','createDecipher','aes-256-ctr','format','%s:%s:%s','update','base64','utf8','final','hasOwnProperty','use','License'];(function(_0x467570,_0x408aa8){var _0x3f7f52=function(_0x367d18){while(--_0x367d18){_0x467570['push'](_0x467570['shift']());}};_0x3f7f52(++_0x408aa8);}(_0x140d,0x1d5));var _0xd140=function(_0x408fe1,_0x4de068){_0x408fe1=_0x408fe1-0x0;var _0x193750=_0x140d[_0x408fe1];return _0x193750;};'use strict';var crypto=require(_0xd140('0x0'));var util=require('util');var compose=require(_0xd140('0x1'));var db=require('../../mysqldb')['db'];var config=require(_0xd140('0x2'));function getValueFromLicense(_0x53bfd6,_0x3f51c9){if(_0x53bfd6&&_0x3f51c9){if(_0x3f51c9[_0xd140('0x3')]&&_0x3f51c9[_0xd140('0x4')]){var _0x19d928=_0x3f51c9[_0xd140('0x3')];var _0x1baf9c=_0x3f51c9[_0xd140('0x4')];var _0x397083=_0x19d928[_0xd140('0x5')]('-')[0x4];var _0x2a0585=_0x19d928['split']('-')[0x0];var _0x1fffa7=crypto[_0xd140('0x6')](_0xd140('0x7'),util[_0xd140('0x8')](_0xd140('0x9'),_0x397083,_0x19d928,_0x2a0585));var _0x4df616=_0x1fffa7[_0xd140('0xa')](_0x1baf9c,_0xd140('0xb'),_0xd140('0xc'));_0x4df616+=_0x1fffa7[_0xd140('0xd')]('utf8');var _0x5e6648=JSON['parse'](_0x4df616);return _0x5e6648[_0xd140('0xe')](_0x53bfd6)?_0x5e6648[_0x53bfd6]:null;}}return null;}function isLimit(_0x4c0afd,_0x12a3be,_0x5af175,_0x5f1ecd){var _0x3311be=_0x12a3be;return compose()[_0xd140('0xf')](function(_0x454eba,_0x219018,_0x2513ce){return db[_0xd140('0x10')][_0xd140('0x11')]({'where':{'id':0x1},'raw':!![]})[_0xd140('0x12')](function(_0x2c735f){var _0x355b4b=getValueFromLicense(_0x4c0afd,_0x2c735f);return _0x355b4b?_0x355b4b:_0x3311be;})[_0xd140('0x12')](function(_0x420840){_0x3311be=_0x420840;return _0x5af175[_0xd140('0x13')](_0x5f1ecd);})['then'](function(_0x59ae67){if(_0x59ae67>=_0x3311be){return _0x219018[_0xd140('0x14')](0x193)[_0xd140('0x15')]({'message':util[_0xd140('0x8')]('Maximum\x20%s\x20limit\x20have\x20been\x20reached',_0x4c0afd)});}_0x2513ce();})[_0xd140('0x16')](function(_0x2903eb){_0x2513ce(_0x2903eb);});});}function isUserLimit(){return isLimit(_0xd140('0x17'),0x1,db[_0xd140('0x18')],{'where':{'$or':[{'role':_0xd140('0x19')},{'role':'user'}]}});}exports[_0xd140('0x1a')]=isUserLimit;
\ No newline at end of file
index 3b317e7..8d106cb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d1d=['text','$ne','\x20OR\x20','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','>\x20?','<=\x20?','$gte','>=\x20?','$between','BETWEEN\x20?\x20AND\x20?','$notIn','start','pop','DATE','format','utcOffset','hours','minutes','seconds','lodash','moment','parseSearch','startsWith','[$or]','[$and]','replace','split','length','slice','forEach','shift','match','filter','indexOf','buildExpression','operator','$eq','value','includes','$gt','$lte','add','days','YYYY-MM-DD','castTo','CAST(','field','\x20AS\x20'];(function(_0x56e32e,_0x9eb2f6){var _0x2a757b=function(_0x50b7bc){while(--_0x50b7bc){_0x56e32e['push'](_0x56e32e['shift']());}};_0x2a757b(++_0x9eb2f6);}(_0x6d1d,0x100));var _0xd6d1=function(_0x32e2c6,_0x47dae9){_0x32e2c6=_0x32e2c6-0x0;var _0x2f1250=_0x6d1d[_0x32e2c6];return _0x2f1250;};'use strict';var _=require(_0xd6d1('0x0'));var moment=require(_0xd6d1('0x1'));exports[_0xd6d1('0x2')]=function(_0x11a925){var _0x4b7031={'conditions':[]};_0x4b7031['sqlOperator']=_[_0xd6d1('0x3')](_0x11a925,_0xd6d1('0x4'))?'or':'and';var _0x4bae7e=_0x11a925['replace'](_0xd6d1('0x5'),'')[_0xd6d1('0x6')](_0xd6d1('0x4'),'')[_0xd6d1('0x7')]('||');for(var _0x47ecf9=0x0;_0x47ecf9<_0x4bae7e[_0xd6d1('0x8')];_0x47ecf9++){var _0x1d905f=_0x4bae7e[_0x47ecf9][_0xd6d1('0x7')](':=');var _0x4bf5b5=_0x1d905f[0x0];var _0x46511c=_0x1d905f[_0xd6d1('0x9')](0x1);_0x46511c[_0xd6d1('0xa')](function(_0x48edb4){var _0x1ef171=_0x48edb4['split']('[')[_0xd6d1('0xb')]();var _0x5176fb=_0x48edb4[_0xd6d1('0xc')](/\[(.*?)\]/g);_0x5176fb[_0xd6d1('0xa')](function(_0x47e973){var _0x525227=_0x47e973[_0xd6d1('0x7')]('[')[_0xd6d1('0xd')](function(_0xa636fa){return _0xa636fa[_0xd6d1('0xe')](']')>-0x1;})['map'](function(_0x2303bf){return _0x2303bf[_0xd6d1('0x7')](']')[0x0];})[0x0];_0x4b7031['conditions']['push']({'field':_0x4bf5b5,'operator':_0x1ef171,'value':_0x525227});});});}return _0x4b7031;};exports[_0xd6d1('0xf')]=function(_0x1d8515,_0x3ee50c,_0x3f8ea9){var _0x52ecf5={};if(_0x3ee50c==='DATE'){if(_0x3f8ea9[_0xd6d1('0x10')]===_0xd6d1('0x11')){_0x3f8ea9['operator']='$between';_0x3f8ea9[_0xd6d1('0x12')]+=','+_0x3f8ea9['value'];}else if(_[_0xd6d1('0x13')]([_0xd6d1('0x14'),_0xd6d1('0x15')],_0x3f8ea9[_0xd6d1('0x10')])){_0x3f8ea9[_0xd6d1('0x12')]=moment(_0x3f8ea9[_0xd6d1('0x12')])[_0xd6d1('0x16')](0x1,_0xd6d1('0x17'))['format'](_0xd6d1('0x18'));}}if(_0x3f8ea9[_0xd6d1('0x19')]){_0x3ee50c=_0x3f8ea9[_0xd6d1('0x19')];_0x52ecf5['text']=_0xd6d1('0x1a')+_0x1d8515+'.'+_0x3f8ea9[_0xd6d1('0x1b')]+_0xd6d1('0x1c')+_0x3f8ea9[_0xd6d1('0x19')]+')\x20'+parseOperator(_0x3f8ea9['operator']);}else{_0x52ecf5[_0xd6d1('0x1d')]=_0x1d8515+'.'+_0x3f8ea9[_0xd6d1('0x1b')]+'\x20'+parseOperator(_0x3f8ea9['operator']);}if(_[_0xd6d1('0x13')]([_0xd6d1('0x1e'),'$notIn'],_0x3f8ea9[_0xd6d1('0x10')]))_0x52ecf5[_0xd6d1('0x1d')]='('+_0x52ecf5['text']+_0xd6d1('0x1f')+_0x1d8515+'.'+_0x3f8ea9[_0xd6d1('0x1b')]+_0xd6d1('0x20');_0x52ecf5['value']=parseValue(_0x3ee50c,_0x3f8ea9[_0xd6d1('0x10')],_0x3f8ea9[_0xd6d1('0x12')]);return _0x52ecf5;};function parseOperator(_0x566576){var _0x21b5fb;switch(_0x566576){case _0xd6d1('0x21'):_0x21b5fb=_0xd6d1('0x22');break;case'$notIn':_0x21b5fb=_0xd6d1('0x23');break;case _0xd6d1('0x11'):_0x21b5fb=_0xd6d1('0x24');break;case'$ne':_0x21b5fb=_0xd6d1('0x25');break;case _0xd6d1('0x26'):case _0xd6d1('0x27'):case _0xd6d1('0x28'):_0x21b5fb=_0xd6d1('0x29');break;case'$lt':_0x21b5fb='<\x20?';break;case _0xd6d1('0x14'):_0x21b5fb=_0xd6d1('0x2a');break;case _0xd6d1('0x15'):_0x21b5fb=_0xd6d1('0x2b');break;case _0xd6d1('0x2c'):_0x21b5fb=_0xd6d1('0x2d');break;case _0xd6d1('0x2e'):_0x21b5fb=_0xd6d1('0x2f');break;}return _0x21b5fb;}function parseValue(_0x3141d2,_0x6e417c,_0x90b8bc){var _0x1c1d05={'start':undefined,'end':undefined};switch(_0x6e417c){case _0xd6d1('0x21'):case _0xd6d1('0x30'):_0x1c1d05[_0xd6d1('0x31')]=_0x90b8bc['split'](',');break;case _0xd6d1('0x26'):_0x1c1d05[_0xd6d1('0x31')]='%'+_0x90b8bc+'%';break;case _0xd6d1('0x27'):_0x1c1d05['start']=_0x90b8bc+'%';break;case _0xd6d1('0x28'):_0x1c1d05['start']='%'+_0x90b8bc;break;case _0xd6d1('0x2e'):var _0x1c5328=_0x90b8bc['split'](',');var _0x90b8bc=_0x1c5328['shift']();var _0x654b0e=_0x1c5328[_0xd6d1('0x32')]();if(_0x3141d2===_0xd6d1('0x33')){_0x90b8bc=moment(_0x90b8bc)['utcOffset'](0x0,!![])[_0xd6d1('0x34')]();_0x654b0e=moment(_0x654b0e)[_0xd6d1('0x35')](0x0,!![])[_0xd6d1('0x16')](0x17,_0xd6d1('0x36'))[_0xd6d1('0x16')](0x3b,_0xd6d1('0x37'))[_0xd6d1('0x16')](0x3b,_0xd6d1('0x38'))[_0xd6d1('0x34')]();}_0x1c1d05={'start':_0x90b8bc,'end':_0x654b0e};break;default:_0x1c1d05[_0xd6d1('0x31')]=_0x90b8bc;break;}return _0x1c1d05;}
\ No newline at end of file
+var _0xb2d2=['\x20IS\x20NULL)','$in','NOT\x20IN\x20?','=\x20?','<>\x20?','$substring','$endsWith','LIKE\x20?','$lt','<\x20?','>\x20?','<=\x20?','BETWEEN\x20?\x20AND\x20?','start','$startsWith','DATE','utcOffset','add','seconds','parseSearch','sqlOperator','and','replace','[$and]','split','length','slice','shift','match','indexOf','map','conditions','push','buildExpression','operator','$eq','$between','value','includes','$gt','$lte','format','YYYY-MM-DD','castTo','text','CAST(','field','\x20AS\x20','$ne','$notIn'];(function(_0x301d61,_0x4f2eca){var _0x55b76d=function(_0x537a5c){while(--_0x537a5c){_0x301d61['push'](_0x301d61['shift']());}};_0x55b76d(++_0x4f2eca);}(_0xb2d2,0x1a3));var _0x2b2d=function(_0x4dbc0a,_0x50ed74){_0x4dbc0a=_0x4dbc0a-0x0;var _0x4187ab=_0xb2d2[_0x4dbc0a];return _0x4187ab;};'use strict';var _=require('lodash');var moment=require('moment');exports[_0x2b2d('0x0')]=function(_0x4e6e20){var _0x584f35={'conditions':[]};_0x584f35[_0x2b2d('0x1')]=_['startsWith'](_0x4e6e20,'[$or]')?'or':_0x2b2d('0x2');var _0x76f8d9=_0x4e6e20[_0x2b2d('0x3')](_0x2b2d('0x4'),'')[_0x2b2d('0x3')]('[$or]','')[_0x2b2d('0x5')]('||');for(var _0x5a8192=0x0;_0x5a8192<_0x76f8d9[_0x2b2d('0x6')];_0x5a8192++){var _0x842062=_0x76f8d9[_0x5a8192]['split'](':=');var _0x175710=_0x842062[0x0];var _0x43fb68=_0x842062[_0x2b2d('0x7')](0x1);_0x43fb68['forEach'](function(_0x44fe76){var _0x436ae1=_0x44fe76[_0x2b2d('0x5')]('[')[_0x2b2d('0x8')]();var _0x743445=_0x44fe76[_0x2b2d('0x9')](/\[(.*?)\]/g);_0x743445['forEach'](function(_0x376298){var _0x469ffe=_0x376298['split']('[')['filter'](function(_0x5f3b6e){return _0x5f3b6e[_0x2b2d('0xa')](']')>-0x1;})[_0x2b2d('0xb')](function(_0x18faa9){return _0x18faa9[_0x2b2d('0x5')](']')[0x0];})[0x0];_0x584f35[_0x2b2d('0xc')][_0x2b2d('0xd')]({'field':_0x175710,'operator':_0x436ae1,'value':_0x469ffe});});});}return _0x584f35;};exports[_0x2b2d('0xe')]=function(_0x4faf5c,_0xffc0b9,_0x399651){var _0x3122d1={};if(_0xffc0b9==='DATE'){if(_0x399651[_0x2b2d('0xf')]===_0x2b2d('0x10')){_0x399651[_0x2b2d('0xf')]=_0x2b2d('0x11');_0x399651[_0x2b2d('0x12')]+=','+_0x399651['value'];}else if(_[_0x2b2d('0x13')]([_0x2b2d('0x14'),_0x2b2d('0x15')],_0x399651['operator'])){_0x399651['value']=moment(_0x399651[_0x2b2d('0x12')])['add'](0x1,'days')[_0x2b2d('0x16')](_0x2b2d('0x17'));}}if(_0x399651['castTo']){_0xffc0b9=_0x399651[_0x2b2d('0x18')];_0x3122d1[_0x2b2d('0x19')]=_0x2b2d('0x1a')+_0x4faf5c+'.'+_0x399651[_0x2b2d('0x1b')]+_0x2b2d('0x1c')+_0x399651[_0x2b2d('0x18')]+')\x20'+parseOperator(_0x399651[_0x2b2d('0xf')]);}else{_0x3122d1[_0x2b2d('0x19')]=_0x4faf5c+'.'+_0x399651['field']+'\x20'+parseOperator(_0x399651[_0x2b2d('0xf')]);}if(_['includes']([_0x2b2d('0x1d'),_0x2b2d('0x1e')],_0x399651[_0x2b2d('0xf')]))_0x3122d1['text']='('+_0x3122d1[_0x2b2d('0x19')]+'\x20OR\x20'+_0x4faf5c+'.'+_0x399651[_0x2b2d('0x1b')]+_0x2b2d('0x1f');_0x3122d1[_0x2b2d('0x12')]=parseValue(_0xffc0b9,_0x399651[_0x2b2d('0xf')],_0x399651[_0x2b2d('0x12')]);return _0x3122d1;};function parseOperator(_0x317787){var _0x4dc115;switch(_0x317787){case _0x2b2d('0x20'):_0x4dc115='IN\x20?';break;case'$notIn':_0x4dc115=_0x2b2d('0x21');break;case _0x2b2d('0x10'):_0x4dc115=_0x2b2d('0x22');break;case'$ne':_0x4dc115=_0x2b2d('0x23');break;case _0x2b2d('0x24'):case'$startsWith':case _0x2b2d('0x25'):_0x4dc115=_0x2b2d('0x26');break;case _0x2b2d('0x27'):_0x4dc115=_0x2b2d('0x28');break;case _0x2b2d('0x14'):_0x4dc115=_0x2b2d('0x29');break;case _0x2b2d('0x15'):_0x4dc115=_0x2b2d('0x2a');break;case'$gte':_0x4dc115='>=\x20?';break;case _0x2b2d('0x11'):_0x4dc115=_0x2b2d('0x2b');break;}return _0x4dc115;}function parseValue(_0x45ed84,_0x33c467,_0x36efd3){var _0x36fbac={'start':undefined,'end':undefined};switch(_0x33c467){case _0x2b2d('0x20'):case'$notIn':_0x36fbac[_0x2b2d('0x2c')]=_0x36efd3['split'](',');break;case _0x2b2d('0x24'):_0x36fbac[_0x2b2d('0x2c')]='%'+_0x36efd3+'%';break;case _0x2b2d('0x2d'):_0x36fbac[_0x2b2d('0x2c')]=_0x36efd3+'%';break;case _0x2b2d('0x25'):_0x36fbac[_0x2b2d('0x2c')]='%'+_0x36efd3;break;case _0x2b2d('0x11'):var _0xe54272=_0x36efd3[_0x2b2d('0x5')](',');var _0x36efd3=_0xe54272[_0x2b2d('0x8')]();var _0x2556bb=_0xe54272['pop']();if(_0x45ed84===_0x2b2d('0x2e')){_0x36efd3=moment(_0x36efd3)[_0x2b2d('0x2f')](0x0,!![])[_0x2b2d('0x16')]();_0x2556bb=moment(_0x2556bb)[_0x2b2d('0x2f')](0x0,!![])['add'](0x17,'hours')[_0x2b2d('0x30')](0x3b,'minutes')[_0x2b2d('0x30')](0x3b,_0x2b2d('0x31'))[_0x2b2d('0x16')]();}_0x36fbac={'start':_0x36efd3,'end':_0x2556bb};break;default:_0x36fbac['start']=_0x36efd3;break;}return _0x36fbac;}
\ No newline at end of file
index d32c779..4a03e89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bae=['omit','isObject','isString','length','unset','match','^[+]?[0-9]*$','getFullTextValue','replace','getOptions','query','$id','model','name','filters','intersection','attributes','hasOwnProperty','nolimit','order','where','pick','filter','object','columns','merge','type','VIRTUAL','lower','options','moment','keys','includes','parse','fields','split','isEmpty','forOwn','find','DATE','$gte','format','YYYY-MM-DD','$lte','subtract','isArray','limit','offset','sort','map','indexOf','priority','col','unsigned','substr','DESC','cast'];(function(_0x38e595,_0x345259){var _0x3aad63=function(_0x41c02b){while(--_0x41c02b){_0x38e595['push'](_0x38e595['shift']());}};_0x3aad63(++_0x345259);}(_0x7bae,0x13b));var _0xe7ba=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x7bae[_0x160c73];return _0xd9302;};'use strict';var _=require('lodash');var sequelize=require('sequelize');var moment=require(_0xe7ba('0x0'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x1e05c4){var _0x503803=['ne'];try{var _0x3963c7=JSON['parse'](_0x1e05c4);var _0x120efa=Object[_0xe7ba('0x1')](_0x3963c7)[0x0];return _0x503803[_0xe7ba('0x2')](_0x120efa);}catch(_0x2276df){return![];}}function getOperatorValue(_0x398a6a){var _0xfd3a22=JSON[_0xe7ba('0x3')](_0x398a6a);var _0x3c5e59=Object[_0xe7ba('0x1')](_0xfd3a22)[0x0];var _0x34fb18=_0xfd3a22[_0x3c5e59];return{['$'+_0x3c5e59]:_0x34fb18};}exports[_0xe7ba('0x4')]=function(_0x27b1d5){var _0x41c39d=null;if(_0x27b1d5){_0x41c39d=_0x27b1d5[_0xe7ba('0x5')](',');}return _0x41c39d;};exports['filters']=function(_0x3df8bf,_0xe57e33){var _0x375ebb={};if(!_[_0xe7ba('0x6')](_0x3df8bf)){_[_0xe7ba('0x7')](_0x3df8bf,function(_0x1672f0,_0x99a86f){try{if(_0xe57e33){var _0x448bcc=_[_0xe7ba('0x8')](_0xe57e33,{'name':_0x99a86f})||{};if(hasSequelizeOperator(_0x1672f0)){_0x375ebb[_0x99a86f]=getOperatorValue(_0x1672f0);}else if(_0x448bcc['type']===_0xe7ba('0x9')&&_['isPlainObject'](_0x1672f0)){var _0x602b1=JSON[_0xe7ba('0x3')](_0x1672f0);var _0x390596={'$gte':moment(moment(_0x602b1[_0xe7ba('0xa')])[_0xe7ba('0xb')](_0xe7ba('0xc')))['utc']()['format'](),'$lte':moment(moment(_0x602b1[_0xe7ba('0xd')])[_0xe7ba('0xb')](_0xe7ba('0xc')))['utc']()[_0xe7ba('0xe')](0x1,'s')['format']()};_0x375ebb[_0x99a86f]=_0x390596;}else if(_0x448bcc['name']==='uniqueid'){_0x375ebb[_0x99a86f]=_0x1672f0;}else{_0x375ebb[_0x99a86f]=_[_0xe7ba('0xf')](_0x1672f0)?_0x1672f0:JSON['parse'](_0x1672f0);}}else{_0x375ebb[_0x99a86f]=_[_0xe7ba('0xf')](_0x1672f0)?_0x1672f0:JSON['parse'](_0x1672f0);}}catch(_0x4e3021){_0x375ebb[_0x99a86f]=_0x1672f0['split'](',');}});}return _0x375ebb;};exports[_0xe7ba('0x10')]=function(_0x30086c){_0x30086c=parseInt(_0x30086c,0xa);if(!_0x30086c||_0x30086c<0x0){_0x30086c=LIMIT_VALUE;}return _0x30086c;};exports[_0xe7ba('0x11')]=function(_0x3c06c3){_0x3c06c3=parseInt(_0x3c06c3,0xa);if(!_0x3c06c3||_0x3c06c3<0x0){_0x3c06c3=0x0;}return _0x3c06c3;};exports[_0xe7ba('0x12')]=function(_0x58550c){var _0x149c62,_0x20c653=null;if(_0x58550c){_0x149c62=_0x58550c[_0xe7ba('0x5')](',');_0x20c653=_[_0xe7ba('0x13')](_0x149c62,function(_0x4aaf35){if(_0x4aaf35[_0xe7ba('0x14')]('-')===0x0){return[_0x4aaf35===_0xe7ba('0x15')?sequelize['cast'](sequelize[_0xe7ba('0x16')](_0xe7ba('0x15')),_0xe7ba('0x17')):_0x4aaf35[_0xe7ba('0x18')](0x1),_0xe7ba('0x19')];}else{return[_0x4aaf35===_0xe7ba('0x15')?sequelize[_0xe7ba('0x1a')](sequelize[_0xe7ba('0x16')](_0xe7ba('0x15')),_0xe7ba('0x17')):_0x4aaf35,'ASC'];}});}return _0x20c653;};exports['omit']=function(_0x4dcc7b,_0x4cd124){if(_[_0xe7ba('0x6')](_0x4dcc7b)){return _0x4dcc7b;}if(_['isArray'](_0x4dcc7b)){for(var _0x4ecc0d=0x0;_0x4ecc0d<_0x4dcc7b['length'];_0x4ecc0d+=0x1){_0x4dcc7b[_0x4ecc0d]=this[_0xe7ba('0x1b')](_0x4dcc7b[_0x4ecc0d],_0x4cd124);}return _0x4dcc7b;}if(!_[_0xe7ba('0x1c')](_0x4dcc7b)){return _0x4dcc7b;}if(_[_0xe7ba('0x1d')](_0x4cd124)){_0x4cd124=[_0x4cd124];}if(!_[_0xe7ba('0xf')](_0x4cd124)){return _0x4dcc7b;}for(var _0x3435c6=0x0;_0x3435c6<_0x4cd124[_0xe7ba('0x1e')];_0x3435c6+=0x1){_[_0xe7ba('0x1f')](_0x4dcc7b,_0x4cd124[_0x3435c6]);}for(var _0x3a59d6 in _0x4dcc7b){if(_0x4dcc7b['hasOwnProperty'](_0x3a59d6)){_0x4dcc7b[_0x3a59d6]=this[_0xe7ba('0x1b')](_0x4dcc7b[_0x3a59d6],_0x4cd124);}}return _0x4dcc7b;};exports['isNumeric']=function(_0x102925){return _0x102925[_0xe7ba('0x20')](RegExp(_0xe7ba('0x21')))?!![]:![];};exports['isEmail']=function(_0x587c7d){return _0x587c7d[_0xe7ba('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xe7ba('0x22')]=function(_0x8d5020){var _0x20b6cd=[];_0x8d5020[_0xe7ba('0x5')](/[ ,]+/)['forEach'](function(_0x37911d){_0x37911d=_0x37911d[_0xe7ba('0x23')](/([^:]")"+/g,'$1');_0x37911d='+'+_0x37911d+'*';var _0x5b5ff3=/[ `!@#$%^&*()_\-?~]/;if(_0x37911d[_0xe7ba('0x20')](_0x5b5ff3))_0x37911d='\x22'+_0x37911d+'\x22';_0x20b6cd['push'](_0x37911d);});return _0x20b6cd['join']('\x20');};exports[_0xe7ba('0x24')]=function(_0x134f21,_0x1be947,_0x52f90e){var _0x3b14b4={},_0x4ccdc7={};if(_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x26')]){_0x1be947[_0xe7ba('0x25')]['id']=_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x26')];delete _0x1be947['query'][_0xe7ba('0x26')];}_0x3b14b4[_0xe7ba('0x27')]=_['map'](_0x134f21,_0xe7ba('0x28'));_0x3b14b4[_0xe7ba('0x25')]=_[_0xe7ba('0x1')](_0x1be947['query']);_0x3b14b4[_0xe7ba('0x29')]=_[_0xe7ba('0x2a')](_0x3b14b4['model'],_0x3b14b4[_0xe7ba('0x25')]);_0x4ccdc7[_0xe7ba('0x2b')]=_[_0xe7ba('0x2a')](_0x3b14b4['model'],this[_0xe7ba('0x4')](_0x1be947[_0xe7ba('0x25')]['fields']));_0x4ccdc7[_0xe7ba('0x2b')]=_0x4ccdc7[_0xe7ba('0x2b')][_0xe7ba('0x1e')]?_0x4ccdc7['attributes']:_0x3b14b4['model'];if(!_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x2c')](_0xe7ba('0x2d'))){_0x4ccdc7[_0xe7ba('0x10')]=this[_0xe7ba('0x10')](_0x1be947['query'][_0xe7ba('0x10')]);_0x4ccdc7[_0xe7ba('0x11')]=this[_0xe7ba('0x11')](_0x1be947[_0xe7ba('0x25')]['offset']);}_0x4ccdc7[_0xe7ba('0x2e')]=this[_0xe7ba('0x12')](_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x12')]);_0x4ccdc7[_0xe7ba('0x2f')]=this[_0xe7ba('0x29')](_[_0xe7ba('0x30')](_0x1be947['query'],_0x3b14b4[_0xe7ba('0x29')]),_0x134f21);if(_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]){var _0x401b0a=_0x134f21;var _0xf61205=_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')];if(typeof _0xf61205===_0xe7ba('0x32')){_0x401b0a=_[_0xe7ba('0x31')](_0x134f21,function(_0x50792c){return _[_0xe7ba('0x2')](_0xf61205[_0xe7ba('0x33')],_0x50792c['name']);});_0xf61205=_0xf61205['value'];}_0x4ccdc7[_0xe7ba('0x2f')]=_[_0xe7ba('0x34')](_0x4ccdc7[_0xe7ba('0x2f')],{'$or':_['map'](_0x401b0a,function(_0x249e1d){if(_0x249e1d[_0xe7ba('0x35')]!==_0xe7ba('0x36')){if(_0x52f90e){return sequelize[_0xe7ba('0x2f')](sequelize['fn'](_0xe7ba('0x37'),sequelize['col'](_0x249e1d[_0xe7ba('0x28')])),{'$like':sequelize['fn']('lower','%'+_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]+'%')});}else{var _0xe0f1c3={};_0xe0f1c3[_0x249e1d[_0xe7ba('0x28')]]={'$like':'%'+_0x1be947[_0xe7ba('0x25')][_0xe7ba('0x31')]+'%'};return _0xe0f1c3;}}})});}_0x4ccdc7=_[_0xe7ba('0x34')]({},_0x4ccdc7,_0x1be947[_0xe7ba('0x38')]);return _0x4ccdc7;};
\ No newline at end of file
+var _0x0bde=['pick','filter','columns','where','lower','merge','options','sequelize','parse','includes','keys','fields','split','filters','type','DATE','$gte','format','YYYY-MM-DD','utc','$lte','name','uniqueid','isArray','limit','offset','map','indexOf','cast','col','priority','substr','unsigned','ASC','omit','isEmpty','isObject','length','unset','match','^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','getOptions','query','$id','model','intersection','attributes','hasOwnProperty','order','sort'];(function(_0x5c4d19,_0x519cce){var _0x3b8d16=function(_0x2547cb){while(--_0x2547cb){_0x5c4d19['push'](_0x5c4d19['shift']());}};_0x3b8d16(++_0x519cce);}(_0x0bde,0xe7));var _0xe0bd=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x0bde[_0x122ef9];return _0x42fba0;};'use strict';var _=require('lodash');var sequelize=require(_0xe0bd('0x0'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x3fb344){var _0x3dc984=['ne'];try{var _0x1d8922=JSON[_0xe0bd('0x1')](_0x3fb344);var _0x2da4bd=Object['keys'](_0x1d8922)[0x0];return _0x3dc984[_0xe0bd('0x2')](_0x2da4bd);}catch(_0x124139){return![];}}function getOperatorValue(_0x2b9812){var _0x3b712a=JSON[_0xe0bd('0x1')](_0x2b9812);var _0x26393f=Object[_0xe0bd('0x3')](_0x3b712a)[0x0];var _0x491dc7=_0x3b712a[_0x26393f];return{['$'+_0x26393f]:_0x491dc7};}exports[_0xe0bd('0x4')]=function(_0x44cb0b){var _0xb17265=null;if(_0x44cb0b){_0xb17265=_0x44cb0b[_0xe0bd('0x5')](',');}return _0xb17265;};exports[_0xe0bd('0x6')]=function(_0x3c47c4,_0x475265){var _0x58d892={};if(!_['isEmpty'](_0x3c47c4)){_['forOwn'](_0x3c47c4,function(_0x47f96d,_0x44ffa9){try{if(_0x475265){var _0x5e2a24=_['find'](_0x475265,{'name':_0x44ffa9})||{};if(hasSequelizeOperator(_0x47f96d)){_0x58d892[_0x44ffa9]=getOperatorValue(_0x47f96d);}else if(_0x5e2a24[_0xe0bd('0x7')]===_0xe0bd('0x8')&&_['isPlainObject'](_0x47f96d)){var _0xc492b4=JSON['parse'](_0x47f96d);var _0x1bf268={'$gte':moment(moment(_0xc492b4[_0xe0bd('0x9')])[_0xe0bd('0xa')](_0xe0bd('0xb')))[_0xe0bd('0xc')]()[_0xe0bd('0xa')](),'$lte':moment(moment(_0xc492b4[_0xe0bd('0xd')])[_0xe0bd('0xa')]('YYYY-MM-DD'))['utc']()['subtract'](0x1,'s')[_0xe0bd('0xa')]()};_0x58d892[_0x44ffa9]=_0x1bf268;}else if(_0x5e2a24[_0xe0bd('0xe')]===_0xe0bd('0xf')){_0x58d892[_0x44ffa9]=_0x47f96d;}else{_0x58d892[_0x44ffa9]=_[_0xe0bd('0x10')](_0x47f96d)?_0x47f96d:JSON[_0xe0bd('0x1')](_0x47f96d);}}else{_0x58d892[_0x44ffa9]=_['isArray'](_0x47f96d)?_0x47f96d:JSON['parse'](_0x47f96d);}}catch(_0x1becc8){_0x58d892[_0x44ffa9]=_0x47f96d['split'](',');}});}return _0x58d892;};exports[_0xe0bd('0x11')]=function(_0x418d64){_0x418d64=parseInt(_0x418d64,0xa);if(!_0x418d64||_0x418d64<0x0){_0x418d64=LIMIT_VALUE;}return _0x418d64;};exports[_0xe0bd('0x12')]=function(_0x20157b){_0x20157b=parseInt(_0x20157b,0xa);if(!_0x20157b||_0x20157b<0x0){_0x20157b=0x0;}return _0x20157b;};exports['sort']=function(_0x1311b1){var _0xe1d808,_0x2b9f93=null;if(_0x1311b1){_0xe1d808=_0x1311b1['split'](',');_0x2b9f93=_[_0xe0bd('0x13')](_0xe1d808,function(_0x25f595){if(_0x25f595[_0xe0bd('0x14')]('-')===0x0){return[_0x25f595==='priority'?sequelize[_0xe0bd('0x15')](sequelize[_0xe0bd('0x16')](_0xe0bd('0x17')),'unsigned'):_0x25f595[_0xe0bd('0x18')](0x1),'DESC'];}else{return[_0x25f595===_0xe0bd('0x17')?sequelize[_0xe0bd('0x15')](sequelize['col'](_0xe0bd('0x17')),_0xe0bd('0x19')):_0x25f595,_0xe0bd('0x1a')];}});}return _0x2b9f93;};exports[_0xe0bd('0x1b')]=function(_0x2a1f92,_0x30e9d3){if(_[_0xe0bd('0x1c')](_0x2a1f92)){return _0x2a1f92;}if(_[_0xe0bd('0x10')](_0x2a1f92)){for(var _0x537708=0x0;_0x537708<_0x2a1f92['length'];_0x537708+=0x1){_0x2a1f92[_0x537708]=this[_0xe0bd('0x1b')](_0x2a1f92[_0x537708],_0x30e9d3);}return _0x2a1f92;}if(!_[_0xe0bd('0x1d')](_0x2a1f92)){return _0x2a1f92;}if(_['isString'](_0x30e9d3)){_0x30e9d3=[_0x30e9d3];}if(!_['isArray'](_0x30e9d3)){return _0x2a1f92;}for(var _0x3bac51=0x0;_0x3bac51<_0x30e9d3[_0xe0bd('0x1e')];_0x3bac51+=0x1){_[_0xe0bd('0x1f')](_0x2a1f92,_0x30e9d3[_0x3bac51]);}for(var _0x1b5861 in _0x2a1f92){if(_0x2a1f92['hasOwnProperty'](_0x1b5861)){_0x2a1f92[_0x1b5861]=this[_0xe0bd('0x1b')](_0x2a1f92[_0x1b5861],_0x30e9d3);}}return _0x2a1f92;};exports['isNumeric']=function(_0x9146fe){return _0x9146fe[_0xe0bd('0x20')](RegExp(_0xe0bd('0x21')))?!![]:![];};exports[_0xe0bd('0x22')]=function(_0x1e2020){return _0x1e2020[_0xe0bd('0x20')](/^\S+@\S+$/)?!![]:![];};exports[_0xe0bd('0x23')]=function(_0x2d31e9){var _0x25d515=[];_0x2d31e9[_0xe0bd('0x5')](/[ ,]+/)[_0xe0bd('0x24')](function(_0x12d506){_0x12d506=_0x12d506[_0xe0bd('0x25')](/([^:]")"+/g,'$1');_0x12d506='+'+_0x12d506+'*';var _0x56f310=/[ `!@#$%^&*()_\-?~]/;if(_0x12d506[_0xe0bd('0x20')](_0x56f310))_0x12d506='\x22'+_0x12d506+'\x22';_0x25d515[_0xe0bd('0x26')](_0x12d506);});return _0x25d515[_0xe0bd('0x27')]('\x20');};exports[_0xe0bd('0x28')]=function(_0x8c9de3,_0x380c13,_0x56b770){var _0x507c7a={},_0x35019d={};if(_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2a')]){_0x380c13[_0xe0bd('0x29')]['id']=_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2a')];delete _0x380c13[_0xe0bd('0x29')]['$id'];}_0x507c7a[_0xe0bd('0x2b')]=_[_0xe0bd('0x13')](_0x8c9de3,_0xe0bd('0xe'));_0x507c7a[_0xe0bd('0x29')]=_[_0xe0bd('0x3')](_0x380c13[_0xe0bd('0x29')]);_0x507c7a['filters']=_[_0xe0bd('0x2c')](_0x507c7a[_0xe0bd('0x2b')],_0x507c7a[_0xe0bd('0x29')]);_0x35019d[_0xe0bd('0x2d')]=_[_0xe0bd('0x2c')](_0x507c7a['model'],this['fields'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x4')]));_0x35019d[_0xe0bd('0x2d')]=_0x35019d['attributes'][_0xe0bd('0x1e')]?_0x35019d['attributes']:_0x507c7a['model'];if(!_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x2e')]('nolimit')){_0x35019d['limit']=this['limit'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x11')]);_0x35019d[_0xe0bd('0x12')]=this['offset'](_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x12')]);}_0x35019d[_0xe0bd('0x2f')]=this['sort'](_0x380c13['query'][_0xe0bd('0x30')]);_0x35019d['where']=this[_0xe0bd('0x6')](_[_0xe0bd('0x31')](_0x380c13['query'],_0x507c7a[_0xe0bd('0x6')]),_0x8c9de3);if(_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')]){var _0xb65059=_0x8c9de3;var _0x2a7782=_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')];if(typeof _0x2a7782==='object'){_0xb65059=_[_0xe0bd('0x32')](_0x8c9de3,function(_0x39b832){return _[_0xe0bd('0x2')](_0x2a7782[_0xe0bd('0x33')],_0x39b832[_0xe0bd('0xe')]);});_0x2a7782=_0x2a7782['value'];}_0x35019d['where']=_['merge'](_0x35019d[_0xe0bd('0x34')],{'$or':_[_0xe0bd('0x13')](_0xb65059,function(_0x15de49){if(_0x15de49[_0xe0bd('0x7')]!=='VIRTUAL'){if(_0x56b770){return sequelize['where'](sequelize['fn'](_0xe0bd('0x35'),sequelize[_0xe0bd('0x16')](_0x15de49[_0xe0bd('0xe')])),{'$like':sequelize['fn'](_0xe0bd('0x35'),'%'+_0x380c13[_0xe0bd('0x29')][_0xe0bd('0x32')]+'%')});}else{var _0x3d218d={};_0x3d218d[_0x15de49['name']]={'$like':'%'+_0x380c13[_0xe0bd('0x29')]['filter']+'%'};return _0x3d218d;}}})});}_0x35019d=_[_0xe0bd('0x36')]({},_0x35019d,_0x380c13[_0xe0bd('0x37')]);return _0x35019d;};
\ No newline at end of file
index ff9f43b..bf65958 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xab2e=['smsStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','unknown','*pause','busy','isArray','findOne','getAgents','all','map','uniq','value','getAgentIdsByQueues','includes','getAgentIdsByStatus','resolve','User','findAll','name','fullname','pauseType','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','startsWith','getUpdatedSortOptions','internal','substring','indexOf','validateSortParameter','sort','DESC','toLowerCase','userpic','online','lastLoginAt','lastPauseAt','address','chatCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','mailStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','faxStatusTime','voiceStatusTime','screenrecording','phoneBarEnableAutomaticScreenRecording','omit','pick','filterAgentAttributes','jayson/promise','../../mysqldb','client','chatPause','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','filter','length','unavailable','isNil','voiceStatus','idle','pause','faxStatus','openchannelStatus'];(function(_0x30dffa,_0x35b080){var _0x2f5d84=function(_0x17dcc9){while(--_0x17dcc9){_0x30dffa['push'](_0x30dffa['shift']());}};_0x2f5d84(++_0x35b080);}(_0xab2e,0x154));var _0xeab2=function(_0xa38daf,_0x30406b){_0xa38daf=_0xa38daf-0x0;var _0x1b786a=_0xab2e[_0xa38daf];return _0x1b786a;};'use strict';var _=require('lodash');var jayson=require(_0xeab2('0x0'));var db=require(_0xeab2('0x1'))['db'];var amiClient=jayson[_0xeab2('0x2')]['http']({'port':0x232a});var routingClient=jayson[_0xeab2('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x3684cf,_0x1750ac){var _0x5b91fe=[_0x3684cf[_0xeab2('0x3')],_0x3684cf[_0xeab2('0x4')],_0x3684cf[_0xeab2('0x5')],_0x3684cf[_0xeab2('0x6')],_0x3684cf[_0xeab2('0x7')],_0x3684cf[_0xeab2('0x8')],_0x3684cf[_0xeab2('0x9')]];if(!_0x1750ac)return _[_0xeab2('0xa')](_0x5b91fe);var _0x1b2489=_[_0xeab2('0xb')](_0x5b91fe);return _0x1b2489[_0xeab2('0xc')]>0x0&&_0x1b2489[_0xeab2('0xc')]<_0x5b91fe[_0xeab2('0xc')]?!![]:![];}function isIdle(_0x226f63){return _0x226f63==='idle'||_0x226f63==='unknown'||_0x226f63===_0xeab2('0xd')||_0x226f63==='ringing'||_[_0xeab2('0xe')](_0x226f63);}function isAgentIdle(_0xed0ee7){if(_0xed0ee7[_0xeab2('0xf')]!==_0xeab2('0x10')&&_0xed0ee7[_0xeab2('0x8')]){_0xed0ee7['voiceStatus']=_0xeab2('0x11');return![];}return _[_0xeab2('0xa')]([_0xed0ee7['chatStatus'],_0xed0ee7[_0xeab2('0x12')],_0xed0ee7['mailStatus'],_0xed0ee7[_0xeab2('0x13')],_0xed0ee7[_0xeab2('0x14')],_0xed0ee7[_0xeab2('0xf')],_0xed0ee7['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0xeab2('0x15')](_0xeab2('0x16'),{})[_0xeab2('0x17')](function(_0x215123){if(_0x215123[_0xeab2('0x18')]){throw new Error(_0xeab2('0x19'));}var _0x36c166=_0x215123[_0xeab2('0x1a')];return routingClient['request']('Agents',{})['then'](function(_0x9aafc8){if(_0x9aafc8[_0xeab2('0x18')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x8722d9=_0x9aafc8['result'];return _[_0xeab2('0x1b')]({},_0x36c166,_0x8722d9);});})[_0xeab2('0x1c')](function(_0x58fdf7){throw _0x58fdf7;});}exports['getRealtimeAgents']=getRealtimeAgents;function getAgentStatus(_0x4adee){var _0x3a3dc9=_0xeab2('0x1d');if(isAgentPaused(_0x4adee))_0x3a3dc9=_0xeab2('0x11');else if(isAgentPaused(_0x4adee,!![]))_0x3a3dc9=_0xeab2('0x1e');else if(isAgentIdle(_0x4adee))_0x3a3dc9='idle';else _0x3a3dc9=_0xeab2('0x1f');return _0x3a3dc9;}exports['getAgentStatus']=getAgentStatus;function getAgentIdsByQueues(_0x8691ee,_0x582252){var _0x37ea01=_[_0xeab2('0x20')](_0x8691ee)?_0x8691ee:[_0x8691ee];var _0x279b95=_['startCase'](_0x582252)+'Queue';var _0x459f7b=_['map'](_0x37ea01,function(_0x2291c3){return db[_0x279b95][_0xeab2('0x21')]({'where':{'id':_0x2291c3}})['then'](function(_0x11eab1){if(!_0x11eab1)return[];return _0x11eab1[_0xeab2('0x22')]({'attributes':['id'],'raw':!![]});});});return Promise[_0xeab2('0x23')](_0x459f7b)[_0xeab2('0x17')](function(_0x354dd6){var _0x4fe5b6=_(_0x354dd6)['flatten']()[_0xeab2('0x24')]('id')[_0xeab2('0x25')]()[_0xeab2('0x26')]();return _0x4fe5b6;});}exports[_0xeab2('0x27')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0xbbd43f,_0xa34f26,_0x502554){try{if(_0xa34f26[_0xeab2('0xc')]>0x0){_0xbbd43f=_0xbbd43f['filter'](function(_0x1c1b16){return _0xa34f26[_0xeab2('0x28')](_0x1c1b16['id']);});}var _0x4e0d73=_0xbbd43f[_0xeab2('0xb')](function(_0x17c749){var _0x370422=_0xeab2('0x1f');if(isAgentIdle(_0x17c749)){_0x370422='idle';}return _0x370422===_0x502554;});return _[_0xeab2('0x24')](_0x4e0d73,'id');}catch(_0x3e062e){throw _0x3e062e;}}exports[_0xeab2('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x99d915,_0x13c7b8,_0x37070e){return Promise[_0xeab2('0x2a')]()[_0xeab2('0x17')](function(){if(_0x13c7b8[_0xeab2('0xc')]>0x0){_0x99d915=_0x99d915[_0xeab2('0xb')](function(_0x35224d){return _0x13c7b8['includes'](_0x35224d['id']);});}return _0x99d915;})[_0xeab2('0x17')](function(){return db[_0xeab2('0x2b')][_0xeab2('0x2c')]({'attributes':['id',_0xeab2('0x2d'),_0xeab2('0x2e'),_0xeab2('0x3'),'faxPause',_0xeab2('0x5'),_0xeab2('0x6'),_0xeab2('0x7'),'voicePause','whatsappPause',_0xeab2('0x2f')],'where':{'id':{'$in':_[_0xeab2('0x24')](_0x99d915,'id')}},'raw':!![]});})[_0xeab2('0x17')](function(_0xc25be7){return _0xc25be7[_0xeab2('0x24')](function(_0x4df6d3){var _0x31c147=_[_0xeab2('0x30')](_0x99d915,['id',_0x4df6d3['id']]);var _0x18bc52=filterAgentAttributes(_0x31c147);_['merge'](_0x4df6d3,_0x18bc52);_0x4df6d3[_0xeab2('0x31')]=getAgentStatus(_0x4df6d3);return _0x4df6d3;});})['then'](function(_0x18b61a){var _0x4f70ba=sortAgentsByStatus(_0x18b61a,_0x37070e);return _['map'](_0x4f70ba,'id');})[_0xeab2('0x1c')](function(_0x4c84f4){throw _0x4c84f4;});}exports[_0xeab2('0x32')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0x349f39){var _0x531d4d={'fields':[],'order':null};var _0x3a1d07=_0x349f39[_0xeab2('0x33')](',');_0x531d4d[_0xeab2('0x34')]=_[_0xeab2('0xb')](_0x3a1d07,function(_0x935636){if(!_0x935636[_0xeab2('0x28')](_0xeab2('0x31'))){return!![];}_0x531d4d['order']=_[_0xeab2('0x35')](_0x935636,'-')?'DESC':'ASC';return![];});return _0x531d4d;}exports[_0xeab2('0x36')]=getUpdatedSortOptions;function validateSortParameter(_0x13d6ca){if(_0x13d6ca[_0xeab2('0x28')](_0xeab2('0x2e'))&&!_0x13d6ca[_0xeab2('0x28')](_0xeab2('0x37'))){var _0x2c4410=_0x13d6ca[_0xeab2('0x38')](0x0,_0x13d6ca[_0xeab2('0x39')](_0xeab2('0x2e')));_0x13d6ca+=','+_0x2c4410+_0xeab2('0x37');}return _0x13d6ca;}exports[_0xeab2('0x3a')]=validateSortParameter;function sortAgentsByStatus(_0x536201,_0x5f740d){var _0x4af06c=_0x536201[_0xeab2('0x3b')](function(_0x2f34fe,_0x25831f){if(_0x2f34fe['globalStatus']===_0x25831f[_0xeab2('0x31')]){if(_0x2f34fe[_0xeab2('0x31')]===_0xeab2('0x11')){if(_0x5f740d===_0xeab2('0x3c')){return(_0x2f34fe[_0xeab2('0x2f')]||'')<(_0x25831f['pauseType']||'')||_0x2f34fe['fullname']['toLowerCase']()>_0x25831f[_0xeab2('0x2e')]['toLowerCase']()?0x1:-0x1;}else{return(_0x2f34fe[_0xeab2('0x2f')]||'')<(_0x25831f['pauseType']||'')||_0x2f34fe[_0xeab2('0x2e')]['toLowerCase']()>_0x25831f[_0xeab2('0x2e')][_0xeab2('0x3d')]()?-0x1:0x1;}}else{if(_0x5f740d===_0xeab2('0x3c')){return _0x2f34fe[_0xeab2('0x2e')][_0xeab2('0x3d')]()<_0x25831f[_0xeab2('0x2e')][_0xeab2('0x3d')]()?0x1:-0x1;}else{return _0x2f34fe[_0xeab2('0x2e')]['toLowerCase']()<_0x25831f[_0xeab2('0x2e')]['toLowerCase']()?-0x1:0x1;}}}else{if(_0x5f740d==='DESC'){return _0x2f34fe[_0xeab2('0x31')]<_0x25831f[_0xeab2('0x31')]?0x1:-0x1;}else{return _0x2f34fe['globalStatus']<_0x25831f[_0xeab2('0x31')]?-0x1:0x1;}}});return _0x4af06c;}exports['sortAgentsByStatus']=sortAgentsByStatus;function filterAgentAttributes(_0x919480){var _0x1e60c4=[_0xeab2('0x3e'),_0xeab2('0x3f'),_0xeab2('0x40'),_0xeab2('0x41'),_0xeab2('0x2f'),'lastPauseAt',_0xeab2('0x37'),_0xeab2('0x42'),_0xeab2('0x3'),'openchannelPause',_0xeab2('0x5'),'smsPause',_0xeab2('0x9'),_0xeab2('0x4'),_0xeab2('0x8'),_0xeab2('0x43'),'openchannelCapacity','mailCapacity','smsCapacity',_0xeab2('0x44'),_0xeab2('0x45'),_0xeab2('0x46'),_0xeab2('0x47'),'mailCurrentCapacity',_0xeab2('0x48'),_0xeab2('0x49'),_0xeab2('0x4a'),_0xeab2('0x4b'),'openchannelStatus',_0xeab2('0x4c'),'smsStatus',_0xeab2('0x4d'),_0xeab2('0x12'),_0xeab2('0xf'),_0xeab2('0x4e'),_0xeab2('0x4f'),_0xeab2('0x50'),_0xeab2('0x51'),_0xeab2('0x52'),_0xeab2('0x53'),_0xeab2('0x54'),'queue','destconnectedlinenum',_0xeab2('0x55'),'phoneBarEnableScreenRecordingByAgent',_0xeab2('0x56'),'routealias'];var _0x362763=['chatPause',_0xeab2('0x6'),_0xeab2('0x5'),_0xeab2('0x7'),_0xeab2('0x9'),_0xeab2('0x4'),'voicePause','online'];var _0x464048=_(_0x919480)[_0xeab2('0x57')](_0x362763)[_0xeab2('0x58')](_0x1e60c4)[_0xeab2('0x26')]();return _0x464048;}exports[_0xeab2('0x59')]=filterAgentAttributes;
\ No newline at end of file
+var _0x6385=['whatsappStatusTime','faxStatusTime','queue','destconnectedlinenum','screenrecording','phoneBarEnableAutomaticScreenRecording','routealias','omit','pick','filterAgentAttributes','lodash','../../mysqldb','client','http','chatPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','length','idle','unknown','unavailable','isNil','pause','faxStatus','openchannelStatus','smsStatus','voiceStatus','request','Agents','then','error','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','catch','getRealtimeAgents','busy','getAgentStatus','isArray','startCase','findOne','getAgents','flatten','value','getAgentIdsByQueues','filter','includes','getAgentIdsByStatus','resolve','User','name','fullname','faxPause','pauseType','map','find','globalStatus','getSortedAgentsIdsByStatus','split','fields','order','DESC','ASC','substring','indexOf','validateSortParameter','sort','toLowerCase','sortAgentsByStatus','userpic','online','lastLoginAt','lastPauseAt','internal','address','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','mailStatus','chatStatusTime','openchannelStatusTime','mailStatusTime'];(function(_0x52acad,_0x297dd3){var _0x1eedf1=function(_0x35a7c2){while(--_0x35a7c2){_0x52acad['push'](_0x52acad['shift']());}};_0x1eedf1(++_0x297dd3);}(_0x6385,0x17a));var _0x5638=function(_0x38841c,_0x1af0bf){_0x38841c=_0x38841c-0x0;var _0x500610=_0x6385[_0x38841c];return _0x500610;};'use strict';var _=require(_0x5638('0x0'));var jayson=require('jayson/promise');var db=require(_0x5638('0x1'))['db'];var amiClient=jayson[_0x5638('0x2')][_0x5638('0x3')]({'port':0x232a});var routingClient=jayson[_0x5638('0x2')]['http']({'port':0x232c});function isAgentPaused(_0x1a5525,_0x4f0032){var _0x476814=[_0x1a5525[_0x5638('0x4')],_0x1a5525['faxPause'],_0x1a5525[_0x5638('0x5')],_0x1a5525[_0x5638('0x6')],_0x1a5525[_0x5638('0x7')],_0x1a5525[_0x5638('0x8')],_0x1a5525[_0x5638('0x9')]];if(!_0x4f0032)return _[_0x5638('0xa')](_0x476814);var _0xa2cbc=_['filter'](_0x476814);return _0xa2cbc[_0x5638('0xb')]>0x0&&_0xa2cbc['length']<_0x476814[_0x5638('0xb')]?!![]:![];}function isIdle(_0x4a6f14){return _0x4a6f14===_0x5638('0xc')||_0x4a6f14===_0x5638('0xd')||_0x4a6f14===_0x5638('0xe')||_0x4a6f14==='ringing'||_[_0x5638('0xf')](_0x4a6f14);}function isAgentIdle(_0x18864a){if(_0x18864a['voiceStatus']!==_0x5638('0xc')&&_0x18864a[_0x5638('0x8')]){_0x18864a['voiceStatus']=_0x5638('0x10');return![];}return _[_0x5638('0xa')]([_0x18864a['chatStatus'],_0x18864a[_0x5638('0x11')],_0x18864a['mailStatus'],_0x18864a[_0x5638('0x12')],_0x18864a[_0x5638('0x13')],_0x18864a[_0x5638('0x14')],_0x18864a['whatsappStatus']],isIdle);}function getRealtimeAgents(){return amiClient[_0x5638('0x15')](_0x5638('0x16'),{})[_0x5638('0x17')](function(_0x13afc8){if(_0x13afc8[_0x5638('0x18')]){throw new Error(_0x5638('0x19'));}var _0x907e77=_0x13afc8[_0x5638('0x1a')];return routingClient['request'](_0x5638('0x16'),{})[_0x5638('0x17')](function(_0x4ecb3a){if(_0x4ecb3a[_0x5638('0x18')]){throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');}var _0x30f6c2=_0x4ecb3a[_0x5638('0x1a')];return _[_0x5638('0x1b')]({},_0x907e77,_0x30f6c2);});})[_0x5638('0x1c')](function(_0x379875){throw _0x379875;});}exports[_0x5638('0x1d')]=getRealtimeAgents;function getAgentStatus(_0x522684){var _0xc4b1f5=_0x5638('0xd');if(isAgentPaused(_0x522684))_0xc4b1f5='pause';else if(isAgentPaused(_0x522684,!![]))_0xc4b1f5='*pause';else if(isAgentIdle(_0x522684))_0xc4b1f5='idle';else _0xc4b1f5=_0x5638('0x1e');return _0xc4b1f5;}exports[_0x5638('0x1f')]=getAgentStatus;function getAgentIdsByQueues(_0x23e520,_0x385b6b){var _0x5910e3=_[_0x5638('0x20')](_0x23e520)?_0x23e520:[_0x23e520];var _0x241f51=_[_0x5638('0x21')](_0x385b6b)+'Queue';var _0x5ee560=_['map'](_0x5910e3,function(_0xbac93f){return db[_0x241f51][_0x5638('0x22')]({'where':{'id':_0xbac93f}})[_0x5638('0x17')](function(_0x5e25f5){if(!_0x5e25f5)return[];return _0x5e25f5[_0x5638('0x23')]({'attributes':['id'],'raw':!![]});});});return Promise['all'](_0x5ee560)[_0x5638('0x17')](function(_0x473c8d){var _0x27d729=_(_0x473c8d)[_0x5638('0x24')]()['map']('id')['uniq']()[_0x5638('0x25')]();return _0x27d729;});}exports[_0x5638('0x26')]=getAgentIdsByQueues;function getAgentIdsByStatus(_0x2f064c,_0x254321,_0x4f2a54){try{if(_0x254321[_0x5638('0xb')]>0x0){_0x2f064c=_0x2f064c[_0x5638('0x27')](function(_0x200b7c){return _0x254321[_0x5638('0x28')](_0x200b7c['id']);});}var _0x298d7a=_0x2f064c[_0x5638('0x27')](function(_0x2f48c9){var _0x270666=_0x5638('0x1e');if(isAgentIdle(_0x2f48c9)){_0x270666='idle';}return _0x270666===_0x4f2a54;});return _['map'](_0x298d7a,'id');}catch(_0x55cd94){throw _0x55cd94;}}exports[_0x5638('0x29')]=getAgentIdsByStatus;function getSortedAgentsIdsByStatus(_0x28c0c8,_0xe46462,_0x466064){return Promise[_0x5638('0x2a')]()[_0x5638('0x17')](function(){if(_0xe46462[_0x5638('0xb')]>0x0){_0x28c0c8=_0x28c0c8[_0x5638('0x27')](function(_0xc2711){return _0xe46462[_0x5638('0x28')](_0xc2711['id']);});}return _0x28c0c8;})[_0x5638('0x17')](function(){return db[_0x5638('0x2b')]['findAll']({'attributes':['id',_0x5638('0x2c'),_0x5638('0x2d'),'chatPause',_0x5638('0x2e'),_0x5638('0x5'),_0x5638('0x6'),_0x5638('0x7'),_0x5638('0x8'),_0x5638('0x9'),_0x5638('0x2f')],'where':{'id':{'$in':_[_0x5638('0x30')](_0x28c0c8,'id')}},'raw':!![]});})[_0x5638('0x17')](function(_0x3e6bad){return _0x3e6bad[_0x5638('0x30')](function(_0x2116a4){var _0x344950=_[_0x5638('0x31')](_0x28c0c8,['id',_0x2116a4['id']]);var _0x584ae3=filterAgentAttributes(_0x344950);_['merge'](_0x2116a4,_0x584ae3);_0x2116a4[_0x5638('0x32')]=getAgentStatus(_0x2116a4);return _0x2116a4;});})[_0x5638('0x17')](function(_0x3fcac4){var _0x4154c9=sortAgentsByStatus(_0x3fcac4,_0x466064);return _[_0x5638('0x30')](_0x4154c9,'id');})[_0x5638('0x1c')](function(_0x3a1b14){throw _0x3a1b14;});}exports[_0x5638('0x33')]=getSortedAgentsIdsByStatus;function getUpdatedSortOptions(_0xdc02bd){var _0x4531e2={'fields':[],'order':null};var _0x590a49=_0xdc02bd[_0x5638('0x34')](',');_0x4531e2[_0x5638('0x35')]=_['filter'](_0x590a49,function(_0x22c7dd){if(!_0x22c7dd[_0x5638('0x28')]('globalStatus')){return!![];}_0x4531e2[_0x5638('0x36')]=_['startsWith'](_0x22c7dd,'-')?_0x5638('0x37'):_0x5638('0x38');return![];});return _0x4531e2;}exports['getUpdatedSortOptions']=getUpdatedSortOptions;function validateSortParameter(_0x3a615f){if(_0x3a615f['includes'](_0x5638('0x2d'))&&!_0x3a615f[_0x5638('0x28')]('internal')){var _0x2f9e8b=_0x3a615f[_0x5638('0x39')](0x0,_0x3a615f[_0x5638('0x3a')]('fullname'));_0x3a615f+=','+_0x2f9e8b+'internal';}return _0x3a615f;}exports[_0x5638('0x3b')]=validateSortParameter;function sortAgentsByStatus(_0x426348,_0x369879){var _0x49c3c5=_0x426348[_0x5638('0x3c')](function(_0x48bc8f,_0x458df5){if(_0x48bc8f[_0x5638('0x32')]===_0x458df5['globalStatus']){if(_0x48bc8f['globalStatus']===_0x5638('0x10')){if(_0x369879===_0x5638('0x37')){return(_0x48bc8f[_0x5638('0x2f')]||'')<(_0x458df5[_0x5638('0x2f')]||'')||_0x48bc8f[_0x5638('0x2d')][_0x5638('0x3d')]()>_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?0x1:-0x1;}else{return(_0x48bc8f[_0x5638('0x2f')]||'')<(_0x458df5[_0x5638('0x2f')]||'')||_0x48bc8f[_0x5638('0x2d')]['toLowerCase']()>_0x458df5['fullname'][_0x5638('0x3d')]()?-0x1:0x1;}}else{if(_0x369879===_0x5638('0x37')){return _0x48bc8f[_0x5638('0x2d')]['toLowerCase']()<_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?0x1:-0x1;}else{return _0x48bc8f['fullname'][_0x5638('0x3d')]()<_0x458df5[_0x5638('0x2d')][_0x5638('0x3d')]()?-0x1:0x1;}}}else{if(_0x369879===_0x5638('0x37')){return _0x48bc8f[_0x5638('0x32')]<_0x458df5['globalStatus']?0x1:-0x1;}else{return _0x48bc8f[_0x5638('0x32')]<_0x458df5['globalStatus']?-0x1:0x1;}}});return _0x49c3c5;}exports[_0x5638('0x3e')]=sortAgentsByStatus;function filterAgentAttributes(_0x494d43){var _0x503f32=[_0x5638('0x3f'),_0x5638('0x40'),_0x5638('0x41'),_0x5638('0x42'),_0x5638('0x2f'),_0x5638('0x42'),_0x5638('0x43'),_0x5638('0x44'),'chatPause',_0x5638('0x6'),_0x5638('0x5'),_0x5638('0x7'),_0x5638('0x9'),'faxPause',_0x5638('0x8'),_0x5638('0x45'),_0x5638('0x46'),_0x5638('0x47'),_0x5638('0x48'),_0x5638('0x49'),_0x5638('0x4a'),'chatCurrentCapacity','openchannelCurrentCapacity',_0x5638('0x4b'),_0x5638('0x4c'),_0x5638('0x4d'),'faxCurrentCapacity','chatStatus',_0x5638('0x12'),_0x5638('0x4e'),_0x5638('0x13'),'whatsappStatus',_0x5638('0x11'),_0x5638('0x14'),_0x5638('0x4f'),_0x5638('0x50'),_0x5638('0x51'),'smsStatusTime',_0x5638('0x52'),_0x5638('0x53'),'voiceStatusTime',_0x5638('0x54'),_0x5638('0x55'),_0x5638('0x56'),'phoneBarEnableScreenRecordingByAgent',_0x5638('0x57'),_0x5638('0x58')];var _0x5f336f=[_0x5638('0x4'),_0x5638('0x6'),_0x5638('0x5'),_0x5638('0x7'),_0x5638('0x9'),_0x5638('0x2e'),_0x5638('0x8'),'online'];var _0x11e2e3=_(_0x494d43)[_0x5638('0x59')](_0x5f336f)[_0x5638('0x5a')](_0x503f32)['value']();return _0x11e2e3;}exports[_0x5638('0x5b')]=filterAgentAttributes;
\ No newline at end of file
diff --git a/server/components/realtime/queues.js b/server/components/realtime/queues.js
new file mode 100644 (file)
index 0000000..ed860fa
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x5752=['merge','pick','client','http','available','loggedIn','paused','waiting','busy','inUse','onHold','ringing','ringInUse','talking','unavailable','unknown','pTalking','message','dialActive','Trunk','startPredictive','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','request','startCase','Queues','then','catch','getRealtimeQueues','voice','outbound','map','get','loggedInDb'];(function(_0x4aadd1,_0x540098){var _0x10ac15=function(_0x6706b2){while(--_0x6706b2){_0x4aadd1['push'](_0x4aadd1['shift']());}};_0x10ac15(++_0x540098);}(_0x5752,0x144));var _0x2575=function(_0x209941,_0x5c9988){_0x209941=_0x209941-0x0;var _0x1e8729=_0x5752[_0x209941];return _0x1e8729;};'use strict';var _=require('lodash');var jayson=require('jayson/promise');var util=require('util');var amiClient=jayson['client']['http']({'port':0x232a});var routingClient=jayson[_0x2575('0x0')][_0x2575('0x1')]({'port':0x232c});var QUEUE_DEFAULT_ATTRIBUTES=[_0x2575('0x2'),_0x2575('0x3'),_0x2575('0x4'),_0x2575('0x5')];var INBOUND_VOICE_QUEUE_ATTRIBUTES=[_0x2575('0x6'),_0x2575('0x7'),'invalid','loggedInDb','notInUse',_0x2575('0x8'),_0x2575('0x9'),_0x2575('0xa'),_0x2575('0xb'),_0x2575('0xc'),_0x2575('0xd')];var OUTBOUND_VOICE_QUEUE_ATTRIBUTES=[_0x2575('0xe'),'originated',_0x2575('0xf'),_0x2575('0x10'),'dialMethod',_0x2575('0x11'),_0x2575('0x12'),_0x2575('0x13'),_0x2575('0x14'),_0x2575('0x15'),_0x2575('0x16'),_0x2575('0x17'),_0x2575('0x18'),_0x2575('0x19'),_0x2575('0x1a'),_0x2575('0x1b'),_0x2575('0x1c'),_0x2575('0x1d'),'predictiveIntervalDroppedCallsTimeout',_0x2575('0x1e'),_0x2575('0x1f'),_0x2575('0x20')];function getRealtimeQueues(_0x2fa357,_0x26b310){var _0x68ebc7=_0x26b310==='voice'?amiClient:routingClient;return _0x68ebc7[_0x2575('0x21')](_[_0x2575('0x22')](_0x26b310)+_0x2575('0x23'),_0x2fa357)[_0x2575('0x24')](function(_0x4a69bf){if(_0x4a69bf['error'])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x26b310));return _0x4a69bf['result'];})[_0x2575('0x25')](function(_0x27856c){throw _0x27856c;});}exports[_0x2575('0x26')]=getRealtimeQueues;function initializeQueues(_0x14a234,_0x3f1c91,_0x6bc019,_0x4d25d1){var _0x6216fc=QUEUE_DEFAULT_ATTRIBUTES;if(_0x6bc019===_0x2575('0x27')){if(_0x4d25d1===_0x2575('0x28')){_0x6216fc=_0x6216fc['concat'](OUTBOUND_VOICE_QUEUE_ATTRIBUTES);}else{_0x6216fc=_0x6216fc['concat'](INBOUND_VOICE_QUEUE_ATTRIBUTES);}}return _0x14a234[_0x2575('0x29')](function(_0x27b776){var _0x445ff4=_0x27b776[_0x2575('0x2a')]({'plain':!![]});_0x445ff4['paused']=0x0;_0x445ff4[_0x2575('0x2b')]=0x0;_0x445ff4['loggedIn']=0x0;_0x445ff4['available']=0x0;_0x445ff4[_0x2575('0x5')]=0x0;if(_0x6bc019==='voice'){_0x445ff4[_0x2575('0xb')]=0x0;_0x445ff4[_0x2575('0x6')]=0x0;if(_0x4d25d1===_0x2575('0x28')){_0x445ff4[_0x2575('0xe')]=0x0;_0x445ff4['originated']=0x0;}}var _0x13889c=_['find'](_0x3f1c91,['id',_0x445ff4['id']]);if(_0x13889c){_[_0x2575('0x2c')](_0x445ff4,_[_0x2575('0x2d')](_0x13889c,_0x6216fc));}return _0x445ff4;});}exports['initializeQueues']=initializeQueues;
\ No newline at end of file
index 99f3c37..fe8d18b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x488814,_0x3fec59){var _0x58138b=function(_0x575c59){while(--_0x575c59){_0x488814['push'](_0x488814['shift']());}};_0x58138b(++_0x3fec59);}(_0x9957,0x93));var _0x7995=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0x9957[_0x2f5ac5];return _0x37c9a8;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
+var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x2536ee,_0x38153b){var _0x318b70=function(_0x2be0f4){while(--_0x2be0f4){_0x2536ee['push'](_0x2536ee['shift']());}};_0x318b70(++_0x38153b);}(_0x9957,0x93));var _0x7995=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9957[_0x6c993a];return _0x27f547;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
index fa0f75e..6680f1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb396=['test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','substring','crypto','child_process','execSync','keys','IPv4','concat','head','mac','00:00:00:00:00:00','address','cpus','map','model','createHash','md5','digest','hex','getUuid','platform'];(function(_0x122e9b,_0x391bf4){var _0x22c247=function(_0x1b2c65){while(--_0x1b2c65){_0x122e9b['push'](_0x122e9b['shift']());}};_0x22c247(++_0x391bf4);}(_0xb396,0x105));var _0x6b39=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xb396[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var os=require('os');var crypto=require(_0x6b39('0x0'));var machine=require('bimedia-machine-uuid');var exec=require(_0x6b39('0x1'))[_0x6b39('0x2')];var config=require('../environment');function getInterfaces(){var _0x1908a3=[];var _0x3c0e7a=os['networkInterfaces']();var _0x4954db=_['orderBy'](_[_0x6b39('0x3')](_0x3c0e7a));for(var _0x38d8fa=0x0;_0x38d8fa<_0x4954db['length'];_0x38d8fa++){var _0x27eef8=_0x3c0e7a[_0x4954db[_0x38d8fa]]['filter'](function(_0x492607){return _0x492607['family']===_0x6b39('0x4')&&_0x492607['internal']===![];});_0x1908a3=_0x1908a3[_0x6b39('0x5')](_0x27eef8);}return _0x1908a3;}function getFirstInterface(){var _0x4b6a06=_[_0x6b39('0x6')](getInterfaces());return{'macAddress':_0x4b6a06&&_0x4b6a06[_0x6b39('0x7')]?_0x4b6a06[_0x6b39('0x7')]:_0x6b39('0x8'),'ipAddress':_0x4b6a06&&_0x4b6a06[_0x6b39('0x9')]?_0x4b6a06[_0x6b39('0x9')]:'127.0.0.1'};}exports['getFirstInterface']=getFirstInterface;function getCPUhash(){var _0x8fbb97=_['orderBy'](os[_0x6b39('0xa')]()[_0x6b39('0xb')](function(_0x298a78){return _0x298a78[_0x6b39('0xc')];}))['join'](':');return crypto[_0x6b39('0xd')](_0x6b39('0xe'))['update'](_0x8fbb97)[_0x6b39('0xf')](_0x6b39('0x10'));}exports[_0x6b39('0x11')]=function(){var _0xba79f4=os[_0x6b39('0x12')]();var _0x257e3c=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x257e3c[_0x6b39('0x13')](config[_0x6b39('0x14')])){return config[_0x6b39('0x14')];}else if(_0xba79f4===_0x6b39('0x15')){return exec(_0x6b39('0x16'),{'encoding':_0x6b39('0x17')})[_0x6b39('0x18')]('\x0d\x0a','');}else{var _0x15e42e=getFirstInterface();var _0x1e9b95=getCPUhash();var _0x12e7e7=_0x1e9b95+'|'+os[_0x6b39('0x19')]()+'|'+_0x15e42e['macAddress']+'|'+_0x15e42e[_0x6b39('0x1a')];var _0x4a3c9a=crypto['createHash'](_0x6b39('0xe'))['update'](_0x12e7e7)['digest']('hex');return _0x4a3c9a['substring'](0x0,0x8)+'-'+_0x4a3c9a[_0x6b39('0x1b')](0x8,0xc)+'-'+_0x4a3c9a[_0x6b39('0x1b')](0xc,0x10)+'-'+_0x4a3c9a[_0x6b39('0x1b')](0x10,0x14)+'-'+_0x4a3c9a[_0x6b39('0x1b')](0x14);}};
\ No newline at end of file
+var _0xfdd1=['00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','orderBy','cpus','map','model','join','createHash','update','hex','getUuid','platform','test','licenseToken','win32','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','ipAddress','md5','digest','substring','lodash','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','keys','length','filter','IPv4','internal','concat','head','mac'];(function(_0x104a33,_0x390c26){var _0x2b0737=function(_0xbb853d){while(--_0xbb853d){_0x104a33['push'](_0x104a33['shift']());}};_0x2b0737(++_0x390c26);}(_0xfdd1,0x19f));var _0x1fdd=function(_0x4d1cc5,_0x5cf765){_0x4d1cc5=_0x4d1cc5-0x0;var _0x5e3fe5=_0xfdd1[_0x4d1cc5];return _0x5e3fe5;};'use strict';var _=require(_0x1fdd('0x0'));var os=require('os');var crypto=require('crypto');var machine=require(_0x1fdd('0x1'));var exec=require(_0x1fdd('0x2'))[_0x1fdd('0x3')];var config=require(_0x1fdd('0x4'));function getInterfaces(){var _0x340449=[];var _0x2c9381=os[_0x1fdd('0x5')]();var _0x3c32a7=_['orderBy'](_[_0x1fdd('0x6')](_0x2c9381));for(var _0x17c348=0x0;_0x17c348<_0x3c32a7[_0x1fdd('0x7')];_0x17c348++){var _0x3bab03=_0x2c9381[_0x3c32a7[_0x17c348]][_0x1fdd('0x8')](function(_0x31ac5f){return _0x31ac5f['family']===_0x1fdd('0x9')&&_0x31ac5f[_0x1fdd('0xa')]===![];});_0x340449=_0x340449[_0x1fdd('0xb')](_0x3bab03);}return _0x340449;}function getFirstInterface(){var _0x3cab2b=_[_0x1fdd('0xc')](getInterfaces());return{'macAddress':_0x3cab2b&&_0x3cab2b[_0x1fdd('0xd')]?_0x3cab2b[_0x1fdd('0xd')]:_0x1fdd('0xe'),'ipAddress':_0x3cab2b&&_0x3cab2b[_0x1fdd('0xf')]?_0x3cab2b[_0x1fdd('0xf')]:_0x1fdd('0x10')};}exports[_0x1fdd('0x11')]=getFirstInterface;function getCPUhash(){var _0x2eae23=_[_0x1fdd('0x12')](os[_0x1fdd('0x13')]()[_0x1fdd('0x14')](function(_0x3e9fdd){return _0x3e9fdd[_0x1fdd('0x15')];}))[_0x1fdd('0x16')](':');return crypto[_0x1fdd('0x17')]('md5')[_0x1fdd('0x18')](_0x2eae23)['digest'](_0x1fdd('0x19'));}exports[_0x1fdd('0x1a')]=function(){var _0x1d7673=os[_0x1fdd('0x1b')]();var _0x20d6eb=/[0-9a-f-]{36}/;if(config['licenseToken']&&_0x20d6eb[_0x1fdd('0x1c')](config[_0x1fdd('0x1d')])){return config['licenseToken'];}else if(_0x1d7673===_0x1fdd('0x1e')){return exec(_0x1fdd('0x1f'),{'encoding':_0x1fdd('0x20')})[_0x1fdd('0x21')]('\x0d\x0a','');}else{var _0x310692=getFirstInterface();var _0x20c7b8=getCPUhash();var _0x5d288c=_0x20c7b8+'|'+os[_0x1fdd('0x22')]()+'|'+_0x310692['macAddress']+'|'+_0x310692[_0x1fdd('0x23')];var _0x118a61=crypto[_0x1fdd('0x17')](_0x1fdd('0x24'))['update'](_0x5d288c)[_0x1fdd('0x25')](_0x1fdd('0x19'));return _0x118a61[_0x1fdd('0x26')](0x0,0x8)+'-'+_0x118a61[_0x1fdd('0x26')](0x8,0xc)+'-'+_0x118a61[_0x1fdd('0x26')](0xc,0x10)+'-'+_0x118a61['substring'](0x10,0x14)+'-'+_0x118a61[_0x1fdd('0x26')](0x14);}};
\ No newline at end of file
index e9c26e4..31cef8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48b4=['data1','active','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','info','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','Disabled','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','update','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','error','message','finally','getUuid','License','findOrCreate','spread','default','util','moment','bluebird','pkginfo','version','./hardware','license','https://www.xcallymotion.com','format','exports','GET','then','catch','data2'];(function(_0x4739dc,_0x1c4222){var _0x2610d6=function(_0x562625){while(--_0x562625){_0x4739dc['push'](_0x4739dc['shift']());}};_0x2610d6(++_0x1c4222);}(_0x48b4,0x1c6));var _0x448b=function(_0x42cb33,_0x38eac3){_0x42cb33=_0x42cb33-0x0;var _0xca7455=_0x48b4[_0x42cb33];return _0xca7455;};'use strict';var util=require(_0x448b('0x0'));var moment=require(_0x448b('0x1'));var rp=require('request-promise');var BPromise=require(_0x448b('0x2'));var pkginfo=require(_0x448b('0x3'))(module,_0x448b('0x4'));var db=require('../../mysqldb')['db'];var encryptor=require('../../components/encryptor');var hardware=require(_0x448b('0x5'));var logger=require('../logger')(_0x448b('0x6'));var HOST=_0x448b('0x7');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x318595){return new BPromise(function(_0x5c306f,_0x4b842d){var _0x2265fc=util[_0x448b('0x8')]('%s/api/servers/%s/check?version=%s',HOST,_0x318595,module[_0x448b('0x9')][_0x448b('0x4')]);if(oldToken){_0x2265fc=util['format']('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x318595,module['exports'][_0x448b('0x4')],oldToken);}var _0x2bf700={'uri':_0x2265fc,'method':_0x448b('0xa'),'timeout':0xea60,'json':!![]};return rp(_0x2bf700)[_0x448b('0xb')](function(_0x18a41a){_0x5c306f(_0x18a41a);})[_0x448b('0xc')](function(_0x2acbe9){_0x4b842d(_0x2acbe9);});});}function manageLicense(_0x513bee,_0x42030d){var _0x2cd99a=_0x42030d['get']({'plain':!![]});if(!isOldTokenSent&&_0x2cd99a['data1']!==_0x513bee&&!_0x2cd99a[_0x448b('0xd')]){oldToken=_0x2cd99a[_0x448b('0xe')];}httpRequest(_0x513bee)[_0x448b('0xb')](function(_0x4e9552){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x4e9552[_0x448b('0xf')]){isOldTokenSent=![];if(!_0x2cd99a[_0x448b('0x6')]&&_0x2cd99a[_0x448b('0x6')]!=_0x4e9552['license']||_0x2cd99a[_0x448b('0x6')]&&_0x2cd99a[_0x448b('0xd')]){logger['info'](_0x448b('0x10'));}if(_0x2cd99a['license']&&!_0x2cd99a[_0x448b('0xd')]&&_0x2cd99a['license']!=_0x4e9552[_0x448b('0x6')]){logger[_0x448b('0x11')](_0x448b('0x12'));}if(_0x2cd99a['license']&&!_0x2cd99a[_0x448b('0xd')]&&_0x2cd99a[_0x448b('0x6')]==_0x4e9552[_0x448b('0x6')]){return _0x42030d;}return _0x42030d['update']({'data1':_0x513bee,'data2':null,'license':_0x4e9552[_0x448b('0x6')]});}else{if(_0x4e9552['license']||_0x2cd99a[_0x448b('0x6')]){if(!_0x2cd99a[_0x448b('0xd')]){if(_0x2cd99a['data1']==_0x513bee){GRAY_PERIOD_REASON=_0x448b('0x13');logger[_0x448b('0x11')]('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON=_0x448b('0x14');logger[_0x448b('0x11')](_0x448b('0x15'),_0x2cd99a[_0x448b('0xe')],_0x513bee);}logger[_0x448b('0x11')](_0x448b('0x16'),GRAY_PERIOD_REASON[_0x448b('0x17')](),moment()[_0x448b('0x8')](_0x448b('0x18')));return _0x42030d[_0x448b('0x19')]({'data2':encryptor[_0x448b('0x1a')](moment()[_0x448b('0x8')]('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()[_0x448b('0x1b')](encryptor[_0x448b('0x1c')](_0x2cd99a[_0x448b('0xd')]),_0x448b('0x1d'))>DAYS){logger['info'](_0x448b('0x1e'),moment()[_0x448b('0x8')](_0x448b('0x18')));isOldTokenSent=![];return _0x42030d[_0x448b('0x19')]({'data1':_0x513bee,'data2':null,'license':null});}}}else{if(_0x2cd99a[_0x448b('0xe')]!=_0x513bee){logger['info'](_0x448b('0x15'),_0x2cd99a[_0x448b('0xe')],_0x513bee);return _0x42030d[_0x448b('0x19')]({'data1':_0x513bee,'data2':null,'license':null});}}}return _0x42030d;})[_0x448b('0xb')](function(_0x2658ee){_0x42030d=_0x2658ee;})[_0x448b('0xc')](function(_0x19b511){logger[_0x448b('0x1f')](_0x19b511[_0x448b('0x20')]);})[_0x448b('0x21')](function(){setTimeout(function(){manageLicense(hardware[_0x448b('0x22')](),_0x42030d);},TIME);});}function defaultLicense(){var _0x208561=hardware[_0x448b('0x22')]();if(_0x208561){return db[_0x448b('0x23')][_0x448b('0x24')]({'where':{'id':0x1},'defaults':{'data1':_0x208561}})[_0x448b('0x25')](function(_0x18f0eb,_0x1a9708){logger['info']('SERVICE\x20LICENSE\x20STARTED\x20%s',_0x208561);manageLicense(_0x208561,_0x18f0eb);})['catch'](function(_0x46e6e0){logger['error'](_0x46e6e0[_0x448b('0x20')]);});}}exports[_0x448b('0x26')]=defaultLicense;
\ No newline at end of file
+var _0x83f5=['exports','%s/api/servers/%s/check?version=%s&oldtoken=%s','GET','get','data1','data2','then','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','Changed','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','YYYY-MM-DD\x20HH:mm','encryptString','diff','decryptString','days','DEMO\x20START\x20AT\x20%s','catch','message','finally','getUuid','License','findOrCreate','spread','SERVICE\x20LICENSE\x20STARTED\x20%s','error','default','util','moment','request-promise','bluebird','pkginfo','version','../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s'];(function(_0x48db34,_0x2a6ec9){var _0x3d625d=function(_0x4169b6){while(--_0x4169b6){_0x48db34['push'](_0x48db34['shift']());}};_0x3d625d(++_0x2a6ec9);}(_0x83f5,0x106));var _0x583f=function(_0x1a87cd,_0x2a244f){_0x1a87cd=_0x1a87cd-0x0;var _0x4af60e=_0x83f5[_0x1a87cd];return _0x4af60e;};'use strict';var util=require(_0x583f('0x0'));var moment=require(_0x583f('0x1'));var rp=require(_0x583f('0x2'));var BPromise=require(_0x583f('0x3'));var pkginfo=require(_0x583f('0x4'))(module,_0x583f('0x5'));var db=require(_0x583f('0x6'))['db'];var encryptor=require(_0x583f('0x7'));var hardware=require(_0x583f('0x8'));var logger=require(_0x583f('0x9'))(_0x583f('0xa'));var HOST=_0x583f('0xb');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x35d863){return new BPromise(function(_0x1f7b42,_0x512c25){var _0x40dfd0=util[_0x583f('0xc')](_0x583f('0xd'),HOST,_0x35d863,module[_0x583f('0xe')][_0x583f('0x5')]);if(oldToken){_0x40dfd0=util['format'](_0x583f('0xf'),HOST,_0x35d863,module[_0x583f('0xe')]['version'],oldToken);}var _0xca2c6d={'uri':_0x40dfd0,'method':_0x583f('0x10'),'timeout':0xea60,'json':!![]};return rp(_0xca2c6d)['then'](function(_0x559172){_0x1f7b42(_0x559172);})['catch'](function(_0x448d0d){_0x512c25(_0x448d0d);});});}function manageLicense(_0x5d4e9c,_0x1e33ee){var _0x4c7f0d=_0x1e33ee[_0x583f('0x11')]({'plain':!![]});if(!isOldTokenSent&&_0x4c7f0d[_0x583f('0x12')]!==_0x5d4e9c&&!_0x4c7f0d[_0x583f('0x13')]){oldToken=_0x4c7f0d[_0x583f('0x12')];}httpRequest(_0x5d4e9c)[_0x583f('0x14')](function(_0x263195){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x263195['active']){isOldTokenSent=![];if(!_0x4c7f0d['license']&&_0x4c7f0d[_0x583f('0xa')]!=_0x263195['license']||_0x4c7f0d[_0x583f('0xa')]&&_0x4c7f0d[_0x583f('0x13')]){logger[_0x583f('0x15')](_0x583f('0x16'));}if(_0x4c7f0d['license']&&!_0x4c7f0d[_0x583f('0x13')]&&_0x4c7f0d[_0x583f('0xa')]!=_0x263195['license']){logger[_0x583f('0x15')](_0x583f('0x17'));}if(_0x4c7f0d[_0x583f('0xa')]&&!_0x4c7f0d['data2']&&_0x4c7f0d[_0x583f('0xa')]==_0x263195[_0x583f('0xa')]){return _0x1e33ee;}return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':_0x263195[_0x583f('0xa')]});}else{if(_0x263195[_0x583f('0xa')]||_0x4c7f0d['license']){if(!_0x4c7f0d[_0x583f('0x13')]){if(_0x4c7f0d[_0x583f('0x12')]==_0x5d4e9c){GRAY_PERIOD_REASON='Disabled';logger[_0x583f('0x15')](_0x583f('0x19'));}else{GRAY_PERIOD_REASON=_0x583f('0x1a');logger['info'](_0x583f('0x1b'),_0x4c7f0d[_0x583f('0x12')],_0x5d4e9c);}logger[_0x583f('0x15')](_0x583f('0x1c'),GRAY_PERIOD_REASON[_0x583f('0x1d')](),moment()[_0x583f('0xc')](_0x583f('0x1e')));return _0x1e33ee['update']({'data2':encryptor[_0x583f('0x1f')](moment()[_0x583f('0xc')](_0x583f('0x1e')))});}else{if(moment()[_0x583f('0x20')](encryptor[_0x583f('0x21')](_0x4c7f0d[_0x583f('0x13')]),_0x583f('0x22'))>DAYS){logger[_0x583f('0x15')](_0x583f('0x23'),moment()[_0x583f('0xc')](_0x583f('0x1e')));isOldTokenSent=![];return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':null});}}}else{if(_0x4c7f0d[_0x583f('0x12')]!=_0x5d4e9c){logger[_0x583f('0x15')](_0x583f('0x1b'),_0x4c7f0d['data1'],_0x5d4e9c);return _0x1e33ee[_0x583f('0x18')]({'data1':_0x5d4e9c,'data2':null,'license':null});}}}return _0x1e33ee;})[_0x583f('0x14')](function(_0x57d19d){_0x1e33ee=_0x57d19d;})[_0x583f('0x24')](function(_0x240049){logger['error'](_0x240049[_0x583f('0x25')]);})[_0x583f('0x26')](function(){setTimeout(function(){manageLicense(hardware[_0x583f('0x27')](),_0x1e33ee);},TIME);});}function defaultLicense(){var _0x39fddb=hardware['getUuid']();if(_0x39fddb){return db[_0x583f('0x28')][_0x583f('0x29')]({'where':{'id':0x1},'defaults':{'data1':_0x39fddb}})[_0x583f('0x2a')](function(_0x3b06a6,_0x458212){logger[_0x583f('0x15')](_0x583f('0x2b'),_0x39fddb);manageLicense(_0x39fddb,_0x3b06a6);})['catch'](function(_0x33a9c4){logger[_0x583f('0x2c')](_0x33a9c4[_0x583f('0x25')]);});}}exports[_0x583f('0x2d')]=defaultLicense;
\ No newline at end of file
index c261e1e..bfcded6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8075=['../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','License','find','defaults','then','catch','uuid','data1','data2','split','decryptString','format','parse','demo','deadline','add','days','grayReason','machineUuid','changed','disabled','message','role','sequelize','col','count','admin','user','telephone','users','telephones','forEach','pick','countBy','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','util','lodash','moment','bluebird','./hardware','../../components/encryptor'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x8075,0xdb));var _0x5807=function(_0x2042e4,_0x49de4a){_0x2042e4=_0x2042e4-0x0;var _0xc73b2d=_0x8075[_0x2042e4];return _0xc73b2d;};'use strict';var util=require(_0x5807('0x0'));var _=require(_0x5807('0x1'));var moment=require(_0x5807('0x2'));var BPromise=require(_0x5807('0x3'));var hardware=require(_0x5807('0x4'));var encryptor=require(_0x5807('0x5'));var db=require(_0x5807('0x6'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x5807('0x7'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':'Breaking\x20license','machineUuid':hardware[_0x5807('0x8')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x382214){return new BPromise(function(_0x1db018,_0x5d95ce){return db[_0x5807('0x9')][_0x5807('0xa')](_[_0x5807('0xb')](_0x382214,{'raw':!![],'where':{'id':0x1}}))[_0x5807('0xc')](function(_0x2f89dd){return checkLicense(_0x2f89dd,null);})[_0x5807('0xc')](function(_0x25abf1){_0x1db018(_0x25abf1);return;})[_0x5807('0xd')](function(_0x3f09d0){_0x5d95ce(_0x3f09d0);});});}function checkLicense(_0x7c4b8a,_0xb09373){if(!_0x7c4b8a){demoLicense[_0x5807('0xe')]=_0x7c4b8a[_0x5807('0xf')];return demoLicense;}try{var _0x3e83a5=_0xb09373||_0x7c4b8a['license'];if(_['isEmpty'](_0x3e83a5)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x5d4bc2=_0x7c4b8a[_0x5807('0xf')];var _0x4b72b5=_0x7c4b8a[_0x5807('0x10')];var _0x1cf406=_0x5d4bc2[_0x5807('0x11')]('-')[0x4];var _0x3a8321=_0x5d4bc2['split']('-')[0x0];var _0x2adf4c=encryptor[_0x5807('0x12')](_0x3e83a5,util[_0x5807('0x13')]('%s:%s:%s',_0x1cf406,_0x5d4bc2,_0x3a8321));var _0x4f00bb=JSON[_0x5807('0x14')](_0x2adf4c);_0x4f00bb[_0x5807('0x15')]=![];_0x4f00bb['uuid']=_0x5d4bc2;_0x4f00bb['machineUuid']=hardware[_0x5807('0x8')]();if(_0x4b72b5){var _0x5924ac=encryptor[_0x5807('0x12')](_0x4b72b5);_0x4f00bb['gray']=_0x5924ac;_0x4f00bb[_0x5807('0x16')]=moment(_0x5924ac)[_0x5807('0x17')](0x7,_0x5807('0x18'))[_0x5807('0x13')]();_0x4f00bb[_0x5807('0x19')]=_0x4f00bb[_0x5807('0xe')]!=_0x4f00bb[_0x5807('0x1a')]?_0x5807('0x1b'):_0x5807('0x1c');}return _0x4f00bb;}catch(_0x2314a6){breakingLicense[_0x5807('0xe')]=_0x7c4b8a[_0x5807('0xf')];breakingLicense[_0x5807('0x1d')]=_0x2314a6[_0x5807('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3cb247,_0x218f84){getLicense()[_0x5807('0xc')](function(_0x569f1f){return db['User']['findAll']({'attributes':[_0x5807('0x1e'),[db[_0x5807('0x1f')]['fn']('COUNT',db[_0x5807('0x1f')][_0x5807('0x20')](_0x5807('0x1e'))),_0x5807('0x21')]],'group':_0x5807('0x1e'),'where':{'role':{'$or':[_0x5807('0x22'),_0x5807('0x23'),_0x5807('0x24')]}},'raw':!![]})[_0x5807('0xc')](function(_0x437341){var _0xf18eff={'user':_0x569f1f[_0x5807('0x25')]||0x0,'telephone':_0x569f1f[_0x5807('0x26')]||0x0};_0x437341[_0x5807('0x27')](function(_0x3f6f4f){var _0x4a2a12=_0x3f6f4f[_0x5807('0x1e')]===_0x5807('0x22')?_0x5807('0x23'):_0x3f6f4f[_0x5807('0x1e')];_0xf18eff[_0x4a2a12]-=_0x3f6f4f[_0x5807('0x21')];if(_0xf18eff[_0x4a2a12]<0x0)_0xf18eff[_0x4a2a12]=0x0;});_0x3cb247(_0xf18eff);return;});})[_0x5807('0xd')](function(_0x533c67){_0x218f84(_0x533c67);});});}function checkUserLimits(_0x50fb17){return new BPromise(function(_0x2f75ac,_0x4dc9a6){getLimits()['then'](function(_0x18a173){var _0x26a390=_[_0x5807('0x28')](_[_0x5807('0x29')](_0x50fb17,_0x5807('0x1e')),[_0x5807('0x22'),_0x5807('0x23'),_0x5807('0x24')]);var _0x239634=(_0x26a390[_0x5807('0x22')]||0x0)+(_0x26a390[_0x5807('0x23')]||0x0);var _0x55358c=_0x26a390[_0x5807('0x24')]||0x0;if(_0x239634>_0x18a173[_0x5807('0x23')])return _0x4dc9a6(_0x5807('0x2a'));if(_0x55358c>_0x18a173[_0x5807('0x24')])return _0x4dc9a6(_0x5807('0x2b'));return _0x2f75ac();})[_0x5807('0xd')](function(_0x463a61){_0x4dc9a6(_0x463a61);});});}module[_0x5807('0x2c')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0x722c=['pick','countBy','telephone','License\x20limit\x20reached\x20for\x20users','License\x20limit\x20reached\x20for\x20telephones','exports','lodash','moment','./hardware','../../components/encryptor','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','License','find','defaults','then','data1','isEmpty','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','parse','demo','uuid','machineUuid','getUuid','deadline','add','days','grayReason','changed','disabled','message','User','findAll','role','sequelize','col','count','admin','user','telephones','forEach','catch'];(function(_0x32b542,_0x4512fa){var _0x554d54=function(_0x35cdfc){while(--_0x35cdfc){_0x32b542['push'](_0x32b542['shift']());}};_0x554d54(++_0x4512fa);}(_0x722c,0xc6));var _0xc722=function(_0x408e15,_0x5e4957){_0x408e15=_0x408e15-0x0;var _0x4059c5=_0x722c[_0x408e15];return _0x4059c5;};'use strict';var util=require('util');var _=require(_0xc722('0x0'));var moment=require(_0xc722('0x1'));var BPromise=require('bluebird');var hardware=require(_0xc722('0x2'));var encryptor=require(_0xc722('0x3'));var db=require('../../mysqldb')['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc722('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0xc722('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xc722('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xc722('0x6'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x47169f){return new BPromise(function(_0x22d462,_0x2fe88e){return db[_0xc722('0x7')][_0xc722('0x8')](_[_0xc722('0x9')](_0x47169f,{'raw':!![],'where':{'id':0x1}}))[_0xc722('0xa')](function(_0x2078d7){return checkLicense(_0x2078d7,null);})[_0xc722('0xa')](function(_0x45908e){_0x22d462(_0x45908e);return;})['catch'](function(_0x742d36){_0x2fe88e(_0x742d36);});});}function checkLicense(_0x512062,_0x30ba8d){if(!_0x512062){demoLicense['uuid']=_0x512062[_0xc722('0xb')];return demoLicense;}try{var _0x24a0f3=_0x30ba8d||_0x512062['license'];if(_[_0xc722('0xc')](_0x24a0f3)){throw new Error(_0xc722('0xd'));}var _0x3815e9=_0x512062[_0xc722('0xb')];var _0x343083=_0x512062[_0xc722('0xe')];var _0x4ddc87=_0x3815e9[_0xc722('0xf')]('-')[0x4];var _0x459ecd=_0x3815e9[_0xc722('0xf')]('-')[0x0];var _0x30b113=encryptor[_0xc722('0x10')](_0x24a0f3,util[_0xc722('0x11')](_0xc722('0x12'),_0x4ddc87,_0x3815e9,_0x459ecd));var _0x5166ae=JSON[_0xc722('0x13')](_0x30b113);_0x5166ae[_0xc722('0x14')]=![];_0x5166ae[_0xc722('0x15')]=_0x3815e9;_0x5166ae[_0xc722('0x16')]=hardware[_0xc722('0x17')]();if(_0x343083){var _0xf36d4b=encryptor[_0xc722('0x10')](_0x343083);_0x5166ae['gray']=_0xf36d4b;_0x5166ae[_0xc722('0x18')]=moment(_0xf36d4b)[_0xc722('0x19')](0x7,_0xc722('0x1a'))[_0xc722('0x11')]();_0x5166ae[_0xc722('0x1b')]=_0x5166ae[_0xc722('0x15')]!=_0x5166ae[_0xc722('0x16')]?_0xc722('0x1c'):_0xc722('0x1d');}return _0x5166ae;}catch(_0x39f524){breakingLicense[_0xc722('0x15')]=_0x512062[_0xc722('0xb')];breakingLicense[_0xc722('0x1e')]=_0x39f524['message'];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x137012,_0x3042f6){getLicense()[_0xc722('0xa')](function(_0x3d72e9){return db[_0xc722('0x1f')][_0xc722('0x20')]({'attributes':[_0xc722('0x21'),[db[_0xc722('0x22')]['fn']('COUNT',db[_0xc722('0x22')][_0xc722('0x23')]('role')),_0xc722('0x24')]],'group':_0xc722('0x21'),'where':{'role':{'$or':[_0xc722('0x25'),_0xc722('0x26'),'telephone']}},'raw':!![]})[_0xc722('0xa')](function(_0x3d7067){var _0x38cfdb={'user':_0x3d72e9['users']||0x0,'telephone':_0x3d72e9[_0xc722('0x27')]||0x0};_0x3d7067[_0xc722('0x28')](function(_0x27b3f7){var _0x142d54=_0x27b3f7['role']===_0xc722('0x25')?'user':_0x27b3f7[_0xc722('0x21')];_0x38cfdb[_0x142d54]-=_0x27b3f7[_0xc722('0x24')];if(_0x38cfdb[_0x142d54]<0x0)_0x38cfdb[_0x142d54]=0x0;});_0x137012(_0x38cfdb);return;});})[_0xc722('0x29')](function(_0x2e45e5){_0x3042f6(_0x2e45e5);});});}function checkUserLimits(_0x54c68d){return new BPromise(function(_0x197d54,_0x2b60e1){getLimits()[_0xc722('0xa')](function(_0x565aa0){var _0x4b4bc6=_[_0xc722('0x2a')](_[_0xc722('0x2b')](_0x54c68d,'role'),[_0xc722('0x25'),'user','telephone']);var _0x244ec3=(_0x4b4bc6['admin']||0x0)+(_0x4b4bc6[_0xc722('0x26')]||0x0);var _0xc79735=_0x4b4bc6[_0xc722('0x2c')]||0x0;if(_0x244ec3>_0x565aa0['user'])return _0x2b60e1(_0xc722('0x2d'));if(_0xc79735>_0x565aa0['telephone'])return _0x2b60e1(_0xc722('0x2e'));return _0x197d54();})['catch'](function(_0x4e71eb){_0x2b60e1(_0x4e71eb);});});}module[_0xc722('0x2f')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index cf02958..684af34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['exports','http://localhost:9000','myappanuglar-secret','app-id','secret'];(function(_0x11f93a,_0x2c2ee7){var _0x5381a4=function(_0xf48d92){while(--_0xf48d92){_0x11f93a['push'](_0x11f93a['shift']());}};_0x5381a4(++_0x2c2ee7);}(_0x5f2f,0x73));var _0xf5f2=function(_0x2aaf2a,_0x38e198){_0x2aaf2a=_0x2aaf2a-0x0;var _0x15453e=_0x5f2f[_0x2aaf2a];return _0x15453e;};'use strict';module[_0xf5f2('0x0')]={'DOMAIN':_0xf5f2('0x1'),'SESSION_SECRET':_0xf5f2('0x2'),'GOOGLE_ID':_0xf5f2('0x3'),'GOOGLE_SECRET':_0xf5f2('0x4'),'DEBUG':''};
\ No newline at end of file
+var _0xd824=['http://localhost:9000','secret','exports'];(function(_0x4d88f6,_0x52f758){var _0x2041c8=function(_0x16f556){while(--_0x16f556){_0x4d88f6['push'](_0x4d88f6['shift']());}};_0x2041c8(++_0x52f758);}(_0xd824,0xc2));var _0x4d82=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xd824[_0x321bb2];return _0x9c12ed;};'use strict';module[_0x4d82('0x0')]={'DOMAIN':_0x4d82('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x4d82('0x2'),'DEBUG':''};
\ No newline at end of file
index b56215e..a1bc06d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7127=['exports','fileLogger'];(function(_0x41a8c8,_0x4fab26){var _0x4d1684=function(_0x1010b4){while(--_0x1010b4){_0x41a8c8['push'](_0x41a8c8['shift']());}};_0x4d1684(++_0x4fab26);}(_0x7127,0x19f));var _0x7712=function(_0x2e7f42,_0x1ad62d){_0x2e7f42=_0x2e7f42-0x0;var _0x39c910=_0x7127[_0x2e7f42];return _0x39c910;};'use strict';var fileLogger=require('../utils/loggers')[_0x7712('0x0')];module[_0x7712('0x1')]=fileLogger;
\ No newline at end of file
+var _0xc7fa=['exports','../utils/loggers','fileLogger'];(function(_0x2573b0,_0xae9635){var _0x4f8649=function(_0x1a4123){while(--_0x1a4123){_0x2573b0['push'](_0x2573b0['shift']());}};_0x4f8649(++_0xae9635);}(_0xc7fa,0x106));var _0xac7f=function(_0x522627,_0x2eea2b){_0x522627=_0x522627-0x0;var _0x42e49a=_0xc7fa[_0x522627];return _0x42e49a;};'use strict';var fileLogger=require(_0xac7f('0x0'))[_0xac7f('0x1')];module[_0xac7f('0x2')]=fileLogger;
\ No newline at end of file
index 0eb6b9d..168ae65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c07=['../../services/express/index.js','ami','join','../../services/ami/index.js','agi','../../services/agi/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','path','express'];(function(_0x3b004d,_0x2e5d51){var _0x4db51e=function(_0x289d72){while(--_0x289d72){_0x3b004d['push'](_0x3b004d['shift']());}};_0x4db51e(++_0x2e5d51);}(_0x4c07,0x1d2));var _0x74c0=function(_0x58db4e,_0x439d8d){_0x58db4e=_0x58db4e-0x0;var _0x40139a=_0x4c07[_0x58db4e];return _0x40139a;};'use strict';var path=require(_0x74c0('0x0'));var os=require('os');var config={'apps':[{'name':_0x74c0('0x1'),'script':path['join'](__dirname,_0x74c0('0x2'))},{'name':_0x74c0('0x3'),'script':path[_0x74c0('0x4')](__dirname,_0x74c0('0x5'))},{'name':_0x74c0('0x6'),'script':path[_0x74c0('0x4')](__dirname,_0x74c0('0x7'))},{'name':'email','script':path['join'](__dirname,'../../services/email/index.js')},{'name':_0x74c0('0x8'),'script':path[_0x74c0('0x4')](__dirname,_0x74c0('0x9'))},{'name':_0x74c0('0xa'),'script':path[_0x74c0('0x4')](__dirname,_0x74c0('0xb'))}]};module['exports']=config;
\ No newline at end of file
+var _0xf0bb=['exports','path','join','ami','../../services/ami/index.js','agi','email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x51ca32,_0x13ceea){var _0x1a1cea=function(_0x33553b){while(--_0x33553b){_0x51ca32['push'](_0x51ca32['shift']());}};_0x1a1cea(++_0x13ceea);}(_0xf0bb,0xfe));var _0xbf0b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf0bb[_0x167cc1];return _0x10bc4b;};'use strict';var path=require(_0xbf0b('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path[_0xbf0b('0x1')](__dirname,'../../services/express/index.js')},{'name':_0xbf0b('0x2'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x3'))},{'name':_0xbf0b('0x4'),'script':path[_0xbf0b('0x1')](__dirname,'../../services/agi/index.js')},{'name':_0xbf0b('0x5'),'script':path['join'](__dirname,'../../services/email/index.js')},{'name':_0xbf0b('0x6'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x7'))},{'name':_0xbf0b('0x8'),'script':path[_0xbf0b('0x1')](__dirname,_0xbf0b('0x9'))}]};module[_0xbf0b('0xa')]=config;
\ No newline at end of file
index a239642..1503645 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2a2=['connect','connected','start','then','stop','disconnect','list','delete','dump','saved','pm2','bluebird','./config'];(function(_0xfe7ed4,_0x5d9262){var _0x35f3c5=function(_0x5076e7){while(--_0x5076e7){_0xfe7ed4['push'](_0xfe7ed4['shift']());}};_0x35f3c5(++_0x5d9262);}(_0xd2a2,0x19d));var _0x2d2a=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xd2a2[_0x2dafbe];return _0x58a45a;};'use strict';var pm2=require(_0x2d2a('0x0'));var BPromise=require(_0x2d2a('0x1'));var config=require(_0x2d2a('0x2'));function connect(){return new BPromise(function(_0x468eaa,_0x463218){return pm2[_0x2d2a('0x3')](function(_0x4cd96c){if(_0x4cd96c){return _0x463218(_0x4cd96c);}return _0x468eaa(_0x2d2a('0x4'));});});};exports['start']=function(_0x3d285f){return connect()['then'](function(){return new BPromise(function(_0x2c2f7c,_0x513813){return pm2[_0x2d2a('0x5')](_0x3d285f,function(_0x381284,_0x28d01e){if(_0x381284){return _0x513813(_0x381284);}pm2['disconnect']();return _0x2c2f7c(_0x28d01e);});});});};exports['stop']=function(_0x3f7463){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0x1d3888,_0x1f6d03){return pm2[_0x2d2a('0x7')](_0x3f7463,function(_0x29c683,_0x19b5b7){if(_0x29c683){return _0x1f6d03(_0x29c683);}pm2[_0x2d2a('0x8')]();return _0x1d3888(_0x19b5b7);});});});};exports['restart']=function(_0x1b1f26){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0x712347,_0x522708){return pm2['restart'](_0x1b1f26,function(_0x3ef0ae,_0x5c6571){if(_0x3ef0ae){return _0x522708(_0x3ef0ae);}pm2['disconnect']();return _0x712347(_0x5c6571);});});});};exports[_0x2d2a('0x9')]=function(){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0xda5808,_0x2e5306){return pm2[_0x2d2a('0x9')](function(_0x19bc29,_0x16cea3){if(_0x19bc29){return _0x2e5306(_0x19bc29);}pm2[_0x2d2a('0x8')]();return _0xda5808(_0x16cea3);});});});};exports['describe']=function(_0x4ec9c8){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0x4f71e8,_0x1b8c53){return pm2['describe'](_0x4ec9c8,function(_0x4d7e49,_0x44ca4d){if(_0x4d7e49){return _0x1b8c53(_0x4d7e49);}pm2['disconnect']();return _0x4f71e8(_0x44ca4d);});});});};exports[_0x2d2a('0xa')]=function(_0x288366){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0x7e894f,_0x52619a){return pm2[_0x2d2a('0xa')](_0x288366,function(_0x174bd0,_0x118f04){if(_0x174bd0){return _0x52619a(_0x174bd0);}pm2[_0x2d2a('0x8')]();return _0x7e894f(_0x118f04);});});});};exports[_0x2d2a('0xb')]=function(){return connect()[_0x2d2a('0x6')](function(){return new BPromise(function(_0x32ae41,_0x54f79a){return pm2[_0x2d2a('0xb')](function(_0x4e5d11){if(_0x4e5d11){return _0x54f79a(_0x4e5d11);}return _0x32ae41(_0x2d2a('0xc'));});});});};
\ No newline at end of file
+var _0xfb27=['describe','delete','dump','saved','pm2','bluebird','connected','stop','restart','list','then','disconnect'];(function(_0x2e1065,_0x182d99){var _0xd0af3c=function(_0x4e1f0b){while(--_0x4e1f0b){_0x2e1065['push'](_0x2e1065['shift']());}};_0xd0af3c(++_0x182d99);}(_0xfb27,0x178));var _0x7fb2=function(_0x8f7d2b,_0x1bebaf){_0x8f7d2b=_0x8f7d2b-0x0;var _0x13c298=_0xfb27[_0x8f7d2b];return _0x13c298;};'use strict';var pm2=require(_0x7fb2('0x0'));var BPromise=require(_0x7fb2('0x1'));var config=require('./config');function connect(){return new BPromise(function(_0x228513,_0x320991){return pm2['connect'](function(_0x499b9f){if(_0x499b9f){return _0x320991(_0x499b9f);}return _0x228513(_0x7fb2('0x2'));});});};exports['start']=function(_0x48005c){return connect()['then'](function(){return new BPromise(function(_0x333ca2,_0x293ccd){return pm2['start'](_0x48005c,function(_0x12561f,_0x1a4e50){if(_0x12561f){return _0x293ccd(_0x12561f);}pm2['disconnect']();return _0x333ca2(_0x1a4e50);});});});};exports[_0x7fb2('0x3')]=function(_0x57952d){return connect()['then'](function(){return new BPromise(function(_0x199dd7,_0x2ccaae){return pm2['stop'](_0x57952d,function(_0x2f379a,_0x2f17af){if(_0x2f379a){return _0x2ccaae(_0x2f379a);}pm2['disconnect']();return _0x199dd7(_0x2f17af);});});});};exports[_0x7fb2('0x4')]=function(_0x89221c){return connect()['then'](function(){return new BPromise(function(_0x123a47,_0x72e7e5){return pm2['restart'](_0x89221c,function(_0x37a63,_0x206d0f){if(_0x37a63){return _0x72e7e5(_0x37a63);}pm2['disconnect']();return _0x123a47(_0x206d0f);});});});};exports[_0x7fb2('0x5')]=function(){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x35bbba,_0x32ebd2){return pm2[_0x7fb2('0x5')](function(_0x21c344,_0x130bdd){if(_0x21c344){return _0x32ebd2(_0x21c344);}pm2[_0x7fb2('0x7')]();return _0x35bbba(_0x130bdd);});});});};exports[_0x7fb2('0x8')]=function(_0x329457){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x5f42b4,_0x143e3a){return pm2[_0x7fb2('0x8')](_0x329457,function(_0x5b94a0,_0x6bf2e7){if(_0x5b94a0){return _0x143e3a(_0x5b94a0);}pm2[_0x7fb2('0x7')]();return _0x5f42b4(_0x6bf2e7);});});});};exports[_0x7fb2('0x9')]=function(_0x5c3082){return connect()[_0x7fb2('0x6')](function(){return new BPromise(function(_0x4e51fa,_0x5c2fe2){return pm2[_0x7fb2('0x9')](_0x5c3082,function(_0x5ae2aa,_0x3e52cc){if(_0x5ae2aa){return _0x5c2fe2(_0x5ae2aa);}pm2['disconnect']();return _0x4e51fa(_0x3e52cc);});});});};exports[_0x7fb2('0xa')]=function(){return connect()['then'](function(){return new BPromise(function(_0x129f5a,_0x3d6406){return pm2[_0x7fb2('0xa')](function(_0x1dbfdb){if(_0x1dbfdb){return _0x3d6406(_0x1dbfdb);}return _0x129f5a(_0x7fb2('0xb'));});});});};
\ No newline at end of file
index c2afe40..a61e21f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdce5=['system','format','length','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','inspect','lodash','moment','ioredis','util','../../config/environment','schedule','redis','defaults','socket.io-emitter','Setting','chatTimeout','then','findAll','subtract','minutes','info','join','ChatInteraction','update'];(function(_0x451ef1,_0xe452e9){var _0x31735f=function(_0x550aa3){while(--_0x550aa3){_0x451ef1['push'](_0x451ef1['shift']());}};_0x31735f(++_0xe452e9);}(_0xdce5,0x1c9));var _0x5dce=function(_0x738950,_0xf902e8){_0x738950=_0x738950-0x0;var _0x284632=_0xdce5[_0x738950];return _0x284632;};'use strict';var _=require(_0x5dce('0x0'));var moment=require(_0x5dce('0x1'));var Redis=require(_0x5dce('0x2'));var util=require(_0x5dce('0x3'));var config=require(_0x5dce('0x4'));var db=require('../../mysqldb')['db'];var logger=require('../logger')(_0x5dce('0x5'));config[_0x5dce('0x6')]=_[_0x5dce('0x7')](config[_0x5dce('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x5dce('0x8'))(new Redis(config[_0x5dce('0x6')]));function closeInteractions(){var _0x2c0f76=0x0;var _0x4d120b=[];return db[_0x5dce('0x9')]['find']({'raw':!![],'attributes':['id',_0x5dce('0xa')],'where':{'id':0x1}})[_0x5dce('0xb')](function(_0x209aa3){_0x2c0f76=_0x209aa3['chatTimeout'];if(_0x2c0f76){return db['ChatInteraction'][_0x5dce('0xc')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x5dce('0xd')](_0x209aa3[_0x5dce('0xa')],_0x5dce('0xe'))}}});}else{return[];}})[_0x5dce('0xb')](function(_0x1aeb00){if(_0x1aeb00&&_0x1aeb00['length']){_0x4d120b=_['map'](_0x1aeb00||[],'id');logger[_0x5dce('0xf')]('[CHAT]\x20Interactions\x20to\x20close:',_0x4d120b[_0x5dce('0x10')]());return db[_0x5dce('0x11')][_0x5dce('0x12')]({'closeReason':_0x5dce('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0x5dce('0x14')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x4d120b}});}})[_0x5dce('0xb')](function(){if(_0x4d120b&&_0x4d120b[_0x5dce('0x15')]){logger[_0x5dce('0xf')](_0x5dce('0x16'),_0x4d120b[_0x5dce('0x10')]());for(var _0x5b5725=0x0;_0x5b5725<_0x4d120b[_0x5dce('0x15')];_0x5b5725++){io[_0x5dce('0x17')](_0x5dce('0x18'),{'id':_0x4d120b[_0x5b5725],'closed':!![]});}}})[_0x5dce('0x19')](function(_0x325be5){logger['error'](_0x5dce('0x1a'),_0x325be5?util[_0x5dce('0x1b')](_0x325be5,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x149e=['socket.io-emitter','Setting','find','chatTimeout','ChatInteraction','findAll','subtract','then','length','map','info','[CHAT]\x20Interactions\x20to\x20close:','update','system','timeout','format','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','join','chatInteraction:update','catch','error','[CHAT]\x20Error\x20closing\x20interactions','start','lodash','moment','../../config/environment','../../mysqldb','../logger','redis','localhost'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x149e,0x94));var _0xe149=function(_0x117f3e,_0x22cf77){_0x117f3e=_0x117f3e-0x0;var _0x5f5337=_0x149e[_0x117f3e];return _0x5f5337;};'use strict';var _=require(_0xe149('0x0'));var moment=require(_0xe149('0x1'));var Redis=require('ioredis');var util=require('util');var config=require(_0xe149('0x2'));var db=require(_0xe149('0x3'))['db'];var logger=require(_0xe149('0x4'))('schedule');config['redis']=_['defaults'](config[_0xe149('0x5')],{'host':_0xe149('0x6'),'port':0x18eb});var io=require(_0xe149('0x7'))(new Redis(config['redis']));function closeInteractions(){var _0x2b5061=0x0;var _0x7ce218=[];return db[_0xe149('0x8')][_0xe149('0x9')]({'raw':!![],'attributes':['id',_0xe149('0xa')],'where':{'id':0x1}})['then'](function(_0x35d49f){_0x2b5061=_0x35d49f['chatTimeout'];if(_0x2b5061){return db[_0xe149('0xb')][_0xe149('0xc')]({'raw':!![],'attributes':['id','lastMsgAt'],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0xe149('0xd')](_0x35d49f[_0xe149('0xa')],'minutes')}}});}else{return[];}})[_0xe149('0xe')](function(_0x15bd95){if(_0x15bd95&&_0x15bd95[_0xe149('0xf')]){_0x7ce218=_[_0xe149('0x10')](_0x15bd95||[],'id');logger[_0xe149('0x11')](_0xe149('0x12'),_0x7ce218['join']());return db[_0xe149('0xb')][_0xe149('0x13')]({'closeReason':_0xe149('0x14'),'disposition':_0xe149('0x15'),'closed':!![],'closedAt':moment()[_0xe149('0x16')](_0xe149('0x17'))},{'where':{'id':_0x7ce218}});}})[_0xe149('0xe')](function(){if(_0x7ce218&&_0x7ce218['length']){logger[_0xe149('0x11')](_0xe149('0x18'),_0x7ce218[_0xe149('0x19')]());for(var _0x216880=0x0;_0x216880<_0x7ce218[_0xe149('0xf')];_0x216880++){io['emit'](_0xe149('0x1a'),{'id':_0x7ce218[_0x216880],'closed':!![]});}}})[_0xe149('0x1b')](function(_0x383a90){logger[_0xe149('0x1c')](_0xe149('0x1d'),_0x383a90?util['inspect'](_0x383a90,{'showHidden':![],'depth':null}):'');});}exports[_0xe149('0x1e')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 902be94..70682ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbbb0=['../../api/cloudProvider/cloudProvider.oauth.js','exports'];(function(_0x4ebd36,_0x14acab){var _0x346a11=function(_0x3ffbca){while(--_0x3ffbca){_0x4ebd36['push'](_0x4ebd36['shift']());}};_0x346a11(++_0x14acab);}(_0xbbb0,0x1d4));var _0x0bbb=function(_0x186376,_0x5d988a){_0x186376=_0x186376-0x0;var _0x2dbdd9=_0xbbb0[_0x186376];return _0x2dbdd9;};'use strict';function start(){var _0x289662=require(_0x0bbb('0x0'));return _0x289662['startAllRefreshIntervals']();}module[_0x0bbb('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0xb54f=['startAllRefreshIntervals','exports'];(function(_0x7f8dec,_0x240dc){var _0x28e6bd=function(_0x44e832){while(--_0x44e832){_0x7f8dec['push'](_0x7f8dec['shift']());}};_0x28e6bd(++_0x240dc);}(_0xb54f,0x14a));var _0xfb54=function(_0x52bcad,_0x82d5c5){_0x52bcad=_0x52bcad-0x0;var _0x36640b=_0xb54f[_0x52bcad];return _0x36640b;};'use strict';function start(){var _0x45c934=require('../../api/cloudProvider/cloudProvider.oauth.js');return _0x45c934[_0xfb54('0x0')]();}module[_0xfb54('0x1')]={'intervals':{},'start':start};
\ No newline at end of file
index e241873..fc24a80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5391=['length','stop','deleteJob','delete\x20cron','toRun','index','my\x20id','resolve','run\x20job','cron','active','isBetween','startAt','endAt','add','start','exists','stop\x20cron','update\x20cron','run','util','path','lodash','moment','cron-job-manager','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','format','name','email','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','%s.%s','basename','extname','zip','status','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','existsSync','Sent','attachments','message','sendIfEmpty','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','stringify','data','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','catch','CustomReportId','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','map','keyBy','toString','difference','intersection'];(function(_0x219ce3,_0x535de0){var _0x13da3c=function(_0x8417f5){while(--_0x8417f5){_0x219ce3['push'](_0x219ce3['shift']());}};_0x13da3c(++_0x535de0);}(_0x5391,0x11c));var _0x1539=function(_0x3e2b0b,_0xcf603){_0x3e2b0b=_0x3e2b0b-0x0;var _0x8a5b07=_0x5391[_0x3e2b0b];return _0x8a5b07;};'use strict';var fs=require('fs');var util=require(_0x1539('0x0'));var path=require(_0x1539('0x1'));var _=require(_0x1539('0x2'));var moment=require(_0x1539('0x3'));var CronJobManager=require(_0x1539('0x4'));var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x1539('0x5'))(_0x1539('0x6'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0x1539('0x7'));var analyticDefaultReportController=require(_0x1539('0x8'));var client=jayson[_0x1539('0x9')][_0x1539('0xa')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x28ed7c,_0x2c6989){return function(){logger['info'](_0x1539('0xb'),_0x28ed7c['email']);var _0x586376=!![];var _0x1d636d=_0x28ed7c[_0x1539('0xc')][_0x1539('0xd')]();var _0x4c6d3b={'account':_0x1d636d,'message':{'from':util[_0x1539('0xe')]('\x22%s\x22\x20<%s>',_0x28ed7c[_0x1539('0xc')][_0x1539('0xf')],_0x28ed7c[_0x1539('0xc')][_0x1539('0x10')]||_0x28ed7c['MailAccount'][_0x1539('0x11')][_0x1539('0x12')]),'to':_0x28ed7c[_0x1539('0x10')],'cc':_0x28ed7c['cc'],'bcc':_0x28ed7c['bcc'],'subject':util[_0x1539('0xe')](_0x1539('0x13'),_0x2c6989['name'],_0x28ed7c[_0x1539('0x14')],_0x28ed7c[_0x1539('0x15')])}};var _0x153054=path[_0x1539('0x16')](__dirname,_0x1539('0x17'));var _0x5dcb71=_0x2c6989[_0x1539('0x18')];var _0x136d86=util[_0x1539('0xe')](_0x1539('0x19'),path[_0x1539('0x1a')](_0x2c6989['savename'],path[_0x1539('0x1b')](_0x2c6989[_0x1539('0x18')])),_0x1539('0x1c'));var _0x321fc8=path[_0x1539('0x16')](_0x153054,_0x5dcb71);var _0x3fd23a=path[_0x1539('0x16')](_0x153054,_0x136d86);if(fs['existsSync'](_0x321fc8)){_0x2c6989[_0x1539('0x1d')]='Sent';_0x4c6d3b['message']['attachments']=[{'filename':_0x5dcb71,'path':_0x321fc8}];_0x4c6d3b['message'][_0x1539('0x1e')]=util[_0x1539('0xe')](_0x1539('0x1f'),JSON['stringify'](_0x2c6989,null,0x2));}else if(fs[_0x1539('0x20')](_0x3fd23a)){_0x2c6989[_0x1539('0x1d')]=_0x1539('0x21');_0x4c6d3b['message'][_0x1539('0x22')]=[{'filename':_0x136d86,'path':_0x3fd23a}];}else{_0x4c6d3b[_0x1539('0x23')]['text']='Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a';if(!_0x28ed7c[_0x1539('0x24')]){_0x586376=![];logger[_0x1539('0x25')](_0x1539('0x26'));}}if(_0x586376){return client[_0x1539('0x27')](_0x1539('0x28'),_0x4c6d3b)[_0x1539('0x29')](function(_0x521ed2){if(_0x521ed2[_0x1539('0x2a')]){return logger[_0x1539('0x2a')]('error\x20mail',JSON[_0x1539('0x2b')](_0x521ed2));}return logger[_0x1539('0x25')]('email\x20sent');})['catch'](function(_0x438e2e){return logger[_0x1539('0x2a')]('error\x20mail',JSON[_0x1539('0x2b')](_0x438e2e));});}};}function handleError(){return function(_0x3859b4){return logger[_0x1539('0x2a')](JSON[_0x1539('0x2b')](_0x3859b4));};}function handleResult(_0x15224b){return function(_0x257eaa){logger[_0x1539('0x25')](_0x1539('0x2c'),JSON[_0x1539('0x2b')](_0x257eaa));if(_0x15224b['MailAccount']&&_0x15224b['MailAccount'][_0x1539('0x11')]&&!_[_0x1539('0x2d')](_0x15224b[_0x1539('0x10')])){setTimeout(handleSendEmail(_0x15224b,_0x257eaa),0x3c*0x3e8);}};}function handleJob(_0x2d0528){return function(){try{if(_[_0x1539('0x2d')](_0x2d0528[_0x1539('0x14')])){return logger['info'](_0x1539('0x2e'));}if(_[_0x1539('0x2d')](_0x2d0528['subtractUnit'])){return logger[_0x1539('0x25')](_0x1539('0x2f'));}var _0x582001={'startDate':moment()[_0x1539('0x30')](_0x2d0528[_0x1539('0x14')],_0x2d0528[_0x1539('0x15')])[_0x1539('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0x1539('0xe')](_0x1539('0x31')),'type':_0x1539('0x32'),'output':_0x2d0528['output'],'name':_0x2d0528[_0x1539('0xf')]};if(!_['isNil'](_0x2d0528[_0x1539('0x33')])){logger['info'](_0x1539('0x34'),_0x2d0528[_0x1539('0x33')]);return analyticDefaultReportController[_0x1539('0x35')]({'id':_0x2d0528['DefaultReportId']},_0x582001)[_0x1539('0x29')](handleResult(_0x2d0528))[_0x1539('0x36')](handleError());}if(!_[_0x1539('0x2d')](_0x2d0528[_0x1539('0x37')])){logger[_0x1539('0x25')](_0x1539('0x38'),_0x2d0528[_0x1539('0x37')]);return analyticCustomReportController[_0x1539('0x35')]({'id':_0x2d0528[_0x1539('0x37')]},_0x582001)[_0x1539('0x29')](handleResult(_0x2d0528))['catch'](handleError());}}catch(_0x5cae25){logger[_0x1539('0x2a')](JSON[_0x1539('0x2b')](_0x5cae25));}return logger[_0x1539('0x25')](_0x1539('0x39'));};}function getJobs(_0x484f6a){var _0x391e09={};if(_0x484f6a){_0x391e09['id']=_0x484f6a;}return db[_0x1539('0x3a')][_0x1539('0x3b')]({'where':_0x391e09,'include':[{'model':db[_0x1539('0xc')],'attributes':['id',_0x1539('0xf'),_0x1539('0x10')],'include':[{'model':db[_0x1539('0x3c')],'as':_0x1539('0x11'),'include':[{'model':db['CloudProvider'],'as':_0x1539('0x3d')}]}]}]})[_0x1539('0x29')](function(_0x4d56b4){var _0x1b5282=_['keys'](manager[_0x1539('0x3e')]);var _0x9e8bc2=_[_0x1539('0x3f')](_0x4d56b4,function(_0x195d2b){return _0x195d2b['id']['toString']();});var _0x4d83b2=_[_0x1539('0x40')](_0x4d56b4,function(_0x57a62c){return _0x57a62c['id'][_0x1539('0x41')]();});var _0x46bf3a=_0x484f6a?_0x9e8bc2:_[_0x1539('0x42')](_0x9e8bc2,_0x1b5282);var _0x59dc04=_[_0x1539('0x43')](_0x9e8bc2,_0x1b5282);var _0x43b10d=_[_0x1539('0x42')](_0x1b5282,_0x9e8bc2);var _0x5edada;var _0x1ebe8e;for(_0x5edada=0x0;_0x5edada<_0x43b10d[_0x1539('0x44')]&&!_0x484f6a;_0x5edada+=0x1){_0x1ebe8e=_0x43b10d[_0x5edada][_0x1539('0x41')]();if(manager['exists'](_0x1ebe8e)){manager[_0x1539('0x45')](_0x1ebe8e);manager[_0x1539('0x46')](_0x1ebe8e);logger['info'](_0x1539('0x47'),_0x1ebe8e);}}logger[_0x1539('0x25')](_0x1539('0x48'),JSON[_0x1539('0x2b')](_0x46bf3a));for(_0x5edada=0x0;_0x5edada<_0x46bf3a[_0x1539('0x44')];_0x5edada+=0x1){_0x1ebe8e=_0x46bf3a[_0x5edada]['toString']();logger['info'](_0x1539('0x49'),_0x1ebe8e);if(_0x484f6a){logger[_0x1539('0x25')](_0x1539('0x4a'),_0x484f6a);logger[_0x1539('0x25')](JSON[_0x1539('0x2b')](_0x4d83b2[_0x1ebe8e]));BPromise[_0x1539('0x4b')]()['then'](handleJob(_0x4d83b2[_0x1ebe8e]));logger['info'](_0x1539('0x4c'),_0x4d83b2[_0x1ebe8e]['name'],_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]);}else if(_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]&&_0x4d83b2[_0x1ebe8e][_0x1539('0x4e')]&&moment()[_0x1539('0x4f')](_0x4d83b2[_0x1ebe8e][_0x1539('0x50')],_0x4d83b2[_0x1ebe8e][_0x1539('0x51')])){manager[_0x1539('0x52')](_0x1ebe8e,_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')],handleJob(_0x4d83b2[_0x1ebe8e]));manager[_0x1539('0x53')](_0x1ebe8e);logger['info']('add\x20cron',_0x4d83b2[_0x1ebe8e][_0x1539('0xf')],_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]);}else if(manager[_0x1539('0x54')](_0x1ebe8e)){manager[_0x1539('0x45')](_0x1ebe8e);manager[_0x1539('0x46')](_0x1ebe8e);logger[_0x1539('0x25')](_0x1539('0x55'),_0x4d83b2[_0x1ebe8e][_0x1539('0xf')],_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]);}}for(_0x5edada=0x0,_0x1ebe8e;_0x5edada<_0x59dc04[_0x1539('0x44')]&&!_0x484f6a;_0x5edada+=0x1){_0x1ebe8e=_0x59dc04[_0x5edada][_0x1539('0x41')]();if(manager[_0x1539('0x54')](_0x1ebe8e)){if(_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]&&_0x4d83b2[_0x1ebe8e][_0x1539('0x4e')]&&moment()[_0x1539('0x4f')](_0x4d83b2[_0x1ebe8e][_0x1539('0x50')],_0x4d83b2[_0x1ebe8e]['endAt'])){manager['update'](_0x1ebe8e,_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')],handleJob(_0x4d83b2[_0x1ebe8e]));logger['info'](_0x1539('0x56'),_0x4d83b2[_0x1ebe8e][_0x1539('0xf')],_0x4d83b2[_0x1ebe8e]['cron']);}else{manager[_0x1539('0x45')](_0x1ebe8e);manager[_0x1539('0x46')](_0x1ebe8e);logger['info']('stop\x20cron',_0x4d83b2[_0x1ebe8e][_0x1539('0xf')],_0x4d83b2[_0x1ebe8e][_0x1539('0x4d')]);}}}})[_0x1539('0x36')](function(_0x274721){logger[_0x1539('0x2a')](JSON[_0x1539('0x2b')](_0x274721));});}exports[_0x1539('0x57')]=function(_0x11060d){return getJobs(_0x11060d);};exports[_0x1539('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0xb14a=['../../mysqldb','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','http','info','Try\x20to\x20send\x20a\x20mail\x20to','email','getSmtpOptions','format','\x22%s\x22\x20<%s>','MailAccount','name','Smtp','user','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','savename','%s.%s','basename','extname','zip','status','Sent','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify','existsSync','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','error\x20mail','email\x20sent','data','isNil','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','output','DefaultReportId','runReport','catch','exec\x20custom\x20report\x20id:%s','no\x20report\x20id','Schedule','findAll','MailServerOut','CloudProvider','jobs','map','toString','keyBy','difference','intersection','exists','deleteJob','delete\x20cron','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','endAt','start','add\x20cron','stop','stop\x20cron','startAt','update','run','util','path','lodash','moment','bluebird','schedule'];(function(_0x1aaf09,_0x150dd7){var _0x35b335=function(_0x3d22d5){while(--_0x3d22d5){_0x1aaf09['push'](_0x1aaf09['shift']());}};_0x35b335(++_0x150dd7);}(_0xb14a,0xfc));var _0xab14=function(_0x361b01,_0x563f1c){_0x361b01=_0x361b01-0x0;var _0x35b74e=_0xb14a[_0x361b01];return _0x35b74e;};'use strict';var fs=require('fs');var util=require(_0xab14('0x0'));var path=require(_0xab14('0x1'));var _=require(_0xab14('0x2'));var moment=require(_0xab14('0x3'));var CronJobManager=require('cron-job-manager');var jayson=require('jayson/promise');var BPromise=require(_0xab14('0x4'));var logger=require('../logger')(_0xab14('0x5'));var db=require(_0xab14('0x6'))['db'];var analyticCustomReportController=require('../../api/analyticCustomReport/analyticCustomReport.controller');var analyticDefaultReportController=require(_0xab14('0x7'));var client=jayson[_0xab14('0x8')][_0xab14('0x9')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x45db6e,_0x408365){return function(){logger[_0xab14('0xa')](_0xab14('0xb'),_0x45db6e[_0xab14('0xc')]);var _0x3b67e9=!![];var _0x27801b=_0x45db6e['MailAccount'][_0xab14('0xd')]();var _0x3df36a={'account':_0x27801b,'message':{'from':util[_0xab14('0xe')](_0xab14('0xf'),_0x45db6e[_0xab14('0x10')][_0xab14('0x11')],_0x45db6e[_0xab14('0x10')][_0xab14('0xc')]||_0x45db6e[_0xab14('0x10')][_0xab14('0x12')][_0xab14('0x13')]),'to':_0x45db6e[_0xab14('0xc')],'cc':_0x45db6e['cc'],'bcc':_0x45db6e['bcc'],'subject':util[_0xab14('0xe')](_0xab14('0x14'),_0x408365[_0xab14('0x11')],_0x45db6e[_0xab14('0x15')],_0x45db6e[_0xab14('0x16')])}};var _0x1ee80f=path[_0xab14('0x17')](__dirname,'../../files/reports');var _0x37201b=_0x408365[_0xab14('0x18')];var _0x3fb0cc=util[_0xab14('0xe')](_0xab14('0x19'),path[_0xab14('0x1a')](_0x408365[_0xab14('0x18')],path[_0xab14('0x1b')](_0x408365['savename'])),_0xab14('0x1c'));var _0xc48660=path[_0xab14('0x17')](_0x1ee80f,_0x37201b);var _0x5b8a5e=path[_0xab14('0x17')](_0x1ee80f,_0x3fb0cc);if(fs['existsSync'](_0xc48660)){_0x408365[_0xab14('0x1d')]=_0xab14('0x1e');_0x3df36a['message'][_0xab14('0x1f')]=[{'filename':_0x37201b,'path':_0xc48660}];_0x3df36a['message'][_0xab14('0x20')]=util[_0xab14('0xe')](_0xab14('0x21'),JSON[_0xab14('0x22')](_0x408365,null,0x2));}else if(fs[_0xab14('0x23')](_0x5b8a5e)){_0x408365[_0xab14('0x1d')]=_0xab14('0x1e');_0x3df36a['message'][_0xab14('0x1f')]=[{'filename':_0x3fb0cc,'path':_0x5b8a5e}];}else{_0x3df36a[_0xab14('0x24')][_0xab14('0x20')]=_0xab14('0x25');if(!_0x45db6e[_0xab14('0x26')]){_0x3b67e9=![];logger[_0xab14('0xa')](_0xab14('0x27'));}}if(_0x3b67e9){return client[_0xab14('0x28')](_0xab14('0x29'),_0x3df36a)[_0xab14('0x2a')](function(_0x35257d){if(_0x35257d[_0xab14('0x2b')]){return logger['error'](_0xab14('0x2c'),JSON[_0xab14('0x22')](_0x35257d));}return logger[_0xab14('0xa')](_0xab14('0x2d'));})['catch'](function(_0x5b6049){return logger[_0xab14('0x2b')](_0xab14('0x2c'),JSON['stringify'](_0x5b6049));});}};}function handleError(){return function(_0x44dd53){return logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x44dd53));};}function handleResult(_0x174efe){return function(_0x308adc){logger[_0xab14('0xa')](_0xab14('0x2e'),JSON[_0xab14('0x22')](_0x308adc));if(_0x174efe[_0xab14('0x10')]&&_0x174efe['MailAccount'][_0xab14('0x12')]&&!_[_0xab14('0x2f')](_0x174efe['email'])){setTimeout(handleSendEmail(_0x174efe,_0x308adc),0x3c*0x3e8);}};}function handleJob(_0x511e6){return function(){try{if(_[_0xab14('0x2f')](_0x511e6[_0xab14('0x15')])){return logger[_0xab14('0xa')]('subtractNumber\x20null\x20or\x20undefined');}if(_['isNil'](_0x511e6[_0xab14('0x16')])){return logger[_0xab14('0xa')](_0xab14('0x30'));}var _0x1fe577={'startDate':moment()[_0xab14('0x31')](_0x511e6[_0xab14('0x15')],_0x511e6['subtractUnit'])[_0xab14('0xe')](_0xab14('0x32')),'endDate':moment()[_0xab14('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':'scheduled','output':_0x511e6[_0xab14('0x33')],'name':_0x511e6['name']};if(!_[_0xab14('0x2f')](_0x511e6['DefaultReportId'])){logger[_0xab14('0xa')]('exec\x20defaul\x20report\x20id:%s',_0x511e6[_0xab14('0x34')]);return analyticDefaultReportController[_0xab14('0x35')]({'id':_0x511e6[_0xab14('0x34')]},_0x1fe577)[_0xab14('0x2a')](handleResult(_0x511e6))[_0xab14('0x36')](handleError());}if(!_[_0xab14('0x2f')](_0x511e6['CustomReportId'])){logger[_0xab14('0xa')](_0xab14('0x37'),_0x511e6['CustomReportId']);return analyticCustomReportController[_0xab14('0x35')]({'id':_0x511e6['CustomReportId']},_0x1fe577)[_0xab14('0x2a')](handleResult(_0x511e6))[_0xab14('0x36')](handleError());}}catch(_0x506b53){logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x506b53));}return logger[_0xab14('0xa')](_0xab14('0x38'));};}function getJobs(_0x4325ae){var _0x57f85d={};if(_0x4325ae){_0x57f85d['id']=_0x4325ae;}return db[_0xab14('0x39')][_0xab14('0x3a')]({'where':_0x57f85d,'include':[{'model':db['MailAccount'],'attributes':['id',_0xab14('0x11'),_0xab14('0xc')],'include':[{'model':db[_0xab14('0x3b')],'as':_0xab14('0x12'),'include':[{'model':db['CloudProvider'],'as':_0xab14('0x3c')}]}]}]})[_0xab14('0x2a')](function(_0x279ef0){var _0x2f99be=_['keys'](manager[_0xab14('0x3d')]);var _0x1b70e9=_[_0xab14('0x3e')](_0x279ef0,function(_0x32f991){return _0x32f991['id'][_0xab14('0x3f')]();});var _0x9ba6b7=_[_0xab14('0x40')](_0x279ef0,function(_0x5bdb7f){return _0x5bdb7f['id']['toString']();});var _0x1756d4=_0x4325ae?_0x1b70e9:_[_0xab14('0x41')](_0x1b70e9,_0x2f99be);var _0x1e8c43=_[_0xab14('0x42')](_0x1b70e9,_0x2f99be);var _0x37343c=_['difference'](_0x2f99be,_0x1b70e9);var _0x552339;var _0x47e676;for(_0x552339=0x0;_0x552339<_0x37343c['length']&&!_0x4325ae;_0x552339+=0x1){_0x47e676=_0x37343c[_0x552339]['toString']();if(manager[_0xab14('0x43')](_0x47e676)){manager['stop'](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x45'),_0x47e676);}}logger[_0xab14('0xa')]('toRun',JSON[_0xab14('0x22')](_0x1756d4));for(_0x552339=0x0;_0x552339<_0x1756d4[_0xab14('0x46')];_0x552339+=0x1){_0x47e676=_0x1756d4[_0x552339][_0xab14('0x3f')]();logger[_0xab14('0xa')](_0xab14('0x47'),_0x47e676);if(_0x4325ae){logger[_0xab14('0xa')](_0xab14('0x48'),_0x4325ae);logger[_0xab14('0xa')](JSON[_0xab14('0x22')](_0x9ba6b7[_0x47e676]));BPromise[_0xab14('0x49')]()[_0xab14('0x2a')](handleJob(_0x9ba6b7[_0x47e676]));logger[_0xab14('0xa')](_0xab14('0x4a'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676]['cron']);}else if(_0x9ba6b7[_0x47e676][_0xab14('0x4b')]&&_0x9ba6b7[_0x47e676][_0xab14('0x4c')]&&moment()[_0xab14('0x4d')](_0x9ba6b7[_0x47e676]['startAt'],_0x9ba6b7[_0x47e676][_0xab14('0x4e')])){manager['add'](_0x47e676,_0x9ba6b7[_0x47e676][_0xab14('0x4b')],handleJob(_0x9ba6b7[_0x47e676]));manager[_0xab14('0x4f')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x50'),_0x9ba6b7[_0x47e676]['name'],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}else if(manager[_0xab14('0x43')](_0x47e676)){manager[_0xab14('0x51')](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x52'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}}for(_0x552339=0x0,_0x47e676;_0x552339<_0x1e8c43['length']&&!_0x4325ae;_0x552339+=0x1){_0x47e676=_0x1e8c43[_0x552339][_0xab14('0x3f')]();if(manager[_0xab14('0x43')](_0x47e676)){if(_0x9ba6b7[_0x47e676]['cron']&&_0x9ba6b7[_0x47e676]['active']&&moment()[_0xab14('0x4d')](_0x9ba6b7[_0x47e676][_0xab14('0x53')],_0x9ba6b7[_0x47e676][_0xab14('0x4e')])){manager[_0xab14('0x54')](_0x47e676,_0x9ba6b7[_0x47e676]['cron'],handleJob(_0x9ba6b7[_0x47e676]));logger[_0xab14('0xa')]('update\x20cron',_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}else{manager['stop'](_0x47e676);manager[_0xab14('0x44')](_0x47e676);logger[_0xab14('0xa')](_0xab14('0x52'),_0x9ba6b7[_0x47e676][_0xab14('0x11')],_0x9ba6b7[_0x47e676][_0xab14('0x4b')]);}}}})[_0xab14('0x36')](function(_0x3734a4){logger[_0xab14('0x2b')](JSON[_0xab14('0x22')](_0x3734a4));});}exports[_0xab14('0x55')]=function(_0x2faee3){return getJobs(_0x2faee3);};exports[_0xab14('0x4f')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index da16abb..8f38b63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa062=['transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','ValidationError','Sentiment\x20Analysis\x20not\x20requested','sentiment','sentimentAccountId','language','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','findOne','data2','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','SentimentScore','Positive','Negative','Mixed','Neutral','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','bucket','Cloud\x20Provider\x20not\x20available','Sentiment','catch','name','SequelizeValidationError','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','Settings\x20not\x20available','transcribeAccountId','Transcribe\x20not\x20configured','forEach','push','all','inspect','start','lodash','aws-sdk','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','getTranscriptionJob','substring','info','transcribeName','data1','transcribeRegion','then','format','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJob','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','results','transcripts','length','fileText'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xa062,0x101));var _0x2a06=function(_0x124d97,_0x1f72a9){_0x124d97=_0x124d97-0x0;var _0xda85e=_0xa062[_0x124d97];return _0xda85e;};var _=require(_0x2a06('0x0'));var AWS=require(_0x2a06('0x1'));var rp=require(_0x2a06('0x2'));var util=require('util');var BPromise=require(_0x2a06('0x3'));var db=require(_0x2a06('0x4'))['db'];var logger=require(_0x2a06('0x5'))(_0x2a06('0x6'));function getTranscriptionJob(_0x5e6e85,_0x313241,_0x56d270,_0x4b75c2){return new Promise(function(_0x1376ba,_0x1ba42f){var _0x3626b6=new AWS[(_0x2a06('0x7'))]({'accessKeyId':_0x313241,'secretAccessKey':_0x5e6e85,'region':_0x56d270});_0x3626b6[_0x2a06('0x8')]({'TranscriptionJobName':_0x4b75c2},function(_0x448892,_0x5da16b){if(_0x448892){return _0x1ba42f(_0x448892);}else{return _0x1376ba(_0x5da16b);}});});}function sentiment(_0x2a09df,_0x30e8c5,_0x4ed6fc,_0x2bcc82,_0xd2a1a0){return new Promise(function(_0x125a74,_0x533012){var _0x528c65=new AWS['Comprehend']({'accessKeyId':_0x30e8c5,'secretAccessKey':_0x2a09df,'region':_0x4ed6fc});_0x528c65['detectSentiment']({'Text':_0x2bcc82,'LanguageCode':_0xd2a1a0[_0x2a06('0x9')](0x0,0x2)},function(_0x300b57,_0x5e8afe){if(_0x300b57){return _0x533012(_0x300b57);}else{return _0x125a74(_0x5e8afe);}});});}function checkTranscribeJob(_0x45988e,_0x1ae9bb,_0x329cdf){var _0x179b0e;return new BPromise(function(_0x19f480,_0x760c01){logger[_0x2a06('0xa')](util['format']('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x45988e['id'],_0x45988e[_0x2a06('0xb')]));return getTranscriptionJob(_0x329cdf[_0x2a06('0xc')],_0x329cdf['data2'],_0x1ae9bb[_0x2a06('0xd')],_0x45988e[_0x2a06('0xb')])[_0x2a06('0xe')](function(_0x1ba819){logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x10'),_0x45988e['id'],_0x45988e[_0x2a06('0xb')],_0x1ba819[_0x2a06('0x11')][_0x2a06('0x12')]));if(!_0x45988e['fileText']){switch(_0x1ba819[_0x2a06('0x11')][_0x2a06('0x12')]){case _0x2a06('0x13'):var _0x285d6a={'transcribeStatus':_0x1ba819[_0x2a06('0x11')][_0x2a06('0x12')],'fileUri':_0x1ba819[_0x2a06('0x11')][_0x2a06('0x14')][_0x2a06('0x15')]};logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x16'),_0x45988e['id']));return rp({'uri':_0x1ba819['TranscriptionJob'][_0x2a06('0x14')][_0x2a06('0x15')],'json':!![]})[_0x2a06('0xe')](function(_0x393cc4){logger[_0x2a06('0xa')](util[_0x2a06('0xf')]('[RECORDING:%d]\x20Transcript\x20downloaded',_0x45988e['id']));if(_0x393cc4&&_0x393cc4['results']&&_0x393cc4[_0x2a06('0x17')]['transcripts']&&_0x393cc4['results'][_0x2a06('0x18')][_0x2a06('0x19')]){_0x285d6a[_0x2a06('0x1a')]='';for(var _0x1d61dc=0x0;_0x1d61dc<_0x393cc4[_0x2a06('0x17')][_0x2a06('0x18')]['length'];_0x1d61dc++){_0x285d6a['fileText']+=_0x393cc4[_0x2a06('0x17')][_0x2a06('0x18')][_0x1d61dc][_0x2a06('0x1b')]+'';}}return _0x45988e[_0x2a06('0x1c')](_0x285d6a);})[_0x2a06('0xe')](function(){logger['info'](util[_0x2a06('0xf')](_0x2a06('0x1d'),_0x45988e['id']));if(!_0x45988e['tempSentiment']){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x20'));}if(!_0x1ae9bb[_0x2a06('0x21')]||!_0x1ae9bb[_0x2a06('0x22')]||!_0x1ae9bb['sentimentRegion']||!_0x1ae9bb[_0x2a06('0x23')]||!_0x1ae9bb['bucket']){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x24'));}if(!_0x285d6a[_0x2a06('0x1a')]){throw new Error(_0x2a06('0x25'));}if(_0x1ae9bb['sentimentAccountId']===_0x329cdf['id']){return _0x329cdf;}else{return db[_0x2a06('0x26')][_0x2a06('0x27')]({'where':{'id':_settings['sentimentAccountId']}});}})['then'](function(_0x5b48e7){if(!_0x5b48e7){throw new db[(_0x2a06('0x1e'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x5b48e7[_0x2a06('0xc')]||!_0x5b48e7[_0x2a06('0x28')]){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x29'));}_0x179b0e=_0x5b48e7;logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x2a'),_0x45988e['id']));return sentiment(_0x179b0e[_0x2a06('0xc')],_0x179b0e['data2'],_0x1ae9bb[_0x2a06('0x2b')],_0x285d6a[_0x2a06('0x1a')],_0x1ae9bb[_0x2a06('0x23')]);})['then'](function(_0x5339bb){logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x2c'),_0x45988e['id']));return _0x45988e['update']({'sentiment':_0x5339bb['Sentiment'],'sPositive':_0x5339bb[_0x2a06('0x2d')][_0x2a06('0x2e')],'sNegative':_0x5339bb[_0x2a06('0x2d')][_0x2a06('0x2f')],'sMixed':_0x5339bb['SentimentScore'][_0x2a06('0x30')],'sNeutral':_0x5339bb['SentimentScore'][_0x2a06('0x31')]});})[_0x2a06('0xe')](function(){logger['info'](util['format'](_0x2a06('0x1d'),_0x45988e['id']));_0x19f480();});case _0x2a06('0x32'):return _0x45988e[_0x2a06('0x1c')]({'transcribeStatus':_0x2a06('0x32'),'failureReason':_0x1ba819['TranscriptionJob']['FailureReason']})['then'](function(){logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x1d'),_0x45988e['id']));_0x19f480();});default:logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x33'),_0x45988e['id']));break;}}else{return BPromise[_0x2a06('0x34')]()['then'](function(){if(!_0x45988e['tempSentiment']){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x20'));}if(!_0x1ae9bb[_0x2a06('0x21')]||!_0x1ae9bb[_0x2a06('0x22')]||!_0x1ae9bb[_0x2a06('0x2b')]||!_0x1ae9bb[_0x2a06('0x23')]||!_0x1ae9bb[_0x2a06('0x35')]){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x24'));}if(!_0x45988e[_0x2a06('0x1a')]){throw new Error(_0x2a06('0x25'));}if(_0x1ae9bb[_0x2a06('0x22')]===_0x329cdf['id']){return _0x329cdf;}else{return db[_0x2a06('0x26')][_0x2a06('0x27')]({'where':{'id':_settings[_0x2a06('0x22')]}});}})[_0x2a06('0xe')](function(_0x4ccb9d){if(!_0x4ccb9d){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x36'));}if(!_0x4ccb9d[_0x2a06('0xc')]||!_0x4ccb9d[_0x2a06('0x28')]){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x29'));}_0x179b0e=_0x4ccb9d;logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x2a'),_0x45988e['id']));return sentiment(_0x179b0e[_0x2a06('0xc')],_0x179b0e[_0x2a06('0x28')],_0x1ae9bb[_0x2a06('0x2b')],_0x45988e[_0x2a06('0x1a')],_0x1ae9bb[_0x2a06('0x23')]);})[_0x2a06('0xe')](function(_0x1d8919){logger[_0x2a06('0xa')](util[_0x2a06('0xf')](_0x2a06('0x2c'),_0x45988e['id']));return _0x45988e['update']({'sentiment':_0x1d8919[_0x2a06('0x37')],'sPositive':_0x1d8919['SentimentScore']['Positive'],'sNegative':_0x1d8919[_0x2a06('0x2d')]['Negative'],'sMixed':_0x1d8919[_0x2a06('0x2d')]['Mixed'],'sNeutral':_0x1d8919['SentimentScore'][_0x2a06('0x31')],'transcribeStatus':_0x2a06('0x13')});})[_0x2a06('0xe')](function(){logger[_0x2a06('0xa')](util['format'](_0x2a06('0x1d'),_0x45988e['id']));_0x19f480();});}})[_0x2a06('0x38')](function(_0x3e5f7d){if(_0x3e5f7d){if(!_0x3e5f7d[_0x2a06('0x39')]||_0x3e5f7d['name']!==_0x2a06('0x3a')){logger[_0x2a06('0x3b')](util[_0x2a06('0xf')](_0x2a06('0x3c'),_0x45988e['id']),util['inspect'](_0x3e5f7d,{'showHidden':![],'depth':null}));}}_0x19f480();});});}function checkTranscribe(){var _0x22dd68;var _0x2900e1;var _0x55b004;return db[_0x2a06('0x3d')][_0x2a06('0x3e')]({'where':{'transcribeStatus':'IN_PROGRESS'}})[_0x2a06('0xe')](function(_0x16aba6){if(!_0x16aba6||!_0x16aba6[_0x2a06('0x19')]){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))]('No\x20transcribe\x20job\x20to\x20check');}_0x22dd68=_0x16aba6;return db['Setting'][_0x2a06('0x27')]({'where':{'id':0x1}});})['then'](function(_0x123061){if(!_0x123061){throw new db['Sequelize']['ValidationError'](_0x2a06('0x3f'));}_0x2900e1=_0x123061;if(!_0x2900e1['transcribe']||!_0x2900e1[_0x2a06('0x40')]||!_0x2900e1[_0x2a06('0xd')]||!_0x2900e1['language']||!_0x2900e1[_0x2a06('0x35')]){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x41'));}return db[_0x2a06('0x26')][_0x2a06('0x27')]({'where':{'id':_0x2900e1['transcribeAccountId']}});})[_0x2a06('0xe')](function(_0x4e7e73){if(!_0x4e7e73){throw new db[(_0x2a06('0x1e'))][(_0x2a06('0x1f'))](_0x2a06('0x36'));}if(!_0x4e7e73[_0x2a06('0xc')]||!_0x4e7e73[_0x2a06('0x28')]){throw new db[(_0x2a06('0x1e'))]['ValidationError'](_0x2a06('0x29'));}_0x55b004=_0x4e7e73;var _0x153a06=[];_0x22dd68[_0x2a06('0x42')](function(_0xbae561){_0x153a06[_0x2a06('0x43')](checkTranscribeJob(_0xbae561,_0x2900e1,_0x55b004));});return BPromise[_0x2a06('0x44')](_0x153a06);})[_0x2a06('0x38')](function(_0x5e204c){if(_0x5e204c){if(!_0x5e204c[_0x2a06('0x39')]||_0x5e204c['name']!=='SequelizeValidationError'){logger['error'](util[_0x2a06('0x45')](_0x5e204c,{'showHidden':![],'depth':null}));}}});}exports[_0x2a06('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0xffe1=['sentimentRegion','language','bucket','Sentiment\x20Analysis\x20not\x20configured','Transcript\x20not\x20available','CloudProvider','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Positive','Negative','Mixed','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','Sentiment\x20Analysis\x20not\x20requested','findOne','Neutral','catch','name','error','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','inspect','VoiceRecording','findAll','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribeAccountId','forEach','push','SequelizeValidationError','start','lodash','aws-sdk','util','../../mysqldb','transcribe','TranscribeService','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','data1','data2','transcribeRegion','transcribeName','then','TranscriptionJob','fileText','TranscriptionJobStatus','COMPLETED','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','transcripts','length','results','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','tempSentiment','Sequelize','ValidationError','sentiment','sentimentAccountId'];(function(_0x261be8,_0x453c74){var _0x428dcd=function(_0x3e9c2d){while(--_0x3e9c2d){_0x261be8['push'](_0x261be8['shift']());}};_0x428dcd(++_0x453c74);}(_0xffe1,0x187));var _0x1ffe=function(_0x55591e,_0x3a032d){_0x55591e=_0x55591e-0x0;var _0x5475eb=_0xffe1[_0x55591e];return _0x5475eb;};var _=require(_0x1ffe('0x0'));var AWS=require(_0x1ffe('0x1'));var rp=require('request-promise');var util=require(_0x1ffe('0x2'));var BPromise=require('bluebird');var db=require(_0x1ffe('0x3'))['db'];var logger=require('../../config/logger')(_0x1ffe('0x4'));function getTranscriptionJob(_0x15e0d1,_0x394f56,_0x16af19,_0x33623a){return new Promise(function(_0x378bbc,_0xb5517d){var _0x37df04=new AWS[(_0x1ffe('0x5'))]({'accessKeyId':_0x394f56,'secretAccessKey':_0x15e0d1,'region':_0x16af19});_0x37df04['getTranscriptionJob']({'TranscriptionJobName':_0x33623a},function(_0x1c6bdb,_0x4c125e){if(_0x1c6bdb){return _0xb5517d(_0x1c6bdb);}else{return _0x378bbc(_0x4c125e);}});});}function sentiment(_0x3a2a88,_0x5cb212,_0x29f784,_0x5b21eb,_0x3acf97){return new Promise(function(_0x1fc0b9,_0x51be1e){var _0x45bfb9=new AWS[(_0x1ffe('0x6'))]({'accessKeyId':_0x5cb212,'secretAccessKey':_0x3a2a88,'region':_0x29f784});_0x45bfb9[_0x1ffe('0x7')]({'Text':_0x5b21eb,'LanguageCode':_0x3acf97[_0x1ffe('0x8')](0x0,0x2)},function(_0x33b02b,_0x280dfe){if(_0x33b02b){return _0x51be1e(_0x33b02b);}else{return _0x1fc0b9(_0x280dfe);}});});}function checkTranscribeJob(_0x4d8280,_0x5ebb12,_0x3b925b){var _0x32c382;return new BPromise(function(_0x4669e4,_0x2e585f){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0xb'),_0x4d8280['id'],_0x4d8280['transcribeName']));return getTranscriptionJob(_0x3b925b[_0x1ffe('0xc')],_0x3b925b[_0x1ffe('0xd')],_0x5ebb12[_0x1ffe('0xe')],_0x4d8280[_0x1ffe('0xf')])[_0x1ffe('0x10')](function(_0x45459f){logger[_0x1ffe('0x9')](util['format']('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0x4d8280['id'],_0x4d8280['transcribeName'],_0x45459f[_0x1ffe('0x11')]['TranscriptionJobStatus']));if(!_0x4d8280[_0x1ffe('0x12')]){switch(_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x13')]){case _0x1ffe('0x14'):var _0x1cc248={'transcribeStatus':_0x45459f['TranscriptionJob'][_0x1ffe('0x13')],'fileUri':_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x15')][_0x1ffe('0x16')]};logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x17'),_0x4d8280['id']));return rp({'uri':_0x45459f[_0x1ffe('0x11')][_0x1ffe('0x15')]['TranscriptFileUri'],'json':!![]})['then'](function(_0x161c9e){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x18'),_0x4d8280['id']));if(_0x161c9e&&_0x161c9e['results']&&_0x161c9e['results'][_0x1ffe('0x19')]&&_0x161c9e['results']['transcripts'][_0x1ffe('0x1a')]){_0x1cc248[_0x1ffe('0x12')]='';for(var _0x5215db=0x0;_0x5215db<_0x161c9e['results']['transcripts'][_0x1ffe('0x1a')];_0x5215db++){_0x1cc248[_0x1ffe('0x12')]+=_0x161c9e[_0x1ffe('0x1b')][_0x1ffe('0x19')][_0x5215db]['transcript']+'';}}return _0x4d8280[_0x1ffe('0x1c')](_0x1cc248);})['then'](function(){logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x1d'),_0x4d8280['id']));if(!_0x4d8280[_0x1ffe('0x1e')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x5ebb12[_0x1ffe('0x21')]||!_0x5ebb12[_0x1ffe('0x22')]||!_0x5ebb12[_0x1ffe('0x23')]||!_0x5ebb12[_0x1ffe('0x24')]||!_0x5ebb12[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x26'));}if(!_0x1cc248[_0x1ffe('0x12')]){throw new Error(_0x1ffe('0x27'));}if(_0x5ebb12[_0x1ffe('0x22')]===_0x3b925b['id']){return _0x3b925b;}else{return db[_0x1ffe('0x28')]['findOne']({'where':{'id':_settings[_0x1ffe('0x22')]}});}})[_0x1ffe('0x10')](function(_0x1bc50b){if(!_0x1bc50b){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x29'));}if(!_0x1bc50b[_0x1ffe('0xc')]||!_0x1bc50b[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x32c382=_0x1bc50b;logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2b'),_0x4d8280['id']));return sentiment(_0x32c382[_0x1ffe('0xc')],_0x32c382['data2'],_0x5ebb12[_0x1ffe('0x23')],_0x1cc248[_0x1ffe('0x12')],_0x5ebb12['language']);})['then'](function(_0x553aec){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2c'),_0x4d8280['id']));return _0x4d8280['update']({'sentiment':_0x553aec[_0x1ffe('0x2d')],'sPositive':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x2f')],'sNegative':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x30')],'sMixed':_0x553aec[_0x1ffe('0x2e')][_0x1ffe('0x31')],'sNeutral':_0x553aec[_0x1ffe('0x2e')]['Neutral']});})[_0x1ffe('0x10')](function(){logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});case _0x1ffe('0x32'):return _0x4d8280[_0x1ffe('0x1c')]({'transcribeStatus':_0x1ffe('0x32'),'failureReason':_0x45459f[_0x1ffe('0x11')]['FailureReason']})[_0x1ffe('0x10')](function(){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});default:logger[_0x1ffe('0x9')](util['format'](_0x1ffe('0x33'),_0x4d8280['id']));break;}}else{return BPromise[_0x1ffe('0x34')]()[_0x1ffe('0x10')](function(){if(!_0x4d8280[_0x1ffe('0x1e')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x35'));}if(!_0x5ebb12[_0x1ffe('0x21')]||!_0x5ebb12[_0x1ffe('0x22')]||!_0x5ebb12[_0x1ffe('0x23')]||!_0x5ebb12[_0x1ffe('0x24')]||!_0x5ebb12[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x26'));}if(!_0x4d8280[_0x1ffe('0x12')]){throw new Error(_0x1ffe('0x27'));}if(_0x5ebb12[_0x1ffe('0x22')]===_0x3b925b['id']){return _0x3b925b;}else{return db[_0x1ffe('0x28')][_0x1ffe('0x36')]({'where':{'id':_settings['sentimentAccountId']}});}})[_0x1ffe('0x10')](function(_0x373ee2){if(!_0x373ee2){throw new db[(_0x1ffe('0x1f'))]['ValidationError'](_0x1ffe('0x29'));}if(!_0x373ee2[_0x1ffe('0xc')]||!_0x373ee2[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x32c382=_0x373ee2;logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x2b'),_0x4d8280['id']));return sentiment(_0x32c382[_0x1ffe('0xc')],_0x32c382['data2'],_0x5ebb12[_0x1ffe('0x23')],_0x4d8280[_0x1ffe('0x12')],_0x5ebb12[_0x1ffe('0x24')]);})[_0x1ffe('0x10')](function(_0x4546cd){logger[_0x1ffe('0x9')](util['format']('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x4d8280['id']));return _0x4d8280[_0x1ffe('0x1c')]({'sentiment':_0x4546cd[_0x1ffe('0x2d')],'sPositive':_0x4546cd[_0x1ffe('0x2e')][_0x1ffe('0x2f')],'sNegative':_0x4546cd[_0x1ffe('0x2e')]['Negative'],'sMixed':_0x4546cd['SentimentScore'][_0x1ffe('0x31')],'sNeutral':_0x4546cd[_0x1ffe('0x2e')][_0x1ffe('0x37')],'transcribeStatus':'COMPLETED'});})['then'](function(){logger[_0x1ffe('0x9')](util[_0x1ffe('0xa')](_0x1ffe('0x1d'),_0x4d8280['id']));_0x4669e4();});}})[_0x1ffe('0x38')](function(_0x258a79){if(_0x258a79){if(!_0x258a79[_0x1ffe('0x39')]||_0x258a79[_0x1ffe('0x39')]!=='SequelizeValidationError'){logger[_0x1ffe('0x3a')](util['format'](_0x1ffe('0x3b'),_0x4d8280['id']),util[_0x1ffe('0x3c')](_0x258a79,{'showHidden':![],'depth':null}));}}_0x4669e4();});});}function checkTranscribe(){var _0x2757b8;var _0x3c08fe;var _0x306238;return db[_0x1ffe('0x3d')][_0x1ffe('0x3e')]({'where':{'transcribeStatus':_0x1ffe('0x3f')}})[_0x1ffe('0x10')](function(_0x4c4134){if(!_0x4c4134||!_0x4c4134['length']){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('No\x20transcribe\x20job\x20to\x20check');}_0x2757b8=_0x4c4134;return db[_0x1ffe('0x40')][_0x1ffe('0x36')]({'where':{'id':0x1}});})[_0x1ffe('0x10')](function(_0x49e8f2){if(!_0x49e8f2){throw new db['Sequelize'][(_0x1ffe('0x20'))](_0x1ffe('0x41'));}_0x3c08fe=_0x49e8f2;if(!_0x3c08fe['transcribe']||!_0x3c08fe['transcribeAccountId']||!_0x3c08fe[_0x1ffe('0xe')]||!_0x3c08fe['language']||!_0x3c08fe[_0x1ffe('0x25')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))]('Transcribe\x20not\x20configured');}return db[_0x1ffe('0x28')][_0x1ffe('0x36')]({'where':{'id':_0x3c08fe[_0x1ffe('0x42')]}});})[_0x1ffe('0x10')](function(_0x319e6b){if(!_0x319e6b){throw new db[(_0x1ffe('0x1f'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x319e6b[_0x1ffe('0xc')]||!_0x319e6b[_0x1ffe('0xd')]){throw new db[(_0x1ffe('0x1f'))][(_0x1ffe('0x20'))](_0x1ffe('0x2a'));}_0x306238=_0x319e6b;var _0x4f96b0=[];_0x2757b8[_0x1ffe('0x43')](function(_0x144165){_0x4f96b0[_0x1ffe('0x44')](checkTranscribeJob(_0x144165,_0x3c08fe,_0x306238));});return BPromise['all'](_0x4f96b0);})[_0x1ffe('0x38')](function(_0x2c4fc2){if(_0x2c4fc2){if(!_0x2c4fc2[_0x1ffe('0x39')]||_0x2c4fc2[_0x1ffe('0x39')]!==_0x1ffe('0x45')){logger[_0x1ffe('0x3a')](util['inspect'](_0x2c4fc2,{'showHidden':![],'depth':null}));}}});}exports[_0x1ffe('0x46')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index be544c9..bfc7192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bf8=['util','../../config/environment','../../mysqldb','schedule','redis','socket.io-emitter','WhatsappInteraction','findAll','lastMsgAt','hours','then','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','update','system','timeout','format','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','join','emit','error','inspect','lodash','moment','ioredis'];(function(_0x599f41,_0x4db732){var _0x2e4d58=function(_0x14c882){while(--_0x14c882){_0x599f41['push'](_0x599f41['shift']());}};_0x2e4d58(++_0x4db732);}(_0x8bf8,0x84));var _0x88bf=function(_0x4a5531,_0x58895c){_0x4a5531=_0x4a5531-0x0;var _0xce9b10=_0x8bf8[_0x4a5531];return _0xce9b10;};'use strict';var _=require(_0x88bf('0x0'));var moment=require(_0x88bf('0x1'));var Redis=require(_0x88bf('0x2'));var util=require(_0x88bf('0x3'));var config=require(_0x88bf('0x4'));var db=require(_0x88bf('0x5'))['db'];var logger=require('../logger')(_0x88bf('0x6'));config[_0x88bf('0x7')]=_['defaults'](config[_0x88bf('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x88bf('0x8'))(new Redis(config['redis']));function closeInteractions(){var _0x54e189=[];return db[_0x88bf('0x9')][_0x88bf('0xa')]({'raw':!![],'attributes':['id',_0x88bf('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()['subtract'](0x18,_0x88bf('0xc'))}}})[_0x88bf('0xd')](function(_0x2aec92){if(_0x2aec92&&_0x2aec92[_0x88bf('0xe')]){_0x54e189=_[_0x88bf('0xf')](_0x2aec92||[],'id');logger[_0x88bf('0x10')](_0x88bf('0x11'),_0x54e189['join']());return db[_0x88bf('0x9')][_0x88bf('0x12')]({'closeReason':_0x88bf('0x13'),'disposition':_0x88bf('0x14'),'closed':!![],'closedAt':moment()[_0x88bf('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x54e189}});}})[_0x88bf('0xd')](function(){if(_0x54e189&&_0x54e189[_0x88bf('0xe')]){logger[_0x88bf('0x10')](_0x88bf('0x16'),_0x54e189[_0x88bf('0x17')]());for(var _0x44b3a2=0x0;_0x44b3a2<_0x54e189[_0x88bf('0xe')];_0x44b3a2++){io[_0x88bf('0x18')]('whatsappInteraction:update',{'id':_0x54e189[_0x44b3a2],'closed':!![]});}}})['catch'](function(_0x403c88){logger[_0x88bf('0x19')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x403c88?util[_0x88bf('0x1a')](_0x403c88,{'showHidden':![],'depth':null}):'');});}exports['start']=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x802d=['inspect','start','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract','hours','length','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','update','system','format','YYYY-MM-DD\x20HH:mm:ss','then','join','whatsappInteraction:update','catch','error'];(function(_0xd0a847,_0x72562b){var _0x2536ec=function(_0x20e4db){while(--_0x20e4db){_0xd0a847['push'](_0xd0a847['shift']());}};_0x2536ec(++_0x72562b);}(_0x802d,0xb0));var _0xd802=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x802d[_0xf71120];return _0xbe2fd3;};'use strict';var _=require('lodash');var moment=require(_0xd802('0x0'));var Redis=require(_0xd802('0x1'));var util=require(_0xd802('0x2'));var config=require(_0xd802('0x3'));var db=require(_0xd802('0x4'))['db'];var logger=require(_0xd802('0x5'))('schedule');config[_0xd802('0x6')]=_[_0xd802('0x7')](config['redis'],{'host':_0xd802('0x8'),'port':0x18eb});var io=require(_0xd802('0x9'))(new Redis(config[_0xd802('0x6')]));function closeInteractions(){var _0x5f4764=[];return db[_0xd802('0xa')]['findAll']({'raw':!![],'attributes':['id',_0xd802('0xb')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0xd802('0xc')](0x18,_0xd802('0xd'))}}})['then'](function(_0x48d4ad){if(_0x48d4ad&&_0x48d4ad[_0xd802('0xe')]){_0x5f4764=_[_0xd802('0xf')](_0x48d4ad||[],'id');logger[_0xd802('0x10')](_0xd802('0x11'),_0x5f4764['join']());return db[_0xd802('0xa')][_0xd802('0x12')]({'closeReason':_0xd802('0x13'),'disposition':'timeout','closed':!![],'closedAt':moment()[_0xd802('0x14')](_0xd802('0x15'))},{'where':{'id':_0x5f4764}});}})[_0xd802('0x16')](function(){if(_0x5f4764&&_0x5f4764[_0xd802('0xe')]){logger[_0xd802('0x10')]('[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:',_0x5f4764[_0xd802('0x17')]());for(var _0x239bce=0x0;_0x239bce<_0x5f4764[_0xd802('0xe')];_0x239bce++){io['emit'](_0xd802('0x18'),{'id':_0x5f4764[_0x239bce],'closed':!![]});}}})[_0xd802('0x19')](function(_0x246626){logger[_0xd802('0x1a')]('[WHATSAPP]\x20Error\x20closing\x20interactions',_0x246626?util[_0xd802('0x1b')](_0x246626,{'showHidden':![],'depth':null}):'');});}exports[_0xd802('0x1c')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 2aa7d43..7428807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x785f=['finished\x20populating','contacts1','CmHopper','hopper1','bulkCreate','contacts2','hopper2','catch','util','push','Innocenzo','innocenzo.biondo','@xcally.com','now','Biondo','CmContact','destroy','then','log'];(function(_0x35488c,_0x43a07c){var _0x566215=function(_0x112af2){while(--_0x112af2){_0x35488c['push'](_0x35488c['shift']());}};_0x566215(++_0x43a07c);}(_0x785f,0xff));var _0xf785=function(_0x456fb1,_0x859a1d){_0x456fb1=_0x456fb1-0x0;var _0x4083d6=_0x785f[_0x456fb1];return _0x4083d6;};'use strict';var util=require(_0xf785('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0xf785('0x1')]({'id':i,'firstName':_0xf785('0x2')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0xf785('0x3')+i+_0xf785('0x4')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0xf785('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf785('0x5')](),'updatedAt':Date[_0xf785('0x5')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0xf785('0x1')]({'id':i,'firstName':'Innocenzo'+i,'lastName':_0xf785('0x6')+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+_0xf785('0x4')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0xf785('0x1')]({'id':i,'active':![],'scheduledat':Date[_0xf785('0x5')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0xf785('0x5')](),'updatedAt':Date[_0xf785('0x5')]()});}db[_0xf785('0x7')][_0xf785('0x8')]({'where':{}})[_0xf785('0x9')](function(){return db[_0xf785('0x7')]['bulkCreate'](contacts);})[_0xf785('0x9')](function(){console[_0xf785('0xa')](_0xf785('0xb'),_0xf785('0xc'));return db[_0xf785('0xd')][_0xf785('0x8')]({'where':{}});})[_0xf785('0x9')](function(){return db[_0xf785('0xd')]['bulkCreate'](hopper);})[_0xf785('0x9')](function(){console[_0xf785('0xa')](_0xf785('0xb'),_0xf785('0xe'));return db[_0xf785('0x7')][_0xf785('0xf')](contacts2);})['then'](function(){console[_0xf785('0xa')](_0xf785('0xb'),_0xf785('0x10'));return db[_0xf785('0xd')][_0xf785('0xf')](hopper2);})['then'](function(){console['log'](_0xf785('0xb'),_0xf785('0x11'));})[_0xf785('0x12')](function(_0x2e6dc1){console[_0xf785('0xa')](_0x2e6dc1);});
\ No newline at end of file
+var _0xb0e4=['bulkCreate','log','CmHopper','finished\x20populating','contacts2','catch','util','Innocenzo','Biondo','innocenzo.biondo','now','@xcally.com','push','CmContact','destroy','then'];(function(_0x254bb1,_0x1220d3){var _0x5b13f8=function(_0x174b8d){while(--_0x174b8d){_0x254bb1['push'](_0x254bb1['shift']());}};_0x5b13f8(++_0x1220d3);}(_0xb0e4,0xe6));var _0x4b0e=function(_0x243b59,_0x3f9495){_0x243b59=_0x243b59-0x0;var _0x3e1676=_0xb0e4[_0x243b59];return _0x3e1676;};'use strict';var util=require(_0x4b0e('0x0'));var db=require('../mysqldb')['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts['push']({'id':i,'firstName':_0x4b0e('0x1')+i,'lastName':_0x4b0e('0x2')+i,'phone':0xf879fb460+i,'email':_0x4b0e('0x3')+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper['push']({'id':i,'active':![],'scheduledat':Date[_0x4b0e('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date[_0x4b0e('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2['push']({'id':i,'firstName':_0x4b0e('0x1')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':_0x4b0e('0x3')+i+_0x4b0e('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x4b0e('0x6')]({'id':i,'active':![],'scheduledat':Date[_0x4b0e('0x4')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date['now'](),'updatedAt':Date['now']()});}db[_0x4b0e('0x7')][_0x4b0e('0x8')]({'where':{}})[_0x4b0e('0x9')](function(){return db[_0x4b0e('0x7')][_0x4b0e('0xa')](contacts);})['then'](function(){console[_0x4b0e('0xb')]('finished\x20populating','contacts1');return db[_0x4b0e('0xc')]['destroy']({'where':{}});})['then'](function(){return db[_0x4b0e('0xc')][_0x4b0e('0xa')](hopper);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),'hopper1');return db[_0x4b0e('0x7')][_0x4b0e('0xa')](contacts2);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),_0x4b0e('0xe'));return db[_0x4b0e('0xc')][_0x4b0e('0xa')](hopper2);})[_0x4b0e('0x9')](function(){console[_0x4b0e('0xb')](_0x4b0e('0xd'),'hopper2');})[_0x4b0e('0xf')](function(_0x3dcc32){console[_0x4b0e('0xb')](_0x3dcc32);});
\ No newline at end of file
index d676a64..57fceee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf287=['push','%s%s','agent','format','%s%s@xcally.com','password','friend','udp','all','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user','catch','util','../mysqldb'];(function(_0x5b9568,_0x1bce36){var _0x336b76=function(_0x377bf7){while(--_0x377bf7){_0x5b9568['push'](_0x5b9568['shift']());}};_0x336b76(++_0x1bce36);}(_0xf287,0x67));var _0x7f28=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0xf287[_0x1d1779];return _0x2377e9;};'use strict';var util=require(_0x7f28('0x0'));var db=require(_0x7f28('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0x7f28('0x2')]({'name':util['format'](_0x7f28('0x3'),_0x7f28('0x4'),i),'fullname':util[_0x7f28('0x5')](_0x7f28('0x3'),_0x7f28('0x4'),i),'email':util[_0x7f28('0x5')](_0x7f28('0x6'),_0x7f28('0x4'),i),'role':'agent','password':_0x7f28('0x7'),'internal':0xfa0+i,'type':_0x7f28('0x8'),'transport':[_0x7f28('0x9'),'ws','wss'],'disallow':[_0x7f28('0xa')],'allow':['ulaw'],'defaultuser':util[_0x7f28('0x5')](_0x7f28('0x3'),_0x7f28('0x4'),i),'encryption':_0x7f28('0xb'),'avpf':_0x7f28('0xb'),'force_avp':'yes','icesupport':_0x7f28('0xb'),'dtlsenable':_0x7f28('0xb'),'dtlsverify':'no','dtlscertfile':_0x7f28('0xc'),'dtlsprivatekey':_0x7f28('0xd'),'dtlssetup':_0x7f28('0xe'),'callerid':util[_0x7f28('0x5')]('\x22%s\x22\x20<%s>',util['format'](_0x7f28('0x3'),_0x7f28('0x4'),i),0xfa0+i)});}db[_0x7f28('0xf')][_0x7f28('0x10')](users)[_0x7f28('0x11')](function(){console[_0x7f28('0x12')](_0x7f28('0x13'));})[_0x7f28('0x14')](function(_0xcf154f){console[_0x7f28('0x12')](_0xcf154f);});
\ No newline at end of file
+var _0xb61d=['User','bulkCreate','log','add\x20user','catch','util','../mysqldb','format','%s%s','agent','password','friend','udp','all','yes','actpass','\x22%s\x22\x20<%s>'];(function(_0x26110b,_0x2a1fb2){var _0xd3644e=function(_0x6e596d){while(--_0x6e596d){_0x26110b['push'](_0x26110b['shift']());}};_0xd3644e(++_0x2a1fb2);}(_0xb61d,0xf3));var _0xdb61=function(_0x5bca11,_0x1abc72){_0x5bca11=_0x5bca11-0x0;var _0x2f3b25=_0xb61d[_0x5bca11];return _0x2f3b25;};'use strict';var util=require(_0xdb61('0x0'));var db=require(_0xdb61('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),'fullname':util[_0xdb61('0x2')]('%s%s',_0xdb61('0x4'),i),'email':util[_0xdb61('0x2')]('%s%s@xcally.com',_0xdb61('0x4'),i),'role':_0xdb61('0x4'),'password':_0xdb61('0x5'),'internal':0xfa0+i,'type':_0xdb61('0x6'),'transport':[_0xdb61('0x7'),'ws','wss'],'disallow':[_0xdb61('0x8')],'allow':['ulaw'],'defaultuser':util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),'encryption':_0xdb61('0x9'),'avpf':_0xdb61('0x9'),'force_avp':_0xdb61('0x9'),'icesupport':_0xdb61('0x9'),'dtlsenable':_0xdb61('0x9'),'dtlsverify':'no','dtlscertfile':'/etc/pki/tls/certs/motion.crt','dtlsprivatekey':'/etc/pki/tls/private/motion.key','dtlssetup':_0xdb61('0xa'),'callerid':util[_0xdb61('0x2')](_0xdb61('0xb'),util[_0xdb61('0x2')](_0xdb61('0x3'),_0xdb61('0x4'),i),0xfa0+i)});}db[_0xdb61('0xc')][_0xdb61('0xd')](users)['then'](function(){console[_0xdb61('0xe')](_0xdb61('0xf'));})[_0xdb61('0x10')](function(_0x32fc8d){console['log'](_0x32fc8d);});
\ No newline at end of file
index a25f968..16add6a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['OpenchannelQueue','Trunk','user','voice:outbound','WhatsappQueues','WhatsappQueue','getVoiceQueues','getChatQueues','getFaxQueues','getSmsQueues','all','chat','sms','mail','openchannel','whatsapp','telephone:%s','leave','map','emit','user_has_chat_interactions:remove','user_has_mail_interactions:remove','removeSmsInteractions','user_has_sms_interactions:remove','OpenchannelInteractions','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','WhatsappInteractions','removeWhatsappInteractions','join','default','connection','setMaxListeners','address','request','remoteAddress','remotePort','log','SocketIO\x20','nsp','disconnect','CONNECTED','lodash','util','Agents','User','name','agent','telephone','type','ivr','UserProfileSection','then','autoAssociation','VoiceQueues','ChatQueues','FaxQueues','SmsQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','resourceId','where','role','Campaign','format','%s:queue:%s','length','handshake','query','userProfileId','ChatInteraction','MailInteraction','MailInteractions','FaxInteraction','FaxInteractions','SmsInteraction','SmsInteractions','OpenchannelInteraction','WhatsappInteraction','user:%s','admin','voice:inbound','include','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue'];(function(_0x51beba,_0x202d19){var _0x167ee0=function(_0x2d5b21){while(--_0x2d5b21){_0x51beba['push'](_0x51beba['shift']());}};_0x167ee0(++_0x202d19);}(_0xed1c,0xe4));var _0xced1=function(_0x15f25f,_0x215e5a){_0x15f25f=_0x15f25f-0x0;var _0x166c14=_0xed1c[_0x15f25f];return _0x166c14;};'use strict';var _=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var config=require('./environment');var queryQueues={'attributes':['id','name'],'include':[{'as':_0xced1('0x2'),'model':db[_0xced1('0x3')],'attributes':['id',_0xced1('0x4'),'role'],'raw':!![],'where':{'role':_0xced1('0x5')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xced1('0x4')],'where':{'role':_0xced1('0x6')}};var queryTrunks={'raw':!![],'attributes':['id',_0xced1('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0xced1('0x5')}};var queryCampaigns={'raw':!![],'attributes':['id',_0xced1('0x4'),_0xced1('0x7')],'where':{'type':_0xced1('0x8')}};function getAssociatedResources(_0x354203,_0x3221b6,_0x325dd2){return db[_0xced1('0x9')]['findOne']({'where':{'name':_0x354203,'userProfileId':_0x3221b6},'raw':!![]})[_0xced1('0xa')](function(_0x59c820){if(_0x59c820){if(_0x59c820[_0xced1('0xb')]){switch(_0x354203){case _0xced1('0xc'):case _0xced1('0xd'):case _0xced1('0xe'):case _0xced1('0xf'):case _0xced1('0x10'):case _0xced1('0x11'):case'WhatsappQueues':return db[_0x325dd2][_0xced1('0x12')](queryQueues);case _0xced1('0x13'):return db[_0x325dd2][_0xced1('0x12')](queryTelephones);case _0xced1('0x14'):return db[_0x325dd2]['findAll'](queryTrunks);case _0xced1('0x15'):return db[_0x325dd2][_0xced1('0x12')](queryCampaigns);}}else{return db['UserProfileResource'][_0xced1('0x12')]({'attributes':[_0xced1('0x16')],'where':{'sectionId':_0x59c820['id']},'raw':!![]})[_0xced1('0xa')](function(_0x32100b){if(_0x32100b){var _0x47baec={'where':{'id':_['map'](_0x32100b,_0xced1('0x16'))},'raw':!![]};switch(_0x325dd2){case _0xced1('0x3'):_0x47baec[_0xced1('0x17')][_0xced1('0x18')]=_0xced1('0x6');break;case _0xced1('0x19'):_0x47baec['where']['type']=_0xced1('0x8');break;}return db[_0x325dd2][_0xced1('0x12')](_0x47baec);}else{return[];}});}}else{return[];}})[_0xced1('0xa')](function(_0x5257e7){return _0x5257e7;});}function joinOrLeaveQueues(_0x1eac14,_0x25f0df,_0x3e51e4,_0x4eed16){_0x1eac14[_0x25f0df](util[_0xced1('0x1a')](_0xced1('0x1b'),_0x3e51e4,_0x4eed16[_0xced1('0x4')]));if(_0x4eed16['Agents']){for(var _0x138c8b=0x0;_0x138c8b<_0x4eed16[_0xced1('0x2')][_0xced1('0x1c')];_0x138c8b+=0x1){_0x1eac14[_0x25f0df](util['format']('user:%s',_0x4eed16[_0xced1('0x2')][_0x138c8b][_0xced1('0x4')]));}}}function joinOrLeave(_0x2a6248,_0x20dcb4,_0x210d7e){var _0x49c8b9;if(_0x2a6248[_0xced1('0x1d')][_0xced1('0x1e')]['id']){db['User']['find']({'attributes':['id',_0xced1('0x4'),_0xced1('0x18'),_0xced1('0x1f')],'where':{'id':_0x2a6248[_0xced1('0x1d')][_0xced1('0x1e')]['id']},'include':[{'model':db[_0xced1('0x20')],'as':'ChatInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xced1('0x21')],'as':_0xced1('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xced1('0x23')],'as':_0xced1('0x24'),'attributes':['id'],'raw':!![]},{'model':db[_0xced1('0x25')],'as':_0xced1('0x26'),'attributes':['id'],'raw':!![]},{'model':db[_0xced1('0x27')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xced1('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})[_0xced1('0xa')](function(_0x2c2269){if(_0x2c2269){_0x49c8b9=_0x2c2269;_0x2a6248[_0x20dcb4](util[_0xced1('0x1a')](_0xced1('0x29'),_0x2c2269['name']));var _0x59361e=[];switch(_0x2c2269[_0xced1('0x18')]){case _0xced1('0x2a'):_0x2a6248[_0x20dcb4](_0xced1('0x2b'));_0x2a6248[_0x20dcb4]('voice:outbound');if(queryQueues['hasOwnProperty']('include')){delete queryQueues[_0xced1('0x2c')];}_0x59361e[_0xced1('0x2d')](db[_0xced1('0x2e')][_0xced1('0x12')](queryQueues));_0x59361e['push'](db[_0xced1('0x2f')][_0xced1('0x12')](queryQueues));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x30')][_0xced1('0x12')](queryQueues));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x31')]['findAll'](queryQueues));_0x59361e['push'](db[_0xced1('0x32')][_0xced1('0x12')](queryQueues));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x33')][_0xced1('0x12')](queryQueues));_0x59361e[_0xced1('0x2d')](db['WhatsappQueue']['findAll'](queryQueues));_0x59361e['push'](db['User'][_0xced1('0x12')](queryTelephones));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x34')][_0xced1('0x12')](queryTrunks));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x19')][_0xced1('0x12')](queryCampaigns));_0x59361e[_0xced1('0x2d')](db[_0xced1('0x3')][_0xced1('0x12')](queryAgents));break;case _0xced1('0x35'):_0x2a6248[_0x20dcb4](_0xced1('0x2b'));_0x2a6248[_0x20dcb4](_0xced1('0x36'));_0x59361e['push'](getAssociatedResources(_0xced1('0xc'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x2e')));_0x59361e[_0xced1('0x2d')](getAssociatedResources(_0xced1('0xd'),_0x2c2269[_0xced1('0x1f')],'ChatQueue'));_0x59361e[_0xced1('0x2d')](getAssociatedResources(_0xced1('0xe'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x30')));_0x59361e[_0xced1('0x2d')](getAssociatedResources(_0xced1('0xf'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x31')));_0x59361e[_0xced1('0x2d')](getAssociatedResources(_0xced1('0x10'),_0x2c2269[_0xced1('0x1f')],'MailQueue'));_0x59361e['push'](getAssociatedResources(_0xced1('0x11'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x33')));_0x59361e['push'](getAssociatedResources(_0xced1('0x37'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x38')));_0x59361e['push'](getAssociatedResources(_0xced1('0x13'),_0x2c2269[_0xced1('0x1f')],'User'));_0x59361e[_0xced1('0x2d')](getAssociatedResources('Trunks',_0x2c2269[_0xced1('0x1f')],_0xced1('0x34')));_0x59361e['push'](getAssociatedResources(_0xced1('0x15'),_0x2c2269[_0xced1('0x1f')],_0xced1('0x19')));_0x59361e['push'](db[_0xced1('0x3')][_0xced1('0x12')](queryAgents));break;case'agent':_0x2a6248[_0x20dcb4](_0xced1('0x2b'));_0x2a6248[_0x20dcb4]('voice:outbound');_0x59361e['push'](_0x2c2269[_0xced1('0x39')]({'attributes':['id','name']}));_0x59361e[_0xced1('0x2d')](_0x2c2269[_0xced1('0x3a')]({'attributes':['id',_0xced1('0x4')]}));_0x59361e['push'](_0x2c2269[_0xced1('0x3b')]({'attributes':['id','name']}));_0x59361e[_0xced1('0x2d')](_0x2c2269[_0xced1('0x3c')]({'attributes':['id',_0xced1('0x4')]}));_0x59361e[_0xced1('0x2d')](_0x2c2269['getMailQueues']({'attributes':['id',_0xced1('0x4')]}));_0x59361e[_0xced1('0x2d')](_0x2c2269['getOpenchannelQueues']({'attributes':['id',_0xced1('0x4')]}));_0x59361e[_0xced1('0x2d')](_0x2c2269['getWhatsappQueues']({'attributes':['id',_0xced1('0x4')]}));break;}return BPromise[_0xced1('0x3d')](_0x59361e);}})[_0xced1('0xa')](function(_0x59f1ba){if(_0x59f1ba&&_0x59f1ba[_0xced1('0x1c')]){for(var _0xcfbed8=0x0;_0xcfbed8<_0x59f1ba[_0xced1('0x1c')];_0xcfbed8+=0x1){for(var _0x3333e6=0x0;_0x3333e6<_0x59f1ba[_0xcfbed8][_0xced1('0x1c')];_0x3333e6+=0x1){switch(_0xcfbed8){case 0x0:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,'voice',_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x1:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,_0xced1('0x3e'),_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x2:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,'fax',_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x3:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,_0xced1('0x3f'),_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x4:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,_0xced1('0x40'),_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x5:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,_0xced1('0x41'),_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x6:joinOrLeaveQueues(_0x2a6248,_0x20dcb4,_0xced1('0x42'),_0x59f1ba[_0xcfbed8][_0x3333e6]);break;case 0x7:if(_0x49c8b9[_0xced1('0x18')]!==_0xced1('0x5'))_0x2a6248[_0x20dcb4](util['format'](_0xced1('0x43'),_0x59f1ba[_0xcfbed8][_0x3333e6][_0xced1('0x4')]));break;case 0x8:if(_0x49c8b9['role']!==_0xced1('0x5'))_0x2a6248[_0x20dcb4](util['format']('trunk:%s',_0x59f1ba[_0xcfbed8][_0x3333e6][_0xced1('0x4')]));break;case 0x9:if(_0x49c8b9[_0xced1('0x18')]!==_0xced1('0x5'))_0x2a6248[_0x20dcb4](util[_0xced1('0x1a')]('campaign:%s:%s',_0x59f1ba[_0xcfbed8][_0x3333e6][_0xced1('0x7')],_0x59f1ba[_0xcfbed8][_0x3333e6][_0xced1('0x4')]));break;case 0xa:_0x2a6248[_0x20dcb4](util[_0xced1('0x1a')]('user:%s',_0x59f1ba[_0xcfbed8][_0x3333e6]['name']));break;}}}}})[_0xced1('0xa')](function(){if(_0x20dcb4===_0xced1('0x44')){var _0xad1d9f=_[_0xced1('0x45')](_0x49c8b9['ChatInteractions'],'id');return _0x49c8b9['removeChatInteractions'](_0xad1d9f)['then'](function(){for(var _0x7df9c5=0x0;_0x7df9c5<_0xad1d9f[_0xced1('0x1c')];_0x7df9c5+=0x1){_0x210d7e[_0xced1('0x46')](_0xced1('0x47'),{'ChatInteractionId':Number(_0xad1d9f[_0x7df9c5]),'UserId':Number(_0x49c8b9['id'])});}});}})[_0xced1('0xa')](function(){if(_0x20dcb4===_0xced1('0x44')){var _0x211fd0=_[_0xced1('0x45')](_0x49c8b9[_0xced1('0x22')],'id');return _0x49c8b9['removeMailInteractions'](_0x211fd0)[_0xced1('0xa')](function(){for(var _0x3f44e6=0x0;_0x3f44e6<_0x211fd0[_0xced1('0x1c')];_0x3f44e6+=0x1){_0x210d7e['emit'](_0xced1('0x48'),{'MailInteractionId':Number(_0x211fd0[_0x3f44e6]),'UserId':Number(_0x49c8b9['id'])});}});}})[_0xced1('0xa')](function(){if(_0x20dcb4===_0xced1('0x44')){var _0x2acfd3=_['map'](_0x49c8b9[_0xced1('0x24')],'id');return _0x49c8b9['removeFaxInteractions'](_0x2acfd3)['then'](function(){for(var _0x1a2b65=0x0;_0x1a2b65<_0x2acfd3[_0xced1('0x1c')];_0x1a2b65+=0x1){_0x210d7e['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x2acfd3[_0x1a2b65]),'UserId':Number(_0x49c8b9['id'])});}});}})['then'](function(){if(_0x20dcb4===_0xced1('0x44')){var _0x5dfcf4=_[_0xced1('0x45')](_0x49c8b9[_0xced1('0x26')],'id');return _0x49c8b9[_0xced1('0x49')](_0x5dfcf4)[_0xced1('0xa')](function(){for(var _0x39fa12=0x0;_0x39fa12<_0x5dfcf4[_0xced1('0x1c')];_0x39fa12+=0x1){_0x210d7e[_0xced1('0x46')](_0xced1('0x4a'),{'SmsInteractionId':Number(_0x5dfcf4[_0x39fa12]),'UserId':Number(_0x49c8b9['id'])});}});}})['then'](function(){if(_0x20dcb4==='leave'){var _0x4832d2=_[_0xced1('0x45')](_0x49c8b9[_0xced1('0x4b')],'id');return _0x49c8b9[_0xced1('0x4c')](_0x4832d2)['then'](function(){for(var _0x455134=0x0;_0x455134<_0x4832d2[_0xced1('0x1c')];_0x455134+=0x1){_0x210d7e[_0xced1('0x46')](_0xced1('0x4d'),{'OpenchannelInteractionId':Number(_0x4832d2[_0x455134]),'UserId':Number(_0x49c8b9['id'])});}});}})['then'](function(){if(_0x20dcb4===_0xced1('0x44')){var _0x2abd02=_[_0xced1('0x45')](_0x49c8b9[_0xced1('0x4e')],'id');return _0x49c8b9[_0xced1('0x4f')](_0x2abd02)[_0xced1('0xa')](function(){for(var _0x44cfbe=0x0;_0x44cfbe<_0x2abd02[_0xced1('0x1c')];_0x44cfbe+=0x1){_0x210d7e['emit']('user_has_whatsapp_interactions:remove',{'WhatsappInteractionId':Number(_0x2abd02[_0x44cfbe]),'UserId':Number(_0x49c8b9['id'])});}});}})['catch'](function(_0x440b22){_0x2a6248['log'](_0x440b22);});}}function onDisconnect(_0x398264,_0x5d28cc){joinOrLeave(_0x398264,'leave',_0x5d28cc);}function onConnect(_0x37bec5){joinOrLeave(_0x37bec5,_0xced1('0x50'));}exports[_0xced1('0x51')]=function(_0x2bdcea){_0x2bdcea['on'](_0xced1('0x52'),function(_0x466da1){_0x466da1[_0xced1('0x53')](0x0);_0x466da1[_0xced1('0x54')]=_0x466da1[_0xced1('0x55')][_0xced1('0x52')][_0xced1('0x56')]+':'+_0x466da1['request'][_0xced1('0x52')][_0xced1('0x57')];_0x466da1['connectedAt']=new Date();_0x466da1[_0xced1('0x58')]=function(_0x26f154){console['log'](_0xced1('0x59')+_0x466da1[_0xced1('0x5a')][_0xced1('0x4')]+'['+_0x466da1[_0xced1('0x54')]+']',_0x26f154);};_0x466da1['on'](_0xced1('0x5b'),function(){onDisconnect(_0x466da1,_0x2bdcea);_0x466da1['log']('DISCONNECTED');});onConnect(_0x466da1);_0x466da1['log'](_0xced1('0x5c'));});};
\ No newline at end of file
+var _0xeec6=['OpenchannelInteractions','removeOpenchannelInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','setMaxListeners','request','remotePort','connectedAt','SocketIO\x20','nsp','address','DISCONNECTED','lodash','../mysqldb','./environment','name','Agents','role','telephone','agent','type','findOne','autoAssociation','VoiceQueues','MailQueues','Telephones','findAll','Trunks','IvrCampaigns','UserProfileResource','map','resourceId','User','where','Campaign','ivr','then','format','%s:queue:%s','handshake','query','userProfileId','ChatInteractions','MailInteraction','MailInteractions','SmsInteractions','OpenchannelInteraction','WhatsappInteractions','user:%s','voice:inbound','voice:outbound','hasOwnProperty','include','VoiceQueue','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','Trunk','ChatQueues','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueue','getVoiceQueues','getFaxQueues','getSmsQueues','all','length','voice','chat','fax','sms','mail','openchannel','whatsapp','telephone:%s','trunk:%s','campaign:%s:%s','leave','removeChatInteractions','emit','removeMailInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:remove'];(function(_0x290fa6,_0x16d017){var _0x47f1f3=function(_0x2b5eb8){while(--_0x2b5eb8){_0x290fa6['push'](_0x290fa6['shift']());}};_0x47f1f3(++_0x16d017);}(_0xeec6,0x125));var _0x6eec=function(_0x4801a0,_0x252c24){_0x4801a0=_0x4801a0-0x0;var _0x338e26=_0xeec6[_0x4801a0];return _0x338e26;};'use strict';var _=require(_0x6eec('0x0'));var util=require('util');var BPromise=require('bluebird');var db=require(_0x6eec('0x1'))['db'];var config=require(_0x6eec('0x2'));var queryQueues={'attributes':['id',_0x6eec('0x3')],'include':[{'as':_0x6eec('0x4'),'model':db['User'],'attributes':['id',_0x6eec('0x3'),_0x6eec('0x5')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x6eec('0x3')],'where':{'role':_0x6eec('0x6')}};var queryTrunks={'raw':!![],'attributes':['id','name']};var queryAgents={'raw':!![],'attributes':['id',_0x6eec('0x3')],'where':{'role':_0x6eec('0x7')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x6eec('0x3'),_0x6eec('0x8')],'where':{'type':'ivr'}};function getAssociatedResources(_0x1205a7,_0x392e0a,_0x422d71){return db['UserProfileSection'][_0x6eec('0x9')]({'where':{'name':_0x1205a7,'userProfileId':_0x392e0a},'raw':!![]})['then'](function(_0x13d892){if(_0x13d892){if(_0x13d892[_0x6eec('0xa')]){switch(_0x1205a7){case _0x6eec('0xb'):case'ChatQueues':case'FaxQueues':case'SmsQueues':case _0x6eec('0xc'):case'OpenchannelQueues':case'WhatsappQueues':return db[_0x422d71]['findAll'](queryQueues);case _0x6eec('0xd'):return db[_0x422d71][_0x6eec('0xe')](queryTelephones);case _0x6eec('0xf'):return db[_0x422d71]['findAll'](queryTrunks);case _0x6eec('0x10'):return db[_0x422d71][_0x6eec('0xe')](queryCampaigns);}}else{return db[_0x6eec('0x11')][_0x6eec('0xe')]({'attributes':['resourceId'],'where':{'sectionId':_0x13d892['id']},'raw':!![]})['then'](function(_0x3fb003){if(_0x3fb003){var _0x43947e={'where':{'id':_[_0x6eec('0x12')](_0x3fb003,_0x6eec('0x13'))},'raw':!![]};switch(_0x422d71){case _0x6eec('0x14'):_0x43947e[_0x6eec('0x15')][_0x6eec('0x5')]=_0x6eec('0x6');break;case _0x6eec('0x16'):_0x43947e[_0x6eec('0x15')]['type']=_0x6eec('0x17');break;}return db[_0x422d71][_0x6eec('0xe')](_0x43947e);}else{return[];}});}}else{return[];}})[_0x6eec('0x18')](function(_0x5f3b6d){return _0x5f3b6d;});}function joinOrLeaveQueues(_0x5af05a,_0xd2927c,_0x5f3704,_0x389457){_0x5af05a[_0xd2927c](util[_0x6eec('0x19')](_0x6eec('0x1a'),_0x5f3704,_0x389457[_0x6eec('0x3')]));if(_0x389457[_0x6eec('0x4')]){for(var _0x240030=0x0;_0x240030<_0x389457['Agents']['length'];_0x240030+=0x1){_0x5af05a[_0xd2927c](util['format']('user:%s',_0x389457[_0x6eec('0x4')][_0x240030][_0x6eec('0x3')]));}}}function joinOrLeave(_0x59fcbe,_0x2489c2,_0x4d91d9){var _0x36cd69;if(_0x59fcbe[_0x6eec('0x1b')][_0x6eec('0x1c')]['id']){db['User']['find']({'attributes':['id',_0x6eec('0x3'),'role',_0x6eec('0x1d')],'where':{'id':_0x59fcbe[_0x6eec('0x1b')][_0x6eec('0x1c')]['id']},'include':[{'model':db['ChatInteraction'],'as':_0x6eec('0x1e'),'attributes':['id'],'raw':!![]},{'model':db[_0x6eec('0x1f')],'as':_0x6eec('0x20'),'attributes':['id'],'raw':!![]},{'model':db['FaxInteraction'],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db['SmsInteraction'],'as':_0x6eec('0x21'),'attributes':['id'],'raw':!![]},{'model':db[_0x6eec('0x22')],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db['WhatsappInteraction'],'as':_0x6eec('0x23'),'attributes':['id'],'raw':!![]}]})[_0x6eec('0x18')](function(_0x4b862c){if(_0x4b862c){_0x36cd69=_0x4b862c;_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x24'),_0x4b862c[_0x6eec('0x3')]));var _0x1759d2=[];switch(_0x4b862c[_0x6eec('0x5')]){case'admin':_0x59fcbe[_0x2489c2](_0x6eec('0x25'));_0x59fcbe[_0x2489c2](_0x6eec('0x26'));if(queryQueues[_0x6eec('0x27')](_0x6eec('0x28'))){delete queryQueues[_0x6eec('0x28')];}_0x1759d2['push'](db[_0x6eec('0x29')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2b')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2c')]['findAll'](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2d')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2e')]['findAll'](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x2f')][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db['WhatsappQueue'][_0x6eec('0xe')](queryQueues));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')][_0x6eec('0xe')](queryTelephones));_0x1759d2['push'](db[_0x6eec('0x30')][_0x6eec('0xe')](queryTrunks));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x16')]['findAll'](queryCampaigns));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')]['findAll'](queryAgents));break;case'user':_0x59fcbe[_0x2489c2]('voice:inbound');_0x59fcbe[_0x2489c2](_0x6eec('0x26'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xb'),_0x4b862c[_0x6eec('0x1d')],'VoiceQueue'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x31'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2b')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x32'),_0x4b862c[_0x6eec('0x1d')],'FaxQueue'));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x33'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2d')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xc'),_0x4b862c['userProfileId'],_0x6eec('0x2e')));_0x1759d2['push'](getAssociatedResources(_0x6eec('0x34'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x2f')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources('WhatsappQueues',_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x35')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xd'),_0x4b862c['userProfileId'],_0x6eec('0x14')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0xf'),_0x4b862c['userProfileId'],_0x6eec('0x30')));_0x1759d2[_0x6eec('0x2a')](getAssociatedResources(_0x6eec('0x10'),_0x4b862c[_0x6eec('0x1d')],_0x6eec('0x16')));_0x1759d2[_0x6eec('0x2a')](db[_0x6eec('0x14')][_0x6eec('0xe')](queryAgents));break;case'agent':_0x59fcbe[_0x2489c2](_0x6eec('0x25'));_0x59fcbe[_0x2489c2](_0x6eec('0x26'));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x36')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getChatQueues']({'attributes':['id','name']}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x37')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c[_0x6eec('0x38')]({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getMailQueues']({'attributes':['id',_0x6eec('0x3')]}));_0x1759d2['push'](_0x4b862c['getOpenchannelQueues']({'attributes':['id','name']}));_0x1759d2[_0x6eec('0x2a')](_0x4b862c['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise[_0x6eec('0x39')](_0x1759d2);}})['then'](function(_0x2b9c21){if(_0x2b9c21&&_0x2b9c21[_0x6eec('0x3a')]){for(var _0x3e31cb=0x0;_0x3e31cb<_0x2b9c21[_0x6eec('0x3a')];_0x3e31cb+=0x1){for(var _0x400cf5=0x0;_0x400cf5<_0x2b9c21[_0x3e31cb]['length'];_0x400cf5+=0x1){switch(_0x3e31cb){case 0x0:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3b'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x1:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3c'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x2:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3d'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x3:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3e'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x4:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x3f'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x5:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x40'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x6:joinOrLeaveQueues(_0x59fcbe,_0x2489c2,_0x6eec('0x41'),_0x2b9c21[_0x3e31cb][_0x400cf5]);break;case 0x7:if(_0x36cd69['role']!=='agent')_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x42'),_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0x8:if(_0x36cd69[_0x6eec('0x5')]!==_0x6eec('0x7'))_0x59fcbe[_0x2489c2](util['format'](_0x6eec('0x43'),_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0x9:if(_0x36cd69[_0x6eec('0x5')]!==_0x6eec('0x7'))_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')](_0x6eec('0x44'),_0x2b9c21[_0x3e31cb][_0x400cf5]['type'],_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;case 0xa:_0x59fcbe[_0x2489c2](util[_0x6eec('0x19')]('user:%s',_0x2b9c21[_0x3e31cb][_0x400cf5][_0x6eec('0x3')]));break;}}}}})[_0x6eec('0x18')](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x4a2bd2=_[_0x6eec('0x12')](_0x36cd69[_0x6eec('0x1e')],'id');return _0x36cd69[_0x6eec('0x46')](_0x4a2bd2)[_0x6eec('0x18')](function(){for(var _0x4779fd=0x0;_0x4779fd<_0x4a2bd2[_0x6eec('0x3a')];_0x4779fd+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x4a2bd2[_0x4779fd]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2==='leave'){var _0x5700d0=_['map'](_0x36cd69[_0x6eec('0x20')],'id');return _0x36cd69[_0x6eec('0x48')](_0x5700d0)[_0x6eec('0x18')](function(){for(var _0x196af0=0x0;_0x196af0<_0x5700d0[_0x6eec('0x3a')];_0x196af0+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x5700d0[_0x196af0]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x1e4515=_[_0x6eec('0x12')](_0x36cd69['FaxInteractions'],'id');return _0x36cd69['removeFaxInteractions'](_0x1e4515)['then'](function(){for(var _0x526bf4=0x0;_0x526bf4<_0x1e4515[_0x6eec('0x3a')];_0x526bf4+=0x1){_0x4d91d9['emit'](_0x6eec('0x49'),{'FaxInteractionId':Number(_0x1e4515[_0x526bf4]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x18')](function(){if(_0x2489c2==='leave'){var _0x172be8=_[_0x6eec('0x12')](_0x36cd69['SmsInteractions'],'id');return _0x36cd69['removeSmsInteractions'](_0x172be8)[_0x6eec('0x18')](function(){for(var _0x3c95fb=0x0;_0x3c95fb<_0x172be8[_0x6eec('0x3a')];_0x3c95fb+=0x1){_0x4d91d9[_0x6eec('0x47')](_0x6eec('0x4a'),{'SmsInteractionId':Number(_0x172be8[_0x3c95fb]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x18')](function(){if(_0x2489c2==='leave'){var _0x3d5882=_[_0x6eec('0x12')](_0x36cd69[_0x6eec('0x4b')],'id');return _0x36cd69[_0x6eec('0x4c')](_0x3d5882)[_0x6eec('0x18')](function(){for(var _0xc87dfb=0x0;_0xc87dfb<_0x3d5882['length'];_0xc87dfb+=0x1){_0x4d91d9[_0x6eec('0x47')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x3d5882[_0xc87dfb]),'UserId':Number(_0x36cd69['id'])});}});}})['then'](function(){if(_0x2489c2===_0x6eec('0x45')){var _0x57d38d=_[_0x6eec('0x12')](_0x36cd69['WhatsappInteractions'],'id');return _0x36cd69[_0x6eec('0x4d')](_0x57d38d)['then'](function(){for(var _0x286c49=0x0;_0x286c49<_0x57d38d[_0x6eec('0x3a')];_0x286c49+=0x1){_0x4d91d9[_0x6eec('0x47')](_0x6eec('0x4e'),{'WhatsappInteractionId':Number(_0x57d38d[_0x286c49]),'UserId':Number(_0x36cd69['id'])});}});}})[_0x6eec('0x4f')](function(_0x2df25f){_0x59fcbe[_0x6eec('0x50')](_0x2df25f);});}}function onDisconnect(_0x4dc248,_0x311e0c){joinOrLeave(_0x4dc248,'leave',_0x311e0c);}function onConnect(_0x2ebb11){joinOrLeave(_0x2ebb11,_0x6eec('0x51'));}exports[_0x6eec('0x52')]=function(_0x2577f7){_0x2577f7['on'](_0x6eec('0x53'),function(_0x567a48){_0x567a48[_0x6eec('0x54')](0x0);_0x567a48['address']=_0x567a48[_0x6eec('0x55')][_0x6eec('0x53')]['remoteAddress']+':'+_0x567a48[_0x6eec('0x55')][_0x6eec('0x53')][_0x6eec('0x56')];_0x567a48[_0x6eec('0x57')]=new Date();_0x567a48[_0x6eec('0x50')]=function(_0x1c86cf){console['log'](_0x6eec('0x58')+_0x567a48[_0x6eec('0x59')]['name']+'['+_0x567a48[_0x6eec('0x5a')]+']',_0x1c86cf);};_0x567a48['on']('disconnect',function(){onDisconnect(_0x567a48,_0x2577f7);_0x567a48[_0x6eec('0x50')](_0x6eec('0x5b'));});onConnect(_0x567a48);_0x567a48[_0x6eec('0x50')]('CONNECTED');});};
\ No newline at end of file
index 44b5676..476148f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['SELECT','contact','UserId','format','SIP/%s','name','agent','channel','incomingmessage','outgoingmessage','AfterCreateMessage','offlineMessage','opened','resolve','interface','AfterCreate','closed','changed','substatus','User','find','internal','default','length','hasOwnProperty','hook','callback','toLowerCase','condition','../../mysqldb','jayson/promise','../logger','triggers','http','afterCreate','newinteraction','Chat','ChatInteraction','closedinteraction','ChatMessage','ChatOfflineMessage','Sms','SmsInteraction','afterUpdate','SmsMessage','newmessage','WhatsappInteraction','Whatsapp','WhatsappMessage','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','EventManager','then','Trigger,\x20%s','error','catch','get','motionChannel','event','direction','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','query','Sequelize','QueryTypes'];(function(_0x279357,_0x466d60){var _0x1b2f25=function(_0x3b9266){while(--_0x3b9266){_0x279357['push'](_0x279357['shift']());}};_0x1b2f25(++_0x466d60);}(_0x71ab,0x18f));var _0xb71a=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x71ab[_0x502c7d];return _0x30b7ed;};'use strict';var util=require('util');var db=require(_0xb71a('0x0'))['db'];var jayson=require(_0xb71a('0x1'));var logger=require(_0xb71a('0x2'))(_0xb71a('0x3'));var client=jayson['client'][_0xb71a('0x4')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0xb71a('0x5'),'condition':_0xb71a('0x6'),'callback':afterCreate},{'channel':_0xb71a('0x7'),'model':_0xb71a('0x8'),'event':'afterUpdate','condition':_0xb71a('0x9'),'callback':afterUpdate},{'channel':_0xb71a('0x7'),'model':_0xb71a('0xa'),'event':_0xb71a('0x5'),'condition':'newmessage','callback':afterCreateMessage},{'channel':'Chat','model':_0xb71a('0xb'),'event':_0xb71a('0x5'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xb71a('0xc'),'model':_0xb71a('0xd'),'event':'afterCreate','condition':_0xb71a('0x6'),'callback':afterCreate},{'channel':_0xb71a('0xc'),'model':_0xb71a('0xd'),'event':_0xb71a('0xe'),'condition':_0xb71a('0x9'),'callback':afterUpdate},{'channel':'Sms','model':_0xb71a('0xf'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x10'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0xb71a('0x11'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x6'),'callback':afterCreate},{'channel':_0xb71a('0x12'),'model':_0xb71a('0x11'),'event':_0xb71a('0xe'),'condition':_0xb71a('0x9'),'callback':afterUpdate},{'channel':_0xb71a('0x12'),'model':_0xb71a('0x13'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x10'),'callback':afterCreateMessage},{'channel':_0xb71a('0x14'),'model':_0xb71a('0x15'),'event':'afterCreate','condition':_0xb71a('0x6'),'callback':afterCreate},{'channel':'Fax','model':_0xb71a('0x15'),'event':_0xb71a('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Fax','model':_0xb71a('0x16'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x10'),'callback':afterCreateMessage},{'channel':_0xb71a('0x17'),'model':_0xb71a('0x18'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x6'),'callback':afterCreate},{'channel':'Mail','model':_0xb71a('0x18'),'event':_0xb71a('0xe'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Mail','model':_0xb71a('0x19'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x10'),'callback':afterCreateMessage},{'channel':_0xb71a('0x1a'),'model':_0xb71a('0x1b'),'event':_0xb71a('0x5'),'condition':'newinteraction','callback':afterCreate},{'channel':'Openchannel','model':'OpenchannelInteraction','event':'afterUpdate','condition':_0xb71a('0x9'),'callback':afterUpdate},{'channel':_0xb71a('0x1a'),'model':_0xb71a('0x1c'),'event':_0xb71a('0x5'),'condition':_0xb71a('0x10'),'callback':afterCreateMessage}];function request(_0x773369){return client['request'](_0xb71a('0x1d'),_0x773369)[_0xb71a('0x1e')](function(_0x1f2d25){logger['info'](_0xb71a('0x1f'),_0xb71a('0x1d'),_0x1f2d25);if(_0x1f2d25[_0xb71a('0x20')]){if(_0x1f2d25[_0xb71a('0x20')]['code']===0x1f4){logger['error']('Trigger,\x20%s',_0xb71a('0x1d'),_0x1f2d25['error']);}}})[_0xb71a('0x21')](function(_0x995127){logger['error'](_0xb71a('0x1f'),_0xb71a('0x1d'),_0x995127);});}function afterCreateMessage(_0x348f00){return function(_0x27ba0e){_0x27ba0e=_0x27ba0e[_0xb71a('0x22')]({'plain':!![]});_0x27ba0e['channel']=_0x348f00;_0x27ba0e[_0xb71a('0x23')]=_0x348f00;_0x27ba0e[_0xb71a('0x24')]=_0x27ba0e[_0xb71a('0x25')];Promise['resolve']()[_0xb71a('0x1e')](function(){if(typeof _0x27ba0e[_0xb71a('0x26')]===_0xb71a('0x27'))return null;var _0x121364=_0xb71a('0x28')+_0x27ba0e['ContactId'];return db[_0xb71a('0x29')][_0xb71a('0x2a')](_0x121364,{'type':db[_0xb71a('0x2b')][_0xb71a('0x2c')][_0xb71a('0x2d')],'raw':!![]});})[_0xb71a('0x1e')](function(_0x49e781){if(_0x49e781){_0x27ba0e[_0xb71a('0x2e')]=_0x49e781[0x0];}if(typeof _0x27ba0e[_0xb71a('0x2f')]===_0xb71a('0x27'))return;return getAgent(_0x27ba0e['UserId']);})['then'](function(_0x35dc84){if(_0x35dc84){_0x27ba0e['interface']=util[_0xb71a('0x30')](_0xb71a('0x31'),_0x35dc84[_0xb71a('0x32')]);_0x27ba0e[_0xb71a('0x33')]=_0x35dc84;_0x27ba0e[_0xb71a('0x34')]=_0x348f00;return request({'event':_0xb71a('0x35'),'message':_0x27ba0e});}else{return request({'event':_0xb71a('0x36'),'message':_0x27ba0e});}})[_0xb71a('0x21')](function(_0x345885){logger[_0xb71a('0x20')]('Trigger,\x20%s',_0xb71a('0x37'),_0x345885);});};}function afterCreateOfflineMessage(_0x3677c4){return function(_0x34205b){_0x34205b=_0x34205b['get']({'plain':!![]});_0x34205b[_0xb71a('0x34')]=_0x3677c4;_0x34205b[_0xb71a('0x23')]=_0x3677c4;_0x34205b['event']=_0xb71a('0x38');return request({'event':_0x34205b[_0xb71a('0x24')],'message':_0x34205b});};}function afterCreate(_0x4852e6,_0x416a97){return function(_0x5b4899){_0x5b4899=_0x5b4899['get']({'plain':!![]});_0x5b4899[_0xb71a('0x34')]=_0x4852e6;_0x5b4899[_0xb71a('0x23')]=_0x4852e6;_0x5b4899[_0xb71a('0x24')]=_0xb71a('0x39');Promise[_0xb71a('0x3a')]()[_0xb71a('0x1e')](function(){var _0x3ec3d8=_0xb71a('0x28')+_0x5b4899[_0xb71a('0x26')];return db['sequelize']['query'](_0x3ec3d8,{'type':db[_0xb71a('0x2b')][_0xb71a('0x2c')]['SELECT'],'raw':!![]});})[_0xb71a('0x1e')](function(_0x26d702){if(_0x26d702){_0x5b4899[_0xb71a('0x2e')]=_0x26d702[0x0];}if(typeof _0x5b4899['UserId']===_0xb71a('0x27'))return;return getAgent(_0x5b4899[_0xb71a('0x2f')]);})[_0xb71a('0x1e')](function(_0x2d7ed1){if(_0x2d7ed1){_0x5b4899[_0xb71a('0x3b')]=util['format'](_0xb71a('0x31'),_0x2d7ed1[_0xb71a('0x32')]);_0x5b4899['agent']=_0x2d7ed1;}return request({'event':_0x416a97,'message':_0x5b4899});})[_0xb71a('0x21')](function(_0x3d1232){logger[_0xb71a('0x20')](_0xb71a('0x1f'),_0xb71a('0x3c'),_0x3d1232);});};}function afterUpdate(_0x57bcdb){return function(_0x504a16){var _0x400003=_0x504a16['changed'](_0xb71a('0x3d'))&&_0x504a16['closed'];var _0x312d36=_0x504a16[_0xb71a('0x3e')]('substatus');if(_0x400003||_0x312d36){var _0xef01ab=_0x400003?_0xb71a('0x9'):_0xb71a('0x3f');var _0x34a583=_0x504a16[_0xb71a('0x22')]({'plain':!![]});_0x34a583[_0xb71a('0x34')]=_0x57bcdb;_0x34a583[_0xb71a('0x23')]=_0x57bcdb;_0x34a583['event']=_0x400003?_0xb71a('0x3d'):'substatus';var _0x4c7a2b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x34a583[_0xb71a('0x26')];return db[_0xb71a('0x29')]['query'](_0x4c7a2b,{'type':db[_0xb71a('0x2b')]['QueryTypes'][_0xb71a('0x2d')],'raw':!![]})[_0xb71a('0x1e')](function(_0x4ae8b4){if(_0x4ae8b4){_0x34a583[_0xb71a('0x2e')]=_0x4ae8b4[0x0];}if(typeof _0x34a583[_0xb71a('0x2f')]===_0xb71a('0x27'))return;return getAgent(_0x34a583[_0xb71a('0x2f')]);})[_0xb71a('0x1e')](function(_0x464a8b){if(_0x464a8b){_0x34a583[_0xb71a('0x3b')]=util[_0xb71a('0x30')](_0xb71a('0x31'),_0x464a8b[_0xb71a('0x32')]);_0x34a583[_0xb71a('0x33')]=_0x464a8b;}return request({'event':_0xef01ab,'message':_0x34a583});})['catch'](function(_0x10b7f3){logger[_0xb71a('0x20')](_0xb71a('0x1f'),'AfterUpdate',_0x10b7f3);});}};}function getAgent(_0x4de2e3){return db[_0xb71a('0x40')][_0xb71a('0x41')]({'where':{'id':_0x4de2e3},'attributes':['id',_0xb71a('0x32'),'fullname','email',_0xb71a('0x42')],'raw':!![]})[_0xb71a('0x1e')](function(_0x10d98d){return _0x10d98d;});}exports[_0xb71a('0x43')]=function(){for(var _0x1984c4=0x0;_0x1984c4<triggers[_0xb71a('0x44')];_0x1984c4+=0x1){if(db[_0xb71a('0x45')](triggers[_0x1984c4]['model'])){db[triggers[_0x1984c4]['model']][_0xb71a('0x46')](triggers[_0x1984c4][_0xb71a('0x24')],triggers[_0x1984c4][_0xb71a('0x47')](triggers[_0x1984c4][_0xb71a('0x34')][_0xb71a('0x48')](),triggers[_0x1984c4][_0xb71a('0x49')]));}}};
\ No newline at end of file
+var _0x4bd0=['code','catch','get','channel','event','direction','resolve','ContactId','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','SELECT','contact','UserId','interface','format','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','motionChannel','offlineMessage','opened','query','name','changed','closed','substatus','undefined','AfterUpdate','User','find','fullname','email','internal','default','length','model','hook','callback','condition','util','jayson/promise','../logger','triggers','client','http','afterCreate','newinteraction','ChatInteraction','afterUpdate','ChatMessage','newmessage','Chat','ChatOfflineMessage','Sms','SmsInteraction','closedinteraction','Whatsapp','WhatsappInteraction','Fax','FaxInteraction','FaxMessage','Mail','MailInteraction','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','EventManager','then','info','Trigger,\x20%s','error'];(function(_0x36bbaa,_0x4e2489){var _0x46253c=function(_0x4cc244){while(--_0x4cc244){_0x36bbaa['push'](_0x36bbaa['shift']());}};_0x46253c(++_0x4e2489);}(_0x4bd0,0x1f3));var _0x04bd=function(_0x8c318b,_0x309481){_0x8c318b=_0x8c318b-0x0;var _0x3c000a=_0x4bd0[_0x8c318b];return _0x3c000a;};'use strict';var util=require(_0x04bd('0x0'));var db=require('../../mysqldb')['db'];var jayson=require(_0x04bd('0x1'));var logger=require(_0x04bd('0x2'))(_0x04bd('0x3'));var client=jayson[_0x04bd('0x4')][_0x04bd('0x5')]({'port':0x232a});var triggers=[{'channel':'Chat','model':'ChatInteraction','event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':'Chat','model':_0x04bd('0x8'),'event':_0x04bd('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Chat','model':_0x04bd('0xa'),'event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0xc'),'model':_0x04bd('0xd'),'event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0x04bd('0xe'),'model':_0x04bd('0xf'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0xe'),'model':_0x04bd('0xf'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0xe'),'model':'SmsMessage','event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x11'),'model':_0x04bd('0x12'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0x11'),'model':_0x04bd('0x12'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0x11'),'model':'WhatsappMessage','event':'afterCreate','condition':'newmessage','callback':afterCreateMessage},{'channel':_0x04bd('0x13'),'model':'FaxInteraction','event':'afterCreate','condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':'Fax','model':_0x04bd('0x14'),'event':'afterUpdate','condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':'Fax','model':_0x04bd('0x15'),'event':'afterCreate','condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x16'),'model':_0x04bd('0x17'),'event':_0x04bd('0x6'),'condition':_0x04bd('0x7'),'callback':afterCreate},{'channel':_0x04bd('0x16'),'model':_0x04bd('0x17'),'event':_0x04bd('0x9'),'condition':_0x04bd('0x10'),'callback':afterUpdate},{'channel':_0x04bd('0x16'),'model':'MailMessage','event':_0x04bd('0x6'),'condition':_0x04bd('0xb'),'callback':afterCreateMessage},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x19'),'event':_0x04bd('0x6'),'condition':'newinteraction','callback':afterCreate},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x19'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0x04bd('0x18'),'model':_0x04bd('0x1a'),'event':_0x04bd('0x6'),'condition':'newmessage','callback':afterCreateMessage}];function request(_0x46c516){return client[_0x04bd('0x1b')](_0x04bd('0x1c'),_0x46c516)[_0x04bd('0x1d')](function(_0x39509a){logger[_0x04bd('0x1e')](_0x04bd('0x1f'),_0x04bd('0x1c'),_0x39509a);if(_0x39509a[_0x04bd('0x20')]){if(_0x39509a[_0x04bd('0x20')][_0x04bd('0x21')]===0x1f4){logger[_0x04bd('0x20')]('Trigger,\x20%s',_0x04bd('0x1c'),_0x39509a[_0x04bd('0x20')]);}}})[_0x04bd('0x22')](function(_0x5d6331){logger['error'](_0x04bd('0x1f'),_0x04bd('0x1c'),_0x5d6331);});}function afterCreateMessage(_0xe43a09){return function(_0x2c73c8){_0x2c73c8=_0x2c73c8[_0x04bd('0x23')]({'plain':!![]});_0x2c73c8[_0x04bd('0x24')]=_0xe43a09;_0x2c73c8['motionChannel']=_0xe43a09;_0x2c73c8[_0x04bd('0x25')]=_0x2c73c8[_0x04bd('0x26')];Promise[_0x04bd('0x27')]()[_0x04bd('0x1d')](function(){if(typeof _0x2c73c8[_0x04bd('0x28')]==='undefined')return null;var _0x3159bb=_0x04bd('0x29')+_0x2c73c8[_0x04bd('0x28')];return db[_0x04bd('0x2a')]['query'](_0x3159bb,{'type':db[_0x04bd('0x2b')][_0x04bd('0x2c')][_0x04bd('0x2d')],'raw':!![]});})[_0x04bd('0x1d')](function(_0x3abf32){if(_0x3abf32){_0x2c73c8[_0x04bd('0x2e')]=_0x3abf32[0x0];}if(typeof _0x2c73c8[_0x04bd('0x2f')]==='undefined')return;return getAgent(_0x2c73c8[_0x04bd('0x2f')]);})['then'](function(_0x555ea1){if(_0x555ea1){_0x2c73c8[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x555ea1['name']);_0x2c73c8[_0x04bd('0x33')]=_0x555ea1;_0x2c73c8[_0x04bd('0x24')]=_0xe43a09;return request({'event':_0x04bd('0x34'),'message':_0x2c73c8});}else{return request({'event':_0x04bd('0x35'),'message':_0x2c73c8});}})[_0x04bd('0x22')](function(_0x567b08){logger['error'](_0x04bd('0x1f'),_0x04bd('0x36'),_0x567b08);});};}function afterCreateOfflineMessage(_0x169ff4){return function(_0x5c1985){_0x5c1985=_0x5c1985[_0x04bd('0x23')]({'plain':!![]});_0x5c1985[_0x04bd('0x24')]=_0x169ff4;_0x5c1985[_0x04bd('0x37')]=_0x169ff4;_0x5c1985[_0x04bd('0x25')]=_0x04bd('0x38');return request({'event':_0x5c1985[_0x04bd('0x25')],'message':_0x5c1985});};}function afterCreate(_0x4bc4e4,_0x1df42b){return function(_0x5b3ac9){_0x5b3ac9=_0x5b3ac9[_0x04bd('0x23')]({'plain':!![]});_0x5b3ac9['channel']=_0x4bc4e4;_0x5b3ac9[_0x04bd('0x37')]=_0x4bc4e4;_0x5b3ac9[_0x04bd('0x25')]=_0x04bd('0x39');Promise[_0x04bd('0x27')]()[_0x04bd('0x1d')](function(){var _0x47992a='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x5b3ac9[_0x04bd('0x28')];return db[_0x04bd('0x2a')][_0x04bd('0x3a')](_0x47992a,{'type':db[_0x04bd('0x2b')]['QueryTypes'][_0x04bd('0x2d')],'raw':!![]});})[_0x04bd('0x1d')](function(_0x1c42e5){if(_0x1c42e5){_0x5b3ac9[_0x04bd('0x2e')]=_0x1c42e5[0x0];}if(typeof _0x5b3ac9[_0x04bd('0x2f')]==='undefined')return;return getAgent(_0x5b3ac9[_0x04bd('0x2f')]);})[_0x04bd('0x1d')](function(_0x55d5b6){if(_0x55d5b6){_0x5b3ac9[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x55d5b6[_0x04bd('0x3b')]);_0x5b3ac9[_0x04bd('0x33')]=_0x55d5b6;}return request({'event':_0x1df42b,'message':_0x5b3ac9});})[_0x04bd('0x22')](function(_0x39ad29){logger[_0x04bd('0x20')](_0x04bd('0x1f'),'AfterCreate',_0x39ad29);});};}function afterUpdate(_0x3db6c9){return function(_0x2ac3d4){var _0x14003b=_0x2ac3d4[_0x04bd('0x3c')]('closed')&&_0x2ac3d4[_0x04bd('0x3d')];var _0x640a09=_0x2ac3d4['changed'](_0x04bd('0x3e'));if(_0x14003b||_0x640a09){var _0x3137fe=_0x14003b?_0x04bd('0x10'):'substatus';var _0x218fb2=_0x2ac3d4[_0x04bd('0x23')]({'plain':!![]});_0x218fb2[_0x04bd('0x24')]=_0x3db6c9;_0x218fb2[_0x04bd('0x37')]=_0x3db6c9;_0x218fb2['event']=_0x14003b?_0x04bd('0x3d'):_0x04bd('0x3e');var _0x1854aa=_0x04bd('0x29')+_0x218fb2[_0x04bd('0x28')];return db[_0x04bd('0x2a')][_0x04bd('0x3a')](_0x1854aa,{'type':db[_0x04bd('0x2b')][_0x04bd('0x2c')]['SELECT'],'raw':!![]})[_0x04bd('0x1d')](function(_0x4cfce9){if(_0x4cfce9){_0x218fb2[_0x04bd('0x2e')]=_0x4cfce9[0x0];}if(typeof _0x218fb2[_0x04bd('0x2f')]===_0x04bd('0x3f'))return;return getAgent(_0x218fb2[_0x04bd('0x2f')]);})[_0x04bd('0x1d')](function(_0x373fba){if(_0x373fba){_0x218fb2[_0x04bd('0x30')]=util[_0x04bd('0x31')](_0x04bd('0x32'),_0x373fba[_0x04bd('0x3b')]);_0x218fb2[_0x04bd('0x33')]=_0x373fba;}return request({'event':_0x3137fe,'message':_0x218fb2});})[_0x04bd('0x22')](function(_0x458d8b){logger[_0x04bd('0x20')](_0x04bd('0x1f'),_0x04bd('0x40'),_0x458d8b);});}};}function getAgent(_0x482d2b){return db[_0x04bd('0x41')][_0x04bd('0x42')]({'where':{'id':_0x482d2b},'attributes':['id',_0x04bd('0x3b'),_0x04bd('0x43'),_0x04bd('0x44'),_0x04bd('0x45')],'raw':!![]})[_0x04bd('0x1d')](function(_0x22f421){return _0x22f421;});}exports[_0x04bd('0x46')]=function(){for(var _0x114e51=0x0;_0x114e51<triggers[_0x04bd('0x47')];_0x114e51+=0x1){if(db['hasOwnProperty'](triggers[_0x114e51][_0x04bd('0x48')])){db[triggers[_0x114e51]['model']][_0x04bd('0x49')](triggers[_0x114e51][_0x04bd('0x25')],triggers[_0x114e51][_0x04bd('0x4a')](triggers[_0x114e51][_0x04bd('0x24')]['toLowerCase'](),triggers[_0x114e51][_0x04bd('0x4b')]));}}};
\ No newline at end of file
index 4def8f3..7efcb82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c87=['blockedAt','updateAttributes','getLicense','role','agent','User','count','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','./license/util','voice','mail','chat','whatsapp','getChannels','toLowerCase','clearBlockUser','isUndefined'];(function(_0x28947d,_0x4cc9c6){var _0x12d2ee=function(_0x3f38fc){while(--_0x3f38fc){_0x28947d['push'](_0x28947d['shift']());}};_0x12d2ee(++_0x4cc9c6);}(_0x4c87,0x1ea));var _0x74c8=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x4c87[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x74c8('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0x74c8('0x1'));var channels=[_0x74c8('0x2'),_0x74c8('0x3'),_0x74c8('0x4'),'fax','sms',_0x74c8('0x5'),'openchannel'];exports[_0x74c8('0x6')]=function(){return channels;};exports['isValidChannel']=function(_0x1a5f4e){_0x1a5f4e=_0x1a5f4e[_0x74c8('0x7')]();return _['includes'](channels,_0x1a5f4e);};exports[_0x74c8('0x8')]=function(_0x30ed48,_0x2e633a,_0x23baf2,_0x5cac97){var _0x30d5cc={'loginAttempts':_0x2e633a,'blocked':_0x23baf2};if(!_[_0x74c8('0x9')](_0x5cac97)){_0x30d5cc[_0x74c8('0xa')]=_0x5cac97;}return _0x30ed48[_0x74c8('0xb')](_0x30d5cc);};exports[_0x74c8('0xc')]=function(_0x3c7a1d){return new BPromise(function(_0x14dfa4,_0x3524f8){var _0xbab295=0x0;if(_0x3c7a1d[_0x74c8('0xd')]!==_0x74c8('0xe')){_0x14dfa4(_0x3c7a1d);}db[_0x74c8('0xf')][_0x74c8('0x10')]({'where':{'role':_0x74c8('0xe'),'online':!![],'id':{'$ne':_0x3c7a1d['id']}}})['then'](function(_0x4743c1){_0xbab295=_0x4743c1;return util['getLicense']();})['then'](function(_0x5a5d0c){if(_0x5a5d0c&&_0x5a5d0c[_0x74c8('0x11')]&&_0xbab295>=_0x5a5d0c['agents']){throw Error(_0x74c8('0x12'));}_0x14dfa4(_0x3c7a1d);})[_0x74c8('0x13')](function(_0x7e722c){_0x3524f8(_0x7e722c);});});};
\ No newline at end of file
+var _0x913c=['agents','lodash','./license/util','voice','sms','whatsapp','openchannel','isValidChannel','clearBlockUser','isUndefined','blockedAt','getLicense','role','User','agent','then'];(function(_0x118278,_0x5e64a1){var _0x1f47f3=function(_0x46671d){while(--_0x46671d){_0x118278['push'](_0x118278['shift']());}};_0x1f47f3(++_0x5e64a1);}(_0x913c,0x131));var _0xc913=function(_0x312deb,_0x25f392){_0x312deb=_0x312deb-0x0;var _0x4225fd=_0x913c[_0x312deb];return _0x4225fd;};'use strict';var _=require(_0xc913('0x0'));var BPromise=require('bluebird');var db=require('../mysqldb')['db'];var util=require(_0xc913('0x1'));var channels=[_0xc913('0x2'),'mail','chat','fax',_0xc913('0x3'),_0xc913('0x4'),_0xc913('0x5')];exports['getChannels']=function(){return channels;};exports[_0xc913('0x6')]=function(_0x58f4da){_0x58f4da=_0x58f4da['toLowerCase']();return _['includes'](channels,_0x58f4da);};exports[_0xc913('0x7')]=function(_0x2cdb77,_0x28a3c3,_0xb75c45,_0x1d85a8){var _0x51974d={'loginAttempts':_0x28a3c3,'blocked':_0xb75c45};if(!_[_0xc913('0x8')](_0x1d85a8)){_0x51974d[_0xc913('0x9')]=_0x1d85a8;}return _0x2cdb77['updateAttributes'](_0x51974d);};exports[_0xc913('0xa')]=function(_0x5663fa){return new BPromise(function(_0x5da40d,_0x5ec5ee){var _0x41b533=0x0;if(_0x5663fa[_0xc913('0xb')]!=='agent'){_0x5da40d(_0x5663fa);}db[_0xc913('0xc')]['count']({'where':{'role':_0xc913('0xd'),'online':!![],'id':{'$ne':_0x5663fa['id']}}})['then'](function(_0x5459a1){_0x41b533=_0x5459a1;return util[_0xc913('0xa')]();})[_0xc913('0xe')](function(_0x5f0d7a){if(_0x5f0d7a&&_0x5f0d7a['agents']&&_0x41b533>=_0x5f0d7a[_0xc913('0xf')]){throw Error('Maximum\x20login\x20has\x20been\x20reached');}_0x5da40d(_0x5663fa);})['catch'](function(_0x2489bd){_0x5ec5ee(_0x2489bd);});});};
\ No newline at end of file
index ddd6c8a..c165505 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f0d=['../config/logger','api','Internal\x20Server\x20Error','name','Error','inherits','Bad\x20Request','message','Not\x20Found','Forbidden','error','status','send','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6f0d,0x16c));var _0xd6f0=function(_0x1def7a,_0x1d1b1d){_0x1def7a=_0x1def7a-0x0;var _0x403ea4=_0x6f0d[_0x1def7a];return _0x403ea4;};'use strict';var util=require('util');var logger=require(_0xd6f0('0x0'))(_0xd6f0('0x1'));var APIError=function(_0xd1480,_0x107a8c){this['message']=_0xd1480||_0xd6f0('0x2');this[_0xd6f0('0x3')]=_0x107a8c||_0xd6f0('0x4');util[_0xd6f0('0x5')](APIError,Error);};var APIBadRequestError=function(_0x3a757f){this['message']=_0x3a757f||_0xd6f0('0x6');this['name']=_0xd6f0('0x6');util[_0xd6f0('0x5')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x8b89a9){this[_0xd6f0('0x7')]=_0x8b89a9||'Entity\x20not\x20found';this['name']=_0xd6f0('0x8');util[_0xd6f0('0x5')](APINotFoundError,APIError);};function getStatusCode(_0x2854cd){switch(_0x2854cd){case _0xd6f0('0x6'):return 0x190;case _0xd6f0('0x9'),'OutOfInterval':return 0x193;case _0xd6f0('0x8'):return 0x194;default:return 0x1f4;}}function handleError(_0xee144c){return function(_0x329f69){logger[_0xd6f0('0xa')](_0x329f69['stack']);var _0x1ce8d5=getStatusCode(_0x329f69[_0xd6f0('0x3')]);if(_0x329f69[_0xd6f0('0x3')])delete _0x329f69[_0xd6f0('0x3')];return _0xee144c[_0xd6f0('0xb')](_0x1ce8d5)[_0xd6f0('0xc')](_0x329f69);};}module[_0xd6f0('0xd')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
+var _0xe706=['inherits','Bad\x20Request','Entity\x20not\x20found','Not\x20Found','Forbidden','OutOfInterval','stack','status','send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error'];(function(_0x16a4b8,_0x42f23b){var _0x48cc58=function(_0x1534d3){while(--_0x1534d3){_0x16a4b8['push'](_0x16a4b8['shift']());}};_0x48cc58(++_0x42f23b);}(_0xe706,0xa3));var _0x6e70=function(_0x5599aa,_0x1b9ffe){_0x5599aa=_0x5599aa-0x0;var _0x4b0f34=_0xe706[_0x5599aa];return _0x4b0f34;};'use strict';var util=require(_0x6e70('0x0'));var logger=require(_0x6e70('0x1'))(_0x6e70('0x2'));var APIError=function(_0x5e8446,_0x2cae77){this[_0x6e70('0x3')]=_0x5e8446||_0x6e70('0x4');this[_0x6e70('0x5')]=_0x2cae77||_0x6e70('0x6');util[_0x6e70('0x7')](APIError,Error);};var APIBadRequestError=function(_0x376a8d){this[_0x6e70('0x3')]=_0x376a8d||_0x6e70('0x8');this[_0x6e70('0x5')]=_0x6e70('0x8');util[_0x6e70('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x45a2d4){this[_0x6e70('0x3')]=_0x45a2d4||_0x6e70('0x9');this[_0x6e70('0x5')]=_0x6e70('0xa');util[_0x6e70('0x7')](APINotFoundError,APIError);};function getStatusCode(_0x100eb7){switch(_0x100eb7){case _0x6e70('0x8'):return 0x190;case _0x6e70('0xb'),_0x6e70('0xc'):return 0x193;case _0x6e70('0xa'):return 0x194;default:return 0x1f4;}}function handleError(_0x4600f9){return function(_0x5b3d07){logger['error'](_0x5b3d07[_0x6e70('0xd')]);var _0x15a1a5=getStatusCode(_0x5b3d07[_0x6e70('0x5')]);if(_0x5b3d07[_0x6e70('0x5')])delete _0x5b3d07[_0x6e70('0x5')];return _0x4600f9[_0x6e70('0xe')](_0x15a1a5)[_0x6e70('0xf')](_0x5b3d07);};}module[_0x6e70('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 3e7e774..3f75bbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd350=['status','render','json','exports'];(function(_0x58345e,_0x4d6f63){var _0x2908ad=function(_0xc02a7c){while(--_0xc02a7c){_0x58345e['push'](_0x58345e['shift']());}};_0x2908ad(++_0x4d6f63);}(_0xd350,0x7b));var _0x0d35=function(_0x1cfa0d,_0x4391f2){_0x1cfa0d=_0x1cfa0d-0x0;var _0xe33279=_0xd350[_0x1cfa0d];return _0xe33279;};'use strict';module[_0x0d35('0x0')][0x194]=function pageNotFound(_0x4947be,_0xf760b8){var _0x1fa8df='404';var _0x22eee7=0x194;var _0x1b6a18={'status':_0x22eee7};_0xf760b8[_0x0d35('0x1')](_0x1b6a18['status']);_0xf760b8[_0x0d35('0x2')](_0x1fa8df,{},function(_0x584a54,_0x11e944){if(_0x584a54){return _0xf760b8['status'](_0x1b6a18[_0x0d35('0x1')])[_0x0d35('0x3')](_0x1b6a18);}_0xf760b8['send'](_0x11e944);});};
\ No newline at end of file
+var _0xdb35=['404','status','render','json','send','exports'];(function(_0x3c2442,_0x3ed5d1){var _0x3b99c2=function(_0xc4ad01){while(--_0xc4ad01){_0x3c2442['push'](_0x3c2442['shift']());}};_0x3b99c2(++_0x3ed5d1);}(_0xdb35,0x8f));var _0x5db3=function(_0x372915,_0x2dbd58){_0x372915=_0x372915-0x0;var _0x42ea51=_0xdb35[_0x372915];return _0x42ea51;};'use strict';module[_0x5db3('0x0')][0x194]=function pageNotFound(_0x9a2b2e,_0x5019e6){var _0x4a1ed1=_0x5db3('0x1');var _0x298414=0x194;var _0x1d0826={'status':_0x298414};_0x5019e6['status'](_0x1d0826[_0x5db3('0x2')]);_0x5019e6[_0x5db3('0x3')](_0x4a1ed1,{},function(_0x53c652,_0xc89064){if(_0x53c652){return _0x5019e6[_0x5db3('0x2')](_0x1d0826[_0x5db3('0x2')])[_0x5db3('0x4')](_0x1d0826);}_0x5019e6[_0x5db3('0x5')](_0xc89064);});};
\ No newline at end of file
index 852504d..4484ba1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa04f=['FreshdeskConfiguration','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerConfiguration/intVtigerConfiguration.model','../api/intVtigerField/intVtigerField.model','ServicenowAccount','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareReport','../api/squareReport/squareReport.model','../api/squareReportDetail/squareReportDetail.model','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../api/squareOdbc/squareOdbc.model','SquareRecording','../api/squareRecording/squareRecording.model','../api/team/team.model','License','../api/license/license.model','Campaign','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/cmList/cmList.model','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','UserProfileResource','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','WhatsappQueueReport','../api/whatsappQueueReport/whatsappQueueReport.model','WhatsappTransferReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','cascade','userSetting','UserId','VoiceRecording','Recordings','UserVoiceQueueRt','hasMany','CmHopperHistory','HopperHistory','OpenchannelInteractions','ChatInteractions','WhatsappInteractions','UserNotification','UserNotifications','SenderId','belongsTo','userProfileId','belongsToMany','Groups','chat_group_has_users','cm_user_has_contacts','CmList','Lists','Team','user_has_teams','MailInteractions','user_has_mail_interactions','user_has_chat_interactions','FaxInteractions','user_has_sms_interactions','user_has_openchannel_interactions','user_has_whatsapp_interactions','VoicePrefix','VoicePrefixes','MailQueues','ChatQueues','FaxQueues','OpenchannelQueue','OpenchannelQueues','UserOpenchannelQueue','WhatsappQueues','cm_user_has_lists','ChatWebsites','user_has_chat_websites','user_has_fax_accounts','OpenchannelAccounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','VoiceChanSpy','SpiedAgents','ChanSpyId','Applications','VoiceMusicOnHold','Sound','Sounds','moh_has_sounds','Members','VoiceQueueId','HopperFinals','HopperHistories','HopperBlacks','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','voice_queues_has_cm_lists','Agents','Teams','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailbox','mailboxuser','QueueCalls','uniqueid','AgentReports','Contact','ContactId','MailAccountId','CloudProviderId','restrict','MailServerOut','hasOne','Imap','Smtp','Disposition','Dispositions','Answers','Interactions','List','ListId','TemplateId','mandatoryDispositionPause','mandatoryDispositionPauseId','user_has_mail_accounts','MailInteractionId','Account','Owner','Tags','Tag','mail_interaction_has_tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','IntervalId','TagId','DashboardItem','FaxAccountId','Exntensions','FaxInteractionId','fax_interaction_has_tags','user_has_fax_interactions','AttachmentId','FaxQueueReport','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','OpenchannelAccountId','user_has_openchannel_accounts','openchannel_interaction_has_tags','OpenchannelInteractionId','team_has_openchannel_queues','ProactiveActions','OpenchannelQueueReport','Agent','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','ChatGroupId','Contacts','CompanyId','Phones','CmContactId','Hoppers','SmsInteractions','AdditionalPhones','CmHopperId','Queue','CampaignId','All','OneAll','AutomationAllId','Any','Actions','AutomationId','ParentId','Intervals','Extensions','MailApplications','FaxApplications','SmsApplications','CustomReportId','Mohs','cm_contact_has_tags','whatsapp_interaction_has_tags','ContactItemType','ItemTypeId','Hopper','AllConditions','AllCondition','TriggerAllId','AnyConditions','TriggerAnyId','TriggerId','Fields','AnalyticMetric','MetricId','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','DescriptionId','FieldId','Subject','Description','Variable','VariableId','Field','DeskAccount','DeskField','Descriptions','int_desk_configuration_has_tags','ZohoConfiguration','ZendeskField','int_zendesk_configuration_has_tags','FreshdeskAccount','int_freshdesk_configuration_has_tags','VtigerConfiguration','VtigerField','FromId','SessionId','JscriptyProject','ProjectId','VoiceQueues','team_has_mail_queues','team_has_fax_queues','team_has_sms_queues','SmsQueues','team_has_whatsapp_queues','SquareProject','SquareProjectId','campaigns_has_cm_lists','campaigns_has_cm_blacklists','FromUserId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromAccount','ToAgent','ToChatQueueId','FromFaxAccountId','ToFaxAccountId','OpenchannelTransferReport','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','UserVoicePrefix','UserProfileSections','Resources','WhatsappAccountId','WhatsappInteractionId','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','user','exports','jstz','sequelize','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','mysql','name','utf8','utf8_general_ci','sequelizeHistory','database','password','options','User','import','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','../api/voiceRecording/voiceRecording.model','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','MailSubstatus','MailInteraction','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','Dashboard','../api/dashboard/dashboard.model','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueueReport/faxQueueReport.model','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','OpenchannelMessage','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','../api/chatMessage/chatMessage.model','ChatOfflineMessage','ChatQueue','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','../api/sound/sound.model','../api/tag/tag.model','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','CmHopperAdditionalPhone','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','../api/trigger/trigger.model','Integration','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','AnalyticExtractedReport','../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','AnalyticTreeReport','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','../api/intSugarcrmField/intSugarcrmField.model','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model'];(function(_0x500419,_0x549162){var _0x241c1a=function(_0x3bea1a){while(--_0x3bea1a){_0x500419['push'](_0x500419['shift']());}};_0x241c1a(++_0x549162);}(_0xa04f,0x148));var _0xfa04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa04f[_0x3dd15e];return _0x231fd0;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require('lodash');var jstz=require(_0xfa04('0x0'));var timezone=jstz['determine']();config[_0xfa04('0x1')]=_[_0xfa04('0x2')](config[_0xfa04('0x1')],{'database':_0xfa04('0x3'),'username':_0xfa04('0x4'),'password':_0xfa04('0x5'),'options':{'host':_0xfa04('0x6'),'port':0xcea,'dialect':_0xfa04('0x7'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xfa04('0x8')](),'define':{'charset':_0xfa04('0x9'),'collate':_0xfa04('0xa')}}});config[_0xfa04('0xb')]=_[_0xfa04('0x2')](config[_0xfa04('0xb')],{'database':_0xfa04('0x3'),'username':_0xfa04('0x4'),'password':'xC@LL1234','options':{'host':_0xfa04('0x6'),'port':0xcea,'dialect':_0xfa04('0x7'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xfa04('0x9'),'collate':_0xfa04('0xa')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelize'][_0xfa04('0xc')],config[_0xfa04('0x1')]['username'],config[_0xfa04('0x1')][_0xfa04('0xd')],config[_0xfa04('0x1')][_0xfa04('0xe')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xfa04('0xb')][_0xfa04('0xc')],config[_0xfa04('0xb')]['username'],config[_0xfa04('0xb')][_0xfa04('0xd')],config[_0xfa04('0xb')][_0xfa04('0xe')])};db[_0xfa04('0xf')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/user/user.model');db['VoiceChanSpy']=db['sequelize']['import'](_0xfa04('0x11'));db[_0xfa04('0x12')]=db[_0xfa04('0x1')]['import']('../api/voiceContext/voiceContext.model');db[_0xfa04('0x13')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/voiceExtension/voiceExtension.model');db['VoiceMusicOnHold']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x14'));db[_0xfa04('0x15')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x16'));db['VoiceRecording']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x17'));db['ScreenRecording']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x18'));db[_0xfa04('0x19')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x1a'));db[_0xfa04('0x1b')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x1c'));db[_0xfa04('0x1d')]=db['sequelize']['import'](_0xfa04('0x1e'));db['VoiceDialReport']=db[_0xfa04('0x1')]['import'](_0xfa04('0x1f'));db['VoiceAgentReport']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x20'));db[_0xfa04('0x21')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x22'));db[_0xfa04('0x23')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x24'));db[_0xfa04('0x25')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x26'));db[_0xfa04('0x27')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x28'));db['UserVoiceQueueRt']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x29'));db[_0xfa04('0x2a')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x2b'));db[_0xfa04('0x2c')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x2d'));db[_0xfa04('0x2e')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x2f'));db[_0xfa04('0x30')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x31'));db[_0xfa04('0x32')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x33'));db['UserOpenchannelQueue']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x34'));db[_0xfa04('0x35')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x36'));db[_0xfa04('0x37')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/mailServerIn/mailServerIn.model');db['MailServerOut']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x38'));db[_0xfa04('0x39')]=db[_0xfa04('0x1')]['import']('../api/mailAccount/mailAccount.model');db[_0xfa04('0x3a')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/mailQueue/mailQueue.model');db[_0xfa04('0x3b')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/mailSubstatus/mailSubstatus.model');db[_0xfa04('0x3c')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x3d'));db[_0xfa04('0x3e')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x3f'));db[_0xfa04('0x40')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x41'));db[_0xfa04('0x42')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/mailQueueReport/mailQueueReport.model');db[_0xfa04('0x43')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x44'));db['DashboardItem']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x45'));db[_0xfa04('0x46')]=db['sequelize']['import'](_0xfa04('0x47'));db[_0xfa04('0x48')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x49'));db[_0xfa04('0x4a')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x4b'));db[_0xfa04('0x4c')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x4d'));db[_0xfa04('0x4e')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/faxQueue/faxQueue.model');db['FaxQueueReport']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x4f'));db[_0xfa04('0x50')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x51'));db[_0xfa04('0x52')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x53'));db[_0xfa04('0x54')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/smsInteraction/smsInteraction.model');db[_0xfa04('0x55')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x56'));db[_0xfa04('0x57')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x58'));db[_0xfa04('0x59')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x5a'));db[_0xfa04('0x5b')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x5c'));db[_0xfa04('0x5d')]=db['sequelize']['import']('../api/openchannelInteraction/openchannelInteraction.model');db[_0xfa04('0x5e')]=db[_0xfa04('0x1')]['import']('../api/openchannelMessage/openchannelMessage.model');db['OpenchannelQueue']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x5f'));db[_0xfa04('0x60')]=db['sequelize'][_0xfa04('0x10')]('../api/chatWebsite/chatWebsite.model');db['OpenchannelQueueReport']=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0xfa04('0x61')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x62'));db[_0xfa04('0x63')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x64'));db[_0xfa04('0x65')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x66'));db[_0xfa04('0x67')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/chatOfflineMessage/chatOfflineMessage.model');db[_0xfa04('0x68')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/chatQueue/chatQueue.model');db[_0xfa04('0x69')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x6a'));db[_0xfa04('0x6b')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x6c'));db[_0xfa04('0x6d')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x6e'));db[_0xfa04('0x6f')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x70'));db[_0xfa04('0x71')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x72'));db[_0xfa04('0x73')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x74'));db[_0xfa04('0x75')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/cmHopperFinal/cmHopperFinal.model');db['CmHopperHistory']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x76'));db[_0xfa04('0x77')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x78'));db[_0xfa04('0x79')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x7a'));db[_0xfa04('0x7b')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x7c'));db[_0xfa04('0x7d')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x7e'));db[_0xfa04('0x7f')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x80'));db['Disposition']=db['sequelize']['import'](_0xfa04('0x81'));db[_0xfa04('0x82')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x83'));db[_0xfa04('0x84')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/interval/interval.model');db[_0xfa04('0x85')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x86'));db[_0xfa04('0x87')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x88'));db[_0xfa04('0x89')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x8a'));db[_0xfa04('0x8b')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x8c'));db['Sound']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x8d'));db['Tag']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x8e'));db['ContactItemType']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x8f'));db[_0xfa04('0x90')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x91'));db[_0xfa04('0x92')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x93'));db[_0xfa04('0x94')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x95'));db[_0xfa04('0x96')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x97'));db['Variable']=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/variable/variable.model');db[_0xfa04('0x98')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x99'));db[_0xfa04('0x9a')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x9b'));db[_0xfa04('0x9c')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/analyticCustomReport/analyticCustomReport.model');db['AnalyticDefaultReport']=db['sequelize'][_0xfa04('0x10')]('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xfa04('0x9d')]=db['sequelize'][_0xfa04('0x10')]('../api/analyticExtractedReport/analyticExtractedReport.model');db['AnalyticMetric']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x9e'));db[_0xfa04('0x9f')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xa0'));db[_0xfa04('0xa1')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/analyticTreeReport/analyticTreeReport.model');db[_0xfa04('0xa2')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xa3'));db['SalesforceConfiguration']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xa4'));db[_0xfa04('0xa5')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xa6'));db[_0xfa04('0xa7')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xa8'));db[_0xfa04('0xa9')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xaa'));db[_0xfa04('0xab')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xac'));db['DeskAccount']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xad'));db[_0xfa04('0xae')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xaf'));db['DeskField']=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/intDeskField/intDeskField.model');db[_0xfa04('0xb0')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xb1'));db['ZohoConfiguration']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xb2'));db[_0xfa04('0xb3')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xb4'));db[_0xfa04('0xb5')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xb6'));db[_0xfa04('0xb7')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xb8'));db['ZendeskField']=db[_0xfa04('0x1')]['import'](_0xfa04('0xb9'));db['FreshdeskAccount']=db[_0xfa04('0x1')]['import']('../api/intFreshdeskAccount/intFreshdeskAccount.model');db[_0xfa04('0xba')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xbb'));db[_0xfa04('0xbc')]=db[_0xfa04('0x1')]['import']('../api/intFreshdeskField/intFreshdeskField.model');db[_0xfa04('0xbd')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xbe'));db['VtigerConfiguration']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xbf'));db['VtigerField']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xc0'));db[_0xfa04('0xc1')]=db['sequelize'][_0xfa04('0x10')]('../api/intServicenowAccount/intServicenowAccount.model');db[_0xfa04('0xc2')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xc3'));db[_0xfa04('0xc4')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/intServicenowField/intServicenowField.model');db[_0xfa04('0xc5')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xc6'));db[_0xfa04('0xc7')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/intDynamics365Configuration/intDynamics365Configuration.model');db[_0xfa04('0xc8')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xc9'));db[_0xfa04('0xca')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xcb'));db[_0xfa04('0xcc')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xcd'));db[_0xfa04('0xce')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xcf'));db[_0xfa04('0x98')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x99'));db['Network']=db[_0xfa04('0x1')]['import'](_0xfa04('0xd0'));db[_0xfa04('0xd1')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xd2'));db[_0xfa04('0xd3')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xfa04('0xd4')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xd5'));db[_0xfa04('0xd6')]=db[_0xfa04('0x1')]['import']('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0xfa04('0xd7')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xd8'));db[_0xfa04('0xd9')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xda'));db[_0xfa04('0xdb')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xdc'));db['SquareDetailsReport']=db['sequelize']['import'](_0xfa04('0xdd'));db['JscriptyProject']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xde'));db[_0xfa04('0xdf')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xe0'));db['SquareOdbc']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xe1'));db['SquareProject']=db['sequelize'][_0xfa04('0x10')]('../api/squareProject/squareProject.model');db[_0xfa04('0xe2')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xe3'));db['SquareMessage']=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/squareMessage/squareMessage.model');db['Team']=db[_0xfa04('0x1')]['import'](_0xfa04('0xe4'));db[_0xfa04('0xe5')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xe6'));db[_0xfa04('0xe7')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/campaign/campaign.model');db[_0xfa04('0xe8')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xe9'));db[_0xfa04('0xea')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xeb'));db['Plugin']=db['sequelize']['import'](_0xfa04('0xec'));db[_0xfa04('0xed')]=db['sequelize'][_0xfa04('0x10')]('../api/mailTransferReport/mailTransferReport.model');db[_0xfa04('0xee')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xef'));db[_0xfa04('0xf0')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/faxTransferReport/faxTransferReport.model');db['OpenchannelTransferReport']=db['sequelize'][_0xfa04('0x10')](_0xfa04('0xf1'));db[_0xfa04('0xf2')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/smsTransferReport/smsTransferReport.model');db['CmList']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xf3'));db['VoicePrefix']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xf4'));db[_0xfa04('0xf5')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xf6'));db[_0xfa04('0xf7')]=db[_0xfa04('0x1')][_0xfa04('0x10')]('../api/userProfileSection/userProfileSection.model');db[_0xfa04('0xf8')]=db['sequelize'][_0xfa04('0x10')]('../api/userProfileResource/userProfileResource.model');db['UserNotification']=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xf9'));db[_0xfa04('0xfa')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xfb'));db[_0xfa04('0xfc')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0xfd'));db[_0xfa04('0xfe')]=db[_0xfa04('0x1')]['import'](_0xfa04('0xff'));db[_0xfa04('0x100')]=db[_0xfa04('0x1')]['import']('../api/whatsappMessage/whatsappMessage.model');db[_0xfa04('0x101')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x102'));db[_0xfa04('0x103')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x104'));db[_0xfa04('0x105')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x106'));db[_0xfa04('0x107')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x108'));db[_0xfa04('0x109')]=db[_0xfa04('0x1')][_0xfa04('0x10')](_0xfa04('0x10a'));db[_0xfa04('0x10b')]=db['sequelize'][_0xfa04('0x10')](_0xfa04('0x10c'));db['UserVoicePrefix']=db[_0xfa04('0x1')]['import'](_0xfa04('0x10d'));db[_0xfa04('0x10e')]=db[_0xfa04('0x1')]['import'](_0xfa04('0x10f'));db[_0xfa04('0xf')]['hasOne'](db[_0xfa04('0x19')],{'as':_0xfa04('0x19'),'onDelete':_0xfa04('0x110'),'foreignKey':'UserId'});db[_0xfa04('0xf')]['hasOne'](db[_0xfa04('0x10e')],{'as':_0xfa04('0x111'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0x113')],{'as':_0xfa04('0x114'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0x115')],{'as':'VoiceQueuesRt','foreignKey':'UserId'});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0x13')],{'as':'Extensions','onDelete':_0xfa04('0x110'),'hooks':!![]});db['User'][_0xfa04('0x116')](db[_0xfa04('0x75')],{'as':'HopperFinals','foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0x117')],{'as':_0xfa04('0x118'),'foreignKey':'UserId'});db[_0xfa04('0xf')]['hasMany'](db['ReportAgentPreview'],{'as':_0xfa04('0x77'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')][_0xfa04('0x116')](db['OpenchannelInteraction'],{'as':_0xfa04('0x119'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')][_0xfa04('0x116')](db[_0xfa04('0x63')],{'as':_0xfa04('0x11a'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')][_0xfa04('0x116')](db['SmsInteraction'],{'as':'SmsInteractions','foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0x4a')],{'as':'FaxInteractions','foreignKey':_0xfa04('0x112')});db[_0xfa04('0xf')][_0xfa04('0x116')](db[_0xfa04('0x3c')],{'as':'MailInteractions','foreignKey':'UserId'});db[_0xfa04('0xf')]['hasMany'](db[_0xfa04('0xfe')],{'as':_0xfa04('0x11b'),'foreignKey':_0xfa04('0x112')});db['User'][_0xfa04('0x116')](db[_0xfa04('0x11c')],{'as':_0xfa04('0x11d'),'foreignKey':_0xfa04('0x11e')});db[_0xfa04('0xf')][_0xfa04('0x11f')](db[_0xfa04('0xf5')],{'as':_0xfa04('0xf5'),'foreignKey':_0xfa04('0x120')});db['User'][_0xfa04('0x121')](db[_0xfa04('0x69')],{'as':_0xfa04('0x122'),'through':_0xfa04('0x123')});db['User'][_0xfa04('0x121')](db['CmContact'],{'as':'Contacts','through':_0xfa04('0x124')});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x125')],{'as':_0xfa04('0x126'),'through':'cm_user_has_lists'});db[_0xfa04('0xf')]['belongsToMany'](db[_0xfa04('0x127')],{'through':_0xfa04('0x128')});db[_0xfa04('0xf')]['belongsToMany'](db[_0xfa04('0x3c')],{'as':_0xfa04('0x129'),'through':_0xfa04('0x12a')});db[_0xfa04('0xf')][_0xfa04('0x121')](db['ChatInteraction'],{'as':_0xfa04('0x11a'),'through':_0xfa04('0x12b')});db['User'][_0xfa04('0x121')](db['FaxInteraction'],{'as':_0xfa04('0x12c'),'through':'user_has_fax_interactions'});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x54')],{'as':'SmsInteractions','through':_0xfa04('0x12d')});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x5d')],{'as':_0xfa04('0x119'),'through':_0xfa04('0x12e')});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0xfe')],{'as':_0xfa04('0x11b'),'through':_0xfa04('0x12f')});db[_0xfa04('0xf')][_0xfa04('0x121')](db['VoiceQueue'],{'as':'VoiceQueues','through':_0xfa04('0x2a'),'required':![]});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x130')],{'as':_0xfa04('0x131'),'through':'UserVoicePrefix','required':![]});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x3a')],{'as':_0xfa04('0x132'),'through':_0xfa04('0x2e'),'required':![]});db['User']['belongsToMany'](db['ChatQueue'],{'as':_0xfa04('0x133'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0xfa04('0xf')]['belongsToMany'](db['FaxQueue'],{'as':_0xfa04('0x134'),'through':'UserFaxQueue','required':![]});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x57')],{'as':'SmsQueues','through':_0xfa04('0x32'),'required':![]});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x135')],{'as':_0xfa04('0x136'),'through':_0xfa04('0x137'),'required':![]});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0x105')],{'as':_0xfa04('0x138'),'through':_0xfa04('0x35'),'required':![]});db['User'][_0xfa04('0x121')](db[_0xfa04('0x125')],{'through':_0xfa04('0x139')});db[_0xfa04('0xf')][_0xfa04('0x121')](db['ChatWebsite'],{'as':_0xfa04('0x13a'),'through':_0xfa04('0x13b')});db['User'][_0xfa04('0x121')](db[_0xfa04('0x46')],{'as':'FaxAccounts','through':_0xfa04('0x13c')});db[_0xfa04('0xf')][_0xfa04('0x121')](db['MailAccount'],{'as':'MailAccounts','through':'user_has_mail_accounts'});db['User'][_0xfa04('0x121')](db['OpenchannelAccount'],{'as':_0xfa04('0x13d'),'through':'user_has_openchannel_accounts'});db[_0xfa04('0xf')]['belongsToMany'](db[_0xfa04('0x50')],{'as':_0xfa04('0x13e'),'through':_0xfa04('0x13f')});db[_0xfa04('0xf')][_0xfa04('0x121')](db[_0xfa04('0xfa')],{'as':_0xfa04('0x140'),'through':_0xfa04('0x141')});db[_0xfa04('0x142')][_0xfa04('0x116')](db[_0xfa04('0x13')],{'as':_0xfa04('0x143'),'onDelete':'cascade','foreignKey':_0xfa04('0x144')});db[_0xfa04('0x12')][_0xfa04('0x116')](db[_0xfa04('0x13')],{'onDelete':_0xfa04('0x110')});db['VoiceExtension'][_0xfa04('0x116')](db[_0xfa04('0x13')],{'as':_0xfa04('0x145'),'onDelete':'cascade'});db[_0xfa04('0x146')]['belongsToMany'](db[_0xfa04('0x147')],{'as':_0xfa04('0x148'),'through':_0xfa04('0x149')});db[_0xfa04('0x15')][_0xfa04('0x116')](db[_0xfa04('0x115')],{'as':_0xfa04('0x14a'),'foreignKey':_0xfa04('0x14b')});db['VoiceQueue'][_0xfa04('0x116')](db[_0xfa04('0x71')],{'as':'Hoppers','foreignKey':_0xfa04('0x14b')});db[_0xfa04('0x15')][_0xfa04('0x116')](db[_0xfa04('0x75')],{'as':_0xfa04('0x14c'),'foreignKey':_0xfa04('0x14b')});db[_0xfa04('0x15')]['hasMany'](db[_0xfa04('0x117')],{'as':_0xfa04('0x14d'),'foreignKey':_0xfa04('0x14b')});db[_0xfa04('0x15')]['hasMany'](db[_0xfa04('0x77')],{'as':_0xfa04('0x77'),'foreignKey':'VoiceQueueId'});db[_0xfa04('0x15')][_0xfa04('0x116')](db[_0xfa04('0x73')],{'as':_0xfa04('0x14e'),'foreignKey':_0xfa04('0x14b')});db[_0xfa04('0x15')]['hasMany'](db[_0xfa04('0xd7')],{'as':_0xfa04('0x14f'),'foreignKey':_0xfa04('0x14b')});db[_0xfa04('0x15')][_0xfa04('0x11f')](db[_0xfa04('0x25')],{'as':_0xfa04('0x25'),'foreignKey':_0xfa04('0x150')});db[_0xfa04('0x15')][_0xfa04('0x11f')](db[_0xfa04('0x25')],{'as':_0xfa04('0x151'),'foreignKey':_0xfa04('0x152')});db[_0xfa04('0x15')]['belongsTo'](db[_0xfa04('0x84')],{'as':_0xfa04('0x84'),'foreignKey':'IntervalId'});db[_0xfa04('0x15')][_0xfa04('0x11f')](db[_0xfa04('0x85')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db[_0xfa04('0x15')][_0xfa04('0x121')](db['CmList'],{'as':_0xfa04('0x126'),'through':_0xfa04('0x153')});db['VoiceQueue'][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x2a')});db[_0xfa04('0x15')][_0xfa04('0x121')](db[_0xfa04('0x127')],{'as':_0xfa04('0x155'),'through':_0xfa04('0x109')});db[_0xfa04('0x15')]['belongsToMany'](db[_0xfa04('0x125')],{'as':_0xfa04('0x156'),'through':_0xfa04('0x157')});db['VoiceRecording'][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0xf'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x158')][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0xf'),'foreignKey':'UserId'});db[_0xfa04('0x19')]['hasMany'](db[_0xfa04('0x1b')],{'as':_0xfa04('0x159'),'onDelete':_0xfa04('0x110'),'foreignKey':'mailboxuser','sourceKey':_0xfa04('0x15a')});db[_0xfa04('0x1b')][_0xfa04('0x11f')](db[_0xfa04('0x19')],{'foreignKey':_0xfa04('0x15b'),'targetKey':_0xfa04('0x15a')});db[_0xfa04('0x1d')][_0xfa04('0x116')](db['VoiceQueueReport'],{'as':_0xfa04('0x15c'),'foreignKey':_0xfa04('0x15d'),'constraints':![]});db[_0xfa04('0x1d')][_0xfa04('0x116')](db['VoiceAgentReport'],{'as':_0xfa04('0x15e'),'foreignKey':_0xfa04('0x15d'),'constraints':![]});db[_0xfa04('0x1d')][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0xf'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x1d')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x37')]['belongsTo'](db['MailAccount'],{'as':'MailAccount','foreignKey':_0xfa04('0x161')});db[_0xfa04('0x37')]['belongsTo'](db[_0xfa04('0x107')],{'as':_0xfa04('0x107'),'foreignKey':_0xfa04('0x162'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x164')][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'as':_0xfa04('0x39'),'foreignKey':_0xfa04('0x161')});db[_0xfa04('0x164')][_0xfa04('0x11f')](db[_0xfa04('0x107')],{'as':_0xfa04('0x107'),'foreignKey':_0xfa04('0x162'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x39')][_0xfa04('0x165')](db[_0xfa04('0x37')],{'as':_0xfa04('0x166'),'onDelete':'cascade'});db[_0xfa04('0x39')][_0xfa04('0x165')](db[_0xfa04('0x164')],{'as':_0xfa04('0x167'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x39')][_0xfa04('0x116')](db[_0xfa04('0x168')],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x161'),'onDelete':'cascade'});db['MailAccount'][_0xfa04('0x116')](db[_0xfa04('0x7f')],{'as':_0xfa04('0x16a'),'foreignKey':'MailAccountId'});db[_0xfa04('0x39')][_0xfa04('0x116')](db['MailMessage'],{'as':_0xfa04('0x159'),'foreignKey':_0xfa04('0x161')});db[_0xfa04('0x39')][_0xfa04('0x116')](db[_0xfa04('0x3c')],{'as':_0xfa04('0x16b')});db[_0xfa04('0x39')]['hasMany'](db['MailApplication'],{'as':_0xfa04('0x145')});db[_0xfa04('0x39')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x39')][_0xfa04('0x11f')](db[_0xfa04('0x94')],{'as':_0xfa04('0x94'),'foreignKey':_0xfa04('0x16e')});db[_0xfa04('0x39')][_0xfa04('0x11f')](db[_0xfa04('0x85')],{'as':_0xfa04('0x16f'),'foreignKey':_0xfa04('0x170')});db[_0xfa04('0x39')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x171')});db[_0xfa04('0x3a')][_0xfa04('0x121')](db['User'],{'as':'Agents','through':_0xfa04('0x2e')});db[_0xfa04('0x3a')][_0xfa04('0x121')](db[_0xfa04('0x127')],{'through':'team_has_mail_queues','as':_0xfa04('0x155')});db['MailInteraction']['hasMany'](db[_0xfa04('0x3e')],{'as':'Messages','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x172')});db[_0xfa04('0x3c')][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x161')});db[_0xfa04('0x3c')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x3c')][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0x174'),'foreignKey':'UserId'});db[_0xfa04('0x3c')][_0xfa04('0x121')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xfa04('0x175')});db[_0xfa04('0x3c')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x177'),'as':_0xfa04('0x178')});db[_0xfa04('0x3c')]['belongsToMany'](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':_0xfa04('0x12a'),'foreignKey':_0xfa04('0x172')});db['MailMessage'][_0xfa04('0x116')](db['Attachment'],{'as':_0xfa04('0x17a'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':'User'});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x15f')});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db['MailInteraction'],{'as':_0xfa04('0x17b'),'foreignKey':'MailInteractionId'});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'as':'Account','foreignKey':_0xfa04('0x161')});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db[_0xfa04('0x60')],{'as':'ChatWebsite','foreignKey':_0xfa04('0x17c')});db[_0xfa04('0x3e')][_0xfa04('0x11f')](db[_0xfa04('0x67')],{'as':_0xfa04('0x67'),'foreignKey':_0xfa04('0x17d')});db[_0xfa04('0x40')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0x40')][_0xfa04('0x11f')](db[_0xfa04('0x3a')],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0x40')][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'onDelete':_0xfa04('0x163')});db['MailApplication']['belongsTo'](db[_0xfa04('0x84')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17e')});db['MailApplication'][_0xfa04('0x11f')](db[_0xfa04('0x176')],{'onDelete':'restrict','foreignKey':_0xfa04('0x17f')});db[_0xfa04('0x42')]['belongsTo'](db['MailAccount'],{});db['MailQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':'List','foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x42')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x42')][_0xfa04('0x11f')](db['MailInteraction'],{});db[_0xfa04('0x42')][_0xfa04('0x11f')](db[_0xfa04('0x3e')],{});db[_0xfa04('0x42')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{});db[_0xfa04('0x42')][_0xfa04('0x11f')](db['MailQueue'],{});db[_0xfa04('0x43')][_0xfa04('0x116')](db[_0xfa04('0x180')],{'as':'Items','onDelete':_0xfa04('0x110')});db[_0xfa04('0x46')][_0xfa04('0x116')](db[_0xfa04('0x168')],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x181'),'onDelete':'cascade'});db[_0xfa04('0x46')]['hasMany'](db[_0xfa04('0x7f')],{'as':_0xfa04('0x16a'),'foreignKey':'FaxAccountId'});db[_0xfa04('0x46')][_0xfa04('0x116')](db[_0xfa04('0x4a')],{'as':_0xfa04('0x16b')});db[_0xfa04('0x46')][_0xfa04('0x116')](db[_0xfa04('0x48')],{'as':_0xfa04('0x145')});db[_0xfa04('0x46')][_0xfa04('0x116')](db['VoiceExtension'],{'as':_0xfa04('0x182'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x46')]['hasMany'](db['FaxMessage'],{'as':_0xfa04('0x159')});db[_0xfa04('0x46')][_0xfa04('0x11f')](db[_0xfa04('0x25')],{'as':_0xfa04('0x25')});db[_0xfa04('0x46')]['belongsTo'](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db['FaxAccount']['belongsTo'](db[_0xfa04('0x85')],{'as':_0xfa04('0x16f'),'foreignKey':_0xfa04('0x170')});db[_0xfa04('0x46')]['belongsToMany'](db['User'],{'as':_0xfa04('0x154'),'through':_0xfa04('0x13c')});db[_0xfa04('0x48')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0x48')][_0xfa04('0x11f')](db[_0xfa04('0x4e')],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0x48')][_0xfa04('0x11f')](db[_0xfa04('0x46')],{'onDelete':_0xfa04('0x163')});db['FaxApplication'][_0xfa04('0x11f')](db[_0xfa04('0x176')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17f')});db[_0xfa04('0x4a')][_0xfa04('0x116')](db[_0xfa04('0x4c')],{'as':_0xfa04('0x159'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x183')});db[_0xfa04('0x4a')][_0xfa04('0x11f')](db['FaxAccount'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x181')});db[_0xfa04('0x4a')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x4a')]['belongsTo'](db[_0xfa04('0xf')],{'as':_0xfa04('0x174'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x4a')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x184'),'as':_0xfa04('0x175')});db['FaxInteraction'][_0xfa04('0x121')](db['Tag'],{'through':_0xfa04('0x184'),'as':_0xfa04('0x178')});db[_0xfa04('0x4a')][_0xfa04('0x121')](db['User'],{'as':_0xfa04('0x179'),'through':_0xfa04('0x185'),'foreignKey':_0xfa04('0x183')});db[_0xfa04('0x4c')]['belongsTo'](db[_0xfa04('0xf')],{'onDelete':'cascade','as':_0xfa04('0xf')});db[_0xfa04('0x4c')][_0xfa04('0x11f')](db[_0xfa04('0x4a')],{'as':_0xfa04('0x17b'),'foreignKey':'FaxInteractionId'});db['FaxMessage'][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x15f')});db[_0xfa04('0x4c')]['belongsTo'](db[_0xfa04('0xea')],{'as':_0xfa04('0xea'),'foreignKey':_0xfa04('0x186')});db[_0xfa04('0x4c')][_0xfa04('0x11f')](db[_0xfa04('0x46')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x181')});db[_0xfa04('0x4e')]['belongsToMany'](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':'UserFaxQueue'});db[_0xfa04('0x4e')][_0xfa04('0x121')](db[_0xfa04('0x127')],{'through':'team_has_fax_queues','as':'Teams'});db[_0xfa04('0x187')][_0xfa04('0x11f')](db[_0xfa04('0x46')],{});db[_0xfa04('0x187')]['belongsTo'](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x187')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':'Contact','foreignKey':'ContactId'});db[_0xfa04('0x187')][_0xfa04('0x11f')](db[_0xfa04('0x4a')],{});db['FaxQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0x4c')],{});db[_0xfa04('0x187')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{});db[_0xfa04('0x187')]['belongsTo'](db['FaxQueue'],{});db[_0xfa04('0x50')]['hasMany'](db[_0xfa04('0x168')],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x188'),'onDelete':'cascade'});db[_0xfa04('0x50')][_0xfa04('0x116')](db[_0xfa04('0x7f')],{'as':_0xfa04('0x16a'),'foreignKey':'SmsAccountId'});db[_0xfa04('0x50')]['hasMany'](db[_0xfa04('0x55')],{'as':_0xfa04('0x159'),'foreignKey':'SmsAccountId'});db[_0xfa04('0x50')][_0xfa04('0x116')](db['SmsInteraction'],{'as':_0xfa04('0x16b')});db[_0xfa04('0x50')][_0xfa04('0x116')](db[_0xfa04('0x52')],{'as':_0xfa04('0x145')});db[_0xfa04('0x50')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x50')][_0xfa04('0x11f')](db[_0xfa04('0x85')],{'as':_0xfa04('0x16f'),'foreignKey':_0xfa04('0x170')});db[_0xfa04('0x50')]['belongsToMany'](db[_0xfa04('0xf')],{'as':'Agents','through':_0xfa04('0x13f')});db[_0xfa04('0x52')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x163')});db['SmsApplication'][_0xfa04('0x11f')](db[_0xfa04('0x57')],{'onDelete':'restrict'});db[_0xfa04('0x52')][_0xfa04('0x11f')](db['SmsAccount'],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0x52')][_0xfa04('0x11f')](db['Interval'],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17e')});db['SmsApplication']['belongsTo'](db[_0xfa04('0x176')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17f')});db['SmsInteraction'][_0xfa04('0x116')](db[_0xfa04('0x55')],{'as':'Messages','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x189')});db[_0xfa04('0x54')][_0xfa04('0x11f')](db[_0xfa04('0x50')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x188')});db[_0xfa04('0x54')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x54')][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0x174'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x54')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x18a'),'as':'Tags'});db['SmsInteraction']['belongsToMany'](db[_0xfa04('0x176')],{'through':'sms_interaction_has_tags','as':_0xfa04('0x178')});db[_0xfa04('0x54')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':_0xfa04('0x12d'),'foreignKey':_0xfa04('0x189')});db[_0xfa04('0x55')]['belongsTo'](db[_0xfa04('0xf')],{'as':_0xfa04('0xf')});db['SmsMessage']['belongsTo'](db[_0xfa04('0x6f')],{'onDelete':'cascade','as':_0xfa04('0x15f')});db[_0xfa04('0x55')][_0xfa04('0x11f')](db[_0xfa04('0x54')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x17b'),'foreignKey':_0xfa04('0x189')});db[_0xfa04('0x55')]['belongsTo'](db[_0xfa04('0x50')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x188')});db[_0xfa04('0x57')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x32'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0xfa04('0x121')](db['Team'],{'through':'team_has_sms_queues','as':_0xfa04('0x155')});db[_0xfa04('0x59')][_0xfa04('0x116')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xfa04('0x18b'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x59')][_0xfa04('0x116')](db[_0xfa04('0x7f')],{'as':_0xfa04('0x16a'),'foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xfa04('0x116')](db[_0xfa04('0x5d')],{'as':_0xfa04('0x16b'),'foreignKey':_0xfa04('0x18b')});db[_0xfa04('0x59')][_0xfa04('0x116')](db[_0xfa04('0x5e')],{'as':_0xfa04('0x159'),'foreignKey':_0xfa04('0x18b')});db['OpenchannelAccount'][_0xfa04('0x116')](db[_0xfa04('0x5b')],{'as':_0xfa04('0x145'),'foreignKey':_0xfa04('0x18b')});db['OpenchannelAccount'][_0xfa04('0x11f')](db['CmList'],{'as':_0xfa04('0x16c'),'foreignKey':'ListId'});db[_0xfa04('0x59')][_0xfa04('0x11f')](db['Pause'],{'as':_0xfa04('0x16f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xfa04('0x59')]['belongsToMany'](db[_0xfa04('0xf')],{'as':'Agents','through':_0xfa04('0x18c')});db[_0xfa04('0x5b')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':'restrict'});db[_0xfa04('0x5b')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0xfa04('0x163'),'foreignKey':'OpenchannelQueueId'});db[_0xfa04('0x5b')]['belongsTo'](db[_0xfa04('0x59')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x18b')});db['OpenchannelApplication'][_0xfa04('0x11f')](db[_0xfa04('0x84')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17e')});db[_0xfa04('0x5b')][_0xfa04('0x11f')](db[_0xfa04('0x176')],{'onDelete':'restrict','foreignKey':_0xfa04('0x17f')});db[_0xfa04('0x5d')][_0xfa04('0x116')](db[_0xfa04('0x5e')],{'as':'Messages','onDelete':'cascade','foreignKey':'OpenchannelInteractionId'});db['OpenchannelInteraction'][_0xfa04('0x11f')](db[_0xfa04('0x59')],{'as':_0xfa04('0x173'),'foreignKey':'OpenchannelAccountId'});db[_0xfa04('0x5d')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db['OpenchannelInteraction'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':_0xfa04('0x174'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x5d')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':'openchannel_interaction_has_tags','as':_0xfa04('0x175')});db['OpenchannelInteraction']['belongsToMany'](db[_0xfa04('0x176')],{'through':_0xfa04('0x18d'),'as':_0xfa04('0x178')});db[_0xfa04('0x5d')]['belongsToMany'](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':_0xfa04('0x12e'),'foreignKey':_0xfa04('0x18e')});db[_0xfa04('0x5e')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0xf')});db[_0xfa04('0x5e')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x15f')});db[_0xfa04('0x5e')][_0xfa04('0x11f')](db['OpenchannelInteraction'],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x17b'),'foreignKey':_0xfa04('0x18e')});db['OpenchannelMessage'][_0xfa04('0x11f')](db[_0xfa04('0xea')],{'as':_0xfa04('0xea'),'foreignKey':_0xfa04('0x186')});db[_0xfa04('0x5e')][_0xfa04('0x11f')](db[_0xfa04('0x59')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x18b')});db[_0xfa04('0x135')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':'Agents','through':_0xfa04('0x137'),'foreignKey':'OpenchannelQueueId'});db['OpenchannelQueue'][_0xfa04('0x121')](db['Team'],{'through':_0xfa04('0x18f'),'as':_0xfa04('0x155')});db[_0xfa04('0x60')][_0xfa04('0x116')](db[_0xfa04('0x168')],{'as':'Dispositions','foreignKey':_0xfa04('0x17c'),'onDelete':'cascade'});db[_0xfa04('0x60')]['hasMany'](db[_0xfa04('0x7f')],{'as':_0xfa04('0x16a'),'foreignKey':'ChatWebsiteId'});db['ChatWebsite']['hasMany'](db[_0xfa04('0x6b')],{'as':_0xfa04('0x190')});db['ChatWebsite'][_0xfa04('0x116')](db['ChatInteraction'],{'as':_0xfa04('0x16b')});db['ChatWebsite'][_0xfa04('0x116')](db[_0xfa04('0x61')],{'as':_0xfa04('0x145')});db[_0xfa04('0x60')]['hasMany'](db[_0xfa04('0x65')],{'as':_0xfa04('0x159')});db[_0xfa04('0x60')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db['ChatWebsite'][_0xfa04('0x11f')](db[_0xfa04('0x84')],{'as':'Interval','foreignKey':_0xfa04('0x17e')});db['ChatWebsite'][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'as':_0xfa04('0x39'),'foreignKey':_0xfa04('0x161')});db[_0xfa04('0x60')]['belongsTo'](db['Pause'],{'as':_0xfa04('0x16f'),'foreignKey':_0xfa04('0x170')});db[_0xfa04('0x60')]['belongsToMany'](db[_0xfa04('0xf')],{'as':'Agents','through':'user_has_chat_websites'});db[_0xfa04('0x191')][_0xfa04('0x11f')](db[_0xfa04('0x59')],{});db[_0xfa04('0x191')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':'List','foreignKey':_0xfa04('0x16d')});db['OpenchannelQueueReport']['belongsTo'](db['CmContact'],{'as':_0xfa04('0x15f'),'foreignKey':'ContactId'});db[_0xfa04('0x191')][_0xfa04('0x11f')](db[_0xfa04('0x5d')],{});db[_0xfa04('0x191')]['belongsTo'](db['OpenchannelMessage'],{});db['OpenchannelQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{});db[_0xfa04('0x191')][_0xfa04('0x11f')](db[_0xfa04('0x135')],{});db['ChatApplication'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':_0xfa04('0x192'),'foreignKey':'UserId','onDelete':_0xfa04('0x163')});db[_0xfa04('0x61')][_0xfa04('0x11f')](db[_0xfa04('0x68')],{'as':'Queue','foreignKey':_0xfa04('0x193'),'onDelete':'restrict'});db['ChatApplication'][_0xfa04('0x11f')](db[_0xfa04('0x60')],{'as':_0xfa04('0x194'),'foreignKey':_0xfa04('0x17c'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x61')][_0xfa04('0x11f')](db['Tag'],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17f')});db[_0xfa04('0x63')][_0xfa04('0x116')](db[_0xfa04('0x65')],{'as':_0xfa04('0x159'),'onDelete':_0xfa04('0x110'),'foreignKey':'ChatInteractionId'});db[_0xfa04('0x63')][_0xfa04('0x11f')](db['ChatWebsite'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x17c')});db['ChatInteraction'][_0xfa04('0x11f')](db['CmContact'],{'as':_0xfa04('0x15f'),'foreignKey':'ContactId'});db[_0xfa04('0x63')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':_0xfa04('0x174'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0x63')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x195'),'as':_0xfa04('0x175')});db[_0xfa04('0x63')]['belongsToMany'](db[_0xfa04('0x176')],{'through':_0xfa04('0x195'),'as':'ThroughTags'});db['ChatInteraction'][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':'user_has_chat_interactions','foreignKey':_0xfa04('0x196')});db[_0xfa04('0x65')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0xf')});db['ChatMessage'][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'onDelete':'cascade','as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db['ChatMessage'][_0xfa04('0x11f')](db[_0xfa04('0x63')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x17b'),'foreignKey':_0xfa04('0x196')});db['ChatMessage']['belongsTo'](db[_0xfa04('0xea')],{'as':_0xfa04('0xea'),'foreignKey':_0xfa04('0x186')});db['ChatMessage'][_0xfa04('0x11f')](db[_0xfa04('0x60')],{'as':'Account','foreignKey':'ChatWebsiteId'});db[_0xfa04('0x67')][_0xfa04('0x116')](db[_0xfa04('0xea')],{'as':_0xfa04('0x17a'),'foreignKey':_0xfa04('0x17d'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x67')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x67')]['belongsTo'](db['ChatWebsite'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x17c')});db[_0xfa04('0x68')][_0xfa04('0x121')](db['User'],{'as':_0xfa04('0x154'),'through':'UserChatQueue','hooks':!![]});db[_0xfa04('0x68')][_0xfa04('0x121')](db[_0xfa04('0x127')],{'through':_0xfa04('0x197'),'as':'Teams'});db[_0xfa04('0x69')][_0xfa04('0x116')](db[_0xfa04('0xd3')],{'as':_0xfa04('0x159'),'foreignKey':_0xfa04('0x198'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x69')]['belongsToMany'](db[_0xfa04('0xf')],{'as':'Members','through':'chat_group_has_users'});db[_0xfa04('0x6b')][_0xfa04('0x11f')](db[_0xfa04('0x60')],{'as':_0xfa04('0x194'),'foreignKey':_0xfa04('0x17c')});db[_0xfa04('0x6d')][_0xfa04('0x116')](db['CmContact'],{'as':_0xfa04('0x199'),'foreignKey':_0xfa04('0x19a')});db[_0xfa04('0x6f')][_0xfa04('0x116')](db[_0xfa04('0x90')],{'as':_0xfa04('0x19b'),'foreignKey':_0xfa04('0x19c')});db['CmContact'][_0xfa04('0x116')](db[_0xfa04('0x71')],{'as':_0xfa04('0x19d'),'foreignKey':'ContactId'});db[_0xfa04('0x6f')][_0xfa04('0x116')](db['CmHopperFinal'],{'as':_0xfa04('0x14c'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0x6f')][_0xfa04('0x116')](db[_0xfa04('0x117')],{'as':'HopperHistories','foreignKey':_0xfa04('0x160')});db[_0xfa04('0x6f')][_0xfa04('0x116')](db[_0xfa04('0x77')],{'as':'ReportAgentPreview','foreignKey':_0xfa04('0x160')});db[_0xfa04('0x6f')][_0xfa04('0x116')](db[_0xfa04('0xd7')],{'as':_0xfa04('0x14f'),'foreignKey':_0xfa04('0x160')});db['CmContact']['hasMany'](db['OpenchannelInteraction'],{'as':'OpenchannelInteractions','foreignKey':_0xfa04('0x160'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x6f')][_0xfa04('0x116')](db['ChatInteraction'],{'as':_0xfa04('0x11a'),'foreignKey':_0xfa04('0x160'),'onDelete':'restrict'});db[_0xfa04('0x6f')][_0xfa04('0x116')](db[_0xfa04('0x54')],{'as':_0xfa04('0x19e'),'foreignKey':_0xfa04('0x160'),'onDelete':'restrict'});db[_0xfa04('0x6f')]['hasMany'](db[_0xfa04('0x4a')],{'as':_0xfa04('0x12c'),'foreignKey':_0xfa04('0x160'),'onDelete':'restrict'});db['CmContact']['hasMany'](db[_0xfa04('0x3c')],{'as':'MailInteractions','foreignKey':_0xfa04('0x160'),'onDelete':'restrict'});db[_0xfa04('0x6f')]['belongsTo'](db[_0xfa04('0x6d')],{'as':'Company','foreignKey':'CompanyId'});db[_0xfa04('0x6f')]['belongsTo'](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x6f')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':_0xfa04('0x124')});db[_0xfa04('0x6f')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'as':'Tags','through':'cm_contact_has_tags'});db[_0xfa04('0x6f')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':'cm_contact_has_tags','as':_0xfa04('0x178')});db[_0xfa04('0x71')]['hasMany'](db[_0xfa04('0x92')],{'as':_0xfa04('0x19f'),'foreignKey':_0xfa04('0x1a0')});db[_0xfa04('0x71')]['belongsTo'](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':'ContactId','onDelete':_0xfa04('0x110')});db['CmHopper'][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':'List','foreignKey':_0xfa04('0x16d'),'onDelete':_0xfa04('0x110')});db['CmHopper'][_0xfa04('0x11f')](db['User'],{'as':_0xfa04('0x192'),'foreignKey':_0xfa04('0x112')});db['CmHopper'][_0xfa04('0x11f')](db[_0xfa04('0x15')],{'as':_0xfa04('0x1a1'),'foreignKey':_0xfa04('0x14b'),'onDelete':_0xfa04('0x110')});db['CmHopper'][_0xfa04('0x11f')](db[_0xfa04('0xe7')],{'as':'Campaign','foreignKey':_0xfa04('0x1a2'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x71')][_0xfa04('0x11f')](db['User'],{'as':'Owner','foreignKey':'OwnerId'});db[_0xfa04('0x73')][_0xfa04('0x11f')](db['CmContact'],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x73')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d'),'onDelete':'cascade'});db[_0xfa04('0x73')][_0xfa04('0x11f')](db[_0xfa04('0x15')],{'as':_0xfa04('0x1a1'),'foreignKey':'VoiceQueueId','onDelete':'cascade'});db[_0xfa04('0x73')][_0xfa04('0x11f')](db[_0xfa04('0xe7')],{'as':'Campaign','foreignKey':_0xfa04('0x1a2'),'onDelete':_0xfa04('0x110')});db['Automation'][_0xfa04('0x116')](db['Condition'],{'as':{'plural':_0xfa04('0x1a3'),'singular':_0xfa04('0x1a4')},'foreignKey':_0xfa04('0x1a5'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x7d')][_0xfa04('0x116')](db[_0xfa04('0x82')],{'as':{'plural':_0xfa04('0x1a6'),'singular':'OneAny'},'foreignKey':'AutomationAnyId','onDelete':'cascade','hooks':!![]});db[_0xfa04('0x7d')]['hasMany'](db[_0xfa04('0x7b')],{'as':_0xfa04('0x1a7'),'foreignKey':_0xfa04('0x1a8'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x168')][_0xfa04('0x116')](db[_0xfa04('0x168')],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x1a9'),'onDelete':_0xfa04('0x110')});db['Interval']['hasMany'](db['Interval'],{'as':_0xfa04('0x1aa'),'foreignKey':_0xfa04('0x17e'),'onDelete':_0xfa04('0x110'),'hooks':!![],'required':![]});db[_0xfa04('0x84')]['hasMany'](db['VoiceExtension'],{'as':_0xfa04('0x1ab'),'foreignKey':_0xfa04('0x17e'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x84')][_0xfa04('0x116')](db[_0xfa04('0x40')],{'as':_0xfa04('0x1ac'),'foreignKey':_0xfa04('0x17e')});db['Interval'][_0xfa04('0x116')](db[_0xfa04('0x61')],{'as':'ChatApplications','foreignKey':'IntervalId'});db[_0xfa04('0x84')][_0xfa04('0x116')](db[_0xfa04('0x48')],{'as':_0xfa04('0x1ad'),'foreignKey':_0xfa04('0x17e')});db[_0xfa04('0x84')][_0xfa04('0x116')](db[_0xfa04('0x52')],{'as':_0xfa04('0x1ae'),'foreignKey':'IntervalId'});db['Schedule'][_0xfa04('0x11f')](db[_0xfa04('0x39')],{});db[_0xfa04('0x8b')]['belongsTo'](db['AnalyticDefaultReport'],{'foreignKey':'DefaultReportId'});db[_0xfa04('0x8b')]['belongsTo'](db[_0xfa04('0x9c')],{'foreignKey':_0xfa04('0x1af')});db[_0xfa04('0x147')][_0xfa04('0x121')](db[_0xfa04('0x146')],{'as':_0xfa04('0x1b0'),'through':'moh_has_sounds','onDelete':'restrict'});db[_0xfa04('0x176')]['belongsToMany'](db[_0xfa04('0x6f')],{'through':_0xfa04('0x1b1')});db['Tag'][_0xfa04('0x121')](db[_0xfa04('0x63')],{'through':_0xfa04('0x195')});db[_0xfa04('0x176')]['belongsToMany'](db[_0xfa04('0x3c')],{'through':_0xfa04('0x177')});db[_0xfa04('0x176')][_0xfa04('0x121')](db[_0xfa04('0x54')],{'through':_0xfa04('0x18a')});db[_0xfa04('0x176')][_0xfa04('0x121')](db[_0xfa04('0x4a')],{'through':_0xfa04('0x184')});db[_0xfa04('0x176')][_0xfa04('0x121')](db[_0xfa04('0x5d')],{'through':'openchannel_interaction_has_tags'});db[_0xfa04('0x176')][_0xfa04('0x121')](db[_0xfa04('0xfe')],{'through':_0xfa04('0x1b2')});db[_0xfa04('0x90')][_0xfa04('0x11f')](db[_0xfa04('0x1b3')],{'as':'ItemType','foreignKey':_0xfa04('0x1b4')});db[_0xfa04('0x92')][_0xfa04('0x11f')](db[_0xfa04('0x71')],{'as':_0xfa04('0x1b5'),'foreignKey':'CmHopperId'});db[_0xfa04('0x90')]['belongsTo'](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x19c')});db[_0xfa04('0x96')][_0xfa04('0x116')](db['Condition'],{'as':{'plural':_0xfa04('0x1b6'),'singular':_0xfa04('0x1b7')},'foreignKey':_0xfa04('0x1b8'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x96')][_0xfa04('0x116')](db[_0xfa04('0x82')],{'as':{'plural':_0xfa04('0x1b9'),'singular':'AnyCondition'},'foreignKey':_0xfa04('0x1ba'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x96')][_0xfa04('0x116')](db[_0xfa04('0x7b')],{'as':_0xfa04('0x1a7'),'foreignKey':_0xfa04('0x1bb'),'onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x9c')][_0xfa04('0x116')](db[_0xfa04('0x9f')],{'as':_0xfa04('0x1bc'),'onDelete':'cascade','foreignKey':'CustomReportId','hooks':!![]});db['AnalyticDefaultReport'][_0xfa04('0x116')](db[_0xfa04('0x9f')],{'as':_0xfa04('0x1bc'),'onDelete':_0xfa04('0x110'),'foreignKey':'DefaultReportId'});db[_0xfa04('0x1bd')][_0xfa04('0x116')](db['AnalyticFieldReport'],{'as':_0xfa04('0x1bc'),'onDelete':'cascade','foreignKey':_0xfa04('0x1be')});db[_0xfa04('0x9f')][_0xfa04('0x11f')](db[_0xfa04('0x1bd')],{'foreignKey':_0xfa04('0x1be')});db['SalesforceAccount']['hasMany'](db[_0xfa04('0x1bf')],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db['SalesforceConfiguration']['hasMany'](db['SalesforceField'],{'as':_0xfa04('0x1c2'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1bf')][_0xfa04('0x116')](db[_0xfa04('0xa5')],{'as':'Descriptions','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0x1bf')][_0xfa04('0x116')](db['SalesforceField'],{'as':'Fields','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0x1bf')][_0xfa04('0x11f')](db['SalesforceAccount'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xa5')][_0xfa04('0x116')](db[_0xfa04('0xa5')],{'as':_0xfa04('0x1c6'),'foreignKey':'SubjectId'});db['SalesforceField'][_0xfa04('0x116')](db[_0xfa04('0xa5')],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0xa5')][_0xfa04('0x116')](db[_0xfa04('0xa5')],{'as':'Field','foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xa5')]['belongsTo'](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':_0xfa04('0x1c9')});db[_0xfa04('0xa7')][_0xfa04('0x116')](db['SugarcrmConfiguration'],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xa9')][_0xfa04('0x116')](db[_0xfa04('0xab')],{'as':'Subjects','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c3')});db['SugarcrmConfiguration'][_0xfa04('0x116')](db[_0xfa04('0xab')],{'as':'Descriptions','onDelete':'cascade','foreignKey':_0xfa04('0x1c4')});db['SugarcrmConfiguration'][_0xfa04('0x116')](db['SugarcrmField'],{'as':'Fields','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xa9')][_0xfa04('0x11f')](db['SugarcrmAccount'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xab')][_0xfa04('0x116')](db[_0xfa04('0xab')],{'as':'Subject','foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xab')][_0xfa04('0x116')](db[_0xfa04('0xab')],{'as':_0xfa04('0x1c7'),'foreignKey':'DescriptionId'});db['SugarcrmField'][_0xfa04('0x116')](db[_0xfa04('0xab')],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xab')][_0xfa04('0x11f')](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':_0xfa04('0x1c9')});db[_0xfa04('0x1cb')][_0xfa04('0x116')](db[_0xfa04('0xae')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xae')][_0xfa04('0x116')](db[_0xfa04('0x1cc')],{'as':_0xfa04('0x1c2'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xae')][_0xfa04('0x116')](db[_0xfa04('0x1cc')],{'as':_0xfa04('0x1cd'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0xae')]['hasMany'](db['DeskField'],{'as':'Fields','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xae')][_0xfa04('0x11f')](db[_0xfa04('0x1cb')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xae')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x1ce')});db[_0xfa04('0x1cc')][_0xfa04('0x116')](db[_0xfa04('0x1cc')],{'as':_0xfa04('0x1c6'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1cc')][_0xfa04('0x116')](db[_0xfa04('0x1cc')],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0x1cc')][_0xfa04('0x116')](db[_0xfa04('0x1cc')],{'as':'Field','foreignKey':_0xfa04('0x1c5')});db['DeskField'][_0xfa04('0x11f')](db[_0xfa04('0x1c8')],{'as':'Variable','foreignKey':'VariableId'});db[_0xfa04('0xb0')][_0xfa04('0x116')](db[_0xfa04('0x1cf')],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db['ZohoConfiguration']['hasMany'](db['ZohoField'],{'as':'Subjects','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1cf')][_0xfa04('0x116')](db[_0xfa04('0xb3')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xfa04('0x1cf')][_0xfa04('0x116')](db[_0xfa04('0xb3')],{'as':'Fields','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0x1cf')][_0xfa04('0x11f')](db['ZohoAccount'],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xb3')][_0xfa04('0x116')](db[_0xfa04('0xb3')],{'as':'Subject','foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xb3')]['hasMany'](db[_0xfa04('0xb3')],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db['ZohoField']['hasMany'](db['ZohoField'],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db['ZohoField'][_0xfa04('0x11f')](db[_0xfa04('0x1c8')],{'as':'Variable','foreignKey':_0xfa04('0x1c9')});db[_0xfa04('0xb5')][_0xfa04('0x116')](db['ZendeskConfiguration'],{'as':'Configurations','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xb7')][_0xfa04('0x116')](db[_0xfa04('0x1d0')],{'as':_0xfa04('0x1c2'),'foreignKey':_0xfa04('0x1c3')});db['ZendeskConfiguration']['hasMany'](db[_0xfa04('0x1d0')],{'as':'Descriptions','foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0xb7')]['hasMany'](db[_0xfa04('0x1d0')],{'as':_0xfa04('0x1bc'),'foreignKey':_0xfa04('0x1c5')});db['ZendeskConfiguration'][_0xfa04('0x11f')](db['ZendeskAccount'],{'as':_0xfa04('0x173'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x1d1')});db[_0xfa04('0x1d0')][_0xfa04('0x116')](db[_0xfa04('0x1d0')],{'as':'Subject','foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1d0')]['hasMany'](db['ZendeskField'],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0x1d0')][_0xfa04('0x116')](db[_0xfa04('0x1d0')],{'as':'Field','foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0x1d0')]['belongsTo'](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':_0xfa04('0x1c9')});db[_0xfa04('0x1d2')][_0xfa04('0x116')](db[_0xfa04('0xba')],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xba')][_0xfa04('0x116')](db['FreshdeskField'],{'as':_0xfa04('0x1c2'),'onDelete':'cascade','foreignKey':_0xfa04('0x1c3')});db['FreshdeskConfiguration'][_0xfa04('0x116')](db[_0xfa04('0xbc')],{'as':_0xfa04('0x1cd'),'onDelete':_0xfa04('0x110'),'foreignKey':'DescriptionId'});db[_0xfa04('0xba')]['hasMany'](db[_0xfa04('0xbc')],{'as':_0xfa04('0x1bc'),'onDelete':_0xfa04('0x110'),'foreignKey':'FieldId'});db[_0xfa04('0xba')][_0xfa04('0x11f')](db[_0xfa04('0x1d2')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xba')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x1d3')});db[_0xfa04('0xbc')][_0xfa04('0x116')](db['FreshdeskField'],{'as':_0xfa04('0x1c6'),'foreignKey':'SubjectId'});db['FreshdeskField'][_0xfa04('0x116')](db[_0xfa04('0xbc')],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0xbc')][_0xfa04('0x116')](db[_0xfa04('0xbc')],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db['FreshdeskField']['belongsTo'](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':'VariableId'});db['VtigerAccount']['hasMany'](db['VtigerConfiguration'],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0x1d4')]['hasMany'](db[_0xfa04('0x1d5')],{'as':_0xfa04('0x1c2'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1d4')][_0xfa04('0x116')](db[_0xfa04('0x1d5')],{'as':'Descriptions','foreignKey':_0xfa04('0x1c4')});db[_0xfa04('0x1d4')][_0xfa04('0x116')](db[_0xfa04('0x1d5')],{'as':_0xfa04('0x1bc'),'foreignKey':'FieldId'});db[_0xfa04('0x1d4')][_0xfa04('0x11f')](db[_0xfa04('0xbd')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0x1d5')][_0xfa04('0x116')](db[_0xfa04('0x1d5')],{'as':'Subject','foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0x1d5')][_0xfa04('0x116')](db['VtigerField'],{'as':_0xfa04('0x1c7'),'foreignKey':'DescriptionId'});db[_0xfa04('0x1d5')][_0xfa04('0x116')](db[_0xfa04('0x1d5')],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0x1d5')][_0xfa04('0x11f')](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':'VariableId'});db['ServicenowAccount'][_0xfa04('0x116')](db[_0xfa04('0xc2')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xfa04('0x1c1')});db['ServicenowConfiguration'][_0xfa04('0x116')](db[_0xfa04('0xc4')],{'as':_0xfa04('0x1c2'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xc2')][_0xfa04('0x116')](db[_0xfa04('0xc4')],{'as':_0xfa04('0x1cd'),'foreignKey':'DescriptionId'});db[_0xfa04('0xc2')][_0xfa04('0x116')](db[_0xfa04('0xc4')],{'as':_0xfa04('0x1bc'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xc2')][_0xfa04('0x11f')](db[_0xfa04('0xc1')],{'as':_0xfa04('0x173'),'foreignKey':'AccountId'});db[_0xfa04('0xc4')][_0xfa04('0x116')](db[_0xfa04('0xc4')],{'as':'Subject','foreignKey':'SubjectId'});db[_0xfa04('0xc4')][_0xfa04('0x116')](db[_0xfa04('0xc4')],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db['ServicenowField']['hasMany'](db[_0xfa04('0xc4')],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xc4')][_0xfa04('0x11f')](db[_0xfa04('0x1c8')],{'as':'Variable','foreignKey':'VariableId'});db[_0xfa04('0xc5')]['hasMany'](db['Dynamics365Configuration'],{'as':_0xfa04('0x1c0'),'onDelete':'cascade','foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xc5')][_0xfa04('0x11f')](db[_0xfa04('0x107')],{'as':_0xfa04('0x107'),'foreignKey':_0xfa04('0x162')});db[_0xfa04('0xc7')][_0xfa04('0x116')](db[_0xfa04('0xc8')],{'as':_0xfa04('0x1c2'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xc7')][_0xfa04('0x116')](db['Dynamics365Field'],{'as':_0xfa04('0x1cd'),'onDelete':_0xfa04('0x110'),'foreignKey':'DescriptionId'});db[_0xfa04('0xc7')][_0xfa04('0x116')](db[_0xfa04('0xc8')],{'as':'Fields','onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xc7')]['belongsTo'](db[_0xfa04('0xc5')],{'as':'Account','foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xc8')][_0xfa04('0x116')](db[_0xfa04('0xc8')],{'as':_0xfa04('0x1c6'),'foreignKey':_0xfa04('0x1c3')});db[_0xfa04('0xc8')][_0xfa04('0x116')](db[_0xfa04('0xc8')],{'as':_0xfa04('0x1c7'),'foreignKey':'DescriptionId'});db[_0xfa04('0xc8')][_0xfa04('0x116')](db[_0xfa04('0xc8')],{'as':'Field','foreignKey':'FieldId'});db['Dynamics365Field']['belongsTo'](db[_0xfa04('0x1c8')],{'as':_0xfa04('0x1c8'),'foreignKey':_0xfa04('0x1c9')});db['FreshsalesAccount']['hasMany'](db['FreshsalesConfiguration'],{'as':_0xfa04('0x1c0'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xcc')][_0xfa04('0x116')](db[_0xfa04('0xce')],{'as':'Subjects','foreignKey':'SubjectId'});db[_0xfa04('0xcc')]['hasMany'](db[_0xfa04('0xce')],{'as':_0xfa04('0x1cd'),'foreignKey':'DescriptionId'});db[_0xfa04('0xcc')][_0xfa04('0x116')](db[_0xfa04('0xce')],{'as':'Fields','foreignKey':'FieldId'});db[_0xfa04('0xcc')][_0xfa04('0x11f')](db[_0xfa04('0xca')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1c1')});db[_0xfa04('0xce')][_0xfa04('0x116')](db['FreshsalesField'],{'as':_0xfa04('0x1c6'),'foreignKey':_0xfa04('0x1c3')});db['FreshsalesField'][_0xfa04('0x116')](db['FreshsalesField'],{'as':_0xfa04('0x1c7'),'foreignKey':_0xfa04('0x1c4')});db['FreshsalesField']['hasMany'](db['FreshsalesField'],{'as':_0xfa04('0x1ca'),'foreignKey':_0xfa04('0x1c5')});db[_0xfa04('0xce')][_0xfa04('0x11f')](db['Variable'],{'as':_0xfa04('0x1c8'),'foreignKey':_0xfa04('0x1c9')});db['ChatQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0x60')],{});db[_0xfa04('0xd1')]['belongsTo'](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':'ListId'});db[_0xfa04('0xd1')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':'Contact','foreignKey':_0xfa04('0x160')});db[_0xfa04('0xd1')][_0xfa04('0x11f')](db['ChatInteraction'],{});db[_0xfa04('0xd1')][_0xfa04('0x11f')](db['ChatMessage'],{});db[_0xfa04('0xd1')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{});db[_0xfa04('0xd1')]['belongsTo'](db[_0xfa04('0x68')],{});db['ChatInternalMessage'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x1d6')});db[_0xfa04('0xd3')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'onDelete':_0xfa04('0x110'),'foreignKey':'ToId'});db[_0xfa04('0xd7')][_0xfa04('0x116')](db[_0xfa04('0xd6')],{'foreignKey':_0xfa04('0x1d7'),'onDelete':'cascade'});db[_0xfa04('0xd7')][_0xfa04('0x116')](db[_0xfa04('0xd4')],{'foreignKey':_0xfa04('0x1d7'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db['SmsAccount'],{});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':'List','foreignKey':_0xfa04('0x16d')});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db[_0xfa04('0x54')],{});db[_0xfa04('0xd9')]['belongsTo'](db[_0xfa04('0x55')],{});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{});db[_0xfa04('0xd9')][_0xfa04('0x11f')](db[_0xfa04('0x57')],{});db[_0xfa04('0x1d8')][_0xfa04('0x116')](db[_0xfa04('0xd7')],{'foreignKey':'ProjectId'});db[_0xfa04('0x1d8')][_0xfa04('0x116')](db[_0xfa04('0xd6')],{'foreignKey':_0xfa04('0x1d9')});db[_0xfa04('0x1d8')][_0xfa04('0x116')](db[_0xfa04('0xd4')],{'foreignKey':_0xfa04('0x1d9')});db['Team'][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':'Agents','through':_0xfa04('0x128')});db[_0xfa04('0x127')][_0xfa04('0x121')](db['VoiceQueue'],{'through':_0xfa04('0x109'),'as':_0xfa04('0x1da')});db['Team'][_0xfa04('0x121')](db['MailQueue'],{'through':_0xfa04('0x1db'),'as':_0xfa04('0x132')});db[_0xfa04('0x127')][_0xfa04('0x121')](db['ChatQueue'],{'through':'team_has_chat_queues','as':'ChatQueues'});db[_0xfa04('0x127')][_0xfa04('0x121')](db[_0xfa04('0x4e')],{'through':_0xfa04('0x1dc'),'as':_0xfa04('0x134')});db[_0xfa04('0x127')][_0xfa04('0x121')](db[_0xfa04('0x57')],{'through':_0xfa04('0x1dd'),'as':_0xfa04('0x1de')});db[_0xfa04('0x127')][_0xfa04('0x121')](db[_0xfa04('0x135')],{'through':_0xfa04('0x18f'),'as':'OpenchannelQueues'});db['Team'][_0xfa04('0x121')](db[_0xfa04('0x105')],{'through':_0xfa04('0x1df'),'as':_0xfa04('0x138')});db[_0xfa04('0x127')][_0xfa04('0x121')](db['VoicePrefix'],{'through':'TeamVoicePrefix','as':_0xfa04('0x131')});db[_0xfa04('0xe7')][_0xfa04('0x116')](db[_0xfa04('0x71')],{'as':'Hoppers','foreignKey':_0xfa04('0x1a2')});db[_0xfa04('0xe7')][_0xfa04('0x116')](db[_0xfa04('0x75')],{'as':_0xfa04('0x14c'),'foreignKey':_0xfa04('0x1a2')});db['Campaign'][_0xfa04('0x116')](db[_0xfa04('0x117')],{'as':_0xfa04('0x14d'),'foreignKey':_0xfa04('0x1a2')});db[_0xfa04('0xe7')]['hasMany'](db[_0xfa04('0x73')],{'as':_0xfa04('0x14e'),'foreignKey':_0xfa04('0x1a2')});db[_0xfa04('0xe7')][_0xfa04('0x11f')](db[_0xfa04('0x25')],{'as':_0xfa04('0x25'),'foreignKey':'TrunkId'});db[_0xfa04('0xe7')]['belongsTo'](db[_0xfa04('0x25')],{'as':_0xfa04('0x151'),'foreignKey':'TrunkBackupId'});db['Campaign'][_0xfa04('0x11f')](db[_0xfa04('0x84')],{'as':'Interval','foreignKey':_0xfa04('0x17e')});db['Campaign'][_0xfa04('0x11f')](db[_0xfa04('0x1e0')],{'as':_0xfa04('0x1e0'),'foreignKey':_0xfa04('0x1e1')});db[_0xfa04('0xe7')][_0xfa04('0x121')](db[_0xfa04('0x125')],{'as':'Lists','through':_0xfa04('0x1e2')});db['Campaign'][_0xfa04('0x121')](db[_0xfa04('0x125')],{'as':'BlackLists','through':_0xfa04('0x1e3')});db['Attachment'][_0xfa04('0x11f')](db[_0xfa04('0x67')],{'as':'ChatOfflineMessage','foreignKey':_0xfa04('0x17d')});db[_0xfa04('0xed')][_0xfa04('0x11f')](db[_0xfa04('0x3e')],{});db[_0xfa04('0xed')]['belongsTo'](db[_0xfa04('0x3c')],{});db[_0xfa04('0xed')][_0xfa04('0x11f')](db[_0xfa04('0x39')],{'foreignKey':'FromMailAccountId','as':'FromAccount'});db['MailTransferReport'][_0xfa04('0x11f')](db['User'],{'foreignKey':_0xfa04('0x1e4'),'as':_0xfa04('0x1e5')});db['MailTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':'ToAgent'});db[_0xfa04('0xed')][_0xfa04('0x11f')](db[_0xfa04('0x3a')],{'foreignKey':_0xfa04('0x1e7'),'as':_0xfa04('0x1e8')});db['MailTransferReport'][_0xfa04('0x11f')](db['MailAccount'],{'foreignKey':_0xfa04('0x1e9'),'as':_0xfa04('0x1ea')});db[_0xfa04('0xee')][_0xfa04('0x11f')](db[_0xfa04('0x65')],{});db[_0xfa04('0xee')]['belongsTo'](db[_0xfa04('0x63')],{});db[_0xfa04('0xee')]['belongsTo'](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':_0xfa04('0x1eb')});db['ChatTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e4'),'as':'FromAgent'});db['ChatTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':_0xfa04('0x1ec')});db['ChatTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0x68')],{'foreignKey':_0xfa04('0x1ed'),'as':_0xfa04('0x1e8')});db[_0xfa04('0xee')]['belongsTo'](db[_0xfa04('0x60')],{'foreignKey':'ToChatWebsiteId','as':'ToAccount'});db[_0xfa04('0xf0')][_0xfa04('0x11f')](db[_0xfa04('0x4c')],{});db[_0xfa04('0xf0')]['belongsTo'](db[_0xfa04('0x4a')],{});db[_0xfa04('0xf0')][_0xfa04('0x11f')](db[_0xfa04('0x46')],{'foreignKey':_0xfa04('0x1ee'),'as':'FromAccount'});db[_0xfa04('0xf0')]['belongsTo'](db[_0xfa04('0xf')],{'foreignKey':'FromUserId','as':'FromAgent'});db[_0xfa04('0xf0')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':_0xfa04('0x1ec')});db['FaxTransferReport'][_0xfa04('0x11f')](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':_0xfa04('0x1e8')});db[_0xfa04('0xf0')][_0xfa04('0x11f')](db['FaxAccount'],{'foreignKey':_0xfa04('0x1ef'),'as':_0xfa04('0x1ea')});db[_0xfa04('0x1f0')]['belongsTo'](db[_0xfa04('0x5e')],{});db[_0xfa04('0x1f0')]['belongsTo'](db[_0xfa04('0x5d')],{});db[_0xfa04('0x1f0')][_0xfa04('0x11f')](db['OpenchannelAccount'],{'foreignKey':'FromOpenchannelAccountId','as':_0xfa04('0x1eb')});db[_0xfa04('0x1f0')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e4'),'as':_0xfa04('0x1e5')});db['OpenchannelTransferReport']['belongsTo'](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':'ToAgent'});db['OpenchannelTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0x135')],{'foreignKey':_0xfa04('0x1f1'),'as':_0xfa04('0x1e8')});db[_0xfa04('0x1f0')]['belongsTo'](db[_0xfa04('0x59')],{'foreignKey':_0xfa04('0x1f2'),'as':'ToAccount'});db['SmsTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0x55')],{});db[_0xfa04('0xf2')][_0xfa04('0x11f')](db[_0xfa04('0x54')],{});db[_0xfa04('0xf2')][_0xfa04('0x11f')](db[_0xfa04('0x50')],{'foreignKey':_0xfa04('0x1f3'),'as':'FromAccount'});db[_0xfa04('0xf2')]['belongsTo'](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e4'),'as':_0xfa04('0x1e5')});db['SmsTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':_0xfa04('0x1ec')});db[_0xfa04('0xf2')][_0xfa04('0x11f')](db[_0xfa04('0x57')],{'foreignKey':_0xfa04('0x1f4'),'as':_0xfa04('0x1e8')});db[_0xfa04('0xf2')][_0xfa04('0x11f')](db['SmsAccount'],{'foreignKey':_0xfa04('0x1f5'),'as':_0xfa04('0x1ea')});db[_0xfa04('0x125')][_0xfa04('0x116')](db[_0xfa04('0x168')],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x16d'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x125')][_0xfa04('0x116')](db['CmCustomField'],{'as':_0xfa04('0x1f6'),'foreignKey':_0xfa04('0x16d')});db['CmList'][_0xfa04('0x116')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x199'),'onDelete':_0xfa04('0x110'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x125')][_0xfa04('0x116')](db[_0xfa04('0x75')],{'as':_0xfa04('0x14c'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x125')][_0xfa04('0x116')](db['CmHopperHistory'],{'as':_0xfa04('0x118'),'foreignKey':_0xfa04('0x16d')});db['CmList'][_0xfa04('0x116')](db[_0xfa04('0x77')],{'as':_0xfa04('0x77'),'foreignKey':_0xfa04('0x16d')});db['CmList']['belongsToMany'](db['VoiceQueue'],{'as':'Queues','through':_0xfa04('0x153')});db['CmList'][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':'Agents','through':_0xfa04('0x139')});db[_0xfa04('0x130')][_0xfa04('0x116')](db[_0xfa04('0x13')],{'as':_0xfa04('0x1ab'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0x130')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x1f7')});db[_0xfa04('0x130')][_0xfa04('0x121')](db[_0xfa04('0x127')],{'through':'TeamVoicePrefix','as':'Teams'});db['UserProfile'][_0xfa04('0x116')](db['User'],{'as':'Users','foreignKey':_0xfa04('0x120')});db[_0xfa04('0xf5')]['hasMany'](db[_0xfa04('0xf7')],{'as':_0xfa04('0x1f8'),'foreignKey':_0xfa04('0x120'),'onDelete':_0xfa04('0x110')});db[_0xfa04('0xf7')]['hasMany'](db['UserProfileResource'],{'as':_0xfa04('0x1f9'),'foreignKey':'sectionId','onDelete':_0xfa04('0x110')});db[_0xfa04('0xfa')][_0xfa04('0x116')](db['Disposition'],{'as':_0xfa04('0x169'),'foreignKey':_0xfa04('0x1fa'),'onDelete':'cascade'});db[_0xfa04('0xfa')]['hasMany'](db['CannedAnswer'],{'as':'Answers','foreignKey':_0xfa04('0x1fa')});db[_0xfa04('0xfa')]['hasMany'](db[_0xfa04('0x100')],{'as':'Messages','foreignKey':'WhatsappAccountId'});db['WhatsappAccount']['hasMany'](db['WhatsappInteraction'],{'as':_0xfa04('0x16b')});db[_0xfa04('0xfa')]['hasMany'](db[_0xfa04('0xfc')],{'as':_0xfa04('0x145')});db['WhatsappAccount'][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':'List','foreignKey':_0xfa04('0x16d')});db[_0xfa04('0xfa')][_0xfa04('0x11f')](db['Pause'],{'as':_0xfa04('0x16f'),'foreignKey':_0xfa04('0x170')});db[_0xfa04('0xfa')]['belongsToMany'](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x141')});db['WhatsappApplication']['belongsTo'](db[_0xfa04('0xf')],{'onDelete':'restrict'});db[_0xfa04('0xfc')]['belongsTo'](db['WhatsappQueue'],{'onDelete':_0xfa04('0x163')});db['WhatsappApplication']['belongsTo'](db[_0xfa04('0xfa')],{'onDelete':_0xfa04('0x163')});db[_0xfa04('0xfc')][_0xfa04('0x11f')](db[_0xfa04('0x84')],{'onDelete':'restrict','foreignKey':'IntervalId'});db['WhatsappApplication'][_0xfa04('0x11f')](db[_0xfa04('0x176')],{'onDelete':_0xfa04('0x163'),'foreignKey':_0xfa04('0x17f')});db[_0xfa04('0xfe')][_0xfa04('0x116')](db['WhatsappMessage'],{'as':_0xfa04('0x159'),'onDelete':'cascade','foreignKey':_0xfa04('0x1fb')});db[_0xfa04('0xfe')][_0xfa04('0x11f')](db[_0xfa04('0xfa')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1fa')});db[_0xfa04('0xfe')][_0xfa04('0x11f')](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db['WhatsappInteraction'][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':_0xfa04('0x174'),'foreignKey':_0xfa04('0x112')});db[_0xfa04('0xfe')][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x1b2'),'as':_0xfa04('0x175')});db['WhatsappInteraction'][_0xfa04('0x121')](db[_0xfa04('0x176')],{'through':_0xfa04('0x1b2'),'as':_0xfa04('0x178')});db[_0xfa04('0xfe')][_0xfa04('0x121')](db[_0xfa04('0xf')],{'as':_0xfa04('0x179'),'through':_0xfa04('0x12f'),'foreignKey':'WhatsappInteractionId'});db['WhatsappMessage']['belongsTo'](db['User'],{'as':_0xfa04('0xf')});db[_0xfa04('0x100')]['belongsTo'](db['CmContact'],{'onDelete':'cascade','as':_0xfa04('0x15f')});db[_0xfa04('0x100')]['belongsTo'](db[_0xfa04('0xfe')],{'onDelete':_0xfa04('0x110'),'as':_0xfa04('0x17b'),'foreignKey':_0xfa04('0x1fb')});db[_0xfa04('0x100')][_0xfa04('0x11f')](db[_0xfa04('0xfa')],{'as':_0xfa04('0x173'),'foreignKey':_0xfa04('0x1fa')});db['WhatsappQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0xfa')],{});db['WhatsappQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0x125')],{'as':_0xfa04('0x16c'),'foreignKey':_0xfa04('0x16d')});db[_0xfa04('0x101')]['belongsTo'](db[_0xfa04('0x6f')],{'as':_0xfa04('0x15f'),'foreignKey':_0xfa04('0x160')});db['WhatsappQueueReport'][_0xfa04('0x11f')](db[_0xfa04('0xfe')],{});db[_0xfa04('0x101')]['belongsTo'](db['WhatsappQueue'],{});db['WhatsappQueueReport']['belongsTo'](db['WhatsappMessage'],{});db['WhatsappQueueReport'][_0xfa04('0x11f')](db['User'],{});db['WhatsappTransferReport'][_0xfa04('0x11f')](db[_0xfa04('0x100')],{});db[_0xfa04('0x103')][_0xfa04('0x11f')](db['WhatsappInteraction'],{});db[_0xfa04('0x103')]['belongsTo'](db['WhatsappAccount'],{'foreignKey':_0xfa04('0x1fc'),'as':'FromAccount'});db[_0xfa04('0x103')][_0xfa04('0x11f')](db['WhatsappAccount'],{'foreignKey':_0xfa04('0x1fd'),'as':'ToAccount'});db['WhatsappTransferReport'][_0xfa04('0x11f')](db['WhatsappQueue'],{'foreignKey':_0xfa04('0x1fe'),'as':_0xfa04('0x1e8')});db[_0xfa04('0x103')][_0xfa04('0x11f')](db['User'],{'foreignKey':'FromUserId','as':'FromAgent'});db['WhatsappTransferReport']['belongsTo'](db[_0xfa04('0xf')],{'foreignKey':_0xfa04('0x1e6'),'as':'ToAgent'});db[_0xfa04('0x105')]['belongsToMany'](db[_0xfa04('0xf')],{'as':_0xfa04('0x154'),'through':_0xfa04('0x35'),'foreignKey':_0xfa04('0x1ff')});db[_0xfa04('0x105')][_0xfa04('0x121')](db['Team'],{'through':_0xfa04('0x1df'),'as':_0xfa04('0x155')});db[_0xfa04('0x10e')][_0xfa04('0x11f')](db[_0xfa04('0xf')],{'as':_0xfa04('0x200'),'foreignKey':'UserId','onDelete':_0xfa04('0x110'),'hooks':!![]});db[_0xfa04('0x107')][_0xfa04('0x165')](db[_0xfa04('0xc5')],{'as':'Dynamics365Account','onDelete':_0xfa04('0x163')});db[_0xfa04('0x107')][_0xfa04('0x165')](db[_0xfa04('0x37')],{'as':_0xfa04('0x166'),'onDelete':_0xfa04('0x163')});db[_0xfa04('0x107')][_0xfa04('0x165')](db[_0xfa04('0x164')],{'as':_0xfa04('0x167'),'onDelete':_0xfa04('0x163')});module[_0xfa04('0x201')]={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0xa76e=['../api/analyticMetric/analyticMetric.model','AnalyticFieldReport','AnalyticTreeReport','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','SalesforceConfiguration','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmField/intSugarcrmField.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','DeskField','../api/intDeskField/intDeskField.model','ZohoAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','VtigerConfiguration','../api/intVtigerConfiguration/intVtigerConfiguration.model','VtigerField','../api/intVtigerField/intVtigerField.model','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','Dynamics365Account','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','FreshsalesConfiguration','../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','../api/integration/integration.model','Network','../api/network/network.model','ChatQueueReport','../api/chatQueueReport/chatQueueReport.model','ChatInternalMessage','../api/chatInternalMessage/chatInternalMessage.model','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','SquareOdbc','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','../api/squareMessage/squareMessage.model','Team','../api/team/team.model','License','Campaign','Attachment','Plugin','../api/plugin/plugin.model','MailTransferReport','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','../api/cmList/cmList.model','VoicePrefix','UserProfile','../api/userProfile/userProfile.model','../api/userProfileSection/userProfileSection.model','UserProfileResource','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','WhatsappMessage','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','../api/teamVoicePrefix/teamVoicePrefix.model','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','cascade','UserId','userSetting','Recordings','hasMany','VoiceQueuesRt','HopperFinals','HopperHistory','OpenchannelInteractions','ChatInteractions','SmsInteractions','FaxInteraction','FaxInteractions','MailInteractions','UserNotifications','belongsTo','userProfileId','belongsToMany','Groups','Contacts','cm_user_has_contacts','Lists','cm_user_has_lists','MailInteraction','user_has_mail_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','user_has_whatsapp_interactions','VoicePrefixes','ChatQueues','FaxQueues','SmsQueue','SmsQueues','OpenchannelQueues','WhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccounts','user_has_fax_accounts','MailAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','SpiedAgents','Applications','VoiceMusicOnHold','Sounds','moh_has_sounds','Members','VoiceQueueId','Hoppers','HopperHistories','CmHopperBlack','HopperBlacks','JscriptySessionReport','JscriptySessions','Trunk','TrunkId','TrunkBackup','Interval','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','VoiceAgentReport','AgentReports','Contact','ContactId','restrict','MailAccountId','CloudProviderId','Imap','Smtp','Disposition','Answers','Interactions','List','ListId','TemplateId','team_has_mail_queues','MailInteractionId','mail_interaction_has_tags','Tags','Tag','Users','Attachments','Interaction','Account','ChatWebsiteId','ChatOfflineMessage','ChatOfflineMessageId','TagId','DashboardItem','Items','Dispositions','FaxAccountId','Exntensions','FaxInteractionId','Owner','fax_interaction_has_tags','ThroughTags','AttachmentId','team_has_fax_queues','Teams','SmsAccountId','SmsInteractionId','sms_interaction_has_tags','SmsQueueId','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','team_has_openchannel_queues','ProactiveActions','ChatMessage','Agent','Website','ChatInteractionId','chat_interaction_has_tags','user_has_chat_interactions','team_has_chat_queues','ChatGroupId','chat_group_has_users','CompanyId','Phones','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Queue','CampaignId','OwnerId','OneAll','AutomationAllId','Any','OneAny','AutomationAnyId','Action','Actions','AutomationId','ParentId','Extensions','MailApplications','ChatApplications','FaxApplications','SmsApplications','AnalyticDefaultReport','DefaultReportId','CustomReportId','Mohs','ItemType','ItemTypeId','Hopper','Trigger','AllConditions','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','TriggerId','Fields','MetricId','Configurations','AccountId','SalesforceField','Subjects','Descriptions','DescriptionId','FieldId','Subject','SubjectId','Description','Field','VariableId','SugarcrmField','DeskAccount','int_desk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','FromId','ToId','SessionId','ProjectId','user_has_teams','VoiceQueues','team_has_whatsapp_queues','WhatsappQueues','campaigns_has_cm_lists','FromAccount','FromUserId','FromAgent','ToUserId','ToMailQueueId','ToQueue','ToMailAccountId','ToAgent','ToChatWebsiteId','ToAccount','FromFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CmCustomField','CustomFields','Queues','UserProfileSection','WhatsappAccountId','WhatsappApplication','WhatsappInteractionId','whatsapp_interaction_has_tags','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','exports','../config/environment','sequelize','lodash','jstz','motion2','xcall','xC@LL1234','127.0.0.1','mysql','utf8_general_ci','defaultsDeep','utf8','database','sequelizeHistory','username','password','options','User','../api/user/user.model','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','import','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceQueue','VoiceRecording','../api/voiceRecording/voiceRecording.model','ScreenRecording','../api/screenRecording/screenRecording.model','VoiceMail','../api/voiceMail/voiceMail.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','../api/trunk/trunk.model','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','../api/userMailQueue/userMailQueue.model','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','MailServerIn','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','../api/mailInteraction/mailInteraction.model','MailMessage','../api/mailMessage/mailMessage.model','MailApplication','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboardItem/dashboardItem.model','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','../api/smsInteraction/smsInteraction.model','SmsMessage','../api/smsMessage/smsMessage.model','../api/smsQueue/smsQueue.model','OpenchannelAccount','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','OpenchannelQueue','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','../api/chatWebsite/chatWebsite.model','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','../api/chatInteraction/chatInteraction.model','../api/chatMessage/chatMessage.model','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','../api/chatGroup/chatGroup.model','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopper','../api/cmHopper/cmHopper.model','../api/cmHopperBlack/cmHopperBlack.model','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/cmCustomField/cmCustomField.model','../api/action/action.model','Automation','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','ContactItemType','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','Template','../api/template/template.model','../api/trigger/trigger.model','Variable','Integration','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','../api/analyticExtractedReport/analyticExtractedReport.model','AnalyticMetric'];(function(_0x246148,_0x1358ee){var _0x453d94=function(_0x59920e){while(--_0x59920e){_0x246148['push'](_0x246148['shift']());}};_0x453d94(++_0x1358ee);}(_0xa76e,0x165));var _0xea76=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0xa76e[_0x4b055c];return _0x4b62bb;};'use strict';var config=require(_0xea76('0x0'));var Sequelize=require(_0xea76('0x1'));var _=require(_0xea76('0x2'));var jstz=require(_0xea76('0x3'));var timezone=jstz['determine']();config[_0xea76('0x1')]=_['defaultsDeep'](config[_0xea76('0x1')],{'database':_0xea76('0x4'),'username':_0xea76('0x5'),'password':_0xea76('0x6'),'options':{'host':_0xea76('0x7'),'port':0xcea,'dialect':_0xea76('0x8'),'dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':'utf8','collate':_0xea76('0x9')}}});config['sequelizeHistory']=_[_0xea76('0xa')](config['sequelizeHistory'],{'database':_0xea76('0x4'),'username':'xcall','password':_0xea76('0x6'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone['name'](),'define':{'charset':_0xea76('0xb'),'collate':'utf8_general_ci'}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea76('0x1')][_0xea76('0xc')],config[_0xea76('0x1')]['username'],config[_0xea76('0x1')]['password'],config[_0xea76('0x1')]['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xea76('0xd')]['database'],config[_0xea76('0xd')][_0xea76('0xe')],config['sequelizeHistory'][_0xea76('0xf')],config['sequelizeHistory'][_0xea76('0x10')])};db[_0xea76('0x11')]=db[_0xea76('0x1')]['import'](_0xea76('0x12'));db['VoiceChanSpy']=db[_0xea76('0x1')]['import'](_0xea76('0x13'));db[_0xea76('0x14')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x16'));db[_0xea76('0x17')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x18'));db['VoiceMusicOnHold']=db['sequelize']['import']('../api/voiceMusicOnHold/voiceMusicOnHold.model');db[_0xea76('0x19')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/voiceQueue/voiceQueue.model');db[_0xea76('0x1a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x1b'));db[_0xea76('0x1c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x1d'));db[_0xea76('0x1e')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x1f'));db[_0xea76('0x20')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x21'));db[_0xea76('0x22')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x23'));db[_0xea76('0x24')]=db[_0xea76('0x1')]['import'](_0xea76('0x25'));db['VoiceAgentReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x26'));db[_0xea76('0x27')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x28'));db[_0xea76('0x29')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2a'));db['Trunk']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2b'));db[_0xea76('0x2c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x2d'));db[_0xea76('0x2e')]=db[_0xea76('0x1')]['import'](_0xea76('0x2f'));db[_0xea76('0x30')]=db[_0xea76('0x1')]['import'](_0xea76('0x31'));db[_0xea76('0x32')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x33'));db[_0xea76('0x34')]=db['sequelize']['import'](_0xea76('0x35'));db[_0xea76('0x36')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x37'));db[_0xea76('0x38')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x39'));db[_0xea76('0x3a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x3b'));db[_0xea76('0x3c')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/userWhatsappQueue/userWhatsappQueue.model');db[_0xea76('0x3d')]=db['sequelize'][_0xea76('0x15')]('../api/mailServerIn/mailServerIn.model');db[_0xea76('0x3e')]=db['sequelize']['import'](_0xea76('0x3f'));db[_0xea76('0x40')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x41'));db[_0xea76('0x42')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x43'));db[_0xea76('0x44')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x45'));db['MailInteraction']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x46'));db[_0xea76('0x47')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x48'));db[_0xea76('0x49')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/mailApplication/mailApplication.model');db[_0xea76('0x4a')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x4b'));db[_0xea76('0x4c')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/dashboard/dashboard.model');db['DashboardItem']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x4d'));db[_0xea76('0x4e')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x4f'));db[_0xea76('0x50')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x51'));db['FaxInteraction']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x52'));db[_0xea76('0x53')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x54'));db[_0xea76('0x55')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x56'));db[_0xea76('0x57')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/faxQueueReport/faxQueueReport.model');db[_0xea76('0x58')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x59'));db[_0xea76('0x5a')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x5b'));db[_0xea76('0x5c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x5d'));db[_0xea76('0x5e')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x5f'));db['SmsQueue']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x60'));db[_0xea76('0x61')]=db['sequelize'][_0xea76('0x15')]('../api/openchannelAccount/openchannelAccount.model');db[_0xea76('0x62')]=db['sequelize']['import'](_0xea76('0x63'));db[_0xea76('0x64')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x65'));db[_0xea76('0x66')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/openchannelMessage/openchannelMessage.model');db[_0xea76('0x67')]=db[_0xea76('0x1')]['import'](_0xea76('0x68'));db[_0xea76('0x69')]=db['sequelize']['import'](_0xea76('0x6a'));db[_0xea76('0x6b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x6c'));db[_0xea76('0x6d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x6e'));db[_0xea76('0x6f')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x70'));db['ChatMessage']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x71'));db['ChatOfflineMessage']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x72'));db[_0xea76('0x73')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x74'));db[_0xea76('0x75')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x76'));db[_0xea76('0x77')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x78'));db[_0xea76('0x79')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x7a'));db[_0xea76('0x7b')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/cmContact/cmContact.model');db[_0xea76('0x7c')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x7d'));db['CmHopperBlack']=db['sequelize'][_0xea76('0x15')](_0xea76('0x7e'));db[_0xea76('0x7f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x80'));db[_0xea76('0x81')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x82'));db[_0xea76('0x83')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/reportAgentPreview/reportAgentPreview.model');db['CmCustomField']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x84'));db['Action']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x85'));db[_0xea76('0x86')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x87'));db[_0xea76('0x88')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x89'));db['Disposition']=db[_0xea76('0x1')]['import'](_0xea76('0x8a'));db[_0xea76('0x8b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x8c'));db['Interval']=db['sequelize'][_0xea76('0x15')]('../api/interval/interval.model');db[_0xea76('0x8d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x8e'));db[_0xea76('0x8f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x90'));db[_0xea76('0x91')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x92'));db[_0xea76('0x93')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x94'));db[_0xea76('0x95')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/sound/sound.model');db['Tag']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/tag/tag.model');db[_0xea76('0x96')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/contactItemType/contactItemType.model');db[_0xea76('0x97')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x98'));db['CmHopperAdditionalPhone']=db[_0xea76('0x1')]['import']('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0xea76('0x99')]=db[_0xea76('0x1')]['import'](_0xea76('0x9a'));db['Trigger']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x9b'));db[_0xea76('0x9c')]=db['sequelize'][_0xea76('0x15')]('../api/variable/variable.model');db[_0xea76('0x9d')]=db['sequelize'][_0xea76('0x15')]('../api/integration/integration.model');db[_0xea76('0x9e')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x9f'));db[_0xea76('0xa0')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xa1'));db['AnalyticDefaultReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa2'));db[_0xea76('0xa3')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa4'));db[_0xea76('0xa5')]=db[_0xea76('0x1')]['import'](_0xea76('0xa6'));db[_0xea76('0xa7')]=db[_0xea76('0x1')]['import']('../api/analyticFieldReport/analyticFieldReport.model');db[_0xea76('0xa8')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xa9'));db[_0xea76('0xaa')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xab'));db[_0xea76('0xac')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xad'));db['SalesforceField']=db[_0xea76('0x1')]['import'](_0xea76('0xae'));db[_0xea76('0xaf')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xb0'));db[_0xea76('0xb1')]=db[_0xea76('0x1')]['import']('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db['SugarcrmField']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb2'));db['DeskAccount']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intDeskAccount/intDeskAccount.model');db[_0xea76('0xb3')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb4'));db[_0xea76('0xb5')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xb6'));db[_0xea76('0xb7')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xb8'));db[_0xea76('0xb9')]=db[_0xea76('0x1')]['import'](_0xea76('0xba'));db[_0xea76('0xbb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xbc'));db[_0xea76('0xbd')]=db['sequelize'][_0xea76('0x15')]('../api/intZendeskAccount/intZendeskAccount.model');db[_0xea76('0xbe')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xbf'));db[_0xea76('0xc0')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intZendeskField/intZendeskField.model');db[_0xea76('0xc1')]=db[_0xea76('0x1')]['import'](_0xea76('0xc2'));db['FreshdeskConfiguration']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc3'));db[_0xea76('0xc4')]=db[_0xea76('0x1')]['import'](_0xea76('0xc5'));db[_0xea76('0xc6')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc7'));db[_0xea76('0xc8')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xc9'));db[_0xea76('0xca')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcb'));db[_0xea76('0xcc')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcd'));db[_0xea76('0xce')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xcf'));db[_0xea76('0xd0')]=db['sequelize'][_0xea76('0x15')]('../api/intServicenowField/intServicenowField.model');db[_0xea76('0xd1')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intDynamics365Account/intDynamics365Account.model');db[_0xea76('0xd2')]=db[_0xea76('0x1')]['import'](_0xea76('0xd3'));db[_0xea76('0xd4')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xd5'));db[_0xea76('0xd6')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/intFreshsalesAccount/intFreshsalesAccount.model');db[_0xea76('0xd7')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xd8'));db[_0xea76('0xd9')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xda'));db[_0xea76('0x9d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xdb'));db[_0xea76('0xdc')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xdd'));db[_0xea76('0xde')]=db['sequelize']['import'](_0xea76('0xdf'));db[_0xea76('0xe0')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe1'));db[_0xea76('0xe2')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe3'));db['JscriptyQuestionReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe4'));db['JscriptySessionReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xe5'));db[_0xea76('0xe6')]=db[_0xea76('0x1')]['import'](_0xea76('0xe7'));db['SquareReport']=db['sequelize'][_0xea76('0x15')](_0xea76('0xe8'));db[_0xea76('0xe9')]=db['sequelize'][_0xea76('0x15')](_0xea76('0xea'));db[_0xea76('0xeb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xec'));db[_0xea76('0xed')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/setting/setting.model');db[_0xea76('0xee')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xef'));db[_0xea76('0xf0')]=db[_0xea76('0x1')]['import'](_0xea76('0xf1'));db[_0xea76('0xf2')]=db[_0xea76('0x1')]['import'](_0xea76('0xf3'));db[_0xea76('0xf4')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xf5'));db[_0xea76('0xf6')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xf7'));db[_0xea76('0xf8')]=db[_0xea76('0x1')]['import']('../api/license/license.model');db[_0xea76('0xf9')]=db[_0xea76('0x1')]['import']('../api/campaign/campaign.model');db['Migration']=db[_0xea76('0x1')]['import']('../api/migration/migration.model');db[_0xea76('0xfa')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/attachment/attachment.model');db[_0xea76('0xfb')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xfc'));db[_0xea76('0xfd')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0xfe'));db[_0xea76('0xff')]=db['sequelize'][_0xea76('0x15')]('../api/chatTransferReport/chatTransferReport.model');db[_0xea76('0x100')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x101'));db['OpenchannelTransferReport']=db[_0xea76('0x1')][_0xea76('0x15')]('../api/openchannelTransferReport/openchannelTransferReport.model');db[_0xea76('0x102')]=db[_0xea76('0x1')]['import'](_0xea76('0x103'));db[_0xea76('0x104')]=db[_0xea76('0x1')]['import'](_0xea76('0x105'));db[_0xea76('0x106')]=db[_0xea76('0x1')]['import']('../api/voicePrefix/voicePrefix.model');db[_0xea76('0x107')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x108'));db['UserProfileSection']=db[_0xea76('0x1')]['import'](_0xea76('0x109'));db[_0xea76('0x10a')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/userProfileResource/userProfileResource.model');db[_0xea76('0x10b')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10c'));db[_0xea76('0x10d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10e'));db['WhatsappApplication']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x10f'));db[_0xea76('0x110')]=db['sequelize']['import'](_0xea76('0x111'));db[_0xea76('0x112')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x113'));db[_0xea76('0x114')]=db[_0xea76('0x1')][_0xea76('0x15')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x115'));db['WhatsappQueue']=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x116'));db[_0xea76('0x117')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x118'));db[_0xea76('0x119')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x11a'));db[_0xea76('0x11b')]=db['sequelize'][_0xea76('0x15')](_0xea76('0x11c'));db[_0xea76('0x11d')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x11e'));db[_0xea76('0x11f')]=db[_0xea76('0x1')][_0xea76('0x15')](_0xea76('0x120'));db['User'][_0xea76('0x121')](db[_0xea76('0x1e')],{'as':'VoiceMail','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x121')](db['UserSetting'],{'as':_0xea76('0x124'),'onDelete':_0xea76('0x122'),'foreignKey':'UserId'});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x1a')],{'as':_0xea76('0x125'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x2e')],{'as':_0xea76('0x127'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x17')],{'as':'Extensions','onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x123')});db['User']['hasMany'](db[_0xea76('0x81')],{'as':_0xea76('0x129'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':_0xea76('0x83'),'foreignKey':'UserId'});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x64')],{'as':_0xea76('0x12a'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x6f')],{'as':_0xea76('0x12b'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')]['hasMany'](db[_0xea76('0x5c')],{'as':_0xea76('0x12c'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x12d')],{'as':_0xea76('0x12e'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db['MailInteraction'],{'as':_0xea76('0x12f'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x11')][_0xea76('0x126')](db[_0xea76('0x110')],{'as':'WhatsappInteractions','foreignKey':_0xea76('0x123')});db['User']['hasMany'](db[_0xea76('0x10b')],{'as':_0xea76('0x130'),'foreignKey':'SenderId'});db[_0xea76('0x11')][_0xea76('0x131')](db[_0xea76('0x107')],{'as':_0xea76('0x107'),'foreignKey':_0xea76('0x132')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x75')],{'as':_0xea76('0x134'),'through':'chat_group_has_users'});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x7b')],{'as':_0xea76('0x135'),'through':_0xea76('0x136')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x138')});db[_0xea76('0x11')][_0xea76('0x133')](db['Team'],{'through':'user_has_teams'});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x139')],{'as':_0xea76('0x12f'),'through':_0xea76('0x13a')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x6f')],{'as':_0xea76('0x12b'),'through':'user_has_chat_interactions'});db[_0xea76('0x11')][_0xea76('0x133')](db['FaxInteraction'],{'as':'FaxInteractions','through':_0xea76('0x13b')});db[_0xea76('0x11')][_0xea76('0x133')](db['SmsInteraction'],{'as':_0xea76('0x12c'),'through':_0xea76('0x13c')});db['User'][_0xea76('0x133')](db[_0xea76('0x64')],{'as':_0xea76('0x12a'),'through':'user_has_openchannel_interactions'});db['User']['belongsToMany'](db[_0xea76('0x110')],{'as':_0xea76('0x13d'),'through':_0xea76('0x13e')});db[_0xea76('0x11')][_0xea76('0x133')](db['VoiceQueue'],{'as':'VoiceQueues','through':'UserVoiceQueue','required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x106')],{'as':_0xea76('0x13f'),'through':_0xea76('0x11d'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x42')],{'as':'MailQueues','through':_0xea76('0x34'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db['ChatQueue'],{'as':_0xea76('0x140'),'through':_0xea76('0x32'),'required':![],'hooks':!![]});db['User']['belongsToMany'](db[_0xea76('0x55')],{'as':_0xea76('0x141'),'through':_0xea76('0x36'),'required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x142')],{'as':_0xea76('0x143'),'through':_0xea76('0x38'),'required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x67')],{'as':_0xea76('0x144'),'through':'UserOpenchannelQueue','required':![]});db[_0xea76('0x11')]['belongsToMany'](db[_0xea76('0x145')],{'as':'WhatsappQueues','through':_0xea76('0x3c'),'required':![]});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x104')],{'through':_0xea76('0x138')});db['User'][_0xea76('0x133')](db[_0xea76('0x69')],{'as':_0xea76('0x146'),'through':_0xea76('0x147')});db[_0xea76('0x11')][_0xea76('0x133')](db['FaxAccount'],{'as':_0xea76('0x148'),'through':_0xea76('0x149')});db['User'][_0xea76('0x133')](db[_0xea76('0x40')],{'as':_0xea76('0x14a'),'through':'user_has_mail_accounts'});db['User'][_0xea76('0x133')](db[_0xea76('0x61')],{'as':'OpenchannelAccounts','through':_0xea76('0x14b')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x58')],{'as':_0xea76('0x14c'),'through':_0xea76('0x14d')});db[_0xea76('0x11')][_0xea76('0x133')](db[_0xea76('0x10d')],{'as':_0xea76('0x14e'),'through':_0xea76('0x14f')});db['VoiceChanSpy'][_0xea76('0x126')](db[_0xea76('0x17')],{'as':_0xea76('0x150'),'onDelete':'cascade','foreignKey':'ChanSpyId'});db[_0xea76('0x14')]['hasMany'](db[_0xea76('0x17')],{'onDelete':'cascade'});db[_0xea76('0x17')]['hasMany'](db[_0xea76('0x17')],{'as':_0xea76('0x151'),'onDelete':_0xea76('0x122')});db[_0xea76('0x152')]['belongsToMany'](db['Sound'],{'as':_0xea76('0x153'),'through':_0xea76('0x154')});db['VoiceQueue'][_0xea76('0x126')](db['UserVoiceQueueRt'],{'as':_0xea76('0x155'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')]['hasMany'](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':'VoiceQueueId'});db[_0xea76('0x19')]['hasMany'](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x81')],{'as':_0xea76('0x158'),'foreignKey':'VoiceQueueId'});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':_0xea76('0x83'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x159')],{'as':_0xea76('0x15a'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x126')](db[_0xea76('0x15b')],{'as':_0xea76('0x15c'),'foreignKey':_0xea76('0x156')});db[_0xea76('0x19')][_0xea76('0x131')](db['Trunk'],{'as':_0xea76('0x15d'),'foreignKey':_0xea76('0x15e')});db['VoiceQueue'][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':_0xea76('0x15f'),'foreignKey':'TrunkBackupId'});db[_0xea76('0x19')][_0xea76('0x131')](db[_0xea76('0x160')],{'as':_0xea76('0x160'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x19')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x19')]['belongsToMany'](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x164')});db[_0xea76('0x19')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x30')});db['VoiceQueue'][_0xea76('0x133')](db[_0xea76('0xf6')],{'as':'Teams','through':_0xea76('0x119')});db['VoiceQueue'][_0xea76('0x133')](db['CmList'],{'as':_0xea76('0x166'),'through':_0xea76('0x167')});db['VoiceRecording'][_0xea76('0x131')](db['User'],{'as':'User','foreignKey':_0xea76('0x123')});db[_0xea76('0x1c')]['belongsTo'](db['User'],{'as':_0xea76('0x11'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x1e')][_0xea76('0x126')](db[_0xea76('0x20')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x169'),'sourceKey':_0xea76('0x16a')});db[_0xea76('0x20')][_0xea76('0x131')](db[_0xea76('0x1e')],{'foreignKey':_0xea76('0x169'),'targetKey':_0xea76('0x16a')});db[_0xea76('0x22')]['hasMany'](db[_0xea76('0x27')],{'as':_0xea76('0x16b'),'foreignKey':_0xea76('0x16c'),'constraints':![]});db['VoiceCallReport'][_0xea76('0x126')](db[_0xea76('0x16d')],{'as':_0xea76('0x16e'),'foreignKey':_0xea76('0x16c'),'constraints':![]});db[_0xea76('0x22')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x11'),'foreignKey':_0xea76('0x123')});db['VoiceCallReport'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x3d')][_0xea76('0x131')](db['MailAccount'],{'as':_0xea76('0x40'),'foreignKey':'MailAccountId'});db[_0xea76('0x3d')]['belongsTo'](db[_0xea76('0x117')],{'as':_0xea76('0x117'),'foreignKey':'CloudProviderId','onDelete':_0xea76('0x171')});db[_0xea76('0x3e')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':_0xea76('0x40'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x3e')][_0xea76('0x131')](db[_0xea76('0x117')],{'as':_0xea76('0x117'),'foreignKey':_0xea76('0x173'),'onDelete':_0xea76('0x171')});db[_0xea76('0x40')][_0xea76('0x121')](db[_0xea76('0x3d')],{'as':_0xea76('0x174'),'onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x121')](db[_0xea76('0x3e')],{'as':_0xea76('0x175'),'onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':'MailAccountId','onDelete':_0xea76('0x122')});db[_0xea76('0x40')][_0xea76('0x126')](db['CannedAnswer'],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x40')][_0xea76('0x126')](db['MailMessage'],{'as':'Messages','foreignKey':_0xea76('0x172')});db[_0xea76('0x40')]['hasMany'](db['MailInteraction'],{'as':_0xea76('0x178')});db[_0xea76('0x40')][_0xea76('0x126')](db[_0xea76('0x49')],{'as':'Applications'});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x99')],{'as':_0xea76('0x99'),'foreignKey':_0xea76('0x17b')});db[_0xea76('0x40')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['MailAccount'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':'user_has_mail_accounts'});db['MailQueue'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x34')});db[_0xea76('0x42')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x17c'),'as':'Teams'});db['MailInteraction'][_0xea76('0x126')](db[_0xea76('0x47')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x17d')});db[_0xea76('0x139')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':'Account','foreignKey':_0xea76('0x172')});db['MailInteraction'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x139')]['belongsTo'](db[_0xea76('0x11')],{'as':'Owner','foreignKey':_0xea76('0x123')});db[_0xea76('0x139')][_0xea76('0x133')](db['Tag'],{'through':_0xea76('0x17e'),'as':_0xea76('0x17f')});db['MailInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x17e'),'as':'ThroughTags'});db[_0xea76('0x139')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x13a'),'foreignKey':'MailInteractionId'});db[_0xea76('0x47')][_0xea76('0x126')](db['Attachment'],{'as':_0xea76('0x182'),'onDelete':_0xea76('0x122')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x11')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db['MailMessage'][_0xea76('0x131')](db[_0xea76('0x139')],{'as':_0xea76('0x183'),'foreignKey':_0xea76('0x17d')});db[_0xea76('0x47')][_0xea76('0x131')](db['MailAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x172')});db[_0xea76('0x47')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':'ChatWebsite','foreignKey':_0xea76('0x185')});db[_0xea76('0x47')]['belongsTo'](db[_0xea76('0x186')],{'as':_0xea76('0x186'),'foreignKey':_0xea76('0x187')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x42')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x40')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x160')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x49')][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db['MailQueueReport'][_0xea76('0x131')](db[_0xea76('0x40')],{});db[_0xea76('0x4a')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x4a')]['belongsTo'](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x4a')][_0xea76('0x131')](db[_0xea76('0x139')],{});db['MailQueueReport'][_0xea76('0x131')](db[_0xea76('0x47')],{});db[_0xea76('0x4a')][_0xea76('0x131')](db['User'],{});db[_0xea76('0x4a')][_0xea76('0x131')](db['MailQueue'],{});db[_0xea76('0x4c')][_0xea76('0x126')](db[_0xea76('0x189')],{'as':_0xea76('0x18a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':'FaxAccountId','onDelete':'cascade'});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x18c')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x12d')],{'as':'Interactions'});db['FaxAccount'][_0xea76('0x126')](db[_0xea76('0x50')],{'as':_0xea76('0x151')});db[_0xea76('0x4e')]['hasMany'](db[_0xea76('0x17')],{'as':_0xea76('0x18d'),'onDelete':_0xea76('0x122')});db[_0xea76('0x4e')][_0xea76('0x126')](db[_0xea76('0x53')],{'as':'Messages'});db[_0xea76('0x4e')][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':_0xea76('0x15d')});db[_0xea76('0x4e')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x4e')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x4e')]['belongsToMany'](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x149')});db['FaxApplication'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x55')],{'onDelete':'restrict'});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x4e')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x50')][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':'TagId'});db[_0xea76('0x12d')]['hasMany'](db['FaxMessage'],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x18e')});db['FaxInteraction'][_0xea76('0x131')](db[_0xea76('0x4e')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x18c')});db['FaxInteraction']['belongsTo'](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x12d')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x18f'),'foreignKey':'UserId'});db[_0xea76('0x12d')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x190'),'as':_0xea76('0x17f')});db[_0xea76('0x12d')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':'fax_interaction_has_tags','as':_0xea76('0x191')});db[_0xea76('0x12d')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x181'),'through':_0xea76('0x13b'),'foreignKey':_0xea76('0x18e')});db[_0xea76('0x53')]['belongsTo'](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x11')});db[_0xea76('0x53')][_0xea76('0x131')](db['FaxInteraction'],{'as':_0xea76('0x183'),'foreignKey':_0xea76('0x18e')});db[_0xea76('0x53')]['belongsTo'](db[_0xea76('0x7b')],{'onDelete':'cascade','as':'Contact'});db['FaxMessage']['belongsTo'](db['Attachment'],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x53')][_0xea76('0x131')](db[_0xea76('0x4e')],{'as':_0xea76('0x184'),'foreignKey':'FaxAccountId'});db[_0xea76('0x55')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x36')});db[_0xea76('0x55')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x193'),'as':_0xea76('0x194')});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x4e')],{});db[_0xea76('0x57')]['belongsTo'](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':'ContactId'});db[_0xea76('0x57')]['belongsTo'](db[_0xea76('0x12d')],{});db[_0xea76('0x57')][_0xea76('0x131')](db['FaxMessage'],{});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x11')],{});db[_0xea76('0x57')][_0xea76('0x131')](db[_0xea76('0x55')],{});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x195')});db['SmsAccount']['hasMany'](db['SmsMessage'],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x58')][_0xea76('0x126')](db[_0xea76('0x5c')],{'as':_0xea76('0x178')});db[_0xea76('0x58')]['hasMany'](db[_0xea76('0x5a')],{'as':'Applications'});db[_0xea76('0x58')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x58')]['belongsTo'](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db[_0xea76('0x58')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':'user_has_sms_accounts'});db['SmsApplication'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':'restrict'});db['SmsApplication'][_0xea76('0x131')](db[_0xea76('0x142')],{'onDelete':_0xea76('0x171')});db['SmsApplication']['belongsTo'](db[_0xea76('0x58')],{'onDelete':_0xea76('0x171')});db['SmsApplication']['belongsTo'](db[_0xea76('0x160')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x5a')][_0xea76('0x131')](db['Tag'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db[_0xea76('0x5c')][_0xea76('0x126')](db[_0xea76('0x5e')],{'as':_0xea76('0x168'),'onDelete':'cascade','foreignKey':_0xea76('0x196')});db[_0xea76('0x5c')][_0xea76('0x131')](db[_0xea76('0x58')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x5c')]['belongsTo'](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':_0xea76('0x170')});db[_0xea76('0x5c')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':'Owner','foreignKey':_0xea76('0x123')});db[_0xea76('0x5c')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x197'),'as':_0xea76('0x17f')});db[_0xea76('0x5c')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x197'),'as':_0xea76('0x191')});db[_0xea76('0x5c')]['belongsToMany'](db[_0xea76('0x11')],{'as':'Users','through':'user_has_sms_interactions','foreignKey':_0xea76('0x196')});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':'User'});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':'cascade','as':'Contact'});db[_0xea76('0x5e')]['belongsTo'](db[_0xea76('0x5c')],{'onDelete':_0xea76('0x122'),'as':'Interaction','foreignKey':_0xea76('0x196')});db[_0xea76('0x5e')][_0xea76('0x131')](db[_0xea76('0x58')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x195')});db[_0xea76('0x142')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x38'),'foreignKey':_0xea76('0x198')});db[_0xea76('0x142')][_0xea76('0x133')](db['Team'],{'through':'team_has_sms_queues','as':'Teams'});db['OpenchannelAccount'][_0xea76('0x126')](db[_0xea76('0x176')],{'as':'Dispositions','foreignKey':_0xea76('0x199'),'onDelete':_0xea76('0x122')});db[_0xea76('0x61')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x199')});db[_0xea76('0x61')][_0xea76('0x126')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':'OpenchannelAccountId'});db['OpenchannelAccount'][_0xea76('0x126')](db['OpenchannelMessage'],{'as':'Messages','foreignKey':_0xea76('0x199')});db[_0xea76('0x61')]['hasMany'](db[_0xea76('0x62')],{'as':_0xea76('0x151'),'foreignKey':'OpenchannelAccountId'});db[_0xea76('0x61')][_0xea76('0x131')](db['CmList'],{'as':'List','foreignKey':'ListId'});db[_0xea76('0x61')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['OpenchannelAccount'][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x14b')});db[_0xea76('0x62')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x62')]['belongsTo'](db['OpenchannelQueue'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x19a')});db[_0xea76('0x62')][_0xea76('0x131')](db[_0xea76('0x61')],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x62')][_0xea76('0x131')](db['Interval'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x62')]['belongsTo'](db['Tag'],{'onDelete':'restrict','foreignKey':_0xea76('0x188')});db[_0xea76('0x64')][_0xea76('0x126')](db[_0xea76('0x66')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x19b')});db[_0xea76('0x64')][_0xea76('0x131')](db['OpenchannelAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x64')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x64')][_0xea76('0x131')](db['User'],{'as':'Owner','foreignKey':'UserId'});db[_0xea76('0x64')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x19c'),'as':_0xea76('0x17f')});db['OpenchannelInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x19c'),'as':_0xea76('0x191')});db[_0xea76('0x64')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x19d'),'foreignKey':_0xea76('0x19b')});db['OpenchannelMessage'][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x11')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x64')],{'onDelete':'cascade','as':'Interaction','foreignKey':'OpenchannelInteractionId'});db[_0xea76('0x66')]['belongsTo'](db[_0xea76('0xfa')],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x66')][_0xea76('0x131')](db[_0xea76('0x61')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x199')});db[_0xea76('0x67')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x3a'),'foreignKey':_0xea76('0x19a')});db[_0xea76('0x67')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x19e'),'as':'Teams'});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x185'),'onDelete':_0xea76('0x122')});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':_0xea76('0x177'),'foreignKey':_0xea76('0x185')});db['ChatWebsite']['hasMany'](db[_0xea76('0x77')],{'as':_0xea76('0x19f')});db[_0xea76('0x69')]['hasMany'](db[_0xea76('0x6f')],{'as':'Interactions'});db[_0xea76('0x69')][_0xea76('0x126')](db[_0xea76('0x6d')],{'as':_0xea76('0x151')});db['ChatWebsite']['hasMany'](db[_0xea76('0x1a0')],{'as':_0xea76('0x168')});db[_0xea76('0x69')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x69')]['belongsTo'](db[_0xea76('0x160')],{'as':_0xea76('0x160'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x69')][_0xea76('0x131')](db[_0xea76('0x40')],{'as':_0xea76('0x40'),'foreignKey':_0xea76('0x172')});db['ChatWebsite'][_0xea76('0x131')](db['Pause'],{'as':_0xea76('0x162'),'foreignKey':_0xea76('0x163')});db['ChatWebsite'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x147')});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x61')],{});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':'ContactId'});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x64')],{});db[_0xea76('0x6b')][_0xea76('0x131')](db['OpenchannelMessage'],{});db[_0xea76('0x6b')]['belongsTo'](db['User'],{});db[_0xea76('0x6b')][_0xea76('0x131')](db[_0xea76('0x67')],{});db[_0xea76('0x6d')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x1a1'),'foreignKey':_0xea76('0x123'),'onDelete':_0xea76('0x171')});db['ChatApplication'][_0xea76('0x131')](db['ChatQueue'],{'as':'Queue','foreignKey':'ChatQueueId','onDelete':_0xea76('0x171')});db[_0xea76('0x6d')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x1a2'),'foreignKey':_0xea76('0x185'),'onDelete':_0xea76('0x171')});db[_0xea76('0x6d')]['belongsTo'](db['Tag'],{'onDelete':_0xea76('0x171'),'foreignKey':_0xea76('0x188')});db['ChatInteraction'][_0xea76('0x126')](db[_0xea76('0x1a0')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1a3')});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':'ChatWebsiteId'});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x6f')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':'UserId'});db['ChatInteraction']['belongsToMany'](db[_0xea76('0x180')],{'through':'chat_interaction_has_tags','as':_0xea76('0x17f')});db['ChatInteraction']['belongsToMany'](db[_0xea76('0x180')],{'through':_0xea76('0x1a4'),'as':_0xea76('0x191')});db['ChatInteraction'][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x1a5'),'foreignKey':'ChatInteractionId'});db[_0xea76('0x1a0')][_0xea76('0x131')](db[_0xea76('0x11')],{'onDelete':_0xea76('0x122'),'as':'User'});db['ChatMessage'][_0xea76('0x131')](db['CmContact'],{'onDelete':'cascade','as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x1a0')][_0xea76('0x131')](db[_0xea76('0x6f')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x183'),'foreignKey':'ChatInteractionId'});db['ChatMessage'][_0xea76('0x131')](db['Attachment'],{'as':_0xea76('0xfa'),'foreignKey':_0xea76('0x192')});db[_0xea76('0x1a0')]['belongsTo'](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':'ChatWebsiteId'});db['ChatOfflineMessage'][_0xea76('0x126')](db[_0xea76('0xfa')],{'as':'Attachments','foreignKey':_0xea76('0x187'),'onDelete':_0xea76('0x122'),'hooks':!![]});db['ChatOfflineMessage'][_0xea76('0x131')](db['CmContact'],{'onDelete':_0xea76('0x122'),'as':'Contact','foreignKey':_0xea76('0x170')});db[_0xea76('0x186')]['belongsTo'](db[_0xea76('0x69')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x185')});db[_0xea76('0x73')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x32'),'hooks':!![]});db[_0xea76('0x73')]['belongsToMany'](db['Team'],{'through':_0xea76('0x1a6'),'as':_0xea76('0x194')});db[_0xea76('0x75')][_0xea76('0x126')](db[_0xea76('0xe0')],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x1a7'),'onDelete':_0xea76('0x122')});db[_0xea76('0x75')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x155'),'through':_0xea76('0x1a8')});db[_0xea76('0x77')][_0xea76('0x131')](db[_0xea76('0x69')],{'as':_0xea76('0x1a2'),'foreignKey':_0xea76('0x185')});db[_0xea76('0x79')]['hasMany'](db[_0xea76('0x7b')],{'as':'Contacts','foreignKey':_0xea76('0x1a9')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x97')],{'as':_0xea76('0x1aa'),'foreignKey':'CmContactId'});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x81')],{'as':_0xea76('0x158'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':'ReportAgentPreview','foreignKey':'ContactId'});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x15b')],{'as':_0xea76('0x15c'),'foreignKey':_0xea76('0x170')});db['CmContact'][_0xea76('0x126')](db[_0xea76('0x64')],{'as':'OpenchannelInteractions','foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')][_0xea76('0x126')](db[_0xea76('0x6f')],{'as':'ChatInteractions','foreignKey':'ContactId','onDelete':'restrict'});db[_0xea76('0x7b')][_0xea76('0x126')](db['SmsInteraction'],{'as':_0xea76('0x12c'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')]['hasMany'](db[_0xea76('0x12d')],{'as':_0xea76('0x12e'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db['CmContact']['hasMany'](db[_0xea76('0x139')],{'as':_0xea76('0x12f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x171')});db[_0xea76('0x7b')][_0xea76('0x131')](db[_0xea76('0x79')],{'as':_0xea76('0x1ab'),'foreignKey':_0xea76('0x1a9')});db['CmContact']['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':'cm_user_has_contacts'});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x180')],{'as':_0xea76('0x17f'),'through':'cm_contact_has_tags'});db[_0xea76('0x7b')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1ac'),'as':_0xea76('0x191')});db[_0xea76('0x7c')][_0xea76('0x126')](db[_0xea76('0x1ad')],{'as':_0xea76('0x1ae'),'foreignKey':_0xea76('0x1af')});db[_0xea76('0x7c')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x122')});db['CmHopper'][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7c')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x1a1'),'foreignKey':_0xea76('0x123')});db['CmHopper']['belongsTo'](db[_0xea76('0x19')],{'as':_0xea76('0x1b0'),'foreignKey':_0xea76('0x156'),'onDelete':_0xea76('0x122')});db['CmHopper']['belongsTo'](db['Campaign'],{'as':_0xea76('0xf9'),'foreignKey':_0xea76('0x1b1'),'onDelete':_0xea76('0x122')});db[_0xea76('0x7c')][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':_0xea76('0x1b2')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0x19')],{'as':'Queue','foreignKey':_0xea76('0x156'),'onDelete':_0xea76('0x122')});db[_0xea76('0x159')][_0xea76('0x131')](db[_0xea76('0xf9')],{'as':_0xea76('0xf9'),'foreignKey':_0xea76('0x1b1'),'onDelete':_0xea76('0x122')});db[_0xea76('0x86')][_0xea76('0x126')](db['Condition'],{'as':{'plural':'All','singular':_0xea76('0x1b3')},'foreignKey':_0xea76('0x1b4'),'onDelete':'cascade','hooks':!![]});db[_0xea76('0x86')][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1b5'),'singular':_0xea76('0x1b6')},'foreignKey':_0xea76('0x1b7'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x86')][_0xea76('0x126')](db[_0xea76('0x1b8')],{'as':_0xea76('0x1b9'),'foreignKey':_0xea76('0x1ba'),'onDelete':_0xea76('0x122'),'hooks':!![]});db['Disposition'][_0xea76('0x126')](db[_0xea76('0x176')],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x1bb'),'onDelete':_0xea76('0x122')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x160')],{'as':'Intervals','foreignKey':'IntervalId','onDelete':_0xea76('0x122'),'hooks':!![],'required':![]});db[_0xea76('0x160')]['hasMany'](db['VoiceExtension'],{'as':_0xea76('0x1bc'),'foreignKey':_0xea76('0x161'),'onDelete':_0xea76('0x171')});db[_0xea76('0x160')]['hasMany'](db[_0xea76('0x49')],{'as':_0xea76('0x1bd'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x6d')],{'as':_0xea76('0x1be'),'foreignKey':_0xea76('0x161')});db[_0xea76('0x160')][_0xea76('0x126')](db[_0xea76('0x50')],{'as':_0xea76('0x1bf'),'foreignKey':'IntervalId'});db[_0xea76('0x160')][_0xea76('0x126')](db['SmsApplication'],{'as':_0xea76('0x1c0'),'foreignKey':'IntervalId'});db[_0xea76('0x93')][_0xea76('0x131')](db[_0xea76('0x40')],{});db[_0xea76('0x93')]['belongsTo'](db[_0xea76('0x1c1')],{'foreignKey':_0xea76('0x1c2')});db[_0xea76('0x93')][_0xea76('0x131')](db[_0xea76('0xa0')],{'foreignKey':_0xea76('0x1c3')});db[_0xea76('0x95')][_0xea76('0x133')](db[_0xea76('0x152')],{'as':_0xea76('0x1c4'),'through':'moh_has_sounds','onDelete':'restrict'});db['Tag']['belongsToMany'](db[_0xea76('0x7b')],{'through':_0xea76('0x1ac')});db[_0xea76('0x180')]['belongsToMany'](db[_0xea76('0x6f')],{'through':_0xea76('0x1a4')});db[_0xea76('0x180')][_0xea76('0x133')](db['MailInteraction'],{'through':_0xea76('0x17e')});db['Tag'][_0xea76('0x133')](db[_0xea76('0x5c')],{'through':_0xea76('0x197')});db[_0xea76('0x180')][_0xea76('0x133')](db[_0xea76('0x12d')],{'through':_0xea76('0x190')});db['Tag']['belongsToMany'](db[_0xea76('0x64')],{'through':_0xea76('0x19c')});db[_0xea76('0x180')]['belongsToMany'](db['WhatsappInteraction'],{'through':'whatsapp_interaction_has_tags'});db[_0xea76('0x97')][_0xea76('0x131')](db[_0xea76('0x96')],{'as':_0xea76('0x1c5'),'foreignKey':_0xea76('0x1c6')});db[_0xea76('0x1ad')][_0xea76('0x131')](db[_0xea76('0x7c')],{'as':_0xea76('0x1c7'),'foreignKey':_0xea76('0x1af')});db[_0xea76('0x97')][_0xea76('0x131')](db['CmContact'],{'as':_0xea76('0x16f'),'foreignKey':'CmContactId'});db[_0xea76('0x1c8')][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1c9'),'singular':_0xea76('0x1ca')},'foreignKey':_0xea76('0x1cb'),'onDelete':'cascade','hooks':!![]});db['Trigger'][_0xea76('0x126')](db[_0xea76('0x8b')],{'as':{'plural':_0xea76('0x1cc'),'singular':_0xea76('0x1cd')},'foreignKey':_0xea76('0x1ce'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x1c8')][_0xea76('0x126')](db['Action'],{'as':'Actions','foreignKey':_0xea76('0x1cf'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0xa0')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1c3'),'hooks':!![]});db[_0xea76('0x1c1')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1c2')});db[_0xea76('0xa5')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d1')});db[_0xea76('0xa7')]['belongsTo'](db[_0xea76('0xa5')],{'foreignKey':_0xea76('0x1d1')});db[_0xea76('0xaa')]['hasMany'](db['SalesforceConfiguration'],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xac')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d5'),'onDelete':_0xea76('0x122'),'foreignKey':'SubjectId'});db[_0xea76('0xac')]['hasMany'](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d6'),'onDelete':'cascade','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xac')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':'Fields','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xac')][_0xea76('0x131')](db[_0xea76('0xaa')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1d4')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0x1d4')][_0xea76('0x126')](db[_0xea76('0x1d4')],{'as':_0xea76('0x1db'),'foreignKey':'DescriptionId'});db[_0xea76('0x1d4')][_0xea76('0x126')](db['SalesforceField'],{'as':_0xea76('0x1dc'),'foreignKey':'FieldId'});db[_0xea76('0x1d4')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xaf')]['hasMany'](db['SugarcrmConfiguration'],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db[_0xea76('0xb1')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':'Subjects','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xb1')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d7')});db['SugarcrmConfiguration'][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb1')]['belongsTo'](db[_0xea76('0xaf')],{'as':_0xea76('0x184'),'foreignKey':'AccountId'});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':_0xea76('0x1db'),'foreignKey':'DescriptionId'});db[_0xea76('0x1de')][_0xea76('0x126')](db[_0xea76('0x1de')],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0x1de')][_0xea76('0x131')](db['Variable'],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db['DeskAccount']['hasMany'](db[_0xea76('0xb3')],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db['DeskConfiguration'][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1d5'),'onDelete':_0xea76('0x122'),'foreignKey':'SubjectId'});db['DeskConfiguration'][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xb3')][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db['DeskConfiguration']['belongsTo'](db[_0xea76('0x1df')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xb3')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1e0')});db[_0xea76('0xb5')][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db['DeskField'][_0xea76('0x126')](db[_0xea76('0xb5')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xb5')][_0xea76('0x126')](db['DeskField'],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb5')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xb7')]['hasMany'](db[_0xea76('0xb9')],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db['ZohoConfiguration'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1d5'),'onDelete':'cascade','foreignKey':_0xea76('0x1da')});db[_0xea76('0xb9')][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':'Descriptions','onDelete':'cascade','foreignKey':'DescriptionId'});db[_0xea76('0xb9')][_0xea76('0x126')](db['ZohoField'],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xb9')][_0xea76('0x131')](db[_0xea76('0xb7')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db['ZohoField'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':'Subject','foreignKey':'SubjectId'});db['ZohoField'][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xbb')][_0xea76('0x126')](db[_0xea76('0xbb')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xbb')]['belongsTo'](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xbd')]['hasMany'](db['ZendeskConfiguration'],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db['ZendeskConfiguration'][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1d5'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xbe')]['hasMany'](db['ZendeskField'],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db['ZendeskConfiguration'][_0xea76('0x126')](db['ZendeskField'],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xbe')]['belongsTo'](db[_0xea76('0xbd')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xbe')]['belongsToMany'](db[_0xea76('0x180')],{'through':'int_zendesk_configuration_has_tags'});db[_0xea76('0xc0')][_0xea76('0x126')](db['ZendeskField'],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xc0')][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db[_0xea76('0xc0')][_0xea76('0x126')](db[_0xea76('0xc0')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc0')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db['FreshdeskAccount'][_0xea76('0x126')](db[_0xea76('0x1e1')],{'as':_0xea76('0x1d2'),'onDelete':'cascade','foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1e1')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d5'),'onDelete':'cascade','foreignKey':_0xea76('0x1da')});db[_0xea76('0x1e1')]['hasMany'](db[_0xea76('0xc4')],{'as':_0xea76('0x1d6'),'onDelete':'cascade','foreignKey':_0xea76('0x1d7')});db[_0xea76('0x1e1')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d0'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0x1e1')][_0xea76('0x131')](db[_0xea76('0xc1')],{'as':'Account','foreignKey':_0xea76('0x1d3')});db[_0xea76('0x1e1')][_0xea76('0x133')](db[_0xea76('0x180')],{'through':_0xea76('0x1e2')});db[_0xea76('0xc4')][_0xea76('0x126')](db[_0xea76('0xc4')],{'as':_0xea76('0x1d9'),'foreignKey':'SubjectId'});db['FreshdeskField'][_0xea76('0x126')](db['FreshdeskField'],{'as':'Description','foreignKey':_0xea76('0x1d7')});db['FreshdeskField'][_0xea76('0x126')](db['FreshdeskField'],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc4')]['belongsTo'](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xc6')][_0xea76('0x126')](db[_0xea76('0xc8')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':'AccountId'});db[_0xea76('0xc8')][_0xea76('0x126')](db[_0xea76('0xca')],{'as':_0xea76('0x1d5'),'foreignKey':'SubjectId'});db[_0xea76('0xc8')]['hasMany'](db['VtigerField'],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db[_0xea76('0xc8')][_0xea76('0x126')](db[_0xea76('0xca')],{'as':'Fields','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xc8')][_0xea76('0x131')](db['VtigerAccount'],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xca')]['hasMany'](db[_0xea76('0xca')],{'as':'Subject','foreignKey':'SubjectId'});db['VtigerField'][_0xea76('0x126')](db[_0xea76('0xca')],{'as':'Description','foreignKey':_0xea76('0x1d7')});db['VtigerField'][_0xea76('0x126')](db['VtigerField'],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db['VtigerField'][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db[_0xea76('0xcc')][_0xea76('0x126')](db[_0xea76('0xce')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xce')]['hasMany'](db[_0xea76('0xd0')],{'as':_0xea76('0x1d5'),'foreignKey':_0xea76('0x1da')});db['ServicenowConfiguration'][_0xea76('0x126')](db[_0xea76('0xd0')],{'as':_0xea76('0x1d6'),'foreignKey':'DescriptionId'});db[_0xea76('0xce')][_0xea76('0x126')](db['ServicenowField'],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xce')][_0xea76('0x131')](db[_0xea76('0xcc')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd0')][_0xea76('0x126')](db[_0xea76('0xd0')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db['ServicenowField'][_0xea76('0x126')](db['ServicenowField'],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db['ServicenowField']['hasMany'](db[_0xea76('0xd0')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db[_0xea76('0xd0')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db['Dynamics365Account'][_0xea76('0x126')](db[_0xea76('0xd2')],{'as':_0xea76('0x1d2'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd1')][_0xea76('0x131')](db['CloudProvider'],{'as':'CloudProvider','foreignKey':_0xea76('0x173')});db[_0xea76('0xd2')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':'Subjects','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xd2')]['hasMany'](db[_0xea76('0xd4')],{'as':_0xea76('0x1d6'),'onDelete':_0xea76('0x122'),'foreignKey':'DescriptionId'});db['Dynamics365Configuration'][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1d0'),'onDelete':'cascade','foreignKey':_0xea76('0x1d8')});db['Dynamics365Configuration'][_0xea76('0x131')](db[_0xea76('0xd1')],{'as':'Account','foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd4')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':'Subject','foreignKey':_0xea76('0x1da')});db[_0xea76('0xd4')][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1db'),'foreignKey':_0xea76('0x1d7')});db['Dynamics365Field'][_0xea76('0x126')](db[_0xea76('0xd4')],{'as':_0xea76('0x1dc'),'foreignKey':_0xea76('0x1d8')});db['Dynamics365Field'][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':_0xea76('0x9c'),'foreignKey':_0xea76('0x1dd')});db[_0xea76('0xd6')][_0xea76('0x126')](db[_0xea76('0xd7')],{'as':'Configurations','onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1d3')});db['FreshsalesConfiguration'][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Subjects','foreignKey':_0xea76('0x1da')});db[_0xea76('0xd7')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Descriptions','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xd7')]['hasMany'](db[_0xea76('0xd9')],{'as':_0xea76('0x1d0'),'foreignKey':_0xea76('0x1d8')});db['FreshsalesConfiguration'][_0xea76('0x131')](db[_0xea76('0xd6')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x1d3')});db[_0xea76('0xd9')]['hasMany'](db[_0xea76('0xd9')],{'as':_0xea76('0x1d9'),'foreignKey':_0xea76('0x1da')});db[_0xea76('0xd9')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Description','foreignKey':_0xea76('0x1d7')});db[_0xea76('0xd9')][_0xea76('0x126')](db[_0xea76('0xd9')],{'as':'Field','foreignKey':_0xea76('0x1d8')});db[_0xea76('0xd9')][_0xea76('0x131')](db[_0xea76('0x9c')],{'as':'Variable','foreignKey':_0xea76('0x1dd')});db['ChatQueueReport'][_0xea76('0x131')](db[_0xea76('0x69')],{});db['ChatQueueReport'][_0xea76('0x131')](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0xde')]['belongsTo'](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':'ContactId'});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x6f')],{});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x1a0')],{});db[_0xea76('0xde')][_0xea76('0x131')](db['User'],{});db[_0xea76('0xde')][_0xea76('0x131')](db[_0xea76('0x73')],{});db[_0xea76('0xe0')]['belongsTo'](db['User'],{'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x1e3')});db[_0xea76('0xe0')]['belongsTo'](db[_0xea76('0x11')],{'onDelete':'cascade','foreignKey':_0xea76('0x1e4')});db[_0xea76('0x15b')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xea76('0x1e5'),'onDelete':_0xea76('0x122')});db['JscriptySessionReport'][_0xea76('0x126')](db['JscriptyAnswerReport'],{'foreignKey':_0xea76('0x1e5'),'onDelete':'cascade'});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x58')],{});db[_0xea76('0xe6')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db['SmsQueueReport'][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db['SmsQueueReport'][_0xea76('0x131')](db[_0xea76('0x5c')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x5e')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x11')],{});db[_0xea76('0xe6')][_0xea76('0x131')](db[_0xea76('0x142')],{});db[_0xea76('0xeb')][_0xea76('0x126')](db[_0xea76('0x15b')],{'foreignKey':_0xea76('0x1e6')});db['JscriptyProject'][_0xea76('0x126')](db['JscriptyQuestionReport'],{'foreignKey':_0xea76('0x1e6')});db[_0xea76('0xeb')][_0xea76('0x126')](db[_0xea76('0xe2')],{'foreignKey':_0xea76('0x1e6')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x1e7')});db['Team'][_0xea76('0x133')](db['VoiceQueue'],{'through':'TeamVoiceQueue','as':_0xea76('0x1e8')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x42')],{'through':'team_has_mail_queues','as':'MailQueues'});db[_0xea76('0xf6')]['belongsToMany'](db['ChatQueue'],{'through':'team_has_chat_queues','as':_0xea76('0x140')});db[_0xea76('0xf6')]['belongsToMany'](db[_0xea76('0x55')],{'through':_0xea76('0x193'),'as':'FaxQueues'});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x142')],{'through':'team_has_sms_queues','as':_0xea76('0x143')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x67')],{'through':_0xea76('0x19e'),'as':_0xea76('0x144')});db['Team'][_0xea76('0x133')](db[_0xea76('0x145')],{'through':_0xea76('0x1e9'),'as':_0xea76('0x1ea')});db[_0xea76('0xf6')][_0xea76('0x133')](db[_0xea76('0x106')],{'through':_0xea76('0x11b'),'as':_0xea76('0x13f')});db[_0xea76('0xf9')]['hasMany'](db[_0xea76('0x7c')],{'as':_0xea76('0x157'),'foreignKey':_0xea76('0x1b1')});db[_0xea76('0xf9')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':'CampaignId'});db[_0xea76('0xf9')]['hasMany'](db[_0xea76('0x81')],{'as':'HopperHistories','foreignKey':'CampaignId'});db[_0xea76('0xf9')][_0xea76('0x126')](db[_0xea76('0x159')],{'as':_0xea76('0x15a'),'foreignKey':_0xea76('0x1b1')});db[_0xea76('0xf9')]['belongsTo'](db[_0xea76('0x15d')],{'as':_0xea76('0x15d'),'foreignKey':_0xea76('0x15e')});db[_0xea76('0xf9')][_0xea76('0x131')](db[_0xea76('0x15d')],{'as':'TrunkBackup','foreignKey':'TrunkBackupId'});db[_0xea76('0xf9')][_0xea76('0x131')](db['Interval'],{'as':_0xea76('0x160'),'foreignKey':'IntervalId'});db[_0xea76('0xf9')][_0xea76('0x131')](db['SquareProject'],{'as':_0xea76('0xf0'),'foreignKey':'SquareProjectId'});db['Campaign'][_0xea76('0x133')](db[_0xea76('0x104')],{'as':_0xea76('0x137'),'through':_0xea76('0x1eb')});db['Campaign'][_0xea76('0x133')](db['CmList'],{'as':'BlackLists','through':'campaigns_has_cm_blacklists'});db['Attachment']['belongsTo'](db['ChatOfflineMessage'],{'as':'ChatOfflineMessage','foreignKey':_0xea76('0x187')});db['MailTransferReport'][_0xea76('0x131')](db[_0xea76('0x47')],{});db['MailTransferReport'][_0xea76('0x131')](db['MailInteraction'],{});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x40')],{'foreignKey':'FromMailAccountId','as':_0xea76('0x1ec')});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0xfd')]['belongsTo'](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0xfd')][_0xea76('0x131')](db[_0xea76('0x42')],{'foreignKey':_0xea76('0x1f0'),'as':_0xea76('0x1f1')});db[_0xea76('0xfd')][_0xea76('0x131')](db['MailAccount'],{'foreignKey':_0xea76('0x1f2'),'as':'ToAccount'});db['ChatTransferReport'][_0xea76('0x131')](db['ChatMessage'],{});db['ChatTransferReport'][_0xea76('0x131')](db['ChatInteraction'],{});db['ChatTransferReport'][_0xea76('0x131')](db['ChatWebsite'],{'foreignKey':'FromChatWebsiteId','as':'FromAccount'});db['ChatTransferReport'][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':'FromAgent'});db[_0xea76('0xff')]['belongsTo'](db['User'],{'foreignKey':_0xea76('0x1ef'),'as':_0xea76('0x1f3')});db[_0xea76('0xff')][_0xea76('0x131')](db[_0xea76('0x73')],{'foreignKey':'ToChatQueueId','as':'ToQueue'});db[_0xea76('0xff')][_0xea76('0x131')](db[_0xea76('0x69')],{'foreignKey':_0xea76('0x1f4'),'as':_0xea76('0x1f5')});db[_0xea76('0x100')]['belongsTo'](db[_0xea76('0x53')],{});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x12d')],{});db['FaxTransferReport'][_0xea76('0x131')](db[_0xea76('0x4e')],{'foreignKey':_0xea76('0x1f6'),'as':'FromAccount'});db[_0xea76('0x100')]['belongsTo'](db['User'],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0x100')][_0xea76('0x131')](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':_0xea76('0x1f1')});db[_0xea76('0x100')][_0xea76('0x131')](db[_0xea76('0x4e')],{'foreignKey':'ToFaxAccountId','as':_0xea76('0x1f5')});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x66')],{});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x64')],{});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x61')],{'foreignKey':_0xea76('0x1f8'),'as':_0xea76('0x1ec')});db[_0xea76('0x1f7')][_0xea76('0x131')](db['User'],{'foreignKey':'FromUserId','as':_0xea76('0x1ee')});db['OpenchannelTransferReport'][_0xea76('0x131')](db['User'],{'foreignKey':_0xea76('0x1ef'),'as':'ToAgent'});db[_0xea76('0x1f7')][_0xea76('0x131')](db[_0xea76('0x67')],{'foreignKey':'ToOpenchannelQueueId','as':_0xea76('0x1f1')});db['OpenchannelTransferReport']['belongsTo'](db[_0xea76('0x61')],{'foreignKey':_0xea76('0x1f9'),'as':_0xea76('0x1f5')});db['SmsTransferReport'][_0xea76('0x131')](db[_0xea76('0x5e')],{});db['SmsTransferReport'][_0xea76('0x131')](db[_0xea76('0x5c')],{});db[_0xea76('0x102')]['belongsTo'](db['SmsAccount'],{'foreignKey':_0xea76('0x1fa'),'as':'FromAccount'});db[_0xea76('0x102')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':_0xea76('0x1ee')});db[_0xea76('0x102')][_0xea76('0x131')](db['User'],{'foreignKey':'ToUserId','as':_0xea76('0x1f3')});db[_0xea76('0x102')]['belongsTo'](db['SmsQueue'],{'foreignKey':_0xea76('0x1fb'),'as':_0xea76('0x1f1')});db[_0xea76('0x102')][_0xea76('0x131')](db[_0xea76('0x58')],{'foreignKey':_0xea76('0x1fc'),'as':_0xea76('0x1f5')});db[_0xea76('0x104')][_0xea76('0x126')](db['Disposition'],{'as':_0xea76('0x18b'),'foreignKey':_0xea76('0x17a'),'onDelete':_0xea76('0x122')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x1fd')],{'as':_0xea76('0x1fe'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x7b')],{'as':_0xea76('0x135'),'onDelete':_0xea76('0x122'),'foreignKey':'ListId'});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x7f')],{'as':_0xea76('0x128'),'foreignKey':_0xea76('0x17a')});db['CmList'][_0xea76('0x126')](db[_0xea76('0x81')],{'as':'HopperHistory','foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x126')](db[_0xea76('0x83')],{'as':'ReportAgentPreview','foreignKey':_0xea76('0x17a')});db[_0xea76('0x104')][_0xea76('0x133')](db[_0xea76('0x19')],{'as':_0xea76('0x1ff'),'through':_0xea76('0x164')});db[_0xea76('0x104')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x138')});db[_0xea76('0x106')]['hasMany'](db[_0xea76('0x17')],{'as':'Extensions','onDelete':_0xea76('0x122')});db[_0xea76('0x106')][_0xea76('0x133')](db['User'],{'as':_0xea76('0x165'),'through':_0xea76('0x11d')});db[_0xea76('0x106')][_0xea76('0x133')](db[_0xea76('0xf6')],{'through':_0xea76('0x11b'),'as':_0xea76('0x194')});db[_0xea76('0x107')][_0xea76('0x126')](db['User'],{'as':_0xea76('0x181'),'foreignKey':_0xea76('0x132')});db[_0xea76('0x107')]['hasMany'](db['UserProfileSection'],{'as':'UserProfileSections','foreignKey':_0xea76('0x132'),'onDelete':'cascade'});db[_0xea76('0x200')]['hasMany'](db['UserProfileResource'],{'as':'Resources','foreignKey':'sectionId','onDelete':'cascade'});db[_0xea76('0x10d')][_0xea76('0x126')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xea76('0x201'),'onDelete':_0xea76('0x122')});db[_0xea76('0x10d')][_0xea76('0x126')](db[_0xea76('0x88')],{'as':'Answers','foreignKey':_0xea76('0x201')});db['WhatsappAccount'][_0xea76('0x126')](db[_0xea76('0x112')],{'as':_0xea76('0x168'),'foreignKey':_0xea76('0x201')});db[_0xea76('0x10d')][_0xea76('0x126')](db[_0xea76('0x110')],{'as':_0xea76('0x178')});db[_0xea76('0x10d')][_0xea76('0x126')](db['WhatsappApplication'],{'as':_0xea76('0x151')});db[_0xea76('0x10d')]['belongsTo'](db[_0xea76('0x104')],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x10d')][_0xea76('0x131')](db[_0xea76('0x8d')],{'as':_0xea76('0x162'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xea76('0x10d')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':'Agents','through':_0xea76('0x14f')});db[_0xea76('0x202')]['belongsTo'](db['User'],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db[_0xea76('0x145')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db[_0xea76('0x10d')],{'onDelete':_0xea76('0x171')});db[_0xea76('0x202')][_0xea76('0x131')](db['Interval'],{'onDelete':'restrict','foreignKey':_0xea76('0x161')});db['WhatsappApplication'][_0xea76('0x131')](db[_0xea76('0x180')],{'onDelete':_0xea76('0x171'),'foreignKey':'TagId'});db[_0xea76('0x110')][_0xea76('0x126')](db[_0xea76('0x112')],{'as':_0xea76('0x168'),'onDelete':_0xea76('0x122'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x110')][_0xea76('0x131')](db[_0xea76('0x10d')],{'as':_0xea76('0x184'),'foreignKey':_0xea76('0x201')});db[_0xea76('0x110')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':'Contact','foreignKey':_0xea76('0x170')});db['WhatsappInteraction'][_0xea76('0x131')](db[_0xea76('0x11')],{'as':_0xea76('0x18f'),'foreignKey':_0xea76('0x123')});db[_0xea76('0x110')][_0xea76('0x133')](db['Tag'],{'through':_0xea76('0x204'),'as':_0xea76('0x17f')});db['WhatsappInteraction'][_0xea76('0x133')](db[_0xea76('0x180')],{'through':'whatsapp_interaction_has_tags','as':_0xea76('0x191')});db[_0xea76('0x110')][_0xea76('0x133')](db[_0xea76('0x11')],{'as':_0xea76('0x181'),'through':_0xea76('0x13e'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x112')][_0xea76('0x131')](db['User'],{'as':_0xea76('0x11')});db[_0xea76('0x112')][_0xea76('0x131')](db[_0xea76('0x7b')],{'onDelete':_0xea76('0x122'),'as':_0xea76('0x16f')});db[_0xea76('0x112')]['belongsTo'](db[_0xea76('0x110')],{'onDelete':'cascade','as':_0xea76('0x183'),'foreignKey':_0xea76('0x203')});db[_0xea76('0x112')][_0xea76('0x131')](db[_0xea76('0x10d')],{'as':'Account','foreignKey':_0xea76('0x201')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x10d')],{});db[_0xea76('0x114')][_0xea76('0x131')](db['CmList'],{'as':_0xea76('0x179'),'foreignKey':_0xea76('0x17a')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x7b')],{'as':_0xea76('0x16f'),'foreignKey':_0xea76('0x170')});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x110')],{});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x145')],{});db[_0xea76('0x114')][_0xea76('0x131')](db['WhatsappMessage'],{});db[_0xea76('0x114')][_0xea76('0x131')](db[_0xea76('0x11')],{});db['WhatsappTransferReport']['belongsTo'](db[_0xea76('0x112')],{});db[_0xea76('0x205')][_0xea76('0x131')](db['WhatsappInteraction'],{});db[_0xea76('0x205')]['belongsTo'](db[_0xea76('0x10d')],{'foreignKey':_0xea76('0x206'),'as':'FromAccount'});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x10d')],{'foreignKey':_0xea76('0x207'),'as':_0xea76('0x1f5')});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x145')],{'foreignKey':_0xea76('0x208'),'as':_0xea76('0x1f1')});db['WhatsappTransferReport'][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ed'),'as':'FromAgent'});db[_0xea76('0x205')][_0xea76('0x131')](db[_0xea76('0x11')],{'foreignKey':_0xea76('0x1ef'),'as':_0xea76('0x1f3')});db[_0xea76('0x145')]['belongsToMany'](db[_0xea76('0x11')],{'as':_0xea76('0x165'),'through':_0xea76('0x3c'),'foreignKey':_0xea76('0x209')});db[_0xea76('0x145')]['belongsToMany'](db[_0xea76('0xf6')],{'through':_0xea76('0x1e9'),'as':_0xea76('0x194')});db['UserSetting']['belongsTo'](db[_0xea76('0x11')],{'as':'user','foreignKey':_0xea76('0x123'),'onDelete':_0xea76('0x122'),'hooks':!![]});db[_0xea76('0x117')]['hasOne'](db['Dynamics365Account'],{'as':_0xea76('0xd1'),'onDelete':'restrict'});db[_0xea76('0x117')][_0xea76('0x121')](db[_0xea76('0x3d')],{'as':'Imap','onDelete':_0xea76('0x171')});db[_0xea76('0x117')][_0xea76('0x121')](db[_0xea76('0x3e')],{'as':_0xea76('0x175'),'onDelete':_0xea76('0x171')});module[_0xea76('0x20a')]={'db':db,'dbH':dbH};
\ No newline at end of file
index 4bd04a5..69728c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9b46=['./api/intSugarcrmField','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','/api/integrations/dynamics365/fields','/api/integrations/freshsales/accounts','/api/integrations/freshsales/fields','/api/networks','./api/network','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','/api/jscripty/questions/reports','./api/jscriptyQuestionReport','/api/jscripty/sessions/reports','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/setting','/api/square/odbc','./api/squareOdbc','./api/squareProject','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/license','/api/campaigns','./api/campaign','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','/api/userProfile/resources','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','/api/whatsapp/reports/transfer','./api/whatsappQueue','./api/cloudProvider','/api/realtime','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','./api/version','/api/system','./api/system','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/www','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','path','express','./config/environment','./utils/client-side-logger','setupLoggers','default','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','./api/voiceQueue','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails','./api/voiceMail','/api/voice/mails/messages','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','./api/mailServerOut','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','/api/mail/applications','./api/mailApplication','/api/mail/reports/queue','./api/mailQueueReport','/api/dashboards','/api/dashboards/items','/api/fax/accounts','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','./api/smsInteraction','/api/sms/messages','./api/smsMessage','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','./api/openchannelApplication','/api/openchannel/messages','./api/openchannelMessage','/api/openchannel/queues','./api/openchannelQueue','/api/chat/websites','./api/chatWebsite','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','./api/chatMessage','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopperBlack','/api/cm/hopper_final','/api/cm/hopper_history','./api/cmHopperHistory','./api/cmCustomField','/api/actions','./api/action','/api/automations','/api/canned_answers','./api/cannedAnswer','/api/dispositions','/api/conditions','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','./api/schedule','/api/sounds','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','./api/template','/api/triggers','./api/trigger','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','./api/analyticExtractedReport','/api/analytics/metrics','./api/analyticMetric','./api/analyticFieldReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','./api/intSugarcrmConfiguration','/api/integrations/sugarcrm/fields'];(function(_0x176210,_0x448d0d){var _0x59acd3=function(_0x4af093){while(--_0x4af093){_0x176210['push'](_0x176210['shift']());}};_0x59acd3(++_0x448d0d);}(_0x9b46,0x82));var _0x69b4=function(_0x1b74d6,_0x5b7972){_0x1b74d6=_0x1b74d6-0x0;var _0x2e432e=_0x9b46[_0x1b74d6];return _0x2e432e;};'use strict';var path=require(_0x69b4('0x0'));var express=require(_0x69b4('0x1'));var errors=require('./errors');var config=require(_0x69b4('0x2'));var setupLoggers=require(_0x69b4('0x3'))[_0x69b4('0x4')];var clientSideLogs=require('./api/client-side-logs');exports[_0x69b4('0x5')]=function(_0x4799e2){return setupLoggers(_0x4799e2)[_0x69b4('0x6')](function(){_0x4799e2[_0x69b4('0x7')](_0x69b4('0x8'),require(_0x69b4('0x9')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xa'),require(_0x69b4('0xb')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xc'),require(_0x69b4('0xd')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xe'),require(_0x69b4('0xf')));_0x4799e2[_0x69b4('0x7')]('/api/voice/mohs',require(_0x69b4('0x10')));_0x4799e2['use']('/api/voice/queues',require(_0x69b4('0x11')));_0x4799e2['use']('/api/voice/recordings',require(_0x69b4('0x12')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x13'),require(_0x69b4('0x14')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x15'),require(_0x69b4('0x16')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x17'),require('./api/voiceMailMessage'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x18'),require(_0x69b4('0x19')));_0x4799e2[_0x69b4('0x7')]('/api/voice/dials/reports',require('./api/voiceDialReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x1a'),require(_0x69b4('0x1b')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x1c'),require('./api/voiceQueueReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x1d'),require('./api/memberReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x1e'),require(_0x69b4('0x1f')));_0x4799e2['use'](_0x69b4('0x20'),require(_0x69b4('0x21')));_0x4799e2[_0x69b4('0x7')]('/api/mail/out_servers',require(_0x69b4('0x22')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x23'),require(_0x69b4('0x24')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x25'),require(_0x69b4('0x26')));_0x4799e2['use'](_0x69b4('0x27'),require('./api/mailSubstatus'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x28'),require(_0x69b4('0x29')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x2a'),require('./api/mailMessage'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x2b'),require(_0x69b4('0x2c')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x2d'),require(_0x69b4('0x2e')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x2f'),require('./api/dashboard'));_0x4799e2['use'](_0x69b4('0x30'),require('./api/dashboardItem'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x31'),require(_0x69b4('0x32')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x33'),require(_0x69b4('0x34')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x35'),require(_0x69b4('0x36')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x37'),require(_0x69b4('0x38')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x39'),require(_0x69b4('0x3a')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x3b'),require(_0x69b4('0x3c')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x3d'),require(_0x69b4('0x3e')));_0x4799e2[_0x69b4('0x7')]('/api/sms/applications',require(_0x69b4('0x3f')));_0x4799e2['use']('/api/sms/interactions',require(_0x69b4('0x40')));_0x4799e2['use'](_0x69b4('0x41'),require(_0x69b4('0x42')));_0x4799e2['use']('/api/sms/queues',require(_0x69b4('0x43')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x44'),require(_0x69b4('0x45')));_0x4799e2[_0x69b4('0x7')]('/api/openchannel/applications',require(_0x69b4('0x46')));_0x4799e2[_0x69b4('0x7')]('/api/openchannel/interactions',require('./api/openchannelInteraction'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x47'),require(_0x69b4('0x48')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x49'),require(_0x69b4('0x4a')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x4b'),require(_0x69b4('0x4c')));_0x4799e2[_0x69b4('0x7')]('/api/openchannel/reports/queue',require(_0x69b4('0x4d')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x4e'),require(_0x69b4('0x4f')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x50'),require(_0x69b4('0x51')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x52'),require(_0x69b4('0x53')));_0x4799e2['use']('/api/chat/offline_messages',require(_0x69b4('0x54')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x55'),require(_0x69b4('0x56')));_0x4799e2[_0x69b4('0x7')]('/api/chat/groups',require(_0x69b4('0x57')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x58'),require(_0x69b4('0x59')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x5a'),require(_0x69b4('0x5b')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x5c'),require(_0x69b4('0x5d')));_0x4799e2['use'](_0x69b4('0x5e'),require('./api/cmHopper'));_0x4799e2['use']('/api/cm/hopper_black',require(_0x69b4('0x5f')));_0x4799e2['use'](_0x69b4('0x60'),require('./api/cmHopperFinal'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x61'),require(_0x69b4('0x62')));_0x4799e2[_0x69b4('0x7')]('/api/cm/custom_fields',require(_0x69b4('0x63')));_0x4799e2['use'](_0x69b4('0x64'),require(_0x69b4('0x65')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x66'),require('./api/automation'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x67'),require(_0x69b4('0x68')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x69'),require('./api/disposition'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x6a'),require('./api/condition'));_0x4799e2[_0x69b4('0x7')]('/api/intervals',require('./api/interval'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x6b'),require(_0x69b4('0x6c')));_0x4799e2['use'](_0x69b4('0x6d'),require(_0x69b4('0x6e')));_0x4799e2['use'](_0x69b4('0x6f'),require(_0x69b4('0x70')));_0x4799e2[_0x69b4('0x7')]('/api/schedules',require(_0x69b4('0x71')));_0x4799e2['use'](_0x69b4('0x72'),require('./api/sound'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x73'),require(_0x69b4('0x74')));_0x4799e2['use'](_0x69b4('0x75'),require(_0x69b4('0x76')));_0x4799e2[_0x69b4('0x7')]('/api/cm_contact_has_items',require(_0x69b4('0x77')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x78'),require(_0x69b4('0x79')));_0x4799e2['use']('/api/templates',require(_0x69b4('0x7a')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x7b'),require(_0x69b4('0x7c')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x7d'),require(_0x69b4('0x7e')));_0x4799e2['use'](_0x69b4('0x7f'),require(_0x69b4('0x80')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x81'),require(_0x69b4('0x82')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x83'),require(_0x69b4('0x84')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x85'),require(_0x69b4('0x86')));_0x4799e2[_0x69b4('0x7')]('/api/analytics/extracted_reports',require(_0x69b4('0x87')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x88'),require(_0x69b4('0x89')));_0x4799e2[_0x69b4('0x7')]('/api/analytics/field_reports',require(_0x69b4('0x8a')));_0x4799e2['use']('/api/analytics/tree_reports',require('./api/analyticTreeReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x8b'),require(_0x69b4('0x8c')));_0x4799e2[_0x69b4('0x7')]('/api/integrations/salesforce/configurations',require(_0x69b4('0x8d')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x8e'),require(_0x69b4('0x8f')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x90'),require(_0x69b4('0x91')));_0x4799e2['use'](_0x69b4('0x92'),require(_0x69b4('0x93')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x94'),require(_0x69b4('0x95')));_0x4799e2[_0x69b4('0x7')]('/api/integrations/desk/accounts',require(_0x69b4('0x96')));_0x4799e2['use'](_0x69b4('0x97'),require(_0x69b4('0x98')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x99'),require(_0x69b4('0x9a')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x9b'),require(_0x69b4('0x9c')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x9d'),require('./api/intZohoConfiguration'));_0x4799e2[_0x69b4('0x7')]('/api/integrations/zoho/fields',require(_0x69b4('0x9e')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x9f'),require(_0x69b4('0xa0')));_0x4799e2['use'](_0x69b4('0xa1'),require(_0x69b4('0xa2')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xa3'),require(_0x69b4('0xa4')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xa5'),require('./api/intFreshdeskAccount'));_0x4799e2['use'](_0x69b4('0xa6'),require(_0x69b4('0xa7')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xa8'),require(_0x69b4('0xa9')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xaa'),require(_0x69b4('0xab')));_0x4799e2[_0x69b4('0x7')]('/api/integrations/vtiger/configurations',require(_0x69b4('0xac')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xad'),require(_0x69b4('0xae')));_0x4799e2[_0x69b4('0x7')]('/api/integrations/servicenow/accounts',require(_0x69b4('0xaf')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xb0'),require(_0x69b4('0xb1')));_0x4799e2['use'](_0x69b4('0xb2'),require(_0x69b4('0xb3')));_0x4799e2[_0x69b4('0x7')]('/api/integrations/dynamics365/accounts',require(_0x69b4('0xb4')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xb5'),require(_0x69b4('0xb6')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xb7'),require('./api/intDynamics365Field'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xb8'),require('./api/intFreshsalesAccount'));_0x4799e2['use']('/api/integrations/freshsales/configurations',require('./api/intFreshsalesConfiguration'));_0x4799e2['use'](_0x69b4('0xb9'),require('./api/intFreshsalesField'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xba'),require(_0x69b4('0xbb')));_0x4799e2['use']('/api/chat/reports/queue',require(_0x69b4('0xbc')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xbd'),require(_0x69b4('0xbe')));_0x4799e2['use'](_0x69b4('0xbf'),require('./api/jscriptyAnswerReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xc0'),require(_0x69b4('0xc1')));_0x4799e2['use'](_0x69b4('0xc2'),require('./api/jscriptySessionReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xc3'),require(_0x69b4('0xc4')));_0x4799e2['use'](_0x69b4('0xc5'),require(_0x69b4('0xc6')));_0x4799e2[_0x69b4('0x7')]('/api/square/details/reports',require(_0x69b4('0xc7')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xc8'),require(_0x69b4('0xc9')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xca'),require(_0x69b4('0xcb')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xcc'),require(_0x69b4('0xcd')));_0x4799e2['use']('/api/square/projects',require(_0x69b4('0xce')));_0x4799e2['use'](_0x69b4('0xcf'),require(_0x69b4('0xd0')));_0x4799e2[_0x69b4('0x7')]('/api/square/messages',require(_0x69b4('0xd1')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xd2'),require('./api/team'));_0x4799e2[_0x69b4('0x7')]('/api/license',require(_0x69b4('0xd3')));_0x4799e2['use'](_0x69b4('0xd4'),require(_0x69b4('0xd5')));_0x4799e2[_0x69b4('0x7')]('/api/migrations',require('./api/migration'));_0x4799e2['use'](_0x69b4('0xd6'),require(_0x69b4('0xd7')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xd8'),require(_0x69b4('0xd9')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xda'),require('./api/mailTransferReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xdb'),require(_0x69b4('0xdc')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xdd'),require('./api/faxTransferReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xde'),require('./api/openchannelTransferReport'));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xdf'),require(_0x69b4('0xe0')));_0x4799e2[_0x69b4('0x7')]('/api/cm/lists',require(_0x69b4('0xe1')));_0x4799e2[_0x69b4('0x7')]('/api/voice/prefixes',require(_0x69b4('0xe2')));_0x4799e2['use'](_0x69b4('0xe3'),require(_0x69b4('0xe4')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xe5'),require('./api/userProfileSection'));_0x4799e2['use'](_0x69b4('0xe6'),require('./api/userProfileResource'));_0x4799e2[_0x69b4('0x7')]('/api/userNotifications',require(_0x69b4('0xe7')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xe8'),require(_0x69b4('0xe9')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xea'),require(_0x69b4('0xeb')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xec'),require(_0x69b4('0xed')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xee'),require(_0x69b4('0xef')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xf0'),require(_0x69b4('0xf1')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xf2'),require('./api/whatsappTransferReport'));_0x4799e2[_0x69b4('0x7')]('/api/whatsapp/queues',require(_0x69b4('0xf3')));_0x4799e2[_0x69b4('0x7')]('/api/cloudProviders',require(_0x69b4('0xf4')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xf5'),require('./api/realtime'));_0x4799e2[_0x69b4('0x7')]('/api/user-settings',require(_0x69b4('0xf6')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xf7'),require(_0x69b4('0xf8')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xf9'),require(_0x69b4('0xfa')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xfb'),require(_0x69b4('0xfc')));_0x4799e2['use']('/api/jira',require(_0x69b4('0xfd')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0xfe'),require(_0x69b4('0xff')));_0x4799e2[_0x69b4('0x7')]('/api/version',require(_0x69b4('0x100')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x101'),require(_0x69b4('0x102')));_0x4799e2[_0x69b4('0x7')]('/api/pm2',require(_0x69b4('0x103')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x104'),require(_0x69b4('0x105')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x106'),clientSideLogs);_0x4799e2[_0x69b4('0x7')](_0x69b4('0x107'),express[_0x69b4('0x108')](path[_0x69b4('0x109')](config[_0x69b4('0x10a')],_0x69b4('0x107'))));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x10b'),express[_0x69b4('0x108')](path[_0x69b4('0x109')](config[_0x69b4('0x10a')],_0x69b4('0x10b'))));_0x4799e2[_0x69b4('0x7')]('/demo',express['static'](path[_0x69b4('0x109')](config[_0x69b4('0x10a')],'/demo')));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x10c'),express[_0x69b4('0x108')](path[_0x69b4('0x109')](config[_0x69b4('0x10a')],_0x69b4('0x10d'),_0x69b4('0x10e'))));_0x4799e2[_0x69b4('0x7')](_0x69b4('0x10f'),express[_0x69b4('0x108')](path[_0x69b4('0x109')](config[_0x69b4('0x10a')],_0x69b4('0x110'))));_0x4799e2[_0x69b4('0x111')](_0x69b4('0x112'))[_0x69b4('0x113')](errors[0x194]);_0x4799e2[_0x69b4('0x111')]('/*')[_0x69b4('0x113')](function(_0x1e584e,_0x292576){_0x292576[_0x69b4('0x114')](path[_0x69b4('0x115')](_0x4799e2[_0x69b4('0x113')](_0x69b4('0x116'))+'/index.html'));});return _0x4799e2;});};
\ No newline at end of file
+var _0xff42=['./api/smsMessage','/api/sms/queues','./api/smsQueue','/api/openchannel/accounts','./api/openchannelAccount','/api/openchannel/interactions','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelMessage','/api/chat/websites','./api/chatWebsite','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','/api/chat/messages','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','./api/chatQueue','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_black','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','/api/actions','./api/action','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','/api/conditions','./api/condition','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/schedules','./api/sound','./api/tag','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/triggers','./api/trigger','/api/integrations','/api/integrations/reports','./api/integrationReport','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','/api/analytics/metrics','/api/analytics/field_reports','./api/analyticTreeReport','./api/intSalesforceAccount','/api/integrations/salesforce/configurations','./api/intSalesforceConfiguration','./api/intSalesforceField','/api/integrations/sugarcrm/accounts','./api/intSugarcrmAccount','/api/integrations/sugarcrm/configurations','/api/integrations/sugarcrm/fields','./api/intDeskAccount','/api/integrations/desk/configurations','./api/intDeskConfiguration','/api/integrations/desk/fields','./api/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','/api/integrations/zoho/fields','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','/api/integrations/servicenow/fields','./api/intServicenowField','/api/integrations/dynamics365/accounts','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','./api/intDynamics365Configuration','./api/intDynamics365Field','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','/api/integrations/freshsales/fields','./api/intFreshsalesField','./api/network','/api/chat/reports/queue','/api/chat/internal/messages','./api/chatInternalMessage','./api/jscriptyAnswerReport','/api/jscripty/questions/reports','/api/jscripty/sessions/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','/api/jscripty/projects','./api/jscriptyProject','/api/settings','/api/square/odbc','./api/squareOdbc','/api/square/projects','/api/square/recordings','./api/squareRecording','./api/squareMessage','/api/teams','./api/team','/api/license','/api/campaigns','/api/migrations','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','./api/openchannelTransferReport','/api/sms/reports/transfer','./api/smsTransferReport','./api/cmList','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userProfileResource','/api/userNotifications','./api/userNotification','/api/whatsapp/accounts','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','./api/whatsappMessage','/api/whatsapp/reports/queue','./api/whatsappQueueReport','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/user-settings','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','./api/jira','/api/rpc','./api/rpc','/api/version','./api/version','/api/system','./api/system','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','join','root','/www','static','/demo','/snippet','snippet','3.0.0','/plugins','/server/files/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','appPath','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','use','/api/users','./api/user','/api/voice/chanspy','/api/voice/contexts','./api/voiceContext','./api/voiceExtension','/api/voice/mohs','./api/voiceMusicOnHold','./api/voiceQueue','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','./api/screenRecording','/api/voice/mails/messages','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','/api/voice/queues/reports','/api/members/reports','./api/memberReport','./api/trunk','./api/voiceTransferReport','/api/mail/out_servers','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','./api/dashboard','/api/dashboards/items','./api/dashboardItem','/api/fax/accounts','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxMessage','/api/fax/queues','./api/faxQueue','/api/fax/reports/queue','./api/faxQueueReport','/api/sms/accounts','./api/smsAccount','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages'];(function(_0xd0d5ae,_0x1d506d){var _0xa090b8=function(_0x4b566c){while(--_0x4b566c){_0xd0d5ae['push'](_0xd0d5ae['shift']());}};_0xa090b8(++_0x1d506d);}(_0xff42,0xd1));var _0x2ff4=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xff42[_0x20a584];return _0x4b41a8;};'use strict';var path=require(_0x2ff4('0x0'));var express=require(_0x2ff4('0x1'));var errors=require(_0x2ff4('0x2'));var config=require(_0x2ff4('0x3'));var setupLoggers=require(_0x2ff4('0x4'))[_0x2ff4('0x5')];var clientSideLogs=require(_0x2ff4('0x6'));exports[_0x2ff4('0x7')]=function(_0x4d87a5){return setupLoggers(_0x4d87a5)['then'](function(){_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9'),require(_0x2ff4('0xa')));_0x4d87a5['use'](_0x2ff4('0xb'),require('./api/voiceChanSpy'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc'),require(_0x2ff4('0xd')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/extensions',require(_0x2ff4('0xe')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf'),require(_0x2ff4('0x10')));_0x4d87a5['use']('/api/voice/queues',require(_0x2ff4('0x11')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x12'),require(_0x2ff4('0x13')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x14'),require(_0x2ff4('0x15')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/mails',require('./api/voiceMail'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x16'),require(_0x2ff4('0x17')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x18'),require(_0x2ff4('0x19')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1a'),require(_0x2ff4('0x1b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1c'),require('./api/voiceAgentReport'));_0x4d87a5['use'](_0x2ff4('0x1d'),require('./api/voiceQueueReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x1e'),require(_0x2ff4('0x1f')));_0x4d87a5[_0x2ff4('0x8')]('/api/trunks',require(_0x2ff4('0x20')));_0x4d87a5['use']('/api/voice/transfers/reports',require(_0x2ff4('0x21')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x22'),require('./api/mailServerOut'));_0x4d87a5['use']('/api/mail/accounts',require(_0x2ff4('0x23')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x24'),require(_0x2ff4('0x25')));_0x4d87a5['use'](_0x2ff4('0x26'),require(_0x2ff4('0x27')));_0x4d87a5['use'](_0x2ff4('0x28'),require(_0x2ff4('0x29')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x2a'),require(_0x2ff4('0x2b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x2c'),require(_0x2ff4('0x2d')));_0x4d87a5[_0x2ff4('0x8')]('/api/mail/reports/queue',require(_0x2ff4('0x2e')));_0x4d87a5[_0x2ff4('0x8')]('/api/dashboards',require(_0x2ff4('0x2f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x30'),require(_0x2ff4('0x31')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x32'),require('./api/faxAccount'));_0x4d87a5[_0x2ff4('0x8')]('/api/fax/applications',require(_0x2ff4('0x33')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x34'),require(_0x2ff4('0x35')));_0x4d87a5['use'](_0x2ff4('0x36'),require(_0x2ff4('0x37')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x38'),require(_0x2ff4('0x39')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3a'),require(_0x2ff4('0x3b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3c'),require(_0x2ff4('0x3d')));_0x4d87a5[_0x2ff4('0x8')]('/api/sms/applications',require(_0x2ff4('0x3e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x3f'),require(_0x2ff4('0x40')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x41'),require(_0x2ff4('0x42')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x43'),require(_0x2ff4('0x44')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x45'),require(_0x2ff4('0x46')));_0x4d87a5[_0x2ff4('0x8')]('/api/openchannel/applications',require('./api/openchannelApplication'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x47'),require(_0x2ff4('0x48')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x49'),require(_0x2ff4('0x4a')));_0x4d87a5['use']('/api/openchannel/queues',require('./api/openchannelQueue'));_0x4d87a5['use'](_0x2ff4('0x4b'),require(_0x2ff4('0x4c')));_0x4d87a5['use'](_0x2ff4('0x4d'),require(_0x2ff4('0x4e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x4f'),require(_0x2ff4('0x50')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x51'),require('./api/chatInteraction'));_0x4d87a5['use'](_0x2ff4('0x52'),require('./api/chatMessage'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x53'),require(_0x2ff4('0x54')));_0x4d87a5['use'](_0x2ff4('0x55'),require(_0x2ff4('0x56')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x57'),require(_0x2ff4('0x58')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x59'),require('./api/chatProactiveAction'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x5a'),require(_0x2ff4('0x5b')));_0x4d87a5['use'](_0x2ff4('0x5c'),require(_0x2ff4('0x5d')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x5e'),require(_0x2ff4('0x5f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x60'),require(_0x2ff4('0x61')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x62'),require(_0x2ff4('0x63')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/hopper_history',require(_0x2ff4('0x64')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/custom_fields',require('./api/cmCustomField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x65'),require(_0x2ff4('0x66')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x67'),require(_0x2ff4('0x68')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x69'),require(_0x2ff4('0x6a')));_0x4d87a5['use']('/api/dispositions',require('./api/disposition'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6b'),require(_0x2ff4('0x6c')));_0x4d87a5[_0x2ff4('0x8')]('/api/intervals',require('./api/interval'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6d'),require(_0x2ff4('0x6e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x6f'),require(_0x2ff4('0x70')));_0x4d87a5[_0x2ff4('0x8')]('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x71'),require('./api/schedule'));_0x4d87a5['use']('/api/sounds',require(_0x2ff4('0x72')));_0x4d87a5[_0x2ff4('0x8')]('/api/tags',require(_0x2ff4('0x73')));_0x4d87a5[_0x2ff4('0x8')]('/api/contact_item_types',require(_0x2ff4('0x74')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm_contact_has_items',require(_0x2ff4('0x75')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x76'),require(_0x2ff4('0x77')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x78'),require(_0x2ff4('0x79')));_0x4d87a5['use'](_0x2ff4('0x7a'),require(_0x2ff4('0x7b')));_0x4d87a5[_0x2ff4('0x8')]('/api/variables',require('./api/variable'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x7c'),require('./api/integration'));_0x4d87a5['use'](_0x2ff4('0x7d'),require(_0x2ff4('0x7e')));_0x4d87a5[_0x2ff4('0x8')]('/api/analytics/custom_reports',require(_0x2ff4('0x7f')));_0x4d87a5['use'](_0x2ff4('0x80'),require(_0x2ff4('0x81')));_0x4d87a5['use'](_0x2ff4('0x82'),require('./api/analyticExtractedReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x83'),require('./api/analyticMetric'));_0x4d87a5['use'](_0x2ff4('0x84'),require('./api/analyticFieldReport'));_0x4d87a5[_0x2ff4('0x8')]('/api/analytics/tree_reports',require(_0x2ff4('0x85')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/salesforce/accounts',require(_0x2ff4('0x86')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x87'),require(_0x2ff4('0x88')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/salesforce/fields',require(_0x2ff4('0x89')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8a'),require(_0x2ff4('0x8b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8c'),require('./api/intSugarcrmConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8d'),require('./api/intSugarcrmField'));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/desk/accounts',require(_0x2ff4('0x8e')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x8f'),require(_0x2ff4('0x90')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x91'),require(_0x2ff4('0x92')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/zoho/accounts',require(_0x2ff4('0x93')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x94'),require('./api/intZohoConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x95'),require('./api/intZohoField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x96'),require(_0x2ff4('0x97')));_0x4d87a5['use']('/api/integrations/zendesk/configurations',require(_0x2ff4('0x98')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x99'),require(_0x2ff4('0x9a')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/freshdesk/accounts',require(_0x2ff4('0x9b')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9c'),require(_0x2ff4('0x9d')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x9e'),require(_0x2ff4('0x9f')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa0'),require(_0x2ff4('0xa1')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa2'),require(_0x2ff4('0xa3')));_0x4d87a5[_0x2ff4('0x8')]('/api/integrations/vtiger/fields',require('./api/intVtigerField'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa4'),require(_0x2ff4('0xa5')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa6'),require('./api/intServicenowConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa7'),require(_0x2ff4('0xa8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xa9'),require(_0x2ff4('0xaa')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xab'),require(_0x2ff4('0xac')));_0x4d87a5['use']('/api/integrations/dynamics365/fields',require(_0x2ff4('0xad')));_0x4d87a5['use']('/api/integrations/freshsales/accounts',require(_0x2ff4('0xae')));_0x4d87a5['use'](_0x2ff4('0xaf'),require('./api/intFreshsalesConfiguration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb0'),require(_0x2ff4('0xb1')));_0x4d87a5[_0x2ff4('0x8')]('/api/networks',require(_0x2ff4('0xb2')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb3'),require('./api/chatQueueReport'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb4'),require(_0x2ff4('0xb5')));_0x4d87a5['use']('/api/jscripty/answers/reports',require(_0x2ff4('0xb6')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xb7'),require('./api/jscriptyQuestionReport'));_0x4d87a5['use'](_0x2ff4('0xb8'),require(_0x2ff4('0xb9')));_0x4d87a5['use'](_0x2ff4('0xba'),require(_0x2ff4('0xbb')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbc'),require(_0x2ff4('0xbd')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbe'),require('./api/squareReportDetail'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xbf'),require(_0x2ff4('0xc0')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc1'),require('./api/setting'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc2'),require(_0x2ff4('0xc3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc4'),require('./api/squareProject'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc5'),require(_0x2ff4('0xc6')));_0x4d87a5['use']('/api/square/messages',require(_0x2ff4('0xc7')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xc8'),require(_0x2ff4('0xc9')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xca'),require('./api/license'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcb'),require('./api/campaign'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcc'),require('./api/migration'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcd'),require(_0x2ff4('0xce')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xcf'),require(_0x2ff4('0xd0')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd1'),require(_0x2ff4('0xd2')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd3'),require(_0x2ff4('0xd4')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd5'),require(_0x2ff4('0xd6')));_0x4d87a5['use']('/api/openchannel/reports/transfer',require(_0x2ff4('0xd7')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xd8'),require(_0x2ff4('0xd9')));_0x4d87a5[_0x2ff4('0x8')]('/api/cm/lists',require(_0x2ff4('0xda')));_0x4d87a5[_0x2ff4('0x8')]('/api/voice/prefixes',require(_0x2ff4('0xdb')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xdc'),require(_0x2ff4('0xdd')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xde'),require(_0x2ff4('0xdf')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe0'),require(_0x2ff4('0xe1')));_0x4d87a5['use'](_0x2ff4('0xe2'),require(_0x2ff4('0xe3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe4'),require('./api/whatsappAccount'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe5'),require('./api/whatsappApplication'));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe6'),require(_0x2ff4('0xe7')));_0x4d87a5['use']('/api/whatsapp/messages',require(_0x2ff4('0xe8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xe9'),require(_0x2ff4('0xea')));_0x4d87a5[_0x2ff4('0x8')]('/api/whatsapp/reports/transfer',require(_0x2ff4('0xeb')));_0x4d87a5[_0x2ff4('0x8')]('/api/whatsapp/queues',require(_0x2ff4('0xec')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xed'),require(_0x2ff4('0xee')));_0x4d87a5['use']('/api/realtime',require(_0x2ff4('0xef')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf0'),require('./api/user-setting'));_0x4d87a5[_0x2ff4('0x8')]('/api/auth/local',require(_0x2ff4('0xf1')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf2'),require(_0x2ff4('0xf3')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf4'),require(_0x2ff4('0xf5')));_0x4d87a5[_0x2ff4('0x8')]('/api/jira',require(_0x2ff4('0xf6')));_0x4d87a5['use'](_0x2ff4('0xf7'),require(_0x2ff4('0xf8')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xf9'),require(_0x2ff4('0xfa')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xfb'),require(_0x2ff4('0xfc')));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0xfd'),require(_0x2ff4('0xfe')));_0x4d87a5['use'](_0x2ff4('0xff'),require(_0x2ff4('0x100')));_0x4d87a5['use'](_0x2ff4('0x101'),clientSideLogs);_0x4d87a5['use'](_0x2ff4('0x102'),express['static'](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x102'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x105'),express[_0x2ff4('0x106')](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x105'))));_0x4d87a5['use'](_0x2ff4('0x107'),express['static'](path[_0x2ff4('0x103')](config[_0x2ff4('0x104')],_0x2ff4('0x107'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x108'),express[_0x2ff4('0x106')](path[_0x2ff4('0x103')](config['root'],_0x2ff4('0x109'),_0x2ff4('0x10a'))));_0x4d87a5[_0x2ff4('0x8')](_0x2ff4('0x10b'),express[_0x2ff4('0x106')](path['join'](config[_0x2ff4('0x104')],_0x2ff4('0x10c'))));_0x4d87a5[_0x2ff4('0x10d')](_0x2ff4('0x10e'))[_0x2ff4('0x10f')](errors[0x194]);_0x4d87a5[_0x2ff4('0x10d')]('/*')[_0x2ff4('0x10f')](function(_0x11bbc8,_0x49aaa4){_0x49aaa4['sendFile'](path[_0x2ff4('0x110')](_0x4d87a5['get'](_0x2ff4('0x111'))+_0x2ff4('0x112')));});return _0x4d87a5;});};
\ No newline at end of file
index 620d050..f90abab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8f=['../api/voiceTransferReport/voiceTransferReport.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailInteraction/mailInteraction.rpc','../api/mailMessage/mailMessage.rpc','../api/mailApplication/mailApplication.rpc','../api/faxApplication/faxApplication.rpc','../api/faxQueue/faxQueue.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intFreshdeskAccount/intFreshdeskAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/attachment/attachment.rpc','../api/plugin/plugin.rpc','../api/whatsappAccount/whatsappAccount.rpc','rpc','port','localhost','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','RPC\x20listening\x20on\x20','jayson/promise','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceCallReport/voiceCallReport.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/voiceQueueReport/voiceQueueReport.rpc','../api/trunk/trunk.rpc'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x2e8f,0x180));var _0xf2e8=function(_0x2afbb0,_0x44f16d){_0x2afbb0=_0x2afbb0-0x0;var _0x411ff2=_0x2e8f[_0x2afbb0];return _0x411ff2;};'use strict';var jayson=require(_0xf2e8('0x0'));var _=require('lodash');var config=require(_0xf2e8('0x1'));exports[_0xf2e8('0x2')]=function(){return new Promise(function(_0x2cbe96,_0x2f72e5){var _0x4f1093={};_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x4')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/voiceExtension/voiceExtension.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x5')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x6')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x7')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x8')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x9')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0xa')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/memberReport/memberReport.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0xb')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0xc')));_0x4f1093=_['merge'](_0x4f1093,require('../api/userVoiceQueueRt/userVoiceQueueRt.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0xd')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0xe')));_0x4f1093=_['merge'](_0x4f1093,require('../api/mailQueue/mailQueue.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0xf')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x10')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x11')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/mailQueueReport/mailQueueReport.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/faxAccount/faxAccount.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x12')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/faxInteraction/faxInteraction.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/faxMessage/faxMessage.rpc'));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x13')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/faxQueueReport/faxQueueReport.rpc'));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x14')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/smsInteraction/smsInteraction.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x15')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x16')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x17')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x18')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x19')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x1a')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x1b')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x1c')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x1d')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x1e')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x1f')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x20')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/cmHopperBlack/cmHopperBlack.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x21')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x22')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x23')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x24')));_0x4f1093=_['merge'](_0x4f1093,require('../api/pause/pause.rpc'));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x25')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x26')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x27')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x28')));_0x4f1093=_['merge'](_0x4f1093,require('../api/variable/variable.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x29')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x2a')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x2b')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x2c')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x2d')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x2e')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x2f')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x30')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x31')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x32')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x33')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/squareReportDetail/squareReportDetail.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x34')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/squareOdbc/squareOdbc.rpc'));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x35')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x36')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x37')));_0x4f1093=_['merge'](_0x4f1093,require('../api/campaign/campaign.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x38')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require(_0xf2e8('0x39')));_0x4f1093=_['merge'](_0x4f1093,require(_0xf2e8('0x3a')));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x4f1093=_['merge'](_0x4f1093,require('../api/whatsappMessage/whatsappMessage.rpc'));_0x4f1093=_['merge'](_0x4f1093,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x4f1093=_[_0xf2e8('0x3')](_0x4f1093,require('../api/whatsappQueue/whatsappQueue.rpc'));var _0x5cba07=jayson['server'](_0x4f1093)['http']();var _0x74c74d=config[_0xf2e8('0x3b')][_0xf2e8('0x3c')]||config[_0xf2e8('0x3c')]+0x1;var _0xeda628=config[_0xf2e8('0x3b')]['ip']||_0xf2e8('0x3d');_0x5cba07['on'](_0xf2e8('0x3e'),function(_0xc4a93b){return _0x2f72e5(_0xc4a93b);});_0x5cba07['listen'](_0x74c74d,_0xeda628,function(){console[_0xf2e8('0x3f')](_0xf2e8('0x40'),_0xeda628,_0x74c74d);require('../config/triggers')['default']();return _0x2cbe96(_0xf2e8('0x41')+_0xeda628+':'+_0x74c74d);});});};
\ No newline at end of file
+var _0x9b97=['../api/intZohoAccount/intZohoAccount.rpc','../api/intVtigerAccount/intVtigerAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','rpc','port','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','../config/environment','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailServerIn/mailServerIn.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueue/mailQueue.rpc','../api/mailApplication/mailApplication.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueue/faxQueue.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatMessage/chatMessage.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/trigger/trigger.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc'];(function(_0x923991,_0x481465){var _0x191cfc=function(_0x6412e1){while(--_0x6412e1){_0x923991['push'](_0x923991['shift']());}};_0x191cfc(++_0x481465);}(_0x9b97,0x11e));var _0x79b9=function(_0x144f65,_0x4e4677){_0x144f65=_0x144f65-0x0;var _0x324bf0=_0x9b97[_0x144f65];return _0x324bf0;};'use strict';var jayson=require(_0x79b9('0x0'));var _=require('lodash');var config=require(_0x79b9('0x1'));exports[_0x79b9('0x2')]=function(){return new Promise(function(_0x20beff,_0x3079b4){var _0x512f1e={};_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/user/user.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x4')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x5')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x6')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x7')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x8')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x9')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xa')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xb')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xc')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xd')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0xe')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0xf')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/mailInteraction/mailInteraction.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/mailMessage/mailMessage.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x10')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x11')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/faxAccount/faxAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x12')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x13')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x14')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x15')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x16')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/smsAccount/smsAccount.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/smsInteraction/smsInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x17')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x18')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x19')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/openchannelInteraction/openchannelInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1a')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1b')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1c')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/chatInteraction/chatInteraction.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1d')));_0x512f1e=_['merge'](_0x512f1e,require('../api/chatQueue/chatQueue.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1e')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x1f')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x20')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x21')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x22')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x23')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x24')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x25')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x26')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x27')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x28')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x29')));_0x512f1e=_['merge'](_0x512f1e,require('../api/variable/variable.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x2a')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2b')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x2c')));_0x512f1e=_['merge'](_0x512f1e,require('../api/intZendeskAccount/intZendeskAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2d')));_0x512f1e=_['merge'](_0x512f1e,require('../api/intServicenowAccount/intServicenowAccount.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2e')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x2f')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/chatQueueReport/chatQueueReport.rpc'));_0x512f1e=_['merge'](_0x512f1e,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x30')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x31')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x32')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareOdbc/squareOdbc.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareProject/squareProject.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x33')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require('../api/squareMessage/squareMessage.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x34')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x35')));_0x512f1e=_['merge'](_0x512f1e,require('../api/plugin/plugin.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x36')));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x37')));_0x512f1e=_['merge'](_0x512f1e,require(_0x79b9('0x38')));_0x512f1e=_['merge'](_0x512f1e,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x512f1e=_[_0x79b9('0x3')](_0x512f1e,require(_0x79b9('0x39')));var _0x4d5187=jayson[_0x79b9('0x3a')](_0x512f1e)[_0x79b9('0x3b')]();var _0x396d63=config[_0x79b9('0x3c')][_0x79b9('0x3d')]||config['port']+0x1;var _0x139edb=config[_0x79b9('0x3c')]['ip']||'localhost';_0x4d5187['on']('error',function(_0x2eab0d){return _0x3079b4(_0x2eab0d);});_0x4d5187[_0x79b9('0x2')](_0x396d63,_0x139edb,function(){console['log'](_0x79b9('0x3e'),_0x139edb,_0x396d63);require(_0x79b9('0x3f'))[_0x79b9('0x40')]();return _0x20beff(_0x79b9('0x41')+_0x139edb+':'+_0x396d63);});});};
\ No newline at end of file
index 88e4eba..65142ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ed3=['command','write','close','inherits','prototype','sendRequest','sync','answer','ANSWER','getData','beep','format','isArray','EXEC\x20%s\x20%s','join','setContext','SET\x20CONTEXT\x20%s','setExtension','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','setVariable','isBoolean','isNumber','toString','SAY\x20NUMBER\x20%s\x20%s','sayDigits','sayPhonetic','continueAt','noop','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','agi','AGI','wait','exec','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','util','events','EventEmitter','./reply','call','setEncoding','utf8','setTimeout','headers','emit','ready','toLowerCase','hangup','substring','520-Invalid','search','function','no\x20code','replace','result=','indexOf','substr','startsWith','split','length','match','error','E_AGI_SOCKET_ERROR','code','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy'];(function(_0x27e51b,_0x2b4412){var _0x5d22ab=function(_0x303b5f){while(--_0x303b5f){_0x27e51b['push'](_0x27e51b['shift']());}};_0x5d22ab(++_0x2b4412);}(_0x5ed3,0x1f3));var _0x35ed=function(_0x579424,_0x131f87){_0x579424=_0x579424-0x0;var _0x5b1c4b=_0x5ed3[_0x579424];return _0x5b1c4b;};'use strict';var util=require(_0x35ed('0x0'));var _=require('lodash');var EventEmitter=require(_0x35ed('0x1'))[_0x35ed('0x2')];var AGIReply=require(_0x35ed('0x3'));var AGIError=require('./error');function AGIChannel(_0x5a195e){var _0x1be624=this,_0x4d070=new AGIReply(),_0x1908f3=![],_0x481b09={};EventEmitter[_0x35ed('0x4')](_0x1be624);_0x5a195e[_0x35ed('0x5')](_0x35ed('0x6'));_0x5a195e[_0x35ed('0x7')](0x8*0x3c*0x3c*0x3e8);_0x4d070['setEncoding'](_0x35ed('0x6'));_0x4d070['on'](_0x35ed('0x8'),function(_0x274ce2){for(var _0x25a733 in _0x274ce2){_0x1be624[_0x25a733]=_0x274ce2[_0x25a733];}_0x1be624[_0x35ed('0x9')](_0x35ed('0xa'));});_0x4d070['on']('line',function(_0x59ccb1){if(_0x59ccb1[_0x35ed('0xb')]()=='hangup'){_0x1be624['emit'](_0x35ed('0xc'));return;}if(_0x59ccb1[_0x35ed('0xd')](0x0,0xb)==_0x35ed('0xe')){_0x1908f3=!![];}if(_0x1908f3){_0x481b09['rx']+=_0x59ccb1+'\x0a';if(_0x59ccb1[_0x35ed('0xf')]('520\x20End\x20of\x20proper')!=-0x1){_0x1908f3=![];}}else{_0x481b09['rx']=_0x59ccb1;}if(_0x1908f3){return;}if(typeof _0x481b09['cb']==_0x35ed('0x10')){var _0x7b2467=_0x481b09['rx'][_0x35ed('0xd')](0x0,0x3),_0xd89531=null,_0x189ae6=null;_0x7b2467=parseInt(_0x7b2467);if(isNaN(_0x7b2467)){_0x481b09['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x35ed('0x11')});return;}if(_0x7b2467!=0xc8){_0x481b09['cb'](null,{'code':_0x7b2467,'result':-0x1,'extra':'KO'});return;}_0xd89531=_0x481b09['rx'][_0x35ed('0xd')](0x4)[_0x35ed('0x12')](_0x35ed('0x13'),'');if(_0xd89531[_0x35ed('0x14')]('\x20')!=-0x1){_0xd89531=_0xd89531[_0x35ed('0x15')](0x0,_0xd89531[_0x35ed('0x14')]('\x20'));}if(_[_0x35ed('0x16')](_0xd89531,'-1')){_0xd89531=parseInt(_0xd89531);}_0x189ae6=_0x481b09['rx'][_0x35ed('0x17')]('\x20');if(_0x189ae6['length']==0x3){_0x189ae6=_0x189ae6[0x2]['substring'](0x1,_0x189ae6[0x2][_0x35ed('0x18')]-0x1);}else if(_0x189ae6[_0x35ed('0x18')]>0x3){var _0x539cfc=/\((.+)\)/;var _0x381a75=_0x481b09['rx'][_0x35ed('0x19')](_0x539cfc);if(_0x381a75){_0x189ae6=_0x381a75[0x1];}else{_0x189ae6=null;}}else{_0x189ae6=null;}_0x481b09['cb'](null,{'code':_0x7b2467,'result':_0xd89531,'extra':_0x189ae6});}});_0x5a195e['on'](_0x35ed('0x1a'),function(_0x58405c){_0x1be624[_0x35ed('0x9')](_0x35ed('0x1a'),new AGIError(_0x35ed('0x1b'),_0x58405c[_0x35ed('0x1c')]));});_0x5a195e['on']('close',function(){_0x1be624['emit']('close',new AGIError(_0x35ed('0x1d')));});_0x5a195e['on'](_0x35ed('0x1e'),function(){_0x1be624[_0x35ed('0x9')](_0x35ed('0x1e'),new AGIError(_0x35ed('0x1f')));_0x5a195e[_0x35ed('0x20')]();});_0x5a195e['pipe'](_0x4d070);this[_0x35ed('0x21')]=function(_0xfed00b,_0x520d13){var _0xfed00b=_0xfed00b||'',_0x520d13=typeof _0x520d13==_0x35ed('0x10')?_0x520d13:new Function();_0x481b09={'tx':_0xfed00b,'rx':'','cb':_0x520d13};_0x5a195e[_0x35ed('0x22')](_0xfed00b+'\x0a');},this[_0x35ed('0x23')]=function(){_0x5a195e[_0x35ed('0x20')]();};}util[_0x35ed('0x24')](AGIChannel,EventEmitter);AGIChannel[_0x35ed('0x25')][_0x35ed('0x26')]=function(_0x176f0a){return this['command'][_0x35ed('0x27')](this,_0x176f0a);};AGIChannel['prototype'][_0x35ed('0x28')]=function(){return this['sendRequest'](_0x35ed('0x29'));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x2a')]=function(_0x3aabcd,_0x22d599,_0x499b99){_0x3aabcd=_0x3aabcd===undefined?_0x35ed('0x2b'):_0x3aabcd;_0x22d599=_0x22d599===undefined?'5':_0x22d599;_0x499b99=_0x499b99===undefined?'1':_0x499b99;return this[_0x35ed('0x26')](util[_0x35ed('0x2c')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0x3aabcd,_0x22d599*0x3e8,_0x499b99));};AGIChannel[_0x35ed('0x25')]['noop']=function(_0x361ded){_0x361ded=_0x361ded||'NO\x20MESSAGE';return this[_0x35ed('0x26')](util[_0x35ed('0x2c')]('VERBOSE\x20\x22%s\x22',_0x361ded));};AGIChannel[_0x35ed('0x25')]['exec']=function(_0x1a9a3e,_0x277aad){if(_[_0x35ed('0x2d')](_0x277aad)){return this['sendRequest'](util[_0x35ed('0x2c')](_0x35ed('0x2e'),_0x1a9a3e,_0x277aad[_0x35ed('0x2f')](',')));}return this[_0x35ed('0x26')](util['format'](_0x35ed('0x2e'),_0x1a9a3e,_0x277aad));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x30')]=function(_0x583d34){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')](_0x35ed('0x31'),_0x583d34));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x32')]=function(_0x211de2){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')](_0x35ed('0x33'),_0x211de2));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x34')]=function(_0x54986c){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')](_0x35ed('0x35'),_0x54986c));};AGIChannel[_0x35ed('0x25')][_0x35ed('0xc')]=function(){return this[_0x35ed('0x26')]('HANGUP');};AGIChannel[_0x35ed('0x25')][_0x35ed('0x36')]=function(_0x4bc042,_0x4e11ff){var _0x54dbba=_[_0x35ed('0x37')](_0x4e11ff)||_[_0x35ed('0x38')](_0x4e11ff)?_0x4e11ff[_0x35ed('0x39')]():_0x4e11ff;return this[_0x35ed('0x26')](util[_0x35ed('0x2c')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x4bc042,_0x54dbba?_0x54dbba[_0x35ed('0x39')]()[_0x35ed('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0xbd6e8d,_0xd156b8){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')](_0x35ed('0x3a'),_0xbd6e8d,_0xd156b8));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x3b')]=function(_0x2e06e1,_0x5eff3a){return this['sendRequest'](util[_0x35ed('0x2c')]('SAY\x20DIGITS\x20%s\x20%s',_0x2e06e1,_0x5eff3a));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x3c')]=function(_0x33864c,_0x3d2694){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x33864c,_0x3d2694));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x3d')]=function(_0xa5defe,_0x59302f,_0x4c57fe){_0x59302f=_0x59302f||this['extension'];_0x4c57fe=_0x4c57fe||0x1;this[_0x35ed('0x30')](_0xa5defe);this[_0x35ed('0x32')](_0x59302f);this[_0x35ed('0x34')](_0x4c57fe);return this[_0x35ed('0x3e')](util['format']('GOTO\x20%s\x20%s\x20%s',_0xa5defe,_0x59302f,_0x4c57fe));};AGIChannel['prototype'][_0x35ed('0x3f')]=function(_0x153d7c){return this[_0x35ed('0x26')](util[_0x35ed('0x2c')](_0x35ed('0x40'),_0x153d7c));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x41')]=function(_0x4e8344,_0x2168bf,_0xec327e,_0x556700,_0x20e5aa,_0x4cae46){_0x2168bf=_0x2168bf||_0x35ed('0x42');_0xec327e=_0xec327e||'';_0x556700=_0x556700===undefined?-0x1:_0x556700==='-1'?-0x1:_0x556700*0x3e8;_0x20e5aa=_0x20e5aa===undefined?'':'s='+_0x20e5aa;_0x4cae46=_0x4cae46?_0x35ed('0x43'):'';return this['sendRequest'](util[_0x35ed('0x2c')](_0x35ed('0x44'),_0x4e8344,_0x2168bf,_0xec327e,_0x556700,_0x4cae46,_0x20e5aa));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x45')]=function(_0x298849,_0x2e96be){_0x2e96be=_0x2e96be||'';return this['sendRequest'](util[_0x35ed('0x2c')](_0x35ed('0x46'),_0x298849,_0x2e96be));};AGIChannel[_0x35ed('0x25')][_0x35ed('0x47')]=function(_0x280cb8){return this['exec'](_0x35ed('0x48'),_0x280cb8);};AGIChannel[_0x35ed('0x25')][_0x35ed('0x49')]=function(_0x99c1b1){return this[_0x35ed('0x4a')]('WAIT',_0x99c1b1);};AGIChannel['prototype'][_0x35ed('0x1a')]=function(_0x2f34c2,_0x1409ec){this[_0x35ed('0x3e')](util['format'](_0x35ed('0x4b'),_0x2f34c2['id'],_0x2f34c2['label'],_0x1409ec));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0xe49a=['length','match','error','code','close','timeout','E_AGI_SOCKET_TIMEOUT','destroy','command','inherits','prototype','sendRequest','sync','answer','getData','format','GET\x20DATA\x20\x22%s\x22\x20%s\x20%s','noop','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','SET\x20PRIORITY\x20%s','isNumber','toString','sayNumber','SAY\x20NUMBER\x20%s\x20%s','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','SAY\x20PHONETIC\x20\x22%s\x22\x20%s','getVariable','recordFile','wav','BEEP','RECORD\x20FILE\x20\x22%s\x22\x20\x22%s\x22\x20\x22%s\x22\x20%s\x20%s\x20%s','streamFile','STREAM\x20FILE\x20\x22%s\x22\x20\x22%s\x22','label','exports','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','emit','ready','line','toLowerCase','hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','function','no\x20code','replace','result=','substr','indexOf','split'];(function(_0x466895,_0x43f6c6){var _0x27807c=function(_0x3c9958){while(--_0x3c9958){_0x466895['push'](_0x466895['shift']());}};_0x27807c(++_0x43f6c6);}(_0xe49a,0x6f));var _0xae49=function(_0x50ae46,_0x38abe6){_0x50ae46=_0x50ae46-0x0;var _0x57586a=_0xe49a[_0x50ae46];return _0x57586a;};'use strict';var util=require('util');var _=require('lodash');var EventEmitter=require('events')[_0xae49('0x0')];var AGIReply=require(_0xae49('0x1'));var AGIError=require(_0xae49('0x2'));function AGIChannel(_0x17b1b8){var _0x5a9ac6=this,_0x1753e6=new AGIReply(),_0x48372c=![],_0x582869={};EventEmitter[_0xae49('0x3')](_0x5a9ac6);_0x17b1b8[_0xae49('0x4')](_0xae49('0x5'));_0x17b1b8[_0xae49('0x6')](0x8*0x3c*0x3c*0x3e8);_0x1753e6[_0xae49('0x4')]('utf8');_0x1753e6['on']('headers',function(_0x59de5a){for(var _0x8f1013 in _0x59de5a){_0x5a9ac6[_0x8f1013]=_0x59de5a[_0x8f1013];}_0x5a9ac6[_0xae49('0x7')](_0xae49('0x8'));});_0x1753e6['on'](_0xae49('0x9'),function(_0x5184fb){if(_0x5184fb[_0xae49('0xa')]()==_0xae49('0xb')){_0x5a9ac6[_0xae49('0x7')](_0xae49('0xb'));return;}if(_0x5184fb[_0xae49('0xc')](0x0,0xb)==_0xae49('0xd')){_0x48372c=!![];}if(_0x48372c){_0x582869['rx']+=_0x5184fb+'\x0a';if(_0x5184fb[_0xae49('0xe')](_0xae49('0xf'))!=-0x1){_0x48372c=![];}}else{_0x582869['rx']=_0x5184fb;}if(_0x48372c){return;}if(typeof _0x582869['cb']==_0xae49('0x10')){var _0x2dda5c=_0x582869['rx'][_0xae49('0xc')](0x0,0x3),_0x4c45f6=null,_0x4a09b1=null;_0x2dda5c=parseInt(_0x2dda5c);if(isNaN(_0x2dda5c)){_0x582869['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xae49('0x11')});return;}if(_0x2dda5c!=0xc8){_0x582869['cb'](null,{'code':_0x2dda5c,'result':-0x1,'extra':'KO'});return;}_0x4c45f6=_0x582869['rx'][_0xae49('0xc')](0x4)[_0xae49('0x12')](_0xae49('0x13'),'');if(_0x4c45f6['indexOf']('\x20')!=-0x1){_0x4c45f6=_0x4c45f6[_0xae49('0x14')](0x0,_0x4c45f6[_0xae49('0x15')]('\x20'));}if(_['startsWith'](_0x4c45f6,'-1')){_0x4c45f6=parseInt(_0x4c45f6);}_0x4a09b1=_0x582869['rx'][_0xae49('0x16')]('\x20');if(_0x4a09b1[_0xae49('0x17')]==0x3){_0x4a09b1=_0x4a09b1[0x2][_0xae49('0xc')](0x1,_0x4a09b1[0x2]['length']-0x1);}else if(_0x4a09b1[_0xae49('0x17')]>0x3){var _0x7a5e33=/\((.+)\)/;var _0x229c5d=_0x582869['rx'][_0xae49('0x18')](_0x7a5e33);if(_0x229c5d){_0x4a09b1=_0x229c5d[0x1];}else{_0x4a09b1=null;}}else{_0x4a09b1=null;}_0x582869['cb'](null,{'code':_0x2dda5c,'result':_0x4c45f6,'extra':_0x4a09b1});}});_0x17b1b8['on'](_0xae49('0x19'),function(_0xc93cee){_0x5a9ac6[_0xae49('0x7')](_0xae49('0x19'),new AGIError('E_AGI_SOCKET_ERROR',_0xc93cee[_0xae49('0x1a')]));});_0x17b1b8['on'](_0xae49('0x1b'),function(){_0x5a9ac6[_0xae49('0x7')]('close',new AGIError('E_AGI_SOCKET_CLOSE'));});_0x17b1b8['on'](_0xae49('0x1c'),function(){_0x5a9ac6[_0xae49('0x7')]('timeout',new AGIError(_0xae49('0x1d')));_0x17b1b8[_0xae49('0x1e')]();});_0x17b1b8['pipe'](_0x1753e6);this[_0xae49('0x1f')]=function(_0xdb696c,_0x59ad45){var _0xdb696c=_0xdb696c||'',_0x59ad45=typeof _0x59ad45==_0xae49('0x10')?_0x59ad45:new Function();_0x582869={'tx':_0xdb696c,'rx':'','cb':_0x59ad45};_0x17b1b8['write'](_0xdb696c+'\x0a');},this[_0xae49('0x1b')]=function(){_0x17b1b8[_0xae49('0x1e')]();};}util[_0xae49('0x20')](AGIChannel,EventEmitter);AGIChannel[_0xae49('0x21')][_0xae49('0x22')]=function(_0x256b5f){return this['command'][_0xae49('0x23')](this,_0x256b5f);};AGIChannel['prototype'][_0xae49('0x24')]=function(){return this[_0xae49('0x22')]('ANSWER');};AGIChannel[_0xae49('0x21')][_0xae49('0x25')]=function(_0xdbe2c2,_0x204ee0,_0x21fca5){_0xdbe2c2=_0xdbe2c2===undefined?'beep':_0xdbe2c2;_0x204ee0=_0x204ee0===undefined?'5':_0x204ee0;_0x21fca5=_0x21fca5===undefined?'1':_0x21fca5;return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x27'),_0xdbe2c2,_0x204ee0*0x3e8,_0x21fca5));};AGIChannel[_0xae49('0x21')][_0xae49('0x28')]=function(_0x67578c){_0x67578c=_0x67578c||'NO\x20MESSAGE';return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x29'),_0x67578c));};AGIChannel[_0xae49('0x21')][_0xae49('0x2a')]=function(_0x5c4638,_0x184b69){if(_[_0xae49('0x2b')](_0x184b69)){return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x2c'),_0x5c4638,_0x184b69['join'](',')));}return this[_0xae49('0x22')](util['format'](_0xae49('0x2c'),_0x5c4638,_0x184b69));};AGIChannel[_0xae49('0x21')][_0xae49('0x2d')]=function(_0x86fdc3){return this[_0xae49('0x22')](util['format'](_0xae49('0x2e'),_0x86fdc3));};AGIChannel[_0xae49('0x21')][_0xae49('0x2f')]=function(_0x1dd7f6){return this[_0xae49('0x22')](util[_0xae49('0x26')]('SET\x20EXTENSION\x20%s',_0x1dd7f6));};AGIChannel[_0xae49('0x21')][_0xae49('0x30')]=function(_0x3bdae1){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x31'),_0x3bdae1));};AGIChannel[_0xae49('0x21')][_0xae49('0xb')]=function(){return this[_0xae49('0x22')]('HANGUP');};AGIChannel[_0xae49('0x21')]['setVariable']=function(_0x2b4e77,_0x5a2e9a){var _0x56c465=_['isBoolean'](_0x5a2e9a)||_[_0xae49('0x32')](_0x5a2e9a)?_0x5a2e9a[_0xae49('0x33')]():_0x5a2e9a;return this[_0xae49('0x22')](util[_0xae49('0x26')]('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x2b4e77,_0x56c465?_0x56c465[_0xae49('0x33')]()[_0xae49('0x12')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0xae49('0x21')][_0xae49('0x34')]=function(_0x5d7356,_0x413aa5){return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x35'),_0x5d7356,_0x413aa5));};AGIChannel['prototype'][_0xae49('0x36')]=function(_0x1694ca,_0x214f09){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x37'),_0x1694ca,_0x214f09));};AGIChannel[_0xae49('0x21')][_0xae49('0x38')]=function(_0x1896c7,_0x5e0417){return this[_0xae49('0x22')](util[_0xae49('0x26')](_0xae49('0x39'),_0x1896c7,_0x5e0417));};AGIChannel[_0xae49('0x21')]['continueAt']=function(_0x5a3578,_0x5143e3,_0x588de2){_0x5143e3=_0x5143e3||this['extension'];_0x588de2=_0x588de2||0x1;this['setContext'](_0x5a3578);this[_0xae49('0x2f')](_0x5143e3);this[_0xae49('0x30')](_0x588de2);return this[_0xae49('0x28')](util['format']('GOTO\x20%s\x20%s\x20%s',_0x5a3578,_0x5143e3,_0x588de2));};AGIChannel['prototype'][_0xae49('0x3a')]=function(_0x552e13){return this[_0xae49('0x22')](util[_0xae49('0x26')]('GET\x20VARIABLE\x20\x22%s\x22',_0x552e13));};AGIChannel[_0xae49('0x21')][_0xae49('0x3b')]=function(_0x457c90,_0x9aec5,_0x3ee7ed,_0x44b415,_0x5650d1,_0x149680){_0x9aec5=_0x9aec5||_0xae49('0x3c');_0x3ee7ed=_0x3ee7ed||'';_0x44b415=_0x44b415===undefined?-0x1:_0x44b415==='-1'?-0x1:_0x44b415*0x3e8;_0x5650d1=_0x5650d1===undefined?'':'s='+_0x5650d1;_0x149680=_0x149680?_0xae49('0x3d'):'';return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x3e'),_0x457c90,_0x9aec5,_0x3ee7ed,_0x44b415,_0x149680,_0x5650d1));};AGIChannel['prototype'][_0xae49('0x3f')]=function(_0x5790f6,_0x5493fd){_0x5493fd=_0x5493fd||'';return this['sendRequest'](util[_0xae49('0x26')](_0xae49('0x40'),_0x5790f6,_0x5493fd));};AGIChannel[_0xae49('0x21')]['agi']=function(_0x1b51e5){return this[_0xae49('0x2a')]('AGI',_0x1b51e5);};AGIChannel[_0xae49('0x21')]['wait']=function(_0x37da2f){return this[_0xae49('0x2a')]('WAIT',_0x37da2f);};AGIChannel[_0xae49('0x21')]['error']=function(_0x591cc0,_0x4626ed){this[_0xae49('0x28')](util[_0xae49('0x26')]('ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s',_0x591cc0['id'],_0x591cc0[_0xae49('0x41')],_0x4626ed));return{'code':0x1f4,'result':'-1','extra':''};};module[_0xae49('0x42')]=AGIChannel;
\ No newline at end of file
index b7fad49..02f43fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd778=['Empty\x20command.','Missing\x20\x27ivr.entry\x27\x20menu.','push','message','name','exports','util','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','Socket\x20closed.','Socket\x20timeout.'];(function(_0x30dbe4,_0x176acb){var _0x5183a0=function(_0x307c19){while(--_0x307c19){_0x30dbe4['push'](_0x30dbe4['shift']());}};_0x5183a0(++_0x176acb);}(_0xd778,0x132));var _0x8d77=function(_0x34207c,_0x21dfc2){_0x34207c=_0x34207c-0x0;var _0x3b1c2e=_0xd778[_0x34207c];return _0x3b1c2e;};'use strict';var util=require(_0x8d77('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x8d77('0x1'),'E_AGI_SERVER_CLOSE':_0x8d77('0x2'),'E_AGI_SERVER_MAXCONNECTION':_0x8d77('0x3'),'E_AGI_SERVER_VOICE_DISABLED':'[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','E_AGI_SOCKET_ERROR':'Socket\x20error.\x20Code:\x20%s.','E_AGI_SOCKET_CLOSE':_0x8d77('0x4'),'E_AGI_SOCKET_TIMEOUT':_0x8d77('0x5'),'E_AGI_COMMAND_EMPTY':_0x8d77('0x6'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':_0x8d77('0x7')};function AGIError(_0x37bf28){var _0x37bf28=_0x37bf28||null,_0x27129b=_0x27129b||[],_0x7835a0=0x1,_0xc3264c='';if(!error[_0x37bf28]){_0x37bf28='E_AGI_UNDEFINED';}_0x27129b['push'](error[_0x37bf28]);while(arguments[_0x7835a0]){_0x27129b[_0x8d77('0x8')](arguments[_0x7835a0]);_0x7835a0++;}_0xc3264c=util['format']['apply'](util,_0x27129b);this[_0x8d77('0x9')]=_0xc3264c;this[_0x8d77('0xa')]=_0x37bf28;}module[_0x8d77('0xb')]=AGIError;
\ No newline at end of file
+var _0x00cf=['Socket\x20timeout.','Missing\x20\x27ivr.agi_network_script\x27.','Missing\x20\x27ivr.entry\x27\x20menu.','E_AGI_UNDEFINED','push','apply','util','Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.'];(function(_0x2d6c61,_0x2a4bc2){var _0x19e4fd=function(_0xaa9f35){while(--_0xaa9f35){_0x2d6c61['push'](_0x2d6c61['shift']());}};_0x19e4fd(++_0x2a4bc2);}(_0x00cf,0x1b8));var _0xf00c=function(_0x5e6204,_0x96018e){_0x5e6204=_0x5e6204-0x0;var _0x35a0cd=_0x00cf[_0x5e6204];return _0x35a0cd;};'use strict';var util=require(_0xf00c('0x0'));var error={'E_AGI_UNDEFINED':'Undefined\x20error.','E_AGI_ARGUMENT_PORT':_0xf00c('0x1'),'E_AGI_SERVER_ERROR':_0xf00c('0x2'),'E_AGI_SERVER_CLOSE':_0xf00c('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0xf00c('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0xf00c('0x5'),'E_AGI_SOCKET_ERROR':_0xf00c('0x6'),'E_AGI_SOCKET_CLOSE':_0xf00c('0x7'),'E_AGI_SOCKET_TIMEOUT':_0xf00c('0x8'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':_0xf00c('0x9'),'E_AGI_IVR_ENTRY':_0xf00c('0xa')};function AGIError(_0x16529a){var _0x16529a=_0x16529a||null,_0x219a22=_0x219a22||[],_0x295e85=0x1,_0x1754c1='';if(!error[_0x16529a]){_0x16529a=_0xf00c('0xb');}_0x219a22['push'](error[_0x16529a]);while(arguments[_0x295e85]){_0x219a22[_0xf00c('0xc')](arguments[_0x295e85]);_0x295e85++;}_0x1754c1=util['format'][_0xf00c('0xd')](util,_0x219a22);this['message']=_0x1754c1;this['name']=_0x16529a;}module['exports']=AGIError;
\ No newline at end of file
index 104dc9f..35b5e25 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x626f=['EventEmitter','./error','redis','defaults','localhost','subscribe','agi','emit','E_AGI_SERVER_ERROR','message','projectUpdate','error','exports','lodash'];(function(_0x1694f5,_0x49b7c3){var _0x5b4321=function(_0x58c183){while(--_0x58c183){_0x1694f5['push'](_0x1694f5['shift']());}};_0x5b4321(++_0x49b7c3);}(_0x626f,0x1cd));var _0xf626=function(_0x4b6c8d,_0x3a8324){_0x4b6c8d=_0x4b6c8d-0x0;var _0x45bffa=_0x626f[_0x4b6c8d];return _0x45bffa;};'use strict';var _=require(_0xf626('0x0'));var EventEmitter=require('events')[_0xf626('0x1')];var Redis=require('ioredis');var AGIError=require(_0xf626('0x2'));var config=require('../../config/environment');config[_0xf626('0x3')]=_[_0xf626('0x4')](config[_0xf626('0x3')],{'host':_0xf626('0x5'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xf626('0x3')]);sub[_0xf626('0x6')](_0xf626('0x7'),function(_0xb695a7){if(_0xb695a7)return eventEmitter[_0xf626('0x8')]('error',new AGIError(_0xf626('0x9'),_0xb695a7));});sub['on'](_0xf626('0xa'),function(_0x73ce6e,_0x425c72){if(_0x73ce6e!==_0xf626('0x7'))return;try{var _0x1ad707=JSON['parse'](_0x425c72);eventEmitter[_0xf626('0x8')](_0xf626('0xb'),_0x1ad707);}catch(_0x3c5678){eventEmitter['emit'](_0xf626('0xc'),new AGIError(_0xf626('0x9'),_0x3c5678));}});module[_0xf626('0xd')]={'EventEmitter':eventEmitter};
\ No newline at end of file
+var _0x14b8=['exports','events','ioredis','./error','../../config/environment','redis','defaults','agi','emit','error','message','parse','projectUpdate','E_AGI_SERVER_ERROR'];(function(_0x3ea19f,_0x52d205){var _0x351803=function(_0x32e604){while(--_0x32e604){_0x3ea19f['push'](_0x3ea19f['shift']());}};_0x351803(++_0x52d205);}(_0x14b8,0xc5));var _0x814b=function(_0x22a2c1,_0x1321ce){_0x22a2c1=_0x22a2c1-0x0;var _0x3d3d1c=_0x14b8[_0x22a2c1];return _0x3d3d1c;};'use strict';var _=require('lodash');var EventEmitter=require(_0x814b('0x0'))['EventEmitter'];var Redis=require(_0x814b('0x1'));var AGIError=require(_0x814b('0x2'));var config=require(_0x814b('0x3'));config[_0x814b('0x4')]=_[_0x814b('0x5')](config[_0x814b('0x4')],{'host':'localhost','port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config['redis']);sub['subscribe'](_0x814b('0x6'),function(_0x5eb3f6){if(_0x5eb3f6)return eventEmitter[_0x814b('0x7')](_0x814b('0x8'),new AGIError('E_AGI_SERVER_ERROR',_0x5eb3f6));});sub['on'](_0x814b('0x9'),function(_0x1c56ba,_0x159f44){if(_0x1c56ba!=='agi')return;try{var _0x30c107=JSON[_0x814b('0xa')](_0x159f44);eventEmitter[_0x814b('0x7')](_0x814b('0xb'),_0x30c107);}catch(_0x123bb8){eventEmitter[_0x814b('0x7')](_0x814b('0x8'),new AGIError(_0x814b('0xc'),_0x123bb8));}});module[_0x814b('0xd')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 2dcb6e2..2f332a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5be=['condition\x20not\x20found','exports','lodash','../../../config/logger','agi','menu','getdigits','getsecretdigits','vertices','edges','addVertex','prototype','push','numberOfEdges','size','relations','traverseBFS','info','no\x20vertex\x20found','stop\x20traverse','no\x20edge/s\x20available','length','condition','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach'];(function(_0x41b665,_0x49c671){var _0x2fc95f=function(_0x3cb7c6){while(--_0x3cb7c6){_0x41b665['push'](_0x41b665['shift']());}};_0x2fc95f(++_0x49c671);}(_0xd5be,0x1b4));var _0xed5b=function(_0x4169d8,_0x3d7cd4){_0x4169d8=_0x4169d8-0x0;var _0x32084a=_0xd5be[_0x4169d8];return _0x32084a;};'use strict';var _=require(_0xed5b('0x0'));var logger=require(_0xed5b('0x1'))(_0xed5b('0x2'));var verticesWithRetry=[_0xed5b('0x3'),_0xed5b('0x4'),_0xed5b('0x5')];var Graph=function(){this[_0xed5b('0x6')]={};this[_0xed5b('0x7')]={};this['numberOfEdges']=0x0;};Graph['prototype'][_0xed5b('0x8')]=function(_0x1fa16d){this['vertices'][_0x1fa16d['id']]=_0x1fa16d;this['edges'][_0x1fa16d['id']]=[];};Graph[_0xed5b('0x9')]['addEdge']=function(_0x4ef0cf,_0xf6a3cd,_0x29b16f){this['edges'][_0x4ef0cf][_0xed5b('0xa')]({'target':_0xf6a3cd,'condition':_0x29b16f});this[_0xed5b('0xb')]+=0x1;};Graph[_0xed5b('0x9')]['size']=function(){return _[_0xed5b('0xc')](this[_0xed5b('0x6')]);};Graph[_0xed5b('0x9')][_0xed5b('0xd')]=function(){return this[_0xed5b('0xb')];};Graph[_0xed5b('0x9')]['getVertex']=function(_0x4f72d6){return this[_0xed5b('0x6')][_0x4f72d6];};Graph[_0xed5b('0x9')][_0xed5b('0xe')]=function(_0x56fe82,_0x4a3db5){if(!this['vertices'][_0x56fe82]){return logger[_0xed5b('0xf')](_0xed5b('0x10'));}var _0x3efe9f=_0x4a3db5(this[_0xed5b('0x6')][_0x56fe82]);if(!_0x3efe9f){return logger[_0xed5b('0xf')](_0xed5b('0x11'));}if(this[_0xed5b('0x7')][_0x56fe82]['length']===0x0){return logger[_0xed5b('0xf')](_0xed5b('0x12'));}for(var _0x2cf9ae=0x0,_0x2eb0e8=[],_0x4765cd=![];_0x2cf9ae<this['edges'][_0x56fe82][_0xed5b('0x13')];_0x2cf9ae+=0x1){if(this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae]['condition']){_0x2eb0e8=this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae][_0xed5b('0x14')]['split'](',');for(var _0x1927aa=0x0;_0x1927aa<_0x2eb0e8[_0xed5b('0x13')];_0x1927aa+=0x1){if(this[_0xed5b('0x6')][_0x56fe82][_0xed5b('0x15')]===_0xed5b('0x16')&&_0x2eb0e8[_0x1927aa]==='-'){_0x4765cd=this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae][_0xed5b('0x17')];logger[_0xed5b('0xf')](_0xed5b('0x18'),_0x2eb0e8[_0x1927aa],this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae]['target']);}else if(this['vertices'][_0x56fe82][_0xed5b('0x15')]===_0xed5b('0x3')&&_0x2eb0e8[_0x1927aa]==='i'){_0x4765cd=this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae][_0xed5b('0x17')];logger[_0xed5b('0xf')](_0xed5b('0x19'),_0x2eb0e8[_0x1927aa],this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae][_0xed5b('0x17')]);}if(_0x2eb0e8[_0x1927aa]===_0x3efe9f){return this[_0xed5b('0xe')](this[_0xed5b('0x7')][_0x56fe82][_0x2cf9ae]['target'],_0x4a3db5);}}}else{return this[_0xed5b('0xe')](this['edges'][_0x56fe82][_0x2cf9ae][_0xed5b('0x17')],_0x4a3db5);}}if(_0x2eb0e8['length']){if(this[_0xed5b('0x6')][_0x56fe82][_0xed5b('0x15')]===_0xed5b('0x16')){if(_0x4765cd){return this[_0xed5b('0xe')](_0x4765cd,_0x4a3db5);}return logger['info'](_0xed5b('0x1a'));}else if(_[_0xed5b('0x1b')](verticesWithRetry,this[_0xed5b('0x6')][_0x56fe82]['agicommand'])){if(_0x3efe9f==='-'){return logger['info'](_0xed5b('0x1c'));}if(_0x4765cd&&_0x3efe9f!=='t'){return this[_0xed5b('0xe')](_0x4765cd,_0x4a3db5);}return this[_0xed5b('0xe')](_0x56fe82,_0x4a3db5);}return logger[_0xed5b('0xf')](_0xed5b('0x1d'));}};module[_0xed5b('0x1e')]=Graph;
\ No newline at end of file
+var _0x856e=['push','size','vertices','relations','getVertex','traverseBFS','no\x20vertex\x20found','info','stop\x20traverse','length','condition','split','agicommand','vswitch','target','default','invalid','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','lodash','../../../config/logger','menu','getdigits','edges','numberOfEdges','addVertex','prototype'];(function(_0x381159,_0x2d07fb){var _0x2f35e4=function(_0x239985){while(--_0x239985){_0x381159['push'](_0x381159['shift']());}};_0x2f35e4(++_0x2d07fb);}(_0x856e,0xa0));var _0xe856=function(_0x2d1971,_0x20b764){_0x2d1971=_0x2d1971-0x0;var _0x4d7759=_0x856e[_0x2d1971];return _0x4d7759;};'use strict';var _=require(_0xe856('0x0'));var logger=require(_0xe856('0x1'))('agi');var verticesWithRetry=[_0xe856('0x2'),_0xe856('0x3'),'getsecretdigits'];var Graph=function(){this['vertices']={};this[_0xe856('0x4')]={};this[_0xe856('0x5')]=0x0;};Graph['prototype'][_0xe856('0x6')]=function(_0x1caadf){this['vertices'][_0x1caadf['id']]=_0x1caadf;this[_0xe856('0x4')][_0x1caadf['id']]=[];};Graph[_0xe856('0x7')]['addEdge']=function(_0x30279c,_0xd1773,_0x5e78a2){this[_0xe856('0x4')][_0x30279c][_0xe856('0x8')]({'target':_0xd1773,'condition':_0x5e78a2});this[_0xe856('0x5')]+=0x1;};Graph['prototype'][_0xe856('0x9')]=function(){return _[_0xe856('0x9')](this[_0xe856('0xa')]);};Graph['prototype'][_0xe856('0xb')]=function(){return this[_0xe856('0x5')];};Graph[_0xe856('0x7')][_0xe856('0xc')]=function(_0x5ea3bd){return this[_0xe856('0xa')][_0x5ea3bd];};Graph['prototype'][_0xe856('0xd')]=function(_0x11c749,_0x44baa5){if(!this[_0xe856('0xa')][_0x11c749]){return logger['info'](_0xe856('0xe'));}var _0x2ba4cb=_0x44baa5(this['vertices'][_0x11c749]);if(!_0x2ba4cb){return logger[_0xe856('0xf')](_0xe856('0x10'));}if(this['edges'][_0x11c749][_0xe856('0x11')]===0x0){return logger['info']('no\x20edge/s\x20available');}for(var _0x304840=0x0,_0x10282f=[],_0x50c8c4=![];_0x304840<this[_0xe856('0x4')][_0x11c749][_0xe856('0x11')];_0x304840+=0x1){if(this['edges'][_0x11c749][_0x304840][_0xe856('0x12')]){_0x10282f=this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x12')][_0xe856('0x13')](',');for(var _0x2b39e5=0x0;_0x2b39e5<_0x10282f['length'];_0x2b39e5+=0x1){if(this[_0xe856('0xa')][_0x11c749][_0xe856('0x14')]===_0xe856('0x15')&&_0x10282f[_0x2b39e5]==='-'){_0x50c8c4=this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')];logger[_0xe856('0xf')](_0xe856('0x17'),_0x10282f[_0x2b39e5],this[_0xe856('0x4')][_0x11c749][_0x304840]['target']);}else if(this[_0xe856('0xa')][_0x11c749][_0xe856('0x14')]==='menu'&&_0x10282f[_0x2b39e5]==='i'){_0x50c8c4=this[_0xe856('0x4')][_0x11c749][_0x304840]['target'];logger[_0xe856('0xf')](_0xe856('0x18'),_0x10282f[_0x2b39e5],this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')]);}if(_0x10282f[_0x2b39e5]===_0x2ba4cb){return this['traverseBFS'](this[_0xe856('0x4')][_0x11c749][_0x304840][_0xe856('0x16')],_0x44baa5);}}}else{return this['traverseBFS'](this['edges'][_0x11c749][_0x304840][_0xe856('0x16')],_0x44baa5);}}if(_0x10282f[_0xe856('0x11')]){if(this['vertices'][_0x11c749][_0xe856('0x14')]===_0xe856('0x15')){if(_0x50c8c4){return this[_0xe856('0xd')](_0x50c8c4,_0x44baa5);}return logger[_0xe856('0xf')](_0xe856('0x19'));}else if(_[_0xe856('0x1a')](verticesWithRetry,this[_0xe856('0xa')][_0x11c749]['agicommand'])){if(_0x2ba4cb==='-'){return logger[_0xe856('0xf')](_0xe856('0x1b'));}if(_0x50c8c4&&_0x2ba4cb!=='t'){return this[_0xe856('0xd')](_0x50c8c4,_0x44baa5);}return this[_0xe856('0xd')](_0x11c749,_0x44baa5);}return logger[_0xe856('0xf')]('condition\x20not\x20found');}};module['exports']=Graph;
\ No newline at end of file
index 71c80c9..a4ac6aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c35=['callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','./server','listening','lodash','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./rpc','./project','./events','EventEmitter','agi','127.0.0.1','projectUpdate','nextTick','stack','findIndex','deleted','push','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','error','[%s]\x20%s','[ERROR]\x20%s','arg_1','callerid','dnid','uniqueid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','createSquareReport','then','catch','hasOwnProperty','indexOf','agi_','debug','variables','stringify','close','hangup','handleNotFound','production','handleUnpublished','getLicense','voice'];(function(_0x1b46ac,_0x7bbaf9){var _0x362d4f=function(_0x386c59){while(--_0x386c59){_0x1b46ac['push'](_0x1b46ac['shift']());}};_0x362d4f(++_0x7bbaf9);}(_0x2c35,0x12f));var _0x52c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c35[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x52c3('0x0'));var syncho=require(_0x52c3('0x1'));var util=require(_0x52c3('0x2'));var config=require(_0x52c3('0x3'));var logger=require(_0x52c3('0x4'))('agi');var utilLicense=require(_0x52c3('0x5'));var rpc=require(_0x52c3('0x6'));var Project=require(_0x52c3('0x7'));var AGIEmitter=require(_0x52c3('0x8'))[_0x52c3('0x9')];var projects=[];config[_0x52c3('0xa')]=_['defaults'](config[_0x52c3('0xa')],{'ip':_0x52c3('0xb'),'port':0x11dd});AGIEmitter['on'](_0x52c3('0xc'),projectUpdateHandler);function connectionHandler(_0x127f9a){process[_0x52c3('0xd')](function(){syncho(function(){try{setChannelVariables(_0x127f9a);agiHandler(_0x127f9a);}catch(_0xd83485){logger['error'](_0xd83485[_0x52c3('0xe')]);}});});}function projectUpdateHandler(_0x4c9c49){try{var _0x2ff4d1=_[_0x52c3('0xf')](projects,['id',_0x4c9c49['id']]);if(_0x2ff4d1>-0x1){if(_0x4c9c49[_0x52c3('0x10')]===!![]){projects['splice'](_0x2ff4d1,0x1);}else{projects[_0x2ff4d1]=_0x4c9c49;}}else{projects[_0x52c3('0x11')](_0x4c9c49);}}catch(_0x415ed1){logger['error'](_0x415ed1[_0x52c3('0xe')]);}}function listeningHandler(){console['log'](_0x52c3('0x12'),config[_0x52c3('0xa')][_0x52c3('0x13')]);logger[_0x52c3('0x14')](util[_0x52c3('0x15')](_0x52c3('0x16'),config[_0x52c3('0xa')]['ip'],config[_0x52c3('0xa')][_0x52c3('0x13')]));}function errorHandler(_0xda896b){if(_0xda896b&&_0xda896b[_0x52c3('0x17')]&&_0xda896b[_0x52c3('0x18')]){logger[_0x52c3('0x19')](util[_0x52c3('0x15')](_0x52c3('0x1a'),_0xda896b[_0x52c3('0x17')],_0xda896b['message']));}else{logger['error'](util[_0x52c3('0x15')](_0x52c3('0x1b'),_0xda896b[_0x52c3('0xe')]));}}function closeHandler(){logger['info'](util[_0x52c3('0x15')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0x52c3('0x1c')],this['calleridname'],this[_0x52c3('0x1d')],this[_0x52c3('0x1e')],this[_0x52c3('0x1f')]));try{createSquareReport(this);}catch(_0x6c391f){logger['error'](_0x6c391f[_0x52c3('0xe')]);}}function timeoutHandler(){logger['info'](util[_0x52c3('0x15')](_0x52c3('0x20'),this[_0x52c3('0x1c')],this[_0x52c3('0x21')],this[_0x52c3('0x1d')],this[_0x52c3('0x1e')],this[_0x52c3('0x1f')]));}function hangupHandler(){logger['info'](util['format'](_0x52c3('0x22'),this[_0x52c3('0x1c')],this[_0x52c3('0x21')],this[_0x52c3('0x1d')],this[_0x52c3('0x1e')],this['uniqueid']));this['evtHangup']=!![];}function createSquareReport(_0x3e30ff,_0x38662a){rpc[_0x52c3('0x23')](_0x3e30ff)[_0x52c3('0x24')](function(_0x329f36){if(_0x38662a){_0x38662a(null,_0x329f36);}})[_0x52c3('0x25')](function(_0x2f983f){if(_0x38662a){_0x38662a(null,_0x2f983f);}});}function setChannelVariables(_0x14fe99){for(var _0x576ddc in _0x14fe99){if(_0x14fe99[_0x52c3('0x26')](_0x576ddc)){if(_0x576ddc[_0x52c3('0x27')](_0x52c3('0x28'))===0x0){_0x14fe99[_0x576ddc['substring'](0x4)]=_0x14fe99[_0x576ddc];delete _0x14fe99[_0x576ddc];}}}}function agiHandler(_0x2c3bc9){logger[_0x52c3('0x29')](_0x52c3('0x2a'),JSON[_0x52c3('0x2b')](_0x2c3bc9,null,0x2));logger[_0x52c3('0x14')](util[_0x52c3('0x15')]('[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x2c3bc9[_0x52c3('0x1c')],_0x2c3bc9[_0x52c3('0x21')],_0x2c3bc9[_0x52c3('0x1d')],_0x2c3bc9[_0x52c3('0x1e')],_0x2c3bc9[_0x52c3('0x1f')]));_0x2c3bc9['on'](_0x52c3('0x19'),errorHandler);_0x2c3bc9['on'](_0x52c3('0x2c'),closeHandler);_0x2c3bc9['on']('timeout',timeoutHandler);_0x2c3bc9['evtHangup']=![];_0x2c3bc9['on'](_0x52c3('0x2d'),hangupHandler);var _0x456067=_['find'](projects,['name',_0x2c3bc9['arg_1']]);if(!_0x456067)return Project[_0x52c3('0x2e')](_0x2c3bc9);if(!_0x456067[_0x52c3('0x2f')])return Project[_0x52c3('0x30')](_0x2c3bc9);return Project['initialize'](_0x456067,_0x2c3bc9);}function main(){var _0x2200d5;return utilLicense[_0x52c3('0x31')]()[_0x52c3('0x24')](function(_0xb17f79){if(!_0xb17f79)return;if(_0xb17f79[_0x52c3('0x32')]){if(_0xb17f79[_0x52c3('0x33')]&&_0xb17f79[_0x52c3('0x33')]>0x0){logger[_0x52c3('0x14')](util[_0x52c3('0x15')](_0x52c3('0x34'),_0xb17f79[_0x52c3('0x33')]));_0x2200d5=_0xb17f79['callysquare'];}else{logger[_0x52c3('0x14')](_0x52c3('0x35'));}}else{logger[_0x52c3('0x14')](_0x52c3('0x36'));_0x2200d5=-0x1;}})[_0x52c3('0x24')](function(){return Project[_0x52c3('0x37')]();})[_0x52c3('0x24')](function(_0x1d6ba1){projects=_0x1d6ba1;return;})['catch'](function(_0x170a04){logger[_0x52c3('0x19')](_0x52c3('0x38'),_0x170a04[_0x52c3('0xe')]);})['finally'](function(){var _0x3a0d55=require(_0x52c3('0x39'))(config[_0x52c3('0xa')]['port'],config[_0x52c3('0xa')]['ip'],_0x2200d5);_0x3a0d55['on'](_0x52c3('0x19'),errorHandler);_0x3a0d55['on'](_0x52c3('0x3a'),listeningHandler);_0x3a0d55['on']('connection',connectionHandler);_0x3a0d55['on'](_0x52c3('0x2c'),closeHandler);});}main();
\ No newline at end of file
+var _0x499c=['push','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[ERROR]\x20%s','arg_1','calleridname','callerid','dnid','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','createSquareReport','catch','hasOwnProperty','indexOf','agi_','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','uniqueid','timeout','hangup','find','handleUnpublished','initialize','getLicense','then','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','[LICENSE]','finally','./server','listening','close','lodash','util','../../config/logger','agi','../../config/license/util','./rpc','./project','./events','127.0.0.1','projectUpdate','nextTick','stack','findIndex','deleted'];(function(_0x5019fb,_0x2200db){var _0x4c49eb=function(_0x4c9112){while(--_0x4c9112){_0x5019fb['push'](_0x5019fb['shift']());}};_0x4c49eb(++_0x2200db);}(_0x499c,0x15a));var _0xc499=function(_0x236501,_0x3fbc72){_0x236501=_0x236501-0x0;var _0x4b4c38=_0x499c[_0x236501];return _0x4b4c38;};'use strict';var _=require(_0xc499('0x0'));var syncho=require('syncho');var util=require(_0xc499('0x1'));var config=require('../../config/environment');var logger=require(_0xc499('0x2'))(_0xc499('0x3'));var utilLicense=require(_0xc499('0x4'));var rpc=require(_0xc499('0x5'));var Project=require(_0xc499('0x6'));var AGIEmitter=require(_0xc499('0x7'))['EventEmitter'];var projects=[];config[_0xc499('0x3')]=_['defaults'](config['agi'],{'ip':_0xc499('0x8'),'port':0x11dd});AGIEmitter['on'](_0xc499('0x9'),projectUpdateHandler);function connectionHandler(_0x16e55b){process[_0xc499('0xa')](function(){syncho(function(){try{setChannelVariables(_0x16e55b);agiHandler(_0x16e55b);}catch(_0x41f8be){logger['error'](_0x41f8be[_0xc499('0xb')]);}});});}function projectUpdateHandler(_0x4243f9){try{var _0x47db1c=_[_0xc499('0xc')](projects,['id',_0x4243f9['id']]);if(_0x47db1c>-0x1){if(_0x4243f9[_0xc499('0xd')]===!![]){projects['splice'](_0x47db1c,0x1);}else{projects[_0x47db1c]=_0x4243f9;}}else{projects[_0xc499('0xe')](_0x4243f9);}}catch(_0x70f2ff){logger[_0xc499('0xf')](_0x70f2ff['stack']);}}function listeningHandler(){console[_0xc499('0x10')](_0xc499('0x11'),config[_0xc499('0x3')][_0xc499('0x12')]);logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x15'),config[_0xc499('0x3')]['ip'],config[_0xc499('0x3')][_0xc499('0x12')]));}function errorHandler(_0x515230){if(_0x515230&&_0x515230[_0xc499('0x16')]&&_0x515230['message']){logger['error'](util['format']('[%s]\x20%s',_0x515230[_0xc499('0x16')],_0x515230[_0xc499('0x17')]));}else{logger[_0xc499('0xf')](util['format'](_0xc499('0x18'),_0x515230[_0xc499('0xb')]));}}function closeHandler(){logger[_0xc499('0x13')](util['format']('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xc499('0x19')],this[_0xc499('0x1a')],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));try{createSquareReport(this);}catch(_0x270663){logger['error'](_0x270663[_0xc499('0xb')]);}}function timeoutHandler(){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x1d'),this[_0xc499('0x19')],this['calleridname'],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));}function hangupHandler(){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x1e'),this[_0xc499('0x19')],this['calleridname'],this[_0xc499('0x1b')],this[_0xc499('0x1c')],this['uniqueid']));this[_0xc499('0x1f')]=!![];}function createSquareReport(_0x347a97,_0x24a6d3){rpc[_0xc499('0x20')](_0x347a97)['then'](function(_0x2dec7c){if(_0x24a6d3){_0x24a6d3(null,_0x2dec7c);}})[_0xc499('0x21')](function(_0x46c72f){if(_0x24a6d3){_0x24a6d3(null,_0x46c72f);}});}function setChannelVariables(_0x4f19a6){for(var _0x2388a2 in _0x4f19a6){if(_0x4f19a6[_0xc499('0x22')](_0x2388a2)){if(_0x2388a2[_0xc499('0x23')](_0xc499('0x24'))===0x0){_0x4f19a6[_0x2388a2[_0xc499('0x25')](0x4)]=_0x4f19a6[_0x2388a2];delete _0x4f19a6[_0x2388a2];}}}}function agiHandler(_0x4a381a){logger[_0xc499('0x26')](_0xc499('0x27'),JSON['stringify'](_0x4a381a,null,0x2));logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x28'),_0x4a381a[_0xc499('0x19')],_0x4a381a['calleridname'],_0x4a381a[_0xc499('0x1b')],_0x4a381a[_0xc499('0x1c')],_0x4a381a[_0xc499('0x29')]));_0x4a381a['on'](_0xc499('0xf'),errorHandler);_0x4a381a['on']('close',closeHandler);_0x4a381a['on'](_0xc499('0x2a'),timeoutHandler);_0x4a381a['evtHangup']=![];_0x4a381a['on'](_0xc499('0x2b'),hangupHandler);var _0x4e7826=_[_0xc499('0x2c')](projects,[_0xc499('0x16'),_0x4a381a[_0xc499('0x19')]]);if(!_0x4e7826)return Project['handleNotFound'](_0x4a381a);if(!_0x4e7826['production'])return Project[_0xc499('0x2d')](_0x4a381a);return Project[_0xc499('0x2e')](_0x4e7826,_0x4a381a);}function main(){var _0x14df92;return utilLicense[_0xc499('0x2f')]()[_0xc499('0x30')](function(_0x240e47){if(!_0x240e47)return;if(_0x240e47[_0xc499('0x31')]){if(_0x240e47[_0xc499('0x32')]&&_0x240e47['callysquare']>0x0){logger[_0xc499('0x13')](util[_0xc499('0x14')](_0xc499('0x33'),_0x240e47[_0xc499('0x32')]));_0x14df92=_0x240e47[_0xc499('0x32')];}else{logger['info'](_0xc499('0x34'));}}else{logger[_0xc499('0x13')](_0xc499('0x35'));_0x14df92=-0x1;}})['then'](function(){return Project[_0xc499('0x36')]();})[_0xc499('0x30')](function(_0x83b893){projects=_0x83b893;return;})[_0xc499('0x21')](function(_0x2f5247){logger[_0xc499('0xf')](_0xc499('0x37'),_0x2f5247[_0xc499('0xb')]);})[_0xc499('0x38')](function(){var _0x2e9cfe=require(_0xc499('0x39'))(config[_0xc499('0x3')][_0xc499('0x12')],config[_0xc499('0x3')]['ip'],_0x14df92);_0x2e9cfe['on']('error',errorHandler);_0x2e9cfe['on'](_0xc499('0x3a'),listeningHandler);_0x2e9cfe['on']('connection',connectionHandler);_0x2e9cfe['on'](_0xc499('0x3b'),closeHandler);});}main();
\ No newline at end of file
index 9801ca4..5098c61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f16=['error','message','result','catch','bluebird','jayson/promise','client','request','then'];(function(_0x29edfd,_0x2eab43){var _0x556e8b=function(_0x7309fe){while(--_0x7309fe){_0x29edfd['push'](_0x29edfd['shift']());}};_0x556e8b(++_0x2eab43);}(_0x5f16,0x1c6));var _0x65f1=function(_0x8756b8,_0x1a58dc){_0x8756b8=_0x8756b8-0x0;var _0x48a2f3=_0x5f16[_0x8756b8];return _0x48a2f3;};'use strict';var BPromise=require(_0x65f1('0x0'));var jayson=require(_0x65f1('0x1'));var client=jayson[_0x65f1('0x2')]['http']({'port':0x232b});function request(_0x237091,_0x36cf3a){return new BPromise(function(_0x13906b,_0x5171ae){return client[_0x65f1('0x3')](_0x237091,_0x36cf3a)[_0x65f1('0x4')](function(_0x35909d){if(_0x35909d[_0x65f1('0x5')]){return _0x5171ae(_0x35909d[_0x65f1('0x5')][_0x65f1('0x6')]);}else{return _0x13906b(_0x35909d[_0x65f1('0x7')]);}})[_0x65f1('0x8')](function(_0x2468f6){return _0x5171ae(_0x2468f6);});});}exports['sendMailMessage']=function(_0x142209,_0x5bc001){return request('SendMail',{'account':_0x142209,'message':_0x5bc001});};
\ No newline at end of file
+var _0x1c87=['error','message','result','catch','sendMailMessage','SendMail','bluebird','jayson/promise','client','http','request'];(function(_0xba0c2,_0x54cc50){var _0x5a9fa0=function(_0x577bcb){while(--_0x577bcb){_0xba0c2['push'](_0xba0c2['shift']());}};_0x5a9fa0(++_0x54cc50);}(_0x1c87,0x1df));var _0x71c8=function(_0x446a62,_0x32bb6d){_0x446a62=_0x446a62-0x0;var _0x16a711=_0x1c87[_0x446a62];return _0x16a711;};'use strict';var BPromise=require(_0x71c8('0x0'));var jayson=require(_0x71c8('0x1'));var client=jayson[_0x71c8('0x2')][_0x71c8('0x3')]({'port':0x232b});function request(_0x2145ec,_0x2ed59f){return new BPromise(function(_0x5a30fc,_0x21157f){return client[_0x71c8('0x4')](_0x2145ec,_0x2ed59f)['then'](function(_0x43c3a8){if(_0x43c3a8[_0x71c8('0x5')]){return _0x21157f(_0x43c3a8['error'][_0x71c8('0x6')]);}else{return _0x5a30fc(_0x43c3a8[_0x71c8('0x7')]);}})[_0x71c8('0x8')](function(_0x56a827){return _0x21157f(_0x56a827);});});}exports[_0x71c8('0x9')]=function(_0x52209c,_0x42caf6){return request(_0x71c8('0xa'),{'account':_0x52209c,'message':_0x42caf6});};
\ No newline at end of file
index 399fe03..1d8aca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ef8=['maxRetry','addVertex','omit','isArray','length','source','target','addEdge','value','toJson','mxGraphModel','inspect','production','start','debug','root','stringify','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','mxCell','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','calleridname','callerid','uniqueid','vertex','context','extension','priority','agicommand','code','result','evtHangup','isUndefined','toString','response','agicommand\x20not\x20found','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','traverseBFS','clear','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','continueAt','close','Project\x20%s\x20not\x20published','moment','xml2json','../../config/logger','agi','./rpc','./vertices','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','hasOwnProperty','retry'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x0ef8,0xe4));var _0x80ef=function(_0x1f5f68,_0xe28857){_0x1f5f68=_0x1f5f68-0x0;var _0x1be600=_0x0ef8[_0x1f5f68];return _0x1be600;};'use strict';var _=require('lodash');var moment=require(_0x80ef('0x0'));var parser=require(_0x80ef('0x1'));var util=require('util');var logger=require(_0x80ef('0x2'))(_0x80ef('0x3'));var rpc=require(_0x80ef('0x4'));var mailRpc=require('./mailRpc');var Graph=require('./graph');var Vertices=require(_0x80ef('0x5'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0x80ef('0x6')](function(_0x2695b1){logger[_0x80ef('0x7')](_0x80ef('0x8'),_0x2695b1[_0x80ef('0x9')]);return[];});}function addVertex(_0x336a94,_0x355753,_0x43c217){_0x355753['agicommand']=_0x43c217;if(_0x355753[_0x80ef('0xa')](_0x80ef('0xb'))){_0x355753[_0x80ef('0xc')]=parseInt(_0x355753[_0x80ef('0xb')],0xa);}_0x336a94[_0x80ef('0xd')](_[_0x80ef('0xe')](_0x355753,'mxCell'));}function initGraph(_0x43061b,_0xb1ab56){var _0x3579b7=new Graph();for(var _0x456b1f in _0x43061b){if(_0x43061b[_0x80ef('0xa')](_0x456b1f)){if(_[_0x80ef('0xf')](_0x43061b[_0x456b1f])){for(var _0xda7006=0x0;_0xda7006<_0x43061b[_0x456b1f][_0x80ef('0x10')];_0xda7006+=0x1){addVertex(_0x3579b7,_0x43061b[_0x456b1f][_0xda7006],_0x456b1f);}}else{addVertex(_0x3579b7,_0x43061b[_0x456b1f],_0x456b1f);}}}for(var _0x49e483=0x0;_0x49e483<_0xb1ab56[_0x80ef('0x10')];_0x49e483+=0x1){if(_0xb1ab56[_0x49e483][_0x80ef('0x11')]&&_0xb1ab56[_0x49e483][_0x80ef('0x12')]){_0x3579b7[_0x80ef('0x13')](_0xb1ab56[_0x49e483][_0x80ef('0x11')],_0xb1ab56[_0x49e483][_0x80ef('0x12')],_0xb1ab56[_0x49e483][_0x80ef('0x14')]);}}return _0x3579b7;}function getRoot(_0x581772){return parser[_0x80ef('0x15')](_0x581772,{'object':!![]})[_0x80ef('0x16')]['root'];}function inspect(_0x2200be){return util[_0x80ef('0x17')](_0x2200be,{'showHidden':![],'depth':null});}function initialize(_0xeb7127,_0x48b1f9){var _0x243019=getRoot(_0xeb7127[_0x80ef('0x18')]);if(!_0x243019||!_0x243019[_0x80ef('0x19')])return;var _0x13f433,_0x25e62e,_0x52b3de;logger[_0x80ef('0x1a')](_0x80ef('0x1b'),JSON[_0x80ef('0x1c')](_0x243019,null,0x2));_0x48b1f9[_0x80ef('0x1d')]=moment()[_0x80ef('0x1e')](_0x80ef('0x1f'));_0x13f433=initGraph(_[_0x80ef('0xe')](_0x243019,_0x80ef('0x20')),_0x243019[_0x80ef('0x20')]);_0x25e62e=new Vertices(_0x48b1f9,rpc,mailRpc);logger[_0x80ef('0x21')](util[_0x80ef('0x1e')](_0x80ef('0x22'),_0x48b1f9[_0x80ef('0x23')],_0x48b1f9[_0x80ef('0x24')],_0x48b1f9[_0x80ef('0x25')],_0x48b1f9['dnid'],_0x48b1f9[_0x80ef('0x26')]));_0x13f433['traverseBFS'](_0x243019[_0x80ef('0x19')]['id'],function(_0x481bc8){try{_0x481bc8=_0x25e62e['clear'](_0x481bc8);logger[_0x80ef('0x1a')](_0x80ef('0x27'),JSON[_0x80ef('0x1c')](_0x481bc8,null,0x2));if(_0x481bc8['agicommand']==='gotoc'){logger[_0x80ef('0x21')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x48b1f9[_0x80ef('0x28')]=_0x481bc8[_0x80ef('0x28')]||_0x48b1f9[_0x80ef('0x28')];_0x48b1f9[_0x80ef('0x29')]=_0x481bc8[_0x80ef('0x29')];_0x48b1f9['priority']=_0x481bc8[_0x80ef('0x2a')]?_0x481bc8[_0x80ef('0x2a')]-0x1:0x1;return null;}else if(_0x481bc8&&_0x25e62e[_0x481bc8[_0x80ef('0x2b')]]){_0x52b3de=_0x25e62e[_0x481bc8['agicommand']](_0x481bc8);logger[_0x80ef('0x21')]('response',JSON[_0x80ef('0x1c')](_0x52b3de,null,0x2));if(_0x52b3de&&_0x52b3de[_0x80ef('0x2c')]===AGI_CODE_SUCCESS&&_0x52b3de[_0x80ef('0x2d')]!==AGI_RESULT_ERROR&&!_0x48b1f9[_0x80ef('0x2e')]){logger['debug']('response',inspect(_0x52b3de));return _[_0x80ef('0x2f')](_0x52b3de[_0x80ef('0x2d')])?null:_0x52b3de[_0x80ef('0x2d')][_0x80ef('0x30')]();}else{logger[_0x80ef('0x7')](_0x80ef('0x31'),inspect(_0x52b3de));return null;}}else{logger['error'](_0x80ef('0x32'));return null;}}catch(_0x117dd5){logger['error'](_0x117dd5['stack']);return null;}});if(_0x243019[_0x80ef('0x33')]){logger[_0x80ef('0x21')](util['format'](_0x80ef('0x34'),_0x48b1f9['arg_1'],_0x48b1f9[_0x80ef('0x24')],_0x48b1f9['callerid'],_0x48b1f9[_0x80ef('0x35')],_0x48b1f9[_0x80ef('0x26')]));_0x13f433[_0x80ef('0x36')](_0x243019['finally']['id'],function(_0x91439b){try{_0x91439b=_0x25e62e[_0x80ef('0x37')](_0x91439b);logger[_0x80ef('0x1a')](_0x80ef('0x27'),JSON[_0x80ef('0x1c')](_0x91439b,null,0x2));if(_0x91439b&&_0x25e62e[_0x91439b[_0x80ef('0x2b')]]){_0x52b3de=_0x25e62e[_0x91439b['agicommand']](_0x91439b);if(_0x52b3de){logger[_0x80ef('0x1a')](_0x80ef('0x31'),inspect(_0x52b3de));return _['isUndefined'](_0x52b3de[_0x80ef('0x2d')])?null:_0x52b3de[_0x80ef('0x2d')][_0x80ef('0x30')]();}else{logger['error'](_0x80ef('0x31'),inspect(_0x52b3de));return null;}}else{logger[_0x80ef('0x7')](_0x80ef('0x32'));return null;}}catch(_0x3665e5){logger[_0x80ef('0x7')](_0x3665e5[_0x80ef('0x9')]);return null;}});}logger['info'](util[_0x80ef('0x1e')]('[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x48b1f9['arg_1'],_0x48b1f9[_0x80ef('0x24')],_0x48b1f9[_0x80ef('0x25')],_0x48b1f9[_0x80ef('0x35')],_0x48b1f9['uniqueid']));logger['info'](util[_0x80ef('0x1e')](_0x80ef('0x38'),_0x48b1f9[_0x80ef('0x28')],_0x48b1f9[_0x80ef('0x29')],parseInt(_0x48b1f9[_0x80ef('0x2a')],0xa)+0x1));_0x48b1f9[_0x80ef('0x39')](_0x48b1f9[_0x80ef('0x28')],_0x48b1f9[_0x80ef('0x29')],parseInt(_0x48b1f9[_0x80ef('0x2a')],0xa)+0x1);_0x48b1f9[_0x80ef('0x3a')]();}function handleNotFound(_0x112d48){logger[_0x80ef('0x7')](util[_0x80ef('0x1e')]('Project\x20%s\x20not\x20found',_0x112d48['arg_1']));_0x112d48[_0x80ef('0x39')](_0x112d48[_0x80ef('0x28')],_0x112d48[_0x80ef('0x29')],parseInt(_0x112d48['priority'],0xa)+0x1);_0x112d48[_0x80ef('0x3a')]();}function handleUnpublished(_0x14a184){logger['error'](util[_0x80ef('0x1e')](_0x80ef('0x3b'),_0x14a184['arg_1']));_0x14a184[_0x80ef('0x39')](_0x14a184[_0x80ef('0x28')],_0x14a184[_0x80ef('0x29')],parseInt(_0x14a184[_0x80ef('0x2a')],0xa)+0x1);_0x14a184[_0x80ef('0x3a')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
+var _0x173a=['error','agicommand\x20not\x20found','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','finally','isUndefined','[END]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','[GOTO]\x20context:\x20%s\x20extension:\x20%s\x20priority:\x20%s','priority','close','Project\x20%s\x20not\x20found','continueAt','Project\x20%s\x20not\x20published','exports','lodash','moment','util','agi','./rpc','./mailRpc','./graph','./vertices','getSquareProjects','catch','Unable\x20to\x20download\x20CallySquare\x20projects','stack','agicommand','retry','addVertex','omit','mxCell','hasOwnProperty','isArray','length','target','addEdge','source','value','toJson','mxGraphModel','root','inspect','production','debug','joinAt','format','YYYY-MM-DD\x20HH:mm:ss','info','[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','calleridname','callerid','dnid','uniqueid','traverseBFS','start','clear','stringify','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','response','code','result','evtHangup','toString'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x173a,0x116));var _0xa173=function(_0x566fe2,_0x2e72d2){_0x566fe2=_0x566fe2-0x0;var _0x283802=_0x173a[_0x566fe2];return _0x283802;};'use strict';var _=require(_0xa173('0x0'));var moment=require(_0xa173('0x1'));var parser=require('xml2json');var util=require(_0xa173('0x2'));var logger=require('../../config/logger')(_0xa173('0x3'));var rpc=require(_0xa173('0x4'));var mailRpc=require(_0xa173('0x5'));var Graph=require(_0xa173('0x6'));var Vertices=require(_0xa173('0x7'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc[_0xa173('0x8')]()[_0xa173('0x9')](function(_0x1847f8){logger['error'](_0xa173('0xa'),_0x1847f8[_0xa173('0xb')]);return[];});}function addVertex(_0x2cbfdf,_0x54966d,_0x4dbaca){_0x54966d[_0xa173('0xc')]=_0x4dbaca;if(_0x54966d['hasOwnProperty'](_0xa173('0xd'))){_0x54966d['maxRetry']=parseInt(_0x54966d['retry'],0xa);}_0x2cbfdf[_0xa173('0xe')](_[_0xa173('0xf')](_0x54966d,_0xa173('0x10')));}function initGraph(_0x36bed7,_0x1822af){var _0x581ff5=new Graph();for(var _0x57b9de in _0x36bed7){if(_0x36bed7[_0xa173('0x11')](_0x57b9de)){if(_[_0xa173('0x12')](_0x36bed7[_0x57b9de])){for(var _0x572b5b=0x0;_0x572b5b<_0x36bed7[_0x57b9de][_0xa173('0x13')];_0x572b5b+=0x1){addVertex(_0x581ff5,_0x36bed7[_0x57b9de][_0x572b5b],_0x57b9de);}}else{addVertex(_0x581ff5,_0x36bed7[_0x57b9de],_0x57b9de);}}}for(var _0x1f64ab=0x0;_0x1f64ab<_0x1822af[_0xa173('0x13')];_0x1f64ab+=0x1){if(_0x1822af[_0x1f64ab]['source']&&_0x1822af[_0x1f64ab][_0xa173('0x14')]){_0x581ff5[_0xa173('0x15')](_0x1822af[_0x1f64ab][_0xa173('0x16')],_0x1822af[_0x1f64ab]['target'],_0x1822af[_0x1f64ab][_0xa173('0x17')]);}}return _0x581ff5;}function getRoot(_0x5d28d7){return parser[_0xa173('0x18')](_0x5d28d7,{'object':!![]})[_0xa173('0x19')][_0xa173('0x1a')];}function inspect(_0xf7d6d3){return util[_0xa173('0x1b')](_0xf7d6d3,{'showHidden':![],'depth':null});}function initialize(_0x269fb9,_0x564285){var _0xe72179=getRoot(_0x269fb9[_0xa173('0x1c')]);if(!_0xe72179||!_0xe72179['start'])return;var _0xbd7d07,_0x5d991a,_0x352dd0;logger[_0xa173('0x1d')](_0xa173('0x1a'),JSON['stringify'](_0xe72179,null,0x2));_0x564285[_0xa173('0x1e')]=moment()[_0xa173('0x1f')](_0xa173('0x20'));_0xbd7d07=initGraph(_[_0xa173('0xf')](_0xe72179,_0xa173('0x10')),_0xe72179[_0xa173('0x10')]);_0x5d991a=new Vertices(_0x564285,rpc,mailRpc);logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x22'),_0x564285['arg_1'],_0x564285[_0xa173('0x23')],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285[_0xa173('0x26')]));_0xbd7d07[_0xa173('0x27')](_0xe72179[_0xa173('0x28')]['id'],function(_0xe91dae){try{_0xe91dae=_0x5d991a[_0xa173('0x29')](_0xe91dae);logger['debug']('vertex',JSON[_0xa173('0x2a')](_0xe91dae,null,0x2));if(_0xe91dae['agicommand']===_0xa173('0x2b')){logger[_0xa173('0x21')](_0xa173('0x2c'));_0x564285[_0xa173('0x2d')]=_0xe91dae['context']||_0x564285[_0xa173('0x2d')];_0x564285[_0xa173('0x2e')]=_0xe91dae[_0xa173('0x2e')];_0x564285['priority']=_0xe91dae['priority']?_0xe91dae['priority']-0x1:0x1;return null;}else if(_0xe91dae&&_0x5d991a[_0xe91dae[_0xa173('0xc')]]){_0x352dd0=_0x5d991a[_0xe91dae['agicommand']](_0xe91dae);logger[_0xa173('0x21')](_0xa173('0x2f'),JSON['stringify'](_0x352dd0,null,0x2));if(_0x352dd0&&_0x352dd0[_0xa173('0x30')]===AGI_CODE_SUCCESS&&_0x352dd0[_0xa173('0x31')]!==AGI_RESULT_ERROR&&!_0x564285[_0xa173('0x32')]){logger[_0xa173('0x1d')](_0xa173('0x2f'),inspect(_0x352dd0));return _['isUndefined'](_0x352dd0[_0xa173('0x31')])?null:_0x352dd0[_0xa173('0x31')][_0xa173('0x33')]();}else{logger[_0xa173('0x34')]('response',inspect(_0x352dd0));return null;}}else{logger[_0xa173('0x34')](_0xa173('0x35'));return null;}}catch(_0x154fbd){logger[_0xa173('0x34')](_0x154fbd[_0xa173('0xb')]);return null;}});if(_0xe72179['finally']){logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x36'),_0x564285['arg_1'],_0x564285['calleridname'],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285['uniqueid']));_0xbd7d07['traverseBFS'](_0xe72179[_0xa173('0x37')]['id'],function(_0x56975a){try{_0x56975a=_0x5d991a['clear'](_0x56975a);logger['debug']('vertex',JSON['stringify'](_0x56975a,null,0x2));if(_0x56975a&&_0x5d991a[_0x56975a[_0xa173('0xc')]]){_0x352dd0=_0x5d991a[_0x56975a['agicommand']](_0x56975a);if(_0x352dd0){logger[_0xa173('0x1d')](_0xa173('0x2f'),inspect(_0x352dd0));return _[_0xa173('0x38')](_0x352dd0[_0xa173('0x31')])?null:_0x352dd0[_0xa173('0x31')][_0xa173('0x33')]();}else{logger['error'](_0xa173('0x2f'),inspect(_0x352dd0));return null;}}else{logger['error'](_0xa173('0x35'));return null;}}catch(_0x53749b){logger[_0xa173('0x34')](_0x53749b[_0xa173('0xb')]);return null;}});}logger[_0xa173('0x21')](util['format'](_0xa173('0x39'),_0x564285[_0xa173('0x3a')],_0x564285[_0xa173('0x23')],_0x564285[_0xa173('0x24')],_0x564285[_0xa173('0x25')],_0x564285['uniqueid']));logger[_0xa173('0x21')](util[_0xa173('0x1f')](_0xa173('0x3b'),_0x564285['context'],_0x564285[_0xa173('0x2e')],parseInt(_0x564285[_0xa173('0x3c')],0xa)+0x1));_0x564285['continueAt'](_0x564285['context'],_0x564285[_0xa173('0x2e')],parseInt(_0x564285[_0xa173('0x3c')],0xa)+0x1);_0x564285[_0xa173('0x3d')]();}function handleNotFound(_0x20c9e9){logger[_0xa173('0x34')](util[_0xa173('0x1f')](_0xa173('0x3e'),_0x20c9e9[_0xa173('0x3a')]));_0x20c9e9[_0xa173('0x3f')](_0x20c9e9[_0xa173('0x2d')],_0x20c9e9[_0xa173('0x2e')],parseInt(_0x20c9e9[_0xa173('0x3c')],0xa)+0x1);_0x20c9e9[_0xa173('0x3d')]();}function handleUnpublished(_0x46f693){logger['error'](util['format'](_0xa173('0x40'),_0x46f693[_0xa173('0x3a')]));_0x46f693[_0xa173('0x3f')](_0x46f693[_0xa173('0x2d')],_0x46f693['extension'],parseInt(_0x46f693[_0xa173('0x3c')],0xa)+0x1);_0x46f693[_0xa173('0x3d')]();}module[_0xa173('0x41')]={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index e895d30..9e3c456 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51a0=['Transform','call','_localBuffer','_inBody','inherits','prototype','toString','indexOf','substring','length','slice','trim','emit','line','exports','util','stream'];(function(_0x48a928,_0x430727){var _0x11c1e9=function(_0x338805){while(--_0x338805){_0x48a928['push'](_0x48a928['shift']());}};_0x11c1e9(++_0x430727);}(_0x51a0,0x1c9));var _0x051a=function(_0x1389ae,_0x1caf91){_0x1389ae=_0x1389ae-0x0;var _0x1514d4=_0x51a0[_0x1389ae];return _0x1514d4;};'use strict';var util=require(_0x051a('0x0'));var Transform=require(_0x051a('0x1'))[_0x051a('0x2')];function AGIReply(_0x1fe890){Transform[_0x051a('0x3')](this,_0x1fe890);this[_0x051a('0x4')]='';this[_0x051a('0x5')]=![];}util[_0x051a('0x6')](AGIReply,Transform);AGIReply[_0x051a('0x7')]['_transform']=function(_0x113283,_0x362618,_0x32f30e){var _0x23c6f8='\x0a',_0x3a3bb2=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x499a66=-0x1,_0x3931c0=-0x1,_0x174ba5='',_0x9ed027=0x0,_0x4a1a2d='',_0x45f629='';this['_localBuffer']+=_0x113283[_0x051a('0x8')]();_0x4a1a2d=this['_localBuffer'];if(!this[_0x051a('0x5')]){_0x9ed027=0x0;while(_0x3a3bb2[_0x9ed027]){while((_0x3931c0=_0x4a1a2d[_0x051a('0x9')](_0x3a3bb2[_0x9ed027]))!=-0x1){_0x174ba5=_0x3a3bb2[_0x9ed027];_0x45f629=_0x4a1a2d[_0x051a('0xa')](0x0,_0x3931c0);_0x4a1a2d=_0x4a1a2d[_0x051a('0xa')](_0x3931c0+_0x174ba5[_0x051a('0xb')]);var _0x443ee4=_0x45f629['split'](_0x23c6f8),_0x40c1fa=0x0,_0x336654={},_0xa6832f='',_0x5222e0='',_0x306126=-0x1;while(_0x443ee4[_0x40c1fa]){_0x306126=_0x443ee4[_0x40c1fa]['indexOf'](':');if(_0x306126!=-0x1){_0xa6832f=_0x443ee4[_0x40c1fa][_0x051a('0xc')](0x0,_0x306126)['trim']();_0x5222e0=_0x443ee4[_0x40c1fa]['slice'](_0x306126+0x1)[_0x051a('0xd')]();if(_0xa6832f[_0x051a('0xb')]>0x0){_0x336654[_0xa6832f]=_0x5222e0;}}else{}_0x40c1fa++;}this[_0x051a('0xe')]('headers',_0x336654);this['_inBody']=!![];}_0x9ed027++;}this[_0x051a('0x4')]=_0x4a1a2d;}else{while((_0x499a66=_0x4a1a2d[_0x051a('0x9')](_0x23c6f8))!=-0x1){_0x45f629=_0x4a1a2d[_0x051a('0xa')](0x0,_0x499a66);this[_0x051a('0xe')](_0x051a('0xf'),_0x45f629);_0x4a1a2d=_0x4a1a2d[_0x051a('0xa')](_0x499a66+_0x23c6f8[_0x051a('0xb')]);}this[_0x051a('0x4')]=_0x4a1a2d;}_0x32f30e();};module[_0x051a('0x10')]=AGIReply;
\ No newline at end of file
+var _0xb59d=['substring','split','slice','trim','length','emit','headers','line','exports','util','stream','Transform','call','_localBuffer','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','toString','indexOf'];(function(_0xda8e46,_0x2c0428){var _0x2dcd9f=function(_0x42ee6e){while(--_0x42ee6e){_0xda8e46['push'](_0xda8e46['shift']());}};_0x2dcd9f(++_0x2c0428);}(_0xb59d,0x6d));var _0xdb59=function(_0x2efdb8,_0x1fc808){_0x2efdb8=_0x2efdb8-0x0;var _0x5d4d16=_0xb59d[_0x2efdb8];return _0x5d4d16;};'use strict';var util=require(_0xdb59('0x0'));var Transform=require(_0xdb59('0x1'))[_0xdb59('0x2')];function AGIReply(_0x3d9222){Transform[_0xdb59('0x3')](this,_0x3d9222);this[_0xdb59('0x4')]='';this[_0xdb59('0x5')]=![];}util[_0xdb59('0x6')](AGIReply,Transform);AGIReply['prototype'][_0xdb59('0x7')]=function(_0x4ebc5a,_0x437ac2,_0x3cb2a9){var _0x3257a7='\x0a',_0x4f5ea7=['\x0a\x0a',_0xdb59('0x8')],_0x1e7afe=-0x1,_0x108fbe=-0x1,_0x4ba29a='',_0x4fea77=0x0,_0x50e332='',_0x296f42='';this[_0xdb59('0x4')]+=_0x4ebc5a[_0xdb59('0x9')]();_0x50e332=this[_0xdb59('0x4')];if(!this[_0xdb59('0x5')]){_0x4fea77=0x0;while(_0x4f5ea7[_0x4fea77]){while((_0x108fbe=_0x50e332[_0xdb59('0xa')](_0x4f5ea7[_0x4fea77]))!=-0x1){_0x4ba29a=_0x4f5ea7[_0x4fea77];_0x296f42=_0x50e332[_0xdb59('0xb')](0x0,_0x108fbe);_0x50e332=_0x50e332[_0xdb59('0xb')](_0x108fbe+_0x4ba29a['length']);var _0x487da4=_0x296f42[_0xdb59('0xc')](_0x3257a7),_0x2f3e64=0x0,_0x5d72a7={},_0x5b5eb1='',_0x1b25d9='',_0xec2968=-0x1;while(_0x487da4[_0x2f3e64]){_0xec2968=_0x487da4[_0x2f3e64][_0xdb59('0xa')](':');if(_0xec2968!=-0x1){_0x5b5eb1=_0x487da4[_0x2f3e64][_0xdb59('0xd')](0x0,_0xec2968)['trim']();_0x1b25d9=_0x487da4[_0x2f3e64][_0xdb59('0xd')](_0xec2968+0x1)[_0xdb59('0xe')]();if(_0x5b5eb1[_0xdb59('0xf')]>0x0){_0x5d72a7[_0x5b5eb1]=_0x1b25d9;}}else{}_0x2f3e64++;}this[_0xdb59('0x10')](_0xdb59('0x11'),_0x5d72a7);this[_0xdb59('0x5')]=!![];}_0x4fea77++;}this[_0xdb59('0x4')]=_0x50e332;}else{while((_0x1e7afe=_0x50e332[_0xdb59('0xa')](_0x3257a7))!=-0x1){_0x296f42=_0x50e332[_0xdb59('0xb')](0x0,_0x1e7afe);this[_0xdb59('0x10')](_0xdb59('0x12'),_0x296f42);_0x50e332=_0x50e332[_0xdb59('0xb')](_0x1e7afe+_0x3257a7[_0xdb59('0xf')]);}this['_localBuffer']=_0x50e332;}_0x3cb2a9();};module[_0xdb59('0x13')]=AGIReply;
\ No newline at end of file
index 9f685a0..22e07cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6282=['error','result','catch','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','MailServerOut','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','ShowVariable','ShowSquareOdbc','getUserById','ShowUser','GetContactByPhone','getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Interval','Intervals','getSmsAccountById','ShowSmsAccount','createSmsMessage','CreateSmsMessage','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','CreateSquareRecording','createSquareMessage','CreateSquareMessage','createCmContact','ListId','CreateCmContact','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','moment','jayson/promise','client','request','then'];(function(_0x5d5198,_0x541d1f){var _0x59db1a=function(_0x36d06f){while(--_0x36d06f){_0x5d5198['push'](_0x5d5198['shift']());}};_0x59db1a(++_0x541d1f);}(_0x6282,0x76));var _0x2628=function(_0x5e0416,_0x541afd){_0x5e0416=_0x5e0416-0x0;var _0x3dfc48=_0x6282[_0x5e0416];return _0x3dfc48;};'use strict';var _=require(_0x2628('0x0'));var moment=require(_0x2628('0x1'));var jayson=require(_0x2628('0x2'));var client=jayson[_0x2628('0x3')]['http']({'port':0x2329});function request(_0x50e40f,_0x126d9a){return new Promise(function(_0xc5c0c7,_0x5eb31b){return client[_0x2628('0x4')](_0x50e40f,_0x126d9a)[_0x2628('0x5')](function(_0x3937c5){if(_0x3937c5[_0x2628('0x6')]){return _0x5eb31b(_0x3937c5[_0x2628('0x6')]['message']);}else{return _0xc5c0c7(_0x3937c5[_0x2628('0x7')]);}})[_0x2628('0x8')](function(_0x2170a7){return _0x5eb31b(_0x2170a7);});});}exports[_0x2628('0x9')]=function(){return request(_0x2628('0xa'),{'options':{'raw':![],'attributes':['id',_0x2628('0xb'),_0x2628('0xc')]}});};exports[_0x2628('0xd')]=function(_0x3f9015){return request(_0x2628('0xe'),{'options':{'raw':![],'where':{'name':_0x3f9015},'attributes':[_0x2628('0xc')]}});};exports[_0x2628('0xf')]=function(_0x17c835){return request(_0x2628('0x10'),{'options':{'raw':![],'where':{'id':_0x17c835},'include':[{'model':_0x2628('0x11'),'as':'Smtp','include':[{'model':'CloudProvider','as':_0x2628('0x12')}]}],'attributes':['id',_0x2628('0xb'),_0x2628('0x13')],'smtp':!![]}});};exports[_0x2628('0x14')]=function(_0x5d0a32){return request('ShowSquareProject',{'options':{'where':{'id':_0x5d0a32},'attributes':[_0x2628('0xb')]}});};exports[_0x2628('0x15')]=function(_0x4d2cfb){return request(_0x2628('0x16'),{'options':{'where':{'id':_0x4d2cfb},'attributes':[_0x2628('0xb')]}});};exports['getVariableById']=function(_0x645884){return request(_0x2628('0x17'),{'options':{'where':{'id':_0x645884},'attributes':[_0x2628('0xb')]}});};exports['getSquareOdbcById']=function(_0x13a728){return request(_0x2628('0x18'),{'options':{'where':{'id':_0x13a728},'attributes':['dsn']}});};exports[_0x2628('0x19')]=function(_0x4c2a10){return request(_0x2628('0x1a'),{'options':{'where':{'id':_0x4c2a10},'attributes':[_0x2628('0xb')]}});};exports['getContactByPhone']=function(_0x2a6bed){return request(_0x2628('0x1b'),{'options':{'where':{'phone':_0x2a6bed['phone']},'attributes':['id']}});};exports[_0x2628('0x1c')]=function(_0x532d6d){return request(_0x2628('0x1d'),{'options':{'where':{'id':_0x532d6d},'attributes':['name']}});};exports['getSoundById']=function(_0xcf0862){return request(_0x2628('0x1e'),{'options':{'where':{'id':_0xcf0862},'attributes':[_0x2628('0x1f')]}});};exports[_0x2628('0x20')]=function(_0x1640b2){return request(_0x2628('0x21'),{'options':{'raw':![],'where':{'id':_0x1640b2},'include':[{'model':_0x2628('0x22'),'as':_0x2628('0x23')}]}});};exports[_0x2628('0x24')]=function(_0x57a799){return request(_0x2628('0x25'),{'options':{'where':{'id':_0x57a799},'attributes':['id',_0x2628('0xb')]}});};exports[_0x2628('0x26')]=function(_0x3904cb){return request(_0x2628('0x27'),{'body':_0x3904cb});};exports['createSquareDetailsReport']=function(_0xf65ef8){return request(_0x2628('0x28'),{'body':_0xf65ef8});};exports[_0x2628('0x29')]=function(_0xfc2210){return request(_0x2628('0x2a'),{'body':_['merge'](_0xfc2210,{'project_name':_0xfc2210['arg_1'],'prev_project_name':_0xfc2210[_0x2628('0x2b')]||'','is_subproject':_0xfc2210[_0x2628('0x2b')]?!![]:![],'leaveAt':moment()[_0x2628('0x2c')](_0x2628('0x2d'))})});};exports[_0x2628('0x2e')]=function(_0x571711){return request(_0x2628('0x2f'),{'body':_0x571711});};exports[_0x2628('0x30')]=function(_0xaa308b){return request(_0x2628('0x31'),{'body':_0xaa308b});};exports[_0x2628('0x32')]=function(_0x118e75){return request('ShowCmHopper',{'options':{'raw':![],'where':{'phone':_0x118e75['phone'],'ListId':_0x118e75[_0x2628('0x33')]}}})[_0x2628('0x5')](function(_0x3d98a7){if(_0x3d98a7){return _0x3d98a7;}return request(_0x2628('0x34'),{'body':_0x118e75});});};exports['getPauseById']=function(_0x17bc01){return request(_0x2628('0x35'),{'options':{'where':{'id':_0x17bc01},'attributes':[_0x2628('0xb')]}});};exports[_0x2628('0x36')]=function(_0x4b5938,_0x2a9cf0){return request(_0x2628('0x37'),{'body':{'interface':_0x2a9cf0},'options':{'where':_0x4b5938}});};exports[_0x2628('0x38')]=function(_0x19530e,_0x515f29,_0x24e688){return request(_0x2628('0x39'),{'body':{'type':_0x515f29,'uniqueid':_0x24e688},'options':{'where':_0x19530e}});};exports[_0x2628('0x3a')]=function(_0x4443c5){return request(_0x2628('0x3b'),{'body':{},'options':{'where':_0x4443c5}});};exports[_0x2628('0x3c')]=function(_0x23b271){return request(_0x2628('0x3d'),{'body':{},'options':{'where':_0x23b271}});};
\ No newline at end of file
+var _0x495e=['ShowUser','getContactByPhone','GetContactByPhone','phone','getTrunkById','getSoundById','ShowSound','getIntervalById','ShowInterval','Intervals','getSmsAccountById','ShowSmsAccount','createSquareDetailsReport','CreateSquareDetailsReport','CreateSquareReport','merge','arg_1','arg_2','format','createSquareMessage','ShowCmHopper','ListId','CreateCmContact','getPauseById','agentLogin','agentPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','LogoutUser','lodash','client','http','request','then','error','message','getSquareProjects','name','production','getSquareProject','ShowSquareProject','getMailAccountById','ShowMailAccount','Smtp','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','getUserById'];(function(_0x27650b,_0x438264){var _0x19c7a1=function(_0x3f26e9){while(--_0x3f26e9){_0x27650b['push'](_0x27650b['shift']());}};_0x19c7a1(++_0x438264);}(_0x495e,0xfb));var _0xe495=function(_0x46ef1d,_0x24926){_0x46ef1d=_0x46ef1d-0x0;var _0x49ce69=_0x495e[_0x46ef1d];return _0x49ce69;};'use strict';var _=require(_0xe495('0x0'));var moment=require('moment');var jayson=require('jayson/promise');var client=jayson[_0xe495('0x1')][_0xe495('0x2')]({'port':0x2329});function request(_0x3fe3a3,_0x2c85b8){return new Promise(function(_0x4e5ce9,_0x3f119c){return client[_0xe495('0x3')](_0x3fe3a3,_0x2c85b8)[_0xe495('0x4')](function(_0x3da4aa){if(_0x3da4aa[_0xe495('0x5')]){return _0x3f119c(_0x3da4aa[_0xe495('0x5')][_0xe495('0x6')]);}else{return _0x4e5ce9(_0x3da4aa['result']);}})['catch'](function(_0x5c17d0){return _0x3f119c(_0x5c17d0);});});}exports[_0xe495('0x7')]=function(){return request('GetSquareProjects',{'options':{'raw':![],'attributes':['id',_0xe495('0x8'),_0xe495('0x9')]}});};exports[_0xe495('0xa')]=function(_0x41983d){return request(_0xe495('0xb'),{'options':{'raw':![],'where':{'name':_0x41983d},'attributes':['production']}});};exports[_0xe495('0xc')]=function(_0x4047e8){return request(_0xe495('0xd'),{'options':{'raw':![],'where':{'id':_0x4047e8},'include':[{'model':'MailServerOut','as':_0xe495('0xe'),'include':[{'model':_0xe495('0xf'),'as':'CloudProvider'}]}],'attributes':['id','name',_0xe495('0x10')],'smtp':!![]}});};exports[_0xe495('0x11')]=function(_0x5df017){return request(_0xe495('0xb'),{'options':{'where':{'id':_0x5df017},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x12')]=function(_0x14744d){return request(_0xe495('0x13'),{'options':{'where':{'id':_0x14744d},'attributes':['name']}});};exports[_0xe495('0x14')]=function(_0x103c25){return request(_0xe495('0x15'),{'options':{'where':{'id':_0x103c25},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x16')]=function(_0x48864f){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x48864f},'attributes':['dsn']}});};exports[_0xe495('0x17')]=function(_0x142978){return request(_0xe495('0x18'),{'options':{'where':{'id':_0x142978},'attributes':['name']}});};exports[_0xe495('0x19')]=function(_0x302ca0){return request(_0xe495('0x1a'),{'options':{'where':{'phone':_0x302ca0[_0xe495('0x1b')]},'attributes':['id']}});};exports[_0xe495('0x1c')]=function(_0x525953){return request('ShowTrunk',{'options':{'where':{'id':_0x525953},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x1d')]=function(_0x108eb3){return request(_0xe495('0x1e'),{'options':{'where':{'id':_0x108eb3},'attributes':['save_name']}});};exports[_0xe495('0x1f')]=function(_0x46ec15){return request(_0xe495('0x20'),{'options':{'raw':![],'where':{'id':_0x46ec15},'include':[{'model':'Interval','as':_0xe495('0x21')}]}});};exports[_0xe495('0x22')]=function(_0x475a7e){return request(_0xe495('0x23'),{'options':{'where':{'id':_0x475a7e},'attributes':['id',_0xe495('0x8')]}});};exports['createSmsMessage']=function(_0x33f19){return request('CreateSmsMessage',{'body':_0x33f19});};exports[_0xe495('0x24')]=function(_0x39cff4){return request(_0xe495('0x25'),{'body':_0x39cff4});};exports['createSquareReport']=function(_0x2e8e76){return request(_0xe495('0x26'),{'body':_[_0xe495('0x27')](_0x2e8e76,{'project_name':_0x2e8e76[_0xe495('0x28')],'prev_project_name':_0x2e8e76[_0xe495('0x29')]||'','is_subproject':_0x2e8e76[_0xe495('0x29')]?!![]:![],'leaveAt':moment()[_0xe495('0x2a')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports['createSquareRecording']=function(_0x2506f7){return request('CreateSquareRecording',{'body':_0x2506f7});};exports[_0xe495('0x2b')]=function(_0x3dd5df){return request('CreateSquareMessage',{'body':_0x3dd5df});};exports['createCmContact']=function(_0xd6585c){return request(_0xe495('0x2c'),{'options':{'raw':![],'where':{'phone':_0xd6585c[_0xe495('0x1b')],'ListId':_0xd6585c[_0xe495('0x2d')]}}})[_0xe495('0x4')](function(_0x258d9c){if(_0x258d9c){return _0x258d9c;}return request(_0xe495('0x2e'),{'body':_0xd6585c});});};exports[_0xe495('0x2f')]=function(_0x535d23){return request('ShowPause',{'options':{'where':{'id':_0x535d23},'attributes':[_0xe495('0x8')]}});};exports[_0xe495('0x30')]=function(_0x389177,_0x40d3a3){return request('LoginUser',{'body':{'interface':_0x40d3a3},'options':{'where':_0x389177}});};exports[_0xe495('0x31')]=function(_0x1d0c2f,_0x227019,_0xba78e9){return request(_0xe495('0x32'),{'body':{'type':_0x227019,'uniqueid':_0xba78e9},'options':{'where':_0x1d0c2f}});};exports[_0xe495('0x33')]=function(_0x2ffb33){return request(_0xe495('0x34'),{'body':{},'options':{'where':_0x2ffb33}});};exports[_0xe495('0x35')]=function(_0xb08f46){return request(_0xe495('0x36'),{'body':{},'options':{'where':_0xb08f46}});};
\ No newline at end of file
index c325969..d94ae9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa992=['./polly','./lex','exports'];(function(_0x4d1c00,_0x449133){var _0x239935=function(_0x5badfd){while(--_0x5badfd){_0x4d1c00['push'](_0x4d1c00['shift']());}};_0x239935(++_0x449133);}(_0xa992,0x18c));var _0x2a99=function(_0x46d7cf,_0x525798){_0x46d7cf=_0x46d7cf-0x0;var _0x48d2c4=_0xa992[_0x46d7cf];return _0x48d2c4;};var polly=require(_0x2a99('0x0'));var lex=require(_0x2a99('0x1'));module[_0x2a99('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xc029=['./lex','exports','./polly'];(function(_0x3286b0,_0x4c2e95){var _0xd1f2df=function(_0x5a0113){while(--_0x5a0113){_0x3286b0['push'](_0x3286b0['shift']());}};_0xd1f2df(++_0x4c2e95);}(_0xc029,0x1df));var _0x9c02=function(_0x1be3b3,_0x4335ee){_0x1be3b3=_0x1be3b3-0x0;var _0x4f8b2d=_0xc029[_0x1be3b3];return _0x4f8b2d;};var polly=require(_0x9c02('0x0'));var lex=require(_0x9c02('0x1'));module[_0x9c02('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 4ea1dbc..e2f272f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13f6=['./lib/api','exports'];(function(_0x74e5b4,_0x496d09){var _0x513253=function(_0x131bf4){while(--_0x131bf4){_0x74e5b4['push'](_0x74e5b4['shift']());}};_0x513253(++_0x496d09);}(_0x13f6,0x124));var _0x613f=function(_0x1247d8,_0x47a0ad){_0x1247d8=_0x1247d8-0x0;var _0x2502db=_0x13f6[_0x1247d8];return _0x2502db;};'use strict';var lex=require(_0x613f('0x0'));module[_0x613f('0x1')]=function(_0x5f1b3e,_0x563492,_0xd04cfd,_0x13b50a,_0x12dc5a,_0x5414ff){return lex(_0x5f1b3e,_0x563492,_0xd04cfd,_0x13b50a,_0x12dc5a,_0x5414ff);};
\ No newline at end of file
+var _0x41bb=['exports','./lib/api'];(function(_0x231ccd,_0x5ef818){var _0xcfd716=function(_0x38b122){while(--_0x38b122){_0x231ccd['push'](_0x231ccd['shift']());}};_0xcfd716(++_0x5ef818);}(_0x41bb,0xc5));var _0xb41b=function(_0x524c2e,_0x165d16){_0x524c2e=_0x524c2e-0x0;var _0x4ce75d=_0x41bb[_0x524c2e];return _0x4ce75d;};'use strict';var lex=require(_0xb41b('0x0'));module[_0xb41b('0x1')]=function(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333){return lex(_0x4ef2f1,_0x428431,_0x4d5578,_0x30ea75,_0x1c9d36,_0x148333);};
\ No newline at end of file
index dc6fefd..a441252 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x4d5f4f,_0x354d39){var _0x40fc76=function(_0x31b4c4){while(--_0x31b4c4){_0x4d5f4f['push'](_0x4d5f4f['shift']());}};_0x40fc76(++_0x354d39);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
+var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x1b96c8,_0x5bc3e7){var _0x593982=function(_0x495633){while(--_0x495633){_0x1b96c8['push'](_0x1b96c8['shift']());}};_0x593982(++_0x5bc3e7);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var BPromise=require(_0x0a9e('0x0'));var AWS=require(_0x0a9e('0x1'));function lexResult(_0x29929c,_0x5dd881){return new BPromise(function(_0x550fbc,_0x18d5c9){_0x29929c['postText'](_0x5dd881,function(_0x333808,_0x432180){if(_0x333808){_0x18d5c9(_0x333808);}if(_0x432180[_0x0a9e('0x2')]){for(const _0x991246 in _0x432180[_0x0a9e('0x2')]){if(_0x432180['slots'][_0x0a9e('0x3')](_0x991246)){var _0x441e3a=_0x432180[_0x0a9e('0x2')][_0x991246];_0x432180['slot_'+_0x991246]=_0x441e3a;}}}_0x550fbc(_0x432180);});});}module['exports']=function(_0xe42b77,_0x56465b,_0x52cace,_0x39753a,_0xf81284,_0x307b3e){var _0x3ab53f=new AWS[(_0x0a9e('0x4'))]({'accessKeyId':_0x56465b,'secretAccessKey':_0x52cace,'region':_0x39753a});var _0xbd1168={'botAlias':'$LATEST','botName':_0x307b3e,'inputText':_0xf81284,'userId':_0xe42b77};return lexResult(_0x3ab53f,_0xbd1168);};
\ No newline at end of file
index 49514be..c2a5d40 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ced=['exports','./lib/api'];(function(_0x5e6a01,_0x4475c0){var _0x4308ce=function(_0x10f4d1){while(--_0x10f4d1){_0x5e6a01['push'](_0x5e6a01['shift']());}};_0x4308ce(++_0x4475c0);}(_0x8ced,0x161));var _0xd8ce=function(_0x30584f,_0x4a1f96){_0x30584f=_0x30584f-0x0;var _0x2a31e1=_0x8ced[_0x30584f];return _0x2a31e1;};'use strict';var polly=require(_0xd8ce('0x0'));module[_0xd8ce('0x1')]=function(_0xc1fc97,_0x334077,_0x12381b,_0x464ec3,_0x1c3bb3,_0x51b1b8,_0x2e7aef){return polly(_0xc1fc97,_0x334077,_0x12381b,_0x464ec3,_0x1c3bb3,_0x51b1b8,_0x2e7aef);};
\ No newline at end of file
+var _0xe5e6=['exports','./lib/api'];(function(_0x417cf5,_0x2738e4){var _0x153e03=function(_0x26f1d8){while(--_0x26f1d8){_0x417cf5['push'](_0x417cf5['shift']());}};_0x153e03(++_0x2738e4);}(_0xe5e6,0x155));var _0x6e5e=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xe5e6[_0x321bb2];return _0x9c12ed;};'use strict';var polly=require(_0x6e5e('0x0'));module[_0x6e5e('0x1')]=function(_0x277f1a,_0x5359f6,_0x3ced47,_0x112dab,_0x328af2,_0x3da4a6,_0x23bf07){return polly(_0x277f1a,_0x5359f6,_0x3ced47,_0x112dab,_0x328af2,_0x3da4a6,_0x23bf07);};
\ No newline at end of file
index 17f7e8b..3b4c398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0360=['AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','exports','Polly','text','mp3','path','bluebird','aws-sdk'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x0360,0xad));var _0x0036=function(_0x5639b1,_0x1b4b77){_0x5639b1=_0x5639b1-0x0;var _0x2760b0=_0x0360[_0x5639b1];return _0x2760b0;};'use strict';var fs=require('fs');var path=require(_0x0036('0x0'));var BPromise=require(_0x0036('0x1'));var rs=require('randomstring');var AWS=require(_0x0036('0x2'));function pollyResult(_0x3ede78,_0x2830e2,_0x3d89bb){return new BPromise(function(_0x4c60e9,_0x423e30){_0x3ede78['synthesizeSpeech'](_0x2830e2,function(_0x313a20,_0xe5daeb){if(_0x313a20){_0x423e30(_0x313a20);}else if(_0xe5daeb){if(_0xe5daeb[_0x0036('0x3')]instanceof Buffer){fs[_0x0036('0x4')](_0x3d89bb,_0xe5daeb[_0x0036('0x3')],function(_0x56f251){if(_0x56f251){_0x423e30(_0x56f251);}else{_0x4c60e9();}});}else{_0x423e30(new Error(_0x0036('0x5')));}}else{_0x423e30(new Error(_0x0036('0x6')));}});});}module[_0x0036('0x7')]=function(_0x1ff462,_0x1c2a23,_0x24a92d,_0x1ed1ff,_0x4fd86c,_0x351763,_0x13224e){var _0x503fb6=new AWS[(_0x0036('0x8'))]({'accessKeyId':_0x1ff462,'secretAccessKey':_0x1c2a23,'region':_0x24a92d});var _0xf60942={'Text':_0x4fd86c,'TextType':_0x351763||_0x0036('0x9'),'OutputFormat':_0x0036('0xa'),'VoiceId':_0x1ed1ff};return pollyResult(_0x503fb6,_0xf60942,_0x13224e);};
\ No newline at end of file
+var _0x26e5=['exports','Polly','text','mp3','bluebird','randomstring','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!'];(function(_0x28e194,_0x1f7e9c){var _0xe74396=function(_0x39b6df){while(--_0x39b6df){_0x28e194['push'](_0x28e194['shift']());}};_0xe74396(++_0x1f7e9c);}(_0x26e5,0x9e));var _0x526e=function(_0x15797a,_0x16274f){_0x15797a=_0x15797a-0x0;var _0x3e2618=_0x26e5[_0x15797a];return _0x3e2618;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x526e('0x0'));var rs=require(_0x526e('0x1'));var AWS=require('aws-sdk');function pollyResult(_0x32a132,_0x3d07b6,_0x502cff){return new BPromise(function(_0x6b4fb9,_0x50952d){_0x32a132[_0x526e('0x2')](_0x3d07b6,function(_0x58e584,_0x426b1d){if(_0x58e584){_0x50952d(_0x58e584);}else if(_0x426b1d){if(_0x426b1d[_0x526e('0x3')]instanceof Buffer){fs[_0x526e('0x4')](_0x502cff,_0x426b1d['AudioStream'],function(_0x40892e){if(_0x40892e){_0x50952d(_0x40892e);}else{_0x6b4fb9();}});}else{_0x50952d(new Error(_0x526e('0x5')));}}else{_0x50952d(new Error(_0x526e('0x6')));}});});}module[_0x526e('0x7')]=function(_0x1fe4a3,_0x48d21b,_0x105201,_0x1929ca,_0x26c517,_0x279b77,_0x38ef5e){var _0x565ba7=new AWS[(_0x526e('0x8'))]({'accessKeyId':_0x1fe4a3,'secretAccessKey':_0x48d21b,'region':_0x105201});var _0x12363f={'Text':_0x26c517,'TextType':_0x279b77||_0x526e('0x9'),'OutputFormat':_0x526e('0xa'),'VoiceId':_0x1929ca};return pollyResult(_0x565ba7,_0x12363f,_0x38ef5e);};
\ No newline at end of file
index 6a35413..e84b658 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5992=['./lib/api'];(function(_0xc1fa4d,_0x5ee29f){var _0x27ab09=function(_0x134f7d){while(--_0x134f7d){_0xc1fa4d['push'](_0xc1fa4d['shift']());}};_0x27ab09(++_0x5ee29f);}(_0x5992,0x111));var _0x2599=function(_0x1d9aa0,_0x272488){_0x1d9aa0=_0x1d9aa0-0x0;var _0x226868=_0x5992[_0x1d9aa0];return _0x226868;};'use strict';var asr=require(_0x2599('0x0'));module['exports']=function(_0x326271,_0x7b7a61,_0x189ffb,_0x37c6ee){return asr(_0x326271,_0x7b7a61,_0x189ffb);};
\ No newline at end of file
+var _0xc1cb=['./lib/api'];(function(_0x4d7c38,_0x10654e){var _0x22353a=function(_0x349893){while(--_0x349893){_0x4d7c38['push'](_0x4d7c38['shift']());}};_0x22353a(++_0x10654e);}(_0xc1cb,0x78));var _0xbc1c=function(_0x223e70,_0x744e6a){_0x223e70=_0x223e70-0x0;var _0xb946f8=_0xc1cb[_0x223e70];return _0xb946f8;};'use strict';var asr=require(_0xbc1c('0x0'));module['exports']=function(_0x3cd022,_0x5d4c16,_0x3c5175,_0x173cbf){return asr(_0x3cd022,_0x5d4c16,_0x3c5175);};
\ No newline at end of file
index a0c484c..68e0e4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2a6=['length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','lang\x20should\x20be\x20a\x20string','readFileSync','base64','POST','/v1/speech:recognize?key=','LINEAR16','url','string'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0xf2a6,0x13d));var _0x6f2a=function(_0x1b6f6a,_0x197170){_0x1b6f6a=_0x1b6f6a-0x0;var _0x2d2830=_0xf2a6[_0x1b6f6a];return _0x2d2830;};'use strict';var url=require(_0x6f2a('0x0'));var BPromise=require('bluebird');var fs=require('fs');var host='https://speech.googleapis.com';module['exports']=function(_0x1b32c0,_0x5b2cbc,_0x3b14e2){return new BPromise(function(_0xf60faa,_0x454ff7){var _0x32ddb6;if(typeof _0x1b32c0!==_0x6f2a('0x1')||_0x1b32c0[_0x6f2a('0x2')]===0x0){return _0x454ff7(_0x6f2a('0x3'));}if(typeof _0x5b2cbc!==_0x6f2a('0x1')||_0x5b2cbc[_0x6f2a('0x2')]===0x0){return _0x454ff7(_0x6f2a('0x4'));}if(typeof _0x3b14e2!=='undefined'&&(typeof _0x3b14e2!==_0x6f2a('0x1')||_0x3b14e2[_0x6f2a('0x2')]===0x0)){return _0x454ff7(_0x6f2a('0x5'));}try{_0x32ddb6=fs[_0x6f2a('0x6')](_0x1b32c0)['toString'](_0x6f2a('0x7'));}catch(_0x5663e2){return _0x454ff7(_0x5663e2);}return _0xf60faa({'method':_0x6f2a('0x8'),'uri':host+_0x6f2a('0x9')+_0x5b2cbc,'body':{'config':{'encoding':_0x6f2a('0xa'),'sampleRateHertz':'8000','languageCode':_0x3b14e2},'audio':{'content':_0x32ddb6}},'json':!![]});});};
\ No newline at end of file
+var _0x0fc2=['readFileSync','base64','POST','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','exports','string','length','filepath\x20should\x20be\x20a\x20string','key\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x0fc2,0x6e));var _0x20fc=function(_0x19aa23,_0x42a0d9){_0x19aa23=_0x19aa23-0x0;var _0x224c6d=_0x0fc2[_0x19aa23];return _0x224c6d;};'use strict';var url=require(_0x20fc('0x0'));var BPromise=require(_0x20fc('0x1'));var fs=require('fs');var host=_0x20fc('0x2');module[_0x20fc('0x3')]=function(_0x51d2ab,_0x46b3ae,_0xba56f5){return new BPromise(function(_0x4765f2,_0x2b95b8){var _0x14a9af;if(typeof _0x51d2ab!==_0x20fc('0x4')||_0x51d2ab[_0x20fc('0x5')]===0x0){return _0x2b95b8(_0x20fc('0x6'));}if(typeof _0x46b3ae!==_0x20fc('0x4')||_0x46b3ae[_0x20fc('0x5')]===0x0){return _0x2b95b8(_0x20fc('0x7'));}if(typeof _0xba56f5!==_0x20fc('0x8')&&(typeof _0xba56f5!==_0x20fc('0x4')||_0xba56f5[_0x20fc('0x5')]===0x0)){return _0x2b95b8(_0x20fc('0x9'));}try{_0x14a9af=fs[_0x20fc('0xa')](_0x51d2ab)['toString'](_0x20fc('0xb'));}catch(_0x3f25d1){return _0x2b95b8(_0x3f25d1);}return _0x4765f2({'method':_0x20fc('0xc'),'uri':host+'/v1/speech:recognize?key='+_0x46b3ae,'body':{'config':{'encoding':_0x20fc('0xd'),'sampleRateHertz':_0x20fc('0xe'),'languageCode':_0xba56f5},'audio':{'content':_0x14a9af}},'json':!![]});});};
\ No newline at end of file
index 10cb4be..8903f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var asr=require('./asr');module['exports']={'asr':asr};
\ No newline at end of file
+var _0x341b=['exports'];(function(_0x246f5a,_0x43afb4){var _0x566ee8=function(_0x1a1995){while(--_0x1a1995){_0x246f5a['push'](_0x246f5a['shift']());}};_0x566ee8(++_0x43afb4);}(_0x341b,0x1ac));var _0xb341=function(_0x46f2f8,_0x236f6e){_0x46f2f8=_0x46f2f8-0x0;var _0x931c1=_0x341b[_0x46f2f8];return _0x931c1;};var asr=require('./asr');module[_0xb341('0x0')]={'asr':asr};
\ No newline at end of file
index ea9586b..defc98d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0484=['freeform=3','channelData','CustomActionData','AudioFromTts','Data','dirName','bluebird','dialogflow','http','path','querystring','sox','google-tts-api','url','parse','util','./google','./sestek','../../../config/logger','agi','https://api.ispeech.org/api/rest','protocol','https:','host','WHAT_EVER','statusCode','\x20failed,\x20status\x20code\x20=\x20','statusMessage','request\x20to\x20','createWriteStream','finish\x20download\x20file','close','error','unlink','download\x20error','end','get','data','transcode','wav','error\x20convert','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','base64','then','777','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','text:synthesize','POST','tmp','.mp3','audioContent','writeFile','chmodSync','info','googleCloudTTS\x20path','split','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','stringify','jQ1olc','null','generic','parse\x20response\x20failed:\x0a','length','goggleTTS\x20path','googleASR','asr','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','catch','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','result','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','googleDialogflowV2','replace','SessionsClient','Dialogflow\x20V2\x20response:','action','queryResult','diagnosticInfo','fields','boolValue','intent','displayName','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','fulfillmentText','tildeASR','Tilde\x20ASR\x20transcription','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3','ispeechASR','model=%s'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x0484,0x192));var _0x4048=function(_0x28b28c,_0x3ee3f4){_0x28b28c=_0x28b28c-0x0;var _0x23ce6b=_0x0484[_0x28b28c];return _0x23ce6b;};'use strict';var apiai=require('apiai-promise');var BPromise=require(_0x4048('0x0'));var dialogflow=require(_0x4048('0x1'));var fs=require('fs');var http=require(_0x4048('0x2'));var https=require('https');var md5=require('md5');var path=require(_0x4048('0x3'));var querystring=require(_0x4048('0x4'));var rp=require('request-promise');var rs=require('randomstring');var sox=require(_0x4048('0x5'));var tts=require(_0x4048('0x6'));var urlParse=require(_0x4048('0x7'))[_0x4048('0x8')];var util=require(_0x4048('0x9'));var aws=require('./aws');var google=require(_0x4048('0xa'));var sestek=require(_0x4048('0xb'));var tilde=require('./tilde');var logger=require(_0x4048('0xc'))(_0x4048('0xd'));var ISPEECH_API=_0x4048('0xe');function downloadFile(_0x36ba81,_0x4d7fea){return new BPromise(function(_0x56cc2e,_0x39932c){var _0x2b4db8=urlParse(_0x36ba81);var _0x6be592=_0x2b4db8[_0x4048('0xf')]===_0x4048('0x10')?https:http;var _0x48a778={'host':_0x2b4db8[_0x4048('0x11')],'path':_0x2b4db8[_0x4048('0x3')],'headers':{'user-agent':_0x4048('0x12')}};_0x6be592['get'](_0x48a778,function(_0x119585){if(_0x119585[_0x4048('0x13')]!==0xc8){logger['error']('request\x20to\x20'+_0x36ba81+_0x4048('0x14')+_0x119585['statusCode']+'\x20('+_0x119585[_0x4048('0x15')]+')');_0x39932c(new Error(_0x4048('0x16')+_0x36ba81+_0x4048('0x14')+_0x119585['statusCode']+'\x20('+_0x119585[_0x4048('0x15')]+')'));return;}var _0x8eb925=fs[_0x4048('0x17')](_0x4d7fea);_0x8eb925['on']('finish',function(){logger['info'](_0x4048('0x18'));_0x8eb925[_0x4048('0x19')](_0x56cc2e);});_0x8eb925['on'](_0x4048('0x1a'),function(_0x59e76d){fs[_0x4048('0x1b')](_0x4d7fea);logger[_0x4048('0x1a')](_0x4048('0x1c'),_0x59e76d);_0x39932c(_0x59e76d);});_0x119585['pipe'](_0x8eb925);})['on'](_0x4048('0x1a'),function(_0x5182b2){logger[_0x4048('0x1a')](_0x5182b2);_0x39932c(_0x5182b2);})[_0x4048('0x1d')]();});}function uploadFile(_0xbe7596){return new BPromise(function(_0x50311c,_0x3ffbfc){var _0x396777=urlParse(_0xbe7596);var _0x61b69f=_0x396777[_0x4048('0xf')]===_0x4048('0x10')?https:http;var _0x54ecd2={'host':_0x396777[_0x4048('0x11')],'path':_0x396777['path'],'headers':{'user-agent':'WHAT_EVER'}};_0x61b69f[_0x4048('0x1e')](_0x54ecd2,function(_0x11a8bb){if(_0x11a8bb['statusCode']!==0xc8){_0x3ffbfc(new Error('request\x20to\x20'+_0xbe7596+_0x4048('0x14')+_0x11a8bb[_0x4048('0x13')]+'\x20('+_0x11a8bb[_0x4048('0x15')]+')'));return;}var _0x282fff='';_0x11a8bb['on'](_0x4048('0x1f'),function(_0x49a9f9){_0x282fff+=_0x49a9f9;});_0x11a8bb['on'](_0x4048('0x1d'),function(){_0x50311c(_0x282fff);});})['on'](_0x4048('0x1a'),function(_0x4ffa33){_0x3ffbfc(_0x4ffa33);})[_0x4048('0x1d')]();});}function convertFile(_0x41c824,_0x59b2ec){return new BPromise(function(_0x5dc805,_0x50092a){var _0xee8b35=sox[_0x4048('0x20')](_0x41c824,_0x59b2ec,{'sampleRate':0x1f40,'format':_0x4048('0x21'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0xee8b35['on']('error',function(_0x96d668){logger[_0x4048('0x1a')](_0x4048('0x22'),_0x96d668);_0x50092a(_0x96d668);});_0xee8b35['on'](_0x4048('0x1d'),function(){logger['info'](_0x4048('0x23'));_0x5dc805();});_0xee8b35[_0x4048('0x24')]();});}function base64Decode(_0x116dfb,_0x2de39b){var _0x382951=path[_0x4048('0x25')](__dirname,'tmp',rs[_0x4048('0x26')](0x4)+_0x4048('0x27'));fs[_0x4048('0x28')](_0x382951,_0x116dfb,_0x4048('0x29'));return convertFile(_0x382951,_0x2de39b)[_0x4048('0x2a')](function(){try{fs['unlink'](_0x382951);fs['chmodSync'](_0x2de39b,_0x4048('0x2b'));}catch(_0x532c9a){logger[_0x4048('0x1a')](_0x532c9a);}return _0x2de39b['split']('.')[0x0];});}function base64Encode(_0x295c49){var _0x36898f=fs[_0x4048('0x2c')](_0x295c49);return new Buffer(_0x36898f)['toString'](_0x4048('0x29'));}exports[_0x4048('0x2d')]=function(_0x4d76d7,_0xb3f20b,_0x3eecb0,_0xa3311b,_0x4d8e47,_0x10244a){var _0x216b02,_0x223bd8;var _0x3ce0e2=_0x4048('0x2e');var _0x4a4315=_0x4048('0x2f')+_0x4d76d7;var _0x119e98={};if(_0xb3f20b===_0x4048('0x30')){_0x119e98[_0x4048('0x31')]={'ssml':_0x3eecb0};}else{_0x119e98[_0x4048('0x31')]={'text':_0x3eecb0};};_0x119e98[_0x4048('0x32')]={'languageCode':_0xa3311b,'ssmlGender':_0x4d8e47};_0x119e98[_0x4048('0x33')]={'audioEncoding':_0x4048('0x34'),'sampleRateHertz':0x1f40};var _0x1f9ba8={'url':_0x3ce0e2+_0x4048('0x35')+_0x4a4315,'method':_0x4048('0x36'),'json':!![],'body':_0x119e98};return rp(_0x1f9ba8)[_0x4048('0x2a')](function(_0x472afd){return new BPromise(function(_0x189ce5,_0x150a2e){_0x216b02=path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs[_0x4048('0x26')](0x4)+_0x4048('0x38'));var _0x40cc85=Buffer['from'](_0x472afd[_0x4048('0x39')],_0x4048('0x29'));return fs[_0x4048('0x3a')](_0x216b02,_0x40cc85,function(_0x58e378){_0x150a2e(_0x58e378);},function(_0x2ef87f){fs[_0x4048('0x3b')](_0x216b02,'777');_0x189ce5(_0x2ef87f);});});})['then'](function(_0x2ec66f){_0x223bd8=path[_0x4048('0x25')](__dirname,'tmp',rs[_0x4048('0x26')](0x4)+_0x4048('0x27'));return convertFile(_0x216b02,_0x223bd8);})[_0x4048('0x2a')](function(){try{fs['unlink'](_0x216b02);fs[_0x4048('0x3b')](_0x223bd8,'777');}catch(_0x35e344){logger[_0x4048('0x1a')](_0x35e344);}logger[_0x4048('0x3c')](_0x4048('0x3d'),_0x223bd8[_0x4048('0x3e')]('.')[0x0]);return _0x223bd8[_0x4048('0x3e')]('.')[0x0];});};exports[_0x4048('0x3f')]=function(_0x44de3e,_0x364f2b){var _0x18b66f=_0x4048('0x40');var _0x3f100f,_0x2ceeb2;var _0x262266;var _0x33af92={'encoding':_0x4048('0x41'),'method':_0x4048('0x36'),'timeout':0x2710,'url':_0x18b66f,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0x4048('0x42')+encodeURIComponent(JSON[_0x4048('0x43')]([[[_0x4048('0x44'),JSON['stringify']([_0x44de3e,_0x364f2b||'en',![],_0x4048('0x45')]),null,_0x4048('0x46')]]]))};return rp(_0x33af92)['then'](function(_0x16c494){try{_0x262266=eval(_0x16c494['slice'](0x5))[0x0][0x2];}catch(_0x29ad47){throw new Error(_0x4048('0x47')+_0x16c494[_0x4048('0x1f')]);}if(!_0x262266){if(_0x44de3e[_0x4048('0x48')]>0xc8){throw new Error('text\x20length\x20limit\x20reached');}else{throw new Error('lang\x20\x22'+_0x364f2b+'\x22\x20might\x20not\x20exist');}}try{_0x262266=eval(_0x262266)[0x0];}catch(_0x4ac46d){throw new Error(_0x4048('0x47')+res[_0x4048('0x1f')]);}const _0x37e8ee=_0x262266;_0x3f100f=path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs[_0x4048('0x26')](0x4)+_0x4048('0x38'));fs['writeFileSync'](_0x3f100f,_0x262266,{'encoding':_0x4048('0x29')});_0x2ceeb2=path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs['generate'](0x4)+_0x4048('0x27'));return convertFile(_0x3f100f,_0x2ceeb2);})[_0x4048('0x2a')](function(){try{fs[_0x4048('0x1b')](_0x3f100f);fs[_0x4048('0x3b')](_0x2ceeb2,_0x4048('0x2b'));}catch(_0x5a2842){logger['error'](_0x5a2842);}logger[_0x4048('0x3c')](_0x4048('0x49'),_0x2ceeb2[_0x4048('0x3e')]('.')[0x0]);return _0x2ceeb2['split']('.')[0x0];});};exports[_0x4048('0x4a')]=function(_0x2213f8,_0x4d01dd,_0x23098e){return google[_0x4048('0x4b')](_0x2213f8,_0x4d01dd,_0x23098e)[_0x4048('0x2a')](function(_0x45da6c){logger['info'](_0x45da6c['uri']);return rp(_0x45da6c);})['then'](function(_0x2e318c){var _0x5ed3a5='';var _0x3e27b0=0x0;try{fs[_0x4048('0x1b')](_0x2213f8);}catch(_0x351ae6){logger[_0x4048('0x1a')](_0x351ae6);}if(_0x2e318c&&_0x2e318c[_0x4048('0x4c')]){_0x5ed3a5=_0x2e318c['results'][_0x4048('0x4d')](function(_0x2a38a1){return _0x2a38a1&&_0x2a38a1[_0x4048('0x4e')][0x0]&&_0x2a38a1[_0x4048('0x4e')][0x0][_0x4048('0x4f')]?_0x2a38a1['alternatives'][0x0]['transcript']:'';})[_0x4048('0x50')]('\x0a');_0x3e27b0=_0x2e318c['results'][_0x4048('0x4d')](function(_0x2bb36c){return _0x2bb36c&&_0x2bb36c[_0x4048('0x4e')][0x0]&&_0x2bb36c['alternatives'][0x0]['confidence']?_0x2bb36c[_0x4048('0x4e')][0x0][_0x4048('0x51')]:0x0;})[_0x4048('0x50')]('\x0a');}logger[_0x4048('0x3c')](_0x4048('0x52'),_0x5ed3a5);logger[_0x4048('0x3c')](_0x4048('0x53'),_0x3e27b0);return{'transcript':_0x5ed3a5,'confidence':_0x3e27b0};})[_0x4048('0x54')](function(_0x3b0417){logger['error'](_0x4048('0x55'),_0x3b0417[_0x4048('0x13')],_0x3b0417[_0x4048('0x56')],_0x3b0417[_0x4048('0x57')]);});};exports[_0x4048('0x58')]=function(_0x306d87,_0x4df7d8,_0x5536c2,_0x54b327){var _0x4801b1=apiai(_0x4df7d8,{'language':_0x54b327||'en'});return _0x4801b1[_0x4048('0x59')](_0x5536c2,{'sessionId':md5(_0x306d87)})[_0x4048('0x2a')](function(_0x237e02){logger[_0x4048('0x3c')](JSON[_0x4048('0x43')](_0x237e02));return{'source':_0x237e02[_0x4048('0x5a')]['source'],'resolvedQuery':_0x237e02[_0x4048('0x5a')]['resolvedQuery'],'action':_0x237e02['result']['action'],'actionIncomplete':_0x237e02['result']['actionIncomplete'],'speech':_0x237e02[_0x4048('0x5a')][_0x4048('0x5b')][_0x4048('0x5c')],'score':_0x237e02[_0x4048('0x5a')][_0x4048('0x5d')],'statusCode':_0x237e02[_0x4048('0x5e')][_0x4048('0x5f')],'endConversation':_0x237e02[_0x4048('0x5a')][_0x4048('0x60')][_0x4048('0x61')]||![],'isFallbackIntent':_0x237e02[_0x4048('0x5a')]['metadata'][_0x4048('0x62')]};});};exports[_0x4048('0x63')]=function(_0xc3674c,_0x5931b5,_0x4f77bd,_0x4f7f1e,_0x32df86,_0x44fc8a){var _0x463ab3=_0x4f7f1e[_0x4048('0x64')](/\\n/g,'\x0a');var _0x2c67d7={'credentials':{'private_key':_0x463ab3,'client_email':_0x4f77bd}};var _0x1b6ab4=new dialogflow[(_0x4048('0x65'))](_0x2c67d7);var _0x5e8565=_0x1b6ab4['sessionPath'](_0x5931b5,md5(_0xc3674c));var _0x194be2={'session':_0x5e8565,'queryInput':{'text':{'text':_0x32df86,'languageCode':_0x44fc8a}}};return _0x1b6ab4['detectIntent'](_0x194be2)['then'](function(_0x35123d){if(_0x35123d&&_0x35123d[_0x4048('0x48')]){logger[_0x4048('0x3c')](_0x4048('0x66'),JSON[_0x4048('0x43')](_0x35123d));var _0x29b50d=_0x35123d[0x0];if(_0x29b50d){var _0x142ffe={'action':_0x29b50d['queryResult'][_0x4048('0x67')],'allRequiredParamsPresent':_0x29b50d[_0x4048('0x68')]['allRequiredParamsPresent'],'endConversation':_0x29b50d[_0x4048('0x68')][_0x4048('0x69')]&&_0x29b50d['queryResult'][_0x4048('0x69')][_0x4048('0x6a')]?_0x29b50d[_0x4048('0x68')]['diagnosticInfo'][_0x4048('0x6a')]['end_conversation'][_0x4048('0x6b')]:![],'fulfillmentText':_0x29b50d[_0x4048('0x68')]['fulfillmentText'],'intentName':_0x29b50d['queryResult'][_0x4048('0x6c')][_0x4048('0x56')],'intentDisplayName':_0x29b50d[_0x4048('0x68')][_0x4048('0x6c')][_0x4048('0x6d')],'isFallbackIntent':_0x29b50d['queryResult'][_0x4048('0x6c')][_0x4048('0x6e')],'languageCode':_0x29b50d[_0x4048('0x68')][_0x4048('0x6f')],'queryText':_0x29b50d[_0x4048('0x68')][_0x4048('0x70')],'responseId':_0x29b50d[_0x4048('0x71')],'score':_0x29b50d['queryResult'][_0x4048('0x72')],'speech':_0x29b50d[_0x4048('0x68')][_0x4048('0x73')],'providerResponse':JSON[_0x4048('0x43')](_0x35123d)};return _0x142ffe;}}});};exports[_0x4048('0x74')]=function(_0x3f314f,_0x3474fc,_0x2e9363,_0x4ce276){return tilde[_0x4048('0x4b')](_0x3f314f,_0x3474fc,_0x2e9363,_0x4ce276)[_0x4048('0x2a')](function(_0x3bcb8e){try{fs[_0x4048('0x1b')](_0x3f314f);}catch(_0x4d1ffb){logger[_0x4048('0x1a')](_0x4d1ffb);}logger[_0x4048('0x3c')](_0x4048('0x75'),_0x3bcb8e['transcript']);logger[_0x4048('0x3c')]('Tilde\x20ASR\x20confidence',_0x3bcb8e[_0x4048('0x51')]);return _0x3bcb8e;});};exports['awsPolly']=function(_0x424e10,_0x4f2983,_0x45219c,_0x24ece9,_0x543fda,_0x4d093d){var _0x3a89d6=path[_0x4048('0x25')](__dirname,'tmp',rs[_0x4048('0x26')](0x4)+_0x4048('0x38'));var _0x3b8c47;return aws[_0x4048('0x76')](_0x424e10,_0x4f2983,_0x45219c,_0x24ece9,_0x543fda,_0x4d093d,_0x3a89d6)[_0x4048('0x2a')](function(){_0x3b8c47=path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs[_0x4048('0x26')](0x4)+'.wav');return convertFile(_0x3a89d6,_0x3b8c47);})[_0x4048('0x2a')](function(){try{fs[_0x4048('0x1b')](_0x3a89d6);fs[_0x4048('0x3b')](_0x3b8c47,_0x4048('0x2b'));}catch(_0x547848){logger[_0x4048('0x1a')](_0x547848);}return _0x3b8c47[_0x4048('0x3e')]('.')[0x0];});};exports[_0x4048('0x77')]=function(_0x47c571,_0x461207,_0x5da511,_0x131d06,_0x30e3d3,_0x26b4b7){return aws[_0x4048('0x78')](_0x47c571,_0x461207,_0x5da511,_0x131d06,_0x30e3d3,_0x26b4b7)[_0x4048('0x2a')](function(_0x3d6138){logger[_0x4048('0x3c')](JSON[_0x4048('0x43')](_0x3d6138));return _0x3d6138;});};exports[_0x4048('0x79')]=function(_0x3aca2e,_0x5bbd85,_0xcece9f,_0x163613){var _0x4591a9=util[_0x4048('0x7a')](_0x4048('0x7b'),ISPEECH_API,_0x3aca2e,encodeURIComponent(_0x5bbd85),_0xcece9f,_0x163613);var _0x27709b=path[_0x4048('0x25')](__dirname,'tmp',rs[_0x4048('0x26')](0x4)+'.mp3');var _0x3f834d;return downloadFile(_0x4591a9,_0x27709b)[_0x4048('0x2a')](function(){_0x3f834d=path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs[_0x4048('0x26')](0x4)+'.wav');return convertFile(_0x27709b,_0x3f834d);})['then'](function(){try{fs[_0x4048('0x1b')](_0x27709b);fs[_0x4048('0x3b')](_0x3f834d,_0x4048('0x2b'));}catch(_0xa74b6f){logger[_0x4048('0x1a')](_0xa74b6f);}return _0x3f834d[_0x4048('0x3e')]('.')[0x0];});};exports[_0x4048('0x7c')]=function(_0x452149,_0x3b7873,_0x411a5f,_0x132003){var _0x37eecb=util[_0x4048('0x7a')]('%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s',ISPEECH_API,_0x3b7873,_0x411a5f,base64Encode(_0x452149),_0x132003?util[_0x4048('0x7a')](_0x4048('0x7d'),encodeURIComponent(_0x132003)):_0x4048('0x7e'));return uploadFile(_0x37eecb)['then'](function(_0x37aea9){return querystring[_0x4048('0x8')](_0x37aea9);});};exports['sestekNDA']=function(_0x49776f,_0x2000b6){return sestek['nda'](_0x49776f,_0x2000b6)[_0x4048('0x2a')](function(_0x564383){logger[_0x4048('0x3c')](JSON['stringify'](_0x564383));var _0x94499e={'speech':_0x564383['text'],'action':_0x564383[_0x4048('0x7f')]?_0x564383[_0x4048('0x7f')]['CustomAction']:undefined,'actiondata':_0x564383[_0x4048('0x7f')]?_0x564383[_0x4048('0x7f')][_0x4048('0x80')]:undefined};if(_0x564383[_0x4048('0x7f')]&&_0x564383[_0x4048('0x7f')][_0x4048('0x81')]){return base64Decode(_0x564383[_0x4048('0x7f')][_0x4048('0x81')][_0x4048('0x82')],path[_0x4048('0x25')](__dirname,_0x4048('0x37'),rs['generate'](0x4)+_0x4048('0x27')))[_0x4048('0x2a')](function(_0xacaf89){_0x94499e['audiofile']=_0xacaf89;return _0x94499e;});}return _0x94499e;});};exports[_0x4048('0x83')]=function(){return __dirname;};
\ No newline at end of file
+var _0x651b=['wav','error\x20convert','finish\x20to\x20convert','start','resolve','tmp','writeFileSync','then','chmodSync','777','split','readFileSync','toString','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','generate','.mp3','base64','writeFile','.wav','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','POST','jQ1olc','stringify','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','goggleTTS\x20path','googleASR','asr','uri','map','alternatives','transcript','join','results','confidence','googleASR\x20transcription','catch','[%s]\x20%s:%s','name','message','textRequest','source','result','action','actionIncomplete','fulfillment','speech','score','status','code','metadata','endConversation','isFallbackIntent','sessionPath','detectIntent','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','intentDetectionConfidence','tildeASR','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','lex','ispeechTTS','format','%s?apikey=%s&action=recognize&locale=%s&content-type=audio/x-wav&audio=%s&%s','freeform=3','sestekNDA','nda','text','channelData','CustomAction','CustomActionData','AudioFromTts','audiofile','dirName','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','request-promise','randomstring','google-tts-api','url','parse','util','./aws','./sestek','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','get','error','statusCode','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','info','finish\x20download\x20file','close','unlink','download\x20error','pipe','end','protocol','WHAT_EVER','request\x20to\x20','data','transcode'];(function(_0x30bd66,_0x36a93d){var _0x74c9dd=function(_0x2cd660){while(--_0x2cd660){_0x30bd66['push'](_0x30bd66['shift']());}};_0x74c9dd(++_0x36a93d);}(_0x651b,0xef));var _0xb651=function(_0x3fd6f6,_0x19be53){_0x3fd6f6=_0x3fd6f6-0x0;var _0x5331ef=_0x651b[_0x3fd6f6];return _0x5331ef;};'use strict';var apiai=require(_0xb651('0x0'));var BPromise=require(_0xb651('0x1'));var dialogflow=require(_0xb651('0x2'));var fs=require('fs');var http=require(_0xb651('0x3'));var https=require(_0xb651('0x4'));var md5=require(_0xb651('0x5'));var path=require(_0xb651('0x6'));var querystring=require(_0xb651('0x7'));var rp=require(_0xb651('0x8'));var rs=require(_0xb651('0x9'));var sox=require('sox');var tts=require(_0xb651('0xa'));var urlParse=require(_0xb651('0xb'))[_0xb651('0xc')];var util=require(_0xb651('0xd'));var aws=require(_0xb651('0xe'));var google=require('./google');var sestek=require(_0xb651('0xf'));var tilde=require(_0xb651('0x10'));var logger=require(_0xb651('0x11'))(_0xb651('0x12'));var ISPEECH_API=_0xb651('0x13');function downloadFile(_0x4e8bb8,_0x53146d){return new BPromise(function(_0x52c9ff,_0xa3d698){var _0x5c50e9=urlParse(_0x4e8bb8);var _0x20b8ae=_0x5c50e9['protocol']===_0xb651('0x14')?https:http;var _0x1c6650={'host':_0x5c50e9[_0xb651('0x15')],'path':_0x5c50e9[_0xb651('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x20b8ae[_0xb651('0x16')](_0x1c6650,function(_0x10caa6){if(_0x10caa6['statusCode']!==0xc8){logger[_0xb651('0x17')]('request\x20to\x20'+_0x4e8bb8+'\x20failed,\x20status\x20code\x20=\x20'+_0x10caa6[_0xb651('0x18')]+'\x20('+_0x10caa6[_0xb651('0x19')]+')');_0xa3d698(new Error('request\x20to\x20'+_0x4e8bb8+_0xb651('0x1a')+_0x10caa6['statusCode']+'\x20('+_0x10caa6[_0xb651('0x19')]+')'));return;}var _0x2b06b7=fs[_0xb651('0x1b')](_0x53146d);_0x2b06b7['on'](_0xb651('0x1c'),function(){logger[_0xb651('0x1d')](_0xb651('0x1e'));_0x2b06b7[_0xb651('0x1f')](_0x52c9ff);});_0x2b06b7['on'](_0xb651('0x17'),function(_0x48cd8d){fs[_0xb651('0x20')](_0x53146d);logger[_0xb651('0x17')](_0xb651('0x21'),_0x48cd8d);_0xa3d698(_0x48cd8d);});_0x10caa6[_0xb651('0x22')](_0x2b06b7);})['on'](_0xb651('0x17'),function(_0x3678b4){logger[_0xb651('0x17')](_0x3678b4);_0xa3d698(_0x3678b4);})[_0xb651('0x23')]();});}function uploadFile(_0x179980){return new BPromise(function(_0x5b7f9b,_0x347765){var _0x23823f=urlParse(_0x179980);var _0x2f07b3=_0x23823f[_0xb651('0x24')]==='https:'?https:http;var _0x51fe75={'host':_0x23823f['host'],'path':_0x23823f[_0xb651('0x6')],'headers':{'user-agent':_0xb651('0x25')}};_0x2f07b3[_0xb651('0x16')](_0x51fe75,function(_0x19e5c4){if(_0x19e5c4['statusCode']!==0xc8){_0x347765(new Error(_0xb651('0x26')+_0x179980+'\x20failed,\x20status\x20code\x20=\x20'+_0x19e5c4[_0xb651('0x18')]+'\x20('+_0x19e5c4['statusMessage']+')'));return;}var _0xb48f40='';_0x19e5c4['on'](_0xb651('0x27'),function(_0x12a59d){_0xb48f40+=_0x12a59d;});_0x19e5c4['on']('end',function(){_0x5b7f9b(_0xb48f40);});})['on'](_0xb651('0x17'),function(_0x8781ff){_0x347765(_0x8781ff);})[_0xb651('0x23')]();});}function convertFile(_0xbe941e,_0x530a3b){return new BPromise(function(_0x2445ec,_0x37e29a){var _0x1ecf1e=sox[_0xb651('0x28')](_0xbe941e,_0x530a3b,{'sampleRate':0x1f40,'format':_0xb651('0x29'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x1ecf1e['on'](_0xb651('0x17'),function(_0x14d824){logger[_0xb651('0x17')](_0xb651('0x2a'),_0x14d824);_0x37e29a(_0x14d824);});_0x1ecf1e['on'](_0xb651('0x23'),function(){logger[_0xb651('0x1d')](_0xb651('0x2b'));_0x2445ec();});_0x1ecf1e[_0xb651('0x2c')]();});}function base64Decode(_0x3c4624,_0x13e0d0){var _0x39d425=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs['generate'](0x4)+'.wav');fs[_0xb651('0x2f')](_0x39d425,_0x3c4624,'base64');return convertFile(_0x39d425,_0x13e0d0)[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0x39d425);fs[_0xb651('0x31')](_0x13e0d0,_0xb651('0x32'));}catch(_0x442e32){logger['error'](_0x442e32);}return _0x13e0d0[_0xb651('0x33')]('.')[0x0];});}function base64Encode(_0x3a6321){var _0xbb6423=fs[_0xb651('0x34')](_0x3a6321);return new Buffer(_0xbb6423)[_0xb651('0x35')]('base64');}exports['googleCloudTTS']=function(_0x2ff671,_0x2a8a03,_0x52cc16,_0x265589,_0x4d423f,_0x30ace9){var _0x3093bc,_0x1ccc56;var _0x1749df=_0xb651('0x36');var _0x55b067=_0xb651('0x37')+_0x2ff671;var _0x130460={};if(_0x2a8a03===_0xb651('0x38')){_0x130460['input']={'ssml':_0x52cc16};}else{_0x130460[_0xb651('0x39')]={'text':_0x52cc16};};_0x130460[_0xb651('0x3a')]={'languageCode':_0x265589,'ssmlGender':_0x4d423f};_0x130460[_0xb651('0x3b')]={'audioEncoding':_0xb651('0x3c'),'sampleRateHertz':0x1f40};var _0x5a6447={'url':_0x1749df+'text:synthesize'+_0x55b067,'method':'POST','json':!![],'body':_0x130460};return rp(_0x5a6447)['then'](function(_0x3ccbb3){return new BPromise(function(_0x174e64,_0x53bb3a){_0x3093bc=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x28f14a=Buffer['from'](_0x3ccbb3['audioContent'],_0xb651('0x3f'));return fs[_0xb651('0x40')](_0x3093bc,_0x28f14a,function(_0x43a4cd){_0x53bb3a(_0x43a4cd);},function(_0x47dc59){fs[_0xb651('0x31')](_0x3093bc,_0xb651('0x32'));_0x174e64(_0x47dc59);});});})[_0xb651('0x30')](function(_0x5cf1d6){_0x1ccc56=path[_0xb651('0x2d')](__dirname,'tmp',rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x3093bc,_0x1ccc56);})['then'](function(){try{fs['unlink'](_0x3093bc);fs['chmodSync'](_0x1ccc56,_0xb651('0x32'));}catch(_0x4e84d9){logger[_0xb651('0x17')](_0x4e84d9);}logger[_0xb651('0x1d')]('googleCloudTTS\x20path',_0x1ccc56[_0xb651('0x33')]('.')[0x0]);return _0x1ccc56[_0xb651('0x33')]('.')[0x0];});};exports['googleTTS']=function(_0x184cef,_0x238167){var _0x26cb8e=_0xb651('0x42');var _0xc3923f,_0x8c2b1f;var _0x471516;var _0x53c161={'encoding':'utf8','method':_0xb651('0x43'),'timeout':0x2710,'url':_0x26cb8e,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':'f.req='+encodeURIComponent(JSON['stringify']([[[_0xb651('0x44'),JSON[_0xb651('0x45')]([_0x184cef,_0x238167||'en',![],_0xb651('0x46')]),null,_0xb651('0x47')]]]))};return rp(_0x53c161)[_0xb651('0x30')](function(_0x27557c){try{_0x471516=eval(_0x27557c[_0xb651('0x48')](0x5))[0x0][0x2];}catch(_0x243697){throw new Error(_0xb651('0x49')+_0x27557c[_0xb651('0x27')]);}if(!_0x471516){if(_0x184cef[_0xb651('0x4a')]>0xc8){throw new Error(_0xb651('0x4b'));}else{throw new Error('lang\x20\x22'+_0x238167+_0xb651('0x4c'));}}try{_0x471516=eval(_0x471516)[0x0];}catch(_0x4c4f54){throw new Error(_0xb651('0x49')+res[_0xb651('0x27')]);}const _0x5868dd=_0x471516;_0xc3923f=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs['generate'](0x4)+_0xb651('0x3e'));fs[_0xb651('0x2f')](_0xc3923f,_0x471516,{'encoding':_0xb651('0x3f')});_0x8c2b1f=path[_0xb651('0x2d')](__dirname,'tmp',rs['generate'](0x4)+_0xb651('0x41'));return convertFile(_0xc3923f,_0x8c2b1f);})[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0xc3923f);fs[_0xb651('0x31')](_0x8c2b1f,_0xb651('0x32'));}catch(_0x11478b){logger['error'](_0x11478b);}logger[_0xb651('0x1d')](_0xb651('0x4d'),_0x8c2b1f[_0xb651('0x33')]('.')[0x0]);return _0x8c2b1f[_0xb651('0x33')]('.')[0x0];});};exports[_0xb651('0x4e')]=function(_0x5f9092,_0x283802,_0x2341cb){return google[_0xb651('0x4f')](_0x5f9092,_0x283802,_0x2341cb)[_0xb651('0x30')](function(_0x5abec3){logger[_0xb651('0x1d')](_0x5abec3[_0xb651('0x50')]);return rp(_0x5abec3);})['then'](function(_0x42e6c0){var _0x4410ac='';var _0x44e53c=0x0;try{fs[_0xb651('0x20')](_0x5f9092);}catch(_0x2a4528){logger['error'](_0x2a4528);}if(_0x42e6c0&&_0x42e6c0['results']){_0x4410ac=_0x42e6c0['results'][_0xb651('0x51')](function(_0x5a116f){return _0x5a116f&&_0x5a116f[_0xb651('0x52')][0x0]&&_0x5a116f['alternatives'][0x0][_0xb651('0x53')]?_0x5a116f[_0xb651('0x52')][0x0][_0xb651('0x53')]:'';})[_0xb651('0x54')]('\x0a');_0x44e53c=_0x42e6c0[_0xb651('0x55')][_0xb651('0x51')](function(_0x3b3929){return _0x3b3929&&_0x3b3929[_0xb651('0x52')][0x0]&&_0x3b3929[_0xb651('0x52')][0x0][_0xb651('0x56')]?_0x3b3929['alternatives'][0x0][_0xb651('0x56')]:0x0;})[_0xb651('0x54')]('\x0a');}logger[_0xb651('0x1d')](_0xb651('0x57'),_0x4410ac);logger[_0xb651('0x1d')]('googleASR\x20confidence',_0x44e53c);return{'transcript':_0x4410ac,'confidence':_0x44e53c};})[_0xb651('0x58')](function(_0xbf37a9){logger[_0xb651('0x17')](_0xb651('0x59'),_0xbf37a9[_0xb651('0x18')],_0xbf37a9[_0xb651('0x5a')],_0xbf37a9[_0xb651('0x5b')]);});};exports['googleDialogflow']=function(_0x831b81,_0xc78313,_0x2b0eb1,_0x3a7031){var _0x226968=apiai(_0xc78313,{'language':_0x3a7031||'en'});return _0x226968[_0xb651('0x5c')](_0x2b0eb1,{'sessionId':md5(_0x831b81)})[_0xb651('0x30')](function(_0x6fc32d){logger[_0xb651('0x1d')](JSON[_0xb651('0x45')](_0x6fc32d));return{'source':_0x6fc32d['result'][_0xb651('0x5d')],'resolvedQuery':_0x6fc32d[_0xb651('0x5e')]['resolvedQuery'],'action':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x5f')],'actionIncomplete':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x60')],'speech':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x61')][_0xb651('0x62')],'score':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x63')],'statusCode':_0x6fc32d[_0xb651('0x64')][_0xb651('0x65')],'endConversation':_0x6fc32d['result'][_0xb651('0x66')][_0xb651('0x67')]||![],'isFallbackIntent':_0x6fc32d[_0xb651('0x5e')][_0xb651('0x66')][_0xb651('0x68')]};});};exports['googleDialogflowV2']=function(_0x4be51f,_0x3c805d,_0x144b3d,_0x26f9bd,_0x309856,_0x306956){var _0x1ae4bb=_0x26f9bd['replace'](/\\n/g,'\x0a');var _0x262efb={'credentials':{'private_key':_0x1ae4bb,'client_email':_0x144b3d}};var _0x4e21b3=new dialogflow['SessionsClient'](_0x262efb);var _0x5561ae=_0x4e21b3[_0xb651('0x69')](_0x3c805d,md5(_0x4be51f));var _0x35979e={'session':_0x5561ae,'queryInput':{'text':{'text':_0x309856,'languageCode':_0x306956}}};return _0x4e21b3[_0xb651('0x6a')](_0x35979e)[_0xb651('0x30')](function(_0x2c23be){if(_0x2c23be&&_0x2c23be[_0xb651('0x4a')]){logger[_0xb651('0x1d')](_0xb651('0x6b'),JSON['stringify'](_0x2c23be));var _0x27a76=_0x2c23be[0x0];if(_0x27a76){var _0x34fbf2={'action':_0x27a76[_0xb651('0x6c')]['action'],'allRequiredParamsPresent':_0x27a76[_0xb651('0x6c')][_0xb651('0x6d')],'endConversation':_0x27a76['queryResult'][_0xb651('0x6e')]&&_0x27a76[_0xb651('0x6c')][_0xb651('0x6e')][_0xb651('0x6f')]?_0x27a76['queryResult'][_0xb651('0x6e')]['fields']['end_conversation'][_0xb651('0x70')]:![],'fulfillmentText':_0x27a76['queryResult'][_0xb651('0x71')],'intentName':_0x27a76[_0xb651('0x6c')][_0xb651('0x72')][_0xb651('0x5a')],'intentDisplayName':_0x27a76[_0xb651('0x6c')]['intent'][_0xb651('0x73')],'isFallbackIntent':_0x27a76[_0xb651('0x6c')][_0xb651('0x72')][_0xb651('0x74')],'languageCode':_0x27a76['queryResult'][_0xb651('0x75')],'queryText':_0x27a76[_0xb651('0x6c')][_0xb651('0x76')],'responseId':_0x27a76['responseId'],'score':_0x27a76['queryResult'][_0xb651('0x77')],'speech':_0x27a76[_0xb651('0x6c')]['fulfillmentText'],'providerResponse':JSON[_0xb651('0x45')](_0x2c23be)};return _0x34fbf2;}}});};exports[_0xb651('0x78')]=function(_0x13cca8,_0x4049f4,_0x33ae9c,_0x1de13e){return tilde['asr'](_0x13cca8,_0x4049f4,_0x33ae9c,_0x1de13e)['then'](function(_0x5eda29){try{fs['unlink'](_0x13cca8);}catch(_0x428e2d){logger[_0xb651('0x17')](_0x428e2d);}logger['info'](_0xb651('0x79'),_0x5eda29[_0xb651('0x53')]);logger[_0xb651('0x1d')](_0xb651('0x7a'),_0x5eda29[_0xb651('0x56')]);return _0x5eda29;});};exports[_0xb651('0x7b')]=function(_0x5ed105,_0x6f1217,_0x10c8eb,_0x35c5b4,_0xb9dcfb,_0x5ba511){var _0x2c2699=path['resolve'](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x2ff0fb;return aws[_0xb651('0x7c')](_0x5ed105,_0x6f1217,_0x10c8eb,_0x35c5b4,_0xb9dcfb,_0x5ba511,_0x2c2699)['then'](function(){_0x2ff0fb=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x2c2699,_0x2ff0fb);})[_0xb651('0x30')](function(){try{fs['unlink'](_0x2c2699);fs[_0xb651('0x31')](_0x2ff0fb,'777');}catch(_0x5026e1){logger[_0xb651('0x17')](_0x5026e1);}return _0x2ff0fb[_0xb651('0x33')]('.')[0x0];});};exports[_0xb651('0x7d')]=function(_0x3849cd,_0x47197f,_0x39d3db,_0x4faebc,_0x55fd5f,_0x45a8cc){return aws[_0xb651('0x7e')](_0x3849cd,_0x47197f,_0x39d3db,_0x4faebc,_0x55fd5f,_0x45a8cc)['then'](function(_0x52742a){logger[_0xb651('0x1d')](JSON['stringify'](_0x52742a));return _0x52742a;});};exports[_0xb651('0x7f')]=function(_0x57ecbc,_0x2b7e18,_0xbdbf85,_0x10738c){var _0x3cb4f2=util[_0xb651('0x80')]('%s?apikey=%s&action=convert&text=%s&voice=%s&speed=%s&format=mp3',ISPEECH_API,_0x57ecbc,encodeURIComponent(_0x2b7e18),_0xbdbf85,_0x10738c);var _0x25235f=path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x3e'));var _0x2ff0c5;return downloadFile(_0x3cb4f2,_0x25235f)[_0xb651('0x30')](function(){_0x2ff0c5=path['resolve'](__dirname,'tmp',rs[_0xb651('0x3d')](0x4)+_0xb651('0x41'));return convertFile(_0x25235f,_0x2ff0c5);})[_0xb651('0x30')](function(){try{fs[_0xb651('0x20')](_0x25235f);fs['chmodSync'](_0x2ff0c5,_0xb651('0x32'));}catch(_0x485bf0){logger[_0xb651('0x17')](_0x485bf0);}return _0x2ff0c5['split']('.')[0x0];});};exports['ispeechASR']=function(_0x508239,_0x5aeadd,_0x4ca922,_0x1a3a5e){var _0x5307dc=util[_0xb651('0x80')](_0xb651('0x81'),ISPEECH_API,_0x5aeadd,_0x4ca922,base64Encode(_0x508239),_0x1a3a5e?util['format']('model=%s',encodeURIComponent(_0x1a3a5e)):_0xb651('0x82'));return uploadFile(_0x5307dc)['then'](function(_0x292530){return querystring[_0xb651('0xc')](_0x292530);});};exports[_0xb651('0x83')]=function(_0x4e562c,_0x28b2f3){return sestek[_0xb651('0x84')](_0x4e562c,_0x28b2f3)['then'](function(_0x44e40a){logger['info'](JSON[_0xb651('0x45')](_0x44e40a));var _0x3d2225={'speech':_0x44e40a[_0xb651('0x85')],'action':_0x44e40a[_0xb651('0x86')]?_0x44e40a[_0xb651('0x86')][_0xb651('0x87')]:undefined,'actiondata':_0x44e40a[_0xb651('0x86')]?_0x44e40a[_0xb651('0x86')][_0xb651('0x88')]:undefined};if(_0x44e40a[_0xb651('0x86')]&&_0x44e40a['channelData'][_0xb651('0x89')]){return base64Decode(_0x44e40a[_0xb651('0x86')]['AudioFromTts']['Data'],path[_0xb651('0x2d')](__dirname,_0xb651('0x2e'),rs[_0xb651('0x3d')](0x4)+_0xb651('0x41')))[_0xb651('0x30')](function(_0x47c600){_0x3d2225[_0xb651('0x8a')]=_0x47c600;return _0x3d2225;});}return _0x3d2225;});};exports[_0xb651('0x8b')]=function(){return __dirname;};
\ No newline at end of file
index 11f45ea..7c13675 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd823=['./nda'];(function(_0x3ccd6e,_0x5baac5){var _0x5cde6b=function(_0x207573){while(--_0x207573){_0x3ccd6e['push'](_0x3ccd6e['shift']());}};_0x5cde6b(++_0x5baac5);}(_0xd823,0x139));var _0x3d82=function(_0x27def7,_0x3f0835){_0x27def7=_0x27def7-0x0;var _0x581cbc=_0xd823[_0x27def7];return _0x581cbc;};var nda=require(_0x3d82('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var _0x7026=['exports','./nda'];(function(_0x3bc7f4,_0x51a4e1){var _0x10c47c=function(_0x231199){while(--_0x231199){_0x3bc7f4['push'](_0x3bc7f4['shift']());}};_0x10c47c(++_0x51a4e1);}(_0x7026,0x11d));var _0x6702=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x7026[_0x17d9e3];return _0x14192d;};var nda=require(_0x6702('0x0'));module[_0x6702('0x1')]={'nda':nda};
\ No newline at end of file
index 12a9b94..6e89f1f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa249=['exports','POST','password','username','then','resolve','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','Nda','uniqueid','callerid','dnid','text','access_token','project','body','channelData','ProjectName','ndagenerate_audio','AudioOutputSettings','audio/wav','CustomAction','custom_action','CustomActionData','custom_action_data','info','stringify','request-promise','url','agi'];(function(_0x5f03b2,_0x5ae481){var _0x23f1e4=function(_0x4cf99){while(--_0x4cf99){_0x5f03b2['push'](_0x5f03b2['shift']());}};_0x23f1e4(++_0x5ae481);}(_0xa249,0x183));var _0x9a24=function(_0x2276e9,_0x39fb1d){_0x2276e9=_0x2276e9-0x0;var _0x4657ee=_0xa249[_0x2276e9];return _0x4657ee;};'use strict';var rp=require(_0x9a24('0x0'));var url=require(_0x9a24('0x1'));var logger=require('../../../../../config/logger')(_0x9a24('0x2'));module[_0x9a24('0x3')]=function(_0x575a09,_0x12ef32){var _0x4d4d56={'method':_0x9a24('0x4'),'uri':url['resolve'](_0x12ef32['ndauth_url'],'/token'),'form':{'grant_type':_0x9a24('0x5'),'username':_0x12ef32[_0x9a24('0x6')],'password':_0x12ef32[_0x9a24('0x5')]},'json':!![]};return rp(_0x4d4d56)[_0x9a24('0x7')](function(_0x3f2459){var _0x22f220={'method':_0x9a24('0x4'),'uri':url[_0x9a24('0x8')](_0x12ef32[_0x9a24('0x9')],_0x9a24('0xa')),'body':{'type':_0x12ef32['ndaactivity_type']||'message','channelId':_0x9a24('0xb'),'conversation':{'id':_0x575a09[_0x9a24('0xc')]},'from':{'id':_0x575a09[_0x9a24('0xd')],'name':_0x575a09['calleridname']},'recipient':{'id':_0x575a09[_0x9a24('0xe')],'name':_0x575a09['extension']},'text':_0x12ef32[_0x9a24('0xf')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0x3f2459[_0x9a24('0x10')]},'json':!![]};if(_0x12ef32[_0x9a24('0x11')]){_0x22f220[_0x9a24('0x12')][_0x9a24('0x13')][_0x9a24('0x14')]=_0x12ef32['project'];}if(_0x12ef32[_0x9a24('0x15')]=='1'){_0x22f220[_0x9a24('0x12')][_0x9a24('0x13')][_0x9a24('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x9a24('0x17')};}if(_0x12ef32['custom_action']){_0x22f220['body'][_0x9a24('0x13')][_0x9a24('0x18')]=_0x12ef32[_0x9a24('0x19')];if(_0x12ef32['custom_action_data']){_0x22f220[_0x9a24('0x12')][_0x9a24('0x13')][_0x9a24('0x1a')]=_0x12ef32[_0x9a24('0x1b')];}}logger[_0x9a24('0x1c')](JSON[_0x9a24('0x1d')](_0x22f220));return rp(_0x22f220);});};
\ No newline at end of file
+var _0x6c4b=['exports','POST','resolve','password','then','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','uniqueid','callerid','calleridname','dnid','text','Bearer\x20','access_token','project','body','channelData','ProjectName','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger'];(function(_0x38eb23,_0x196e8b){var _0x48506a=function(_0x36edb0){while(--_0x36edb0){_0x38eb23['push'](_0x38eb23['shift']());}};_0x48506a(++_0x196e8b);}(_0x6c4b,0x93));var _0xb6c4=function(_0x59a542,_0x412c68){_0x59a542=_0x59a542-0x0;var _0x656aa3=_0x6c4b[_0x59a542];return _0x656aa3;};'use strict';var rp=require(_0xb6c4('0x0'));var url=require(_0xb6c4('0x1'));var logger=require(_0xb6c4('0x2'))('agi');module[_0xb6c4('0x3')]=function(_0x2a1872,_0x235930){var _0x794568={'method':_0xb6c4('0x4'),'uri':url[_0xb6c4('0x5')](_0x235930['ndauth_url'],'/token'),'form':{'grant_type':_0xb6c4('0x6'),'username':_0x235930['username'],'password':_0x235930[_0xb6c4('0x6')]},'json':!![]};return rp(_0x794568)[_0xb6c4('0x7')](function(_0x554935){var _0x312141={'method':_0xb6c4('0x4'),'uri':url[_0xb6c4('0x5')](_0x235930[_0xb6c4('0x8')],_0xb6c4('0x9')),'body':{'type':_0x235930[_0xb6c4('0xa')]||_0xb6c4('0xb'),'channelId':'Nda','conversation':{'id':_0x2a1872[_0xb6c4('0xc')]},'from':{'id':_0x2a1872[_0xb6c4('0xd')],'name':_0x2a1872[_0xb6c4('0xe')]},'recipient':{'id':_0x2a1872[_0xb6c4('0xf')],'name':_0x2a1872['extension']},'text':_0x235930[_0xb6c4('0x10')],'channelData':{}},'headers':{'Authorization':_0xb6c4('0x11')+_0x554935[_0xb6c4('0x12')]},'json':!![]};if(_0x235930[_0xb6c4('0x13')]){_0x312141[_0xb6c4('0x14')][_0xb6c4('0x15')][_0xb6c4('0x16')]=_0x235930[_0xb6c4('0x13')];}if(_0x235930['ndagenerate_audio']=='1'){_0x312141['body'][_0xb6c4('0x15')]['AudioOutputSettings']={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0xb6c4('0x17')};}if(_0x235930[_0xb6c4('0x18')]){_0x312141[_0xb6c4('0x14')]['channelData'][_0xb6c4('0x19')]=_0x235930[_0xb6c4('0x18')];if(_0x235930[_0xb6c4('0x1a')]){_0x312141['body'][_0xb6c4('0x15')][_0xb6c4('0x1b')]=_0x235930[_0xb6c4('0x1a')];}}logger[_0xb6c4('0x1c')](JSON[_0xb6c4('0x1d')](_0x312141));return rp(_0x312141);});};
\ No newline at end of file
index 30238de..45ff653 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2df=['./lib/api','exports'];(function(_0x4f8b2b,_0x1dc8dd){var _0x2f230a=function(_0x232685){while(--_0x232685){_0x4f8b2b['push'](_0x4f8b2b['shift']());}};_0x2f230a(++_0x1dc8dd);}(_0xe2df,0x182));var _0xfe2d=function(_0x3a6f15,_0x10e382){_0x3a6f15=_0x3a6f15-0x0;var _0x374164=_0xe2df[_0x3a6f15];return _0x374164;};'use strict';var asr=require(_0xfe2d('0x0'));module[_0xfe2d('0x1')]=function(_0x53cd42,_0x63881c,_0x4ff012,_0x9b5cad){return asr(_0x53cd42,_0x63881c,_0x4ff012,_0x9b5cad);};
\ No newline at end of file
+var _0x63b0=['exports'];(function(_0x1e6486,_0x566f39){var _0x185011=function(_0x2c6f3c){while(--_0x2c6f3c){_0x1e6486['push'](_0x1e6486['shift']());}};_0x185011(++_0x566f39);}(_0x63b0,0x102));var _0x063b=function(_0x99cbb5,_0x11266c){_0x99cbb5=_0x99cbb5-0x0;var _0x2e3f8f=_0x63b0[_0x99cbb5];return _0x2e3f8f;};'use strict';var asr=require('./lib/api');module[_0x063b('0x0')]=function(_0x901d02,_0x4ed2dd,_0x5960c4,_0x1d198d){return asr(_0x901d02,_0x4ed2dd,_0x5960c4,_0x1d198d);};
\ No newline at end of file
index 866377a..42f25de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0232=['../../../../../../config/logger','agi','Tilde\x20URI','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','hex','info','Open\x20Tilde\x20ASR\x20socket','unix','send','stringify','createReadStream','data','close','EOS','error','Tilde\x20ASR\x20send\x20error','terminate','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Not\x20available.\x20Max\x20load\x20limit\x20reached.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isObject','open','bluebird','lodash','moment','crypto'];(function(_0x3ff59d,_0x209599){var _0x221f59=function(_0x121af2){while(--_0x121af2){_0x3ff59d['push'](_0x3ff59d['shift']());}};_0x221f59(++_0x209599);}(_0x0232,0xbf));var _0x2023=function(_0x2d6afd,_0x576024){_0x2d6afd=_0x2d6afd-0x0;var _0x42e93a=_0x0232[_0x2d6afd];return _0x42e93a;};'use strict';var BPromise=require(_0x2023('0x0'));var _=require(_0x2023('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0x2023('0x2'));var crypto=require(_0x2023('0x3'));var logger=require(_0x2023('0x4'))(_0x2023('0x5'));module['exports']=function(_0x2a1cfa,_0xa5bc22,_0xb452a0,_0xe1c626){return new BPromise(function(_0x1799fa,_0xbbdb9b){logger['info'](_0x2023('0x6'),_0xe1c626||'wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE');var _0x4df65d=new WebSocket(_0xe1c626||_0x2023('0x7'),{'perMessageDeflate':![]});var _0x18669a='';var _0x4b2a28='0';var _0x4c93f6='1';var _0x4d1a40=_0x2023('0x8');function _0x5ad10c(_0x137dbb){var _0x24f4b6=crypto[_0x2023('0x9')](_0x2023('0xa'));_0x24f4b6['update'](_0x137dbb);return _0x24f4b6['digest'](_0x2023('0xb'));}function _0x4f169e(){try{logger[_0x2023('0xc')](_0x2023('0xd'));var _0x729adb=moment()[_0x2023('0xe')]();var _0x1925bd=_0x5ad10c(_0x729adb+_0xa5bc22+_0xb452a0);_0x4df65d[_0x2023('0xf')](JSON[_0x2023('0x10')]({'appID':_0xa5bc22,'timestamp':_0x729adb,'appKey':_0x1925bd}));var _0x29a8fc=fs[_0x2023('0x11')](_0x2a1cfa);_0x29a8fc['on'](_0x2023('0x12'),function(_0x1c2b1a){_0x4df65d[_0x2023('0xf')](_0x1c2b1a);});_0x29a8fc['on'](_0x2023('0x13'),function(){_0x4df65d['send'](_0x2023('0x14'));});}catch(_0x8d44cb){logger[_0x2023('0x15')](_0x2023('0x16'),JSON[_0x2023('0x10')](_0x8d44cb));_0x4df65d[_0x2023('0x17')]();}}function _0xd9d578(_0x586bcc){try{if(_0x586bcc){var _0x165641=JSON['parse'](_0x586bcc);switch(_0x165641[_0x2023('0x18')]){case 0x0:if(_0x165641[_0x2023('0x19')]){if(_0x165641[_0x2023('0x19')][_0x2023('0x1a')]){logger[_0x2023('0xc')](_0x2023('0x1b'),JSON[_0x2023('0x10')](_0x165641[_0x2023('0x19')][_0x2023('0x1c')]));_0x18669a=_0x165641[_0x2023('0x19')][_0x2023('0x1c')][0x0][_0x2023('0x1d')];_0x4b2a28=_0x165641[_0x2023('0x19')]['hypotheses'][0x0][_0x2023('0x1e')];_0x4c93f6='0';_0x4d1a40='Success.';_0x4df65d[_0x2023('0x17')]();}}break;case 0x1:logger[_0x2023('0xc')](_0x2023('0x8'));_0x4c93f6='1';_0x4d1a40=_0x2023('0x8');break;case 0x2:logger[_0x2023('0xc')](_0x2023('0x1f'));_0x4c93f6='2';_0x4d1a40=_0x2023('0x1f');break;case 0x9:logger[_0x2023('0xc')](_0x2023('0x20'));_0x4c93f6='9';_0x4d1a40=_0x2023('0x20');break;case 0xa:logger[_0x2023('0xc')](_0x2023('0x21'));_0x4c93f6='10';_0x4d1a40='Authentication\x20failed.';break;case 0xb:logger['info']('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x4c93f6='11';_0x4d1a40=_0x2023('0x22');}}}catch(_0x140a6f){logger[_0x2023('0x15')](_0x2023('0x23'),JSON[_0x2023('0x10')](_0x140a6f));_0x4df65d[_0x2023('0x17')]();}}function _0x497c24(){logger[_0x2023('0xc')]('Close\x20Tilde\x20ASR\x20socket');_0x1799fa({'transcript':_0x18669a,'confidence':_0x4b2a28,'status':_0x4c93f6,'status_message':_0x4d1a40});}function _0x372dd5(_0x5883ff){logger[_0x2023('0x15')](_0x2023('0x24'));if(!_['isNil'](_0x5883ff)){logger[_0x2023('0x15')](_[_0x2023('0x25')](_0x5883ff)?JSON[_0x2023('0x10')](_0x5883ff):_0x5883ff);}}_0x4df65d['on'](_0x2023('0x26'),_0x4f169e);_0x4df65d['on']('message',_0xd9d578);_0x4df65d['on'](_0x2023('0x13'),_0x497c24);_0x4df65d['on'](_0x2023('0x15'),_0x372dd5);});};
\ No newline at end of file
+var _0x2a7d=['Success.','Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.','Authentication\x20failed.','All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.','Tilde\x20ASR\x20parse\x20error','Error\x20Tilde\x20ASR\x20socket','isNil','open','message','lodash','moment','crypto','../../../../../../config/logger','agi','exports','info','wss://runa.tilde.lv/client/ws/speech/LVASR-ONLINE','No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech','createHash','sha1','update','digest','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','close','error','Tilde\x20ASR\x20send\x20error','terminate','parse','status','result','final','Tilde\x20ASR\x20hypoteses','hypotheses','transcript','likelihood'];(function(_0x50bd42,_0x2564d0){var _0x3faa93=function(_0x3c455a){while(--_0x3c455a){_0x50bd42['push'](_0x50bd42['shift']());}};_0x3faa93(++_0x2564d0);}(_0x2a7d,0x141));var _0xd2a7=function(_0x53179e,_0x93b545){_0x53179e=_0x53179e-0x0;var _0x20ccd1=_0x2a7d[_0x53179e];return _0x20ccd1;};'use strict';var BPromise=require('bluebird');var _=require(_0xd2a7('0x0'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xd2a7('0x1'));var crypto=require(_0xd2a7('0x2'));var logger=require(_0xd2a7('0x3'))(_0xd2a7('0x4'));module[_0xd2a7('0x5')]=function(_0x586f34,_0x4503c6,_0x8a25ca,_0x554945){return new BPromise(function(_0x1325cb,_0x340a1c){logger[_0xd2a7('0x6')]('Tilde\x20URI',_0x554945||_0xd2a7('0x7'));var _0x39433d=new WebSocket(_0x554945||_0xd2a7('0x7'),{'perMessageDeflate':![]});var _0x2760d6='';var _0x146001='0';var _0xfb30ae='1';var _0x3ef5b8=_0xd2a7('0x8');function _0x5ecc20(_0x26e6b9){var _0x4112d9=crypto[_0xd2a7('0x9')](_0xd2a7('0xa'));_0x4112d9[_0xd2a7('0xb')](_0x26e6b9);return _0x4112d9[_0xd2a7('0xc')]('hex');}function _0x531296(){try{logger['info'](_0xd2a7('0xd'));var _0x1e6801=moment()['unix']();var _0x25f661=_0x5ecc20(_0x1e6801+_0x4503c6+_0x8a25ca);_0x39433d[_0xd2a7('0xe')](JSON[_0xd2a7('0xf')]({'appID':_0x4503c6,'timestamp':_0x1e6801,'appKey':_0x25f661}));var _0x54277f=fs[_0xd2a7('0x10')](_0x586f34);_0x54277f['on'](_0xd2a7('0x11'),function(_0x56c55f){_0x39433d['send'](_0x56c55f);});_0x54277f['on'](_0xd2a7('0x12'),function(){_0x39433d[_0xd2a7('0xe')]('EOS');});}catch(_0x1f816f){logger[_0xd2a7('0x13')](_0xd2a7('0x14'),JSON[_0xd2a7('0xf')](_0x1f816f));_0x39433d[_0xd2a7('0x15')]();}}function _0x123dcb(_0x42d660){try{if(_0x42d660){var _0x409db2=JSON[_0xd2a7('0x16')](_0x42d660);switch(_0x409db2[_0xd2a7('0x17')]){case 0x0:if(_0x409db2[_0xd2a7('0x18')]){if(_0x409db2[_0xd2a7('0x18')][_0xd2a7('0x19')]){logger[_0xd2a7('0x6')](_0xd2a7('0x1a'),JSON[_0xd2a7('0xf')](_0x409db2[_0xd2a7('0x18')]['hypotheses']));_0x2760d6=_0x409db2[_0xd2a7('0x18')][_0xd2a7('0x1b')][0x0][_0xd2a7('0x1c')];_0x146001=_0x409db2['result'][_0xd2a7('0x1b')][0x0][_0xd2a7('0x1d')];_0xfb30ae='0';_0x3ef5b8=_0xd2a7('0x1e');_0x39433d['terminate']();}}break;case 0x1:logger[_0xd2a7('0x6')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0xfb30ae='1';_0x3ef5b8=_0xd2a7('0x8');break;case 0x2:logger[_0xd2a7('0x6')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0xfb30ae='2';_0x3ef5b8=_0xd2a7('0x1f');break;case 0x9:logger[_0xd2a7('0x6')]('Not\x20available.\x20Max\x20load\x20limit\x20reached.');_0xfb30ae='9';_0x3ef5b8='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0xd2a7('0x6')](_0xd2a7('0x20'));_0xfb30ae='10';_0x3ef5b8=_0xd2a7('0x20');break;case 0xb:logger['info']('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0xfb30ae='11';_0x3ef5b8=_0xd2a7('0x21');}}}catch(_0x15a6f8){logger[_0xd2a7('0x13')](_0xd2a7('0x22'),JSON[_0xd2a7('0xf')](_0x15a6f8));_0x39433d[_0xd2a7('0x15')]();}}function _0x52acfe(){logger[_0xd2a7('0x6')]('Close\x20Tilde\x20ASR\x20socket');_0x1325cb({'transcript':_0x2760d6,'confidence':_0x146001,'status':_0xfb30ae,'status_message':_0x3ef5b8});}function _0x52d41f(_0x1fe30d){logger[_0xd2a7('0x13')](_0xd2a7('0x23'));if(!_[_0xd2a7('0x24')](_0x1fe30d)){logger['error'](_['isObject'](_0x1fe30d)?JSON[_0xd2a7('0xf')](_0x1fe30d):_0x1fe30d);}}_0x39433d['on'](_0xd2a7('0x25'),_0x531296);_0x39433d['on'](_0xd2a7('0x26'),_0x123dcb);_0x39433d['on'](_0xd2a7('0x12'),_0x52acfe);_0x39433d['on'](_0xd2a7('0x13'),_0x52d41f);});};
\ No newline at end of file
index 8594f98..aa2c537 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd935=['./asr'];(function(_0x40bdbc,_0x3fabcd){var _0xc603a8=function(_0x17c0e6){while(--_0x17c0e6){_0x40bdbc['push'](_0x40bdbc['shift']());}};_0xc603a8(++_0x3fabcd);}(_0xd935,0x6d));var _0x5d93=function(_0x4f1be1,_0x2240de){_0x4f1be1=_0x4f1be1-0x0;var _0x1bdd19=_0xd935[_0x4f1be1];return _0x1bdd19;};var asr=require(_0x5d93('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
+var _0x2f32=['exports'];(function(_0x4586da,_0x12c862){var _0x14a825=function(_0x2862f3){while(--_0x2862f3){_0x4586da['push'](_0x4586da['shift']());}};_0x14a825(++_0x12c862);}(_0x2f32,0x13f));var _0x22f3=function(_0x455cc2,_0x5bf423){_0x455cc2=_0x455cc2-0x0;var _0x7403f9=_0x2f32[_0x455cc2];return _0x7403f9;};var asr=require('./asr');module[_0x22f3('0x0')]={'asr':asr};
\ No newline at end of file
index 4b7e42c..01be057 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['connection','getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','close','nextTick','exports','util','net','events','./error','./channel','127.0.0.1','call','emit','error','E_AGI_ARGUMENT_PORT','createServer','listen','listening'];(function(_0x1627ae,_0x2aaa24){var _0x34b38f=function(_0x5c4332){while(--_0x5c4332){_0x1627ae['push'](_0x1627ae['shift']());}};_0x34b38f(++_0x2aaa24);}(_0xe706,0xa3));var _0x6e70=function(_0x4ba18d,_0x134851){_0x4ba18d=_0x4ba18d-0x0;var _0x3a9bc6=_0xe706[_0x4ba18d];return _0x3a9bc6;};'use strict';var util=require(_0x6e70('0x0'));var net=require(_0x6e70('0x1'));var EventEmitter=require(_0x6e70('0x2'))['EventEmitter'];var AGIError=require(_0x6e70('0x3'));var AGIChannel=require(_0x6e70('0x4'));var AGIServer=function(_0x2ca810,_0x7dfbc3,_0x142c27){var _0x2164a4=this;var _0x376a8d=null;var _0x506db9=0x0;if(!_0x2ca810)_0x2ca810=0x11dd;if(!_0x7dfbc3)_0x7dfbc3=_0x6e70('0x5');EventEmitter[_0x6e70('0x6')](_0x2164a4);function _0x36357b(){if(!_0x2ca810){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x9')));return![];}_0x376a8d=net[_0x6e70('0xa')]();_0x376a8d[_0x6e70('0xb')](_0x2ca810,_0x7dfbc3);_0x376a8d['on'](_0x6e70('0xc'),function(){_0x2164a4[_0x6e70('0x7')](_0x6e70('0xc'));});_0x376a8d['on'](_0x6e70('0xd'),function(_0x743eb5){_0x376a8d[_0x6e70('0xe')](function(_0x37b3e0,_0x4600f9){if(_0x37b3e0){_0x2164a4['emit']('error',new AGIError(_0x6e70('0xf'),_0x37b3e0));}else if(_0x142c27&&_0x142c27<0x0){_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x10')));_0x743eb5[_0x6e70('0x11')]();}else if(_0x142c27&&_0x142c27>0x0&&_0x142c27<_0x4600f9){_0x506db9+=0x1;_0x2164a4[_0x6e70('0x7')](_0x6e70('0x8'),new AGIError(_0x6e70('0x12'),_0x506db9));_0x743eb5['destroy']();}else{var _0x52737e=new AGIChannel(_0x743eb5);_0x52737e['on']('ready',function(){_0x2164a4[_0x6e70('0x7')]('connection',_0x52737e);});}});});_0x376a8d['on']('error',function(_0x304716){_0x2164a4[_0x6e70('0x7')]('error',new AGIError(_0x6e70('0xf'),_0x304716['code']));});_0x376a8d['on'](_0x6e70('0x13'),function(){_0x2164a4[_0x6e70('0x7')]('close',new AGIError('E_AGI_SERVER_CLOSE'));});}process[_0x6e70('0x14')](function(){_0x36357b();});};util['inherits'](AGIServer,EventEmitter);module[_0x6e70('0x15')]=function(_0x173afe,_0x53acdc,_0x497d61){return new AGIServer(_0x173afe,_0x53acdc,_0x497d61);};
\ No newline at end of file
+var _0xd8b0=['getConnections','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','destroy','E_AGI_SERVER_MAXCONNECTION','ready','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','./channel','127.0.0.1','call','error','E_AGI_ARGUMENT_PORT','listen','listening','emit','connection'];(function(_0x1435d0,_0x90fded){var _0x53b16f=function(_0x3de81d){while(--_0x3de81d){_0x1435d0['push'](_0x1435d0['shift']());}};_0x53b16f(++_0x90fded);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'use strict';var util=require(_0x0d8b('0x0'));var net=require(_0x0d8b('0x1'));var EventEmitter=require('events')['EventEmitter'];var AGIError=require('./error');var AGIChannel=require(_0x0d8b('0x2'));var AGIServer=function(_0x5b9b89,_0x43bca1,_0x364286){var _0x8196ed=this;var _0x577834=null;var _0x5e15e6=0x0;if(!_0x5b9b89)_0x5b9b89=0x11dd;if(!_0x43bca1)_0x43bca1=_0x0d8b('0x3');EventEmitter[_0x0d8b('0x4')](_0x8196ed);function _0x39f43a(){if(!_0x5b9b89){_0x8196ed['emit'](_0x0d8b('0x5'),new AGIError(_0x0d8b('0x6')));return![];}_0x577834=net['createServer']();_0x577834[_0x0d8b('0x7')](_0x5b9b89,_0x43bca1);_0x577834['on'](_0x0d8b('0x8'),function(){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x8'));});_0x577834['on'](_0x0d8b('0xa'),function(_0x1cac62){_0x577834[_0x0d8b('0xb')](function(_0x28f87c,_0x48fa16){if(_0x28f87c){_0x8196ed[_0x0d8b('0x9')]('error',new AGIError(_0x0d8b('0xc'),_0x28f87c));}else if(_0x364286&&_0x364286<0x0){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xd')));_0x1cac62[_0x0d8b('0xe')]();}else if(_0x364286&&_0x364286>0x0&&_0x364286<_0x48fa16){_0x5e15e6+=0x1;_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xf'),_0x5e15e6));_0x1cac62[_0x0d8b('0xe')]();}else{var _0x2ce75e=new AGIChannel(_0x1cac62);_0x2ce75e['on'](_0x0d8b('0x10'),function(){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0xa'),_0x2ce75e);});}});});_0x577834['on'](_0x0d8b('0x5'),function(_0x4f6f21){_0x8196ed[_0x0d8b('0x9')](_0x0d8b('0x5'),new AGIError(_0x0d8b('0xc'),_0x4f6f21[_0x0d8b('0x11')]));});_0x577834['on'](_0x0d8b('0x12'),function(){_0x8196ed['emit'](_0x0d8b('0x12'),new AGIError(_0x0d8b('0x13')));});}process[_0x0d8b('0x14')](function(){_0x39f43a();});};util[_0x0d8b('0x15')](AGIServer,EventEmitter);module[_0x0d8b('0x16')]=function(_0x18dd2d,_0x264b39,_0xa3612a){return new AGIServer(_0x18dd2d,_0x264b39,_0xa3612a);};
\ No newline at end of file
index 2fecfe3..7f3f3ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd61e=['aws_lex_region','aws_bot_name','googleASR','tildeASR','appid','appsecret','clear','clone','hasOwnProperty','isString','replaceObjectAllVariables','replaceAllVariables','recursiveNodeIndex','isPlainObject','length','saveRestApiResult','%s.%s','isArray','setVariable','replaceAll','getVariable','extra','getAndSetVariable','result','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','noop','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','callback','no\x20list\x20selected','delay','add','minutes','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Executed\x20command\x20%s\x20%s','lumenvoxtts','MRCPSynth','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','database','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query:\x20%s','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','sip_id','no\x20user\x20selected','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','dialogflowV2_project_id','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DialogflowV2\x20Result\x20%s','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','trunk_name','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','getdigits','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','getData','response','maxdigit','test','mindigit','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','GOAL\x20%s','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','amazonlex','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','%s/recordings/%s','NOBEEP','recordFile','intKey','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','beep','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','continueAt','context','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','interval_id','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','ISPEECH_ASR_%s','ispeechtts','Trying\x20ispeech\x20TTS\x20%s','unlink','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','no\x20find\x20by\x20configured','math','operation','no\x20operation\x20configured','math\x20%s','menu','Enter\x20in\x20MENU\x20(%s)\x20block','getSound','Enter\x20in\x20NOOP\x20(%s)\x20block','output','pause','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','getVoiceQueue','no\x20queue\x20found','indexOf','XMCS-QUEUE','QUEUE','macro','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','RECORDING_SAVENAME','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','%s_STATUS_MESSAGE','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','escape_digits','saynumber','sayNumber','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','account_id','no\x20mail\x20account\x20configured','email','user','bcc','subject','template_id','debug','sendMail\x20message','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Trying\x20SendSMS\x20with\x20account\x20%s','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','AGI','agi://%s/square,\x22%s\x22,\x22%s\x22','host','127.0.0.1','system','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','Google\x20Cloud\x20TTS\x20is\x20unreachable','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','mailbox','VOICEMAIL','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','split','join','util','lodash','shelljs','odbc','randomstring','moment','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','channel','rpc','name','catch','prototype','then','getSquareProject','getSquareProjectById','getSquareOdbc','getSquareOdbcById','getUser','getTrunk','getSoundById','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','IntervalId','getSoundPath','format','%s/sounds/converted/%s','getQueryOdbc','open','error','info','ODBC\x20connection\x20successfully','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','calleridname','extension','priority','accountcode','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','ssmlGender','MALE','audioEncoding','googleTTS','restAPI','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','rawBody','parse','An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function','headers','rawHeaders','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','en-US','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex'];(function(_0x1267e2,_0x4f33f6){var _0x18c2f0=function(_0x4cc868){while(--_0x4cc868){_0x1267e2['push'](_0x1267e2['shift']());}};_0x18c2f0(++_0x4f33f6);}(_0xd61e,0x13d));var _0xed61=function(_0x49e26d,_0x2ed658){_0x49e26d=_0x49e26d-0x0;var _0x55395b=_0xd61e[_0x49e26d];return _0x55395b;};'use strict';var fs=require('fs');var util=require(_0xed61('0x0'));var _=require(_0xed61('0x1'));var sh=require(_0xed61('0x2'));var odbc=require(_0xed61('0x3'))();var rs=require(_0xed61('0x4'));var moment=require(_0xed61('0x5'));var Mustache=require('mustache');var rp=require(_0xed61('0x6'));var logger=require(_0xed61('0x7'))(_0xed61('0x8'));var config=require(_0xed61('0x9'));var shared=require(_0xed61('0xa'));var scripts=require(_0xed61('0xb'));var FILES_PATH=_0xed61('0xc');var recursiveMapAttributes=['rawHeaders','rawBody'];var verticesWithRetry=['menu','getdigits','getsecretdigits'];var AGIVertices=function(_0xbac89d,_0x4149eb,_0x2964de){this[_0xed61('0xd')]=_0xbac89d;this[_0xed61('0xe')]=_0x4149eb;this['mailRpc']=_0x2964de;};AGIVertices['prototype']['getVariable']=function(_0x2f1c58,_0x16502a){this['rpc']['getVariableById'](_0x2f1c58)['then'](function(_0x51a0be){_0x16502a(null,_0x51a0be?_0x51a0be[_0xed61('0xf')]:![]);})[_0xed61('0x10')](function(_0x19c74c){_0x16502a(_0x19c74c);});};AGIVertices[_0xed61('0x11')]['getVoiceQueue']=function(_0x22f4bf,_0x28f4cb){this[_0xed61('0xe')]['getVoiceQueueById'](_0x22f4bf)[_0xed61('0x12')](function(_0x7048d3){_0x28f4cb(null,_0x7048d3?_0x7048d3[_0xed61('0xf')]:![]);})[_0xed61('0x10')](function(_0x4d3930){_0x28f4cb(_0x4d3930);});};AGIVertices[_0xed61('0x11')][_0xed61('0x13')]=function(_0x446b8a,_0x6d05cd){this['rpc'][_0xed61('0x14')](_0x446b8a)[_0xed61('0x12')](function(_0x4bd841){_0x6d05cd(null,_0x4bd841?_0x4bd841[_0xed61('0xf')]:![]);})[_0xed61('0x10')](function(_0x9d980e){_0x6d05cd(_0x9d980e);});};AGIVertices['prototype'][_0xed61('0x15')]=function(_0xb7879f,_0xd5aa2d){this['rpc'][_0xed61('0x16')](_0xb7879f)[_0xed61('0x12')](function(_0xce408c){_0xd5aa2d(null,_0xce408c?_0xce408c['dsn']:![]);})[_0xed61('0x10')](function(_0x16d63a){_0xd5aa2d(_0x16d63a);});};AGIVertices['prototype'][_0xed61('0x17')]=function(_0x315020,_0x864dfa){this['rpc']['getUserById'](_0x315020)[_0xed61('0x12')](function(_0x544d49){_0x864dfa(null,_0x544d49?_0x544d49[_0xed61('0xf')]:![]);})[_0xed61('0x10')](function(_0x2722d0){_0x864dfa(_0x2722d0);});};AGIVertices[_0xed61('0x11')][_0xed61('0x18')]=function(_0x5a71f0,_0x579203){this['rpc']['getTrunkById'](_0x5a71f0)['then'](function(_0x405c67){_0x579203(null,_0x405c67?_0x405c67['name']:![]);})[_0xed61('0x10')](function(_0x2c43ba){_0x579203(_0x2c43ba);});};AGIVertices['prototype']['getSound']=function(_0x14d140,_0xca7c0c){var _0x7784f3=this;this['rpc'][_0xed61('0x19')](_0x14d140)[_0xed61('0x12')](function(_0x1ac86e){_0xca7c0c(null,_0x1ac86e?_0x7784f3['getSoundPath'](_0x1ac86e[_0xed61('0x1a')]):![]);})['catch'](function(_0x11fd35){_0xca7c0c(_0x11fd35);});};AGIVertices[_0xed61('0x11')][_0xed61('0x1b')]=function(_0x50b19d,_0x260ac4){this[_0xed61('0xe')][_0xed61('0x1c')](_0x50b19d)[_0xed61('0x12')](function(_0x4b1294){_0x260ac4(null,_0x4b1294?_0x4b1294:![]);})[_0xed61('0x10')](function(_0x524477){_0x260ac4(_0x524477);});};AGIVertices['prototype'][_0xed61('0x1d')]=function(_0x378504,_0x4c8497,_0x368c50){this['mailRpc']['sendMailMessage'](_0x378504,_0x4c8497)[_0xed61('0x12')](function(){_0x368c50(null);})[_0xed61('0x10')](function(_0x1aa7d9){_0x368c50(_0x1aa7d9);});};AGIVertices[_0xed61('0x11')][_0xed61('0x1e')]=function(_0x2cff03,_0x36828b){this['rpc']['getIntervalById'](_0x2cff03)[_0xed61('0x12')](function(_0x4e72d1){if(_0x4e72d1){if(_0x4e72d1[_0xed61('0x1f')]){_0x36828b(null,[_0x4e72d1['interval']]);}else{_0x36828b(null,_['map'](_0x4e72d1['Intervals'],'interval'));}}else{_0x36828b(null,![]);}})['catch'](function(_0x447538){_0x36828b(_0x447538);});};AGIVertices[_0xed61('0x11')][_0xed61('0x20')]=function(_0xa1d78a){return util[_0xed61('0x21')](_0xed61('0x22'),FILES_PATH,_0xa1d78a);};AGIVertices[_0xed61('0x11')][_0xed61('0x23')]=function(_0x5b1e4e,_0x5d9cb3,_0x4b7688){odbc[_0xed61('0x24')](_0x5b1e4e,function(_0x3d3e36){if(_0x3d3e36){logger[_0xed61('0x25')]('Error\x20getting\x20ODBC\x20connection\x20%s',_0x3d3e36);_0x4b7688(_0x3d3e36);}else{logger[_0xed61('0x26')](_0xed61('0x27'));odbc['query'](_0x5d9cb3,function(_0x11ce2e,_0xceb303){if(_0x11ce2e){logger[_0xed61('0x26')](_0xed61('0x28'),_0x5d9cb3);_0x4b7688(_0x11ce2e);}else{logger['info'](_0xed61('0x29'),_0x5d9cb3);odbc[_0xed61('0x2a')](function(_0x2dac29){if(_0x2dac29){logger[_0xed61('0x25')](_0xed61('0x2b'),_0x2dac29);}_0x4b7688(null,_0xceb303);});}});}});};AGIVertices[_0xed61('0x11')][_0xed61('0x2c')]=function(_0x57e623,_0x3abfa6){this[_0xed61('0xe')][_0xed61('0x2d')](_0x57e623)[_0xed61('0x12')](function(_0x10c835){_0x3abfa6(null,_0x10c835?_0x10c835:![]);})[_0xed61('0x10')](function(_0x35ad22){_0x3abfa6(_0x35ad22);});};AGIVertices[_0xed61('0x11')][_0xed61('0x2e')]=function(_0x28d904,_0x3c1b01){this[_0xed61('0xe')][_0xed61('0x2e')](_0x28d904)[_0xed61('0x12')](function(_0x4e6403){_0x3c1b01(null,_0x4e6403);})['catch'](function(_0x190bf2){_0x3c1b01(_0x190bf2);});};AGIVertices[_0xed61('0x11')]['createSquareDetailsReport']=function(_0x5b9bef,_0x4de103,_0x5b0b3b){this[_0xed61('0xe')][_0xed61('0x2f')]({'uniqueid':this[_0xed61('0xd')][_0xed61('0x30')],'node':_0x5b9bef[_0xed61('0x31')],'application':_0x5b9bef[_0xed61('0x32')],'data':_0x4de103||null,'project_name':this['channel'][_0xed61('0x33')],'callerid':this[_0xed61('0xd')][_0xed61('0x34')]})['then'](function(_0x121800){if(_0x5b0b3b){_0x5b0b3b(null,_0x121800);}})[_0xed61('0x10')](function(_0x59d5c6){if(_0x5b0b3b){_0x5b0b3b(_0x59d5c6);}});};AGIVertices[_0xed61('0x11')][_0xed61('0x35')]=function(_0x5b5281,_0x5d7ba8,_0x32c1b0,_0x536ada){this[_0xed61('0xe')][_0xed61('0x35')]({'uniqueid':this['channel'][_0xed61('0x30')],'callerid':this[_0xed61('0xd')][_0xed61('0x34')],'calleridname':this['channel'][_0xed61('0x36')],'context':this[_0xed61('0xd')]['context'],'extension':this[_0xed61('0xd')][_0xed61('0x37')],'priority':this[_0xed61('0xd')][_0xed61('0x38')],'accountcode':this[_0xed61('0xd')][_0xed61('0x39')],'dnid':this[_0xed61('0xd')][_0xed61('0x3a')],'projectName':this[_0xed61('0xd')][_0xed61('0x33')],'saveName':_0x5d7ba8,'filename':_0x5b5281[_0xed61('0x3b')]||_0x5d7ba8,'savePath':_0x32c1b0})[_0xed61('0x12')](function(_0x363a82){_0x536ada(null,_0x363a82);})[_0xed61('0x10')](function(_0xe418b5){_0x536ada(_0xe418b5);});};AGIVertices[_0xed61('0x11')][_0xed61('0x3c')]=function(_0x43031b,_0x3f042a,_0x23f69a,_0xac4195,_0x326d2a){this[_0xed61('0xe')]['createSquareMessage']({'uniqueid':this['channel'][_0xed61('0x30')],'body':_0x43031b,'direction':_0x3f042a,'providerName':_0x23f69a,'providerResponse':_0xac4195})[_0xed61('0x12')](function(_0x2490b7){if(_0x326d2a){_0x326d2a(null,_0x2490b7);}})[_0xed61('0x10')](function(_0x4a7444){if(_0x326d2a){_0x326d2a(_0x4a7444);}});};AGIVertices[_0xed61('0x11')][_0xed61('0x3d')]=function(_0x2aac89,_0x53de57){this['rpc']['createCmContact']({'firstName':_[_0xed61('0x3e')](_0x2aac89[_0xed61('0xf')])||_[_0xed61('0x3f')](_0x2aac89[_0xed61('0xf')])?_0xed61('0x40')+Math[_0xed61('0x41')]():_0x2aac89[_0xed61('0xf')],'lastName':_[_0xed61('0x3e')](_0x2aac89['lastName'])||_[_0xed61('0x3f')](_0x2aac89[_0xed61('0x42')])?null:_0x2aac89['lastName'],'phone':_0x2aac89[_0xed61('0x43')],'ListId':_0x2aac89[_0xed61('0x44')],'scheduledat':_0x2aac89[_0xed61('0x45')],'callbackUniqueid':this['channel'][_0xed61('0x30')],'tags':'callback','description':_0xed61('0x46')+_0x2aac89[_0xed61('0x45')][_0xed61('0x47')](),'priority':_0x2aac89[_0xed61('0x48')]})[_0xed61('0x12')](function(_0x179f81){_0x53de57(null,_0x179f81);})[_0xed61('0x10')](function(_0x527470){_0x53de57(_0x527470);});};AGIVertices[_0xed61('0x11')][_0xed61('0x49')]=function(_0x375ba0,_0x36bb49){this[_0xed61('0xe')][_0xed61('0x4a')](_0x375ba0)['then'](function(_0xe3bc04){_0x36bb49(null,_0xe3bc04?_0xe3bc04['name']:![]);})[_0xed61('0x10')](function(_0x5a4754){_0x36bb49(_0x5a4754);});};AGIVertices[_0xed61('0x11')][_0xed61('0x4b')]=function(_0x591909,_0x2a143f,_0x46ebec){var _0x2e4065={'role':_0xed61('0x4c')};_0x2e4065[_0x591909]=this[_0xed61('0xd')]['callerid'];this[_0xed61('0xe')][_0xed61('0x4b')](_0x2e4065,_0x2a143f,this[_0xed61('0xd')][_0xed61('0x30')])[_0xed61('0x12')](function(_0x19a997){_0x46ebec(null,_[_0xed61('0x3f')](_0x19a997)?![]:!![]);})['catch'](function(_0x4b01f1){logger[_0xed61('0x25')](_0x4b01f1);_0x46ebec(null,![]);});};AGIVertices[_0xed61('0x11')][_0xed61('0x4d')]=function(_0x28ffb2,_0x352c75){var _0x5ec260={'role':_0xed61('0x4c')};_0x5ec260[_0x28ffb2]=this[_0xed61('0xd')][_0xed61('0x34')];this['rpc'][_0xed61('0x4d')](_0x5ec260)[_0xed61('0x12')](function(_0x429d42){_0x352c75(null,_[_0xed61('0x3f')](_0x429d42)?![]:!![]);})[_0xed61('0x10')](function(_0x56d241){logger['error'](_0x56d241);_0x352c75(null,![]);});};AGIVertices[_0xed61('0x11')][_0xed61('0x4e')]=function(_0x2461d3,_0x3aa517){var _0x457d66={'role':_0xed61('0x4c')};_0x457d66[_0x2461d3]=this[_0xed61('0xd')][_0xed61('0x34')];this[_0xed61('0xe')][_0xed61('0x4e')](_0x457d66)['then'](function(_0xb37b4c){_0x3aa517(null,_[_0xed61('0x3f')](_0xb37b4c)?![]:!![]);})['catch'](function(_0x298a12){logger[_0xed61('0x25')](_0x298a12);_0x3aa517(null,![]);});};AGIVertices[_0xed61('0x11')][_0xed61('0x4f')]=function(_0x185bfd,_0x576047){var _0x2b7a8a={'role':'agent'};_0x2b7a8a[_0x185bfd]=this['channel'][_0xed61('0x34')];var _0x27a0e6=_0x185bfd!=_0xed61('0x50')?util['format'](_0xed61('0x51'),_0xed61('0x52'),this[_0xed61('0xd')][_0xed61('0x34')]):undefined;this[_0xed61('0xe')]['agentLogin'](_0x2b7a8a,_0x27a0e6)['then'](function(_0x3c0a5f){_0x576047(null,_[_0xed61('0x3f')](_0x3c0a5f)?![]:!![]);})[_0xed61('0x10')](function(_0x21ab9c){logger[_0xed61('0x25')](_0x21ab9c);_0x576047(null,![]);});};AGIVertices['prototype'][_0xed61('0x53')]=function(_0xb883f7,_0x45824f){sh[_0xed61('0x54')](_['trim'](_0xb883f7),function(_0x257617,_0x2efa4a){var _0x57aef4=_0x2efa4a[_0xed61('0x55')](/(\r\n|\n|\r)/gm,'');_0x45824f(null,_0x57aef4);});};AGIVertices[_0xed61('0x11')][_0xed61('0x56')]=function(_0x121920,_0x2588fc){scripts[_0xed61('0x56')](_0x121920[_0xed61('0x57')],_0x121920[_0xed61('0x58')]||_0xed61('0x59'),_0x121920[_0xed61('0x59')],_0x121920['languageCode']||'en-US',_0x121920[_0xed61('0x5a')]||_0xed61('0x5b'),_0x121920[_0xed61('0x5c')]||'MP3')['then'](function(_0x1a391e){_0x2588fc(null,_0x1a391e);})[_0xed61('0x10')](function(_0x274848){_0x2588fc(_0x274848);});};AGIVertices[_0xed61('0x11')][_0xed61('0x5d')]=function(_0x1c325a,_0x27ac6e){scripts[_0xed61('0x5d')](_0x1c325a[_0xed61('0x59')],_0x1c325a['google_tts_language']||'en',0x1)[_0xed61('0x12')](function(_0x18ff74){_0x27ac6e(null,_0x18ff74);})[_0xed61('0x10')](function(_0x31649f){_0x27ac6e(_0x31649f);});};AGIVertices[_0xed61('0x11')][_0xed61('0x5e')]=function(_0x8472a6,_0x236277){var _0x4e01f7={'uri':_0x8472a6[_0xed61('0x5f')],'method':_0x8472a6[_0xed61('0x60')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x8472a6[_0xed61('0x61')])===_0xed61('0x62')&&parseInt(_0x8472a6[_0xed61('0x61')])>=0x1?parseInt(_0x8472a6[_0xed61('0x61')])*0x3e8:0x5*0x3e8};if(_[_0xed61('0x63')]([_0xed61('0x64'),_0xed61('0x65')],_0x4e01f7[_0xed61('0x60')][_0xed61('0x66')]())){try{_0x4e01f7[_0xed61('0x67')]=_0x8472a6[_0xed61('0x68')]?JSON[_0xed61('0x69')](_0x8472a6[_0xed61('0x68')]):{};}catch(_0x56d2c2){logger[_0xed61('0x25')](_0xed61('0x6a'),_0x56d2c2);}}try{_0x4e01f7[_0xed61('0x6b')]=_0x8472a6[_0xed61('0x6c')]?JSON[_0xed61('0x69')](_0x8472a6[_0xed61('0x6c')]):{};}catch(_0x5845a7){logger[_0xed61('0x25')](_0xed61('0x6d'),_0x5845a7);}if(_0x8472a6[_0xed61('0x6e')]){try{var _0x949e9=require(_0x8472a6[_0xed61('0x6e')])[_0xed61('0x6f')](this,_0x4e01f7);_0x4e01f7['uri']=Mustache[_0xed61('0x70')](_0x8472a6['url'],_0x949e9,{},['$$','$$']);if(_0x4e01f7[_0xed61('0x6b')]){_0x4e01f7[_0xed61('0x6b')]=JSON[_0xed61('0x69')](Mustache['render'](JSON[_0xed61('0x71')](_0x4e01f7['headers']),_0x949e9,{},['$$','$$']));}if(_0x4e01f7['body']){_0x4e01f7[_0xed61('0x67')]=JSON[_0xed61('0x69')](Mustache[_0xed61('0x70')](JSON[_0xed61('0x71')](_0x4e01f7[_0xed61('0x67')]),_0x949e9,{},['$$','$$']));}}catch(_0x4502c6){logger[_0xed61('0x25')](_0xed61('0x72'),_0x4502c6);}}rp(_0x4e01f7)[_0xed61('0x12')](function(_0x23d06d){var _0x3d1281={'statusCode':_0x23d06d[_0xed61('0x73')]||0xc8,'statusMessage':_0x23d06d[_0xed61('0x74')]||'OK','headers':_0x23d06d[_0xed61('0x6b')]||{},'body':_0x23d06d[_0xed61('0x67')]||{}};_0x236277(null,_0x3d1281);})[_0xed61('0x10')](function(_0x1cc020){var _0x1b183a={'statusCode':_0x1cc020[_0xed61('0x73')]||0x1f4,'statusMessage':_0x1cc020[_0xed61('0x75')]||_0xed61('0x76'),'headers':_0x1cc020[_0xed61('0x77')][_0xed61('0x6b')]||{},'body':_0x1cc020['options']['body']||{}};_0x236277(null,_0x1b183a);});};AGIVertices['prototype'][_0xed61('0x78')]=function(_0x109aff,_0x520d21){scripts[_0xed61('0x78')](this[_0xed61('0xd')][_0xed61('0x30')],_0x109aff[_0xed61('0x79')],_0x109aff[_0xed61('0x59')],_0x109aff[_0xed61('0x7a')]||'en')[_0xed61('0x12')](function(_0x5310c2){_0x520d21(null,_0x5310c2);})[_0xed61('0x10')](function(_0x44f604){_0x520d21(_0x44f604);});};AGIVertices[_0xed61('0x11')][_0xed61('0x7b')]=function(_0x419701,_0xd258bb){scripts[_0xed61('0x7b')](this[_0xed61('0xd')][_0xed61('0x30')],_0x419701['dialogflowV2_project_id'],_0x419701[_0xed61('0x7c')],_0x419701[_0xed61('0x7d')],_0x419701[_0xed61('0x59')],_0x419701[_0xed61('0x7e')]||'en')[_0xed61('0x12')](function(_0x35db90){_0xd258bb(null,_0x35db90);})['catch'](function(_0x587aa6){_0xd258bb(_0x587aa6);});};AGIVertices['prototype'][_0xed61('0x7f')]=function(_0x5bcbb9,_0x4b0add){scripts[_0xed61('0x7f')](this['channel'],_0x5bcbb9)[_0xed61('0x12')](function(_0x1cbabc){_0x4b0add(null,_0x1cbabc);})[_0xed61('0x10')](function(_0x43021e){_0x4b0add(_0x43021e);});};AGIVertices[_0xed61('0x11')][_0xed61('0x80')]=function(_0x3c0531,_0x4e1838){scripts[_0xed61('0x80')](_0x3c0531[_0xed61('0x79')],_0x3c0531[_0xed61('0x59')],_0x3c0531['ispeech_tts_language']||_0xed61('0x81'),_0x3c0531[_0xed61('0x82')])[_0xed61('0x12')](function(_0x19417f){_0x4e1838(null,_0x19417f);})[_0xed61('0x10')](function(_0x2c104b){_0x4e1838(_0x2c104b);});};AGIVertices[_0xed61('0x11')][_0xed61('0x83')]=function(_0x2fcbdc,_0x2ff201,_0xe8e904){scripts[_0xed61('0x83')](_0x2ff201,_0x2fcbdc[_0xed61('0x79')],_0x2fcbdc[_0xed61('0x84')]||_0xed61('0x81'),this[_0xed61('0x85')](_0x2fcbdc['model'])?_0x2fcbdc[_0xed61('0x86')]:undefined)['then'](function(_0x3143f9){_0xe8e904(null,_0x3143f9);})[_0xed61('0x10')](function(_0x4d6e0f){_0xe8e904(_0x4d6e0f);});};AGIVertices[_0xed61('0x11')][_0xed61('0x87')]=function(_0x5a74c5,_0x20aec3){scripts['awsPolly'](_0x5a74c5[_0xed61('0x88')],_0x5a74c5[_0xed61('0x89')],_0x5a74c5[_0xed61('0x8a')],_0x5a74c5[_0xed61('0x8b')]||_0xed61('0x8c'),_0x5a74c5[_0xed61('0x59')],_0x5a74c5[_0xed61('0x8d')]||'text')[_0xed61('0x12')](function(_0x44943d){_0x20aec3(null,_0x44943d);})[_0xed61('0x10')](function(_0x3761ab){_0x20aec3(_0x3761ab);});};AGIVertices['prototype']['awsLex']=function(_0x54fad9,_0x2bc556){scripts[_0xed61('0x8e')](this['channel']['uniqueid'],_0x54fad9[_0xed61('0x88')],_0x54fad9[_0xed61('0x89')],_0x54fad9[_0xed61('0x8f')],_0x54fad9[_0xed61('0x59')],_0x54fad9[_0xed61('0x90')])[_0xed61('0x12')](function(_0xc0f25f){_0x2bc556(null,_0xc0f25f);})[_0xed61('0x10')](function(_0x5ab9b4){_0x2bc556(_0x5ab9b4);});};AGIVertices[_0xed61('0x11')][_0xed61('0x91')]=function(_0x3f7eb1,_0x416931,_0x399f30){scripts['googleASR'](_0x416931,_0x3f7eb1['key'],_0x3f7eb1['google_asr_language']||_0xed61('0x81'))[_0xed61('0x12')](function(_0x18caac){_0x399f30(null,_0x18caac);})['catch'](function(_0x499015){_0x399f30(_0x499015);});};AGIVertices[_0xed61('0x11')][_0xed61('0x92')]=function(_0x1f07fd,_0x13ad5f,_0x12446b){scripts[_0xed61('0x92')](_0x13ad5f,_0x1f07fd[_0xed61('0x93')],_0x1f07fd[_0xed61('0x94')],_0x1f07fd['uri'])[_0xed61('0x12')](function(_0x301328){_0x12446b(null,_0x301328);})[_0xed61('0x10')](function(_0x389bc7){_0x12446b(_0x389bc7);});};AGIVertices['prototype'][_0xed61('0x95')]=function(_0x477044){var _0x5a065c=_[_0xed61('0x63')](verticesWithRetry,_0x477044[_0xed61('0x32')])?_0x477044:_[_0xed61('0x96')](_0x477044);for(var _0x1cd9b9 in _0x5a065c){if(_0x5a065c[_0xed61('0x97')](_0x1cd9b9)){if(_0x5a065c[_0x1cd9b9]&&_[_0xed61('0x98')](_0x5a065c[_0x1cd9b9])){if(_[_0xed61('0x63')](recursiveMapAttributes,_0x1cd9b9)){_0x5a065c[_0x1cd9b9]=this[_0xed61('0x99')](_0x5a065c[_0x1cd9b9]);}else{_0x5a065c[_0x1cd9b9]=this[_0xed61('0x9a')](_0x5a065c[_0x1cd9b9]);}}}}return _0x5a065c;};AGIVertices[_0xed61('0x11')][_0xed61('0x9b')]=function(_0x301b3c){for(var _0x429886 in _0x301b3c){if(_0x301b3c[_0xed61('0x97')](_0x429886)){if(_[_0xed61('0x9c')](_0x301b3c[_0x429886])){this[_0xed61('0x9b')](_0x301b3c[_0x429886]);}else if(_['isArray'](_0x301b3c[_0x429886])){for(var _0x5de0f2=0x0;_0x5de0f2<_0x301b3c[_0x429886][_0xed61('0x9d')];_0x5de0f2++){this['recursiveNodeIndex'](_0x301b3c[_0x429886][_0x5de0f2]);}}else if(_['isString'](_0x301b3c[_0x429886])){_0x301b3c[_0x429886]=this['replaceAllVariables'](_0x301b3c[_0x429886]);}}}};AGIVertices[_0xed61('0x11')][_0xed61('0x9e')]=function(_0x1f9fa7,_0x42d004){for(var _0x3b8444 in _0x1f9fa7){if(_0x1f9fa7[_0xed61('0x97')](_0x3b8444)){if(_[_0xed61('0x9c')](_0x1f9fa7[_0x3b8444])){if(!_[_0xed61('0x3e')](_0x1f9fa7[_0x3b8444])){this[_0xed61('0x9e')](_0x1f9fa7[_0x3b8444],util[_0xed61('0x21')](_0xed61('0x9f'),_0x42d004,_0x3b8444));}}else if(_[_0xed61('0xa0')](_0x1f9fa7[_0x3b8444])){for(var _0x31b1d4=0x0;_0x31b1d4<_0x1f9fa7[_0x3b8444]['length'];_0x31b1d4++){this['saveRestApiResult'](_0x1f9fa7[_0x3b8444][_0x31b1d4],util[_0xed61('0x21')](_0xed61('0x9f'),_0x42d004,_0x3b8444+'['+_0x31b1d4+']'));}}else{if(!_[_0xed61('0x3f')](_0x1f9fa7[_0x3b8444])){this[_0xed61('0xd')][_0xed61('0xa1')](util[_0xed61('0x21')](_0xed61('0x9f'),_0x42d004,_0x3b8444),_0x1f9fa7[_0x3b8444]);}}}}};AGIVertices['prototype'][_0xed61('0x99')]=function(_0x102f7f){try{var _0x2d91f9=JSON['parse'](_0x102f7f);this[_0xed61('0x9b')](_0x2d91f9);return JSON['stringify'](_0x2d91f9);}catch(_0x2653f7){return this[_0xed61('0x9a')](_0x102f7f);}};AGIVertices[_0xed61('0x11')][_0xed61('0x9a')]=function(_0x4e335b){var _0x512981=_0x4e335b['split']('{');for(var _0x55528a=0x1;_0x55528a<_0x512981['length'];_0x55528a+=0x1){var _0x33054c=_0x512981[_0x55528a]['split']('}');if(_0x33054c['length']>0x1){_0x4e335b=_0x4e335b[_0xed61('0xa2')]('{'+_0x33054c[0x0]+'}',this[_0xed61('0xd')][_0xed61('0xa3')](_0x33054c[0x0])[_0xed61('0xa4')]||_0x33054c[0x0]);}}if(_0x512981[_0xed61('0x9d')]===0x1){return _0x4e335b['toString']();}return this[_0xed61('0x9a')](_0x4e335b);};AGIVertices['prototype'][_0xed61('0xa5')]=function(_0x2c1cdc,_0x5604d0){var _0x28171b=this[_0xed61('0xd')]['getVariable'](_0x2c1cdc);if(_0x28171b[_0xed61('0xa6')]===-0x1){return _0x28171b;}logger[_0xed61('0x26')](util['format']('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x5604d0,_0x28171b[_0xed61('0xa4')]));return this['channel'][_0xed61('0xa1')](_0x5604d0,_0x28171b[_0xed61('0xa4')]);};AGIVertices['prototype'][_0xed61('0x85')]=function(_0x1db806){return _0x1db806&&_0x1db806!=='0'&&_0x1db806!=='-1'&&_0x1db806!=='';};AGIVertices['prototype'][_0xed61('0xa7')]=function(_0x14897a){this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x14897a,'-');_0x14897a['retry']=_0x14897a[_0xed61('0xa7')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0xed61('0xa8')]=function(_0x474a32){logger[_0xed61('0x26')](util['format'](_0xed61('0xa9'),_0x474a32['label']));if(!this[_0xed61('0x85')](_0x474a32[_0xed61('0x59')])){return this[_0xed61('0xd')]['noop'](_0xed61('0xaa'));}var _0x56ef59='\x22'+_0x474a32[_0xed61('0x59')]+'\x22';if(this[_0xed61('0x85')](_0x474a32[_0xed61('0x77')])){_0x56ef59+=','+_0x474a32[_0xed61('0x77')];}var _0x27426e=this[_0xed61('0xd')][_0xed61('0x54')]('MRCPSynth',_0x56ef59);if(_0x27426e[_0xed61('0xa6')]===-0x1){return _0x27426e;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xac'),_0x56ef59));};AGIVertices[_0xed61('0x11')][_0xed61('0xad')]=function(_0x2e5d2c){logger['info'](util['format'](_0xed61('0xae'),_0x2e5d2c[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x2e5d2c[_0xed61('0xaf')])){return this[_0xed61('0xd')]['noop'](_0xed61('0xb0'));}var _0x1ad945=_0x2e5d2c[_0xed61('0xaf')];if(this[_0xed61('0x85')](_0x2e5d2c['options'])){_0x1ad945+=','+_0x2e5d2c['options'];}var _0x3a122f=this[_0xed61('0xd')][_0xed61('0x54')](_0xed61('0xb1'),_0x1ad945);if(_0x3a122f[_0xed61('0xa6')]===-0x1){return _0x3a122f;}var _0x37e5b6=this[_0xed61('0xa5')](_0xed61('0xb2'),_0xed61('0xb3'));if(_0x37e5b6[_0xed61('0xa6')]===-0x1){return _0x37e5b6;}var _0x5aeb54=this[_0xed61('0xa5')](_0xed61('0xb4'),_0xed61('0xb5'));if(_0x5aeb54[_0xed61('0xa6')]===-0x1){return _0x5aeb54;}var _0x36ebf9=this['getAndSetVariable'](_0xed61('0xb6'),_0xed61('0xb7'));if(_0x36ebf9[_0xed61('0xa6')]===-0x1){return _0x36ebf9;}return this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xb8'),_0x1ad945));};AGIVertices['prototype'][_0xed61('0x8')]=function(_0x19000e){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xb9'),_0x19000e[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0x8')]([_0x19000e[_0xed61('0xba')],_0x19000e[_0xed61('0xbb')]]);};AGIVertices[_0xed61('0x11')][_0xed61('0xbc')]=function(_0x5d313d){logger[_0xed61('0x26')](util['format'](_0xed61('0xbd'),_0x5d313d['label']));if(this[_0xed61('0x85')](_0x5d313d['timeout'])){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xbe'),_0x5d313d['timeout']));var _0xbfac04=this[_0xed61('0xd')][_0xed61('0xbf')](_0x5d313d[_0xed61('0x61')]);if(_0xbfac04[_0xed61('0xa6')]===-0x1){return _0xbfac04;}}return this[_0xed61('0xd')][_0xed61('0xbc')]();};AGIVertices[_0xed61('0x11')][_0xed61('0xc0')]=function(_0xb2bfdc){logger[_0xed61('0x26')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0xb2bfdc['label']));if(!this[_0xed61('0x85')](_0xb2bfdc[_0xed61('0x44')])){return this[_0xed61('0xd')]['error'](_0xb2bfdc,_0xed61('0xc1'));}_0xb2bfdc['scheduledAt']=moment();if(this[_0xed61('0x85')](_0xb2bfdc[_0xed61('0xc2')])){_0xb2bfdc[_0xed61('0x45')]=moment()[_0xed61('0xc3')](_0xb2bfdc[_0xed61('0xc2')],_0xed61('0xc4'));}if(!this[_0xed61('0x85')](_0xb2bfdc[_0xed61('0x48')])){_0xb2bfdc['callback_priority']=0x2;}this[_0xed61('0x3d')]['sync'](this,_0xb2bfdc);return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s',_0xb2bfdc[_0xed61('0x43')],_0xb2bfdc[_0xed61('0x44')],_0xb2bfdc[_0xed61('0x45')]));};AGIVertices['prototype'][_0xed61('0xc5')]=function(_0x268439){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xc6'),_0x268439[_0xed61('0x31')]));var _0xd02686=this[_0xed61('0xd')][_0xed61('0x54')](_0x268439[_0xed61('0xc7')],_0x268439[_0xed61('0x77')]);if(_0xd02686['result']===-0x1){return _0xd02686;}return this[_0xed61('0xd')][_0xed61('0xab')](util['format'](_0xed61('0xc8'),_0x268439[_0xed61('0xc7')],_0x268439[_0xed61('0x77')]));};AGIVertices[_0xed61('0x11')][_0xed61('0xc9')]=function(_0x3e356b){logger['info'](util[_0xed61('0x21')]('Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block',_0x3e356b['label']));if(!this[_0xed61('0x85')](_0x3e356b[_0xed61('0x59')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}var _0x57c4ff='\x22'+_0x3e356b[_0xed61('0x59')]+'\x22';if(this[_0xed61('0x85')](_0x3e356b[_0xed61('0x77')])){_0x57c4ff+=','+_0x3e356b[_0xed61('0x77')];}var _0x5a6366=this[_0xed61('0xd')]['exec'](_0xed61('0xca'),_0x57c4ff);if(_0x5a6366[_0xed61('0xa6')]===-0x1){return _0x5a6366;}return this['channel'][_0xed61('0xab')](util['format'](_0xed61('0xac'),_0x57c4ff));};AGIVertices[_0xed61('0x11')][_0xed61('0xcb')]=function(_0x425ef4){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xcc'),_0x425ef4[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x425ef4['text'])){return this['channel'][_0xed61('0xab')](_0xed61('0xaa'));}var _0x1fc8e='\x22'+_0x425ef4[_0xed61('0x59')]+'\x22';if(this[_0xed61('0x85')](_0x425ef4[_0xed61('0x77')])){_0x1fc8e+=','+_0x425ef4[_0xed61('0x77')];}var _0x2ffbf4=this[_0xed61('0xd')]['exec'](_0xed61('0xca'),_0x1fc8e);if(_0x2ffbf4[_0xed61('0xa6')]===-0x1){return _0x2ffbf4;}return this['channel'][_0xed61('0xab')](util[_0xed61('0x21')]('Executed\x20command\x20MRCPSynth\x20%s',_0x1fc8e));};AGIVertices[_0xed61('0x11')][_0xed61('0xcd')]=function(_0xf0f27){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block',_0xf0f27[_0xed61('0x31')]));if(!this['isConfigured'](_0xf0f27['grammar'])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xb0'));}var _0x448b10=_0xf0f27['grammar'];if(this[_0xed61('0x85')](_0xf0f27['options'])){_0x448b10+=','+_0xf0f27[_0xed61('0x77')];}var _0x589ced=this['channel']['exec'](_0xed61('0xb1'),_0x448b10);if(_0x589ced[_0xed61('0xa6')]===-0x1){return _0x589ced;}var _0x58e75a=this[_0xed61('0xa5')](_0xed61('0xb2'),_0xed61('0xce'));if(_0x58e75a[_0xed61('0xa6')]===-0x1){return _0x58e75a;}var _0x513560=this['getAndSetVariable'](_0xed61('0xb4'),_0xed61('0xcf'));if(_0x513560[_0xed61('0xa6')]===-0x1){return _0x513560;}var _0x257ee6=this[_0xed61('0xa5')](_0xed61('0xb6'),'LUMENVOX_ASR_INSTANCE');if(_0x257ee6['result']===-0x1){return _0x257ee6;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xb8'),_0x448b10));};AGIVertices['prototype'][_0xed61('0xd0')]=function(_0x16a777){logger['info'](util[_0xed61('0x21')](_0xed61('0xd1'),_0x16a777['label']));if(!this[_0xed61('0x85')](_0x16a777['grammar'])){return this['channel'][_0xed61('0xab')]('no\x20grammar\x20configured');}var _0xe6e95b=_0x16a777[_0xed61('0xaf')];if(this['isConfigured'](_0x16a777[_0xed61('0x77')])){_0xe6e95b+=','+_0x16a777['options'];}var _0x32cf9b=this[_0xed61('0xd')][_0xed61('0x54')](_0xed61('0xb1'),_0xe6e95b);if(_0x32cf9b[_0xed61('0xa6')]===-0x1){return _0x32cf9b;}var _0x39db39=this[_0xed61('0xa5')]('RECOG_CONFIDENCE()',_0xed61('0xd2'));if(_0x39db39[_0xed61('0xa6')]===-0x1){return _0x39db39;}var _0x2e47cd=this[_0xed61('0xa5')](_0xed61('0xb4'),'SESTEK_ASR_TRANSCRIPT');if(_0x2e47cd[_0xed61('0xa6')]===-0x1){return _0x2e47cd;}var _0x4807f5=this[_0xed61('0xa5')]('RECOG_INSTANCE()','SESTEK_ASR_INSTANCE');if(_0x4807f5['result']===-0x1){return _0x4807f5;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('Executed\x20command\x20MRCPRecog\x20%s',_0xe6e95b));};AGIVertices[_0xed61('0x11')][_0xed61('0xd3')]=function(_0x31eafc){logger['info'](util[_0xed61('0x21')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x31eafc['label']));if(!this['isConfigured'](_0x31eafc[_0xed61('0xd4')])){return this['channel'][_0xed61('0x25')](_0x31eafc,'no\x20database\x20selected');}var _0x509c07=this[_0xed61('0x15')][_0xed61('0x6f')](this,_0x31eafc[_0xed61('0xd4')]);if(!_0x509c07){return this['channel'][_0xed61('0x25')](_0x31eafc,_0xed61('0xd5'));}if(!this[_0xed61('0x85')](_0x31eafc['query'])){return this['channel'][_0xed61('0x25')](_0x31eafc,_0xed61('0xd6'));}var _0x1bcd9d=_0x31eafc['query'][_0xed61('0x55')](/(\r\n|\n|\r)/gm,'\x20');this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xd7'),_0x1bcd9d));var _0x26ece0=this[_0xed61('0x23')][_0xed61('0x6f')](this,_0x509c07,_0x1bcd9d);this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x31eafc,_0x1bcd9d);if(!this['isConfigured'](_0x31eafc[_0xed61('0xd8')])){return this[_0xed61('0xd')]['noop'](_0xed61('0xd9'));}var _0x1fcc4a=this[_0xed61('0xa3')][_0xed61('0x6f')](this,_0x31eafc['variable_id']);if(!_0x1fcc4a){return this[_0xed61('0xd')]['error'](_0x31eafc,_0xed61('0xda'));}var _0x10f415=this;_0x26ece0[_0xed61('0xdb')](function(_0x5ba6dd,_0x2cc713){Object[_0xed61('0xdc')](_0x5ba6dd)['forEach'](function(_0x5b670a){_0x10f415['channel'][_0xed61('0xa1')](util[_0xed61('0x21')](_0xed61('0xdd'),_0x1fcc4a,_0x2cc713,_0x5b670a),_0x5ba6dd[_0x5b670a]);});});this[_0xed61('0xd')][_0xed61('0xa1')](util[_0xed61('0x21')](_0xed61('0xde'),_0x1fcc4a),_0x26ece0[_0xed61('0x9d')]);return this[_0xed61('0xd')][_0xed61('0xab')](util['format'](_0xed61('0xdf'),_0x1fcc4a));};AGIVertices[_0xed61('0x11')][_0xed61('0xe0')]=function(_0x13464a){logger['debug'](util[_0xed61('0x21')](_0xed61('0xe1'),_0x13464a[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x13464a[_0xed61('0xe2')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x13464a,_0xed61('0xe3'));}var _0x2ec058=this[_0xed61('0x17')][_0xed61('0x6f')](this,_0x13464a[_0xed61('0xe2')]);if(!_0x2ec058){return this[_0xed61('0xd')]['error'](_0x13464a,_0xed61('0xe4'));}var _0x4eb64c=this[_0xed61('0xd')][_0xed61('0x54')](_0xed61('0xe5'),[util[_0xed61('0x21')](_0xed61('0xe6'),_0x2ec058),_0x13464a[_0xed61('0x61')],_0x13464a[_0xed61('0xe7')],_0x13464a['url']]);if(_0x4eb64c[_0xed61('0xa6')]===-0x1){return _0x4eb64c;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xe8'),_0xed61('0xe5')));};AGIVertices['prototype'][_0xed61('0xe9')]=function(_0x2a6f33){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xea'),_0x2a6f33[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x2a6f33[_0xed61('0x79')])){return this[_0xed61('0xd')]['noop'](_0xed61('0xeb'));}if(!this['isConfigured'](_0x2a6f33[_0xed61('0x59')])){return this['channel']['noop']('no\x20text\x20configured');}this[_0xed61('0xd')][_0xed61('0xec')]=!![];this[_0xed61('0x2f')](_0x2a6f33);this[_0xed61('0x3c')](_0x2a6f33[_0xed61('0x59')],'in','','');this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xed'),_0x2a6f33[_0xed61('0x59')]));var _0x23e0dd=this['googleDialogflow'][_0xed61('0x6f')](this,_0x2a6f33);if(_0x23e0dd){for(var _0x2dc4f2 in _0x23e0dd){if(_0x23e0dd[_0xed61('0x97')](_0x2dc4f2)){this[_0xed61('0xd')][_0xed61('0xa1')](util['format'](_0xed61('0xee'),_0x2dc4f2[_0xed61('0x66')]()),_0x23e0dd[_0x2dc4f2]);}}this['createSquareMessage'](_0x23e0dd[_0xed61('0xef')],_0xed61('0xf0'),'dialogflow','');return this['channel'][_0xed61('0xab')](util['format'](_0xed61('0xf1'),_0x23e0dd[_0xed61('0xef')]));}return this[_0xed61('0xd')]['error'](_0x2a6f33,_0xed61('0xf2'));};AGIVertices['prototype'][_0xed61('0xf3')]=function(_0x20f912){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xf4'),_0x20f912[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x20f912[_0xed61('0xf5')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xf6'));}if(!this[_0xed61('0x85')](_0x20f912[_0xed61('0x7c')])){return this['channel'][_0xed61('0xab')](_0xed61('0xf7'));}if(!this[_0xed61('0x85')](_0x20f912[_0xed61('0x7d')])){return this['channel'][_0xed61('0xab')](_0xed61('0xf8'));}if(!this[_0xed61('0x85')](_0x20f912[_0xed61('0x7e')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xf9'));}if(!this[_0xed61('0x85')](_0x20f912[_0xed61('0x59')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}this['channel'][_0xed61('0xec')]=!![];this[_0xed61('0x2f')](_0x20f912);this[_0xed61('0x3c')](_0x20f912[_0xed61('0x59')],'in','','');this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xfa'),_0x20f912[_0xed61('0x59')]));var _0x583ce7=this[_0xed61('0x7b')][_0xed61('0x6f')](this,_0x20f912);if(_0x583ce7){for(var _0x519518 in _0x583ce7){if(_0x583ce7[_0xed61('0x97')](_0x519518)){if(_0x519518!=='providerResponse'){this['channel'][_0xed61('0xa1')](util[_0xed61('0x21')](_0xed61('0xee'),_0x519518[_0xed61('0x66')]()),_0x583ce7[_0x519518]);}}}this[_0xed61('0x3c')](_0x583ce7[_0xed61('0xef')],_0xed61('0xf0'),'dialogflowV2',_0x583ce7[_0xed61('0xfb')]);return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xfc'),_0x583ce7[_0xed61('0xef')]));}return this['channel'][_0xed61('0x25')](_0x20f912,'DialogflowV2\x20is\x20unreachable');};AGIVertices[_0xed61('0x11')][_0xed61('0xfd')]=function(_0x3d6788){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0xfe'),_0x3d6788[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x3d6788[_0xed61('0xff')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x100'));}if(!this['isConfigured'](_0x3d6788[_0xed61('0x101')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x102'));}if(!this[_0xed61('0x85')](_0x3d6788[_0xed61('0x103')])){return this['channel'][_0xed61('0xab')](_0xed61('0x104'));}if(!this[_0xed61('0x85')](_0x3d6788[_0xed61('0x105')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}this['channel'][_0xed61('0xec')]=!![];this[_0xed61('0x2f')](_0x3d6788);this['createSquareMessage'](_0x3d6788[_0xed61('0x59')],'in','','');this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x106'),_0x3d6788[_0xed61('0x59')]));var _0x500ba8=this[_0xed61('0x7f')][_0xed61('0x6f')](this,_0x3d6788);if(_0x500ba8){for(var _0x1cc17c in _0x500ba8){if(_0x500ba8[_0xed61('0x97')](_0x1cc17c)){this['channel']['setVariable'](util['format'](_0xed61('0x107'),_0x1cc17c[_0xed61('0x66')]()),_0x500ba8[_0x1cc17c]);}}this[_0xed61('0x3c')](_0x500ba8[_0xed61('0xef')],_0xed61('0xf0'),'sesteknda','');if(_0x500ba8[_0xed61('0x108')]){this[_0xed61('0xd')]['noop'](util[_0xed61('0x21')](_0xed61('0x109'),_0x500ba8[_0xed61('0x108')]));var _0x281d98=this[_0xed61('0xd')][_0xed61('0x10a')](_0x500ba8[_0xed61('0x108')]);try{fs['unlink'](_0x500ba8[_0xed61('0x108')]+_0xed61('0x10b'));}catch(_0x14d7ee){logger[_0xed61('0x25')](_0x14d7ee);}return _0x281d98;}else{return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x10c'),_0x500ba8[_0xed61('0xef')]));}}return this[_0xed61('0xd')][_0xed61('0x25')](_0x3d6788,_0xed61('0x10d'));};AGIVertices['prototype'][_0xed61('0x10e')]=function(_0x3e40fe){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20END\x20(%s)\x20block',_0x3e40fe[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x10e'));};AGIVertices['prototype'][_0xed61('0x10f')]=function(_0x1eae9a){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x110'),_0x1eae9a[_0xed61('0x31')]));var _0xe56af0='';if(_0x1eae9a[_0xed61('0x111')]){if(!this['isConfigured'](_0x1eae9a[_0xed61('0x111')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x1eae9a,_0xed61('0x112'));}else{var _0x3d37b=parseInt(_0x1eae9a[_0xed61('0x111')],0xa);if(isNaN(_0x3d37b)){_0xe56af0=_0x1eae9a[_0xed61('0x111')];}else{_0xe56af0=this[_0xed61('0x18')][_0xed61('0x6f')](this,_0x1eae9a[_0xed61('0x111')]);if(!_0xe56af0){return this[_0xed61('0xd')][_0xed61('0x25')](_0x1eae9a,_0xed61('0x113'));}}}}else if(_0x1eae9a[_0xed61('0x114')]){_0xe56af0=_0x1eae9a[_0xed61('0x114')];}else{return this[_0xed61('0xd')][_0xed61('0x25')](_0x1eae9a,_0xed61('0x112'));}var _0x3c4653=this[_0xed61('0xd')]['exec'](_0xed61('0xe5'),[util[_0xed61('0x21')](_0xed61('0x115'),_0xe56af0,_0x1eae9a[_0xed61('0x43')]),_0x1eae9a[_0xed61('0x61')],_0x1eae9a[_0xed61('0xe7')],_0x1eae9a[_0xed61('0x5f')]]);if(_0x3c4653[_0xed61('0xa6')]===-0x1){return _0x3c4653;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xe8'),_0xed61('0xe5')));};AGIVertices['prototype'][_0xed61('0x116')]=function(_0x2cffaf){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x117'),_0x2cffaf[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x116'));};AGIVertices[_0xed61('0x11')][_0xed61('0x118')]=function(_0x5d0dbe){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20GETDIGITS\x20(%s)\x20block',_0x5d0dbe[_0xed61('0x31')]));if(_0x5d0dbe[_0xed61('0x119')]===0x0){return this['maxRetry'](_0x5d0dbe);}_0x5d0dbe[_0xed61('0x119')]-=0x1;if(!this['isConfigured'](_0x5d0dbe[_0xed61('0x11a')])){return this[_0xed61('0xd')]['error'](_0x5d0dbe,_0xed61('0x11b'));}var _0x567a1f=this['getSound'][_0xed61('0x6f')](this,_0x5d0dbe[_0xed61('0x11a')]);if(!_0x567a1f){return this[_0xed61('0xd')]['error'](_0x5d0dbe,_0xed61('0x11c'));}if(!this[_0xed61('0x85')](_0x5d0dbe[_0xed61('0xd8')])){return this[_0xed61('0xd')]['error'](_0xed61('0xd9'));}var _0x1a7f24=this['channel'][_0xed61('0x11d')](_0x567a1f,_0x5d0dbe[_0xed61('0x11e')],_0x5d0dbe[_0xed61('0x11f')]);var _0x3ed327=_0x1a7f24[_0xed61('0xa6')]?_0x1a7f24[_0xed61('0xa6')][_0xed61('0x47')]():'';logger[_0xed61('0x26')](_0xed61('0x120'),JSON[_0xed61('0x71')](_0x1a7f24));if(_0x1a7f24[_0xed61('0xa6')]===-0x1){this[_0xed61('0x2f')]['sync'](this,_0x5d0dbe,_0x3ed327);return _0x1a7f24;}else if(_0x1a7f24[_0xed61('0xa4')]===_0xed61('0x61')){_0x1a7f24[_0xed61('0xa6')]=_0x3ed327[_0xed61('0x9d')]>=parseInt(_0x5d0dbe[_0xed61('0x121')])?'x':'i';}else{_0x1a7f24[_0xed61('0xa6')]=_0x3ed327[_0xed61('0x9d')]>=parseInt(_0x5d0dbe[_0xed61('0x121')])&&_0x3ed327[_0xed61('0x9d')]<=parseInt(_0x5d0dbe[_0xed61('0x11f')])?'x':'i';}var _0x3a2643=this[_0xed61('0xa3')]['sync'](this,_0x5d0dbe['variable_id']);if(!_0x3a2643){return this['channel'][_0xed61('0x25')](_0x5d0dbe,_0xed61('0xda'));}this[_0xed61('0xd')][_0xed61('0xa1')](_0x3a2643,_0x3ed327);if(this[_0xed61('0x85')](_0x5d0dbe['hiddendigitsnum'])){var _0x4ee992=parseInt(_0x5d0dbe['hiddendigitsnum'],0xa);var _0x59827c=rs[_0xed61('0x122')]({'charset':'*','length':_0x4ee992});var _0x1a9e06=_0x3ed327[_0xed61('0x9d')];if(_0x1a9e06>0x0){if(_0x1a9e06>_0x4ee992){this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x5d0dbe,_0x5d0dbe[_0xed61('0x123')]===_0xed61('0x124')?_0x59827c+_0x3ed327[_0xed61('0x125')](_0x4ee992):_0x3ed327[_0xed61('0x125')](0x0,_0x1a9e06-_0x4ee992)+_0x59827c);}else{this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x5d0dbe,rs[_0xed61('0x122')]({'charset':'*','length':_0x1a9e06}));}}else{this['createSquareDetailsReport'][_0xed61('0x6f')](this,_0x5d0dbe,'');}}else{this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x5d0dbe,_0x3ed327);}return _0x1a7f24;};AGIVertices[_0xed61('0x11')]['getsecretdigits']=function(_0xb64f9){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x126'),_0xb64f9[_0xed61('0x31')]));return this[_0xed61('0x118')](_0xb64f9);};AGIVertices[_0xed61('0x11')][_0xed61('0x127')]=function(_0x45e9db){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x45e9db[_0xed61('0x31')]));this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x45e9db,_0x45e9db[_0xed61('0x128')]);return this[_0xed61('0xd')]['noop'](util['format'](_0xed61('0x129'),_0x45e9db[_0xed61('0x128')]));};AGIVertices[_0xed61('0x11')][_0xed61('0x12a')]=function(_0x14a0bf){logger[_0xed61('0x26')](util['format'](_0xed61('0x12b'),_0x14a0bf[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x14a0bf[_0xed61('0x88')])||!this['isConfigured'](_0x14a0bf[_0xed61('0x89')])){return this[_0xed61('0xd')][_0xed61('0xab')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x14a0bf[_0xed61('0x59')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x12c'),_0x14a0bf[_0xed61('0x59')]));var _0x334881=this['awsPolly'][_0xed61('0x6f')](this,_0x14a0bf);if(_0x334881){this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x12d'),_0x334881));var _0x19f49c=this[_0xed61('0xd')][_0xed61('0x10a')](_0x334881);try{fs['unlink'](_0x334881+_0xed61('0x10b'));}catch(_0x129078){logger[_0xed61('0x25')](_0x129078);}return _0x19f49c;}return this[_0xed61('0xd')][_0xed61('0x25')](_0x14a0bf,_0xed61('0x12e'));};AGIVertices[_0xed61('0x11')]['awslex']=function(_0x27f667){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x12f'),_0x27f667[_0xed61('0x31')]));if(!this['isConfigured'](_0x27f667['aws_access_key_id'])||!this[_0xed61('0x85')](_0x27f667[_0xed61('0x89')])){return this[_0xed61('0xd')][_0xed61('0xab')]('no\x20valid\x20credentials\x20configured');}if(!this['isConfigured'](_0x27f667[_0xed61('0x90')])){return this['channel']['noop'](_0xed61('0x130'));}if(!this['isConfigured'](_0x27f667[_0xed61('0x59')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}this['channel'][_0xed61('0xec')]=!![];this[_0xed61('0x2f')](_0x27f667);this[_0xed61('0x3c')](_0x27f667[_0xed61('0x59')],'in','','');this[_0xed61('0xd')]['noop'](util[_0xed61('0x21')]('Trying\x20Amazon\x20Lex:\x20%s',_0x27f667[_0xed61('0x59')]));var _0x43f1fa=this[_0xed61('0x8e')][_0xed61('0x6f')](this,_0x27f667);if(_0x43f1fa){for(var _0x3fc3a4 in _0x43f1fa){if(_0x43f1fa['hasOwnProperty'](_0x3fc3a4)&&_['isString'](_0x43f1fa[_0x3fc3a4])){this[_0xed61('0xd')]['setVariable'](util[_0xed61('0x21')](_0xed61('0x131'),_0x3fc3a4[_0xed61('0x66')]()),_0x43f1fa[_0x3fc3a4]);}}if(_[_0xed61('0x3f')](_0x43f1fa[_0xed61('0x75')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x132'));}else{this['createSquareMessage'](_0x43f1fa[_0xed61('0x75')],_0xed61('0xf0'),_0xed61('0x133'),'');return this['channel']['noop'](util[_0xed61('0x21')](_0xed61('0x134'),_0x43f1fa['message']));}}return this[_0xed61('0xd')][_0xed61('0x25')](_0x27f667,_0xed61('0x135'));};AGIVertices[_0xed61('0x11')]['googleasr']=function(_0x28a4a9){logger[_0xed61('0x26')](util['format'](_0xed61('0x136'),_0x28a4a9[_0xed61('0x31')],_0x28a4a9[_0xed61('0x61')]));if(!this['isConfigured'](_0x28a4a9[_0xed61('0x79')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xeb'));}var _0x3a5f61='wav';var _0x145ea1=util['format'](_0xed61('0x137'),FILES_PATH,rs[_0xed61('0x122')](0x4));var _0x159097=util['format'](_0xed61('0x9f'),_0x145ea1,_0x3a5f61);var _0x32813d=!![];if(_0x28a4a9['beep']===_0xed61('0x138')){_0x32813d=![];}var _0x343933=this['channel'][_0xed61('0x139')](_0x145ea1,_0x3a5f61,_0x28a4a9[_0xed61('0x13a')],_0x28a4a9[_0xed61('0x61')],undefined,_0x32813d);if(_0x343933[_0xed61('0xa6')]!==-0x1){this[_0xed61('0xd')]['noop'](util[_0xed61('0x21')]('google\x20%s\x20file\x20created',_0x159097));var _0x17030b=this[_0xed61('0x91')]['sync'](this,_0x28a4a9,_0x159097);if(_0x17030b){for(var _0x50d78a in _0x17030b){if(_0x17030b['hasOwnProperty'](_0x50d78a)){this[_0xed61('0xd')][_0xed61('0xa1')](util['format'](_0xed61('0x13b'),_0x50d78a[_0xed61('0x66')]()),_0x17030b[_0x50d78a]);}}return this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x13c'),JSON[_0xed61('0x71')](_0x17030b)));}}return _0x343933;};AGIVertices[_0xed61('0x11')][_0xed61('0x13d')]=function(_0x4ad668){logger[_0xed61('0x26')](util['format'](_0xed61('0x13e'),_0x4ad668['label']));if(!this[_0xed61('0x85')](_0x4ad668[_0xed61('0x93')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x13f'));}if(!this[_0xed61('0x85')](_0x4ad668[_0xed61('0x94')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x140'));}var _0x1908a6=_0xed61('0x141');var _0x335f04=util[_0xed61('0x21')](_0xed61('0x137'),FILES_PATH,rs[_0xed61('0x122')](0x4));var _0x31ce9b=util[_0xed61('0x21')]('%s.%s',_0x335f04,_0x1908a6);var _0x562127=!![];if(_0x4ad668[_0xed61('0x142')]===_0xed61('0x138')){_0x562127=![];}var _0x54fe96=this[_0xed61('0xd')]['recordFile'](_0x335f04,_0x1908a6,_0x4ad668[_0xed61('0x13a')],_0x4ad668[_0xed61('0x61')],undefined,_0x562127);if(_0x54fe96[_0xed61('0xa6')]!==-0x1){this['channel']['noop'](util[_0xed61('0x21')](_0xed61('0x143'),_0x31ce9b));var _0x11337d=this[_0xed61('0x92')][_0xed61('0x6f')](this,_0x4ad668,_0x31ce9b);if(_0x11337d){for(var _0x215ef9 in _0x11337d){if(_0x11337d[_0xed61('0x97')](_0x215ef9)){this[_0xed61('0xd')][_0xed61('0xa1')](util['format'](_0xed61('0x144'),_0x215ef9[_0xed61('0x66')]()),_0x11337d[_0x215ef9]);}}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x145'),JSON[_0xed61('0x71')](_0x11337d)));}}return _0x54fe96;};AGIVertices[_0xed61('0x11')]['gotoc']=function(_0x470f75){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x146'),_0x470f75[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0x147')](_0x470f75[_0xed61('0x148')],_0x470f75['extension'],_0x470f75[_0xed61('0x38')]);};AGIVertices[_0xed61('0x11')]['gotoif']=function(_0x4e357c){logger['info'](util['format'](_0xed61('0x149'),_0x4e357c[_0xed61('0x31')]));if(!this['isConfigured'](_0x4e357c[_0xed61('0x14a')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x4e357c,_0xed61('0x14b'));}try{var _0x4240da=eval(_0x4e357c[_0xed61('0x14a')])?_0xed61('0x14c'):'false';this[_0xed61('0xd')][_0xed61('0xab')](util['format']('EVAL\x20CONDITION\x20%s\x20%s',_0x4e357c[_0xed61('0x14a')],_0x4240da));return{'code':0xc8,'result':_0x4240da};}catch(_0x502c92){return{'code':0xc8,'result':_0xed61('0x14d')};}};AGIVertices[_0xed61('0x11')][_0xed61('0x14e')]=function(_0x6e9f9){logger[_0xed61('0x26')](util['format'](_0xed61('0x14f'),_0x6e9f9[_0xed61('0x31')]));if(!this['isConfigured'](_0x6e9f9[_0xed61('0x150')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x6e9f9,'no\x20interval\x20configured');}var _0x3d201a=this[_0xed61('0x1e')]['sync'](this,_0x6e9f9[_0xed61('0x150')]);if(!_0x3d201a){return this[_0xed61('0xd')]['error'](_0x6e9f9,_0xed61('0x151'));}for(var _0x4c11cb=0x0;_0x4c11cb<_0x3d201a[_0xed61('0x9d')];_0x4c11cb+=0x1){var _0x5a462f=this[_0xed61('0xd')][_0xed61('0xa3')](util[_0xed61('0x21')](_0xed61('0x152'),_0x3d201a[_0x4c11cb]));if(_0x5a462f[_0xed61('0xa6')]===-0x1){return _0x5a462f;}logger[_0xed61('0x26')](util['format'](_0xed61('0x153'),_0x3d201a[_0x4c11cb],_0x5a462f['extra']));if(_0x5a462f[_0xed61('0xa4')]===_0xed61('0x14c')){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x153'),_0x3d201a[_0x4c11cb],_0xed61('0x14c')));this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('IFTIME\x20%s\x20%s',_0x3d201a[_0x4c11cb],_0xed61('0x14c')));return{'code':0xc8,'result':_0xed61('0x14c')};}else{logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x153'),_0x3d201a[_0x4c11cb],'false'));this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x153'),_0x3d201a[_0x4c11cb],'false'));}}return{'code':0xc8,'result':_0xed61('0x14d')};};AGIVertices[_0xed61('0x11')][_0xed61('0x154')]=function(_0x296d2d){logger['info'](util[_0xed61('0x21')](_0xed61('0x155'),_0x296d2d[_0xed61('0x31')]));return this[_0xed61('0xd')]['hangup']();};AGIVertices[_0xed61('0x11')][_0xed61('0x156')]=function(_0x36f764){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x36f764['label']));if(!this[_0xed61('0x85')](_0x36f764['key'])){return this['channel'][_0xed61('0xab')](_0xed61('0xeb'));}var _0x30da44=_0xed61('0x141');var _0x3e1a5e=util[_0xed61('0x21')](_0xed61('0x137'),FILES_PATH,rs[_0xed61('0x122')](0x4));var _0x22a17d=util[_0xed61('0x21')](_0xed61('0x9f'),_0x3e1a5e,_0x30da44);var _0x416c73=!![];if(_0x36f764[_0xed61('0x142')]==='NOBEEP'){_0x416c73=![];}var _0x5e2c2a=this[_0xed61('0xd')][_0xed61('0x139')](_0x3e1a5e,_0x30da44,_0x36f764[_0xed61('0x13a')],_0x36f764[_0xed61('0x61')],undefined,_0x416c73);if(_0x5e2c2a[_0xed61('0xa6')]!==-0x1){this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('ispeech\x20%s\x20file\x20created',_0x22a17d));var _0x533e17=this[_0xed61('0x83')][_0xed61('0x6f')](this,_0x36f764,_0x22a17d);if(_0x533e17){for(var _0x1c50aa in _0x533e17){if(_0x533e17['hasOwnProperty'](_0x1c50aa)){this[_0xed61('0xd')][_0xed61('0xa1')](util['format'](_0xed61('0x157'),_0x1c50aa[_0xed61('0x66')]()),_0x533e17[_0x1c50aa]);}}return this[_0xed61('0xd')]['noop'](util[_0xed61('0x21')]('IspeechASR\x20Result\x20%s',JSON[_0xed61('0x71')](_0x533e17)));}}return _0x5e2c2a;};AGIVertices[_0xed61('0x11')][_0xed61('0x158')]=function(_0x5491fc){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x5491fc[_0xed61('0x31')]));if(!this['isConfigured'](_0x5491fc[_0xed61('0x79')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xeb'));}if(!this[_0xed61('0x85')](_0x5491fc['text'])){return this[_0xed61('0xd')]['noop'](_0xed61('0xaa'));}this[_0xed61('0xd')]['noop'](util[_0xed61('0x21')](_0xed61('0x159'),_0x5491fc[_0xed61('0x59')]));var _0x2bba4d=this[_0xed61('0x80')][_0xed61('0x6f')](this,_0x5491fc);if(_0x2bba4d){this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('ispeech\x20%s\x20file\x20created',_0x2bba4d));var _0x556203=this['channel'][_0xed61('0x10a')](_0x2bba4d,_0x5491fc[_0xed61('0x13a')]);try{fs[_0xed61('0x15a')](_0x2bba4d+_0xed61('0x10b'));}catch(_0x530173){logger[_0xed61('0x25')](_0x530173);}return _0x556203;}return this[_0xed61('0xd')]['error'](_0x5491fc,_0xed61('0x15b'));};AGIVertices[_0xed61('0x11')][_0xed61('0x15c')]=function(_0x479430){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x15d'),_0x479430[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x479430[_0xed61('0x15e')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x479430,'no\x20find\x20by\x20configured');}logger[_0xed61('0x26')](util['format'](_0xed61('0x15f'),this[_0xed61('0xd')]['callerid'],_0x479430[_0xed61('0x15e')]));var _0x142012=this[_0xed61('0x4f')][_0xed61('0x6f')](this,_0x479430['findBy']);if(_0x142012){logger['info'](util[_0xed61('0x21')](_0xed61('0x160'),this['channel'][_0xed61('0x34')],_0x479430[_0xed61('0x15e')]));this['channel']['noop'](util[_0xed61('0x21')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0xed61('0x34')],_0x479430[_0xed61('0x15e')]));return{'code':0xc8,'result':_0xed61('0x161')};}else{logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x162'),this[_0xed61('0xd')][_0xed61('0x34')],_0x479430['findBy']));this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x162'),this[_0xed61('0xd')][_0xed61('0x34')],_0x479430['findBy']));return{'code':0xc8,'result':_0xed61('0x163')};}};AGIVertices['prototype'][_0xed61('0x164')]=function(_0x311013){logger['info'](util[_0xed61('0x21')](_0xed61('0x165'),_0x311013[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x311013[_0xed61('0x15e')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x311013,_0xed61('0x166'));}logger[_0xed61('0x26')](util['format'](_0xed61('0x15f'),this[_0xed61('0xd')][_0xed61('0x34')],_0x311013['findBy']));var _0x20945d=this[_0xed61('0x4e')][_0xed61('0x6f')](this,_0x311013[_0xed61('0x15e')]);if(_0x20945d){logger[_0xed61('0x26')](util[_0xed61('0x21')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xed61('0xd')][_0xed61('0x34')],_0x311013[_0xed61('0x15e')]));this['channel'][_0xed61('0xab')](util[_0xed61('0x21')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xed61('0xd')][_0xed61('0x34')],_0x311013[_0xed61('0x15e')]));return{'code':0xc8,'result':_0xed61('0x161')};}else{logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x162'),this['channel']['callerid'],_0x311013['findBy']));this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x162'),this['channel'][_0xed61('0x34')],_0x311013[_0xed61('0x15e')]));return{'code':0xc8,'result':_0xed61('0x163')};}};AGIVertices[_0xed61('0x11')][_0xed61('0x167')]=function(_0x192e83){logger['info'](util[_0xed61('0x21')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x192e83[_0xed61('0x31')]));if(!this['isConfigured'](_0x192e83[_0xed61('0x168')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x192e83,_0xed61('0x169'));}this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x16a'),_0x192e83[_0xed61('0x168')]));var _0x189c06=eval(_0x192e83[_0xed61('0x168')]);if(!this[_0xed61('0x85')](_0x192e83['variable_id'])){return this['channel'][_0xed61('0xab')](_0xed61('0xd9'));}var _0x45bf0d=this[_0xed61('0xa3')][_0xed61('0x6f')](this,_0x192e83['variable_id']);if(!_0x45bf0d){return this[_0xed61('0xd')][_0xed61('0x25')](_0x192e83,_0xed61('0xda'));}if(_['isArray'](_0x189c06)){var _0x32ace6=this;_0x189c06[_0xed61('0xdb')](function(_0x49db7e,_0x55b619){_0x32ace6['channel'][_0xed61('0xa1')](util[_0xed61('0x21')]('%s[%s]',_0x45bf0d,_0x55b619),_0x49db7e);});return this[_0xed61('0xd')][_0xed61('0xab')](util['format']('variable\x20%s[key]\x20set',_0x45bf0d));}else{return this[_0xed61('0xd')][_0xed61('0xa1')](_0x45bf0d,_0x189c06);}};AGIVertices[_0xed61('0x11')][_0xed61('0x16b')]=function(_0x4994d4){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x16c'),_0x4994d4[_0xed61('0x31')]));if(_0x4994d4['retry']===0x0){return this[_0xed61('0xa7')](_0x4994d4);}_0x4994d4[_0xed61('0x119')]-=0x1;if(!this[_0xed61('0x85')](_0x4994d4['file_id'])){return this[_0xed61('0xd')]['error'](_0x4994d4,'no\x20file\x20audio\x20selected');}var _0x457cd2=this[_0xed61('0x16d')][_0xed61('0x6f')](this,_0x4994d4[_0xed61('0x11a')]);if(!_0x457cd2){return this[_0xed61('0xd')]['error'](_0x4994d4,_0xed61('0x11c'));}var _0x3d9b6e=this['channel'][_0xed61('0x11d')](_0x457cd2,_0x4994d4['response'],_0x4994d4['digit']);var _0x299e1b=_0x3d9b6e[_0xed61('0xa6')];if(_0x3d9b6e[_0xed61('0xa6')]===-0x1){this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x4994d4,'-1');return _0x3d9b6e;}else if(_0x3d9b6e[_0xed61('0xa4')]==='timeout'){_0x3d9b6e[_0xed61('0xa6')]=_0x3d9b6e[_0xed61('0xa6')]['length']>0x0?_0x3d9b6e['result']:'t';}else if(_['isEmpty'](_0x3d9b6e[_0xed61('0xa6')])){_0x3d9b6e[_0xed61('0xa6')]='#';_0x299e1b='#';}if(!this[_0xed61('0x85')](_0x4994d4['variable_id'])){this[_0xed61('0xd')][_0xed61('0xab')]('no\x20variable\x20selected\x20for\x20the\x20result');}else{var _0x3980f1=this[_0xed61('0xa3')][_0xed61('0x6f')](this,_0x4994d4['variable_id']);if(!_0x3980f1){return this[_0xed61('0xd')][_0xed61('0x25')](_0x4994d4,_0xed61('0xda'));}this[_0xed61('0xd')]['setVariable'](_0x3980f1,_0x299e1b);}this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x4994d4,_0x299e1b);return _0x3d9b6e;};AGIVertices[_0xed61('0x11')]['noop']=function(_0x51000d){logger['info'](util[_0xed61('0x21')](_0xed61('0x16e'),_0x51000d[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0xab')](_0x51000d[_0xed61('0x16f')]||_0x51000d['label']);};AGIVertices[_0xed61('0x11')][_0xed61('0x170')]=function(_0xca7076){logger['info'](util[_0xed61('0x21')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0xca7076['label']));if(!this[_0xed61('0x85')](_0xca7076[_0xed61('0x15e')])){return this['channel'][_0xed61('0x25')](_0xca7076,_0xed61('0x166'));}logger['info'](util[_0xed61('0x21')](_0xed61('0x15f'),this[_0xed61('0xd')][_0xed61('0x34')],_0xca7076[_0xed61('0x15e')]));var _0x31316d=this['getPause'][_0xed61('0x6f')](this,_0xca7076[_0xed61('0x171')]);var _0x2077e9=this[_0xed61('0x4b')][_0xed61('0x6f')](this,_0xca7076[_0xed61('0x15e')],_0x31316d);if(_0x2077e9){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x160'),this[_0xed61('0xd')][_0xed61('0x34')],_0xca7076[_0xed61('0x15e')]));this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x160'),this[_0xed61('0xd')][_0xed61('0x34')],_0xca7076[_0xed61('0x15e')]));return{'code':0xc8,'result':_0xed61('0x161')};}else{logger[_0xed61('0x26')](util['format'](_0xed61('0x162'),this[_0xed61('0xd')]['callerid'],_0xca7076[_0xed61('0x15e')]));this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('AGENT\x20%s\x20FOUND\x20BY',this[_0xed61('0xd')]['callerid'],_0xca7076[_0xed61('0x15e')]));return{'code':0xc8,'result':_0xed61('0x163')};}};AGIVertices[_0xed61('0x11')][_0xed61('0x172')]=function(_0x5ea2fe){logger[_0xed61('0x26')](util['format'](_0xed61('0x173'),_0x5ea2fe[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x5ea2fe['file_id'])){return this['channel'][_0xed61('0x25')](_0x5ea2fe,_0xed61('0x11b'));}var _0x3b941f=this['getSound'][_0xed61('0x6f')](this,_0x5ea2fe[_0xed61('0x11a')]);if(!_0x3b941f){return this[_0xed61('0xd')][_0xed61('0x25')](_0x5ea2fe,'no\x20file\x20audio\x20found');}var _0x157073=this[_0xed61('0xd')]['exec'](_0xed61('0x174'),[_0x3b941f,_0x5ea2fe[_0xed61('0xe7')]]);if(_0x157073[_0xed61('0xa6')]===-0x1){return _0x157073;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xc8'),_0xed61('0x174'),_0x3b941f));};AGIVertices[_0xed61('0x11')][_0xed61('0x175')]=function(_0xf276a3){logger[_0xed61('0x26')](util['format'](_0xed61('0x176'),_0xf276a3[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0xf276a3[_0xed61('0x177')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0xf276a3,_0xed61('0x178'));}var _0x5cdc5b='';var _0x32482f=parseInt(_0xf276a3[_0xed61('0x177')],0xa);if(isNaN(_0x32482f)){_0x5cdc5b=_0xf276a3['queue_id'];}else{_0x5cdc5b=this[_0xed61('0x179')][_0xed61('0x6f')](this,_0xf276a3[_0xed61('0x177')]);if(!_0x5cdc5b){return this[_0xed61('0xd')][_0xed61('0x25')](_0xf276a3,_0xed61('0x17a'));}}var _0x377578='';if(this['isConfigured'](_0xf276a3[_0xed61('0x11a')])){var _0x2ca90f=this[_0xed61('0x16d')][_0xed61('0x6f')](this,_0xf276a3[_0xed61('0x11a')]);if(_0x2ca90f){_0x377578=_0x2ca90f;}}this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0xf276a3,_0x5cdc5b);if(_0xf276a3[_0xed61('0xe7')][_0xed61('0x17b')]('x')<0x0){_0xf276a3[_0xed61('0xe7')]+='x';}if(_0xf276a3['opts'][_0xed61('0x17b')]('X')<0x0){_0xf276a3[_0xed61('0xe7')]+='X';}this['channel'][_0xed61('0xa1')](_0xed61('0x17c'),_0x5cdc5b?_0x5cdc5b['toLowerCase']():'');var _0x351aec=this[_0xed61('0xd')][_0xed61('0x54')](_0xed61('0x17d'),[_0x5cdc5b,_0xf276a3['opts'],_0xf276a3[_0xed61('0x5f')],_0x377578,_0xf276a3[_0xed61('0x61')],_0xf276a3[_0xed61('0x8')],_0xf276a3[_0xed61('0x17e')],_0xf276a3[_0xed61('0x17f')],'',_0xf276a3[_0xed61('0x180')]]);if(_0x351aec[_0xed61('0xa6')]===-0x1){return _0x351aec;}return this['channel']['noop'](util[_0xed61('0x21')]('Executed\x20command\x20%s\x20%s','QUEUE',_0x5cdc5b));};AGIVertices[_0xed61('0x11')][_0xed61('0x181')]=function(_0x3a2550){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x182'),_0x3a2550['label']));var _0x9df9c4=_0x3a2550[_0xed61('0x183')]||_0xed61('0x141');var _0x4dd4f5=util[_0xed61('0x21')](_0xed61('0x184'),this[_0xed61('0xd')][_0xed61('0x30')],rs[_0xed61('0x122')](0x5));var _0x2f2f29=util[_0xed61('0x21')]('%s/recordings/%s.%s',FILES_PATH,_0x4dd4f5,_0x9df9c4);var _0x5f23cc=util[_0xed61('0x21')](_0xed61('0x137'),FILES_PATH,_0x4dd4f5);this[_0xed61('0x35')][_0xed61('0x6f')](this,_0x3a2550,_0x4dd4f5,_0x2f2f29);this[_0xed61('0xd')]['setVariable'](_0xed61('0x185'),_0x4dd4f5);logger[_0xed61('0x26')]('Recording\x20%s\x20%s\x20%s\x20%s',_0x5f23cc,_0x9df9c4,_0x3a2550['escape_digits'],_0x3a2550[_0xed61('0x61')]);return this[_0xed61('0xd')][_0xed61('0x139')](_0x5f23cc,_0x9df9c4,_0x3a2550['escape_digits'],_0x3a2550['timeout'],undefined,!![]);};AGIVertices[_0xed61('0x11')]['restapi']=function(_0x2f3e46){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x2f3e46[_0xed61('0x31')]));if(!this['isConfigured'](_0x2f3e46[_0xed61('0x5f')])){return this[_0xed61('0xd')][_0xed61('0xab')]('no\x20url\x20configured');}var _0x16b9d1=this[_0xed61('0x5e')][_0xed61('0x6f')](this,_0x2f3e46);logger[_0xed61('0x26')](util[_0xed61('0x21')]('Response:',util[_0xed61('0x186')](_0x16b9d1,{'showHidden':![],'depth':null})));if(!this[_0xed61('0x85')](_0x2f3e46[_0xed61('0xd8')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x187'));}var _0x2bb925=this[_0xed61('0xa3')]['sync'](this,_0x2f3e46['variable_id']);if(!_0x2bb925){return this[_0xed61('0xd')][_0xed61('0x25')](_0x2f3e46,_0xed61('0xda'));}this['channel'][_0xed61('0xa1')](util['format'](_0xed61('0x188'),_0x2bb925),_0x16b9d1[_0xed61('0x73')]?_0x16b9d1['statusCode']:_0xed61('0x189'));this[_0xed61('0xd')][_0xed61('0xa1')](util[_0xed61('0x21')](_0xed61('0x18a'),_0x2bb925),_0x16b9d1[_0xed61('0x74')]?_0x16b9d1[_0xed61('0x74')]:'OK');if(_0x16b9d1[_0xed61('0x67')]){try{this['saveRestApiResult'](_0x16b9d1[_0xed61('0x67')],_0x2bb925);}catch(_0x474bd7){logger['error'](util['format']('Unable\x20to\x20set\x20result\x20in\x20variable\x20%s',_0x2bb925));}}return this['channel'][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xdf'),_0x2bb925));};AGIVertices['prototype'][_0xed61('0x18b')]=function(_0x1ff219){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x18c'),_0x1ff219[_0xed61('0x31')]));return this[_0xed61('0xd')][_0xed61('0x18d')](_0x1ff219['digits'][_0xed61('0x55')](/\s+/g,''),_0x1ff219[_0xed61('0x18e')]);};AGIVertices[_0xed61('0x11')][_0xed61('0x18f')]=function(_0x599579){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x599579[_0xed61('0x31')]));return this['channel'][_0xed61('0x190')](_0x599579['number'][_0xed61('0x55')](/\s+/g,''),_0x599579[_0xed61('0x18e')]);};AGIVertices[_0xed61('0x11')][_0xed61('0x191')]=function(_0x263afe){logger['info'](util[_0xed61('0x21')](_0xed61('0x192'),_0x263afe['label']));return this[_0xed61('0xd')][_0xed61('0x193')](_0x263afe[_0xed61('0x59')],_0x263afe[_0xed61('0x18e')]);};AGIVertices[_0xed61('0x11')]['sendMail']=function(_0x6ae0eb){logger['info'](util[_0xed61('0x21')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x6ae0eb[_0xed61('0x31')]));if(!this['isConfigured'](_0x6ae0eb[_0xed61('0x194')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x195'));}var _0x59333e=this[_0xed61('0x1b')][_0xed61('0x6f')](this,_0x6ae0eb['account_id']);if(!_0x59333e||!_0x59333e['Smtp']){return this[_0xed61('0xd')]['error'](_0x6ae0eb,'no\x20mail\x20account\x20found');}var _0x402692={'from':util[_0xed61('0x21')]('\x22%s\x22\x20<%s>',_0x59333e['name'],_0x59333e[_0xed61('0x196')]||_0x59333e['Smtp'][_0xed61('0x197')]),'to':_0x6ae0eb['to']||'','cc':_0x6ae0eb['cc']||'','bcc':_0x6ae0eb[_0xed61('0x198')]||'','subject':_0x6ae0eb[_0xed61('0x199')],'html':_0x6ae0eb[_0xed61('0x59')],'text':_0x6ae0eb['text']};if(this['isConfigured'](_0x6ae0eb[_0xed61('0x19a')])){}logger[_0xed61('0x19b')](_0xed61('0x19c'),JSON['stringify'](_0x402692));this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x6ae0eb,_0x6ae0eb['account_id']);this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('Trying\x20SendMail\x20with\x20account\x20%s',_0x59333e['name']));this[_0xed61('0x1d')][_0xed61('0x6f')](this,_0x59333e['smtpOptions'],_0x402692);return this[_0xed61('0xd')][_0xed61('0xab')]('Mail\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices[_0xed61('0x11')][_0xed61('0x19d')]=function(_0x2b0cdf){logger['info'](util[_0xed61('0x21')](_0xed61('0x19e'),_0x2b0cdf['label']));return this['channel']['noop'](_0xed61('0x19f'));};AGIVertices['prototype'][_0xed61('0x1a0')]=function(_0x457859){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x1a1'),_0x457859['label']));if(!this[_0xed61('0x85')](_0x457859[_0xed61('0x1a2')])){return this['channel'][_0xed61('0xab')](_0xed61('0x1a3'));}var _0x584ccc=this[_0xed61('0x2c')][_0xed61('0x6f')](this,_0x457859[_0xed61('0x1a2')]);if(!_0x584ccc){return this[_0xed61('0xd')]['error'](_0x457859,_0xed61('0x1a4'));}var _0x1fcbce={'body':_0x457859[_0xed61('0x1a5')],'phone':_0x457859['to']||'','SmsAccountId':_0x584ccc['id']};logger[_0xed61('0x19b')](_0xed61('0x1a6'),JSON[_0xed61('0x71')](_0x1fcbce));this['createSquareDetailsReport']['sync'](this,_0x457859,_0x457859[_0xed61('0x1a2')]);this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x1a7'),_0x584ccc[_0xed61('0xf')]));this[_0xed61('0x2e')][_0xed61('0x6f')](this,_0x1fcbce);return this[_0xed61('0xd')]['noop']('Sms\x20message\x20added\x20to\x20outgoing\x20process');};AGIVertices['prototype'][_0xed61('0x1a8')]=function(_0x5d8e24){logger[_0xed61('0x26')](util['format'](_0xed61('0x1a9'),_0x5d8e24[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x5d8e24[_0xed61('0xd8')])){return this['channel']['error'](_0x5d8e24,_0xed61('0x1aa'));}var _0xf128bb=this[_0xed61('0xa3')][_0xed61('0x6f')](this,_0x5d8e24[_0xed61('0xd8')]);if(!_0xf128bb){return this[_0xed61('0xd')][_0xed61('0x25')](_0x5d8e24,_0xed61('0xda'));}return this[_0xed61('0xd')]['setVariable'](_0xf128bb,_0x5d8e24[_0xed61('0x1ab')]);};AGIVertices['prototype'][_0xed61('0x1ac')]=function(_0x7526d1){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x1ad'),_0x7526d1[_0xed61('0x31')]));this['channel'][_0xed61('0xab')](_0xed61('0x1ae'));if(_0x7526d1[_0xed61('0xbc')]===_0xed61('0x1af')){this['channel'][_0xed61('0xab')](_0xed61('0x1b0'));return this[_0xed61('0xd')][_0xed61('0xbc')]();}return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0x1b1'));};AGIVertices['prototype'][_0xed61('0x1b2')]=function(_0x49a11d){logger['info'](util['format'](_0xed61('0x1b3'),_0x49a11d[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x49a11d[_0xed61('0x1b4')])){return this[_0xed61('0xd')]['error'](_0x49a11d,'no\x20subproject\x20selected');}var _0x4598cd=this[_0xed61('0x13')][_0xed61('0x6f')](this,_0x49a11d[_0xed61('0x1b4')]);if(!this['isConfigured'](_0x4598cd)){return this['channel']['error'](_0x49a11d,util['format']('no\x20subproject\x20found\x20with\x20id\x20%d',_0x49a11d[_0xed61('0x1b4')]));}if(_0x4598cd===this['channel']['arg_1']){return this[_0xed61('0xd')]['error'](_0x49a11d,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0xed61('0x2f')][_0xed61('0x6f')](this,_0x49a11d,_0x4598cd);var _0x1a2178=this[_0xed61('0xd')]['exec'](_0xed61('0x1b5'),util[_0xed61('0x21')](_0xed61('0x1b6'),config[_0xed61('0x8')][_0xed61('0x1b7')]||_0xed61('0x1b8'),_0x4598cd,this[_0xed61('0xd')][_0xed61('0x33')]));if(_0x1a2178[_0xed61('0xa6')]===-0x1){return _0x1a2178;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('Executed\x20command\x20%s\x20%s','AGI',_0x4598cd));};AGIVertices[_0xed61('0x11')][_0xed61('0x1b9')]=function(_0x946a1c){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20SYSTEM\x20(%s)\x20block',_0x946a1c[_0xed61('0x31')]));var _0x1068c6=this[_0xed61('0x53')][_0xed61('0x6f')](this,_0x946a1c[_0xed61('0xba')]);this[_0xed61('0x2f')]['sync'](this,_0x946a1c,_0x946a1c[_0xed61('0xba')]);if(this[_0xed61('0x85')](_0x946a1c[_0xed61('0xd8')])){var _0x4e005a=this[_0xed61('0xa3')][_0xed61('0x6f')](this,_0x946a1c['variable_id']);if(_0x4e005a){this[_0xed61('0xd')][_0xed61('0xa1')](_0x4e005a,_0x1068c6);return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x1ba'),_0x946a1c[_0xed61('0xba')],_0x4e005a));}}return this['channel']['noop'](util[_0xed61('0x21')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x946a1c[_0xed61('0xba')]));};AGIVertices[_0xed61('0x11')][_0xed61('0x1bb')]=function(_0x559db5){logger[_0xed61('0x26')](util['format'](_0xed61('0x1bc'),_0x559db5['label']));_0x559db5[_0xed61('0x59')]=_0x559db5[_0xed61('0x59')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xed61('0x85')](_0x559db5['apiKey'])){return this[_0xed61('0xd')][_0xed61('0xab')]('no\x20apiKey\x20configured');}if(!this[_0xed61('0x85')](_0x559db5['text'])){return this[_0xed61('0xd')]['noop']('no\x20text\x20configured');}this['channel'][_0xed61('0xab')](util[_0xed61('0x21')]('Trying\x20Google\x20Cloud\x20TTS\x20%s',_0x559db5[_0xed61('0x59')]));var _0x3b6e0d=this[_0xed61('0x56')]['sync'](this,_0x559db5);if(_0x3b6e0d){this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x1bd'),_0x3b6e0d));var _0x2ad8fe=this[_0xed61('0xd')][_0xed61('0x10a')](_0x3b6e0d);try{fs[_0xed61('0x15a')](_0x3b6e0d+_0xed61('0x10b'));}catch(_0x12dd82){logger[_0xed61('0x25')](_0x12dd82);}return _0x2ad8fe;}return this[_0xed61('0xd')][_0xed61('0x25')](_0x559db5,_0xed61('0x1be'));};AGIVertices[_0xed61('0x11')][_0xed61('0x1bf')]=function(_0x462268){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x1c0'),_0x462268[_0xed61('0x31')]));_0x462268[_0xed61('0x59')]=_0x462268[_0xed61('0x59')][_0xed61('0x55')](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0xed61('0x85')](_0x462268[_0xed61('0x59')])){return this[_0xed61('0xd')][_0xed61('0xab')](_0xed61('0xaa'));}this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x1c1'),_0x462268[_0xed61('0x59')]));var _0x215a46=this[_0xed61('0x5d')][_0xed61('0x6f')](this,_0x462268);if(_0x215a46){this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0x1c2'),_0x215a46));var _0x1a8063=this[_0xed61('0xd')][_0xed61('0x10a')](_0x215a46);try{fs[_0xed61('0x15a')](_0x215a46+_0xed61('0x10b'));}catch(_0x8785d3){logger[_0xed61('0x25')](_0x8785d3);}return _0x1a8063;}return this[_0xed61('0xd')]['error'](_0x462268,_0xed61('0x1c3'));};AGIVertices['prototype']['unpause']=function(_0x6535cb){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x1c4'),_0x6535cb[_0xed61('0x31')]));if(!this[_0xed61('0x85')](_0x6535cb[_0xed61('0x15e')])){return this[_0xed61('0xd')][_0xed61('0x25')](_0x6535cb,_0xed61('0x166'));}logger[_0xed61('0x26')](util[_0xed61('0x21')]('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0xed61('0xd')][_0xed61('0x34')],_0x6535cb[_0xed61('0x15e')]));var _0x4bf161=this[_0xed61('0x4d')][_0xed61('0x6f')](this,_0x6535cb[_0xed61('0x15e')]);if(_0x4bf161){logger[_0xed61('0x26')](util['format'](_0xed61('0x160'),this[_0xed61('0xd')][_0xed61('0x34')],_0x6535cb[_0xed61('0x15e')]));this[_0xed61('0xd')][_0xed61('0xab')](util['format'](_0xed61('0x160'),this[_0xed61('0xd')]['callerid'],_0x6535cb['findBy']));return{'code':0xc8,'result':_0xed61('0x161')};}else{logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x162'),this[_0xed61('0xd')][_0xed61('0x34')],_0x6535cb[_0xed61('0x15e')]));this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0xed61('0xd')][_0xed61('0x34')],_0x6535cb['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0xed61('0x11')][_0xed61('0x1c5')]=function(_0x4bdf68){logger[_0xed61('0x26')](util[_0xed61('0x21')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x4bdf68[_0xed61('0x31')]));var _0x49184b=this[_0xed61('0xd')][_0xed61('0x54')]('VOICEMAIL',[_0x4bdf68[_0xed61('0x1c6')],_0x4bdf68['options']]);if(_0x49184b['result']===-0x1){return _0x49184b;}return this[_0xed61('0xd')][_0xed61('0xab')](util[_0xed61('0x21')](_0xed61('0xc8'),_0xed61('0x1c7'),_0x4bdf68[_0xed61('0x1c6')]));};AGIVertices[_0xed61('0x11')][_0xed61('0x1c8')]=function(_0x1892f7){logger[_0xed61('0x26')](util[_0xed61('0x21')](_0xed61('0x1c9'),_0x1892f7['label']));if(!this[_0xed61('0x85')](_0x1892f7[_0xed61('0xd8')])){return this['channel'][_0xed61('0x25')](_0x1892f7,'no\x20variable\x20selected');}var _0x2d46d8=this[_0xed61('0xa3')]['sync'](this,_0x1892f7[_0xed61('0xd8')]);if(!_0x2d46d8){return this['channel']['error'](_0x1892f7,'no\x20variable\x20found');}var _0xc44948=this[_0xed61('0xd')][_0xed61('0xa3')](_0x2d46d8);return{'code':0xc8,'result':_0xc44948['extra']?_0xc44948[_0xed61('0xa4')]:'-'};};String[_0xed61('0x11')][_0xed61('0xa2')]=function(_0x5d9917,_0x2191ce){return this[_0xed61('0x1ca')](_0x5d9917)[_0xed61('0x1cb')](_0x2191ce);};module['exports']=AGIVertices;
\ No newline at end of file
+var _0x0565=['replace','query:\x20%s','getQueryOdbc','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','forEach','keys','%s[%s][%s]','variable\x20%s\x20set','dial','debug','sip_id','no\x20user\x20selected','getUser','no\x20user\x20found','DIAL','SIP/%s','opts','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','Trying\x20DialogflowV2:\x20%s','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','username','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','bot','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20selected','no\x20trunk\x20found','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20found','getData','response','test','mindigit','maxdigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','goalname','awspolly','no\x20valid\x20credentials\x20configured','aws\x20Polly\x20%s\x20file\x20created','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','no\x20key\x20configured','%s/recordings/%s','beep','NOBEEP','recordFile','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','tildeasr','Enter\x20in\x20TILDEASR\x20(%s)\x20block','appid','no\x20appid\x20configured','no\x20appsecret\x20configured','wav','intKey','TILDE_ASR_%s','TildeASR\x20Result\x20%s','gotoc','Enter\x20in\x20GOTO\x20(%s)\x20block','extension','gotoif','condition','true','false','gotoiftime','Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block','no\x20interval\x20configured','no\x20intervals\x20found','IFTIME(%s?true:false)','IFTIME\x20%s\x20%s','hangup','Enter\x20in\x20HANGUP\x20(%s)\x20block','ispeechasr','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','math','Enter\x20in\x20MATH\x20(%s)\x20block','operation','math\x20%s','%s[%s]','variable\x20%s[key]\x20set','menu','Enter\x20in\x20MENU\x20(%s)\x20block','no\x20file\x20audio\x20selected','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','pause_id','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','PLAYBACK','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','no\x20queue\x20selected','toLowerCase','macro','gosub','position','Executed\x20command\x20%s\x20%s','QUEUE','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','RECORDING_SAVENAME','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','Enter\x20in\x20RESTAPI\x20(%s)\x20block','Response:','inspect','200','statusMessage','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','account_id','getMailAccount','Smtp','no\x20mail\x20account\x20found','email','subject','sendMail\x20message','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','sendFax','Enter\x20in\x20SENDFAX\x20(%s)\x20block','SENDFAX\x20block\x20not\x20implemented','sendSMS','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20found','sms_text','sendSMS\x20message','Sms\x20message\x20added\x20to\x20outgoing\x20process','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','AGI','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','sh\x20command:\x20%s\x20result\x20no\x20stored','google_cloud_tts','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','no\x20apiKey\x20configured','Trying\x20Google\x20Cloud\x20TTS\x20%s','Google\x20Cloud\x20TTS\x20%s\x20file\x20created','tts','Enter\x20in\x20GOOGLETTS\x20(%s)\x20block','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','voicemail','VOICEMAIL','mailbox','vswitch','join','exports','util','lodash','shelljs','odbc','randomstring','moment','mustache','request-promise','../../config/logger','agi','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','getdigits','getsecretdigits','channel','rpc','mailRpc','getVariable','then','getVoiceQueue','getVoiceQueueById','name','catch','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','prototype','getTrunk','getTrunkById','getSound','getSoundById','getSoundPath','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','map','Intervals','format','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','ODBC\x20connection\x20successfully','info','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','agicommand','arg_1','createSquareRecording','callerid','calleridname','context','priority','dnid','file','createSquareMessage','createCmContact','isEmpty','isNil','callback_','lastName','phone','list_id','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','callback_priority','getPause','getPauseById','agentPause','agentUnpause','agent','agentLogout','internal','%s/%s@from-sip/n','LOCAL','agentLogin','shellCommand','exec','trim','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','audioEncoding','googleTTS','google_tts_language','restAPI','url','method','timeout','number','includes','PUT','toUpperCase','body','rawBody','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','render','stringify','An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','aws_secret_access_key','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','tildeASR','appsecret','clear','clone','hasOwnProperty','replaceAllVariables','isPlainObject','recursiveNodeIndex','length','isString','saveRestApiResult','isArray','%s.%s','setVariable','replaceObjectAllVariables','split','replaceAll','extra','getAndSetVariable','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','noop','no\x20text\x20configured','MRCPSynth','result','Executed\x20command\x20MRCPSynth\x20%s','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','command','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','wait','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','Executed\x20command\x20MRCPRecog\x20%s','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','Enter\x20in\x20DATABASE\x20(%s)\x20block','no\x20database\x20selected','getSquareOdbc','odbc_id','no\x20odbc\x20database\x20found','no\x20query\x20configured','query'];(function(_0xea35d1,_0x302471){var _0x1d7a7c=function(_0x1bc101){while(--_0x1bc101){_0xea35d1['push'](_0xea35d1['shift']());}};_0x1d7a7c(++_0x302471);}(_0x0565,0xf2));var _0x5056=function(_0x1beef3,_0x57c4b8){_0x1beef3=_0x1beef3-0x0;var _0x5af964=_0x0565[_0x1beef3];return _0x5af964;};'use strict';var fs=require('fs');var util=require(_0x5056('0x0'));var _=require(_0x5056('0x1'));var sh=require(_0x5056('0x2'));var odbc=require(_0x5056('0x3'))();var rs=require(_0x5056('0x4'));var moment=require(_0x5056('0x5'));var Mustache=require(_0x5056('0x6'));var rp=require(_0x5056('0x7'));var logger=require(_0x5056('0x8'))(_0x5056('0x9'));var config=require('../../config/environment');var shared=require(_0x5056('0xa'));var scripts=require(_0x5056('0xb'));var FILES_PATH=_0x5056('0xc');var recursiveMapAttributes=[_0x5056('0xd'),'rawBody'];var verticesWithRetry=['menu',_0x5056('0xe'),_0x5056('0xf')];var AGIVertices=function(_0x417065,_0x2e6f18,_0x2144a9){this[_0x5056('0x10')]=_0x417065;this[_0x5056('0x11')]=_0x2e6f18;this[_0x5056('0x12')]=_0x2144a9;};AGIVertices['prototype'][_0x5056('0x13')]=function(_0xf04ea3,_0x3ba611){this['rpc']['getVariableById'](_0xf04ea3)[_0x5056('0x14')](function(_0x504a47){_0x3ba611(null,_0x504a47?_0x504a47['name']:![]);})['catch'](function(_0x2d44fb){_0x3ba611(_0x2d44fb);});};AGIVertices['prototype'][_0x5056('0x15')]=function(_0x26edc1,_0x7af76b){this['rpc'][_0x5056('0x16')](_0x26edc1)[_0x5056('0x14')](function(_0x15f52d){_0x7af76b(null,_0x15f52d?_0x15f52d[_0x5056('0x17')]:![]);})[_0x5056('0x18')](function(_0x6a044a){_0x7af76b(_0x6a044a);});};AGIVertices['prototype'][_0x5056('0x19')]=function(_0x560d1e,_0x43db77){this[_0x5056('0x11')][_0x5056('0x1a')](_0x560d1e)[_0x5056('0x14')](function(_0x4056ce){_0x43db77(null,_0x4056ce?_0x4056ce['name']:![]);})[_0x5056('0x18')](function(_0x56537e){_0x43db77(_0x56537e);});};AGIVertices['prototype']['getSquareOdbc']=function(_0x20776c,_0x517bf3){this[_0x5056('0x11')][_0x5056('0x1b')](_0x20776c)[_0x5056('0x14')](function(_0xf04e08){_0x517bf3(null,_0xf04e08?_0xf04e08[_0x5056('0x1c')]:![]);})['catch'](function(_0x13b363){_0x517bf3(_0x13b363);});};AGIVertices[_0x5056('0x1d')]['getUser']=function(_0x271efc,_0x1bccef){this[_0x5056('0x11')]['getUserById'](_0x271efc)[_0x5056('0x14')](function(_0x26a3c2){_0x1bccef(null,_0x26a3c2?_0x26a3c2['name']:![]);})['catch'](function(_0x29e166){_0x1bccef(_0x29e166);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x1e')]=function(_0x37f7b5,_0x537b07){this[_0x5056('0x11')][_0x5056('0x1f')](_0x37f7b5)['then'](function(_0x2c4290){_0x537b07(null,_0x2c4290?_0x2c4290['name']:![]);})[_0x5056('0x18')](function(_0x39d539){_0x537b07(_0x39d539);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x20')]=function(_0x45f600,_0x50f2a8){var _0x18b7cf=this;this[_0x5056('0x11')][_0x5056('0x21')](_0x45f600)[_0x5056('0x14')](function(_0x53e6db){_0x50f2a8(null,_0x53e6db?_0x18b7cf[_0x5056('0x22')](_0x53e6db['save_name']):![]);})[_0x5056('0x18')](function(_0x49fe67){_0x50f2a8(_0x49fe67);});};AGIVertices['prototype']['getMailAccount']=function(_0x113be0,_0x252f75){this['rpc'][_0x5056('0x23')](_0x113be0)[_0x5056('0x14')](function(_0x9e2986){_0x252f75(null,_0x9e2986?_0x9e2986:![]);})[_0x5056('0x18')](function(_0xec2a33){_0x252f75(_0xec2a33);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x24')]=function(_0x3f292e,_0xd1aa24,_0x2f66d3){this[_0x5056('0x12')]['sendMailMessage'](_0x3f292e,_0xd1aa24)['then'](function(){_0x2f66d3(null);})[_0x5056('0x18')](function(_0x2d57d4){_0x2f66d3(_0x2d57d4);});};AGIVertices['prototype'][_0x5056('0x25')]=function(_0x1f94e5,_0x54cf9c){this[_0x5056('0x11')][_0x5056('0x26')](_0x1f94e5)[_0x5056('0x14')](function(_0xa31596){if(_0xa31596){if(_0xa31596[_0x5056('0x27')]){_0x54cf9c(null,[_0xa31596[_0x5056('0x28')]]);}else{_0x54cf9c(null,_[_0x5056('0x29')](_0xa31596[_0x5056('0x2a')],_0x5056('0x28')));}}else{_0x54cf9c(null,![]);}})[_0x5056('0x18')](function(_0x199129){_0x54cf9c(_0x199129);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x22')]=function(_0x3d7d78){return util[_0x5056('0x2b')]('%s/sounds/converted/%s',FILES_PATH,_0x3d7d78);};AGIVertices[_0x5056('0x1d')]['getQueryOdbc']=function(_0xc49a60,_0x46ffe1,_0x432ff7){odbc[_0x5056('0x2c')](_0xc49a60,function(_0x5b6441){if(_0x5b6441){logger[_0x5056('0x2d')](_0x5056('0x2e'),_0x5b6441);_0x432ff7(_0x5b6441);}else{logger['info'](_0x5056('0x2f'));odbc['query'](_0x46ffe1,function(_0x3006ca,_0x349318){if(_0x3006ca){logger[_0x5056('0x30')]('Error\x20executing\x20query\x20%s',_0x46ffe1);_0x432ff7(_0x3006ca);}else{logger[_0x5056('0x30')](_0x5056('0x31'),_0x46ffe1);odbc[_0x5056('0x32')](function(_0x4424f2){if(_0x4424f2){logger[_0x5056('0x2d')](_0x5056('0x33'),_0x4424f2);}_0x432ff7(null,_0x349318);});}});}});};AGIVertices[_0x5056('0x1d')][_0x5056('0x34')]=function(_0x15553e,_0x430db0){this[_0x5056('0x11')][_0x5056('0x35')](_0x15553e)[_0x5056('0x14')](function(_0x1e28f4){_0x430db0(null,_0x1e28f4?_0x1e28f4:![]);})[_0x5056('0x18')](function(_0x351ebd){_0x430db0(_0x351ebd);});};AGIVertices['prototype']['createSmsMessage']=function(_0x25f3fc,_0xc89e71){this[_0x5056('0x11')][_0x5056('0x36')](_0x25f3fc)[_0x5056('0x14')](function(_0x1e2693){_0xc89e71(null,_0x1e2693);})[_0x5056('0x18')](function(_0x2bf472){_0xc89e71(_0x2bf472);});};AGIVertices['prototype']['createSquareDetailsReport']=function(_0x68a385,_0x1b3a5e,_0x21aa8a){this['rpc'][_0x5056('0x37')]({'uniqueid':this['channel'][_0x5056('0x38')],'node':_0x68a385[_0x5056('0x39')],'application':_0x68a385[_0x5056('0x3a')],'data':_0x1b3a5e||null,'project_name':this[_0x5056('0x10')][_0x5056('0x3b')],'callerid':this[_0x5056('0x10')]['callerid']})[_0x5056('0x14')](function(_0x2ab162){if(_0x21aa8a){_0x21aa8a(null,_0x2ab162);}})[_0x5056('0x18')](function(_0x5e1677){if(_0x21aa8a){_0x21aa8a(_0x5e1677);}});};AGIVertices['prototype']['createSquareRecording']=function(_0x4e1641,_0x4553eb,_0x5a9181,_0x220816){this[_0x5056('0x11')][_0x5056('0x3c')]({'uniqueid':this['channel']['uniqueid'],'callerid':this[_0x5056('0x10')][_0x5056('0x3d')],'calleridname':this[_0x5056('0x10')][_0x5056('0x3e')],'context':this[_0x5056('0x10')][_0x5056('0x3f')],'extension':this[_0x5056('0x10')]['extension'],'priority':this['channel'][_0x5056('0x40')],'accountcode':this[_0x5056('0x10')]['accountcode'],'dnid':this[_0x5056('0x10')][_0x5056('0x41')],'projectName':this['channel']['arg_1'],'saveName':_0x4553eb,'filename':_0x4e1641[_0x5056('0x42')]||_0x4553eb,'savePath':_0x5a9181})[_0x5056('0x14')](function(_0x50aa03){_0x220816(null,_0x50aa03);})['catch'](function(_0x460c5c){_0x220816(_0x460c5c);});};AGIVertices[_0x5056('0x1d')]['createSquareMessage']=function(_0x5c3f73,_0x181be7,_0x931656,_0x96eaf1,_0x189a76){this[_0x5056('0x11')][_0x5056('0x43')]({'uniqueid':this[_0x5056('0x10')][_0x5056('0x38')],'body':_0x5c3f73,'direction':_0x181be7,'providerName':_0x931656,'providerResponse':_0x96eaf1})[_0x5056('0x14')](function(_0x162217){if(_0x189a76){_0x189a76(null,_0x162217);}})[_0x5056('0x18')](function(_0x2a7e05){if(_0x189a76){_0x189a76(_0x2a7e05);}});};AGIVertices[_0x5056('0x1d')][_0x5056('0x44')]=function(_0x34e86e,_0x4bf758){this['rpc'][_0x5056('0x44')]({'firstName':_[_0x5056('0x45')](_0x34e86e[_0x5056('0x17')])||_[_0x5056('0x46')](_0x34e86e[_0x5056('0x17')])?_0x5056('0x47')+Math['random']():_0x34e86e[_0x5056('0x17')],'lastName':_[_0x5056('0x45')](_0x34e86e[_0x5056('0x48')])||_[_0x5056('0x46')](_0x34e86e[_0x5056('0x48')])?null:_0x34e86e[_0x5056('0x48')],'phone':_0x34e86e[_0x5056('0x49')],'ListId':_0x34e86e[_0x5056('0x4a')],'scheduledat':_0x34e86e[_0x5056('0x4b')],'callbackUniqueid':this[_0x5056('0x10')][_0x5056('0x38')],'tags':_0x5056('0x4c'),'description':_0x5056('0x4d')+_0x34e86e['scheduledAt'][_0x5056('0x4e')](),'priority':_0x34e86e[_0x5056('0x4f')]})[_0x5056('0x14')](function(_0x5363fd){_0x4bf758(null,_0x5363fd);})[_0x5056('0x18')](function(_0x93c032){_0x4bf758(_0x93c032);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x50')]=function(_0x582e02,_0x51a2e8){this['rpc'][_0x5056('0x51')](_0x582e02)['then'](function(_0x1934e1){_0x51a2e8(null,_0x1934e1?_0x1934e1[_0x5056('0x17')]:![]);})[_0x5056('0x18')](function(_0x352cd8){_0x51a2e8(_0x352cd8);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x52')]=function(_0x5330b4,_0x48568b,_0x25da13){var _0x333d22={'role':'agent'};_0x333d22[_0x5330b4]=this[_0x5056('0x10')][_0x5056('0x3d')];this[_0x5056('0x11')][_0x5056('0x52')](_0x333d22,_0x48568b,this[_0x5056('0x10')]['uniqueid'])[_0x5056('0x14')](function(_0x318f96){_0x25da13(null,_['isNil'](_0x318f96)?![]:!![]);})[_0x5056('0x18')](function(_0x43efb7){logger[_0x5056('0x2d')](_0x43efb7);_0x25da13(null,![]);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x53')]=function(_0x1df38b,_0x27ec10){var _0xc5038b={'role':_0x5056('0x54')};_0xc5038b[_0x1df38b]=this[_0x5056('0x10')][_0x5056('0x3d')];this[_0x5056('0x11')][_0x5056('0x53')](_0xc5038b)['then'](function(_0x118733){_0x27ec10(null,_[_0x5056('0x46')](_0x118733)?![]:!![]);})[_0x5056('0x18')](function(_0x47203d){logger[_0x5056('0x2d')](_0x47203d);_0x27ec10(null,![]);});};AGIVertices[_0x5056('0x1d')]['agentLogout']=function(_0x1159fd,_0x4e343e){var _0x1c3684={'role':_0x5056('0x54')};_0x1c3684[_0x1159fd]=this['channel']['callerid'];this[_0x5056('0x11')][_0x5056('0x55')](_0x1c3684)[_0x5056('0x14')](function(_0x38fbcf){_0x4e343e(null,_['isNil'](_0x38fbcf)?![]:!![]);})['catch'](function(_0x25fe6f){logger[_0x5056('0x2d')](_0x25fe6f);_0x4e343e(null,![]);});};AGIVertices[_0x5056('0x1d')]['agentLogin']=function(_0x3b24d1,_0x5b022f){var _0x57cb62={'role':_0x5056('0x54')};_0x57cb62[_0x3b24d1]=this[_0x5056('0x10')]['callerid'];var _0x2d0bbf=_0x3b24d1!=_0x5056('0x56')?util[_0x5056('0x2b')](_0x5056('0x57'),_0x5056('0x58'),this[_0x5056('0x10')][_0x5056('0x3d')]):undefined;this['rpc'][_0x5056('0x59')](_0x57cb62,_0x2d0bbf)[_0x5056('0x14')](function(_0x2679a8){_0x5b022f(null,_['isNil'](_0x2679a8)?![]:!![]);})[_0x5056('0x18')](function(_0x4ea1c5){logger[_0x5056('0x2d')](_0x4ea1c5);_0x5b022f(null,![]);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x5a')]=function(_0x45eac9,_0x5639a1){sh[_0x5056('0x5b')](_[_0x5056('0x5c')](_0x45eac9),function(_0x50b7f2,_0x244186){var _0x5afdf5=_0x244186['replace'](/(\r\n|\n|\r)/gm,'');_0x5639a1(null,_0x5afdf5);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x5d')]=function(_0x1ca623,_0x32bce8){scripts[_0x5056('0x5d')](_0x1ca623[_0x5056('0x5e')],_0x1ca623[_0x5056('0x5f')]||_0x5056('0x60'),_0x1ca623[_0x5056('0x60')],_0x1ca623[_0x5056('0x61')]||_0x5056('0x62'),_0x1ca623[_0x5056('0x63')]||'MALE',_0x1ca623[_0x5056('0x64')]||'MP3')[_0x5056('0x14')](function(_0x24069a){_0x32bce8(null,_0x24069a);})['catch'](function(_0x35a892){_0x32bce8(_0x35a892);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x65')]=function(_0x113f44,_0x3a83aa){scripts[_0x5056('0x65')](_0x113f44[_0x5056('0x60')],_0x113f44[_0x5056('0x66')]||'en',0x1)['then'](function(_0x226105){_0x3a83aa(null,_0x226105);})[_0x5056('0x18')](function(_0x32d5f1){_0x3a83aa(_0x32d5f1);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x67')]=function(_0x4e6045,_0x3bf1ae){var _0x4db5a6={'uri':_0x4e6045[_0x5056('0x68')],'method':_0x4e6045[_0x5056('0x69')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x4e6045[_0x5056('0x6a')])===_0x5056('0x6b')&&parseInt(_0x4e6045[_0x5056('0x6a')])>=0x1?parseInt(_0x4e6045[_0x5056('0x6a')])*0x3e8:0x5*0x3e8};if(_[_0x5056('0x6c')](['POST',_0x5056('0x6d')],_0x4db5a6[_0x5056('0x69')][_0x5056('0x6e')]())){try{_0x4db5a6[_0x5056('0x6f')]=_0x4e6045[_0x5056('0x70')]?JSON[_0x5056('0x71')](_0x4e6045[_0x5056('0x70')]):{};}catch(_0x5c72aa){logger['error']('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5c72aa);}}try{_0x4db5a6[_0x5056('0x72')]=_0x4e6045['rawHeaders']?JSON[_0x5056('0x71')](_0x4e6045[_0x5056('0xd')]):{};}catch(_0x41d04f){logger['error'](_0x5056('0x73'),_0x41d04f);}if(_0x4e6045['computedVariables']){try{var _0x895e06=require(_0x4e6045[_0x5056('0x74')])[_0x5056('0x75')](this,_0x4db5a6);_0x4db5a6['uri']=Mustache[_0x5056('0x76')](_0x4e6045['url'],_0x895e06,{},['$$','$$']);if(_0x4db5a6['headers']){_0x4db5a6[_0x5056('0x72')]=JSON[_0x5056('0x71')](Mustache['render'](JSON[_0x5056('0x77')](_0x4db5a6['headers']),_0x895e06,{},['$$','$$']));}if(_0x4db5a6[_0x5056('0x6f')]){_0x4db5a6[_0x5056('0x6f')]=JSON[_0x5056('0x71')](Mustache[_0x5056('0x76')](JSON[_0x5056('0x77')](_0x4db5a6[_0x5056('0x6f')]),_0x895e06,{},['$$','$$']));}}catch(_0x5748c4){logger[_0x5056('0x2d')](_0x5056('0x78'),_0x5748c4);}}rp(_0x4db5a6)[_0x5056('0x14')](function(_0x18bcf1){var _0x406865={'statusCode':_0x18bcf1[_0x5056('0x79')]||0xc8,'statusMessage':_0x18bcf1['statusMessage']||'OK','headers':_0x18bcf1[_0x5056('0x72')]||{},'body':_0x18bcf1['body']||{}};_0x3bf1ae(null,_0x406865);})[_0x5056('0x18')](function(_0x9138f6){var _0x26ba6a={'statusCode':_0x9138f6[_0x5056('0x79')]||0x1f4,'statusMessage':_0x9138f6[_0x5056('0x7a')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x9138f6[_0x5056('0x7b')][_0x5056('0x72')]||{},'body':_0x9138f6[_0x5056('0x7b')][_0x5056('0x6f')]||{}};_0x3bf1ae(null,_0x26ba6a);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x7c')]=function(_0x87010e,_0x39e2a2){scripts[_0x5056('0x7c')](this[_0x5056('0x10')][_0x5056('0x38')],_0x87010e[_0x5056('0x7d')],_0x87010e[_0x5056('0x60')],_0x87010e[_0x5056('0x7e')]||'en')[_0x5056('0x14')](function(_0x46a227){_0x39e2a2(null,_0x46a227);})[_0x5056('0x18')](function(_0x3a7776){_0x39e2a2(_0x3a7776);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x7f')]=function(_0x17e41e,_0x55b356){scripts[_0x5056('0x7f')](this['channel'][_0x5056('0x38')],_0x17e41e[_0x5056('0x80')],_0x17e41e[_0x5056('0x81')],_0x17e41e[_0x5056('0x82')],_0x17e41e['text'],_0x17e41e[_0x5056('0x83')]||'en')[_0x5056('0x14')](function(_0x1e20a7){_0x55b356(null,_0x1e20a7);})[_0x5056('0x18')](function(_0x9a7d18){_0x55b356(_0x9a7d18);});};AGIVertices['prototype'][_0x5056('0x84')]=function(_0x3991a2,_0x2a7d5e){scripts['sestekNDA'](this[_0x5056('0x10')],_0x3991a2)[_0x5056('0x14')](function(_0x41d42d){_0x2a7d5e(null,_0x41d42d);})[_0x5056('0x18')](function(_0x353892){_0x2a7d5e(_0x353892);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x85')]=function(_0x21759d,_0x31463f){scripts[_0x5056('0x85')](_0x21759d[_0x5056('0x7d')],_0x21759d[_0x5056('0x60')],_0x21759d[_0x5056('0x86')]||_0x5056('0x62'),_0x21759d[_0x5056('0x87')])[_0x5056('0x14')](function(_0x49e4b5){_0x31463f(null,_0x49e4b5);})['catch'](function(_0x46462e){_0x31463f(_0x46462e);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x88')]=function(_0x226d21,_0x2d635d,_0x1891ab){scripts[_0x5056('0x88')](_0x2d635d,_0x226d21[_0x5056('0x7d')],_0x226d21[_0x5056('0x89')]||'en-US',this[_0x5056('0x8a')](_0x226d21[_0x5056('0x8b')])?_0x226d21['model']:undefined)[_0x5056('0x14')](function(_0x4e2e7d){_0x1891ab(null,_0x4e2e7d);})[_0x5056('0x18')](function(_0x273cc8){_0x1891ab(_0x273cc8);});};AGIVertices[_0x5056('0x1d')]['awsPolly']=function(_0x284c76,_0x679a24){scripts[_0x5056('0x8c')](_0x284c76[_0x5056('0x8d')],_0x284c76[_0x5056('0x8e')],_0x284c76[_0x5056('0x8f')],_0x284c76[_0x5056('0x90')]||_0x5056('0x91'),_0x284c76[_0x5056('0x60')],_0x284c76[_0x5056('0x92')]||_0x5056('0x60'))[_0x5056('0x14')](function(_0x517b73){_0x679a24(null,_0x517b73);})[_0x5056('0x18')](function(_0x5752fd){_0x679a24(_0x5752fd);});};AGIVertices[_0x5056('0x1d')]['awsLex']=function(_0x1657f2,_0x4d86d7){scripts[_0x5056('0x93')](this[_0x5056('0x10')][_0x5056('0x38')],_0x1657f2['aws_access_key_id'],_0x1657f2['aws_secret_access_key'],_0x1657f2[_0x5056('0x94')],_0x1657f2[_0x5056('0x60')],_0x1657f2[_0x5056('0x95')])[_0x5056('0x14')](function(_0x3ac15f){_0x4d86d7(null,_0x3ac15f);})[_0x5056('0x18')](function(_0xa4bab0){_0x4d86d7(_0xa4bab0);});};AGIVertices['prototype']['googleASR']=function(_0x16ab8c,_0x128546,_0x2c02ca){scripts[_0x5056('0x96')](_0x128546,_0x16ab8c[_0x5056('0x7d')],_0x16ab8c['google_asr_language']||_0x5056('0x62'))[_0x5056('0x14')](function(_0x5cb351){_0x2c02ca(null,_0x5cb351);})[_0x5056('0x18')](function(_0x14d4a9){_0x2c02ca(_0x14d4a9);});};AGIVertices[_0x5056('0x1d')][_0x5056('0x97')]=function(_0x1385b9,_0xdec19b,_0x278780){scripts[_0x5056('0x97')](_0xdec19b,_0x1385b9['appid'],_0x1385b9[_0x5056('0x98')],_0x1385b9['uri'])[_0x5056('0x14')](function(_0x2d0a04){_0x278780(null,_0x2d0a04);})[_0x5056('0x18')](function(_0xa55e38){_0x278780(_0xa55e38);});};AGIVertices['prototype'][_0x5056('0x99')]=function(_0x3a86ab){var _0x2d4aba=_[_0x5056('0x6c')](verticesWithRetry,_0x3a86ab[_0x5056('0x3a')])?_0x3a86ab:_[_0x5056('0x9a')](_0x3a86ab);for(var _0x2e065e in _0x2d4aba){if(_0x2d4aba[_0x5056('0x9b')](_0x2e065e)){if(_0x2d4aba[_0x2e065e]&&_['isString'](_0x2d4aba[_0x2e065e])){if(_[_0x5056('0x6c')](recursiveMapAttributes,_0x2e065e)){_0x2d4aba[_0x2e065e]=this['replaceObjectAllVariables'](_0x2d4aba[_0x2e065e]);}else{_0x2d4aba[_0x2e065e]=this[_0x5056('0x9c')](_0x2d4aba[_0x2e065e]);}}}}return _0x2d4aba;};AGIVertices['prototype']['recursiveNodeIndex']=function(_0x100958){for(var _0x3c4577 in _0x100958){if(_0x100958[_0x5056('0x9b')](_0x3c4577)){if(_[_0x5056('0x9d')](_0x100958[_0x3c4577])){this[_0x5056('0x9e')](_0x100958[_0x3c4577]);}else if(_['isArray'](_0x100958[_0x3c4577])){for(var _0x193ce3=0x0;_0x193ce3<_0x100958[_0x3c4577][_0x5056('0x9f')];_0x193ce3++){this[_0x5056('0x9e')](_0x100958[_0x3c4577][_0x193ce3]);}}else if(_[_0x5056('0xa0')](_0x100958[_0x3c4577])){_0x100958[_0x3c4577]=this['replaceAllVariables'](_0x100958[_0x3c4577]);}}}};AGIVertices[_0x5056('0x1d')][_0x5056('0xa1')]=function(_0x50210f,_0x321cde){for(var _0x518f0c in _0x50210f){if(_0x50210f[_0x5056('0x9b')](_0x518f0c)){if(_[_0x5056('0x9d')](_0x50210f[_0x518f0c])){if(!_[_0x5056('0x45')](_0x50210f[_0x518f0c])){this[_0x5056('0xa1')](_0x50210f[_0x518f0c],util[_0x5056('0x2b')]('%s.%s',_0x321cde,_0x518f0c));}}else if(_[_0x5056('0xa2')](_0x50210f[_0x518f0c])){for(var _0x2b0f02=0x0;_0x2b0f02<_0x50210f[_0x518f0c][_0x5056('0x9f')];_0x2b0f02++){this[_0x5056('0xa1')](_0x50210f[_0x518f0c][_0x2b0f02],util[_0x5056('0x2b')](_0x5056('0xa3'),_0x321cde,_0x518f0c+'['+_0x2b0f02+']'));}}else{if(!_[_0x5056('0x46')](_0x50210f[_0x518f0c])){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xa3'),_0x321cde,_0x518f0c),_0x50210f[_0x518f0c]);}}}}};AGIVertices[_0x5056('0x1d')][_0x5056('0xa5')]=function(_0x1b55d2){try{var _0x11f923=JSON[_0x5056('0x71')](_0x1b55d2);this[_0x5056('0x9e')](_0x11f923);return JSON[_0x5056('0x77')](_0x11f923);}catch(_0x578fd5){return this[_0x5056('0x9c')](_0x1b55d2);}};AGIVertices['prototype'][_0x5056('0x9c')]=function(_0x19d95f){var _0x33037d=_0x19d95f[_0x5056('0xa6')]('{');for(var _0x4d0a45=0x1;_0x4d0a45<_0x33037d[_0x5056('0x9f')];_0x4d0a45+=0x1){var _0x1ef886=_0x33037d[_0x4d0a45][_0x5056('0xa6')]('}');if(_0x1ef886[_0x5056('0x9f')]>0x1){_0x19d95f=_0x19d95f[_0x5056('0xa7')]('{'+_0x1ef886[0x0]+'}',this['channel']['getVariable'](_0x1ef886[0x0])[_0x5056('0xa8')]||_0x1ef886[0x0]);}}if(_0x33037d['length']===0x1){return _0x19d95f['toString']();}return this[_0x5056('0x9c')](_0x19d95f);};AGIVertices[_0x5056('0x1d')][_0x5056('0xa9')]=function(_0x397f0e,_0x3b50fe){var _0x325669=this[_0x5056('0x10')][_0x5056('0x13')](_0x397f0e);if(_0x325669['result']===-0x1){return _0x325669;}logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xaa'),_0x3b50fe,_0x325669[_0x5056('0xa8')]));return this[_0x5056('0x10')][_0x5056('0xa4')](_0x3b50fe,_0x325669[_0x5056('0xa8')]);};AGIVertices['prototype']['isConfigured']=function(_0x34cca5){return _0x34cca5&&_0x34cca5!=='0'&&_0x34cca5!=='-1'&&_0x34cca5!=='';};AGIVertices[_0x5056('0x1d')][_0x5056('0xab')]=function(_0x392a31){this[_0x5056('0x37')][_0x5056('0x75')](this,_0x392a31,'-');_0x392a31['retry']=_0x392a31[_0x5056('0xab')];return{'code':0xc8,'result':'-'};};AGIVertices[_0x5056('0x1d')][_0x5056('0xac')]=function(_0x1067e1){logger['info'](util[_0x5056('0x2b')]('Enter\x20in\x20MRCPSynth\x20(%s)\x20block',_0x1067e1[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x1067e1['text'])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}var _0x5dd174='\x22'+_0x1067e1[_0x5056('0x60')]+'\x22';if(this[_0x5056('0x8a')](_0x1067e1[_0x5056('0x7b')])){_0x5dd174+=','+_0x1067e1[_0x5056('0x7b')];}var _0x23387a=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xaf'),_0x5dd174);if(_0x23387a[_0x5056('0xb0')]===-0x1){return _0x23387a;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xb1'),_0x5dd174));};AGIVertices[_0x5056('0x1d')][_0x5056('0xb2')]=function(_0x4d040a){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xb3'),_0x4d040a[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x4d040a[_0x5056('0xb4')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xb5'));}var _0x5ae178=_0x4d040a[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x4d040a[_0x5056('0x7b')])){_0x5ae178+=','+_0x4d040a['options'];}var _0x30e35d=this[_0x5056('0x10')]['exec'](_0x5056('0xb6'),_0x5ae178);if(_0x30e35d['result']===-0x1){return _0x30e35d;}var _0x2ac3ce=this['getAndSetVariable'](_0x5056('0xb7'),'MRCP_RECOG_CONFIDENCE');if(_0x2ac3ce[_0x5056('0xb0')]===-0x1){return _0x2ac3ce;}var _0x3a6000=this[_0x5056('0xa9')](_0x5056('0xb8'),_0x5056('0xb9'));if(_0x3a6000[_0x5056('0xb0')]===-0x1){return _0x3a6000;}var _0x5c9d71=this[_0x5056('0xa9')](_0x5056('0xba'),'MRCP_RECOG_INSTANCE');if(_0x5c9d71['result']===-0x1){return _0x5c9d71;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20MRCPRecog\x20%s',_0x5ae178));};AGIVertices[_0x5056('0x1d')][_0x5056('0x9')]=function(_0x8f240){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20AGI\x20(%s)\x20block',_0x8f240[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x9')]([_0x8f240[_0x5056('0xbb')],_0x8f240[_0x5056('0xbc')]]);};AGIVertices['prototype'][_0x5056('0xbd')]=function(_0x111848){logger[_0x5056('0x30')](util['format'](_0x5056('0xbe'),_0x111848[_0x5056('0x39')]));if(this[_0x5056('0x8a')](_0x111848[_0x5056('0x6a')])){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x111848[_0x5056('0x6a')]));var _0x5da6ad=this[_0x5056('0x10')][_0x5056('0xbf')](_0x111848[_0x5056('0x6a')]);if(_0x5da6ad['result']===-0x1){return _0x5da6ad;}}return this[_0x5056('0x10')][_0x5056('0xbd')]();};AGIVertices[_0x5056('0x1d')][_0x5056('0x4c')]=function(_0x221b6c){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xc0'),_0x221b6c['label']));if(!this[_0x5056('0x8a')](_0x221b6c[_0x5056('0x4a')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x221b6c,_0x5056('0xc1'));}_0x221b6c['scheduledAt']=moment();if(this[_0x5056('0x8a')](_0x221b6c[_0x5056('0xc2')])){_0x221b6c[_0x5056('0x4b')]=moment()[_0x5056('0xc3')](_0x221b6c[_0x5056('0xc2')],_0x5056('0xc4'));}if(!this['isConfigured'](_0x221b6c[_0x5056('0x4f')])){_0x221b6c['callback_priority']=0x2;}this[_0x5056('0x44')][_0x5056('0x75')](this,_0x221b6c);return this['channel'][_0x5056('0xad')](util['format'](_0x5056('0xc5'),_0x221b6c['phone'],_0x221b6c['list_id'],_0x221b6c['scheduledAt']));};AGIVertices[_0x5056('0x1d')][_0x5056('0xc6')]=function(_0x3bccba){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block',_0x3bccba[_0x5056('0x39')]));var _0x4a5440=this[_0x5056('0x10')][_0x5056('0x5b')](_0x3bccba[_0x5056('0xc7')],_0x3bccba[_0x5056('0x7b')]);if(_0x4a5440[_0x5056('0xb0')]===-0x1){return _0x4a5440;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x3bccba[_0x5056('0xc7')],_0x3bccba[_0x5056('0x7b')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0xc8')]=function(_0x1eb7b2){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xc9'),_0x1eb7b2[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x1eb7b2[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}var _0x25f38b='\x22'+_0x1eb7b2['text']+'\x22';if(this[_0x5056('0x8a')](_0x1eb7b2[_0x5056('0x7b')])){_0x25f38b+=','+_0x1eb7b2[_0x5056('0x7b')];}var _0x2e7386=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xaf'),_0x25f38b);if(_0x2e7386[_0x5056('0xb0')]===-0x1){return _0x2e7386;}return this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0xb1'),_0x25f38b));};AGIVertices[_0x5056('0x1d')][_0x5056('0xca')]=function(_0x7cf9b8){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xcb'),_0x7cf9b8['label']));if(!this[_0x5056('0x8a')](_0x7cf9b8[_0x5056('0x60')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xae'));}var _0x5c60cb='\x22'+_0x7cf9b8['text']+'\x22';if(this['isConfigured'](_0x7cf9b8[_0x5056('0x7b')])){_0x5c60cb+=','+_0x7cf9b8[_0x5056('0x7b')];}var _0x1b3a40=this['channel'][_0x5056('0x5b')](_0x5056('0xaf'),_0x5c60cb);if(_0x1b3a40[_0x5056('0xb0')]===-0x1){return _0x1b3a40;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0xb1'),_0x5c60cb));};AGIVertices[_0x5056('0x1d')]['lumenvoxasr']=function(_0x42249e){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xcc'),_0x42249e[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x42249e[_0x5056('0xb4')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xb5'));}var _0x5ab174=_0x42249e[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x42249e['options'])){_0x5ab174+=','+_0x42249e['options'];}var _0x202fb5=this[_0x5056('0x10')][_0x5056('0x5b')]('MRCPRecog',_0x5ab174);if(_0x202fb5[_0x5056('0xb0')]===-0x1){return _0x202fb5;}var _0x338f3f=this[_0x5056('0xa9')](_0x5056('0xb7'),_0x5056('0xcd'));if(_0x338f3f[_0x5056('0xb0')]===-0x1){return _0x338f3f;}var _0xdfa44c=this[_0x5056('0xa9')]('RECOG_INPUT()',_0x5056('0xce'));if(_0xdfa44c[_0x5056('0xb0')]===-0x1){return _0xdfa44c;}var _0x185bb8=this[_0x5056('0xa9')](_0x5056('0xba'),'LUMENVOX_ASR_INSTANCE');if(_0x185bb8[_0x5056('0xb0')]===-0x1){return _0x185bb8;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xcf'),_0x5ab174));};AGIVertices['prototype']['sestekasr']=function(_0x515716){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x515716[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x515716[_0x5056('0xb4')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xb5'));}var _0x270ad2=_0x515716[_0x5056('0xb4')];if(this[_0x5056('0x8a')](_0x515716[_0x5056('0x7b')])){_0x270ad2+=','+_0x515716[_0x5056('0x7b')];}var _0x33352f=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0xb6'),_0x270ad2);if(_0x33352f[_0x5056('0xb0')]===-0x1){return _0x33352f;}var _0x3d1d44=this['getAndSetVariable'](_0x5056('0xb7'),'SESTEK_ASR_CONFIDENCE');if(_0x3d1d44['result']===-0x1){return _0x3d1d44;}var _0x282517=this[_0x5056('0xa9')](_0x5056('0xb8'),_0x5056('0xd0'));if(_0x282517['result']===-0x1){return _0x282517;}var _0x39ed85=this[_0x5056('0xa9')]('RECOG_INSTANCE()',_0x5056('0xd1'));if(_0x39ed85[_0x5056('0xb0')]===-0x1){return _0x39ed85;}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0xcf'),_0x270ad2));};AGIVertices[_0x5056('0x1d')][_0x5056('0xd2')]=function(_0x16675f){logger['info'](util['format'](_0x5056('0xd3'),_0x16675f[_0x5056('0x39')]));if(!this['isConfigured'](_0x16675f['odbc_id'])){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xd4'));}var _0x5aaea8=this[_0x5056('0xd5')][_0x5056('0x75')](this,_0x16675f[_0x5056('0xd6')]);if(!_0x5aaea8){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x16675f,_0x5056('0xd7'));}if(!this[_0x5056('0x8a')](_0x16675f['query'])){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xd8'));}var _0x20930d=_0x16675f[_0x5056('0xd9')][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xdb'),_0x20930d));var _0x1e6b42=this[_0x5056('0xdc')][_0x5056('0x75')](this,_0x5aaea8,_0x20930d);this[_0x5056('0x37')]['sync'](this,_0x16675f,_0x20930d);if(!this['isConfigured'](_0x16675f['variable_id'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xdd'));}var _0x2a06b0=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x16675f[_0x5056('0xde')]);if(!_0x2a06b0){return this['channel'][_0x5056('0x2d')](_0x16675f,_0x5056('0xdf'));}var _0x2d9943=this;_0x1e6b42[_0x5056('0xe0')](function(_0x5b49f6,_0x25780c){Object[_0x5056('0xe1')](_0x5b49f6)[_0x5056('0xe0')](function(_0x11dcd1){_0x2d9943['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xe2'),_0x2a06b0,_0x25780c,_0x11dcd1),_0x5b49f6[_0x11dcd1]);});});this['channel']['setVariable'](util[_0x5056('0x2b')]('%s_ROWS_COUNT',_0x2a06b0),_0x1e6b42[_0x5056('0x9f')]);return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xe3'),_0x2a06b0));};AGIVertices[_0x5056('0x1d')][_0x5056('0xe4')]=function(_0x129e8d){logger[_0x5056('0xe5')](util[_0x5056('0x2b')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x129e8d[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x129e8d[_0x5056('0xe6')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x129e8d,_0x5056('0xe7'));}var _0x637dd1=this[_0x5056('0xe8')][_0x5056('0x75')](this,_0x129e8d['sip_id']);if(!_0x637dd1){return this[_0x5056('0x10')]['error'](_0x129e8d,_0x5056('0xe9'));}var _0xe6a342=this[_0x5056('0x10')]['exec'](_0x5056('0xea'),[util[_0x5056('0x2b')](_0x5056('0xeb'),_0x637dd1),_0x129e8d[_0x5056('0x6a')],_0x129e8d[_0x5056('0xec')],_0x129e8d['url']]);if(_0xe6a342[_0x5056('0xb0')]===-0x1){return _0xe6a342;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xed'),_0x5056('0xea')));};AGIVertices[_0x5056('0x1d')][_0x5056('0xee')]=function(_0x2c5a84){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xef'),_0x2c5a84[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x2c5a84[_0x5056('0x7d')])){return this['channel'][_0x5056('0xad')]('no\x20key\x20configured');}if(!this['isConfigured'](_0x2c5a84[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')]['bot']=!![];this[_0x5056('0x37')](_0x2c5a84);this[_0x5056('0x43')](_0x2c5a84[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xf0'),_0x2c5a84[_0x5056('0x60')]));var _0x2d470f=this[_0x5056('0x7c')][_0x5056('0x75')](this,_0x2c5a84);if(_0x2d470f){for(var _0x257547 in _0x2d470f){if(_0x2d470f[_0x5056('0x9b')](_0x257547)){this[_0x5056('0x10')]['setVariable'](util['format'](_0x5056('0xf1'),_0x257547[_0x5056('0x6e')]()),_0x2d470f[_0x257547]);}}this['createSquareMessage'](_0x2d470f[_0x5056('0xf2')],_0x5056('0xf3'),'dialogflow','');return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xf4'),_0x2d470f['speech']));}return this[_0x5056('0x10')]['error'](_0x2c5a84,_0x5056('0xf5'));};AGIVertices[_0x5056('0x1d')][_0x5056('0xf6')]=function(_0x291cb6){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xf7'),_0x291cb6['label']));if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x80')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xf8'));}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x81')])){return this['channel']['noop'](_0x5056('0xf9'));}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x82')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xfa'));}if(!this['isConfigured'](_0x291cb6['dialogflowV2_language'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20anguage\x20configured');}if(!this[_0x5056('0x8a')](_0x291cb6[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')]['bot']=!![];this[_0x5056('0x37')](_0x291cb6);this[_0x5056('0x43')](_0x291cb6[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xfb'),_0x291cb6['text']));var _0x2b6b3e=this['googleDialogflowV2'][_0x5056('0x75')](this,_0x291cb6);if(_0x2b6b3e){for(var _0x243017 in _0x2b6b3e){if(_0x2b6b3e['hasOwnProperty'](_0x243017)){if(_0x243017!=='providerResponse'){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0xf1'),_0x243017[_0x5056('0x6e')]()),_0x2b6b3e[_0x243017]);}}}this[_0x5056('0x43')](_0x2b6b3e[_0x5056('0xf2')],_0x5056('0xf3'),_0x5056('0xf6'),_0x2b6b3e['providerResponse']);return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xfc'),_0x2b6b3e[_0x5056('0xf2')]));}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x291cb6,_0x5056('0xfd'));};AGIVertices[_0x5056('0x1d')][_0x5056('0xfe')]=function(_0x5eff4f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0xff'),_0x5eff4f[_0x5056('0x39')]));if(!this['isConfigured'](_0x5eff4f[_0x5056('0x100')])){return this[_0x5056('0x10')]['noop'](_0x5056('0x101'));}if(!this['isConfigured'](_0x5eff4f[_0x5056('0x102')])){return this['channel'][_0x5056('0xad')](_0x5056('0x103'));}if(!this['isConfigured'](_0x5eff4f[_0x5056('0x104')])){return this[_0x5056('0x10')]['noop'](_0x5056('0x105'));}if(!this[_0x5056('0x8a')](_0x5eff4f[_0x5056('0x106')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0x107')]=!![];this['createSquareDetailsReport'](_0x5eff4f);this[_0x5056('0x43')](_0x5eff4f[_0x5056('0x60')],'in','','');this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20SestekNDA:\x20%s',_0x5eff4f[_0x5056('0x60')]));var _0x4234af=this[_0x5056('0x84')][_0x5056('0x75')](this,_0x5eff4f);if(_0x4234af){for(var _0x5394e6 in _0x4234af){if(_0x4234af[_0x5056('0x9b')](_0x5394e6)){this[_0x5056('0x10')][_0x5056('0xa4')](util['format'](_0x5056('0x108'),_0x5394e6[_0x5056('0x6e')]()),_0x4234af[_0x5394e6]);}}this[_0x5056('0x43')](_0x4234af[_0x5056('0xf2')],_0x5056('0xf3'),_0x5056('0xfe'),'');if(_0x4234af[_0x5056('0x109')]){this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x10a'),_0x4234af[_0x5056('0x109')]));var _0x304b3f=this['channel'][_0x5056('0x10b')](_0x4234af[_0x5056('0x109')]);try{fs[_0x5056('0x10c')](_0x4234af[_0x5056('0x109')]+_0x5056('0x10d'));}catch(_0x537819){logger[_0x5056('0x2d')](_0x537819);}return _0x304b3f;}else{return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0x10e'),_0x4234af[_0x5056('0xf2')]));}}return this[_0x5056('0x10')]['error'](_0x5eff4f,_0x5056('0x10f'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x110')]=function(_0x435973){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20END\x20(%s)\x20block',_0x435973[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x110'));};AGIVertices['prototype'][_0x5056('0x111')]=function(_0x564236){logger['info'](util[_0x5056('0x2b')](_0x5056('0x112'),_0x564236[_0x5056('0x39')]));var _0x3256cc='';if(_0x564236[_0x5056('0x113')]){if(!this['isConfigured'](_0x564236[_0x5056('0x113')])){return this['channel'][_0x5056('0x2d')](_0x564236,_0x5056('0x114'));}else{var _0x1a9be7=parseInt(_0x564236[_0x5056('0x113')],0xa);if(isNaN(_0x1a9be7)){_0x3256cc=_0x564236[_0x5056('0x113')];}else{_0x3256cc=this['getTrunk']['sync'](this,_0x564236[_0x5056('0x113')]);if(!_0x3256cc){return this['channel']['error'](_0x564236,_0x5056('0x115'));}}}}else if(_0x564236['trunk_name']){_0x3256cc=_0x564236['trunk_name'];}else{return this[_0x5056('0x10')][_0x5056('0x2d')](_0x564236,_0x5056('0x114'));}var _0x5552b5=this['channel']['exec'](_0x5056('0xea'),[util[_0x5056('0x2b')](_0x5056('0x116'),_0x3256cc,_0x564236[_0x5056('0x49')]),_0x564236[_0x5056('0x6a')],_0x564236['opts'],_0x564236['url']]);if(_0x5552b5[_0x5056('0xb0')]===-0x1){return _0x5552b5;}return this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0xed'),_0x5056('0xea')));};AGIVertices[_0x5056('0x1d')][_0x5056('0x117')]=function(_0x4ec105){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x118'),_0x4ec105[_0x5056('0x39')]));return this[_0x5056('0x10')]['noop'](_0x5056('0x117'));};AGIVertices[_0x5056('0x1d')]['getdigits']=function(_0x23ffa1){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x119'),_0x23ffa1['label']));if(_0x23ffa1[_0x5056('0x11a')]===0x0){return this[_0x5056('0xab')](_0x23ffa1);}_0x23ffa1[_0x5056('0x11a')]-=0x1;if(!this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0x11b')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x23ffa1,'no\x20file\x20audio\x20selected');}var _0x5ab9c8=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x23ffa1[_0x5056('0x11b')]);if(!_0x5ab9c8){return this['channel']['error'](_0x23ffa1,_0x5056('0x11c'));}if(!this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0xde')])){return this['channel'][_0x5056('0x2d')]('no\x20variable\x20selected\x20for\x20the\x20result');}var _0x317c53=this[_0x5056('0x10')][_0x5056('0x11d')](_0x5ab9c8,_0x23ffa1[_0x5056('0x11e')],_0x23ffa1['maxdigit']);var _0x2b8700=_0x317c53[_0x5056('0xb0')]?_0x317c53['result'][_0x5056('0x4e')]():'';logger[_0x5056('0x30')](_0x5056('0x11f'),JSON['stringify'](_0x317c53));if(_0x317c53['result']===-0x1){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,_0x2b8700);return _0x317c53;}else if(_0x317c53[_0x5056('0xa8')]==='timeout'){_0x317c53['result']=_0x2b8700[_0x5056('0x9f')]>=parseInt(_0x23ffa1[_0x5056('0x120')])?'x':'i';}else{_0x317c53[_0x5056('0xb0')]=_0x2b8700['length']>=parseInt(_0x23ffa1[_0x5056('0x120')])&&_0x2b8700[_0x5056('0x9f')]<=parseInt(_0x23ffa1[_0x5056('0x121')])?'x':'i';}var _0x1954c0=this['getVariable'][_0x5056('0x75')](this,_0x23ffa1[_0x5056('0xde')]);if(!_0x1954c0){return this[_0x5056('0x10')]['error'](_0x23ffa1,'no\x20variable\x20found');}this[_0x5056('0x10')][_0x5056('0xa4')](_0x1954c0,_0x2b8700);if(this[_0x5056('0x8a')](_0x23ffa1[_0x5056('0x122')])){var _0x495e68=parseInt(_0x23ffa1[_0x5056('0x122')],0xa);var _0x9ba88d=rs[_0x5056('0x123')]({'charset':'*','length':_0x495e68});var _0x140a05=_0x2b8700[_0x5056('0x9f')];if(_0x140a05>0x0){if(_0x140a05>_0x495e68){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,_0x23ffa1[_0x5056('0x124')]===_0x5056('0x125')?_0x9ba88d+_0x2b8700[_0x5056('0x126')](_0x495e68):_0x2b8700[_0x5056('0x126')](0x0,_0x140a05-_0x495e68)+_0x9ba88d);}else{this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x23ffa1,rs[_0x5056('0x123')]({'charset':'*','length':_0x140a05}));}}else{this[_0x5056('0x37')][_0x5056('0x75')](this,_0x23ffa1,'');}}else{this[_0x5056('0x37')][_0x5056('0x75')](this,_0x23ffa1,_0x2b8700);}return _0x317c53;};AGIVertices[_0x5056('0x1d')][_0x5056('0xf')]=function(_0x48f419){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x127'),_0x48f419[_0x5056('0x39')]));return this[_0x5056('0xe')](_0x48f419);};AGIVertices[_0x5056('0x1d')][_0x5056('0x128')]=function(_0x2f8e8a){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x2f8e8a[_0x5056('0x39')]));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x2f8e8a,_0x2f8e8a[_0x5056('0x129')]);return this[_0x5056('0x10')][_0x5056('0xad')](util['format']('GOAL\x20%s',_0x2f8e8a[_0x5056('0x129')]));};AGIVertices['prototype'][_0x5056('0x12a')]=function(_0x3c710a){logger[_0x5056('0x30')](util['format']('[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block',_0x3c710a[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x3c710a[_0x5056('0x8d')])||!this[_0x5056('0x8a')](_0x3c710a[_0x5056('0x8e')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x12b'));}if(!this[_0x5056('0x8a')](_0x3c710a['text'])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20aws\x20Polly\x20%s',_0x3c710a[_0x5056('0x60')]));var _0x15644a=this['awsPolly'][_0x5056('0x75')](this,_0x3c710a);if(_0x15644a){this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x12c'),_0x15644a));var _0xc00506=this['channel'][_0x5056('0x10b')](_0x15644a);try{fs[_0x5056('0x10c')](_0x15644a+'.wav');}catch(_0x370164){logger[_0x5056('0x2d')](_0x370164);}return _0xc00506;}return this['channel']['error'](_0x3c710a,'aws\x20Polly\x20is\x20unreachable');};AGIVertices['prototype'][_0x5056('0x12d')]=function(_0x117a91){logger['info'](util[_0x5056('0x2b')](_0x5056('0x12e'),_0x117a91[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x117a91[_0x5056('0x8d')])||!this[_0x5056('0x8a')](_0x117a91['aws_secret_access_key'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x12b'));}if(!this[_0x5056('0x8a')](_0x117a91['aws_bot_name'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20bot\x20name\x20configured');}if(!this[_0x5056('0x8a')](_0x117a91[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')][_0x5056('0x107')]=!![];this[_0x5056('0x37')](_0x117a91);this[_0x5056('0x43')](_0x117a91[_0x5056('0x60')],'in','','');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x12f'),_0x117a91[_0x5056('0x60')]));var _0x41464d=this[_0x5056('0x93')][_0x5056('0x75')](this,_0x117a91);if(_0x41464d){for(var _0xfb47e in _0x41464d){if(_0x41464d[_0x5056('0x9b')](_0xfb47e)&&_[_0x5056('0xa0')](_0x41464d[_0xfb47e])){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x130'),_0xfb47e['toUpperCase']()),_0x41464d[_0xfb47e]);}}if(_[_0x5056('0x46')](_0x41464d[_0x5056('0x7a')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x131'));}else{this['createSquareMessage'](_0x41464d['message'],_0x5056('0xf3'),'amazonlex','');return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')](_0x5056('0x132'),_0x41464d[_0x5056('0x7a')]));}}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x117a91,_0x5056('0x133'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x134')]=function(_0x1f7462){logger['info'](util['format']('Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s',_0x1f7462[_0x5056('0x39')],_0x1f7462[_0x5056('0x6a')]));if(!this[_0x5056('0x8a')](_0x1f7462['key'])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x135'));}var _0x29902b='wav';var _0x3a84cf=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,rs[_0x5056('0x123')](0x4));var _0x5d0d16=util['format']('%s.%s',_0x3a84cf,_0x29902b);var _0x3c8945=!![];if(_0x1f7462[_0x5056('0x137')]===_0x5056('0x138')){_0x3c8945=![];}var _0x34dc3a=this[_0x5056('0x10')][_0x5056('0x139')](_0x3a84cf,_0x29902b,_0x1f7462['intKey'],_0x1f7462[_0x5056('0x6a')],undefined,_0x3c8945);if(_0x34dc3a[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('google\x20%s\x20file\x20created',_0x5d0d16));var _0x3c74bd=this['googleASR'][_0x5056('0x75')](this,_0x1f7462,_0x5d0d16);if(_0x3c74bd){for(var _0xf9fe3d in _0x3c74bd){if(_0x3c74bd[_0x5056('0x9b')](_0xf9fe3d)){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x13a'),_0xf9fe3d[_0x5056('0x6e')]()),_0x3c74bd[_0xf9fe3d]);}}return this[_0x5056('0x10')]['noop'](util['format'](_0x5056('0x13b'),JSON[_0x5056('0x77')](_0x3c74bd)));}}return _0x34dc3a;};AGIVertices[_0x5056('0x1d')][_0x5056('0x13c')]=function(_0x251e29){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x13d'),_0x251e29['label']));if(!this[_0x5056('0x8a')](_0x251e29[_0x5056('0x13e')])){return this['channel'][_0x5056('0xad')](_0x5056('0x13f'));}if(!this[_0x5056('0x8a')](_0x251e29[_0x5056('0x98')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x140'));}var _0x57d7ae=_0x5056('0x141');var _0x324d45=util['format']('%s/recordings/%s',FILES_PATH,rs[_0x5056('0x123')](0x4));var _0x4e1bca=util[_0x5056('0x2b')]('%s.%s',_0x324d45,_0x57d7ae);var _0xc7766a=!![];if(_0x251e29[_0x5056('0x137')]==='NOBEEP'){_0xc7766a=![];}var _0x1bf44b=this[_0x5056('0x10')][_0x5056('0x139')](_0x324d45,_0x57d7ae,_0x251e29[_0x5056('0x142')],_0x251e29[_0x5056('0x6a')],undefined,_0xc7766a);if(_0x1bf44b[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('tilde\x20%s\x20file\x20created',_0x4e1bca));var _0x44bc50=this[_0x5056('0x97')][_0x5056('0x75')](this,_0x251e29,_0x4e1bca);if(_0x44bc50){for(var _0x3e2fc0 in _0x44bc50){if(_0x44bc50[_0x5056('0x9b')](_0x3e2fc0)){this['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x143'),_0x3e2fc0[_0x5056('0x6e')]()),_0x44bc50[_0x3e2fc0]);}}return this['channel'][_0x5056('0xad')](util['format'](_0x5056('0x144'),JSON[_0x5056('0x77')](_0x44bc50)));}}return _0x1bf44b;};AGIVertices[_0x5056('0x1d')][_0x5056('0x145')]=function(_0x131a00){logger[_0x5056('0x30')](util['format'](_0x5056('0x146'),_0x131a00[_0x5056('0x39')]));return this['channel']['continueAt'](_0x131a00[_0x5056('0x3f')],_0x131a00[_0x5056('0x147')],_0x131a00[_0x5056('0x40')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x148')]=function(_0x358dee){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x358dee['label']));if(!this[_0x5056('0x8a')](_0x358dee[_0x5056('0x149')])){return this[_0x5056('0x10')]['error'](_0x358dee,'no\x20condition\x20configured');}try{var _0x24a1ab=eval(_0x358dee[_0x5056('0x149')])?_0x5056('0x14a'):_0x5056('0x14b');this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('EVAL\x20CONDITION\x20%s\x20%s',_0x358dee[_0x5056('0x149')],_0x24a1ab));return{'code':0xc8,'result':_0x24a1ab};}catch(_0x3f113c){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x14c')]=function(_0x5ba5a5){logger['info'](util[_0x5056('0x2b')](_0x5056('0x14d'),_0x5ba5a5[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x5ba5a5['interval_id'])){return this[_0x5056('0x10')]['error'](_0x5ba5a5,_0x5056('0x14e'));}var _0x557b7a=this[_0x5056('0x25')][_0x5056('0x75')](this,_0x5ba5a5['interval_id']);if(!_0x557b7a){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x5ba5a5,_0x5056('0x14f'));}for(var _0x4d16ef=0x0;_0x4d16ef<_0x557b7a['length'];_0x4d16ef+=0x1){var _0x2c3a1f=this['channel'][_0x5056('0x13')](util[_0x5056('0x2b')](_0x5056('0x150'),_0x557b7a[_0x4d16ef]));if(_0x2c3a1f[_0x5056('0xb0')]===-0x1){return _0x2c3a1f;}logger[_0x5056('0x30')](util['format']('IFTIME\x20%s\x20%s',_0x557b7a[_0x4d16ef],_0x2c3a1f[_0x5056('0xa8')]));if(_0x2c3a1f[_0x5056('0xa8')]==='true'){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14a')));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14a')));return{'code':0xc8,'result':'true'};}else{logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x151'),_0x557b7a[_0x4d16ef],_0x5056('0x14b')));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('IFTIME\x20%s\x20%s',_0x557b7a[_0x4d16ef],_0x5056('0x14b')));}}return{'code':0xc8,'result':_0x5056('0x14b')};};AGIVertices[_0x5056('0x1d')][_0x5056('0x152')]=function(_0x1c5ac5){logger['info'](util[_0x5056('0x2b')](_0x5056('0x153'),_0x1c5ac5[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x152')]();};AGIVertices[_0x5056('0x1d')][_0x5056('0x154')]=function(_0x5e5e1e){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x155'),_0x5e5e1e[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x5e5e1e[_0x5056('0x7d')])){return this['channel'][_0x5056('0xad')](_0x5056('0x135'));}var _0x24eb29='wav';var _0x31f1d2=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,rs['generate'](0x4));var _0x40a387=util[_0x5056('0x2b')]('%s.%s',_0x31f1d2,_0x24eb29);var _0x460bda=!![];if(_0x5e5e1e[_0x5056('0x137')]==='NOBEEP'){_0x460bda=![];}var _0x39cd96=this[_0x5056('0x10')][_0x5056('0x139')](_0x31f1d2,_0x24eb29,_0x5e5e1e[_0x5056('0x142')],_0x5e5e1e['timeout'],undefined,_0x460bda);if(_0x39cd96[_0x5056('0xb0')]!==-0x1){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x156'),_0x40a387));var _0x3f304b=this[_0x5056('0x88')][_0x5056('0x75')](this,_0x5e5e1e,_0x40a387);if(_0x3f304b){for(var _0x133e63 in _0x3f304b){if(_0x3f304b['hasOwnProperty'](_0x133e63)){this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x157'),_0x133e63[_0x5056('0x6e')]()),_0x3f304b[_0x133e63]);}}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x158'),JSON[_0x5056('0x77')](_0x3f304b)));}}return _0x39cd96;};AGIVertices[_0x5056('0x1d')][_0x5056('0x159')]=function(_0x88ec6){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x15a'),_0x88ec6['label']));if(!this[_0x5056('0x8a')](_0x88ec6[_0x5056('0x7d')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x135'));}if(!this[_0x5056('0x8a')](_0x88ec6[_0x5056('0x60')])){return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x15b'),_0x88ec6[_0x5056('0x60')]));var _0xfefb72=this[_0x5056('0x85')][_0x5056('0x75')](this,_0x88ec6);if(_0xfefb72){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('ispeech\x20%s\x20file\x20created',_0xfefb72));var _0x14ce1a=this[_0x5056('0x10')][_0x5056('0x10b')](_0xfefb72,_0x88ec6[_0x5056('0x142')]);try{fs[_0x5056('0x10c')](_0xfefb72+_0x5056('0x10d'));}catch(_0x15eba8){logger[_0x5056('0x2d')](_0x15eba8);}return _0x14ce1a;}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x88ec6,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x5056('0x1d')][_0x5056('0x15c')]=function(_0x19ec2d){logger['info'](util[_0x5056('0x2b')](_0x5056('0x15d'),_0x19ec2d['label']));if(!this['isConfigured'](_0x19ec2d[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x19ec2d,_0x5056('0x15f'));}logger[_0x5056('0x30')](util['format'](_0x5056('0x160'),this[_0x5056('0x10')]['callerid'],_0x19ec2d[_0x5056('0x15e')]));var _0x1d9a14=this[_0x5056('0x59')][_0x5056('0x75')](this,_0x19ec2d[_0x5056('0x15e')]);if(_0x1d9a14){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5056('0x10')]['callerid'],_0x19ec2d['findBy']));this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x161'),this['channel'][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x19ec2d[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x164')};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x165')]=function(_0x217fd5){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x166'),_0x217fd5[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x217fd5['findBy'])){return this[_0x5056('0x10')]['error'](_0x217fd5,_0x5056('0x15f'));}logger[_0x5056('0x30')](util['format']('FIND\x20AGENT\x20%s\x20BY\x20%s',this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));var _0x53fe3f=this[_0x5056('0x55')]['sync'](this,_0x217fd5[_0x5056('0x15e')]);if(_0x53fe3f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x161'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x161'),this[_0x5056('0x10')]['callerid'],_0x217fd5['findBy']));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x217fd5[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x164')};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x167')]=function(_0x59b855){logger['info'](util[_0x5056('0x2b')](_0x5056('0x168'),_0x59b855[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x59b855[_0x5056('0x169')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x59b855,'no\x20operation\x20configured');}this['channel']['noop'](util['format'](_0x5056('0x16a'),_0x59b855[_0x5056('0x169')]));var _0xa6372d=eval(_0x59b855[_0x5056('0x169')]);if(!this[_0x5056('0x8a')](_0x59b855[_0x5056('0xde')])){return this[_0x5056('0x10')]['noop'](_0x5056('0xdd'));}var _0x31b4bb=this['getVariable']['sync'](this,_0x59b855[_0x5056('0xde')]);if(!_0x31b4bb){return this[_0x5056('0x10')]['error'](_0x59b855,'no\x20variable\x20found');}if(_['isArray'](_0xa6372d)){var _0x57996c=this;_0xa6372d[_0x5056('0xe0')](function(_0x64561d,_0x21933d){_0x57996c['channel'][_0x5056('0xa4')](util[_0x5056('0x2b')](_0x5056('0x16b'),_0x31b4bb,_0x21933d),_0x64561d);});return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x16c'),_0x31b4bb));}else{return this[_0x5056('0x10')][_0x5056('0xa4')](_0x31b4bb,_0xa6372d);}};AGIVertices[_0x5056('0x1d')][_0x5056('0x16d')]=function(_0x24963f){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x16e'),_0x24963f['label']));if(_0x24963f['retry']===0x0){return this[_0x5056('0xab')](_0x24963f);}_0x24963f['retry']-=0x1;if(!this[_0x5056('0x8a')](_0x24963f['file_id'])){return this['channel'][_0x5056('0x2d')](_0x24963f,_0x5056('0x16f'));}var _0x227068=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x24963f['file_id']);if(!_0x227068){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x24963f,'no\x20file\x20audio\x20found');}var _0x49217e=this['channel'][_0x5056('0x11d')](_0x227068,_0x24963f['response'],_0x24963f[_0x5056('0x170')]);var _0x584d62=_0x49217e['result'];if(_0x49217e[_0x5056('0xb0')]===-0x1){this['createSquareDetailsReport'][_0x5056('0x75')](this,_0x24963f,'-1');return _0x49217e;}else if(_0x49217e['extra']===_0x5056('0x6a')){_0x49217e[_0x5056('0xb0')]=_0x49217e[_0x5056('0xb0')][_0x5056('0x9f')]>0x0?_0x49217e[_0x5056('0xb0')]:'t';}else if(_[_0x5056('0x45')](_0x49217e[_0x5056('0xb0')])){_0x49217e[_0x5056('0xb0')]='#';_0x584d62='#';}if(!this[_0x5056('0x8a')](_0x24963f[_0x5056('0xde')])){this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0xdd'));}else{var _0x480308=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x24963f[_0x5056('0xde')]);if(!_0x480308){return this['channel'][_0x5056('0x2d')](_0x24963f,_0x5056('0xdf'));}this[_0x5056('0x10')][_0x5056('0xa4')](_0x480308,_0x584d62);}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x24963f,_0x584d62);return _0x49217e;};AGIVertices[_0x5056('0x1d')]['noop']=function(_0x4873a9){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x171'),_0x4873a9[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x4873a9['output']||_0x4873a9[_0x5056('0x39')]);};AGIVertices['prototype']['pause']=function(_0x1a9860){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x1a9860[_0x5056('0x39')]));if(!this['isConfigured'](_0x1a9860[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x1a9860,_0x5056('0x15f'));}logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x160'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x1a9860[_0x5056('0x15e')]));var _0x2be21b=this[_0x5056('0x50')][_0x5056('0x75')](this,_0x1a9860[_0x5056('0x172')]);var _0x4b3595=this[_0x5056('0x52')][_0x5056('0x75')](this,_0x1a9860[_0x5056('0x15e')],_0x2be21b);if(_0x4b3595){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x1a9860[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x161'),this[_0x5056('0x10')]['callerid'],_0x1a9860[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util['format'](_0x5056('0x163'),this[_0x5056('0x10')]['callerid'],_0x1a9860[_0x5056('0x15e')]));this['channel']['noop'](util[_0x5056('0x2b')](_0x5056('0x161'),this['channel']['callerid'],_0x1a9860[_0x5056('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5056('0x1d')]['playback']=function(_0x289805){logger['info'](util['format'](_0x5056('0x173'),_0x289805[_0x5056('0x39')]));if(!this['isConfigured'](_0x289805[_0x5056('0x11b')])){return this['channel'][_0x5056('0x2d')](_0x289805,_0x5056('0x16f'));}var _0x1b1ca4=this['getSound'][_0x5056('0x75')](this,_0x289805[_0x5056('0x11b')]);if(!_0x1b1ca4){return this[_0x5056('0x10')]['error'](_0x289805,_0x5056('0x11c'));}var _0x3b004e=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x174'),[_0x1b1ca4,_0x289805[_0x5056('0xec')]]);if(_0x3b004e['result']===-0x1){return _0x3b004e;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x5056('0x174'),_0x1b1ca4));};AGIVertices[_0x5056('0x1d')]['queue']=function(_0x55da83){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x175'),_0x55da83[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x55da83[_0x5056('0x176')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x55da83,_0x5056('0x177'));}var _0x183b50='';var _0x552b62=parseInt(_0x55da83[_0x5056('0x176')],0xa);if(isNaN(_0x552b62)){_0x183b50=_0x55da83['queue_id'];}else{_0x183b50=this['getVoiceQueue'][_0x5056('0x75')](this,_0x55da83[_0x5056('0x176')]);if(!_0x183b50){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x55da83,'no\x20queue\x20found');}}var _0x20a1b2='';if(this[_0x5056('0x8a')](_0x55da83[_0x5056('0x11b')])){var _0xf0eb4c=this[_0x5056('0x20')][_0x5056('0x75')](this,_0x55da83[_0x5056('0x11b')]);if(_0xf0eb4c){_0x20a1b2=_0xf0eb4c;}}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x55da83,_0x183b50);if(_0x55da83['opts']['indexOf']('x')<0x0){_0x55da83[_0x5056('0xec')]+='x';}if(_0x55da83[_0x5056('0xec')]['indexOf']('X')<0x0){_0x55da83[_0x5056('0xec')]+='X';}this[_0x5056('0x10')][_0x5056('0xa4')]('XMCS-QUEUE',_0x183b50?_0x183b50[_0x5056('0x178')]():'');var _0x39d73a=this[_0x5056('0x10')][_0x5056('0x5b')]('QUEUE',[_0x183b50,_0x55da83[_0x5056('0xec')],_0x55da83[_0x5056('0x68')],_0x20a1b2,_0x55da83[_0x5056('0x6a')],_0x55da83[_0x5056('0x9')],_0x55da83[_0x5056('0x179')],_0x55da83[_0x5056('0x17a')],'',_0x55da83[_0x5056('0x17b')]]);if(_0x39d73a[_0x5056('0xb0')]===-0x1){return _0x39d73a;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x17c'),_0x5056('0x17d'),_0x183b50));};AGIVertices[_0x5056('0x1d')]['record']=function(_0x28f861){logger[_0x5056('0x30')](util['format'](_0x5056('0x17e'),_0x28f861['label']));var _0x28b282=_0x28f861[_0x5056('0x17f')]||'wav';var _0x2392b5=util[_0x5056('0x2b')](_0x5056('0x180'),this[_0x5056('0x10')][_0x5056('0x38')],rs[_0x5056('0x123')](0x5));var _0x20497e=util[_0x5056('0x2b')](_0x5056('0x181'),FILES_PATH,_0x2392b5,_0x28b282);var _0x33f830=util[_0x5056('0x2b')](_0x5056('0x136'),FILES_PATH,_0x2392b5);this[_0x5056('0x3c')][_0x5056('0x75')](this,_0x28f861,_0x2392b5,_0x20497e);this[_0x5056('0x10')][_0x5056('0xa4')](_0x5056('0x182'),_0x2392b5);logger['info'](_0x5056('0x183'),_0x33f830,_0x28b282,_0x28f861[_0x5056('0x184')],_0x28f861[_0x5056('0x6a')]);return this[_0x5056('0x10')][_0x5056('0x139')](_0x33f830,_0x28b282,_0x28f861[_0x5056('0x184')],_0x28f861[_0x5056('0x6a')],undefined,!![]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x185')]=function(_0x2026ec){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x186'),_0x2026ec[_0x5056('0x39')]));if(!this['isConfigured'](_0x2026ec[_0x5056('0x68')])){return this['channel']['noop']('no\x20url\x20configured');}var _0x4e087a=this[_0x5056('0x67')][_0x5056('0x75')](this,_0x2026ec);logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x187'),util[_0x5056('0x188')](_0x4e087a,{'showHidden':![],'depth':null})));if(!this[_0x5056('0x8a')](_0x2026ec['variable_id'])){return this['channel'][_0x5056('0xad')]('no\x20variable\x20selected\x20for\x20the\x20response');}var _0x5f23bd=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x2026ec['variable_id']);if(!_0x5f23bd){return this['channel'][_0x5056('0x2d')](_0x2026ec,_0x5056('0xdf'));}this[_0x5056('0x10')]['setVariable'](util['format']('%s_STATUS_CODE',_0x5f23bd),_0x4e087a[_0x5056('0x79')]?_0x4e087a['statusCode']:_0x5056('0x189'));this[_0x5056('0x10')][_0x5056('0xa4')](util[_0x5056('0x2b')]('%s_STATUS_MESSAGE',_0x5f23bd),_0x4e087a[_0x5056('0x18a')]?_0x4e087a['statusMessage']:'OK');if(_0x4e087a[_0x5056('0x6f')]){try{this[_0x5056('0xa1')](_0x4e087a['body'],_0x5f23bd);}catch(_0x4d8c23){logger[_0x5056('0x2d')](util[_0x5056('0x2b')](_0x5056('0x18b'),_0x5f23bd));}}return this[_0x5056('0x10')]['noop'](util[_0x5056('0x2b')]('variable\x20%s\x20set',_0x5f23bd));};AGIVertices[_0x5056('0x1d')][_0x5056('0x18c')]=function(_0x2548bf){logger['info'](util[_0x5056('0x2b')](_0x5056('0x18d'),_0x2548bf[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x18e')](_0x2548bf[_0x5056('0x18f')][_0x5056('0xda')](/\s+/g,''),_0x2548bf[_0x5056('0x184')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x190')]=function(_0xdc0ffb){logger['info'](util[_0x5056('0x2b')](_0x5056('0x191'),_0xdc0ffb[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x192')](_0xdc0ffb[_0x5056('0x6b')][_0x5056('0xda')](/\s+/g,''),_0xdc0ffb['escape_digits']);};AGIVertices[_0x5056('0x1d')]['sayphonetic']=function(_0x1a2940){logger['info'](util[_0x5056('0x2b')](_0x5056('0x193'),_0x1a2940[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0x194')](_0x1a2940[_0x5056('0x60')],_0x1a2940[_0x5056('0x184')]);};AGIVertices[_0x5056('0x1d')][_0x5056('0x195')]=function(_0x18a121){logger[_0x5056('0x30')](util[_0x5056('0x2b')]('Enter\x20in\x20SENDMAIL\x20(%s)\x20block',_0x18a121[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x18a121[_0x5056('0x196')])){return this[_0x5056('0x10')]['noop']('no\x20mail\x20account\x20configured');}var _0x499b4e=this[_0x5056('0x197')][_0x5056('0x75')](this,_0x18a121['account_id']);if(!_0x499b4e||!_0x499b4e[_0x5056('0x198')]){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x18a121,_0x5056('0x199'));}var _0x2382b4={'from':util[_0x5056('0x2b')]('\x22%s\x22\x20<%s>',_0x499b4e[_0x5056('0x17')],_0x499b4e[_0x5056('0x19a')]||_0x499b4e[_0x5056('0x198')]['user']),'to':_0x18a121['to']||'','cc':_0x18a121['cc']||'','bcc':_0x18a121['bcc']||'','subject':_0x18a121[_0x5056('0x19b')],'html':_0x18a121[_0x5056('0x60')],'text':_0x18a121[_0x5056('0x60')]};if(this['isConfigured'](_0x18a121['template_id'])){}logger['debug'](_0x5056('0x19c'),JSON[_0x5056('0x77')](_0x2382b4));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x18a121,_0x18a121['account_id']);this[_0x5056('0x10')]['noop'](util['format']('Trying\x20SendMail\x20with\x20account\x20%s',_0x499b4e['name']));this[_0x5056('0x24')][_0x5056('0x75')](this,_0x499b4e[_0x5056('0x19d')],_0x2382b4);return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x19e'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x19f')]=function(_0x38fa30){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a0'),_0x38fa30[_0x5056('0x39')]));return this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x1a1'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1a2')]=function(_0x25d701){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a3'),_0x25d701[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x25d701[_0x5056('0x1a4')])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20sms\x20account\x20configured');}var _0x44c716=this[_0x5056('0x34')][_0x5056('0x75')](this,_0x25d701[_0x5056('0x1a4')]);if(!_0x44c716){return this['channel'][_0x5056('0x2d')](_0x25d701,_0x5056('0x1a5'));}var _0x584102={'body':_0x25d701[_0x5056('0x1a6')],'phone':_0x25d701['to']||'','SmsAccountId':_0x44c716['id']};logger[_0x5056('0xe5')](_0x5056('0x1a7'),JSON['stringify'](_0x584102));this[_0x5056('0x37')][_0x5056('0x75')](this,_0x25d701,_0x25d701[_0x5056('0x1a4')]);this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Trying\x20SendSMS\x20with\x20account\x20%s',_0x44c716[_0x5056('0x17')]));this['createSmsMessage'][_0x5056('0x75')](this,_0x584102);return this[_0x5056('0x10')]['noop'](_0x5056('0x1a8'));};AGIVertices[_0x5056('0x1d')]['set']=function(_0x41f45b){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1a9'),_0x41f45b['label']));if(!this[_0x5056('0x8a')](_0x41f45b['variable_id'])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x41f45b,_0x5056('0x1aa'));}var _0x138baa=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x41f45b[_0x5056('0xde')]);if(!_0x138baa){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x41f45b,_0x5056('0xdf'));}return this['channel'][_0x5056('0xa4')](_0x138baa,_0x41f45b[_0x5056('0x1ab')]);};AGIVertices[_0x5056('0x1d')]['start']=function(_0x1471b5){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1ac'),_0x1471b5[_0x5056('0x39')]));this[_0x5056('0x10')][_0x5056('0xad')](_0x5056('0x1ad'));if(_0x1471b5[_0x5056('0xbd')]==='yes'){this[_0x5056('0x10')]['noop'](_0x5056('0x1ae'));return this[_0x5056('0x10')][_0x5056('0xbd')]();}return this[_0x5056('0x10')]['noop'](_0x5056('0x1af'));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1b0')]=function(_0x327cab){logger['info'](util['format'](_0x5056('0x1b1'),_0x327cab[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x327cab[_0x5056('0x1b2')])){return this[_0x5056('0x10')]['error'](_0x327cab,_0x5056('0x1b3'));}var _0xb6fc93=this['getSquareProject'][_0x5056('0x75')](this,_0x327cab['project_id']);if(!this['isConfigured'](_0xb6fc93)){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x327cab,util[_0x5056('0x2b')](_0x5056('0x1b4'),_0x327cab[_0x5056('0x1b2')]));}if(_0xb6fc93===this[_0x5056('0x10')]['arg_1']){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x327cab,'project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project');}this[_0x5056('0x37')][_0x5056('0x75')](this,_0x327cab,_0xb6fc93);var _0x23a966=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x1b5'),util[_0x5056('0x2b')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x5056('0x9')][_0x5056('0x1b6')]||_0x5056('0x1b7'),_0xb6fc93,this[_0x5056('0x10')]['arg_1']));if(_0x23a966[_0x5056('0xb0')]===-0x1){return _0x23a966;}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('Executed\x20command\x20%s\x20%s',_0x5056('0x1b5'),_0xb6fc93));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1b8')]=function(_0x43aa25){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1b9'),_0x43aa25[_0x5056('0x39')]));var _0x2374af=this[_0x5056('0x5a')]['sync'](this,_0x43aa25[_0x5056('0xbb')]);this[_0x5056('0x37')]['sync'](this,_0x43aa25,_0x43aa25['command']);if(this['isConfigured'](_0x43aa25[_0x5056('0xde')])){var _0x1b1c0b=this[_0x5056('0x13')][_0x5056('0x75')](this,_0x43aa25[_0x5056('0xde')]);if(_0x1b1c0b){this[_0x5056('0x10')][_0x5056('0xa4')](_0x1b1c0b,_0x2374af);return this['channel'][_0x5056('0xad')](util['format']('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x43aa25[_0x5056('0xbb')],_0x1b1c0b));}}return this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1ba'),_0x43aa25[_0x5056('0xbb')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1bb')]=function(_0x21c458){logger[_0x5056('0x30')](util['format'](_0x5056('0x1bc'),_0x21c458[_0x5056('0x39')]));_0x21c458[_0x5056('0x60')]=_0x21c458['text'][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x21c458['apiKey'])){return this[_0x5056('0x10')]['noop'](_0x5056('0x1bd'));}if(!this[_0x5056('0x8a')](_0x21c458['text'])){return this[_0x5056('0x10')][_0x5056('0xad')]('no\x20text\x20configured');}this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1be'),_0x21c458[_0x5056('0x60')]));var _0x370bbc=this['googleCloudTTS']['sync'](this,_0x21c458);if(_0x370bbc){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1bf'),_0x370bbc));var _0xeb7172=this[_0x5056('0x10')]['streamFile'](_0x370bbc);try{fs[_0x5056('0x10c')](_0x370bbc+'.wav');}catch(_0x4c6be3){logger[_0x5056('0x2d')](_0x4c6be3);}return _0xeb7172;}return this[_0x5056('0x10')][_0x5056('0x2d')](_0x21c458,'Google\x20Cloud\x20TTS\x20is\x20unreachable');};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c0')]=function(_0x163e9d){logger[_0x5056('0x30')](util['format'](_0x5056('0x1c1'),_0x163e9d['label']));_0x163e9d[_0x5056('0x60')]=_0x163e9d['text'][_0x5056('0xda')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x163e9d[_0x5056('0x60')])){return this['channel'][_0x5056('0xad')](_0x5056('0xae'));}this[_0x5056('0x10')][_0x5056('0xad')](util['format'](_0x5056('0x1c2'),_0x163e9d[_0x5056('0x60')]));var _0x113ebc=this[_0x5056('0x65')][_0x5056('0x75')](this,_0x163e9d);if(_0x113ebc){this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x1c3'),_0x113ebc));var _0x207f20=this[_0x5056('0x10')]['streamFile'](_0x113ebc);try{fs['unlink'](_0x113ebc+_0x5056('0x10d'));}catch(_0x5578f7){logger[_0x5056('0x2d')](_0x5578f7);}return _0x207f20;}return this['channel'][_0x5056('0x2d')](_0x163e9d,_0x5056('0x1c4'));};AGIVertices[_0x5056('0x1d')]['unpause']=function(_0x371974){logger[_0x5056('0x30')](util[_0x5056('0x2b')](_0x5056('0x1c5'),_0x371974[_0x5056('0x39')]));if(!this['isConfigured'](_0x371974[_0x5056('0x15e')])){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x371974,_0x5056('0x15f'));}logger['info'](util[_0x5056('0x2b')](_0x5056('0x160'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));var _0x121748=this['agentUnpause']['sync'](this,_0x371974[_0x5056('0x15e')]);if(_0x121748){logger[_0x5056('0x30')](util['format'](_0x5056('0x161'),this['channel'][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));return{'code':0xc8,'result':_0x5056('0x162')};}else{logger[_0x5056('0x30')](util['format'](_0x5056('0x163'),this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974[_0x5056('0x15e')]));this[_0x5056('0x10')][_0x5056('0xad')](util[_0x5056('0x2b')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x5056('0x10')][_0x5056('0x3d')],_0x371974['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c6')]=function(_0x2ef51a){logger['info'](util[_0x5056('0x2b')]('Enter\x20in\x20VOICEMAIL\x20(%s)\x20block',_0x2ef51a['label']));var _0xaebcdc=this[_0x5056('0x10')][_0x5056('0x5b')](_0x5056('0x1c7'),[_0x2ef51a[_0x5056('0x1c8')],_0x2ef51a[_0x5056('0x7b')]]);if(_0xaebcdc[_0x5056('0xb0')]===-0x1){return _0xaebcdc;}return this['channel'][_0x5056('0xad')](util[_0x5056('0x2b')](_0x5056('0x17c'),_0x5056('0x1c7'),_0x2ef51a[_0x5056('0x1c8')]));};AGIVertices[_0x5056('0x1d')][_0x5056('0x1c9')]=function(_0x371261){logger[_0x5056('0x30')](util['format']('Enter\x20in\x20SWITCH\x20(%s)\x20block',_0x371261[_0x5056('0x39')]));if(!this[_0x5056('0x8a')](_0x371261[_0x5056('0xde')])){return this[_0x5056('0x10')]['error'](_0x371261,'no\x20variable\x20selected');}var _0x28ce18=this['getVariable'][_0x5056('0x75')](this,_0x371261[_0x5056('0xde')]);if(!_0x28ce18){return this[_0x5056('0x10')][_0x5056('0x2d')](_0x371261,_0x5056('0xdf'));}var _0x3d376d=this[_0x5056('0x10')][_0x5056('0x13')](_0x28ce18);return{'code':0xc8,'result':_0x3d376d[_0x5056('0xa8')]?_0x3d376d[_0x5056('0xa8')]:'-'};};String[_0x5056('0x1d')][_0x5056('0xa7')]=function(_0x438b39,_0x4e8a1b){return this[_0x5056('0xa6')](_0x438b39)[_0x5056('0x1ca')](_0x4e8a1b);};module[_0x5056('0x1cb')]=AGIVertices;
\ No newline at end of file
index ee77f32..1ad3b74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd477=['[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','moment','../ami','../../../config/logger','acw','../rpc/user','../rpc/voiceAgentReport','agents','timers','channels','agentconnect','bind','syncHangupRequest','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','startAcw','queue','voiceQueues','ACW','mandatoryDispositionPause','Action','QueuePause','then','getAgent','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','stopAcw','acwTimeout','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','finally','[ACW][START]\x20%s','timer','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','syncAgentConnect','mandatoryDisposition','interface','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s','isUndefined','[%s][HANGUP:UNIQUEID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','[ACW][syncHangup]\x20%s','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','[ACW][syncBlindTransfer]\x20%s','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause'];(function(_0x11a741,_0x2b1699){var _0x4e43e3=function(_0x3bdb9d){while(--_0x3bdb9d){_0x11a741['push'](_0x11a741['shift']());}};_0x4e43e3(++_0x2b1699);}(_0xd477,0x1bf));var _0x7d47=function(_0x3ca52c,_0x8420f){_0x3ca52c=_0x3ca52c-0x0;var _0x2fb640=_0xd477[_0x3ca52c];return _0x2fb640;};'use strict';var util=require('util');var _=require(_0x7d47('0x0'));var moment=require(_0x7d47('0x1'));var ami=require(_0x7d47('0x2'));var logger=require(_0x7d47('0x3'))(_0x7d47('0x4'));var RpcUser=require(_0x7d47('0x5'));var RpcVoiceAgentReport=require(_0x7d47('0x6'));function Acw(_0x573d50){this['voiceQueues']=_0x573d50['voiceQueues'];this[_0x7d47('0x7')]=_0x573d50[_0x7d47('0x7')];this[_0x7d47('0x8')]=_0x573d50[_0x7d47('0x8')];this[_0x7d47('0x9')]={};ami['on'](_0x7d47('0xa'),this['syncAgentConnect'][_0x7d47('0xb')](this));ami['on']('hanguprequest',this[_0x7d47('0xc')][_0x7d47('0xb')](this));ami['on']('hangup',this[_0x7d47('0xd')][_0x7d47('0xb')](this));ami['on'](_0x7d47('0xe'),this[_0x7d47('0xf')][_0x7d47('0xb')](this));ami['on'](_0x7d47('0x10'),this[_0x7d47('0x11')][_0x7d47('0xb')](this));ami['on'](_0x7d47('0x12'),this[_0x7d47('0x13')][_0x7d47('0xb')](this));ami['on']('custom:agentConnectPreview',this[_0x7d47('0x14')][_0x7d47('0xb')](this));}function getDiff(_0x167cd5){var _0x402a04=moment()['milliseconds'](0x0);var _0x4c6798=moment(_0x167cd5)[_0x7d47('0x15')](0x0);return _0x402a04[_0x7d47('0x16')](_0x4c6798,_0x7d47('0x17'));}Acw[_0x7d47('0x18')][_0x7d47('0x19')]=function(_0x413651){try{var _0x284231=this;var _0x5caca8=this[_0x7d47('0x9')][_0x413651]['interface'];var _0x5193d2=this[_0x7d47('0x9')][_0x413651][_0x7d47('0x1a')];var _0x2e10e9=this[_0x7d47('0x1b')][_0x5193d2];var _0x588e24=![];var _0x3ed1e5=_0x7d47('0x1c');if(_0x2e10e9['mandatoryDisposition']){if(_0x2e10e9[_0x7d47('0x1d')]['name']){_0x588e24=!![];_0x3ed1e5=_0x2e10e9[_0x7d47('0x1d')]['name'];}}ami[_0x7d47('0x1e')]({'action':_0x7d47('0x1f'),'interface':_0x5caca8,'paused':!![],'reason':_0x3ed1e5})[_0x7d47('0x20')](function(_0x3d237d){if(_0x284231[_0x7d47('0x7')][_0x5caca8]){return RpcUser[_0x7d47('0x21')](_0x284231[_0x7d47('0x7')][_0x5caca8]['id'])['then'](function(_0x12e2fa){if(_0x12e2fa&&!_0x12e2fa['voicePause']){logger[_0x7d47('0x22')](_0x7d47('0x23'),_0x413651,_0x5caca8,_0x5193d2);var _0x16d2fb=_0x284231[_0x7d47('0x9')][_0x413651][_0x7d47('0x24')]&&_0x284231['channels'][_0x413651][_0x7d47('0x25')]?_0x284231['channels'][_0x413651][_0x7d47('0x25')]:_0x413651;return RpcUser['savePause'](_0x284231[_0x7d47('0x7')][_0x5caca8],_0x3ed1e5,_0x16d2fb)[_0x7d47('0x20')](function(_0x569489){if(!_0x588e24){_0x284231[_0x7d47('0x8')][_0x5caca8]={};logger[_0x7d47('0x22')](_0x7d47('0x26'),_0x413651,_0x284231[_0x7d47('0x1b')][_0x5193d2]['acwTimeout'],_0x5caca8,_0x5193d2);_0x284231[_0x7d47('0x8')][_0x5caca8]['timer']=setTimeout(_0x284231[_0x7d47('0x27')][_0x7d47('0xb')](_0x284231,_0x5caca8),_0x284231[_0x7d47('0x1b')][_0x5193d2][_0x7d47('0x28')]*0x3e8);_0x284231[_0x7d47('0x8')][_0x5caca8][_0x7d47('0x29')]=moment()[_0x7d47('0x2a')](_0x7d47('0x2b'));_0x284231[_0x7d47('0x8')][_0x5caca8][_0x7d47('0x2c')]=_0x413651;_0x284231[_0x7d47('0x8')][_0x5caca8]['queue']=_0x5193d2;_0x284231[_0x7d47('0x8')][_0x5caca8][_0x7d47('0x2d')]=function(){var _0x2f8498=getDiff(_0x284231[_0x7d47('0x8')][_0x5caca8][_0x7d47('0x29')]);clearTimeout(_0x284231[_0x7d47('0x8')][_0x5caca8]['timer']);_0x284231[_0x7d47('0x8')][_0x5caca8]['timer']=![];RpcVoiceAgentReport[_0x7d47('0x2e')]({'acwtime':_0x2f8498},_0x284231[_0x7d47('0x8')][_0x5caca8][_0x7d47('0x2c')],_0x5caca8)[_0x7d47('0x20')](function(_0x4c056d){logger['info'](_0x7d47('0x2f'),_0x413651,_0x2f8498,_0x4c056d);})[_0x7d47('0x30')](function(_0x568cc8){logger[_0x7d47('0x31')](_0x7d47('0x32'),_0x413651,_0x568cc8);});delete _0x284231[_0x7d47('0x8')][_0x5caca8];};}});}else{logger['info'](_0x7d47('0x33'),_0x413651,_0x5caca8,_0x5193d2);}});}})['catch'](function(_0x1ee395){logger[_0x7d47('0x31')](_0x7d47('0x26'),_0x413651,_0x284231[_0x7d47('0x1b')][_0x5193d2][_0x7d47('0x28')],_0x5caca8,_0x5193d2);})[_0x7d47('0x34')](function(){delete _0x284231[_0x7d47('0x9')][_0x413651];});}catch(_0x43166f){logger['error'](_0x7d47('0x35'),_0x43166f['message']);}};Acw[_0x7d47('0x18')][_0x7d47('0x27')]=function(_0x36a77d){try{var _0xdc26bc=this;if(_0xdc26bc[_0x7d47('0x8')][_0x36a77d]){_0xdc26bc[_0x7d47('0x8')][_0x36a77d][_0x7d47('0x36')]=![];var _0xabc4f5=_0xdc26bc[_0x7d47('0x8')][_0x36a77d]['uniqueid'];var _0x153214=_0xdc26bc[_0x7d47('0x8')][_0x36a77d][_0x7d47('0x1a')];var _0x493248=_0xdc26bc[_0x7d47('0x1b')][_0x153214][_0x7d47('0x28')];logger[_0x7d47('0x22')](_0x7d47('0x37'),_0xabc4f5,_0x36a77d);RpcUser['saveUnpause'](this[_0x7d47('0x7')][_0x36a77d]);RpcVoiceAgentReport[_0x7d47('0x2e')]({'acwtime':_0x493248,'agentacw':!![]},_0xabc4f5,_0x36a77d)[_0x7d47('0x20')](function(_0x2388b2){logger['info'](_0x7d47('0x2f'),_0xabc4f5,_0x493248,_0x2388b2);})[_0x7d47('0x30')](function(_0x19aa20){logger['error'](_0x7d47('0x32'),_0xabc4f5,_0x19aa20);});}else{logger[_0x7d47('0x31')](_0x7d47('0x38'),_0x36a77d);if(_0xdc26bc[_0x7d47('0x8')]){logger[_0x7d47('0x22')](_0x7d47('0x39'),JSON[_0x7d47('0x3a')](_0xdc26bc[_0x7d47('0x8')]));}}}catch(_0x441dc9){logger['error'](_0x7d47('0x3b'),_0x441dc9[_0x7d47('0x3c')]);}};Acw[_0x7d47('0x18')][_0x7d47('0x3d')]=function(_0x251ebc){try{if(this[_0x7d47('0x1b')][_0x251ebc[_0x7d47('0x1a')]]&&(this[_0x7d47('0x1b')][_0x251ebc[_0x7d47('0x1a')]]['acw']||this['voiceQueues'][_0x251ebc[_0x7d47('0x1a')]][_0x7d47('0x3e')])){if(this[_0x7d47('0x7')][_0x251ebc[_0x7d47('0x3f')]]){this['channels'][_0x251ebc[_0x7d47('0x2c')]]={'queue':_0x251ebc[_0x7d47('0x1a')],'interface':_0x251ebc[_0x7d47('0x3f')],'destlinkedid':_0x251ebc['destlinkedid']};}}}catch(_0xa8d99c){logger[_0x7d47('0x31')](_0x7d47('0x40'),_0xa8d99c['message']);}};Acw['prototype']['syncAgentConnectPreview']=function(_0x4f899b){try{if(this['voiceQueues'][_0x4f899b[_0x7d47('0x1a')]]&&(this[_0x7d47('0x1b')][_0x4f899b[_0x7d47('0x1a')]][_0x7d47('0x4')]||this[_0x7d47('0x1b')][_0x4f899b[_0x7d47('0x1a')]][_0x7d47('0x3e')])){if(this['agents'][_0x4f899b[_0x7d47('0x3f')]]){this[_0x7d47('0x9')][_0x4f899b[_0x7d47('0x2c')]]={'queue':_0x4f899b[_0x7d47('0x1a')],'interface':_0x4f899b[_0x7d47('0x3f')]};}}}catch(_0x4037e8){logger[_0x7d47('0x31')](_0x7d47('0x41'),_0x4037e8[_0x7d47('0x3c')]);}};Acw['prototype'][_0x7d47('0xc')]=function(_0x5c021d){try{if(this['channels'][_0x5c021d[_0x7d47('0x2c')]]&&_[_0x7d47('0x42')](this[_0x7d47('0x9')][_0x5c021d[_0x7d47('0x2c')]][_0x7d47('0x24')])){logger[_0x7d47('0x22')](_0x7d47('0x43'),_0x5c021d['uniqueid']);this[_0x7d47('0x19')](_0x5c021d[_0x7d47('0x2c')]);}else if(this[_0x7d47('0x9')][_0x5c021d[_0x7d47('0x44')]]&&_[_0x7d47('0x42')](this['channels'][_0x5c021d[_0x7d47('0x44')]]['attended'])){logger[_0x7d47('0x22')]('[%s][HANGUP:LINKEDID]',_0x5c021d[_0x7d47('0x44')]);this[_0x7d47('0x19')](_0x5c021d['linkedid']);}}catch(_0x1e3dc6){logger[_0x7d47('0x31')](_0x7d47('0x45'),_0x1e3dc6['message']);}};Acw['prototype']['syncHangup']=function(_0x5ae6ca){try{if(this['channels'][_0x5ae6ca[_0x7d47('0x2c')]]&&this[_0x7d47('0x9')][_0x5ae6ca[_0x7d47('0x2c')]][_0x7d47('0x24')]){logger[_0x7d47('0x22')](_0x7d47('0x46'),_0x5ae6ca[_0x7d47('0x2c')]);this[_0x7d47('0x19')](_0x5ae6ca[_0x7d47('0x2c')]);}else if(this[_0x7d47('0x9')][_0x5ae6ca['linkedid']]&&this['channels'][_0x5ae6ca[_0x7d47('0x44')]]['attended']){logger[_0x7d47('0x22')](_0x7d47('0x47'),_0x5ae6ca[_0x7d47('0x44')]);this['startAcw'](_0x5ae6ca[_0x7d47('0x44')]);}}catch(_0xb6479){logger[_0x7d47('0x31')](_0x7d47('0x48'),_0xb6479[_0x7d47('0x3c')]);}};Acw[_0x7d47('0x18')][_0x7d47('0x11')]=function(_0x165a20){try{if(!_[_0x7d47('0x49')](this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4a')]])){this[_0x7d47('0x19')](_0x165a20[_0x7d47('0x4a')]);if(this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4b')]]){this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4b')]][_0x7d47('0x24')]=!![];this['channels'][_0x165a20[_0x7d47('0x4c')]]=this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4b')]];delete this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4b')]];}}else if(!_[_0x7d47('0x49')](this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4c')]])){this[_0x7d47('0x19')](_0x165a20[_0x7d47('0x4c')]);if(this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4d')]]){this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4d')]][_0x7d47('0x24')]=!![];this[_0x7d47('0x9')][_0x165a20[_0x7d47('0x4a')]]=this['channels'][_0x165a20[_0x7d47('0x4d')]];delete this[_0x7d47('0x9')][_0x165a20['origtransfereruniqueid']];}}}catch(_0x5e63aa){logger[_0x7d47('0x31')](_0x7d47('0x4e'),_0x5e63aa[_0x7d47('0x3c')]);}};Acw[_0x7d47('0x18')][_0x7d47('0x13')]=function(_0x2925ed){try{if(this[_0x7d47('0x9')][_0x2925ed[_0x7d47('0x4f')]]){logger[_0x7d47('0x22')](_0x7d47('0x50'),JSON[_0x7d47('0x3a')](_0x2925ed[_0x7d47('0x4f')]));this['startAcw'](_0x2925ed[_0x7d47('0x4f')]);}else if(this['channels'][_0x2925ed[_0x7d47('0x51')]]){logger['info']('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0x7d47('0x3a')](_0x2925ed[_0x7d47('0x51')]));this[_0x7d47('0x19')](_0x2925ed[_0x7d47('0x51')]);}}catch(_0xcbc881){logger['error'](_0x7d47('0x52'),_0xcbc881['message']);}};Acw[_0x7d47('0x18')][_0x7d47('0xf')]=function(_0x4d4c24){try{if(this[_0x7d47('0x1b')][_0x4d4c24[_0x7d47('0x1a')]]&&this['voiceQueues'][_0x4d4c24[_0x7d47('0x1a')]]['autopause']===_0x7d47('0x53')){if(this['agents'][_0x4d4c24[_0x7d47('0x3f')]]){logger['info'](_0x7d47('0x54'),_0x4d4c24['uniqueid'],_0x4d4c24[_0x7d47('0x3f')],_0x4d4c24[_0x7d47('0x1a')]);return RpcUser[_0x7d47('0x55')](this[_0x7d47('0x7')][_0x4d4c24['interface']],_0x7d47('0x56'),_0x4d4c24['uniqueid']);}}}catch(_0x4f2607){logger[_0x7d47('0x31')](_0x7d47('0x57'),_0x4f2607[_0x7d47('0x3c')]);}};module[_0x7d47('0x58')]=Acw;
\ No newline at end of file
+var _0xe07a=['error','[%s][UPDATE][ERRORS:%s]','startAcw','channels','mandatoryDisposition','name','Action','QueuePause','voicePause','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','createTimer','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','[ACW][START]\x20%s','[%s][TIMER][STOP][AGENT:%s]','[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer','[ACW][TIMERS]','[ACW][STOP]\x20%s','message','syncAgentConnect','[ACW][syncAgentConnect]\x20%s','interface','[ACW][syncAgentConnectPreview]\x20%s','syncHangupRequest','isUndefined','[%s][HANGUP:UNIQUEID]','[%s][HANGUP:LINKEDID]','linkedid','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereeuniqueid','transfereruniqueid','[%s][BLINDTRANSFER:UNIQUEID]','transfererlinkedid','stringify','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','moment','../../../config/logger','acw','../rpc/voiceAgentReport','voiceQueues','agents','timers','agentconnect','bind','hanguprequest','hangup','syncHangup','agentringnoanswer','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','custom:agentConnectPreview','syncAgentConnectPreview','milliseconds','diff','seconds','prototype','info','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','queue','updateAcw','uniqueid','then','[%s][UPDATE][ACWTIME:%s]','catch'];(function(_0x2ea6d7,_0xbde5e6){var _0xaf3e16=function(_0x243fa4){while(--_0x243fa4){_0x2ea6d7['push'](_0x2ea6d7['shift']());}};_0xaf3e16(++_0xbde5e6);}(_0xe07a,0x86));var _0xae07=function(_0x37836d,_0x3480b5){_0x37836d=_0x37836d-0x0;var _0x4cac5c=_0xe07a[_0x37836d];return _0x4cac5c;};'use strict';var _=require('lodash');var moment=require(_0xae07('0x0'));var ami=require('../ami');var logger=require(_0xae07('0x1'))(_0xae07('0x2'));var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0xae07('0x3'));function Acw(_0x5ade76){this[_0xae07('0x4')]=_0x5ade76[_0xae07('0x4')];this['agents']=_0x5ade76[_0xae07('0x5')];this[_0xae07('0x6')]=_0x5ade76[_0xae07('0x6')];this['channels']={};ami['on'](_0xae07('0x7'),this['syncAgentConnect'][_0xae07('0x8')](this));ami['on'](_0xae07('0x9'),this['syncHangupRequest'][_0xae07('0x8')](this));ami['on'](_0xae07('0xa'),this[_0xae07('0xb')][_0xae07('0x8')](this));ami['on'](_0xae07('0xc'),this[_0xae07('0xd')][_0xae07('0x8')](this));ami['on'](_0xae07('0xe'),this[_0xae07('0xf')][_0xae07('0x8')](this));ami['on'](_0xae07('0x10'),this[_0xae07('0x11')][_0xae07('0x8')](this));ami['on'](_0xae07('0x12'),this[_0xae07('0x13')][_0xae07('0x8')](this));}function getDiff(_0x18ccf8){var _0x4a4cfe=moment()[_0xae07('0x14')](0x0);var _0x4461aa=moment(_0x18ccf8)[_0xae07('0x14')](0x0);return _0x4a4cfe[_0xae07('0x15')](_0x4461aa,_0xae07('0x16'));}Acw[_0xae07('0x17')]['createTimer']=function(_0x297354,_0x53fedd,_0x5d4320){this['timers'][_0x297354]={};logger[_0xae07('0x18')](_0xae07('0x19'),_0x53fedd,this['voiceQueues'][_0x5d4320][_0xae07('0x1a')],_0x297354,_0x5d4320);this['timers'][_0x297354][_0xae07('0x1b')]=setTimeout(this[_0xae07('0x1c')][_0xae07('0x8')](this,_0x297354),this[_0xae07('0x4')][_0x5d4320][_0xae07('0x1a')]*0x3e8);this[_0xae07('0x6')][_0x297354][_0xae07('0x1d')]=moment()[_0xae07('0x1e')](_0xae07('0x1f'));this[_0xae07('0x6')][_0x297354]['uniqueid']=_0x53fedd;this['timers'][_0x297354][_0xae07('0x20')]=_0x5d4320;this['timers'][_0x297354][_0xae07('0x21')]=function(){var _0x57df18=getDiff(this[_0xae07('0x6')][_0x297354][_0xae07('0x1d')]);clearTimeout(this[_0xae07('0x6')][_0x297354][_0xae07('0x1b')]);this[_0xae07('0x6')][_0x297354][_0xae07('0x1b')]=![];RpcVoiceAgentReport['update']({'acwtime':_0x57df18},this[_0xae07('0x6')][_0x297354][_0xae07('0x22')],_0x297354)[_0xae07('0x23')](function(_0x25d981){logger[_0xae07('0x18')](_0xae07('0x24'),_0x53fedd,_0x57df18,_0x25d981);})[_0xae07('0x25')](function(_0x14618d){logger[_0xae07('0x26')](_0xae07('0x27'),_0x53fedd,_0x14618d);});delete this[_0xae07('0x6')][_0x297354];};};Acw[_0xae07('0x17')][_0xae07('0x28')]=function(_0x47c042){try{var _0x367072=this;var _0x43accf=this[_0xae07('0x29')][_0x47c042]['interface'];var _0x114cb9=this[_0xae07('0x29')][_0x47c042][_0xae07('0x20')];var _0x4ae54a=this[_0xae07('0x4')][_0x114cb9];var _0x36030a=![];var _0x7830cd='ACW';if(_0x4ae54a[_0xae07('0x2a')]){if(_0x4ae54a['mandatoryDispositionPause'][_0xae07('0x2b')]){_0x36030a=!![];_0x7830cd=_0x4ae54a['mandatoryDispositionPause'][_0xae07('0x2b')];}}return ami[_0xae07('0x2c')]({'action':_0xae07('0x2d'),'interface':_0x43accf,'paused':!![],'reason':_0x7830cd})['then'](function(){if(_0x367072['agents'][_0x43accf]){return RpcUser['getAgent'](_0x367072[_0xae07('0x5')][_0x43accf]['id'])['then'](function(_0x303fc8){if(_0x303fc8&&!_0x303fc8[_0xae07('0x2e')]){logger[_0xae07('0x18')](_0xae07('0x2f'),_0x47c042,_0x43accf,_0x114cb9);var _0x257791=_0x367072[_0xae07('0x29')][_0x47c042][_0xae07('0x30')]&&_0x367072[_0xae07('0x29')][_0x47c042][_0xae07('0x31')]?_0x367072['channels'][_0x47c042][_0xae07('0x31')]:_0x47c042;return RpcUser['savePause'](_0x367072[_0xae07('0x5')][_0x43accf],_0x7830cd,_0x257791)['then'](function(){if(!_0x36030a){_0x367072[_0xae07('0x32')](_0x43accf,_0x47c042,_0x114cb9);}});}else{logger['info'](_0xae07('0x33'),_0x47c042,_0x43accf,_0x114cb9);if((_0x367072['timers'][_0x43accf]===undefined||_0x367072[_0xae07('0x6')][_0x43accf][_0xae07('0x1b')]===![])&&!_0x36030a){_0x367072[_0xae07('0x32')](_0x43accf,_0x47c042,_0x114cb9);}}});}})['catch'](function(){logger[_0xae07('0x26')](_0xae07('0x19'),_0x47c042,_0x367072[_0xae07('0x4')][_0x114cb9][_0xae07('0x1a')],_0x43accf,_0x114cb9);})['finally'](function(){delete _0x367072[_0xae07('0x29')][_0x47c042];});}catch(_0xf9e5bb){logger[_0xae07('0x26')](_0xae07('0x34'),_0xf9e5bb['message']);}};Acw[_0xae07('0x17')][_0xae07('0x1c')]=function(_0x18d0f8){try{var _0x19ee77=this;if(_0x19ee77[_0xae07('0x6')][_0x18d0f8]){_0x19ee77[_0xae07('0x6')][_0x18d0f8][_0xae07('0x1b')]=![];var _0x3480ce=_0x19ee77[_0xae07('0x6')][_0x18d0f8][_0xae07('0x22')];var _0x374534=_0x19ee77['timers'][_0x18d0f8][_0xae07('0x20')];var _0xe9381c=_0x19ee77[_0xae07('0x4')][_0x374534][_0xae07('0x1a')];logger[_0xae07('0x18')](_0xae07('0x35'),_0x3480ce,_0x18d0f8);RpcUser['saveUnpause'](this['agents'][_0x18d0f8]);RpcVoiceAgentReport['update']({'acwtime':_0xe9381c,'agentacw':!![]},_0x3480ce,_0x18d0f8)['then'](function(_0x5ab894){logger[_0xae07('0x18')]('[%s][UPDATE][ACWTIME:%s]',_0x3480ce,_0xe9381c,_0x5ab894);})[_0xae07('0x25')](function(_0x2393ac){logger[_0xae07('0x26')](_0xae07('0x27'),_0x3480ce,_0x2393ac);});}else{logger[_0xae07('0x26')](_0xae07('0x36'),_0x18d0f8);if(_0x19ee77['timers']){logger[_0xae07('0x18')](_0xae07('0x37'),JSON['stringify'](_0x19ee77[_0xae07('0x6')]));}}}catch(_0x6e97ef){logger[_0xae07('0x26')](_0xae07('0x38'),_0x6e97ef[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x3a')]=function(_0x3375e4){try{if(this[_0xae07('0x4')][_0x3375e4[_0xae07('0x20')]]&&(this[_0xae07('0x4')][_0x3375e4['queue']][_0xae07('0x2')]||this[_0xae07('0x4')][_0x3375e4['queue']]['mandatoryDisposition'])){if(this[_0xae07('0x5')][_0x3375e4['interface']]){this[_0xae07('0x29')][_0x3375e4[_0xae07('0x22')]]={'queue':_0x3375e4[_0xae07('0x20')],'interface':_0x3375e4['interface'],'destlinkedid':_0x3375e4[_0xae07('0x31')]};}}}catch(_0x4958d4){logger[_0xae07('0x26')](_0xae07('0x3b'),_0x4958d4[_0xae07('0x39')]);}};Acw[_0xae07('0x17')]['syncAgentConnectPreview']=function(_0x5d4285){try{if(this[_0xae07('0x4')][_0x5d4285[_0xae07('0x20')]]&&(this['voiceQueues'][_0x5d4285['queue']][_0xae07('0x2')]||this[_0xae07('0x4')][_0x5d4285[_0xae07('0x20')]][_0xae07('0x2a')])){if(this['agents'][_0x5d4285[_0xae07('0x3c')]]){this[_0xae07('0x29')][_0x5d4285['uniqueid']]={'queue':_0x5d4285[_0xae07('0x20')],'interface':_0x5d4285[_0xae07('0x3c')]};}}}catch(_0xc6cebe){logger[_0xae07('0x26')](_0xae07('0x3d'),_0xc6cebe[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x3e')]=function(_0x24dc21){try{if(this[_0xae07('0x29')][_0x24dc21['uniqueid']]&&_[_0xae07('0x3f')](this[_0xae07('0x29')][_0x24dc21[_0xae07('0x22')]][_0xae07('0x30')])){logger[_0xae07('0x18')](_0xae07('0x40'),_0x24dc21['uniqueid']);this[_0xae07('0x28')](_0x24dc21[_0xae07('0x22')]);}else if(this['channels'][_0x24dc21['linkedid']]&&_[_0xae07('0x3f')](this[_0xae07('0x29')][_0x24dc21['linkedid']][_0xae07('0x30')])){logger[_0xae07('0x18')](_0xae07('0x41'),_0x24dc21[_0xae07('0x42')]);this[_0xae07('0x28')](_0x24dc21[_0xae07('0x42')]);}}catch(_0x4c3b48){logger['error'](_0xae07('0x43'),_0x4c3b48[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0xb')]=function(_0x13940d){try{if(this[_0xae07('0x29')][_0x13940d['uniqueid']]&&this[_0xae07('0x29')][_0x13940d[_0xae07('0x22')]][_0xae07('0x30')]){logger[_0xae07('0x18')](_0xae07('0x44'),_0x13940d[_0xae07('0x22')]);this[_0xae07('0x28')](_0x13940d[_0xae07('0x22')]);}else if(this['channels'][_0x13940d[_0xae07('0x42')]]&&this['channels'][_0x13940d['linkedid']][_0xae07('0x30')]){logger[_0xae07('0x18')](_0xae07('0x45'),_0x13940d['linkedid']);this['startAcw'](_0x13940d[_0xae07('0x42')]);}}catch(_0x29b709){logger[_0xae07('0x26')]('[ACW][syncHangup]\x20%s',_0x29b709[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0xf')]=function(_0x467271){try{if(!_[_0xae07('0x46')](this[_0xae07('0x29')][_0x467271['transfereeuniqueid']])){this['startAcw'](_0x467271['transfereeuniqueid']);if(this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]]){this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]][_0xae07('0x30')]=!![];this['channels'][_0x467271[_0xae07('0x48')]]=this[_0xae07('0x29')][_0x467271['secondtransfereruniqueid']];delete this[_0xae07('0x29')][_0x467271[_0xae07('0x47')]];}}else if(!_[_0xae07('0x46')](this[_0xae07('0x29')][_0x467271[_0xae07('0x48')]])){this[_0xae07('0x28')](_0x467271[_0xae07('0x48')]);if(this[_0xae07('0x29')][_0x467271[_0xae07('0x49')]]){this[_0xae07('0x29')][_0x467271['origtransfereruniqueid']][_0xae07('0x30')]=!![];this['channels'][_0x467271[_0xae07('0x4a')]]=this['channels'][_0x467271[_0xae07('0x49')]];delete this[_0xae07('0x29')][_0x467271[_0xae07('0x49')]];}}}catch(_0x5a18c9){logger[_0xae07('0x26')]('[ACW][syncAttendedTransfer]\x20%s',_0x5a18c9[_0xae07('0x39')]);}};Acw[_0xae07('0x17')][_0xae07('0x11')]=function(_0x21b177){try{if(this['channels'][_0x21b177[_0xae07('0x4b')]]){logger[_0xae07('0x18')](_0xae07('0x4c'),JSON['stringify'](_0x21b177[_0xae07('0x4b')]));this[_0xae07('0x28')](_0x21b177[_0xae07('0x4b')]);}else if(this['channels'][_0x21b177[_0xae07('0x4d')]]){logger[_0xae07('0x18')]('[%s][BLINDTRANSFER:LINKEDID]',JSON[_0xae07('0x4e')](_0x21b177[_0xae07('0x4d')]));this[_0xae07('0x28')](_0x21b177[_0xae07('0x4d')]);}}catch(_0x12db4c){logger[_0xae07('0x26')](_0xae07('0x4f'),_0x12db4c['message']);}};Acw['prototype'][_0xae07('0xd')]=function(_0x3080fe){try{if(this[_0xae07('0x4')][_0x3080fe[_0xae07('0x20')]]&&this[_0xae07('0x4')][_0x3080fe[_0xae07('0x20')]][_0xae07('0x50')]===_0xae07('0x51')){if(this[_0xae07('0x5')][_0x3080fe[_0xae07('0x3c')]]){logger[_0xae07('0x18')](_0xae07('0x52'),_0x3080fe[_0xae07('0x22')],_0x3080fe['interface'],_0x3080fe[_0xae07('0x20')]);return RpcUser[_0xae07('0x53')](this[_0xae07('0x5')][_0x3080fe['interface']],_0xae07('0x54'),_0x3080fe['uniqueid']);}}}catch(_0x5f2359){logger[_0xae07('0x26')](_0xae07('0x55'),_0x5f2359[_0xae07('0x39')]);}};module['exports']=Acw;
\ No newline at end of file
index cc89901..b30b85c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','coreshowchannels','info','once','connect','shutdown','fullybooted','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','[ami.js][fullybooted]','close','exports','bluebird','moment','ami','../../config/environment','asterisk','port','password','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','username','inspect','actionSipShowRegistry','actionDeviceStateList'];(function(_0x583745,_0x2d1897){var _0x4ba020=function(_0x288616){while(--_0x288616){_0x583745['push'](_0x583745['shift']());}};_0x4ba020(++_0x2d1897);}(_0x757a,0xde));var _0xa757=function(_0x2a660c,_0x337885){_0x2a660c=_0x2a660c-0x0;var _0x4180be=_0x757a[_0x2a660c];return _0x4180be;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0xa757('0x0'));var moment=require(_0xa757('0x1'));var util=require('util');var _=require('lodash');var logger=require('../../config/logger')(_0xa757('0x2'));var config=require(_0xa757('0x3'));var ami=new Manager(config[_0xa757('0x4')][_0xa757('0x5')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')]['username'],config[_0xa757('0x4')][_0xa757('0x6')],!![]);ami['keepConnected']();ami[_0xa757('0x7')]=BPromise[_0xa757('0x8')](ami[_0xa757('0x9')]);function error(_0x1a95ee){logger[_0xa757('0xa')](util['format'](_0xa757('0xb'),config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x1a95ee,![],null)));}function close(){logger['error'](util['format']('Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s',config['asterisk']['username'],config[_0xa757('0x4')]['ip'],config['asterisk']['port']));}ami[_0xa757('0xe')]=function(){return function(){return ami['Action']({'action':'sipshowregistry'});};};ami[_0xa757('0xf')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x10')});};};ami[_0xa757('0x11')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x12')});};};ami[_0xa757('0x13')]=function(){return function(){return ami[_0xa757('0x7')]({'action':_0xa757('0x14')});};};ami[_0xa757('0x15')]=function(){return function(){return ami['Action']({'action':_0xa757('0x16')});};};function connect(_0x44eab8){logger[_0xa757('0x17')](util['format']('Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));ami[_0xa757('0x18')]('error',error);ami[_0xa757('0x18')]('close',close);}ami['on'](_0xa757('0x19'),connect);ami['on'](_0xa757('0x1a'),function(_0x14014c){logger[_0xa757('0x17')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0xa757('0x4')][_0xa757('0xc')],config[_0xa757('0x4')]['ip'],config[_0xa757('0x4')][_0xa757('0x5')],util[_0xa757('0xd')](_0x14014c,![],null)));});ami['on'](_0xa757('0x1b'),function(_0x21f1af){logger[_0xa757('0x17')](util['format'](_0xa757('0x1c'),config['asterisk'][_0xa757('0xc')],config['asterisk']['ip'],config[_0xa757('0x4')][_0xa757('0x5')]));return BPromise[_0xa757('0x1d')]()['then'](ami[_0xa757('0xe')]())[_0xa757('0x1e')](ami[_0xa757('0xf')]())[_0xa757('0x1e')](ami['actionSipPeerStatus']())[_0xa757('0x1e')](ami['actionQueueSummary']())['then'](ami['actionCoreShowChannels']())['catch'](function(_0xfdf69d){logger['error'](_0xa757('0x1f'),util[_0xa757('0xd')](_0xfdf69d,{'showHidden':![],'depth':null}));});});ami['once'](_0xa757('0xa'),error);ami['once'](_0xa757('0x20'),close);module[_0xa757('0x21')]=ami;
\ No newline at end of file
+var _0xde58=['exports','util','../../config/logger','ami','../../config/environment','port','asterisk','username','Action','promisify','action','error','Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','sipshowregistry','sippeerstatus','queuesummary','actionCoreShowChannels','coreshowchannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','shutdown','fullybooted','resolve','then','actionDeviceStateList','actionQueueSummary'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xde58,0x12a));var _0x8de5=function(_0x37dec6,_0x1264d7){_0x37dec6=_0x37dec6-0x0;var _0x2f9ee0=_0xde58[_0x37dec6];return _0x2f9ee0;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var util=require(_0x8de5('0x0'));var logger=require(_0x8de5('0x1'))(_0x8de5('0x2'));var config=require(_0x8de5('0x3'));var ami=new Manager(config['asterisk'][_0x8de5('0x4')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['password'],!![]);ami['keepConnected']();ami[_0x8de5('0x7')]=BPromise[_0x8de5('0x8')](ami[_0x8de5('0x9')]);function error(_0x4a00de){logger[_0x8de5('0xa')](util['format'](_0x8de5('0xb'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config['asterisk']['port'],util[_0x8de5('0xc')](_0x4a00de,![],null)));}function close(){logger[_0x8de5('0xa')](util[_0x8de5('0xd')](_0x8de5('0xe'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));}ami[_0x8de5('0xf')]=function(){return function(){return ami['Action']({'action':_0x8de5('0x10')});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x8de5('0x7')]({'action':'devicestatelist'});};};ami['actionSipPeerStatus']=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x11')});};};ami['actionQueueSummary']=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x12')});};};ami[_0x8de5('0x13')]=function(){return function(){return ami[_0x8de5('0x7')]({'action':_0x8de5('0x14')});};};function connect(){logger[_0x8de5('0x15')](util[_0x8de5('0xd')](_0x8de5('0x16'),config[_0x8de5('0x5')][_0x8de5('0x6')],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));ami['once'](_0x8de5('0xa'),error);ami[_0x8de5('0x17')](_0x8de5('0x18'),close);}ami['on'](_0x8de5('0x19'),connect);ami['on'](_0x8de5('0x1a'),function(_0x2b99e4){logger[_0x8de5('0x15')](util['format']('Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s',config[_0x8de5('0x5')]['username'],config['asterisk']['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')],util[_0x8de5('0xc')](_0x2b99e4,![],null)));});ami['on'](_0x8de5('0x1b'),function(){logger[_0x8de5('0x15')](util['format']('Fullybooted\x20\x22%s\x22\x20to\x20%s:%s',config[_0x8de5('0x5')]['username'],config[_0x8de5('0x5')]['ip'],config[_0x8de5('0x5')][_0x8de5('0x4')]));return Promise[_0x8de5('0x1c')]()[_0x8de5('0x1d')](ami[_0x8de5('0xf')]())[_0x8de5('0x1d')](ami[_0x8de5('0x1e')]())[_0x8de5('0x1d')](ami['actionSipPeerStatus']())['then'](ami[_0x8de5('0x1f')]())[_0x8de5('0x1d')](ami[_0x8de5('0x13')]())['catch'](function(_0x256ae9){logger[_0x8de5('0xa')]('[ami.js][fullybooted]',util[_0x8de5('0xc')](_0x256ae9,{'showHidden':![],'depth':null}));});});ami['once'](_0x8de5('0xa'),error);ami[_0x8de5('0x17')](_0x8de5('0x18'),close);module[_0x8de5('0x20')]=ami;
\ No newline at end of file
index 0eae16d..958e2a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa88=['bluebird','../../config/logger','ami','http','Request','rpc','memberReport','error','message','result','catch','jayson/promise'];(function(_0x4d16fc,_0x3dbdbd){var _0x5d07c2=function(_0x1bf6c7){while(--_0x1bf6c7){_0x4d16fc['push'](_0x4d16fc['shift']());}};_0x5d07c2(++_0x3dbdbd);}(_0xaa88,0x137));var _0x8aa8=function(_0x316904,_0x1e8b77){_0x316904=_0x316904-0x0;var _0xfa9a21=_0xaa88[_0x316904];return _0xfa9a21;};'use strict';var jayson=require(_0x8aa8('0x0'));var BPromise=require(_0x8aa8('0x1'));var logger=require(_0x8aa8('0x2'))(_0x8aa8('0x3'));var client=jayson['client'][_0x8aa8('0x4')]({'port':0x2329});client[_0x8aa8('0x5')]=function(_0x43f7e4,_0x3b2c88){return new BPromise(function(_0x3e3b70,_0x350e8b){return client['request'](_0x43f7e4,_0x3b2c88)['then'](function(_0x460042){logger['debug'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x3b2c88,_0x460042);if(_0x460042[_0x8aa8('0x8')]){logger[_0x8aa8('0x8')]('rpc',_0x8aa8('0x7'),_0x43f7e4,_0x460042[_0x8aa8('0x8')][_0x8aa8('0x9')],_0x3b2c88);return _0x350e8b(_0x460042['error'][_0x8aa8('0x9')]);}else{return _0x3e3b70(_0x460042[_0x8aa8('0xa')]);}})[_0x8aa8('0xb')](function(_0x33cc5c){logger['error'](_0x8aa8('0x6'),_0x8aa8('0x7'),_0x43f7e4,_0x33cc5c,_0x3b2c88);return _0x350e8b(_0x33cc5c);});});};module['exports']=client;
\ No newline at end of file
+var _0xb7e7=['exports','jayson/promise','../../config/logger','client','Request','debug','rpc','error','memberReport','message','result','catch'];(function(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0xb7e7,0x121));var _0x7b7e=function(_0x580576,_0x2f107d){_0x580576=_0x580576-0x0;var _0x3f55a0=_0xb7e7[_0x580576];return _0x3f55a0;};'use strict';var jayson=require(_0x7b7e('0x0'));var BPromise=require('bluebird');var logger=require(_0x7b7e('0x1'))('ami');var client=jayson[_0x7b7e('0x2')]['http']({'port':0x2329});client[_0x7b7e('0x3')]=function(_0x556d68,_0x31d0ed){return new BPromise(function(_0x118577,_0x1d9384){return client['request'](_0x556d68,_0x31d0ed)['then'](function(_0x333fa4){logger[_0x7b7e('0x4')](_0x7b7e('0x5'),'memberReport',_0x556d68,_0x31d0ed,_0x333fa4);if(_0x333fa4[_0x7b7e('0x6')]){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x333fa4[_0x7b7e('0x6')][_0x7b7e('0x8')],_0x31d0ed);return _0x1d9384(_0x333fa4[_0x7b7e('0x6')]['message']);}else{return _0x118577(_0x333fa4[_0x7b7e('0x9')]);}})[_0x7b7e('0xa')](function(_0x10a666){logger[_0x7b7e('0x6')](_0x7b7e('0x5'),_0x7b7e('0x7'),_0x556d68,_0x10a666,_0x31d0ed);return _0x1d9384(_0x10a666);});});};module[_0x7b7e('0xb')]=client;
\ No newline at end of file
index 20880ce..5d91608 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef9e=['countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','voiceQueue','dialCutDigit','substring','prototype','getQueue','exports','lodash','moment','isNil','string','uniqueid','name','Contact','phone','firstName','lastName','number','queue','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry'];(function(_0x1fcdb5,_0x162157){var _0x44a25f=function(_0x23a18b){while(--_0x23a18b){_0x1fcdb5['push'](_0x1fcdb5['shift']());}};_0x44a25f(++_0x162157);}(_0xef9e,0xcb));var _0xeef9=function(_0x37f7f8,_0x401c22){_0x37f7f8=_0x37f7f8-0x0;var _0x24b54f=_0xef9e[_0x37f7f8];return _0x24b54f;};'use strict';var util=require('util');var _=require(_0xeef9('0x0'));var moment=require(_0xeef9('0x1'));function checkNameSurname(_0x3596d7,_0x14ce76,_0xd1297d){var _0x32de04='';if(!_[_0xeef9('0x2')](_0x14ce76)&&_0xeef9('0x3')===typeof _0x14ce76){_0x32de04+=_0x14ce76;}if(!_[_0xeef9('0x2')](_0xd1297d)&&_0xeef9('0x3')===typeof _0xd1297d){_0x32de04+='\x20'+_0xd1297d;}if(_0x32de04!==''){return _0x32de04;}return _0x3596d7;}function Action(_0x5d1cc4,_0x28aa96,_0x3bb0d2){this['voiceQueue']=_0x5d1cc4;this[_0xeef9('0x4')]=_0x3bb0d2||undefined;this[_0xeef9('0x5')]=checkNameSurname(_0x28aa96[_0xeef9('0x6')][_0xeef9('0x7')],_0x28aa96['Contact'][_0xeef9('0x8')],_0x28aa96[_0xeef9('0x6')][_0xeef9('0x9')]);this[_0xeef9('0xa')]=_0x28aa96[_0xeef9('0x7')];this[_0xeef9('0xb')]=_0x5d1cc4[_0xeef9('0x5')];this[_0xeef9('0xc')]=_0x28aa96['active']||![];this[_0xeef9('0xd')]=_0x5d1cc4['type'];this[_0xeef9('0xe')]=_0x5d1cc4[_0xeef9('0xe')]||0x3;this[_0xeef9('0xf')]=_0x28aa96[_0xeef9('0xf')];this[_0xeef9('0x10')]=_0x28aa96[_0xeef9('0x10')];this[_0xeef9('0x11')]=_0x28aa96['countcongestionretry'];this[_0xeef9('0x12')]=_0x28aa96[_0xeef9('0x12')];this[_0xeef9('0x13')]=_0x28aa96[_0xeef9('0x13')];this[_0xeef9('0x14')]=_0x28aa96[_0xeef9('0x14')];this['countabandonedretry']=_0x28aa96['countabandonedretry'];this[_0xeef9('0x15')]=_0x28aa96[_0xeef9('0x15')];this[_0xeef9('0x16')]=_0x28aa96['countagentrejectretry'];this[_0xeef9('0x17')]=_0x28aa96['ContactId'];this['ListId']=_0x28aa96[_0xeef9('0x18')];this[_0xeef9('0x19')]=_0x28aa96[_0xeef9('0x19')];this[_0xeef9('0x1a')]=_0x28aa96[_0xeef9('0x1a')];this[_0xeef9('0x1b')]=_0x28aa96[_0xeef9('0x1b')];this[_0xeef9('0x1c')]=_0x28aa96['id'];this['ContactFirstName']=_0x28aa96['Contact']['firstName']||'';this[_0xeef9('0x1d')]=moment()[_0xeef9('0x1e')](_0xeef9('0x1f'));this['callback']=_0x28aa96['callback'];this[_0xeef9('0x20')]=_0x28aa96[_0xeef9('0x20')];this['callbackat']=_0x28aa96[_0xeef9('0x21')];this[_0xeef9('0x22')]=_0x28aa96[_0xeef9('0x22')];this[_0xeef9('0x23')]='';this[_0xeef9('0x24')]='';}Action['prototype'][_0xeef9('0x25')]=function(){return util[_0xeef9('0x1e')](_0xeef9('0x26'),this[_0xeef9('0x5')],this[_0xeef9('0x27')][_0xeef9('0x28')]>0x0?this[_0xeef9('0xa')][_0xeef9('0x29')](this[_0xeef9('0x27')][_0xeef9('0x28')]):this['number']);};Action[_0xeef9('0x2a')][_0xeef9('0x2b')]=function(){return this[_0xeef9('0xb')];};module[_0xeef9('0x2c')]=Action;
\ No newline at end of file
+var _0x3e53=['firstName','lastName','number','phone','queue','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','prototype','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','exports','util','isNil','voiceQueue','uniqueid','name','Contact'];(function(_0x3c9be6,_0x19e7fc){var _0x3540e6=function(_0x514cd1){while(--_0x514cd1){_0x3c9be6['push'](_0x3c9be6['shift']());}};_0x3540e6(++_0x19e7fc);}(_0x3e53,0xcc));var _0x33e5=function(_0xc6a162,_0x19f54f){_0xc6a162=_0xc6a162-0x0;var _0x1c75ce=_0x3e53[_0xc6a162];return _0x1c75ce;};'use strict';var util=require(_0x33e5('0x0'));var _=require('lodash');var moment=require('moment');function checkNameSurname(_0x1cb991,_0x4a737d,_0x1bc2f5){var _0x405b43='';if(!_[_0x33e5('0x1')](_0x4a737d)&&'string'===typeof _0x4a737d){_0x405b43+=_0x4a737d;}if(!_[_0x33e5('0x1')](_0x1bc2f5)&&'string'===typeof _0x1bc2f5){_0x405b43+='\x20'+_0x1bc2f5;}if(_0x405b43!==''){return _0x405b43;}return _0x1cb991;}function Action(_0x36bd68,_0x4ddec8,_0x37e966){this[_0x33e5('0x2')]=_0x36bd68;this[_0x33e5('0x3')]=_0x37e966||undefined;this[_0x33e5('0x4')]=checkNameSurname(_0x4ddec8[_0x33e5('0x5')]['phone'],_0x4ddec8['Contact'][_0x33e5('0x6')],_0x4ddec8['Contact'][_0x33e5('0x7')]);this[_0x33e5('0x8')]=_0x4ddec8[_0x33e5('0x9')];this[_0x33e5('0xa')]=_0x36bd68[_0x33e5('0x4')];this['active']=_0x4ddec8['active']||![];this[_0x33e5('0xb')]=_0x36bd68['type'];this['dialQueueTimeout']=_0x36bd68[_0x33e5('0xc')]||0x3;this[_0x33e5('0xd')]=_0x4ddec8[_0x33e5('0xd')];this[_0x33e5('0xe')]=_0x4ddec8[_0x33e5('0xe')];this[_0x33e5('0xf')]=_0x4ddec8['countcongestionretry'];this['countnoanswerretry']=_0x4ddec8[_0x33e5('0x10')];this[_0x33e5('0x11')]=_0x4ddec8[_0x33e5('0x11')];this[_0x33e5('0x12')]=_0x4ddec8[_0x33e5('0x12')];this['countabandonedretry']=_0x4ddec8['countabandonedretry'];this['countmachineretry']=_0x4ddec8[_0x33e5('0x13')];this[_0x33e5('0x14')]=_0x4ddec8['countagentrejectretry'];this[_0x33e5('0x15')]=_0x4ddec8[_0x33e5('0x15')];this['ListId']=_0x4ddec8[_0x33e5('0x16')];this[_0x33e5('0x17')]=_0x4ddec8[_0x33e5('0x17')];this[_0x33e5('0x18')]=_0x4ddec8['VoiceQueueId'];this[_0x33e5('0x19')]=_0x4ddec8[_0x33e5('0x19')];this[_0x33e5('0x1a')]=_0x4ddec8['id'];this[_0x33e5('0x1b')]=_0x4ddec8[_0x33e5('0x5')][_0x33e5('0x6')]||'';this['starttime']=moment()[_0x33e5('0x1c')](_0x33e5('0x1d'));this[_0x33e5('0x1e')]=_0x4ddec8[_0x33e5('0x1e')];this[_0x33e5('0x1f')]=_0x4ddec8[_0x33e5('0x1f')];this[_0x33e5('0x20')]=_0x4ddec8[_0x33e5('0x20')];this[_0x33e5('0x21')]=_0x4ddec8[_0x33e5('0x21')];this[_0x33e5('0x22')]='';this[_0x33e5('0x23')]='';}Action[_0x33e5('0x24')][_0x33e5('0x25')]=function(){return util[_0x33e5('0x1c')](_0x33e5('0x26'),this['name'],this[_0x33e5('0x2')][_0x33e5('0x27')]>0x0?this[_0x33e5('0x8')][_0x33e5('0x28')](this[_0x33e5('0x2')][_0x33e5('0x27')]):this[_0x33e5('0x8')]);};Action[_0x33e5('0x24')]['getQueue']=function(){return this['queue'];};module[_0x33e5('0x29')]=Action;
\ No newline at end of file
index 9d6f6ba..b83f4d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67ff=['originatecalleridname','exports','util','moment','milliseconds','seconds','state','statedesc','scheduledat','type','campaigntype','countbusyretry','countnoanswerretry','countcongestionretry','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','answertime','format','ringtime','responsetime','holdtime','talktime','endtime','queue','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum'];(function(_0x498a1d,_0x18dfd7){var _0x2b3699=function(_0x67a234){while(--_0x67a234){_0x498a1d['push'](_0x498a1d['shift']());}};_0x2b3699(++_0x18dfd7);}(_0x67ff,0x104));var _0xf67f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x67ff[_0x321bb2];return _0x9c12ed;};'use strict';var util=require(_0xf67f('0x0'));var _=require('lodash');var moment=require(_0xf67f('0x1'));function getSeconds(_0x153ac9,_0x3f2596){var _0x1b2519=moment(_0x153ac9)['milliseconds'](0x0);var _0x4e592c=moment(_0x3f2596)[_0xf67f('0x2')](0x0);return _0x1b2519['diff'](_0x4e592c,_0xf67f('0x3'));}function AgentComplete(_0x4cb652,_0x4fa36d){this[_0xf67f('0x4')]=0x4;this[_0xf67f('0x5')]='Answer';this[_0xf67f('0x6')]=_0x4cb652[_0xf67f('0x6')];this[_0xf67f('0x7')]=_0x4cb652['type'];this[_0xf67f('0x8')]=_0x4cb652[_0xf67f('0x7')]==='outbound'?'queue':_0x4cb652[_0xf67f('0x7')];this[_0xf67f('0x9')]=_0x4cb652['countbusyretry'];this['countcongestionretry']=_0x4cb652['countcongestionretry'];this[_0xf67f('0xa')]=_0x4cb652[_0xf67f('0xa')];this['countglobal']=_0x4cb652[_0xf67f('0x9')]+_0x4cb652[_0xf67f('0xb')]+_0x4cb652[_0xf67f('0xa')]+_0x4cb652[_0xf67f('0xc')]+_0x4cb652[_0xf67f('0xd')]+_0x4cb652['countabandonedretry']+_0x4cb652[_0xf67f('0xe')]+_0x4cb652['countagentrejectretry'];this[_0xf67f('0xc')]=_0x4cb652['countnosuchnumberretry'];this[_0xf67f('0xd')]=_0x4cb652['countdropretry'];this[_0xf67f('0xf')]=_0x4cb652[_0xf67f('0xf')];this['countmachineretry']=_0x4cb652[_0xf67f('0xe')];this['countagentrejectretry']=_0x4cb652['countagentrejectretry'];this[_0xf67f('0x10')]=_0x4fa36d['uniqueid'];this[_0xf67f('0x11')]=_0x4cb652[_0xf67f('0x12')];this[_0xf67f('0x13')]=_0x4cb652['number'];this['starttime']=_0x4cb652[_0xf67f('0x14')];this['responsetime']=_0x4cb652['responsetime'];this[_0xf67f('0x15')]=_0x4cb652[_0xf67f('0x15')];this['endtime']=moment()[_0xf67f('0x16')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xf67f('0x17')]=getSeconds(_0x4cb652[_0xf67f('0x18')],_0x4cb652[_0xf67f('0x14')]);this[_0xf67f('0x19')]=getSeconds(_0x4cb652['answertime'],_0x4cb652[_0xf67f('0x18')]);this[_0xf67f('0x1a')]=getSeconds(this[_0xf67f('0x1b')],_0x4cb652['answertime']);this['queue']=_0x4fa36d[_0xf67f('0x1c')];this[_0xf67f('0x1d')]=_0x4fa36d[_0xf67f('0x1d')];this[_0xf67f('0x1e')]=_0x4fa36d[_0xf67f('0x1e')];this[_0xf67f('0x1f')]=_0x4cb652[_0xf67f('0x1f')];this[_0xf67f('0x20')]=_0x4cb652['callbackuniqueid'];this[_0xf67f('0x21')]=_0x4cb652['callbackat'];this[_0xf67f('0x22')]=_0x4cb652[_0xf67f('0x22')];this['ContactId']=_0x4cb652[_0xf67f('0x23')];this[_0xf67f('0x24')]=_0x4cb652[_0xf67f('0x24')];this[_0xf67f('0x25')]=_0x4cb652['UserId'];this[_0xf67f('0x26')]=_0x4cb652[_0xf67f('0x26')];this[_0xf67f('0x27')]=_0x4cb652['CampaignId'];this[_0xf67f('0x28')]=_0x4cb652[_0xf67f('0x28')]||'';this['originatecalleridname']=_0x4cb652[_0xf67f('0x29')]||'';}module[_0xf67f('0x2a')]=AgentComplete;
\ No newline at end of file
+var _0x674a=['holdtime','talktime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','state','statedesc','scheduledat','type','campaigntype','queue','countcongestionretry','countnoanswerretry','countbusyretry','countnosuchnumberretry','countdropretry','countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name','number','starttime','responsetime','answertime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x674a,0x111));var _0xa674=function(_0x409723,_0x354a6d){_0x409723=_0x409723-0x0;var _0x4c62c1=_0x674a[_0x409723];return _0x4c62c1;};'use strict';var util=require(_0xa674('0x0'));var _=require('lodash');var moment=require(_0xa674('0x1'));function getSeconds(_0x1f86e3,_0x139276){var _0xad4cd4=moment(_0x1f86e3)[_0xa674('0x2')](0x0);var _0x1b306d=moment(_0x139276)[_0xa674('0x2')](0x0);return _0xad4cd4['diff'](_0x1b306d,'seconds');}function AgentComplete(_0x44cee7,_0x54a40a){this[_0xa674('0x3')]=0x4;this[_0xa674('0x4')]='Answer';this[_0xa674('0x5')]=_0x44cee7['scheduledat'];this[_0xa674('0x6')]=_0x44cee7[_0xa674('0x6')];this[_0xa674('0x7')]=_0x44cee7[_0xa674('0x6')]==='outbound'?_0xa674('0x8'):_0x44cee7['type'];this['countbusyretry']=_0x44cee7['countbusyretry'];this[_0xa674('0x9')]=_0x44cee7[_0xa674('0x9')];this[_0xa674('0xa')]=_0x44cee7['countnoanswerretry'];this['countglobal']=_0x44cee7[_0xa674('0xb')]+_0x44cee7[_0xa674('0x9')]+_0x44cee7[_0xa674('0xa')]+_0x44cee7[_0xa674('0xc')]+_0x44cee7[_0xa674('0xd')]+_0x44cee7['countabandonedretry']+_0x44cee7['countmachineretry']+_0x44cee7[_0xa674('0xe')];this['countnosuchnumberretry']=_0x44cee7[_0xa674('0xc')];this[_0xa674('0xd')]=_0x44cee7[_0xa674('0xd')];this[_0xa674('0xf')]=_0x44cee7['countabandonedretry'];this['countmachineretry']=_0x44cee7[_0xa674('0x10')];this[_0xa674('0xe')]=_0x44cee7[_0xa674('0xe')];this[_0xa674('0x11')]=_0x54a40a[_0xa674('0x11')];this[_0xa674('0x12')]=_0x44cee7[_0xa674('0x13')];this['calleridnum']=_0x44cee7[_0xa674('0x14')];this['starttime']=_0x44cee7[_0xa674('0x15')];this['responsetime']=_0x44cee7[_0xa674('0x16')];this[_0xa674('0x17')]=_0x44cee7[_0xa674('0x17')];this[_0xa674('0x18')]=moment()[_0xa674('0x19')](_0xa674('0x1a'));this[_0xa674('0x1b')]=getSeconds(_0x44cee7['responsetime'],_0x44cee7[_0xa674('0x15')]);this[_0xa674('0x1c')]=getSeconds(_0x44cee7[_0xa674('0x17')],_0x44cee7['responsetime']);this[_0xa674('0x1d')]=getSeconds(this[_0xa674('0x18')],_0x44cee7[_0xa674('0x17')]);this[_0xa674('0x8')]=_0x54a40a[_0xa674('0x8')];this['membername']=_0x54a40a[_0xa674('0x1e')];this[_0xa674('0x1f')]=_0x54a40a[_0xa674('0x1f')];this['callback']=_0x44cee7[_0xa674('0x20')];this[_0xa674('0x21')]=_0x44cee7[_0xa674('0x21')];this[_0xa674('0x22')]=_0x44cee7[_0xa674('0x22')];this[_0xa674('0x23')]=_0x44cee7[_0xa674('0x23')];this[_0xa674('0x24')]=_0x44cee7[_0xa674('0x24')];this['ListId']=_0x44cee7['ListId'];this[_0xa674('0x25')]=_0x44cee7[_0xa674('0x25')];this[_0xa674('0x26')]=_0x44cee7[_0xa674('0x26')];this[_0xa674('0x27')]=_0x44cee7['CampaignId'];this[_0xa674('0x28')]=_0x44cee7['originatecalleridnum']||'';this[_0xa674('0x29')]=_0x44cee7[_0xa674('0x29')]||'';}module[_0xa674('0x2a')]=AgentComplete;
\ No newline at end of file
index 0a0aa80..d3d6a89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd67b=['calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','lodash','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x38194c,_0x104256){var _0x5cbd10=function(_0x2afc8d){while(--_0x2afc8d){_0x38194c['push'](_0x38194c['shift']());}};_0x5cbd10(++_0x104256);}(_0xd67b,0x133));var _0xbd67=function(_0x1b7afa,_0x3d9f30){_0x1b7afa=_0x1b7afa-0x0;var _0x59c8f8=_0xd67b[_0x1b7afa];return _0x59c8f8;};'use strict';var util=require('util');var _=require(_0xbd67('0x0'));var moment=require('moment');function getSeconds(_0x1da24d,_0x280954){var _0x317e33=moment(_0x1da24d)['milliseconds'](0x0);var _0x40e384=moment(_0x280954)['milliseconds'](0x0);return _0x317e33[_0xbd67('0x1')](_0x40e384,'seconds');}function Final(_0x309962){this[_0xbd67('0x2')]=_0x309962[_0xbd67('0x2')];this[_0xbd67('0x3')]=_0x309962[_0xbd67('0x3')];this[_0xbd67('0x4')]=_0x309962[_0xbd67('0x4')];this[_0xbd67('0x5')]=_0x309962[_0xbd67('0x4')]===_0xbd67('0x6')?_0xbd67('0x7'):_0x309962[_0xbd67('0x4')];this[_0xbd67('0x8')]=_0x309962['countbusyretry'];this['countcongestionretry']=_0x309962[_0xbd67('0x9')];this['countnoanswerretry']=_0x309962[_0xbd67('0xa')];this[_0xbd67('0xb')]=_0x309962[_0xbd67('0x8')]+_0x309962[_0xbd67('0x9')]+_0x309962[_0xbd67('0xa')]+_0x309962[_0xbd67('0xc')]+_0x309962[_0xbd67('0xd')]+_0x309962[_0xbd67('0xe')]+_0x309962[_0xbd67('0xf')]+_0x309962[_0xbd67('0x10')];this['countnosuchnumberretry']=_0x309962[_0xbd67('0xc')];this[_0xbd67('0xd')]=_0x309962[_0xbd67('0xd')];this[_0xbd67('0xe')]=_0x309962[_0xbd67('0xe')];this[_0xbd67('0xf')]=_0x309962[_0xbd67('0xf')];this[_0xbd67('0x10')]=_0x309962[_0xbd67('0x10')];this[_0xbd67('0x7')]=_0x309962['queue'];this['calleridname']=_0x309962[_0xbd67('0x11')];this[_0xbd67('0x12')]=_0x309962[_0xbd67('0x12')];this['starttime']=_0x309962[_0xbd67('0x13')];this[_0xbd67('0x14')]=_0x309962[_0xbd67('0x14')];this['endtime']=_0x309962[_0xbd67('0x14')];this['ringtime']=_0x309962[_0xbd67('0x15')]||0x0;this[_0xbd67('0x16')]=_0x309962[_0xbd67('0x16')]||0x0;this['talktime']=_0x309962[_0xbd67('0x17')]||0x0;this[_0xbd67('0x18')]=_0x309962[_0xbd67('0x18')];this[_0xbd67('0x19')]=_0x309962[_0xbd67('0x19')];this[_0xbd67('0x1a')]=_0x309962['callbackat'];this[_0xbd67('0x1b')]=_0x309962[_0xbd67('0x1b')];this[_0xbd67('0x1c')]=_0x309962[_0xbd67('0x1c')];this[_0xbd67('0x1d')]=_0x309962[_0xbd67('0x1d')];this[_0xbd67('0x1e')]=_0x309962[_0xbd67('0x1e')];this[_0xbd67('0x1f')]=_0x309962[_0xbd67('0x1f')];this[_0xbd67('0x20')]=_0x309962['CampaignId'];this[_0xbd67('0x21')]=_0x309962['originatecalleridnum']||'';this[_0xbd67('0x22')]=_0x309962[_0xbd67('0x22')]||'';}module[_0xbd67('0x23')]=Final;
\ No newline at end of file
+var _0xa41a=['ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','util','lodash','milliseconds','diff','seconds','uniqueid','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callbackuniqueid','callbackat','recallme','ContactId'];(function(_0x5881b8,_0x2878ec){var _0xf69526=function(_0x1740a3){while(--_0x1740a3){_0x5881b8['push'](_0x5881b8['shift']());}};_0xf69526(++_0x2878ec);}(_0xa41a,0x6b));var _0xaa41=function(_0xac3187,_0x13735b){_0xac3187=_0xac3187-0x0;var _0x760809=_0xa41a[_0xac3187];return _0x760809;};'use strict';var util=require(_0xaa41('0x0'));var _=require(_0xaa41('0x1'));var moment=require('moment');function getSeconds(_0x1612c4,_0x2a96ba){var _0x43654a=moment(_0x1612c4)[_0xaa41('0x2')](0x0);var _0x37c7a1=moment(_0x2a96ba)[_0xaa41('0x2')](0x0);return _0x43654a[_0xaa41('0x3')](_0x37c7a1,_0xaa41('0x4'));}function Final(_0x5dad7c){this[_0xaa41('0x5')]=_0x5dad7c[_0xaa41('0x5')];this['scheduledat']=_0x5dad7c['scheduledat'];this[_0xaa41('0x6')]=_0x5dad7c[_0xaa41('0x6')];this['campaigntype']=_0x5dad7c[_0xaa41('0x6')]===_0xaa41('0x7')?_0xaa41('0x8'):_0x5dad7c[_0xaa41('0x6')];this[_0xaa41('0x9')]=_0x5dad7c[_0xaa41('0x9')];this[_0xaa41('0xa')]=_0x5dad7c[_0xaa41('0xa')];this[_0xaa41('0xb')]=_0x5dad7c['countnoanswerretry'];this[_0xaa41('0xc')]=_0x5dad7c[_0xaa41('0x9')]+_0x5dad7c['countcongestionretry']+_0x5dad7c['countnoanswerretry']+_0x5dad7c[_0xaa41('0xd')]+_0x5dad7c['countdropretry']+_0x5dad7c[_0xaa41('0xe')]+_0x5dad7c[_0xaa41('0xf')]+_0x5dad7c[_0xaa41('0x10')];this[_0xaa41('0xd')]=_0x5dad7c[_0xaa41('0xd')];this['countdropretry']=_0x5dad7c[_0xaa41('0x11')];this[_0xaa41('0xe')]=_0x5dad7c[_0xaa41('0xe')];this[_0xaa41('0xf')]=_0x5dad7c[_0xaa41('0xf')];this[_0xaa41('0x10')]=_0x5dad7c[_0xaa41('0x10')];this['queue']=_0x5dad7c[_0xaa41('0x8')];this[_0xaa41('0x12')]=_0x5dad7c[_0xaa41('0x12')];this[_0xaa41('0x13')]=_0x5dad7c[_0xaa41('0x13')];this[_0xaa41('0x14')]=_0x5dad7c[_0xaa41('0x14')];this[_0xaa41('0x15')]=_0x5dad7c[_0xaa41('0x15')];this['endtime']=_0x5dad7c['responsetime'];this[_0xaa41('0x16')]=_0x5dad7c[_0xaa41('0x16')]||0x0;this[_0xaa41('0x17')]=_0x5dad7c['holdtime']||0x0;this[_0xaa41('0x18')]=_0x5dad7c[_0xaa41('0x18')]||0x0;this['callback']=_0x5dad7c['callback'];this[_0xaa41('0x19')]=_0x5dad7c['callbackuniqueid'];this[_0xaa41('0x1a')]=_0x5dad7c[_0xaa41('0x1a')];this[_0xaa41('0x1b')]=_0x5dad7c[_0xaa41('0x1b')];this[_0xaa41('0x1c')]=_0x5dad7c['ContactId'];this[_0xaa41('0x1d')]=_0x5dad7c[_0xaa41('0x1d')];this[_0xaa41('0x1e')]=_0x5dad7c[_0xaa41('0x1e')];this[_0xaa41('0x1f')]=_0x5dad7c[_0xaa41('0x1f')];this['CampaignId']=_0x5dad7c['CampaignId'];this[_0xaa41('0x20')]=_0x5dad7c['originatecalleridnum']||'';this['originatecalleridname']=_0x5dad7c[_0xaa41('0x21')]||'';}module['exports']=Final;
\ No newline at end of file
index 229a37a..f56d01b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb788=['countmachineretry','countagentrejectretry','countnosuchnumberretry','uniqueid','calleridname','calleridnum','number','starttime','responsetime','endtime','format','ringtime','holdtime','talktime','membername','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','CampaignId','exports','util','milliseconds','seconds','state','Answer','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countabandonedretry'];(function(_0x376b45,_0x5964fb){var _0x2341b3=function(_0x5a7f01){while(--_0x5a7f01){_0x376b45['push'](_0x376b45['shift']());}};_0x2341b3(++_0x5964fb);}(_0xb788,0x1a9));var _0x8b78=function(_0x27250c,_0x3e6637){_0x27250c=_0x27250c-0x0;var _0x7e3095=_0xb788[_0x27250c];return _0x7e3095;};'use strict';var util=require(_0x8b78('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x10214a,_0xc66f40){var _0x5ea990=moment(_0x10214a)[_0x8b78('0x1')](0x0);var _0x206d3d=moment(_0xc66f40)[_0x8b78('0x1')](0x0);return _0x5ea990['diff'](_0x206d3d,_0x8b78('0x2'));}function Hangup(_0x15ae54,_0x1c15f1){this[_0x8b78('0x3')]=0x4;this['statedesc']=_0x8b78('0x4');this[_0x8b78('0x5')]=_0x15ae54[_0x8b78('0x5')];this[_0x8b78('0x6')]=_0x15ae54['type'];this[_0x8b78('0x7')]=_0x15ae54[_0x8b78('0x6')]==='outbound'?_0x8b78('0x8'):_0x15ae54[_0x8b78('0x6')];this[_0x8b78('0x9')]=_0x15ae54[_0x8b78('0x9')];this[_0x8b78('0xa')]=_0x15ae54[_0x8b78('0xa')];this['countnoanswerretry']=_0x15ae54[_0x8b78('0xb')];this[_0x8b78('0xc')]=_0x15ae54[_0x8b78('0x9')]+_0x15ae54[_0x8b78('0xa')]+_0x15ae54[_0x8b78('0xb')]+_0x15ae54['countnosuchnumberretry']+_0x15ae54[_0x8b78('0xd')]+_0x15ae54[_0x8b78('0xe')]+_0x15ae54[_0x8b78('0xf')]+_0x15ae54[_0x8b78('0x10')];this[_0x8b78('0x11')]=_0x15ae54[_0x8b78('0x11')];this[_0x8b78('0xd')]=_0x15ae54[_0x8b78('0xd')];this[_0x8b78('0xe')]=_0x15ae54[_0x8b78('0xe')];this[_0x8b78('0xf')]=_0x15ae54[_0x8b78('0xf')];this[_0x8b78('0x10')]=_0x15ae54[_0x8b78('0x10')];this[_0x8b78('0x12')]=_0x1c15f1[_0x8b78('0x12')];this[_0x8b78('0x13')]=_0x15ae54['name'];this[_0x8b78('0x14')]=_0x15ae54[_0x8b78('0x15')];this['starttime']=_0x15ae54[_0x8b78('0x16')];this[_0x8b78('0x17')]=_0x15ae54[_0x8b78('0x17')];this[_0x8b78('0x18')]=moment()[_0x8b78('0x19')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x8b78('0x1a')]=getSeconds(_0x15ae54['responsetime'],_0x15ae54[_0x8b78('0x16')]);this[_0x8b78('0x1b')]=0x0;this[_0x8b78('0x1c')]=getSeconds(this[_0x8b78('0x18')],_0x15ae54[_0x8b78('0x17')]);this[_0x8b78('0x8')]=_0x15ae54[_0x8b78('0x8')];this[_0x8b78('0x1d')]='IVR';this['reason']=_0x1c15f1[_0x8b78('0x1e')];this[_0x8b78('0x1f')]=_0x15ae54[_0x8b78('0x1f')];this[_0x8b78('0x20')]=_0x15ae54[_0x8b78('0x20')];this[_0x8b78('0x21')]=_0x15ae54[_0x8b78('0x21')];this[_0x8b78('0x22')]=_0x15ae54[_0x8b78('0x22')];this[_0x8b78('0x23')]=_0x15ae54[_0x8b78('0x23')];this[_0x8b78('0x24')]=_0x15ae54['ListId'];this[_0x8b78('0x25')]=_0x15ae54[_0x8b78('0x25')];this['VoiceQueueId']=_0x15ae54['VoiceQueueId'];this[_0x8b78('0x26')]=_0x15ae54[_0x8b78('0x26')];}module[_0x8b78('0x27')]=Hangup;
\ No newline at end of file
+var _0x338b=['countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','endtime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','membername','IVR','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','campaigntype','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal'];(function(_0x597722,_0x205dc4){var _0x1d096b=function(_0x3a6834){while(--_0x3a6834){_0x597722['push'](_0x597722['shift']());}};_0x1d096b(++_0x205dc4);}(_0x338b,0xab));var _0xb338=function(_0x16db8a,_0x2a34e1){_0x16db8a=_0x16db8a-0x0;var _0x126cae=_0x338b[_0x16db8a];return _0x126cae;};'use strict';var util=require('util');var _=require(_0xb338('0x0'));var moment=require(_0xb338('0x1'));function getSeconds(_0xd22759,_0x362ac5){var _0x4759a4=moment(_0xd22759)[_0xb338('0x2')](0x0);var _0x5197aa=moment(_0x362ac5)[_0xb338('0x2')](0x0);return _0x4759a4[_0xb338('0x3')](_0x5197aa,_0xb338('0x4'));}function Hangup(_0x30929e,_0x56e7c7){this[_0xb338('0x5')]=0x4;this[_0xb338('0x6')]=_0xb338('0x7');this[_0xb338('0x8')]=_0x30929e[_0xb338('0x8')];this['type']=_0x30929e['type'];this[_0xb338('0x9')]=_0x30929e[_0xb338('0xa')]===_0xb338('0xb')?_0xb338('0xc'):_0x30929e['type'];this[_0xb338('0xd')]=_0x30929e[_0xb338('0xd')];this['countcongestionretry']=_0x30929e[_0xb338('0xe')];this[_0xb338('0xf')]=_0x30929e[_0xb338('0xf')];this[_0xb338('0x10')]=_0x30929e[_0xb338('0xd')]+_0x30929e['countcongestionretry']+_0x30929e[_0xb338('0xf')]+_0x30929e[_0xb338('0x11')]+_0x30929e[_0xb338('0x12')]+_0x30929e[_0xb338('0x13')]+_0x30929e[_0xb338('0x14')]+_0x30929e[_0xb338('0x15')];this['countnosuchnumberretry']=_0x30929e[_0xb338('0x11')];this[_0xb338('0x12')]=_0x30929e[_0xb338('0x12')];this[_0xb338('0x13')]=_0x30929e['countabandonedretry'];this[_0xb338('0x14')]=_0x30929e[_0xb338('0x14')];this[_0xb338('0x15')]=_0x30929e['countagentrejectretry'];this['uniqueid']=_0x56e7c7[_0xb338('0x16')];this[_0xb338('0x17')]=_0x30929e[_0xb338('0x18')];this[_0xb338('0x19')]=_0x30929e[_0xb338('0x1a')];this[_0xb338('0x1b')]=_0x30929e[_0xb338('0x1b')];this[_0xb338('0x1c')]=_0x30929e[_0xb338('0x1c')];this[_0xb338('0x1d')]=moment()[_0xb338('0x1e')](_0xb338('0x1f'));this[_0xb338('0x20')]=getSeconds(_0x30929e['responsetime'],_0x30929e['starttime']);this[_0xb338('0x21')]=0x0;this[_0xb338('0x22')]=getSeconds(this[_0xb338('0x1d')],_0x30929e['responsetime']);this[_0xb338('0xc')]=_0x30929e[_0xb338('0xc')];this[_0xb338('0x23')]=_0xb338('0x24');this[_0xb338('0x25')]=_0x56e7c7['cause-txt'];this[_0xb338('0x26')]=_0x30929e[_0xb338('0x26')];this['callbackuniqueid']=_0x30929e[_0xb338('0x27')];this[_0xb338('0x28')]=_0x30929e[_0xb338('0x28')];this[_0xb338('0x29')]=_0x30929e[_0xb338('0x29')];this[_0xb338('0x2a')]=_0x30929e[_0xb338('0x2a')];this['ListId']=_0x30929e[_0xb338('0x2b')];this[_0xb338('0x2c')]=_0x30929e[_0xb338('0x2c')];this['VoiceQueueId']=_0x30929e[_0xb338('0x2d')];this[_0xb338('0x2e')]=_0x30929e[_0xb338('0x2e')];}module['exports']=Hangup;
\ No newline at end of file
index 1546bd9..cb3ed30 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb59b=['callbackuniqueid','callbackat','recallme','ContactId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','moment','milliseconds','diff','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','countmachineretry','calleridname','calleridnum','number','starttime','endtime','holdtime','talktime','callback'];(function(_0x362975,_0x3c6118){var _0x1d0972=function(_0x3b022c){while(--_0x3b022c){_0x362975['push'](_0x362975['shift']());}};_0x1d0972(++_0x3c6118);}(_0xb59b,0xbd));var _0xbb59=function(_0x156f6c,_0x3b8b49){_0x156f6c=_0x156f6c-0x0;var _0x4dc7e9=_0xb59b[_0x156f6c];return _0x4dc7e9;};'use strict';var util=require(_0xbb59('0x0'));var _=require('lodash');var moment=require(_0xbb59('0x1'));function getSeconds(_0x5089b6,_0x35dc7b){var _0x4ee44a=moment(_0x5089b6)[_0xbb59('0x2')](0x0);var _0x5a8a8a=moment(_0x35dc7b)[_0xbb59('0x2')](0x0);return _0x4ee44a[_0xbb59('0x3')](_0x5a8a8a,_0xbb59('0x4'));}function History(_0x4531a4){this[_0xbb59('0x5')]=_0x4531a4[_0xbb59('0x5')];this['scheduledat']=_0x4531a4[_0xbb59('0x6')]||undefined;this[_0xbb59('0x7')]=_0x4531a4[_0xbb59('0x7')];this[_0xbb59('0x8')]=_0x4531a4[_0xbb59('0x7')]===_0xbb59('0x9')?_0xbb59('0xa'):_0x4531a4[_0xbb59('0x7')];this[_0xbb59('0xb')]=_0x4531a4[_0xbb59('0xb')];this[_0xbb59('0xc')]=_0x4531a4['countcongestionretry'];this[_0xbb59('0xd')]=_0x4531a4[_0xbb59('0xd')];this['countglobal']=_0x4531a4[_0xbb59('0xb')]+_0x4531a4[_0xbb59('0xc')]+_0x4531a4[_0xbb59('0xd')]+_0x4531a4[_0xbb59('0xe')]+_0x4531a4[_0xbb59('0xf')]+_0x4531a4[_0xbb59('0x10')]+_0x4531a4['countmachineretry']+_0x4531a4[_0xbb59('0x11')];this[_0xbb59('0xe')]=_0x4531a4[_0xbb59('0xe')];this[_0xbb59('0xf')]=_0x4531a4[_0xbb59('0xf')];this[_0xbb59('0x10')]=_0x4531a4['countabandonedretry'];this[_0xbb59('0x12')]=_0x4531a4[_0xbb59('0x12')];this[_0xbb59('0x11')]=_0x4531a4[_0xbb59('0x11')];this[_0xbb59('0xa')]=_0x4531a4[_0xbb59('0xa')];this[_0xbb59('0x13')]=_0x4531a4['name'];this[_0xbb59('0x14')]=_0x4531a4[_0xbb59('0x15')];this['starttime']=_0x4531a4[_0xbb59('0x16')];this['responsetime']=_0x4531a4['responsetime'];this[_0xbb59('0x17')]=_0x4531a4['responsetime'];this['ringtime']=getSeconds(_0x4531a4['responsetime'],_0x4531a4[_0xbb59('0x16')]);this[_0xbb59('0x18')]=0x0;this[_0xbb59('0x19')]=0x0;this[_0xbb59('0x1a')]=_0x4531a4[_0xbb59('0x1a')];this[_0xbb59('0x1b')]=_0x4531a4[_0xbb59('0x1b')];this[_0xbb59('0x1c')]=_0x4531a4['callbackat'];this[_0xbb59('0x1d')]=_0x4531a4[_0xbb59('0x1d')];this['ContactId']=_0x4531a4[_0xbb59('0x1e')];this['ListId']=_0x4531a4['ListId'];this[_0xbb59('0x1f')]=_0x4531a4[_0xbb59('0x1f')];this[_0xbb59('0x20')]=_0x4531a4[_0xbb59('0x20')];this['CampaignId']=_0x4531a4[_0xbb59('0x21')];this['originatecalleridnum']=_0x4531a4[_0xbb59('0x22')]||'';this[_0xbb59('0x23')]=_0x4531a4[_0xbb59('0x23')]||'';}module['exports']=History;
\ No newline at end of file
+var _0xdd7f=['UserId','VoiceQueueId','CampaignId','originatecalleridnum','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','name','calleridnum','starttime','responsetime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId'];(function(_0x107d8c,_0x25dc05){var _0x41811d=function(_0x2d00a3){while(--_0x2d00a3){_0x107d8c['push'](_0x107d8c['shift']());}};_0x41811d(++_0x25dc05);}(_0xdd7f,0x134));var _0xfdd7=function(_0x3ccf3f,_0x203b39){_0x3ccf3f=_0x3ccf3f-0x0;var _0x4d7caa=_0xdd7f[_0x3ccf3f];return _0x4d7caa;};'use strict';var util=require(_0xfdd7('0x0'));var _=require(_0xfdd7('0x1'));var moment=require(_0xfdd7('0x2'));function getSeconds(_0x24fea1,_0x2113d8){var _0x3a6ece=moment(_0x24fea1)[_0xfdd7('0x3')](0x0);var _0x4bc4fc=moment(_0x2113d8)[_0xfdd7('0x3')](0x0);return _0x3a6ece['diff'](_0x4bc4fc,_0xfdd7('0x4'));}function History(_0x403c60){this[_0xfdd7('0x5')]=_0x403c60[_0xfdd7('0x5')];this[_0xfdd7('0x6')]=_0x403c60[_0xfdd7('0x6')]||undefined;this[_0xfdd7('0x7')]=_0x403c60[_0xfdd7('0x7')];this[_0xfdd7('0x8')]=_0x403c60[_0xfdd7('0x7')]===_0xfdd7('0x9')?_0xfdd7('0xa'):_0x403c60[_0xfdd7('0x7')];this['countbusyretry']=_0x403c60[_0xfdd7('0xb')];this[_0xfdd7('0xc')]=_0x403c60[_0xfdd7('0xc')];this[_0xfdd7('0xd')]=_0x403c60['countnoanswerretry'];this[_0xfdd7('0xe')]=_0x403c60[_0xfdd7('0xb')]+_0x403c60['countcongestionretry']+_0x403c60['countnoanswerretry']+_0x403c60[_0xfdd7('0xf')]+_0x403c60['countdropretry']+_0x403c60[_0xfdd7('0x10')]+_0x403c60[_0xfdd7('0x11')]+_0x403c60[_0xfdd7('0x12')];this['countnosuchnumberretry']=_0x403c60[_0xfdd7('0xf')];this[_0xfdd7('0x13')]=_0x403c60['countdropretry'];this['countabandonedretry']=_0x403c60[_0xfdd7('0x10')];this[_0xfdd7('0x11')]=_0x403c60[_0xfdd7('0x11')];this[_0xfdd7('0x12')]=_0x403c60[_0xfdd7('0x12')];this[_0xfdd7('0xa')]=_0x403c60[_0xfdd7('0xa')];this[_0xfdd7('0x14')]=_0x403c60[_0xfdd7('0x15')];this[_0xfdd7('0x16')]=_0x403c60['number'];this[_0xfdd7('0x17')]=_0x403c60[_0xfdd7('0x17')];this[_0xfdd7('0x18')]=_0x403c60[_0xfdd7('0x18')];this['endtime']=_0x403c60['responsetime'];this[_0xfdd7('0x19')]=getSeconds(_0x403c60[_0xfdd7('0x18')],_0x403c60[_0xfdd7('0x17')]);this[_0xfdd7('0x1a')]=0x0;this[_0xfdd7('0x1b')]=0x0;this[_0xfdd7('0x1c')]=_0x403c60[_0xfdd7('0x1c')];this[_0xfdd7('0x1d')]=_0x403c60[_0xfdd7('0x1d')];this['callbackat']=_0x403c60[_0xfdd7('0x1e')];this[_0xfdd7('0x1f')]=_0x403c60['recallme'];this['ContactId']=_0x403c60[_0xfdd7('0x20')];this['ListId']=_0x403c60[_0xfdd7('0x21')];this[_0xfdd7('0x22')]=_0x403c60['UserId'];this[_0xfdd7('0x23')]=_0x403c60[_0xfdd7('0x23')];this['CampaignId']=_0x403c60[_0xfdd7('0x24')];this[_0xfdd7('0x25')]=_0x403c60[_0xfdd7('0x25')]||'';this['originatecalleridname']=_0x403c60['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index 4272785..f8ebd8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02bc=['[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','notFound','saveInDb','pick','ContactId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','reachable','unmonitored','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','value','HANGUP','HangupInAMD','membername','AMD','emit','custom:amd','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','Machine','countmachineretry','buildObj','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countagentrejectretry','stateGlobal','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ListId','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','dialGlobalMaxRetry','reason19\x20machine....','[rescheduleContact][Machine]','syncHangup','[syncHangupIvr]','dialQueueProject','AGI','[syncHangupIvr][createHistory]','cause-txt','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','syncAgentConnect','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','syncQueueCallerAbandon','droptime','responsetime','dialQueueTimeout','outboundDropCallsDayTimeout','predictiveIntervalErlangCallsDroppedCalls','Drop','TIMEOUT','agiafterat','dialDropRetryFrequency','callAdditionalPhoneAfterMin','verifyAdditionalPhones','voiceQueue','additional','dialDropMaxRetry','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','countglobal','dialAbandonedRetryFrequency','[rescheduleContact][Abandoned]','syncNewExten','actionid','locked','stateinterface','paused','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','queueBookedRR','_rr','unlockRR','[booked][RR]','Agent:\x20','contactAgent-idHopper:\x20','[booked][unlock]','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[unlock3][syncQueueStatusComplete]','syncCampaigns','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','ifTime','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','Failure','timezones','\x20Timezone\x20unknow\x20','command','iftime\x20%s,%s','content','indexOf','true','push','all','some','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','Global:\x20','Timezone:\x20','progressive','handlePower','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:%s','handleIvr','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','throttle','filter','dialPreviewRecallmeReminder','online','map','checkIfTime','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','match','actionOriginate','object','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialer','dialAMDActive','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDGREETING','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDSilenceThreshold','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','trim','dialCutDigit','SIP/%s/%s%s','outboundOriginateFailureCallsDay','OriginateError','[originate][error]','syncOriginateResponse','response','callProgressDetecting','dialNoAnswerMaxRetry','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAbandonedMaxRetry','dialAgentRejectMaxRetry','[rescheduleContact][AgentReject]','[callProgressDetecting]','evt\x20is\x20undefine','NoSuchNumber','nosuchnumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','buildNoAnswerEventPayload','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','[moveContactManagedDialer][0]','dialPredictiveOptimizationPercentage','round','predictiveIntervalAvailable','predictiveIntervalMinThreshold','floor','predictiveIntervalHitRate','[startMethodPredictive][StartProgressive]','handlePredictive','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','getDataPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','startMethodPredictive','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','busyFactor','[CatchErlangB]','check\x20failure','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','recallme','[booked][checkContactBlack]','queuestatus','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','dialRecallMeTimeout','voicePause','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','limitCalls','AVAILABLE_CONTACTS_FINISHED','[getContactCampaign2][Empty]','RUNNING','ivrTotalCallsDays','emptyContact','[actionOriginate]\x20','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','not_inuse','dialOrderByScheduledAt','ACTIVE','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','m\x20=\x20','Ts\x20=\x20','p\x20=\x20','Amax\x20=\x20','Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','exports','util','lodash','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','predictiveCalls','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/voiceQueueRt','./action','./history','./final','./agentComplete','./queueCallerAbandon','rrmemory','roundrobin','prototype','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startProgressive','ivrOriginated','queueBooked','agentconnect','queuecallerabandon','bind','agentcomplete','syncAgentComplete','syncQueueSummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','newexten','varset','syncVarSet','syncQueueMember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','then','previewRecallmeReminderInterval','isUndefined','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','Error','stringify','milliseconds','diff','seconds','type','outbound','strategy','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalTotalCalls','originated','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','Trunk','active','callerid','format','voice:queue:%s','voice_queue:save','ivr','campaign:ivr:%s','-----\x20Stats\x20Predictive\x20---','info','Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','---------\x20ErlangB\x20---------','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangCalls','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','merge','clearing\x20variable\x20start\x20predictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','waiting','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','state','statedesc','endtime','starttime','uniqueId','[uniqueid]','clearZombieChannels','undefined','isNil','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','[countReScheduled]\x20','checkIsBlackList','resolve','swapAdditionalPhones','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','[averageHandleTime]\x20','rescheduleContact','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer'];(function(_0x4ebb24,_0x1ddcc2){var _0x471a71=function(_0x5c84cc){while(--_0x5c84cc){_0x4ebb24['push'](_0x4ebb24['shift']());}};_0x471a71(++_0x1ddcc2);}(_0x02bc,0x15e));var _0xc02b=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x02bc[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0xc02b('0x0'));var _=require(_0xc02b('0x1'));var uuid=require(_0xc02b('0x2'));var moment=require(_0xc02b('0x3'));var rr=require('rr');var md5=require(_0xc02b('0x4'));var Redis=require(_0xc02b('0x5'));var ut=require(_0xc02b('0x6'));var config=require(_0xc02b('0x7'));var logger=require(_0xc02b('0x8'))('dialer');var loggerBooked=require('../../../config/logger')(_0xc02b('0x9'));var loggerPredictive=require(_0xc02b('0x8'))(_0xc02b('0xa'));var loggerPredictiveCalls=require(_0xc02b('0x8'))(_0xc02b('0xb'));var loggerSyncQueueSummary=require('../../../config/logger')('syncQueueSummary');var ami=require(_0xc02b('0xc'));config[_0xc02b('0xd')]=_[_0xc02b('0xe')](config[_0xc02b('0xd')],{'host':_0xc02b('0xf'),'port':0x18eb});var io=require(_0xc02b('0x10'))(new Redis(config[_0xc02b('0xd')]));var cmHopper=require(_0xc02b('0x11'));var cmHopperHistory=require(_0xc02b('0x12'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xc02b('0x13'));var RpcSetting=require('../rpc/setting');var Action=require(_0xc02b('0x14'));var History=require(_0xc02b('0x15'));var Final=require(_0xc02b('0x16'));var AgentComplete=require(_0xc02b('0x17'));var QueueCallerAbandon=require(_0xc02b('0x18'));var Hangup=require('./hangup');var ipAgi=process['env']['XCALLY_IP_AGI']||'127.0.0.1';var strategy={'rrmemory':_0xc02b('0x19'),'roundrobin':_0xc02b('0x1a')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xc02b('0x1b')][_0xc02b('0x1c')]=function(_0x4e74ec){this[_0xc02b('0x1d')]=this['tail']?this['tail'][_0xc02b('0x1e')](_0x4e74ec):_0x4e74ec();};function Dialer(_0x1620f7,_0x70c4f6){this[_0xc02b('0x1f')]=new Sequence();this[_0xc02b('0x20')]=_0x70c4f6;this[_0xc02b('0x21')]=_0x1620f7[_0xc02b('0x21')];this[_0xc02b('0x22')]=_0x1620f7[_0xc02b('0x22')];this[_0xc02b('0x23')]=_0x1620f7[_0xc02b('0x23')];this[_0xc02b('0x24')]=_0x1620f7['trunks'];this['maxNumberOriginate']=config[_0xc02b('0x25')]||0x2;this[_0xc02b('0x26')]={};this[_0xc02b('0x27')]={};this[_0xc02b('0x28')]={};this['uniqueId']={};this[_0xc02b('0x29')]={};this['startPredictive']={};this[_0xc02b('0x2a')]={};this[_0xc02b('0x2b')]={};this[_0xc02b('0x2c')]={};this['queueBookedRR']={};ami['on'](_0xc02b('0x2d'),this['syncAgentConnect']['bind'](this));ami['on'](_0xc02b('0x2e'),this['syncQueueCallerAbandon']['bind'](this));ami['on']('originateresponse',this['syncOriginateResponse'][_0xc02b('0x2f')](this));ami['on'](_0xc02b('0x30'),this[_0xc02b('0x31')][_0xc02b('0x2f')](this));ami['on']('custom:queuesummary',this[_0xc02b('0x32')][_0xc02b('0x2f')](this));ami['on'](_0xc02b('0x33'),this[_0xc02b('0x34')]['bind'](this));ami['on'](_0xc02b('0x35'),this['syncHangup'][_0xc02b('0x2f')](this));ami['on'](_0xc02b('0x36'),this['syncNewExten'][_0xc02b('0x2f')](this));ami['on'](_0xc02b('0x37'),this[_0xc02b('0x38')][_0xc02b('0x2f')](this));ami['on']('queuemember',this[_0xc02b('0x39')][_0xc02b('0x2f')](this));ami['on'](_0xc02b('0x3a'),this[_0xc02b('0x3b')][_0xc02b('0x2f')](this));this[_0xc02b('0x3c')]();this[_0xc02b('0x3d')]();RpcSetting[_0xc02b('0x3e')]()[_0xc02b('0x3f')](function(_0x2e8f8a){previewRecallmeReminderInterval=_0x2e8f8a[_0xc02b('0x40')];});}function isNotNull(_0x3f8fe5){return _0x3f8fe5!==null&&!_[_0xc02b('0x41')](_0x3f8fe5);}function checkIsLoggedIn(_0x2cd48a,_0x41f6d8){return function(){if(_0x41f6d8<=0x0){_0x2cd48a[_0xc02b('0x42')]=_0xc02b('0x43');throw _0x2cd48a[_0xc02b('0x44')]+_0xc02b('0x45');}};}function isActive(_0x56ad0b){return _0x56ad0b;}function checkIsActive(_0xd8357a,_0x466a26){return function(){if(!isActive(_0x466a26)){_0xd8357a['message']=_0xc02b('0x46');throw _0xd8357a['name']+'\x20NOT\x20Active';}};}function checkInterval(_0x122ced){return function(){if(!isNotNull(_0x122ced[_0xc02b('0x47')])){_0x122ced['message']=_0xc02b('0x48');throw _0x122ced[_0xc02b('0x44')]+_0xc02b('0x49');}if(!isNotNull(_0x122ced[_0xc02b('0x47')][_0xc02b('0x4a')])){_0x122ced[_0xc02b('0x42')]=_0xc02b('0x48');throw _0x122ced[_0xc02b('0x44')]+_0xc02b('0x49');}if(!isNotNull(_[_0xc02b('0x4b')](_0x122ced[_0xc02b('0x47')][_0xc02b('0x4a')]))){_0x122ced[_0xc02b('0x42')]=_0xc02b('0x48');throw _0x122ced[_0xc02b('0x44')]+_0xc02b('0x49');}};}function msgResponse(_0xc98f07,_0x29c00e,_0x93414f){return{'action':_0xc98f07,'response':_0x29c00e,'message':_0x93414f,'stack':_0x93414f};}function myreject(_0x1f0a8c){return function(_0x4329d9){return _0x1f0a8c(msgResponse(_0xc02b('0x4c'),_0xc02b('0x4d'),JSON[_0xc02b('0x4e')](_0x4329d9)));};}function getSeconds(_0x1a428f,_0x4550be){var _0x496c6f=moment(_0x1a428f)[_0xc02b('0x4f')](0x0);var _0x3e5cdf=moment(_0x4550be)[_0xc02b('0x4f')](0x0);return _0x496c6f[_0xc02b('0x50')](_0x3e5cdf,_0xc02b('0x51'));}function emit(_0x314454,_0x2c1e98,_0x2c6dc2){io['to'](_0x314454)['emit'](_0x2c1e98,_0x2c6dc2);}function emitVoiceQueueSummary(_0x71f99a){if(_0x71f99a[_0xc02b('0x52')]===_0xc02b('0x53')){var _0x16c5e0={'id':_0x71f99a['id'],'name':_0x71f99a[_0xc02b('0x44')],'strategy':_0x71f99a[_0xc02b('0x54')],'answered':_0x71f99a[_0xc02b('0x55')],'available':_0x71f99a[_0xc02b('0x56')],'loggedIn':_0x71f99a[_0xc02b('0x57')],'pTalking':_0x71f99a[_0xc02b('0x58')],'sumBillable':_0x71f99a[_0xc02b('0x59')],'sumDuration':_0x71f99a[_0xc02b('0x5a')],'sumHoldTime':_0x71f99a[_0xc02b('0x5b')]||0x0,'talking':_0x71f99a[_0xc02b('0x5c')],'total':_0x71f99a[_0xc02b('0x5d')],'type':_0x71f99a['type'],'unmanaged':_0x71f99a['unmanaged'],'abandoned':_0x71f99a[_0xc02b('0x5e')],'waiting':_0x71f99a['waiting'],'loggedInDb':_0x71f99a[_0xc02b('0x5f')],'dialActive':_0x71f99a[_0xc02b('0x60')],'dialMethod':_0x71f99a[_0xc02b('0x61')],'dialOriginateCallerIdName':_0x71f99a[_0xc02b('0x62')],'dialOriginateCallerIdNumber':_0x71f99a[_0xc02b('0x63')],'dialOriginateTimeout':_0x71f99a[_0xc02b('0x64')],'dialPrefix':_0x71f99a[_0xc02b('0x65')],'outboundAnswerAgiCallsDay':_0x71f99a[_0xc02b('0x66')],'outboundAnswerCallsDay':_0x71f99a[_0xc02b('0x67')],'outboundBlacklistCallsDay':_0x71f99a[_0xc02b('0x68')],'outboundBusyCallsDay':_0x71f99a['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x71f99a[_0xc02b('0x69')],'outboundDropCallsDayACS':_0x71f99a[_0xc02b('0x6a')],'outboundDropCallsDayCallersExit':_0x71f99a[_0xc02b('0x6b')],'outboundDropCallsDayTimeout':_0x71f99a['outboundDropCallsDayTimeout'],'outboundNoAnswerCallsDay':_0x71f99a['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x71f99a['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x71f99a['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x71f99a[_0xc02b('0x6c')],'outboundRejectCallsDay':_0x71f99a[_0xc02b('0x6d')],'outboundUnknownCallsDay':_0x71f99a[_0xc02b('0x6e')],'predictiveIntervalAnsweredCalls':_0x71f99a[_0xc02b('0x6f')],'predictiveIntervalAvgHoldtime':_0x71f99a[_0xc02b('0x70')],'predictiveIntervalAvgTalktime':_0x71f99a[_0xc02b('0x71')],'predictiveIntervalDroppedCallsCallersExit':_0x71f99a[_0xc02b('0x72')],'predictiveIntervalDroppedCallsTimeout':_0x71f99a[_0xc02b('0x73')],'predictiveIntervalErlangCalls':_0x71f99a[_0xc02b('0x74')],'predictiveIntervalErlangCallsDroppedCalls':_0x71f99a['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x71f99a['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x71f99a[_0xc02b('0x75')],'predictiveIntervalPauses':_0x71f99a[_0xc02b('0x76')],'predictiveIntervalAvailable':_0x71f99a['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x71f99a[_0xc02b('0x77')],'message':_0x71f99a['message'],'originated':_0x71f99a[_0xc02b('0x78')],'erlangCalls':_0x71f99a['erlangCalls'],'erlangCallToSecond':_0x71f99a[_0xc02b('0x79')],'erlangAbandonmentRate':_0x71f99a[_0xc02b('0x7a')],'erlangBusyFactor':_0x71f99a[_0xc02b('0x7b')],'startPredictive':_0x71f99a[_0xc02b('0x7c')],'startProgressive':_0x71f99a[_0xc02b('0x2a')]};if(_0x71f99a[_0xc02b('0x7d')]){_0x16c5e0[_0xc02b('0x7d')]={'id':_0x71f99a[_0xc02b('0x7d')]['id'],'name':_0x71f99a['Trunk']['name'],'active':_0x71f99a[_0xc02b('0x7d')][_0xc02b('0x7e')],'callerid':_0x71f99a[_0xc02b('0x7d')][_0xc02b('0x7f')]};}if(_0x71f99a[_0xc02b('0x47')]){_0x16c5e0['Interval']={'id':_0x71f99a[_0xc02b('0x47')]['id'],'name':_0x71f99a[_0xc02b('0x47')][_0xc02b('0x44')]};}var _0xae8d77=md5(JSON['stringify'](_0x16c5e0));if(_0x71f99a[_0xc02b('0x4')]!==_0xae8d77){_0x71f99a[_0xc02b('0x4')]=_0xae8d77;emit(util[_0xc02b('0x80')](_0xc02b('0x81'),_0x16c5e0[_0xc02b('0x44')]),_0xc02b('0x82'),_0x16c5e0);}}}function emitCampaignSummary(_0x1dbab6){if(_0x1dbab6[_0xc02b('0x52')]===_0xc02b('0x83')){emit(util[_0xc02b('0x80')](_0xc02b('0x84'),_0x1dbab6[_0xc02b('0x44')]),'campaign:save',_0x1dbab6);}}function checkGetDataPredictive(_0x121bca){if(isNotNull(_0x121bca)&&!_[_0xc02b('0x4b')](_0x121bca)){loggerPredictive['info'](_0xc02b('0x85'));loggerPredictive[_0xc02b('0x86')](_0xc02b('0x87'),_0x121bca[_0xc02b('0x77')]);loggerPredictive[_0xc02b('0x86')]('Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x121bca['predictiveIntervalAnsweredCalls']);loggerPredictive[_0xc02b('0x86')]('Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x121bca[_0xc02b('0x73')]);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x88'),_0x121bca['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x89'),_0x121bca[_0xc02b('0x70')]);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8a'),_0x121bca[_0xc02b('0x71')]);loggerPredictive[_0xc02b('0x86')]('---------------------------');if(_0x121bca[_0xc02b('0x77')]>0x0){if(!_['isUndefined'](_0x121bca[_0xc02b('0x71')])&&_0x121bca['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8b'));if(!_[_0xc02b('0x41')](_0x121bca[_0xc02b('0x70')])&&_0x121bca[_0xc02b('0x70')]>0x0){return!![];}loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8c'));}else{loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8d'));}}else{loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8e'));}return![];}function mergeDataErlangB(_0x2ec170){return function(_0x3d75f3){loggerPredictive[_0xc02b('0x86')](_0xc02b('0x8f'));loggerPredictive['info'](_0xc02b('0x90'),_0x3d75f3[_0xc02b('0x91')]);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x92'),_0x3d75f3[_0xc02b('0x79')]);loggerPredictive['info'](_0xc02b('0x93'),_0x3d75f3[_0xc02b('0x7a')]);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x94'),_0x3d75f3[_0xc02b('0x7b')]);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x93'),_0x3d75f3['erlangAbandonmentRate']);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x95'));_[_0xc02b('0x96')](_0x2ec170,_0x3d75f3);};}function getDiff(_0x3086e0){var _0x3c427b=moment()['milliseconds'](0x0);var _0x1f033c=moment(_0x3086e0)[_0xc02b('0x4f')](0x0);return _0x3c427b['diff'](_0x1f033c,_0xc02b('0x51'));}function ifInterval(_0x5508ff,_0x5c129d){if(_[_0xc02b('0x41')](_0x5c129d)){return![];}return getDiff(_0x5c129d)<_0x5508ff*0x3c;}function freeVariablesPredictive(_0x47964b){if(isNotNull(_0x47964b)){if(!_[_0xc02b('0x41')](_0x47964b[_0xc02b('0x2a')])){_0x47964b['startProgressive']=undefined;loggerPredictive[_0xc02b('0x86')](_0x47964b[_0xc02b('0x44')],'clearing\x20variable\x20start\x20progressive');}if(!_[_0xc02b('0x41')](_0x47964b[_0xc02b('0x7c')])){_0x47964b[_0xc02b('0x7c')]=undefined;loggerPredictive['info'](_0x47964b[_0xc02b('0x44')],_0xc02b('0x97'));}if(!_[_0xc02b('0x41')](_0x47964b['handlePredictive'])){clearInterval(_0x47964b['handlePredictive']);_0x47964b['handlePredictive']=undefined;loggerPredictive[_0xc02b('0x86')](_0x47964b[_0xc02b('0x44')],_0xc02b('0x98'));}}}function erlangb(_0x51aa66,_0x17ace6){if(_0x17ace6===0x0){return 0x0;}var _0x4a5927=0x1;for(var _0x25e532=0x1;_0x25e532<=_0x17ace6;_0x25e532+=0x1){_0x4a5927=0x1+_0x4a5927*_0x25e532/_0x51aa66;}return 0x1/_0x4a5927;}function isVoiceQueueOutbound(_0xc8a041){return _0xc8a041==='outbound';}function isNotPreview(_0x560642){return _0x560642!==_0xc02b('0x20');}function isCampaignIvr(_0x1f3c25){return _0x1f3c25===_0xc02b('0x83');}function getCallerId(_0x39624c,_0x584008,_0x45e765){if(!_[_0xc02b('0x41')](_0x45e765)&&typeof _0x45e765===_0xc02b('0x99')&&!_[_0xc02b('0x4b')](_0x45e765)){if(!_['isUndefined'](_0x584008)&&typeof _0x584008===_0xc02b('0x99')&&!_[_0xc02b('0x4b')](_0x584008)){return util[_0xc02b('0x80')](_0xc02b('0x9a'),_0x584008,_0x45e765);}return util[_0xc02b('0x80')](_0xc02b('0x9a'),_0x45e765,_0x45e765);}if(!_[_0xc02b('0x41')](_0x39624c)&&typeof _0x39624c===_0xc02b('0x99')&&!_['isEmpty'](_0x39624c)){return _0x39624c;}return _0xc02b('0x9b');}function loggerCatchQueueSummary(_0x4a325c,_0x579ca4){return function(_0x46fe9c){freeVariablesPredictive(_0x579ca4);emitVoiceQueueSummary(_0x579ca4);emitCampaignSummary(_0x579ca4);loggerSyncQueueSummary[_0xc02b('0x9c')](_0x4a325c,util[_0xc02b('0x9d')](_0x46fe9c,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x508712,_0x354bc1){return function(_0x1ef103){loggerPredictive['error'](_0x354bc1['name'],_0x508712);loggerPredictive[_0xc02b('0x9e')](_0x1ef103[_0xc02b('0x9f')]);freeVariablesPredictive(_0x354bc1);};}function loggerCatch(_0x679a43){return function(_0x4b3154){logger['error'](_0x679a43,util[_0xc02b('0x9d')](_0x4b3154,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x524e18){return _0x524e18&&!_['isUndefined'](_0x524e18)&&_0x524e18[_0xc02b('0xa0')]>0x0;}function decremetOriginate(_0x3f3c19){if(!_[_0xc02b('0x41')](_0x3f3c19)&&_0x3f3c19!==null){if(typeof _0x3f3c19[_0xc02b('0x78')]!=='undefined'){if(_0x3f3c19['originated']>0x0){_0x3f3c19[_0xc02b('0x78')]-=0x1;}else{logger[_0xc02b('0x9e')](_0xc02b('0xa1'));}}}else{logger[_0xc02b('0x9e')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x49586d,_0x2e6731,_0xefbc9b){if(_0x2e6731>_0xefbc9b){for(var _0x2ac6b9=0x0;_0x2ac6b9<_0x2e6731-_0xefbc9b;_0x2ac6b9+=0x1){decremetOriginate(_0x49586d);}}}function loggerGetContactDialer(_0xe484fe,_0x1c6f2c,_0x5677dc){return function(_0x45c389){checkContactLowerLimitOriginate(_0x1c6f2c,_0x5677dc,0x0);logger[_0xc02b('0x9e')](_0xe484fe,util[_0xc02b('0x9d')](_0x45c389,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x25e198){return function(_0x174526){if(isNotNull(_0x174526)&&isNotNull(_0x174526[0x0])){if(_0x174526[0x0][_0xc02b('0xa2')]>0x0){_0x25e198[_0xc02b('0x42')]=_0xc02b('0xa3');logger[_0xc02b('0x86')]('[getContactDialer2][ReScheduled]'+_0x25e198[_0xc02b('0x44')],_0x174526[0x0][_0xc02b('0xa2')],_0xc02b('0xa4'));}else{_0x25e198['message']='AVAILABLE_CONTACTS_FINISHED';logger[_0xc02b('0x86')](_0xc02b('0xa5')+_0x25e198['name']);}}};}function notSendMessagesQueue(_0x40b63c){if(_0x40b63c[_0xc02b('0xa6')]){freeVariablesPredictive(_0x40b63c);if(_0x40b63c['originated']===0x0&&_0x40b63c['talking']===0x0&&_0x40b63c[_0xc02b('0xa7')]===0x0&&(_0x40b63c['pTalking']||0x0)===0x0){_0x40b63c[_0xc02b('0xa6')]=![];_0x40b63c['available']=0x0;_0x40b63c['message']=_0xc02b('0x46');loggerSyncQueueSummary[_0xc02b('0x9c')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x40b63c['name'],'is\x20not\x20active');}else{_0x40b63c[_0xc02b('0x42')]=_0xc02b('0xa8');loggerSyncQueueSummary[_0xc02b('0x9c')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x40b63c[_0xc02b('0x44')],_0xc02b('0xa9'));}emitVoiceQueueSummary(_0x40b63c);}}function notSendMessagesCampaign(_0x2ac5dc){if(_0x2ac5dc['sendMessageOneNotActive']){if(_0x2ac5dc[_0xc02b('0x78')]===0x0){_0x2ac5dc[_0xc02b('0xa6')]=![];_0x2ac5dc[_0xc02b('0x42')]=_0xc02b('0x46');loggerSyncQueueSummary[_0xc02b('0x9c')](_0xc02b('0xaa'),_0x2ac5dc[_0xc02b('0x44')],_0xc02b('0xab'));}else{_0x2ac5dc[_0xc02b('0x42')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xc02b('0x9c')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x2ac5dc['name'],_0xc02b('0xa9'));}emitCampaignSummary(_0x2ac5dc);}}function createObjHistory(_0x4f2f79,_0x1fa2f5,_0x27b414,_0x3e7ac7,_0x449b11){_0x4f2f79['message']=_0x27b414;var _0x39abf9=new Action(_0x4f2f79,_0x1fa2f5);var _0x4386ce=new History(_0x39abf9);_0x4386ce[_0xc02b('0xac')]=_0x3e7ac7;_0x4386ce[_0xc02b('0xad')]=_0x449b11;_0x4386ce[_0xc02b('0xae')]=_0x39abf9[_0xc02b('0xaf')];return _0x4386ce;}Dialer[_0xc02b('0x1b')][_0xc02b('0x3d')]=function(){var _0x43d635=this;setInterval(function(){_0x43d635['clearZombieChannels'](_0x43d635[_0xc02b('0xb0')],_0xc02b('0xb1'));_0x43d635[_0xc02b('0xb2')](_0x43d635[_0xc02b('0x27')],'[actions]');},0x32c8);};Dialer[_0xc02b('0x1b')][_0xc02b('0xb2')]=function(_0x339881,_0x5db0db){var _0x564403=this;for(var _0x5aac53 in _0x339881){if(typeof _0x339881[_0x5aac53]!==_0xc02b('0xb3')){this[_0xc02b('0x1f')][_0xc02b('0x1c')](function(){if(!_[_0xc02b('0xb4')](_0x339881[_0x5aac53])){return ami[_0xc02b('0xb5')]({'action':_0xc02b('0xb6'),'channel':_0x339881[_0x5aac53][_0xc02b('0xb7')]})[_0xc02b('0xb8')](function(_0x3b3a79){if(_0x3b3a79[_0xc02b('0x42')]===_0xc02b('0xb9')){setTimeout(function(){if(_0x339881[_0x5aac53]&&_0x339881[_0x5aac53][_0xc02b('0x52')]!=='ivr'){_0x564403[_0xc02b('0xba')](_0x564403['voiceQueues'][_0x339881[_0x5aac53][_0xc02b('0xbb')]]);logger[_0xc02b('0x9e')](_0xc02b('0xbc'),_0x5db0db,_0x5aac53,_0x339881[_0x5aac53][_0xc02b('0xbb')]);delete _0x339881[_0x5aac53];}if(_0x339881[_0x5aac53]&&_0x339881[_0x5aac53][_0xc02b('0x52')]===_0xc02b('0x83')){_0x564403[_0xc02b('0xba')](_0x564403['campaigns'][_0x339881[_0x5aac53]['queue']]);logger[_0xc02b('0x9e')]('[Dialer][checkChannel][ivr]',_0x5db0db,_0x5aac53,_0x339881[_0x5aac53][_0xc02b('0xbb')]);delete _0x339881[_0x5aac53];}},0x2328);}});}});}}};Dialer[_0xc02b('0x1b')][_0xc02b('0xbd')]=function(_0xbf5da9){return Promise['resolve']()['then'](cmHopper[_0xc02b('0xbd')](_0xbf5da9))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xbe')));};Dialer[_0xc02b('0x1b')][_0xc02b('0xbf')]=function(_0x450c5b){return Promise['resolve']()[_0xc02b('0x3f')](cmHopperBlack['checkIsBlackList'](_0x450c5b))['catch'](loggerCatch('[checkIsBlackList]\x20'));};Dialer[_0xc02b('0x1b')]['verifyAdditionalPhones']=function(_0x4976cb,_0x34e835,_0x598894){return Promise[_0xc02b('0xc0')]()[_0xc02b('0x3f')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x4976cb,_0x34e835,_0x598894))[_0xc02b('0xb8')](loggerCatch('[verifyAdditionalPhone]\x20'));};Dialer[_0xc02b('0x1b')][_0xc02b('0xc1')]=function(_0x597ac8,_0x33dc2a,_0x5732f8){return Promise[_0xc02b('0xc0')]()[_0xc02b('0x3f')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x597ac8,_0x33dc2a,_0x5732f8))[_0xc02b('0xb8')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0xc02b('0x1b')]['checkIsBlackListIvr']=function(_0x2e7b54){return Promise[_0xc02b('0xc0')]()['then'](cmHopperBlack[_0xc02b('0xc2')](_0x2e7b54))['catch'](loggerCatch(_0xc02b('0xc3')));};Dialer['prototype'][_0xc02b('0xc4')]=function(_0x12bf5e){return Promise['resolve']()[_0xc02b('0x3f')](cmHopperHistory[_0xc02b('0xc5')](_0x12bf5e))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xc6')));};Dialer[_0xc02b('0x1b')][_0xc02b('0xc7')]=function(_0x6c6ce6){return Promise['resolve']()[_0xc02b('0x3f')](cmHopper[_0xc02b('0xc7')](_0x6c6ce6))[_0xc02b('0xb8')](loggerCatch('[rescheduleContact]\x20'));};Dialer[_0xc02b('0x1b')][_0xc02b('0xc8')]=function(_0x3450ce,_0x6bf432,_0x27aeb3){return Promise['resolve']()[_0xc02b('0x3f')](cmHopper[_0xc02b('0xc8')](_0x3450ce,_0x6bf432,_0x27aeb3))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xc9')));};Dialer[_0xc02b('0x1b')][_0xc02b('0xca')]=function(_0x3298bf,_0x21766e,_0x1707d0,_0x475b5d,_0x595ce9){return Promise['resolve']()[_0xc02b('0x3f')](cmHopper['getContactDialer'](_0x3298bf,_0x21766e,_0x1707d0,_0x475b5d))[_0xc02b('0xb8')](function(_0x3d38ad){_0x595ce9[_0xc02b('0xcb')]-=_0x1707d0;_0x595ce9[_0xc02b('0xcb')]=_0x595ce9[_0xc02b('0xcb')]>0x0?_0x595ce9['temp']:0x0;loggerCatch(_0xc02b('0xcc'))(_0x3d38ad);});};Dialer[_0xc02b('0x1b')][_0xc02b('0xcd')]=function(_0x23ed4a,_0x4854b3,_0x53ae8e,_0x12ce6b){return Promise['resolve']()[_0xc02b('0x3f')](cmHopper[_0xc02b('0xcd')](_0x23ed4a,_0x4854b3,_0x53ae8e))[_0xc02b('0xb8')](function(_0x3b0892){_0x12ce6b[_0xc02b('0xcb')]-=_0x4854b3;_0x12ce6b['temp']=_0x12ce6b[_0xc02b('0xcb')]>0x0?_0x12ce6b['temp']:0x0;loggerCatch(_0xc02b('0xce'))(_0x3b0892);});};Dialer[_0xc02b('0x1b')][_0xc02b('0xcf')]=function(_0x505172){return Promise[_0xc02b('0xc0')]()[_0xc02b('0x3f')](voiceQueueRt[_0xc02b('0xcf')](_0x505172))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xd0')));};Dialer[_0xc02b('0x1b')][_0xc02b('0xd1')]=function(_0x4584d0){return Promise[_0xc02b('0xc0')]()['then'](cmHopper[_0xc02b('0xd1')](_0x4584d0))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xd2')));};Dialer[_0xc02b('0x1b')]['createHistory']=function(_0x5e5590){return Promise[_0xc02b('0xc0')]()[_0xc02b('0x3f')](cmHopperHistory[_0xc02b('0xd3')](_0x5e5590))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xd4')));};Dialer['prototype'][_0xc02b('0xba')]=function(_0x548d89){if(!_[_0xc02b('0x41')](_0x548d89)&&_0x548d89!==null){if(typeof _0x548d89[_0xc02b('0x78')]!=='undefined'){if(_0x548d89[_0xc02b('0x78')]>0x0){_0x548d89[_0xc02b('0x78')]-=0x1;}else{logger['error'](_0xc02b('0xd5'));}}}else{logger[_0xc02b('0x9e')](_0xc02b('0xd6'));}};Dialer[_0xc02b('0x1b')][_0xc02b('0xd7')]=function(_0x17fcbe,_0xf31e78){var _0x392911=this;return function(_0x16d699){_0x392911[_0xc02b('0xba')](_0xf31e78);logger['error'](_0x17fcbe,util['inspect'](_0x16d699,{'showHidden':![],'depth':null}));};};Dialer[_0xc02b('0x1b')]['emptyContact']=function(_0xb4639c,_0x1bc677,_0x30b5c7){var _0x230d1a={'state':0x19,'statedesc':_0xc02b('0xd8')};this[_0xc02b('0xba')](_0x1bc677);this[_0xc02b('0xd9')](_[_0xc02b('0x96')](_0x230d1a,_[_0xc02b('0xda')](_0x30b5c7,[_0xc02b('0xdb'),'ListId',_0xc02b('0xdc'),_0xc02b('0xdd'),_0xc02b('0xde')])),_0xc02b('0xdf'),_0xc02b('0xe0'));logger[_0xc02b('0x9e')](_0xb4639c);};Dialer['prototype'][_0xc02b('0xe1')]=function(_0x3e800f){return _0x3e800f===_0xc02b('0xe2');};Dialer[_0xc02b('0x1b')][_0xc02b('0xe3')]=function(_0x4b4090){return!_['isUndefined'](_0x4b4090)&&_0x4b4090&&!_[_0xc02b('0x41')](_0x4b4090['name'])&&!_[_0xc02b('0x41')](_0x4b4090[_0xc02b('0x7e')])&&_0x4b4090['active']&&(this['trunks'][util[_0xc02b('0x80')](_0xc02b('0xe4'),_0x4b4090[_0xc02b('0x44')])][_0xc02b('0xb6')]===_0xc02b('0xe5')||this[_0xc02b('0x24')][util['format'](_0xc02b('0xe4'),_0x4b4090[_0xc02b('0x44')])][_0xc02b('0xb6')]===_0xc02b('0xe6'));};Dialer[_0xc02b('0x1b')]['saveInDb']=function(_0x517f5e,_0x13efa2,_0x665dbf){this['createHistory'](_0x517f5e)[_0xc02b('0xb8')](loggerCatch(_0x13efa2));this[_0xc02b('0xd1')](_0x517f5e)[_0xc02b('0xb8')](loggerCatch(_0x665dbf));};Dialer['prototype'][_0xc02b('0x38')]=function(_0x14e553){var _0x1cbf6b=this;var _0x223ce6=this[_0xc02b('0xb0')][_0x14e553[_0xc02b('0xe7')]];var _0x210dc0;if(!_[_0xc02b('0xb4')](_0x14e553)&&!_[_0xc02b('0xb4')](_0x14e553[_0xc02b('0xe8')])&&!_[_0xc02b('0xb4')](_0x14e553[_0xc02b('0xe8')][_0xc02b('0xe9')])&&_0x14e553[_0xc02b('0xea')]===_0xc02b('0xeb')&&_0x223ce6){if(_0x223ce6['type']!==_0xc02b('0x83')&&this['voiceQueues'][_0x223ce6[_0xc02b('0xbb')]]['dialAMDActive']&&_0x14e553[_0xc02b('0xec')]===_0xc02b('0xed')){delete this[_0xc02b('0xb0')][_0x14e553[_0xc02b('0xe7')]];this['updateOriginated'](this['voiceQueues'][_0x223ce6[_0xc02b('0xbb')]]);this[_0xc02b('0x21')][_0x223ce6[_0xc02b('0xbb')]][_0xc02b('0x67')]+=0x1;this[_0xc02b('0x21')][_0x223ce6[_0xc02b('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;_0x210dc0=new Hangup(_0x223ce6,_0x14e553);_0x210dc0[_0xc02b('0xac')]=0x12;_0x210dc0[_0xc02b('0xad')]=_0xc02b('0xee');_0x210dc0[_0xc02b('0xef')]=_0xc02b('0xf0');ami[_0xc02b('0xf1')](_0xc02b('0xf2'),ut['buildObj'](_0x210dc0,_0xc02b('0xf3')));this[_0xc02b('0xd9')](_0x210dc0,_0xc02b('0xf4'),_0xc02b('0xf5'));}if(_0x223ce6[_0xc02b('0x52')]!=='ivr'&&this[_0xc02b('0x21')][_0x223ce6[_0xc02b('0xbb')]]['dialAMDActive']&&_0x14e553[_0xc02b('0xec')]===_0xc02b('0xf6')){return new Promise(function(_0x424d7e,_0x322bd1){delete _0x1cbf6b['uniqueId'][_0x14e553[_0xc02b('0xe7')]];_0x1cbf6b[_0xc02b('0xba')](_0x1cbf6b['voiceQueues'][_0x223ce6['queue']]);_0x1cbf6b[_0xc02b('0x21')][_0x223ce6[_0xc02b('0xbb')]][_0xc02b('0x67')]+=0x1;_0x1cbf6b[_0xc02b('0x21')][_0x223ce6[_0xc02b('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x1b0d6c=_0x1cbf6b[_0xc02b('0x21')][_0x223ce6['queue']];var _0x5a911f=new Hangup(_0x223ce6,_0x14e553);_0x5a911f['state']=0x13;_0x5a911f[_0xc02b('0xad')]=_0xc02b('0xf7');_0x5a911f['membername']=_0xc02b('0xf0');_0x5a911f[_0xc02b('0xf8')]+=0x1;_0x5a911f['countglobal']+=0x1;_0x5a911f[_0xc02b('0xf3')]=!![];ami['emit'](_0xc02b('0xf2'),ut[_0xc02b('0xf9')](_0x5a911f,_0xc02b('0xf3')));_0x1cbf6b[_0xc02b('0xd3')](_0x5a911f)['catch'](loggerCatch(_0xc02b('0xfa')));if(_0x5a911f[_0xc02b('0xfb')]+_0x5a911f[_0xc02b('0xfc')]+_0x5a911f[_0xc02b('0xfd')]+_0x5a911f[_0xc02b('0xfe')]+_0x5a911f[_0xc02b('0xff')]+_0x5a911f[_0xc02b('0x100')]+_0x5a911f['countmachineretry']+_0x5a911f[_0xc02b('0x101')]>=_0x1b0d6c['dialGlobalMaxRetry']){_0x1cbf6b[_0xc02b('0x102')](_0x5a911f,_0x424d7e,_0x322bd1,'reason19\x20machine....');}else{if(_0x5a911f[_0xc02b('0xf8')]>=_0x1b0d6c[_0xc02b('0x103')]){_0x1cbf6b[_0xc02b('0x104')](_0x5a911f,_0x424d7e,_0x322bd1,_0xc02b('0x105'));}else{_0x1cbf6b[_0xc02b('0xc7')]({'active':![],'countmachineretry':_0x5a911f['countmachineretry'],'scheduledat':moment()[_0xc02b('0x106')](_0x1b0d6c[_0xc02b('0x107')],_0xc02b('0x108'))[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0x5a911f['ContactId'],'ListId':_0x5a911f[_0xc02b('0x10a')],'VoiceQueueId':_0x5a911f['VoiceQueueId']||undefined,'CampaignId':_0x5a911f['CampaignId']||undefined})[_0xc02b('0xb8')](loggerCatch('[rescheduleContact][Machine]'));_0x424d7e({'reschedule':0x1});}}});}if(_0x223ce6[_0xc02b('0x52')]==='ivr'&&this[_0xc02b('0x22')][_0x223ce6[_0xc02b('0xbb')]]['dialAMDActive']&&_0x14e553[_0xc02b('0xec')]==='HANGUP'){delete this[_0xc02b('0xb0')][_0x14e553['uniqueid']];this[_0xc02b('0xba')](this['campaigns'][_0x223ce6[_0xc02b('0xbb')]]);_0x210dc0=new Hangup(_0x223ce6,_0x14e553);_0x210dc0['state']=0x12;_0x210dc0[_0xc02b('0xad')]='HangupInAMD';_0x210dc0['membername']='AMD';ami[_0xc02b('0xf1')]('custom:amd',ut[_0xc02b('0xf9')](_0x210dc0,'amd'));this[_0xc02b('0xd9')](_0x210dc0,_0xc02b('0x10b'),_0xc02b('0x10c'));}if(_0x223ce6[_0xc02b('0x52')]===_0xc02b('0x83')&&this[_0xc02b('0x22')][_0x223ce6[_0xc02b('0xbb')]]['dialAMDActive']&&_0x14e553[_0xc02b('0xec')]===_0xc02b('0xf6')){return new Promise(function(_0x4b22ff,_0x4e1097){delete _0x1cbf6b[_0xc02b('0xb0')][_0x14e553[_0xc02b('0xe7')]];_0x1cbf6b[_0xc02b('0xba')](_0x1cbf6b[_0xc02b('0x22')][_0x223ce6[_0xc02b('0xbb')]]);_0x1cbf6b['campaigns'][_0x223ce6[_0xc02b('0xbb')]]['outboundAnswerCallsDay']+=0x1;_0x1cbf6b[_0xc02b('0x22')][_0x223ce6[_0xc02b('0xbb')]][_0xc02b('0x66')]+=0x1;var _0x149b16=_0x1cbf6b[_0xc02b('0x22')][_0x223ce6[_0xc02b('0xbb')]];var _0x3e3e53=new Hangup(_0x223ce6,_0x14e553);_0x3e3e53[_0xc02b('0xac')]=0x13;_0x3e3e53[_0xc02b('0xad')]=_0xc02b('0xf7');_0x3e3e53[_0xc02b('0xef')]=_0xc02b('0xf0');_0x3e3e53[_0xc02b('0xf8')]+=0x1;_0x3e3e53['countglobal']+=0x1;_0x3e3e53[_0xc02b('0xf3')]=!![];ami['emit'](_0xc02b('0xf2'),ut[_0xc02b('0xf9')](_0x3e3e53,_0xc02b('0xf3')));_0x1cbf6b[_0xc02b('0xd3')](_0x3e3e53)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xfa')));if(_0x3e3e53[_0xc02b('0xfb')]+_0x3e3e53[_0xc02b('0xfc')]+_0x3e3e53[_0xc02b('0xfd')]+_0x3e3e53[_0xc02b('0xfe')]+_0x3e3e53['countdropretry']+_0x3e3e53[_0xc02b('0x100')]+_0x3e3e53[_0xc02b('0xf8')]+_0x3e3e53[_0xc02b('0x101')]>=_0x149b16[_0xc02b('0x10d')]){_0x1cbf6b[_0xc02b('0x102')](_0x3e3e53,_0x4b22ff,_0x4e1097,_0xc02b('0x10e'));}else{if(_0x3e3e53[_0xc02b('0xf8')]>=_0x149b16['dialMachineMaxRetry']){_0x1cbf6b['createStateFinal'](_0x3e3e53,_0x4b22ff,_0x4e1097,'reason\x2019\x20machine....');}else{_0x1cbf6b[_0xc02b('0xc7')]({'active':![],'countmachineretry':_0x3e3e53[_0xc02b('0xf8')],'scheduledat':moment()[_0xc02b('0x106')](_0x149b16[_0xc02b('0x107')],_0xc02b('0x108'))[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0x3e3e53[_0xc02b('0xdb')],'ListId':_0x3e3e53['ListId'],'VoiceQueueId':_0x3e3e53['VoiceQueueId']||undefined,'CampaignId':_0x3e3e53[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x10f')));_0x4b22ff({'reschedule':0x1});}}});}}};Dialer[_0xc02b('0x1b')][_0xc02b('0x110')]=function(_0xc305cf){var _0x133618=this['uniqueId'][_0xc305cf[_0xc02b('0xe7')]];var _0x56066c;if(_0x133618&&_0x133618[_0xc02b('0x52')]==='ivr'){delete this['uniqueId'][_0xc305cf[_0xc02b('0xe7')]];this['updateOriginated'](this[_0xc02b('0x22')][_0x133618[_0xc02b('0xbb')]]);this[_0xc02b('0x22')][_0x133618[_0xc02b('0xbb')]]['ivrAnswerCallsDay']+=0x1;_0x56066c=new Hangup(_0x133618,_0xc305cf);this['createHistory'](_0x56066c)[_0xc02b('0xb8')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xc02b('0xd1')](_0x56066c)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x111')));}if(_0x133618&&_0x133618['type']!==_0xc02b('0x83')&&isNotNull(this[_0xc02b('0x21')][_0x133618[_0xc02b('0xbb')]][_0xc02b('0x112')])){delete this[_0xc02b('0xb0')][_0xc305cf['uniqueid']];this[_0xc02b('0xba')](this[_0xc02b('0x21')][_0x133618[_0xc02b('0xbb')]]);this[_0xc02b('0x21')][_0x133618['queue']]['outboundAnswerCallsDay']+=0x1;this[_0xc02b('0x21')][_0x133618[_0xc02b('0xbb')]][_0xc02b('0x66')]+=0x1;_0x56066c=new Hangup(_0x133618,_0xc305cf);_0x56066c[_0xc02b('0xac')]=0x10;_0x56066c[_0xc02b('0xad')]='AnswerAGI';_0x56066c[_0xc02b('0xef')]=_0xc02b('0x113');this[_0xc02b('0xd3')](_0x56066c)['catch'](loggerCatch(_0xc02b('0x114')));this[_0xc02b('0xd1')](_0x56066c)[_0xc02b('0xb8')](loggerCatch('[syncHangupIvr]'));}if(_0x133618&&_0x133618[_0xc02b('0x52')]!=='ivr'&&!isNotNull(this[_0xc02b('0x21')][_0x133618[_0xc02b('0xbb')]]['dialQueueProject'])){delete this[_0xc02b('0xb0')][_0xc305cf[_0xc02b('0xe7')]];this['updateOriginated'](this['voiceQueues'][_0x133618[_0xc02b('0xbb')]]);this[_0xc02b('0x21')][_0x133618['queue']][_0xc02b('0x6e')]+=0x1;_0x56066c=new Hangup(_0x133618,_0xc305cf);_0x56066c[_0xc02b('0xac')]=0xc;_0x56066c[_0xc02b('0xad')]=_0xc305cf[_0xc02b('0x115')];_0x56066c[_0xc02b('0xef')]='Unknow';this[_0xc02b('0xd3')](_0x56066c)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x114')));this['moveContactManagedDialer'](_0x56066c)[_0xc02b('0xb8')](loggerCatch('[syncHangupIvr]'));}};Dialer[_0xc02b('0x1b')][_0xc02b('0x31')]=function(_0x2beddc){var _0x5b20c6=this[_0xc02b('0xb0')][_0x2beddc[_0xc02b('0xe7')]];if(this[_0xc02b('0x21')][_0x2beddc[_0xc02b('0xbb')]]){if(_0x5b20c6&&_0x5b20c6['type']!==_0xc02b('0x83')){delete this[_0xc02b('0xb0')][_0x2beddc[_0xc02b('0xe7')]];this[_0xc02b('0x21')][_0x2beddc[_0xc02b('0xbb')]][_0xc02b('0x67')]+=0x1;var _0x148179=new AgentComplete(_0x5b20c6,_0x2beddc);if(_0x2beddc[_0xc02b('0x116')]===_0xc02b('0x117')){_0x148179['agiafterat']=this['voiceQueues'][_0x2beddc['queue']][_0xc02b('0x118')]&&this[_0xc02b('0x21')][_0x2beddc[_0xc02b('0xbb')]][_0xc02b('0x119')]?moment()[_0xc02b('0x80')](_0xc02b('0x109')):undefined;}this['createHistory'](_0x148179)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x11a')));this[_0xc02b('0xd1')](_0x148179)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x11b')));}}};Dialer['prototype'][_0xc02b('0x11c')]=function(_0x380f34){if(this[_0xc02b('0x21')][_0x380f34[_0xc02b('0xbb')]]){if(this[_0xc02b('0xb0')][_0x380f34[_0xc02b('0xe7')]]&&this['uniqueId'][_0x380f34[_0xc02b('0xe7')]]['type']!==_0xc02b('0x83')){this['updateOriginated'](this[_0xc02b('0x21')][_0x380f34[_0xc02b('0xbb')]]);this[_0xc02b('0xb0')][_0x380f34[_0xc02b('0xe7')]][_0xc02b('0x11d')]=moment()[_0xc02b('0x80')](_0xc02b('0x109'));}}};Dialer[_0xc02b('0x1b')][_0xc02b('0x11e')]=function(_0x457878,_0x244c8d){this[_0xc02b('0xd3')](_0x457878)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x11a')));if(_0x244c8d==0x0){this[_0xc02b('0xd1')](_0x457878)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x11f')));}};Dialer[_0xc02b('0x1b')][_0xc02b('0x120')]=function(_0x77c29f){var _0x50e40d=this[_0xc02b('0xb0')][_0x77c29f[_0xc02b('0xe7')]];var _0x47e0f7=this;var _0x4348ad=![];var _0x373ac5;var _0x176dbd;if(this['voiceQueues'][_0x77c29f[_0xc02b('0xbb')]]){if(_0x50e40d&&_0x50e40d[_0xc02b('0x52')]!==_0xc02b('0x83')){delete this[_0xc02b('0xb0')][_0x77c29f[_0xc02b('0xe7')]];this[_0xc02b('0xba')](this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]]);_0x50e40d[_0xc02b('0x121')]=moment()['format'](_0xc02b('0x109'));var _0x17d30e=new QueueCallerAbandon(_0x50e40d,_0x77c29f);if(getSeconds(_0x50e40d[_0xc02b('0x121')],_0x50e40d[_0xc02b('0x122')])>=_0x50e40d[_0xc02b('0x123')]){this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x73')]+=0x1;this['voiceQueues'][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x124')]+=0x1;this['voiceQueues'][_0x77c29f['queue']][_0xc02b('0x125')]+=0x1;_0x17d30e[_0xc02b('0xac')]=0xa;_0x17d30e['statedesc']=_0xc02b('0x126');_0x17d30e['dropreason']=_0xc02b('0x127');_0x17d30e[_0xc02b('0x128')]=this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x118')]?moment()['format'](_0xc02b('0x109')):undefined;_0x17d30e['countdropretry']+=0x1;_0x17d30e['countglobal']+=0x1;_0x373ac5=this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x129')];_0x176dbd=this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x12a')];_0x47e0f7[_0xc02b('0x12b')](_0x17d30e,_0x17d30e[_0xc02b('0xac')],_0x50e40d[_0xc02b('0x12c')])['then'](function(_0x457eda){_0x4348ad=_0x457eda[_0xc02b('0x12d')]==0x1;if(_0x17d30e[_0xc02b('0xff')]>=_0x47e0f7[_0xc02b('0x21')][_0x77c29f['queue']][_0xc02b('0x12e')]){_0x47e0f7['queueCallerAbandonCreateState'](_0x17d30e,_0x457eda[_0xc02b('0x12d')]);}else{_0x47e0f7[_0xc02b('0xc7')]({'active':![],'countdropretry':_0x17d30e[_0xc02b('0xff')],'scheduledat':moment()[_0xc02b('0x106')](_0x47e0f7[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x129')],'minutes')[_0xc02b('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x50e40d['ContactId'],'ListId':_0x50e40d[_0xc02b('0x10a')],'VoiceQueueId':_0x50e40d[_0xc02b('0xdd')]||undefined,'CampaignId':_0x50e40d[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x12f')));var _0x21af2c=new History(_0x17d30e);_0x21af2c['state']=0xa;_0x21af2c[_0xc02b('0xad')]=_0xc02b('0x126');_0x21af2c[_0xc02b('0xaf')]=moment()['format'](_0xc02b('0x109'));_0x21af2c[_0xc02b('0xae')]=_0x21af2c['starttime'];_0x21af2c[_0xc02b('0x130')]=_0x17d30e['calleridname'];_0x21af2c[_0xc02b('0x131')]=_0x17d30e[_0xc02b('0x131')];_0x47e0f7[_0xc02b('0xd3')](_0x21af2c)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x132')));}})[_0xc02b('0x3f')](function(){if(_0x4348ad)_0x47e0f7['swapAdditionalPhones'](_0x17d30e,_0x373ac5,_0x176dbd)[_0xc02b('0x3f')](function(){return 0x1;});});}else{this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x72')]+=0x1;this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x6b')]+=0x1;_0x17d30e[_0xc02b('0xac')]=0xb;_0x17d30e[_0xc02b('0xad')]=_0xc02b('0x133');_0x17d30e[_0xc02b('0x134')]=_0xc02b('0x135');_0x17d30e[_0xc02b('0x100')]+=0x1;_0x17d30e[_0xc02b('0x136')]+=0x1;_0x373ac5=this['voiceQueues'][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x137')];_0x176dbd=this[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]]['callAdditionalPhoneAfterMin'];_0x47e0f7[_0xc02b('0x12b')](_0x17d30e,_0x17d30e[_0xc02b('0xac')],_0x50e40d[_0xc02b('0x12c')])['then'](function(_0x60ac8c){if(_0x17d30e[_0xc02b('0x100')]>=_0x47e0f7[_0xc02b('0x21')][_0x77c29f[_0xc02b('0xbb')]]['dialAbandonedMaxRetry']){_0x47e0f7[_0xc02b('0x11e')](_0x17d30e,_0x60ac8c[_0xc02b('0x12d')]);}else{_0x47e0f7[_0xc02b('0xc7')]({'active':![],'countabandonedretry':_0x17d30e[_0xc02b('0x100')],'scheduledat':moment()[_0xc02b('0x106')](_0x47e0f7['voiceQueues'][_0x77c29f[_0xc02b('0xbb')]][_0xc02b('0x137')],'minutes')['format'](_0xc02b('0x109')),'ContactId':_0x50e40d[_0xc02b('0xdb')],'ListId':_0x50e40d[_0xc02b('0x10a')],'VoiceQueueId':_0x50e40d[_0xc02b('0xdd')]||undefined,'CampaignId':_0x50e40d[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x138')));var _0x1d3a79=new History(_0x17d30e);_0x1d3a79[_0xc02b('0xac')]=0xb;_0x1d3a79[_0xc02b('0xad')]=_0xc02b('0x133');_0x1d3a79[_0xc02b('0xaf')]=moment()[_0xc02b('0x80')]('YYYY-MM-DD\x20HH:mm:ss');_0x1d3a79['endtime']=_0x1d3a79['starttime'];_0x1d3a79[_0xc02b('0x130')]=_0x17d30e[_0xc02b('0x130')];_0x1d3a79[_0xc02b('0x131')]=_0x17d30e[_0xc02b('0x131')];_0x47e0f7[_0xc02b('0xd3')](_0x1d3a79)[_0xc02b('0xb8')](loggerCatch('[syncAgentComplete][createHistory][11]'));}})[_0xc02b('0x3f')](function(){if(_0x4348ad)_0x47e0f7[_0xc02b('0xc1')](_0x17d30e,_0x373ac5,_0x176dbd)[_0xc02b('0x3f')](function(){return 0x1;});});}}}};Dialer[_0xc02b('0x1b')][_0xc02b('0x139')]=function(_0x31c887){if(this[_0xc02b('0x27')][_0x31c887['uniqueid']]){this[_0xc02b('0x27')][_0x31c887[_0xc02b('0xe7')]][_0xc02b('0xb7')]=_0x31c887['channel'];}if(this['uniqueId'][_0x31c887['uniqueid']]){this[_0xc02b('0xb0')][_0x31c887[_0xc02b('0xe7')]][_0xc02b('0xb7')]=_0x31c887[_0xc02b('0xb7')];}};Dialer[_0xc02b('0x1b')][_0xc02b('0x39')]=function(_0x12e286){if(strategy[this[_0xc02b('0x21')][this[_0xc02b('0x27')][_0x12e286['actionid']]['queue']][_0xc02b('0x54')]]===_0xc02b('0x1a')){if(this[_0xc02b('0x27')][_0x12e286[_0xc02b('0x13a')]]&&_[_0xc02b('0xb4')](this[_0xc02b('0x27')][_0x12e286['actionid']][_0xc02b('0x13b')])&&_0x12e286['status']==='1'&&_0x12e286['paused']==='0'){if(this[_0xc02b('0x23')][_0x12e286[_0xc02b('0x13c')]]){if(!this['agents'][_0x12e286['stateinterface']]['locked']){this[_0xc02b('0x23')][_0x12e286[_0xc02b('0x13c')]]['locked']=!![];this['actions'][_0x12e286[_0xc02b('0x13a')]][_0xc02b('0x13b')]=!![];this[_0xc02b('0x27')][_0x12e286['actionid']][_0xc02b('0x13c')]=_0x12e286[_0xc02b('0x13c')];}}}}else if((strategy[this[_0xc02b('0x21')][this[_0xc02b('0x27')][_0x12e286['actionid']][_0xc02b('0xbb')]][_0xc02b('0x54')]]||_0xc02b('0x19'))===_0xc02b('0x19')){if(this[_0xc02b('0x27')][_0x12e286[_0xc02b('0x13a')]]){if(this[_0xc02b('0x23')][_0x12e286[_0xc02b('0x13c')]]){this[_0xc02b('0x27')][_0x12e286['actionid']][_0xc02b('0x13c')]=_0x12e286[_0xc02b('0x13c')];if(_['isNil'](this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x12e286[_0xc02b('0x13a')]][_0xc02b('0xbb')]])){this['queueBooked'][this['actions'][_0x12e286[_0xc02b('0x13a')]][_0xc02b('0xbb')]]=[];}this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x12e286[_0xc02b('0x13a')]]['queue']]['push'](_['merge'](_[_0xc02b('0xda')](this[_0xc02b('0x27')][_0x12e286[_0xc02b('0x13a')]],['idHopper',_0xc02b('0x13c')]),{'status':_0x12e286[_0xc02b('0xb6')],'paused':_0x12e286[_0xc02b('0x13d')]}));}}}};function unlockQueueStatus(_0x442bea,_0x451e43){setTimeout(function(){if(_[_0xc02b('0x41')](_0x442bea[_0xc02b('0x13e')])){loggerBooked[_0xc02b('0x9e')](_0xc02b('0x13f'),_0x451e43);}_0x442bea[_0xc02b('0x13e')]=!![];loggerBooked['info'](_0xc02b('0x140'),_0x451e43,JSON['stringify'](_['pick'](_0x442bea,[_0xc02b('0x44'),_0xc02b('0x13e')])));},0x1f3);}Dialer[_0xc02b('0x1b')]['syncQueueStatusComplete']=function(_0x1d8f52){var _0x4ebc62=this;var _0x293a1a=_0x4ebc62[_0xc02b('0x21')][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]];if(strategy[this[_0xc02b('0x21')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]][_0xc02b('0x54')]]===_0xc02b('0x1a')){if(this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]&&this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0x13c')]){this[_0xc02b('0x20')][_0xc02b('0x141')](this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0x142')],this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0x13c')])[_0xc02b('0xb8')](function(_0xc250e2){logger[_0xc02b('0x9e')](_0xc02b('0x143'),util[_0xc02b('0x9d')](_0xc250e2,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4ebc62[_0xc02b('0xba')](_0x4ebc62[_0xc02b('0x21')][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]);_0x4ebc62[_0xc02b('0x23')][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52['actionid']]['stateinterface']][_0xc02b('0x13b')]=![];delete _0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]];unlockQueueStatus(_0x293a1a);});}else{this[_0xc02b('0xba')](this[_0xc02b('0x21')][this['actions'][_0x1d8f52['actionid']]['queue']]);this[_0xc02b('0xc7')]({'active':![],'ContactId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xdb')],'ListId':this[_0xc02b('0x27')][_0x1d8f52['actionid']]['ListId'],'VoiceQueueId':this[_0xc02b('0x27')][_0x1d8f52['actionid']][_0xc02b('0xdd')]||undefined,'CampaignId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xde')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xc02b('0x27')][_0x1d8f52['actionid']];unlockQueueStatus(_0x293a1a);}}else if((strategy[this['voiceQueues'][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]['queue']][_0xc02b('0x54')]]||_0xc02b('0x19'))===_0xc02b('0x19')){var _0x19fdd6;if(this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]&&!_[_0xc02b('0x4b')](this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]])){if(this['queueBookedRR'][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]){this[_0xc02b('0x144')][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]=this[_0xc02b('0x144')][this[_0xc02b('0x27')][_0x1d8f52['actionid']][_0xc02b('0xbb')]]?this['queueBookedRR'][this['actions'][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]:this[_0xc02b('0x2c')][this['actions'][_0x1d8f52['actionid']][_0xc02b('0xbb')]]?this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]['queue']]['_rr']||0x0:0x0;}this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]][_0xc02b('0x145')]=this[_0xc02b('0x144')][this[_0xc02b('0x27')][_0x1d8f52['actionid']][_0xc02b('0xbb')]];for(var _0x48e57f=0x0;_0x48e57f<this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]][_0xc02b('0xa0')];_0x48e57f+=0x1){_0x19fdd6=rr(this['queueBooked'][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]);this[_0xc02b('0x144')][_0x4ebc62['actions'][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]=this[_0xc02b('0x2c')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]['_rr'];if(_0x19fdd6[_0xc02b('0xb6')]==='1'&&_0x19fdd6[_0xc02b('0x13d')]==='0'){break;}}if(!_[_0xc02b('0xb4')](_0x19fdd6)){this[_0xc02b('0x23')][_0x19fdd6[_0xc02b('0x13c')]][_0xc02b('0x146')]=_[_0xc02b('0x41')](this[_0xc02b('0x23')][_0x19fdd6[_0xc02b('0x13c')]][_0xc02b('0x146')])?!![]:this[_0xc02b('0x23')][_0x19fdd6[_0xc02b('0x13c')]]['unlockRR'];}loggerBooked[_0xc02b('0x86')](_0xc02b('0x147'),_0x1d8f52[_0xc02b('0x13a')],_0xc02b('0x148'),JSON[_0xc02b('0x4e')](_[_0xc02b('0xda')](this[_0xc02b('0x23')][_0x19fdd6[_0xc02b('0x13c')]],[_0xc02b('0x44'),_0xc02b('0x146')])),_0xc02b('0x149'),JSON[_0xc02b('0x4e')](_0x19fdd6[_0xc02b('0x142')]));if(!_[_0xc02b('0xb4')](_0x19fdd6)&&_0x19fdd6[_0xc02b('0xb6')]==='1'&&_0x19fdd6['paused']==='0'&&this['agents'][_0x19fdd6[_0xc02b('0x13c')]][_0xc02b('0x146')]){this[_0xc02b('0x23')][_0x19fdd6[_0xc02b('0x13c')]]['unlockRR']=![];this[_0xc02b('0x2c')][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]['queue']]=[];this['preview'][_0xc02b('0x141')](_0x19fdd6[_0xc02b('0x142')],_0x19fdd6['stateinterface'])['catch'](function(_0x3c2c0a){logger[_0xc02b('0x9e')](_0xc02b('0x143'),util['inspect'](_0x3c2c0a,{'showHidden':![],'depth':null}));})[_0xc02b('0x1e')](function(){_0x4ebc62[_0xc02b('0xba')](_0x4ebc62['voiceQueues'][_0x4ebc62[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]);setTimeout(function(){_0x4ebc62['agents'][_0x19fdd6[_0xc02b('0x13c')]][_0xc02b('0x146')]=!![];loggerBooked[_0xc02b('0x86')]('[booked][RR][finaly]',_0x1d8f52['actionid'],'Agent:\x20',JSON[_0xc02b('0x4e')](_['pick'](_0x4ebc62['agents'][_0x19fdd6[_0xc02b('0x13c')]],[_0xc02b('0x44'),_0xc02b('0x146')])),_0xc02b('0x149'),JSON[_0xc02b('0x4e')](_0x19fdd6[_0xc02b('0x142')]));},0xc7);delete _0x4ebc62[_0xc02b('0x27')][_0x1d8f52['actionid']];unlockQueueStatus(_0x293a1a,_0x1d8f52[_0xc02b('0x13a')]);});}else{loggerBooked['info'](_0xc02b('0x14a'));this[_0xc02b('0xba')](this[_0xc02b('0x21')][this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xbb')]]);this[_0xc02b('0xc7')]({'active':![],'ContactId':this['actions'][_0x1d8f52['actionid']][_0xc02b('0xdb')],'ListId':this['actions'][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0x10a')],'VoiceQueueId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x14b')));delete this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]];unlockQueueStatus(_0x293a1a);}}else{loggerBooked[_0xc02b('0x86')](_0xc02b('0x14c'));this[_0xc02b('0xba')](this[_0xc02b('0x21')][this['actions'][_0x1d8f52[_0xc02b('0x13a')]]['queue']]);this[_0xc02b('0xc7')]({'active':![],'ContactId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xdb')],'ListId':this[_0xc02b('0x27')][_0x1d8f52['actionid']][_0xc02b('0x10a')],'VoiceQueueId':this['actions'][_0x1d8f52['actionid']][_0xc02b('0xdd')]||undefined,'CampaignId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x14d')));delete this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]];unlockQueueStatus(_0x293a1a);}}else{loggerBooked['info']('[booked][unlock3]');this[_0xc02b('0xba')](this[_0xc02b('0x21')][this[_0xc02b('0x27')][_0x1d8f52['actionid']]['queue']]);this[_0xc02b('0xc7')]({'active':![],'ContactId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]]['ContactId'],'ListId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0x10a')],'VoiceQueueId':this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xdd')]||undefined,'CampaignId':this['actions'][_0x1d8f52[_0xc02b('0x13a')]][_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x14e')));delete this[_0xc02b('0x27')][_0x1d8f52[_0xc02b('0x13a')]];unlockQueueStatus(_0x293a1a);}};Dialer['prototype'][_0xc02b('0x3c')]=function(){var _0x344d5d=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xc02b('0x3f')](function(){setInterval(function(){_0x344d5d[_0xc02b('0x14f')]();},0x3e8);});};Dialer[_0xc02b('0x1b')]['checkIsTrunkReachable']=function(_0x882ef){var _0x296297=this;return function(){if(!_0x296297['isTrunkReachable'](_0x882ef[_0xc02b('0x7d')])){if(!_0x296297[_0xc02b('0xe3')](_0x882ef['TrunkBackup'])){_0x882ef['message']=_0xc02b('0x150');throw _0x882ef[_0xc02b('0x44')]+_0xc02b('0x151');}}};};Dialer[_0xc02b('0x1b')]['checkIfTime']=function(_0x3514bf,_0x160d80,_0x396f13,_0x25959a){var _0x2c17be=this;return function(){var _0x28d4eb=!![];return _0x2c17be[_0xc02b('0x152')](_0x3514bf,_0x160d80,_0x396f13,_0x25959a,_0x28d4eb);};};Dialer[_0xc02b('0x1b')]['checkIfTimeIntervals']=function(_0x12ef3d,_0x102bea,_0x267d66,_0x32efeb){var _0x1eb580=this;return function(){var _0x4503b1=![];return _0x1eb580[_0xc02b('0x152')](_0x12ef3d[_0xc02b('0x4a')],_0x102bea,_0x267d66,_0x32efeb,_0x4503b1);};};Dialer[_0xc02b('0x1b')]['ifTime']=function(_0x154647,_0x32df28,_0x2fb300,_0x30a035,_0x4452cf){var _0x26b451=[];return new Promise(function(_0x4a4675,_0x4dd18e){if(!isNotNull(_0x154647)){_0x30a035[_0xc02b('0x42')]=_0xc02b('0x48');return _0x4dd18e(msgResponse(_0xc02b('0x152'),'Failure',_0x2fb300+_0xc02b('0x153')));}if(_[_0xc02b('0x4b')](_0x154647)){_0x30a035['message']=_0xc02b('0x154');return _0x4dd18e(msgResponse(_0xc02b('0x152'),_0xc02b('0x155'),_0x2fb300+'\x20Intervals\x20is\x20empty\x20'));}if(_0x32df28&&_['isUndefined'](config[_0xc02b('0x156')][_0x32df28])){_0x30a035['message']='TIMEZONE_UNKNOW';return _0x4dd18e(msgResponse(_0xc02b('0x152'),'Failure',_0x2fb300+_0xc02b('0x157')+_0x32df28));}if(_['isArray'](_0x154647)){for(var _0x2242a2=0x0;_0x2242a2<_0x154647[_0xc02b('0xa0')];_0x2242a2+=0x1){_0x26b451['push'](ami[_0xc02b('0xb5')]({'action':_0xc02b('0x158'),'command':util[_0xc02b('0x80')](_0xc02b('0x159'),_0x154647[_0x2242a2]['interval'],!_[_0xc02b('0x41')](config['timezones'][_0x32df28])?_0x32df28:'')})[_0xc02b('0x3f')](function(_0x3acd6a){return _0x3acd6a[_0xc02b('0x15a')][_0xc02b('0x15b')](_0xc02b('0x15c'))>=0x0;})['catch'](myreject(_0x4dd18e)));}}else{_0x26b451[_0xc02b('0x15d')](ami[_0xc02b('0xb5')]({'action':'command','command':util[_0xc02b('0x80')](_0xc02b('0x159'),_0x154647,!_['isUndefined'](config[_0xc02b('0x156')][_0x32df28])?_0x32df28:'')})[_0xc02b('0x3f')](function(_0x40ead6){return _0x40ead6[_0xc02b('0x15a')][_0xc02b('0x15b')](_0xc02b('0x15c'))>=0x0;})[_0xc02b('0xb8')](myreject(_0x4dd18e)));}Promise[_0xc02b('0x15e')](_0x26b451)[_0xc02b('0x3f')](function(_0x5a4017){var _0x3a09bd=_[_0xc02b('0x15f')](_0x5a4017);if(_0x3a09bd){return _0x4a4675(_0x3a09bd);}else{_0x30a035[_0xc02b('0x42')]=_0x4452cf?'GLOBAL_INTERVAL_IS_OVERTIME':_0xc02b('0x160');return _0x4dd18e(msgResponse(_0xc02b('0x161'),_0xc02b('0x155'),_0xc02b('0x162')+_0x4452cf+'\x20'+_0x2fb300+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0x154647,{'showHidden':![],'depth':null})+_0xc02b('0x163')+_0x32df28));}})['catch'](function(_0x4b6bf0){return _0x4dd18e(msgResponse('ifTime',_0xc02b('0x155'),JSON[_0xc02b('0x4e')](_0x4b6bf0)));});});};Dialer[_0xc02b('0x1b')]['checkDialMethod']=function(_0x3f1f39){var _0x1236a0=this;return function(){switch(_0x3f1f39['dialMethod']){case _0xc02b('0x164'):freeVariablesPredictive(_0x3f1f39);_0x1236a0[_0xc02b('0x165')](_0x3f1f39,0x1);break;case'power':freeVariablesPredictive(_0x3f1f39);_0x1236a0[_0xc02b('0x165')](_0x3f1f39,_0x3f1f39['dialPowerLevel']);break;case _0xc02b('0xa'):_0x1236a0[_0xc02b('0xa')](_0x3f1f39);break;case _0xc02b('0x9'):freeVariablesPredictive(_0x3f1f39);_0x1236a0['handlePower'](_0x3f1f39,0x1);break;default:freeVariablesPredictive(_0x3f1f39);logger[_0xc02b('0x9e')](_0xc02b('0x166'),_0x3f1f39[_0xc02b('0x44')],_0xc02b('0x167'));}};};Dialer[_0xc02b('0x1b')][_0xc02b('0x168')]=function(_0x26df9){return Promise['resolve']()[_0xc02b('0x3f')](cmHopper[_0xc02b('0x169')](_0x26df9['id'],previewRecallmeReminderInterval))[_0xc02b('0x3f')](function(_0x329843){for(var _0x4f0381=0x0;_0x4f0381<_0x329843[_0xc02b('0xa0')];_0x4f0381++){var _0x2bad27=_0x329843[_0x4f0381][_0xc02b('0x16a')][_0xc02b('0x44')];if(_0x2bad27)io['to'](util[_0xc02b('0x80')](_0xc02b('0x16b'),_0x2bad27))[_0xc02b('0xf1')]('user:dialPreviewRecallReminder',{'hopper':_0x329843[_0x4f0381]});}})[_0xc02b('0xb8')](function(){});};Dialer[_0xc02b('0x1b')]['launchHandleIvr']=function(_0xc139a6){var _0x25833e=this;return function(){_0x25833e[_0xc02b('0x16c')](_0xc139a6);};};Dialer['prototype'][_0xc02b('0x32')]=function(_0x58082c){var _0x2f788f=this;if(isNotPreview(_0x58082c['dialMethod'])){if(isVoiceQueueOutbound(_0x58082c[_0xc02b('0x52')])&&isActive(_0x58082c['dialActive'])){_0x58082c['sendMessageOneNotActive']=!![];Promise['resolve']()[_0xc02b('0x3f')](checkIsLoggedIn(_0x58082c,_0x58082c[_0xc02b('0x57')]))[_0xc02b('0x3f')](checkIsActive(_0x58082c,_0x58082c[_0xc02b('0x60')]))[_0xc02b('0x3f')](checkInterval(_0x58082c))['then'](_0x2f788f[_0xc02b('0x16d')](_0x58082c))[_0xc02b('0x3f')](_0x2f788f['checkIfTime'](_0x58082c[_0xc02b('0x16e')],_0x58082c[_0xc02b('0x16f')],_0x58082c[_0xc02b('0x44')],_0x58082c))[_0xc02b('0x3f')](_0x2f788f[_0xc02b('0x170')](_0x58082c['Interval'],_0x58082c[_0xc02b('0x16f')],_0x58082c[_0xc02b('0x44')],_0x58082c))[_0xc02b('0x3f')](_0x2f788f['checkDialMethod'](_0x58082c))['catch'](loggerCatchQueueSummary(_0xc02b('0x171'),_0x58082c));}else{notSendMessagesQueue(_0x58082c);}}else{freeVariablesPredictive(_0x58082c);}};Dialer[_0xc02b('0x1b')][_0xc02b('0x34')]=_[_0xc02b('0x172')](function(){var _0xeabb16=_[_0xc02b('0x173')](this[_0xc02b('0x21')],function(_0x26ff74){return _0x26ff74[_0xc02b('0x174')];});var _0x359a49=_['filter'](this[_0xc02b('0x23')],function(_0x138395){return _0x138395[_0xc02b('0x175')]&&_0x138395[_0xc02b('0xb6')]==='reachable';});if(_0xeabb16[_0xc02b('0xa0')]>0x0&&_0x359a49['length']>0x0){return Promise[_0xc02b('0xc0')]()[_0xc02b('0x3f')](cmHopper[_0xc02b('0x169')](_[_0xc02b('0x176')](_0xeabb16,'id'),previewRecallmeReminderInterval,_['map'](_0x359a49,'id')))[_0xc02b('0x3f')](function(_0x19a849){for(var _0x2ff309=0x0;_0x2ff309<_0x19a849[_0xc02b('0xa0')];_0x2ff309++){var _0x2afe3f=_0x19a849[_0x2ff309][_0xc02b('0x16a')][_0xc02b('0x44')];if(_0x2afe3f)io['to'](util[_0xc02b('0x80')](_0xc02b('0x16b'),_0x2afe3f))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x19a849[_0x2ff309]});}})['catch'](function(_0x35ec3b){logger['error'](_0xc02b('0x168'),_0x35ec3b);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xc02b('0x1b')]['syncCampaigns']=function(){var _0x303a09=this;var _0x3fbfec;for(var _0xc5c130 in this['campaigns']){if(typeof this['campaigns'][_0xc5c130]!=='undefined'){_0x3fbfec=this[_0xc02b('0x22')][_0xc5c130];if(isCampaignIvr(_0x3fbfec[_0xc02b('0x52')])&&isActive(_0x3fbfec['active'])){_0x3fbfec[_0xc02b('0xa6')]=!![];Promise[_0xc02b('0xc0')]()['then'](checkIsActive(_0x3fbfec,_0x3fbfec['active']))[_0xc02b('0x3f')](checkInterval(_0x3fbfec))[_0xc02b('0x3f')](_0x303a09[_0xc02b('0x16d')](_0x3fbfec))['then'](_0x303a09[_0xc02b('0x177')](_0x3fbfec[_0xc02b('0x16e')],_0x3fbfec[_0xc02b('0x16f')],_0x3fbfec[_0xc02b('0x44')],_0x3fbfec))[_0xc02b('0x3f')](_0x303a09[_0xc02b('0x170')](_0x3fbfec['Interval'],_0x3fbfec[_0xc02b('0x16f')],_0x3fbfec[_0xc02b('0x44')],_0x3fbfec))[_0xc02b('0x3f')](_0x303a09[_0xc02b('0x178')](_0x3fbfec))['catch'](loggerCatchQueueSummary(_0xc02b('0x179'),_0x3fbfec));}else{notSendMessagesCampaign(_0x3fbfec);}}}};function getCallerIdRandom(_0x3a4639,_0x1889c4){var _0x2594c1;var _0x5825f7;var _0x2b33c1;if(_0x1889c4<=0x0){_0x1889c4=0x1;}_0x2594c1=new RegExp(_0xc02b('0x17a')+_0x1889c4+'}$');_0x5825f7=Math[_0xc02b('0x17b')](0xa,_0x1889c4-0x1);_0x2b33c1=Math[_0xc02b('0x17b')](0xa,_0x1889c4)-0x1;return util[_0xc02b('0x80')]('%s',_[_0xc02b('0x17c')](_0x3a4639,_0x2594c1,_['random'](_0x5825f7,_0x2b33c1)));}function extractCalleridName(_0x243b92){var _0x1d10ba=_0x243b92[_0xc02b('0x17d')](/"(.*?)"/);return _0x1d10ba?_0x1d10ba[0x1]:_0x243b92;}Dialer['prototype'][_0xc02b('0x17e')]=function(_0x15c4ed,_0x57c8fb){var _0x366a25=this;var _0xfa0de5=uuid['v4']();this[_0xc02b('0x27')][_0xfa0de5]=new Action(_0x15c4ed,_0x57c8fb,_0xfa0de5);return new Promise(function(_0x28b4a8,_0x425367){if(_[_0xc02b('0x41')](_0x15c4ed)&&typeof _0x15c4ed!==_0xc02b('0x17f')){return _0x425367(msgResponse(_0xc02b('0x180'),_0xc02b('0x155'),_0xc02b('0x181')));}if(_[_0xc02b('0x41')](_0x57c8fb[_0xc02b('0x182')])||_0x57c8fb[_0xc02b('0x182')]===null){return _0x425367(msgResponse(_0xc02b('0x180'),_0xc02b('0x155'),_0xc02b('0x183')));}var _0x1e269a={'XMD-CALLERID':_0x366a25[_0xc02b('0x27')][_0xfa0de5][_0xc02b('0x184')](),'XMD-AGI':_0x15c4ed[_0xc02b('0x112')]?util[_0xc02b('0x80')](_0xc02b('0x185'),ipAgi,_0x15c4ed[_0xc02b('0x112')]):_0xc02b('0x186'),'XMD-AGIAFTER':_0x15c4ed['dialQueueProject2']?util[_0xc02b('0x80')](_0xc02b('0x185'),ipAgi,_0x15c4ed[_0xc02b('0x118')]):_0xc02b('0x186'),'XMD-QUEUE':_0x15c4ed['type']===_0xc02b('0x53')?util['format'](_0xc02b('0x187'),_0x15c4ed[_0xc02b('0x44')],_0x15c4ed[_0xc02b('0x188')]||'',_0x15c4ed['dialAgiAfterHangupAgent']?'c':'',_0x15c4ed[_0xc02b('0x123')]||0x3):'NONE','XMD-CONTACTID':_0x57c8fb['ContactId'],'XMD-CDRTYPE':_0xc02b('0x189'),'CALLERID(all)':_0x366a25[_0xc02b('0x27')][_0xfa0de5][_0xc02b('0x184')](),'XMD-AMD':_0x15c4ed[_0xc02b('0x18a')]?'ACTIVE':_0xc02b('0x186'),'XMD-DESTINATION':_0xc02b('0xeb')};if(_0x15c4ed['dialAMDActive']){_0x1e269a[_0xc02b('0x18b')]=_0x15c4ed[_0xc02b('0x18c')]||0x9c4;_0x1e269a[_0xc02b('0x18d')]=_0x15c4ed[_0xc02b('0x18e')]||0x5dc;_0x1e269a['XMD-AMDAFTERGREETINGSILENCE']=_0x15c4ed[_0xc02b('0x18f')]||0x320;_0x1e269a[_0xc02b('0x190')]=_0x15c4ed[_0xc02b('0x191')]||0x1388;_0x1e269a[_0xc02b('0x192')]=_0x15c4ed['dialAMDMinWordLength']||0x64;_0x1e269a[_0xc02b('0x193')]=_0x15c4ed['dialAMDBetweenWordsSilence']||0x32;_0x1e269a[_0xc02b('0x194')]=_0x15c4ed[_0xc02b('0x195')]||0x3;_0x1e269a[_0xc02b('0x196')]=_0x15c4ed[_0xc02b('0x197')]||0x100;_0x1e269a['XMD-AMDMAXIMUMWORDLENGTH']=_0x15c4ed[_0xc02b('0x198')]||0x1388;}if(_0x15c4ed[_0xc02b('0x52')]===_0xc02b('0x53')){_0x1e269a[_0xc02b('0x199')]=_0x57c8fb['VoiceQueueId'];}else{_0x1e269a[_0xc02b('0x19a')]=_0x57c8fb[_0xc02b('0xde')];}for(var _0x5da1b5 in _0x57c8fb['Contact']){if(typeof _0x57c8fb['Contact'][_0x5da1b5]!==_0xc02b('0xb3')){if(isNotNull(_0x57c8fb[_0xc02b('0x19b')][_0x5da1b5])&&_0x5da1b5!=='id'&&_0x5da1b5!==_0xc02b('0x19c')&&_0x5da1b5!==_0xc02b('0x19d')&&_0x5da1b5!==_0xc02b('0x19e')){_0x1e269a[util['format'](_0xc02b('0x19f'),_0xc02b('0x1a0'),_[_0xc02b('0x1a1')](_0x5da1b5))]=_0x57c8fb[_0xc02b('0x19b')][_0x5da1b5];}}}var _0x54cd86=_0x366a25[_0xc02b('0xe3')](_0x15c4ed[_0xc02b('0x7d')])?getCallerId(_0x15c4ed[_0xc02b('0x7d')][_0xc02b('0x7f')],_0x15c4ed[_0xc02b('0x62')],_0x15c4ed[_0xc02b('0x1a2')]>0x0?getCallerIdRandom(_0x15c4ed[_0xc02b('0x63')],_0x15c4ed['dialRandomLastDigitCallerIdNumber']):_0x15c4ed[_0xc02b('0x63')]):getCallerId(_[_0xc02b('0xb4')](_0x15c4ed[_0xc02b('0x1a3')])?_0x15c4ed[_0xc02b('0x7d')][_0xc02b('0x7f')]:_0x15c4ed[_0xc02b('0x1a3')]['callerid'],_0x15c4ed[_0xc02b('0x62')],_0x15c4ed['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x15c4ed[_0xc02b('0x63')],_0x15c4ed[_0xc02b('0x1a2')]):_0x15c4ed[_0xc02b('0x63')]);if(_0x54cd86){_0x1e269a[_0xc02b('0x1a4')]=_0x366a25['actions'][_0xfa0de5]['originatecalleridname']=extractCalleridName(_0x54cd86);_0x1e269a['XMD-ORIGINATECALLERIDNUM']=_0x57c8fb[_0xc02b('0x182')];}_0x15c4ed['variables']=_0x1e269a;return ami[_0xc02b('0xb5')]({'actionid':_0xfa0de5,'action':_0xc02b('0x180'),'channel':_0x366a25[_0xc02b('0xe3')](_0x15c4ed[_0xc02b('0x7d')])?util[_0xc02b('0x80')]('SIP/%s/%s%s',_0x15c4ed[_0xc02b('0x7d')][_0xc02b('0x44')],isNotNull(_0x15c4ed['dialPrefix'])?_0x15c4ed['dialPrefix'][_0xc02b('0x1a5')]()||'':'',_0x15c4ed[_0xc02b('0x1a6')]>0x0?_0x57c8fb[_0xc02b('0x182')]['substring'](_0x15c4ed[_0xc02b('0x1a6')]):_0x57c8fb[_0xc02b('0x182')]):util[_0xc02b('0x80')](_0xc02b('0x1a7'),_[_0xc02b('0xb4')](_0x15c4ed[_0xc02b('0x1a3')])?_0x15c4ed['Trunk'][_0xc02b('0x44')]:_0x15c4ed[_0xc02b('0x1a3')][_0xc02b('0x44')],isNotNull(_0x15c4ed[_0xc02b('0x65')])?_0x15c4ed[_0xc02b('0x65')][_0xc02b('0x1a5')]()||'':'',_0x15c4ed['dialCutDigit']>0x0?_0x57c8fb[_0xc02b('0x182')]['substring'](_0x15c4ed[_0xc02b('0x1a6')]):_0x57c8fb[_0xc02b('0x182')]),'callerid':_0x54cd86,'Exten':_0xc02b('0xeb'),'Context':'from-sip','Priority':'1','variable':_0x1e269a,'timeout':(_0x15c4ed[_0xc02b('0x64')]||0x1e)*0x3e8,'async':!![],'channelid':_0xfa0de5})[_0xc02b('0x3f')](function(_0x449068){return _0x28b4a8(_0x449068);})[_0xc02b('0xb8')](function(_0x26a445){_0x15c4ed[_0xc02b('0x1a8')]+=0x1;var _0x10f6c4=new History(_0x366a25[_0xc02b('0x27')][_0xfa0de5]);logger[_0xc02b('0x9e')](util[_0xc02b('0x80')]('[originateError]:\x20%s',JSON[_0xc02b('0x4e')](_0x26a445)));_0x10f6c4[_0xc02b('0xac')]=0xe;_0x10f6c4['statedesc']=_0xc02b('0x1a9');_0x10f6c4[_0xc02b('0xaf')]=moment()[_0xc02b('0x80')](_0xc02b('0x109'));_0x10f6c4[_0xc02b('0xae')]=_0x10f6c4[_0xc02b('0xaf')];_0x366a25[_0xc02b('0xd3')](_0x10f6c4)['catch'](loggerCatch(_0xc02b('0x1aa')));_0x366a25[_0xc02b('0xd1')](_0x10f6c4)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1aa')))[_0xc02b('0x1e')](function(){delete _0x366a25['actions'][_0xfa0de5];return _0x425367(msgResponse(_0xc02b('0x180'),_0xc02b('0x4d'),'originate\x20action\x20Error'));});});});};Dialer[_0xc02b('0x1b')][_0xc02b('0x1ab')]=function(_0x4a0d6c){var _0x514790=this[_0xc02b('0x27')][_0x4a0d6c[_0xc02b('0x13a')]];if(_0x514790){delete this[_0xc02b('0x27')][_0x4a0d6c[_0xc02b('0x13a')]];_0x514790['responsetime']=moment()[_0xc02b('0x80')](_0xc02b('0x109'));var _0x311af1=_0x514790[_0xc02b('0x52')]===_0xc02b('0x83')?this[_0xc02b('0x22')][_0x514790[_0xc02b('0xbb')]]:this[_0xc02b('0x21')][_0x514790['getQueue']()];if(!this[_0xc02b('0xe1')](_0x4a0d6c[_0xc02b('0x1ac')])){this[_0xc02b('0xba')](_0x311af1);return this[_0xc02b('0x1ad')](_0x514790,_0x311af1,_0x4a0d6c)[_0xc02b('0xb8')](loggerCatch('[callProgressDetecting]\x20'));}this['uniqueId'][_0x4a0d6c[_0xc02b('0xe7')]]=_0x514790;}};Dialer[_0xc02b('0x1b')]['checkRetriveMax']=function(_0x220db9,_0x3add34,_0x3cbab3){var _0xcbb9b2=new History(_0x3add34);if(_0xcbb9b2[_0xc02b('0xfb')]+_0xcbb9b2['countcongestionretry']+_0xcbb9b2[_0xc02b('0xfd')]+_0xcbb9b2[_0xc02b('0xfe')]+_0xcbb9b2[_0xc02b('0xff')]+_0xcbb9b2[_0xc02b('0x100')]+_0xcbb9b2[_0xc02b('0xf8')]+_0xcbb9b2[_0xc02b('0x101')]>=_0x3cbab3[_0xc02b('0x10d')]-0x1){return!![];}switch(_0x220db9){case 0x3:if(_0xcbb9b2['countnoanswerretry']>=_0x3cbab3[_0xc02b('0x1ae')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countnoanswerretry':_0xcbb9b2[_0xc02b('0xfd')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3['dialNoAnswerRetryFrequency'],'minutes')[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2['ListId'],'VoiceQueueId':_0xcbb9b2[_0xc02b('0xdd')]||undefined,'CampaignId':_0xcbb9b2['CampaignId']||undefined})['catch'](loggerCatch(_0xc02b('0x1af')));break;case 0x5:if(_0xcbb9b2[_0xc02b('0xfb')]>=_0x3cbab3[_0xc02b('0x1b0')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countbusyretry':_0xcbb9b2[_0xc02b('0xfb')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3[_0xc02b('0x1b1')],_0xc02b('0x108'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2['VoiceQueueId']||undefined,'CampaignId':_0xcbb9b2[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1b2')));break;case 0x8:if(_0xcbb9b2[_0xc02b('0xfc')]>=_0x3cbab3[_0xc02b('0x1b3')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countcongestionretry':_0xcbb9b2[_0xc02b('0xfc')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3[_0xc02b('0x1b4')],_0xc02b('0x108'))[_0xc02b('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2[_0xc02b('0xdd')]||undefined,'CampaignId':_0xcbb9b2[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1b5')));break;case 0x0:if(_0xcbb9b2[_0xc02b('0xfe')]>=_0x3cbab3[_0xc02b('0x1b6')]-0x1){return!![];}else{this[_0xc02b('0xc7')]({'active':![],'countnosuchnumberretry':_0xcbb9b2[_0xc02b('0xfe')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3[_0xc02b('0x1b7')],_0xc02b('0x108'))[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2[_0xc02b('0xdd')]||undefined,'CampaignId':_0xcbb9b2[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1b8')));}break;case 0xa:if(_0xcbb9b2[_0xc02b('0xff')]>=_0x3cbab3[_0xc02b('0x12e')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countdropretry':_0xcbb9b2[_0xc02b('0xff')]+=0x1,'scheduledat':moment()['add'](_0x3cbab3[_0xc02b('0x129')],'minutes')[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2['ListId'],'VoiceQueueId':_0xcbb9b2['VoiceQueueId']||undefined,'CampaignId':_0xcbb9b2['CampaignId']||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x12f')));break;case 0xb:if(_0xcbb9b2[_0xc02b('0x100')]>=_0x3cbab3[_0xc02b('0x1b9')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countabandonedretry':_0xcbb9b2['countabandonedretry']+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3[_0xc02b('0x137')],'minutes')[_0xc02b('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xcbb9b2['ContactId'],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2[_0xc02b('0xdd')]||undefined,'CampaignId':_0xcbb9b2[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x138')));break;case 0x13:if(_0xcbb9b2[_0xc02b('0xf8')]>=_0x3cbab3['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0xcbb9b2[_0xc02b('0xf8')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3[_0xc02b('0x107')],_0xc02b('0x108'))[_0xc02b('0x80')](_0xc02b('0x109')),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2[_0xc02b('0xdd')]||undefined,'CampaignId':_0xcbb9b2[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x10f')));break;case 0x14:if(_0xcbb9b2[_0xc02b('0x101')]>=_0x3cbab3[_0xc02b('0x1ba')]-0x1){return!![];}this[_0xc02b('0xc7')]({'active':![],'countagentrejectretry':_0xcbb9b2[_0xc02b('0x101')]+=0x1,'scheduledat':moment()[_0xc02b('0x106')](_0x3cbab3['dialAgentRejectRetryFrequency'],'minutes')[_0xc02b('0x80')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xcbb9b2[_0xc02b('0xdb')],'ListId':_0xcbb9b2[_0xc02b('0x10a')],'VoiceQueueId':_0xcbb9b2['VoiceQueueId']||undefined,'CampaignId':_0xcbb9b2['CampaignId']||undefined})['catch'](loggerCatch(_0xc02b('0x1bb')));break;default:return!![];}};Dialer[_0xc02b('0x1b')]['callProgressDetecting']=function(_0x22dded,_0x12f7ed,_0x457fd6){var _0xd77b75=this;var _0x41adb3=new History(_0x22dded);var _0x535e46=![];var _0x5058c4;var _0x511bc8;return new Promise(function(_0x34c3b8,_0x4d0a93){if(_[_0xc02b('0x41')](_0x12f7ed)&&typeof _0x12f7ed!=='object'){return _0x4d0a93(msgResponse(_0xc02b('0x1bc'),_0xc02b('0x155'),'entity\x20is\x20undefine'));}if(_['isUndefined'](_0x457fd6)&&typeof _0x457fd6!==_0xc02b('0x17f')){return _0x4d0a93(msgResponse(_0xc02b('0x1bc'),_0xc02b('0x155'),_0xc02b('0x1bd')));}_0xd77b75[_0xc02b('0x12b')](_0x41adb3,_0x457fd6[_0xc02b('0x116')],_0x12f7ed)['then'](function(_0x3dc632){if(_0x3dc632[_0xc02b('0x12d')]==0x1)_0x535e46=!![];switch(_0x457fd6[_0xc02b('0x116')]){case'0':_0x12f7ed['outboundNoSuchCallsDay']+=0x1;_0x41adb3[_0xc02b('0xac')]=0x0;_0x41adb3[_0xc02b('0xad')]=_0xc02b('0x1be');_0x41adb3[_0xc02b('0xfe')]+=0x1;_0x41adb3[_0xc02b('0x136')]+=0x1;ami[_0xc02b('0xf1')]('custom:agentnosuchnumber',ut[_0xc02b('0xf9')](_0x22dded,_0xc02b('0x1bf')));_0x5058c4=_0x12f7ed[_0xc02b('0x1b7')];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];_0xd77b75[_0xc02b('0xd3')](_0x41adb3)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xfa')));if(_0xd77b75[_0xc02b('0x1c0')](0x0,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0xfe')]>=_0x12f7ed[_0xc02b('0x1b6')]){_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1c1'));}else{_0xd77b75[_0xc02b('0x102')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1c1'));}}break;case'3':_0x12f7ed['outboundNoAnswerCallsDay']+=0x1;_0x41adb3[_0xc02b('0xac')]=0x3;_0x41adb3[_0xc02b('0xad')]=_0xc02b('0x1c2');_0x41adb3['countnoanswerretry']+=0x1;_0x41adb3[_0xc02b('0x136')]+=0x1;var _0x95465d=ut[_0xc02b('0x1c3')](_0x22dded,_0x12f7ed);ami[_0xc02b('0xf1')](_0xc02b('0x1c4'),_0x95465d);_0x5058c4=_0x12f7ed['dialNoAnswerRetryFrequency'];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];_0xd77b75[_0xc02b('0xd3')](_0x41adb3)['catch'](loggerCatch(_0xc02b('0x1c5')));if(_0xd77b75[_0xc02b('0x1c0')](0x3,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0xfd')]>=_0x12f7ed[_0xc02b('0x1ae')]){_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1c6'));}else{_0xd77b75[_0xc02b('0x102')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1c6'));}}break;case'5':_0x12f7ed[_0xc02b('0x1c7')]+=0x1;_0x41adb3['state']=0x5;_0x41adb3[_0xc02b('0xad')]=_0xc02b('0x1c8');_0x41adb3[_0xc02b('0xfb')]+=0x1;_0x41adb3[_0xc02b('0x136')]+=0x1;ami[_0xc02b('0xf1')](_0xc02b('0x1c9'),ut[_0xc02b('0xf9')](_0x22dded,'busy'));_0x5058c4=_0x12f7ed[_0xc02b('0x1b1')];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];_0xd77b75['createHistory'](_0x41adb3)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1ca')));if(_0xd77b75[_0xc02b('0x1c0')](0x5,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0xfb')]>=_0x12f7ed[_0xc02b('0x1b0')]){_0xd77b75['createStateFinal'](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1cb'));}else{_0xd77b75['stateGlobal'](_0x41adb3,_0x34c3b8,_0x4d0a93,'reason\x205\x20busy');}}break;case'8':_0x12f7ed[_0xc02b('0x69')]+=0x1;_0x41adb3[_0xc02b('0xac')]=0x8;_0x41adb3[_0xc02b('0xad')]='Congestion';_0x41adb3[_0xc02b('0xfc')]+=0x1;_0x41adb3['countglobal']+=0x1;_0x5058c4=_0x12f7ed['dialCongestionRetryFrequency'];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];ami[_0xc02b('0xf1')]('custom:agentcongestion',ut[_0xc02b('0xf9')](_0x22dded,_0xc02b('0x1cc')));_0xd77b75[_0xc02b('0xd3')](_0x41adb3)['catch'](loggerCatch(_0xc02b('0x1cd')));if(_0xd77b75[_0xc02b('0x1c0')](0x8,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0xfc')]>=_0x12f7ed[_0xc02b('0x1b3')]){_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1ce'));}else{_0xd77b75[_0xc02b('0x102')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1ce'));}}break;case'11':_0x12f7ed[_0xc02b('0x1cf')]+=0x1;_0x41adb3[_0xc02b('0xac')]=0xb;_0x41adb3[_0xc02b('0xad')]=_0xc02b('0x133');_0x41adb3[_0xc02b('0x100')]+=0x1;_0x41adb3[_0xc02b('0x136')]+=0x1;_0x5058c4=_0x12f7ed[_0xc02b('0x137')];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];_0xd77b75['createHistory'](_0x41adb3)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1d0')));if(_0xd77b75[_0xc02b('0x1c0')](0xb,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0x100')]>=_0x12f7ed[_0xc02b('0x1b9')]){_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1d1'));}else{_0xd77b75['stateGlobal'](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1d1'));}}break;case'20':_0x12f7ed[_0xc02b('0x6d')]+=0x1;_0x41adb3[_0xc02b('0xac')]=0x14;_0x41adb3[_0xc02b('0xad')]=_0xc02b('0x1d2');_0x41adb3[_0xc02b('0x101')]+=0x1;_0x41adb3['countglobal']+=0x1;_0x5058c4=_0x12f7ed[_0xc02b('0x1d3')];_0x511bc8=_0x12f7ed['callAdditionalPhoneAfterMin'];ami[_0xc02b('0xf1')](_0xc02b('0x1d4'),ut[_0xc02b('0xf9')](_0x22dded,'agentreject'));_0xd77b75['createHistory'](_0x41adb3)['catch'](loggerCatch(_0xc02b('0x1d5')));if(_0xd77b75['checkRetriveMax'](0x14,_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3[_0xc02b('0x101')]>=_0x12f7ed[_0xc02b('0x1ba')]){_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,'reason\x2020\x20agentreject');}else{_0xd77b75[_0xc02b('0x102')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0xc02b('0x1d6'));}}break;default:_0x12f7ed[_0xc02b('0x6e')]+=0x1;_0x41adb3[_0xc02b('0xac')]=0xc;_0x41adb3[_0xc02b('0xad')]=_0x457fd6[_0xc02b('0x116')];_0x5058c4=_0x12f7ed[_0xc02b('0x1d3')];_0x511bc8=_0x12f7ed[_0xc02b('0x12a')];_0xd77b75[_0xc02b('0xd3')](_0x41adb3)[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x1d7')));if(_0xd77b75['checkRetriveMax'](_0x457fd6['reason'],_0x22dded,_0x12f7ed)&&!_0x535e46){if(_0x41adb3['countbusyretry']+_0x41adb3[_0xc02b('0xfc')]+_0x41adb3[_0xc02b('0xfd')]+_0x41adb3[_0xc02b('0xfe')]+_0x41adb3['countdropretry']+_0x41adb3[_0xc02b('0x100')]+_0x41adb3[_0xc02b('0xf8')]+_0x41adb3['countagentrejectretry']>=_0x12f7ed['dialGlobalMaxRetry']){_0xd77b75['stateGlobal'](_0x41adb3,_0x34c3b8,_0x4d0a93,_0x457fd6[_0xc02b('0x116')]);}else{_0xd77b75[_0xc02b('0x104')](_0x41adb3,_0x34c3b8,_0x4d0a93,_0x457fd6[_0xc02b('0x116')]);}}}})[_0xc02b('0x3f')](function(){if(_0x535e46){_0xd77b75[_0xc02b('0xc1')](_0x41adb3,_0x5058c4,_0x511bc8)[_0xc02b('0x3f')](function(){return _0x34c3b8(0x1);});}});});};Dialer[_0xc02b('0x1b')][_0xc02b('0x102')]=function(_0x31522a,_0x2d6ecb,_0x534be7,_0x53950d){var _0x2afd1d=new Final(_0x31522a);_0x2afd1d['state']=0xf;_0x2afd1d[_0xc02b('0xad')]=_0xc02b('0x1d8');this[_0xc02b('0x104')](_0x2afd1d,_0x2d6ecb,_0x534be7,_0x53950d);};Dialer[_0xc02b('0x1b')][_0xc02b('0x104')]=function(_0x4eb7f6,_0x3582b1,_0x296b8f,_0x41208a){this[_0xc02b('0xd1')](_0x4eb7f6)['then'](function(){return _0x3582b1(msgResponse(_0xc02b('0x1bc'),'Success',_0x41208a));})[_0xc02b('0xb8')](function(){return _0x296b8f(msgResponse(_0xc02b('0x1d9'),_0xc02b('0x155'),'contact\x20not\x20moved'));});};Dialer['prototype'][_0xc02b('0xa')]=function(_0x40ae84){var _0x1e16f1=_0x40ae84[_0xc02b('0x1da')]/0x64;var _0x25651d=_0x40ae84[_0xc02b('0x124')]/(_0x40ae84['outboundDropCallsDayTimeout']+_0x40ae84['outboundAnswerCallsDay']);var _0x1e2e14=Math[_0xc02b('0x1db')](_0x40ae84[_0xc02b('0x1dc')]*(_0x40ae84['predictiveIntervalMaxThreshold']/0x64));var _0x27eb17=Math[_0xc02b('0x1db')](_0x40ae84[_0xc02b('0x1dc')]*(_0x40ae84[_0xc02b('0x1dd')]/0x64));var _0x526d46=_0x40ae84[_0xc02b('0x56')]+_0x40ae84[_0xc02b('0x5c')];var _0x28f75f=Math[_0xc02b('0x1de')](_0x40ae84['erlangCalls']*_0x40ae84[_0xc02b('0x7a')]*_0x40ae84[_0xc02b('0x1df')]*_0x40ae84[_0xc02b('0x75')]);if(_[_0xc02b('0x41')](_0x40ae84[_0xc02b('0x2a')])){if(!_[_0xc02b('0x41')](_0x40ae84[_0xc02b('0x7c')])){_0x40ae84[_0xc02b('0x7c')]=undefined;loggerPredictive[_0xc02b('0x9e')](_0xc02b('0x1e0'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0xc02b('0x41')](_0x40ae84[_0xc02b('0x1e1')])){loggerPredictive[_0xc02b('0x9e')]('[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine');clearInterval(_0x40ae84[_0xc02b('0x1e1')]);_0x40ae84['handlePredictive']=undefined;}_0x40ae84[_0xc02b('0x2a')]=moment()['format'](_0xc02b('0x109'));loggerPredictive['info'](_0x40ae84[_0xc02b('0x44')],'collection\x20data\x20in\x20progressive\x20at',_0x40ae84[_0xc02b('0x2a')]);this[_0xc02b('0x165')](_0x40ae84,0x1);}else if(ifInterval(_0x40ae84[_0xc02b('0x1e2')],_0x40ae84[_0xc02b('0x2a')])){this[_0xc02b('0x165')](_0x40ae84,0x1);loggerPredictiveCalls[_0xc02b('0x86')](_0xc02b('0x1e3'),_0x40ae84[_0xc02b('0x2a')],_0x40ae84['name']);_0x40ae84[_0xc02b('0x91')]=0x0;_0x40ae84[_0xc02b('0x125')]=0x0;}else if(_0x1e16f1<_0x25651d&&_0x40ae84[_0xc02b('0x1e4')]===_0xc02b('0x1e5')){freeVariablesPredictive(_0x40ae84);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x1e6'),'Dropped\x20calls\x20day',_0x25651d,_0xc02b('0x2a'),_0x40ae84[_0xc02b('0x44')]);}else if(_0x28f75f<_0x40ae84[_0xc02b('0x125')]&&_0x40ae84[_0xc02b('0x1e4')]==='dropRate'){freeVariablesPredictive(_0x40ae84);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x1e7'),_0xc02b('0x1e8'),_0x28f75f,_0xc02b('0x1e9'),_0x40ae84[_0xc02b('0x125')],_0xc02b('0x2a'),_0x40ae84[_0xc02b('0x44')]);}else if(!ifInterval(_0x40ae84[_0xc02b('0x1e2')],_0x40ae84[_0xc02b('0x2a')])&&_[_0xc02b('0x41')](_0x40ae84[_0xc02b('0x7c')])&&!_[_0xc02b('0x41')](_0x40ae84[_0xc02b('0x2a')])){_0x40ae84[_0xc02b('0x7c')]=moment()['format'](_0xc02b('0x109'));loggerPredictive[_0xc02b('0x86')](_0x40ae84['name'],'started\x20in\x20predictive\x20at',_0x40ae84[_0xc02b('0x7c')]);this['averageHandleTime'](_0x40ae84['dialPredictiveInterval'])[_0xc02b('0x3f')](this[_0xc02b('0x1ea')](_0x40ae84))[_0xc02b('0x3f')](mergeDataErlangB(_0x40ae84))[_0xc02b('0x3f')](this['startMethodPredictive'](_0x40ae84))['catch'](loggerCatchPredictive(_0xc02b('0x1eb'),_0x40ae84));}else if(!ifInterval(_0x40ae84[_0xc02b('0x1e2')],_0x40ae84[_0xc02b('0x7c')])){_0x40ae84[_0xc02b('0x125')]=0x0;_0x40ae84[_0xc02b('0x7c')]=moment()[_0xc02b('0x80')](_0xc02b('0x109'));loggerPredictive[_0xc02b('0x86')](_0x40ae84[_0xc02b('0x44')],_0xc02b('0x1ec'),_0x40ae84[_0xc02b('0x7c')]);clearInterval(_0x40ae84[_0xc02b('0x1e1')]);_0x40ae84[_0xc02b('0x1e1')]=undefined;this[_0xc02b('0xc4')](_0x40ae84[_0xc02b('0x1e2')])['then'](this[_0xc02b('0x1ea')](_0x40ae84))[_0xc02b('0x3f')](mergeDataErlangB(_0x40ae84))[_0xc02b('0x3f')](this[_0xc02b('0x1ed')](_0x40ae84))[_0xc02b('0xb8')](loggerCatchPredictive(_0xc02b('0x1ee'),_0x40ae84));}else if(_0x40ae84[_0xc02b('0x1dc')]&&_0x526d46<_0x40ae84[_0xc02b('0x1dc')]-_0x27eb17){freeVariablesPredictive(_0x40ae84);loggerPredictive[_0xc02b('0x86')](_0x40ae84['name'],_0xc02b('0x1ef'),_0x526d46,_0xc02b('0x1f0'),_0x40ae84[_0xc02b('0x1dc')],'-',_0x27eb17,'=',_0x40ae84[_0xc02b('0x1dc')]-_0x27eb17,')');}else if(_0x40ae84[_0xc02b('0x1dc')]&&_0x526d46>_0x40ae84['predictiveIntervalAvailable']+_0x1e2e14){freeVariablesPredictive(_0x40ae84);loggerPredictive[_0xc02b('0x86')](_0x40ae84[_0xc02b('0x44')],_0xc02b('0x1ef'),_0x526d46,_0xc02b('0x1f1'),_0x40ae84[_0xc02b('0x1dc')],'+',_0x1e2e14,'=',_0x40ae84['predictiveIntervalAvailable']+_0x1e2e14,')');}};Dialer[_0xc02b('0x1b')]['getDataPredictive']=function(_0x43fbeb){var _0x459169=this;return function(_0x9da848){return new Promise(function(_0x3bff54,_0x5d071e){_[_0xc02b('0x96')](_0x43fbeb,_0x9da848[0x0]);if(checkGetDataPredictive(_0x9da848[0x0])){var _0xd5b576=_0x43fbeb[_0xc02b('0x1dc')]=_0x43fbeb[_0xc02b('0x5c')]+_0x43fbeb['available'];var _0x499bd8=_0x43fbeb[_0xc02b('0x1e2')]*0x3c;var _0x4bbb81=_0x9da848[0x0][_0xc02b('0x71')]+_0x9da848[0x0]['predictiveIntervalAvgHoldtime'];var _0x432b36=(_0x9da848[0x0][_0xc02b('0x6f')]+_0x9da848[0x0][_0xc02b('0x73')]+_0x9da848[0x0][_0xc02b('0x72')])/_0x9da848[0x0][_0xc02b('0x77')];_0x43fbeb[_0xc02b('0x1df')]=_0x432b36>0x0?_0x432b36:0x1;switch(_0x43fbeb['dialPredictiveOptimization']){case _0xc02b('0x1e5'):var _0x2ae7c2=_0x43fbeb[_0xc02b('0x1da')]/0x64;return _0x459169[_0xc02b('0x1f2')](_0xd5b576,_0x499bd8,_0x4bbb81,_0x432b36,_0x2ae7c2)[_0xc02b('0x3f')](function(_0x20b0e6){return _0x3bff54(_0x20b0e6);});case _0xc02b('0x1f3'):var _0x47af19=_0x43fbeb['dialPredictiveOptimizationPercentage']/0x64;return _0x459169['busyFactor'](_0xd5b576,_0x499bd8,_0x4bbb81,_0x432b36,_0x47af19)['then'](function(_0x1faba1){return _0x3bff54(_0x1faba1);});default:return _0x5d071e(msgResponse(_0xc02b('0x1f4'),_0xc02b('0x155'),_0xc02b('0x1f5')));}}else{return _0x5d071e(msgResponse(_0xc02b('0x1f4'),'Failure','check\x20failure'));}});};};Dialer[_0xc02b('0x1b')][_0xc02b('0x1f6')]=function(_0x168356){var _0x3c206c=this;return function(_0x1ceb79){return new Promise(function(_0x531dc7,_0x1be15a){_['merge'](_0x168356,_0x1ceb79[0x0]);if(checkGetDataPredictive(_0x1ceb79[0x0])){loggerPredictive['info'](JSON['stringify'](_0x1ceb79[0x0]));if(_0x168356[_0xc02b('0x1e4')]===_0xc02b('0x1e5')){return _0x3c206c[_0xc02b('0xcf')](_0x168356['id'])['then'](function(_0x33c32d){var _0x42b796=_0x168356[_0xc02b('0x57')]-_0x33c32d[0x0][_0xc02b('0x1f7')];var _0x26e356=_0x168356[_0xc02b('0x1e2')]*0x3c;var _0x4f97cc=_0x1ceb79[0x0]['predictiveIntervalAvgTalktime']+_0x1ceb79[0x0][_0xc02b('0x70')];var _0x21b447=(_0x1ceb79[0x0]['predictiveIntervalAnsweredCalls']+_0x1ceb79[0x0][_0xc02b('0x73')]+_0x1ceb79[0x0][_0xc02b('0x72')])/_0x1ceb79[0x0][_0xc02b('0x77')];var _0x41c323=_0x168356[_0xc02b('0x1da')]/0x64;_0x168356[_0xc02b('0x76')]=_0x33c32d[0x0][_0xc02b('0x1f7')]||0x0;_0x168356[_0xc02b('0x1df')]=_0x21b447>0x0?_0x21b447:0x1;return _0x3c206c['abandonmentRate'](_0x42b796,_0x26e356,_0x4f97cc,_0x21b447,_0x41c323);})['then'](function(_0x346c97){return _0x531dc7(_0x346c97);})[_0xc02b('0xb8')](function(_0x5b3e57){return _0x1be15a(msgResponse('[CatchErlangB]',_0xc02b('0x155'),JSON[_0xc02b('0x4e')](_0x5b3e57)));});}if(_0x168356[_0xc02b('0x1e4')]===_0xc02b('0x1f3')){return _0x3c206c[_0xc02b('0xcf')](_0x168356['id'])[_0xc02b('0x3f')](function(_0x3069d6){var _0x5bdca5=_0x168356[_0xc02b('0x57')]-_0x3069d6[0x0][_0xc02b('0x1f7')];var _0x3bd033=_0x168356[_0xc02b('0x1e2')]*0x3c;var _0xd1d957=_0x1ceb79[0x0][_0xc02b('0x71')]+_0x1ceb79[0x0][_0xc02b('0x70')];var _0x5c7b1e=(_0x1ceb79[0x0][_0xc02b('0x6f')]+_0x1ceb79[0x0][_0xc02b('0x73')]+_0x1ceb79[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1ceb79[0x0][_0xc02b('0x77')];var _0x3af0dc=_0x168356[_0xc02b('0x1da')]/0x64;_0x168356[_0xc02b('0x76')]=_0x3069d6[0x0][_0xc02b('0x1f7')]||0x0;_0x168356[_0xc02b('0x1df')]=_0x5c7b1e>0x0?_0x5c7b1e:0x1;return _0x3c206c[_0xc02b('0x1f8')](_0x5bdca5,_0x3bd033,_0xd1d957,_0x5c7b1e,_0x3af0dc);})['then'](function(_0x12d11f){return _0x531dc7(_0x12d11f);})['catch'](function(_0x429930){return _0x1be15a(msgResponse(_0xc02b('0x1f9'),'Failure',JSON[_0xc02b('0x4e')](_0x429930)));});}}else{return _0x1be15a(msgResponse('[getDataPredictive]','Failure',_0xc02b('0x1fa')));}});};};Dialer[_0xc02b('0x1b')][_0xc02b('0x1ed')]=function(_0x705c20){var _0x33a010=this;return function(){var _0x40a9dd=0x0;var _0x896955=Math[_0xc02b('0x1de')](_0x705c20[_0xc02b('0x79')]*0x3e8);if(_0x896955>0x0){_0x896955=_0x896955<0x64?0x64:_0x896955;loggerPredictive[_0xc02b('0x86')](_0x705c20[_0xc02b('0x44')],_0xc02b('0x1fb'),_0x896955,_0xc02b('0x4f'));_0x705c20[_0xc02b('0x1e1')]=setInterval(function(){_0x33a010[_0xc02b('0x1e1')](_0x705c20);loggerPredictiveCalls[_0xc02b('0x86')](_0xc02b('0x1fc'),_0x40a9dd+=0x1);},_0x896955);}else{loggerPredictive[_0xc02b('0x86')](_0x705c20['name'],_0xc02b('0x1fd'));}};};Dialer['prototype'][_0xc02b('0x1fe')]=function(_0x84d0d7,_0x53c537){var _0x356861=this;return function(_0xd3e75e){if(_[_0xc02b('0x4b')](_0xd3e75e)){if(_['isNil'](_0x53c537[_0xc02b('0xdc')])||!_0x53c537[_0xc02b('0x1ff')]){if(_0x84d0d7[_0xc02b('0x61')]===_0xc02b('0x9')){_0x84d0d7[_0xc02b('0x13e')]=_[_0xc02b('0x41')](_0x84d0d7[_0xc02b('0x13e')])?!![]:_0x84d0d7[_0xc02b('0x13e')];var _0x404c71=uuid['v4']();_0x356861[_0xc02b('0x27')][_0x404c71]=new Action(_0x84d0d7,_0x53c537,_0x404c71);loggerBooked['info'](_0xc02b('0x200'),_0x404c71,'queueStatusComplete:\x20',JSON[_0xc02b('0x4e')](_0x84d0d7[_0xc02b('0x13e')]),'Queue:\x20',_0x84d0d7[_0xc02b('0x44')]);if(_0x84d0d7['queueStatusComplete']){_0x84d0d7[_0xc02b('0x13e')]=![];_0x356861['queueBooked'][_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xbb')]]=[];ami[_0xc02b('0xb5')]({'actionid':_0x404c71,'action':_0xc02b('0x201'),'queue':_0x84d0d7[_0xc02b('0x44')]})[_0xc02b('0xb8')](function(){_0x356861[_0xc02b('0xba')](_0x84d0d7);_0x356861[_0xc02b('0xc7')]({'active':![],'ContactId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xdb')],'ListId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0x10a')],'VoiceQueueId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xdd')]||undefined,'CampaignId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x356861['actions'][_0x404c71];});}else{loggerBooked['info']('[booked][checkContactBlack][else]',JSON[_0xc02b('0x4e')](_0x84d0d7['queueStatusComplete']),_0xc02b('0x202'),_0x84d0d7[_0xc02b('0x44')]);_0x356861[_0xc02b('0xba')](_0x84d0d7);_0x356861['rescheduleContact']({'active':![],'ContactId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xdb')],'ListId':_0x356861['actions'][_0x404c71]['ListId'],'VoiceQueueId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xdd')]||undefined,'CampaignId':_0x356861[_0xc02b('0x27')][_0x404c71][_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x203')));delete _0x356861[_0xc02b('0x27')][_0x404c71];}}else{return _0x356861[_0xc02b('0x17e')](_0x84d0d7,_0x53c537);}}else{if(getDiff(_0x53c537['scheduledat'])<_0x84d0d7[_0xc02b('0x204')]*0x3c){if(_0x53c537['Agent']&&!_0x53c537[_0xc02b('0x16a')][_0xc02b('0x205')]){_0x356861[_0xc02b('0x20')]['run'](_0x53c537['id'])[_0xc02b('0x1e')](function(){_0x356861['updateOriginated'](_0x84d0d7);});}else{_0x356861[_0xc02b('0xc8')]({'active':![]},_0x53c537['id'],0x1)['finally'](function(){_0x356861[_0xc02b('0xba')](_0x84d0d7);});}}else{_0x84d0d7[_0xc02b('0x6c')]+=0x1;_0x356861[_0xc02b('0xba')](_0x84d0d7);if(_0x84d0d7['dialRecallInQueue']){_0x356861[_0xc02b('0xc7')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x53c537[_0xc02b('0xdb')],'ListId':_0x53c537[_0xc02b('0x10a')],'VoiceQueueId':_0x53c537[_0xc02b('0xdd')]||undefined,'CampaignId':_0x53c537[_0xc02b('0xde')]||undefined})[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x206')));_0x356861['createHistory'](createObjHistory(_0x84d0d7,_0x53c537,_0xc02b('0x207'),0x17,_0xc02b('0x208')))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0x209')));}else{_0x356861[_0xc02b('0xd9')](createObjHistory(_0x84d0d7,_0x53c537,'RECALLFAILEDTIMEOUT',0x16,_0xc02b('0x20a')),_0xc02b('0x20b'),_0xc02b('0x20c'));}}}}else{_0x84d0d7[_0xc02b('0x68')]+=0x1;_0x356861[_0xc02b('0xd9')](createObjHistory(_0x84d0d7,_0x53c537,_0xc02b('0x20d'),0xd,_0xc02b('0x20e')),_0xc02b('0x20f'),'[Originate][MoveBlacklist]');throw _0xc02b('0x210');}};};Dialer[_0xc02b('0x1b')][_0xc02b('0x16c')]=function(_0x309a77){var _0x3c2b61=this;var _0x26a552=_0x309a77[_0xc02b('0x211')]-_0x309a77[_0xc02b('0x78')]-_0x309a77[_0xc02b('0xcb')];emitCampaignSummary(_0x309a77);if(_0x26a552>0x0){if(_0x26a552>this['maxNumberOriginate']){_0x26a552=this[_0xc02b('0x25')];}_0x309a77['temp']+=_0x26a552;this['getContactDialerIvr'](_0x309a77['id'],_0x26a552,_0x309a77['dialOrderByScheduledAt'],_0x309a77)[_0xc02b('0x3f')](function(_0x38a636){_0x309a77[_0xc02b('0xcb')]-=_0x26a552;_0x309a77[_0xc02b('0xcb')]=_0x309a77['temp']>0x0?_0x309a77[_0xc02b('0xcb')]:0x0;if(!checkContactEmpty(_0x38a636)){_0x309a77['message']=_0xc02b('0x212');logger['info'](_0xc02b('0x213')+_0x309a77[_0xc02b('0x44')]);}else{_0x309a77[_0xc02b('0x78')]+=_0x38a636['length'];_0x309a77[_0xc02b('0x42')]=_0xc02b('0x214');for(var _0x332b84=0x0;_0x332b84<_0x38a636[_0xc02b('0xa0')];_0x332b84+=0x1){_0x309a77[_0xc02b('0x215')]+=0x1;if(_[_0xc02b('0xb4')](_0x38a636[_0x332b84])||_[_0xc02b('0xb4')](_0x38a636[_0x332b84][_0xc02b('0x19b')])||_[_0xc02b('0xb4')](_0x38a636[_0x332b84][_0xc02b('0x182')])){_0x3c2b61[_0xc02b('0x216')](_0xc02b('0x217'),_0x309a77,_0x38a636[_0x332b84]);}else{_0x3c2b61[_0xc02b('0xc2')](_[_0xc02b('0xda')](_0x38a636[_0x332b84],['CampaignId',_0xc02b('0x182')]))[_0xc02b('0x3f')](_0x3c2b61[_0xc02b('0x1fe')](_0x309a77,_0x38a636[_0x332b84]))[_0xc02b('0xb8')](_0x3c2b61['loggerHandler'](_0xc02b('0x218'),_0x309a77));}}}})[_0xc02b('0xb8')](loggerGetContactDialer(_0xc02b('0x219'),_0x309a77,_0x26a552));}};Dialer[_0xc02b('0x1b')][_0xc02b('0x165')]=function(_0x40d627,_0x4f5b9f){var _0xf10a7e=this;var _0x5a8245=[];var _0x152d67=_0x4f5b9f>=0x1?_0x4f5b9f:0x1;if(_0x40d627['dialMethod']===_0xc02b('0x9')){_0x152d67=0x1;}var _0x35eedb=Math[_0xc02b('0x1de')](_0x40d627[_0xc02b('0x56')]*_0x152d67)-_0x40d627[_0xc02b('0x78')]-_0x40d627['temp'];emitVoiceQueueSummary(_0x40d627);if(_0x40d627[_0xc02b('0x21a')]>0x0){var _0x74e478=_0x40d627[_0xc02b('0x21a')]-_0x40d627['originated']-_0x40d627[_0xc02b('0x5c')]-_0x40d627[_0xc02b('0xcb')]-_0x40d627['pTalking'];if(_0x35eedb>_0x74e478){_0x35eedb=_0x74e478;}}if(_0x35eedb>0x0){if(_0x40d627[_0xc02b('0x61')]===_0xc02b('0x9')){_0x35eedb=0x1;}if(_0x35eedb>this[_0xc02b('0x25')]){_0x35eedb=this[_0xc02b('0x25')];}_0x40d627[_0xc02b('0xcb')]+=_0x35eedb;for(var _0x585e76 in this[_0xc02b('0x23')]){if(typeof this[_0xc02b('0x23')][_0x585e76]!=='undefined'){if(this[_0xc02b('0x23')][_0x585e76][_0xc02b('0xac')]===_0xc02b('0x21b')&&this['agents'][_0x585e76]['status']===_0xc02b('0xe5')){_0x5a8245[_0xc02b('0x15d')](this[_0xc02b('0x23')][_0x585e76]['id']);}}}this['getContactDialer'](_0x40d627['id'],_0x5a8245,_0x35eedb,_0x40d627[_0xc02b('0x21c')],_0x40d627)[_0xc02b('0x3f')](function(_0x55dbbb){_0x40d627[_0xc02b('0xcb')]-=_0x35eedb;_0x40d627[_0xc02b('0xcb')]=_0x40d627[_0xc02b('0xcb')]>0x0?_0x40d627[_0xc02b('0xcb')]:0x0;if(!checkContactEmpty(_0x55dbbb)){_0xf10a7e[_0xc02b('0xbd')](_0x40d627)[_0xc02b('0x3f')](sendMessageReschedule(_0x40d627))[_0xc02b('0xb8')](loggerCatch(_0xc02b('0xbe')));}else{_0x40d627[_0xc02b('0x78')]+=_0x55dbbb[_0xc02b('0xa0')];_0x40d627['message']=_0x40d627[_0xc02b('0x61')]===_0xc02b('0x9')?_0xc02b('0x21d'):_0xc02b('0x214');for(var _0x402c5f=0x0;_0x402c5f<_0x55dbbb[_0xc02b('0xa0')];_0x402c5f+=0x1){if(_[_0xc02b('0xb4')](_0x55dbbb[_0x402c5f])||_[_0xc02b('0xb4')](_0x55dbbb[_0x402c5f][_0xc02b('0x19b')])||_[_0xc02b('0xb4')](_0x55dbbb[_0x402c5f]['phone'])){_0xf10a7e['emptyContact'](_0xc02b('0x217'),_0x40d627,_0x55dbbb[_0x402c5f]);}else{_0xf10a7e['checkIsBlackList'](_[_0xc02b('0xda')](_0x55dbbb[_0x402c5f],[_0xc02b('0xdd'),_0xc02b('0x182')]))[_0xc02b('0x3f')](_0xf10a7e[_0xc02b('0x1fe')](_0x40d627,_0x55dbbb[_0x402c5f]))[_0xc02b('0xb8')](_0xf10a7e[_0xc02b('0xd7')](_0xc02b('0x217'),_0x40d627));}}}})[_0xc02b('0xb8')](loggerGetContactDialer(_0xc02b('0x21e'),_0x40d627,_0x35eedb));}};Dialer[_0xc02b('0x1b')][_0xc02b('0x1e1')]=function(_0x16c2cd){if(_0x16c2cd['dialLimitQueue']>0x0){var _0x502754=_0x16c2cd[_0xc02b('0x21a')]-_0x16c2cd[_0xc02b('0x78')]-_0x16c2cd[_0xc02b('0x5c')];if(_0x502754>0x0){this[_0xc02b('0x21f')](_0x16c2cd);}else{loggerPredictiveCalls['info'](_0xc02b('0x220'));}}else{this['tryOriginatePredictive'](_0x16c2cd);}};Dialer[_0xc02b('0x1b')][_0xc02b('0x21f')]=function(_0x361d3e){var _0x44a871=this;var _0x46e16f=[];_0x361d3e[_0xc02b('0x78')]+=0x1;for(var _0x3f675a in this['agents']){if(typeof this['agents'][_0x3f675a]!=='undefined'){if(this['agents'][_0x3f675a][_0xc02b('0xac')]===_0xc02b('0x21b')&&this[_0xc02b('0x23')][_0x3f675a][_0xc02b('0xb6')]===_0xc02b('0xe5')){_0x46e16f[_0xc02b('0x15d')](this['agents'][_0x3f675a]['id']);}}}this['getContactDialer'](_0x361d3e['id'],_0x46e16f,0x1,_0x361d3e[_0xc02b('0x21c')],_0x361d3e)[_0xc02b('0x3f')](function(_0x1fe9dc){if(!checkContactEmpty(_0x1fe9dc)){checkContactLowerLimitOriginate(_0x361d3e,0x1,0x0);_0x44a871[_0xc02b('0xbd')](_0x361d3e)[_0xc02b('0x3f')](sendMessageReschedule(_0x361d3e))['catch'](loggerCatch(_0xc02b('0xbe')));}else{_0x361d3e[_0xc02b('0x42')]=_0xc02b('0x214');if(_['isNil'](_0x1fe9dc[0x0])||_[_0xc02b('0xb4')](_0x1fe9dc[0x0][_0xc02b('0x19b')])||_[_0xc02b('0xb4')](_0x1fe9dc[0x0][_0xc02b('0x182')])){_0x44a871[_0xc02b('0x216')](_0xc02b('0x217'),_0x361d3e,_0x1fe9dc[0x0]);}else{_0x44a871[_0xc02b('0xbf')](_['pick'](_0x1fe9dc[0x0],[_0xc02b('0xdd'),_0xc02b('0x182')]))[_0xc02b('0x3f')](_0x44a871[_0xc02b('0x1fe')](_0x361d3e,_0x1fe9dc[0x0]))['catch'](_0x44a871[_0xc02b('0xd7')](_0xc02b('0x221'),_0x361d3e));}}})['catch'](loggerGetContactDialer(_0xc02b('0x222'),_0x361d3e,0x1));emitVoiceQueueSummary(_0x361d3e);};Dialer['prototype'][_0xc02b('0x1f2')]=function(_0xead687,_0x7f9b92,_0x51e380,_0x440705,_0x2fee28,_0x5d3680){loggerPredictive[_0xc02b('0x86')]('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xc02b('0x86')](_0xc02b('0x223'),_0xead687);loggerPredictive['info'](_0xc02b('0x224'),_0x7f9b92);loggerPredictive['info'](_0xc02b('0x225'),_0x51e380);loggerPredictive['info'](_0xc02b('0x226'),_0x440705);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x227'),_0x2fee28);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x95'));return new Promise(function(_0x5b6179,_0x5f0d0b){if(_0xead687<=0x0||isNaN(_0xead687)){return _0x5f0d0b(msgResponse(_0xc02b('0x228'),_0xc02b('0x4d'),_0xc02b('0x229')+_0xead687));}if(_0x51e380<=0x0||isNaN(_0x51e380)){return _0x5f0d0b(msgResponse(_0xc02b('0x228'),_0xc02b('0x4d'),_0xc02b('0x22a')+_0x51e380));}if(_0x440705<=0x0||isNaN(_0x440705)){return _0x5f0d0b(msgResponse('[abandonmentRate]',_0xc02b('0x4d'),_0xc02b('0x22b')+_0x440705));}if(_0x7f9b92<=0x0||isNaN(_0x7f9b92)){return _0x5f0d0b(msgResponse(_0xc02b('0x228'),_0xc02b('0x4d'),'interval\x20=\x20'+_0x7f9b92));}if(_0x2fee28<=0x0||isNaN(_0x2fee28)){return _0x5f0d0b(msgResponse(_0xc02b('0x228'),_0xc02b('0x4d'),_0xc02b('0x22c')+_0x2fee28));}_0x5d3680=_0x5d3680||0x0;var _0x8e688a=0x1/_0x51e380;var _0x1027ff=0x0;var _0x5e644c=0x0;var _0x1677b7=0x0;var _0xc494cc=0x0;for(var _0x10d846=0x0;_0x1677b7<_0x2fee28;_0x10d846+=0x1){_0x5e644c=_0x10d846/_0x7f9b92;_0x1027ff=(_0x440705*_0x5e644c+_0x5d3680)/_0x8e688a;_0x1677b7=erlangb(_0x1027ff,_0xead687);_0xc494cc=_0x1027ff/_0xead687*(0x1-erlangb(_0x1027ff,_0xead687));}return _0x5b6179({'erlangCalls':_0x10d846,'erlangCallToSecond':_0x7f9b92/_0x10d846,'erlangAbandonmentRate':_0x1677b7,'erlangBusyFactor':_0xc494cc});});};Dialer[_0xc02b('0x1b')][_0xc02b('0x1f8')]=function(_0x544920,_0x26a945,_0x11e087,_0x3ef033,_0x1eb66e,_0x19cf84){loggerPredictive['info']('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive[_0xc02b('0x86')](_0xc02b('0x223'),_0x544920);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x224'),_0x26a945);loggerPredictive[_0xc02b('0x86')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x11e087);loggerPredictive['info']('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3ef033);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x22d'),_0x1eb66e);loggerPredictive[_0xc02b('0x86')](_0xc02b('0x95'));return new Promise(function(_0x52cffb,_0x52b44f){if(_0x544920<=0x0||isNaN(_0x544920)){return _0x52b44f(msgResponse(_0xc02b('0x22e'),_0xc02b('0x4d'),_0xc02b('0x229')+_0x544920));}if(_0x11e087<=0x0||isNaN(_0x11e087)){return _0x52b44f(msgResponse(_0xc02b('0x22e'),_0xc02b('0x4d'),_0xc02b('0x22a')+_0x11e087));}if(_0x3ef033<=0x0||isNaN(_0x3ef033)){return _0x52b44f(msgResponse(_0xc02b('0x22e'),'Error',_0xc02b('0x22b')+_0x3ef033));}if(_0x26a945<=0x0||isNaN(_0x26a945)){return _0x52b44f(msgResponse(_0xc02b('0x22e'),_0xc02b('0x4d'),'interval\x20=\x20'+_0x26a945));}if(_0x1eb66e<=0x0||isNaN(_0x1eb66e)){return _0x52b44f(msgResponse(_0xc02b('0x22e'),'Error','Umin\x20=\x20'+_0x1eb66e));}_0x19cf84=_0x19cf84||0x0;var _0x3f8514=0x1/_0x11e087;var _0x3f84b4=0x0;var _0x28dee3=0x0;var _0x1a7335=0x0;var _0x4b0f20=0x0;for(var _0x6d588b=0x0;_0x4b0f20<_0x1eb66e;_0x6d588b+=0x1){_0x28dee3=_0x6d588b/_0x26a945;_0x3f84b4=(_0x3ef033*_0x28dee3+_0x19cf84)/_0x3f8514;_0x1a7335=erlangb(_0x3f84b4,_0x544920);_0x4b0f20=_0x3f84b4/_0x544920*(0x1-erlangb(_0x3f84b4,_0x544920));}return _0x52cffb({'erlangCalls':_0x6d588b,'erlangCallToSecond':_0x26a945/_0x6d588b,'erlangAbandonmentRate':_0x1a7335,'erlangBusyFactor':_0x4b0f20});});};module[_0xc02b('0x22f')]=Dialer;
\ No newline at end of file
+var _0xe3da=['dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','Interval','stringify','format','voice:queue:%s','voice_queue:save','ivr','-----\x20Stats\x20Predictive\x20---','info','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Dropped\x20Timeout:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalDroppedCallsTimeout','Dropped\x20Exit:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Hold\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','AVG\x20Talk\x20Time:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','merge','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','string','\x22%s\x22\x20<%s>','\x22\x22\x20<>','debug','inspect','error','stack','length','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','[getContactDialer2][ReScheduled]','contacts','[getContactDialer2][Empty]','sendMessageOneNotActive','pTalking','is\x20not\x20active','[syncQueueSummary]\x20Campaign\x20Queue:\x20','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20disactive','state','statedesc','endtime','starttime','prototype','clearZombieChannels','[uniqueid]','[actions]','undefined','isNil','Action','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','countReScheduled','resolve','[countReScheduled]\x20','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','saveInDb','pick','ContactId','ListId','UserId','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','Success','isTrunkReachable','SIP/%s','status','reachable','uniqueid','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','HANGUP','HangupInAMD','AMD','buildObj','amd','[syncHangupInAMD][createHistory]','value','Machine','membername','countmachineretry','countglobal','custom:amd','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countabandonedretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','reason\x2019\x20machine....','add','dialMachineRetryFrequency','[syncHangupInAMDIvr][createHistory]','MACHINE','minutes','YYYY-MM-DD\x20HH:mm:ss','[rescheduleContact][Machine]','ivrAnswerCallsDay','[syncHangupIvr]','dialQueueProject','AGI','[syncHangupIvr][createHistory]','cause-txt','agiafterat','dialQueueProject2','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','predictiveIntervalErlangCallsDroppedCalls','Drop','callAdditionalPhoneAfterMin','voiceQueue','dialDropMaxRetry','additional','countdropretry','dialDropRetryFrequency','[rescheduleContact][Drop]','calleridname','swapAdditionalPhones','CALLEREXIT','dialAbandonedRetryFrequency','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','Abandoned','calleridnum','[syncAgentComplete][createHistory][11]','syncQueueMember','actionid','strategy','locked','paused','stateinterface','push','idHopper','queueStatusComplete','[unlockQueueStatus][undefined]','[booked][unlockQueueStatus]','syncQueueStatusComplete','run','[Catch][Preview][syncQueueStatusComplete]','_rr','unlockRR','[booked][RR]','Agent:\x20','[booked][RR][finaly]','contactAgent-idHopper:\x20','[unlock][syncQueueStatusComplete]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','TRUNK_IS_NOT_REACHABLE','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','indexOf','true','content','all','some','GLOBAL_INTERVAL_IS_OVERTIME','INTERVAL_IS_OVERTIME','[ifTime][promiseAll]','\x20Interval\x20is\x20overtime:\x20','Timezone:\x20','checkDialMethod','progressive','handlePower','power','dialPowerLevel','Queue','method\x20not\x20recognized','checkPreviewRecallReminder','handlePreviewRecallNotifications','Agent','user:%s','launchHandleIvr','checkIsTrunkReachable','dialGlobalInterval','dialTimezone','checkIfTimeIntervals','filter','dialPreviewRecallmeReminder','map','user:dialPreviewRecallReminder','syncCampaigns','[syncCampaigns]','\x5cw{0,','pow','replace','random','match','originate','voiceQueue\x20is\x20undefine','phone','contact\x20is\x20undefine','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialAgiAfterHangupAgent','getCaller','ACTIVE','XMD-AMDGREETING','dialAMDGreeting','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','XMD-AMDSILENCETHRESHOLD','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','XMD-CAMPAIGNID','Contact','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','variables','SIP/%s/%s%s','dialCutDigit','substring','trim','from-sip','dialOriginateTimeout','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','Error','originate\x20action\x20Error','getQueue','callProgressDetecting','[callProgressDetecting]\x20','checkRetriveMax','countnosuchnumberretry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','dialCongestionRetryFrequency','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','object','entity\x20is\x20undefine','[callProgressDetecting]','reason','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','createStateFinal','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','buildNoAnswerEventPayload','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','dialBusyRetryFrequency','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','congestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','reason\x2011\x20abandoned','AgentReject','custom:agentreject','reason\x2020\x20agentreject','Global','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','getDataPredictive','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','Predictive\x20for\x20every\x20interval','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20less\x20than\x20threshold\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','agentBusyFactor','busyFactor','Unknown\x20Predictive','[getDataPredictive]','check\x20failure','outboundQueuePauses','[CatchErlangB]','one\x20call\x20every:','[handlePredictive]','checkContactBlack','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','actionOriginate','scheduledat','dialRecallMeTimeout','dialRecallInQueue','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]','BLACKLIST','Blacklist','[Originate][historyBlacklist]','[Originate][MoveBlacklist]','inBlackList','handleIvr','limitCalls','dialOrderByScheduledAt','AVAILABLE_CONTACTS_FINISHED','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','checkIsBlackListIvr','[actionOriginateIvr]\x20','floor','dialLimitQueue','not_inuse','checkIsBlackList','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[actionOriginatePredictive]\x20','[getContactDialerPredictive]','--------\x20Drop\x20Rate\x20--------','M:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[abandonmentRate]','----\x20Agent\x20Busy\x20Factor\x20----','P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','[busyFactor]','m\x20=\x20','Ts\x20=\x20','interval\x20=\x20','Umin\x20=\x20','exports','util','lodash','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','dialer','booked','predictive','predictiveCalls','syncQueueSummary','../ami','redis','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/setting','./action','./history','./final','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','roundrobin','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','actions','uniqueId','optionPredictive','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','originateresponse','syncOriginateResponse','agentcomplete','syncAgentComplete','custom:queuesummary','custom:queuesummarycomplete','syncQueueSummaryComplete','hangup','syncHangup','varset','syncVarSet','queuemember','queuestatuscomplete','loopCampaigns','loopClearZombieChannels','getSettings','then','message','AGENTS_NOT_LOGGED','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','name','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','isEmpty','Intervals','[ifTime][Action]','milliseconds','diff','seconds','emit','outbound','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','type','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdNumber'];(function(_0x51f6f5,_0x10bd57){var _0x3b637f=function(_0x5d8880){while(--_0x5d8880){_0x51f6f5['push'](_0x51f6f5['shift']());}};_0x3b637f(++_0x10bd57);}(_0xe3da,0x1cd));var _0xae3d=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xe3da[_0x57b54c];return _0x59cc19;};'use strict';var util=require(_0xae3d('0x0'));var _=require(_0xae3d('0x1'));var uuid=require(_0xae3d('0x2'));var moment=require(_0xae3d('0x3'));var rr=require('rr');var md5=require(_0xae3d('0x4'));var Redis=require(_0xae3d('0x5'));var ut=require(_0xae3d('0x6'));var config=require(_0xae3d('0x7'));var logger=require(_0xae3d('0x8'))(_0xae3d('0x9'));var loggerBooked=require(_0xae3d('0x8'))(_0xae3d('0xa'));var loggerPredictive=require(_0xae3d('0x8'))(_0xae3d('0xb'));var loggerPredictiveCalls=require(_0xae3d('0x8'))(_0xae3d('0xc'));var loggerSyncQueueSummary=require('../../../config/logger')(_0xae3d('0xd'));var ami=require(_0xae3d('0xe'));config['redis']=_['defaults'](config[_0xae3d('0xf')],{'host':_0xae3d('0x10'),'port':0x18eb});var io=require(_0xae3d('0x11'))(new Redis(config[_0xae3d('0xf')]));var cmHopper=require(_0xae3d('0x12'));var cmHopperHistory=require(_0xae3d('0x13'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var cmHopperBlack=require(_0xae3d('0x14'));var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require(_0xae3d('0x15'));var Action=require(_0xae3d('0x16'));var History=require(_0xae3d('0x17'));var Final=require(_0xae3d('0x18'));var AgentComplete=require('./agentComplete');var QueueCallerAbandon=require(_0xae3d('0x19'));var Hangup=require(_0xae3d('0x1a'));var ipAgi=process[_0xae3d('0x1b')][_0xae3d('0x1c')]||_0xae3d('0x1d');var strategy={'rrmemory':_0xae3d('0x1e'),'roundrobin':_0xae3d('0x1f')};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xae3d('0x20')]=function(_0x42f4b4){this[_0xae3d('0x21')]=this[_0xae3d('0x21')]?this[_0xae3d('0x21')][_0xae3d('0x22')](_0x42f4b4):_0x42f4b4();};function Dialer(_0x585160,_0xe925fd){this[_0xae3d('0x23')]=new Sequence();this[_0xae3d('0x24')]=_0xe925fd;this['voiceQueues']=_0x585160[_0xae3d('0x25')];this[_0xae3d('0x26')]=_0x585160['campaigns'];this['agents']=_0x585160[_0xae3d('0x27')];this[_0xae3d('0x28')]=_0x585160[_0xae3d('0x28')];this[_0xae3d('0x29')]=config[_0xae3d('0x29')]||0x2;this['channels']={};this[_0xae3d('0x2a')]={};this['contactsId']={};this[_0xae3d('0x2b')]={};this[_0xae3d('0x2c')]={};this[_0xae3d('0x2d')]={};this[_0xae3d('0x2e')]={};this[_0xae3d('0x2f')]={};this[_0xae3d('0x30')]={};this[_0xae3d('0x31')]={};ami['on'](_0xae3d('0x32'),this[_0xae3d('0x33')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x35'),this[_0xae3d('0x36')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x37'),this[_0xae3d('0x38')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x39'),this[_0xae3d('0x3a')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3b'),this['syncQueueSummary'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3c'),this[_0xae3d('0x3d')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x3e'),this[_0xae3d('0x3f')][_0xae3d('0x34')](this));ami['on']('newexten',this['syncNewExten'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x40'),this[_0xae3d('0x41')][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x42'),this['syncQueueMember'][_0xae3d('0x34')](this));ami['on'](_0xae3d('0x43'),this['syncQueueStatusComplete'][_0xae3d('0x34')](this));this[_0xae3d('0x44')]();this[_0xae3d('0x45')]();RpcSetting[_0xae3d('0x46')]()[_0xae3d('0x47')](function(_0x6ef13c){previewRecallmeReminderInterval=_0x6ef13c['previewRecallmeReminderInterval'];});}function isNotNull(_0x49125f){return _0x49125f!==null&&!_['isUndefined'](_0x49125f);}function checkIsLoggedIn(_0x5cfdae,_0x90b62a){return function(){if(_0x90b62a<=0x0){_0x5cfdae[_0xae3d('0x48')]=_0xae3d('0x49');throw _0x5cfdae['name']+_0xae3d('0x4a');}};}function isActive(_0x276183){return _0x276183;}function checkIsActive(_0x10ccd4,_0x3748d2){return function(){if(!isActive(_0x3748d2)){_0x10ccd4[_0xae3d('0x48')]=_0xae3d('0x4b');throw _0x10ccd4[_0xae3d('0x4c')]+'\x20NOT\x20Active';}};}function checkInterval(_0x8827c3){return function(){if(!isNotNull(_0x8827c3['Interval'])){_0x8827c3['message']=_0xae3d('0x4d');throw _0x8827c3['name']+_0xae3d('0x4e');}if(!isNotNull(_0x8827c3['Interval']['Intervals'])){_0x8827c3[_0xae3d('0x48')]=_0xae3d('0x4d');throw _0x8827c3[_0xae3d('0x4c')]+'\x20INTERVAL_IS_NULL';}if(!isNotNull(_[_0xae3d('0x4f')](_0x8827c3['Interval'][_0xae3d('0x50')]))){_0x8827c3[_0xae3d('0x48')]=_0xae3d('0x4d');throw _0x8827c3[_0xae3d('0x4c')]+_0xae3d('0x4e');}};}function msgResponse(_0x3fc3c0,_0x33a319,_0x21d84d){return{'action':_0x3fc3c0,'response':_0x33a319,'message':_0x21d84d,'stack':_0x21d84d};}function myreject(_0x267dff){return function(_0x3a3423){return _0x267dff(msgResponse(_0xae3d('0x51'),'Error',JSON['stringify'](_0x3a3423)));};}function getSeconds(_0x3992eb,_0x4b32b9){var _0x3fa738=moment(_0x3992eb)[_0xae3d('0x52')](0x0);var _0x1db3c1=moment(_0x4b32b9)[_0xae3d('0x52')](0x0);return _0x3fa738[_0xae3d('0x53')](_0x1db3c1,_0xae3d('0x54'));}function emit(_0x238e65,_0x15350d,_0x26de54){io['to'](_0x238e65)[_0xae3d('0x55')](_0x15350d,_0x26de54);}function emitVoiceQueueSummary(_0x1de8da){if(_0x1de8da['type']===_0xae3d('0x56')){var _0x3ab6a6={'id':_0x1de8da['id'],'name':_0x1de8da[_0xae3d('0x4c')],'strategy':_0x1de8da['strategy'],'answered':_0x1de8da['answered'],'available':_0x1de8da[_0xae3d('0x57')],'loggedIn':_0x1de8da[_0xae3d('0x58')],'pTalking':_0x1de8da['pTalking'],'sumBillable':_0x1de8da[_0xae3d('0x59')],'sumDuration':_0x1de8da[_0xae3d('0x5a')],'sumHoldTime':_0x1de8da[_0xae3d('0x5b')]||0x0,'talking':_0x1de8da[_0xae3d('0x5c')],'total':_0x1de8da[_0xae3d('0x5d')],'type':_0x1de8da[_0xae3d('0x5e')],'unmanaged':_0x1de8da['unmanaged'],'abandoned':_0x1de8da[_0xae3d('0x5f')],'waiting':_0x1de8da[_0xae3d('0x60')],'loggedInDb':_0x1de8da[_0xae3d('0x61')],'dialActive':_0x1de8da[_0xae3d('0x62')],'dialMethod':_0x1de8da[_0xae3d('0x63')],'dialOriginateCallerIdName':_0x1de8da['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1de8da[_0xae3d('0x64')],'dialOriginateTimeout':_0x1de8da['dialOriginateTimeout'],'dialPrefix':_0x1de8da[_0xae3d('0x65')],'outboundAnswerAgiCallsDay':_0x1de8da[_0xae3d('0x66')],'outboundAnswerCallsDay':_0x1de8da[_0xae3d('0x67')],'outboundBlacklistCallsDay':_0x1de8da[_0xae3d('0x68')],'outboundBusyCallsDay':_0x1de8da['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x1de8da['outboundCongestionCallsDay'],'outboundDropCallsDayACS':_0x1de8da['outboundDropCallsDayACS'],'outboundDropCallsDayCallersExit':_0x1de8da[_0xae3d('0x69')],'outboundDropCallsDayTimeout':_0x1de8da[_0xae3d('0x6a')],'outboundNoAnswerCallsDay':_0x1de8da['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x1de8da['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x1de8da['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x1de8da[_0xae3d('0x6b')],'outboundRejectCallsDay':_0x1de8da[_0xae3d('0x6c')],'outboundUnknownCallsDay':_0x1de8da[_0xae3d('0x6d')],'predictiveIntervalAnsweredCalls':_0x1de8da[_0xae3d('0x6e')],'predictiveIntervalAvgHoldtime':_0x1de8da[_0xae3d('0x6f')],'predictiveIntervalAvgTalktime':_0x1de8da[_0xae3d('0x70')],'predictiveIntervalDroppedCallsCallersExit':_0x1de8da[_0xae3d('0x71')],'predictiveIntervalDroppedCallsTimeout':_0x1de8da['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x1de8da['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x1de8da['predictiveIntervalErlangCallsDroppedCalls'],'predictiveIntervalHitRate':_0x1de8da[_0xae3d('0x72')],'predictiveIntervalMultiplicativeFactor':_0x1de8da['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x1de8da[_0xae3d('0x73')],'predictiveIntervalAvailable':_0x1de8da[_0xae3d('0x74')],'predictiveIntervalTotalCalls':_0x1de8da[_0xae3d('0x75')],'message':_0x1de8da[_0xae3d('0x48')],'originated':_0x1de8da[_0xae3d('0x76')],'erlangCalls':_0x1de8da[_0xae3d('0x77')],'erlangCallToSecond':_0x1de8da[_0xae3d('0x78')],'erlangAbandonmentRate':_0x1de8da[_0xae3d('0x79')],'erlangBusyFactor':_0x1de8da[_0xae3d('0x7a')],'startPredictive':_0x1de8da[_0xae3d('0x2d')],'startProgressive':_0x1de8da[_0xae3d('0x2e')]};if(_0x1de8da['Trunk']){_0x3ab6a6['Trunk']={'id':_0x1de8da['Trunk']['id'],'name':_0x1de8da[_0xae3d('0x7b')][_0xae3d('0x4c')],'active':_0x1de8da[_0xae3d('0x7b')][_0xae3d('0x7c')],'callerid':_0x1de8da['Trunk']['callerid']};}if(_0x1de8da[_0xae3d('0x7d')]){_0x3ab6a6[_0xae3d('0x7d')]={'id':_0x1de8da[_0xae3d('0x7d')]['id'],'name':_0x1de8da[_0xae3d('0x7d')]['name']};}var _0x3e7662=md5(JSON[_0xae3d('0x7e')](_0x3ab6a6));if(_0x1de8da[_0xae3d('0x4')]!==_0x3e7662){_0x1de8da[_0xae3d('0x4')]=_0x3e7662;emit(util[_0xae3d('0x7f')](_0xae3d('0x80'),_0x3ab6a6[_0xae3d('0x4c')]),_0xae3d('0x81'),_0x3ab6a6);}}}function emitCampaignSummary(_0x22f7d9){if(_0x22f7d9[_0xae3d('0x5e')]===_0xae3d('0x82')){emit(util[_0xae3d('0x7f')]('campaign:ivr:%s',_0x22f7d9['name']),'campaign:save',_0x22f7d9);}}function checkGetDataPredictive(_0xb46d7){if(isNotNull(_0xb46d7)&&!_[_0xae3d('0x4f')](_0xb46d7)){loggerPredictive['info'](_0xae3d('0x83'));loggerPredictive['info']('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0xb46d7[_0xae3d('0x75')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x85'),_0xb46d7[_0xae3d('0x6e')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x86'),_0xb46d7[_0xae3d('0x87')]);loggerPredictive['info'](_0xae3d('0x88'),_0xb46d7[_0xae3d('0x71')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x89'),_0xb46d7['predictiveIntervalAvgHoldtime']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8a'),_0xb46d7[_0xae3d('0x70')]);loggerPredictive[_0xae3d('0x84')]('---------------------------');if(_0xb46d7['predictiveIntervalTotalCalls']>0x0){if(!_['isUndefined'](_0xb46d7[_0xae3d('0x70')])&&_0xb46d7['predictiveIntervalAvgTalktime']>0x0){return!![];}loggerPredictive['info'](_0xae3d('0x8b'));if(!_[_0xae3d('0x8c')](_0xb46d7[_0xae3d('0x6f')])&&_0xb46d7[_0xae3d('0x6f')]>0x0){return!![];}loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8d'));}else{loggerPredictive['info'](_0xae3d('0x8e'));}}else{loggerPredictive[_0xae3d('0x84')](_0xae3d('0x8f'));}return![];}function mergeDataErlangB(_0x32b524){return function(_0x285889){loggerPredictive[_0xae3d('0x84')]('---------\x20ErlangB\x20---------');loggerPredictive[_0xae3d('0x84')](_0xae3d('0x90'),_0x285889[_0xae3d('0x77')]);loggerPredictive['info']('One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x285889['erlangCallToSecond']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x91'),_0x285889['erlangAbandonmentRate']);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x92'),_0x285889[_0xae3d('0x7a')]);loggerPredictive['info'](_0xae3d('0x91'),_0x285889[_0xae3d('0x79')]);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x93'));_[_0xae3d('0x94')](_0x32b524,_0x285889);};}function getDiff(_0x18973d){var _0x39dff1=moment()[_0xae3d('0x52')](0x0);var _0x4c8b7b=moment(_0x18973d)['milliseconds'](0x0);return _0x39dff1[_0xae3d('0x53')](_0x4c8b7b,_0xae3d('0x54'));}function ifInterval(_0x3d0a1a,_0x529d2d){if(_['isUndefined'](_0x529d2d)){return![];}return getDiff(_0x529d2d)<_0x3d0a1a*0x3c;}function freeVariablesPredictive(_0x138bf5){if(isNotNull(_0x138bf5)){if(!_[_0xae3d('0x8c')](_0x138bf5[_0xae3d('0x2e')])){_0x138bf5[_0xae3d('0x2e')]=undefined;loggerPredictive['info'](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x95'));}if(!_['isUndefined'](_0x138bf5[_0xae3d('0x2d')])){_0x138bf5[_0xae3d('0x2d')]=undefined;loggerPredictive[_0xae3d('0x84')](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x96'));}if(!_[_0xae3d('0x8c')](_0x138bf5[_0xae3d('0x97')])){clearInterval(_0x138bf5['handlePredictive']);_0x138bf5[_0xae3d('0x97')]=undefined;loggerPredictive[_0xae3d('0x84')](_0x138bf5[_0xae3d('0x4c')],_0xae3d('0x98'));}}}function erlangb(_0x2641d3,_0x5b8333){if(_0x5b8333===0x0){return 0x0;}var _0x18c9b0=0x1;for(var _0xf61534=0x1;_0xf61534<=_0x5b8333;_0xf61534+=0x1){_0x18c9b0=0x1+_0x18c9b0*_0xf61534/_0x2641d3;}return 0x1/_0x18c9b0;}function isVoiceQueueOutbound(_0x2dba59){return _0x2dba59===_0xae3d('0x56');}function isNotPreview(_0x1864b6){return _0x1864b6!==_0xae3d('0x24');}function isCampaignIvr(_0x53f91b){return _0x53f91b===_0xae3d('0x82');}function getCallerId(_0x18ab27,_0x51a078,_0x292b03){if(!_[_0xae3d('0x8c')](_0x292b03)&&typeof _0x292b03===_0xae3d('0x99')&&!_['isEmpty'](_0x292b03)){if(!_['isUndefined'](_0x51a078)&&typeof _0x51a078===_0xae3d('0x99')&&!_[_0xae3d('0x4f')](_0x51a078)){return util[_0xae3d('0x7f')](_0xae3d('0x9a'),_0x51a078,_0x292b03);}return util[_0xae3d('0x7f')](_0xae3d('0x9a'),_0x292b03,_0x292b03);}if(!_[_0xae3d('0x8c')](_0x18ab27)&&typeof _0x18ab27==='string'&&!_[_0xae3d('0x4f')](_0x18ab27)){return _0x18ab27;}return _0xae3d('0x9b');}function loggerCatchQueueSummary(_0x4e3161,_0x4380ae){return function(_0x518da8){freeVariablesPredictive(_0x4380ae);emitVoiceQueueSummary(_0x4380ae);emitCampaignSummary(_0x4380ae);loggerSyncQueueSummary[_0xae3d('0x9c')](_0x4e3161,util[_0xae3d('0x9d')](_0x518da8,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x26c409,_0x4709ea){return function(_0x21923a){loggerPredictive['error'](_0x4709ea[_0xae3d('0x4c')],_0x26c409);loggerPredictive[_0xae3d('0x9e')](_0x21923a[_0xae3d('0x9f')]);freeVariablesPredictive(_0x4709ea);};}function loggerCatch(_0x5f1e9c){return function(_0x546991){logger[_0xae3d('0x9e')](_0x5f1e9c,util[_0xae3d('0x9d')](_0x546991,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x53122a){return _0x53122a&&!_['isUndefined'](_0x53122a)&&_0x53122a[_0xae3d('0xa0')]>0x0;}function decremetOriginate(_0x5785d8){if(!_[_0xae3d('0x8c')](_0x5785d8)&&_0x5785d8!==null){if(typeof _0x5785d8['originated']!=='undefined'){if(_0x5785d8['originated']>0x0){_0x5785d8['originated']-=0x1;}else{logger[_0xae3d('0x9e')](_0xae3d('0xa1'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x37acdb,_0x3be0e7,_0x982c31){if(_0x3be0e7>_0x982c31){for(var _0x21f4d6=0x0;_0x21f4d6<_0x3be0e7-_0x982c31;_0x21f4d6+=0x1){decremetOriginate(_0x37acdb);}}}function loggerGetContactDialer(_0x46a9ef,_0x170cfc,_0x3971db){return function(_0x5e1744){checkContactLowerLimitOriginate(_0x170cfc,_0x3971db,0x0);logger[_0xae3d('0x9e')](_0x46a9ef,util[_0xae3d('0x9d')](_0x5e1744,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x199993){return function(_0x1ab2e7){if(isNotNull(_0x1ab2e7)&&isNotNull(_0x1ab2e7[0x0])){if(_0x1ab2e7[0x0][_0xae3d('0xa2')]>0x0){_0x199993[_0xae3d('0x48')]='RESCHEDULED_CONTACTS';logger[_0xae3d('0x84')](_0xae3d('0xa3')+_0x199993['name'],_0x1ab2e7[0x0]['contactsRescheduled'],_0xae3d('0xa4'));}else{_0x199993[_0xae3d('0x48')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xae3d('0x84')](_0xae3d('0xa5')+_0x199993[_0xae3d('0x4c')]);}}};}function notSendMessagesQueue(_0x4f1ad1){if(_0x4f1ad1[_0xae3d('0xa6')]){freeVariablesPredictive(_0x4f1ad1);if(_0x4f1ad1[_0xae3d('0x76')]===0x0&&_0x4f1ad1['talking']===0x0&&_0x4f1ad1['waiting']===0x0&&(_0x4f1ad1[_0xae3d('0xa7')]||0x0)===0x0){_0x4f1ad1[_0xae3d('0xa6')]=![];_0x4f1ad1[_0xae3d('0x57')]=0x0;_0x4f1ad1['message']=_0xae3d('0x4b');loggerSyncQueueSummary[_0xae3d('0x9c')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x4f1ad1[_0xae3d('0x4c')],_0xae3d('0xa8'));}else{_0x4f1ad1[_0xae3d('0x48')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xae3d('0x9c')](_0xae3d('0xa9'),_0x4f1ad1[_0xae3d('0x4c')],'is\x20disactive');}emitVoiceQueueSummary(_0x4f1ad1);}}function notSendMessagesCampaign(_0x3a8d20){if(_0x3a8d20['sendMessageOneNotActive']){if(_0x3a8d20[_0xae3d('0x76')]===0x0){_0x3a8d20['sendMessageOneNotActive']=![];_0x3a8d20['message']=_0xae3d('0x4b');loggerSyncQueueSummary['debug'](_0xae3d('0xaa'),_0x3a8d20[_0xae3d('0x4c')],_0xae3d('0xa8'));}else{_0x3a8d20[_0xae3d('0x48')]='IS_DISACTIVED';loggerSyncQueueSummary[_0xae3d('0x9c')](_0xae3d('0xaa'),_0x3a8d20[_0xae3d('0x4c')],_0xae3d('0xab'));}emitCampaignSummary(_0x3a8d20);}}function createObjHistory(_0x6afe2e,_0x1dcaf3,_0x1c5f67,_0xa083d0,_0x26e422){_0x6afe2e[_0xae3d('0x48')]=_0x1c5f67;var _0x18b439=new Action(_0x6afe2e,_0x1dcaf3);var _0x331dbb=new History(_0x18b439);_0x331dbb[_0xae3d('0xac')]=_0xa083d0;_0x331dbb[_0xae3d('0xad')]=_0x26e422;_0x331dbb[_0xae3d('0xae')]=_0x18b439[_0xae3d('0xaf')];return _0x331dbb;}Dialer[_0xae3d('0xb0')]['loopClearZombieChannels']=function(){var _0x1914e0=this;setInterval(function(){_0x1914e0[_0xae3d('0xb1')](_0x1914e0[_0xae3d('0x2b')],_0xae3d('0xb2'));_0x1914e0[_0xae3d('0xb1')](_0x1914e0['actions'],_0xae3d('0xb3'));},0x32c8);};Dialer[_0xae3d('0xb0')][_0xae3d('0xb1')]=function(_0x27b969,_0x860d6e){var _0x1163b6=this;for(var _0xf9a9b6 in _0x27b969){if(typeof _0x27b969[_0xf9a9b6]!==_0xae3d('0xb4')){this['sequence'][_0xae3d('0x20')](function(){if(!_[_0xae3d('0xb5')](_0x27b969[_0xf9a9b6])){return ami[_0xae3d('0xb6')]({'action':'status','channel':_0x27b969[_0xf9a9b6][_0xae3d('0xb7')]})[_0xae3d('0xb8')](function(_0x95a92e){if(_0x95a92e['message']===_0xae3d('0xb9')){setTimeout(function(){if(_0x27b969[_0xf9a9b6]&&_0x27b969[_0xf9a9b6][_0xae3d('0x5e')]!=='ivr'){_0x1163b6[_0xae3d('0xba')](_0x1163b6['voiceQueues'][_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]]);logger['error'](_0xae3d('0xbc'),_0x860d6e,_0xf9a9b6,_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]);delete _0x27b969[_0xf9a9b6];}if(_0x27b969[_0xf9a9b6]&&_0x27b969[_0xf9a9b6][_0xae3d('0x5e')]===_0xae3d('0x82')){_0x1163b6[_0xae3d('0xba')](_0x1163b6['campaigns'][_0x27b969[_0xf9a9b6][_0xae3d('0xbb')]]);logger[_0xae3d('0x9e')]('[Dialer][checkChannel][ivr]',_0x860d6e,_0xf9a9b6,_0x27b969[_0xf9a9b6]['queue']);delete _0x27b969[_0xf9a9b6];}},0x2328);}});}});}}};Dialer[_0xae3d('0xb0')][_0xae3d('0xbd')]=function(_0x23eb6c){return Promise[_0xae3d('0xbe')]()['then'](cmHopper[_0xae3d('0xbd')](_0x23eb6c))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xbf')));};Dialer['prototype']['checkIsBlackList']=function(_0x3c1415){return Promise['resolve']()[_0xae3d('0x47')](cmHopperBlack['checkIsBlackList'](_0x3c1415))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc0')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc1')]=function(_0x5b1d20,_0x1f3ee8,_0x1a2106){return Promise[_0xae3d('0xbe')]()['then'](cmHopperAdditionalPhone[_0xae3d('0xc1')](_0x5b1d20,_0x1f3ee8,_0x1a2106))['catch'](loggerCatch(_0xae3d('0xc2')));};Dialer[_0xae3d('0xb0')]['swapAdditionalPhones']=function(_0x5e5b14,_0x27205c,_0x4d5fba){return Promise['resolve']()[_0xae3d('0x47')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x5e5b14,_0x27205c,_0x4d5fba))[_0xae3d('0xb8')](loggerCatch('[swapAdditionalPhone]\x20'));};Dialer[_0xae3d('0xb0')]['checkIsBlackListIvr']=function(_0x27c0ff){return Promise['resolve']()[_0xae3d('0x47')](cmHopperBlack['checkIsBlackListIvr'](_0x27c0ff))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc3')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc4')]=function(_0x125687){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopperHistory[_0xae3d('0xc5')](_0x125687))[_0xae3d('0xb8')](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0xae3d('0xb0')][_0xae3d('0xc6')]=function(_0xca73b8){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper['rescheduleContact'](_0xca73b8))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc7')));};Dialer[_0xae3d('0xb0')]['unlockContact']=function(_0x242f09,_0x5c53b8,_0x52e98e){return Promise[_0xae3d('0xbe')]()['then'](cmHopper[_0xae3d('0xc8')](_0x242f09,_0x5c53b8,_0x52e98e))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xc9')));};Dialer[_0xae3d('0xb0')][_0xae3d('0xca')]=function(_0x5d1e8e,_0xab43da,_0x4230eb,_0xa6621b,_0x40a137){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper['getContactDialer'](_0x5d1e8e,_0xab43da,_0x4230eb,_0xa6621b))['catch'](function(_0x50cb45){_0x40a137['temp']-=_0x4230eb;_0x40a137['temp']=_0x40a137[_0xae3d('0xcb')]>0x0?_0x40a137['temp']:0x0;loggerCatch('[getContactDialer]\x20')(_0x50cb45);});};Dialer[_0xae3d('0xb0')][_0xae3d('0xcc')]=function(_0x59f763,_0x47b90a,_0x255cc8,_0x30ccf4){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper[_0xae3d('0xcc')](_0x59f763,_0x47b90a,_0x255cc8))[_0xae3d('0xb8')](function(_0x376a4c){_0x30ccf4[_0xae3d('0xcb')]-=_0x47b90a;_0x30ccf4[_0xae3d('0xcb')]=_0x30ccf4[_0xae3d('0xcb')]>0x0?_0x30ccf4[_0xae3d('0xcb')]:0x0;loggerCatch(_0xae3d('0xcd'))(_0x376a4c);});};Dialer[_0xae3d('0xb0')]['getVoiceQueueRtPauses']=function(_0x4f59df){return Promise[_0xae3d('0xbe')]()['then'](voiceQueueRt[_0xae3d('0xce')](_0x4f59df))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xcf')));};Dialer[_0xae3d('0xb0')]['moveContactManagedDialer']=function(_0x3bdda2){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopper[_0xae3d('0xd0')](_0x3bdda2))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype']['createHistory']=function(_0x5573b1){return Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](cmHopperHistory[_0xae3d('0xd1')](_0x5573b1))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xd2')));};Dialer['prototype'][_0xae3d('0xba')]=function(_0x4974f8){if(!_[_0xae3d('0x8c')](_0x4974f8)&&_0x4974f8!==null){if(typeof _0x4974f8[_0xae3d('0x76')]!==_0xae3d('0xb4')){if(_0x4974f8[_0xae3d('0x76')]>0x0){_0x4974f8['originated']-=0x1;}else{logger['error'](_0xae3d('0xd3'));}}}else{logger[_0xae3d('0x9e')](_0xae3d('0xd4'));}};Dialer[_0xae3d('0xb0')][_0xae3d('0xd5')]=function(_0x8fe774,_0x284e02){var _0x3ce3f2=this;return function(_0x4d902c){_0x3ce3f2[_0xae3d('0xba')](_0x284e02);logger[_0xae3d('0x9e')](_0x8fe774,util['inspect'](_0x4d902c,{'showHidden':![],'depth':null}));};};Dialer[_0xae3d('0xb0')][_0xae3d('0xd6')]=function(_0x3ba3c3,_0x412005,_0x26e845){var _0xfe304f={'state':0x19,'statedesc':'notFound'};this[_0xae3d('0xba')](_0x412005);this[_0xae3d('0xd7')](_[_0xae3d('0x94')](_0xfe304f,_[_0xae3d('0xd8')](_0x26e845,[_0xae3d('0xd9'),_0xae3d('0xda'),_0xae3d('0xdb'),_0xae3d('0xdc'),_0xae3d('0xdd')])),_0xae3d('0xde'),'[emptyContact]');logger['error'](_0x3ba3c3);};Dialer[_0xae3d('0xb0')][_0xae3d('0xdf')]=function(_0x3a54ad){return _0x3a54ad===_0xae3d('0xe0');};Dialer['prototype'][_0xae3d('0xe1')]=function(_0x5ee764){return!_['isUndefined'](_0x5ee764)&&_0x5ee764&&!_[_0xae3d('0x8c')](_0x5ee764[_0xae3d('0x4c')])&&!_[_0xae3d('0x8c')](_0x5ee764[_0xae3d('0x7c')])&&_0x5ee764['active']&&(this[_0xae3d('0x28')][util[_0xae3d('0x7f')](_0xae3d('0xe2'),_0x5ee764['name'])][_0xae3d('0xe3')]===_0xae3d('0xe4')||this[_0xae3d('0x28')][util['format']('SIP/%s',_0x5ee764[_0xae3d('0x4c')])][_0xae3d('0xe3')]==='unmonitored');};Dialer[_0xae3d('0xb0')][_0xae3d('0xd7')]=function(_0x2a6d74,_0x2945dc,_0x50f68d){this['createHistory'](_0x2a6d74)['catch'](loggerCatch(_0x2945dc));this[_0xae3d('0xd0')](_0x2a6d74)[_0xae3d('0xb8')](loggerCatch(_0x50f68d));};Dialer['prototype'][_0xae3d('0x41')]=function(_0x2d8648){var _0x35b418=this;var _0x56c143=this[_0xae3d('0x2b')][_0x2d8648[_0xae3d('0xe5')]];var _0x12c96c;if(!_[_0xae3d('0xb5')](_0x2d8648)&&!_[_0xae3d('0xb5')](_0x2d8648[_0xae3d('0xe6')])&&!_[_0xae3d('0xb5')](_0x2d8648['variable'][_0xae3d('0xe7')])&&_0x2d8648[_0xae3d('0xe8')]===_0xae3d('0xe9')&&_0x56c143){if(_0x56c143[_0xae3d('0x5e')]!==_0xae3d('0x82')&&this[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648['value']===_0xae3d('0xeb')){delete this[_0xae3d('0x2b')][_0x2d8648['uniqueid']];this[_0xae3d('0xba')](this['voiceQueues'][_0x56c143['queue']]);this['voiceQueues'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;this[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;_0x12c96c=new Hangup(_0x56c143,_0x2d8648);_0x12c96c['state']=0x12;_0x12c96c[_0xae3d('0xad')]=_0xae3d('0xec');_0x12c96c['membername']=_0xae3d('0xed');ami['emit']('custom:amd',ut[_0xae3d('0xee')](_0x12c96c,_0xae3d('0xef')));this[_0xae3d('0xd7')](_0x12c96c,_0xae3d('0xf0'),'[syncHangupInAMD]');}if(_0x56c143[_0xae3d('0x5e')]!==_0xae3d('0x82')&&this['voiceQueues'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648[_0xae3d('0xf1')]==='MACHINE'){return new Promise(function(_0x3f1592,_0x2b913c){delete _0x35b418[_0xae3d('0x2b')][_0x2d8648[_0xae3d('0xe5')]];_0x35b418['updateOriginated'](_0x35b418['voiceQueues'][_0x56c143[_0xae3d('0xbb')]]);_0x35b418['voiceQueues'][_0x56c143['queue']][_0xae3d('0x67')]+=0x1;_0x35b418[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x66')]+=0x1;var _0x8d7031=_0x35b418[_0xae3d('0x25')][_0x56c143[_0xae3d('0xbb')]];var _0x195ff9=new Hangup(_0x56c143,_0x2d8648);_0x195ff9['state']=0x13;_0x195ff9[_0xae3d('0xad')]=_0xae3d('0xf2');_0x195ff9[_0xae3d('0xf3')]='AMD';_0x195ff9[_0xae3d('0xf4')]+=0x1;_0x195ff9[_0xae3d('0xf5')]+=0x1;_0x195ff9['amd']=!![];ami[_0xae3d('0x55')](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x195ff9,_0xae3d('0xef')));_0x35b418[_0xae3d('0xd1')](_0x195ff9)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x195ff9[_0xae3d('0xf8')]+_0x195ff9[_0xae3d('0xf9')]+_0x195ff9[_0xae3d('0xfa')]+_0x195ff9['countnosuchnumberretry']+_0x195ff9['countdropretry']+_0x195ff9[_0xae3d('0xfb')]+_0x195ff9[_0xae3d('0xf4')]+_0x195ff9[_0xae3d('0xfc')]>=_0x8d7031[_0xae3d('0xfd')]){_0x35b418[_0xae3d('0xfe')](_0x195ff9,_0x3f1592,_0x2b913c,_0xae3d('0xff'));}else{if(_0x195ff9['countmachineretry']>=_0x8d7031[_0xae3d('0x100')]){_0x35b418['createStateFinal'](_0x195ff9,_0x3f1592,_0x2b913c,_0xae3d('0x101'));}else{_0x35b418['rescheduleContact']({'active':![],'countmachineretry':_0x195ff9[_0xae3d('0xf4')],'scheduledat':moment()[_0xae3d('0x102')](_0x8d7031[_0xae3d('0x103')],'minutes')[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x195ff9['ContactId'],'ListId':_0x195ff9['ListId'],'VoiceQueueId':_0x195ff9[_0xae3d('0xdc')]||undefined,'CampaignId':_0x195ff9[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch('[rescheduleContact][Machine]'));_0x3f1592({'reschedule':0x1});}}});}if(_0x56c143[_0xae3d('0x5e')]===_0xae3d('0x82')&&this[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0xea')]&&_0x2d8648[_0xae3d('0xf1')]===_0xae3d('0xeb')){delete this['uniqueId'][_0x2d8648['uniqueid']];this['updateOriginated'](this[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]);_0x12c96c=new Hangup(_0x56c143,_0x2d8648);_0x12c96c[_0xae3d('0xac')]=0x12;_0x12c96c['statedesc']=_0xae3d('0xec');_0x12c96c[_0xae3d('0xf3')]=_0xae3d('0xed');ami[_0xae3d('0x55')](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x12c96c,'amd'));this[_0xae3d('0xd7')](_0x12c96c,_0xae3d('0x104'),'[syncHangupInAMDIvr]');}if(_0x56c143['type']===_0xae3d('0x82')&&this[_0xae3d('0x26')][_0x56c143['queue']]['dialAMDActive']&&_0x2d8648[_0xae3d('0xf1')]===_0xae3d('0x105')){return new Promise(function(_0xd2e6bd,_0x3d81a4){delete _0x35b418['uniqueId'][_0x2d8648['uniqueid']];_0x35b418[_0xae3d('0xba')](_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]);_0x35b418['campaigns'][_0x56c143[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x11a4c9=_0x35b418[_0xae3d('0x26')][_0x56c143[_0xae3d('0xbb')]];var _0x2bb6fe=new Hangup(_0x56c143,_0x2d8648);_0x2bb6fe[_0xae3d('0xac')]=0x13;_0x2bb6fe[_0xae3d('0xad')]=_0xae3d('0xf2');_0x2bb6fe['membername']=_0xae3d('0xed');_0x2bb6fe[_0xae3d('0xf4')]+=0x1;_0x2bb6fe[_0xae3d('0xf5')]+=0x1;_0x2bb6fe[_0xae3d('0xef')]=!![];ami['emit'](_0xae3d('0xf6'),ut[_0xae3d('0xee')](_0x2bb6fe,_0xae3d('0xef')));_0x35b418[_0xae3d('0xd1')](_0x2bb6fe)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x2bb6fe[_0xae3d('0xf8')]+_0x2bb6fe['countcongestionretry']+_0x2bb6fe[_0xae3d('0xfa')]+_0x2bb6fe['countnosuchnumberretry']+_0x2bb6fe['countdropretry']+_0x2bb6fe['countabandonedretry']+_0x2bb6fe[_0xae3d('0xf4')]+_0x2bb6fe[_0xae3d('0xfc')]>=_0x11a4c9[_0xae3d('0xfd')]){_0x35b418[_0xae3d('0xfe')](_0x2bb6fe,_0xd2e6bd,_0x3d81a4,_0xae3d('0xff'));}else{if(_0x2bb6fe[_0xae3d('0xf4')]>=_0x11a4c9['dialMachineMaxRetry']){_0x35b418['createStateFinal'](_0x2bb6fe,_0xd2e6bd,_0x3d81a4,_0xae3d('0x101'));}else{_0x35b418[_0xae3d('0xc6')]({'active':![],'countmachineretry':_0x2bb6fe[_0xae3d('0xf4')],'scheduledat':moment()['add'](_0x11a4c9[_0xae3d('0x103')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x2bb6fe[_0xae3d('0xd9')],'ListId':_0x2bb6fe[_0xae3d('0xda')],'VoiceQueueId':_0x2bb6fe[_0xae3d('0xdc')]||undefined,'CampaignId':_0x2bb6fe[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x108')));_0xd2e6bd({'reschedule':0x1});}}});}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3f')]=function(_0x1a01eb){var _0x44dfbc=this[_0xae3d('0x2b')][_0x1a01eb['uniqueid']];var _0x4e9730;if(_0x44dfbc&&_0x44dfbc['type']===_0xae3d('0x82')){delete this[_0xae3d('0x2b')][_0x1a01eb[_0xae3d('0xe5')]];this[_0xae3d('0xba')](this[_0xae3d('0x26')][_0x44dfbc[_0xae3d('0xbb')]]);this[_0xae3d('0x26')][_0x44dfbc['queue']][_0xae3d('0x109')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);this[_0xae3d('0xd1')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xae3d('0xd0')](_0x4e9730)['catch'](loggerCatch(_0xae3d('0x10a')));}if(_0x44dfbc&&_0x44dfbc[_0xae3d('0x5e')]!==_0xae3d('0x82')&&isNotNull(this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x10b')])){delete this[_0xae3d('0x2b')][_0x1a01eb['uniqueid']];this['updateOriginated'](this[_0xae3d('0x25')][_0x44dfbc['queue']]);this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;this[_0xae3d('0x25')][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x66')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);_0x4e9730['state']=0x10;_0x4e9730['statedesc']='AnswerAGI';_0x4e9730[_0xae3d('0xf3')]=_0xae3d('0x10c');this['createHistory'](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10d')));this[_0xae3d('0xd0')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10a')));}if(_0x44dfbc&&_0x44dfbc['type']!==_0xae3d('0x82')&&!isNotNull(this['voiceQueues'][_0x44dfbc['queue']][_0xae3d('0x10b')])){delete this['uniqueId'][_0x1a01eb[_0xae3d('0xe5')]];this[_0xae3d('0xba')](this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]]);this['voiceQueues'][_0x44dfbc[_0xae3d('0xbb')]][_0xae3d('0x6d')]+=0x1;_0x4e9730=new Hangup(_0x44dfbc,_0x1a01eb);_0x4e9730['state']=0xc;_0x4e9730[_0xae3d('0xad')]=_0x1a01eb[_0xae3d('0x10e')];_0x4e9730['membername']='Unknow';this[_0xae3d('0xd1')](_0x4e9730)['catch'](loggerCatch(_0xae3d('0x10d')));this[_0xae3d('0xd0')](_0x4e9730)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x10a')));}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3a')]=function(_0x26180e){var _0x223697=this['uniqueId'][_0x26180e[_0xae3d('0xe5')]];if(this[_0xae3d('0x25')][_0x26180e['queue']]){if(_0x223697&&_0x223697[_0xae3d('0x5e')]!=='ivr'){delete this[_0xae3d('0x2b')][_0x26180e[_0xae3d('0xe5')]];this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]][_0xae3d('0x67')]+=0x1;var _0x59db15=new AgentComplete(_0x223697,_0x26180e);if(_0x26180e['reason']==='agent'){_0x59db15[_0xae3d('0x10f')]=this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]][_0xae3d('0x110')]&&this[_0xae3d('0x25')][_0x26180e[_0xae3d('0xbb')]]['dialAgiAfterHangupAgent']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xae3d('0xd1')](_0x59db15)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x111')));this[_0xae3d('0xd0')](_0x59db15)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x33')]=function(_0x366ccc){if(this['voiceQueues'][_0x366ccc[_0xae3d('0xbb')]]){if(this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]]&&this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]]['type']!=='ivr'){this[_0xae3d('0xba')](this[_0xae3d('0x25')][_0x366ccc[_0xae3d('0xbb')]]);this[_0xae3d('0x2b')][_0x366ccc[_0xae3d('0xe5')]][_0xae3d('0x112')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));}}};Dialer[_0xae3d('0xb0')][_0xae3d('0x113')]=function(_0x24588d,_0x19bd45){this[_0xae3d('0xd1')](_0x24588d)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x111')));if(_0x19bd45==0x0){this[_0xae3d('0xd0')](_0x24588d)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x114')));}};Dialer['prototype'][_0xae3d('0x36')]=function(_0x5af592){var _0x21da31=this[_0xae3d('0x2b')][_0x5af592[_0xae3d('0xe5')]];var _0x343b57=this;var _0x5c0eae=![];var _0x9f5481;var _0x2c0ede;if(this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]){if(_0x21da31&&_0x21da31[_0xae3d('0x5e')]!==_0xae3d('0x82')){delete this[_0xae3d('0x2b')][_0x5af592[_0xae3d('0xe5')]];this['updateOriginated'](this['voiceQueues'][_0x5af592[_0xae3d('0xbb')]]);_0x21da31[_0xae3d('0x115')]=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');var _0x22e5e4=new QueueCallerAbandon(_0x21da31,_0x5af592);if(getSeconds(_0x21da31['droptime'],_0x21da31[_0xae3d('0x116')])>=_0x21da31['dialQueueTimeout']){this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]['predictiveIntervalDroppedCallsTimeout']+=0x1;this['voiceQueues'][_0x5af592['queue']]['outboundDropCallsDayTimeout']+=0x1;this[_0xae3d('0x25')][_0x5af592['queue']][_0xae3d('0x117')]+=0x1;_0x22e5e4[_0xae3d('0xac')]=0xa;_0x22e5e4[_0xae3d('0xad')]=_0xae3d('0x118');_0x22e5e4['dropreason']='TIMEOUT';_0x22e5e4[_0xae3d('0x10f')]=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x110')]?moment()[_0xae3d('0x7f')](_0xae3d('0x107')):undefined;_0x22e5e4['countdropretry']+=0x1;_0x22e5e4[_0xae3d('0xf5')]+=0x1;_0x9f5481=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]]['dialDropRetryFrequency'];_0x2c0ede=this[_0xae3d('0x25')][_0x5af592['queue']][_0xae3d('0x119')];_0x343b57['verifyAdditionalPhones'](_0x22e5e4,_0x22e5e4[_0xae3d('0xac')],_0x21da31[_0xae3d('0x11a')])[_0xae3d('0x47')](function(_0x3f523a){_0x5c0eae=_0x3f523a['additional']==0x1;if(_0x22e5e4['countdropretry']>=_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x11b')]){_0x343b57[_0xae3d('0x113')](_0x22e5e4,_0x3f523a[_0xae3d('0x11c')]);}else{_0x343b57['rescheduleContact']({'active':![],'countdropretry':_0x22e5e4[_0xae3d('0x11d')],'scheduledat':moment()['add'](_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x11e')],'minutes')[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x21da31['ContactId'],'ListId':_0x21da31[_0xae3d('0xda')],'VoiceQueueId':_0x21da31[_0xae3d('0xdc')]||undefined,'CampaignId':_0x21da31['CampaignId']||undefined})['catch'](loggerCatch(_0xae3d('0x11f')));var _0x4db5d9=new History(_0x22e5e4);_0x4db5d9[_0xae3d('0xac')]=0xa;_0x4db5d9['statedesc']=_0xae3d('0x118');_0x4db5d9['starttime']=moment()['format'](_0xae3d('0x107'));_0x4db5d9[_0xae3d('0xae')]=_0x4db5d9[_0xae3d('0xaf')];_0x4db5d9['calleridname']=_0x22e5e4[_0xae3d('0x120')];_0x4db5d9['calleridnum']=_0x22e5e4['calleridnum'];_0x343b57[_0xae3d('0xd1')](_0x4db5d9)['catch'](loggerCatch('[syncAgentComplete][createHistory][10]'));}})['then'](function(){if(_0x5c0eae)_0x343b57[_0xae3d('0x121')](_0x22e5e4,_0x9f5481,_0x2c0ede)[_0xae3d('0x47')](function(){return 0x1;});});}else{this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x71')]+=0x1;this['voiceQueues'][_0x5af592[_0xae3d('0xbb')]]['outboundDropCallsDayCallersExit']+=0x1;_0x22e5e4[_0xae3d('0xac')]=0xb;_0x22e5e4['statedesc']='Abandoned';_0x22e5e4['dropreason']=_0xae3d('0x122');_0x22e5e4[_0xae3d('0xfb')]+=0x1;_0x22e5e4[_0xae3d('0xf5')]+=0x1;_0x9f5481=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x123')];_0x2c0ede=this[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x119')];_0x343b57[_0xae3d('0xc1')](_0x22e5e4,_0x22e5e4[_0xae3d('0xac')],_0x21da31[_0xae3d('0x11a')])['then'](function(_0x4e0cb6){if(_0x22e5e4[_0xae3d('0xfb')]>=_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x124')]){_0x343b57[_0xae3d('0x113')](_0x22e5e4,_0x4e0cb6[_0xae3d('0x11c')]);}else{_0x343b57[_0xae3d('0xc6')]({'active':![],'countabandonedretry':_0x22e5e4[_0xae3d('0xfb')],'scheduledat':moment()[_0xae3d('0x102')](_0x343b57[_0xae3d('0x25')][_0x5af592[_0xae3d('0xbb')]][_0xae3d('0x123')],_0xae3d('0x106'))[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x21da31[_0xae3d('0xd9')],'ListId':_0x21da31[_0xae3d('0xda')],'VoiceQueueId':_0x21da31['VoiceQueueId']||undefined,'CampaignId':_0x21da31[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x125')));var _0x43e030=new History(_0x22e5e4);_0x43e030['state']=0xb;_0x43e030[_0xae3d('0xad')]=_0xae3d('0x126');_0x43e030[_0xae3d('0xaf')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));_0x43e030[_0xae3d('0xae')]=_0x43e030[_0xae3d('0xaf')];_0x43e030[_0xae3d('0x120')]=_0x22e5e4[_0xae3d('0x120')];_0x43e030[_0xae3d('0x127')]=_0x22e5e4[_0xae3d('0x127')];_0x343b57[_0xae3d('0xd1')](_0x43e030)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x128')));}})[_0xae3d('0x47')](function(){if(_0x5c0eae)_0x343b57[_0xae3d('0x121')](_0x22e5e4,_0x9f5481,_0x2c0ede)[_0xae3d('0x47')](function(){return 0x1;});});}}}};Dialer['prototype']['syncNewExten']=function(_0x2d8e07){if(this[_0xae3d('0x2a')][_0x2d8e07[_0xae3d('0xe5')]]){this[_0xae3d('0x2a')][_0x2d8e07['uniqueid']][_0xae3d('0xb7')]=_0x2d8e07['channel'];}if(this[_0xae3d('0x2b')][_0x2d8e07['uniqueid']]){this[_0xae3d('0x2b')][_0x2d8e07[_0xae3d('0xe5')]]['channel']=_0x2d8e07[_0xae3d('0xb7')];}};Dialer[_0xae3d('0xb0')][_0xae3d('0x129')]=function(_0x2a03c2){if(!this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]){return;}if(strategy[this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a03c2['actionid']]['queue']][_0xae3d('0x12b')]]===_0xae3d('0x1f')){if(this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]&&_[_0xae3d('0xb5')](this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0x12c')])&&_0x2a03c2[_0xae3d('0xe3')]==='1'&&_0x2a03c2[_0xae3d('0x12d')]==='0'){if(this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]){if(!this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]['locked']){this['agents'][_0x2a03c2[_0xae3d('0x12e')]][_0xae3d('0x12c')]=!![];this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0x12c')]=!![];this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]['stateinterface']=_0x2a03c2[_0xae3d('0x12e')];}}}}else if((strategy[this['voiceQueues'][this['actions'][_0x2a03c2['actionid']][_0xae3d('0xbb')]][_0xae3d('0x12b')]]||_0xae3d('0x1e'))===_0xae3d('0x1e')){if(this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]){if(this[_0xae3d('0x27')][_0x2a03c2[_0xae3d('0x12e')]]){this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]]['stateinterface']=_0x2a03c2[_0xae3d('0x12e')];if(_[_0xae3d('0xb5')](this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0xbb')]])){this[_0xae3d('0x30')][this['actions'][_0x2a03c2[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=[];}this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a03c2['actionid']]['queue']][_0xae3d('0x12f')](_[_0xae3d('0x94')](_['pick'](this[_0xae3d('0x2a')][_0x2a03c2[_0xae3d('0x12a')]],[_0xae3d('0x130'),_0xae3d('0x12e')]),{'status':_0x2a03c2[_0xae3d('0xe3')],'paused':_0x2a03c2[_0xae3d('0x12d')]}));}}}};function unlockQueueStatus(_0x3a6028,_0x361d9e){setTimeout(function(){if(_['isUndefined'](_0x3a6028[_0xae3d('0x131')])){loggerBooked[_0xae3d('0x9e')](_0xae3d('0x132'),_0x361d9e);}_0x3a6028[_0xae3d('0x131')]=!![];loggerBooked['info'](_0xae3d('0x133'),_0x361d9e,JSON[_0xae3d('0x7e')](_[_0xae3d('0xd8')](_0x3a6028,['name','queueStatusComplete'])));},0x1f3);}Dialer[_0xae3d('0xb0')][_0xae3d('0x134')]=function(_0x2a3155){if(!this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]){return;}var _0x4ac798=this;var _0x18880a=_0x4ac798[_0xae3d('0x25')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]];if(strategy[this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0x12b')]]===_0xae3d('0x1f')){if(this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]&&this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0x12e')]){this['preview'][_0xae3d('0x135')](this['actions'][_0x2a3155['actionid']]['idHopper'],this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0x12e')])['catch'](function(_0x36e915){logger['error'](_0xae3d('0x136'),util[_0xae3d('0x9d')](_0x36e915,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4ac798['updateOriginated'](_0x4ac798[_0xae3d('0x25')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);_0x4ac798['agents'][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0x12e')]]['locked']=![];delete _0x4ac798[_0xae3d('0x2a')][_0x2a3155['actionid']];unlockQueueStatus(_0x18880a);});}else{this[_0xae3d('0xba')](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdd')]||undefined})['catch'](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}}else if((strategy[this[_0xae3d('0x25')][this['actions'][_0x2a3155['actionid']][_0xae3d('0xbb')]][_0xae3d('0x12b')]]||_0xae3d('0x1e'))===_0xae3d('0x1e')){var _0x16b597;if(this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]&&!_['isEmpty'](this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]])){if(this[_0xae3d('0x31')][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]){this[_0xae3d('0x31')][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=this[_0xae3d('0x31')][this['actions'][_0x2a3155['actionid']][_0xae3d('0xbb')]]?this[_0xae3d('0x31')][this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]:this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]]?this['queueBooked'][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]][_0xae3d('0x137')]||0x0:0x0;}this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0x137')]=this[_0xae3d('0x31')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]];for(var _0x1930d1=0x0;_0x1930d1<this[_0xae3d('0x30')][this['actions'][_0x2a3155[_0xae3d('0x12a')]]['queue']][_0xae3d('0xa0')];_0x1930d1+=0x1){_0x16b597=rr(this['queueBooked'][this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0x31')][_0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]=this[_0xae3d('0x30')][this[_0xae3d('0x2a')][_0x2a3155['actionid']][_0xae3d('0xbb')]][_0xae3d('0x137')];if(_0x16b597[_0xae3d('0xe3')]==='1'&&_0x16b597[_0xae3d('0x12d')]==='0'){break;}}if(!_[_0xae3d('0xb5')](_0x16b597)){this[_0xae3d('0x27')][_0x16b597['stateinterface']][_0xae3d('0x138')]=_[_0xae3d('0x8c')](this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')])?!![]:this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')];}loggerBooked['info'](_0xae3d('0x139'),_0x2a3155[_0xae3d('0x12a')],_0xae3d('0x13a'),JSON[_0xae3d('0x7e')](_[_0xae3d('0xd8')](this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]],[_0xae3d('0x4c'),'unlockRR'])),'contactAgent-idHopper:\x20',JSON['stringify'](_0x16b597[_0xae3d('0x130')]));if(!_['isNil'](_0x16b597)&&_0x16b597[_0xae3d('0xe3')]==='1'&&_0x16b597[_0xae3d('0x12d')]==='0'&&this['agents'][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')]){this[_0xae3d('0x27')][_0x16b597[_0xae3d('0x12e')]]['unlockRR']=![];this['queueBooked'][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']]=[];this['preview']['run'](_0x16b597[_0xae3d('0x130')],_0x16b597[_0xae3d('0x12e')])[_0xae3d('0xb8')](function(_0x2ba9d3){logger[_0xae3d('0x9e')](_0xae3d('0x136'),util[_0xae3d('0x9d')](_0x2ba9d3,{'showHidden':![],'depth':null}));})[_0xae3d('0x22')](function(){_0x4ac798[_0xae3d('0xba')](_0x4ac798['voiceQueues'][_0x4ac798[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['queue']]);setTimeout(function(){_0x4ac798['agents'][_0x16b597[_0xae3d('0x12e')]][_0xae3d('0x138')]=!![];loggerBooked[_0xae3d('0x84')](_0xae3d('0x13b'),_0x2a3155[_0xae3d('0x12a')],'Agent:\x20',JSON[_0xae3d('0x7e')](_['pick'](_0x4ac798[_0xae3d('0x27')][_0x16b597['stateinterface']],[_0xae3d('0x4c'),_0xae3d('0x138')])),_0xae3d('0x13c'),JSON[_0xae3d('0x7e')](_0x16b597[_0xae3d('0x130')]));},0xc7);delete _0x4ac798['actions'][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a,_0x2a3155[_0xae3d('0x12a')]);});}else{loggerBooked[_0xae3d('0x84')]('[booked][unlock]');this['updateOriginated'](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this['actions'][_0x2a3155[_0xae3d('0x12a')]]['ContactId'],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x13d')));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}}else{loggerBooked[_0xae3d('0x84')](_0xae3d('0x13e'));this['updateOriginated'](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this['actions'][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this[_0xae3d('0x2a')][_0x2a3155['actionid']]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x13f')));delete this[_0xae3d('0x2a')][_0x2a3155['actionid']];unlockQueueStatus(_0x18880a);}}else{loggerBooked['info'](_0xae3d('0x140'));this[_0xae3d('0xba')](this[_0xae3d('0x25')][this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xbb')]]);this[_0xae3d('0xc6')]({'active':![],'ContactId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xd9')],'ListId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xda')],'VoiceQueueId':this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]][_0xae3d('0xdc')]||undefined,'CampaignId':this['actions'][_0x2a3155['actionid']][_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x141')));delete this[_0xae3d('0x2a')][_0x2a3155[_0xae3d('0x12a')]];unlockQueueStatus(_0x18880a);}};Dialer[_0xae3d('0xb0')]['loopCampaigns']=function(){var _0x272f16=this;return cmHopper['resetActiveCalls']({'active':![]},{'where':{'active':!![]}})[_0xae3d('0x47')](function(){setInterval(function(){_0x272f16['syncCampaigns']();},0x3e8);});};Dialer[_0xae3d('0xb0')]['checkIsTrunkReachable']=function(_0x26bf23){var _0x3a6246=this;return function(){if(!_0x3a6246['isTrunkReachable'](_0x26bf23['Trunk'])){if(!_0x3a6246['isTrunkReachable'](_0x26bf23['TrunkBackup'])){_0x26bf23['message']=_0xae3d('0x142');throw _0x26bf23[_0xae3d('0x4c')]+_0xae3d('0x143');}}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x144')]=function(_0x7c302,_0x1116fa,_0x15093a,_0x33352e){var _0x5d5911=this;return function(){var _0x36d818=!![];return _0x5d5911['ifTime'](_0x7c302,_0x1116fa,_0x15093a,_0x33352e,_0x36d818);};};Dialer['prototype']['checkIfTimeIntervals']=function(_0x8bbf91,_0x4a14f5,_0x2e0ba2,_0xfccd78){var _0x4350fd=this;return function(){var _0x44ba28=![];return _0x4350fd[_0xae3d('0x145')](_0x8bbf91[_0xae3d('0x50')],_0x4a14f5,_0x2e0ba2,_0xfccd78,_0x44ba28);};};Dialer['prototype']['ifTime']=function(_0x46b6ab,_0x3c6515,_0x106dba,_0x23c8e5,_0x49f235){var _0x5da88e=[];return new Promise(function(_0x31b2ef,_0x14964f){if(!isNotNull(_0x46b6ab)){_0x23c8e5[_0xae3d('0x48')]='INTERVAL_IS_NULL';return _0x14964f(msgResponse(_0xae3d('0x145'),_0xae3d('0x146'),_0x106dba+_0xae3d('0x147')));}if(_['isEmpty'](_0x46b6ab)){_0x23c8e5['message']=_0xae3d('0x148');return _0x14964f(msgResponse('ifTime',_0xae3d('0x146'),_0x106dba+_0xae3d('0x149')));}if(_0x3c6515&&_['isUndefined'](config[_0xae3d('0x14a')][_0x3c6515])){_0x23c8e5[_0xae3d('0x48')]=_0xae3d('0x14b');return _0x14964f(msgResponse('ifTime',_0xae3d('0x146'),_0x106dba+_0xae3d('0x14c')+_0x3c6515));}if(_[_0xae3d('0x14d')](_0x46b6ab)){for(var _0xa03352=0x0;_0xa03352<_0x46b6ab[_0xae3d('0xa0')];_0xa03352+=0x1){_0x5da88e['push'](ami[_0xae3d('0xb6')]({'action':_0xae3d('0x14e'),'command':util[_0xae3d('0x7f')](_0xae3d('0x14f'),_0x46b6ab[_0xa03352]['interval'],!_[_0xae3d('0x8c')](config[_0xae3d('0x14a')][_0x3c6515])?_0x3c6515:'')})[_0xae3d('0x47')](function(_0x48b4e1){return _0x48b4e1['content'][_0xae3d('0x150')](_0xae3d('0x151'))>=0x0;})[_0xae3d('0xb8')](myreject(_0x14964f)));}}else{_0x5da88e[_0xae3d('0x12f')](ami[_0xae3d('0xb6')]({'action':_0xae3d('0x14e'),'command':util[_0xae3d('0x7f')](_0xae3d('0x14f'),_0x46b6ab,!_[_0xae3d('0x8c')](config[_0xae3d('0x14a')][_0x3c6515])?_0x3c6515:'')})[_0xae3d('0x47')](function(_0x4e3f37){return _0x4e3f37[_0xae3d('0x152')]['indexOf'](_0xae3d('0x151'))>=0x0;})['catch'](myreject(_0x14964f)));}Promise[_0xae3d('0x153')](_0x5da88e)[_0xae3d('0x47')](function(_0x529f3d){var _0x1823a7=_[_0xae3d('0x154')](_0x529f3d);if(_0x1823a7){return _0x31b2ef(_0x1823a7);}else{_0x23c8e5['message']=_0x49f235?_0xae3d('0x155'):_0xae3d('0x156');return _0x14964f(msgResponse(_0xae3d('0x157'),'Failure','Global:\x20'+_0x49f235+'\x20'+_0x106dba+_0xae3d('0x158')+util[_0xae3d('0x9d')](_0x46b6ab,{'showHidden':![],'depth':null})+_0xae3d('0x159')+_0x3c6515));}})[_0xae3d('0xb8')](function(_0x430b33){return _0x14964f(msgResponse('ifTime','Failure',JSON[_0xae3d('0x7e')](_0x430b33)));});});};Dialer[_0xae3d('0xb0')][_0xae3d('0x15a')]=function(_0x2a82d7){var _0x33a87a=this;return function(){switch(_0x2a82d7[_0xae3d('0x63')]){case _0xae3d('0x15b'):freeVariablesPredictive(_0x2a82d7);_0x33a87a[_0xae3d('0x15c')](_0x2a82d7,0x1);break;case _0xae3d('0x15d'):freeVariablesPredictive(_0x2a82d7);_0x33a87a[_0xae3d('0x15c')](_0x2a82d7,_0x2a82d7[_0xae3d('0x15e')]);break;case _0xae3d('0xb'):_0x33a87a[_0xae3d('0xb')](_0x2a82d7);break;case'booked':freeVariablesPredictive(_0x2a82d7);_0x33a87a['handlePower'](_0x2a82d7,0x1);break;default:freeVariablesPredictive(_0x2a82d7);logger[_0xae3d('0x9e')](_0xae3d('0x15f'),_0x2a82d7['name'],_0xae3d('0x160'));}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x161')]=function(_0x3f309e){return Promise['resolve']()[_0xae3d('0x47')](cmHopper[_0xae3d('0x162')](_0x3f309e['id'],previewRecallmeReminderInterval))[_0xae3d('0x47')](function(_0x44a4b3){for(var _0x44de3c=0x0;_0x44de3c<_0x44a4b3[_0xae3d('0xa0')];_0x44de3c++){var _0x3398a6=_0x44a4b3[_0x44de3c][_0xae3d('0x163')][_0xae3d('0x4c')];if(_0x3398a6)io['to'](util[_0xae3d('0x7f')](_0xae3d('0x164'),_0x3398a6))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x44a4b3[_0x44de3c]});}})['catch'](function(){});};Dialer[_0xae3d('0xb0')][_0xae3d('0x165')]=function(_0x4a9d1c){var _0x5db935=this;return function(){_0x5db935['handleIvr'](_0x4a9d1c);};};Dialer['prototype']['syncQueueSummary']=function(_0x9b4741){var _0x3ee1d1=this;if(isNotPreview(_0x9b4741[_0xae3d('0x63')])){if(isVoiceQueueOutbound(_0x9b4741[_0xae3d('0x5e')])&&isActive(_0x9b4741[_0xae3d('0x62')])){_0x9b4741['sendMessageOneNotActive']=!![];Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](checkIsLoggedIn(_0x9b4741,_0x9b4741[_0xae3d('0x58')]))[_0xae3d('0x47')](checkIsActive(_0x9b4741,_0x9b4741[_0xae3d('0x62')]))[_0xae3d('0x47')](checkInterval(_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x166')](_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x144')](_0x9b4741[_0xae3d('0x167')],_0x9b4741[_0xae3d('0x168')],_0x9b4741[_0xae3d('0x4c')],_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x169')](_0x9b4741[_0xae3d('0x7d')],_0x9b4741['dialTimezone'],_0x9b4741[_0xae3d('0x4c')],_0x9b4741))[_0xae3d('0x47')](_0x3ee1d1[_0xae3d('0x15a')](_0x9b4741))[_0xae3d('0xb8')](loggerCatchQueueSummary('[syncQueueSummary]',_0x9b4741));}else{notSendMessagesQueue(_0x9b4741);}}else{freeVariablesPredictive(_0x9b4741);}};Dialer[_0xae3d('0xb0')][_0xae3d('0x3d')]=_['throttle'](function(){var _0x366555=_[_0xae3d('0x16a')](this[_0xae3d('0x25')],function(_0x336868){return _0x336868[_0xae3d('0x16b')];});var _0x5d3336=_[_0xae3d('0x16a')](this[_0xae3d('0x27')],function(_0x3b5fa9){return _0x3b5fa9['online']&&_0x3b5fa9[_0xae3d('0xe3')]===_0xae3d('0xe4');});if(_0x366555[_0xae3d('0xa0')]>0x0&&_0x5d3336[_0xae3d('0xa0')]>0x0){return Promise[_0xae3d('0xbe')]()['then'](cmHopper['handlePreviewRecallNotifications'](_[_0xae3d('0x16c')](_0x366555,'id'),previewRecallmeReminderInterval,_[_0xae3d('0x16c')](_0x5d3336,'id')))[_0xae3d('0x47')](function(_0x118709){for(var _0x53615c=0x0;_0x53615c<_0x118709[_0xae3d('0xa0')];_0x53615c++){var _0x24c5e9=_0x118709[_0x53615c][_0xae3d('0x163')][_0xae3d('0x4c')];if(_0x24c5e9)io['to'](util[_0xae3d('0x7f')](_0xae3d('0x164'),_0x24c5e9))[_0xae3d('0x55')](_0xae3d('0x16d'),{'hopper':_0x118709[_0x53615c]});}})['catch'](function(_0xc81cd2){logger[_0xae3d('0x9e')]('checkPreviewRecallReminder',_0xc81cd2);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xae3d('0xb0')][_0xae3d('0x16e')]=function(){var _0x1e3db3=this;var _0x339330;for(var _0x3eb779 in this[_0xae3d('0x26')]){if(typeof this[_0xae3d('0x26')][_0x3eb779]!==_0xae3d('0xb4')){_0x339330=this['campaigns'][_0x3eb779];if(isCampaignIvr(_0x339330[_0xae3d('0x5e')])&&isActive(_0x339330[_0xae3d('0x7c')])){_0x339330[_0xae3d('0xa6')]=!![];Promise[_0xae3d('0xbe')]()[_0xae3d('0x47')](checkIsActive(_0x339330,_0x339330[_0xae3d('0x7c')]))[_0xae3d('0x47')](checkInterval(_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x166')](_0x339330))['then'](_0x1e3db3['checkIfTime'](_0x339330['dialGlobalInterval'],_0x339330[_0xae3d('0x168')],_0x339330[_0xae3d('0x4c')],_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x169')](_0x339330[_0xae3d('0x7d')],_0x339330['dialTimezone'],_0x339330[_0xae3d('0x4c')],_0x339330))[_0xae3d('0x47')](_0x1e3db3[_0xae3d('0x165')](_0x339330))[_0xae3d('0xb8')](loggerCatchQueueSummary(_0xae3d('0x16f'),_0x339330));}else{notSendMessagesCampaign(_0x339330);}}}};function getCallerIdRandom(_0x3d33dc,_0x5171a6){var _0x79fbb1;var _0x32eeaa;var _0x1f167f;if(_0x5171a6<=0x0){_0x5171a6=0x1;}_0x79fbb1=new RegExp(_0xae3d('0x170')+_0x5171a6+'}$');_0x32eeaa=Math['pow'](0xa,_0x5171a6-0x1);_0x1f167f=Math[_0xae3d('0x171')](0xa,_0x5171a6)-0x1;return util[_0xae3d('0x7f')]('%s',_[_0xae3d('0x172')](_0x3d33dc,_0x79fbb1,_[_0xae3d('0x173')](_0x32eeaa,_0x1f167f)));}function extractCalleridName(_0x24dcf7){var _0x111531=_0x24dcf7[_0xae3d('0x174')](/"(.*?)"/);return _0x111531?_0x111531[0x1]:_0x24dcf7;}Dialer[_0xae3d('0xb0')]['actionOriginate']=function(_0x773679,_0x17518f){var _0x46cc7d=this;var _0x33f68a=uuid['v4']();this[_0xae3d('0x2a')][_0x33f68a]=new Action(_0x773679,_0x17518f,_0x33f68a);return new Promise(function(_0x1fc58e,_0x25cddd){if(_[_0xae3d('0x8c')](_0x773679)&&typeof _0x773679!=='object'){return _0x25cddd(msgResponse(_0xae3d('0x175'),'Failure',_0xae3d('0x176')));}if(_[_0xae3d('0x8c')](_0x17518f[_0xae3d('0x177')])||_0x17518f[_0xae3d('0x177')]===null){return _0x25cddd(msgResponse('originate',_0xae3d('0x146'),_0xae3d('0x178')));}var _0x3025e8={'XMD-CALLERID':_0x46cc7d['actions'][_0x33f68a]['getCaller'](),'XMD-AGI':_0x773679['dialQueueProject']?util[_0xae3d('0x7f')](_0xae3d('0x179'),ipAgi,_0x773679[_0xae3d('0x10b')]):_0xae3d('0x17a'),'XMD-AGIAFTER':_0x773679[_0xae3d('0x110')]?util['format'](_0xae3d('0x179'),ipAgi,_0x773679['dialQueueProject2']):_0xae3d('0x17a'),'XMD-QUEUE':_0x773679[_0xae3d('0x5e')]===_0xae3d('0x56')?util[_0xae3d('0x7f')](_0xae3d('0x17b'),_0x773679[_0xae3d('0x4c')],_0x773679['dialQueueOptions']||'',_0x773679[_0xae3d('0x17c')]?'c':'',_0x773679['dialQueueTimeout']||0x3):'NONE','XMD-CONTACTID':_0x17518f['ContactId'],'XMD-CDRTYPE':_0xae3d('0x9'),'CALLERID(all)':_0x46cc7d[_0xae3d('0x2a')][_0x33f68a][_0xae3d('0x17d')](),'XMD-AMD':_0x773679[_0xae3d('0xea')]?_0xae3d('0x17e'):_0xae3d('0x17a'),'XMD-DESTINATION':_0xae3d('0xe9')};if(_0x773679[_0xae3d('0xea')]){_0x3025e8['XMD-AMDINITIALSILENCE']=_0x773679['dialAMDInitialSilence']||0x9c4;_0x3025e8[_0xae3d('0x17f')]=_0x773679[_0xae3d('0x180')]||0x5dc;_0x3025e8[_0xae3d('0x181')]=_0x773679[_0xae3d('0x182')]||0x320;_0x3025e8[_0xae3d('0x183')]=_0x773679['dialAMDTotalAnalysisTime']||0x1388;_0x3025e8[_0xae3d('0x184')]=_0x773679[_0xae3d('0x185')]||0x64;_0x3025e8[_0xae3d('0x186')]=_0x773679[_0xae3d('0x187')]||0x32;_0x3025e8['XMD-AMDMAXIMUMNUMBEROFWORDS']=_0x773679[_0xae3d('0x188')]||0x3;_0x3025e8[_0xae3d('0x189')]=_0x773679['dialAMDSilenceThreshold']||0x100;_0x3025e8['XMD-AMDMAXIMUMWORDLENGTH']=_0x773679[_0xae3d('0x18a')]||0x1388;}if(_0x773679[_0xae3d('0x5e')]===_0xae3d('0x56')){_0x3025e8[_0xae3d('0x18b')]=_0x17518f['VoiceQueueId'];}else{_0x3025e8[_0xae3d('0x18c')]=_0x17518f['CampaignId'];}for(var _0x1e5cdb in _0x17518f[_0xae3d('0x18d')]){if(typeof _0x17518f[_0xae3d('0x18d')][_0x1e5cdb]!==_0xae3d('0xb4')){if(isNotNull(_0x17518f[_0xae3d('0x18d')][_0x1e5cdb])&&_0x1e5cdb!=='id'&&_0x1e5cdb!=='tags'&&_0x1e5cdb!==_0xae3d('0x18e')&&_0x1e5cdb!==_0xae3d('0x18f')){_0x3025e8[util['format'](_0xae3d('0x190'),_0xae3d('0x191'),_[_0xae3d('0x192')](_0x1e5cdb))]=_0x17518f[_0xae3d('0x18d')][_0x1e5cdb];}}}var _0x134ba1=_0x46cc7d[_0xae3d('0xe1')](_0x773679[_0xae3d('0x7b')])?getCallerId(_0x773679[_0xae3d('0x7b')][_0xae3d('0x193')],_0x773679[_0xae3d('0x194')],_0x773679[_0xae3d('0x195')]>0x0?getCallerIdRandom(_0x773679[_0xae3d('0x64')],_0x773679['dialRandomLastDigitCallerIdNumber']):_0x773679[_0xae3d('0x64')]):getCallerId(_[_0xae3d('0xb5')](_0x773679['TrunkBackup'])?_0x773679[_0xae3d('0x7b')][_0xae3d('0x193')]:_0x773679[_0xae3d('0x196')][_0xae3d('0x193')],_0x773679[_0xae3d('0x194')],_0x773679[_0xae3d('0x195')]>0x0?getCallerIdRandom(_0x773679[_0xae3d('0x64')],_0x773679[_0xae3d('0x195')]):_0x773679[_0xae3d('0x64')]);if(_0x134ba1){_0x3025e8[_0xae3d('0x197')]=_0x46cc7d[_0xae3d('0x2a')][_0x33f68a][_0xae3d('0x198')]=extractCalleridName(_0x134ba1);_0x3025e8[_0xae3d('0x199')]=_0x17518f[_0xae3d('0x177')];}_0x773679[_0xae3d('0x19a')]=_0x3025e8;return ami[_0xae3d('0xb6')]({'actionid':_0x33f68a,'action':_0xae3d('0x175'),'channel':_0x46cc7d[_0xae3d('0xe1')](_0x773679['Trunk'])?util[_0xae3d('0x7f')](_0xae3d('0x19b'),_0x773679[_0xae3d('0x7b')][_0xae3d('0x4c')],isNotNull(_0x773679['dialPrefix'])?_0x773679[_0xae3d('0x65')]['trim']()||'':'',_0x773679[_0xae3d('0x19c')]>0x0?_0x17518f[_0xae3d('0x177')][_0xae3d('0x19d')](_0x773679[_0xae3d('0x19c')]):_0x17518f[_0xae3d('0x177')]):util['format'](_0xae3d('0x19b'),_[_0xae3d('0xb5')](_0x773679[_0xae3d('0x196')])?_0x773679[_0xae3d('0x7b')][_0xae3d('0x4c')]:_0x773679['TrunkBackup'][_0xae3d('0x4c')],isNotNull(_0x773679[_0xae3d('0x65')])?_0x773679['dialPrefix'][_0xae3d('0x19e')]()||'':'',_0x773679[_0xae3d('0x19c')]>0x0?_0x17518f[_0xae3d('0x177')][_0xae3d('0x19d')](_0x773679[_0xae3d('0x19c')]):_0x17518f[_0xae3d('0x177')]),'callerid':_0x134ba1,'Exten':_0xae3d('0xe9'),'Context':_0xae3d('0x19f'),'Priority':'1','variable':_0x3025e8,'timeout':(_0x773679[_0xae3d('0x1a0')]||0x1e)*0x3e8,'async':!![],'channelid':_0x33f68a})[_0xae3d('0x47')](function(_0x2634cf){return _0x1fc58e(_0x2634cf);})[_0xae3d('0xb8')](function(_0x54bf98){_0x773679[_0xae3d('0x1a1')]+=0x1;var _0x58aeac=new History(_0x46cc7d[_0xae3d('0x2a')][_0x33f68a]);logger[_0xae3d('0x9e')](util[_0xae3d('0x7f')](_0xae3d('0x1a2'),JSON[_0xae3d('0x7e')](_0x54bf98)));_0x58aeac[_0xae3d('0xac')]=0xe;_0x58aeac[_0xae3d('0xad')]=_0xae3d('0x1a3');_0x58aeac[_0xae3d('0xaf')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));_0x58aeac[_0xae3d('0xae')]=_0x58aeac[_0xae3d('0xaf')];_0x46cc7d[_0xae3d('0xd1')](_0x58aeac)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a4')));_0x46cc7d['moveContactManagedDialer'](_0x58aeac)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a4')))[_0xae3d('0x22')](function(){delete _0x46cc7d['actions'][_0x33f68a];return _0x25cddd(msgResponse(_0xae3d('0x175'),_0xae3d('0x1a5'),_0xae3d('0x1a6')));});});});};Dialer[_0xae3d('0xb0')][_0xae3d('0x38')]=function(_0x29f093){var _0x5211c7=this[_0xae3d('0x2a')][_0x29f093['actionid']];if(_0x5211c7){delete this[_0xae3d('0x2a')][_0x29f093[_0xae3d('0x12a')]];_0x5211c7[_0xae3d('0x116')]=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');var _0x55cee9=_0x5211c7[_0xae3d('0x5e')]===_0xae3d('0x82')?this[_0xae3d('0x26')][_0x5211c7[_0xae3d('0xbb')]]:this['voiceQueues'][_0x5211c7[_0xae3d('0x1a7')]()];if(!this['isSuccess'](_0x29f093['response'])){this[_0xae3d('0xba')](_0x55cee9);return this[_0xae3d('0x1a8')](_0x5211c7,_0x55cee9,_0x29f093)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1a9')));}this[_0xae3d('0x2b')][_0x29f093[_0xae3d('0xe5')]]=_0x5211c7;}};Dialer[_0xae3d('0xb0')][_0xae3d('0x1aa')]=function(_0x1b0bd0,_0x3acbc1,_0x23dbcd){var _0x3b028e=new History(_0x3acbc1);if(_0x3b028e[_0xae3d('0xf8')]+_0x3b028e['countcongestionretry']+_0x3b028e['countnoanswerretry']+_0x3b028e[_0xae3d('0x1ab')]+_0x3b028e[_0xae3d('0x11d')]+_0x3b028e[_0xae3d('0xfb')]+_0x3b028e[_0xae3d('0xf4')]+_0x3b028e[_0xae3d('0xfc')]>=_0x23dbcd['dialGlobalMaxRetry']-0x1){return!![];}switch(_0x1b0bd0){case 0x3:if(_0x3b028e[_0xae3d('0xfa')]>=_0x23dbcd[_0xae3d('0x1ac')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x3b028e[_0xae3d('0xfa')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1ad')],_0xae3d('0x106'))['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e['ListId'],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1ae')));break;case 0x5:if(_0x3b028e[_0xae3d('0xf8')]>=_0x23dbcd[_0xae3d('0x1af')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countbusyretry':_0x3b028e[_0xae3d('0xf8')]+=0x1,'scheduledat':moment()['add'](_0x23dbcd['dialBusyRetryFrequency'],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1b0')));break;case 0x8:if(_0x3b028e['countcongestionretry']>=_0x23dbcd[_0xae3d('0x1b1')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countcongestionretry':_0x3b028e[_0xae3d('0xf9')]+=0x1,'scheduledat':moment()['add'](_0x23dbcd[_0xae3d('0x1b2')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x1b3')));break;case 0x0:if(_0x3b028e[_0xae3d('0x1ab')]>=_0x23dbcd[_0xae3d('0x1b4')]-0x1){return!![];}else{this[_0xae3d('0xc6')]({'active':![],'countnosuchnumberretry':_0x3b028e[_0xae3d('0x1ab')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1b5')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1b6')));}break;case 0xa:if(_0x3b028e[_0xae3d('0x11d')]>=_0x23dbcd[_0xae3d('0x11b')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countdropretry':_0x3b028e['countdropretry']+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x11e')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e['CampaignId']||undefined})['catch'](loggerCatch(_0xae3d('0x11f')));break;case 0xb:if(_0x3b028e[_0xae3d('0xfb')]>=_0x23dbcd['dialAbandonedMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x3b028e[_0xae3d('0xfb')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x123')],_0xae3d('0x106'))['format'](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x125')));break;case 0x13:if(_0x3b028e['countmachineretry']>=_0x23dbcd[_0xae3d('0x100')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x3b028e['countmachineretry']+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x103')],'minutes')[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e['ContactId'],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e['VoiceQueueId']||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x108')));break;case 0x14:if(_0x3b028e['countagentrejectretry']>=_0x23dbcd[_0xae3d('0x1b7')]-0x1){return!![];}this[_0xae3d('0xc6')]({'active':![],'countagentrejectretry':_0x3b028e[_0xae3d('0xfc')]+=0x1,'scheduledat':moment()[_0xae3d('0x102')](_0x23dbcd[_0xae3d('0x1b8')],_0xae3d('0x106'))[_0xae3d('0x7f')](_0xae3d('0x107')),'ContactId':_0x3b028e[_0xae3d('0xd9')],'ListId':_0x3b028e[_0xae3d('0xda')],'VoiceQueueId':_0x3b028e[_0xae3d('0xdc')]||undefined,'CampaignId':_0x3b028e[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x1b9')));break;default:return!![];}};Dialer[_0xae3d('0xb0')]['callProgressDetecting']=function(_0x2e992a,_0x3974bd,_0x582cbf){var _0x52b51d=this;var _0x17c3a1=new History(_0x2e992a);var _0x53fdb8=![];var _0x9d0795;var _0x4c277c;return new Promise(function(_0x4e49d1,_0x58caa8){if(_[_0xae3d('0x8c')](_0x3974bd)&&typeof _0x3974bd!==_0xae3d('0x1ba')){return _0x58caa8(msgResponse('[callProgressDetecting]',_0xae3d('0x146'),_0xae3d('0x1bb')));}if(_[_0xae3d('0x8c')](_0x582cbf)&&typeof _0x582cbf!==_0xae3d('0x1ba')){return _0x58caa8(msgResponse(_0xae3d('0x1bc'),'Failure','evt\x20is\x20undefine'));}_0x52b51d['verifyAdditionalPhones'](_0x17c3a1,_0x582cbf[_0xae3d('0x1bd')],_0x3974bd)[_0xae3d('0x47')](function(_0x3cc8f4){if(_0x3cc8f4[_0xae3d('0x11c')]==0x1)_0x53fdb8=!![];switch(_0x582cbf[_0xae3d('0x1bd')]){case'0':_0x3974bd['outboundNoSuchCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x0;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1be');_0x17c3a1[_0xae3d('0x1ab')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;ami[_0xae3d('0x55')](_0xae3d('0x1bf'),ut[_0xae3d('0xee')](_0x2e992a,_0xae3d('0x1c0')));_0x9d0795=_0x3974bd['dialNoSuchNumberRetryFrequency'];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch(_0xae3d('0xf7')));if(_0x52b51d[_0xae3d('0x1aa')](0x0,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0x1ab')]>=_0x3974bd[_0xae3d('0x1b4')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c2'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c2'));}}break;case'3':_0x3974bd[_0xae3d('0x1c3')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x3;_0x17c3a1['statedesc']=_0xae3d('0x1c4');_0x17c3a1[_0xae3d('0xfa')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;var _0xb30639=ut[_0xae3d('0x1c5')](_0x2e992a,_0x3974bd);ami[_0xae3d('0x55')]('custom:agentnoanswer',_0xb30639);_0x9d0795=_0x3974bd[_0xae3d('0x1ad')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d['createHistory'](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1c6')));if(_0x52b51d[_0xae3d('0x1aa')](0x3,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfa')]>=_0x3974bd[_0xae3d('0x1ac')]){_0x52b51d['createStateFinal'](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1c7'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x203\x20ringing\x20no\x20answer');}}break;case'5':_0x3974bd[_0xae3d('0x1c8')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x5;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1c9');_0x17c3a1[_0xae3d('0xf8')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;ami['emit'](_0xae3d('0x1ca'),ut[_0xae3d('0xee')](_0x2e992a,_0xae3d('0x1cb')));_0x9d0795=_0x3974bd[_0xae3d('0x1cc')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d['createHistory'](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1cd')));if(_0x52b51d[_0xae3d('0x1aa')](0x5,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xf8')]>=_0x3974bd['dialBusyMaxRetry']){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1ce'));}else{_0x52b51d['stateGlobal'](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x205\x20busy');}}break;case'8':_0x3974bd['outboundCongestionCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x8;_0x17c3a1[_0xae3d('0xad')]='Congestion';_0x17c3a1['countcongestionretry']+=0x1;_0x17c3a1['countglobal']+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x1b2')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];ami[_0xae3d('0x55')]('custom:agentcongestion',ut['buildObj'](_0x2e992a,_0xae3d('0x1cf')));_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)['catch'](loggerCatch(_0xae3d('0x1d0')));if(_0x52b51d['checkRetriveMax'](0x8,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1['countcongestionretry']>=_0x3974bd[_0xae3d('0x1b1')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,'reason\x208\x20congestion');}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d1'));}}break;case'11':_0x3974bd[_0xae3d('0x1d2')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0xb;_0x17c3a1['statedesc']=_0xae3d('0x126');_0x17c3a1[_0xae3d('0xfb')]+=0x1;_0x17c3a1[_0xae3d('0xf5')]+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x123')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x52b51d[_0xae3d('0x1aa')](0xb,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfb')]>=_0x3974bd[_0xae3d('0x124')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d3'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d3'));}}break;case'20':_0x3974bd['outboundRejectCallsDay']+=0x1;_0x17c3a1[_0xae3d('0xac')]=0x14;_0x17c3a1[_0xae3d('0xad')]=_0xae3d('0x1d4');_0x17c3a1[_0xae3d('0xfc')]+=0x1;_0x17c3a1['countglobal']+=0x1;_0x9d0795=_0x3974bd[_0xae3d('0x1b8')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];ami[_0xae3d('0x55')](_0xae3d('0x1d5'),ut['buildObj'](_0x2e992a,'agentreject'));_0x52b51d['createHistory'](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][20]'));if(_0x52b51d[_0xae3d('0x1aa')](0x14,_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1[_0xae3d('0xfc')]>=_0x3974bd[_0xae3d('0x1b7')]){_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d6'));}else{_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0xae3d('0x1d6'));}}break;default:_0x3974bd[_0xae3d('0x6d')]+=0x1;_0x17c3a1[_0xae3d('0xac')]=0xc;_0x17c3a1[_0xae3d('0xad')]=_0x582cbf[_0xae3d('0x1bd')];_0x9d0795=_0x3974bd[_0xae3d('0x1b8')];_0x4c277c=_0x3974bd[_0xae3d('0x119')];_0x52b51d[_0xae3d('0xd1')](_0x17c3a1)[_0xae3d('0xb8')](loggerCatch('[syncAgentComplete][createHistory][?]'));if(_0x52b51d[_0xae3d('0x1aa')](_0x582cbf[_0xae3d('0x1bd')],_0x2e992a,_0x3974bd)&&!_0x53fdb8){if(_0x17c3a1['countbusyretry']+_0x17c3a1[_0xae3d('0xf9')]+_0x17c3a1['countnoanswerretry']+_0x17c3a1[_0xae3d('0x1ab')]+_0x17c3a1['countdropretry']+_0x17c3a1[_0xae3d('0xfb')]+_0x17c3a1[_0xae3d('0xf4')]+_0x17c3a1['countagentrejectretry']>=_0x3974bd[_0xae3d('0xfd')]){_0x52b51d[_0xae3d('0xfe')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0x582cbf[_0xae3d('0x1bd')]);}else{_0x52b51d[_0xae3d('0x1c1')](_0x17c3a1,_0x4e49d1,_0x58caa8,_0x582cbf['reason']);}}}})[_0xae3d('0x47')](function(){if(_0x53fdb8){_0x52b51d[_0xae3d('0x121')](_0x17c3a1,_0x9d0795,_0x4c277c)[_0xae3d('0x47')](function(){return _0x4e49d1(0x1);});}});});};Dialer['prototype'][_0xae3d('0xfe')]=function(_0x32abba,_0x3d7b5e,_0x2ff105,_0xc4ae24){var _0x4cd6f7=new Final(_0x32abba);_0x4cd6f7['state']=0xf;_0x4cd6f7[_0xae3d('0xad')]=_0xae3d('0x1d7');this[_0xae3d('0x1c1')](_0x4cd6f7,_0x3d7b5e,_0x2ff105,_0xc4ae24);};Dialer[_0xae3d('0xb0')][_0xae3d('0x1c1')]=function(_0x489045,_0x1110a8,_0x14b8fd,_0x57ff38){this[_0xae3d('0xd0')](_0x489045)[_0xae3d('0x47')](function(){return _0x1110a8(msgResponse(_0xae3d('0x1bc'),_0xae3d('0xe0'),_0x57ff38));})[_0xae3d('0xb8')](function(){return _0x14b8fd(msgResponse(_0xae3d('0x1d8'),_0xae3d('0x146'),_0xae3d('0x1d9')));});};Dialer[_0xae3d('0xb0')]['predictive']=function(_0x8ddfc7){var _0x437d15=_0x8ddfc7[_0xae3d('0x1da')]/0x64;var _0x210dc3=_0x8ddfc7[_0xae3d('0x6a')]/(_0x8ddfc7['outboundDropCallsDayTimeout']+_0x8ddfc7[_0xae3d('0x67')]);var _0xab28f0=Math[_0xae3d('0x1db')](_0x8ddfc7[_0xae3d('0x74')]*(_0x8ddfc7[_0xae3d('0x1dc')]/0x64));var _0x3155e2=Math[_0xae3d('0x1db')](_0x8ddfc7['predictiveIntervalAvailable']*(_0x8ddfc7[_0xae3d('0x1dd')]/0x64));var _0x47f11b=_0x8ddfc7['available']+_0x8ddfc7[_0xae3d('0x5c')];var _0x2be9f5=Math['floor'](_0x8ddfc7['erlangCalls']*_0x8ddfc7['erlangAbandonmentRate']*_0x8ddfc7[_0xae3d('0x72')]*_0x8ddfc7[_0xae3d('0x1de')]);if(_['isUndefined'](_0x8ddfc7[_0xae3d('0x2e')])){if(!_[_0xae3d('0x8c')](_0x8ddfc7['startPredictive'])){_0x8ddfc7[_0xae3d('0x2d')]=undefined;loggerPredictive['error'](_0xae3d('0x1df'),_0xae3d('0x1e0'));}if(!_['isUndefined'](_0x8ddfc7[_0xae3d('0x97')])){loggerPredictive['error'](_0xae3d('0x1df'),_0xae3d('0x1e1'));clearInterval(_0x8ddfc7[_0xae3d('0x97')]);_0x8ddfc7['handlePredictive']=undefined;}_0x8ddfc7['startProgressive']=moment()[_0xae3d('0x7f')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],'collection\x20data\x20in\x20progressive\x20at',_0x8ddfc7[_0xae3d('0x2e')]);this[_0xae3d('0x15c')](_0x8ddfc7,0x1);}else if(ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7['startProgressive'])){this[_0xae3d('0x15c')](_0x8ddfc7,0x1);loggerPredictiveCalls['info'](_0xae3d('0x1e3'),_0x8ddfc7[_0xae3d('0x2e')],_0x8ddfc7[_0xae3d('0x4c')]);_0x8ddfc7['erlangCalls']=0x0;_0x8ddfc7[_0xae3d('0x117')]=0x0;}else if(_0x437d15<_0x210dc3&&_0x8ddfc7[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){freeVariablesPredictive(_0x8ddfc7);loggerPredictive['info'](_0xae3d('0x1e6'),_0xae3d('0x1e7'),_0x210dc3,_0xae3d('0x2e'),_0x8ddfc7[_0xae3d('0x4c')]);}else if(_0x2be9f5<_0x8ddfc7[_0xae3d('0x117')]&&_0x8ddfc7[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]',_0xae3d('0x1e8'),_0x2be9f5,_0xae3d('0x1e9'),_0x8ddfc7[_0xae3d('0x117')],_0xae3d('0x2e'),_0x8ddfc7[_0xae3d('0x4c')]);}else if(!ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7[_0xae3d('0x2e')])&&_[_0xae3d('0x8c')](_0x8ddfc7[_0xae3d('0x2d')])&&!_[_0xae3d('0x8c')](_0x8ddfc7[_0xae3d('0x2e')])){_0x8ddfc7['startPredictive']=moment()['format'](_0xae3d('0x107'));loggerPredictive[_0xae3d('0x84')](_0x8ddfc7['name'],_0xae3d('0x1ea'),_0x8ddfc7[_0xae3d('0x2d')]);this[_0xae3d('0xc4')](_0x8ddfc7[_0xae3d('0x1e2')])[_0xae3d('0x47')](this[_0xae3d('0x1eb')](_0x8ddfc7))[_0xae3d('0x47')](mergeDataErlangB(_0x8ddfc7))[_0xae3d('0x47')](this[_0xae3d('0x1ec')](_0x8ddfc7))[_0xae3d('0xb8')](loggerCatchPredictive(_0xae3d('0x1ed'),_0x8ddfc7));}else if(!ifInterval(_0x8ddfc7[_0xae3d('0x1e2')],_0x8ddfc7[_0xae3d('0x2d')])){_0x8ddfc7[_0xae3d('0x117')]=0x0;_0x8ddfc7[_0xae3d('0x2d')]=moment()[_0xae3d('0x7f')](_0xae3d('0x107'));loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1ee'),_0x8ddfc7[_0xae3d('0x2d')]);clearInterval(_0x8ddfc7[_0xae3d('0x97')]);_0x8ddfc7['handlePredictive']=undefined;this[_0xae3d('0xc4')](_0x8ddfc7[_0xae3d('0x1e2')])[_0xae3d('0x47')](this['getDataPredictive'](_0x8ddfc7))['then'](mergeDataErlangB(_0x8ddfc7))[_0xae3d('0x47')](this[_0xae3d('0x1ec')](_0x8ddfc7))[_0xae3d('0xb8')](loggerCatchPredictive(_0xae3d('0x1ef'),_0x8ddfc7));}else if(_0x8ddfc7[_0xae3d('0x74')]&&_0x47f11b<_0x8ddfc7['predictiveIntervalAvailable']-_0x3155e2){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1f0'),_0x47f11b,_0xae3d('0x1f1'),_0x8ddfc7[_0xae3d('0x74')],'-',_0x3155e2,'=',_0x8ddfc7[_0xae3d('0x74')]-_0x3155e2,')');}else if(_0x8ddfc7[_0xae3d('0x74')]&&_0x47f11b>_0x8ddfc7[_0xae3d('0x74')]+_0xab28f0){freeVariablesPredictive(_0x8ddfc7);loggerPredictive[_0xae3d('0x84')](_0x8ddfc7[_0xae3d('0x4c')],_0xae3d('0x1f0'),_0x47f11b,_0xae3d('0x1f2'),_0x8ddfc7[_0xae3d('0x74')],'+',_0xab28f0,'=',_0x8ddfc7[_0xae3d('0x74')]+_0xab28f0,')');}};Dialer[_0xae3d('0xb0')][_0xae3d('0x1eb')]=function(_0x3f35ae){var _0x2d30f5=this;return function(_0x1af371){return new Promise(function(_0x105b5e,_0x264a4b){_[_0xae3d('0x94')](_0x3f35ae,_0x1af371[0x0]);if(checkGetDataPredictive(_0x1af371[0x0])){var _0x4d3d79=_0x3f35ae[_0xae3d('0x74')]=_0x3f35ae[_0xae3d('0x5c')]+_0x3f35ae[_0xae3d('0x57')];var _0x4e0745=_0x3f35ae[_0xae3d('0x1e2')]*0x3c;var _0x4e2774=_0x1af371[0x0][_0xae3d('0x70')]+_0x1af371[0x0][_0xae3d('0x6f')];var _0x2b5560=(_0x1af371[0x0]['predictiveIntervalAnsweredCalls']+_0x1af371[0x0][_0xae3d('0x87')]+_0x1af371[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x1af371[0x0][_0xae3d('0x75')];_0x3f35ae[_0xae3d('0x72')]=_0x2b5560>0x0?_0x2b5560:0x1;switch(_0x3f35ae['dialPredictiveOptimization']){case _0xae3d('0x1e5'):var _0x4f1f89=_0x3f35ae[_0xae3d('0x1da')]/0x64;return _0x2d30f5[_0xae3d('0x1f3')](_0x4d3d79,_0x4e0745,_0x4e2774,_0x2b5560,_0x4f1f89)[_0xae3d('0x47')](function(_0x319a93){return _0x105b5e(_0x319a93);});case _0xae3d('0x1f4'):var _0x41193b=_0x3f35ae['dialPredictiveOptimizationPercentage']/0x64;return _0x2d30f5[_0xae3d('0x1f5')](_0x4d3d79,_0x4e0745,_0x4e2774,_0x2b5560,_0x41193b)[_0xae3d('0x47')](function(_0x183b46){return _0x105b5e(_0x183b46);});default:return _0x264a4b(msgResponse('[getDataPredictive]',_0xae3d('0x146'),_0xae3d('0x1f6')));}}else{return _0x264a4b(msgResponse(_0xae3d('0x1f7'),_0xae3d('0x146'),_0xae3d('0x1f8')));}});};};Dialer[_0xae3d('0xb0')]['getDataPredictiveOld']=function(_0x320d66){var _0xf5fecd=this;return function(_0x4f0077){return new Promise(function(_0x2a5fc3,_0x24ce34){_[_0xae3d('0x94')](_0x320d66,_0x4f0077[0x0]);if(checkGetDataPredictive(_0x4f0077[0x0])){loggerPredictive[_0xae3d('0x84')](JSON[_0xae3d('0x7e')](_0x4f0077[0x0]));if(_0x320d66[_0xae3d('0x1e4')]===_0xae3d('0x1e5')){return _0xf5fecd[_0xae3d('0xce')](_0x320d66['id'])[_0xae3d('0x47')](function(_0x1a3944){var _0x4b2482=_0x320d66[_0xae3d('0x58')]-_0x1a3944[0x0]['outboundQueuePauses'];var _0x1dda65=_0x320d66[_0xae3d('0x1e2')]*0x3c;var _0xc9d350=_0x4f0077[0x0][_0xae3d('0x70')]+_0x4f0077[0x0][_0xae3d('0x6f')];var _0x2307b7=(_0x4f0077[0x0]['predictiveIntervalAnsweredCalls']+_0x4f0077[0x0][_0xae3d('0x87')]+_0x4f0077[0x0][_0xae3d('0x71')])/_0x4f0077[0x0]['predictiveIntervalTotalCalls'];var _0x4ee8e7=_0x320d66['dialPredictiveOptimizationPercentage']/0x64;_0x320d66[_0xae3d('0x73')]=_0x1a3944[0x0][_0xae3d('0x1f9')]||0x0;_0x320d66[_0xae3d('0x72')]=_0x2307b7>0x0?_0x2307b7:0x1;return _0xf5fecd['abandonmentRate'](_0x4b2482,_0x1dda65,_0xc9d350,_0x2307b7,_0x4ee8e7);})[_0xae3d('0x47')](function(_0x2fce92){return _0x2a5fc3(_0x2fce92);})[_0xae3d('0xb8')](function(_0x143131){return _0x24ce34(msgResponse(_0xae3d('0x1fa'),'Failure',JSON[_0xae3d('0x7e')](_0x143131)));});}if(_0x320d66[_0xae3d('0x1e4')]===_0xae3d('0x1f4')){return _0xf5fecd[_0xae3d('0xce')](_0x320d66['id'])[_0xae3d('0x47')](function(_0x3e973a){var _0x13080f=_0x320d66['loggedIn']-_0x3e973a[0x0][_0xae3d('0x1f9')];var _0x3de2ed=_0x320d66[_0xae3d('0x1e2')]*0x3c;var _0x197836=_0x4f0077[0x0][_0xae3d('0x70')]+_0x4f0077[0x0][_0xae3d('0x6f')];var _0x1de963=(_0x4f0077[0x0][_0xae3d('0x6e')]+_0x4f0077[0x0][_0xae3d('0x87')]+_0x4f0077[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x4f0077[0x0][_0xae3d('0x75')];var _0x3d7583=_0x320d66[_0xae3d('0x1da')]/0x64;_0x320d66[_0xae3d('0x73')]=_0x3e973a[0x0]['outboundQueuePauses']||0x0;_0x320d66[_0xae3d('0x72')]=_0x1de963>0x0?_0x1de963:0x1;return _0xf5fecd['busyFactor'](_0x13080f,_0x3de2ed,_0x197836,_0x1de963,_0x3d7583);})[_0xae3d('0x47')](function(_0x31965b){return _0x2a5fc3(_0x31965b);})[_0xae3d('0xb8')](function(_0x15e0e7){return _0x24ce34(msgResponse(_0xae3d('0x1fa'),_0xae3d('0x146'),JSON[_0xae3d('0x7e')](_0x15e0e7)));});}}else{return _0x24ce34(msgResponse('[getDataPredictive]',_0xae3d('0x146'),'check\x20failure'));}});};};Dialer[_0xae3d('0xb0')][_0xae3d('0x1ec')]=function(_0x311c7b){var _0xdbff77=this;return function(){var _0x488f69=0x0;var _0x7aa993=Math['floor'](_0x311c7b[_0xae3d('0x78')]*0x3e8);if(_0x7aa993>0x0){_0x7aa993=_0x7aa993<0x64?0x64:_0x7aa993;loggerPredictive[_0xae3d('0x84')](_0x311c7b['name'],_0xae3d('0x1fb'),_0x7aa993,_0xae3d('0x52'));_0x311c7b['handlePredictive']=setInterval(function(){_0xdbff77[_0xae3d('0x97')](_0x311c7b);loggerPredictiveCalls[_0xae3d('0x84')](_0xae3d('0x1fc'),_0x488f69+=0x1);},_0x7aa993);}else{loggerPredictive['info'](_0x311c7b[_0xae3d('0x4c')],'fail\x20to\x20scheduled\x20calls');}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x1fd')]=function(_0x965124,_0x38f855){var _0x5a26d8=this;return function(_0x561ad8){if(_['isEmpty'](_0x561ad8)){if(_['isNil'](_0x38f855[_0xae3d('0xdb')])||!_0x38f855['recallme']){if(_0x965124[_0xae3d('0x63')]===_0xae3d('0xa')){_0x965124[_0xae3d('0x131')]=_[_0xae3d('0x8c')](_0x965124[_0xae3d('0x131')])?!![]:_0x965124['queueStatusComplete'];var _0x14cabc=uuid['v4']();_0x5a26d8[_0xae3d('0x2a')][_0x14cabc]=new Action(_0x965124,_0x38f855,_0x14cabc);loggerBooked['info']('[booked][checkContactBlack]',_0x14cabc,_0xae3d('0x1fe'),JSON[_0xae3d('0x7e')](_0x965124[_0xae3d('0x131')]),_0xae3d('0x1ff'),_0x965124[_0xae3d('0x4c')]);if(_0x965124[_0xae3d('0x131')]){_0x965124[_0xae3d('0x131')]=![];_0x5a26d8[_0xae3d('0x30')][_0x5a26d8['actions'][_0x14cabc][_0xae3d('0xbb')]]=[];ami['Action']({'actionid':_0x14cabc,'action':_0xae3d('0x200'),'queue':_0x965124[_0xae3d('0x4c')]})['catch'](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);_0x5a26d8[_0xae3d('0xc6')]({'active':![],'ContactId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xd9')],'ListId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xda')],'VoiceQueueId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdc')]||undefined,'CampaignId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc]['CampaignId']||undefined})[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x201')));delete _0x5a26d8[_0xae3d('0x2a')][_0x14cabc];});}else{loggerBooked[_0xae3d('0x84')](_0xae3d('0x202'),JSON['stringify'](_0x965124[_0xae3d('0x131')]),'Queue:\x20',_0x965124['name']);_0x5a26d8[_0xae3d('0xba')](_0x965124);_0x5a26d8[_0xae3d('0xc6')]({'active':![],'ContactId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xd9')],'ListId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xda')],'VoiceQueueId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdc')]||undefined,'CampaignId':_0x5a26d8[_0xae3d('0x2a')][_0x14cabc][_0xae3d('0xdd')]||undefined})['catch'](loggerCatch(_0xae3d('0x201')));delete _0x5a26d8[_0xae3d('0x2a')][_0x14cabc];}}else{return _0x5a26d8[_0xae3d('0x203')](_0x965124,_0x38f855);}}else{if(getDiff(_0x38f855[_0xae3d('0x204')])<_0x965124[_0xae3d('0x205')]*0x3c){if(_0x38f855[_0xae3d('0x163')]&&!_0x38f855[_0xae3d('0x163')]['voicePause']){_0x5a26d8['preview'][_0xae3d('0x135')](_0x38f855['id'])['finally'](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);});}else{_0x5a26d8[_0xae3d('0xc8')]({'active':![]},_0x38f855['id'],0x1)[_0xae3d('0x22')](function(){_0x5a26d8[_0xae3d('0xba')](_0x965124);});}}else{_0x965124[_0xae3d('0x6b')]+=0x1;_0x5a26d8['updateOriginated'](_0x965124);if(_0x965124[_0xae3d('0x206')]){_0x5a26d8[_0xae3d('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x38f855[_0xae3d('0xd9')],'ListId':_0x38f855[_0xae3d('0xda')],'VoiceQueueId':_0x38f855['VoiceQueueId']||undefined,'CampaignId':_0x38f855[_0xae3d('0xdd')]||undefined})[_0xae3d('0xb8')](loggerCatch('[rescheduleContact][dialRecallInQueue]'));_0x5a26d8[_0xae3d('0xd1')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x207'),0x17,_0xae3d('0x208')))[_0xae3d('0xb8')](loggerCatch(_0xae3d('0x209')));}else{_0x5a26d8[_0xae3d('0xd7')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x20a'),0x16,_0xae3d('0x20b')),_0xae3d('0x20c'),_0xae3d('0x20d'));}}}}else{_0x965124[_0xae3d('0x68')]+=0x1;_0x5a26d8[_0xae3d('0xd7')](createObjHistory(_0x965124,_0x38f855,_0xae3d('0x20e'),0xd,_0xae3d('0x20f')),_0xae3d('0x210'),_0xae3d('0x211'));throw _0xae3d('0x212');}};};Dialer[_0xae3d('0xb0')][_0xae3d('0x213')]=function(_0xad62b2){var _0x486026=this;var _0x46b205=_0xad62b2[_0xae3d('0x214')]-_0xad62b2[_0xae3d('0x76')]-_0xad62b2[_0xae3d('0xcb')];emitCampaignSummary(_0xad62b2);if(_0x46b205>0x0){if(_0x46b205>this[_0xae3d('0x29')]){_0x46b205=this[_0xae3d('0x29')];}_0xad62b2[_0xae3d('0xcb')]+=_0x46b205;this[_0xae3d('0xcc')](_0xad62b2['id'],_0x46b205,_0xad62b2[_0xae3d('0x215')],_0xad62b2)[_0xae3d('0x47')](function(_0x14cfae){_0xad62b2[_0xae3d('0xcb')]-=_0x46b205;_0xad62b2[_0xae3d('0xcb')]=_0xad62b2[_0xae3d('0xcb')]>0x0?_0xad62b2[_0xae3d('0xcb')]:0x0;if(!checkContactEmpty(_0x14cfae)){_0xad62b2[_0xae3d('0x48')]=_0xae3d('0x216');logger[_0xae3d('0x84')]('[getContactCampaign2][Empty]'+_0xad62b2[_0xae3d('0x4c')]);}else{_0xad62b2[_0xae3d('0x76')]+=_0x14cfae['length'];_0xad62b2['message']=_0xae3d('0x217');for(var _0x9612de=0x0;_0x9612de<_0x14cfae[_0xae3d('0xa0')];_0x9612de+=0x1){_0xad62b2[_0xae3d('0x218')]+=0x1;if(_[_0xae3d('0xb5')](_0x14cfae[_0x9612de])||_[_0xae3d('0xb5')](_0x14cfae[_0x9612de]['Contact'])||_[_0xae3d('0xb5')](_0x14cfae[_0x9612de][_0xae3d('0x177')])){_0x486026[_0xae3d('0xd6')](_0xae3d('0x219'),_0xad62b2,_0x14cfae[_0x9612de]);}else{_0x486026[_0xae3d('0x21a')](_[_0xae3d('0xd8')](_0x14cfae[_0x9612de],[_0xae3d('0xdd'),'phone']))[_0xae3d('0x47')](_0x486026['checkContactBlack'](_0xad62b2,_0x14cfae[_0x9612de]))[_0xae3d('0xb8')](_0x486026[_0xae3d('0xd5')](_0xae3d('0x21b'),_0xad62b2));}}}})['catch'](loggerGetContactDialer('[getContactCampaign2]',_0xad62b2,_0x46b205));}};Dialer[_0xae3d('0xb0')][_0xae3d('0x15c')]=function(_0x386f0c,_0x5c2239){var _0x45e9fa=this;var _0x462307=[];var _0x62da87=_0x5c2239>=0x1?_0x5c2239:0x1;if(_0x386f0c[_0xae3d('0x63')]===_0xae3d('0xa')){_0x62da87=0x1;}var _0x2128a6=Math[_0xae3d('0x21c')](_0x386f0c['available']*_0x62da87)-_0x386f0c[_0xae3d('0x76')]-_0x386f0c[_0xae3d('0xcb')];emitVoiceQueueSummary(_0x386f0c);if(_0x386f0c[_0xae3d('0x21d')]>0x0){var _0x14daf7=_0x386f0c[_0xae3d('0x21d')]-_0x386f0c[_0xae3d('0x76')]-_0x386f0c['talking']-_0x386f0c['temp']-_0x386f0c[_0xae3d('0xa7')];if(_0x2128a6>_0x14daf7){_0x2128a6=_0x14daf7;}}if(_0x2128a6>0x0){if(_0x386f0c['dialMethod']===_0xae3d('0xa')){_0x2128a6=0x1;}if(_0x2128a6>this[_0xae3d('0x29')]){_0x2128a6=this[_0xae3d('0x29')];}_0x386f0c['temp']+=_0x2128a6;for(var _0x1300a9 in this[_0xae3d('0x27')]){if(typeof this[_0xae3d('0x27')][_0x1300a9]!==_0xae3d('0xb4')){if(this[_0xae3d('0x27')][_0x1300a9][_0xae3d('0xac')]===_0xae3d('0x21e')&&this[_0xae3d('0x27')][_0x1300a9][_0xae3d('0xe3')]===_0xae3d('0xe4')){_0x462307[_0xae3d('0x12f')](this[_0xae3d('0x27')][_0x1300a9]['id']);}}}this['getContactDialer'](_0x386f0c['id'],_0x462307,_0x2128a6,_0x386f0c[_0xae3d('0x215')],_0x386f0c)['then'](function(_0x4014a2){_0x386f0c[_0xae3d('0xcb')]-=_0x2128a6;_0x386f0c[_0xae3d('0xcb')]=_0x386f0c[_0xae3d('0xcb')]>0x0?_0x386f0c[_0xae3d('0xcb')]:0x0;if(!checkContactEmpty(_0x4014a2)){_0x45e9fa['countReScheduled'](_0x386f0c)['then'](sendMessageReschedule(_0x386f0c))['catch'](loggerCatch(_0xae3d('0xbf')));}else{_0x386f0c[_0xae3d('0x76')]+=_0x4014a2[_0xae3d('0xa0')];_0x386f0c[_0xae3d('0x48')]=_0x386f0c[_0xae3d('0x63')]===_0xae3d('0xa')?'ACTIVE':_0xae3d('0x217');for(var _0x177a0e=0x0;_0x177a0e<_0x4014a2[_0xae3d('0xa0')];_0x177a0e+=0x1){if(_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e])||_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e][_0xae3d('0x18d')])||_[_0xae3d('0xb5')](_0x4014a2[_0x177a0e][_0xae3d('0x177')])){_0x45e9fa[_0xae3d('0xd6')](_0xae3d('0x219'),_0x386f0c,_0x4014a2[_0x177a0e]);}else{_0x45e9fa[_0xae3d('0x21f')](_['pick'](_0x4014a2[_0x177a0e],[_0xae3d('0xdc'),_0xae3d('0x177')]))[_0xae3d('0x47')](_0x45e9fa[_0xae3d('0x1fd')](_0x386f0c,_0x4014a2[_0x177a0e]))[_0xae3d('0xb8')](_0x45e9fa[_0xae3d('0xd5')](_0xae3d('0x219'),_0x386f0c));}}}})['catch'](loggerGetContactDialer(_0xae3d('0x220'),_0x386f0c,_0x2128a6));}};Dialer[_0xae3d('0xb0')]['handlePredictive']=function(_0x5a3fca){if(_0x5a3fca[_0xae3d('0x21d')]>0x0){var _0x5323bc=_0x5a3fca[_0xae3d('0x21d')]-_0x5a3fca[_0xae3d('0x76')]-_0x5a3fca[_0xae3d('0x5c')];if(_0x5323bc>0x0){this[_0xae3d('0x221')](_0x5a3fca);}else{loggerPredictiveCalls[_0xae3d('0x84')](_0xae3d('0x222'));}}else{this[_0xae3d('0x221')](_0x5a3fca);}};Dialer[_0xae3d('0xb0')][_0xae3d('0x221')]=function(_0x5ce55d){var _0x498b73=this;var _0x29f119=[];_0x5ce55d[_0xae3d('0x76')]+=0x1;for(var _0x30e551 in this['agents']){if(typeof this[_0xae3d('0x27')][_0x30e551]!==_0xae3d('0xb4')){if(this['agents'][_0x30e551][_0xae3d('0xac')]===_0xae3d('0x21e')&&this[_0xae3d('0x27')][_0x30e551][_0xae3d('0xe3')]===_0xae3d('0xe4')){_0x29f119[_0xae3d('0x12f')](this['agents'][_0x30e551]['id']);}}}this[_0xae3d('0xca')](_0x5ce55d['id'],_0x29f119,0x1,_0x5ce55d[_0xae3d('0x215')],_0x5ce55d)[_0xae3d('0x47')](function(_0x6ac50e){if(!checkContactEmpty(_0x6ac50e)){checkContactLowerLimitOriginate(_0x5ce55d,0x1,0x0);_0x498b73['countReScheduled'](_0x5ce55d)[_0xae3d('0x47')](sendMessageReschedule(_0x5ce55d))['catch'](loggerCatch('[countReScheduled]\x20'));}else{_0x5ce55d[_0xae3d('0x48')]=_0xae3d('0x217');if(_['isNil'](_0x6ac50e[0x0])||_[_0xae3d('0xb5')](_0x6ac50e[0x0]['Contact'])||_[_0xae3d('0xb5')](_0x6ac50e[0x0][_0xae3d('0x177')])){_0x498b73[_0xae3d('0xd6')]('[actionOriginate]\x20',_0x5ce55d,_0x6ac50e[0x0]);}else{_0x498b73[_0xae3d('0x21f')](_[_0xae3d('0xd8')](_0x6ac50e[0x0],[_0xae3d('0xdc'),'phone']))['then'](_0x498b73[_0xae3d('0x1fd')](_0x5ce55d,_0x6ac50e[0x0]))[_0xae3d('0xb8')](_0x498b73[_0xae3d('0xd5')](_0xae3d('0x223'),_0x5ce55d));}}})[_0xae3d('0xb8')](loggerGetContactDialer(_0xae3d('0x224'),_0x5ce55d,0x1));emitVoiceQueueSummary(_0x5ce55d);};Dialer[_0xae3d('0xb0')][_0xae3d('0x1f3')]=function(_0x386006,_0x29af88,_0x3ebcbb,_0x3a12fc,_0x1c98f4,_0x384477){loggerPredictive['info'](_0xae3d('0x225'));loggerPredictive[_0xae3d('0x84')](_0xae3d('0x226'),_0x386006);loggerPredictive[_0xae3d('0x84')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29af88);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x227'),_0x3ebcbb);loggerPredictive[_0xae3d('0x84')]('P:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x3a12fc);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x228'),_0x1c98f4);loggerPredictive['info'](_0xae3d('0x93'));return new Promise(function(_0x46b4c6,_0x4f8669){if(_0x386006<=0x0||isNaN(_0x386006)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'m\x20=\x20'+_0x386006));}if(_0x3ebcbb<=0x0||isNaN(_0x3ebcbb)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'Ts\x20=\x20'+_0x3ebcbb));}if(_0x3a12fc<=0x0||isNaN(_0x3a12fc)){return _0x4f8669(msgResponse(_0xae3d('0x229'),_0xae3d('0x1a5'),'p\x20=\x20'+_0x3a12fc));}if(_0x29af88<=0x0||isNaN(_0x29af88)){return _0x4f8669(msgResponse('[abandonmentRate]',_0xae3d('0x1a5'),'interval\x20=\x20'+_0x29af88));}if(_0x1c98f4<=0x0||isNaN(_0x1c98f4)){return _0x4f8669(msgResponse(_0xae3d('0x229'),_0xae3d('0x1a5'),'Amax\x20=\x20'+_0x1c98f4));}_0x384477=_0x384477||0x0;var _0x410743=0x1/_0x3ebcbb;var _0x76d9ae=0x0;var _0x322e29=0x0;var _0x50f9f1=0x0;var _0x2d65de=0x0;for(var _0x12d20b=0x0;_0x50f9f1<_0x1c98f4;_0x12d20b+=0x1){_0x322e29=_0x12d20b/_0x29af88;_0x76d9ae=(_0x3a12fc*_0x322e29+_0x384477)/_0x410743;_0x50f9f1=erlangb(_0x76d9ae,_0x386006);_0x2d65de=_0x76d9ae/_0x386006*(0x1-erlangb(_0x76d9ae,_0x386006));}return _0x46b4c6({'erlangCalls':_0x12d20b,'erlangCallToSecond':_0x29af88/_0x12d20b,'erlangAbandonmentRate':_0x50f9f1,'erlangBusyFactor':_0x2d65de});});};Dialer[_0xae3d('0xb0')]['busyFactor']=function(_0x345cec,_0x5857a9,_0x36ab54,_0x240137,_0x29c59a,_0x392397){loggerPredictive[_0xae3d('0x84')](_0xae3d('0x22a'));loggerPredictive[_0xae3d('0x84')](_0xae3d('0x226'),_0x345cec);loggerPredictive['info']('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5857a9);loggerPredictive[_0xae3d('0x84')]('Ts:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x36ab54);loggerPredictive[_0xae3d('0x84')](_0xae3d('0x22b'),_0x240137);loggerPredictive[_0xae3d('0x84')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x29c59a);loggerPredictive[_0xae3d('0x84')]('---------------------------');return new Promise(function(_0x44c1c2,_0x52b04a){if(_0x345cec<=0x0||isNaN(_0x345cec)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x22d')+_0x345cec));}if(_0x36ab54<=0x0||isNaN(_0x36ab54)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x22e')+_0x36ab54));}if(_0x240137<=0x0||isNaN(_0x240137)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),'p\x20=\x20'+_0x240137));}if(_0x5857a9<=0x0||isNaN(_0x5857a9)){return _0x52b04a(msgResponse('[busyFactor]','Error',_0xae3d('0x22f')+_0x5857a9));}if(_0x29c59a<=0x0||isNaN(_0x29c59a)){return _0x52b04a(msgResponse(_0xae3d('0x22c'),_0xae3d('0x1a5'),_0xae3d('0x230')+_0x29c59a));}_0x392397=_0x392397||0x0;var _0x56236e=0x1/_0x36ab54;var _0x28f694=0x0;var _0x4faf13=0x0;var _0x4dea3b=0x0;var _0x3e8262=0x0;for(var _0x2dc7ee=0x0;_0x3e8262<_0x29c59a;_0x2dc7ee+=0x1){_0x4faf13=_0x2dc7ee/_0x5857a9;_0x28f694=(_0x240137*_0x4faf13+_0x392397)/_0x56236e;_0x4dea3b=erlangb(_0x28f694,_0x345cec);_0x3e8262=_0x28f694/_0x345cec*(0x1-erlangb(_0x28f694,_0x345cec));}return _0x44c1c2({'erlangCalls':_0x2dc7ee,'erlangCallToSecond':_0x5857a9/_0x2dc7ee,'erlangAbandonmentRate':_0x4dea3b,'erlangBusyFactor':_0x3e8262});});};module[_0xae3d('0x231')]=Dialer;
\ No newline at end of file
index cccb657..461feb6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3235=['VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','diff','scheduledat','type','outbound','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','uniqueid','name','calleridnum','starttime','responsetime','droptime','endtime','holdtime','talktime','queue','membername','connectedlinename','reason','callback','callbackat','recallme','ContactId','ListId','UserId'];(function(_0x348652,_0x1ab849){var _0x18a9ea=function(_0x3fd540){while(--_0x3fd540){_0x348652['push'](_0x348652['shift']());}};_0x18a9ea(++_0x1ab849);}(_0x3235,0x144));var _0x5323=function(_0x5beb22,_0x12bb02){_0x5beb22=_0x5beb22-0x0;var _0x57f9de=_0x3235[_0x5beb22];return _0x57f9de;};'use strict';var util=require(_0x5323('0x0'));var _=require(_0x5323('0x1'));var moment=require(_0x5323('0x2'));function getSeconds(_0xe84794,_0x5e7fb5){var _0x379c95=moment(_0xe84794)['milliseconds'](0x0);var _0x1ed510=moment(_0x5e7fb5)[_0x5323('0x3')](0x0);return _0x379c95[_0x5323('0x4')](_0x1ed510,'seconds');}function QueueCallerAbandon(_0x152a25,_0x1904df){this['scheduledat']=_0x152a25[_0x5323('0x5')];this[_0x5323('0x6')]=_0x152a25['type'];this['campaigntype']=_0x152a25[_0x5323('0x6')]===_0x5323('0x7')?'queue':_0x152a25[_0x5323('0x6')];this['countbusyretry']=_0x152a25[_0x5323('0x8')];this['countcongestionretry']=_0x152a25[_0x5323('0x9')];this['countnoanswerretry']=_0x152a25[_0x5323('0xa')];this[_0x5323('0xb')]=_0x152a25[_0x5323('0x8')]+_0x152a25[_0x5323('0x9')]+_0x152a25[_0x5323('0xa')]+_0x152a25[_0x5323('0xc')]+_0x152a25[_0x5323('0xd')]+_0x152a25['countabandonedretry']+_0x152a25[_0x5323('0xe')]+_0x152a25['countagentrejectretry'];this[_0x5323('0xc')]=_0x152a25['countnosuchnumberretry'];this['countdropretry']=_0x152a25[_0x5323('0xd')];this[_0x5323('0xf')]=_0x152a25['countabandonedretry'];this['countmachineretry']=_0x152a25[_0x5323('0xe')];this[_0x5323('0x10')]=_0x152a25[_0x5323('0x10')];this['uniqueid']=_0x1904df[_0x5323('0x11')];this['calleridname']=_0x152a25[_0x5323('0x12')];this[_0x5323('0x13')]=_0x152a25['number'];this[_0x5323('0x14')]=_0x152a25[_0x5323('0x14')];this[_0x5323('0x15')]=_0x152a25[_0x5323('0x15')];this[_0x5323('0x16')]=_0x152a25['droptime'];this[_0x5323('0x17')]=this['droptime'];this['ringtime']=getSeconds(_0x152a25[_0x5323('0x15')],_0x152a25['starttime']);this[_0x5323('0x18')]=getSeconds(this[_0x5323('0x16')],_0x152a25['responsetime']);this[_0x5323('0x19')]=0x0;this[_0x5323('0x1a')]=_0x1904df[_0x5323('0x1a')];this[_0x5323('0x1b')]=_0x1904df[_0x5323('0x1c')];this[_0x5323('0x1d')]=_0x1904df[_0x5323('0x1d')];this[_0x5323('0x1e')]=_0x152a25['callback'];this['callbackuniqueid']=_0x152a25['callbackuniqueid'];this[_0x5323('0x1f')]=_0x152a25[_0x5323('0x1f')];this[_0x5323('0x20')]=_0x152a25['recallme'];this[_0x5323('0x21')]=_0x152a25[_0x5323('0x21')];this['ListId']=_0x152a25[_0x5323('0x22')];this['UserId']=_0x152a25[_0x5323('0x23')];this[_0x5323('0x24')]=_0x152a25[_0x5323('0x24')];this[_0x5323('0x25')]=_0x152a25[_0x5323('0x25')];this[_0x5323('0x26')]=_0x152a25[_0x5323('0x26')]||'';this[_0x5323('0x27')]=_0x152a25[_0x5323('0x27')]||'';}module['exports']=QueueCallerAbandon;
\ No newline at end of file
+var _0x7299=['lodash','milliseconds','diff','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','ringtime','connectedlinename','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util'];(function(_0xe59621,_0x5c3bfd){var _0x2a443e=function(_0x59bd9f){while(--_0x59bd9f){_0xe59621['push'](_0xe59621['shift']());}};_0x2a443e(++_0x5c3bfd);}(_0x7299,0x1ac));var _0x9729=function(_0x1e71b7,_0x74a443){_0x1e71b7=_0x1e71b7-0x0;var _0x42c3a0=_0x7299[_0x1e71b7];return _0x42c3a0;};'use strict';var util=require(_0x9729('0x0'));var _=require(_0x9729('0x1'));var moment=require('moment');function getSeconds(_0x1001a3,_0x122d54){var _0x5dad07=moment(_0x1001a3)[_0x9729('0x2')](0x0);var _0x351b4a=moment(_0x122d54)[_0x9729('0x2')](0x0);return _0x5dad07[_0x9729('0x3')](_0x351b4a,'seconds');}function QueueCallerAbandon(_0x23aa82,_0x486c5d){this[_0x9729('0x4')]=_0x23aa82['scheduledat'];this[_0x9729('0x5')]=_0x23aa82[_0x9729('0x5')];this['campaigntype']=_0x23aa82[_0x9729('0x5')]===_0x9729('0x6')?_0x9729('0x7'):_0x23aa82[_0x9729('0x5')];this[_0x9729('0x8')]=_0x23aa82['countbusyretry'];this[_0x9729('0x9')]=_0x23aa82[_0x9729('0x9')];this['countnoanswerretry']=_0x23aa82[_0x9729('0xa')];this[_0x9729('0xb')]=_0x23aa82[_0x9729('0x8')]+_0x23aa82[_0x9729('0x9')]+_0x23aa82['countnoanswerretry']+_0x23aa82[_0x9729('0xc')]+_0x23aa82[_0x9729('0xd')]+_0x23aa82[_0x9729('0xe')]+_0x23aa82[_0x9729('0xf')]+_0x23aa82['countagentrejectretry'];this[_0x9729('0xc')]=_0x23aa82['countnosuchnumberretry'];this[_0x9729('0xd')]=_0x23aa82[_0x9729('0xd')];this[_0x9729('0xe')]=_0x23aa82[_0x9729('0xe')];this[_0x9729('0xf')]=_0x23aa82[_0x9729('0xf')];this[_0x9729('0x10')]=_0x23aa82[_0x9729('0x10')];this[_0x9729('0x11')]=_0x486c5d['uniqueid'];this[_0x9729('0x12')]=_0x23aa82[_0x9729('0x13')];this['calleridnum']=_0x23aa82[_0x9729('0x14')];this[_0x9729('0x15')]=_0x23aa82['starttime'];this[_0x9729('0x16')]=_0x23aa82[_0x9729('0x16')];this[_0x9729('0x17')]=_0x23aa82[_0x9729('0x17')];this['endtime']=this['droptime'];this[_0x9729('0x18')]=getSeconds(_0x23aa82[_0x9729('0x16')],_0x23aa82[_0x9729('0x15')]);this['holdtime']=getSeconds(this['droptime'],_0x23aa82[_0x9729('0x16')]);this['talktime']=0x0;this['queue']=_0x486c5d['queue'];this['membername']=_0x486c5d[_0x9729('0x19')];this[_0x9729('0x1a')]=_0x486c5d[_0x9729('0x1a')];this[_0x9729('0x1b')]=_0x23aa82[_0x9729('0x1b')];this['callbackuniqueid']=_0x23aa82[_0x9729('0x1c')];this['callbackat']=_0x23aa82[_0x9729('0x1d')];this[_0x9729('0x1e')]=_0x23aa82[_0x9729('0x1e')];this[_0x9729('0x1f')]=_0x23aa82[_0x9729('0x1f')];this[_0x9729('0x20')]=_0x23aa82[_0x9729('0x20')];this[_0x9729('0x21')]=_0x23aa82[_0x9729('0x21')];this[_0x9729('0x22')]=_0x23aa82[_0x9729('0x22')];this[_0x9729('0x23')]=_0x23aa82[_0x9729('0x23')];this[_0x9729('0x24')]=_0x23aa82[_0x9729('0x24')]||'';this['originatecalleridname']=_0x23aa82[_0x9729('0x25')]||'';}module[_0x9729('0x26')]=QueueCallerAbandon;
\ No newline at end of file
index 09e2485..9a4d259 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x214a8c,_0x49ab17){var _0x156a2c=function(_0x51265e){while(--_0x51265e){_0x214a8c['push'](_0x214a8c['shift']());}};_0x156a2c(++_0x49ab17);}(_0xa9e0,0x123));var _0x0a9e=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0xa9e0[_0x373dee];return _0x46798f;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
+var _0xa9e0=['fax','localstationid','path','AttachmentId','exports','util','lodash','moment','channel','format','%s/%s/%s','tech','Trunk'];(function(_0x3f5843,_0x591edd){var _0x3b7314=function(_0x2521e0){while(--_0x2521e0){_0x3f5843['push'](_0x3f5843['shift']());}};_0x3b7314(++_0x591edd);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0xa9e0[_0x1ac595];return _0x455fff;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));function Action(_0x5dd881,_0x550fbc,_0x18d5c9){this['uniqueid']=_0x5dd881||undefined;this[_0x0a9e('0x3')]=util[_0x0a9e('0x4')](_0x0a9e('0x5'),_0x550fbc[_0x0a9e('0x6')],_0x550fbc[_0x0a9e('0x7')]['name'],_0x18d5c9[_0x0a9e('0x8')]);this[_0x0a9e('0x9')]=_0x550fbc[_0x0a9e('0x9')];this['headerinfo']=_0x550fbc['headerinfo'];this[_0x0a9e('0xa')]=_0x18d5c9['path'];this['AttachmentId']=_0x18d5c9[_0x0a9e('0xb')];}module[_0x0a9e('0xc')]=Action;
\ No newline at end of file
index 38535c2..37d5c22 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c5=['prototype','hasOwnProperty','operation','status','localstationid','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','calleridnum','\x20result\x20conversion\x20file\x20','create','parse','application/pdf','then','notify','.pdf','catch','error','stringify','\x20receiveFax\x20','actions','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate2]','updateStatus','[Fax][Message][Updated]','[Fax][Message][NoUpdate1]','finally','[Fax][Message][NoUpdate2]','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','send','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','Trunk','isValid','Trunk\x20Reachable','format','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','path','execute','%s/%s.tif','dir','Action','variablesAction','execOriginate','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','unmonitored','checkTrunk','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','util','lodash','bluebird','uuid','moment','tiff2pdf','./util/gs','../../../config/logger','fax','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','syncFaxStatus','syncHangup','syncOriginateResponse','from-voip-provider','exten','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc'];(function(_0x476c51,_0x34bba5){var _0x402a45=function(_0x30b2ff){while(--_0x30b2ff){_0x476c51['push'](_0x476c51['shift']());}};_0x402a45(++_0x34bba5);}(_0xf1c5,0x1a4));var _0x5f1c=function(_0x583e65,_0x414aeb){_0x583e65=_0x583e65-0x0;var _0x5ab194=_0xf1c5[_0x583e65];return _0x5ab194;};'use strict';var util=require(_0x5f1c('0x0'));var _=require(_0x5f1c('0x1'));var BPromise=require(_0x5f1c('0x2'));var uuid=require(_0x5f1c('0x3'));var moment=require(_0x5f1c('0x4'));var path=require('path');var tiff2pdf=require(_0x5f1c('0x5'));var gs=require(_0x5f1c('0x6'));var logger=require(_0x5f1c('0x7'))(_0x5f1c('0x8'));var ami=require('../ami');var rpcDb=require(_0x5f1c('0x9'));var Channel=require(_0x5f1c('0xa'));var ut=require(_0x5f1c('0xb'));var Action=require('./action');var faxAccount=require(_0x5f1c('0xc'));var attachment=require(_0x5f1c('0xd'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x5499b0){this[_0x5f1c('0xe')]={};this[_0x5f1c('0xf')]=_0x5499b0[_0x5f1c('0xf')];this[_0x5f1c('0x10')]=_0x5499b0[_0x5f1c('0x10')];this['actions']={};ami['on']('newchannel',this[_0x5f1c('0x11')][_0x5f1c('0x12')](this));ami['on'](_0x5f1c('0x13'),this[_0x5f1c('0x14')][_0x5f1c('0x12')](this));ami['on'](_0x5f1c('0x15'),this[_0x5f1c('0x16')][_0x5f1c('0x12')](this));ami['on'](_0x5f1c('0x17'),this[_0x5f1c('0x18')][_0x5f1c('0x12')](this));ami['on'](_0x5f1c('0x19'),this[_0x5f1c('0x1a')][_0x5f1c('0x12')](this));ami['on']('receivefax',this['syncReceiveFax'][_0x5f1c('0x12')](this));ami['on']('hangup',this[_0x5f1c('0x1b')]['bind'](this));ami['on']('originateresponse',this[_0x5f1c('0x1c')][_0x5f1c('0x12')](this));}Fax['prototype'][_0x5f1c('0x11')]=function(_0x3dd0a2){if(_0x3dd0a2['context']===_0x5f1c('0x1d')){for(var _0x564367 in this[_0x5f1c('0xf')]){if(this[_0x5f1c('0xf')]['hasOwnProperty'](_0x564367)){if(_0x3dd0a2[_0x5f1c('0x1e')]===this['faxAccounts'][_0x564367]['localstationid']){this[_0x5f1c('0xe')][_0x3dd0a2[_0x5f1c('0x1f')]]={};this[_0x5f1c('0xe')][_0x3dd0a2['uniqueid']][_0x5f1c('0x20')]=_0x3dd0a2['channel'];this[_0x5f1c('0xe')][_0x3dd0a2[_0x5f1c('0x1f')]]['id']=this[_0x5f1c('0xf')][_0x564367]['id'];this[_0x5f1c('0xe')][_0x3dd0a2['uniqueid']][_0x5f1c('0x21')]=this[_0x5f1c('0xf')][_0x564367][_0x5f1c('0x21')];logger[_0x5f1c('0x22')](_0x3dd0a2[_0x5f1c('0x1f')],_0x5f1c('0x23'));}}}}if(this['actions'][_0x3dd0a2[_0x5f1c('0x1f')]]){this[_0x5f1c('0xe')][_0x3dd0a2[_0x5f1c('0x1f')]]={};this['channels'][_0x3dd0a2[_0x5f1c('0x1f')]][_0x5f1c('0x20')]=_0x3dd0a2[_0x5f1c('0x20')];logger['info'](_0x3dd0a2[_0x5f1c('0x1f')],_0x5f1c('0x23'));}};Fax['prototype'][_0x5f1c('0x14')]=function(_0x25c1e7){if(this[_0x5f1c('0xe')][_0x25c1e7[_0x5f1c('0x1f')]]){for(var _0x444ea0 in _0x25c1e7[_0x5f1c('0x24')]){if(_0x25c1e7[_0x5f1c('0x24')]['hasOwnProperty'](_0x444ea0)){this[_0x5f1c('0xe')][_0x25c1e7[_0x5f1c('0x1f')]][_0x444ea0]=_0x25c1e7[_0x5f1c('0x25')];}}}};Fax['prototype'][_0x5f1c('0x16')]=function(_0x28f8d1){if(this['channels'][_0x28f8d1[_0x5f1c('0x1f')]]){this['channels'][_0x28f8d1[_0x5f1c('0x1f')]][_0x5f1c('0x26')]=_0x28f8d1['channelstate'];this[_0x5f1c('0xe')][_0x28f8d1[_0x5f1c('0x1f')]][_0x5f1c('0x27')]=_0x28f8d1[_0x5f1c('0x27')];}};Fax[_0x5f1c('0x28')][_0x5f1c('0x18')]=function(_0x55fd82){if(this[_0x5f1c('0xe')][_0x55fd82['uniqueid']]){for(var _0x5aa980 in _0x55fd82['variable']){if(_0x55fd82[_0x5f1c('0x24')][_0x5f1c('0x29')](_0x5aa980)){this[_0x5f1c('0xe')][_0x55fd82[_0x5f1c('0x1f')]][_0x5aa980]=_0x55fd82[_0x5f1c('0x25')];}}}};Fax[_0x5f1c('0x28')][_0x5f1c('0x1a')]=function(_0x1dd8a5){if(this[_0x5f1c('0xe')][_0x1dd8a5['uniqueid']]){this[_0x5f1c('0xe')][_0x1dd8a5[_0x5f1c('0x1f')]][_0x5f1c('0x2a')]=_0x1dd8a5[_0x5f1c('0x2a')];this[_0x5f1c('0xe')][_0x1dd8a5[_0x5f1c('0x1f')]][_0x5f1c('0x2b')]=_0x1dd8a5['status'];this[_0x5f1c('0xe')][_0x1dd8a5['uniqueid']][_0x5f1c('0x2c')]=_0x1dd8a5[_0x5f1c('0x2c')];this[_0x5f1c('0xe')][_0x1dd8a5[_0x5f1c('0x1f')]]['filename']=_0x1dd8a5[_0x5f1c('0x2d')];logger[_0x5f1c('0x22')](_0x1dd8a5[_0x5f1c('0x1f')],_0x5f1c('0x2e'));}};Fax['prototype'][_0x5f1c('0x2f')]=function(_0x133068){var _0x3ecaba=this;if(this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]]){var _0xdbfad9=this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]]['id'];this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]]['remotestationid']=_0x133068[_0x5f1c('0x30')];this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]][_0x5f1c('0x31')]=_0x133068[_0x5f1c('0x31')];this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]][_0x5f1c('0x2c')]=_0x133068[_0x5f1c('0x2c')];this['channels'][_0x133068[_0x5f1c('0x1f')]][_0x5f1c('0x32')]=_0x133068[_0x5f1c('0x32')];this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]]['transferrate']=_0x133068['transferrate'];this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]]['filename']=_0x133068[_0x5f1c('0x2d')];this['channels'][_0x133068[_0x5f1c('0x1f')]][_0x5f1c('0x33')]=_0x133068[_0x5f1c('0x33')];if(this[_0x5f1c('0xe')][_0x133068[_0x5f1c('0x1f')]][_0x5f1c('0x31')]>0x0){tiff2pdf(_0x133068[_0x5f1c('0x2d')],'/var/opt/motion2/server/files/attachments/',function(_0x1a8c23){logger[_0x5f1c('0x22')](_0x133068[_0x5f1c('0x1f')],_0x5f1c('0x34'),_0x1a8c23['message']);attachment[_0x5f1c('0x35')]({'name':path[_0x5f1c('0x36')](_0x133068[_0x5f1c('0x2d')])['name'],'basename':path[_0x5f1c('0x36')](_0x133068[_0x5f1c('0x2d')])[_0x5f1c('0x21')]+'.pdf','type':_0x5f1c('0x37')})[_0x5f1c('0x38')](function(_0x1326e1){faxAccount[_0x5f1c('0x39')](_0xdbfad9,{'from':_0x133068[_0x5f1c('0x33')],'mapKey':_0x5f1c('0x8'),'body':path['parse'](_0x133068[_0x5f1c('0x2d')])[_0x5f1c('0x21')]+_0x5f1c('0x3a'),'AttachmentId':_0x1326e1['id']})[_0x5f1c('0x3b')](function(_0x54ad80){logger[_0x5f1c('0x3c')](_0x133068[_0x5f1c('0x1f')],'\x20notify\x20',JSON['stringify'](_0x54ad80));});})[_0x5f1c('0x3b')](function(_0x5dfa71){logger[_0x5f1c('0x3c')](_0x133068[_0x5f1c('0x1f')],'\x20receiveFax\x20',JSON[_0x5f1c('0x3d')](_0x5dfa71));});});}logger['info'](_0x133068[_0x5f1c('0x1f')],_0x5f1c('0x3e'));}};Fax[_0x5f1c('0x28')][_0x5f1c('0x1c')]=function(_0x4672d1){if(this[_0x5f1c('0x3f')][_0x4672d1[_0x5f1c('0x1f')]]){_['merge'](this[_0x5f1c('0xe')][_0x4672d1[_0x5f1c('0x1f')]],_[_0x5f1c('0x40')](_0x4672d1,['response',_0x5f1c('0x41')]));}};function updateStatus(_0x17ed4b){if(_0x17ed4b[_0x5f1c('0x42')]){faxMessage[_0x5f1c('0x43')](_0x17ed4b[_0x5f1c('0x42')],{'failMessage':_0x5f1c('0x44')})[_0x5f1c('0x38')](function(_0x5eea53){ut[_0x5f1c('0x45')](_0x5f1c('0x46'),_0x5eea53);})[_0x5f1c('0x3b')](function(_0x5e555c){ut[_0x5f1c('0x45')]('[Fax][Message][Error][NoUpdate1]',_0x5e555c);});}else{ut[_0x5f1c('0x45')](_0x5f1c('0x47'));}}Fax[_0x5f1c('0x28')][_0x5f1c('0x48')]=function(_0x1a4fe7,_0x419b60,_0x186fb3){var _0x1408cd=this;var _0x4414a9={};if(_0x419b60){_0x4414a9={'read':_0x419b60};}else{_0x4414a9={'failMessage':_0x186fb3};}if(this[_0x5f1c('0x3f')][_0x1a4fe7][_0x5f1c('0x42')]){faxMessage[_0x5f1c('0x43')](this[_0x5f1c('0x3f')][_0x1a4fe7]['AttachmentId'],_0x4414a9)[_0x5f1c('0x38')](function(_0x4644ed){ut[_0x5f1c('0x45')](_0x5f1c('0x49'),_0x4644ed);})[_0x5f1c('0x3b')](function(_0x3c1305){ut['logger'](_0x5f1c('0x4a'),_0x3c1305);})[_0x5f1c('0x4b')](function(){delete _0x1408cd[_0x5f1c('0xe')][_0x1a4fe7];delete _0x1408cd['actions'][_0x1a4fe7];});}else{ut[_0x5f1c('0x45')](_0x5f1c('0x4c'));delete this[_0x5f1c('0xe')][_0x1a4fe7];delete this[_0x5f1c('0x3f')][_0x1a4fe7];}};Fax[_0x5f1c('0x28')][_0x5f1c('0x1b')]=function(_0x5e2460){var _0x41e057=this;if(this[_0x5f1c('0xe')][_0x5e2460['uniqueid']]){if(this[_0x5f1c('0x3f')][_0x5e2460['uniqueid']]){this[_0x5f1c('0xe')][_0x5e2460[_0x5f1c('0x1f')]]['id']=this[_0x5f1c('0x3f')][_0x5e2460[_0x5f1c('0x1f')]]['id'];this[_0x5f1c('0xe')][_0x5e2460[_0x5f1c('0x1f')]]['name']=this[_0x5f1c('0x3f')][_0x5e2460[_0x5f1c('0x1f')]][_0x5f1c('0x21')];}logger['info'](_0x5e2460[_0x5f1c('0x1f')],this['actions'][_0x5e2460[_0x5f1c('0x1f')]]?_0x5f1c('0x4d'):_0x5f1c('0x4e'),JSON[_0x5f1c('0x3d')](this['channels'][_0x5e2460[_0x5f1c('0x1f')]]));if(this['actions'][_0x5e2460[_0x5f1c('0x1f')]]){if(this[_0x5f1c('0xe')][_0x5e2460[_0x5f1c('0x1f')]]['faxpages']>0x0&&this['channels'][_0x5e2460[_0x5f1c('0x1f')]][_0x5f1c('0x19')]===_0x5f1c('0x4f')){this[_0x5f1c('0x48')](_0x5e2460[_0x5f1c('0x1f')],!![]);}else{this['updateStatus'](_0x5e2460[_0x5f1c('0x1f')],![],this[_0x5f1c('0xe')][_0x5e2460['uniqueid']]['faxstatusstring']?_0x5f1c('0x50')+this['channels'][_0x5e2460['uniqueid']][_0x5f1c('0x51')]:'SENDING\x20FAILED');}}}};Fax['prototype'][_0x5f1c('0x52')]=function(_0x130e0d){var _0x237381=this;return new BPromise(function(_0x5ed79a,_0x1c75ef){_0x237381['execOriginate'](_0x130e0d,_0x237381[_0x5f1c('0xf')][_0x130e0d[_0x5f1c('0x53')]])[_0x5f1c('0x38')](function(_0x4955db){ut[_0x5f1c('0x45')](_0x5f1c('0x54'),_0x4955db);_0x5ed79a(ut[_0x5f1c('0x55')](_0x5f1c('0x56')));})[_0x5f1c('0x3b')](function(_0x21ac76){ut[_0x5f1c('0x45')](_0x5f1c('0x57'),_0x21ac76);updateStatus(_0x130e0d);_0x1c75ef(ut['message'](_0x5f1c('0x58')));});});};Fax[_0x5f1c('0x28')][_0x5f1c('0x59')]=function(_0x5446ad){var _0x24e3d6=this;return new BPromise(function(_0x4b3149,_0x59be14){var _0xbb5402=_0x24e3d6['checkTrunk'](_0x24e3d6[_0x5f1c('0xf')][_0x5446ad['FaxAccountId']][_0x5f1c('0x5a')],_0x5446ad);if(_0xbb5402[_0x5f1c('0x5b')]){_0x4b3149(ut['message'](_0x5f1c('0x5c')));}else{_0x59be14(ut['message'](_0xbb5402['message']));}});};function originate(_0x14eee1,_0x106ddd,_0x353af3){return new BPromise(function(_0x315379,_0x23ce84){if(_0x353af3){var _0xf926c0=util[_0x5f1c('0x5d')](_0x5f1c('0x5e'),path[_0x5f1c('0x36')](_0x14eee1[_0x5f1c('0x5f')])[_0x5f1c('0x21')],_0x14eee1[_0x5f1c('0x5f')]);gs[_0x5f1c('0x60')](_0xf926c0)[_0x5f1c('0x38')](function(){_0x14eee1[_0x5f1c('0x5f')]=util[_0x5f1c('0x5d')](_0x5f1c('0x61'),path[_0x5f1c('0x36')](_0x14eee1[_0x5f1c('0x5f')])[_0x5f1c('0x62')],path[_0x5f1c('0x36')](_0x14eee1[_0x5f1c('0x5f')])['name']);_0x106ddd['XMF-PATH']=_0x14eee1['path'];ut['logger']('Convert\x20pdf\x20to\x20tif','');ami[_0x5f1c('0x63')](ut[_0x5f1c('0x64')](_0x14eee1,_0x106ddd))[_0x5f1c('0x38')](function(_0x4765c3){_0x315379(_0x4765c3);})[_0x5f1c('0x3b')](function(_0x1ab134){_0x23ce84(_0x1ab134);});})[_0x5f1c('0x3b')](function(_0x4b53e6){_0x23ce84(_0x4b53e6);});}else{ami['Action'](ut[_0x5f1c('0x64')](_0x14eee1,_0x106ddd))[_0x5f1c('0x38')](function(_0x48104e){_0x315379(_0x48104e);})[_0x5f1c('0x3b')](function(_0x58176d){_0x23ce84(_0x58176d);});}});}Fax[_0x5f1c('0x28')][_0x5f1c('0x65')]=function(_0x4577a6,_0x41719c){var _0x4ab2b8=this;return new BPromise(function(_0xde0f6e,_0x1be9c6){var _0x570aa3=uuid['v4']();var _0x1d2538=ut[_0x5f1c('0x66')](_0x4577a6,_0x41719c);_0x4ab2b8[_0x5f1c('0x3f')][_0x570aa3]=new Action(_0x570aa3,_0x41719c,_0x4577a6);var _0xcecf5d=_0x4ab2b8[_0x5f1c('0x3f')][_0x570aa3];if(path[_0x5f1c('0x36')](_0x4577a6[_0x5f1c('0x5f')])[_0x5f1c('0x67')]==='.pdf'){originate(_0xcecf5d,_0x1d2538,!![])[_0x5f1c('0x38')](function(_0x51cd1a){_0xde0f6e(_0x51cd1a);})[_0x5f1c('0x3b')](function(_0x199a9e){_0x1be9c6(_0x199a9e);});}else{originate(_0xcecf5d,_0x1d2538,![])[_0x5f1c('0x38')](function(_0x4d6c27){_0xde0f6e(_0x4d6c27);})['catch'](function(_0x589624){_0x1be9c6(_0x589624);});}});};Fax[_0x5f1c('0x28')][_0x5f1c('0x68')]=function(_0x328b84){return!_[_0x5f1c('0x69')](_0x328b84)&&!_[_0x5f1c('0x69')](_0x328b84[_0x5f1c('0x21')])&&!_['isNil'](_0x328b84[_0x5f1c('0x6a')])&&_0x328b84[_0x5f1c('0x6a')]&&!_['isNil'](this[_0x5f1c('0x10')][util[_0x5f1c('0x5d')](_0x5f1c('0x6b'),_0x328b84[_0x5f1c('0x21')])])&&!_[_0x5f1c('0x69')](this['trunks'][util[_0x5f1c('0x5d')](_0x5f1c('0x6b'),_0x328b84[_0x5f1c('0x21')])][_0x5f1c('0x2b')])&&(this[_0x5f1c('0x10')][util[_0x5f1c('0x5d')](_0x5f1c('0x6b'),_0x328b84[_0x5f1c('0x21')])]['status']===_0x5f1c('0x6c')||this[_0x5f1c('0x10')][util[_0x5f1c('0x5d')](_0x5f1c('0x6b'),_0x328b84[_0x5f1c('0x21')])][_0x5f1c('0x2b')]===_0x5f1c('0x6d'));};Fax[_0x5f1c('0x28')][_0x5f1c('0x6e')]=function(_0x4cbcaf,_0x76867e){if(!this[_0x5f1c('0x68')](_0x4cbcaf)){ut['logger']('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_[_0x5f1c('0x69')](_0x4cbcaf)?'':_0x4cbcaf[_0x5f1c('0x21')]+_0x5f1c('0x6f'));return{'isValid':![],'message':_0x5f1c('0x70')};}if(_[_0x5f1c('0x69')](_0x76867e['fax'])){ut[_0x5f1c('0x45')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x5f1c('0x3d')](_0x76867e));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x5f1c('0x69')](_0x76867e[_0x5f1c('0x5f')])){ut[_0x5f1c('0x45')](_0x5f1c('0x71'),JSON[_0x5f1c('0x3d')](_0x76867e));return{'isValid':![],'message':_0x5f1c('0x72')};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
+var _0x1a58=['filename','info','syncReceiveFax','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','notify','catch','error','\x20notify\x20','\x20receiveFax\x20','stringify','syncOriginateResponse','merge','response','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','[Fax][Message][Updated]','finally','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','faxpages','SUCCESS','updateStatus','faxstatusstring','SENDING\x20FAILED:\x20','SENDING\x20FAILED','send','execOriginate','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','checkTrunk','Trunk','isValid','Trunk\x20Reachable','gs\x20-q\x20-dNOPAUSE\x20-dBATCH\x20-sDEVICE=tiffg4\x20-sPAPERSIZE=letter\x20-sOutputFile=/var/opt/motion2/server/files/attachments/%s.tif\x20\x20%s\x20-c\x20quit','execute','format','%s/%s.tif','dir','XMF-PATH','Action','variablesAction','addVariables','ext','isTrunkReachable','isNil','active','SIP/%s','reachable','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','Empty\x20Fax','Empty\x20path','Is\x20Valid','exports','util','moment','path','tiff2pdf','./util/gs','../../../config/logger','fax','../ami','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','channels','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','newexten','syncNewExten','faxstatus','receivefax','hangup','syncHangup','originateresponse','prototype','hasOwnProperty','exten','uniqueid','channel','name','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','syncFaxStatus','operation','status','localstationid'];(function(_0x1a11a2,_0x59cef8){var _0x44bb3d=function(_0x29e458){while(--_0x29e458){_0x1a11a2['push'](_0x1a11a2['shift']());}};_0x44bb3d(++_0x59cef8);}(_0x1a58,0x1b6));var _0x81a5=function(_0x159a96,_0x1629f9){_0x159a96=_0x159a96-0x0;var _0x55bcb7=_0x1a58[_0x159a96];return _0x55bcb7;};'use strict';var util=require(_0x81a5('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require('uuid');var moment=require(_0x81a5('0x1'));var path=require(_0x81a5('0x2'));var tiff2pdf=require(_0x81a5('0x3'));var gs=require(_0x81a5('0x4'));var logger=require(_0x81a5('0x5'))(_0x81a5('0x6'));var ami=require(_0x81a5('0x7'));var rpcDb=require('./rpcDb');var Channel=require(_0x81a5('0x8'));var ut=require(_0x81a5('0x9'));var Action=require(_0x81a5('0xa'));var faxAccount=require(_0x81a5('0xb'));var attachment=require(_0x81a5('0xc'));var faxMessage=require('../rpc/faxMessage');function Fax(_0x2dafee){this[_0x81a5('0xd')]={};this[_0x81a5('0xe')]=_0x2dafee[_0x81a5('0xe')];this[_0x81a5('0xf')]=_0x2dafee[_0x81a5('0xf')];this[_0x81a5('0x10')]={};ami['on'](_0x81a5('0x11'),this[_0x81a5('0x12')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x14'),this[_0x81a5('0x15')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x16'),this[_0x81a5('0x17')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x18'),this[_0x81a5('0x19')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1a'),this['syncFaxStatus'][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1b'),this['syncReceiveFax'][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1c'),this[_0x81a5('0x1d')][_0x81a5('0x13')](this));ami['on'](_0x81a5('0x1e'),this['syncOriginateResponse']['bind'](this));}Fax[_0x81a5('0x1f')][_0x81a5('0x12')]=function(_0x282d0e){if(_0x282d0e['context']==='from-voip-provider'){for(var _0x2c4cff in this['faxAccounts']){if(this[_0x81a5('0xe')][_0x81a5('0x20')](_0x2c4cff)){if(_0x282d0e[_0x81a5('0x21')]===this[_0x81a5('0xe')][_0x2c4cff]['localstationid']){this[_0x81a5('0xd')][_0x282d0e['uniqueid']]={};this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x23')]=_0x282d0e[_0x81a5('0x23')];this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]]['id']=this[_0x81a5('0xe')][_0x2c4cff]['id'];this['channels'][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x24')]=this[_0x81a5('0xe')][_0x2c4cff]['name'];logger['info'](_0x282d0e['uniqueid'],_0x81a5('0x25'));}}}}if(this[_0x81a5('0x10')][_0x282d0e[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]]={};this[_0x81a5('0xd')][_0x282d0e[_0x81a5('0x22')]][_0x81a5('0x23')]=_0x282d0e['channel'];logger['info'](_0x282d0e[_0x81a5('0x22')],_0x81a5('0x25'));}};Fax[_0x81a5('0x1f')]['syncVarSet']=function(_0x169410){if(this[_0x81a5('0xd')][_0x169410[_0x81a5('0x22')]]){for(var _0x8aae64 in _0x169410['variable']){if(_0x169410[_0x81a5('0x26')]['hasOwnProperty'](_0x8aae64)){this['channels'][_0x169410[_0x81a5('0x22')]][_0x8aae64]=_0x169410[_0x81a5('0x27')];}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x17')]=function(_0x17d286){if(this['channels'][_0x17d286[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x17d286['uniqueid']][_0x81a5('0x28')]=_0x17d286[_0x81a5('0x28')];this[_0x81a5('0xd')][_0x17d286['uniqueid']][_0x81a5('0x29')]=_0x17d286[_0x81a5('0x29')];}};Fax[_0x81a5('0x1f')][_0x81a5('0x19')]=function(_0x432aee){if(this[_0x81a5('0xd')][_0x432aee[_0x81a5('0x22')]]){for(var _0x4cafeb in _0x432aee[_0x81a5('0x26')]){if(_0x432aee[_0x81a5('0x26')][_0x81a5('0x20')](_0x4cafeb)){this[_0x81a5('0xd')][_0x432aee[_0x81a5('0x22')]][_0x4cafeb]=_0x432aee[_0x81a5('0x27')];}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x2a')]=function(_0x16d652){if(this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x16d652['uniqueid']]['operation']=_0x16d652[_0x81a5('0x2b')];this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2c')]=_0x16d652['status'];this['channels'][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2d')]=_0x16d652[_0x81a5('0x2d')];this[_0x81a5('0xd')][_0x16d652[_0x81a5('0x22')]][_0x81a5('0x2e')]=_0x16d652[_0x81a5('0x2e')];logger[_0x81a5('0x2f')](_0x16d652[_0x81a5('0x22')],'\x20syncFaxStatus\x20');}};Fax[_0x81a5('0x1f')][_0x81a5('0x30')]=function(_0x4c87d5){var _0x1a7382=this;if(this[_0x81a5('0xd')][_0x4c87d5['uniqueid']]){var _0x4012e8=this[_0x81a5('0xd')][_0x4c87d5['uniqueid']]['id'];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['remotestationid']=_0x4c87d5['remotestationid'];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]][_0x81a5('0x31')]=_0x4c87d5[_0x81a5('0x31')];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['localstationid']=_0x4c87d5[_0x81a5('0x2d')];this['channels'][_0x4c87d5[_0x81a5('0x22')]]['resolution']=_0x4c87d5[_0x81a5('0x32')];this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]][_0x81a5('0x33')]=_0x4c87d5['transferrate'];this[_0x81a5('0xd')][_0x4c87d5['uniqueid']][_0x81a5('0x2e')]=_0x4c87d5['filename'];this[_0x81a5('0xd')][_0x4c87d5['uniqueid']][_0x81a5('0x34')]=_0x4c87d5['calleridnum'];if(this[_0x81a5('0xd')][_0x4c87d5[_0x81a5('0x22')]]['pagestransferred']>0x0){tiff2pdf(_0x4c87d5[_0x81a5('0x2e')],_0x81a5('0x35'),function(_0x590de2){logger[_0x81a5('0x2f')](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x36'),_0x590de2[_0x81a5('0x37')]);attachment[_0x81a5('0x38')]({'name':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])[_0x81a5('0x24')],'basename':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])['name']+_0x81a5('0x3a'),'type':_0x81a5('0x3b')})[_0x81a5('0x3c')](function(_0x285548){faxAccount[_0x81a5('0x3d')](_0x4012e8,{'from':_0x4c87d5[_0x81a5('0x34')],'mapKey':_0x81a5('0x6'),'body':path[_0x81a5('0x39')](_0x4c87d5[_0x81a5('0x2e')])[_0x81a5('0x24')]+_0x81a5('0x3a'),'AttachmentId':_0x285548['id']})[_0x81a5('0x3e')](function(_0x4bf3f5){logger[_0x81a5('0x3f')](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x40'),JSON['stringify'](_0x4bf3f5));});})[_0x81a5('0x3e')](function(_0xd29efe){logger['error'](_0x4c87d5[_0x81a5('0x22')],_0x81a5('0x41'),JSON[_0x81a5('0x42')](_0xd29efe));});});}logger[_0x81a5('0x2f')](_0x4c87d5['uniqueid'],'\x20receiveFax\x20');}};Fax[_0x81a5('0x1f')][_0x81a5('0x43')]=function(_0x5c3a96){if(this[_0x81a5('0x10')][_0x5c3a96[_0x81a5('0x22')]]){_[_0x81a5('0x44')](this[_0x81a5('0xd')][_0x5c3a96['uniqueid']],_['pick'](_0x5c3a96,[_0x81a5('0x45'),_0x81a5('0x46')]));}};function updateStatus(_0x35a968){if(_0x35a968[_0x81a5('0x47')]){faxMessage[_0x81a5('0x48')](_0x35a968[_0x81a5('0x47')],{'failMessage':_0x81a5('0x49')})[_0x81a5('0x3c')](function(_0x2a6b9a){ut[_0x81a5('0x4a')](_0x81a5('0x4b'),_0x2a6b9a);})[_0x81a5('0x3e')](function(_0x1393c3){ut['logger'](_0x81a5('0x4c'),_0x1393c3);});}else{ut[_0x81a5('0x4a')](_0x81a5('0x4d'));}}Fax[_0x81a5('0x1f')]['updateStatus']=function(_0x3e3883,_0x2d8d03,_0xad38a9){var _0x5c0cb9=this;var _0x19ed1c={};if(_0x2d8d03){_0x19ed1c={'read':_0x2d8d03};}else{_0x19ed1c={'failMessage':_0xad38a9};}if(this[_0x81a5('0x10')][_0x3e3883][_0x81a5('0x47')]){faxMessage[_0x81a5('0x48')](this['actions'][_0x3e3883][_0x81a5('0x47')],_0x19ed1c)[_0x81a5('0x3c')](function(_0x573f0e){ut[_0x81a5('0x4a')](_0x81a5('0x4e'),_0x573f0e);})[_0x81a5('0x3e')](function(_0x21c067){ut[_0x81a5('0x4a')]('[Fax][Message][NoUpdate1]',_0x21c067);})[_0x81a5('0x4f')](function(){delete _0x5c0cb9[_0x81a5('0xd')][_0x3e3883];delete _0x5c0cb9[_0x81a5('0x10')][_0x3e3883];});}else{ut[_0x81a5('0x4a')]('[Fax][Message][NoUpdate2]');delete this[_0x81a5('0xd')][_0x3e3883];delete this[_0x81a5('0x10')][_0x3e3883];}};Fax[_0x81a5('0x1f')][_0x81a5('0x1d')]=function(_0x59d716){var _0x597dc3=this;if(this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]){if(this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]){this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]['id']=this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]['id'];this['channels'][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x24')]=this['actions'][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x24')];}logger[_0x81a5('0x2f')](_0x59d716[_0x81a5('0x22')],this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]?_0x81a5('0x50'):_0x81a5('0x51'),JSON['stringify'](this['channels'][_0x59d716['uniqueid']]));if(this[_0x81a5('0x10')][_0x59d716[_0x81a5('0x22')]]){if(this['channels'][_0x59d716['uniqueid']][_0x81a5('0x52')]>0x0&&this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]][_0x81a5('0x1a')]===_0x81a5('0x53')){this[_0x81a5('0x54')](_0x59d716[_0x81a5('0x22')],!![]);}else{this[_0x81a5('0x54')](_0x59d716[_0x81a5('0x22')],![],this['channels'][_0x59d716['uniqueid']][_0x81a5('0x55')]?_0x81a5('0x56')+this[_0x81a5('0xd')][_0x59d716[_0x81a5('0x22')]]['faxstatusstring']:_0x81a5('0x57'));}}}};Fax[_0x81a5('0x1f')][_0x81a5('0x58')]=function(_0x2f5ca1){var _0x3f26b4=this;return new BPromise(function(_0x2d7f28,_0x14bc06){_0x3f26b4[_0x81a5('0x59')](_0x2f5ca1,_0x3f26b4[_0x81a5('0xe')][_0x2f5ca1[_0x81a5('0x5a')]])[_0x81a5('0x3c')](function(_0x4ab6b7){ut[_0x81a5('0x4a')](_0x81a5('0x5b'),_0x4ab6b7);_0x2d7f28(ut[_0x81a5('0x37')](_0x81a5('0x5c')));})['catch'](function(_0x27d335){ut[_0x81a5('0x4a')](_0x81a5('0x5d'),_0x27d335);updateStatus(_0x2f5ca1);_0x14bc06(ut[_0x81a5('0x37')](_0x81a5('0x5e')));});});};Fax[_0x81a5('0x1f')][_0x81a5('0x5f')]=function(_0x223e35){var _0x5a1c2a=this;return new BPromise(function(_0x3fadd6,_0x29c80a){var _0x48d6de=_0x5a1c2a[_0x81a5('0x60')](_0x5a1c2a[_0x81a5('0xe')][_0x223e35[_0x81a5('0x5a')]][_0x81a5('0x61')],_0x223e35);if(_0x48d6de[_0x81a5('0x62')]){_0x3fadd6(ut['message'](_0x81a5('0x63')));}else{_0x29c80a(ut['message'](_0x48d6de[_0x81a5('0x37')]));}});};function originate(_0x51c4ca,_0x7cb236,_0x2a584f){return new BPromise(function(_0x3f8db7,_0x31192d){if(_0x2a584f){var _0x28a6a0=util['format'](_0x81a5('0x64'),path[_0x81a5('0x39')](_0x51c4ca['path'])['name'],_0x51c4ca['path']);gs[_0x81a5('0x65')](_0x28a6a0)[_0x81a5('0x3c')](function(){_0x51c4ca['path']=util[_0x81a5('0x66')](_0x81a5('0x67'),path['parse'](_0x51c4ca['path'])[_0x81a5('0x68')],path['parse'](_0x51c4ca[_0x81a5('0x2')])['name']);_0x7cb236[_0x81a5('0x69')]=_0x51c4ca['path'];ut['logger']('Convert\x20pdf\x20to\x20tif','');ami[_0x81a5('0x6a')](ut[_0x81a5('0x6b')](_0x51c4ca,_0x7cb236))['then'](function(_0x48ad2b){_0x3f8db7(_0x48ad2b);})[_0x81a5('0x3e')](function(_0x231673){_0x31192d(_0x231673);});})['catch'](function(_0x4ee6fd){_0x31192d(_0x4ee6fd);});}else{ami[_0x81a5('0x6a')](ut[_0x81a5('0x6b')](_0x51c4ca,_0x7cb236))[_0x81a5('0x3c')](function(_0x48ab18){_0x3f8db7(_0x48ab18);})[_0x81a5('0x3e')](function(_0x321232){_0x31192d(_0x321232);});}});}Fax['prototype']['execOriginate']=function(_0x2ad80c,_0x36ca3e){var _0x267480=this;return new BPromise(function(_0x615d0e,_0x575b28){var _0x4dbab4=uuid['v4']();var _0x434a7a=ut[_0x81a5('0x6c')](_0x2ad80c,_0x36ca3e);_0x267480[_0x81a5('0x10')][_0x4dbab4]=new Action(_0x4dbab4,_0x36ca3e,_0x2ad80c);var _0x3ab94f=_0x267480[_0x81a5('0x10')][_0x4dbab4];if(path['parse'](_0x2ad80c[_0x81a5('0x2')])[_0x81a5('0x6d')]===_0x81a5('0x3a')){originate(_0x3ab94f,_0x434a7a,!![])[_0x81a5('0x3c')](function(_0x1c55c8){_0x615d0e(_0x1c55c8);})[_0x81a5('0x3e')](function(_0x6393b6){_0x575b28(_0x6393b6);});}else{originate(_0x3ab94f,_0x434a7a,![])[_0x81a5('0x3c')](function(_0x1df8d9){_0x615d0e(_0x1df8d9);})[_0x81a5('0x3e')](function(_0x4441d2){_0x575b28(_0x4441d2);});}});};Fax[_0x81a5('0x1f')][_0x81a5('0x6e')]=function(_0x252d41){return!_['isNil'](_0x252d41)&&!_[_0x81a5('0x6f')](_0x252d41[_0x81a5('0x24')])&&!_[_0x81a5('0x6f')](_0x252d41['active'])&&_0x252d41[_0x81a5('0x70')]&&!_[_0x81a5('0x6f')](this[_0x81a5('0xf')][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])])&&!_[_0x81a5('0x6f')](this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])][_0x81a5('0x2c')])&&(this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41['name'])][_0x81a5('0x2c')]===_0x81a5('0x72')||this['trunks'][util[_0x81a5('0x66')](_0x81a5('0x71'),_0x252d41[_0x81a5('0x24')])][_0x81a5('0x2c')]==='unmonitored');};Fax[_0x81a5('0x1f')][_0x81a5('0x60')]=function(_0x1a7e2c,_0x4981a6){if(!this['isTrunkReachable'](_0x1a7e2c)){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]',_['isNil'](_0x1a7e2c)?'':_0x1a7e2c[_0x81a5('0x24')]+_0x81a5('0x73'));return{'isValid':![],'message':_0x81a5('0x74')};}if(_[_0x81a5('0x6f')](_0x4981a6[_0x81a5('0x6')])){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Empty\x20Fax]',JSON[_0x81a5('0x42')](_0x4981a6));return{'isValid':![],'message':_0x81a5('0x75')};}if(_[_0x81a5('0x6f')](_0x4981a6['path'])){ut[_0x81a5('0x4a')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x81a5('0x42')](_0x4981a6));return{'isValid':![],'message':_0x81a5('0x76')};}return{'isValid':!![],'message':_0x81a5('0x77')};};module[_0x81a5('0x78')]=Fax;
\ No newline at end of file
index 2c61504..b8a9f62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcd8=['notify','then','catch','[Notify]\x20','util','bluebird','../../../config/logger','preview','lodash','error','inspect'];(function(_0x465759,_0x21dc69){var _0xf6a640=function(_0x83ef89){while(--_0x83ef89){_0x465759['push'](_0x465759['shift']());}};_0xf6a640(++_0x21dc69);}(_0xbcd8,0xca));var _0x8bcd=function(_0x57d36d,_0x54d07a){_0x57d36d=_0x57d36d-0x0;var _0x1eb59d=_0xbcd8[_0x57d36d];return _0x1eb59d;};'use strict';var util=require(_0x8bcd('0x0'));var BPromise=require(_0x8bcd('0x1'));var logger=require(_0x8bcd('0x2'))(_0x8bcd('0x3'));var _=require(_0x8bcd('0x4'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x2ddf8f){return function(_0x85f775){logger[_0x8bcd('0x5')](_0x2ddf8f,util[_0x8bcd('0x6')](_0x85f775,{'showHidden':![],'depth':null}));};}exports[_0x8bcd('0x7')]=function(_0x65ab6,_0x23931c){return BPromise['resolve']()[_0x8bcd('0x8')](faxAccount[_0x8bcd('0x7')](_0x65ab6,_0x23931c))[_0x8bcd('0x9')](loggerCatch(_0x8bcd('0xa')));};
\ No newline at end of file
+var _0xf495=['../../../config/logger','preview','../rpc/faxAccount','error','inspect','notify','then','catch','[Notify]\x20','bluebird'];(function(_0x1ffe26,_0x2d501a){var _0x420940=function(_0x22033f){while(--_0x22033f){_0x1ffe26['push'](_0x1ffe26['shift']());}};_0x420940(++_0x2d501a);}(_0xf495,0x77));var _0x5f49=function(_0x591641,_0x3be9ba){_0x591641=_0x591641-0x0;var _0x420907=_0xf495[_0x591641];return _0x420907;};'use strict';var util=require('util');var BPromise=require(_0x5f49('0x0'));var logger=require(_0x5f49('0x1'))(_0x5f49('0x2'));var _=require('lodash');var faxAccount=require(_0x5f49('0x3'));function loggerCatch(_0x3817f4){return function(_0x20a934){logger[_0x5f49('0x4')](_0x3817f4,util[_0x5f49('0x5')](_0x20a934,{'showHidden':![],'depth':null}));};}exports[_0x5f49('0x6')]=function(_0x460af5,_0x2bc534){return BPromise['resolve']()[_0x5f49('0x7')](faxAccount[_0x5f49('0x6')](_0x460af5,_0x2bc534))[_0x5f49('0x8')](loggerCatch(_0x5f49('0x9')));};
\ No newline at end of file
index b20ec6f..a7d5843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb525=['\x20Error\x20:','inspect','util','../../../../config/logger','fax','bluebird','child_process','exec','Exec\x20gs'];(function(_0x22ae67,_0x1d3acc){var _0x5c83b3=function(_0x105f14){while(--_0x105f14){_0x22ae67['push'](_0x22ae67['shift']());}};_0x5c83b3(++_0x1d3acc);}(_0xb525,0xda));var _0x5b52=function(_0x5a122d,_0x56581a){_0x5a122d=_0x5a122d-0x0;var _0x4eb609=_0xb525[_0x5a122d];return _0x4eb609;};'use strict';var util=require(_0x5b52('0x0'));var logger=require(_0x5b52('0x1'))(_0x5b52('0x2'));var BPromise=require(_0x5b52('0x3'));var exec=require(_0x5b52('0x4'))[_0x5b52('0x5')];exports['execute']=function(_0x53b0a3){return new BPromise(function(_0x3be345,_0x15337c){exec(_0x53b0a3,function(_0x3b57d5,_0x94c1a1,_0x2d286a){logger['info'](_0x5b52('0x6'),_0x94c1a1);if(_0x3b57d5){logger['info'](_0x5b52('0x6'),_0x5b52('0x7'),util[_0x5b52('0x8')](_0x3b57d5,{'showHidden':![],'depth':null}),_0x94c1a1,_0x2d286a);_0x15337c(_0x3b57d5);}_0x3be345(_0x94c1a1);});});};
\ No newline at end of file
+var _0x595a=['inspect','util','fax','bluebird','child_process','exec','info','Exec\x20gs','\x20Error\x20:'];(function(_0x991306,_0x48e218){var _0x5874fc=function(_0x10df6a){while(--_0x10df6a){_0x991306['push'](_0x991306['shift']());}};_0x5874fc(++_0x48e218);}(_0x595a,0xe2));var _0xa595=function(_0x112db5,_0x38a06d){_0x112db5=_0x112db5-0x0;var _0x1d7d06=_0x595a[_0x112db5];return _0x1d7d06;};'use strict';var util=require(_0xa595('0x0'));var logger=require('../../../../config/logger')(_0xa595('0x1'));var BPromise=require(_0xa595('0x2'));var exec=require(_0xa595('0x3'))[_0xa595('0x4')];exports['execute']=function(_0x9b1995){return new BPromise(function(_0x397882,_0x501722){exec(_0x9b1995,function(_0x239707,_0xeace11,_0x2577f0){logger[_0xa595('0x5')](_0xa595('0x6'),_0xeace11);if(_0x239707){logger[_0xa595('0x5')](_0xa595('0x6'),_0xa595('0x7'),util[_0xa595('0x8')](_0x239707,{'showHidden':![],'depth':null}),_0xeace11,_0x2577f0);_0x501722(_0x239707);}_0x397882(_0xeace11);});});};
\ No newline at end of file
index ebc2c5f..eea172a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29a6=['headerinfo','minrate','maxrate','\x22%s\x22','modem','faxdetect','t38timeout','uniqueid','originate','channel','xcally-motion-fax','from-sip','format','\x22%s\x22\x20<%s>','util','lodash','moment','../../../../config/logger','fax','message','info','inspect','addVariables'];(function(_0x1d3fc9,_0x3752d6){var _0x4e7e33=function(_0x57fec7){while(--_0x57fec7){_0x1d3fc9['push'](_0x1d3fc9['shift']());}};_0x4e7e33(++_0x3752d6);}(_0x29a6,0xaf));var _0x629a=function(_0x248763,_0x285e28){_0x248763=_0x248763-0x0;var _0x476a07=_0x29a6[_0x248763];return _0x476a07;};'use strict';var util=require(_0x629a('0x0'));var _=require(_0x629a('0x1'));var moment=require(_0x629a('0x2'));var logger=require(_0x629a('0x3'))(_0x629a('0x4'));exports[_0x629a('0x5')]=function(_0xe4da17){return{'message':_0xe4da17};};exports['logger']=function(_0x3ab81b,_0x5b32d7){logger[_0x629a('0x6')](_0x3ab81b,util[_0x629a('0x7')](_0x5b32d7,{'showHidden':![],'depth':null}));};exports[_0x629a('0x8')]=function(_0x2c2d67,_0x2627e1){var _0xfcea11={'XMF-ECM':_0x2627e1['ecm'],'XMF-HEADERINFO':_0x2627e1[_0x629a('0x9')],'XMF-MINRATE':_0x2627e1[_0x629a('0xa')],'XMF-MAXRATE':_0x2627e1[_0x629a('0xb')],'XMF-MODEM':util['format'](_0x629a('0xc'),_0x2627e1[_0x629a('0xd')]),'XMF-GATEWAY':_0x2627e1['gateway'],'XMF-FAXDETECT':_0x2627e1[_0x629a('0xe')],'XMF-T38TIMEOUT':_0x2627e1[_0x629a('0xf')],'XMF-LOCALSTATIONID':_0x2627e1['localstationid'],'XMF-PATH':_0x2c2d67['path']};return _0xfcea11;};exports['variablesAction']=function(_0x4ab37c,_0x2028ad){return{'actionid':_0x4ab37c[_0x629a('0x10')],'action':_0x629a('0x11'),'channel':_0x4ab37c[_0x629a('0x12')],'Exten':_0x629a('0x13'),'Context':_0x629a('0x14'),'Priority':'1','callerid':util[_0x629a('0x15')](_0x629a('0x16'),_0x4ab37c[_0x629a('0x9')]?_0x4ab37c[_0x629a('0x9')]:'',_0x4ab37c['localstationid']),'variable':_0x2028ad,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x4ab37c[_0x629a('0x10')]};};
\ No newline at end of file
+var _0xa73c=['uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','../../../../config/logger','fax','message','logger','info','inspect','addVariables','maxrate','format','\x22%s\x22','modem','gateway','faxdetect','t38timeout','localstationid','variablesAction'];(function(_0x49dd11,_0x3c69fd){var _0x2ae82c=function(_0x579ac2){while(--_0x579ac2){_0x49dd11['push'](_0x49dd11['shift']());}};_0x2ae82c(++_0x3c69fd);}(_0xa73c,0x18d));var _0xca73=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa73c[_0x3dd15e];return _0x231fd0;};'use strict';var util=require(_0xca73('0x0'));var _=require('lodash');var moment=require('moment');var logger=require(_0xca73('0x1'))(_0xca73('0x2'));exports[_0xca73('0x3')]=function(_0x18bb65){return{'message':_0x18bb65};};exports[_0xca73('0x4')]=function(_0x38ce49,_0x3ffb7e){logger[_0xca73('0x5')](_0x38ce49,util[_0xca73('0x6')](_0x3ffb7e,{'showHidden':![],'depth':null}));};exports[_0xca73('0x7')]=function(_0x2304e3,_0x4003a7){var _0x22008a={'XMF-ECM':_0x4003a7['ecm'],'XMF-HEADERINFO':_0x4003a7['headerinfo'],'XMF-MINRATE':_0x4003a7['minrate'],'XMF-MAXRATE':_0x4003a7[_0xca73('0x8')],'XMF-MODEM':util[_0xca73('0x9')](_0xca73('0xa'),_0x4003a7[_0xca73('0xb')]),'XMF-GATEWAY':_0x4003a7[_0xca73('0xc')],'XMF-FAXDETECT':_0x4003a7[_0xca73('0xd')],'XMF-T38TIMEOUT':_0x4003a7[_0xca73('0xe')],'XMF-LOCALSTATIONID':_0x4003a7[_0xca73('0xf')],'XMF-PATH':_0x2304e3['path']};return _0x22008a;};exports[_0xca73('0x10')]=function(_0x3021ee,_0x5c1ce0){return{'actionid':_0x3021ee[_0xca73('0x11')],'action':_0xca73('0x12'),'channel':_0x3021ee[_0xca73('0x13')],'Exten':_0xca73('0x14'),'Context':_0xca73('0x15'),'Priority':'1','callerid':util['format'](_0xca73('0x16'),_0x3021ee['headerinfo']?_0x3021ee['headerinfo']:'',_0x3021ee[_0xca73('0xf')]),'variable':_0x5c1ce0,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x3021ee[_0xca73('0x11')]};};
\ No newline at end of file
index 112b540..70cd455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d5d=['initVoiceQueueHopperHistory','initCampaignHopperHistory','initVoiceCallReports','catch','error','[index.js][initParams]','inspect','listen','[index.js][main]','bluebird','util','moment','./server','./realtime','./acw','./trigger','./fax','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/cmHopperHistory','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','ami','hour','resolve','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','getVoiceQueues','initTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','getDynamics365Accounts','initDynamics365Accounts','getCampaigns','initCampaigns','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','getVoiceQueueHopperHistory'];(function(_0x3ffe3f,_0x464d70){var _0x130c0b=function(_0x4d137e){while(--_0x4d137e){_0x3ffe3f['push'](_0x3ffe3f['shift']());}};_0x130c0b(++_0x464d70);}(_0x4d5d,0x111));var _0xd4d5=function(_0xea17a7,_0x3f7d93){_0xea17a7=_0xea17a7-0x0;var _0x247ed5=_0x4d5d[_0xea17a7];return _0x247ed5;};'use strict';var BPromise=require(_0xd4d5('0x0'));var util=require(_0xd4d5('0x1'));var moment=require(_0xd4d5('0x2'));var server=require(_0xd4d5('0x3'));var Realtime=require(_0xd4d5('0x4'));var Report=require('./report');var Acw=require(_0xd4d5('0x5'));var Trigger=require(_0xd4d5('0x6'));var Dialer=require('./dialer');var Preview=require('./preview');var Fax=require(_0xd4d5('0x7'));var user=require(_0xd4d5('0x8'));var voiceQueue=require(_0xd4d5('0x9'));var voiceQueueReport=require(_0xd4d5('0xa'));var voiceCallReport=require(_0xd4d5('0xb'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0xd4d5('0xc'));var cmHopperHistory=require(_0xd4d5('0xd'));var campaign=require('./rpc/campaign');var voiceExtension=require(_0xd4d5('0xe'));var faxAccount=require(_0xd4d5('0xf'));var zendesk=require('./rpc/integrations/zendesk');var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0xd4d5('0x10'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0xd4d5('0x11'));var zoho=require(_0xd4d5('0x12'));var vtiger=require(_0xd4d5('0x13'));var freshsales=require(_0xd4d5('0x14'));var servicenow=require(_0xd4d5('0x15'));var dynamics365=require(_0xd4d5('0x16'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require('../../config/logger')(_0xd4d5('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0xd4d5('0x18'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()['get'](_0xd4d5('0x18'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise[_0xd4d5('0x19')]()[_0xd4d5('0x1a')](user[_0xd4d5('0x1b')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x1c')]())['then'](user[_0xd4d5('0x1d')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x1e')]())[_0xd4d5('0x1a')](trunk[_0xd4d5('0x1f')]())[_0xd4d5('0x1a')](realtime['initTrunks']())[_0xd4d5('0x1a')](voiceQueue[_0xd4d5('0x20')]())[_0xd4d5('0x1a')](realtime['initVoiceQueues']())[_0xd4d5('0x1a')](trigger['getTriggers']())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x21')]())[_0xd4d5('0x1a')](template[_0xd4d5('0x22')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x23')]())[_0xd4d5('0x1a')](zendesk['getZendeskAccounts']())['then'](realtime[_0xd4d5('0x24')]())[_0xd4d5('0x1a')](salesforce[_0xd4d5('0x25')]())[_0xd4d5('0x1a')](realtime['initSalesforceAccounts']())[_0xd4d5('0x1a')](sugarcrm[_0xd4d5('0x26')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x27')]())[_0xd4d5('0x1a')](freshdesk[_0xd4d5('0x28')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x29')]())[_0xd4d5('0x1a')](desk['getDeskAccounts']())['then'](realtime[_0xd4d5('0x2a')]())[_0xd4d5('0x1a')](zoho[_0xd4d5('0x2b')]())['then'](realtime[_0xd4d5('0x2c')]())[_0xd4d5('0x1a')](vtiger[_0xd4d5('0x2d')]())['then'](realtime[_0xd4d5('0x2e')]())[_0xd4d5('0x1a')](freshsales[_0xd4d5('0x2f')]())[_0xd4d5('0x1a')](realtime['initFreshsalesAccounts']())[_0xd4d5('0x1a')](servicenow['getServicenowAccounts']())['then'](realtime['initServicenowAccounts']())[_0xd4d5('0x1a')](dynamics365[_0xd4d5('0x30')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x31')]())[_0xd4d5('0x1a')](campaign[_0xd4d5('0x32')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x33')]())[_0xd4d5('0x1a')](voiceExtension['getVoiceExtensions']())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x34')]())[_0xd4d5('0x1a')](faxAccount[_0xd4d5('0x35')]())['then'](realtime[_0xd4d5('0x36')]())[_0xd4d5('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0xd4d5('0x19')]()['then'](voiceQueueReport[_0xd4d5('0x37')]())[_0xd4d5('0x1a')](realtime['initVoiceQueueReports']())[_0xd4d5('0x1a')](cmHopperHistory[_0xd4d5('0x38')]())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x39')]())[_0xd4d5('0x1a')](cmHopperHistory['getCampaignHopperHistory']())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x3a')]())[_0xd4d5('0x1a')](voiceCallReport['getVoiceCallReports']())[_0xd4d5('0x1a')](realtime[_0xd4d5('0x3b')]())[_0xd4d5('0x3c')](function(_0x1077ac){logger[_0xd4d5('0x3d')](_0xd4d5('0x3e'),util[_0xd4d5('0x3f')](_0x1077ac,{'showHidden':![],'depth':null}));});}function main(){return server[_0xd4d5('0x40')](realtime,preview,fax)[_0xd4d5('0x1a')](function(_0x50782b){return initRealtime();})[_0xd4d5('0x1a')](function(){return initParams();})[_0xd4d5('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})['catch'](function(_0x528731){logger[_0xd4d5('0x3d')](_0xd4d5('0x41'),util['inspect'](_0x528731,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0xf702=['getServicenowAccounts','getDynamics365Accounts','getCampaigns','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','getVoiceQueueReports','initVoiceQueueReports','initCampaignHopperHistory','getVoiceCallReports','[index.js][initParams]','inspect','listen','catch','error','[index.js][main]','./realtime','./report','./acw','./trigger','./preview','./fax','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/cmHopperHistory','./rpc/campaign','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/vtiger','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','then','getAgents','initAgents','getTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','initFreshdeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','initVtigerAccounts','initFreshsalesAccounts'];(function(_0x48f463,_0x111546){var _0x56a8f5=function(_0x97aae7){while(--_0x97aae7){_0x48f463['push'](_0x48f463['shift']());}};_0x56a8f5(++_0x111546);}(_0xf702,0x19e));var _0x2f70=function(_0x3fcfbe,_0x580dbf){_0x3fcfbe=_0x3fcfbe-0x0;var _0x55a545=_0xf702[_0x3fcfbe];return _0x55a545;};'use strict';var util=require('util');var moment=require('moment');var server=require('./server');var Realtime=require(_0x2f70('0x0'));var Report=require(_0x2f70('0x1'));var Acw=require(_0x2f70('0x2'));var Trigger=require(_0x2f70('0x3'));var Dialer=require('./dialer');var Preview=require(_0x2f70('0x4'));var Fax=require(_0x2f70('0x5'));var user=require('./rpc/user');var voiceQueue=require(_0x2f70('0x6'));var voiceQueueReport=require(_0x2f70('0x7'));var voiceCallReport=require(_0x2f70('0x8'));var trunk=require(_0x2f70('0x9'));var trigger=require(_0x2f70('0xa'));var template=require(_0x2f70('0xb'));var cmHopperHistory=require(_0x2f70('0xc'));var campaign=require(_0x2f70('0xd'));var voiceExtension=require(_0x2f70('0xe'));var faxAccount=require(_0x2f70('0xf'));var zendesk=require(_0x2f70('0x10'));var salesforce=require('./rpc/integrations/salesforce');var sugarcrm=require(_0x2f70('0x11'));var freshdesk=require(_0x2f70('0x12'));var desk=require(_0x2f70('0x13'));var zoho=require('./rpc/integrations/zoho');var vtiger=require(_0x2f70('0x14'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require('./rpc/integrations/servicenow');var dynamics365=require(_0x2f70('0x15'));var realtime=new Realtime();var report=new Report(realtime);var acw=new Acw(realtime);var channelTrigger=new Trigger(realtime);var preview=new Preview(realtime);var dialer=new Dialer(realtime,preview);var fax=new Fax(realtime);var logger=require(_0x2f70('0x16'))(_0x2f70('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x2f70('0x18')](_0x2f70('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x2f70('0x18')](_0x2f70('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return Promise['resolve']()[_0x2f70('0x1a')](user[_0x2f70('0x1b')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x1c')]())[_0x2f70('0x1a')](user[_0x2f70('0x1d')]())['then'](realtime['initTelephones']())[_0x2f70('0x1a')](trunk[_0x2f70('0x1e')]())['then'](realtime[_0x2f70('0x1f')]())[_0x2f70('0x1a')](voiceQueue[_0x2f70('0x20')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x21')]())[_0x2f70('0x1a')](trigger[_0x2f70('0x22')]())[_0x2f70('0x1a')](realtime['initTriggers']())[_0x2f70('0x1a')](template['getTemplates']())[_0x2f70('0x1a')](realtime[_0x2f70('0x23')]())[_0x2f70('0x1a')](zendesk['getZendeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x24')]())[_0x2f70('0x1a')](salesforce[_0x2f70('0x25')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x26')]())[_0x2f70('0x1a')](sugarcrm[_0x2f70('0x27')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x28')]())['then'](freshdesk['getFreshdeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x29')]())['then'](desk['getDeskAccounts']())[_0x2f70('0x1a')](realtime[_0x2f70('0x2a')]())[_0x2f70('0x1a')](zoho[_0x2f70('0x2b')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x2c')]())[_0x2f70('0x1a')](vtiger[_0x2f70('0x2d')]())['then'](realtime[_0x2f70('0x2e')]())[_0x2f70('0x1a')](freshsales['getFreshsalesAccounts']())['then'](realtime[_0x2f70('0x2f')]())[_0x2f70('0x1a')](servicenow[_0x2f70('0x30')]())[_0x2f70('0x1a')](realtime['initServicenowAccounts']())[_0x2f70('0x1a')](dynamics365[_0x2f70('0x31')]())[_0x2f70('0x1a')](realtime['initDynamics365Accounts']())[_0x2f70('0x1a')](campaign[_0x2f70('0x32')]())['then'](realtime[_0x2f70('0x33')]())[_0x2f70('0x1a')](voiceExtension[_0x2f70('0x34')]())['then'](realtime[_0x2f70('0x35')]())['then'](faxAccount[_0x2f70('0x36')]())[_0x2f70('0x1a')](realtime[_0x2f70('0x37')]())[_0x2f70('0x1a')](function(){return realtime;});}function initParams(){return Promise['resolve']()['then'](voiceQueueReport[_0x2f70('0x38')]())['then'](realtime[_0x2f70('0x39')]())[_0x2f70('0x1a')](cmHopperHistory['getVoiceQueueHopperHistory']())[_0x2f70('0x1a')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory['getCampaignHopperHistory']())['then'](realtime[_0x2f70('0x3a')]())['then'](voiceCallReport[_0x2f70('0x3b')]())[_0x2f70('0x1a')](realtime['initVoiceCallReports']())['catch'](function(_0x5938b3){logger['error'](_0x2f70('0x3c'),util[_0x2f70('0x3d')](_0x5938b3,{'showHidden':![],'depth':null}));});}function main(){return server[_0x2f70('0x3e')](realtime,preview,fax)[_0x2f70('0x1a')](function(){return initRealtime();})['then'](function(){return initParams();})[_0x2f70('0x1a')](function(){report['sync']();setInterval(initRealtime,0x1388);})[_0x2f70('0x3f')](function(_0x415d4a){logger[_0x2f70('0x40')](_0x2f70('0x41'),util[_0x2f70('0x3d')](_0x415d4a,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 1c7082f..03ad926 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['stateTime','status','address','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','md5','prototype','updateStatusRealtime','not_inuse','inuse','talking','statePause','toNumber','format','fullname','stringify','user:%s','emit','user:save','user:presence','exports','lodash','util','moment','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name','email','accountcode','state','unknown'];(function(_0x152fe3,_0x12b0c8){var _0xc5bb39=function(_0x1fde42){while(--_0x1fde42){_0x152fe3['push'](_0x152fe3['shift']());}};_0xc5bb39(++_0x12b0c8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xa9e0[_0x4ea69d];return _0x5318e0;};'use strict';var _=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var moment=require(_0x0a9e('0x2'));var md5=require('md5');var Redis=require('ioredis');var config=require(_0x0a9e('0x3'));config['redis']=_[_0x0a9e('0x4')](config[_0x0a9e('0x5')],{'host':_0x0a9e('0x6'),'port':0x18eb});var io=require(_0x0a9e('0x7'))(new Redis(config[_0x0a9e('0x5')]));function Agent(_0x57b080){this['id']=_0x57b080['id']||0x0;this[_0x0a9e('0x8')]=_0x57b080[_0x0a9e('0x8')]||'';this[_0x0a9e('0x9')]=_0x57b080['email']||'';this['accountcode']=_0x57b080[_0x0a9e('0xa')]||'';this['fullname']=_0x57b080['fullname']||'';this[_0x0a9e('0xb')]=_0x0a9e('0xc');this[_0x0a9e('0xd')]=0x0;this[_0x0a9e('0xe')]=_0x0a9e('0xc');this[_0x0a9e('0xf')]='';this['phone']='';this['mobile']='';this['interface']='';this['online']=_0x57b080[_0x0a9e('0x10')]||![];this[_0x0a9e('0x11')]=_0x0a9e('0xc');this[_0x0a9e('0x12')]=0x0;this[_0x0a9e('0x13')]='';this[_0x0a9e('0x14')]='';this['onhold']=![];this[_0x0a9e('0x15')]=![];this[_0x0a9e('0x16')]='';}Agent[_0x0a9e('0x17')][_0x0a9e('0x18')]=function(_0x44dcfd){var _0x4d5611;if(_0x44dcfd&&_0x44dcfd['state']){_0x4d5611=_0x44dcfd[_0x0a9e('0xb')]['toLowerCase']();switch(_0x4d5611){case _0x0a9e('0x19'):_0x4d5611='idle';break;case _0x0a9e('0x1a'):_0x4d5611=_0x0a9e('0x1b');break;}}if(_0x4d5611&&this['voiceStatus']!==_0x4d5611||_0x44dcfd[_0x0a9e('0x1c')]){this['voiceStatusTime']=_[_0x0a9e('0x1d')](moment()[_0x0a9e('0x1e')]('x'));}if(_0x4d5611){this[_0x0a9e('0x11')]=_0x4d5611;}var _0x205fd6={'id':this['id'],'name':this[_0x0a9e('0x8')],'email':this[_0x0a9e('0x9')],'accountcode':this[_0x0a9e('0xa')],'fullname':this[_0x0a9e('0x1f')],'state':this[_0x0a9e('0xb')],'stateTime':this[_0x0a9e('0xd')],'status':this[_0x0a9e('0xe')],'address':this[_0x0a9e('0xf')],'online':this['online'],'voiceStatus':this[_0x0a9e('0x11')],'voiceStatusTime':this[_0x0a9e('0x12')],'voiceStatusCallerIdNumber':this['voiceStatusCallerIdNumber'],'voiceStatusQueue':this[_0x0a9e('0x14')],'interface':this['interface'],'onhold':this['onhold']};var _0x3a02e1=md5(JSON[_0x0a9e('0x20')](_0x205fd6));if(this[_0x0a9e('0x16')]!==_0x3a02e1){this[_0x0a9e('0x16')]=_0x3a02e1;io['to'](util['format'](_0x0a9e('0x21'),_0x205fd6[_0x0a9e('0x8')]))[_0x0a9e('0x22')](_0x0a9e('0x23'),_0x205fd6);io[_0x0a9e('0x22')](_0x0a9e('0x24'),_0x205fd6);}};module[_0x0a9e('0x25')]=Agent;
\ No newline at end of file
+var _0x8cda=['status','online','format','emit','user:save','user:presence','exports','util','moment','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','email','accountcode','fullname','stateTime','unknown','address','mobile','interface','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','voiceStatusQueue','local','prototype','state','toLowerCase','inuse','talking','statePause','toNumber'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x8cda,0x1db));var _0xa8cd=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x8cda[_0x20a584];return _0x4b41a8;};'use strict';var _=require('lodash');var util=require(_0xa8cd('0x0'));var moment=require(_0xa8cd('0x1'));var md5=require(_0xa8cd('0x2'));var Redis=require(_0xa8cd('0x3'));var config=require(_0xa8cd('0x4'));config[_0xa8cd('0x5')]=_['defaults'](config[_0xa8cd('0x5')],{'host':_0xa8cd('0x6'),'port':0x18eb});var io=require(_0xa8cd('0x7'))(new Redis(config['redis']));function Agent(_0x80c199){this['id']=_0x80c199['id']||0x0;this[_0xa8cd('0x8')]=_0x80c199[_0xa8cd('0x8')]||'';this[_0xa8cd('0x9')]=_0x80c199[_0xa8cd('0x9')]||'';this[_0xa8cd('0xa')]=_0x80c199[_0xa8cd('0xa')]||'';this[_0xa8cd('0xb')]=_0x80c199['fullname']||'';this['state']='unknown';this[_0xa8cd('0xc')]=0x0;this['status']=_0xa8cd('0xd');this[_0xa8cd('0xe')]='';this['phone']='';this[_0xa8cd('0xf')]='';this[_0xa8cd('0x10')]='';this['online']=_0x80c199['online']||![];this[_0xa8cd('0x11')]=_0xa8cd('0xd');this[_0xa8cd('0x12')]=0x0;this[_0xa8cd('0x13')]='';this[_0xa8cd('0x14')]='';this['onhold']=![];this[_0xa8cd('0x15')]=![];this['md5']='';}Agent[_0xa8cd('0x16')]['updateStatusRealtime']=function(_0x213e36){var _0x52d73b;if(_0x213e36&&_0x213e36[_0xa8cd('0x17')]){_0x52d73b=_0x213e36[_0xa8cd('0x17')][_0xa8cd('0x18')]();switch(_0x52d73b){case'not_inuse':_0x52d73b='idle';break;case _0xa8cd('0x19'):_0x52d73b=_0xa8cd('0x1a');break;}}if(_0x52d73b&&this[_0xa8cd('0x11')]!==_0x52d73b||_0x213e36[_0xa8cd('0x1b')]){this['voiceStatusTime']=_[_0xa8cd('0x1c')](moment()['format']('x'));}if(_0x52d73b){this[_0xa8cd('0x11')]=_0x52d73b;}var _0x2ef224={'id':this['id'],'name':this['name'],'email':this[_0xa8cd('0x9')],'accountcode':this[_0xa8cd('0xa')],'fullname':this['fullname'],'state':this[_0xa8cd('0x17')],'stateTime':this[_0xa8cd('0xc')],'status':this[_0xa8cd('0x1d')],'address':this[_0xa8cd('0xe')],'online':this[_0xa8cd('0x1e')],'voiceStatus':this['voiceStatus'],'voiceStatusTime':this[_0xa8cd('0x12')],'voiceStatusCallerIdNumber':this[_0xa8cd('0x13')],'voiceStatusQueue':this[_0xa8cd('0x14')],'interface':this[_0xa8cd('0x10')],'onhold':this['onhold']};var _0x1f15c0=md5(JSON['stringify'](_0x2ef224));if(this['md5']!==_0x1f15c0){this[_0xa8cd('0x2')]=_0x1f15c0;io['to'](util[_0xa8cd('0x1f')]('user:%s',_0x2ef224[_0xa8cd('0x8')]))[_0xa8cd('0x20')](_0xa8cd('0x21'),_0x2ef224);io[_0xa8cd('0x20')](_0xa8cd('0x22'),_0x2ef224);}};module[_0xa8cd('0x23')]=Agent;
\ No newline at end of file
index 9be9711..cfe5235 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e40=['temp','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','type','campaign','originated'];(function(_0xeec6fd,_0x3011ec){var _0x347c16=function(_0x5cc534){while(--_0x5cc534){_0xeec6fd['push'](_0xeec6fd['shift']());}};_0x347c16(++_0x3011ec);}(_0x1e40,0xbd));var _0x01e4=function(_0x46f592,_0x2539cb){_0x46f592=_0x46f592-0x0;var _0x35f94c=_0x1e40[_0x46f592];return _0x35f94c;};'use strict';function Campaign(_0x29b64e){this['id']=_0x29b64e['id']||0x0;this['name']=_0x29b64e['name']||'';this[_0x01e4('0x0')]=_0x29b64e['type']||_0x01e4('0x1');this[_0x01e4('0x2')]=0x0;this[_0x01e4('0x3')]=0x0;this['ivrAnswerCallsDay']=0x0;this[_0x01e4('0x4')]=0x0;this[_0x01e4('0x5')]='';this[_0x01e4('0x6')]=!![];this['active']=_0x29b64e[_0x01e4('0x7')];this['limitCalls']=_0x29b64e[_0x01e4('0x8')];this[_0x01e4('0x9')]=_0x29b64e['dialTimezone']||null;this[_0x01e4('0xa')]=_0x29b64e['dialGlobalInterval']?_0x29b64e['dialGlobalInterval']:null;this[_0x01e4('0xb')]=_0x29b64e[_0x01e4('0xb')];this[_0x01e4('0xc')]=_0x29b64e[_0x01e4('0xc')];this[_0x01e4('0xd')]=_0x29b64e[_0x01e4('0xd')]||0x1e;this['dialCongestionMaxRetry']=_0x29b64e[_0x01e4('0xe')];this[_0x01e4('0xf')]=_0x29b64e[_0x01e4('0xf')];this[_0x01e4('0x10')]=_0x29b64e[_0x01e4('0x10')];this[_0x01e4('0x11')]=_0x29b64e[_0x01e4('0x11')];this['dialNoAnswerMaxRetry']=_0x29b64e['dialNoAnswerMaxRetry'];this['dialNoAnswerRetryFrequency']=_0x29b64e[_0x01e4('0x12')];this[_0x01e4('0x13')]=_0x29b64e[_0x01e4('0x13')];this['dialNoSuchNumberMaxRetry']=_0x29b64e[_0x01e4('0x14')]||0x3;this['dialNoSuchNumberRetryFrequency']=_0x29b64e['dialNoSuchNumberRetryFrequency']||0x96;this['dialDropMaxRetry']=_0x29b64e['dialDropMaxRetry']||0x3;this[_0x01e4('0x15')]=_0x29b64e[_0x01e4('0x15')]||0x96;this['dialAbandonedMaxRetry']=_0x29b64e[_0x01e4('0x16')]||0x3;this[_0x01e4('0x17')]=_0x29b64e[_0x01e4('0x17')]||0x96;this['dialMachineMaxRetry']=_0x29b64e[_0x01e4('0x18')]||0x3;this['dialMachineRetryFrequency']=_0x29b64e[_0x01e4('0x19')]||0x96;this[_0x01e4('0x1a')]=_0x29b64e[_0x01e4('0x1a')]||0x3;this['dialAgentRejectRetryFrequency']=_0x29b64e[_0x01e4('0x1b')]||0x96;this[_0x01e4('0x1c')]=_0x29b64e['dialOrderByScheduledAt']||'DESC';this[_0x01e4('0x1d')]=_0x29b64e[_0x01e4('0x1d')]||undefined;this[_0x01e4('0x1e')]=_0x29b64e[_0x01e4('0x1e')]||undefined;this[_0x01e4('0x1f')]=_0x29b64e['dialCutDigit']||undefined;this[_0x01e4('0x20')]=_0x29b64e[_0x01e4('0x20')]?_0x29b64e['TrunkBackup']:undefined;this[_0x01e4('0x21')]=_0x29b64e['Trunk']?_0x29b64e[_0x01e4('0x21')]:undefined;this[_0x01e4('0x22')]=_0x29b64e[_0x01e4('0x22')]?_0x29b64e['Interval']:undefined;this[_0x01e4('0x23')]=_0x29b64e[_0x01e4('0x23')]?_0x29b64e[_0x01e4('0x23')]:undefined;this[_0x01e4('0x24')]=_0x29b64e[_0x01e4('0x23')]?_0x29b64e[_0x01e4('0x23')]['name']:undefined;this[_0x01e4('0x25')]=_0x29b64e['dialAMDActive']||![];this[_0x01e4('0x26')]=_0x29b64e[_0x01e4('0x26')];this['dialAMDGreeting']=_0x29b64e[_0x01e4('0x27')];this[_0x01e4('0x28')]=_0x29b64e[_0x01e4('0x28')];this['dialAMDTotalAnalysisTime']=_0x29b64e[_0x01e4('0x29')];this[_0x01e4('0x2a')]=_0x29b64e['dialAMDMinWordLength'];this[_0x01e4('0x2b')]=_0x29b64e[_0x01e4('0x2b')];this['dialAMDMaximumNumberOfWords']=_0x29b64e[_0x01e4('0x2c')];this[_0x01e4('0x2d')]=_0x29b64e[_0x01e4('0x2d')];this[_0x01e4('0x2e')]=_0x29b64e[_0x01e4('0x2e')];}module[_0x01e4('0x2f')]=Campaign;
\ No newline at end of file
+var _0xdb8f=['dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','exports','name','type','campaign','originated','temp','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdNumber','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject'];(function(_0x335d41,_0x54477b){var _0x24fd53=function(_0x50c1b0){while(--_0x50c1b0){_0x335d41['push'](_0x335d41['shift']());}};_0x24fd53(++_0x54477b);}(_0xdb8f,0x1a3));var _0xfdb8=function(_0x119ded,_0x497e72){_0x119ded=_0x119ded-0x0;var _0x22108b=_0xdb8f[_0x119ded];return _0x22108b;};'use strict';function Campaign(_0x5b2c4b){this['id']=_0x5b2c4b['id']||0x0;this[_0xfdb8('0x0')]=_0x5b2c4b[_0xfdb8('0x0')]||'';this[_0xfdb8('0x1')]=_0x5b2c4b['type']||_0xfdb8('0x2');this[_0xfdb8('0x3')]=0x0;this[_0xfdb8('0x4')]=0x0;this[_0xfdb8('0x5')]=0x0;this[_0xfdb8('0x6')]=0x0;this[_0xfdb8('0x7')]='';this[_0xfdb8('0x8')]=!![];this[_0xfdb8('0x9')]=_0x5b2c4b[_0xfdb8('0x9')];this[_0xfdb8('0xa')]=_0x5b2c4b[_0xfdb8('0xa')];this[_0xfdb8('0xb')]=_0x5b2c4b[_0xfdb8('0xb')]||null;this[_0xfdb8('0xc')]=_0x5b2c4b['dialGlobalInterval']?_0x5b2c4b[_0xfdb8('0xc')]:null;this['dialOriginateCallerIdName']=_0x5b2c4b['dialOriginateCallerIdName'];this[_0xfdb8('0xd')]=_0x5b2c4b[_0xfdb8('0xd')];this['dialOriginateTimeout']=_0x5b2c4b['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0x5b2c4b['dialCongestionMaxRetry'];this[_0xfdb8('0xe')]=_0x5b2c4b[_0xfdb8('0xe')];this[_0xfdb8('0xf')]=_0x5b2c4b[_0xfdb8('0xf')];this[_0xfdb8('0x10')]=_0x5b2c4b[_0xfdb8('0x10')];this[_0xfdb8('0x11')]=_0x5b2c4b[_0xfdb8('0x11')];this['dialNoAnswerRetryFrequency']=_0x5b2c4b[_0xfdb8('0x12')];this[_0xfdb8('0x13')]=_0x5b2c4b['dialGlobalMaxRetry'];this[_0xfdb8('0x14')]=_0x5b2c4b[_0xfdb8('0x14')]||0x3;this[_0xfdb8('0x15')]=_0x5b2c4b['dialNoSuchNumberRetryFrequency']||0x96;this[_0xfdb8('0x16')]=_0x5b2c4b[_0xfdb8('0x16')]||0x3;this[_0xfdb8('0x17')]=_0x5b2c4b['dialDropRetryFrequency']||0x96;this[_0xfdb8('0x18')]=_0x5b2c4b[_0xfdb8('0x18')]||0x3;this['dialAbandonedRetryFrequency']=_0x5b2c4b[_0xfdb8('0x19')]||0x96;this[_0xfdb8('0x1a')]=_0x5b2c4b[_0xfdb8('0x1a')]||0x3;this['dialMachineRetryFrequency']=_0x5b2c4b[_0xfdb8('0x1b')]||0x96;this[_0xfdb8('0x1c')]=_0x5b2c4b[_0xfdb8('0x1c')]||0x3;this[_0xfdb8('0x1d')]=_0x5b2c4b['dialAgentRejectRetryFrequency']||0x96;this['dialOrderByScheduledAt']=_0x5b2c4b[_0xfdb8('0x1e')]||_0xfdb8('0x1f');this[_0xfdb8('0x20')]=_0x5b2c4b['dialPrefix']||undefined;this[_0xfdb8('0x21')]=_0x5b2c4b[_0xfdb8('0x21')]||undefined;this[_0xfdb8('0x22')]=_0x5b2c4b[_0xfdb8('0x22')]||undefined;this[_0xfdb8('0x23')]=_0x5b2c4b[_0xfdb8('0x23')]?_0x5b2c4b[_0xfdb8('0x23')]:undefined;this[_0xfdb8('0x24')]=_0x5b2c4b['Trunk']?_0x5b2c4b[_0xfdb8('0x24')]:undefined;this[_0xfdb8('0x25')]=_0x5b2c4b[_0xfdb8('0x25')]?_0x5b2c4b['Interval']:undefined;this['SquareProject']=_0x5b2c4b['SquareProject']?_0x5b2c4b[_0xfdb8('0x26')]:undefined;this[_0xfdb8('0x27')]=_0x5b2c4b[_0xfdb8('0x26')]?_0x5b2c4b[_0xfdb8('0x26')][_0xfdb8('0x0')]:undefined;this[_0xfdb8('0x28')]=_0x5b2c4b[_0xfdb8('0x28')]||![];this[_0xfdb8('0x29')]=_0x5b2c4b['dialAMDInitialSilence'];this[_0xfdb8('0x2a')]=_0x5b2c4b[_0xfdb8('0x2a')];this[_0xfdb8('0x2b')]=_0x5b2c4b['dialAMDAfterGreetingSilence'];this[_0xfdb8('0x2c')]=_0x5b2c4b[_0xfdb8('0x2c')];this[_0xfdb8('0x2d')]=_0x5b2c4b[_0xfdb8('0x2d')];this[_0xfdb8('0x2e')]=_0x5b2c4b[_0xfdb8('0x2e')];this['dialAMDMaximumNumberOfWords']=_0x5b2c4b[_0xfdb8('0x2f')];this[_0xfdb8('0x30')]=_0x5b2c4b[_0xfdb8('0x30')];this[_0xfdb8('0x31')]=_0x5b2c4b[_0xfdb8('0x31')];}module[_0xfdb8('0x32')]=Campaign;
\ No newline at end of file
index 8fc3c37..bacd71e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbde=['answertime','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime','tag','monitor','monitors','transferconnectedlinenum','transferType','exports','starttime','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','uniqueid','linkedid','answered'];(function(_0x4a0d15,_0x13f341){var _0x1a6a40=function(_0x20986d){while(--_0x20986d){_0x4a0d15['push'](_0x4a0d15['shift']());}};_0x1a6a40(++_0x13f341);}(_0xcbde,0x141));var _0xecbd=function(_0x547329,_0x91e36a){_0x547329=_0x547329-0x0;var _0x1b4501=_0xcbde[_0x547329];return _0x1b4501;};'use strict';function Channel(){this[_0xecbd('0x0')]=null;this['channel']='';this[_0xecbd('0x1')]='';this[_0xecbd('0x2')]=0x0;this[_0xecbd('0x3')]='';this[_0xecbd('0x4')]=undefined;this[_0xecbd('0x5')]=undefined;this['accountcode']=0x0;this['context']='';this[_0xecbd('0x6')]=0x0;this[_0xecbd('0x7')]=0x0;this['exten']=0x0;this[_0xecbd('0x8')]=![];this[_0xecbd('0x9')]=null;this['endtime']=null;this['unmanaged']=![];this[_0xecbd('0xa')]=![];this[_0xecbd('0xb')]='';this[_0xecbd('0xc')]='';this[_0xecbd('0xd')]=0x0;this[_0xecbd('0xe')]=0x0;this[_0xecbd('0xf')]=0x0;this['type']=null;this[_0xecbd('0x10')]=null;this['disposition']=null;this[_0xecbd('0x11')]=![];this['monitorFilename']=null;this['queue']=null;this[_0xecbd('0x12')]=[];this['transfercalleridnum']=undefined;this[_0xecbd('0x13')]=undefined;this[_0xecbd('0x14')]=undefined;this['mohtime']=0x0;}module[_0xecbd('0x15')]=Channel;
\ No newline at end of file
+var _0xc401=['holdtime','type','disposition','monitorFilename','queue','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','channel','destinationchannel','calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','context','uniqueid','exten','answered','unmanaged','abandoned','lastdata','duration'];(function(_0xceb25d,_0x8b481f){var _0x418984=function(_0x3c3561){while(--_0x3c3561){_0xceb25d['push'](_0xceb25d['shift']());}};_0x418984(++_0x8b481f);}(_0xc401,0x15d));var _0x1c40=function(_0x289f22,_0x53ac92){_0x289f22=_0x289f22-0x0;var _0x4a63ae=_0xc401[_0x289f22];return _0x4a63ae;};'use strict';function Channel(){this['starttime']=null;this[_0x1c40('0x0')]='';this[_0x1c40('0x1')]='';this[_0x1c40('0x2')]=0x0;this[_0x1c40('0x3')]='';this[_0x1c40('0x4')]=undefined;this[_0x1c40('0x5')]=undefined;this[_0x1c40('0x6')]=0x0;this[_0x1c40('0x7')]='';this[_0x1c40('0x8')]=0x0;this['linkedid']=0x0;this[_0x1c40('0x9')]=0x0;this[_0x1c40('0xa')]=![];this['answertime']=null;this['endtime']=null;this[_0x1c40('0xb')]=![];this[_0x1c40('0xc')]=![];this['lastapplication']='';this[_0x1c40('0xd')]='';this[_0x1c40('0xe')]=0x0;this['billableseconds']=0x0;this[_0x1c40('0xf')]=0x0;this[_0x1c40('0x10')]=null;this['tag']=null;this[_0x1c40('0x11')]=null;this['monitor']=![];this[_0x1c40('0x12')]=null;this[_0x1c40('0x13')]=null;this[_0x1c40('0x14')]=[];this[_0x1c40('0x15')]=undefined;this[_0x1c40('0x16')]=undefined;this[_0x1c40('0x17')]=undefined;this[_0x1c40('0x18')]=0x0;}module[_0x1c40('0x19')]=Channel;
\ No newline at end of file
index 3cf3060..3ea9ab1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2eb=['remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa2eb,0x1de));var _0xba2e=function(_0x1b4057,_0x58212a){_0x1b4057=_0x1b4057-0x0;var _0x1d749a=_0xa2eb[_0x1b4057];return _0x1d749a;};'use strict';function DeskAccount(_0x40134a){this['id']=_0x40134a['id']||0x0;this[_0xba2e('0x0')]=_0x40134a[_0xba2e('0x0')]||'';this['username']=_0x40134a[_0xba2e('0x1')]||'';this[_0xba2e('0x2')]=_0x40134a[_0xba2e('0x2')]||'';this[_0xba2e('0x3')]=_0x40134a[_0xba2e('0x3')]||'';this[_0xba2e('0x4')]=_0x40134a[_0xba2e('0x4')]||'';this[_0xba2e('0x5')]=_0x40134a[_0xba2e('0x5')]||'';this[_0xba2e('0x6')]=_0x40134a[_0xba2e('0x6')]||'';this[_0xba2e('0x7')]=_0x40134a[_0xba2e('0x7')]||'';this[_0xba2e('0x8')]=_0x40134a[_0xba2e('0x8')]||'';this[_0xba2e('0x9')]=_0x40134a[_0xba2e('0x9')]||'';this[_0xba2e('0xa')]=_0x40134a[_0xba2e('0xa')]||'';this[_0xba2e('0xb')]=_0x40134a[_0xba2e('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x171f=['tokenSecret','type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x171f,0x1b2));var _0xf171=function(_0x28d225,_0x43be18){_0x28d225=_0x28d225-0x0;var _0x1f79e1=_0x171f[_0x28d225];return _0x1f79e1;};'use strict';function DeskAccount(_0x2e7acf){this['id']=_0x2e7acf['id']||0x0;this[_0xf171('0x0')]=_0x2e7acf['name']||'';this[_0xf171('0x1')]=_0x2e7acf[_0xf171('0x1')]||'';this['remoteUri']=_0x2e7acf[_0xf171('0x2')]||'';this[_0xf171('0x3')]=_0x2e7acf[_0xf171('0x3')]||'';this[_0xf171('0x4')]=_0x2e7acf[_0xf171('0x4')]||'';this[_0xf171('0x5')]=_0x2e7acf[_0xf171('0x5')]||'';this[_0xf171('0x6')]=_0x2e7acf[_0xf171('0x6')]||'';this['token']=_0x2e7acf[_0xf171('0x7')]||'';this[_0xf171('0x8')]=_0x2e7acf[_0xf171('0x8')]||'';this[_0xf171('0x9')]=_0x2e7acf[_0xf171('0x9')]||'';this[_0xf171('0xa')]=_0x2e7acf[_0xf171('0xa')]||'';this[_0xf171('0xb')]=_0x2e7acf[_0xf171('0xb')]||{};}module[_0xf171('0xc')]=DeskAccount;
\ No newline at end of file
index f5b3970..02865b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25a6=['name','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','exports'];(function(_0x5f364e,_0x31bc7e){var _0x5c6b2c=function(_0x1188e6){while(--_0x1188e6){_0x5f364e['push'](_0x5f364e['shift']());}};_0x5c6b2c(++_0x31bc7e);}(_0x25a6,0x1c3));var _0x625a=function(_0xbace18,_0x37e865){_0xbace18=_0xbace18-0x0;var _0x5dcc68=_0x25a6[_0xbace18];return _0x5dcc68;};'use strict';function Dynamics365Account(_0x2a60f9){this['id']=_0x2a60f9['id']||0x0;this[_0x625a('0x0')]=_0x2a60f9[_0x625a('0x0')]||'';this['username']=_0x2a60f9['username']||'';this[_0x625a('0x1')]=_0x2a60f9[_0x625a('0x1')]||'';this['remoteUri']=_0x2a60f9[_0x625a('0x2')]||'';this[_0x625a('0x3')]=_0x2a60f9[_0x625a('0x3')]||'';this['clientId']=_0x2a60f9[_0x625a('0x4')]||'';this[_0x625a('0x5')]=_0x2a60f9[_0x625a('0x5')]||{};this[_0x625a('0x6')]=_0x2a60f9['serverUrl']||'';this[_0x625a('0x7')]=_0x2a60f9[_0x625a('0x7')]||![];this['Configurations']=_0x2a60f9[_0x625a('0x8')]||{};this['CloudProvider']=_0x2a60f9[_0x625a('0x9')]||{};}module[_0x625a('0xa')]=Dynamics365Account;
\ No newline at end of file
+var _0x9e72=['clientId','clientSecret','serverUrl','modernAuthentication','Configurations','CloudProvider','name','username','password','remoteUri','tenantId'];(function(_0x405a1f,_0x446aa3){var _0x4fd010=function(_0xc2ed83){while(--_0xc2ed83){_0x405a1f['push'](_0x405a1f['shift']());}};_0x4fd010(++_0x446aa3);}(_0x9e72,0x150));var _0x29e7=function(_0x475053,_0x2144ac){_0x475053=_0x475053-0x0;var _0x1a7b9d=_0x9e72[_0x475053];return _0x1a7b9d;};'use strict';function Dynamics365Account(_0x198f57){this['id']=_0x198f57['id']||0x0;this[_0x29e7('0x0')]=_0x198f57[_0x29e7('0x0')]||'';this[_0x29e7('0x1')]=_0x198f57['username']||'';this[_0x29e7('0x2')]=_0x198f57['password']||'';this['remoteUri']=_0x198f57[_0x29e7('0x3')]||'';this[_0x29e7('0x4')]=_0x198f57[_0x29e7('0x4')]||'';this[_0x29e7('0x5')]=_0x198f57[_0x29e7('0x5')]||'';this[_0x29e7('0x6')]=_0x198f57[_0x29e7('0x6')]||{};this[_0x29e7('0x7')]=_0x198f57[_0x29e7('0x7')]||'';this['modernAuthentication']=_0x198f57[_0x29e7('0x8')]||![];this[_0x29e7('0x9')]=_0x198f57[_0x29e7('0x9')]||{};this['CloudProvider']=_0x198f57[_0x29e7('0xa')]||{};}module['exports']=Dynamics365Account;
\ No newline at end of file
index eb1dbba..47d842e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1f3c=['SIP','Trunk','ListId','key','exports','name','description','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech'];(function(_0x2a95ac,_0x39462b){var _0x34595b=function(_0x270080){while(--_0x270080){_0x2a95ac['push'](_0x2a95ac['shift']());}};_0x34595b(++_0x39462b);}(_0x1f3c,0xd7));var _0xc1f3=function(_0x376b45,_0x5964fb){_0x376b45=_0x376b45-0x0;var _0x2341b3=_0x1f3c[_0x376b45];return _0x2341b3;};'use strict';function FaxAccount(_0x5a574b){this['id']=_0x5a574b['id']||0x0;this[_0xc1f3('0x0')]=_0x5a574b[_0xc1f3('0x0')]||'';this[_0xc1f3('0x1')]=_0x5a574b[_0xc1f3('0x1')];this['ecm']=_0x5a574b['ecm'];this['headerinfo']=_0x5a574b['headerinfo'];this['localstationid']=_0x5a574b['localstationid'];this[_0xc1f3('0x2')]=_0x5a574b['minrate']||0x960;this[_0xc1f3('0x3')]=_0x5a574b[_0xc1f3('0x3')]||0x3840;this['modem']=_0x5a574b[_0xc1f3('0x4')]||_0xc1f3('0x5');this['gateway']=_0x5a574b[_0xc1f3('0x6')]||'no';this[_0xc1f3('0x7')]=_0x5a574b[_0xc1f3('0x7')]||'no';this[_0xc1f3('0x8')]=_0x5a574b[_0xc1f3('0x8')]||0x1388;this[_0xc1f3('0x9')]=_0x5a574b[_0xc1f3('0x9')]||_0xc1f3('0xa');this[_0xc1f3('0xb')]=_0x5a574b[_0xc1f3('0xb')]?_0x5a574b[_0xc1f3('0xb')]:undefined;this[_0xc1f3('0xc')]=_0x5a574b['ListId'];this[_0xc1f3('0xd')]=_0x5a574b['key'];}module[_0xc1f3('0xe')]=FaxAccount;
\ No newline at end of file
+var _0x7fb9=['ecm','headerinfo','localstationid','minrate','maxrate','v17,v27,v29','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','name','description'];(function(_0x4e9861,_0x25fe5f){var _0x49802f=function(_0x76932){while(--_0x76932){_0x4e9861['push'](_0x4e9861['shift']());}};_0x49802f(++_0x25fe5f);}(_0x7fb9,0x1ae));var _0x97fb=function(_0x5e3b04,_0xbb6795){_0x5e3b04=_0x5e3b04-0x0;var _0x1fc44d=_0x7fb9[_0x5e3b04];return _0x1fc44d;};'use strict';function FaxAccount(_0x52db8c){this['id']=_0x52db8c['id']||0x0;this['name']=_0x52db8c[_0x97fb('0x0')]||'';this[_0x97fb('0x1')]=_0x52db8c[_0x97fb('0x1')];this['ecm']=_0x52db8c[_0x97fb('0x2')];this[_0x97fb('0x3')]=_0x52db8c[_0x97fb('0x3')];this[_0x97fb('0x4')]=_0x52db8c[_0x97fb('0x4')];this[_0x97fb('0x5')]=_0x52db8c[_0x97fb('0x5')]||0x960;this['maxrate']=_0x52db8c[_0x97fb('0x6')]||0x3840;this['modem']=_0x52db8c['modem']||_0x97fb('0x7');this[_0x97fb('0x8')]=_0x52db8c[_0x97fb('0x8')]||'no';this[_0x97fb('0x9')]=_0x52db8c['faxdetect']||'no';this['t38timeout']=_0x52db8c[_0x97fb('0xa')]||0x1388;this[_0x97fb('0xb')]=_0x52db8c[_0x97fb('0xb')]||_0x97fb('0xc');this['Trunk']=_0x52db8c[_0x97fb('0xd')]?_0x52db8c['Trunk']:undefined;this[_0x97fb('0xe')]=_0x52db8c['ListId'];this[_0x97fb('0xf')]=_0x52db8c[_0x97fb('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
index 2955bac..007c3af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb94=['remoteUri','serverUrl','Configurations','name','username','apiKey','token'];(function(_0x583b31,_0x3ee6da){var _0xc121a8=function(_0x99cab1){while(--_0x99cab1){_0x583b31['push'](_0x583b31['shift']());}};_0xc121a8(++_0x3ee6da);}(_0xbb94,0x1d1));var _0x4bb9=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xbb94[_0x3b380d];return _0x54502b;};'use strict';function FreshdeskAccount(_0x18f09c){this['id']=_0x18f09c['id']||0x0;this['name']=_0x18f09c[_0x4bb9('0x0')]||'';this[_0x4bb9('0x1')]=_0x18f09c['username']||'';this[_0x4bb9('0x2')]=_0x18f09c[_0x4bb9('0x3')]||'';this['remoteUri']=_0x18f09c[_0x4bb9('0x4')]||'';this['serverUrl']=_0x18f09c[_0x4bb9('0x5')]||'';this[_0x4bb9('0x6')]=_0x18f09c['Configurations']||{};}module['exports']=FreshdeskAccount;
\ No newline at end of file
+var _0xf5eb=['Configurations','exports','name','username','apiKey','remoteUri','serverUrl'];(function(_0x17e38a,_0x100748){var _0x60c392=function(_0x8ac392){while(--_0x8ac392){_0x17e38a['push'](_0x17e38a['shift']());}};_0x60c392(++_0x100748);}(_0xf5eb,0x17c));var _0xbf5e=function(_0x599e7d,_0x19581e){_0x599e7d=_0x599e7d-0x0;var _0x156564=_0xf5eb[_0x599e7d];return _0x156564;};'use strict';function FreshdeskAccount(_0x18d78a){this['id']=_0x18d78a['id']||0x0;this['name']=_0x18d78a[_0xbf5e('0x0')]||'';this[_0xbf5e('0x1')]=_0x18d78a[_0xbf5e('0x1')]||'';this[_0xbf5e('0x2')]=_0x18d78a['token']||'';this[_0xbf5e('0x3')]=_0x18d78a[_0xbf5e('0x3')]||'';this[_0xbf5e('0x4')]=_0x18d78a[_0xbf5e('0x4')]||'';this[_0xbf5e('0x5')]=_0x18d78a[_0xbf5e('0x5')]||{};}module[_0xbf5e('0x6')]=FreshdeskAccount;
\ No newline at end of file
index 8655e44..423169e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6d=['token','remoteUri','serverUrl','exports','name','username','apiKey'];(function(_0x4e7a80,_0x19c088){var _0x5e710b=function(_0x2a5b82){while(--_0x2a5b82){_0x4e7a80['push'](_0x4e7a80['shift']());}};_0x5e710b(++_0x19c088);}(_0x3d6d,0xb3));var _0xd3d6=function(_0x4ca3b4,_0x2450bc){_0x4ca3b4=_0x4ca3b4-0x0;var _0x51ea64=_0x3d6d[_0x4ca3b4];return _0x51ea64;};'use strict';function FreshsalesAccount(_0x249683){this['id']=_0x249683['id']||0x0;this[_0xd3d6('0x0')]=_0x249683[_0xd3d6('0x0')]||'';this[_0xd3d6('0x1')]=_0x249683[_0xd3d6('0x1')]||'';this[_0xd3d6('0x2')]=_0x249683[_0xd3d6('0x3')]||'';this[_0xd3d6('0x4')]=_0x249683[_0xd3d6('0x4')]||'';this[_0xd3d6('0x5')]=_0x249683[_0xd3d6('0x5')]||'';this['Configurations']=_0x249683['Configurations']||{};}module[_0xd3d6('0x6')]=FreshsalesAccount;
\ No newline at end of file
+var _0xa992=['remoteUri','serverUrl','Configurations','exports','name','username','apiKey','token'];(function(_0x115001,_0x5ead11){var _0x201665=function(_0x530009){while(--_0x530009){_0x115001['push'](_0x115001['shift']());}};_0x201665(++_0x5ead11);}(_0xa992,0x18c));var _0x2a99=function(_0x3297c1,_0x47e45d){_0x3297c1=_0x3297c1-0x0;var _0x58c956=_0xa992[_0x3297c1];return _0x58c956;};'use strict';function FreshsalesAccount(_0x90172){this['id']=_0x90172['id']||0x0;this[_0x2a99('0x0')]=_0x90172[_0x2a99('0x0')]||'';this[_0x2a99('0x1')]=_0x90172['username']||'';this[_0x2a99('0x2')]=_0x90172[_0x2a99('0x3')]||'';this[_0x2a99('0x4')]=_0x90172[_0x2a99('0x4')]||'';this[_0x2a99('0x5')]=_0x90172[_0x2a99('0x5')]||'';this[_0x2a99('0x6')]=_0x90172[_0x2a99('0x6')]||{};}module[_0x2a99('0x7')]=FreshsalesAccount;
\ No newline at end of file
index 357d192..0ded0b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd0c=['exten','priority','holdtime','assigned','motionChannel','voice','variables','type','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','count','queuecallerabandonAt','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','channel','connectedlinenum','accountcode'];(function(_0x507887,_0x1f857b){var _0x5785c9=function(_0x420137){while(--_0x420137){_0x507887['push'](_0x507887['shift']());}};_0x5785c9(++_0x1f857b);}(_0xbd0c,0xf7));var _0xcbd0=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0xbd0c[_0x6c993a];return _0x27f547;};'use strict';function QueueReport(){this[_0xcbd0('0x0')]=_0xcbd0('0x1');this[_0xcbd0('0x2')]='';this[_0xcbd0('0x3')]='';this[_0xcbd0('0x4')]='';this[_0xcbd0('0x5')]='';this[_0xcbd0('0x6')]=null;this[_0xcbd0('0x7')]=null;this[_0xcbd0('0x8')]=0x1;this[_0xcbd0('0x9')]=0x1;this['queuecallerabandon']=![];this[_0xcbd0('0xa')]=null;this['queuecallercomplete']=![];this[_0xcbd0('0xb')]=null;this[_0xcbd0('0xc')]=![];this[_0xcbd0('0xd')]=null;this['originalposition']=0x1;this[_0xcbd0('0xe')]='';this[_0xcbd0('0xf')]='';this['connectedlinename']='';this[_0xcbd0('0x10')]='';this['context']='';this[_0xcbd0('0x11')]='';this[_0xcbd0('0x12')]='';this[_0xcbd0('0x13')]=0x0;this[_0xcbd0('0x14')]=![];this['lastAssignedTo']='';this[_0xcbd0('0x15')]=_0xcbd0('0x16');this['mohtime']=0x0;this[_0xcbd0('0x17')]={};}module['exports']=QueueReport;
\ No newline at end of file
+var _0x91fa=['queuecallerexit','channel','connectedlinenum','connectedlinename','context','exten','priority','assigned','motionChannel','voice','mohtime','variables','exports','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','position','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt'];(function(_0xc67528,_0x24e2fb){var _0x38e26d=function(_0x1b0efe){while(--_0x1b0efe){_0xc67528['push'](_0xc67528['shift']());}};_0x38e26d(++_0x24e2fb);}(_0x91fa,0xa3));var _0xa91f=function(_0x4bb593,_0x272ed0){_0x4bb593=_0x4bb593-0x0;var _0x2da2d8=_0x91fa[_0x4bb593];return _0x2da2d8;};'use strict';function QueueReport(){this['type']=_0xa91f('0x0');this[_0xa91f('0x1')]='';this[_0xa91f('0x2')]='';this[_0xa91f('0x3')]='';this[_0xa91f('0x4')]='';this[_0xa91f('0x5')]=null;this[_0xa91f('0x6')]=null;this[_0xa91f('0x7')]=0x1;this['count']=0x1;this[_0xa91f('0x8')]=![];this[_0xa91f('0x9')]=null;this[_0xa91f('0xa')]=![];this[_0xa91f('0xb')]=null;this[_0xa91f('0xc')]=![];this['queuecallerexitAt']=null;this['originalposition']=0x1;this[_0xa91f('0xd')]='';this[_0xa91f('0xe')]='';this[_0xa91f('0xf')]='';this['accountcode']='';this[_0xa91f('0x10')]='';this[_0xa91f('0x11')]='';this[_0xa91f('0x12')]='';this['holdtime']=0x0;this[_0xa91f('0x13')]=![];this['lastAssignedTo']='';this[_0xa91f('0x14')]=_0xa91f('0x15');this['routealias']=null;this[_0xa91f('0x16')]=0x0;this[_0xa91f('0x17')]={};}module[_0xa91f('0x18')]=QueueReport;
\ No newline at end of file
index 38241ce..e072948 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeae8=['securityToken','type','integrationTab','serverUrl','Configurations','exports','name','username','remoteUri','password','clientId','clientSecret'];(function(_0x53b53e,_0x498437){var _0xbb6179=function(_0x3975eb){while(--_0x3975eb){_0x53b53e['push'](_0x53b53e['shift']());}};_0xbb6179(++_0x498437);}(_0xeae8,0x66));var _0x8eae=function(_0x4d8a97,_0x1551ae){_0x4d8a97=_0x4d8a97-0x0;var _0x5e07ee=_0xeae8[_0x4d8a97];return _0x5e07ee;};'use strict';function SalesforceAccount(_0x510ebf){this['id']=_0x510ebf['id']||0x0;this[_0x8eae('0x0')]=_0x510ebf[_0x8eae('0x0')]||'';this['username']=_0x510ebf[_0x8eae('0x1')]||'';this['remoteUri']=_0x510ebf[_0x8eae('0x2')]||'';this['password']=_0x510ebf[_0x8eae('0x3')]||'';this[_0x8eae('0x4')]=_0x510ebf[_0x8eae('0x4')]||'';this[_0x8eae('0x5')]=_0x510ebf[_0x8eae('0x5')]||'';this[_0x8eae('0x6')]=_0x510ebf[_0x8eae('0x6')]||'';this[_0x8eae('0x7')]=_0x510ebf[_0x8eae('0x7')]||_0x8eae('0x8');this[_0x8eae('0x9')]=_0x510ebf['serverUrl']||'';this['Configurations']=_0x510ebf[_0x8eae('0xa')]||{};}module[_0x8eae('0xb')]=SalesforceAccount;
\ No newline at end of file
+var _0x8f1a=['username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl','Configurations','exports','name'];(function(_0x1b6c6d,_0x2983b0){var _0x290d9d=function(_0x5b9779){while(--_0x5b9779){_0x1b6c6d['push'](_0x1b6c6d['shift']());}};_0x290d9d(++_0x2983b0);}(_0x8f1a,0xba));var _0xa8f1=function(_0x5e5319,_0xeb938e){_0x5e5319=_0x5e5319-0x0;var _0x5636f7=_0x8f1a[_0x5e5319];return _0x5636f7;};'use strict';function SalesforceAccount(_0x1941f7){this['id']=_0x1941f7['id']||0x0;this[_0xa8f1('0x0')]=_0x1941f7[_0xa8f1('0x0')]||'';this[_0xa8f1('0x1')]=_0x1941f7['username']||'';this['remoteUri']=_0x1941f7[_0xa8f1('0x2')]||'';this[_0xa8f1('0x3')]=_0x1941f7[_0xa8f1('0x3')]||'';this[_0xa8f1('0x4')]=_0x1941f7[_0xa8f1('0x4')]||'';this[_0xa8f1('0x5')]=_0x1941f7[_0xa8f1('0x5')]||'';this[_0xa8f1('0x6')]=_0x1941f7[_0xa8f1('0x6')]||'';this['type']=_0x1941f7[_0xa8f1('0x7')]||'integrationTab';this[_0xa8f1('0x8')]=_0x1941f7[_0xa8f1('0x8')]||'';this[_0xa8f1('0x9')]=_0x1941f7['Configurations']||{};}module[_0xa8f1('0xa')]=SalesforceAccount;
\ No newline at end of file
index 2912604..30b486a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ca=['exports','name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x5848de,_0x480623){var _0xc88fdb=function(_0x5689c5){while(--_0x5689c5){_0x5848de['push'](_0x5848de['shift']());}};_0xc88fdb(++_0x480623);}(_0x77ca,0x174));var _0xa77c=function(_0x667119,_0x13a3d2){_0x667119=_0x667119-0x0;var _0x2274de=_0x77ca[_0x667119];return _0x2274de;};'use strict';function ServicenowAccount(_0x42fbc1){this['id']=_0x42fbc1['id']||0x0;this[_0xa77c('0x0')]=_0x42fbc1[_0xa77c('0x0')]||'';this[_0xa77c('0x1')]=_0x42fbc1[_0xa77c('0x1')]||'';this[_0xa77c('0x2')]=_0x42fbc1[_0xa77c('0x2')]||'';this[_0xa77c('0x3')]=_0x42fbc1[_0xa77c('0x3')]||'';this[_0xa77c('0x4')]=_0x42fbc1[_0xa77c('0x4')]||'';this[_0xa77c('0x5')]=_0x42fbc1['Configurations']||{};}module[_0xa77c('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0x6c6f=['serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x4914e2,_0x48be8f){var _0x2dcd07=function(_0x1a2565){while(--_0x1a2565){_0x4914e2['push'](_0x4914e2['shift']());}};_0x2dcd07(++_0x48be8f);}(_0x6c6f,0xf8));var _0xf6c6=function(_0x6110f8,_0x57b72c){_0x6110f8=_0x6110f8-0x0;var _0x2a5037=_0x6c6f[_0x6110f8];return _0x2a5037;};'use strict';function ServicenowAccount(_0x132ce2){this['id']=_0x132ce2['id']||0x0;this['name']=_0x132ce2[_0xf6c6('0x0')]||'';this[_0xf6c6('0x1')]=_0x132ce2[_0xf6c6('0x1')]||'';this[_0xf6c6('0x2')]=_0x132ce2['password']||'';this[_0xf6c6('0x3')]=_0x132ce2[_0xf6c6('0x3')]||'';this['serverUrl']=_0x132ce2[_0xf6c6('0x4')]||'';this['Configurations']=_0x132ce2[_0xf6c6('0x5')]||{};}module[_0xf6c6('0x6')]=ServicenowAccount;
\ No newline at end of file
index bbe3d9a..c194dc9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2308=['name','username','password','remoteUri','serverUrl','Configurations'];(function(_0x2dadb9,_0x42cfe6){var _0x2f0097=function(_0x21163f){while(--_0x21163f){_0x2dadb9['push'](_0x2dadb9['shift']());}};_0x2f0097(++_0x42cfe6);}(_0x2308,0x108));var _0x8230=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x2308[_0xb0f7c3];return _0x28ea68;};'use strict';function SugarcrmAccount(_0x389b4d){this['id']=_0x389b4d['id']||0x0;this['name']=_0x389b4d[_0x8230('0x0')]||'';this[_0x8230('0x1')]=_0x389b4d[_0x8230('0x1')]||'';this[_0x8230('0x2')]=_0x389b4d[_0x8230('0x2')]||'';this[_0x8230('0x3')]=_0x389b4d[_0x8230('0x3')]||'';this['serverUrl']=_0x389b4d[_0x8230('0x4')]||'';this['Configurations']=_0x389b4d[_0x8230('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0x27d4=['password','remoteUri','serverUrl','Configurations','exports','name','username'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x27d4,0x1cc));var _0x427d=function(_0x19069d,_0x46921e){_0x19069d=_0x19069d-0x0;var _0x39463a=_0x27d4[_0x19069d];return _0x39463a;};'use strict';function SugarcrmAccount(_0x59c110){this['id']=_0x59c110['id']||0x0;this[_0x427d('0x0')]=_0x59c110['name']||'';this[_0x427d('0x1')]=_0x59c110['username']||'';this['password']=_0x59c110[_0x427d('0x2')]||'';this[_0x427d('0x3')]=_0x59c110[_0x427d('0x3')]||'';this[_0x427d('0x4')]=_0x59c110['serverUrl']||'';this[_0x427d('0x5')]=_0x59c110[_0x427d('0x5')]||{};}module[_0x427d('0x6')]=SugarcrmAccount;
\ No newline at end of file
index f368eab..839d44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['status','name','accountcode','state','unknown','stateTime'];(function(_0x3ea913,_0x255df2){var _0x2b4f28=function(_0x48bb25){while(--_0x48bb25){_0x3ea913['push'](_0x3ea913['shift']());}};_0x2b4f28(++_0x255df2);}(_0xd64b,0xc1));var _0xbd64=function(_0x3612d5,_0xba7292){_0x3612d5=_0x3612d5-0x0;var _0x2febbf=_0xd64b[_0x3612d5];return _0x2febbf;};'use strict';function Telephone(_0x272488){this['id']=_0x272488['id']||0x0;this['name']=_0x272488[_0xbd64('0x0')]||'';this['accountcode']=_0x272488[_0xbd64('0x1')]||'';this[_0xbd64('0x2')]=_0xbd64('0x3');this[_0xbd64('0x4')]=0x0;this[_0xbd64('0x5')]='unknown';this['address']='';}module['exports']=Telephone;
\ No newline at end of file
+var _0xa530=['stateTime','status','exports','name','accountcode','state','unknown'];(function(_0x3a7b88,_0x22abc2){var _0x45fc51=function(_0xc7d0ec){while(--_0xc7d0ec){_0x3a7b88['push'](_0x3a7b88['shift']());}};_0x45fc51(++_0x22abc2);}(_0xa530,0x7a));var _0x0a53=function(_0x16bd44,_0x3c91ba){_0x16bd44=_0x16bd44-0x0;var _0x368a61=_0xa530[_0x16bd44];return _0x368a61;};'use strict';function Telephone(_0x4b0855){this['id']=_0x4b0855['id']||0x0;this[_0x0a53('0x0')]=_0x4b0855['name']||'';this[_0x0a53('0x1')]=_0x4b0855[_0x0a53('0x1')]||'';this[_0x0a53('0x2')]=_0x0a53('0x3');this[_0x0a53('0x4')]=0x0;this[_0x0a53('0x5')]='unknown';this['address']='';}module[_0x0a53('0x6')]=Telephone;
\ No newline at end of file
index 5d39d84..ba1df18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x41b6c2,_0x2f494b){var _0x5d3cdd=function(_0x947533){while(--_0x947533){_0x41b6c2['push'](_0x41b6c2['shift']());}};_0x5d3cdd(++_0x2f494b);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xa9e0[_0x5ddb1c];return _0x354adc;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
+var _0xa9e0=['exports','name'];(function(_0x2867e7,_0x411657){var _0x5dbcad=function(_0x395883){while(--_0x395883){_0x2867e7['push'](_0x2867e7['shift']());}};_0x5dbcad(++_0x411657);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5b78e8,_0x55096b){_0x5b78e8=_0x5b78e8-0x0;var _0xf2c321=_0xa9e0[_0x5b78e8];return _0xf2c321;};'use strict';function template(_0x1f0015){this['id']=_0x1f0015['id']||0x0;this[_0x0a9e('0x0')]=_0x1f0015[_0x0a9e('0x0')]||'';this['html']=_0x1f0015['html']||'';}module[_0x0a9e('0x1')]=template;
\ No newline at end of file
index 7663d29..0f2acb2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['Actions','exports','name','channel','voice','status','AllConditions','AnyConditions'];(function(_0x2b152a,_0x3dd988){var _0x2ad4c7=function(_0x2fa97c){while(--_0x2fa97c){_0x2b152a['push'](_0x2b152a['shift']());}};_0x2ad4c7(++_0x3dd988);}(_0xbaf0,0x12a));var _0x0baf=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xbaf0[_0x432682];return _0x463d05;};'use strict';function Trigger(_0x61caa9){this['id']=_0x61caa9['id']||0x0;this[_0x0baf('0x0')]=_0x61caa9[_0x0baf('0x0')]||'';this[_0x0baf('0x1')]=_0x61caa9[_0x0baf('0x1')]||_0x0baf('0x2');this[_0x0baf('0x3')]=_0x61caa9['status']||![];this[_0x0baf('0x4')]=_0x61caa9[_0x0baf('0x4')]||[];this[_0x0baf('0x5')]=_0x61caa9[_0x0baf('0x5')]||[];this[_0x0baf('0x6')]=_0x61caa9[_0x0baf('0x6')]||[];}module[_0x0baf('0x7')]=Trigger;
\ No newline at end of file
+var _0x4fc2=['name','channel','voice','status','AllConditions','AnyConditions','Actions'];(function(_0x4d479c,_0x374518){var _0x322f7f=function(_0x146df6){while(--_0x146df6){_0x4d479c['push'](_0x4d479c['shift']());}};_0x322f7f(++_0x374518);}(_0x4fc2,0x111));var _0x24fc=function(_0x5e8935,_0x3d1365){_0x5e8935=_0x5e8935-0x0;var _0x417bc8=_0x4fc2[_0x5e8935];return _0x417bc8;};'use strict';function Trigger(_0x5ea3ab){this['id']=_0x5ea3ab['id']||0x0;this[_0x24fc('0x0')]=_0x5ea3ab[_0x24fc('0x0')]||'';this[_0x24fc('0x1')]=_0x5ea3ab['channel']||_0x24fc('0x2');this[_0x24fc('0x3')]=_0x5ea3ab[_0x24fc('0x3')]||![];this['AllConditions']=_0x5ea3ab[_0x24fc('0x4')]||[];this[_0x24fc('0x5')]=_0x5ea3ab['AnyConditions']||[];this[_0x24fc('0x6')]=_0x5ea3ab[_0x24fc('0x6')]||[];}module['exports']=Trigger;
\ No newline at end of file
index fbf4e0d..bb2da9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742c=['registrationtime','defaultuser','active','name','state','status','registry','indexOf','split','port','domainport','refresh','stateRegistry','unknown'];(function(_0x1cb46b,_0x2021a8){var _0x56aac6=function(_0x44ca0d){while(--_0x44ca0d){_0x1cb46b['push'](_0x1cb46b['shift']());}};_0x56aac6(++_0x2021a8);}(_0x742c,0xb8));var _0xc742=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0x742c[_0xac151d];return _0x111dba;};'use strict';function Trunk(_0x1d47c4){this['id']=_0x1d47c4['id']||0x0;this[_0xc742('0x0')]=_0x1d47c4[_0xc742('0x0')]||![];this[_0xc742('0x1')]=_0x1d47c4[_0xc742('0x1')]||'';this[_0xc742('0x2')]='unknown';this['stateTime']=0x0;this[_0xc742('0x3')]='unknown';this[_0xc742('0x4')]=_0x1d47c4[_0xc742('0x4')]&&_0x1d47c4[_0xc742('0x4')][_0xc742('0x5')](':')?_0x1d47c4['registry'][_0xc742('0x6')](':')[0x0]:'';this['host']='';this[_0xc742('0x7')]='';this['domain']='';this[_0xc742('0x8')]='';this[_0xc742('0x9')]='';this[_0xc742('0xa')]=_0xc742('0xb');this[_0xc742('0xc')]='';this['address']='';this['defaultuser']=_0x1d47c4[_0xc742('0xd')]||'';}module['exports']=Trunk;
\ No newline at end of file
+var _0xcd67=['exports','active','name','state','stateTime','status','unknown','registry','indexOf','split','host','domain','stateRegistry','defaultuser'];(function(_0x243f2e,_0x4b32dd){var _0x1400c0=function(_0x4b3823){while(--_0x4b3823){_0x243f2e['push'](_0x243f2e['shift']());}};_0x1400c0(++_0x4b32dd);}(_0xcd67,0x197));var _0x7cd6=function(_0x40e0cc,_0x30ef05){_0x40e0cc=_0x40e0cc-0x0;var _0x591d5e=_0xcd67[_0x40e0cc];return _0x591d5e;};'use strict';function Trunk(_0x4da9dd){this['id']=_0x4da9dd['id']||0x0;this[_0x7cd6('0x0')]=_0x4da9dd[_0x7cd6('0x0')]||![];this[_0x7cd6('0x1')]=_0x4da9dd[_0x7cd6('0x1')]||'';this[_0x7cd6('0x2')]='unknown';this[_0x7cd6('0x3')]=0x0;this[_0x7cd6('0x4')]=_0x7cd6('0x5');this[_0x7cd6('0x6')]=_0x4da9dd[_0x7cd6('0x6')]&&_0x4da9dd['registry'][_0x7cd6('0x7')](':')?_0x4da9dd[_0x7cd6('0x6')][_0x7cd6('0x8')](':')[0x0]:'';this[_0x7cd6('0x9')]='';this['port']='';this[_0x7cd6('0xa')]='';this['domainport']='';this['refresh']='';this[_0x7cd6('0xb')]=_0x7cd6('0x5');this['registrationtime']='';this['address']='';this[_0x7cd6('0xc')]=_0x4da9dd[_0x7cd6('0xc')]||'';}module[_0x7cd6('0xd')]=Trunk;
\ No newline at end of file
index 4ad6a5d..5868855 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd9b=['exten','recordingFormat','none','mandatoryDisposition','exports'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xcd9b,0x136));var _0xbcd9=function(_0x13789a,_0x3190d4){_0x13789a=_0x13789a-0x0;var _0x220c15=_0xcd9b[_0x13789a];return _0x220c15;};'use strict';function voiceExtension(_0x1ede57){this['id']=_0x1ede57['id']||0x0;this[_0xbcd9('0x0')]=_0x1ede57[_0xbcd9('0x0')]||'';this[_0xbcd9('0x1')]=_0x1ede57[_0xbcd9('0x1')]||_0xbcd9('0x2');this[_0xbcd9('0x3')]=_0x1ede57[_0xbcd9('0x3')]||![];}module[_0xbcd9('0x4')]=voiceExtension;
\ No newline at end of file
+var _0x7b4b=['recordingFormat','none','mandatoryDisposition','exports','exten'];(function(_0x5d7ae8,_0x48a800){var _0x680da3=function(_0xbe3fa0){while(--_0xbe3fa0){_0x5d7ae8['push'](_0x5d7ae8['shift']());}};_0x680da3(++_0x48a800);}(_0x7b4b,0x10d));var _0xb7b4=function(_0x4e9d3c,_0x1f4b98){_0x4e9d3c=_0x4e9d3c-0x0;var _0x2d0825=_0x7b4b[_0x4e9d3c];return _0x2d0825;};'use strict';function voiceExtension(_0xb75822){this['id']=_0xb75822['id']||0x0;this[_0xb7b4('0x0')]=_0xb75822['exten']||'';this[_0xb7b4('0x1')]=_0xb75822['recordingFormat']||_0xb7b4('0x2');this[_0xb7b4('0x3')]=_0xb75822['mandatoryDisposition']||![];}module[_0xb7b4('0x4')]=voiceExtension;
\ No newline at end of file
index f12beea..d44795b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8bec=['erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','rrmemory','name','monitor_format','type','inbound','waiting','talking','total','answered','sumDuration','sumHoldTime','sumBillable','unmanaged','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','temp','dialTimezone','dialGlobalInterval','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','pTalking','timeout','outboundAnswerCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCalls','erlangCalls'];(function(_0x53add6,_0x4c17a3){var _0x341aeb=function(_0x1cdaf7){while(--_0x1cdaf7){_0x53add6['push'](_0x53add6['shift']());}};_0x341aeb(++_0x4c17a3);}(_0x8bec,0x180));var _0xc8be=function(_0x158f43,_0x1dce4f){_0x158f43=_0x158f43-0x0;var _0x48c1b8=_0x8bec[_0x158f43];return _0x48c1b8;};'use strict';var statusDesc=[_0xc8be('0x0'),_0xc8be('0x1'),'inuse','busy',_0xc8be('0x2'),_0xc8be('0x3'),'ringing',_0xc8be('0x4'),_0xc8be('0x5')];var monitorFormat={'wav':_0xc8be('0x6'),'wav49':_0xc8be('0x7'),'gsm':_0xc8be('0x8')};var strategy={'rrmemory':_0xc8be('0x9'),'roundrobin':'roundrobin'};function VoiceQueue(_0x3d8cc2){this['id']=_0x3d8cc2['id']||0x0;this[_0xc8be('0xa')]=_0x3d8cc2[_0xc8be('0xa')]||'';this[_0xc8be('0xb')]=_0x3d8cc2[_0xc8be('0xb')]||'';this[_0xc8be('0xc')]=_0x3d8cc2[_0xc8be('0xc')]||_0xc8be('0xd');this[_0xc8be('0xe')]=0x0;this[_0xc8be('0xf')]=0x0;this[_0xc8be('0x10')]=0x0;this[_0xc8be('0x11')]=0x0;this[_0xc8be('0x12')]=0x0;this[_0xc8be('0x13')]=0x0;this[_0xc8be('0x14')]=0x0;this[_0xc8be('0x15')]=0x0;this[_0xc8be('0x16')]=0x0;this[_0xc8be('0x17')]=0x0;this[_0xc8be('0x18')]=0x0;this[_0xc8be('0x19')]=_0x3d8cc2[_0xc8be('0x19')]||![];this[_0xc8be('0x1a')]=_0x3d8cc2[_0xc8be('0x1a')]||0xa;this[_0xc8be('0x1b')]=_0x3d8cc2[_0xc8be('0x1b')]||'no';this[_0xc8be('0x1c')]=!![];this[_0xc8be('0x1d')]='';this['originated']=0x0;this[_0xc8be('0x1e')]=0x0;this['dialTimezone']=_0x3d8cc2[_0xc8be('0x1f')]||null;this[_0xc8be('0x20')]=_0x3d8cc2[_0xc8be('0x20')]?_0x3d8cc2['dialGlobalInterval']:null;this[_0xc8be('0x21')]=_0x3d8cc2[_0xc8be('0x21')];this['dialMethod']=_0x3d8cc2[_0xc8be('0x22')]||'progressive';this[_0xc8be('0x23')]=_0x3d8cc2[_0xc8be('0x23')]||0x0;this[_0xc8be('0x24')]=_0x3d8cc2[_0xc8be('0x24')]||0x0;this[_0xc8be('0x25')]=_0x3d8cc2[_0xc8be('0x25')]||0x1;this['dialPredictiveOptimization']=_0x3d8cc2[_0xc8be('0x26')]||_0xc8be('0x27');this[_0xc8be('0x28')]=_0x3d8cc2[_0xc8be('0x28')]||0.03;this['dialPredictiveInterval']=_0x3d8cc2['dialPredictiveInterval']||0x258;this[_0xc8be('0x29')]=_0x3d8cc2[_0xc8be('0x29')]||_0xc8be('0x2a');this[_0xc8be('0x2b')]=_0x3d8cc2['dialOriginateCallerIdNumber']||_0xc8be('0x2a');this[_0xc8be('0x2c')]=_0x3d8cc2['dialOriginateTimeout']||0x1e;this[_0xc8be('0x2d')]=_0x3d8cc2['dialQueueOptions']||_0xc8be('0x2e');this[_0xc8be('0x2f')]=_0x3d8cc2[_0xc8be('0x2f')]||0x3;this['dialQueueProject']=_0x3d8cc2[_0xc8be('0x30')]||undefined;this['dialCongestionMaxRetry']=_0x3d8cc2[_0xc8be('0x31')]||0x3;this[_0xc8be('0x32')]=_0x3d8cc2[_0xc8be('0x32')]||0x96;this[_0xc8be('0x33')]=_0x3d8cc2[_0xc8be('0x33')]||0x3;this[_0xc8be('0x34')]=_0x3d8cc2[_0xc8be('0x34')]||0x96;this['dialNoAnswerMaxRetry']=_0x3d8cc2[_0xc8be('0x35')]||0x3;this[_0xc8be('0x36')]=_0x3d8cc2[_0xc8be('0x36')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x3d8cc2['dialNoSuchNumberMaxRetry']||0x3;this[_0xc8be('0x37')]=_0x3d8cc2[_0xc8be('0x37')]||0x96;this[_0xc8be('0x38')]=_0x3d8cc2['dialDropMaxRetry']||0x3;this[_0xc8be('0x39')]=_0x3d8cc2['dialDropRetryFrequency']||0x96;this[_0xc8be('0x3a')]=_0x3d8cc2['dialAbandonedMaxRetry']||0x3;this[_0xc8be('0x3b')]=_0x3d8cc2[_0xc8be('0x3b')]||0x96;this[_0xc8be('0x3c')]=_0x3d8cc2[_0xc8be('0x3c')]||0x3;this[_0xc8be('0x3d')]=_0x3d8cc2[_0xc8be('0x3d')]||0x96;this[_0xc8be('0x3e')]=_0x3d8cc2[_0xc8be('0x3e')]||0x3;this[_0xc8be('0x3f')]=_0x3d8cc2[_0xc8be('0x3f')]||0x96;this['callAdditionalPhoneAfterMin']=_0x3d8cc2[_0xc8be('0x40')]||0x3;this[_0xc8be('0x41')]=_0x3d8cc2['dialGlobalMaxRetry']||0x4;this['Trunk']=_0x3d8cc2[_0xc8be('0x42')]?_0x3d8cc2['Trunk']:undefined;this['TrunkBackup']=_0x3d8cc2[_0xc8be('0x43')]?_0x3d8cc2[_0xc8be('0x43')]:undefined;this[_0xc8be('0x44')]=_0x3d8cc2[_0xc8be('0x44')]||undefined;this[_0xc8be('0x45')]=_0x3d8cc2[_0xc8be('0x45')]?_0x3d8cc2['Interval']:undefined;this['dialOrderByScheduledAt']=_0x3d8cc2[_0xc8be('0x46')]||'DESC';this[_0xc8be('0x47')]=_0x3d8cc2[_0xc8be('0x47')]||undefined;this[_0xc8be('0x48')]=_0x3d8cc2['dialCutDigit']||undefined;this[_0xc8be('0x49')]=strategy[_0x3d8cc2[_0xc8be('0x49')]]||_0xc8be('0x9');this['queueStatusComplete']=!![];this[_0xc8be('0x4a')]=_0x3d8cc2[_0xc8be('0x4a')]||![];this[_0xc8be('0x4b')]=_0x3d8cc2[_0xc8be('0x4b')];this[_0xc8be('0x4c')]=_0x3d8cc2[_0xc8be('0x4c')];this[_0xc8be('0x4d')]=_0x3d8cc2['dialAMDAfterGreetingSilence'];this[_0xc8be('0x4e')]=_0x3d8cc2[_0xc8be('0x4e')];this[_0xc8be('0x4f')]=_0x3d8cc2[_0xc8be('0x4f')];this[_0xc8be('0x50')]=_0x3d8cc2[_0xc8be('0x50')];this[_0xc8be('0x51')]=_0x3d8cc2[_0xc8be('0x51')];this[_0xc8be('0x52')]=_0x3d8cc2[_0xc8be('0x52')];this[_0xc8be('0x53')]=_0x3d8cc2[_0xc8be('0x53')];this['outboundRejectCallsDay']=0x0;this[_0xc8be('0x54')]=0x0;this[_0xc8be('0x55')]=_0x3d8cc2[_0xc8be('0x55')];this[_0xc8be('0x56')]=0x0;this['outboundAnswerAgiCallsDay']=0x0;this[_0xc8be('0x57')]=0x0;this[_0xc8be('0x58')]=0x0;this[_0xc8be('0x59')]=0x0;this[_0xc8be('0x5a')]=0x0;this[_0xc8be('0x5b')]=0x0;this['outboundBlacklistCallsDay']=0x0;this[_0xc8be('0x5c')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xc8be('0x5d')]=0x0;this[_0xc8be('0x5e')]=0x0;this[_0xc8be('0x5f')]=0x0;this['outboundAbandonedDay']=0x0;this[_0xc8be('0x60')]=undefined;this[_0xc8be('0x61')]=undefined;this[_0xc8be('0x62')]=undefined;this[_0xc8be('0x63')]=1.05;this[_0xc8be('0x64')]=0x0;this[_0xc8be('0x65')]=0x0;this['predictiveIntervalDroppedCallsCallersExit']=0x0;this[_0xc8be('0x66')]=0x0;this[_0xc8be('0x67')]=0x0;this[_0xc8be('0x68')]=0x0;this[_0xc8be('0x69')]=0x0;this[_0xc8be('0x6a')]=0x0;this[_0xc8be('0x6b')]=_0x3d8cc2['dialPredictiveIntervalMaxThreshold']||0x14;this[_0xc8be('0x6c')]=_0x3d8cc2[_0xc8be('0x6d')]||0xa;this[_0xc8be('0x6e')]=0x0;this['predictiveIntervalErlangCallsDroppedCalls']=0x0;this['predictiveIntervalHitRate']=0x1;this[_0xc8be('0x6f')]=0x0;this['erlangCallToSecond']=0x0;this[_0xc8be('0x70')]=0x0;this[_0xc8be('0x71')]=0x0;this[_0xc8be('0x72')]=_0x3d8cc2[_0xc8be('0x72')]||0x1e;this[_0xc8be('0x73')]=_0x3d8cc2['dialRecallInQueue']||![];this['dialPreviewAutoRecallMe']=!!_0x3d8cc2[_0xc8be('0x74')]||![];this[_0xc8be('0x75')]=!!_0x3d8cc2['dialPreviewRecallmeReminder']||![];this[_0xc8be('0x76')]=_0x3d8cc2['dialQueueProject2']||undefined;this[_0xc8be('0x77')]=_0x3d8cc2[_0xc8be('0x77')]||![];this['dialAgiAfterHangupAgent']=_0x3d8cc2[_0xc8be('0x78')]||![];this['monitor_format']=monitorFormat[_0x3d8cc2[_0xc8be('0xb')]]?monitorFormat[_0x3d8cc2[_0xc8be('0xb')]]:undefined;this['mandatoryDisposition']=_0x3d8cc2[_0xc8be('0x79')]||![];this['mandatoryDispositionPause']=_0x3d8cc2[_0xc8be('0x7a')]?_0x3d8cc2[_0xc8be('0x7a')]:undefined;}module[_0xc8be('0x7b')]=VoiceQueue;
\ No newline at end of file
+var _0xc4aa=['Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','queueStatusComplete','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','wav','wav49','gsm','fewestcalls','leastrecent','linear','rrmemory','rrordered','wrandom','name','monitor_format','inbound','waiting','total','sumDuration','sumHoldTime','sumBillable','abandoned','busy','invalid','loggedIn','notInUse','paused','ringing','ringInUse','talking','unavailable','unknown','acw','acwTimeout','autopause','message','originated','temp','dialTimezone','dialGlobalInterval','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix'];(function(_0x4114dd,_0x2ad862){var _0x26f44c=function(_0xad2246){while(--_0xad2246){_0x4114dd['push'](_0x4114dd['shift']());}};_0x26f44c(++_0x2ad862);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xc4aa[_0x8c43de];return _0xa6591b;};'use strict';var monitorFormat={'wav':_0xac4a('0x0'),'wav49':_0xac4a('0x1'),'gsm':_0xac4a('0x2')};var strategy={'fewestcalls':_0xac4a('0x3'),'leastrecent':_0xac4a('0x4'),'linear':_0xac4a('0x5'),'random':'random','ringall':'ringall','rr':'roundrobin','rrmemory':_0xac4a('0x6'),'rrordered':_0xac4a('0x7'),'wrandom':_0xac4a('0x8')};function VoiceQueue(_0x215f39){this['id']=_0x215f39['id']||0x0;this[_0xac4a('0x9')]=_0x215f39[_0xac4a('0x9')]||'';this[_0xac4a('0xa')]=_0x215f39[_0xac4a('0xa')]||'';this['type']=_0x215f39['type']||_0xac4a('0xb');this[_0xac4a('0xc')]=0x0;this[_0xac4a('0xd')]=0x0;this['answered']=0x0;this[_0xac4a('0xe')]=0x0;this[_0xac4a('0xf')]=0x0;this[_0xac4a('0x10')]=0x0;this['unmanaged']=0x0;this[_0xac4a('0x11')]=0x0;this['available']=0x0;this[_0xac4a('0x12')]=0x0;this['inUse']=0x0;this[_0xac4a('0x13')]=0x0;this[_0xac4a('0x14')]=0x0;this[_0xac4a('0x15')]=0x0;this['onHold']=0x0;this[_0xac4a('0x16')]=0x0;this[_0xac4a('0x17')]=0x0;this[_0xac4a('0x18')]=0x0;this[_0xac4a('0x19')]=0x0;this[_0xac4a('0x1a')]=0x0;this[_0xac4a('0x1b')]=0x0;this[_0xac4a('0x1c')]=_0x215f39[_0xac4a('0x1c')]||![];this[_0xac4a('0x1d')]=_0x215f39[_0xac4a('0x1d')]||0xa;this[_0xac4a('0x1e')]=_0x215f39[_0xac4a('0x1e')]||'no';this['sendMessageOneNotActive']=!![];this[_0xac4a('0x1f')]='';this[_0xac4a('0x20')]=0x0;this[_0xac4a('0x21')]=0x0;this[_0xac4a('0x22')]=_0x215f39[_0xac4a('0x22')]||null;this[_0xac4a('0x23')]=_0x215f39[_0xac4a('0x23')]?_0x215f39[_0xac4a('0x23')]:null;this['dialActive']=_0x215f39['dialActive'];this[_0xac4a('0x24')]=_0x215f39[_0xac4a('0x24')]||_0xac4a('0x25');this['dialLimitChannel']=_0x215f39[_0xac4a('0x26')]||0x0;this[_0xac4a('0x27')]=_0x215f39[_0xac4a('0x27')]||0x0;this[_0xac4a('0x28')]=_0x215f39[_0xac4a('0x28')]||0x1;this[_0xac4a('0x29')]=_0x215f39[_0xac4a('0x29')]||_0xac4a('0x2a');this['dialPredictiveOptimizationPercentage']=_0x215f39[_0xac4a('0x2b')]||0.03;this[_0xac4a('0x2c')]=_0x215f39['dialPredictiveInterval']||0x258;this[_0xac4a('0x2d')]=_0x215f39[_0xac4a('0x2d')]||_0xac4a('0x2e');this[_0xac4a('0x2f')]=_0x215f39['dialOriginateCallerIdNumber']||_0xac4a('0x2e');this[_0xac4a('0x30')]=_0x215f39[_0xac4a('0x30')]||0x1e;this[_0xac4a('0x31')]=_0x215f39[_0xac4a('0x31')]||_0xac4a('0x32');this[_0xac4a('0x33')]=_0x215f39[_0xac4a('0x33')]||0x3;this[_0xac4a('0x34')]=_0x215f39[_0xac4a('0x34')]||undefined;this[_0xac4a('0x35')]=_0x215f39[_0xac4a('0x35')]||0x3;this[_0xac4a('0x36')]=_0x215f39[_0xac4a('0x36')]||0x96;this[_0xac4a('0x37')]=_0x215f39[_0xac4a('0x37')]||0x3;this['dialBusyRetryFrequency']=_0x215f39[_0xac4a('0x38')]||0x96;this[_0xac4a('0x39')]=_0x215f39[_0xac4a('0x39')]||0x3;this[_0xac4a('0x3a')]=_0x215f39[_0xac4a('0x3a')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x215f39['dialNoSuchNumberMaxRetry']||0x3;this[_0xac4a('0x3b')]=_0x215f39[_0xac4a('0x3b')]||0x96;this[_0xac4a('0x3c')]=_0x215f39['dialDropMaxRetry']||0x3;this['dialDropRetryFrequency']=_0x215f39[_0xac4a('0x3d')]||0x96;this[_0xac4a('0x3e')]=_0x215f39[_0xac4a('0x3e')]||0x3;this[_0xac4a('0x3f')]=_0x215f39[_0xac4a('0x3f')]||0x96;this['dialMachineMaxRetry']=_0x215f39[_0xac4a('0x40')]||0x3;this['dialMachineRetryFrequency']=_0x215f39[_0xac4a('0x41')]||0x96;this['dialAgentRejectMaxRetry']=_0x215f39[_0xac4a('0x42')]||0x3;this[_0xac4a('0x43')]=_0x215f39[_0xac4a('0x43')]||0x96;this[_0xac4a('0x44')]=_0x215f39[_0xac4a('0x44')]||0x3;this[_0xac4a('0x45')]=_0x215f39[_0xac4a('0x45')]||0x4;this[_0xac4a('0x46')]=_0x215f39[_0xac4a('0x46')]?_0x215f39[_0xac4a('0x46')]:undefined;this[_0xac4a('0x47')]=_0x215f39[_0xac4a('0x47')]?_0x215f39[_0xac4a('0x47')]:undefined;this[_0xac4a('0x48')]=_0x215f39['dialPrefix']||undefined;this[_0xac4a('0x49')]=_0x215f39[_0xac4a('0x49')]?_0x215f39['Interval']:undefined;this[_0xac4a('0x4a')]=_0x215f39[_0xac4a('0x4a')]||'DESC';this['dialRandomLastDigitCallerIdNumber']=_0x215f39[_0xac4a('0x4b')]||undefined;this[_0xac4a('0x4c')]=_0x215f39[_0xac4a('0x4c')]||undefined;this[_0xac4a('0x4d')]=strategy[_0x215f39['strategy']]||_0xac4a('0x6');this[_0xac4a('0x4e')]=!![];this['dialAMDActive']=_0x215f39[_0xac4a('0x4f')]||![];this[_0xac4a('0x50')]=_0x215f39[_0xac4a('0x50')];this['dialAMDGreeting']=_0x215f39[_0xac4a('0x51')];this[_0xac4a('0x52')]=_0x215f39[_0xac4a('0x52')];this['dialAMDTotalAnalysisTime']=_0x215f39[_0xac4a('0x53')];this[_0xac4a('0x54')]=_0x215f39['dialAMDMinWordLength'];this['dialAMDBetweenWordsSilence']=_0x215f39[_0xac4a('0x55')];this['dialAMDMaximumNumberOfWords']=_0x215f39['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x215f39['dialAMDSilenceThreshold'];this[_0xac4a('0x56')]=_0x215f39[_0xac4a('0x56')];this[_0xac4a('0x57')]=0x0;this[_0xac4a('0x58')]=0x0;this[_0xac4a('0x59')]=_0x215f39[_0xac4a('0x59')];this[_0xac4a('0x5a')]=0x0;this[_0xac4a('0x5b')]=0x0;this[_0xac4a('0x5c')]=0x0;this[_0xac4a('0x5d')]=0x0;this[_0xac4a('0x5e')]=0x0;this[_0xac4a('0x5f')]=0x0;this['outboundUnknownCallsDay']=0x0;this['outboundBlacklistCallsDay']=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0xac4a('0x60')]=0x0;this[_0xac4a('0x61')]=0x0;this[_0xac4a('0x62')]=0x0;this[_0xac4a('0x63')]=0x0;this[_0xac4a('0x64')]=0x0;this[_0xac4a('0x65')]=undefined;this[_0xac4a('0x66')]=undefined;this[_0xac4a('0x67')]=undefined;this[_0xac4a('0x68')]=1.05;this[_0xac4a('0x69')]=0x0;this['predictiveIntervalAnsweredCalls']=0x0;this[_0xac4a('0x6a')]=0x0;this[_0xac4a('0x6b')]=0x0;this[_0xac4a('0x6c')]=0x0;this[_0xac4a('0x6d')]=0x0;this[_0xac4a('0x6e')]=0x0;this['predictiveIntervalAvailable']=0x0;this[_0xac4a('0x6f')]=_0x215f39[_0xac4a('0x70')]||0x14;this['predictiveIntervalMinThreshold']=_0x215f39[_0xac4a('0x70')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0xac4a('0x71')]=0x0;this[_0xac4a('0x72')]=0x1;this[_0xac4a('0x73')]=0x0;this[_0xac4a('0x74')]=0x0;this[_0xac4a('0x75')]=0x0;this[_0xac4a('0x76')]=0x0;this[_0xac4a('0x77')]=_0x215f39[_0xac4a('0x77')]||0x1e;this[_0xac4a('0x78')]=_0x215f39[_0xac4a('0x78')]||![];this[_0xac4a('0x79')]=!!_0x215f39[_0xac4a('0x79')]||![];this['dialPreviewRecallmeReminder']=!!_0x215f39[_0xac4a('0x7a')]||![];this[_0xac4a('0x7b')]=_0x215f39[_0xac4a('0x7b')]||undefined;this['dialAgiAfterHangupClient']=_0x215f39[_0xac4a('0x7c')]||![];this[_0xac4a('0x7d')]=_0x215f39['dialAgiAfterHangupAgent']||![];this[_0xac4a('0xa')]=monitorFormat[_0x215f39['monitor_format']]?monitorFormat[_0x215f39[_0xac4a('0xa')]]:undefined;this[_0xac4a('0x7e')]=_0x215f39[_0xac4a('0x7e')]||![];this['mandatoryDispositionPause']=_0x215f39['mandatoryDispositionPause']?_0x215f39[_0xac4a('0x7f')]:undefined;}module['exports']=VoiceQueue;
\ No newline at end of file
diff --git a/server/services/ami/model/voiceQueueSummary.js b/server/services/ami/model/voiceQueueSummary.js
new file mode 100644 (file)
index 0000000..105a176
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xb39a=['unavailable','unknown','unmanaged','waiting','outbound','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','exports','name','strategy','abandoned','answered','available','busy','inUse','loggedIn','loggedInDb','onHold','notInUse','paused','pTalking','ringing','ringInUse','sumBillable','sumDuration','sumHoldTime','talking','total','type'];(function(_0x30b60a,_0x42eaa1){var _0xa15dc2=function(_0x492e04){while(--_0x492e04){_0x30b60a['push'](_0x30b60a['shift']());}};_0xa15dc2(++_0x42eaa1);}(_0xb39a,0xb1));var _0xab39=function(_0x374305,_0x3bf2b1){_0x374305=_0x374305-0x0;var _0x48f9c6=_0xb39a[_0x374305];return _0x48f9c6;};'use strict';function VoiceQueueSummary(_0x13a4c9){this['id']=_0x13a4c9['id'];this['name']=_0x13a4c9[_0xab39('0x0')];this[_0xab39('0x1')]=_0x13a4c9[_0xab39('0x1')];this[_0xab39('0x2')]=_0x13a4c9[_0xab39('0x2')]||0x0;this[_0xab39('0x3')]=_0x13a4c9[_0xab39('0x3')]||0x0;this[_0xab39('0x4')]=_0x13a4c9[_0xab39('0x4')]||0x0;this[_0xab39('0x5')]=_0x13a4c9[_0xab39('0x5')]||0x0;this[_0xab39('0x6')]=_0x13a4c9[_0xab39('0x6')]||0x0;this['invalid']=_0x13a4c9['invalid']||0x0;this[_0xab39('0x7')]=_0x13a4c9[_0xab39('0x7')]||0x0;this[_0xab39('0x8')]=_0x13a4c9[_0xab39('0x8')]||0x0;this['onHold']=_0x13a4c9[_0xab39('0x9')]||0x0;this[_0xab39('0xa')]=_0x13a4c9['notInUse']||0x0;this[_0xab39('0xb')]=_0x13a4c9['paused']||0x0;this[_0xab39('0xc')]=_0x13a4c9[_0xab39('0xc')]||0x0;this[_0xab39('0xd')]=_0x13a4c9[_0xab39('0xd')]||0x0;this[_0xab39('0xe')]=_0x13a4c9[_0xab39('0xe')];this['sumBillable']=_0x13a4c9[_0xab39('0xf')];this[_0xab39('0x10')]=_0x13a4c9['sumDuration'];this[_0xab39('0x11')]=_0x13a4c9[_0xab39('0x11')]||0x0;this[_0xab39('0x12')]=_0x13a4c9['talking']||0x0;this[_0xab39('0x13')]=_0x13a4c9[_0xab39('0x13')]||0x0;this[_0xab39('0x14')]=_0x13a4c9[_0xab39('0x14')];this[_0xab39('0x15')]=_0x13a4c9['unavailable']||0x0;this[_0xab39('0x16')]=_0x13a4c9[_0xab39('0x16')]||0x0;this[_0xab39('0x17')]=_0x13a4c9['unmanaged']||0x0;this[_0xab39('0x18')]=_0x13a4c9[_0xab39('0x18')]||0x0;if(_0x13a4c9[_0xab39('0x14')]===_0xab39('0x19')){this[_0xab39('0x1a')]=_0x13a4c9['dialActive'];this['dialMethod']=_0x13a4c9['dialMethod'];this['dialOriginateCallerIdName']=_0x13a4c9[_0xab39('0x1b')];this[_0xab39('0x1c')]=_0x13a4c9['dialOriginateCallerIdNumber'];this[_0xab39('0x1d')]=_0x13a4c9[_0xab39('0x1d')];this['dialPrefix']=_0x13a4c9['dialPrefix'];this[_0xab39('0x1e')]=_0x13a4c9[_0xab39('0x1e')];this[_0xab39('0x1f')]=_0x13a4c9[_0xab39('0x1f')];this[_0xab39('0x20')]=_0x13a4c9[_0xab39('0x20')];this[_0xab39('0x21')]=_0x13a4c9[_0xab39('0x21')];this[_0xab39('0x22')]=_0x13a4c9[_0xab39('0x22')];this[_0xab39('0x23')]=_0x13a4c9[_0xab39('0x23')];this[_0xab39('0x24')]=_0x13a4c9[_0xab39('0x24')];this[_0xab39('0x25')]=_0x13a4c9[_0xab39('0x25')];this[_0xab39('0x26')]=_0x13a4c9[_0xab39('0x26')];this['outboundNoAnswerCallsDay']=_0x13a4c9[_0xab39('0x27')];this['outboundNoSuchCallsDay']=_0x13a4c9['outboundNoSuchCallsDay'];this[_0xab39('0x28')]=_0x13a4c9[_0xab39('0x28')];this[_0xab39('0x29')]=_0x13a4c9['outboundReCallsDay'];this[_0xab39('0x2a')]=_0x13a4c9[_0xab39('0x2a')];this[_0xab39('0x2b')]=_0x13a4c9[_0xab39('0x2b')];this[_0xab39('0x2c')]=_0x13a4c9[_0xab39('0x2c')];this[_0xab39('0x2d')]=_0x13a4c9['predictiveIntervalAvgHoldtime'];this['predictiveIntervalAvgTalktime']=_0x13a4c9['predictiveIntervalAvgTalktime'];this['predictiveIntervalDroppedCallsCallersExit']=_0x13a4c9[_0xab39('0x2e')];this[_0xab39('0x2f')]=_0x13a4c9[_0xab39('0x2f')];this[_0xab39('0x30')]=_0x13a4c9[_0xab39('0x30')];this[_0xab39('0x31')]=_0x13a4c9['predictiveIntervalErlangCallsDroppedCalls'];this['predictiveIntervalHitRate']=_0x13a4c9[_0xab39('0x32')];this[_0xab39('0x33')]=_0x13a4c9[_0xab39('0x33')];this[_0xab39('0x34')]=_0x13a4c9[_0xab39('0x34')];this[_0xab39('0x35')]=_0x13a4c9[_0xab39('0x35')];this[_0xab39('0x36')]=_0x13a4c9[_0xab39('0x36')];this[_0xab39('0x37')]=_0x13a4c9[_0xab39('0x37')];this[_0xab39('0x38')]=_0x13a4c9[_0xab39('0x38')];this[_0xab39('0x39')]=_0x13a4c9[_0xab39('0x39')];this['erlangCallToSecond']=_0x13a4c9['erlangCallToSecond'];this[_0xab39('0x3a')]=_0x13a4c9[_0xab39('0x3a')];this[_0xab39('0x3b')]=_0x13a4c9[_0xab39('0x3b')];this[_0xab39('0x3c')]=_0x13a4c9[_0xab39('0x3c')];this[_0xab39('0x3d')]=_0x13a4c9[_0xab39('0x3d')];}if(_0x13a4c9['Trunk']){this[_0xab39('0x3e')]={'id':_0x13a4c9[_0xab39('0x3e')]['id'],'name':_0x13a4c9[_0xab39('0x3e')][_0xab39('0x0')],'active':_0x13a4c9[_0xab39('0x3e')]['active'],'callerid':_0x13a4c9[_0xab39('0x3e')][_0xab39('0x3f')]};}if(_0x13a4c9[_0xab39('0x40')]){this[_0xab39('0x40')]={'id':_0x13a4c9[_0xab39('0x40')]['id'],'name':_0x13a4c9[_0xab39('0x40')]['name']};}}module[_0xab39('0x41')]=VoiceQueueSummary;
\ No newline at end of file
index 7e7c4ae..687196f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5b8=['accessKey','remoteUri','serverUrl','Configurations','name','username'];(function(_0x21a7ca,_0xacd685){var _0x2a5508=function(_0x25ccde){while(--_0x25ccde){_0x21a7ca['push'](_0x21a7ca['shift']());}};_0x2a5508(++_0xacd685);}(_0xa5b8,0x148));var _0x8a5b=function(_0x1c12b1,_0x46eac2){_0x1c12b1=_0x1c12b1-0x0;var _0x588b51=_0xa5b8[_0x1c12b1];return _0x588b51;};'use strict';function VtigerAccount(_0x5a9dfe){this['id']=_0x5a9dfe['id']||0x0;this[_0x8a5b('0x0')]=_0x5a9dfe['name']||'';this[_0x8a5b('0x1')]=_0x5a9dfe[_0x8a5b('0x1')]||'';this[_0x8a5b('0x2')]=_0x5a9dfe['accessKey']||'';this[_0x8a5b('0x3')]=_0x5a9dfe[_0x8a5b('0x3')]||'';this[_0x8a5b('0x4')]=_0x5a9dfe[_0x8a5b('0x4')]||'';this[_0x8a5b('0x5')]=_0x5a9dfe['Configurations']||{};}module['exports']=VtigerAccount;
\ No newline at end of file
+var _0xa13e=['serverUrl','Configurations','exports','name','username','accessKey','remoteUri'];(function(_0x5416db,_0x55683a){var _0x243e35=function(_0x1eb623){while(--_0x1eb623){_0x5416db['push'](_0x5416db['shift']());}};_0x243e35(++_0x55683a);}(_0xa13e,0xc7));var _0xea13=function(_0x48c990,_0x59adf2){_0x48c990=_0x48c990-0x0;var _0x31420a=_0xa13e[_0x48c990];return _0x31420a;};'use strict';function VtigerAccount(_0x26a348){this['id']=_0x26a348['id']||0x0;this[_0xea13('0x0')]=_0x26a348[_0xea13('0x0')]||'';this[_0xea13('0x1')]=_0x26a348['username']||'';this[_0xea13('0x2')]=_0x26a348[_0xea13('0x2')]||'';this[_0xea13('0x3')]=_0x26a348[_0xea13('0x3')]||'';this['serverUrl']=_0x26a348[_0xea13('0x4')]||'';this['Configurations']=_0x26a348[_0xea13('0x5')]||{};}module[_0xea13('0x6')]=VtigerAccount;
\ No newline at end of file
index 7e934d7..2337b9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd7=['Configurations','name','username','password','token','remoteUri','authType','type','integrationTab','serverUrl'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0x2dd7,0x10f));var _0x72dd=function(_0x1793de,_0x4d7233){_0x1793de=_0x1793de-0x0;var _0x4f0309=_0x2dd7[_0x1793de];return _0x4f0309;};'use strict';function ZendeskAccount(_0x2db808){this['id']=_0x2db808['id']||0x0;this[_0x72dd('0x0')]=_0x2db808[_0x72dd('0x0')]||'';this[_0x72dd('0x1')]=_0x2db808['username']||'';this[_0x72dd('0x2')]=_0x2db808[_0x72dd('0x2')]||'';this[_0x72dd('0x3')]=_0x2db808['token']||'';this[_0x72dd('0x4')]=_0x2db808[_0x72dd('0x4')]||'';this[_0x72dd('0x5')]=_0x2db808[_0x72dd('0x5')]||'';this[_0x72dd('0x6')]=_0x2db808[_0x72dd('0x6')]||_0x72dd('0x7');this['serverUrl']=_0x2db808[_0x72dd('0x8')]||'';this[_0x72dd('0x9')]=_0x2db808['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
+var _0xf73b=['authType','type','integrationTab','serverUrl','name','username','password','token','remoteUri'];(function(_0x3c233d,_0x5c2e25){var _0x515f7b=function(_0x8b5e26){while(--_0x8b5e26){_0x3c233d['push'](_0x3c233d['shift']());}};_0x515f7b(++_0x5c2e25);}(_0xf73b,0xf7));var _0xbf73=function(_0x20c452,_0x93678){_0x20c452=_0x20c452-0x0;var _0x1cebc1=_0xf73b[_0x20c452];return _0x1cebc1;};'use strict';function ZendeskAccount(_0xacd9b2){this['id']=_0xacd9b2['id']||0x0;this[_0xbf73('0x0')]=_0xacd9b2[_0xbf73('0x0')]||'';this[_0xbf73('0x1')]=_0xacd9b2[_0xbf73('0x1')]||'';this[_0xbf73('0x2')]=_0xacd9b2[_0xbf73('0x2')]||'';this[_0xbf73('0x3')]=_0xacd9b2['token']||'';this[_0xbf73('0x4')]=_0xacd9b2[_0xbf73('0x4')]||'';this['authType']=_0xacd9b2[_0xbf73('0x5')]||'';this[_0xbf73('0x6')]=_0xacd9b2[_0xbf73('0x6')]||_0xbf73('0x7');this[_0xbf73('0x8')]=_0xacd9b2[_0xbf73('0x8')]||'';this['Configurations']=_0xacd9b2['Configurations']||{};}module['exports']=ZendeskAccount;
\ No newline at end of file
index f33fd93..c88530f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f44=['clientSecret','serverUrl','code','refreshToken','Configurations','exports','name','description','host','zone','clientId'];(function(_0x4fc0d5,_0x3710e0){var _0x2a6212=function(_0x5a85b2){while(--_0x5a85b2){_0x4fc0d5['push'](_0x4fc0d5['shift']());}};_0x2a6212(++_0x3710e0);}(_0x8f44,0xab));var _0x48f4=function(_0x45d0c4,_0x4586f1){_0x45d0c4=_0x45d0c4-0x0;var _0x4909e2=_0x8f44[_0x45d0c4];return _0x4909e2;};'use strict';function ZohoAccount(_0x17b108){this['id']=_0x17b108['id']||0x0;this[_0x48f4('0x0')]=_0x17b108[_0x48f4('0x0')]||'';this['description']=_0x17b108[_0x48f4('0x1')]||'';this['host']=_0x17b108[_0x48f4('0x2')]||'';this[_0x48f4('0x3')]=_0x17b108[_0x48f4('0x3')]||'';this['clientId']=_0x17b108[_0x48f4('0x4')]||'';this['clientSecret']=_0x17b108[_0x48f4('0x5')]||'';this[_0x48f4('0x6')]=_0x17b108[_0x48f4('0x6')]||'';this[_0x48f4('0x7')]=_0x17b108['code']||'';this[_0x48f4('0x8')]=_0x17b108[_0x48f4('0x8')]||'';this['Configurations']=_0x17b108[_0x48f4('0x9')]||{};}module[_0x48f4('0xa')]=ZohoAccount;
\ No newline at end of file
+var _0x8f2c=['refreshToken','Configurations','exports','name','description','host','zone','clientId','clientSecret','serverUrl','code'];(function(_0x36e83b,_0x52d409){var _0x5dc436=function(_0x55e9fe){while(--_0x55e9fe){_0x36e83b['push'](_0x36e83b['shift']());}};_0x5dc436(++_0x52d409);}(_0x8f2c,0x1b0));var _0xc8f2=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x8f2c[_0x4e676e];return _0x336a3c;};'use strict';function ZohoAccount(_0x2aa07f){this['id']=_0x2aa07f['id']||0x0;this['name']=_0x2aa07f[_0xc8f2('0x0')]||'';this[_0xc8f2('0x1')]=_0x2aa07f[_0xc8f2('0x1')]||'';this[_0xc8f2('0x2')]=_0x2aa07f[_0xc8f2('0x2')]||'';this[_0xc8f2('0x3')]=_0x2aa07f[_0xc8f2('0x3')]||'';this[_0xc8f2('0x4')]=_0x2aa07f['clientId']||'';this[_0xc8f2('0x5')]=_0x2aa07f[_0xc8f2('0x5')]||'';this[_0xc8f2('0x6')]=_0x2aa07f[_0xc8f2('0x6')]||'';this[_0xc8f2('0x7')]=_0x2aa07f[_0xc8f2('0x7')]||'';this[_0xc8f2('0x8')]=_0x2aa07f[_0xc8f2('0x8')]||'';this[_0xc8f2('0x9')]=_0x2aa07f[_0xc8f2('0x9')]||{};}module[_0xc8f2('0xa')]=ZohoAccount;
\ No newline at end of file
index d3c66b7..3188ac6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3f=['prototype','getCaller','format','\x22%s\x22\x20<%s>','number','util','lodash','moment','string','isNil','uniqueid','idContact','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','Contact','firstName','active','calleridnum','phone','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname'];(function(_0xcd5a3d,_0x3c5b33){var _0xd43207=function(_0x17d976){while(--_0x17d976){_0xcd5a3d['push'](_0xcd5a3d['shift']());}};_0xd43207(++_0x3c5b33);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x8e3f[_0x4a9fb1];return _0x348672;};'use strict';var util=require(_0xf8e3('0x0'));var _=require(_0xf8e3('0x1'));var moment=require(_0xf8e3('0x2'));function checkNameSurname(_0x4d334a,_0x3f3440,_0x292de5){var _0x3b07a5='';if(!_['isNil'](_0x3f3440)&&_0xf8e3('0x3')===typeof _0x3f3440){_0x3b07a5+=_0x3f3440;}if(!_[_0xf8e3('0x4')](_0x292de5)&&'string'===typeof _0x292de5){_0x3b07a5+='\x20'+_0x292de5;}if(_0x3b07a5!==''){return _0x3b07a5;}return _0x4d334a;}function Action(_0x35e88f,_0xb21f8d,_0x2621c5,_0x1ee9f3,_0x4e9e57){this[_0xf8e3('0x5')]=_0x2621c5||undefined;this[_0xf8e3('0x6')]=_0x35e88f['id'];this[_0xf8e3('0x7')]=_0xb21f8d[_0xf8e3('0x8')];this[_0xf8e3('0x9')]=_0xb21f8d[_0xf8e3('0x9')];this[_0xf8e3('0xa')]=_0xf8e3('0x7');this[_0xf8e3('0xb')]=![];this[_0xf8e3('0xc')]=_[_0xf8e3('0x4')](_0x35e88f[_0xf8e3('0xd')])?undefined:_0x35e88f['Agent'][_0xf8e3('0x8')];this[_0xf8e3('0xe')]=this[_0xf8e3('0xc')]?util['format'](_0xf8e3('0xf'),this[_0xf8e3('0xc')]):_0x1ee9f3||undefined;this[_0xf8e3('0x10')]=checkNameSurname(_0x35e88f[_0xf8e3('0x11')]['phone'],_0x35e88f[_0xf8e3('0x11')][_0xf8e3('0x12')],_0x35e88f[_0xf8e3('0x11')]['lastName']);this[_0xf8e3('0x13')]=_0x35e88f['active']||![];this[_0xf8e3('0x14')]=_0x35e88f[_0xf8e3('0x15')];this[_0xf8e3('0x16')]=_0x35e88f['scheduledat'];this['countbusyretry']=_0x35e88f[_0xf8e3('0x17')]||0x0;this[_0xf8e3('0x18')]=_0x35e88f[_0xf8e3('0x18')]||0x0;this[_0xf8e3('0x19')]=_0x35e88f[_0xf8e3('0x19')]||0x0;this[_0xf8e3('0x1a')]=(_0x35e88f[_0xf8e3('0x17')]||0x0)+(_0x35e88f[_0xf8e3('0x18')]||0x0)+(_0x35e88f[_0xf8e3('0x19')]||0x0)+(_0x35e88f[_0xf8e3('0x1b')]||0x0)+(_0x35e88f['countdropretry']||0x0)+(_0x35e88f[_0xf8e3('0x1c')]||0x0)+(_0x35e88f[_0xf8e3('0x1d')]||0x0)+(_0x35e88f[_0xf8e3('0x1e')]||0x0);this[_0xf8e3('0x1b')]=_0x35e88f[_0xf8e3('0x1b')]||0x0;this[_0xf8e3('0x1f')]=_0x35e88f[_0xf8e3('0x1f')]||0x0;this[_0xf8e3('0x1c')]=_0x35e88f['countabandonedretry']||0x0;this[_0xf8e3('0x1d')]=_0x35e88f[_0xf8e3('0x1d')]||0x0;this[_0xf8e3('0x1e')]=_0x35e88f[_0xf8e3('0x1e')]||0x0;this['callback']=_0x35e88f[_0xf8e3('0x20')];this['callbackuniqueid']=_0x35e88f[_0xf8e3('0x21')];this[_0xf8e3('0x22')]=_0x35e88f[_0xf8e3('0x22')];this[_0xf8e3('0x23')]=_0x35e88f[_0xf8e3('0x23')];this[_0xf8e3('0x24')]=_0x35e88f['ContactId'];this[_0xf8e3('0x25')]=_0x35e88f[_0xf8e3('0x25')];this[_0xf8e3('0x26')]=_[_0xf8e3('0x4')](_0x35e88f[_0xf8e3('0xd')])?_0x35e88f[_0xf8e3('0x26')]:_0x35e88f[_0xf8e3('0xd')]['id'];this[_0xf8e3('0x27')]=_0x35e88f['VoiceQueueId'];this[_0xf8e3('0x28')]='';this[_0xf8e3('0x29')]='';}Action[_0xf8e3('0x2a')][_0xf8e3('0x2b')]=function(){return util[_0xf8e3('0x2c')](_0xf8e3('0x2d'),this[_0xf8e3('0x10')],this[_0xf8e3('0x2e')]);};module['exports']=Action;
\ No newline at end of file
+var _0x4325=['type','membername','Agent','format','calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','util','lodash','string','isNil','idContact','queue','name'];(function(_0x5685b3,_0x2f3adb){var _0x381680=function(_0x411cd2){while(--_0x411cd2){_0x5685b3['push'](_0x5685b3['shift']());}};_0x381680(++_0x2f3adb);}(_0x4325,0x1da));var _0x5432=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x4325[_0x2641f9];return _0x585741;};'use strict';var util=require(_0x5432('0x0'));var _=require(_0x5432('0x1'));var moment=require('moment');function checkNameSurname(_0x3f491f,_0x533c92,_0x12c8d8){var _0x480fb7='';if(!_['isNil'](_0x533c92)&&_0x5432('0x2')===typeof _0x533c92){_0x480fb7+=_0x533c92;}if(!_[_0x5432('0x3')](_0x12c8d8)&&_0x5432('0x2')===typeof _0x12c8d8){_0x480fb7+='\x20'+_0x12c8d8;}if(_0x480fb7!==''){return _0x480fb7;}return _0x3f491f;}function Action(_0x4acbe4,_0x209e2e,_0xbb0075,_0x4a6e76,_0x106ec9){this['uniqueid']=_0xbb0075||undefined;this[_0x5432('0x4')]=_0x4acbe4['id'];this[_0x5432('0x5')]=_0x209e2e[_0x5432('0x6')];this[_0x5432('0x7')]=_0x209e2e[_0x5432('0x7')];this['campaigntype']=_0x5432('0x5');this['dialAnswer']=![];this[_0x5432('0x8')]=_[_0x5432('0x3')](_0x4acbe4[_0x5432('0x9')])?undefined:_0x4acbe4[_0x5432('0x9')]['name'];this['channelAgent']=this[_0x5432('0x8')]?util[_0x5432('0xa')]('SIP/%s',this[_0x5432('0x8')]):_0x4a6e76||undefined;this[_0x5432('0xb')]=checkNameSurname(_0x4acbe4[_0x5432('0xc')][_0x5432('0xd')],_0x4acbe4[_0x5432('0xc')][_0x5432('0xe')],_0x4acbe4['Contact']['lastName']);this[_0x5432('0xf')]=_0x4acbe4[_0x5432('0xf')]||![];this[_0x5432('0x10')]=_0x4acbe4[_0x5432('0xd')];this[_0x5432('0x11')]=_0x4acbe4[_0x5432('0x11')];this['countbusyretry']=_0x4acbe4[_0x5432('0x12')]||0x0;this['countcongestionretry']=_0x4acbe4[_0x5432('0x13')]||0x0;this[_0x5432('0x14')]=_0x4acbe4[_0x5432('0x14')]||0x0;this[_0x5432('0x15')]=(_0x4acbe4[_0x5432('0x12')]||0x0)+(_0x4acbe4['countcongestionretry']||0x0)+(_0x4acbe4[_0x5432('0x14')]||0x0)+(_0x4acbe4[_0x5432('0x16')]||0x0)+(_0x4acbe4[_0x5432('0x17')]||0x0)+(_0x4acbe4[_0x5432('0x18')]||0x0)+(_0x4acbe4[_0x5432('0x19')]||0x0)+(_0x4acbe4[_0x5432('0x1a')]||0x0);this[_0x5432('0x16')]=_0x4acbe4['countnosuchnumberretry']||0x0;this[_0x5432('0x17')]=_0x4acbe4[_0x5432('0x17')]||0x0;this[_0x5432('0x18')]=_0x4acbe4[_0x5432('0x18')]||0x0;this[_0x5432('0x19')]=_0x4acbe4['countmachineretry']||0x0;this['countagentrejectretry']=_0x4acbe4['countagentrejectretry']||0x0;this[_0x5432('0x1b')]=_0x4acbe4[_0x5432('0x1b')];this[_0x5432('0x1c')]=_0x4acbe4[_0x5432('0x1c')];this['callbackat']=_0x4acbe4['callbackat'];this[_0x5432('0x1d')]=_0x4acbe4[_0x5432('0x1d')];this['ContactId']=_0x4acbe4[_0x5432('0x1e')];this[_0x5432('0x1f')]=_0x4acbe4[_0x5432('0x1f')];this['UserId']=_[_0x5432('0x3')](_0x4acbe4[_0x5432('0x9')])?_0x4acbe4[_0x5432('0x20')]:_0x4acbe4['Agent']['id'];this['VoiceQueueId']=_0x4acbe4[_0x5432('0x21')];this[_0x5432('0x22')]='';this['originatecalleridname']='';}Action[_0x5432('0x23')][_0x5432('0x24')]=function(){return util[_0x5432('0xa')]('\x22%s\x22\x20<%s>',this[_0x5432('0xb')],this['number']);};module['exports']=Action;
\ No newline at end of file
index 8749424..4334960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c65=['countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedRetryFrequency','countmachineretry','cause-txt','dialstatus','custom:amd','amd','[callProgressDetectingCustomer][hangupInAMD]','linkedid','[callProgressDetectingCustomer][machine]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','object','logAgent','[callProgressDetectingAgent][logNoSuch]','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','createAgentHistory','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logAnswerAGI]','reason','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','VoiceQueueId','lookAgent','isEmpty','[Preview][execCall][success]','called','Calling','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','SIP/%s','unmonitored','unlock','unlockContact','getContactPreview','recallme','isValid','phone','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','validateContact','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialCutDigit','substring','trim','getCallerId','dialOriginateCallerIdName','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','originatecalleridname','extractCalleridName','originatecalleridnum','addVariables','toLowerVariables','starttime','[originated][increment]','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','channel','logLookAgent','clone','isFailure','response','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','syncHangup','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','dialQueueProject','channelstate','destuniqueid','syncHangupRequest','addVariable','variables','filterKey','keys','variable','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfer','transfererlinkedid','exports','util','lodash','uuid','moment','md5','ioredis','../../../config/logger','preview','actionPreview','../ami','../rpc/cmHopperAdditionalPhone','./action','./util/util','redis','defaults','localhost','socket.io-emitter','enqueue','tail','finally','sequence','trunks','actions','agents','clockClearZombieChannels','syncOriginateResponse','hangup','hanguprequest','bind','syncDialEnd','newexten','syncVarSet','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','campaignsPreview','type','answered','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','waiting','loggedInDb','dialMethod','dialOriginateCallerIdNumber','dialPrefix','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','active','callerid','Interval','stringify','format','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice:queue:%s','voice_queue_channel:remove','emit','sendMessageOneNotActive','paused','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20not\x20active','DEACTIVATED','\x20is\x20deactivated','prototype','syncCampaigns','hasOwnProperty','booked','dialActive','setMessage','dialPreviewAutoRecallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking','dialAnswer','pick','contactId','UserId','ListId','Action','status','catch','updateOriginated','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[Dialer][checkChannel][Preview]','clearZombieChannels','size','getContactRecallMe','agentReadyId','then','length','getDiff','scheduledat','dialRecallMeTimeout','Agent','run','logger2','[RecallMe]','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','createCustomerFinal','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','NoSuchNumber','custom:agentnosuchnumber','buildObj','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','dialGlobalMaxRetry','cloneAction','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','unlockAgent','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','responsetime','uniqueid','\x20Queue','pTalking:\x20','custom:agentconnect','acw','custom:agentConnectPreview','custom:agentcomplete','complete','Answer','[callProgressDetectingCustomer][logAnswer]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','BUSY','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','Global','countbusyretry','dialBusyMaxRetry','activeContact','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','custom:agentnoanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','dialCongestionRetryFrequency','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','countcongestionretry','dialCongestionMaxRetry','outboundRejectCallsDay','countagentrejectretry','AgentReject','agentreject','[syncHangupRequest][logAgentReject]','dialAgentRejectMaxRetry','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectRetryFrequency'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0x6c65,0x78));var _0x56c6=function(_0x132787,_0x49aebb){_0x132787=_0x132787-0x0;var _0x281428=_0x6c65[_0x132787];return _0x281428;};'use strict';var util=require(_0x56c6('0x0'));var _=require(_0x56c6('0x1'));var uuid=require(_0x56c6('0x2'));var moment=require(_0x56c6('0x3'));var md5=require(_0x56c6('0x4'));var Redis=require(_0x56c6('0x5'));var config=require('../../../config/environment');var logger=require(_0x56c6('0x6'))(_0x56c6('0x7'));var loggerAction=require(_0x56c6('0x6'))(_0x56c6('0x8'));var ami=require(_0x56c6('0x9'));var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0x56c6('0xa'));var Action=require(_0x56c6('0xb'));var ut=require(_0x56c6('0xc'));config[_0x56c6('0xd')]=_[_0x56c6('0xe')](config['redis'],{'host':_0x56c6('0xf'),'port':0x18eb});var io=require(_0x56c6('0x10'))(new Redis(config[_0x56c6('0xd')]));var Sequence=function(){};Sequence['prototype'][_0x56c6('0x11')]=function(_0x30a2f2){this[_0x56c6('0x12')]=this[_0x56c6('0x12')]?this[_0x56c6('0x12')][_0x56c6('0x13')](_0x30a2f2):_0x30a2f2();};function Preview(_0x5dce6b){this[_0x56c6('0x14')]=new Sequence();this['campaignsPreview']=_0x5dce6b['voiceQueues'];this[_0x56c6('0x15')]=_0x5dce6b[_0x56c6('0x15')];this[_0x56c6('0x16')]={};this[_0x56c6('0x17')]=_0x5dce6b['agents'];this[_0x56c6('0x18')]=0x0;ami['on']('originateresponse',this[_0x56c6('0x19')]['bind'](this));ami['on'](_0x56c6('0x1a'),this['syncHangup']['bind'](this));ami['on'](_0x56c6('0x1b'),this['syncHangupRequest'][_0x56c6('0x1c')](this));ami['on']('dialend',this[_0x56c6('0x1d')]['bind'](this));ami['on'](_0x56c6('0x1e'),this['syncNewExten'][_0x56c6('0x1c')](this));ami['on']('varset',this[_0x56c6('0x1f')][_0x56c6('0x1c')](this));ami['on']('attendedtransfer',this[_0x56c6('0x20')][_0x56c6('0x1c')](this));ami['on'](_0x56c6('0x21'),this[_0x56c6('0x22')]['bind'](this));this[_0x56c6('0x23')](this[_0x56c6('0x24')]);}function emit(_0x413ca7,_0x137570,_0xf2c8d){io['to'](_0x413ca7)['emit'](_0x137570,_0xf2c8d);}function emitCampaignPreview(_0x1cd575){if(_0x1cd575[_0x56c6('0x25')]==='outbound'){var _0x40d7be={'id':_0x1cd575['id'],'name':_0x1cd575['name'],'strategy':_0x1cd575['strategy'],'answered':_0x1cd575[_0x56c6('0x26')],'available':_0x1cd575[_0x56c6('0x27')],'loggedIn':_0x1cd575[_0x56c6('0x28')],'pTalking':_0x1cd575['pTalking'],'sumBillable':_0x1cd575[_0x56c6('0x29')],'sumDuration':_0x1cd575[_0x56c6('0x2a')],'sumHoldTime':_0x1cd575[_0x56c6('0x2b')]||0x0,'talking':_0x1cd575[_0x56c6('0x2c')],'total':_0x1cd575[_0x56c6('0x2d')],'type':_0x1cd575[_0x56c6('0x25')],'unmanaged':_0x1cd575['unmanaged'],'abandoned':_0x1cd575['abandoned'],'waiting':_0x1cd575[_0x56c6('0x2e')],'loggedInDb':_0x1cd575[_0x56c6('0x2f')],'dialActive':_0x1cd575['dialActive'],'dialMethod':_0x1cd575[_0x56c6('0x30')],'dialOriginateCallerIdName':_0x1cd575['dialOriginateCallerIdName'],'dialOriginateCallerIdNumber':_0x1cd575[_0x56c6('0x31')],'dialOriginateTimeout':_0x1cd575['dialOriginateTimeout'],'dialPrefix':_0x1cd575[_0x56c6('0x32')],'outboundAnswerAgiCallsDay':_0x1cd575['outboundAnswerAgiCallsDay'],'outboundAnswerCallsDay':_0x1cd575[_0x56c6('0x33')],'outboundBlacklistCallsDay':_0x1cd575[_0x56c6('0x34')],'outboundBusyCallsDay':_0x1cd575[_0x56c6('0x35')],'outboundCongestionCallsDay':_0x1cd575[_0x56c6('0x36')],'outboundDropCallsDayACS':_0x1cd575[_0x56c6('0x37')],'outboundDropCallsDayCallersExit':_0x1cd575[_0x56c6('0x38')],'outboundDropCallsDayTimeout':_0x1cd575[_0x56c6('0x39')],'outboundNoAnswerCallsDay':_0x1cd575[_0x56c6('0x3a')],'outboundNoSuchCallsDay':_0x1cd575[_0x56c6('0x3b')],'outboundOriginateFailureCallsDay':_0x1cd575[_0x56c6('0x3c')],'outboundReCallsDay':_0x1cd575[_0x56c6('0x3d')],'outboundRejectCallsDay':_0x1cd575['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x1cd575[_0x56c6('0x3e')],'outboundAbandonedCallsDay':_0x1cd575[_0x56c6('0x3f')],'predictiveIntervalAnsweredCalls':_0x1cd575['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x1cd575['predictiveIntervalAvgHoldtime'],'predictiveIntervalAvgTalktime':_0x1cd575[_0x56c6('0x40')],'predictiveIntervalDroppedCallsCallersExit':_0x1cd575['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x1cd575[_0x56c6('0x41')],'predictiveIntervalErlangCalls':_0x1cd575['predictiveIntervalErlangCalls'],'predictiveIntervalErlangCallsDroppedCalls':_0x1cd575[_0x56c6('0x42')],'predictiveIntervalHitRate':_0x1cd575[_0x56c6('0x43')],'predictiveIntervalMultiplicativeFactor':_0x1cd575[_0x56c6('0x44')],'predictiveIntervalPauses':_0x1cd575['predictiveIntervalPauses'],'predictiveIntervalAvailable':_0x1cd575[_0x56c6('0x45')],'predictiveIntervalTotalCalls':_0x1cd575[_0x56c6('0x46')],'message':_0x1cd575[_0x56c6('0x47')],'originated':_0x1cd575[_0x56c6('0x48')],'erlangCalls':_0x1cd575[_0x56c6('0x49')],'erlangCallToSecond':_0x1cd575[_0x56c6('0x4a')],'erlangAbandonmentRate':_0x1cd575[_0x56c6('0x4b')],'erlangBusyFactor':_0x1cd575[_0x56c6('0x4c')],'startPredictive':_0x1cd575[_0x56c6('0x4d')],'startProgressive':_0x1cd575[_0x56c6('0x4e')]};if(_0x1cd575['Trunk']){_0x40d7be[_0x56c6('0x4f')]={'id':_0x1cd575[_0x56c6('0x4f')]['id'],'name':_0x1cd575['Trunk'][_0x56c6('0x50')],'active':_0x1cd575[_0x56c6('0x4f')][_0x56c6('0x51')],'callerid':_0x1cd575[_0x56c6('0x4f')][_0x56c6('0x52')]};}if(_0x1cd575[_0x56c6('0x53')]){_0x40d7be[_0x56c6('0x53')]={'id':_0x1cd575['Interval']['id'],'name':_0x1cd575[_0x56c6('0x53')][_0x56c6('0x50')]};}var _0x3d6807=md5(JSON[_0x56c6('0x54')](_0x40d7be));if(_0x1cd575[_0x56c6('0x4')]!==_0x3d6807){_0x1cd575[_0x56c6('0x4')]=_0x3d6807;emit(util[_0x56c6('0x55')]('voice:queue:%s',_0x40d7be['name']),_0x56c6('0x56'),_0x40d7be);}}}function emitVoiceQueueChannelRemove(_0x13a927){logger[_0x56c6('0x57')](_0x56c6('0x58'),JSON[_0x56c6('0x54')](_0x13a927));emit(util[_0x56c6('0x55')](_0x56c6('0x59'),_0x13a927[_0x56c6('0x50')]),_0x56c6('0x5a'),_0x13a927);io[_0x56c6('0x5b')]('voice_queue_presence:remove',_0x13a927);}function notSendMessagesQueue(_0x25d0cf){if(_0x25d0cf[_0x56c6('0x5c')]){if(_0x25d0cf[_0x56c6('0x48')]===0x0&&_0x25d0cf['pTalking']===0x0){_0x25d0cf[_0x56c6('0x5c')]=![];_0x25d0cf[_0x56c6('0x27')]=0x0;_0x25d0cf[_0x56c6('0x5d')]=0x0;_0x25d0cf['message']='NOT_ACTIVE';ut[_0x56c6('0x5e')](_0x56c6('0x5f'),_0x25d0cf[_0x56c6('0x50')]+_0x56c6('0x60'));}else{_0x25d0cf[_0x56c6('0x47')]=_0x56c6('0x61');ut[_0x56c6('0x5e')](_0x56c6('0x5f'),_0x25d0cf[_0x56c6('0x50')]+_0x56c6('0x62'));}emitCampaignPreview(_0x25d0cf);}}Preview[_0x56c6('0x63')][_0x56c6('0x23')]=function(){var _0xd6f56d=this;setInterval(function(){_0xd6f56d['syncCampaigns']();},0x7cf);};Preview[_0x56c6('0x63')][_0x56c6('0x64')]=function(){var _0x1e6b10=this['campaignsPreview'];this[_0x56c6('0x18')]+=0x1;for(var _0x2b5232 in _0x1e6b10){if(_0x1e6b10[_0x56c6('0x65')](_0x2b5232)&&(_0x1e6b10[_0x2b5232][_0x56c6('0x30')]===_0x56c6('0x7')||_0x1e6b10[_0x2b5232][_0x56c6('0x30')]===_0x56c6('0x66'))&&_0x1e6b10[_0x2b5232][_0x56c6('0x25')]==='outbound'){if(this[_0x56c6('0x18')]>0x7){this['clockClearZombieChannels']=0x0;this['clearZombieChannels']();}}if(_0x1e6b10[_0x56c6('0x65')](_0x2b5232)&&_0x1e6b10[_0x2b5232][_0x56c6('0x30')]===_0x56c6('0x7')&&_0x1e6b10[_0x2b5232][_0x56c6('0x25')]==='outbound'){if(_0x1e6b10[_0x2b5232][_0x56c6('0x67')]){this[_0x56c6('0x68')](_0x1e6b10[_0x2b5232]);if(_0x1e6b10[_0x2b5232][_0x56c6('0x69')])this['recallMe'](_0x1e6b10[_0x2b5232]);}else{notSendMessagesQueue(_0x1e6b10[_0x2b5232]);}}}};Preview[_0x56c6('0x63')][_0x56c6('0x6a')]=function(_0x2e13c3){var _0xa78010=this;this[_0x56c6('0x14')]['enqueue'](function(){if(!_[_0x56c6('0x6b')](_0xa78010[_0x56c6('0x16')][_0x2e13c3])){loggerAction[_0x56c6('0x57')](_0x56c6('0x6c'),_0x2e13c3,_0x56c6('0x6d'),_0xa78010[_0x56c6('0x16')][_0x2e13c3][_0x56c6('0x6e')],_0x56c6('0x6f'),JSON[_0x56c6('0x54')](_0xa78010[_0x56c6('0x24')][_0xa78010[_0x56c6('0x16')][_0x2e13c3]['queue']][_0x56c6('0x48')]),'pTalking:\x20',JSON[_0x56c6('0x54')](_0xa78010['campaignsPreview'][_0xa78010['actions'][_0x2e13c3][_0x56c6('0x6e')]][_0x56c6('0x70')]),JSON[_0x56c6('0x54')](_0xa78010[_0x56c6('0x16')][_0x2e13c3][_0x56c6('0x71')]),JSON[_0x56c6('0x54')](_[_0x56c6('0x72')](_0xa78010[_0x56c6('0x16')][_0x2e13c3],[_0x56c6('0x73'),_0x56c6('0x74'),'VoiceQueueId',_0x56c6('0x75')])));return ami[_0x56c6('0x76')]({'action':_0x56c6('0x77'),'channel':_0xa78010[_0x56c6('0x16')][_0x2e13c3]['channel']})[_0x56c6('0x78')](function(_0xfcac17){if(_0xfcac17[_0x56c6('0x47')]==='No\x20such\x20channel'){setTimeout(function(){if(_0xa78010[_0x56c6('0x16')][_0x2e13c3]){ut[_0x56c6('0x79')](_0xa78010[_0x56c6('0x24')][_0xa78010[_0x56c6('0x16')][_0x2e13c3]['queue']],_0x56c6('0x7a'));if(_0xa78010[_0x56c6('0x16')][_0x2e13c3][_0x56c6('0x71')]===!![]){ut[_0x56c6('0x7b')](_0xa78010[_0x56c6('0x24')][_0xa78010['actions'][_0x2e13c3]['queue']],_0x56c6('0x7a'));ut[_0x56c6('0x7c')](_0x56c6('0x7d')+_0x2e13c3,_0xa78010[_0x56c6('0x16')][_0x2e13c3][_0x56c6('0x6e')]);}ut[_0x56c6('0x7c')](_0x56c6('0x7e')+_0x2e13c3,_0xa78010[_0x56c6('0x16')][_0x2e13c3]['queue']);delete _0xa78010[_0x56c6('0x16')][_0x2e13c3];}},0x2328);}});}});};Preview['prototype'][_0x56c6('0x7f')]=function(){var _0x5d2a21=this;loggerAction[_0x56c6('0x57')]('[action]',_[_0x56c6('0x80')](this[_0x56c6('0x16')]));for(var _0x6e77af in this[_0x56c6('0x16')]){if(_0x5d2a21[_0x56c6('0x16')][_0x56c6('0x65')](_0x6e77af)){_0x5d2a21['clearZombieChannel'](_0x6e77af);}}};Preview[_0x56c6('0x63')]['recallMe']=function(_0x21a3a9){var _0x498b96=this;rpcDb[_0x56c6('0x81')](_0x21a3a9['id'],ut[_0x56c6('0x82')](this['agents']))[_0x56c6('0x83')](function(_0x4ba03d){if(!_['isNil'](_0x4ba03d)){for(var _0x6ca474=0x0;_0x6ca474<_0x4ba03d[_0x56c6('0x84')];_0x6ca474+=0x1){if(ut[_0x56c6('0x85')](_0x4ba03d[_0x6ca474][_0x56c6('0x86')])<_0x21a3a9[_0x56c6('0x87')]*0x3c){if(_0x4ba03d[_0x6ca474][_0x56c6('0x88')]&&!_0x4ba03d[_0x6ca474]['Agent']['voicePause']){_0x498b96[_0x56c6('0x89')](_0x4ba03d[_0x6ca474]['id'])[_0x56c6('0x83')](ut[_0x56c6('0x8a')](_0x56c6('0x8b')))[_0x56c6('0x78')](ut['logger2'](_0x56c6('0x8b')));}else{rpcDb[_0x56c6('0x8c')](_0x4ba03d[_0x6ca474]['id']);}}else{var _0x393b6d=new Action(_0x4ba03d[_0x6ca474],_0x21a3a9);_0x393b6d['starttime']=moment()[_0x56c6('0x55')](_0x56c6('0x8d'));_0x21a3a9[_0x56c6('0x3d')]+=0x1;ut[_0x56c6('0x8e')](_0x393b6d,0x17,'RecallInQueue');if(_0x21a3a9['dialRecallInQueue']){rpcDb['rescheduleContactInQueue'](ut['createBody'](_0x4ba03d[_0x6ca474]));rpcDb[_0x56c6('0x8f')](_0x393b6d,_0x56c6('0x90'));}else{ut[_0x56c6('0x8e')](_0x393b6d,0x16,_0x56c6('0x91'));rpcDb[_0x56c6('0x8f')](_0x393b6d,_0x56c6('0x92'));rpcDb[_0x56c6('0x93')](_0x393b6d,_0x56c6('0x92'));}}}}})[_0x56c6('0x78')](ut[_0x56c6('0x8a')]('[getContactRecallMe]'));};Preview[_0x56c6('0x63')][_0x56c6('0x68')]=function(_0x18b6ab){_0x18b6ab[_0x56c6('0x5c')]=!![];if(ut['IsNotLoggedIn'](_0x18b6ab[_0x56c6('0x28')])){_0x18b6ab['message']='AGENTS_NOT_LOGGED';}else if(!ut[_0x56c6('0x94')](_0x18b6ab[_0x56c6('0x67')])){_0x18b6ab['message']='NOT_ACTIVE';}else if(!this[_0x56c6('0x95')](_0x18b6ab[_0x56c6('0x4f')])){if(!this[_0x56c6('0x95')](_0x18b6ab[_0x56c6('0x96')])){_0x18b6ab['message']=_0x56c6('0x97');}else{_0x18b6ab[_0x56c6('0x47')]='ACTIVE';}}else{_0x18b6ab[_0x56c6('0x47')]=_0x56c6('0x98');}emitCampaignPreview(_0x18b6ab);};Preview['prototype'][_0x56c6('0x99')]=function(_0x1ac17f,_0x559e29,_0x502a42){var _0x51f3ff=this;var _0x2a14b2=this[_0x56c6('0x16')][_0x559e29];var _0xc475f=this[_0x56c6('0x24')][_0x2a14b2[_0x56c6('0x6e')]];var _0x19bd81;var _0xf828ff=![];var _0x244b34=0x2;var _0x42bce7=0x3;if(_0xc475f){switch(_0x502a42){case'1':_0xc475f[_0x56c6('0x3b')]+=0x1;_0x2a14b2['countnosuchnumberretry']+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x0,_0x56c6('0x9c'));ami[_0x56c6('0x5b')](_0x56c6('0x9d'),ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0x9f')));rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xa0'));_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'0',_0xc475f)[_0x56c6('0x83')](function(_0x1f8fdb){_0xf828ff=_0x1f8fdb[_0x56c6('0xa2')]==0x1;_0x244b34=_0xc475f[_0x56c6('0xa3')];_0x42bce7=_0xc475f['callAdditionalPhoneAfterMin'];if(!_0xf828ff){if(ut['totalGlobal'](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,'Global');rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xa6'));}else{if(_0x2a14b2[_0x56c6('0xa7')]>=_0xc475f[_0x56c6('0xa8')]){rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xa6'));}else{rpcDb[_0x56c6('0xa9')](ut[_0x56c6('0xaa')](_0x2a14b2,'countnosuchnumberretry',_0xc475f['dialNoSuchNumberRetryFrequency']),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2['activeContact']);}}delete this[_0x56c6('0x16')][_0x1ac17f['linkedid']];}else{_0x2a14b2[_0x56c6('0xa7')]++;logger[_0x56c6('0x57')](_0x56c6('0xac'),_0x2a14b2[_0x56c6('0xa7')]);logger[_0x56c6('0x57')]('id',_0x2a14b2[_0x56c6('0xad')]);_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2[_0x56c6('0xad')],'field':{'countnosuchnumberretry':_0x2a14b2[_0x56c6('0xa7')]}})[_0x56c6('0x83')](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});});}});break;case _0x56c6('0xb0'):var _0x3ad321=moment()[_0x56c6('0x55')](_0x56c6('0x8d'));_0x2a14b2[_0x56c6('0xb1')]=_0x3ad321;_0x2a14b2['answertime']=_0x3ad321;_0x2a14b2[_0x56c6('0x71')]=!![];_0xc475f[_0x56c6('0x70')]+=0x1;logger[_0x56c6('0x57')]('[syncHangup][talking][increment]',_0x2a14b2[_0x56c6('0xb2')],_0x56c6('0xb3'),_0xc475f['name'],_0x56c6('0xb4'),_0xc475f[_0x56c6('0x70')]);ami[_0x56c6('0x5b')](_0x56c6('0xb5'),ut[_0x56c6('0x9e')](_0x2a14b2,'connect',this[_0x56c6('0x24')][_0x2a14b2[_0x56c6('0x6e')]]));if(_0xc475f[_0x56c6('0xb6')]){ami[_0x56c6('0x5b')](_0x56c6('0xb7'),ut['buildAcw'](_0x2a14b2));}break;case'16':ami[_0x56c6('0x5b')](_0x56c6('0xb8'),ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0xb9'),this[_0x56c6('0x24')][_0x2a14b2[_0x56c6('0x6e')]]));emitVoiceQueueChannelRemove(ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0xb9')));_0xc475f[_0x56c6('0x33')]+=0x1;_0xc475f[_0x56c6('0x2d')]+=0x1;_0xc475f[_0x56c6('0x26')]+=0x1;ut[_0x56c6('0x7b')](_0xc475f,'[16]');_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x4,_0x56c6('0xba'));rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xbb'));rpcDb[_0x56c6('0x93')](_0x2a14b2,'[callProgressDetectingCustomer][logAnswerGlobal]');rpcDb[_0x56c6('0xbc')](_0x2a14b2);_0xc475f[_0x56c6('0x2a')]+=_0x2a14b2[_0x56c6('0xbd')];_0xc475f[_0x56c6('0x29')]+=_0x2a14b2['talktime'];logger[_0x56c6('0x57')](_0x56c6('0xbe'),_0x2a14b2[_0x56c6('0xb2')],_0x56c6('0xb3'),_0xc475f[_0x56c6('0x50')],_0x56c6('0xb4'),_0xc475f[_0x56c6('0x70')]);delete this['actions'][_0x1ac17f['linkedid']];break;case _0x56c6('0xbf'):_0xc475f[_0x56c6('0x35')]+=0x1;_0x2a14b2['countbusyretry']+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut['totalGlobal'](_0x2a14b2);ut['logCustomer'](_0x2a14b2,0x5,_0x56c6('0xc0'));_0x244b34=_0xc475f[_0x56c6('0xc1')];_0x42bce7=_0xc475f[_0x56c6('0xc2')];ami[_0x56c6('0x5b')](_0x56c6('0xc3'),ut['buildObj'](_0x2a14b2,_0x56c6('0xc4')));rpcDb['createCustomerHistory'](_0x2a14b2,_0x56c6('0xc5'));_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'5',_0xc475f)[_0x56c6('0x83')](function(_0x234223){_0xf828ff=_0x234223[_0x56c6('0xa2')]==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x2a14b2[_0x56c6('0xc7')]>=_0xc475f[_0x56c6('0xc8')]){rpcDb['createCustomerFinal'](_0x2a14b2,_0x56c6('0xc5'));}else{rpcDb[_0x56c6('0xa9')](ut[_0x56c6('0xaa')](_0x2a14b2,_0x56c6('0xc7'),_0xc475f[_0x56c6('0xc1')]),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2[_0x56c6('0xc9')]);}}}else{_0x2a14b2[_0x56c6('0xc7')]++;_0x51f3ff['incrementPreviewCounters']({'id':_0x2a14b2[_0x56c6('0xad')],'field':{'countbusyretry':_0x2a14b2[_0x56c6('0xc7')]}})['then'](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});});}});break;case _0x56c6('0xca'):_0xc475f[_0x56c6('0x3a')]+=0x1;_0x2a14b2[_0x56c6('0xcb')]+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x3,'NoAnswer');_0x244b34=_0xc475f[_0x56c6('0xcc')];_0x42bce7=_0xc475f[_0x56c6('0xc2')];var _0x4f0d1a=ut['buildNoAnswerEventPayload'](_0x2a14b2,_0xc475f);ami[_0x56c6('0x5b')](_0x56c6('0xcd'),_0x4f0d1a);rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xce'));_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'3',_0xc475f)[_0x56c6('0x83')](function(_0x582ba2){_0xf828ff=_0x582ba2['additional']==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f['dialGlobalMaxRetry']){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xcf'));}else{if(_0x2a14b2[_0x56c6('0xcb')]>=_0xc475f[_0x56c6('0xd0')]){rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xce'));}else{rpcDb[_0x56c6('0xa9')](ut[_0x56c6('0xaa')](_0x2a14b2,_0x56c6('0xcb'),_0xc475f[_0x56c6('0xcc')]),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2[_0x56c6('0xc9')]);}}}else{_0x2a14b2['countnoanswerretry']++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2['idContact'],'field':{'countnoanswerretry':_0x2a14b2[_0x56c6('0xcb')]}})[_0x56c6('0x83')](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});});}});break;case'CONGESTION':_0xc475f[_0x56c6('0x36')]+=0x1;_0x2a14b2['countcongestionretry']+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x8,'Congestion');_0x244b34=_0xc475f[_0x56c6('0xd1')];_0x42bce7=_0xc475f[_0x56c6('0xc2')];ami[_0x56c6('0x5b')]('custom:agentcongestion',ut['buildObj'](_0x2a14b2,'congestion'));rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xd2'));_0x51f3ff['verifyAdditionalPhones'](_0x2a14b2,'8',_0xc475f)['then'](function(_0xdf4168){_0xf828ff=_0xdf4168[_0x56c6('0xa2')]==0x1;if(!_0xf828ff){if(ut['totalGlobal'](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xd3'));}else{if(_0x2a14b2[_0x56c6('0xd4')]>=_0xc475f[_0x56c6('0xd5')]){rpcDb[_0x56c6('0x93')](_0x2a14b2,'[callProgressDetectingCustomer][logCongestion]');}else{rpcDb['rescheduleContact'](ut[_0x56c6('0xaa')](_0x2a14b2,_0x56c6('0xd4'),_0xc475f['dialBusyRetryFrequency']),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2['activeContact']);}}}else{_0x2a14b2[_0x56c6('0xd4')]++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2['idContact'],'field':{'countcongestionretry':_0x2a14b2[_0x56c6('0xd4')]}})['then'](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)['then'](function(){});});}});break;case'CANCEL':_0xc475f[_0x56c6('0xd6')]+=0x1;_0x2a14b2[_0x56c6('0xd7')]+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x14,_0x56c6('0xd8'));_0x244b34=_0xc475f['dialAgentRejectRetryFrequency'];_0x42bce7=_0xc475f[_0x56c6('0xc2')];ami[_0x56c6('0x5b')]('custom:agentreject',ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0xd9')));rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xda'));_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'20',_0xc475f)['then'](function(_0x1b41ea){_0xf828ff=_0x1b41ea[_0x56c6('0xa2')]==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0x14,_0x56c6('0xd8'));rpcDb['createCustomerFinal'](_0x19bd81,'[callProgressDetectingCustomer][logAgentReject]');}else{if(_0x2a14b2[_0x56c6('0xd7')]>=_0xc475f[_0x56c6('0xdb')]){rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xdc'));}else{rpcDb['rescheduleContact'](ut[_0x56c6('0xaa')](_0x2a14b2,_0x56c6('0xd7'),_0xc475f[_0x56c6('0xdd')]),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2[_0x56c6('0xc9')]);}}}else{_0x2a14b2[_0x56c6('0xcb')]++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2['idContact'],'field':{'countnoanswerretry':_0x2a14b2[_0x56c6('0xcb')]}})[_0x56c6('0x83')](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});});}});break;case'ABANDONED':_0xc475f[_0x56c6('0x3f')]+=0x1;_0x2a14b2[_0x56c6('0xde')]+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut['logCustomer'](_0x2a14b2,0xb,_0x56c6('0xdf'));rpcDb[_0x56c6('0x8f')](_0x2a14b2,_0x56c6('0xe0'));_0x51f3ff['verifyAdditionalPhones'](_0x2a14b2,'11',_0xc475f)[_0x56c6('0x83')](function(_0x124b60){_0xf828ff=_0x124b60['additional']==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xe0'));}else{if(_0x2a14b2[_0x56c6('0xe1')]>=_0xc475f['dialAbandonedMaxRety']){rpcDb['createCustomerFinal'](_0x2a14b2,_0x56c6('0xe0'));}else{rpcDb[_0x56c6('0xa9')](ut[_0x56c6('0xaa')](_0x2a14b2,_0x56c6('0xde'),_0xc475f[_0x56c6('0xe2')]),_0x2a14b2[_0x56c6('0xab')],_0x2a14b2[_0x56c6('0xc9')]);}}}else{_0x2a14b2['countnoanswerretry']++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2[_0x56c6('0xad')],'field':{'countnoanswerretry':_0x2a14b2[_0x56c6('0xcb')]}})[_0x56c6('0x83')](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)['then'](function(){});});}});break;case'18':_0xc475f[_0x56c6('0x3e')]+=0x1;_0x2a14b2[_0x56c6('0xe3')]+=0x1;_0x2a14b2['countglobal']=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x12,_0x1ac17f[_0x56c6('0xe4')]||_0x1ac17f[_0x56c6('0xe5')]);ami[_0x56c6('0x5b')](_0x56c6('0xe6'),ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0xe7')));rpcDb['createCustomerHistory'](_0x2a14b2,_0x56c6('0xe8'));_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'18',_0xc475f)['then'](function(_0x10c04e){_0xf828ff=_0x10c04e[_0x56c6('0xa2')]==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0x12,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xe8'));}else{rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xe8'));}}else{_0x2a14b2['countnoanswerretry']++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2[_0x56c6('0xad')],'field':{'countnoanswerretry':_0x2a14b2[_0x56c6('0xcb')]}})[_0x56c6('0x83')](function(){_0x51f3ff['swapAdditionalPhones'](_0x2a14b2,_0x244b34,_0x42bce7)['then'](function(){});});}});delete this['actions'][_0x1ac17f[_0x56c6('0xe9')]];break;case'19':_0xc475f[_0x56c6('0x3e')]+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0x13,_0x1ac17f['cause-txt']||_0x1ac17f['dialstatus']);ami[_0x56c6('0x5b')](_0x56c6('0xe6'),ut[_0x56c6('0x9e')](_0x2a14b2,_0x56c6('0xe7')));rpcDb['createCustomerHistory'](_0x2a14b2,_0x56c6('0xea'));_0x51f3ff['verifyAdditionalPhones'](_0x2a14b2,'18',_0xc475f)[_0x56c6('0x83')](function(_0x4a8094){_0xf828ff=_0x4a8094[_0x56c6('0xa2')]==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f[_0x56c6('0xa4')]){_0x19bd81=ut['cloneAction'](_0x2a14b2,0xf,_0x56c6('0xc6'));rpcDb[_0x56c6('0x93')](_0x19bd81,_0x56c6('0xea'));}else{rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xea'));}}else{_0x2a14b2['countnoanswerretry']++;_0x51f3ff[_0x56c6('0xae')]({'id':_0x2a14b2['idContact'],'field':{'countnoanswerretry':_0x2a14b2[_0x56c6('0xcb')]}})[_0x56c6('0x83')](function(){_0x51f3ff[_0x56c6('0xaf')](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});});}});delete this[_0x56c6('0x16')][_0x1ac17f['linkedid']];break;default:if(_0x2a14b2['dialAnswer']){ut['decrementTalkink'](_0xc475f,'[default]');ut[_0x56c6('0x7c')](_0x56c6('0xeb')+_0xc475f[_0x56c6('0x50')],_0x1ac17f);}_0xc475f[_0x56c6('0x3e')]+=0x1;_0x2a14b2[_0x56c6('0x9a')]=ut[_0x56c6('0x9b')](_0x2a14b2);ut[_0x56c6('0x8e')](_0x2a14b2,0xc,_0x1ac17f[_0x56c6('0xe4')]||_0x1ac17f[_0x56c6('0xe5')]);_0x244b34=_0xc475f[_0x56c6('0xdd')];_0x42bce7=_0xc475f[_0x56c6('0xc2')];rpcDb[_0x56c6('0x8f')](_0x2a14b2,'[callProgressDetectingCustomer][logUnknown]');_0x51f3ff[_0x56c6('0xa1')](_0x2a14b2,'20',_0xc475f)[_0x56c6('0x83')](function(_0x1e64a0){_0xf828ff=_0x1e64a0['additional']==0x1;if(!_0xf828ff){if(ut[_0x56c6('0x9b')](_0x2a14b2)>=_0xc475f['dialGlobalMaxRetry']){_0x19bd81=ut[_0x56c6('0xa5')](_0x2a14b2,0xf,'Global');rpcDb['createCustomerFinal'](_0x19bd81,_0x56c6('0xec'));}else{rpcDb[_0x56c6('0x93')](_0x2a14b2,_0x56c6('0xec'));}delete this[_0x56c6('0x16')][_0x1ac17f['linkedid']];}else{_0x51f3ff['swapAdditionalPhones'](_0x2a14b2,_0x244b34,_0x42bce7)[_0x56c6('0x83')](function(){});}});}if(!(_0x2a14b2[_0x56c6('0x71')]&&_0x502a42==='16')){ut[_0x56c6('0x79')](_0xc475f,_0x56c6('0xed'));logger[_0x56c6('0x57')](_0x56c6('0xee'),_0x2a14b2[_0x56c6('0xb2')],'\x20Queue',_0xc475f['name'],'originated:\x20',_0xc475f[_0x56c6('0x48')]);}if(_0x502a42!==_0x56c6('0xb0')){delete this['actions'][_0x1ac17f['linkedid']];delete this[_0x56c6('0x16')][_0x1ac17f[_0x56c6('0xef')]];}}};Preview[_0x56c6('0x63')][_0x56c6('0xf0')]=function(_0x255ac2,_0x263f53,_0x50bb77){if(_[_0x56c6('0xf1')](_0x263f53)&&'object'!==typeof _0x263f53){return;}if(_['isUndefined'](_0x50bb77)&&_0x56c6('0xf2')!==typeof _0x50bb77){return;}switch(_0x50bb77['reason']){case'0':ut[_0x56c6('0xf3')](_0x255ac2,0x0,_0x56c6('0x9c'));rpcDb['createAgentHistory'](_0x255ac2,_0x56c6('0xf4'));break;case'3':ut[_0x56c6('0xf3')](_0x255ac2,0x3,_0x56c6('0xf5'));rpcDb['createAgentHistory'](_0x255ac2,_0x56c6('0xf6'));break;case'5':ut[_0x56c6('0xf3')](_0x255ac2,0x5,_0x56c6('0xc0'));rpcDb[_0x56c6('0xf7')](_0x255ac2,_0x56c6('0xf8'));break;case'8':ut[_0x56c6('0xf3')](_0x255ac2,0x8,_0x56c6('0xf9'));rpcDb['createAgentHistory'](_0x255ac2,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0x56c6('0xf3')](_0x255ac2,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x255ac2,_0x56c6('0xfa'));break;default:ut[_0x56c6('0xf3')](_0x255ac2,0xc,_0x50bb77[_0x56c6('0xfb')]);rpcDb[_0x56c6('0xf7')](_0x255ac2,_0x56c6('0xfc'));}ut[_0x56c6('0x79')](_0x263f53,_0x56c6('0xfd'));logger[_0x56c6('0x57')](_0x56c6('0xfe'),_0x255ac2[_0x56c6('0xb2')],_0x56c6('0xb3'),_0x263f53[_0x56c6('0x50')],_0x56c6('0x6f'),_0x263f53[_0x56c6('0x48')]);delete this['actions'][_0x255ac2['uniqueid']];};Preview[_0x56c6('0x63')][_0x56c6('0xa1')]=function(_0x4742a1,_0x3bc657,_0x1bb54d){return Promise[_0x56c6('0xff')]()[_0x56c6('0x83')](cmHopperAdditionalPhone[_0x56c6('0xa1')](_0x4742a1,_0x3bc657,_0x1bb54d))['catch'](logger[_0x56c6('0x57')](_0x56c6('0x100')));};Preview[_0x56c6('0x63')]['swapAdditionalPhones']=function(_0x570f4b,_0x39769a,_0x201b64){return Promise['resolve']()['then'](cmHopperAdditionalPhone[_0x56c6('0xaf')](_0x570f4b,_0x39769a,_0x201b64))[_0x56c6('0x78')](logger[_0x56c6('0x57')]('[swapAdditionalPhone]\x20'));};Preview[_0x56c6('0x63')]['incrementPreviewCounters']=function(_0x411b48){return Promise[_0x56c6('0xff')]()['then'](cmHopperAdditionalPhone[_0x56c6('0xae')](_0x411b48))[_0x56c6('0x78')](logger['info'](_0x56c6('0x101')));};Preview[_0x56c6('0x63')][_0x56c6('0x102')]=function(_0xa30677,_0x1eb174,_0x38518f,_0x224faa,_0x151cc1){var _0x1be9d8=this;return new Promise(function(_0x162a42,_0x54e025){if(_[_0x56c6('0x6b')](_0x1eb174)||_['isNil'](_0x1eb174[_0x56c6('0x103')])||_[_0x56c6('0x6b')](_0x1eb174['phone'])||_['isNil'](_0x1eb174[_0x56c6('0x104')])){_0x54e025(ut[_0x56c6('0x47')]('Contact\x20is\x20undefined',_0x224faa,_0x151cc1));return;}var _0x201499=uuid['v4']();var _0x37165e=_0x1be9d8[_0x56c6('0x24')][_0x1eb174['Queue'][_0x56c6('0x50')]];var _0xe0a64a=_0x38518f?_0x1be9d8['agents'][_0x38518f]['id']:undefined;_0x1be9d8[_0x56c6('0x16')][_0x201499]=new Action(_0x1eb174,_0x37165e,_0x201499,_0x38518f,_0xe0a64a);var _0x2c90d9=_0x1be9d8[_0x56c6('0x16')][_0x201499];_0x2c90d9[_0x56c6('0xab')]=_0x224faa;_0x2c90d9[_0x56c6('0xc9')]=_0x151cc1;_0x2c90d9[_0x56c6('0x105')]=_0x38518f;if(_[_0x56c6('0x106')](_0xa30677)){_0x1be9d8['execCall'](_0x2c90d9,_0x37165e,_0x1eb174,_0x38518f)[_0x56c6('0x83')](function(_0x4f3194){logger[_0x56c6('0x57')](_0x56c6('0x107'),'Queue:\x20'+_0x2c90d9[_0x56c6('0x6e')]+'\x20IdHopper:\x20'+_0x2c90d9[_0x56c6('0xad')],JSON[_0x56c6('0x54')](_0x4f3194));ami[_0x56c6('0x5b')]('custom:agentcalled',ut[_0x56c6('0x9e')](_0x2c90d9,_0x56c6('0x108'),_0x1be9d8[_0x56c6('0x24')][_0x2c90d9[_0x56c6('0x6e')]]));_0x162a42(ut[_0x56c6('0x47')](_0x56c6('0x109')));})['catch'](function(_0xb8cf40){ut['logger']('[Preview][execCall][failure]',_0xb8cf40);_0x54e025(ut['message'](_0x56c6('0x10a'),_0x224faa,_0x151cc1));});}else{_0x37165e[_0x56c6('0x34')]+=0x1;ut[_0x56c6('0x10b')](_0x2c90d9);rpcDb[_0x56c6('0x10c')](_0x2c90d9,_0x56c6('0x10d'));delete _0x1be9d8['actions'][_0x201499];_0x54e025(ut[_0x56c6('0x47')]('Contact\x20in\x20black\x20List',_0x224faa,_0x151cc1));}});};Preview[_0x56c6('0x63')][_0x56c6('0x95')]=function(_0x17e4ad){return!_[_0x56c6('0x6b')](_0x17e4ad)&&!_[_0x56c6('0x6b')](_0x17e4ad[_0x56c6('0x50')])&&!_[_0x56c6('0x6b')](_0x17e4ad[_0x56c6('0x51')])&&_0x17e4ad[_0x56c6('0x51')]&&!_[_0x56c6('0x6b')](this[_0x56c6('0x15')][util[_0x56c6('0x55')]('SIP/%s',_0x17e4ad[_0x56c6('0x50')])])&&!_[_0x56c6('0x6b')](this[_0x56c6('0x15')][util[_0x56c6('0x55')]('SIP/%s',_0x17e4ad[_0x56c6('0x50')])]['status'])&&(this[_0x56c6('0x15')][util[_0x56c6('0x55')](_0x56c6('0x10e'),_0x17e4ad[_0x56c6('0x50')])]['status']==='reachable'||this[_0x56c6('0x15')][util[_0x56c6('0x55')](_0x56c6('0x10e'),_0x17e4ad[_0x56c6('0x50')])]['status']===_0x56c6('0x10f'));};Preview['prototype'][_0x56c6('0x89')]=function(_0x31d180,_0xdb3661){return this['execRun'](_0x31d180,_0xdb3661)[_0x56c6('0x83')](function(_0x57006e){return _[_0x56c6('0x72')](_0x57006e,['message']);})[_0x56c6('0x78')](function(_0x407f42){if(_0x407f42[_0x56c6('0x110')]){rpcDb[_0x56c6('0x111')](_0x31d180);}if(_0x407f42['active']){rpcDb[_0x56c6('0x8c')](_0x31d180);}throw _['pick'](_0x407f42,[_0x56c6('0x47')]);});};Preview['prototype']['execRun']=function(_0x308862,_0x35bc86){var _0xc669b5=this;var _0x39445d,_0x234b66;return rpcDb[_0x56c6('0x112')](_0x308862)['then'](function(_0x366e8b){if(!_[_0x56c6('0x6b')](_0x366e8b[0x0])){_0x234b66=_0x366e8b[0x0]['recallme']?![]:!![];_0x39445d=_0x366e8b[0x0][_0x56c6('0x113')]?!![]:![];_0x39445d=_0x35bc86?!![]:_0x39445d;}var _0x513551=_0xc669b5['validateContact'](_0x366e8b);if(_0x513551[_0x56c6('0x114')]){rpcDb['checkIsBlackList'](_[_0x56c6('0x72')](_0x366e8b[0x0],[_0x56c6('0x104'),_0x56c6('0x115')]))[_0x56c6('0x83')](function(_0x9d578a){_0xc669b5[_0x56c6('0x102')](_0x9d578a,_0x366e8b[0x0],_0x35bc86,_0x234b66,_0x39445d)[_0x56c6('0x83')](function(_0x27497c){return _0x27497c;})[_0x56c6('0x78')](function(_0x4aeab8){throw _0x4aeab8;});})[_0x56c6('0x78')](function(_0x329cfc){ut[_0x56c6('0x5e')](_0x56c6('0x116'),_0x329cfc);throw ut[_0x56c6('0x47')](_0x56c6('0x117'),_0x234b66,_0x39445d);});}else{throw ut[_0x56c6('0x47')](_0x513551[_0x56c6('0x47')],_0x234b66,_0x39445d);}})[_0x56c6('0x78')](function(_0x441180){ut[_0x56c6('0x5e')](_0x56c6('0x118'),_0x441180);throw ut[_0x56c6('0x47')](_0x56c6('0x117'),![],!![]);});};Preview['prototype'][_0x56c6('0x119')]=function(_0x3d3d3a){if(_[_0x56c6('0x6b')](_0x3d3d3a)||_[_0x56c6('0x106')](_0x3d3d3a)||!_[_0x56c6('0x6b')](_0x3d3d3a[0x0]['Agent'])&&_[_0x56c6('0x6b')](_0x3d3d3a[0x0][_0x56c6('0x88')][_0x56c6('0x50')])){ut['logger'](_0x56c6('0x11a'),_0x3d3d3a);return{'isValid':![],'message':_0x56c6('0x11b')};}var _0x2dd9b4=this[_0x56c6('0x24')][_0x3d3d3a[0x0][_0x56c6('0x6d')]['name']];_0x2dd9b4['message']=_0x56c6('0x98');if(_[_0x56c6('0x6b')](_0x2dd9b4)){ut['logger'](_0x56c6('0x11c'),_0x2dd9b4);return{'isValid':![],'message':_0x56c6('0x11d')};}if(!this[_0x56c6('0x95')](_0x2dd9b4[_0x56c6('0x4f')])){ut['logger'](_0x56c6('0x11e'),_0x56c6('0x11f')+_0x2dd9b4[_0x56c6('0x50')]+_0x56c6('0x120'));if(!this[_0x56c6('0x95')](_0x2dd9b4[_0x56c6('0x96')])){ut['logger'](_0x56c6('0x11e'),_0x2dd9b4[_0x56c6('0x50')]+_0x56c6('0x121'));return{'isValid':![],'message':_0x56c6('0x122')};}}if(!ut['isActive'](_0x2dd9b4['dialActive'])){ut['logger']('[Preview][validateContact][Campaign\x20Active]',_0x2dd9b4['name']+_0x56c6('0x123'));return{'isValid':![],'message':_0x56c6('0x11f')+_0x2dd9b4['name']+_0x56c6('0x123')};}return{'isValid':!![],'message':_0x56c6('0x124')};};Preview[_0x56c6('0x63')][_0x56c6('0x125')]=function(_0x43bef8,_0x3c9a9f,_0x15b1af,_0x21969d){var _0x5b4bca=this;return new Promise(function(_0x145fff,_0x349b7e){var _0x24ddde=_0x43bef8[_0x56c6('0xb2')];var _0x1698f1=_0x5b4bca[_0x56c6('0x95')](_0x3c9a9f['Trunk'])?util[_0x56c6('0x55')](_0x56c6('0x126'),_0x3c9a9f[_0x56c6('0x4f')][_0x56c6('0x50')],_[_0x56c6('0x6b')](_0x3c9a9f[_0x56c6('0x32')])?'':_0x3c9a9f[_0x56c6('0x32')]['trim']()||'',_0x3c9a9f[_0x56c6('0x127')]>0x0?_0x15b1af[_0x56c6('0x115')][_0x56c6('0x128')](_0x3c9a9f[_0x56c6('0x127')]):_0x15b1af[_0x56c6('0x115')]):util[_0x56c6('0x55')](_0x56c6('0x126'),_[_0x56c6('0x6b')](_0x3c9a9f[_0x56c6('0x96')])?_0x3c9a9f[_0x56c6('0x4f')][_0x56c6('0x50')]:_0x3c9a9f[_0x56c6('0x96')][_0x56c6('0x50')],_[_0x56c6('0x6b')](_0x3c9a9f['dialPrefix'])?'':_0x3c9a9f[_0x56c6('0x32')][_0x56c6('0x129')]()||'',_0x3c9a9f[_0x56c6('0x127')]>0x0?_0x15b1af[_0x56c6('0x115')][_0x56c6('0x128')](_0x3c9a9f[_0x56c6('0x127')]):_0x15b1af['phone']);var _0x4c02b6=_0x5b4bca['isTrunkReachable'](_0x3c9a9f[_0x56c6('0x4f')])?ut[_0x56c6('0x12a')](_0x3c9a9f[_0x56c6('0x4f')][_0x56c6('0x52')],_0x3c9a9f[_0x56c6('0x12b')],_0x3c9a9f[_0x56c6('0x12c')]>0x0?ut[_0x56c6('0x12d')](_0x3c9a9f[_0x56c6('0x31')],_0x3c9a9f['dialRandomLastDigitCallerIdNumber']):_0x3c9a9f['dialOriginateCallerIdNumber']):ut['getCallerId'](_[_0x56c6('0x6b')](_0x3c9a9f[_0x56c6('0x96')])?_0x3c9a9f[_0x56c6('0x4f')][_0x56c6('0x52')]:_0x3c9a9f[_0x56c6('0x96')][_0x56c6('0x52')],_0x3c9a9f[_0x56c6('0x12b')],_0x3c9a9f['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x56c6('0x12d')](_0x3c9a9f[_0x56c6('0x31')],_0x3c9a9f[_0x56c6('0x12c')]):_0x3c9a9f[_0x56c6('0x31')]);if(_0x4c02b6){_0x43bef8[_0x56c6('0x12e')]=ut[_0x56c6('0x12f')](_0x4c02b6);_0x43bef8[_0x56c6('0x130')]=ut['extractCalleridNumber'](_0x4c02b6);}var _0x56b20c=ut[_0x56c6('0x131')](_0x3c9a9f,_0x15b1af,_0x1698f1,_0x4c02b6,_0x24ddde,_0x43bef8);_['merge'](_0x43bef8,ut[_0x56c6('0x132')](_0x56b20c));_0x43bef8[_0x56c6('0x133')]=moment()[_0x56c6('0x55')](_0x56c6('0x8d'));_0x3c9a9f['variables']=_0x56b20c;ami['Action'](ut['variablesAction'](_0x43bef8,_0x3c9a9f,_0x56b20c,_0x43bef8[_0x56c6('0xc9')],_0x21969d))['then'](function(_0x284672){_0x3c9a9f[_0x56c6('0x48')]+=0x1;logger[_0x56c6('0x57')](_0x56c6('0x134'),_0x24ddde,_0x56c6('0xb3'),_0x3c9a9f[_0x56c6('0x50')],_0x56c6('0x6f'),_0x3c9a9f['originated']);_0x145fff(_0x284672);})[_0x56c6('0x78')](function(_0x4dac9c){ut['logAgent'](_0x43bef8,0xe,_0x56c6('0x135'));rpcDb[_0x56c6('0xf7')](_0x43bef8,_0x56c6('0x136'));_0x349b7e(_0x4dac9c);});});};Preview[_0x56c6('0x63')][_0x56c6('0x137')]=function(_0x2251a4){if(this[_0x56c6('0x16')][_0x2251a4[_0x56c6('0xe9')]]){this[_0x56c6('0x16')][_0x2251a4['linkedid']][_0x56c6('0x138')]=_0x2251a4[_0x56c6('0x138')];}};Preview[_0x56c6('0x63')][_0x56c6('0x19')]=function(_0x5c236f){var _0x4e4e3d=this;var _0x256553=this[_0x56c6('0x16')][_0x5c236f['actionid']];if(_0x256553){if(_0x256553[_0x56c6('0x105')]&&this['agents'][_0x256553[_0x56c6('0x105')]]){ut[_0x56c6('0x139')](_0x256553,this['agents'][_0x256553[_0x56c6('0x105')]][_0x56c6('0x50')],this[_0x56c6('0x17')][_0x256553[_0x56c6('0x105')]]['id']);}var _0x92faa9=_[_0x56c6('0x13a')](_0x256553);_0x92faa9[_0x56c6('0xb1')]=moment()['format'](_0x56c6('0x8d'));var _0x31b509=_0x4e4e3d['campaignsPreview'][_0x256553[_0x56c6('0x6e')]];if(ut[_0x56c6('0x13b')](_0x5c236f[_0x56c6('0x13c')])){if(_0x256553[_0x56c6('0xab')]){rpcDb['unlockContact'](_0x256553['idContact']);}if(_0x256553[_0x56c6('0xc9')]){rpcDb['disableContact'](_0x256553[_0x56c6('0xad')]);}ami[_0x56c6('0x5b')](_0x56c6('0x13d'),ut[_0x56c6('0x9e')](_0x256553,_0x56c6('0x13e'),this[_0x56c6('0x24')][_0x256553[_0x56c6('0x6e')]]));this['callProgressDetectingAgent'](_0x92faa9,_0x31b509,_0x5c236f);}else{_0x256553[_0x56c6('0x133')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');ut[_0x56c6('0xf3')](_0x92faa9,0x4,_0x56c6('0xba'));rpcDb['createAgentHistory'](_0x92faa9,_0x56c6('0x13f'));}}};Preview['prototype'][_0x56c6('0x140')]=function(_0x271832){var _0x1ce8b1=this[_0x56c6('0x16')][_0x271832['linkedid']];var _0x5977b1;if(_0x1ce8b1){_0x5977b1=this[_0x56c6('0x24')][_0x1ce8b1['queue']];logger[_0x56c6('0x57')](_0x56c6('0x141'),_0x271832[_0x56c6('0xe9')],_0x56c6('0xb3'),_0x5977b1[_0x56c6('0x50')],_0x56c6('0xb4'),_0x5977b1['pTalking']);}if(this['actions'][_0x271832['linkedid']]&&_0x271832[_0x56c6('0xe9')]!==_0x271832[_0x56c6('0xb2')]){if(_0x271832[_0x56c6('0x142')]==='16'&&this[_0x56c6('0x16')][_0x271832['linkedid']][_0x56c6('0x71')]){this[_0x56c6('0x99')](_0x271832,_0x271832[_0x56c6('0xe9')],_0x271832['cause']);}else if(this[_0x56c6('0x16')][_0x271832[_0x56c6('0xe9')]][_0x56c6('0x71')]){logger[_0x56c6('0x57')](_0x56c6('0x143'),_0x271832[_0x56c6('0xe9')],_0x271832[_0x56c6('0x142')],_0x56c6('0xb3'),_0x5977b1[_0x56c6('0x50')],'pTalking:\x20',_0x5977b1['pTalking']);this[_0x56c6('0x99')](_0x271832,_0x271832['linkedid'],_0x271832[_0x56c6('0x142')]);}}else if(_0x1ce8b1&&_[_0x56c6('0x6b')](_0x1ce8b1[_0x56c6('0x144')])&&_0x5977b1[_0x56c6('0x145')]&&_0x271832['linkedid']===_0x271832[_0x56c6('0xb2')]&&_[_0x56c6('0x6b')](_0x271832[_0x56c6('0xfb')])&&_0x271832[_0x56c6('0x142')]==='16'&&_0x271832[_0x56c6('0x146')]==='6'&&_[_0x56c6('0xf1')](_0x1ce8b1['transfer'])){if(_0x1ce8b1[_0x56c6('0xab')]){rpcDb['unlockContact'](_0x1ce8b1[_0x56c6('0xad')]);}if(_0x1ce8b1[_0x56c6('0xc9')]){rpcDb[_0x56c6('0x8c')](_0x1ce8b1[_0x56c6('0xad')]);}_0x271832['reason']='22';this['callProgressDetectingAgent'](_0x1ce8b1,_0x5977b1,_0x271832);}else if(_0x1ce8b1&&_0x1ce8b1['transfer']){if(_0x271832['cause']==='16'&&this['actions'][_0x271832[_0x56c6('0xe9')]]['dialAnswer']){logger['info']('[syncHangup][talking][transfer]',_0x271832['linkedid'],_0x271832[_0x56c6('0x142')],_0x56c6('0xb3'),_0x5977b1[_0x56c6('0x50')],_0x56c6('0xb4'),_0x5977b1[_0x56c6('0x70')]);this['callProgressDetectingCustomer'](_0x271832,_0x271832['linkedid'],_0x271832['cause']);}else if(this['actions'][_0x271832[_0x56c6('0xe9')]][_0x56c6('0x71')]){logger['info'](_0x56c6('0x143'),_0x271832[_0x56c6('0xe9')],_0x271832['cause'],'\x20Queue',_0x5977b1['name'],'pTalking:\x20',_0x5977b1['pTalking']);this[_0x56c6('0x99')](_0x271832,_0x271832[_0x56c6('0xe9')],_0x271832[_0x56c6('0x142')]);}}};Preview['prototype'][_0x56c6('0x1d')]=function(_0x2a5aa7){if(this[_0x56c6('0x16')][_0x2a5aa7['destlinkedid']]&&_0x2a5aa7[_0x56c6('0xef')]!==_0x2a5aa7[_0x56c6('0x147')]){this[_0x56c6('0x99')](_0x2a5aa7,_0x2a5aa7[_0x56c6('0xef')],_0x2a5aa7[_0x56c6('0xe5')]);}};Preview[_0x56c6('0x63')][_0x56c6('0x148')]=function(_0x2fce7c){if(this[_0x56c6('0x16')][_0x2fce7c['linkedid']]&&_0x2fce7c['linkedid']!==_0x2fce7c['uniqueid']&&!this['actions'][_0x2fce7c[_0x56c6('0xe9')]]['dialAnswer']){if(_0x2fce7c[_0x56c6('0x142')]==='1'){this[_0x56c6('0x99')](_0x2fce7c,_0x2fce7c['linkedid'],_0x2fce7c['cause']);}}};Preview[_0x56c6('0x63')][_0x56c6('0x149')]=function(_0x53d120,_0x2fe557,_0x53aaa2){if(this['actions'][_0x53d120]){if(_['isNil'](this['actions'][_0x53d120][_0x56c6('0x14a')])){this['actions'][_0x53d120][_0x56c6('0x14a')]={};}this[_0x56c6('0x16')][_0x53d120][_0x56c6('0x14a')][_0x2fe557]=_0x53aaa2;}};Preview[_0x56c6('0x63')]['syncVarSet']=function(_0x3f8e7e){try{if(!_[_0x56c6('0x6b')](_0x3f8e7e)){if(ut[_0x56c6('0x14b')](_[_0x56c6('0x14c')](_0x3f8e7e[_0x56c6('0x14d')])[0x0])){this[_0x56c6('0x149')](_0x3f8e7e[_0x56c6('0xb2')],_[_0x56c6('0x14c')](_0x3f8e7e[_0x56c6('0x14d')])[0x0],_0x3f8e7e[_0x56c6('0x14e')]);}}}catch(_0x553b75){logger[_0x56c6('0x14f')](_0x56c6('0x150'),util[_0x56c6('0x151')](_0x553b75,{'showHidden':![],'depth':null}));}};Preview['prototype'][_0x56c6('0x20')]=function(_0x594b3c){if(_0x594b3c){if(this['actions'][_0x594b3c[_0x56c6('0x152')]]){this[_0x56c6('0x16')][_0x594b3c[_0x56c6('0x152')]][_0x56c6('0x153')]=!![];}}};Preview[_0x56c6('0x63')]['syncBlindTransfer']=function(_0x19d980){if(_0x19d980){if(this[_0x56c6('0x16')][_0x19d980[_0x56c6('0x154')]]){this[_0x56c6('0x16')][_0x19d980[_0x56c6('0x154')]][_0x56c6('0x153')]=!![];}}};module[_0x56c6('0x155')]=Preview;
\ No newline at end of file
+var _0xee4a=['custom:agentcomplete','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','[syncHangup][talking][decrement]','countbusyretry','Busy','dialBusyRetryFrequency','callAdditionalPhoneAfterMin','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','unlockAgent','NOANSWER','outboundNoAnswerCallsDay','countnoanswerretry','NoAnswer','dialNoAnswerRetryFrequency','[callProgressDetectingCustomer][logNoAnswer]','dialNoAnswerMaxRetry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','countcongestionretry','CANCEL','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','AgentReject','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','dialAgentRejectRetryFrequency','ABANDONED','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','dialAbandonedMaxRety','cause-txt','dialstatus','amd','[callProgressDetectingCustomer][hangupInAMD]','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknownGlobal]','updateOriginated','\x20Queue','ANSWER','destlinkedid','callProgressDetectingAgent','isUndefined','object','reason','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','logAgent','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent][logCongestion]','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[verifyAdditionalPhone]\x20','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','Contact','phone','VoiceQueueId','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','active','SIP/%s','run','execRun','unlock','getContactPreview','recallme','validateContact','isValid','[Preview][checkIsBlackList]','Call\x20unsuccessful','[Preview][getContactPreview]','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','campaign\x20Name:\x20','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','extractCalleridName','originatecalleridnum','addVariables','merge','toLowerVariables','YYYY-MM-DD\x20HH:mm:ss','variables','variablesAction','[originated][increment]','syncNewExten','syncOriginateResponse','actionid','lookAgent','rejected','[syncHangup][talking]','cause','[syncHangup][talking][cause]','statedesc','channelstate','transfer','unlockContact','[syncHangup][talking][transfer]','syncDialEnd','destuniqueid','addVariable','filterKey','keys','variable','value','error','[syncVarSet][Preview]','transfertargetlinkedid','syncBlindTransfer','transfererlinkedid','exports','util','uuid','moment','md5','../../../config/environment','preview','actionPreview','./rpcDb','./action','./util/util','redis','localhost','prototype','enqueue','finally','sequence','campaignsPreview','voiceQueues','trunks','actions','clockClearZombieChannels','bind','hangup','syncHangup','hanguprequest','syncHangupRequest','dialend','varset','syncVarSet','attendedtransfer','blindtransfer','loopCampaigns','emit','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','message','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','name','callerid','Interval','stringify','format','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','voice_queue_channel:remove','voice_queue_presence:remove','originated','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','[CampaignPreview]\x20Campaign\x20Queue:\x20','DEACTIVATED','syncCampaigns','hasOwnProperty','clearZombieChannels','outbound','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','[clearZombieChannels][talking]','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','ListId','Action','status','catch','No\x20such\x20channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][pTalking][Preview]','[action]','getContactRecallMe','agentReadyId','agents','then','length','scheduledat','Agent','voicePause','logger2','[RecallMe]','disableContact','starttime','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','[HistoryRecallClose]','IsNotLoggedIn','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countnosuchnumberretry','countglobal','totalGlobal','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','additional','dialNoSuchNumberRetryFrequency','dialGlobalMaxRetry','cloneAction','Global','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','dialNoSuchNumberMaxRetry','rescheduleContact','scheduledAt','activeContact','linkedid','idContact','incrementPreviewCounters','swapAdditionalPhones','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','connect','acw','custom:agentConnectPreview','buildAcw'];(function(_0x4e82be,_0x36d848){var _0x465945=function(_0x1af156){while(--_0x1af156){_0x4e82be['push'](_0x4e82be['shift']());}};_0x465945(++_0x36d848);}(_0xee4a,0x9e));var _0xaee4=function(_0x1b6460,_0x34824a){_0x1b6460=_0x1b6460-0x0;var _0xe4353f=_0xee4a[_0x1b6460];return _0xe4353f;};'use strict';var util=require(_0xaee4('0x0'));var _=require('lodash');var uuid=require(_0xaee4('0x1'));var moment=require(_0xaee4('0x2'));var md5=require(_0xaee4('0x3'));var Redis=require('ioredis');var config=require(_0xaee4('0x4'));var logger=require('../../../config/logger')(_0xaee4('0x5'));var loggerAction=require('../../../config/logger')(_0xaee4('0x6'));var ami=require('../ami');var rpcDb=require(_0xaee4('0x7'));var cmHopperAdditionalPhone=require('../rpc/cmHopperAdditionalPhone');var Action=require(_0xaee4('0x8'));var ut=require(_0xaee4('0x9'));config[_0xaee4('0xa')]=_['defaults'](config[_0xaee4('0xa')],{'host':_0xaee4('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xaee4('0xa')]));var Sequence=function(){};Sequence[_0xaee4('0xc')][_0xaee4('0xd')]=function(_0x3c75a7){this['tail']=this['tail']?this['tail'][_0xaee4('0xe')](_0x3c75a7):_0x3c75a7();};function Preview(_0x38524f){this[_0xaee4('0xf')]=new Sequence();this[_0xaee4('0x10')]=_0x38524f[_0xaee4('0x11')];this[_0xaee4('0x12')]=_0x38524f[_0xaee4('0x12')];this[_0xaee4('0x13')]={};this['agents']=_0x38524f['agents'];this[_0xaee4('0x14')]=0x0;ami['on']('originateresponse',this['syncOriginateResponse'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x16'),this[_0xaee4('0x17')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x18'),this[_0xaee4('0x19')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1a'),this['syncDialEnd'][_0xaee4('0x15')](this));ami['on']('newexten',this['syncNewExten'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1b'),this[_0xaee4('0x1c')][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1d'),this['syncAttendedTransfer'][_0xaee4('0x15')](this));ami['on'](_0xaee4('0x1e'),this['syncBlindTransfer'][_0xaee4('0x15')](this));this[_0xaee4('0x1f')](this['campaignsPreview']);}function emit(_0x506725,_0x4e93e7,_0x27d73f){io['to'](_0x506725)[_0xaee4('0x20')](_0x4e93e7,_0x27d73f);}function emitCampaignPreview(_0x3f58c1){if(_0x3f58c1['type']==='outbound'){var _0x14091f={'id':_0x3f58c1['id'],'name':_0x3f58c1['name'],'strategy':_0x3f58c1[_0xaee4('0x21')],'answered':_0x3f58c1[_0xaee4('0x22')],'available':_0x3f58c1['available'],'loggedIn':_0x3f58c1[_0xaee4('0x23')],'pTalking':_0x3f58c1[_0xaee4('0x24')],'sumBillable':_0x3f58c1[_0xaee4('0x25')],'sumDuration':_0x3f58c1[_0xaee4('0x26')],'sumHoldTime':_0x3f58c1[_0xaee4('0x27')]||0x0,'talking':_0x3f58c1[_0xaee4('0x28')],'total':_0x3f58c1[_0xaee4('0x29')],'type':_0x3f58c1[_0xaee4('0x2a')],'unmanaged':_0x3f58c1[_0xaee4('0x2b')],'abandoned':_0x3f58c1[_0xaee4('0x2c')],'waiting':_0x3f58c1[_0xaee4('0x2d')],'loggedInDb':_0x3f58c1[_0xaee4('0x2e')],'dialActive':_0x3f58c1[_0xaee4('0x2f')],'dialMethod':_0x3f58c1[_0xaee4('0x30')],'dialOriginateCallerIdName':_0x3f58c1[_0xaee4('0x31')],'dialOriginateCallerIdNumber':_0x3f58c1['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x3f58c1[_0xaee4('0x32')],'dialPrefix':_0x3f58c1[_0xaee4('0x33')],'outboundAnswerAgiCallsDay':_0x3f58c1[_0xaee4('0x34')],'outboundAnswerCallsDay':_0x3f58c1['outboundAnswerCallsDay'],'outboundBlacklistCallsDay':_0x3f58c1[_0xaee4('0x35')],'outboundBusyCallsDay':_0x3f58c1[_0xaee4('0x36')],'outboundCongestionCallsDay':_0x3f58c1[_0xaee4('0x37')],'outboundDropCallsDayACS':_0x3f58c1[_0xaee4('0x38')],'outboundDropCallsDayCallersExit':_0x3f58c1[_0xaee4('0x39')],'outboundDropCallsDayTimeout':_0x3f58c1[_0xaee4('0x3a')],'outboundNoAnswerCallsDay':_0x3f58c1['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x3f58c1['outboundNoSuchCallsDay'],'outboundOriginateFailureCallsDay':_0x3f58c1[_0xaee4('0x3b')],'outboundReCallsDay':_0x3f58c1[_0xaee4('0x3c')],'outboundRejectCallsDay':_0x3f58c1[_0xaee4('0x3d')],'outboundUnknownCallsDay':_0x3f58c1[_0xaee4('0x3e')],'outboundAbandonedCallsDay':_0x3f58c1[_0xaee4('0x3f')],'predictiveIntervalAnsweredCalls':_0x3f58c1['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0x3f58c1[_0xaee4('0x40')],'predictiveIntervalAvgTalktime':_0x3f58c1[_0xaee4('0x41')],'predictiveIntervalDroppedCallsCallersExit':_0x3f58c1[_0xaee4('0x42')],'predictiveIntervalDroppedCallsTimeout':_0x3f58c1[_0xaee4('0x43')],'predictiveIntervalErlangCalls':_0x3f58c1[_0xaee4('0x44')],'predictiveIntervalErlangCallsDroppedCalls':_0x3f58c1[_0xaee4('0x45')],'predictiveIntervalHitRate':_0x3f58c1[_0xaee4('0x46')],'predictiveIntervalMultiplicativeFactor':_0x3f58c1['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x3f58c1[_0xaee4('0x47')],'predictiveIntervalAvailable':_0x3f58c1[_0xaee4('0x48')],'predictiveIntervalTotalCalls':_0x3f58c1['predictiveIntervalTotalCalls'],'message':_0x3f58c1[_0xaee4('0x49')],'originated':_0x3f58c1['originated'],'erlangCalls':_0x3f58c1[_0xaee4('0x4a')],'erlangCallToSecond':_0x3f58c1['erlangCallToSecond'],'erlangAbandonmentRate':_0x3f58c1[_0xaee4('0x4b')],'erlangBusyFactor':_0x3f58c1[_0xaee4('0x4c')],'startPredictive':_0x3f58c1[_0xaee4('0x4d')],'startProgressive':_0x3f58c1[_0xaee4('0x4e')]};if(_0x3f58c1['Trunk']){_0x14091f[_0xaee4('0x4f')]={'id':_0x3f58c1[_0xaee4('0x4f')]['id'],'name':_0x3f58c1[_0xaee4('0x4f')][_0xaee4('0x50')],'active':_0x3f58c1[_0xaee4('0x4f')]['active'],'callerid':_0x3f58c1[_0xaee4('0x4f')][_0xaee4('0x51')]};}if(_0x3f58c1[_0xaee4('0x52')]){_0x14091f[_0xaee4('0x52')]={'id':_0x3f58c1[_0xaee4('0x52')]['id'],'name':_0x3f58c1['Interval'][_0xaee4('0x50')]};}var _0x3e1946=md5(JSON[_0xaee4('0x53')](_0x14091f));if(_0x3f58c1['md5']!==_0x3e1946){_0x3f58c1[_0xaee4('0x3')]=_0x3e1946;emit(util[_0xaee4('0x54')](_0xaee4('0x55'),_0x14091f['name']),_0xaee4('0x56'),_0x14091f);}}}function emitVoiceQueueChannelRemove(_0x5e00d0){logger[_0xaee4('0x57')](_0xaee4('0x58'),JSON[_0xaee4('0x53')](_0x5e00d0));emit(util['format'](_0xaee4('0x55'),_0x5e00d0[_0xaee4('0x50')]),_0xaee4('0x59'),_0x5e00d0);io[_0xaee4('0x20')](_0xaee4('0x5a'),_0x5e00d0);}function notSendMessagesQueue(_0x364e62){if(_0x364e62['sendMessageOneNotActive']){if(_0x364e62[_0xaee4('0x5b')]===0x0&&_0x364e62['pTalking']===0x0){_0x364e62[_0xaee4('0x5c')]=![];_0x364e62[_0xaee4('0x5d')]=0x0;_0x364e62[_0xaee4('0x5e')]=0x0;_0x364e62['message']=_0xaee4('0x5f');ut[_0xaee4('0x60')](_0xaee4('0x61'),_0x364e62[_0xaee4('0x50')]+'\x20is\x20not\x20active');}else{_0x364e62[_0xaee4('0x49')]=_0xaee4('0x62');ut['logger'](_0xaee4('0x61'),_0x364e62[_0xaee4('0x50')]+'\x20is\x20deactivated');}emitCampaignPreview(_0x364e62);}}Preview[_0xaee4('0xc')]['loopCampaigns']=function(){var _0x489c10=this;setInterval(function(){_0x489c10[_0xaee4('0x63')]();},0x7cf);};Preview[_0xaee4('0xc')]['syncCampaigns']=function(){var _0x30558d=this[_0xaee4('0x10')];this[_0xaee4('0x14')]+=0x1;for(var _0x57275a in _0x30558d){if(_0x30558d[_0xaee4('0x64')](_0x57275a)&&(_0x30558d[_0x57275a]['dialMethod']===_0xaee4('0x5')||_0x30558d[_0x57275a]['dialMethod']==='booked')&&_0x30558d[_0x57275a][_0xaee4('0x2a')]==='outbound'){if(this['clockClearZombieChannels']>0x7){this[_0xaee4('0x14')]=0x0;this[_0xaee4('0x65')]();}}if(_0x30558d['hasOwnProperty'](_0x57275a)&&_0x30558d[_0x57275a][_0xaee4('0x30')]===_0xaee4('0x5')&&_0x30558d[_0x57275a][_0xaee4('0x2a')]===_0xaee4('0x66')){if(_0x30558d[_0x57275a][_0xaee4('0x2f')]){this[_0xaee4('0x67')](_0x30558d[_0x57275a]);if(_0x30558d[_0x57275a][_0xaee4('0x68')])this[_0xaee4('0x69')](_0x30558d[_0x57275a]);}else{notSendMessagesQueue(_0x30558d[_0x57275a]);}}}};Preview[_0xaee4('0xc')][_0xaee4('0x6a')]=function(_0x5cccbf){var _0x12046f=this;this[_0xaee4('0xf')][_0xaee4('0xd')](function(){if(!_[_0xaee4('0x6b')](_0x12046f[_0xaee4('0x13')][_0x5cccbf])){loggerAction[_0xaee4('0x57')](_0xaee4('0x6c'),_0x5cccbf,_0xaee4('0x6d'),_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')],_0xaee4('0x6f'),JSON[_0xaee4('0x53')](_0x12046f['campaignsPreview'][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]][_0xaee4('0x5b')]),_0xaee4('0x70'),JSON[_0xaee4('0x53')](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf]['queue']][_0xaee4('0x24')]),JSON[_0xaee4('0x53')](_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x71')]),JSON['stringify'](_[_0xaee4('0x72')](_0x12046f[_0xaee4('0x13')][_0x5cccbf],[_0xaee4('0x73'),'UserId','VoiceQueueId',_0xaee4('0x74')])));return ami[_0xaee4('0x75')]({'action':_0xaee4('0x76'),'channel':_0x12046f['actions'][_0x5cccbf]['channel']})[_0xaee4('0x77')](function(_0xed77fc){if(_0xed77fc['message']===_0xaee4('0x78')){setTimeout(function(){if(_0x12046f['actions'][_0x5cccbf]){ut['updateOriginated'](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]],_0xaee4('0x79'));if(_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x71')]===!![]){ut[_0xaee4('0x7a')](_0x12046f[_0xaee4('0x10')][_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]],'[clearZombieChannel]');ut[_0xaee4('0x7b')](_0xaee4('0x7c')+_0x5cccbf,_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]);}ut['loggerError']('[Dialer][checkChannel][Preview]'+_0x5cccbf,_0x12046f[_0xaee4('0x13')][_0x5cccbf][_0xaee4('0x6e')]);delete _0x12046f['actions'][_0x5cccbf];}},0x2328);}});}});};Preview['prototype'][_0xaee4('0x65')]=function(){var _0x18a15f=this;loggerAction['info'](_0xaee4('0x7d'),_['size'](this['actions']));for(var _0x17a46f in this['actions']){if(_0x18a15f['actions'][_0xaee4('0x64')](_0x17a46f)){_0x18a15f[_0xaee4('0x6a')](_0x17a46f);}}};Preview['prototype'][_0xaee4('0x69')]=function(_0xce46f9){var _0x591295=this;rpcDb[_0xaee4('0x7e')](_0xce46f9['id'],ut[_0xaee4('0x7f')](this[_0xaee4('0x80')]))[_0xaee4('0x81')](function(_0x305c98){if(!_['isNil'](_0x305c98)){for(var _0x3efd15=0x0;_0x3efd15<_0x305c98[_0xaee4('0x82')];_0x3efd15+=0x1){if(ut['getDiff'](_0x305c98[_0x3efd15][_0xaee4('0x83')])<_0xce46f9['dialRecallMeTimeout']*0x3c){if(_0x305c98[_0x3efd15][_0xaee4('0x84')]&&!_0x305c98[_0x3efd15][_0xaee4('0x84')][_0xaee4('0x85')]){_0x591295['run'](_0x305c98[_0x3efd15]['id'])[_0xaee4('0x81')](ut[_0xaee4('0x86')](_0xaee4('0x87')))[_0xaee4('0x77')](ut['logger2'](_0xaee4('0x87')));}else{rpcDb[_0xaee4('0x88')](_0x305c98[_0x3efd15]['id']);}}else{var _0x2fe666=new Action(_0x305c98[_0x3efd15],_0xce46f9);_0x2fe666[_0xaee4('0x89')]=moment()[_0xaee4('0x54')]('YYYY-MM-DD\x20HH:mm:ss');_0xce46f9[_0xaee4('0x3c')]+=0x1;ut[_0xaee4('0x8a')](_0x2fe666,0x17,_0xaee4('0x8b'));if(_0xce46f9[_0xaee4('0x8c')]){rpcDb[_0xaee4('0x8d')](ut[_0xaee4('0x8e')](_0x305c98[_0x3efd15]));rpcDb[_0xaee4('0x8f')](_0x2fe666,_0xaee4('0x90'));}else{ut[_0xaee4('0x8a')](_0x2fe666,0x16,'RecallFailedTimeout');rpcDb[_0xaee4('0x8f')](_0x2fe666,_0xaee4('0x91'));rpcDb['createCustomerFinal'](_0x2fe666,_0xaee4('0x91'));}}}}})[_0xaee4('0x77')](ut[_0xaee4('0x86')]('[getContactRecallMe]'));};Preview[_0xaee4('0xc')][_0xaee4('0x67')]=function(_0x1e1d3d){_0x1e1d3d[_0xaee4('0x5c')]=!![];if(ut[_0xaee4('0x92')](_0x1e1d3d[_0xaee4('0x23')])){_0x1e1d3d[_0xaee4('0x49')]='AGENTS_NOT_LOGGED';}else if(!ut[_0xaee4('0x93')](_0x1e1d3d['dialActive'])){_0x1e1d3d[_0xaee4('0x49')]=_0xaee4('0x5f');}else if(!this[_0xaee4('0x94')](_0x1e1d3d[_0xaee4('0x4f')])){if(!this['isTrunkReachable'](_0x1e1d3d[_0xaee4('0x95')])){_0x1e1d3d['message']=_0xaee4('0x96');}else{_0x1e1d3d['message']=_0xaee4('0x97');}}else{_0x1e1d3d[_0xaee4('0x49')]=_0xaee4('0x97');}emitCampaignPreview(_0x1e1d3d);};Preview['prototype'][_0xaee4('0x98')]=function(_0x17f21b,_0x5142d3,_0x29801c){var _0x5abad7=this;var _0x2504a1=this[_0xaee4('0x13')][_0x5142d3];var _0x9f0d7e=this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]];var _0xb6846;var _0x259b0e=![];var _0x4a2d09=0x2;var _0x4cfcde=0x3;if(_0x9f0d7e){switch(_0x29801c){case'1':_0x9f0d7e['outboundNoSuchCallsDay']+=0x1;_0x2504a1[_0xaee4('0x99')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut['logCustomer'](_0x2504a1,0x0,'NoSuchNumber');ami[_0xaee4('0x20')](_0xaee4('0x9c'),ut[_0xaee4('0x9d')](_0x2504a1,'nosuchnumber'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0x9e'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'0',_0x9f0d7e)[_0xaee4('0x81')](function(_0x5ebb79){_0x259b0e=_0x5ebb79[_0xaee4('0xa0')]==0x1;_0x4a2d09=_0x9f0d7e[_0xaee4('0xa1')];_0x4cfcde=_0x9f0d7e['callAdditionalPhoneAfterMin'];if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xa6'));}else{if(_0x2504a1['countnosuchnumberretry']>=_0x9f0d7e[_0xaee4('0xa7')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xa6'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0x99'),_0x9f0d7e[_0xaee4('0xa1')]),_0x2504a1['unlockAgent'],_0x2504a1[_0xaee4('0xaa')]);}}delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];}else{_0x2504a1[_0xaee4('0x99')]++;logger[_0xaee4('0x57')]('actioncountonusuch',_0x2504a1[_0xaee4('0x99')]);logger[_0xaee4('0x57')]('id',_0x2504a1[_0xaee4('0xac')]);_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnosuchnumberretry':_0x2504a1[_0xaee4('0x99')]}})['then'](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'ANSWER':var _0xeab2b6=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x2504a1[_0xaee4('0xaf')]=_0xeab2b6;_0x2504a1[_0xaee4('0xb0')]=_0xeab2b6;_0x2504a1[_0xaee4('0x71')]=!![];_0x9f0d7e[_0xaee4('0x24')]+=0x1;logger['info'](_0xaee4('0xb1'),_0x2504a1[_0xaee4('0xb2')],'\x20Queue',_0x9f0d7e['name'],_0xaee4('0x70'),_0x9f0d7e[_0xaee4('0x24')]);ami[_0xaee4('0x20')](_0xaee4('0xb3'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xb4'),this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]]));if(_0x9f0d7e[_0xaee4('0xb5')]){ami[_0xaee4('0x20')](_0xaee4('0xb6'),ut[_0xaee4('0xb7')](_0x2504a1));}break;case'16':ami[_0xaee4('0x20')](_0xaee4('0xb8'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xb9'),this[_0xaee4('0x10')][_0x2504a1[_0xaee4('0x6e')]]));emitVoiceQueueChannelRemove(ut[_0xaee4('0x9d')](_0x2504a1,'complete'));_0x9f0d7e['outboundAnswerCallsDay']+=0x1;_0x9f0d7e[_0xaee4('0x29')]+=0x1;_0x9f0d7e[_0xaee4('0x22')]+=0x1;ut['decrementTalkink'](_0x9f0d7e,_0xaee4('0xba'));_0x2504a1[_0xaee4('0x9a')]=ut['totalGlobal'](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x4,_0xaee4('0xbb'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xbc'));rpcDb['createCustomerFinal'](_0x2504a1,_0xaee4('0xbd'));rpcDb[_0xaee4('0xbe')](_0x2504a1);_0x9f0d7e[_0xaee4('0x26')]+=_0x2504a1[_0xaee4('0xbf')];_0x9f0d7e[_0xaee4('0x25')]+=_0x2504a1[_0xaee4('0xbf')];logger['info'](_0xaee4('0xc0'),_0x2504a1[_0xaee4('0xb2')],'\x20Queue',_0x9f0d7e[_0xaee4('0x50')],_0xaee4('0x70'),_0x9f0d7e['pTalking']);delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];break;case'BUSY':_0x9f0d7e[_0xaee4('0x36')]+=0x1;_0x2504a1[_0xaee4('0xc1')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x5,_0xaee4('0xc2'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xc3')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami['emit'](_0xaee4('0xc5'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xc6')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xc7'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'5',_0x9f0d7e)[_0xaee4('0x81')](function(_0x3190ea){_0x259b0e=_0x3190ea[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x2504a1[_0xaee4('0xc1')]>=_0x9f0d7e['dialBusyMaxRetry']){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xc7'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xc1'),_0x9f0d7e[_0xaee4('0xc3')]),_0x2504a1[_0xaee4('0xc8')],_0x2504a1[_0xaee4('0xaa')]);}}}else{_0x2504a1[_0xaee4('0xc1')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countbusyretry':_0x2504a1[_0xaee4('0xc1')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)['then'](function(){});});}});break;case _0xaee4('0xc9'):_0x9f0d7e[_0xaee4('0xca')]+=0x1;_0x2504a1[_0xaee4('0xcb')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut['logCustomer'](_0x2504a1,0x3,_0xaee4('0xcc'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xcd')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];var _0x2aee91=ut['buildNoAnswerEventPayload'](_0x2504a1,_0x9f0d7e);ami[_0xaee4('0x20')]('custom:agentnoanswer',_0x2aee91);rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xce'));_0x5abad7['verifyAdditionalPhones'](_0x2504a1,'3',_0x9f0d7e)[_0xaee4('0x81')](function(_0x323b74){_0x259b0e=_0x323b74[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e['dialGlobalMaxRetry']){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logNoAnswerGlobal]');}else{if(_0x2504a1[_0xaee4('0xcb')]>=_0x9f0d7e[_0xaee4('0xcf')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xce'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xcb'),_0x9f0d7e['dialNoAnswerRetryFrequency']),_0x2504a1[_0xaee4('0xc8')],_0x2504a1[_0xaee4('0xaa')]);}}}else{_0x2504a1['countnoanswerretry']++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'CONGESTION':_0x9f0d7e['outboundCongestionCallsDay']+=0x1;_0x2504a1['countcongestionretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x8,_0xaee4('0xd0'));_0x4a2d09=_0x9f0d7e[_0xaee4('0xd1')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami[_0xaee4('0x20')](_0xaee4('0xd2'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xd3')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xd4'));_0x5abad7['verifyAdditionalPhones'](_0x2504a1,'8',_0x9f0d7e)[_0xaee4('0x81')](function(_0xeb6c7){_0x259b0e=_0xeb6c7[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,'Global');rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x2504a1['countcongestionretry']>=_0x9f0d7e[_0xaee4('0xd5')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xd4'));}else{rpcDb['rescheduleContact'](ut[_0xaee4('0xa9')](_0x2504a1,_0xaee4('0xd6'),_0x9f0d7e[_0xaee4('0xc3')]),_0x2504a1[_0xaee4('0xc8')],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xd6')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1['idContact'],'field':{'countcongestionretry':_0x2504a1[_0xaee4('0xd6')]}})[_0xaee4('0x81')](function(){_0x5abad7['swapAdditionalPhones'](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case _0xaee4('0xd7'):_0x9f0d7e[_0xaee4('0x3d')]+=0x1;_0x2504a1['countagentrejectretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x14,'AgentReject');_0x4a2d09=_0x9f0d7e['dialAgentRejectRetryFrequency'];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];ami[_0xaee4('0x20')](_0xaee4('0xd8'),ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xd9')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xda'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'20',_0x9f0d7e)[_0xaee4('0x81')](function(_0xdf21d1){_0x259b0e=_0xdf21d1[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e['dialGlobalMaxRetry']){_0xb6846=ut['cloneAction'](_0x2504a1,0x14,_0xaee4('0xdb'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xdc'));}else{if(_0x2504a1['countagentrejectretry']>=_0x9f0d7e['dialAgentRejectMaxRetry']){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xdc'));}else{rpcDb['rescheduleContact'](ut['scheduledAt'](_0x2504a1,_0xaee4('0xdd'),_0x9f0d7e[_0xaee4('0xde')]),_0x2504a1['unlockAgent'],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case _0xaee4('0xdf'):_0x9f0d7e[_0xaee4('0x3f')]+=0x1;_0x2504a1[_0xaee4('0xe0')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0xb,_0xaee4('0xe1'));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe2'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'11',_0x9f0d7e)[_0xaee4('0x81')](function(_0xf4b97c){_0x259b0e=_0xf4b97c[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut['totalGlobal'](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xe2'));}else{if(_0x2504a1[_0xaee4('0xe3')]>=_0x9f0d7e[_0xaee4('0xe4')]){rpcDb[_0xaee4('0xa5')](_0x2504a1,_0xaee4('0xe2'));}else{rpcDb[_0xaee4('0xa8')](ut[_0xaee4('0xa9')](_0x2504a1,'countabandonedretry',_0x9f0d7e['dialAbandonedRetryFrequency']),_0x2504a1[_0xaee4('0xc8')],_0x2504a1['activeContact']);}}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1['countnoanswerretry']}})['then'](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});break;case'18':_0x9f0d7e['outboundUnknownCallsDay']+=0x1;_0x2504a1['countmachineretry']+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut['totalGlobal'](_0x2504a1);ut['logCustomer'](_0x2504a1,0x12,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b[_0xaee4('0xe6')]);ami[_0xaee4('0x20')]('custom:amd',ut[_0xaee4('0x9d')](_0x2504a1,_0xaee4('0xe7')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe8'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'18',_0x9f0d7e)[_0xaee4('0x81')](function(_0x1f264a){_0x259b0e=_0x1f264a[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0x12,'Global');rpcDb['createCustomerFinal'](_0xb6846,_0xaee4('0xe8'));}else{rpcDb['createCustomerFinal'](_0x2504a1,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x2504a1['countnoanswerretry']++;_0x5abad7[_0xaee4('0xad')]({'id':_0x2504a1[_0xaee4('0xac')],'field':{'countnoanswerretry':_0x2504a1['countnoanswerretry']}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)['then'](function(){});});}});delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];break;case'19':_0x9f0d7e[_0xaee4('0x3e')]+=0x1;_0x2504a1['countglobal']=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0x13,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b[_0xaee4('0xe6')]);ami[_0xaee4('0x20')]('custom:amd',ut['buildObj'](_0x2504a1,_0xaee4('0xe7')));rpcDb[_0xaee4('0x8f')](_0x2504a1,_0xaee4('0xe9'));_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'18',_0x9f0d7e)[_0xaee4('0x81')](function(_0x1c1cb9){_0x259b0e=_0x1c1cb9[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut[_0xaee4('0xa3')](_0x2504a1,0xf,_0xaee4('0xa4'));rpcDb[_0xaee4('0xa5')](_0xb6846,'[callProgressDetectingCustomer][machine]');}else{rpcDb['createCustomerFinal'](_0x2504a1,_0xaee4('0xe9'));}}else{_0x2504a1[_0xaee4('0xcb')]++;_0x5abad7['incrementPreviewCounters']({'id':_0x2504a1['idContact'],'field':{'countnoanswerretry':_0x2504a1[_0xaee4('0xcb')]}})[_0xaee4('0x81')](function(){_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});});}});delete this['actions'][_0x17f21b[_0xaee4('0xab')]];break;default:if(_0x2504a1['dialAnswer']){ut['decrementTalkink'](_0x9f0d7e,_0xaee4('0xea'));ut[_0xaee4('0x7b')](_0xaee4('0xeb')+_0x9f0d7e[_0xaee4('0x50')],_0x17f21b);}_0x9f0d7e[_0xaee4('0x3e')]+=0x1;_0x2504a1[_0xaee4('0x9a')]=ut[_0xaee4('0x9b')](_0x2504a1);ut[_0xaee4('0x8a')](_0x2504a1,0xc,_0x17f21b[_0xaee4('0xe5')]||_0x17f21b['dialstatus']);_0x4a2d09=_0x9f0d7e[_0xaee4('0xde')];_0x4cfcde=_0x9f0d7e[_0xaee4('0xc4')];rpcDb[_0xaee4('0x8f')](_0x2504a1,'[callProgressDetectingCustomer][logUnknown]');_0x5abad7[_0xaee4('0x9f')](_0x2504a1,'20',_0x9f0d7e)[_0xaee4('0x81')](function(_0x2d2180){_0x259b0e=_0x2d2180[_0xaee4('0xa0')]==0x1;if(!_0x259b0e){if(ut[_0xaee4('0x9b')](_0x2504a1)>=_0x9f0d7e[_0xaee4('0xa2')]){_0xb6846=ut['cloneAction'](_0x2504a1,0xf,'Global');rpcDb[_0xaee4('0xa5')](_0xb6846,_0xaee4('0xec'));}else{rpcDb[_0xaee4('0xa5')](_0x2504a1,'[callProgressDetectingCustomer][logUnknownGlobal]');}delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];}else{_0x5abad7[_0xaee4('0xae')](_0x2504a1,_0x4a2d09,_0x4cfcde)[_0xaee4('0x81')](function(){});}});}if(!(_0x2504a1['dialAnswer']&&_0x29801c==='16')){ut[_0xaee4('0xed')](_0x9f0d7e,'[callProgressDetectingCustomer]');logger['info']('[originated][decrement][callProgressDetectingCustomer]',_0x2504a1[_0xaee4('0xb2')],_0xaee4('0xee'),_0x9f0d7e[_0xaee4('0x50')],_0xaee4('0x6f'),_0x9f0d7e[_0xaee4('0x5b')]);}if(_0x29801c!==_0xaee4('0xef')){delete this[_0xaee4('0x13')][_0x17f21b[_0xaee4('0xab')]];delete this['actions'][_0x17f21b[_0xaee4('0xf0')]];}}};Preview[_0xaee4('0xc')][_0xaee4('0xf1')]=function(_0x53f76e,_0x16783c,_0x4b06b0){if(_[_0xaee4('0xf2')](_0x16783c)&&_0xaee4('0xf3')!==typeof _0x16783c){return;}if(_[_0xaee4('0xf2')](_0x4b06b0)&&'object'!==typeof _0x4b06b0){return;}switch(_0x4b06b0[_0xaee4('0xf4')]){case'0':ut['logAgent'](_0x53f76e,0x0,_0xaee4('0xf5'));rpcDb[_0xaee4('0xf6')](_0x53f76e,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut['logAgent'](_0x53f76e,0x3,_0xaee4('0xcc'));rpcDb['createAgentHistory'](_0x53f76e,_0xaee4('0xf7'));break;case'5':ut['logAgent'](_0x53f76e,0x5,'Busy');rpcDb[_0xaee4('0xf6')](_0x53f76e,_0xaee4('0xf8'));break;case'8':ut[_0xaee4('0xf9')](_0x53f76e,0x8,_0xaee4('0xd0'));rpcDb[_0xaee4('0xf6')](_0x53f76e,'[callProgressDetectingAgent][logCongestion]');break;case'22':ut[_0xaee4('0xf9')](_0x53f76e,0x16,'AnswerAGI');rpcDb['createAgentHistory'](_0x53f76e,_0xaee4('0xfa'));break;default:ut['logAgent'](_0x53f76e,0xc,_0x4b06b0[_0xaee4('0xf4')]);rpcDb[_0xaee4('0xf6')](_0x53f76e,_0xaee4('0xfb'));}ut[_0xaee4('0xed')](_0x16783c,_0xaee4('0xfc'));logger[_0xaee4('0x57')](_0xaee4('0xfd'),_0x53f76e['uniqueid'],_0xaee4('0xee'),_0x16783c[_0xaee4('0x50')],_0xaee4('0x6f'),_0x16783c['originated']);delete this['actions'][_0x53f76e[_0xaee4('0xb2')]];};Preview[_0xaee4('0xc')][_0xaee4('0x9f')]=function(_0x457419,_0x10e417,_0x347084){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone[_0xaee4('0x9f')](_0x457419,_0x10e417,_0x347084))[_0xaee4('0x77')](logger[_0xaee4('0x57')](_0xaee4('0xff')));};Preview['prototype'][_0xaee4('0xae')]=function(_0x2cffcc,_0x2f7061,_0x3baf40){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone['swapAdditionalPhones'](_0x2cffcc,_0x2f7061,_0x3baf40))[_0xaee4('0x77')](logger[_0xaee4('0x57')](_0xaee4('0x100')));};Preview[_0xaee4('0xc')][_0xaee4('0xad')]=function(_0x4bd009){return Promise[_0xaee4('0xfe')]()[_0xaee4('0x81')](cmHopperAdditionalPhone[_0xaee4('0xad')](_0x4bd009))['catch'](logger[_0xaee4('0x57')](_0xaee4('0x101')));};Preview[_0xaee4('0xc')][_0xaee4('0x102')]=function(_0x413b45,_0x301471,_0x3b976d,_0x5751b4,_0x4f8675){var _0x362056=this;return new Promise(function(_0x1a2fe2,_0x1ba16c){if(_['isNil'](_0x301471)||_[_0xaee4('0x6b')](_0x301471[_0xaee4('0x103')])||_['isNil'](_0x301471[_0xaee4('0x104')])||_[_0xaee4('0x6b')](_0x301471[_0xaee4('0x105')])){_0x1ba16c(ut['message'](_0xaee4('0x106'),_0x5751b4,_0x4f8675));return;}var _0x395c1d=uuid['v4']();var _0x1e18f1=_0x362056[_0xaee4('0x10')][_0x301471['Queue'][_0xaee4('0x50')]];var _0x4a8714=_0x3b976d?_0x362056[_0xaee4('0x80')][_0x3b976d]['id']:undefined;_0x362056[_0xaee4('0x13')][_0x395c1d]=new Action(_0x301471,_0x1e18f1,_0x395c1d,_0x3b976d,_0x4a8714);var _0xf0e8f1=_0x362056[_0xaee4('0x13')][_0x395c1d];_0xf0e8f1[_0xaee4('0xc8')]=_0x5751b4;_0xf0e8f1[_0xaee4('0xaa')]=_0x4f8675;_0xf0e8f1['lookAgent']=_0x3b976d;if(_[_0xaee4('0x107')](_0x413b45)){_0x362056[_0xaee4('0x108')](_0xf0e8f1,_0x1e18f1,_0x301471,_0x3b976d)[_0xaee4('0x81')](function(_0x58c00d){logger[_0xaee4('0x57')](_0xaee4('0x109'),_0xaee4('0x10a')+_0xf0e8f1['queue']+_0xaee4('0x10b')+_0xf0e8f1[_0xaee4('0xac')],JSON[_0xaee4('0x53')](_0x58c00d));ami['emit'](_0xaee4('0x10c'),ut[_0xaee4('0x9d')](_0xf0e8f1,_0xaee4('0x10d'),_0x362056[_0xaee4('0x10')][_0xf0e8f1['queue']]));_0x1a2fe2(ut[_0xaee4('0x49')]('Calling'));})[_0xaee4('0x77')](function(_0x41e367){ut['logger'](_0xaee4('0x10e'),_0x41e367);_0x1ba16c(ut[_0xaee4('0x49')](_0xaee4('0x10f'),_0x5751b4,_0x4f8675));});}else{_0x1e18f1[_0xaee4('0x35')]+=0x1;ut[_0xaee4('0x110')](_0xf0e8f1);rpcDb[_0xaee4('0x111')](_0xf0e8f1,_0xaee4('0x112'));delete _0x362056[_0xaee4('0x13')][_0x395c1d];_0x1ba16c(ut[_0xaee4('0x49')](_0xaee4('0x113'),_0x5751b4,_0x4f8675));}});};Preview['prototype'][_0xaee4('0x94')]=function(_0x3b1c5f){return!_[_0xaee4('0x6b')](_0x3b1c5f)&&!_['isNil'](_0x3b1c5f[_0xaee4('0x50')])&&!_['isNil'](_0x3b1c5f[_0xaee4('0x114')])&&_0x3b1c5f[_0xaee4('0x114')]&&!_[_0xaee4('0x6b')](this[_0xaee4('0x12')][util[_0xaee4('0x54')](_0xaee4('0x115'),_0x3b1c5f['name'])])&&!_[_0xaee4('0x6b')](this[_0xaee4('0x12')][util[_0xaee4('0x54')](_0xaee4('0x115'),_0x3b1c5f[_0xaee4('0x50')])][_0xaee4('0x76')])&&(this[_0xaee4('0x12')][util['format']('SIP/%s',_0x3b1c5f[_0xaee4('0x50')])][_0xaee4('0x76')]==='reachable'||this['trunks'][util[_0xaee4('0x54')]('SIP/%s',_0x3b1c5f['name'])][_0xaee4('0x76')]==='unmonitored');};Preview[_0xaee4('0xc')][_0xaee4('0x116')]=function(_0x259069,_0x5054a0){return this[_0xaee4('0x117')](_0x259069,_0x5054a0)['then'](function(_0x4d0378){return _[_0xaee4('0x72')](_0x4d0378,[_0xaee4('0x49')]);})[_0xaee4('0x77')](function(_0x9dedf5){if(_0x9dedf5[_0xaee4('0x118')]){rpcDb['unlockContact'](_0x259069);}if(_0x9dedf5[_0xaee4('0x114')]){rpcDb[_0xaee4('0x88')](_0x259069);}throw _[_0xaee4('0x72')](_0x9dedf5,['message']);});};Preview[_0xaee4('0xc')][_0xaee4('0x117')]=function(_0x32c8f6,_0x5c2176){var _0x24d2dc=this;var _0x359f17,_0x2af92d;return rpcDb[_0xaee4('0x119')](_0x32c8f6)[_0xaee4('0x81')](function(_0x164cbf){if(!_[_0xaee4('0x6b')](_0x164cbf[0x0])){_0x2af92d=_0x164cbf[0x0][_0xaee4('0x11a')]?![]:!![];_0x359f17=_0x164cbf[0x0][_0xaee4('0x11a')]?!![]:![];_0x359f17=_0x5c2176?!![]:_0x359f17;}var _0x328daf=_0x24d2dc[_0xaee4('0x11b')](_0x164cbf);if(_0x328daf[_0xaee4('0x11c')]){rpcDb['checkIsBlackList'](_[_0xaee4('0x72')](_0x164cbf[0x0],[_0xaee4('0x105'),_0xaee4('0x104')]))[_0xaee4('0x81')](function(_0x5042e5){_0x24d2dc[_0xaee4('0x102')](_0x5042e5,_0x164cbf[0x0],_0x5c2176,_0x2af92d,_0x359f17)[_0xaee4('0x81')](function(_0x57b443){return _0x57b443;})[_0xaee4('0x77')](function(_0xaf12c3){throw _0xaf12c3;});})['catch'](function(_0x5ed6f7){ut['logger'](_0xaee4('0x11d'),_0x5ed6f7);throw ut[_0xaee4('0x49')](_0xaee4('0x11e'),_0x2af92d,_0x359f17);});}else{throw ut['message'](_0x328daf[_0xaee4('0x49')],_0x2af92d,_0x359f17);}})['catch'](function(_0x492c42){ut[_0xaee4('0x60')](_0xaee4('0x11f'),_0x492c42);throw ut[_0xaee4('0x49')](_0xaee4('0x11e'),![],!![]);});};Preview[_0xaee4('0xc')][_0xaee4('0x11b')]=function(_0x13cd45){if(_['isNil'](_0x13cd45)||_[_0xaee4('0x107')](_0x13cd45)||!_[_0xaee4('0x6b')](_0x13cd45[0x0][_0xaee4('0x84')])&&_[_0xaee4('0x6b')](_0x13cd45[0x0][_0xaee4('0x84')][_0xaee4('0x50')])){ut['logger'](_0xaee4('0x120'),_0x13cd45);return{'isValid':![],'message':_0xaee4('0x121')};}var _0x41d06f=this[_0xaee4('0x10')][_0x13cd45[0x0][_0xaee4('0x6d')][_0xaee4('0x50')]];_0x41d06f['message']=_0xaee4('0x97');if(_['isNil'](_0x41d06f)){ut[_0xaee4('0x60')](_0xaee4('0x122'),_0x41d06f);return{'isValid':![],'message':_0xaee4('0x123')};}if(!this[_0xaee4('0x94')](_0x41d06f[_0xaee4('0x4f')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0xaee4('0x124')+_0x41d06f[_0xaee4('0x50')]+'\x20Trunk\x20is\x20not\x20active');if(!this[_0xaee4('0x94')](_0x41d06f[_0xaee4('0x95')])){ut[_0xaee4('0x60')](_0xaee4('0x125'),_0x41d06f['name']+_0xaee4('0x126'));return{'isValid':![],'message':_0xaee4('0x127')};}}if(!ut[_0xaee4('0x93')](_0x41d06f[_0xaee4('0x2f')])){ut['logger'](_0xaee4('0x128'),_0x41d06f['name']+_0xaee4('0x129'));return{'isValid':![],'message':_0xaee4('0x124')+_0x41d06f['name']+'\x20Not\x20Active'};}return{'isValid':!![],'message':_0xaee4('0x12a')};};Preview['prototype'][_0xaee4('0x108')]=function(_0x1f77e9,_0x4d1417,_0x5c9630,_0x2b0000){var _0x50c6fb=this;return new Promise(function(_0x1932e7,_0x3d1d8b){var _0x128e34=_0x1f77e9[_0xaee4('0xb2')];var _0x5d0d8e=_0x50c6fb[_0xaee4('0x94')](_0x4d1417[_0xaee4('0x4f')])?util['format'](_0xaee4('0x12b'),_0x4d1417['Trunk'][_0xaee4('0x50')],_['isNil'](_0x4d1417[_0xaee4('0x33')])?'':_0x4d1417[_0xaee4('0x33')][_0xaee4('0x12c')]()||'',_0x4d1417[_0xaee4('0x12d')]>0x0?_0x5c9630['phone'][_0xaee4('0x12e')](_0x4d1417[_0xaee4('0x12d')]):_0x5c9630[_0xaee4('0x104')]):util[_0xaee4('0x54')](_0xaee4('0x12b'),_[_0xaee4('0x6b')](_0x4d1417[_0xaee4('0x95')])?_0x4d1417[_0xaee4('0x4f')]['name']:_0x4d1417[_0xaee4('0x95')][_0xaee4('0x50')],_[_0xaee4('0x6b')](_0x4d1417['dialPrefix'])?'':_0x4d1417[_0xaee4('0x33')][_0xaee4('0x12c')]()||'',_0x4d1417[_0xaee4('0x12d')]>0x0?_0x5c9630[_0xaee4('0x104')][_0xaee4('0x12e')](_0x4d1417[_0xaee4('0x12d')]):_0x5c9630[_0xaee4('0x104')]);var _0x228a80=_0x50c6fb[_0xaee4('0x94')](_0x4d1417[_0xaee4('0x4f')])?ut[_0xaee4('0x12f')](_0x4d1417[_0xaee4('0x4f')][_0xaee4('0x51')],_0x4d1417[_0xaee4('0x31')],_0x4d1417[_0xaee4('0x130')]>0x0?ut[_0xaee4('0x131')](_0x4d1417[_0xaee4('0x132')],_0x4d1417[_0xaee4('0x130')]):_0x4d1417[_0xaee4('0x132')]):ut[_0xaee4('0x12f')](_[_0xaee4('0x6b')](_0x4d1417['TrunkBackup'])?_0x4d1417[_0xaee4('0x4f')][_0xaee4('0x51')]:_0x4d1417[_0xaee4('0x95')][_0xaee4('0x51')],_0x4d1417['dialOriginateCallerIdName'],_0x4d1417[_0xaee4('0x130')]>0x0?ut[_0xaee4('0x131')](_0x4d1417[_0xaee4('0x132')],_0x4d1417[_0xaee4('0x130')]):_0x4d1417[_0xaee4('0x132')]);if(_0x228a80){_0x1f77e9['originatecalleridname']=ut[_0xaee4('0x133')](_0x228a80);_0x1f77e9[_0xaee4('0x134')]=ut['extractCalleridNumber'](_0x228a80);}var _0x596e8e=ut[_0xaee4('0x135')](_0x4d1417,_0x5c9630,_0x5d0d8e,_0x228a80,_0x128e34,_0x1f77e9);_[_0xaee4('0x136')](_0x1f77e9,ut[_0xaee4('0x137')](_0x596e8e));_0x1f77e9[_0xaee4('0x89')]=moment()[_0xaee4('0x54')](_0xaee4('0x138'));_0x4d1417[_0xaee4('0x139')]=_0x596e8e;ami[_0xaee4('0x75')](ut[_0xaee4('0x13a')](_0x1f77e9,_0x4d1417,_0x596e8e,_0x1f77e9['activeContact'],_0x2b0000))[_0xaee4('0x81')](function(_0x2c05cd){_0x4d1417[_0xaee4('0x5b')]+=0x1;logger['info'](_0xaee4('0x13b'),_0x128e34,_0xaee4('0xee'),_0x4d1417[_0xaee4('0x50')],_0xaee4('0x6f'),_0x4d1417['originated']);_0x1932e7(_0x2c05cd);})[_0xaee4('0x77')](function(_0x46a3cc){ut[_0xaee4('0xf9')](_0x1f77e9,0xe,'OriginateError');rpcDb['createAgentHistory'](_0x1f77e9,'[originateFailure][logOriginateFailure]');_0x3d1d8b(_0x46a3cc);});});};Preview[_0xaee4('0xc')][_0xaee4('0x13c')]=function(_0x4f2d1d){if(this['actions'][_0x4f2d1d[_0xaee4('0xab')]]){this[_0xaee4('0x13')][_0x4f2d1d[_0xaee4('0xab')]]['channel']=_0x4f2d1d['channel'];}};Preview['prototype'][_0xaee4('0x13d')]=function(_0xef1aa3){var _0x56331c=this;var _0x38682b=this['actions'][_0xef1aa3[_0xaee4('0x13e')]];if(_0x38682b){if(_0x38682b['lookAgent']&&this[_0xaee4('0x80')][_0x38682b[_0xaee4('0x13f')]]){ut['logLookAgent'](_0x38682b,this[_0xaee4('0x80')][_0x38682b['lookAgent']][_0xaee4('0x50')],this[_0xaee4('0x80')][_0x38682b[_0xaee4('0x13f')]]['id']);}var _0x3d7267=_['clone'](_0x38682b);_0x3d7267[_0xaee4('0xaf')]=moment()['format'](_0xaee4('0x138'));var _0x5d5011=_0x56331c[_0xaee4('0x10')][_0x38682b[_0xaee4('0x6e')]];if(ut['isFailure'](_0xef1aa3['response'])){if(_0x38682b[_0xaee4('0xc8')]){rpcDb['unlockContact'](_0x38682b[_0xaee4('0xac')]);}if(_0x38682b[_0xaee4('0xaa')]){rpcDb[_0xaee4('0x88')](_0x38682b[_0xaee4('0xac')]);}ami[_0xaee4('0x20')]('custom:agentringnoanswer',ut['buildObj'](_0x38682b,_0xaee4('0x140'),this[_0xaee4('0x10')][_0x38682b[_0xaee4('0x6e')]]));this['callProgressDetectingAgent'](_0x3d7267,_0x5d5011,_0xef1aa3);}else{_0x38682b[_0xaee4('0x89')]=moment()[_0xaee4('0x54')]('YYYY-MM-DD\x20HH:mm:ss');ut[_0xaee4('0xf9')](_0x3d7267,0x4,_0xaee4('0xbb'));rpcDb[_0xaee4('0xf6')](_0x3d7267,'[callProgressDetectingAgent][logAnswer]');}}};Preview[_0xaee4('0xc')]['syncHangup']=function(_0x5a45df){var _0x3d056c=this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]];var _0x3dff99;if(_0x3d056c){_0x3dff99=this['campaignsPreview'][_0x3d056c[_0xaee4('0x6e')]];logger[_0xaee4('0x57')](_0xaee4('0x141'),_0x5a45df[_0xaee4('0xab')],_0xaee4('0xee'),_0x3dff99['name'],_0xaee4('0x70'),_0x3dff99[_0xaee4('0x24')]);}if(this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]]&&_0x5a45df[_0xaee4('0xab')]!==_0x5a45df['uniqueid']){if(_0x5a45df[_0xaee4('0x142')]==='16'&&this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){this['callProgressDetectingCustomer'](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df['cause']);}else if(this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){logger[_0xaee4('0x57')](_0xaee4('0x143'),_0x5a45df['linkedid'],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99[_0xaee4('0x50')],_0xaee4('0x70'),_0x3dff99[_0xaee4('0x24')]);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')]);}}else if(_0x3d056c&&_[_0xaee4('0x6b')](_0x3d056c[_0xaee4('0x144')])&&_0x3dff99['dialQueueProject']&&_0x5a45df['linkedid']===_0x5a45df[_0xaee4('0xb2')]&&_[_0xaee4('0x6b')](_0x5a45df[_0xaee4('0xf4')])&&_0x5a45df['cause']==='16'&&_0x5a45df[_0xaee4('0x145')]==='6'&&_[_0xaee4('0xf2')](_0x3d056c[_0xaee4('0x146')])){if(_0x3d056c[_0xaee4('0xc8')]){rpcDb[_0xaee4('0x147')](_0x3d056c[_0xaee4('0xac')]);}if(_0x3d056c[_0xaee4('0xaa')]){rpcDb['disableContact'](_0x3d056c[_0xaee4('0xac')]);}_0x5a45df[_0xaee4('0xf4')]='22';this[_0xaee4('0xf1')](_0x3d056c,_0x3dff99,_0x5a45df);}else if(_0x3d056c&&_0x3d056c[_0xaee4('0x146')]){if(_0x5a45df[_0xaee4('0x142')]==='16'&&this[_0xaee4('0x13')][_0x5a45df['linkedid']][_0xaee4('0x71')]){logger['info'](_0xaee4('0x148'),_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99['name'],'pTalking:\x20',_0x3dff99[_0xaee4('0x24')]);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df['linkedid'],_0x5a45df['cause']);}else if(this[_0xaee4('0x13')][_0x5a45df[_0xaee4('0xab')]][_0xaee4('0x71')]){logger[_0xaee4('0x57')](_0xaee4('0x143'),_0x5a45df['linkedid'],_0x5a45df[_0xaee4('0x142')],_0xaee4('0xee'),_0x3dff99[_0xaee4('0x50')],_0xaee4('0x70'),_0x3dff99['pTalking']);this[_0xaee4('0x98')](_0x5a45df,_0x5a45df[_0xaee4('0xab')],_0x5a45df[_0xaee4('0x142')]);}}};Preview[_0xaee4('0xc')][_0xaee4('0x149')]=function(_0x18981a){if(this[_0xaee4('0x13')][_0x18981a[_0xaee4('0xf0')]]&&_0x18981a[_0xaee4('0xf0')]!==_0x18981a[_0xaee4('0x14a')]){this[_0xaee4('0x98')](_0x18981a,_0x18981a[_0xaee4('0xf0')],_0x18981a[_0xaee4('0xe6')]);}};Preview[_0xaee4('0xc')]['syncHangupRequest']=function(_0x296aa5){if(this[_0xaee4('0x13')][_0x296aa5[_0xaee4('0xab')]]&&_0x296aa5[_0xaee4('0xab')]!==_0x296aa5[_0xaee4('0xb2')]&&!this[_0xaee4('0x13')][_0x296aa5[_0xaee4('0xab')]][_0xaee4('0x71')]){if(_0x296aa5[_0xaee4('0x142')]==='1'){this[_0xaee4('0x98')](_0x296aa5,_0x296aa5['linkedid'],_0x296aa5[_0xaee4('0x142')]);}}};Preview[_0xaee4('0xc')][_0xaee4('0x14b')]=function(_0x3e9218,_0x452581,_0x58551b){if(this[_0xaee4('0x13')][_0x3e9218]){if(_['isNil'](this['actions'][_0x3e9218][_0xaee4('0x139')])){this[_0xaee4('0x13')][_0x3e9218][_0xaee4('0x139')]={};}this[_0xaee4('0x13')][_0x3e9218][_0xaee4('0x139')][_0x452581]=_0x58551b;}};Preview[_0xaee4('0xc')][_0xaee4('0x1c')]=function(_0x142dc6){try{if(!_['isNil'](_0x142dc6)){if(ut[_0xaee4('0x14c')](_[_0xaee4('0x14d')](_0x142dc6[_0xaee4('0x14e')])[0x0])){this[_0xaee4('0x14b')](_0x142dc6['uniqueid'],_[_0xaee4('0x14d')](_0x142dc6[_0xaee4('0x14e')])[0x0],_0x142dc6[_0xaee4('0x14f')]);}}}catch(_0x4f5c49){logger[_0xaee4('0x150')](_0xaee4('0x151'),util['inspect'](_0x4f5c49,{'showHidden':![],'depth':null}));}};Preview['prototype']['syncAttendedTransfer']=function(_0x21f455){if(_0x21f455){if(this[_0xaee4('0x13')][_0x21f455[_0xaee4('0x152')]]){this[_0xaee4('0x13')][_0x21f455[_0xaee4('0x152')]][_0xaee4('0x146')]=!![];}}};Preview[_0xaee4('0xc')][_0xaee4('0x153')]=function(_0x1b35ae){if(_0x1b35ae){if(this['actions'][_0x1b35ae[_0xaee4('0x154')]]){this[_0xaee4('0x13')][_0x1b35ae['transfererlinkedid']][_0xaee4('0x146')]=!![];}}};module[_0xaee4('0x155')]=Preview;
\ No newline at end of file
index d79280c..15ddddf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaa6e=['[rescheduleContactInQueue]\x20','util','bluebird','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','error','inspect','then','catch','[createHistory]\x20','resolve','moveContactManagedDialer','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createHistory','createAgentHistory','createCustomerHistory','createCustomerFinal','rescheduleContact','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','holdtime','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','create','[voiceQueueReport]\x20','getContactRecallMe','rescheduleContactInQueue'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xaa6e,0x123));var _0xeaa6=function(_0x47dec1,_0x460fd3){_0x47dec1=_0x47dec1-0x0;var _0xbbbf3=_0xaa6e[_0x47dec1];return _0xbbbf3;};'use strict';var util=require(_0xeaa6('0x0'));var BPromise=require(_0xeaa6('0x1'));var logger=require(_0xeaa6('0x2'))('preview');var _=require(_0xeaa6('0x3'));var cmHopper=require(_0xeaa6('0x4'));var cmHopperFinal=require(_0xeaa6('0x5'));var cmHopperHistory=require(_0xeaa6('0x6'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0xeaa6('0x7'));var agentReportPreview=require(_0xeaa6('0x8'));var voiceQueueReport=require('../rpc/voiceQueueReport');function loggerCatch(_0x4fb054){return function(_0x135a5d){logger[_0xeaa6('0x9')](_0x4fb054,util[_0xeaa6('0xa')](_0x135a5d,{'showHidden':![],'depth':null}));};}function create(_0x315322){return BPromise['resolve']()[_0xeaa6('0xb')](cmHopperHistory['createHistory'](_0x315322))[_0xeaa6('0xc')](loggerCatch(_0xeaa6('0xd')));}function createAgent(_0x544866){return BPromise[_0xeaa6('0xe')]()[_0xeaa6('0xb')](agentReportPreview['createHistory'](_0x544866))[_0xeaa6('0xc')](loggerCatch('[createHistory]\x20'));}function moveContact(_0x4f567c){return BPromise[_0xeaa6('0xe')]()[_0xeaa6('0xb')](cmHopper[_0xeaa6('0xf')](_0x4f567c,!![]))[_0xeaa6('0xc')](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0xeaa6('0x10')]=function(_0xcafd48){return BPromise[_0xeaa6('0xe')]()['then'](cmHopperBlack[_0xeaa6('0x10')](_0xcafd48))[_0xeaa6('0xc')](loggerCatch('[checkIsBlackList]\x20'));};exports['getContactPreview']=function(_0x29d4c6){return BPromise[_0xeaa6('0xe')]()['then'](cmHopper[_0xeaa6('0x11')](_0x29d4c6))[_0xeaa6('0xc')](loggerCatch(_0xeaa6('0x12')));};exports[_0xeaa6('0x13')]=function(_0x1294dd,_0x31b7e3){create(_0x1294dd)[_0xeaa6('0xc')](loggerCatch(_0x31b7e3));moveContact(_0x1294dd)[_0xeaa6('0xc')](loggerCatch(_0x31b7e3));};exports[_0xeaa6('0x14')]=function(_0x5d846f,_0xdc7e89){createAgent(_0x5d846f)[_0xeaa6('0xc')](loggerCatch(_0xdc7e89));};exports[_0xeaa6('0x15')]=function(_0x5a90d0,_0x175e3d){create(_0x5a90d0)[_0xeaa6('0xc')](loggerCatch(_0x175e3d));};exports[_0xeaa6('0x16')]=function(_0x8891b9,_0x192de6){moveContact(_0x8891b9)[_0xeaa6('0xc')](loggerCatch(_0x192de6));};exports[_0xeaa6('0x17')]=function(_0xecec35,_0x4e4f26,_0x458ebf){if(_0x4e4f26){_0xecec35['UserId']=null;}if(_0x458ebf){_0xecec35[_0xeaa6('0x18')]=![];}return BPromise[_0xeaa6('0xe')]()['then'](cmHopper[_0xeaa6('0x17')](_0xecec35))['catch'](loggerCatch(_0xeaa6('0x19')));};exports[_0xeaa6('0x1a')]=function(_0xb0e282){return BPromise[_0xeaa6('0xe')]()[_0xeaa6('0xb')](cmHopper[_0xeaa6('0x1a')](_0xb0e282))[_0xeaa6('0xc')](loggerCatch(_0xeaa6('0x1b')));};exports[_0xeaa6('0x1c')]=function(_0x36a02c){return BPromise[_0xeaa6('0xe')]()[_0xeaa6('0xb')](cmHopper[_0xeaa6('0x1c')]({'UserId':null},_0x36a02c,0x1))['catch'](loggerCatch('[unlockContact]\x20'));};exports[_0xeaa6('0x1d')]=function(_0xefff8f){return BPromise[_0xeaa6('0xe')]()['then'](cmHopper[_0xeaa6('0x1c')]({'active':![]},_0xefff8f,0x1))[_0xeaa6('0xc')](loggerCatch('[activeContact]\x20'));};exports[_0xeaa6('0x1e')]=function(_0xa5108b){var _0x4c1a9c={};_0x4c1a9c[_0xeaa6('0x1f')]=_0xa5108b[_0xeaa6('0x1f')];_0x4c1a9c['uniqueid']=_0xa5108b[_0xeaa6('0x20')];_0x4c1a9c[_0xeaa6('0x21')]=_0xa5108b[_0xeaa6('0x21')];_0x4c1a9c[_0xeaa6('0x22')]=_0xa5108b[_0xeaa6('0x22')];_0x4c1a9c[_0xeaa6('0x23')]=_0xa5108b[_0xeaa6('0x23')];_0x4c1a9c[_0xeaa6('0x24')]=_0xa5108b[_0xeaa6('0x25')];_0x4c1a9c[_0xeaa6('0x26')]=_0xa5108b[_0xeaa6('0x25')];_0x4c1a9c[_0xeaa6('0x27')]=0x1;_0x4c1a9c[_0xeaa6('0x28')]=_0xa5108b[_0xeaa6('0x29')];_0x4c1a9c[_0xeaa6('0x2a')]=_0xa5108b[_0xeaa6('0x2b')];_0x4c1a9c[_0xeaa6('0x2c')]=_0xeaa6('0x2d');_0x4c1a9c[_0xeaa6('0x2e')]=_0xeaa6('0x2f');_0x4c1a9c[_0xeaa6('0x30')]=0x0;_0x4c1a9c[_0xeaa6('0x31')]=0x1;_0x4c1a9c[_0xeaa6('0x32')]=_0xa5108b[_0xeaa6('0x2b')];_0x4c1a9c[_0xeaa6('0x33')]=_0xeaa6('0x34');return BPromise[_0xeaa6('0xe')]()[_0xeaa6('0xb')](voiceQueueReport[_0xeaa6('0x35')](_0x4c1a9c))[_0xeaa6('0xc')](loggerCatch(_0xeaa6('0x36')));};exports[_0xeaa6('0x37')]=function(_0x31e17a,_0x1ac335){return BPromise['resolve']()['then'](cmHopper[_0xeaa6('0x37')](_0x31e17a,_0x1ac335))['catch'](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0xeaa6('0x38')]=function(_0x1a3065){return BPromise[_0xeaa6('0xe')]()['then'](cmHopper[_0xeaa6('0x17')](_0x1a3065,!![],!![]))['catch'](loggerCatch(_0xeaa6('0x39')));};
\ No newline at end of file
+var _0x6cb5=['type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallerleaveAt','endtime','membername','context','exten','holdtime','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','[rescheduleContactInQueue]\x20','bluebird','preview','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperHistory','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','inspect','resolve','then','createHistory','[createHistory]\x20','catch','[moveContactManagedDialer]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','[activeContact]\x20'];(function(_0x428296,_0x2598f7){var _0x4972fb=function(_0x556d2a){while(--_0x556d2a){_0x428296['push'](_0x428296['shift']());}};_0x4972fb(++_0x2598f7);}(_0x6cb5,0xdc));var _0x56cb=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x6cb5[_0x2dea24];return _0x309d58;};'use strict';var util=require('util');var BPromise=require(_0x56cb('0x0'));var logger=require('../../../config/logger')(_0x56cb('0x1'));var _=require(_0x56cb('0x2'));var cmHopper=require(_0x56cb('0x3'));var cmHopperFinal=require(_0x56cb('0x4'));var cmHopperHistory=require(_0x56cb('0x5'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require(_0x56cb('0x6'));var agentReportPreview=require(_0x56cb('0x7'));var voiceQueueReport=require(_0x56cb('0x8'));function loggerCatch(_0x496120){return function(_0xd07eea){logger['error'](_0x496120,util[_0x56cb('0x9')](_0xd07eea,{'showHidden':![],'depth':null}));};}function create(_0x4f46b5){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopperHistory[_0x56cb('0xc')](_0x4f46b5))['catch'](loggerCatch(_0x56cb('0xd')));}function createAgent(_0x248fe4){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](agentReportPreview['createHistory'](_0x248fe4))[_0x56cb('0xe')](loggerCatch(_0x56cb('0xd')));}function moveContact(_0x398038){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['moveContactManagedDialer'](_0x398038,!![]))[_0x56cb('0xe')](loggerCatch(_0x56cb('0xf')));}exports[_0x56cb('0x10')]=function(_0x543194){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopperBlack[_0x56cb('0x10')](_0x543194))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x11')));};exports[_0x56cb('0x12')]=function(_0xf64a43){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['getContactPreview'](_0xf64a43))[_0x56cb('0xe')](loggerCatch('[getContactPreview]\x20'));};exports['createHistory']=function(_0xa76acf,_0x1b6458){create(_0xa76acf)[_0x56cb('0xe')](loggerCatch(_0x1b6458));moveContact(_0xa76acf)[_0x56cb('0xe')](loggerCatch(_0x1b6458));};exports[_0x56cb('0x13')]=function(_0x451699,_0x3f7742){createAgent(_0x451699)[_0x56cb('0xe')](loggerCatch(_0x3f7742));};exports['createCustomerHistory']=function(_0x42996c,_0x2dd6e5){create(_0x42996c)[_0x56cb('0xe')](loggerCatch(_0x2dd6e5));};exports[_0x56cb('0x14')]=function(_0x4ba676,_0x146cc4){moveContact(_0x4ba676)[_0x56cb('0xe')](loggerCatch(_0x146cc4));};exports[_0x56cb('0x15')]=function(_0x320a40,_0x2f6ccb,_0x348ba5){if(_0x2f6ccb){_0x320a40[_0x56cb('0x16')]=null;}if(_0x348ba5){_0x320a40[_0x56cb('0x17')]=![];}return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x15')](_0x320a40))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x18')));};exports[_0x56cb('0x19')]=function(_0x55d579){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['countReScheduled'](_0x55d579))[_0x56cb('0xe')](loggerCatch('[countReScheduled]\x20'));};exports[_0x56cb('0x1a')]=function(_0x3197bb){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x1a')]({'UserId':null},_0x3197bb,0x1))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x1b')));};exports[_0x56cb('0x1c')]=function(_0x42ab50){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper['unlockContact']({'active':![]},_0x42ab50,0x1))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x1d')));};exports['crateCustomerReportQueue']=function(_0x55fabe){var _0x49d953={};_0x49d953[_0x56cb('0x1e')]=_0x55fabe[_0x56cb('0x1e')];_0x49d953[_0x56cb('0x1f')]=_0x55fabe[_0x56cb('0x1f')];_0x49d953[_0x56cb('0x20')]=_0x55fabe[_0x56cb('0x20')];_0x49d953[_0x56cb('0x21')]=_0x55fabe[_0x56cb('0x21')];_0x49d953[_0x56cb('0x22')]=_0x55fabe['queue'];_0x49d953[_0x56cb('0x23')]=_0x55fabe[_0x56cb('0x24')];_0x49d953[_0x56cb('0x25')]=_0x55fabe[_0x56cb('0x24')];_0x49d953['queuecallercomplete']=0x1;_0x49d953['queuecallercompleteAt']=_0x55fabe[_0x56cb('0x26')];_0x49d953['connectedlinename']=_0x55fabe[_0x56cb('0x27')];_0x49d953[_0x56cb('0x28')]='from-sip';_0x49d953[_0x56cb('0x29')]='xcally-motion-preview';_0x49d953[_0x56cb('0x2a')]=0x0;_0x49d953['assigned']=0x1;_0x49d953['lastAssignedTo']=_0x55fabe[_0x56cb('0x27')];_0x49d953[_0x56cb('0x2b')]=_0x56cb('0x2c');return BPromise['resolve']()[_0x56cb('0xb')](voiceQueueReport['create'](_0x49d953))['catch'](loggerCatch(_0x56cb('0x2d')));};exports[_0x56cb('0x2e')]=function(_0x4cc93d,_0x2b3205){return BPromise[_0x56cb('0xa')]()[_0x56cb('0xb')](cmHopper[_0x56cb('0x2e')](_0x4cc93d,_0x2b3205))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x2f')));};exports[_0x56cb('0x30')]=function(_0x7377c9){return BPromise['resolve']()[_0x56cb('0xb')](cmHopper['rescheduleContact'](_0x7377c9,!![],!![]))[_0x56cb('0xe')](loggerCatch(_0x56cb('0x31')));};
\ No newline at end of file
index 9d26e74..a61cb9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70de=['moment','preview','XCALLY_IP_AGI','milliseconds','diff','seconds','loggerCatch','inspect','logger','loggerError','error','logger2','info','message','isUndefined','string','isEmpty','\x22%s\x22\x20<%s>','format','isActive','Queue','calleridname','calleridnum','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','dialQueueProject','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','toLower','updateOriginated','originated','[updateOriginated]\x20object\x20originated\x20is\x20negative','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','statedesc','responsetime','endtime','logAgent','ringtime','starttime','logLookAgent','membername','UserId','logCustomer','talktime','answertime','Failure','RECALL','uniqueid','originate','channelAgent','from-sip','timeout','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','decrementTalkink','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','lastevent','name','queue','interface','motionChannel','mandatoryDisposition','buildAcw','not_inuse','reachable','push','createBody','CampaignId','filterKey','type','campaigntype','dialAnswer','callback','callbackuniqueid','callbackat','recallme','sipcallid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-cdrtype','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqoslossbridged','bridgepvtcallid','pow','match','extractCalleridNumber','noanswer','variables','keys','forEach','buildNoAnswerEventPayload','util','lodash'];(function(_0x4e3a4c,_0x5c2ef2){var _0xc46f19=function(_0x48ba3f){while(--_0x48ba3f){_0x4e3a4c['push'](_0x4e3a4c['shift']());}};_0xc46f19(++_0x5c2ef2);}(_0x70de,0x112));var _0xe70d=function(_0xbec8e6,_0x2841b5){_0xbec8e6=_0xbec8e6-0x0;var _0x4aa6f2=_0x70de[_0xbec8e6];return _0x4aa6f2;};'use strict';var util=require(_0xe70d('0x0'));var _=require(_0xe70d('0x1'));var moment=require(_0xe70d('0x2'));var logger=require('../../../../config/logger')(_0xe70d('0x3'));var ipAgi=process['env'][_0xe70d('0x4')]||'127.0.0.1';function getSeconds(_0x2495aa,_0x5a5766){var _0x4e4693=moment(_0x2495aa)[_0xe70d('0x5')](0x0);var _0x796bb=moment(_0x5a5766)['milliseconds'](0x0);return _0x4e4693[_0xe70d('0x6')](_0x796bb,_0xe70d('0x7'));}exports[_0xe70d('0x8')]=function(_0x3c8188){return function(_0x2c4da0){logger['error'](_0x3c8188,util[_0xe70d('0x9')](_0x2c4da0,{'showHidden':![],'depth':null}));};};exports[_0xe70d('0xa')]=function(_0x3c38cd,_0x4154de){logger['info'](_0x3c38cd,util[_0xe70d('0x9')](_0x4154de,{'showHidden':![],'depth':null}));};exports[_0xe70d('0xb')]=function(_0x46f887,_0x154a9e){logger[_0xe70d('0xc')](_0x46f887,util[_0xe70d('0x9')](_0x154a9e,{'showHidden':![],'depth':null}));};exports[_0xe70d('0xd')]=function(_0x45cafa){return function(_0x5382c6){logger[_0xe70d('0xe')](_0x45cafa,util[_0xe70d('0x9')](_0x5382c6,{'showHidden':![],'depth':null}));};};exports[_0xe70d('0xf')]=function(_0x5b3b59,_0x514e98,_0x4f2305){return{'message':_0x5b3b59,'unlock':_0x514e98,'active':_0x4f2305};};exports['getCallerId']=function(_0x286003,_0x2400fc,_0x1f91dc){if(!_[_0xe70d('0x10')](_0x1f91dc)&&_0xe70d('0x11')===typeof _0x1f91dc&&!_[_0xe70d('0x12')](_0x1f91dc)){if(!_[_0xe70d('0x10')](_0x2400fc)&&'string'===typeof _0x2400fc&&!_[_0xe70d('0x12')](_0x2400fc)){return util['format'](_0xe70d('0x13'),_0x2400fc,_0x1f91dc);}return util[_0xe70d('0x14')](_0xe70d('0x13'),_0x1f91dc,_0x1f91dc);}if(!_['isUndefined'](_0x286003)&&'string'===typeof _0x286003&&!_[_0xe70d('0x12')](_0x286003)){return _0x286003;}return'\x22\x22\x20<>';};exports[_0xe70d('0x15')]=function(_0x1d7afb){if(_['isNil'](_0x1d7afb)){return![];}return _0x1d7afb;};exports['addVariables']=function(_0xe198c5,_0x480a20,_0x2ed983,_0x585872,_0x1439e9,_0x1a9a93){var _0x55c6c8={'XMD-QUEUE':_0x480a20[_0xe70d('0x16')]?_0x480a20[_0xe70d('0x16')]['name']:'','XMD-CALLERID':_0x585872,'XMD-CALLERID-PREVIEW':_0x1a9a93?util['format']('\x22%s\x22\x20<%s>',_0x1a9a93[_0xe70d('0x17')],_0x1a9a93[_0xe70d('0x18')]):_0x585872,'XMD-DIALID':_0x1439e9,'XMD-CONTACTID':_0x480a20[_0xe70d('0x19')],'XMD-CDRTYPE':_0xe70d('0x1a'),'CALLERID(all)':_0x585872,'XMD-VOICEQUEUEID':_0x480a20[_0xe70d('0x1b')],'XMD-DIALCHANNEL':_0x2ed983,'XMD-DIALTIMEOUT':_0xe198c5[_0xe70d('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0xe70d('0x14')](_0xe70d('0x1d'),_0xe198c5[_0xe70d('0x1e')]?'g':'',_[_0xe70d('0x12')](_0xe198c5[_0xe70d('0x1f')])?'':_0xe70d('0x20')),'XMD-DIALURL':_0xe198c5[_0xe70d('0x21')]||'','XMD-AGI':_0xe198c5[_0xe70d('0x22')]?util[_0xe70d('0x14')]('\x22agi://%s/square,%s\x22',ipAgi,_0xe198c5[_0xe70d('0x22')]):'NONE','XMD-AGIAFTER':_0xe198c5[_0xe70d('0x1e')]?util[_0xe70d('0x14')](_0xe70d('0x23'),ipAgi,_0xe198c5['dialQueueProject2']):'NONE','XMD-ORIGINATECALLERIDNUM':_0x1a9a93?_0x1a9a93[_0xe70d('0x24')]:'','XMD-ORIGINATECALLERIDNAME':_0x1a9a93?_0x1a9a93[_0xe70d('0x25')]:'','XMD-DESTINATION':_0xe70d('0x26'),'SIPADDHEADER':_0xe70d('0x27')};if(!_['isEmpty'](_0xe198c5['monitor_format'])){_0x55c6c8[util[_0xe70d('0x14')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0xe198c5['monitor_format'];_0x55c6c8[util[_0xe70d('0x14')]('%s',_0xe70d('0x28'))]=_0x1439e9;}if(_0x480a20&&_0x480a20[_0xe70d('0x29')]){for(var _0x3d80e4 in _0x480a20[_0xe70d('0x29')]){if(_0x480a20[_0xe70d('0x29')][_0xe70d('0x2a')](_0x3d80e4)){if(!_[_0xe70d('0x2b')](_0x480a20[_0xe70d('0x29')][_0x3d80e4])&&_0x3d80e4!=='id'&&_0x3d80e4!==_0xe70d('0x2c')&&_0x3d80e4!==_0xe70d('0x2d')&&_0x3d80e4!==_0xe70d('0x2e')){_0x55c6c8[util[_0xe70d('0x14')](_0xe70d('0x2f'),_0xe70d('0x30'),_[_0xe70d('0x31')](_0x3d80e4))]=_0x480a20['Contact'][_0x3d80e4];}}}}return _0x55c6c8;};exports[_0xe70d('0x32')]=function(_0x710a69){var _0x42c011={};for(var _0x49d07a in _0x710a69){if(_0x710a69[_0xe70d('0x2a')](_0x49d07a)){_0x42c011[util[_0xe70d('0x14')]('%s',_[_0xe70d('0x33')](_0x49d07a))]=_0x710a69[_0x49d07a];}}return{'variables':_0x42c011};};exports[_0xe70d('0x34')]=function(_0x388673,_0x1967a9){if(!_[_0xe70d('0x2b')](_0x388673)){if(_0x388673['hasOwnProperty'](_0xe70d('0x35'))){if(_0x388673[_0xe70d('0x35')]>0x0){_0x388673[_0xe70d('0x35')]-=0x1;}else{logger['error'](_0xe70d('0x36'),_0x1967a9);}}}else{logger[_0xe70d('0xc')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x1967a9);}};exports[_0xe70d('0x37')]=function(_0x40ee56){var _0x2d351f=moment()[_0xe70d('0x14')](_0xe70d('0x38'));_0x40ee56[_0xe70d('0x39')]=0xd;_0x40ee56[_0xe70d('0x3a')]='Blacklist';_0x40ee56['starttime']=_0x2d351f;_0x40ee56[_0xe70d('0x3b')]=_0x2d351f;_0x40ee56[_0xe70d('0x3c')]=_0x2d351f;};exports[_0xe70d('0x3d')]=function(_0x5221c2,_0x2cc859,_0x51b6dc){var _0x454d96=moment()[_0xe70d('0x14')]('YYYY-MM-DD\x20HH:mm:ss');_0x5221c2['state']=_0x2cc859;_0x5221c2[_0xe70d('0x3a')]=_0x51b6dc;_0x5221c2[_0xe70d('0x3b')]=_0x454d96;_0x5221c2[_0xe70d('0x3e')]=getSeconds(_0x5221c2[_0xe70d('0x3b')],_0x5221c2[_0xe70d('0x3f')]);};exports[_0xe70d('0x40')]=function(_0x50256b,_0x381415,_0x14609f){_0x50256b[_0xe70d('0x41')]=_0x381415;_0x50256b[_0xe70d('0x42')]=_0x14609f;};exports[_0xe70d('0x43')]=function(_0x1ad8f3,_0xc22237,_0x5b3fad){var _0x55433e=moment()[_0xe70d('0x14')](_0xe70d('0x38'));_0x1ad8f3['state']=_0xc22237;_0x1ad8f3[_0xe70d('0x3a')]=_0x5b3fad;_0x1ad8f3[_0xe70d('0x3b')]=_0x1ad8f3[_0xe70d('0x3b')]?_0x1ad8f3[_0xe70d('0x3b')]:_0x55433e;_0x1ad8f3[_0xe70d('0x3c')]=_0x1ad8f3['endtime']?_0x1ad8f3[_0xe70d('0x3c')]:_0x55433e;_0x1ad8f3[_0xe70d('0x3e')]=getSeconds(_0x1ad8f3[_0xe70d('0x3b')]||0x0,_0x1ad8f3[_0xe70d('0x3f')]||0x0);_0x1ad8f3[_0xe70d('0x44')]=_0x1ad8f3[_0xe70d('0x45')]?getSeconds(_0x1ad8f3[_0xe70d('0x3c')],_0x1ad8f3[_0xe70d('0x45')]):0x0;};exports['isFailure']=function(_0xae7d78){return _0xae7d78===_0xe70d('0x46');};exports['variablesAction']=function(_0x167e82,_0x4fa512,_0x3aace9,_0x415e4b,_0x1893fe){var _0x542fbf=_0x415e4b?_0xe70d('0x47'):_0x167e82['calleridname'];_0x542fbf=_0x1893fe?'BOOKED':_0x542fbf;return{'actionid':_0x167e82[_0xe70d('0x48')],'action':_0xe70d('0x49'),'channel':_0x167e82[_0xe70d('0x4a')],'callerid':util['format'](_0xe70d('0x13'),_0x542fbf,_0x167e82[_0xe70d('0x18')]),'Exten':_0xe70d('0x26'),'Context':_0xe70d('0x4b'),'Priority':'1','variable':_0x3aace9,'timeout':(_0x4fa512[_0xe70d('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x167e82[_0xe70d('0x48')]};};exports['totalGlobal']=function(_0xd1ea56){return _0xd1ea56[_0xe70d('0x4d')]+_0xd1ea56[_0xe70d('0x4e')]+_0xd1ea56[_0xe70d('0x4f')]+_0xd1ea56[_0xe70d('0x50')]+_0xd1ea56['countnosuchnumberretry'];};exports[_0xe70d('0x51')]=function(_0x535f9b){var _0x516b40=_[_0xe70d('0x52')](_0x535f9b);_0x516b40[_0xe70d('0x39')]=0xf;_0x516b40[_0xe70d('0x3a')]=_0xe70d('0x53');return _0x516b40;};exports['scheduledAt']=function(_0x39a4d9,_0x4d9679,_0x59cc18){var _0x34a090={};_0x34a090[_0x4d9679]=_0x39a4d9[_0x4d9679];_0x34a090[_0xe70d('0x54')]=![];_0x34a090[_0xe70d('0x55')]=moment()[_0xe70d('0x56')](_0x59cc18,_0xe70d('0x57'))[_0xe70d('0x14')](_0xe70d('0x38'));_0x34a090['ContactId']=_0x39a4d9[_0xe70d('0x19')];_0x34a090['ListId']=_0x39a4d9[_0xe70d('0x58')];_0x34a090[_0xe70d('0x1b')]=_0x39a4d9[_0xe70d('0x1b')]||undefined;return _0x34a090;};exports[_0xe70d('0x59')]=function(_0x153a20,_0x3f2e24){if(!_[_0xe70d('0x2b')](_0x153a20)){if(_0x153a20['pTalking']>0x0){_0x153a20['pTalking']-=0x1;}else{logger[_0xe70d('0xc')](_0x3f2e24,_0xe70d('0x5a'));}}else{logger[_0xe70d('0xc')](_0x3f2e24,_0xe70d('0x5b'));}};exports['IsNotLoggedIn']=function(_0x15c3e9){if(_0x15c3e9<=0x0){return!![];}return![];};function buildObj(_0x3d94a7,_0x831903,_0x5b08db){_0x3d94a7[_0xe70d('0x5c')]=_0x831903;_0x3d94a7[_0xe70d('0x5d')]=_0x3d94a7[_0xe70d('0x5e')];_0x3d94a7[_0xe70d('0x5f')]=_0x3d94a7[_0xe70d('0x4a')];_0x3d94a7[_0xe70d('0x60')]='voice';if(_0x5b08db){_0x3d94a7[_0xe70d('0x61')]=_0x5b08db[_0xe70d('0x61')];}return _0x3d94a7;}exports['buildObj']=buildObj;exports[_0xe70d('0x62')]=function(_0x101884){var _0x4150f5={};_0x4150f5[_0xe70d('0x5e')]=_0x101884['queue'];_0x4150f5[_0xe70d('0x5f')]=_0x101884[_0xe70d('0x4a')];_0x4150f5[_0xe70d('0x48')]=_0x101884[_0xe70d('0x48')];return _0x4150f5;};exports['agentReadyId']=function(_0x30083b){var _0x4dc796=[];for(var _0x39fea0 in _0x30083b){if(_0x30083b[_0xe70d('0x2a')](_0x39fea0)){if(!_[_0xe70d('0x2b')](_0x30083b[_0x39fea0])&&_0x30083b[_0x39fea0][_0xe70d('0x39')]===_0xe70d('0x63')&&_0x30083b[_0x39fea0]['status']===_0xe70d('0x64')){_0x4dc796[_0xe70d('0x65')](_0x30083b[_0x39fea0]['id']);}}}return _0x4dc796;};exports['getDiff']=function(_0xa6107c){var _0x41d7eb=moment()[_0xe70d('0x5')](0x0);var _0x3891f5=moment(_0xa6107c)[_0xe70d('0x5')](0x0);return _0x41d7eb[_0xe70d('0x6')](_0x3891f5,_0xe70d('0x7'));};exports[_0xe70d('0x66')]=function(_0x3497c7){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x3497c7['ContactId'],'ListId':_0x3497c7['ListId'],'VoiceQueueId':_0x3497c7[_0xe70d('0x1b')]||undefined,'CampaignId':_0x3497c7[_0xe70d('0x67')]||undefined};};exports[_0xe70d('0x68')]=function(_0x26ee31){if(_0x26ee31===_0xe70d('0x48')||_0x26ee31==='idContact'||_0x26ee31==='queue'||_0x26ee31===_0xe70d('0x69')||_0x26ee31===_0xe70d('0x6a')||_0x26ee31===_0xe70d('0x6b')||_0x26ee31==='membername'||_0x26ee31===_0xe70d('0x4a')||_0x26ee31==='calleridname'||_0x26ee31===_0xe70d('0x54')||_0x26ee31===_0xe70d('0x18')||_0x26ee31===_0xe70d('0x55')||_0x26ee31===_0xe70d('0x4d')||_0x26ee31==='countcongestionretry'||_0x26ee31===_0xe70d('0x4f')||_0x26ee31==='countglobal'||_0x26ee31===_0xe70d('0x6c')||_0x26ee31===_0xe70d('0x6d')||_0x26ee31===_0xe70d('0x6e')||_0x26ee31===_0xe70d('0x6f')||_0x26ee31==='ContactId'||_0x26ee31===_0xe70d('0x58')||_0x26ee31===_0xe70d('0x42')||_0x26ee31===_0xe70d('0x1b')||_0x26ee31===_0xe70d('0x70')||_0x26ee31==='xmd-voicequeueid'||_0x26ee31===_0xe70d('0x71')||_0x26ee31===_0xe70d('0x72')||_0x26ee31===_0xe70d('0x73')||_0x26ee31===_0xe70d('0x74')||_0x26ee31===_0xe70d('0x75')||_0x26ee31===_0xe70d('0x76')||_0x26ee31===_0xe70d('0x77')||_0x26ee31===_0xe70d('0x78')||_0x26ee31==='xmd-contactid'||_0x26ee31===_0xe70d('0x79')||_0x26ee31==='xmd-callerid'||_0x26ee31==='xmd-agiafter'||_0x26ee31==='xmd-agi'||_0x26ee31===_0xe70d('0x7a')||_0x26ee31===_0xe70d('0x7b')||_0x26ee31==='rtpaudioqosjitter'||_0x26ee31===_0xe70d('0x7c')||_0x26ee31===_0xe70d('0x7d')||_0x26ee31==='rtpaudioqoslossbridged'||_0x26ee31===_0xe70d('0x7e')||_0x26ee31===_0xe70d('0x7f')||_0x26ee31===_0xe70d('0x7a')||_0x26ee31==='rtpaudioqosbridged'||_0x26ee31==='rtpaudioqosjitter'||_0x26ee31===_0xe70d('0x7c')||_0x26ee31===_0xe70d('0x7d')||_0x26ee31===_0xe70d('0x80')||_0x26ee31===_0xe70d('0x7e')||_0x26ee31===_0xe70d('0x7f')||_0x26ee31==='bridgepeer'||_0x26ee31===_0xe70d('0x81')||_0x26ee31===_0xe70d('0x39')||_0x26ee31===_0xe70d('0x3a')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x9157d6,_0x1ff252){var _0x1a3898,_0x2a04ce,_0x3c8c55;if(_0x1ff252<=0x0){_0x1ff252=0x1;}_0x1a3898=new RegExp('\x5cw{0,'+_0x1ff252+'}$');_0x2a04ce=Math[_0xe70d('0x82')](0xa,_0x1ff252-0x1);_0x3c8c55=Math[_0xe70d('0x82')](0xa,_0x1ff252)-0x1;return util[_0xe70d('0x14')]('%s',_['replace'](_0x9157d6,_0x1a3898,_['random'](_0x2a04ce,_0x3c8c55)));};exports['extractCalleridName']=function(_0x29f61e){var _0x2fe485=_0x29f61e[_0xe70d('0x83')](/"(.*?)"/);return _0x2fe485?_0x2fe485[0x1]:_0x29f61e;};exports[_0xe70d('0x84')]=function(_0x2db73c){var _0x48aba6=_0x2db73c[_0xe70d('0x83')](/<(.*?)>/);return _0x48aba6?_0x48aba6[0x1]:_0x2db73c;};function buildNoAnswerEventPayload(_0x5edaa8,_0x9ebe82){var _0xc59acd=buildObj(_0x5edaa8,_0xe70d('0x85'));if(!_['isEmpty'](_0x9ebe82[_0xe70d('0x86')])){Object[_0xe70d('0x87')](_0x9ebe82[_0xe70d('0x86')])[_0xe70d('0x88')](function(_0x50881d){_0xc59acd[_0x50881d['toLowerCase']()]=_0x9ebe82[_0xe70d('0x86')][_0x50881d];});}return _0xc59acd;}exports[_0xe70d('0x89')]=buildNoAnswerEventPayload;
\ No newline at end of file
+var _0xe06a=['rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrtt','rtpaudioqosrttbridged','rtpaudioqosbridged','rtpaudioqoslossbridged','bridgepeer','getCallerIdRandom','\x5cw{0,','pow','random','extractCalleridName','match','noanswer','variables','keys','forEach','toLowerCase','buildNoAnswerEventPayload','util','lodash','../../../../config/logger','preview','env','127.0.0.1','milliseconds','seconds','info','inspect','logger2','message','getCallerId','isEmpty','isUndefined','string','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','calleridname','ContactId','dialOriginateTimeout','dialQueueProject2','U(xcally-mixmonitor-context)','dialQueueProject','NONE','\x22agi://%s/square,%s\x22','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_FORMAT','monitor_format','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','updatedAt','%s%s','XMD-','toUpper','toLowerVariables','originated','error','[updateOriginated]\x20object\x20originated\x20is\x20negative','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','statedesc','Blacklist','starttime','responsetime','endtime','logAgent','state','ringtime','logLookAgent','membername','UserId','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','channelAgent','calleridnum','from-sip','timeout','totalGlobal','countnoanswerretry','countnosuchnumberretry','cloneAction','clone','Global','scheduledAt','active','add','minutes','ListId','VoiceQueueId','decrementTalkink','pTalking','[decrementTalkink]\x20object\x20talking\x20is\x20negative','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','lastevent','name','queue','interface','voice','mandatoryDisposition','buildObj','buildAcw','agentReadyId','status','reachable','push','getDiff','diff','createBody','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','countcongestionretry','countglobal','callback','callbackat','recallme','sipcallid','xmd-voicequeueid','xmd-queue','xmd-phone','xmd-listid','xmd-dialurl','xmd-dialtimeout','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-agiafter','xmd-agi','rtpaudioqos'];(function(_0x28ce93,_0x4e4af9){var _0x692cf3=function(_0x58bfc9){while(--_0x58bfc9){_0x28ce93['push'](_0x28ce93['shift']());}};_0x692cf3(++_0x4e4af9);}(_0xe06a,0x1df));var _0xae06=function(_0x582764,_0x232f39){_0x582764=_0x582764-0x0;var _0x58a6e3=_0xe06a[_0x582764];return _0x58a6e3;};'use strict';var util=require(_0xae06('0x0'));var _=require(_0xae06('0x1'));var moment=require('moment');var logger=require(_0xae06('0x2'))(_0xae06('0x3'));var ipAgi=process[_0xae06('0x4')]['XCALLY_IP_AGI']||_0xae06('0x5');function getSeconds(_0x4b84e8,_0x4150ed){var _0x3616ca=moment(_0x4b84e8)[_0xae06('0x6')](0x0);var _0x46dd9f=moment(_0x4150ed)[_0xae06('0x6')](0x0);return _0x3616ca['diff'](_0x46dd9f,_0xae06('0x7'));}exports['loggerCatch']=function(_0x13ed11){return function(_0x2ac057){logger['error'](_0x13ed11,util['inspect'](_0x2ac057,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x8ce61e,_0x29b10d){logger[_0xae06('0x8')](_0x8ce61e,util[_0xae06('0x9')](_0x29b10d,{'showHidden':![],'depth':null}));};exports['loggerError']=function(_0x500240,_0x3d3c43){logger['error'](_0x500240,util[_0xae06('0x9')](_0x3d3c43,{'showHidden':![],'depth':null}));};exports[_0xae06('0xa')]=function(_0x13b628){return function(_0x1b3cde){logger['info'](_0x13b628,util['inspect'](_0x1b3cde,{'showHidden':![],'depth':null}));};};exports[_0xae06('0xb')]=function(_0x301473,_0x568280,_0x1d3825){return{'message':_0x301473,'unlock':_0x568280,'active':_0x1d3825};};exports[_0xae06('0xc')]=function(_0x40f8b0,_0x5ddb09,_0x39751b){if(!_['isUndefined'](_0x39751b)&&'string'===typeof _0x39751b&&!_[_0xae06('0xd')](_0x39751b)){if(!_[_0xae06('0xe')](_0x5ddb09)&&_0xae06('0xf')===typeof _0x5ddb09&&!_[_0xae06('0xd')](_0x5ddb09)){return util[_0xae06('0x10')](_0xae06('0x11'),_0x5ddb09,_0x39751b);}return util[_0xae06('0x10')](_0xae06('0x11'),_0x39751b,_0x39751b);}if(!_[_0xae06('0xe')](_0x40f8b0)&&_0xae06('0xf')===typeof _0x40f8b0&&!_[_0xae06('0xd')](_0x40f8b0)){return _0x40f8b0;}return _0xae06('0x12');};exports[_0xae06('0x13')]=function(_0x1d65b7){if(_['isNil'](_0x1d65b7)){return![];}return _0x1d65b7;};exports[_0xae06('0x14')]=function(_0x4afb86,_0x7155a2,_0x5dfb15,_0x350f46,_0x3debc1,_0x2af6e3){var _0x311906={'XMD-QUEUE':_0x7155a2[_0xae06('0x15')]?_0x7155a2[_0xae06('0x15')]['name']:'','XMD-CALLERID':_0x350f46,'XMD-CALLERID-PREVIEW':_0x2af6e3?util[_0xae06('0x10')](_0xae06('0x11'),_0x2af6e3[_0xae06('0x16')],_0x2af6e3['calleridnum']):_0x350f46,'XMD-DIALID':_0x3debc1,'XMD-CONTACTID':_0x7155a2[_0xae06('0x17')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x350f46,'XMD-VOICEQUEUEID':_0x7155a2['VoiceQueueId'],'XMD-DIALCHANNEL':_0x5dfb15,'XMD-DIALTIMEOUT':_0x4afb86[_0xae06('0x18')]||0x1e,'XMD-DIALOPTIONS':util[_0xae06('0x10')]('\x22rtTxX%s%s\x22',_0x4afb86[_0xae06('0x19')]?'g':'',_[_0xae06('0xd')](_0x4afb86['monitor_format'])?'':_0xae06('0x1a')),'XMD-DIALURL':_0x4afb86['dialPreviewUrl']||'','XMD-AGI':_0x4afb86[_0xae06('0x1b')]?util['format']('\x22agi://%s/square,%s\x22',ipAgi,_0x4afb86[_0xae06('0x1b')]):_0xae06('0x1c'),'XMD-AGIAFTER':_0x4afb86[_0xae06('0x19')]?util['format'](_0xae06('0x1d'),ipAgi,_0x4afb86[_0xae06('0x19')]):_0xae06('0x1c'),'XMD-ORIGINATECALLERIDNUM':_0x2af6e3?_0x2af6e3[_0xae06('0x1e')]:'','XMD-ORIGINATECALLERIDNAME':_0x2af6e3?_0x2af6e3[_0xae06('0x1f')]:'','XMD-DESTINATION':_0xae06('0x20'),'SIPADDHEADER':_0xae06('0x21')};if(!_[_0xae06('0xd')](_0x4afb86['monitor_format'])){_0x311906[util[_0xae06('0x10')]('%s',_0xae06('0x22'))]=_0x4afb86[_0xae06('0x23')];_0x311906[util['format']('%s',_0xae06('0x24'))]=_0x3debc1;}if(_0x7155a2&&_0x7155a2[_0xae06('0x25')]){for(var _0xaf5f6a in _0x7155a2['Contact']){if(_0x7155a2[_0xae06('0x25')][_0xae06('0x26')](_0xaf5f6a)){if(!_[_0xae06('0x27')](_0x7155a2[_0xae06('0x25')][_0xaf5f6a])&&_0xaf5f6a!=='id'&&_0xaf5f6a!==_0xae06('0x28')&&_0xaf5f6a!=='createdAt'&&_0xaf5f6a!==_0xae06('0x29')){_0x311906[util[_0xae06('0x10')](_0xae06('0x2a'),_0xae06('0x2b'),_[_0xae06('0x2c')](_0xaf5f6a))]=_0x7155a2[_0xae06('0x25')][_0xaf5f6a];}}}}return _0x311906;};exports[_0xae06('0x2d')]=function(_0x3ced34){var _0x2d1987={};for(var _0x51f99e in _0x3ced34){if(_0x3ced34['hasOwnProperty'](_0x51f99e)){_0x2d1987[util[_0xae06('0x10')]('%s',_['toLower'](_0x51f99e))]=_0x3ced34[_0x51f99e];}}return{'variables':_0x2d1987};};exports['updateOriginated']=function(_0x5bb2f6,_0x5a9379){if(!_[_0xae06('0x27')](_0x5bb2f6)){if(_0x5bb2f6[_0xae06('0x26')]('originated')){if(_0x5bb2f6[_0xae06('0x2e')]>0x0){_0x5bb2f6[_0xae06('0x2e')]-=0x1;}else{logger[_0xae06('0x2f')](_0xae06('0x30'),_0x5a9379);}}}else{logger[_0xae06('0x2f')](_0xae06('0x31'),_0x5a9379);}};exports[_0xae06('0x32')]=function(_0x191b1d){var _0x241712=moment()['format'](_0xae06('0x33'));_0x191b1d['state']=0xd;_0x191b1d[_0xae06('0x34')]=_0xae06('0x35');_0x191b1d[_0xae06('0x36')]=_0x241712;_0x191b1d[_0xae06('0x37')]=_0x241712;_0x191b1d[_0xae06('0x38')]=_0x241712;};exports[_0xae06('0x39')]=function(_0x2487e3,_0xa23009,_0x507de4){var _0x592092=moment()[_0xae06('0x10')](_0xae06('0x33'));_0x2487e3[_0xae06('0x3a')]=_0xa23009;_0x2487e3[_0xae06('0x34')]=_0x507de4;_0x2487e3['responsetime']=_0x592092;_0x2487e3[_0xae06('0x3b')]=getSeconds(_0x2487e3[_0xae06('0x37')],_0x2487e3[_0xae06('0x36')]);};exports[_0xae06('0x3c')]=function(_0x533e7e,_0x555be5,_0x3b0488){_0x533e7e[_0xae06('0x3d')]=_0x555be5;_0x533e7e[_0xae06('0x3e')]=_0x3b0488;};exports['logCustomer']=function(_0x18282b,_0x1216a7,_0x42a4fa){var _0x5904af=moment()[_0xae06('0x10')]('YYYY-MM-DD\x20HH:mm:ss');_0x18282b['state']=_0x1216a7;_0x18282b[_0xae06('0x34')]=_0x42a4fa;_0x18282b[_0xae06('0x37')]=_0x18282b[_0xae06('0x37')]?_0x18282b[_0xae06('0x37')]:_0x5904af;_0x18282b[_0xae06('0x38')]=_0x18282b[_0xae06('0x38')]?_0x18282b[_0xae06('0x38')]:_0x5904af;_0x18282b[_0xae06('0x3b')]=getSeconds(_0x18282b[_0xae06('0x37')]||0x0,_0x18282b[_0xae06('0x36')]||0x0);_0x18282b[_0xae06('0x3f')]=_0x18282b[_0xae06('0x40')]?getSeconds(_0x18282b['endtime'],_0x18282b[_0xae06('0x40')]):0x0;};exports[_0xae06('0x41')]=function(_0x17513d){return _0x17513d===_0xae06('0x42');};exports[_0xae06('0x43')]=function(_0x4f8652,_0x57e17a,_0x1b5cc3,_0x27194f,_0x132b04){var _0x3fcf8d=_0x27194f?_0xae06('0x44'):_0x4f8652[_0xae06('0x16')];_0x3fcf8d=_0x132b04?_0xae06('0x45'):_0x3fcf8d;return{'actionid':_0x4f8652[_0xae06('0x46')],'action':_0xae06('0x47'),'channel':_0x4f8652[_0xae06('0x48')],'callerid':util['format'](_0xae06('0x11'),_0x3fcf8d,_0x4f8652[_0xae06('0x49')]),'Exten':_0xae06('0x20'),'Context':_0xae06('0x4a'),'Priority':'1','variable':_0x1b5cc3,'timeout':(_0x57e17a[_0xae06('0x4b')]||0x1e)*0x3e8,'async':!![],'channelid':_0x4f8652[_0xae06('0x46')]};};exports[_0xae06('0x4c')]=function(_0x3d072b){return _0x3d072b['countbusyretry']+_0x3d072b['countcongestionretry']+_0x3d072b[_0xae06('0x4d')]+_0x3d072b['countagentrejectretry']+_0x3d072b[_0xae06('0x4e')];};exports[_0xae06('0x4f')]=function(_0x9ecb36){var _0x1f41b2=_[_0xae06('0x50')](_0x9ecb36);_0x1f41b2[_0xae06('0x3a')]=0xf;_0x1f41b2[_0xae06('0x34')]=_0xae06('0x51');return _0x1f41b2;};exports[_0xae06('0x52')]=function(_0xa3aa87,_0x17ca48,_0x37a87d){var _0x272ac0={};_0x272ac0[_0x17ca48]=_0xa3aa87[_0x17ca48];_0x272ac0[_0xae06('0x53')]=![];_0x272ac0['scheduledat']=moment()[_0xae06('0x54')](_0x37a87d,_0xae06('0x55'))[_0xae06('0x10')](_0xae06('0x33'));_0x272ac0[_0xae06('0x17')]=_0xa3aa87['ContactId'];_0x272ac0['ListId']=_0xa3aa87[_0xae06('0x56')];_0x272ac0[_0xae06('0x57')]=_0xa3aa87['VoiceQueueId']||undefined;return _0x272ac0;};exports[_0xae06('0x58')]=function(_0x5782f2,_0x4d4079){if(!_[_0xae06('0x27')](_0x5782f2)){if(_0x5782f2[_0xae06('0x59')]>0x0){_0x5782f2[_0xae06('0x59')]-=0x1;}else{logger[_0xae06('0x2f')](_0x4d4079,_0xae06('0x5a'));}}else{logger['error'](_0x4d4079,_0xae06('0x5b'));}};exports[_0xae06('0x5c')]=function(_0x47d6e8){if(_0x47d6e8<=0x0){return!![];}return![];};function buildObj(_0x2cb8a0,_0x5d639f,_0xc31568){_0x2cb8a0[_0xae06('0x5d')]=_0x5d639f;_0x2cb8a0[_0xae06('0x5e')]=_0x2cb8a0[_0xae06('0x5f')];_0x2cb8a0[_0xae06('0x60')]=_0x2cb8a0[_0xae06('0x48')];_0x2cb8a0['motionChannel']=_0xae06('0x61');if(_0xc31568){_0x2cb8a0['mandatoryDisposition']=_0xc31568[_0xae06('0x62')];}return _0x2cb8a0;}exports[_0xae06('0x63')]=buildObj;exports[_0xae06('0x64')]=function(_0x36edda){var _0x1cf190={};_0x1cf190['queue']=_0x36edda[_0xae06('0x5f')];_0x1cf190[_0xae06('0x60')]=_0x36edda[_0xae06('0x48')];_0x1cf190[_0xae06('0x46')]=_0x36edda[_0xae06('0x46')];return _0x1cf190;};exports[_0xae06('0x65')]=function(_0x360873){var _0x3648da=[];for(var _0x34cf6a in _0x360873){if(_0x360873['hasOwnProperty'](_0x34cf6a)){if(!_['isNil'](_0x360873[_0x34cf6a])&&_0x360873[_0x34cf6a]['state']==='not_inuse'&&_0x360873[_0x34cf6a][_0xae06('0x66')]===_0xae06('0x67')){_0x3648da[_0xae06('0x68')](_0x360873[_0x34cf6a]['id']);}}}return _0x3648da;};exports[_0xae06('0x69')]=function(_0x4fad0c){var _0x2d0974=moment()[_0xae06('0x6')](0x0);var _0x48156f=moment(_0x4fad0c)[_0xae06('0x6')](0x0);return _0x2d0974[_0xae06('0x6a')](_0x48156f,_0xae06('0x7'));};exports[_0xae06('0x6b')]=function(_0x1db74d){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x1db74d['ContactId'],'ListId':_0x1db74d[_0xae06('0x56')],'VoiceQueueId':_0x1db74d[_0xae06('0x57')]||undefined,'CampaignId':_0x1db74d[_0xae06('0x6c')]||undefined};};exports[_0xae06('0x6d')]=function(_0x207320){if(_0x207320==='uniqueid'||_0x207320===_0xae06('0x6e')||_0x207320==='queue'||_0x207320===_0xae06('0x6f')||_0x207320===_0xae06('0x70')||_0x207320===_0xae06('0x71')||_0x207320===_0xae06('0x3d')||_0x207320===_0xae06('0x48')||_0x207320===_0xae06('0x16')||_0x207320===_0xae06('0x53')||_0x207320===_0xae06('0x49')||_0x207320==='scheduledat'||_0x207320==='countbusyretry'||_0x207320===_0xae06('0x72')||_0x207320==='countnoanswerretry'||_0x207320===_0xae06('0x73')||_0x207320===_0xae06('0x74')||_0x207320==='callbackuniqueid'||_0x207320===_0xae06('0x75')||_0x207320===_0xae06('0x76')||_0x207320===_0xae06('0x17')||_0x207320==='ListId'||_0x207320===_0xae06('0x3e')||_0x207320==='VoiceQueueId'||_0x207320===_0xae06('0x77')||_0x207320===_0xae06('0x78')||_0x207320===_0xae06('0x79')||_0x207320===_0xae06('0x7a')||_0x207320===_0xae06('0x7b')||_0x207320===_0xae06('0x7c')||_0x207320===_0xae06('0x7d')||_0x207320==='xmd-dialoptions'||_0x207320===_0xae06('0x7e')||_0x207320===_0xae06('0x7f')||_0x207320===_0xae06('0x80')||_0x207320===_0xae06('0x81')||_0x207320==='xmd-callerid'||_0x207320===_0xae06('0x82')||_0x207320===_0xae06('0x83')||_0x207320===_0xae06('0x84')||_0x207320==='rtpaudioqosbridged'||_0x207320===_0xae06('0x85')||_0x207320===_0xae06('0x86')||_0x207320===_0xae06('0x87')||_0x207320==='rtpaudioqoslossbridged'||_0x207320===_0xae06('0x88')||_0x207320===_0xae06('0x89')||_0x207320===_0xae06('0x84')||_0x207320===_0xae06('0x8a')||_0x207320===_0xae06('0x85')||_0x207320===_0xae06('0x86')||_0x207320==='rtpaudioqosloss'||_0x207320===_0xae06('0x8b')||_0x207320==='rtpaudioqosrtt'||_0x207320===_0xae06('0x89')||_0x207320===_0xae06('0x8c')||_0x207320==='bridgepvtcallid'||_0x207320===_0xae06('0x3a')||_0x207320===_0xae06('0x34')){return![];}return!![];};exports[_0xae06('0x8d')]=function(_0xbf2d50,_0x3db7a1){var _0x4f4a7f,_0x24b2eb,_0x452226;if(_0x3db7a1<=0x0){_0x3db7a1=0x1;}_0x4f4a7f=new RegExp(_0xae06('0x8e')+_0x3db7a1+'}$');_0x24b2eb=Math[_0xae06('0x8f')](0xa,_0x3db7a1-0x1);_0x452226=Math[_0xae06('0x8f')](0xa,_0x3db7a1)-0x1;return util[_0xae06('0x10')]('%s',_['replace'](_0xbf2d50,_0x4f4a7f,_[_0xae06('0x90')](_0x24b2eb,_0x452226)));};exports[_0xae06('0x91')]=function(_0x201fbd){var _0x4f727b=_0x201fbd[_0xae06('0x92')](/"(.*?)"/);return _0x4f727b?_0x4f727b[0x1]:_0x201fbd;};exports['extractCalleridNumber']=function(_0x5489d3){var _0x54fa0a=_0x5489d3[_0xae06('0x92')](/<(.*?)>/);return _0x54fa0a?_0x54fa0a[0x1]:_0x5489d3;};function buildNoAnswerEventPayload(_0x5562e7,_0x4cc5a4){var _0x31d911=buildObj(_0x5562e7,_0xae06('0x93'));if(!_[_0xae06('0xd')](_0x4cc5a4[_0xae06('0x94')])){Object[_0xae06('0x95')](_0x4cc5a4[_0xae06('0x94')])[_0xae06('0x96')](function(_0x183ac9){_0x31d911[_0x183ac9[_0xae06('0x97')]()]=_0x4cc5a4['variables'][_0x183ac9];});}return _0x31d911;}exports[_0xae06('0x98')]=buildNoAnswerEventPayload;
\ No newline at end of file
index 93c4f0d..d66aa0a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aa8=['boolean','queueremove','queuepause','reload','voicequeuechannel','voicechannel','voicequeuechannelhangup','voicequeuechannelredirect','string'];(function(_0x57b432,_0x1589a0){var _0x2edf2a=function(_0x20edfc){while(--_0x20edfc){_0x57b432['push'](_0x57b432['shift']());}};_0x2edf2a(++_0x1589a0);}(_0x0aa8,0x1b8));var _0x80aa=function(_0x5751e6,_0x125e5e){_0x5751e6=_0x5751e6-0x0;var _0x4199e4=_0x0aa8[_0x5751e6];return _0x4199e4;};'use strict';exports['queueadd']={'queue':{'type':_0x80aa('0x0'),'required':!![]},'interface':{'type':_0x80aa('0x0'),'required':!![]},'membername':{'type':_0x80aa('0x0'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x80aa('0x1'),'required':![]}};exports[_0x80aa('0x2')]={'queue':{'type':'string','required':!![]},'interface':{'type':_0x80aa('0x0'),'required':!![]}};exports[_0x80aa('0x3')]={'interface':{'type':_0x80aa('0x0'),'required':!![]},'paused':{'type':_0x80aa('0x1')},'reason':{'type':_0x80aa('0x0'),'required':![]}};exports[_0x80aa('0x4')]={'module':{'type':_0x80aa('0x0'),'required':![]}};exports[_0x80aa('0x5')]={'uniqueid':{'type':_0x80aa('0x0'),'required':!![]}};exports[_0x80aa('0x6')]={'uniqueid':{'type':_0x80aa('0x0'),'required':!![]},'filename':{'type':_0x80aa('0x0')},'format':{'type':_0x80aa('0x0')},'mixmonitorid':{'type':_0x80aa('0x0')}};exports[_0x80aa('0x7')]={'uniqueid':{'type':_0x80aa('0x0'),'required':!![]}};exports[_0x80aa('0x8')]={'uniqueid':{'type':_0x80aa('0x0'),'required':!![]},'exten':{'type':_0x80aa('0x0'),'required':!![]},'context':{'type':'string'}};
\ No newline at end of file
+var _0xb8f1=['voicequeuechannel','voicequeuechannelredirect','string','queuepause','boolean'];(function(_0x2902cc,_0x4d1d00){var _0x5f418f=function(_0x5e3846){while(--_0x5e3846){_0x2902cc['push'](_0x2902cc['shift']());}};_0x5f418f(++_0x4d1d00);}(_0xb8f1,0x89));var _0x1b8f=function(_0x40bab2,_0x179993){_0x40bab2=_0x40bab2-0x0;var _0x101246=_0xb8f1[_0x40bab2];return _0x101246;};'use strict';exports['queueadd']={'queue':{'type':'string','required':!![]},'interface':{'type':'string','required':!![]},'membername':{'type':'string','required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':'boolean','required':![]}};exports['queueremove']={'queue':{'type':'string','required':!![]},'interface':{'type':_0x1b8f('0x0'),'required':!![]}};exports[_0x1b8f('0x1')]={'interface':{'type':_0x1b8f('0x0'),'required':!![]},'paused':{'type':_0x1b8f('0x2')},'reason':{'type':_0x1b8f('0x0'),'required':![]}};exports['reload']={'module':{'type':_0x1b8f('0x0'),'required':![]}};exports[_0x1b8f('0x3')]={'uniqueid':{'type':_0x1b8f('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x1b8f('0x0')},'format':{'type':'string'},'mixmonitorid':{'type':_0x1b8f('0x0')}};exports['voicequeuechannelhangup']={'uniqueid':{'type':'string','required':!![]}};exports[_0x1b8f('0x4')]={'uniqueid':{'type':_0x1b8f('0x0'),'required':!![]},'exten':{'type':_0x1b8f('0x0'),'required':!![]},'context':{'type':_0x1b8f('0x0')}};
\ No newline at end of file
index 2b9cd31..5cb02f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef3f=['merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','unmanaged','queuecallerabandon','abandoned','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerleaveAt','initVoiceCallReports','duration','disposition','ANSWERED','billableseconds','initCampaigns','SquareProject','initCampaignHopperHistory','initFaxAccounts','faxAccounts','exports','util','lodash','../model/agent','../model/telephone','../model/voiceQueue','../model/trigger','../model/template','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','agents','trunks','voiceQueues','triggers','campaigns','templates','outbound','voiceExtensions','outboundChannels','timers','settings','salesforceAccounts','zohoAccounts','vtigerAccounts','freshsalesAccounts','mapKeys','format','name','isNil','SIP/%s','interface','hasOwnProperty','total','answered','sumHoldTime','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundUnknownCallsDay','outboundDropCallsDayCallersExit','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','prototype','mergeFromDatabase','initAgents','length','isUndefined','telephones','initVoiceQueues','initTriggers','initTemplates','zendeskAccounts','freshdeskAccounts','initZohoAccounts','initDeskAccounts','deskAccounts','initSugarcrmAccounts','sugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','dynamics365Accounts','initFreshsalesAccounts','initVoiceQueueHopperHistory'];(function(_0x35f901,_0x4dd58a){var _0x497a0a=function(_0xfdfa0b){while(--_0xfdfa0b){_0x35f901['push'](_0x35f901['shift']());}};_0x497a0a(++_0x4dd58a);}(_0xef3f,0xe2));var _0xfef3=function(_0x473837,_0x4e934c){_0x473837=_0x473837-0x0;var _0x29f745=_0xef3f[_0x473837];return _0x29f745;};'use strict';var util=require(_0xfef3('0x0'));var _=require(_0xfef3('0x1'));var moment=require('moment');var Agent=require(_0xfef3('0x2'));var Telephone=require(_0xfef3('0x3'));var Trunk=require('../model/trunk');var VoiceQueue=require(_0xfef3('0x4'));var Trigger=require(_0xfef3('0x5'));var Template=require(_0xfef3('0x6'));var Campaign=require(_0xfef3('0x7'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0xfef3('0x8'));var SalesforceAccount=require(_0xfef3('0x9'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0xfef3('0xa'));var ServicenowAccount=require(_0xfef3('0xb'));var Dynamics365Account=require(_0xfef3('0xc'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require('../model/faxAccount');var Realtime=function(){this[_0xfef3('0xd')]={};this['telephones']={};this[_0xfef3('0xe')]={};this[_0xfef3('0xf')]={};this[_0xfef3('0x10')]={};this[_0xfef3('0x11')]={};this[_0xfef3('0x12')]={};this[_0xfef3('0x13')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0xfef3('0x14')]={};this['channels']={};this['queueChannels']={};this[_0xfef3('0x15')]={};this[_0xfef3('0x16')]={};this[_0xfef3('0x17')]={};this['zendeskAccounts']={};this[_0xfef3('0x18')]={};this['sugarcrmAccounts']={};this['freshdeskAccounts']={};this[_0xfef3('0x19')]={};this['deskAccounts']={};this[_0xfef3('0x1a')]={};this['servicenowAccounts']={};this['dynamics365Accounts']={};this[_0xfef3('0x1b')]={};this['faxAccounts']={};};function freeIsNotKey(_0x4f157a,_0x466a83,_0x3bdfaa){var _0x4d0afc=_[_0xfef3('0x1c')](_0x4f157a,function(_0x371d31,_0x26e5e6){return _0x371d31[_0x3bdfaa];});for(var _0x227987 in _0x466a83){if(_0x466a83['hasOwnProperty'](_0x227987)){if(!_0x4d0afc[_0x227987]){delete _0x466a83[_0x227987];}}}}function freeIsNotKeySip(_0x21c564,_0x5d38b0){var _0x31dae7=_[_0xfef3('0x1c')](_0x21c564,function(_0x5d2fde,_0x46b052){return util[_0xfef3('0x1d')]('SIP/%s',_0x5d2fde[_0xfef3('0x1e')]);});for(var _0x48cf39 in _0x5d38b0){if(_0x5d38b0['hasOwnProperty'](_0x48cf39)){if(!_0x31dae7[_0x48cf39]){delete _0x5d38b0[_0x48cf39];}}}}function freeIsNotKeyAgent(_0x539f4e,_0x4c6979){var _0x107a71=_['mapKeys'](_0x539f4e,function(_0xa2e5d1,_0x4b11e1){var _0x256931=_[_0xfef3('0x1f')](_0xa2e5d1['interface'])?util['format'](_0xfef3('0x20'),_0xa2e5d1[_0xfef3('0x1e')]):_0xa2e5d1[_0xfef3('0x21')];return _0x256931;});for(var _0x153df9 in _0x4c6979){if(_0x4c6979[_0xfef3('0x22')](_0x153df9)){if(!_0x107a71[_0x153df9]){delete _0x4c6979[_0x153df9];}}}}function clearVoiceCallReports(_0x3f08a5){_0x3f08a5[_0xfef3('0x23')]=0x0;_0x3f08a5[_0xfef3('0x24')]=0x0;_0x3f08a5[_0xfef3('0x25')]=0x0;_0x3f08a5[_0xfef3('0x26')]=0x0;_0x3f08a5[_0xfef3('0x27')]=0x0;}function clearCampaigns(_0x3a8cba){if(!_[_0xfef3('0x28')](_0x3a8cba)){for(var _0x3a5ace in _0x3a8cba){if(_0x3a8cba['hasOwnProperty'](_0x3a5ace)){_0x3a8cba[_0x3a5ace][_0xfef3('0x29')]=0x0;_0x3a8cba[_0x3a5ace][_0xfef3('0x2a')]=0x0;}}}}function clearVoiceQueues(_0x543c06){if(!_['isEmpty'](_0x543c06)){for(var _0x32812c in _0x543c06){if(_0x543c06[_0xfef3('0x22')](_0x32812c)){_0x543c06[_0x32812c][_0xfef3('0x23')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x24')]=0x0;_0x543c06[_0x32812c]['unmanaged']=0x0;_0x543c06[_0x32812c]['abandoned']=0x0;_0x543c06[_0x32812c][_0xfef3('0x25')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x26')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x27')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x2b')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x2c')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x2d')]=0x0;_0x543c06[_0x32812c]['outboundCongestionCallsDay']=0x0;_0x543c06[_0x32812c]['outboundNoSuchCallsDay']=0x0;_0x543c06[_0x32812c][_0xfef3('0x2e')]=0x0;_0x543c06[_0x32812c]['outboundDropCallsDayTimeout']=0x0;_0x543c06[_0x32812c][_0xfef3('0x2f')]=0x0;_0x543c06[_0x32812c]['outboundBlacklistCallsDay']=0x0;_0x543c06[_0x32812c][_0xfef3('0x30')]=0x0;_0x543c06[_0x32812c][_0xfef3('0x31')]=0x0;_0x543c06[_0x32812c]['outboundReCallsDay']=0x0;_0x543c06[_0x32812c]['outboundAnswerAgiCallsDay']=0x0;_0x543c06[_0x32812c][_0xfef3('0x32')]=0x0;_0x543c06[_0x32812c]['queueStatusComplete']=!![];}}}}Realtime[_0xfef3('0x33')][_0xfef3('0x34')]=function(_0x39efa0,_0x5caa78){for(var _0x4e3f70 in _0x5caa78){if(_0x39efa0[_0xfef3('0x22')](_0x4e3f70)){_0x39efa0[_0x4e3f70]=_0x5caa78[_0x4e3f70];}}};Realtime[_0xfef3('0x33')][_0xfef3('0x35')]=function(){var _0x566274=this;return function(_0x106c0d){if(_0x106c0d){freeIsNotKeyAgent(_0x106c0d,_0x566274[_0xfef3('0xd')]);for(var _0x4fb5e9=0x0,_0x1f859b={},_0x412173={};_0x4fb5e9<_0x106c0d[_0xfef3('0x36')];_0x4fb5e9+=0x1){_0x1f859b=_0x106c0d[_0x4fb5e9];var _0x1ca0c3=_['isNil'](_0x1f859b[_0xfef3('0x21')])?util['format']('SIP/%s',_0x1f859b[_0xfef3('0x1e')]):_0x1f859b[_0xfef3('0x21')];if(_[_0xfef3('0x37')](_0x566274[_0xfef3('0xd')][_0x1ca0c3])){_0x566274[_0xfef3('0xd')][_0x1ca0c3]=new Agent(_0x1f859b);}else{_0x566274['mergeFromDatabase'](_0x566274['agents'][_0x1ca0c3],_0x1f859b);}}}return _0x566274[_0xfef3('0xd')];};};Realtime[_0xfef3('0x33')]['initTelephones']=function(){var _0x301254=this;return function(_0x4d3868){if(_0x4d3868){freeIsNotKeySip(_0x4d3868,_0x301254[_0xfef3('0x38')]);for(var _0x36c919=0x0,_0x2f34db={},_0x2fd8c9={};_0x36c919<_0x4d3868['length'];_0x36c919+=0x1){_0x2f34db=_0x4d3868[_0x36c919];if(_[_0xfef3('0x37')](_0x301254[_0xfef3('0x38')][util[_0xfef3('0x1d')](_0xfef3('0x20'),_0x2f34db['name'])])){_0x301254['telephones'][util['format']('SIP/%s',_0x2f34db['name'])]=new Telephone(_0x2f34db);}else{_0x301254[_0xfef3('0x34')](_0x301254['telephones'][util['format']('SIP/%s',_0x2f34db[_0xfef3('0x1e')])],_0x2f34db);}}}return _0x301254[_0xfef3('0x38')];};};Realtime['prototype']['initTrunks']=function(){var _0x408238=this;return function(_0x3e30a4){if(_0x3e30a4){freeIsNotKeySip(_0x3e30a4,_0x408238[_0xfef3('0xe')]);for(var _0x197601=0x0,_0xc59136={},_0x12de2b={};_0x197601<_0x3e30a4[_0xfef3('0x36')];_0x197601+=0x1){_0xc59136=_0x3e30a4[_0x197601];if(_[_0xfef3('0x37')](_0x408238[_0xfef3('0xe')][util[_0xfef3('0x1d')](_0xfef3('0x20'),_0xc59136['name'])])){_0x408238[_0xfef3('0xe')][util[_0xfef3('0x1d')](_0xfef3('0x20'),_0xc59136['name'])]=new Trunk(_0xc59136);}else{_0x408238[_0xfef3('0x34')](_0x408238[_0xfef3('0xe')][util[_0xfef3('0x1d')](_0xfef3('0x20'),_0xc59136[_0xfef3('0x1e')])],_0xc59136);}}}return _0x408238[_0xfef3('0xe')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x39')]=function(){var _0x43d325=this;return function(_0x4ccc18){if(_0x4ccc18){freeIsNotKey(_0x4ccc18,_0x43d325[_0xfef3('0xf')],'name');for(var _0x3129a7=0x0,_0x61860e={},_0x42f22c={};_0x3129a7<_0x4ccc18[_0xfef3('0x36')];_0x3129a7+=0x1){_0x61860e=_0x4ccc18[_0x3129a7];if(_[_0xfef3('0x37')](_0x43d325['voiceQueues'][_0x61860e[_0xfef3('0x1e')]])){_0x43d325[_0xfef3('0xf')][_0x61860e['name']]=new VoiceQueue(_0x61860e);}else{_0x43d325[_0xfef3('0x34')](_0x43d325[_0xfef3('0xf')][_0x61860e[_0xfef3('0x1e')]],_0x61860e);}}}return _0x43d325[_0xfef3('0xf')];};};Realtime['prototype'][_0xfef3('0x3a')]=function(){var _0x5159fa=this;return function(_0x20e38d){if(_0x20e38d){freeIsNotKey(_0x20e38d,_0x5159fa['triggers'],'id');for(var _0x985bba=0x0,_0xd3c4c6={},_0x164c1a={};_0x985bba<_0x20e38d['length'];_0x985bba+=0x1){_0xd3c4c6=_0x20e38d[_0x985bba];if(_[_0xfef3('0x37')](_0x5159fa[_0xfef3('0x10')][_0xd3c4c6['id']])){_0x5159fa[_0xfef3('0x10')][_0xd3c4c6['id']]=new Trigger(_0xd3c4c6);}else{_0x5159fa[_0xfef3('0x34')](_0x5159fa[_0xfef3('0x10')][_0xd3c4c6['id']],_0xd3c4c6);}}}return _0x5159fa[_0xfef3('0x10')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x3b')]=function(){var _0x144333=this;return function(_0x361eaf){if(_0x361eaf){freeIsNotKey(_0x361eaf,_0x144333[_0xfef3('0x12')],'id');for(var _0x4a2f4e=0x0,_0x21d7fb={},_0x8c69dd={};_0x4a2f4e<_0x361eaf[_0xfef3('0x36')];_0x4a2f4e+=0x1){_0x21d7fb=_0x361eaf[_0x4a2f4e];if(_[_0xfef3('0x37')](_0x144333[_0xfef3('0x12')][_0x21d7fb['id']])){_0x144333[_0xfef3('0x12')][_0x21d7fb['id']]=new Template(_0x21d7fb);}else{_0x144333['mergeFromDatabase'](_0x144333[_0xfef3('0x12')][_0x21d7fb['id']],_0x21d7fb);}}}return _0x144333[_0xfef3('0x12')];};};Realtime[_0xfef3('0x33')]['initZendeskAccounts']=function(){var _0x4c1a1b=this;return function(_0x2e4257){if(_0x2e4257){freeIsNotKey(_0x2e4257,_0x4c1a1b[_0xfef3('0x3c')],'id');for(var _0x46c7f9=0x0,_0x444e8a={},_0x2c4efd={};_0x46c7f9<_0x2e4257[_0xfef3('0x36')];_0x46c7f9+=0x1){_0x444e8a=_0x2e4257[_0x46c7f9];if(_[_0xfef3('0x37')](_0x4c1a1b['zendeskAccounts'][_0x444e8a['id']])){_0x4c1a1b[_0xfef3('0x3c')][_0x444e8a['id']]=new ZendeskAccount(_0x444e8a);}else{_0x4c1a1b[_0xfef3('0x34')](_0x4c1a1b[_0xfef3('0x3c')][_0x444e8a['id']],_0x444e8a);}}}return _0x4c1a1b[_0xfef3('0x3c')];};};Realtime[_0xfef3('0x33')]['initSalesforceAccounts']=function(){var _0x3de1fe=this;return function(_0x5cc66b){if(_0x5cc66b){freeIsNotKey(_0x5cc66b,_0x3de1fe[_0xfef3('0x18')],'id');for(var _0x33f4a5=0x0,_0x28e180={},_0x42f123={};_0x33f4a5<_0x5cc66b[_0xfef3('0x36')];_0x33f4a5+=0x1){_0x28e180=_0x5cc66b[_0x33f4a5];if(_[_0xfef3('0x37')](_0x3de1fe['salesforceAccounts'][_0x28e180['id']])){_0x3de1fe['salesforceAccounts'][_0x28e180['id']]=new SalesforceAccount(_0x28e180);}else{_0x3de1fe[_0xfef3('0x34')](_0x3de1fe[_0xfef3('0x18')][_0x28e180['id']],_0x28e180);}}}return _0x3de1fe[_0xfef3('0x18')];};};Realtime[_0xfef3('0x33')]['initFreshdeskAccounts']=function(){var _0x16aff6=this;return function(_0x578159){if(_0x578159){freeIsNotKey(_0x578159,_0x16aff6['freshdeskAccounts'],'id');for(var _0x305599=0x0,_0x148dec={},_0x60ef60={};_0x305599<_0x578159[_0xfef3('0x36')];_0x305599+=0x1){_0x148dec=_0x578159[_0x305599];if(_[_0xfef3('0x37')](_0x16aff6['freshdeskAccounts'][_0x148dec['id']])){_0x16aff6[_0xfef3('0x3d')][_0x148dec['id']]=new FreshdeskAccount(_0x148dec);}else{_0x16aff6[_0xfef3('0x34')](_0x16aff6[_0xfef3('0x3d')][_0x148dec['id']],_0x148dec);}}}return _0x16aff6['freshdeskAccounts'];};};Realtime[_0xfef3('0x33')][_0xfef3('0x3e')]=function(){var _0x25c69e=this;return function(_0x5e7d58){if(_0x5e7d58){freeIsNotKey(_0x5e7d58,_0x25c69e[_0xfef3('0x19')],'id');for(var _0x3ed5ec=0x0,_0x441a09={},_0x1e9263={};_0x3ed5ec<_0x5e7d58[_0xfef3('0x36')];_0x3ed5ec+=0x1){_0x441a09=_0x5e7d58[_0x3ed5ec];if(_[_0xfef3('0x37')](_0x25c69e[_0xfef3('0x19')][_0x441a09['id']])){_0x25c69e['zohoAccounts'][_0x441a09['id']]=new ZohoAccount(_0x441a09);}else{_0x25c69e[_0xfef3('0x34')](_0x25c69e[_0xfef3('0x19')][_0x441a09['id']],_0x441a09);}}}return _0x25c69e[_0xfef3('0x19')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x3f')]=function(){var _0x302a7b=this;return function(_0x4ed080){if(_0x4ed080){freeIsNotKey(_0x4ed080,_0x302a7b[_0xfef3('0x40')],'id');for(var _0x29be01=0x0,_0x22ab88={},_0x728a28={};_0x29be01<_0x4ed080[_0xfef3('0x36')];_0x29be01+=0x1){_0x22ab88=_0x4ed080[_0x29be01];if(_[_0xfef3('0x37')](_0x302a7b['deskAccounts'][_0x22ab88['id']])){_0x302a7b[_0xfef3('0x40')][_0x22ab88['id']]=new DeskAccount(_0x22ab88);}else{_0x302a7b[_0xfef3('0x34')](_0x302a7b[_0xfef3('0x40')][_0x22ab88['id']],_0x22ab88);}}}return _0x302a7b['deskAccounts'];};};Realtime[_0xfef3('0x33')][_0xfef3('0x41')]=function(){var _0x5b3fbf=this;return function(_0x4f212d){if(_0x4f212d){freeIsNotKey(_0x4f212d,_0x5b3fbf[_0xfef3('0x42')],'id');for(var _0x50c10d=0x0,_0x17e623={},_0x313679={};_0x50c10d<_0x4f212d[_0xfef3('0x36')];_0x50c10d+=0x1){_0x17e623=_0x4f212d[_0x50c10d];if(_['isUndefined'](_0x5b3fbf[_0xfef3('0x42')][_0x17e623['id']])){_0x5b3fbf[_0xfef3('0x42')][_0x17e623['id']]=new SugarcrmAccount(_0x17e623);}else{_0x5b3fbf[_0xfef3('0x34')](_0x5b3fbf['sugarcrmAccounts'][_0x17e623['id']],_0x17e623);}}}return _0x5b3fbf[_0xfef3('0x42')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x43')]=function(){var _0x4fe9b8=this;return function(_0x1f986d){if(_0x1f986d){freeIsNotKey(_0x1f986d,_0x4fe9b8['vtigerAccounts'],'id');for(var _0x473581=0x0,_0x84cd63={},_0x473478={};_0x473581<_0x1f986d[_0xfef3('0x36')];_0x473581+=0x1){_0x84cd63=_0x1f986d[_0x473581];if(_[_0xfef3('0x37')](_0x4fe9b8[_0xfef3('0x1a')][_0x84cd63['id']])){_0x4fe9b8[_0xfef3('0x1a')][_0x84cd63['id']]=new VtigerAccount(_0x84cd63);}else{_0x4fe9b8['mergeFromDatabase'](_0x4fe9b8['vtigerAccounts'][_0x84cd63['id']],_0x84cd63);}}}return _0x4fe9b8[_0xfef3('0x1a')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x44')]=function(){var _0x4c119d=this;return function(_0x358aad){if(_0x358aad){freeIsNotKey(_0x358aad,_0x4c119d[_0xfef3('0x45')],'id');for(var _0x893550=0x0,_0x4f099e={},_0x33731d={};_0x893550<_0x358aad[_0xfef3('0x36')];_0x893550+=0x1){_0x4f099e=_0x358aad[_0x893550];if(_[_0xfef3('0x37')](_0x4c119d[_0xfef3('0x45')][_0x4f099e['id']])){_0x4c119d[_0xfef3('0x45')][_0x4f099e['id']]=new ServicenowAccount(_0x4f099e);}else{_0x4c119d[_0xfef3('0x34')](_0x4c119d[_0xfef3('0x45')][_0x4f099e['id']],_0x4f099e);}}}return _0x4c119d['servicenowAccounts'];};};Realtime['prototype'][_0xfef3('0x46')]=function(){var _0x2fcfb0=this;return function(_0x7f01de){if(_0x7f01de){freeIsNotKey(_0x7f01de,_0x2fcfb0['dynamics365Accounts'],'id');for(var _0x4d8ce7=0x0,_0x402fdb={},_0x5d3845={};_0x4d8ce7<_0x7f01de[_0xfef3('0x36')];_0x4d8ce7+=0x1){_0x402fdb=_0x7f01de[_0x4d8ce7];if(_[_0xfef3('0x37')](_0x2fcfb0[_0xfef3('0x47')][_0x402fdb['id']])){_0x2fcfb0[_0xfef3('0x47')][_0x402fdb['id']]=new Dynamics365Account(_0x402fdb);}else{_0x2fcfb0[_0xfef3('0x34')](_0x2fcfb0[_0xfef3('0x47')][_0x402fdb['id']],_0x402fdb);}}}return _0x2fcfb0[_0xfef3('0x47')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x48')]=function(){var _0xd04599=this;return function(_0x3071de){if(_0x3071de){freeIsNotKey(_0x3071de,_0xd04599[_0xfef3('0x1b')],'id');for(var _0x1f79ed=0x0,_0x52e97f={},_0x17e5ca={};_0x1f79ed<_0x3071de['length'];_0x1f79ed+=0x1){_0x52e97f=_0x3071de[_0x1f79ed];if(_[_0xfef3('0x37')](_0xd04599[_0xfef3('0x1b')][_0x52e97f['id']])){_0xd04599[_0xfef3('0x1b')][_0x52e97f['id']]=new FreshsalesAccount(_0x52e97f);}else{_0xd04599[_0xfef3('0x34')](_0xd04599[_0xfef3('0x1b')][_0x52e97f['id']],_0x52e97f);}}}return _0xd04599[_0xfef3('0x1b')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x49')]=function(){var _0x1cea9c=this;return function(_0x31a091){for(var _0x5f493d=0x0;_0x5f493d<_0x31a091['length'];_0x5f493d+=0x1){_[_0xfef3('0x4a')](_0x1cea9c[_0xfef3('0xf')][_0x31a091[_0x5f493d][_0xfef3('0x1e')]],_0x31a091[_0x5f493d]);}return _0x1cea9c[_0xfef3('0xf')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x4b')]=function(){var _0x59feef=this;return function(_0x1c629c){clearVoiceQueues(_0x59feef[_0xfef3('0xf')]);if(_0x1c629c){_0x1c629c=_[_0xfef3('0x4c')](_0x1c629c,_0xfef3('0x4d'));for(var _0x434ab8 in _0x1c629c){if(_0x1c629c[_0xfef3('0x22')](_0x434ab8)){var _0x5edf73={};for(var _0x4f2b17=0x0;_0x4f2b17<_0x1c629c[_0x434ab8][_0xfef3('0x36')];_0x4f2b17+=0x1){var _0x42524e=_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x4e')];if(_0x59feef['voiceQueues'][_0x42524e]){if(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x4f')]){_0x59feef['voiceQueues'][_0x42524e][_0xfef3('0x50')]+=0x1;}if(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x51')]){_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x52')]+=0x1;}_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x25')]+=moment(_0x1c629c[_0x434ab8][_0x4f2b17]['queuecallerleaveAt'])[_0xfef3('0x53')](moment(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x54')]),_0xfef3('0x55'))||0x0;if(_0x4f2b17===_0x1c629c[_0x434ab8][_0xfef3('0x36')]-0x1){_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x26')]+=moment(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x56')]||_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x57')]||_0x1c629c[_0x434ab8][_0x4f2b17]['queuecallerexitAt'])[_0xfef3('0x53')](moment(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x54')]),'seconds')||0x0;_0x59feef['voiceQueues'][_0x42524e][_0xfef3('0x23')]+=0x1;if(_0x1c629c[_0x434ab8][_0x4f2b17]['queuecallercomplete']){_0x59feef['voiceQueues'][_0x42524e]['answered']+=0x1;_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x27')]+=moment(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x56')])[_0xfef3('0x53')](moment(_0x1c629c[_0x434ab8][_0x4f2b17][_0xfef3('0x58')]),_0xfef3('0x55'))||0x0;}}else{_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x26')]+=_0x59feef[_0xfef3('0xf')][_0x42524e][_0xfef3('0x25')]||0x0;}}}}}}return _0x59feef[_0xfef3('0xf')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x59')]=function(){var _0x35ac77=this;return function(_0x437b37){clearVoiceCallReports(_0x35ac77[_0xfef3('0x13')]);if(_0x437b37){for(var _0x28f7d7=0x0;_0x28f7d7<_0x437b37['length'];_0x28f7d7+=0x1){_0x35ac77['outbound'][_0xfef3('0x23')]+=0x1;_0x35ac77[_0xfef3('0x13')][_0xfef3('0x26')]+=_0x437b37[_0x28f7d7][_0xfef3('0x5a')];if(_0x437b37[_0x28f7d7][_0xfef3('0x5b')]===_0xfef3('0x5c')){_0x35ac77[_0xfef3('0x13')][_0xfef3('0x24')]+=0x1;_0x35ac77[_0xfef3('0x13')][_0xfef3('0x25')]+=_0x437b37[_0x28f7d7][_0xfef3('0x5a')]-_0x437b37[_0x28f7d7][_0xfef3('0x5d')]||0x0;_0x35ac77[_0xfef3('0x13')]['sumBillable']+=_0x437b37[_0x28f7d7][_0xfef3('0x5d')];}}}return _0x35ac77[_0xfef3('0x13')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x5e')]=function(){var _0x514114=this;return function(_0x43032e){if(_0x43032e){freeIsNotKey(_0x43032e,_0x514114[_0xfef3('0x11')],'name');for(var _0x2d006e=0x0,_0x18d0df={};_0x2d006e<_0x43032e[_0xfef3('0x36')];_0x2d006e+=0x1){_0x18d0df=_0x43032e[_0x2d006e];if(_['isUndefined'](_0x514114[_0xfef3('0x11')][_0x18d0df[_0xfef3('0x1e')]])){_0x514114['campaigns'][_0x18d0df[_0xfef3('0x1e')]]=new Campaign(_0x18d0df);}else{_0x514114['mergeFromDatabase'](_0x514114[_0xfef3('0x11')][_0x18d0df[_0xfef3('0x1e')]],_0x18d0df);_0x514114[_0xfef3('0x11')][_0x18d0df[_0xfef3('0x1e')]]['dialQueueProject']=_0x18d0df['SquareProject']?_0x18d0df[_0xfef3('0x5f')][_0xfef3('0x1e')]:undefined;}}}return _0x514114['campaigns'];};};Realtime[_0xfef3('0x33')]['initVoiceExtensions']=function(){var _0x2eca29=this;return function(_0x507bab){if(_0x507bab){freeIsNotKey(_0x507bab,_0x2eca29[_0xfef3('0x14')],'id');for(var _0x1b8c89=0x0,_0x37fc10={};_0x1b8c89<_0x507bab[_0xfef3('0x36')];_0x1b8c89+=0x1){_0x37fc10=_0x507bab[_0x1b8c89];if(_['isUndefined'](_0x2eca29[_0xfef3('0x14')][_0x37fc10['id']])){_0x2eca29[_0xfef3('0x14')][_0x37fc10['id']]=new VoiceExtension(_0x37fc10);}else{_0x2eca29['mergeFromDatabase'](_0x2eca29['voiceExtensions'][_0x37fc10['id']],_0x37fc10);}}}return _0x2eca29[_0xfef3('0x14')];};};Realtime[_0xfef3('0x33')][_0xfef3('0x60')]=function(){var _0x266d7c=this;return function(_0x1c4b3d){clearCampaigns(_0x266d7c['campaigns']);for(var _0x1e4c8f=0x0;_0x1e4c8f<_0x1c4b3d[_0xfef3('0x36')];_0x1e4c8f+=0x1){_[_0xfef3('0x4a')](_0x266d7c[_0xfef3('0x11')][_0x1c4b3d[_0x1e4c8f][_0xfef3('0x1e')]],_0x1c4b3d[_0x1e4c8f]);}return _0x266d7c[_0xfef3('0x11')];};};Realtime['prototype'][_0xfef3('0x61')]=function(){var _0x23bf6b=this;return function(_0x286e31){if(_0x286e31){freeIsNotKey(_0x286e31,_0x23bf6b[_0xfef3('0x62')],'id');for(var _0x33237e=0x0,_0x180716={},_0x3bdc5e={};_0x33237e<_0x286e31[_0xfef3('0x36')];_0x33237e+=0x1){_0x180716=_0x286e31[_0x33237e];if(_[_0xfef3('0x37')](_0x23bf6b[_0xfef3('0x62')][_0x180716['id']])){_0x23bf6b['faxAccounts'][_0x180716['id']]=new FaxAccount(_0x180716);}else{_0x23bf6b[_0xfef3('0x34')](_0x23bf6b[_0xfef3('0x62')][_0x180716['id']],_0x180716);}}}return _0x23bf6b[_0xfef3('0x62')];};};module[_0xfef3('0x63')]=Realtime;
\ No newline at end of file
+var _0x5f66=['diff','seconds','disposition','ANSWERED','outbound','duration','billableseconds','initCampaigns','campaigns','dialQueueProject','SquareProject','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','initVoiceQueues','exports','moment','../model/agent','../model/telephone','../model/trunk','../model/voiceQueue','../model/trigger','../model/campaign','../model/zendeskAccount','../model/salesforceAccount','../model/zohoAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/freshsalesAccount','telephones','trunks','voiceQueues','triggers','templates','channels','outboundChannels','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','faxAccounts','mapKeys','hasOwnProperty','isNil','format','interface','total','answered','sumHoldTime','sumBillable','isEmpty','ivrAnswerCallsDay','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerCallsDay','queueStatusComplete','prototype','mergeFromDatabase','initAgents','agents','length','name','isUndefined','initTelephones','SIP/%s','initTriggers','initSalesforceAccounts','initFreshdeskAccounts','initDeskAccounts','initSugarcrmAccounts','initVtigerAccounts','initServicenowAccounts','freshsalesAccounts','initVoiceQueueHopperHistory','initVoiceQueueReports','groupBy','queuecallerexit','queuecallerabandon','queuecallerleaveAt','queuecallerjoinAt','sumDuration','queuecallercompleteAt','queuecallerexitAt'];(function(_0x35ced9,_0x4835a6){var _0x1f67b2=function(_0xd01301){while(--_0xd01301){_0x35ced9['push'](_0x35ced9['shift']());}};_0x1f67b2(++_0x4835a6);}(_0x5f66,0x1a0));var _0x65f6=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x5f66[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require('lodash');var moment=require(_0x65f6('0x0'));var util=require('util');var Agent=require(_0x65f6('0x1'));var Telephone=require(_0x65f6('0x2'));var Trunk=require(_0x65f6('0x3'));var VoiceQueue=require(_0x65f6('0x4'));var Trigger=require(_0x65f6('0x5'));var Template=require('../model/template');var Campaign=require(_0x65f6('0x6'));var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x65f6('0x7'));var SalesforceAccount=require(_0x65f6('0x8'));var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require(_0x65f6('0x9'));var DeskAccount=require(_0x65f6('0xa'));var VtigerAccount=require(_0x65f6('0xb'));var ServicenowAccount=require(_0x65f6('0xc'));var Dynamics365Account=require(_0x65f6('0xd'));var FreshsalesAccount=require(_0x65f6('0xe'));var FaxAccount=require('../model/faxAccount');function Realtime(){this['agents']={};this[_0x65f6('0xf')]={};this[_0x65f6('0x10')]={};this[_0x65f6('0x11')]={};this[_0x65f6('0x12')]={};this['campaigns']={};this[_0x65f6('0x13')]={};this['outbound']={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x65f6('0x14')]={};this['queueChannels']={};this[_0x65f6('0x15')]={};this['timers']={};this[_0x65f6('0x16')]={};this[_0x65f6('0x17')]={};this[_0x65f6('0x18')]={};this[_0x65f6('0x19')]={};this[_0x65f6('0x1a')]={};this[_0x65f6('0x1b')]={};this[_0x65f6('0x1c')]={};this[_0x65f6('0x1d')]={};this[_0x65f6('0x1e')]={};this[_0x65f6('0x1f')]={};this['freshsalesAccounts']={};this[_0x65f6('0x20')]={};}function freeIsNotKey(_0x49a913,_0x5dd324,_0x1693e6){var _0x5c69f8=_[_0x65f6('0x21')](_0x49a913,function(_0x1c955c){return _0x1c955c[_0x1693e6];});for(var _0x1b1cbb in _0x5dd324){if(_0x5dd324[_0x65f6('0x22')](_0x1b1cbb)){if(!_0x5c69f8[_0x1b1cbb]){delete _0x5dd324[_0x1b1cbb];}}}}function freeIsNotKeySip(_0xc8660c,_0x18380e){var _0x495dd6=_['mapKeys'](_0xc8660c,function(_0x2d538c){return util['format']('SIP/%s',_0x2d538c['name']);});for(var _0x365159 in _0x18380e){if(_0x18380e[_0x65f6('0x22')](_0x365159)){if(!_0x495dd6[_0x365159]){delete _0x18380e[_0x365159];}}}}function freeIsNotKeyAgent(_0x5114a4,_0x39e19f){var _0x270893=_[_0x65f6('0x21')](_0x5114a4,function(_0x3876ed){var _0x219ab2=_[_0x65f6('0x23')](_0x3876ed['interface'])?util[_0x65f6('0x24')]('SIP/%s',_0x3876ed['name']):_0x3876ed[_0x65f6('0x25')];return _0x219ab2;});for(var _0xd173f4 in _0x39e19f){if(_0x39e19f['hasOwnProperty'](_0xd173f4)){if(!_0x270893[_0xd173f4]){delete _0x39e19f[_0xd173f4];}}}}function clearVoiceCallReports(_0x1eeaaa){_0x1eeaaa[_0x65f6('0x26')]=0x0;_0x1eeaaa[_0x65f6('0x27')]=0x0;_0x1eeaaa[_0x65f6('0x28')]=0x0;_0x1eeaaa['sumDuration']=0x0;_0x1eeaaa[_0x65f6('0x29')]=0x0;}function clearCampaigns(_0x59ea32){if(!_[_0x65f6('0x2a')](_0x59ea32)){for(var _0x5963e0 in _0x59ea32){if(_0x59ea32['hasOwnProperty'](_0x5963e0)){_0x59ea32[_0x5963e0]['ivrTotalCallsDays']=0x0;_0x59ea32[_0x5963e0][_0x65f6('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x16cde8){if(!_['isEmpty'](_0x16cde8)){for(var _0x296cd9 in _0x16cde8){if(_0x16cde8[_0x65f6('0x22')](_0x296cd9)){_0x16cde8[_0x296cd9]['total']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x27')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2c')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2d')]=0x0;_0x16cde8[_0x296cd9]['sumHoldTime']=0x0;_0x16cde8[_0x296cd9]['sumDuration']=0x0;_0x16cde8[_0x296cd9]['sumBillable']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2e')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x2f')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x30')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x31')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x32')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x33')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x34')]=0x0;_0x16cde8[_0x296cd9]['outboundDropCallsDayCallersExit']=0x0;_0x16cde8[_0x296cd9]['outboundBlacklistCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x35')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x36')]=0x0;_0x16cde8[_0x296cd9]['outboundReCallsDay']=0x0;_0x16cde8[_0x296cd9]['outboundAnswerAgiCallsDay']=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x37')]=0x0;_0x16cde8[_0x296cd9][_0x65f6('0x38')]=!![];}}}}Realtime[_0x65f6('0x39')][_0x65f6('0x3a')]=function(_0x1217fd,_0x2d32be){for(var _0x5792a0 in _0x2d32be){if(_0x1217fd[_0x65f6('0x22')](_0x5792a0)){_0x1217fd[_0x5792a0]=_0x2d32be[_0x5792a0];}}};Realtime[_0x65f6('0x39')][_0x65f6('0x3b')]=function(){var _0x4bc037=this;return function(_0x217f35){if(_0x217f35){freeIsNotKeyAgent(_0x217f35,_0x4bc037[_0x65f6('0x3c')]);for(var _0xbaed3c=0x0,_0x45510a={};_0xbaed3c<_0x217f35[_0x65f6('0x3d')];_0xbaed3c+=0x1){_0x45510a=_0x217f35[_0xbaed3c];var _0x2f054c=_['isNil'](_0x45510a[_0x65f6('0x25')])?util[_0x65f6('0x24')]('SIP/%s',_0x45510a[_0x65f6('0x3e')]):_0x45510a['interface'];if(_[_0x65f6('0x3f')](_0x4bc037['agents'][_0x2f054c])){_0x4bc037[_0x65f6('0x3c')][_0x2f054c]=new Agent(_0x45510a);}else{_0x4bc037[_0x65f6('0x3a')](_0x4bc037['agents'][_0x2f054c],_0x45510a);}}}return _0x4bc037[_0x65f6('0x3c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x40')]=function(){var _0x515648=this;return function(_0x582c7e){if(_0x582c7e){freeIsNotKeySip(_0x582c7e,_0x515648[_0x65f6('0xf')]);for(var _0x4c0df4=0x0,_0x26de30={};_0x4c0df4<_0x582c7e['length'];_0x4c0df4+=0x1){_0x26de30=_0x582c7e[_0x4c0df4];if(_[_0x65f6('0x3f')](_0x515648[_0x65f6('0xf')][util['format'](_0x65f6('0x41'),_0x26de30['name'])])){_0x515648['telephones'][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])]=new Telephone(_0x26de30);}else{_0x515648[_0x65f6('0x3a')](_0x515648[_0x65f6('0xf')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x26de30[_0x65f6('0x3e')])],_0x26de30);}}}return _0x515648['telephones'];};};Realtime[_0x65f6('0x39')]['initTrunks']=function(){var _0x12a589=this;return function(_0xa4394a){if(_0xa4394a){freeIsNotKeySip(_0xa4394a,_0x12a589[_0x65f6('0x10')]);for(var _0x2ea7f7=0x0,_0x5ef5c2={};_0x2ea7f7<_0xa4394a[_0x65f6('0x3d')];_0x2ea7f7+=0x1){_0x5ef5c2=_0xa4394a[_0x2ea7f7];if(_[_0x65f6('0x3f')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])])){_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2['name'])]=new Trunk(_0x5ef5c2);}else{_0x12a589[_0x65f6('0x3a')](_0x12a589[_0x65f6('0x10')][util[_0x65f6('0x24')](_0x65f6('0x41'),_0x5ef5c2[_0x65f6('0x3e')])],_0x5ef5c2);}}}return _0x12a589[_0x65f6('0x10')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x42')]=function(){var _0x461393=this;return function(_0x2abbed){if(_0x2abbed){freeIsNotKey(_0x2abbed,_0x461393[_0x65f6('0x12')],'id');for(var _0x2c008a=0x0,_0x6c4d94={};_0x2c008a<_0x2abbed[_0x65f6('0x3d')];_0x2c008a+=0x1){_0x6c4d94=_0x2abbed[_0x2c008a];if(_[_0x65f6('0x3f')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']])){_0x461393['triggers'][_0x6c4d94['id']]=new Trigger(_0x6c4d94);}else{_0x461393[_0x65f6('0x3a')](_0x461393[_0x65f6('0x12')][_0x6c4d94['id']],_0x6c4d94);}}}return _0x461393[_0x65f6('0x12')];};};Realtime[_0x65f6('0x39')]['initTemplates']=function(){var _0x1bf5bf=this;return function(_0x2d0dac){if(_0x2d0dac){freeIsNotKey(_0x2d0dac,_0x1bf5bf[_0x65f6('0x13')],'id');for(var _0x5e69b4=0x0,_0x2dbab3={};_0x5e69b4<_0x2d0dac[_0x65f6('0x3d')];_0x5e69b4+=0x1){_0x2dbab3=_0x2d0dac[_0x5e69b4];if(_[_0x65f6('0x3f')](_0x1bf5bf[_0x65f6('0x13')][_0x2dbab3['id']])){_0x1bf5bf['templates'][_0x2dbab3['id']]=new Template(_0x2dbab3);}else{_0x1bf5bf[_0x65f6('0x3a')](_0x1bf5bf['templates'][_0x2dbab3['id']],_0x2dbab3);}}}return _0x1bf5bf[_0x65f6('0x13')];};};Realtime[_0x65f6('0x39')]['initZendeskAccounts']=function(){var _0xf754ee=this;return function(_0x5085db){if(_0x5085db){freeIsNotKey(_0x5085db,_0xf754ee[_0x65f6('0x17')],'id');for(var _0x4d9b76=0x0,_0x2d1706={};_0x4d9b76<_0x5085db[_0x65f6('0x3d')];_0x4d9b76+=0x1){_0x2d1706=_0x5085db[_0x4d9b76];if(_[_0x65f6('0x3f')](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']])){_0xf754ee['zendeskAccounts'][_0x2d1706['id']]=new ZendeskAccount(_0x2d1706);}else{_0xf754ee['mergeFromDatabase'](_0xf754ee[_0x65f6('0x17')][_0x2d1706['id']],_0x2d1706);}}}return _0xf754ee[_0x65f6('0x17')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x43')]=function(){var _0x3b907c=this;return function(_0x2d6ab9){if(_0x2d6ab9){freeIsNotKey(_0x2d6ab9,_0x3b907c[_0x65f6('0x18')],'id');for(var _0x41690c=0x0,_0x414f49={};_0x41690c<_0x2d6ab9['length'];_0x41690c+=0x1){_0x414f49=_0x2d6ab9[_0x41690c];if(_[_0x65f6('0x3f')](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']])){_0x3b907c[_0x65f6('0x18')][_0x414f49['id']]=new SalesforceAccount(_0x414f49);}else{_0x3b907c['mergeFromDatabase'](_0x3b907c[_0x65f6('0x18')][_0x414f49['id']],_0x414f49);}}}return _0x3b907c[_0x65f6('0x18')];};};Realtime['prototype'][_0x65f6('0x44')]=function(){var _0x253d52=this;return function(_0x57eb04){if(_0x57eb04){freeIsNotKey(_0x57eb04,_0x253d52[_0x65f6('0x1a')],'id');for(var _0x4f96c4=0x0,_0x247be3={};_0x4f96c4<_0x57eb04[_0x65f6('0x3d')];_0x4f96c4+=0x1){_0x247be3=_0x57eb04[_0x4f96c4];if(_[_0x65f6('0x3f')](_0x253d52['freshdeskAccounts'][_0x247be3['id']])){_0x253d52[_0x65f6('0x1a')][_0x247be3['id']]=new FreshdeskAccount(_0x247be3);}else{_0x253d52[_0x65f6('0x3a')](_0x253d52['freshdeskAccounts'][_0x247be3['id']],_0x247be3);}}}return _0x253d52[_0x65f6('0x1a')];};};Realtime[_0x65f6('0x39')]['initZohoAccounts']=function(){var _0x34d6a9=this;return function(_0x344c0e){if(_0x344c0e){freeIsNotKey(_0x344c0e,_0x34d6a9[_0x65f6('0x1b')],'id');for(var _0x25d504=0x0,_0x234fa7={};_0x25d504<_0x344c0e[_0x65f6('0x3d')];_0x25d504+=0x1){_0x234fa7=_0x344c0e[_0x25d504];if(_[_0x65f6('0x3f')](_0x34d6a9[_0x65f6('0x1b')][_0x234fa7['id']])){_0x34d6a9['zohoAccounts'][_0x234fa7['id']]=new ZohoAccount(_0x234fa7);}else{_0x34d6a9['mergeFromDatabase'](_0x34d6a9['zohoAccounts'][_0x234fa7['id']],_0x234fa7);}}}return _0x34d6a9[_0x65f6('0x1b')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x45')]=function(){var _0x20c322=this;return function(_0x545445){if(_0x545445){freeIsNotKey(_0x545445,_0x20c322[_0x65f6('0x1c')],'id');for(var _0x2032b9=0x0,_0x9ff849={};_0x2032b9<_0x545445['length'];_0x2032b9+=0x1){_0x9ff849=_0x545445[_0x2032b9];if(_[_0x65f6('0x3f')](_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']])){_0x20c322[_0x65f6('0x1c')][_0x9ff849['id']]=new DeskAccount(_0x9ff849);}else{_0x20c322['mergeFromDatabase'](_0x20c322['deskAccounts'][_0x9ff849['id']],_0x9ff849);}}}return _0x20c322[_0x65f6('0x1c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x46')]=function(){var _0x39364f=this;return function(_0x2a76b3){if(_0x2a76b3){freeIsNotKey(_0x2a76b3,_0x39364f[_0x65f6('0x19')],'id');for(var _0x35d77f=0x0,_0x138334={};_0x35d77f<_0x2a76b3[_0x65f6('0x3d')];_0x35d77f+=0x1){_0x138334=_0x2a76b3[_0x35d77f];if(_[_0x65f6('0x3f')](_0x39364f[_0x65f6('0x19')][_0x138334['id']])){_0x39364f[_0x65f6('0x19')][_0x138334['id']]=new SugarcrmAccount(_0x138334);}else{_0x39364f[_0x65f6('0x3a')](_0x39364f[_0x65f6('0x19')][_0x138334['id']],_0x138334);}}}return _0x39364f['sugarcrmAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x47')]=function(){var _0x42a805=this;return function(_0x4b4efe){if(_0x4b4efe){freeIsNotKey(_0x4b4efe,_0x42a805[_0x65f6('0x1d')],'id');for(var _0x16dec0=0x0,_0x4638c9={};_0x16dec0<_0x4b4efe[_0x65f6('0x3d')];_0x16dec0+=0x1){_0x4638c9=_0x4b4efe[_0x16dec0];if(_['isUndefined'](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']])){_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']]=new VtigerAccount(_0x4638c9);}else{_0x42a805[_0x65f6('0x3a')](_0x42a805[_0x65f6('0x1d')][_0x4638c9['id']],_0x4638c9);}}}return _0x42a805['vtigerAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x48')]=function(){var _0x5c55e4=this;return function(_0x28682b){if(_0x28682b){freeIsNotKey(_0x28682b,_0x5c55e4[_0x65f6('0x1e')],'id');for(var _0x36c316=0x0,_0x51549d={};_0x36c316<_0x28682b[_0x65f6('0x3d')];_0x36c316+=0x1){_0x51549d=_0x28682b[_0x36c316];if(_[_0x65f6('0x3f')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']])){_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']]=new ServicenowAccount(_0x51549d);}else{_0x5c55e4[_0x65f6('0x3a')](_0x5c55e4[_0x65f6('0x1e')][_0x51549d['id']],_0x51549d);}}}return _0x5c55e4['servicenowAccounts'];};};Realtime['prototype']['initDynamics365Accounts']=function(){var _0x336a7d=this;return function(_0x367d95){if(_0x367d95){freeIsNotKey(_0x367d95,_0x336a7d[_0x65f6('0x1f')],'id');for(var _0x471bec=0x0,_0xab6f0={};_0x471bec<_0x367d95[_0x65f6('0x3d')];_0x471bec+=0x1){_0xab6f0=_0x367d95[_0x471bec];if(_['isUndefined'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']])){_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']]=new Dynamics365Account(_0xab6f0);}else{_0x336a7d['mergeFromDatabase'](_0x336a7d[_0x65f6('0x1f')][_0xab6f0['id']],_0xab6f0);}}}return _0x336a7d[_0x65f6('0x1f')];};};Realtime[_0x65f6('0x39')]['initFreshsalesAccounts']=function(){var _0x23c441=this;return function(_0x448c9a){if(_0x448c9a){freeIsNotKey(_0x448c9a,_0x23c441['freshsalesAccounts'],'id');for(var _0x271d76=0x0,_0x3edc6b={};_0x271d76<_0x448c9a[_0x65f6('0x3d')];_0x271d76+=0x1){_0x3edc6b=_0x448c9a[_0x271d76];if(_[_0x65f6('0x3f')](_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']])){_0x23c441[_0x65f6('0x49')][_0x3edc6b['id']]=new FreshsalesAccount(_0x3edc6b);}else{_0x23c441[_0x65f6('0x3a')](_0x23c441['freshsalesAccounts'][_0x3edc6b['id']],_0x3edc6b);}}}return _0x23c441['freshsalesAccounts'];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4a')]=function(){var _0x4a9524=this;return function(_0x417ba5){for(var _0x5f3df9=0x0;_0x5f3df9<_0x417ba5[_0x65f6('0x3d')];_0x5f3df9+=0x1){_['merge'](_0x4a9524[_0x65f6('0x11')][_0x417ba5[_0x5f3df9][_0x65f6('0x3e')]],_0x417ba5[_0x5f3df9]);}return _0x4a9524[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x4b')]=function(){var _0x264e6c=this;return function(_0x1aaf75){clearVoiceQueues(_0x264e6c[_0x65f6('0x11')]);if(_0x1aaf75){_0x1aaf75=_[_0x65f6('0x4c')](_0x1aaf75,'uniqueid');for(var _0x480190 in _0x1aaf75){if(_0x1aaf75[_0x65f6('0x22')](_0x480190)){for(var _0x13ee4b=0x0;_0x13ee4b<_0x1aaf75[_0x480190][_0x65f6('0x3d')];_0x13ee4b+=0x1){var _0x51497f=_0x1aaf75[_0x480190][_0x13ee4b]['queue'];if(_0x264e6c[_0x65f6('0x11')][_0x51497f]){if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4d')]){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x2c')]+=0x1;}if(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4e')]){_0x264e6c[_0x65f6('0x11')][_0x51497f]['abandoned']+=0x1;}_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x4f')])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;if(_0x13ee4b===_0x1aaf75[_0x480190][_0x65f6('0x3d')]-0x1){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x52')]||_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerabandonAt']||_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x53')])[_0x65f6('0x54')](moment(_0x1aaf75[_0x480190][_0x13ee4b][_0x65f6('0x50')]),'seconds')||0x0;_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x26')]+=0x1;if(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercomplete']){_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x27')]+=0x1;_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x29')]+=moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallercompleteAt'])['diff'](moment(_0x1aaf75[_0x480190][_0x13ee4b]['queuecallerleaveAt']),_0x65f6('0x55'))||0x0;}}else{_0x264e6c[_0x65f6('0x11')][_0x51497f][_0x65f6('0x51')]+=_0x264e6c['voiceQueues'][_0x51497f][_0x65f6('0x28')]||0x0;}}}}}}return _0x264e6c[_0x65f6('0x11')];};};Realtime[_0x65f6('0x39')]['initVoiceCallReports']=function(){var _0x40d0f7=this;return function(_0x15809e){clearVoiceCallReports(_0x40d0f7['outbound']);if(_0x15809e){for(var _0x758e80=0x0;_0x758e80<_0x15809e[_0x65f6('0x3d')];_0x758e80+=0x1){_0x40d0f7['outbound'][_0x65f6('0x26')]+=0x1;_0x40d0f7['outbound'][_0x65f6('0x51')]+=_0x15809e[_0x758e80]['duration'];if(_0x15809e[_0x758e80][_0x65f6('0x56')]===_0x65f6('0x57')){_0x40d0f7['outbound'][_0x65f6('0x27')]+=0x1;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x28')]+=_0x15809e[_0x758e80][_0x65f6('0x59')]-_0x15809e[_0x758e80][_0x65f6('0x5a')]||0x0;_0x40d0f7[_0x65f6('0x58')][_0x65f6('0x29')]+=_0x15809e[_0x758e80][_0x65f6('0x5a')];}}}return _0x40d0f7[_0x65f6('0x58')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x5b')]=function(){var _0x574d84=this;return function(_0x10a661){if(_0x10a661){freeIsNotKey(_0x10a661,_0x574d84[_0x65f6('0x5c')],_0x65f6('0x3e'));for(var _0x219e42=0x0,_0x5694f9={};_0x219e42<_0x10a661[_0x65f6('0x3d')];_0x219e42+=0x1){_0x5694f9=_0x10a661[_0x219e42];if(_[_0x65f6('0x3f')](_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]])){_0x574d84['campaigns'][_0x5694f9[_0x65f6('0x3e')]]=new Campaign(_0x5694f9);}else{_0x574d84['mergeFromDatabase'](_0x574d84[_0x65f6('0x5c')][_0x5694f9[_0x65f6('0x3e')]],_0x5694f9);_0x574d84['campaigns'][_0x5694f9['name']][_0x65f6('0x5d')]=_0x5694f9[_0x65f6('0x5e')]?_0x5694f9['SquareProject'][_0x65f6('0x3e')]:undefined;}}}return _0x574d84[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')]['initVoiceExtensions']=function(){var _0x1348ec=this;return function(_0x246510){if(_0x246510){freeIsNotKey(_0x246510,_0x1348ec['voiceExtensions'],'id');for(var _0x36b8de=0x0,_0x504b39={};_0x36b8de<_0x246510[_0x65f6('0x3d')];_0x36b8de+=0x1){_0x504b39=_0x246510[_0x36b8de];if(_['isUndefined'](_0x1348ec['voiceExtensions'][_0x504b39['id']])){_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']]=new VoiceExtension(_0x504b39);}else{_0x1348ec[_0x65f6('0x3a')](_0x1348ec[_0x65f6('0x5f')][_0x504b39['id']],_0x504b39);}}}return _0x1348ec[_0x65f6('0x5f')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x60')]=function(){var _0x1ac46f=this;return function(_0x1f4e2c){clearCampaigns(_0x1ac46f['campaigns']);for(var _0x494904=0x0;_0x494904<_0x1f4e2c[_0x65f6('0x3d')];_0x494904+=0x1){_['merge'](_0x1ac46f[_0x65f6('0x5c')][_0x1f4e2c[_0x494904][_0x65f6('0x3e')]],_0x1f4e2c[_0x494904]);}return _0x1ac46f[_0x65f6('0x5c')];};};Realtime[_0x65f6('0x39')][_0x65f6('0x61')]=function(){var _0x56bd9d=this;return function(_0x398cac){if(_0x398cac){freeIsNotKey(_0x398cac,_0x56bd9d[_0x65f6('0x20')],'id');for(var _0x14c908=0x0,_0x576ecd={};_0x14c908<_0x398cac[_0x65f6('0x3d')];_0x14c908+=0x1){_0x576ecd=_0x398cac[_0x14c908];if(_[_0x65f6('0x3f')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']])){_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']]=new FaxAccount(_0x576ecd);}else{_0x56bd9d[_0x65f6('0x3a')](_0x56bd9d[_0x65f6('0x20')][_0x576ecd['id']],_0x576ecd);}}}return _0x56bd9d['faxAccounts'];};};Realtime['prototype'][_0x65f6('0x62')]=function(){var _0x10d744=this;return function(_0x10c916){if(_0x10c916){freeIsNotKey(_0x10c916,_0x10d744[_0x65f6('0x11')],'name');for(var _0x4bda86=0x0,_0x336076={};_0x4bda86<_0x10c916[_0x65f6('0x3d')];_0x4bda86+=0x1){_0x336076=_0x10c916[_0x4bda86];if(_[_0x65f6('0x3f')](_0x10d744[_0x65f6('0x11')][_0x336076[_0x65f6('0x3e')]])){_0x10d744[_0x65f6('0x11')][_0x336076['name']]=new VoiceQueue(_0x336076);}else{_0x10d744['mergeFromDatabase'](_0x10d744['voiceQueues'][_0x336076[_0x65f6('0x3e')]],_0x336076);}}}return _0x10d744[_0x65f6('0x11')];};};module[_0x65f6('0x63')]=Realtime;
\ No newline at end of file
diff --git a/server/services/ami/realtime/utils.js b/server/services/ami/realtime/utils.js
new file mode 100644 (file)
index 0000000..bf2d631
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x4409=['assign','hasOwnProperty','mergeDBDataToRealtime'];(function(_0x1c99cf,_0x38cb27){var _0x55ce14=function(_0xd660ca){while(--_0xd660ca){_0x1c99cf['push'](_0x1c99cf['shift']());}};_0x55ce14(++_0x38cb27);}(_0x4409,0x117));var _0x9440=function(_0x40f6a0,_0x11c0cc){_0x40f6a0=_0x40f6a0-0x0;var _0x14d898=_0x4409[_0x40f6a0];return _0x14d898;};'use strict';function mergeDBDataToRealtime(_0x8fbe0e,_0x3efebe){var _0x2a4ed5=Object[_0x9440('0x0')]({},_0x8fbe0e);for(var _0x14912d in _0x3efebe){if(_0x2a4ed5[_0x9440('0x1')](_0x14912d)){_0x2a4ed5[_0x14912d]=_0x3efebe[_0x14912d];}}return _0x2a4ed5;}exports[_0x9440('0x2')]=mergeDBDataToRealtime;
\ No newline at end of file
index 39f440c..cea2490 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d0b=['monitor','monitors','monitorFilename','filename','createdAt','connectedlinename','originatecalleridnum','xcally-motion-dialer','isArray','forEach','startsWith','Local','substring','indexOf','mobile','lastIndexOf','transfererlinkedid','attendedTransfer','exports','lodash','moment','util','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','agents','telephones','prototype','sync','realtime','xdr','custom:voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','findAgent','find','accountcode','name','isNil','interface','format','SIP/%s','voiceQueueReport','length','connectedlinenum','lastAssignedTo','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','match','getAgentByInternal','keys','getCallType','channel','split','outbound','internal','exten','type','dialer','lastapplication','lastdata','from-voip-provider','context','from-sip','destination','xcally-motion-preview','calleridnum','destinationchannel','callerid','calleridpreview','disposition','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','membername','create'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0x1d0b,0x1f3));var _0xb1d0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1d0b[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xb1d0('0x0'));var moment=require(_0xb1d0('0x1'));var util=require(_0xb1d0('0x2'));var config=require(_0xb1d0('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0xb1d0('0x4'));var RpcVoiceDialReport=require(_0xb1d0('0x5'));var RpcMemberReport=require(_0xb1d0('0x6'));var RpcVoiceQueueReport=require(_0xb1d0('0x7'));var RpcVoiceRecording=require(_0xb1d0('0x8'));var RpcVoiceTransferReport=require('../rpc/voiceTransferReport');var VoiceQueueReport=require(_0xb1d0('0x9'));var VoiceCallReport=require(_0xb1d0('0xa'));var VoiceAgentReport=require(_0xb1d0('0xb'));var VoiceDialReport=require(_0xb1d0('0xc'));var UserReport=require('./userReport');function Report(_0x2c38c9){this['realtime']=_0x2c38c9;this[_0xb1d0('0xd')]=_0x2c38c9[_0xb1d0('0xd')];this[_0xb1d0('0xe')]=_0x2c38c9[_0xb1d0('0xe')];}Report[_0xb1d0('0xf')][_0xb1d0('0x10')]=function(_0x3aa47c){var _0x7dc431=new VoiceQueueReport(this[_0xb1d0('0x11')]);var _0xf9be64=new VoiceAgentReport(this['realtime']);var _0x427a1d=new VoiceDialReport(this[_0xb1d0('0x11')]);var _0x1bd5b9=new VoiceCallReport(this[_0xb1d0('0x11')]);var _0x4ea9be=new UserReport(this[_0xb1d0('0x11')]);if(config[_0xb1d0('0x12')]&&config[_0xb1d0('0x12')]['disabled']){ami['on'](_0xb1d0('0x13'),this['voiceQueueReport'][_0xb1d0('0x14')](this));ami['on'](_0xb1d0('0x15'),this[_0xb1d0('0x16')][_0xb1d0('0x14')](this));ami['on'](_0xb1d0('0x17'),this[_0xb1d0('0x18')]['bind'](this));ami['on'](_0xb1d0('0x19'),this[_0xb1d0('0x1a')]['bind'](this));ami['on'](_0xb1d0('0x1b'),this[_0xb1d0('0x1c')][_0xb1d0('0x14')](this));ami['on'](_0xb1d0('0x1d'),this['attendedTransfer'][_0xb1d0('0x14')](this));}};Report['prototype'][_0xb1d0('0x1e')]=function(_0x493f41){var _0x3e2696;_0x3e2696=_[_0xb1d0('0x1f')](this[_0xb1d0('0xd')],function(_0x1bf1e5){return _0x1bf1e5[_0xb1d0('0x20')]==_0x493f41||_0x1bf1e5[_0xb1d0('0x21')]==_0x493f41;});if(_[_0xb1d0('0x22')](_0x3e2696)){var _0x2bda82=_[_0xb1d0('0x1f')](this[_0xb1d0('0xe')],function(_0x4b684b){return _0x4b684b[_0xb1d0('0x20')]==_0x493f41||_0x4b684b[_0xb1d0('0x21')]==_0x493f41;});if(_0x2bda82){_0x3e2696=_[_0xb1d0('0x1f')](this[_0xb1d0('0xd')],function(_0xbbd0e7){return _0xbbd0e7[_0xb1d0('0x23')]==util[_0xb1d0('0x24')](_0xb1d0('0x25'),_0x2bda82[_0xb1d0('0x21')]);});}}return _0x3e2696;};Report[_0xb1d0('0xf')][_0xb1d0('0x26')]=function(_0x28ba14){for(var _0x4f2d2c=0x0;_0x4f2d2c<_0x28ba14[_0xb1d0('0x27')];_0x4f2d2c+=0x1){var _0x360ec0=this[_0xb1d0('0x1e')](_0x28ba14[_0x4f2d2c][_0xb1d0('0x28')]);if(_0x360ec0){_0x28ba14[_0x4f2d2c][_0xb1d0('0x20')]=_0x360ec0[_0xb1d0('0x20')];_0x28ba14[_0x4f2d2c]['assigned']=!![];_0x28ba14[_0x4f2d2c][_0xb1d0('0x29')]=_0x360ec0[_0xb1d0('0x21')];_0x28ba14[_0x4f2d2c][_0xb1d0('0x23')]=_[_0xb1d0('0x22')](_0x360ec0[_0xb1d0('0x23')])?util[_0xb1d0('0x24')](_0xb1d0('0x25'),_0x360ec0[_0xb1d0('0x21')]):_0x360ec0[_0xb1d0('0x23')];if(_0x28ba14[_0x4f2d2c]['queuecallercomplete']){_0x28ba14[_0x4f2d2c][_0xb1d0('0x2a')]=moment()[_0xb1d0('0x24')](_0xb1d0('0x2b'));}if(_0x28ba14[_0x4f2d2c][_0xb1d0('0x2c')]){_0x28ba14[_0x4f2d2c][_0xb1d0('0x2d')]=moment()['format'](_0xb1d0('0x2b'));}RpcMemberReport[_0xb1d0('0x26')](_0x28ba14[_0x4f2d2c]);}RpcVoiceQueueReport['create'](_0x28ba14[_0x4f2d2c]);}};function extractCalleridNumber(_0x9cf918){var _0x56da02=_0x9cf918[_0xb1d0('0x2e')](/<(.*?)>/);return _0x56da02?_0x56da02[0x1]:_0x9cf918;}Report[_0xb1d0('0xf')][_0xb1d0('0x2f')]=function(_0x2b8095){for(var _0x43c545=0x0;_0x43c545<Object[_0xb1d0('0x30')](this[_0xb1d0('0xd')])['length'];_0x43c545++){var _0x27654a=Object['keys'](this['agents'])[_0x43c545];var _0x414d62=this[_0xb1d0('0xd')][_0x27654a];if(_0x414d62[_0xb1d0('0x20')]===Number(_0x2b8095))return _0x414d62;}return null;};Report['prototype'][_0xb1d0('0x31')]=function(_0x141945){var _0x285a82=_0x141945[_0xb1d0('0x32')][_0xb1d0('0x33')]('-')[0x0];var _0x8ba84a=this[_0xb1d0('0xd')][_0x285a82];if(!_0x8ba84a)_0x8ba84a=this[_0xb1d0('0x2f')](_0x141945['calleridnum']);return!_0x8ba84a?_0xb1d0('0x34'):_0xb1d0('0x35');};Report[_0xb1d0('0xf')][_0xb1d0('0x16')]=function(_0xf7f9af){_0xf7f9af['destination']=_0xf7f9af['destination']||_0xf7f9af[_0xb1d0('0x36')];if(_0xf7f9af[_0xb1d0('0x37')]==_0xb1d0('0x38')){_0xf7f9af[_0xb1d0('0x39')]='queue';_0xf7f9af[_0xb1d0('0x3a')]=_0xf7f9af['queue'];if(_0xf7f9af['context']==_0xb1d0('0x3b')){_0xf7f9af[_0xb1d0('0x20')]='';_0xf7f9af['destination']=extractCalleridNumber(_0xf7f9af['callerid']);}else if(_0xf7f9af[_0xb1d0('0x3c')]==_0xb1d0('0x3d')){if(_0xf7f9af[_0xb1d0('0x3e')]==_0xb1d0('0x3f')){_0xf7f9af['destination']=extractCalleridNumber(_0xf7f9af['calleridpreview']);_0xf7f9af[_0xb1d0('0x40')]=_0xf7f9af['originatecalleridnum'];_0xf7f9af[_0xb1d0('0x41')]=[_0xf7f9af['channel'],_0xf7f9af[_0xb1d0('0x32')]=_0xf7f9af[_0xb1d0('0x41')]][0x0];_0xf7f9af[_0xb1d0('0x42')]=_0xf7f9af[_0xb1d0('0x43')];}else{_0xf7f9af[_0xb1d0('0x3e')]=_0xf7f9af[_0xb1d0('0x40')];_0xf7f9af[_0xb1d0('0x40')]=_0xf7f9af['originatecalleridnum'];if(_0xf7f9af[_0xb1d0('0x44')]==_0xb1d0('0x45')){_0xf7f9af[_0xb1d0('0x20')]=_0xf7f9af['connectedlinenum'];}else{_0xf7f9af[_0xb1d0('0x20')]='';}}}}else{_0xf7f9af['callerid']=util[_0xb1d0('0x24')](_0xb1d0('0x46'),_0xf7f9af[_0xb1d0('0x47')],_0xf7f9af[_0xb1d0('0x40')]);}if(RpcVoiceTransferReport[_0xb1d0('0x48')][_0xf7f9af[_0xb1d0('0x49')]]){var _0x47178e=RpcVoiceTransferReport['transfers'][_0xf7f9af[_0xb1d0('0x49')]];_0x47178e[_0xb1d0('0x4a')]=_0xf7f9af['uniqueid'];RpcVoiceTransferReport[_0xb1d0('0x1c')](_0x47178e);delete RpcVoiceTransferReport[_0xb1d0('0x48')][_0xf7f9af[_0xb1d0('0x49')]];}if(_['isNil'](_0xf7f9af['type'])){_0xf7f9af[_0xb1d0('0x37')]=this[_0xb1d0('0x31')](_0xf7f9af);}if(_['isNil'](_0xf7f9af['UserId'])){var _0x225426=_0xf7f9af['channel'][_0xb1d0('0x33')]('-')[0x0];var _0x2fe39a=this[_0xb1d0('0xd')][_0x225426];if(!_0x2fe39a)_0x2fe39a=this[_0xb1d0('0x2f')](_0xf7f9af['accountcode']);if(_0x2fe39a){_0xf7f9af['UserId']=_0x2fe39a['id'];_0xf7f9af[_0xb1d0('0x4b')]=_0x2fe39a[_0xb1d0('0x21')];}}RpcVoiceCallReport[_0xb1d0('0x4c')](_0xf7f9af);if(_0xf7f9af[_0xb1d0('0x4d')]){for(var _0x36109b=0x0;_0x36109b<_0xf7f9af[_0xb1d0('0x4e')][_0xb1d0('0x27')];_0x36109b+=0x1){_0xf7f9af[_0xb1d0('0x4f')]=_0xf7f9af[_0xb1d0('0x4e')][_0x36109b][_0xb1d0('0x50')];_0xf7f9af[_0xb1d0('0x51')]=_0xf7f9af['monitors'][_0x36109b][_0xb1d0('0x51')];if(_0xf7f9af['exten']==_0xb1d0('0x3f')){_0xf7f9af['calleridnum']=_0xf7f9af[_0xb1d0('0x28')];_0xf7f9af['calleridname']=_0xf7f9af[_0xb1d0('0x52')];_0xf7f9af[_0xb1d0('0x28')]=_0xf7f9af['accountcode'];_0xf7f9af[_0xb1d0('0x52')]=_0xf7f9af['membername'];_0xf7f9af[_0xb1d0('0x36')]=_0xf7f9af[_0xb1d0('0x53')];}else if(_0xf7f9af[_0xb1d0('0x36')]==_0xb1d0('0x54')){_0xf7f9af[_0xb1d0('0x40')]=_0xf7f9af['destination'];_0xf7f9af['exten']=_0xf7f9af[_0xb1d0('0x53')];}RpcVoiceRecording[_0xb1d0('0x4c')](_0xf7f9af);}}};Report[_0xb1d0('0xf')][_0xb1d0('0x18')]=function(_0x46c125){if(_[_0xb1d0('0x55')](_0x46c125)){_0x46c125[_0xb1d0('0x56')](function(_0x3cb018){RpcVoiceAgentReport[_0xb1d0('0x4c')](_0x3cb018);});}else{RpcVoiceAgentReport[_0xb1d0('0x4c')](_0x46c125);}};Report[_0xb1d0('0xf')][_0xb1d0('0x1a')]=function(_0x423ce5){RpcVoiceDialReport[_0xb1d0('0x4c')](_0x423ce5);var _0x505d42;var _0x3d9630;var _0x16a395=_0x423ce5[_0xb1d0('0x32')];if(_[_0xb1d0('0x57')](_0x16a395,_0xb1d0('0x58'))){_0x3d9630=_0x16a395[_0xb1d0('0x59')](_0x16a395[_0xb1d0('0x5a')]('/')+0x1,_0x16a395['indexOf']('@'));_0x505d42=_['find'](this[_0xb1d0('0xd')],function(_0x118b8b){return _0x118b8b[_0xb1d0('0x5b')]==_0x3d9630||_0x118b8b['phone']==_0x3d9630||_0x118b8b[_0xb1d0('0x20')]==_0x3d9630;});}else{_0x3d9630=_0x16a395[_0xb1d0('0x59')](_0x16a395[_0xb1d0('0x5a')]('/')+0x1,_0x16a395[_0xb1d0('0x5c')]('-'));_0x505d42=this[_0xb1d0('0x1e')](_0x3d9630);}if(_0x505d42){_0x423ce5['interface']=_[_0xb1d0('0x22')](_0x505d42[_0xb1d0('0x23')])?util['format'](_0xb1d0('0x25'),_0x505d42[_0xb1d0('0x21')]):_0x505d42[_0xb1d0('0x23')];_0x423ce5['membername']=_0x505d42[_0xb1d0('0x21')];_0x423ce5[_0xb1d0('0x20')]=_0x505d42[_0xb1d0('0x20')];RpcMemberReport[_0xb1d0('0x1a')](_0x423ce5);}};Report['prototype'][_0xb1d0('0x1c')]=function(_0x323ec3){RpcVoiceTransferReport[_0xb1d0('0x48')][_0x323ec3[_0xb1d0('0x5d')]]=_0x323ec3;};Report[_0xb1d0('0xf')][_0xb1d0('0x5e')]=function(_0x2c3835){RpcVoiceTransferReport[_0xb1d0('0x5e')](_0x2c3835);};module[_0xb1d0('0x5f')]=Report;
\ No newline at end of file
+var _0xbf79=['transfererlinkedid','lodash','util','../../../config/environment','../ami','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./userReport','realtime','agents','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','blindtransfer','attendedtransfer','attendedTransfer','prototype','findAgent','find','accountcode','name','isNil','telephones','interface','format','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','create','getAgentByInternal','keys','getCallType','channel','split','calleridnum','outbound','destination','exten','type','dialer','lastapplication','queue','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','ANSWERED','transfers','linkedid','transfereelinkedid','blindTransfer','UserId','membername','monitor','monitors','monitorFilename','createdAt','calleridname','connectedlinename','xcally-motion-dialer','voiceAgentReport','isArray','forEach','startsWith','Local','substring','indexOf','mobile','phone','lastIndexOf'];(function(_0x39dd1b,_0x79eef5){var _0x57d9f5=function(_0x2cfd5c){while(--_0x2cfd5c){_0x39dd1b['push'](_0x39dd1b['shift']());}};_0x57d9f5(++_0x79eef5);}(_0xbf79,0x171));var _0x9bf7=function(_0x37d676,_0x4c3d12){_0x37d676=_0x37d676-0x0;var _0x1c0608=_0xbf79[_0x37d676];return _0x1c0608;};'use strict';var _=require(_0x9bf7('0x0'));var moment=require('moment');var util=require(_0x9bf7('0x1'));var config=require(_0x9bf7('0x2'));var ami=require(_0x9bf7('0x3'));var RpcVoiceAgentReport=require(_0x9bf7('0x4'));var RpcVoiceCallReport=require(_0x9bf7('0x5'));var RpcVoiceDialReport=require(_0x9bf7('0x6'));var RpcMemberReport=require('../rpc/memberReport');var RpcVoiceQueueReport=require(_0x9bf7('0x7'));var RpcVoiceRecording=require(_0x9bf7('0x8'));var RpcVoiceTransferReport=require(_0x9bf7('0x9'));var VoiceQueueReport=require(_0x9bf7('0xa'));var VoiceCallReport=require(_0x9bf7('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require('./voiceDialReport');var UserReport=require(_0x9bf7('0xc'));function Report(_0x48a204){this[_0x9bf7('0xd')]=_0x48a204;this[_0x9bf7('0xe')]=_0x48a204['agents'];this['telephones']=_0x48a204['telephones'];}Report['prototype']['sync']=function(_0x530d5d){var _0x32f147=new VoiceQueueReport(this['realtime']);var _0x1af4cd=new VoiceAgentReport(this['realtime']);var _0x1b51f3=new VoiceDialReport(this[_0x9bf7('0xd')]);var _0x3a375f=new VoiceCallReport(this[_0x9bf7('0xd')]);var _0x1d280c=new UserReport(this[_0x9bf7('0xd')]);if(config[_0x9bf7('0xf')]&&config[_0x9bf7('0xf')][_0x9bf7('0x10')]){ami['on'](_0x9bf7('0x11'),this[_0x9bf7('0x12')][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x14'),this[_0x9bf7('0x15')]['bind'](this));ami['on'](_0x9bf7('0x16'),this['voiceAgentReport'][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x17'),this[_0x9bf7('0x18')][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x19'),this['blindTransfer'][_0x9bf7('0x13')](this));ami['on'](_0x9bf7('0x1a'),this[_0x9bf7('0x1b')]['bind'](this));}};Report[_0x9bf7('0x1c')][_0x9bf7('0x1d')]=function(_0x359697){var _0x23c427;_0x23c427=_[_0x9bf7('0x1e')](this['agents'],function(_0x9fe6e0){return _0x9fe6e0[_0x9bf7('0x1f')]==_0x359697||_0x9fe6e0[_0x9bf7('0x20')]==_0x359697;});if(_[_0x9bf7('0x21')](_0x23c427)){var _0x39a8af=_[_0x9bf7('0x1e')](this[_0x9bf7('0x22')],function(_0x191117){return _0x191117[_0x9bf7('0x1f')]==_0x359697||_0x191117['name']==_0x359697;});if(_0x39a8af){_0x23c427=_[_0x9bf7('0x1e')](this[_0x9bf7('0xe')],function(_0x46f936){return _0x46f936[_0x9bf7('0x23')]==util[_0x9bf7('0x24')](_0x9bf7('0x25'),_0x39a8af['name']);});}}return _0x23c427;};Report[_0x9bf7('0x1c')][_0x9bf7('0x12')]=function(_0x486157){for(var _0x46c5a2=0x0;_0x46c5a2<_0x486157[_0x9bf7('0x26')];_0x46c5a2+=0x1){var _0x1163fd=this[_0x9bf7('0x1d')](_0x486157[_0x46c5a2][_0x9bf7('0x27')]);if(_0x1163fd){_0x486157[_0x46c5a2]['accountcode']=_0x1163fd[_0x9bf7('0x1f')];_0x486157[_0x46c5a2][_0x9bf7('0x28')]=!![];_0x486157[_0x46c5a2][_0x9bf7('0x29')]=_0x1163fd['name'];_0x486157[_0x46c5a2][_0x9bf7('0x23')]=_[_0x9bf7('0x21')](_0x1163fd['interface'])?util['format']('SIP/%s',_0x1163fd[_0x9bf7('0x20')]):_0x1163fd[_0x9bf7('0x23')];if(_0x486157[_0x46c5a2][_0x9bf7('0x2a')]){_0x486157[_0x46c5a2][_0x9bf7('0x2b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');}if(_0x486157[_0x46c5a2]['queuecallerexit']){_0x486157[_0x46c5a2]['queuecallerexitAt']=moment()[_0x9bf7('0x24')](_0x9bf7('0x2c'));}RpcMemberReport[_0x9bf7('0x12')](_0x486157[_0x46c5a2]);}RpcVoiceQueueReport[_0x9bf7('0x2d')](_0x486157[_0x46c5a2]);}};function extractCalleridNumber(_0x1af95b){var _0x23c982=_0x1af95b['match'](/<(.*?)>/);return _0x23c982?_0x23c982[0x1]:_0x1af95b;}Report[_0x9bf7('0x1c')][_0x9bf7('0x2e')]=function(_0x3a0fe3){for(var _0x35ead4=0x0;_0x35ead4<Object[_0x9bf7('0x2f')](this[_0x9bf7('0xe')])[_0x9bf7('0x26')];_0x35ead4++){var _0x51eae4=Object[_0x9bf7('0x2f')](this[_0x9bf7('0xe')])[_0x35ead4];var _0x132dcd=this[_0x9bf7('0xe')][_0x51eae4];if(_0x132dcd[_0x9bf7('0x1f')]===Number(_0x3a0fe3))return _0x132dcd;}return null;};Report[_0x9bf7('0x1c')][_0x9bf7('0x30')]=function(_0x26db13){var _0x3a9f11=_0x26db13[_0x9bf7('0x31')][_0x9bf7('0x32')]('-')[0x0];var _0x7fb7eb=this[_0x9bf7('0xe')][_0x3a9f11];if(!_0x7fb7eb)_0x7fb7eb=this[_0x9bf7('0x2e')](_0x26db13[_0x9bf7('0x33')]);return!_0x7fb7eb?_0x9bf7('0x34'):'internal';};Report[_0x9bf7('0x1c')][_0x9bf7('0x15')]=function(_0x22c978){_0x22c978[_0x9bf7('0x35')]=_0x22c978[_0x9bf7('0x35')]||_0x22c978[_0x9bf7('0x36')];if(_0x22c978[_0x9bf7('0x37')]==_0x9bf7('0x38')){_0x22c978[_0x9bf7('0x39')]=_0x9bf7('0x3a');_0x22c978['lastdata']=_0x22c978[_0x9bf7('0x3a')];if(_0x22c978[_0x9bf7('0x3b')]==_0x9bf7('0x3c')){_0x22c978[_0x9bf7('0x1f')]='';_0x22c978['destination']=extractCalleridNumber(_0x22c978[_0x9bf7('0x3d')]);}else if(_0x22c978[_0x9bf7('0x3b')]==_0x9bf7('0x3e')){if(_0x22c978['destination']==_0x9bf7('0x3f')){_0x22c978['destination']=extractCalleridNumber(_0x22c978[_0x9bf7('0x40')]);_0x22c978['calleridnum']=_0x22c978[_0x9bf7('0x41')];_0x22c978['destinationchannel']=[_0x22c978[_0x9bf7('0x31')],_0x22c978[_0x9bf7('0x31')]=_0x22c978[_0x9bf7('0x42')]][0x0];_0x22c978[_0x9bf7('0x3d')]=_0x22c978[_0x9bf7('0x40')];}else{_0x22c978[_0x9bf7('0x35')]=_0x22c978[_0x9bf7('0x33')];_0x22c978['calleridnum']=_0x22c978[_0x9bf7('0x41')];if(_0x22c978['disposition']==_0x9bf7('0x43')){_0x22c978[_0x9bf7('0x1f')]=_0x22c978[_0x9bf7('0x27')];}else{_0x22c978[_0x9bf7('0x1f')]='';}}}}else{_0x22c978['callerid']=util[_0x9bf7('0x24')]('\x22%s\x22\x20<%s>',_0x22c978['calleridname'],_0x22c978[_0x9bf7('0x33')]);}if(RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978['linkedid']]){var _0x393960=RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978[_0x9bf7('0x45')]];_0x393960[_0x9bf7('0x46')]=_0x22c978['uniqueid'];RpcVoiceTransferReport[_0x9bf7('0x47')](_0x393960);delete RpcVoiceTransferReport[_0x9bf7('0x44')][_0x22c978[_0x9bf7('0x45')]];}if(_[_0x9bf7('0x21')](_0x22c978[_0x9bf7('0x37')])){_0x22c978[_0x9bf7('0x37')]=this[_0x9bf7('0x30')](_0x22c978);}if(_[_0x9bf7('0x21')](_0x22c978[_0x9bf7('0x48')])){var _0x41b03c=_0x22c978['channel'][_0x9bf7('0x32')]('-')[0x0];var _0x33793f=this[_0x9bf7('0xe')][_0x41b03c];if(!_0x33793f)_0x33793f=this[_0x9bf7('0x2e')](_0x22c978[_0x9bf7('0x1f')]);if(_0x33793f){_0x22c978[_0x9bf7('0x48')]=_0x33793f['id'];_0x22c978[_0x9bf7('0x49')]=_0x33793f['name'];}}RpcVoiceCallReport['create'](_0x22c978);if(_0x22c978[_0x9bf7('0x4a')]){for(var _0x587095=0x0;_0x587095<_0x22c978[_0x9bf7('0x4b')][_0x9bf7('0x26')];_0x587095+=0x1){_0x22c978[_0x9bf7('0x4c')]=_0x22c978[_0x9bf7('0x4b')][_0x587095]['filename'];_0x22c978[_0x9bf7('0x4d')]=_0x22c978[_0x9bf7('0x4b')][_0x587095]['createdAt'];if(_0x22c978[_0x9bf7('0x36')]=='xcally-motion-preview'){_0x22c978['calleridnum']=_0x22c978['connectedlinenum'];_0x22c978[_0x9bf7('0x4e')]=_0x22c978[_0x9bf7('0x4f')];_0x22c978[_0x9bf7('0x27')]=_0x22c978[_0x9bf7('0x1f')];_0x22c978['connectedlinename']=_0x22c978[_0x9bf7('0x49')];_0x22c978[_0x9bf7('0x36')]=_0x22c978['originatecalleridnum'];}else if(_0x22c978[_0x9bf7('0x36')]==_0x9bf7('0x50')){_0x22c978[_0x9bf7('0x33')]=_0x22c978[_0x9bf7('0x35')];_0x22c978[_0x9bf7('0x36')]=_0x22c978[_0x9bf7('0x41')];}RpcVoiceRecording['create'](_0x22c978);}}};Report[_0x9bf7('0x1c')][_0x9bf7('0x51')]=function(_0x4e53d0){if(_[_0x9bf7('0x52')](_0x4e53d0)){_0x4e53d0[_0x9bf7('0x53')](function(_0x161867){RpcVoiceAgentReport[_0x9bf7('0x2d')](_0x161867);});}else{RpcVoiceAgentReport[_0x9bf7('0x2d')](_0x4e53d0);}};Report[_0x9bf7('0x1c')][_0x9bf7('0x18')]=function(_0x3d913c){RpcVoiceDialReport[_0x9bf7('0x2d')](_0x3d913c);var _0x39c7bc;var _0x1bd31c;var _0x25d465=_0x3d913c['channel'];if(_[_0x9bf7('0x54')](_0x25d465,_0x9bf7('0x55'))){_0x1bd31c=_0x25d465[_0x9bf7('0x56')](_0x25d465[_0x9bf7('0x57')]('/')+0x1,_0x25d465[_0x9bf7('0x57')]('@'));_0x39c7bc=_[_0x9bf7('0x1e')](this[_0x9bf7('0xe')],function(_0xe0c0af){return _0xe0c0af[_0x9bf7('0x58')]==_0x1bd31c||_0xe0c0af[_0x9bf7('0x59')]==_0x1bd31c||_0xe0c0af[_0x9bf7('0x1f')]==_0x1bd31c;});}else{_0x1bd31c=_0x25d465['substring'](_0x25d465['indexOf']('/')+0x1,_0x25d465[_0x9bf7('0x5a')]('-'));_0x39c7bc=this[_0x9bf7('0x1d')](_0x1bd31c);}if(_0x39c7bc){_0x3d913c[_0x9bf7('0x23')]=_[_0x9bf7('0x21')](_0x39c7bc['interface'])?util[_0x9bf7('0x24')](_0x9bf7('0x25'),_0x39c7bc[_0x9bf7('0x20')]):_0x39c7bc[_0x9bf7('0x23')];_0x3d913c[_0x9bf7('0x49')]=_0x39c7bc['name'];_0x3d913c[_0x9bf7('0x1f')]=_0x39c7bc[_0x9bf7('0x1f')];RpcMemberReport['voiceDialReport'](_0x3d913c);}};Report[_0x9bf7('0x1c')][_0x9bf7('0x47')]=function(_0x57b9d8){RpcVoiceTransferReport[_0x9bf7('0x44')][_0x57b9d8[_0x9bf7('0x5b')]]=_0x57b9d8;};Report[_0x9bf7('0x1c')][_0x9bf7('0x1b')]=function(_0x16d863){RpcVoiceTransferReport[_0x9bf7('0x1b')](_0x16d863);};module['exports']=Report;
\ No newline at end of file
index 97f60dd..474b4c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c2e=['toLowerCase','inuse','device','stateTime','toNumber','telephones','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','startsWith','Local','substring','indexOf','mobile','phone','updateStatusRealtime','peerstatus','address','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','registryentry','bind','syncRegistry','syncDeviceState','syncPeerStatus','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','syncRealtimeShow','isUndefined','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','[userReport][registry]','find','merge','event','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','isNotNull','[userReport][devicestatechange]\x20device:%s\x20state:%s','debug','[userReport][devicestatechange]','local'];(function(_0x50b9a8,_0x277420){var _0x452241=function(_0x46a2ce){while(--_0x46a2ce){_0x50b9a8['push'](_0x50b9a8['shift']());}};_0x452241(++_0x277420);}(_0x4c2e,0x184));var _0xe4c2=function(_0x1203f,_0x554bbc){_0x1203f=_0x1203f-0x0;var _0x365f0a=_0x4c2e[_0x1203f];return _0x365f0a;};'use strict';var _=require('lodash');var moment=require(_0xe4c2('0x0'));var util=require(_0xe4c2('0x1'));var Redis=require(_0xe4c2('0x2'));var BPromise=require('bluebird');var config=require(_0xe4c2('0x3'));var logger=require('../../../config/logger')(_0xe4c2('0x4'));var ami=require(_0xe4c2('0x5'));config[_0xe4c2('0x6')]=_[_0xe4c2('0x7')](config[_0xe4c2('0x6')],{'host':_0xe4c2('0x8'),'port':0x18eb});var io=require(_0xe4c2('0x9'))(new Redis(config['redis']));function UserReport(_0x897dca){this[_0xe4c2('0xa')]=_0x897dca[_0xe4c2('0xa')];this[_0xe4c2('0xb')]=_0x897dca['agents'];this['telephones']=_0x897dca['telephones'];ami['on'](_0xe4c2('0xc'),this['syncRegistry'][_0xe4c2('0xd')](this));ami['on']('registry',this[_0xe4c2('0xe')][_0xe4c2('0xd')](this));ami['on']('devicestatechange',this[_0xe4c2('0xf')][_0xe4c2('0xd')](this));ami['on']('peerstatus',this[_0xe4c2('0x10')][_0xe4c2('0xd')](this));return this['syncRealtimeShow']();}function showSipRegistrations(){Promise[_0xe4c2('0x11')]()[_0xe4c2('0x12')](ami[_0xe4c2('0x13')]())[_0xe4c2('0x14')](function(_0xb93d8b){logger[_0xe4c2('0x15')](_0xe4c2('0x16'),util[_0xe4c2('0x17')](_0xb93d8b,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xe4c2('0x11')]()[_0xe4c2('0x12')](ami[_0xe4c2('0x18')]())[_0xe4c2('0x14')](function(_0x2544ef){logger[_0xe4c2('0x15')](_0xe4c2('0x19'),util[_0xe4c2('0x17')](_0x2544ef,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise[_0xe4c2('0x11')]()[_0xe4c2('0x12')](ami[_0xe4c2('0x1a')]())['catch'](function(_0x5d29d4){logger[_0xe4c2('0x15')](_0xe4c2('0x1b'),util[_0xe4c2('0x17')](_0x5d29d4,{'showHidden':![],'depth':null}));});}UserReport[_0xe4c2('0x1c')][_0xe4c2('0x1d')]=function(){setInterval(function(){BPromise[_0xe4c2('0x11')]()[_0xe4c2('0x12')](showSipRegistrations())['then'](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport[_0xe4c2('0x1c')]['isNotNull']=function(_0x1eeb05){return _0x1eeb05!==null&&!_[_0xe4c2('0x1e')](_0x1eeb05);};UserReport['prototype']['emit']=function(_0x1b4d93,_0x2c7ba5,_0x43967a){io['to'](_0x1b4d93)[_0xe4c2('0x1f')](_0x2c7ba5,_0x43967a);};UserReport[_0xe4c2('0x1c')][_0xe4c2('0xe')]=function(_0xf2c1bb){try{if(this['isNotNull'](_0xf2c1bb)){logger[_0xe4c2('0x20')](_0xe4c2('0x21'),_0xf2c1bb[_0xe4c2('0x22')],_0xf2c1bb[_0xe4c2('0x23')]);logger['debug'](_0xe4c2('0x24'),util[_0xe4c2('0x17')](_0xf2c1bb,{'showHidden':![],'depth':null}));var _0x4a025f=_[_0xe4c2('0x25')](this[_0xe4c2('0xa')],{'defaultuser':_0xf2c1bb[_0xe4c2('0x22')]});if(_0x4a025f){_0xf2c1bb['stateRegistry']=_0xf2c1bb[_0xe4c2('0x23')];_[_0xe4c2('0x26')](_0x4a025f,_['omit'](_0xf2c1bb,[_0xe4c2('0x27'),'actionid',_0xe4c2('0x22'),'state']));logger['debug'](_0xe4c2('0x28'),util[_0xe4c2('0x17')](_0x4a025f,{'showHidden':![],'depth':null}));this['emit'](util[_0xe4c2('0x29')](_0xe4c2('0x2a'),_0x4a025f[_0xe4c2('0x2b')]),_0xe4c2('0x2c'),_0x4a025f);}}}catch(_0x4f1597){logger[_0xe4c2('0x15')]('[userReport][registry]',util[_0xe4c2('0x17')](_0x4f1597,{'showHidden':![],'depth':null}));}};UserReport[_0xe4c2('0x1c')][_0xe4c2('0xf')]=function(_0x1ba6bb){try{if(this[_0xe4c2('0x2d')](_0x1ba6bb)){logger[_0xe4c2('0x20')](_0xe4c2('0x2e'),_0x1ba6bb['device'],_0x1ba6bb[_0xe4c2('0x23')]);logger[_0xe4c2('0x2f')](_0xe4c2('0x30'),util[_0xe4c2('0x17')](_0x1ba6bb,{'showHidden':![],'depth':null}));if(this[_0xe4c2('0xb')][_0x1ba6bb['device']]){if(!this[_0xe4c2('0xb')][_0x1ba6bb['device']][_0xe4c2('0x31')]||_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]()==_0xe4c2('0x33')){this[_0xe4c2('0xb')][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x31')]=![];if(this['agents'][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]!==_0x1ba6bb['state'][_0xe4c2('0x32')]()){this[_0xe4c2('0xb')][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x35')]=_[_0xe4c2('0x36')](moment()[_0xe4c2('0x29')]('x'));}this['agents'][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]=_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]();this['agents'][_0x1ba6bb[_0xe4c2('0x34')]]['updateStatusRealtime'](_0x1ba6bb);}}else if(this[_0xe4c2('0x37')][_0x1ba6bb[_0xe4c2('0x34')]]){if(this[_0xe4c2('0x37')][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]!==_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]()){this['telephones'][_0x1ba6bb[_0xe4c2('0x34')]]['stateTime']=_[_0xe4c2('0x36')](moment()[_0xe4c2('0x29')]('x'));}this[_0xe4c2('0x37')][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]=_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]();logger[_0xe4c2('0x2f')](_0xe4c2('0x38'),util['inspect'](this[_0xe4c2('0x37')][_0x1ba6bb['device']],{'showHidden':![],'depth':null}));this[_0xe4c2('0x1f')](util[_0xe4c2('0x29')](_0xe4c2('0x39'),this[_0xe4c2('0x37')][_0x1ba6bb[_0xe4c2('0x34')]]['name']),_0xe4c2('0x3a'),this[_0xe4c2('0x37')][_0x1ba6bb[_0xe4c2('0x34')]]);}else if(this[_0xe4c2('0xa')][_0x1ba6bb[_0xe4c2('0x34')]]){if(this[_0xe4c2('0xa')][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]!==_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]()){this['trunks'][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x35')]=_[_0xe4c2('0x36')](moment()[_0xe4c2('0x29')]('x'));}this['trunks'][_0x1ba6bb[_0xe4c2('0x34')]][_0xe4c2('0x23')]=_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util[_0xe4c2('0x17')](this[_0xe4c2('0xa')][_0x1ba6bb[_0xe4c2('0x34')]],{'showHidden':![],'depth':null}));this['emit'](util[_0xe4c2('0x29')](_0xe4c2('0x2a'),this[_0xe4c2('0xa')][_0x1ba6bb[_0xe4c2('0x34')]]['name']),'trunk:save',this[_0xe4c2('0xa')][_0x1ba6bb['device']]);}else if(_[_0xe4c2('0x3b')](_0x1ba6bb[_0xe4c2('0x34')],_0xe4c2('0x3c'))){var _0x5c6dba=_0x1ba6bb[_0xe4c2('0x34')];var _0x1f3a6a=_0x5c6dba[_0xe4c2('0x3d')](_0x5c6dba[_0xe4c2('0x3e')]('/')+0x1,_0x5c6dba[_0xe4c2('0x3e')]('@'));var _0xac4812=_[_0xe4c2('0x25')](this[_0xe4c2('0xb')],function(_0x5218b3){return _0x5218b3[_0xe4c2('0x3f')]==_0x1f3a6a||_0x5218b3[_0xe4c2('0x40')]==_0x1f3a6a||_0x5218b3['accountcode']==_0x1f3a6a;});if(_0xac4812){if(_0xac4812[_0xe4c2('0x23')]!==_0x1ba6bb[_0xe4c2('0x23')][_0xe4c2('0x32')]()){_0xac4812[_0xe4c2('0x35')]=_[_0xe4c2('0x36')](moment()[_0xe4c2('0x29')]('x'));}_0xac4812[_0xe4c2('0x23')]=_0x1ba6bb[_0xe4c2('0x23')]['toLowerCase']();_0xac4812['local']=!![];_0xac4812[_0xe4c2('0x41')](_0x1ba6bb);}}}}catch(_0x450771){logger[_0xe4c2('0x15')]('[userReport][devicestatechange]',util[_0xe4c2('0x17')](_0x450771,{'showHidden':![],'depth':null}));}};UserReport[_0xe4c2('0x1c')][_0xe4c2('0x10')]=function(_0x20cf9a){try{if(this[_0xe4c2('0x2d')](_0x20cf9a)&&this[_0xe4c2('0x2d')](_0x20cf9a[_0xe4c2('0x42')])){logger[_0xe4c2('0x20')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x20cf9a['peer'],_0x20cf9a[_0xe4c2('0x43')],_0x20cf9a[_0xe4c2('0x42')]);logger[_0xe4c2('0x2f')]('[userReport][peerstatus]',util['inspect'](_0x20cf9a,{'showHidden':![],'depth':null}));if(this[_0xe4c2('0xb')][_0x20cf9a[_0xe4c2('0x44')]]){if(!this['agents'][_0x20cf9a[_0xe4c2('0x44')]]['local']||_0x20cf9a[_0xe4c2('0x42')][_0xe4c2('0x32')]()==_0xe4c2('0x45')){this['agents'][_0x20cf9a[_0xe4c2('0x44')]]['local']=![];this['agents'][_0x20cf9a[_0xe4c2('0x44')]]['status']=_0x20cf9a[_0xe4c2('0x42')][_0xe4c2('0x32')]();this['agents'][_0x20cf9a[_0xe4c2('0x44')]][_0xe4c2('0x43')]=_0x20cf9a[_0xe4c2('0x43')];this[_0xe4c2('0xb')][_0x20cf9a[_0xe4c2('0x44')]][_0xe4c2('0x41')](_0x20cf9a);}}else if(this[_0xe4c2('0x37')][_0x20cf9a[_0xe4c2('0x44')]]){this[_0xe4c2('0x37')][_0x20cf9a['peer']][_0xe4c2('0x46')]=_0x20cf9a[_0xe4c2('0x42')][_0xe4c2('0x32')]();this[_0xe4c2('0x37')][_0x20cf9a[_0xe4c2('0x44')]]['address']=_0x20cf9a[_0xe4c2('0x43')];logger[_0xe4c2('0x2f')](_0xe4c2('0x47'),util[_0xe4c2('0x17')](this[_0xe4c2('0x37')][_0x20cf9a['peer']],{'showHidden':![],'depth':null}));this[_0xe4c2('0x1f')](util[_0xe4c2('0x29')](_0xe4c2('0x39'),this['telephones'][_0x20cf9a[_0xe4c2('0x44')]][_0xe4c2('0x2b')]),_0xe4c2('0x3a'),this[_0xe4c2('0x37')][_0x20cf9a[_0xe4c2('0x44')]]);}else if(this[_0xe4c2('0xa')][_0x20cf9a[_0xe4c2('0x44')]]){this[_0xe4c2('0xa')][_0x20cf9a['peer']][_0xe4c2('0x46')]=_0x20cf9a['peerstatus']['toLowerCase']();this[_0xe4c2('0xa')][_0x20cf9a[_0xe4c2('0x44')]]['address']=_0x20cf9a['address'];logger['debug']('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0xe4c2('0x17')](this[_0xe4c2('0xa')][_0x20cf9a[_0xe4c2('0x44')]],{'showHidden':![],'depth':null}));this[_0xe4c2('0x1f')](util[_0xe4c2('0x29')](_0xe4c2('0x2a'),this[_0xe4c2('0xa')][_0x20cf9a['peer']][_0xe4c2('0x2b')]),_0xe4c2('0x2c'),this[_0xe4c2('0xa')][_0x20cf9a['peer']]);}}}catch(_0x47d487){logger['error'](_0xe4c2('0x48'),util[_0xe4c2('0x17')](_0x47d487,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
+var _0xf09f=['toNumber','updateStatusRealtime','stateTime','format','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','telephone:save','trunk:save','startsWith','Local','substring','indexOf','phone','accountcode','syncPeerStatus','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20telephone:save\x20event:','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','trunk:%s','exports','moment','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','defaults','redis','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry','bind','syncDeviceState','peerstatus','syncRealtimeShow','resolve','then','inspect','actionDeviceStateList','[userReport][devicestatelist]','error','[userReport][sippeerstatus]','prototype','isNotNull','isUndefined','emit','[userReport][registry]\x20registry:%s\x20state:%s','username','debug','[userReport][registry]','find','stateRegistry','state','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','name','info','device','local','toLowerCase'];(function(_0xdf8b52,_0x426eb9){var _0xc4d5ef=function(_0x3f1548){while(--_0x3f1548){_0xdf8b52['push'](_0xdf8b52['shift']());}};_0xc4d5ef(++_0x426eb9);}(_0xf09f,0x1cf));var _0xff09=function(_0x303847,_0x36592d){_0x303847=_0x303847-0x0;var _0x56f99d=_0xf09f[_0x303847];return _0x56f99d;};'use strict';var _=require('lodash');var moment=require(_0xff09('0x0'));var util=require('util');var Redis=require(_0xff09('0x1'));var BPromise=require(_0xff09('0x2'));var config=require(_0xff09('0x3'));var logger=require(_0xff09('0x4'))(_0xff09('0x5'));var ami=require(_0xff09('0x6'));config['redis']=_[_0xff09('0x7')](config[_0xff09('0x8')],{'host':_0xff09('0x9'),'port':0x18eb});var io=require(_0xff09('0xa'))(new Redis(config[_0xff09('0x8')]));function UserReport(_0x290419){this['trunks']=_0x290419[_0xff09('0xb')];this['agents']=_0x290419[_0xff09('0xc')];this[_0xff09('0xd')]=_0x290419[_0xff09('0xd')];ami['on'](_0xff09('0xe'),this[_0xff09('0xf')][_0xff09('0x10')](this));ami['on']('registry',this['syncRegistry'][_0xff09('0x10')](this));ami['on']('devicestatechange',this[_0xff09('0x11')][_0xff09('0x10')](this));ami['on'](_0xff09('0x12'),this['syncPeerStatus']['bind'](this));return this[_0xff09('0x13')]();}function showSipRegistrations(){Promise[_0xff09('0x14')]()[_0xff09('0x15')](ami['actionSipShowRegistry']())['catch'](function(_0xde7b06){logger['error']('[userReport][sipshowregistry]',util[_0xff09('0x16')](_0xde7b06,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0xff09('0x14')]()[_0xff09('0x15')](ami[_0xff09('0x17')]())['catch'](function(_0x4576d3){logger['error'](_0xff09('0x18'),util[_0xff09('0x16')](_0x4576d3,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0xff09('0x15')](ami['actionSipPeerStatus']())['catch'](function(_0x1c2c5b){logger[_0xff09('0x19')](_0xff09('0x1a'),util[_0xff09('0x16')](_0x1c2c5b,{'showHidden':![],'depth':null}));});}UserReport[_0xff09('0x1b')][_0xff09('0x13')]=function(){setInterval(function(){BPromise[_0xff09('0x14')]()[_0xff09('0x15')](showSipRegistrations())['then'](listDeviceStates())[_0xff09('0x15')](showPeersStatus());},0x32c8);};UserReport[_0xff09('0x1b')][_0xff09('0x1c')]=function(_0x58226c){return _0x58226c!==null&&!_[_0xff09('0x1d')](_0x58226c);};UserReport[_0xff09('0x1b')][_0xff09('0x1e')]=function(_0x2edad2,_0x559e6e,_0xdd82e7){io['to'](_0x2edad2)[_0xff09('0x1e')](_0x559e6e,_0xdd82e7);};UserReport['prototype']['syncRegistry']=function(_0x1be7f2){try{if(this[_0xff09('0x1c')](_0x1be7f2)){logger['info'](_0xff09('0x1f'),_0x1be7f2[_0xff09('0x20')],_0x1be7f2['state']);logger[_0xff09('0x21')](_0xff09('0x22'),util['inspect'](_0x1be7f2,{'showHidden':![],'depth':null}));var _0x5deff9=_[_0xff09('0x23')](this[_0xff09('0xb')],{'defaultuser':_0x1be7f2[_0xff09('0x20')]});if(_0x5deff9){_0x1be7f2[_0xff09('0x24')]=_0x1be7f2[_0xff09('0x25')];_[_0xff09('0x26')](_0x5deff9,_[_0xff09('0x27')](_0x1be7f2,[_0xff09('0x28'),_0xff09('0x29'),'username','state']));logger[_0xff09('0x21')](_0xff09('0x2a'),util[_0xff09('0x16')](_0x5deff9,{'showHidden':![],'depth':null}));this['emit'](util['format']('trunk:%s',_0x5deff9[_0xff09('0x2b')]),'trunk:save',_0x5deff9);}}}catch(_0x292542){logger[_0xff09('0x19')](_0xff09('0x22'),util[_0xff09('0x16')](_0x292542,{'showHidden':![],'depth':null}));}};UserReport[_0xff09('0x1b')]['syncDeviceState']=function(_0x46c856){try{if(this[_0xff09('0x1c')](_0x46c856)){logger[_0xff09('0x2c')]('[userReport][devicestatechange]\x20device:%s\x20state:%s',_0x46c856[_0xff09('0x2d')],_0x46c856[_0xff09('0x25')]);logger[_0xff09('0x21')]('[userReport][devicestatechange]',util['inspect'](_0x46c856,{'showHidden':![],'depth':null}));if(this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]){if(!this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x2e')]||_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]()=='inuse'){this[_0xff09('0xc')][_0x46c856['device']][_0xff09('0x2e')]=![];if(this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x25')]!==_0x46c856[_0xff09('0x25')]['toLowerCase']()){this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]['stateTime']=_[_0xff09('0x30')](moment()['format']('x'));}this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]]['state']=_0x46c856[_0xff09('0x25')]['toLowerCase']();this[_0xff09('0xc')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x31')](_0x46c856);}}else if(this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]){if(this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]['state']!==_0x46c856['state'][_0xff09('0x2f')]()){this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x32')]=_[_0xff09('0x30')](moment()[_0xff09('0x33')]('x'));}this['telephones'][_0x46c856['device']][_0xff09('0x25')]=_0x46c856[_0xff09('0x25')]['toLowerCase']();logger[_0xff09('0x21')](_0xff09('0x34'),util[_0xff09('0x16')](this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x35'),this[_0xff09('0xd')][_0x46c856['device']][_0xff09('0x2b')]),_0xff09('0x36'),this[_0xff09('0xd')][_0x46c856[_0xff09('0x2d')]]);}else if(this['trunks'][_0x46c856['device']]){if(this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]]['state']!==_0x46c856['state'][_0xff09('0x2f')]()){this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x32')]=_['toNumber'](moment()[_0xff09('0x33')]('x'));}this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]][_0xff09('0x25')]=_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]();logger[_0xff09('0x21')]('[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:',util['inspect'](this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')]('trunk:%s',this['trunks'][_0x46c856[_0xff09('0x2d')]][_0xff09('0x2b')]),_0xff09('0x37'),this[_0xff09('0xb')][_0x46c856[_0xff09('0x2d')]]);}else if(_[_0xff09('0x38')](_0x46c856[_0xff09('0x2d')],_0xff09('0x39'))){var _0x32868f=_0x46c856['device'];var _0x5cc512=_0x32868f[_0xff09('0x3a')](_0x32868f[_0xff09('0x3b')]('/')+0x1,_0x32868f[_0xff09('0x3b')]('@'));var _0x1fb57c=_['find'](this[_0xff09('0xc')],function(_0x3d3d3){return _0x3d3d3['mobile']==_0x5cc512||_0x3d3d3[_0xff09('0x3c')]==_0x5cc512||_0x3d3d3[_0xff09('0x3d')]==_0x5cc512;});if(_0x1fb57c){if(_0x1fb57c[_0xff09('0x25')]!==_0x46c856[_0xff09('0x25')][_0xff09('0x2f')]()){_0x1fb57c[_0xff09('0x32')]=_['toNumber'](moment()[_0xff09('0x33')]('x'));}_0x1fb57c[_0xff09('0x25')]=_0x46c856[_0xff09('0x25')]['toLowerCase']();_0x1fb57c[_0xff09('0x2e')]=!![];_0x1fb57c['updateStatusRealtime'](_0x46c856);}}}}catch(_0x207e5f){logger[_0xff09('0x19')]('[userReport][devicestatechange]',util['inspect'](_0x207e5f,{'showHidden':![],'depth':null}));}};UserReport[_0xff09('0x1b')][_0xff09('0x3e')]=function(_0x4e6bd7){try{if(this[_0xff09('0x1c')](_0x4e6bd7)&&this[_0xff09('0x1c')](_0x4e6bd7[_0xff09('0x12')])){logger['info'](_0xff09('0x3f'),_0x4e6bd7['peer'],_0x4e6bd7[_0xff09('0x40')],_0x4e6bd7[_0xff09('0x12')]);logger[_0xff09('0x21')](_0xff09('0x41'),util[_0xff09('0x16')](_0x4e6bd7,{'showHidden':![],'depth':null}));if(this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]]){if(!this[_0xff09('0xc')][_0x4e6bd7['peer']][_0xff09('0x2e')]||_0x4e6bd7['peerstatus'][_0xff09('0x2f')]()==_0xff09('0x43')){this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x2e')]=![];this[_0xff09('0xc')][_0x4e6bd7['peer']][_0xff09('0x44')]=_0x4e6bd7[_0xff09('0x12')][_0xff09('0x2f')]();this[_0xff09('0xc')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7['address'];this['agents'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x31')](_0x4e6bd7);}}else if(this['telephones'][_0x4e6bd7[_0xff09('0x42')]]){this[_0xff09('0xd')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x44')]=_0x4e6bd7[_0xff09('0x12')]['toLowerCase']();this['telephones'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7[_0xff09('0x40')];logger[_0xff09('0x21')](_0xff09('0x45'),util[_0xff09('0x16')](this['telephones'][_0x4e6bd7['peer']],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x35'),this[_0xff09('0xd')][_0x4e6bd7['peer']]['name']),_0xff09('0x36'),this[_0xff09('0xd')][_0x4e6bd7[_0xff09('0x42')]]);}else if(this[_0xff09('0xb')][_0x4e6bd7['peer']]){this['trunks'][_0x4e6bd7[_0xff09('0x42')]]['status']=_0x4e6bd7[_0xff09('0x12')]['toLowerCase']();this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x40')]=_0x4e6bd7[_0xff09('0x40')];logger[_0xff09('0x21')](_0xff09('0x46'),util[_0xff09('0x16')](this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]],{'showHidden':![],'depth':null}));this[_0xff09('0x1e')](util[_0xff09('0x33')](_0xff09('0x47'),this['trunks'][_0x4e6bd7[_0xff09('0x42')]][_0xff09('0x2b')]),_0xff09('0x37'),this[_0xff09('0xb')][_0x4e6bd7[_0xff09('0x42')]]);}}}catch(_0x56c82e){logger[_0xff09('0x19')]('[userReport][peerstatus]',util[_0xff09('0x16')](_0x56c82e,{'showHidden':![],'depth':null}));}};module[_0xff09('0x48')]=UserReport;
\ No newline at end of file
index 287c472..60fea86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d6c=['[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','syncAttendedTransfer','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','channel','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','exports','lodash','util','ioredis','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','voiceChannels','channels','voiceQueues','agents','variables','agentcalled','agentconnect','bind','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','syncAgentComplete','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','blindtransfer','prototype','emit','isNotNull','isUndefined','syncAgentCalled','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','membername','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','type','inbound','voice','merge','omit','event','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentconnect]\x20event:','info','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','routealias','pick','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere','agentringnoanswerAt','answeredelsewheredestinationuniqueid','lastevent','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','hasOwnProperty','agentcomplete','[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned','abandoned','[%s][voiceAgentReport][queuecallerabandon]','agentconnectAt','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','transfer','agent','talktime','acwtime','agentacw','destconnectedlinenum','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][varset]\x20event:','keys','variable','value','[%s][voiceAgentReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt'];(function(_0x1d8119,_0xc98f17){var _0x3e30f6=function(_0x2c7f3e){while(--_0x2c7f3e){_0x1d8119['push'](_0x1d8119['shift']());}};_0x3e30f6(++_0xc98f17);}(_0x3d6c,0x1df));var _0xc3d6=function(_0x4c38af,_0x55a605){_0x4c38af=_0x4c38af-0x0;var _0xf94a80=_0x3d6c[_0x4c38af];return _0xf94a80;};'use strict';var _=require(_0xc3d6('0x0'));var moment=require('moment');var util=require(_0xc3d6('0x1'));var Redis=require(_0xc3d6('0x2'));var config=require('../../../config/environment');var logger=require(_0xc3d6('0x3'))(_0xc3d6('0x4'));var ami=require(_0xc3d6('0x5'));config[_0xc3d6('0x6')]=_[_0xc3d6('0x7')](config[_0xc3d6('0x6')],{'host':_0xc3d6('0x8'),'port':0x18eb});var io=require(_0xc3d6('0x9'))(new Redis(config[_0xc3d6('0x6')]));function VoiceAgentReport(_0x2f0bf6){this['channels']={};this[_0xc3d6('0xa')]=_0x2f0bf6[_0xc3d6('0xb')];this[_0xc3d6('0xc')]=_0x2f0bf6[_0xc3d6('0xc')];this[_0xc3d6('0xd')]=_0x2f0bf6['agents'];this[_0xc3d6('0xe')]={};ami['on'](_0xc3d6('0xf'),this['syncAgentCalled']['bind'](this));ami['on'](_0xc3d6('0x10'),this['syncAgentConnect'][_0xc3d6('0x11')](this));ami['on'](_0xc3d6('0x12'),this[_0xc3d6('0x13')][_0xc3d6('0x11')](this));ami['on']('queuecallerabandon',this[_0xc3d6('0x14')][_0xc3d6('0x11')](this));ami['on']('agentcomplete',this[_0xc3d6('0x15')][_0xc3d6('0x11')](this));ami['on']('varset',this[_0xc3d6('0x16')][_0xc3d6('0x11')](this));ami['on'](_0xc3d6('0x17'),this[_0xc3d6('0x18')]['bind'](this));ami['on'](_0xc3d6('0x19'),this[_0xc3d6('0x1a')][_0xc3d6('0x11')](this));ami['on'](_0xc3d6('0x1b'),this['syncMusicOnHoldStop'][_0xc3d6('0x11')](this));ami['on'](_0xc3d6('0x1c'),this['syncAttendedTransfer'][_0xc3d6('0x11')](this));ami['on'](_0xc3d6('0x1d'),this['syncBlindTransfer'][_0xc3d6('0x11')](this));}VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x1f')]=function(_0x4f1609,_0x59491f,_0x259fac){io['to'](_0x4f1609)[_0xc3d6('0x1f')](_0x59491f,_0x259fac);};VoiceAgentReport['prototype'][_0xc3d6('0x20')]=function(_0x525468){return _0x525468!==null&&!_[_0xc3d6('0x21')](_0x525468);};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x22')]=function(_0xd69164){try{if(this[_0xc3d6('0x20')](_0xd69164)){logger['info'](_0xc3d6('0x23'),_0xd69164[_0xc3d6('0x24')],_0xd69164[_0xc3d6('0x25')],_0xd69164[_0xc3d6('0x26')]);logger[_0xc3d6('0x27')](_0xc3d6('0x28'),_0xd69164['uniqueid'],util[_0xc3d6('0x29')](_0xd69164,{'showHidden':![],'depth':null}));if(_[_0xc3d6('0x21')](this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]])){this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]]={};}if(_[_0xc3d6('0x21')](this[_0xc3d6('0xb')][_0xd69164['uniqueid']][_0xd69164[_0xc3d6('0x26')]])){this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164[_0xc3d6('0x26')]]={'agentcalledAt':moment()[_0xc3d6('0x2a')](_0xc3d6('0x2b')),'lastevent':'called','mandatoryDisposition':this[_0xc3d6('0xc')][_0xd69164[_0xc3d6('0x2c')]]?this[_0xc3d6('0xc')][_0xd69164[_0xc3d6('0x2c')]][_0xc3d6('0x2d')]||![]:![],'type':this[_0xc3d6('0xc')][_0xd69164['queue']]?this[_0xc3d6('0xc')][_0xd69164[_0xc3d6('0x2c')]][_0xc3d6('0x2e')]||_0xc3d6('0x2f'):_0xc3d6('0x2f'),'variables':this[_0xc3d6('0xe')][_0xd69164[_0xc3d6('0x24')]],'motionChannel':_0xc3d6('0x30')};}_[_0xc3d6('0x31')](this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164[_0xc3d6('0x26')]],_[_0xc3d6('0x32')](_0xd69164,[_0xc3d6('0x33'),'privilege']));logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0xd69164[_0xc3d6('0x24')],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')]('custom:agentcalled',this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164[_0xc3d6('0x26')]]);var _0x47fc3a={'id':this[_0xc3d6('0xd')][_0xd69164[_0xc3d6('0x34')]]['id'],'calleridnum':this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164[_0xc3d6('0x26')]][_0xc3d6('0x35')],'queue':this[_0xc3d6('0xb')][_0xd69164[_0xc3d6('0x24')]][_0xd69164[_0xc3d6('0x26')]]['queue'],'variables':this[_0xc3d6('0xb')][_0xd69164['uniqueid']][_0xd69164[_0xc3d6('0x26')]][_0xc3d6('0xe')]};logger[_0xc3d6('0x27')](_0xc3d6('0x36'),_0xd69164[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x47fc3a,{'showHidden':![],'depth':null}));this[_0xc3d6('0x1f')](util[_0xc3d6('0x2a')](_0xc3d6('0x37'),_0xd69164['membername']),_0xc3d6('0x38'),_0x47fc3a);}}catch(_0x5afa9d){logger[_0xc3d6('0x39')]('[%s][voiceAgentReport][agentcalled]',_0xd69164[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x5afa9d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')]['syncAgentConnect']=function(_0x58f32e){try{if(this[_0xc3d6('0x20')](_0x58f32e)){if(this[_0xc3d6('0xb')][_0x58f32e['uniqueid']]){logger[_0xc3d6('0x27')](_0xc3d6('0x3a'),_0x58f32e[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x58f32e,{'showHidden':![],'depth':null}));for(var _0xb5c7f6 in this[_0xc3d6('0xb')][_0x58f32e['uniqueid']]){if(this[_0xc3d6('0xb')][_0x58f32e['uniqueid']]['hasOwnProperty'](_0xb5c7f6)){if(_0x58f32e['destuniqueid']===_0xb5c7f6){logger[_0xc3d6('0x3b')](_0xc3d6('0x3c'),_0x58f32e[_0xc3d6('0x24')],_0x58f32e[_0xc3d6('0x25')],_0x58f32e['destuniqueid']);this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]['agentconnectAt']=moment()[_0xc3d6('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]['connectedlinename']=_0x58f32e[_0xc3d6('0x3d')];this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x3e')]=_0x58f32e[_0xc3d6('0x3e')];this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x3f')]=_0x58f32e[_0xc3d6('0x3f')];this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x40')]=_0x58f32e[_0xc3d6('0x40')];this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x41')]=_0x58f32e[_0xc3d6('0x41')];this[_0xc3d6('0xb')][_0x58f32e['uniqueid']][_0xb5c7f6]['lastevent']='connect';if(this[_0xc3d6('0xa')][this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]['uniqueid']]){var _0xae5196=this[_0xc3d6('0xa')][this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x24')]][_0xc3d6('0x42')];this[_0xc3d6('0xb')][_0x58f32e['uniqueid']][_0xb5c7f6][_0xc3d6('0x42')]=_0xae5196;_0x58f32e[_0xc3d6('0x42')]=_0xae5196;}_[_0xc3d6('0x31')](this['agents'][_0x58f32e[_0xc3d6('0x34')]],_[_0xc3d6('0x43')](_0x58f32e,[_0xc3d6('0x2c'),'destconnectedlinenum',_0xc3d6('0x42')]));logger[_0xc3d6('0x27')](_0xc3d6('0x44'),_0x58f32e[_0xc3d6('0x24')],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0x58f32e[_0xc3d6('0x26')]],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')]('custom:agentconnect',this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0x58f32e[_0xc3d6('0x26')]]);logger[_0xc3d6('0x27')](_0xc3d6('0x45'),_0x58f32e['uniqueid'],util['inspect'](this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0x58f32e[_0xc3d6('0x26')]],{'showHidden':![],'depth':null}));this[_0xc3d6('0x1f')](util['format'](_0xc3d6('0x37'),_0x58f32e[_0xc3d6('0x25')]),_0xc3d6('0x46'),this[_0xc3d6('0xb')][_0x58f32e['uniqueid']][_0x58f32e[_0xc3d6('0x26')]]);}else if(!this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x12')]&&!this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]['agentcomplete']){logger['info'](_0xc3d6('0x47'),_0x58f32e[_0xc3d6('0x24')],this[_0xc3d6('0xb')][_0x58f32e['uniqueid']][_0xb5c7f6]['membername'],_0xb5c7f6);this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x12')]=!![];this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x49')]=_0x58f32e['destuniqueid'];this['channels'][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]['answeredelsewheremembername']=_0x58f32e[_0xc3d6('0x25')];this['channels'][_0x58f32e['uniqueid']][_0xb5c7f6][_0xc3d6('0x4a')]=_0xc3d6('0x4b');this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6][_0xc3d6('0x4c')]=_0xc3d6('0x4b');logger[_0xc3d6('0x27')](_0xc3d6('0x4d'),_0x58f32e[_0xc3d6('0x24')],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0x58f32e['uniqueid']][_0xb5c7f6],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')]('custom:agentansweredelsewhere',this[_0xc3d6('0xb')][_0x58f32e[_0xc3d6('0x24')]][_0xb5c7f6]);}}}}}}catch(_0x3b0cbf){logger[_0xc3d6('0x39')]('[%s][voiceAgentReport][agentconnect]',_0x58f32e['uniqueid'],util[_0xc3d6('0x29')](_0x3b0cbf,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x13')]=function(_0x3f8170){try{if(this[_0xc3d6('0x20')](_0x3f8170)){logger[_0xc3d6('0x27')](_0xc3d6('0x4e'),_0x3f8170[_0xc3d6('0x24')],util['inspect'](_0x3f8170,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x3f8170[_0xc3d6('0x24')]]&&this[_0xc3d6('0xb')][_0x3f8170['uniqueid']][_0x3f8170[_0xc3d6('0x26')]]){logger['info'](_0xc3d6('0x4f'),_0x3f8170[_0xc3d6('0x24')],_0x3f8170[_0xc3d6('0x25')],_0x3f8170[_0xc3d6('0x26')]);this['channels'][_0x3f8170[_0xc3d6('0x24')]][_0x3f8170[_0xc3d6('0x26')]][_0xc3d6('0x12')]=!![];this[_0xc3d6('0xb')][_0x3f8170[_0xc3d6('0x24')]][_0x3f8170[_0xc3d6('0x26')]][_0xc3d6('0x48')]=moment()[_0xc3d6('0x2a')](_0xc3d6('0x2b'));this[_0xc3d6('0xb')][_0x3f8170[_0xc3d6('0x24')]][_0x3f8170[_0xc3d6('0x26')]]['lastevent']=_0xc3d6('0x50');this[_0xc3d6('0xb')][_0x3f8170['uniqueid']][_0x3f8170[_0xc3d6('0x26')]]['reason']='rejected';logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x3f8170[_0xc3d6('0x24')],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0x3f8170[_0xc3d6('0x24')]][_0x3f8170['destuniqueid']],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')]('custom:agentringnoanswer',this[_0xc3d6('0xb')][_0x3f8170[_0xc3d6('0x24')]][_0x3f8170[_0xc3d6('0x26')]]);}}}catch(_0x153b6f){logger[_0xc3d6('0x39')](_0xc3d6('0x51'),_0x3f8170[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x153b6f,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncQueueCallerAbandon']=function(_0x522eb4){try{if(this[_0xc3d6('0x20')](_0x522eb4)){logger[_0xc3d6('0x27')](_0xc3d6('0x52'),_0x522eb4['uniqueid'],util[_0xc3d6('0x29')](_0x522eb4,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]]){for(var _0x12b4f3 in this['channels'][_0x522eb4[_0xc3d6('0x24')]]){if(this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0xc3d6('0x53')](_0x12b4f3)&&!this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x12')]&&!this['channels'][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x54')]){logger[_0xc3d6('0x3b')](_0xc3d6('0x55'),_0x522eb4[_0xc3d6('0x24')],this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x25')],_0x12b4f3);this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x12')]=!![];this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x48')]=moment()[_0xc3d6('0x2a')](_0xc3d6('0x2b'));this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x4a')]=_0xc3d6('0x56');this['channels'][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3][_0xc3d6('0x4c')]='abandoned';logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x522eb4[_0xc3d6('0x24')],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0x522eb4[_0xc3d6('0x24')]][_0x12b4f3],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')]('custom:agentqueuecallerabandon',this[_0xc3d6('0xb')][_0x522eb4['uniqueid']][_0x12b4f3]);}}}}}catch(_0x204b9d){logger[_0xc3d6('0x39')](_0xc3d6('0x57'),_0x522eb4[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x204b9d,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x15')]=function(_0x476772){try{if(this[_0xc3d6('0x20')](_0x476772)){logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20event:',_0x476772[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x476772,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x476772['uniqueid']]){for(var _0x4e6aaa in this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]]){if(this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0xc3d6('0x53')](_0x4e6aaa)){if(this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa][_0xc3d6('0x58')]&&!this[_0xc3d6('0xb')][_0x476772['uniqueid']][_0x4e6aaa][_0xc3d6('0x54')]){logger[_0xc3d6('0x3b')](_0xc3d6('0x59'),_0x476772[_0xc3d6('0x24')],this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa]['membername'],_0x4e6aaa);this['channels'][_0x476772['uniqueid']][_0x4e6aaa][_0xc3d6('0x54')]=!![];this[_0xc3d6('0xb')][_0x476772['uniqueid']][_0x4e6aaa]['agentcompleteAt']=moment()['format'](_0xc3d6('0x2b'));this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa]['lastevent']=_0xc3d6('0x5a');this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa]['reason']=_0x476772['reason']==_0xc3d6('0x5b')?_0xc3d6('0x5c'):_0x476772[_0xc3d6('0x4c')];this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa][_0xc3d6('0x5d')]=_0x476772[_0xc3d6('0x5d')];if(this['voiceQueues'][_0x476772[_0xc3d6('0x2c')]]&&this[_0xc3d6('0xc')][_0x476772[_0xc3d6('0x2c')]]['acw']){this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa][_0xc3d6('0x5e')]=this[_0xc3d6('0xc')][_0x476772[_0xc3d6('0x2c')]]['acwTimeout'];this[_0xc3d6('0xb')][_0x476772['uniqueid']][_0x4e6aaa][_0xc3d6('0x5f')]=!![];}this[_0xc3d6('0xd')][_0x476772[_0xc3d6('0x34')]]=_['omit'](this[_0xc3d6('0xd')][_0x476772[_0xc3d6('0x34')]],[_0xc3d6('0x2c'),_0xc3d6('0x60')]);logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x476772['uniqueid'],util[_0xc3d6('0x29')](this[_0xc3d6('0xb')][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa],{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')](_0xc3d6('0x61'),this['channels'][_0x476772[_0xc3d6('0x24')]][_0x4e6aaa]);logger[_0xc3d6('0x27')](_0xc3d6('0x62'),_0x476772['uniqueid'],util[_0xc3d6('0x29')]({'id':this[_0xc3d6('0xd')][_0x476772[_0xc3d6('0x34')]]['id'],'destaccountcode':_0x476772[_0xc3d6('0x63')]},{'showHidden':![],'depth':null}));this[_0xc3d6('0x1f')](util[_0xc3d6('0x2a')]('user:%s',_0x476772[_0xc3d6('0x25')]),'user:agentcomplete',{'id':this[_0xc3d6('0xd')][_0x476772[_0xc3d6('0x34')]]['id'],'destaccountcode':_0x476772[_0xc3d6('0x63')]});}}}}}}catch(_0x335f31){logger[_0xc3d6('0x39')]('[%s][voiceAgentReport][agentcomplete]',_0x476772['uniqueid'],util['inspect'](_0x335f31,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')]['syncVarSet']=function(_0x24c5ec){try{if(this[_0xc3d6('0x20')](_0x24c5ec)){logger[_0xc3d6('0x27')](_0xc3d6('0x64'),_0x24c5ec[_0xc3d6('0x24')],util['inspect'](_0x24c5ec,{'showHidden':![],'depth':null}));this['addVariable'](_0x24c5ec[_0xc3d6('0x24')],_[_0xc3d6('0x65')](_0x24c5ec[_0xc3d6('0x66')])[0x0],_0x24c5ec[_0xc3d6('0x67')]);if(this['channels'][_0x24c5ec[_0xc3d6('0x24')]]){for(var _0x135832 in this[_0xc3d6('0xb')][_0x24c5ec[_0xc3d6('0x24')]]){if(this[_0xc3d6('0xb')][_0x24c5ec[_0xc3d6('0x24')]]['hasOwnProperty'](_0x135832)){logger[_0xc3d6('0x3b')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x24c5ec[_0xc3d6('0x24')],_0x135832,_[_0xc3d6('0x65')](_0x24c5ec[_0xc3d6('0x66')])[0x0],_0x24c5ec['value']);if(_[_0xc3d6('0x21')](this[_0xc3d6('0xb')][_0x24c5ec['uniqueid']][_0x135832][_0xc3d6('0xe')])){this[_0xc3d6('0xb')][_0x24c5ec[_0xc3d6('0x24')]][_0x135832][_0xc3d6('0xe')]={};}this[_0xc3d6('0xb')][_0x24c5ec[_0xc3d6('0x24')]][_0x135832]['variables']=this[_0xc3d6('0xe')][_0x24c5ec['uniqueid']];}}}}}catch(_0x56d08a){logger[_0xc3d6('0x39')](_0xc3d6('0x68'),_0x24c5ec['uniqueid'],util[_0xc3d6('0x29')](_0x56d08a,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x69')]=function(_0x42fd6e,_0x49f42f,_0x4a5a43){var _0x13687c=[_0xc3d6('0x6a'),_0xc3d6('0x6b'),_0xc3d6('0x6c'),_0xc3d6('0x6d'),_0xc3d6('0x6e'),_0xc3d6('0x6f'),_0xc3d6('0x70'),_0xc3d6('0x71'),_0xc3d6('0x72'),'sipuri','bridgepeer',_0xc3d6('0x73'),_0xc3d6('0x74'),_0xc3d6('0x75'),_0xc3d6('0x76'),_0xc3d6('0x77'),'membername',_0xc3d6('0x78'),_0xc3d6('0x79')];if(!_[_0xc3d6('0x7a')](_0x49f42f)&&!_['includes'](_0x13687c,_0x49f42f)){if(_[_0xc3d6('0x21')](this['variables'][_0x42fd6e])){this[_0xc3d6('0xe')][_0x42fd6e]={};}this[_0xc3d6('0xe')][_0x42fd6e][_0x49f42f]=_0x4a5a43;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x59b0c5){try{if(this[_0xc3d6('0x20')](_0x59b0c5)){logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][hangup]\x20event:',_0x59b0c5[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x59b0c5,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x59b0c5[_0xc3d6('0x24')]]){for(var _0x1c5011 in this[_0xc3d6('0xb')][_0x59b0c5[_0xc3d6('0x24')]]){if(this['channels'][_0x59b0c5['uniqueid']]['hasOwnProperty'](_0x1c5011)){if(this['channels'][_0x59b0c5[_0xc3d6('0x24')]][_0x1c5011]['reason']=='transfer'&&this[_0xc3d6('0xb')][_0x59b0c5['uniqueid']][_0x1c5011][_0xc3d6('0x54')]){logger['info'](_0xc3d6('0x7b'),_0x59b0c5[_0xc3d6('0x24')],_0x1c5011);this[_0xc3d6('0xb')][_0x59b0c5[_0xc3d6('0x24')]][_0x1c5011][_0xc3d6('0x7c')]=moment()[_0xc3d6('0x2a')](_0xc3d6('0x2b'));}}}logger['debug'](_0xc3d6('0x7d'),_0x59b0c5[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_[_0xc3d6('0x7e')](this['channels'][_0x59b0c5[_0xc3d6('0x24')]]),{'showHidden':![],'depth':null}));ami[_0xc3d6('0x1f')](_0xc3d6('0x7f'),_[_0xc3d6('0x7e')](this['channels'][_0x59b0c5[_0xc3d6('0x24')]]));delete this[_0xc3d6('0xb')][_0x59b0c5['uniqueid']];}if(this[_0xc3d6('0xe')][_0x59b0c5[_0xc3d6('0x24')]]){delete this[_0xc3d6('0xe')][_0x59b0c5[_0xc3d6('0x24')]];}}}catch(_0x24e52f){logger[_0xc3d6('0x39')](_0xc3d6('0x80'),_0x59b0c5['uniqueid'],util[_0xc3d6('0x29')](_0x24e52f,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x81')]=function(_0x33a27f){try{if(this[_0xc3d6('0x20')](_0x33a27f)){logger['debug'](_0xc3d6('0x82'),_0x33a27f[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x33a27f,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x33a27f[_0xc3d6('0x83')]]){for(var _0x4527ef in this[_0xc3d6('0xb')][_0x33a27f[_0xc3d6('0x83')]]){if(this[_0xc3d6('0xb')][_0x33a27f['transfereeuniqueid']][_0xc3d6('0x53')](_0x4527ef)){if(_0x33a27f['origtransfereruniqueid']===_0x4527ef){logger[_0xc3d6('0x3b')](_0xc3d6('0x84'),_0x33a27f[_0xc3d6('0x24')],this[_0xc3d6('0xb')][_0x33a27f['transfereeuniqueid']][_0x4527ef]['membername'],_0x4527ef);var _0x231e5b=moment();this[_0xc3d6('0xb')][_0x33a27f['transfereeuniqueid']][_0x4527ef][_0xc3d6('0x54')]=!![];this[_0xc3d6('0xb')][_0x33a27f[_0xc3d6('0x83')]][_0x4527ef][_0xc3d6('0x7c')]=moment()[_0xc3d6('0x2a')](_0xc3d6('0x2b'));this['channels'][_0x33a27f[_0xc3d6('0x83')]][_0x4527ef][_0xc3d6('0x4a')]=_0xc3d6('0x5a');this['channels'][_0x33a27f[_0xc3d6('0x83')]][_0x4527ef][_0xc3d6('0x4c')]=_0xc3d6('0x5b');this[_0xc3d6('0xb')][_0x33a27f['transfereeuniqueid']][_0x4527ef]['talktime']=_0x231e5b[_0xc3d6('0x85')](this[_0xc3d6('0xb')][_0x33a27f[_0xc3d6('0x83')]][_0x4527ef][_0xc3d6('0x58')],'seconds');}}}}if(this['channels'][_0x33a27f[_0xc3d6('0x86')]]){var _0x2010fc=this[_0xc3d6('0xb')][_0x33a27f['secondtransfereruniqueid']];this[_0xc3d6('0xb')][_0x33a27f['secondtransfereruniqueid']]=this['channels'][_0x33a27f[_0xc3d6('0x83')]];this['channels'][_0x33a27f[_0xc3d6('0x83')]]=_0x2010fc;}}}catch(_0x349d2a){logger[_0xc3d6('0x39')](_0xc3d6('0x87'),_0x33a27f[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x349d2a,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncBlindTransfer']=function(_0x189dea){try{if(this[_0xc3d6('0x20')](_0x189dea)){logger[_0xc3d6('0x27')]('[%s][voiceAgentReport][blindtransfer]\x20event:',_0x189dea[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x189dea,{'showHidden':![],'depth':null}));if(this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]]){for(var _0x3bdaba in this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]]){if(this['channels'][_0x189dea['transfereeuniqueid']][_0xc3d6('0x53')](_0x3bdaba)){if(_0x189dea[_0xc3d6('0x88')]===_0x3bdaba){logger[_0xc3d6('0x3b')](_0xc3d6('0x89'),_0x189dea[_0xc3d6('0x24')],this[_0xc3d6('0xb')][_0x189dea['transfereeuniqueid']][_0x3bdaba][_0xc3d6('0x25')],_0x3bdaba);var _0x475e03=moment();this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]][_0x3bdaba]['agentcomplete']=!![];this['channels'][_0x189dea['transfereeuniqueid']][_0x3bdaba][_0xc3d6('0x7c')]=_0x475e03;this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]][_0x3bdaba][_0xc3d6('0x4a')]=_0xc3d6('0x5a');this['channels'][_0x189dea['transfereeuniqueid']][_0x3bdaba]['reason']=_0xc3d6('0x5b');this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]][_0x3bdaba][_0xc3d6('0x5d')]=_0x475e03[_0xc3d6('0x85')](this[_0xc3d6('0xb')][_0x189dea[_0xc3d6('0x83')]][_0x3bdaba]['agentconnectAt'],_0xc3d6('0x8a'));}}}}}}catch(_0x1010e8){logger[_0xc3d6('0x39')](_0xc3d6('0x8b'),_0x189dea[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x1010e8,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x1a')]=function(_0x26e100){var _0x5796f8='';try{if(this['isNotNull'](_0x26e100)){logger['debug'](_0xc3d6('0x8c'),_0x26e100[_0xc3d6('0x24')],util['inspect'](_0x26e100,{'showHidden':![],'depth':null}));if(_0x26e100['channel']){_0x5796f8=_0x26e100['channel'][_0xc3d6('0x8d')](0x0,_0x26e100[_0xc3d6('0x8e')]['lastIndexOf']('-'));if(this[_0xc3d6('0xd')][_0x5796f8]){logger[_0xc3d6('0x3b')](_0xc3d6('0x8f'),_0x26e100[_0xc3d6('0x24')],_0x5796f8);this[_0xc3d6('0xd')][_0x5796f8][_0xc3d6('0x90')]=!![];}}}}catch(_0x5c90d2){logger[_0xc3d6('0x39')](_0xc3d6('0x91'),_0x26e100[_0xc3d6('0x24')],util[_0xc3d6('0x29')](_0x5c90d2,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0xc3d6('0x1e')][_0xc3d6('0x92')]=function(_0x25998c){var _0x95a46e='';try{if(this[_0xc3d6('0x20')](_0x25998c)){logger[_0xc3d6('0x27')](_0xc3d6('0x93'),_0x25998c[_0xc3d6('0x24')],util['inspect'](_0x25998c,{'showHidden':![],'depth':null}));if(_0x25998c[_0xc3d6('0x8e')]){_0x95a46e=_0x25998c[_0xc3d6('0x8e')][_0xc3d6('0x8d')](0x0,_0x25998c['channel'][_0xc3d6('0x94')]('-'));if(this[_0xc3d6('0xd')][_0x95a46e]){logger[_0xc3d6('0x3b')](_0xc3d6('0x95'),_0x25998c[_0xc3d6('0x24')],_0x95a46e);this['agents'][_0x95a46e][_0xc3d6('0x90')]=![];}}}}catch(_0x426fcc){logger['error']('[%s][voiceAgentReport][musiconholdstop]',_0x25998c['uniqueid'],util[_0xc3d6('0x29')](_0x426fcc,{'showHidden':![],'depth':null}));}};module[_0xc3d6('0x96')]=VoiceAgentReport;
\ No newline at end of file
+var _0x1a55=['syncAgentConnect','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','membername','agentconnectAt','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','connect','routealias','split','name','exten','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','user:agentringnoanswer','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','agentcompleteAt','transfer','agent','acw','acwtime','acwTimeout','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','variable','value','[%s][voiceAgentReport][varset]','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','bridgepeer','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport','[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','talktime','diff','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','voiceChannels','voiceQueues','agents','variables','bind','agentconnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','syncHangup','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','emit','prototype','isNotNull','isUndefined','syncAgentCalled','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','destuniqueid','debug','[%s][voiceAgentReport][agentcalled]\x20event:','inspect','interface','queue','format','YYYY-MM-DD\x20HH:mm:ss','called','mandatoryDisposition','type','inbound','voice','merge','event','[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','error','[%s][voiceAgentReport][agentcalled]'];(function(_0x2968ed,_0x4ef2c2){var _0x4e49e1=function(_0x546016){while(--_0x546016){_0x2968ed['push'](_0x2968ed['shift']());}};_0x4e49e1(++_0x4ef2c2);}(_0x1a55,0x1a7));var _0x51a5=function(_0xd9342d,_0x144da3){_0xd9342d=_0xd9342d-0x0;var _0x51d018=_0x1a55[_0xd9342d];return _0x51d018;};'use strict';var _=require('lodash');var moment=require(_0x51a5('0x0'));var util=require(_0x51a5('0x1'));var Redis=require(_0x51a5('0x2'));var config=require(_0x51a5('0x3'));var logger=require(_0x51a5('0x4'))(_0x51a5('0x5'));var ami=require(_0x51a5('0x6'));config[_0x51a5('0x7')]=_[_0x51a5('0x8')](config['redis'],{'host':_0x51a5('0x9'),'port':0x18eb});var io=require(_0x51a5('0xa'))(new Redis(config[_0x51a5('0x7')]));function VoiceAgentReport(_0x4d1aca){this[_0x51a5('0xb')]={};this[_0x51a5('0xc')]=_0x4d1aca[_0x51a5('0xb')];this[_0x51a5('0xd')]=_0x4d1aca[_0x51a5('0xd')];this[_0x51a5('0xe')]=_0x4d1aca['agents'];this[_0x51a5('0xf')]={};ami['on']('agentcalled',this['syncAgentCalled'][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x11'),this['syncAgentConnect'][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x12'),this[_0x51a5('0x13')][_0x51a5('0x10')](this));ami['on']('queuecallerabandon',this[_0x51a5('0x14')]['bind'](this));ami['on'](_0x51a5('0x15'),this['syncAgentComplete']['bind'](this));ami['on'](_0x51a5('0x16'),this[_0x51a5('0x17')]['bind'](this));ami['on'](_0x51a5('0x18'),this[_0x51a5('0x19')][_0x51a5('0x10')](this));ami['on']('musiconholdstart',this[_0x51a5('0x1a')]['bind'](this));ami['on'](_0x51a5('0x1b'),this[_0x51a5('0x1c')]['bind'](this));ami['on'](_0x51a5('0x1d'),this[_0x51a5('0x1e')][_0x51a5('0x10')](this));ami['on'](_0x51a5('0x1f'),this[_0x51a5('0x20')][_0x51a5('0x10')](this));}VoiceAgentReport['prototype'][_0x51a5('0x21')]=function(_0x280aa8,_0x120ed6,_0x324787){io['to'](_0x280aa8)['emit'](_0x120ed6,_0x324787);};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x23')]=function(_0x4012f0){return _0x4012f0!==null&&!_[_0x51a5('0x24')](_0x4012f0);};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x25')]=function(_0x4d613d){try{if(this[_0x51a5('0x23')](_0x4d613d)){logger[_0x51a5('0x26')](_0x51a5('0x27'),_0x4d613d[_0x51a5('0x28')],_0x4d613d['membername'],_0x4d613d[_0x51a5('0x29')]);logger[_0x51a5('0x2a')](_0x51a5('0x2b'),_0x4d613d[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x4d613d,{'showHidden':![],'depth':null}));if(_[_0x51a5('0x24')](this[_0x51a5('0xb')][_0x4d613d[_0x51a5('0x28')]])){this[_0x51a5('0xb')][_0x4d613d[_0x51a5('0x28')]]={};}var _0x4350a8=this[_0x51a5('0xe')][_0x4d613d[_0x51a5('0x2d')]];var _0x33249f=this['channels'][_0x4d613d['uniqueid']][_0x4d613d[_0x51a5('0x29')]];var _0x4fa945=this[_0x51a5('0xd')][_0x4d613d[_0x51a5('0x2e')]];var _0xbfdc10=this[_0x51a5('0xf')][_0x4d613d[_0x51a5('0x28')]];if(_[_0x51a5('0x24')](_0x33249f)){_0x33249f={'agentcalledAt':moment()[_0x51a5('0x2f')](_0x51a5('0x30')),'lastevent':_0x51a5('0x31'),'mandatoryDisposition':_0x4fa945&&_0x4fa945[_0x51a5('0x32')]?_0x4fa945[_0x51a5('0x32')]:![],'type':_0x4fa945&&_0x4fa945[_0x51a5('0x33')]?_0x4fa945[_0x51a5('0x33')]:_0x51a5('0x34'),'variables':_0xbfdc10,'motionChannel':_0x51a5('0x35')};}_[_0x51a5('0x36')](_0x33249f,_['omit'](_0x4d613d,[_0x51a5('0x37'),'privilege']));logger[_0x51a5('0x2a')](_0x51a5('0x38'),_0x4d613d['uniqueid'],util[_0x51a5('0x2c')](_0x33249f,{'showHidden':![],'depth':null}));ami['emit']('custom:agentcalled',_0x33249f);var _0x34d6bc={'id':_0x4350a8['id'],'calleridnum':_0x33249f[_0x51a5('0x39')],'queue':_0x33249f[_0x51a5('0x2e')],'variables':_0x33249f['variables'],'uniqueid':_0x4d613d['uniqueid']};logger[_0x51a5('0x2a')](_0x51a5('0x3a'),_0x4d613d[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x34d6bc,{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util[_0x51a5('0x2f')](_0x51a5('0x3b'),_0x4d613d['membername']),_0x51a5('0x3c'),_0x34d6bc);}}catch(_0x153cea){logger[_0x51a5('0x3d')](_0x51a5('0x3e'),_0x4d613d[_0x51a5('0x28')],util['inspect'](_0x153cea,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x3f')]=function(_0x1cd4a2){try{if(this[_0x51a5('0x23')](_0x1cd4a2)){if(this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]]){logger[_0x51a5('0x2a')](_0x51a5('0x40'),_0x1cd4a2[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x1cd4a2,{'showHidden':![],'depth':null}));for(var _0x4ebbef in this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x51a5('0x41')](_0x4ebbef)){if(_0x1cd4a2[_0x51a5('0x29')]===_0x4ebbef){logger[_0x51a5('0x26')](_0x51a5('0x42'),_0x1cd4a2[_0x51a5('0x28')],_0x1cd4a2[_0x51a5('0x43')],_0x1cd4a2[_0x51a5('0x29')]);this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x44')]=moment()['format'](_0x51a5('0x30'));this['channels'][_0x1cd4a2['uniqueid']][_0x4ebbef]['connectedlinename']=_0x1cd4a2['connectedlinename'];this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]['connectedlinenum']=_0x1cd4a2[_0x51a5('0x45')];this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x46')]=_0x1cd4a2[_0x51a5('0x46')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef]['destchannelstatedesc']=_0x1cd4a2[_0x51a5('0x47')];this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]['holdtime']=_0x1cd4a2[_0x51a5('0x48')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x49')]=_0x51a5('0x4a');if(this[_0x51a5('0xc')][this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x28')]]){var _0x46ec05=this[_0x51a5('0xc')][this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x28')]][_0x51a5('0x4b')];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x4b')]=_0x46ec05;_0x1cd4a2[_0x51a5('0x4b')]=_0x46ec05;}_['merge'](this[_0x51a5('0xe')][_0x1cd4a2[_0x51a5('0x2d')]],_['pick'](_0x1cd4a2,['queue','destconnectedlinenum','routealias']));var _0x1bac05=this[_0x51a5('0xe')][_0x1cd4a2['channel'][_0x51a5('0x4c')]('-')[0x0]];var _0xe0744e={'id':_0x1bac05['id'],'name':_0x1bac05[_0x51a5('0x4d')],'agentconnected':!![],'destaccountcode':_0x1bac05['accountcode'],'destconnectedlinenum':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2['destuniqueid']][_0x51a5('0x4e')],'queue':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2['destuniqueid']][_0x51a5('0x2e')],'routealias':this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2[_0x51a5('0x29')]][_0x51a5('0x4b')],'uniqueid':this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x1cd4a2[_0x51a5('0x29')]]['uniqueid']};logger[_0x51a5('0x2a')](_0x51a5('0x4f'),_0x1cd4a2['uniqueid'],util['inspect'](_0xe0744e,{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')](_0x51a5('0x50'),_0xe0744e);logger[_0x51a5('0x2a')](_0x51a5('0x51'),_0x1cd4a2[_0x51a5('0x28')],util['inspect'](_0xe0744e,{'showHidden':![],'depth':null}));this['emit'](util[_0x51a5('0x2f')]('user:%s',_0x1cd4a2[_0x51a5('0x43')]),_0x51a5('0x52'),_0xe0744e);}else if(!this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x12')]&&!this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x15')]){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x1cd4a2[_0x51a5('0x28')],this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x43')],_0x4ebbef);this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x12')]=!![];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x53')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x54')]=_0x1cd4a2['destuniqueid'];this['channels'][_0x1cd4a2['uniqueid']][_0x4ebbef]['answeredelsewheremembername']=_0x1cd4a2['membername'];this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef]['lastevent']=_0x51a5('0x55');this['channels'][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef][_0x51a5('0x56')]=_0x51a5('0x55');logger[_0x51a5('0x2a')](_0x51a5('0x57'),_0x1cd4a2[_0x51a5('0x28')],util['inspect'](this[_0x51a5('0xb')][_0x1cd4a2[_0x51a5('0x28')]][_0x4ebbef],{'showHidden':![],'depth':null}));ami['emit'](_0x51a5('0x58'),this[_0x51a5('0xb')][_0x1cd4a2['uniqueid']][_0x4ebbef]);}}}}}}catch(_0x1e0bc3){logger[_0x51a5('0x3d')]('[%s][voiceAgentReport][agentconnect]',_0x1cd4a2['uniqueid'],util[_0x51a5('0x2c')](_0x1e0bc3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x13')]=function(_0x40f0b3){try{if(this['isNotNull'](_0x40f0b3)){logger['debug']('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x40f0b3[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x40f0b3,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x40f0b3[_0x51a5('0x28')]]&&this['channels'][_0x40f0b3[_0x51a5('0x28')]][_0x40f0b3[_0x51a5('0x29')]]){logger['info'](_0x51a5('0x59'),_0x40f0b3[_0x51a5('0x28')],_0x40f0b3[_0x51a5('0x43')],_0x40f0b3[_0x51a5('0x29')]);var _0x55a94c=this[_0x51a5('0xe')][_0x40f0b3[_0x51a5('0x2d')]];var _0x5aa40b=this['channels'][_0x40f0b3[_0x51a5('0x28')]][_0x40f0b3[_0x51a5('0x29')]];_0x5aa40b[_0x51a5('0x12')]=!![];_0x5aa40b[_0x51a5('0x53')]=moment()['format'](_0x51a5('0x30'));_0x5aa40b['lastevent']='rejected';_0x5aa40b['reason']=_0x51a5('0x5a');var _0x85585d={'id':_0x55a94c['id'],'name':_0x55a94c[_0x51a5('0x4d')],'queue':_0x5aa40b[_0x51a5('0x2e')],'uniqueid':_0x5aa40b[_0x51a5('0x28')]};logger[_0x51a5('0x2a')]('[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:',_0x40f0b3['uniqueid'],util[_0x51a5('0x2c')](_0x85585d,{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util['format'](_0x51a5('0x3b'),_0x55a94c[_0x51a5('0x4d')]),_0x51a5('0x5b'),_0x85585d);ami['emit'](_0x51a5('0x5c'),_0x5aa40b);}}}catch(_0x3bb899){logger[_0x51a5('0x3d')](_0x51a5('0x5d'),_0x40f0b3['uniqueid'],util[_0x51a5('0x2c')](_0x3bb899,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x14')]=function(_0x42c0b0){try{if(this[_0x51a5('0x23')](_0x42c0b0)){logger['debug'](_0x51a5('0x5e'),_0x42c0b0[_0x51a5('0x28')],util['inspect'](_0x42c0b0,{'showHidden':![],'depth':null}));if(this['channels'][_0x42c0b0['uniqueid']]){for(var _0x688f0 in this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x42c0b0['uniqueid']][_0x51a5('0x41')](_0x688f0)&&!this['channels'][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x12')]&&!this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x15')]){logger[_0x51a5('0x26')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x42c0b0[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x43')],_0x688f0);this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x12')]=!![];this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x53')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0]['lastevent']=_0x51a5('0x5f');this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0][_0x51a5('0x56')]='abandoned';logger[_0x51a5('0x2a')](_0x51a5('0x60'),_0x42c0b0[_0x51a5('0x28')],util[_0x51a5('0x2c')](this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0],{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')](_0x51a5('0x61'),this[_0x51a5('0xb')][_0x42c0b0[_0x51a5('0x28')]][_0x688f0]);}}}}}catch(_0x1ed07b){logger['error'](_0x51a5('0x62'),_0x42c0b0[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x1ed07b,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x51a5('0x63')]=function(_0x40ead8){try{if(this[_0x51a5('0x23')](_0x40ead8)){logger[_0x51a5('0x2a')](_0x51a5('0x64'),_0x40ead8['uniqueid'],util[_0x51a5('0x2c')](_0x40ead8,{'showHidden':![],'depth':null}));if(this['channels'][_0x40ead8[_0x51a5('0x28')]]){for(var _0x6429ce in this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x51a5('0x41')](_0x6429ce)){if(this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x44')]&&!this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x15')]){logger[_0x51a5('0x26')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x40ead8[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x43')],_0x6429ce);this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x15')]=!![];this['channels'][_0x40ead8['uniqueid']][_0x6429ce][_0x51a5('0x65')]=moment()[_0x51a5('0x2f')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x51a5('0xb')][_0x40ead8['uniqueid']][_0x6429ce]['lastevent']='complete';this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce][_0x51a5('0x56')]=_0x40ead8['reason']==_0x51a5('0x66')?_0x51a5('0x67'):_0x40ead8[_0x51a5('0x56')];this[_0x51a5('0xb')][_0x40ead8['uniqueid']][_0x6429ce]['talktime']=_0x40ead8['talktime'];if(this[_0x51a5('0xd')][_0x40ead8['queue']]&&this['voiceQueues'][_0x40ead8[_0x51a5('0x2e')]][_0x51a5('0x68')]){this['channels'][_0x40ead8['uniqueid']][_0x6429ce][_0x51a5('0x69')]=this[_0x51a5('0xd')][_0x40ead8[_0x51a5('0x2e')]][_0x51a5('0x6a')];this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce]['agentacw']=!![];}this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]]=_['omit'](this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]],[_0x51a5('0x2e'),'destconnectedlinenum']);logger[_0x51a5('0x2a')](_0x51a5('0x6b'),_0x40ead8[_0x51a5('0x28')],util[_0x51a5('0x2c')](this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce],{'showHidden':![],'depth':null}));ami[_0x51a5('0x21')]('custom:agentcomplete',this[_0x51a5('0xb')][_0x40ead8[_0x51a5('0x28')]][_0x6429ce]);logger[_0x51a5('0x2a')](_0x51a5('0x6c'),_0x40ead8['uniqueid'],util[_0x51a5('0x2c')]({'id':this['agents'][_0x40ead8[_0x51a5('0x2d')]]['id'],'destaccountcode':_0x40ead8[_0x51a5('0x6d')]},{'showHidden':![],'depth':null}));this[_0x51a5('0x21')](util[_0x51a5('0x2f')](_0x51a5('0x3b'),_0x40ead8['membername']),_0x51a5('0x6e'),{'id':this[_0x51a5('0xe')][_0x40ead8[_0x51a5('0x2d')]]['id'],'destaccountcode':Number(_0x40ead8[_0x51a5('0x6d')])});}}}}}}catch(_0x14ff3e){logger[_0x51a5('0x3d')](_0x51a5('0x6f'),_0x40ead8[_0x51a5('0x28')],util['inspect'](_0x14ff3e,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncVarSet']=function(_0x2c0796){try{if(this['isNotNull'](_0x2c0796)){logger[_0x51a5('0x2a')](_0x51a5('0x70'),_0x2c0796[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x2c0796,{'showHidden':![],'depth':null}));this[_0x51a5('0x71')](_0x2c0796['uniqueid'],_[_0x51a5('0x72')](_0x2c0796['variable'])[0x0],_0x2c0796['value']);if(this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]]){for(var _0x5df420 in this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]]){if(this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x51a5('0x41')](_0x5df420)){logger[_0x51a5('0x26')](_0x51a5('0x73'),_0x2c0796[_0x51a5('0x28')],_0x5df420,_[_0x51a5('0x72')](_0x2c0796[_0x51a5('0x74')])[0x0],_0x2c0796[_0x51a5('0x75')]);if(_[_0x51a5('0x24')](this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420]['variables'])){this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420][_0x51a5('0xf')]={};}this[_0x51a5('0xb')][_0x2c0796[_0x51a5('0x28')]][_0x5df420][_0x51a5('0xf')]=this[_0x51a5('0xf')][_0x2c0796[_0x51a5('0x28')]];}}}}}catch(_0x5447ae){logger[_0x51a5('0x3d')](_0x51a5('0x76'),_0x2c0796['uniqueid'],util[_0x51a5('0x2c')](_0x5447ae,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x71')]=function(_0x341656,_0x38ad7d,_0x489457){var _0x55dd75=['rtpaudioqos','rtpaudioqosbridged',_0x51a5('0x77'),'rtpaudioqosjitterbridged',_0x51a5('0x78'),_0x51a5('0x79'),_0x51a5('0x7a'),_0x51a5('0x7b'),'sipcallid','sipuri',_0x51a5('0x7c'),'bridgepvtcallid',_0x51a5('0x7d'),_0x51a5('0x7e'),_0x51a5('0x7f'),_0x51a5('0x80'),_0x51a5('0x43'),'memberpenalty',_0x51a5('0x81')];if(!_[_0x51a5('0x82')](_0x38ad7d)&&!_[_0x51a5('0x83')](_0x55dd75,_0x38ad7d)){if(_['isUndefined'](this[_0x51a5('0xf')][_0x341656])){this[_0x51a5('0xf')][_0x341656]={};}this['variables'][_0x341656][_0x38ad7d]=_0x489457;}};VoiceAgentReport['prototype'][_0x51a5('0x19')]=function(_0x34f231){try{if(this['isNotNull'](_0x34f231)){logger['debug'](_0x51a5('0x84'),_0x34f231['uniqueid'],util[_0x51a5('0x2c')](_0x34f231,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]){for(var _0x5bc19a in this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]){if(this['channels'][_0x34f231[_0x51a5('0x28')]][_0x51a5('0x41')](_0x5bc19a)){if(this[_0x51a5('0xb')][_0x34f231['uniqueid']][_0x5bc19a]['reason']==_0x51a5('0x66')&&this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]][_0x5bc19a][_0x51a5('0x15')]){logger[_0x51a5('0x26')](_0x51a5('0x85'),_0x34f231[_0x51a5('0x28')],_0x5bc19a);this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]][_0x5bc19a][_0x51a5('0x65')]=moment()[_0x51a5('0x2f')](_0x51a5('0x30'));}}}logger[_0x51a5('0x2a')](_0x51a5('0x86'),_0x34f231[_0x51a5('0x28')],util['inspect'](_[_0x51a5('0x87')](this[_0x51a5('0xb')][_0x34f231[_0x51a5('0x28')]]),{'showHidden':![],'depth':null}));ami['emit'](_0x51a5('0x88'),_[_0x51a5('0x87')](this['channels'][_0x34f231[_0x51a5('0x28')]]));delete this['channels'][_0x34f231[_0x51a5('0x28')]];}if(this[_0x51a5('0xf')][_0x34f231[_0x51a5('0x28')]]){delete this[_0x51a5('0xf')][_0x34f231[_0x51a5('0x28')]];}}}catch(_0x5d7590){logger[_0x51a5('0x3d')](_0x51a5('0x89'),_0x34f231[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x5d7590,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x51a5('0x1e')]=function(_0x390fb7){try{if(this[_0x51a5('0x23')](_0x390fb7)){logger[_0x51a5('0x2a')](_0x51a5('0x8a'),_0x390fb7[_0x51a5('0x28')],util['inspect'](_0x390fb7,{'showHidden':![],'depth':null}));if(this['channels'][_0x390fb7[_0x51a5('0x8b')]]){for(var _0x57227c in this['channels'][_0x390fb7[_0x51a5('0x8b')]]){if(this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x51a5('0x41')](_0x57227c)){if(_0x390fb7[_0x51a5('0x8c')]===_0x57227c){logger['info'](_0x51a5('0x8d'),_0x390fb7[_0x51a5('0x28')],this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c]['membername'],_0x57227c);var _0x1d594a=moment();this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x15')]=!![];this[_0x51a5('0xb')][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x65')]=moment()['format'](_0x51a5('0x30'));this['channels'][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x49')]=_0x51a5('0x8e');this['channels'][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x56')]='transfer';this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]][_0x57227c][_0x51a5('0x8f')]=_0x1d594a[_0x51a5('0x90')](this[_0x51a5('0xb')][_0x390fb7['transfereeuniqueid']][_0x57227c][_0x51a5('0x44')],_0x51a5('0x91'));}}}}if(this['channels'][_0x390fb7['secondtransfereruniqueid']]){var _0xb20da3=this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x92')]];this[_0x51a5('0xb')][_0x390fb7['secondtransfereruniqueid']]=this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]];this[_0x51a5('0xb')][_0x390fb7[_0x51a5('0x8b')]]=_0xb20da3;}}}catch(_0x476051){logger[_0x51a5('0x3d')]('[%s][voiceAgentReport][attendedtransfer]',_0x390fb7[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x476051,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x20')]=function(_0x51e3ac){try{if(this[_0x51a5('0x23')](_0x51e3ac)){logger[_0x51a5('0x2a')](_0x51a5('0x93'),_0x51e3ac[_0x51a5('0x28')],util['inspect'](_0x51e3ac,{'showHidden':![],'depth':null}));if(this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]]){for(var _0x2d19bb in this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']]){if(this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x51a5('0x41')](_0x2d19bb)){if(_0x51e3ac[_0x51a5('0x94')]===_0x2d19bb){logger[_0x51a5('0x26')](_0x51a5('0x95'),_0x51e3ac['uniqueid'],this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x43')],_0x2d19bb);var _0x725684=moment();this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb]['agentcomplete']=!![];this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x65')]=_0x725684;this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x49')]=_0x51a5('0x8e');this[_0x51a5('0xb')][_0x51e3ac['transfereeuniqueid']][_0x2d19bb][_0x51a5('0x56')]=_0x51a5('0x66');this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb][_0x51a5('0x8f')]=_0x725684[_0x51a5('0x90')](this[_0x51a5('0xb')][_0x51e3ac[_0x51a5('0x8b')]][_0x2d19bb][_0x51a5('0x44')],_0x51a5('0x91'));}}}}}}catch(_0x94ed77){logger[_0x51a5('0x3d')](_0x51a5('0x96'),_0x51e3ac[_0x51a5('0x28')],util[_0x51a5('0x2c')](_0x94ed77,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x1a')]=function(_0x434166){var _0x536c70='';try{if(this['isNotNull'](_0x434166)){logger[_0x51a5('0x2a')](_0x51a5('0x97'),_0x434166['uniqueid'],util[_0x51a5('0x2c')](_0x434166,{'showHidden':![],'depth':null}));if(_0x434166['channel']){_0x536c70=_0x434166['channel'][_0x51a5('0x98')](0x0,_0x434166[_0x51a5('0x99')][_0x51a5('0x9a')]('-'));if(this['agents'][_0x536c70]){logger['info'](_0x51a5('0x9b'),_0x434166[_0x51a5('0x28')],_0x536c70);this[_0x51a5('0xe')][_0x536c70][_0x51a5('0x9c')]=!![];}}}}catch(_0x59ec20){logger[_0x51a5('0x3d')](_0x51a5('0x9d'),_0x434166['uniqueid'],util['inspect'](_0x59ec20,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x51a5('0x22')][_0x51a5('0x1c')]=function(_0x4327b4){var _0x9537e9='';try{if(this['isNotNull'](_0x4327b4)){logger[_0x51a5('0x2a')](_0x51a5('0x9e'),_0x4327b4[_0x51a5('0x28')],util['inspect'](_0x4327b4,{'showHidden':![],'depth':null}));if(_0x4327b4[_0x51a5('0x99')]){_0x9537e9=_0x4327b4[_0x51a5('0x99')][_0x51a5('0x98')](0x0,_0x4327b4['channel'][_0x51a5('0x9a')]('-'));if(this[_0x51a5('0xe')][_0x9537e9]){logger['info'](_0x51a5('0x9f'),_0x4327b4[_0x51a5('0x28')],_0x9537e9);this[_0x51a5('0xe')][_0x9537e9][_0x51a5('0x9c')]=![];}}}}catch(_0x519f0a){logger['error'](_0x51a5('0xa0'),_0x4327b4[_0x51a5('0x28')],util['inspect'](_0x519f0a,{'showHidden':![],'depth':null}));}};module[_0x51a5('0xa1')]=VoiceAgentReport;
\ No newline at end of file
index 6036f41..06718c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5684=['[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','sipcalluniqueid','parse','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','answertime','destinationchannel','cause-txt','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','transferType','resolve','then','getSettings','stopRecordingOnTransfer','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','event','BlindTransfer','[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','outbound','routeid','[%s][voiceCallReport][attendedtransfer]','syncBlindTransfer','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','milliseconds','mohtime','util','ioredis','../../../config/environment','../../../config/logger','ami','../ami','../model/channel','set','queue','dial','playback','NO\x20ANSWER','FAILED','BUSY','redis','localhost','socket.io-emitter','channels','agents','coreshowchannel','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','syncNewState','varset','hangup','syncHangup','attendedtransfer','syncAttendedTransfer','blindtransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isUndefined','emit','calleridnum','debug','[%s][voiceCallReport][newcallerid]\x20event:','uniqueid','context','from-sip','channel','split','xcally-motion-preview','destconnectedlinenum','format','user:%s','user:agentconnect','accountcode','connectedlinenum','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','exten','starttime','YYYY-MM-DD\x20HH:mm:ss','toNumber','channelstate','merge','keys','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','blindTransfers','application','toLowerCase','applicationdata','appdata','startsWith','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','subtract','seconds','lastapplication','lastdata','cdr(','match','type','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','answered','holdtime','diff','connectedlinename','disposition','UserId','calleridname','membername','name','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','replace','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','syncVarSet','[%s][voiceCallReport][varset]\x20event:','isNotNull','variable','mixmonitor_filename','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','value','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','xmd-cdrtype'];(function(_0x20237d,_0x506c3d){var _0x5a5b92=function(_0xdca92d){while(--_0xdca92d){_0x20237d['push'](_0x20237d['shift']());}};_0x5a5b92(++_0x506c3d);}(_0x5684,0x1d0));var _0x4568=function(_0x26c967,_0x33a0f6){_0x26c967=_0x26c967-0x0;var _0xd92477=_0x5684[_0x26c967];return _0xd92477;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x4568('0x0'));var path=require('path');var Redis=require(_0x4568('0x1'));var config=require(_0x4568('0x2'));var logger=require(_0x4568('0x3'))(_0x4568('0x4'));var ami=require(_0x4568('0x5'));var Channel=require(_0x4568('0x6'));var RpcSetting=require('../rpc/setting');var applications=[_0x4568('0x7'),_0x4568('0x8'),'agi',_0x4568('0x9'),_0x4568('0xa'),'voicemail'];var dispositions=[_0x4568('0xb'),_0x4568('0xc'),_0x4568('0xc'),_0x4568('0xb'),_0x4568('0xb'),_0x4568('0xb'),'ANSWERED',_0x4568('0xd'),_0x4568('0xc'),_0x4568('0xc'),_0x4568('0xc')];config['redis']=_['defaults'](config[_0x4568('0xe')],{'host':_0x4568('0xf'),'port':0x18eb});var io=require(_0x4568('0x10'))(new Redis(config[_0x4568('0xe')]));function VoiceCallReport(_0x20ae89){this[_0x4568('0x11')]=_0x20ae89[_0x4568('0x11')];this[_0x4568('0x12')]=_0x20ae89[_0x4568('0x12')];this['blindTransfers']={};ami['on'](_0x4568('0x13'),this[_0x4568('0x14')]['bind'](this));ami['on'](_0x4568('0x15'),this[_0x4568('0x14')][_0x4568('0x16')](this));ami['on'](_0x4568('0x17'),this[_0x4568('0x18')]['bind'](this));ami['on'](_0x4568('0x19'),this[_0x4568('0x1a')]['bind'](this));ami['on'](_0x4568('0x1b'),this['syncVarSet']['bind'](this));ami['on'](_0x4568('0x1c'),this[_0x4568('0x1d')]['bind'](this));ami['on']('newcallerid',this['syncNewCallerId'][_0x4568('0x16')](this));ami['on'](_0x4568('0x1e'),this[_0x4568('0x1f')][_0x4568('0x16')](this));ami['on'](_0x4568('0x20'),this['syncBlindTransfer']['bind'](this));ami['on'](_0x4568('0x21'),this[_0x4568('0x22')]['bind'](this));ami['on'](_0x4568('0x23'),this[_0x4568('0x24')][_0x4568('0x16')](this));try{logger[_0x4568('0x25')](_0x4568('0x26'));ami[_0x4568('0x27')]();}catch(_0x252eba){logger[_0x4568('0x28')](_0x4568('0x29'),util[_0x4568('0x2a')](_0x252eba,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x4568('0x2b')]['isNotNull']=function(_0x1c1165){return _0x1c1165!==null&&!_[_0x4568('0x2c')](_0x1c1165);};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x2d')]=function(_0x4a5275,_0x594608,_0x2f7b80){io['to'](_0x4a5275)[_0x4568('0x2d')](_0x594608,_0x2f7b80);};VoiceCallReport[_0x4568('0x2b')]['syncNewCallerId']=function(_0x3a00d2){try{if(this['isNotNull'](_0x3a00d2)){logger[_0x4568('0x25')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x3a00d2['uniqueid'],_0x3a00d2['calleridname'],_0x3a00d2[_0x4568('0x2e')]);logger[_0x4568('0x2f')](_0x4568('0x30'),_0x3a00d2[_0x4568('0x31')],util[_0x4568('0x2a')](_0x3a00d2,{'showHidden':![],'depth':null}));if(_0x3a00d2[_0x4568('0x31')]===_0x3a00d2['linkedid']){if(!_['isUndefined'](this[_0x4568('0x11')][_0x3a00d2[_0x4568('0x31')]])){_['merge'](this[_0x4568('0x11')][_0x3a00d2[_0x4568('0x31')]],_['pick'](_0x3a00d2,_['keys'](this[_0x4568('0x11')][_0x3a00d2[_0x4568('0x31')]])));}}if(_0x3a00d2[_0x4568('0x32')]===_0x4568('0x33')){if(this[_0x4568('0x12')][_0x3a00d2[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]){if(_0x3a00d2['exten']==_0x4568('0x36')){this[_0x4568('0x12')][_0x3a00d2[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x37')]=_0x3a00d2['connectedlinenum'];this[_0x4568('0x2d')](util[_0x4568('0x38')](_0x4568('0x39'),this[_0x4568('0x12')][_0x3a00d2[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['name']),_0x4568('0x3a'),{'destaccountcode':this[_0x4568('0x12')][_0x3a00d2[_0x4568('0x34')]['split']('-')[0x0]][_0x4568('0x3b')],'destconnectedlinenum':_0x3a00d2[_0x4568('0x3c')]});}}}}}catch(_0x27b62){logger[_0x4568('0x28')](_0x4568('0x3d'),_0x3a00d2[_0x4568('0x31')],util['inspect'](_0x27b62,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')]['syncNewChannel']=function(_0xb48c45){try{if(this['isNotNull'](_0xb48c45)){logger[_0x4568('0x2f')](_0x4568('0x3e'),_0xb48c45['uniqueid'],util[_0x4568('0x2a')](_0xb48c45,{'showHidden':![],'depth':null}));if(this['channels'][_0xb48c45['uniqueid']])return;if(_0xb48c45[_0x4568('0x34')]===_0x4568('0x3f'))return;if(_0xb48c45[_0x4568('0x31')]!==_0xb48c45[_0x4568('0x40')]&&!this['blindTransfers'][_0xb48c45['linkedid']])return;logger['info'](_0x4568('0x41'),_0xb48c45[_0x4568('0x31')],_0xb48c45[_0x4568('0x32')],_0xb48c45[_0x4568('0x42')]);this[_0x4568('0x11')][_0xb48c45[_0x4568('0x31')]]=new Channel();this[_0x4568('0x11')][_0xb48c45['uniqueid']][_0x4568('0x43')]=moment()[_0x4568('0x38')](_0x4568('0x44'));this[_0x4568('0x11')][_0xb48c45['uniqueid']]['disposition']=dispositions[_[_0x4568('0x45')](_0xb48c45[_0x4568('0x46')])];_[_0x4568('0x47')](this['channels'][_0xb48c45[_0x4568('0x31')]],_['pick'](_0xb48c45,_[_0x4568('0x48')](this[_0x4568('0x11')][_0xb48c45['uniqueid']])));if(_0xb48c45[_0x4568('0x32')]===_0x4568('0x33')){if(this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]){if(_[_0x4568('0x2c')](this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')]['split']('-')[0x0]][_0x4568('0x37')])){this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['destconnectedlinenum']=_0xb48c45[_0x4568('0x42')];logger[_0x4568('0x2f')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0xb48c45[_0x4568('0x31')],util['inspect']({'id':this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['id'],'destaccountcode':this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x3b')],'destconnectedlinenum':_0xb48c45[_0x4568('0x42')]},{'showHidden':![],'depth':null}));this[_0x4568('0x2d')](util['format']('user:%s',this[_0x4568('0x12')][_0xb48c45['channel'][_0x4568('0x35')]('-')[0x0]]['name']),_0x4568('0x3a'),{'id':this['agents'][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['id'],'destaccountcode':this[_0x4568('0x12')][_0xb48c45[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x3b')],'destconnectedlinenum':_0xb48c45[_0x4568('0x42')]});}}}}}catch(_0x5aa4eb){logger[_0x4568('0x28')](_0x4568('0x49'),_0xb48c45[_0x4568('0x31')],util['inspect'](_0x5aa4eb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x14')]=function(_0x5c6e54){try{if(this['isNotNull'](_0x5c6e54)){logger[_0x4568('0x2f')](_0x4568('0x4a'),_0x5c6e54[_0x4568('0x31')],util[_0x4568('0x2a')](_0x5c6e54,{'showHidden':![],'depth':null}));if(_0x5c6e54[_0x4568('0x34')]==='OutgoingSpoolFailed'||_0x5c6e54[_0x4568('0x42')]==='h')return;if(_0x5c6e54['uniqueid']===_0x5c6e54[_0x4568('0x40')]||this[_0x4568('0x4b')][_0x5c6e54[_0x4568('0x40')]]){_0x5c6e54[_0x4568('0x4c')]=_0x5c6e54['application'][_0x4568('0x4d')]();_0x5c6e54[_0x4568('0x4e')]=_0x5c6e54[_0x4568('0x4f')]||_0x5c6e54[_0x4568('0x4e')];if(_0x5c6e54[_0x4568('0x4f')]&&!_0x5c6e54[_0x4568('0x4f')][_0x4568('0x50')](_0x4568('0x51'))&&_0x5c6e54[_0x4568('0x4c')]!=='queue'){_0x5c6e54['applicationdata']=_0x5c6e54[_0x4568('0x4e')][_0x4568('0x4d')]();}logger[_0x4568('0x25')](_0x4568('0x52'),_0x5c6e54[_0x4568('0x31')],_0x5c6e54[_0x4568('0x4c')],_0x5c6e54[_0x4568('0x4e')]);if(_[_0x4568('0x2c')](this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]])){this['channels'][_0x5c6e54[_0x4568('0x31')]]=new Channel();this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]]['starttime']=_0x5c6e54[_0x4568('0x53')]?moment()[_0x4568('0x54')](moment[_0x4568('0x53')](_0x5c6e54[_0x4568('0x53')])[_0x4568('0x55')](),_0x4568('0x55'))[_0x4568('0x38')](_0x4568('0x44')):moment()[_0x4568('0x38')](_0x4568('0x44'));this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]]['disposition']=_0x4568('0xb');}_['merge'](this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]],_['pick'](_0x5c6e54,_[_0x4568('0x48')](this['channels'][_0x5c6e54[_0x4568('0x31')]])));if(_['includes'](applications,_0x5c6e54[_0x4568('0x4c')])){this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]][_0x4568('0x56')]=_0x5c6e54[_0x4568('0x4c')];this[_0x4568('0x11')][_0x5c6e54[_0x4568('0x31')]][_0x4568('0x57')]=_0x5c6e54[_0x4568('0x4e')];if(_0x5c6e54['application']===_0x4568('0x7')&&_['startsWith'](_0x5c6e54[_0x4568('0x4e')][_0x4568('0x4d')](),_0x4568('0x58'))){var _0x52afac=_0x5c6e54[_0x4568('0x4e')]['split']('=');var _0x1988da=_0x52afac[0x0]['toLowerCase']()[_0x4568('0x59')](/cdr\((.*)\)/);if(_0x1988da){if(_0x1988da[0x1]===_0x4568('0x5a')&&!_[_0x4568('0x5b')](this['channels'][_0x5c6e54[_0x4568('0x31')]][_0x1988da[0x1]]))return;this['channels'][_0x5c6e54[_0x4568('0x31')]][_0x1988da[0x1]]=_0x52afac[0x1];}}else if(_0x5c6e54['application']===_0x4568('0x8')){this['channels'][_0x5c6e54[_0x4568('0x31')]][_0x4568('0x8')]=_0x5c6e54[_0x4568('0x4e')][_0x4568('0x35')](',')[0x0];}}}}}catch(_0x19beac){logger[_0x4568('0x28')](_0x4568('0x5c'),_0x5c6e54['uniqueid'],util[_0x4568('0x2a')](_0x19beac,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x1a')]=function(_0x2485dd){try{if(this['isNotNull'](_0x2485dd)){logger[_0x4568('0x25')](_0x4568('0x5d'),_0x2485dd['uniqueid'],_0x2485dd[_0x4568('0x40')],_0x2485dd['calleridname'],_0x2485dd[_0x4568('0x2e')]);logger['debug']('[%s][voiceCallReport][newstate]\x20event:',_0x2485dd[_0x4568('0x31')],util[_0x4568('0x2a')](_0x2485dd,{'showHidden':![],'depth':null}));if(_0x2485dd[_0x4568('0x46')]!=='6')return;if(_0x2485dd[_0x4568('0x31')]!==_0x2485dd['linkedid']){var _0x87862d=moment();if(this[_0x4568('0x11')][_0x2485dd['linkedid']]){if(!this[_0x4568('0x11')][_0x2485dd['linkedid']][_0x4568('0x5e')]){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]]['answered']=!![];this['channels'][_0x2485dd['linkedid']]['answertime']=_0x87862d['format'](_0x4568('0x44'));if(this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]][_0x4568('0x43')]){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]][_0x4568('0x5f')]=_0x87862d[_0x4568('0x60')](this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]][_0x4568('0x43')],_0x4568('0x55'));}}this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]]['linkedid']=_0x2485dd['uniqueid'];if(_0x2485dd[_0x4568('0x2e')]!==_0x4568('0x36')){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]]['connectedlinenum']=_0x2485dd[_0x4568('0x2e')];}this[_0x4568('0x11')][_0x2485dd['linkedid']][_0x4568('0x61')]=_0x2485dd['calleridname'];this['channels'][_0x2485dd['linkedid']]['destinationchannel']=_0x2485dd[_0x4568('0x34')];this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]][_0x4568('0x62')]=dispositions[_[_0x4568('0x45')](_0x2485dd[_0x4568('0x46')])];if(this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x40')]][_0x4568('0x63')]=this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')]['split']('-')[0x0]]['id'];this['channels'][_0x2485dd[_0x4568('0x40')]]['membername']=this['agents'][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['name'];}}if(this['channels'][_0x2485dd[_0x4568('0x31')]]){if(!this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x5e')]){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x31')]][_0x4568('0x5e')]=!![];this[_0x4568('0x11')][_0x2485dd['uniqueid']]['answertime']=_0x87862d[_0x4568('0x38')](_0x4568('0x44'));if(this[_0x4568('0x11')][_0x2485dd['uniqueid']][_0x4568('0x43')]){this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x5f')]=_0x87862d[_0x4568('0x60')](this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x43')],_0x4568('0x55'));}}if(_0x2485dd[_0x4568('0x2e')]!==_0x4568('0x36')){this[_0x4568('0x11')][_0x2485dd['uniqueid']][_0x4568('0x3c')]=_0x2485dd[_0x4568('0x2e')];}this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x61')]=_0x2485dd[_0x4568('0x64')];this[_0x4568('0x11')][_0x2485dd[_0x4568('0x31')]]['destinationchannel']=_0x2485dd[_0x4568('0x34')];this['channels'][_0x2485dd['uniqueid']]['disposition']=dispositions[_[_0x4568('0x45')](_0x2485dd[_0x4568('0x46')])];}}else{if(this[_0x4568('0x11')][_0x2485dd['uniqueid']]){if(this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]){this[_0x4568('0x11')][_0x2485dd[_0x4568('0x31')]]['UserId']=this['agents'][_0x2485dd['channel']['split']('-')[0x0]]['id'];this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x65')]=this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x66')];}}}if(_0x2485dd[_0x4568('0x32')]===_0x4568('0x33')){if(this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')]['split']('-')[0x0]]){this[_0x4568('0x12')][_0x2485dd['channel'][_0x4568('0x35')]('-')[0x0]][_0x4568('0x37')]=_0x2485dd[_0x4568('0x42')];var _0x14d567,_0x13b200;if(this['channels'][_0x2485dd['uniqueid']]){_0x14d567=this['channels'][_0x2485dd[_0x4568('0x31')]][_0x4568('0x67')];_0x13b200=this[_0x4568('0x11')][_0x2485dd[_0x4568('0x31')]]['queue'];}else if(this['channels'][_0x2485dd[_0x4568('0x40')]]){_0x14d567=this[_0x4568('0x11')][_0x2485dd['linkedid']][_0x4568('0x67')];_0x13b200=this[_0x4568('0x11')][_0x2485dd['linkedid']][_0x4568('0x8')];}this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x8')]=_0x13b200;this[_0x4568('0x12')][_0x2485dd['channel'][_0x4568('0x35')]('-')[0x0]][_0x4568('0x67')]=_0x14d567;logger[_0x4568('0x2f')](_0x4568('0x68'),_0x2485dd['uniqueid'],util[_0x4568('0x2a')]({'id':this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x3b')],'destconnectedlinenum':_0x2485dd['exten'],'routealias':_0x14d567,'queue':_0x13b200||undefined},{'showHidden':![],'depth':null}));this[_0x4568('0x2d')](util['format']('user:%s',this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x66')]),_0x4568('0x3a'),{'id':this['agents'][_0x2485dd[_0x4568('0x34')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0x4568('0x12')][_0x2485dd[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x3b')],'destconnectedlinenum':_0x2485dd['exten'],'routealias':_0x14d567,'queue':_0x13b200||undefined});}}}}catch(_0x3f2084){logger[_0x4568('0x28')](_0x4568('0x69'),_0x2485dd[_0x4568('0x31')],util[_0x4568('0x2a')](_0x3f2084,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x4568('0x6a')]=function(_0x199e97,_0x98187e){try{if(this[_0x4568('0x11')][_0x199e97]){logger[_0x4568('0x25')](_0x4568('0x6b'),_0x199e97,_0x98187e);this[_0x4568('0x11')][_0x199e97][_0x4568('0x6c')]=!![];if(_[_0x4568('0x6d')](_0x98187e,_0x4568('0x6e'))){_0x98187e=_0x98187e[_0x4568('0x6f')](_0x4568('0x6e'),_0x4568('0x70'));}this[_0x4568('0x11')][_0x199e97][_0x4568('0x71')]=_0x98187e;var _0x551195=_[_0x4568('0x72')](this[_0x4568('0x11')][_0x199e97]['monitors'],{'filename':_0x98187e});if(_[_0x4568('0x5b')](_0x551195)){this[_0x4568('0x11')][_0x199e97][_0x4568('0x73')][_0x4568('0x74')]({'filename':_0x98187e,'createdAt':moment()['format'](_0x4568('0x44')),'mixmonitorid':'','status':_0x4568('0x75')});}}}catch(_0x231ad4){logger[_0x4568('0x28')](_0x4568('0x76'),_0x199e97,util[_0x4568('0x2a')](_0x231ad4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x77')]=function(_0x26666d){try{if(this['isNotNull'](_0x26666d)){logger[_0x4568('0x2f')](_0x4568('0x78'),_0x26666d[_0x4568('0x31')],util['inspect'](_0x26666d,{'showHidden':![],'depth':null}));if(this['channels'][_0x26666d[_0x4568('0x31')]]&&_0x26666d[_0x4568('0x34')]!='OutgoingSpoolFailed'){if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')])){if(this['isNotNull'](_0x26666d[_0x4568('0x7a')][_0x4568('0x7b')])){logger[_0x4568('0x25')](_0x4568('0x7c'),_0x26666d['uniqueid'],_0x26666d['value']);this[_0x4568('0x6a')](_0x26666d[_0x4568('0x31')],_0x26666d['value']);}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')]['xmd-phone'])){logger[_0x4568('0x25')](_0x4568('0x7d'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]][_0x4568('0x2e')]=_0x26666d['value'];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')][_0x4568('0x7f')])){logger[_0x4568('0x25')](_0x4568('0x80'),_0x26666d['uniqueid'],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d['uniqueid']]['callerid']=_0x26666d[_0x4568('0x7e')];}else if(this[_0x4568('0x79')](_0x26666d['variable'][_0x4568('0x81')])){logger[_0x4568('0x25')](_0x4568('0x82'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]][_0x4568('0x5a')]=_0x26666d[_0x4568('0x7e')];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')][_0x4568('0x83')])){logger[_0x4568('0x25')](_0x4568('0x84'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')][_0x4568('0x35')](',')[0x0]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]][_0x4568('0x8')]=_0x26666d['value'][_0x4568('0x35')](',')[0x0];}else if(this['isNotNull'](_0x26666d[_0x4568('0x7a')][_0x4568('0x85')])){logger[_0x4568('0x25')](_0x4568('0x86'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]][_0x4568('0x87')]=_0x26666d[_0x4568('0x7e')];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')][_0x4568('0x88')])){logger[_0x4568('0x25')](_0x4568('0x89'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]]['destination']=_0x26666d[_0x4568('0x7e')];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')][_0x4568('0x8a')])){logger[_0x4568('0x25')](_0x4568('0x8b'),_0x26666d[_0x4568('0x31')],_0x26666d['value']);this[_0x4568('0x11')][_0x26666d['uniqueid']][_0x4568('0x8c')]=_0x26666d['value'];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')]['xmcs-queue'])){logger['info'](_0x4568('0x8d'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x11')][_0x26666d[_0x4568('0x31')]][_0x4568('0x8')]=_0x26666d['value'];}else if(this[_0x4568('0x79')](_0x26666d[_0x4568('0x7a')]['sipcallid'])){logger[_0x4568('0x25')](_0x4568('0x8e'),_0x26666d[_0x4568('0x31')],_0x26666d[_0x4568('0x7e')]);this['channels'][_0x26666d[_0x4568('0x31')]][_0x4568('0x8f')]=_0x26666d[_0x4568('0x7e')];}}}else if(this[_0x4568('0x79')](_0x26666d['variable'][_0x4568('0x7b')])){if(_0x26666d['value']){var _0x199a7c=path[_0x4568('0x90')](_0x26666d[_0x4568('0x7e')])[_0x4568('0x66')];logger['info'](_0x4568('0x7c'),_0x199a7c,_0x26666d[_0x4568('0x7e')]);this[_0x4568('0x6a')](_0x199a7c,_0x26666d[_0x4568('0x7e')]);}}else if(this[_0x4568('0x11')][_0x26666d[_0x4568('0x40')]]){if(this['isNotNull'](_0x26666d[_0x4568('0x7a')])){if(this['isNotNull'](_0x26666d['variable']['sipcallid'])){logger[_0x4568('0x25')](_0x4568('0x8e'),_0x26666d[_0x4568('0x40')],_0x26666d[_0x4568('0x7e')]);this['channels'][_0x26666d[_0x4568('0x40')]][_0x4568('0x91')]=_0x26666d[_0x4568('0x7e')];}}}}}catch(_0x5801bb){logger['error'](_0x4568('0x92'),_0x26666d[_0x4568('0x31')],util['inspect'](_0x5801bb,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')]['syncHangup']=function(_0xb51777){try{if(this[_0x4568('0x79')](_0xb51777)){logger[_0x4568('0x2f')](_0x4568('0x93'),_0xb51777[_0x4568('0x31')],util[_0x4568('0x2a')](_0xb51777,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0xb51777[_0x4568('0x40')]]){if(this['channels'][this[_0x4568('0x4b')][_0xb51777['linkedid']]['linkedid']]){this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x40')]][_0x4568('0x31')]=_0xb51777['uniqueid'];this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]]['linkedid']][_0x4568('0x5e')]=this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x5e')];this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x40')]][_0x4568('0x94')]=this['channels'][_0xb51777[_0x4568('0x31')]][_0x4568('0x94')];this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x40')]]['destinationchannel']=this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x40')]][_0x4568('0x34')];this[_0x4568('0x11')][this['blindTransfers'][_0xb51777[_0x4568('0x40')]]['linkedid']]['disposition']=this['channels'][_0xb51777['uniqueid']][_0x4568('0x62')];this[_0x4568('0x11')][_0xb51777['uniqueid']]=this[_0x4568('0x11')][this['blindTransfers'][_0xb51777['linkedid']][_0x4568('0x40')]];delete this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x40')]];}else if(this['channels'][this['blindTransfers'][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]]){this['channels'][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]]['uniqueid']=[this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]][_0x4568('0x40')],this[_0x4568('0x11')][this['blindTransfers'][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]]['linkedid']=this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777['linkedid']][_0x4568('0x31')]][_0x4568('0x31')]][0x0];this[_0x4568('0x11')][this['blindTransfers'][_0xb51777['linkedid']][_0x4568('0x31')]][_0x4568('0x5e')]=this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x5e')];this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777['linkedid']][_0x4568('0x31')]]['answertime']=this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x94')];this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]][_0x4568('0x95')]=this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]]['uniqueid']][_0x4568('0x34')];this['channels'][this[_0x4568('0x4b')][_0xb51777['linkedid']][_0x4568('0x31')]]['disposition']=this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x62')];this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]=this[_0x4568('0x11')][this[_0x4568('0x4b')][_0xb51777['linkedid']][_0x4568('0x31')]];delete this['channels'][this[_0x4568('0x4b')][_0xb51777[_0x4568('0x40')]][_0x4568('0x31')]];}}if(this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]){logger[_0x4568('0x25')]('[%s][voiceCallReport][hangup]\x20reason:%s',_0xb51777[_0x4568('0x31')],_0xb51777[_0x4568('0x96')]);var _0x4c2132=moment();this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x97')]=_0x4c2132['format'](_0x4568('0x44'));this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x53')]=_0x4c2132['diff'](this['channels'][_0xb51777[_0x4568('0x31')]]['starttime'],'seconds');if(this['channels'][_0xb51777[_0x4568('0x31')]]['answered']){this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x98')]=_0x4c2132[_0x4568('0x60')](this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x94')],_0x4568('0x55'));this['channels'][_0xb51777[_0x4568('0x31')]][_0x4568('0x5f')]=this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]['duration']-this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]['billableseconds'];}if(_0xb51777[_0x4568('0x32')]===_0x4568('0x33')){if(this[_0x4568('0x12')][_0xb51777[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]){this[_0x4568('0x12')][_0xb51777['channel']['split']('-')[0x0]]=_[_0x4568('0x99')](this['agents'][_0xb51777[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]],[_0x4568('0x37')]);logger['debug'](_0x4568('0x9a'),_0xb51777[_0x4568('0x31')],util[_0x4568('0x2a')]({'id':this['agents'][_0xb51777[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['id'],'destaccountcode':this[_0x4568('0x12')][_0xb51777[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x4568('0x39'),this['agents'][_0xb51777[_0x4568('0x34')][_0x4568('0x35')]('-')[0x0]][_0x4568('0x66')]),_0x4568('0x9b'),{'id':this['agents'][_0xb51777['channel']['split']('-')[0x0]]['id'],'destaccountcode':this[_0x4568('0x12')][_0xb51777['channel'][_0x4568('0x35')]('-')[0x0]][_0x4568('0x3b')]});for(var _0x49b0f8=0x0;_0x49b0f8<Object['keys'](this[_0x4568('0x12')])['length'];_0x49b0f8++){var _0x22bd95=Object[_0x4568('0x48')](this[_0x4568('0x12')])[_0x49b0f8];var _0x5264cf=this[_0x4568('0x12')][_0x22bd95];if(_0x5264cf[_0x4568('0x3b')]===Number(_0xb51777[_0x4568('0x3c')])){this[_0x4568('0x2d')](util[_0x4568('0x38')](_0x4568('0x39'),_0x5264cf['name']),'user:agentcomplete',{'id':_0x5264cf['id'],'destaccountcode':_0x5264cf[_0x4568('0x3b')],'transfer':this[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x9c')]});break;}}}}var _0x5c0cb3=this;Promise[_0x4568('0x9d')]()[_0x4568('0x9e')](function(){var _0x340799=_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]];if(typeof _0x340799[_0x4568('0x9c')]==='undefined')return;if(_['isEmpty'](_0x340799['monitors']))return;return RpcSetting[_0x4568('0x9f')]()[_0x4568('0x9e')](function(_0x4e8f6a){if(!_0x4e8f6a[_0x4568('0xa0')])return;return Promise['resolve']()[_0x4568('0x9e')](function(){return ami['Action']({'action':_0x4568('0xa1'),'channel':_0x340799[_0x4568('0x34')]})[_0x4568('0xa2')](function(){});})[_0x4568('0x9e')](function(){return ami[_0x4568('0xa3')]({'action':_0x4568('0xa1'),'channel':_0x340799[_0x4568('0x95')]})[_0x4568('0xa2')](function(){})[_0x4568('0xa4')](function(){var _0x870cdb=_0x5c0cb3[_0x4568('0x12')][_0x340799[_0x4568('0x95')][_0x4568('0x35')]('-')[0x0]];if(!_0x870cdb)return;io[_0x4568('0x2d')](_0x4568('0xa5'),{'agentId':_0x870cdb['id'],'uniqueid':_0x340799[_0x4568('0x31')]});});});});})[_0x4568('0x9e')](function(){if(_0xb51777[_0x4568('0xa6')]===_0x4568('0xa7')){_0x5c0cb3[_0x4568('0x4b')][_0xb51777['uniqueid']]=_0xb51777;}else{if(_0x5c0cb3['channels'][_0xb51777[_0x4568('0x31')]]['type']==='outbound'&&_0x5c0cb3['blindTransfers'][_0xb51777[_0x4568('0x31')]]){_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]['uniqueid']=[_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x40')],_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x40')]=_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]][_0x4568('0x31')]][0x0];delete _0x5c0cb3[_0x4568('0x4b')][_0xb51777[_0x4568('0x31')]];}}logger[_0x4568('0x2f')]('[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:',_0xb51777[_0x4568('0x31')],util[_0x4568('0x2a')](_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceCallReport',_0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]]);delete _0x5c0cb3[_0x4568('0x11')][_0xb51777[_0x4568('0x31')]];});}}}catch(_0x55188a){logger[_0x4568('0x28')](_0x4568('0xa8'),_0xb51777[_0x4568('0x31')],util[_0x4568('0x2a')](_0x55188a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')]['syncAttendedTransfer']=function(_0x158fb7){try{if(this[_0x4568('0x79')](_0x158fb7)){logger[_0x4568('0x25')](_0x4568('0xa9'),_0x158fb7[_0x4568('0x31')],_0x158fb7[_0x4568('0xaa')],_0x158fb7[_0x4568('0xab')]);logger[_0x4568('0x2f')]('[%s][voiceCallReport][attendedtransfer]\x20event:',_0x158fb7[_0x4568('0x31')],util[_0x4568('0x2a')](_0x158fb7,{'showHidden':![],'depth':null}));var _0x1b9dd9;if(this[_0x4568('0x11')][_0x158fb7[_0x4568('0xac')]]){this[_0x4568('0x11')][_0x158fb7[_0x4568('0xac')]][_0x4568('0xad')]=_0x158fb7['origtransferercalleridnum'];this['channels'][_0x158fb7[_0x4568('0xac')]][_0x4568('0xae')]=_0x158fb7[_0x4568('0xab')];if(this[_0x4568('0x11')][_0x158fb7[_0x4568('0xaf')]]){_0x1b9dd9=this[_0x4568('0x11')][_0x158fb7[_0x4568('0xaf')]];this['channels'][_0x158fb7[_0x4568('0xaf')]]=this[_0x4568('0x11')][_0x158fb7[_0x4568('0xac')]];this[_0x4568('0x11')][_0x158fb7[_0x4568('0xac')]]=_0x1b9dd9;}this['channels'][_0x158fb7[_0x4568('0xaf')]]['transferType']=_0x4568('0xb0');}else if(this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb1')]]){this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb1')]][_0x4568('0xad')]=_0x158fb7[_0x4568('0xaa')];this['channels'][_0x158fb7[_0x4568('0xb1')]][_0x4568('0xae')]=_0x158fb7[_0x4568('0xab')];if(this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb2')]]){_0x1b9dd9=this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb2')]];this['channels'][_0x158fb7[_0x4568('0xb2')]]=this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb1')]];this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb1')]]=_0x1b9dd9;}this['channels'][_0x158fb7[_0x4568('0xb1')]][_0x4568('0x9c')]=_0x4568('0xb0');}if((this['channels'][_0x158fb7[_0x4568('0xb2')]]||this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb3')]])&&this[_0x4568('0x11')][_0x158fb7[_0x4568('0xaf')]]){var _0x36dc46=_[_0x4568('0xb4')]([this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb2')]],this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb3')]],this[_0x4568('0x11')][_0x158fb7['secondtransfereruniqueid']]],function(_0x511eb3){return _0x511eb3&&_0x511eb3[_0x4568('0x5a')]===_0x4568('0xb5')&&_0x511eb3[_0x4568('0xb6')];});if(_0x36dc46){if(this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb2')]])this['channels'][_0x158fb7[_0x4568('0xb2')]][_0x4568('0x9c')]='ATTENDED';if(this[_0x4568('0x11')][_0x158fb7['origtransfererlinkedid']])this[_0x4568('0x11')][_0x158fb7[_0x4568('0xb3')]]['transferType']=_0x4568('0xb0');this[_0x4568('0x11')][_0x158fb7[_0x4568('0xaf')]][_0x4568('0x9c')]=_0x4568('0xb0');}}}}catch(_0x5a691d){logger[_0x4568('0x28')](_0x4568('0xb7'),_0x158fb7[_0x4568('0x31')],util['inspect'](_0x5a691d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0xb8')]=function(_0x3bea71){try{if(this[_0x4568('0x79')](_0x3bea71)){logger['info'](_0x4568('0xb9'),_0x3bea71[_0x4568('0x31')],_0x3bea71[_0x4568('0xba')],_0x3bea71['extension']);logger['debug'](_0x4568('0xbb'),_0x3bea71[_0x4568('0x31')],util[_0x4568('0x2a')](_0x3bea71,{'showHidden':![],'depth':null}));if(this[_0x4568('0x11')][_0x3bea71[_0x4568('0xac')]]){this[_0x4568('0x11')][_0x3bea71[_0x4568('0xac')]][_0x4568('0xad')]=_0x3bea71['transfereecalleridnum'];this[_0x4568('0x11')][_0x3bea71[_0x4568('0xac')]]['transferconnectedlinenum']=_0x3bea71['extension'];this[_0x4568('0x11')][_0x3bea71['transfereeuniqueid']][_0x4568('0x9c')]=_0x4568('0xbc');this[_0x4568('0x1d')]({'event':_0x4568('0xa7'),'uniqueid':_0x3bea71[_0x4568('0xac')],'linkedid':_0x3bea71[_0x4568('0xbd')],'context':_0x3bea71[_0x4568('0x32')],'channel':_0x3bea71[_0x4568('0xbe')]});}else{this[_0x4568('0x11')][_0x3bea71[_0x4568('0xbd')]]['transferType']=_0x4568('0xbc');this[_0x4568('0x1d')]({'event':_0x4568('0xa7'),'uniqueid':_0x3bea71[_0x4568('0xbd')],'linkedid':_0x3bea71['transfereeuniqueid'],'context':_0x3bea71[_0x4568('0x32')],'channel':_0x3bea71[_0x4568('0xbe')]});}}}catch(_0x53ea0d){logger[_0x4568('0x28')](_0x4568('0xbf'),_0x3bea71['uniqueid'],util[_0x4568('0x2a')](_0x53ea0d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x22')]=function(_0x5e0b5c){try{if(this[_0x4568('0x79')](_0x5e0b5c)){logger[_0x4568('0x2f')](_0x4568('0xc0'),_0x5e0b5c[_0x4568('0x31')],util['inspect'](_0x5e0b5c,{'showHidden':![],'depth':null}));if(this[_0x4568('0x11')][_0x5e0b5c[_0x4568('0x31')]]){if(!_[_0x4568('0x5b')](this['channels'][_0x5e0b5c['uniqueid']]['answertime'])){this[_0x4568('0x11')][_0x5e0b5c[_0x4568('0x31')]][_0x4568('0xc1')]=moment()[_0x4568('0x38')](_0x4568('0x44'));logger[_0x4568('0x25')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x5e0b5c[_0x4568('0x31')],this[_0x4568('0x11')][_0x5e0b5c['uniqueid']][_0x4568('0xc1')]);}}}}catch(_0x3d29c9){logger['error'](_0x4568('0xc2'),_0x5e0b5c[_0x4568('0x31')],util[_0x4568('0x2a')](_0x3d29c9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x4568('0x2b')][_0x4568('0x24')]=function(_0x5ef2d2){try{if(this[_0x4568('0x79')](_0x5ef2d2)){logger[_0x4568('0x2f')](_0x4568('0xc3'),_0x5ef2d2['uniqueid'],util[_0x4568('0x2a')](_0x5ef2d2,{'showHidden':![],'depth':null}));if(this[_0x4568('0x11')][_0x5ef2d2['uniqueid']]){if(!_[_0x4568('0x5b')](this['channels'][_0x5ef2d2[_0x4568('0x31')]][_0x4568('0xc1')])){this[_0x4568('0x11')][_0x5ef2d2[_0x4568('0x31')]]['mohtime']+=moment()[_0x4568('0xc4')](0x0)[_0x4568('0x60')](this[_0x4568('0x11')][_0x5ef2d2[_0x4568('0x31')]]['mohstarttime'],_0x4568('0x55'));logger[_0x4568('0x25')]('[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s',_0x5ef2d2[_0x4568('0x31')],this[_0x4568('0x11')][_0x5ef2d2['uniqueid']][_0x4568('0xc5')]);delete this[_0x4568('0x11')][_0x5ef2d2[_0x4568('0x31')]][_0x4568('0xc1')];}}}}catch(_0x587f85){logger[_0x4568('0x28')]('[%s][voiceCallReport][musiconholdstop]',_0x5ef2d2[_0x4568('0x31')],util[_0x4568('0x2a')](_0x587f85,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
+var _0x6e77=['[%s][voiceCallReport][hangup]','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','transfertargetcalleridnum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','some','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','[%s][voiceCallReport][blindtransfer]\x20event:','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','queue','dial','voicemail','NO\x20ANSWER','FAILED','ANSWERED','BUSY','defaults','redis','localhost','socket.io-emitter','channels','agents','blindTransfers','syncNewExten','newexten','bind','newchannel','syncNewChannel','newstate','varset','syncVarSet','newcallerid','syncNewCallerId','syncAttendedTransfer','syncBlindTransfer','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','inspect','isNotNull','isUndefined','emit','prototype','uniqueid','calleridname','debug','[%s][voiceCallReport][newcallerid]\x20event:','linkedid','merge','pick','keys','context','from-sip','channel','split','exten','xcally-motion-preview','destconnectedlinenum','format','name','user:agentconnect','accountcode','error','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime','YYYY-MM-DD\x20HH:mm:ss','disposition','channelstate','undefined','user:%s','[%s][voiceCallReport][newchannel]','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','duration','seconds','includes','lastapplication','startsWith','cdr(','match','type','isNil','syncNewState','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridnum','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','diff','connectedlinenum','destinationchannel','toNumber','UserId','membername','holdtime','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','syncMixMonitorFilename','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','endsWith','.wav49','.WAV','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','value','xmd-phone','xmd-callerid','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','xmd-queue','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-originatecalleridnum','[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','originatecalleridnum','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcalluniqueid','parse','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','[%s][voiceCallReport][varset]','syncHangup','[%s][voiceCallReport][hangup]\x20event:','[%s][voiceCallReport][hangup]\x20reason:%s','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','transferType','resolve','then','isEmpty','getSettings','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','event','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:'];(function(_0x113af6,_0x4f12e4){var _0x1cff97=function(_0x54ab79){while(--_0x54ab79){_0x113af6['push'](_0x113af6['shift']());}};_0x1cff97(++_0x4f12e4);}(_0x6e77,0x1af));var _0x76e7=function(_0x593310,_0x17b9e9){_0x593310=_0x593310-0x0;var _0x1ea007=_0x6e77[_0x593310];return _0x1ea007;};'use strict';var _=require('lodash');var moment=require(_0x76e7('0x0'));var util=require(_0x76e7('0x1'));var path=require('path');var Redis=require(_0x76e7('0x2'));var config=require(_0x76e7('0x3'));var logger=require(_0x76e7('0x4'))(_0x76e7('0x5'));var ami=require('../ami');var Channel=require(_0x76e7('0x6'));var RpcSetting=require(_0x76e7('0x7'));var applications=[_0x76e7('0x8'),_0x76e7('0x9'),'agi',_0x76e7('0xa'),'playback',_0x76e7('0xb')];var dispositions=[_0x76e7('0xc'),_0x76e7('0xd'),_0x76e7('0xd'),_0x76e7('0xc'),'NO\x20ANSWER',_0x76e7('0xc'),_0x76e7('0xe'),_0x76e7('0xf'),_0x76e7('0xd'),_0x76e7('0xd'),_0x76e7('0xd')];config['redis']=_[_0x76e7('0x10')](config[_0x76e7('0x11')],{'host':_0x76e7('0x12'),'port':0x18eb});var io=require(_0x76e7('0x13'))(new Redis(config['redis']));function VoiceCallReport(_0x299457){this[_0x76e7('0x14')]=_0x299457['channels'];this[_0x76e7('0x15')]=_0x299457['agents'];this[_0x76e7('0x16')]={};ami['on']('coreshowchannel',this[_0x76e7('0x17')]['bind'](this));ami['on'](_0x76e7('0x18'),this['syncNewExten'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1a'),this[_0x76e7('0x1b')][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1c'),this['syncNewState'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1d'),this[_0x76e7('0x1e')][_0x76e7('0x19')](this));ami['on']('hangup',this['syncHangup'][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x1f'),this[_0x76e7('0x20')][_0x76e7('0x19')](this));ami['on']('attendedtransfer',this[_0x76e7('0x21')][_0x76e7('0x19')](this));ami['on']('blindtransfer',this[_0x76e7('0x22')][_0x76e7('0x19')](this));ami['on']('musiconholdstart',this[_0x76e7('0x23')][_0x76e7('0x19')](this));ami['on'](_0x76e7('0x24'),this[_0x76e7('0x25')]['bind'](this));try{logger[_0x76e7('0x26')](_0x76e7('0x27'));ami[_0x76e7('0x28')]();}catch(_0x473929){logger['error']('[voiceCallReport][coreshowchannels]',util[_0x76e7('0x29')](_0x473929,{'showHidden':![],'depth':null}));}}VoiceCallReport['prototype'][_0x76e7('0x2a')]=function(_0x438bfa){return _0x438bfa!==null&&!_[_0x76e7('0x2b')](_0x438bfa);};VoiceCallReport['prototype'][_0x76e7('0x2c')]=function(_0x1f601f,_0x1d6fee,_0x5f0acb){io['to'](_0x1f601f)[_0x76e7('0x2c')](_0x1d6fee,_0x5f0acb);};VoiceCallReport[_0x76e7('0x2d')]['syncNewCallerId']=function(_0x2451ba){try{if(this['isNotNull'](_0x2451ba)){logger[_0x76e7('0x26')]('[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s',_0x2451ba[_0x76e7('0x2e')],_0x2451ba[_0x76e7('0x2f')],_0x2451ba['calleridnum']);logger[_0x76e7('0x30')](_0x76e7('0x31'),_0x2451ba[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x2451ba,{'showHidden':![],'depth':null}));if(_0x2451ba[_0x76e7('0x2e')]===_0x2451ba[_0x76e7('0x32')]){if(!_[_0x76e7('0x2b')](this[_0x76e7('0x14')][_0x2451ba['uniqueid']])){_[_0x76e7('0x33')](this['channels'][_0x2451ba[_0x76e7('0x2e')]],_[_0x76e7('0x34')](_0x2451ba,_[_0x76e7('0x35')](this[_0x76e7('0x14')][_0x2451ba[_0x76e7('0x2e')]])));}}if(_0x2451ba[_0x76e7('0x36')]===_0x76e7('0x37')){if(this['agents'][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]){if(_0x2451ba[_0x76e7('0x3a')]==_0x76e7('0x3b')){this[_0x76e7('0x15')][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x3c')]=_0x2451ba['connectedlinenum'];this[_0x76e7('0x2c')](util[_0x76e7('0x3d')]('user:%s',this[_0x76e7('0x15')][_0x2451ba[_0x76e7('0x38')]['split']('-')[0x0]][_0x76e7('0x3e')]),_0x76e7('0x3f'),{'destaccountcode':this['agents'][_0x2451ba[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x40')],'destconnectedlinenum':_0x2451ba['connectedlinenum']});}}}}}catch(_0x4d157b){logger[_0x76e7('0x41')]('[%s][voiceCallReport][newcallerid]',_0x2451ba[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x4d157b,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x1b')]=function(_0x420a7f){try{if(this[_0x76e7('0x2a')](_0x420a7f)){logger[_0x76e7('0x30')](_0x76e7('0x42'),_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x420a7f,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]]){return;}if(_0x420a7f[_0x76e7('0x38')]===_0x76e7('0x43')){return;}if(_0x420a7f[_0x76e7('0x2e')]!==_0x420a7f[_0x76e7('0x32')]&&!this[_0x76e7('0x16')][_0x420a7f[_0x76e7('0x32')]]){return;}logger[_0x76e7('0x26')](_0x76e7('0x44'),_0x420a7f['uniqueid'],_0x420a7f['context'],_0x420a7f[_0x76e7('0x3a')]);this[_0x76e7('0x14')][_0x420a7f['uniqueid']]=new Channel();this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]][_0x76e7('0x45')]=moment()['format'](_0x76e7('0x46'));this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]][_0x76e7('0x47')]=dispositions[_['toNumber'](_0x420a7f[_0x76e7('0x48')])];_[_0x76e7('0x33')](this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]],_[_0x76e7('0x34')](_0x420a7f,_['keys'](this[_0x76e7('0x14')][_0x420a7f[_0x76e7('0x2e')]])));if(_0x420a7f[_0x76e7('0x36')]==='from-sip'){var _0x47d6c7=this[_0x76e7('0x15')][_0x420a7f[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]];if(_0x47d6c7&&typeof _0x47d6c7['destconnectedlinenum']===_0x76e7('0x49')){_0x47d6c7[_0x76e7('0x3c')]=_0x420a7f[_0x76e7('0x3a')];logger[_0x76e7('0x30')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')]({'id':_0x47d6c7['id'],'destaccountcode':_0x47d6c7[_0x76e7('0x40')],'destconnectedlinenum':_0x420a7f['exten']},{'showHidden':![],'depth':null}));this['emit'](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x47d6c7[_0x76e7('0x3e')]),_0x76e7('0x3f'),{'id':_0x47d6c7['id'],'destaccountcode':_0x47d6c7['accountcode'],'destconnectedlinenum':_0x420a7f[_0x76e7('0x3a')]});}}}}catch(_0x5669a0){logger[_0x76e7('0x41')](_0x76e7('0x4b'),_0x420a7f[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x5669a0,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x17')]=function(_0x3a2039){try{if(this[_0x76e7('0x2a')](_0x3a2039)){logger[_0x76e7('0x30')]('[%s][voiceCallReport][newexten]\x20event:',_0x3a2039[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x3a2039,{'showHidden':![],'depth':null}));if(_0x3a2039[_0x76e7('0x38')]===_0x76e7('0x43')||_0x3a2039[_0x76e7('0x3a')]==='h')return;if(_0x3a2039[_0x76e7('0x2e')]===_0x3a2039[_0x76e7('0x32')]||this['blindTransfers'][_0x3a2039[_0x76e7('0x32')]]){_0x3a2039[_0x76e7('0x4c')]=_0x3a2039[_0x76e7('0x4c')][_0x76e7('0x4d')]();_0x3a2039[_0x76e7('0x4e')]=_0x3a2039['appdata']||_0x3a2039[_0x76e7('0x4e')];if(_0x3a2039[_0x76e7('0x4f')]&&!_0x3a2039[_0x76e7('0x4f')]['startsWith'](_0x76e7('0x50'))&&_0x3a2039[_0x76e7('0x4c')]!==_0x76e7('0x9')){_0x3a2039['applicationdata']=_0x3a2039[_0x76e7('0x4e')]['toLowerCase']();}logger[_0x76e7('0x26')](_0x76e7('0x51'),_0x3a2039['uniqueid'],_0x3a2039[_0x76e7('0x4c')],_0x3a2039[_0x76e7('0x4e')]);if(_[_0x76e7('0x2b')](this['channels'][_0x3a2039[_0x76e7('0x2e')]])){this['channels'][_0x3a2039[_0x76e7('0x2e')]]=new Channel();this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x76e7('0x45')]=_0x3a2039['duration']?moment()['subtract'](moment[_0x76e7('0x52')](_0x3a2039[_0x76e7('0x52')])[_0x76e7('0x53')](),_0x76e7('0x53'))['format'](_0x76e7('0x46')):moment()[_0x76e7('0x3d')](_0x76e7('0x46'));this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x76e7('0x47')]='NO\x20ANSWER';}_['merge'](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]],_['pick'](_0x3a2039,_[_0x76e7('0x35')](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]])));if(_[_0x76e7('0x54')](applications,_0x3a2039[_0x76e7('0x4c')])){this[_0x76e7('0x14')][_0x3a2039['uniqueid']][_0x76e7('0x55')]=_0x3a2039[_0x76e7('0x4c')];this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]]['lastdata']=_0x3a2039[_0x76e7('0x4e')];if(_0x3a2039[_0x76e7('0x4c')]===_0x76e7('0x8')&&_[_0x76e7('0x56')](_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x4d')](),_0x76e7('0x57'))){var _0x541eb2=_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x39')]('=');var _0x3430f2=_0x541eb2[0x0][_0x76e7('0x4d')]()[_0x76e7('0x58')](/cdr\((.*)\)/);if(_0x3430f2){if(_0x3430f2[0x1]===_0x76e7('0x59')&&!_[_0x76e7('0x5a')](this[_0x76e7('0x14')][_0x3a2039[_0x76e7('0x2e')]][_0x3430f2[0x1]]))return;this['channels'][_0x3a2039[_0x76e7('0x2e')]][_0x3430f2[0x1]]=_0x541eb2[0x1];}}else if(_0x3a2039[_0x76e7('0x4c')]==='queue'){this['channels'][_0x3a2039[_0x76e7('0x2e')]]['queue']=_0x3a2039[_0x76e7('0x4e')][_0x76e7('0x39')](',')[0x0];}}}}}catch(_0x117dc9){logger[_0x76e7('0x41')]('[%s][voiceCallReport][newexten]',_0x3a2039[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x117dc9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x5b')]=function(_0xb36fc4){try{if(this[_0x76e7('0x2a')](_0xb36fc4)){logger[_0x76e7('0x26')](_0x76e7('0x5c'),_0xb36fc4[_0x76e7('0x2e')],_0xb36fc4[_0x76e7('0x32')],_0xb36fc4[_0x76e7('0x2f')],_0xb36fc4[_0x76e7('0x5d')]);logger[_0x76e7('0x30')](_0x76e7('0x5e'),_0xb36fc4[_0x76e7('0x2e')],util['inspect'](_0xb36fc4,{'showHidden':![],'depth':null}));if(_0xb36fc4[_0x76e7('0x48')]!=='6')return;var _0x5559d5=this['agents'][_0xb36fc4[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]];if(_0xb36fc4[_0x76e7('0x2e')]!==_0xb36fc4['linkedid']){var _0x2b8d46=moment();if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]){if(!this['channels'][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x5f')]){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x5f')]=!![];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x60')]=_0x2b8d46[_0x76e7('0x3d')](_0x76e7('0x46'));if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]['starttime']){this[_0x76e7('0x14')][_0xb36fc4['linkedid']]['holdtime']=_0x2b8d46[_0x76e7('0x61')](this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x45')],_0x76e7('0x53'));}}this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x32')]=_0xb36fc4[_0x76e7('0x2e')];if(_0xb36fc4[_0x76e7('0x5d')]!==_0x76e7('0x3b')){this['channels'][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x62')]=_0xb36fc4[_0x76e7('0x5d')];}this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]['connectedlinename']=_0xb36fc4[_0x76e7('0x2f')];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x63')]=_0xb36fc4[_0x76e7('0x38')];this[_0x76e7('0x14')][_0xb36fc4['linkedid']]['disposition']=dispositions[_[_0x76e7('0x64')](_0xb36fc4[_0x76e7('0x48')])];if(_0x5559d5){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]][_0x76e7('0x65')]=_0x5559d5['id'];this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x66')]=_0x5559d5['name'];}}if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]){if(!this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x5f')]){this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x5f')]=!![];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]['answertime']=_0x2b8d46[_0x76e7('0x3d')](_0x76e7('0x46'));if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x45')]){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x67')]=_0x2b8d46[_0x76e7('0x61')](this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x45')],_0x76e7('0x53'));}}if(_0xb36fc4[_0x76e7('0x5d')]!==_0x76e7('0x3b')){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x62')]=_0xb36fc4[_0x76e7('0x5d')];}this['channels'][_0xb36fc4[_0x76e7('0x2e')]]['connectedlinename']=_0xb36fc4[_0x76e7('0x2f')];this['channels'][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x63')]=_0xb36fc4['channel'];this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x47')]=dispositions[_['toNumber'](_0xb36fc4[_0x76e7('0x48')])];}}else{if(this['channels'][_0xb36fc4[_0x76e7('0x2e')]]){if(_0x5559d5){this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x65')]=_0x5559d5['id'];this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x66')]=_0x5559d5['name'];}}}if(_0xb36fc4['context']===_0x76e7('0x37')){if(_0x5559d5){_0x5559d5[_0x76e7('0x3c')]=_0xb36fc4['exten'];var _0x1f6acc,_0x12a002;if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]]){_0x1f6acc=this[_0x76e7('0x14')][_0xb36fc4['uniqueid']][_0x76e7('0x68')];_0x12a002=this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x2e')]][_0x76e7('0x9')];}else if(this[_0x76e7('0x14')][_0xb36fc4[_0x76e7('0x32')]]){_0x1f6acc=this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x68')];_0x12a002=this[_0x76e7('0x14')][_0xb36fc4['linkedid']][_0x76e7('0x9')];}_0x5559d5[_0x76e7('0x9')]=_0x12a002;_0x5559d5['routealias']=_0x1f6acc;var _0x147392={'id':_0x5559d5['id'],'name':_0x5559d5[_0x76e7('0x3e')],'agentconnected':!![],'destaccountcode':_0x5559d5[_0x76e7('0x40')],'destconnectedlinenum':_0xb36fc4['exten'],'queue':_0x12a002||undefined,'routealias':_0x1f6acc,'uniqueid':_0xb36fc4[_0x76e7('0x32')]};logger['debug'](_0x76e7('0x69'),_0xb36fc4[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x147392,{'showHidden':![],'depth':null}));this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x5559d5[_0x76e7('0x3e')]),_0x76e7('0x3f'),_0x147392);}}}}catch(_0x30fb2e){logger[_0x76e7('0x41')](_0x76e7('0x6a'),_0xb36fc4[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x30fb2e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x6b')]=function(_0x31b877,_0x3f13a1){try{if(this[_0x76e7('0x14')][_0x31b877]){logger[_0x76e7('0x26')](_0x76e7('0x6c'),_0x31b877,_0x3f13a1);this[_0x76e7('0x14')][_0x31b877][_0x76e7('0x6d')]=!![];if(_[_0x76e7('0x6e')](_0x3f13a1,_0x76e7('0x6f'))){_0x3f13a1=_0x3f13a1['replace']('.wav49',_0x76e7('0x70'));}this[_0x76e7('0x14')][_0x31b877][_0x76e7('0x71')]=_0x3f13a1;var _0x25363b=_[_0x76e7('0x72')](this['channels'][_0x31b877][_0x76e7('0x73')],{'filename':_0x3f13a1});if(_[_0x76e7('0x5a')](_0x25363b)){this['channels'][_0x31b877]['monitors'][_0x76e7('0x74')]({'filename':_0x3f13a1,'createdAt':moment()['format'](_0x76e7('0x46')),'mixmonitorid':'','status':_0x76e7('0x75')});}}}catch(_0x5202d3){logger['error'](_0x76e7('0x76'),_0x31b877,util[_0x76e7('0x29')](_0x5202d3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')]['syncVarSet']=function(_0x3a81b1){try{if(this['isNotNull'](_0x3a81b1)){logger[_0x76e7('0x30')]('[%s][voiceCallReport][varset]\x20event:',_0x3a81b1[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x3a81b1,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x3a81b1['uniqueid']]&&_0x3a81b1['channel']!='OutgoingSpoolFailed'){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')])){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['mixmonitor_filename'])){logger[_0x76e7('0x26')](_0x76e7('0x78'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this['syncMixMonitorFilename'](_0x3a81b1['uniqueid'],_0x3a81b1[_0x76e7('0x79')]);}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7a')])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s',_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1['uniqueid']][_0x76e7('0x5d')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1['variable'][_0x76e7('0x7b')])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s',_0x3a81b1['uniqueid'],_0x3a81b1['value']);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x7c')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7d')])){logger[_0x76e7('0x26')](_0x76e7('0x7e'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1['uniqueid']][_0x76e7('0x59')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x7f')])){logger[_0x76e7('0x26')](_0x76e7('0x80'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]['split'](',')[0x0]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x9')]=_0x3a81b1['value'][_0x76e7('0x39')](',')[0x0];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x81')])){logger[_0x76e7('0x26')](_0x76e7('0x82'),_0x3a81b1['uniqueid'],_0x3a81b1[_0x76e7('0x79')]);this['channels'][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x83')]=_0x3a81b1['value'];}else if(this['isNotNull'](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x84')])){logger['info'](_0x76e7('0x85'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x86')]=_0x3a81b1[_0x76e7('0x79')];}else if(this[_0x76e7('0x2a')](_0x3a81b1['variable'][_0x76e7('0x87')])){logger[_0x76e7('0x26')](_0x76e7('0x88'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1['value']);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x89')]=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')][_0x76e7('0x8a')])){logger[_0x76e7('0x26')](_0x76e7('0x8b'),_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]]['queue']=_0x3a81b1['value'];}else if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['sipcallid'])){logger[_0x76e7('0x26')]('[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s',_0x3a81b1[_0x76e7('0x2e')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x2e')]][_0x76e7('0x8c')]=_0x3a81b1[_0x76e7('0x79')];}}}else if(this['isNotNull'](_0x3a81b1[_0x76e7('0x77')]['mixmonitor_filename'])){if(_0x3a81b1[_0x76e7('0x79')]){var _0x26a8c6=path[_0x76e7('0x8d')](_0x3a81b1[_0x76e7('0x79')])[_0x76e7('0x3e')];logger[_0x76e7('0x26')](_0x76e7('0x78'),_0x26a8c6,_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x6b')](_0x26a8c6,_0x3a81b1[_0x76e7('0x79')]);}}else if(this['channels'][_0x3a81b1[_0x76e7('0x32')]]){if(this[_0x76e7('0x2a')](_0x3a81b1['variable'])){if(this[_0x76e7('0x2a')](_0x3a81b1[_0x76e7('0x77')]['sipcallid'])){logger[_0x76e7('0x26')](_0x76e7('0x8e'),_0x3a81b1[_0x76e7('0x32')],_0x3a81b1[_0x76e7('0x79')]);this[_0x76e7('0x14')][_0x3a81b1[_0x76e7('0x32')]]['sipcalllinkedid']=_0x3a81b1['value'];}}}}}catch(_0xdbc008){logger[_0x76e7('0x41')](_0x76e7('0x8f'),_0x3a81b1[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0xdbc008,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x90')]=function(_0x151e29){try{if(this[_0x76e7('0x2a')](_0x151e29)){logger[_0x76e7('0x30')](_0x76e7('0x91'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x151e29,{'showHidden':![],'depth':null}));if(this['blindTransfers'][_0x151e29[_0x76e7('0x32')]]){if(this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]]){this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]]['uniqueid']=_0x151e29['uniqueid'];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x32')]]['answered']=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x5f')];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x32')]][_0x76e7('0x60')]=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x60')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]][_0x76e7('0x63')]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]]['linkedid']][_0x76e7('0x38')];this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']]['linkedid']][_0x76e7('0x47')]=this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['disposition'];this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]];delete this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x32')]];}else if(this['channels'][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]]){this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x2e')]=[this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]]['linkedid'],this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]][_0x76e7('0x32')]=this[_0x76e7('0x14')][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x2e')]][0x0];this['channels'][this[_0x76e7('0x16')][_0x151e29['linkedid']][_0x76e7('0x2e')]][_0x76e7('0x5f')]=this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x5f')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x60')]=this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x60')];this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x63')]=this['channels'][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x38')];this['channels'][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]][_0x76e7('0x47')]=this['channels'][_0x151e29['uniqueid']][_0x76e7('0x47')];this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]=this['channels'][this[_0x76e7('0x16')][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]];delete this[_0x76e7('0x14')][this['blindTransfers'][_0x151e29[_0x76e7('0x32')]][_0x76e7('0x2e')]];}}if(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]){logger[_0x76e7('0x26')](_0x76e7('0x92'),_0x151e29[_0x76e7('0x2e')],_0x151e29['cause-txt']);var _0x28f2ff=moment();this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x93')]=_0x28f2ff[_0x76e7('0x3d')](_0x76e7('0x46'));this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x52')]=_0x28f2ff[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x45')],_0x76e7('0x53'));if(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['answered']){this[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x94')]=_0x28f2ff[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['answertime'],_0x76e7('0x53'));this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x67')]=this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x52')]-this['channels'][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x94')];}if(_0x151e29[_0x76e7('0x36')]==='from-sip'){if(this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]){this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]=_[_0x76e7('0x95')](this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]],[_0x76e7('0x3c')]);logger[_0x76e7('0x30')](_0x76e7('0x96'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')]({'id':this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x151e29['channel'][_0x76e7('0x39')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x3e')]),_0x76e7('0x97'),{'id':this['agents'][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]]['id'],'destaccountcode':this[_0x76e7('0x15')][_0x151e29[_0x76e7('0x38')][_0x76e7('0x39')]('-')[0x0]][_0x76e7('0x40')]});for(var _0x13aedf=0x0;_0x13aedf<Object[_0x76e7('0x35')](this[_0x76e7('0x15')])['length'];_0x13aedf++){var _0x45d38c=Object[_0x76e7('0x35')](this['agents'])[_0x13aedf];var _0x339540=this['agents'][_0x45d38c];if(_0x339540[_0x76e7('0x40')]===Number(this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['connectedlinenum'])){this[_0x76e7('0x2c')](util[_0x76e7('0x3d')](_0x76e7('0x4a'),_0x339540[_0x76e7('0x3e')]),_0x76e7('0x97'),{'id':_0x339540['id'],'destaccountcode':_0x339540['accountcode'],'transfer':this[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]][_0x76e7('0x98')]});break;}}}}var _0x42b1d1=this;Promise[_0x76e7('0x99')]()[_0x76e7('0x9a')](function(){var _0x248f2d=_0x42b1d1['channels'][_0x151e29[_0x76e7('0x2e')]];if(typeof _0x248f2d['transferType']===_0x76e7('0x49'))return;if(_[_0x76e7('0x9b')](_0x248f2d[_0x76e7('0x73')]))return;return RpcSetting[_0x76e7('0x9c')]()['then'](function(_0x5c1121){if(!_0x5c1121['stopRecordingOnTransfer'])return;return Promise[_0x76e7('0x99')]()[_0x76e7('0x9a')](function(){return ami['Action']({'action':_0x76e7('0x9d'),'channel':_0x248f2d[_0x76e7('0x38')]})[_0x76e7('0x9e')](function(){});})['then'](function(){return ami[_0x76e7('0x9f')]({'action':'StopMixMonitor','channel':_0x248f2d[_0x76e7('0x63')]})[_0x76e7('0x9e')](function(){})[_0x76e7('0xa0')](function(){var _0xf785c9=_0x42b1d1[_0x76e7('0x15')][_0x248f2d[_0x76e7('0x63')][_0x76e7('0x39')]('-')[0x0]];if(!_0xf785c9)return;io[_0x76e7('0x2c')](_0x76e7('0xa1'),{'agentId':_0xf785c9['id'],'uniqueid':_0x248f2d[_0x76e7('0x2e')]});});});});})['then'](function(){if(_0x151e29[_0x76e7('0xa2')]===_0x76e7('0xa3')){_0x42b1d1[_0x76e7('0x16')][_0x151e29[_0x76e7('0x2e')]]=_0x151e29;}else{if(_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['type']===_0x76e7('0xa4')&&_0x42b1d1['blindTransfers'][_0x151e29[_0x76e7('0x2e')]]){_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x2e')]=[_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']][_0x76e7('0x32')],_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['linkedid']=_0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]]['uniqueid']][0x0];delete _0x42b1d1['blindTransfers'][_0x151e29[_0x76e7('0x2e')]];}}logger[_0x76e7('0x30')](_0x76e7('0xa5'),_0x151e29[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x42b1d1[_0x76e7('0x14')][_0x151e29['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x76e7('0x2c')]('custom:voiceCallReport',_0x42b1d1['channels'][_0x151e29[_0x76e7('0x2e')]]);delete _0x42b1d1[_0x76e7('0x14')][_0x151e29[_0x76e7('0x2e')]];});}}}catch(_0x2a60b1){logger[_0x76e7('0x41')](_0x76e7('0xa6'),_0x151e29['uniqueid'],util[_0x76e7('0x29')](_0x2a60b1,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x76e7('0x21')]=function(_0x5da5b8){try{if(this[_0x76e7('0x2a')](_0x5da5b8)){logger[_0x76e7('0x26')](_0x76e7('0xa7'),_0x5da5b8[_0x76e7('0x2e')],_0x5da5b8[_0x76e7('0xa8')],_0x5da5b8['transfertargetcalleridnum']);logger[_0x76e7('0x30')](_0x76e7('0xa9'),_0x5da5b8['uniqueid'],util[_0x76e7('0x29')](_0x5da5b8,{'showHidden':![],'depth':null}));var _0x559870;if(this['channels'][_0x5da5b8[_0x76e7('0xaa')]]){this['channels'][_0x5da5b8[_0x76e7('0xaa')]][_0x76e7('0xab')]=_0x5da5b8[_0x76e7('0xa8')];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xaa')]][_0x76e7('0xac')]=_0x5da5b8[_0x76e7('0xad')];if(this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']]){_0x559870=this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]]=this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xaa')]];this[_0x76e7('0x14')][_0x5da5b8['transfereeuniqueid']]=_0x559870;}this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]][_0x76e7('0x98')]=_0x76e7('0xaf');}else if(this['channels'][_0x5da5b8['transfertargetuniqueid']]){this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]]['transfercalleridnum']=_0x5da5b8['origtransferercalleridnum'];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]][_0x76e7('0xac')]=_0x5da5b8[_0x76e7('0xad')];if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]]){_0x559870=this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]];this['channels'][_0x5da5b8[_0x76e7('0xb1')]]=this[_0x76e7('0x14')][_0x5da5b8['transfertargetuniqueid']];this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb0')]]=_0x559870;}this[_0x76e7('0x14')][_0x5da5b8['transfertargetuniqueid']][_0x76e7('0x98')]=_0x76e7('0xaf');}if((this['channels'][_0x5da5b8[_0x76e7('0xb1')]]||this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]])&&this[_0x76e7('0x14')][_0x5da5b8['secondtransfereruniqueid']]){var _0x1f64ff=_[_0x76e7('0xb3')]([this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]],this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]],this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]]],function(_0x266642){return _0x266642&&_0x266642[_0x76e7('0x59')]===_0x76e7('0xa4')&&_0x266642['routeid'];});if(_0x1f64ff){if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb1')]])this['channels'][_0x5da5b8['origtransfereruniqueid']]['transferType']=_0x76e7('0xaf');if(this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]])this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xb2')]][_0x76e7('0x98')]=_0x76e7('0xaf');this[_0x76e7('0x14')][_0x5da5b8[_0x76e7('0xae')]][_0x76e7('0x98')]=_0x76e7('0xaf');}}}}catch(_0x396b3c){logger[_0x76e7('0x41')](_0x76e7('0xb4'),_0x5da5b8['uniqueid'],util[_0x76e7('0x29')](_0x396b3c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x22')]=function(_0x13e595){try{if(this[_0x76e7('0x2a')](_0x13e595)){logger[_0x76e7('0x26')](_0x76e7('0xb5'),_0x13e595[_0x76e7('0x2e')],_0x13e595[_0x76e7('0xb6')],_0x13e595['extension']);logger[_0x76e7('0x30')](_0x76e7('0xb7'),_0x13e595['uniqueid'],util['inspect'](_0x13e595,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]]){this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]][_0x76e7('0xab')]=_0x13e595[_0x76e7('0xb6')];this['channels'][_0x13e595['transfereeuniqueid']][_0x76e7('0xac')]=_0x13e595[_0x76e7('0xb8')];this[_0x76e7('0x14')][_0x13e595[_0x76e7('0xaa')]][_0x76e7('0x98')]=_0x76e7('0xb9');this[_0x76e7('0x90')]({'event':_0x76e7('0xa3'),'uniqueid':_0x13e595['transfereeuniqueid'],'linkedid':_0x13e595[_0x76e7('0xba')],'context':_0x13e595[_0x76e7('0x36')],'channel':_0x13e595[_0x76e7('0xbb')]});}else{this[_0x76e7('0x14')][_0x13e595['transfereruniqueid']][_0x76e7('0x98')]=_0x76e7('0xb9');this[_0x76e7('0x90')]({'event':_0x76e7('0xa3'),'uniqueid':_0x13e595[_0x76e7('0xba')],'linkedid':_0x13e595[_0x76e7('0xaa')],'context':_0x13e595['context'],'channel':_0x13e595[_0x76e7('0xbb')]});}}}catch(_0xd1d1d9){logger[_0x76e7('0x41')](_0x76e7('0xbc'),_0x13e595[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0xd1d1d9,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x23')]=function(_0x51a806){try{if(this[_0x76e7('0x2a')](_0x51a806)){logger[_0x76e7('0x30')](_0x76e7('0xbd'),_0x51a806['uniqueid'],util[_0x76e7('0x29')](_0x51a806,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]]){if(!_['isNil'](this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]][_0x76e7('0x60')])){this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]]['mohstarttime']=moment()['format'](_0x76e7('0x46'));logger[_0x76e7('0x26')](_0x76e7('0xbe'),_0x51a806[_0x76e7('0x2e')],this[_0x76e7('0x14')][_0x51a806[_0x76e7('0x2e')]][_0x76e7('0xbf')]);}}}}catch(_0x181c07){logger[_0x76e7('0x41')](_0x76e7('0xc0'),_0x51a806['uniqueid'],util[_0x76e7('0x29')](_0x181c07,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x76e7('0x2d')][_0x76e7('0x25')]=function(_0x330263){try{if(this['isNotNull'](_0x330263)){logger['debug'](_0x76e7('0xc1'),_0x330263['uniqueid'],util[_0x76e7('0x29')](_0x330263,{'showHidden':![],'depth':null}));if(this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]]){if(!_[_0x76e7('0x5a')](this[_0x76e7('0x14')][_0x330263['uniqueid']][_0x76e7('0xbf')])){this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xc2')]+=moment()[_0x76e7('0xc3')](0x0)[_0x76e7('0x61')](this[_0x76e7('0x14')][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xbf')],_0x76e7('0x53'));logger['info'](_0x76e7('0xc4'),_0x330263[_0x76e7('0x2e')],this['channels'][_0x330263[_0x76e7('0x2e')]][_0x76e7('0xc2')]);delete this[_0x76e7('0x14')][_0x330263['uniqueid']][_0x76e7('0xbf')];}}}}catch(_0x362067){logger[_0x76e7('0x41')](_0x76e7('0xc5'),_0x330263[_0x76e7('0x2e')],util[_0x76e7('0x29')](_0x362067,{'showHidden':![],'depth':null}));}};module[_0x76e7('0xc6')]=VoiceCallReport;
\ No newline at end of file
index 0fd944a..614ef89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x687b=['varset','syncVarSet','hangup','syncHangup','prototype','isUndefined','emit','isNotNull','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','inspect','merge','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','event','privilege','info','membername','interface','applications','voice:outbound','voice_outbound_channel:save','custom:dialbegin','[%s][voiceDialReport][dialbegin]','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','answertime','format','lastevent','connect','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','outboundrouteid','value','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqos','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','membercalls','memberdynamic','memberinterface','isNil','includes','[%s][voiceDialReport][hangup]\x20event:','cause-txt','endtime','duration','starttime','answered','holdtime','seconds','billableseconds','diff','sumHoldTime','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','custom:dialend','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','[%s][voiceDialReport][newexten]\x20event:','set','applicationdata','startsWith','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','ami','../ami','redis','defaults','localhost','socket.io-emitter','channels','outbound','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd'];(function(_0x537f51,_0x3c8cff){var _0x1d762a=function(_0xc94b24){while(--_0xc94b24){_0x537f51['push'](_0x537f51['shift']());}};_0x1d762a(++_0x3c8cff);}(_0x687b,0x14a));var _0xb687=function(_0x3afb73,_0xaa578f){_0x3afb73=_0x3afb73-0x0;var _0x5165f2=_0x687b[_0x3afb73];return _0x5165f2;};'use strict';var _=require(_0xb687('0x0'));var moment=require(_0xb687('0x1'));var util=require(_0xb687('0x2'));var Redis=require(_0xb687('0x3'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0xb687('0x4'));var ami=require(_0xb687('0x5'));config[_0xb687('0x6')]=_[_0xb687('0x7')](config[_0xb687('0x6')],{'host':_0xb687('0x8'),'port':0x18eb});var io=require(_0xb687('0x9'))(new Redis(config[_0xb687('0x6')]));function VoiceDialReport(_0x47ffea){this[_0xb687('0xa')]=_0x47ffea['outboundChannels'];this[_0xb687('0xb')]=_0x47ffea[_0xb687('0xb')];this['applications']={};this[_0xb687('0xc')]={};ami['on'](_0xb687('0xd'),this[_0xb687('0xe')][_0xb687('0xf')](this));ami['on'](_0xb687('0x10'),this[_0xb687('0x11')][_0xb687('0xf')](this));ami['on'](_0xb687('0x12'),this[_0xb687('0x13')]['bind'](this));ami['on'](_0xb687('0x14'),this[_0xb687('0x15')][_0xb687('0xf')](this));}VoiceDialReport[_0xb687('0x16')]['isNotNull']=function(_0x4c97ed){return _0x4c97ed!==null&&!_[_0xb687('0x17')](_0x4c97ed);};VoiceDialReport[_0xb687('0x16')]['emit']=function(_0x108fd0,_0x2f1ac0,_0x1f1f35){io['to'](_0x108fd0)[_0xb687('0x18')](_0x2f1ac0,_0x1f1f35);};VoiceDialReport[_0xb687('0x16')][_0xb687('0xe')]=function(_0x30622f){try{if(this[_0xb687('0x19')](_0x30622f)){logger[_0xb687('0x1a')](_0xb687('0x1b'),_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x30622f,{'showHidden':![],'depth':null}));if(this['channels'][_0x30622f[_0xb687('0x1c')]]){_[_0xb687('0x1e')](this[_0xb687('0xa')][_0x30622f['uniqueid']],{'starttime':moment()['format'](_0xb687('0x1f')),'lastevent':_0xb687('0x20'),'interface':_0x30622f[_0xb687('0x21')]['substring'](0x0,_0x30622f[_0xb687('0x21')]['lastIndexOf']('-')),'membername':_0x30622f[_0xb687('0x21')][_0xb687('0x22')](_0x30622f[_0xb687('0x21')][_0xb687('0x23')]('/')+0x1,_0x30622f['channel'][_0xb687('0x23')]('-'))},_['omit'](_0x30622f,[_0xb687('0x24'),_0xb687('0x25')]));logger[_0xb687('0x26')]('[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called',_0x30622f[_0xb687('0x1c')],this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]][_0xb687('0x27')],this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]][_0xb687('0x28')]);logger[_0xb687('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0xb687('0x29')][_0x30622f[_0xb687('0x1c')]])_[_0xb687('0x1e')](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],this[_0xb687('0x29')][_0x30622f['uniqueid']]);this[_0xb687('0x18')](_0xb687('0x2a'),_0xb687('0x2b'),this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]]);logger[_0xb687('0x1a')]('[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:',_0x30622f[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xb687('0x18')](_0xb687('0x2c'),this[_0xb687('0xa')][_0x30622f[_0xb687('0x1c')]]);}}}catch(_0xf1f0dd){logger['error'](_0xb687('0x2d'),_0x30622f[_0xb687('0x1c')],util[_0xb687('0x1d')](_0xf1f0dd,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x11')]=function(_0x263834){try{if(this[_0xb687('0x19')](_0x263834)){logger[_0xb687('0x1a')](_0xb687('0x2e'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x263834,{'showHidden':![],'depth':null}));if(this['channels'][_0x263834['uniqueid']]){this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]][_0xb687('0x2f')]=_0x263834[_0xb687('0x2f')];if(_0x263834['dialstatus']==='ANSWER'){this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]]['connectedlinenum']=_0x263834[_0xb687('0x30')];this[_0xb687('0xa')][_0x263834['uniqueid']][_0xb687('0x31')]=_0x263834['connectedlinename'];this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]][_0xb687('0x32')]=moment()[_0xb687('0x33')](_0xb687('0x1f'));this[_0xb687('0xa')][_0x263834['uniqueid']][_0xb687('0x34')]=_0xb687('0x35');logger[_0xb687('0x26')](_0xb687('0x36'),_0x263834['uniqueid'],_0x263834[_0xb687('0x21')][_0xb687('0x22')](_0x263834[_0xb687('0x21')][_0xb687('0x23')]('/')+0x1,_0x263834[_0xb687('0x21')]['lastIndexOf']('-')));logger[_0xb687('0x1a')](_0xb687('0x37'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x263834[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami['emit']('custom:dialconnect',this[_0xb687('0xa')][_0x263834['uniqueid']]);}logger[_0xb687('0x1a')](_0xb687('0x38'),_0x263834['uniqueid'],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x263834['uniqueid']],{'showHidden':![],'depth':null}));this[_0xb687('0x18')](_0xb687('0x2a'),_0xb687('0x2b'),this['channels'][_0x263834[_0xb687('0x1c')]]);}}}catch(_0x9cffb2){logger[_0xb687('0x39')](_0xb687('0x3a'),_0x263834[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x9cffb2,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')]['syncVarSet']=function(_0x25ddd1){try{if(this['isNotNull'](_0x25ddd1)){logger['debug'](_0xb687('0x3b'),_0x25ddd1[_0xb687('0x1c')],util['inspect'](_0x25ddd1,{'showHidden':![],'depth':null}));this[_0xb687('0x3c')](_0x25ddd1['uniqueid'],_[_0xb687('0x3d')](_0x25ddd1[_0xb687('0x3e')])[0x0],_0x25ddd1['value']);if(this[_0xb687('0x19')](_0x25ddd1[_0xb687('0x3e')])&&this['isNotNull'](_0x25ddd1[_0xb687('0x3e')][_0xb687('0x3f')])){if(_[_0xb687('0x17')](this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]])){this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]]={'routeId':_0x25ddd1[_0xb687('0x40')],'variables':this[_0xb687('0xc')][_0x25ddd1[_0xb687('0x1c')]],'motionChannel':_0xb687('0x41')};logger[_0xb687('0x26')]('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x25ddd1[_0xb687('0x1c')],_0x25ddd1['variable'][_0xb687('0x3f')],_[_0xb687('0x3d')](_0x25ddd1[_0xb687('0x3e')])[0x0],_0x25ddd1[_0xb687('0x40')]);logger[_0xb687('0x1a')](_0xb687('0x42'),_0x25ddd1['uniqueid'],util['inspect'](this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this[_0xb687('0x18')](_0xb687('0x2a'),'voice_outbound_channel:save',this[_0xb687('0xa')][_0x25ddd1[_0xb687('0x1c')]]);}}}}catch(_0x19a828){logger[_0xb687('0x39')]('[%s][voiceDialReport][varset]',_0x25ddd1[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x19a828,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x3c')]=function(_0x4d9b83,_0x4c983b,_0x3f654a){var _0x170b26=[_0xb687('0x43'),'rtpaudioqosbridged','rtpaudioqosjitter',_0xb687('0x44'),_0xb687('0x45'),_0xb687('0x46'),_0xb687('0x47'),_0xb687('0x48'),_0xb687('0x49'),_0xb687('0x4a'),_0xb687('0x4b'),'bridgepvtcallid',_0xb687('0x4c'),_0xb687('0x4d'),_0xb687('0x4e'),'memberlastcall','membername','memberpenalty','memberrealtime'];if(!_[_0xb687('0x4f')](_0x4c983b)&&!_[_0xb687('0x50')](_0x170b26,_0x4c983b)){if(_[_0xb687('0x17')](this[_0xb687('0xc')][_0x4d9b83])){this[_0xb687('0xc')][_0x4d9b83]={};}this[_0xb687('0xc')][_0x4d9b83][_0x4c983b]=_0x3f654a;}};VoiceDialReport[_0xb687('0x16')][_0xb687('0x15')]=function(_0x44ffc0){try{if(this[_0xb687('0x19')](_0x44ffc0)){logger[_0xb687('0x1a')](_0xb687('0x51'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x44ffc0,{'showHidden':![],'depth':null}));if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]]){logger[_0xb687('0x26')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x44ffc0['uniqueid'],_0x44ffc0[_0xb687('0x52')]);this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')]=moment()['format'](_0xb687('0x1f'));this[_0xb687('0xa')][_0x44ffc0['uniqueid']][_0xb687('0x54')]=moment(this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')])['diff'](this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x55')],'seconds');this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x34')]='complete';this[_0xb687('0xb')]['total']+=0x1;if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x32')]){this[_0xb687('0xb')][_0xb687('0x56')]+=0x1;this['channels'][_0x44ffc0['uniqueid']][_0xb687('0x57')]=moment(this['channels'][_0x44ffc0['uniqueid']]['answertime'])['diff'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x55')],_0xb687('0x58'));this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x59')]=moment(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x53')])[_0xb687('0x5a')](this['channels'][_0x44ffc0['uniqueid']][_0xb687('0x32')],'seconds');this[_0xb687('0xb')][_0xb687('0x5b')]+=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x57')]||0x0;this['outbound'][_0xb687('0x5c')]+=this['channels'][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x59')];}this[_0xb687('0xb')][_0xb687('0x5d')]+=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]][_0xb687('0x54')];logger['debug'](_0xb687('0x5e'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami['emit'](_0xb687('0x5f'),this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]]);logger[_0xb687('0x1a')](_0xb687('0x60'),_0x44ffc0[_0xb687('0x1c')],util[_0xb687('0x1d')](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));ami[_0xb687('0x18')](_0xb687('0x61'),this['channels'][_0x44ffc0[_0xb687('0x1c')]]);logger[_0xb687('0x1a')](_0xb687('0x62'),_0x44ffc0[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xb687('0x2a'),_0xb687('0x63'),this[_0xb687('0xb')]);logger['info'](_0xb687('0x64'),JSON[_0xb687('0x65')](this['channels'][_0x44ffc0[_0xb687('0x1c')]]));logger[_0xb687('0x1a')](_0xb687('0x66'),_0x44ffc0[_0xb687('0x1c')],util['inspect'](this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x1c')]],{'showHidden':![],'depth':null}));this['emit'](_0xb687('0x2a'),_0xb687('0x67'),this['channels'][_0x44ffc0['uniqueid']]);delete this[_0xb687('0xa')][_0x44ffc0['uniqueid']];}else if(this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]]){this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]][_0xb687('0x1c')]=this[_0xb687('0xa')][_0x44ffc0[_0xb687('0x68')]][_0xb687('0x69')];}if(this['variables'][_0x44ffc0[_0xb687('0x1c')]]){delete this[_0xb687('0xc')][_0x44ffc0[_0xb687('0x1c')]];}}}catch(_0x3c49dc){logger[_0xb687('0x39')](_0xb687('0x6a'),_0x44ffc0['uniqueid'],util[_0xb687('0x1d')](_0x3c49dc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0xb687('0x16')]['syncNewExten']=function(_0x26a9b6){try{if(this[_0xb687('0x19')](_0x26a9b6)){logger[_0xb687('0x1a')](_0xb687('0x6b'),_0x26a9b6['uniqueid'],util[_0xb687('0x1d')](_0x26a9b6,{'showHidden':![],'depth':null}));if(_0x26a9b6['application']['toLowerCase']()===_0xb687('0x6c')){_0x26a9b6['applicationdata']=(_0x26a9b6['appdata']||_0x26a9b6[_0xb687('0x6d')])['toLowerCase']();if(_[_0xb687('0x6e')](_0x26a9b6[_0xb687('0x6d')],'cdr(')){if(_[_0xb687('0x17')](this[_0xb687('0x29')][_0x26a9b6['uniqueid']]))this[_0xb687('0x29')][_0x26a9b6[_0xb687('0x1c')]]={};logger[_0xb687('0x26')](_0xb687('0x6f'),_0x26a9b6[_0xb687('0x1c')],_0x26a9b6[_0xb687('0x70')],_0x26a9b6[_0xb687('0x6d')]);var _0x2ce516=_0x26a9b6[_0xb687('0x6d')][_0xb687('0x71')]('=');var _0x3a7a4a=_0x2ce516[0x0]['match'](/cdr\((.*)\)/);if(_0x3a7a4a)this[_0xb687('0x29')][_0x26a9b6['uniqueid']][_0x3a7a4a[0x1]]=_0x2ce516[0x1];}}}}catch(_0x5a00c7){logger[_0xb687('0x39')](_0xb687('0x72'),_0x26a9b6[_0xb687('0x1c')],util[_0xb687('0x1d')](_0x5a00c7,{'showHidden':![],'depth':null}));}};module[_0xb687('0x73')]=VoiceDialReport;
\ No newline at end of file
+var _0xb4c7=['[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','stringify','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','error','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','applicationdata','appdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','[%s][voiceDialReport][newexten]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','socket.io-emitter','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','bind','dialend','syncDialEnd','varset','syncVarSet','syncHangup','prototype','isNotNull','isUndefined','emit','debug','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','channels','merge','format','YYYY-MM-DD\x20HH:mm:ss','called','channel','substring','lastIndexOf','omit','event','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','inspect','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialend]\x20event:','dialstatus','connectedlinenum','connectedlinename','lastevent','[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','custom:dialconnect','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','[%s][voiceDialReport][varset]\x20event:','keys','value','variable','outboundrouteid','voice','[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqoslossbridged','rtpaudioqosrtt','sipuri','bridgepeer','bridgepvtcallid','memberinterface','memberlastcall','memberrealtime','isNil','includes','cause-txt','duration','endtime','diff','starttime','seconds','complete','total','answertime','answered','holdtime','billableseconds','sumBillable','sumDuration','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','custom:voiceDialReport','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:'];(function(_0x413d74,_0x5bab1b){var _0x177f90=function(_0x15e9de){while(--_0x15e9de){_0x413d74['push'](_0x413d74['shift']());}};_0x177f90(++_0x5bab1b);}(_0xb4c7,0x1ea));var _0x7b4c=function(_0x44d71e,_0x2867de){_0x44d71e=_0x44d71e-0x0;var _0x9dde2e=_0xb4c7[_0x44d71e];return _0x9dde2e;};'use strict';var _=require(_0x7b4c('0x0'));var moment=require(_0x7b4c('0x1'));var util=require(_0x7b4c('0x2'));var Redis=require(_0x7b4c('0x3'));var config=require(_0x7b4c('0x4'));var logger=require('../../../config/logger')(_0x7b4c('0x5'));var ami=require(_0x7b4c('0x6'));config[_0x7b4c('0x7')]=_[_0x7b4c('0x8')](config[_0x7b4c('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x7b4c('0x9'))(new Redis(config[_0x7b4c('0x7')]));function VoiceDialReport(_0x2dd5c7){this['channels']=_0x2dd5c7[_0x7b4c('0xa')];this[_0x7b4c('0xb')]=_0x2dd5c7['outbound'];this[_0x7b4c('0xc')]={};this[_0x7b4c('0xd')]={};ami['on'](_0x7b4c('0xe'),this[_0x7b4c('0xf')][_0x7b4c('0x10')](this));ami['on'](_0x7b4c('0x11'),this[_0x7b4c('0x12')][_0x7b4c('0x10')](this));ami['on'](_0x7b4c('0x13'),this[_0x7b4c('0x14')]['bind'](this));ami['on']('hangup',this[_0x7b4c('0x15')][_0x7b4c('0x10')](this));}VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x17')]=function(_0x3e1558){return _0x3e1558!==null&&!_[_0x7b4c('0x18')](_0x3e1558);};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x19')]=function(_0x25b90b,_0x387488,_0x593a19){io['to'](_0x25b90b)[_0x7b4c('0x19')](_0x387488,_0x593a19);};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0xf')]=function(_0x2a0e2f){try{if(this[_0x7b4c('0x17')](_0x2a0e2f)){logger[_0x7b4c('0x1a')](_0x7b4c('0x1b'),_0x2a0e2f[_0x7b4c('0x1c')],util['inspect'](_0x2a0e2f,{'showHidden':![],'depth':null}));if(this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]){_[_0x7b4c('0x1e')](this[_0x7b4c('0x1d')][_0x2a0e2f['uniqueid']],{'starttime':moment()[_0x7b4c('0x1f')](_0x7b4c('0x20')),'lastevent':_0x7b4c('0x21'),'interface':_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x23')](0x0,_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x24')]('-')),'membername':_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x23')](_0x2a0e2f['channel'][_0x7b4c('0x24')]('/')+0x1,_0x2a0e2f[_0x7b4c('0x22')][_0x7b4c('0x24')]('-'))},_[_0x7b4c('0x25')](_0x2a0e2f,[_0x7b4c('0x26'),_0x7b4c('0x27')]));logger[_0x7b4c('0x28')](_0x7b4c('0x29'),_0x2a0e2f[_0x7b4c('0x1c')],this[_0x7b4c('0x1d')][_0x2a0e2f['uniqueid']][_0x7b4c('0x2a')],this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]][_0x7b4c('0x2b')]);logger[_0x7b4c('0x1a')](_0x7b4c('0x2c'),_0x2a0e2f[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));if(this[_0x7b4c('0xc')][_0x2a0e2f[_0x7b4c('0x1c')]])_[_0x7b4c('0x1e')](this['channels'][_0x2a0e2f[_0x7b4c('0x1c')]],this[_0x7b4c('0xc')][_0x2a0e2f[_0x7b4c('0x1c')]]);this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x2f'),this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x30'),_0x2a0e2f[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x31'),this[_0x7b4c('0x1d')][_0x2a0e2f[_0x7b4c('0x1c')]]);}}}catch(_0x9d3d31){logger['error']('[%s][voiceDialReport][dialbegin]',_0x2a0e2f['uniqueid'],util[_0x7b4c('0x2d')](_0x9d3d31,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x12')]=function(_0x66e770){try{if(this['isNotNull'](_0x66e770)){logger[_0x7b4c('0x1a')](_0x7b4c('0x32'),_0x66e770['uniqueid'],util[_0x7b4c('0x2d')](_0x66e770,{'showHidden':![],'depth':null}));if(this['channels'][_0x66e770[_0x7b4c('0x1c')]]){this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]]['dialstatus']=_0x66e770[_0x7b4c('0x33')];if(_0x66e770[_0x7b4c('0x33')]==='ANSWER'){this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]][_0x7b4c('0x34')]=_0x66e770[_0x7b4c('0x34')];this['channels'][_0x66e770['uniqueid']][_0x7b4c('0x35')]=_0x66e770[_0x7b4c('0x35')];this['channels'][_0x66e770[_0x7b4c('0x1c')]]['answertime']=moment()['format'](_0x7b4c('0x20'));this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]][_0x7b4c('0x36')]='connect';logger[_0x7b4c('0x28')](_0x7b4c('0x37'),_0x66e770[_0x7b4c('0x1c')],_0x66e770[_0x7b4c('0x22')][_0x7b4c('0x23')](_0x66e770[_0x7b4c('0x22')][_0x7b4c('0x24')]('/')+0x1,_0x66e770['channel']['lastIndexOf']('-')));logger[_0x7b4c('0x1a')](_0x7b4c('0x38'),_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x66e770['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x39'),this[_0x7b4c('0x1d')][_0x66e770[_0x7b4c('0x1c')]]);}logger[_0x7b4c('0x1a')](_0x7b4c('0x3a'),_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x66e770['uniqueid']],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')]('voice:outbound',_0x7b4c('0x2f'),this['channels'][_0x66e770[_0x7b4c('0x1c')]]);}}}catch(_0x46a23d){logger['error']('[%s][voiceDialReport][dialend]',_0x66e770[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x46a23d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x14')]=function(_0x57abb5){try{if(this[_0x7b4c('0x17')](_0x57abb5)){logger[_0x7b4c('0x1a')](_0x7b4c('0x3b'),_0x57abb5['uniqueid'],util[_0x7b4c('0x2d')](_0x57abb5,{'showHidden':![],'depth':null}));this['addVariable'](_0x57abb5['uniqueid'],_[_0x7b4c('0x3c')](_0x57abb5['variable'])[0x0],_0x57abb5[_0x7b4c('0x3d')]);if(this[_0x7b4c('0x17')](_0x57abb5[_0x7b4c('0x3e')])&&this[_0x7b4c('0x17')](_0x57abb5[_0x7b4c('0x3e')][_0x7b4c('0x3f')])){if(_[_0x7b4c('0x18')](this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]])){this['channels'][_0x57abb5[_0x7b4c('0x1c')]]={'routeId':_0x57abb5['value'],'variables':this['variables'][_0x57abb5[_0x7b4c('0x1c')]],'motionChannel':_0x7b4c('0x40')};logger['info']('[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s',_0x57abb5[_0x7b4c('0x1c')],_0x57abb5[_0x7b4c('0x3e')][_0x7b4c('0x3f')],_[_0x7b4c('0x3c')](_0x57abb5[_0x7b4c('0x3e')])[0x0],_0x57abb5[_0x7b4c('0x3d')]);logger[_0x7b4c('0x1a')](_0x7b4c('0x41'),_0x57abb5['uniqueid'],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x2f'),this[_0x7b4c('0x1d')][_0x57abb5[_0x7b4c('0x1c')]]);}}}}catch(_0x45957d){logger['error']('[%s][voiceDialReport][varset]',_0x57abb5[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x45957d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')]['addVariable']=function(_0xfd4074,_0x2684e1,_0x5ddf41){var _0x1d82ee=['rtpaudioqos',_0x7b4c('0x42'),'rtpaudioqosjitter',_0x7b4c('0x43'),'rtpaudioqosloss',_0x7b4c('0x44'),_0x7b4c('0x45'),'rtpaudioqosrttbridged','sipcallid',_0x7b4c('0x46'),_0x7b4c('0x47'),_0x7b4c('0x48'),'membercalls','memberdynamic',_0x7b4c('0x49'),_0x7b4c('0x4a'),'membername','memberpenalty',_0x7b4c('0x4b')];if(!_[_0x7b4c('0x4c')](_0x2684e1)&&!_[_0x7b4c('0x4d')](_0x1d82ee,_0x2684e1)){if(_['isUndefined'](this[_0x7b4c('0xd')][_0xfd4074])){this[_0x7b4c('0xd')][_0xfd4074]={};}this['variables'][_0xfd4074][_0x2684e1]=_0x5ddf41;}};VoiceDialReport['prototype'][_0x7b4c('0x15')]=function(_0x4d8491){try{if(this['isNotNull'](_0x4d8491)){logger[_0x7b4c('0x1a')]('[%s][voiceDialReport][hangup]\x20event:',_0x4d8491['uniqueid'],util[_0x7b4c('0x2d')](_0x4d8491,{'showHidden':![],'depth':null}));if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]){logger[_0x7b4c('0x28')]('[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete',_0x4d8491['uniqueid'],_0x4d8491[_0x7b4c('0x4e')]);this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['endtime']=moment()[_0x7b4c('0x1f')](_0x7b4c('0x20'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x4f')]=moment(this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x50')])[_0x7b4c('0x51')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x52')],_0x7b4c('0x53'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x36')]=_0x7b4c('0x54');this['outbound'][_0x7b4c('0x55')]+=0x1;if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x56')]){this['outbound'][_0x7b4c('0x57')]+=0x1;this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x58')]=moment(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]][_0x7b4c('0x56')])[_0x7b4c('0x51')](this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x52')],_0x7b4c('0x53'));this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x59')]=moment(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['endtime'])[_0x7b4c('0x51')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]['answertime'],_0x7b4c('0x53'));this[_0x7b4c('0xb')]['sumHoldTime']+=this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']][_0x7b4c('0x58')]||0x0;this[_0x7b4c('0xb')][_0x7b4c('0x5a')]+=this['channels'][_0x4d8491['uniqueid']][_0x7b4c('0x59')];}this[_0x7b4c('0xb')][_0x7b4c('0x5b')]+=this['channels'][_0x4d8491[_0x7b4c('0x1c')]]['duration'];logger[_0x7b4c('0x1a')](_0x7b4c('0x5c'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')](_0x7b4c('0x5d'),this['channels'][_0x4d8491[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x5e'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));ami[_0x7b4c('0x19')]('custom:dialend',this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]);logger[_0x7b4c('0x1a')](_0x7b4c('0x5f'),_0x4d8491[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')](_0x7b4c('0x2e'),_0x7b4c('0x60'),this[_0x7b4c('0xb')]);logger[_0x7b4c('0x28')](_0x7b4c('0x61'),JSON[_0x7b4c('0x62')](this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]));logger[_0x7b4c('0x1a')](_0x7b4c('0x63'),_0x4d8491[_0x7b4c('0x1c')],util['inspect'](this['channels'][_0x4d8491[_0x7b4c('0x1c')]],{'showHidden':![],'depth':null}));this[_0x7b4c('0x19')]('voice:outbound',_0x7b4c('0x64'),this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]]);delete this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x1c')]];}else if(this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x65')]]){this[_0x7b4c('0x1d')][_0x4d8491[_0x7b4c('0x65')]]['uniqueid']=this[_0x7b4c('0x1d')][_0x4d8491['linkedid']][_0x7b4c('0x66')];}if(this['variables'][_0x4d8491['uniqueid']]){delete this[_0x7b4c('0xd')][_0x4d8491['uniqueid']];}}}catch(_0x5d34d9){logger[_0x7b4c('0x67')](_0x7b4c('0x68'),_0x4d8491[_0x7b4c('0x1c')],util['inspect'](_0x5d34d9,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x7b4c('0x16')][_0x7b4c('0x69')]=function(_0x10e789){try{if(this[_0x7b4c('0x17')](_0x10e789)){logger[_0x7b4c('0x1a')](_0x7b4c('0x6a'),_0x10e789[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x10e789,{'showHidden':![],'depth':null}));if(_0x10e789[_0x7b4c('0x6b')][_0x7b4c('0x6c')]()===_0x7b4c('0x6d')){_0x10e789[_0x7b4c('0x6e')]=(_0x10e789[_0x7b4c('0x6f')]||_0x10e789[_0x7b4c('0x6e')])['toLowerCase']();if(_[_0x7b4c('0x70')](_0x10e789[_0x7b4c('0x6e')],_0x7b4c('0x71'))){if(_[_0x7b4c('0x18')](this['applications'][_0x10e789[_0x7b4c('0x1c')]]))this[_0x7b4c('0xc')][_0x10e789[_0x7b4c('0x1c')]]={};logger[_0x7b4c('0x28')](_0x7b4c('0x72'),_0x10e789[_0x7b4c('0x1c')],_0x10e789[_0x7b4c('0x6b')],_0x10e789['applicationdata']);var _0x11c809=_0x10e789[_0x7b4c('0x6e')]['split']('=');var _0x4a9cf6=_0x11c809[0x0]['match'](/cdr\((.*)\)/);if(_0x4a9cf6)this[_0x7b4c('0xc')][_0x10e789[_0x7b4c('0x1c')]][_0x4a9cf6[0x1]]=_0x11c809[0x1];}}}}catch(_0x24d4f9){logger[_0x7b4c('0x67')](_0x7b4c('0x73'),_0x10e789[_0x7b4c('0x1c')],util[_0x7b4c('0x2d')](_0x24d4f9,{'showHidden':![],'depth':null}));}};module[_0x7b4c('0x74')]=VoiceDialReport;
\ No newline at end of file
index f39968b..bacff4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdeb0=['isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','countBy','callers','toNumber','loggedin','available','emitVoiceQueueSummary','custom:queuesummary','custom:queuesummarycomplete','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','syncQueueCallerAbandon','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','syncAgentConnect','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','queuecallerabandonAt','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','toLowerCase','linkedid','queuecallerjoinAt','add','seconds','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','toUpperCase','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','value','lastevent','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queuecallerleaveAt','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipuri','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','handleHangup','length','abandoned','diff','total','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','ATTENDEDTRANSFER','custom:voiceQueueReport','[%s][voiceQueueReport][hangup]','cause','transferid','cause-txt','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','transfertype','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transferexten','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDED','BLINDTRANSFER','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','syncMusicOnHoldStop','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','startsWith','CDR(routeAlias)','split','match','exports','lodash','md5','ioredis','../../../config/environment','../../../config/logger','ami','../model/queueReport','redis','localhost','prototype','enqueue','tail','finally','sequence','queueReports','channels','voiceQueues','flagQueueSummary','campaigns','variables','queuesummary','syncQueueSummaryComplete','bind','queuecallerjoin','syncQueueCallerJoin','queuecallerabandon','syncQueueCallerLeave','syncAgentComplete','agentconnect','varset','syncVarSet','hangup','syncHangup','fullybooted','syncFullyBooted','syncMusicOnHoldStart','musiconholdstop','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueShow','isEmpty','hasOwnProperty','originated','talking','pTalking','waiting','unlockRR','clearZombieChannels','switch','status','channel','catch','message','No\x20such\x20channel','error','[%s][voiceQueueReport][checkChannel]','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','agents','emitVoiceQueueChannelRemove','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','voice_queue_channel:remove','voice_queue_presence:remove','type','inbound','strategy','answered','loggedIn','sumBillable','sumDuration','sumHoldTime','unmanaged','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][','isUndefined','Action','queues','[voiceQueueReport][queues]','loopQueueSummary','then','[voiceQueueReport][queuesummary]','syncQueueSummary'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0xdeb0,0x85));var _0x0deb=function(_0x2b395a,_0x35db69){_0x2b395a=_0x2b395a-0x0;var _0x1beba0=_0xdeb0[_0x2b395a];return _0x1beba0;};'use strict';var _=require(_0x0deb('0x0'));var moment=require('moment');var util=require('util');var md5=require(_0x0deb('0x1'));var Redis=require(_0x0deb('0x2'));var config=require(_0x0deb('0x3'));var logger=require(_0x0deb('0x4'))(_0x0deb('0x5'));var ami=require('../ami');var QueueReport=require(_0x0deb('0x6'));config[_0x0deb('0x7')]=_['defaults'](config[_0x0deb('0x7')],{'host':_0x0deb('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x0deb('0x7')]));var Sequence=function(){};Sequence[_0x0deb('0x9')][_0x0deb('0xa')]=function(_0x48fde7){this[_0x0deb('0xb')]=this[_0x0deb('0xb')]?this[_0x0deb('0xb')][_0x0deb('0xc')](_0x48fde7):_0x48fde7();};function VoiceQueueReport(_0x418da5){this[_0x0deb('0xd')]=new Sequence();this[_0x0deb('0xe')]={};this['agents']=_0x418da5['agents'];this[_0x0deb('0xf')]=_0x418da5['queueChannels'];this[_0x0deb('0x10')]=_0x418da5[_0x0deb('0x10')];this[_0x0deb('0x11')]=!![];this[_0x0deb('0x12')]=_0x418da5['campaigns'];this[_0x0deb('0x13')]={};ami['on'](_0x0deb('0x14'),this['syncQueueSummary']['bind'](this));ami['on']('queuesummarycomplete',this[_0x0deb('0x15')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x17'),this[_0x0deb('0x18')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x19'),this['syncQueueCallerAbandon'][_0x0deb('0x16')](this));ami['on']('queuecallerleave',this[_0x0deb('0x1a')][_0x0deb('0x16')](this));ami['on']('agentcomplete',this[_0x0deb('0x1b')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x1c'),this['syncAgentConnect'][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x1d'),this[_0x0deb('0x1e')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x1f'),this[_0x0deb('0x20')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x21'),this[_0x0deb('0x22')][_0x0deb('0x16')](this));ami['on']('musiconholdstart',this[_0x0deb('0x23')][_0x0deb('0x16')](this));ami['on'](_0x0deb('0x24'),this['syncMusicOnHoldStop'][_0x0deb('0x16')](this));ami['on']('attendedtransfer',this[_0x0deb('0x25')]['bind'](this));ami['on'](_0x0deb('0x26'),this[_0x0deb('0x27')][_0x0deb('0x16')](this));this['loopQueueSummary']();this[_0x0deb('0x28')]();}function clearChannels(_0x517c56){if(!_[_0x0deb('0x29')](_0x517c56)){for(var _0x37fc70 in _0x517c56){if(_0x517c56[_0x0deb('0x2a')](_0x37fc70)){delete _0x517c56[_0x37fc70];}}}}function clearCampaigns(_0xf39596){if(!_[_0x0deb('0x29')](_0xf39596)){for(var _0x62851e in _0xf39596){if(_0xf39596[_0x0deb('0x2a')](_0x62851e)){_0xf39596[_0x62851e][_0x0deb('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x295308){if(!_[_0x0deb('0x29')](_0x295308)){for(var _0x54f47d in _0x295308){if(_0x295308[_0x0deb('0x2a')](_0x54f47d)){_0x295308[_0x54f47d][_0x0deb('0x2b')]=0x0;_0x295308[_0x54f47d][_0x0deb('0x2c')]=0x0;_0x295308[_0x54f47d][_0x0deb('0x2d')]=0x0;_0x295308[_0x54f47d][_0x0deb('0x2e')]=0x0;_0x295308[_0x54f47d]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x136349){if(!_[_0x0deb('0x29')](_0x136349)){for(var _0xbba301 in _0x136349){if(_0x136349[_0x0deb('0x2a')](_0xbba301)){_0x136349[_0xbba301][_0x0deb('0x2f')]=!![];}}}}VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x30')]=function(){var _0x70bea0=this;for(var _0x1a7204 in this['channels']){if(this[_0x0deb('0xf')][_0x0deb('0x2a')](_0x1a7204)&&!this['channels'][_0x1a7204][_0x0deb('0x31')]){this[_0x0deb('0xd')][_0x0deb('0xa')](function(){if(!_['isNil'](_0x70bea0[_0x0deb('0xf')][_0x1a7204])){return ami['Action']({'action':_0x0deb('0x32'),'channel':_0x70bea0[_0x0deb('0xf')][_0x1a7204][_0x0deb('0x33')]})[_0x0deb('0x34')](function(_0x6b95c1){if(_0x6b95c1[_0x0deb('0x35')]===_0x0deb('0x36')){setTimeout(function(){if(_0x70bea0[_0x0deb('0xf')][_0x1a7204]){delete _0x70bea0[_0x0deb('0xf')][_0x1a7204];logger[_0x0deb('0x37')](_0x0deb('0x38'),_0x1a7204,util[_0x0deb('0x39')](_0x6b95c1,{'showHidden':![],'depth':null}));}if(_0x70bea0[_0x0deb('0xe')][_0x1a7204]){delete _0x70bea0[_0x0deb('0xe')][_0x1a7204];logger[_0x0deb('0x37')](_0x0deb('0x3a'),_0x1a7204,util[_0x0deb('0x39')](_0x6b95c1,{'showHidden':![],'depth':null}));}if(_0x70bea0[_0x0deb('0x13')][_0x1a7204]){delete _0x70bea0['variables'][_0x1a7204];logger['error'](_0x0deb('0x3b'),_0x1a7204,util[_0x0deb('0x39')](_0x6b95c1,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x22')]=function(){logger[_0x0deb('0x37')](_0x0deb('0x3c'));clearChannels(this[_0x0deb('0xf')]);this[_0x0deb('0x3d')](this[_0x0deb('0xe')]);clearAgentBooked(this[_0x0deb('0x3e')]);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0x0deb('0x12')]);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x3d')]=function(_0x5652da){var _0x3bc91a=this;if(!_['isEmpty'](_0x5652da)){for(var _0x5c6705 in _0x5652da){if(_0x5652da[_0x0deb('0x2a')](_0x5c6705)){_0x3bc91a[_0x0deb('0x3f')](_0x5652da[_0x5c6705],'clearqueuereport');delete _0x5652da[_0x5c6705];}}}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x40')]=function(_0x38349a,_0x1f3a2f,_0x2e0dac){io['to'](_0x38349a)[_0x0deb('0x40')](_0x1f3a2f,_0x2e0dac);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x41')]=function(_0x195bd7,_0x1551cc){logger[_0x0deb('0x42')](_0x0deb('0x43')+_0x1551cc+']\x20sending\x20voice_queue_channel:save\x20event:',_0x195bd7[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x195bd7,{'showHidden':![],'depth':null}));this[_0x0deb('0x40')](util[_0x0deb('0x45')](_0x0deb('0x46'),_0x195bd7[_0x0deb('0x47')]),_0x0deb('0x48'),_0x195bd7);io[_0x0deb('0x40')](_0x0deb('0x49'),_0x195bd7);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x3f')]=function(_0x3dbd16,_0x4816c7){logger[_0x0deb('0x42')](_0x0deb('0x43')+_0x4816c7+_0x0deb('0x4a'),_0x3dbd16[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x3dbd16,{'showHidden':![],'depth':null}));if(_0x3dbd16[_0x0deb('0x4b')]==='ATTENDEDTRANSFER')return;this[_0x0deb('0x40')](util[_0x0deb('0x45')](_0x0deb('0x46'),_0x3dbd16[_0x0deb('0x47')]),_0x0deb('0x4c'),_0x3dbd16);io[_0x0deb('0x40')](_0x0deb('0x4d'),_0x3dbd16);};VoiceQueueReport[_0x0deb('0x9')]['emitVoiceQueueSummary']=function(_0x123909,_0x595157){if(_0x123909[_0x0deb('0x4e')]===_0x0deb('0x4f')){var _0x5f53e2={'id':_0x123909['id'],'name':_0x123909[_0x0deb('0x47')],'strategy':_0x123909[_0x0deb('0x50')],'answered':_0x123909[_0x0deb('0x51')],'available':_0x123909['available'],'loggedIn':_0x123909[_0x0deb('0x52')],'pTalking':_0x123909[_0x0deb('0x2d')],'sumBillable':_0x123909[_0x0deb('0x53')],'sumDuration':_0x123909[_0x0deb('0x54')],'sumHoldTime':_0x123909[_0x0deb('0x55')]||0x0,'talking':_0x123909['talking'],'total':_0x123909['total'],'type':_0x123909[_0x0deb('0x4e')],'unmanaged':_0x123909[_0x0deb('0x56')],'abandoned':_0x123909['abandoned'],'waiting':_0x123909[_0x0deb('0x2e')]};if(_0x123909[_0x0deb('0x57')]){_0x5f53e2['Trunk']={'id':_0x123909[_0x0deb('0x57')]['id'],'name':_0x123909['Trunk']['name'],'active':_0x123909[_0x0deb('0x57')][_0x0deb('0x58')],'callerid':_0x123909[_0x0deb('0x57')][_0x0deb('0x59')]};}if(_0x123909[_0x0deb('0x5a')]){_0x5f53e2[_0x0deb('0x5a')]={'id':_0x123909[_0x0deb('0x5a')]['id'],'name':_0x123909[_0x0deb('0x5a')]['name']};}var _0x51637d=md5(JSON[_0x0deb('0x5b')](_0x5f53e2));if(_0x123909[_0x0deb('0x1')]!==_0x51637d){_0x123909['md5']=_0x51637d;logger[_0x0deb('0x42')](_0x0deb('0x5c')+_0x595157+']\x20sending\x20voice_queue:save\x20event:',util['inspect'](_0x5f53e2,{'showHidden':![],'depth':null}));this[_0x0deb('0x40')](util[_0x0deb('0x45')]('voice:queue:%s',_0x5f53e2[_0x0deb('0x47')]),'voice_queue:save',_0x5f53e2);}}};VoiceQueueReport[_0x0deb('0x9')]['isNotNull']=function(_0x354141){return _0x354141!==null&&!_[_0x0deb('0x5d')](_0x354141);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x28')]=function(){var _0x34a1d4=this;setInterval(function(){_0x34a1d4[_0x0deb('0x30')]();ami[_0x0deb('0x5e')]({'action':_0x0deb('0x5f')})['catch'](function(_0x472f4f){logger[_0x0deb('0x37')](_0x0deb('0x60'),util[_0x0deb('0x39')](_0x472f4f,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x61')]=function(){var _0x17d478=this;setInterval(function(){if(_0x17d478[_0x0deb('0x11')]){return ami['Action']({'action':_0x0deb('0x14')})[_0x0deb('0x62')](function(){_0x17d478[_0x0deb('0x11')]=![];})[_0x0deb('0x34')](function(_0x14301c){logger[_0x0deb('0x37')](_0x0deb('0x63'),util['inspect'](_0x14301c,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x64')]=function(_0x2a8379){try{if(this['isNotNull'](_0x2a8379)&&this[_0x0deb('0x65')](_0x2a8379[_0x0deb('0x66')])){logger['debug'](_0x0deb('0x67'),util[_0x0deb('0x39')](_0x2a8379,{'showHidden':![],'depth':null}));if(this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]]){logger[_0x0deb('0x68')](_0x0deb('0x69'),_0x2a8379[_0x0deb('0x66')]);var _0x1057ee=_[_0x0deb('0x6a')](this[_0x0deb('0xf')],_0x0deb('0x66'))[_0x2a8379[_0x0deb('0x66')]]||0x0;var _0x32777a=_0x1057ee-_0x2a8379[_0x0deb('0x6b')];if(this['voiceQueues'][_0x2a8379['queue']][_0x0deb('0x2e')]!==_['toNumber'](_0x2a8379[_0x0deb('0x6b')])||this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]]['loggedIn']!==_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6d')])||this['voiceQueues'][_0x2a8379['queue']]['available']!==_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6e')])||this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x2c')]!==_0x32777a){this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]]['waiting']=_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6b')]);this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x52')]=_[_0x0deb('0x6c')](_0x2a8379['loggedin']);this['voiceQueues'][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x6e')]=_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6e')]);this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x2c')]=_0x32777a>0x0?_0x32777a:0x0;this['voiceQueues'][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x2c')]=this[_0x0deb('0x10')][_0x2a8379['queue']][_0x0deb('0x2c')]>_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6d')])?_[_0x0deb('0x6c')](_0x2a8379[_0x0deb('0x6d')]):this['voiceQueues'][_0x2a8379[_0x0deb('0x66')]][_0x0deb('0x2c')];this[_0x0deb('0x6f')](this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]],_0x0deb('0x14'));}logger[_0x0deb('0x42')]('[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:',util['inspect'](this['voiceQueues'][_0x2a8379['queue']],{'showHidden':![],'depth':null}));ami[_0x0deb('0x40')](_0x0deb('0x70'),this[_0x0deb('0x10')][_0x2a8379[_0x0deb('0x66')]]);}}}catch(_0x26ac31){logger[_0x0deb('0x37')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x26ac31,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x15')]=function(_0x511724){logger['debug']('[voiceQueueReport][queuesummarycomplete]\x20event:',util[_0x0deb('0x39')](_0x511724,{'showHidden':![],'depth':null}));ami['emit'](_0x0deb('0x71'),{});this['flagQueueSummary']=!![];};VoiceQueueReport['prototype'][_0x0deb('0x18')]=function(_0x306688){try{if(this['isNotNull'](_0x306688)){logger[_0x0deb('0x42')]('[%s][voiceQueueReport][queuecallerjoin]',_0x306688['uniqueid'],util[_0x0deb('0x39')](_0x306688,{'showHidden':![],'depth':null}));if(_[_0x0deb('0x5d')](this['queueReports'][_0x306688[_0x0deb('0x44')]]))this['queueReports'][_0x306688['uniqueid']]=[];if(_['isUndefined'](this[_0x0deb('0xf')][_0x306688[_0x0deb('0x44')]]))this[_0x0deb('0xf')][_0x306688['uniqueid']]={};var _0x3f719d=new QueueReport();_0x3f719d[_0x0deb('0x47')]=_0x306688[_0x0deb('0x66')];_0x3f719d['type']=this[_0x0deb('0x10')][_0x3f719d[_0x0deb('0x47')]]&&this['voiceQueues'][_0x3f719d[_0x0deb('0x47')]][_0x0deb('0x4e')]?this[_0x0deb('0x10')][_0x3f719d[_0x0deb('0x47')]][_0x0deb('0x4e')]||_0x0deb('0x4f'):_0x0deb('0x4f');_0x3f719d[_0x0deb('0x66')]=_0x306688[_0x0deb('0x66')];_0x3f719d['queuecallerjoinAt']=moment()[_0x0deb('0x45')](_0x0deb('0x72'));_0x3f719d[_0x0deb('0x73')]=_0x306688['position'];_0x3f719d['count']=_0x306688[_0x0deb('0x74')];_0x3f719d[_0x0deb('0x44')]=_0x306688[_0x0deb('0x44')];_0x3f719d[_0x0deb('0x75')]=this['channels'][_0x306688[_0x0deb('0x44')]][_0x0deb('0x75')];logger[_0x0deb('0x68')]('[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s',_0x3f719d[_0x0deb('0x47')],_0x3f719d[_0x0deb('0x4e')]);_['merge'](_0x3f719d,_[_0x0deb('0x76')](_0x306688,_[_0x0deb('0x77')](_0x3f719d)));this[_0x0deb('0xe')][_0x306688[_0x0deb('0x44')]][_0x0deb('0x78')](_0x3f719d);this[_0x0deb('0xf')][_0x306688[_0x0deb('0x44')]]=_0x3f719d;this[_0x0deb('0x41')](_0x3f719d,_0x0deb('0x17'));}}catch(_0xa1bdc0){logger[_0x0deb('0x37')](_0x0deb('0x79'),_0x306688[_0x0deb('0x44')],util[_0x0deb('0x39')](_0xa1bdc0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x7a')]=function(_0x28ff01){try{if(this[_0x0deb('0x65')](_0x28ff01)){logger[_0x0deb('0x42')](_0x0deb('0x7b'),_0x28ff01['uniqueid'],util['inspect'](_0x28ff01,{'showHidden':![],'depth':null}));if(this[_0x0deb('0xe')][_0x28ff01[_0x0deb('0x44')]]){var _0x2c81c1=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x28ff01['uniqueid']]);_0x2c81c1[_0x0deb('0x7d')]=![];_0x2c81c1[_0x0deb('0x7e')]=null;_0x2c81c1[_0x0deb('0x7f')]=_0x28ff01[_0x0deb('0x7f')];_0x2c81c1[_0x0deb('0x80')]=_0x28ff01[_0x0deb('0x80')];_0x2c81c1['queuecallerabandon']=!![];_0x2c81c1['queuecallerabandonAt']=moment()[_0x0deb('0x45')](_0x0deb('0x72'));_0x2c81c1[_0x0deb('0x4b')]='ABANDONED';_0x2c81c1[_0x0deb('0x81')]=null;logger[_0x0deb('0x68')](_0x0deb('0x82'),_0x2c81c1[_0x0deb('0x47')],_0x2c81c1[_0x0deb('0x4e')]);this['channels'][_0x28ff01[_0x0deb('0x44')]]=_0x2c81c1;this['emitVoiceQueueChannelRemove'](_0x2c81c1,_0x0deb('0x19'));}}}catch(_0x51cf3c){logger[_0x0deb('0x37')](_0x0deb('0x7b'),_0x28ff01['uniqueid'],util[_0x0deb('0x39')](_0x51cf3c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x1a')]=function(_0x6d5cf4){try{if(this[_0x0deb('0x65')](_0x6d5cf4)){logger['debug'](_0x0deb('0x83'),_0x6d5cf4[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x6d5cf4,{'showHidden':![],'depth':null}));if(this[_0x0deb('0xe')][_0x6d5cf4[_0x0deb('0x44')]]){var _0x4eac56=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x6d5cf4['uniqueid']]);_0x4eac56['queuecallerleaveAt']=moment()[_0x0deb('0x45')](_0x0deb('0x72'));_0x4eac56[_0x0deb('0x84')]=_0x6d5cf4[_0x0deb('0x84')];_0x4eac56[_0x0deb('0x85')]=_0x6d5cf4[_0x0deb('0x85')];logger[_0x0deb('0x68')](_0x0deb('0x86'),_0x4eac56[_0x0deb('0x47')],_0x4eac56[_0x0deb('0x4e')],_0x6d5cf4[_0x0deb('0x84')],_0x6d5cf4[_0x0deb('0x85')]);this[_0x0deb('0xf')][_0x6d5cf4[_0x0deb('0x44')]]=_0x4eac56;this['emitVoiceQueueChannelSave'](_0x4eac56,_0x0deb('0x87'));}}}catch(_0x2e4632){logger[_0x0deb('0x37')](_0x0deb('0x83'),_0x6d5cf4['uniqueid'],util[_0x0deb('0x39')](_0x2e4632,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x88')]=function(_0x4d2e5f){try{if(this['isNotNull'](_0x4d2e5f)){logger[_0x0deb('0x42')](_0x0deb('0x89'),_0x4d2e5f['uniqueid'],util['inspect'](_0x4d2e5f,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x4d2e5f[_0x0deb('0x44')]]){var _0x20439b=_[_0x0deb('0x7c')](this['queueReports'][_0x4d2e5f[_0x0deb('0x44')]]);_0x20439b[_0x0deb('0x7d')]=!![];_0x20439b[_0x0deb('0x4b')]=_0x0deb('0x8a');logger[_0x0deb('0x68')](_0x0deb('0x8b'),_0x20439b[_0x0deb('0x47')],_0x20439b[_0x0deb('0x4e')]);}}}catch(_0x50b83b){logger[_0x0deb('0x37')]('[%s][voiceQueueReport][agentconnect]',_0x4d2e5f[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x50b83b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0x1b')]=function(_0x38ce6d){try{if(this['isNotNull'](_0x38ce6d)){logger[_0x0deb('0x42')](_0x0deb('0x8c'),_0x38ce6d[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x38ce6d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x38ce6d[_0x0deb('0x44')]]){var _0x1e068a=_['last'](this[_0x0deb('0xe')][_0x38ce6d['uniqueid']]);_0x1e068a[_0x0deb('0x19')]=![];_0x1e068a[_0x0deb('0x8d')]=null;_0x1e068a[_0x0deb('0x8e')]=!![];_0x1e068a[_0x0deb('0x81')]=_0x38ce6d[_0x0deb('0x8f')];_0x1e068a[_0x0deb('0x7f')]=_0x38ce6d[_0x0deb('0x7f')];_0x1e068a[_0x0deb('0x7d')]=!![];_0x1e068a[_0x0deb('0x90')]=![];_0x1e068a[_0x0deb('0x91')]=null;if(!_0x1e068a[_0x0deb('0x92')]){if(_0x38ce6d['reason']==_0x0deb('0x92')){_0x1e068a[_0x0deb('0x4b')]=_0x0deb('0x93');logger['info'](_0x0deb('0x94'),_0x1e068a[_0x0deb('0x47')],_0x1e068a[_0x0deb('0x4e')]);}else{if(_['startsWith'](_0x38ce6d['channel'][_0x0deb('0x95')](),'local/')){if(this[_0x0deb('0xe')][_0x38ce6d['linkedid']]){var _0x53d1b1=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x38ce6d[_0x0deb('0x96')]]);_0x53d1b1[_0x0deb('0x7d')]=![];_0x53d1b1['queuecallerexit']=!![];_0x53d1b1['queuecallerexitAt']=moment(_0x1e068a[_0x0deb('0x97')])[_0x0deb('0x98')](_0x38ce6d[_0x0deb('0x7f')],_0x0deb('0x99'))[_0x0deb('0x45')](_0x0deb('0x72'));_0x53d1b1[_0x0deb('0x4b')]='FORWARDTRANSFER';_0x53d1b1[_0x0deb('0x92')]=!![];_0x53d1b1['transfertype']='FORWARD';_0x53d1b1['transferexten']=_0x38ce6d[_0x0deb('0x9a')];_0x53d1b1[_0x0deb('0x9b')]=_0x38ce6d[_0x0deb('0x44')];logger[_0x0deb('0x68')](_0x0deb('0x9c'),_0x53d1b1[_0x0deb('0x47')],_0x53d1b1[_0x0deb('0x4e')]);var _0x5ec965=this[_0x0deb('0xe')][_0x38ce6d[_0x0deb('0x96')]];this['queueReports'][_0x38ce6d['linkedid']]=this[_0x0deb('0xe')][_0x38ce6d[_0x0deb('0x44')]];this[_0x0deb('0xe')][_0x38ce6d[_0x0deb('0x44')]]=_0x5ec965;}}else{_0x1e068a[_0x0deb('0x4b')]=_0x0deb('0x9d')+_0x38ce6d[_0x0deb('0x9e')][_0x0deb('0x9f')]();logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x1e068a['name'],_0x1e068a['type'],_0x1e068a[_0x0deb('0x4b')]);}}}this[_0x0deb('0xf')][_0x38ce6d[_0x0deb('0x44')]]=_0x1e068a;this[_0x0deb('0x3f')](_0x1e068a,_0x0deb('0xa0'));}}}catch(_0x2fdee6){logger['error'](_0x0deb('0x8c'),_0x38ce6d[_0x0deb('0x44')],util['inspect'](_0x2fdee6,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x0deb('0x1e')]=function(_0x38a9e5){try{if(this[_0x0deb('0x65')](_0x38a9e5)){logger[_0x0deb('0x42')](_0x0deb('0xa1'),_0x38a9e5[_0x0deb('0x44')],util['inspect'](_0x38a9e5,{'showHidden':![],'depth':null}));this[_0x0deb('0xa2')](_0x38a9e5[_0x0deb('0x44')],_['keys'](_0x38a9e5[_0x0deb('0xa3')])[0x0],_0x38a9e5[_0x0deb('0xa4')]);if(this[_0x0deb('0xe')][_0x38a9e5['uniqueid']]){var _0x5a993d=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x38a9e5['uniqueid']]);if(_0x5a993d){if(this[_0x0deb('0x65')](_0x38a9e5[_0x0deb('0xa3')])&&this['isNotNull'](_0x38a9e5[_0x0deb('0xa3')]['queuestatus'])){switch(_0x38a9e5[_0x0deb('0xa4')]){case'CONTINUE':_0x5a993d['queuecallerexit']=![];_0x5a993d[_0x0deb('0x91')]=null;break;case'TIMEOUT':_0x5a993d[_0x0deb('0xa5')]=_0x0deb('0xa6');_0x5a993d['queuecallerexit']=!![];_0x5a993d[_0x0deb('0x91')]=moment()[_0x0deb('0x45')](_0x0deb('0x72'));_0x5a993d['queuecallerleaveAt']=moment()[_0x0deb('0x45')](_0x0deb('0x72'));logger[_0x0deb('0x42')](_0x0deb('0xa7'),_0x38a9e5['uniqueid'],util[_0x0deb('0x39')](_0x5a993d,{'showHidden':![],'depth':null}));ami['emit']('custom:timeout',_0x5a993d);break;default:_0x5a993d[_0x0deb('0x90')]=!![];_0x5a993d[_0x0deb('0x91')]=moment()[_0x0deb('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x5a993d[_0x0deb('0xa8')]=moment()[_0x0deb('0x45')](_0x0deb('0x72'));}_0x5a993d['queuecallerabandon']=![];_0x5a993d[_0x0deb('0x8d')]=null;_0x5a993d[_0x0deb('0x4b')]=_0x38a9e5[_0x0deb('0xa4')];this['channels'][_0x38a9e5[_0x0deb('0x44')]]=_0x5a993d;this[_0x0deb('0x3f')](_0x5a993d,'varset');}else if(this['isNotNull'](_0x38a9e5[_0x0deb('0xa3')])&&this[_0x0deb('0x65')](_0x38a9e5[_0x0deb('0xa3')][_0x0deb('0xa9')])){if(!_0x5a993d[_0x0deb('0x19')]){_0x5a993d[_0x0deb('0x90')]=!![];_0x5a993d['queuecallerexitAt']=moment()[_0x0deb('0x45')]('YYYY-MM-DD\x20HH:mm:ss');_0x5a993d[_0x0deb('0x4b')]=_0x0deb('0xaa');_0x5a993d[_0x0deb('0xa8')]=moment()['format'](_0x0deb('0x72'));this['channels'][_0x38a9e5[_0x0deb('0x44')]]=_0x5a993d;}}logger[_0x0deb('0x68')](_0x0deb('0xab'),_0x38a9e5[_0x0deb('0x44')],_0x5a993d[_0x0deb('0x47')],_0x5a993d[_0x0deb('0x4e')],_[_0x0deb('0x77')](_0x38a9e5[_0x0deb('0xa3')])[0x0],_0x38a9e5[_0x0deb('0xa4')]);_0x5a993d[_0x0deb('0x13')]=this[_0x0deb('0x13')][_0x38a9e5[_0x0deb('0x44')]];}}}}catch(_0x349c1b){logger['error'](_0x0deb('0xa1'),_0x38a9e5['uniqueid'],util[_0x0deb('0x39')](_0x349c1b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')]['addVariable']=function(_0x2139aa,_0x49c7a9,_0x4e7fea){var _0x55c61f=[_0x0deb('0xac'),'rtpaudioqosbridged',_0x0deb('0xad'),_0x0deb('0xae'),'rtpaudioqosloss','rtpaudioqoslossbridged',_0x0deb('0xaf'),_0x0deb('0xb0'),'sipcallid',_0x0deb('0xb1'),'bridgepeer',_0x0deb('0xb2'),_0x0deb('0xb3'),_0x0deb('0xb4'),_0x0deb('0xb5'),_0x0deb('0xb6'),_0x0deb('0x8f'),'memberpenalty',_0x0deb('0xb7')];if(!_[_0x0deb('0xb8')](_0x49c7a9)&&!_[_0x0deb('0xb9')](_0x55c61f,_0x49c7a9)){if(_[_0x0deb('0x5d')](this[_0x0deb('0x13')][_0x2139aa])){this[_0x0deb('0x13')][_0x2139aa]={};}this[_0x0deb('0x13')][_0x2139aa][_0x49c7a9]=_0x4e7fea;}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0xba')]=function(_0x2ed11a,_0x422dba,_0xe8b183){var _0x33875a={};for(var _0x150800=0x0;_0x150800<this[_0x0deb('0xe')][_0x2ed11a][_0x0deb('0xbb')];_0x150800+=0x1){_0x33875a=this['queueReports'][_0x2ed11a][_0x150800];if(this[_0x0deb('0x10')][_0x33875a['queue']]){if(_0x33875a['queuecallerexit']&&_0x33875a[_0x0deb('0x92')]!=!![]){this['voiceQueues'][_0x33875a[_0x0deb('0x66')]][_0x0deb('0x56')]+=0x1;}if(_0x33875a[_0x0deb('0x19')]){this[_0x0deb('0x10')][_0x33875a[_0x0deb('0x66')]][_0x0deb('0xbc')]+=0x1;}this['voiceQueues'][_0x33875a[_0x0deb('0x66')]][_0x0deb('0x55')]+=moment(_0x33875a[_0x0deb('0xa8')])[_0x0deb('0xbd')](_0x33875a[_0x0deb('0x97')],_0x0deb('0x99'))||0x0;if(_0x150800===this[_0x0deb('0xe')][_0x2ed11a][_0x0deb('0xbb')]-0x1){this[_0x0deb('0x10')][_0x33875a['queue']][_0x0deb('0x54')]+=moment()['milliseconds'](0x0)['diff'](_0x33875a[_0x0deb('0x97')],_0x0deb('0x99'));this[_0x0deb('0x10')][_0x33875a['queue']][_0x0deb('0xbe')]+=0x1;if(_0x33875a[_0x0deb('0x7d')]){this[_0x0deb('0x10')][_0x33875a[_0x0deb('0x66')]][_0x0deb('0x51')]+=0x1;this[_0x0deb('0x10')][_0x33875a[_0x0deb('0x66')]]['sumBillable']+=moment()[_0x0deb('0xbf')](0x0)['diff'](_0x33875a[_0x0deb('0xa8')],'seconds');_0x33875a['queuecallercompleteAt']=moment()[_0x0deb('0x45')](_0x0deb('0x72'));_0x33875a[_0x0deb('0x90')]=![];_0x33875a[_0x0deb('0x91')]=null;}if(_0x33875a['queuecallerexit']&&_0x33875a[_0x0deb('0x92')]!=!![]){_0x33875a[_0x0deb('0xa5')]='unmanaged';logger[_0x0deb('0x42')](_0x0deb('0xc0'),_0x2ed11a,util[_0x0deb('0x39')](_0x33875a,{'showHidden':![],'depth':null}));ami[_0x0deb('0x40')]('custom:queuecallerunmanaged',_0x33875a);}if(_0x33875a[_0x0deb('0x19')]){_0x33875a[_0x0deb('0xa5')]=_0x0deb('0xbc');logger[_0x0deb('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:',_0x2ed11a,util['inspect'](_0x33875a,{'showHidden':![],'depth':null}));ami[_0x0deb('0x40')]('custom:queuecallerabandon',_0x33875a);}}else{this['voiceQueues'][_0x33875a[_0x0deb('0x66')]][_0x0deb('0x54')]+=this[_0x0deb('0x10')][_0x33875a['queue']]['sumHoldTime'];}logger['info'](_0x0deb('0xc1'),_0x2ed11a,_0x33875a[_0x0deb('0x47')],_0x33875a[_0x0deb('0x4e')],_0x422dba);if(_0xe8b183&&_0x33875a[_0x0deb('0x4b')]===_0x0deb('0xc2')){_0x33875a['queuecallerexitreason']=_0x0deb('0x8a');}this[_0x0deb('0xf')][_0x2ed11a]=_0x33875a;this[_0x0deb('0x3f')](_0x33875a,'hangup');this[_0x0deb('0x6f')](this[_0x0deb('0x10')][_0x33875a[_0x0deb('0x66')]],_0x0deb('0x1f'));}}logger[_0x0deb('0x42')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x2ed11a,util[_0x0deb('0x39')](this[_0x0deb('0xe')][_0x2ed11a],{'showHidden':![],'depth':null}));ami[_0x0deb('0x40')](_0x0deb('0xc3'),this['queueReports'][_0x2ed11a]);if(_0x33875a[_0x0deb('0x4b')]===_0x0deb('0xc2'))return;delete this[_0x0deb('0xe')][_0x2ed11a];delete this[_0x0deb('0xf')][_0x2ed11a];if(this[_0x0deb('0x13')][_0x2ed11a]){delete this[_0x0deb('0x13')][_0x2ed11a];}};VoiceQueueReport['prototype'][_0x0deb('0x20')]=function(_0xfe73c5){try{if(this[_0x0deb('0x65')](_0xfe73c5)){logger['debug'](_0x0deb('0xc4'),_0xfe73c5['uniqueid'],util[_0x0deb('0x39')](_0xfe73c5,{'showHidden':![],'depth':null}));if(this[_0x0deb('0xe')][_0xfe73c5[_0x0deb('0x44')]]){return this[_0x0deb('0xba')](_0xfe73c5[_0x0deb('0x44')],_0xfe73c5['cause-txt']);}if(this[_0x0deb('0xe')][_0xfe73c5['linkedid']]){if(_0xfe73c5[_0x0deb('0xc5')]==='21'){return;}return this[_0x0deb('0xba')](_0xfe73c5['linkedid'],_0xfe73c5['cause-txt'],!![]);}var _0x5291dc=Object[_0x0deb('0x77')](this[_0x0deb('0xe')]);for(var _0x9ee9e9=0x0;_0x9ee9e9<_0x5291dc[_0x0deb('0xbb')];_0x9ee9e9++){var _0x17d934=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x5291dc[_0x9ee9e9]]);if(_0x17d934&&_0x17d934[_0x0deb('0xc6')]===_0xfe73c5['uniqueid']){return this[_0x0deb('0xba')](_0x17d934['uniqueid'],_0xfe73c5[_0x0deb('0xc7')],!![]);}}}}catch(_0x5dd10b){logger['error'](_0x0deb('0xc4'),_0xfe73c5[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x5dd10b,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAttendedTransfer']=function(_0x4a032f){try{if(this['isNotNull'](_0x4a032f)){logger[_0x0deb('0x42')](_0x0deb('0xc8'),_0x4a032f['uniqueid'],util[_0x0deb('0x39')](_0x4a032f,{'showHidden':![],'depth':null}));var _0xc49b33;var _0x5d1fc4;var _0x12dea7;if(this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xc9')]]){_0xc49b33=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x4a032f['transfereeuniqueid']]);_0xc49b33['transferexten']=_0x4a032f[_0x0deb('0xca')];_0xc49b33[_0x0deb('0x9b')]=_0x4a032f[_0x0deb('0xcb')];_0xc49b33[_0x0deb('0x4b')]='ATTENDEDTRANSFER';_0xc49b33[_0x0deb('0x92')]=!![];_0xc49b33[_0x0deb('0xcc')]='ATTENDED';if(this['queueReports'][_0x4a032f[_0x0deb('0xcb')]]){_0x12dea7=this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xcb')]];this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xcb')]]=this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xc9')]];this['queueReports'][_0x4a032f[_0x0deb('0xc9')]]=_0x12dea7;_0x5d1fc4=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xc9')]]);_0x5d1fc4[_0x0deb('0x31')]=!![];}logger[_0x0deb('0x68')](_0x0deb('0xcd'),_0x4a032f[_0x0deb('0x44')],_0xc49b33[_0x0deb('0x47')],_0xc49b33[_0x0deb('0x4e')],_0xc49b33[_0x0deb('0xce')],_0xc49b33[_0x0deb('0x9b')]);}else if(this['queueReports'][_0x4a032f['transfertargetuniqueid']]){_0xc49b33=_[_0x0deb('0x7c')](this['queueReports'][_0x4a032f[_0x0deb('0xcf')]]);_0xc49b33['transferexten']=_0x4a032f[_0x0deb('0xd0')];_0xc49b33[_0x0deb('0x9b')]=_0x4a032f['origtransfereruniqueid'];_0xc49b33[_0x0deb('0x4b')]=_0x0deb('0xc2');_0xc49b33[_0x0deb('0x92')]=!![];_0xc49b33[_0x0deb('0xcc')]='ATTENDED';if(this[_0x0deb('0xe')][_0x4a032f['origtransfereruniqueid']]){_0x12dea7=this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xd1')]];this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xd1')]]=this['queueReports'][_0x4a032f[_0x0deb('0xcf')]];this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xcf')]]=_0x12dea7;_0x5d1fc4=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x4a032f['transfertargetuniqueid']]);_0x5d1fc4['switch']=!![];}logger[_0x0deb('0x68')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x4a032f['uniqueid'],_0xc49b33[_0x0deb('0x47')],_0xc49b33[_0x0deb('0x4e')],_0xc49b33[_0x0deb('0xce')],_0xc49b33[_0x0deb('0x9b')]);}else if(this['queueReports'][_0x4a032f[_0x0deb('0xd1')]]){_0xc49b33=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x4a032f['origtransfereruniqueid']]);_0xc49b33[_0x0deb('0xce')]=_0x4a032f['origtransfererexten'];_0xc49b33[_0x0deb('0x9b')]=_0x4a032f['origtransfereruniqueid'];_0xc49b33['queuecallerexitreason']=_0x0deb('0xc2');_0xc49b33['transfer']=!![];_0xc49b33[_0x0deb('0xcc')]=_0x0deb('0xd2');_0xc49b33[_0x0deb('0x31')]=!![];_0xc49b33[_0x0deb('0xc6')]=_0x4a032f[_0x0deb('0xc9')];}else if(this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xcb')]]){_0xc49b33=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x4a032f[_0x0deb('0xcb')]]);_0xc49b33[_0x0deb('0xce')]=_0x4a032f[_0x0deb('0xca')];_0xc49b33[_0x0deb('0x9b')]=_0x4a032f[_0x0deb('0xcb')];_0xc49b33['queuecallerexitreason']=_0x0deb('0xc2');_0xc49b33[_0x0deb('0x92')]=!![];_0xc49b33[_0x0deb('0xcc')]=_0x0deb('0xd2');_0xc49b33[_0x0deb('0x31')]=!![];_0xc49b33[_0x0deb('0xc6')]=_0x4a032f[_0x0deb('0xcf')];}}}catch(_0x550f05){logger[_0x0deb('0x37')]('[%s][voiceQueueReport][attendedtransfer]',_0x4a032f[_0x0deb('0x44')],util['inspect'](_0x550f05,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncBlindTransfer']=function(_0x3c7da1){try{if(this['isNotNull'](_0x3c7da1)){logger[_0x0deb('0x42')]('[%s][voiceQueueReport][blindtransfer]',_0x3c7da1[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x3c7da1,{'showHidden':![],'depth':null}));if(this[_0x0deb('0xe')][_0x3c7da1[_0x0deb('0xc9')]]){var _0x28ecb8=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x3c7da1[_0x0deb('0xc9')]]);_0x28ecb8[_0x0deb('0x4b')]=_0x0deb('0xd3');_0x28ecb8['transfer']=!![];_0x28ecb8[_0x0deb('0xcc')]='BLIND';_0x28ecb8['transferexten']=_0x3c7da1[_0x0deb('0xd4')];_0x28ecb8[_0x0deb('0x9b')]=_0x3c7da1[_0x0deb('0xc9')];logger[_0x0deb('0x68')](_0x0deb('0xd5'),_0x3c7da1[_0x0deb('0x44')],_0x28ecb8[_0x0deb('0x47')],_0x28ecb8[_0x0deb('0x4e')],_0x28ecb8[_0x0deb('0xce')],_0x28ecb8[_0x0deb('0x9b')]);this[_0x0deb('0x20')]({'event':_0x0deb('0xd6'),'uniqueid':_0x3c7da1[_0x0deb('0xc9')],'context':_0x3c7da1[_0x0deb('0xd7')],'channel':_0x3c7da1[_0x0deb('0xd8')]});}}}catch(_0x39f6e8){logger[_0x0deb('0x37')]('[%s][voiceQueueReport][blindtransfer]',_0x3c7da1[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x39f6e8,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')]['syncMusicOnHoldStart']=function(_0x66aa0d){try{if(this[_0x0deb('0x65')](_0x66aa0d)){logger[_0x0deb('0x42')](_0x0deb('0xd9'),_0x66aa0d[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x66aa0d,{'showHidden':![],'depth':null}));if(this[_0x0deb('0xe')][_0x66aa0d['uniqueid']]){var _0x206b4c=_['last'](this['queueReports'][_0x66aa0d['uniqueid']]);if(!_[_0x0deb('0xb8')](_0x206b4c[_0x0deb('0xa8')])){_0x206b4c[_0x0deb('0xda')]=moment()[_0x0deb('0x45')](_0x0deb('0x72'));logger[_0x0deb('0x68')](_0x0deb('0xdb'),_0x66aa0d[_0x0deb('0x44')],_0x206b4c[_0x0deb('0xda')]);}}}}catch(_0x168c85){logger[_0x0deb('0x37')](_0x0deb('0xd9'),_0x66aa0d[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x168c85,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0xdc')]=function(_0x3e6359){try{if(this[_0x0deb('0x65')](_0x3e6359)){logger[_0x0deb('0x42')]('[%s][voiceQueueReport][musiconholdstop]',_0x3e6359[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x3e6359,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3e6359[_0x0deb('0x44')]]){var _0x2fb37d=_[_0x0deb('0x7c')](this[_0x0deb('0xe')][_0x3e6359[_0x0deb('0x44')]]);if(!_[_0x0deb('0xb8')](_0x2fb37d['mohstarttime'])){_0x2fb37d['mohtime']+=moment()[_0x0deb('0xbf')](0x0)['diff'](_0x2fb37d[_0x0deb('0xda')],_0x0deb('0x99'));logger[_0x0deb('0x68')](_0x0deb('0xdd'),_0x3e6359[_0x0deb('0x44')],_0x2fb37d[_0x0deb('0xde')]);delete _0x2fb37d[_0x0deb('0xda')];}}}}catch(_0x1401d4){logger[_0x0deb('0x37')](_0x0deb('0xdf'),_0x3e6359[_0x0deb('0x44')],util['inspect'](_0x1401d4,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x0deb('0x9')][_0x0deb('0xe0')]=function(_0x52b1c4){try{if(this[_0x0deb('0x65')](_0x52b1c4)){logger[_0x0deb('0x42')](_0x0deb('0xe1'),_0x52b1c4[_0x0deb('0x44')],util[_0x0deb('0x39')](_0x52b1c4,{'showHidden':![],'depth':null}));if(_0x52b1c4['application'][_0x0deb('0x95')]()===_0x0deb('0xe2')){_0x52b1c4[_0x0deb('0xe3')]=_0x52b1c4['appdata']&&_0x52b1c4[_0x0deb('0xe4')][_0x0deb('0xe5')](_0x0deb('0xe6'))?_0x52b1c4['appdata']:(_0x52b1c4[_0x0deb('0xe4')]||_0x52b1c4[_0x0deb('0xe3')])[_0x0deb('0x95')]();if(_[_0x0deb('0xe5')](_0x52b1c4[_0x0deb('0xe3')][_0x0deb('0x95')](),'cdr(')){logger[_0x0deb('0x68')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x52b1c4['uniqueid'],_0x52b1c4['application'],_0x52b1c4[_0x0deb('0xe3')]);if(_['isUndefined'](this[_0x0deb('0xf')][_0x52b1c4[_0x0deb('0x44')]]))this[_0x0deb('0xf')][_0x52b1c4[_0x0deb('0x44')]]={};var _0x5813df=_0x52b1c4[_0x0deb('0xe3')][_0x0deb('0xe7')]('=');var _0x1078dc=_0x5813df[0x0]['toLowerCase']()[_0x0deb('0xe8')](/cdr\((.*)\)/);if(_0x1078dc)this[_0x0deb('0xf')][_0x52b1c4[_0x0deb('0x44')]][_0x1078dc[0x1]]=_0x5813df[0x1];}}}}catch(_0x400907){logger['error']('[%s][voiceQueueReport][newexten]',_0x52b1c4['uniqueid'],util['inspect'](_0x400907,{'showHidden':![],'depth':null}));}};module[_0x0deb('0xe9')]=VoiceQueueReport;
\ No newline at end of file
+var _0xe3ff=['[%s][voiceQueueReport][queuecallerleave]','last','queuecallerleaveAt','connectedlinenum','connectedlinename','[%s][voiceQueueReport][agentconnect]','queuecallercomplete','COMPLETEDBYAGENT','assigned','membername','queuecallerexit','queuecallerexitAt','transfer','reason','COMPLETED','startsWith','channel','toLowerCase','local/','queuecallerjoinAt','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','linkedid','COMPLETEDBY','toUpperCase','addVariable','variable','value','CONTINUE','TIMEOUT','lastevent','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','[%s][voiceQueueReport][varset]','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','length','unmanaged','abandoned','sumHoldTime','diff','sumDuration','milliseconds','seconds','total','sumBillable','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','syncHangup','cause-txt','cause','handleHangup','transferid','[%s][voiceQueueReport][hangup]','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfererexten','ATTENDED','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','origtransfererexten','origtransfereruniqueid','transfertargetuniqueid','[%s][voiceQueueReport][blindtransfer]','BLIND','extension','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','context','[%s][voiceQueueReport][musiconholdstart]','mohstarttime','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohtime','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','[%s][voiceQueueReport][musiconholdstop]','syncNewExten','[%s][voiceQueueReport][newexten]\x20event:','application','set','applicationdata','appdata','CDR(routeAlias)','split','match','[%s][voiceQueueReport][newexten]','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../ami','../model/queueReport','../model/voiceQueueSummary','redis','defaults','localhost','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','realtime','agents','queueChannels','voiceQueues','campaigns','summary','variables','queuesummary','syncQueueSummary','bind','syncQueueSummaryComplete','queuemember','syncQueueStatusComplete','queuecallerjoin','queuecallerabandon','syncQueueCallerAbandon','queuecallerleave','agentcomplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','isEmpty','hasOwnProperty','originated','waiting','queueStatusComplete','unlockRR','loggedIn','loggedInDb','paused','ringing','talking','channels','switch','sequence','isNil','Action','status','catch','message','No\x20such\x20channel','error','inspect','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','uniqueid','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','format','voice_queue:save','isUndefined','clearZombieChannels','queues','[voiceQueueReport][queues]','isRunning','then','actionid','createQueueSummaryReport','summaryEvent','available','loggedin','callers','forEach','incall','includes','unknown','notInUse','inUse','invalid','unavailable','ringInUse','queuestatus','assign','statusRequests','syncQueueMember','isNotNull','queue','[voiceQueueReport][queuesummary]\x20event:','info','[voiceQueueReport][queuesummary]\x20name:%s','[voiceQueueReport][queuesummary]','completeEvent','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','syncQueueCallerJoin','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','keys','queuecallercompleteAt','holdtime','originalposition','queuecallerabandonAt','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerabandon]'];(function(_0x15d8f3,_0x58eaf9){var _0x563fc8=function(_0xd97656){while(--_0xd97656){_0x15d8f3['push'](_0x15d8f3['shift']());}};_0x563fc8(++_0x58eaf9);}(_0xe3ff,0x6e));var _0xfe3f=function(_0x3946ab,_0x31626d){_0x3946ab=_0x3946ab-0x0;var _0x2defa9=_0xe3ff[_0x3946ab];return _0x2defa9;};'use strict';var _=require(_0xfe3f('0x0'));var moment=require(_0xfe3f('0x1'));var util=require(_0xfe3f('0x2'));var md5=require(_0xfe3f('0x3'));var Redis=require('ioredis');var config=require(_0xfe3f('0x4'));var logger=require(_0xfe3f('0x5'))(_0xfe3f('0x6'));var ami=require(_0xfe3f('0x7'));var QueueReport=require(_0xfe3f('0x8'));var VoiceQueueSummary=require(_0xfe3f('0x9'));config[_0xfe3f('0xa')]=_[_0xfe3f('0xb')](config[_0xfe3f('0xa')],{'host':_0xfe3f('0xc'),'port':0x18eb});var io=require(_0xfe3f('0xd'))(new Redis(config[_0xfe3f('0xa')]));var Sequence=function(){};Sequence[_0xfe3f('0xe')][_0xfe3f('0xf')]=function(_0x2cfa14){this[_0xfe3f('0x10')]=this['tail']?this[_0xfe3f('0x10')][_0xfe3f('0x11')](_0x2cfa14):_0x2cfa14();};function VoiceQueueReport(_0x1503a0){this['sequence']=new Sequence();this[_0xfe3f('0x12')]={};this[_0xfe3f('0x13')]=_0x1503a0;this[_0xfe3f('0x14')]=_0x1503a0[_0xfe3f('0x14')];this['channels']=_0x1503a0[_0xfe3f('0x15')];this['voiceQueues']=_0x1503a0[_0xfe3f('0x16')];this[_0xfe3f('0x17')]=_0x1503a0[_0xfe3f('0x17')];this[_0xfe3f('0x18')]=initializeSummary();this[_0xfe3f('0x19')]={};ami['on'](_0xfe3f('0x1a'),this[_0xfe3f('0x1b')][_0xfe3f('0x1c')](this));ami['on']('queuesummarycomplete',this[_0xfe3f('0x1d')]['bind'](this));ami['on'](_0xfe3f('0x1e'),this['syncQueueMember'][_0xfe3f('0x1c')](this));ami['on']('queuestatuscomplete',this[_0xfe3f('0x1f')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x20'),this['syncQueueCallerJoin']['bind'](this));ami['on'](_0xfe3f('0x21'),this[_0xfe3f('0x22')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x23'),this['syncQueueCallerLeave']['bind'](this));ami['on'](_0xfe3f('0x24'),this['syncAgentComplete'][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x25'),this[_0xfe3f('0x26')]['bind'](this));ami['on'](_0xfe3f('0x27'),this[_0xfe3f('0x28')]['bind'](this));ami['on'](_0xfe3f('0x29'),this['syncHangup'][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2a'),this[_0xfe3f('0x2b')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2c'),this[_0xfe3f('0x2d')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x2e'),this[_0xfe3f('0x2f')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x30'),this[_0xfe3f('0x31')][_0xfe3f('0x1c')](this));ami['on'](_0xfe3f('0x32'),this[_0xfe3f('0x33')][_0xfe3f('0x1c')](this));this[_0xfe3f('0x34')]();this[_0xfe3f('0x35')]();}function clearChannels(_0x42d85f){if(!_[_0xfe3f('0x36')](_0x42d85f)){for(var _0x1a04e5 in _0x42d85f){if(_0x42d85f['hasOwnProperty'](_0x1a04e5)){delete _0x42d85f[_0x1a04e5];}}}}function clearCampaigns(_0xbed590){if(!_[_0xfe3f('0x36')](_0xbed590)){for(var _0x1331a7 in _0xbed590){if(_0xbed590[_0xfe3f('0x37')](_0x1331a7)){_0xbed590[_0x1331a7][_0xfe3f('0x38')]=0x0;}}}}function clearVoiceQueues(_0xca8c1f){if(!_['isEmpty'](_0xca8c1f)){for(var _0x3884f7 in _0xca8c1f){if(_0xca8c1f['hasOwnProperty'](_0x3884f7)){_0xca8c1f[_0x3884f7][_0xfe3f('0x38')]=0x0;_0xca8c1f[_0x3884f7]['talking']=0x0;_0xca8c1f[_0x3884f7]['pTalking']=0x0;_0xca8c1f[_0x3884f7][_0xfe3f('0x39')]=0x0;_0xca8c1f[_0x3884f7][_0xfe3f('0x3a')]=!![];}}}}function clearAgentBooked(_0x3e574c){if(!_[_0xfe3f('0x36')](_0x3e574c)){for(var _0x3b083f in _0x3e574c){if(_0x3e574c[_0xfe3f('0x37')](_0x3b083f)){_0x3e574c[_0x3b083f][_0xfe3f('0x3b')]=!![];}}}}function initializeSummary(){return{'id':null,'completeEvent':null,'isRunning':![],'queues':{},'queuestatus':{},'statusRequests':0x0};}function hasQueueCountersChanged(_0x585d5d,_0x569be2){return _0x585d5d['available']!==_0x569be2['available']||_0x585d5d[_0xfe3f('0x3c')]!==_0x569be2[_0xfe3f('0x3c')]||_0x585d5d[_0xfe3f('0x3d')]!==_0x569be2[_0xfe3f('0x3d')]||_0x585d5d['paused']!==_0x569be2[_0xfe3f('0x3e')]||_0x585d5d[_0xfe3f('0x3f')]!==_0x569be2[_0xfe3f('0x3f')]||_0x585d5d['talking']!==_0x569be2[_0xfe3f('0x40')]||_0x585d5d[_0xfe3f('0x39')]!==_0x569be2['waiting'];}VoiceQueueReport[_0xfe3f('0xe')]['clearZombieChannels']=function(){var _0x71074f=this;for(var _0x23ce11 in this['channels']){if(this[_0xfe3f('0x41')][_0xfe3f('0x37')](_0x23ce11)&&!this[_0xfe3f('0x41')][_0x23ce11][_0xfe3f('0x42')]){this[_0xfe3f('0x43')][_0xfe3f('0xf')](function(){if(!_[_0xfe3f('0x44')](_0x71074f[_0xfe3f('0x41')][_0x23ce11])){return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x46'),'channel':_0x71074f[_0xfe3f('0x41')][_0x23ce11]['channel']})[_0xfe3f('0x47')](function(_0x165af6){if(_0x165af6[_0xfe3f('0x48')]===_0xfe3f('0x49')){setTimeout(function(){if(_0x71074f[_0xfe3f('0x41')][_0x23ce11]){delete _0x71074f[_0xfe3f('0x41')][_0x23ce11];logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][checkChannel]',_0x23ce11,util[_0xfe3f('0x4b')](_0x165af6,{'showHidden':![],'depth':null}));}if(_0x71074f[_0xfe3f('0x12')][_0x23ce11]){delete _0x71074f['queueReports'][_0x23ce11];logger[_0xfe3f('0x4a')](_0xfe3f('0x4c'),_0x23ce11,util[_0xfe3f('0x4b')](_0x165af6,{'showHidden':![],'depth':null}));}if(_0x71074f[_0xfe3f('0x19')][_0x23ce11]){delete _0x71074f[_0xfe3f('0x19')][_0x23ce11];logger[_0xfe3f('0x4a')](_0xfe3f('0x4d'),_0x23ce11,util['inspect'](_0x165af6,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype'][_0xfe3f('0x2b')]=function(){logger[_0xfe3f('0x4a')](_0xfe3f('0x4e'));clearChannels(this[_0xfe3f('0x41')]);this[_0xfe3f('0x4f')](this[_0xfe3f('0x12')]);clearAgentBooked(this['agents']);clearVoiceQueues(this['voiceQueues']);clearCampaigns(this[_0xfe3f('0x17')]);this[_0xfe3f('0x18')]=initializeSummary();};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x4f')]=function(_0x327bb2){var _0x13b34d=this;if(!_['isEmpty'](_0x327bb2)){for(var _0x4c1414 in _0x327bb2){if(_0x327bb2[_0xfe3f('0x37')](_0x4c1414)){_0x13b34d[_0xfe3f('0x50')](_0x327bb2[_0x4c1414],_0xfe3f('0x51'));delete _0x327bb2[_0x4c1414];}}}};VoiceQueueReport['prototype'][_0xfe3f('0x52')]=function(_0x54abcf,_0xd087d2,_0x1a4bb8){io['to'](_0x54abcf)[_0xfe3f('0x52')](_0xd087d2,_0x1a4bb8);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x53')]=function(_0x496cde,_0x2fd93b){logger[_0xfe3f('0x54')](_0xfe3f('0x55')+_0x2fd93b+_0xfe3f('0x56'),_0x496cde['uniqueid'],util[_0xfe3f('0x4b')](_0x496cde,{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xfe3f('0x57'),_0x496cde[_0xfe3f('0x58')]),_0xfe3f('0x59'),_0x496cde);io['emit'](_0xfe3f('0x5a'),_0x496cde);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x50')]=function(_0x47b413,_0x4e080d){logger[_0xfe3f('0x54')](_0xfe3f('0x55')+_0x4e080d+_0xfe3f('0x5b'),_0x47b413[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x47b413,{'showHidden':![],'depth':null}));if(_0x47b413[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){return;}this[_0xfe3f('0x52')](util['format']('voice:queue:%s',_0x47b413['name']),_0xfe3f('0x5f'),_0x47b413);io[_0xfe3f('0x52')](_0xfe3f('0x60'),_0x47b413);};VoiceQueueReport['prototype'][_0xfe3f('0x61')]=function(_0x1cb014,_0x2158f0){if(_0x1cb014[_0xfe3f('0x62')]===_0xfe3f('0x63')){var _0x19348f=new VoiceQueueSummary(_0x1cb014);var _0x323822=md5(JSON[_0xfe3f('0x64')](_0x19348f));if(_0x1cb014[_0xfe3f('0x3')]!==_0x323822){_0x1cb014[_0xfe3f('0x3')]=_0x323822;logger[_0xfe3f('0x54')](_0xfe3f('0x65')+_0x2158f0+_0xfe3f('0x66'),util[_0xfe3f('0x4b')](_0x19348f,{'showHidden':![],'depth':null}));this[_0xfe3f('0x52')](util[_0xfe3f('0x67')](_0xfe3f('0x57'),_0x19348f[_0xfe3f('0x58')]),_0xfe3f('0x68'),_0x19348f);}}};VoiceQueueReport[_0xfe3f('0xe')]['isNotNull']=function(_0x2f9756){return _0x2f9756!==null&&!_[_0xfe3f('0x69')](_0x2f9756);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x35')]=function(){var _0x514a3b=this;setInterval(function(){_0x514a3b[_0xfe3f('0x6a')]();ami['Action']({'action':_0xfe3f('0x6b')})[_0xfe3f('0x47')](function(_0x300304){logger[_0xfe3f('0x4a')](_0xfe3f('0x6c'),util['inspect'](_0x300304,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x34')]=function(){var _0x16b34e=this;setInterval(function(){if(!_0x16b34e[_0xfe3f('0x18')][_0xfe3f('0x6d')]){return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x1a')})[_0xfe3f('0x6e')](function(_0x52066e){_0x16b34e[_0xfe3f('0x18')]['id']=_0x52066e[_0xfe3f('0x6f')];_0x16b34e['summary'][_0xfe3f('0x6d')]=!![];_0x16b34e['summary']['queuestatus'][_0x52066e[_0xfe3f('0x6f')]]={};})[_0xfe3f('0x47')](function(_0x20d2b3){logger[_0xfe3f('0x4a')]('[voiceQueueReport][queuesummary]',util['inspect'](_0x20d2b3,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x70')]=function(_0x5dd1e4,_0x883338){var _0xe2598f=this[_0xfe3f('0x14')];var _0x11c590=this[_0xfe3f('0x18')][_0xfe3f('0x6b')][_0x5dd1e4['name']][_0xfe3f('0x71')];var _0x3c1653={'available':Number(_0x11c590[_0xfe3f('0x72')]),'busy':0x0,'inUse':0x0,'invalid':0x0,'loggedIn':Number(_0x11c590[_0xfe3f('0x73')]),'loggedInDb':0x0,'notInUse':0x0,'onHold':0x0,'paused':0x0,'ringing':0x0,'ringInUse':0x0,'talking':0x0,'unavailable':0x0,'unknown':0x0,'waiting':Number(_0x11c590[_0xfe3f('0x74')])};if(_0x5dd1e4){_0x883338[_0xfe3f('0x75')](function(_0x5e1d86){var _0x1a5adb=_0xe2598f['SIP/'+_0x5e1d86['name']];if(_0x1a5adb&&_0x1a5adb['online']){_0x3c1653[_0xfe3f('0x3d')]+=0x1;}if(_0x5e1d86[_0xfe3f('0x76')]==='1'){_0x3c1653['talking']+=0x1;}if(_0x5e1d86[_0xfe3f('0x3e')]==='1'&&!['2','7','8'][_0xfe3f('0x77')](_0x5e1d86['status'])){_0x3c1653[_0xfe3f('0x3e')]+=0x1;}switch(_0x5e1d86['status']){case'0':_0x3c1653[_0xfe3f('0x78')]+=0x1;break;case'1':_0x3c1653[_0xfe3f('0x79')]+=0x1;break;case'2':_0x3c1653[_0xfe3f('0x7a')]+=0x1;break;case'3':_0x3c1653['busy']+=0x1;break;case'4':_0x3c1653[_0xfe3f('0x7b')]+=0x1;break;case'5':_0x3c1653[_0xfe3f('0x7c')]+=0x1;break;case'6':_0x3c1653[_0xfe3f('0x3f')]+=0x1;break;case'7':_0x3c1653[_0xfe3f('0x7d')]+=0x1;break;case'8':_0x3c1653['onHold']+=0x1;break;}});}return _0x3c1653;};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x1f')]=function(_0x5ced36){var _0x119fc7=null;var _0x3bb978=this[_0xfe3f('0x18')]['id'];if(this['summary'][_0xfe3f('0x7e')][_0x3bb978]){_0x119fc7=this['summary'][_0xfe3f('0x7e')][_0x3bb978][_0x5ced36[_0xfe3f('0x6f')]];}if(!_0x119fc7){this[_0xfe3f('0x18')]=initializeSummary();return;}var _0x17afd3=this[_0xfe3f('0x16')][_0x119fc7['queue']];var _0x30dbb0=this['createQueueSummaryReport'](_0x17afd3,_0x119fc7['agents']);var _0x37adb6=hasQueueCountersChanged(_0x17afd3,_0x30dbb0);if(_0x37adb6){var _0x31c257=Object[_0xfe3f('0x7f')](_0x17afd3,_0x30dbb0);this[_0xfe3f('0x13')][_0xfe3f('0x16')][_0x17afd3[_0xfe3f('0x58')]]=_0x17afd3;this[_0xfe3f('0x61')](_0x31c257,_0xfe3f('0x1a'));}ami[_0xfe3f('0x52')]('custom:queuesummary',_0x17afd3);this['summary'][_0xfe3f('0x80')]-=0x1;var _0x12259c=this[_0xfe3f('0x18')][_0xfe3f('0x80')]>0x0?!![]:![];if(!_0x12259c){return this[_0xfe3f('0x1d')](this[_0xfe3f('0x18')]['completeEvent']);}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x81')]=function(_0x18b4db){var _0x5ad57d=this['summary']['id'];if(this['summary'][_0xfe3f('0x7e')][_0x5ad57d]&&this['summary'][_0xfe3f('0x7e')][_0x5ad57d][_0x18b4db[_0xfe3f('0x6f')]]){this[_0xfe3f('0x18')]['queuestatus'][_0x5ad57d][_0x18b4db[_0xfe3f('0x6f')]][_0xfe3f('0x14')]['push'](_0x18b4db);}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x1b')]=function(_0x5a0275){var _0x3aba8d=this;try{if(this[_0xfe3f('0x82')](_0x5a0275)&&this['isNotNull'](_0x5a0275[_0xfe3f('0x83')])){logger['debug'](_0xfe3f('0x84'),util[_0xfe3f('0x4b')](_0x5a0275,{'showHidden':![],'depth':null}));var _0x1c689b=this['voiceQueues'][_0x5a0275[_0xfe3f('0x83')]];if(_0x1c689b){logger[_0xfe3f('0x85')](_0xfe3f('0x86'),_0x1c689b[_0xfe3f('0x58')]);this[_0xfe3f('0x18')][_0xfe3f('0x6b')][_0x1c689b[_0xfe3f('0x58')]]={'summaryEvent':_0x5a0275};this['summary']['statusRequests']+=0x1;if(!this[_0xfe3f('0x18')]['queuestatus'][_0x5a0275[_0xfe3f('0x6f')]]){this[_0xfe3f('0x18')][_0xfe3f('0x7e')][_0x5a0275[_0xfe3f('0x6f')]]={};}return ami[_0xfe3f('0x45')]({'action':_0xfe3f('0x7e'),'queue':_0x1c689b['name']})[_0xfe3f('0x6e')](function(_0x4c59d5){_0x3aba8d['summary'][_0xfe3f('0x7e')][_0x5a0275[_0xfe3f('0x6f')]][_0x4c59d5[_0xfe3f('0x6f')]]={'queue':_0x1c689b[_0xfe3f('0x58')],'agents':[]};})[_0xfe3f('0x47')](function(_0x1a32c8){throw _0x1a32c8;});}}}catch(_0x51953c){logger[_0xfe3f('0x4a')](_0xfe3f('0x87'),util['inspect'](_0x51953c,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xfe3f('0x1d')]=function(_0x61e009){if(this[_0xfe3f('0x18')]['statusRequests']>0x0){this['summary'][_0xfe3f('0x88')]=_0x61e009;return;}logger[_0xfe3f('0x54')](_0xfe3f('0x89'),util[_0xfe3f('0x4b')](_0x61e009,{'showHidden':![],'depth':null}));this[_0xfe3f('0x18')]=initializeSummary();ami[_0xfe3f('0x52')](_0xfe3f('0x8a'),{});};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x8b')]=function(_0x33eeac){try{if(this['isNotNull'](_0x33eeac)){logger[_0xfe3f('0x54')](_0xfe3f('0x8c'),_0x33eeac[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x33eeac,{'showHidden':![],'depth':null}));if(_[_0xfe3f('0x69')](this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]])){this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]]=[];}if(_[_0xfe3f('0x69')](this[_0xfe3f('0x41')][_0x33eeac['uniqueid']])){this[_0xfe3f('0x41')][_0x33eeac[_0xfe3f('0x5c')]]={};}var _0x235fa4=new QueueReport();_0x235fa4[_0xfe3f('0x83')]=_0x33eeac[_0xfe3f('0x83')];_0x235fa4[_0xfe3f('0x62')]=this[_0xfe3f('0x16')][_0x235fa4[_0xfe3f('0x83')]]&&this[_0xfe3f('0x16')][_0x235fa4[_0xfe3f('0x83')]][_0xfe3f('0x62')]?this['voiceQueues'][_0x235fa4[_0xfe3f('0x83')]][_0xfe3f('0x62')]||_0xfe3f('0x63'):_0xfe3f('0x63');_0x235fa4['queuecallerjoinAt']=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x235fa4[_0xfe3f('0x8e')]=_0x33eeac[_0xfe3f('0x8e')];_0x235fa4[_0xfe3f('0x8f')]=_0x33eeac[_0xfe3f('0x8f')];_0x235fa4[_0xfe3f('0x5c')]=_0x33eeac[_0xfe3f('0x5c')];_0x235fa4[_0xfe3f('0x90')]=this[_0xfe3f('0x41')][_0x33eeac['uniqueid']][_0xfe3f('0x90')];logger[_0xfe3f('0x85')](_0xfe3f('0x91'),_0x235fa4[_0xfe3f('0x83')],_0x235fa4['type']);_[_0xfe3f('0x92')](_0x235fa4,_['pick'](_0x33eeac,_[_0xfe3f('0x93')](_0x235fa4)));this[_0xfe3f('0x12')][_0x33eeac[_0xfe3f('0x5c')]]['push'](_0x235fa4);this[_0xfe3f('0x41')][_0x33eeac[_0xfe3f('0x5c')]]=_0x235fa4;this['emitVoiceQueueChannelSave'](_0x235fa4,_0xfe3f('0x20'));}}catch(_0xaa99ba){logger[_0xfe3f('0x4a')](_0xfe3f('0x8c'),_0x33eeac[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0xaa99ba,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x22')]=function(_0x3eacf3){try{if(this[_0xfe3f('0x82')](_0x3eacf3)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][queuecallerabandon]',_0x3eacf3[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x3eacf3,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3eacf3[_0xfe3f('0x5c')]]){var _0x40e813=_['last'](this[_0xfe3f('0x12')][_0x3eacf3[_0xfe3f('0x5c')]]);_0x40e813['queuecallercomplete']=![];_0x40e813[_0xfe3f('0x94')]=null;_0x40e813['holdtime']=_0x3eacf3[_0xfe3f('0x95')];_0x40e813[_0xfe3f('0x96')]=_0x3eacf3[_0xfe3f('0x96')];_0x40e813[_0xfe3f('0x21')]=!![];_0x40e813[_0xfe3f('0x97')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x40e813[_0xfe3f('0x5d')]=_0xfe3f('0x98');_0x40e813[_0xfe3f('0x99')]=null;logger['info'](_0xfe3f('0x9a'),_0x40e813[_0xfe3f('0x83')],_0x40e813[_0xfe3f('0x62')]);this[_0xfe3f('0x41')][_0x3eacf3['uniqueid']]=_0x40e813;this[_0xfe3f('0x50')](_0x40e813,'queuecallerabandon');}}}catch(_0x60da6){logger[_0xfe3f('0x4a')](_0xfe3f('0x9b'),_0x3eacf3['uniqueid'],util[_0xfe3f('0x4b')](_0x60da6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncQueueCallerLeave']=function(_0x5e9822){try{if(this['isNotNull'](_0x5e9822)){logger[_0xfe3f('0x54')](_0xfe3f('0x9c'),_0x5e9822[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x5e9822,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x5e9822[_0xfe3f('0x5c')]]){var _0x2e2270=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x5e9822[_0xfe3f('0x5c')]]);_0x2e2270[_0xfe3f('0x9e')]=moment()['format'](_0xfe3f('0x8d'));_0x2e2270[_0xfe3f('0x9f')]=_0x5e9822[_0xfe3f('0x9f')];_0x2e2270[_0xfe3f('0xa0')]=_0x5e9822['connectedlinename'];logger[_0xfe3f('0x85')]('[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s',_0x2e2270['queue'],_0x2e2270[_0xfe3f('0x62')],_0x5e9822[_0xfe3f('0x9f')],_0x5e9822[_0xfe3f('0xa0')]);this[_0xfe3f('0x41')][_0x5e9822[_0xfe3f('0x5c')]]=_0x2e2270;this[_0xfe3f('0x53')](_0x2e2270,_0xfe3f('0x23'));}}}catch(_0x579748){logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][queuecallerleave]',_0x5e9822[_0xfe3f('0x5c')],util['inspect'](_0x579748,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAgentConnect']=function(_0x242322){try{if(this[_0xfe3f('0x82')](_0x242322)){logger[_0xfe3f('0x54')](_0xfe3f('0xa1'),_0x242322[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x242322,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x242322[_0xfe3f('0x5c')]]){var _0x3b55f4=_['last'](this[_0xfe3f('0x12')][_0x242322[_0xfe3f('0x5c')]]);_0x3b55f4[_0xfe3f('0xa2')]=!![];_0x3b55f4[_0xfe3f('0x5d')]=_0xfe3f('0xa3');logger[_0xfe3f('0x85')]('[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT',_0x3b55f4[_0xfe3f('0x83')],_0x3b55f4[_0xfe3f('0x62')]);}}}catch(_0x2274a3){logger['error'](_0xfe3f('0xa1'),_0x242322[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x2274a3,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncAgentComplete']=function(_0x53a973){try{if(this['isNotNull'](_0x53a973)){logger['debug']('[%s][voiceQueueReport][agentcomplete]',_0x53a973[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x53a973,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]]){var _0x5d0757=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]]);_0x5d0757['queuecallerabandon']=![];_0x5d0757[_0xfe3f('0x97')]=null;_0x5d0757[_0xfe3f('0xa4')]=!![];_0x5d0757[_0xfe3f('0x99')]=_0x53a973[_0xfe3f('0xa5')];_0x5d0757[_0xfe3f('0x95')]=_0x53a973['holdtime'];_0x5d0757[_0xfe3f('0xa2')]=!![];_0x5d0757[_0xfe3f('0xa6')]=![];_0x5d0757[_0xfe3f('0xa7')]=null;if(!_0x5d0757[_0xfe3f('0xa8')]){if(_0x53a973[_0xfe3f('0xa9')]==_0xfe3f('0xa8')){_0x5d0757[_0xfe3f('0x5d')]=_0xfe3f('0xaa');logger['info']('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED',_0x5d0757['queue'],_0x5d0757['type']);}else{if(_[_0xfe3f('0xab')](_0x53a973[_0xfe3f('0xac')][_0xfe3f('0xad')](),_0xfe3f('0xae'))){if(this[_0xfe3f('0x12')][_0x53a973['linkedid']]){var _0x32291a=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x53a973['linkedid']]);_0x32291a[_0xfe3f('0xa2')]=![];_0x32291a[_0xfe3f('0xa6')]=!![];_0x32291a['queuecallerexitAt']=moment(_0x5d0757[_0xfe3f('0xaf')])['add'](_0x53a973[_0xfe3f('0x95')],'seconds')[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x32291a[_0xfe3f('0x5d')]=_0xfe3f('0xb0');_0x32291a[_0xfe3f('0xa8')]=!![];_0x32291a[_0xfe3f('0xb1')]=_0xfe3f('0xb2');_0x32291a[_0xfe3f('0xb3')]=_0x53a973[_0xfe3f('0xb4')];_0x32291a[_0xfe3f('0xb5')]=_0x53a973['uniqueid'];logger[_0xfe3f('0x85')](_0xfe3f('0xb6'),_0x32291a[_0xfe3f('0x58')],_0x32291a['type']);var _0x5883bd=this['queueReports'][_0x53a973[_0xfe3f('0xb7')]];this[_0xfe3f('0x12')][_0x53a973['linkedid']]=this[_0xfe3f('0x12')][_0x53a973[_0xfe3f('0x5c')]];this['queueReports'][_0x53a973[_0xfe3f('0x5c')]]=_0x5883bd;}}else{_0x5d0757[_0xfe3f('0x5d')]=_0xfe3f('0xb8')+_0x53a973[_0xfe3f('0xa9')][_0xfe3f('0xb9')]();logger[_0xfe3f('0x85')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x5d0757[_0xfe3f('0x83')],_0x5d0757[_0xfe3f('0x62')],_0x5d0757[_0xfe3f('0x5d')]);}}}this['channels'][_0x53a973[_0xfe3f('0x5c')]]=_0x5d0757;this[_0xfe3f('0x50')](_0x5d0757,_0xfe3f('0x24'));}}}catch(_0x4b7dd7){logger[_0xfe3f('0x4a')]('[%s][voiceQueueReport][agentcomplete]',_0x53a973['uniqueid'],util[_0xfe3f('0x4b')](_0x4b7dd7,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x28')]=function(_0x4dee96){try{if(this['isNotNull'](_0x4dee96)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][varset]',_0x4dee96[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x4dee96,{'showHidden':![],'depth':null}));this[_0xfe3f('0xba')](_0x4dee96[_0xfe3f('0x5c')],_[_0xfe3f('0x93')](_0x4dee96[_0xfe3f('0xbb')])[0x0],_0x4dee96[_0xfe3f('0xbc')]);if(this['queueReports'][_0x4dee96[_0xfe3f('0x5c')]]){var _0xbc9c45=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x4dee96['uniqueid']]);if(_0xbc9c45){if(this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')])&&this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')][_0xfe3f('0x7e')])){switch(_0x4dee96['value']){case _0xfe3f('0xbd'):_0xbc9c45[_0xfe3f('0xa6')]=![];_0xbc9c45[_0xfe3f('0xa7')]=null;break;case _0xfe3f('0xbe'):_0xbc9c45[_0xfe3f('0xbf')]='timeout';_0xbc9c45['queuecallerexit']=!![];_0xbc9c45[_0xfe3f('0xa7')]=moment()['format'](_0xfe3f('0x8d'));_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));logger[_0xfe3f('0x54')](_0xfe3f('0xc0'),_0x4dee96['uniqueid'],util['inspect'](_0xbc9c45,{'showHidden':![],'depth':null}));ami[_0xfe3f('0x52')](_0xfe3f('0xc1'),_0xbc9c45);break;default:_0xbc9c45['queuecallerexit']=!![];_0xbc9c45[_0xfe3f('0xa7')]=moment()[_0xfe3f('0x67')]('YYYY-MM-DD\x20HH:mm:ss');_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));}_0xbc9c45['queuecallerabandon']=![];_0xbc9c45[_0xfe3f('0x97')]=null;_0xbc9c45[_0xfe3f('0x5d')]=_0x4dee96[_0xfe3f('0xbc')];this[_0xfe3f('0x41')][_0x4dee96[_0xfe3f('0x5c')]]=_0xbc9c45;this[_0xfe3f('0x50')](_0xbc9c45,_0xfe3f('0x27'));}else if(this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')])&&this[_0xfe3f('0x82')](_0x4dee96[_0xfe3f('0xbb')][_0xfe3f('0xc2')])){if(!_0xbc9c45[_0xfe3f('0x21')]){_0xbc9c45[_0xfe3f('0xa6')]=!![];_0xbc9c45['queuecallerexitAt']=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0xbc9c45[_0xfe3f('0x5d')]=_0xfe3f('0xc3');_0xbc9c45[_0xfe3f('0x9e')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));this['channels'][_0x4dee96[_0xfe3f('0x5c')]]=_0xbc9c45;}}logger[_0xfe3f('0x85')](_0xfe3f('0xc4'),_0x4dee96[_0xfe3f('0x5c')],_0xbc9c45[_0xfe3f('0x83')],_0xbc9c45['type'],_['keys'](_0x4dee96[_0xfe3f('0xbb')])[0x0],_0x4dee96[_0xfe3f('0xbc')]);_0xbc9c45['variables']=this[_0xfe3f('0x19')][_0x4dee96['uniqueid']];}}}}catch(_0x4f4c34){logger[_0xfe3f('0x4a')](_0xfe3f('0xc5'),_0x4dee96[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x4f4c34,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0xba')]=function(_0x557511,_0x5a3dfc,_0x50bd79){var _0x3dc67b=['rtpaudioqos','rtpaudioqosbridged',_0xfe3f('0xc6'),'rtpaudioqosjitterbridged',_0xfe3f('0xc7'),_0xfe3f('0xc8'),_0xfe3f('0xc9'),_0xfe3f('0xca'),_0xfe3f('0xcb'),_0xfe3f('0xcc'),_0xfe3f('0xcd'),_0xfe3f('0xce'),_0xfe3f('0xcf'),_0xfe3f('0xd0'),_0xfe3f('0xd1'),_0xfe3f('0xd2'),_0xfe3f('0xa5'),'memberpenalty',_0xfe3f('0xd3')];if(!_[_0xfe3f('0x44')](_0x5a3dfc)&&!_['includes'](_0x3dc67b,_0x5a3dfc)){if(_[_0xfe3f('0x69')](this['variables'][_0x557511])){this[_0xfe3f('0x19')][_0x557511]={};}this[_0xfe3f('0x19')][_0x557511][_0x5a3dfc]=_0x50bd79;}};VoiceQueueReport['prototype']['handleHangup']=function(_0x4dfd02,_0x375fe7,_0x50a8bf){var _0x57e8b3={};for(var _0x1360c9=0x0;_0x1360c9<this['queueReports'][_0x4dfd02][_0xfe3f('0xd4')];_0x1360c9+=0x1){_0x57e8b3=this[_0xfe3f('0x12')][_0x4dfd02][_0x1360c9];if(this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]]){if(_0x57e8b3[_0xfe3f('0xa6')]&&_0x57e8b3['transfer']!=!![]){this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd5')]+=0x1;}if(_0x57e8b3['queuecallerabandon']){this['voiceQueues'][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd6')]+=0x1;}this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd7')]+=moment(_0x57e8b3[_0xfe3f('0x9e')])[_0xfe3f('0xd8')](_0x57e8b3[_0xfe3f('0xaf')],'seconds')||0x0;if(_0x1360c9===this['queueReports'][_0x4dfd02][_0xfe3f('0xd4')]-0x1){this[_0xfe3f('0x16')][_0x57e8b3['queue']][_0xfe3f('0xd9')]+=moment()[_0xfe3f('0xda')](0x0)[_0xfe3f('0xd8')](_0x57e8b3[_0xfe3f('0xaf')],_0xfe3f('0xdb'));this[_0xfe3f('0x16')][_0x57e8b3['queue']][_0xfe3f('0xdc')]+=0x1;if(_0x57e8b3[_0xfe3f('0xa2')]){this[_0xfe3f('0x16')][_0x57e8b3['queue']]['answered']+=0x1;this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xdd')]+=moment()[_0xfe3f('0xda')](0x0)[_0xfe3f('0xd8')](_0x57e8b3['queuecallerleaveAt'],'seconds');_0x57e8b3[_0xfe3f('0x94')]=moment()[_0xfe3f('0x67')](_0xfe3f('0x8d'));_0x57e8b3['queuecallerexit']=![];_0x57e8b3['queuecallerexitAt']=null;}if(_0x57e8b3['queuecallerexit']&&_0x57e8b3[_0xfe3f('0xa8')]!=!![]){_0x57e8b3['lastevent']=_0xfe3f('0xd5');logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x4dfd02,util[_0xfe3f('0x4b')](_0x57e8b3,{'showHidden':![],'depth':null}));ami['emit'](_0xfe3f('0xde'),_0x57e8b3);}if(_0x57e8b3['queuecallerabandon']){_0x57e8b3[_0xfe3f('0xbf')]=_0xfe3f('0xd6');logger[_0xfe3f('0x54')](_0xfe3f('0xdf'),_0x4dfd02,util[_0xfe3f('0x4b')](_0x57e8b3,{'showHidden':![],'depth':null}));ami[_0xfe3f('0x52')](_0xfe3f('0xe0'),_0x57e8b3);}}else{this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]][_0xfe3f('0xd9')]+=this[_0xfe3f('0x16')][_0x57e8b3[_0xfe3f('0x83')]]['sumHoldTime'];}logger[_0xfe3f('0x85')](_0xfe3f('0xe1'),_0x4dfd02,_0x57e8b3[_0xfe3f('0x83')],_0x57e8b3[_0xfe3f('0x62')],_0x375fe7);if(_0x50a8bf&&_0x57e8b3[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){_0x57e8b3['queuecallerexitreason']=_0xfe3f('0xa3');}this[_0xfe3f('0x41')][_0x4dfd02]=_0x57e8b3;this[_0xfe3f('0x50')](_0x57e8b3,'hangup');}}logger[_0xfe3f('0x54')](_0xfe3f('0xe2'),_0x4dfd02,util[_0xfe3f('0x4b')](this[_0xfe3f('0x12')][_0x4dfd02],{'showHidden':![],'depth':null}));ami['emit'](_0xfe3f('0xe3'),this[_0xfe3f('0x12')][_0x4dfd02]);if(_0x57e8b3[_0xfe3f('0x5d')]===_0xfe3f('0x5e')){return;}if(_0x57e8b3[_0xfe3f('0xa6')]||_0x57e8b3[_0xfe3f('0x21')]||_0x57e8b3[_0xfe3f('0xa2')]){delete this[_0xfe3f('0x12')][_0x4dfd02];delete this[_0xfe3f('0x41')][_0x4dfd02];if(this[_0xfe3f('0x19')][_0x4dfd02]){delete this[_0xfe3f('0x19')][_0x4dfd02];}}};VoiceQueueReport['prototype'][_0xfe3f('0xe4')]=function(_0x444dbe){try{if(this[_0xfe3f('0x82')](_0x444dbe)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][hangup]',_0x444dbe['uniqueid'],util[_0xfe3f('0x4b')](_0x444dbe,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x444dbe[_0xfe3f('0x5c')]]){return this['handleHangup'](_0x444dbe['uniqueid'],_0x444dbe[_0xfe3f('0xe5')],![]);}if(this[_0xfe3f('0x12')][_0x444dbe[_0xfe3f('0xb7')]]){if(_0x444dbe[_0xfe3f('0xe6')]==='21'){return;}return this[_0xfe3f('0xe7')](_0x444dbe[_0xfe3f('0xb7')],_0x444dbe['cause-txt'],!![]);}var _0x1c1ebe=Object['keys'](this[_0xfe3f('0x12')]);for(var _0x114b44=0x0;_0x114b44<_0x1c1ebe['length'];_0x114b44++){var _0x2a9937=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x1c1ebe[_0x114b44]]);if(_0x2a9937&&_0x2a9937[_0xfe3f('0xe8')]===_0x444dbe['uniqueid']){return this[_0xfe3f('0xe7')](_0x2a9937[_0xfe3f('0x5c')],_0x444dbe['cause-txt'],!![]);}}}}catch(_0xddc652){logger[_0xfe3f('0x4a')](_0xfe3f('0xe9'),_0x444dbe['uniqueid'],util[_0xfe3f('0x4b')](_0xddc652,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncAttendedTransfer']=function(_0x52d33d){try{if(this[_0xfe3f('0x82')](_0x52d33d)){logger['debug'](_0xfe3f('0xea'),_0x52d33d[_0xfe3f('0x5c')],util['inspect'](_0x52d33d,{'showHidden':![],'depth':null}));var _0x11aa2b;var _0x51b252;var _0x5f2221;if(this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xec')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d['secondtransfereruniqueid'];_0x11aa2b['queuecallerexitreason']='ATTENDEDTRANSFER';_0x11aa2b['transfer']=!![];_0x11aa2b['transfertype']=_0xfe3f('0xed');if(this['queueReports'][_0x52d33d[_0xfe3f('0xee')]]){_0x5f2221=this['queueReports'][_0x52d33d[_0xfe3f('0xee')]];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]=this[_0xfe3f('0x12')][_0x52d33d['transfereeuniqueid']];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xeb')]]=_0x5f2221;_0x51b252=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d['transfereeuniqueid']]);_0x51b252[_0xfe3f('0x42')]=!![];}logger['info'](_0xfe3f('0xef'),_0x52d33d[_0xfe3f('0x5c')],_0x11aa2b[_0xfe3f('0x83')],_0x11aa2b[_0xfe3f('0x62')],_0x11aa2b[_0xfe3f('0xb3')],_0x11aa2b[_0xfe3f('0xb5')]);}else if(this[_0xfe3f('0x12')][_0x52d33d['transfertargetuniqueid']]){_0x11aa2b=_['last'](this[_0xfe3f('0x12')][_0x52d33d['transfertargetuniqueid']]);_0x11aa2b['transferexten']=_0x52d33d[_0xfe3f('0xf0')];_0x11aa2b['transferuniqueid']=_0x52d33d[_0xfe3f('0xf1')];_0x11aa2b[_0xfe3f('0x5d')]=_0xfe3f('0x5e');_0x11aa2b['transfer']=!![];_0x11aa2b[_0xfe3f('0xb1')]='ATTENDED';if(this['queueReports'][_0x52d33d[_0xfe3f('0xf1')]]){_0x5f2221=this[_0xfe3f('0x12')][_0x52d33d['origtransfereruniqueid']];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf1')]]=this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]];this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]]=_0x5f2221;_0x51b252=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf2')]]);_0x51b252[_0xfe3f('0x42')]=!![];}logger[_0xfe3f('0x85')](_0xfe3f('0xef'),_0x52d33d[_0xfe3f('0x5c')],_0x11aa2b[_0xfe3f('0x83')],_0x11aa2b['type'],_0x11aa2b[_0xfe3f('0xb3')],_0x11aa2b[_0xfe3f('0xb5')]);}else if(this['queueReports'][_0x52d33d[_0xfe3f('0xf1')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xf1')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xf0')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d['origtransfereruniqueid'];_0x11aa2b[_0xfe3f('0x5d')]='ATTENDEDTRANSFER';_0x11aa2b[_0xfe3f('0xa8')]=!![];_0x11aa2b['transfertype']=_0xfe3f('0xed');_0x11aa2b[_0xfe3f('0x42')]=!![];_0x11aa2b[_0xfe3f('0xe8')]=_0x52d33d['transfereeuniqueid'];}else if(this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]){_0x11aa2b=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x52d33d[_0xfe3f('0xee')]]);_0x11aa2b[_0xfe3f('0xb3')]=_0x52d33d[_0xfe3f('0xec')];_0x11aa2b[_0xfe3f('0xb5')]=_0x52d33d[_0xfe3f('0xee')];_0x11aa2b['queuecallerexitreason']=_0xfe3f('0x5e');_0x11aa2b[_0xfe3f('0xa8')]=!![];_0x11aa2b[_0xfe3f('0xb1')]='ATTENDED';_0x11aa2b[_0xfe3f('0x42')]=!![];_0x11aa2b[_0xfe3f('0xe8')]=_0x52d33d['transfertargetuniqueid'];}}}catch(_0x417dda){logger[_0xfe3f('0x4a')](_0xfe3f('0xea'),_0x52d33d[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x417dda,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')]['syncBlindTransfer']=function(_0x390de0){try{if(this[_0xfe3f('0x82')](_0x390de0)){logger['debug'](_0xfe3f('0xf3'),_0x390de0[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x390de0,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x390de0[_0xfe3f('0xeb')]]){var _0x53af73=_[_0xfe3f('0x9d')](this['queueReports'][_0x390de0[_0xfe3f('0xeb')]]);_0x53af73[_0xfe3f('0x5d')]='BLINDTRANSFER';_0x53af73[_0xfe3f('0xa8')]=!![];_0x53af73[_0xfe3f('0xb1')]=_0xfe3f('0xf4');_0x53af73['transferexten']=_0x390de0[_0xfe3f('0xf5')];_0x53af73[_0xfe3f('0xb5')]=_0x390de0[_0xfe3f('0xeb')];logger[_0xfe3f('0x85')](_0xfe3f('0xf6'),_0x390de0[_0xfe3f('0x5c')],_0x53af73['queue'],_0x53af73['type'],_0x53af73['transferexten'],_0x53af73[_0xfe3f('0xb5')]);this[_0xfe3f('0xe4')]({'event':_0xfe3f('0xf7'),'uniqueid':_0x390de0[_0xfe3f('0xeb')],'context':_0x390de0[_0xfe3f('0xf8')],'channel':_0x390de0['transfererchannel']});}}}catch(_0x2a65a9){logger[_0xfe3f('0x4a')](_0xfe3f('0xf3'),_0x390de0[_0xfe3f('0x5c')],util['inspect'](_0x2a65a9,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x2d')]=function(_0x1c7805){try{if(this[_0xfe3f('0x82')](_0x1c7805)){logger[_0xfe3f('0x54')](_0xfe3f('0xf9'),_0x1c7805[_0xfe3f('0x5c')],util['inspect'](_0x1c7805,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x1c7805[_0xfe3f('0x5c')]]){var _0x587470=_[_0xfe3f('0x9d')](this[_0xfe3f('0x12')][_0x1c7805['uniqueid']]);if(!_[_0xfe3f('0x44')](_0x587470[_0xfe3f('0x9e')])){_0x587470[_0xfe3f('0xfa')]=moment()['format'](_0xfe3f('0x8d'));logger[_0xfe3f('0x85')](_0xfe3f('0xfb'),_0x1c7805['uniqueid'],_0x587470['mohstarttime']);}}}}catch(_0x330151){logger[_0xfe3f('0x4a')](_0xfe3f('0xf9'),_0x1c7805[_0xfe3f('0x5c')],util['inspect'](_0x330151,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0xfe3f('0xe')][_0xfe3f('0x2f')]=function(_0x48fa46){try{if(this[_0xfe3f('0x82')](_0x48fa46)){logger[_0xfe3f('0x54')]('[%s][voiceQueueReport][musiconholdstop]',_0x48fa46[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x48fa46,{'showHidden':![],'depth':null}));if(this[_0xfe3f('0x12')][_0x48fa46[_0xfe3f('0x5c')]]){var _0x126173=_[_0xfe3f('0x9d')](this['queueReports'][_0x48fa46[_0xfe3f('0x5c')]]);if(!_[_0xfe3f('0x44')](_0x126173[_0xfe3f('0xfa')])){_0x126173[_0xfe3f('0xfc')]+=moment()['milliseconds'](0x0)['diff'](_0x126173[_0xfe3f('0xfa')],_0xfe3f('0xdb'));logger[_0xfe3f('0x85')](_0xfe3f('0xfd'),_0x48fa46['uniqueid'],_0x126173['mohtime']);delete _0x126173[_0xfe3f('0xfa')];}}}}catch(_0x56db42){logger[_0xfe3f('0x4a')](_0xfe3f('0xfe'),_0x48fa46[_0xfe3f('0x5c')],util['inspect'](_0x56db42,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0xfe3f('0xff')]=function(_0x3c1300){try{if(this[_0xfe3f('0x82')](_0x3c1300)){logger['debug'](_0xfe3f('0x100'),_0x3c1300[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x3c1300,{'showHidden':![],'depth':null}));if(_0x3c1300[_0xfe3f('0x101')][_0xfe3f('0xad')]()===_0xfe3f('0x102')){_0x3c1300[_0xfe3f('0x103')]=_0x3c1300['appdata']&&_0x3c1300[_0xfe3f('0x104')]['startsWith'](_0xfe3f('0x105'))?_0x3c1300[_0xfe3f('0x104')]:(_0x3c1300['appdata']||_0x3c1300[_0xfe3f('0x103')])[_0xfe3f('0xad')]();if(_['startsWith'](_0x3c1300[_0xfe3f('0x103')][_0xfe3f('0xad')](),'cdr(')){logger[_0xfe3f('0x85')]('[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s',_0x3c1300[_0xfe3f('0x5c')],_0x3c1300[_0xfe3f('0x101')],_0x3c1300['applicationdata']);if(_['isUndefined'](this['channels'][_0x3c1300[_0xfe3f('0x5c')]]))this['channels'][_0x3c1300[_0xfe3f('0x5c')]]={};var _0x4f8acb=_0x3c1300[_0xfe3f('0x103')][_0xfe3f('0x106')]('=');var _0x5131fa=_0x4f8acb[0x0][_0xfe3f('0xad')]()[_0xfe3f('0x107')](/cdr\((.*)\)/);if(_0x5131fa)this[_0xfe3f('0x41')][_0x3c1300['uniqueid']][_0x5131fa[0x1]]=_0x4f8acb[0x1];}}}}catch(_0x2dcdf9){logger[_0xfe3f('0x4a')](_0xfe3f('0x108'),_0x3c1300[_0xfe3f('0x5c')],util[_0xfe3f('0x4b')](_0x2dcdf9,{'showHidden':![],'depth':null}));}};module[_0xfe3f('0x109')]=VoiceQueueReport;
\ No newline at end of file
index 77e19fd..5ffa837 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xebb8=['../client','createHistory','queue','Request','CreateReportAgentPreview'];(function(_0x1952df,_0x185dd4){var _0x1e92d6=function(_0x5ed16d){while(--_0x5ed16d){_0x1952df['push'](_0x1952df['shift']());}};_0x1e92d6(++_0x185dd4);}(_0xebb8,0x136));var _0x8ebb=function(_0x65b059,_0xcb5a8a){_0x65b059=_0x65b059-0x0;var _0x25bd8c=_0xebb8[_0x65b059];return _0x25bd8c;};'use strict';var client=require(_0x8ebb('0x0'));exports[_0x8ebb('0x1')]=function(_0x271827){return function(){_0x271827['campaign']=_0x271827[_0x8ebb('0x2')];return client[_0x8ebb('0x3')](_0x8ebb('0x4'),{'body':_0x271827,'log':_0x8ebb('0x4')});};};
\ No newline at end of file
+var _0xce69=['createHistory','campaign','queue','Request','CreateReportAgentPreview'];(function(_0x3727ae,_0x165f88){var _0x1c3f01=function(_0x5cd5a5){while(--_0x5cd5a5){_0x3727ae['push'](_0x3727ae['shift']());}};_0x1c3f01(++_0x165f88);}(_0xce69,0x122));var _0x9ce6=function(_0x34df4a,_0x209d10){_0x34df4a=_0x34df4a-0x0;var _0x145c69=_0xce69[_0x34df4a];return _0x145c69;};'use strict';var client=require('../client');exports[_0x9ce6('0x0')]=function(_0x2b7a4a){return function(){_0x2b7a4a[_0x9ce6('0x1')]=_0x2b7a4a[_0x9ce6('0x2')];return client[_0x9ce6('0x3')](_0x9ce6('0x4'),{'body':_0x2b7a4a,'log':_0x9ce6('0x4')});};};
\ No newline at end of file
index d30bbf3..2ab7706 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaca9=['Request','CreateAttachment','create'];(function(_0x25e216,_0x17f06a){var _0xbeae5b=function(_0xe9f8e5){while(--_0xe9f8e5){_0x25e216['push'](_0x25e216['shift']());}};_0xbeae5b(++_0x17f06a);}(_0xaca9,0x1b5));var _0x9aca=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0xaca9[_0x17b6e3];return _0x3906f3;};'use strict';var client=require('../client');exports[_0x9aca('0x0')]=function(_0x1c24a1){return client[_0x9aca('0x1')]('CreateAttachment',{'body':_0x1c24a1,'log':_0x9aca('0x2')});};
\ No newline at end of file
+var _0xd827=['Request','CreateAttachment','../client'];(function(_0x2b342c,_0x3ebd85){var _0x5d9692=function(_0x46624b){while(--_0x46624b){_0x2b342c['push'](_0x2b342c['shift']());}};_0x5d9692(++_0x3ebd85);}(_0xd827,0x1d6));var _0x7d82=function(_0x4d7a61,_0x3fb6e6){_0x4d7a61=_0x4d7a61-0x0;var _0x186f73=_0xd827[_0x4d7a61];return _0x186f73;};'use strict';var client=require(_0x7d82('0x0'));exports['create']=function(_0x10825f){return client[_0x7d82('0x1')]('CreateAttachment',{'body':_0x10825f,'log':_0x7d82('0x2')});};
\ No newline at end of file
index 20a4016..1f0f5e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialPrefix','Trunk','callerid','TrunkBackup','Interval','Intervals','SquareProject','../client','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName'];(function(_0x2fb8e6,_0x5bf19b){var _0x18b53b=function(_0xbe2a8b){while(--_0xbe2a8b){_0x2fb8e6['push'](_0x2fb8e6['shift']());}};_0x18b53b(++_0x5bf19b);}(_0x326f,0xd1));var _0xf326=function(_0x271e8a,_0x448a01){_0x271e8a=_0x271e8a-0x0;var _0x159bdb=_0x326f[_0x271e8a];return _0x159bdb;};'use strict';var client=require(_0xf326('0x0'));exports['getCampaigns']=function(){return function(){return client['Request'](_0xf326('0x1'),{'options':{'raw':![],'attributes':['id',_0xf326('0x2'),_0xf326('0x3'),_0xf326('0x4'),_0xf326('0x5'),_0xf326('0x6'),_0xf326('0x7'),_0xf326('0x8'),_0xf326('0x9'),_0xf326('0xa'),'dialBusyMaxRetry',_0xf326('0xb'),_0xf326('0xc'),_0xf326('0xd'),_0xf326('0xe'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry',_0xf326('0xf'),_0xf326('0x10'),_0xf326('0x11'),_0xf326('0x12'),_0xf326('0x13'),'dialAgentRejectMaxRetry',_0xf326('0x14'),'dialTimezone',_0xf326('0x15'),'dialAMDActive',_0xf326('0x16'),'dialAMDGreeting',_0xf326('0x17'),_0xf326('0x18'),'dialAMDMinWordLength',_0xf326('0x19'),_0xf326('0x1a'),_0xf326('0x1b'),_0xf326('0x1c'),'dialOrderByScheduledAt',_0xf326('0x1d'),'dialRandomLastDigitCallerIdNumber','dialCutDigit'],'include':[{'model':_0xf326('0x1e'),'as':_0xf326('0x1e'),'attributes':['id',_0xf326('0x2'),_0xf326('0x1f'),_0xf326('0x4')]},{'model':_0xf326('0x1e'),'as':_0xf326('0x20'),'attributes':['id',_0xf326('0x2'),'callerid',_0xf326('0x4')]},{'model':_0xf326('0x21'),'as':_0xf326('0x21'),'attributes':['id',_0xf326('0x2')],'include':[{'model':_0xf326('0x21'),'as':_0xf326('0x22'),'attributes':['id','name','interval']}]},{'model':'SquareProject','as':_0xf326('0x23'),'attributes':['id',_0xf326('0x2')]}]},'log':'getCampaign'});};};
\ No newline at end of file
+var _0x1261=['Interval','interval','SquareProject','getCampaign','getCampaigns','Request','GetCampaign','name','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialAgentRejectMaxRetry','dialGlobalInterval','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','TrunkBackup','callerid'];(function(_0x607cf1,_0x3ca1af){var _0x56fdbe=function(_0x3155a6){while(--_0x3155a6){_0x607cf1['push'](_0x607cf1['shift']());}};_0x56fdbe(++_0x3ca1af);}(_0x1261,0x144));var _0x1126=function(_0x244f5d,_0x3c98c6){_0x244f5d=_0x244f5d-0x0;var _0x1a3886=_0x1261[_0x244f5d];return _0x1a3886;};'use strict';var client=require('../client');exports[_0x1126('0x0')]=function(){return function(){return client[_0x1126('0x1')](_0x1126('0x2'),{'options':{'raw':![],'attributes':['id',_0x1126('0x3'),_0x1126('0x4'),_0x1126('0x5'),_0x1126('0x6'),_0x1126('0x7'),_0x1126('0x8'),_0x1126('0x9'),'dialCongestionMaxRetry','dialCongestionRetryFrequency',_0x1126('0xa'),_0x1126('0xb'),'dialNoAnswerMaxRetry',_0x1126('0xc'),_0x1126('0xd'),_0x1126('0xe'),_0x1126('0xf'),_0x1126('0x10'),'dialDropRetryFrequency',_0x1126('0x11'),_0x1126('0x12'),_0x1126('0x13'),'dialMachineRetryFrequency',_0x1126('0x14'),'dialAgentRejectRetryFrequency','dialTimezone',_0x1126('0x15'),'dialAMDActive',_0x1126('0x16'),_0x1126('0x17'),_0x1126('0x18'),_0x1126('0x19'),_0x1126('0x1a'),_0x1126('0x1b'),_0x1126('0x1c'),_0x1126('0x1d'),_0x1126('0x1e'),'dialOrderByScheduledAt','dialPrefix',_0x1126('0x1f'),_0x1126('0x20')],'include':[{'model':_0x1126('0x21'),'as':'Trunk','attributes':['id',_0x1126('0x3'),'callerid',_0x1126('0x5')]},{'model':_0x1126('0x21'),'as':_0x1126('0x22'),'attributes':['id','name',_0x1126('0x23'),_0x1126('0x5')]},{'model':'Interval','as':'Interval','attributes':['id',_0x1126('0x3')],'include':[{'model':_0x1126('0x24'),'as':'Intervals','attributes':['id','name',_0x1126('0x25')]}]},{'model':'SquareProject','as':_0x1126('0x26'),'attributes':['id',_0x1126('0x3')]}]},'log':_0x1126('0x27')});};};
\ No newline at end of file
index 5515d0f..dacdfa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd6c=['Request','../client','CreateCmContact','getContacts'];(function(_0x22cdb9,_0x869d6b){var _0x2ff544=function(_0x8531a9){while(--_0x8531a9){_0x22cdb9['push'](_0x22cdb9['shift']());}};_0x2ff544(++_0x869d6b);}(_0xdd6c,0x1bd));var _0xcdd6=function(_0x66e0a8,_0x5bc22a){_0x66e0a8=_0x66e0a8-0x0;var _0x125c46=_0xdd6c[_0x66e0a8];return _0x125c46;};'use strict';var client=require(_0xcdd6('0x0'));exports['createContact']=function(_0x59ab84){return function(){return client['Request']('CreateCmContact',{'body':_0x59ab84,'log':_0xcdd6('0x1')});};};exports[_0xcdd6('0x2')]=function(_0x14475b){return function(){return client[_0xcdd6('0x3')]('GetCmContact',{'options':_0x14475b,'log':'GetCmContact'});};};
\ No newline at end of file
+var _0x8ecb=['Request','CreateCmContact','GetCmContact','../client'];(function(_0x3bd778,_0x4c8d9e){var _0x579664=function(_0x2d5040){while(--_0x2d5040){_0x3bd778['push'](_0x3bd778['shift']());}};_0x579664(++_0x4c8d9e);}(_0x8ecb,0x6b));var _0xb8ec=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x8ecb[_0x3bf83f];return _0x22c4a9;};'use strict';var client=require(_0xb8ec('0x0'));exports['createContact']=function(_0x43a565){return function(){return client[_0xb8ec('0x1')](_0xb8ec('0x2'),{'body':_0x43a565,'log':_0xb8ec('0x2')});};};exports['getContacts']=function(_0x51fefc){return function(){return client[_0xb8ec('0x1')](_0xb8ec('0x3'),{'options':_0x51fefc,'log':_0xb8ec('0x3')});};};
\ No newline at end of file
index 11114b7..2689293 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108f=['campaign','MoveContactManagedDialer','ContactId','countReScheduled','CountReScheduled','getContactPreview','GetCmHopperPreview','User','Agent','VoiceQueue','Queue','name','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','../client','getContacts','Request','GetCmHopper','CmContact','Contact','getCmHopper','updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ListId','VoiceQueueId','destroyContact','DestroyCmHopper','getContactDialer','DESC','scheduledat','ASC','GetContactDialer','getContactDialerIvr','priority','moveContactManagedDialer'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x108f,0x69));var _0xf108=function(_0x55bb26,_0x5dbbc9){_0x55bb26=_0x55bb26-0x0;var _0x1bedc8=_0x108f[_0x55bb26];return _0x1bedc8;};'use strict';var client=require(_0xf108('0x0'));var moment=require('moment');exports[_0xf108('0x1')]=function(_0x201ef6,_0x10dd2a){return function(){return client[_0xf108('0x2')](_0xf108('0x3'),{'options':{'where':{'VoiceQueueId':_0x201ef6},'include':[{'model':_0xf108('0x4'),'as':_0xf108('0x5')}],'limit':_0x10dd2a,'raw':![]},'log':_0xf108('0x6')});};};exports[_0xf108('0x7')]=function(_0x4ff512,_0xf7e984,_0x586c01){return function(){return client[_0xf108('0x2')](_0xf108('0x8'),{'body':_0x4ff512,'options':{'where':{'VoiceQueueId':_0xf7e984,'scheduledat':{'$lte':moment()[_0xf108('0x9')](_0xf108('0xa'))}},'limit':_0x586c01},'log':'UpdateCmHopper'});};};exports[_0xf108('0xb')]=function(_0xff07ae){return function(){return client['Request'](_0xf108('0x8'),{'body':_0xff07ae,'options':{'where':{'ContactId':_0xff07ae['ContactId'],'ListId':_0xff07ae[_0xf108('0xc')],'VoiceQueueId':_0xff07ae[_0xf108('0xd')],'CampaignId':_0xff07ae['CampaignId']}},'log':_0xf108('0xb')});};};exports[_0xf108('0xe')]=function(_0x5214a0,_0x502ba6,_0x4280dd){return function(){return client[_0xf108('0x2')](_0xf108('0xf'),{'options':{'where':{'VoiceQueueId':_0x5214a0,'ListId':_0x502ba6,'ContactId':_0x4280dd}},'log':_0xf108('0xf')});};};exports[_0xf108('0x10')]=function(_0x4bb72a,_0x4e8505,_0x15829e,_0x14a772){return function(){return client[_0xf108('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4bb72a,'active':![],'scheduledat':{'$lte':moment()[_0xf108('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'$or':[{'UserId':null},{'UserId':{'$in':_0x4e8505}}]},'order':[['priority',_0xf108('0x11')],[_0xf108('0x12'),_0x14a772],['id',_0xf108('0x13')]],'raw':!![],'limit':_0x15829e},'log':_0xf108('0x14')});};};exports[_0xf108('0x15')]=function(_0x394369,_0x507028,_0x6c16){return function(){return client[_0xf108('0x2')](_0xf108('0x14'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x394369,'active':![],'scheduledat':{'$lte':moment()[_0xf108('0x9')](_0xf108('0xa'))}},'include':[{'model':_0xf108('0x4'),'as':_0xf108('0x5')}],'order':[[_0xf108('0x16'),_0xf108('0x11')],[_0xf108('0x12'),_0x6c16],['id','ASC']],'raw':!![],'limit':_0x507028},'log':'GetContactDialerIvr'});};};exports[_0xf108('0x17')]=function(_0x2e167f,_0x25ff34){return function(){_0x2e167f[_0xf108('0x18')]=_0x2e167f['queue'];return client['Request'](_0xf108('0x19'),{'body':_0x2e167f,'options':{'where':{'ContactId':_0x2e167f[_0xf108('0x1a')],'ListId':_0x2e167f[_0xf108('0xc')],'VoiceQueueId':_0x2e167f[_0xf108('0xd')],'CampaignId':_0x2e167f['CampaignId'],'active':_0x25ff34?undefined:!![]}},'log':'MoveContactManagedDialer'});};};exports[_0xf108('0x1b')]=function(_0x5189b2){return function(){return client[_0xf108('0x2')](_0xf108('0x1c'),{'options':{'where':{'VoiceQueueId':_0x5189b2['id']?_0x5189b2['id']||null:null}},'log':'countReScheduled'});};};exports[_0xf108('0x1d')]=function(_0x1e8e8e){return function(){return client[_0xf108('0x2')](_0xf108('0x1e'),{'options':{'where':{'id':_0x1e8e8e},'include':[{'model':_0xf108('0x4'),'as':_0xf108('0x5')},{'model':_0xf108('0x1f'),'as':_0xf108('0x20'),'attributes':['id','name']},{'model':_0xf108('0x21'),'as':_0xf108('0x22'),'attributes':['id',_0xf108('0x23')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0xf108('0x24')]=function(_0x56767f,_0x1c8fcf,_0x28b6f3){return function(){return client[_0xf108('0x2')]('UpdateCmHopper',{'body':_0x56767f,'options':{'where':{'id':_0x1c8fcf},'limit':_0x28b6f3},'log':'UpdateCmHopper'});};};exports[_0xf108('0x25')]=function(_0x4b5193,_0x252c88){return function(){return client[_0xf108('0x2')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x4b5193,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0xf108('0x9')]('YYYY-MM-DD\x20HH:mm:ss')},'UserId':{'$in':_0x252c88}},'order':[['priority',_0xf108('0x11')],[_0xf108('0x12'),_0xf108('0x11')],['id',_0xf108('0x13')]],'include':[{'model':_0xf108('0x4'),'as':_0xf108('0x5')},{'model':_0xf108('0x1f'),'as':_0xf108('0x20'),'attributes':['id',_0xf108('0x23'),_0xf108('0x26')]}],'group':_0xf108('0x27'),'raw':!![]},'log':_0xf108('0x14')});};};exports[_0xf108('0x28')]=function(_0x321172,_0x4b904e){return client['Request'](_0xf108('0x29'),{'body':_0x321172,'options':_0x4b904e||{},'log':_0xf108('0x29')});};exports[_0xf108('0x2a')]=function(_0x1a2025,_0xc52d83,_0x8e5f0a){return function(){return client[_0xf108('0x2')]('CmHopperHandlePreviewRecallNotifications',{'body':{'where':{'voiceQueueIds':_0x1a2025,'interval':_0xc52d83,'availableAgentsIds':_0x8e5f0a}},'log':'handlePreviewRecallNotifications'});};};
\ No newline at end of file
+var _0x7012=['resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','GetCmHopper','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','priority','DESC','GetContactDialer','getContactDialerIvr','CmContact','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','CountReScheduled','getContactPreview','Contact','Agent','name','VoiceQueue','Queue','getCmHopper','unlockContact','getContactRecallMe','voicePause','db.CmHopper.UserId'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7012,0xdb));var _0x2701=function(_0x5cb1af,_0x4bdc8c){_0x5cb1af=_0x5cb1af-0x0;var _0x8d7940=_0x7012[_0x5cb1af];return _0x8d7940;};'use strict';var client=require(_0x2701('0x0'));var moment=require(_0x2701('0x1'));exports['getContacts']=function(_0x36f0ed,_0xa1feba){return function(){return client[_0x2701('0x2')](_0x2701('0x3'),{'options':{'where':{'VoiceQueueId':_0x36f0ed},'include':[{'model':'CmContact','as':'Contact'}],'limit':_0xa1feba,'raw':![]},'log':'getCmHopper'});};};exports['updateContacts']=function(_0x1308d0,_0x5070c9,_0x5a74a9){return function(){return client[_0x2701('0x2')](_0x2701('0x4'),{'body':_0x1308d0,'options':{'where':{'VoiceQueueId':_0x5070c9,'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))}},'limit':_0x5a74a9},'log':_0x2701('0x4')});};};exports[_0x2701('0x7')]=function(_0x383abf){return function(){return client['Request'](_0x2701('0x4'),{'body':_0x383abf,'options':{'where':{'ContactId':_0x383abf[_0x2701('0x8')],'ListId':_0x383abf[_0x2701('0x9')],'VoiceQueueId':_0x383abf[_0x2701('0xa')],'CampaignId':_0x383abf[_0x2701('0xb')]}},'log':_0x2701('0x7')});};};exports[_0x2701('0xc')]=function(_0x2fe0ca,_0x35f628,_0x55c229){return function(){return client[_0x2701('0x2')](_0x2701('0xd'),{'options':{'where':{'VoiceQueueId':_0x2fe0ca,'ListId':_0x35f628,'ContactId':_0x55c229}},'log':_0x2701('0xd')});};};exports['getContactDialer']=function(_0x294a7b,_0x2d7d64,_0xa6ff69,_0x11a183){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x294a7b,'active':![],'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x2d7d64}}]},'order':[[_0x2701('0xe'),_0x2701('0xf')],['scheduledat',_0x11a183],['id','ASC']],'raw':!![],'limit':_0xa6ff69},'log':_0x2701('0x10')});};};exports[_0x2701('0x11')]=function(_0x1db7a0,_0x5f71f,_0x3828ef){return function(){return client['Request'](_0x2701('0x10'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x1db7a0,'active':![],'scheduledat':{'$lte':moment()[_0x2701('0x5')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x2701('0x12'),'as':'Contact'}],'order':[[_0x2701('0xe'),_0x2701('0xf')],[_0x2701('0x13'),_0x3828ef],['id',_0x2701('0x14')]],'raw':!![],'limit':_0x5f71f},'log':_0x2701('0x15')});};};exports[_0x2701('0x16')]=function(_0x26e412,_0x425d67){return function(){_0x26e412[_0x2701('0x17')]=_0x26e412[_0x2701('0x18')];return client['Request'](_0x2701('0x19'),{'body':_0x26e412,'options':{'where':{'ContactId':_0x26e412[_0x2701('0x8')],'ListId':_0x26e412[_0x2701('0x9')],'VoiceQueueId':_0x26e412[_0x2701('0xa')],'CampaignId':_0x26e412[_0x2701('0xb')],'active':_0x425d67?undefined:!![]}},'log':_0x2701('0x19')});};};exports[_0x2701('0x1a')]=function(_0x156cf2){return function(){return client[_0x2701('0x2')](_0x2701('0x1b'),{'options':{'where':{'VoiceQueueId':_0x156cf2['id']?_0x156cf2['id']||null:null}},'log':_0x2701('0x1a')});};};exports[_0x2701('0x1c')]=function(_0x10a925){return function(){return client[_0x2701('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x10a925},'include':[{'model':'CmContact','as':_0x2701('0x1d')},{'model':'User','as':_0x2701('0x1e'),'attributes':['id',_0x2701('0x1f')]},{'model':_0x2701('0x20'),'as':_0x2701('0x21'),'attributes':['id',_0x2701('0x1f')]}],'raw':!![]},'log':_0x2701('0x22')});};};exports[_0x2701('0x23')]=function(_0xe31a06,_0x36df82,_0x44f173){return function(){return client['Request']('UpdateCmHopper',{'body':_0xe31a06,'options':{'where':{'id':_0x36df82},'limit':_0x44f173},'log':_0x2701('0x4')});};};exports[_0x2701('0x24')]=function(_0x138c77,_0xa55c7f){return function(){return client[_0x2701('0x2')]('GetContactRecallMe',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x138c77,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2701('0x5')](_0x2701('0x6'))},'UserId':{'$in':_0xa55c7f}},'order':[[_0x2701('0xe'),_0x2701('0xf')],[_0x2701('0x13'),_0x2701('0xf')],['id',_0x2701('0x14')]],'include':[{'model':'CmContact','as':'Contact'},{'model':'User','as':_0x2701('0x1e'),'attributes':['id','name',_0x2701('0x25')]}],'group':_0x2701('0x26'),'raw':!![]},'log':_0x2701('0x10')});};};exports[_0x2701('0x27')]=function(_0x28951d,_0x21f1ec){return client[_0x2701('0x2')](_0x2701('0x28'),{'body':_0x28951d,'options':_0x21f1ec||{},'log':_0x2701('0x28')});};exports[_0x2701('0x29')]=function(_0x175882,_0x2c235e,_0x596abb){return function(){return client[_0x2701('0x2')](_0x2701('0x2a'),{'body':{'where':{'voiceQueueIds':_0x175882,'interval':_0x2c235e,'availableAgentsIds':_0x596abb}},'log':_0x2701('0x29')});};};
\ No newline at end of file
index 9684fb3..ad90cc8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11e5=['SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','moment','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x11e5,0x163));var _0x511e=function(_0x2e09cf,_0x3e042f){_0x2e09cf=_0x2e09cf-0x0;var _0x251a4f=_0x11e5[_0x2e09cf];return _0x251a4f;};'use strict';var client=require(_0x511e('0x0'));var moment=require(_0x511e('0x1'));exports['verifyAdditionalPhones']=function(_0x24fd60,_0x5dde3c,_0x451565){return function(){return client[_0x511e('0x2')](_0x511e('0x3'),{'body':_0x24fd60,'reason':_0x5dde3c,'entity':_0x451565,'log':_0x511e('0x3')});};};exports[_0x511e('0x4')]=function(_0x18de30,_0x3b1145,_0x2ca85a){return function(){return client[_0x511e('0x2')](_0x511e('0x5'),{'body':_0x18de30,'duration':_0x3b1145,'waitTime':_0x2ca85a,'log':_0x511e('0x5')});};};exports[_0x511e('0x6')]=function(_0x2261dc){return function(){return client[_0x511e('0x2')]('IncrementPreviewCounters',{'body':_0x2261dc,'log':_0x511e('0x7')});};};
\ No newline at end of file
+var _0xdbe4=['SwapAdditionalPhones','IncrementPreviewCounters','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones'];(function(_0x55d5dc,_0x25958d){var _0x375e59=function(_0x764315){while(--_0x764315){_0x55d5dc['push'](_0x55d5dc['shift']());}};_0x375e59(++_0x25958d);}(_0xdbe4,0x7a));var _0x4dbe=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0xdbe4[_0x46698a];return _0x356db0;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x4dbe('0x0')]=function(_0x1de7b3,_0x1abdb1,_0x241514){return function(){return client[_0x4dbe('0x1')](_0x4dbe('0x2'),{'body':_0x1de7b3,'reason':_0x1abdb1,'entity':_0x241514,'log':_0x4dbe('0x2')});};};exports[_0x4dbe('0x3')]=function(_0x189765,_0x1221e8,_0x19e87f){return function(){return client[_0x4dbe('0x1')]('SwapAdditionalPhones',{'body':_0x189765,'duration':_0x1221e8,'waitTime':_0x19e87f,'log':_0x4dbe('0x4')});};};exports['incrementPreviewCounters']=function(_0x2a7741){return function(){return client[_0x4dbe('0x1')](_0x4dbe('0x5'),{'body':_0x2a7741,'log':_0x4dbe('0x5')});};};
\ No newline at end of file
index ddef530..1701569 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe745=['GetCmHopperBlack','checkIsBlackListIvr','CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','phone'];(function(_0x567ffb,_0x4d0e2e){var _0x490578=function(_0x1b517a){while(--_0x1b517a){_0x567ffb['push'](_0x567ffb['shift']());}};_0x490578(++_0x4d0e2e);}(_0xe745,0x11c));var _0x5e74=function(_0x3e700d,_0x9e445a){_0x3e700d=_0x3e700d-0x0;var _0x291231=_0xe745[_0x3e700d];return _0x291231;};'use strict';var client=require(_0x5e74('0x0'));exports[_0x5e74('0x1')]=function(_0x2f9ad4){return function(){return client[_0x5e74('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x2f9ad4['VoiceQueueId'],'phone':_0x2f9ad4[_0x5e74('0x3')]},'raw':![]},'log':_0x5e74('0x4')});};};exports[_0x5e74('0x5')]=function(_0x45c93a){return function(){return client['Request']('GetCmHopperBlack',{'options':{'where':{'CampaignId':_0x45c93a[_0x5e74('0x6')],'phone':_0x45c93a[_0x5e74('0x3')]},'raw':![]},'log':_0x5e74('0x7')});};};
\ No newline at end of file
+var _0x9730=['phone','CampaignId','checkIsBlackList','Request','GetCmHopperBlack'];(function(_0x13ba5d,_0x450488){var _0x2b3aef=function(_0x42d524){while(--_0x42d524){_0x13ba5d['push'](_0x13ba5d['shift']());}};_0x2b3aef(++_0x450488);}(_0x9730,0x75));var _0x0973=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x9730[_0x20a584];return _0x4b41a8;};'use strict';var client=require('../client');exports[_0x0973('0x0')]=function(_0xd08e21){return function(){return client[_0x0973('0x1')](_0x0973('0x2'),{'options':{'where':{'VoiceQueueId':_0xd08e21['VoiceQueueId'],'phone':_0xd08e21[_0x0973('0x3')]},'raw':![]},'log':_0x0973('0x2')});};};exports['checkIsBlackListIvr']=function(_0x5a2763){return function(){return client[_0x0973('0x1')](_0x0973('0x2'),{'options':{'where':{'CampaignId':_0x5a2763[_0x0973('0x4')],'phone':_0x5a2763['phone']},'raw':![]},'log':'GetCmHopperBlackIvr'});};};
\ No newline at end of file
index b521258..bf2ed82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99d6=['campaign','queue','Request','CreateCmHopperFinal','../client','createContact'];(function(_0x4d877e,_0x42c800){var _0x50ec57=function(_0x2ae2af){while(--_0x2ae2af){_0x4d877e['push'](_0x4d877e['shift']());}};_0x50ec57(++_0x42c800);}(_0x99d6,0x1a2));var _0x699d=function(_0x31b5b2,_0x5ab927){_0x31b5b2=_0x31b5b2-0x0;var _0x364f13=_0x99d6[_0x31b5b2];return _0x364f13;};'use strict';var client=require(_0x699d('0x0'));exports[_0x699d('0x1')]=function(_0x356770){return function(){_0x356770[_0x699d('0x2')]=_0x356770[_0x699d('0x3')];return client[_0x699d('0x4')](_0x699d('0x5'),{'body':_0x356770,'log':_0x699d('0x5')});};};
\ No newline at end of file
+var _0xea52=['../client','Request','CreateCmHopperFinal'];(function(_0x366cc0,_0x5b902a){var _0x2e00fa=function(_0x4a2465){while(--_0x4a2465){_0x366cc0['push'](_0x366cc0['shift']());}};_0x2e00fa(++_0x5b902a);}(_0xea52,0x168));var _0x2ea5=function(_0x2fa93a,_0xf57adf){_0x2fa93a=_0x2fa93a-0x0;var _0x4c9ea8=_0xea52[_0x2fa93a];return _0x4c9ea8;};'use strict';var client=require(_0x2ea5('0x0'));exports['createContact']=function(_0x52c1aa){return function(){_0x52c1aa['campaign']=_0x52c1aa['queue'];return client[_0x2ea5('0x1')](_0x2ea5('0x2'),{'body':_0x52c1aa,'log':_0x2ea5('0x2')});};};
\ No newline at end of file
index d6ffe7f..675fc2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe794=['Request','CreateCmHopperHistory','avgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','startOf','day','endOf','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xe794,0x1e9));var _0x4e79=function(_0x476b2b,_0x1bef32){_0x476b2b=_0x476b2b-0x0;var _0x380062=_0xe794[_0x476b2b];return _0x380062;};'use strict';var client=require(_0x4e79('0x0'));var moment=require(_0x4e79('0x1'));exports[_0x4e79('0x2')]=function(_0x11b1f4){return function(){_0x11b1f4[_0x4e79('0x3')]=_0x11b1f4[_0x4e79('0x4')];return client[_0x4e79('0x5')](_0x4e79('0x6'),{'body':_0x11b1f4,'log':_0x4e79('0x6')});};};exports[_0x4e79('0x7')]=function(_0x11d686){return function(){return client[_0x4e79('0x5')]('AvgHandleTime',{'options':{'where':{'endtime':{'$between':[moment()[_0x4e79('0x8')](_0x11d686,_0x4e79('0x9'))[_0x4e79('0xa')](_0x4e79('0xb')),moment()[_0x4e79('0xa')](_0x4e79('0xb'))]}},'raw':![]},'log':_0x4e79('0xc')});};};exports[_0x4e79('0xd')]=function(_0x5772dc){return function(){return client[_0x4e79('0x5')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x4e79('0xe')](_0x4e79('0xf'))[_0x4e79('0xa')](_0x4e79('0xb')),moment()[_0x4e79('0x10')](_0x4e79('0xf'))[_0x4e79('0xa')](_0x4e79('0xb'))]},'campaigntype':'queue'},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports['getCampaignHopperHistory']=function(_0x373602){return function(){return client[_0x4e79('0x5')](_0x4e79('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x4e79('0xe')](_0x4e79('0xf'))[_0x4e79('0xa')](_0x4e79('0xb')),moment()[_0x4e79('0x10')]('day')[_0x4e79('0xa')]('YYYY-MM-DD\x20HH:mm:ss')]},'campaigntype':_0x4e79('0x12')},'raw':![]},'log':_0x4e79('0x11')});};};
\ No newline at end of file
+var _0xe7f1=['startOf','day','endOf','GetVoiceQueueHopperHistory','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue','Request','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory'];(function(_0x5d09f0,_0x3d9d1e){var _0x1e5c40=function(_0x255c33){while(--_0x255c33){_0x5d09f0['push'](_0x5d09f0['shift']());}};_0x1e5c40(++_0x3d9d1e);}(_0xe7f1,0x1e2));var _0x1e7f=function(_0x250074,_0x22c235){_0x250074=_0x250074-0x0;var _0x448486=_0xe7f1[_0x250074];return _0x448486;};'use strict';var client=require(_0x1e7f('0x0'));var moment=require(_0x1e7f('0x1'));exports[_0x1e7f('0x2')]=function(_0x44ecbd){return function(){_0x44ecbd[_0x1e7f('0x3')]=_0x44ecbd[_0x1e7f('0x4')];return client[_0x1e7f('0x5')]('CreateCmHopperHistory',{'body':_0x44ecbd,'log':'CreateCmHopperHistory'});};};exports['avgHandleTime']=function(_0x56dd0f){return function(){return client[_0x1e7f('0x5')](_0x1e7f('0x6'),{'options':{'where':{'endtime':{'$between':[moment()[_0x1e7f('0x7')](_0x56dd0f,'minutes')[_0x1e7f('0x8')](_0x1e7f('0x9')),moment()[_0x1e7f('0x8')]('YYYY-MM-DD\x20HH:mm:ss')]}},'raw':![]},'log':_0x1e7f('0xa')});};};exports[_0x1e7f('0xb')]=function(_0x464121){return function(){return client[_0x1e7f('0x5')]('GetVoiceQueueHopperHistory',{'options':{'where':{'createdAt':{'$between':[moment()[_0x1e7f('0xc')](_0x1e7f('0xd'))[_0x1e7f('0x8')](_0x1e7f('0x9')),moment()[_0x1e7f('0xe')]('day')[_0x1e7f('0x8')](_0x1e7f('0x9'))]},'campaigntype':_0x1e7f('0x4')},'raw':![]},'log':_0x1e7f('0xf')});};};exports[_0x1e7f('0x10')]=function(_0x127706){return function(){return client[_0x1e7f('0x5')](_0x1e7f('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()['startOf'](_0x1e7f('0xd'))['format']('YYYY-MM-DD\x20HH:mm:ss'),moment()['endOf'](_0x1e7f('0xd'))[_0x1e7f('0x8')](_0x1e7f('0x9'))]},'campaigntype':_0x1e7f('0x12')},'raw':![]},'log':_0x1e7f('0x11')});};};
\ No newline at end of file
index c887e41..87dfe92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69d4=['GetFaxAccount','name','description','headerinfo','minrate','maxrate','modem','gateway','faxdetect','t38timeout','TrunkId','key','Trunk','getFaxAccount','notify','Request','NotifyFaxAccount','../client','getFaxAccounts'];(function(_0x126169,_0x41686e){var _0x48c0b1=function(_0x21a5db){while(--_0x21a5db){_0x126169['push'](_0x126169['shift']());}};_0x48c0b1(++_0x41686e);}(_0x69d4,0x83));var _0x469d=function(_0x59befa,_0x4af99b){_0x59befa=_0x59befa-0x0;var _0x1dd63d=_0x69d4[_0x59befa];return _0x1dd63d;};'use strict';var client=require(_0x469d('0x0'));exports[_0x469d('0x1')]=function(){return function(){return client['Request'](_0x469d('0x2'),{'options':{'raw':![],'attributes':['id',_0x469d('0x3'),_0x469d('0x4'),'ecm',_0x469d('0x5'),'localstationid',_0x469d('0x6'),_0x469d('0x7'),_0x469d('0x8'),_0x469d('0x9'),_0x469d('0xa'),_0x469d('0xb'),'tech',_0x469d('0xc'),'ListId',_0x469d('0xd')],'include':[{'model':_0x469d('0xe'),'as':_0x469d('0xe'),'attributes':['id','name','callerid','active']}]},'log':_0x469d('0xf')});};};exports[_0x469d('0x10')]=function(_0x5ca9c6,_0xb3a199){return client[_0x469d('0x11')](_0x469d('0x12'),{'account':{'id':_0x5ca9c6},'body':_0xb3a199,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xfa25=['localstationid','modem','gateway','tech','ListId','key','Trunk','callerid','active','notify','NotifyFaxAccount','getFaxAccounts','Request','GetFaxAccount','name','description','ecm','headerinfo'];(function(_0x35d775,_0x25431e){var _0x59384d=function(_0x1a0c15){while(--_0x1a0c15){_0x35d775['push'](_0x35d775['shift']());}};_0x59384d(++_0x25431e);}(_0xfa25,0xd1));var _0x5fa2=function(_0x12ba3d,_0x31e0fa){_0x12ba3d=_0x12ba3d-0x0;var _0x545f7d=_0xfa25[_0x12ba3d];return _0x545f7d;};'use strict';var client=require('../client');exports[_0x5fa2('0x0')]=function(){return function(){return client[_0x5fa2('0x1')](_0x5fa2('0x2'),{'options':{'raw':![],'attributes':['id',_0x5fa2('0x3'),_0x5fa2('0x4'),_0x5fa2('0x5'),_0x5fa2('0x6'),_0x5fa2('0x7'),'minrate','maxrate',_0x5fa2('0x8'),_0x5fa2('0x9'),'faxdetect','t38timeout',_0x5fa2('0xa'),'TrunkId',_0x5fa2('0xb'),_0x5fa2('0xc')],'include':[{'model':_0x5fa2('0xd'),'as':'Trunk','attributes':['id',_0x5fa2('0x3'),_0x5fa2('0xe'),_0x5fa2('0xf')]}]},'log':'getFaxAccount'});};};exports[_0x5fa2('0x10')]=function(_0x4ab368,_0x54a14a){return client[_0x5fa2('0x1')](_0x5fa2('0x11'),{'account':{'id':_0x4ab368},'body':_0x54a14a,'log':'NotifyFaxAccount'});};
\ No newline at end of file
index bd0aedf..dbca3ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x281d=['update','Request','UpdateFaxMessage','../client'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x281d,0xa7));var _0xd281=function(_0x35733c,_0xc26678){_0x35733c=_0x35733c-0x0;var _0x12bccc=_0x281d[_0x35733c];return _0x12bccc;};'use strict';var client=require(_0xd281('0x0'));exports[_0xd281('0x1')]=function(_0x3549a5,_0x46a97c){return client[_0xd281('0x2')](_0xd281('0x3'),{'body':_0x46a97c,'options':{'where':{'AttachmentId':_0x3549a5}},'log':_0xd281('0x3')});};
\ No newline at end of file
+var _0x35b7=['../client','Request','UpdateFaxMessage'];(function(_0x180967,_0x764e9c){var _0x4cb1e2=function(_0x14da92){while(--_0x14da92){_0x180967['push'](_0x180967['shift']());}};_0x4cb1e2(++_0x764e9c);}(_0x35b7,0x9c));var _0x735b=function(_0x5ddaac,_0x2697a8){_0x5ddaac=_0x5ddaac-0x0;var _0x2a9c58=_0x35b7[_0x5ddaac];return _0x2a9c58;};'use strict';var client=require(_0x735b('0x0'));exports['update']=function(_0x40b55f,_0x5b6fd7){return client[_0x735b('0x1')](_0x735b('0x2'),{'body':_0x5b6fd7,'options':{'where':{'AttachmentId':_0x40b55f}},'log':_0x735b('0x2')});};
\ No newline at end of file
index f07c61a..b9aaf79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x380a=['keyType','Fields','nameField','customField','Tags','../../client','getDeskAccounts','GetDeskAccount','name','username','password','remoteUri','authType','type','serverUrl','DeskConfiguration','Configurations','DeskField','Subjects','content','variableName','Variable','key'];(function(_0x5985e5,_0x12a1db){var _0x711dc0=function(_0x358d8d){while(--_0x358d8d){_0x5985e5['push'](_0x5985e5['shift']());}};_0x711dc0(++_0x12a1db);}(_0x380a,0x102));var _0xa380=function(_0x34fb19,_0xc493c6){_0x34fb19=_0x34fb19-0x0;var _0x3a1dcd=_0x380a[_0x34fb19];return _0x3a1dcd;};'use strict';var client=require(_0xa380('0x0'));exports[_0xa380('0x1')]=function(){return function(_0x51aaf3){return client['Request'](_0xa380('0x2'),{'options':{'raw':![],'attributes':['id',_0xa380('0x3'),'description',_0xa380('0x4'),_0xa380('0x5'),_0xa380('0x6'),_0xa380('0x7'),_0xa380('0x8'),_0xa380('0x9')],'include':[{'model':_0xa380('0xa'),'as':_0xa380('0xb'),'attributes':['id','name'],'include':[{'model':_0xa380('0xc'),'as':_0xa380('0xd'),'attributes':['id',_0xa380('0x8'),_0xa380('0xe'),_0xa380('0xf')],'include':[{'model':_0xa380('0x10'),'as':_0xa380('0x10'),'attributes':['id','name']}]},{'model':'DeskField','as':'Descriptions','attributes':['id',_0xa380('0x8'),'content',_0xa380('0x11'),_0xa380('0x12'),'keyContent','variableName'],'include':[{'model':_0xa380('0x10'),'as':'Variable','attributes':['id',_0xa380('0x3')]}]},{'model':_0xa380('0xc'),'as':_0xa380('0x13'),'attributes':['id',_0xa380('0x8'),_0xa380('0xe'),'idField',_0xa380('0x14'),_0xa380('0x15'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xa380('0x3')]}]},{'model':'Tag','as':_0xa380('0x16'),'attributes':['id',_0xa380('0x3')]}]}]},'log':_0xa380('0x2')});};};
\ No newline at end of file
+var _0x3d4f=['authType','serverUrl','DeskConfiguration','Configurations','type','content','variableName','Variable','DeskField','Descriptions','keyContent','idField','nameField','customField','Tags','GetDeskAccount','../../client','getDeskAccounts','Request','name','description','password','remoteUri'];(function(_0x308146,_0x5f1584){var _0x4c8984=function(_0x3e7d7d){while(--_0x3e7d7d){_0x308146['push'](_0x308146['shift']());}};_0x4c8984(++_0x5f1584);}(_0x3d4f,0x83));var _0xf3d4=function(_0x266098,_0x10fbbb){_0x266098=_0x266098-0x0;var _0x492415=_0x3d4f[_0x266098];return _0x492415;};'use strict';var client=require(_0xf3d4('0x0'));exports[_0xf3d4('0x1')]=function(){return function(_0x170d37){return client[_0xf3d4('0x2')]('GetDeskAccount',{'options':{'raw':![],'attributes':['id',_0xf3d4('0x3'),_0xf3d4('0x4'),'username',_0xf3d4('0x5'),_0xf3d4('0x6'),_0xf3d4('0x7'),'type',_0xf3d4('0x8')],'include':[{'model':_0xf3d4('0x9'),'as':_0xf3d4('0xa'),'attributes':['id',_0xf3d4('0x3')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id',_0xf3d4('0xb'),_0xf3d4('0xc'),_0xf3d4('0xd')],'include':[{'model':_0xf3d4('0xe'),'as':_0xf3d4('0xe'),'attributes':['id',_0xf3d4('0x3')]}]},{'model':_0xf3d4('0xf'),'as':_0xf3d4('0x10'),'attributes':['id',_0xf3d4('0xb'),_0xf3d4('0xc'),'key','keyType',_0xf3d4('0x11'),'variableName'],'include':[{'model':'Variable','as':_0xf3d4('0xe'),'attributes':['id','name']}]},{'model':_0xf3d4('0xf'),'as':'Fields','attributes':['id','type','content',_0xf3d4('0x12'),_0xf3d4('0x13'),_0xf3d4('0x14'),_0xf3d4('0xd')],'include':[{'model':_0xf3d4('0xe'),'as':_0xf3d4('0xe'),'attributes':['id',_0xf3d4('0x3')]}]},{'model':'Tag','as':_0xf3d4('0x15'),'attributes':['id',_0xf3d4('0x3')]}]}]},'log':_0xf3d4('0x16')});};};
\ No newline at end of file
index 779f42b..0a4219d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49db=['remoteUri','clientId','description','modernAuthentication','Dynamics365Configuration','name','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','content','variableName','Variable','Descriptions','type','keyType','keyContent','idField','nameField','customField','CloudProvider','data2','../../client','getDynamics365Accounts','Request','GetDynamics365Account','username','password'];(function(_0x378720,_0xa711f1){var _0x47920a=function(_0xc5056){while(--_0xc5056){_0x378720['push'](_0x378720['shift']());}};_0x47920a(++_0xa711f1);}(_0x49db,0xc5));var _0xb49d=function(_0x54d79c,_0x54adf9){_0x54d79c=_0x54d79c-0x0;var _0xa2fc90=_0x49db[_0x54d79c];return _0xa2fc90;};'use strict';var client=require(_0xb49d('0x0'));exports[_0xb49d('0x1')]=function(){return function(_0x1ebe39){return client[_0xb49d('0x2')](_0xb49d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xb49d('0x4'),_0xb49d('0x5'),_0xb49d('0x6'),'tenantId',_0xb49d('0x7'),'clientSecret','serverUrl',_0xb49d('0x8'),_0xb49d('0x9')],'include':[{'model':_0xb49d('0xa'),'as':'Configurations','attributes':['id',_0xb49d('0xb'),_0xb49d('0xc'),_0xb49d('0xd'),_0xb49d('0xe'),_0xb49d('0xf')],'include':[{'model':_0xb49d('0x10'),'as':'Subjects','attributes':['id','type',_0xb49d('0x11'),_0xb49d('0x12')],'include':[{'model':_0xb49d('0x13'),'as':_0xb49d('0x13'),'attributes':['id',_0xb49d('0xb')]}]},{'model':_0xb49d('0x10'),'as':_0xb49d('0x14'),'attributes':['id',_0xb49d('0x15'),_0xb49d('0x11'),'key',_0xb49d('0x16'),_0xb49d('0x17'),_0xb49d('0x12')],'include':[{'model':_0xb49d('0x13'),'as':'Variable','attributes':['id',_0xb49d('0xb')]}]},{'model':_0xb49d('0x10'),'as':'Fields','attributes':['id',_0xb49d('0x15'),_0xb49d('0x11'),_0xb49d('0x18'),_0xb49d('0x19'),_0xb49d('0x1a'),_0xb49d('0x12')],'include':[{'model':_0xb49d('0x13'),'as':'Variable','attributes':['id',_0xb49d('0xb')]}]}]},{'model':_0xb49d('0x1b'),'as':_0xb49d('0x1b'),'attributes':['id',_0xb49d('0x1c'),'data5','data7']}]},'log':_0xb49d('0x3')});};};
\ No newline at end of file
+var _0x34ab=['Dynamics365Configuration','Configurations','ticketType','moduleCreate','additionalSearchContact','openNewTab','Dynamics365Field','type','content','variableName','Variable','Descriptions','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','username','password','clientId','clientSecret','serverUrl','modernAuthentication'];(function(_0x32b993,_0x1c5989){var _0x482780=function(_0x404179){while(--_0x404179){_0x32b993['push'](_0x32b993['shift']());}};_0x482780(++_0x1c5989);}(_0x34ab,0x169));var _0xb34a=function(_0xab9f3d,_0xb336fa){_0xab9f3d=_0xab9f3d-0x0;var _0x5283bf=_0x34ab[_0xab9f3d];return _0x5283bf;};'use strict';var client=require(_0xb34a('0x0'));exports[_0xb34a('0x1')]=function(){return function(_0x3af990){return client[_0xb34a('0x2')](_0xb34a('0x3'),{'options':{'raw':![],'attributes':['id',_0xb34a('0x4'),_0xb34a('0x5'),_0xb34a('0x6'),'remoteUri','tenantId',_0xb34a('0x7'),_0xb34a('0x8'),_0xb34a('0x9'),'description',_0xb34a('0xa')],'include':[{'model':_0xb34a('0xb'),'as':_0xb34a('0xc'),'attributes':['id',_0xb34a('0x4'),_0xb34a('0xd'),_0xb34a('0xe'),_0xb34a('0xf'),_0xb34a('0x10')],'include':[{'model':_0xb34a('0x11'),'as':'Subjects','attributes':['id',_0xb34a('0x12'),_0xb34a('0x13'),_0xb34a('0x14')],'include':[{'model':'Variable','as':_0xb34a('0x15'),'attributes':['id',_0xb34a('0x4')]}]},{'model':_0xb34a('0x11'),'as':_0xb34a('0x16'),'attributes':['id',_0xb34a('0x12'),_0xb34a('0x13'),'key','keyType','keyContent','variableName'],'include':[{'model':_0xb34a('0x15'),'as':'Variable','attributes':['id','name']}]},{'model':_0xb34a('0x11'),'as':_0xb34a('0x17'),'attributes':['id',_0xb34a('0x12'),'content',_0xb34a('0x18'),_0xb34a('0x19'),_0xb34a('0x1a'),'variableName'],'include':[{'model':_0xb34a('0x15'),'as':'Variable','attributes':['id',_0xb34a('0x4')]}]}]},{'model':_0xb34a('0x1b'),'as':_0xb34a('0x1b'),'attributes':['id',_0xb34a('0x1c'),_0xb34a('0x1d'),_0xb34a('0x1e')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
index 06467eb..7ffe999 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x84a0=['name','username','serverUrl','FreshdeskConfiguration','Tag','FreshdeskField','Subjects','content','variableName','Variable','type','key','keyType','keyContent','Fields','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','Request'];(function(_0x3445d7,_0x9886fa){var _0x3ad741=function(_0x352b13){while(--_0x352b13){_0x3445d7['push'](_0x3445d7['shift']());}};_0x3ad741(++_0x9886fa);}(_0x84a0,0x66));var _0x084a=function(_0x571729,_0x5d03e2){_0x571729=_0x571729-0x0;var _0x38820e=_0x84a0[_0x571729];return _0x38820e;};'use strict';var client=require(_0x084a('0x0'));exports[_0x084a('0x1')]=function(){return function(_0x209635){return client[_0x084a('0x2')]('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x084a('0x3'),_0x084a('0x4'),'apiKey','remoteUri',_0x084a('0x5')],'include':[{'model':_0x084a('0x6'),'as':'Configurations','attributes':['id',_0x084a('0x3')],'include':[{'model':_0x084a('0x7'),'attributes':['id',_0x084a('0x3')]},{'model':_0x084a('0x8'),'as':_0x084a('0x9'),'attributes':['id','type',_0x084a('0xa'),_0x084a('0xb')],'include':[{'model':_0x084a('0xc'),'as':_0x084a('0xc'),'attributes':['id',_0x084a('0x3')]}]},{'model':'FreshdeskField','as':'Descriptions','attributes':['id',_0x084a('0xd'),_0x084a('0xa'),_0x084a('0xe'),_0x084a('0xf'),_0x084a('0x10'),'variableName'],'include':[{'model':'Variable','as':_0x084a('0xc'),'attributes':['id',_0x084a('0x3')]}]},{'model':_0x084a('0x8'),'as':_0x084a('0x11'),'attributes':['id',_0x084a('0xd'),_0x084a('0xa'),_0x084a('0x12'),_0x084a('0x13'),'customField',_0x084a('0xb')],'include':[{'model':'Variable','as':_0x084a('0xc'),'attributes':['id',_0x084a('0x3')]}]}]}]},'log':_0x084a('0x14')});};};
\ No newline at end of file
+var _0x05e3=['key','keyType','keyContent','variableName','Fields','idField','nameField','GetFreshdeskAccount','../../client','getFreshdeskAccounts','name','username','remoteUri','serverUrl','Configurations','Tag','FreshdeskField','Subjects','type','content','Variable'];(function(_0x15e48c,_0x32e779){var _0x73f34a=function(_0x2ce8a2){while(--_0x2ce8a2){_0x15e48c['push'](_0x15e48c['shift']());}};_0x73f34a(++_0x32e779);}(_0x05e3,0x86));var _0x305e=function(_0x305528,_0x263ca6){_0x305528=_0x305528-0x0;var _0x2531f0=_0x05e3[_0x305528];return _0x2531f0;};'use strict';var client=require(_0x305e('0x0'));exports[_0x305e('0x1')]=function(){return function(_0x138210){return client['Request']('GetFreshdeskAccount',{'options':{'raw':![],'attributes':['id',_0x305e('0x2'),_0x305e('0x3'),'apiKey',_0x305e('0x4'),_0x305e('0x5')],'include':[{'model':'FreshdeskConfiguration','as':_0x305e('0x6'),'attributes':['id',_0x305e('0x2')],'include':[{'model':_0x305e('0x7'),'attributes':['id',_0x305e('0x2')]},{'model':_0x305e('0x8'),'as':_0x305e('0x9'),'attributes':['id',_0x305e('0xa'),_0x305e('0xb'),'variableName'],'include':[{'model':_0x305e('0xc'),'as':'Variable','attributes':['id',_0x305e('0x2')]}]},{'model':_0x305e('0x8'),'as':'Descriptions','attributes':['id',_0x305e('0xa'),_0x305e('0xb'),_0x305e('0xd'),_0x305e('0xe'),_0x305e('0xf'),_0x305e('0x10')],'include':[{'model':_0x305e('0xc'),'as':_0x305e('0xc'),'attributes':['id',_0x305e('0x2')]}]},{'model':_0x305e('0x8'),'as':_0x305e('0x11'),'attributes':['id',_0x305e('0xa'),'content',_0x305e('0x12'),_0x305e('0x13'),'customField',_0x305e('0x10')],'include':[{'model':_0x305e('0xc'),'as':_0x305e('0xc'),'attributes':['id',_0x305e('0x2')]}]}]}]},'log':_0x305e('0x14')});};};
\ No newline at end of file
index bda267b..288554b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfe8=['key','keyType','keyContent','GetFreshsalesccount','getFreshsalesAccounts','Request','GetFreshsalesAccount','apiKey','remoteUri','FreshsalesConfiguration','Configurations','name','Subjects','type','content','variableName','Variable','FreshsalesField','Descriptions'];(function(_0x3a715d,_0x109738){var _0xd8d429=function(_0xf58cbb){while(--_0xf58cbb){_0x3a715d['push'](_0x3a715d['shift']());}};_0xd8d429(++_0x109738);}(_0xbfe8,0x1b9));var _0x8bfe=function(_0x4ba8ad,_0x2bb48b){_0x4ba8ad=_0x4ba8ad-0x0;var _0x20cce9=_0xbfe8[_0x4ba8ad];return _0x20cce9;};'use strict';var client=require('../../client');exports[_0x8bfe('0x0')]=function(){return function(_0x520263){return client[_0x8bfe('0x1')](_0x8bfe('0x2'),{'options':{'raw':![],'attributes':['id','name','username',_0x8bfe('0x3'),_0x8bfe('0x4'),'serverUrl'],'include':[{'model':_0x8bfe('0x5'),'as':_0x8bfe('0x6'),'attributes':['id',_0x8bfe('0x7')],'include':[{'model':'FreshsalesField','as':_0x8bfe('0x8'),'attributes':['id',_0x8bfe('0x9'),_0x8bfe('0xa'),_0x8bfe('0xb')],'include':[{'model':_0x8bfe('0xc'),'as':_0x8bfe('0xc'),'attributes':['id',_0x8bfe('0x7')]}]},{'model':_0x8bfe('0xd'),'as':_0x8bfe('0xe'),'attributes':['id',_0x8bfe('0x9'),_0x8bfe('0xa'),_0x8bfe('0xf'),_0x8bfe('0x10'),_0x8bfe('0x11'),_0x8bfe('0xb')],'include':[{'model':'Variable','as':_0x8bfe('0xc'),'attributes':['id','name']}]}]}]},'log':_0x8bfe('0x12')});};};
\ No newline at end of file
+var _0xd8fb=['key','keyType','name','../../client','getFreshsalesAccounts','Request','apiKey','remoteUri','FreshsalesConfiguration','Configurations','FreshsalesField','type','variableName','Variable','Descriptions'];(function(_0x41f876,_0x3d8c4e){var _0x2e6159=function(_0x543364){while(--_0x543364){_0x41f876['push'](_0x41f876['shift']());}};_0x2e6159(++_0x3d8c4e);}(_0xd8fb,0x99));var _0xbd8f=function(_0x23698a,_0x2f3e9a){_0x23698a=_0x23698a-0x0;var _0x4b6360=_0xd8fb[_0x23698a];return _0x4b6360;};'use strict';var client=require(_0xbd8f('0x0'));exports[_0xbd8f('0x1')]=function(){return function(_0x1024c1){return client[_0xbd8f('0x2')]('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xbd8f('0x3'),_0xbd8f('0x4'),'serverUrl'],'include':[{'model':_0xbd8f('0x5'),'as':_0xbd8f('0x6'),'attributes':['id','name'],'include':[{'model':_0xbd8f('0x7'),'as':'Subjects','attributes':['id',_0xbd8f('0x8'),'content',_0xbd8f('0x9')],'include':[{'model':_0xbd8f('0xa'),'as':'Variable','attributes':['id','name']}]},{'model':_0xbd8f('0x7'),'as':_0xbd8f('0xb'),'attributes':['id',_0xbd8f('0x8'),'content',_0xbd8f('0xc'),_0xbd8f('0xd'),'keyContent','variableName'],'include':[{'model':_0xbd8f('0xa'),'as':_0xbd8f('0xa'),'attributes':['id',_0xbd8f('0xe')]}]}]}]},'log':'GetFreshsalesccount'});};};
\ No newline at end of file
index 5eba984..173e6ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd4=['clientSecret','serverUrl','type','Configurations','name','leadId','additionalSearchAccount','additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','../../client','getSalesforceAccounts','GetSalesforceAccount','username','password','remoteUri'];(function(_0x13985b,_0x4f3471){var _0x2224fc=function(_0x341b02){while(--_0x341b02){_0x13985b['push'](_0x13985b['shift']());}};_0x2224fc(++_0x4f3471);}(_0x5bd4,0x163));var _0x45bd=function(_0xb8eff,_0x3c101a){_0xb8eff=_0xb8eff-0x0;var _0x3c7485=_0x5bd4[_0xb8eff];return _0x3c7485;};'use strict';var client=require(_0x45bd('0x0'));exports[_0x45bd('0x1')]=function(){return function(_0x4c796e){return client['Request'](_0x45bd('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x45bd('0x3'),_0x45bd('0x4'),_0x45bd('0x5'),'clientId',_0x45bd('0x6'),'securityToken',_0x45bd('0x7'),_0x45bd('0x8')],'include':[{'model':'SalesforceConfiguration','as':_0x45bd('0x9'),'attributes':['id',_0x45bd('0xa'),'moduleSearch','moduleCreate','ticketType',_0x45bd('0xb'),_0x45bd('0xc'),_0x45bd('0xd'),_0x45bd('0xe')],'include':[{'model':'SalesforceField','as':_0x45bd('0xf'),'include':[{'model':_0x45bd('0x10'),'as':_0x45bd('0x10'),'attributes':['id',_0x45bd('0xa')]}]},{'model':_0x45bd('0x11'),'as':'Descriptions','include':[{'model':_0x45bd('0x10'),'as':_0x45bd('0x10'),'attributes':['id','name']}]},{'model':'SalesforceField','as':_0x45bd('0x12'),'include':[{'model':_0x45bd('0x10'),'as':_0x45bd('0x10'),'attributes':['id',_0x45bd('0xa')]}]}]}]},'log':'GetSalesforceAccount'});};};
\ No newline at end of file
+var _0x7529=['serverUrl','type','SalesforceConfiguration','Configurations','moduleSearch','moduleCreate','ticketType','leadId','additionalSearchContact','Subjects','Variable','SalesforceField','Descriptions','../../client','getSalesforceAccounts','Request','GetSalesforceAccount','name','password','remoteUri','clientId'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0x7529,0x1c6));var _0x9752=function(_0x247f2d,_0x270167){_0x247f2d=_0x247f2d-0x0;var _0x2eb510=_0x7529[_0x247f2d];return _0x2eb510;};'use strict';var client=require(_0x9752('0x0'));exports[_0x9752('0x1')]=function(){return function(_0x3c28e5){return client[_0x9752('0x2')](_0x9752('0x3'),{'options':{'raw':![],'attributes':['id',_0x9752('0x4'),'username',_0x9752('0x5'),_0x9752('0x6'),_0x9752('0x7'),'clientSecret','securityToken',_0x9752('0x8'),_0x9752('0x9')],'include':[{'model':_0x9752('0xa'),'as':_0x9752('0xb'),'attributes':['id',_0x9752('0x4'),_0x9752('0xc'),_0x9752('0xd'),_0x9752('0xe'),_0x9752('0xf'),'additionalSearchAccount',_0x9752('0x10'),'additionalSearchLead'],'include':[{'model':'SalesforceField','as':_0x9752('0x11'),'include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id',_0x9752('0x4')]}]},{'model':_0x9752('0x13'),'as':_0x9752('0x14'),'include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id','name']}]},{'model':'SalesforceField','as':'Fields','include':[{'model':_0x9752('0x12'),'as':_0x9752('0x12'),'attributes':['id',_0x9752('0x4')]}]}]}]},'log':_0x9752('0x3')});};};
\ No newline at end of file
index 784e40f..13fea5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fab=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','description','username','password','email','remoteUri','serverUrl','ServicenowConfiguration','ServicenowField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','nameField','customField'];(function(_0x1e4a70,_0x3507ae){var _0x35f63a=function(_0x493187){while(--_0x493187){_0x1e4a70['push'](_0x1e4a70['shift']());}};_0x35f63a(++_0x3507ae);}(_0x5fab,0x177));var _0xb5fa=function(_0x6c225b,_0x4de56c){_0x6c225b=_0x6c225b-0x0;var _0x268839=_0x5fab[_0x6c225b];return _0x268839;};'use strict';var client=require(_0xb5fa('0x0'));exports[_0xb5fa('0x1')]=function(){return function(_0x4c67f9){return client[_0xb5fa('0x2')](_0xb5fa('0x3'),{'options':{'raw':![],'attributes':['id',_0xb5fa('0x4'),_0xb5fa('0x5'),_0xb5fa('0x6'),_0xb5fa('0x7'),_0xb5fa('0x8'),_0xb5fa('0x9'),_0xb5fa('0xa')],'include':[{'model':_0xb5fa('0xb'),'as':'Configurations','attributes':['id','name'],'include':[{'model':_0xb5fa('0xc'),'as':_0xb5fa('0xd'),'attributes':['id',_0xb5fa('0xe'),'content',_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xb5fa('0x11'),'attributes':['id',_0xb5fa('0xe'),_0xb5fa('0x12'),_0xb5fa('0x13'),_0xb5fa('0x14'),_0xb5fa('0x15'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]},{'model':_0xb5fa('0xc'),'as':_0xb5fa('0x16'),'attributes':['id','type',_0xb5fa('0x12'),'idField',_0xb5fa('0x17'),_0xb5fa('0x18'),_0xb5fa('0xf')],'include':[{'model':_0xb5fa('0x10'),'as':_0xb5fa('0x10'),'attributes':['id','name']}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x46ed=['../../client','getServicenowAccounts','Request','GetServicenowAccount','name','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects','type','content','variableName','Variable','key','keyType','keyContent','Fields','nameField','customField','GetServicenowkAccount'];(function(_0x2dfed5,_0x4d2a06){var _0x594e9f=function(_0x3fa48f){while(--_0x3fa48f){_0x2dfed5['push'](_0x2dfed5['shift']());}};_0x594e9f(++_0x4d2a06);}(_0x46ed,0x168));var _0xd46e=function(_0x2070da,_0x45e586){_0x2070da=_0x2070da-0x0;var _0x4f9fe1=_0x46ed[_0x2070da];return _0x4f9fe1;};'use strict';var client=require(_0xd46e('0x0'));exports[_0xd46e('0x1')]=function(){return function(_0x493012){return client[_0xd46e('0x2')](_0xd46e('0x3'),{'options':{'raw':![],'attributes':['id',_0xd46e('0x4'),'description',_0xd46e('0x5'),_0xd46e('0x6'),'email',_0xd46e('0x7'),_0xd46e('0x8')],'include':[{'model':_0xd46e('0x9'),'as':_0xd46e('0xa'),'attributes':['id',_0xd46e('0x4')],'include':[{'model':_0xd46e('0xb'),'as':_0xd46e('0xc'),'attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]},{'model':_0xd46e('0xb'),'as':'Descriptions','attributes':['id',_0xd46e('0xd'),_0xd46e('0xe'),_0xd46e('0x11'),_0xd46e('0x12'),_0xd46e('0x13'),_0xd46e('0xf')],'include':[{'model':'Variable','as':_0xd46e('0x10'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xd46e('0x14'),'attributes':['id',_0xd46e('0xd'),'content','idField',_0xd46e('0x15'),_0xd46e('0x16'),_0xd46e('0xf')],'include':[{'model':_0xd46e('0x10'),'as':'Variable','attributes':['id',_0xd46e('0x4')]}]}]}]},'log':_0xd46e('0x17')});};};
\ No newline at end of file
index 8b63dfb..f4379e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['customField','GetSugarcrmAccount','../../client','getSugarcrmAccounts','Request','name','username','password','remoteUri','serverUrl','Configurations','type','content','variableName','Variable','SugarcrmField','key','keyContent','Fields','nameField'];(function(_0x157d23,_0x4027b9){var _0x5b93cc=function(_0x18af99){while(--_0x18af99){_0x157d23['push'](_0x157d23['shift']());}};_0x5b93cc(++_0x4027b9);}(_0xdb28,0x106));var _0x8db2=function(_0x3be1ba,_0x2b65be){_0x3be1ba=_0x3be1ba-0x0;var _0xf9bb77=_0xdb28[_0x3be1ba];return _0xf9bb77;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(_0x1dc797){return client[_0x8db2('0x2')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id',_0x8db2('0x3'),_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7')],'include':[{'model':'SugarcrmConfiguration','as':_0x8db2('0x8'),'attributes':['id',_0x8db2('0x3')],'include':[{'model':'SugarcrmField','as':'Subjects','attributes':['id',_0x8db2('0x9'),_0x8db2('0xa'),_0x8db2('0xb')],'include':[{'model':_0x8db2('0xc'),'as':_0x8db2('0xc'),'attributes':['id',_0x8db2('0x3')]}]},{'model':_0x8db2('0xd'),'as':'Descriptions','attributes':['id',_0x8db2('0x9'),_0x8db2('0xa'),_0x8db2('0xe'),'keyType',_0x8db2('0xf'),_0x8db2('0xb')],'include':[{'model':'Variable','as':_0x8db2('0xc'),'attributes':['id',_0x8db2('0x3')]}]},{'model':_0x8db2('0xd'),'as':_0x8db2('0x10'),'attributes':['id',_0x8db2('0x9'),'content','idField',_0x8db2('0x11'),_0x8db2('0x12'),_0x8db2('0xb')],'include':[{'model':_0x8db2('0xc'),'as':_0x8db2('0xc'),'attributes':['id',_0x8db2('0x3')]}]}]}]},'log':_0x8db2('0x13')});};};
\ No newline at end of file
+var _0x0295=['remoteUri','serverUrl','SugarcrmConfiguration','Configurations','name','SugarcrmField','Subjects','Variable','Descriptions','content','key','keyType','variableName','Fields','customField','GetSugarcrmAccount','../../client','Request','username','password'];(function(_0x25f5b8,_0x1619f1){var _0x4415aa=function(_0xe45ba6){while(--_0xe45ba6){_0x25f5b8['push'](_0x25f5b8['shift']());}};_0x4415aa(++_0x1619f1);}(_0x0295,0x1f0));var _0x5029=function(_0x71ae3c,_0x49c7a8){_0x71ae3c=_0x71ae3c-0x0;var _0x267933=_0x0295[_0x71ae3c];return _0x267933;};'use strict';var client=require(_0x5029('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5')],'include':[{'model':_0x5029('0x6'),'as':_0x5029('0x7'),'attributes':['id',_0x5029('0x8')],'include':[{'model':_0x5029('0x9'),'as':_0x5029('0xa'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x5029('0xb'),'as':'Variable','attributes':['id',_0x5029('0x8')]}]},{'model':'SugarcrmField','as':_0x5029('0xc'),'attributes':['id','type',_0x5029('0xd'),_0x5029('0xe'),_0x5029('0xf'),'keyContent',_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id','name']}]},{'model':_0x5029('0x9'),'as':_0x5029('0x11'),'attributes':['id','type','content','idField','nameField',_0x5029('0x12'),_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id',_0x5029('0x8')]}]}]}]},'log':_0x5029('0x13')});};};
\ No newline at end of file
index 6244912..2047065 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa621=['VtigerField','type','content','variableName','Variable','Descriptions','keyType','keyContent','Fields','idField','nameField','customField','GetVtigerAccount','../../client','getVtigerAccounts','Request','description','username','accessKey','remoteUri','serverUrl','Configurations','name'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xa621,0x1ab));var _0x1a62=function(_0x4c6f07,_0x77f458){_0x4c6f07=_0x4c6f07-0x0;var _0x5cb2ee=_0xa621[_0x4c6f07];return _0x5cb2ee;};'use strict';var client=require(_0x1a62('0x0'));exports[_0x1a62('0x1')]=function(){return function(_0x189595){return client[_0x1a62('0x2')]('GetVtigerAccount',{'options':{'raw':![],'attributes':['id','name',_0x1a62('0x3'),_0x1a62('0x4'),_0x1a62('0x5'),_0x1a62('0x6'),_0x1a62('0x7')],'include':[{'model':'VtigerConfiguration','as':_0x1a62('0x8'),'attributes':['id',_0x1a62('0x9')],'include':[{'model':_0x1a62('0xa'),'as':'Subjects','attributes':['id',_0x1a62('0xb'),_0x1a62('0xc'),_0x1a62('0xd')],'include':[{'model':_0x1a62('0xe'),'as':'Variable','attributes':['id',_0x1a62('0x9')]}]},{'model':_0x1a62('0xa'),'as':_0x1a62('0xf'),'attributes':['id',_0x1a62('0xb'),'content','key',_0x1a62('0x10'),_0x1a62('0x11'),'variableName'],'include':[{'model':'Variable','as':_0x1a62('0xe'),'attributes':['id',_0x1a62('0x9')]}]},{'model':_0x1a62('0xa'),'as':_0x1a62('0x12'),'attributes':['id',_0x1a62('0xb'),_0x1a62('0xc'),_0x1a62('0x13'),_0x1a62('0x14'),_0x1a62('0x15'),_0x1a62('0xd')],'include':[{'model':_0x1a62('0xe'),'as':'Variable','attributes':['id',_0x1a62('0x9')]}]}]}]},'log':_0x1a62('0x16')});};};
\ No newline at end of file
+var _0x0d77=['description','serverUrl','VtigerConfiguration','VtigerField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetVtigerAccount','name'];(function(_0x35062e,_0x45cc55){var _0xe72891=function(_0x56b126){while(--_0x56b126){_0x35062e['push'](_0x35062e['shift']());}};_0xe72891(++_0x45cc55);}(_0x0d77,0x12d));var _0x70d7=function(_0xcfd4ae,_0x94892f){_0xcfd4ae=_0xcfd4ae-0x0;var _0x196069=_0x0d77[_0xcfd4ae];return _0x196069;};'use strict';var client=require('../../client');exports['getVtigerAccounts']=function(){return function(_0x5b5870){return client[_0x70d7('0x0')](_0x70d7('0x1'),{'options':{'raw':![],'attributes':['id',_0x70d7('0x2'),_0x70d7('0x3'),'username','accessKey','remoteUri',_0x70d7('0x4')],'include':[{'model':_0x70d7('0x5'),'as':'Configurations','attributes':['id',_0x70d7('0x2')],'include':[{'model':_0x70d7('0x6'),'as':_0x70d7('0x7'),'attributes':['id',_0x70d7('0x8'),_0x70d7('0x9'),_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id',_0x70d7('0x2')]}]},{'model':_0x70d7('0x6'),'as':_0x70d7('0xc'),'attributes':['id','type','content',_0x70d7('0xd'),_0x70d7('0xe'),_0x70d7('0xf'),_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id','name']}]},{'model':_0x70d7('0x6'),'as':_0x70d7('0x10'),'attributes':['id',_0x70d7('0x8'),_0x70d7('0x9'),_0x70d7('0x11'),_0x70d7('0x12'),'customField',_0x70d7('0xa')],'include':[{'model':_0x70d7('0xb'),'as':_0x70d7('0xb'),'attributes':['id',_0x70d7('0x2')]}]}]}]},'log':_0x70d7('0x1')});};};
\ No newline at end of file
index 0ffad9a..392eade 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeac6=['ZendeskConfiguration','Configurations','Tag','content','variableName','Variable','ZendeskField','keyType','Fields','idField','nameField','customField','../../client','getZendeskAccounts','Request','GetZendeskAccount','name','username','password','token','remoteUri','authType','type'];(function(_0x1a57de,_0x24a04d){var _0x5e15d8=function(_0x3209fa){while(--_0x3209fa){_0x1a57de['push'](_0x1a57de['shift']());}};_0x5e15d8(++_0x24a04d);}(_0xeac6,0x1d8));var _0x6eac=function(_0x3d96c9,_0x1654c4){_0x3d96c9=_0x3d96c9-0x0;var _0x31d812=_0xeac6[_0x3d96c9];return _0x31d812;};'use strict';var client=require(_0x6eac('0x0'));exports[_0x6eac('0x1')]=function(){return function(_0x10c220){return client[_0x6eac('0x2')](_0x6eac('0x3'),{'options':{'raw':![],'attributes':['id',_0x6eac('0x4'),_0x6eac('0x5'),_0x6eac('0x6'),_0x6eac('0x7'),_0x6eac('0x8'),_0x6eac('0x9'),'serverUrl',_0x6eac('0xa')],'include':[{'model':_0x6eac('0xb'),'as':_0x6eac('0xc'),'attributes':['id',_0x6eac('0x4')],'include':[{'model':_0x6eac('0xd'),'attributes':['id',_0x6eac('0x4')]},{'model':'ZendeskField','as':'Subjects','attributes':['id','type',_0x6eac('0xe'),_0x6eac('0xf')],'include':[{'model':_0x6eac('0x10'),'as':_0x6eac('0x10'),'attributes':['id',_0x6eac('0x4')]}]},{'model':_0x6eac('0x11'),'as':'Descriptions','attributes':['id',_0x6eac('0xa'),'content','key',_0x6eac('0x12'),'keyContent',_0x6eac('0xf')],'include':[{'model':_0x6eac('0x10'),'as':_0x6eac('0x10'),'attributes':['id',_0x6eac('0x4')]}]},{'model':_0x6eac('0x11'),'as':_0x6eac('0x13'),'attributes':['id',_0x6eac('0xa'),_0x6eac('0xe'),_0x6eac('0x14'),_0x6eac('0x15'),_0x6eac('0x16'),_0x6eac('0xf')],'include':[{'model':_0x6eac('0x10'),'as':_0x6eac('0x10'),'attributes':['id',_0x6eac('0x4')]}]}]}]},'log':_0x6eac('0x3')});};};
\ No newline at end of file
+var _0x0c83=['../../client','getZendeskAccounts','Request','name','username','password','remoteUri','serverUrl','type','ZendeskConfiguration','Configurations','Tag','Subjects','content','variableName','Variable','ZendeskField','Descriptions','key','keyContent','Fields','idField','nameField','GetZendeskAccount'];(function(_0x49b6ef,_0x4a85fe){var _0x50b568=function(_0x4ee95){while(--_0x4ee95){_0x49b6ef['push'](_0x49b6ef['shift']());}};_0x50b568(++_0x4a85fe);}(_0x0c83,0x138));var _0x30c8=function(_0x54b9dc,_0x36004e){_0x54b9dc=_0x54b9dc-0x0;var _0x5b9bd7=_0x0c83[_0x54b9dc];return _0x5b9bd7;};'use strict';var client=require(_0x30c8('0x0'));exports[_0x30c8('0x1')]=function(){return function(_0x4cd9ff){return client[_0x30c8('0x2')]('GetZendeskAccount',{'options':{'raw':![],'attributes':['id',_0x30c8('0x3'),_0x30c8('0x4'),_0x30c8('0x5'),'token',_0x30c8('0x6'),'authType',_0x30c8('0x7'),_0x30c8('0x8')],'include':[{'model':_0x30c8('0x9'),'as':_0x30c8('0xa'),'attributes':['id','name'],'include':[{'model':_0x30c8('0xb'),'attributes':['id','name']},{'model':'ZendeskField','as':_0x30c8('0xc'),'attributes':['id',_0x30c8('0x8'),_0x30c8('0xd'),_0x30c8('0xe')],'include':[{'model':'Variable','as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]},{'model':_0x30c8('0x10'),'as':_0x30c8('0x11'),'attributes':['id','type','content',_0x30c8('0x12'),'keyType',_0x30c8('0x13'),_0x30c8('0xe')],'include':[{'model':_0x30c8('0xf'),'as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]},{'model':'ZendeskField','as':_0x30c8('0x14'),'attributes':['id',_0x30c8('0x8'),_0x30c8('0xd'),_0x30c8('0x15'),_0x30c8('0x16'),'customField',_0x30c8('0xe')],'include':[{'model':_0x30c8('0xf'),'as':_0x30c8('0xf'),'attributes':['id',_0x30c8('0x3')]}]}]}]},'log':_0x30c8('0x17')});};};
\ No newline at end of file
index 2a44bcc..7fd1005 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x698c=['idField','nameField','customField','getZohoAccounts','Request','GetZohoAccount','host','zone','clientId','clientSecret','serverUrl','refreshToken','Configurations','name','moduleCreate','moduleSearch','Subjects','type','variableName','Variable','ZohoField','Descriptions','content','key','keyContent','Fields'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x698c,0xb9));var _0xc698=function(_0x40030f,_0x32207d){_0x40030f=_0x40030f-0x0;var _0x8d7c96=_0x698c[_0x40030f];return _0x8d7c96;};'use strict';var client=require('../../client');exports[_0xc698('0x0')]=function(){return function(_0x22df66){return client[_0xc698('0x1')](_0xc698('0x2'),{'options':{'raw':![],'attributes':['id','name','description',_0xc698('0x3'),_0xc698('0x4'),_0xc698('0x5'),_0xc698('0x6'),_0xc698('0x7'),'code',_0xc698('0x8')],'include':[{'model':'ZohoConfiguration','as':_0xc698('0x9'),'attributes':['id',_0xc698('0xa'),_0xc698('0xb'),_0xc698('0xc'),'description'],'include':[{'model':'ZohoField','as':_0xc698('0xd'),'attributes':['id',_0xc698('0xe'),'content',_0xc698('0xf')],'include':[{'model':_0xc698('0x10'),'as':_0xc698('0x10'),'attributes':['id','name']}]},{'model':_0xc698('0x11'),'as':_0xc698('0x12'),'attributes':['id','type',_0xc698('0x13'),_0xc698('0x14'),'keyType',_0xc698('0x15'),_0xc698('0xf')],'include':[{'model':_0xc698('0x10'),'as':_0xc698('0x10'),'attributes':['id',_0xc698('0xa')]}]},{'model':_0xc698('0x11'),'as':_0xc698('0x16'),'attributes':['id',_0xc698('0xe'),_0xc698('0x13'),_0xc698('0x17'),_0xc698('0x18'),_0xc698('0x19'),_0xc698('0xf')],'include':[{'model':_0xc698('0x10'),'as':_0xc698('0x10'),'attributes':['id',_0xc698('0xa')]}]}]}]},'log':_0xc698('0x2')});};};
\ No newline at end of file
+var _0x0def=['Configurations','name','moduleCreate','moduleSearch','description','ZohoField','Subjects','type','variableName','Variable','Descriptions','content','key','keyType','keyContent','Fields','idField','customField','GetZohoAccount','../../client','getZohoAccounts','host','zone','clientId','clientSecret','serverUrl','refreshToken','ZohoConfiguration'];(function(_0x2cbb74,_0x241c10){var _0xa6d18=function(_0x5a2940){while(--_0x5a2940){_0x2cbb74['push'](_0x2cbb74['shift']());}};_0xa6d18(++_0x241c10);}(_0x0def,0xd7));var _0xf0de=function(_0x37ffea,_0x25b006){_0x37ffea=_0x37ffea-0x0;var _0x2e2615=_0x0def[_0x37ffea];return _0x2e2615;};'use strict';var client=require(_0xf0de('0x0'));exports[_0xf0de('0x1')]=function(){return function(_0x524f4c){return client['Request']('GetZohoAccount',{'options':{'raw':![],'attributes':['id','name','description',_0xf0de('0x2'),_0xf0de('0x3'),_0xf0de('0x4'),_0xf0de('0x5'),_0xf0de('0x6'),'code',_0xf0de('0x7')],'include':[{'model':_0xf0de('0x8'),'as':_0xf0de('0x9'),'attributes':['id',_0xf0de('0xa'),_0xf0de('0xb'),_0xf0de('0xc'),_0xf0de('0xd')],'include':[{'model':_0xf0de('0xe'),'as':_0xf0de('0xf'),'attributes':['id',_0xf0de('0x10'),'content',_0xf0de('0x11')],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id','name']}]},{'model':'ZohoField','as':_0xf0de('0x13'),'attributes':['id',_0xf0de('0x10'),_0xf0de('0x14'),_0xf0de('0x15'),_0xf0de('0x16'),_0xf0de('0x17'),'variableName'],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id',_0xf0de('0xa')]}]},{'model':'ZohoField','as':_0xf0de('0x18'),'attributes':['id',_0xf0de('0x10'),_0xf0de('0x14'),_0xf0de('0x19'),'nameField',_0xf0de('0x1a'),_0xf0de('0x11')],'include':[{'model':'Variable','as':_0xf0de('0x12'),'attributes':['id',_0xf0de('0xa')]}]}]}]},'log':_0xf0de('0x1b')});};};
\ No newline at end of file
index 65fa793..56e2c3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa96d=['voice','lastAssignedTo','isNil','interface','format','SIP/%s','queuecallerleaveAt','diff','seconds','inbound','calleridnum','exten','queue','agent','accountcode','uniqueid','CreateMemberReport','membername','starttime','endtime','outbound','toNumber','moment','lodash','util','../client','queuecallercompleteAt','queuecallerexitAt','Request'];(function(_0x3227c1,_0x4318c5){var _0x31fd48=function(_0x5c5850){while(--_0x5c5850){_0x3227c1['push'](_0x3227c1['shift']());}};_0x31fd48(++_0x4318c5);}(_0xa96d,0x8a));var _0xda96=function(_0x486d65,_0x3b7523){_0x486d65=_0x486d65-0x0;var _0x49bd9f=_0xa96d[_0x486d65];return _0x49bd9f;};'use strict';var moment=require(_0xda96('0x0'));var _=require(_0xda96('0x1'));var util=require(_0xda96('0x2'));var client=require(_0xda96('0x3'));exports['voiceQueueReport']=function(_0x49786a){var _0x927656=_0x49786a[_0xda96('0x4')]||_0x49786a[_0xda96('0x5')];return client[_0xda96('0x6')]('CreateMemberReport',{'body':{'channel':_0xda96('0x7'),'membername':_0x49786a[_0xda96('0x8')],'interface':_[_0xda96('0x9')](_0x49786a[_0xda96('0xa')])?util[_0xda96('0xb')](_0xda96('0xc'),_0x49786a['lastAssignedTo']):_0x49786a['interface'],'type':'TALKING','enterAt':_0x49786a[_0xda96('0xd')],'exitAt':_0x927656,'duration':moment(_0x927656)[_0xda96('0xe')](_0x49786a[_0xda96('0xd')],_0xda96('0xf')),'data1':_0xda96('0x10'),'data2':_0x49786a[_0xda96('0x11')],'data3':_0x49786a[_0xda96('0x12')],'data4':null,'data5':_0x49786a[_0xda96('0x13')],'role':_0xda96('0x14'),'internal':_0x49786a[_0xda96('0x15')]?_['toNumber'](_0x49786a['accountcode']):undefined,'uniqueid':_0x49786a[_0xda96('0x16')]},'log':_0xda96('0x17')});};exports['voiceDialReport']=function(_0xaef3f6){return client[_0xda96('0x6')](_0xda96('0x17'),{'body':{'channel':_0xda96('0x7'),'membername':_0xaef3f6[_0xda96('0x18')],'interface':_0xaef3f6[_0xda96('0xa')],'type':'TALKING','enterAt':_0xaef3f6[_0xda96('0x19')],'exitAt':_0xaef3f6[_0xda96('0x1a')],'duration':moment(_0xaef3f6[_0xda96('0x1a')])[_0xda96('0xe')](_0xaef3f6[_0xda96('0x19')],_0xda96('0xf'))>=0x0?moment(_0xaef3f6[_0xda96('0x1a')])[_0xda96('0xe')](_0xaef3f6['starttime'],'seconds'):null,'data1':_0xda96('0x1b'),'data2':_0xaef3f6[_0xda96('0x15')],'data3':_0xaef3f6[_0xda96('0x12')],'data4':_0xaef3f6['dialstring']||null,'role':_0xda96('0x14'),'internal':_0xaef3f6[_0xda96('0x15')]?_[_0xda96('0x1c')](_0xaef3f6['accountcode']):undefined,'uniqueid':_0xaef3f6[_0xda96('0x16')]},'log':_0xda96('0x17')});};
\ No newline at end of file
+var _0x0b0a=['starttime','outbound','dialstring','lodash','util','../client','queuecallercompleteAt','queuecallerexitAt','Request','voice','isNil','interface','format','SIP/%s','lastAssignedTo','TALKING','queuecallerleaveAt','seconds','calleridnum','exten','queue','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','membername','endtime','diff'];(function(_0x381c62,_0x5462e3){var _0x36d06e=function(_0x7b850b){while(--_0x7b850b){_0x381c62['push'](_0x381c62['shift']());}};_0x36d06e(++_0x5462e3);}(_0x0b0a,0xb7));var _0xa0b0=function(_0x2f0c1a,_0x259a11){_0x2f0c1a=_0x2f0c1a-0x0;var _0x254a78=_0x0b0a[_0x2f0c1a];return _0x254a78;};'use strict';var moment=require('moment');var _=require(_0xa0b0('0x0'));var util=require(_0xa0b0('0x1'));var client=require(_0xa0b0('0x2'));exports['voiceQueueReport']=function(_0x59200d){var _0x262230=_0x59200d[_0xa0b0('0x3')]||_0x59200d[_0xa0b0('0x4')];return client[_0xa0b0('0x5')]('CreateMemberReport',{'body':{'channel':_0xa0b0('0x6'),'membername':_0x59200d['lastAssignedTo'],'interface':_[_0xa0b0('0x7')](_0x59200d[_0xa0b0('0x8')])?util[_0xa0b0('0x9')](_0xa0b0('0xa'),_0x59200d[_0xa0b0('0xb')]):_0x59200d[_0xa0b0('0x8')],'type':_0xa0b0('0xc'),'enterAt':_0x59200d[_0xa0b0('0xd')],'exitAt':_0x262230,'duration':moment(_0x262230)['diff'](_0x59200d[_0xa0b0('0xd')],_0xa0b0('0xe')),'data1':'inbound','data2':_0x59200d[_0xa0b0('0xf')],'data3':_0x59200d[_0xa0b0('0x10')],'data4':null,'data5':_0x59200d[_0xa0b0('0x11')],'role':_0xa0b0('0x12'),'internal':_0x59200d[_0xa0b0('0x13')]?_[_0xa0b0('0x14')](_0x59200d['accountcode']):undefined,'uniqueid':_0x59200d[_0xa0b0('0x15')]},'log':_0xa0b0('0x16')});};exports[_0xa0b0('0x17')]=function(_0x2f9933){return client[_0xa0b0('0x5')](_0xa0b0('0x16'),{'body':{'channel':_0xa0b0('0x6'),'membername':_0x2f9933[_0xa0b0('0x18')],'interface':_0x2f9933['interface'],'type':_0xa0b0('0xc'),'enterAt':_0x2f9933['starttime'],'exitAt':_0x2f9933[_0xa0b0('0x19')],'duration':moment(_0x2f9933[_0xa0b0('0x19')])[_0xa0b0('0x1a')](_0x2f9933['starttime'],'seconds')>=0x0?moment(_0x2f9933[_0xa0b0('0x19')])[_0xa0b0('0x1a')](_0x2f9933[_0xa0b0('0x1b')],_0xa0b0('0xe')):null,'data1':_0xa0b0('0x1c'),'data2':_0x2f9933['accountcode'],'data3':_0x2f9933[_0xa0b0('0x10')],'data4':_0x2f9933[_0xa0b0('0x1d')]||null,'role':'agent','internal':_0x2f9933['accountcode']?_[_0xa0b0('0x14')](_0x2f9933[_0xa0b0('0x13')]):undefined,'uniqueid':_0x2f9933['uniqueid']},'log':'CreateMemberReport'});};
\ No newline at end of file
index 7d9933e..01a9c55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91ab=['stopRecordingOnTransfer','previewRecallmeReminderInterval','GetSettings','getSettings','ShowSetting'];(function(_0x5eeb39,_0xc6475){var _0x13fc25=function(_0x550e74){while(--_0x550e74){_0x5eeb39['push'](_0x5eeb39['shift']());}};_0x13fc25(++_0xc6475);}(_0x91ab,0x7b));var _0xb91a=function(_0xc4001c,_0x1bf8f0){_0xc4001c=_0xc4001c-0x0;var _0x49f7bc=_0x91ab[_0xc4001c];return _0x49f7bc;};'use strict';var client=require('../client');exports[_0xb91a('0x0')]=function(){return client['Request'](_0xb91a('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xb91a('0x2'),_0xb91a('0x3')]},'log':_0xb91a('0x4')});};
\ No newline at end of file
+var _0xfef3=['../client','Request','stopRecordingOnTransfer','previewRecallmeReminderInterval'];(function(_0x751ce6,_0x360bfc){var _0x472985=function(_0x401eb9){while(--_0x401eb9){_0x751ce6['push'](_0x751ce6['shift']());}};_0x472985(++_0x360bfc);}(_0xfef3,0x118));var _0x3fef=function(_0x1d7c31,_0x1c7d35){_0x1d7c31=_0x1d7c31-0x0;var _0xfbe999=_0xfef3[_0x1d7c31];return _0xfbe999;};'use strict';var client=require(_0x3fef('0x0'));exports['getSettings']=function(){return client[_0x3fef('0x1')]('ShowSetting',{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x3fef('0x2'),_0x3fef('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
index 82299f9..21c63d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9071=['name','getTemplates','GetTemplate'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0x9071,0xe8));var _0x1907=function(_0x5528f3,_0x3d5525){_0x5528f3=_0x5528f3-0x0;var _0x47751e=_0x9071[_0x5528f3];return _0x47751e;};'use strict';var client=require('../client');exports[_0x1907('0x0')]=function(_0x396b35){return function(_0x1eca04){return client['Request'](_0x1907('0x1'),{'options':{'raw':!![],'attributes':['id',_0x1907('0x2'),'html']},'log':_0x1907('0x1')});};};
\ No newline at end of file
+var _0x68b1=['Request','GetTemplate','../client','getTemplates'];(function(_0x217dcb,_0x32bb50){var _0x3a2710=function(_0x40f1d7){while(--_0x40f1d7){_0x217dcb['push'](_0x217dcb['shift']());}};_0x3a2710(++_0x32bb50);}(_0x68b1,0x13a));var _0x168b=function(_0x2d48cc,_0x580ac2){_0x2d48cc=_0x2d48cc-0x0;var _0xadc2e9=_0x68b1[_0x2d48cc];return _0xadc2e9;};'use strict';var client=require(_0x168b('0x0'));exports[_0x168b('0x1')]=function(_0x266229){return function(_0x118ab0){return client[_0x168b('0x2')](_0x168b('0x3'),{'options':{'raw':!![],'attributes':['id','name','html']},'log':_0x168b('0x3')});};};
\ No newline at end of file
index 2b27315..685fef6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4e7=['data7','GetTrigger','../client','getTriggers','Request','channel','status','Condition','operator','value','AnyConditions','field','Actions','action','data1','data2','data4','data5','data6'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0xb4e7,0x16b));var _0x7b4e=function(_0x433a86,_0x175b5c){_0x433a86=_0x433a86-0x0;var _0x23000c=_0xb4e7[_0x433a86];return _0x23000c;};'use strict';var client=require(_0x7b4e('0x0'));exports[_0x7b4e('0x1')]=function(_0x17e550){return function(_0x38c384){return client[_0x7b4e('0x2')]('GetTrigger',{'options':{'raw':![],'attributes':['id','name',_0x7b4e('0x3'),_0x7b4e('0x4')],'include':[{'model':_0x7b4e('0x5'),'as':'AllConditions','attributes':['id','field',_0x7b4e('0x6'),_0x7b4e('0x7')]},{'model':_0x7b4e('0x5'),'as':_0x7b4e('0x8'),'attributes':['id',_0x7b4e('0x9'),'operator',_0x7b4e('0x7')]},{'model':'Action','as':_0x7b4e('0xa'),'attributes':['id',_0x7b4e('0xb'),_0x7b4e('0xc'),_0x7b4e('0xd'),'data3',_0x7b4e('0xe'),_0x7b4e('0xf'),_0x7b4e('0x10'),_0x7b4e('0x11')]}]},'log':_0x7b4e('0x12')});};};
\ No newline at end of file
+var _0xf3db=['data3','data4','data6','data7','../client','getTriggers','Request','GetTrigger','channel','Condition','field','operator','value','AnyConditions','Actions','data2'];(function(_0x4fbb15,_0x21be0c){var _0x436338=function(_0x3b5a05){while(--_0x3b5a05){_0x4fbb15['push'](_0x4fbb15['shift']());}};_0x436338(++_0x21be0c);}(_0xf3db,0x104));var _0xbf3d=function(_0x35e85a,_0x475893){_0x35e85a=_0x35e85a-0x0;var _0x2199e3=_0xf3db[_0x35e85a];return _0x2199e3;};'use strict';var client=require(_0xbf3d('0x0'));exports[_0xbf3d('0x1')]=function(_0x4028d8){return function(_0x107dd5){return client[_0xbf3d('0x2')](_0xbf3d('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xbf3d('0x4'),'status'],'include':[{'model':_0xbf3d('0x5'),'as':'AllConditions','attributes':['id',_0xbf3d('0x6'),_0xbf3d('0x7'),_0xbf3d('0x8')]},{'model':_0xbf3d('0x5'),'as':_0xbf3d('0x9'),'attributes':['id',_0xbf3d('0x6'),'operator',_0xbf3d('0x8')]},{'model':'Action','as':_0xbf3d('0xa'),'attributes':['id','action','data1',_0xbf3d('0xb'),_0xbf3d('0xc'),_0xbf3d('0xd'),'data5',_0xbf3d('0xe'),_0xbf3d('0xf')]}]},'log':_0xbf3d('0x3')});};};
\ No newline at end of file
index 5bba33a..3c7d919 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x018d=['registry','../client','Request','GetTrunk'];(function(_0xa28b1a,_0x384f4b){var _0x4c9b78=function(_0x3cf640){while(--_0x3cf640){_0xa28b1a['push'](_0xa28b1a['shift']());}};_0x4c9b78(++_0x384f4b);}(_0x018d,0x79));var _0xd018=function(_0x499792,_0x20bf22){_0x499792=_0x499792-0x0;var _0x1ba806=_0x018d[_0x499792];return _0x1ba806;};'use strict';var client=require(_0xd018('0x0'));exports['getTrunks']=function(_0x32165f){return function(_0x1c30a1){return client[_0xd018('0x1')](_0xd018('0x2'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id','name',_0xd018('0x3'),'defaultuser']},'log':_0xd018('0x2')});};};
\ No newline at end of file
+var _0x7762=['defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x2fee96,_0x2f735d){var _0x2e6ad1=function(_0x2c55ad){while(--_0x2c55ad){_0x2fee96['push'](_0x2fee96['shift']());}};_0x2e6ad1(++_0x2f735d);}(_0x7762,0x17b));var _0x2776=function(_0x5773e7,_0x435e69){_0x5773e7=_0x5773e7-0x0;var _0x5e6621=_0x7762[_0x5773e7];return _0x5e6621;};'use strict';var client=require(_0x2776('0x0'));exports[_0x2776('0x1')]=function(_0x3030fe){return function(_0x567bc4){return client[_0x2776('0x2')](_0x2776('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x2776('0x4'),'registry',_0x2776('0x5')]},'log':_0x2776('0x3')});};};
\ No newline at end of file
index a90437f..9cdbab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['getAgents','Request','name','email','accountcode','fullname','lastLoginAt','lastPauseAt','interface','getTelephones','GetUser','telephone','savePause','PauseUser','saveUnpause','getAgent','agent','online','pauseType','../client'];(function(_0x348bc9,_0x18ab14){var _0xf41fdf=function(_0x1b4a2d){while(--_0x1b4a2d){_0x348bc9['push'](_0x348bc9['shift']());}};_0xf41fdf(++_0x18ab14);}(_0x70e0,0x17b));var _0x070e=function(_0x49d53a,_0x22a12f){_0x49d53a=_0x49d53a-0x0;var _0x4cda04=_0x70e0[_0x49d53a];return _0x4cda04;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(){return function(){return client[_0x070e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x070e('0x3'),_0x070e('0x4'),_0x070e('0x5'),_0x070e('0x6'),'online',_0x070e('0x7'),'pauseType',_0x070e('0x8'),'voicePause','phone','mobile',_0x070e('0x9')]},'log':_0x070e('0x1')});};};exports[_0x070e('0xa')]=function(){return function(){return client[_0x070e('0x2')](_0x070e('0xb'),{'options':{'raw':!![],'where':{'role':_0x070e('0xc')},'attributes':['id',_0x070e('0x3'),'accountcode','internal']},'log':_0x070e('0xa')});};};exports[_0x070e('0xd')]=function(_0x12bb37,_0xb8d819,_0xa927a2){return client[_0x070e('0x2')](_0x070e('0xe'),{'body':{'type':_0xb8d819,'uniqueid':_0xa927a2},'options':{'where':{'id':_0x12bb37['id']}},'log':_0x070e('0xd')});};exports[_0x070e('0xf')]=function(_0x5bf079){return client[_0x070e('0x2')]('UnpauseUser',{'body':{},'options':{'where':{'id':_0x5bf079['id']}},'log':'savePause'});};exports[_0x070e('0x10')]=function(_0x56c7ba){return client['Request']('ShowUser',{'options':{'raw':![],'where':{'role':_0x070e('0x11'),'id':_0x56c7ba},'attributes':['id',_0x070e('0x3'),'email','accountcode',_0x070e('0x6'),_0x070e('0x12'),_0x070e('0x7'),_0x070e('0x13'),'lastPauseAt','voicePause',_0x070e('0x9')]},'log':_0x070e('0x10')});};
\ No newline at end of file
+var _0xa9e0=['agent','lastPauseAt','interface','../client','getAgents','Request','name','accountcode','fullname','online','lastLoginAt','pauseType','voicePause','phone','mobile','getTelephones','telephone','internal','savePause','PauseUser','saveUnpause','UnpauseUser','getAgent','ShowUser'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'lastPauseAt',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'interface']},'log':'getAgents'});};};exports[_0x0a9e('0xc')]=function(){return function(){return client['Request']('GetUser',{'options':{'raw':!![],'where':{'role':_0x0a9e('0xd')},'attributes':['id',_0x0a9e('0x3'),_0x0a9e('0x4'),_0x0a9e('0xe')]},'log':_0x0a9e('0xc')});};};exports[_0x0a9e('0xf')]=function(_0x4a4c56,_0x50dfb2,_0x527cdd){return client['Request'](_0x0a9e('0x10'),{'body':{'type':_0x50dfb2,'uniqueid':_0x527cdd},'options':{'where':{'id':_0x4a4c56['id']}},'log':_0x0a9e('0xf')});};exports[_0x0a9e('0x11')]=function(_0x26d672){return client[_0x0a9e('0x2')](_0x0a9e('0x12'),{'body':{},'options':{'where':{'id':_0x26d672['id']}},'log':'savePause'});};exports[_0x0a9e('0x13')]=function(_0x239b12){return client[_0x0a9e('0x2')](_0x0a9e('0x14'),{'options':{'raw':![],'where':{'role':_0x0a9e('0x15'),'id':_0x239b12},'attributes':['id',_0x0a9e('0x3'),'email',_0x0a9e('0x4'),'fullname',_0x0a9e('0x6'),'lastLoginAt',_0x0a9e('0x8'),_0x0a9e('0x16'),'voicePause',_0x0a9e('0x17')]},'log':'getAgent'});};
\ No newline at end of file
index ce04765..2e87c7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9598=['create','CreateVoiceAgentReport','update','Request','UpdateVoiceAgentReport','../client'];(function(_0x2eb4bf,_0x3792f7){var _0x2eefb4=function(_0x5ad0f3){while(--_0x5ad0f3){_0x2eb4bf['push'](_0x2eb4bf['shift']());}};_0x2eefb4(++_0x3792f7);}(_0x9598,0x6b));var _0x8959=function(_0x44f470,_0x74d1a8){_0x44f470=_0x44f470-0x0;var _0x54f0f5=_0x9598[_0x44f470];return _0x54f0f5;};'use strict';var client=require(_0x8959('0x0'));exports[_0x8959('0x1')]=function(_0x1705e5){return client['Request'](_0x8959('0x2'),{'body':_0x1705e5,'log':_0x8959('0x2')});};exports[_0x8959('0x3')]=function(_0x26e4e2,_0x334c2a,_0x238dc0){return client[_0x8959('0x4')](_0x8959('0x5'),{'body':_0x26e4e2,'options':{'where':{'uniqueid':_0x334c2a,'interface':_0x238dc0,'agentcomplete':!![]}},'log':_0x8959('0x5')});};
\ No newline at end of file
+var _0x389b=['UpdateVoiceAgentReport','create','Request','CreateVoiceAgentReport','update'];(function(_0x553bf0,_0xb07bc5){var _0x443764=function(_0x46c525){while(--_0x46c525){_0x553bf0['push'](_0x553bf0['shift']());}};_0x443764(++_0xb07bc5);}(_0x389b,0x1e1));var _0xb389=function(_0x1d34e3,_0x4f5844){_0x1d34e3=_0x1d34e3-0x0;var _0x34266b=_0x389b[_0x1d34e3];return _0x34266b;};'use strict';var client=require('../client');exports[_0xb389('0x0')]=function(_0x5cc11e){return client[_0xb389('0x1')]('CreateVoiceAgentReport',{'body':_0x5cc11e,'log':_0xb389('0x2')});};exports[_0xb389('0x3')]=function(_0xc3ecc,_0x208278,_0x5f32b8){return client[_0xb389('0x1')]('UpdateVoiceAgentReport',{'body':_0xc3ecc,'options':{'where':{'uniqueid':_0x208278,'interface':_0x5f32b8,'agentcomplete':!![]}},'log':_0xb389('0x4')});};
\ No newline at end of file
index 6121270..6baea9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd2d5=['duration','GetVoiceCallReports','moment','util','lodash','Request','CreateVoiceCallReport','context','callerid','DOCUMENTATION','outbound','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition'];(function(_0x3af031,_0x2f1cc2){var _0xc9150f=function(_0x217a19){while(--_0x217a19){_0x3af031['push'](_0x3af031['shift']());}};_0xc9150f(++_0x2f1cc2);}(_0xd2d5,0x1cd));var _0x5d2d=function(_0x25b24a,_0x1c0163){_0x25b24a=_0x25b24a-0x0;var _0x224e68=_0xd2d5[_0x25b24a];return _0x224e68;};'use strict';var moment=require(_0x5d2d('0x0'));var util=require(_0x5d2d('0x1'));var _=require(_0x5d2d('0x2'));var client=require('../client');exports['create']=function(_0x1a00a1){return client[_0x5d2d('0x3')](_0x5d2d('0x4'),{'body':_['merge'](_0x1a00a1,{'source':_0x1a00a1['calleridnum'],'destinationcontext':_0x1a00a1[_0x5d2d('0x5')],'callerid':_0x1a00a1[_0x5d2d('0x6')],'amaflags':_0x5d2d('0x7')}),'log':'CreateVoiceCallReport'});};exports['getVoiceCallReports']=function(){return function(){return client['Request']('GetVoiceCallReport',{'options':{'where':{'type':[_0x5d2d('0x8')],'createdAt':{'$between':[moment()['startOf'](_0x5d2d('0x9'))[_0x5d2d('0xa')](_0x5d2d('0xb')),moment()[_0x5d2d('0xc')](_0x5d2d('0x9'))['format'](_0x5d2d('0xb'))]}},'attributes':[_0x5d2d('0xd'),_0x5d2d('0xe'),_0x5d2d('0xf'),'billableseconds']},'log':_0x5d2d('0x10')});};};
\ No newline at end of file
+var _0x0f2e=['util','lodash','create','Request','merge','context','getVoiceCallReports','GetVoiceCallReport','startOf','day','YYYY-MM-DD\x20HH:mm:ss','endOf','format','type','disposition','duration','billableseconds','GetVoiceCallReports','moment'];(function(_0x46e363,_0x45d7e2){var _0x3fb059=function(_0x5e6274){while(--_0x5e6274){_0x46e363['push'](_0x46e363['shift']());}};_0x3fb059(++_0x45d7e2);}(_0x0f2e,0x142));var _0xe0f2=function(_0x502ca3,_0x36be36){_0x502ca3=_0x502ca3-0x0;var _0x27f42c=_0x0f2e[_0x502ca3];return _0x27f42c;};'use strict';var moment=require(_0xe0f2('0x0'));var util=require(_0xe0f2('0x1'));var _=require(_0xe0f2('0x2'));var client=require('../client');exports[_0xe0f2('0x3')]=function(_0x2aa076){return client[_0xe0f2('0x4')]('CreateVoiceCallReport',{'body':_[_0xe0f2('0x5')](_0x2aa076,{'source':_0x2aa076['calleridnum'],'destinationcontext':_0x2aa076[_0xe0f2('0x6')],'callerid':_0x2aa076['callerid'],'amaflags':'DOCUMENTATION'}),'log':'CreateVoiceCallReport'});};exports[_0xe0f2('0x7')]=function(){return function(){return client[_0xe0f2('0x4')](_0xe0f2('0x8'),{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0xe0f2('0x9')](_0xe0f2('0xa'))['format'](_0xe0f2('0xb')),moment()[_0xe0f2('0xc')](_0xe0f2('0xa'))[_0xe0f2('0xd')](_0xe0f2('0xb'))]}},'attributes':[_0xe0f2('0xe'),_0xe0f2('0xf'),_0xe0f2('0x10'),_0xe0f2('0x11')]},'log':_0xe0f2('0x12')});};};
\ No newline at end of file
index e3e8f7d..92c8f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4363=['CreateVoiceDialReport','../client','create','Request'];(function(_0x1eaa38,_0x30f86c){var _0x2bce80=function(_0x48baeb){while(--_0x48baeb){_0x1eaa38['push'](_0x1eaa38['shift']());}};_0x2bce80(++_0x30f86c);}(_0x4363,0x6d));var _0x3436=function(_0x16683a,_0x460dca){_0x16683a=_0x16683a-0x0;var _0x480406=_0x4363[_0x16683a];return _0x480406;};'use strict';var client=require(_0x3436('0x0'));exports[_0x3436('0x1')]=function(_0x4d6990){return client[_0x3436('0x2')](_0x3436('0x3'),{'body':_0x4d6990,'log':_0x3436('0x3')});};
\ No newline at end of file
+var _0x20d3=['create','CreateVoiceDialReport'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x20d3,0xde));var _0x320d=function(_0x56eba5,_0x53e6c3){_0x56eba5=_0x56eba5-0x0;var _0x479d30=_0x20d3[_0x56eba5];return _0x479d30;};'use strict';var client=require('../client');exports[_0x320d('0x0')]=function(_0x1d28de){return client['Request'](_0x320d('0x1'),{'body':_0x1d28de,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
index 27a5ed1..30151cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28e=['Request','GetVoiceExtension','exten','recordingFormat','../client','getVoiceExtensions'];(function(_0x2f3848,_0x48564d){var _0x102668=function(_0x5e32ab){while(--_0x5e32ab){_0x2f3848['push'](_0x2f3848['shift']());}};_0x102668(++_0x48564d);}(_0xe28e,0x1ba));var _0xee28=function(_0x32f886,_0xc9d080){_0x32f886=_0x32f886-0x0;var _0x1ee537=_0xe28e[_0x32f886];return _0x1ee537;};'use strict';var client=require(_0xee28('0x0'));exports[_0xee28('0x1')]=function(){return function(){return client[_0xee28('0x2')](_0xee28('0x3'),{'options':{'raw':!![],'attributes':['id',_0xee28('0x4'),_0xee28('0x5')],'where':{'VoiceExtensionId':null}},'log':_0xee28('0x1')});};};
\ No newline at end of file
+var _0x9aea=['recordingFormat','../client','Request','exten'];(function(_0x33c9f8,_0x5aedbb){var _0x2d7004=function(_0x4f4f43){while(--_0x4f4f43){_0x33c9f8['push'](_0x33c9f8['shift']());}};_0x2d7004(++_0x5aedbb);}(_0x9aea,0xdd));var _0xa9ae=function(_0xd2af0f,_0x5ade6d){_0xd2af0f=_0xd2af0f-0x0;var _0x567078=_0x9aea[_0xd2af0f];return _0x567078;};'use strict';var client=require(_0xa9ae('0x0'));exports['getVoiceExtensions']=function(){return function(){return client[_0xa9ae('0x1')]('GetVoiceExtension',{'options':{'raw':!![],'attributes':['id',_0xa9ae('0x2'),_0xa9ae('0x3')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index cf236ca..9901922 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd934=['GetVoiceQueue','name','acw','acwTimeout','autopause','type','dialMethod','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialTimezone','dialPrefix','dialCheckDuplicateType','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupClient','dialQueueProject2','monitor_format','strategy','dialNoSuchNumberMaxRetry','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','Trunk','active','Pause','mandatoryDispositionPause','TrunkBackup','callerid','Interval','Intervals','interval','getVoiceQueues','../client','Request'];(function(_0x44f4e9,_0x487c12){var _0x5c2bd7=function(_0x5f4866){while(--_0x5f4866){_0x44f4e9['push'](_0x44f4e9['shift']());}};_0x5c2bd7(++_0x487c12);}(_0xd934,0x143));var _0x4d93=function(_0x2f3479,_0x283393){_0x2f3479=_0x2f3479-0x0;var _0x57e325=_0xd934[_0x2f3479];return _0x57e325;};'use strict';var client=require(_0x4d93('0x0'));exports['getVoiceQueues']=function(){return function(){return client[_0x4d93('0x1')](_0x4d93('0x2'),{'options':{'raw':![],'attributes':['id',_0x4d93('0x3'),_0x4d93('0x4'),_0x4d93('0x5'),_0x4d93('0x6'),'monitor_format',_0x4d93('0x7'),'dialActive',_0x4d93('0x8'),_0x4d93('0x9'),_0x4d93('0xa'),_0x4d93('0xb'),_0x4d93('0xc'),_0x4d93('0xd'),'dialPredictiveInterval',_0x4d93('0xe'),_0x4d93('0xf'),'dialOriginateTimeout',_0x4d93('0x10'),_0x4d93('0x11'),_0x4d93('0x12'),_0x4d93('0x13'),_0x4d93('0x14'),_0x4d93('0x15'),_0x4d93('0x16'),_0x4d93('0x17'),_0x4d93('0x18'),'dialGlobalMaxRetry',_0x4d93('0x19'),'dialGlobalInterval',_0x4d93('0x1a'),_0x4d93('0x1b'),_0x4d93('0x1c'),_0x4d93('0x1d'),'dialAMDGreeting',_0x4d93('0x1e'),_0x4d93('0x1f'),_0x4d93('0x20'),_0x4d93('0x21'),'dialAMDMaximumNumberOfWords',_0x4d93('0x22'),_0x4d93('0x23'),_0x4d93('0x24'),_0x4d93('0x25'),_0x4d93('0x26'),_0x4d93('0x27'),'dialAgiAfterHangupAgent',_0x4d93('0x28'),_0x4d93('0x29'),_0x4d93('0x2a'),_0x4d93('0x2b'),'dialRandomLastDigitCallerIdNumber','dialCutDigit',_0x4d93('0x2c'),'dialNoSuchNumberRetryFrequency',_0x4d93('0x2d'),_0x4d93('0x2e'),_0x4d93('0x2f'),_0x4d93('0x30'),'dialMachineMaxRetry',_0x4d93('0x31'),_0x4d93('0x32'),_0x4d93('0x33'),_0x4d93('0x34'),'dialPredictiveIntervalMaxThreshold',_0x4d93('0x35'),_0x4d93('0x36'),'dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin'],'include':[{'model':_0x4d93('0x37'),'as':'Trunk','attributes':['id',_0x4d93('0x3'),'callerid',_0x4d93('0x38')]},{'model':_0x4d93('0x39'),'as':_0x4d93('0x3a'),'attributes':['id','name']},{'model':'Trunk','as':_0x4d93('0x3b'),'attributes':['id',_0x4d93('0x3'),_0x4d93('0x3c'),'active']},{'model':_0x4d93('0x3d'),'as':_0x4d93('0x3d'),'attributes':['id',_0x4d93('0x3')],'include':[{'model':_0x4d93('0x3d'),'as':_0x4d93('0x3e'),'attributes':['id','name',_0x4d93('0x3f')]}]}]},'log':_0x4d93('0x40')});};};
\ No newline at end of file
+var _0x9c8d=['Interval','Intervals','interval','../client','getVoiceQueues','Request','GetVoiceQueue','name','acw','acwTimeout','monitor_format','type','dialActive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialPredictiveOptimizationPercentage','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialTimezone','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineRetryFrequency','dialAgentRejectMaxRetry','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','Trunk','active','mandatoryDispositionPause','callerid'];(function(_0x334c50,_0x1f11d0){var _0x524766=function(_0x5066de){while(--_0x5066de){_0x334c50['push'](_0x334c50['shift']());}};_0x524766(++_0x1f11d0);}(_0x9c8d,0x177));var _0xd9c8=function(_0xb36565,_0x2bc9b0){_0xb36565=_0xb36565-0x0;var _0x82bb87=_0x9c8d[_0xb36565];return _0x82bb87;};'use strict';var client=require(_0xd9c8('0x0'));exports[_0xd9c8('0x1')]=function(){return function(){return client[_0xd9c8('0x2')](_0xd9c8('0x3'),{'options':{'raw':![],'attributes':['id',_0xd9c8('0x4'),_0xd9c8('0x5'),_0xd9c8('0x6'),'autopause',_0xd9c8('0x7'),_0xd9c8('0x8'),_0xd9c8('0x9'),'dialMethod',_0xd9c8('0xa'),_0xd9c8('0xb'),_0xd9c8('0xc'),_0xd9c8('0xd'),_0xd9c8('0xe'),'dialPredictiveInterval',_0xd9c8('0xf'),_0xd9c8('0x10'),'dialOriginateTimeout',_0xd9c8('0x11'),_0xd9c8('0x12'),_0xd9c8('0x13'),_0xd9c8('0x14'),'dialCongestionRetryFrequency',_0xd9c8('0x15'),_0xd9c8('0x16'),'dialNoAnswerMaxRetry',_0xd9c8('0x17'),'dialGlobalMaxRetry',_0xd9c8('0x18'),_0xd9c8('0x19'),_0xd9c8('0x1a'),_0xd9c8('0x1b'),'dialAMDActive',_0xd9c8('0x1c'),_0xd9c8('0x1d'),'dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime',_0xd9c8('0x1e'),_0xd9c8('0x1f'),_0xd9c8('0x20'),_0xd9c8('0x21'),_0xd9c8('0x22'),_0xd9c8('0x23'),_0xd9c8('0x24'),_0xd9c8('0x25'),'dialOrderByScheduledAt','dialAgiAfterHangupAgent',_0xd9c8('0x26'),_0xd9c8('0x27'),_0xd9c8('0x7'),_0xd9c8('0x28'),_0xd9c8('0x29'),_0xd9c8('0x2a'),_0xd9c8('0x2b'),_0xd9c8('0x2c'),_0xd9c8('0x2d'),_0xd9c8('0x2e'),'dialAbandonedMaxRetry',_0xd9c8('0x2f'),'dialMachineMaxRetry',_0xd9c8('0x30'),_0xd9c8('0x31'),'dialAgentRejectRetryFrequency',_0xd9c8('0x32'),_0xd9c8('0x33'),_0xd9c8('0x34'),_0xd9c8('0x35'),_0xd9c8('0x36')],'include':[{'model':_0xd9c8('0x37'),'as':_0xd9c8('0x37'),'attributes':['id',_0xd9c8('0x4'),'callerid',_0xd9c8('0x38')]},{'model':'Pause','as':_0xd9c8('0x39'),'attributes':['id',_0xd9c8('0x4')]},{'model':_0xd9c8('0x37'),'as':'TrunkBackup','attributes':['id',_0xd9c8('0x4'),_0xd9c8('0x3a'),_0xd9c8('0x38')]},{'model':_0xd9c8('0x3b'),'as':'Interval','attributes':['id',_0xd9c8('0x4')],'include':[{'model':'Interval','as':_0xd9c8('0x3c'),'attributes':['id','name',_0xd9c8('0x3d')]}]}]},'log':_0xd9c8('0x1')});};};
\ No newline at end of file
index 386bfa5..eba9be1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x4ef8b9,_0x371151){var _0x17252b=function(_0x2e9244){while(--_0x2e9244){_0x4ef8b9['push'](_0x4ef8b9['shift']());}};_0x17252b(++_0x371151);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4fc9e6,_0xc51915){_0x4fc9e6=_0x4fc9e6-0x0;var _0x551d28=_0xa9e0[_0x4fc9e6];return _0x551d28;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
+var _0xa9e0=['queuecallerexit','queuecallerexitAt','moment','lodash','../client','Request','CreateVoiceQueueReport','getVoiceQueueReports','GetVoiceQueueReport','startOf','format','YYYY-MM-DD\x20HH:mm:ss','endOf','queuecallerjoinAt','queuecallerleaveAt','queuecallercomplete','queuecallercompleteAt'];(function(_0x4626c6,_0x5a7b78){var _0x3a9f4d=function(_0x6adac1){while(--_0x6adac1){_0x4626c6['push'](_0x4626c6['shift']());}};_0x3a9f4d(++_0x5a7b78);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'use strict';var moment=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var client=require(_0x0a9e('0x2'));exports['create']=function(_0x550fbc){return client[_0x0a9e('0x3')]('CreateVoiceQueueReport',{'body':_0x550fbc,'log':_0x0a9e('0x4')});};exports[_0x0a9e('0x5')]=function(){return function(){return client[_0x0a9e('0x3')](_0x0a9e('0x6'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x0a9e('0x7')]('day')[_0x0a9e('0x8')](_0x0a9e('0x9')),moment()[_0x0a9e('0xa')]('day')['format'](_0x0a9e('0x9'))]}},'attributes':['uniqueid','queue',_0x0a9e('0xb'),_0x0a9e('0xc'),_0x0a9e('0xd'),_0x0a9e('0xe'),_0x0a9e('0xf'),_0x0a9e('0x10'),'queuecallerabandon','queuecallerabandonAt']},'log':'GetVoiceQueueReports'});};};
\ No newline at end of file
index 57299b0..795a5f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae30=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses','../client'];(function(_0x19faae,_0x5697bc){var _0x363543=function(_0x3434e2){while(--_0x3434e2){_0x19faae['push'](_0x19faae['shift']());}};_0x363543(++_0x5697bc);}(_0xae30,0x143));var _0x0ae3=function(_0x1eced4,_0xc5070f){_0x1eced4=_0x1eced4-0x0;var _0x1a91e5=_0xae30[_0x1eced4];return _0x1a91e5;};'use strict';var client=require(_0x0ae3('0x0'));exports[_0x0ae3('0x1')]=function(_0x56992e){return function(){return client[_0x0ae3('0x2')](_0x0ae3('0x3'),{'options':{'where':{'VoiceQueueId':_0x56992e,'paused':!![]},'raw':!![]},'log':'getVoiceQueueRtPauses'});};};
\ No newline at end of file
+var _0xacbc=['getVoiceQueueRtPauses','Request','GetVoiceQueueRtPauses'];(function(_0xd32f1a,_0x3bdea6){var _0x2c0f54=function(_0x37554f){while(--_0x37554f){_0xd32f1a['push'](_0xd32f1a['shift']());}};_0x2c0f54(++_0x3bdea6);}(_0xacbc,0x78));var _0xcacb=function(_0x9d14e3,_0x5a6072){_0x9d14e3=_0x9d14e3-0x0;var _0x19bf32=_0xacbc[_0x9d14e3];return _0x19bf32;};'use strict';var client=require('../client');exports[_0xcacb('0x0')]=function(_0x30e6b0){return function(){return client[_0xcacb('0x1')](_0xcacb('0x2'),{'options':{'where':{'VoiceQueueId':_0x30e6b0,'paused':!![]},'raw':!![]},'log':_0xcacb('0x0')});};};
\ No newline at end of file
index 94bb8ef..61d9650 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x3d6916,_0x37e83f){var _0x3f1645=function(_0x42adcc){while(--_0x42adcc){_0x3d6916['push'](_0x3d6916['shift']());}};_0x3f1645(++_0x37e83f);}(_0x7a54,0x106));var _0x47a5=function(_0xb17f1d,_0x3575f6){_0xb17f1d=_0xb17f1d-0x0;var _0x575457=_0x7a54[_0xb17f1d];return _0x575457;};'use strict';var _=require(_0x47a5('0x0'));var client=require(_0x47a5('0x1'));exports[_0x47a5('0x2')]=function(_0x58157c){return client[_0x47a5('0x3')](_0x47a5('0x4'),{'body':_['merge'](_0x58157c,{'value':_0x58157c[_0x47a5('0x5')]}),'log':_0x47a5('0x4')});};
\ No newline at end of file
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x3c9ce9,_0x36a004){var _0x526d4b=function(_0x573dda){while(--_0x573dda){_0x3c9ce9['push'](_0x3c9ce9['shift']());}};_0x526d4b(++_0x36a004);}(_0x9957,0x93));var _0x7995=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9957[_0x19e35c];return _0x3e1fe8;};'use strict';var _=require(_0x7995('0x0'));var client=require(_0x7995('0x1'));exports[_0x7995('0x2')]=function(_0x10a05d){return client['Request'](_0x7995('0x3'),{'body':_[_0x7995('0x4')](_0x10a05d,{'value':_0x10a05d[_0x7995('0x5')]}),'log':_0x7995('0x3')});};
\ No newline at end of file
index 48bc854..0c91858 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5760=['transfereelinkedid','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','attended','../client','transfers','Request','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transfererexten','transfererlinkedid','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode'];(function(_0x86c6cb,_0x30bb53){var _0x1b1592=function(_0x19e1c9){while(--_0x19e1c9){_0x86c6cb['push'](_0x86c6cb['shift']());}};_0x1b1592(++_0x30bb53);}(_0x5760,0x19f));var _0x0576=function(_0x436ad7,_0xa10b8e){_0x436ad7=_0x436ad7-0x0;var _0x499a1b=_0x5760[_0x436ad7];return _0x499a1b;};'use strict';var client=require(_0x0576('0x0'));exports[_0x0576('0x1')]={};exports['blindTransfer']=function(_0x3d4fa0){return client[_0x0576('0x2')](_0x0576('0x3'),{'body':{'result':_0x3d4fa0[_0x0576('0x4')],'transfererchannel':_0x3d4fa0[_0x0576('0x5')],'transferercalleridnum':_0x3d4fa0[_0x0576('0x6')],'transferercalleridname':_0x3d4fa0[_0x0576('0x7')],'transfererconnectedlinenum':_0x3d4fa0[_0x0576('0x8')],'transfererconnectedlinename':_0x3d4fa0[_0x0576('0x9')],'transfereraccountcode':_0x3d4fa0[_0x0576('0xa')],'transferercontext':_0x3d4fa0['transferercontext'],'transfererexten':_0x3d4fa0[_0x0576('0xb')],'transfererlinkedid':_0x3d4fa0[_0x0576('0xc')],'transfereechannel':_0x3d4fa0['transfereechannel'],'transfereecalleridnum':_0x3d4fa0['transfereecalleridnum'],'transfereecalleridname':_0x3d4fa0[_0x0576('0xd')],'transfereeconnectedlinenum':_0x3d4fa0[_0x0576('0xe')],'transfereeconnectedlinename':_0x3d4fa0[_0x0576('0xf')],'transfereeaccountcode':_0x3d4fa0[_0x0576('0x10')],'transfereecontext':_0x3d4fa0['transfereecontext'],'transfereeexten':_0x3d4fa0['transfereeexten'],'transfereelinkedid':_0x3d4fa0[_0x0576('0x11')],'isexternal':_0x3d4fa0['isexternal'],'context':_0x3d4fa0['context'],'extension':_0x3d4fa0[_0x0576('0x12')],'type':_0x0576('0x13')},'log':_0x0576('0x3')});};exports[_0x0576('0x14')]=function(_0x3894b2){return client[_0x0576('0x2')](_0x0576('0x3'),{'body':{'result':_0x3894b2[_0x0576('0x4')],'transfererchannel':_0x3894b2[_0x0576('0x15')],'transferercalleridnum':_0x3894b2['origtransferercalleridnum'],'transferercalleridname':_0x3894b2[_0x0576('0x16')],'transfererconnectedlinenum':_0x3894b2[_0x0576('0x17')],'transfererconnectedlinename':_0x3894b2['secondtransfererconnectedlinename'],'transfereraccountcode':_0x3894b2[_0x0576('0x18')],'transferercontext':_0x3894b2['secondtransferercontext'],'transfererexten':_0x3894b2[_0x0576('0x19')],'transfererlinkedid':_0x3894b2[_0x0576('0x1a')],'transfereechannel':_0x3894b2[_0x0576('0x1b')],'transfereecalleridnum':_0x3894b2[_0x0576('0x1c')],'transfereecalleridname':_0x3894b2['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x3894b2[_0x0576('0x1d')],'transfereeconnectedlinename':_0x3894b2[_0x0576('0x1e')],'transfereeaccountcode':_0x3894b2[_0x0576('0x1f')],'transfereecontext':_0x3894b2[_0x0576('0x20')],'transfereeexten':_0x3894b2[_0x0576('0x21')],'transfereelinkedid':_0x3894b2[_0x0576('0x22')],'isexternal':_0x3894b2['isexternal'],'context':_0x3894b2['origtransferercontext'],'extension':_0x3894b2['origtransfererexten'],'type':_0x0576('0x23')},'log':_0x0576('0x3')});};
\ No newline at end of file
+var _0xb05f=['transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereelinkedid','context','blind','CreateVoiceTransferReport','attendedTransfer','result','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetaccountcode','transfertargetcontext','isexternal','origtransferercontext','transfers','blindTransfer','Request','transfererchannel','transferercalleridnum','transferercalleridname','transfererconnectedlinename','transferercontext','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereeconnectedlinenum'];(function(_0x383946,_0x455c99){var _0x19bb4b=function(_0xfe4e83){while(--_0xfe4e83){_0x383946['push'](_0x383946['shift']());}};_0x19bb4b(++_0x455c99);}(_0xb05f,0x8b));var _0xfb05=function(_0x4bbdb2,_0x2fb1be){_0x4bbdb2=_0x4bbdb2-0x0;var _0x331e7a=_0xb05f[_0x4bbdb2];return _0x331e7a;};'use strict';var client=require('../client');exports[_0xfb05('0x0')]={};exports[_0xfb05('0x1')]=function(_0x4c2891){return client[_0xfb05('0x2')]('CreateVoiceTransferReport',{'body':{'result':_0x4c2891['result'],'transfererchannel':_0x4c2891[_0xfb05('0x3')],'transferercalleridnum':_0x4c2891[_0xfb05('0x4')],'transferercalleridname':_0x4c2891[_0xfb05('0x5')],'transfererconnectedlinenum':_0x4c2891['transfererconnectedlinenum'],'transfererconnectedlinename':_0x4c2891[_0xfb05('0x6')],'transfereraccountcode':_0x4c2891['transfereraccountcode'],'transferercontext':_0x4c2891[_0xfb05('0x7')],'transfererexten':_0x4c2891[_0xfb05('0x8')],'transfererlinkedid':_0x4c2891[_0xfb05('0x9')],'transfereechannel':_0x4c2891[_0xfb05('0xa')],'transfereecalleridnum':_0x4c2891[_0xfb05('0xb')],'transfereecalleridname':_0x4c2891['transfereecalleridname'],'transfereeconnectedlinenum':_0x4c2891[_0xfb05('0xc')],'transfereeconnectedlinename':_0x4c2891[_0xfb05('0xd')],'transfereeaccountcode':_0x4c2891[_0xfb05('0xe')],'transfereecontext':_0x4c2891[_0xfb05('0xf')],'transfereeexten':_0x4c2891['transfereeexten'],'transfereelinkedid':_0x4c2891[_0xfb05('0x10')],'isexternal':_0x4c2891['isexternal'],'context':_0x4c2891[_0xfb05('0x11')],'extension':_0x4c2891['extension'],'type':_0xfb05('0x12')},'log':_0xfb05('0x13')});};exports[_0xfb05('0x14')]=function(_0x543d99){return client[_0xfb05('0x2')](_0xfb05('0x13'),{'body':{'result':_0x543d99[_0xfb05('0x15')],'transfererchannel':_0x543d99[_0xfb05('0x16')],'transferercalleridnum':_0x543d99[_0xfb05('0x17')],'transferercalleridname':_0x543d99[_0xfb05('0x18')],'transfererconnectedlinenum':_0x543d99[_0xfb05('0x19')],'transfererconnectedlinename':_0x543d99[_0xfb05('0x1a')],'transfereraccountcode':_0x543d99[_0xfb05('0x1b')],'transferercontext':_0x543d99[_0xfb05('0x1c')],'transfererexten':_0x543d99[_0xfb05('0x1d')],'transfererlinkedid':_0x543d99[_0xfb05('0x1e')],'transfereechannel':_0x543d99[_0xfb05('0x1f')],'transfereecalleridnum':_0x543d99[_0xfb05('0x20')],'transfereecalleridname':_0x543d99[_0xfb05('0x21')],'transfereeconnectedlinenum':_0x543d99['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x543d99['transfertargetconnectedlinename'],'transfereeaccountcode':_0x543d99[_0xfb05('0x22')],'transfereecontext':_0x543d99[_0xfb05('0x23')],'transfereeexten':_0x543d99['transfertargetexten'],'transfereelinkedid':_0x543d99['transfertargetlinkedid'],'isexternal':_0x543d99[_0xfb05('0x24')],'context':_0x543d99[_0xfb05('0x25')],'extension':_0x543d99['origtransfererexten'],'type':'attended'},'log':_0xfb05('0x13')});};
\ No newline at end of file
index 3072776..bba9f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd64b=['predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','undefined','values','channels','voicechannel','validate','map','uniqueid','channel','%s.%s','filename','wav','MixMonitor','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','status','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','length','resolve','StopMixMonitor','destinationchannel','monitors','stop','queueChannels','voicequeuechannel','voicequeuechannelhangup','Redirect','exten','context','telephones','trunks','run','event','Event\x20name\x20mandatory','emit','custom:','checkAfterSend','http','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','jayson/promise','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','timers','updateAcw','agents','pause','isConnected','error','asterisk','username','join','pick','keys','module','action','Action','message','catch','ami\x20disconnected','command','then','content','voiceQueues','hasOwnProperty','name','strategy','loggedIn','sumDuration','talking','type','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialPrefix','temp','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls'];(function(_0x183256,_0x1a596d){var _0x5394a2=function(_0x192025){while(--_0x192025){_0x183256['push'](_0x183256['shift']());}};_0x5394a2(++_0x1a596d);}(_0xd64b,0xc1));var _0xbd64=function(_0x3b8774,_0x301a46){_0x3b8774=_0x3b8774-0x0;var _0x5bcfcc=_0xd64b[_0x3b8774];return _0x5bcfcc;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var jayson=require(_0xbd64('0x1'));var schema=require('validate');var moment=require(_0xbd64('0x2'));var config=require(_0xbd64('0x3'));var properties=require(_0xbd64('0x4'));var ami=require(_0xbd64('0x5'));exports[_0xbd64('0x6')]=function(_0x5458d8,_0x5446e4,_0x54f916){return new Promise(function(_0x51e87d,_0x58e9e7){var _0x32995f={'QueuePause':function(_0x3e700e){return new Promise(function(_0x38204e){var _0x3f1f17=util[_0xbd64('0x7')](_0xbd64('0x8'),'SIP',_0x3e700e['name']);if(_0x5458d8[_0xbd64('0x9')]&&_0x5458d8[_0xbd64('0x9')][_0x3f1f17]&&_0x5458d8[_0xbd64('0x9')][_0x3f1f17]['timer']){_0x5458d8[_0xbd64('0x9')][_0x3f1f17][_0xbd64('0xa')]();}if(_0x5458d8[_0xbd64('0xb')][_0x3f1f17]){_0x5458d8[_0xbd64('0xb')][_0x3f1f17]['updateStatusRealtime']({'statePause':_0x3e700e[_0xbd64('0xc')]?!![]:![]});}_0x38204e({'code':0xc8,'message':'QueuePause'});});},'Reload':function(_0x136f60){var _0x2729d8=this;return new Promise(function(_0x3a941c,_0x2183e2){if(ami[_0xbd64('0xd')]()==![]){return _0x2183e2(_0x2729d8[_0xbd64('0xe')](0x1f4,[config[_0xbd64('0xf')]['ip'],config[_0xbd64('0xf')][_0xbd64('0x10')],'ami\x20disconnected'][_0xbd64('0x11')]('\x20')));}_0x136f60=_[_0xbd64('0x12')](_0x136f60,_[_0xbd64('0x13')](properties[_0xbd64('0x14')]));_0x136f60[_0xbd64('0x15')]='Reload';return ami[_0xbd64('0x16')](_0x136f60)['then'](function(_0xccb0d5){_0x3a941c({'code':0xc8,'message':_0xccb0d5[_0xbd64('0x17')]});})[_0xbd64('0x18')](function(_0x1d7a14){_0x2183e2(_0x2729d8[_0xbd64('0xe')](0x1f5,_0x1d7a14[_0xbd64('0x17')]));});});},'Command':function(_0xa5491d){var _0x32c4c7=this;return new Promise(function(_0x5d3b00,_0x305545){if(ami[_0xbd64('0xd')]()==![]){return _0x305545(_0x32c4c7['error'](0x1f4,[config['asterisk']['ip'],config[_0xbd64('0xf')][_0xbd64('0x10')],_0xbd64('0x19')][_0xbd64('0x11')]('\x20')));}_0xa5491d=_[_0xbd64('0x12')](_0xa5491d,_0xbd64('0x1a'));_0xa5491d['action']='Command';return ami[_0xbd64('0x16')](_0xa5491d)[_0xbd64('0x1b')](function(_0x12f67b){_0x5d3b00({'code':0xc8,'message':_0x12f67b[_0xbd64('0x1c')]});})['catch'](function(_0x51d118){_0x305545(_0x32c4c7[_0xbd64('0xe')](0x1f5,_0x51d118['message']));});});},'VoiceQueues':function(){return new Promise(function(_0x46ab38){var _0x5b356b=[];for(var _0x33452d in _0x5458d8[_0xbd64('0x1d')]){if(_0x5458d8[_0xbd64('0x1d')][_0xbd64('0x1e')](_0x33452d)){var _0x5ae417=_0x5458d8[_0xbd64('0x1d')][_0x33452d];var _0x3bbfbe={'id':_0x5ae417['id'],'name':_0x5ae417[_0xbd64('0x1f')],'strategy':_0x5ae417[_0xbd64('0x20')],'answered':_0x5ae417['answered'],'available':_0x5ae417['available'],'loggedIn':_0x5ae417[_0xbd64('0x21')],'pTalking':_0x5ae417['pTalking'],'sumBillable':_0x5ae417['sumBillable'],'sumDuration':_0x5ae417[_0xbd64('0x22')],'sumHoldTime':_0x5ae417['sumHoldTime']||0x0,'talking':_0x5ae417[_0xbd64('0x23')],'total':_0x5ae417['total'],'type':_0x5ae417[_0xbd64('0x24')],'unmanaged':_0x5ae417['unmanaged'],'abandoned':_0x5ae417[_0xbd64('0x25')],'waiting':_0x5ae417[_0xbd64('0x26')],'loggedInDb':_0x5ae417[_0xbd64('0x27')]};if(_0x5ae417[_0xbd64('0x24')]===_0xbd64('0x28')){_0x3bbfbe[_0xbd64('0x29')]=_0x5ae417['dialActive'];_0x3bbfbe[_0xbd64('0x2a')]=_0x5ae417[_0xbd64('0x2a')];_0x3bbfbe[_0xbd64('0x2b')]=_0x5ae417[_0xbd64('0x2b')];_0x3bbfbe[_0xbd64('0x2c')]=_0x5ae417[_0xbd64('0x2c')];_0x3bbfbe['dialOriginateTimeout']=_0x5ae417['dialOriginateTimeout'];_0x3bbfbe[_0xbd64('0x2d')]=_0x5ae417['dialPrefix'];_0x3bbfbe[_0xbd64('0x2e')]=_0x5ae417[_0xbd64('0x2e')];_0x3bbfbe['outboundAnswerAgiCallsDay']=_0x5ae417['outboundAnswerAgiCallsDay'];_0x3bbfbe[_0xbd64('0x2f')]=_0x5ae417['outboundAnswerCallsDay'];_0x3bbfbe['outboundBlacklistCallsDay']=_0x5ae417[_0xbd64('0x30')];_0x3bbfbe[_0xbd64('0x31')]=_0x5ae417[_0xbd64('0x31')];_0x3bbfbe['outboundCongestionCallsDay']=_0x5ae417[_0xbd64('0x32')];_0x3bbfbe['outboundDropCallsDayACS']=_0x5ae417[_0xbd64('0x33')];_0x3bbfbe[_0xbd64('0x34')]=_0x5ae417[_0xbd64('0x34')];_0x3bbfbe[_0xbd64('0x35')]=_0x5ae417[_0xbd64('0x35')];_0x3bbfbe[_0xbd64('0x36')]=_0x5ae417['outboundNoAnswerCallsDay'];_0x3bbfbe['outboundNoSuchCallsDay']=_0x5ae417[_0xbd64('0x37')];_0x3bbfbe[_0xbd64('0x38')]=_0x5ae417[_0xbd64('0x38')];_0x3bbfbe[_0xbd64('0x39')]=_0x5ae417[_0xbd64('0x39')];_0x3bbfbe[_0xbd64('0x3a')]=_0x5ae417['outboundRejectCallsDay'];_0x3bbfbe['outboundUnknownCallsDay']=_0x5ae417[_0xbd64('0x3b')];_0x3bbfbe[_0xbd64('0x3c')]=_0x5ae417[_0xbd64('0x3c')];_0x3bbfbe['predictiveIntervalAvgHoldtime']=_0x5ae417['predictiveIntervalAvgHoldtime'];_0x3bbfbe[_0xbd64('0x3d')]=_0x5ae417['predictiveIntervalAvgTalktime'];_0x3bbfbe[_0xbd64('0x3e')]=_0x5ae417['predictiveIntervalDroppedCallsCallersExit'];_0x3bbfbe[_0xbd64('0x3f')]=_0x5ae417[_0xbd64('0x3f')];_0x3bbfbe['predictiveIntervalErlangCalls']=_0x5ae417[_0xbd64('0x40')];_0x3bbfbe['predictiveIntervalErlangCallsDroppedCalls']=_0x5ae417['predictiveIntervalErlangCallsDroppedCalls'];_0x3bbfbe[_0xbd64('0x41')]=_0x5ae417[_0xbd64('0x41')];_0x3bbfbe[_0xbd64('0x42')]=_0x5ae417['predictiveIntervalMultiplicativeFactor'];_0x3bbfbe['predictiveIntervalPauses']=_0x5ae417['predictiveIntervalPauses'];_0x3bbfbe[_0xbd64('0x43')]=_0x5ae417[_0xbd64('0x43')];_0x3bbfbe['predictiveIntervalTotalCalls']=_0x5ae417[_0xbd64('0x44')];_0x3bbfbe[_0xbd64('0x17')]=_0x5ae417[_0xbd64('0x17')];_0x3bbfbe[_0xbd64('0x45')]=_0x5ae417['originated'];_0x3bbfbe['erlangCalls']=_0x5ae417[_0xbd64('0x46')];_0x3bbfbe['erlangCallToSecond']=_0x5ae417['erlangCallToSecond'];_0x3bbfbe[_0xbd64('0x47')]=_0x5ae417[_0xbd64('0x47')];_0x3bbfbe[_0xbd64('0x48')]=_0x5ae417[_0xbd64('0x48')];_0x3bbfbe[_0xbd64('0x49')]=_0x5ae417[_0xbd64('0x49')];_0x3bbfbe[_0xbd64('0x4a')]=_0x5ae417[_0xbd64('0x4a')];}if(_0x5ae417['Trunk']){_0x3bbfbe[_0xbd64('0x4b')]={'id':_0x5ae417[_0xbd64('0x4b')]['id'],'name':_0x5ae417['Trunk'][_0xbd64('0x1f')],'active':_0x5ae417[_0xbd64('0x4b')][_0xbd64('0x4c')],'callerid':_0x5ae417[_0xbd64('0x4b')][_0xbd64('0x4d')]};}if(_0x5ae417[_0xbd64('0x4e')]){_0x3bbfbe[_0xbd64('0x4e')]={'id':_0x5ae417['Interval']['id'],'name':_0x5ae417[_0xbd64('0x4e')]['name']};}_0x5b356b[_0xbd64('0x4f')](_0x3bbfbe);}}_0x46ab38({'count':_0x5b356b['length'],'rows':_0x5b356b});});},'UpdateVoiceQueue':function(_0x468e0b){return new Promise(function(_0xe6f9f8,_0xbc2ae0){var _0x583860=_[_0xbd64('0x50')](_0x5458d8['voiceQueues'],{'id':parseInt(_0x468e0b['id'])});var _0x526705=_['omit'](_0x468e0b,['id']);if(_0x583860){for(var _0x3304b7 in _0x526705){if(typeof _0x526705[_0x3304b7]!==_0xbd64('0x51')&&typeof _0x583860[_0x3304b7]!==_0xbd64('0x51')){_0x583860[_0x3304b7]=_0x526705[_0x3304b7];}}_0xe6f9f8(_0x583860);}else{_0xbc2ae0();}});},'VoiceChannels':function(){return new Promise(function(_0x46c1d0){var _0x168409=_[_0xbd64('0x52')](_0x5458d8[_0xbd64('0x53')]);_0x46c1d0({'count':_0x168409['length'],'rows':_0x168409});});},'VoiceChannelMixMonitor':function(_0x59ac2d){var _0x184d30=this;return new Promise(function(_0x379491,_0x4e5efe){if(ami[_0xbd64('0xd')]()==![]){return _0x4e5efe(_0x184d30[_0xbd64('0xe')](0x1f4,[config[_0xbd64('0xf')]['ip'],config[_0xbd64('0xf')][_0xbd64('0x10')],'ami\x20disconnected'][_0xbd64('0x11')]('\x20')));}var _0x1a9ec8=schema(properties[_0xbd64('0x54')])[_0xbd64('0x55')](_0x59ac2d);if(_0x1a9ec8['length']>0x0){return _0x4e5efe(_0x184d30['error'](0x1f4,_[_0xbd64('0x56')](_0x1a9ec8,_0xbd64('0x17'))[_0xbd64('0x11')](',\x20')));}var _0x4700a7=_[_0xbd64('0x50')](_0x5458d8[_0xbd64('0x53')],{'uniqueid':_0x59ac2d[_0xbd64('0x57')]});if(_0x4700a7&&_0x4700a7[_0xbd64('0x58')]){var _0x460158=util[_0xbd64('0x7')](_0xbd64('0x59'),_0x59ac2d[_0xbd64('0x5a')]||_0x59ac2d[_0xbd64('0x57')],_0x59ac2d[_0xbd64('0x7')]||_0xbd64('0x5b'));return ami['Action']({'action':_0xbd64('0x5c'),'channel':_0x4700a7['channel'],'file':_0x460158,'options':'ai(mixmonitorid)'})['then'](function(_0x4aa662){var _0xced0ca=_[_0xbd64('0x50')](_0x4700a7['monitors'],{'filename':_0xbd64('0x5d')+_0x460158[_0xbd64('0x5e')]()});if(_[_0xbd64('0x5f')](_0xced0ca)){_0x4700a7['monitors'][_0xbd64('0x4f')]({'filename':_0xbd64('0x5d')+_0x460158[_0xbd64('0x5e')](),'createdAt':moment()[_0xbd64('0x7')](_0xbd64('0x60')),'mixmonitorid':_0x4aa662[_0xbd64('0x61')],'status':'rec'});}else{_0xced0ca['mixmonitorid']=_0x4aa662['mixmonitorid'];_0xced0ca[_0xbd64('0x62')]=_0xbd64('0x63');}_0x379491({'code':0xc8,'message':[_0x59ac2d[_0xbd64('0x57')],_0xbd64('0x64'),_0x4aa662['mixmonitorid']][_0xbd64('0x11')]('\x20'),'mixmonitorid':_0x4aa662[_0xbd64('0x61')]});})[_0xbd64('0x18')](function(_0x298349){_0x4e5efe(_0x184d30[_0xbd64('0xe')](0x1f5,[_0x59ac2d[_0xbd64('0x57')],_0x298349['message'][_0xbd64('0x5e')]()][_0xbd64('0x11')]('\x20')));});}else{return _0x4e5efe(_0x184d30[_0xbd64('0xe')](0x1f5,_0xbd64('0x65')));}});},'VoiceChannelStopMixMonitor':function(_0x465661){var _0x41fa48=this;return new Promise(function(_0xeab5c7,_0x3e0f82){if(ami[_0xbd64('0xd')]()==![]){return _0x3e0f82(_0x41fa48[_0xbd64('0xe')](0x1f4,[config[_0xbd64('0xf')]['ip'],config[_0xbd64('0xf')]['username'],'ami\x20disconnected'][_0xbd64('0x11')]('\x20')));}var _0x2bcf68=schema(properties['voicechannel'])['validate'](_0x465661);if(_0x2bcf68[_0xbd64('0x66')]>0x0){return _0x3e0f82(_0x41fa48[_0xbd64('0xe')](0x1f4,_['map'](_0x2bcf68,_0xbd64('0x17'))[_0xbd64('0x11')](',\x20')));}var _0x45573c=_[_0xbd64('0x50')](_0x5458d8[_0xbd64('0x53')],{'uniqueid':_0x465661[_0xbd64('0x57')]});if(_0x45573c){return Promise[_0xbd64('0x67')]()[_0xbd64('0x1b')](function(){if(_0x45573c[_0xbd64('0x58')]){return ami['Action']({'action':_0xbd64('0x68'),'channel':_0x45573c[_0xbd64('0x58')],'mixmonitorid':_0x465661[_0xbd64('0x61')]})['catch'](function(){});}})[_0xbd64('0x1b')](function(){if(_0x45573c[_0xbd64('0x69')]){return ami['Action']({'action':_0xbd64('0x68'),'channel':_0x45573c[_0xbd64('0x69')],'mixmonitorid':_0x465661[_0xbd64('0x61')]})[_0xbd64('0x18')](function(){});}})[_0xbd64('0x1b')](function(){var _0x1594e9=_['find'](_0x45573c[_0xbd64('0x6a')],{'mixmonitorid':_0x465661[_0xbd64('0x61')]});if(_0x1594e9){_0x1594e9[_0xbd64('0x62')]=_0xbd64('0x6b');}})['then'](function(){var _0xff862e=util[_0xbd64('0x7')]('%s.%s',_0x465661[_0xbd64('0x5a')]||_0x465661['uniqueid'],_0x465661[_0xbd64('0x7')]||_0xbd64('0x5b'));var _0x1c10df=_[_0xbd64('0x50')](_0x45573c['monitors'],{'filename':_0xbd64('0x5d')+_0xff862e[_0xbd64('0x5e')]()});if(_0x1c10df){_0x1c10df[_0xbd64('0x62')]=_0xbd64('0x6b');}})[_0xbd64('0x1b')](function(){_0xeab5c7({'code':0xc8,'message':[_0x465661[_0xbd64('0x57')],'StopMixMonitor\x20Success']['join']('\x20')});})['catch'](function(_0x36f3a8){_0x3e0f82(_0x41fa48[_0xbd64('0xe')](0x1f5,[_0x465661[_0xbd64('0x57')],_0x36f3a8[_0xbd64('0x17')][_0xbd64('0x5e')]()][_0xbd64('0x11')]('\x20')));});}else{return _0x3e0f82(_0x41fa48['error'](0x1f5,_0xbd64('0x65')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x4fc39){var _0x305ffc=_[_0xbd64('0x52')](_0x5458d8[_0xbd64('0x6c')]);_0x4fc39({'count':_0x305ffc[_0xbd64('0x66')],'rows':_0x305ffc});});},'VoiceQueuesChannel':function(_0x2f3516){var _0x3d7e47=this;return new Promise(function(_0x301f42,_0x18e724){var _0x32e611=schema(properties[_0xbd64('0x6d')])['validate'](_0x2f3516);if(_0x32e611['length']>0x0){return _0x18e724(_0x3d7e47[_0xbd64('0xe')](0x1f4,_[_0xbd64('0x56')](_0x32e611,_0xbd64('0x17'))['join'](',\x20')));}var _0x9b99b3=_['find'](_0x5458d8[_0xbd64('0x6c')],{'uniqueid':_0x2f3516[_0xbd64('0x57')]});if(_0x9b99b3){_0x301f42(_0x9b99b3);}else{return _0x18e724(_0x3d7e47[_0xbd64('0xe')](0x1f5,_0xbd64('0x65')));}});},'VoiceQueuesChannelHangup':function(_0x51c2d7){var _0x1f104b=this;return new Promise(function(_0x5714a6,_0x14f79e){if(ami[_0xbd64('0xd')]()==![]){return _0x14f79e(_0x1f104b[_0xbd64('0xe')](0x1f4,[config[_0xbd64('0xf')]['ip'],config[_0xbd64('0xf')]['username'],_0xbd64('0x19')][_0xbd64('0x11')]('\x20')));}var _0x4d100e=schema(properties[_0xbd64('0x6e')])[_0xbd64('0x55')](_0x51c2d7);if(_0x4d100e[_0xbd64('0x66')]>0x0){return _0x14f79e(_0x1f104b[_0xbd64('0xe')](0x1f4,_['map'](_0x4d100e,_0xbd64('0x17'))['join'](',\x20')));}var _0x437539=_[_0xbd64('0x50')](_0x5458d8[_0xbd64('0x6c')],{'uniqueid':_0x51c2d7['uniqueid']});if(_0x437539&&_0x437539['channel']){return ami['Action']({'action':'Hangup','channel':_0x437539[_0xbd64('0x58')]})[_0xbd64('0x1b')](function(_0xdcab62){_0x5714a6({'code':0xc8,'message':[_0x51c2d7[_0xbd64('0x57')],_0xdcab62[_0xbd64('0x17')]['toLowerCase']()][_0xbd64('0x11')]('\x20')});})[_0xbd64('0x18')](function(_0xac13e6){_0x14f79e(_0x1f104b[_0xbd64('0xe')](0x1f5,[_0x51c2d7[_0xbd64('0x57')],_0xac13e6['message'][_0xbd64('0x5e')]()][_0xbd64('0x11')]('\x20')));});}else{return _0x14f79e(_0x1f104b[_0xbd64('0xe')](0x1f5,_0xbd64('0x65')));}});},'VoiceQueuesChannelRedirect':function(_0x5875da){var _0x58957a=this;return new Promise(function(_0x73971b,_0xc2f92b){if(ami[_0xbd64('0xd')]()==![]){return _0xc2f92b(_0x58957a[_0xbd64('0xe')](0x1f4,[config[_0xbd64('0xf')]['ip'],config[_0xbd64('0xf')][_0xbd64('0x10')],_0xbd64('0x19')]['join']('\x20')));}var _0x34bdad=schema(properties['voicequeuechannelredirect'])[_0xbd64('0x55')](_0x5875da);if(_0x34bdad[_0xbd64('0x66')]>0x0){return _0xc2f92b(_0x58957a[_0xbd64('0xe')](0x1f4,_['map'](_0x34bdad,_0xbd64('0x17'))['join'](',\x20')));}var _0x5c3efa=_[_0xbd64('0x50')](_0x5458d8[_0xbd64('0x6c')],{'uniqueid':_0x5875da[_0xbd64('0x57')]});if(_0x5c3efa&&_0x5c3efa['channel']){return ami[_0xbd64('0x16')]({'action':_0xbd64('0x6f'),'channel':_0x5c3efa[_0xbd64('0x58')],'exten':_0x5875da[_0xbd64('0x70')],'context':_0x5875da['context']||_0x5c3efa[_0xbd64('0x71')],'priority':0x1})[_0xbd64('0x1b')](function(_0x355b87){_0x73971b({'code':0xc8,'message':[_0x5875da[_0xbd64('0x57')],_0x355b87[_0xbd64('0x17')][_0xbd64('0x5e')]()][_0xbd64('0x11')]('\x20')});})[_0xbd64('0x18')](function(_0x8a6280){_0xc2f92b(_0x58957a[_0xbd64('0xe')](0x1f5,[_0x5875da[_0xbd64('0x57')],_0x8a6280[_0xbd64('0x17')][_0xbd64('0x5e')]()][_0xbd64('0x11')]('\x20')));});}else{return _0xc2f92b(_0x58957a['error'](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x11f9b2){return new Promise(function(_0x322093){var _0x155b41=_['values'](_0x5458d8[_0xbd64('0xb')]);if(_0x11f9b2&&_0x11f9b2['id']){var _0x581b9c=_[_0xbd64('0x50')](_0x155b41,function(_0x99ee7f){return _0x99ee7f['id']===_0x11f9b2['id'];});_0x322093(_0x581b9c);}else{_0x322093({'count':_0x155b41[_0xbd64('0x66')],'rows':_0x155b41});}});},'Telephones':function(){return new Promise(function(_0x1a1ac2){var _0x562932=_[_0xbd64('0x52')](_0x5458d8[_0xbd64('0x72')]);_0x1a1ac2({'count':_0x562932['length'],'rows':_0x562932});});},'Trunks':function(){return new Promise(function(_0x283704){var _0x58284d=_[_0xbd64('0x52')](_0x5458d8[_0xbd64('0x73')]);_0x283704({'count':_0x58284d[_0xbd64('0x66')],'rows':_0x58284d});});},'OutboundChannels':function(){return new Promise(function(_0x25b2b8){var _0x30b3a1=_[_0xbd64('0x52')](_0x5458d8['outboundChannels']);_0x25b2b8({'count':_0x30b3a1[_0xbd64('0x66')],'rows':_0x30b3a1});});},'Outbound':function(){return new Promise(function(_0x588452){_0x588452(_0x5458d8[_0xbd64('0x28')]);});},'Campaigns':function(){return new Promise(function(_0x1fa7ad){var _0x4df56f=_[_0xbd64('0x52')](_0x5458d8['campaigns']);_0x1fa7ad({'count':_0x4df56f[_0xbd64('0x66')],'rows':_0x4df56f});});},'VoiceQueuesPreview':function(_0x2ac722){var _0x3ba513=this;return new Promise(function(_0x4bf21a,_0x219f6a){_0x5446e4[_0xbd64('0x74')](_0x2ac722['id'])[_0xbd64('0x1b')](function(_0x221f2e){_0x4bf21a({'code':0xc8,'message':_0x221f2e[_0xbd64('0x17')]});})['catch'](function(_0x58efa2){_0x219f6a(_0x3ba513[_0xbd64('0xe')](0x1f4,_0x58efa2[_0xbd64('0x17')]));});});},'EventManager':function(_0xeb9c51){var _0x1f1170=this;return new Promise(function(_0x29d9f4,_0x25d96b){if(!_0xeb9c51[_0xbd64('0x75')]){return _0x25d96b(_0x1f1170[_0xbd64('0xe')](0x1f4,_0xbd64('0x76')));}ami[_0xbd64('0x77')](_0xbd64('0x78')+_0xeb9c51[_0xbd64('0x75')],_0xeb9c51[_0xbd64('0x17')]);_0x29d9f4({'code':0xc8,'message':_0xeb9c51});});},'FaxAccounts':function(){return new Promise(function(_0x4b1c1a){var _0x3220d9=_[_0xbd64('0x52')](_0x5458d8['faxAccounts']);_0x4b1c1a({'count':_0x3220d9[_0xbd64('0x66')],'rows':_0x3220d9});});},'SendFax':function(_0x1dcc5f){var _0x2e4f78=this;return new Promise(function(_0x3e837d,_0x4e948c){_0x54f916['send'](_0x1dcc5f)[_0xbd64('0x1b')](function(_0x923e5a){_0x3e837d({'code':0xc8,'message':_0x923e5a[_0xbd64('0x17')]});})[_0xbd64('0x18')](function(_0x46a391){_0x4e948c(_0x2e4f78[_0xbd64('0xe')](0x1f4,_0x46a391[_0xbd64('0x17')]));});});},'CheckAfterSend':function(_0x1150df){var _0x1cb98a=this;return new Promise(function(_0x4781d8,_0x1c5e0a){_0x54f916[_0xbd64('0x79')](_0x1150df)['then'](function(_0x314365){_0x4781d8({'code':0xc8,'message':_0x314365[_0xbd64('0x17')]});})[_0xbd64('0x18')](function(_0x48d55a){_0x1c5e0a(_0x1cb98a['error'](0x1f4,_0x48d55a[_0xbd64('0x17')]));});});}};var _0x2dbbd4=jayson['server'](_0x32995f)[_0xbd64('0x7a')]();_0x2dbbd4['on'](_0xbd64('0xe'),function(_0x1d5aac){return _0x58e9e7(_0x1d5aac);});_0x2dbbd4[_0xbd64('0x6')](0x232a,_0xbd64('0x7b'),function(){console[_0xbd64('0x7c')](_0xbd64('0x7d'),0x232a);return _0x51e87d(_0xbd64('0x7e')+0x232a);});});};
\ No newline at end of file
+var _0x247b=['validate','map','find','uniqueid','channel','format','%s.%s','filename','wav','MixMonitor','ai(mixmonitorid)','monitors','/var/spool/asterisk/monitor/','toLowerCase','isNil','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','status','stop','StopMixMonitor\x20Success','voicequeuechannel','queueChannels','Hangup','exten','context','telephones','trunks','outboundChannels','outbound','campaigns','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','http','listen','127.0.0.1','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','../../../config/environment','../properties','../ami','../model/voiceQueueSummary','SIP','name','timers','timer','updateAcw','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','keys','reload','module','action','Reload','Action','message','catch','join','pick','command','then','content','voiceQueues','hasOwnProperty','push','length','omit','undefined','values','channels','voicechannel'];(function(_0x4370ad,_0xe8e404){var _0xa16b6=function(_0x34a1c6){while(--_0x34a1c6){_0x4370ad['push'](_0x4370ad['shift']());}};_0xa16b6(++_0xe8e404);}(_0x247b,0xe2));var _0xb247=function(_0x39d9ce,_0x172a7a){_0x39d9ce=_0x39d9ce-0x0;var _0x219153=_0x247b[_0x39d9ce];return _0x219153;};'use strict';var _=require('lodash');var util=require('util');var jayson=require(_0xb247('0x0'));var schema=require('validate');var moment=require('moment');var config=require(_0xb247('0x1'));var properties=require(_0xb247('0x2'));var ami=require(_0xb247('0x3'));var VoiceQueueSummary=require(_0xb247('0x4'));exports['listen']=function(_0x4cfecc,_0x5461a1,_0x1a2390){return new Promise(function(_0x3cddeb,_0x452df8){var _0xfcc2e1={'QueuePause':function(_0x9a5716){return new Promise(function(_0x58084d){var _0x2cadb2=util['format']('%s/%s',_0xb247('0x5'),_0x9a5716[_0xb247('0x6')]);if(_0x4cfecc[_0xb247('0x7')]&&_0x4cfecc[_0xb247('0x7')][_0x2cadb2]&&_0x4cfecc[_0xb247('0x7')][_0x2cadb2][_0xb247('0x8')]){_0x4cfecc[_0xb247('0x7')][_0x2cadb2][_0xb247('0x9')]();}if(_0x4cfecc[_0xb247('0xa')][_0x2cadb2]){_0x4cfecc[_0xb247('0xa')][_0x2cadb2][_0xb247('0xb')]({'statePause':_0x9a5716[_0xb247('0xc')]?!![]:![]});}_0x58084d({'code':0xc8,'message':_0xb247('0xd')});});},'Reload':function(_0x2c7137){var _0x413b6b=this;return new Promise(function(_0x13a083,_0x420a8d){if(ami[_0xb247('0xe')]()==![]){return _0x420a8d(_0x413b6b[_0xb247('0xf')](0x1f4,[config['asterisk']['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')]['join']('\x20')));}_0x2c7137=_['pick'](_0x2c7137,_[_0xb247('0x13')](properties[_0xb247('0x14')][_0xb247('0x15')]));_0x2c7137[_0xb247('0x16')]=_0xb247('0x17');return ami[_0xb247('0x18')](_0x2c7137)['then'](function(_0x104d42){_0x13a083({'code':0xc8,'message':_0x104d42[_0xb247('0x19')]});})[_0xb247('0x1a')](function(_0x5ca0a7){_0x420a8d(_0x413b6b['error'](0x1f5,_0x5ca0a7['message']));});});},'Command':function(_0x3a1e73){var _0x45252c=this;return new Promise(function(_0x4802bb,_0x14c3cd){if(ami[_0xb247('0xe')]()==![]){return _0x14c3cd(_0x45252c[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}_0x3a1e73=_[_0xb247('0x1c')](_0x3a1e73,_0xb247('0x1d'));_0x3a1e73[_0xb247('0x16')]='Command';return ami[_0xb247('0x18')](_0x3a1e73)[_0xb247('0x1e')](function(_0x583827){_0x4802bb({'code':0xc8,'message':_0x583827[_0xb247('0x1f')]});})[_0xb247('0x1a')](function(_0x2a5abc){_0x14c3cd(_0x45252c[_0xb247('0xf')](0x1f5,_0x2a5abc[_0xb247('0x19')]));});});},'VoiceQueues':function(){return new Promise(function(_0x2670f0){var _0x62bef=[];for(var _0x3ce8f2 in _0x4cfecc[_0xb247('0x20')]){if(_0x4cfecc['voiceQueues'][_0xb247('0x21')](_0x3ce8f2)){var _0x3b71a7=_0x4cfecc[_0xb247('0x20')][_0x3ce8f2];var _0x1e3199=new VoiceQueueSummary(_0x3b71a7);_0x62bef[_0xb247('0x22')](_0x1e3199);}}_0x2670f0({'count':_0x62bef[_0xb247('0x23')],'rows':_0x62bef});});},'UpdateVoiceQueue':function(_0x135b47){return new Promise(function(_0x47325d,_0x27210f){var _0x4a0c9d=_['find'](_0x4cfecc[_0xb247('0x20')],{'id':parseInt(_0x135b47['id'])});var _0x28dd9c=_[_0xb247('0x24')](_0x135b47,['id']);if(_0x4a0c9d){for(var _0x1ec09f in _0x28dd9c){if(typeof _0x28dd9c[_0x1ec09f]!==_0xb247('0x25')&&typeof _0x4a0c9d[_0x1ec09f]!=='undefined'){_0x4a0c9d[_0x1ec09f]=_0x28dd9c[_0x1ec09f];}}_0x47325d(_0x4a0c9d);}else{_0x27210f();}});},'VoiceChannels':function(){return new Promise(function(_0x1c027a){var _0x541a00=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x27')]);_0x1c027a({'count':_0x541a00['length'],'rows':_0x541a00});});},'VoiceChannelMixMonitor':function(_0x1e3e4d){var _0x28fb2d=this;return new Promise(function(_0x35fc93,_0x563998){if(ami[_0xb247('0xe')]()==![]){return _0x563998(_0x28fb2d['error'](0x1f4,[config['asterisk']['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x338004=schema(properties[_0xb247('0x28')])[_0xb247('0x29')](_0x1e3e4d);if(_0x338004['length']>0x0){return _0x563998(_0x28fb2d[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x338004,'message')[_0xb247('0x1b')](',\x20')));}var _0x24b46f=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x27')],{'uniqueid':_0x1e3e4d[_0xb247('0x2c')]});if(_0x24b46f&&_0x24b46f[_0xb247('0x2d')]){var _0x223ea9=util[_0xb247('0x2e')](_0xb247('0x2f'),_0x1e3e4d[_0xb247('0x30')]||_0x1e3e4d[_0xb247('0x2c')],_0x1e3e4d['format']||_0xb247('0x31'));return ami[_0xb247('0x18')]({'action':_0xb247('0x32'),'channel':_0x24b46f[_0xb247('0x2d')],'file':_0x223ea9,'options':_0xb247('0x33')})['then'](function(_0x5df23a){var _0x5884d0=_[_0xb247('0x2b')](_0x24b46f[_0xb247('0x34')],{'filename':_0xb247('0x35')+_0x223ea9[_0xb247('0x36')]()});if(_[_0xb247('0x37')](_0x5884d0)){_0x24b46f['monitors'][_0xb247('0x22')]({'filename':'/var/spool/asterisk/monitor/'+_0x223ea9[_0xb247('0x36')](),'createdAt':moment()[_0xb247('0x2e')](_0xb247('0x38')),'mixmonitorid':_0x5df23a[_0xb247('0x39')],'status':'rec'});}else{_0x5884d0[_0xb247('0x39')]=_0x5df23a[_0xb247('0x39')];_0x5884d0['status']='rec';}_0x35fc93({'code':0xc8,'message':[_0x1e3e4d[_0xb247('0x2c')],_0xb247('0x3a'),_0x5df23a['mixmonitorid']]['join']('\x20'),'mixmonitorid':_0x5df23a[_0xb247('0x39')]});})['catch'](function(_0x4d4e75){_0x563998(_0x28fb2d[_0xb247('0xf')](0x1f5,[_0x1e3e4d[_0xb247('0x2c')],_0x4d4e75[_0xb247('0x19')][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')));});}else{return _0x563998(_0x28fb2d[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'VoiceChannelStopMixMonitor':function(_0x50fb12){var _0x2d3ef1=this;return new Promise(function(_0x36307c,_0xfb9e8e){if(ami[_0xb247('0xe')]()==![]){return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x36411d=schema(properties[_0xb247('0x28')])['validate'](_0x50fb12);if(_0x36411d[_0xb247('0x23')]>0x0){return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x36411d,_0xb247('0x19'))[_0xb247('0x1b')](',\x20')));}var _0x411fa3=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x27')],{'uniqueid':_0x50fb12[_0xb247('0x2c')]});if(_0x411fa3){return Promise[_0xb247('0x3c')]()[_0xb247('0x1e')](function(){if(_0x411fa3[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':_0xb247('0x3d'),'channel':_0x411fa3['channel'],'mixmonitorid':_0x50fb12['mixmonitorid']})[_0xb247('0x1a')](function(){});}})[_0xb247('0x1e')](function(){if(_0x411fa3['destinationchannel']){return ami[_0xb247('0x18')]({'action':'StopMixMonitor','channel':_0x411fa3[_0xb247('0x3e')],'mixmonitorid':_0x50fb12[_0xb247('0x39')]})[_0xb247('0x1a')](function(){});}})[_0xb247('0x1e')](function(){var _0x30edab=_['find'](_0x411fa3[_0xb247('0x34')],{'mixmonitorid':_0x50fb12[_0xb247('0x39')]});if(_0x30edab){_0x30edab[_0xb247('0x3f')]=_0xb247('0x40');}})[_0xb247('0x1e')](function(){var _0xe7af04=util[_0xb247('0x2e')]('%s.%s',_0x50fb12[_0xb247('0x30')]||_0x50fb12[_0xb247('0x2c')],_0x50fb12[_0xb247('0x2e')]||_0xb247('0x31'));var _0x506a86=_['find'](_0x411fa3['monitors'],{'filename':_0xb247('0x35')+_0xe7af04[_0xb247('0x36')]()});if(_0x506a86){_0x506a86['status']=_0xb247('0x40');}})[_0xb247('0x1e')](function(){_0x36307c({'code':0xc8,'message':[_0x50fb12[_0xb247('0x2c')],_0xb247('0x41')][_0xb247('0x1b')]('\x20')});})[_0xb247('0x1a')](function(_0x587f23){_0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f5,[_0x50fb12[_0xb247('0x2c')],_0x587f23[_0xb247('0x19')][_0xb247('0x36')]()]['join']('\x20')));});}else{return _0xfb9e8e(_0x2d3ef1[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'VoiceQueuesChannels':function(){return new Promise(function(_0x10a35d){var _0x25dd13=_[_0xb247('0x26')](_0x4cfecc['queueChannels']);_0x10a35d({'count':_0x25dd13[_0xb247('0x23')],'rows':_0x25dd13});});},'VoiceQueuesChannel':function(_0x1f1f15){var _0x2e061e=this;return new Promise(function(_0x10919b,_0x353566){var _0x398549=schema(properties[_0xb247('0x42')])[_0xb247('0x29')](_0x1f1f15);if(_0x398549[_0xb247('0x23')]>0x0){return _0x353566(_0x2e061e[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x398549,_0xb247('0x19'))['join'](',\x20')));}var _0x328d4e=_[_0xb247('0x2b')](_0x4cfecc[_0xb247('0x43')],{'uniqueid':_0x1f1f15[_0xb247('0x2c')]});if(_0x328d4e){_0x10919b(_0x328d4e);}else{return _0x353566(_0x2e061e[_0xb247('0xf')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelHangup':function(_0x2dfc65){var _0x5178f7=this;return new Promise(function(_0x33580b,_0x470add){if(ami['isConnected']()==![]){return _0x470add(_0x5178f7[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config[_0xb247('0x10')][_0xb247('0x11')],_0xb247('0x12')][_0xb247('0x1b')]('\x20')));}var _0x515777=schema(properties['voicequeuechannelhangup'])[_0xb247('0x29')](_0x2dfc65);if(_0x515777[_0xb247('0x23')]>0x0){return _0x470add(_0x5178f7[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x515777,_0xb247('0x19'))[_0xb247('0x1b')](',\x20')));}var _0x5ef2ad=_[_0xb247('0x2b')](_0x4cfecc['queueChannels'],{'uniqueid':_0x2dfc65[_0xb247('0x2c')]});if(_0x5ef2ad&&_0x5ef2ad[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':_0xb247('0x44'),'channel':_0x5ef2ad['channel']})[_0xb247('0x1e')](function(_0xb3d44b){_0x33580b({'code':0xc8,'message':[_0x2dfc65[_0xb247('0x2c')],_0xb3d44b[_0xb247('0x19')][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')});})['catch'](function(_0x15cfa8){_0x470add(_0x5178f7[_0xb247('0xf')](0x1f5,[_0x2dfc65[_0xb247('0x2c')],_0x15cfa8[_0xb247('0x19')]['toLowerCase']()]['join']('\x20')));});}else{return _0x470add(_0x5178f7['error'](0x1f5,_0xb247('0x3b')));}});},'VoiceQueuesChannelRedirect':function(_0x59052e){var _0xe769ca=this;return new Promise(function(_0x1a8e25,_0x20ae2d){if(ami[_0xb247('0xe')]()==![]){return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f4,[config[_0xb247('0x10')]['ip'],config['asterisk'][_0xb247('0x11')],'ami\x20disconnected'][_0xb247('0x1b')]('\x20')));}var _0x10aeef=schema(properties['voicequeuechannelredirect'])[_0xb247('0x29')](_0x59052e);if(_0x10aeef[_0xb247('0x23')]>0x0){return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f4,_[_0xb247('0x2a')](_0x10aeef,_0xb247('0x19'))['join'](',\x20')));}var _0x420e15=_[_0xb247('0x2b')](_0x4cfecc['queueChannels'],{'uniqueid':_0x59052e[_0xb247('0x2c')]});if(_0x420e15&&_0x420e15[_0xb247('0x2d')]){return ami[_0xb247('0x18')]({'action':'Redirect','channel':_0x420e15[_0xb247('0x2d')],'exten':_0x59052e[_0xb247('0x45')],'context':_0x59052e[_0xb247('0x46')]||_0x420e15['context'],'priority':0x1})[_0xb247('0x1e')](function(_0x4f65fa){_0x1a8e25({'code':0xc8,'message':[_0x59052e['uniqueid'],_0x4f65fa['message'][_0xb247('0x36')]()][_0xb247('0x1b')]('\x20')});})[_0xb247('0x1a')](function(_0x25f8d0){_0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f5,[_0x59052e['uniqueid'],_0x25f8d0[_0xb247('0x19')]['toLowerCase']()]['join']('\x20')));});}else{return _0x20ae2d(_0xe769ca[_0xb247('0xf')](0x1f5,_0xb247('0x3b')));}});},'Agents':function(_0x5df804){return new Promise(function(_0x19677a){var _0x3019bf=_['values'](_0x4cfecc['agents']);if(_0x5df804&&_0x5df804['id']){var _0x47a322=_['find'](_0x3019bf,function(_0x153eb8){return _0x153eb8['id']===_0x5df804['id'];});_0x19677a(_0x47a322);}else{_0x19677a({'count':_0x3019bf['length'],'rows':_0x3019bf});}});},'Telephones':function(){return new Promise(function(_0x3dea0a){var _0x2d0203=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x47')]);_0x3dea0a({'count':_0x2d0203[_0xb247('0x23')],'rows':_0x2d0203});});},'Trunks':function(){return new Promise(function(_0x5b7133){var _0x535cee=_['values'](_0x4cfecc[_0xb247('0x48')]);_0x5b7133({'count':_0x535cee['length'],'rows':_0x535cee});});},'OutboundChannels':function(){return new Promise(function(_0x583ff4){var _0x223e81=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x49')]);_0x583ff4({'count':_0x223e81[_0xb247('0x23')],'rows':_0x223e81});});},'Outbound':function(){return new Promise(function(_0x1a43f0){_0x1a43f0(_0x4cfecc[_0xb247('0x4a')]);});},'Campaigns':function(){return new Promise(function(_0x2941bd){var _0x25ede2=_['values'](_0x4cfecc[_0xb247('0x4b')]);_0x2941bd({'count':_0x25ede2['length'],'rows':_0x25ede2});});},'VoiceQueuesPreview':function(_0x4ad3a2){var _0x51ad35=this;return new Promise(function(_0x2a0400,_0x22d767){_0x5461a1['run'](_0x4ad3a2['id'])[_0xb247('0x1e')](function(_0x533b24){_0x2a0400({'code':0xc8,'message':_0x533b24[_0xb247('0x19')]});})[_0xb247('0x1a')](function(_0x538584){_0x22d767(_0x51ad35[_0xb247('0xf')](0x1f4,_0x538584[_0xb247('0x19')]));});});},'EventManager':function(_0x7472ee){var _0x23a75e=this;return new Promise(function(_0x385eea,_0x36eb73){if(!_0x7472ee[_0xb247('0x4c')]){return _0x36eb73(_0x23a75e[_0xb247('0xf')](0x1f4,_0xb247('0x4d')));}ami[_0xb247('0x4e')](_0xb247('0x4f')+_0x7472ee[_0xb247('0x4c')],_0x7472ee[_0xb247('0x19')]);_0x385eea({'code':0xc8,'message':_0x7472ee});});},'FaxAccounts':function(){return new Promise(function(_0x2ec44d){var _0x9b5557=_[_0xb247('0x26')](_0x4cfecc[_0xb247('0x50')]);_0x2ec44d({'count':_0x9b5557[_0xb247('0x23')],'rows':_0x9b5557});});},'SendFax':function(_0x3da8db){var _0x22d19e=this;return new Promise(function(_0x142794,_0x32a4ce){_0x1a2390[_0xb247('0x51')](_0x3da8db)['then'](function(_0x3d2f3a){_0x142794({'code':0xc8,'message':_0x3d2f3a['message']});})[_0xb247('0x1a')](function(_0x38852a){_0x32a4ce(_0x22d19e[_0xb247('0xf')](0x1f4,_0x38852a[_0xb247('0x19')]));});});},'CheckAfterSend':function(_0x5c6669){var _0x7b6788=this;return new Promise(function(_0x374d2c,_0x9c5ed6){_0x1a2390[_0xb247('0x52')](_0x5c6669)[_0xb247('0x1e')](function(_0x254850){_0x374d2c({'code':0xc8,'message':_0x254850['message']});})[_0xb247('0x1a')](function(_0x434fab){_0x9c5ed6(_0x7b6788['error'](0x1f4,_0x434fab[_0xb247('0x19')]));});});}};var _0x478277=jayson['server'](_0xfcc2e1)[_0xb247('0x53')]();_0x478277['on']('error',function(_0x683ac8){return _0x452df8(_0x683ac8);});_0x478277[_0xb247('0x54')](0x232a,_0xb247('0x55'),function(){console[_0xb247('0x56')](_0xb247('0x57'),0x232a);return _0x3cddeb(_0xb247('0x58')+0x232a);});});};
\ No newline at end of file
index f57e069..331d028 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4147=['ListId','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','firstName','fax','scheduledAt','updatedAt','union','then','getContacts','isEmpty','length','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','join','[CM][%s][%s]\x20Contact\x20not\x20found','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','Unknown','destcalleridname','resolve','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','user:%s','name','format','trigger:%s','action','toLowerCase','lodash','bluebird','ioredis','util','../../../../config/logger','../../rpc/cmContact','defaults','redis','socket.io-emitter','info','[CM][%s][%s]','stringify','data1','data2','isNil','data5','xmd-contactid'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x4147,0x1a7));var _0x7414=function(_0x226a12,_0x1e974f){_0x226a12=_0x226a12-0x0;var _0x384a45=_0x4147[_0x226a12];return _0x384a45;};'use strict';var _=require(_0x7414('0x0'));var BPromise=require(_0x7414('0x1'));var Redis=require(_0x7414('0x2'));var util=require(_0x7414('0x3'));var config=require('../../../../config/environment');var logger=require(_0x7414('0x4'))('trigger');var cmContactRpc=require(_0x7414('0x5'));config['redis']=_[_0x7414('0x6')](config[_0x7414('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x7414('0x8'))(new Redis(config[_0x7414('0x7')]));function emit(_0x4a76ab,_0x2131f8,_0x3314b6,_0x3a3a23,_0x40bea1){logger[_0x7414('0x9')](_0x7414('0xa'),_0x4a76ab,_0x2131f8['id'],_0x3314b6,_0x3a3a23,JSON[_0x7414('0xb')](_0x40bea1));io['to'](_0x3314b6)['emit'](_0x3a3a23,_0x40bea1);}exports['exec']=function(_0x327540,_0x3fbcd0,_0x4f9582,_0x467f1e){var _0x59e72d,_0x46f80e;var _0x381f96={};var _0x71e8dc;var _0x5f0fb0=Number(_0x4f9582[_0x7414('0xc')]);var _0x43a4a0=_0x4f9582[_0x7414('0xd')]?Boolean(Number(_0x4f9582[_0x7414('0xd')])):![];var _0x72a2d6;var _0x2271c4=![];if(!_[_0x7414('0xe')](_0x4f9582[_0x7414('0xf')])){if(_0x4f9582['data5']=='1')_0x2271c4=!![];}if(!_0x2271c4){if(_0x467f1e[_0x7414('0x10')]){_0x381f96['id']=_0x467f1e[_0x7414('0x10')];}}if(!_0x381f96['id']){_0x381f96[_0x7414('0x11')]=_0x5f0fb0;_0x72a2d6=_0x4f9582[_0x7414('0x12')]&&_0x4f9582[_0x7414('0x12')]!=='0'?_0x4f9582[_0x7414('0x12')][_0x7414('0x13')](','):[_0x7414('0x14')];_0x381f96[_0x7414('0x15')]=_['map'](_0x72a2d6,function(_0x34d66f){var _0x184b26={};_0x184b26[_0x34d66f]=_0x467f1e[_0x7414('0x16')]?_0x467f1e[_0x7414('0x17')]:_0x467f1e[_0x7414('0x18')];return _0x184b26;});_0x71e8dc=_0x467f1e[_0x7414('0x16')]?_0x467f1e['destcalleridnum']:_0x467f1e[_0x7414('0x18')];}var _0x2fc0bc=['id',_0x7414('0x19'),'lastName',_0x7414('0x14'),'mobile',_0x7414('0x1a'),_0x7414('0x11'),'createdAt',_0x7414('0x1b'),_0x7414('0x1c')];var _0x4d5464=_[_0x7414('0x1d')](_0x2fc0bc,_0x72a2d6);BPromise['resolve']()[_0x7414('0x1e')](cmContactRpc[_0x7414('0x1f')]({'attributes':_0x4d5464,'where':_0x381f96,'phone':_0x71e8dc}))[_0x7414('0x1e')](function(_0x117524){_0x46f80e=_0x117524;if(!_[_0x7414('0x20')](_0x46f80e)){if(_0x46f80e[_0x7414('0x21')]===0x1){_0x59e72d=_0x46f80e[0x0];logger[_0x7414('0x9')]('[CM][%s][%s]\x20Contact\x20found:%s',_0x467f1e[_0x7414('0x22')],_0x3fbcd0['id'],_0x59e72d['id']);}else{logger[_0x7414('0x9')](_0x7414('0x23'),_0x467f1e[_0x7414('0x22')],_0x3fbcd0['id'],_[_0x7414('0x24')](_0x46f80e,'id')[_0x7414('0x25')](','));}return;}else{logger[_0x7414('0x9')](_0x7414('0x26'),_0x467f1e[_0x7414('0x22')],_0x3fbcd0['id']);var _0x1185a3={'ListId':_0x5f0fb0};var _0x3e6581=_0x4f9582['data4']&&_0x4f9582[_0x7414('0x27')]!=='0'?_0x4f9582['data4']:_0x7414('0x14');if(_0x43a4a0){logger[_0x7414('0x9')](_0x7414('0x28'),_0x467f1e[_0x7414('0x22')],_0x3fbcd0['id']);_0x1185a3[_0x3e6581]=_['isNil'](_0x467f1e[_0x7414('0x16')])?_0x467f1e['calleridnum']:_0x467f1e[_0x7414('0x17')];if(_[_0x7414('0xe')](_0x467f1e[_0x7414('0x16')])){_0x1185a3[_0x7414('0x19')]=_0x467f1e[_0x7414('0x29')]&&_0x467f1e['calleridname']!==_0x7414('0x2a')?_0x467f1e[_0x7414('0x29')]:_0x7414('0x2b');}else{_0x1185a3[_0x7414('0x19')]=_0x467f1e[_0x7414('0x2c')]&&_0x467f1e['destcalleridname']!==_0x7414('0x2a')?_0x467f1e['destcalleridname']:_0x7414('0x2b');}return BPromise[_0x7414('0x2d')]()[_0x7414('0x1e')](cmContactRpc[_0x7414('0x2e')](_0x1185a3))[_0x7414('0x1e')](function(_0x2a6fdc){_0x59e72d=_0x2a6fdc;_0x46f80e[_0x7414('0x2f')](_0x2a6fdc);if(_0x59e72d){logger[_0x7414('0x9')](_0x7414('0x30'),_0x467f1e['uniqueid'],_0x3fbcd0['id'],_0x59e72d['id']);}return;});}else{logger[_0x7414('0x9')]('[CM][%s][%s]\x20Autocreate\x20disabled',_0x467f1e[_0x7414('0x22')],_0x3fbcd0['id']);_0x1185a3[_0x3e6581]=_['isNil'](_0x467f1e[_0x7414('0x16')])?_0x467f1e['calleridnum']:_0x467f1e[_0x7414('0x17')];if(_[_0x7414('0xe')](_0x467f1e[_0x7414('0x16')])){_0x1185a3[_0x7414('0x19')]=_0x467f1e[_0x7414('0x29')]&&_0x467f1e['calleridname']!==_0x7414('0x2a')?_0x467f1e[_0x7414('0x29')]:_0x7414('0x2b');}else{_0x1185a3['firstName']=_0x467f1e[_0x7414('0x2c')]&&_0x467f1e[_0x7414('0x2c')]!==_0x7414('0x2a')?_0x467f1e['destcalleridname']:_0x7414('0x2b');}_0x59e72d=_0x1185a3;_0x46f80e[_0x7414('0x2f')](_0x1185a3);return;}}})[_0x7414('0x1e')](function(){if(_0x327540){emit(_0x467f1e[_0x7414('0x22')],_0x3fbcd0,util['format'](_0x7414('0x31'),_0x327540[_0x7414('0x32')]),util[_0x7414('0x33')](_0x7414('0x34'),_0x4f9582[_0x7414('0x35')][_0x7414('0x36')]()),{'evt':_['merge'](_0x467f1e,{'autoCreate':_0x43a4a0}),'contact':_0x59e72d===undefined?{}:_0x59e72d,'contacts':_0x46f80e[_0x7414('0x21')]===0x0?undefined:_0x46f80e});}});};
\ No newline at end of file
+var _0x1c77=['Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','user:%s','name','format','trigger:%s','action','toLowerCase','merge','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','../../rpc/cmContact','redis','defaults','localhost','socket.io-emitter','info','stringify','data1','data2','isNil','data5','xmd-contactid','ListId','data3','split','phone','$or','routeId','destcalleridnum','calleridnum','mobile','fax','createdAt','scheduledAt','updatedAt','resolve','then','getContacts','isEmpty','length','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','map','data4','[CM][%s][%s]\x20Autocreate\x20enabled','firstName','calleridname'];(function(_0x3efb42,_0x1fde53){var _0x129faa=function(_0x5d61d7){while(--_0x5d61d7){_0x3efb42['push'](_0x3efb42['shift']());}};_0x129faa(++_0x1fde53);}(_0x1c77,0xed));var _0x71c7=function(_0x2ac4af,_0x288c53){_0x2ac4af=_0x2ac4af-0x0;var _0x3a36df=_0x1c77[_0x2ac4af];return _0x3a36df;};'use strict';var _=require('lodash');var BPromise=require(_0x71c7('0x0'));var Redis=require(_0x71c7('0x1'));var util=require(_0x71c7('0x2'));var config=require(_0x71c7('0x3'));var logger=require(_0x71c7('0x4'))('trigger');var cmContactRpc=require(_0x71c7('0x5'));config[_0x71c7('0x6')]=_[_0x71c7('0x7')](config[_0x71c7('0x6')],{'host':_0x71c7('0x8'),'port':0x18eb});var io=require(_0x71c7('0x9'))(new Redis(config[_0x71c7('0x6')]));function emit(_0x57fb10,_0x57bbb6,_0x2c25a4,_0x244867,_0x229b00){logger[_0x71c7('0xa')]('[CM][%s][%s]',_0x57fb10,_0x57bbb6['id'],_0x2c25a4,_0x244867,JSON[_0x71c7('0xb')](_0x229b00));io['to'](_0x2c25a4)['emit'](_0x244867,_0x229b00);}exports['exec']=function(_0x34600f,_0x302f14,_0x1cba95,_0x22147c){var _0x9adfea,_0x5d0455;var _0x1d10f9={};var _0x26ec15;var _0x389fd0=Number(_0x1cba95[_0x71c7('0xc')]);var _0x4ce94a=_0x1cba95[_0x71c7('0xd')]?Boolean(Number(_0x1cba95[_0x71c7('0xd')])):![];var _0x608fe;var _0x3d216e=![];if(!_[_0x71c7('0xe')](_0x1cba95[_0x71c7('0xf')])){if(_0x1cba95['data5']=='1')_0x3d216e=!![];}if(!_0x3d216e){if(_0x22147c['xmd-contactid']){_0x1d10f9['id']=_0x22147c[_0x71c7('0x10')];}}if(!_0x1d10f9['id']){_0x1d10f9[_0x71c7('0x11')]=_0x389fd0;_0x608fe=_0x1cba95[_0x71c7('0x12')]&&_0x1cba95[_0x71c7('0x12')]!=='0'?_0x1cba95[_0x71c7('0x12')][_0x71c7('0x13')](','):[_0x71c7('0x14')];_0x1d10f9[_0x71c7('0x15')]=_['map'](_0x608fe,function(_0x16f92f){var _0x301801={};_0x301801[_0x16f92f]=_0x22147c[_0x71c7('0x16')]?_0x22147c[_0x71c7('0x17')]:_0x22147c[_0x71c7('0x18')];return _0x301801;});_0x26ec15=_0x22147c['routeId']?_0x22147c['destcalleridnum']:_0x22147c[_0x71c7('0x18')];}var _0x1c2fc7=['id','firstName','lastName',_0x71c7('0x14'),_0x71c7('0x19'),_0x71c7('0x1a'),_0x71c7('0x11'),_0x71c7('0x1b'),_0x71c7('0x1c'),_0x71c7('0x1d')];var _0x5344ce=_['union'](_0x1c2fc7,_0x608fe);BPromise[_0x71c7('0x1e')]()[_0x71c7('0x1f')](cmContactRpc[_0x71c7('0x20')]({'attributes':_0x5344ce,'where':_0x1d10f9,'phone':_0x26ec15}))[_0x71c7('0x1f')](function(_0x3e3498){_0x5d0455=_0x3e3498;if(!_[_0x71c7('0x21')](_0x5d0455)){if(_0x5d0455[_0x71c7('0x22')]===0x1){_0x9adfea=_0x5d0455[0x0];logger[_0x71c7('0xa')](_0x71c7('0x23'),_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_0x9adfea['id']);}else{logger[_0x71c7('0xa')](_0x71c7('0x25'),_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_[_0x71c7('0x26')](_0x5d0455,'id')['join'](','));}return;}else{logger[_0x71c7('0xa')]('[CM][%s][%s]\x20Contact\x20not\x20found',_0x22147c[_0x71c7('0x24')],_0x302f14['id']);var _0x3bebc0={'ListId':_0x389fd0};var _0x3b2f37=_0x1cba95['data4']&&_0x1cba95['data4']!=='0'?_0x1cba95[_0x71c7('0x27')]:_0x71c7('0x14');if(_0x4ce94a){logger[_0x71c7('0xa')](_0x71c7('0x28'),_0x22147c[_0x71c7('0x24')],_0x302f14['id']);_0x3bebc0[_0x3b2f37]=_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])?_0x22147c['calleridnum']:_0x22147c[_0x71c7('0x17')];if(_[_0x71c7('0xe')](_0x22147c['routeId'])){_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2a')]&&_0x22147c[_0x71c7('0x2a')]!=='<unknown>'?_0x22147c[_0x71c7('0x2a')]:_0x71c7('0x2b');}else{_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2c')]&&_0x22147c[_0x71c7('0x2c')]!==_0x71c7('0x2d')?_0x22147c['destcalleridname']:_0x71c7('0x2b');}return BPromise[_0x71c7('0x1e')]()[_0x71c7('0x1f')](cmContactRpc[_0x71c7('0x2e')](_0x3bebc0))[_0x71c7('0x1f')](function(_0xfba4e0){_0x9adfea=_0xfba4e0;_0x5d0455[_0x71c7('0x2f')](_0xfba4e0);if(_0x9adfea){logger[_0x71c7('0xa')]('[CM][%s][%s]\x20Contact\x20created:%s',_0x22147c[_0x71c7('0x24')],_0x302f14['id'],_0x9adfea['id']);}return;});}else{logger['info'](_0x71c7('0x30'),_0x22147c[_0x71c7('0x24')],_0x302f14['id']);_0x3bebc0[_0x3b2f37]=_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])?_0x22147c[_0x71c7('0x18')]:_0x22147c[_0x71c7('0x17')];if(_[_0x71c7('0xe')](_0x22147c[_0x71c7('0x16')])){_0x3bebc0[_0x71c7('0x29')]=_0x22147c[_0x71c7('0x2a')]&&_0x22147c[_0x71c7('0x2a')]!==_0x71c7('0x2d')?_0x22147c['calleridname']:'Unknown';}else{_0x3bebc0['firstName']=_0x22147c[_0x71c7('0x2c')]&&_0x22147c['destcalleridname']!==_0x71c7('0x2d')?_0x22147c[_0x71c7('0x2c')]:'Unknown';}_0x9adfea=_0x3bebc0;_0x5d0455[_0x71c7('0x2f')](_0x3bebc0);return;}}})[_0x71c7('0x1f')](function(){if(_0x34600f){emit(_0x22147c[_0x71c7('0x24')],_0x302f14,util['format'](_0x71c7('0x31'),_0x34600f[_0x71c7('0x32')]),util[_0x71c7('0x33')](_0x71c7('0x34'),_0x1cba95[_0x71c7('0x35')][_0x71c7('0x36')]()),{'evt':_[_0x71c7('0x37')](_0x22147c,{'autoCreate':_0x4ce94a}),'contact':_0x9adfea===undefined?{}:_0x9adfea,'contacts':_0x5d0455[_0x71c7('0x22')]===0x0?undefined:_0x5d0455});}});};
\ No newline at end of file
index 6b133b2..4f17f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2272=['custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','syncAgentDial','custom:dialend','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','emit','info','clone','motionChannel','undefined','checkTriggers','status','checkTrigger','merge','variables','Actions','action','toLowerCase','contactmanager','motionbar','browser','TemplateId','html','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','data4','uriLocation','windowWidth','800','data5','data6','600','winApplication','winArguments','format','user:%s','trigger:%s:%s','data1','jscripty','interface','name','trigger:%s','exec','integration','routeId','urlforward','script','parse','query','channel','AllConditions','length','every','some','checkConditions','field','account','ChatWebsiteId','operator','upperFirst','AccountId','value','interaction','message','event','queue','agent','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','equals','exports','util','lodash','url','mustache','ioredis','./integration','./cmContact','./script','trigger','../ami','redis','defaults','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','zendeskAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentbusy','custom:agentcongestion'];(function(_0x434d68,_0xcbdfed){var _0x56f3ce=function(_0x3553ab){while(--_0x3553ab){_0x434d68['push'](_0x434d68['shift']());}};_0x56f3ce(++_0xcbdfed);}(_0x2272,0xd8));var _0x2227=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x2272[_0x19e35c];return _0x3e1fe8;};'use strict';var util=require(_0x2227('0x0'));var _=require(_0x2227('0x1'));var url=require(_0x2227('0x2'));var Mustache=require(_0x2227('0x3'));var Redis=require(_0x2227('0x4'));var urlforward=require('./urlforward');var integration=require(_0x2227('0x5'));var cmContact=require(_0x2227('0x6'));var script=require(_0x2227('0x7'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x2227('0x8'));var ami=require(_0x2227('0x9'));config[_0x2227('0xa')]=_[_0x2227('0xb')](config[_0x2227('0xa')],{'host':_0x2227('0xc'),'port':0x18eb});var io=require(_0x2227('0xd'))(new Redis(config[_0x2227('0xa')]));var operators={'equals':function(_0x18094d,_0x31fcdc){return _0x18094d==_0x31fcdc;},'not_equals':function(_0x496bbd,_0x799370){return _0x496bbd!=_0x799370;}};var barAndWebActions=['popup',_0x2227('0x2'),_0x2227('0xe')];function Trigger(_0x164735){this[_0x2227('0xf')]=_0x164735[_0x2227('0xf')];this['agents']=_0x164735[_0x2227('0x10')];this[_0x2227('0x11')]=_0x164735[_0x2227('0x11')];this[_0x2227('0x12')]=_0x164735[_0x2227('0x12')];this[_0x2227('0x13')]=_0x164735['voiceExtensions'];this['zendeskAccounts']=_0x164735['zendeskAccounts'];this[_0x2227('0x14')]=_0x164735['freshdeskAccounts'];this[_0x2227('0x15')]=_0x164735[_0x2227('0x15')];this['sugarcrmAccounts']=_0x164735[_0x2227('0x16')];this[_0x2227('0x17')]=_0x164735[_0x2227('0x17')];this[_0x2227('0x18')]=_0x164735[_0x2227('0x18')];this[_0x2227('0x19')]=_0x164735['vtigerAccounts'];this[_0x2227('0x1a')]=_0x164735[_0x2227('0x1a')];this[_0x2227('0x1b')]=_0x164735['dynamics365Accounts'];this[_0x2227('0x1c')]=_0x164735[_0x2227('0x1c')];this[_0x2227('0x1d')]={'zendesk':this[_0x2227('0x1e')],'salesforce':this[_0x2227('0x15')],'freshdesk':this[_0x2227('0x14')],'sugarcrm':this[_0x2227('0x16')],'zoho':this['zohoAccounts'],'desk':this[_0x2227('0x18')],'vtiger':this['vtigerAccounts'],'dynamics365':this[_0x2227('0x1b')],'freshsales':this[_0x2227('0x1c')],'servicenow':this[_0x2227('0x1a')]};ami['on'](_0x2227('0x1f'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x22'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x23'),this[_0x2227('0x20')]['bind'](this));ami['on'](_0x2227('0x24'),this[_0x2227('0x20')]['bind'](this));ami['on'](_0x2227('0x25'),this[_0x2227('0x20')]['bind'](this));ami['on']('custom:agentnoanswer',this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x26'),this[_0x2227('0x20')]['bind'](this));ami['on'](_0x2227('0x27'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x28'),this['syncCustomEvent'][_0x2227('0x21')](this));ami['on'](_0x2227('0x29'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x2a'),this['syncCustomEvent']['bind'](this));ami['on']('custom:timeout',this[_0x2227('0x20')]['bind'](this));ami['on'](_0x2227('0x2b'),this[_0x2227('0x2c')]['bind'](this));ami['on']('custom:dialconnect',this[_0x2227('0x2c')][_0x2227('0x21')](this));ami['on'](_0x2227('0x2d'),this['syncAgentDial'][_0x2227('0x21')](this));ami['on']('custom:newinteraction',this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x2e'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x2f'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x30'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on']('custom:outgoingmessage',this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x31'),this[_0x2227('0x20')]['bind'](this));ami['on'](_0x2227('0x32'),this[_0x2227('0x20')][_0x2227('0x21')](this));ami['on'](_0x2227('0x33'),this['syncCustomEvent'][_0x2227('0x21')](this));}Trigger[_0x2227('0x34')][_0x2227('0x35')]=function(_0x49cf40,_0x55563a,_0x35d9f1){logger[_0x2227('0x36')](_0x49cf40,_0x55563a,JSON['stringify'](_0x35d9f1));io['to'](_0x49cf40)[_0x2227('0x35')](_0x55563a,_0x35d9f1);};Trigger[_0x2227('0x34')]['syncCustomEvent']=function(_0x1f2c9f){var _0x514825=_[_0x2227('0x37')](_0x1f2c9f);if(typeof _0x514825[_0x2227('0x38')]===_0x2227('0x39')){_0x514825[_0x2227('0x38')]='voice';}this[_0x2227('0x3a')](_0x514825);};Trigger['prototype'][_0x2227('0x2c')]=function(_0x15cf24){if(this[_0x2227('0x10')][_0x15cf24['interface']]){this[_0x2227('0x20')](_0x15cf24);}};Trigger[_0x2227('0x34')][_0x2227('0x3a')]=function(_0x13b16a){var _0x32df7d;for(var _0x4a0441 in this['triggers']){if(this[_0x2227('0xf')]['hasOwnProperty'](_0x4a0441)){if(this[_0x2227('0xf')][_0x4a0441][_0x2227('0x3b')]){_0x32df7d=this[_0x2227('0x3c')](this[_0x2227('0xf')][_0x4a0441],_0x13b16a);if(_0x32df7d){_[_0x2227('0x3d')](_0x13b16a,_0x13b16a[_0x2227('0x3e')]);for(var _0x351a6f=0x0,_0xda0a68,_0x5688b5,_0x41436e;_0x351a6f<this['triggers'][_0x4a0441][_0x2227('0x3f')]['length'];_0x351a6f+=0x1){_0xda0a68=this[_0x2227('0xf')][_0x4a0441]['Actions'][_0x351a6f];if(this[_0x2227('0x10')][_0x13b16a['interface']]){switch(_0xda0a68[_0x2227('0x40')][_0x2227('0x41')]()){case _0x2227('0x42'):break;case _0x2227('0x43'):case _0x2227('0x44'):var _0xe8e830={};switch(barAndWebActions[_0xda0a68['data1']]){case'popup':_0xe8e830[_0x2227('0x45')]=_0xda0a68['data2'];_0xe8e830[_0x2227('0x46')]=this['templates'][_0xda0a68[_0x2227('0x47')]]?Mustache[_0x2227('0x48')](this[_0x2227('0x12')][_0xda0a68[_0x2227('0x47')]][_0x2227('0x46')],_0x13b16a):_0x2227('0x49');break;case'url':_0xe8e830[_0x2227('0x4a')]=this[_0x2227('0x4b')](_0xda0a68[_0x2227('0x47')],_0x13b16a,_[_0x2227('0x4c')](_0xda0a68[_0x2227('0x4d')])?!![]:parseInt(_0xda0a68[_0x2227('0x4d')],0xa));if(_[_0x2227('0x4c')](_0xda0a68[_0x2227('0x4e')])){_0xe8e830['location']='0';}else{_0xe8e830[_0x2227('0x4f')]=_0xda0a68[_0x2227('0x4e')];_0xe8e830[_0x2227('0x50')]=_[_0x2227('0x4c')](_0xda0a68['data5'])?_0x2227('0x51'):_0xda0a68[_0x2227('0x52')];_0xe8e830['windowHeight']=_[_0x2227('0x4c')](_0xda0a68[_0x2227('0x53')])?_0x2227('0x54'):_0xda0a68[_0x2227('0x53')];}break;case _0x2227('0xe'):_0xe8e830[_0x2227('0x55')]=_0xda0a68[_0x2227('0x47')]?Mustache['render'](_0xda0a68[_0x2227('0x47')],_0x13b16a):'';_0xe8e830[_0x2227('0x56')]=_0xda0a68['data3']?Mustache[_0x2227('0x48')](_0xda0a68['data3'],_0x13b16a):'';break;}this[_0x2227('0x35')](util[_0x2227('0x57')](_0x2227('0x58'),this[_0x2227('0x10')][_0x13b16a['interface']]['name']),util['format'](_0x2227('0x59'),_0xda0a68[_0x2227('0x40')]['toLowerCase'](),barAndWebActions[_0xda0a68[_0x2227('0x5a')]]),_[_0x2227('0x3d')](_0xe8e830,_0x13b16a));break;case _0x2227('0x5b'):this[_0x2227('0x35')](util['format']('user:%s',this[_0x2227('0x10')][_0x13b16a[_0x2227('0x5c')]][_0x2227('0x5d')]),util[_0x2227('0x57')]('trigger:%s',_0xda0a68[_0x2227('0x40')][_0x2227('0x41')]()),_[_0x2227('0x3d')]({'ProjectId':parseInt(_0xda0a68[_0x2227('0x5a')],0xa)},_0x13b16a));break;default:this[_0x2227('0x35')](util[_0x2227('0x57')](_0x2227('0x58'),this[_0x2227('0x10')][_0x13b16a[_0x2227('0x5c')]][_0x2227('0x5d')]),util[_0x2227('0x57')](_0x2227('0x5e'),_0xda0a68[_0x2227('0x40')][_0x2227('0x41')]()),_[_0x2227('0x3d')]({},_0xda0a68,_0x13b16a));}}switch(_0xda0a68[_0x2227('0x40')]['toLowerCase']()){case _0x2227('0x42'):cmContact[_0x2227('0x5f')](this['agents'][_0x13b16a[_0x2227('0x5c')]],this[_0x2227('0xf')][_0x4a0441],_0xda0a68,_0x13b16a);break;case _0x2227('0x60'):integration['exec'](_0xda0a68,_0x13b16a,this['accounts'],this['agents'][_0x13b16a[_0x2227('0x5c')]],this[_0x2227('0x11')][_0x13b16a['queue']],this[_0x2227('0x13')][_0x13b16a[_0x2227('0x61')]]);break;case _0x2227('0x62'):urlforward['exec'](_0xda0a68,_0x13b16a);break;case _0x2227('0x63'):script[_0x2227('0x5f')](_0xda0a68,_0x13b16a);break;}}}}}}};Trigger['prototype'][_0x2227('0x4b')]=function(_0x1f02be,_0x4da014,_0x13aa67){var _0x235352=url[_0x2227('0x64')](Mustache[_0x2227('0x48')](_0x1f02be,_0x4da014),!![]);if(_0x13aa67){_[_0x2227('0x3d')](_0x235352[_0x2227('0x65')],_0x4da014);}delete _0x235352['search'];var _0x4c0732=url[_0x2227('0x57')](_0x235352);_0x4c0732=_0x4c0732['replace'](/\/\?/g,'?');return _0x4c0732;};Trigger[_0x2227('0x34')]['checkTrigger']=function(_0x34b44f,_0x13d3c6){var _0x277ee3=!![];var _0x449d86=!![];var _0x563a64=![];if(_0x34b44f[_0x2227('0x66')]===_0x13d3c6[_0x2227('0x38')]){_0x563a64=!![];}if(_0x34b44f[_0x2227('0x67')][_0x2227('0x68')]){_0x277ee3=_[_0x2227('0x69')](_0x34b44f['AllConditions'],this['checkConditions'](_0x13d3c6,_0x34b44f[_0x2227('0x66')]));}if(_0x34b44f['AnyConditions'][_0x2227('0x68')]){_0x449d86=_[_0x2227('0x6a')](_0x34b44f['AnyConditions'],this['checkConditions'](_0x13d3c6,_0x34b44f[_0x2227('0x66')]));}return _0x563a64&&_0x277ee3&&_0x449d86;};Trigger[_0x2227('0x34')][_0x2227('0x6b')]=function(_0x2f6d49,_0x279e30){return function(_0x119d39){switch(_0x119d39[_0x2227('0x6c')]){case _0x2227('0x6d'):if(_0x2f6d49[_0x2227('0x66')]===_0x279e30){if(_0x279e30==='chat'){return _0x2f6d49[_0x2227('0x6e')]?operators[_0x119d39[_0x2227('0x6f')]](Number(_0x119d39['value']),_0x2f6d49[_0x2227('0x6e')]):![];}else{return _0x2f6d49[_[_0x2227('0x70')](_0x279e30)+_0x2227('0x71')]?operators[_0x119d39['operator']](Number(_0x119d39[_0x2227('0x72')]),_0x2f6d49[_[_0x2227('0x70')](_0x279e30)+_0x2227('0x71')]):![];}}break;case _0x2227('0x73'):case _0x2227('0x74'):if(_0x2f6d49[_0x2227('0x66')]===_0x279e30){return _0x2f6d49[_0x2227('0x75')]?operators[_0x119d39[_0x2227('0x6f')]](_0x119d39[_0x2227('0x72')],_0x2f6d49[_0x2227('0x75')]):![];}break;case _0x2227('0x76'):return _0x2f6d49[_0x2227('0x76')]?operators[_0x119d39[_0x2227('0x6f')]](_0x119d39[_0x2227('0x72')],_0x2f6d49['queue']):![];case _0x2227('0x77'):return _0x2f6d49[_0x2227('0x78')]?operators[_0x119d39[_0x2227('0x6f')]](_0x119d39[_0x2227('0x72')],_0x2f6d49[_0x2227('0x78')]):![];case _0x2227('0x79'):return _0x2f6d49[_0x2227('0x79')]?operators[_0x119d39[_0x2227('0x6f')]](_0x119d39['value'],_0x2f6d49[_0x2227('0x79')]):![];case _0x2227('0x61'):return _0x2f6d49[_0x2227('0x61')]?operators[_0x119d39['operator']](_0x119d39[_0x2227('0x72')],_0x2f6d49[_0x2227('0x61')]):![];case _0x2227('0x7a'):if(_0x119d39['value']===_0x2227('0x7b'))_0x119d39['value']=null;return typeof _0x2f6d49[_0x2227('0x7c')]!==_0x2227('0x39')?operators[_0x119d39[_0x2227('0x6f')]](_0x119d39[_0x2227('0x72')],_0x2f6d49['substatus']):![];case _0x2227('0x7d'):if(_0x2f6d49[_0x2227('0x66')]===_0x279e30){return _0x119d39['value']==='created'&&_0x119d39[_0x2227('0x6f')]===_0x2227('0x7e')?!![]:![];}break;}return![];};};module[_0x2227('0x7f')]=Trigger;
\ No newline at end of file
+var _0x33ac=['voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','accounts','custom:agentcalled','syncCustomEvent','custom:agentconnect','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:amd','custom:queuecallerabandon','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:dialend','custom:newinteraction','custom:substatus','custom:incomingmessage','custom:acceptmessage','custom:rejectmessage','custom:offlineMessage','prototype','info','emit','clone','undefined','voice','checkTriggers','agents','interface','hasOwnProperty','status','checkTrigger','merge','Actions','length','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','isNil','data3','data4','location','uriLocation','windowWidth','data5','800','windowHeight','data6','600','render','winArguments','format','user:%s','name','action','toLowerCase','jscripty','trigger:%s','exec','integration','queue','routeId','urlforward','script','parse','query','search','replace','channel','motionChannel','AllConditions','AnyConditions','some','checkConditions','field','ChatWebsiteId','operator','upperFirst','AccountId','value','interaction','message','event','membername','lastevent','mailSubstatus','null','substatus','created','exports','lodash','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','localhost','popup','url','winapp','triggers','voiceQueues','templates'];(function(_0x18d665,_0x2f65ab){var _0x4abe5c=function(_0x199e11){while(--_0x199e11){_0x18d665['push'](_0x18d665['shift']());}};_0x4abe5c(++_0x2f65ab);}(_0x33ac,0x1f2));var _0xc33a=function(_0x4af4d1,_0x4245cb){_0x4af4d1=_0x4af4d1-0x0;var _0x911e40=_0x33ac[_0x4af4d1];return _0x911e40;};'use strict';var util=require('util');var _=require(_0xc33a('0x0'));var url=require('url');var Mustache=require('mustache');var Redis=require(_0xc33a('0x1'));var urlforward=require(_0xc33a('0x2'));var integration=require(_0xc33a('0x3'));var cmContact=require(_0xc33a('0x4'));var script=require(_0xc33a('0x5'));var config=require(_0xc33a('0x6'));var logger=require(_0xc33a('0x7'))(_0xc33a('0x8'));var ami=require(_0xc33a('0x9'));config['redis']=_['defaults'](config[_0xc33a('0xa')],{'host':_0xc33a('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc33a('0xa')]));var operators={'equals':function(_0x5d55b8,_0x3a598a){return _0x5d55b8==_0x3a598a;},'not_equals':function(_0x2dc672,_0x288e87){return _0x2dc672!=_0x288e87;}};var barAndWebActions=[_0xc33a('0xc'),_0xc33a('0xd'),_0xc33a('0xe')];function Trigger(_0x2a6228){this[_0xc33a('0xf')]=_0x2a6228[_0xc33a('0xf')];this['agents']=_0x2a6228['agents'];this[_0xc33a('0x10')]=_0x2a6228['voiceQueues'];this['templates']=_0x2a6228[_0xc33a('0x11')];this[_0xc33a('0x12')]=_0x2a6228[_0xc33a('0x12')];this[_0xc33a('0x13')]=_0x2a6228[_0xc33a('0x13')];this[_0xc33a('0x14')]=_0x2a6228['freshdeskAccounts'];this[_0xc33a('0x15')]=_0x2a6228[_0xc33a('0x15')];this[_0xc33a('0x16')]=_0x2a6228['sugarcrmAccounts'];this[_0xc33a('0x17')]=_0x2a6228['zohoAccounts'];this[_0xc33a('0x18')]=_0x2a6228[_0xc33a('0x18')];this[_0xc33a('0x19')]=_0x2a6228[_0xc33a('0x19')];this[_0xc33a('0x1a')]=_0x2a6228['servicenowAccounts'];this['dynamics365Accounts']=_0x2a6228[_0xc33a('0x1b')];this[_0xc33a('0x1c')]=_0x2a6228[_0xc33a('0x1c')];this[_0xc33a('0x1d')]={'zendesk':this[_0xc33a('0x13')],'salesforce':this[_0xc33a('0x15')],'freshdesk':this[_0xc33a('0x14')],'sugarcrm':this[_0xc33a('0x16')],'zoho':this['zohoAccounts'],'desk':this[_0xc33a('0x18')],'vtiger':this[_0xc33a('0x19')],'dynamics365':this[_0xc33a('0x1b')],'freshsales':this[_0xc33a('0x1c')],'servicenow':this['servicenowAccounts']};ami['on'](_0xc33a('0x1e'),this[_0xc33a('0x1f')]['bind'](this));ami['on'](_0xc33a('0x20'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x22'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x23'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x24'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x25'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x26'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x27'),this['syncCustomEvent'][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x28'),this[_0xc33a('0x1f')]['bind'](this));ami['on'](_0xc33a('0x29'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2a'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:timeout',this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2b'),this['syncAgentDial']['bind'](this));ami['on'](_0xc33a('0x2c'),this[_0xc33a('0x2d')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2e'),this[_0xc33a('0x2d')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x2f'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:closedinteraction',this['syncCustomEvent']['bind'](this));ami['on'](_0xc33a('0x30'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x31'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on']('custom:outgoingmessage',this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x32'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x33'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));ami['on'](_0xc33a('0x34'),this[_0xc33a('0x1f')][_0xc33a('0x21')](this));}Trigger[_0xc33a('0x35')]['emit']=function(_0x254de4,_0x583bae,_0x58965a){logger[_0xc33a('0x36')](_0x254de4,_0x583bae,JSON['stringify'](_0x58965a));io['to'](_0x254de4)[_0xc33a('0x37')](_0x583bae,_0x58965a);};Trigger[_0xc33a('0x35')][_0xc33a('0x1f')]=function(_0x2bfc2f){var _0x14db10=_[_0xc33a('0x38')](_0x2bfc2f);if(typeof _0x14db10['motionChannel']===_0xc33a('0x39')){_0x14db10['motionChannel']=_0xc33a('0x3a');}this[_0xc33a('0x3b')](_0x14db10);};Trigger[_0xc33a('0x35')][_0xc33a('0x2d')]=function(_0x424b44){if(this[_0xc33a('0x3c')][_0x424b44[_0xc33a('0x3d')]]){this[_0xc33a('0x1f')](_0x424b44);}};Trigger[_0xc33a('0x35')][_0xc33a('0x3b')]=function(_0x4a68c2){var _0xc0b878;for(var _0x3c16bf in this[_0xc33a('0xf')]){if(this['triggers'][_0xc33a('0x3e')](_0x3c16bf)){if(this[_0xc33a('0xf')][_0x3c16bf][_0xc33a('0x3f')]){_0xc0b878=this[_0xc33a('0x40')](this['triggers'][_0x3c16bf],_0x4a68c2);if(_0xc0b878){_[_0xc33a('0x41')](_0x4a68c2,_0x4a68c2['variables']);for(var _0x573f88=0x0,_0x103a1c,_0x31e94f,_0x3586e1;_0x573f88<this['triggers'][_0x3c16bf][_0xc33a('0x42')][_0xc33a('0x43')];_0x573f88+=0x1){_0x103a1c=this[_0xc33a('0xf')][_0x3c16bf][_0xc33a('0x42')][_0x573f88];if(this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]]){switch(_0x103a1c['action']['toLowerCase']()){case _0xc33a('0x44'):break;case _0xc33a('0x45'):case _0xc33a('0x46'):var _0xb9accd={};switch(barAndWebActions[_0x103a1c[_0xc33a('0x47')]]){case _0xc33a('0xc'):_0xb9accd[_0xc33a('0x48')]=_0x103a1c[_0xc33a('0x49')];_0xb9accd[_0xc33a('0x4a')]=this['templates'][_0x103a1c[_0xc33a('0x49')]]?Mustache['render'](this[_0xc33a('0x11')][_0x103a1c[_0xc33a('0x49')]][_0xc33a('0x4a')],_0x4a68c2):_0xc33a('0x4b');break;case _0xc33a('0xd'):_0xb9accd[_0xc33a('0x4c')]=this['buildUri'](_0x103a1c[_0xc33a('0x49')],_0x4a68c2,_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x4e')])?!![]:parseInt(_0x103a1c[_0xc33a('0x4e')],0xa));if(_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x4f')])){_0xb9accd[_0xc33a('0x50')]='0';}else{_0xb9accd[_0xc33a('0x51')]=_0x103a1c[_0xc33a('0x4f')];_0xb9accd[_0xc33a('0x52')]=_['isNil'](_0x103a1c[_0xc33a('0x53')])?_0xc33a('0x54'):_0x103a1c[_0xc33a('0x53')];_0xb9accd[_0xc33a('0x55')]=_[_0xc33a('0x4d')](_0x103a1c[_0xc33a('0x56')])?_0xc33a('0x57'):_0x103a1c[_0xc33a('0x56')];}break;case _0xc33a('0xe'):_0xb9accd['winApplication']=_0x103a1c[_0xc33a('0x49')]?Mustache[_0xc33a('0x58')](_0x103a1c['data2'],_0x4a68c2):'';_0xb9accd[_0xc33a('0x59')]=_0x103a1c[_0xc33a('0x4e')]?Mustache[_0xc33a('0x58')](_0x103a1c[_0xc33a('0x4e')],_0x4a68c2):'';break;}this[_0xc33a('0x37')](util[_0xc33a('0x5a')](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]][_0xc33a('0x5c')]),util[_0xc33a('0x5a')]('trigger:%s:%s',_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')](),barAndWebActions[_0x103a1c[_0xc33a('0x47')]]),_[_0xc33a('0x41')](_0xb9accd,_0x4a68c2));break;case _0xc33a('0x5f'):this['emit'](util['format'](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2['interface']]['name']),util[_0xc33a('0x5a')](_0xc33a('0x60'),_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')]()),_[_0xc33a('0x41')]({'ProjectId':parseInt(_0x103a1c[_0xc33a('0x47')],0xa)},_0x4a68c2));break;default:this[_0xc33a('0x37')](util[_0xc33a('0x5a')](_0xc33a('0x5b'),this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]][_0xc33a('0x5c')]),util[_0xc33a('0x5a')](_0xc33a('0x60'),_0x103a1c[_0xc33a('0x5d')][_0xc33a('0x5e')]()),_[_0xc33a('0x41')]({},_0x103a1c,_0x4a68c2));}}switch(_0x103a1c['action'][_0xc33a('0x5e')]()){case _0xc33a('0x44'):cmContact[_0xc33a('0x61')](this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]],this[_0xc33a('0xf')][_0x3c16bf],_0x103a1c,_0x4a68c2);break;case _0xc33a('0x62'):integration[_0xc33a('0x61')](_0x103a1c,_0x4a68c2,this[_0xc33a('0x1d')],this[_0xc33a('0x3c')][_0x4a68c2[_0xc33a('0x3d')]],this['voiceQueues'][_0x4a68c2[_0xc33a('0x63')]],this[_0xc33a('0x12')][_0x4a68c2[_0xc33a('0x64')]]);break;case _0xc33a('0x65'):urlforward['exec'](_0x103a1c,_0x4a68c2);break;case _0xc33a('0x66'):script[_0xc33a('0x61')](_0x103a1c,_0x4a68c2);break;}}}}}}};Trigger[_0xc33a('0x35')]['buildUri']=function(_0x541d89,_0x34cc7f,_0x56c1b8){var _0x2d9f69=url[_0xc33a('0x67')](Mustache['render'](_0x541d89,_0x34cc7f),!![]);if(_0x56c1b8){_[_0xc33a('0x41')](_0x2d9f69[_0xc33a('0x68')],_0x34cc7f);}delete _0x2d9f69[_0xc33a('0x69')];var _0x309336=url[_0xc33a('0x5a')](_0x2d9f69);_0x309336=_0x309336[_0xc33a('0x6a')](/\/\?/g,'?');return _0x309336;};Trigger[_0xc33a('0x35')][_0xc33a('0x40')]=function(_0x3e8be8,_0x265f61){var _0x3f5624=!![];var _0xd444e=!![];var _0x385ecd=![];if(_0x3e8be8[_0xc33a('0x6b')]===_0x265f61[_0xc33a('0x6c')]){_0x385ecd=!![];}if(_0x3e8be8[_0xc33a('0x6d')][_0xc33a('0x43')]){_0x3f5624=_['every'](_0x3e8be8[_0xc33a('0x6d')],this['checkConditions'](_0x265f61,_0x3e8be8[_0xc33a('0x6b')]));}if(_0x3e8be8[_0xc33a('0x6e')][_0xc33a('0x43')]){_0xd444e=_[_0xc33a('0x6f')](_0x3e8be8['AnyConditions'],this[_0xc33a('0x70')](_0x265f61,_0x3e8be8['channel']));}return _0x385ecd&&_0x3f5624&&_0xd444e;};Trigger[_0xc33a('0x35')]['checkConditions']=function(_0x5a339d,_0x469277){return function(_0x25f070){switch(_0x25f070[_0xc33a('0x71')]){case'account':if(_0x5a339d['channel']===_0x469277){if(_0x469277==='chat'){return _0x5a339d[_0xc33a('0x72')]?operators[_0x25f070[_0xc33a('0x73')]](Number(_0x25f070['value']),_0x5a339d[_0xc33a('0x72')]):![];}else{return _0x5a339d[_[_0xc33a('0x74')](_0x469277)+_0xc33a('0x75')]?operators[_0x25f070[_0xc33a('0x73')]](Number(_0x25f070[_0xc33a('0x76')]),_0x5a339d[_[_0xc33a('0x74')](_0x469277)+_0xc33a('0x75')]):![];}}break;case _0xc33a('0x77'):case _0xc33a('0x78'):if(_0x5a339d['channel']===_0x469277){return _0x5a339d[_0xc33a('0x79')]?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x79')]):![];}break;case _0xc33a('0x63'):return _0x5a339d[_0xc33a('0x63')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x63')]):![];case'agent':return _0x5a339d[_0xc33a('0x7a')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x7a')]):![];case _0xc33a('0x7b'):return _0x5a339d['lastevent']?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x7b')]):![];case _0xc33a('0x64'):return _0x5a339d[_0xc33a('0x64')]?operators[_0x25f070['operator']](_0x25f070[_0xc33a('0x76')],_0x5a339d[_0xc33a('0x64')]):![];case _0xc33a('0x7c'):if(_0x25f070[_0xc33a('0x76')]===_0xc33a('0x7d'))_0x25f070[_0xc33a('0x76')]=null;return typeof _0x5a339d[_0xc33a('0x7e')]!==_0xc33a('0x39')?operators[_0x25f070[_0xc33a('0x73')]](_0x25f070['value'],_0x5a339d['substatus']):![];case'offlineMessage':if(_0x5a339d[_0xc33a('0x6b')]===_0x469277){return _0x25f070[_0xc33a('0x76')]===_0xc33a('0x7f')&&_0x25f070[_0xc33a('0x73')]==='equals'?!![]:![];}break;}return![];};};module[_0xc33a('0x80')]=Trigger;
\ No newline at end of file
index 17a0817..5538512 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x527622,_0x3f3389){var _0x389749=function(_0x1dde80){while(--_0x1dde80){_0x527622['push'](_0x527622['shift']());}};_0x389749(++_0x3f3389);}(_0x814b,0x1a2));var _0xb814=function(_0x266ddc,_0x45aa52){_0x266ddc=_0x266ddc-0x0;var _0x39c1d7=_0x814b[_0x266ddc];return _0x39c1d7;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x55ca=['debug','[HTTP]','stringify','GET','authType','basic','%s:%s','username','token','%s/token:%s','toString','base64','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','_embedded','entries','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','length','forEach','includes','picklist','type','nameField','customField','toLowerCase','content','string','idField','custom_fields','variable','variableName','customVariable','Variable','name','priority','merge','xCALLY','Motion','CTI','concat','Tags','getString','Descriptions','/api/v2/users/%d','user','Fields','stripTrailingSlash','serverUrl','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','calleridname','calleridnum','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','integrationTab','user:%s','trigger:desk:display','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','error','Desk\x20account\x20type\x20not\x20recognized','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','toUpperCase','Recording\x20is\x20enabled!','lodash','request-promise','./util','../../../../config/environment','desk','redis','defaults','localhost','socket.io-emitter','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','remoteUri','then','total_entries','find','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me'];(function(_0x43b790,_0x272aa5){var _0x1d7311=function(_0x3d1d86){while(--_0x3d1d86){_0x43b790['push'](_0x43b790['shift']());}};_0x1d7311(++_0x272aa5);}(_0x55ca,0x126));var _0xa55c=function(_0x330723,_0x8de382){_0x330723=_0x330723-0x0;var _0x60c546=_0x55ca[_0x330723];return _0x60c546;};'use strict';var _=require(_0xa55c('0x0'));var rp=require(_0xa55c('0x1'));var md5=require('md5');var util=require('util');var Redis=require('ioredis');var intUtil=require(_0xa55c('0x2'));var config=require(_0xa55c('0x3'));var logger=require('../../../../config/logger')(_0xa55c('0x4'));config[_0xa55c('0x5')]=_[_0xa55c('0x6')](config[_0xa55c('0x5')],{'host':_0xa55c('0x7'),'port':0x18eb});var io=require(_0xa55c('0x8'))(new Redis(config[_0xa55c('0x5')]));function emit(_0x4d0624,_0x2121fd,_0x2537f0){io['to'](_0x4d0624)['emit'](_0x2121fd,_0x2537f0);}var headers={'Content-Type':_0xa55c('0x9'),'Accept':_0xa55c('0x9')};function getUser(_0x52a3bc,_0x5849ad){if(intUtil[_0xa55c('0xa')](_0x5849ad)===!![]){logger[_0xa55c('0xb')](_0xa55c('0xc'),_0x5849ad);return request({'uri':util[_0xa55c('0xd')](_0xa55c('0xe'),_0x52a3bc[_0xa55c('0xf')])})[_0xa55c('0x10')](function(_0x70c2de){if(_0x70c2de[_0xa55c('0x11')]){return _[_0xa55c('0x12')](_0x70c2de['_embedded']['entries'],{'email':_0x5849ad});}})[_0xa55c('0x10')](function(_0x576044){if(_0x576044){logger['info']('Agent\x20found!');return _0x576044;}else{logger[_0xa55c('0xb')](_0xa55c('0x13'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}});}else{logger[_0xa55c('0xb')]('Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x14'),_0x52a3bc[_0xa55c('0xf')])});}}function request(_0x31e10d){logger[_0xa55c('0x15')](_0xa55c('0x16'),JSON[_0xa55c('0x17')](_0x31e10d));return rp(_[_0xa55c('0x6')](_0x31e10d,{'method':_0xa55c('0x18'),'headers':headers,'json':!![]}));}function getAuth(_0x4cee3c){var _0x3d4c9e;if(_0x4cee3c[_0xa55c('0x19')]===_0xa55c('0x1a')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1b'),_0x4cee3c[_0xa55c('0x1c')],_0x4cee3c['password']);}else if(_0x4cee3c['authType']===_0xa55c('0x1d')){_0x3d4c9e=util[_0xa55c('0xd')](_0xa55c('0x1e'),_0x4cee3c['username'],_0x4cee3c[_0xa55c('0x1d')]);}return util[_0xa55c('0xd')]('Basic\x20%s',new Buffer(_0x3d4c9e)[_0xa55c('0x1f')](_0xa55c('0x20')));}function getEndUser(_0x940f28,_0x1965f1,_0x234372){logger['info'](_0xa55c('0x21'),_0x234372);return request({'uri':util['format']('%s/customers/search',_0x940f28['remoteUri']),'qs':{'phone':_0x234372}})[_0xa55c('0x10')](function(_0x54b038){if(_0x54b038[_0xa55c('0x11')]){logger[_0xa55c('0xb')](_0xa55c('0x22'));return _0x54b038[_0xa55c('0x23')][_0xa55c('0x24')][0x0];}else{logger[_0xa55c('0xb')](_0xa55c('0x25'));return request({'uri':util[_0xa55c('0xd')](_0xa55c('0x26'),_0x940f28[_0xa55c('0xf')]),'method':_0xa55c('0x27'),'body':{'first_name':_0x1965f1,'title':_0x1965f1,'phone_numbers':[{'type':'work','value':_0x234372}]}});}});}function getTags(_0x430d55,_0x28814f){var _0x1c9f6b=[];if(_0x430d55&&_0x430d55[_0xa55c('0x28')]>0x0){_0x1c9f6b=_['map'](_0x430d55,_0x28814f);}return _0x1c9f6b;}function getCustomFields(_0x1377b0,_0x22f6b6){var _0x1b8388=[];var _0x201941={'custom_fields':{}};if(_0x1377b0[_0xa55c('0x28')]>0x0){_[_0xa55c('0x29')](_0x1377b0,function(_0x52d37f){if(_[_0xa55c('0x2a')](['string',_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x2d')]&&!_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0x52d37f['nameField'][_0xa55c('0x2f')]()]=_0x52d37f[_0xa55c('0x30')][_0xa55c('0x1f')]();}else if(_[_0xa55c('0x2a')]([_0xa55c('0x31'),_0xa55c('0x2b')],_0x52d37f[_0xa55c('0x2c')])&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x52d37f['content']['toString']();}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x34')&&_0x52d37f['variableName']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x35')]]&&(_0x201941[_0xa55c('0x33')][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f[_0xa55c('0x35')]][_0xa55c('0x1f')]());}else if(_0x52d37f[_0xa55c('0x2c')]===_0xa55c('0x36')&&_0x52d37f['Variable']&&_0x52d37f['Variable']['name']&&_0x52d37f[_0xa55c('0x32')]&&_0x52d37f[_0xa55c('0x2e')]){_0x22f6b6[_0x52d37f[_0xa55c('0x37')]['name'][_0xa55c('0x2f')]()]&&(_0x201941['custom_fields'][_0x52d37f[_0xa55c('0x32')]]=_0x22f6b6[_0x52d37f['Variable'][_0xa55c('0x38')][_0xa55c('0x2f')]()][_0xa55c('0x1f')]());}});}if(_0x201941['priority']){_0x201941[_0xa55c('0x39')]=Number(_0x201941[_0xa55c('0x39')]);}return _0x201941;}function getTicket(_0x47e93c,_0x6f9c4c,_0x194e78,_0x4d9083,_0x529ff8){logger[_0xa55c('0xb')]('Creating\x20new\x20ticket...');var _0x1e75dc=_[_0xa55c('0x3a')]({'subject':intUtil['getString'](_0x4d9083['Subjects'],_0x529ff8,'\x20'),'type':'phone','status':'new','labels':[_0xa55c('0x3b'),_0xa55c('0x3c'),_0xa55c('0x3d')][_0xa55c('0x3e')](getTags(_0x4d9083[_0xa55c('0x3f')],'name')),'description':intUtil[_0xa55c('0x40')](_0x4d9083[_0xa55c('0x41')],_0x529ff8,'\x0a'),'_links':{'assigned_user':{'href':util[_0xa55c('0xd')](_0xa55c('0x42'),_0x6f9c4c['id']),'class':_0xa55c('0x43')}},'message':{'direction':'in','body':intUtil[_0xa55c('0x40')](_0x4d9083['Descriptions'],_0x529ff8,'\x0a')}},getCustomFields(_0x4d9083[_0xa55c('0x44')],_0x529ff8));return request({'uri':util['format']('%s/customers/%d/cases',_0x47e93c[_0xa55c('0xf')],_0x194e78['id']),'method':_0xa55c('0x27'),'body':_0x1e75dc});}exports['queue']=function(_0x2bd98b,_0x508bd3,_0x5f25f7,_0x2f8449,_0x3fea03,_0x1630ac){var _0x540337,_0x1b2708;_0x1630ac[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1630ac[_0xa55c('0xf')]);_0x1630ac['serverUrl']=intUtil[_0xa55c('0x45')](_0x1630ac[_0xa55c('0x46')]);if(_0x3fea03&&_0x3fea03['monitor_format']){logger[_0xa55c('0xb')](_0xa55c('0x47'),'Recording\x20is\x20enabled!');_0x508bd3[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1630ac['serverUrl'],_0x508bd3[_0xa55c('0x4a')],md5(_0x508bd3['uniqueid']));}else{_0x508bd3[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1630ac);return getUser(_0x1630ac,_0x2f8449[_0xa55c('0x4c')])['then'](function(_0x41eab1){_0x540337=_0x41eab1;logger[_0xa55c('0xb')]('The\x20User\x20ID\x20is:',_0x540337['id']);return getEndUser(_0x1630ac,_0x508bd3[_0xa55c('0x4d')],_0x508bd3[_0xa55c('0x4e')]);})['then'](function(_0x11ff1d){_0x1b2708=_0x11ff1d;logger[_0xa55c('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b2708['id']);return getTicket(_0x1630ac,_0x540337,_0x1b2708,_0x5f25f7,_0x508bd3);})[_0xa55c('0x10')](function(_0x81cee8){if(_0x81cee8){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger['info'](_0xa55c('0x50'),_0x81cee8['id']);switch(_0x1630ac['type']){case _0xa55c('0x51'):logger[_0xa55c('0xb')](_0xa55c('0x47'),'Displaying\x20ticket\x20to\x20agent...');emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449['name']),_0xa55c('0x53'),{'recordId':_0x81cee8['id']});break;case _0xa55c('0x54'):logger[_0xa55c('0xb')](_0xa55c('0x47'),_0xa55c('0x55'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2f8449[_0xa55c('0x38')]),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')]('https://xcally.desk.com/web/agent/case/%d',_0x81cee8['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x47'),_0xa55c('0x58'));}}})['catch'](function(_0x4c3095){console[_0xa55c('0x57')](_0x4c3095);logger['error'](_0xa55c('0x47'),JSON['stringify'](_0x4c3095));});};exports[_0xa55c('0x59')]=function(_0x228df4,_0x181802,_0x3f9313,_0x2ecf79,_0x5b1cf3,_0x44b7c1,_0x4607ca){var _0x4b85cc,_0x3929a6;_0x44b7c1[_0xa55c('0xf')]=intUtil[_0xa55c('0x45')](_0x44b7c1[_0xa55c('0xf')]);_0x44b7c1['serverUrl']=intUtil['stripTrailingSlash'](_0x44b7c1[_0xa55c('0x46')]);if(_0x4607ca&&_0x4607ca[_0xa55c('0x5a')]&&_0x4607ca[_0xa55c('0x5a')]!==_0xa55c('0x5b')){logger['info'](_0xa55c('0x5c'),'Recording\x20is\x20enabled!');_0x181802[_0xa55c('0x48')]=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x44b7c1[_0xa55c('0x46')],_0x181802[_0xa55c('0x4a')],md5(_0x181802['uniqueid']));}headers[_0xa55c('0x4b')]=getAuth(_0x44b7c1);return getUser(_0x44b7c1,_0x2ecf79['email'])[_0xa55c('0x10')](function(_0x157afe){_0x4b85cc=_0x157afe;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0x4b85cc['id']);return getEndUser(_0x44b7c1,_0x181802[_0xa55c('0x5e')],_0x181802[_0xa55c('0x5f')]);})[_0xa55c('0x10')](function(_0x53e2be){_0x3929a6=_0x53e2be;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3929a6['id']);return getTicket(_0x44b7c1,_0x4b85cc,_0x3929a6,_0x3f9313,_0x181802);})[_0xa55c('0x10')](function(_0x23a30e){if(_0x23a30e){logger[_0xa55c('0xb')]('Ticket\x20created!');logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x23a30e['id']);switch(_0x44b7c1[_0xa55c('0x2c')]){case _0xa55c('0x51'):logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x61'));emit(util[_0xa55c('0xd')](_0xa55c('0x52'),_0x2ecf79[_0xa55c('0x38')]),_0xa55c('0x53'),{'recordId':_0x23a30e['id']});break;case'newTab':logger[_0xa55c('0xb')]('[QUEUE]',_0xa55c('0x55'));emit(util['format'](_0xa55c('0x52'),_0x2ecf79['name']),_0xa55c('0x56'),{'uri':util[_0xa55c('0xd')](_0xa55c('0x62'),_0x44b7c1[_0xa55c('0xf')],_0x23a30e['id'])});break;default:logger[_0xa55c('0x57')](_0xa55c('0x5c'),_0xa55c('0x58'));}}})[_0xa55c('0x63')](function(_0x14b515){logger[_0xa55c('0x57')]('[OUTBOUND]',JSON[_0xa55c('0x17')](_0x14b515));});};exports[_0xa55c('0x64')]=function(_0x4ef914,_0x18b928,_0x2b8b88,_0x3e3b4b,_0x9fe234,_0x1b8b06){var _0xa38271,_0x3cef1f;_0x1b8b06[_0xa55c('0xf')]=intUtil['stripTrailingSlash'](_0x1b8b06[_0xa55c('0xf')]);_0x1b8b06[_0xa55c('0x46')]=intUtil[_0xa55c('0x45')](_0x1b8b06[_0xa55c('0x46')]);if(_0x9fe234&&_0x9fe234[_0xa55c('0x65')]){logger[_0xa55c('0xb')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',_0xa55c('0x68'));_0x18b928['recordingURL']=util[_0xa55c('0xd')](_0xa55c('0x49'),_0x1b8b06[_0xa55c('0x46')],_0x18b928[_0xa55c('0x4a')],md5(_0x18b928[_0xa55c('0x4a')]));}else{_0x18b928[_0xa55c('0x48')]='';}headers[_0xa55c('0x4b')]=getAuth(_0x1b8b06);return getUser(_0x1b8b06)[_0xa55c('0x10')](function(_0x2e4cf7){_0xa38271=_0x2e4cf7;logger[_0xa55c('0xb')](_0xa55c('0x5d'),_0xa38271['id']);return getEndUser(_0x1b8b06,_0x18b928['calleridname'],_0x18b928[_0xa55c('0x4e')]);})['then'](function(_0x1228a4){_0x3cef1f=_0x1228a4;logger[_0xa55c('0xb')](_0xa55c('0x60'),_0x3cef1f['id']);return getTicket(_0x1b8b06,_0xa38271,_0x3cef1f,_0x2b8b88,_0x18b928);})['then'](function(_0x4d9722){if(_0x4d9722){logger[_0xa55c('0xb')](_0xa55c('0x4f'));logger[_0xa55c('0xb')](_0xa55c('0x50'),_0x4d9722['id']);}})['catch'](function(_0x149cb9){logger[_0xa55c('0x57')]('['+_0x18b928[_0xa55c('0x66')][_0xa55c('0x67')]()+']',JSON[_0xa55c('0x17')](_0x149cb9));});};
\ No newline at end of file
index 1ebf783..d476e2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43b8=['validateEmail','email','length','internalemailaddress','isdisabled','info','toUpperCase',']\x20Agent\x20found\x20','systemuserid',']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userEmail','userId','toLowerCase','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','replace','%2b','contactid','nothing',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','forEach','includes','string','picklist','type','nameField','customField','idField','indexOf','content','assign','getString','Subjects','Descriptions','Fields','ticketType','phonecall','callDirection','/contacts(','queue','phonecalls','odata-entityid','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]',']\x20The\x20User\x20ID\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...','name','error','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','ioredis','../../../../config/logger','dynamics365','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri','data7','tenantId','CloudProvider','data2','data5','POST','clientId','username','password','clientSecret','then','access_token','catch',']\x20Wrong\x20credentials!','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil'];(function(_0x5a17a9,_0x1eea3d){var _0x4c09cb=function(_0x22765c){while(--_0x22765c){_0x5a17a9['push'](_0x5a17a9['shift']());}};_0x4c09cb(++_0x1eea3d);}(_0x43b8,0x13b));var _0x843b=function(_0x114413,_0x45c38b){_0x114413=_0x114413-0x0;var _0x84c997=_0x43b8[_0x114413];return _0x84c997;};'use strict';var _=require(_0x843b('0x0'));var rp=require(_0x843b('0x1'));var util=require(_0x843b('0x2'));var intUtil=require(_0x843b('0x3'));var md5=require('md5');var Redis=require(_0x843b('0x4'));var logger=require(_0x843b('0x5'))(_0x843b('0x6'));var config=require('../../../../config/environment');config[_0x843b('0x7')]=_['defaults'](config['redis'],{'host':_0x843b('0x8'),'port':0x18eb});var io=require(_0x843b('0x9'))(new Redis(config[_0x843b('0x7')]));function getAuthToken(_0x1e39e5,_0x215e7f,_0x55a813){if(_0x1e39e5[_0x843b('0xa')]){_0x1e39e5[_0x843b('0xb')]=_0x1e39e5['CloudProvider'][_0x843b('0xc')];_0x1e39e5[_0x843b('0xd')]=_0x1e39e5[_0x843b('0xe')][_0x843b('0xf')];return Promise['resolve'](_0x1e39e5[_0x843b('0xe')][_0x843b('0x10')]);}var _0x2b470a={'method':_0x843b('0x11'),'uri':_0x215e7f,'form':{'client_id':_0x1e39e5[_0x843b('0x12')],'resource':_0x1e39e5[_0x843b('0xb')],'username':_0x1e39e5[_0x843b('0x13')],'password':_0x1e39e5[_0x843b('0x14')],'grant_type':_0x843b('0x14'),'client_secret':_0x1e39e5[_0x843b('0x15')]},'json':!![]};return rp(_0x2b470a)[_0x843b('0x16')](function(_0x56ec55){return _0x56ec55[_0x843b('0x17')];})[_0x843b('0x18')](function(_0x495eef){logger['error']('['+[_0x55a813['toUpperCase']()]+_0x843b('0x19'));return _0x495eef[_0x843b('0x1a')];});}function getUser(_0x818a4f,_0x5da492,_0x57b18b,_0x2247b8,_0x529971,_0x35522f){return new Promise(function(_0x5acc1e,_0x21c7b8){return getAuthToken(_0x5da492,_0x2247b8,_0x35522f)[_0x843b('0x16')](function(_0x1bd159){var _0x20b74c={'method':_0x843b('0x1b'),'uri':_0x529971+_0x843b('0x1c'),'headers':{'Authorization':_0x843b('0x1d')+_0x1bd159,'OData-Version':_0x843b('0x1e')},'json':!![]};return rp(_0x20b74c);})[_0x843b('0x16')](function(_0x240ed0){var _0x54601c=_0x240ed0[_0x843b('0x1f')];var _0x5cdd9f=![];var _0x132bc1=null;if(!_[_0x843b('0x20')](_0x57b18b)){if(intUtil[_0x843b('0x21')](_0x57b18b[_0x843b('0x22')])){_0x818a4f['userEmail']=_0x57b18b[_0x843b('0x22')];for(_0x132bc1=0x0;_0x132bc1<_0x54601c[_0x843b('0x23')];_0x132bc1++){if(_0x54601c[_0x132bc1][_0x843b('0x24')]===_0x57b18b[_0x843b('0x22')]&&!_0x54601c[_0x132bc1][_0x843b('0x25')]){_0x5cdd9f=!![];logger[_0x843b('0x26')]('['+[_0x35522f[_0x843b('0x27')]()]+_0x843b('0x28')+_0x54601c[_0x132bc1][_0x843b('0x29')]+'!');_0x818a4f['userId']=_0x54601c[_0x132bc1][_0x843b('0x29')];}}}}if(!_0x5cdd9f){logger[_0x843b('0x26')]('['+[_0x35522f[_0x843b('0x27')]()]+_0x843b('0x2a'));_0x818a4f[_0x843b('0x2b')]=_0x5da492['username'];for(_0x132bc1=0x0;_0x132bc1<_0x54601c['length'];_0x132bc1++){if(_0x54601c[_0x132bc1][_0x843b('0x24')]===_0x5da492['username']){_0x818a4f[_0x843b('0x2c')]=_0x54601c[_0x132bc1]['systemuserid'];}}}_0x5acc1e(_0x818a4f);})[_0x843b('0x18')](function(_0x12af37){_0x21c7b8(_0x12af37[_0x843b('0x1a')]);});});}function createEndUser(_0x49db46,_0x277e7a,_0x44c5d8,_0x113fc7,_0x411db5,_0x3a6676,_0x5bfa05){return new Promise(function(_0x480bfb,_0x50bfd1){return getAuthToken(_0x277e7a,_0x44c5d8,_0x3a6676)[_0x843b('0x16')](function(_0x251090){var _0x3fb918=_0x3a6676[_0x843b('0x2d')]()===_0x843b('0x2e')?_0x411db5[_0x843b('0x2f')]:_0x411db5[_0x843b('0x30')];var _0x2a4bae={'method':_0x843b('0x11'),'uri':_0x113fc7+_0x843b('0x31'),'body':{'fullname':_0x3fb918,'firstname':_0x3fb918,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x843b('0x32')+_0x49db46[_0x843b('0x2c')]+')'},'headers':{'Authorization':_0x843b('0x1d')+_0x251090,'OData-Version':_0x843b('0x1e')},'json':!![],'resolveWithFullResponse':!![]};_0x2a4bae[_0x843b('0x33')][_0x5bfa05]=_0x3fb918;return rp(_0x2a4bae);})['then'](function(_0x974094){var _0x1996a5=_0x974094[_0x843b('0x34')]['odata-entityid'];var _0x1d1820=_0x1996a5[_0x843b('0x35')](_0x1996a5[_0x843b('0x36')]('(')+0x1,_0x1996a5[_0x843b('0x36')](')'));_0x49db46[_0x843b('0x37')]=_0x1d1820;_0x480bfb(_0x49db46);})[_0x843b('0x18')](function(_0x47a392){_0x50bfd1(_0x47a392[_0x843b('0x1a')]);});});}function getEndUser(_0xa6fefc,_0xd22908,_0x3601a2,_0x3ebe52,_0x4bbc19,_0x5cf66c,_0x5b3b18,_0x2c5441){var _0x18aef0=_0x5cf66c['toLowerCase']()===_0x843b('0x2e')?_0x4bbc19['destcalleridnum']:_0x4bbc19['calleridnum'];return getAuthToken(_0xd22908,_0x3601a2,_0x5cf66c)[_0x843b('0x16')](function(_0x590ddd){_0x2c5441=_0x2c5441?_0x2c5441:_0x843b('0x38');var _0x50824d={'method':_0x843b('0x1b'),'uri':_0x3ebe52+_0x843b('0x39')+_0x2c5441+_0x843b('0x3a')+_0x2c5441+'\x20eq\x20\x27'+_0x18aef0[_0x843b('0x3b')]('+',_0x843b('0x3c'))+'\x27','headers':{'Authorization':_0x843b('0x1d')+_0x590ddd,'If-None-Match':null,'OData-Version':_0x843b('0x1e')},'json':!![]};return rp(_0x50824d);})[_0x843b('0x16')](function(_0x1b6059){var _0x34aa39=![];if(!_0x1b6059)return _0x34aa39;var _0x9e94e3=_0x1b6059['value'];for(var _0x50d566=0x0;_0x50d566<_0x9e94e3[_0x843b('0x23')];_0x50d566++){if(_0x9e94e3[_0x50d566][_0x2c5441]===_0x18aef0){_0x34aa39=!![];_0xa6fefc['enduserId']=_0x9e94e3[_0x50d566][_0x843b('0x3d')];}}return _0x34aa39;})[_0x843b('0x16')](function(_0x418e5d){if(_0x418e5d)return _0xa6fefc;if(_0x5b3b18===_0x843b('0x3e')){logger[_0x843b('0x26')]('['+[_0x5cf66c['toUpperCase']()]+_0x843b('0x3f'));return _0xa6fefc;}return createEndUser(_0xa6fefc,_0xd22908,_0x3601a2,_0x3ebe52,_0x4bbc19,_0x5cf66c,_0x2c5441)[_0x843b('0x16')](function(_0xca386d){logger[_0x843b('0x26')]('['+[_0x5cf66c[_0x843b('0x27')]()]+_0x843b('0x40'),_0xca386d[_0x843b('0x37')]);return _0xca386d;});});}function getCustomFields(_0x21c89d,_0x585f0c,_0x348770){var _0x239848={};if(_0x21c89d[_0x843b('0x23')]>0x0){_[_0x843b('0x41')](_0x21c89d,function(_0x1148c1){if(_[_0x843b('0x42')]([_0x843b('0x43'),_0x843b('0x44')],_0x1148c1[_0x843b('0x45')])&&_0x1148c1[_0x843b('0x46')]&&!_0x1148c1[_0x843b('0x47')]){var _0x3bf7dc=_0x1148c1[_0x843b('0x48')][_0x843b('0x2d')]();var _0x2c6fb5=_0x3bf7dc[_0x843b('0x35')](0x0,_0x3bf7dc['indexOf']('_'));var _0x24fbbc=_0x3bf7dc['substring'](_0x3bf7dc[_0x843b('0x49')]('_')+0x1);if(_0x2c6fb5===_0x348770){_0x239848[_0x24fbbc]=_0x1148c1[_0x843b('0x4a')];}}});}return _0x239848;}function getTicket(_0x1f7cc2,_0x5943ea,_0x318159,_0x1f70ae,_0x2ff799,_0x413456,_0x401ee1){return new Promise(function(_0x90e616,_0x5cdfab){var _0x2ae66d;return getAuthToken(_0x5943ea,_0x318159,_0x401ee1)[_0x843b('0x16')](function(_0x2f4b6f){if(_0x413456['ticketType']==='incident'){_0x2ae66d={'method':_0x843b('0x11'),'uri':_0x1f70ae+'incidents','body':Object[_0x843b('0x4b')]({},{'title':intUtil[_0x843b('0x4c')](_0x413456[_0x843b('0x4d')],_0x2ff799,'\x20'),'description':intUtil[_0x843b('0x4c')](_0x413456[_0x843b('0x4e')],_0x2ff799,'\x0a'),'customerid_contact@odata.bind':_0x1f7cc2[_0x843b('0x37')]?'/contacts('+_0x1f7cc2[_0x843b('0x37')]+')':undefined,'ownerid@odata.bind':_0x843b('0x32')+_0x1f7cc2[_0x843b('0x2c')]+')','caseorigincode':'1'},getCustomFields(_0x413456[_0x843b('0x4f')],_0x2ff799,_0x413456[_0x843b('0x50')])),'headers':{'Authorization':_0x843b('0x1d')+_0x2f4b6f,'OData-Version':_0x843b('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x413456[_0x843b('0x50')]===_0x843b('0x51')){var _0x3c90c0=_0x1f7cc2[_0x843b('0x37')]?[{'partyid_systemuser@odata.bind':_0x843b('0x32')+_0x1f7cc2['userId']+')','participationtypemask':_0x1f7cc2[_0x843b('0x52')]==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0x843b('0x53')+_0x1f7cc2['enduserId']+')','participationtypemask':_0x1f7cc2['callDirection']===_0x843b('0x54')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x843b('0x32')+_0x1f7cc2[_0x843b('0x2c')]+')','participationtypemask':_0x1f7cc2[_0x843b('0x52')]===_0x843b('0x54')?0x2:0x1}];_0x2ae66d={'method':_0x843b('0x11'),'uri':_0x1f70ae+_0x843b('0x55'),'body':Object[_0x843b('0x4b')]({},{'subject':intUtil['getString'](_0x413456[_0x843b('0x4d')],_0x2ff799,'\x20'),'phonenumber':String(_0x2ff799[_0x843b('0x30')]),'description':intUtil[_0x843b('0x4c')](_0x413456['Descriptions'],_0x2ff799,'\x0a'),'regardingobjectid_contact@odata.bind':_0x1f7cc2[_0x843b('0x37')]?_0x843b('0x53')+_0x1f7cc2[_0x843b('0x37')]+')':undefined,'ownerid@odata.bind':_0x843b('0x32')+_0x1f7cc2[_0x843b('0x2c')]+')','directioncode':_0x1f7cc2[_0x843b('0x52')]===_0x843b('0x54')?![]:!![],'phonecall_activity_parties':_0x3c90c0},getCustomFields(_0x413456[_0x843b('0x4f')],_0x2ff799,_0x413456['ticketType'])),'headers':{'Authorization':'Bearer\x20'+_0x2f4b6f,'OData-Version':_0x843b('0x1e')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x2ae66d);})[_0x843b('0x16')](function(_0x5688d3){var _0x5950c6=_0x5688d3[_0x843b('0x34')][_0x843b('0x56')];var _0x28ba89=_0x5950c6['substring'](_0x5950c6[_0x843b('0x36')]('(')+0x1,_0x5950c6['lastIndexOf'](')'));_0x1f7cc2[_0x843b('0x57')]=_0x28ba89;_0x90e616(_0x1f7cc2);})[_0x843b('0x18')](function(_0x143acc){_0x5cdfab(_0x143acc['message']);});});}function emit(_0x4ab782,_0x572c9a,_0x2ebb76,_0x6e674f){var _0x204b1a={'uri':util['format'](_0x843b('0x58'),_0x4ab782,_0x2ebb76,_0x6e674f)};io['to'](util[_0x843b('0x59')](_0x843b('0x5a'),_0x572c9a))[_0x843b('0x5b')](_0x843b('0x5c'),_0x204b1a);}exports['cs']=function(_0x716ffc,_0x3a07f0,_0x1b8368,_0x1eb626,_0x56dc20,_0x16e75c,_0x1c4ef8,_0x2764f6){var _0x2370b1={};_0x16e75c['remoteUri']=_0x16e75c['modernAuthentication']?intUtil[_0x843b('0x5d')](_0x16e75c[_0x843b('0xe')]['data7']):intUtil[_0x843b('0x5d')](_0x16e75c['remoteUri']);_0x16e75c[_0x843b('0x5e')]=intUtil[_0x843b('0x5d')](_0x16e75c[_0x843b('0x5e')]);_0x2370b1[_0x843b('0x52')]=_0x2764f6===_0x843b('0x54')||_0x2764f6===_0x843b('0x5f')?_0x843b('0x54'):_0x843b('0x2e');var _0x6a33aa=_0x16e75c[_0x843b('0xa')]?util[_0x843b('0x59')]('%s/api/data/v9.0/',_0x16e75c[_0x843b('0xe')][_0x843b('0xc')]):util[_0x843b('0x59')](_0x843b('0x60'),_0x16e75c[_0x843b('0xb')]);var _0x573483=util[_0x843b('0x59')](_0x843b('0x61'),_0x16e75c[_0x843b('0xd')]);var _0x2408c8=util['format'](_0x843b('0x62'),_0x16e75c['serverUrl'],_0x3a07f0[_0x843b('0x63')],md5(_0x3a07f0[_0x843b('0x63')]));if(_0x56dc20&&_0x56dc20['monitor_format']){logger[_0x843b('0x26')](_0x843b('0x64'),_0x843b('0x65'));_0x3a07f0[_0x843b('0x66')]=_0x2408c8;}else if(_0x1c4ef8&&_0x1c4ef8['recordingFormat']&&_0x1c4ef8[_0x843b('0x67')]!==_0x843b('0x68')){logger[_0x843b('0x26')](_0x843b('0x69'),_0x843b('0x65'));_0x3a07f0['recordingURL']=_0x2408c8;}else{_0x3a07f0[_0x843b('0x66')]='';}return getUser(_0x2370b1,_0x16e75c,_0x1eb626,_0x573483,_0x6a33aa,_0x2764f6)[_0x843b('0x16')](function(_0x10e7ab){logger[_0x843b('0x26')]('['+_0x2764f6[_0x843b('0x27')]()+_0x843b('0x6a'),_0x10e7ab[_0x843b('0x2c')]);logger[_0x843b('0x26')]('['+_0x2764f6[_0x843b('0x27')]()+']\x20The\x20User\x20email\x20is:',_0x10e7ab[_0x843b('0x2b')]);return getEndUser(_0x10e7ab,_0x16e75c,_0x573483,_0x6a33aa,_0x3a07f0,_0x2764f6,_0x1b8368['moduleCreate'],_0x1b8368[_0x843b('0x6b')]);})[_0x843b('0x16')](function(_0x871295){logger['info']('['+_0x2764f6[_0x843b('0x27')]()+_0x843b('0x6c'),_0x871295[_0x843b('0x37')]);logger[_0x843b('0x26')]('['+_0x2764f6[_0x843b('0x27')]()+_0x843b('0x6d'),_0x3a07f0[_0x843b('0x30')]);return getTicket(_0x871295,_0x16e75c,_0x573483,_0x6a33aa,_0x3a07f0,_0x1b8368,_0x2764f6);})[_0x843b('0x16')](function(_0x5accde){logger['info'](util[_0x843b('0x59')]('['+_0x2764f6[_0x843b('0x27')]()+_0x843b('0x6e'),_0x1b8368[_0x843b('0x50')],_0x5accde[_0x843b('0x57')]));logger[_0x843b('0x26')](util[_0x843b('0x59')]('['+_0x2764f6[_0x843b('0x27')]()+_0x843b('0x6f'),_0x2764f6));if(_0x2764f6!==_0x843b('0x5f')&&_0x1b8368['openNewTab']){logger['info']('['+_0x2764f6[_0x843b('0x27')]()+']',_0x843b('0x70'));emit(_0x16e75c[_0x843b('0xb')],_0x1eb626[_0x843b('0x71')],_0x1b8368[_0x843b('0x50')],_0x5accde[_0x843b('0x57')]);}})[_0x843b('0x18')](function(_0x3487fe){logger['error']('['+_0x2764f6[_0x843b('0x27')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x3487fe['message']);console[_0x843b('0x72')](_0x843b('0x73'),_0x3487fe);});};
\ No newline at end of file
+var _0xa0a5=['CloudProvider','data7','tenantId','resolve','data5','POST','password','clientSecret','access_token','catch','error','toUpperCase',']\x20Wrong\x20credentials!','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','4.0','validateEmail','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','username','toLowerCase','outbound','calleridnum','contacts','Bearer\x20','body','headers','lastIndexOf','enduserId','destcalleridnum','telephone1','&$filter=','replace','%2b','value','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','includes','string','picklist','type','nameField','customField','idField','substring','indexOf','content','ticketType','incident','incidents','assign','getString','Descriptions','/contacts(','/systemusers(','callDirection','queue','phonecalls','Fields','odata-entityid','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','%s/api/data/v9.0/','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingFormat','none','[OUTBOUND]','recordingURL',']\x20The\x20User\x20ID\x20is:',']\x20The\x20User\x20email\x20is:','moduleCreate','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','openNewTab','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Dynamics365\x20integration','Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','ioredis','redis','localhost','socket.io-emitter','modernAuthentication','remoteUri'];(function(_0x10dc64,_0x11bb29){var _0x9cf98d=function(_0x558d71){while(--_0x558d71){_0x10dc64['push'](_0x10dc64['shift']());}};_0x9cf98d(++_0x11bb29);}(_0xa0a5,0x1ad));var _0x5a0a=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa0a5[_0x2f3848];return _0x102668;};'use strict';var _=require(_0x5a0a('0x0'));var rp=require(_0x5a0a('0x1'));var util=require(_0x5a0a('0x2'));var intUtil=require(_0x5a0a('0x3'));var md5=require(_0x5a0a('0x4'));var Redis=require(_0x5a0a('0x5'));var logger=require('../../../../config/logger')('dynamics365');var config=require('../../../../config/environment');config[_0x5a0a('0x6')]=_['defaults'](config[_0x5a0a('0x6')],{'host':_0x5a0a('0x7'),'port':0x18eb});var io=require(_0x5a0a('0x8'))(new Redis(config[_0x5a0a('0x6')]));function getAuthToken(_0x29dee0,_0x32051a,_0x24546d){if(_0x29dee0[_0x5a0a('0x9')]){_0x29dee0[_0x5a0a('0xa')]=_0x29dee0[_0x5a0a('0xb')][_0x5a0a('0xc')];_0x29dee0[_0x5a0a('0xd')]=_0x29dee0[_0x5a0a('0xb')]['data2'];return Promise[_0x5a0a('0xe')](_0x29dee0[_0x5a0a('0xb')][_0x5a0a('0xf')]);}var _0x27155b={'method':_0x5a0a('0x10'),'uri':_0x32051a,'form':{'client_id':_0x29dee0['clientId'],'resource':_0x29dee0['remoteUri'],'username':_0x29dee0['username'],'password':_0x29dee0[_0x5a0a('0x11')],'grant_type':_0x5a0a('0x11'),'client_secret':_0x29dee0[_0x5a0a('0x12')]},'json':!![]};return rp(_0x27155b)['then'](function(_0x435fa7){return _0x435fa7[_0x5a0a('0x13')];})[_0x5a0a('0x14')](function(_0x146a51){logger[_0x5a0a('0x15')]('['+[_0x24546d[_0x5a0a('0x16')]()]+_0x5a0a('0x17'));return _0x146a51[_0x5a0a('0x18')];});}function getUser(_0x369fb4,_0x3fb743,_0x3fd73b,_0x583877,_0x589df7,_0x5e93e6){return new Promise(function(_0x1fed65,_0x407c6a){return getAuthToken(_0x3fb743,_0x583877,_0x5e93e6)[_0x5a0a('0x19')](function(_0x1cd147){var _0x36d335={'method':_0x5a0a('0x1a'),'uri':_0x589df7+_0x5a0a('0x1b'),'headers':{'Authorization':'Bearer\x20'+_0x1cd147,'OData-Version':_0x5a0a('0x1c')},'json':!![]};return rp(_0x36d335);})['then'](function(_0x1a4afc){var _0x308846=_0x1a4afc['value'];var _0x361659=![];var _0x1f4165=null;if(!_['isNil'](_0x3fd73b)){if(intUtil[_0x5a0a('0x1d')](_0x3fd73b[_0x5a0a('0x1e')])){_0x369fb4[_0x5a0a('0x1f')]=_0x3fd73b[_0x5a0a('0x1e')];for(_0x1f4165=0x0;_0x1f4165<_0x308846[_0x5a0a('0x20')];_0x1f4165++){if(_0x308846[_0x1f4165][_0x5a0a('0x21')]===_0x3fd73b['email']&&!_0x308846[_0x1f4165][_0x5a0a('0x22')]){_0x361659=!![];logger[_0x5a0a('0x23')]('['+[_0x5e93e6[_0x5a0a('0x16')]()]+_0x5a0a('0x24')+_0x308846[_0x1f4165][_0x5a0a('0x25')]+'!');_0x369fb4[_0x5a0a('0x26')]=_0x308846[_0x1f4165][_0x5a0a('0x25')];}}}}if(!_0x361659){logger[_0x5a0a('0x23')]('['+[_0x5e93e6[_0x5a0a('0x16')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x369fb4[_0x5a0a('0x1f')]=_0x3fb743[_0x5a0a('0x27')];for(_0x1f4165=0x0;_0x1f4165<_0x308846[_0x5a0a('0x20')];_0x1f4165++){if(_0x308846[_0x1f4165][_0x5a0a('0x21')]===_0x3fb743[_0x5a0a('0x27')]){_0x369fb4[_0x5a0a('0x26')]=_0x308846[_0x1f4165][_0x5a0a('0x25')];}}}_0x1fed65(_0x369fb4);})['catch'](function(_0x17cc5e){_0x407c6a(_0x17cc5e[_0x5a0a('0x18')]);});});}function createEndUser(_0x493f24,_0x5f06ee,_0x42cae2,_0x3a5aa4,_0x151ba4,_0x1b371d,_0x10ff45){return new Promise(function(_0x4c34ce,_0x3fa483){return getAuthToken(_0x5f06ee,_0x42cae2,_0x1b371d)['then'](function(_0x5cdc23){var _0x4bb2a2=_0x1b371d[_0x5a0a('0x28')]()===_0x5a0a('0x29')?_0x151ba4['destcalleridnum']:_0x151ba4[_0x5a0a('0x2a')];var _0x3a5f2c={'method':_0x5a0a('0x10'),'uri':_0x3a5aa4+_0x5a0a('0x2b'),'body':{'fullname':_0x4bb2a2,'firstname':_0x4bb2a2,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':'/systemusers('+_0x493f24[_0x5a0a('0x26')]+')'},'headers':{'Authorization':_0x5a0a('0x2c')+_0x5cdc23,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};_0x3a5f2c[_0x5a0a('0x2d')][_0x10ff45]=_0x4bb2a2;return rp(_0x3a5f2c);})[_0x5a0a('0x19')](function(_0x28a717){var _0x432e2e=_0x28a717[_0x5a0a('0x2e')]['odata-entityid'];var _0x28f9ec=_0x432e2e['substring'](_0x432e2e[_0x5a0a('0x2f')]('(')+0x1,_0x432e2e[_0x5a0a('0x2f')](')'));_0x493f24[_0x5a0a('0x30')]=_0x28f9ec;_0x4c34ce(_0x493f24);})[_0x5a0a('0x14')](function(_0x4251a4){_0x3fa483(_0x4251a4[_0x5a0a('0x18')]);});});}function getEndUser(_0x593a6b,_0x49eed0,_0x43de3c,_0x127be2,_0x14f626,_0x1f3d23,_0x3c842c,_0x262ad3){var _0x20eba2=_0x1f3d23[_0x5a0a('0x28')]()===_0x5a0a('0x29')?_0x14f626[_0x5a0a('0x31')]:_0x14f626[_0x5a0a('0x2a')];return getAuthToken(_0x49eed0,_0x43de3c,_0x1f3d23)[_0x5a0a('0x19')](function(_0x28064f){_0x262ad3=_0x262ad3?_0x262ad3:_0x5a0a('0x32');var _0x20cc72={'method':'GET','uri':_0x127be2+'contacts?$select='+_0x262ad3+_0x5a0a('0x33')+_0x262ad3+'\x20eq\x20\x27'+_0x20eba2[_0x5a0a('0x34')]('+',_0x5a0a('0x35'))+'\x27','headers':{'Authorization':_0x5a0a('0x2c')+_0x28064f,'If-None-Match':null,'OData-Version':_0x5a0a('0x1c')},'json':!![]};return rp(_0x20cc72);})[_0x5a0a('0x19')](function(_0x20f54b){var _0x2e26be=![];if(!_0x20f54b)return _0x2e26be;var _0x37616d=_0x20f54b[_0x5a0a('0x36')];for(var _0x2562d9=0x0;_0x2562d9<_0x37616d[_0x5a0a('0x20')];_0x2562d9++){if(_0x37616d[_0x2562d9][_0x262ad3]===_0x20eba2){_0x2e26be=!![];_0x593a6b[_0x5a0a('0x30')]=_0x37616d[_0x2562d9][_0x5a0a('0x37')];}}return _0x2e26be;})[_0x5a0a('0x19')](function(_0x2e698c){if(_0x2e698c)return _0x593a6b;if(_0x3c842c==='nothing'){logger[_0x5a0a('0x23')]('['+[_0x1f3d23[_0x5a0a('0x16')]()]+_0x5a0a('0x38'));return _0x593a6b;}return createEndUser(_0x593a6b,_0x49eed0,_0x43de3c,_0x127be2,_0x14f626,_0x1f3d23,_0x262ad3)[_0x5a0a('0x19')](function(_0x436c2a){logger[_0x5a0a('0x23')]('['+[_0x1f3d23['toUpperCase']()]+_0x5a0a('0x39'),_0x436c2a[_0x5a0a('0x30')]);return _0x436c2a;});});}function getCustomFields(_0x169472,_0x45c8bd,_0x31065d){var _0x2c9794={};if(_0x169472['length']>0x0){_['forEach'](_0x169472,function(_0x47acf9){if(_[_0x5a0a('0x3a')]([_0x5a0a('0x3b'),_0x5a0a('0x3c')],_0x47acf9[_0x5a0a('0x3d')])&&_0x47acf9[_0x5a0a('0x3e')]&&!_0x47acf9[_0x5a0a('0x3f')]){var _0x26c565=_0x47acf9[_0x5a0a('0x40')][_0x5a0a('0x28')]();var _0x3ff829=_0x26c565[_0x5a0a('0x41')](0x0,_0x26c565[_0x5a0a('0x42')]('_'));var _0x427250=_0x26c565[_0x5a0a('0x41')](_0x26c565['indexOf']('_')+0x1);if(_0x3ff829===_0x31065d){_0x2c9794[_0x427250]=_0x47acf9[_0x5a0a('0x43')];}}});}return _0x2c9794;}function getTicket(_0x59d727,_0x379e94,_0x7a5c06,_0x2da244,_0x3ffc3e,_0x14b3ca,_0x8f3294){return new Promise(function(_0x5d3b9a,_0x4800cc){var _0x39b552;return getAuthToken(_0x379e94,_0x7a5c06,_0x8f3294)['then'](function(_0x23065c){if(_0x14b3ca[_0x5a0a('0x44')]===_0x5a0a('0x45')){_0x39b552={'method':_0x5a0a('0x10'),'uri':_0x2da244+_0x5a0a('0x46'),'body':Object[_0x5a0a('0x47')]({},{'title':intUtil[_0x5a0a('0x48')](_0x14b3ca['Subjects'],_0x3ffc3e,'\x20'),'description':intUtil[_0x5a0a('0x48')](_0x14b3ca[_0x5a0a('0x49')],_0x3ffc3e,'\x0a'),'customerid_contact@odata.bind':_0x59d727[_0x5a0a('0x30')]?_0x5a0a('0x4a')+_0x59d727['enduserId']+')':undefined,'ownerid@odata.bind':_0x5a0a('0x4b')+_0x59d727[_0x5a0a('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x14b3ca['Fields'],_0x3ffc3e,_0x14b3ca['ticketType'])),'headers':{'Authorization':_0x5a0a('0x2c')+_0x23065c,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x14b3ca[_0x5a0a('0x44')]==='phonecall'){var _0x49eba6=_0x59d727['enduserId']?[{'partyid_systemuser@odata.bind':'/systemusers('+_0x59d727[_0x5a0a('0x26')]+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?0x2:0x1},{'partyid_contact@odata.bind':_0x5a0a('0x4a')+_0x59d727[_0x5a0a('0x30')]+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x5a0a('0x4b')+_0x59d727['userId']+')','participationtypemask':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?0x2:0x1}];_0x39b552={'method':_0x5a0a('0x10'),'uri':_0x2da244+_0x5a0a('0x4e'),'body':Object[_0x5a0a('0x47')]({},{'subject':intUtil[_0x5a0a('0x48')](_0x14b3ca['Subjects'],_0x3ffc3e,'\x20'),'phonenumber':String(_0x3ffc3e[_0x5a0a('0x2a')]),'description':intUtil[_0x5a0a('0x48')](_0x14b3ca[_0x5a0a('0x49')],_0x3ffc3e,'\x0a'),'regardingobjectid_contact@odata.bind':_0x59d727[_0x5a0a('0x30')]?_0x5a0a('0x4a')+_0x59d727[_0x5a0a('0x30')]+')':undefined,'ownerid@odata.bind':_0x5a0a('0x4b')+_0x59d727[_0x5a0a('0x26')]+')','directioncode':_0x59d727[_0x5a0a('0x4c')]===_0x5a0a('0x4d')?![]:!![],'phonecall_activity_parties':_0x49eba6},getCustomFields(_0x14b3ca[_0x5a0a('0x4f')],_0x3ffc3e,_0x14b3ca[_0x5a0a('0x44')])),'headers':{'Authorization':_0x5a0a('0x2c')+_0x23065c,'OData-Version':_0x5a0a('0x1c')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x39b552);})['then'](function(_0xed4029){var _0x4f354f=_0xed4029[_0x5a0a('0x2e')][_0x5a0a('0x50')];var _0x5980ee=_0x4f354f[_0x5a0a('0x41')](_0x4f354f[_0x5a0a('0x2f')]('(')+0x1,_0x4f354f[_0x5a0a('0x2f')](')'));_0x59d727[_0x5a0a('0x51')]=_0x5980ee;_0x5d3b9a(_0x59d727);})['catch'](function(_0x2c56e5){_0x4800cc(_0x2c56e5[_0x5a0a('0x18')]);});});}function emit(_0x5a2549,_0x1290da,_0x5ba4b5,_0x23ea1f){var _0xb3215e={'uri':util['format'](_0x5a0a('0x52'),_0x5a2549,_0x5ba4b5,_0x23ea1f)};io['to'](util[_0x5a0a('0x53')](_0x5a0a('0x54'),_0x1290da))[_0x5a0a('0x55')](_0x5a0a('0x56'),_0xb3215e);}exports['cs']=function(_0x1cab28,_0x4555b5,_0x2924b3,_0x4ffca3,_0xd9b722,_0x5c6949,_0x5ce0d3,_0x4c5d73){var _0x53bd72={};_0x5c6949[_0x5a0a('0xa')]=_0x5c6949['modernAuthentication']?intUtil[_0x5a0a('0x57')](_0x5c6949[_0x5a0a('0xb')]['data7']):intUtil['stripTrailingSlash'](_0x5c6949[_0x5a0a('0xa')]);_0x5c6949['serverUrl']=intUtil[_0x5a0a('0x57')](_0x5c6949[_0x5a0a('0x58')]);_0x53bd72[_0x5a0a('0x4c')]=_0x4c5d73===_0x5a0a('0x4d')||_0x4c5d73==='unmanaged'?_0x5a0a('0x4d'):_0x5a0a('0x29');var _0xf7e741=_0x5c6949[_0x5a0a('0x9')]?util[_0x5a0a('0x53')](_0x5a0a('0x59'),_0x5c6949[_0x5a0a('0xb')][_0x5a0a('0xc')]):util[_0x5a0a('0x53')](_0x5a0a('0x59'),_0x5c6949[_0x5a0a('0xa')]);var _0x7e7690=util[_0x5a0a('0x53')]('https://login.microsoftonline.com/%s/oauth2/token',_0x5c6949['tenantId']);var _0x3b0590=util[_0x5a0a('0x53')](_0x5a0a('0x5a'),_0x5c6949[_0x5a0a('0x58')],_0x4555b5[_0x5a0a('0x5b')],md5(_0x4555b5[_0x5a0a('0x5b')]));if(_0xd9b722&&_0xd9b722[_0x5a0a('0x5c')]){logger[_0x5a0a('0x23')](_0x5a0a('0x5d'),_0x5a0a('0x5e'));_0x4555b5['recordingURL']=_0x3b0590;}else if(_0x5ce0d3&&_0x5ce0d3[_0x5a0a('0x5f')]&&_0x5ce0d3[_0x5a0a('0x5f')]!==_0x5a0a('0x60')){logger['info'](_0x5a0a('0x61'),_0x5a0a('0x5e'));_0x4555b5[_0x5a0a('0x62')]=_0x3b0590;}else{_0x4555b5['recordingURL']='';}return getUser(_0x53bd72,_0x5c6949,_0x4ffca3,_0x7e7690,_0xf7e741,_0x4c5d73)[_0x5a0a('0x19')](function(_0x2f0b05){logger['info']('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x63'),_0x2f0b05[_0x5a0a('0x26')]);logger['info']('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x64'),_0x2f0b05[_0x5a0a('0x1f')]);return getEndUser(_0x2f0b05,_0x5c6949,_0x7e7690,_0xf7e741,_0x4555b5,_0x4c5d73,_0x2924b3[_0x5a0a('0x65')],_0x2924b3[_0x5a0a('0x66')]);})[_0x5a0a('0x19')](function(_0x103369){logger[_0x5a0a('0x23')]('['+_0x4c5d73[_0x5a0a('0x16')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x103369['enduserId']);logger[_0x5a0a('0x23')]('['+_0x4c5d73['toUpperCase']()+_0x5a0a('0x67'),_0x4555b5[_0x5a0a('0x2a')]);return getTicket(_0x103369,_0x5c6949,_0x7e7690,_0xf7e741,_0x4555b5,_0x2924b3,_0x4c5d73);})[_0x5a0a('0x19')](function(_0xa7f39d){logger[_0x5a0a('0x23')](util[_0x5a0a('0x53')]('['+_0x4c5d73['toUpperCase']()+_0x5a0a('0x68'),_0x2924b3[_0x5a0a('0x44')],_0xa7f39d['ticketId']));logger['info'](util[_0x5a0a('0x53')]('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x69'),_0x4c5d73));if(_0x4c5d73!=='unmanaged'&&_0x2924b3[_0x5a0a('0x6a')]){logger[_0x5a0a('0x23')]('['+_0x4c5d73[_0x5a0a('0x16')]()+']',_0x5a0a('0x6b'));emit(_0x5c6949[_0x5a0a('0xa')],_0x4ffca3['name'],_0x2924b3[_0x5a0a('0x44')],_0xa7f39d[_0x5a0a('0x51')]);}})[_0x5a0a('0x14')](function(_0x1e1371){logger[_0x5a0a('0x15')]('['+_0x4c5d73[_0x5a0a('0x16')]()+_0x5a0a('0x6c'),_0x1e1371[_0x5a0a('0x18')]);console[_0x5a0a('0x15')](_0x5a0a('0x6d'),_0x1e1371);});};
\ No newline at end of file
index 91b0f79..063c3b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90bc=['stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','calleridname','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/helpdesk/tickets/%d','catch','error','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','trigger:browser:url','lastevent','toUpperCase','request-promise','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','application/json','emit','info','Creating\x20new\x20ticket...','merge','format','calleridnum','Subjects','Tags','name','custom_fields','mapValues','value','remoteUri','Ticket\x20created!','validateEmail','%s/api/v2/agents','then','length','Agent\x20found!','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20created.','Basic\x20%s','toString','debug','[HTTP]','stringify','defaults','map','forEach','includes','string','picklist','type','nameField','content','idField','customField','push','variableName','customVariable','Variable','toLowerCase','queue'];(function(_0x236d35,_0x354aad){var _0x3ae6d5=function(_0x83d4c9){while(--_0x83d4c9){_0x236d35['push'](_0x236d35['shift']());}};_0x3ae6d5(++_0x354aad);}(_0x90bc,0x6e));var _0xc90b=function(_0xac575a,_0x6aa399){_0xac575a=_0xac575a-0x0;var _0x41dd64=_0x90bc[_0xac575a];return _0x41dd64;};'use strict';var _=require('lodash');var rp=require(_0xc90b('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0xc90b('0x1'));var intUtil=require(_0xc90b('0x2'));var config=require(_0xc90b('0x3'));var logger=require(_0xc90b('0x4'))(_0xc90b('0x5'));config[_0xc90b('0x6')]=_['defaults'](config[_0xc90b('0x6')],{'host':_0xc90b('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var headers={'Content-Type':'application/json','Accept':_0xc90b('0x8')};function emit(_0x58e667,_0x51acde,_0x389c62){io['to'](_0x58e667)[_0xc90b('0x9')](_0x51acde,_0x389c62);}function getTicket(_0x5c77db,_0x36a33a,_0x378a69,_0x36b674,_0x38301a){logger[_0xc90b('0xa')](_0xc90b('0xb'));var _0x18c6cf=_[_0xc90b('0xc')]({'responder_id':_0x36a33a['id'],'requester_id':_0x378a69['id'],'name':util[_0xc90b('0xd')]('Caller\x20-\x20%s',_0x38301a['calleridname']),'phone':_0x38301a[_0xc90b('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x36b674[_0xc90b('0xf')],_0x38301a,'\x20'),'description':intUtil['getString'](_0x36b674['Descriptions'],_0x38301a,'<br>'),'tags':getTags(_0x36b674[_0xc90b('0x10')],_0xc90b('0x11'))},getCustomFields(_0x36b674['Fields'],_0x38301a));_0x18c6cf[_0xc90b('0x12')]=_[_0xc90b('0x13')](_['keyBy'](_0x18c6cf[_0xc90b('0x12')],'id'),_0xc90b('0x14'));return request({'uri':util[_0xc90b('0xd')]('%s/api/v2/tickets',_0x5c77db[_0xc90b('0x15')]),'method':'POST','body':_0x18c6cf})['then'](function(_0xc4410c){logger[_0xc90b('0xa')](_0xc90b('0x16'));return _0xc4410c;});}function getUser(_0x5ad6fd,_0x585814){if(intUtil[_0xc90b('0x17')](_0x585814)){return request({'uri':util['format'](_0xc90b('0x18'),_0x5ad6fd['remoteUri']),'qs':{'email':_0x585814}})[_0xc90b('0x19')](function(_0x59d786){if(_0x59d786[_0xc90b('0x1a')]){logger[_0xc90b('0xa')](_0xc90b('0x1b'));return _['find'](_0x59d786,function(_0x5dcf01){return _0x5dcf01[_0xc90b('0x1c')][_0xc90b('0x1d')]===_0x585814;});}else{logger[_0xc90b('0xa')](_0xc90b('0x1e'));return request({'uri':util[_0xc90b('0xd')](_0xc90b('0x1f'),_0x5ad6fd[_0xc90b('0x15')])})['then'](function(_0x54715a){logger[_0xc90b('0xa')](_0xc90b('0x20'));return _0x54715a;});}});}else{logger[_0xc90b('0xa')](_0xc90b('0x21'));return request({'uri':util['format']('%s/api/v2/agents/me',_0x5ad6fd[_0xc90b('0x15')])})[_0xc90b('0x19')](function(_0x465801){logger[_0xc90b('0xa')](_0xc90b('0x20'));return _0x465801;});}}function getEndUser(_0x30120e,_0x3a0c91,_0x33a5c9){logger['info'](_0xc90b('0x22'),_0x33a5c9);return request({'uri':util['format'](_0xc90b('0x23'),_0x30120e[_0xc90b('0x15')]),'qs':{'phone':_0x33a5c9}})[_0xc90b('0x19')](function(_0x41e2b9){if(_0x41e2b9['length']){logger[_0xc90b('0xa')](_0xc90b('0x24'));return _['find'](_0x41e2b9,{'phone':_0x33a5c9});}else{logger['info']('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xc90b('0xd')](_0xc90b('0x23'),_0x30120e[_0xc90b('0x15')]),'method':'POST','body':{'name':_0x3a0c91,'phone':_0x33a5c9}})['then'](function(_0x354aa8){logger[_0xc90b('0xa')](_0xc90b('0x25'));return _0x354aa8;});}});}function getAuth(_0x2c6a9){return util[_0xc90b('0xd')](_0xc90b('0x26'),new Buffer(_0x2c6a9['apiKey']+':X')[_0xc90b('0x27')]('base64'));}function request(_0xab692c){logger[_0xc90b('0x28')](_0xc90b('0x29'),JSON[_0xc90b('0x2a')](_0xab692c));return rp(_[_0xc90b('0x2b')](_0xab692c,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x3837ae,_0x748173){var _0x22663c=[];if(_0x3837ae&&_0x3837ae['length']>0x0){_0x22663c=_[_0xc90b('0x2c')](_0x3837ae,_0x748173);}return _0x22663c;}function getCustomFields(_0x260dea,_0x15e495){var _0x50bd51=[];var _0x54c1f5={'custom_fields':[]};if(_0x260dea['length']>0x0){_[_0xc90b('0x2d')](_0x260dea,function(_0x2d2def){if(_[_0xc90b('0x2e')]([_0xc90b('0x2f'),_0xc90b('0x30')],_0x2d2def[_0xc90b('0x31')])&&_0x2d2def[_0xc90b('0x32')]&&!_0x2d2def['customField']){_0x54c1f5[_0x2d2def[_0xc90b('0x32')]['toLowerCase']()]=_0x2d2def[_0xc90b('0x33')][_0xc90b('0x27')]();}else if(_[_0xc90b('0x2e')](['string','picklist'],_0x2d2def['type'])&&_0x2d2def[_0xc90b('0x34')]&&_0x2d2def[_0xc90b('0x35')]){_0x54c1f5['custom_fields'][_0xc90b('0x36')]({'id':_0x2d2def[_0xc90b('0x34')],'value':_0x2d2def['content'][_0xc90b('0x27')]()});}else if(_0x2d2def[_0xc90b('0x31')]==='variable'&&_0x2d2def[_0xc90b('0x37')]&&_0x2d2def[_0xc90b('0x34')]&&_0x2d2def[_0xc90b('0x35')]){_0x15e495[_0x2d2def['variableName']]&&_0x54c1f5[_0xc90b('0x12')][_0xc90b('0x36')]({'id':_0x2d2def[_0xc90b('0x34')],'value':_0x15e495[_0x2d2def[_0xc90b('0x37')]][_0xc90b('0x27')]()});}else if(_0x2d2def[_0xc90b('0x31')]===_0xc90b('0x38')&&_0x2d2def['Variable']&&_0x2d2def[_0xc90b('0x39')][_0xc90b('0x11')]&&_0x2d2def[_0xc90b('0x34')]&&_0x2d2def[_0xc90b('0x35')]){_0x15e495[_0x2d2def[_0xc90b('0x39')][_0xc90b('0x11')][_0xc90b('0x3a')]()]&&_0x54c1f5[_0xc90b('0x12')][_0xc90b('0x36')]({'id':_0x2d2def['idField'],'value':_0x15e495[_0x2d2def[_0xc90b('0x39')]['name'][_0xc90b('0x3a')]()][_0xc90b('0x27')]()});}});}return _0x54c1f5;}exports[_0xc90b('0x3b')]=function(_0x170eaf,_0x58b46f,_0x556a7f,_0x43074c,_0x33f28a,_0x2c81ca){var _0x6cfc9b,_0x42f0bb;_0x2c81ca[_0xc90b('0x15')]=intUtil[_0xc90b('0x3c')](_0x2c81ca['remoteUri']);_0x2c81ca[_0xc90b('0x3d')]=intUtil['stripTrailingSlash'](_0x2c81ca[_0xc90b('0x3d')]);if(_0x33f28a&&_0x33f28a[_0xc90b('0x3e')]){logger[_0xc90b('0xa')](_0xc90b('0x3f'),_0xc90b('0x40'));_0x58b46f[_0xc90b('0x41')]=util['format'](_0xc90b('0x42'),_0x2c81ca[_0xc90b('0x3d')],_0x58b46f[_0xc90b('0x43')],md5(_0x58b46f['uniqueid']));}else{_0x58b46f['recordingURL']='';}headers[_0xc90b('0x44')]=getAuth(_0x2c81ca);return getUser(_0x2c81ca,_0x43074c[_0xc90b('0x1d')])['then'](function(_0x513904){_0x6cfc9b=_0x513904;logger[_0xc90b('0xa')]('The\x20User\x20ID\x20is:',_0x6cfc9b['id']);return getEndUser(_0x2c81ca,_0x58b46f[_0xc90b('0x45')],_0x58b46f['calleridnum']);})[_0xc90b('0x19')](function(_0x16d3f8){_0x42f0bb=_0x16d3f8;logger[_0xc90b('0xa')](_0xc90b('0x46'),_0x42f0bb['id']);return getTicket(_0x2c81ca,_0x6cfc9b,_0x42f0bb,_0x556a7f,_0x58b46f);})[_0xc90b('0x19')](function(_0x1d39ab){if(_0x1d39ab&&_0x1d39ab['id']){logger[_0xc90b('0xa')](_0xc90b('0x16'));logger[_0xc90b('0xa')](_0xc90b('0x47'),_0x1d39ab['id']);logger[_0xc90b('0xa')](_0xc90b('0x3f'),_0xc90b('0x48'));emit(util[_0xc90b('0xd')](_0xc90b('0x49'),_0x43074c['name']),'trigger:browser:url',{'uri':util[_0xc90b('0xd')](_0xc90b('0x4a'),_0x2c81ca[_0xc90b('0x15')],_0x1d39ab['id'])});}})[_0xc90b('0x4b')](function(_0x1628ab){logger[_0xc90b('0x4c')]('[QUEUE]',JSON['stringify'](_0x1628ab));});};exports[_0xc90b('0x4d')]=function(_0x56f882,_0x191e06,_0x52ac05,_0xa94e31,_0x42e0c7,_0x238764,_0x6a2bc){var _0x194243,_0x8d34f7;_0x238764['remoteUri']=intUtil[_0xc90b('0x3c')](_0x238764[_0xc90b('0x15')]);_0x238764[_0xc90b('0x3d')]=intUtil['stripTrailingSlash'](_0x238764['serverUrl']);if(_0x6a2bc&&_0x6a2bc[_0xc90b('0x4e')]&&_0x6a2bc[_0xc90b('0x4e')]!==_0xc90b('0x4f')){logger[_0xc90b('0xa')](_0xc90b('0x50'),_0xc90b('0x40'));_0x191e06[_0xc90b('0x41')]=util[_0xc90b('0xd')](_0xc90b('0x42'),_0x238764['serverUrl'],_0x191e06['uniqueid'],md5(_0x191e06[_0xc90b('0x43')]));}headers['Authorization']=getAuth(_0x238764);return getUser(_0x238764,_0xa94e31[_0xc90b('0x1d')])[_0xc90b('0x19')](function(_0x250e26){_0x194243=_0x250e26;logger['info'](_0xc90b('0x51'),_0x194243['id']);return getEndUser(_0x238764,_0x191e06['destcalleridname'],_0x191e06['destcalleridnum']);})[_0xc90b('0x19')](function(_0x3b1ac0){_0x8d34f7=_0x3b1ac0;logger[_0xc90b('0xa')](_0xc90b('0x46'),_0x8d34f7['id']);return getTicket(_0x238764,_0x194243,_0x8d34f7,_0x52ac05,_0x191e06);})[_0xc90b('0x19')](function(_0x41914d){if(_0x41914d&&_0x41914d['id']){logger[_0xc90b('0xa')](_0xc90b('0x16'));logger[_0xc90b('0xa')](_0xc90b('0x47'),_0x41914d['id']);logger[_0xc90b('0xa')](_0xc90b('0x50'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0xa94e31['name']),_0xc90b('0x52'),{'uri':util[_0xc90b('0xd')](_0xc90b('0x4a'),_0x238764[_0xc90b('0x15')],_0x41914d['id'])});}})['catch'](function(_0x4de7e7){logger['error']('[OUTBOUND]',JSON[_0xc90b('0x2a')](_0x4de7e7));});};exports['unmanaged']=function(_0x2c230c,_0x49d51c,_0x36ebc5,_0x19d76d,_0x3bfa46,_0x43d94e){var _0x11dd88,_0x54acc6;_0x43d94e['remoteUri']=intUtil['stripTrailingSlash'](_0x43d94e['remoteUri']);_0x43d94e[_0xc90b('0x3d')]=intUtil[_0xc90b('0x3c')](_0x43d94e[_0xc90b('0x3d')]);if(_0x3bfa46&&_0x3bfa46[_0xc90b('0x3e')]){logger[_0xc90b('0xa')]('['+_0x49d51c[_0xc90b('0x53')][_0xc90b('0x54')]()+']',_0xc90b('0x40'));_0x49d51c[_0xc90b('0x41')]=util[_0xc90b('0xd')](_0xc90b('0x42'),_0x43d94e['serverUrl'],_0x49d51c['uniqueid'],md5(_0x49d51c['uniqueid']));}else{_0x49d51c[_0xc90b('0x41')]='';}headers[_0xc90b('0x44')]=getAuth(_0x43d94e);return getUser(_0x43d94e,'')['then'](function(_0x436b83){_0x11dd88=_0x436b83;logger['info'](_0xc90b('0x51'),_0x11dd88['id']);return getEndUser(_0x43d94e,_0x49d51c[_0xc90b('0x45')],_0x49d51c['calleridnum']);})[_0xc90b('0x19')](function(_0x1c58b5){_0x54acc6=_0x1c58b5;logger[_0xc90b('0xa')](_0xc90b('0x46'),_0x54acc6['id']);return getTicket(_0x43d94e,_0x11dd88,_0x54acc6,_0x36ebc5,_0x49d51c);})['then'](function(_0x16c9e2){if(_0x16c9e2){logger[_0xc90b('0xa')]('Ticket\x20created!');logger[_0xc90b('0xa')](_0xc90b('0x47'),_0x16c9e2['id']);}})[_0xc90b('0x4b')](function(_0x4e2cfa){logger[_0xc90b('0x4c')]('['+_0x49d51c['lastevent'][_0xc90b('0x54')]()+']',JSON[_0xc90b('0x2a')](_0x4e2cfa));});};
\ No newline at end of file
+var _0xd24c=['queue','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','The\x20User\x20ID\x20is:','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','[QUEUE]','stringify','outbound','recordingFormat','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','error','toUpperCase','lodash','request-promise','md5','util','ioredis','../../../../config/environment','../../../../config/logger','freshdesk','redis','localhost','application/json','info','Creating\x20new\x20ticket...','merge','format','calleridname','calleridnum','getString','Descriptions','<br>','Tags','name','custom_fields','mapValues','keyBy','value','%s/api/v2/tickets','remoteUri','POST','then','Ticket\x20created!','validateEmail','%s/api/v2/agents','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/api/v2/contacts','Enduser\x20created.','Basic\x20%s','apiKey','toString','debug','[HTTP]','defaults','GET','map','includes','picklist','type','nameField','toLowerCase','content','string','idField','push','variable','customField','variableName','customVariable','Variable'];(function(_0x3ff9bd,_0x547b54){var _0x4070c2=function(_0x25fcee){while(--_0x25fcee){_0x3ff9bd['push'](_0x3ff9bd['shift']());}};_0x4070c2(++_0x547b54);}(_0xd24c,0x7d));var _0xcd24=function(_0x45104b,_0x4b4fe9){_0x45104b=_0x45104b-0x0;var _0x55f5ac=_0xd24c[_0x45104b];return _0x55f5ac;};'use strict';var _=require(_0xcd24('0x0'));var rp=require(_0xcd24('0x1'));var md5=require(_0xcd24('0x2'));var util=require(_0xcd24('0x3'));var Redis=require(_0xcd24('0x4'));var intUtil=require('./util');var config=require(_0xcd24('0x5'));var logger=require(_0xcd24('0x6'))(_0xcd24('0x7'));config[_0xcd24('0x8')]=_['defaults'](config[_0xcd24('0x8')],{'host':_0xcd24('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xcd24('0x8')]));var headers={'Content-Type':_0xcd24('0xa'),'Accept':_0xcd24('0xa')};function emit(_0x5371f5,_0x5d71dd,_0x2f149b){io['to'](_0x5371f5)['emit'](_0x5d71dd,_0x2f149b);}function getTicket(_0x3c0cc5,_0x10047a,_0x3a955e,_0x42c3bb,_0x5c33a3){logger[_0xcd24('0xb')](_0xcd24('0xc'));var _0x731592=_[_0xcd24('0xd')]({'responder_id':_0x10047a['id'],'requester_id':_0x3a955e['id'],'name':util[_0xcd24('0xe')]('Caller\x20-\x20%s',_0x5c33a3[_0xcd24('0xf')]),'phone':_0x5c33a3[_0xcd24('0x10')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil['getString'](_0x42c3bb['Subjects'],_0x5c33a3,'\x20'),'description':intUtil[_0xcd24('0x11')](_0x42c3bb[_0xcd24('0x12')],_0x5c33a3,_0xcd24('0x13')),'tags':getTags(_0x42c3bb[_0xcd24('0x14')],_0xcd24('0x15'))},getCustomFields(_0x42c3bb['Fields'],_0x5c33a3));_0x731592[_0xcd24('0x16')]=_[_0xcd24('0x17')](_[_0xcd24('0x18')](_0x731592['custom_fields'],'id'),_0xcd24('0x19'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x1a'),_0x3c0cc5[_0xcd24('0x1b')]),'method':_0xcd24('0x1c'),'body':_0x731592})[_0xcd24('0x1d')](function(_0x4ee2a0){logger[_0xcd24('0xb')](_0xcd24('0x1e'));return _0x4ee2a0;});}function getUser(_0x17dad3,_0x49c909){if(intUtil[_0xcd24('0x1f')](_0x49c909)){return request({'uri':util['format'](_0xcd24('0x20'),_0x17dad3[_0xcd24('0x1b')]),'qs':{'email':_0x49c909}})[_0xcd24('0x1d')](function(_0x1704e4){if(_0x1704e4[_0xcd24('0x21')]){logger['info'](_0xcd24('0x22'));return _[_0xcd24('0x23')](_0x1704e4,function(_0x4976f8){return _0x4976f8[_0xcd24('0x24')][_0xcd24('0x25')]===_0x49c909;});}else{logger[_0xcd24('0xb')](_0xcd24('0x26'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x27'),_0x17dad3['remoteUri'])})['then'](function(_0x292467){logger[_0xcd24('0xb')](_0xcd24('0x28'));return _0x292467;});}});}else{logger['info'](_0xcd24('0x29'));return request({'uri':util[_0xcd24('0xe')]('%s/api/v2/agents/me',_0x17dad3[_0xcd24('0x1b')])})[_0xcd24('0x1d')](function(_0x148ab0){logger[_0xcd24('0xb')]('Admin\x20account\x20selected.');return _0x148ab0;});}}function getEndUser(_0x5350c8,_0xc83b4d,_0x55123a){logger[_0xcd24('0xb')](_0xcd24('0x2a'),_0x55123a);return request({'uri':util['format']('%s/api/v2/contacts',_0x5350c8[_0xcd24('0x1b')]),'qs':{'phone':_0x55123a}})['then'](function(_0x586659){if(_0x586659[_0xcd24('0x21')]){logger[_0xcd24('0xb')](_0xcd24('0x2b'));return _['find'](_0x586659,{'phone':_0x55123a});}else{logger[_0xcd24('0xb')](_0xcd24('0x2c'));return request({'uri':util[_0xcd24('0xe')](_0xcd24('0x2d'),_0x5350c8[_0xcd24('0x1b')]),'method':_0xcd24('0x1c'),'body':{'name':_0xc83b4d,'phone':_0x55123a}})[_0xcd24('0x1d')](function(_0x593fc8){logger['info'](_0xcd24('0x2e'));return _0x593fc8;});}});}function getAuth(_0x541c8c){return util[_0xcd24('0xe')](_0xcd24('0x2f'),new Buffer(_0x541c8c[_0xcd24('0x30')]+':X')[_0xcd24('0x31')]('base64'));}function request(_0x3d6708){logger[_0xcd24('0x32')](_0xcd24('0x33'),JSON['stringify'](_0x3d6708));return rp(_[_0xcd24('0x34')](_0x3d6708,{'method':_0xcd24('0x35'),'headers':headers,'json':!![]}));}function getTags(_0x5e2757,_0x3c8c01){var _0x464303=[];if(_0x5e2757&&_0x5e2757[_0xcd24('0x21')]>0x0){_0x464303=_[_0xcd24('0x36')](_0x5e2757,_0x3c8c01);}return _0x464303;}function getCustomFields(_0x8198fc,_0x4fcb04){var _0x48979d=[];var _0x3fcc11={'custom_fields':[]};if(_0x8198fc['length']>0x0){_['forEach'](_0x8198fc,function(_0x23da70){if(_[_0xcd24('0x37')](['string',_0xcd24('0x38')],_0x23da70[_0xcd24('0x39')])&&_0x23da70[_0xcd24('0x3a')]&&!_0x23da70['customField']){_0x3fcc11[_0x23da70[_0xcd24('0x3a')][_0xcd24('0x3b')]()]=_0x23da70[_0xcd24('0x3c')][_0xcd24('0x31')]();}else if(_['includes']([_0xcd24('0x3d'),_0xcd24('0x38')],_0x23da70['type'])&&_0x23da70[_0xcd24('0x3e')]&&_0x23da70['customField']){_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70['idField'],'value':_0x23da70['content'][_0xcd24('0x31')]()});}else if(_0x23da70[_0xcd24('0x39')]===_0xcd24('0x40')&&_0x23da70['variableName']&&_0x23da70[_0xcd24('0x3e')]&&_0x23da70[_0xcd24('0x41')]){_0x4fcb04[_0x23da70[_0xcd24('0x42')]]&&_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70[_0xcd24('0x3e')],'value':_0x4fcb04[_0x23da70[_0xcd24('0x42')]][_0xcd24('0x31')]()});}else if(_0x23da70[_0xcd24('0x39')]===_0xcd24('0x43')&&_0x23da70[_0xcd24('0x44')]&&_0x23da70[_0xcd24('0x44')][_0xcd24('0x15')]&&_0x23da70['idField']&&_0x23da70[_0xcd24('0x41')]){_0x4fcb04[_0x23da70[_0xcd24('0x44')][_0xcd24('0x15')][_0xcd24('0x3b')]()]&&_0x3fcc11[_0xcd24('0x16')][_0xcd24('0x3f')]({'id':_0x23da70[_0xcd24('0x3e')],'value':_0x4fcb04[_0x23da70[_0xcd24('0x44')]['name'][_0xcd24('0x3b')]()][_0xcd24('0x31')]()});}});}return _0x3fcc11;}exports[_0xcd24('0x45')]=function(_0x465506,_0x2eb73b,_0x29e239,_0x23becb,_0x4d59a2,_0x4c40ac){var _0x59428c,_0x46b8b3;_0x4c40ac['remoteUri']=intUtil['stripTrailingSlash'](_0x4c40ac['remoteUri']);_0x4c40ac['serverUrl']=intUtil[_0xcd24('0x46')](_0x4c40ac[_0xcd24('0x47')]);if(_0x4d59a2&&_0x4d59a2[_0xcd24('0x48')]){logger[_0xcd24('0xb')]('[QUEUE]',_0xcd24('0x49'));_0x2eb73b[_0xcd24('0x4a')]=util[_0xcd24('0xe')](_0xcd24('0x4b'),_0x4c40ac[_0xcd24('0x47')],_0x2eb73b[_0xcd24('0x4c')],md5(_0x2eb73b[_0xcd24('0x4c')]));}else{_0x2eb73b[_0xcd24('0x4a')]='';}headers[_0xcd24('0x4d')]=getAuth(_0x4c40ac);return getUser(_0x4c40ac,_0x23becb[_0xcd24('0x25')])[_0xcd24('0x1d')](function(_0x327461){_0x59428c=_0x327461;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0x59428c['id']);return getEndUser(_0x4c40ac,_0x2eb73b[_0xcd24('0xf')],_0x2eb73b[_0xcd24('0x10')]);})[_0xcd24('0x1d')](function(_0x34638a){_0x46b8b3=_0x34638a;logger[_0xcd24('0xb')](_0xcd24('0x4f'),_0x46b8b3['id']);return getTicket(_0x4c40ac,_0x59428c,_0x46b8b3,_0x29e239,_0x2eb73b);})[_0xcd24('0x1d')](function(_0x8fa1cf){if(_0x8fa1cf&&_0x8fa1cf['id']){logger[_0xcd24('0xb')](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x8fa1cf['id']);logger[_0xcd24('0xb')]('[QUEUE]',_0xcd24('0x51'));emit(util['format'](_0xcd24('0x52'),_0x23becb[_0xcd24('0x15')]),_0xcd24('0x53'),{'uri':util[_0xcd24('0xe')](_0xcd24('0x54'),_0x4c40ac[_0xcd24('0x1b')],_0x8fa1cf['id'])});}})[_0xcd24('0x55')](function(_0x3936b0){logger['error'](_0xcd24('0x56'),JSON[_0xcd24('0x57')](_0x3936b0));});};exports[_0xcd24('0x58')]=function(_0x4859a8,_0x442d9b,_0x3d604a,_0x4e7891,_0x4107c7,_0x25d0fb,_0x3415ba){var _0x10970d,_0x546375;_0x25d0fb[_0xcd24('0x1b')]=intUtil['stripTrailingSlash'](_0x25d0fb['remoteUri']);_0x25d0fb[_0xcd24('0x47')]=intUtil[_0xcd24('0x46')](_0x25d0fb['serverUrl']);if(_0x3415ba&&_0x3415ba[_0xcd24('0x59')]&&_0x3415ba['recordingFormat']!=='none'){logger['info']('[OUTBOUND]',_0xcd24('0x49'));_0x442d9b['recordingURL']=util['format'](_0xcd24('0x4b'),_0x25d0fb[_0xcd24('0x47')],_0x442d9b[_0xcd24('0x4c')],md5(_0x442d9b[_0xcd24('0x4c')]));}headers[_0xcd24('0x4d')]=getAuth(_0x25d0fb);return getUser(_0x25d0fb,_0x4e7891[_0xcd24('0x25')])[_0xcd24('0x1d')](function(_0x416851){_0x10970d=_0x416851;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0x10970d['id']);return getEndUser(_0x25d0fb,_0x442d9b[_0xcd24('0x5a')],_0x442d9b[_0xcd24('0x5b')]);})['then'](function(_0x5a6829){_0x546375=_0x5a6829;logger[_0xcd24('0xb')](_0xcd24('0x4f'),_0x546375['id']);return getTicket(_0x25d0fb,_0x10970d,_0x546375,_0x3d604a,_0x442d9b);})[_0xcd24('0x1d')](function(_0x411873){if(_0x411873&&_0x411873['id']){logger[_0xcd24('0xb')](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x411873['id']);logger['info'](_0xcd24('0x5c'),_0xcd24('0x51'));emit(util[_0xcd24('0xe')](_0xcd24('0x52'),_0x4e7891[_0xcd24('0x15')]),_0xcd24('0x53'),{'uri':util[_0xcd24('0xe')]('%s/helpdesk/tickets/%d',_0x25d0fb[_0xcd24('0x1b')],_0x411873['id'])});}})[_0xcd24('0x55')](function(_0x188683){logger['error']('[OUTBOUND]',JSON[_0xcd24('0x57')](_0x188683));});};exports[_0xcd24('0x5d')]=function(_0xf6828b,_0x49eb59,_0x403da9,_0x342ab3,_0x478f12,_0x3bcf8e){var _0xd3d1f7,_0x1b4cf7;_0x3bcf8e[_0xcd24('0x1b')]=intUtil['stripTrailingSlash'](_0x3bcf8e[_0xcd24('0x1b')]);_0x3bcf8e[_0xcd24('0x47')]=intUtil['stripTrailingSlash'](_0x3bcf8e[_0xcd24('0x47')]);if(_0x478f12&&_0x478f12[_0xcd24('0x48')]){logger['info']('['+_0x49eb59[_0xcd24('0x5e')]['toUpperCase']()+']',_0xcd24('0x49'));_0x49eb59[_0xcd24('0x4a')]=util[_0xcd24('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3bcf8e[_0xcd24('0x47')],_0x49eb59['uniqueid'],md5(_0x49eb59[_0xcd24('0x4c')]));}else{_0x49eb59[_0xcd24('0x4a')]='';}headers[_0xcd24('0x4d')]=getAuth(_0x3bcf8e);return getUser(_0x3bcf8e,'')[_0xcd24('0x1d')](function(_0x11f4ae){_0xd3d1f7=_0x11f4ae;logger[_0xcd24('0xb')](_0xcd24('0x4e'),_0xd3d1f7['id']);return getEndUser(_0x3bcf8e,_0x49eb59[_0xcd24('0xf')],_0x49eb59[_0xcd24('0x10')]);})[_0xcd24('0x1d')](function(_0x4464a9){_0x1b4cf7=_0x4464a9;logger[_0xcd24('0xb')]('The\x20Enduser\x20ID\x20is:',_0x1b4cf7['id']);return getTicket(_0x3bcf8e,_0xd3d1f7,_0x1b4cf7,_0x403da9,_0x49eb59);})[_0xcd24('0x1d')](function(_0x493210){if(_0x493210){logger['info'](_0xcd24('0x1e'));logger[_0xcd24('0xb')](_0xcd24('0x50'),_0x493210['id']);}})[_0xcd24('0x55')](function(_0x525cc0){logger[_0xcd24('0x5f')]('['+_0x49eb59[_0xcd24('0x5e')][_0xcd24('0x60')]()+']',JSON[_0xcd24('0x57')](_0x525cc0));});};
\ No newline at end of file
index c200d42..7b34136 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a09=['Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','headers','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','Subjects','YYYY-MM-DDTHH:mm:ss','ticketId','task','/contacts/','trigger:browser:url','apiKey','stripTrailingSlash','remoteUri','serverUrl','username','outbound','destcalleridnum','calleridnum','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','Recording\x20is\x20enabled!','recordingURL','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','md5','moment','bluebird','ioredis','./util','../../../../config/logger','freshsales','redis','defaults','/api/selector/owners','info','Getting\x20admin\x20information','then','users','length','email','adminEmail','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','GET','Getting\x20user\x20list','agentEmail','userId','User\x20found:','message','&f=','find','contacts','format'];(function(_0x389088,_0x30b5cb){var _0x5aa817=function(_0x2d3b18){while(--_0x2d3b18){_0x389088['push'](_0x389088['shift']());}};_0x5aa817(++_0x30b5cb);}(_0x0a09,0x109));var _0x90a0=function(_0x10d34b,_0x4fef76){_0x10d34b=_0x10d34b-0x0;var _0x92b0bf=_0x0a09[_0x10d34b];return _0x92b0bf;};'use strict';var _=require(_0x90a0('0x0'));var rp=require(_0x90a0('0x1'));var md5=require(_0x90a0('0x2'));var util=require('util');var moment=require(_0x90a0('0x3'));var Promise=require(_0x90a0('0x4'));var Redis=require(_0x90a0('0x5'));var intUtil=require(_0x90a0('0x6'));var config=require('../../../../config/environment');var logger=require(_0x90a0('0x7'))(_0x90a0('0x8'));config[_0x90a0('0x9')]=_[_0x90a0('0xa')](config[_0x90a0('0x9')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x90a0('0x9')]));function getAdminId(_0x97de4b,_0x36ecf4,_0x4e7256,_0x3e4dd3){return new Promise(function(_0x487aa6,_0x29f30c){var _0x3d8391=![];var _0x40cfd7={'method':'GET','uri':_0x3e4dd3+_0x90a0('0xb'),'json':!![]};_0x40cfd7['headers']=_0x4e7256;logger[_0x90a0('0xc')](_0x90a0('0xd'));return rp(_0x40cfd7)[_0x90a0('0xe')](function(_0x462517){if(_0x462517){var _0x201f53=_0x462517[_0x90a0('0xf')];var _0x212ad6=null;for(_0x212ad6=0x0;_0x212ad6<_0x201f53[_0x90a0('0x10')];_0x212ad6++){if(_0x201f53[_0x212ad6][_0x90a0('0x11')]===_0x97de4b[_0x90a0('0x12')]){_0x97de4b[_0x90a0('0x13')]=_0x201f53[_0x212ad6]['id'];_0x3d8391=!![];}}if(_0x3d8391){logger['info'](_0x90a0('0x14'),_0x97de4b[_0x90a0('0x13')]);_0x487aa6(_0x97de4b);}else{_0x29f30c({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x29f30c({'statusCode':0x194,'message':_0x90a0('0x15')});}})[_0x90a0('0x16')](function(_0x3512c1){logger[_0x90a0('0x17')]('['+[_0x36ecf4[_0x90a0('0x18')]()]+']',_0x3512c1['message']);_0x29f30c(_0x3512c1);});});}function getUser(_0x5eca06,_0x4fc1df,_0x208e20){return function(_0x966b5b){return new Promise(function(_0x143677,_0x2bfb70){var _0x256440={'method':_0x90a0('0x19'),'uri':_0x208e20+_0x90a0('0xb'),'json':!![]};_0x256440['headers']=_0x4fc1df;logger[_0x90a0('0xc')](_0x90a0('0x1a'));return rp(_0x256440)[_0x90a0('0xe')](function(_0x41df1b){if(_0x41df1b){var _0xffc3f4=_0x41df1b[_0x90a0('0xf')];var _0x23f627=![];var _0x223146=null;if(_0x966b5b[_0x90a0('0x1b')]!==null){logger['info']('Getting\x20user\x20with\x20email',_0x966b5b['agentEmail']);_0x966b5b['userEmail']=_0x966b5b[_0x90a0('0x1b')];for(_0x223146=0x0;_0x223146<_0xffc3f4[_0x90a0('0x10')];_0x223146++){if(_0xffc3f4[_0x223146][_0x90a0('0x11')]===_0x966b5b[_0x90a0('0x1b')]){_0x23f627=!![];_0x966b5b[_0x90a0('0x1c')]=_0xffc3f4[_0x223146]['id'];logger['info'](_0x90a0('0x1d'),_0x966b5b[_0x90a0('0x1c')]);}}}if(!_0x23f627){logger['info']('Admin\x20selected');_0x966b5b['userEmail']=_0x966b5b[_0x90a0('0x12')];_0x966b5b[_0x90a0('0x1c')]=_0x966b5b[_0x90a0('0x13')];_0x23f627=!![];}if(_0x23f627){_0x143677(_0x966b5b);}else{_0x2bfb70({'statusCode':0x194,'message':_0x90a0('0x15')});}}else{_0x2bfb70({'statusCode':0x194,'message':_0x90a0('0x15')});}})[_0x90a0('0x16')](function(_0x151f4b){logger[_0x90a0('0x17')]('['+[_0x5eca06[_0x90a0('0x18')]()]+']',_0x151f4b[_0x90a0('0x1e')]);_0x2bfb70(_0x151f4b);});});};}function searchContact(_0x4f2f89,_0x225bb6,_0x1a0d5b,_0x17714e){return new Promise(function(_0x5b24b7,_0x5bfdca){var _0x7aad01={'method':_0x90a0('0x19'),'headers':_0x225bb6,'uri':_0x4f2f89+'/api/lookup?q='+_0x17714e+_0x90a0('0x1f')+_0x1a0d5b+'&entities=contact','json':!![]};rp(_0x7aad01)[_0x90a0('0xe')](function(_0x2a4339){var _0x24cf8f=_[_0x90a0('0x20')](_0x2a4339[_0x90a0('0x21')][_0x90a0('0x21')],[_0x1a0d5b,_0x17714e]);_0x5b24b7(_0x24cf8f);})[_0x90a0('0x16')](function(_0x82e9ad){_0x5bfdca(_0x82e9ad);});});}function getEndUser(_0x897d1b,_0x35faad,_0x191785){return function(_0x5dad1d){return new Promise(function(_0x5463c0,_0x153f41){logger[_0x90a0('0xc')](util[_0x90a0('0x22')](_0x90a0('0x23'),_0x5dad1d['contactNumber']));searchContact(_0x191785,_0x35faad,_0x90a0('0x24'),_0x5dad1d[_0x90a0('0x25')])['then'](function(_0x1cfee9){if(_0x1cfee9){_0x5dad1d[_0x90a0('0x26')]=_0x1cfee9['id'];logger[_0x90a0('0xc')](_0x90a0('0x27'),_0x5dad1d[_0x90a0('0x26')]);return _0x5463c0(_0x5dad1d);}searchContact(_0x191785,_0x35faad,_0x90a0('0x28'),_0x5dad1d[_0x90a0('0x25')])['then'](function(_0x2f5ffd){if(_0x2f5ffd){_0x5dad1d['endUserId']=_0x2f5ffd['id'];logger[_0x90a0('0xc')](_0x90a0('0x29'),_0x5dad1d[_0x90a0('0x26')]);return _0x5463c0(_0x5dad1d);}createEndUser(_0x5dad1d,_0x897d1b,_0x35faad,_0x191785)[_0x90a0('0xe')](function(_0x1bd929){logger[_0x90a0('0xc')](_0x90a0('0x2a'),_0x1bd929[_0x90a0('0x26')]);return _0x5463c0(_0x1bd929);});});})['catch'](function(_0x2ff938){_0x153f41(_0x2ff938);});});};}function createEndUser(_0x1e0033,_0x4fc2b0,_0xc9b90b,_0x506b45){return new Promise(function(_0xc058c3,_0x1ae333){var _0x100a45=moment();var _0x3e296e={'method':_0x90a0('0x2b'),'uri':_0x506b45+'/api/contacts','body':{'contact':{'last_name':_0x1e0033[_0x90a0('0x25')],'work_number':_0x1e0033[_0x90a0('0x25')],'mobile_number':_0x1e0033[_0x90a0('0x25')],'owner_id':_0x1e0033['userId'],'created_at':_0x100a45['format']('YYYY-MM-DDTHH:mm:ss')}},'json':!![]};_0x3e296e[_0x90a0('0x2c')]=_0xc9b90b;logger[_0x90a0('0xc')](_0x90a0('0x2d'));return rp(_0x3e296e)[_0x90a0('0xe')](function(_0x259944){_0x1e0033[_0x90a0('0x26')]=_0x259944[_0x90a0('0x2e')]['id'];_0xc058c3(_0x1e0033);})[_0x90a0('0x16')](function(_0x24967a){logger[_0x90a0('0x17')]('['+[_0x4fc2b0[_0x90a0('0x18')]()]+']',_0x24967a[_0x90a0('0x1e')]);_0x1ae333(_0x24967a[_0x90a0('0x1e')]);});});}function getTicket(_0xc1ed38,_0x457bf3,_0x56bdf6,_0x2f75dd,_0x52b996){return function(_0x5bb9ca){logger[_0x90a0('0xc')](_0x90a0('0x2f'));return new Promise(function(_0x405c99,_0x556143){var _0x3938d5=moment();var _0x220346={'method':_0x90a0('0x2b'),'uri':_0x56bdf6+_0x90a0('0x30'),'body':{'title':intUtil['getString'](_0x2f75dd[_0x90a0('0x31')],_0x52b996,'\x20'),'description':intUtil['getString'](_0x2f75dd['Descriptions'],_0x52b996,'\x0a'),'owner_id':_0x5bb9ca['userId'],'creater_id':_0x5bb9ca[_0x90a0('0x13')],'targetable_id':_0x5bb9ca[_0x90a0('0x26')],'targetable_type':'Contact','created_at':_0x3938d5[_0x90a0('0x22')](_0x90a0('0x32')),'due_date':_0x3938d5['add'](0x1e,'m')['format'](_0x90a0('0x32'))},'json':!![]};_0x220346[_0x90a0('0x2c')]=_0x457bf3;return rp(_0x220346)['then'](function(_0x3d96ce){_0x5bb9ca[_0x90a0('0x33')]=_0x3d96ce[_0x90a0('0x34')]['id'];logger[_0x90a0('0xc')]('Task\x20created:',_0x5bb9ca['ticketId']);_0x405c99(_0x5bb9ca);})[_0x90a0('0x16')](function(_0x6f8037){logger[_0x90a0('0x17')]('['+[_0xc1ed38[_0x90a0('0x18')]()]+']',_0x6f8037[_0x90a0('0x1e')]);_0x556143(_0x6f8037[_0x90a0('0x1e')]);});});};}function emit(_0x4662a7,_0x45d201,_0x1d40d1){var _0x3ae42b={'uri':_0x4662a7+_0x90a0('0x35')+_0x1d40d1};io['to'](util[_0x90a0('0x22')]('user:%s',_0x45d201))['emit'](_0x90a0('0x36'),_0x3ae42b);}exports['cs']=function(_0x49f4e3,_0x329e3a,_0x485ac4,_0x29691c,_0x3e6918,_0x27ef8f,_0x1df22b,_0x4a1389){var _0x2ca5d2={};var _0xe1f6d7={'Authorization':'Token\x20token='+_0x27ef8f[_0x90a0('0x37')]};_0x27ef8f['remoteUri']=intUtil[_0x90a0('0x38')](_0x27ef8f[_0x90a0('0x39')]);_0x27ef8f[_0x90a0('0x3a')]=intUtil['stripTrailingSlash'](_0x27ef8f[_0x90a0('0x3a')]);var _0x1c596f=_0x27ef8f[_0x90a0('0x39')];_0x2ca5d2[_0x90a0('0x12')]=_0x27ef8f[_0x90a0('0x3b')];_0x2ca5d2['contactNumber']=_0x4a1389['toLowerCase']()===_0x90a0('0x3c')?_0x329e3a[_0x90a0('0x3d')]:_0x329e3a[_0x90a0('0x3e')];_0x2ca5d2['callDirection']=_0x4a1389===_0x90a0('0x3f')||_0x4a1389==='unmanaged'?_0x90a0('0x3f'):_0x90a0('0x3c');if(_0x29691c){_0x2ca5d2['agentEmail']=_0x29691c['email'];}var _0x3bff17=util[_0x90a0('0x22')](_0x90a0('0x40'),_0x27ef8f[_0x90a0('0x3a')],_0x329e3a[_0x90a0('0x41')],md5(_0x329e3a[_0x90a0('0x41')]));if(_0x3e6918&&_0x3e6918[_0x90a0('0x42')]){logger[_0x90a0('0xc')]('[QUEUE]',_0x90a0('0x43'));_0x329e3a[_0x90a0('0x44')]=_0x3bff17;}else if(_0x1df22b&&_0x1df22b['recordingFormat']&&_0x1df22b['recordingFormat']!==_0x90a0('0x45')){logger[_0x90a0('0xc')](_0x90a0('0x46'),_0x90a0('0x43'));_0x329e3a[_0x90a0('0x44')]=_0x3bff17;}else{_0x329e3a[_0x90a0('0x44')]='';}return getAdminId(_0x2ca5d2,_0x4a1389,_0xe1f6d7,_0x1c596f)[_0x90a0('0xe')](getUser(_0x4a1389,_0xe1f6d7,_0x1c596f))[_0x90a0('0xe')](getEndUser(_0x4a1389,_0xe1f6d7,_0x1c596f))[_0x90a0('0xe')](getTicket(_0x4a1389,_0xe1f6d7,_0x1c596f,_0x485ac4,_0x329e3a))['then'](function(_0x104a87){logger[_0x90a0('0xc')](util['format'](_0x90a0('0x47'),_0x104a87['ticketId']));if(_0x4a1389!=='unmanaged'){logger[_0x90a0('0xc')]('['+[_0x4a1389[_0x90a0('0x18')]()]+']',_0x90a0('0x48'));emit(_0x1c596f,_0x29691c['name'],_0x104a87[_0x90a0('0x26')]);}})[_0x90a0('0x16')](function(_0x41bfaf){logger[_0x90a0('0x17')]('['+[_0x4a1389[_0x90a0('0x18')]()]+_0x90a0('0x49'),util[_0x90a0('0x4a')](_0x41bfaf,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xea9f=['headers','Getting\x20user\x20list','agentEmail','Getting\x20user\x20with\x20email','userId','User\x20found:','Admin\x20selected','userEmail','catch','/api/lookup?q=','&f=','&entities=contact','find','contacts','format','Searching\x20contact\x20with\x20phone\x20%s','contactNumber','mobile_number','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','/api/contacts','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','/api/tasks','getString','Subjects','Descriptions','Contact','add','ticketId','/contacts/','user:%s','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','destcalleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','util','moment','bluebird','ioredis','./util','../../../../config/environment','freshsales','redis','localhost','socket.io-emitter','GET','/api/selector/owners','Getting\x20admin\x20information','then','users','length','email','adminEmail','info','Admin\x20found:','adminId','Requested\x20Resource\x20not\x20Found','error','toUpperCase','message'];(function(_0x1211a4,_0x3a8c92){var _0x1a3325=function(_0x507f3b){while(--_0x507f3b){_0x1211a4['push'](_0x1211a4['shift']());}};_0x1a3325(++_0x3a8c92);}(_0xea9f,0x199));var _0xfea9=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0xea9f[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0xfea9('0x0'));var rp=require('request-promise');var md5=require('md5');var util=require(_0xfea9('0x1'));var moment=require(_0xfea9('0x2'));var Promise=require(_0xfea9('0x3'));var Redis=require(_0xfea9('0x4'));var intUtil=require(_0xfea9('0x5'));var config=require(_0xfea9('0x6'));var logger=require('../../../../config/logger')(_0xfea9('0x7'));config[_0xfea9('0x8')]=_['defaults'](config[_0xfea9('0x8')],{'host':_0xfea9('0x9'),'port':0x18eb});var io=require(_0xfea9('0xa'))(new Redis(config[_0xfea9('0x8')]));function getAdminId(_0x1c72ea,_0x20a1d0,_0x168a5a,_0x175fe4){return new Promise(function(_0x24106b,_0x130283){var _0x1243f5=![];var _0x54c896={'method':_0xfea9('0xb'),'uri':_0x175fe4+_0xfea9('0xc'),'json':!![]};_0x54c896['headers']=_0x168a5a;logger['info'](_0xfea9('0xd'));return rp(_0x54c896)[_0xfea9('0xe')](function(_0x8f0618){if(_0x8f0618){var _0x956efb=_0x8f0618[_0xfea9('0xf')];var _0x1f04c7=null;for(_0x1f04c7=0x0;_0x1f04c7<_0x956efb[_0xfea9('0x10')];_0x1f04c7++){if(_0x956efb[_0x1f04c7][_0xfea9('0x11')]===_0x1c72ea[_0xfea9('0x12')]){_0x1c72ea['adminId']=_0x956efb[_0x1f04c7]['id'];_0x1243f5=!![];}}if(_0x1243f5){logger[_0xfea9('0x13')](_0xfea9('0x14'),_0x1c72ea[_0xfea9('0x15')]);_0x24106b(_0x1c72ea);}else{_0x130283({'statusCode':0x194,'message':_0xfea9('0x16')});}}else{_0x130283({'statusCode':0x194,'message':_0xfea9('0x16')});}})['catch'](function(_0x2093f9){logger[_0xfea9('0x17')]('['+[_0x20a1d0[_0xfea9('0x18')]()]+']',_0x2093f9[_0xfea9('0x19')]);_0x130283(_0x2093f9);});});}function getUser(_0x6b6eec,_0x7bd3da,_0x49340c){return function(_0x203c9e){return new Promise(function(_0x239560,_0x413a00){var _0x1a4602={'method':_0xfea9('0xb'),'uri':_0x49340c+'/api/selector/owners','json':!![]};_0x1a4602[_0xfea9('0x1a')]=_0x7bd3da;logger['info'](_0xfea9('0x1b'));return rp(_0x1a4602)[_0xfea9('0xe')](function(_0x410f7d){if(_0x410f7d){var _0x2fb600=_0x410f7d['users'];var _0x373b72=![];var _0x560c4a=null;if(_0x203c9e[_0xfea9('0x1c')]!==null){logger[_0xfea9('0x13')](_0xfea9('0x1d'),_0x203c9e[_0xfea9('0x1c')]);_0x203c9e['userEmail']=_0x203c9e[_0xfea9('0x1c')];for(_0x560c4a=0x0;_0x560c4a<_0x2fb600[_0xfea9('0x10')];_0x560c4a++){if(_0x2fb600[_0x560c4a][_0xfea9('0x11')]===_0x203c9e[_0xfea9('0x1c')]){_0x373b72=!![];_0x203c9e[_0xfea9('0x1e')]=_0x2fb600[_0x560c4a]['id'];logger['info'](_0xfea9('0x1f'),_0x203c9e[_0xfea9('0x1e')]);}}}if(!_0x373b72){logger[_0xfea9('0x13')](_0xfea9('0x20'));_0x203c9e[_0xfea9('0x21')]=_0x203c9e['adminEmail'];_0x203c9e[_0xfea9('0x1e')]=_0x203c9e[_0xfea9('0x15')];_0x373b72=!![];}if(_0x373b72){_0x239560(_0x203c9e);}else{_0x413a00({'statusCode':0x194,'message':_0xfea9('0x16')});}}else{_0x413a00({'statusCode':0x194,'message':_0xfea9('0x16')});}})[_0xfea9('0x22')](function(_0x2472f6){logger[_0xfea9('0x17')]('['+[_0x6b6eec['toUpperCase']()]+']',_0x2472f6['message']);_0x413a00(_0x2472f6);});});};}function searchContact(_0x166067,_0xfcaed1,_0x24b151,_0x2f2ac5){return new Promise(function(_0x29a8cc,_0x3500e4){var _0x3ef13b={'method':_0xfea9('0xb'),'headers':_0xfcaed1,'uri':_0x166067+_0xfea9('0x23')+_0x2f2ac5+_0xfea9('0x24')+_0x24b151+_0xfea9('0x25'),'json':!![]};rp(_0x3ef13b)[_0xfea9('0xe')](function(_0x2494a8){var _0x423a5c=_[_0xfea9('0x26')](_0x2494a8[_0xfea9('0x27')][_0xfea9('0x27')],[_0x24b151,_0x2f2ac5]);_0x29a8cc(_0x423a5c);})[_0xfea9('0x22')](function(_0x3658f8){_0x3500e4(_0x3658f8);});});}function getEndUser(_0x565a95,_0x44f89f,_0x2cf15d){return function(_0x80a53f){return new Promise(function(_0x48bcd2,_0x351b57){logger['info'](util[_0xfea9('0x28')](_0xfea9('0x29'),_0x80a53f[_0xfea9('0x2a')]));searchContact(_0x2cf15d,_0x44f89f,_0xfea9('0x2b'),_0x80a53f[_0xfea9('0x2a')])['then'](function(_0x3fd03d){if(_0x3fd03d){_0x80a53f[_0xfea9('0x2c')]=_0x3fd03d['id'];logger[_0xfea9('0x13')](_0xfea9('0x2d'),_0x80a53f[_0xfea9('0x2c')]);return _0x48bcd2(_0x80a53f);}searchContact(_0x2cf15d,_0x44f89f,_0xfea9('0x2e'),_0x80a53f[_0xfea9('0x2a')])[_0xfea9('0xe')](function(_0x4d9537){if(_0x4d9537){_0x80a53f[_0xfea9('0x2c')]=_0x4d9537['id'];logger[_0xfea9('0x13')](_0xfea9('0x2f'),_0x80a53f[_0xfea9('0x2c')]);return _0x48bcd2(_0x80a53f);}createEndUser(_0x80a53f,_0x565a95,_0x44f89f,_0x2cf15d)['then'](function(_0x341613){logger[_0xfea9('0x13')](_0xfea9('0x30'),_0x341613[_0xfea9('0x2c')]);return _0x48bcd2(_0x341613);});});})[_0xfea9('0x22')](function(_0x1bd79d){_0x351b57(_0x1bd79d);});});};}function createEndUser(_0x13cc7b,_0x2f2ff4,_0x52dfc6,_0xa8bbfc){return new Promise(function(_0x1efacb,_0x2fc3d1){var _0x4134a3=moment();var _0x519aa0={'method':_0xfea9('0x31'),'uri':_0xa8bbfc+_0xfea9('0x32'),'body':{'contact':{'last_name':_0x13cc7b[_0xfea9('0x2a')],'work_number':_0x13cc7b[_0xfea9('0x2a')],'mobile_number':_0x13cc7b[_0xfea9('0x2a')],'owner_id':_0x13cc7b[_0xfea9('0x1e')],'created_at':_0x4134a3[_0xfea9('0x28')](_0xfea9('0x33'))}},'json':!![]};_0x519aa0['headers']=_0x52dfc6;logger[_0xfea9('0x13')](_0xfea9('0x34'));return rp(_0x519aa0)[_0xfea9('0xe')](function(_0x45f48f){_0x13cc7b['endUserId']=_0x45f48f[_0xfea9('0x35')]['id'];_0x1efacb(_0x13cc7b);})[_0xfea9('0x22')](function(_0x5b2c05){logger[_0xfea9('0x17')]('['+[_0x2f2ff4[_0xfea9('0x18')]()]+']',_0x5b2c05[_0xfea9('0x19')]);_0x2fc3d1(_0x5b2c05[_0xfea9('0x19')]);});});}function getTicket(_0x593b16,_0x2a521f,_0x591bfa,_0x8b1e46,_0x2e94b4){return function(_0x22a5eb){logger[_0xfea9('0x13')]('Creating\x20new\x20task');return new Promise(function(_0x4ddb4c,_0x325e20){var _0x436425=moment();var _0x3df937={'method':_0xfea9('0x31'),'uri':_0x591bfa+_0xfea9('0x36'),'body':{'title':intUtil[_0xfea9('0x37')](_0x8b1e46[_0xfea9('0x38')],_0x2e94b4,'\x20'),'description':intUtil[_0xfea9('0x37')](_0x8b1e46[_0xfea9('0x39')],_0x2e94b4,'\x0a'),'owner_id':_0x22a5eb['userId'],'creater_id':_0x22a5eb[_0xfea9('0x15')],'targetable_id':_0x22a5eb[_0xfea9('0x2c')],'targetable_type':_0xfea9('0x3a'),'created_at':_0x436425[_0xfea9('0x28')](_0xfea9('0x33')),'due_date':_0x436425[_0xfea9('0x3b')](0x1e,'m')[_0xfea9('0x28')](_0xfea9('0x33'))},'json':!![]};_0x3df937['headers']=_0x2a521f;return rp(_0x3df937)[_0xfea9('0xe')](function(_0x8d1b91){_0x22a5eb[_0xfea9('0x3c')]=_0x8d1b91['task']['id'];logger['info']('Task\x20created:',_0x22a5eb['ticketId']);_0x4ddb4c(_0x22a5eb);})[_0xfea9('0x22')](function(_0x1b825d){logger[_0xfea9('0x17')]('['+[_0x593b16[_0xfea9('0x18')]()]+']',_0x1b825d['message']);_0x325e20(_0x1b825d[_0xfea9('0x19')]);});});};}function emit(_0x47085d,_0x5ed89e,_0x1e40ae){var _0x28cd03={'uri':_0x47085d+_0xfea9('0x3d')+_0x1e40ae};io['to'](util[_0xfea9('0x28')](_0xfea9('0x3e'),_0x5ed89e))['emit']('trigger:browser:url',_0x28cd03);}exports['cs']=function(_0x127aa6,_0x158f6e,_0x8804d6,_0x1c0887,_0x388da4,_0x2798c9,_0x2d9bc4,_0x5c4ffd){var _0x122ab9={};var _0x1a9fb2={'Authorization':_0xfea9('0x3f')+_0x2798c9[_0xfea9('0x40')]};_0x2798c9[_0xfea9('0x41')]=intUtil[_0xfea9('0x42')](_0x2798c9[_0xfea9('0x41')]);_0x2798c9[_0xfea9('0x43')]=intUtil[_0xfea9('0x42')](_0x2798c9[_0xfea9('0x43')]);var _0x532734=_0x2798c9[_0xfea9('0x41')];_0x122ab9['adminEmail']=_0x2798c9[_0xfea9('0x44')];_0x122ab9[_0xfea9('0x2a')]=_0x5c4ffd[_0xfea9('0x45')]()===_0xfea9('0x46')?_0x158f6e[_0xfea9('0x47')]:_0x158f6e['calleridnum'];_0x122ab9[_0xfea9('0x48')]=_0x5c4ffd===_0xfea9('0x49')||_0x5c4ffd===_0xfea9('0x4a')?_0xfea9('0x49'):'outbound';if(_0x1c0887){_0x122ab9[_0xfea9('0x1c')]=_0x1c0887[_0xfea9('0x11')];}var _0x105647=util[_0xfea9('0x28')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2798c9[_0xfea9('0x43')],_0x158f6e['uniqueid'],md5(_0x158f6e[_0xfea9('0x4b')]));if(_0x388da4&&_0x388da4[_0xfea9('0x4c')]){logger[_0xfea9('0x13')](_0xfea9('0x4d'),_0xfea9('0x4e'));_0x158f6e[_0xfea9('0x4f')]=_0x105647;}else if(_0x2d9bc4&&_0x2d9bc4[_0xfea9('0x50')]&&_0x2d9bc4[_0xfea9('0x50')]!==_0xfea9('0x51')){logger[_0xfea9('0x13')](_0xfea9('0x52'),_0xfea9('0x4e'));_0x158f6e[_0xfea9('0x4f')]=_0x105647;}else{_0x158f6e[_0xfea9('0x4f')]='';}return getAdminId(_0x122ab9,_0x5c4ffd,_0x1a9fb2,_0x532734)[_0xfea9('0xe')](getUser(_0x5c4ffd,_0x1a9fb2,_0x532734))['then'](getEndUser(_0x5c4ffd,_0x1a9fb2,_0x532734))[_0xfea9('0xe')](getTicket(_0x5c4ffd,_0x1a9fb2,_0x532734,_0x8804d6,_0x158f6e))['then'](function(_0x2ccbb5){logger[_0xfea9('0x13')](util['format'](_0xfea9('0x53'),_0x2ccbb5['ticketId']));if(_0x5c4ffd!==_0xfea9('0x4a')){logger[_0xfea9('0x13')]('['+[_0x5c4ffd[_0xfea9('0x18')]()]+']',_0xfea9('0x54'));emit(_0x532734,_0x1c0887['name'],_0x2ccbb5[_0xfea9('0x2c')]);}})['catch'](function(_0xc1c5f1){logger[_0xfea9('0x17')]('['+[_0x5c4ffd[_0xfea9('0x18')]()]+_0xfea9('0x55'),util[_0xfea9('0x56')](_0xc1c5f1,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 498a6fb..0eed9ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae87=['./zoho','./desk','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','servicenow','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','outbound','log','EVENT\x20UNKNOWN','unmanaged','unknown\x20integration','../../../../config/logger','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','%s\x20account\x20#%s\x20not\x20found','lodash','util','./zendesk','./sugarcrm','./freshdesk'];(function(_0x5382fc,_0x4f4955){var _0x3d2daf=function(_0x3d0081){while(--_0x3d0081){_0x5382fc['push'](_0x5382fc['shift']());}};_0x3d2daf(++_0x4f4955);}(_0xae87,0xd3));var _0x7ae8=function(_0xb24fad,_0xd58756){_0xb24fad=_0xb24fad-0x0;var _0x173226=_0xae87[_0xb24fad];return _0x173226;};'use strict';var _=require(_0x7ae8('0x0'));var util=require(_0x7ae8('0x1'));var zendesk=require(_0x7ae8('0x2'));var salesforce=require('./salesforce');var sugarcrm=require(_0x7ae8('0x3'));var freshdesk=require(_0x7ae8('0x4'));var zoho=require(_0x7ae8('0x5'));var desk=require(_0x7ae8('0x6'));var vtiger=require('./vtiger');var servicenow=require('./servicenow');var dynamics365=require(_0x7ae8('0x7'));var freshsales=require('./freshsales');var integrations=[_0x7ae8('0x8'),_0x7ae8('0x9'),_0x7ae8('0xa'),_0x7ae8('0xb'),_0x7ae8('0xc'),_0x7ae8('0xd'),_0x7ae8('0xe'),_0x7ae8('0xf'),'freshsales',_0x7ae8('0x10')];exports['exec']=function(_0x15fd8a,_0x4b9bf7,_0x74b85c,_0x4a19d1,_0x3a9164,_0x54e8ed){if(_0x74b85c){if(_[_0x7ae8('0x11')](integrations,_0x15fd8a[_0x7ae8('0x12')]['toLowerCase']())){try{var _0x4a1651=null;var _0x516e8b='';var _0x103ab4=_0x74b85c[_0x15fd8a['data1'][_0x7ae8('0x13')]()];if(_0x103ab4){var _0x4cbcd4=_0x103ab4[_0x15fd8a[_0x7ae8('0x14')]];if(_0x4cbcd4){var _0x5bd93a=_[_0x7ae8('0x15')](_0x4cbcd4[_0x7ae8('0x16')],{'id':parseInt(_0x15fd8a[_0x7ae8('0x17')],0xa)});if(_0x5bd93a){if(_0x4a19d1){if(_0x3a9164&&_0x4b9bf7['queue']){_0x516e8b=_0x7ae8('0x18');}else if(_0x4b9bf7['routeId']){_0x516e8b=_0x7ae8('0x19');}else{console[_0x7ae8('0x1a')](_0x7ae8('0x1b'),_0x4b9bf7);}}else{_0x516e8b=_0x7ae8('0x1c');}switch(_0x15fd8a[_0x7ae8('0x12')]['toLowerCase']()){case _0x7ae8('0x8'):zendesk[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0x9'):salesforce[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0xa'):sugarcrm[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0xb'):freshdesk[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0xc'):zoho[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0xd'):desk[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case _0x7ae8('0xe'):vtiger[_0x516e8b](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed);break;case'freshsales':freshsales['cs'](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed,_0x516e8b);break;case _0x7ae8('0x10'):servicenow['cs'](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed,_0x516e8b);break;case'dynamics365':dynamics365['cs'](_0x15fd8a,_0x4b9bf7,_0x5bd93a,_0x4a19d1,_0x3a9164,_0x4cbcd4,_0x54e8ed,_0x516e8b);break;default:console['log'](_0x7ae8('0x1d'));}}else{_0x4a1651=require(_0x7ae8('0x1e'))(_0x15fd8a['data1'][_0x7ae8('0x13')]());_0x4a1651[_0x7ae8('0x1f')](_0x7ae8('0x20'),util[_0x7ae8('0x21')](_0x7ae8('0x22'),_0x15fd8a[_0x7ae8('0x12')][_0x7ae8('0x13')](),_0x15fd8a['data3']));}}else{_0x4a1651=require('../../../../config/logger')(_0x15fd8a[_0x7ae8('0x12')][_0x7ae8('0x13')]());_0x4a1651[_0x7ae8('0x1f')](_0x7ae8('0x20'),util[_0x7ae8('0x21')](_0x7ae8('0x23'),_0x15fd8a['data1'][_0x7ae8('0x13')](),_0x15fd8a[_0x7ae8('0x14')]));}}else{}}catch(_0x4fa143){console[_0x7ae8('0x1f')](_0x4fa143);}}}};
\ No newline at end of file
+var _0x4421=['./sugarcrm','./freshdesk','./zoho','./desk','./vtiger','./servicenow','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','dynamics365','freshsales','exec','includes','data1','toLowerCase','data2','Configurations','queue','routeId','outbound','log','EVENT\x20UNKNOWN','vtiger','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','data3','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','util','./zendesk','./salesforce'];(function(_0x4f4ab8,_0x50c1f5){var _0x27a5f3=function(_0x170318){while(--_0x170318){_0x4f4ab8['push'](_0x4f4ab8['shift']());}};_0x27a5f3(++_0x50c1f5);}(_0x4421,0xbb));var _0x1442=function(_0x110ad5,_0x2aed2a){_0x110ad5=_0x110ad5-0x0;var _0x401c36=_0x4421[_0x110ad5];return _0x401c36;};'use strict';var _=require('lodash');var util=require(_0x1442('0x0'));var zendesk=require(_0x1442('0x1'));var salesforce=require(_0x1442('0x2'));var sugarcrm=require(_0x1442('0x3'));var freshdesk=require(_0x1442('0x4'));var zoho=require(_0x1442('0x5'));var desk=require(_0x1442('0x6'));var vtiger=require(_0x1442('0x7'));var servicenow=require(_0x1442('0x8'));var dynamics365=require(_0x1442('0x9'));var freshsales=require('./freshsales');var integrations=[_0x1442('0xa'),_0x1442('0xb'),_0x1442('0xc'),_0x1442('0xd'),_0x1442('0xe'),_0x1442('0xf'),'vtiger',_0x1442('0x10'),_0x1442('0x11'),'servicenow'];exports[_0x1442('0x12')]=function(_0x42460c,_0xe2b55d,_0x55e5d2,_0x3e290a,_0x35c065,_0x3adda9){if(_0x55e5d2){if(_[_0x1442('0x13')](integrations,_0x42460c[_0x1442('0x14')]['toLowerCase']())){try{var _0x123174=null;var _0x5a04ee='';var _0x5bbc41=_0x55e5d2[_0x42460c[_0x1442('0x14')][_0x1442('0x15')]()];if(_0x5bbc41){var _0x4af46b=_0x5bbc41[_0x42460c[_0x1442('0x16')]];if(_0x4af46b){var _0x4f29dd=_['find'](_0x4af46b[_0x1442('0x17')],{'id':parseInt(_0x42460c['data3'],0xa)});if(_0x4f29dd){if(_0x3e290a){if(_0x35c065&&_0xe2b55d[_0x1442('0x18')]){_0x5a04ee=_0x1442('0x18');}else if(_0xe2b55d[_0x1442('0x19')]){_0x5a04ee=_0x1442('0x1a');}else{console[_0x1442('0x1b')](_0x1442('0x1c'),_0xe2b55d);}}else{_0x5a04ee='unmanaged';}switch(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]()){case _0x1442('0xa'):zendesk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'salesforce':salesforce[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xc'):sugarcrm[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'freshdesk':freshdesk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xe'):zoho[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0xf'):desk[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case _0x1442('0x1d'):vtiger[_0x5a04ee](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9);break;case'freshsales':freshsales['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;case'servicenow':servicenow['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;case _0x1442('0x10'):dynamics365['cs'](_0x42460c,_0xe2b55d,_0x4f29dd,_0x3e290a,_0x35c065,_0x4af46b,_0x3adda9,_0x5a04ee);break;default:console['log'](_0x1442('0x1e'));}}else{_0x123174=require('../../../../config/logger')(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]());_0x123174[_0x1442('0x1f')](_0x1442('0x20'),util[_0x1442('0x21')](_0x1442('0x22'),_0x42460c['data1'][_0x1442('0x15')](),_0x42460c[_0x1442('0x23')]));}}else{_0x123174=require(_0x1442('0x24'))(_0x42460c[_0x1442('0x14')][_0x1442('0x15')]());_0x123174[_0x1442('0x1f')](_0x1442('0x20'),util[_0x1442('0x21')](_0x1442('0x25'),_0x42460c['data1'][_0x1442('0x15')](),_0x42460c[_0x1442('0x16')]));}}else{}}catch(_0x5aeb88){console[_0x1442('0x1f')](_0x5aeb88);}}}};
\ No newline at end of file
index 0a6c3bb..a323964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc605=['clientId','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','remoteUri','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','Fields','[QUEUE]\x20Ticket\x20%s\x20created','trigger:salesforce:display','user:%s','%s/%s/e','instanceUrl','catch','outbound','recordingFormat','[OUTBOUND]','destcalleridname','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','trigger:browser:url','Salesforce\x20account\x20type\x20not\x20recognized','error','lastevent','toUpperCase',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','ioredis','../../../../config/environment','defaults','redis','localhost','socket.io-emitter','assign','Subjects','getString','Descriptions','ticketType','Task','ActivityDate','utc','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','Case','ContactId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','User','execute','then','find','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','additionalSearchContact','merge','$or','length','cloneDeep','additionalSearchLead','account_contact_lead','additionalSearchAccount','Account','Contact','Lead','first','attributes','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','<unknown>','Caller\x20-\x20%s','LastName','format','Company','No\x20Company','upperFirst','forEach','includes','string','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','password','securityToken','https://login.salesforce.com'];(function(_0x217c17,_0x7f93e3){var _0x2c1f1d=function(_0x5d76e5){while(--_0x5d76e5){_0x217c17['push'](_0x217c17['shift']());}};_0x2c1f1d(++_0x7f93e3);}(_0xc605,0x1a6));var _0x5c60=function(_0x3f59c6,_0x335cb1){_0x3f59c6=_0x3f59c6-0x0;var _0x7f9a55=_0xc605[_0x3f59c6];return _0x7f9a55;};'use strict';var _=require(_0x5c60('0x0'));var rp=require(_0x5c60('0x1'));var moment=require(_0x5c60('0x2'));var BPromise=require(_0x5c60('0x3'));var md5=require(_0x5c60('0x4'));var jsforce=require(_0x5c60('0x5'));var util=require('util');var Redis=require(_0x5c60('0x6'));var intUtil=require('./util');var config=require(_0x5c60('0x7'));var logger=require('../../../../config/logger')('salesforce');config['redis']=_[_0x5c60('0x8')](config[_0x5c60('0x9')],{'host':_0x5c60('0xa'),'port':0x18eb});var io=require(_0x5c60('0xb'))(new Redis(config[_0x5c60('0x9')]));function emit(_0x1a0ac9,_0x23ef58,_0x1459b8){io['to'](_0x1a0ac9)['emit'](_0x23ef58,_0x1459b8);}function getTicket(_0x5a9ba2,_0x1e24b8,_0x285df9,_0x21a54e,_0x5e4721,_0x535a33,_0x7a0bd5,_0x394c19){var _0x3285a3=Object[_0x5c60('0xc')]({},{'OwnerId':_0x1e24b8['id'],'Subject':intUtil['getString'](_0x21a54e[_0x5c60('0xd')],_0x5e4721,'\x20'),'Description':intUtil[_0x5c60('0xe')](_0x21a54e[_0x5c60('0xf')],_0x5e4721,'\x0a')},getCustomFields(_0x535a33,_0x5e4721));if(_0x285df9){if(_0x21a54e[_0x5c60('0x10')]===_0x5c60('0x11')){_0x3285a3[_0x5c60('0x12')]=moment[_0x5c60('0x13')]();_0x3285a3[_0x5c60('0x14')]=![];_0x3285a3[_0x5c60('0x15')]=![];if(_0x285df9[_0x5c60('0x16')]===_0x5c60('0x17')||_0x285df9[_0x5c60('0x16')]===_0x5c60('0x18')){_0x3285a3[_0x5c60('0x19')]=_0x285df9['id'];}else if(_0x285df9[_0x5c60('0x16')]===_0x5c60('0x1a')){_0x3285a3[_0x5c60('0x1b')]=_0x285df9['id'];}}else if(_0x21a54e[_0x5c60('0x10')]===_0x5c60('0x1c')){if(_0x285df9[_0x5c60('0x16')]===_0x5c60('0x17')){_0x3285a3[_0x5c60('0x1d')]=_0x285df9['id'];}else if(_0x285df9['endUserType']==='account'){_0x3285a3['AccountId']=_0x285df9['id'];}else if(_0x285df9['endUserType']==='lead'&&_0x21a54e[_0x5c60('0x1e')]){_0x3285a3[_0x21a54e[_0x5c60('0x1e')]]=_0x285df9['id'];}else{logger[_0x5c60('0x1f')](_0x5c60('0x20'));}}}return _0x7a0bd5[_0x5c60('0x21')](_0x21a54e[_0x5c60('0x10')])[_0x5c60('0x22')](_0x3285a3);}function getUser(_0x24a9f5,_0x5bb5c5,_0x3a292f){if(!_[_0x5c60('0x23')](_0x5bb5c5)&&intUtil[_0x5c60('0x24')](_0x5bb5c5)){var _0x3b383f={'Email':_0x5bb5c5};var _0x36c426={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x3a292f['sobject'](_0x5c60('0x25'))['find'](_0x3b383f,_0x36c426)[_0x5c60('0x26')]()[_0x5c60('0x27')](function(_0x3b3e55){if(_0x3b3e55['length']){var _0x107265=_[_0x5c60('0x28')](_0x3b3e55,function(_0xeaaa3e){return _0xeaaa3e[_0x5c60('0x29')]===_0x5bb5c5;});if(_0x107265){logger[_0x5c60('0x1f')](_0x5c60('0x2a'),_0x5bb5c5);return BPromise[_0x5c60('0x2b')]({'id':_0x107265['Id'],'name':_0x107265[_0x5c60('0x2c')]});}}else{logger['info'](_0x5c60('0x2d'),_0x5bb5c5);return _0x3a292f[_0x5c60('0x2e')]()['then'](function(_0x576be4){return BPromise['resolve']({'id':_0x576be4[_0x5c60('0x2f')],'name':_0x576be4[_0x5c60('0x30')]});});}});}else{logger[_0x5c60('0x1f')](_0x5c60('0x2d'),_0x5bb5c5);return _0x3a292f[_0x5c60('0x2e')]()[_0x5c60('0x27')](function(_0x5e5747){return BPromise[_0x5c60('0x2b')]({'id':_0x5e5747[_0x5c60('0x2f')],'name':_0x5e5747[_0x5c60('0x30')]});});}}function getEndUser(_0x53fdba,_0x2df4cb,_0x582824,_0x17c5f3,_0x2e8dbf){var _0x4ff2cc={'$or':{'Phone':_0x17c5f3}};var _0xae94a2={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x5c60('0x2b')]()[_0x5c60('0x27')](function(){logger[_0x5c60('0x1f')](_0x5c60('0x31'),_0x17c5f3,_0x2df4cb[_0x5c60('0x32')]);switch(_0x2df4cb[_0x5c60('0x32')]){case'contact_lead':var _0x33efa1=_['cloneDeep'](_0x4ff2cc);if(_0x2df4cb[_0x5c60('0x33')]){var _0x379d35={};_0x379d35[_0x2df4cb['additionalSearchContact']]=_0x17c5f3;_[_0x5c60('0x34')](_0x33efa1[_0x5c60('0x35')],_0x379d35);}return _0x2e8dbf[_0x5c60('0x21')]('Contact')[_0x5c60('0x28')](_0x33efa1,_0xae94a2)[_0x5c60('0x26')]()[_0x5c60('0x27')](function(_0x193567){if(_0x193567&&_0x193567[_0x5c60('0x36')]){return _0x193567;}else{var _0x39bd10=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb['additionalSearchLead']){var _0x534323={};_0x534323[_0x2df4cb[_0x5c60('0x38')]]=_0x17c5f3;_[_0x5c60('0x34')](_0x39bd10[_0x5c60('0x35')],_0x534323);}return _0x2e8dbf['sobject']('Lead')[_0x5c60('0x28')](_0x39bd10,_0xae94a2);}});case _0x5c60('0x39'):var _0x147e33=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb[_0x5c60('0x3a')]){var _0x379d35={};_0x379d35[_0x2df4cb[_0x5c60('0x3a')]]=_0x17c5f3;_[_0x5c60('0x34')](_0x147e33[_0x5c60('0x35')],_0x379d35);}return _0x2e8dbf[_0x5c60('0x21')](_0x5c60('0x3b'))[_0x5c60('0x28')](_0x147e33,_0xae94a2)['execute']()['then'](function(_0x476dcc){if(_0x476dcc&&_0x476dcc['length']){return _0x476dcc;}else{var _0x58ff29=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb['additionalSearchContact']){var _0x56c691={};_0x56c691[_0x2df4cb['additionalSearchContact']]=_0x17c5f3;_[_0x5c60('0x34')](_0x58ff29[_0x5c60('0x35')],_0x56c691);}return _0x2e8dbf['sobject']('Contact')[_0x5c60('0x28')](_0x58ff29,_0xae94a2)[_0x5c60('0x27')](function(_0x212ff3){if(_0x212ff3&&_0x212ff3['length']){return _0x212ff3;}else{var _0x1334e4=_['cloneDeep'](_0x4ff2cc);if(_0x2df4cb[_0x5c60('0x38')]){var _0x139dac={};_0x139dac[_0x2df4cb['additionalSearchLead']]=_0x17c5f3;_[_0x5c60('0x34')](_0x1334e4['$or'],_0x139dac);}return _0x2e8dbf[_0x5c60('0x21')]('Lead')['find'](_0x1334e4,_0xae94a2);}});}});case _0x5c60('0x17'):var _0x33efa1=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb['additionalSearchContact']){var _0x379d35={};_0x379d35[_0x2df4cb[_0x5c60('0x33')]]=_0x17c5f3;_[_0x5c60('0x34')](_0x33efa1['$or'],_0x379d35);}return _0x2e8dbf[_0x5c60('0x21')](_0x5c60('0x3c'))[_0x5c60('0x28')](_0x33efa1,_0xae94a2)[_0x5c60('0x26')]();case'lead':var _0x59debb=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb[_0x5c60('0x38')]){var _0x379d35={};_0x379d35[_0x2df4cb[_0x5c60('0x38')]]=_0x17c5f3;_[_0x5c60('0x34')](_0x59debb['$or'],_0x379d35);}return _0x2e8dbf[_0x5c60('0x21')](_0x5c60('0x3d'))[_0x5c60('0x28')](_0x59debb,_0xae94a2);case'account':var _0x147e33=_[_0x5c60('0x37')](_0x4ff2cc);if(_0x2df4cb[_0x5c60('0x3a')]){var _0x379d35={};_0x379d35[_0x2df4cb[_0x5c60('0x3a')]]=_0x17c5f3;_[_0x5c60('0x34')](_0x147e33[_0x5c60('0x35')],_0x379d35);}return _0x2e8dbf[_0x5c60('0x21')]('Account')[_0x5c60('0x28')](_0x147e33,_0xae94a2);default:return null;}})['then'](function(_0x347dff){if(_0x347dff&&_0x347dff[_0x5c60('0x36')]){var _0x93d56e=_[_0x5c60('0x3e')](_0x347dff);if(_0x93d56e){return BPromise[_0x5c60('0x2b')]({'id':_0x93d56e['Id'],'name':_0x93d56e[_0x5c60('0x2c')],'phone':_0x93d56e['Phone'],'endUserType':_0x93d56e[_0x5c60('0x3f')]['type']['toLowerCase']()});}}})['then'](function(_0x1b8ed8){if(_0x1b8ed8){logger['info'](_0x5c60('0x40'),_0x1b8ed8['endUserType'],_0x17c5f3);return BPromise[_0x5c60('0x2b')](_0x1b8ed8);}else{logger[_0x5c60('0x1f')]('Enduser\x20with\x20phone\x20%s\x20not\x20found',_0x17c5f3);var _0x415630={'Phone':_0x17c5f3};if(_0x2df4cb[_0x5c60('0x41')]){if(_0x2df4cb[_0x5c60('0x41')]===_0x5c60('0x17')){logger[_0x5c60('0x1f')](_0x5c60('0x42'),_0x17c5f3,_0x2df4cb[_0x5c60('0x41')]);_0x415630['LastName']=_0x582824!==_0x5c60('0x43')?_0x582824:util['format'](_0x5c60('0x44'),_0x17c5f3);}else if(_0x2df4cb[_0x5c60('0x41')]===_0x5c60('0x18')){logger[_0x5c60('0x1f')](_0x5c60('0x42'),_0x17c5f3,_0x2df4cb[_0x5c60('0x41')]);_0x415630[_0x5c60('0x45')]=_0x582824!==_0x5c60('0x43')?_0x582824:util[_0x5c60('0x46')](_0x5c60('0x44'),_0x17c5f3);_0x415630[_0x5c60('0x47')]=_0x5c60('0x48');}else if(_0x2df4cb['moduleCreate']==='account'){logger[_0x5c60('0x1f')](_0x5c60('0x42'),_0x17c5f3,_0x2df4cb['moduleCreate']);_0x415630[_0x5c60('0x2c')]=_0x582824!==_0x5c60('0x43')?_0x582824:util[_0x5c60('0x46')]('Caller\x20-\x20%s',_0x17c5f3);}else{return null;}}return _0x2e8dbf[_0x5c60('0x21')](_[_0x5c60('0x49')](_0x2df4cb[_0x5c60('0x41')]))['create'](_0x415630)['then'](function(_0x2581ad){return BPromise[_0x5c60('0x2b')]({'id':_0x2581ad['id'],'endUserType':_0x2df4cb[_0x5c60('0x41')]});});}});}function getCustomFields(_0xdf7d44,_0x4b3714){var _0x3c306a={};if(_0xdf7d44[_0x5c60('0x36')]>0x0){_[_0x5c60('0x4a')](_0xdf7d44,function(_0x2a2812){if(_[_0x5c60('0x4b')]([_0x5c60('0x4c'),'picklist'],_0x2a2812[_0x5c60('0x4d')])&&_0x2a2812[_0x5c60('0x4e')]){_0x3c306a[_0x2a2812[_0x5c60('0x4e')]]=_0x2a2812[_0x5c60('0x4f')][_0x5c60('0x50')]();}else if(_0x2a2812['type']===_0x5c60('0x51')&&_0x2a2812[_0x5c60('0x52')]&&_0x2a2812[_0x5c60('0x4e')]){_0x4b3714[_0x2a2812[_0x5c60('0x52')]]&&(_0x3c306a[_0x2a2812[_0x5c60('0x4e')]]=_0x4b3714[_0x2a2812[_0x5c60('0x52')]][_0x5c60('0x50')]());}else if(_0x2a2812['type']===_0x5c60('0x53')&&_0x2a2812[_0x5c60('0x54')]&&_0x2a2812['Variable'][_0x5c60('0x55')]&&_0x2a2812['idField']){_0x4b3714[_0x2a2812[_0x5c60('0x54')][_0x5c60('0x55')][_0x5c60('0x56')]()]&&(_0x3c306a[_0x2a2812['idField']]=_0x4b3714[_0x2a2812[_0x5c60('0x54')][_0x5c60('0x55')][_0x5c60('0x56')]()]['toString']());}});}return _0x3c306a;}function getConnection(_0x4321c7){var _0x18f583=_0x4321c7[_0x5c60('0x57')]['concat'](_0x4321c7[_0x5c60('0x58')]);var _0x40c9d2=new jsforce['Connection']({'oauth2':{'loginUrl':_0x4321c7['remoteUri']||_0x5c60('0x59'),'clientId':_0x4321c7[_0x5c60('0x5a')],'clientSecret':_0x4321c7['clientSecret']}});return _0x40c9d2[_0x5c60('0x5b')](_0x4321c7[_0x5c60('0x5c')],_0x18f583)[_0x5c60('0x27')](function(){logger[_0x5c60('0x1f')](_0x5c60('0x5d'));return _0x40c9d2;});}exports[_0x5c60('0x5e')]=function(_0x4698df,_0x2e435e,_0x526c68,_0x1db959,_0x44f3cb,_0x3c74c7){var _0x4a0408,_0x5d5ce5,_0x28bf55,_0xd6fa30;_0x3c74c7[_0x5c60('0x5f')]=intUtil['stripTrailingSlash'](_0x3c74c7[_0x5c60('0x5f')]);_0x3c74c7['remoteUri']=intUtil[_0x5c60('0x60')](_0x3c74c7[_0x5c60('0x61')]);if(_0x44f3cb&&_0x44f3cb[_0x5c60('0x62')]){logger[_0x5c60('0x1f')](_0x5c60('0x63'),_0x5c60('0x64'));_0x2e435e[_0x5c60('0x65')]=util[_0x5c60('0x46')](_0x5c60('0x66'),_0x3c74c7[_0x5c60('0x5f')],_0x2e435e['uniqueid'],md5(_0x2e435e[_0x5c60('0x67')]));}else{_0x2e435e[_0x5c60('0x65')]='';}return getConnection(_0x3c74c7)['then'](function(_0x5c7e0f){_0xd6fa30=_0x5c7e0f;return getUser(_0x3c74c7,_0x1db959[_0x5c60('0x68')],_0xd6fa30);})['then'](function(_0x40e62c){_0x4a0408=_0x40e62c;return getEndUser(_0x3c74c7,_0x526c68,_0x2e435e[_0x5c60('0x69')],_0x2e435e[_0x5c60('0x6a')],_0xd6fa30);})[_0x5c60('0x27')](function(_0x30627e){_0x5d5ce5=_0x30627e;return getTicket(_0x3c74c7,_0x4a0408,_0x5d5ce5,_0x526c68,_0x2e435e,_0x526c68[_0x5c60('0x6b')],_0xd6fa30,_0x5c60('0x5e'));})['then'](function(_0x3030d6){_0x28bf55=_0x3030d6;logger[_0x5c60('0x1f')](_0x5c60('0x6c'),_0x28bf55['id']);logger[_0x5c60('0x1f')]('[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.',_0x28bf55['id'],_0x1db959['name'],_0x3c74c7[_0x5c60('0x4d')]);switch(_0x3c74c7[_0x5c60('0x4d')]){case'integrationTab':emit(util[_0x5c60('0x46')]('user:%s',_0x1db959['name']),_0x5c60('0x6d'),{'recordId':_0x28bf55['id']});break;case'newTab':emit(util['format'](_0x5c60('0x6e'),_0x1db959['name']),'trigger:browser:url',{'uri':util[_0x5c60('0x46')](_0x5c60('0x6f'),_0xd6fa30[_0x5c60('0x70')],_0x28bf55['id'])});break;default:logger['error']('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})[_0x5c60('0x71')](function(_0x74d010){logger['error']('[QUEUE]',_0x74d010);});};exports[_0x5c60('0x72')]=function(_0x4fe8e1,_0x31b53d,_0x4e6172,_0x2c9254,_0x56dd8f,_0x1bbc02,_0xd2d6a9){var _0x16e4f2,_0x4f4a40,_0xc6a27f,_0x7f42a1;_0x1bbc02[_0x5c60('0x5f')]=intUtil[_0x5c60('0x60')](_0x1bbc02[_0x5c60('0x5f')]);_0x1bbc02['remoteUri']=intUtil[_0x5c60('0x60')](_0x1bbc02[_0x5c60('0x61')]);if(_0xd2d6a9&&_0xd2d6a9[_0x5c60('0x73')]&&_0xd2d6a9['recordingFormat']!=='none'){logger[_0x5c60('0x1f')](_0x5c60('0x74'),'Recording\x20is\x20enabled!');_0x31b53d[_0x5c60('0x65')]=util[_0x5c60('0x46')](_0x5c60('0x66'),_0x1bbc02['serverUrl'],_0x31b53d[_0x5c60('0x67')],md5(_0x31b53d['uniqueid']));}return getConnection(_0x1bbc02)[_0x5c60('0x27')](function(_0x59d524){_0x7f42a1=_0x59d524;return getUser(_0x1bbc02,_0x2c9254[_0x5c60('0x68')],_0x7f42a1);})[_0x5c60('0x27')](function(_0x4f2b16){_0x16e4f2=_0x4f2b16;return getEndUser(_0x1bbc02,_0x4e6172,_0x31b53d[_0x5c60('0x75')],_0x31b53d['destcalleridnum'],_0x7f42a1);})['then'](function(_0x3774a3){_0x4f4a40=_0x3774a3;return getTicket(_0x1bbc02,_0x16e4f2,_0x4f4a40,_0x4e6172,_0x31b53d,_0x4e6172['Fields'],_0x7f42a1,_0x5c60('0x72'));})[_0x5c60('0x27')](function(_0x1f60e7){_0xc6a27f=_0x1f60e7;logger[_0x5c60('0x1f')]('[OUTBOUND]\x20Ticket\x20%s\x20created.',_0xc6a27f['id']);logger[_0x5c60('0x1f')](_0x5c60('0x76'),_0xc6a27f['id'],_0x2c9254[_0x5c60('0x55')],_0x1bbc02['type']);switch(_0x1bbc02['type']){case _0x5c60('0x77'):emit(util[_0x5c60('0x46')](_0x5c60('0x6e'),_0x2c9254[_0x5c60('0x55')]),'trigger:salesforce:display',{'recordId':_0xc6a27f['id']});break;case _0x5c60('0x78'):emit(util['format'](_0x5c60('0x6e'),_0x2c9254[_0x5c60('0x55')]),_0x5c60('0x79'),{'uri':util[_0x5c60('0x46')](_0x5c60('0x6f'),_0x7f42a1[_0x5c60('0x70')],_0xc6a27f['id'])});break;default:logger['error'](_0x5c60('0x74'),_0x5c60('0x7a'));}})[_0x5c60('0x71')](function(_0x2ca890){logger[_0x5c60('0x7b')](_0x5c60('0x74'),_0x2ca890);});};exports['unmanaged']=function(_0x58ba75,_0x40c6e2,_0x7a9a15,_0x50c765,_0x5b7454,_0x38194f){var _0xc4cc2f,_0x3258dc,_0x70d2e5,_0x456f1a;_0x38194f[_0x5c60('0x5f')]=intUtil[_0x5c60('0x60')](_0x38194f[_0x5c60('0x5f')]);_0x38194f[_0x5c60('0x61')]=intUtil[_0x5c60('0x60')](_0x38194f[_0x5c60('0x61')]);if(_0x5b7454&&_0x5b7454[_0x5c60('0x62')]){logger[_0x5c60('0x1f')]('['+_0x40c6e2[_0x5c60('0x7c')][_0x5c60('0x7d')]()+']',_0x5c60('0x64'));_0x40c6e2[_0x5c60('0x65')]=util['format'](_0x5c60('0x66'),_0x38194f[_0x5c60('0x5f')],_0x40c6e2[_0x5c60('0x67')],md5(_0x40c6e2[_0x5c60('0x67')]));}else{_0x40c6e2['recordingURL']='';}return getConnection(_0x38194f)['then'](function(_0x19ef78){_0x456f1a=_0x19ef78;if(!_[_0x5c60('0x23')](_0x50c765)){return getUser(_0x38194f,_0x50c765['name'],_0x456f1a);}else{return getUser(_0x38194f,null,_0x456f1a);}})['then'](function(_0x260135){_0xc4cc2f=_0x260135;return getEndUser(_0x38194f,_0x7a9a15,_0x40c6e2[_0x5c60('0x69')],_0x40c6e2['calleridnum'],_0x456f1a);})[_0x5c60('0x27')](function(_0x57251d){_0x3258dc=_0x57251d;return getTicket(_0x38194f,_0xc4cc2f,_0x3258dc,_0x7a9a15,_0x40c6e2,_0x7a9a15['Fields'],_0x456f1a);})['then'](function(_0xa86438){_0x70d2e5=_0xa86438;logger['info']('['+_0x40c6e2[_0x5c60('0x7c')][_0x5c60('0x7d')]()+_0x5c60('0x7e'),_0x70d2e5['id']);logger[_0x5c60('0x1f')]('['+_0x40c6e2['lastevent'][_0x5c60('0x7d')]()+_0x5c60('0x7f'),_0x38194f[_0x5c60('0x4d')]);})[_0x5c60('0x71')](function(_0x2fd67e){logger[_0x5c60('0x7b')]('['+_0x40c6e2['lastevent'][_0x5c60('0x7d')]()+']',_0x2fd67e);});};
\ No newline at end of file
+var _0x9166=['type','toLowerCase','Enduser\x20(%s)\x20with\x20phone\x20%s\x20found','Enduser\x20with\x20phone\x20%s\x20not\x20found','moduleCreate','Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.','LastName','format','Caller\x20-\x20%s','<unknown>','Company','No\x20Company','upperFirst','forEach','includes','string','idField','content','toString','variable','variableName','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientSecret','login','username','Connection\x20established.','serverUrl','stripTrailingSlash','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','calleridname','calleridnum','queue','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','newTab','user:%s','trigger:browser:url','%s/%s/e','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','outbound','recordingFormat','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','monitor_format','lastevent','toUpperCase','Fields',']\x20Ticket\x20%s\x20created.',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','defaults','socket.io-emitter','emit','assign','getString','Subjects','Descriptions','Task','ActivityDate','utc','endUserType','WhoId','account','WhatId','ticketType','Case','contact','ContactId','lead','leadId','info','sobject','create','isNil','validateEmail','User','find','execute','then','length','Email','Agent\x20%s\x20found.','resolve','Name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','$or','Contact','additionalSearchLead','merge','account_contact_lead','additionalSearchAccount','Account','Phone','attributes'];(function(_0x170134,_0x4183fd){var _0x5f7b4e=function(_0x2a42fa){while(--_0x2a42fa){_0x170134['push'](_0x170134['shift']());}};_0x5f7b4e(++_0x4183fd);}(_0x9166,0x1d8));var _0x6916=function(_0x44ca6e,_0x5e2c91){_0x44ca6e=_0x44ca6e-0x0;var _0x2edab2=_0x9166[_0x44ca6e];return _0x2edab2;};'use strict';var _=require(_0x6916('0x0'));var rp=require(_0x6916('0x1'));var moment=require(_0x6916('0x2'));var BPromise=require(_0x6916('0x3'));var md5=require(_0x6916('0x4'));var jsforce=require(_0x6916('0x5'));var util=require(_0x6916('0x6'));var Redis=require(_0x6916('0x7'));var intUtil=require(_0x6916('0x8'));var config=require(_0x6916('0x9'));var logger=require(_0x6916('0xa'))(_0x6916('0xb'));config[_0x6916('0xc')]=_[_0x6916('0xd')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x6916('0xe'))(new Redis(config['redis']));function emit(_0x5cfa97,_0x3caccf,_0x3a4ea8){io['to'](_0x5cfa97)[_0x6916('0xf')](_0x3caccf,_0x3a4ea8);}function getTicket(_0xa1d73c,_0x1a1731,_0x2e5dae,_0x578ea4,_0x2917a7,_0x1553ab,_0x3be482,_0x24541e){var _0x19dc89=Object[_0x6916('0x10')]({},{'OwnerId':_0x1a1731['id'],'Subject':intUtil[_0x6916('0x11')](_0x578ea4[_0x6916('0x12')],_0x2917a7,'\x20'),'Description':intUtil[_0x6916('0x11')](_0x578ea4[_0x6916('0x13')],_0x2917a7,'\x0a')},getCustomFields(_0x1553ab,_0x2917a7));if(_0x2e5dae){if(_0x578ea4['ticketType']===_0x6916('0x14')){_0x19dc89[_0x6916('0x15')]=moment[_0x6916('0x16')]();_0x19dc89['IsReminderSet']=![];_0x19dc89['IsRecurrence']=![];if(_0x2e5dae[_0x6916('0x17')]==='contact'||_0x2e5dae[_0x6916('0x17')]==='lead'){_0x19dc89[_0x6916('0x18')]=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x19')){_0x19dc89[_0x6916('0x1a')]=_0x2e5dae['id'];}}else if(_0x578ea4[_0x6916('0x1b')]===_0x6916('0x1c')){if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x1d')){_0x19dc89[_0x6916('0x1e')]=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]==='account'){_0x19dc89['AccountId']=_0x2e5dae['id'];}else if(_0x2e5dae[_0x6916('0x17')]===_0x6916('0x1f')&&_0x578ea4[_0x6916('0x20')]){_0x19dc89[_0x578ea4[_0x6916('0x20')]]=_0x2e5dae['id'];}else{logger[_0x6916('0x21')]('Association\x20between\x20Case\x20and\x20Lead\x20skipped');}}}return _0x3be482[_0x6916('0x22')](_0x578ea4[_0x6916('0x1b')])[_0x6916('0x23')](_0x19dc89);}function getUser(_0x5a940a,_0xb8a113,_0x4df6dc){if(!_[_0x6916('0x24')](_0xb8a113)&&intUtil[_0x6916('0x25')](_0xb8a113)){var _0xd08012={'Email':_0xb8a113};var _0x95db16={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x4df6dc[_0x6916('0x22')](_0x6916('0x26'))[_0x6916('0x27')](_0xd08012,_0x95db16)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x1cbaec){if(_0x1cbaec[_0x6916('0x2a')]){var _0x46ac89=_[_0x6916('0x27')](_0x1cbaec,function(_0x4b16e2){return _0x4b16e2[_0x6916('0x2b')]===_0xb8a113;});if(_0x46ac89){logger[_0x6916('0x21')](_0x6916('0x2c'),_0xb8a113);return BPromise[_0x6916('0x2d')]({'id':_0x46ac89['Id'],'name':_0x46ac89[_0x6916('0x2e')]});}}else{logger[_0x6916('0x21')](_0x6916('0x2f'),_0xb8a113);return _0x4df6dc[_0x6916('0x30')]()[_0x6916('0x29')](function(_0x3b232e){return BPromise[_0x6916('0x2d')]({'id':_0x3b232e[_0x6916('0x31')],'name':_0x3b232e[_0x6916('0x32')]});});}});}else{logger[_0x6916('0x21')]('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0xb8a113);return _0x4df6dc[_0x6916('0x30')]()[_0x6916('0x29')](function(_0x355020){return BPromise[_0x6916('0x2d')]({'id':_0x355020[_0x6916('0x31')],'name':_0x355020[_0x6916('0x32')]});});}}function getEndUser(_0x5e6406,_0x5e6cbf,_0x2ca126,_0x1e0b81,_0x2f78bc){var _0x7165f8={'$or':{'Phone':_0x1e0b81}};var _0x3fbb82={'Id':!![],'Name':!![],'Phone':!![]};return BPromise['resolve']()['then'](function(){logger[_0x6916('0x21')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x1e0b81,_0x5e6cbf[_0x6916('0x33')]);switch(_0x5e6cbf[_0x6916('0x33')]){case _0x6916('0x34'):var _0x3294b3=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_['merge'](_0x3294b3[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x38'))[_0x6916('0x27')](_0x3294b3,_0x3fbb82)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x4952d0){if(_0x4952d0&&_0x4952d0[_0x6916('0x2a')]){return _0x4952d0;}else{var _0xb60103=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x39')]){var _0x2b1fc9={};_0x2b1fc9[_0x5e6cbf['additionalSearchLead']]=_0x1e0b81;_[_0x6916('0x3a')](_0xb60103['$or'],_0x2b1fc9);}return _0x2f78bc[_0x6916('0x22')]('Lead')[_0x6916('0x27')](_0xb60103,_0x3fbb82);}});case _0x6916('0x3b'):var _0xeebf50=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x3c')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x3c')]]=_0x1e0b81;_[_0x6916('0x3a')](_0xeebf50[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x3d'))['find'](_0xeebf50,_0x3fbb82)[_0x6916('0x28')]()[_0x6916('0x29')](function(_0x36a915){if(_0x36a915&&_0x36a915[_0x6916('0x2a')]){return _0x36a915;}else{var _0x5f2ad3=_['cloneDeep'](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x18ddf4={};_0x18ddf4[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x5f2ad3[_0x6916('0x37')],_0x18ddf4);}return _0x2f78bc['sobject'](_0x6916('0x38'))['find'](_0x5f2ad3,_0x3fbb82)[_0x6916('0x29')](function(_0x1f5d41){if(_0x1f5d41&&_0x1f5d41[_0x6916('0x2a')]){return _0x1f5d41;}else{var _0x5e753e=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf['additionalSearchLead']){var _0x4cc3f0={};_0x4cc3f0[_0x5e6cbf['additionalSearchLead']]=_0x1e0b81;_[_0x6916('0x3a')](_0x5e753e[_0x6916('0x37')],_0x4cc3f0);}return _0x2f78bc['sobject']('Lead')[_0x6916('0x27')](_0x5e753e,_0x3fbb82);}});}});case _0x6916('0x1d'):var _0x3294b3=_['cloneDeep'](_0x7165f8);if(_0x5e6cbf[_0x6916('0x36')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x36')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x3294b3[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc['sobject'](_0x6916('0x38'))[_0x6916('0x27')](_0x3294b3,_0x3fbb82)[_0x6916('0x28')]();case _0x6916('0x1f'):var _0x322ded=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf['additionalSearchLead']){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x39')]]=_0x1e0b81;_[_0x6916('0x3a')](_0x322ded[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')]('Lead')[_0x6916('0x27')](_0x322ded,_0x3fbb82);case'account':var _0xeebf50=_[_0x6916('0x35')](_0x7165f8);if(_0x5e6cbf[_0x6916('0x3c')]){var _0x249ca9={};_0x249ca9[_0x5e6cbf[_0x6916('0x3c')]]=_0x1e0b81;_['merge'](_0xeebf50[_0x6916('0x37')],_0x249ca9);}return _0x2f78bc[_0x6916('0x22')](_0x6916('0x3d'))[_0x6916('0x27')](_0xeebf50,_0x3fbb82);default:return null;}})['then'](function(_0x57da10){if(_0x57da10&&_0x57da10[_0x6916('0x2a')]){var _0x3087a4=_['first'](_0x57da10);if(_0x3087a4){return BPromise['resolve']({'id':_0x3087a4['Id'],'name':_0x3087a4[_0x6916('0x2e')],'phone':_0x3087a4[_0x6916('0x3e')],'endUserType':_0x3087a4[_0x6916('0x3f')][_0x6916('0x40')][_0x6916('0x41')]()});}}})['then'](function(_0x44c811){if(_0x44c811){logger['info'](_0x6916('0x42'),_0x44c811['endUserType'],_0x1e0b81);return BPromise[_0x6916('0x2d')](_0x44c811);}else{logger[_0x6916('0x21')](_0x6916('0x43'),_0x1e0b81);var _0x15ea44={'Phone':_0x1e0b81};if(_0x5e6cbf[_0x6916('0x44')]){if(_0x5e6cbf['moduleCreate']==='contact'){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x46')]=_0x2ca126!=='<unknown>'?_0x2ca126:util[_0x6916('0x47')](_0x6916('0x48'),_0x1e0b81);}else if(_0x5e6cbf[_0x6916('0x44')]===_0x6916('0x1f')){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x46')]=_0x2ca126!==_0x6916('0x49')?_0x2ca126:util['format']('Caller\x20-\x20%s',_0x1e0b81);_0x15ea44[_0x6916('0x4a')]=_0x6916('0x4b');}else if(_0x5e6cbf[_0x6916('0x44')]===_0x6916('0x19')){logger[_0x6916('0x21')](_0x6916('0x45'),_0x1e0b81,_0x5e6cbf[_0x6916('0x44')]);_0x15ea44[_0x6916('0x2e')]=_0x2ca126!=='<unknown>'?_0x2ca126:util['format'](_0x6916('0x48'),_0x1e0b81);}else{return null;}}return _0x2f78bc[_0x6916('0x22')](_[_0x6916('0x4c')](_0x5e6cbf[_0x6916('0x44')]))[_0x6916('0x23')](_0x15ea44)[_0x6916('0x29')](function(_0xfeae12){return BPromise[_0x6916('0x2d')]({'id':_0xfeae12['id'],'endUserType':_0x5e6cbf[_0x6916('0x44')]});});}});}function getCustomFields(_0x2537d5,_0x30377b){var _0x360e80={};if(_0x2537d5[_0x6916('0x2a')]>0x0){_[_0x6916('0x4d')](_0x2537d5,function(_0x1dbf8f){if(_[_0x6916('0x4e')]([_0x6916('0x4f'),'picklist'],_0x1dbf8f['type'])&&_0x1dbf8f[_0x6916('0x50')]){_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x1dbf8f[_0x6916('0x51')][_0x6916('0x52')]();}else if(_0x1dbf8f[_0x6916('0x40')]===_0x6916('0x53')&&_0x1dbf8f[_0x6916('0x54')]&&_0x1dbf8f[_0x6916('0x50')]){_0x30377b[_0x1dbf8f[_0x6916('0x54')]]&&(_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x30377b[_0x1dbf8f[_0x6916('0x54')]][_0x6916('0x52')]());}else if(_0x1dbf8f[_0x6916('0x40')]===_0x6916('0x55')&&_0x1dbf8f[_0x6916('0x56')]&&_0x1dbf8f[_0x6916('0x56')][_0x6916('0x57')]&&_0x1dbf8f['idField']){_0x30377b[_0x1dbf8f['Variable']['name'][_0x6916('0x41')]()]&&(_0x360e80[_0x1dbf8f[_0x6916('0x50')]]=_0x30377b[_0x1dbf8f[_0x6916('0x56')]['name'][_0x6916('0x41')]()][_0x6916('0x52')]());}});}return _0x360e80;}function getConnection(_0x25035d){var _0x3bbd4e=_0x25035d[_0x6916('0x58')][_0x6916('0x59')](_0x25035d[_0x6916('0x5a')]);var _0x535ca7=new jsforce[(_0x6916('0x5b'))]({'oauth2':{'loginUrl':_0x25035d[_0x6916('0x5c')]||_0x6916('0x5d'),'clientId':_0x25035d['clientId'],'clientSecret':_0x25035d[_0x6916('0x5e')]}});return _0x535ca7[_0x6916('0x5f')](_0x25035d[_0x6916('0x60')],_0x3bbd4e)[_0x6916('0x29')](function(){logger['info'](_0x6916('0x61'));return _0x535ca7;});}exports['queue']=function(_0x274288,_0x536f67,_0x397a7c,_0x5c7534,_0x4fd201,_0x5c2aed){var _0xd27375,_0x12d7ce,_0x31da76,_0x4e5f37;_0x5c2aed[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x5c2aed[_0x6916('0x62')]);_0x5c2aed[_0x6916('0x5c')]=intUtil[_0x6916('0x63')](_0x5c2aed[_0x6916('0x5c')]);if(_0x4fd201&&_0x4fd201['monitor_format']){logger[_0x6916('0x21')](_0x6916('0x64'),_0x6916('0x65'));_0x536f67[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x5c2aed[_0x6916('0x62')],_0x536f67[_0x6916('0x68')],md5(_0x536f67[_0x6916('0x68')]));}else{_0x536f67[_0x6916('0x66')]='';}return getConnection(_0x5c2aed)[_0x6916('0x29')](function(_0xe1dcc){_0x4e5f37=_0xe1dcc;return getUser(_0x5c2aed,_0x5c7534[_0x6916('0x69')],_0x4e5f37);})[_0x6916('0x29')](function(_0x49581d){_0xd27375=_0x49581d;return getEndUser(_0x5c2aed,_0x397a7c,_0x536f67[_0x6916('0x6a')],_0x536f67[_0x6916('0x6b')],_0x4e5f37);})[_0x6916('0x29')](function(_0x373248){_0x12d7ce=_0x373248;return getTicket(_0x5c2aed,_0xd27375,_0x12d7ce,_0x397a7c,_0x536f67,_0x397a7c['Fields'],_0x4e5f37,_0x6916('0x6c'));})[_0x6916('0x29')](function(_0x13bc48){_0x31da76=_0x13bc48;logger['info']('[QUEUE]\x20Ticket\x20%s\x20created',_0x31da76['id']);logger['info'](_0x6916('0x6d'),_0x31da76['id'],_0x5c7534['name'],_0x5c2aed[_0x6916('0x40')]);switch(_0x5c2aed[_0x6916('0x40')]){case'integrationTab':emit(util[_0x6916('0x47')]('user:%s',_0x5c7534['name']),_0x6916('0x6e'),{'recordId':_0x31da76['id']});break;case _0x6916('0x6f'):emit(util[_0x6916('0x47')](_0x6916('0x70'),_0x5c7534[_0x6916('0x57')]),_0x6916('0x71'),{'uri':util['format'](_0x6916('0x72'),_0x4e5f37[_0x6916('0x73')],_0x31da76['id'])});break;default:logger[_0x6916('0x74')](_0x6916('0x75'));}})[_0x6916('0x76')](function(_0x182764){logger['error'](_0x6916('0x64'),_0x182764);});};exports[_0x6916('0x77')]=function(_0x47522c,_0x10840b,_0x4316ec,_0x141d1f,_0x189814,_0x214bb7,_0x4ae1c6){var _0x21592e,_0x12bd2a,_0xa582c6,_0x789fe9;_0x214bb7[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x214bb7[_0x6916('0x62')]);_0x214bb7[_0x6916('0x5c')]=intUtil[_0x6916('0x63')](_0x214bb7[_0x6916('0x5c')]);if(_0x4ae1c6&&_0x4ae1c6['recordingFormat']&&_0x4ae1c6[_0x6916('0x78')]!=='none'){logger[_0x6916('0x21')]('[OUTBOUND]',_0x6916('0x65'));_0x10840b[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x214bb7[_0x6916('0x62')],_0x10840b[_0x6916('0x68')],md5(_0x10840b['uniqueid']));}return getConnection(_0x214bb7)[_0x6916('0x29')](function(_0x5cf41e){_0x789fe9=_0x5cf41e;return getUser(_0x214bb7,_0x141d1f[_0x6916('0x69')],_0x789fe9);})[_0x6916('0x29')](function(_0x382228){_0x21592e=_0x382228;return getEndUser(_0x214bb7,_0x4316ec,_0x10840b['destcalleridname'],_0x10840b[_0x6916('0x79')],_0x789fe9);})[_0x6916('0x29')](function(_0x309af4){_0x12bd2a=_0x309af4;return getTicket(_0x214bb7,_0x21592e,_0x12bd2a,_0x4316ec,_0x10840b,_0x4316ec['Fields'],_0x789fe9,_0x6916('0x77'));})[_0x6916('0x29')](function(_0x2367af){_0xa582c6=_0x2367af;logger['info'](_0x6916('0x7a'),_0xa582c6['id']);logger[_0x6916('0x21')](_0x6916('0x7b'),_0xa582c6['id'],_0x141d1f[_0x6916('0x57')],_0x214bb7['type']);switch(_0x214bb7[_0x6916('0x40')]){case _0x6916('0x7c'):emit(util['format'](_0x6916('0x70'),_0x141d1f[_0x6916('0x57')]),_0x6916('0x6e'),{'recordId':_0xa582c6['id']});break;case _0x6916('0x6f'):emit(util[_0x6916('0x47')](_0x6916('0x70'),_0x141d1f['name']),'trigger:browser:url',{'uri':util[_0x6916('0x47')](_0x6916('0x72'),_0x789fe9[_0x6916('0x73')],_0xa582c6['id'])});break;default:logger[_0x6916('0x74')](_0x6916('0x7d'),_0x6916('0x7e'));}})['catch'](function(_0x4e5c94){logger[_0x6916('0x74')](_0x6916('0x7d'),_0x4e5c94);});};exports[_0x6916('0x7f')]=function(_0x605bd3,_0x12de72,_0x39bcee,_0x457037,_0x34c1ec,_0x390878){var _0x4785f6,_0x1738d7,_0x2c8462,_0xe52126;_0x390878[_0x6916('0x62')]=intUtil[_0x6916('0x63')](_0x390878['serverUrl']);_0x390878['remoteUri']=intUtil[_0x6916('0x63')](_0x390878[_0x6916('0x5c')]);if(_0x34c1ec&&_0x34c1ec[_0x6916('0x80')]){logger[_0x6916('0x21')]('['+_0x12de72[_0x6916('0x81')][_0x6916('0x82')]()+']',_0x6916('0x65'));_0x12de72[_0x6916('0x66')]=util[_0x6916('0x47')](_0x6916('0x67'),_0x390878[_0x6916('0x62')],_0x12de72[_0x6916('0x68')],md5(_0x12de72[_0x6916('0x68')]));}else{_0x12de72[_0x6916('0x66')]='';}return getConnection(_0x390878)[_0x6916('0x29')](function(_0x288201){_0xe52126=_0x288201;if(!_[_0x6916('0x24')](_0x457037)){return getUser(_0x390878,_0x457037['name'],_0xe52126);}else{return getUser(_0x390878,null,_0xe52126);}})['then'](function(_0x1a95db){_0x4785f6=_0x1a95db;return getEndUser(_0x390878,_0x39bcee,_0x12de72[_0x6916('0x6a')],_0x12de72[_0x6916('0x6b')],_0xe52126);})[_0x6916('0x29')](function(_0x534de0){_0x1738d7=_0x534de0;return getTicket(_0x390878,_0x4785f6,_0x1738d7,_0x39bcee,_0x12de72,_0x39bcee[_0x6916('0x83')],_0xe52126);})['then'](function(_0x4abc3c){_0x2c8462=_0x4abc3c;logger[_0x6916('0x21')]('['+_0x12de72[_0x6916('0x81')]['toUpperCase']()+_0x6916('0x84'),_0x2c8462['id']);logger['info']('['+_0x12de72[_0x6916('0x81')]['toUpperCase']()+_0x6916('0x85'),_0x390878[_0x6916('0x40')]);})[_0x6916('0x76')](function(_0x3b426a){logger[_0x6916('0x74')]('['+_0x12de72['lastevent']['toUpperCase']()+']',_0x3b426a);});};
\ No newline at end of file
index 76024b3..a5d8899 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61a1=['],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','picklist','type','nameField','content','toString','idField','toLowerCase','variable','variableName','customField','customVariable','Variable','name','outbound','assign','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident','ticketNumber','all',']\x20arrayPromises:\x20IDs\x20in\x20table\x20label','push','Tags','map','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','emit','trigger:browser:url','username','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','adminEmail','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','recordingURL','recordingFormat','none','Recording\x20is\x20enabled!','call\x20direction:\x20%s','unmanaged','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','md5','./util','../../../../config/environment','servicenow','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','result','length','active','true','userId','sys_id','adminId','],\x20getUser\x20crm','message','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','endUserId'];(function(_0x430efc,_0x1b3fe8){var _0xe32703=function(_0xceaea1){while(--_0xceaea1){_0x430efc['push'](_0x430efc['shift']());}};_0xe32703(++_0x1b3fe8);}(_0x61a1,0x127));var _0x161a=function(_0x9a3e0f,_0x2f796d){_0x9a3e0f=_0x9a3e0f-0x0;var _0x3d2a9a=_0x61a1[_0x9a3e0f];return _0x3d2a9a;};'use strict';var _=require(_0x161a('0x0'));var Promise=require(_0x161a('0x1'));var rp=require(_0x161a('0x2'));var util=require(_0x161a('0x3'));var md5=require(_0x161a('0x4'));var Redis=require('ioredis');var intUtil=require(_0x161a('0x5'));var config=require(_0x161a('0x6'));var logger=require('../../../../config/logger')(_0x161a('0x7'));config[_0x161a('0x8')]=_[_0x161a('0x9')](config[_0x161a('0x8')],{'host':_0x161a('0xa'),'port':0x18eb});var io=require(_0x161a('0xb'))(new Redis(config[_0x161a('0x8')]));function getAdminUser(_0x182e6c,_0x3e07e5,_0x15cde9,_0x1bb849,_0x229381,_0x405108){return new Promise(function(_0x2e7b19,_0x46ee90){var _0x2077b6={'method':_0x161a('0xc'),'uri':_0x1bb849+_0x161a('0xd')+'&'+_0x229381+'&'+_0x405108,'auth':_0x3e07e5,'json':!![]};return rp(_0x2077b6)[_0x161a('0xe')](function(_0x1c6814){if(_0x1c6814['result']['length']>0x0){_0x15cde9['adminId']=_0x1c6814['result'][0x0]['sys_id'];}logger[_0x161a('0xf')]('['+[_0x182e6c[_0x161a('0x10')]()]+_0x161a('0x11'),_0x15cde9);_0x2e7b19(_0x15cde9);})[_0x161a('0x12')](function(_0x46fcf7){logger[_0x161a('0x13')]('['+[_0x182e6c[_0x161a('0x10')]()]+']',_0x46fcf7['message']);_0x46ee90(_0x46fcf7['message']);});});}function getUser(_0x559ec5,_0x2b2a3e,_0x42eebf,_0x4cbdb3,_0x359ccd){return function(_0x32b1a3){logger['info']('['+[_0x559ec5[_0x161a('0x10')]()]+_0x161a('0x14'),_0x32b1a3);return new Promise(function(_0x1dd836,_0x126b72){if(intUtil[_0x161a('0x15')](_0x32b1a3[_0x161a('0x16')])){var _0x25a286={'method':_0x161a('0xc'),'uri':_0x42eebf+_0x161a('0x17')+_0x32b1a3[_0x161a('0x16')]+'&'+_0x4cbdb3+'&'+_0x359ccd,'auth':_0x2b2a3e,'json':!![]};logger[_0x161a('0xf')]('['+[_0x559ec5[_0x161a('0x10')]()]+_0x161a('0x18'),_0x25a286);return rp(_0x25a286)['then'](function(_0x25b8ae){logger[_0x161a('0xf')]('['+[_0x559ec5[_0x161a('0x10')]()]+_0x161a('0x19'),_0x25b8ae);if(_0x25b8ae[_0x161a('0x1a')][_0x161a('0x1b')]>0x0&&String(_0x25b8ae[_0x161a('0x1a')][0x0][_0x161a('0x1c')])===_0x161a('0x1d')){_0x32b1a3[_0x161a('0x1e')]=_0x25b8ae['result'][0x0][_0x161a('0x1f')];}else{_0x32b1a3['userId']=_0x32b1a3[_0x161a('0x20')];_0x32b1a3[_0x161a('0x16')]=_0x32b1a3['adminEmail'];}logger[_0x161a('0xf')]('['+[_0x559ec5[_0x161a('0x10')]()]+_0x161a('0x21'),_0x32b1a3);_0x1dd836(_0x32b1a3);})[_0x161a('0x12')](function(_0x1541c6){logger[_0x161a('0x13')]('['+[_0x559ec5[_0x161a('0x10')]()]+']',_0x1541c6[_0x161a('0x22')]);_0x126b72(_0x1541c6['message']);});}else{logger[_0x161a('0xf')]('['+[_0x559ec5[_0x161a('0x10')]()]+']\x20using\x20admin\x20profile');_0x32b1a3['userId']=_0x32b1a3[_0x161a('0x20')];_0x32b1a3[_0x161a('0x16')]=_0x32b1a3['adminEmail'];_0x1dd836(_0x32b1a3);}});};}function createEndUser(_0x1472c7,_0x4a3eb6,_0x5def9c,_0x17cca5,_0xdc57e){logger[_0x161a('0xf')]('['+[_0x1472c7[_0x161a('0x10')]()]+_0x161a('0x23'),_0x5def9c);return new Promise(function(_0x33d3ec,_0x42d781){var _0x4ecf5d={'method':_0x161a('0x24'),'uri':_0x17cca5+_0x161a('0x25')+_0xdc57e,'body':{'user_name':_0x5def9c[_0x161a('0x26')],'roles':_0x161a('0x27'),'first_name':_0x5def9c['endUserNumber'],'active':'true','date_format':_0x161a('0x28'),'phone':_0x5def9c[_0x161a('0x26')]},'auth':_0x4a3eb6,'json':!![]};return rp(_0x4ecf5d)[_0x161a('0xe')](function(_0x234ccd){logger[_0x161a('0xf')]('['+[_0x1472c7[_0x161a('0x10')]()]+_0x161a('0x29'),_0x234ccd[_0x161a('0x1a')]);_0x5def9c['endUserId']=_0x234ccd[_0x161a('0x1a')][_0x161a('0x1f')];_0x33d3ec(_0x5def9c);})[_0x161a('0x12')](function(_0x437727){logger['error']('['+[_0x1472c7[_0x161a('0x10')]()]+']',_0x437727[_0x161a('0x22')]);_0x42d781(_0x437727[_0x161a('0x22')]);});});}function getEndUser(_0x14d033,_0x189962,_0x1102df,_0x3e6648,_0x17dede){return function(_0x4a1a75){logger[_0x161a('0xf')]('['+[_0x14d033[_0x161a('0x10')]()]+_0x161a('0x2a'),_0x4a1a75);return new Promise(function(_0x6fbae0,_0x484763){var _0x391288={'method':_0x161a('0xc'),'uri':_0x1102df+'sys_user?sysparm_query=phone%3D'+_0x4a1a75[_0x161a('0x26')]+'&'+_0x3e6648+'&'+_0x17dede,'auth':_0x189962,'json':!![]};return rp(_0x391288)[_0x161a('0xe')](function(_0x4a0b41){if(_0x4a0b41[_0x161a('0x1a')][_0x161a('0x1b')]>0x0){_0x4a1a75[_0x161a('0x2b')]=_0x4a0b41[_0x161a('0x1a')][0x0][_0x161a('0x1f')];logger[_0x161a('0xf')]('['+[_0x14d033[_0x161a('0x10')]()]+_0x161a('0x2c'),_0x4a1a75);_0x6fbae0(_0x4a1a75);}else{return createEndUser(_0x14d033,_0x189962,_0x4a1a75,_0x1102df,_0x3e6648)[_0x161a('0xe')](function(_0xe56231){logger[_0x161a('0xf')]('['+[_0x14d033[_0x161a('0x10')]()]+_0x161a('0x2d'),_0xe56231);_0x6fbae0(_0xe56231);});}})[_0x161a('0x12')](function(_0x36deef){logger[_0x161a('0x13')]('['+[_0x14d033[_0x161a('0x10')]()]+']',_0x36deef[_0x161a('0x22')]);_0x484763(_0x36deef[_0x161a('0x22')]);});});};}function getCustomFields(_0x2b8b37,_0x4708fb){var _0x50085c={};if(_0x2b8b37[_0x161a('0x1b')]>0x0){_[_0x161a('0x2e')](_0x2b8b37,function(_0x36a1b8){if(_[_0x161a('0x2f')](['string',_0x161a('0x30')],_0x36a1b8[_0x161a('0x31')])&&_0x36a1b8[_0x161a('0x32')]&&!_0x36a1b8['customField']){_0x50085c[_0x36a1b8['nameField']['toLowerCase']()]=_0x36a1b8[_0x161a('0x33')][_0x161a('0x34')]();}else if(_[_0x161a('0x2f')](['string',_0x161a('0x30')],_0x36a1b8['type'])&&_0x36a1b8['idField']&&_0x36a1b8['customField']){_0x50085c[_0x36a1b8[_0x161a('0x35')][_0x161a('0x36')]()]=_0x36a1b8['content'][_0x161a('0x34')]();}else if(_0x36a1b8[_0x161a('0x31')]===_0x161a('0x37')&&_0x36a1b8[_0x161a('0x38')]&&_0x36a1b8['idField']&&_0x36a1b8[_0x161a('0x39')]){_0x50085c[_0x36a1b8[_0x161a('0x35')][_0x161a('0x36')]()]=_0x4708fb[_0x36a1b8['variableName']][_0x161a('0x34')]();}else if(_0x36a1b8['type']===_0x161a('0x3a')&&_0x36a1b8[_0x161a('0x3b')]&&_0x36a1b8[_0x161a('0x3b')][_0x161a('0x3c')]&&_0x36a1b8[_0x161a('0x35')]&&_0x36a1b8[_0x161a('0x39')]){_0x50085c[_0x36a1b8[_0x161a('0x35')][_0x161a('0x36')]()]=_0x4708fb[_0x36a1b8['Variable'][_0x161a('0x3c')][_0x161a('0x36')]()][_0x161a('0x34')]();}});}return _0x50085c;}function getTicket(_0x5f2f9e,_0x4949f6,_0x302af9,_0x39d3b0,_0x29429e,_0xf0b61b){return function(_0x3e9067){logger['info']('['+[_0x5f2f9e[_0x161a('0x10')]()]+']\x20getTicket\x20input\x20crm',_0x3e9067);return new Promise(function(_0xcc75e4,_0x4185b2){var _0xe83c49=_0x5f2f9e[_0x161a('0x36')]()===_0x161a('0x3d')?_0x3e9067['userId']:_0x3e9067['endUserId'];var _0x1b744a={'method':_0x161a('0x24'),'uri':_0x302af9+'incident'+'?'+_0xf0b61b,'body':Object[_0x161a('0x3e')]({},{'active':_0x161a('0x1d'),'caller_id':_0xe83c49,'assigned_to':_0x3e9067['userId'],'short_description':intUtil[_0x161a('0x3f')](_0x39d3b0[_0x161a('0x40')],_0x29429e,'\x20'),'description':intUtil[_0x161a('0x3f')](_0x39d3b0[_0x161a('0x41')],_0x29429e,'\x0a')},getCustomFields(_0x39d3b0[_0x161a('0x42')],_0x29429e)),'auth':_0x4949f6,'json':!![]};return rp(_0x1b744a)['then'](function(_0x5bbd22){logger[_0x161a('0xf')]('['+[_0x5f2f9e['toUpperCase']()]+_0x161a('0x43'),_0x5bbd22['result']);_0x3e9067[_0x161a('0x44')]=_0x5bbd22[_0x161a('0x1a')][_0x161a('0x1f')];_0x3e9067['ticketNumber']=_0x5bbd22[_0x161a('0x1a')][_0x161a('0x45')];logger['info']('['+[_0x5f2f9e[_0x161a('0x10')]()]+_0x161a('0x46'),_0x3e9067);_0xcc75e4(_0x3e9067);})[_0x161a('0x12')](function(_0x7d6414){logger[_0x161a('0x13')]('['+[_0x5f2f9e[_0x161a('0x10')]()]+']',_0x7d6414[_0x161a('0x22')]);_0x4185b2(_0x7d6414['message']);});});};}function createRemoteTag(_0x2d4f0f,_0x3cc5c5,_0xbfba53,_0x4d1454){return new Promise(function(_0x274959,_0x4cd6a2){var _0x25e1ac={'method':_0x161a('0x24'),'uri':_0xbfba53+'label'+'?'+_0x4d1454,'body':{'short_description':_0x2d4f0f,'global':!![],'active':!![],'name':_0x2d4f0f},'auth':_0x3cc5c5,'json':!![]};return rp(_0x25e1ac)['then'](function(_0x5abcb4){var _0x18ef26=_0x5abcb4[_0x161a('0x1a')][_0x161a('0x1f')];_0x274959(_0x18ef26);});});}function getRemoteTag(_0x337e51,_0x5e07ab,_0x358be6,_0x57cf35,_0x585d2f){return new Promise(function(_0x3e729b,_0x3408e4){var _0x31c8eb={'method':_0x161a('0xc'),'uri':_0x358be6+_0x161a('0x47')+_0x161a('0x48')+_0x337e51+'&'+_0x57cf35,'auth':_0x5e07ab,'json':!![]};return rp(_0x31c8eb)[_0x161a('0xe')](function(_0x197be0){if(_0x197be0['result'][_0x161a('0x1b')]>0x0){var _0x4ef96e=_0x197be0[_0x161a('0x1a')][0x0][_0x161a('0x1f')];_0x3e729b(_0x4ef96e);}else{return createRemoteTag(_0x337e51,_0x5e07ab,_0x358be6,_0x57cf35)[_0x161a('0xe')](function(_0x2ab982){_0x3e729b(_0x2ab982);});}});});}function assignTagToIncident(_0x5b80cc,_0x225c24,_0x54c48a,_0x192a80,_0xf7934e){return new Promise(function(_0x51d372,_0x2d5a3b){var _0x3dc073={'method':'POST','uri':_0x54c48a+_0x161a('0x49')+'?'+_0xf7934e,'body':{'label':_0x5b80cc,'table':'incident','id_type':_0x161a('0x4a'),'table_key':_0x192a80[_0x161a('0x44')],'title':'Incident\x20-\x20'+_0x192a80[_0x161a('0x4b')],'id_display':_0x192a80[_0x161a('0x4b')]},'auth':_0x225c24,'json':!![]};return rp(_0x3dc073)[_0x161a('0xe')](function(_0x1f9130){_0x51d372();})['catch'](function(){_0x51d372();});});}function manageTags(_0x456759,_0x2e14d0,_0xb98573,_0x447a38,_0x36c4c5,_0x138785,_0xeb6381){return new Promise(function(_0xc82f02,_0x50afeb){var _0x5beebe=[];_0x2e14d0[_0x161a('0x2e')](function(_0x273a47){_0x5beebe['push'](getRemoteTag(_0x273a47,_0xb98573,_0x447a38,_0x138785,_0xeb6381));});return Promise[_0x161a('0x4c')](_0x5beebe)['then'](function(_0x500d6d){if(_0x500d6d[_0x161a('0x1b')]){logger[_0x161a('0xf')]('['+[_0x456759[_0x161a('0x10')]()]+_0x161a('0x4d'),_0x500d6d);var _0x5bfa30=[];_0x500d6d[_0x161a('0x2e')](function(_0x12c892){_0x5bfa30[_0x161a('0x4e')](assignTagToIncident(_0x12c892,_0xb98573,_0x447a38,_0x36c4c5,_0x138785));});return Promise['all'](_0x5bfa30)['then'](function(){_0xc82f02();})[_0x161a('0x12')](function(){_0xc82f02();});}else{_0xc82f02();}});});}function getTags(_0x405d5a,_0x567d9f,_0x56156f,_0x1ec939,_0x49a411,_0x536221){return function(_0x20d54f){return new Promise(function(_0x3d0887,_0x429dd8){var _0xbb3d16=[];var _0x26d842=_0x1ec939[_0x161a('0x4f')];if(_0x26d842&&_0x26d842['length']>0x0){_0xbb3d16=_[_0x161a('0x50')](_0x26d842,_0x161a('0x3c'));}if(_0xbb3d16[_0x161a('0x1b')]>0x0){return manageTags(_0x405d5a,_0xbb3d16,_0x567d9f,_0x56156f,_0x20d54f,_0x49a411,_0x536221)[_0x161a('0xe')](function(){_0x3d0887(_0x20d54f);});}else{_0x3d0887(_0x20d54f);}});};}function emit(_0x2ca121,_0x1a775b,_0x4f17fe){var _0xa20e1b='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x161a('0x51')+_0x161a('0x52');var _0x362a2a={'uri':_0x2ca121+_0x161a('0x53')+_0x4f17fe+_0xa20e1b};io['to'](util[_0x161a('0x54')]('user:%s',_0x1a775b))[_0x161a('0x55')](_0x161a('0x56'),_0x362a2a);}exports['cs']=function(_0xd552ab,_0xfe99a,_0x1b1909,_0x21172e,_0x182d6c,_0xe06f3e,_0x26b90f,_0x3be05b){var _0x5bface={};var _0x220700={'user':_0xe06f3e[_0x161a('0x57')],'pass':_0xe06f3e['password']};var _0x369227='sysparm_limit=1';var _0x2920d0=_0x161a('0x58');_0xe06f3e[_0x161a('0x59')]=intUtil[_0x161a('0x5a')](_0xe06f3e[_0x161a('0x59')]);_0xe06f3e[_0x161a('0x5b')]=intUtil[_0x161a('0x5a')](_0xe06f3e[_0x161a('0x5b')]);var _0xc2ca50=util['format'](_0x161a('0x5c'),_0xe06f3e[_0x161a('0x59')]);_0x5bface[_0x161a('0x16')]=!_[_0x161a('0x5d')](_0x21172e)?_0x21172e[_0x161a('0x5e')]:null;_0x5bface[_0x161a('0x5f')]=_0xe06f3e[_0x161a('0x5e')];_0x5bface[_0x161a('0x26')]=_0x3be05b['toLowerCase']()==='outbound'?_0xfe99a[_0x161a('0x60')]:_0xfe99a[_0x161a('0x61')];_0x5bface[_0x161a('0x62')]=_0x3be05b===_0x161a('0x63')||_0x3be05b==='unmanaged'?'queue':_0x161a('0x3d');var _0x3dc676=util[_0x161a('0x54')](_0x161a('0x64'),_0xe06f3e[_0x161a('0x5b')],_0xfe99a[_0x161a('0x65')],md5(_0xfe99a[_0x161a('0x65')]));if(_0x182d6c&&_0x182d6c[_0x161a('0x66')]){logger[_0x161a('0xf')](_0x161a('0x67'),'Recording\x20is\x20enabled!');_0xfe99a[_0x161a('0x68')]=_0x3dc676;}else if(_0x26b90f&&_0x26b90f[_0x161a('0x69')]&&_0x26b90f['recordingFormat']!==_0x161a('0x6a')){logger['info']('[OUTBOUND]',_0x161a('0x6b'));_0xfe99a[_0x161a('0x68')]=_0x3dc676;}else{_0xfe99a[_0x161a('0x68')]='';}return getAdminUser(_0x3be05b,_0x220700,_0x5bface,_0xc2ca50,_0x2920d0,_0x369227)[_0x161a('0xe')](getUser(_0x3be05b,_0x220700,_0xc2ca50,_0x2920d0,_0x369227))[_0x161a('0xe')](getEndUser(_0x3be05b,_0x220700,_0xc2ca50,_0x2920d0,_0x369227))[_0x161a('0xe')](getTicket(_0x3be05b,_0x220700,_0xc2ca50,_0x1b1909,_0xfe99a,_0x2920d0))['then'](function(_0x50d6c5){logger['info'](util[_0x161a('0x54')]('The\x20ticket\x20ID\x20is:\x20%s',_0x50d6c5[_0x161a('0x44')]));logger['info'](util['format'](_0x161a('0x6c'),_0x3be05b));if(_0x3be05b!==_0x161a('0x6d')){logger[_0x161a('0xf')]('['+[_0x3be05b[_0x161a('0x10')]()]+']',_0x161a('0x6e'));emit(_0xe06f3e[_0x161a('0x59')],_0x21172e[_0x161a('0x3c')],_0x50d6c5[_0x161a('0x44')]);}})['catch'](function(_0x527efd){logger[_0x161a('0x13')]('['+[_0x3be05b[_0x161a('0x10')]()]+_0x161a('0x6f'),util[_0x161a('0x70')](_0x527efd,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7cd0=['localhost','socket.io-emitter','GET','then','result','length','adminId','sys_id','info','],\x20getAdminUser\x20crm','catch','error','message','toUpperCase','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','userId','adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','],\x20createEndUser\x20input\x20crm','sys_user?','user','endUserNumber','true','System','],\x20EndUser\x20schema','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','content','toString','idField','toLowerCase','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','endUserId','POST','incident','assign','getString','Subjects','Descriptions',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','label_entry','Incident\x20-\x20','all','push','Tags','%26sysparm_record_target%3Dincident','%26sysparm_record_list%3Dactive%253Dtrue','%255EORDERBYDESCnumber','/nav_to.do?uri=incident.do?sys_id%3D','format','user:%s','emit','trigger:browser:url','username','sysparm_limit=1','sysparm_display_value=true','remoteUri','stripTrailingSlash','serverUrl','%s/api/now/table/','isNil','email','calleridnum','callDirection','queue','unmanaged','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','call\x20direction:\x20%s','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','md5','ioredis','servicenow','redis','defaults'];(function(_0x55af86,_0x5c8ff6){var _0x58df3b=function(_0x2ddd94){while(--_0x2ddd94){_0x55af86['push'](_0x55af86['shift']());}};_0x58df3b(++_0x5c8ff6);}(_0x7cd0,0x1bc));var _0x07cd=function(_0x19e4ce,_0x1a8a80){_0x19e4ce=_0x19e4ce-0x0;var _0x1c9c08=_0x7cd0[_0x19e4ce];return _0x1c9c08;};'use strict';var _=require(_0x07cd('0x0'));var Promise=require(_0x07cd('0x1'));var rp=require(_0x07cd('0x2'));var util=require('util');var md5=require(_0x07cd('0x3'));var Redis=require(_0x07cd('0x4'));var intUtil=require('./util');var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x07cd('0x5'));config[_0x07cd('0x6')]=_[_0x07cd('0x7')](config[_0x07cd('0x6')],{'host':_0x07cd('0x8'),'port':0x18eb});var io=require(_0x07cd('0x9'))(new Redis(config[_0x07cd('0x6')]));function getAdminUser(_0x367e17,_0xc5d113,_0x16402a,_0x3ac620,_0x56c161,_0x525378){return new Promise(function(_0x401b95,_0x4e5e52){var _0x27e5bc={'method':_0x07cd('0xa'),'uri':_0x3ac620+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x56c161+'&'+_0x525378,'auth':_0xc5d113,'json':!![]};return rp(_0x27e5bc)[_0x07cd('0xb')](function(_0x53d17b){if(_0x53d17b[_0x07cd('0xc')][_0x07cd('0xd')]>0x0){_0x16402a[_0x07cd('0xe')]=_0x53d17b['result'][0x0][_0x07cd('0xf')];}logger[_0x07cd('0x10')]('['+[_0x367e17['toUpperCase']()]+_0x07cd('0x11'),_0x16402a);_0x401b95(_0x16402a);})[_0x07cd('0x12')](function(_0x4e64d9){logger[_0x07cd('0x13')]('['+[_0x367e17['toUpperCase']()]+']',_0x4e64d9[_0x07cd('0x14')]);_0x4e5e52(_0x4e64d9[_0x07cd('0x14')]);});});}function getUser(_0x38a84b,_0x3ed4ad,_0x304830,_0x18b444,_0x835635){return function(_0x56ce4f){logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+'],\x20getUser\x20input\x20crm',_0x56ce4f);return new Promise(function(_0x404613,_0x4ce4bf){if(intUtil[_0x07cd('0x16')](_0x56ce4f[_0x07cd('0x17')])){var _0x5bfc77={'method':_0x07cd('0xa'),'uri':_0x304830+_0x07cd('0x18')+_0x56ce4f[_0x07cd('0x17')]+'&'+_0x18b444+'&'+_0x835635,'auth':_0x3ed4ad,'json':!![]};logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x19'),_0x5bfc77);return rp(_0x5bfc77)[_0x07cd('0xb')](function(_0x2a9a53){logger['info']('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x1a'),_0x2a9a53);if(_0x2a9a53[_0x07cd('0xc')][_0x07cd('0xd')]>0x0&&String(_0x2a9a53[_0x07cd('0xc')][0x0][_0x07cd('0x1b')])==='true'){_0x56ce4f['userId']=_0x2a9a53['result'][0x0]['sys_id'];}else{_0x56ce4f[_0x07cd('0x1c')]=_0x56ce4f[_0x07cd('0xe')];_0x56ce4f[_0x07cd('0x17')]=_0x56ce4f[_0x07cd('0x1d')];}logger[_0x07cd('0x10')]('['+[_0x38a84b['toUpperCase']()]+_0x07cd('0x1e'),_0x56ce4f);_0x404613(_0x56ce4f);})['catch'](function(_0x3c76b3){logger[_0x07cd('0x13')]('['+[_0x38a84b[_0x07cd('0x15')]()]+']',_0x3c76b3[_0x07cd('0x14')]);_0x4ce4bf(_0x3c76b3['message']);});}else{logger[_0x07cd('0x10')]('['+[_0x38a84b[_0x07cd('0x15')]()]+_0x07cd('0x1f'));_0x56ce4f['userId']=_0x56ce4f[_0x07cd('0xe')];_0x56ce4f[_0x07cd('0x17')]=_0x56ce4f[_0x07cd('0x1d')];_0x404613(_0x56ce4f);}});};}function createEndUser(_0x580b84,_0x266d23,_0x1f0ee7,_0x58b9e3,_0x13ebf1){logger['info']('['+[_0x580b84[_0x07cd('0x15')]()]+_0x07cd('0x20'),_0x1f0ee7);return new Promise(function(_0x1a9743,_0x240ca8){var _0x1a04ee={'method':'POST','uri':_0x58b9e3+_0x07cd('0x21')+_0x13ebf1,'body':{'user_name':_0x1f0ee7['endUserNumber'],'roles':_0x07cd('0x22'),'first_name':_0x1f0ee7[_0x07cd('0x23')],'active':_0x07cd('0x24'),'date_format':_0x07cd('0x25'),'phone':_0x1f0ee7[_0x07cd('0x23')]},'auth':_0x266d23,'json':!![]};return rp(_0x1a04ee)['then'](function(_0xb5db5e){logger[_0x07cd('0x10')]('['+[_0x580b84['toUpperCase']()]+_0x07cd('0x26'),_0xb5db5e[_0x07cd('0xc')]);_0x1f0ee7['endUserId']=_0xb5db5e[_0x07cd('0xc')][_0x07cd('0xf')];_0x1a9743(_0x1f0ee7);})[_0x07cd('0x12')](function(_0x3f4675){logger[_0x07cd('0x13')]('['+[_0x580b84[_0x07cd('0x15')]()]+']',_0x3f4675['message']);_0x240ca8(_0x3f4675[_0x07cd('0x14')]);});});}function getEndUser(_0x50e24f,_0x4697f4,_0x59e4f2,_0x57d670,_0xbaba07){return function(_0x2e52cb){logger[_0x07cd('0x10')]('['+[_0x50e24f['toUpperCase']()]+_0x07cd('0x27'),_0x2e52cb);return new Promise(function(_0x3fee61,_0x35fba0){var _0x4382fa={'method':'GET','uri':_0x59e4f2+_0x07cd('0x28')+_0x2e52cb['endUserNumber']+'&'+_0x57d670+'&'+_0xbaba07,'auth':_0x4697f4,'json':!![]};return rp(_0x4382fa)['then'](function(_0x5becec){if(_0x5becec[_0x07cd('0xc')]['length']>0x0){_0x2e52cb['endUserId']=_0x5becec[_0x07cd('0xc')][0x0]['sys_id'];logger[_0x07cd('0x10')]('['+[_0x50e24f[_0x07cd('0x15')]()]+_0x07cd('0x29'),_0x2e52cb);_0x3fee61(_0x2e52cb);}else{return createEndUser(_0x50e24f,_0x4697f4,_0x2e52cb,_0x59e4f2,_0x57d670)[_0x07cd('0xb')](function(_0x47e7e6){logger['info']('['+[_0x50e24f['toUpperCase']()]+_0x07cd('0x2a'),_0x47e7e6);_0x3fee61(_0x47e7e6);});}})['catch'](function(_0x2c207e){logger[_0x07cd('0x13')]('['+[_0x50e24f[_0x07cd('0x15')]()]+']',_0x2c207e[_0x07cd('0x14')]);_0x35fba0(_0x2c207e[_0x07cd('0x14')]);});});};}function getCustomFields(_0x467d1d,_0x1a94cf){var _0x49b8bf={};if(_0x467d1d[_0x07cd('0xd')]>0x0){_[_0x07cd('0x2b')](_0x467d1d,function(_0x1c41f1){if(_[_0x07cd('0x2c')]([_0x07cd('0x2d'),_0x07cd('0x2e')],_0x1c41f1[_0x07cd('0x2f')])&&_0x1c41f1[_0x07cd('0x30')]&&!_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1['nameField']['toLowerCase']()]=_0x1c41f1[_0x07cd('0x32')][_0x07cd('0x33')]();}else if(_[_0x07cd('0x2c')](['string','picklist'],_0x1c41f1[_0x07cd('0x2f')])&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1[_0x07cd('0x34')][_0x07cd('0x35')]()]=_0x1c41f1[_0x07cd('0x32')][_0x07cd('0x33')]();}else if(_0x1c41f1['type']===_0x07cd('0x36')&&_0x1c41f1[_0x07cd('0x37')]&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1[_0x07cd('0x31')]){_0x49b8bf[_0x1c41f1['idField'][_0x07cd('0x35')]()]=_0x1a94cf[_0x1c41f1[_0x07cd('0x37')]][_0x07cd('0x33')]();}else if(_0x1c41f1['type']===_0x07cd('0x38')&&_0x1c41f1[_0x07cd('0x39')]&&_0x1c41f1[_0x07cd('0x39')][_0x07cd('0x3a')]&&_0x1c41f1[_0x07cd('0x34')]&&_0x1c41f1['customField']){_0x49b8bf[_0x1c41f1['idField'][_0x07cd('0x35')]()]=_0x1a94cf[_0x1c41f1[_0x07cd('0x39')][_0x07cd('0x3a')][_0x07cd('0x35')]()][_0x07cd('0x33')]();}});}return _0x49b8bf;}function getTicket(_0x17fc6b,_0x290a6d,_0x3064f2,_0x492c22,_0x3b5fe6,_0x4cf3b0){return function(_0x183a5a){logger['info']('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x3b'),_0x183a5a);return new Promise(function(_0x2f41aa,_0x5c61f7){var _0x2ba7b2=_0x17fc6b[_0x07cd('0x35')]()===_0x07cd('0x3c')?_0x183a5a['userId']:_0x183a5a[_0x07cd('0x3d')];var _0x103218={'method':_0x07cd('0x3e'),'uri':_0x3064f2+_0x07cd('0x3f')+'?'+_0x4cf3b0,'body':Object[_0x07cd('0x40')]({},{'active':_0x07cd('0x24'),'caller_id':_0x2ba7b2,'assigned_to':_0x183a5a[_0x07cd('0x1c')],'short_description':intUtil[_0x07cd('0x41')](_0x492c22[_0x07cd('0x42')],_0x3b5fe6,'\x20'),'description':intUtil[_0x07cd('0x41')](_0x492c22[_0x07cd('0x43')],_0x3b5fe6,'\x0a')},getCustomFields(_0x492c22['Fields'],_0x3b5fe6)),'auth':_0x290a6d,'json':!![]};return rp(_0x103218)[_0x07cd('0xb')](function(_0x4a6fae){logger[_0x07cd('0x10')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x44'),_0x4a6fae[_0x07cd('0xc')]);_0x183a5a[_0x07cd('0x45')]=_0x4a6fae[_0x07cd('0xc')][_0x07cd('0xf')];_0x183a5a[_0x07cd('0x46')]=_0x4a6fae[_0x07cd('0xc')][_0x07cd('0x47')];logger[_0x07cd('0x10')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+_0x07cd('0x48'),_0x183a5a);_0x2f41aa(_0x183a5a);})['catch'](function(_0x4b9ef9){logger[_0x07cd('0x13')]('['+[_0x17fc6b[_0x07cd('0x15')]()]+']',_0x4b9ef9[_0x07cd('0x14')]);_0x5c61f7(_0x4b9ef9[_0x07cd('0x14')]);});});};}function createRemoteTag(_0x543678,_0x15df4a,_0x568e0a,_0x4b65b9){return new Promise(function(_0x1f8b35,_0x28632a){var _0x3dfba8={'method':_0x07cd('0x3e'),'uri':_0x568e0a+_0x07cd('0x49')+'?'+_0x4b65b9,'body':{'short_description':_0x543678,'global':!![],'active':!![],'name':_0x543678},'auth':_0x15df4a,'json':!![]};return rp(_0x3dfba8)[_0x07cd('0xb')](function(_0x5736d4){var _0x2f92d4=_0x5736d4[_0x07cd('0xc')]['sys_id'];_0x1f8b35(_0x2f92d4);});});}function getRemoteTag(_0x57e525,_0xa838d,_0x577ca2,_0x1c192f,_0x349ea5){return new Promise(function(_0x2d738c,_0x35b714){var _0x2d36eb={'method':_0x07cd('0xa'),'uri':_0x577ca2+_0x07cd('0x49')+_0x07cd('0x4a')+_0x57e525+'&'+_0x1c192f,'auth':_0xa838d,'json':!![]};return rp(_0x2d36eb)[_0x07cd('0xb')](function(_0x3e707e){if(_0x3e707e[_0x07cd('0xc')]['length']>0x0){var _0x114607=_0x3e707e['result'][0x0][_0x07cd('0xf')];_0x2d738c(_0x114607);}else{return createRemoteTag(_0x57e525,_0xa838d,_0x577ca2,_0x1c192f)['then'](function(_0x23b433){_0x2d738c(_0x23b433);});}});});}function assignTagToIncident(_0x40a591,_0x292c78,_0x3e2423,_0x24ada9,_0x485b38){return new Promise(function(_0x239b20,_0x395dcf){var _0x1ed985={'method':_0x07cd('0x3e'),'uri':_0x3e2423+_0x07cd('0x4b')+'?'+_0x485b38,'body':{'label':_0x40a591,'table':_0x07cd('0x3f'),'id_type':'Incident','table_key':_0x24ada9[_0x07cd('0x45')],'title':_0x07cd('0x4c')+_0x24ada9[_0x07cd('0x46')],'id_display':_0x24ada9[_0x07cd('0x46')]},'auth':_0x292c78,'json':!![]};return rp(_0x1ed985)[_0x07cd('0xb')](function(_0x31f830){_0x239b20();})[_0x07cd('0x12')](function(){_0x239b20();});});}function manageTags(_0x24f0f4,_0x18fc14,_0x4596f6,_0x271629,_0x48f702,_0x3dbcc9,_0xf07142){return new Promise(function(_0x25f988,_0x26e7d3){var _0x351a84=[];_0x18fc14[_0x07cd('0x2b')](function(_0x48e716){_0x351a84['push'](getRemoteTag(_0x48e716,_0x4596f6,_0x271629,_0x3dbcc9,_0xf07142));});return Promise[_0x07cd('0x4d')](_0x351a84)['then'](function(_0x351794){if(_0x351794['length']){logger[_0x07cd('0x10')]('['+[_0x24f0f4[_0x07cd('0x15')]()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x351794);var _0xb5697=[];_0x351794[_0x07cd('0x2b')](function(_0x50a0d2){_0xb5697[_0x07cd('0x4e')](assignTagToIncident(_0x50a0d2,_0x4596f6,_0x271629,_0x48f702,_0x3dbcc9));});return Promise[_0x07cd('0x4d')](_0xb5697)['then'](function(){_0x25f988();})[_0x07cd('0x12')](function(){_0x25f988();});}else{_0x25f988();}});});}function getTags(_0x4c13ee,_0x564441,_0x68747a,_0x4fc997,_0x8f6b76,_0x4d5b65){return function(_0x1550f0){return new Promise(function(_0x498d98,_0x841a42){var _0x3a5fcd=[];var _0x163f52=_0x4fc997[_0x07cd('0x4f')];if(_0x163f52&&_0x163f52['length']>0x0){_0x3a5fcd=_['map'](_0x163f52,_0x07cd('0x3a'));}if(_0x3a5fcd[_0x07cd('0xd')]>0x0){return manageTags(_0x4c13ee,_0x3a5fcd,_0x564441,_0x68747a,_0x1550f0,_0x8f6b76,_0x4d5b65)[_0x07cd('0xb')](function(){_0x498d98(_0x1550f0);});}else{_0x498d98(_0x1550f0);}});};}function emit(_0x2501d7,_0x1cf0a8,_0x45c286){var _0x1e5771=_0x07cd('0x50')+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x07cd('0x51')+_0x07cd('0x52');var _0x21677f={'uri':_0x2501d7+_0x07cd('0x53')+_0x45c286+_0x1e5771};io['to'](util[_0x07cd('0x54')](_0x07cd('0x55'),_0x1cf0a8))[_0x07cd('0x56')](_0x07cd('0x57'),_0x21677f);}exports['cs']=function(_0x28e015,_0x142cdf,_0x1fb884,_0x3edee4,_0x2516f,_0x1de9ff,_0x13f6da,_0x2e7822){var _0x5209a6={};var _0x5bfc15={'user':_0x1de9ff[_0x07cd('0x58')],'pass':_0x1de9ff['password']};var _0x437ae3=_0x07cd('0x59');var _0x1f31ab=_0x07cd('0x5a');_0x1de9ff[_0x07cd('0x5b')]=intUtil[_0x07cd('0x5c')](_0x1de9ff[_0x07cd('0x5b')]);_0x1de9ff['serverUrl']=intUtil[_0x07cd('0x5c')](_0x1de9ff[_0x07cd('0x5d')]);var _0x3be0b0=util['format'](_0x07cd('0x5e'),_0x1de9ff[_0x07cd('0x5b')]);_0x5209a6[_0x07cd('0x17')]=!_[_0x07cd('0x5f')](_0x3edee4)?_0x3edee4[_0x07cd('0x60')]:null;_0x5209a6[_0x07cd('0x1d')]=_0x1de9ff['email'];_0x5209a6[_0x07cd('0x23')]=_0x2e7822['toLowerCase']()===_0x07cd('0x3c')?_0x142cdf['destcalleridnum']:_0x142cdf[_0x07cd('0x61')];_0x5209a6[_0x07cd('0x62')]=_0x2e7822===_0x07cd('0x63')||_0x2e7822===_0x07cd('0x64')?_0x07cd('0x63'):'outbound';var _0x10f719=util[_0x07cd('0x54')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x1de9ff[_0x07cd('0x5d')],_0x142cdf[_0x07cd('0x65')],md5(_0x142cdf[_0x07cd('0x65')]));if(_0x2516f&&_0x2516f[_0x07cd('0x66')]){logger['info'](_0x07cd('0x67'),_0x07cd('0x68'));_0x142cdf[_0x07cd('0x69')]=_0x10f719;}else if(_0x13f6da&&_0x13f6da[_0x07cd('0x6a')]&&_0x13f6da[_0x07cd('0x6a')]!=='none'){logger[_0x07cd('0x10')](_0x07cd('0x6b'),_0x07cd('0x68'));_0x142cdf['recordingURL']=_0x10f719;}else{_0x142cdf['recordingURL']='';}return getAdminUser(_0x2e7822,_0x5bfc15,_0x5209a6,_0x3be0b0,_0x1f31ab,_0x437ae3)[_0x07cd('0xb')](getUser(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1f31ab,_0x437ae3))[_0x07cd('0xb')](getEndUser(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1f31ab,_0x437ae3))[_0x07cd('0xb')](getTicket(_0x2e7822,_0x5bfc15,_0x3be0b0,_0x1fb884,_0x142cdf,_0x1f31ab))[_0x07cd('0xb')](function(_0x224a07){logger['info'](util['format'](_0x07cd('0x6c'),_0x224a07[_0x07cd('0x45')]));logger['info'](util['format'](_0x07cd('0x6d'),_0x2e7822));if(_0x2e7822!==_0x07cd('0x64')){logger[_0x07cd('0x10')]('['+[_0x2e7822['toUpperCase']()]+']',_0x07cd('0x6e'));emit(_0x1de9ff['remoteUri'],_0x3edee4[_0x07cd('0x3a')],_0x224a07[_0x07cd('0x45')]);}})[_0x07cd('0x12')](function(_0x5b9e2d){logger[_0x07cd('0x13')]('['+[_0x2e7822[_0x07cd('0x15')]()]+_0x07cd('0x6f'),util[_0x07cd('0x70')](_0x5b9e2d,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index ee34e6c..e8a613e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xae52=['The\x20Enduser\x20ID\x20is:','Inbound','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','version','charAt','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','catch','error','outbound','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridname','destcalleridnum','Fields','Outbound','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','trigger:browser:url','unmanaged','uri','toUpperCase','Recording\x20is\x20enabled!','isNil','lastevent','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/logger','sugarcrm','redis','localhost','POST','emit','info','name','getString','created_by','date_start','toISOString','replace','duration_hours','duration_minutes','parent_id','parent_type','parent_name','direction','length','variableName','push','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','find','name_value_list','value','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','resolve','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','first_name','<unknown>','Caller\x20-\x20%s','then','[HTTP]','merge','map','forEach','type','string','nameField','toLowerCase','content','customField','custom_fields','customVariable','Variable','login','username','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','The\x20User\x20ID\x20is:','calleridname'];(function(_0x547021,_0x5d5654){var _0x440194=function(_0x4d89fb){while(--_0x4d89fb){_0x547021['push'](_0x547021['shift']());}};_0x440194(++_0x5d5654);}(_0xae52,0x111));var _0x2ae5=function(_0x277107,_0x3420dc){_0x277107=_0x277107-0x0;var _0x1da046=_0xae52[_0x277107];return _0x1da046;};'use strict';var _=require(_0x2ae5('0x0'));var rp=require(_0x2ae5('0x1'));var BPromise=require(_0x2ae5('0x2'));var md5=require('md5');var util=require(_0x2ae5('0x3'));var Redis=require(_0x2ae5('0x4'));var intUtil=require(_0x2ae5('0x5'));var config=require('../../../../config/environment');var logger=require(_0x2ae5('0x6'))(_0x2ae5('0x7'));config['redis']=_['defaults'](config[_0x2ae5('0x8')],{'host':_0x2ae5('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2ae5('0x8')]));var def={'method':_0x2ae5('0xa'),'json':!![]};function emit(_0x882e03,_0xd1114c,_0x4c02fe){io['to'](_0x882e03)[_0x2ae5('0xb')](_0xd1114c,_0x4c02fe);}function getTicket(_0x107e0f,_0x332647,_0x40750a,_0x5d3b3d,_0x29570c,_0x3813fd,_0x4f8539,_0x5c4b59){logger[_0x2ae5('0xc')]('Creating\x20new\x20ticket...');var _0x342d58=new Date();var _0x3f415a=[{'name':_0x2ae5('0xd'),'value':intUtil[_0x2ae5('0xe')](_0x5d3b3d['Subjects'],_0x29570c,'\x20')},{'name':'assigned_user_id','value':_0x332647['id']},{'name':_0x2ae5('0xf'),'value':_0x332647['id']},{'name':'description','value':intUtil[_0x2ae5('0xe')](_0x5d3b3d['Descriptions'],_0x29570c,'\x0a')},{'name':_0x2ae5('0x10'),'value':_0x342d58[_0x2ae5('0x11')]()['slice'](0x0,0x13)[_0x2ae5('0x12')]('T','\x20')},{'name':_0x2ae5('0x13'),'value':'0'},{'name':_0x2ae5('0x14'),'value':'15'},{'name':_0x2ae5('0x15'),'value':_0x40750a['id']},{'name':_0x2ae5('0x16'),'value':'Contacts'},{'name':_0x2ae5('0x17'),'value':_0x40750a[_0x2ae5('0xd')]},{'name':_0x2ae5('0x18'),'value':_0x5c4b59}];if(_0x3813fd[_0x2ae5('0x19')]){_['forEach'](_0x3813fd,function(_0x3ea0c4){if(_0x29570c[_0x3ea0c4[_0x2ae5('0x1a')]]){_0x3f415a[_0x2ae5('0x1b')]({'name':_0x3ea0c4[_0x2ae5('0x1c')],'value':_0x29570c[_0x3ea0c4[_0x2ae5('0x1a')]]});}});}return request({'form':{'method':_0x2ae5('0x1d'),'input_type':_0x2ae5('0x1e'),'response_type':'JSON','rest_data':JSON[_0x2ae5('0x1f')]({'session':_0x4f8539['id'],'module_name':_0x2ae5('0x20'),'name_value_list':_0x3f415a})}});}function getAuth(_0x275c54){return util[_0x2ae5('0x21')]('Basic\x20%s',new Buffer(_0x275c54[_0x2ae5('0x22')]+':X')[_0x2ae5('0x23')](_0x2ae5('0x24')));}function getServerInfo(_0xc6f2c){return request({'form':{'method':_0x2ae5('0x25'),'input_type':_0x2ae5('0x1e'),'response_type':_0x2ae5('0x1e'),'rest_data':JSON['stringify']({'session':_0xc6f2c['id']})}});}function getUser(_0x4b97da,_0x1c0c51,_0x4a64cc){if(!_['isNil'](_0x1c0c51)){logger['info'](_0x2ae5('0x26'),_0x1c0c51);return request({'form':{'method':_0x2ae5('0x27'),'input_type':'JSON','response_type':_0x2ae5('0x1e'),'rest_data':JSON[_0x2ae5('0x1f')]({'session':_0x4a64cc['id'],'module_name':_0x2ae5('0x28'),'query':util[_0x2ae5('0x21')](_0x2ae5('0x29'),_0x1c0c51),'order_by':'','offset':'0','select_fields':['id','name',_0x2ae5('0x2a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x2fdc9e){if(_0x2fdc9e[_0x2ae5('0x2b')][_0x2ae5('0x19')]){var _0x16eaaa=_[_0x2ae5('0x2c')](_0x2fdc9e[_0x2ae5('0x2b')],function(_0xd1b7e7){return _0xd1b7e7[_0x2ae5('0x2d')][_0x2ae5('0x2a')][_0x2ae5('0x2e')]===_0x1c0c51;});if(_0x16eaaa){logger['info']('Agent\x20found!');return BPromise['resolve']({'id':_0x16eaaa[_0x2ae5('0x2d')]['id']['value'],'name':_0x16eaaa[_0x2ae5('0x2d')][_0x2ae5('0xd')]['value']});}}logger[_0x2ae5('0xc')](_0x2ae5('0x2f'));return BPromise[_0x2ae5('0x30')]({'id':_0x4a64cc[_0x2ae5('0x2d')][_0x2ae5('0x31')]['value'],'name':_0x4a64cc[_0x2ae5('0x2d')][_0x2ae5('0x2a')][_0x2ae5('0x2e')]});});}else{logger[_0x2ae5('0xc')](_0x2ae5('0x32'));return BPromise['resolve']({'id':_0x4a64cc[_0x2ae5('0x2d')][_0x2ae5('0x31')]['value'],'name':_0x4a64cc['name_value_list'][_0x2ae5('0x2a')]['value']});}}function getEndUser(_0x2325ff,_0xe2a004,_0x31aeea,_0x3ef6d9){logger['info'](_0x2ae5('0x33'),_0x31aeea);return request({'form':{'method':'get_entry_list','input_type':_0x2ae5('0x1e'),'response_type':_0x2ae5('0x1e'),'rest_data':JSON[_0x2ae5('0x1f')]({'session':_0x3ef6d9['id'],'module_name':'Contacts','query':util['format'](_0x2ae5('0x34'),_0x31aeea),'order_by':'','offset':'0','select_fields':['id','name','phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x205b72){if(_0x205b72[_0x2ae5('0x2b')][_0x2ae5('0x19')]){var _0xab9126=_[_0x2ae5('0x2c')](_0x205b72[_0x2ae5('0x2b')],function(_0x44f471){return _0x44f471[_0x2ae5('0x2d')][_0x2ae5('0x35')][_0x2ae5('0x2e')]===_0x31aeea;});if(_0xab9126){logger[_0x2ae5('0xc')]('Enduser\x20found!');return BPromise[_0x2ae5('0x30')]({'id':_0xab9126[_0x2ae5('0x2d')]['id'][_0x2ae5('0x2e')],'name':_0xab9126[_0x2ae5('0x2d')][_0x2ae5('0xd')]['value'],'phone':_0xab9126[_0x2ae5('0x2d')]['phone_home'][_0x2ae5('0x2e')]});}}else{logger[_0x2ae5('0xc')](_0x2ae5('0x36'));return request({'form':{'method':_0x2ae5('0x1d'),'input_type':_0x2ae5('0x1e'),'response_type':_0x2ae5('0x1e'),'rest_data':JSON[_0x2ae5('0x1f')]({'session':_0x3ef6d9['id'],'module_name':_0x2ae5('0x37'),'name_value_list':[{'name':_0x2ae5('0x38'),'value':_0xe2a004!==_0x2ae5('0x39')?_0xe2a004:util['format'](_0x2ae5('0x3a'),_0x31aeea)},{'name':'phone_home','value':_0x31aeea}]})}})[_0x2ae5('0x3b')](function(_0x4650a5){logger[_0x2ae5('0xc')]('Enduser\x20created.');return BPromise[_0x2ae5('0x30')]({'id':_0x4650a5['id'],'name':_0x4650a5[_0x2ae5('0x2b')][_0x2ae5('0x38')][_0x2ae5('0x2e')],'phone':_0x4650a5['entry_list']['phone_home']['value']});});}});}function request(_0x434bd7){logger['debug'](_0x2ae5('0x3c'),JSON['stringify'](_0x434bd7));return rp(_[_0x2ae5('0x3d')](def,_0x434bd7));}function getTags(_0x421857,_0x4fc458){var _0x55e8bc=[];if(_0x421857&&_0x421857['length']>0x0){_0x55e8bc=_[_0x2ae5('0x3e')](_0x421857,_0x4fc458);}return _0x55e8bc;}function getCustomFields(_0x137d0b,_0x136890){var _0x49ffc7=[];var _0x21182a={'custom_fields':[]};if(_0x137d0b[_0x2ae5('0x19')]>0x0){_[_0x2ae5('0x3f')](_0x137d0b,function(_0x13d251){if(_0x13d251[_0x2ae5('0x40')]===_0x2ae5('0x41')&&_0x13d251[_0x2ae5('0x42')]&&!_0x13d251['customField']){_0x21182a[_0x13d251[_0x2ae5('0x42')][_0x2ae5('0x43')]()]=_0x13d251[_0x2ae5('0x44')][_0x2ae5('0x23')]();}else if(_0x13d251[_0x2ae5('0x40')]===_0x2ae5('0x41')&&_0x13d251[_0x2ae5('0x1c')]&&_0x13d251[_0x2ae5('0x45')]){_0x21182a[_0x2ae5('0x46')]['push']({'id':_0x13d251[_0x2ae5('0x1c')],'value':_0x13d251[_0x2ae5('0x44')][_0x2ae5('0x23')]()});}else if(_0x13d251[_0x2ae5('0x40')]==='variable'&&_0x13d251[_0x2ae5('0x1a')]&&_0x13d251['idField']&&_0x13d251[_0x2ae5('0x45')]){_0x136890[_0x13d251[_0x2ae5('0x1a')]]&&_0x21182a['custom_fields']['push']({'id':_0x13d251['idField'],'value':_0x136890[_0x13d251['variableName']][_0x2ae5('0x23')]()});}else if(_0x13d251[_0x2ae5('0x40')]===_0x2ae5('0x47')&&_0x13d251[_0x2ae5('0x48')]&&_0x13d251[_0x2ae5('0x48')][_0x2ae5('0xd')]&&_0x13d251[_0x2ae5('0x1c')]&&_0x13d251[_0x2ae5('0x45')]){_0x136890[_0x13d251['Variable'][_0x2ae5('0xd')][_0x2ae5('0x43')]()]&&_0x21182a[_0x2ae5('0x46')][_0x2ae5('0x1b')]({'id':_0x13d251[_0x2ae5('0x1c')],'value':_0x136890[_0x13d251[_0x2ae5('0x48')][_0x2ae5('0xd')]['toLowerCase']()][_0x2ae5('0x23')]()});}});}return _0x21182a;}function getConnection(_0x30ff0e){return request({'method':'POST','form':{'method':_0x2ae5('0x49'),'input_type':_0x2ae5('0x1e'),'response_type':'JSON','rest_data':JSON['stringify']({'user_auth':{'user_name':_0x30ff0e[_0x2ae5('0x4a')],'password':_0x30ff0e['password'],'encryption':_0x2ae5('0x4b')},'application':_0x2ae5('0x4c')})}})[_0x2ae5('0x3b')](function(_0x11612a){var _0x3e8fa1=_0x11612a;if(_0x3e8fa1['id']){def[_0x2ae5('0x4d')]=_0x3e8fa1['id'];return BPromise['resolve'](_0x3e8fa1);}else{throw new Error(util['format'](_0x2ae5('0x4e'),_0x30ff0e['id']));}});}function setRelationship(_0x4cc96c,_0x2bd8d8,_0x242413,_0x27a303){return request({'form':{'method':_0x2ae5('0x4f'),'input_type':_0x2ae5('0x1e'),'response_type':_0x2ae5('0x1e'),'rest_data':JSON[_0x2ae5('0x1f')]({'session':_0x4cc96c['id'],'module_name':_0x2ae5('0x20'),'module_id':_0x242413['id'],'link_field_name':_0x27a303,'related_ids':[_0x2bd8d8['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x2ae5('0x50')]=function(_0x572737,_0x515c1c,_0x406782,_0x3bf3aa,_0x2f5fe6,_0x161ad4){var _0x3628b4,_0x36a2a4,_0x4e0b3b,_0x4c85b9;_0x161ad4[_0x2ae5('0x51')]=intUtil['stripTrailingSlash'](_0x161ad4[_0x2ae5('0x51')]);_0x161ad4[_0x2ae5('0x52')]=intUtil[_0x2ae5('0x53')](_0x161ad4['serverUrl']);def['uri']=util[_0x2ae5('0x21')]('%s/service/v4_1/rest.php',_0x161ad4[_0x2ae5('0x51')]);if(_0x2f5fe6&&_0x2f5fe6[_0x2ae5('0x54')]){logger[_0x2ae5('0xc')](_0x2ae5('0x55'),'Recording\x20is\x20enabled!');_0x515c1c['recordingURL']=util[_0x2ae5('0x21')](_0x2ae5('0x56'),_0x161ad4[_0x2ae5('0x52')],_0x515c1c[_0x2ae5('0x57')],md5(_0x515c1c[_0x2ae5('0x57')]));}else{_0x515c1c['recordingURL']='';}return getConnection(_0x161ad4)['then'](function(_0x2868a2){_0x4c85b9=_0x2868a2;return getUser(_0x161ad4,_0x3bf3aa[_0x2ae5('0xd')],_0x4c85b9);})[_0x2ae5('0x3b')](function(_0x1dcb8d){_0x3628b4=_0x1dcb8d;logger[_0x2ae5('0xc')](_0x2ae5('0x58'),_0x3628b4['id']);return getEndUser(_0x161ad4,_0x515c1c[_0x2ae5('0x59')],_0x515c1c['calleridnum'],_0x4c85b9);})[_0x2ae5('0x3b')](function(_0x4fc062){_0x36a2a4=_0x4fc062;logger[_0x2ae5('0xc')](_0x2ae5('0x5a'),_0x36a2a4['id']);return getTicket(_0x161ad4,_0x3628b4,_0x36a2a4,_0x406782,_0x515c1c,_0x406782['Fields'],_0x4c85b9,_0x2ae5('0x5b'));})[_0x2ae5('0x3b')](function(_0x11edcf){_0x4e0b3b=_0x11edcf;logger[_0x2ae5('0xc')](_0x2ae5('0x5c'));logger[_0x2ae5('0xc')](_0x2ae5('0x5d'),_0x4e0b3b['id']);return setRelationship(_0x4c85b9,_0x3628b4,_0x4e0b3b,_0x2ae5('0x5e'));})['then'](function(){return setRelationship(_0x4c85b9,_0x36a2a4,_0x4e0b3b,_0x2ae5('0x5f'));})['then'](function(){return getServerInfo(_0x4c85b9);})[_0x2ae5('0x3b')](function(_0x540a66){var _0x1e4571=parseInt(_0x540a66[_0x2ae5('0x60')][_0x2ae5('0x61')](0x0));var _0x14edc3=util[_0x2ae5('0x21')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x161ad4[_0x2ae5('0x51')],_0x4e0b3b['id']);if(_0x1e4571>0x6){_0x14edc3=util[_0x2ae5('0x21')](_0x2ae5('0x62'),_0x161ad4[_0x2ae5('0x51')],_0x4e0b3b['id']);}logger[_0x2ae5('0xc')](_0x2ae5('0x55'),_0x2ae5('0x63'));emit(util['format'](_0x2ae5('0x64'),_0x3bf3aa[_0x2ae5('0xd')]),'trigger:browser:url',{'uri':_0x14edc3});})[_0x2ae5('0x65')](function(_0x2f52ff){logger[_0x2ae5('0x66')](_0x2ae5('0x55'),JSON[_0x2ae5('0x1f')](_0x2f52ff));});};exports[_0x2ae5('0x67')]=function(_0x10219f,_0x237e5b,_0x5c5f24,_0x514e84,_0x1d336a,_0x2bce4f,_0x592b81){var _0xd6b44b,_0x4fa25a,_0x33a29a,_0x1ce157;_0x2bce4f[_0x2ae5('0x51')]=intUtil[_0x2ae5('0x53')](_0x2bce4f[_0x2ae5('0x51')]);_0x2bce4f['serverUrl']=intUtil['stripTrailingSlash'](_0x2bce4f[_0x2ae5('0x52')]);def['uri']=util[_0x2ae5('0x21')](_0x2ae5('0x68'),_0x2bce4f[_0x2ae5('0x51')]);if(_0x592b81&&_0x592b81[_0x2ae5('0x69')]&&_0x592b81[_0x2ae5('0x69')]!==_0x2ae5('0x6a')){logger[_0x2ae5('0xc')](_0x2ae5('0x6b'),'Recording\x20is\x20enabled!');_0x237e5b[_0x2ae5('0x6c')]=util['format'](_0x2ae5('0x56'),_0x2bce4f['serverUrl'],_0x237e5b[_0x2ae5('0x57')],md5(_0x237e5b['uniqueid']));}return getConnection(_0x2bce4f)[_0x2ae5('0x3b')](function(_0x5cd03b){_0x1ce157=_0x5cd03b;return getUser(_0x2bce4f,_0x514e84[_0x2ae5('0xd')],_0x1ce157);})['then'](function(_0x1558a7){_0xd6b44b=_0x1558a7;logger[_0x2ae5('0xc')](_0x2ae5('0x58'),_0xd6b44b['id']);return getEndUser(_0x2bce4f,_0x237e5b[_0x2ae5('0x6d')],_0x237e5b[_0x2ae5('0x6e')],_0x1ce157);})[_0x2ae5('0x3b')](function(_0x574be9){_0x4fa25a=_0x574be9;logger[_0x2ae5('0xc')](_0x2ae5('0x5a'),_0x4fa25a['id']);return getTicket(_0x2bce4f,_0xd6b44b,_0x4fa25a,_0x5c5f24,_0x237e5b,_0x5c5f24[_0x2ae5('0x6f')],_0x1ce157,_0x2ae5('0x70'));})[_0x2ae5('0x3b')](function(_0x4f1c35){_0x33a29a=_0x4f1c35;logger['info'](_0x2ae5('0x5c'));logger['info'](_0x2ae5('0x5d'),_0x33a29a['id']);return setRelationship(_0x1ce157,_0xd6b44b,_0x33a29a,_0x2ae5('0x5e'));})[_0x2ae5('0x3b')](function(){return setRelationship(_0x1ce157,_0x4fa25a,_0x33a29a,_0x2ae5('0x5f'));})[_0x2ae5('0x3b')](function(){return getServerInfo(_0x1ce157);})[_0x2ae5('0x3b')](function(_0x23423e){var _0x968a6f=parseInt(_0x23423e[_0x2ae5('0x60')]['charAt'](0x0));var _0x59c0a8=util[_0x2ae5('0x21')](_0x2ae5('0x71'),_0x2bce4f[_0x2ae5('0x51')],_0x33a29a['id']);if(_0x968a6f>0x6){_0x59c0a8=util[_0x2ae5('0x21')](_0x2ae5('0x62'),_0x2bce4f['remoteUri'],_0x33a29a['id']);}logger[_0x2ae5('0xc')](_0x2ae5('0x6b'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2ae5('0x21')](_0x2ae5('0x64'),_0x514e84[_0x2ae5('0xd')]),_0x2ae5('0x72'),{'uri':_0x59c0a8});})['catch'](function(_0x482ace){logger[_0x2ae5('0x66')](_0x2ae5('0x6b'),JSON[_0x2ae5('0x1f')](_0x482ace));});};exports[_0x2ae5('0x73')]=function(_0x36c2f2,_0x4e44f7,_0x5e4196,_0xfb468a,_0x9e6cb4,_0x57d6d8){var _0x435e49,_0x46f0c3,_0x19422e,_0x199a0a;_0x57d6d8[_0x2ae5('0x51')]=intUtil[_0x2ae5('0x53')](_0x57d6d8[_0x2ae5('0x51')]);_0x57d6d8[_0x2ae5('0x52')]=intUtil[_0x2ae5('0x53')](_0x57d6d8[_0x2ae5('0x52')]);def[_0x2ae5('0x74')]=util[_0x2ae5('0x21')]('%s/service/v4_1/rest.php',_0x57d6d8[_0x2ae5('0x51')]);if(_0x9e6cb4&&_0x9e6cb4[_0x2ae5('0x54')]){logger[_0x2ae5('0xc')]('['+_0x4e44f7['lastevent'][_0x2ae5('0x75')]()+']',_0x2ae5('0x76'));_0x4e44f7[_0x2ae5('0x6c')]=util['format'](_0x2ae5('0x56'),_0x57d6d8['serverUrl'],_0x4e44f7[_0x2ae5('0x57')],md5(_0x4e44f7[_0x2ae5('0x57')]));}else{_0x4e44f7[_0x2ae5('0x6c')]='';}return getConnection(_0x57d6d8)[_0x2ae5('0x3b')](function(_0x39b27b){_0x199a0a=_0x39b27b;if(!_[_0x2ae5('0x77')](_0xfb468a)){return getUser(_0x57d6d8,_0xfb468a['name'],_0x199a0a);}else{return getUser(_0x57d6d8,null,_0x199a0a);}})[_0x2ae5('0x3b')](function(_0x2cffb0){_0x435e49=_0x2cffb0;logger[_0x2ae5('0xc')](_0x2ae5('0x58'),_0x435e49['id']);return getEndUser(_0x57d6d8,_0x4e44f7[_0x2ae5('0x59')],_0x4e44f7['calleridnum'],_0x199a0a);})[_0x2ae5('0x3b')](function(_0x2b8113){_0x46f0c3=_0x2b8113;logger[_0x2ae5('0xc')](_0x2ae5('0x5a'),_0x46f0c3['id']);return getTicket(_0x57d6d8,_0x435e49,_0x46f0c3,_0x5e4196,_0x4e44f7,_0x5e4196['Fields'],_0x199a0a,_0x2ae5('0x5b'));})[_0x2ae5('0x3b')](function(_0x20dbbf){_0x19422e=_0x20dbbf;logger[_0x2ae5('0xc')](_0x2ae5('0x5c'));logger[_0x2ae5('0xc')](_0x2ae5('0x5d'),_0x19422e['id']);return setRelationship(_0x199a0a,_0x435e49,_0x19422e,_0x2ae5('0x5e'));})[_0x2ae5('0x3b')](function(){return setRelationship(_0x199a0a,_0x46f0c3,_0x19422e,'contacts');})[_0x2ae5('0x3b')](function(){return getServerInfo(_0x199a0a);})[_0x2ae5('0x65')](function(_0x481216){logger[_0x2ae5('0x66')]('['+_0x4e44f7[_0x2ae5('0x78')][_0x2ae5('0x75')]()+']',JSON[_0x2ae5('0x1f')](_0x481216));});};
\ No newline at end of file
+var _0xac22=['Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','monitor_format','lastevent','Inbound','lodash','request-promise','bluebird','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','Creating\x20new\x20ticket...','name','getString','Subjects','created_by','description','Descriptions','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','length','forEach','variableName','set_entry','JSON','stringify','Calls','format','Basic\x20%s','apiKey','toString','base64','isNil','get_entry_list','Employees','user_name','then','find','entry_list','value','info','Agent\x20found!','resolve','name_value_list','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','first_name','<unknown>','Caller\x20-\x20%s','[HTTP]','merge','map','string','nameField','customField','toLowerCase','content','idField','custom_fields','push','type','customVariable','Variable','login','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','queue','remoteUri','stripTrailingSlash','uri','%s/service/v4_1/rest.php','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','users','contacts','%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','user:%s','trigger:browser:url','catch','error','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridnum','Outbound','version','charAt'];(function(_0x349b00,_0x5b58c3){var _0x45744f=function(_0x3caf27){while(--_0x3caf27){_0x349b00['push'](_0x349b00['shift']());}};_0x45744f(++_0x5b58c3);}(_0xac22,0xf0));var _0x2ac2=function(_0xe111ba,_0x400a05){_0xe111ba=_0xe111ba-0x0;var _0x2894f3=_0xac22[_0xe111ba];return _0x2894f3;};'use strict';var _=require(_0x2ac2('0x0'));var rp=require(_0x2ac2('0x1'));var BPromise=require(_0x2ac2('0x2'));var md5=require(_0x2ac2('0x3'));var util=require(_0x2ac2('0x4'));var Redis=require(_0x2ac2('0x5'));var intUtil=require(_0x2ac2('0x6'));var config=require(_0x2ac2('0x7'));var logger=require('../../../../config/logger')(_0x2ac2('0x8'));config[_0x2ac2('0x9')]=_[_0x2ac2('0xa')](config[_0x2ac2('0x9')],{'host':_0x2ac2('0xb'),'port':0x18eb});var io=require(_0x2ac2('0xc'))(new Redis(config[_0x2ac2('0x9')]));var def={'method':_0x2ac2('0xd'),'json':!![]};function emit(_0x4b9b99,_0x1a0d60,_0x1e52b4){io['to'](_0x4b9b99)[_0x2ac2('0xe')](_0x1a0d60,_0x1e52b4);}function getTicket(_0x467a92,_0xc55201,_0x28ab76,_0x3eca88,_0x27f73d,_0xd360e5,_0x2a33cf,_0x5698d1){logger['info'](_0x2ac2('0xf'));var _0x231fd1=new Date();var _0x147a61=[{'name':_0x2ac2('0x10'),'value':intUtil[_0x2ac2('0x11')](_0x3eca88[_0x2ac2('0x12')],_0x27f73d,'\x20')},{'name':'assigned_user_id','value':_0xc55201['id']},{'name':_0x2ac2('0x13'),'value':_0xc55201['id']},{'name':_0x2ac2('0x14'),'value':intUtil[_0x2ac2('0x11')](_0x3eca88[_0x2ac2('0x15')],_0x27f73d,'\x0a')},{'name':'date_start','value':_0x231fd1[_0x2ac2('0x16')]()[_0x2ac2('0x17')](0x0,0x13)[_0x2ac2('0x18')]('T','\x20')},{'name':_0x2ac2('0x19'),'value':'0'},{'name':_0x2ac2('0x1a'),'value':'15'},{'name':_0x2ac2('0x1b'),'value':_0x28ab76['id']},{'name':_0x2ac2('0x1c'),'value':_0x2ac2('0x1d')},{'name':'parent_name','value':_0x28ab76[_0x2ac2('0x10')]},{'name':'direction','value':_0x5698d1}];if(_0xd360e5[_0x2ac2('0x1e')]){_[_0x2ac2('0x1f')](_0xd360e5,function(_0x58190a){if(_0x27f73d[_0x58190a['variableName']]){_0x147a61['push']({'name':_0x58190a['idField'],'value':_0x27f73d[_0x58190a[_0x2ac2('0x20')]]});}});}return request({'form':{'method':_0x2ac2('0x21'),'input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x2a33cf['id'],'module_name':_0x2ac2('0x24'),'name_value_list':_0x147a61})}});}function getAuth(_0x41b1a6){return util[_0x2ac2('0x25')](_0x2ac2('0x26'),new Buffer(_0x41b1a6[_0x2ac2('0x27')]+':X')[_0x2ac2('0x28')](_0x2ac2('0x29')));}function getServerInfo(_0x13eaee){return request({'form':{'method':'get_server_info','input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'session':_0x13eaee['id']})}});}function getUser(_0x15ac17,_0x2321ec,_0x14d362){if(!_[_0x2ac2('0x2a')](_0x2321ec)){logger['info']('Getting\x20agent\x20with\x20name',_0x2321ec);return request({'form':{'method':_0x2ac2('0x2b'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON['stringify']({'session':_0x14d362['id'],'module_name':_0x2ac2('0x2c'),'query':util[_0x2ac2('0x25')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x2321ec),'order_by':'','offset':'0','select_fields':['id',_0x2ac2('0x10'),_0x2ac2('0x2d')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2ac2('0x2e')](function(_0x579f46){if(_0x579f46['entry_list']['length']){var _0x2356ce=_[_0x2ac2('0x2f')](_0x579f46[_0x2ac2('0x30')],function(_0x1abd3a){return _0x1abd3a['name_value_list'][_0x2ac2('0x2d')][_0x2ac2('0x31')]===_0x2321ec;});if(_0x2356ce){logger[_0x2ac2('0x32')](_0x2ac2('0x33'));return BPromise[_0x2ac2('0x34')]({'id':_0x2356ce[_0x2ac2('0x35')]['id']['value'],'name':_0x2356ce['name_value_list'][_0x2ac2('0x10')][_0x2ac2('0x31')]});}}logger[_0x2ac2('0x32')](_0x2ac2('0x36'));return BPromise[_0x2ac2('0x34')]({'id':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x37')][_0x2ac2('0x31')],'name':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x2d')]['value']});});}else{logger[_0x2ac2('0x32')](_0x2ac2('0x38'));return BPromise[_0x2ac2('0x34')]({'id':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x37')][_0x2ac2('0x31')],'name':_0x14d362[_0x2ac2('0x35')][_0x2ac2('0x2d')][_0x2ac2('0x31')]});}}function getEndUser(_0x189796,_0x3d8946,_0x1945d7,_0x116e76){logger[_0x2ac2('0x32')]('Searching\x20enduser\x20with\x20phone',_0x1945d7);return request({'form':{'method':_0x2ac2('0x2b'),'input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x116e76['id'],'module_name':_0x2ac2('0x1d'),'query':util['format'](_0x2ac2('0x39'),_0x1945d7),'order_by':'','offset':'0','select_fields':['id','name',_0x2ac2('0x3a')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0x2ac2('0x2e')](function(_0x98d55c){if(_0x98d55c[_0x2ac2('0x30')]['length']){var _0x29461b=_[_0x2ac2('0x2f')](_0x98d55c['entry_list'],function(_0x387f2f){return _0x387f2f[_0x2ac2('0x35')]['phone_home'][_0x2ac2('0x31')]===_0x1945d7;});if(_0x29461b){logger['info']('Enduser\x20found!');return BPromise[_0x2ac2('0x34')]({'id':_0x29461b['name_value_list']['id'][_0x2ac2('0x31')],'name':_0x29461b[_0x2ac2('0x35')][_0x2ac2('0x10')][_0x2ac2('0x31')],'phone':_0x29461b[_0x2ac2('0x35')][_0x2ac2('0x3a')][_0x2ac2('0x31')]});}}else{logger[_0x2ac2('0x32')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'form':{'method':_0x2ac2('0x21'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'session':_0x116e76['id'],'module_name':_0x2ac2('0x1d'),'name_value_list':[{'name':_0x2ac2('0x3b'),'value':_0x3d8946!==_0x2ac2('0x3c')?_0x3d8946:util[_0x2ac2('0x25')](_0x2ac2('0x3d'),_0x1945d7)},{'name':'phone_home','value':_0x1945d7}]})}})[_0x2ac2('0x2e')](function(_0x36ccb7){logger[_0x2ac2('0x32')]('Enduser\x20created.');return BPromise[_0x2ac2('0x34')]({'id':_0x36ccb7['id'],'name':_0x36ccb7[_0x2ac2('0x30')][_0x2ac2('0x3b')][_0x2ac2('0x31')],'phone':_0x36ccb7[_0x2ac2('0x30')][_0x2ac2('0x3a')]['value']});});}});}function request(_0x240d4f){logger['debug'](_0x2ac2('0x3e'),JSON[_0x2ac2('0x23')](_0x240d4f));return rp(_[_0x2ac2('0x3f')](def,_0x240d4f));}function getTags(_0x1f23b4,_0x346b13){var _0x16461a=[];if(_0x1f23b4&&_0x1f23b4['length']>0x0){_0x16461a=_[_0x2ac2('0x40')](_0x1f23b4,_0x346b13);}return _0x16461a;}function getCustomFields(_0x4223bb,_0x153f65){var _0x1e59d6=[];var _0xe0e521={'custom_fields':[]};if(_0x4223bb[_0x2ac2('0x1e')]>0x0){_[_0x2ac2('0x1f')](_0x4223bb,function(_0xfdbf6d){if(_0xfdbf6d['type']===_0x2ac2('0x41')&&_0xfdbf6d[_0x2ac2('0x42')]&&!_0xfdbf6d[_0x2ac2('0x43')]){_0xe0e521[_0xfdbf6d[_0x2ac2('0x42')][_0x2ac2('0x44')]()]=_0xfdbf6d[_0x2ac2('0x45')][_0x2ac2('0x28')]();}else if(_0xfdbf6d['type']===_0x2ac2('0x41')&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d[_0x2ac2('0x43')]){_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0xfdbf6d[_0x2ac2('0x45')]['toString']()});}else if(_0xfdbf6d[_0x2ac2('0x49')]==='variable'&&_0xfdbf6d[_0x2ac2('0x20')]&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d[_0x2ac2('0x43')]){_0x153f65[_0xfdbf6d['variableName']]&&_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0x153f65[_0xfdbf6d[_0x2ac2('0x20')]][_0x2ac2('0x28')]()});}else if(_0xfdbf6d[_0x2ac2('0x49')]===_0x2ac2('0x4a')&&_0xfdbf6d[_0x2ac2('0x4b')]&&_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')]&&_0xfdbf6d[_0x2ac2('0x46')]&&_0xfdbf6d['customField']){_0x153f65[_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')][_0x2ac2('0x44')]()]&&_0xe0e521[_0x2ac2('0x47')][_0x2ac2('0x48')]({'id':_0xfdbf6d[_0x2ac2('0x46')],'value':_0x153f65[_0xfdbf6d[_0x2ac2('0x4b')][_0x2ac2('0x10')][_0x2ac2('0x44')]()][_0x2ac2('0x28')]()});}});}return _0xe0e521;}function getConnection(_0x160a44){return request({'method':_0x2ac2('0xd'),'form':{'method':_0x2ac2('0x4c'),'input_type':_0x2ac2('0x22'),'response_type':_0x2ac2('0x22'),'rest_data':JSON[_0x2ac2('0x23')]({'user_auth':{'user_name':_0x160a44['username'],'password':_0x160a44[_0x2ac2('0x4d')],'encryption':_0x2ac2('0x4e')},'application':_0x2ac2('0x4f')})}})[_0x2ac2('0x2e')](function(_0x11937d){var _0x324c3f=_0x11937d;if(_0x324c3f['id']){def[_0x2ac2('0x50')]=_0x324c3f['id'];return BPromise[_0x2ac2('0x34')](_0x324c3f);}else{throw new Error(util[_0x2ac2('0x25')]('Account\x20%d\x20is\x20not\x20valid',_0x160a44['id']));}});}function setRelationship(_0x3fca24,_0x3052a3,_0x3410fe,_0x3609a6){return request({'form':{'method':'set_relationship','input_type':_0x2ac2('0x22'),'response_type':'JSON','rest_data':JSON[_0x2ac2('0x23')]({'session':_0x3fca24['id'],'module_name':_0x2ac2('0x24'),'module_id':_0x3410fe['id'],'link_field_name':_0x3609a6,'related_ids':[_0x3052a3['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x2ac2('0x51')]=function(_0x2aa01a,_0x3dea23,_0x2b5ddf,_0x63663c,_0x23c1b1,_0x2b6e0d){var _0x2cee10,_0x273043,_0x422eab,_0x5bc7b1;_0x2b6e0d[_0x2ac2('0x52')]=intUtil[_0x2ac2('0x53')](_0x2b6e0d[_0x2ac2('0x52')]);_0x2b6e0d['serverUrl']=intUtil['stripTrailingSlash'](_0x2b6e0d['serverUrl']);def[_0x2ac2('0x54')]=util[_0x2ac2('0x25')](_0x2ac2('0x55'),_0x2b6e0d[_0x2ac2('0x52')]);if(_0x23c1b1&&_0x23c1b1['monitor_format']){logger[_0x2ac2('0x32')](_0x2ac2('0x56'),_0x2ac2('0x57'));_0x3dea23['recordingURL']=util['format'](_0x2ac2('0x58'),_0x2b6e0d[_0x2ac2('0x59')],_0x3dea23[_0x2ac2('0x5a')],md5(_0x3dea23[_0x2ac2('0x5a')]));}else{_0x3dea23['recordingURL']='';}return getConnection(_0x2b6e0d)[_0x2ac2('0x2e')](function(_0x5edb2f){_0x5bc7b1=_0x5edb2f;return getUser(_0x2b6e0d,_0x63663c[_0x2ac2('0x10')],_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x26c2c4){_0x2cee10=_0x26c2c4;logger['info'](_0x2ac2('0x5b'),_0x2cee10['id']);return getEndUser(_0x2b6e0d,_0x3dea23[_0x2ac2('0x5c')],_0x3dea23['calleridnum'],_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x1ddd0b){_0x273043=_0x1ddd0b;logger[_0x2ac2('0x32')](_0x2ac2('0x5d'),_0x273043['id']);return getTicket(_0x2b6e0d,_0x2cee10,_0x273043,_0x2b5ddf,_0x3dea23,_0x2b5ddf[_0x2ac2('0x5e')],_0x5bc7b1,'Inbound');})[_0x2ac2('0x2e')](function(_0x3f62fc){_0x422eab=_0x3f62fc;logger[_0x2ac2('0x32')](_0x2ac2('0x5f'));logger['info'](_0x2ac2('0x60'),_0x422eab['id']);return setRelationship(_0x5bc7b1,_0x2cee10,_0x422eab,_0x2ac2('0x61'));})[_0x2ac2('0x2e')](function(){return setRelationship(_0x5bc7b1,_0x273043,_0x422eab,_0x2ac2('0x62'));})['then'](function(){return getServerInfo(_0x5bc7b1);})[_0x2ac2('0x2e')](function(_0x458aab){var _0x4c245e=parseInt(_0x458aab['version']['charAt'](0x0));var _0x549a6e=util[_0x2ac2('0x25')](_0x2ac2('0x63'),_0x2b6e0d['remoteUri'],_0x422eab['id']);if(_0x4c245e>0x6){_0x549a6e=util[_0x2ac2('0x25')](_0x2ac2('0x64'),_0x2b6e0d['remoteUri'],_0x422eab['id']);}logger['info'](_0x2ac2('0x56'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x2ac2('0x25')](_0x2ac2('0x65'),_0x63663c[_0x2ac2('0x10')]),_0x2ac2('0x66'),{'uri':_0x549a6e});})[_0x2ac2('0x67')](function(_0x1fdeaa){logger[_0x2ac2('0x68')]('[QUEUE]',JSON['stringify'](_0x1fdeaa));});};exports[_0x2ac2('0x69')]=function(_0x1a8d1c,_0x1863d8,_0x1abb52,_0x256fc9,_0x329805,_0x50a0f3,_0x5d772c){var _0x4f5b90,_0x31170f,_0x4426f5,_0x25eb42;_0x50a0f3[_0x2ac2('0x52')]=intUtil[_0x2ac2('0x53')](_0x50a0f3[_0x2ac2('0x52')]);_0x50a0f3[_0x2ac2('0x59')]=intUtil[_0x2ac2('0x53')](_0x50a0f3[_0x2ac2('0x59')]);def[_0x2ac2('0x54')]=util[_0x2ac2('0x25')](_0x2ac2('0x55'),_0x50a0f3[_0x2ac2('0x52')]);if(_0x5d772c&&_0x5d772c[_0x2ac2('0x6a')]&&_0x5d772c[_0x2ac2('0x6a')]!==_0x2ac2('0x6b')){logger[_0x2ac2('0x32')](_0x2ac2('0x6c'),_0x2ac2('0x57'));_0x1863d8[_0x2ac2('0x6d')]=util['format'](_0x2ac2('0x58'),_0x50a0f3[_0x2ac2('0x59')],_0x1863d8[_0x2ac2('0x5a')],md5(_0x1863d8[_0x2ac2('0x5a')]));}return getConnection(_0x50a0f3)[_0x2ac2('0x2e')](function(_0x1e1d72){_0x25eb42=_0x1e1d72;return getUser(_0x50a0f3,_0x256fc9[_0x2ac2('0x10')],_0x25eb42);})[_0x2ac2('0x2e')](function(_0x48287f){_0x4f5b90=_0x48287f;logger[_0x2ac2('0x32')]('The\x20User\x20ID\x20is:',_0x4f5b90['id']);return getEndUser(_0x50a0f3,_0x1863d8['destcalleridname'],_0x1863d8[_0x2ac2('0x6e')],_0x25eb42);})[_0x2ac2('0x2e')](function(_0x6a85c0){_0x31170f=_0x6a85c0;logger[_0x2ac2('0x32')](_0x2ac2('0x5d'),_0x31170f['id']);return getTicket(_0x50a0f3,_0x4f5b90,_0x31170f,_0x1abb52,_0x1863d8,_0x1abb52[_0x2ac2('0x5e')],_0x25eb42,_0x2ac2('0x6f'));})['then'](function(_0x200e2f){_0x4426f5=_0x200e2f;logger['info'](_0x2ac2('0x5f'));logger[_0x2ac2('0x32')](_0x2ac2('0x60'),_0x4426f5['id']);return setRelationship(_0x25eb42,_0x4f5b90,_0x4426f5,'users');})[_0x2ac2('0x2e')](function(){return setRelationship(_0x25eb42,_0x31170f,_0x4426f5,_0x2ac2('0x62'));})[_0x2ac2('0x2e')](function(){return getServerInfo(_0x25eb42);})[_0x2ac2('0x2e')](function(_0x2a7142){var _0x24d1e5=parseInt(_0x2a7142[_0x2ac2('0x70')][_0x2ac2('0x71')](0x0));var _0x492d78=util[_0x2ac2('0x25')](_0x2ac2('0x63'),_0x50a0f3[_0x2ac2('0x52')],_0x4426f5['id']);if(_0x24d1e5>0x6){_0x492d78=util[_0x2ac2('0x25')](_0x2ac2('0x64'),_0x50a0f3[_0x2ac2('0x52')],_0x4426f5['id']);}logger[_0x2ac2('0x32')]('[OUTBOUND]',_0x2ac2('0x72'));emit(util[_0x2ac2('0x25')](_0x2ac2('0x65'),_0x256fc9[_0x2ac2('0x10')]),_0x2ac2('0x66'),{'uri':_0x492d78});})[_0x2ac2('0x67')](function(_0x4c3022){logger[_0x2ac2('0x68')](_0x2ac2('0x6c'),JSON['stringify'](_0x4c3022));});};exports['unmanaged']=function(_0x35bb6d,_0x5497a4,_0x4ec360,_0x171b83,_0x5c332d,_0x675ae8){var _0x1e735f,_0x47e8a3,_0x3349de,_0x5bccb8;_0x675ae8[_0x2ac2('0x52')]=intUtil['stripTrailingSlash'](_0x675ae8[_0x2ac2('0x52')]);_0x675ae8[_0x2ac2('0x59')]=intUtil['stripTrailingSlash'](_0x675ae8[_0x2ac2('0x59')]);def['uri']=util['format']('%s/service/v4_1/rest.php',_0x675ae8[_0x2ac2('0x52')]);if(_0x5c332d&&_0x5c332d[_0x2ac2('0x73')]){logger[_0x2ac2('0x32')]('['+_0x5497a4[_0x2ac2('0x74')]['toUpperCase']()+']',_0x2ac2('0x57'));_0x5497a4[_0x2ac2('0x6d')]=util['format'](_0x2ac2('0x58'),_0x675ae8[_0x2ac2('0x59')],_0x5497a4[_0x2ac2('0x5a')],md5(_0x5497a4['uniqueid']));}else{_0x5497a4[_0x2ac2('0x6d')]='';}return getConnection(_0x675ae8)['then'](function(_0x41d63e){_0x5bccb8=_0x41d63e;if(!_[_0x2ac2('0x2a')](_0x171b83)){return getUser(_0x675ae8,_0x171b83['name'],_0x5bccb8);}else{return getUser(_0x675ae8,null,_0x5bccb8);}})[_0x2ac2('0x2e')](function(_0x389788){_0x1e735f=_0x389788;logger[_0x2ac2('0x32')]('The\x20User\x20ID\x20is:',_0x1e735f['id']);return getEndUser(_0x675ae8,_0x5497a4[_0x2ac2('0x5c')],_0x5497a4['calleridnum'],_0x5bccb8);})[_0x2ac2('0x2e')](function(_0x425587){_0x47e8a3=_0x425587;logger['info'](_0x2ac2('0x5d'),_0x47e8a3['id']);return getTicket(_0x675ae8,_0x1e735f,_0x47e8a3,_0x4ec360,_0x5497a4,_0x4ec360[_0x2ac2('0x5e')],_0x5bccb8,_0x2ac2('0x75'));})[_0x2ac2('0x2e')](function(_0x30659e){_0x3349de=_0x30659e;logger[_0x2ac2('0x32')]('Ticket\x20created!');logger[_0x2ac2('0x32')](_0x2ac2('0x60'),_0x3349de['id']);return setRelationship(_0x5bccb8,_0x1e735f,_0x3349de,_0x2ac2('0x61'));})['then'](function(){return setRelationship(_0x5bccb8,_0x47e8a3,_0x3349de,_0x2ac2('0x62'));})[_0x2ac2('0x2e')](function(){return getServerInfo(_0x5bccb8);})[_0x2ac2('0x67')](function(_0x6e94b7){logger[_0x2ac2('0x68')]('['+_0x5497a4['lastevent']['toUpperCase']()+']',JSON[_0x2ac2('0x23')](_0x6e94b7));});};
\ No newline at end of file
index 7a88062..932f1b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2170=['name','toLowerCase','keyValue','format','%s:\x20%s','key','keyContent','keyType','stripTrailingSlash','lastIndexOf','validateEmail','test','lodash','length','sortBy','type','string','push','content','variable','variableName','toString','customVariable','Variable'];(function(_0x4cbce7,_0x139ba2){var _0x127bf5=function(_0x50eaf7){while(--_0x50eaf7){_0x4cbce7['push'](_0x4cbce7['shift']());}};_0x127bf5(++_0x139ba2);}(_0x2170,0x12c));var _0x0217=function(_0x420204,_0xaae94d){_0x420204=_0x420204-0x0;var _0x93aaad=_0x2170[_0x420204];return _0x93aaad;};'use strict';var _=require(_0x0217('0x0'));var util=require('util');exports['getString']=function(_0x35a49b,_0x542a63,_0x3660ce){var _0x20ff7d=[];if(_0x35a49b[_0x0217('0x1')]>0x0){var _0x4697ad=_[_0x0217('0x2')](_0x35a49b,['id']);for(var _0xe70193=0x0;_0xe70193<_0x4697ad[_0x0217('0x1')];_0xe70193++){var _0x3f3174=_0x4697ad[_0xe70193];if(_0x3f3174[_0x0217('0x3')]===_0x0217('0x4')){_0x20ff7d[_0x0217('0x5')](_0x3f3174[_0x0217('0x6')]);}else if(_0x3f3174['type']===_0x0217('0x7')&&_0x3f3174[_0x0217('0x8')]){_0x542a63[_0x3f3174[_0x0217('0x8')]]&&_0x20ff7d[_0x0217('0x5')](_0x542a63[_0x3f3174['variableName']][_0x0217('0x9')]());}else if(_0x3f3174[_0x0217('0x3')]===_0x0217('0xa')&&_0x3f3174[_0x0217('0xb')]&&_0x3f3174[_0x0217('0xb')][_0x0217('0xc')]){_0x542a63[_0x3f3174['Variable'][_0x0217('0xc')]['toLowerCase']()]&&_0x20ff7d[_0x0217('0x5')](_0x542a63[_0x3f3174[_0x0217('0xb')][_0x0217('0xc')][_0x0217('0xd')]()][_0x0217('0x9')]());}else if(_0x3f3174[_0x0217('0x3')]===_0x0217('0xe')){if(_0x3f3174['keyType']===_0x0217('0x4')&&_0x3f3174['key']){_0x20ff7d[_0x0217('0x5')](util[_0x0217('0xf')](_0x0217('0x10'),_0x3f3174[_0x0217('0x11')],_0x3f3174[_0x0217('0x12')]));}else if(_0x3f3174['keyType']===_0x0217('0x7')&&_0x3f3174['variableName']&&_0x3f3174[_0x0217('0x11')]){_0x542a63[_0x3f3174[_0x0217('0x8')]]&&_0x20ff7d[_0x0217('0x5')](util['format'](_0x0217('0x10'),_0x3f3174['key'],_0x542a63[_0x3f3174[_0x0217('0x8')]]));}else if(_0x3f3174[_0x0217('0x13')]===_0x0217('0xa')&&_0x3f3174[_0x0217('0xb')]&&_0x3f3174[_0x0217('0xb')][_0x0217('0xc')]&&_0x3f3174['key']){_0x542a63[_0x3f3174['Variable'][_0x0217('0xc')]['toLowerCase']()]&&_0x20ff7d[_0x0217('0x5')](util['format'](_0x0217('0x10'),_0x3f3174[_0x0217('0x11')],_0x542a63[_0x3f3174[_0x0217('0xb')][_0x0217('0xc')][_0x0217('0xd')]()]));}}}}return _0x20ff7d['join'](_0x3660ce);};exports[_0x0217('0x14')]=function(_0x5552bf){var _0x39bf37=_0x5552bf['slice'](-0x1);if(_0x39bf37==='/'){_0x5552bf=_0x5552bf['substring'](0x0,_0x5552bf[_0x0217('0x15')](_0x39bf37));}return _0x5552bf;};exports[_0x0217('0x16')]=function(_0x701e43){if(!_['isNil'](_0x701e43)&&_0x701e43!==''){var _0x540b1b=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x540b1b[_0x0217('0x17')](String(_0x701e43)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xc626=['substring','lastIndexOf','validateEmail','isNil','lodash','util','getString','length','sortBy','type','string','content','variable','variableName','toString','customVariable','name','Variable','toLowerCase','keyValue','keyType','key','push','format','%s:\x20%s','keyContent','join','stripTrailingSlash','slice'];(function(_0x2331ef,_0x2483c1){var _0x2370c3=function(_0x2d5771){while(--_0x2d5771){_0x2331ef['push'](_0x2331ef['shift']());}};_0x2370c3(++_0x2483c1);}(_0xc626,0x1f1));var _0x6c62=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc626[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x6c62('0x0'));var util=require(_0x6c62('0x1'));exports[_0x6c62('0x2')]=function(_0xe3ee46,_0x4babd7,_0x48ad96){var _0x5a6f6c=[];if(_0xe3ee46[_0x6c62('0x3')]>0x0){var _0x586cdd=_[_0x6c62('0x4')](_0xe3ee46,['id']);for(var _0x242739=0x0;_0x242739<_0x586cdd[_0x6c62('0x3')];_0x242739++){var _0x335c9f=_0x586cdd[_0x242739];if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0x6')){_0x5a6f6c['push'](_0x335c9f[_0x6c62('0x7')]);}else if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0x8')&&_0x335c9f['variableName']){_0x4babd7[_0x335c9f[_0x6c62('0x9')]]&&_0x5a6f6c['push'](_0x4babd7[_0x335c9f[_0x6c62('0x9')]][_0x6c62('0xa')]());}else if(_0x335c9f[_0x6c62('0x5')]===_0x6c62('0xb')&&_0x335c9f['Variable']&&_0x335c9f['Variable'][_0x6c62('0xc')]){_0x4babd7[_0x335c9f[_0x6c62('0xd')][_0x6c62('0xc')][_0x6c62('0xe')]()]&&_0x5a6f6c['push'](_0x4babd7[_0x335c9f[_0x6c62('0xd')][_0x6c62('0xc')]['toLowerCase']()][_0x6c62('0xa')]());}else if(_0x335c9f['type']===_0x6c62('0xf')){if(_0x335c9f[_0x6c62('0x10')]===_0x6c62('0x6')&&_0x335c9f[_0x6c62('0x11')]){_0x5a6f6c[_0x6c62('0x12')](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x335c9f[_0x6c62('0x15')]));}else if(_0x335c9f[_0x6c62('0x10')]===_0x6c62('0x8')&&_0x335c9f[_0x6c62('0x9')]&&_0x335c9f['key']){_0x4babd7[_0x335c9f[_0x6c62('0x9')]]&&_0x5a6f6c['push'](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x4babd7[_0x335c9f[_0x6c62('0x9')]]));}else if(_0x335c9f[_0x6c62('0x10')]==='customVariable'&&_0x335c9f[_0x6c62('0xd')]&&_0x335c9f[_0x6c62('0xd')]['name']&&_0x335c9f['key']){_0x4babd7[_0x335c9f[_0x6c62('0xd')]['name']['toLowerCase']()]&&_0x5a6f6c[_0x6c62('0x12')](util[_0x6c62('0x13')](_0x6c62('0x14'),_0x335c9f[_0x6c62('0x11')],_0x4babd7[_0x335c9f['Variable'][_0x6c62('0xc')][_0x6c62('0xe')]()]));}}}}return _0x5a6f6c[_0x6c62('0x16')](_0x48ad96);};exports[_0x6c62('0x17')]=function(_0x43b21d){var _0x12053e=_0x43b21d[_0x6c62('0x18')](-0x1);if(_0x12053e==='/'){_0x43b21d=_0x43b21d[_0x6c62('0x19')](0x0,_0x43b21d[_0x6c62('0x1a')](_0x12053e));}return _0x43b21d;};exports[_0x6c62('0x1b')]=function(_0x542220){if(!_[_0x6c62('0x1c')](_0x542220)&&_0x542220!==''){var _0x738cfb=/^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;return _0x738cfb['test'](String(_0x542220)['toLowerCase']());}else{return![];}};
\ No newline at end of file
index 858fee0..81710c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['redis','defaults','localhost','emit','length','forEach','includes','string','picklist','type','idField','toString','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','getString','Subjects','POST','format','remoteUri','create','sessionName','HelpDesk','stringify','success','error','catch','statusCode','Getting\x20agent\x20with\x20email','GET','%s/webservice.php','query','username','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;','result','Agent\x20found!','resolve','email1','first_name','last_name','userId','[vTiger],\x20%s,\x20%s,\x20%s','getUser','admin','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','phone','getEndUser','accessKey','getchallenge','then','login','token','Account\x20%d\x20is\x20not\x20valid','getConnection','[HTTP]','queue','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','recordingURL','email','The\x20User\x20ID\x20is:','calleridnum','Fields','Ticket\x20created!','The\x20Ticket\x20ID\x20is:','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','outbound','stripTrailingSlash','recordingFormat','none','[OUTBOUND]','uniqueid','destcalleridname','destcalleridnum','The\x20Enduser\x20ID\x20is:','split','unmanaged','lastevent','toUpperCase','calleridname','lodash','request-promise','bluebird','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger'];(function(_0x3d8f02,_0x145784){var _0x157f5c=function(_0x1ba222){while(--_0x1ba222){_0x3d8f02['push'](_0x3d8f02['shift']());}};_0x157f5c(++_0x145784);}(_0x34e8,0x12c));var _0x834e=function(_0x14718e,_0x2c1245){_0x14718e=_0x14718e-0x0;var _0x1835d4=_0x34e8[_0x14718e];return _0x1835d4;};'use strict';var _=require(_0x834e('0x0'));var rp=require(_0x834e('0x1'));var BPromise=require(_0x834e('0x2'));var md5=require(_0x834e('0x3'));var util=require('util');var Redis=require(_0x834e('0x4'));var intUtil=require(_0x834e('0x5'));var config=require(_0x834e('0x6'));var logger=require(_0x834e('0x7'))(_0x834e('0x8'));config[_0x834e('0x9')]=_[_0x834e('0xa')](config['redis'],{'host':_0x834e('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x834e('0x9')]));function emit(_0x3cc2e3,_0x3a3ef6,_0x2e69e2){io['to'](_0x3cc2e3)[_0x834e('0xc')](_0x3a3ef6,_0x2e69e2);}function getCustomFields(_0x23501c,_0x363786){var _0x1af45a={};if(_0x23501c[_0x834e('0xd')]>0x0){_[_0x834e('0xe')](_0x23501c,function(_0x1e41fe){if(_[_0x834e('0xf')]([_0x834e('0x10'),_0x834e('0x11')],_0x1e41fe[_0x834e('0x12')])&&_0x1e41fe[_0x834e('0x13')]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x1e41fe['content'][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='variable'&&_0x1e41fe[_0x834e('0x15')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe[_0x834e('0x15')]]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['variableName']][_0x834e('0x14')]();}else if(_0x1e41fe[_0x834e('0x12')]==='customVariable'&&_0x1e41fe[_0x834e('0x16')]&&_0x1e41fe['Variable'][_0x834e('0x17')]&&_0x1e41fe[_0x834e('0x13')]&&_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()]){_0x1af45a[_0x1e41fe[_0x834e('0x13')]]=_0x363786[_0x1e41fe['Variable'][_0x834e('0x17')][_0x834e('0x18')]()][_0x834e('0x14')]();}});}return _0x1af45a;}function createTicket(_0xb993a1,_0x237947,_0x254677,_0x1dd214,_0x595515,_0x2545b4,_0x1fd2c6){logger[_0x834e('0x19')](_0x834e('0x1a'));var _0x4ab05d=_[_0x834e('0x1b')]({'parent_id':'','assigned_user_id':_0x237947['id'],'ticketpriorities':_0x834e('0x1c'),'ticketstatus':'Open','ticket_title':intUtil[_0x834e('0x1d')](_0x1dd214[_0x834e('0x1e')],_0x595515,'\x20'),'description':intUtil[_0x834e('0x1d')](_0x1dd214['Descriptions'],_0x595515,'\x0a'),'contact_id':_0x254677['id']},getCustomFields(_0x2545b4,_0x595515));var _0x4e3f48={'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0xb993a1[_0x834e('0x21')]),'form':{'operation':_0x834e('0x22'),'username':_0xb993a1['username'],'sessionName':_0x1fd2c6[_0x834e('0x23')],'elementType':_0x834e('0x24'),'element':JSON[_0x834e('0x25')](_0x4ab05d)},'json':!![]};return request(_0x4e3f48)['then'](function(_0x24fcf7){if(_0x24fcf7[_0x834e('0x26')]){return BPromise['resolve']({'id':_0x24fcf7['result']['id']});}else{throw new Error(util[_0x834e('0x20')]('Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s',JSON[_0x834e('0x25')](_0x24fcf7[_0x834e('0x27')])));}})[_0x834e('0x28')](function(_0x2cc2eb){var _0x3cd928=_0x2cc2eb[_0x834e('0x29')]||0x1f4;logger['error']('[vTiger],\x20%s,\x20%s,\x20%s','createTicket',_0x3cd928,JSON['stringify'](_0x2cc2eb));});}function getUser(_0x2c7a8d,_0x567cea,_0x106d6a){if(intUtil['validateEmail'](_0x567cea)){logger[_0x834e('0x19')](_0x834e('0x2a'),_0x567cea);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x2c7a8d[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x2c7a8d[_0x834e('0x2e')],'sessionName':_0x106d6a[_0x834e('0x23')],'query':util['format'](_0x834e('0x2f'),_0x567cea)},'json':!![]})['then'](function(_0x2c75c2){if(_0x2c75c2[_0x834e('0x26')]&&_0x2c75c2[_0x834e('0x30')][_0x834e('0xd')]){logger[_0x834e('0x19')](_0x834e('0x31'));return BPromise[_0x834e('0x32')]({'id':_0x2c75c2[_0x834e('0x30')][0x0]['id'],'email':_0x2c75c2[_0x834e('0x30')][0x0][_0x834e('0x33')],'name':_0x2c75c2['result'][0x0][_0x834e('0x34')]+'\x20'+_0x2c75c2[_0x834e('0x30')][_0x834e('0x35')]});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':'admin'});}})['catch'](function(_0x3e58fa){var _0x41bf4d=_0x3e58fa[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x41bf4d,JSON['stringify'](_0x3e58fa));});}else{logger[_0x834e('0x19')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x834e('0x32')]({'id':_0x106d6a[_0x834e('0x36')],'email':_0x2c7a8d['username'],'name':_0x834e('0x39')})[_0x834e('0x28')](function(_0x491c28){var _0x481f70=_0x491c28[_0x834e('0x29')]||0x1f4;logger[_0x834e('0x27')](_0x834e('0x37'),_0x834e('0x38'),_0x481f70,JSON[_0x834e('0x25')](_0x491c28));});}}function getEndUser(_0x4ca43c,_0x1c5ed6,_0x548d1d,_0x50c243){logger[_0x834e('0x19')]('Searching\x20end\x20user\x20with\x20phone',_0x548d1d);return request({'method':_0x834e('0x2b'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x4ca43c[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x2d'),'username':_0x4ca43c['username'],'sessionName':_0x50c243[_0x834e('0x23')],'query':util[_0x834e('0x20')](_0x834e('0x3a'),_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d,_0x548d1d)},'json':!![]})['then'](function(_0x35380e){if(_0x35380e[_0x834e('0x26')]&&_0x35380e['result'][_0x834e('0xd')]){logger['info'](_0x834e('0x3b'));return BPromise[_0x834e('0x32')]({'id':_0x35380e['result'][0x0]['id'],'name':_0x35380e['result'][0x0][_0x834e('0x3c')]+'\x20'+_0x35380e[_0x834e('0x30')][0x0][_0x834e('0x3d')],'phone':_0x548d1d});}else{logger[_0x834e('0x19')](_0x834e('0x3e'));return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')]('%s/webservice.php',_0x4ca43c[_0x834e('0x21')]),'form':{'operation':'create','sessionName':_0x50c243[_0x834e('0x23')],'elementType':'Contacts','element':JSON[_0x834e('0x25')]({'lastname':_0x1c5ed6,'phone':_0x548d1d,'assigned_user_id':'\x20'})},'json':!![]})['then'](function(_0x361f60){logger[_0x834e('0x19')]('Enduser\x20created.');return BPromise[_0x834e('0x32')]({'id':_0x361f60[_0x834e('0x30')]['id'],'name':_0x361f60[_0x834e('0x30')][_0x834e('0x3d')],'phone':_0x361f60[_0x834e('0x30')][_0x834e('0x3f')]});})[_0x834e('0x28')](function(_0x3ccd8e){var _0x5dc63b=_0x3ccd8e[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x40'),_0x5dc63b,JSON['stringify'](_0x3ccd8e));});}});}function getConnection(_0x112306){var _0x42fd90=_0x112306[_0x834e('0x2e')];var _0x2112d5=_0x112306[_0x834e('0x41')];return request({'method':_0x834e('0x2b'),'uri':util['format']('%s/webservice.php',_0x112306[_0x834e('0x21')]),'qs':{'operation':_0x834e('0x42'),'username':_0x42fd90},'json':!![]})[_0x834e('0x43')](function(_0x40ff5a){if(_0x40ff5a[_0x834e('0x26')]){return request({'method':_0x834e('0x1f'),'uri':util[_0x834e('0x20')](_0x834e('0x2c'),_0x112306[_0x834e('0x21')]),'form':{'operation':_0x834e('0x44'),'username':_0x42fd90,'accessKey':md5(_0x40ff5a[_0x834e('0x30')][_0x834e('0x45')]+_0x2112d5)},'json':!![]});}})[_0x834e('0x43')](function(_0x1a3237){if(_0x1a3237[_0x834e('0x26')]){return BPromise[_0x834e('0x32')](_0x1a3237[_0x834e('0x30')]);}else{throw new Error(util[_0x834e('0x20')](_0x834e('0x46'),_0x112306['id']));}})[_0x834e('0x28')](function(_0x4cfacd){var _0x1cc0b8=_0x4cfacd[_0x834e('0x29')]||0x1f4;logger['error'](_0x834e('0x37'),_0x834e('0x47'),_0x1cc0b8,JSON['stringify'](_0x4cfacd));});}function request(_0x3dcca3){logger[_0x834e('0x19')](_0x834e('0x48'),JSON[_0x834e('0x25')](_0x3dcca3));return rp(_0x3dcca3);}exports[_0x834e('0x49')]=function(_0xb77aab,_0x4549ba,_0x4a8b32,_0x1ad7fe,_0x8bc6c6,_0x3e0550){var _0x363675,_0x86ad2b,_0x396bbe,_0x344b51;_0x3e0550[_0x834e('0x21')]=intUtil['stripTrailingSlash'](_0x3e0550[_0x834e('0x21')]);if(_0x8bc6c6&&_0x8bc6c6['monitor_format']){logger[_0x834e('0x19')]('[QUEUE]',_0x834e('0x4a'));_0x4549ba['recordingURL']=util['format'](_0x834e('0x4b'),_0x3e0550[_0x834e('0x4c')],_0x4549ba['uniqueid'],md5(_0x4549ba['uniqueid']));}else{_0x4549ba[_0x834e('0x4d')]='';}return getConnection(_0x3e0550)[_0x834e('0x43')](function(_0x138ed2){_0x344b51=_0x138ed2;return getUser(_0x3e0550,_0x1ad7fe[_0x834e('0x4e')],_0x344b51);})[_0x834e('0x43')](function(_0x315858){_0x363675=_0x315858;logger[_0x834e('0x19')](_0x834e('0x4f'),_0x363675['id']);return getEndUser(_0x3e0550,_0x4549ba['calleridname'],_0x4549ba[_0x834e('0x50')],_0x344b51);})[_0x834e('0x43')](function(_0x5d5ac2){_0x86ad2b=_0x5d5ac2;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x86ad2b['id']);return createTicket(_0x3e0550,_0x363675,_0x86ad2b,_0x4a8b32,_0x4549ba,_0x4a8b32[_0x834e('0x51')],_0x344b51);})[_0x834e('0x43')](function(_0x5160c4){_0x396bbe=_0x5160c4;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x396bbe['id']);var _0x5a2924=util[_0x834e('0x20')](_0x834e('0x54'),_0x3e0550[_0x834e('0x21')],_['split'](_0x396bbe['id'],'x')[0x1]);logger[_0x834e('0x19')](_0x834e('0x55'),_0x834e('0x56'));emit(util[_0x834e('0x20')](_0x834e('0x57'),_0x1ad7fe[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5a2924});})[_0x834e('0x28')](function(_0x208c21){logger[_0x834e('0x27')](_0x834e('0x55'),JSON[_0x834e('0x25')](_0x208c21));});};exports[_0x834e('0x59')]=function(_0x1659c8,_0x460a7a,_0x17b8e3,_0x297cce,_0x14ed83,_0x193a15,_0x3e3467){var _0xed4081,_0x2cb233,_0x5c83eb,_0x2145cf;_0x193a15[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x193a15[_0x834e('0x21')]);_0x193a15['serverUrl']=intUtil[_0x834e('0x5a')](_0x193a15['serverUrl']);if(_0x3e3467&&_0x3e3467['recordingFormat']&&_0x3e3467[_0x834e('0x5b')]!==_0x834e('0x5c')){logger[_0x834e('0x19')](_0x834e('0x5d'),_0x834e('0x4a'));_0x460a7a[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x193a15['serverUrl'],_0x460a7a[_0x834e('0x5e')],md5(_0x460a7a['uniqueid']));}return getConnection(_0x193a15)[_0x834e('0x43')](function(_0xd35dda){_0x2145cf=_0xd35dda;return getUser(_0x193a15,_0x297cce['email'],_0x2145cf);})['then'](function(_0x4a4def){_0xed4081=_0x4a4def;logger[_0x834e('0x19')](_0x834e('0x4f'),_0xed4081['id']);return getEndUser(_0x193a15,_0x460a7a[_0x834e('0x5f')],_0x460a7a[_0x834e('0x60')],_0x2145cf);})['then'](function(_0x2b0d93){_0x2cb233=_0x2b0d93;logger[_0x834e('0x19')](_0x834e('0x61'),_0x2cb233['id']);return createTicket(_0x193a15,_0xed4081,_0x2cb233,_0x17b8e3,_0x460a7a,_0x17b8e3[_0x834e('0x51')],_0x2145cf);})[_0x834e('0x43')](function(_0x28b5c9){_0x5c83eb=_0x28b5c9;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')](_0x834e('0x53'),_0x5c83eb['id']);var _0x5b2bf6=util[_0x834e('0x20')](_0x834e('0x54'),_0x193a15[_0x834e('0x21')],_[_0x834e('0x62')](_0x5c83eb['id'],'x')[0x1]);logger['info'](_0x834e('0x5d'),'Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util['format']('user:%s',_0x297cce[_0x834e('0x17')]),_0x834e('0x58'),{'uri':_0x5b2bf6});})['catch'](function(_0x2645df){logger[_0x834e('0x27')]('[OUTBOUND]',JSON[_0x834e('0x25')](_0x2645df));});};exports[_0x834e('0x63')]=function(_0x4b88e7,_0x5df169,_0x346be5,_0x2a42a3,_0x8bc7d9,_0x44c909){var _0x1d8e7,_0x493239,_0x264a6f,_0x520367;_0x44c909[_0x834e('0x21')]=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x21')]);_0x44c909['serverUrl']=intUtil[_0x834e('0x5a')](_0x44c909[_0x834e('0x4c')]);if(_0x8bc7d9&&_0x8bc7d9['monitor_format']){logger[_0x834e('0x19')]('['+_0x5df169[_0x834e('0x64')][_0x834e('0x65')]()+']','Recording\x20is\x20enabled!');_0x5df169[_0x834e('0x4d')]=util[_0x834e('0x20')](_0x834e('0x4b'),_0x44c909[_0x834e('0x4c')],_0x5df169[_0x834e('0x5e')],md5(_0x5df169[_0x834e('0x5e')]));}else{_0x5df169[_0x834e('0x4d')]='';}return getConnection(_0x44c909)[_0x834e('0x43')](function(_0xd49002){_0x520367=_0xd49002;return getUser(_0x44c909,'',_0x520367);})[_0x834e('0x43')](function(_0x57d898){_0x1d8e7=_0x57d898;logger['info']('The\x20User\x20ID\x20is:',_0x1d8e7['id']);return getEndUser(_0x44c909,_0x5df169[_0x834e('0x66')],_0x5df169[_0x834e('0x50')],_0x520367);})[_0x834e('0x43')](function(_0x37fa2c){_0x493239=_0x37fa2c;logger[_0x834e('0x19')]('The\x20Enduser\x20ID\x20is:',_0x493239['id']);return createTicket(_0x44c909,_0x1d8e7,_0x493239,_0x346be5,_0x5df169,_0x346be5['Fields'],_0x520367);})[_0x834e('0x43')](function(_0x1ad428){_0x264a6f=_0x1ad428;logger[_0x834e('0x19')](_0x834e('0x52'));logger[_0x834e('0x19')]('The\x20Ticket\x20ID\x20is:',_0x264a6f['id']);})[_0x834e('0x28')](function(_0x2b162a){logger[_0x834e('0x27')]('['+_0x5df169['lastevent'][_0x834e('0x65')]()+']',JSON[_0x834e('0x25')](_0x2b162a));});};
\ No newline at end of file
+var _0xe706=['result','Agent\x20found!','email1','first_name','last_name','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','userId','admin','getUser','username','Searching\x20end\x20user\x20with\x20phone','remoteUri','SELECT\x20id,\x20firstname,\x20lastname,\x20email,\x20phone,\x20mobile,\x20homephone,\x20otherphone,\x20assistantphone\x20FROM\x20Contacts\x20WHERE\x20phone\x20=\x20\x27%s\x27\x20OR\x20mobile\x20=\x27%s\x27\x20OR\x20homephone\x20=\x27%s\x27\x20OR\x20otherphone\x20=\x27%s\x27\x20OR\x20assistantphone\x20=\x27%s\x27;','Enduser\x20found!','firstname','lastname','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','Contacts','phone','catch','accessKey','getchallenge','token','Account\x20%d\x20is\x20not\x20valid','getConnection','queue','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','serverUrl','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','Ticket\x20created!','%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT','split','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','outbound','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','user:%s','unmanaged','lastevent','toUpperCase','lodash','request-promise','bluebird','util','ioredis','./util','../../../../config/environment','../../../../config/logger','vTiger','redis','defaults','localhost','socket.io-emitter','emit','length','forEach','includes','string','idField','content','toString','type','variable','variableName','Variable','name','toLowerCase','info','Creating\x20new\x20ticket...','merge','Normal','Open','Subjects','getString','Descriptions','POST','format','%s/webservice.php','create','stringify','then','success','resolve','Ticket\x20could\x20not\x20be\x20created\x20due\x20to:\x20%s','statusCode','error','[vTiger],\x20%s,\x20%s,\x20%s','validateEmail','Getting\x20agent\x20with\x20email','GET','query','sessionName','SELECT\x20first_name,\x20last_name,\x20email1\x20FROM\x20Users\x20WHERE\x20email1=\x27%s\x27;'];(function(_0x41c0ad,_0x2a73a1){var _0x115106=function(_0x1f0f60){while(--_0x1f0f60){_0x41c0ad['push'](_0x41c0ad['shift']());}};_0x115106(++_0x2a73a1);}(_0xe706,0xa3));var _0x6e70=function(_0xc54c54,_0x59053b){_0xc54c54=_0xc54c54-0x0;var _0x476786=_0xe706[_0xc54c54];return _0x476786;};'use strict';var _=require(_0x6e70('0x0'));var rp=require(_0x6e70('0x1'));var BPromise=require(_0x6e70('0x2'));var md5=require('md5');var util=require(_0x6e70('0x3'));var Redis=require(_0x6e70('0x4'));var intUtil=require(_0x6e70('0x5'));var config=require(_0x6e70('0x6'));var logger=require(_0x6e70('0x7'))(_0x6e70('0x8'));config[_0x6e70('0x9')]=_[_0x6e70('0xa')](config[_0x6e70('0x9')],{'host':_0x6e70('0xb'),'port':0x18eb});var io=require(_0x6e70('0xc'))(new Redis(config[_0x6e70('0x9')]));function emit(_0x45a2d4,_0x188ed3,_0x3c4843){io['to'](_0x45a2d4)[_0x6e70('0xd')](_0x188ed3,_0x3c4843);}function getCustomFields(_0x954545,_0x25e61c){var _0x100eb7={};if(_0x954545[_0x6e70('0xe')]>0x0){_[_0x6e70('0xf')](_0x954545,function(_0x3f474a){if(_[_0x6e70('0x10')]([_0x6e70('0x11'),'picklist'],_0x3f474a['type'])&&_0x3f474a[_0x6e70('0x12')]){_0x100eb7[_0x3f474a[_0x6e70('0x12')]]=_0x3f474a[_0x6e70('0x13')][_0x6e70('0x14')]();}else if(_0x3f474a[_0x6e70('0x15')]===_0x6e70('0x16')&&_0x3f474a[_0x6e70('0x17')]&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['variableName']]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['variableName']][_0x6e70('0x14')]();}else if(_0x3f474a['type']==='customVariable'&&_0x3f474a[_0x6e70('0x18')]&&_0x3f474a[_0x6e70('0x18')]['name']&&_0x3f474a[_0x6e70('0x12')]&&_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')][_0x6e70('0x1a')]()]){_0x100eb7[_0x3f474a['idField']]=_0x25e61c[_0x3f474a['Variable'][_0x6e70('0x19')]['toLowerCase']()][_0x6e70('0x14')]();}});}return _0x100eb7;}function createTicket(_0x173afe,_0x53acdc,_0x497d61,_0xc238ba,_0x208e21,_0x2368eb,_0x3a9978){logger[_0x6e70('0x1b')](_0x6e70('0x1c'));var _0x1b2453=_[_0x6e70('0x1d')]({'parent_id':'','assigned_user_id':_0x53acdc['id'],'ticketpriorities':_0x6e70('0x1e'),'ticketstatus':_0x6e70('0x1f'),'ticket_title':intUtil['getString'](_0xc238ba[_0x6e70('0x20')],_0x208e21,'\x20'),'description':intUtil[_0x6e70('0x21')](_0xc238ba[_0x6e70('0x22')],_0x208e21,'\x0a'),'contact_id':_0x497d61['id']},getCustomFields(_0x2368eb,_0x208e21));var _0x502b2d={'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x173afe['remoteUri']),'form':{'operation':_0x6e70('0x26'),'username':_0x173afe['username'],'sessionName':_0x3a9978['sessionName'],'elementType':'HelpDesk','element':JSON[_0x6e70('0x27')](_0x1b2453)},'json':!![]};return request(_0x502b2d)[_0x6e70('0x28')](function(_0x51d292){if(_0x51d292[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')]({'id':_0x51d292['result']['id']});}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x2b'),JSON[_0x6e70('0x27')](_0x51d292['error'])));}})['catch'](function(_0x2c4d37){var _0x3af17f=_0x2c4d37[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'createTicket',_0x3af17f,JSON[_0x6e70('0x27')](_0x2c4d37));});}function getUser(_0x406f29,_0xecf336,_0x2864a0){if(intUtil[_0x6e70('0x2f')](_0xecf336)){logger[_0x6e70('0x1b')](_0x6e70('0x30'),_0xecf336);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x406f29['remoteUri']),'qs':{'operation':_0x6e70('0x32'),'username':_0x406f29['username'],'sessionName':_0x2864a0[_0x6e70('0x33')],'query':util['format'](_0x6e70('0x34'),_0xecf336)},'json':!![]})[_0x6e70('0x28')](function(_0x30fa0b){if(_0x30fa0b['success']&&_0x30fa0b[_0x6e70('0x35')][_0x6e70('0xe')]){logger['info'](_0x6e70('0x36'));return BPromise[_0x6e70('0x2a')]({'id':_0x30fa0b['result'][0x0]['id'],'email':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x37')],'name':_0x30fa0b[_0x6e70('0x35')][0x0][_0x6e70('0x38')]+'\x20'+_0x30fa0b[_0x6e70('0x35')][_0x6e70('0x39')]});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29['username'],'name':_0x6e70('0x3c')});}})['catch'](function(_0x23cd1a){var _0x3222a2=_0x23cd1a[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x3222a2,JSON[_0x6e70('0x27')](_0x23cd1a));});}else{logger[_0x6e70('0x1b')](_0x6e70('0x3a'));return BPromise[_0x6e70('0x2a')]({'id':_0x2864a0[_0x6e70('0x3b')],'email':_0x406f29[_0x6e70('0x3e')],'name':_0x6e70('0x3c')})['catch'](function(_0x5446a2){var _0x5424eb=_0x5446a2[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),_0x6e70('0x3d'),_0x5424eb,JSON[_0x6e70('0x27')](_0x5446a2));});}}function getEndUser(_0x3bdd87,_0x572a71,_0x3b508c,_0x9e7ad2){logger[_0x6e70('0x1b')](_0x6e70('0x3f'),_0x3b508c);return request({'method':_0x6e70('0x31'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3bdd87[_0x6e70('0x40')]),'qs':{'operation':'query','username':_0x3bdd87[_0x6e70('0x3e')],'sessionName':_0x9e7ad2[_0x6e70('0x33')],'query':util[_0x6e70('0x24')](_0x6e70('0x41'),_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c,_0x3b508c)},'json':!![]})[_0x6e70('0x28')](function(_0x1de947){if(_0x1de947[_0x6e70('0x29')]&&_0x1de947['result']['length']){logger['info'](_0x6e70('0x42'));return BPromise[_0x6e70('0x2a')]({'id':_0x1de947[_0x6e70('0x35')][0x0]['id'],'name':_0x1de947[_0x6e70('0x35')][0x0][_0x6e70('0x43')]+'\x20'+_0x1de947['result'][0x0][_0x6e70('0x44')],'phone':_0x3b508c});}else{logger[_0x6e70('0x1b')](_0x6e70('0x45'));return request({'method':'POST','uri':util['format']('%s/webservice.php',_0x3bdd87[_0x6e70('0x40')]),'form':{'operation':'create','sessionName':_0x9e7ad2[_0x6e70('0x33')],'elementType':_0x6e70('0x46'),'element':JSON[_0x6e70('0x27')]({'lastname':_0x572a71,'phone':_0x3b508c,'assigned_user_id':'\x20'})},'json':!![]})[_0x6e70('0x28')](function(_0x59c87d){logger[_0x6e70('0x1b')]('Enduser\x20created.');return BPromise[_0x6e70('0x2a')]({'id':_0x59c87d[_0x6e70('0x35')]['id'],'name':_0x59c87d[_0x6e70('0x35')][_0x6e70('0x44')],'phone':_0x59c87d['result'][_0x6e70('0x47')]});})[_0x6e70('0x48')](function(_0x3d39c3){var _0xac87d6=_0x3d39c3[_0x6e70('0x2c')]||0x1f4;logger[_0x6e70('0x2d')](_0x6e70('0x2e'),'getEndUser',_0xac87d6,JSON[_0x6e70('0x27')](_0x3d39c3));});}});}function getConnection(_0x3884a4){var _0x10de2a=_0x3884a4[_0x6e70('0x3e')];var _0x3f86cf=_0x3884a4[_0x6e70('0x49')];return request({'method':_0x6e70('0x31'),'uri':util['format'](_0x6e70('0x25'),_0x3884a4['remoteUri']),'qs':{'operation':_0x6e70('0x4a'),'username':_0x10de2a},'json':!![]})[_0x6e70('0x28')](function(_0x4b351e){if(_0x4b351e['success']){return request({'method':_0x6e70('0x23'),'uri':util[_0x6e70('0x24')](_0x6e70('0x25'),_0x3884a4['remoteUri']),'form':{'operation':'login','username':_0x10de2a,'accessKey':md5(_0x4b351e[_0x6e70('0x35')][_0x6e70('0x4b')]+_0x3f86cf)},'json':!![]});}})[_0x6e70('0x28')](function(_0x79653){if(_0x79653[_0x6e70('0x29')]){return BPromise[_0x6e70('0x2a')](_0x79653['result']);}else{throw new Error(util[_0x6e70('0x24')](_0x6e70('0x4c'),_0x3884a4['id']));}})[_0x6e70('0x48')](function(_0x6ed023){var _0x2c3a7d=_0x6ed023['statusCode']||0x1f4;logger['error'](_0x6e70('0x2e'),_0x6e70('0x4d'),_0x2c3a7d,JSON[_0x6e70('0x27')](_0x6ed023));});}function request(_0x15f994){logger[_0x6e70('0x1b')]('[HTTP]',JSON[_0x6e70('0x27')](_0x15f994));return rp(_0x15f994);}exports[_0x6e70('0x4e')]=function(_0x1fa320,_0x23ebfb,_0x3aba34,_0x4a111a,_0x1142cd,_0x1dd242){var _0x2c20d3,_0x3fb0d3,_0x8ef4f7,_0x3fd03d;_0x1dd242['remoteUri']=intUtil[_0x6e70('0x4f')](_0x1dd242[_0x6e70('0x40')]);if(_0x1142cd&&_0x1142cd['monitor_format']){logger[_0x6e70('0x1b')](_0x6e70('0x50'),'Recording\x20is\x20enabled!');_0x23ebfb[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x1dd242[_0x6e70('0x53')],_0x23ebfb[_0x6e70('0x54')],md5(_0x23ebfb['uniqueid']));}else{_0x23ebfb[_0x6e70('0x51')]='';}return getConnection(_0x1dd242)[_0x6e70('0x28')](function(_0x10d655){_0x3fd03d=_0x10d655;return getUser(_0x1dd242,_0x4a111a[_0x6e70('0x55')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1fe13a){_0x2c20d3=_0x1fe13a;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x2c20d3['id']);return getEndUser(_0x1dd242,_0x23ebfb[_0x6e70('0x57')],_0x23ebfb[_0x6e70('0x58')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x1b12a1){_0x3fb0d3=_0x1b12a1;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x3fb0d3['id']);return createTicket(_0x1dd242,_0x2c20d3,_0x3fb0d3,_0x3aba34,_0x23ebfb,_0x3aba34[_0x6e70('0x5a')],_0x3fd03d);})[_0x6e70('0x28')](function(_0x324fa6){_0x8ef4f7=_0x324fa6;logger[_0x6e70('0x1b')](_0x6e70('0x5b'));logger[_0x6e70('0x1b')]('The\x20Ticket\x20ID\x20is:',_0x8ef4f7['id']);var _0x28898a=util[_0x6e70('0x24')](_0x6e70('0x5c'),_0x1dd242[_0x6e70('0x40')],_[_0x6e70('0x5d')](_0x8ef4f7['id'],'x')[0x1]);logger[_0x6e70('0x1b')]('[QUEUE]',_0x6e70('0x5e'));emit(util[_0x6e70('0x24')]('user:%s',_0x4a111a[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x28898a});})[_0x6e70('0x48')](function(_0x590f7f){logger['error'](_0x6e70('0x50'),JSON[_0x6e70('0x27')](_0x590f7f));});};exports[_0x6e70('0x60')]=function(_0x41a861,_0x10d299,_0x739946,_0x30cd88,_0x57bfe5,_0x4d47e1,_0x2c8dc6){var _0x1e23c5,_0x2bf9ec,_0x2ad395,_0x5b1e6f;_0x4d47e1['remoteUri']=intUtil[_0x6e70('0x4f')](_0x4d47e1[_0x6e70('0x40')]);_0x4d47e1['serverUrl']=intUtil['stripTrailingSlash'](_0x4d47e1[_0x6e70('0x53')]);if(_0x2c8dc6&&_0x2c8dc6['recordingFormat']&&_0x2c8dc6[_0x6e70('0x61')]!==_0x6e70('0x62')){logger[_0x6e70('0x1b')](_0x6e70('0x63'),_0x6e70('0x64'));_0x10d299[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x4d47e1['serverUrl'],_0x10d299[_0x6e70('0x54')],md5(_0x10d299[_0x6e70('0x54')]));}return getConnection(_0x4d47e1)[_0x6e70('0x28')](function(_0x346c79){_0x5b1e6f=_0x346c79;return getUser(_0x4d47e1,_0x30cd88[_0x6e70('0x55')],_0x5b1e6f);})['then'](function(_0x5f5b02){_0x1e23c5=_0x5f5b02;logger['info'](_0x6e70('0x56'),_0x1e23c5['id']);return getEndUser(_0x4d47e1,_0x10d299[_0x6e70('0x65')],_0x10d299[_0x6e70('0x66')],_0x5b1e6f);})['then'](function(_0x58cf1c){_0x2bf9ec=_0x58cf1c;logger[_0x6e70('0x1b')](_0x6e70('0x59'),_0x2bf9ec['id']);return createTicket(_0x4d47e1,_0x1e23c5,_0x2bf9ec,_0x739946,_0x10d299,_0x739946[_0x6e70('0x5a')],_0x5b1e6f);})[_0x6e70('0x28')](function(_0x2285f1){_0x2ad395=_0x2285f1;logger[_0x6e70('0x1b')]('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x2ad395['id']);var _0x30d11b=util[_0x6e70('0x24')]('%s/index.php?module=HelpDesk&view=Detail&record=%s&app=SUPPORT',_0x4d47e1[_0x6e70('0x40')],_['split'](_0x2ad395['id'],'x')[0x1]);logger['info'](_0x6e70('0x63'),_0x6e70('0x5e'));emit(util[_0x6e70('0x24')](_0x6e70('0x68'),_0x30cd88[_0x6e70('0x19')]),_0x6e70('0x5f'),{'uri':_0x30d11b});})['catch'](function(_0x370eeb){logger[_0x6e70('0x2d')](_0x6e70('0x63'),JSON[_0x6e70('0x27')](_0x370eeb));});};exports[_0x6e70('0x69')]=function(_0x13c092,_0x363722,_0xd9b4a9,_0x2f1362,_0x29621a,_0x575938){var _0x44c877,_0x303c5a,_0x577c3b,_0x5d398a;_0x575938['remoteUri']=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x40')]);_0x575938[_0x6e70('0x53')]=intUtil[_0x6e70('0x4f')](_0x575938[_0x6e70('0x53')]);if(_0x29621a&&_0x29621a['monitor_format']){logger['info']('['+_0x363722[_0x6e70('0x6a')][_0x6e70('0x6b')]()+']','Recording\x20is\x20enabled!');_0x363722[_0x6e70('0x51')]=util[_0x6e70('0x24')](_0x6e70('0x52'),_0x575938[_0x6e70('0x53')],_0x363722[_0x6e70('0x54')],md5(_0x363722[_0x6e70('0x54')]));}else{_0x363722[_0x6e70('0x51')]='';}return getConnection(_0x575938)[_0x6e70('0x28')](function(_0x3650e9){_0x5d398a=_0x3650e9;return getUser(_0x575938,'',_0x5d398a);})[_0x6e70('0x28')](function(_0x347cc4){_0x44c877=_0x347cc4;logger[_0x6e70('0x1b')](_0x6e70('0x56'),_0x44c877['id']);return getEndUser(_0x575938,_0x363722[_0x6e70('0x57')],_0x363722['calleridnum'],_0x5d398a);})['then'](function(_0x39ed95){_0x303c5a=_0x39ed95;logger['info'](_0x6e70('0x59'),_0x303c5a['id']);return createTicket(_0x575938,_0x44c877,_0x303c5a,_0xd9b4a9,_0x363722,_0xd9b4a9['Fields'],_0x5d398a);})['then'](function(_0x402f6f){_0x577c3b=_0x402f6f;logger['info']('Ticket\x20created!');logger[_0x6e70('0x1b')](_0x6e70('0x67'),_0x577c3b['id']);})[_0x6e70('0x48')](function(_0x4e9fda){logger['error']('['+_0x363722['lastevent'][_0x6e70('0x6b')]()+']',JSON['stringify'](_0x4e9fda));});};
\ No newline at end of file
index 767474d..bff99f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4ba=['map','forEach','string','type','nameField','toLowerCase','content','idField','customField','custom_fields','variable','variableName','push','name','Variable','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','%s/agent/tickets/%s','replace','/api/v2','error','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','Authorization','destcalleridname','destcalleridnum','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','The\x20Enduser\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger','zendesk','redis','defaults','localhost','socket.io-emitter','application/json','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','Subjects','getString','Descriptions','Fields','then','info','Getting\x20agent\x20with\x20email','%s/search.json','type:user\x20role:agent\x20email:%s','count','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Enduser\x20created.','password','%s:%s','username','authType','token','Basic\x20%s','toString','base64','debug','[HTTP]','stringify'];(function(_0x477bd1,_0x43589b){var _0x1186c2=function(_0x364b56){while(--_0x364b56){_0x477bd1['push'](_0x477bd1['shift']());}};_0x1186c2(++_0x43589b);}(_0xe4ba,0x113));var _0xae4b=function(_0xd53787,_0x486710){_0xd53787=_0xd53787-0x0;var _0x5c45a5=_0xe4ba[_0xd53787];return _0x5c45a5;};'use strict';var _=require(_0xae4b('0x0'));var rp=require(_0xae4b('0x1'));var md5=require('md5');var util=require(_0xae4b('0x2'));var Redis=require(_0xae4b('0x3'));var intUtil=require(_0xae4b('0x4'));var config=require(_0xae4b('0x5'));var logger=require(_0xae4b('0x6'))(_0xae4b('0x7'));config[_0xae4b('0x8')]=_[_0xae4b('0x9')](config[_0xae4b('0x8')],{'host':_0xae4b('0xa'),'port':0x18eb});var io=require(_0xae4b('0xb'))(new Redis(config[_0xae4b('0x8')]));function emit(_0x94731f,_0xd945fa,_0xf8af2e){io['to'](_0x94731f)['emit'](_0xd945fa,_0xf8af2e);}var headers={'Content-Type':_0xae4b('0xc'),'Accept':'application/json'};function getTicket(_0x5c63ca,_0x168eca,_0x4ff34a,_0x2498b2,_0x1d8985){logger['info'](_0xae4b('0xd'));return request({'uri':util[_0xae4b('0xe')](_0xae4b('0xf'),_0x5c63ca[_0xae4b('0x10')]),'method':_0xae4b('0x11'),'body':{'ticket':_['merge']({'requester_id':_0x4ff34a['id'],'submitter_id':_0x168eca?_0x168eca['id']:undefined,'assignee_id':_0x168eca?_0x168eca['id']:undefined,'tags':getTags(_0x2498b2[_0xae4b('0x12')],'name'),'subject':intUtil['getString'](_0x2498b2[_0xae4b('0x13')],_0x1d8985,'\x20'),'description':intUtil[_0xae4b('0x14')](_0x2498b2[_0xae4b('0x15')],_0x1d8985,'\x0a'),'comment':{'public':![],'body':intUtil[_0xae4b('0x14')](_0x2498b2['Descriptions'],_0x1d8985,'\x0a')}},getCustomFields(_0x2498b2[_0xae4b('0x16')],_0x1d8985))}})[_0xae4b('0x17')](function(_0x446ccf){logger['info']('Ticket\x20created!');return _0x446ccf['ticket'];});}function getUser(_0x12c51a,_0x51a5d0){if(intUtil['validateEmail'](_0x51a5d0)){logger[_0xae4b('0x18')](_0xae4b('0x19'),_0x51a5d0);return request({'uri':util[_0xae4b('0xe')](_0xae4b('0x1a'),_0x12c51a['remoteUri']),'qs':{'query':util['format'](_0xae4b('0x1b'),_0x51a5d0)}})[_0xae4b('0x17')](function(_0x37ef17){if(_0x37ef17[_0xae4b('0x1c')]){logger['info']('Agent\x20found!');return _[_0xae4b('0x1d')](_0x37ef17['results'],{'email':_0x51a5d0,'role':_0xae4b('0x1e')});}else{logger[_0xae4b('0x18')](_0xae4b('0x1f'));return request({'uri':util['format']('%s/users/me.json',_0x12c51a[_0xae4b('0x10')])})['then'](function(_0x4ef506){logger[_0xae4b('0x18')](_0xae4b('0x20'));return _0x4ef506[_0xae4b('0x21')];});}});}else{logger[_0xae4b('0x18')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xae4b('0xe')]('%s/users/me.json',_0x12c51a[_0xae4b('0x10')])})[_0xae4b('0x17')](function(_0x3233ae){logger[_0xae4b('0x18')](_0xae4b('0x20'));return _0x3233ae['user'];});}}function getEndUser(_0x34d8ba,_0x20f5de,_0x55d335){logger[_0xae4b('0x18')](_0xae4b('0x22'),_0x55d335);return request({'uri':util[_0xae4b('0xe')](_0xae4b('0x1a'),_0x34d8ba['remoteUri']),'qs':{'query':util[_0xae4b('0xe')](_0xae4b('0x23'),_0x55d335)}})[_0xae4b('0x17')](function(_0x2b73fc){var _0x5a2965;if(_0x2b73fc['results']['length']){_0x2b73fc[_0xae4b('0x24')]=_['filter'](_0x2b73fc[_0xae4b('0x24')],{'suspended':![],'role':'end-user'});if(_0x2b73fc[_0xae4b('0x24')][_0xae4b('0x25')]){_0x5a2965=_[_0xae4b('0x26')](_0x2b73fc['results']);}}if(_0x5a2965){logger[_0xae4b('0x18')](_0xae4b('0x27'));return _0x5a2965;}else{logger[_0xae4b('0x18')](_0xae4b('0x28'));return request({'uri':util['format'](_0xae4b('0x29'),_0x34d8ba[_0xae4b('0x10')]),'method':_0xae4b('0x11'),'body':{'user':{'role':_0xae4b('0x2a'),'name':util['format']('Caller\x20-\x20%s',_0x20f5de||_0x55d335),'phone':_0x55d335}}})['then'](function(_0x2ca2e4){logger['info'](_0xae4b('0x2b'));return _0x2ca2e4[_0xae4b('0x21')];});}});}function getAuth(_0x340ef3){var _0x51f0a9;if(_0x340ef3['authType']===_0xae4b('0x2c')){_0x51f0a9=util[_0xae4b('0xe')](_0xae4b('0x2d'),_0x340ef3[_0xae4b('0x2e')],_0x340ef3[_0xae4b('0x2c')]);}else if(_0x340ef3[_0xae4b('0x2f')]===_0xae4b('0x30')){_0x51f0a9=util[_0xae4b('0xe')]('%s/token:%s',_0x340ef3[_0xae4b('0x2e')],_0x340ef3[_0xae4b('0x30')]);}return util[_0xae4b('0xe')](_0xae4b('0x31'),new Buffer(_0x51f0a9)[_0xae4b('0x32')](_0xae4b('0x33')));}function request(_0x3ab234){logger[_0xae4b('0x34')](_0xae4b('0x35'),JSON[_0xae4b('0x36')](_0x3ab234));return rp(_[_0xae4b('0x9')](_0x3ab234,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x54fd7a,_0x455dd9){var _0x74f5cf=[];if(_0x54fd7a&&_0x54fd7a['length']>0x0){_0x74f5cf=_[_0xae4b('0x37')](_0x54fd7a,_0x455dd9);}return _0x74f5cf;}function getCustomFields(_0x24623f,_0x2e8a37){var _0x3a4198=[];var _0xa35d1b={'custom_fields':[]};if(_0x24623f[_0xae4b('0x25')]>0x0){_[_0xae4b('0x38')](_0x24623f,function(_0x3e77a2){if(_['includes']([_0xae4b('0x39'),'picklist'],_0x3e77a2[_0xae4b('0x3a')])&&_0x3e77a2[_0xae4b('0x3b')]&&!_0x3e77a2['customField']){_0xa35d1b[_0x3e77a2[_0xae4b('0x3b')][_0xae4b('0x3c')]()]=_0x3e77a2[_0xae4b('0x3d')]['toString']();}else if(_['includes']([_0xae4b('0x39'),'picklist'],_0x3e77a2['type'])&&_0x3e77a2[_0xae4b('0x3e')]&&_0x3e77a2[_0xae4b('0x3f')]){_0xa35d1b[_0xae4b('0x40')]['push']({'id':_0x3e77a2[_0xae4b('0x3e')],'value':_0x3e77a2[_0xae4b('0x3d')][_0xae4b('0x32')]()});}else if(_0x3e77a2['type']===_0xae4b('0x41')&&_0x3e77a2[_0xae4b('0x42')]&&_0x3e77a2['idField']&&_0x3e77a2[_0xae4b('0x3f')]){_0x2e8a37[_0x3e77a2[_0xae4b('0x42')]]&&_0xa35d1b[_0xae4b('0x40')][_0xae4b('0x43')]({'id':_0x3e77a2[_0xae4b('0x3e')],'value':_0x2e8a37[_0x3e77a2[_0xae4b('0x42')]]['toString']()});}else if(_0x3e77a2[_0xae4b('0x3a')]==='customVariable'&&_0x3e77a2['Variable']&&_0x3e77a2['Variable'][_0xae4b('0x44')]&&_0x3e77a2[_0xae4b('0x3e')]&&_0x3e77a2['customField']){_0x2e8a37[_0x3e77a2[_0xae4b('0x45')]['name'][_0xae4b('0x3c')]()]&&_0xa35d1b[_0xae4b('0x40')][_0xae4b('0x43')]({'id':_0x3e77a2[_0xae4b('0x3e')],'value':_0x2e8a37[_0x3e77a2[_0xae4b('0x45')]['name'][_0xae4b('0x3c')]()]['toString']()});}});}return _0xa35d1b;}exports[_0xae4b('0x46')]=function(_0x62ecb3,_0x24b699,_0x12952f,_0x1d5b45,_0x3c770d,_0x4c0da3){var _0x513312,_0x1158f6;_0x4c0da3[_0xae4b('0x10')]=intUtil[_0xae4b('0x47')](_0x4c0da3[_0xae4b('0x10')]);_0x4c0da3[_0xae4b('0x48')]=intUtil[_0xae4b('0x47')](_0x4c0da3[_0xae4b('0x48')]);if(_0x3c770d&&_0x3c770d[_0xae4b('0x49')]){logger[_0xae4b('0x18')](_0xae4b('0x4a'),_0xae4b('0x4b'));_0x24b699[_0xae4b('0x4c')]=util[_0xae4b('0xe')](_0xae4b('0x4d'),_0x4c0da3[_0xae4b('0x48')],_0x24b699[_0xae4b('0x4e')],md5(_0x24b699[_0xae4b('0x4e')]));}else{_0x24b699[_0xae4b('0x4c')]='';}headers['Authorization']=getAuth(_0x4c0da3);return getUser(_0x4c0da3,_0x1d5b45[_0xae4b('0x4f')])[_0xae4b('0x17')](function(_0x4c42db){_0x513312=_0x4c42db;logger[_0xae4b('0x18')](_0xae4b('0x50'),_0x513312['id']);return getEndUser(_0x4c0da3,_0x24b699[_0xae4b('0x51')],_0x24b699[_0xae4b('0x52')]);})[_0xae4b('0x17')](function(_0x5b0674){_0x1158f6=_0x5b0674;logger[_0xae4b('0x18')]('The\x20Enduser\x20ID\x20is:',_0x1158f6['id']);return getTicket(_0x4c0da3,_0x513312,_0x1158f6,_0x12952f,_0x24b699);})[_0xae4b('0x17')](function(_0x52f2c6){if(_0x52f2c6){logger[_0xae4b('0x18')](_0xae4b('0x53'),_0x52f2c6['id']);switch(_0x4c0da3['type']){case _0xae4b('0x54'):logger[_0xae4b('0x18')]('[QUEUE]',_0xae4b('0x55'));return request({'uri':util['format'](_0xae4b('0x56'),_0x4c0da3[_0xae4b('0x10')],_0x513312['id'],_0x52f2c6['id']),'method':_0xae4b('0x11')});case _0xae4b('0x57'):logger[_0xae4b('0x18')](_0xae4b('0x4a'),_0xae4b('0x58'));emit(util[_0xae4b('0xe')]('user:%s',_0x1d5b45[_0xae4b('0x44')]),_0xae4b('0x59'),{'uri':util[_0xae4b('0xe')](_0xae4b('0x5a'),_0x4c0da3[_0xae4b('0x10')][_0xae4b('0x5b')](_0xae4b('0x5c'),''),_0x52f2c6['id'])});break;default:logger[_0xae4b('0x5d')](_0xae4b('0x4a'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xae4b('0x5e')](function(_0x5b0687){logger['error'](_0xae4b('0x5f'),util[_0xae4b('0x60')](_0x5b0687,{'showHidden':!![],'depth':null}));});};exports[_0xae4b('0x61')]=function(_0x56cfa1,_0x339839,_0x2a3069,_0x248590,_0x354c0d,_0x2e212e,_0x4cda76){var _0x10058e,_0x3900da;_0x2e212e[_0xae4b('0x10')]=intUtil[_0xae4b('0x47')](_0x2e212e[_0xae4b('0x10')]);_0x2e212e[_0xae4b('0x48')]=intUtil[_0xae4b('0x47')](_0x2e212e[_0xae4b('0x48')]);if(_0x4cda76&&_0x4cda76[_0xae4b('0x62')]&&_0x4cda76[_0xae4b('0x62')]!==_0xae4b('0x63')){logger[_0xae4b('0x18')](_0xae4b('0x64'),_0xae4b('0x4b'));_0x339839[_0xae4b('0x4c')]=util[_0xae4b('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2e212e['serverUrl'],_0x339839['uniqueid'],md5(_0x339839[_0xae4b('0x4e')]));}headers[_0xae4b('0x65')]=getAuth(_0x2e212e);return getUser(_0x2e212e,_0x248590['email'])[_0xae4b('0x17')](function(_0x3d0ae){_0x10058e=_0x3d0ae;logger[_0xae4b('0x18')](_0xae4b('0x50'),_0x10058e['id']);return getEndUser(_0x2e212e,_0x339839[_0xae4b('0x66')],_0x339839[_0xae4b('0x67')]);})[_0xae4b('0x17')](function(_0x13589c){_0x3900da=_0x13589c;logger[_0xae4b('0x18')]('The\x20Enduser\x20ID\x20is:',_0x3900da['id']);return getTicket(_0x2e212e,_0x10058e,_0x3900da,_0x2a3069,_0x339839);})['then'](function(_0x1ddf64){if(_0x1ddf64){logger[_0xae4b('0x18')](_0xae4b('0x53'),_0x1ddf64['id']);switch(_0x2e212e[_0xae4b('0x3a')]){case _0xae4b('0x54'):logger[_0xae4b('0x18')]('[OUTBOUND]',_0xae4b('0x55'));return request({'uri':util[_0xae4b('0xe')](_0xae4b('0x56'),_0x2e212e['remoteUri'],_0x10058e['id'],_0x1ddf64['id']),'method':'POST'});case'newTab':logger[_0xae4b('0x18')]('[OUTBOUND]',_0xae4b('0x58'));emit(util['format']('user:%s',_0x248590[_0xae4b('0x44')]),'trigger:browser:url',{'uri':util[_0xae4b('0xe')](_0xae4b('0x5a'),_0x2e212e[_0xae4b('0x10')][_0xae4b('0x5b')](_0xae4b('0x5c'),''),_0x1ddf64['id'])});break;default:logger[_0xae4b('0x5d')]('[OUTBOUND]','Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0xae4b('0x5e')](function(_0x500c47){logger[_0xae4b('0x5d')](_0xae4b('0x68'),util[_0xae4b('0x60')](_0x500c47,{'showHidden':!![],'depth':null}));});};exports[_0xae4b('0x69')]=function(_0x5e83c1,_0x25a795,_0x409d90,_0x16163a,_0x5acb38,_0x4be1a1){var _0x2426b2,_0x4f49f9;_0x4be1a1[_0xae4b('0x10')]=intUtil['stripTrailingSlash'](_0x4be1a1['remoteUri']);_0x4be1a1[_0xae4b('0x48')]=intUtil[_0xae4b('0x47')](_0x4be1a1[_0xae4b('0x48')]);if(_0x5acb38&&_0x5acb38[_0xae4b('0x49')]){logger[_0xae4b('0x18')]('['+_0x25a795[_0xae4b('0x6a')][_0xae4b('0x6b')]()+']',_0xae4b('0x4b'));_0x25a795[_0xae4b('0x4c')]=util[_0xae4b('0xe')](_0xae4b('0x4d'),_0x4be1a1['serverUrl'],_0x25a795[_0xae4b('0x4e')],md5(_0x25a795[_0xae4b('0x4e')]));}else{_0x25a795[_0xae4b('0x4c')]='';}headers[_0xae4b('0x65')]=getAuth(_0x4be1a1);return getUser(_0x4be1a1)[_0xae4b('0x17')](function(_0x502d31){_0x2426b2=_0x502d31;logger[_0xae4b('0x18')](_0xae4b('0x50'),_0x2426b2['id']);return getEndUser(_0x4be1a1,_0x25a795[_0xae4b('0x51')],_0x25a795[_0xae4b('0x52')]);})[_0xae4b('0x17')](function(_0x26f5a3){_0x4f49f9=_0x26f5a3;logger[_0xae4b('0x18')](_0xae4b('0x6c'),_0x4f49f9['id']);return getTicket(_0x4be1a1,_0x2426b2,_0x4f49f9,_0x409d90,_0x25a795);})[_0xae4b('0x17')](function(_0x530d8f){if(_0x530d8f){logger['info'](_0xae4b('0x53'),_0x530d8f['id']);}})[_0xae4b('0x5e')](function(_0x591e3b){logger[_0xae4b('0x5d')]('['+_0x25a795[_0xae4b('0x6a')][_0xae4b('0x6b')]()+']'+_0xae4b('0x6d'),util[_0xae4b('0x60')](_0x591e3b,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x7e67=['token','username','Basic\x20%s','base64','debug','[HTTP]','stringify','map','includes','string','picklist','type','nameField','customField','content','toString','custom_fields','push','idField','variable','variableName','customVariable','Variable','toLowerCase','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','%s/agent/tickets/%s','error','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','recordingFormat','none','destcalleridname','destcalleridnum','integrationTab','[OUTBOUND]','replace','/api/v2','catch','unmanaged','lastevent','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/environment','../../../../config/logger','defaults','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','Tags','name','getString','Descriptions','Fields','then','Ticket\x20created!','ticket','type:user\x20role:agent\x20email:%s','find','results','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me.json','Admin\x20account\x20selected.','user','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','end-user','length','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s'];(function(_0x2cd944,_0x8ba004){var _0x39e44e=function(_0x3d60da){while(--_0x3d60da){_0x2cd944['push'](_0x2cd944['shift']());}};_0x39e44e(++_0x8ba004);}(_0x7e67,0xa8));var _0x77e6=function(_0x2da7d5,_0x42e03f){_0x2da7d5=_0x2da7d5-0x0;var _0x49f156=_0x7e67[_0x2da7d5];return _0x49f156;};'use strict';var _=require(_0x77e6('0x0'));var rp=require(_0x77e6('0x1'));var md5=require(_0x77e6('0x2'));var util=require(_0x77e6('0x3'));var Redis=require(_0x77e6('0x4'));var intUtil=require(_0x77e6('0x5'));var config=require(_0x77e6('0x6'));var logger=require(_0x77e6('0x7'))('zendesk');config['redis']=_[_0x77e6('0x8')](config['redis'],{'host':_0x77e6('0x9'),'port':0x18eb});var io=require(_0x77e6('0xa'))(new Redis(config['redis']));function emit(_0x116bf5,_0xf02582,_0x3f4a4e){io['to'](_0x116bf5)[_0x77e6('0xb')](_0xf02582,_0x3f4a4e);}var headers={'Content-Type':_0x77e6('0xc'),'Accept':'application/json'};function getTicket(_0x1ef857,_0x200c83,_0x2bbbd5,_0x465a0f,_0x63c29c){logger[_0x77e6('0xd')](_0x77e6('0xe'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x10'),_0x1ef857[_0x77e6('0x11')]),'method':_0x77e6('0x12'),'body':{'ticket':_['merge']({'requester_id':_0x2bbbd5['id'],'submitter_id':_0x200c83?_0x200c83['id']:undefined,'assignee_id':_0x200c83?_0x200c83['id']:undefined,'tags':getTags(_0x465a0f[_0x77e6('0x13')],_0x77e6('0x14')),'subject':intUtil[_0x77e6('0x15')](_0x465a0f['Subjects'],_0x63c29c,'\x20'),'description':intUtil[_0x77e6('0x15')](_0x465a0f[_0x77e6('0x16')],_0x63c29c,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x465a0f['Descriptions'],_0x63c29c,'\x0a')}},getCustomFields(_0x465a0f[_0x77e6('0x17')],_0x63c29c))}})[_0x77e6('0x18')](function(_0x12f07e){logger[_0x77e6('0xd')](_0x77e6('0x19'));return _0x12f07e[_0x77e6('0x1a')];});}function getUser(_0x508c6e,_0x1f7222){if(intUtil['validateEmail'](_0x1f7222)){logger[_0x77e6('0xd')]('Getting\x20agent\x20with\x20email',_0x1f7222);return request({'uri':util[_0x77e6('0xf')]('%s/search.json',_0x508c6e[_0x77e6('0x11')]),'qs':{'query':util[_0x77e6('0xf')](_0x77e6('0x1b'),_0x1f7222)}})['then'](function(_0x59c396){if(_0x59c396['count']){logger['info']('Agent\x20found!');return _[_0x77e6('0x1c')](_0x59c396[_0x77e6('0x1d')],{'email':_0x1f7222,'role':'agent'});}else{logger[_0x77e6('0xd')](_0x77e6('0x1e'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x1f'),_0x508c6e[_0x77e6('0x11')])})[_0x77e6('0x18')](function(_0x2abb05){logger[_0x77e6('0xd')](_0x77e6('0x20'));return _0x2abb05[_0x77e6('0x21')];});}});}else{logger[_0x77e6('0xd')](_0x77e6('0x1e'));return request({'uri':util['format'](_0x77e6('0x1f'),_0x508c6e[_0x77e6('0x11')])})[_0x77e6('0x18')](function(_0xd2da96){logger[_0x77e6('0xd')](_0x77e6('0x20'));return _0xd2da96[_0x77e6('0x21')];});}}function getEndUser(_0x343beb,_0x42d2ab,_0x439cba){logger[_0x77e6('0xd')](_0x77e6('0x22'),_0x439cba);return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x23'),_0x343beb['remoteUri']),'qs':{'query':util[_0x77e6('0xf')](_0x77e6('0x24'),_0x439cba)}})[_0x77e6('0x18')](function(_0x225057){var _0x1cf986;if(_0x225057[_0x77e6('0x1d')]['length']){_0x225057['results']=_['filter'](_0x225057['results'],{'suspended':![],'role':_0x77e6('0x25')});if(_0x225057[_0x77e6('0x1d')][_0x77e6('0x26')]){_0x1cf986=_[_0x77e6('0x27')](_0x225057[_0x77e6('0x1d')]);}}if(_0x1cf986){logger[_0x77e6('0xd')](_0x77e6('0x28'));return _0x1cf986;}else{logger['info'](_0x77e6('0x29'));return request({'uri':util[_0x77e6('0xf')](_0x77e6('0x2a'),_0x343beb[_0x77e6('0x11')]),'method':'POST','body':{'user':{'role':_0x77e6('0x25'),'name':util['format'](_0x77e6('0x2b'),_0x42d2ab||_0x439cba),'phone':_0x439cba}}})[_0x77e6('0x18')](function(_0xb2e7a0){logger['info'](_0x77e6('0x2c'));return _0xb2e7a0[_0x77e6('0x21')];});}});}function getAuth(_0x3224f0){var _0x2ee56b;if(_0x3224f0[_0x77e6('0x2d')]===_0x77e6('0x2e')){_0x2ee56b=util[_0x77e6('0xf')](_0x77e6('0x2f'),_0x3224f0['username'],_0x3224f0[_0x77e6('0x2e')]);}else if(_0x3224f0['authType']===_0x77e6('0x30')){_0x2ee56b=util['format']('%s/token:%s',_0x3224f0[_0x77e6('0x31')],_0x3224f0[_0x77e6('0x30')]);}return util['format'](_0x77e6('0x32'),new Buffer(_0x2ee56b)['toString'](_0x77e6('0x33')));}function request(_0x18aa62){logger[_0x77e6('0x34')](_0x77e6('0x35'),JSON[_0x77e6('0x36')](_0x18aa62));return rp(_['defaults'](_0x18aa62,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x15e187,_0x3205ae){var _0x436702=[];if(_0x15e187&&_0x15e187['length']>0x0){_0x436702=_[_0x77e6('0x37')](_0x15e187,_0x3205ae);}return _0x436702;}function getCustomFields(_0x1ac522,_0x44c211){var _0x222b8c=[];var _0x2b6d81={'custom_fields':[]};if(_0x1ac522['length']>0x0){_['forEach'](_0x1ac522,function(_0x1309b8){if(_[_0x77e6('0x38')]([_0x77e6('0x39'),_0x77e6('0x3a')],_0x1309b8[_0x77e6('0x3b')])&&_0x1309b8[_0x77e6('0x3c')]&&!_0x1309b8[_0x77e6('0x3d')]){_0x2b6d81[_0x1309b8[_0x77e6('0x3c')]['toLowerCase']()]=_0x1309b8[_0x77e6('0x3e')][_0x77e6('0x3f')]();}else if(_[_0x77e6('0x38')](['string',_0x77e6('0x3a')],_0x1309b8['type'])&&_0x1309b8['idField']&&_0x1309b8[_0x77e6('0x3d')]){_0x2b6d81[_0x77e6('0x40')][_0x77e6('0x41')]({'id':_0x1309b8[_0x77e6('0x42')],'value':_0x1309b8[_0x77e6('0x3e')][_0x77e6('0x3f')]()});}else if(_0x1309b8[_0x77e6('0x3b')]===_0x77e6('0x43')&&_0x1309b8[_0x77e6('0x44')]&&_0x1309b8['idField']&&_0x1309b8['customField']){_0x44c211[_0x1309b8[_0x77e6('0x44')]]&&_0x2b6d81[_0x77e6('0x40')]['push']({'id':_0x1309b8[_0x77e6('0x42')],'value':_0x44c211[_0x1309b8[_0x77e6('0x44')]][_0x77e6('0x3f')]()});}else if(_0x1309b8[_0x77e6('0x3b')]===_0x77e6('0x45')&&_0x1309b8[_0x77e6('0x46')]&&_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')]&&_0x1309b8[_0x77e6('0x42')]&&_0x1309b8[_0x77e6('0x3d')]){_0x44c211[_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')]['toLowerCase']()]&&_0x2b6d81[_0x77e6('0x40')]['push']({'id':_0x1309b8['idField'],'value':_0x44c211[_0x1309b8[_0x77e6('0x46')][_0x77e6('0x14')][_0x77e6('0x47')]()]['toString']()});}});}return _0x2b6d81;}exports[_0x77e6('0x48')]=function(_0x38844e,_0xd1a877,_0x6b0c78,_0x2e55ca,_0x5696d4,_0x4b3971){var _0x3c18ae,_0x88ab1e;_0x4b3971[_0x77e6('0x11')]=intUtil['stripTrailingSlash'](_0x4b3971[_0x77e6('0x11')]);_0x4b3971[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x4b3971['serverUrl']);if(_0x5696d4&&_0x5696d4[_0x77e6('0x4b')]){logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x4d'));_0xd1a877[_0x77e6('0x4e')]=util[_0x77e6('0xf')](_0x77e6('0x4f'),_0x4b3971[_0x77e6('0x49')],_0xd1a877[_0x77e6('0x50')],md5(_0xd1a877['uniqueid']));}else{_0xd1a877['recordingURL']='';}headers[_0x77e6('0x51')]=getAuth(_0x4b3971);return getUser(_0x4b3971,_0x2e55ca[_0x77e6('0x52')])['then'](function(_0x4a4bdd){_0x3c18ae=_0x4a4bdd;logger[_0x77e6('0xd')](_0x77e6('0x53'),_0x3c18ae['id']);return getEndUser(_0x4b3971,_0xd1a877[_0x77e6('0x54')],_0xd1a877[_0x77e6('0x55')]);})[_0x77e6('0x18')](function(_0x3e48db){_0x88ab1e=_0x3e48db;logger[_0x77e6('0xd')](_0x77e6('0x56'),_0x88ab1e['id']);return getTicket(_0x4b3971,_0x3c18ae,_0x88ab1e,_0x6b0c78,_0xd1a877);})[_0x77e6('0x18')](function(_0x11a6f2){if(_0x11a6f2){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x11a6f2['id']);switch(_0x4b3971[_0x77e6('0x3b')]){case'integrationTab':logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x57'));return request({'uri':util['format'](_0x77e6('0x58'),_0x4b3971['remoteUri'],_0x3c18ae['id'],_0x11a6f2['id']),'method':_0x77e6('0x12')});case _0x77e6('0x59'):logger[_0x77e6('0xd')](_0x77e6('0x4c'),_0x77e6('0x5a'));emit(util[_0x77e6('0xf')](_0x77e6('0x5b'),_0x2e55ca[_0x77e6('0x14')]),'trigger:browser:url',{'uri':util[_0x77e6('0xf')](_0x77e6('0x5c'),_0x4b3971[_0x77e6('0x11')]['replace']('/api/v2',''),_0x11a6f2['id'])});break;default:logger[_0x77e6('0x5d')](_0x77e6('0x4c'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})['catch'](function(_0x5e4691){logger['error'](_0x77e6('0x5e'),util[_0x77e6('0x5f')](_0x5e4691,{'showHidden':!![],'depth':null}));});};exports['outbound']=function(_0x19f6e4,_0x509081,_0x1bd929,_0x26f38b,_0x3012a3,_0x2603cc,_0x11c2fb){var _0x2a8e1a,_0x4c8ded;_0x2603cc[_0x77e6('0x11')]=intUtil['stripTrailingSlash'](_0x2603cc[_0x77e6('0x11')]);_0x2603cc[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x2603cc['serverUrl']);if(_0x11c2fb&&_0x11c2fb[_0x77e6('0x60')]&&_0x11c2fb[_0x77e6('0x60')]!==_0x77e6('0x61')){logger[_0x77e6('0xd')]('[OUTBOUND]',_0x77e6('0x4d'));_0x509081[_0x77e6('0x4e')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2603cc[_0x77e6('0x49')],_0x509081[_0x77e6('0x50')],md5(_0x509081[_0x77e6('0x50')]));}headers[_0x77e6('0x51')]=getAuth(_0x2603cc);return getUser(_0x2603cc,_0x26f38b[_0x77e6('0x52')])[_0x77e6('0x18')](function(_0x160a3e){_0x2a8e1a=_0x160a3e;logger[_0x77e6('0xd')]('The\x20User\x20ID\x20is:',_0x2a8e1a['id']);return getEndUser(_0x2603cc,_0x509081[_0x77e6('0x62')],_0x509081[_0x77e6('0x63')]);})[_0x77e6('0x18')](function(_0x2c16aa){_0x4c8ded=_0x2c16aa;logger[_0x77e6('0xd')](_0x77e6('0x56'),_0x4c8ded['id']);return getTicket(_0x2603cc,_0x2a8e1a,_0x4c8ded,_0x1bd929,_0x509081);})[_0x77e6('0x18')](function(_0x4e30d0){if(_0x4e30d0){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x4e30d0['id']);switch(_0x2603cc[_0x77e6('0x3b')]){case _0x77e6('0x64'):logger[_0x77e6('0xd')]('[OUTBOUND]',_0x77e6('0x57'));return request({'uri':util[_0x77e6('0xf')]('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x2603cc['remoteUri'],_0x2a8e1a['id'],_0x4e30d0['id']),'method':_0x77e6('0x12')});case _0x77e6('0x59'):logger[_0x77e6('0xd')](_0x77e6('0x65'),_0x77e6('0x5a'));emit(util['format'](_0x77e6('0x5b'),_0x26f38b[_0x77e6('0x14')]),'trigger:browser:url',{'uri':util[_0x77e6('0xf')](_0x77e6('0x5c'),_0x2603cc[_0x77e6('0x11')][_0x77e6('0x66')](_0x77e6('0x67'),''),_0x4e30d0['id'])});break;default:logger[_0x77e6('0x5d')](_0x77e6('0x65'),'Zendesk\x20account\x20type\x20not\x20recognized');}}})[_0x77e6('0x68')](function(_0x4ce3b9){logger[_0x77e6('0x5d')]('[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration',util['inspect'](_0x4ce3b9,{'showHidden':!![],'depth':null}));});};exports[_0x77e6('0x69')]=function(_0x36e74a,_0x1ef905,_0x35d455,_0x256ca5,_0x54e885,_0x8fb3f7){var _0x2a6f44,_0x3c82d0;_0x8fb3f7[_0x77e6('0x11')]=intUtil[_0x77e6('0x4a')](_0x8fb3f7[_0x77e6('0x11')]);_0x8fb3f7[_0x77e6('0x49')]=intUtil[_0x77e6('0x4a')](_0x8fb3f7[_0x77e6('0x49')]);if(_0x54e885&&_0x54e885[_0x77e6('0x4b')]){logger['info']('['+_0x1ef905[_0x77e6('0x6a')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1ef905['recordingURL']=util[_0x77e6('0xf')](_0x77e6('0x4f'),_0x8fb3f7['serverUrl'],_0x1ef905[_0x77e6('0x50')],md5(_0x1ef905['uniqueid']));}else{_0x1ef905[_0x77e6('0x4e')]='';}headers[_0x77e6('0x51')]=getAuth(_0x8fb3f7);return getUser(_0x8fb3f7)[_0x77e6('0x18')](function(_0x3f21f8){_0x2a6f44=_0x3f21f8;logger[_0x77e6('0xd')](_0x77e6('0x53'),_0x2a6f44['id']);return getEndUser(_0x8fb3f7,_0x1ef905[_0x77e6('0x54')],_0x1ef905[_0x77e6('0x55')]);})[_0x77e6('0x18')](function(_0x30acc0){_0x3c82d0=_0x30acc0;logger[_0x77e6('0xd')]('The\x20Enduser\x20ID\x20is:',_0x3c82d0['id']);return getTicket(_0x8fb3f7,_0x2a6f44,_0x3c82d0,_0x35d455,_0x1ef905);})[_0x77e6('0x18')](function(_0x307aaf){if(_0x307aaf){logger[_0x77e6('0xd')]('The\x20Ticket\x20ID\x20is:',_0x307aaf['id']);}})['catch'](function(_0xffbf27){logger[_0x77e6('0x5d')]('['+_0x1ef905[_0x77e6('0x6a')][_0x77e6('0x6b')]()+']'+'\x20Error\x20running\x20Zendesk\x20integration',util[_0x77e6('0x5f')](_0xffbf27,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 2ecd4e3..91a54a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x009f=['Using\x20the\x20admin\x20account!','Administrator','user','profile','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','moduleCreate','role','first_name','last_name','code','SUCCESS','details','startCase','Error:\x20','catch','contact_lead','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','uri','/crm/v2/Leads/search?criteria=((Phone:equals:','nothing','contact','lead','Leads','Owner','administrator','Subject','getString','Subjects','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','utc','mm:ss','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','lastevent','called','Call_Result','Called','complete','connect','Answered','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','starttime','agentcalledAt','Call_Type','Inbound','merge','Fields','err','stack','log','queue','host','stripTrailingSlash','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','calleridnum','The\x20Call\x20ID\x20is:','[QUEUE]','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','none','[OUTBOUND]','The\x20User\x20ID\x20is:','destcalleridnum','Outbound','user:%s','calleridname','toUpperCase','lodash','request-promise','md5','./util','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','localhost','socket.io-emitter','[HTTP]','stringify','length','forEach','picklist','idField','content','toString','type','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','POST','/oauth/v2/token','refreshToken','clientId','clientSecret','add','expires_in','seconds','error','Failing\x20creating\x20the\x20access_token','info','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','then','users','isArrayLikeObject','findIndex','email','Agent\x20found!'];(function(_0x4fa559,_0x5e7a03){var _0x59a8ed=function(_0x29a158){while(--_0x29a158){_0x4fa559['push'](_0x4fa559['shift']());}};_0x59a8ed(++_0x5e7a03);}(_0x009f,0x194));var _0xf009=function(_0x10291b,_0x518773){_0x10291b=_0x10291b-0x0;var _0x1d5fbe=_0x009f[_0x10291b];return _0x1d5fbe;};'use strict';var _=require(_0xf009('0x0'));var rp=require(_0xf009('0x1'));var md5=require(_0xf009('0x2'));var util=require('util');var intUtil=require(_0xf009('0x3'));var moment=require('moment');var Redis=require(_0xf009('0x4'));var BPromise=require(_0xf009('0x5'));var config=require(_0xf009('0x6'));var logger=require(_0xf009('0x7'))('zoho');config[_0xf009('0x8')]=_[_0xf009('0x9')](config[_0xf009('0x8')],{'host':_0xf009('0xa'),'port':0x18eb});var io=require(_0xf009('0xb'))(new Redis(config[_0xf009('0x8')]));function emit(_0x25e5f6,_0x2d1c8a,_0x616011){io['to'](_0x25e5f6)['emit'](_0x2d1c8a,_0x616011);}function request(_0xeb7077){logger['debug'](_0xf009('0xc'),JSON[_0xf009('0xd')](_0xeb7077));return rp(_0xeb7077);}function getCustomFields(_0x1798cf,_0x163f6f){var _0x48ac76={};if(_0x1798cf[_0xf009('0xe')]>0x0){_[_0xf009('0xf')](_0x1798cf,function(_0x50ef5c){if(_['includes'](['string',_0xf009('0x10')],_0x50ef5c['type'])&&_0x50ef5c[_0xf009('0x11')]){_0x48ac76[_0x50ef5c['idField']]=_0x50ef5c[_0xf009('0x12')][_0xf009('0x13')]();}else if(_0x50ef5c[_0xf009('0x14')]==='variable'&&_0x50ef5c['variableName']&&_0x50ef5c[_0xf009('0x11')]&&_0x163f6f[_0x50ef5c[_0xf009('0x15')]]){_0x48ac76[_0x50ef5c[_0xf009('0x11')]]=_0x163f6f[_0x50ef5c[_0xf009('0x15')]][_0xf009('0x13')]();}else if(_0x50ef5c[_0xf009('0x14')]===_0xf009('0x16')&&_0x50ef5c[_0xf009('0x17')]&&_0x50ef5c['Variable'][_0xf009('0x18')]&&_0x50ef5c[_0xf009('0x11')]&&_0x163f6f[_0x50ef5c[_0xf009('0x17')][_0xf009('0x18')][_0xf009('0x19')]()]){_0x48ac76[_0x50ef5c[_0xf009('0x11')]]=_0x163f6f[_0x50ef5c['Variable']['name'][_0xf009('0x19')]()][_0xf009('0x13')]();}});}return _0x48ac76;}function getName(_0x567a65){if(_0x567a65[_0xf009('0x1a')]('\x20')>0x0){var _0x3d4d80=_0x567a65[_0xf009('0x1b')](/ (.+)/);if(_0x3d4d80[0x1]){return _0x3d4d80;}}return[_0x567a65,_0x567a65];}var accountsTokens={};function getAccessToken(_0x2829b2){return new Promise(function(_0x26a767,_0x21887f){if(!_['isNil'](accountsTokens[_0x2829b2['id']])&&!_[_0xf009('0x1c')](accountsTokens[_0x2829b2['id']][_0xf009('0x1d')])){if(moment()[_0xf009('0x1e')](accountsTokens[_0x2829b2['id']]['expires_in'])){_0x26a767(accountsTokens[_0x2829b2['id']][_0xf009('0x1d')]);}}var _0x2b6a22;switch(_0x2829b2[_0xf009('0x1f')]){case'US':_0x2b6a22=_0xf009('0x20');break;case'AU':_0x2b6a22=_0xf009('0x21');break;case'EU':_0x2b6a22=_0xf009('0x22');break;case'IN':_0x2b6a22=_0xf009('0x23');break;case'CN':_0x2b6a22='https://accounts.zoho.com.cn';break;default:_0x2b6a22='https://accounts.zoho.eu';break;}var _0x4a3967={'method':_0xf009('0x24'),'uri':_0x2b6a22+_0xf009('0x25'),'qs':{'refresh_token':_0x2829b2[_0xf009('0x26')],'client_id':_0x2829b2[_0xf009('0x27')],'client_secret':_0x2829b2[_0xf009('0x28')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x4a3967)['then'](function(_0x305c16){accountsTokens[_0x2829b2['id']]={'access_token':_0x305c16[_0xf009('0x1d')],'expires_in':moment()[_0xf009('0x29')](_0x305c16[_0xf009('0x2a')],_0xf009('0x2b'))};_0x26a767(_0x305c16[_0xf009('0x1d')]);})['catch'](function(_0x61f9e4){logger[_0xf009('0x2c')](_0xf009('0x2d'),_0x61f9e4['stack']);_0x21887f(_0x61f9e4);});});}function getUser(_0x52bcf7,_0x285c93,_0xf0ee21,_0x375c25){logger[_0xf009('0x2e')](_0xf009('0x2f'));return request({'method':'GET','uri':util[_0xf009('0x30')](_0xf009('0x31'),_0x285c93),'qs':{'type':_0xf009('0x32')},'headers':{'Authorization':_0xf009('0x33')+_0x52bcf7},'json':!![]})[_0xf009('0x34')](function(_0x4016d8){if(_0x4016d8[_0xf009('0x35')]){var _0x69cdfa=-0x1;if(_[_0xf009('0x36')](_0x4016d8[_0xf009('0x35')])){if(!_[_0xf009('0x1c')](_0x375c25)){_0x69cdfa=_[_0xf009('0x37')](_0x4016d8['users'],function(_0x3d4928){return _0x3d4928[_0xf009('0x38')]===_0x375c25;});}if(_0x69cdfa>=0x0){logger[_0xf009('0x2e')](_0xf009('0x39'));}else{logger[_0xf009('0x2e')](_0xf009('0x3a'));_0x69cdfa=_[_0xf009('0x37')](_0x4016d8['users'],function(_0x426165){return _0x426165['profile']['name']===_0xf009('0x3b');});}return _0x4016d8[_0xf009('0x35')][_0x69cdfa];}else{if(_0x4016d8[_0xf009('0x3c')][_0xf009('0x3d')]['name']===_0xf009('0x3b')){logger[_0xf009('0x2e')](_0xf009('0x3a'));user=_0x4016d8['user'];return user;}else{logger[_0xf009('0x2c')]('The\x20failing\x20result\x20is',JSON[_0xf009('0xd')](_0x4016d8));throw new Error(_0xf009('0x3e')+JSON['stringify'](_0x4016d8));}}}else{logger['error']('The\x20failing\x20result\x20is',JSON['stringify'](_0x4016d8));throw new Error(_0xf009('0x3e')+JSON[_0xf009('0xd')](_0x4016d8));}})['catch'](function(_0x556a11){console['error'](_0x556a11);});}function getZohoUser(_0x3e94f8,_0x216585){return new BPromise(function(_0x2dc422,_0x31ab78){request(_0x3e94f8)[_0xf009('0x34')](function(_0x3ef979){var _0xf9f2e6=null;if(_0x3ef979){_0xf9f2e6=_0x3ef979[_0xf009('0x3f')][0x0];_0xf9f2e6[_0xf009('0x40')]=_0x216585;}_0x2dc422(_0xf9f2e6);})['catch'](function(_0x5ad298){_0x31ab78(_0x5ad298);});});}function createEndUser(_0x5adaf5,_0x575e1b,_0x202fd8,_0x3e0fcc,_0x4ffff2,_0x1b1fdc){var _0x202fd8=getName(_0x202fd8);return request({'method':_0xf009('0x24'),'uri':_0xf009('0x41')+_0x575e1b+'/crm/v2/'+_['startCase'](_0x1b1fdc[_0xf009('0x42')])+'s','body':{'data':[{'Last_Name':_0x202fd8[0x1],'First_Name':_0x202fd8[0x0],'Phone':_0x3e0fcc,'Owner':{'name':!_[_0xf009('0x1c')](_0x4ffff2[_0xf009('0x43')][_0xf009('0x18')])?_0x4ffff2[_0xf009('0x43')][_0xf009('0x18')]:!_[_0xf009('0x1c')](_0x4ffff2[_0xf009('0x44')])?_0x4ffff2[_0xf009('0x44')]+'\x20'+_0x4ffff2[_0xf009('0x45')]:_0x4ffff2['last_name'],'id':_0x4ffff2['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5adaf5},'json':!![]})['then'](function(_0x521582){if(_0x521582&&_0x521582[_0xf009('0x3f')][0x0][_0xf009('0x46')]===_0xf009('0x47')){var _0x1fca77=_0x521582[_0xf009('0x3f')][0x0][_0xf009('0x48')];_0x1fca77[_0xf009('0x40')]=_[_0xf009('0x49')](_0x1b1fdc['moduleCreate'])+'s';return _0x1fca77;}logger['error']('The\x20failing\x20result\x20is',JSON[_0xf009('0xd')](data));throw new Error(_0xf009('0x4a')+JSON['stringify'](data));})[_0xf009('0x4b')](function(_0x2c5b58){console['log']('CREATE\x20ERROR',_0x2c5b58);});}function getEndUser(_0x2f622e,_0x29ae9f,_0xf381c5,_0xff8321,_0xb69254,_0x28048a,_0x4478e3){var _0xdddd36={'method':'GET','uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x2f622e},'json':!![]};switch(_0x4478e3['moduleSearch']){case _0xf009('0x4c'):_0xdddd36['uri']=_0xf009('0x41')+_0x29ae9f+_0xf009('0x4d')+_0xb69254+'))';return getZohoUser(_0xdddd36,_0xf009('0x4e'))['then'](function(_0x4fa35f){if(_0x4fa35f)return _0x4fa35f;_0xdddd36[_0xf009('0x4f')]=_0xf009('0x41')+_0x29ae9f+_0xf009('0x50')+_0xb69254+'))';return getZohoUser(_0xdddd36,'Leads')['then'](function(_0x1f4c80){if(_0x1f4c80)return _0x1f4c80;if(_0x4478e3[_0xf009('0x42')]!=_0xf009('0x51')){return createEndUser(_0x2f622e,_0x29ae9f,_0xff8321,_0xb69254,_0x28048a,_0x4478e3);}else{return{};}});});break;case _0xf009('0x52'):_0xdddd36[_0xf009('0x4f')]=_0xf009('0x41')+_0x29ae9f+_0xf009('0x4d')+_0xb69254+'))';return getZohoUser(_0xdddd36,_0xf009('0x4e'))[_0xf009('0x34')](function(_0x24341a){if(_0x24341a)return _0x24341a;if(_0x4478e3[_0xf009('0x42')]!='nothing'){return createEndUser(_0x2f622e,_0x29ae9f,_0xff8321,_0xb69254,_0x28048a,_0x4478e3);}else{return{};}});break;case _0xf009('0x53'):_0xdddd36[_0xf009('0x4f')]='https://www.zohoapis.'+_0x29ae9f+_0xf009('0x50')+_0xb69254+'))';return getZohoUser(_0xdddd36,_0xf009('0x54'))[_0xf009('0x34')](function(_0x55c039){if(_0x55c039)return _0x55c039;if(_0x4478e3[_0xf009('0x42')]!=_0xf009('0x51')){return createEndUser(_0x2f622e,_0x29ae9f,_0xff8321,_0xb69254,_0x28048a,_0x4478e3);}else{return{};}});break;}}function getCall(_0x11c840,_0x11d694,_0x414f44,_0x290336,_0x203892,_0x448e73,_0x4315c6,_0x1f73be){logger[_0xf009('0x2e')]('Creating\x20new\x20call...');var _0x9191b3={};_0x9191b3[_0xf009('0x55')]={'name':!_['isNil'](_0x290336[_0xf009('0x43')][_0xf009('0x18')])&&!_['isNil'](_0x290336[_0xf009('0x3d')]['name'])&&_0x290336[_0xf009('0x3d')][_0xf009('0x18')]===_0xf009('0x56')?_0x290336['role'][_0xf009('0x18')]:!_[_0xf009('0x1c')](_0x290336[_0xf009('0x44')])?_0x290336['first_name']+'\x20'+_0x290336[_0xf009('0x45')]:_0x290336[_0xf009('0x45')],'id':_0x290336['id']};_0x9191b3[_0xf009('0x57')]=intUtil[_0xf009('0x58')](_0x448e73[_0xf009('0x59')],_0x4315c6,'\x20');_0x9191b3[_0xf009('0x5a')]=intUtil[_0xf009('0x58')](_0x448e73[_0xf009('0x5b')],_0x4315c6,'\x0a');if(_0x203892['enduserType']==='Contacts'){_0x9191b3[_0xf009('0x5c')]={'name':!_[_0xf009('0x1c')](_0x203892[_0xf009('0x5d')])?_0x203892[_0xf009('0x5d')]:!_['isNil'](_0x203892[_0xf009('0x5e')])?_0x203892[_0xf009('0x5e')]+'\x20'+_0x203892['Last_Name']:_0x203892[_0xf009('0x5f')],'id':_0x203892['id']};}if(_0x203892[_0xf009('0x40')]==='Leads'){_0x9191b3[_0xf009('0x60')]={'name':!_[_0xf009('0x1c')](_0x203892['Full_Name'])?_0x203892[_0xf009('0x5d')]:!_[_0xf009('0x1c')](_0x203892['First_Name'])?_0x203892[_0xf009('0x5e')]+'\x20'+_0x203892[_0xf009('0x5f')]:_0x203892[_0xf009('0x5f')],'id':_0x203892['id']};_0x9191b3[_0xf009('0x61')]=_[_0xf009('0x49')](_0x203892[_0xf009('0x40')]);}if(_0x4315c6[_0xf009('0x62')]){_0x9191b3['Call_Duration']=moment[_0xf009('0x63')](parseInt(_0x4315c6[_0xf009('0x62')])*0x3e8)[_0xf009('0x30')](_0xf009('0x64'));}else if(_0x4315c6['answertime']&&_0x4315c6[_0xf009('0x65')]){_0x9191b3[_0xf009('0x66')]=moment[_0xf009('0x63')](moment(_0x4315c6[_0xf009('0x65')],_0xf009('0x67'))['diff'](moment(_0x4315c6['starttime'],_0xf009('0x67'))))[_0xf009('0x30')]('mm:ss');}switch(_0x4315c6[_0xf009('0x68')]){case _0xf009('0x69'):_0x9191b3[_0xf009('0x6a')]=_0xf009('0x6b');break;case _0xf009('0x6c'):case _0xf009('0x6d'):_0x9191b3['Call_Result']=_0xf009('0x6e');break;case'rejected':_0x9191b3[_0xf009('0x6a')]='Rejected';break;case _0xf009('0x6f'):_0x9191b3['Call_Result']=_0xf009('0x70');break;case _0xf009('0x71'):_0x9191b3[_0xf009('0x6a')]=_0xf009('0x72');default:}_0x9191b3[_0xf009('0x73')]=(_0x1f73be==='outbound'?moment(_0x4315c6[_0xf009('0x74')])['format']('YYYY-MM-DDTHH:mm:ss'):moment(_0x4315c6[_0xf009('0x75')])[_0xf009('0x30')](_0xf009('0x67')))||moment()[_0xf009('0x30')](_0xf009('0x67'));_0x9191b3[_0xf009('0x76')]=_0x1f73be||_0xf009('0x77');_0x9191b3=_[_0xf009('0x78')](_0x9191b3,getCustomFields(_0x448e73[_0xf009('0x79')],_0x4315c6));return request({'method':_0xf009('0x24'),'uri':_0xf009('0x41')+_0x11d694+'/crm/v2/Calls','headers':{'Authorization':_0xf009('0x33')+_0x11c840},'body':{'data':[_0x9191b3]},'json':!![]})[_0xf009('0x34')](function(_0x18c382){if(_0x18c382&&_0x18c382[_0xf009('0x3f')][0x0][_0xf009('0x46')]===_0xf009('0x47')){logger['info']('Call\x20created!');return{'id':_0x18c382[_0xf009('0x3f')][0x0][_0xf009('0x48')]['id']};}})[_0xf009('0x4b')](function(_0x389301){logger['info'](_0xf009('0x7a'),_0x389301[_0xf009('0x7b')]);console[_0xf009('0x7c')]('err',_0x389301);});}exports[_0xf009('0x7d')]=function(_0x2d652a,_0x25f68b,_0x5b4299,_0x3e2c86,_0x535f4e,_0x230b2c){var _0x1cb1f9,_0x5c7425,_0x28c86e;_0x230b2c[_0xf009('0x7e')]=intUtil[_0xf009('0x7f')](_0x230b2c[_0xf009('0x7e')]);_0x230b2c['serverUrl']=intUtil[_0xf009('0x7f')](_0x230b2c[_0xf009('0x80')]);if(_0x535f4e&&_0x535f4e[_0xf009('0x81')]){logger[_0xf009('0x2e')]('[QUEUE]',_0xf009('0x82'));_0x25f68b[_0xf009('0x83')]=_0x230b2c[_0xf009('0x80')]+_0xf009('0x84')+_0x25f68b[_0xf009('0x85')]+_0xf009('0x86')+md5(_0x25f68b[_0xf009('0x85')]);}else{_0x25f68b[_0xf009('0x83')]='';}var _0x757c05=_0x230b2c['host']===_0xf009('0x87')?'eu':_0xf009('0x88');return getAccessToken(_0x230b2c)[_0xf009('0x34')](function(_0x97f8ba){_0x28c86e=_0x97f8ba;return getUser(_0x28c86e,_0x757c05,_0x230b2c,_0x3e2c86[_0xf009('0x38')]);})[_0xf009('0x34')](function(_0x292b56){_0x1cb1f9=_0x292b56;logger[_0xf009('0x2e')]('The\x20User\x20ID\x20is:',_0x1cb1f9['id']);return getEndUser(_0x28c86e,_0x757c05,_0x230b2c,_0x25f68b['calleridname'],_0x25f68b[_0xf009('0x89')],_0x1cb1f9,_0x5b4299);})['then'](function(_0x5a4023){_0x5c7425=_0x5a4023;return getCall(_0x28c86e,_0x757c05,_0x230b2c,_0x1cb1f9,_0x5c7425,_0x5b4299,_0x25f68b,_0xf009('0x77'));})[_0xf009('0x34')](function(_0x4b8c73){if(_0x4b8c73){logger[_0xf009('0x2e')](_0xf009('0x8a'),_0x4b8c73['id']);logger[_0xf009('0x2e')](_0xf009('0x8b'),_0xf009('0x8c'));emit(util[_0xf009('0x30')]('user:%s',_0x3e2c86[_0xf009('0x18')]),_0xf009('0x8d'),{'uri':_0xf009('0x8e')+_0x230b2c[_0xf009('0x7e')]+_0xf009('0x8f')+_0x4b8c73['id']});}})[_0xf009('0x4b')](function(_0x1e9e0b){logger[_0xf009('0x2c')](_0xf009('0x8b'),JSON['stringify'](_0x1e9e0b));});};exports[_0xf009('0x90')]=function(_0x24eeeb,_0x453400,_0x47cf10,_0xe3c22a,_0x391f6b,_0x2d238a,_0x4ed280){var _0x5bd4c0,_0x2b2928,_0x16fdbd;_0x2d238a[_0xf009('0x7e')]=intUtil['stripTrailingSlash'](_0x2d238a[_0xf009('0x7e')]);_0x2d238a['serverUrl']=intUtil[_0xf009('0x7f')](_0x2d238a['serverUrl']);if(_0x4ed280&&_0x4ed280[_0xf009('0x91')]&&_0x4ed280[_0xf009('0x91')]!==_0xf009('0x92')){logger[_0xf009('0x2e')](_0xf009('0x93'),_0xf009('0x82'));_0x453400[_0xf009('0x83')]=_0x2d238a[_0xf009('0x80')]+_0xf009('0x84')+_0x453400['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x453400[_0xf009('0x85')]);}var _0x22c945=_0x2d238a[_0xf009('0x7e')]==='zoho.eu'?'eu':_0xf009('0x88');return getAccessToken(_0x2d238a)[_0xf009('0x34')](function(_0x18afea){_0x16fdbd=_0x18afea;return getUser(_0x16fdbd,_0x22c945,_0x2d238a,_0xe3c22a['email']);})['then'](function(_0x2e8ba6){_0x5bd4c0=_0x2e8ba6;logger[_0xf009('0x2e')](_0xf009('0x94'),_0x5bd4c0['id']);return getEndUser(_0x16fdbd,_0x22c945,_0x2d238a,_0x453400['destcalleridname'],_0x453400[_0xf009('0x95')],_0x5bd4c0,_0x47cf10);})[_0xf009('0x34')](function(_0x27c307){_0x2b2928=_0x27c307;return getCall(_0x16fdbd,_0x22c945,_0x2d238a,_0x5bd4c0,_0x2b2928,_0x47cf10,_0x453400,_0xf009('0x96'));})[_0xf009('0x34')](function(_0x4565db){if(_0x4565db){logger[_0xf009('0x2e')](_0xf009('0x8a'),_0x4565db['id']);logger[_0xf009('0x2e')](_0xf009('0x93'),_0xf009('0x8c'));emit(util[_0xf009('0x30')](_0xf009('0x97'),_0xe3c22a[_0xf009('0x18')]),'trigger:browser:url',{'uri':_0xf009('0x8e')+_0x2d238a[_0xf009('0x7e')]+_0xf009('0x8f')+_0x4565db['id']});}})[_0xf009('0x4b')](function(_0x299b33){logger[_0xf009('0x2c')](_0xf009('0x93'),JSON[_0xf009('0xd')](_0x299b33));});};exports['unmanaged']=function(_0x46d08d,_0x43a708,_0x326c09,_0x2ff987,_0x9b9302,_0x9919fe){var _0x15bb45,_0x4bf502,_0x27201f;_0x9919fe['host']=intUtil[_0xf009('0x7f')](_0x9919fe[_0xf009('0x7e')]);_0x9919fe[_0xf009('0x80')]=intUtil['stripTrailingSlash'](_0x9919fe['serverUrl']);if(_0x9b9302&&_0x9b9302[_0xf009('0x81')]){logger[_0xf009('0x2e')]('['+_0x43a708[_0xf009('0x68')]['toUpperCase']()+']',_0xf009('0x82'));_0x43a708[_0xf009('0x83')]=_0x9919fe[_0xf009('0x80')]+_0xf009('0x84')+_0x43a708[_0xf009('0x85')]+_0xf009('0x86')+md5(_0x43a708['uniqueid']);}else{_0x43a708[_0xf009('0x83')]='';}var _0x164853=_0x9919fe[_0xf009('0x7e')]===_0xf009('0x87')?'eu':_0xf009('0x88');return getAccessToken(_0x9919fe)[_0xf009('0x34')](function(_0x478223){_0x27201f=_0x478223;return getUser(_0x27201f,_0x164853,_0x9919fe);})[_0xf009('0x34')](function(_0x320d85){_0x15bb45=_0x320d85;logger[_0xf009('0x2e')](_0xf009('0x94'),_0x15bb45['id']);return getEndUser(_0x27201f,_0x164853,_0x9919fe,_0x43a708[_0xf009('0x98')],_0x43a708[_0xf009('0x89')],_0x15bb45,_0x326c09);})[_0xf009('0x34')](function(_0x2d578e){_0x4bf502=_0x2d578e;return getCall(_0x27201f,_0x164853,_0x9919fe,_0x15bb45,_0x4bf502,_0x326c09,_0x43a708,_0xf009('0x77'));})[_0xf009('0x34')](function(_0x1ffbd1){if(_0x1ffbd1){logger[_0xf009('0x2e')](_0xf009('0x8a'),_0x1ffbd1['id']);}})[_0xf009('0x4b')](function(_0x20b1e0){logger['error']('['+_0x43a708['lastevent'][_0xf009('0x99')]()+']',JSON[_0xf009('0xd')](_0x20b1e0));});};
\ No newline at end of file
+var _0x1acc=['starttime','lastevent','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Call_Start_Time','outbound','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','err','queue','stripTrailingSlash','host','serverUrl','monitor_format','Recording\x20is\x20enabled!','recordingURL','/api/voice/recordings/','uniqueid','zoho.eu','calleridname','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','/crm/EntityInfo.do?module=Calls&id=','[QUEUE]','recordingFormat','none','/downloads?type=uniqueid&token=','com','destcalleridname','Outbound','[OUTBOUND]','unmanaged','toUpperCase','The\x20User\x20ID\x20is:','request-promise','util','./util','ioredis','bluebird','../../../../config/environment','zoho','redis','socket.io-emitter','debug','[HTTP]','stringify','length','forEach','includes','string','picklist','type','idField','content','variable','variableName','toString','customVariable','Variable','name','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','refresh_token','add','seconds','catch','Failing\x20creating\x20the\x20access_token','stack','info','Search\x20user','format','https://www.zohoapis.%s/crm/v2/users','users','findIndex','email','Agent\x20found!','Using\x20the\x20admin\x20account!','profile','Administrator','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','then','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','moduleCreate','role','first_name','last_name','Zoho-oauthtoken\x20','code','details','log','moduleSearch','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','Leads','nothing','contact','lead','/crm/v2/Leads/search?criteria=((Phone:equals:','Owner','administrator','Subjects','Description','getString','Descriptions','Who_Id','Full_Name','Last_Name','First_Name','$se_module','talktime','utc','mm:ss','endtime','YYYY-MM-DDTHH:mm:ss','diff'];(function(_0x5f4f63,_0x5933cc){var _0x3d44ac=function(_0x2e8a6c){while(--_0x2e8a6c){_0x5f4f63['push'](_0x5f4f63['shift']());}};_0x3d44ac(++_0x5933cc);}(_0x1acc,0x15f));var _0xc1ac=function(_0x1c2478,_0x466bf3){_0x1c2478=_0x1c2478-0x0;var _0x36c4af=_0x1acc[_0x1c2478];return _0x36c4af;};'use strict';var _=require('lodash');var rp=require(_0xc1ac('0x0'));var md5=require('md5');var util=require(_0xc1ac('0x1'));var intUtil=require(_0xc1ac('0x2'));var moment=require('moment');var Redis=require(_0xc1ac('0x3'));var BPromise=require(_0xc1ac('0x4'));var config=require(_0xc1ac('0x5'));var logger=require('../../../../config/logger')(_0xc1ac('0x6'));config['redis']=_['defaults'](config[_0xc1ac('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xc1ac('0x8'))(new Redis(config[_0xc1ac('0x7')]));function emit(_0xae3cd4,_0x1070ab,_0x336d32){io['to'](_0xae3cd4)['emit'](_0x1070ab,_0x336d32);}function request(_0x4f660c){logger[_0xc1ac('0x9')](_0xc1ac('0xa'),JSON[_0xc1ac('0xb')](_0x4f660c));return rp(_0x4f660c);}function getCustomFields(_0x543149,_0x39383c){var _0x353cb4={};if(_0x543149[_0xc1ac('0xc')]>0x0){_[_0xc1ac('0xd')](_0x543149,function(_0x14167c){if(_[_0xc1ac('0xe')]([_0xc1ac('0xf'),_0xc1ac('0x10')],_0x14167c[_0xc1ac('0x11')])&&_0x14167c[_0xc1ac('0x12')]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x14167c[_0xc1ac('0x13')]['toString']();}else if(_0x14167c[_0xc1ac('0x11')]===_0xc1ac('0x14')&&_0x14167c[_0xc1ac('0x15')]&&_0x14167c[_0xc1ac('0x12')]&&_0x39383c[_0x14167c['variableName']]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x39383c[_0x14167c[_0xc1ac('0x15')]][_0xc1ac('0x16')]();}else if(_0x14167c[_0xc1ac('0x11')]===_0xc1ac('0x17')&&_0x14167c['Variable']&&_0x14167c[_0xc1ac('0x18')]['name']&&_0x14167c[_0xc1ac('0x12')]&&_0x39383c[_0x14167c[_0xc1ac('0x18')]['name']['toLowerCase']()]){_0x353cb4[_0x14167c[_0xc1ac('0x12')]]=_0x39383c[_0x14167c['Variable'][_0xc1ac('0x19')][_0xc1ac('0x1a')]()][_0xc1ac('0x16')]();}});}return _0x353cb4;}function getName(_0x27a717){if(_0x27a717[_0xc1ac('0x1b')]('\x20')>0x0){var _0x53a0c7=_0x27a717[_0xc1ac('0x1c')](/ (.+)/);if(_0x53a0c7[0x1]){return _0x53a0c7;}}return[_0x27a717,_0x27a717];}var accountsTokens={};function getAccessToken(_0x13df14){return new Promise(function(_0x15a3d3,_0x287dfc){if(!_[_0xc1ac('0x1d')](accountsTokens[_0x13df14['id']])&&!_[_0xc1ac('0x1d')](accountsTokens[_0x13df14['id']][_0xc1ac('0x1e')])){if(moment()[_0xc1ac('0x1f')](accountsTokens[_0x13df14['id']][_0xc1ac('0x20')])){_0x15a3d3(accountsTokens[_0x13df14['id']][_0xc1ac('0x1e')]);}}var _0x445c73;switch(_0x13df14[_0xc1ac('0x21')]){case'US':_0x445c73='https://accounts.zoho.com';break;case'AU':_0x445c73=_0xc1ac('0x22');break;case'EU':_0x445c73=_0xc1ac('0x23');break;case'IN':_0x445c73='https://accounts.zoho.in';break;case'CN':_0x445c73='https://accounts.zoho.com.cn';break;default:_0x445c73=_0xc1ac('0x23');break;}var _0x238361={'method':_0xc1ac('0x24'),'uri':_0x445c73+_0xc1ac('0x25'),'qs':{'refresh_token':_0x13df14['refreshToken'],'client_id':_0x13df14[_0xc1ac('0x26')],'client_secret':_0x13df14[_0xc1ac('0x27')],'grant_type':_0xc1ac('0x28')},'json':!![]};return rp(_0x238361)['then'](function(_0x3fe6ac){accountsTokens[_0x13df14['id']]={'access_token':_0x3fe6ac[_0xc1ac('0x1e')],'expires_in':moment()[_0xc1ac('0x29')](_0x3fe6ac[_0xc1ac('0x20')],_0xc1ac('0x2a'))};_0x15a3d3(_0x3fe6ac[_0xc1ac('0x1e')]);})[_0xc1ac('0x2b')](function(_0x514837){logger['error'](_0xc1ac('0x2c'),_0x514837[_0xc1ac('0x2d')]);_0x287dfc(_0x514837);});});}function getUser(_0x343c94,_0x39e1ea,_0x2f40ef,_0x23fd2b){logger[_0xc1ac('0x2e')](_0xc1ac('0x2f'));return request({'method':'GET','uri':util[_0xc1ac('0x30')](_0xc1ac('0x31'),_0x39e1ea),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x343c94},'json':!![]})['then'](function(_0x6e23e1){if(_0x6e23e1[_0xc1ac('0x32')]){var _0x3e945d=-0x1;if(_['isArrayLikeObject'](_0x6e23e1['users'])){if(!_['isNil'](_0x23fd2b)){_0x3e945d=_[_0xc1ac('0x33')](_0x6e23e1[_0xc1ac('0x32')],function(_0x5b9cc8){return _0x5b9cc8[_0xc1ac('0x34')]===_0x23fd2b;});}if(_0x3e945d>=0x0){logger['info'](_0xc1ac('0x35'));}else{logger[_0xc1ac('0x2e')](_0xc1ac('0x36'));_0x3e945d=_['findIndex'](_0x6e23e1[_0xc1ac('0x32')],function(_0x26e326){return _0x26e326[_0xc1ac('0x37')][_0xc1ac('0x19')]==='Administrator';});}return _0x6e23e1['users'][_0x3e945d];}else{if(_0x6e23e1['user']['profile'][_0xc1ac('0x19')]===_0xc1ac('0x38')){logger[_0xc1ac('0x2e')]('Using\x20the\x20admin\x20account!');user=_0x6e23e1[_0xc1ac('0x39')];return user;}else{logger[_0xc1ac('0x3a')](_0xc1ac('0x3b'),JSON[_0xc1ac('0xb')](_0x6e23e1));throw new Error(_0xc1ac('0x3c')+JSON['stringify'](_0x6e23e1));}}}else{logger[_0xc1ac('0x3a')]('The\x20failing\x20result\x20is',JSON[_0xc1ac('0xb')](_0x6e23e1));throw new Error(_0xc1ac('0x3c')+JSON[_0xc1ac('0xb')](_0x6e23e1));}})['catch'](function(_0x239f74){console['error'](_0x239f74);});}function getZohoUser(_0x110637,_0x52625b){return new BPromise(function(_0x530d6d,_0x129fef){request(_0x110637)[_0xc1ac('0x3d')](function(_0x336b91){var _0x50aba5=null;if(_0x336b91){_0x50aba5=_0x336b91[_0xc1ac('0x3e')][0x0];_0x50aba5[_0xc1ac('0x3f')]=_0x52625b;}_0x530d6d(_0x50aba5);})[_0xc1ac('0x2b')](function(_0x3ad66b){_0x129fef(_0x3ad66b);});});}function createEndUser(_0x3c8484,_0xe10905,_0x4bbbd3,_0x19a3b6,_0x17842e,_0x37f0f0){var _0x4bbbd3=getName(_0x4bbbd3);return request({'method':_0xc1ac('0x24'),'uri':_0xc1ac('0x40')+_0xe10905+_0xc1ac('0x41')+_[_0xc1ac('0x42')](_0x37f0f0[_0xc1ac('0x43')])+'s','body':{'data':[{'Last_Name':_0x4bbbd3[0x1],'First_Name':_0x4bbbd3[0x0],'Phone':_0x19a3b6,'Owner':{'name':!_[_0xc1ac('0x1d')](_0x17842e['role'][_0xc1ac('0x19')])?_0x17842e[_0xc1ac('0x44')][_0xc1ac('0x19')]:!_['isNil'](_0x17842e[_0xc1ac('0x45')])?_0x17842e['first_name']+'\x20'+_0x17842e[_0xc1ac('0x46')]:_0x17842e[_0xc1ac('0x46')],'id':_0x17842e['id']}}]},'headers':{'Authorization':_0xc1ac('0x47')+_0x3c8484},'json':!![]})[_0xc1ac('0x3d')](function(_0x82ef43){if(_0x82ef43&&_0x82ef43['data'][0x0][_0xc1ac('0x48')]==='SUCCESS'){var _0x570e50=_0x82ef43['data'][0x0][_0xc1ac('0x49')];_0x570e50[_0xc1ac('0x3f')]=_[_0xc1ac('0x42')](_0x37f0f0['moduleCreate'])+'s';return _0x570e50;}logger[_0xc1ac('0x3a')](_0xc1ac('0x3b'),JSON[_0xc1ac('0xb')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})[_0xc1ac('0x2b')](function(_0x34a362){console[_0xc1ac('0x4a')]('CREATE\x20ERROR',_0x34a362);});}function getEndUser(_0x577406,_0x1cdf6a,_0x599521,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02){var _0xdeba63={'method':'GET','uri':'','headers':{'Authorization':_0xc1ac('0x47')+_0x577406},'json':!![]};switch(_0x5cfd02[_0xc1ac('0x4b')]){case _0xc1ac('0x4c'):_0xdeba63[_0xc1ac('0x4d')]='https://www.zohoapis.'+_0x1cdf6a+_0xc1ac('0x4e')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x4f'))[_0xc1ac('0x3d')](function(_0x32aa10){if(_0x32aa10)return _0x32aa10;_0xdeba63[_0xc1ac('0x4d')]=_0xc1ac('0x40')+_0x1cdf6a+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x50'))[_0xc1ac('0x3d')](function(_0x5e2586){if(_0x5e2586)return _0x5e2586;if(_0x5cfd02['moduleCreate']!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});});break;case _0xc1ac('0x52'):_0xdeba63[_0xc1ac('0x4d')]=_0xc1ac('0x40')+_0x1cdf6a+_0xc1ac('0x4e')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x4f'))['then'](function(_0x5ee573){if(_0x5ee573)return _0x5ee573;if(_0x5cfd02[_0xc1ac('0x43')]!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});break;case _0xc1ac('0x53'):_0xdeba63['uri']=_0xc1ac('0x40')+_0x1cdf6a+_0xc1ac('0x54')+_0x33b0e0+'))';return getZohoUser(_0xdeba63,_0xc1ac('0x50'))[_0xc1ac('0x3d')](function(_0x2c8b6a){if(_0x2c8b6a)return _0x2c8b6a;if(_0x5cfd02['moduleCreate']!=_0xc1ac('0x51')){return createEndUser(_0x577406,_0x1cdf6a,_0x3b4385,_0x33b0e0,_0x201bcb,_0x5cfd02);}else{return{};}});break;}}function getCall(_0x44fe27,_0x2a2a64,_0x958078,_0xa56d8c,_0x4700db,_0x3f3d49,_0x3737fa,_0x380375){logger[_0xc1ac('0x2e')]('Creating\x20new\x20call...');var _0xb715f2={};_0xb715f2[_0xc1ac('0x55')]={'name':!_[_0xc1ac('0x1d')](_0xa56d8c['role'][_0xc1ac('0x19')])&&!_[_0xc1ac('0x1d')](_0xa56d8c[_0xc1ac('0x37')][_0xc1ac('0x19')])&&_0xa56d8c[_0xc1ac('0x37')][_0xc1ac('0x19')]===_0xc1ac('0x56')?_0xa56d8c[_0xc1ac('0x44')][_0xc1ac('0x19')]:!_[_0xc1ac('0x1d')](_0xa56d8c['first_name'])?_0xa56d8c[_0xc1ac('0x45')]+'\x20'+_0xa56d8c[_0xc1ac('0x46')]:_0xa56d8c[_0xc1ac('0x46')],'id':_0xa56d8c['id']};_0xb715f2['Subject']=intUtil['getString'](_0x3f3d49[_0xc1ac('0x57')],_0x3737fa,'\x20');_0xb715f2[_0xc1ac('0x58')]=intUtil[_0xc1ac('0x59')](_0x3f3d49[_0xc1ac('0x5a')],_0x3737fa,'\x0a');if(_0x4700db[_0xc1ac('0x3f')]===_0xc1ac('0x4f')){_0xb715f2[_0xc1ac('0x5b')]={'name':!_['isNil'](_0x4700db[_0xc1ac('0x5c')])?_0x4700db[_0xc1ac('0x5c')]:!_[_0xc1ac('0x1d')](_0x4700db['First_Name'])?_0x4700db['First_Name']+'\x20'+_0x4700db[_0xc1ac('0x5d')]:_0x4700db[_0xc1ac('0x5d')],'id':_0x4700db['id']};}if(_0x4700db[_0xc1ac('0x3f')]===_0xc1ac('0x50')){_0xb715f2['What_Id']={'name':!_['isNil'](_0x4700db[_0xc1ac('0x5c')])?_0x4700db[_0xc1ac('0x5c')]:!_['isNil'](_0x4700db[_0xc1ac('0x5e')])?_0x4700db['First_Name']+'\x20'+_0x4700db[_0xc1ac('0x5d')]:_0x4700db['Last_Name'],'id':_0x4700db['id']};_0xb715f2[_0xc1ac('0x5f')]=_[_0xc1ac('0x42')](_0x4700db['enduserType']);}if(_0x3737fa[_0xc1ac('0x60')]){_0xb715f2['Call_Duration']=moment[_0xc1ac('0x61')](parseInt(_0x3737fa[_0xc1ac('0x60')])*0x3e8)[_0xc1ac('0x30')](_0xc1ac('0x62'));}else if(_0x3737fa['answertime']&&_0x3737fa['endtime']){_0xb715f2['Call_Duration']=moment[_0xc1ac('0x61')](moment(_0x3737fa[_0xc1ac('0x63')],_0xc1ac('0x64'))[_0xc1ac('0x65')](moment(_0x3737fa[_0xc1ac('0x66')],_0xc1ac('0x64'))))[_0xc1ac('0x30')](_0xc1ac('0x62'));}switch(_0x3737fa[_0xc1ac('0x67')]){case'called':_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x69');break;case _0xc1ac('0x6a'):case _0xc1ac('0x6b'):_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x6c');break;case _0xc1ac('0x6d'):_0xb715f2[_0xc1ac('0x68')]=_0xc1ac('0x6e');break;case _0xc1ac('0x6f'):_0xb715f2['Call_Result']='Abandoned';break;case _0xc1ac('0x70'):_0xb715f2[_0xc1ac('0x68')]='Timeout';default:}_0xb715f2[_0xc1ac('0x71')]=(_0x380375===_0xc1ac('0x72')?moment(_0x3737fa[_0xc1ac('0x66')])[_0xc1ac('0x30')](_0xc1ac('0x64')):moment(_0x3737fa['agentcalledAt'])['format'](_0xc1ac('0x64')))||moment()[_0xc1ac('0x30')](_0xc1ac('0x64'));_0xb715f2[_0xc1ac('0x73')]=_0x380375||_0xc1ac('0x74');_0xb715f2=_[_0xc1ac('0x75')](_0xb715f2,getCustomFields(_0x3f3d49[_0xc1ac('0x76')],_0x3737fa));return request({'method':_0xc1ac('0x24'),'uri':_0xc1ac('0x40')+_0x2a2a64+_0xc1ac('0x77'),'headers':{'Authorization':_0xc1ac('0x47')+_0x44fe27},'body':{'data':[_0xb715f2]},'json':!![]})['then'](function(_0x2d66af){if(_0x2d66af&&_0x2d66af[_0xc1ac('0x3e')][0x0]['code']===_0xc1ac('0x78')){logger['info'](_0xc1ac('0x79'));return{'id':_0x2d66af[_0xc1ac('0x3e')][0x0][_0xc1ac('0x49')]['id']};}})['catch'](function(_0x23f7f0){logger[_0xc1ac('0x2e')](_0xc1ac('0x7a'),_0x23f7f0[_0xc1ac('0x2d')]);console[_0xc1ac('0x4a')](_0xc1ac('0x7a'),_0x23f7f0);});}exports[_0xc1ac('0x7b')]=function(_0x352cb0,_0x160a4b,_0x3d456d,_0x5bcdb3,_0x2beaa0,_0xc6e62){var _0x196adb,_0x1027df,_0x384d67;_0xc6e62['host']=intUtil[_0xc1ac('0x7c')](_0xc6e62[_0xc1ac('0x7d')]);_0xc6e62['serverUrl']=intUtil[_0xc1ac('0x7c')](_0xc6e62[_0xc1ac('0x7e')]);if(_0x2beaa0&&_0x2beaa0[_0xc1ac('0x7f')]){logger['info']('[QUEUE]',_0xc1ac('0x80'));_0x160a4b[_0xc1ac('0x81')]=_0xc6e62[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x160a4b[_0xc1ac('0x83')]+'/downloads?type=uniqueid&token='+md5(_0x160a4b[_0xc1ac('0x83')]);}else{_0x160a4b[_0xc1ac('0x81')]='';}var _0x54414c=_0xc6e62[_0xc1ac('0x7d')]===_0xc1ac('0x84')?'eu':'com';return getAccessToken(_0xc6e62)[_0xc1ac('0x3d')](function(_0x560817){_0x384d67=_0x560817;return getUser(_0x384d67,_0x54414c,_0xc6e62,_0x5bcdb3[_0xc1ac('0x34')]);})[_0xc1ac('0x3d')](function(_0x105964){_0x196adb=_0x105964;logger['info']('The\x20User\x20ID\x20is:',_0x196adb['id']);return getEndUser(_0x384d67,_0x54414c,_0xc6e62,_0x160a4b[_0xc1ac('0x85')],_0x160a4b[_0xc1ac('0x86')],_0x196adb,_0x3d456d);})[_0xc1ac('0x3d')](function(_0x176a6b){_0x1027df=_0x176a6b;return getCall(_0x384d67,_0x54414c,_0xc6e62,_0x196adb,_0x1027df,_0x3d456d,_0x160a4b,_0xc1ac('0x74'));})['then'](function(_0x532994){if(_0x532994){logger[_0xc1ac('0x2e')](_0xc1ac('0x87'),_0x532994['id']);logger['info']('[QUEUE]',_0xc1ac('0x88'));emit(util['format'](_0xc1ac('0x89'),_0x5bcdb3[_0xc1ac('0x19')]),_0xc1ac('0x8a'),{'uri':'https://crm.'+_0xc6e62[_0xc1ac('0x7d')]+_0xc1ac('0x8b')+_0x532994['id']});}})[_0xc1ac('0x2b')](function(_0x3643b2){logger[_0xc1ac('0x3a')](_0xc1ac('0x8c'),JSON['stringify'](_0x3643b2));});};exports['outbound']=function(_0x2e0294,_0x3ac9f0,_0x26e9a2,_0x49bc3e,_0x466c60,_0x111d19,_0x2e33f4){var _0x585a71,_0x2307c6,_0x58ff67;_0x111d19['host']=intUtil[_0xc1ac('0x7c')](_0x111d19[_0xc1ac('0x7d')]);_0x111d19[_0xc1ac('0x7e')]=intUtil[_0xc1ac('0x7c')](_0x111d19[_0xc1ac('0x7e')]);if(_0x2e33f4&&_0x2e33f4[_0xc1ac('0x8d')]&&_0x2e33f4[_0xc1ac('0x8d')]!==_0xc1ac('0x8e')){logger[_0xc1ac('0x2e')]('[OUTBOUND]',_0xc1ac('0x80'));_0x3ac9f0['recordingURL']=_0x111d19[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x3ac9f0[_0xc1ac('0x83')]+_0xc1ac('0x8f')+md5(_0x3ac9f0[_0xc1ac('0x83')]);}var _0x49da76=_0x111d19[_0xc1ac('0x7d')]==='zoho.eu'?'eu':_0xc1ac('0x90');return getAccessToken(_0x111d19)[_0xc1ac('0x3d')](function(_0x37f4fc){_0x58ff67=_0x37f4fc;return getUser(_0x58ff67,_0x49da76,_0x111d19,_0x49bc3e[_0xc1ac('0x34')]);})[_0xc1ac('0x3d')](function(_0x3dd296){_0x585a71=_0x3dd296;logger[_0xc1ac('0x2e')]('The\x20User\x20ID\x20is:',_0x585a71['id']);return getEndUser(_0x58ff67,_0x49da76,_0x111d19,_0x3ac9f0[_0xc1ac('0x91')],_0x3ac9f0['destcalleridnum'],_0x585a71,_0x26e9a2);})[_0xc1ac('0x3d')](function(_0x277faf){_0x2307c6=_0x277faf;return getCall(_0x58ff67,_0x49da76,_0x111d19,_0x585a71,_0x2307c6,_0x26e9a2,_0x3ac9f0,_0xc1ac('0x92'));})['then'](function(_0x5ef5a3){if(_0x5ef5a3){logger['info'](_0xc1ac('0x87'),_0x5ef5a3['id']);logger[_0xc1ac('0x2e')](_0xc1ac('0x93'),_0xc1ac('0x88'));emit(util[_0xc1ac('0x30')](_0xc1ac('0x89'),_0x49bc3e[_0xc1ac('0x19')]),_0xc1ac('0x8a'),{'uri':'https://crm.'+_0x111d19[_0xc1ac('0x7d')]+_0xc1ac('0x8b')+_0x5ef5a3['id']});}})['catch'](function(_0x484cb9){logger['error']('[OUTBOUND]',JSON[_0xc1ac('0xb')](_0x484cb9));});};exports[_0xc1ac('0x94')]=function(_0x39365e,_0x205aae,_0x54087a,_0x1a9e99,_0x33e861,_0x417c96){var _0x583ace,_0x5beede,_0x8fcbbc;_0x417c96['host']=intUtil[_0xc1ac('0x7c')](_0x417c96['host']);_0x417c96['serverUrl']=intUtil[_0xc1ac('0x7c')](_0x417c96['serverUrl']);if(_0x33e861&&_0x33e861[_0xc1ac('0x7f')]){logger['info']('['+_0x205aae['lastevent'][_0xc1ac('0x95')]()+']',_0xc1ac('0x80'));_0x205aae['recordingURL']=_0x417c96[_0xc1ac('0x7e')]+_0xc1ac('0x82')+_0x205aae['uniqueid']+'/downloads?type=uniqueid&token='+md5(_0x205aae[_0xc1ac('0x83')]);}else{_0x205aae[_0xc1ac('0x81')]='';}var _0x390b14=_0x417c96[_0xc1ac('0x7d')]===_0xc1ac('0x84')?'eu':_0xc1ac('0x90');return getAccessToken(_0x417c96)[_0xc1ac('0x3d')](function(_0x37cc0d){_0x8fcbbc=_0x37cc0d;return getUser(_0x8fcbbc,_0x390b14,_0x417c96);})[_0xc1ac('0x3d')](function(_0x4cb3d7){_0x583ace=_0x4cb3d7;logger[_0xc1ac('0x2e')](_0xc1ac('0x96'),_0x583ace['id']);return getEndUser(_0x8fcbbc,_0x390b14,_0x417c96,_0x205aae[_0xc1ac('0x85')],_0x205aae[_0xc1ac('0x86')],_0x583ace,_0x54087a);})[_0xc1ac('0x3d')](function(_0x144ab9){_0x5beede=_0x144ab9;return getCall(_0x8fcbbc,_0x390b14,_0x417c96,_0x583ace,_0x5beede,_0x54087a,_0x205aae,'Inbound');})[_0xc1ac('0x3d')](function(_0x7f6706){if(_0x7f6706){logger['info'](_0xc1ac('0x87'),_0x7f6706['id']);}})[_0xc1ac('0x2b')](function(_0x16a73d){logger['error']('['+_0x205aae['lastevent'][_0xc1ac('0x95')]()+']',JSON['stringify'](_0x16a73d));});};
\ No newline at end of file
index 729bd2b..fe507f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbac0=['mustache','../../../../config/logger','trigger','data2','Script','data3','render','exec','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util'];(function(_0x18dead,_0x4fc133){var _0x2ceda9=function(_0x1ef4b5){while(--_0x1ef4b5){_0x18dead['push'](_0x18dead['shift']());}};_0x2ceda9(++_0x4fc133);}(_0xbac0,0x117));var _0x0bac=function(_0x512f81,_0x4a7986){_0x512f81=_0x512f81-0x0;var _0xa15099=_0xbac0[_0x512f81];return _0xa15099;};'use strict';var util=require(_0x0bac('0x0'));var sh=require('shelljs');var Mustache=require(_0x0bac('0x1'));var logger=require(_0x0bac('0x2'))(_0x0bac('0x3'));exports['exec']=function(_0x1b5217,_0xd886f8){var _0x35aa1c=_0x1b5217[_0x0bac('0x4')]?_0x1b5217[_0x0bac('0x4')]:_0x0bac('0x5');var _0x251b9c=_0x1b5217[_0x0bac('0x6')]?Mustache[_0x0bac('0x7')](_0x1b5217[_0x0bac('0x6')],_0xd886f8):_0xd886f8;sh[_0x0bac('0x8')](_0x251b9c,function(_0x23cf9e,_0x4e35fb,_0x571001){if(_0x23cf9e!==0x0){logger[_0x0bac('0x9')](util[_0x0bac('0xa')](_0x0bac('0xb'),_0x35aa1c,_0x251b9c,_0x23cf9e,_0x571001));}else{logger[_0x0bac('0xc')](util[_0x0bac('0xa')](_0x0bac('0xd'),_0x35aa1c,_0x251b9c,_0x4e35fb));}});};
\ No newline at end of file
+var _0xecdc=['error','format','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','trigger','exec','data2','Script','data3','render'];(function(_0x1f181e,_0x3f9573){var _0x4c12de=function(_0x5a5d42){while(--_0x5a5d42){_0x1f181e['push'](_0x1f181e['shift']());}};_0x4c12de(++_0x3f9573);}(_0xecdc,0x88));var _0xcecd=function(_0x3c2b16,_0x4f942d){_0x3c2b16=_0x3c2b16-0x0;var _0x3c25d4=_0xecdc[_0x3c2b16];return _0x3c25d4;};'use strict';var util=require(_0xcecd('0x0'));var sh=require(_0xcecd('0x1'));var Mustache=require('mustache');var logger=require('../../../../config/logger')(_0xcecd('0x2'));exports[_0xcecd('0x3')]=function(_0x4ffed0,_0x536e72){var _0x5e8dd6=_0x4ffed0[_0xcecd('0x4')]?_0x4ffed0['data2']:_0xcecd('0x5');var _0x2843cb=_0x4ffed0[_0xcecd('0x6')]?Mustache[_0xcecd('0x7')](_0x4ffed0[_0xcecd('0x6')],_0x536e72):_0x536e72;sh[_0xcecd('0x3')](_0x2843cb,function(_0x12e209,_0x4a9eb7,_0x3f6940){if(_0x12e209!==0x0){logger[_0xcecd('0x8')](util[_0xcecd('0x9')]('%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s',_0x5e8dd6,_0x2843cb,_0x12e209,_0x3f6940));}else{logger[_0xcecd('0xa')](util['format'](_0xcecd('0xb'),_0x5e8dd6,_0x2843cb,_0x4a9eb7));}});};
\ No newline at end of file
index 46ae3ed..bf7c3c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd83f=['DELETE','PUT','data7','render','body','error','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','message','lodash','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','data2','data5','number','headers','data6','parse','stack'];(function(_0x1ea374,_0x19637b){var _0x50e524=function(_0x5f181a){while(--_0x5f181a){_0x1ea374['push'](_0x1ea374['shift']());}};_0x50e524(++_0x19637b);}(_0xd83f,0x18a));var _0xfd83=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xd83f[_0x2f5ac5];return _0x37c9a8;};'use strict';var rp=require('request-promise');var util=require('util');var _=require(_0xfd83('0x0'));var Mustache=require(_0xfd83('0x1'));var logger=require(_0xfd83('0x2'))(_0xfd83('0x3'));exports[_0xfd83('0x4')]=function(_0xc567bb,_0x17e60d){var _0x67249,_0x35991a;var _0x50e417={'method':_0xc567bb[_0xfd83('0x5')][_0xfd83('0x6')](),'uri':Mustache['render'](_0xc567bb[_0xfd83('0x7')],_0x17e60d),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0xc567bb[_0xfd83('0x8')])===_0xfd83('0x9')&&parseInt(_0xc567bb[_0xfd83('0x8')])>=0x1&&parseInt(_0xc567bb[_0xfd83('0x8')])<=0xa?parseInt(_0xc567bb[_0xfd83('0x8')])*0x3e8:0x5*0x3e8};try{_0x50e417[_0xfd83('0xa')]=_0xc567bb[_0xfd83('0xb')]?JSON[_0xfd83('0xc')](Mustache['render'](_0xc567bb[_0xfd83('0xb')],_0x17e60d)):{};}catch(_0x49cefb){logger['error'](_0x49cefb[_0xfd83('0xd')]);}switch(_0xc567bb[_0xfd83('0x5')][_0xfd83('0x6')]()){case'GET':case _0xfd83('0xe'):_0x67249=null;_0x50e417['qs']=_0x17e60d;break;case'POST':case _0xfd83('0xf'):if(_0xc567bb[_0xfd83('0x10')]){try{_0x67249=JSON[_0xfd83('0xc')](Mustache[_0xfd83('0x11')](_0xc567bb[_0xfd83('0x10')],_0x17e60d));_0x50e417[_0xfd83('0x12')]=_0x67249;}catch(_0x1c2d34){logger[_0xfd83('0x13')](_0x1c2d34[_0xfd83('0xd')]);logger[_0xfd83('0x13')](_0xfd83('0x14'));}}else{_0x67249=_0x17e60d;_0x50e417['body']=_0x67249;}break;}logger[_0xfd83('0x15')](util[_0xfd83('0x16')](_0xfd83('0x17'),_0xc567bb[_0xfd83('0x5')],_0xc567bb[_0xfd83('0x7')],JSON[_0xfd83('0x18')](_0x50e417)));rp(_0x50e417)[_0xfd83('0x19')](function(_0x461864){_0x67249=!_[_0xfd83('0x1a')](_0x67249)?_0xfd83('0x1b')+_0x67249:'';_0x35991a=typeof _0x461864[_0xfd83('0x12')]===_0xfd83('0x1c')?JSON[_0xfd83('0x18')](_0x461864[_0xfd83('0x12')]):_0x461864[_0xfd83('0x12')];logger[_0xfd83('0x15')](util[_0xfd83('0x16')](_0xfd83('0x1d'),_0xc567bb[_0xfd83('0x5')],_0xc567bb['data2'],_0x461864[_0xfd83('0x1e')],_0x35991a));})[_0xfd83('0x1f')](function(_0x469d8a){logger['error'](util['format'](_0xfd83('0x20'),_0xc567bb[_0xfd83('0x5')],_0xc567bb[_0xfd83('0x7')],_0x469d8a[_0xfd83('0x1e')],_0x469d8a['name'],_0x469d8a[_0xfd83('0x21')]));});};
\ No newline at end of file
+var _0x6b16=['%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','request-promise','lodash','mustache','trigger','exec','toUpperCase','render','data2','data5','number','headers','data6','parse','error','GET','DELETE','PUT','data7','body','stack','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','isNil',',\x20request\x20body:\x20','object','stringify','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','data1','statusCode','catch'];(function(_0xa9a245,_0x2a0387){var _0x2d0eaa=function(_0x2bba86){while(--_0x2bba86){_0xa9a245['push'](_0xa9a245['shift']());}};_0x2d0eaa(++_0x2a0387);}(_0x6b16,0x19a));var _0x66b1=function(_0x5e42a7,_0x3eba35){_0x5e42a7=_0x5e42a7-0x0;var _0x36d21b=_0x6b16[_0x5e42a7];return _0x36d21b;};'use strict';var rp=require(_0x66b1('0x0'));var util=require('util');var _=require(_0x66b1('0x1'));var Mustache=require(_0x66b1('0x2'));var logger=require('../../../../config/logger')(_0x66b1('0x3'));exports[_0x66b1('0x4')]=function(_0x1bf455,_0xa2d118){var _0x2d5665,_0x4f9233;var _0x1d330b={'method':_0x1bf455['data1'][_0x66b1('0x5')](),'uri':Mustache[_0x66b1('0x6')](_0x1bf455[_0x66b1('0x7')],_0xa2d118),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x1bf455[_0x66b1('0x8')])===_0x66b1('0x9')&&parseInt(_0x1bf455[_0x66b1('0x8')])>=0x1&&parseInt(_0x1bf455[_0x66b1('0x8')])<=0xa?parseInt(_0x1bf455['data5'])*0x3e8:0x5*0x3e8};try{_0x1d330b[_0x66b1('0xa')]=_0x1bf455[_0x66b1('0xb')]?JSON[_0x66b1('0xc')](Mustache['render'](_0x1bf455[_0x66b1('0xb')],_0xa2d118)):{};}catch(_0x314e14){logger[_0x66b1('0xd')](_0x314e14['stack']);}switch(_0x1bf455['data1'][_0x66b1('0x5')]()){case _0x66b1('0xe'):case _0x66b1('0xf'):_0x2d5665=null;_0x1d330b['qs']=_0xa2d118;break;case'POST':case _0x66b1('0x10'):if(_0x1bf455[_0x66b1('0x11')]){try{_0x2d5665=JSON[_0x66b1('0xc')](Mustache['render'](_0x1bf455['data7'],_0xa2d118));_0x1d330b[_0x66b1('0x12')]=_0x2d5665;}catch(_0x350e67){logger[_0x66b1('0xd')](_0x350e67[_0x66b1('0x13')]);logger[_0x66b1('0xd')](_0x66b1('0x14'));}}else{_0x2d5665=_0xa2d118;_0x1d330b[_0x66b1('0x12')]=_0x2d5665;}break;}logger[_0x66b1('0x15')](util[_0x66b1('0x16')](_0x66b1('0x17'),_0x1bf455['data1'],_0x1bf455['data2'],JSON['stringify'](_0x1d330b)));rp(_0x1d330b)['then'](function(_0x5e3fb8){_0x2d5665=!_[_0x66b1('0x18')](_0x2d5665)?_0x66b1('0x19')+_0x2d5665:'';_0x4f9233=typeof _0x5e3fb8[_0x66b1('0x12')]===_0x66b1('0x1a')?JSON[_0x66b1('0x1b')](_0x5e3fb8['body']):_0x5e3fb8['body'];logger[_0x66b1('0x15')](util[_0x66b1('0x16')](_0x66b1('0x1c'),_0x1bf455[_0x66b1('0x1d')],_0x1bf455[_0x66b1('0x7')],_0x5e3fb8[_0x66b1('0x1e')],_0x4f9233));})[_0x66b1('0x1f')](function(_0x2c91ed){logger[_0x66b1('0xd')](util[_0x66b1('0x16')](_0x66b1('0x20'),_0x1bf455[_0x66b1('0x1d')],_0x1bf455[_0x66b1('0x7')],_0x2c91ed[_0x66b1('0x1e')],_0x2c91ed[_0x66b1('0x21')],_0x2c91ed['message']));});};
\ No newline at end of file
index c1ac19a..96b29ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8c9=['bluebird','../../config/logger','routing','client','http','then','debug','rpc','error','message','result','catch','exports','jayson/promise'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0xd8c9,0xd1));var _0x9d8c=function(_0x37093a,_0x349583){_0x37093a=_0x37093a-0x0;var _0x222392=_0xd8c9[_0x37093a];return _0x222392;};'use strict';var jayson=require(_0x9d8c('0x0'));var BPromise=require(_0x9d8c('0x1'));var logger=require(_0x9d8c('0x2'))(_0x9d8c('0x3'));var client=jayson[_0x9d8c('0x4')][_0x9d8c('0x5')]({'port':0x2329});client['Request']=function(_0x233f9e,_0x212916){return new BPromise(function(_0x4f831f,_0x2bbf4a){return client['request'](_0x233f9e,_0x212916)[_0x9d8c('0x6')](function(_0x5e6552){logger[_0x9d8c('0x7')](_0x9d8c('0x8'),_0x9d8c('0x3'),_0x233f9e,_0x212916,_0x5e6552);if(_0x5e6552[_0x9d8c('0x9')]){logger[_0x9d8c('0x9')](_0x9d8c('0x8'),_0x9d8c('0x3'),_0x233f9e,_0x5e6552[_0x9d8c('0x9')][_0x9d8c('0xa')],_0x212916);return _0x2bbf4a(_0x5e6552[_0x9d8c('0x9')]['message']);}else{return _0x4f831f(_0x5e6552[_0x9d8c('0xb')]);}})[_0x9d8c('0xc')](function(_0x1e1123){logger[_0x9d8c('0x9')](_0x9d8c('0x8'),_0x9d8c('0x3'),_0x233f9e,_0x1e1123,_0x212916);return _0x2bbf4a(_0x1e1123);});});};module[_0x9d8c('0xd')]=client;
\ No newline at end of file
+var _0xf1eb=['debug','rpc','error','message','result','catch','../../config/logger','routing','client','Request','request','then'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xf1eb,0xde));var _0xbf1e=function(_0x570579,_0x56613d){_0x570579=_0x570579-0x0;var _0x3f2a31=_0xf1eb[_0x570579];return _0x3f2a31;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xbf1e('0x0'))(_0xbf1e('0x1'));var client=jayson[_0xbf1e('0x2')]['http']({'port':0x2329});client[_0xbf1e('0x3')]=function(_0x312987,_0xc0f342){return new BPromise(function(_0x1db08e,_0x597152){return client[_0xbf1e('0x4')](_0x312987,_0xc0f342)[_0xbf1e('0x5')](function(_0x26f431){logger[_0xbf1e('0x6')](_0xbf1e('0x7'),'routing',_0x312987,_0xc0f342,_0x26f431);if(_0x26f431[_0xbf1e('0x8')]){logger['error'](_0xbf1e('0x7'),_0xbf1e('0x1'),_0x312987,_0x26f431[_0xbf1e('0x8')][_0xbf1e('0x9')],_0xc0f342);return _0x597152(_0x26f431[_0xbf1e('0x8')][_0xbf1e('0x9')]);}else{return _0x1db08e(_0x26f431[_0xbf1e('0xa')]);}})[_0xbf1e('0xb')](function(_0x568805){logger[_0xbf1e('0x8')](_0xbf1e('0x7'),_0xbf1e('0x1'),_0x312987,_0x568805,_0xc0f342);return _0x597152(_0x568805);});});};module['exports']=client;
\ No newline at end of file
index d671040..d49fc28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd69d=['./server','./realtime','./rpc/setting','../../config/logger','email','then','getMailAccounts','initMailAccounts','refresh','mailAccounts','listen','catch'];(function(_0x3780bd,_0x81b109){var _0x2a7b7f=function(_0x5a221f){while(--_0x5a221f){_0x3780bd['push'](_0x3780bd['shift']());}};_0x2a7b7f(++_0x81b109);}(_0xd69d,0x138));var _0xdd69=function(_0x3e2795,_0x44b785){_0x3e2795=_0x3e2795-0x0;var _0x186533=_0xd69d[_0x3e2795];return _0x186533;};'use strict';var server=require(_0xdd69('0x0'));var Realtime=require(_0xdd69('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require('./rpc/mailAccount');var setting=require(_0xdd69('0x2'));var logger=require(_0xdd69('0x3'))(_0xdd69('0x4'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise['resolve']()[_0xdd69('0x5')](mailAccount[_0xdd69('0x6')]())[_0xdd69('0x5')](realtime[_0xdd69('0x7')]())[_0xdd69('0x5')](function(){email[_0xdd69('0x8')](realtime[_0xdd69('0x9')]);return realtime;});}function main(){return server[_0xdd69('0xa')](realtime,email)['then'](function(){return initRealtime();})[_0xdd69('0x5')](function(){return setting['getSettings']();})['then'](function(_0xd9bdee){return setInterval(initRealtime,_0xd9bdee['loginMailFrequency']*0x3e8);})[_0xdd69('0xb')](function(_0x2b5fdb){logger['error']('Email\x20service\x20initialization',_0x2b5fdb);});}main();
\ No newline at end of file
+var _0x389b=['mailAccounts','listen','loginMailFrequency','catch','Email\x20service\x20initialization','./realtime','./rpc/mailAccount','./rpc/setting','email','resolve','then','getMailAccounts','refresh'];(function(_0x55a839,_0x1b457c){var _0x275436=function(_0x4d3c10){while(--_0x4d3c10){_0x55a839['push'](_0x55a839['shift']());}};_0x275436(++_0x1b457c);}(_0x389b,0xfc));var _0xb389=function(_0x2ff1f6,_0x1bc588){_0x2ff1f6=_0x2ff1f6-0x0;var _0xbae96d=_0x389b[_0x2ff1f6];return _0xbae96d;};'use strict';var server=require('./server');var Realtime=require(_0xb389('0x0'));var EmailChannel=require('./lib/email');var mailAccount=require(_0xb389('0x1'));var setting=require(_0xb389('0x2'));var logger=require('../../config/logger')(_0xb389('0x3'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xb389('0x4')]()[_0xb389('0x5')](mailAccount[_0xb389('0x6')]())[_0xb389('0x5')](realtime['initMailAccounts']())['then'](function(){email[_0xb389('0x7')](realtime[_0xb389('0x8')]);return realtime;});}function main(){return server[_0xb389('0x9')](realtime,email)[_0xb389('0x5')](function(){return initRealtime();})[_0xb389('0x5')](function(){return setting['getSettings']();})['then'](function(_0x313fc5){return setInterval(initRealtime,_0x313fc5[_0xb389('0xa')]*0x3e8);})[_0xb389('0xb')](function(_0x9167d8){logger['error'](_0xb389('0xc'),_0x9167d8);});}main();
\ No newline at end of file
index aa418bb..5e847a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a1=['imapAccounts','box','handleImapBox','bind','handleImapEmail','handleImapEnd','error','handleImapError','disabled','connected','name','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','sendMail','send','verifySmtp','Smtp','lastSync','smtp','verified','verify','exports','lodash','moment','md5','ioredis','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','emit','key','active','Imap','status','messageStatus','total','isNil','mailAccount:update','prototype','hasOwnProperty','service','custom','provider'];(function(_0x1a5912,_0x51416f){var _0x18b978=function(_0xfad6d9){while(--_0xfad6d9){_0x1a5912['push'](_0x1a5912['shift']());}};_0x18b978(++_0x51416f);}(_0x58a1,0x1bb));var _0x158a=function(_0x48326a,_0x8cfa0c){_0x48326a=_0x48326a-0x0;var _0x466709=_0x58a1[_0x48326a];return _0x466709;};'use strict';var _=require(_0x158a('0x0'));var moment=require(_0x158a('0x1'));var BPromise=require('bluebird');var md5=require(_0x158a('0x2'));var Redis=require(_0x158a('0x3'));var config=require('../../../config/environment');var logger=require(_0x158a('0x4'))(_0x158a('0x5'));config[_0x158a('0x6')]=_[_0x158a('0x7')](config[_0x158a('0x6')],{'host':'localhost','port':0x18eb});var io=require(_0x158a('0x8'))(new Redis(config[_0x158a('0x6')]));var EmailImap=require(_0x158a('0x9'));var EmailSmtp=require(_0x158a('0xa'));var mailAccount=require(_0x158a('0xb'));var md5Accounts={};function EmailChannel(_0x14b8f7){logger[_0x158a('0xc')](_0x158a('0xd'));this['mailAccounts']=_0x14b8f7[_0x158a('0xe')];this['imapAccounts']={};this['smtp']=new EmailSmtp();}EmailChannel['prototype'][_0x158a('0xf')]=function(_0x5c1551){var _0x28383c=this[_0x158a('0xe')][_0x5c1551];var _0x331f91={'id':_0x28383c['id'],'name':_0x28383c['name'],'key':_0x28383c[_0x158a('0x10')],'active':_0x28383c[_0x158a('0x11')],'Imap':{'status':_0x28383c[_0x158a('0x12')][_0x158a('0x13')],'messageStatus':_0x28383c[_0x158a('0x12')][_0x158a('0x14')],'total':_0x28383c[_0x158a('0x12')][_0x158a('0x15')]}};if(_[_0x158a('0x16')](md5Accounts[_0x5c1551])){md5Accounts[_0x5c1551]={};}var _0x449ca3=md5(JSON['stringify'](_0x331f91));if(md5Accounts[_0x5c1551][_0x158a('0x2')]!==_0x449ca3){md5Accounts[_0x5c1551][_0x158a('0x2')]=_0x449ca3;io[_0x158a('0xf')](_0x158a('0x17'),_0x331f91);}};EmailChannel[_0x158a('0x18')]['refresh']=function(_0x2ca8e2){for(var _0x31ee99 in _0x2ca8e2){if(_0x2ca8e2[_0x158a('0x19')](_0x31ee99)){if(_0x2ca8e2[_0x31ee99][_0x158a('0x12')]&&_0x2ca8e2[_0x31ee99][_0x158a('0x11')]){var _0x423da0=_0x2ca8e2[_0x31ee99][_0x158a('0x12')];if(!_0x423da0[_0x158a('0x1a')]&&_0x2ca8e2[_0x31ee99]['provider']!==_0x158a('0x1b'))_0x423da0[_0x158a('0x1a')]=_0x2ca8e2[_0x31ee99][_0x158a('0x1c')];if(!this['imapAccounts'][_0x158a('0x19')](_0x423da0['id'])){this[_0x158a('0x1d')][_0x423da0['id']]=new EmailImap(_0x423da0,_0x2ca8e2[_0x31ee99]['email']);this[_0x158a('0x1d')][_0x423da0['id']]['on'](_0x158a('0x1e'),this[_0x158a('0x1f')][_0x158a('0x20')](this,_0x31ee99));this[_0x158a('0x1d')][_0x423da0['id']]['on']('email',this[_0x158a('0x21')][_0x158a('0x20')](this,_0x31ee99));this[_0x158a('0x1d')][_0x423da0['id']]['on']('end',this[_0x158a('0x22')][_0x158a('0x20')](this,_0x31ee99));this[_0x158a('0x1d')][_0x423da0['id']]['on'](_0x158a('0x23'),this[_0x158a('0x24')][_0x158a('0x20')](this,_0x31ee99));}}else{if(_[_0x158a('0x16')](this['mailAccounts'][_0x31ee99][_0x158a('0x12')])){this[_0x158a('0xe')][_0x31ee99][_0x158a('0x12')]={};}this['mailAccounts'][_0x31ee99][_0x158a('0x12')][_0x158a('0x13')]=_0x158a('0x25');this[_0x158a('0xe')][_0x31ee99][_0x158a('0x12')][_0x158a('0x14')]='';this[_0x158a('0xf')](_0x31ee99);}}}};EmailChannel['prototype'][_0x158a('0x1f')]=function(_0x569f0d,_0x44cce1){if(this[_0x158a('0xe')][_0x569f0d]){this['mailAccounts'][_0x569f0d][_0x158a('0x12')]['status']=_0x158a('0x26');this[_0x158a('0xe')][_0x569f0d][_0x158a('0x12')]['messageStatus']=_0x44cce1[_0x158a('0x27')];if(_0x44cce1[_0x158a('0x28')]){this[_0x158a('0xe')][_0x569f0d][_0x158a('0x12')][_0x158a('0x15')]=_0x44cce1[_0x158a('0x28')]['total'];}return this[_0x158a('0xf')](_0x569f0d);}};EmailChannel[_0x158a('0x18')][_0x158a('0x21')]=function(_0x3cb742,_0x3cd137){logger['info'](_0x158a('0x29'),_0x3cd137[_0x158a('0x2a')],_0x3cd137[_0x158a('0x2b')],_0x3cd137[_0x158a('0x2c')],_0x3cb742);if(this['mailAccounts'][_0x3cb742]){return mailAccount['notify'](_0x3cb742,_0x3cd137)[_0x158a('0x2d')](function(_0x20d9f7){if(_0x20d9f7){logger[_0x158a('0xc')](_0x158a('0x2e'));}})[_0x158a('0x2f')](function(_0x48eecc){logger[_0x158a('0x23')](_0x158a('0x30'),JSON[_0x158a('0x31')](_0x48eecc));});}};EmailChannel['prototype']['handleImapEnd']=function(_0xb0674b){if(this[_0x158a('0xe')][_0xb0674b]&&this[_0x158a('0xe')][_0xb0674b][_0x158a('0x12')]){if(this[_0x158a('0x1d')][this[_0x158a('0xe')][_0xb0674b]['Imap']['id']]){delete this[_0x158a('0x1d')][this['mailAccounts'][_0xb0674b]['Imap']['id']];}this[_0x158a('0xe')][_0xb0674b][_0x158a('0x12')]['lastSync']=moment();this[_0x158a('0xf')](_0xb0674b);}};EmailChannel[_0x158a('0x18')]['handleImapError']=function(_0x513169,_0x592ded){if(this[_0x158a('0xe')][_0x513169]){this[_0x158a('0xe')][_0x513169]['Imap'][_0x158a('0x13')]='error';this[_0x158a('0xe')][_0x513169][_0x158a('0x12')]['messageStatus']=_0x592ded;return this['emit'](_0x513169);}};EmailChannel[_0x158a('0x18')][_0x158a('0x32')]=function(_0x458e37,_0x574dca){return this['smtp'][_0x158a('0x33')](_0x458e37,_0x574dca);};EmailChannel['prototype'][_0x158a('0x34')]=function(_0x42f6a6){var _0x1f69b2=this;if(this[_0x158a('0xe')][_0x42f6a6['id']]){if(_['isNil'](this['mailAccounts'][_0x42f6a6['id']][_0x158a('0x35')])){this[_0x158a('0xe')][_0x42f6a6['id']][_0x158a('0x35')]={};}this['mailAccounts'][_0x42f6a6['id']]['Smtp'][_0x158a('0x36')]=moment();return new BPromise(function(_0x30dbed,_0x3aef1e){return _0x1f69b2[_0x158a('0x37')]['verify'](_0x42f6a6)[_0x158a('0x2d')](function(_0x1221ca){_0x1f69b2[_0x158a('0xe')][_0x42f6a6['id']][_0x158a('0x35')][_0x158a('0x13')]=_0x158a('0x38');_0x1f69b2[_0x158a('0xe')][_0x42f6a6['id']][_0x158a('0x35')][_0x158a('0x14')]='';_0x1f69b2['emit'](_0x42f6a6['id']);_0x30dbed(_0x1221ca);})[_0x158a('0x2f')](function(_0x46c09f){_0x1f69b2['mailAccounts'][_0x42f6a6['id']]['Smtp']['status']=_0x158a('0x23');_0x1f69b2[_0x158a('0xe')][_0x42f6a6['id']][_0x158a('0x35')][_0x158a('0x14')]=_0x46c09f;_0x1f69b2[_0x158a('0xf')](_0x42f6a6['id']);_0x3aef1e(_0x46c09f);});});}return this['smtp'][_0x158a('0x39')](_0x42f6a6);};module[_0x158a('0x3a')]=EmailChannel;
\ No newline at end of file
+var _0x5872=['connected','messages','info','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','from','notify','then','Mail\x20accepted\x20from\x20routing','catch','stringify','lastSync','sendMail','send','verifySmtp','Smtp','verify','verified','exports','lodash','moment','bluebird','md5','ioredis','../../../config/environment','../../../config/logger','email','redis','defaults','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','start\x20email\x20channel','mailAccounts','smtp','prototype','emit','key','active','Imap','status','messageStatus','total','isNil','mailAccount:update','hasOwnProperty','provider','custom','imapAccounts','bind','end','handleImapEnd','error','handleImapError','disabled'];(function(_0x4d5c21,_0x3c7885){var _0x527626=function(_0x31fe4a){while(--_0x31fe4a){_0x4d5c21['push'](_0x4d5c21['shift']());}};_0x527626(++_0x3c7885);}(_0x5872,0xbf));var _0x2587=function(_0x4d613c,_0x55f220){_0x4d613c=_0x4d613c-0x0;var _0x301fe3=_0x5872[_0x4d613c];return _0x301fe3;};'use strict';var _=require(_0x2587('0x0'));var moment=require(_0x2587('0x1'));var BPromise=require(_0x2587('0x2'));var md5=require(_0x2587('0x3'));var Redis=require(_0x2587('0x4'));var config=require(_0x2587('0x5'));var logger=require(_0x2587('0x6'))(_0x2587('0x7'));config[_0x2587('0x8')]=_[_0x2587('0x9')](config[_0x2587('0x8')],{'host':'localhost','port':0x18eb});var io=require(_0x2587('0xa'))(new Redis(config[_0x2587('0x8')]));var EmailImap=require(_0x2587('0xb'));var EmailSmtp=require(_0x2587('0xc'));var mailAccount=require(_0x2587('0xd'));var md5Accounts={};function EmailChannel(_0x15b4a8){logger['info'](_0x2587('0xe'));this[_0x2587('0xf')]=_0x15b4a8[_0x2587('0xf')];this['imapAccounts']={};this[_0x2587('0x10')]=new EmailSmtp();}EmailChannel[_0x2587('0x11')][_0x2587('0x12')]=function(_0x1c006d){var _0x1732ca=this[_0x2587('0xf')][_0x1c006d];var _0x1bad70={'id':_0x1732ca['id'],'name':_0x1732ca['name'],'key':_0x1732ca[_0x2587('0x13')],'active':_0x1732ca[_0x2587('0x14')],'Imap':{'status':_0x1732ca[_0x2587('0x15')][_0x2587('0x16')],'messageStatus':_0x1732ca['Imap'][_0x2587('0x17')],'total':_0x1732ca[_0x2587('0x15')][_0x2587('0x18')]}};if(_[_0x2587('0x19')](md5Accounts[_0x1c006d])){md5Accounts[_0x1c006d]={};}var _0xf8e27f=md5(JSON['stringify'](_0x1bad70));if(md5Accounts[_0x1c006d][_0x2587('0x3')]!==_0xf8e27f){md5Accounts[_0x1c006d][_0x2587('0x3')]=_0xf8e27f;io[_0x2587('0x12')](_0x2587('0x1a'),_0x1bad70);}};EmailChannel[_0x2587('0x11')]['refresh']=function(_0x2f9cc2){for(var _0x51eb28 in _0x2f9cc2){if(_0x2f9cc2[_0x2587('0x1b')](_0x51eb28)){if(_0x2f9cc2[_0x51eb28]['Imap']&&_0x2f9cc2[_0x51eb28][_0x2587('0x14')]){var _0x3a3928=_0x2f9cc2[_0x51eb28][_0x2587('0x15')];if(!_0x3a3928['service']&&_0x2f9cc2[_0x51eb28][_0x2587('0x1c')]!==_0x2587('0x1d'))_0x3a3928['service']=_0x2f9cc2[_0x51eb28][_0x2587('0x1c')];if(!this[_0x2587('0x1e')][_0x2587('0x1b')](_0x3a3928['id'])){this[_0x2587('0x1e')][_0x3a3928['id']]=new EmailImap(_0x3a3928,_0x2f9cc2[_0x51eb28][_0x2587('0x7')]);this[_0x2587('0x1e')][_0x3a3928['id']]['on']('box',this['handleImapBox']['bind'](this,_0x51eb28));this[_0x2587('0x1e')][_0x3a3928['id']]['on'](_0x2587('0x7'),this['handleImapEmail'][_0x2587('0x1f')](this,_0x51eb28));this['imapAccounts'][_0x3a3928['id']]['on'](_0x2587('0x20'),this[_0x2587('0x21')][_0x2587('0x1f')](this,_0x51eb28));this[_0x2587('0x1e')][_0x3a3928['id']]['on'](_0x2587('0x22'),this[_0x2587('0x23')][_0x2587('0x1f')](this,_0x51eb28));}}else{if(_[_0x2587('0x19')](this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')])){this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')]={};}this[_0x2587('0xf')][_0x51eb28][_0x2587('0x15')][_0x2587('0x16')]=_0x2587('0x24');this['mailAccounts'][_0x51eb28][_0x2587('0x15')][_0x2587('0x17')]='';this[_0x2587('0x12')](_0x51eb28);}}}};EmailChannel[_0x2587('0x11')]['handleImapBox']=function(_0x3f1f4d,_0x2ff5c5){if(this[_0x2587('0xf')][_0x3f1f4d]){this['mailAccounts'][_0x3f1f4d][_0x2587('0x15')][_0x2587('0x16')]=_0x2587('0x25');this[_0x2587('0xf')][_0x3f1f4d][_0x2587('0x15')][_0x2587('0x17')]=_0x2ff5c5['name'];if(_0x2ff5c5[_0x2587('0x26')]){this[_0x2587('0xf')][_0x3f1f4d]['Imap']['total']=_0x2ff5c5['messages']['total'];}return this['emit'](_0x3f1f4d);}};EmailChannel['prototype']['handleImapEmail']=function(_0x2dd2ec,_0x47e670){logger[_0x2587('0x27')](_0x2587('0x28'),_0x47e670[_0x2587('0x29')],_0x47e670[_0x2587('0x2a')],_0x47e670[_0x2587('0x2b')],_0x2dd2ec);if(this[_0x2587('0xf')][_0x2dd2ec]){return mailAccount[_0x2587('0x2c')](_0x2dd2ec,_0x47e670)[_0x2587('0x2d')](function(_0x479f5d){if(_0x479f5d){logger[_0x2587('0x27')](_0x2587('0x2e'));}})[_0x2587('0x2f')](function(_0x548def){logger[_0x2587('0x22')]('Mail\x20not\x20accepted\x20from\x20routing\x20%s',JSON[_0x2587('0x30')](_0x548def));});}};EmailChannel['prototype'][_0x2587('0x21')]=function(_0x4ccdb0){if(this['mailAccounts'][_0x4ccdb0]&&this[_0x2587('0xf')][_0x4ccdb0]['Imap']){if(this['imapAccounts'][this[_0x2587('0xf')][_0x4ccdb0]['Imap']['id']]){delete this[_0x2587('0x1e')][this[_0x2587('0xf')][_0x4ccdb0][_0x2587('0x15')]['id']];}this[_0x2587('0xf')][_0x4ccdb0][_0x2587('0x15')][_0x2587('0x31')]=moment();this[_0x2587('0x12')](_0x4ccdb0);}};EmailChannel['prototype'][_0x2587('0x23')]=function(_0x3d63e5,_0x3a8543){if(this[_0x2587('0xf')][_0x3d63e5]){this[_0x2587('0xf')][_0x3d63e5][_0x2587('0x15')]['status']=_0x2587('0x22');this[_0x2587('0xf')][_0x3d63e5][_0x2587('0x15')][_0x2587('0x17')]=_0x3a8543;return this[_0x2587('0x12')](_0x3d63e5);}};EmailChannel[_0x2587('0x11')][_0x2587('0x32')]=function(_0x6755f6,_0x34bb4e){return this[_0x2587('0x10')][_0x2587('0x33')](_0x6755f6,_0x34bb4e);};EmailChannel[_0x2587('0x11')][_0x2587('0x34')]=function(_0x4bff3a){var _0x114b5c=this;if(this[_0x2587('0xf')][_0x4bff3a['id']]){if(_[_0x2587('0x19')](this['mailAccounts'][_0x4bff3a['id']]['Smtp'])){this[_0x2587('0xf')][_0x4bff3a['id']]['Smtp']={};}this[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')]['lastSync']=moment();return new BPromise(function(_0x8a95cf,_0x4d9ddb){return _0x114b5c['smtp'][_0x2587('0x36')](_0x4bff3a)[_0x2587('0x2d')](function(_0x1536a8){_0x114b5c['mailAccounts'][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x16')]=_0x2587('0x37');_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x17')]='';_0x114b5c[_0x2587('0x12')](_0x4bff3a['id']);_0x8a95cf(_0x1536a8);})[_0x2587('0x2f')](function(_0xccceb5){_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x16')]=_0x2587('0x22');_0x114b5c[_0x2587('0xf')][_0x4bff3a['id']][_0x2587('0x35')][_0x2587('0x17')]=_0xccceb5;_0x114b5c[_0x2587('0x12')](_0x4bff3a['id']);_0x4d9ddb(_0xccceb5);});});}return this[_0x2587('0x10')]['verify'](_0x4bff3a);};module[_0x2587('0x38')]=EmailChannel;
\ No newline at end of file
index babf896..e314595 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90d1=['bind','end','handleEnd','connect','inherits','prototype','connTimeout','authTimeout','service','user','modernAuthentication','xoauth2','generateXOAuth2Token','data5','password','host','tls','autotls','required','handleOpenBox','emit','readUnseen','UNSEEN','length','fetch','message','handleFetchMessage','error','handleFetchError','handleFetchEnd','handleCloseBox','body','handleMessageBody','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','account','closeBox','handleError','stringify','textCode','hasOwnProperty','exports','util','imap','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','./utils','../../../config/logger','email','mailbox','getAccount','once','ready','handleReady'];(function(_0x4f106d,_0x5715c1){var _0x35aa9c=function(_0x286fa3){while(--_0x286fa3){_0x4f106d['push'](_0x4f106d['shift']());}};_0x35aa9c(++_0x5715c1);}(_0x90d1,0x158));var _0x190d=function(_0x4e43d4,_0xd760d0){_0x4e43d4=_0x4e43d4-0x0;var _0x4db61c=_0x90d1[_0x4e43d4];return _0x4db61c;};'use strict';var _=require('lodash');var util=require(_0x190d('0x0'));var Imap=require(_0x190d('0x1'));var simpleParser=require(_0x190d('0x2'))[_0x190d('0x3')];var Iconv=require(_0x190d('0x4'))[_0x190d('0x5')];var EventEmitter=require(_0x190d('0x6'))[_0x190d('0x7')];var utils=require(_0x190d('0x8'));var logger=require(_0x190d('0x9'))(_0x190d('0xa'));function EmailImap(_0x38b295,_0x5b05f7){this[_0x190d('0xb')]=_0x38b295[_0x190d('0xb')];this['account']=this[_0x190d('0xc')](_0x38b295,_0x5b05f7);this[_0x190d('0x1')]=new Imap(this['account']);this[_0x190d('0x1')][_0x190d('0xd')](_0x190d('0xe'),this[_0x190d('0xf')][_0x190d('0x10')](this));this[_0x190d('0x1')][_0x190d('0xd')](_0x190d('0x11'),this[_0x190d('0x12')][_0x190d('0x10')](this));this[_0x190d('0x1')]['on']('error',this['handleError'][_0x190d('0x10')](this));this[_0x190d('0x1')][_0x190d('0x13')]();}util[_0x190d('0x14')](EmailImap,EventEmitter);EmailImap[_0x190d('0x15')][_0x190d('0xc')]=function(_0x673f1b,_0x216369){var _0x413900={'connTimeout':_0x673f1b['connTimeout']?_0x673f1b[_0x190d('0x16')]*0x3e8:0x2710,'authTimeout':_0x673f1b[_0x190d('0x17')]?_0x673f1b[_0x190d('0x17')]*0x3e8:0x1388};if(_0x673f1b[_0x190d('0x18')]){_0x413900[_0x190d('0x19')]=_0x673f1b[_0x190d('0x19')];if(_0x673f1b[_0x190d('0x1a')]){_0x413900[_0x190d('0x1b')]=utils[_0x190d('0x1c')](_0x673f1b['CloudProvider'][_0x190d('0x1d')],_0x673f1b[_0x190d('0x19')]);}else{_0x413900[_0x190d('0x1e')]=_0x673f1b[_0x190d('0x1e')];}}else{if(_0x673f1b['authentication']){_0x413900[_0x190d('0x19')]=_0x673f1b[_0x190d('0x19')];_0x413900[_0x190d('0x1e')]=_0x673f1b['password'];}}_0x413900[_0x190d('0xa')]=_0x216369||_0x673f1b[_0x190d('0x19')]||'anonymous@xcally.com';_0x413900['host']=_0x673f1b[_0x190d('0x1f')];_0x413900['port']=_0x673f1b['port']||0x3e1;if(_0x673f1b[_0x190d('0x20')]){_0x413900['tls']=!![];}else{_0x413900[_0x190d('0x20')]=![];_0x413900[_0x190d('0x21')]=_0x190d('0x22');}return _0x413900;};EmailImap[_0x190d('0x15')][_0x190d('0xf')]=function(){this[_0x190d('0x1')]['openBox'](this[_0x190d('0xb')],![],this[_0x190d('0x23')]['bind'](this));};EmailImap[_0x190d('0x15')][_0x190d('0x23')]=function(_0x2632c4,_0x252184){if(_0x2632c4){this['handleError'](_0x2632c4,!![]);}else{this[_0x190d('0x24')]('box',_0x252184);this[_0x190d('0x25')]();}};EmailImap[_0x190d('0x15')]['handleCloseBox']=function(_0x1dd3fe){if(_0x1dd3fe){this['handleError'](_0x1dd3fe,!![]);}else{this[_0x190d('0x1')][_0x190d('0x11')]();}};EmailImap['prototype']['readUnseen']=function(){this[_0x190d('0x1')]['search']([_0x190d('0x26')],this['handleReadUnseen'][_0x190d('0x10')](this));};EmailImap[_0x190d('0x15')]['handleReadUnseen']=function(_0x540c9b,_0x6b9fd3){if(_0x540c9b){this['handleError'](_0x540c9b,!![]);}else{if(_0x6b9fd3[_0x190d('0x27')]){try{var _0x4a251c=this['imap'][_0x190d('0x28')](_0x6b9fd3,{'bodies':'','markSeen':!![]});_0x4a251c['on'](_0x190d('0x29'),this[_0x190d('0x2a')][_0x190d('0x10')](this));_0x4a251c[_0x190d('0xd')](_0x190d('0x2b'),this[_0x190d('0x2c')][_0x190d('0x10')](this));_0x4a251c[_0x190d('0xd')](_0x190d('0x11'),this[_0x190d('0x2d')][_0x190d('0x10')](this));}catch(_0x1e1f46){logger[_0x190d('0x2b')](_0x1e1f46);}}else{this[_0x190d('0x1')]['closeBox'](!![],this[_0x190d('0x2e')]['bind'](this));}}};EmailImap['prototype']['handleFetchMessage']=function(_0x1ab232){_0x1ab232['on'](_0x190d('0x2f'),this[_0x190d('0x30')]['bind'](this));_0x1ab232['once']('attributes',this[_0x190d('0x31')][_0x190d('0x10')](this));_0x1ab232[_0x190d('0xd')](_0x190d('0x11'),this['handleMessageEnd'][_0x190d('0x10')](this));};EmailImap[_0x190d('0x15')][_0x190d('0x30')]=function(_0x3261ca){simpleParser(_0x3261ca,{'Iconv':Iconv},this['handleSimpleParser'][_0x190d('0x10')](this));};EmailImap[_0x190d('0x15')][_0x190d('0x31')]=function(){};EmailImap[_0x190d('0x15')][_0x190d('0x32')]=function(){};EmailImap[_0x190d('0x15')][_0x190d('0x33')]=function(_0x2e8993,_0x73f054){if(_0x2e8993){logger[_0x190d('0x2b')](_0x2e8993);}else{var _0x11907a=this;utils[_0x190d('0x34')](this[_0x190d('0x35')],_0x73f054,function(_0x887389){_0x11907a[_0x190d('0x24')](_0x190d('0xa'),_0x887389);});}};EmailImap[_0x190d('0x15')][_0x190d('0x2d')]=function(){this['imap'][_0x190d('0x36')](!![],this[_0x190d('0x2e')][_0x190d('0x10')](this));};EmailImap[_0x190d('0x15')]['handleFetchError']=function(_0xe20fa6){this[_0x190d('0x37')](_0xe20fa6);this[_0x190d('0x1')]['closeBox'](!![],this[_0x190d('0x2e')][_0x190d('0x10')](this));};EmailImap[_0x190d('0x15')][_0x190d('0x12')]=function(){this[_0x190d('0x24')](_0x190d('0x11'));};EmailImap[_0x190d('0x15')][_0x190d('0x37')]=function(_0x35f875,_0x4ffa47){logger[_0x190d('0x2b')]('handleError',this['account'][_0x190d('0xa')],JSON[_0x190d('0x38')](_0x35f875));var _0xb52524='';if(_0x35f875){if(_0x35f875['textCode']){_0xb52524=_0x35f875[_0x190d('0x39')];}else{for(var _0x2cfd7f in _0x35f875){if(_0x35f875[_0x190d('0x3a')](_0x2cfd7f)){_0xb52524+=_['upperFirst'](_0x2cfd7f)+':\x20'+_0x35f875[_0x2cfd7f]+'\x0a';}}}}if(_0x4ffa47){this[_0x190d('0x1')][_0x190d('0x11')]();}else{this[_0x190d('0x24')](_0x190d('0x2b'),_0xb52524);this[_0x190d('0x24')](_0x190d('0x11'));}};module[_0x190d('0x3b')]=EmailImap;
\ No newline at end of file
+var _0xadb1=['box','readUnseen','handleCloseBox','UNSEEN','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleMessageEnd','handleSimpleParser','parser','handleFetchEnd','textCode','hasOwnProperty','util','imap','mailparser','simpleParser','iconv','Iconv','events','EventEmitter','../../../config/logger','email','mailbox','account','once','ready','handleReady','bind','end','handleEnd','error','handleError','connect','inherits','prototype','getAccount','connTimeout','authTimeout','user','modernAuthentication','CloudProvider','data5','password','authentication','anonymous@xcally.com','host','port','tls','autotls','required','openBox','handleOpenBox','emit'];(function(_0x34977a,_0x104e0d){var _0x11dec3=function(_0x55b9d5){while(--_0x55b9d5){_0x34977a['push'](_0x34977a['shift']());}};_0x11dec3(++_0x104e0d);}(_0xadb1,0x182));var _0x1adb=function(_0x267d22,_0x280acd){_0x267d22=_0x267d22-0x0;var _0x3d032b=_0xadb1[_0x267d22];return _0x3d032b;};'use strict';var _=require('lodash');var util=require(_0x1adb('0x0'));var Imap=require(_0x1adb('0x1'));var simpleParser=require(_0x1adb('0x2'))[_0x1adb('0x3')];var Iconv=require(_0x1adb('0x4'))[_0x1adb('0x5')];var EventEmitter=require(_0x1adb('0x6'))[_0x1adb('0x7')];var utils=require('./utils');var logger=require(_0x1adb('0x8'))(_0x1adb('0x9'));function EmailImap(_0x4cea43,_0x3b59db){this['mailbox']=_0x4cea43[_0x1adb('0xa')];this[_0x1adb('0xb')]=this['getAccount'](_0x4cea43,_0x3b59db);this[_0x1adb('0x1')]=new Imap(this[_0x1adb('0xb')]);this[_0x1adb('0x1')][_0x1adb('0xc')](_0x1adb('0xd'),this[_0x1adb('0xe')][_0x1adb('0xf')](this));this[_0x1adb('0x1')][_0x1adb('0xc')](_0x1adb('0x10'),this[_0x1adb('0x11')][_0x1adb('0xf')](this));this[_0x1adb('0x1')]['on'](_0x1adb('0x12'),this[_0x1adb('0x13')][_0x1adb('0xf')](this));this[_0x1adb('0x1')][_0x1adb('0x14')]();}util[_0x1adb('0x15')](EmailImap,EventEmitter);EmailImap[_0x1adb('0x16')][_0x1adb('0x17')]=function(_0x356b33,_0x476fd8){var _0x17f074={'connTimeout':_0x356b33['connTimeout']?_0x356b33[_0x1adb('0x18')]*0x3e8:0x2710,'authTimeout':_0x356b33[_0x1adb('0x19')]?_0x356b33[_0x1adb('0x19')]*0x3e8:0x1388};if(_0x356b33['service']){_0x17f074[_0x1adb('0x1a')]=_0x356b33['user'];if(_0x356b33[_0x1adb('0x1b')]){_0x17f074['xoauth2']=utils['generateXOAuth2Token'](_0x356b33[_0x1adb('0x1c')][_0x1adb('0x1d')],_0x356b33[_0x1adb('0x1a')]);}else{_0x17f074['password']=_0x356b33[_0x1adb('0x1e')];}}else{if(_0x356b33[_0x1adb('0x1f')]){_0x17f074[_0x1adb('0x1a')]=_0x356b33[_0x1adb('0x1a')];_0x17f074[_0x1adb('0x1e')]=_0x356b33['password'];}}_0x17f074[_0x1adb('0x9')]=_0x476fd8||_0x356b33[_0x1adb('0x1a')]||_0x1adb('0x20');_0x17f074['host']=_0x356b33[_0x1adb('0x21')];_0x17f074[_0x1adb('0x22')]=_0x356b33[_0x1adb('0x22')]||0x3e1;if(_0x356b33[_0x1adb('0x23')]){_0x17f074[_0x1adb('0x23')]=!![];}else{_0x17f074['tls']=![];_0x17f074[_0x1adb('0x24')]=_0x1adb('0x25');}return _0x17f074;};EmailImap[_0x1adb('0x16')][_0x1adb('0xe')]=function(){this[_0x1adb('0x1')][_0x1adb('0x26')](this[_0x1adb('0xa')],![],this[_0x1adb('0x27')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x27')]=function(_0x51c569,_0x5c7848){if(_0x51c569){this['handleError'](_0x51c569,!![]);}else{this[_0x1adb('0x28')](_0x1adb('0x29'),_0x5c7848);this[_0x1adb('0x2a')]();}};EmailImap[_0x1adb('0x16')][_0x1adb('0x2b')]=function(_0x35d982){if(_0x35d982){this['handleError'](_0x35d982,!![]);}else{this[_0x1adb('0x1')][_0x1adb('0x10')]();}};EmailImap[_0x1adb('0x16')][_0x1adb('0x2a')]=function(){this[_0x1adb('0x1')]['search']([_0x1adb('0x2c')],this[_0x1adb('0x2d')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x2d')]=function(_0x1b95fd,_0x11ba9a){if(_0x1b95fd){this[_0x1adb('0x13')](_0x1b95fd,!![]);}else{if(_0x11ba9a[_0x1adb('0x2e')]){try{var _0x57bee3=this['imap'][_0x1adb('0x2f')](_0x11ba9a,{'bodies':'','markSeen':!![]});_0x57bee3['on']('message',this[_0x1adb('0x30')][_0x1adb('0xf')](this));_0x57bee3['once'](_0x1adb('0x12'),this[_0x1adb('0x31')][_0x1adb('0xf')](this));_0x57bee3[_0x1adb('0xc')](_0x1adb('0x10'),this['handleFetchEnd']['bind'](this));}catch(_0x201317){logger[_0x1adb('0x12')](_0x201317);}}else{this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this[_0x1adb('0x2b')][_0x1adb('0xf')](this));}}};EmailImap[_0x1adb('0x16')][_0x1adb('0x30')]=function(_0x94ce7a){_0x94ce7a['on'](_0x1adb('0x33'),this[_0x1adb('0x34')][_0x1adb('0xf')](this));_0x94ce7a['once'](_0x1adb('0x35'),this[_0x1adb('0x36')][_0x1adb('0xf')](this));_0x94ce7a[_0x1adb('0xc')](_0x1adb('0x10'),this[_0x1adb('0x37')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')]['handleMessageBody']=function(_0x238c7f){simpleParser(_0x238c7f,{'Iconv':Iconv},this[_0x1adb('0x38')][_0x1adb('0xf')](this));};EmailImap['prototype'][_0x1adb('0x36')]=function(){};EmailImap[_0x1adb('0x16')]['handleMessageEnd']=function(){};EmailImap[_0x1adb('0x16')][_0x1adb('0x38')]=function(_0x4f7843,_0x439e1e){if(_0x4f7843){logger[_0x1adb('0x12')](_0x4f7843);}else{var _0x507bd4=this;utils[_0x1adb('0x39')](this[_0x1adb('0xb')],_0x439e1e,function(_0x24812a){_0x507bd4[_0x1adb('0x28')](_0x1adb('0x9'),_0x24812a);});}};EmailImap[_0x1adb('0x16')][_0x1adb('0x3a')]=function(){this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this['handleCloseBox'][_0x1adb('0xf')](this));};EmailImap['prototype'][_0x1adb('0x31')]=function(_0x417003){this[_0x1adb('0x13')](_0x417003);this[_0x1adb('0x1')][_0x1adb('0x32')](!![],this[_0x1adb('0x2b')][_0x1adb('0xf')](this));};EmailImap[_0x1adb('0x16')][_0x1adb('0x11')]=function(){this[_0x1adb('0x28')](_0x1adb('0x10'));};EmailImap[_0x1adb('0x16')][_0x1adb('0x13')]=function(_0x3653ac,_0x4f15d8){logger[_0x1adb('0x12')]('handleError',this[_0x1adb('0xb')][_0x1adb('0x9')],JSON['stringify'](_0x3653ac));var _0x4d8088='';if(_0x3653ac){if(_0x3653ac['textCode']){_0x4d8088=_0x3653ac[_0x1adb('0x3b')];}else{for(var _0x3a30d5 in _0x3653ac){if(_0x3653ac[_0x1adb('0x3c')](_0x3a30d5)){_0x4d8088+=_['upperFirst'](_0x3a30d5)+':\x20'+_0x3653ac[_0x3a30d5]+'\x0a';}}}}if(_0x4f15d8){this[_0x1adb('0x1')][_0x1adb('0x10')]();}else{this[_0x1adb('0x28')](_0x1adb('0x12'),_0x4d8088);this['emit'](_0x1adb('0x10'));}};module['exports']=EmailImap;
\ No newline at end of file
index 1f61d95..8e42ac9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf6d=['exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','sendMail','toString','verify','Not\x20verifired'];(function(_0x4e8bd3,_0x223177){var _0x1cf256=function(_0x3d98c0){while(--_0x3d98c0){_0x4e8bd3['push'](_0x4e8bd3['shift']());}};_0x1cf256(++_0x223177);}(_0xdf6d,0x85));var _0xddf6=function(_0x3fe213,_0x365536){_0x3fe213=_0x3fe213-0x0;var _0x5a39f3=_0xdf6d[_0x3fe213];return _0x5a39f3;};'use strict';var nodemailer=require(_0xddf6('0x0'));var inlineBase64=require(_0xddf6('0x1'));function EmailSmtp(){}EmailSmtp[_0xddf6('0x2')][_0xddf6('0x3')]=function(_0xc70406,_0x26aa22){return new Promise(function(_0x441d38,_0x7ca2b6){var _0x127caa=nodemailer[_0xddf6('0x4')](_0xc70406);_0x127caa[_0xddf6('0x5')](_0xddf6('0x6'),inlineBase64());_0x127caa[_0xddf6('0x7')](_0x26aa22,function(_0x2ddada,_0x20d536){if(_0x2ddada){_0x7ca2b6(_0x2ddada[_0xddf6('0x8')]());}else{_0x441d38(_0x20d536);}});});};EmailSmtp['prototype']['verify']=function(_0x16ad14){return new Promise(function(_0x1366fc,_0x58e1b2){var _0x13f44c=nodemailer[_0xddf6('0x4')](_0x16ad14);_0x13f44c[_0xddf6('0x9')](function(_0xf07b44,_0x5d2d7d){if(_0xf07b44){_0x58e1b2(_0xf07b44['toString']());}else{if(_0x5d2d7d){_0x1366fc(_0x5d2d7d);}else{_0x58e1b2(_0xddf6('0xa'));}}});});};module[_0xddf6('0xb')]=EmailSmtp;
\ No newline at end of file
+var _0xd9f9=['prototype','send','createTransport','use','compile','sendMail','verify','Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64'];(function(_0x3f08b9,_0x2bc1fa){var _0x5890fa=function(_0x24c4b3){while(--_0x24c4b3){_0x3f08b9['push'](_0x3f08b9['shift']());}};_0x5890fa(++_0x2bc1fa);}(_0xd9f9,0x106));var _0x9d9f=function(_0x15f1a0,_0x38ae82){_0x15f1a0=_0x15f1a0-0x0;var _0x5bf1e3=_0xd9f9[_0x15f1a0];return _0x5bf1e3;};'use strict';var nodemailer=require(_0x9d9f('0x0'));var inlineBase64=require(_0x9d9f('0x1'));function EmailSmtp(){}EmailSmtp[_0x9d9f('0x2')][_0x9d9f('0x3')]=function(_0x11ebca,_0x43b09b){return new Promise(function(_0x51d313,_0x1b72d3){var _0x50fdc6=nodemailer[_0x9d9f('0x4')](_0x11ebca);_0x50fdc6[_0x9d9f('0x5')](_0x9d9f('0x6'),inlineBase64());_0x50fdc6[_0x9d9f('0x7')](_0x43b09b,function(_0xafb4fe,_0x2e4685){if(_0xafb4fe){_0x1b72d3(_0xafb4fe['toString']());}else{_0x51d313(_0x2e4685);}});});};EmailSmtp['prototype'][_0x9d9f('0x8')]=function(_0x443d06){return new Promise(function(_0x5f529e,_0x339827){var _0x44a7d5=nodemailer[_0x9d9f('0x4')](_0x443d06);_0x44a7d5[_0x9d9f('0x8')](function(_0x4402aa,_0x49d482){if(_0x4402aa){_0x339827(_0x4402aa['toString']());}else{if(_0x49d482){_0x5f529e(_0x49d482);}else{_0x339827(_0x9d9f('0x9'));}}});});};module[_0x9d9f('0xa')]=EmailSmtp;
\ No newline at end of file
index 4fac6f7..dbb8593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6377=['value','isEmpty','html','includes','attachments','push','_SRC','_IMG','replace','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','message','originTo','originCc','bcc','attach','type','attachment','filename','attachment-','now','root','server/files/attachments/','writeFileSync','content','contentType','headerLines','Precedence:\x20auto_reply','line','isAutoreply','from','inReplyTo','date','YYYY-MM-DD\x20HH:mm:ss','textAsHtml','format','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','generateXOAuth2Token','auth=Bearer\x20','toString','base64','moment','randomstring','path','util','node-tnef','email','../../../config/environment','address','anonymous','generate','@xcally.com','head','name','indexOf','length','slice','join','Anonymous','split','pop'];(function(_0x1788ed,_0xacf360){var _0x1c5c8b=function(_0x5134f6){while(--_0x5134f6){_0x1788ed['push'](_0x1788ed['shift']());}};_0x1c5c8b(++_0xacf360);}(_0x6377,0x1c1));var _0x7637=function(_0x51fd41,_0x2afa87){_0x51fd41=_0x51fd41-0x0;var _0x219f17=_0x6377[_0x51fd41];return _0x219f17;};'use strict';var _=require('lodash');var moment=require(_0x7637('0x0'));var random=require(_0x7637('0x1'));var fs=require('fs');var path=require(_0x7637('0x2'));var util=require(_0x7637('0x3'));var tnef=require(_0x7637('0x4'));var logger=require('../../../config/logger')(_0x7637('0x5'));var config=require(_0x7637('0x6'));function getAddress(_0x3a414c){var _0x2e608b=_['head'](_0x3a414c['value']);return _0x2e608b&&_0x2e608b[_0x7637('0x7')]?_0x2e608b[_0x7637('0x7')]:_0x7637('0x8')+random[_0x7637('0x9')](0x6)+_0x7637('0xa');}function getFirstName(_0x3e1a68){var _0x50d62a=_[_0x7637('0xb')](_0x3e1a68['value']);if(_0x50d62a&&_0x50d62a[_0x7637('0xc')]){if(_0x50d62a[_0x7637('0xc')]==_0x50d62a[_0x7637('0x7')]){return _0x50d62a[_0x7637('0xc')]['substring'](0x0,_0x50d62a[_0x7637('0xc')][_0x7637('0xd')]('@'));}var _0x10b1c2=_0x50d62a['name']['split'](/\s+/);return _0x10b1c2[_0x7637('0xe')]>0x1?_0x10b1c2[_0x7637('0xf')](0x0,-0x1)[_0x7637('0x10')]('\x20'):_0x50d62a[_0x7637('0xc')];}return _0x7637('0x11');}function getLastName(_0x48f4d2){var _0x451fb8=_[_0x7637('0xb')](_0x48f4d2['value']);if(_0x451fb8&&_0x451fb8['name']){var _0x55ea95=_0x451fb8[_0x7637('0xc')][_0x7637('0x12')](/\s+/);return _0x55ea95['length']>0x1?_0x55ea95[_0x7637('0x13')]():'';}return'';}function getMails(_0x39679c,_0x16aeb6){var _0x4898fb='';for(var _0x223695=0x0;_0x223695<_0x16aeb6['value'][_0x7637('0xe')];_0x223695+=0x1){if(_0x16aeb6[_0x7637('0x14')][_0x223695][_0x7637('0x7')]!==_0x39679c){if(!_[_0x7637('0x15')](_0x4898fb)){_0x4898fb+=',';}_0x4898fb+=_0x16aeb6[_0x7637('0x14')][_0x223695][_0x7637('0xc')]||_0x16aeb6[_0x7637('0x14')][_0x223695][_0x7637('0x7')]||'';_0x4898fb+='\x20<';_0x4898fb+=_0x16aeb6[_0x7637('0x14')][_0x223695][_0x7637('0x7')]?_0x16aeb6[_0x7637('0x14')][_0x223695]['address']:_0x7637('0x8')+random[_0x7637('0x9')](0x6)+_0x7637('0xa');_0x4898fb+='>';}}return _0x4898fb;}function parseEmail(_0x1dd393,_0x5567e0,_0x2ba04e){if(_0x5567e0[_0x7637('0x16')]){var _0x3dbb7d=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x3dbb7d['test'](_0x5567e0[_0x7637('0x16')])){_0x5567e0[_0x7637('0x16')]=_0x5567e0['html']['replace'](_0x3dbb7d,'');}if(_0x5567e0['html'][_0x7637('0x17')]('<img')){var _0x594665=[];_0x5567e0[_0x7637('0x18')]['forEach'](_0x50b446=>{_0x594665[_0x7637('0x19')](_0x50b446['filename']);});var _0xaa92a4=/<img.*? _SRC(.*?)[^>]+>/g;var _0x54117c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x333559=_0x5567e0['html']['replace'](_0x54117c,_0x7637('0x1a'));var _0x303156=_0x333559['replace'](_0xaa92a4,_0x7637('0x1b'));for(let _0x5774fc=0x0;_0x5774fc<_0x594665[_0x7637('0xe')];_0x5774fc++){var _0x23df54=_0x303156[_0x7637('0x1c')]('_IMG',_0x7637('0x1d')+_0x594665[_0x5774fc]+_0x7637('0x1e'));_0x303156=_0x23df54;}_0x5567e0[_0x7637('0x16')]=_0x303156;}_0x2ba04e['body']=_0x5567e0[_0x7637('0x16')];}else{_0x2ba04e[_0x7637('0x1f')]=_0x5567e0['textAsHtml'];}if(_0x2ba04e[_0x7637('0x1f')]){_0x2ba04e[_0x7637('0x1f')]=_0x2ba04e['body'][_0x7637('0x1c')](/<a\s+/gi,'<a\x20target=\x22_blank\x22\x20');}if(_0x5567e0['to']){_0x2ba04e[_0x7637('0x20')][_0x7637('0x21')]=getMails(null,_0x5567e0['to']);var _0x56c725=getMails(_0x1dd393[_0x7637('0x5')],_0x5567e0['to']);if(!_[_0x7637('0x15')](_0x56c725)){_0x2ba04e[_0x7637('0x20')]['cc']+=_0x56c725;}}if(_0x5567e0['cc']){_0x2ba04e[_0x7637('0x20')][_0x7637('0x22')]=getMails(null,_0x5567e0['cc']);var _0x57a1fa=getMails(_0x1dd393[_0x7637('0x5')],_0x5567e0['cc']);if(!_['isEmpty'](_0x57a1fa)){if(!_[_0x7637('0x15')](_0x2ba04e[_0x7637('0x20')]['cc'])){_0x2ba04e['message']['cc']+=',';}_0x2ba04e[_0x7637('0x20')]['cc']+=_0x57a1fa;}}if(!_[_0x7637('0x17')](_0x2ba04e[_0x7637('0x20')]['originTo'],_0x1dd393[_0x7637('0x5')])&&!_[_0x7637('0x17')](_0x2ba04e[_0x7637('0x20')]['originCc'],_0x1dd393[_0x7637('0x5')])){_0x2ba04e[_0x7637('0x20')][_0x7637('0x23')]=_0x1dd393['email'];}if(_0x5567e0[_0x7637('0x18')]&&_0x5567e0[_0x7637('0x18')][_0x7637('0xe')]){_0x2ba04e[_0x7637('0x20')][_0x7637('0x24')]=_0x5567e0[_0x7637('0x18')][_0x7637('0xe')];for(var _0x256561=0x0,_0x283e93,_0x591b0c,_0x2c0612;_0x256561<_0x5567e0[_0x7637('0x18')]['length'];_0x256561+=0x1){if(_0x5567e0[_0x7637('0x18')][_0x256561][_0x7637('0x25')]===_0x7637('0x26')){_0x2c0612=_0x5567e0[_0x7637('0x18')][_0x256561][_0x7637('0x27')]||_0x7637('0x28')+_0x256561;_0x283e93=util['format']('%s-%s',Date[_0x7637('0x29')](),_0x2c0612);_0x591b0c=path['join'](config[_0x7637('0x2a')],_0x7637('0x2b'),_0x283e93);fs[_0x7637('0x2c')](_0x591b0c,_0x5567e0[_0x7637('0x18')][_0x256561][_0x7637('0x2d')]);_0x2ba04e[_0x7637('0x20')]['attachments'][_0x7637('0x19')]({'name':_0x2c0612,'basename':_0x283e93,'type':_0x5567e0[_0x7637('0x18')][_0x256561][_0x7637('0x2e')],'filepath':_0x591b0c});}}}if(_0x5567e0[_0x7637('0x2f')]&&_0x5567e0[_0x7637('0x2f')][_0x7637('0xe')]>0x0){var _0x14679c=['Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All',_0x7637('0x30')];for(var _0x295672=0x0;_0x295672<_0x5567e0[_0x7637('0x2f')]['length'];_0x295672++){var _0x58bea1=_[_0x7637('0xd')](_0x14679c,_0x5567e0[_0x7637('0x2f')][_0x295672][_0x7637('0x31')]);if(_0x58bea1>=0x0){_0x2ba04e[_0x7637('0x32')]=!![];}}}return _0x2ba04e;}exports['parser']=function(_0x1b02cf,_0x592515,_0x107b9c){var _0x213e81={'from':getAddress(_0x592515[_0x7637('0x33')]),'firstName':getFirstName(_0x592515[_0x7637('0x33')]),'lastName':getLastName(_0x592515[_0x7637('0x33')]),'mapKey':_0x7637('0x5'),'message':{'from':getMails(_0x1b02cf[_0x7637('0x5')],_0x592515['from']),'to':_0x1b02cf['email'],'cc':'','subject':_0x592515['subject']||'','messageId':_0x592515['messageId'],'inReplyTo':_0x592515[_0x7637('0x34')],'sentAt':moment(_0x592515[_0x7637('0x35')])['format'](_0x7637('0x36')),'attach':![],'attachments':[]}};if(!_0x592515['html']&&!_0x592515[_0x7637('0x37')]){var _0x5e674b=_['filter'](_0x592515[_0x7637('0x18')],{'contentType':'application/ms-tnef'});if(_0x5e674b[_0x7637('0xe')]){logger['info'](util[_0x7637('0x38')](_0x7637('0x39'),_0x592515['messageId']));tnef[_0x7637('0x3a')](_[_0x7637('0x3b')](_0x5e674b)[_0x7637('0x2d')],function(_0x36b4df,_0x960c87){if(_0x960c87){_0x592515[_0x7637('0x16')]=_0x960c87[_0x7637('0x3c')]||_0x7637('0x3d');if(_0x960c87[_0x7637('0x3e')]){for(var _0x19ec80=0x0;_0x19ec80<_0x960c87['Attachments'][_0x7637('0xe')];_0x19ec80++){var _0x1f58fd=_0x960c87[_0x7637('0x3e')][_0x19ec80];_0x213e81[_0x7637('0x20')][_0x7637('0x18')]['push']({'filename':_0x1f58fd['Title'],'content':Buffer[_0x7637('0x33')](_0x1f58fd['Data'])});}}}_0x107b9c(parseEmail(_0x1b02cf,_0x592515,_0x213e81));});}else{_0x592515['html']=_0x7637('0x3d');_0x107b9c(parseEmail(_0x1b02cf,_0x592515,_0x213e81));}}else{_0x107b9c(parseEmail(_0x1b02cf,_0x592515,_0x213e81));}};exports[_0x7637('0x3f')]=function(_0x2e0a66,_0x328a7a){var _0x5da691=['user='+(_0x328a7a||''),_0x7637('0x40')+_0x2e0a66,'',''];return Buffer[_0x7637('0x33')](_0x5da691[_0x7637('0x10')]('\ 1'),'utf-8')[_0x7637('0x41')](_0x7637('0x42'));};
\ No newline at end of file
+var _0x121a=['replace','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','originCc','includes','bcc','attachments','attach','type','attachment','filename','attachment-','%s-%s','join','root','server/files/attachments/','writeFileSync','headerLines','Auto-Submitted:\x20auto-replied','Precedence:\x20auto_reply','isAutoreply','parser','from','subject','messageId','inReplyTo','date','format','YYYY-MM-DD\x20HH:mm:ss','filter','info','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','content','BodyHTML','Attachments','Title','<p>Empty\x20message</p>','generateXOAuth2Token','user=','utf-8','toString','base64','lodash','moment','randomstring','path','util','node-tnef','../../../config/logger','email','../../../config/environment','head','address','generate','@xcally.com','name','substring','indexOf','split','slice','Anonymous','value','length','isEmpty','html','test','<img','forEach','push'];(function(_0x2c041f,_0x1c246a){var _0x1ed764=function(_0x462c63){while(--_0x462c63){_0x2c041f['push'](_0x2c041f['shift']());}};_0x1ed764(++_0x1c246a);}(_0x121a,0x11d));var _0xa121=function(_0x5936bd,_0x1008df){_0x5936bd=_0x5936bd-0x0;var _0x1bd18d=_0x121a[_0x5936bd];return _0x1bd18d;};'use strict';var _=require(_0xa121('0x0'));var moment=require(_0xa121('0x1'));var random=require(_0xa121('0x2'));var fs=require('fs');var path=require(_0xa121('0x3'));var util=require(_0xa121('0x4'));var tnef=require(_0xa121('0x5'));var logger=require(_0xa121('0x6'))(_0xa121('0x7'));var config=require(_0xa121('0x8'));function getAddress(_0x4c2f36){var _0xba06fa=_[_0xa121('0x9')](_0x4c2f36['value']);return _0xba06fa&&_0xba06fa['address']?_0xba06fa[_0xa121('0xa')]:'anonymous'+random[_0xa121('0xb')](0x6)+_0xa121('0xc');}function getFirstName(_0x5e3ae2){var _0x11bd50=_['head'](_0x5e3ae2['value']);if(_0x11bd50&&_0x11bd50['name']){if(_0x11bd50[_0xa121('0xd')]==_0x11bd50[_0xa121('0xa')]){return _0x11bd50[_0xa121('0xd')][_0xa121('0xe')](0x0,_0x11bd50[_0xa121('0xd')][_0xa121('0xf')]('@'));}var _0x4efd97=_0x11bd50[_0xa121('0xd')][_0xa121('0x10')](/\s+/);return _0x4efd97['length']>0x1?_0x4efd97[_0xa121('0x11')](0x0,-0x1)['join']('\x20'):_0x11bd50[_0xa121('0xd')];}return _0xa121('0x12');}function getLastName(_0x1f9164){var _0x25087c=_['head'](_0x1f9164[_0xa121('0x13')]);if(_0x25087c&&_0x25087c[_0xa121('0xd')]){var _0x3fb793=_0x25087c['name'][_0xa121('0x10')](/\s+/);return _0x3fb793[_0xa121('0x14')]>0x1?_0x3fb793['pop']():'';}return'';}function getMails(_0x1b44b1,_0x3bc619){var _0x1e810e='';for(var _0x59997f=0x0;_0x59997f<_0x3bc619[_0xa121('0x13')]['length'];_0x59997f+=0x1){if(_0x3bc619[_0xa121('0x13')][_0x59997f]['address']!==_0x1b44b1){if(!_[_0xa121('0x15')](_0x1e810e)){_0x1e810e+=',';}_0x1e810e+=_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xd')]||_0x3bc619[_0xa121('0x13')][_0x59997f]['address']||'';_0x1e810e+='\x20<';_0x1e810e+=_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xa')]?_0x3bc619[_0xa121('0x13')][_0x59997f][_0xa121('0xa')]:'anonymous'+random[_0xa121('0xb')](0x6)+_0xa121('0xc');_0x1e810e+='>';}}return _0x1e810e;}function parseEmail(_0x13c65d,_0x258054,_0x18c4af){if(_0x258054[_0xa121('0x16')]){var _0x42d375=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x42d375[_0xa121('0x17')](_0x258054[_0xa121('0x16')])){_0x258054[_0xa121('0x16')]=_0x258054[_0xa121('0x16')]['replace'](_0x42d375,'');}if(_0x258054[_0xa121('0x16')]['includes'](_0xa121('0x18'))){var _0x2f2be8=[];_0x258054['attachments'][_0xa121('0x19')](_0x27d4b5=>{_0x2f2be8[_0xa121('0x1a')](_0x27d4b5['filename']);});var _0x2d7b36=/<img.*? _SRC(.*?)[^>]+>/g;var _0x162e48=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x268474=_0x258054[_0xa121('0x16')][_0xa121('0x1b')](_0x162e48,_0xa121('0x1c'));var _0x5aafa9=_0x268474[_0xa121('0x1b')](_0x2d7b36,_0xa121('0x1d'));for(let _0x4f1c51=0x0;_0x4f1c51<_0x2f2be8[_0xa121('0x14')];_0x4f1c51++){var _0x20dff3=_0x5aafa9[_0xa121('0x1b')](_0xa121('0x1d'),_0xa121('0x1e')+_0x2f2be8[_0x4f1c51]+_0xa121('0x1f'));_0x5aafa9=_0x20dff3;}_0x258054[_0xa121('0x16')]=_0x5aafa9;}_0x18c4af[_0xa121('0x20')]=_0x258054[_0xa121('0x16')];}else{_0x18c4af[_0xa121('0x20')]=_0x258054[_0xa121('0x21')];}if(_0x18c4af[_0xa121('0x20')]){_0x18c4af[_0xa121('0x20')]=_0x18c4af[_0xa121('0x20')][_0xa121('0x1b')](/<a\s+/gi,_0xa121('0x22'));}if(_0x258054['to']){_0x18c4af[_0xa121('0x23')][_0xa121('0x24')]=getMails(null,_0x258054['to']);var _0x5bc241=getMails(_0x13c65d[_0xa121('0x7')],_0x258054['to']);if(!_[_0xa121('0x15')](_0x5bc241)){_0x18c4af[_0xa121('0x23')]['cc']+=_0x5bc241;}}if(_0x258054['cc']){_0x18c4af[_0xa121('0x23')][_0xa121('0x25')]=getMails(null,_0x258054['cc']);var _0x53baae=getMails(_0x13c65d[_0xa121('0x7')],_0x258054['cc']);if(!_['isEmpty'](_0x53baae)){if(!_[_0xa121('0x15')](_0x18c4af[_0xa121('0x23')]['cc'])){_0x18c4af['message']['cc']+=',';}_0x18c4af[_0xa121('0x23')]['cc']+=_0x53baae;}}if(!_[_0xa121('0x26')](_0x18c4af[_0xa121('0x23')][_0xa121('0x24')],_0x13c65d[_0xa121('0x7')])&&!_[_0xa121('0x26')](_0x18c4af[_0xa121('0x23')][_0xa121('0x25')],_0x13c65d[_0xa121('0x7')])){_0x18c4af['message'][_0xa121('0x27')]=_0x13c65d[_0xa121('0x7')];}if(_0x258054[_0xa121('0x28')]&&_0x258054[_0xa121('0x28')][_0xa121('0x14')]){_0x18c4af['message'][_0xa121('0x29')]=_0x258054['attachments'][_0xa121('0x14')];for(var _0x2dc8be=0x0,_0x5b1d72,_0x4c68e4,_0x4a9edf;_0x2dc8be<_0x258054[_0xa121('0x28')][_0xa121('0x14')];_0x2dc8be+=0x1){if(_0x258054['attachments'][_0x2dc8be][_0xa121('0x2a')]===_0xa121('0x2b')){_0x4a9edf=_0x258054[_0xa121('0x28')][_0x2dc8be][_0xa121('0x2c')]||_0xa121('0x2d')+_0x2dc8be;_0x5b1d72=util['format'](_0xa121('0x2e'),Date['now'](),_0x4a9edf);_0x4c68e4=path[_0xa121('0x2f')](config[_0xa121('0x30')],_0xa121('0x31'),_0x5b1d72);fs[_0xa121('0x32')](_0x4c68e4,_0x258054[_0xa121('0x28')][_0x2dc8be]['content']);_0x18c4af['message'][_0xa121('0x28')][_0xa121('0x1a')]({'name':_0x4a9edf,'basename':_0x5b1d72,'type':_0x258054[_0xa121('0x28')][_0x2dc8be]['contentType'],'filepath':_0x4c68e4});}}}if(_0x258054[_0xa121('0x33')]&&_0x258054['headerLines'][_0xa121('0x14')]>0x0){var _0x5777c8=[_0xa121('0x34'),'X-Auto-Response-Suppress:\x20All',_0xa121('0x35')];for(var _0x360b70=0x0;_0x360b70<_0x258054['headerLines'][_0xa121('0x14')];_0x360b70++){var _0x3b7428=_[_0xa121('0xf')](_0x5777c8,_0x258054[_0xa121('0x33')][_0x360b70]['line']);if(_0x3b7428>=0x0){_0x18c4af[_0xa121('0x36')]=!![];}}}return _0x18c4af;}exports[_0xa121('0x37')]=function(_0xc2111d,_0x95d9e9,_0x48194b){var _0x195976={'from':getAddress(_0x95d9e9[_0xa121('0x38')]),'firstName':getFirstName(_0x95d9e9[_0xa121('0x38')]),'lastName':getLastName(_0x95d9e9[_0xa121('0x38')]),'mapKey':_0xa121('0x7'),'message':{'from':getMails(_0xc2111d['email'],_0x95d9e9[_0xa121('0x38')]),'to':_0xc2111d[_0xa121('0x7')],'cc':'','subject':_0x95d9e9[_0xa121('0x39')]||'','messageId':_0x95d9e9[_0xa121('0x3a')],'inReplyTo':_0x95d9e9[_0xa121('0x3b')],'sentAt':moment(_0x95d9e9[_0xa121('0x3c')])[_0xa121('0x3d')](_0xa121('0x3e')),'attach':![],'attachments':[]}};if(!_0x95d9e9['html']&&!_0x95d9e9[_0xa121('0x21')]){var _0x4de648=_[_0xa121('0x3f')](_0x95d9e9['attachments'],{'contentType':'application/ms-tnef'});if(_0x4de648[_0xa121('0x14')]){logger[_0xa121('0x40')](util[_0xa121('0x3d')](_0xa121('0x41'),_0x95d9e9[_0xa121('0x3a')]));tnef[_0xa121('0x42')](_[_0xa121('0x43')](_0x4de648)[_0xa121('0x44')],function(_0x250a81,_0x37ec8d){if(_0x37ec8d){_0x95d9e9[_0xa121('0x16')]=_0x37ec8d[_0xa121('0x45')]||'<p>Empty\x20message</p>';if(_0x37ec8d[_0xa121('0x46')]){for(var _0x5f7c2b=0x0;_0x5f7c2b<_0x37ec8d[_0xa121('0x46')]['length'];_0x5f7c2b++){var _0x2fba23=_0x37ec8d[_0xa121('0x46')][_0x5f7c2b];_0x195976['message']['attachments']['push']({'filename':_0x2fba23[_0xa121('0x47')],'content':Buffer[_0xa121('0x38')](_0x2fba23['Data'])});}}}_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));});}else{_0x95d9e9[_0xa121('0x16')]=_0xa121('0x48');_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));}}else{_0x48194b(parseEmail(_0xc2111d,_0x95d9e9,_0x195976));}};exports[_0xa121('0x49')]=function(_0x1c75f5,_0x1f56a0){var _0x14f2f1=[_0xa121('0x4a')+(_0x1f56a0||''),'auth=Bearer\x20'+_0x1c75f5,'',''];return Buffer[_0xa121('0x38')](_0x14f2f1['join']('\ 1'),_0xa121('0x4b'))[_0xa121('0x4c')](_0xa121('0x4d'));};
\ No newline at end of file
index ab96cf6..04d78c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97e9=['Smtp','exports','lodash','name','Service','SERV','Imap'];(function(_0x51a344,_0x30773d){var _0x2bf23e=function(_0x4177cb){while(--_0x4177cb){_0x51a344['push'](_0x51a344['shift']());}};_0x2bf23e(++_0x30773d);}(_0x97e9,0xe2));var _0x997e=function(_0x4b6b42,_0x1bf65d){_0x4b6b42=_0x4b6b42-0x0;var _0x3b5f1d=_0x97e9[_0x4b6b42];return _0x3b5f1d;};'use strict';var _=require(_0x997e('0x0'));function MailAccount(_0x56dade){this['id']=_0x56dade['id']||0x0;this[_0x997e('0x1')]=_0x56dade[_0x997e('0x1')]||_0x997e('0x2');this['key']=_0x56dade['key']||_0x997e('0x3');this['active']=_0x56dade['active']||![];this['Imap']=_0x56dade[_0x997e('0x4')]||[];this[_0x997e('0x5')]=_0x56dade[_0x997e('0x5')]||[];}module[_0x997e('0x6')]=MailAccount;
\ No newline at end of file
+var _0xde2d=['active','Smtp','exports','lodash','name','Service','SERV'];(function(_0x2dbb68,_0x3b3078){var _0x4ef1c4=function(_0xe5fcd5){while(--_0xe5fcd5){_0x2dbb68['push'](_0x2dbb68['shift']());}};_0x4ef1c4(++_0x3b3078);}(_0xde2d,0x168));var _0xdde2=function(_0x4e7f3f,_0x5c57da){_0x4e7f3f=_0x4e7f3f-0x0;var _0x441fd2=_0xde2d[_0x4e7f3f];return _0x441fd2;};'use strict';var _=require(_0xdde2('0x0'));function MailAccount(_0x4c17b2){this['id']=_0x4c17b2['id']||0x0;this['name']=_0x4c17b2[_0xdde2('0x1')]||_0xdde2('0x2');this['key']=_0x4c17b2['key']||_0xdde2('0x3');this[_0xdde2('0x4')]=_0x4c17b2[_0xdde2('0x4')]||![];this['Imap']=_0x4c17b2['Imap']||[];this[_0xdde2('0x5')]=_0x4c17b2['Smtp']||[];}module[_0xdde2('0x6')]=MailAccount;
\ No newline at end of file
index 9d81638..0ae596c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6220=['length','merge','exports','lodash','../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','initMailAccounts'];(function(_0x4ba935,_0x46f0bb){var _0x3dd154=function(_0x325e73){while(--_0x325e73){_0x4ba935['push'](_0x4ba935['shift']());}};_0x3dd154(++_0x46f0bb);}(_0x6220,0x189));var _0x0622=function(_0x4b055c,_0x4b870b){_0x4b055c=_0x4b055c-0x0;var _0x4b62bb=_0x6220[_0x4b055c];return _0x4b62bb;};'use strict';var _=require(_0x0622('0x0'));var MailAccount=require(_0x0622('0x1'));var Realtime=function(){this[_0x0622('0x2')]={};};function freeIsNotKey(_0x44a1f2,_0x5e90e6,_0x22186a){var _0x5c3a26=_[_0x0622('0x3')](_0x44a1f2,function(_0x208b48,_0x557e7e){return _0x208b48[_0x22186a];});for(var _0x29efde in _0x5e90e6){if(_0x5e90e6[_0x0622('0x4')](_0x29efde)){if(!_0x5c3a26[_0x29efde]){delete _0x5e90e6[_0x29efde];}}}}Realtime[_0x0622('0x5')]['mergeFromDatabase']=function(_0x313bcf,_0x8ac847){for(var _0x31ee03 in _0x8ac847){if(_0x313bcf[_0x0622('0x4')](_0x31ee03)){_0x313bcf[_0x31ee03]=_0x8ac847[_0x31ee03];}}};Realtime[_0x0622('0x5')][_0x0622('0x6')]=function(){var _0x33c75e=this;return function(_0x1924ef){if(_0x1924ef){freeIsNotKey(_0x1924ef,_0x33c75e[_0x0622('0x2')],'id');for(var _0x133f36=0x0,_0x1ab6f3={},_0x36815e={};_0x133f36<_0x1924ef[_0x0622('0x7')];_0x133f36+=0x1){_0x1ab6f3=_0x1924ef[_0x133f36];if(_['isUndefined'](_0x33c75e['mailAccounts'][_0x1ab6f3['id']])){_0x33c75e[_0x0622('0x2')][_0x1ab6f3['id']]=new MailAccount(_0x1ab6f3);}else{_[_0x0622('0x8')](_0x33c75e[_0x0622('0x2')][_0x1ab6f3['id']],_0x1ab6f3);}}}return _0x33c75e[_0x0622('0x2')];};};module[_0x0622('0x9')]=Realtime;
\ No newline at end of file
+var _0x3f6a=['../model/mailAccount','mailAccounts','mapKeys','hasOwnProperty','prototype','mergeFromDatabase','initMailAccounts','length','isUndefined','merge','exports','lodash'];(function(_0x145e0d,_0x86e43d){var _0x3bcaea=function(_0x413547){while(--_0x413547){_0x145e0d['push'](_0x145e0d['shift']());}};_0x3bcaea(++_0x86e43d);}(_0x3f6a,0x113));var _0xa3f6=function(_0x4df5d3,_0x522c48){_0x4df5d3=_0x4df5d3-0x0;var _0x34a8d=_0x3f6a[_0x4df5d3];return _0x34a8d;};'use strict';var _=require(_0xa3f6('0x0'));var MailAccount=require(_0xa3f6('0x1'));var Realtime=function(){this[_0xa3f6('0x2')]={};};function freeIsNotKey(_0x410ef4,_0x373592,_0x53ce1e){var _0x441f2c=_[_0xa3f6('0x3')](_0x410ef4,function(_0x3c5863,_0x43b3a3){return _0x3c5863[_0x53ce1e];});for(var _0x199e74 in _0x373592){if(_0x373592[_0xa3f6('0x4')](_0x199e74)){if(!_0x441f2c[_0x199e74]){delete _0x373592[_0x199e74];}}}}Realtime[_0xa3f6('0x5')][_0xa3f6('0x6')]=function(_0x1998de,_0x29ad87){for(var _0x4ec677 in _0x29ad87){if(_0x1998de[_0xa3f6('0x4')](_0x4ec677)){_0x1998de[_0x4ec677]=_0x29ad87[_0x4ec677];}}};Realtime[_0xa3f6('0x5')][_0xa3f6('0x7')]=function(){var _0x436db7=this;return function(_0xddbe3e){if(_0xddbe3e){freeIsNotKey(_0xddbe3e,_0x436db7[_0xa3f6('0x2')],'id');for(var _0x309ceb=0x0,_0x481e87={},_0x19ba58={};_0x309ceb<_0xddbe3e[_0xa3f6('0x8')];_0x309ceb+=0x1){_0x481e87=_0xddbe3e[_0x309ceb];if(_[_0xa3f6('0x9')](_0x436db7[_0xa3f6('0x2')][_0x481e87['id']])){_0x436db7[_0xa3f6('0x2')][_0x481e87['id']]=new MailAccount(_0x481e87);}else{_[_0xa3f6('0xa')](_0x436db7['mailAccounts'][_0x481e87['id']],_0x481e87);}}}return _0x436db7['mailAccounts'];};};module[_0xa3f6('0xb')]=Realtime;
\ No newline at end of file
index b6743db..7967231 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb2b4=['NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','service','email','active','key','ListId','TemplateId','MailServerIn','Imap','CloudProvider','type','data5','Smtp','getMailAccount','notify'];(function(_0x46eb0e,_0x296d16){var _0x523297=function(_0x1e0dbb){while(--_0x1e0dbb){_0x46eb0e['push'](_0x46eb0e['shift']());}};_0x523297(++_0x296d16);}(_0xb2b4,0x141));var _0x4b2b=function(_0x10acb2,_0x3ca870){_0x10acb2=_0x10acb2-0x0;var _0x186379=_0xb2b4[_0x10acb2];return _0x186379;};'use strict';var client=require(_0x4b2b('0x0'));exports[_0x4b2b('0x1')]=function(){return function(){return client[_0x4b2b('0x2')](_0x4b2b('0x3'),{'options':{'attributes':['id',_0x4b2b('0x4'),'provider',_0x4b2b('0x5'),_0x4b2b('0x6'),_0x4b2b('0x7'),_0x4b2b('0x8'),_0x4b2b('0x9'),_0x4b2b('0xa')],'raw':![],'include':[{'model':_0x4b2b('0xb'),'as':_0x4b2b('0xc'),'include':[{'model':_0x4b2b('0xd'),'attributes':['id',_0x4b2b('0x4'),'service',_0x4b2b('0xe'),_0x4b2b('0xf')],'as':_0x4b2b('0xd')}]},{'model':'MailServerOut','as':_0x4b2b('0x10'),'include':[{'model':_0x4b2b('0xd'),'attributes':['id',_0x4b2b('0x4'),_0x4b2b('0x5'),_0x4b2b('0xe'),_0x4b2b('0xf')],'as':'CloudProvider'}]}]},'log':_0x4b2b('0x11')});};};exports[_0x4b2b('0x12')]=function(_0x1cea35,_0xa517f2){return client['Request'](_0x4b2b('0x13'),{'account':{'id':_0x1cea35},'body':_0xa517f2,'log':_0x4b2b('0x13')});};
\ No newline at end of file
+var _0xa5c1=['provider','email','active','key','ListId','TemplateId','MailServerIn','CloudProvider','service','type','data5','MailServerOut','name','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x3c0713,_0x118272){var _0xda81d3=function(_0x30d543){while(--_0x30d543){_0x3c0713['push'](_0x3c0713['shift']());}};_0xda81d3(++_0x118272);}(_0xa5c1,0x19f));var _0x1a5c=function(_0x4f0024,_0xbfa03e){_0x4f0024=_0x4f0024-0x0;var _0x7d3c33=_0xa5c1[_0x4f0024];return _0x7d3c33;};'use strict';var client=require(_0x1a5c('0x0'));exports[_0x1a5c('0x1')]=function(){return function(){return client[_0x1a5c('0x2')]('GetMailAccount',{'options':{'attributes':['id','name',_0x1a5c('0x3'),'service',_0x1a5c('0x4'),_0x1a5c('0x5'),_0x1a5c('0x6'),_0x1a5c('0x7'),_0x1a5c('0x8')],'raw':![],'include':[{'model':_0x1a5c('0x9'),'as':'Imap','include':[{'model':_0x1a5c('0xa'),'attributes':['id','name',_0x1a5c('0xb'),_0x1a5c('0xc'),_0x1a5c('0xd')],'as':'CloudProvider'}]},{'model':_0x1a5c('0xe'),'as':'Smtp','include':[{'model':_0x1a5c('0xa'),'attributes':['id',_0x1a5c('0xf'),'service',_0x1a5c('0xc'),_0x1a5c('0xd')],'as':'CloudProvider'}]}]},'log':_0x1a5c('0x10')});};};exports[_0x1a5c('0x11')]=function(_0x591c3d,_0x3f14af){return client[_0x1a5c('0x2')](_0x1a5c('0x12'),{'account':{'id':_0x591c3d},'body':_0x3f14af,'log':_0x1a5c('0x12')});};
\ No newline at end of file
index c7b2826..19c8bb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3d=['GetSettings','../client','ShowSetting'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x2a3d,0x199));var _0xd2a3=function(_0xaf5b36,_0x2c656e){_0xaf5b36=_0xaf5b36-0x0;var _0x35ce92=_0x2a3d[_0xaf5b36];return _0x35ce92;};'use strict';var client=require(_0xd2a3('0x0'));exports['getSettings']=function(){return client['Request'](_0xd2a3('0x1'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['loginMailFrequency']},'log':_0xd2a3('0x2')});};
\ No newline at end of file
+var _0x7582=['getSettings','ShowSetting','loginMailFrequency','../client'];(function(_0x2357fa,_0x31300a){var _0x3c956b=function(_0x36111c){while(--_0x36111c){_0x2357fa['push'](_0x2357fa['shift']());}};_0x3c956b(++_0x31300a);}(_0x7582,0xc7));var _0x2758=function(_0x47b58b,_0x41a189){_0x47b58b=_0x47b58b-0x0;var _0x46bebe=_0x7582[_0x47b58b];return _0x46bebe;};'use strict';var client=require(_0x2758('0x0'));exports[_0x2758('0x1')]=function(){return client['Request'](_0x2758('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x2758('0x3')]},'log':'GetSettings'});};
\ No newline at end of file
index 3b12e6a..4fe7b7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2d8fc2,_0x1c461d){_0x2d8fc2=_0x2d8fc2-0x0;var _0x3a9e53=_0xa9e0[_0x2d8fc2];return _0x3a9e53;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
+var _0xa9e0=['catch','values','mailAccounts','length','Imap','password','Smtp','pass','server','http','stringify','127.0.0.1','log','Email\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','jayson/promise','bluebird','lodash','listen','sendMail','then','error','Verified'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4bfac3,_0x58324d){_0x4bfac3=_0x4bfac3-0x0;var _0x15f0f2=_0xa9e0[_0x4bfac3];return _0x15f0f2;};'use strict';var jayson=require(_0x0a9e('0x0'));var BPromise=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var logger=require('../../../config/logger')('email');exports[_0x0a9e('0x3')]=function(_0x4ce2f1,_0x333808){return new BPromise(function(_0x432180,_0x2ab90b){var _0x991246={'SendMail':function(_0x981158){var _0x57b080=this;return new Promise(function(_0x219af0,_0x441e3a){_0x333808[_0x0a9e('0x4')](_0x981158['account'],_0x981158['message'])[_0x0a9e('0x5')](function(_0x56465b){_0x219af0({'code':0xc8,'message':_0x56465b});})['catch'](function(_0x39753a){_0x441e3a(_0x57b080[_0x0a9e('0x6')](0x1f4,_0x39753a));});});},'VerifySmtp':function(_0x307b3e){var _0x3ab53f=this;return new Promise(function(_0xfeb75b,_0xbd1168){_0x333808['verifySmtp'](_0x307b3e['account'])['then'](function(_0x4cfe67){_0xfeb75b({'code':0xc8,'message':_0x0a9e('0x7')});})[_0x0a9e('0x8')](function(_0xd5b662){_0xbd1168(_0x3ab53f[_0x0a9e('0x6')](0x1f4,_0xd5b662));});});},'MailAccounts':function(_0x32d742){return new Promise(function(_0x69aeb7,_0x5db4b0){var _0x4283ce=_[_0x0a9e('0x9')](_0x4ce2f1[_0x0a9e('0xa')]);for(var _0x281129=0x0;_0x281129<_0x4283ce[_0x0a9e('0xb')];_0x281129+=0x1){if(_0x4283ce[_0x281129][_0x0a9e('0xc')]&&_0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')]){delete _0x4283ce[_0x281129]['Imap'][_0x0a9e('0xd')];}if(_0x4283ce[_0x281129]['Smtp']&&_0x4283ce[_0x281129][_0x0a9e('0xe')][_0x0a9e('0xf')]){delete _0x4283ce[_0x281129]['Smtp'][_0x0a9e('0xf')];}}_0x69aeb7({'count':_0x4283ce['length'],'rows':_0x4283ce});});}};var _0x459eb1=jayson[_0x0a9e('0x10')](_0x991246)[_0x0a9e('0x11')]();_0x459eb1['on'](_0x0a9e('0x6'),function(_0x31b1ca){logger[_0x0a9e('0x6')](JSON[_0x0a9e('0x12')](_0x31b1ca));return _0x2ab90b(_0x31b1ca);});_0x459eb1[_0x0a9e('0x3')](0x232b,_0x0a9e('0x13'),function(){console[_0x0a9e('0x14')](_0x0a9e('0x15'),0x232b);return _0x432180(_0x0a9e('0x16')+0x232b);});});};
\ No newline at end of file
index 058706c..e9ca973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe682=['socket.io','polling','redis','defaults','localhost','adapter','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','once','listening','log','Express\x20server\x20listening\x20on\x20port\x20%d!','exports','lodash','express','../../config/environment','createServer','timeout','port'];(function(_0x4fd9b9,_0x4baad2){var _0x41907a=function(_0x9d862a){while(--_0x9d862a){_0x4fd9b9['push'](_0x4fd9b9['shift']());}};_0x41907a(++_0x4baad2);}(_0xe682,0x68));var _0x2e68=function(_0x1477d1,_0x3f558e){_0x1477d1=_0x1477d1-0x0;var _0x5f291a=_0xe682[_0x1477d1];return _0x5f291a;};'use strict';var _=require(_0x2e68('0x0'));var http=require('http');var express=require(_0x2e68('0x1'));var sticky=require('sticky-session');var Redis=require('ioredis');var config=require(_0x2e68('0x2'));var app=express();var server=http[_0x2e68('0x3')](app);server[_0x2e68('0x4')]=0xdbba0;if(sticky['listen'](server,config[_0x2e68('0x5')])){var socketio=require(_0x2e68('0x6'))(server,{'transports':['websocket',_0x2e68('0x7')]});config[_0x2e68('0x8')]=_[_0x2e68('0x9')](config[_0x2e68('0x8')],{'host':_0x2e68('0xa'),'port':0x18eb});socketio[_0x2e68('0xb')](require('socket.io-redis')({'pubClient':new Redis(config['redis']),'subClient':new Redis(config[_0x2e68('0x8')])}));require(_0x2e68('0xc'))[_0x2e68('0xd')]();require(_0x2e68('0xe'))['default'](socketio);require(_0x2e68('0xf'))[_0x2e68('0xd')](app);require(_0x2e68('0x10'))[_0x2e68('0xd')](app);}else{server[_0x2e68('0x11')](_0x2e68('0x12'),function(){console[_0x2e68('0x13')](_0x2e68('0x14'),config['port']);});}exports=module[_0x2e68('0x15')]=app;
\ No newline at end of file
+var _0x3c43=['express','sticky-session','../../config/environment','createServer','timeout','listen','websocket','defaults','localhost','adapter','socket.io-redis','redis','../../config/triggers','default','../../config/socketio','../../config/express','../../routes','lodash','http'];(function(_0x36e52c,_0x2b2eb4){var _0x3533a6=function(_0x210ccb){while(--_0x210ccb){_0x36e52c['push'](_0x36e52c['shift']());}};_0x3533a6(++_0x2b2eb4);}(_0x3c43,0x167));var _0x33c4=function(_0x318bf1,_0x301a26){_0x318bf1=_0x318bf1-0x0;var _0x4eacf0=_0x3c43[_0x318bf1];return _0x4eacf0;};'use strict';var _=require(_0x33c4('0x0'));var http=require(_0x33c4('0x1'));var express=require(_0x33c4('0x2'));var sticky=require(_0x33c4('0x3'));var Redis=require('ioredis');var config=require(_0x33c4('0x4'));var app=express();var server=http[_0x33c4('0x5')](app);server[_0x33c4('0x6')]=0xdbba0;if(sticky[_0x33c4('0x7')](server,config['port'])){var socketio=require('socket.io')(server,{'transports':[_0x33c4('0x8'),'polling']});config['redis']=_[_0x33c4('0x9')](config['redis'],{'host':_0x33c4('0xa'),'port':0x18eb});socketio[_0x33c4('0xb')](require(_0x33c4('0xc'))({'pubClient':new Redis(config[_0x33c4('0xd')]),'subClient':new Redis(config[_0x33c4('0xd')])}));require(_0x33c4('0xe'))[_0x33c4('0xf')]();require(_0x33c4('0x10'))['default'](socketio);require(_0x33c4('0x11'))[_0x33c4('0xf')](app);require(_0x33c4('0x12'))[_0x33c4('0xf')](app);}else{server['once']('listening',function(){console['log']('Express\x20server\x20listening\x20on\x20port\x20%d!',config['port']);});}exports=module['exports']=app;
\ No newline at end of file
index 9ea7fdb..2054898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5879=['jayson/promise','bluebird','../../config/logger','routing','http','Request','then','debug','rpc','error','message','exports'];(function(_0x12feee,_0x30f943){var _0x31cbaf=function(_0x5cc21b){while(--_0x5cc21b){_0x12feee['push'](_0x12feee['shift']());}};_0x31cbaf(++_0x30f943);}(_0x5879,0x174));var _0x9587=function(_0x503a0f,_0x302fe2){_0x503a0f=_0x503a0f-0x0;var _0x2e9754=_0x5879[_0x503a0f];return _0x2e9754;};'use strict';var jayson=require(_0x9587('0x0'));var BPromise=require(_0x9587('0x1'));var logger=require(_0x9587('0x2'))(_0x9587('0x3'));var client=jayson['client'][_0x9587('0x4')]({'port':0x2329});client[_0x9587('0x5')]=function(_0xe54be8,_0x4c0fa9){return new BPromise(function(_0x53df77,_0x1bb3b4){return client['request'](_0xe54be8,_0x4c0fa9)[_0x9587('0x6')](function(_0x29abfb){logger[_0x9587('0x7')](_0x9587('0x8'),_0x9587('0x3'),_0xe54be8,_0x4c0fa9,_0x29abfb);if(_0x29abfb[_0x9587('0x9')]){logger[_0x9587('0x9')]('rpc',_0x9587('0x3'),_0xe54be8,_0x29abfb[_0x9587('0x9')][_0x9587('0xa')],_0x4c0fa9);return _0x1bb3b4(_0x29abfb['error']['message']);}else{return _0x53df77(_0x29abfb['result']);}})['catch'](function(_0x41e401){logger[_0x9587('0x9')](_0x9587('0x8'),_0x9587('0x3'),_0xe54be8,_0x41e401,_0x4c0fa9);return _0x1bb3b4(_0x41e401);});});};module[_0x9587('0xb')]=client;
\ No newline at end of file
+var _0x8126=['exports','jayson/promise','../../config/logger','routing','http','request','then','rpc','error','message','result','catch'];(function(_0x2a5f35,_0x131c8f){var _0x473c33=function(_0x2a493c){while(--_0x2a493c){_0x2a5f35['push'](_0x2a5f35['shift']());}};_0x473c33(++_0x131c8f);}(_0x8126,0x151));var _0x6812=function(_0x5302fb,_0x1a2db3){_0x5302fb=_0x5302fb-0x0;var _0x43e6a4=_0x8126[_0x5302fb];return _0x43e6a4;};'use strict';var jayson=require(_0x6812('0x0'));var BPromise=require('bluebird');var logger=require(_0x6812('0x1'))(_0x6812('0x2'));var client=jayson['client'][_0x6812('0x3')]({'port':0x2329});client['Request']=function(_0x45b491,_0x5838c3){return new BPromise(function(_0x2be0a5,_0x228cdc){return client[_0x6812('0x4')](_0x45b491,_0x5838c3)[_0x6812('0x5')](function(_0x275cf6){logger['debug'](_0x6812('0x6'),_0x6812('0x2'),_0x45b491,_0x5838c3,_0x275cf6);if(_0x275cf6['error']){logger['error'](_0x6812('0x6'),'routing',_0x45b491,_0x275cf6[_0x6812('0x7')][_0x6812('0x8')],_0x5838c3);return _0x228cdc(_0x275cf6['error'][_0x6812('0x8')]);}else{return _0x2be0a5(_0x275cf6[_0x6812('0x9')]);}})[_0x6812('0xa')](function(_0x233b51){logger[_0x6812('0x7')](_0x6812('0x6'),_0x6812('0x2'),_0x45b491,_0x233b51,_0x5838c3);return _0x228cdc(_0x233b51);});});};module[_0x6812('0xb')]=client;
\ No newline at end of file
index 55aa763..c0db74c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb59=['./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','getOpenchannelQueues','initOpenchannelQueues','initChatQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','catch','log','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue'];(function(_0x304d63,_0x381351){var _0x514349=function(_0x4994bd){while(--_0x4994bd){_0x304d63['push'](_0x304d63['shift']());}};_0x514349(++_0x381351);}(_0xcb59,0x191));var _0x9cb5=function(_0x271fff,_0x2c99a7){_0x271fff=_0x271fff-0x0;var _0x3a8cc1=_0xcb59[_0x271fff];return _0x3a8cc1;};'use strict';var BPromise=require('bluebird');var server=require(_0x9cb5('0x0'));var Realtime=require(_0x9cb5('0x1'));var user=require(_0x9cb5('0x2'));var interval=require(_0x9cb5('0x3'));var openchannelQueue=require(_0x9cb5('0x4'));var chatQueue=require(_0x9cb5('0x5'));var smsQueue=require(_0x9cb5('0x6'));var mailQueue=require(_0x9cb5('0x7'));var faxQueue=require(_0x9cb5('0x8'));var whatsappQueue=require(_0x9cb5('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x9cb5('0xa')]()[_0x9cb5('0xb')](user[_0x9cb5('0xc')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0xd')]())[_0x9cb5('0xb')](interval[_0x9cb5('0xe')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0xf')]())[_0x9cb5('0xb')](openchannelQueue[_0x9cb5('0x10')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0x11')]())[_0x9cb5('0xb')](chatQueue['getChatQueues']())['then'](realtime[_0x9cb5('0x12')]())['then'](smsQueue['getSmsQueues']())[_0x9cb5('0xb')](realtime[_0x9cb5('0x13')]())[_0x9cb5('0xb')](mailQueue[_0x9cb5('0x14')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0x15')]())[_0x9cb5('0xb')](faxQueue[_0x9cb5('0x16')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0x17')]())[_0x9cb5('0xb')](whatsappQueue[_0x9cb5('0x18')]())[_0x9cb5('0xb')](realtime[_0x9cb5('0x19')]())[_0x9cb5('0xb')](function(){return realtime;});}function main(){return server[_0x9cb5('0x1a')](realtime)[_0x9cb5('0xb')](function(_0x5a09d9){return initRealtime();})['then'](function(_0x283a99){return setInterval(initRealtime,0x1388);})[_0x9cb5('0x1b')](function(_0x3c7809){console[_0x9cb5('0x1c')](_0x3c7809);});}main();
\ No newline at end of file
+var _0xb99f=['initIntervals','getOpenchannelQueues','initOpenchannelQueues','getSmsQueues','initSmsQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','bluebird','./server','./realtime','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue','./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb99f,0x129));var _0xfb99=function(_0x51020b,_0x38c2c7){_0x51020b=_0x51020b-0x0;var _0x371e47=_0xb99f[_0x51020b];return _0x371e47;};'use strict';var BPromise=require(_0xfb99('0x0'));var server=require(_0xfb99('0x1'));var Realtime=require(_0xfb99('0x2'));var user=require('./rpc/user');var interval=require(_0xfb99('0x3'));var openchannelQueue=require(_0xfb99('0x4'));var chatQueue=require(_0xfb99('0x5'));var smsQueue=require(_0xfb99('0x6'));var mailQueue=require(_0xfb99('0x7'));var faxQueue=require(_0xfb99('0x8'));var whatsappQueue=require(_0xfb99('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0xfb99('0xa')]()[_0xfb99('0xb')](user[_0xfb99('0xc')]())[_0xfb99('0xb')](realtime[_0xfb99('0xd')]())[_0xfb99('0xb')](interval[_0xfb99('0xe')]())['then'](realtime[_0xfb99('0xf')]())[_0xfb99('0xb')](openchannelQueue[_0xfb99('0x10')]())[_0xfb99('0xb')](realtime[_0xfb99('0x11')]())['then'](chatQueue['getChatQueues']())[_0xfb99('0xb')](realtime['initChatQueues']())['then'](smsQueue[_0xfb99('0x12')]())[_0xfb99('0xb')](realtime[_0xfb99('0x13')]())[_0xfb99('0xb')](mailQueue['getMailQueues']())[_0xfb99('0xb')](realtime[_0xfb99('0x14')]())[_0xfb99('0xb')](faxQueue[_0xfb99('0x15')]())['then'](realtime[_0xfb99('0x16')]())[_0xfb99('0xb')](whatsappQueue[_0xfb99('0x17')]())[_0xfb99('0xb')](realtime[_0xfb99('0x18')]())[_0xfb99('0xb')](function(){return realtime;});}function main(){return server[_0xfb99('0x19')](realtime)[_0xfb99('0xb')](function(_0x100a0e){return initRealtime();})['then'](function(_0x2a23b8){return setInterval(initRealtime,0x1388);})['catch'](function(_0x1f2246){console['log'](_0x1f2246);});}main();
\ No newline at end of file
index 2f58232..e48cbcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['isNil','register','ignoreFactChanges','activeRules','prototype','isArray','rules','concat','isObject','push','sync','filter','orderBy','asc','result','clone','name','nextTick','ruleRef','isEqual','restart','length','condition','noop','findRules','matches','turn','prioritize','priority','toString','consequence','fromJSON','isString','parse','map','object','exports','util','events','EventEmitter','init'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x1261,0x144));var _0x1126=function(_0x3305de,_0x16582f){_0x3305de=_0x3305de-0x0;var _0x3b5a84=_0x1261[_0x3305de];return _0x3b5a84;};'use strict';var _=require('lodash');var util=require(_0x1126('0x0'));var EventEmitter=require(_0x1126('0x1'))[_0x1126('0x2')];function RuleEngine(_0x331a2c,_0x39b786){this[_0x1126('0x3')]();if(!_[_0x1126('0x4')](_0x331a2c)){this[_0x1126('0x5')](_0x331a2c);}if(_0x39b786){this[_0x1126('0x6')]=_0x39b786[_0x1126('0x6')];}return this;}util['inherits'](RuleEngine,EventEmitter);RuleEngine['prototype'][_0x1126('0x3')]=function(_0x907180){this['rules']=[];this[_0x1126('0x7')]=[];};RuleEngine[_0x1126('0x8')][_0x1126('0x5')]=function(_0x3abb0b){if(Array[_0x1126('0x9')](_0x3abb0b)){this['rules']=this[_0x1126('0xa')][_0x1126('0xb')](_0x3abb0b);}else if(_0x3abb0b!==null&&_[_0x1126('0xc')](_0x3abb0b)){this['rules'][_0x1126('0xd')](_0x3abb0b);}this['sync']();};RuleEngine['prototype'][_0x1126('0xe')]=function(){this['activeRules']=this[_0x1126('0xa')][_0x1126('0xf')](function(_0xd26a32){if(_[_0x1126('0x4')](_0xd26a32['on'])){_0xd26a32['on']=!![];}if(_0xd26a32['on']===!![]){return _0xd26a32;}});this[_0x1126('0x7')]=_[_0x1126('0x10')](this[_0x1126('0x7')],['p'],[_0x1126('0x11')]);};RuleEngine[_0x1126('0x8')]['execute']=function(_0x5de9a7,_0x1af673){var _0x154e20=![];_0x5de9a7[_0x1126('0x12')]=!![];var _0x4be0c6=_[_0x1126('0x13')](_0x5de9a7);var _0x4794a7=_[_0x1126('0x13')](_0x5de9a7);var _0x42f379=this[_0x1126('0x7')];var _0x4e1c97=[];var _0x245cd7=this[_0x1126('0x6')];(function FnRuleLoop(_0x4a7b49){var _0x4d2b38={'rules':function(){return _0x42f379;},'rule':function(){return _0x42f379[_0x4a7b49];},'when':function(_0x22ae0b){if(_0x22ae0b){var _0x2b2487=_0x42f379[_0x4a7b49]['consequence'];_0x2b2487['ruleRef']=_0x42f379[_0x4a7b49]['id']||_0x42f379[_0x4a7b49][_0x1126('0x14')]||'index_'+_0x4a7b49;process[_0x1126('0x15')](function(){_0x4e1c97[_0x1126('0xd')](_0x2b2487[_0x1126('0x16')]);_0x2b2487['call'](_0x4be0c6,_0x4d2b38);});}else{process[_0x1126('0x15')](function(){_0x4d2b38['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x154e20=!![];return FnRuleLoop(0x0);},'next':function(_0x56efeb){if(!_0x245cd7&&!_[_0x1126('0x17')](_0x4794a7,_0x4be0c6)){_0x4794a7=_[_0x1126('0x13')](_0x4be0c6);process[_0x1126('0x15')](function(){_0x4d2b38[_0x1126('0x18')]();});}else{process['nextTick'](function(){if(_[_0x1126('0x4')](_0x56efeb)){return FnRuleLoop(_0x4a7b49+0x1);}else{return FnRuleLoop(_0x56efeb);}});}}};if(_0x4a7b49<_0x42f379[_0x1126('0x19')]&&_0x154e20===![]){var _0x48a08d=_0x42f379[_0x4a7b49][_0x1126('0x1a')];_0x48a08d['call'](_0x4be0c6,_0x4d2b38);}else{process['nextTick'](function(){_0x4be0c6['matchPath']=_0x4e1c97;return _0x1af673?_0x1af673(_0x4be0c6):_[_0x1126('0x1b')]();});}}(0x0));};RuleEngine[_0x1126('0x8')][_0x1126('0x1c')]=function(_0x34bcf1){if(_[_0x1126('0x4')](_0x34bcf1)){return this[_0x1126('0xa')];}else{var _0xea0971=_[_0x1126('0x1d')](_0x34bcf1);return _['filter'](this[_0x1126('0xa')],_0xea0971);}};RuleEngine[_0x1126('0x8')][_0x1126('0x1e')]=function(_0x5ddf63,_0x541bc9){var _0xeb7d89=_0x5ddf63==='on'||_0x5ddf63==='ON'?!![]:![];var _0x39bf0e=this['findRules'](_0x541bc9);for(var _0x2fb797=0x0,_0x23d2bc=_0x39bf0e['length'];_0x2fb797<_0x23d2bc;_0x2fb797+=0x1){_0x39bf0e[_0x2fb797]['on']=_0xeb7d89;}this[_0x1126('0xe')]();};RuleEngine['prototype'][_0x1126('0x1f')]=function(_0x4bd50b,_0x771bb8){_0x4bd50b=parseInt(_0x4bd50b,0xa);var _0x583ce6=this[_0x1126('0x1c')](_0x771bb8);for(var _0x5f2611=0x0,_0x5252e0=_0x583ce6['length'];_0x5f2611<_0x5252e0;_0x5f2611+=0x1){_0x583ce6[_0x5f2611][_0x1126('0x20')]=_0x4bd50b;}this[_0x1126('0xe')]();};RuleEngine[_0x1126('0x8')]['toJSON']=function(){var _0x2a3055=this[_0x1126('0xa')];if(_0x2a3055 instanceof Array){_0x2a3055=_0x2a3055['map'](function(_0x3dd50e){_0x3dd50e[_0x1126('0x1a')]=_0x3dd50e[_0x1126('0x1a')][_0x1126('0x21')]();_0x3dd50e['consequence']=_0x3dd50e['consequence'][_0x1126('0x21')]();return _0x3dd50e;});}else if(!_[_0x1126('0x4')](_0x2a3055)){_0x2a3055[_0x1126('0x1a')]=_0x2a3055[_0x1126('0x1a')]['toString']();_0x2a3055[_0x1126('0x22')]=_0x2a3055[_0x1126('0x22')][_0x1126('0x21')]();}return _0x2a3055;};RuleEngine[_0x1126('0x8')][_0x1126('0x23')]=function(_0x5df232){this[_0x1126('0x3')]();if(_[_0x1126('0x24')](_0x5df232)){_0x5df232=JSON[_0x1126('0x25')](_0x5df232);}if(_0x5df232 instanceof Array){_0x5df232=_0x5df232[_0x1126('0x26')](function(_0x5c019d){_0x5c019d['condition']=eval('('+_0x5c019d[_0x1126('0x1a')]+')');_0x5c019d[_0x1126('0x22')]=eval('('+_0x5c019d['consequence']+')');return _0x5c019d;});}else if(_0x5df232!==null&&typeof _0x5df232==_0x1126('0x27')){_0x5df232[_0x1126('0x1a')]=eval('('+_0x5df232[_0x1126('0x1a')]+')');_0x5df232['consequence']=eval('('+_0x5df232['consequence']+')');}this[_0x1126('0x5')](_0x5df232);};module[_0x1126('0x28')]=RuleEngine;
\ No newline at end of file
+var _0xc4aa=['ruleRef','name','nextTick','push','call','next','isEqual','restart','isNil','length','condition','matchPath','noop','findRules','matches','turn','prioritize','priority','toJSON','toString','fromJSON','isString','parse','register','exports','lodash','util','events','EventEmitter','ignoreFactChanges','inherits','prototype','init','rules','activeRules','isArray','concat','isObject','sync','filter','orderBy','asc','execute','result','clone','consequence'];(function(_0x230f87,_0x21229b){var _0x403dd4=function(_0xc9ddf1){while(--_0xc9ddf1){_0x230f87['push'](_0x230f87['shift']());}};_0x403dd4(++_0x21229b);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x88cd7b,_0x4c884c){_0x88cd7b=_0x88cd7b-0x0;var _0x56fcc8=_0xc4aa[_0x88cd7b];return _0x56fcc8;};'use strict';var _=require(_0xac4a('0x0'));var util=require(_0xac4a('0x1'));var EventEmitter=require(_0xac4a('0x2'))[_0xac4a('0x3')];function RuleEngine(_0x275161,_0x22469d){this['init']();if(!_['isNil'](_0x275161)){this['register'](_0x275161);}if(_0x22469d){this[_0xac4a('0x4')]=_0x22469d[_0xac4a('0x4')];}return this;}util[_0xac4a('0x5')](RuleEngine,EventEmitter);RuleEngine[_0xac4a('0x6')][_0xac4a('0x7')]=function(_0x15cd34){this[_0xac4a('0x8')]=[];this[_0xac4a('0x9')]=[];};RuleEngine['prototype']['register']=function(_0x1aba6d){if(Array[_0xac4a('0xa')](_0x1aba6d)){this[_0xac4a('0x8')]=this['rules'][_0xac4a('0xb')](_0x1aba6d);}else if(_0x1aba6d!==null&&_[_0xac4a('0xc')](_0x1aba6d)){this[_0xac4a('0x8')]['push'](_0x1aba6d);}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0xd')]=function(){this['activeRules']=this[_0xac4a('0x8')][_0xac4a('0xe')](function(_0x24291d){if(_['isNil'](_0x24291d['on'])){_0x24291d['on']=!![];}if(_0x24291d['on']===!![]){return _0x24291d;}});this[_0xac4a('0x9')]=_[_0xac4a('0xf')](this[_0xac4a('0x9')],['p'],[_0xac4a('0x10')]);};RuleEngine[_0xac4a('0x6')][_0xac4a('0x11')]=function(_0x34bc01,_0x33c287){var _0x190418=![];_0x34bc01[_0xac4a('0x12')]=!![];var _0x11e101=_[_0xac4a('0x13')](_0x34bc01);var _0x4a2119=_[_0xac4a('0x13')](_0x34bc01);var _0x34d797=this[_0xac4a('0x9')];var _0x144553=[];var _0x3e88e3=this[_0xac4a('0x4')];(function FnRuleLoop(_0x28e304){var _0x44ec59={'rules':function(){return _0x34d797;},'rule':function(){return _0x34d797[_0x28e304];},'when':function(_0x546c5d){if(_0x546c5d){var _0x5ac21e=_0x34d797[_0x28e304][_0xac4a('0x14')];_0x5ac21e[_0xac4a('0x15')]=_0x34d797[_0x28e304]['id']||_0x34d797[_0x28e304][_0xac4a('0x16')]||'index_'+_0x28e304;process[_0xac4a('0x17')](function(){_0x144553[_0xac4a('0x18')](_0x5ac21e[_0xac4a('0x15')]);_0x5ac21e[_0xac4a('0x19')](_0x11e101,_0x44ec59);});}else{process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1a')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x190418=!![];return FnRuleLoop(0x0);},'next':function(_0xe38996){if(!_0x3e88e3&&!_[_0xac4a('0x1b')](_0x4a2119,_0x11e101)){_0x4a2119=_['clone'](_0x11e101);process[_0xac4a('0x17')](function(){_0x44ec59[_0xac4a('0x1c')]();});}else{process['nextTick'](function(){if(_[_0xac4a('0x1d')](_0xe38996)){return FnRuleLoop(_0x28e304+0x1);}else{return FnRuleLoop(_0xe38996);}});}}};if(_0x28e304<_0x34d797[_0xac4a('0x1e')]&&_0x190418===![]){var _0x3eacd3=_0x34d797[_0x28e304][_0xac4a('0x1f')];_0x3eacd3['call'](_0x11e101,_0x44ec59);}else{process[_0xac4a('0x17')](function(){_0x11e101[_0xac4a('0x20')]=_0x144553;return _0x33c287?_0x33c287(_0x11e101):_[_0xac4a('0x21')]();});}}(0x0));};RuleEngine[_0xac4a('0x6')][_0xac4a('0x22')]=function(_0x2b0dc2){if(_[_0xac4a('0x1d')](_0x2b0dc2)){return this[_0xac4a('0x8')];}else{var _0x3e2c69=_[_0xac4a('0x23')](_0x2b0dc2);return _[_0xac4a('0xe')](this[_0xac4a('0x8')],_0x3e2c69);}};RuleEngine[_0xac4a('0x6')][_0xac4a('0x24')]=function(_0x1c13dc,_0x20202c){var _0x4e17ce=_0x1c13dc==='on'||_0x1c13dc==='ON'?!![]:![];var _0x23b061=this[_0xac4a('0x22')](_0x20202c);for(var _0x42a33c=0x0,_0x2772fe=_0x23b061[_0xac4a('0x1e')];_0x42a33c<_0x2772fe;_0x42a33c+=0x1){_0x23b061[_0x42a33c]['on']=_0x4e17ce;}this['sync']();};RuleEngine['prototype'][_0xac4a('0x25')]=function(_0x7a948b,_0x1f12d5){_0x7a948b=parseInt(_0x7a948b,0xa);var _0x546b65=this['findRules'](_0x1f12d5);for(var _0x355755=0x0,_0x2896bc=_0x546b65[_0xac4a('0x1e')];_0x355755<_0x2896bc;_0x355755+=0x1){_0x546b65[_0x355755][_0xac4a('0x26')]=_0x7a948b;}this[_0xac4a('0xd')]();};RuleEngine['prototype'][_0xac4a('0x27')]=function(){var _0x482afc=this[_0xac4a('0x8')];if(_0x482afc instanceof Array){_0x482afc=_0x482afc['map'](function(_0x17e6de){_0x17e6de[_0xac4a('0x1f')]=_0x17e6de[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x17e6de[_0xac4a('0x14')]=_0x17e6de[_0xac4a('0x14')][_0xac4a('0x28')]();return _0x17e6de;});}else if(!_[_0xac4a('0x1d')](_0x482afc)){_0x482afc[_0xac4a('0x1f')]=_0x482afc[_0xac4a('0x1f')][_0xac4a('0x28')]();_0x482afc[_0xac4a('0x14')]=_0x482afc[_0xac4a('0x14')][_0xac4a('0x28')]();}return _0x482afc;};RuleEngine['prototype'][_0xac4a('0x29')]=function(_0x1c41fb){this['init']();if(_[_0xac4a('0x2a')](_0x1c41fb)){_0x1c41fb=JSON[_0xac4a('0x2b')](_0x1c41fb);}if(_0x1c41fb instanceof Array){_0x1c41fb=_0x1c41fb['map'](function(_0x58804b){_0x58804b[_0xac4a('0x1f')]=eval('('+_0x58804b[_0xac4a('0x1f')]+')');_0x58804b[_0xac4a('0x14')]=eval('('+_0x58804b[_0xac4a('0x14')]+')');return _0x58804b;});}else if(_0x1c41fb!==null&&typeof _0x1c41fb=='object'){_0x1c41fb[_0xac4a('0x1f')]=eval('('+_0x1c41fb[_0xac4a('0x1f')]+')');_0x1c41fb['consequence']=eval('('+_0x1c41fb[_0xac4a('0x14')]+')');}this[_0xac4a('0x2c')](_0x1c41fb);};module[_0xac4a('0x2d')]=RuleEngine;
\ No newline at end of file
index 1ffa3bb..f013d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96b9=['request','error','message','result','SendMail','bluebird','jayson/promise','http'];(function(_0x3e66b8,_0x5be705){var _0x12acc8=function(_0x40ca15){while(--_0x40ca15){_0x3e66b8['push'](_0x3e66b8['shift']());}};_0x12acc8(++_0x5be705);}(_0x96b9,0x85));var _0x996b=function(_0x181b80,_0x4c1697){_0x181b80=_0x181b80-0x0;var _0x3978b5=_0x96b9[_0x181b80];return _0x3978b5;};'use strict';var BPromise=require(_0x996b('0x0'));var jayson=require(_0x996b('0x1'));var client=jayson['client'][_0x996b('0x2')]({'port':0x232b});function request(_0x3fca7a,_0x4e5ad4){return new BPromise(function(_0x478dee,_0x4d4898){return client[_0x996b('0x3')](_0x3fca7a,_0x4e5ad4)['then'](function(_0x3ead73){if(_0x3ead73['error']){return _0x4d4898(_0x3ead73[_0x996b('0x4')][_0x996b('0x5')]);}else{return _0x478dee(_0x3ead73[_0x996b('0x6')]);}})['catch'](function(_0x1c9d5a){return _0x4d4898(_0x1c9d5a);});});}exports['sendMailMessage']=function(_0xf401ac,_0x4a3511){return request(_0x996b('0x7'),{'account':_0xf401ac,'message':_0x4a3511});};
\ No newline at end of file
+var _0x1a29=['error','message','result','catch','sendMailMessage','bluebird','jayson/promise','http','request','then'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x1a29,0x73));var _0x91a2=function(_0x1d3577,_0x590775){_0x1d3577=_0x1d3577-0x0;var _0x529883=_0x1a29[_0x1d3577];return _0x529883;};'use strict';var BPromise=require(_0x91a2('0x0'));var jayson=require(_0x91a2('0x1'));var client=jayson['client'][_0x91a2('0x2')]({'port':0x232b});function request(_0x3e61bc,_0x2b5a5c){return new BPromise(function(_0x487c4a,_0x2cf16d){return client[_0x91a2('0x3')](_0x3e61bc,_0x2b5a5c)[_0x91a2('0x4')](function(_0x39a001){if(_0x39a001[_0x91a2('0x5')]){return _0x2cf16d(_0x39a001[_0x91a2('0x5')][_0x91a2('0x6')]);}else{return _0x487c4a(_0x39a001[_0x91a2('0x7')]);}})[_0x91a2('0x8')](function(_0x2ac80c){return _0x2cf16d(_0x2ac80c);});});}exports[_0x91a2('0x9')]=function(_0x4af4f6,_0x2399cd){return request('SendMail',{'account':_0x4af4f6,'message':_0x2399cd});};
\ No newline at end of file
index 867136b..8452404 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9312=['whatsappStatus','whatsappCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','mailWaitingInteractions','openchannelWaitingInteractions','smsWaitingInteractions','whatsappWaitingInteractions','CurrentCapacity','Capacity','maxcapacity','working','idle','prototype','chat','fax','whatsapp','length','Status','toNumber','format','mailCapacity','mailCurrentCapacity','faxCurrentCapacity','smsStatus','whatsappStatusTime','whatsappCurrentCapacity','faxWaitingInteractions','stringify','user:save','exports','lodash','moment','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCapacity','chatCurrentCapacity','mailStatusTime','faxStatus','faxStatusTime','faxCapacity','smsStatusTime','smsCapacity','smsCurrentCapacity'];(function(_0x3c2947,_0x473f08){var _0x360ab3=function(_0x59c37f){while(--_0x59c37f){_0x3c2947['push'](_0x3c2947['shift']());}};_0x360ab3(++_0x473f08);}(_0x9312,0x65));var _0x2931=function(_0x2c96f6,_0x877207){_0x2c96f6=_0x2c96f6-0x0;var _0x6d4808=_0x9312[_0x2c96f6];return _0x6d4808;};'use strict';var _=require(_0x2931('0x0'));var moment=require(_0x2931('0x1'));var md5=require(_0x2931('0x2'));var Redis=require(_0x2931('0x3'));var config=require(_0x2931('0x4'));config[_0x2931('0x5')]=_[_0x2931('0x6')](config[_0x2931('0x5')],{'host':_0x2931('0x7'),'port':0x18eb});var io=require(_0x2931('0x8'))(new Redis(config['redis']));function Agent(_0x57f9cb){this['id']=_0x57f9cb['id']||0x0;this[_0x2931('0x9')]=_0x57f9cb[_0x2931('0x9')]||'';this[_0x2931('0xa')]=_0x57f9cb[_0x2931('0xa')]||!![];this['voicePause']=_0x57f9cb[_0x2931('0xb')]||![];this[_0x2931('0xc')]=_0x57f9cb[_0x2931('0xc')]||![];this[_0x2931('0xd')]=_0x57f9cb[_0x2931('0xd')]||![];this[_0x2931('0xe')]=_0x57f9cb['faxPause']||![];this[_0x2931('0xf')]=_0x57f9cb[_0x2931('0xf')]||![];this['openchannelPause']=_0x57f9cb[_0x2931('0x10')]||![];this[_0x2931('0x11')]=_0x2931('0x12');this[_0x2931('0x13')]=0x0;this[_0x2931('0x14')]=_0x57f9cb[_0x2931('0x14')]||0x0;this[_0x2931('0x15')]=0x0;this['mailStatus']=_0x2931('0x12');this[_0x2931('0x16')]=0x0;this['mailCapacity']=_0x57f9cb['mailCapacity']||0x0;this['mailCurrentCapacity']=0x0;this[_0x2931('0x17')]=_0x2931('0x12');this[_0x2931('0x18')]=0x0;this['faxCapacity']=_0x57f9cb[_0x2931('0x19')]||0x0;this['faxCurrentCapacity']=0x0;this['smsStatus']=_0x2931('0x12');this[_0x2931('0x1a')]=0x0;this[_0x2931('0x1b')]=_0x57f9cb[_0x2931('0x1b')]||0x0;this[_0x2931('0x1c')]=0x0;this[_0x2931('0x1d')]=_0x2931('0x12');this['whatsappStatusTime']=0x0;this['whatsappCapacity']=_0x57f9cb[_0x2931('0x1e')]||0x0;this['whatsappCurrentCapacity']=0x0;this[_0x2931('0x1f')]=_0x2931('0x12');this[_0x2931('0x20')]=0x0;this[_0x2931('0x21')]=_0x57f9cb[_0x2931('0x21')]||0x0;this[_0x2931('0x22')]=0x0;this[_0x2931('0x23')]=![];this[_0x2931('0x24')]=undefined;this[_0x2931('0x2')]='';this[_0x2931('0x25')]={};this['faxWaitingInteractions']={};this[_0x2931('0x26')]={};this[_0x2931('0x27')]={};this[_0x2931('0x28')]={};this[_0x2931('0x29')]={};this['updateRealtime']();}Agent['prototype']['getChannelStatus']=function(_0x372aa2){if(this[_0x372aa2+_0x2931('0x2a')]>0x0){if(this[_0x372aa2+_0x2931('0x2b')]>0x0&&this[_0x372aa2+_0x2931('0x2a')]>=this[_0x372aa2+_0x2931('0x2b')]){return _0x2931('0x2c');}else{return _0x2931('0x2d');}}else{return _0x2931('0x2e');}};Agent[_0x2931('0x2f')]['updateRealtime']=function(){var _0x52ad39=['mail',_0x2931('0x30'),'openchannel',_0x2931('0x31'),'sms',_0x2931('0x32')];for(var _0x40c217=0x0;_0x40c217<_0x52ad39[_0x2931('0x33')];_0x40c217+=0x1){var _0x2d595a=this['getChannelStatus'](_0x52ad39[_0x40c217]);if(this[_0x52ad39[_0x40c217]+_0x2931('0x34')]!==_0x2d595a){this[_0x52ad39[_0x40c217]+'StatusTime']=_[_0x2931('0x35')](moment()[_0x2931('0x36')]('x'));}this[_0x52ad39[_0x40c217]+_0x2931('0x34')]=_0x2d595a;}var _0x93c8f0={'id':this['id'],'name':this[_0x2931('0x9')],'online':this[_0x2931('0xa')],'voicePause':this[_0x2931('0xb')],'chatPause':this[_0x2931('0xc')],'mailPause':this[_0x2931('0xd')],'smsPause':this[_0x2931('0xf')],'faxPause':this['faxPause'],'openchannelPause':this[_0x2931('0x10')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x2931('0x13')],'chatCapacity':this[_0x2931('0x14')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x2931('0x16')],'mailCapacity':this[_0x2931('0x37')],'mailCurrentCapacity':this[_0x2931('0x38')],'faxStatus':this[_0x2931('0x17')],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x2931('0x19')],'faxCurrentCapacity':this[_0x2931('0x39')],'smsStatus':this[_0x2931('0x3a')],'smsStatusTime':this[_0x2931('0x1a')],'smsCapacity':this[_0x2931('0x1b')],'smsCurrentCapacity':this[_0x2931('0x1c')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x2931('0x3b')],'whatsappCapacity':this[_0x2931('0x1e')],'whatsappCurrentCapacity':this[_0x2931('0x3c')],'openchannelStatus':this[_0x2931('0x1f')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x2931('0x21')],'openchannelCurrentCapacity':this[_0x2931('0x22')],'busy':this[_0x2931('0x23')],'busyQueue':this[_0x2931('0x24')],'chatWaitingInteractions':this[_0x2931('0x25')],'faxWaitingInteractions':this[_0x2931('0x3d')],'mailWaitingInteractions':this[_0x2931('0x26')],'openchannelWaitingInteractions':this[_0x2931('0x27')],'smsWaitingInteractions':this[_0x2931('0x28')],'whatsappWaitingInteractions':this[_0x2931('0x29')]};var _0x336ea0=md5(JSON[_0x2931('0x3e')](_0x93c8f0));if(this[_0x2931('0x2')]!==_0x336ea0){this[_0x2931('0x2')]=_0x336ea0;io['emit'](_0x2931('0x3f'),_0x93c8f0);}};module[_0x2931('0x40')]=Agent;
\ No newline at end of file
+var _0x9205=['smsWaitingInteractions','whatsappWaitingInteractions','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','mail','chat','openchannel','fax','sms','Status','StatusTime','toNumber','format','chatStatusTime','smsStatusTime','whatsappCurrentCapacity','openchannelStatus','faxWaitingInteractions','openchannelWaitingInteractions','md5','emit','user:save','exports','ioredis','redis','defaults','localhost','socket.io-emitter','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','unknown','chatCapacity','chatCurrentCapacity','mailStatus','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','chatWaitingInteractions','mailWaitingInteractions'];(function(_0x304343,_0x2cc6ca){var _0x549072=function(_0x5f21e8){while(--_0x5f21e8){_0x304343['push'](_0x304343['shift']());}};_0x549072(++_0x2cc6ca);}(_0x9205,0x167));var _0x5920=function(_0x9bc01e,_0x2d95f7){_0x9bc01e=_0x9bc01e-0x0;var _0x4cd61d=_0x9205[_0x9bc01e];return _0x4cd61d;};'use strict';var _=require('lodash');var moment=require('moment');var md5=require('md5');var Redis=require(_0x5920('0x0'));var config=require('../../../config/environment');config[_0x5920('0x1')]=_[_0x5920('0x2')](config[_0x5920('0x1')],{'host':_0x5920('0x3'),'port':0x18eb});var io=require(_0x5920('0x4'))(new Redis(config[_0x5920('0x1')]));function Agent(_0x18353c){this['id']=_0x18353c['id']||0x0;this[_0x5920('0x5')]=_0x18353c['name']||'';this[_0x5920('0x6')]=_0x18353c[_0x5920('0x6')]||!![];this[_0x5920('0x7')]=_0x18353c['voicePause']||![];this[_0x5920('0x8')]=_0x18353c[_0x5920('0x8')]||![];this[_0x5920('0x9')]=_0x18353c[_0x5920('0x9')]||![];this[_0x5920('0xa')]=_0x18353c[_0x5920('0xa')]||![];this['smsPause']=_0x18353c[_0x5920('0xb')]||![];this[_0x5920('0xc')]=_0x18353c['openchannelPause']||![];this['chatStatus']=_0x5920('0xd');this['chatStatusTime']=0x0;this[_0x5920('0xe')]=_0x18353c[_0x5920('0xe')]||0x0;this[_0x5920('0xf')]=0x0;this[_0x5920('0x10')]=_0x5920('0xd');this[_0x5920('0x11')]=0x0;this[_0x5920('0x12')]=_0x18353c['mailCapacity']||0x0;this[_0x5920('0x13')]=0x0;this[_0x5920('0x14')]=_0x5920('0xd');this[_0x5920('0x15')]=0x0;this[_0x5920('0x16')]=_0x18353c[_0x5920('0x16')]||0x0;this[_0x5920('0x17')]=0x0;this[_0x5920('0x18')]=_0x5920('0xd');this['smsStatusTime']=0x0;this[_0x5920('0x19')]=_0x18353c['smsCapacity']||0x0;this[_0x5920('0x1a')]=0x0;this[_0x5920('0x1b')]=_0x5920('0xd');this[_0x5920('0x1c')]=0x0;this[_0x5920('0x1d')]=_0x18353c['whatsappCapacity']||0x0;this['whatsappCurrentCapacity']=0x0;this['openchannelStatus']=_0x5920('0xd');this[_0x5920('0x1e')]=0x0;this[_0x5920('0x1f')]=_0x18353c['openchannelCapacity']||0x0;this[_0x5920('0x20')]=0x0;this[_0x5920('0x21')]=![];this[_0x5920('0x22')]=undefined;this['md5']='';this[_0x5920('0x23')]={};this['faxWaitingInteractions']={};this[_0x5920('0x24')]={};this['openchannelWaitingInteractions']={};this[_0x5920('0x25')]={};this[_0x5920('0x26')]={};this['updateRealtime']();}Agent[_0x5920('0x27')][_0x5920('0x28')]=function(_0x17ba76){if(this[_0x17ba76+_0x5920('0x29')]>0x0){if(this[_0x17ba76+_0x5920('0x2a')]>0x0&&this[_0x17ba76+_0x5920('0x29')]>=this[_0x17ba76+'Capacity']){return _0x5920('0x2b');}else{return _0x5920('0x2c');}}else{return _0x5920('0x2d');}};Agent['prototype'][_0x5920('0x2e')]=function(){var _0xe20dfa=[_0x5920('0x2f'),_0x5920('0x30'),_0x5920('0x31'),_0x5920('0x32'),_0x5920('0x33'),'whatsapp'];for(var _0x177d63=0x0;_0x177d63<_0xe20dfa['length'];_0x177d63+=0x1){var _0x223cdd=this['getChannelStatus'](_0xe20dfa[_0x177d63]);if(this[_0xe20dfa[_0x177d63]+_0x5920('0x34')]!==_0x223cdd){this[_0xe20dfa[_0x177d63]+_0x5920('0x35')]=_[_0x5920('0x36')](moment()[_0x5920('0x37')]('x'));}this[_0xe20dfa[_0x177d63]+_0x5920('0x34')]=_0x223cdd;}var _0x8fe546={'id':this['id'],'name':this[_0x5920('0x5')],'online':this[_0x5920('0x6')],'voicePause':this['voicePause'],'chatPause':this[_0x5920('0x8')],'mailPause':this[_0x5920('0x9')],'smsPause':this[_0x5920('0xb')],'faxPause':this[_0x5920('0xa')],'openchannelPause':this[_0x5920('0xc')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x5920('0x38')],'chatCapacity':this[_0x5920('0xe')],'chatCurrentCapacity':this[_0x5920('0xf')],'mailStatus':this[_0x5920('0x10')],'mailStatusTime':this['mailStatusTime'],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0x5920('0x13')],'faxStatus':this[_0x5920('0x14')],'faxStatusTime':this[_0x5920('0x15')],'faxCapacity':this[_0x5920('0x16')],'faxCurrentCapacity':this[_0x5920('0x17')],'smsStatus':this[_0x5920('0x18')],'smsStatusTime':this[_0x5920('0x39')],'smsCapacity':this[_0x5920('0x19')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0x5920('0x1c')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x5920('0x3a')],'openchannelStatus':this[_0x5920('0x3b')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x5920('0x1f')],'openchannelCurrentCapacity':this[_0x5920('0x20')],'busy':this[_0x5920('0x21')],'busyQueue':this[_0x5920('0x22')],'chatWaitingInteractions':this[_0x5920('0x23')],'faxWaitingInteractions':this[_0x5920('0x3c')],'mailWaitingInteractions':this[_0x5920('0x24')],'openchannelWaitingInteractions':this[_0x5920('0x3d')],'smsWaitingInteractions':this[_0x5920('0x25')],'whatsappWaitingInteractions':this[_0x5920('0x26')]};var _0x3edd96=md5(JSON['stringify'](_0x8fe546));if(this[_0x5920('0x3e')]!==_0x3edd96){this[_0x5920('0x3e')]=_0x3edd96;io[_0x5920('0x3f')](_0x5920('0x40'),_0x8fe546);}};module[_0x5920('0x41')]=Agent;
\ No newline at end of file
index 1f88e19..caa06b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f35=['ioredis','redis','defaults','localhost','socket.io-emitter','timeout','strategy','Agents','mapAgentsId','waiting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','chatPause','available','name','format','chat:queue:%s','emit','chat_queue:save','exports','lodash','md5','util'];(function(_0x483163,_0x31f8d2){var _0x4b7b6d=function(_0x2b6233){while(--_0x2b6233){_0x483163['push'](_0x483163['shift']());}};_0x4b7b6d(++_0x31f8d2);}(_0x8f35,0x1b0));var _0x58f3=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0x8f35[_0x32b542];return _0x554d54;};'use strict';var _=require(_0x58f3('0x0'));var md5=require(_0x58f3('0x1'));var util=require(_0x58f3('0x2'));var Redis=require(_0x58f3('0x3'));var config=require('../../../config/environment');config[_0x58f3('0x4')]=_[_0x58f3('0x5')](config[_0x58f3('0x4')],{'host':_0x58f3('0x6'),'port':0x18eb});var io=require(_0x58f3('0x7'))(new Redis(config[_0x58f3('0x4')]));function ChatQueue(_0x31a953){this['id']=_0x31a953['id']||0x0;this['name']=_0x31a953['name']||'';this['timeout']=_0x31a953[_0x58f3('0x8')]||0xa;this[_0x58f3('0x9')]=_0x31a953[_0x58f3('0x9')]||'beepall';this[_0x58f3('0xa')]=_0x31a953[_0x58f3('0xa')];this[_0x58f3('0xb')]={};this[_0x58f3('0xc')]=0x0;this['md5']='';this['updateRouting']();this[_0x58f3('0xd')]();}ChatQueue[_0x58f3('0xe')]['updateRouting']=function(){var _0x59ed89=this[_0x58f3('0xb')][_0x58f3('0xf')];this[_0x58f3('0xb')]=_[_0x58f3('0x10')](this[_0x58f3('0xa')],'id');this[_0x58f3('0xb')][_0x58f3('0xf')]=_0x59ed89;};ChatQueue[_0x58f3('0xe')]['updateRealtime']=function(){this[_0x58f3('0x11')]=0x0;this[_0x58f3('0x12')]=0x0;for(var _0x2599fd=0x0;_0x2599fd<this[_0x58f3('0xa')][_0x58f3('0x13')];_0x2599fd+=0x1){if(this[_0x58f3('0xa')][_0x2599fd][_0x58f3('0x14')]){this[_0x58f3('0x11')]+=0x1;}if(this[_0x58f3('0xa')][_0x2599fd][_0x58f3('0x15')]){this[_0x58f3('0x12')]+=0x1;}}this[_0x58f3('0x16')]=this['loggedIn']-this['paused'];this[_0x58f3('0x16')]=this['available']>=0x0?this[_0x58f3('0x16')]:0x0;var _0x29ec8f={'id':this['id'],'available':this[_0x58f3('0x16')],'loggedIn':this['loggedIn'],'name':this[_0x58f3('0x17')],'paused':this[_0x58f3('0x12')],'waiting':this[_0x58f3('0xc')]};var _0x8968cc=md5(JSON['stringify'](_0x29ec8f));if(this[_0x58f3('0x1')]!==_0x8968cc){this['md5']=_0x8968cc;io['to'](util[_0x58f3('0x18')](_0x58f3('0x19'),_0x29ec8f[_0x58f3('0x17')]))[_0x58f3('0x1a')](_0x58f3('0x1b'),_0x29ec8f);}};module[_0x58f3('0x1c')]=ChatQueue;
\ No newline at end of file
+var _0x55ea=['prototype','map','updateRealtime','paused','length','online','loggedIn','chatPause','available','format','chat:queue:%s','emit','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x55ea,0x11b));var _0xa55e=function(_0x25af79,_0x53635e){_0x25af79=_0x25af79-0x0;var _0x52ee91=_0x55ea[_0x25af79];return _0x52ee91;};'use strict';var _=require(_0xa55e('0x0'));var md5=require('md5');var util=require(_0xa55e('0x1'));var Redis=require(_0xa55e('0x2'));var config=require(_0xa55e('0x3'));config[_0xa55e('0x4')]=_[_0xa55e('0x5')](config[_0xa55e('0x4')],{'host':_0xa55e('0x6'),'port':0x18eb});var io=require(_0xa55e('0x7'))(new Redis(config[_0xa55e('0x4')]));function ChatQueue(_0x27ba2e){this['id']=_0x27ba2e['id']||0x0;this[_0xa55e('0x8')]=_0x27ba2e[_0xa55e('0x8')]||'';this[_0xa55e('0x9')]=_0x27ba2e[_0xa55e('0x9')]||0xa;this[_0xa55e('0xa')]=_0x27ba2e[_0xa55e('0xa')]||_0xa55e('0xb');this[_0xa55e('0xc')]=_0x27ba2e['Agents'];this[_0xa55e('0xd')]={};this[_0xa55e('0xe')]=0x0;this[_0xa55e('0xf')]='';this[_0xa55e('0x10')]();this['updateRealtime']();}ChatQueue[_0xa55e('0x11')][_0xa55e('0x10')]=function(){var _0xa12f3e=this[_0xa55e('0xd')]['_rr'];this[_0xa55e('0xd')]=_[_0xa55e('0x12')](this[_0xa55e('0xc')],'id');this[_0xa55e('0xd')]['_rr']=_0xa12f3e;};ChatQueue[_0xa55e('0x11')][_0xa55e('0x13')]=function(){this['loggedIn']=0x0;this[_0xa55e('0x14')]=0x0;for(var _0x21d504=0x0;_0x21d504<this['Agents'][_0xa55e('0x15')];_0x21d504+=0x1){if(this[_0xa55e('0xc')][_0x21d504][_0xa55e('0x16')]){this[_0xa55e('0x17')]+=0x1;}if(this['Agents'][_0x21d504][_0xa55e('0x18')]){this['paused']+=0x1;}}this['available']=this[_0xa55e('0x17')]-this[_0xa55e('0x14')];this[_0xa55e('0x19')]=this['available']>=0x0?this[_0xa55e('0x19')]:0x0;var _0x393052={'id':this['id'],'available':this[_0xa55e('0x19')],'loggedIn':this[_0xa55e('0x17')],'name':this[_0xa55e('0x8')],'paused':this[_0xa55e('0x14')],'waiting':this[_0xa55e('0xe')]};var _0x1c8975=md5(JSON['stringify'](_0x393052));if(this[_0xa55e('0xf')]!==_0x1c8975){this['md5']=_0x1c8975;io['to'](util[_0xa55e('0x1a')](_0xa55e('0x1b'),_0x393052[_0xa55e('0x8')]))[_0xa55e('0x1c')]('chat_queue:save',_0x393052);}};module[_0xa55e('0x1d')]=ChatQueue;
\ No newline at end of file
index fdf7092..18ceda8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3b24=['beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','_rr','map','loggedIn','paused','length','online','faxPause','available','format','fax:queue:%s','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x460c41,_0x10df8e){var _0x19b931=function(_0x3c7c1f){while(--_0x3c7c1f){_0x460c41['push'](_0x460c41['shift']());}};_0x19b931(++_0x10df8e);}(_0x3b24,0x198));var _0x43b2=function(_0x121b02,_0x562855){_0x121b02=_0x121b02-0x0;var _0x2e1494=_0x3b24[_0x121b02];return _0x2e1494;};'use strict';var _=require(_0x43b2('0x0'));var md5=require(_0x43b2('0x1'));var util=require(_0x43b2('0x2'));var Redis=require(_0x43b2('0x3'));var config=require(_0x43b2('0x4'));config[_0x43b2('0x5')]=_[_0x43b2('0x6')](config[_0x43b2('0x5')],{'host':_0x43b2('0x7'),'port':0x18eb});var io=require(_0x43b2('0x8'))(new Redis(config[_0x43b2('0x5')]));function FaxQueue(_0x12a940){this['id']=_0x12a940['id']||0x0;this[_0x43b2('0x9')]=_0x12a940[_0x43b2('0x9')]||'';this[_0x43b2('0xa')]=_0x12a940[_0x43b2('0xa')]||0xa;this[_0x43b2('0xb')]=_0x12a940['strategy']||_0x43b2('0xc');this[_0x43b2('0xd')]=_0x12a940['Agents'];this[_0x43b2('0xe')]={};this[_0x43b2('0xf')]=0x0;this['md5']='';this['updateRouting']();this[_0x43b2('0x10')]();}FaxQueue[_0x43b2('0x11')][_0x43b2('0x12')]=function(){var _0x932a56=this['mapAgentsId'][_0x43b2('0x13')];this[_0x43b2('0xe')]=_[_0x43b2('0x14')](this[_0x43b2('0xd')],'id');this['mapAgentsId']['_rr']=_0x932a56;};FaxQueue['prototype'][_0x43b2('0x10')]=function(){this[_0x43b2('0x15')]=0x0;this[_0x43b2('0x16')]=0x0;for(var _0x41cef2=0x0;_0x41cef2<this[_0x43b2('0xd')][_0x43b2('0x17')];_0x41cef2+=0x1){if(this[_0x43b2('0xd')][_0x41cef2][_0x43b2('0x18')]){this[_0x43b2('0x15')]+=0x1;}if(this[_0x43b2('0xd')][_0x41cef2][_0x43b2('0x19')]){this['paused']+=0x1;}}this[_0x43b2('0x1a')]=this[_0x43b2('0x15')]-this[_0x43b2('0x16')];this[_0x43b2('0x1a')]=this[_0x43b2('0x1a')]>=0x0?this[_0x43b2('0x1a')]:0x0;var _0x34776f={'id':this['id'],'available':this[_0x43b2('0x1a')],'loggedIn':this[_0x43b2('0x15')],'name':this[_0x43b2('0x9')],'paused':this[_0x43b2('0x16')],'waiting':this['waiting']};var _0x3c13c2=md5(JSON['stringify'](_0x34776f));if(this[_0x43b2('0x1')]!==_0x3c13c2){this[_0x43b2('0x1')]=_0x3c13c2;io['to'](util[_0x43b2('0x1b')](_0x43b2('0x1c'),_0x34776f[_0x43b2('0x9')]))[_0x43b2('0x1d')]('fax_queue:save',_0x34776f);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0x8881=['Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','length','online','faxPause','available','waiting','stringify','format','fax_queue:save','exports','md5','util','redis','defaults','socket.io-emitter','name','timeout','strategy','beepall'];(function(_0x82f48b,_0x580ddb){var _0x565bf0=function(_0x213da7){while(--_0x213da7){_0x82f48b['push'](_0x82f48b['shift']());}};_0x565bf0(++_0x580ddb);}(_0x8881,0xea));var _0x1888=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x8881[_0x27af45];return _0x18df21;};'use strict';var _=require('lodash');var md5=require(_0x1888('0x0'));var util=require(_0x1888('0x1'));var Redis=require('ioredis');var config=require('../../../config/environment');config[_0x1888('0x2')]=_[_0x1888('0x3')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x1888('0x4'))(new Redis(config[_0x1888('0x2')]));function FaxQueue(_0x140570){this['id']=_0x140570['id']||0x0;this[_0x1888('0x5')]=_0x140570[_0x1888('0x5')]||'';this[_0x1888('0x6')]=_0x140570[_0x1888('0x6')]||0xa;this[_0x1888('0x7')]=_0x140570[_0x1888('0x7')]||_0x1888('0x8');this[_0x1888('0x9')]=_0x140570[_0x1888('0x9')];this[_0x1888('0xa')]={};this['waiting']=0x0;this[_0x1888('0x0')]='';this[_0x1888('0xb')]();this[_0x1888('0xc')]();}FaxQueue[_0x1888('0xd')][_0x1888('0xb')]=function(){var _0x484296=this[_0x1888('0xa')][_0x1888('0xe')];this[_0x1888('0xa')]=_[_0x1888('0xf')](this[_0x1888('0x9')],'id');this[_0x1888('0xa')]['_rr']=_0x484296;};FaxQueue[_0x1888('0xd')][_0x1888('0xc')]=function(){this[_0x1888('0x10')]=0x0;this[_0x1888('0x11')]=0x0;for(var _0x92601b=0x0;_0x92601b<this[_0x1888('0x9')][_0x1888('0x12')];_0x92601b+=0x1){if(this[_0x1888('0x9')][_0x92601b][_0x1888('0x13')]){this['loggedIn']+=0x1;}if(this[_0x1888('0x9')][_0x92601b][_0x1888('0x14')]){this[_0x1888('0x11')]+=0x1;}}this[_0x1888('0x15')]=this[_0x1888('0x10')]-this[_0x1888('0x11')];this[_0x1888('0x15')]=this[_0x1888('0x15')]>=0x0?this[_0x1888('0x15')]:0x0;var _0x41bed3={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x1888('0x5')],'paused':this[_0x1888('0x11')],'waiting':this[_0x1888('0x16')]};var _0x28c25b=md5(JSON[_0x1888('0x17')](_0x41bed3));if(this[_0x1888('0x0')]!==_0x28c25b){this[_0x1888('0x0')]=_0x28c25b;io['to'](util[_0x1888('0x18')]('fax:queue:%s',_0x41bed3[_0x1888('0x5')]))['emit'](_0x1888('0x19'),_0x41bed3);}};module[_0x1888('0x1a')]=FaxQueue;
\ No newline at end of file
index 4faec7f..08a7f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d32=['exports','name','Intervals'];(function(_0x2e4059,_0x320e40){var _0x550713=function(_0x40b1a3){while(--_0x40b1a3){_0x2e4059['push'](_0x2e4059['shift']());}};_0x550713(++_0x320e40);}(_0x9d32,0xeb));var _0x29d3=function(_0x4350c2,_0x112f3c){_0x4350c2=_0x4350c2-0x0;var _0x8b6406=_0x9d32[_0x4350c2];return _0x8b6406;};'use strict';function Interval(_0x548543){this['id']=_0x548543['id']||0x0;this[_0x29d3('0x0')]=_0x548543['name']||'';this[_0x29d3('0x1')]=_0x548543[_0x29d3('0x1')]||{};}module[_0x29d3('0x2')]=Interval;
\ No newline at end of file
+var _0xa803=['exports','Intervals'];(function(_0x513a32,_0x1b5293){var _0x4a9cf4=function(_0x4b5770){while(--_0x4b5770){_0x513a32['push'](_0x513a32['shift']());}};_0x4a9cf4(++_0x1b5293);}(_0xa803,0xdd));var _0x3a80=function(_0x4dfec3,_0x4978fe){_0x4dfec3=_0x4dfec3-0x0;var _0x207a76=_0xa803[_0x4dfec3];return _0x207a76;};'use strict';function Interval(_0x582bfd){this['id']=_0x582bfd['id']||0x0;this['name']=_0x582bfd['name']||'';this['Intervals']=_0x582bfd[_0x3a80('0x0')]||{};}module[_0x3a80('0x1')]=Interval;
\ No newline at end of file
index 58fa197..5493ca5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x47d0=['defaults','localhost','name','beepall','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','_rr','loggedIn','paused','online','mailPause','available','stringify','format','emit','mail_queue:save','lodash','md5','../../../config/environment','redis'];(function(_0x438572,_0x51854b){var _0xa3edea=function(_0x57850b){while(--_0x57850b){_0x438572['push'](_0x438572['shift']());}};_0xa3edea(++_0x51854b);}(_0x47d0,0x1f4));var _0x047d=function(_0x52ceb7,_0x1f8e6d){_0x52ceb7=_0x52ceb7-0x0;var _0x173388=_0x47d0[_0x52ceb7];return _0x173388;};'use strict';var _=require(_0x047d('0x0'));var md5=require(_0x047d('0x1'));var util=require('util');var Redis=require('ioredis');var config=require(_0x047d('0x2'));config[_0x047d('0x3')]=_[_0x047d('0x4')](config[_0x047d('0x3')],{'host':_0x047d('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x047d('0x3')]));function MailQueue(_0x4d2ec0){this['id']=_0x4d2ec0['id']||0x0;this['name']=_0x4d2ec0[_0x047d('0x6')]||'';this['timeout']=_0x4d2ec0['timeout']||0xa;this['strategy']=_0x4d2ec0['strategy']||_0x047d('0x7');this[_0x047d('0x8')]=_0x4d2ec0[_0x047d('0x8')];this['mapAgentsId']={};this[_0x047d('0x9')]=0x0;this[_0x047d('0x1')]='';this[_0x047d('0xa')]();this[_0x047d('0xb')]();}MailQueue[_0x047d('0xc')][_0x047d('0xa')]=function(){var _0x56c4ef=this[_0x047d('0xd')][_0x047d('0xe')];this[_0x047d('0xd')]=_['map'](this[_0x047d('0x8')],'id');this[_0x047d('0xd')][_0x047d('0xe')]=_0x56c4ef;};MailQueue[_0x047d('0xc')]['updateRealtime']=function(){this[_0x047d('0xf')]=0x0;this[_0x047d('0x10')]=0x0;for(var _0x1f50ba=0x0;_0x1f50ba<this[_0x047d('0x8')]['length'];_0x1f50ba+=0x1){if(this['Agents'][_0x1f50ba][_0x047d('0x11')]){this[_0x047d('0xf')]+=0x1;}if(this[_0x047d('0x8')][_0x1f50ba][_0x047d('0x12')]){this[_0x047d('0x10')]+=0x1;}}this['available']=this[_0x047d('0xf')]-this[_0x047d('0x10')];this[_0x047d('0x13')]=this[_0x047d('0x13')]>=0x0?this[_0x047d('0x13')]:0x0;var _0x34aef9={'id':this['id'],'available':this[_0x047d('0x13')],'loggedIn':this['loggedIn'],'name':this[_0x047d('0x6')],'paused':this[_0x047d('0x10')],'waiting':this['waiting']};var _0x515fea=md5(JSON[_0x047d('0x14')](_0x34aef9));if(this[_0x047d('0x1')]!==_0x515fea){this[_0x047d('0x1')]=_0x515fea;io['to'](util[_0x047d('0x15')]('mail:queue:%s',_0x34aef9[_0x047d('0x6')]))[_0x047d('0x16')](_0x047d('0x17'),_0x34aef9);}};module['exports']=MailQueue;
\ No newline at end of file
+var _0xad47=['Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','loggedIn','length','online','mailPause','paused','available','stringify','format','emit','mail_queue:save','exports','lodash','ioredis','redis','localhost','socket.io-emitter','name','timeout','strategy'];(function(_0x6131cd,_0x4c26a1){var _0x47e916=function(_0x1f2bce){while(--_0x1f2bce){_0x6131cd['push'](_0x6131cd['shift']());}};_0x47e916(++_0x4c26a1);}(_0xad47,0x7f));var _0x7ad4=function(_0x3718b7,_0x2da677){_0x3718b7=_0x3718b7-0x0;var _0xf8c91e=_0xad47[_0x3718b7];return _0xf8c91e;};'use strict';var _=require(_0x7ad4('0x0'));var md5=require('md5');var util=require('util');var Redis=require(_0x7ad4('0x1'));var config=require('../../../config/environment');config['redis']=_['defaults'](config[_0x7ad4('0x2')],{'host':_0x7ad4('0x3'),'port':0x18eb});var io=require(_0x7ad4('0x4'))(new Redis(config['redis']));function MailQueue(_0x25130e){this['id']=_0x25130e['id']||0x0;this['name']=_0x25130e[_0x7ad4('0x5')]||'';this[_0x7ad4('0x6')]=_0x25130e[_0x7ad4('0x6')]||0xa;this[_0x7ad4('0x7')]=_0x25130e[_0x7ad4('0x7')]||'beepall';this['Agents']=_0x25130e[_0x7ad4('0x8')];this[_0x7ad4('0x9')]={};this[_0x7ad4('0xa')]=0x0;this[_0x7ad4('0xb')]='';this[_0x7ad4('0xc')]();this[_0x7ad4('0xd')]();}MailQueue[_0x7ad4('0xe')][_0x7ad4('0xc')]=function(){var _0x3711c9=this[_0x7ad4('0x9')][_0x7ad4('0xf')];this[_0x7ad4('0x9')]=_['map'](this[_0x7ad4('0x8')],'id');this[_0x7ad4('0x9')][_0x7ad4('0xf')]=_0x3711c9;};MailQueue['prototype']['updateRealtime']=function(){this[_0x7ad4('0x10')]=0x0;this['paused']=0x0;for(var _0x1dab69=0x0;_0x1dab69<this['Agents'][_0x7ad4('0x11')];_0x1dab69+=0x1){if(this['Agents'][_0x1dab69][_0x7ad4('0x12')]){this[_0x7ad4('0x10')]+=0x1;}if(this[_0x7ad4('0x8')][_0x1dab69][_0x7ad4('0x13')]){this[_0x7ad4('0x14')]+=0x1;}}this['available']=this[_0x7ad4('0x10')]-this['paused'];this[_0x7ad4('0x15')]=this[_0x7ad4('0x15')]>=0x0?this[_0x7ad4('0x15')]:0x0;var _0x2648c3={'id':this['id'],'available':this['available'],'loggedIn':this[_0x7ad4('0x10')],'name':this[_0x7ad4('0x5')],'paused':this['paused'],'waiting':this['waiting']};var _0x6e9811=md5(JSON[_0x7ad4('0x16')](_0x2648c3));if(this[_0x7ad4('0xb')]!==_0x6e9811){this[_0x7ad4('0xb')]=_0x6e9811;io['to'](util[_0x7ad4('0x17')]('mail:queue:%s',_0x2648c3[_0x7ad4('0x5')]))[_0x7ad4('0x18')](_0x7ad4('0x19'),_0x2648c3);}};module[_0x7ad4('0x1a')]=MailQueue;
\ No newline at end of file
index 063a57c..3c8d8cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x5a3249,_0x47dece){var _0x4e1d83=function(_0x359dc3){while(--_0x359dc3){_0x5a3249['push'](_0x5a3249['shift']());}};_0x4e1d83(++_0x47dece);}(_0x5fc3,0xa8));var _0x35fc=function(_0x1d3577,_0x17a32e){_0x1d3577=_0x1d3577-0x0;var _0x277d9a=_0x5fc3[_0x1d3577];return _0x277d9a;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
+var _0x814b=['prototype','map','_rr','loggedIn','paused','length','online','openchannelPause','available','format','openchannel_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime'];(function(_0x1e226e,_0x12f949){var _0x5c5db2=function(_0x5f1e07){while(--_0x5f1e07){_0x1e226e['push'](_0x1e226e['shift']());}};_0x5c5db2(++_0x12f949);}(_0x814b,0x1a2));var _0xb814=function(_0x11b4fb,_0x10c784){_0x11b4fb=_0x11b4fb-0x0;var _0x56cbb5=_0x814b[_0x11b4fb];return _0x56cbb5;};'use strict';var _=require(_0xb814('0x0'));var md5=require(_0xb814('0x1'));var util=require(_0xb814('0x2'));var Redis=require(_0xb814('0x3'));var config=require(_0xb814('0x4'));config[_0xb814('0x5')]=_['defaults'](config[_0xb814('0x5')],{'host':_0xb814('0x6'),'port':0x18eb});var io=require(_0xb814('0x7'))(new Redis(config[_0xb814('0x5')]));function OpenchannelQueue(_0x44931c){this['id']=_0x44931c['id']||0x0;this[_0xb814('0x8')]=_0x44931c['name']||'';this[_0xb814('0x9')]=_0x44931c[_0xb814('0x9')]||0xa;this['strategy']=_0x44931c[_0xb814('0xa')]||_0xb814('0xb');this[_0xb814('0xc')]=_0x44931c[_0xb814('0xc')];this[_0xb814('0xd')]={};this[_0xb814('0xe')]=0x0;this[_0xb814('0x1')]='';this[_0xb814('0xf')]();this[_0xb814('0x10')]();}OpenchannelQueue[_0xb814('0x11')][_0xb814('0xf')]=function(){var _0x4b5f14=this[_0xb814('0xd')]['_rr'];this[_0xb814('0xd')]=_[_0xb814('0x12')](this[_0xb814('0xc')],'id');this[_0xb814('0xd')][_0xb814('0x13')]=_0x4b5f14;};OpenchannelQueue[_0xb814('0x11')][_0xb814('0x10')]=function(){this[_0xb814('0x14')]=0x0;this[_0xb814('0x15')]=0x0;for(var _0x2ab627=0x0;_0x2ab627<this[_0xb814('0xc')][_0xb814('0x16')];_0x2ab627+=0x1){if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x17')]){this[_0xb814('0x14')]+=0x1;}if(this[_0xb814('0xc')][_0x2ab627][_0xb814('0x18')]){this[_0xb814('0x15')]+=0x1;}}this[_0xb814('0x19')]=this[_0xb814('0x14')]-this[_0xb814('0x15')];this['available']=this[_0xb814('0x19')]>=0x0?this['available']:0x0;var _0x270598={'id':this['id'],'available':this[_0xb814('0x19')],'loggedIn':this['loggedIn'],'name':this['name'],'paused':this['paused'],'waiting':this[_0xb814('0xe')]};var _0x4d5276=md5(JSON['stringify'](_0x270598));if(this[_0xb814('0x1')]!==_0x4d5276){this[_0xb814('0x1')]=_0x4d5276;io['to'](util[_0xb814('0x1a')]('openchannel:queue:%s',_0x270598[_0xb814('0x8')]))['emit'](_0xb814('0x1b'),_0x270598);}};module[_0xb814('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index c8012f9..5b4313f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc831=['ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','map','_rr','loggedIn','length','online','smsPause','paused','available','stringify','format','emit','md5','util'];(function(_0x532112,_0x37d94b){var _0x23e5fb=function(_0x690ac8){while(--_0x690ac8){_0x532112['push'](_0x532112['shift']());}};_0x23e5fb(++_0x37d94b);}(_0xc831,0x103));var _0x1c83=function(_0x361076,_0x41100a){_0x361076=_0x361076-0x0;var _0x3ebf94=_0xc831[_0x361076];return _0x3ebf94;};'use strict';var _=require('lodash');var md5=require(_0x1c83('0x0'));var util=require(_0x1c83('0x1'));var Redis=require(_0x1c83('0x2'));var config=require(_0x1c83('0x3'));config[_0x1c83('0x4')]=_[_0x1c83('0x5')](config[_0x1c83('0x4')],{'host':_0x1c83('0x6'),'port':0x18eb});var io=require(_0x1c83('0x7'))(new Redis(config[_0x1c83('0x4')]));function SmsQueue(_0x4fb4c3){this['id']=_0x4fb4c3['id']||0x0;this['name']=_0x4fb4c3[_0x1c83('0x8')]||'';this['timeout']=_0x4fb4c3[_0x1c83('0x9')]||0xa;this[_0x1c83('0xa')]=_0x4fb4c3[_0x1c83('0xa')]||_0x1c83('0xb');this[_0x1c83('0xc')]=_0x4fb4c3['Agents'];this[_0x1c83('0xd')]={};this[_0x1c83('0xe')]=0x0;this['md5']='';this['updateRouting']();this[_0x1c83('0xf')]();}SmsQueue[_0x1c83('0x10')][_0x1c83('0x11')]=function(){var _0x5db682=this[_0x1c83('0xd')]['_rr'];this['mapAgentsId']=_[_0x1c83('0x12')](this[_0x1c83('0xc')],'id');this[_0x1c83('0xd')][_0x1c83('0x13')]=_0x5db682;};SmsQueue[_0x1c83('0x10')][_0x1c83('0xf')]=function(){this[_0x1c83('0x14')]=0x0;this['paused']=0x0;for(var _0x43f74e=0x0;_0x43f74e<this[_0x1c83('0xc')][_0x1c83('0x15')];_0x43f74e+=0x1){if(this[_0x1c83('0xc')][_0x43f74e][_0x1c83('0x16')]){this['loggedIn']+=0x1;}if(this[_0x1c83('0xc')][_0x43f74e][_0x1c83('0x17')]){this[_0x1c83('0x18')]+=0x1;}}this[_0x1c83('0x19')]=this['loggedIn']-this[_0x1c83('0x18')];this['available']=this['available']>=0x0?this[_0x1c83('0x19')]:0x0;var _0x1d6027={'id':this['id'],'available':this[_0x1c83('0x19')],'loggedIn':this[_0x1c83('0x14')],'name':this['name'],'paused':this[_0x1c83('0x18')],'waiting':this['waiting']};var _0x2d387d=md5(JSON[_0x1c83('0x1a')](_0x1d6027));if(this['md5']!==_0x2d387d){this[_0x1c83('0x0')]=_0x2d387d;io['to'](util[_0x1c83('0x1b')]('sms:queue:%s',_0x1d6027['name']))[_0x1c83('0x1c')]('sms_queue:save',_0x1d6027);}};module['exports']=SmsQueue;
\ No newline at end of file
+var _0x55e0=['waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','paused','length','loggedIn','smsPause','available','name','format','sms:queue:%s','emit','exports','lodash','md5','util','ioredis','defaults','redis','localhost','socket.io-emitter','timeout','strategy','beepall','Agents'];(function(_0x333c10,_0x519ae7){var _0x592378=function(_0x2e1a13){while(--_0x2e1a13){_0x333c10['push'](_0x333c10['shift']());}};_0x592378(++_0x519ae7);}(_0x55e0,0xdc));var _0x055e=function(_0x3a0f56,_0x12643a){_0x3a0f56=_0x3a0f56-0x0;var _0x313fe2=_0x55e0[_0x3a0f56];return _0x313fe2;};'use strict';var _=require(_0x055e('0x0'));var md5=require(_0x055e('0x1'));var util=require(_0x055e('0x2'));var Redis=require(_0x055e('0x3'));var config=require('../../../config/environment');config['redis']=_[_0x055e('0x4')](config[_0x055e('0x5')],{'host':_0x055e('0x6'),'port':0x18eb});var io=require(_0x055e('0x7'))(new Redis(config[_0x055e('0x5')]));function SmsQueue(_0x196394){this['id']=_0x196394['id']||0x0;this['name']=_0x196394['name']||'';this[_0x055e('0x8')]=_0x196394['timeout']||0xa;this[_0x055e('0x9')]=_0x196394[_0x055e('0x9')]||_0x055e('0xa');this[_0x055e('0xb')]=_0x196394[_0x055e('0xb')];this['mapAgentsId']={};this[_0x055e('0xc')]=0x0;this[_0x055e('0x1')]='';this[_0x055e('0xd')]();this[_0x055e('0xe')]();}SmsQueue[_0x055e('0xf')]['updateRouting']=function(){var _0x56c78a=this[_0x055e('0x10')]['_rr'];this[_0x055e('0x10')]=_[_0x055e('0x11')](this[_0x055e('0xb')],'id');this[_0x055e('0x10')][_0x055e('0x12')]=_0x56c78a;};SmsQueue[_0x055e('0xf')][_0x055e('0xe')]=function(){this['loggedIn']=0x0;this[_0x055e('0x13')]=0x0;for(var _0xb80d83=0x0;_0xb80d83<this[_0x055e('0xb')][_0x055e('0x14')];_0xb80d83+=0x1){if(this[_0x055e('0xb')][_0xb80d83]['online']){this[_0x055e('0x15')]+=0x1;}if(this[_0x055e('0xb')][_0xb80d83][_0x055e('0x16')]){this['paused']+=0x1;}}this[_0x055e('0x17')]=this[_0x055e('0x15')]-this[_0x055e('0x13')];this[_0x055e('0x17')]=this[_0x055e('0x17')]>=0x0?this['available']:0x0;var _0x36ef10={'id':this['id'],'available':this[_0x055e('0x17')],'loggedIn':this[_0x055e('0x15')],'name':this[_0x055e('0x18')],'paused':this['paused'],'waiting':this[_0x055e('0xc')]};var _0x3cdd68=md5(JSON['stringify'](_0x36ef10));if(this[_0x055e('0x1')]!==_0x3cdd68){this[_0x055e('0x1')]=_0x3cdd68;io['to'](util[_0x055e('0x19')](_0x055e('0x1a'),_0x36ef10[_0x055e('0x18')]))[_0x055e('0x1b')]('sms_queue:save',_0x36ef10);}};module[_0x055e('0x1c')]=SmsQueue;
\ No newline at end of file
index 717d70f..4f0e178 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9121=['stringify','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','md5','util','ioredis','../../../config/environment','defaults','redis','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRealtime','prototype','_rr','map','loggedIn','paused','whatsappPause','available'];(function(_0x2d3206,_0x434cf5){var _0x18702d=function(_0x4e0735){while(--_0x4e0735){_0x2d3206['push'](_0x2d3206['shift']());}};_0x18702d(++_0x434cf5);}(_0x9121,0x1a9));var _0x1912=function(_0x183261,_0xaad4a4){_0x183261=_0x183261-0x0;var _0x336016=_0x9121[_0x183261];return _0x336016;};'use strict';var _=require(_0x1912('0x0'));var md5=require(_0x1912('0x1'));var util=require(_0x1912('0x2'));var Redis=require(_0x1912('0x3'));var config=require(_0x1912('0x4'));config['redis']=_[_0x1912('0x5')](config[_0x1912('0x6')],{'host':_0x1912('0x7'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x1912('0x6')]));function WhatsappQueue(_0x10c621){this['id']=_0x10c621['id']||0x0;this[_0x1912('0x8')]=_0x10c621[_0x1912('0x8')]||'';this['timeout']=_0x10c621[_0x1912('0x9')]||0xa;this['strategy']=_0x10c621[_0x1912('0xa')]||_0x1912('0xb');this[_0x1912('0xc')]=_0x10c621[_0x1912('0xc')];this[_0x1912('0xd')]={};this[_0x1912('0xe')]=0x0;this[_0x1912('0x1')]='';this['updateRouting']();this[_0x1912('0xf')]();}WhatsappQueue[_0x1912('0x10')]['updateRouting']=function(){var _0x4cbd5f=this[_0x1912('0xd')][_0x1912('0x11')];this[_0x1912('0xd')]=_[_0x1912('0x12')](this[_0x1912('0xc')],'id');this[_0x1912('0xd')][_0x1912('0x11')]=_0x4cbd5f;};WhatsappQueue['prototype'][_0x1912('0xf')]=function(){this[_0x1912('0x13')]=0x0;this[_0x1912('0x14')]=0x0;for(var _0xcf905e=0x0;_0xcf905e<this[_0x1912('0xc')]['length'];_0xcf905e+=0x1){if(this['Agents'][_0xcf905e]['online']){this['loggedIn']+=0x1;}if(this[_0x1912('0xc')][_0xcf905e][_0x1912('0x15')]){this[_0x1912('0x14')]+=0x1;}}this['available']=this[_0x1912('0x13')]-this[_0x1912('0x14')];this[_0x1912('0x16')]=this['available']>=0x0?this[_0x1912('0x16')]:0x0;var _0xbe3b7={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0x1912('0x8')],'paused':this[_0x1912('0x14')],'waiting':this['waiting']};var _0x4deb87=md5(JSON[_0x1912('0x17')](_0xbe3b7));if(this[_0x1912('0x1')]!==_0x4deb87){this[_0x1912('0x1')]=_0x4deb87;io['to'](util['format'](_0x1912('0x18'),_0xbe3b7[_0x1912('0x8')]))[_0x1912('0x19')](_0x1912('0x1a'),_0xbe3b7);}};module[_0x1912('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x8b93=['timeout','strategy','beepall','mapAgentsId','waiting','updateRealtime','prototype','updateRouting','Agents','_rr','loggedIn','length','online','paused','available','format','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','md5','util','../../../config/environment','defaults','redis','localhost','socket.io-emitter','name'];(function(_0x4d6543,_0x10b1e2){var _0xec5191=function(_0x2fd1e9){while(--_0x2fd1e9){_0x4d6543['push'](_0x4d6543['shift']());}};_0xec5191(++_0x10b1e2);}(_0x8b93,0xa0));var _0x38b9=function(_0x32dd98,_0x2bf6f1){_0x32dd98=_0x32dd98-0x0;var _0x22a2f1=_0x8b93[_0x32dd98];return _0x22a2f1;};'use strict';var _=require('lodash');var md5=require(_0x38b9('0x0'));var util=require(_0x38b9('0x1'));var Redis=require('ioredis');var config=require(_0x38b9('0x2'));config['redis']=_[_0x38b9('0x3')](config[_0x38b9('0x4')],{'host':_0x38b9('0x5'),'port':0x18eb});var io=require(_0x38b9('0x6'))(new Redis(config['redis']));function WhatsappQueue(_0x3f4808){this['id']=_0x3f4808['id']||0x0;this[_0x38b9('0x7')]=_0x3f4808['name']||'';this[_0x38b9('0x8')]=_0x3f4808[_0x38b9('0x8')]||0xa;this[_0x38b9('0x9')]=_0x3f4808['strategy']||_0x38b9('0xa');this['Agents']=_0x3f4808['Agents'];this[_0x38b9('0xb')]={};this[_0x38b9('0xc')]=0x0;this[_0x38b9('0x0')]='';this['updateRouting']();this[_0x38b9('0xd')]();}WhatsappQueue[_0x38b9('0xe')][_0x38b9('0xf')]=function(){var _0x37bb83=this[_0x38b9('0xb')]['_rr'];this[_0x38b9('0xb')]=_['map'](this[_0x38b9('0x10')],'id');this[_0x38b9('0xb')][_0x38b9('0x11')]=_0x37bb83;};WhatsappQueue['prototype'][_0x38b9('0xd')]=function(){this[_0x38b9('0x12')]=0x0;this['paused']=0x0;for(var _0x914593=0x0;_0x914593<this[_0x38b9('0x10')][_0x38b9('0x13')];_0x914593+=0x1){if(this['Agents'][_0x914593][_0x38b9('0x14')]){this[_0x38b9('0x12')]+=0x1;}if(this['Agents'][_0x914593]['whatsappPause']){this[_0x38b9('0x15')]+=0x1;}}this[_0x38b9('0x16')]=this[_0x38b9('0x12')]-this['paused'];this[_0x38b9('0x16')]=this['available']>=0x0?this[_0x38b9('0x16')]:0x0;var _0x4ef08={'id':this['id'],'available':this['available'],'loggedIn':this[_0x38b9('0x12')],'name':this[_0x38b9('0x7')],'paused':this[_0x38b9('0x15')],'waiting':this[_0x38b9('0xc')]};var _0x10ceeb=md5(JSON['stringify'](_0x4ef08));if(this[_0x38b9('0x0')]!==_0x10ceeb){this[_0x38b9('0x0')]=_0x10ceeb;io['to'](util[_0x38b9('0x17')](_0x38b9('0x18'),_0x4ef08[_0x38b9('0x7')]))[_0x38b9('0x19')](_0x38b9('0x1a'),_0x4ef08);}};module[_0x38b9('0x1b')]=WhatsappQueue;
\ No newline at end of file
index 478d34a..a14a6e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
+var _0xa9e0=['isUndefined','initIntervals','updateRealtime','updateRouting','initSmsQueues','smsQueues','initMailQueues','mailQueues','initWhatsappQueues','whatsappQueues','exports','bluebird','util','lodash','../model/interval','../model/chatQueue','../model/smsQueue','../model/mailQueue','../model/faxQueue','../model/whatsappQueue','intervals','openchannelQueues','chatQueues','faxQueues','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','hasOwnProperty','prototype','mergeFromDatabase','initAgents','agents','length'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2763f2,_0x416af8){_0x2763f2=_0x2763f2-0x0;var _0x3ef471=_0xa9e0[_0x2763f2];return _0x3ef471;};'use strict';var BPromise=require(_0x0a9e('0x0'));var util=require(_0x0a9e('0x1'));var _=require(_0x0a9e('0x2'));var moment=require('moment');var Agent=require('../model/agent');var Interval=require(_0x0a9e('0x3'));var OpenchannelQueue=require('../model/openchannelQueue');var ChatQueue=require(_0x0a9e('0x4'));var SmsQueue=require(_0x0a9e('0x5'));var MailQueue=require(_0x0a9e('0x6'));var FaxQueue=require(_0x0a9e('0x7'));var WhatsappQueue=require(_0x0a9e('0x8'));var Realtime=function(){this['agents']={};this[_0x0a9e('0x9')]={};this[_0x0a9e('0xa')]={};this[_0x0a9e('0xb')]={};this['smsQueues']={};this['mailQueues']={};this[_0x0a9e('0xc')]={};this['whatsappQueues']={};this['chatQueuesWaitingInteractions']={};this[_0x0a9e('0xd')]={};this[_0x0a9e('0xe')]={};this[_0x0a9e('0xf')]={};this[_0x0a9e('0x10')]={};this[_0x0a9e('0x11')]={};};function freeIsNotKey(_0xbd1168,_0x4a4c56,_0x50dfb2){var _0x527cdd=_['mapKeys'](_0xbd1168,function(_0x273d4d,_0x36471c){return _0x273d4d[_0x50dfb2];});for(var _0xd5b662 in _0x4a4c56){if(_0x4a4c56[_0x0a9e('0x12')](_0xd5b662)){if(!_0x527cdd[_0xd5b662]){delete _0x4a4c56[_0xd5b662];}}}}Realtime[_0x0a9e('0x13')][_0x0a9e('0x14')]=function(_0x5db4b0,_0x4283ce){for(var _0x239b12 in _0x4283ce){if(_0x5db4b0[_0x0a9e('0x12')](_0x239b12)){_0x5db4b0[_0x239b12]=_0x4283ce[_0x239b12];}}};Realtime[_0x0a9e('0x13')][_0x0a9e('0x15')]=function(){var _0x4d5611=this;return function(_0x52a03d){if(_0x52a03d){freeIsNotKey(_0x52a03d,_0x4d5611[_0x0a9e('0x16')],'id');for(var _0x5d0880=0x0,_0x1985b6={},_0x519dfd={};_0x5d0880<_0x52a03d[_0x0a9e('0x17')];_0x5d0880+=0x1){_0x1985b6=_0x52a03d[_0x5d0880];if(_[_0x0a9e('0x18')](_0x4d5611['agents'][_0x1985b6['id']])){_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']]=new Agent(_0x1985b6);}else{_0x4d5611['mergeFromDatabase'](_0x4d5611[_0x0a9e('0x16')][_0x1985b6['id']],_0x1985b6);}}}return _0x4d5611[_0x0a9e('0x16')];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x19')]=function(){var _0x31b1ca=this;return function(_0x2eb11f){if(_0x2eb11f){freeIsNotKey(_0x2eb11f,_0x31b1ca[_0x0a9e('0x9')],'id');for(var _0x20559e=0x0,_0x1314ae={},_0x112016={};_0x20559e<_0x2eb11f[_0x0a9e('0x17')];_0x20559e+=0x1){_0x1314ae=_0x2eb11f[_0x20559e];if(_[_0x0a9e('0x18')](_0x31b1ca['intervals'][_0x1314ae['id']])){_0x31b1ca[_0x0a9e('0x9')][_0x1314ae['id']]=new Interval(_0x1314ae);}else{_0x31b1ca[_0x0a9e('0x14')](_0x31b1ca['intervals'][_0x1314ae['id']],_0x1314ae);}}}return _0x31b1ca[_0x0a9e('0x9')];};};Realtime['prototype']['initOpenchannelQueues']=function(){var _0x3a02e1=this;return function(_0x432e56){if(_0x432e56){freeIsNotKey(_0x432e56,_0x3a02e1[_0x0a9e('0xa')],'id');for(var _0x30bae6=0x0,_0x4abc77={},_0xfb6e48={};_0x30bae6<_0x432e56[_0x0a9e('0x17')];_0x30bae6+=0x1){_0x4abc77=_0x432e56[_0x30bae6];if(_[_0x0a9e('0x18')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']])){_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']]=new OpenchannelQueue(_0x4abc77);}else{_0x3a02e1[_0x0a9e('0x14')](_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']],_0x4abc77);}_0x3a02e1['openchannelQueues'][_0x4abc77['id']]['updateRouting']();_0x3a02e1[_0x0a9e('0xa')][_0x4abc77['id']][_0x0a9e('0x1a')]();}}return _0x3a02e1[_0x0a9e('0xa')];};};Realtime[_0x0a9e('0x13')]['initChatQueues']=function(){var _0x384319=this;return function(_0x479bc4){if(_0x479bc4){freeIsNotKey(_0x479bc4,_0x384319[_0x0a9e('0xb')],'id');for(var _0x5bfb33=0x0,_0x1dc186={},_0x34dc65={};_0x5bfb33<_0x479bc4[_0x0a9e('0x17')];_0x5bfb33+=0x1){_0x1dc186=_0x479bc4[_0x5bfb33];if(_[_0x0a9e('0x18')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']])){_0x384319[_0x0a9e('0xb')][_0x1dc186['id']]=new ChatQueue(_0x1dc186);}else{_0x384319[_0x0a9e('0x14')](_0x384319[_0x0a9e('0xb')][_0x1dc186['id']],_0x1dc186);}_0x384319['chatQueues'][_0x1dc186['id']][_0x0a9e('0x1b')]();_0x384319[_0x0a9e('0xb')][_0x1dc186['id']][_0x0a9e('0x1a')]();}}return _0x384319[_0x0a9e('0xb')];};};Realtime['prototype'][_0x0a9e('0x1c')]=function(){var _0x40e7a3=this;return function(_0x1843b2){if(_0x1843b2){freeIsNotKey(_0x1843b2,_0x40e7a3[_0x0a9e('0x1d')],'id');for(var _0x58b06f=0x0,_0x563b45={},_0x296f41={};_0x58b06f<_0x1843b2[_0x0a9e('0x17')];_0x58b06f+=0x1){_0x563b45=_0x1843b2[_0x58b06f];if(_[_0x0a9e('0x18')](_0x40e7a3['smsQueues'][_0x563b45['id']])){_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']]=new SmsQueue(_0x563b45);}else{_0x40e7a3['mergeFromDatabase'](_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']],_0x563b45);}_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1b')]();_0x40e7a3[_0x0a9e('0x1d')][_0x563b45['id']][_0x0a9e('0x1a')]();}}return _0x40e7a3['smsQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x1e')]=function(){var _0x40cb85=this;return function(_0x2da5c0){if(_0x2da5c0){freeIsNotKey(_0x2da5c0,_0x40cb85[_0x0a9e('0x1f')],'id');for(var _0x409319=0x0,_0x332d35={},_0x39e565={};_0x409319<_0x2da5c0['length'];_0x409319+=0x1){_0x332d35=_0x2da5c0[_0x409319];if(_[_0x0a9e('0x18')](_0x40cb85['mailQueues'][_0x332d35['id']])){_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]=new MailQueue(_0x332d35);}else{_0x40cb85[_0x0a9e('0x14')](_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']],_0x332d35);}_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']]['updateRouting']();_0x40cb85[_0x0a9e('0x1f')][_0x332d35['id']][_0x0a9e('0x1a')]();}}return _0x40cb85[_0x0a9e('0x1f')];};};Realtime[_0x0a9e('0x13')]['initFaxQueues']=function(){var _0x54135e=this;return function(_0x1e8694){if(_0x1e8694){freeIsNotKey(_0x1e8694,_0x54135e['faxQueues'],'id');for(var _0x24936a=0x0,_0x3d9717={},_0x381c37={};_0x24936a<_0x1e8694[_0x0a9e('0x17')];_0x24936a+=0x1){_0x3d9717=_0x1e8694[_0x24936a];if(_['isUndefined'](_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']])){_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]=new FaxQueue(_0x3d9717);}else{_0x54135e[_0x0a9e('0x14')](_0x54135e['faxQueues'][_0x3d9717['id']],_0x3d9717);}_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']][_0x0a9e('0x1b')]();_0x54135e[_0x0a9e('0xc')][_0x3d9717['id']]['updateRealtime']();}}return _0x54135e['faxQueues'];};};Realtime[_0x0a9e('0x13')][_0x0a9e('0x20')]=function(){var _0x5adda1=this;return function(_0x2b814e){if(_0x2b814e){freeIsNotKey(_0x2b814e,_0x5adda1[_0x0a9e('0x21')],'id');for(var _0x2e1b3a=0x0,_0x148f55={},_0x4b38d9={};_0x2e1b3a<_0x2b814e['length'];_0x2e1b3a+=0x1){_0x148f55=_0x2b814e[_0x2e1b3a];if(_[_0x0a9e('0x18')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']])){_0x5adda1['whatsappQueues'][_0x148f55['id']]=new WhatsappQueue(_0x148f55);}else{_0x5adda1[_0x0a9e('0x14')](_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']],_0x148f55);}_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']]['updateRouting']();_0x5adda1[_0x0a9e('0x21')][_0x148f55['id']][_0x0a9e('0x1a')]();}}return _0x5adda1[_0x0a9e('0x21')];};};module[_0x0a9e('0x22')]=Realtime;
\ No newline at end of file
index 94d9a20..442920a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c0d=['Request','UpdateChatInteraction','addTags','../client','update'];(function(_0x101750,_0x470859){var _0x25bd39=function(_0x240c72){while(--_0x240c72){_0x101750['push'](_0x101750['shift']());}};_0x25bd39(++_0x470859);}(_0x2c0d,0x80));var _0xd2c0=function(_0x5f5474,_0x5aa3c1){_0x5f5474=_0x5f5474-0x0;var _0x588fc1=_0x2c0d[_0x5f5474];return _0x588fc1;};'use strict';var client=require(_0xd2c0('0x0'));exports[_0xd2c0('0x1')]=function(_0x525ba5,_0x15249a){return client[_0xd2c0('0x2')](_0xd2c0('0x3'),{'body':_0x15249a,'options':{'where':{'id':_0x525ba5}},'log':'updateChatInteraction'});};exports[_0xd2c0('0x4')]=function(_0xdc2659,_0x50ab7a){return client['Request']('AddTagsToChatInteraction',{'body':_0x50ab7a,'options':{'where':{'id':_0xdc2659}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
+var _0x17f2=['Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','../client','update'];(function(_0x231e28,_0x3386a0){var _0x42d5f5=function(_0x13247f){while(--_0x13247f){_0x231e28['push'](_0x231e28['shift']());}};_0x42d5f5(++_0x3386a0);}(_0x17f2,0xf3));var _0x217f=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x17f2[_0x543084];return _0x306a57;};'use strict';var client=require(_0x217f('0x0'));exports[_0x217f('0x1')]=function(_0x10e0d3,_0x43094c){return client[_0x217f('0x2')](_0x217f('0x3'),{'body':_0x43094c,'options':{'where':{'id':_0x10e0d3}},'log':_0x217f('0x4')});};exports[_0x217f('0x5')]=function(_0x5600e9,_0x254c68){return client[_0x217f('0x2')](_0x217f('0x6'),{'body':_0x254c68,'options':{'where':{'id':_0x5600e9}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index c9d9c14..10d573c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ece=['Request','createChatMessage','../client','create'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x5ece,0x146));var _0xe5ec=function(_0x1de06c,_0x30369f){_0x1de06c=_0x1de06c-0x0;var _0x62a916=_0x5ece[_0x1de06c];return _0x62a916;};'use strict';var client=require(_0xe5ec('0x0'));exports[_0xe5ec('0x1')]=function(_0x4d9369){return client[_0xe5ec('0x2')]('CreateChatMessage',{'body':_0x4d9369,'log':_0xe5ec('0x3')});};
\ No newline at end of file
+var _0x7596=['Request'];(function(_0x3e4285,_0x83a4f0){var _0xce09e7=function(_0x2f13ee){while(--_0x2f13ee){_0x3e4285['push'](_0x3e4285['shift']());}};_0xce09e7(++_0x83a4f0);}(_0x7596,0x7c));var _0x6759=function(_0xe39824,_0xbdf61f){_0xe39824=_0xe39824-0x0;var _0x4bc31e=_0x7596[_0xe39824];return _0x4bc31e;};'use strict';var client=require('../client');exports['create']=function(_0x36f8d6){return client[_0x6759('0x0')]('CreateChatMessage',{'body':_0x36f8d6,'log':'createChatMessage'});};
\ No newline at end of file
index edd4ff2..838abc7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4dc=['online','chatPause','../client','getChatQueues','name','timeout','strategy','User','Agents'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xa4dc,0x16a));var _0xca4d=function(_0x346737,_0x3e6081){_0x346737=_0x346737-0x0;var _0x1ade2e=_0xa4dc[_0x346737];return _0x1ade2e;};'use strict';var client=require(_0xca4d('0x0'));exports[_0xca4d('0x1')]=function(){return function(){return client['Request']('GetChatQueue',{'options':{'raw':![],'attributes':['id',_0xca4d('0x2'),_0xca4d('0x3'),_0xca4d('0x4')],'include':[{'model':_0xca4d('0x5'),'as':_0xca4d('0x6'),'attributes':['id','name',_0xca4d('0x7'),_0xca4d('0x8')]}]},'log':_0xca4d('0x1')});};};
\ No newline at end of file
+var _0x47d6=['chatPause','../client','getChatQueues','Request','timeout','strategy','User','name','online'];(function(_0x4c2b4e,_0x873045){var _0x4c9344=function(_0x5e30cd){while(--_0x5e30cd){_0x4c2b4e['push'](_0x4c2b4e['shift']());}};_0x4c9344(++_0x873045);}(_0x47d6,0x1de));var _0x647d=function(_0x57200d,_0xeb7dea){_0x57200d=_0x57200d-0x0;var _0x2cfd66=_0x47d6[_0x57200d];return _0x2cfd66;};'use strict';var client=require(_0x647d('0x0'));exports[_0x647d('0x1')]=function(){return function(){return client[_0x647d('0x2')]('GetChatQueue',{'options':{'raw':![],'attributes':['id','name',_0x647d('0x3'),_0x647d('0x4')],'include':[{'model':_0x647d('0x5'),'as':'Agents','attributes':['id',_0x647d('0x6'),_0x647d('0x7'),_0x647d('0x8')]}]},'log':'getChatQueues'});};};
\ No newline at end of file
index ee94f61..984a399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0bc=['create','CreateChatQueueReport','update','Request','UpdateChatQueueReport','DESC'];(function(_0x102e8e,_0xc5472e){var _0x27d3f1=function(_0x57e05a){while(--_0x57e05a){_0x102e8e['push'](_0x102e8e['shift']());}};_0x27d3f1(++_0xc5472e);}(_0xa0bc,0x1b6));var _0xca0b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa0bc[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports[_0xca0b('0x0')]=function(_0x19838b){return client['Request'](_0xca0b('0x1'),{'body':_0x19838b,'log':_0xca0b('0x1')});};exports[_0xca0b('0x2')]=function(_0x68ff4,_0x2f7b56){return client[_0xca0b('0x3')](_0xca0b('0x4'),{'body':_0x2f7b56,'options':{'where':{'uniqueid':_0x68ff4},'order':[['id',_0xca0b('0x5')]],'limit':0x1},'log':_0xca0b('0x4')});};
\ No newline at end of file
+var _0x32c0=['DESC','UpdateChatQueueReport','../client','create','Request','CreateChatQueueReport','update'];(function(_0x57cbfb,_0x2de760){var _0x4cb933=function(_0x33cf6a){while(--_0x33cf6a){_0x57cbfb['push'](_0x57cbfb['shift']());}};_0x4cb933(++_0x2de760);}(_0x32c0,0x1f3));var _0x032c=function(_0x4cb5a2,_0xf2ea9c){_0x4cb5a2=_0x4cb5a2-0x0;var _0xd91cbf=_0x32c0[_0x4cb5a2];return _0xd91cbf;};'use strict';var client=require(_0x032c('0x0'));exports[_0x032c('0x1')]=function(_0x5d9184){return client[_0x032c('0x2')](_0x032c('0x3'),{'body':_0x5d9184,'log':'CreateChatQueueReport'});};exports[_0x032c('0x4')]=function(_0x2bc539,_0x283b77){return client[_0x032c('0x2')]('UpdateChatQueueReport',{'body':_0x283b77,'options':{'where':{'uniqueid':_0x2bc539},'order':[['id',_0x032c('0x5')]],'limit':0x1},'log':_0x032c('0x6')});};
\ No newline at end of file
index 241531b..2f98b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x2ca90c,_0x3ae6ff){var _0x59fda3=function(_0x2c634d){while(--_0x2c634d){_0x2ca90c['push'](_0x2ca90c['shift']());}};_0x59fda3(++_0x3ae6ff);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x432bd1,_0x11f28f){var _0x31827d=function(_0x43b51d){while(--_0x43b51d){_0x432bd1['push'](_0x432bd1['shift']());}};_0x31827d(++_0x11f28f);}(_0x9957,0x93));var _0x7995=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x9957[_0x618414];return _0x21c19a;};'use strict';var client=require(_0x7995('0x0'));exports[_0x7995('0x1')]=function(_0x2722a3,_0x10a05d){return client['Request'](_0x7995('0x2'),{'body':_0x10a05d,'options':{'where':{'id':_0x2722a3}},'log':_0x7995('0x3')});};exports[_0x7995('0x4')]=function(_0x462a03,_0x576d89){return client[_0x7995('0x5')](_0x7995('0x6'),{'body':_0x576d89,'options':{'where':{'id':_0x462a03}},'log':_0x7995('0x7')});};
\ No newline at end of file
index f6b7198..c0998e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0179=['Request','CreateFaxMessage','createFaxMessage','../client','create'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x0179,0x102));var _0x9017=function(_0x38ced4,_0x24263f){_0x38ced4=_0x38ced4-0x0;var _0x547c07=_0x0179[_0x38ced4];return _0x547c07;};'use strict';var client=require(_0x9017('0x0'));exports[_0x9017('0x1')]=function(_0xcb909b){return client[_0x9017('0x2')](_0x9017('0x3'),{'body':_0xcb909b,'log':_0x9017('0x4')});};
\ No newline at end of file
+var _0x1139=['../client','create','Request','CreateFaxMessage'];(function(_0x177b28,_0x47c819){var _0x3decf7=function(_0x2e9964){while(--_0x2e9964){_0x177b28['push'](_0x177b28['shift']());}};_0x3decf7(++_0x47c819);}(_0x1139,0xec));var _0x9113=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x1139[_0x42cae2];return _0x5f256f;};'use strict';var client=require(_0x9113('0x0'));exports[_0x9113('0x1')]=function(_0x3f0dba){return client[_0x9113('0x2')](_0x9113('0x3'),{'body':_0x3f0dba,'log':'createFaxMessage'});};
\ No newline at end of file
index 08353be..9494943 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd38b=['timeout','strategy','Agents','online','faxPause','getFaxQueues','Request','GetFaxQueue','name'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0xd38b,0x140));var _0xbd38=function(_0x4ac424,_0x554b5d){_0x4ac424=_0x4ac424-0x0;var _0xe1b890=_0xd38b[_0x4ac424];return _0xe1b890;};'use strict';var client=require('../client');exports[_0xbd38('0x0')]=function(){return function(){return client[_0xbd38('0x1')](_0xbd38('0x2'),{'options':{'raw':![],'attributes':['id',_0xbd38('0x3'),_0xbd38('0x4'),_0xbd38('0x5')],'include':[{'model':'User','as':_0xbd38('0x6'),'attributes':['id',_0xbd38('0x3'),_0xbd38('0x7'),_0xbd38('0x8')]}]},'log':_0xbd38('0x0')});};};
\ No newline at end of file
+var _0x0707=['name','timeout','strategy','User','Agents','online','../client','getFaxQueues','Request','GetFaxQueue'];(function(_0x51e347,_0x1b565a){var _0x49ab46=function(_0x5962cf){while(--_0x5962cf){_0x51e347['push'](_0x51e347['shift']());}};_0x49ab46(++_0x1b565a);}(_0x0707,0x10a));var _0x7070=function(_0x901d1f,_0x2d42f6){_0x901d1f=_0x901d1f-0x0;var _0x3c77d1=_0x0707[_0x901d1f];return _0x3c77d1;};'use strict';var client=require(_0x7070('0x0'));exports[_0x7070('0x1')]=function(){return function(){return client[_0x7070('0x2')](_0x7070('0x3'),{'options':{'raw':![],'attributes':['id',_0x7070('0x4'),_0x7070('0x5'),_0x7070('0x6')],'include':[{'model':_0x7070('0x7'),'as':_0x7070('0x8'),'attributes':['id',_0x7070('0x4'),_0x7070('0x9'),'faxPause']}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index 723f45b..99c8b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5315=['DESC','../client','create','Request','CreateFaxQueueReport','UpdateFaxQueueReport'];(function(_0x1c42de,_0x196793){var _0x44e1e2=function(_0x2bcbb2){while(--_0x2bcbb2){_0x1c42de['push'](_0x1c42de['shift']());}};_0x44e1e2(++_0x196793);}(_0x5315,0x1a5));var _0x5531=function(_0x48571b,_0x2d489a){_0x48571b=_0x48571b-0x0;var _0x1e0314=_0x5315[_0x48571b];return _0x1e0314;};'use strict';var client=require(_0x5531('0x0'));exports[_0x5531('0x1')]=function(_0x369b78){return client[_0x5531('0x2')](_0x5531('0x3'),{'body':_0x369b78,'log':_0x5531('0x3')});};exports['update']=function(_0x47117a,_0xba08d7){return client[_0x5531('0x2')](_0x5531('0x4'),{'body':_0xba08d7,'options':{'where':{'uniqueid':_0x47117a},'order':[['id',_0x5531('0x5')]],'limit':0x1},'log':_0x5531('0x4')});};
\ No newline at end of file
+var _0x2a81=['CreateFaxQueueReport','update','UpdateFaxQueueReport','DESC','../client','create','Request'];(function(_0x265aa2,_0x220072){var _0x447a3a=function(_0x1512cc){while(--_0x1512cc){_0x265aa2['push'](_0x265aa2['shift']());}};_0x447a3a(++_0x220072);}(_0x2a81,0x169));var _0x12a8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2a81[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x12a8('0x0'));exports[_0x12a8('0x1')]=function(_0x3bd1f5){return client[_0x12a8('0x2')](_0x12a8('0x3'),{'body':_0x3bd1f5,'log':_0x12a8('0x3')});};exports[_0x12a8('0x4')]=function(_0x416c3a,_0x43be76){return client[_0x12a8('0x2')](_0x12a8('0x5'),{'body':_0x43be76,'options':{'where':{'uniqueid':_0x416c3a},'order':[['id',_0x12a8('0x6')]],'limit':0x1},'log':_0x12a8('0x5')});};
\ No newline at end of file
index 52f6dce..810f31a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x937a=['Interval','Intervals','name','interval','../client','getIntervals'];(function(_0x159372,_0xd95a8a){var _0x493d16=function(_0x59c8a0){while(--_0x59c8a0){_0x159372['push'](_0x159372['shift']());}};_0x493d16(++_0xd95a8a);}(_0x937a,0x118));var _0xa937=function(_0x4aefb9,_0x55959c){_0x4aefb9=_0x4aefb9-0x0;var _0x3152dc=_0x937a[_0x4aefb9];return _0x3152dc;};'use strict';var client=require(_0xa937('0x0'));exports[_0xa937('0x1')]=function(){return function(){return client['Request']('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id','name'],'include':[{'model':_0xa937('0x2'),'as':_0xa937('0x3'),'attributes':['id',_0xa937('0x4'),_0xa937('0x5')]}]},'log':_0xa937('0x1')});};};
\ No newline at end of file
+var _0xec9c=['getIntervals','Request','name','Interval','Intervals','interval','../client'];(function(_0x43e568,_0x4e3bf3){var _0x83a277=function(_0xd77f4){while(--_0xd77f4){_0x43e568['push'](_0x43e568['shift']());}};_0x83a277(++_0x4e3bf3);}(_0xec9c,0x180));var _0xcec9=function(_0x57c794,_0x5b377b){_0x57c794=_0x57c794-0x0;var _0x2eeea3=_0xec9c[_0x57c794];return _0x2eeea3;};'use strict';var client=require(_0xcec9('0x0'));exports[_0xcec9('0x1')]=function(){return function(){return client[_0xcec9('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xcec9('0x3')],'include':[{'model':_0xcec9('0x4'),'as':_0xcec9('0x5'),'attributes':['id',_0xcec9('0x3'),_0xcec9('0x6')]}]},'log':_0xcec9('0x1')});};};
\ No newline at end of file
index 9fb0e84..e58c2bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa456=['AddTagsToMailInteraction','addTagsToChatInteraction','../client','update','UpdateMailInteraction','updateMailInteraction','addTags','Request'];(function(_0x49cb71,_0x2f0149){var _0x3a50fd=function(_0x48c304){while(--_0x48c304){_0x49cb71['push'](_0x49cb71['shift']());}};_0x3a50fd(++_0x2f0149);}(_0xa456,0x142));var _0x6a45=function(_0x725b8e,_0xc22b48){_0x725b8e=_0x725b8e-0x0;var _0x43ac45=_0xa456[_0x725b8e];return _0x43ac45;};'use strict';var client=require(_0x6a45('0x0'));exports[_0x6a45('0x1')]=function(_0x56dfe8,_0xd5464e){return client['Request'](_0x6a45('0x2'),{'body':_0xd5464e,'options':{'where':{'id':_0x56dfe8}},'log':_0x6a45('0x3')});};exports[_0x6a45('0x4')]=function(_0x500c72,_0x1f0701){return client[_0x6a45('0x5')](_0x6a45('0x6'),{'body':_0x1f0701,'options':{'where':{'id':_0x500c72}},'log':_0x6a45('0x7')});};
\ No newline at end of file
+var _0x4b17=['addTagsToChatInteraction','../client','Request','UpdateMailInteraction','addTags','AddTagsToMailInteraction'];(function(_0x364efa,_0x200d4f){var _0x2440fc=function(_0x50a844){while(--_0x50a844){_0x364efa['push'](_0x364efa['shift']());}};_0x2440fc(++_0x200d4f);}(_0x4b17,0x10f));var _0x74b1=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x4b17[_0x47aa64];return _0x549c7a;};'use strict';var client=require(_0x74b1('0x0'));exports['update']=function(_0xd6951,_0x5483a2){return client[_0x74b1('0x1')](_0x74b1('0x2'),{'body':_0x5483a2,'options':{'where':{'id':_0xd6951}},'log':'updateMailInteraction'});};exports[_0x74b1('0x3')]=function(_0x4f206f,_0x4fdea2){return client[_0x74b1('0x1')](_0x74b1('0x4'),{'body':_0x4fdea2,'options':{'where':{'id':_0x4f206f}},'log':_0x74b1('0x5')});};
\ No newline at end of file
index e135bb9..901a5c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97b3=['../client','create','Request','CreateMailMessage','createMailMessage'];(function(_0x33fcf7,_0x5aefaf){var _0x156556=function(_0xbacebe){while(--_0xbacebe){_0x33fcf7['push'](_0x33fcf7['shift']());}};_0x156556(++_0x5aefaf);}(_0x97b3,0x109));var _0x397b=function(_0x50eee7,_0x4ea8d6){_0x50eee7=_0x50eee7-0x0;var _0x1abe20=_0x97b3[_0x50eee7];return _0x1abe20;};'use strict';var client=require(_0x397b('0x0'));exports[_0x397b('0x1')]=function(_0x28c2df){return client[_0x397b('0x2')](_0x397b('0x3'),{'body':_0x28c2df,'log':_0x397b('0x4')});};
\ No newline at end of file
+var _0x3542=['CreateMailMessage','Request'];(function(_0x4fb62a,_0x8e4e04){var _0x2d2458=function(_0xeef86a){while(--_0xeef86a){_0x4fb62a['push'](_0x4fb62a['shift']());}};_0x2d2458(++_0x8e4e04);}(_0x3542,0x157));var _0x2354=function(_0x1e5725,_0x3f4e13){_0x1e5725=_0x1e5725-0x0;var _0x4b5cf8=_0x3542[_0x1e5725];return _0x4b5cf8;};'use strict';var client=require('../client');exports['create']=function(_0x2e2c21){return client[_0x2354('0x0')](_0x2354('0x1'),{'body':_0x2e2c21,'log':'createMailMessage'});};
\ No newline at end of file
index b7b585b..94daacf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeca9=['Agents','online','getMailQueues','GetMailQueue','name','timeout','strategy','User'];(function(_0x4c8121,_0x7baf4d){var _0x3384d7=function(_0x131b0f){while(--_0x131b0f){_0x4c8121['push'](_0x4c8121['shift']());}};_0x3384d7(++_0x7baf4d);}(_0xeca9,0x1da));var _0x9eca=function(_0x2ca35c,_0x998866){_0x2ca35c=_0x2ca35c-0x0;var _0x40f845=_0xeca9[_0x2ca35c];return _0x40f845;};'use strict';var client=require('../client');exports[_0x9eca('0x0')]=function(){return function(){return client['Request'](_0x9eca('0x1'),{'options':{'raw':![],'attributes':['id',_0x9eca('0x2'),_0x9eca('0x3'),_0x9eca('0x4')],'include':[{'model':_0x9eca('0x5'),'as':_0x9eca('0x6'),'attributes':['id',_0x9eca('0x2'),_0x9eca('0x7'),'mailPause']}]},'log':_0x9eca('0x0')});};};
\ No newline at end of file
+var _0xcda8=['User','Agents','online','getMailQueues','Request','name'];(function(_0x2f0a6a,_0xe1e4d7){var _0xbacf5c=function(_0x1bb7e6){while(--_0x1bb7e6){_0x2f0a6a['push'](_0x2f0a6a['shift']());}};_0xbacf5c(++_0xe1e4d7);}(_0xcda8,0xee));var _0x8cda=function(_0x44379c,_0x49549d){_0x44379c=_0x44379c-0x0;var _0x5497ec=_0xcda8[_0x44379c];return _0x5497ec;};'use strict';var client=require('../client');exports['getMailQueues']=function(){return function(){return client[_0x8cda('0x0')]('GetMailQueue',{'options':{'raw':![],'attributes':['id',_0x8cda('0x1'),'timeout','strategy'],'include':[{'model':_0x8cda('0x2'),'as':_0x8cda('0x3'),'attributes':['id',_0x8cda('0x1'),_0x8cda('0x4'),'mailPause']}]},'log':_0x8cda('0x5')});};};
\ No newline at end of file
index 5a0da75..efda394 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4061=['../client','create','CreateMailQueueReport','Request','UpdateMailQueueReport','DESC'];(function(_0x4aea73,_0x58e303){var _0x8197b7=function(_0x3ec23f){while(--_0x3ec23f){_0x4aea73['push'](_0x4aea73['shift']());}};_0x8197b7(++_0x58e303);}(_0x4061,0x150));var _0x1406=function(_0x4416fe,_0x2e91c9){_0x4416fe=_0x4416fe-0x0;var _0x2ff098=_0x4061[_0x4416fe];return _0x2ff098;};'use strict';var client=require(_0x1406('0x0'));exports[_0x1406('0x1')]=function(_0x4aea1f){return client['Request'](_0x1406('0x2'),{'body':_0x4aea1f,'log':_0x1406('0x2')});};exports['update']=function(_0x457e24,_0x5cba61){return client[_0x1406('0x3')](_0x1406('0x4'),{'body':_0x5cba61,'options':{'where':{'uniqueid':_0x457e24},'order':[['id',_0x1406('0x5')]],'limit':0x1},'log':_0x1406('0x4')});};
\ No newline at end of file
+var _0x53bb=['create','CreateMailQueueReport','Request','UpdateMailQueueReport','DESC'];(function(_0x555b1d,_0x239b1b){var _0x4e97ee=function(_0x119715){while(--_0x119715){_0x555b1d['push'](_0x555b1d['shift']());}};_0x4e97ee(++_0x239b1b);}(_0x53bb,0x1e5));var _0xb53b=function(_0x1b392e,_0x5e81f2){_0x1b392e=_0x1b392e-0x0;var _0x16333c=_0x53bb[_0x1b392e];return _0x16333c;};'use strict';var client=require('../client');exports[_0xb53b('0x0')]=function(_0x107af4){return client['Request'](_0xb53b('0x1'),{'body':_0x107af4,'log':'CreateMailQueueReport'});};exports['update']=function(_0x4e4c30,_0x4a1d3c){return client[_0xb53b('0x2')](_0xb53b('0x3'),{'body':_0x4a1d3c,'options':{'where':{'uniqueid':_0x4e4c30},'order':[['id',_0xb53b('0x4')]],'limit':0x1},'log':'UpdateMailQueueReport'});};
\ No newline at end of file
index bfd94d2..0cbcc1a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7670=['addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','AddTagsToOpenchannelInteraction'];(function(_0x35986e,_0x596def){var _0x149a8a=function(_0xf9dd05){while(--_0xf9dd05){_0x35986e['push'](_0x35986e['shift']());}};_0x149a8a(++_0x596def);}(_0x7670,0xda));var _0x0767=function(_0x5b14c5,_0xe0f313){_0x5b14c5=_0x5b14c5-0x0;var _0x5c00c1=_0x7670[_0x5b14c5];return _0x5c00c1;};'use strict';var client=require('../client');exports[_0x0767('0x0')]=function(_0x5009dd,_0x10cd0f){return client[_0x0767('0x1')](_0x0767('0x2'),{'body':_0x10cd0f,'options':{'where':{'id':_0x5009dd}},'log':_0x0767('0x3')});};exports[_0x0767('0x4')]=function(_0x30807d,_0x528b4d){return client[_0x0767('0x1')](_0x0767('0x5'),{'body':_0x528b4d,'options':{'where':{'id':_0x30807d}},'log':_0x0767('0x6')});};
\ No newline at end of file
+var _0xb417=['addTagsToChatInteraction','update','Request','UpdateOpenchannelInteraction'];(function(_0x5062dc,_0x4af19b){var _0x1a2945=function(_0x8a49f9){while(--_0x8a49f9){_0x5062dc['push'](_0x5062dc['shift']());}};_0x1a2945(++_0x4af19b);}(_0xb417,0x175));var _0x7b41=function(_0x1273bb,_0x193a23){_0x1273bb=_0x1273bb-0x0;var _0x107662=_0xb417[_0x1273bb];return _0x107662;};'use strict';var client=require('../client');exports[_0x7b41('0x0')]=function(_0xf54022,_0x3f42c7){return client[_0x7b41('0x1')](_0x7b41('0x2'),{'body':_0x3f42c7,'options':{'where':{'id':_0xf54022}},'log':'updateOpenchannelInteraction'});};exports['addTags']=function(_0x691a9d,_0x3a0c1f){return client['Request']('AddTagsToOpenchannelInteraction',{'body':_0x3a0c1f,'options':{'where':{'id':_0x691a9d}},'log':_0x7b41('0x3')});};
\ No newline at end of file
index 44c575c..7508b51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x72c3=['../client','create','Request','CreateOpenchannelMessage','createOpenchannelMessage'];(function(_0x4bc4c8,_0x3139d3){var _0x3bb121=function(_0x95ad12){while(--_0x95ad12){_0x4bc4c8['push'](_0x4bc4c8['shift']());}};_0x3bb121(++_0x3139d3);}(_0x72c3,0x140));var _0x372c=function(_0x28e7e6,_0x20b6ee){_0x28e7e6=_0x28e7e6-0x0;var _0x10e84a=_0x72c3[_0x28e7e6];return _0x10e84a;};'use strict';var client=require(_0x372c('0x0'));exports[_0x372c('0x1')]=function(_0x44f1d6){return client[_0x372c('0x2')](_0x372c('0x3'),{'body':_0x44f1d6,'log':_0x372c('0x4')});};
\ No newline at end of file
+var _0x8a31=['createOpenchannelMessage','../client','Request','CreateOpenchannelMessage'];(function(_0x689e16,_0x176daf){var _0xf6f855=function(_0x3c4b0d){while(--_0x3c4b0d){_0x689e16['push'](_0x689e16['shift']());}};_0xf6f855(++_0x176daf);}(_0x8a31,0x1cd));var _0x18a3=function(_0x49aa7d,_0x5d46d8){_0x49aa7d=_0x49aa7d-0x0;var _0xdd0d26=_0x8a31[_0x49aa7d];return _0xdd0d26;};'use strict';var client=require(_0x18a3('0x0'));exports['create']=function(_0x12d408){return client[_0x18a3('0x1')](_0x18a3('0x2'),{'body':_0x12d408,'log':_0x18a3('0x3')});};
\ No newline at end of file
index ccb7795..eb611bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x32ea=['strategy','User','Agents','openchannelPause','getOpenchannelQueues','../client','Request','name'];(function(_0x383545,_0x4790bd){var _0x5ba15=function(_0x2d8ed2){while(--_0x2d8ed2){_0x383545['push'](_0x383545['shift']());}};_0x5ba15(++_0x4790bd);}(_0x32ea,0x185));var _0xa32e=function(_0x4d674b,_0x176474){_0x4d674b=_0x4d674b-0x0;var _0x535a1f=_0x32ea[_0x4d674b];return _0x535a1f;};'use strict';var client=require(_0xa32e('0x0'));exports['getOpenchannelQueues']=function(){return function(){return client[_0xa32e('0x1')]('GetOpenchannelQueue',{'options':{'raw':![],'attributes':['id',_0xa32e('0x2'),'timeout',_0xa32e('0x3')],'include':[{'model':_0xa32e('0x4'),'as':_0xa32e('0x5'),'attributes':['id','name','online',_0xa32e('0x6')]}]},'log':_0xa32e('0x7')});};};
\ No newline at end of file
+var _0x25bf=['online','openchannelPause','getOpenchannelQueues','Request','GetOpenchannelQueue','timeout','User','Agents','name'];(function(_0x1a3899,_0x12e3fd){var _0x2b0445=function(_0x39ce9b){while(--_0x39ce9b){_0x1a3899['push'](_0x1a3899['shift']());}};_0x2b0445(++_0x12e3fd);}(_0x25bf,0x12b));var _0xf25b=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x25bf[_0x57b54c];return _0x59cc19;};'use strict';var client=require('../client');exports[_0xf25b('0x0')]=function(){return function(){return client[_0xf25b('0x1')](_0xf25b('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xf25b('0x3'),'strategy'],'include':[{'model':_0xf25b('0x4'),'as':_0xf25b('0x5'),'attributes':['id',_0xf25b('0x6'),_0xf25b('0x7'),_0xf25b('0x8')]}]},'log':_0xf25b('0x0')});};};
\ No newline at end of file
index dfeed38..6b86f3e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9053=['DESC','create','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport'];(function(_0x477661,_0x5403f2){var _0x521e62=function(_0x5af532){while(--_0x5af532){_0x477661['push'](_0x477661['shift']());}};_0x521e62(++_0x5403f2);}(_0x9053,0x161));var _0x3905=function(_0x487ee4,_0x3d3e66){_0x487ee4=_0x487ee4-0x0;var _0x3b0877=_0x9053[_0x487ee4];return _0x3b0877;};'use strict';var client=require('../client');exports[_0x3905('0x0')]=function(_0x4dd6f9){return client['Request'](_0x3905('0x1'),{'body':_0x4dd6f9,'log':_0x3905('0x1')});};exports['update']=function(_0x300f7a,_0x56fc79){return client['Request'](_0x3905('0x2'),{'body':_0x56fc79,'options':{'where':{'uniqueid':_0x300f7a},'order':[['id',_0x3905('0x3')]],'limit':0x1},'log':_0x3905('0x2')});};
\ No newline at end of file
+var _0x128f=['Request','CreateOpenchannelQueueReport','update','DESC','UpdateOpenchannelQueueReport'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x128f,0xff));var _0xf128=function(_0x4fa204,_0x849ea3){_0x4fa204=_0x4fa204-0x0;var _0x3ef322=_0x128f[_0x4fa204];return _0x3ef322;};'use strict';var client=require('../client');exports['create']=function(_0x1ff086){return client[_0xf128('0x0')](_0xf128('0x1'),{'body':_0x1ff086,'log':_0xf128('0x1')});};exports[_0xf128('0x2')]=function(_0x30424a,_0x4348cb){return client['Request']('UpdateOpenchannelQueueReport',{'body':_0x4348cb,'options':{'where':{'uniqueid':_0x30424a},'order':[['id',_0xf128('0x3')]],'limit':0x1},'log':_0xf128('0x4')});};
\ No newline at end of file
index 1b2d453..28a48a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x269f=['Request','updateSmsInteraction','addTags','addTagsToSmsInteraction','../client','update'];(function(_0x3beb05,_0x4bb1cd){var _0x576032=function(_0x300b28){while(--_0x300b28){_0x3beb05['push'](_0x3beb05['shift']());}};_0x576032(++_0x4bb1cd);}(_0x269f,0xee));var _0xf269=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x269f[_0xbd08b4];return _0x314f1e;};'use strict';var client=require(_0xf269('0x0'));exports[_0xf269('0x1')]=function(_0x31447d,_0x501fb4){return client[_0xf269('0x2')]('UpdateSmsInteraction',{'body':_0x501fb4,'options':{'where':{'id':_0x31447d}},'log':_0xf269('0x3')});};exports[_0xf269('0x4')]=function(_0x230d12,_0x22032a){return client[_0xf269('0x2')]('AddTagsToSmsInteraction',{'body':_0x22032a,'options':{'where':{'id':_0x230d12}},'log':_0xf269('0x5')});};
\ No newline at end of file
+var _0x1052=['update','Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','../client'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x1052,0xf4));var _0x2105=function(_0x369151,_0x179f72){_0x369151=_0x369151-0x0;var _0x4292d5=_0x1052[_0x369151];return _0x4292d5;};'use strict';var client=require(_0x2105('0x0'));exports[_0x2105('0x1')]=function(_0x2b1ffa,_0xed0bfa){return client[_0x2105('0x2')](_0x2105('0x3'),{'body':_0xed0bfa,'options':{'where':{'id':_0x2b1ffa}},'log':_0x2105('0x4')});};exports[_0x2105('0x5')]=function(_0x1e106c,_0x5c1e84){return client['Request'](_0x2105('0x6'),{'body':_0x5c1e84,'options':{'where':{'id':_0x1e106c}},'log':'addTagsToSmsInteraction'});};
\ No newline at end of file
index cda71a9..c1a8399 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd866=['Request','CreateSmsMessage','../client','create'];(function(_0x4fb40c,_0x31d78c){var _0x2ec089=function(_0x50677f){while(--_0x50677f){_0x4fb40c['push'](_0x4fb40c['shift']());}};_0x2ec089(++_0x31d78c);}(_0xd866,0x9a));var _0x6d86=function(_0x59d2d8,_0x5df195){_0x59d2d8=_0x59d2d8-0x0;var _0x14cc62=_0xd866[_0x59d2d8];return _0x14cc62;};'use strict';var client=require(_0x6d86('0x0'));exports[_0x6d86('0x1')]=function(_0xb613fe){return client[_0x6d86('0x2')](_0x6d86('0x3'),{'body':_0xb613fe,'log':'createSmsMessage'});};
\ No newline at end of file
+var _0x0399=['../client','Request','CreateSmsMessage'];(function(_0x32e542,_0x5a27c4){var _0x5f1a7e=function(_0x20e7a4){while(--_0x20e7a4){_0x32e542['push'](_0x32e542['shift']());}};_0x5f1a7e(++_0x5a27c4);}(_0x0399,0x189));var _0x9039=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x0399[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x9039('0x0'));exports['create']=function(_0x527a98){return client[_0x9039('0x1')](_0x9039('0x2'),{'body':_0x527a98,'log':'createSmsMessage'});};
\ No newline at end of file
index 8797d98..9a6a172 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x5a5f4f,_0x218711){var _0x559e2c=function(_0x3e60af){while(--_0x3e60af){_0x5a5f4f['push'](_0x5a5f4f['shift']());}};_0x559e2c(++_0x218711);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),'strategy'],'include':[{'model':_0x0a9e('0x4'),'as':_0x0a9e('0x5'),'attributes':['id',_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0x0713=['getSmsQueues','Request','GetSmsQueue','name','timeout','strategy','Agents','online','smsPause'];(function(_0x7ff50b,_0x399dc0){var _0x43e570=function(_0x16b092){while(--_0x16b092){_0x7ff50b['push'](_0x7ff50b['shift']());}};_0x43e570(++_0x399dc0);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var client=require('../client');exports['getSmsQueues']=function(){return function(){return client[_0x3071('0x0')](_0x3071('0x1'),{'options':{'raw':![],'attributes':['id',_0x3071('0x2'),_0x3071('0x3'),_0x3071('0x4')],'include':[{'model':'User','as':_0x3071('0x5'),'attributes':['id',_0x3071('0x2'),_0x3071('0x6'),_0x3071('0x7')]}]},'log':_0x3071('0x8')});};};
\ No newline at end of file
index 8bf4d04..bf451ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x519c0c,_0x440d5f){var _0x57725d=function(_0x44942e){while(--_0x44942e){_0x519c0c['push'](_0x519c0c['shift']());}};_0x57725d(++_0x440d5f);}(_0x34e8,0x12c));var _0x834e=function(_0x2b7f9a,_0x501307){_0x2b7f9a=_0x2b7f9a-0x0;var _0x19521f=_0x34e8[_0x2b7f9a];return _0x19521f;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
+var _0x3e74=['CreateSmsQueueReport','UpdateSmsQueueReport','DESC','../client','Request'];(function(_0x528cb,_0x106d0d){var _0xb80de3=function(_0x2ab43d){while(--_0x2ab43d){_0x528cb['push'](_0x528cb['shift']());}};_0xb80de3(++_0x106d0d);}(_0x3e74,0x175));var _0x43e7=function(_0x55f139,_0x479a65){_0x55f139=_0x55f139-0x0;var _0x394b3d=_0x3e74[_0x55f139];return _0x394b3d;};'use strict';var client=require(_0x43e7('0x0'));exports['create']=function(_0x349480){return client[_0x43e7('0x1')](_0x43e7('0x2'),{'body':_0x349480,'log':'CreateSmsQueueReport'});};exports['update']=function(_0xc58479,_0x4f9bbe){return client[_0x43e7('0x1')](_0x43e7('0x3'),{'body':_0x4f9bbe,'options':{'where':{'uniqueid':_0xc58479},'order':[['id',_0x43e7('0x4')]],'limit':0x1},'log':_0x43e7('0x3')});};
\ No newline at end of file
index 48365a5..b8b1e65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x1cc41e,_0x364811){var _0xb6a6b7=function(_0x36b7ea){while(--_0x36b7ea){_0x1cc41e['push'](_0x1cc41e['shift']());}};_0xb6a6b7(++_0x364811);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
+var _0xa9e0=['name','pauseType','lastPauseAt','voicePause','chatPause','mailPause','smsPause','whatsappPause','openchannelPause','faxCapacity','openchannelCapacity','../client','getAgents','Request'];(function(_0x5628d6,_0x94bbe9){var _0xba49ba=function(_0x17953c){while(--_0x17953c){_0x5628d6['push'](_0x5628d6['shift']());}};_0xba49ba(++_0x94bbe9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0xa9e0[_0x3899d1];return _0xeb4a7d;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetUser',{'options':{'raw':!![],'where':{'role':'agent'},'attributes':['id',_0x0a9e('0x3'),'online',_0x0a9e('0x4'),_0x0a9e('0x5'),_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8'),'faxPause',_0x0a9e('0x9'),_0x0a9e('0xa'),_0x0a9e('0xb'),'chatCapacity','mailCapacity',_0x0a9e('0xc'),'smsCapacity','whatsappCapacity',_0x0a9e('0xd')]},'log':_0x0a9e('0x1')});};};
\ No newline at end of file
index 6ce21aa..e1015c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x565e=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','Request','addTags'];(function(_0x38b108,_0x5363ba){var _0x1e5dc0=function(_0x33068d){while(--_0x33068d){_0x38b108['push'](_0x38b108['shift']());}};_0x1e5dc0(++_0x5363ba);}(_0x565e,0x7f));var _0xe565=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x565e[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xe565('0x0'));exports['update']=function(_0x19090f,_0x1a2449){return client[_0xe565('0x1')]('UpdateWhatsappInteraction',{'body':_0x1a2449,'options':{'where':{'id':_0x19090f}},'log':'updateWhatsappInteraction'});};exports[_0xe565('0x2')]=function(_0x33fd83,_0x14f472){return client[_0xe565('0x1')](_0xe565('0x3'),{'body':_0x14f472,'options':{'where':{'id':_0x33fd83}},'log':_0xe565('0x4')});};
\ No newline at end of file
+var _0x6c65=['../client','update','Request','UpdateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction'];(function(_0x380fb3,_0x4fbd8a){var _0x8c3c00=function(_0xad6f6b){while(--_0xad6f6b){_0x380fb3['push'](_0x380fb3['shift']());}};_0x8c3c00(++_0x4fbd8a);}(_0x6c65,0x78));var _0x56c6=function(_0x24ddf6,_0x114e56){_0x24ddf6=_0x24ddf6-0x0;var _0x393d70=_0x6c65[_0x24ddf6];return _0x393d70;};'use strict';var client=require(_0x56c6('0x0'));exports[_0x56c6('0x1')]=function(_0x65c8cb,_0x407bf1){return client[_0x56c6('0x2')](_0x56c6('0x3'),{'body':_0x407bf1,'options':{'where':{'id':_0x65c8cb}},'log':'updateWhatsappInteraction'});};exports[_0x56c6('0x4')]=function(_0x4321ef,_0x3f532d){return client[_0x56c6('0x2')](_0x56c6('0x5'),{'body':_0x3f532d,'options':{'where':{'id':_0x4321ef}},'log':'addTagsToWhatsappInteraction'});};
\ No newline at end of file
index e74943e..92198b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1f9=['createWhatsappMessage','../client','create','Request','CreateWhatsappMessage'];(function(_0x58db4e,_0x439d8d){var _0x40139a=function(_0x34cae4){while(--_0x34cae4){_0x58db4e['push'](_0x58db4e['shift']());}};_0x40139a(++_0x439d8d);}(_0xb1f9,0x14b));var _0x9b1f=function(_0x3cd6ef,_0x38feee){_0x3cd6ef=_0x3cd6ef-0x0;var _0x22ecbc=_0xb1f9[_0x3cd6ef];return _0x22ecbc;};'use strict';var client=require(_0x9b1f('0x0'));exports[_0x9b1f('0x1')]=function(_0x2ba522){return client[_0x9b1f('0x2')](_0x9b1f('0x3'),{'body':_0x2ba522,'log':_0x9b1f('0x4')});};
\ No newline at end of file
+var _0x4efd=['CreateWhatsappMessage','createWhatsappMessage','create','Request'];(function(_0x1e035c,_0xf906b){var _0x3a63f0=function(_0x51a230){while(--_0x51a230){_0x1e035c['push'](_0x1e035c['shift']());}};_0x3a63f0(++_0xf906b);}(_0x4efd,0x1ae));var _0xd4ef=function(_0x1fcf1b,_0x214549){_0x1fcf1b=_0x1fcf1b-0x0;var _0x5d2952=_0x4efd[_0x1fcf1b];return _0x5d2952;};'use strict';var client=require('../client');exports[_0xd4ef('0x0')]=function(_0x3f506f){return client[_0xd4ef('0x1')](_0xd4ef('0x2'),{'body':_0x3f506f,'log':_0xd4ef('0x3')});};
\ No newline at end of file
index 6371116..7964d41 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5e4=['getWhatsappQueues','../client','name','timeout','strategy','User','Agents','online','whatsappPause'];(function(_0x387d83,_0x40ed0d){var _0x4ee28e=function(_0x1d932c){while(--_0x1d932c){_0x387d83['push'](_0x387d83['shift']());}};_0x4ee28e(++_0x40ed0d);}(_0xb5e4,0x145));var _0x4b5e=function(_0xc926b7,_0xa6e261){_0xc926b7=_0xc926b7-0x0;var _0x30aff8=_0xb5e4[_0xc926b7];return _0x30aff8;};'use strict';var client=require(_0x4b5e('0x0'));exports['getWhatsappQueues']=function(){return function(){return client['Request']('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x4b5e('0x1'),_0x4b5e('0x2'),_0x4b5e('0x3')],'include':[{'model':_0x4b5e('0x4'),'as':_0x4b5e('0x5'),'attributes':['id',_0x4b5e('0x1'),_0x4b5e('0x6'),_0x4b5e('0x7')]}]},'log':_0x4b5e('0x8')});};};
\ No newline at end of file
+var _0x629d=['Agents','name','whatsappPause','../client','getWhatsappQueues','Request','GetWhatsappQueue','timeout','strategy','User'];(function(_0x25c4a3,_0x5a5502){var _0x355f9d=function(_0xe41e68){while(--_0xe41e68){_0x25c4a3['push'](_0x25c4a3['shift']());}};_0x355f9d(++_0x5a5502);}(_0x629d,0xdf));var _0xd629=function(_0x345a17,_0x3b9d2a){_0x345a17=_0x345a17-0x0;var _0xd0f947=_0x629d[_0x345a17];return _0xd0f947;};'use strict';var client=require(_0xd629('0x0'));exports[_0xd629('0x1')]=function(){return function(){return client[_0xd629('0x2')](_0xd629('0x3'),{'options':{'raw':![],'attributes':['id','name',_0xd629('0x4'),_0xd629('0x5')],'include':[{'model':_0xd629('0x6'),'as':_0xd629('0x7'),'attributes':['id',_0xd629('0x8'),'online',_0xd629('0x9')]}]},'log':'getWhatsappQueues'});};};
\ No newline at end of file
index f4c72e3..e87d6d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51e1=['CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','../client','create','Request'];(function(_0x5dd943,_0x49084c){var _0x28bcdc=function(_0x404cf9){while(--_0x404cf9){_0x5dd943['push'](_0x5dd943['shift']());}};_0x28bcdc(++_0x49084c);}(_0x51e1,0xa5));var _0x151e=function(_0x31b9cf,_0x1a809b){_0x31b9cf=_0x31b9cf-0x0;var _0x357b8a=_0x51e1[_0x31b9cf];return _0x357b8a;};'use strict';var client=require(_0x151e('0x0'));exports[_0x151e('0x1')]=function(_0x49150f){return client[_0x151e('0x2')](_0x151e('0x3'),{'body':_0x49150f,'log':_0x151e('0x3')});};exports[_0x151e('0x4')]=function(_0x2de210,_0x3b8b55){return client[_0x151e('0x2')](_0x151e('0x5'),{'body':_0x3b8b55,'options':{'where':{'uniqueid':_0x2de210},'order':[['id','DESC']],'limit':0x1},'log':_0x151e('0x5')});};
\ No newline at end of file
+var _0x11a9=['create','Request','CreateWhatsappQueueReport','UpdateWhatsappQueueReport','../client'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x11a9,0xc7));var _0x911a=function(_0x21abb1,_0x4be62f){_0x21abb1=_0x21abb1-0x0;var _0x4d0cd7=_0x11a9[_0x21abb1];return _0x4d0cd7;};'use strict';var client=require(_0x911a('0x0'));exports[_0x911a('0x1')]=function(_0x38d1d8){return client[_0x911a('0x2')](_0x911a('0x3'),{'body':_0x38d1d8,'log':_0x911a('0x3')});};exports['update']=function(_0x587c5e,_0x3e74f0){return client['Request']('UpdateWhatsappQueueReport',{'body':_0x3e74f0,'options':{'where':{'uniqueid':_0x587c5e},'order':[['id','DESC']],'limit':0x1},'log':_0x911a('0x4')});};
\ No newline at end of file
index 807cff8..1a2fa80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe35d=['[%s][QUEUE]\x20%s','stack','validate','lodash','util','../../../../config/logger','./strategy','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','error','[%s][AGENT]\x20%s','map','message','join','stop','find','agents','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','[%s][AGENT]\x20agent\x20not\x20found\x20%s','log'];(function(_0x5be1d6,_0x52ab2a){var _0x5d9bd4=function(_0x4f05ba){while(--_0x4f05ba){_0x5be1d6['push'](_0x5be1d6['shift']());}};_0x5d9bd4(++_0x52ab2a);}(_0xe35d,0x1e2));var _0xde35=function(_0x58f679,_0x11e21e){_0x58f679=_0x58f679-0x0;var _0x578cf7=_0xe35d[_0x58f679];return _0x578cf7;};'use strict';var schema=require(_0xde35('0x0'));var _=require(_0xde35('0x1'));var util=require(_0xde35('0x2'));var seqqueue=require('seq-queue');var logger=require(_0xde35('0x3'))('routing');var strategy=require(_0xde35('0x4'));var queue=schema({'name':{'type':_0xde35('0x5'),'required':!![],'message':_0xde35('0x6')},'timeout':{'type':_0xde35('0x7'),'message':_0xde35('0x8')}});function writeLog(_0x3851a4,_0x1993e2,_0xe63671){return logger[_0xde35('0x9')](util[_0xde35('0xa')](_0xde35('0xb'),_0x3851a4,_0x1993e2[_0xde35('0xc')],_0xe63671));}function handleFindAgent(_0x4c9c37){return function(_0x1f7372){return _0x1f7372[_0xde35('0xc')][_0xde35('0xd')]()===_0x4c9c37[_0xde35('0xd')]();};}exports[_0xde35('0xe')]=function(_0xc3aead,_0x26c6f4,_0x44f214,_0x4ba1b5){return function(_0x54b656){try{var _0x5624eb={'name':_0x26c6f4[0x0],'timeout':_0x26c6f4[0x1]};var _0x5d7636=queue[_0xde35('0x0')](_0x5624eb,{'typecast':!![]});if(_0x5d7636['length']){logger[_0xde35('0xf')](_0xde35('0x10'),_0xc3aead,_[_0xde35('0x11')](_0x5d7636,_0xde35('0x12'))[_0xde35('0x13')](',\x20'));_0x54b656[_0xde35('0x14')]();}else{var _0x113500=_[_0xde35('0x15')](_0x44f214[_0xde35('0x16')],handleFindAgent(_0x5624eb[_0xde35('0xc')]));if(_0x113500){var _0x49ec82=(_0x5624eb[_0xde35('0x17')]||0xa)*0x3e8;var _0x8045c6,_0x284997;var _0x22580a=seqqueue[_0xde35('0x18')](_0x49ec82);_0x22580a['id']=_0xc3aead;_0x22580a[_0xde35('0x19')]=_0x49ec82;_0x22580a[_0xde35('0x1a')]=_0x4ba1b5[_0xde35('0x1a')];writeLog(_0xc3aead,_0x113500,util[_0xde35('0xa')](_0xde35('0x1b'),_0x49ec82));_0x44f214[_0xde35('0x1c')][_0xc3aead]['on'](_0xde35('0x1d'),function(){logger[_0xde35('0x9')](_0xde35('0x1e'),_0xc3aead);clearTimeout(_0x284997);_0x284997=undefined;_0x22580a[_0xde35('0x1f')]();if(_0x44f214[_0xde35('0x1c')][_0xc3aead]){delete _0x44f214[_0xde35('0x1c')][_0xc3aead];}_0x54b656[_0xde35('0x14')]();});_0x44f214['rules'][_0xc3aead]['on'](_0xde35('0x20'),function(){if(_0x44f214[_0xde35('0x1c')][_0xc3aead]){delete _0x44f214['rules'][_0xc3aead];}});_0x284997=setTimeout(function(){logger[_0xde35('0x9')](_0xde35('0x21'),_0xc3aead);clearTimeout(_0x284997);_0x22580a[_0xde35('0x1f')]();_0x54b656[_0xde35('0x22')]();},_0x49ec82);strategy[_0xde35('0x23')](_0x22580a,_0x113500,_0x44f214,_0x4ba1b5);}else{logger['error'](_0xde35('0x24'),_0xc3aead,_0x5624eb[_0xde35('0xc')]);_0x54b656['stop']();}}}catch(_0x50aced){console[_0xde35('0x25')](_0x50aced);logger[_0xde35('0xf')](_0xde35('0x26'),_0xc3aead,_0x50aced[_0xde35('0x27')]);_0x54b656[_0xde35('0x14')]();}};};
\ No newline at end of file
+var _0x2435=['validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','number','timeout\x20is\x20a\x20number','info','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','message','join','timeout','createQueue','atimeout','channel','START:%s','rules','end','[%s][AGENT]\x20ROUTING\x20STOPPED','close','stop','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','log','[%s][QUEUE]\x20%s','stack'];(function(_0x8f1b91,_0x181a12){var _0x5ae8b2=function(_0x2e3f37){while(--_0x2e3f37){_0x8f1b91['push'](_0x8f1b91['shift']());}};_0x5ae8b2(++_0x181a12);}(_0x2435,0x1e1));var _0x5243=function(_0x4ae829,_0x2c842c){_0x4ae829=_0x4ae829-0x0;var _0x256b31=_0x2435[_0x4ae829];return _0x256b31;};'use strict';var schema=require(_0x5243('0x0'));var _=require(_0x5243('0x1'));var util=require(_0x5243('0x2'));var seqqueue=require(_0x5243('0x3'));var logger=require(_0x5243('0x4'))(_0x5243('0x5'));var strategy=require(_0x5243('0x6'));var queue=schema({'name':{'type':'string','required':!![],'message':'name\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'timeout':{'type':_0x5243('0x7'),'message':_0x5243('0x8')}});function writeLog(_0x1097e3,_0x319d0d,_0x2c78c1){return logger[_0x5243('0x9')](util[_0x5243('0xa')](_0x5243('0xb'),_0x1097e3,_0x319d0d[_0x5243('0xc')],_0x2c78c1));}function handleFindAgent(_0x4a6234){return function(_0x50d9ec){return _0x50d9ec[_0x5243('0xc')][_0x5243('0xd')]()===_0x4a6234[_0x5243('0xd')]();};}exports[_0x5243('0xe')]=function(_0x3dd71d,_0x50caf5,_0x4ac3f1,_0x409fdb){return function(_0x2225bf){try{var _0xfd029c={'name':_0x50caf5[0x0],'timeout':_0x50caf5[0x1]};var _0x17fd54=queue[_0x5243('0x0')](_0xfd029c,{'typecast':!![]});if(_0x17fd54[_0x5243('0xf')]){logger[_0x5243('0x10')](_0x5243('0x11'),_0x3dd71d,_['map'](_0x17fd54,_0x5243('0x12'))[_0x5243('0x13')](',\x20'));_0x2225bf['stop']();}else{var _0x5509af=_['find'](_0x4ac3f1['agents'],handleFindAgent(_0xfd029c['name']));if(_0x5509af){var _0x113d50=(_0xfd029c[_0x5243('0x14')]||0xa)*0x3e8;var _0x49da98,_0x33dc78;var _0x3313ea=seqqueue[_0x5243('0x15')](_0x113d50);_0x3313ea['id']=_0x3dd71d;_0x3313ea[_0x5243('0x16')]=_0x113d50;_0x3313ea[_0x5243('0x17')]=_0x409fdb[_0x5243('0x17')];writeLog(_0x3dd71d,_0x5509af,util[_0x5243('0xa')](_0x5243('0x18'),_0x113d50));_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]['on'](_0x5243('0x1a'),function(){logger['info'](_0x5243('0x1b'),_0x3dd71d);clearTimeout(_0x33dc78);_0x33dc78=undefined;_0x3313ea[_0x5243('0x1c')]();if(_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]){delete _0x4ac3f1[_0x5243('0x19')][_0x3dd71d];}_0x2225bf[_0x5243('0x1d')]();});_0x4ac3f1[_0x5243('0x19')][_0x3dd71d]['on'](_0x5243('0x1e'),function(){if(_0x4ac3f1['rules'][_0x3dd71d]){delete _0x4ac3f1[_0x5243('0x19')][_0x3dd71d];}});_0x33dc78=setTimeout(function(){logger['info'](_0x5243('0x1f'),_0x3dd71d);clearTimeout(_0x33dc78);_0x3313ea[_0x5243('0x1c')]();_0x2225bf[_0x5243('0x20')]();},_0x113d50);strategy[_0x5243('0x21')](_0x3313ea,_0x5509af,_0x4ac3f1,_0x409fdb);}else{logger[_0x5243('0x10')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x3dd71d,_0xfd029c['name']);_0x2225bf[_0x5243('0x1d')]();}}}catch(_0x29c998){console[_0x5243('0x22')](_0x29c998);logger[_0x5243('0x10')](_0x5243('0x23'),_0x3dd71d,_0x29c998[_0x5243('0x24')]);_0x2225bf[_0x5243('0x1d')]();}};};
\ No newline at end of file
index 26a4151..eec524b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x634b=['interaction','UserId','info','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','getMustacheRender','Message','create','then','body','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','$LATEST','postText','message','amazonlex','providerName','providerResponse','dialogState','Failed','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','isNil'];(function(_0xa8b49,_0x3b2e1b){var _0x473313=function(_0x3872b1){while(--_0x3872b1){_0xa8b49['push'](_0xa8b49['shift']());}};_0x473313(++_0x3b2e1b);}(_0x634b,0x19f));var _0xb634=function(_0x3d37f0,_0x4daf6c){_0x3d37f0=_0x3d37f0-0x0;var _0x599ff8=_0x634b[_0x3d37f0];return _0x599ff8;};'use strict';var _=require('lodash');var moment=require(_0xb634('0x0'));var AWS=require('aws-sdk');var utils=require('./utils');var logger=require(_0xb634('0x1'))(_0xb634('0x2'));var rpc={'chatMessage':require(_0xb634('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xb634('0x4')),'smsMessage':require(_0xb634('0x5')),'faxMessage':require(_0xb634('0x6')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x35361a,_0x1d31b3){return function(_0x3cca37){try{if(!_[_0xb634('0x7')](this[_0xb634('0x8')][_0xb634('0x9')])){logger[_0xb634('0xa')](_0xb634('0xb'),_0x35361a,_0xb634('0xc'));return _0x3cca37[_0xb634('0xd')]();}var _0x50fae4={'ContactId':this[_0xb634('0xe')]['id'],'sentAt':moment()[_0xb634('0xf')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xb634('0x10')};if(this[_0xb634('0x11')]===_0xb634('0x12')||this[_0xb634('0x11')]===_0xb634('0x13')){_0x50fae4[_0xb634('0x14')]=this[_0xb634('0x8')]['phone'];}var _0x53018a=this['channel'];if(_0x53018a===_0xb634('0x15')){_0x50fae4[_0xb634('0x16')]=this[_0xb634('0x17')]['id'];}else{_0x50fae4[_[_0xb634('0x18')](_0x53018a)+_0xb634('0x19')]=this[_0xb634('0x17')]['id'];}_0x50fae4[_[_0xb634('0x18')](_0x53018a)+'InteractionId']=this[_0xb634('0x8')]['id'];if(this['interaction'][_0xb634('0x1a')]){var _0x43b26d=_0x1d31b3[0x4];if(!_[_0xb634('0x1b')](_0x43b26d)){_0x50fae4['body']=utils[_0xb634('0x1c')](_0x43b26d,this);return rpc[_0x53018a+_0xb634('0x1d')][_0xb634('0x1e')](_0x50fae4)[_0xb634('0x1f')](function(_0x129069){logger[_0xb634('0xa')]('[%s][AMAZONLEX]\x20%s',_0x35361a,_0x50fae4[_0xb634('0x20')]);})[_0xb634('0x21')](function(_0x101281){logger[_0xb634('0x22')](_0xb634('0xb'),_0x35361a,JSON[_0xb634('0x23')](_0x101281));})[_0xb634('0x24')](function(){logger[_0xb634('0xa')]('[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x35361a);_0x3cca37['stop']();});}else{logger[_0xb634('0xa')](_0xb634('0x25'),_0x35361a);_0x3cca37[_0xb634('0x26')]();}}else{var _0x484ef7=this;var _0x5f4d7a=new AWS['LexRuntime']({'accessKeyId':_0x1d31b3[0x0],'secretAccessKey':_0x1d31b3[0x1],'region':_0x1d31b3[0x2]});var _0x3b19cf={'botAlias':_0xb634('0x27'),'botName':_0x1d31b3[0x3],'inputText':this['message']['body'],'userId':this[_0xb634('0x11')]+':'+this[_0xb634('0x8')]['id']['toString']()};_0x5f4d7a[_0xb634('0x28')](_0x3b19cf,function(_0x5d247,_0x5d572a){if(_0x5d247){logger[_0xb634('0x22')](_0xb634('0xb'),_0x35361a,_0x5d247[_0xb634('0x29')]);_0x3cca37['next']();}else if(_0x5d572a&&_0x5d572a['message']){_0x484ef7[_0xb634('0x20')][_0xb634('0x2a')]=_0x5d572a;_0x50fae4[_0xb634('0x20')]=_0x5d572a['message'];_0x50fae4[_0xb634('0x2b')]=_0xb634('0x2a');_0x50fae4[_0xb634('0x2c')]=JSON[_0xb634('0x23')](_0x5d572a);return rpc[_0x53018a+_0xb634('0x1d')]['create'](_0x50fae4)[_0xb634('0x1f')](function(_0x8cdd81){logger['info'](_0xb634('0xb'),_0x35361a,_0x50fae4[_0xb634('0x20')]);if(_0x5d572a[_0xb634('0x2d')]==_0xb634('0x2e')){_0x3cca37['next']();}else{_0x3cca37['stop']();}})['catch'](function(_0x44e4ca){logger[_0xb634('0x22')](_0xb634('0xb'),_0x35361a,JSON[_0xb634('0x23')](_0x44e4ca));_0x3cca37['next']();});}else{_0x3cca37[_0xb634('0xd')]();}});}}catch(_0x57f179){logger['error']('[%s][AMAZONLEX]\x20%s',_0x35361a,JSON[_0xb634('0x23')](_0x57f179));_0x3cca37['stop']();}};};
\ No newline at end of file
+var _0x9066=['toString','postText','amazonlex','providerResponse','dialogState','Failed','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','isNil','UserId','[%s][AMAZONLEX]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','Message','create','then','info','catch','error','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','$LATEST','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x9066,0x148));var _0x6906=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9066[_0x2641f9];return _0x585741;};'use strict';var _=require(_0x6906('0x0'));var moment=require(_0x6906('0x1'));var AWS=require('aws-sdk');var utils=require(_0x6906('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0x6906('0x3')),'openchannelMessage':require(_0x6906('0x4')),'mailMessage':require(_0x6906('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require('../../rpc/whatsappMessage')};exports['consequence']=function(_0x259317,_0x5144de){return function(_0x115adb){try{if(!_[_0x6906('0x6')](this['interaction'][_0x6906('0x7')])){logger['info'](_0x6906('0x8'),_0x259317,_0x6906('0x9'));return _0x115adb[_0x6906('0xa')]();}var _0x39e8b4={'ContactId':this['contact']['id'],'sentAt':moment()[_0x6906('0xb')](_0x6906('0xc')),'direction':_0x6906('0xd')};if(this[_0x6906('0xe')]===_0x6906('0xf')||this[_0x6906('0xe')]===_0x6906('0x10')){_0x39e8b4[_0x6906('0x11')]=this[_0x6906('0x12')][_0x6906('0x11')];}var _0x1c9ef8=this[_0x6906('0xe')];if(_0x1c9ef8===_0x6906('0x13')){_0x39e8b4['ChatWebsiteId']=this[_0x6906('0x14')]['id'];}else{_0x39e8b4[_[_0x6906('0x15')](_0x1c9ef8)+_0x6906('0x16')]=this[_0x6906('0x14')]['id'];}_0x39e8b4[_['upperFirst'](_0x1c9ef8)+_0x6906('0x17')]=this[_0x6906('0x12')]['id'];if(this[_0x6906('0x12')][_0x6906('0x18')]){var _0x574351=_0x5144de[0x4];if(!_[_0x6906('0x19')](_0x574351)){_0x39e8b4[_0x6906('0x1a')]=utils['getMustacheRender'](_0x574351,this);return rpc[_0x1c9ef8+_0x6906('0x1b')][_0x6906('0x1c')](_0x39e8b4)[_0x6906('0x1d')](function(_0x19fc98){logger[_0x6906('0x1e')]('[%s][AMAZONLEX]\x20%s',_0x259317,_0x39e8b4['body']);})[_0x6906('0x1f')](function(_0x5eaf68){logger[_0x6906('0x20')](_0x6906('0x8'),_0x259317,JSON[_0x6906('0x21')](_0x5eaf68));})[_0x6906('0x22')](function(){logger[_0x6906('0x1e')](_0x6906('0x23'),_0x259317);_0x115adb['stop']();});}else{logger[_0x6906('0x1e')](_0x6906('0x24'),_0x259317);_0x115adb[_0x6906('0x25')]();}}else{var _0x1f5c8f=this;var _0x512948=new AWS['LexRuntime']({'accessKeyId':_0x5144de[0x0],'secretAccessKey':_0x5144de[0x1],'region':_0x5144de[0x2]});var _0x10aa66={'botAlias':_0x6906('0x26'),'botName':_0x5144de[0x3],'inputText':this[_0x6906('0x27')]['body'],'userId':this[_0x6906('0xe')]+':'+this[_0x6906('0x12')]['id'][_0x6906('0x28')]()};_0x512948[_0x6906('0x29')](_0x10aa66,function(_0x4e9c2c,_0x168967){if(_0x4e9c2c){logger['error'](_0x6906('0x8'),_0x259317,_0x4e9c2c[_0x6906('0x27')]);_0x115adb[_0x6906('0xa')]();}else if(_0x168967&&_0x168967[_0x6906('0x27')]){_0x1f5c8f['body'][_0x6906('0x2a')]=_0x168967;_0x39e8b4[_0x6906('0x1a')]=_0x168967[_0x6906('0x27')];_0x39e8b4['providerName']=_0x6906('0x2a');_0x39e8b4[_0x6906('0x2b')]=JSON['stringify'](_0x168967);return rpc[_0x1c9ef8+'Message'][_0x6906('0x1c')](_0x39e8b4)[_0x6906('0x1d')](function(_0x2ed634){logger['info'](_0x6906('0x8'),_0x259317,_0x39e8b4[_0x6906('0x1a')]);if(_0x168967[_0x6906('0x2c')]==_0x6906('0x2d')){_0x115adb['next']();}else{_0x115adb[_0x6906('0x25')]();}})[_0x6906('0x1f')](function(_0x474ffc){logger['error'](_0x6906('0x8'),_0x259317,JSON[_0x6906('0x21')](_0x474ffc));_0x115adb[_0x6906('0xa')]();});}else{_0x115adb[_0x6906('0xa')]();}});}}catch(_0x16e0e4){logger['error']('[%s][AMAZONLEX]\x20%s',_0x259317,JSON[_0x6906('0x21')](_0x16e0e4));_0x115adb[_0x6906('0x25')]();}};};
\ No newline at end of file
index 4cc4fae..2f197f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x861d=['All','sendMailMessage','smtpOptions','then','messageId','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','Interaction','update','finally','resolve','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','moment','./utils','../../../../config/logger','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence','channel','body','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','getMustacheRender','message','from','mail','subject','Re:','Re:\x20','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','inReplyTo','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','</div>','headers'];(function(_0x1ee611,_0x377a3a){var _0x3bce0a=function(_0x5357c6){while(--_0x5357c6){_0x1ee611['push'](_0x1ee611['shift']());}};_0x3bce0a(++_0x377a3a);}(_0x861d,0x150));var _0xd861=function(_0x2937ed,_0xe4ce3f){_0x2937ed=_0x2937ed-0x0;var _0x4cc289=_0x861d[_0x2937ed];return _0x4cc289;};'use strict';var _=require('lodash');var moment=require(_0xd861('0x0'));var utils=require(_0xd861('0x1'));var logger=require(_0xd861('0x2'))('routing');var rpc={'chatMessage':require(_0xd861('0x3')),'openchannelMessage':require(_0xd861('0x4')),'mailMessage':require(_0xd861('0x5')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xd861('0x6')),'chatInteraction':require(_0xd861('0x7')),'openchannelInteraction':require(_0xd861('0x8')),'mailInteraction':require(_0xd861('0x9')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0xd861('0xa')),'whatsappInteraction':require(_0xd861('0xb'))};var mailRpc=require('../../mailRpc');exports[_0xd861('0xc')]=function(_0x1ffa1e,_0x320c35,_0x2bd4cf,_0x3edfae){return function(_0x14429a){try{var _0x519665=this[_0xd861('0xd')];if(_0x519665==='mail'&&_0x3edfae[_0xd861('0xe')]['isAutoreply']){logger[_0xd861('0xf')](_0xd861('0x10'),_0x1ffa1e,_0xd861('0x11'));return _0x14429a[_0xd861('0x12')]();}if(_0x320c35[0x0]==='1'&&(_['isNil'](this[_0xd861('0x13')][_0xd861('0x14')])||!this['interaction'][_0xd861('0x14')])){logger[_0xd861('0xf')]('[%s][AUTOREPLY]\x20%s',_0x1ffa1e,_0xd861('0x15'));return _0x14429a[_0xd861('0x12')]();}if(_0x320c35[0x0]==='2'&&this[_0xd861('0x13')][_0xd861('0x16')]){logger[_0xd861('0xf')](_0xd861('0x17'),_0x1ffa1e,_0xd861('0x18'));return _0x14429a[_0xd861('0x12')]();}var _0x1fff58={'ContactId':this[_0xd861('0x19')]['id'],'sentAt':moment()[_0xd861('0x1a')](_0xd861('0x1b')),'direction':_0xd861('0x1c')};if(this[_0xd861('0xd')]==='mail'){_0x1fff58[_0xd861('0xe')]=utils[_0xd861('0x1d')](_0x320c35[0x2],this);}else{_0x1fff58[_0xd861('0xe')]=utils[_0xd861('0x1d')](_0x320c35[0x1],this);}if(this['message']){_0x1fff58['to']=this[_0xd861('0x1e')][_0xd861('0x1f')]||'';if(this[_0xd861('0xd')]===_0xd861('0x20')&&_0x320c35[0x1]==='1'){_0x1fff58['cc']=this[_0xd861('0x1e')]['cc']||'';}_0x1fff58[_0xd861('0x1f')]=this['message']['to']||'';_0x1fff58['phone']=this['message']['phone']||'';_0x1fff58['read']=!![];if(this['message']['subject']){_0x1fff58[_0xd861('0x21')]='';_0x1fff58['subject']+=_['startsWith'](this[_0xd861('0x1e')]['subject'],_0xd861('0x22'))?'':_0xd861('0x23');_0x1fff58[_0xd861('0x21')]+=this[_0xd861('0x1e')][_0xd861('0x21')];}}if(this[_0xd861('0xd')]==='chat'){_0x1fff58[_0xd861('0x24')]=this[_0xd861('0x25')]['id'];}else{_0x1fff58[_[_0xd861('0x26')](this[_0xd861('0xd')])+_0xd861('0x27')]=this[_0xd861('0x25')]['id'];}_0x1fff58[_[_0xd861('0x26')](this[_0xd861('0xd')])+_0xd861('0x28')]=this[_0xd861('0x13')]['id'];var _0x4de030=this[_0xd861('0x13')];if(rpc[this[_0xd861('0xd')]+_0xd861('0x29')]){if(this['channel']===_0xd861('0x20')){_0x1fff58[_0xd861('0x2a')]=this[_0xd861('0x1e')]['messageId'];_0x1fff58['html']=_0xd861('0x2b')+_[_0xd861('0x2c')](_0x1fff58[_0xd861('0xe')],_0xd861('0x2d'),'<div')+_0xd861('0x2e');_0x1fff58[_0xd861('0x2f')]={'Auto-Submitted':'auto-replied','X-Auto-Response-Suppress':_0xd861('0x30'),'Precedence':'auto_reply'};return mailRpc[_0xd861('0x31')](this[_0xd861('0x25')][_0xd861('0x32')],_0x1fff58)[_0xd861('0x33')](function(_0x22d86d){logger['info']('[%s][AUTOREPLY]\x20SMTP\x20SENT',_0x1ffa1e);_0x1fff58['messageId']=_0x22d86d[_0xd861('0x1e')][_0xd861('0x34')];return rpc[_0x519665+'Message'][_0xd861('0x35')](_0x1fff58);})[_0xd861('0x33')](function(_0x5091a1){logger[_0xd861('0xf')](_0xd861('0x10'),_0x1ffa1e,JSON[_0xd861('0x36')](_0x5091a1));})[_0xd861('0x37')](function(_0x35b87d){logger[_0xd861('0x38')](_0xd861('0x39'),_0x1ffa1e,JSON['stringify'](_0x35b87d));})['finally'](function(){Promise['resolve']()[_0xd861('0x33')](function(){if(_0x320c35[0x0]!=='2'||_0x4de030[_0xd861('0x16')])return;return rpc[_0x519665+_0xd861('0x3a')][_0xd861('0x3b')](_0x4de030['id'],{'autoreplyExecuted':!![]})[_0xd861('0x33')](function(_0x4516dc){logger[_0xd861('0xf')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1ffa1e,JSON[_0xd861('0x36')](_0x4516dc));})['catch'](function(_0x4399f2){logger['error']('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x1ffa1e,JSON[_0xd861('0x36')](_0x4399f2));});})[_0xd861('0x33')](function(){_0x14429a[_0xd861('0x12')]();});});}else{return rpc[this[_0xd861('0xd')]+'Message']['create'](_0x1fff58)[_0xd861('0x33')](function(){logger[_0xd861('0xf')](_0xd861('0x10'),_0x1ffa1e,_0x1fff58[_0xd861('0xe')]);})[_0xd861('0x37')](function(_0x4e83ba){logger[_0xd861('0x38')](_0xd861('0x10'),_0x1ffa1e,JSON['stringify'](_0x4e83ba));})[_0xd861('0x3c')](function(){Promise[_0xd861('0x3d')]()[_0xd861('0x33')](function(){if(_0x320c35[0x0]!=='2'||_0x4de030[_0xd861('0x16')])return;return rpc[_0x519665+'Interaction'][_0xd861('0x3b')](_0x4de030['id'],{'autoreplyExecuted':!![]})['then'](function(_0x29c875){logger['info'](_0xd861('0x17'),_0x1ffa1e,JSON[_0xd861('0x36')](_0x29c875));})['catch'](function(_0x477fba){logger[_0xd861('0x38')](_0xd861('0x3e'),_0x1ffa1e,JSON['stringify'](_0x477fba));});})[_0xd861('0x33')](function(){_0x14429a['next']();});});}}}catch(_0x325fa8){logger[_0xd861('0x38')](_0xd861('0x10'),_0x1ffa1e,JSON[_0xd861('0x36')](_0x325fa8));_0x14429a[_0xd861('0x3f')]();}};};
\ No newline at end of file
+var _0x15ce=['then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','stringify','catch','error','[RPC][%s][AUTOREPLY]\x20%s','finally','resolve','Interaction','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','moment','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','isNil','interaction','created','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','next','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','format','out','mail','getMustacheRender','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','upperFirst','account','InteractionId','Message','messageId','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','smtpOptions'];(function(_0x2dd36c,_0x5a645b){var _0x2c63ea=function(_0x4d4020){while(--_0x4d4020){_0x2dd36c['push'](_0x2dd36c['shift']());}};_0x2c63ea(++_0x5a645b);}(_0x15ce,0xd5));var _0xe15c=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x15ce[_0x502c7d];return _0x30b7ed;};'use strict';var _=require(_0xe15c('0x0'));var moment=require(_0xe15c('0x1'));var utils=require(_0xe15c('0x2'));var logger=require('../../../../config/logger')('routing');var rpc={'chatMessage':require(_0xe15c('0x3')),'openchannelMessage':require(_0xe15c('0x4')),'mailMessage':require(_0xe15c('0x5')),'smsMessage':require(_0xe15c('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xe15c('0x7')),'chatInteraction':require(_0xe15c('0x8')),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'mailInteraction':require(_0xe15c('0x9')),'smsInteraction':require(_0xe15c('0xa')),'faxInteraction':require(_0xe15c('0xb')),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var mailRpc=require(_0xe15c('0xc'));exports[_0xe15c('0xd')]=function(_0x62ce7d,_0x5c860d,_0x26eeba,_0x8488d4){return function(_0x54adb5){try{var _0x1ec806=this[_0xe15c('0xe')];if(_0x1ec806==='mail'&&_0x8488d4[_0xe15c('0xf')][_0xe15c('0x10')]){logger[_0xe15c('0x11')]('[%s][AUTOREPLY]\x20%s',_0x62ce7d,_0xe15c('0x12'));return _0x54adb5['next']();}if(_0x5c860d[0x0]==='1'&&(_[_0xe15c('0x13')](this[_0xe15c('0x14')]['created'])||!this[_0xe15c('0x14')][_0xe15c('0x15')])){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,_0xe15c('0x17'));return _0x54adb5[_0xe15c('0x18')]();}if(_0x5c860d[0x0]==='2'&&this[_0xe15c('0x14')][_0xe15c('0x19')]){logger[_0xe15c('0x11')](_0xe15c('0x1a'),_0x62ce7d,_0xe15c('0x1b'));return _0x54adb5[_0xe15c('0x18')]();}var _0x53bb7d={'ContactId':this[_0xe15c('0x1c')]['id'],'sentAt':moment()[_0xe15c('0x1d')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xe15c('0x1e')};if(this[_0xe15c('0xe')]===_0xe15c('0x1f')){_0x53bb7d[_0xe15c('0xf')]=utils[_0xe15c('0x20')](_0x5c860d[0x2],this);}else{_0x53bb7d[_0xe15c('0xf')]=utils[_0xe15c('0x20')](_0x5c860d[0x1],this);}if(this[_0xe15c('0x21')]){_0x53bb7d['to']=this['message'][_0xe15c('0x22')]||'';if(this['channel']==='mail'&&_0x5c860d[0x1]==='1'){_0x53bb7d['cc']=this[_0xe15c('0x21')]['cc']||'';}_0x53bb7d[_0xe15c('0x22')]=this['message']['to']||'';_0x53bb7d[_0xe15c('0x23')]=this[_0xe15c('0x21')][_0xe15c('0x23')]||'';_0x53bb7d[_0xe15c('0x24')]=!![];if(this['message'][_0xe15c('0x25')]){_0x53bb7d['subject']='';_0x53bb7d['subject']+=_[_0xe15c('0x26')](this[_0xe15c('0x21')][_0xe15c('0x25')],_0xe15c('0x27'))?'':_0xe15c('0x28');_0x53bb7d[_0xe15c('0x25')]+=this['message'][_0xe15c('0x25')];}}if(this['channel']===_0xe15c('0x29')){_0x53bb7d[_0xe15c('0x2a')]=this['account']['id'];}else{_0x53bb7d[_[_0xe15c('0x2b')](this[_0xe15c('0xe')])+'AccountId']=this[_0xe15c('0x2c')]['id'];}_0x53bb7d[_[_0xe15c('0x2b')](this[_0xe15c('0xe')])+_0xe15c('0x2d')]=this[_0xe15c('0x14')]['id'];var _0x46e2fd=this['interaction'];if(rpc[this[_0xe15c('0xe')]+_0xe15c('0x2e')]){if(this[_0xe15c('0xe')]==='mail'){_0x53bb7d['inReplyTo']=this[_0xe15c('0x21')][_0xe15c('0x2f')];_0x53bb7d['html']='<div\x20id=\x22xm-mail-content\x22>'+_['replace'](_0x53bb7d[_0xe15c('0xf')],_0xe15c('0x30'),_0xe15c('0x31'))+_0xe15c('0x32');_0x53bb7d['headers']={'Auto-Submitted':_0xe15c('0x33'),'X-Auto-Response-Suppress':_0xe15c('0x34'),'Precedence':_0xe15c('0x35')};return mailRpc['sendMailMessage'](this['account'][_0xe15c('0x36')],_0x53bb7d)[_0xe15c('0x37')](function(_0x31c119){logger['info'](_0xe15c('0x38'),_0x62ce7d);_0x53bb7d[_0xe15c('0x2f')]=_0x31c119[_0xe15c('0x21')][_0xe15c('0x2f')];return rpc[_0x1ec806+'Message'][_0xe15c('0x39')](_0x53bb7d);})['then'](function(_0x18a6c9){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x18a6c9));})[_0xe15c('0x3b')](function(_0x5ee3d3){logger[_0xe15c('0x3c')](_0xe15c('0x3d'),_0x62ce7d,JSON['stringify'](_0x5ee3d3));})[_0xe15c('0x3e')](function(){Promise[_0xe15c('0x3f')]()[_0xe15c('0x37')](function(){if(_0x5c860d[0x0]!=='2'||_0x46e2fd[_0xe15c('0x19')])return;return rpc[_0x1ec806+_0xe15c('0x40')]['update'](_0x46e2fd['id'],{'autoreplyExecuted':!![]})[_0xe15c('0x37')](function(_0x53c914){logger[_0xe15c('0x11')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x62ce7d,JSON['stringify'](_0x53c914));})[_0xe15c('0x3b')](function(_0x473811){logger['error'](_0xe15c('0x41'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x473811));});})[_0xe15c('0x37')](function(){_0x54adb5[_0xe15c('0x18')]();});});}else{return rpc[this[_0xe15c('0xe')]+_0xe15c('0x2e')][_0xe15c('0x39')](_0x53bb7d)[_0xe15c('0x37')](function(){logger[_0xe15c('0x11')](_0xe15c('0x16'),_0x62ce7d,_0x53bb7d[_0xe15c('0xf')]);})['catch'](function(_0x47e9fd){logger[_0xe15c('0x3c')](_0xe15c('0x16'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x47e9fd));})[_0xe15c('0x3e')](function(){Promise[_0xe15c('0x3f')]()[_0xe15c('0x37')](function(){if(_0x5c860d[0x0]!=='2'||_0x46e2fd[_0xe15c('0x19')])return;return rpc[_0x1ec806+_0xe15c('0x40')]['update'](_0x46e2fd['id'],{'autoreplyExecuted':!![]})['then'](function(_0x4ecbca){logger[_0xe15c('0x11')](_0xe15c('0x1a'),_0x62ce7d,JSON['stringify'](_0x4ecbca));})[_0xe15c('0x3b')](function(_0x2cafd1){logger[_0xe15c('0x3c')](_0xe15c('0x41'),_0x62ce7d,JSON[_0xe15c('0x3a')](_0x2cafd1));});})['then'](function(){_0x54adb5['next']();});});}}}catch(_0x1a9c93){logger['error']('[%s][AUTOREPLY]\x20%s',_0x62ce7d,JSON[_0xe15c('0x3a')](_0x1a9c93));_0x54adb5[_0xe15c('0x42')]();}};};
\ No newline at end of file
index 2a73151..ef86521 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e17=['stop','moment','../../../../config/logger','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','[%s][CLOSE]\x20reason\x20%s','format','system','Interaction','channel','interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','[%s][CLOSE]\x20%s','stringify','finally','error'];(function(_0x54fd79,_0x4bce86){var _0x55582d=function(_0xcd4869){while(--_0xcd4869){_0x54fd79['push'](_0x54fd79['shift']());}};_0x55582d(++_0x4bce86);}(_0x2e17,0x1a5));var _0x72e1=function(_0x2d9c6a,_0x59393d){_0x2d9c6a=_0x2d9c6a-0x0;var _0xf3c918=_0x2e17[_0x2d9c6a];return _0xf3c918;};'use strict';var moment=require(_0x72e1('0x0'));var logger=require(_0x72e1('0x1'))('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0x72e1('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require(_0x72e1('0x3')),'faxInteraction':require(_0x72e1('0x4')),'whatsappInteraction':require(_0x72e1('0x5'))};exports['consequence']=function(_0xce0036,_0x2a1571,_0x276449,_0x3cd890){return function(_0x33d3c0){try{logger['info'](_0x72e1('0x6'),_0xce0036,_0x2a1571[0x0]);var _0x28f042={'closed':0x1,'closedAt':moment()[_0x72e1('0x7')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':_0x72e1('0x8'),'disposition':_0x2a1571[0x0]};if(rpc[_0x3cd890['channel']+_0x72e1('0x9')]){rpc[_0x3cd890[_0x72e1('0xa')]+'Interaction']['update'](_0x3cd890[_0x72e1('0xb')]['id'],_0x28f042)[_0x72e1('0xc')](function(_0x11bb53){logger[_0x72e1('0xd')](_0x72e1('0xe'),_0xce0036,_0x3cd890[_0x72e1('0xb')]['id']);})[_0x72e1('0xf')](function(_0x208550){logger['error'](_0x72e1('0x10'),_0xce0036,JSON[_0x72e1('0x11')](_0x208550));})[_0x72e1('0x12')](function(){_0x33d3c0['stop']();});}}catch(_0x32eb04){logger[_0x72e1('0x13')](_0x72e1('0x10'),_0xce0036,JSON[_0x72e1('0x11')](_0x32eb04));_0x33d3c0[_0x72e1('0x14')]();}};};
\ No newline at end of file
+var _0xde42=['../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','channel','Interaction','update','interaction','then','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!','catch','error','[%s][CLOSE]\x20%s','finally','stop','stringify','moment','../../../../config/logger','routing'];(function(_0x2312a8,_0x3b96b1){var _0x2ab51a=function(_0xc03943){while(--_0xc03943){_0x2312a8['push'](_0x2312a8['shift']());}};_0x2ab51a(++_0x3b96b1);}(_0xde42,0x123));var _0x2de4=function(_0x3ad54a,_0x33f0e2){_0x3ad54a=_0x3ad54a-0x0;var _0x18f50f=_0xde42[_0x3ad54a];return _0x18f50f;};'use strict';var moment=require(_0x2de4('0x0'));var logger=require(_0x2de4('0x1'))(_0x2de4('0x2'));var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x2de4('0x3')),'mailInteraction':require(_0x2de4('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x2de4('0x5'))};exports[_0x2de4('0x6')]=function(_0x58113c,_0x376a28,_0x346278,_0x393a87){return function(_0x32423b){try{logger['info'](_0x2de4('0x7'),_0x58113c,_0x376a28[0x0]);var _0x66cdb3={'closed':0x1,'closedAt':moment()[_0x2de4('0x8')]('YYYY-MM-DD\x20HH:mm:ss'),'closeReason':'system','disposition':_0x376a28[0x0]};if(rpc[_0x393a87[_0x2de4('0x9')]+_0x2de4('0xa')]){rpc[_0x393a87[_0x2de4('0x9')]+_0x2de4('0xa')][_0x2de4('0xb')](_0x393a87[_0x2de4('0xc')]['id'],_0x66cdb3)[_0x2de4('0xd')](function(_0x4b974d){logger['info'](_0x2de4('0xe'),_0x58113c,_0x393a87[_0x2de4('0xc')]['id']);})[_0x2de4('0xf')](function(_0x415071){logger[_0x2de4('0x10')](_0x2de4('0x11'),_0x58113c,JSON['stringify'](_0x415071));})[_0x2de4('0x12')](function(){_0x32423b[_0x2de4('0x13')]();});}}catch(_0x42972c){logger[_0x2de4('0x10')](_0x2de4('0x11'),_0x58113c,JSON[_0x2de4('0x14')](_0x42972c));_0x32423b[_0x2de4('0x13')]();}};};
\ No newline at end of file
index 8f87fff..f93ef16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x510e=['fulfillment','speech','dialogflow','stringify','result','metadata','endConversation','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','finally','stop','textRequest','message'];(function(_0x1df3ec,_0x3a8b71){var _0x353b67=function(_0x50c290){while(--_0x50c290){_0x1df3ec['push'](_0x1df3ec['shift']());}};_0x353b67(++_0x3a8b71);}(_0x510e,0x1ed));var _0xe510=function(_0x599e60,_0x5b6519){_0x599e60=_0x599e60-0x0;var _0x468e19=_0x510e[_0x599e60];return _0x468e19;};'use strict';var _=require(_0xe510('0x0'));var moment=require(_0xe510('0x1'));var apiai=require(_0xe510('0x2'));var md5=require(_0xe510('0x3'));var utils=require(_0xe510('0x4'));var logger=require(_0xe510('0x5'))(_0xe510('0x6'));var rpc={'chatMessage':require(_0xe510('0x7')),'openchannelMessage':require(_0xe510('0x8')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xe510('0x9')),'faxMessage':require(_0xe510('0xa')),'whatsappMessage':require(_0xe510('0xb'))};exports[_0xe510('0xc')]=function(_0x26cffc,_0x18ec55){return function(_0x27ca15){try{if(!_[_0xe510('0xd')](this[_0xe510('0xe')][_0xe510('0xf')])){logger[_0xe510('0x10')](_0xe510('0x11'),_0x26cffc,_0xe510('0x12'));return _0x27ca15[_0xe510('0x13')]();}var _0x521561={'ContactId':this[_0xe510('0x14')]['id'],'sentAt':moment()[_0xe510('0x15')](_0xe510('0x16')),'direction':_0xe510('0x17')};if(this[_0xe510('0x18')]===_0xe510('0x19')||this['channel']===_0xe510('0x1a')){_0x521561[_0xe510('0x1b')]=this[_0xe510('0xe')][_0xe510('0x1b')];}var _0x2efee5=this[_0xe510('0x18')];if(_0x2efee5===_0xe510('0x1c')){_0x521561[_0xe510('0x1d')]=this[_0xe510('0x1e')]['id'];}else{_0x521561[_[_0xe510('0x1f')](_0x2efee5)+_0xe510('0x20')]=this[_0xe510('0x1e')]['id'];}_0x521561[_['upperFirst'](_0x2efee5)+_0xe510('0x21')]=this['interaction']['id'];if(this['interaction'][_0xe510('0x22')]){var _0x43b191=_0x18ec55[0x2];if(!_[_0xe510('0x23')](_0x43b191)){_0x521561[_0xe510('0x24')]=utils[_0xe510('0x25')](_0x43b191,this);return rpc[_0x2efee5+_0xe510('0x26')][_0xe510('0x27')](_0x521561)[_0xe510('0x28')](function(_0x48e676){logger[_0xe510('0x10')](_0xe510('0x11'),_0x26cffc,_0x521561[_0xe510('0x24')]);})[_0xe510('0x29')](function(_0x3177d6){logger[_0xe510('0x2a')](_0xe510('0x11'),_0x26cffc,JSON['stringify'](_0x3177d6));})[_0xe510('0x2b')](function(){logger[_0xe510('0x10')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x26cffc);_0x27ca15[_0xe510('0x2c')]();});}else{logger[_0xe510('0x10')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x26cffc);_0x27ca15[_0xe510('0x2c')]();}}else{var _0x460d28=this;var _0x4a0c3d=apiai(_0x18ec55[0x0],{'language':_0x18ec55[0x1]||'en'});return _0x4a0c3d[_0xe510('0x2d')](this[_0xe510('0x2e')][_0xe510('0x24')],{'sessionId':md5(this[_0xe510('0xe')]['id'])})[_0xe510('0x28')](function(_0x4c034f){_0x460d28[_0xe510('0x24')]['dialogflow']=_0x4c034f;_0x521561['body']=_0x4c034f['result'][_0xe510('0x2f')][_0xe510('0x30')];_0x521561['providerName']=_0xe510('0x31');_0x521561['providerResponse']=JSON[_0xe510('0x32')](_0x4c034f);return rpc[_0x2efee5+_0xe510('0x26')][_0xe510('0x27')](_0x521561)[_0xe510('0x28')](function(_0x1cd9c4){logger[_0xe510('0x10')](_0xe510('0x11'),_0x26cffc,_0x521561[_0xe510('0x24')]);if(_0x4c034f[_0xe510('0x33')][_0xe510('0x34')][_0xe510('0x35')]){_0x27ca15['next']();}else{_0x27ca15[_0xe510('0x2c')]();}})[_0xe510('0x29')](function(_0x49a33f){logger['error'](_0xe510('0x11'),_0x26cffc,JSON[_0xe510('0x32')](_0x49a33f));_0x27ca15['next']();});})[_0xe510('0x29')](function(_0x40008f){logger[_0xe510('0x2a')](_0xe510('0x11'),_0x26cffc,_0x40008f[_0xe510('0x2e')]);_0x27ca15['next']();});}}catch(_0x3a194a){logger[_0xe510('0x2a')](_0xe510('0x11'),_0x26cffc,JSON[_0xe510('0x32')](_0x3a194a));_0x27ca15[_0xe510('0x2c')]();}};};
\ No newline at end of file
+var _0x022a=['result','speech','providerResponse','metadata','endConversation','next','lodash','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','consequence','isNil','interaction','UserId','info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','contact','format','out','sms','channel','phone','account','AccountId','upperFirst','InteractionId','created','isEmpty','body','getMustacheRender','Message','create','then','catch','error','stringify','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow'];(function(_0x3dcf6a,_0x3d0984){var _0x1be2f8=function(_0x4ee878){while(--_0x4ee878){_0x3dcf6a['push'](_0x3dcf6a['shift']());}};_0x1be2f8(++_0x3d0984);}(_0x022a,0x1f0));var _0xa022=function(_0x1d6e56,_0x1959b9){_0x1d6e56=_0x1d6e56-0x0;var _0xef8e84=_0x022a[_0x1d6e56];return _0xef8e84;};'use strict';var _=require(_0xa022('0x0'));var moment=require(_0xa022('0x1'));var apiai=require(_0xa022('0x2'));var md5=require(_0xa022('0x3'));var utils=require(_0xa022('0x4'));var logger=require(_0xa022('0x5'))(_0xa022('0x6'));var rpc={'chatMessage':require(_0xa022('0x7')),'openchannelMessage':require(_0xa022('0x8')),'mailMessage':require(_0xa022('0x9')),'smsMessage':require(_0xa022('0xa')),'faxMessage':require(_0xa022('0xb')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0xa022('0xc')]=function(_0x580bb3,_0x4d99c5){return function(_0x393854){try{if(!_[_0xa022('0xd')](this[_0xa022('0xe')][_0xa022('0xf')])){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0xa022('0x12'));return _0x393854['next']();}var _0x112ac4={'ContactId':this[_0xa022('0x13')]['id'],'sentAt':moment()[_0xa022('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0xa022('0x15')};if(this['channel']===_0xa022('0x16')||this[_0xa022('0x17')]==='whatsapp'){_0x112ac4['phone']=this[_0xa022('0xe')][_0xa022('0x18')];}var _0x45b9e6=this[_0xa022('0x17')];if(_0x45b9e6==='chat'){_0x112ac4['ChatWebsiteId']=this[_0xa022('0x19')]['id'];}else{_0x112ac4[_['upperFirst'](_0x45b9e6)+_0xa022('0x1a')]=this[_0xa022('0x19')]['id'];}_0x112ac4[_[_0xa022('0x1b')](_0x45b9e6)+_0xa022('0x1c')]=this[_0xa022('0xe')]['id'];if(this[_0xa022('0xe')][_0xa022('0x1d')]){var _0x1e27d5=_0x4d99c5[0x2];if(!_[_0xa022('0x1e')](_0x1e27d5)){_0x112ac4[_0xa022('0x1f')]=utils[_0xa022('0x20')](_0x1e27d5,this);return rpc[_0x45b9e6+_0xa022('0x21')][_0xa022('0x22')](_0x112ac4)[_0xa022('0x23')](function(_0x5aafa5){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0x112ac4[_0xa022('0x1f')]);})[_0xa022('0x24')](function(_0x3e4cd3){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x3e4cd3));})['finally'](function(){logger['info'](_0xa022('0x27'),_0x580bb3);_0x393854[_0xa022('0x28')]();});}else{logger['info'](_0xa022('0x29'),_0x580bb3);_0x393854[_0xa022('0x28')]();}}else{var _0x2d0c76=this;var _0x24b800=apiai(_0x4d99c5[0x0],{'language':_0x4d99c5[0x1]||'en'});return _0x24b800['textRequest'](this['message'][_0xa022('0x1f')],{'sessionId':md5(this[_0xa022('0xe')]['id'])})[_0xa022('0x23')](function(_0xf730bd){_0x2d0c76[_0xa022('0x1f')][_0xa022('0x2a')]=_0xf730bd;_0x112ac4['body']=_0xf730bd[_0xa022('0x2b')]['fulfillment'][_0xa022('0x2c')];_0x112ac4['providerName']=_0xa022('0x2a');_0x112ac4[_0xa022('0x2d')]=JSON[_0xa022('0x26')](_0xf730bd);return rpc[_0x45b9e6+'Message'][_0xa022('0x22')](_0x112ac4)[_0xa022('0x23')](function(_0x2fec7c){logger[_0xa022('0x10')](_0xa022('0x11'),_0x580bb3,_0x112ac4[_0xa022('0x1f')]);if(_0xf730bd[_0xa022('0x2b')][_0xa022('0x2e')][_0xa022('0x2f')]){_0x393854['next']();}else{_0x393854[_0xa022('0x28')]();}})[_0xa022('0x24')](function(_0x6fc8a9){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x6fc8a9));_0x393854[_0xa022('0x30')]();});})['catch'](function(_0xf4cce7){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,_0xf4cce7['message']);_0x393854[_0xa022('0x30')]();});}}catch(_0x461bda){logger[_0xa022('0x25')]('[%s][DIALOGFLOW]\x20%s',_0x580bb3,JSON[_0xa022('0x26')](_0x461bda));_0x393854[_0xa022('0x28')]();}};};
\ No newline at end of file
index 59597c1..23922c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fc8=['AccountId','interaction','created','stop','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','SessionsClient','message','detectIntent','length','dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','queryText','DIALOGFLOWV2_SCORE','providerResponse','fulfillmentText','push','all','dialogflow','moment','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','body','Message','create','then','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','next','contact','format','out','channel','whatsapp','phone','chat','ChatWebsiteId','upperFirst'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x1fc8,0x110));var _0x81fc=function(_0x24b49f,_0x2bdc19){_0x24b49f=_0x24b49f-0x0;var _0x26d9af=_0x1fc8[_0x24b49f];return _0x26d9af;};'use strict';var _=require('lodash');var dialogflow=require(_0x81fc('0x0'));var md5=require('md5');var moment=require(_0x81fc('0x1'));var Promise=require('bluebird');var logger=require(_0x81fc('0x2'))(_0x81fc('0x3'));var utils=require('./utils');var rpc={'chatMessage':require(_0x81fc('0x4')),'openchannelMessage':require(_0x81fc('0x5')),'mailMessage':require(_0x81fc('0x6')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x81fc('0x7')),'whatsappMessage':require('../../rpc/whatsappMessage')};function createMessage(_0x4527db,_0x234438,_0x20c580,_0x220d01){return new Promise(function(_0x419004,_0x4688e7){var _0x436d9d=_['clone'](_0x20c580);_0x436d9d[_0x81fc('0x8')]=_0x220d01;return rpc[_0x234438+_0x81fc('0x9')][_0x81fc('0xa')](_0x436d9d)[_0x81fc('0xb')](function(){logger[_0x81fc('0xc')](_0x81fc('0xd'),_0x4527db,_0x436d9d[_0x81fc('0x8')]);_0x419004();})[_0x81fc('0xe')](function(_0x5f007c){logger[_0x81fc('0xf')](_0x81fc('0xd'),_0x4527db,JSON[_0x81fc('0x10')](_0x5f007c));_0x4688e7(_0x5f007c);});});}exports[_0x81fc('0x11')]=function(_0x1f90cb,_0x110bd8){return function(_0x199058){try{if(!_['isNil'](this['interaction']['UserId'])){logger[_0x81fc('0xc')](_0x81fc('0xd'),_0x1f90cb,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x199058[_0x81fc('0x12')]();}var _0x430471={'ContactId':this[_0x81fc('0x13')]['id'],'sentAt':moment()[_0x81fc('0x14')]('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x81fc('0x15')};if(this[_0x81fc('0x16')]==='sms'||this['channel']===_0x81fc('0x17')){_0x430471[_0x81fc('0x18')]=this['interaction'][_0x81fc('0x18')];}var _0x1f6349=this['channel'];if(_0x1f6349===_0x81fc('0x19')){_0x430471[_0x81fc('0x1a')]=this['account']['id'];}else{_0x430471[_[_0x81fc('0x1b')](_0x1f6349)+_0x81fc('0x1c')]=this['account']['id'];}_0x430471[_[_0x81fc('0x1b')](_0x1f6349)+'InteractionId']=this[_0x81fc('0x1d')]['id'];if(this[_0x81fc('0x1d')][_0x81fc('0x1e')]){var _0x32479b=_0x110bd8[0x4];if(!_['isEmpty'](_0x32479b)){_0x430471['body']=utils['getMustacheRender'](_0x32479b,this);return rpc[_0x1f6349+_0x81fc('0x9')]['create'](_0x430471)['then'](function(_0x1d6c8f){logger[_0x81fc('0xc')]('[%s][DIALOGFLOWV2]\x20%s',_0x1f90cb,_0x430471['body']);})[_0x81fc('0xe')](function(_0x3bf046){logger['error'](_0x81fc('0xd'),_0x1f90cb,JSON['stringify'](_0x3bf046));})['finally'](function(){logger[_0x81fc('0xc')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0x1f90cb);_0x199058[_0x81fc('0x1f')]();});}else{logger[_0x81fc('0xc')](_0x81fc('0x20'),_0x1f90cb);_0x199058[_0x81fc('0x1f')]();}}else{var _0xd35f59=this;var _0xed9016=_0x110bd8[0x2]['replace'](/\\n/g,'\x0a');var _0x151dc6={'credentials':{'private_key':_0xed9016,'client_email':_0x110bd8[0x1]}};var _0xedad97=new dialogflow[(_0x81fc('0x21'))](_0x151dc6);var _0x1b9540=_0xedad97['sessionPath'](_0x110bd8[0x0],md5(_0xd35f59[_0x81fc('0x1d')]['id']));var _0x444f94={'session':_0x1b9540,'queryInput':{'text':{'text':_0xd35f59[_0x81fc('0x22')]['body'],'languageCode':_0x110bd8[0x3]||'en'}}};return _0xedad97[_0x81fc('0x23')](_0x444f94)[_0x81fc('0xb')](function(_0x4ab73c){if(_0x4ab73c&&_0x4ab73c[_0x81fc('0x24')]){_0xd35f59[_0x81fc('0x8')][_0x81fc('0x25')]=_0x4ab73c;var _0x341170=_0x4ab73c[0x0];var _0x332dba=_0x341170[_0x81fc('0x26')][_0x81fc('0x27')]&&_0x341170[_0x81fc('0x26')][_0x81fc('0x27')][_0x81fc('0x28')]?_0x341170[_0x81fc('0x26')][_0x81fc('0x27')][_0x81fc('0x28')][_0x81fc('0x29')][_0x81fc('0x2a')]:![];_0xd35f59[_0x81fc('0x8')][_0x81fc('0x2b')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x2c')];_0xd35f59[_0x81fc('0x8')][_0x81fc('0x2d')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x2e')];_0xd35f59['body'][_0x81fc('0x2f')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x27')]&&_0x341170['queryResult'][_0x81fc('0x27')][_0x81fc('0x28')]?_0x341170[_0x81fc('0x26')]['diagnosticInfo'][_0x81fc('0x28')][_0x81fc('0x29')]['boolValue']:![];_0xd35f59[_0x81fc('0x8')]['DIALOGFLOWV2_INTENTNAME']=_0x341170[_0x81fc('0x26')]['intent'][_0x81fc('0x30')];_0xd35f59['body'][_0x81fc('0x31')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x32')]['displayName'];_0xd35f59[_0x81fc('0x8')]['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x341170[_0x81fc('0x26')][_0x81fc('0x32')]['isFallback'];_0xd35f59[_0x81fc('0x8')][_0x81fc('0x33')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x34')];_0xd35f59[_0x81fc('0x8')][_0x81fc('0x35')]=_0x341170[_0x81fc('0x26')][_0x81fc('0x36')];_0xd35f59['body'][_0x81fc('0x37')]=_0x341170['queryResult']['intentDetectionConfidence'];_0x430471['providerName']=_0x81fc('0x25');_0x430471[_0x81fc('0x38')]=JSON['stringify'](_0x4ab73c);var _0x489b57=[];for(var _0x10da92=0x0;_0x10da92<_0x4ab73c['length'];_0x10da92++){var _0x2ed4d3=_0x4ab73c[_0x10da92];if(_0x2ed4d3&&_0x2ed4d3[_0x81fc('0x26')]&&_0x2ed4d3['queryResult'][_0x81fc('0x39')]){_0x489b57[_0x81fc('0x3a')](createMessage(_0x1f90cb,_0x1f6349,_0x430471,_0x2ed4d3[_0x81fc('0x26')][_0x81fc('0x39')]));}}return Promise[_0x81fc('0x3b')](_0x489b57)[_0x81fc('0xb')](function(){if(_0x332dba){_0x199058[_0x81fc('0x12')]();}else{_0x199058[_0x81fc('0x1f')]();}})[_0x81fc('0xe')](function(_0x115859){logger[_0x81fc('0xf')](_0x81fc('0xd'),_0x1f90cb,JSON[_0x81fc('0x10')](_0x115859));_0x199058[_0x81fc('0x12')]();});}})[_0x81fc('0xe')](function(_0x20c603){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x1f90cb,_0x20c603['message']);_0x199058[_0x81fc('0x12')]();});}}catch(_0x3b313e){logger[_0x81fc('0xf')]('[%s][DIALOGFLOWV2]\x20%s',_0x1f90cb,JSON[_0x81fc('0x10')](_0x3b313e));_0x199058[_0x81fc('0x1f')]();}};};
\ No newline at end of file
+var _0xe3cb=['moment','bluebird','../../../../config/logger','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','consequence','info','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp','phone','interaction','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','catch','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','dialogflowV2','diagnosticInfo','fields','queryResult','end_conversation','boolValue','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','DIALOGFLOWV2_INTENTNAME','name','DIALOGFLOWV2_INTENTDISPLAYNAME','intent','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','DIALOGFLOWV2_QUERYTEXT','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','length','fulfillmentText','all','lodash','dialogflow','md5'];(function(_0x1655bb,_0x5a82ae){var _0x5e2020=function(_0x1ccfb4){while(--_0x1ccfb4){_0x1655bb['push'](_0x1655bb['shift']());}};_0x5e2020(++_0x5a82ae);}(_0xe3cb,0xd5));var _0xbe3c=function(_0x18ca0f,_0x436501){_0x18ca0f=_0x18ca0f-0x0;var _0x563a56=_0xe3cb[_0x18ca0f];return _0x563a56;};'use strict';var _=require(_0xbe3c('0x0'));var dialogflow=require(_0xbe3c('0x1'));var md5=require(_0xbe3c('0x2'));var moment=require(_0xbe3c('0x3'));var Promise=require(_0xbe3c('0x4'));var logger=require(_0xbe3c('0x5'))(_0xbe3c('0x6'));var utils=require('./utils');var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xbe3c('0x7')),'smsMessage':require(_0xbe3c('0x8')),'faxMessage':require(_0xbe3c('0x9')),'whatsappMessage':require(_0xbe3c('0xa'))};function createMessage(_0x49037a,_0x468262,_0x3c9da,_0x195b92){return new Promise(function(_0xf94ed5,_0x14612a){var _0xc14413=_[_0xbe3c('0xb')](_0x3c9da);_0xc14413[_0xbe3c('0xc')]=_0x195b92;return rpc[_0x468262+'Message'][_0xbe3c('0xd')](_0xc14413)[_0xbe3c('0xe')](function(){logger['info'](_0xbe3c('0xf'),_0x49037a,_0xc14413[_0xbe3c('0xc')]);_0xf94ed5();})['catch'](function(_0x339f77){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x49037a,JSON[_0xbe3c('0x11')](_0x339f77));_0x14612a(_0x339f77);});});}exports[_0xbe3c('0x12')]=function(_0x532c24,_0x1c1b1c){return function(_0x3375eb){try{if(!_['isNil'](this['interaction']['UserId'])){logger[_0xbe3c('0x13')]('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x3375eb[_0xbe3c('0x14')]();}var _0x21f2b0={'ContactId':this[_0xbe3c('0x15')]['id'],'sentAt':moment()[_0xbe3c('0x16')](_0xbe3c('0x17')),'direction':_0xbe3c('0x18')};if(this[_0xbe3c('0x19')]===_0xbe3c('0x1a')||this[_0xbe3c('0x19')]===_0xbe3c('0x1b')){_0x21f2b0[_0xbe3c('0x1c')]=this[_0xbe3c('0x1d')][_0xbe3c('0x1c')];}var _0x2c53ee=this['channel'];if(_0x2c53ee===_0xbe3c('0x1e')){_0x21f2b0[_0xbe3c('0x1f')]=this[_0xbe3c('0x20')]['id'];}else{_0x21f2b0[_[_0xbe3c('0x21')](_0x2c53ee)+'AccountId']=this[_0xbe3c('0x20')]['id'];}_0x21f2b0[_['upperFirst'](_0x2c53ee)+_0xbe3c('0x22')]=this[_0xbe3c('0x1d')]['id'];if(this[_0xbe3c('0x1d')][_0xbe3c('0x23')]){var _0x6ce5ad=_0x1c1b1c[0x4];if(!_[_0xbe3c('0x24')](_0x6ce5ad)){_0x21f2b0[_0xbe3c('0xc')]=utils[_0xbe3c('0x25')](_0x6ce5ad,this);return rpc[_0x2c53ee+_0xbe3c('0x26')][_0xbe3c('0xd')](_0x21f2b0)['then'](function(_0x557ef5){logger[_0xbe3c('0x13')](_0xbe3c('0xf'),_0x532c24,_0x21f2b0[_0xbe3c('0xc')]);})[_0xbe3c('0x27')](function(_0x36fc1a){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,JSON[_0xbe3c('0x11')](_0x36fc1a));})[_0xbe3c('0x28')](function(){logger[_0xbe3c('0x13')](_0xbe3c('0x29'),_0x532c24);_0x3375eb['stop']();});}else{logger[_0xbe3c('0x13')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x532c24);_0x3375eb[_0xbe3c('0x2a')]();}}else{var _0x260199=this;var _0x2b9961=_0x1c1b1c[0x2][_0xbe3c('0x2b')](/\\n/g,'\x0a');var _0xb96e38={'credentials':{'private_key':_0x2b9961,'client_email':_0x1c1b1c[0x1]}};var _0x72e9ae=new dialogflow[(_0xbe3c('0x2c'))](_0xb96e38);var _0xaca5f0=_0x72e9ae[_0xbe3c('0x2d')](_0x1c1b1c[0x0],md5(_0x260199[_0xbe3c('0x1d')]['id']));var _0x4f3c04={'session':_0xaca5f0,'queryInput':{'text':{'text':_0x260199[_0xbe3c('0x2e')][_0xbe3c('0xc')],'languageCode':_0x1c1b1c[0x3]||'en'}}};return _0x72e9ae['detectIntent'](_0x4f3c04)[_0xbe3c('0xe')](function(_0xffe02c){if(_0xffe02c&&_0xffe02c['length']){_0x260199[_0xbe3c('0xc')][_0xbe3c('0x2f')]=_0xffe02c;var _0x189e97=_0xffe02c[0x0];var _0x1d0020=_0x189e97['queryResult'][_0xbe3c('0x30')]&&_0x189e97['queryResult']['diagnosticInfo'][_0xbe3c('0x31')]?_0x189e97[_0xbe3c('0x32')]['diagnosticInfo'][_0xbe3c('0x31')][_0xbe3c('0x33')][_0xbe3c('0x34')]:![];_0x260199[_0xbe3c('0xc')]['DIALOGFLOWV2_ACTION']=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x35')];_0x260199[_0xbe3c('0xc')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x36')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x37')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x30')]&&_0x189e97[_0xbe3c('0x32')]['diagnosticInfo'][_0xbe3c('0x31')]?_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x30')][_0xbe3c('0x31')][_0xbe3c('0x33')]['boolValue']:![];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x38')]=_0x189e97[_0xbe3c('0x32')]['intent'][_0xbe3c('0x39')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3a')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3b')]['displayName'];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3c')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3b')][_0xbe3c('0x3d')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x3e')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x3f')];_0x260199[_0xbe3c('0xc')][_0xbe3c('0x40')]=_0x189e97[_0xbe3c('0x32')]['queryText'];_0x260199['body'][_0xbe3c('0x41')]=_0x189e97[_0xbe3c('0x32')][_0xbe3c('0x42')];_0x21f2b0[_0xbe3c('0x43')]=_0xbe3c('0x2f');_0x21f2b0[_0xbe3c('0x44')]=JSON['stringify'](_0xffe02c);var _0x57cdae=[];for(var _0x2c87c7=0x0;_0x2c87c7<_0xffe02c[_0xbe3c('0x45')];_0x2c87c7++){var _0x54c3f7=_0xffe02c[_0x2c87c7];if(_0x54c3f7&&_0x54c3f7[_0xbe3c('0x32')]&&_0x54c3f7['queryResult'][_0xbe3c('0x46')]){_0x57cdae['push'](createMessage(_0x532c24,_0x2c53ee,_0x21f2b0,_0x54c3f7['queryResult'][_0xbe3c('0x46')]));}}return Promise[_0xbe3c('0x47')](_0x57cdae)[_0xbe3c('0xe')](function(){if(_0x1d0020){_0x3375eb['next']();}else{_0x3375eb[_0xbe3c('0x2a')]();}})[_0xbe3c('0x27')](function(_0x203b8c){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x532c24,JSON[_0xbe3c('0x11')](_0x203b8c));_0x3375eb[_0xbe3c('0x14')]();});}})[_0xbe3c('0x27')](function(_0x3a20b4){logger[_0xbe3c('0x10')](_0xbe3c('0xf'),_0x532c24,_0x3a20b4[_0xbe3c('0x2e')]);_0x3375eb[_0xbe3c('0x14')]();});}}catch(_0x5a4929){logger[_0xbe3c('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x532c24,JSON[_0xbe3c('0x11')](_0x5a4929));_0x3375eb['stop']();}};};
\ No newline at end of file
index 1c2a833..1ea04dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f05=['./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','getMustacheRender','replace','length','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityTrue','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','next','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate'];(function(_0x26d26f,_0x302cce){var _0x5c8c0e=function(_0x519b9d){while(--_0x519b9d){_0x26d26f['push'](_0x26d26f['shift']());}};_0x5c8c0e(++_0x302cce);}(_0x7f05,0x1bf));var _0x57f0=function(_0x4f13e0,_0x2dee33){_0x4f13e0=_0x4f13e0-0x0;var _0x86c50c=_0x7f05[_0x4f13e0];return _0x86c50c;};'use strict';var schema=require(_0x57f0('0x0'));var _=require('lodash');var htmlToText=require('html-to-text');var utils=require(_0x57f0('0x1'));var logger=require(_0x57f0('0x2'))(_0x57f0('0x3'));var gotoif=schema({'condition':{'type':_0x57f0('0x4'),'required':!![],'message':_0x57f0('0x5')},'priorityTrue':{'type':_0x57f0('0x6'),'message':_0x57f0('0x7')},'priorityFalse':{'type':'number','message':_0x57f0('0x8')}});exports[_0x57f0('0x9')]=function(_0x209f40,_0x4bca09){return function(_0x5236d4){try{var _0x4bd8f4={'condition':htmlToText['fromString'](utils[_0x57f0('0xa')](_0x4bca09[0x0],this),{'wordwrap':![]})[_0x57f0('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x4bca09[0x1],'priorityFalse':_0x4bca09[0x2]};var _0x1c9722=gotoif[_0x57f0('0x0')](_0x4bd8f4,{'typecast':!![]});if(_0x1c9722[_0x57f0('0xc')]){logger[_0x57f0('0xd')](_0x57f0('0xe'),_0x209f40,_[_0x57f0('0xf')](_0x1c9722,'message')[_0x57f0('0x10')](',\x20'));_0x5236d4[_0x57f0('0x11')]();}else{try{var _0x56be3d=eval('('+_0x4bd8f4['condition']+')');var _0x4d4850=_0x56be3d?_0x4bd8f4[_0x57f0('0x12')]:_0x4bd8f4[_0x57f0('0x13')];logger[_0x57f0('0x14')](_0x57f0('0x15'),_0x209f40,_0x4bd8f4['condition'],_0x56be3d,_0x4d4850||_0x57f0('0x16'));if(_0x4d4850){var _0x87e391=_['findIndex'](_0x5236d4[_0x57f0('0x17')](),{'p':_0x4d4850});if(_0x87e391>=0x0){logger[_0x57f0('0x14')](_0x57f0('0x18'),_0x209f40,_0x4d4850||_0x57f0('0x16'),_0x87e391);_0x5236d4[_0x57f0('0x16')](_0x87e391);}else{logger[_0x57f0('0x14')](_0x57f0('0x19'),_0x209f40,_0x4d4850||_0x57f0('0x16'));_0x5236d4[_0x57f0('0x11')]();}}else{_0x5236d4[_0x57f0('0x16')]();}}catch(_0x2ea53e){logger[_0x57f0('0xd')](_0x57f0('0x1a'),_0x209f40,_0x2ea53e['message']);_0x5236d4['stop']();}}}catch(_0x420ace){logger['error'](_0x57f0('0xe'),_0x209f40,JSON[_0x57f0('0x1b')](_0x420ace));_0x5236d4[_0x57f0('0x11')]();}};};
\ No newline at end of file
+var _0xe318=['[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','message','stringify','validate','lodash','./utils','string','number','priority\x20true\x20is\x20a\x20number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','error','[%s][GOTOIF]\x20%s','map','join','stop','priorityFalse','condition','next','findIndex','rules','info'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xe318,0xdd));var _0x8e31=function(_0x2a7ccf,_0x2b6f78){_0x2a7ccf=_0x2a7ccf-0x0;var _0x54dbc0=_0xe318[_0x2a7ccf];return _0x54dbc0;};'use strict';var schema=require(_0x8e31('0x0'));var _=require(_0x8e31('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x8e31('0x2'));var logger=require('../../../../config/logger')('routing');var gotoif=schema({'condition':{'type':_0x8e31('0x3'),'required':!![],'message':'condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required'},'priorityTrue':{'type':_0x8e31('0x4'),'message':_0x8e31('0x5')},'priorityFalse':{'type':'number','message':_0x8e31('0x6')}});exports[_0x8e31('0x7')]=function(_0x2e60cf,_0x1de043){return function(_0x46afd6){try{var _0x1f485d={'condition':htmlToText[_0x8e31('0x8')](utils[_0x8e31('0x9')](_0x1de043[0x0],this),{'wordwrap':![]})[_0x8e31('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1de043[0x1],'priorityFalse':_0x1de043[0x2]};var _0x38be18=gotoif[_0x8e31('0x0')](_0x1f485d,{'typecast':!![]});if(_0x38be18['length']){logger[_0x8e31('0xb')](_0x8e31('0xc'),_0x2e60cf,_[_0x8e31('0xd')](_0x38be18,'message')[_0x8e31('0xe')](',\x20'));_0x46afd6[_0x8e31('0xf')]();}else{try{var _0x18a36b=eval('('+_0x1f485d['condition']+')');var _0x2970f9=_0x18a36b?_0x1f485d['priorityTrue']:_0x1f485d[_0x8e31('0x10')];logger['info']('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x2e60cf,_0x1f485d[_0x8e31('0x11')],_0x18a36b,_0x2970f9||_0x8e31('0x12'));if(_0x2970f9){var _0x4776a9=_[_0x8e31('0x13')](_0x46afd6[_0x8e31('0x14')](),{'p':_0x2970f9});if(_0x4776a9>=0x0){logger[_0x8e31('0x15')](_0x8e31('0x16'),_0x2e60cf,_0x2970f9||_0x8e31('0x12'),_0x4776a9);_0x46afd6[_0x8e31('0x12')](_0x4776a9);}else{logger[_0x8e31('0x15')](_0x8e31('0x17'),_0x2e60cf,_0x2970f9||_0x8e31('0x12'));_0x46afd6[_0x8e31('0xf')]();}}else{_0x46afd6[_0x8e31('0x12')]();}}catch(_0xb4a0d5){logger['error'](_0x8e31('0x18'),_0x2e60cf,_0xb4a0d5[_0x8e31('0x19')]);_0x46afd6['stop']();}}}catch(_0x4b86b3){logger[_0x8e31('0xb')](_0x8e31('0xc'),_0x2e60cf,JSON[_0x8e31('0x1a')](_0x4b86b3));_0x46afd6['stop']();}};};
\ No newline at end of file
index a822598..590fcea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb009=['[%s][GOTOP]\x20%s','message','join','stop','info','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','validate','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error'];(function(_0x15ea09,_0x2f30ab){var _0x3e9c78=function(_0x15f8ba){while(--_0x15f8ba){_0x15ea09['push'](_0x15ea09['shift']());}};_0x3e9c78(++_0x2f30ab);}(_0xb009,0xb2));var _0x9b00=function(_0x2bc295,_0x34d992){_0x2bc295=_0x2bc295-0x0;var _0x5d4c21=_0xb009[_0x2bc295];return _0x5d4c21;};'use strict';var schema=require(_0x9b00('0x0'));var _=require('lodash');var logger=require('../../../../config/logger')('routing');var gotop=schema({'priority':{'type':'number','required':!![],'message':_0x9b00('0x1')}});exports[_0x9b00('0x2')]=function(_0x1129a4,_0x2a4827){return function(_0x4b8bf8){try{var _0x189d53={'priority':_0x2a4827[0x0]};var _0x2d81f6=gotop[_0x9b00('0x0')](_0x189d53,{'typecast':!![]});if(_0x2d81f6['length']){logger[_0x9b00('0x3')](_0x9b00('0x4'),_0x1129a4,_['map'](_0x2d81f6,_0x9b00('0x5'))[_0x9b00('0x6')](',\x20'));_0x4b8bf8[_0x9b00('0x7')]();}else{logger[_0x9b00('0x8')]('[%s][GOTOP]\x20priority\x20%s',_0x1129a4,_0x189d53[_0x9b00('0x9')]);if(_0x189d53[_0x9b00('0x9')]){var _0xef1c6f=_[_0x9b00('0xa')](_0x4b8bf8[_0x9b00('0xb')](),{'p':_0x189d53[_0x9b00('0x9')]});if(_0xef1c6f>=0x0){logger[_0x9b00('0x8')](_0x9b00('0xc'),_0x1129a4,_0x189d53[_0x9b00('0x9')]||'next',_0xef1c6f);_0x4b8bf8['next'](_0xef1c6f);}else{logger[_0x9b00('0x8')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x1129a4,_0x189d53['priority']||_0x9b00('0xd'));_0x4b8bf8[_0x9b00('0x7')]();}}else{_0x4b8bf8[_0x9b00('0xd')]();}}}catch(_0xd93895){logger[_0x9b00('0x3')](_0x9b00('0x4'),_0x1129a4,JSON['stringify'](_0xd93895));_0x4b8bf8['stop']();}};};
\ No newline at end of file
+var _0xb0c4=['[%s][GOTOP]\x20priority\x20%s','priority','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','stringify','../../../../config/logger','routing','consequence','validate','error','[%s][GOTOP]\x20%s','message','join','stop','info'];(function(_0x53305c,_0xebb05e){var _0x269b61=function(_0x15ea80){while(--_0x15ea80){_0x53305c['push'](_0x53305c['shift']());}};_0x269b61(++_0xebb05e);}(_0xb0c4,0x186));var _0x4b0c=function(_0x999b85,_0x1edc2b){_0x999b85=_0x999b85-0x0;var _0x1d7124=_0xb0c4[_0x999b85];return _0x1d7124;};'use strict';var schema=require('validate');var _=require('lodash');var logger=require(_0x4b0c('0x0'))(_0x4b0c('0x1'));var gotop=schema({'priority':{'type':'number','required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports[_0x4b0c('0x2')]=function(_0x27803d,_0x312819){return function(_0x5bd86d){try{var _0x491464={'priority':_0x312819[0x0]};var _0x2a3924=gotop[_0x4b0c('0x3')](_0x491464,{'typecast':!![]});if(_0x2a3924['length']){logger[_0x4b0c('0x4')](_0x4b0c('0x5'),_0x27803d,_['map'](_0x2a3924,_0x4b0c('0x6'))[_0x4b0c('0x7')](',\x20'));_0x5bd86d[_0x4b0c('0x8')]();}else{logger[_0x4b0c('0x9')](_0x4b0c('0xa'),_0x27803d,_0x491464['priority']);if(_0x491464[_0x4b0c('0xb')]){var _0x3e7a7f=_['findIndex'](_0x5bd86d[_0x4b0c('0xc')](),{'p':_0x491464['priority']});if(_0x3e7a7f>=0x0){logger[_0x4b0c('0x9')](_0x4b0c('0xd'),_0x27803d,_0x491464[_0x4b0c('0xb')]||_0x4b0c('0xe'),_0x3e7a7f);_0x5bd86d['next'](_0x3e7a7f);}else{logger[_0x4b0c('0x9')]('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x27803d,_0x491464[_0x4b0c('0xb')]||_0x4b0c('0xe'));_0x5bd86d['stop']();}}else{_0x5bd86d[_0x4b0c('0xe')]();}}}catch(_0xce8ad7){logger[_0x4b0c('0x4')](_0x4b0c('0x5'),_0x27803d,JSON[_0x4b0c('0xf')](_0xce8ad7));_0x5bd86d[_0x4b0c('0x8')]();}};};
\ No newline at end of file
index c48f715..c669dbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x726f=['account','upperFirst','Message','create','then','info','[%s][MESSAGE]\x20%s','body','next','stringify','stop','error','lodash','./utils','routing','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','getMustacheRender','contact','channel','chat','ChatWebsiteId'];(function(_0x35bbdf,_0x1ac88d){var _0x27ef28=function(_0x1fd0b7){while(--_0x1fd0b7){_0x35bbdf['push'](_0x35bbdf['shift']());}};_0x27ef28(++_0x1ac88d);}(_0x726f,0xa2));var _0xf726=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x726f[_0x42cae2];return _0x5f256f;};'use strict';var _=require(_0xf726('0x0'));var utils=require(_0xf726('0x1'));var logger=require('../../../../config/logger')(_0xf726('0x2'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xf726('0x3')),'smsMessage':require(_0xf726('0x4')),'faxMessage':require(_0xf726('0x5')),'whatsappMessage':require(_0xf726('0x6'))};exports[_0xf726('0x7')]=function(_0x328eae,_0x26ba00){return function(_0x1cae3f){try{var _0x2dd6b8={'body':utils[_0xf726('0x8')](_0x26ba00[0x0],this),'ContactId':this[_0xf726('0x9')]['id']};if(this[_0xf726('0xa')]===_0xf726('0xb')){_0x2dd6b8[_0xf726('0xc')]=this[_0xf726('0xd')]['id'];}else{_0x2dd6b8[_[_0xf726('0xe')](this[_0xf726('0xa')])+'AccountId']=this['account']['id'];}_0x2dd6b8[_['upperFirst'](this[_0xf726('0xa')])+'InteractionId']=this['interaction']['id'];if(rpc[this[_0xf726('0xa')]+_0xf726('0xf')]){return rpc[this['channel']+_0xf726('0xf')][_0xf726('0x10')](_0x2dd6b8)[_0xf726('0x11')](function(_0x1def78){logger[_0xf726('0x12')](_0xf726('0x13'),_0x328eae,_0x2dd6b8[_0xf726('0x14')]);_0x1cae3f[_0xf726('0x15')]();})['catch'](function(_0x3c6256){logger['error']('[%s][MESSAGE]\x20%s',_0x328eae,JSON[_0xf726('0x16')](_0x3c6256));_0x1cae3f[_0xf726('0x17')]();});}}catch(_0x5dee54){logger[_0xf726('0x18')](_0xf726('0x13'),_0x328eae,JSON[_0xf726('0x16')](_0x5dee54));_0x1cae3f['stop']();}};};
\ No newline at end of file
+var _0x49ce=['channel','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','then','info','body','error','[%s][MESSAGE]\x20%s','stop','stringify','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','contact'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x49ce,0x116));var _0xe49c=function(_0x4737a0,_0x36520e){_0x4737a0=_0x4737a0-0x0;var _0x4d558b=_0x49ce[_0x4737a0];return _0x4d558b;};'use strict';var _=require('lodash');var utils=require(_0xe49c('0x0'));var logger=require(_0xe49c('0x1'))(_0xe49c('0x2'));var rpc={'chatMessage':require(_0xe49c('0x3')),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require(_0xe49c('0x4')),'smsMessage':require(_0xe49c('0x5')),'faxMessage':require(_0xe49c('0x6')),'whatsappMessage':require(_0xe49c('0x7'))};exports[_0xe49c('0x8')]=function(_0x44e4ac,_0x1d5d24){return function(_0x192e0e){try{var _0x19bd1e={'body':utils['getMustacheRender'](_0x1d5d24[0x0],this),'ContactId':this[_0xe49c('0x9')]['id']};if(this[_0xe49c('0xa')]==='chat'){_0x19bd1e[_0xe49c('0xb')]=this[_0xe49c('0xc')]['id'];}else{_0x19bd1e[_[_0xe49c('0xd')](this['channel'])+_0xe49c('0xe')]=this[_0xe49c('0xc')]['id'];}_0x19bd1e[_[_0xe49c('0xd')](this[_0xe49c('0xa')])+_0xe49c('0xf')]=this['interaction']['id'];if(rpc[this['channel']+_0xe49c('0x10')]){return rpc[this[_0xe49c('0xa')]+_0xe49c('0x10')]['create'](_0x19bd1e)[_0xe49c('0x11')](function(_0x418209){logger[_0xe49c('0x12')]('[%s][MESSAGE]\x20%s',_0x44e4ac,_0x19bd1e[_0xe49c('0x13')]);_0x192e0e['next']();})['catch'](function(_0x1dc8c3){logger[_0xe49c('0x14')](_0xe49c('0x15'),_0x44e4ac,JSON['stringify'](_0x1dc8c3));_0x192e0e[_0xe49c('0x16')]();});}}catch(_0x397468){logger[_0xe49c('0x14')](_0xe49c('0x15'),_0x44e4ac,JSON[_0xe49c('0x17')](_0x397468));_0x192e0e['stop']();}};};
\ No newline at end of file
index 715788c..6d583cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef6d=['error','[%s][NOOP]\x20%s','stop','routing','consequence','info','getMustacheRender'];(function(_0x43e97d,_0x56a06b){var _0x424cd9=function(_0x4f574b){while(--_0x4f574b){_0x43e97d['push'](_0x43e97d['shift']());}};_0x424cd9(++_0x56a06b);}(_0xef6d,0xf8));var _0xdef6=function(_0x26aa6a,_0x31649d){_0x26aa6a=_0x26aa6a-0x0;var _0x58b0ef=_0xef6d[_0x26aa6a];return _0x58b0ef;};'use strict';var utils=require('./utils');var logger=require('../../../../config/logger')(_0xdef6('0x0'));exports[_0xdef6('0x1')]=function(_0x3af021,_0x11defd){return function(_0x9cc35){try{logger[_0xdef6('0x2')]('[%s][NOOP]\x20%s',_0x3af021,utils[_0xdef6('0x3')](_0x11defd[0x0],this));_0x9cc35['next']();}catch(_0x490f6c){logger[_0xdef6('0x4')](_0xdef6('0x5'),_0x3af021,JSON['stringify'](_0x490f6c));_0x9cc35[_0xdef6('0x6')]();}};};
\ No newline at end of file
+var _0xa0a3=['./utils','../../../../config/logger','routing','consequence','[%s][NOOP]\x20%s','getMustacheRender','next','error','stringify','stop'];(function(_0x6287b6,_0x5682e7){var _0x5d6be4=function(_0x3e3975){while(--_0x3e3975){_0x6287b6['push'](_0x6287b6['shift']());}};_0x5d6be4(++_0x5682e7);}(_0xa0a3,0x154));var _0x3a0a=function(_0x39dbcc,_0x32c8ef){_0x39dbcc=_0x39dbcc-0x0;var _0x17f470=_0xa0a3[_0x39dbcc];return _0x17f470;};'use strict';var utils=require(_0x3a0a('0x0'));var logger=require(_0x3a0a('0x1'))(_0x3a0a('0x2'));exports[_0x3a0a('0x3')]=function(_0x2a961f,_0x381de6){return function(_0x39c865){try{logger['info'](_0x3a0a('0x4'),_0x2a961f,utils[_0x3a0a('0x5')](_0x381de6[0x0],this));_0x39c865[_0x3a0a('0x6')]();}catch(_0x8d5428){logger[_0x3a0a('0x7')](_0x3a0a('0x4'),_0x2a961f,JSON[_0x3a0a('0x8')](_0x8d5428));_0x39c865[_0x3a0a('0x9')]();}};};
\ No newline at end of file
index 252780d..74fb082 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x656b=['%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','timeout\x20is\x20a\x20number','waiting','body','from','contact','list','upperFirst','QueueId','interaction','channel','MessageId','message','chat','AccountId','info','name','QueueReport','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','[%s][STOP:QUEUE][NAME:%s]','catch','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','update','toLowerCase','consequence','[%s][QUEUE]\x20%s','join','stop','Queues','atimeout','qtimeout','rules','end','complete','[%s][QUEUE]\x20APPLICATION\x20END','close','next','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','validate','lodash','moment','ioredis','../../../../config/environment','routing','./strategy','defaults','redis','localhost','account','queue','emit','queue_id','push','capitalize','InteractionId','format','%sQueuesWaitingInteractions'];(function(_0x549b95,_0x2084ec){var _0x790cb2=function(_0x4b1169){while(--_0x4b1169){_0x549b95['push'](_0x549b95['shift']());}};_0x790cb2(++_0x2084ec);}(_0x656b,0xcb));var _0xb656=function(_0x288b01,_0x1328cb){_0x288b01=_0x288b01-0x0;var _0x3e1409=_0x656b[_0x288b01];return _0x3e1409;};'use strict';var schema=require(_0xb656('0x0'));var _=require(_0xb656('0x1'));var util=require('util');var seqqueue=require('seq-queue');var moment=require(_0xb656('0x2'));var Redis=require(_0xb656('0x3'));var config=require(_0xb656('0x4'));var logger=require('../../../../config/logger')(_0xb656('0x5'));var strategy=require(_0xb656('0x6'));config['redis']=_[_0xb656('0x7')](config[_0xb656('0x8')],{'host':_0xb656('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb656('0x8')]));var attributes=['id','queue_id',_0xb656('0xa'),_0xb656('0xb'),'from','joinAt'];function emit(_0x42ce15,_0xd80240,_0x4a3b5d){io['to'](_0x42ce15)[_0xb656('0xc')](_0xd80240,_0x4a3b5d);}function emitChannelQueueInteraction(_0x2df9ea,_0x23fffc,_0x414d6e,_0x641bba,_0xdeba27,_0x2537b3,_0x353f7e,_0x4784d8){var _0x6dac01=_['clone'](_0x414d6e);_0x6dac01[_0xb656('0xd')]=_0x4784d8;_0x6dac01[_0xb656('0xb')]=_0x23fffc;_0x6dac01[_0xb656('0xa')]=_0x641bba;_0x6dac01['id']=_0xdeba27;if(_0x2537b3){attributes[_0xb656('0xe')](_[_0xb656('0xf')](_0x2df9ea)+_0xb656('0x10'));_0x353f7e[util[_0xb656('0x11')](_0xb656('0x12'),_0x2df9ea)][_0xdeba27]=_['pick'](_0x6dac01,attributes);}else{delete _0x353f7e[util[_0xb656('0x11')](_0xb656('0x12'),_0x2df9ea)][_0xdeba27];}emit(util[_0xb656('0x11')](_0xb656('0x13'),_0x2df9ea,_0x23fffc),util[_0xb656('0x11')](_0xb656('0x14'),_0x2df9ea,_0x2537b3?_0xb656('0x15'):_0xb656('0x16')),_['pick'](_0x6dac01,attributes));}var rpc={'openchannelQueueReport':require(_0xb656('0x17')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xb656('0x18')),'faxQueueReport':require(_0xb656('0x19')),'whatsappQueueReport':require(_0xb656('0x1a'))};var queue=schema({'name':{'type':_0xb656('0x1b'),'required':!![],'message':_0xb656('0x1c')},'timeout':{'type':'number','message':_0xb656('0x1d')}});function startRouting(_0x494488,_0x1282cc,_0x179c41,_0x5618e5){if(_0x494488&&_0x1282cc&&_0x179c41){_0x1282cc[_0xb656('0x1e')]+=0x1;var _0x3e7975={'uniqueid':_0x494488,'from':_0x179c41['body']?_0x179c41[_0xb656('0x1f')][_0xb656('0x20')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x179c41[_0xb656('0x21')]?_0x179c41['contact']['id']:null,'ListId':_0x179c41[_0xb656('0x22')]?_0x179c41[_0xb656('0x22')]['id']:null};_0x3e7975[_[_0xb656('0x23')](_0x179c41['channel'])+_0xb656('0x24')]=_0x1282cc['id']||null;_0x3e7975[_[_0xb656('0x23')](_0x179c41['channel'])+_0xb656('0x10')]=_0x179c41['interaction']?_0x179c41[_0xb656('0x25')]['id']:null;_0x3e7975[_['upperFirst'](_0x179c41[_0xb656('0x26')])+_0xb656('0x27')]=_0x179c41['message']?_0x179c41[_0xb656('0x28')]['id']:null;_0x3e7975[_[_0xb656('0x23')](_0x179c41[_0xb656('0x26')])+(_0x179c41[_0xb656('0x26')]!==_0xb656('0x29')?_0xb656('0x2a'):'WebsiteId')]=_0x179c41[_0xb656('0xa')]?_0x179c41[_0xb656('0xa')]['id']:null;logger[_0xb656('0x2b')](util[_0xb656('0x11')]('[%s][START:QUEUE][NAME:%s]',_0x494488,_0x1282cc['name']));emitChannelQueueInteraction(_0x179c41['channel'],_0x1282cc[_0xb656('0x2c')],_0x3e7975,_0x179c41[_0xb656('0xa')][_0xb656('0x2c')],_0x179c41[_0xb656('0x28')]['id'],!![],_0x5618e5,_0x1282cc['id']);if(rpc[_0x179c41[_0xb656('0x26')]+_0xb656('0x2d')]){return rpc[_0x179c41[_0xb656('0x26')]+_0xb656('0x2d')]['create'](_0x3e7975)['catch'](function(_0x57cfee){logger[_0xb656('0x2e')](_0xb656('0x2f'));});}}}function stopRouting(_0x418ad8,_0x589cbf,_0x1dea6b,_0x247aa7){if(_0x418ad8&&_0x589cbf){_0x589cbf[_0xb656('0x1e')]-=0x1;var _0x1a96cf={'leaveAt':moment()['format'](_0xb656('0x30')),'acceptAt':moment()[_0xb656('0x11')](_0xb656('0x30')),'reason':'accepted'};logger['info'](util[_0xb656('0x11')](_0xb656('0x31'),_0x418ad8,_0x589cbf['name']));emitChannelQueueInteraction(_0x1dea6b[_0xb656('0x26')],_0x589cbf[_0xb656('0x2c')],_0x1dea6b[_0xb656('0x1f')],_0x1dea6b[_0xb656('0xa')][_0xb656('0x2c')],_0x1dea6b[_0xb656('0x28')]['id'],![],_0x247aa7,_0x589cbf['id']);if(rpc[_0x1dea6b[_0xb656('0x26')]+_0xb656('0x2d')]){return rpc[_0x1dea6b[_0xb656('0x26')]+'QueueReport']['update'](_0x418ad8,_0x1a96cf)[_0xb656('0x32')](function(_0x2658d6){logger[_0xb656('0x2e')](_0xb656('0x33'));});}}}function endRouting(_0x4257aa,_0x252876,_0x31fc4f,_0x70bcbf){if(_0x4257aa&&_0x252876){_0x252876[_0xb656('0x1e')]-=0x1;var _0x1d6c9a={'leaveAt':moment()[_0xb656('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xb656('0x11')](_0xb656('0x30')),'reason':_0xb656('0x34')};logger[_0xb656('0x2b')](util[_0xb656('0x11')](_0xb656('0x35'),_0x4257aa,_0x252876[_0xb656('0x2c')]));emitChannelQueueInteraction(_0x31fc4f[_0xb656('0x26')],_0x252876[_0xb656('0x2c')],_0x31fc4f['body'],_0x31fc4f[_0xb656('0xa')][_0xb656('0x2c')],_0x31fc4f[_0xb656('0x28')]['id'],![],_0x70bcbf);if(rpc[_0x31fc4f['channel']+_0xb656('0x2d')]){return rpc[_0x31fc4f[_0xb656('0x26')]+_0xb656('0x2d')][_0xb656('0x36')](_0x4257aa,_0x1d6c9a)[_0xb656('0x32')](function(_0x1af4a8){logger[_0xb656('0x2e')](_0xb656('0x33'));});}}}function handleFindQueue(_0x58e092){return function(_0x3187e7){return _0x3187e7[_0xb656('0x2c')]['toLowerCase']()===_0x58e092[_0xb656('0x37')]();};}exports[_0xb656('0x38')]=function(_0x433130,_0x5314a4,_0x2b6cf5,_0x1f2e5b){return function(_0x4002f7){try{var _0x249e68={'name':_0x5314a4[0x0],'timeout':_0x5314a4[0x1]};var _0x2ce197=queue[_0xb656('0x0')](_0x249e68,{'typecast':!![]});if(_0x2ce197['length']){logger[_0xb656('0x2e')](_0xb656('0x39'),_0x433130,_['map'](_0x2ce197,_0xb656('0x28'))[_0xb656('0x3a')](',\x20'));_0x4002f7[_0xb656('0x3b')]();}else{var _0x159454=_['find'](_0x2b6cf5[_0x1f2e5b[_0xb656('0x26')]+_0xb656('0x3c')],handleFindQueue(_0x249e68[_0xb656('0x2c')]));if(_0x159454){startRouting(_0x433130,_0x159454,_0x1f2e5b,_0x2b6cf5);var _0x5a457d=(_0x159454[_0xb656('0x34')]||0xa)*0x3e8;var _0x20719b=(_0x249e68[_0xb656('0x34')]||0x14)*0x3e8;var _0x12779;if(_0x5a457d>_0x20719b){_0x20719b=_0x5a457d;}var _0x2a9ef0=seqqueue['createQueue'](_0x5a457d);_0x2a9ef0['id']=_0x433130;_0x2a9ef0[_0xb656('0x3d')]=_0x5a457d;_0x2a9ef0[_0xb656('0x3e')]=_0x20719b;_0x2a9ef0[_0xb656('0x26')]=_0x1f2e5b[_0xb656('0x26')];_0x2b6cf5[_0xb656('0x3f')][_0x433130]['on'](_0xb656('0x40'),function(){logger['info']('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x433130);stopRouting(_0x433130,_0x159454,_0x1f2e5b,_0x2b6cf5);clearTimeout(_0x12779);_0x12779=undefined;_0x2a9ef0['close'](!![]);if(_0x2b6cf5[_0xb656('0x3f')][_0x433130]){delete _0x2b6cf5['rules'][_0x433130];}_0x4002f7[_0xb656('0x3b')]();});_0x2b6cf5['rules'][_0x433130]['on'](_0xb656('0x41'),function(){if(_0x2b6cf5[_0xb656('0x3f')][_0x433130]){delete _0x2b6cf5[_0xb656('0x3f')][_0x433130];}});_0x12779=setTimeout(function(){logger[_0xb656('0x2b')](_0xb656('0x42'),_0x433130);endRouting(_0x433130,_0x159454,_0x1f2e5b,_0x2b6cf5);clearTimeout(_0x12779);_0x2a9ef0[_0xb656('0x43')](!![]);_0x4002f7[_0xb656('0x44')]();},_0x20719b);switch(_0x159454['strategy']){case'rrmemory':strategy[_0xb656('0x45')](_0x2a9ef0,_0x159454,_0x2b6cf5,_0x1f2e5b);break;default:strategy[_0xb656('0x46')](_0x2a9ef0,_0x159454,_0x2b6cf5,_0x1f2e5b);}}else{logger[_0xb656('0x2e')](_0xb656('0x47'),_0x433130,_0x249e68[_0xb656('0x2c')]);_0x4002f7[_0xb656('0x3b')]();}}}catch(_0x48165f){console[_0xb656('0x48')](_0x48165f);logger[_0xb656('0x2e')]('[%s][QUEUE]\x20%s',_0x433130,_0x48165f[_0xb656('0x49')]);_0x4002f7['stop']();}};};
\ No newline at end of file
+var _0x3ec1=['[%s][QUEUE]\x20%s','stop','find','Queues','timeout','createQueue','atimeout','qtimeout','rules','end','close','complete','[%s][QUEUE]\x20APPLICATION\x20END','next','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue','ioredis','../../../../config/environment','../../../../config/logger','./strategy','redis','defaults','socket.io-emitter','queue_id','account','queue','joinAt','emit','clone','push','capitalize','format','pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','save','remove','../../rpc/openchannelQueueReport','../../rpc/mailQueueReport','../../rpc/chatQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','waiting','body','YYYY-MM-DD\x20HH:mm:ss','contact','list','channel','QueueId','upperFirst','interaction','chat','AccountId','info','name','message','QueueReport','catch','[%s][END:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','validate','length'];(function(_0x50a89e,_0x599402){var _0x1a4440=function(_0xa209ad){while(--_0xa209ad){_0x50a89e['push'](_0x50a89e['shift']());}};_0x1a4440(++_0x599402);}(_0x3ec1,0xae));var _0x13ec=function(_0x548003,_0x19cd0e){_0x548003=_0x548003-0x0;var _0x459a44=_0x3ec1[_0x548003];return _0x459a44;};'use strict';var schema=require('validate');var _=require(_0x13ec('0x0'));var util=require(_0x13ec('0x1'));var seqqueue=require(_0x13ec('0x2'));var moment=require('moment');var Redis=require(_0x13ec('0x3'));var config=require(_0x13ec('0x4'));var logger=require(_0x13ec('0x5'))('routing');var strategy=require(_0x13ec('0x6'));config[_0x13ec('0x7')]=_[_0x13ec('0x8')](config[_0x13ec('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0x13ec('0x9'))(new Redis(config[_0x13ec('0x7')]));var attributes=['id',_0x13ec('0xa'),_0x13ec('0xb'),_0x13ec('0xc'),'from',_0x13ec('0xd')];function emit(_0x1f4236,_0x7a07bc,_0x4d869f){io['to'](_0x1f4236)[_0x13ec('0xe')](_0x7a07bc,_0x4d869f);}function emitChannelQueueInteraction(_0x584272,_0x125588,_0x263024,_0x2bd063,_0x3b5c99,_0x5ebeef,_0x18a4f4,_0x5cdcfe){var _0x4cd8f8=_[_0x13ec('0xf')](_0x263024);_0x4cd8f8[_0x13ec('0xa')]=_0x5cdcfe;_0x4cd8f8['queue']=_0x125588;_0x4cd8f8[_0x13ec('0xb')]=_0x2bd063;_0x4cd8f8['id']=_0x3b5c99;if(_0x5ebeef){attributes[_0x13ec('0x10')](_[_0x13ec('0x11')](_0x584272)+'InteractionId');_0x18a4f4[util[_0x13ec('0x12')]('%sQueuesWaitingInteractions',_0x584272)][_0x3b5c99]=_[_0x13ec('0x13')](_0x4cd8f8,attributes);}else{delete _0x18a4f4[util[_0x13ec('0x12')](_0x13ec('0x14'),_0x584272)][_0x3b5c99];}emit(util['format'](_0x13ec('0x15'),_0x584272,_0x125588),util['format'](_0x13ec('0x16'),_0x584272,_0x5ebeef?_0x13ec('0x17'):_0x13ec('0x18')),_[_0x13ec('0x13')](_0x4cd8f8,attributes));}var rpc={'openchannelQueueReport':require(_0x13ec('0x19')),'mailQueueReport':require(_0x13ec('0x1a')),'chatQueueReport':require(_0x13ec('0x1b')),'smsQueueReport':require(_0x13ec('0x1c')),'faxQueueReport':require(_0x13ec('0x1d')),'whatsappQueueReport':require(_0x13ec('0x1e'))};var queue=schema({'name':{'type':_0x13ec('0x1f'),'required':!![],'message':_0x13ec('0x20')},'timeout':{'type':_0x13ec('0x21'),'message':_0x13ec('0x22')}});function startRouting(_0x279fe9,_0x1f4610,_0x5baa46,_0x5ebd4d){if(_0x279fe9&&_0x1f4610&&_0x5baa46){_0x1f4610[_0x13ec('0x23')]+=0x1;var _0x4eacc0={'uniqueid':_0x279fe9,'from':_0x5baa46[_0x13ec('0x24')]?_0x5baa46[_0x13ec('0x24')]['from']:'','joinAt':moment()[_0x13ec('0x12')](_0x13ec('0x25')),'ContactId':_0x5baa46[_0x13ec('0x26')]?_0x5baa46[_0x13ec('0x26')]['id']:null,'ListId':_0x5baa46[_0x13ec('0x27')]?_0x5baa46[_0x13ec('0x27')]['id']:null};_0x4eacc0[_['upperFirst'](_0x5baa46[_0x13ec('0x28')])+_0x13ec('0x29')]=_0x1f4610['id']||null;_0x4eacc0[_[_0x13ec('0x2a')](_0x5baa46[_0x13ec('0x28')])+'InteractionId']=_0x5baa46[_0x13ec('0x2b')]?_0x5baa46[_0x13ec('0x2b')]['id']:null;_0x4eacc0[_['upperFirst'](_0x5baa46[_0x13ec('0x28')])+'MessageId']=_0x5baa46['message']?_0x5baa46['message']['id']:null;_0x4eacc0[_[_0x13ec('0x2a')](_0x5baa46['channel'])+(_0x5baa46['channel']!==_0x13ec('0x2c')?_0x13ec('0x2d'):'WebsiteId')]=_0x5baa46[_0x13ec('0xb')]?_0x5baa46[_0x13ec('0xb')]['id']:null;logger[_0x13ec('0x2e')](util['format']('[%s][START:QUEUE][NAME:%s]',_0x279fe9,_0x1f4610[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x5baa46[_0x13ec('0x28')],_0x1f4610[_0x13ec('0x2f')],_0x4eacc0,_0x5baa46[_0x13ec('0xb')][_0x13ec('0x2f')],_0x5baa46[_0x13ec('0x30')]['id'],!![],_0x5ebd4d,_0x1f4610['id']);if(rpc[_0x5baa46[_0x13ec('0x28')]+'QueueReport']){return rpc[_0x5baa46[_0x13ec('0x28')]+_0x13ec('0x31')]['create'](_0x4eacc0)['catch'](function(_0x3c0b04){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x58cb86,_0x5d320d,_0x3769d7,_0xc172e1){if(_0x58cb86&&_0x5d320d){_0x5d320d[_0x13ec('0x23')]-=0x1;var _0x5c9b44={'leaveAt':moment()[_0x13ec('0x12')](_0x13ec('0x25')),'acceptAt':moment()['format'](_0x13ec('0x25')),'reason':'accepted'};logger[_0x13ec('0x2e')](util[_0x13ec('0x12')]('[%s][STOP:QUEUE][NAME:%s]',_0x58cb86,_0x5d320d[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x3769d7[_0x13ec('0x28')],_0x5d320d[_0x13ec('0x2f')],_0x3769d7[_0x13ec('0x24')],_0x3769d7['account'][_0x13ec('0x2f')],_0x3769d7[_0x13ec('0x30')]['id'],![],_0xc172e1,_0x5d320d['id']);if(rpc[_0x3769d7[_0x13ec('0x28')]+_0x13ec('0x31')]){return rpc[_0x3769d7[_0x13ec('0x28')]+_0x13ec('0x31')]['update'](_0x58cb86,_0x5c9b44)[_0x13ec('0x32')](function(_0x20c6c9){logger['error']('update\x20queue\x20report');});}}}function endRouting(_0x351b20,_0x2a6f0b,_0x3b1916,_0x414ea8){if(_0x351b20&&_0x2a6f0b){_0x2a6f0b['waiting']-=0x1;var _0x4155b4={'leaveAt':moment()['format'](_0x13ec('0x25')),'exitAt':moment()['format'](_0x13ec('0x25')),'reason':'timeout'};logger[_0x13ec('0x2e')](util[_0x13ec('0x12')](_0x13ec('0x33'),_0x351b20,_0x2a6f0b[_0x13ec('0x2f')]));emitChannelQueueInteraction(_0x3b1916['channel'],_0x2a6f0b['name'],_0x3b1916[_0x13ec('0x24')],_0x3b1916[_0x13ec('0xb')][_0x13ec('0x2f')],_0x3b1916[_0x13ec('0x30')]['id'],![],_0x414ea8);if(rpc[_0x3b1916[_0x13ec('0x28')]+_0x13ec('0x31')]){return rpc[_0x3b1916[_0x13ec('0x28')]+'QueueReport'][_0x13ec('0x34')](_0x351b20,_0x4155b4)[_0x13ec('0x32')](function(_0x22055e){logger[_0x13ec('0x35')](_0x13ec('0x36'));});}}}function handleFindQueue(_0x442f9f){return function(_0x565ad9){return _0x565ad9['name']['toLowerCase']()===_0x442f9f['toLowerCase']();};}exports['consequence']=function(_0x22dbba,_0x4b2454,_0x268fce,_0x5e8a95){return function(_0x360651){try{var _0x271bfa={'name':_0x4b2454[0x0],'timeout':_0x4b2454[0x1]};var _0x525cb6=queue[_0x13ec('0x37')](_0x271bfa,{'typecast':!![]});if(_0x525cb6[_0x13ec('0x38')]){logger[_0x13ec('0x35')](_0x13ec('0x39'),_0x22dbba,_['map'](_0x525cb6,_0x13ec('0x30'))['join'](',\x20'));_0x360651[_0x13ec('0x3a')]();}else{var _0xd1dc04=_[_0x13ec('0x3b')](_0x268fce[_0x5e8a95[_0x13ec('0x28')]+_0x13ec('0x3c')],handleFindQueue(_0x271bfa[_0x13ec('0x2f')]));if(_0xd1dc04){startRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);var _0x1f6383=(_0xd1dc04[_0x13ec('0x3d')]||0xa)*0x3e8;var _0x34efb1=(_0x271bfa[_0x13ec('0x3d')]||0x14)*0x3e8;var _0x406d87;if(_0x1f6383>_0x34efb1){_0x34efb1=_0x1f6383;}var _0x4a9fd0=seqqueue[_0x13ec('0x3e')](_0x1f6383);_0x4a9fd0['id']=_0x22dbba;_0x4a9fd0[_0x13ec('0x3f')]=_0x1f6383;_0x4a9fd0[_0x13ec('0x40')]=_0x34efb1;_0x4a9fd0['channel']=_0x5e8a95[_0x13ec('0x28')];_0x268fce[_0x13ec('0x41')][_0x22dbba]['on'](_0x13ec('0x42'),function(){logger[_0x13ec('0x2e')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x22dbba);stopRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);clearTimeout(_0x406d87);_0x406d87=undefined;_0x4a9fd0[_0x13ec('0x43')](!![]);if(_0x268fce['rules'][_0x22dbba]){delete _0x268fce[_0x13ec('0x41')][_0x22dbba];}_0x360651['stop']();});_0x268fce[_0x13ec('0x41')][_0x22dbba]['on'](_0x13ec('0x44'),function(){if(_0x268fce[_0x13ec('0x41')][_0x22dbba]){delete _0x268fce[_0x13ec('0x41')][_0x22dbba];}});_0x406d87=setTimeout(function(){logger[_0x13ec('0x2e')](_0x13ec('0x45'),_0x22dbba);endRouting(_0x22dbba,_0xd1dc04,_0x5e8a95,_0x268fce);clearTimeout(_0x406d87);_0x4a9fd0['close'](!![]);_0x360651[_0x13ec('0x46')]();},_0x34efb1);switch(_0xd1dc04[_0x13ec('0x47')]){case _0x13ec('0x48'):strategy[_0x13ec('0x48')](_0x4a9fd0,_0xd1dc04,_0x268fce,_0x5e8a95);break;default:strategy[_0x13ec('0x49')](_0x4a9fd0,_0xd1dc04,_0x268fce,_0x5e8a95);}}else{logger[_0x13ec('0x35')](_0x13ec('0x4a'),_0x22dbba,_0x271bfa[_0x13ec('0x2f')]);_0x360651[_0x13ec('0x3a')]();}}}catch(_0x595938){console[_0x13ec('0x4b')](_0x595938);logger[_0x13ec('0x35')](_0x13ec('0x39'),_0x22dbba,_0x595938[_0x13ec('0x4c')]);_0x360651['stop']();}};};
\ No newline at end of file
index cc53d26..e466d8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0fda=['lodash','./util','../../../../../config/logger','routing','agent','squeue','push','handleRun','bind','timeout','handleTimeout','drained','handleDrained','prototype','debug','[%s][AGENT]\x20try\x20with\x20%s','realtime','agents','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busyQueue','saveWaitingNotification','showNotification','notificationId','writeLog','RINGING','[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available','isNil','[%s][AGENT]\x20timeout\x20with\x20%s','busy','STOP','exports'];(function(_0xb37b5a,_0x4a0086){var _0x24ca6e=function(_0x5cbfa4){while(--_0x5cbfa4){_0xb37b5a['push'](_0xb37b5a['shift']());}};_0x24ca6e(++_0x4a0086);}(_0x0fda,0x1a0));var _0xa0fd=function(_0x5b38e3,_0x140cf8){_0x5b38e3=_0x5b38e3-0x0;var _0x5ae70f=_0x0fda[_0x5b38e3];return _0x5ae70f;};'use strict';var _=require(_0xa0fd('0x0'));var uuid=require('uuid');var util=require(_0xa0fd('0x1'));var logger=require(_0xa0fd('0x2'))(_0xa0fd('0x3'));var Agent=function(_0x2f71f3,_0x426242,_0xd8e73a,_0x13c734){this['notificationId']=uuid['v4']();this['squeue']=_0x2f71f3;this[_0xa0fd('0x4')]=_0x426242;this['realtime']=_0xd8e73a;this['routing']=_0x13c734;this[_0xa0fd('0x5')][_0xa0fd('0x6')](this[_0xa0fd('0x7')][_0xa0fd('0x8')](this),this['handleTimeout'][_0xa0fd('0x8')](this));this[_0xa0fd('0x5')]['on'](_0xa0fd('0x9'),this[_0xa0fd('0xa')]['bind'](this));this[_0xa0fd('0x5')]['on'](_0xa0fd('0xb'),this[_0xa0fd('0xc')]['bind'](this));};Agent[_0xa0fd('0xd')][_0xa0fd('0x6')]=function(){this[_0xa0fd('0x5')][_0xa0fd('0x6')](this[_0xa0fd('0x7')]['bind'](this),this['handleTimeout'][_0xa0fd('0x8')](this));};Agent[_0xa0fd('0xd')]['handleDrained']=function(){this[_0xa0fd('0xa')](!![]);};Agent[_0xa0fd('0xd')][_0xa0fd('0x7')]=function(){logger[_0xa0fd('0xe')](_0xa0fd('0xf'),this[_0xa0fd('0x5')]['id'],this[_0xa0fd('0x4')]['id']);if(_['isNil'](this[_0xa0fd('0x10')][_0xa0fd('0x11')][this['agent']['id']])){logger['debug'](_0xa0fd('0x12'),this[_0xa0fd('0x5')]['id'],this['agent']['id']);setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}else{if(this[_0xa0fd('0x3')]['forcedOwnership']||util['isAgentAvailable'](this[_0xa0fd('0x5')]['id'],this['realtime'][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],this[_0xa0fd('0x5')][_0xa0fd('0x13')],![])){this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']]['busy']=!![];this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x14')]=undefined;util[_0xa0fd('0x15')](this[_0xa0fd('0x10')],this[_0xa0fd('0x3')],this[_0xa0fd('0x4')],this[_0xa0fd('0x5')][_0xa0fd('0x13')]);util[_0xa0fd('0x16')](this[_0xa0fd('0x17')],this[_0xa0fd('0x5')]['id'],this['realtime'][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],null,this['routing']);util[_0xa0fd('0x18')](this[_0xa0fd('0x5')]['id'],this['realtime']['agents'][this[_0xa0fd('0x4')]['id']],_0xa0fd('0x19')+(this['routing']['forcedOwnership']?':FORCED':''));}else{logger['debug'](_0xa0fd('0x1a'),this['squeue']['id'],this[_0xa0fd('0x4')]['id']);setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}}};Agent['prototype'][_0xa0fd('0xa')]=function(_0x19c352){if(_[_0xa0fd('0x1b')](this[_0xa0fd('0x10')][_0xa0fd('0x11')][this['agent']['id']])){return logger[_0xa0fd('0xe')](_0xa0fd('0x12'),this[_0xa0fd('0x5')]['id'],this[_0xa0fd('0x4')]['id']);}else{logger['debug'](_0xa0fd('0x1c'),this[_0xa0fd('0x5')]['id'],this['agent']['id']);util['hideNotification'](this['notificationId'],this[_0xa0fd('0x5')]['id'],this['realtime']['agents'][this[_0xa0fd('0x4')]['id']],null,this['routing']);this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x1d')]=![];this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']][_0xa0fd('0x14')]=undefined;util['removeWaitingNotification'](this[_0xa0fd('0x10')],this['routing'],this[_0xa0fd('0x4')],this['squeue']['channel']);util[_0xa0fd('0x18')](this['squeue']['id'],this[_0xa0fd('0x10')][_0xa0fd('0x11')][this[_0xa0fd('0x4')]['id']],_0x19c352?_0xa0fd('0x1e'):'TIMEOUT');}if(!_0x19c352){setTimeout(this[_0xa0fd('0x6')][_0xa0fd('0x8')](this),0x3e8);}};function agent(_0x3b06ef,_0x3f6146,_0x2e3cfa,_0x31f1e2){return new Agent(_0x3b06ef,_0x3f6146,_0x2e3cfa,_0x31f1e2);}module[_0xa0fd('0x1f')]=agent;
\ No newline at end of file
+var _0xac9d=['[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','debug','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busyQueue','saveWaitingNotification','forcedOwnership',':FORCED','[%s][AGENT]\x20timeout\x20with\x20%s','hideNotification','busy','removeWaitingNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','agent','realtime','squeue','push','handleRun','handleTimeout','timeout','bind','drained','handleDrained','prototype'];(function(_0x1c5917,_0x7ae318){var _0x4cda8a=function(_0x4490ee){while(--_0x4490ee){_0x1c5917['push'](_0x1c5917['shift']());}};_0x4cda8a(++_0x7ae318);}(_0xac9d,0x14d));var _0xdac9=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0xac9d[_0x46a671];return _0x526d75;};'use strict';var _=require(_0xdac9('0x0'));var uuid=require(_0xdac9('0x1'));var util=require(_0xdac9('0x2'));var logger=require(_0xdac9('0x3'))(_0xdac9('0x4'));var Agent=function(_0x27eb7c,_0x25d1b3,_0x1b967e,_0x51a5d7){this[_0xdac9('0x5')]=uuid['v4']();this['squeue']=_0x27eb7c;this[_0xdac9('0x6')]=_0x25d1b3;this[_0xdac9('0x7')]=_0x1b967e;this[_0xdac9('0x4')]=_0x51a5d7;this[_0xdac9('0x8')][_0xdac9('0x9')](this[_0xdac9('0xa')]['bind'](this),this[_0xdac9('0xb')]['bind'](this));this[_0xdac9('0x8')]['on'](_0xdac9('0xc'),this[_0xdac9('0xb')][_0xdac9('0xd')](this));this[_0xdac9('0x8')]['on'](_0xdac9('0xe'),this[_0xdac9('0xf')][_0xdac9('0xd')](this));};Agent[_0xdac9('0x10')]['push']=function(){this[_0xdac9('0x8')][_0xdac9('0x9')](this['handleRun'][_0xdac9('0xd')](this),this[_0xdac9('0xb')][_0xdac9('0xd')](this));};Agent['prototype'][_0xdac9('0xf')]=function(){this[_0xdac9('0xb')](!![]);};Agent[_0xdac9('0x10')]['handleRun']=function(){logger['debug'](_0xdac9('0x11'),this[_0xdac9('0x8')]['id'],this['agent']['id']);if(_[_0xdac9('0x12')](this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']])){logger[_0xdac9('0x14')](_0xdac9('0x15'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);setTimeout(this['push'][_0xdac9('0xd')](this),0x3e8);}else{if(this[_0xdac9('0x4')]['forcedOwnership']||util[_0xdac9('0x16')](this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this['agent']['id']],this['squeue'][_0xdac9('0x17')],![])){this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']]['busy']=!![];this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']][_0xdac9('0x18')]=undefined;util[_0xdac9('0x19')](this[_0xdac9('0x7')],this[_0xdac9('0x4')],this[_0xdac9('0x6')],this[_0xdac9('0x8')][_0xdac9('0x17')]);util['showNotification'](this[_0xdac9('0x5')],this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this['agent']['id']],null,this[_0xdac9('0x4')]);util['writeLog'](this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')]['agents'][this[_0xdac9('0x6')]['id']],'RINGING'+(this[_0xdac9('0x4')][_0xdac9('0x1a')]?_0xdac9('0x1b'):''));}else{logger[_0xdac9('0x14')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this['squeue']['id'],this[_0xdac9('0x6')]['id']);setTimeout(this[_0xdac9('0x9')]['bind'](this),0x3e8);}}};Agent['prototype'][_0xdac9('0xb')]=function(_0x3505c5){if(_[_0xdac9('0x12')](this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']])){return logger[_0xdac9('0x14')](_0xdac9('0x15'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);}else{logger[_0xdac9('0x14')](_0xdac9('0x1c'),this[_0xdac9('0x8')]['id'],this[_0xdac9('0x6')]['id']);util[_0xdac9('0x1d')](this[_0xdac9('0x5')],this[_0xdac9('0x8')]['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']],null,this[_0xdac9('0x4')]);this['realtime']['agents'][this[_0xdac9('0x6')]['id']][_0xdac9('0x1e')]=![];this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']]['busyQueue']=undefined;util[_0xdac9('0x1f')](this['realtime'],this[_0xdac9('0x4')],this[_0xdac9('0x6')],this['squeue'][_0xdac9('0x17')]);util['writeLog'](this['squeue']['id'],this[_0xdac9('0x7')][_0xdac9('0x13')][this[_0xdac9('0x6')]['id']],_0x3505c5?_0xdac9('0x20'):_0xdac9('0x21'));}if(!_0x3505c5){setTimeout(this[_0xdac9('0x9')]['bind'](this),0x3e8);}};function agent(_0x265975,_0x22ca1d,_0x5608c2,_0x244d1f){return new Agent(_0x265975,_0x22ca1d,_0x5608c2,_0x244d1f);}module[_0xdac9('0x22')]=agent;
\ No newline at end of file
index 229193c..440e00b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e83=['handleDrained','prototype','isNil','queue','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','RINGING','busy','name','saveWaitingNotification','[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY','[%s][QUEUE]\x20EMPTY','hideNotification','writeLog','busyQueue','removeWaitingNotification','routing','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','drained'];(function(_0x4d8c5d,_0x2d57f7){var _0xe1b16b=function(_0x1e98fc){while(--_0x1e98fc){_0x4d8c5d['push'](_0x4d8c5d['shift']());}};_0xe1b16b(++_0x2d57f7);}(_0x2e83,0xc9));var _0x32e8=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0x2e83[_0xae7c2f];return _0x5d7001;};'use strict';var _=require('lodash');var uuid=require('uuid');var util=require('./util');var logger=require('../../../../../config/logger')(_0x32e8('0x0'));var Beepall=function(_0x47815f,_0x1af0d7,_0x270a1d,_0x558c29){this[_0x32e8('0x1')]=uuid['v4']();this[_0x32e8('0x2')]=_0x47815f;this['queue']=_0x1af0d7;this[_0x32e8('0x3')]=_0x270a1d;this[_0x32e8('0x0')]=_0x558c29;this['squeue'][_0x32e8('0x4')](this[_0x32e8('0x5')][_0x32e8('0x6')](this),this[_0x32e8('0x7')][_0x32e8('0x6')](this));this[_0x32e8('0x2')]['on']('timeout',this[_0x32e8('0x7')][_0x32e8('0x6')](this));this['squeue']['on'](_0x32e8('0x8'),this[_0x32e8('0x9')][_0x32e8('0x6')](this));};Beepall[_0x32e8('0xa')][_0x32e8('0x4')]=function(){this['squeue'][_0x32e8('0x4')](this[_0x32e8('0x5')][_0x32e8('0x6')](this),this[_0x32e8('0x7')][_0x32e8('0x6')](this));};Beepall[_0x32e8('0xa')]['handleDrained']=function(){this[_0x32e8('0x7')](!![]);};Beepall[_0x32e8('0xa')][_0x32e8('0x5')]=function(){var _0x444aab=!![];if(!_[_0x32e8('0xb')](this[_0x32e8('0xc')])&&!_[_0x32e8('0xb')](this[_0x32e8('0xc')][_0x32e8('0xd')])&&this[_0x32e8('0xc')][_0x32e8('0xd')][_0x32e8('0xe')]>0x0){for(var _0x6aa166=0x0,_0x168fd7;_0x6aa166<this[_0x32e8('0xc')][_0x32e8('0xd')][_0x32e8('0xe')];_0x6aa166+=0x1){_0x168fd7=this[_0x32e8('0xc')][_0x32e8('0xd')][_0x6aa166]['id'];if(_[_0x32e8('0xb')](this[_0x32e8('0x3')][_0x32e8('0xf')][_0x168fd7])){logger[_0x32e8('0x10')](_0x32e8('0x11'),this[_0x32e8('0x2')]['id'],_0x168fd7);}else{if(util[_0x32e8('0x12')](this['squeue']['id'],this['realtime']['agents'][_0x168fd7],this[_0x32e8('0x2')][_0x32e8('0x13')],!![])){_0x444aab=![];util['writeLog'](this['squeue']['id'],this['realtime'][_0x32e8('0xf')][_0x168fd7],_0x32e8('0x14'));this[_0x32e8('0x3')][_0x32e8('0xf')][_0x168fd7][_0x32e8('0x15')]=!![];this[_0x32e8('0x3')]['agents'][_0x168fd7]['busyQueue']=this[_0x32e8('0xc')][_0x32e8('0x16')];util[_0x32e8('0x17')](this[_0x32e8('0x3')],this[_0x32e8('0x0')],this[_0x32e8('0xc')][_0x32e8('0xd')][_0x6aa166],this[_0x32e8('0x2')]['channel']);util['showNotification'](this[_0x32e8('0x1')],this[_0x32e8('0x2')]['id'],this[_0x32e8('0x3')]['agents'][_0x168fd7],this['queue'],this[_0x32e8('0x0')]);}}}if(_0x444aab){logger['debug'](_0x32e8('0x18'),this[_0x32e8('0x2')]['id']);setTimeout(this[_0x32e8('0x4')][_0x32e8('0x6')](this),0x3e8);}}else{logger[_0x32e8('0x10')](_0x32e8('0x19'),this[_0x32e8('0x2')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}};Beepall[_0x32e8('0xa')][_0x32e8('0x7')]=function(_0xc17fea){if(!_[_0x32e8('0xb')](this[_0x32e8('0xc')])&&!_[_0x32e8('0xb')](this[_0x32e8('0xc')][_0x32e8('0xd')])){for(var _0x5e04df=0x0,_0x337fc8;_0x5e04df<this[_0x32e8('0xc')]['Agents']['length'];_0x5e04df+=0x1){_0x337fc8=this[_0x32e8('0xc')][_0x32e8('0xd')][_0x5e04df]['id'];if(_['isNil'](this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8])){logger['debug'](_0x32e8('0x11'),this[_0x32e8('0x2')]['id'],_0x337fc8);}else{util[_0x32e8('0x1a')](this[_0x32e8('0x1')],this[_0x32e8('0x2')]['id'],this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8],this['queue'],this[_0x32e8('0x0')]);util[_0x32e8('0x1b')](this[_0x32e8('0x2')]['id'],this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8],_0xc17fea?'STOP':'TIMEOUT');this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8][_0x32e8('0x15')]=![];this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8][_0x32e8('0x1c')]=undefined;util[_0x32e8('0x1d')](this[_0x32e8('0x3')],this[_0x32e8('0x0')],this[_0x32e8('0x3')][_0x32e8('0xf')][_0x337fc8],this['squeue'][_0x32e8('0x13')]);}}}if(!_0xc17fea){setTimeout(this[_0x32e8('0x4')][_0x32e8('0x6')](this),0x3e8);}};function beepall(_0x2fe703,_0x3375ad,_0x560a99,_0x1e35d2){return new Beepall(_0x2fe703,_0x3375ad,_0x560a99,_0x1e35d2);}module['exports']=beepall;
\ No newline at end of file
+var _0x7ad8=['prototype','push','handleDrained','isNil','Agents','length','agents','channel','busyQueue','name','showNotification','debug','[%s][QUEUE]\x20EMPTY','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','hideNotification','writeLog','TIMEOUT','busy','removeWaitingNotification','exports','lodash','uuid','./util','routing','notificationId','squeue','queue','realtime','handleRun','handleTimeout','bind','timeout','drained'];(function(_0x58d1d6,_0x17ed49){var _0x187afd=function(_0x56af82){while(--_0x56af82){_0x58d1d6['push'](_0x58d1d6['shift']());}};_0x187afd(++_0x17ed49);}(_0x7ad8,0x98));var _0x87ad=function(_0x3747ae,_0x408e61){_0x3747ae=_0x3747ae-0x0;var _0x339035=_0x7ad8[_0x3747ae];return _0x339035;};'use strict';var _=require(_0x87ad('0x0'));var uuid=require(_0x87ad('0x1'));var util=require(_0x87ad('0x2'));var logger=require('../../../../../config/logger')(_0x87ad('0x3'));var Beepall=function(_0x5d8ab1,_0x54a145,_0x44c6a2,_0x204f76){this[_0x87ad('0x4')]=uuid['v4']();this[_0x87ad('0x5')]=_0x5d8ab1;this[_0x87ad('0x6')]=_0x54a145;this[_0x87ad('0x7')]=_0x44c6a2;this[_0x87ad('0x3')]=_0x204f76;this['squeue']['push'](this[_0x87ad('0x8')]['bind'](this),this[_0x87ad('0x9')][_0x87ad('0xa')](this));this[_0x87ad('0x5')]['on'](_0x87ad('0xb'),this[_0x87ad('0x9')][_0x87ad('0xa')](this));this[_0x87ad('0x5')]['on'](_0x87ad('0xc'),this['handleDrained'][_0x87ad('0xa')](this));};Beepall[_0x87ad('0xd')][_0x87ad('0xe')]=function(){this[_0x87ad('0x5')]['push'](this['handleRun'][_0x87ad('0xa')](this),this['handleTimeout'][_0x87ad('0xa')](this));};Beepall[_0x87ad('0xd')][_0x87ad('0xf')]=function(){this[_0x87ad('0x9')](!![]);};Beepall[_0x87ad('0xd')]['handleRun']=function(){var _0x4242ab=!![];if(!_[_0x87ad('0x10')](this[_0x87ad('0x6')])&&!_[_0x87ad('0x10')](this[_0x87ad('0x6')][_0x87ad('0x11')])&&this[_0x87ad('0x6')][_0x87ad('0x11')]['length']>0x0){for(var _0x1da879=0x0,_0xb60591;_0x1da879<this[_0x87ad('0x6')]['Agents'][_0x87ad('0x12')];_0x1da879+=0x1){_0xb60591=this[_0x87ad('0x6')][_0x87ad('0x11')][_0x1da879]['id'];if(_[_0x87ad('0x10')](this['realtime']['agents'][_0xb60591])){logger['debug']('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x87ad('0x5')]['id'],_0xb60591);}else{if(util['isAgentAvailable'](this['squeue']['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591],this[_0x87ad('0x5')][_0x87ad('0x14')],!![])){_0x4242ab=![];util['writeLog'](this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591],'RINGING');this['realtime'][_0x87ad('0x13')][_0xb60591]['busy']=!![];this[_0x87ad('0x7')][_0x87ad('0x13')][_0xb60591][_0x87ad('0x15')]=this[_0x87ad('0x6')][_0x87ad('0x16')];util['saveWaitingNotification'](this[_0x87ad('0x7')],this[_0x87ad('0x3')],this['queue'][_0x87ad('0x11')][_0x1da879],this['squeue'][_0x87ad('0x14')]);util[_0x87ad('0x17')](this[_0x87ad('0x4')],this['squeue']['id'],this['realtime']['agents'][_0xb60591],this[_0x87ad('0x6')],this[_0x87ad('0x3')]);}}}if(_0x4242ab){logger[_0x87ad('0x18')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0x87ad('0x5')]['id']);setTimeout(this[_0x87ad('0xe')][_0x87ad('0xa')](this),0x3e8);}}else{logger[_0x87ad('0x18')](_0x87ad('0x19'),this['squeue']['id']);setTimeout(this[_0x87ad('0xe')][_0x87ad('0xa')](this),0x3e8);}};Beepall[_0x87ad('0xd')][_0x87ad('0x9')]=function(_0x1959c0){if(!_['isNil'](this[_0x87ad('0x6')])&&!_[_0x87ad('0x10')](this[_0x87ad('0x6')]['Agents'])){for(var _0x345dbd=0x0,_0x1f0635;_0x345dbd<this[_0x87ad('0x6')][_0x87ad('0x11')][_0x87ad('0x12')];_0x345dbd+=0x1){_0x1f0635=this['queue'][_0x87ad('0x11')][_0x345dbd]['id'];if(_[_0x87ad('0x10')](this['realtime'][_0x87ad('0x13')][_0x1f0635])){logger[_0x87ad('0x18')](_0x87ad('0x1a'),this['squeue']['id'],_0x1f0635);}else{util[_0x87ad('0x1b')](this[_0x87ad('0x4')],this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],this[_0x87ad('0x6')],this[_0x87ad('0x3')]);util[_0x87ad('0x1c')](this[_0x87ad('0x5')]['id'],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],_0x1959c0?'STOP':_0x87ad('0x1d'));this['realtime'][_0x87ad('0x13')][_0x1f0635][_0x87ad('0x1e')]=![];this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635][_0x87ad('0x15')]=undefined;util[_0x87ad('0x1f')](this[_0x87ad('0x7')],this[_0x87ad('0x3')],this[_0x87ad('0x7')][_0x87ad('0x13')][_0x1f0635],this['squeue'][_0x87ad('0x14')]);}}}if(!_0x1959c0){setTimeout(this['push'][_0x87ad('0xa')](this),0x3e8);}};function beepall(_0x231730,_0xff9ae3,_0x6c9514,_0x1d4e2f){return new Beepall(_0x231730,_0xff9ae3,_0x6c9514,_0x1d4e2f);}module[_0x87ad('0x20')]=beepall;
\ No newline at end of file
index 0ce9047..5b4664f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x432b=['exports','./beepall','./agent'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x432b,0x1ad));var _0xb432=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x432b[_0x3dd15e];return _0x231fd0;};'use strict';module[_0xb432('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require(_0xb432('0x1')),'agent':require(_0xb432('0x2'))};
\ No newline at end of file
+var _0xb52a=['./beepall','./agent','exports','./rrmemory'];(function(_0x2f6741,_0x34e3a4){var _0x2d17b0=function(_0x228cae){while(--_0x228cae){_0x2f6741['push'](_0x2f6741['shift']());}};_0x2d17b0(++_0x34e3a4);}(_0xb52a,0xa2));var _0xab52=function(_0xabfec4,_0x35076e){_0xabfec4=_0xabfec4-0x0;var _0x7bafa2=_0xb52a[_0xabfec4];return _0x7bafa2;};'use strict';module[_0xab52('0x0')]={'rrmemory':require(_0xab52('0x1')),'beepall':require(_0xab52('0x2')),'agent':require(_0xab52('0x3'))};
\ No newline at end of file
index a7dfb15..a96ddc3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4861=['agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','done','handleRun','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','busy','busyQueue','showNotification','RINGING','[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s','hideNotification','writeLog','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','queue','realtime','intervals','bind','handleTimeout','module','timeout','drained','handleDrained','push','prototype','handleCheckReject','isAgentAvailable','agents'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4861,0xb3));var _0x1486=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x4861[_0x15bc81];return _0x59440e;};'use strict';var rr=require('rr');var _=require(_0x1486('0x0'));var uuid=require(_0x1486('0x1'));var util=require(_0x1486('0x2'));var logger=require(_0x1486('0x3'))(_0x1486('0x4'));var RRMemory=function(_0x58b503,_0x250522,_0x2e47b4,_0x678232){this[_0x1486('0x5')]=uuid['v4']();this[_0x1486('0x6')]=_0x58b503;this[_0x1486('0x7')]=_0x250522;this[_0x1486('0x8')]=_0x2e47b4;this[_0x1486('0x4')]=_0x678232;this[_0x1486('0x9')]={};this[_0x1486('0x6')]['push'](this['handleRun'][_0x1486('0xa')](this),this[_0x1486('0xb')]['bind'](this),this[_0x1486('0xc')]);this[_0x1486('0x6')]['on'](_0x1486('0xd'),this[_0x1486('0xb')]['bind'](this));this[_0x1486('0x6')]['on'](_0x1486('0xe'),this[_0x1486('0xf')][_0x1486('0xa')](this));};RRMemory['prototype']['push']=function(){this['squeue'][_0x1486('0x10')](this['handleRun'][_0x1486('0xa')](this),this['handleTimeout'][_0x1486('0xa')](this));};RRMemory[_0x1486('0x11')][_0x1486('0xf')]=function(){this[_0x1486('0xb')](!![]);};RRMemory[_0x1486('0x11')][_0x1486('0x12')]=function(_0xec3099){if(util[_0x1486('0x13')](this[_0x1486('0x6')]['id'],this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]],this['squeue'][_0x1486('0x16')],!![])){logger[_0x1486('0x17')](_0x1486('0x18'),this[_0x1486('0x6')]['id'],this[_0x1486('0x15')]);clearInterval(this['intervals'][this[_0x1486('0x15')]]);_0xec3099[_0x1486('0x19')]();setTimeout(this['push']['bind'](this),0x3e8);}};RRMemory[_0x1486('0x11')][_0x1486('0x1a')]=function(_0x203b5d){this[_0x1486('0x15')]=rr(this['queue'][_0x1486('0x1b')]);logger['debug'](_0x1486('0x1c'),this[_0x1486('0x6')]['id'],this[_0x1486('0x15')]);if(_[_0x1486('0x1d')](this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]])){logger[_0x1486('0x17')](_0x1486('0x1e'),this[_0x1486('0x6')]['id'],this[_0x1486('0x15')]);_0x203b5d[_0x1486('0x19')]();setTimeout(this[_0x1486('0x10')]['bind'](this),0x3e8);}else{if(util[_0x1486('0x13')](this[_0x1486('0x6')]['id'],this['realtime'][_0x1486('0x14')][this['agentId']],this['squeue'][_0x1486('0x16')],!![])){this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]][_0x1486('0x1f')]=!![];this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]][_0x1486('0x20')]=this[_0x1486('0x7')]['name'];util['saveWaitingNotification'](this[_0x1486('0x8')],this[_0x1486('0x4')],this['realtime'][_0x1486('0x14')][this[_0x1486('0x15')]],this[_0x1486('0x6')][_0x1486('0x16')]);util[_0x1486('0x21')](this[_0x1486('0x5')],this['squeue']['id'],this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]],this[_0x1486('0x7')],this['routing']);util['writeLog'](this[_0x1486('0x6')]['id'],this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]],_0x1486('0x22'));this[_0x1486('0x9')][this['agentId']]=setInterval(this['handleCheckReject'][_0x1486('0xa')](this,_0x203b5d),0x3e8);}else{logger['debug'](_0x1486('0x23'),this[_0x1486('0x6')]['id'],this[_0x1486('0x15')]);_0x203b5d[_0x1486('0x19')]();setTimeout(this['push'][_0x1486('0xa')](this),0x3e8);}}};RRMemory[_0x1486('0x11')][_0x1486('0xb')]=function(_0x485b0e){logger[_0x1486('0x17')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x1486('0x6')]['id'],this[_0x1486('0x15')]);if(_[_0x1486('0x1d')](this['realtime'][_0x1486('0x14')][this[_0x1486('0x15')]])){logger[_0x1486('0x17')](_0x1486('0x1e'),this[_0x1486('0x6')]['id'],this['agentId']);}else{clearInterval(this[_0x1486('0x9')][this[_0x1486('0x15')]]);util[_0x1486('0x24')](this[_0x1486('0x5')],this[_0x1486('0x6')]['id'],this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]],this[_0x1486('0x7')],this['routing']);util[_0x1486('0x25')](this[_0x1486('0x6')]['id'],this[_0x1486('0x8')]['agents'][this[_0x1486('0x15')]],_0x1486('0x26'));this[_0x1486('0x8')]['agents'][this[_0x1486('0x15')]][_0x1486('0x1f')]=![];this[_0x1486('0x8')][_0x1486('0x14')][this[_0x1486('0x15')]][_0x1486('0x20')]=undefined;util['removeWaitingNotification'](this[_0x1486('0x8')],this[_0x1486('0x4')],this[_0x1486('0x8')]['agents'][this['agentId']],this['squeue']['channel']);}if(!_0x485b0e){setTimeout(this[_0x1486('0x10')][_0x1486('0xa')](this),0x3e8);}};function rrmemory(_0x2ee2b8,_0x3ffe5f,_0x354d98,_0x5d3301){return new RRMemory(_0x2ee2b8,_0x3ffe5f,_0x354d98,_0x5d3301);}module[_0x1486('0x27')]=rrmemory;
\ No newline at end of file
+var _0x759f=['notificationId','squeue','realtime','intervals','handleRun','bind','module','timeout','handleTimeout','drained','handleDrained','push','prototype','handleCheckReject','isAgentAvailable','agents','debug','agentId','queue','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','channel','busy','busyQueue','name','saveWaitingNotification','writeLog','done','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','removeWaitingNotification','exports','lodash','uuid','./util','../../../../../config/logger','routing'];(function(_0x3a00d2,_0x5c0138){var _0x4d7a16=function(_0x2a96f4){while(--_0x2a96f4){_0x3a00d2['push'](_0x3a00d2['shift']());}};_0x4d7a16(++_0x5c0138);}(_0x759f,0x10c));var _0xf759=function(_0x333183,_0x2d198a){_0x333183=_0x333183-0x0;var _0x45ff22=_0x759f[_0x333183];return _0x45ff22;};'use strict';var rr=require('rr');var _=require(_0xf759('0x0'));var uuid=require(_0xf759('0x1'));var util=require(_0xf759('0x2'));var logger=require(_0xf759('0x3'))(_0xf759('0x4'));var RRMemory=function(_0x1a74d5,_0x2dec21,_0x32b1e3,_0x27fbcd){this[_0xf759('0x5')]=uuid['v4']();this[_0xf759('0x6')]=_0x1a74d5;this['queue']=_0x2dec21;this[_0xf759('0x7')]=_0x32b1e3;this['routing']=_0x27fbcd;this[_0xf759('0x8')]={};this[_0xf759('0x6')]['push'](this[_0xf759('0x9')][_0xf759('0xa')](this),this['handleTimeout'][_0xf759('0xa')](this),this[_0xf759('0xb')]);this[_0xf759('0x6')]['on'](_0xf759('0xc'),this[_0xf759('0xd')][_0xf759('0xa')](this));this[_0xf759('0x6')]['on'](_0xf759('0xe'),this[_0xf759('0xf')]['bind'](this));};RRMemory['prototype']['push']=function(){this[_0xf759('0x6')][_0xf759('0x10')](this[_0xf759('0x9')][_0xf759('0xa')](this),this[_0xf759('0xd')][_0xf759('0xa')](this));};RRMemory['prototype'][_0xf759('0xf')]=function(){this['handleTimeout'](!![]);};RRMemory[_0xf759('0x11')][_0xf759('0x12')]=function(_0x4367bd){if(util[_0xf759('0x13')](this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this['agentId']],this[_0xf759('0x6')]['channel'],!![])){logger[_0xf759('0x15')]('[%s][QUEUE]\x20available\x20again\x20%s',this['squeue']['id'],this[_0xf759('0x16')]);clearInterval(this[_0xf759('0x8')][this[_0xf759('0x16')]]);_0x4367bd['done']();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}};RRMemory[_0xf759('0x11')][_0xf759('0x9')]=function(_0x340fec){this[_0xf759('0x16')]=rr(this[_0xf759('0x17')][_0xf759('0x18')]);logger['debug'](_0xf759('0x19'),this[_0xf759('0x6')]['id'],this[_0xf759('0x16')]);if(_[_0xf759('0x1a')](this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]])){logger[_0xf759('0x15')](_0xf759('0x1b'),this[_0xf759('0x6')]['id'],this['agentId']);_0x340fec['done']();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}else{if(util[_0xf759('0x13')](this['squeue']['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this['squeue'][_0xf759('0x1c')],!![])){this['realtime']['agents'][this['agentId']][_0xf759('0x1d')]=!![];this['realtime'][_0xf759('0x14')][this[_0xf759('0x16')]][_0xf759('0x1e')]=this[_0xf759('0x17')][_0xf759('0x1f')];util[_0xf759('0x20')](this[_0xf759('0x7')],this[_0xf759('0x4')],this[_0xf759('0x7')][_0xf759('0x14')][this['agentId']],this[_0xf759('0x6')][_0xf759('0x1c')]);util['showNotification'](this[_0xf759('0x5')],this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this[_0xf759('0x17')],this['routing']);util[_0xf759('0x21')](this['squeue']['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],'RINGING');this[_0xf759('0x8')][this[_0xf759('0x16')]]=setInterval(this[_0xf759('0x12')][_0xf759('0xa')](this,_0x340fec),0x3e8);}else{logger[_0xf759('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0xf759('0x6')]['id'],this['agentId']);_0x340fec[_0xf759('0x22')]();setTimeout(this[_0xf759('0x10')][_0xf759('0xa')](this),0x3e8);}}};RRMemory[_0xf759('0x11')][_0xf759('0xd')]=function(_0x444230){logger[_0xf759('0x15')](_0xf759('0x23'),this[_0xf759('0x6')]['id'],this['agentId']);if(_['isNil'](this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]])){logger['debug'](_0xf759('0x1b'),this[_0xf759('0x6')]['id'],this['agentId']);}else{clearInterval(this['intervals'][this[_0xf759('0x16')]]);util[_0xf759('0x24')](this[_0xf759('0x5')],this[_0xf759('0x6')]['id'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this['queue'],this[_0xf759('0x4')]);util[_0xf759('0x21')](this['squeue']['id'],this[_0xf759('0x7')]['agents'][this[_0xf759('0x16')]],'TIMEOUT');this['realtime'][_0xf759('0x14')][this[_0xf759('0x16')]]['busy']=![];this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]]['busyQueue']=undefined;util[_0xf759('0x25')](this['realtime'],this['routing'],this[_0xf759('0x7')][_0xf759('0x14')][this[_0xf759('0x16')]],this[_0xf759('0x6')][_0xf759('0x1c')]);}if(!_0x444230){setTimeout(this[_0xf759('0x10')]['bind'](this),0x3e8);}};function rrmemory(_0x3a8bc9,_0x47d81c,_0x2034ab,_0x36c8de){return new RRMemory(_0x3a8bc9,_0x47d81c,_0x2034ab,_0x36c8de);}module[_0xf759('0x26')]=rrmemory;
\ No newline at end of file
index 4f975a2..d7c9732 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ca2=['redis','localhost','socket.io-emitter','format','user:%s','name','emit','user:save','split','\x20interaction','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','online','Pause','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','\x20MAXCAPACITY','showNotification','hideNotification','checkWaitingNotifications','interaction','channel','QueuesWaitingInteractions','capitalize','InteractionId','some','agents','WaitingInteractions','saveWaitingNotification','writeLog','util','../utils','../../../../../config/environment','routing'];(function(_0xf4050f,_0xefc6bb){var _0x42baab=function(_0x571abb){while(--_0x571abb){_0xf4050f['push'](_0xf4050f['shift']());}};_0x42baab(++_0xefc6bb);}(_0x4ca2,0x19c));var _0x24ca=function(_0x56f7e2,_0x145392){_0x56f7e2=_0x56f7e2-0x0;var _0x36240b=_0x4ca2[_0x56f7e2];return _0x36240b;};'use strict';var _=require('lodash');var util=require(_0x24ca('0x0'));var utils=require(_0x24ca('0x1'));var Redis=require('ioredis');var config=require(_0x24ca('0x2'));var logger=require('../../../../../config/logger')(_0x24ca('0x3'));config[_0x24ca('0x4')]=_['defaults'](config[_0x24ca('0x4')],{'host':_0x24ca('0x5'),'port':0x18eb});var io=require(_0x24ca('0x6'))(new Redis(config[_0x24ca('0x4')]));function sendNotification(_0x48f72b,_0x3af7c1,_0x38ca56,_0x47b549,_0x57e585,_0x469cb0){io['to'](util[_0x24ca('0x7')](_0x24ca('0x8'),_0x47b549[_0x24ca('0x9')]))[_0x24ca('0xa')](_0x24ca('0xb'),_0x47b549);var _0x17294=_0x469cb0||{};var _0x49e29e=_0x38ca56[_0x24ca('0xc')]('.');var _0x1cd936={'uniqueid':_0x3af7c1,'channel':_0x49e29e[0x0],'id':_0x49e29e[0x1],'title':_0x49e29e[0x0]+_0x24ca('0xd'),'interactionId':_0x49e29e[0x2],'queue':_0x57e585?_0x57e585[_0x24ca('0x9')]:null,'sound':_0x17294[_0x24ca('0xe')][_0x24ca('0xf')],'shake':_0x17294[_0x24ca('0xe')]['notificationShake']};try{if(!_0x17294['body']){_0x17294[_0x24ca('0x10')]={};}if(_0x57e585){_0x17294[_0x24ca('0x10')][_0x24ca('0x11')]=_0x57e585;}else if(_0x17294['body']['queue']){delete _0x17294[_0x24ca('0x10')][_0x24ca('0x11')];}_0x1cd936[_0x24ca('0x12')]=utils[_0x24ca('0x13')](_0x17294[_0x24ca('0xe')][_0x24ca('0x14')],_0x17294);}catch(_0x5d398b){_0x1cd936[_0x24ca('0x12')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0x24ca('0x15')](util[_0x24ca('0x7')](_0x24ca('0x16'),_0x3af7c1,_0x5d398b[_0x24ca('0x17')]));}io['to'](util[_0x24ca('0x7')](_0x24ca('0x8'),_0x47b549[_0x24ca('0x9')]))['emit'](util['format'](_0x24ca('0x18'),_0x48f72b?_0x24ca('0x19'):_0x24ca('0x1a')),_0x1cd936);}function writeLog(_0x59909e,_0x49502b,_0x1018fc){return logger[_0x24ca('0x1b')](util[_0x24ca('0x7')](_0x24ca('0x1c'),_0x59909e,_0x49502b['name'],_0x1018fc));}exports[_0x24ca('0x1d')]=function(_0x55de7e,_0x1aad22,_0x501eb9,_0xa4ed8e){if(_0x1aad22[_0x24ca('0x1e')]){writeLog(_0x55de7e,_0x1aad22,_0x24ca('0x1f'));return![];}if(!_0x1aad22[_0x24ca('0x20')]){writeLog(_0x55de7e,_0x1aad22,'OFFLINE');return![];}if(_0x1aad22[_0x501eb9+_0x24ca('0x21')]){writeLog(_0x55de7e,_0x1aad22,_0x24ca('0x22'));return![];}if(_0xa4ed8e&&_0x1aad22[_0x24ca('0x23')](_0x501eb9+_0x24ca('0x24'))&&_0x1aad22[_0x24ca('0x23')](_0x501eb9+_0x24ca('0x25'))){if(_0x1aad22[_0x501eb9+_0x24ca('0x24')]>0x0&&_0x1aad22[_0x501eb9+_0x24ca('0x25')]>=_0x1aad22[_0x501eb9+'Capacity']){writeLog(_0x55de7e,_0x1aad22,_0x501eb9['toUpperCase']()+_0x24ca('0x26'));return![];}}return!![];};exports[_0x24ca('0x27')]=function(_0x5e3880,_0x1b671f,_0x1011a8,_0x3f2eb2,_0x42fee7){return sendNotification(!![],_0x5e3880,_0x1b671f,_0x1011a8,_0x3f2eb2,_0x42fee7);};exports[_0x24ca('0x28')]=function(_0x1cb842,_0xf01e93,_0x4efbd6,_0x21f9e6,_0x17fe18){return sendNotification(![],_0x1cb842,_0xf01e93,_0x4efbd6,_0x21f9e6,_0x17fe18);};exports[_0x24ca('0x29')]=function(_0x281bfc,_0x33bcc8,_0x3d28d0){var _0x348786=_0x33bcc8[_0x24ca('0x2a')]['UserId'];if(!_0x348786&&_0x3d28d0){_0x348786=_0x3d28d0['id'];}var _0x58ed04=_['some'](_0x281bfc[_0x33bcc8[_0x24ca('0x2b')]+_0x24ca('0x2c')],function(_0xe9077a){var _0x4bed8c=_[_0x24ca('0x2d')](_0x33bcc8[_0x24ca('0x2b')])+_0x24ca('0x2e');return _0xe9077a[_0x4bed8c]===_0x33bcc8[_0x24ca('0x2a')]['id'];});if(!_0x58ed04&&_0x348786){_0x58ed04=_[_0x24ca('0x2f')](_0x281bfc[_0x24ca('0x30')][_0x348786][_0x33bcc8[_0x24ca('0x2b')]+_0x24ca('0x31')],function(_0x1e9332){return _0x1e9332['id']===_0x33bcc8[_0x24ca('0x2a')]['id'];});}return _0x58ed04;};exports[_0x24ca('0x32')]=function(_0x4697f9,_0x40fcc2,_0x7b0dda,_0x1e230b){_0x4697f9[_0x24ca('0x30')][_0x7b0dda['id']][_0x1e230b+_0x24ca('0x31')][_0x40fcc2[_0x24ca('0x17')]['id']]={'id':_0x40fcc2[_0x24ca('0x2a')]['id']};};exports['removeWaitingNotification']=function(_0x30d655,_0x4b1392,_0x51e58b,_0x5e9ffa){delete _0x30d655['agents'][_0x51e58b['id']][_0x5e9ffa+_0x24ca('0x31')][_0x4b1392[_0x24ca('0x17')]['id']];};exports[_0x24ca('0x33')]=writeLog;
\ No newline at end of file
+var _0x435f=['I\x20can\x27t\x20render\x20your\x20template','error','[%s][QUEUE]\x20%s','message','notification:%s','save','remove','debug','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','OFFLINE','PAUSE','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','checkWaitingNotifications','interaction','UserId','some','QueuesWaitingInteractions','capitalize','channel','InteractionId','agents','saveWaitingNotification','WaitingInteractions','removeWaitingNotification','lodash','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','redis','socket.io-emitter','format','user:%s','emit','user:save','split','\x20interaction','name','account','notificationShake','body','queue','msg','getMustacheRender','notificationTemplate'];(function(_0x255d77,_0x196a4f){var _0x537e25=function(_0x3652cb){while(--_0x3652cb){_0x255d77['push'](_0x255d77['shift']());}};_0x537e25(++_0x196a4f);}(_0x435f,0x129));var _0xf435=function(_0x2f0c44,_0x30012e){_0x2f0c44=_0x2f0c44-0x0;var _0x51b16b=_0x435f[_0x2f0c44];return _0x51b16b;};'use strict';var _=require(_0xf435('0x0'));var util=require('util');var utils=require(_0xf435('0x1'));var Redis=require(_0xf435('0x2'));var config=require(_0xf435('0x3'));var logger=require(_0xf435('0x4'))('routing');config[_0xf435('0x5')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xf435('0x6'))(new Redis(config[_0xf435('0x5')]));function sendNotification(_0x104ac9,_0x2d8e22,_0x18f7c8,_0x39fb19,_0x1e0d5,_0xd4d814){io['to'](util[_0xf435('0x7')](_0xf435('0x8'),_0x39fb19['name']))[_0xf435('0x9')](_0xf435('0xa'),_0x39fb19);var _0x5741c2=_0xd4d814||{};var _0x39aef4=_0x18f7c8[_0xf435('0xb')]('.');var _0x412742={'uniqueid':_0x2d8e22,'channel':_0x39aef4[0x0],'id':_0x39aef4[0x1],'title':_0x39aef4[0x0]+_0xf435('0xc'),'interactionId':_0x39aef4[0x2],'queue':_0x1e0d5?_0x1e0d5[_0xf435('0xd')]:null,'sound':_0x5741c2[_0xf435('0xe')]['notificationSound'],'shake':_0x5741c2[_0xf435('0xe')][_0xf435('0xf')]};try{if(!_0x5741c2['body']){_0x5741c2[_0xf435('0x10')]={};}if(_0x1e0d5){_0x5741c2['body'][_0xf435('0x11')]=_0x1e0d5;}else if(_0x5741c2[_0xf435('0x10')]['queue']){delete _0x5741c2[_0xf435('0x10')]['queue'];}_0x412742[_0xf435('0x12')]=utils[_0xf435('0x13')](_0x5741c2[_0xf435('0xe')][_0xf435('0x14')],_0x5741c2);}catch(_0x62e213){_0x412742[_0xf435('0x12')]=_0xf435('0x15');logger[_0xf435('0x16')](util[_0xf435('0x7')](_0xf435('0x17'),_0x2d8e22,_0x62e213[_0xf435('0x18')]));}io['to'](util['format'](_0xf435('0x8'),_0x39fb19[_0xf435('0xd')]))[_0xf435('0x9')](util[_0xf435('0x7')](_0xf435('0x19'),_0x104ac9?_0xf435('0x1a'):_0xf435('0x1b')),_0x412742);}function writeLog(_0x4b300f,_0x18fd4c,_0xfe64){return logger[_0xf435('0x1c')](util[_0xf435('0x7')](_0xf435('0x1d'),_0x4b300f,_0x18fd4c[_0xf435('0xd')],_0xfe64));}exports[_0xf435('0x1e')]=function(_0xf9ac48,_0xa06b11,_0xc9ace5,_0x550917){if(_0xa06b11[_0xf435('0x1f')]){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x20'));return![];}if(!_0xa06b11['online']){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x21'));return![];}if(_0xa06b11[_0xc9ace5+'Pause']){writeLog(_0xf9ac48,_0xa06b11,_0xf435('0x22'));return![];}if(_0x550917&&_0xa06b11[_0xf435('0x23')](_0xc9ace5+_0xf435('0x24'))&&_0xa06b11['hasOwnProperty'](_0xc9ace5+'CurrentCapacity')){if(_0xa06b11[_0xc9ace5+'Capacity']>0x0&&_0xa06b11[_0xc9ace5+_0xf435('0x25')]>=_0xa06b11[_0xc9ace5+_0xf435('0x24')]){writeLog(_0xf9ac48,_0xa06b11,_0xc9ace5[_0xf435('0x26')]()+_0xf435('0x27'));return![];}}return!![];};exports[_0xf435('0x28')]=function(_0x3ff3c6,_0x330b9e,_0x79cc9a,_0x14b013,_0x45247a){return sendNotification(!![],_0x3ff3c6,_0x330b9e,_0x79cc9a,_0x14b013,_0x45247a);};exports['hideNotification']=function(_0x15a6e5,_0x2a400d,_0x4783a2,_0x5c91b0,_0x29fa41){return sendNotification(![],_0x15a6e5,_0x2a400d,_0x4783a2,_0x5c91b0,_0x29fa41);};exports[_0xf435('0x29')]=function(_0x22315d,_0x3bde5f,_0x5f274b){var _0x3c0a4b=_0x3bde5f[_0xf435('0x2a')][_0xf435('0x2b')];if(!_0x3c0a4b&&_0x5f274b){_0x3c0a4b=_0x5f274b['id'];}var _0x477bf9=_[_0xf435('0x2c')](_0x22315d[_0x3bde5f['channel']+_0xf435('0x2d')],function(_0x424861){var _0x1c94a7=_[_0xf435('0x2e')](_0x3bde5f[_0xf435('0x2f')])+_0xf435('0x30');return _0x424861[_0x1c94a7]===_0x3bde5f[_0xf435('0x2a')]['id'];});if(!_0x477bf9&&_0x3c0a4b){_0x477bf9=_['some'](_0x22315d[_0xf435('0x31')][_0x3c0a4b][_0x3bde5f[_0xf435('0x2f')]+'WaitingInteractions'],function(_0x730820){return _0x730820['id']===_0x3bde5f[_0xf435('0x2a')]['id'];});}return _0x477bf9;};exports[_0xf435('0x32')]=function(_0x428054,_0x1ffd93,_0x5edf61,_0x2a4e7b){_0x428054[_0xf435('0x31')][_0x5edf61['id']][_0x2a4e7b+_0xf435('0x33')][_0x1ffd93[_0xf435('0x18')]['id']]={'id':_0x1ffd93[_0xf435('0x2a')]['id']};};exports[_0xf435('0x34')]=function(_0x40b49c,_0x22d229,_0x19f8fb,_0x4d0c12){delete _0x40b49c[_0xf435('0x31')][_0x19f8fb['id']][_0x4d0c12+_0xf435('0x33')][_0x22d229[_0xf435('0x18')]['id']];};exports['writeLog']=writeLog;
\ No newline at end of file
index be93ee3..b7ff045 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09b2=['join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','exec','trim','[%s][SYSTEM]\x20result\x20code:\x20%s','replace','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','body','[%s][SYSTEM]\x20%s','stringify','validate','shelljs','lodash','./utils','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','map','message'];(function(_0x484c03,_0x13c1d2){var _0x294127=function(_0x45a834){while(--_0x45a834){_0x484c03['push'](_0x484c03['shift']());}};_0x294127(++_0x13c1d2);}(_0x09b2,0x150));var _0x209b=function(_0x291d80,_0x574ab4){_0x291d80=_0x291d80-0x0;var _0x35e2c6=_0x09b2[_0x291d80];return _0x35e2c6;};'use strict';var schema=require(_0x209b('0x0'));var sh=require(_0x209b('0x1'));var _=require(_0x209b('0x2'));var utils=require(_0x209b('0x3'));var logger=require('../../../../config/logger')(_0x209b('0x4'));var system=schema({'command':{'type':_0x209b('0x5'),'required':!![],'message':_0x209b('0x6')}});exports[_0x209b('0x7')]=function(_0x3f3ffa,_0x13b187){return function(_0x2fe60c){try{var _0x3a8835={'command':_0x13b187[0x0]};var _0x48d409=system[_0x209b('0x0')](_0x3a8835,{'typecast':!![]});if(_0x48d409[_0x209b('0x8')]){logger[_0x209b('0x9')]('[%s][SYSTEM]\x20%s',_0x3f3ffa,_[_0x209b('0xa')](_0x48d409,_0x209b('0xb'))[_0x209b('0xc')](',\x20'));logger[_0x209b('0xd')](_0x209b('0xe'),_0x3f3ffa);_0x2fe60c[_0x209b('0xf')]();}else{var _0x2eeb70=this;var _0x360a46=utils[_0x209b('0x10')](_0x13b187[0x0],this);logger[_0x209b('0xd')](_0x209b('0x11'),_0x3f3ffa,_0x360a46);sh[_0x209b('0x12')](_[_0x209b('0x13')](_0x360a46),function(_0x1dec20,_0x430e39){logger[_0x209b('0xd')](_0x209b('0x14'),_0x3f3ffa,_0x1dec20);if(_0x1dec20==0x0){var _0x397216=_0x430e39[_0x209b('0x15')](/(\r\n|\n|\r)/gm,'');if(_[_0x209b('0x16')](_0x13b187[0x1])||_[_0x209b('0x17')](_0x13b187[0x1])){logger[_0x209b('0xd')](_0x209b('0x18'),_0x3f3ffa);_0x2eeb70['body'][_0x13b187[0x1]]=_0x397216;}else{logger[_0x209b('0xd')](_0x209b('0x19'),_0x3f3ffa,_0x13b187[0x1],_0x397216);_0x2eeb70[_0x209b('0x1a')][_0x13b187[0x1]]=_0x397216;}}_0x2fe60c['next']();});}}catch(_0x194073){logger[_0x209b('0x9')](_0x209b('0x1b'),_0x3f3ffa,_['isObject'](_0x194073)?JSON[_0x209b('0x1c')](_0x194073):_0x194073);logger[_0x209b('0xd')](_0x209b('0xe'),_0x3f3ffa);_0x2fe60c['next']();}};};
\ No newline at end of file
+var _0x5d3c=['[%s][SYSTEM]\x20no\x20variable','body','[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s','validate','shelljs','lodash','../../../../config/logger','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','length','error','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','isNil'];(function(_0x273c39,_0x1052e6){var _0x46d6b5=function(_0x44f1fb){while(--_0x44f1fb){_0x273c39['push'](_0x273c39['shift']());}};_0x46d6b5(++_0x1052e6);}(_0x5d3c,0x159));var _0xc5d3=function(_0x21be3c,_0x5cd3e9){_0x21be3c=_0x21be3c-0x0;var _0x511b10=_0x5d3c[_0x21be3c];return _0x511b10;};'use strict';var schema=require(_0xc5d3('0x0'));var sh=require(_0xc5d3('0x1'));var _=require(_0xc5d3('0x2'));var utils=require('./utils');var logger=require(_0xc5d3('0x3'))('routing');var system=schema({'command':{'type':_0xc5d3('0x4'),'required':!![],'message':_0xc5d3('0x5')}});exports[_0xc5d3('0x6')]=function(_0x2a3a59,_0x19407a){return function(_0x2ca5d4){try{var _0x2f52ee={'command':_0x19407a[0x0]};var _0x5d3cae=system['validate'](_0x2f52ee,{'typecast':!![]});if(_0x5d3cae[_0xc5d3('0x7')]){logger[_0xc5d3('0x8')]('[%s][SYSTEM]\x20%s',_0x2a3a59,_['map'](_0x5d3cae,_0xc5d3('0x9'))[_0xc5d3('0xa')](',\x20'));logger[_0xc5d3('0xb')](_0xc5d3('0xc'),_0x2a3a59);_0x2ca5d4['next']();}else{var _0x22a0c7=this;var _0xc6d012=utils[_0xc5d3('0xd')](_0x19407a[0x0],this);logger['info'](_0xc5d3('0xe'),_0x2a3a59,_0xc6d012);sh['exec'](_['trim'](_0xc6d012),function(_0x3fad3b,_0x1bd03b){logger[_0xc5d3('0xb')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x2a3a59,_0x3fad3b);if(_0x3fad3b==0x0){var _0x47ce0f=_0x1bd03b['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0xc5d3('0xf')](_0x19407a[0x1])||_['isEmpty'](_0x19407a[0x1])){logger[_0xc5d3('0xb')](_0xc5d3('0x10'),_0x2a3a59);_0x22a0c7[_0xc5d3('0x11')][_0x19407a[0x1]]=_0x47ce0f;}else{logger[_0xc5d3('0xb')](_0xc5d3('0x12'),_0x2a3a59,_0x19407a[0x1],_0x47ce0f);_0x22a0c7[_0xc5d3('0x11')][_0x19407a[0x1]]=_0x47ce0f;}}_0x2ca5d4['next']();});}}catch(_0x40e0c1){logger[_0xc5d3('0x8')]('[%s][SYSTEM]\x20%s',_0x2a3a59,_['isObject'](_0x40e0c1)?JSON['stringify'](_0x40e0c1):_0x40e0c1);logger[_0xc5d3('0xb')]('[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next',_0x2a3a59);_0x2ca5d4['next']();}};};
\ No newline at end of file
index b7a4d4b..82a2ead 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x257a=['error','[%s][TAG]\x20%s','map','message','info','next','channel','Interaction','addTags','interaction','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','finally','isObject','stringify','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','routing','consequence','length'];(function(_0x3078c2,_0x53c7d0){var _0x435be6=function(_0x201bb0){while(--_0x201bb0){_0x3078c2['push'](_0x3078c2['shift']());}};_0x435be6(++_0x53c7d0);}(_0x257a,0x160));var _0xa257=function(_0x485694,_0x4b5db8){_0x485694=_0x485694-0x0;var _0x29cf67=_0x257a[_0x485694];return _0x29cf67;};'use strict';var schema=require('validate');var _=require(_0xa257('0x0'));var rpc={'chatInteraction':require(_0xa257('0x1')),'openchannelInteraction':require(_0xa257('0x2')),'smsInteraction':require('../../rpc/smsInteraction'),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xa257('0x3')),'whatsappInteraction':require(_0xa257('0x4'))};var logger=require('../../../../config/logger')(_0xa257('0x5'));var tag=schema({'tag':{'type':'number','required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xa257('0x6')]=function(_0xae875f,_0xd0d9d8,_0x554fd2,_0x1583a2){return function(_0x189f2f){try{var _0x2cf15a={'tag':_0xd0d9d8[0x0]};var _0x11546d=tag['validate'](_0x2cf15a,{'typecast':!![]});if(_0x11546d[_0xa257('0x7')]){logger[_0xa257('0x8')](_0xa257('0x9'),_0xae875f,_[_0xa257('0xa')](_0x11546d,_0xa257('0xb'))['join'](',\x20'));logger[_0xa257('0xc')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0xae875f);_0x189f2f[_0xa257('0xd')]();}else{var _0x49c820={'ids':[_0xd0d9d8[0x0]]};if(rpc[_0x1583a2[_0xa257('0xe')]+_0xa257('0xf')]){rpc[_0x1583a2['channel']+_0xa257('0xf')][_0xa257('0x10')](_0x1583a2[_0xa257('0x11')]['id'],_0x49c820)['then'](function(_0xa8671d){logger['info'](_0xa257('0x12'),_0xae875f,_0xd0d9d8[0x1],_0x1583a2[_0xa257('0xe')],_0x1583a2['interaction']['id']);})[_0xa257('0x13')](function(_0x4f2f19){logger[_0xa257('0x8')]('[%s][TAG]\x20%s',_0xae875f,JSON['stringify'](_0x4f2f19));logger[_0xa257('0xc')](_0xa257('0x14'),_0xae875f);})[_0xa257('0x15')](function(){_0x189f2f[_0xa257('0xd')]();});}}}catch(_0x284fb9){logger[_0xa257('0x8')](_0xa257('0x9'),_0xae875f,_[_0xa257('0x16')](_0x284fb9)?JSON[_0xa257('0x17')](_0x284fb9):_0x284fb9);logger['info'](_0xa257('0x14'),_0xae875f);_0x189f2f[_0xa257('0xd')]();}};};
\ No newline at end of file
+var _0x716e=['../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../../../config/logger','routing','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','isObject','validate','lodash','../../rpc/chatInteraction','../../rpc/openchannelInteraction'];(function(_0x2cdc6a,_0x34f7fb){var _0x1e0fe6=function(_0x3cac93){while(--_0x3cac93){_0x2cdc6a['push'](_0x2cdc6a['shift']());}};_0x1e0fe6(++_0x34f7fb);}(_0x716e,0x1af));var _0xe716=function(_0x45bdf1,_0xb31ef2){_0x45bdf1=_0x45bdf1-0x0;var _0x125fbd=_0x716e[_0x45bdf1];return _0x125fbd;};'use strict';var schema=require(_0xe716('0x0'));var _=require(_0xe716('0x1'));var rpc={'chatInteraction':require(_0xe716('0x2')),'openchannelInteraction':require(_0xe716('0x3')),'smsInteraction':require(_0xe716('0x4')),'mailInteraction':require(_0xe716('0x5')),'faxInteraction':require(_0xe716('0x6')),'whatsappInteraction':require(_0xe716('0x7'))};var logger=require(_0xe716('0x8'))(_0xe716('0x9'));var tag=schema({'tag':{'type':'number','required':!![],'message':_0xe716('0xa')}});exports['consequence']=function(_0x410d0c,_0x2ff3aa,_0x5b260b,_0x27e2df){return function(_0xc6bec3){try{var _0x10212b={'tag':_0x2ff3aa[0x0]};var _0x5cdfc9=tag[_0xe716('0x0')](_0x10212b,{'typecast':!![]});if(_0x5cdfc9[_0xe716('0xb')]){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,_[_0xe716('0xe')](_0x5cdfc9,_0xe716('0xf'))[_0xe716('0x10')](',\x20'));logger[_0xe716('0x11')](_0xe716('0x12'),_0x410d0c);_0xc6bec3[_0xe716('0x13')]();}else{var _0x289175={'ids':[_0x2ff3aa[0x0]]};if(rpc[_0x27e2df[_0xe716('0x14')]+_0xe716('0x15')]){rpc[_0x27e2df['channel']+'Interaction'][_0xe716('0x16')](_0x27e2df[_0xe716('0x17')]['id'],_0x289175)[_0xe716('0x18')](function(_0x3e6587){logger[_0xe716('0x11')](_0xe716('0x19'),_0x410d0c,_0x2ff3aa[0x1],_0x27e2df[_0xe716('0x14')],_0x27e2df['interaction']['id']);})[_0xe716('0x1a')](function(_0x5a7bf9){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,JSON[_0xe716('0x1b')](_0x5a7bf9));logger[_0xe716('0x11')](_0xe716('0x12'),_0x410d0c);})['finally'](function(){_0xc6bec3['next']();});}}}catch(_0x4815dd){logger[_0xe716('0xc')](_0xe716('0xd'),_0x410d0c,_[_0xe716('0x1c')](_0x4815dd)?JSON[_0xe716('0x1b')](_0x4815dd):_0x4815dd);logger['info'](_0xe716('0x12'),_0x410d0c);_0xc6bec3[_0xe716('0x13')]();}};};
\ No newline at end of file
index b9efbb3..ba6ae9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d75=['[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','isObject','stop','next','request-promise','routing','lodash','consequence','replace','includes','push','urlOnAnswer','?params=','title','jsonrpc','2.0','method','login','params','stringify','application/json-rpc','then','parse','result','logged','channelId=','&serviceId=','&sessionId=','&data='];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5d75,0x1e7));var _0x55d7=function(_0x1880bd,_0x2f6107){_0x1880bd=_0x1880bd-0x0;var _0x403732=_0x5d75[_0x1880bd];return _0x403732;};'use strict';var rp=require(_0x55d7('0x0'));var logger=require('../../../../config/logger')(_0x55d7('0x1'));var _=require(_0x55d7('0x2'));var arr=[];exports[_0x55d7('0x3')]=function(_0x591432,_0x51a04d){return function(_0x436e92){var _0x88d817=_0x51a04d[0xa];var _0x1be157=_0x51a04d[0xb];var _0x53092e=_0x51a04d[0xc];var _0x262a95=_0x51a04d[0xd];var _0x21611a=_0x51a04d[0xe];var _0x2d0b5e=_0x51a04d[0xf][_0x55d7('0x4')](/\n/g,'\x20-\x20');var _0x1deada=_0x51a04d[0x10][_0x55d7('0x4')](/\n/g,'\x20');if(!arr[_0x55d7('0x5')](_0x1be157)){arr[_0x55d7('0x6')](_0x1be157);var _0x1a5e36=_0x51a04d[0x3];var _0x218fb2=_0x51a04d[0x4];var _0xb687e7=_0x51a04d[0x1];var _0x2420e3=_0x51a04d[0x0];var _0x177b37={};_0x177b37[_0x55d7('0x7')]=_0x51a04d[0x8]+_0x55d7('0x8')+_0x53092e+'|'+_0x88d817+'|'+_0x262a95+'|'+_0x1be157+'|'+_0x21611a;_0x177b37['urlOnRing']=_0x51a04d[0x7]+'?params='+_0x53092e+'|'+_0x88d817+'|'+_0x262a95+'|'+_0x1be157+'|'+_0x21611a+'|'+_0x2d0b5e+'|'+_0x1deada;_0x177b37[_0x55d7('0x9')]=_0x51a04d[0x9];var _0x43e6be={};_0x43e6be[_0x55d7('0xa')]=_0x55d7('0xb');_0x43e6be[_0x55d7('0xc')]=_0x55d7('0xd');var _0x45ce06=[];_0x45ce06[_0x55d7('0x6')](_0x51a04d[0x2]);_0x45ce06[_0x55d7('0x6')](_0x51a04d[0x5]);_0x45ce06['push'](_0x51a04d[0x6]);_0x43e6be[_0x55d7('0xe')]=_0x45ce06;_0x43e6be['id']=0x1;var _0x37ca35=JSON[_0x55d7('0xf')](_0x43e6be);var _0x32b801={'encoding':'utf8','method':'POST','timeout':0x2710,'url':_0x1a5e36,'headers':{'Content-Type':_0x55d7('0x10')},'body':_0x37ca35};return rp(_0x32b801)[_0x55d7('0x11')](function(_0x128501){const _0x26a2dd=JSON[_0x55d7('0x12')](_0x128501);if(!_0x26a2dd[_0x55d7('0x13')][_0x55d7('0x14')]){throw new Error('Unable\x20to\x20login\x20with\x20TVox\x20application');}var _0x156599=_0x1be157;var _0x176e97=_0x55d7('0x15')+_0xb687e7+_0x55d7('0x16')+_0x2420e3+_0x55d7('0x17')+_0x156599+_0x55d7('0x18')+JSON[_0x55d7('0xf')](_0x177b37);var _0x5df20e=_0x218fb2+'?'+_0x176e97;return rp(_0x5df20e);})[_0x55d7('0x11')](function(_0x3b6dc3){logger['info'](_0x55d7('0x19'),_0x591432,_0x3b6dc3);_0x436e92['stop']();})[_0x55d7('0x1a')](function(_0x10881c){logger[_0x55d7('0x1b')](_0x55d7('0x1c'),_0x591432,_[_0x55d7('0x1d')](_0x10881c)?JSON['stringify'](_0x10881c):_0x10881c);_0x436e92[_0x55d7('0x1e')]();});}else{logger['info']('[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next',_0x591432);_0x436e92[_0x55d7('0x1f')]();}};};
\ No newline at end of file
+var _0x9e45=['[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise','lodash','consequence','replace','\x20-\x20','includes','urlOnAnswer','urlOnRing','?params=','title','jsonrpc','2.0','push','params','stringify','utf8','POST','application/json-rpc','then','parse','logged','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&sessionId=','&data=','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','catch','error','[%s][TVOX]\x20%s','stop'];(function(_0x56957c,_0x547595){var _0x55261e=function(_0x451cff){while(--_0x451cff){_0x56957c['push'](_0x56957c['shift']());}};_0x55261e(++_0x547595);}(_0x9e45,0x14c));var _0x59e4=function(_0xb1473e,_0x3ed6d7){_0xb1473e=_0xb1473e-0x0;var _0x9760f4=_0x9e45[_0xb1473e];return _0x9760f4;};'use strict';var rp=require(_0x59e4('0x0'));var logger=require('../../../../config/logger')('routing');var _=require(_0x59e4('0x1'));var arr=[];exports[_0x59e4('0x2')]=function(_0x39aac0,_0x41efbe){return function(_0x316777){var _0x45ba48=_0x41efbe[0xa];var _0x795909=_0x41efbe[0xb];var _0xf23331=_0x41efbe[0xc];var _0x25d816=_0x41efbe[0xd];var _0x49309d=_0x41efbe[0xe];var _0x2dcdd8=_0x41efbe[0xf][_0x59e4('0x3')](/\n/g,_0x59e4('0x4'));var _0x1e96be=_0x41efbe[0x10][_0x59e4('0x3')](/\n/g,'\x20');if(!arr[_0x59e4('0x5')](_0x795909)){arr['push'](_0x795909);var _0x4f0f70=_0x41efbe[0x3];var _0x577c6d=_0x41efbe[0x4];var _0x5d7f5d=_0x41efbe[0x1];var _0x36c598=_0x41efbe[0x0];var _0x1a9744={};_0x1a9744[_0x59e4('0x6')]=_0x41efbe[0x8]+'?params='+_0xf23331+'|'+_0x45ba48+'|'+_0x25d816+'|'+_0x795909+'|'+_0x49309d;_0x1a9744[_0x59e4('0x7')]=_0x41efbe[0x7]+_0x59e4('0x8')+_0xf23331+'|'+_0x45ba48+'|'+_0x25d816+'|'+_0x795909+'|'+_0x49309d+'|'+_0x2dcdd8+'|'+_0x1e96be;_0x1a9744[_0x59e4('0x9')]=_0x41efbe[0x9];var _0x15f11c={};_0x15f11c[_0x59e4('0xa')]=_0x59e4('0xb');_0x15f11c['method']='login';var _0x3db483=[];_0x3db483['push'](_0x41efbe[0x2]);_0x3db483[_0x59e4('0xc')](_0x41efbe[0x5]);_0x3db483[_0x59e4('0xc')](_0x41efbe[0x6]);_0x15f11c[_0x59e4('0xd')]=_0x3db483;_0x15f11c['id']=0x1;var _0x526ad9=JSON[_0x59e4('0xe')](_0x15f11c);var _0x473640={'encoding':_0x59e4('0xf'),'method':_0x59e4('0x10'),'timeout':0x2710,'url':_0x4f0f70,'headers':{'Content-Type':_0x59e4('0x11')},'body':_0x526ad9};return rp(_0x473640)[_0x59e4('0x12')](function(_0x480bdd){const _0x2b67a3=JSON[_0x59e4('0x13')](_0x480bdd);if(!_0x2b67a3['result'][_0x59e4('0x14')]){throw new Error(_0x59e4('0x15'));}var _0xc83c5a=_0x795909;var _0x3b6d2a=_0x59e4('0x16')+_0x5d7f5d+'&serviceId='+_0x36c598+_0x59e4('0x17')+_0xc83c5a+_0x59e4('0x18')+JSON[_0x59e4('0xe')](_0x1a9744);var _0x23ef4b=_0x577c6d+'?'+_0x3b6d2a;return rp(_0x23ef4b);})[_0x59e4('0x12')](function(_0x338241){logger[_0x59e4('0x19')](_0x59e4('0x1a'),_0x39aac0,_0x338241);_0x316777['stop']();})[_0x59e4('0x1b')](function(_0x6a7cf2){logger[_0x59e4('0x1c')](_0x59e4('0x1d'),_0x39aac0,_['isObject'](_0x6a7cf2)?JSON[_0x59e4('0xe')](_0x6a7cf2):_0x6a7cf2);_0x316777[_0x59e4('0x1e')]();});}else{logger['info'](_0x59e4('0x1f'),_0x39aac0);_0x316777[_0x59e4('0x20')]();}};};
\ No newline at end of file
index 27ff6b1..ea6c0b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['merge','body','contact','message','list','mustache','lodash','render'];(function(_0x2e9b2f,_0x168690){var _0x33c5bf=function(_0x1619ed){while(--_0x1619ed){_0x2e9b2f['push'](_0x2e9b2f['shift']());}};_0x33c5bf(++_0x168690);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Mustache=require(_0x0d8b('0x0'));var _=require(_0x0d8b('0x1'));module['exports']={'getMustacheRender':function(_0x585166,_0x4b72b0){return Mustache[_0x0d8b('0x2')](_0x585166,_[_0x0d8b('0x3')](_0x4b72b0[_0x0d8b('0x4')],{'contact':_0x4b72b0[_0x0d8b('0x5')],'message':_0x4b72b0[_0x0d8b('0x6')],'account':_0x4b72b0['account'],'interaction':_0x4b72b0['interaction'],'list':_0x4b72b0[_0x0d8b('0x7')]}))||'';}};
\ No newline at end of file
+var _0xbaf0=['list','lodash','exports','render','merge','contact','message','account','interaction'];(function(_0x51002a,_0x5bccbc){var _0x401736=function(_0x266c25){while(--_0x266c25){_0x51002a['push'](_0x51002a['shift']());}};_0x401736(++_0x5bccbc);}(_0xbaf0,0x12a));var _0x0baf=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xbaf0[_0x3947c9];return _0x2e7871;};'use strict';var Mustache=require('mustache');var _=require(_0x0baf('0x0'));module[_0x0baf('0x1')]={'getMustacheRender':function(_0x1e212d,_0x263f79){return Mustache[_0x0baf('0x2')](_0x1e212d,_[_0x0baf('0x3')](_0x263f79['body'],{'contact':_0x263f79[_0x0baf('0x4')],'message':_0x263f79[_0x0baf('0x5')],'account':_0x263f79[_0x0baf('0x6')],'interaction':_0x263f79[_0x0baf('0x7')],'list':_0x263f79[_0x0baf('0x8')]}))||'';}};
\ No newline at end of file
index 6bbe83d..b38ba77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19f1=['isNil','IntervalId','Intervals','map','interval','rules','channel','message','interaction','checkWaitingNotifications','applications','length','app','.js','toLowerCase','autoreply','appdata','split','mail','push','slice','join','dialogflow','dialogflowv2','tag','tvox','account','notificationTemplate','ChatWebsiteId','ContactId','body','./interval','condition','intervals','./applications/','consequence','priority','on\x20interval','\x20|\x20','error','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','matchPath','emit','complete','Skipped\x20routing\x20for\x20%s','routing\x20is\x20empty','agent','agents','busy','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','stack','message\x20is\x20empty','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','find','chatQueues','loggedIn','name','paused','waiting','mailQueues','available','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','http','stringify','127.0.0.1','log','lodash','path','jayson/promise','bluebird','./applications/strategy/util','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format'];(function(_0x5cadd0,_0x3ffb68){var _0x535df4=function(_0x35ff62){while(--_0x35ff62){_0x5cadd0['push'](_0x5cadd0['shift']());}};_0x535df4(++_0x3ffb68);}(_0x19f1,0x1e3));var _0x119f=function(_0x43bf4b,_0x55ace8){_0x43bf4b=_0x43bf4b-0x0;var _0x5be85a=_0x19f1[_0x43bf4b];return _0x5be85a;};'use strict';var _=require(_0x119f('0x0'));var util=require('util');var path=require(_0x119f('0x1'));var fs=require('fs');var jayson=require(_0x119f('0x2'));var BPromise=require(_0x119f('0x3'));var utils=require('./applications/utils');var sUtils=require(_0x119f('0x4'));var logger=require('../../../config/logger')(_0x119f('0x5'));var rpc={'openchannelQueueReport':require(_0x119f('0x6')),'mailQueueReport':require(_0x119f('0x7')),'chatQueueReport':require(_0x119f('0x8')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x119f('0x9'))};var RuleEngine=require(_0x119f('0xa'));function getId(_0x275c93,_0x3d7a74,_0x4f1e0d){return util[_0x119f('0xb')]('%s.%s.%s',_0x275c93,_0x3d7a74||0x0,_0x4f1e0d||0x0);}function getIntervals(_0x44a5e9,_0x11d3a6){var _0x36bb8f=[];if(!_[_0x119f('0xc')](_0x11d3a6[_0x119f('0xd')])&&!_[_0x119f('0xc')](_0x44a5e9[_0x11d3a6[_0x119f('0xd')]])&&!_[_0x119f('0xc')](_0x44a5e9[_0x11d3a6[_0x119f('0xd')]][_0x119f('0xe')])){_0x36bb8f=_[_0x119f('0xf')](_0x44a5e9[_0x11d3a6[_0x119f('0xd')]][_0x119f('0xe')],_0x119f('0x10'));}else if(!_[_0x119f('0xc')](_0x11d3a6['interval'])){_0x36bb8f=[_0x11d3a6[_0x119f('0x10')]];}return _0x36bb8f;}exports['listen']=function(_0x1ad681){_0x1ad681[_0x119f('0x11')]={};return new BPromise(function(_0x242305,_0x565934){var _0x3f8045={'Start':function(_0x4e0d4a){var _0x2f02a0=this;return new Promise(function(_0x249782,_0x111ff3){if(_0x4e0d4a){try{var _0x380c3b=[];var _0x1d336a=getId(_0x4e0d4a[_0x119f('0x12')],_0x4e0d4a['message']?_0x4e0d4a[_0x119f('0x13')]['id']:0x0,_0x4e0d4a[_0x119f('0x14')]?_0x4e0d4a[_0x119f('0x14')]['id']:0x0);var _0x52a48b=sUtils[_0x119f('0x15')](_0x1ad681,_0x4e0d4a);if(!_0x52a48b&&_0x4e0d4a[_0x119f('0x16')]&&_['isArray'](_0x4e0d4a[_0x119f('0x16')])&&_0x4e0d4a[_0x119f('0x16')][_0x119f('0x17')]){for(var _0x69d6b8=0x0;_0x69d6b8<_0x4e0d4a['applications'][_0x119f('0x17')];_0x69d6b8+=0x1){var _0x2870c6=_0x4e0d4a['applications'][_0x69d6b8];if(fs['existsSync'](path['join'](__dirname,'applications',_0x2870c6[_0x119f('0x18')]+_0x119f('0x19')))){var _0x19e2b2=[];switch(_0x2870c6[_0x119f('0x18')][_0x119f('0x1a')]()){case _0x119f('0x1b'):var _0x566b92=_0x2870c6[_0x119f('0x1c')][_0x119f('0x1d')](',');if(_0x4e0d4a['channel']===_0x119f('0x1e')){_0x19e2b2['push'](_0x566b92[0x0]);_0x19e2b2[_0x119f('0x1f')](_0x566b92[0x1]);_0x19e2b2[_0x119f('0x1f')](_0x566b92[_0x119f('0x20')](0x2,_0x566b92['length'])[_0x119f('0x21')](','));}else{_0x19e2b2[_0x119f('0x1f')](_0x566b92[0x0]);_0x19e2b2['push'](_0x566b92[_0x119f('0x20')](0x1,_0x566b92[_0x119f('0x17')])['join'](','));}break;case _0x119f('0x22'):var _0x29261f=_0x2870c6[_0x119f('0x1c')][_0x119f('0x1d')](',');_0x19e2b2[_0x119f('0x1f')](_0x29261f[0x0]);_0x19e2b2['push'](_0x29261f[0x1]);_0x19e2b2['push'](_0x29261f[_0x119f('0x20')](0x2,_0x29261f[_0x119f('0x17')])[_0x119f('0x21')](','));break;case _0x119f('0x23'):var _0x19892f=_0x2870c6['appdata'][_0x119f('0x1d')](',');_0x19e2b2[_0x119f('0x1f')](_0x19892f[0x0]);_0x19e2b2[_0x119f('0x1f')](_0x19892f[0x1]);_0x19e2b2[_0x119f('0x1f')](_0x19892f[0x2]);_0x19e2b2['push'](_0x19892f[0x3]);_0x19e2b2[_0x119f('0x1f')](_0x19892f[_0x119f('0x20')](0x4,_0x19892f['length'])[_0x119f('0x21')](','));break;case'amazonlex':var _0x1241c7=_0x2870c6[_0x119f('0x1c')][_0x119f('0x1d')](',');_0x19e2b2[_0x119f('0x1f')](_0x1241c7[0x0]);_0x19e2b2[_0x119f('0x1f')](_0x1241c7[0x1]);_0x19e2b2[_0x119f('0x1f')](_0x1241c7[0x2]);_0x19e2b2[_0x119f('0x1f')](_0x1241c7[0x3]);_0x19e2b2[_0x119f('0x1f')](_0x1241c7[_0x119f('0x20')](0x4,_0x1241c7['length'])[_0x119f('0x21')](','));break;case _0x119f('0x13'):_0x19e2b2[_0x119f('0x1f')](_0x2870c6[_0x119f('0x1c')]);break;case _0x119f('0x24'):_0x19e2b2[_0x119f('0x1f')](_0x2870c6['TagId']);_0x19e2b2['push'](_0x2870c6[_0x119f('0x1c')]);break;case _0x119f('0x25'):var _0xc4c693=utils['getMustacheRender'](_0x4e0d4a[_0x119f('0x26')][_0x119f('0x27')],_0x4e0d4a);var _0x2202ac=_0x2870c6[_0x119f('0x1c')]['split'](',');_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x0]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x1]);_0x19e2b2['push'](_0x2202ac[0x2]);_0x19e2b2['push'](_0x2202ac[0x3]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x4]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x5]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x6]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x7]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0x8]);_0x19e2b2['push'](_0x2202ac[0x9]);_0x19e2b2[_0x119f('0x1f')](_0x2202ac[0xa]);_0x19e2b2[_0x119f('0x1f')](_0x4e0d4a[_0x119f('0x14')]['id']);_0x19e2b2[_0x119f('0x1f')](_0x4e0d4a[_0x119f('0x13')]['id']);_0x19e2b2[_0x119f('0x1f')](_0x2870c6[_0x119f('0x28')]);_0x19e2b2[_0x119f('0x1f')](_0x4e0d4a[_0x119f('0x14')][_0x119f('0x29')]);_0x19e2b2[_0x119f('0x1f')](_0x4e0d4a[_0x119f('0x2a')][_0x119f('0x2a')]);_0x19e2b2[_0x119f('0x1f')](_0xc4c693);break;default:_0x19e2b2=_[_0x119f('0xc')](_0x2870c6[_0x119f('0x1c')])?[]:_0x2870c6[_0x119f('0x1c')][_0x119f('0x1d')](',');}var _0x3af616={'id':util[_0x119f('0xb')]('%s:%s:%s',_0x1d336a,_0x2870c6['id'],_0x2870c6['app']),'condition':require(_0x119f('0x2b'))[_0x119f('0x2c')](_0x1d336a,getIntervals(_0x1ad681[_0x119f('0x2d')],_0x2870c6),_0x1ad681),'consequence':require(_0x119f('0x2e')+_0x2870c6['app'])[_0x119f('0x2f')](_0x1d336a,_0x19e2b2,_0x1ad681,_0x4e0d4a),'p':_0x2870c6[_0x119f('0x30')]||0x0};logger['info']('Push\x20new\x20rule',_0x3af616['id'],_0x119f('0x31'),getIntervals(_0x1ad681[_0x119f('0x2d')],_0x2870c6)[_0x119f('0x21')](_0x119f('0x32')));_0x380c3b[_0x119f('0x1f')](_0x3af616);}else{logger[_0x119f('0x33')](_0x119f('0x34'),path[_0x119f('0x21')](__dirname,_0x119f('0x16'),_0x2870c6['app']+_0x119f('0x19')));}}_0x1ad681[_0x119f('0x11')][_0x1d336a]=new RuleEngine(_0x380c3b);_0x1ad681['rules'][_0x1d336a][_0x119f('0x35')](_0x4e0d4a,function(_0x1725d7){logger[_0x119f('0x36')](_0x119f('0x37'),JSON['stringify'](_0x1725d7[_0x119f('0x38')]));if(_0x1ad681[_0x119f('0x11')][_0x1d336a]){_0x1ad681[_0x119f('0x11')][_0x1d336a][_0x119f('0x39')](_0x119f('0x3a'));}});return _0x249782({'code':0xc8,'message':_0x4e0d4a});}else{if(_0x52a48b){logger['info'](util[_0x119f('0xb')](_0x119f('0x3b'),_0x1d336a));}else{logger[_0x119f('0x36')]('No\x20applications\x20to\x20execute');}return _0x249782({'code':0xc8,'message':_0x4e0d4a});}}catch(_0x51a8b3){logger[_0x119f('0x33')](_0x51a8b3['stack']);return _0x111ff3(_0x2f02a0[_0x119f('0x33')](0x1f4,_0x51a8b3));}}return _0x111ff3(_0x119f('0x3c'));});},'AcceptMessage':function(_0x25f795){var _0x5b8063=this;return new Promise(function(_0x141617,_0x451561){if(_0x25f795[_0x119f('0x3d')]&&_0x25f795[_0x119f('0x3d')]['id']){if(_0x1ad681[_0x119f('0x3e')][_0x25f795[_0x119f('0x3d')]['id']]){_0x1ad681['agents'][_0x25f795['agent']['id']][_0x119f('0x3f')]=![];_0x1ad681[_0x119f('0x3e')][_0x25f795[_0x119f('0x3d')]['id']][_0x119f('0x40')]=undefined;}}if(_0x25f795['message']&&_0x25f795[_0x119f('0x13')]['id']){try{var _0x2bbe91=getId(_0x25f795[_0x119f('0x12')],_0x25f795['message']?_0x25f795[_0x119f('0x13')]['id']:0x0,_0x25f795[_0x119f('0x14')]?_0x25f795[_0x119f('0x14')]['id']:0x0);if(_0x1ad681[_0x119f('0x11')][_0x2bbe91]){_0x1ad681[_0x119f('0x11')][_0x2bbe91][_0x119f('0x39')](_0x119f('0x41'));if(rpc[_0x25f795[_0x119f('0x12')]+_0x119f('0x42')]){rpc[_0x25f795['channel']+_0x119f('0x42')][_0x119f('0x43')](_0x2bbe91,{'UserId':_0x25f795[_0x119f('0x13')][_0x119f('0x44')]})[_0x119f('0x45')](function(){logger[_0x119f('0x33')](_0x119f('0x46'));});}}return _0x141617({'code':0xc8,'message':_0x25f795});}catch(_0xd5226){logger['error'](_0xd5226[_0x119f('0x47')]);return _0x451561(_0x5b8063['error'](0x1f4,_0xd5226));}}logger[_0x119f('0x33')]('message\x20is\x20empty');return _0x451561(_0x5b8063[_0x119f('0x33')](0x1f4,_0x119f('0x48')));});},'RejectMessage':function(_0x467a87){var _0x93769c=this;return new Promise(function(_0x4be55b,_0x23f2cf){if(_0x467a87[_0x119f('0x3d')]&&_0x467a87['agent']['id']){try{if(_0x1ad681[_0x119f('0x3e')][_0x467a87['agent']['id']]){_0x1ad681[_0x119f('0x3e')][_0x467a87['agent']['id']][_0x119f('0x3f')]=![];_0x1ad681['agents'][_0x467a87[_0x119f('0x3d')]['id']][_0x119f('0x40')]=undefined;}return _0x4be55b({'code':0xc8,'message':_0x467a87});}catch(_0x49bf23){logger[_0x119f('0x33')](_0x49bf23[_0x119f('0x47')]);return _0x23f2cf(_0x93769c[_0x119f('0x33')](0x1f4,_0x49bf23));}}logger[_0x119f('0x33')]('message\x20is\x20empty');return _0x23f2cf(_0x93769c['error'](0x1f4,_0x119f('0x48')));});},'AbandonInteraction':function(_0x257d10){var _0x4d9a3a=this;return new Promise(function(_0x33960f,_0x33abab){if(_0x257d10['channel']&&_0x257d10[_0x119f('0x14')]&&_0x257d10['interaction']['id']){try{var _0x42466c=getId(_0x257d10[_0x119f('0x12')],_0x257d10[_0x119f('0x13')]?_0x257d10[_0x119f('0x13')]['id']:0x0,_0x257d10['interaction']?_0x257d10[_0x119f('0x14')]['id']:0x0);if(_0x1ad681['rules'][_0x42466c]){_0x1ad681[_0x119f('0x11')][_0x42466c][_0x119f('0x39')](_0x119f('0x41'));}return _0x33960f({'code':0xc8,'message':_0x257d10});}catch(_0x1f9340){logger[_0x119f('0x33')](_0x1f9340[_0x119f('0x47')]);return _0x33abab(_0x4d9a3a['error'](0x1f4,_0x1f9340));}}logger['error'](_0x119f('0x48'));return _0x33abab(_0x4d9a3a[_0x119f('0x33')](0x1f4,_0x119f('0x48')));});},'AgentCapacity':function(_0x3b9378){var _0x494208=this;return new Promise(function(_0x170013,_0x5cb749){if(_0x1ad681[_0x119f('0x3e')][_0x119f('0x49')](_0x3b9378['id'])){for(var _0x16b593 in _0x3b9378[_0x119f('0x4a')]){if(_0x3b9378['capacity'][_0x119f('0x49')](_0x16b593)){if(_0x1ad681['agents'][_0x3b9378['id']][_0x119f('0x49')](_0x16b593+_0x119f('0x4b'))){_0x1ad681[_0x119f('0x3e')][_0x3b9378['id']][_0x16b593+'CurrentCapacity']=parseInt(_0x3b9378[_0x119f('0x4a')][_0x16b593],0xa);}}}_0x1ad681[_0x119f('0x3e')][_0x3b9378['id']][_0x119f('0x4c')]();return _0x170013({'code':0xc8,'message':_0x1ad681[_0x119f('0x3e')][_0x3b9378['id']]});}else{return _0x5cb749(_0x494208[_0x119f('0x33')](0x1f4,_0x119f('0x4d')));}});},'Agents':function(_0x12f9f8){return new Promise(function(_0x2c817d){var _0x55d061=_['values'](_0x1ad681[_0x119f('0x3e')]);if(_0x12f9f8&&_0x12f9f8['id']){var _0x1f13c4=_[_0x119f('0x4e')](_0x55d061,function(_0x17477f){return _0x17477f['id']===_0x12f9f8['id'];});_0x2c817d(_0x1f13c4);}else{_0x2c817d({'count':_0x55d061[_0x119f('0x17')],'rows':_0x55d061});}});},'ChatQueues':function(){return new Promise(function(_0x412750){var _0x5850e3=[];for(var _0x4b915d in _0x1ad681['chatQueues']){if(_0x1ad681[_0x119f('0x4f')]['hasOwnProperty'](_0x4b915d)){var _0x573e6c=_0x1ad681[_0x119f('0x4f')][_0x4b915d];var _0x4b0562={'id':_0x573e6c['id'],'available':_0x573e6c['available'],'loggedIn':_0x573e6c[_0x119f('0x50')],'name':_0x573e6c[_0x119f('0x51')],'paused':_0x573e6c[_0x119f('0x52')],'waiting':_0x573e6c[_0x119f('0x53')]};_0x5850e3['push'](_0x4b0562);}}_0x412750({'count':_0x5850e3[_0x119f('0x17')],'rows':_0x5850e3});});},'MailQueues':function(){return new Promise(function(_0x95ec61){var _0x2d50bb=[];for(var _0xca7b54 in _0x1ad681[_0x119f('0x54')]){if(_0x1ad681['mailQueues'][_0x119f('0x49')](_0xca7b54)){var _0x58cefd=_0x1ad681[_0x119f('0x54')][_0xca7b54];var _0x2e4986={'id':_0x58cefd['id'],'available':_0x58cefd[_0x119f('0x55')],'loggedIn':_0x58cefd[_0x119f('0x50')],'name':_0x58cefd['name'],'paused':_0x58cefd[_0x119f('0x52')],'waiting':_0x58cefd[_0x119f('0x53')]};_0x2d50bb[_0x119f('0x1f')](_0x2e4986);}}_0x95ec61({'count':_0x2d50bb[_0x119f('0x17')],'rows':_0x2d50bb});});},'OpenchannelQueues':function(){return new Promise(function(_0x4714d9){var _0x3ad041=[];for(var _0x461b72 in _0x1ad681[_0x119f('0x56')]){if(_0x1ad681[_0x119f('0x56')]['hasOwnProperty'](_0x461b72)){var _0x446ce0=_0x1ad681['openchannelQueues'][_0x461b72];var _0x369b23={'id':_0x446ce0['id'],'available':_0x446ce0[_0x119f('0x55')],'loggedIn':_0x446ce0['loggedIn'],'name':_0x446ce0[_0x119f('0x51')],'paused':_0x446ce0[_0x119f('0x52')],'waiting':_0x446ce0['waiting']};_0x3ad041[_0x119f('0x1f')](_0x369b23);}}_0x4714d9({'count':_0x3ad041[_0x119f('0x17')],'rows':_0x3ad041});});},'SmsQueues':function(){return new Promise(function(_0x3b0743){var _0x3bb65b=[];for(var _0x507393 in _0x1ad681[_0x119f('0x57')]){if(_0x1ad681[_0x119f('0x57')][_0x119f('0x49')](_0x507393)){var _0x390124=_0x1ad681['smsQueues'][_0x507393];var _0x1911d6={'id':_0x390124['id'],'available':_0x390124[_0x119f('0x55')],'loggedIn':_0x390124['loggedIn'],'name':_0x390124['name'],'paused':_0x390124[_0x119f('0x52')],'waiting':_0x390124[_0x119f('0x53')]};_0x3bb65b[_0x119f('0x1f')](_0x1911d6);}}_0x3b0743({'count':_0x3bb65b['length'],'rows':_0x3bb65b});});},'FaxQueues':function(){return new Promise(function(_0x13b476){var _0x3b98db=[];for(var _0x2d0f4c in _0x1ad681[_0x119f('0x58')]){if(_0x1ad681[_0x119f('0x58')]['hasOwnProperty'](_0x2d0f4c)){var _0x325497=_0x1ad681[_0x119f('0x58')][_0x2d0f4c];var _0x1d77ac={'id':_0x325497['id'],'available':_0x325497[_0x119f('0x55')],'loggedIn':_0x325497[_0x119f('0x50')],'name':_0x325497[_0x119f('0x51')],'paused':_0x325497[_0x119f('0x52')],'waiting':_0x325497[_0x119f('0x53')]};_0x3b98db['push'](_0x1d77ac);}}_0x13b476({'count':_0x3b98db[_0x119f('0x17')],'rows':_0x3b98db});});},'WhatsappQueues':function(){return new Promise(function(_0x176cb2){var _0x10fb1b=[];for(var _0x1e0bb2 in _0x1ad681[_0x119f('0x59')]){if(_0x1ad681[_0x119f('0x59')][_0x119f('0x49')](_0x1e0bb2)){var _0x1723ad=_0x1ad681[_0x119f('0x59')][_0x1e0bb2];var _0xe87169={'id':_0x1723ad['id'],'available':_0x1723ad[_0x119f('0x55')],'loggedIn':_0x1723ad[_0x119f('0x50')],'name':_0x1723ad[_0x119f('0x51')],'paused':_0x1723ad['paused'],'waiting':_0x1723ad[_0x119f('0x53')]};_0x10fb1b[_0x119f('0x1f')](_0xe87169);}}_0x176cb2({'count':_0x10fb1b[_0x119f('0x17')],'rows':_0x10fb1b});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x1676b2){var _0x934226=_[_0x119f('0x5a')](_0x1ad681['chatQueuesWaitingInteractions']);_0x1676b2({'count':_0x934226['length'],'rows':_0x934226});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x21a114){var _0x4ae314=_['values'](_0x1ad681[_0x119f('0x5b')]);_0x21a114({'count':_0x4ae314[_0x119f('0x17')],'rows':_0x4ae314});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x1dc916){var _0x224a07=_[_0x119f('0x5a')](_0x1ad681[_0x119f('0x5c')]);_0x1dc916({'count':_0x224a07[_0x119f('0x17')],'rows':_0x224a07});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0x1fcf44){var _0x3f3c7e=_['values'](_0x1ad681[_0x119f('0x5d')]);_0x1fcf44({'count':_0x3f3c7e['length'],'rows':_0x3f3c7e});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x5cd374){var _0x34d4d1=_[_0x119f('0x5a')](_0x1ad681[_0x119f('0x5e')]);_0x5cd374({'count':_0x34d4d1[_0x119f('0x17')],'rows':_0x34d4d1});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x247fa0){var _0x1ba41d=_['values'](_0x1ad681['whatsappQueuesWaitingInteractions']);_0x247fa0({'count':_0x1ba41d[_0x119f('0x17')],'rows':_0x1ba41d});});}};var _0x203e17=jayson['server'](_0x3f8045)[_0x119f('0x5f')]();_0x203e17['on']('error',function(_0x2f825f){logger['error'](JSON[_0x119f('0x60')](_0x2f825f));return _0x565934(_0x2f825f);});_0x203e17['listen'](0x232c,_0x119f('0x61'),function(){console[_0x119f('0x62')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x242305('RPC\x20listening\x20on\x20port:'+0x232c);});});};
\ No newline at end of file
+var _0x4c08=['interval','listen','rules','channel','message','interaction','checkWaitingNotifications','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','mail','push','slice','dialogflow','dialogflowv2','amazonlex','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','condition','consequence','priority','info','Push\x20new\x20rule','on\x20interval','intervals','error','Please\x20create\x20a\x20new\x20file\x20under','execute','Applications\x20executed','emit','complete','No\x20applications\x20to\x20execute','stack','agent','agents','end','QueueReport','update','error\x20update\x20queue\x20report','message\x20is\x20empty','busy','busyQueue','hasOwnProperty','capacity','CurrentCapacity','agent\x20not\x20found','values','find','chatQueues','available','loggedIn','name','paused','waiting','mailQueues','openchannelQueues','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','127.0.0.1','RPC\x20listening\x20on\x20port:','lodash','util','path','jayson/promise','bluebird','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/chatQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals'];(function(_0x46c5e7,_0x94a67d){var _0x2cbecf=function(_0x43db99){while(--_0x43db99){_0x46c5e7['push'](_0x46c5e7['shift']());}};_0x2cbecf(++_0x94a67d);}(_0x4c08,0x183));var _0x84c0=function(_0x3f88bc,_0xe38cf5){_0x3f88bc=_0x3f88bc-0x0;var _0x4df1c4=_0x4c08[_0x3f88bc];return _0x4df1c4;};'use strict';var _=require(_0x84c0('0x0'));var util=require(_0x84c0('0x1'));var path=require(_0x84c0('0x2'));var fs=require('fs');var jayson=require(_0x84c0('0x3'));var BPromise=require(_0x84c0('0x4'));var utils=require(_0x84c0('0x5'));var sUtils=require('./applications/strategy/util');var logger=require(_0x84c0('0x6'))(_0x84c0('0x7'));var rpc={'openchannelQueueReport':require(_0x84c0('0x8')),'mailQueueReport':require('../rpc/mailQueueReport'),'chatQueueReport':require(_0x84c0('0x9')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require('../rpc/faxQueueReport'),'whatsappQueueReport':require(_0x84c0('0xa'))};var RuleEngine=require(_0x84c0('0xb'));function getId(_0x45d52d,_0x1a5bd0,_0x996e88){return util[_0x84c0('0xc')](_0x84c0('0xd'),_0x45d52d,_0x1a5bd0||0x0,_0x996e88||0x0);}function getIntervals(_0x1583be,_0x49ff83){var _0x2271b4=[];if(!_[_0x84c0('0xe')](_0x49ff83['IntervalId'])&&!_['isNil'](_0x1583be[_0x49ff83[_0x84c0('0xf')]])&&!_[_0x84c0('0xe')](_0x1583be[_0x49ff83[_0x84c0('0xf')]]['Intervals'])){_0x2271b4=_['map'](_0x1583be[_0x49ff83[_0x84c0('0xf')]][_0x84c0('0x10')],_0x84c0('0x11'));}else if(!_[_0x84c0('0xe')](_0x49ff83[_0x84c0('0x11')])){_0x2271b4=[_0x49ff83[_0x84c0('0x11')]];}return _0x2271b4;}exports[_0x84c0('0x12')]=function(_0x3a8e43){_0x3a8e43[_0x84c0('0x13')]={};return new BPromise(function(_0x56085f,_0x35f965){var _0x25fb50={'Start':function(_0x3a613b){var _0xb6f5fc=this;return new Promise(function(_0x43883d,_0x4ffa63){if(_0x3a613b){try{var _0x1d471c=[];var _0x195865=getId(_0x3a613b[_0x84c0('0x14')],_0x3a613b[_0x84c0('0x15')]?_0x3a613b[_0x84c0('0x15')]['id']:0x0,_0x3a613b['interaction']?_0x3a613b[_0x84c0('0x16')]['id']:0x0);var _0x5c44e0=sUtils[_0x84c0('0x17')](_0x3a8e43,_0x3a613b);if(!_0x5c44e0&&_0x3a613b[_0x84c0('0x18')]&&_[_0x84c0('0x19')](_0x3a613b[_0x84c0('0x18')])&&_0x3a613b['applications'][_0x84c0('0x1a')]){for(var _0x495746=0x0;_0x495746<_0x3a613b[_0x84c0('0x18')]['length'];_0x495746+=0x1){var _0x535108=_0x3a613b[_0x84c0('0x18')][_0x495746];if(fs[_0x84c0('0x1b')](path[_0x84c0('0x1c')](__dirname,_0x84c0('0x18'),_0x535108[_0x84c0('0x1d')]+_0x84c0('0x1e')))){var _0x501f44=[];switch(_0x535108[_0x84c0('0x1d')][_0x84c0('0x1f')]()){case'autoreply':var _0x1bd38b=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');if(_0x3a613b[_0x84c0('0x14')]===_0x84c0('0x22')){_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x0]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x1]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[_0x84c0('0x24')](0x2,_0x1bd38b[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));}else{_0x501f44[_0x84c0('0x23')](_0x1bd38b[0x0]);_0x501f44[_0x84c0('0x23')](_0x1bd38b[_0x84c0('0x24')](0x1,_0x1bd38b['length'])[_0x84c0('0x1c')](','));}break;case _0x84c0('0x25'):var _0x2c1b45=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x2c1b45[0x0]);_0x501f44[_0x84c0('0x23')](_0x2c1b45[0x1]);_0x501f44[_0x84c0('0x23')](_0x2c1b45[_0x84c0('0x24')](0x2,_0x2c1b45[_0x84c0('0x1a')])['join'](','));break;case _0x84c0('0x26'):var _0x371125=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x371125[0x0]);_0x501f44[_0x84c0('0x23')](_0x371125[0x1]);_0x501f44[_0x84c0('0x23')](_0x371125[0x2]);_0x501f44['push'](_0x371125[0x3]);_0x501f44[_0x84c0('0x23')](_0x371125['slice'](0x4,_0x371125[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));break;case _0x84c0('0x27'):var _0x399402=_0x535108['appdata'][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x399402[0x0]);_0x501f44[_0x84c0('0x23')](_0x399402[0x1]);_0x501f44['push'](_0x399402[0x2]);_0x501f44['push'](_0x399402[0x3]);_0x501f44['push'](_0x399402['slice'](0x4,_0x399402[_0x84c0('0x1a')])[_0x84c0('0x1c')](','));break;case _0x84c0('0x15'):_0x501f44['push'](_0x535108[_0x84c0('0x20')]);break;case _0x84c0('0x28'):_0x501f44[_0x84c0('0x23')](_0x535108[_0x84c0('0x29')]);_0x501f44['push'](_0x535108['appdata']);break;case _0x84c0('0x2a'):var _0x4d74ec=utils[_0x84c0('0x2b')](_0x3a613b[_0x84c0('0x2c')][_0x84c0('0x2d')],_0x3a613b);var _0x3448e8=_0x535108[_0x84c0('0x20')][_0x84c0('0x21')](',');_0x501f44[_0x84c0('0x23')](_0x3448e8[0x0]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x1]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x2]);_0x501f44['push'](_0x3448e8[0x3]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x4]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x5]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x6]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x7]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x8]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0x9]);_0x501f44[_0x84c0('0x23')](_0x3448e8[0xa]);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x16')]['id']);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x15')]['id']);_0x501f44[_0x84c0('0x23')](_0x535108[_0x84c0('0x2e')]);_0x501f44[_0x84c0('0x23')](_0x3a613b['interaction'][_0x84c0('0x2f')]);_0x501f44[_0x84c0('0x23')](_0x3a613b[_0x84c0('0x30')][_0x84c0('0x30')]);_0x501f44['push'](_0x4d74ec);break;default:_0x501f44=_[_0x84c0('0xe')](_0x535108[_0x84c0('0x20')])?[]:_0x535108[_0x84c0('0x20')]['split'](',');}var _0x3caf18={'id':util[_0x84c0('0xc')](_0x84c0('0x31'),_0x195865,_0x535108['id'],_0x535108[_0x84c0('0x1d')]),'condition':require(_0x84c0('0x32'))[_0x84c0('0x33')](_0x195865,getIntervals(_0x3a8e43['intervals'],_0x535108),_0x3a8e43),'consequence':require('./applications/'+_0x535108[_0x84c0('0x1d')])[_0x84c0('0x34')](_0x195865,_0x501f44,_0x3a8e43,_0x3a613b),'p':_0x535108[_0x84c0('0x35')]||0x0};logger[_0x84c0('0x36')](_0x84c0('0x37'),_0x3caf18['id'],_0x84c0('0x38'),getIntervals(_0x3a8e43[_0x84c0('0x39')],_0x535108)[_0x84c0('0x1c')]('\x20|\x20'));_0x1d471c[_0x84c0('0x23')](_0x3caf18);}else{logger[_0x84c0('0x3a')](_0x84c0('0x3b'),path[_0x84c0('0x1c')](__dirname,'applications',_0x535108['app']+_0x84c0('0x1e')));}}_0x3a8e43['rules'][_0x195865]=new RuleEngine(_0x1d471c);_0x3a8e43[_0x84c0('0x13')][_0x195865][_0x84c0('0x3c')](_0x3a613b,function(_0x3cfa1a){logger[_0x84c0('0x36')](_0x84c0('0x3d'),JSON['stringify'](_0x3cfa1a['matchPath']));if(_0x3a8e43[_0x84c0('0x13')][_0x195865]){_0x3a8e43['rules'][_0x195865][_0x84c0('0x3e')](_0x84c0('0x3f'));}});return _0x43883d({'code':0xc8,'message':_0x3a613b});}else{if(_0x5c44e0){logger['info'](util[_0x84c0('0xc')]('Skipped\x20routing\x20for\x20%s',_0x195865));}else{logger[_0x84c0('0x36')](_0x84c0('0x40'));}return _0x43883d({'code':0xc8,'message':_0x3a613b});}}catch(_0x17e589){logger['error'](_0x17e589[_0x84c0('0x41')]);return _0x4ffa63(_0xb6f5fc[_0x84c0('0x3a')](0x1f4,_0x17e589));}}return _0x4ffa63('routing\x20is\x20empty');});},'AcceptMessage':function(_0x2688ce){var _0x2ea9ff=this;return new Promise(function(_0x111738,_0x4ea37a){if(_0x2688ce['agent']&&_0x2688ce[_0x84c0('0x42')]['id']){if(_0x3a8e43[_0x84c0('0x43')][_0x2688ce[_0x84c0('0x42')]['id']]){_0x3a8e43[_0x84c0('0x43')][_0x2688ce[_0x84c0('0x42')]['id']]['busy']=![];_0x3a8e43[_0x84c0('0x43')][_0x2688ce['agent']['id']]['busyQueue']=undefined;}}if(_0x2688ce[_0x84c0('0x15')]&&_0x2688ce[_0x84c0('0x15')]['id']){try{var _0x43dd4b=getId(_0x2688ce['channel'],_0x2688ce[_0x84c0('0x15')]?_0x2688ce['message']['id']:0x0,_0x2688ce[_0x84c0('0x16')]?_0x2688ce['interaction']['id']:0x0);if(_0x3a8e43[_0x84c0('0x13')][_0x43dd4b]){_0x3a8e43['rules'][_0x43dd4b][_0x84c0('0x3e')](_0x84c0('0x44'));if(rpc[_0x2688ce[_0x84c0('0x14')]+_0x84c0('0x45')]){rpc[_0x2688ce['channel']+_0x84c0('0x45')][_0x84c0('0x46')](_0x43dd4b,{'UserId':_0x2688ce[_0x84c0('0x15')]['UserId']})['catch'](function(){logger['error'](_0x84c0('0x47'));});}}return _0x111738({'code':0xc8,'message':_0x2688ce});}catch(_0x3a4ec9){logger['error'](_0x3a4ec9['stack']);return _0x4ea37a(_0x2ea9ff[_0x84c0('0x3a')](0x1f4,_0x3a4ec9));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x4ea37a(_0x2ea9ff[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'RejectMessage':function(_0x2e91b7){var _0x19232d=this;return new Promise(function(_0x38655,_0x397327){if(_0x2e91b7['agent']&&_0x2e91b7[_0x84c0('0x42')]['id']){try{if(_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']]){_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']][_0x84c0('0x49')]=![];_0x3a8e43[_0x84c0('0x43')][_0x2e91b7[_0x84c0('0x42')]['id']][_0x84c0('0x4a')]=undefined;}return _0x38655({'code':0xc8,'message':_0x2e91b7});}catch(_0x3bdf2a){logger[_0x84c0('0x3a')](_0x3bdf2a[_0x84c0('0x41')]);return _0x397327(_0x19232d[_0x84c0('0x3a')](0x1f4,_0x3bdf2a));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x397327(_0x19232d[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'AbandonInteraction':function(_0x1c4748){var _0x4334d8=this;return new Promise(function(_0x3a21a4,_0x54282b){if(_0x1c4748[_0x84c0('0x14')]&&_0x1c4748[_0x84c0('0x16')]&&_0x1c4748[_0x84c0('0x16')]['id']){try{var _0x23c218=getId(_0x1c4748[_0x84c0('0x14')],_0x1c4748['message']?_0x1c4748[_0x84c0('0x15')]['id']:0x0,_0x1c4748[_0x84c0('0x16')]?_0x1c4748[_0x84c0('0x16')]['id']:0x0);if(_0x3a8e43['rules'][_0x23c218]){_0x3a8e43[_0x84c0('0x13')][_0x23c218][_0x84c0('0x3e')](_0x84c0('0x44'));}return _0x3a21a4({'code':0xc8,'message':_0x1c4748});}catch(_0x2c264e){logger['error'](_0x2c264e['stack']);return _0x54282b(_0x4334d8[_0x84c0('0x3a')](0x1f4,_0x2c264e));}}logger[_0x84c0('0x3a')](_0x84c0('0x48'));return _0x54282b(_0x4334d8[_0x84c0('0x3a')](0x1f4,_0x84c0('0x48')));});},'AgentCapacity':function(_0x2f9472){var _0x3c6590=this;return new Promise(function(_0x408d06,_0x2c2c9f){if(_0x3a8e43[_0x84c0('0x43')][_0x84c0('0x4b')](_0x2f9472['id'])){for(var _0x35e981 in _0x2f9472[_0x84c0('0x4c')]){if(_0x2f9472[_0x84c0('0x4c')][_0x84c0('0x4b')](_0x35e981)){if(_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']][_0x84c0('0x4b')](_0x35e981+_0x84c0('0x4d'))){_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']][_0x35e981+'CurrentCapacity']=parseInt(_0x2f9472['capacity'][_0x35e981],0xa);}}}_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']]['updateRealtime']();return _0x408d06({'code':0xc8,'message':_0x3a8e43[_0x84c0('0x43')][_0x2f9472['id']]});}else{return _0x2c2c9f(_0x3c6590['error'](0x1f4,_0x84c0('0x4e')));}});},'Agents':function(_0x120b33){return new Promise(function(_0x1cb0cc){var _0x5c236a=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x43')]);if(_0x120b33&&_0x120b33['id']){var _0x137a07=_[_0x84c0('0x50')](_0x5c236a,function(_0x39de19){return _0x39de19['id']===_0x120b33['id'];});_0x1cb0cc(_0x137a07);}else{_0x1cb0cc({'count':_0x5c236a[_0x84c0('0x1a')],'rows':_0x5c236a});}});},'ChatQueues':function(){return new Promise(function(_0x2556cd){var _0x47b7be=[];for(var _0xbb9f39 in _0x3a8e43[_0x84c0('0x51')]){if(_0x3a8e43[_0x84c0('0x51')][_0x84c0('0x4b')](_0xbb9f39)){var _0x349c77=_0x3a8e43['chatQueues'][_0xbb9f39];var _0x214c93={'id':_0x349c77['id'],'available':_0x349c77[_0x84c0('0x52')],'loggedIn':_0x349c77[_0x84c0('0x53')],'name':_0x349c77[_0x84c0('0x54')],'paused':_0x349c77[_0x84c0('0x55')],'waiting':_0x349c77[_0x84c0('0x56')]};_0x47b7be['push'](_0x214c93);}}_0x2556cd({'count':_0x47b7be[_0x84c0('0x1a')],'rows':_0x47b7be});});},'MailQueues':function(){return new Promise(function(_0x2082ed){var _0x96579c=[];for(var _0x260e0a in _0x3a8e43[_0x84c0('0x57')]){if(_0x3a8e43['mailQueues'][_0x84c0('0x4b')](_0x260e0a)){var _0x5a9b50=_0x3a8e43[_0x84c0('0x57')][_0x260e0a];var _0x58136f={'id':_0x5a9b50['id'],'available':_0x5a9b50['available'],'loggedIn':_0x5a9b50[_0x84c0('0x53')],'name':_0x5a9b50[_0x84c0('0x54')],'paused':_0x5a9b50[_0x84c0('0x55')],'waiting':_0x5a9b50[_0x84c0('0x56')]};_0x96579c[_0x84c0('0x23')](_0x58136f);}}_0x2082ed({'count':_0x96579c[_0x84c0('0x1a')],'rows':_0x96579c});});},'OpenchannelQueues':function(){return new Promise(function(_0xad4ed7){var _0x2c28d0=[];for(var _0x22af0d in _0x3a8e43[_0x84c0('0x58')]){if(_0x3a8e43[_0x84c0('0x58')][_0x84c0('0x4b')](_0x22af0d)){var _0x31e0cb=_0x3a8e43[_0x84c0('0x58')][_0x22af0d];var _0x5aa09d={'id':_0x31e0cb['id'],'available':_0x31e0cb[_0x84c0('0x52')],'loggedIn':_0x31e0cb['loggedIn'],'name':_0x31e0cb[_0x84c0('0x54')],'paused':_0x31e0cb[_0x84c0('0x55')],'waiting':_0x31e0cb[_0x84c0('0x56')]};_0x2c28d0[_0x84c0('0x23')](_0x5aa09d);}}_0xad4ed7({'count':_0x2c28d0[_0x84c0('0x1a')],'rows':_0x2c28d0});});},'SmsQueues':function(){return new Promise(function(_0x27201c){var _0x4cb56d=[];for(var _0x215625 in _0x3a8e43['smsQueues']){if(_0x3a8e43['smsQueues'][_0x84c0('0x4b')](_0x215625)){var _0x44c190=_0x3a8e43[_0x84c0('0x59')][_0x215625];var _0x318a63={'id':_0x44c190['id'],'available':_0x44c190[_0x84c0('0x52')],'loggedIn':_0x44c190['loggedIn'],'name':_0x44c190[_0x84c0('0x54')],'paused':_0x44c190['paused'],'waiting':_0x44c190[_0x84c0('0x56')]};_0x4cb56d[_0x84c0('0x23')](_0x318a63);}}_0x27201c({'count':_0x4cb56d['length'],'rows':_0x4cb56d});});},'FaxQueues':function(){return new Promise(function(_0x5b75de){var _0x5ae3e4=[];for(var _0x416741 in _0x3a8e43[_0x84c0('0x5a')]){if(_0x3a8e43[_0x84c0('0x5a')][_0x84c0('0x4b')](_0x416741)){var _0x2abc79=_0x3a8e43[_0x84c0('0x5a')][_0x416741];var _0x1490c4={'id':_0x2abc79['id'],'available':_0x2abc79[_0x84c0('0x52')],'loggedIn':_0x2abc79[_0x84c0('0x53')],'name':_0x2abc79[_0x84c0('0x54')],'paused':_0x2abc79[_0x84c0('0x55')],'waiting':_0x2abc79['waiting']};_0x5ae3e4[_0x84c0('0x23')](_0x1490c4);}}_0x5b75de({'count':_0x5ae3e4[_0x84c0('0x1a')],'rows':_0x5ae3e4});});},'WhatsappQueues':function(){return new Promise(function(_0x1a059d){var _0x315b38=[];for(var _0x36dd9c in _0x3a8e43['whatsappQueues']){if(_0x3a8e43['whatsappQueues']['hasOwnProperty'](_0x36dd9c)){var _0x51e192=_0x3a8e43[_0x84c0('0x5b')][_0x36dd9c];var _0x36f42e={'id':_0x51e192['id'],'available':_0x51e192['available'],'loggedIn':_0x51e192[_0x84c0('0x53')],'name':_0x51e192[_0x84c0('0x54')],'paused':_0x51e192[_0x84c0('0x55')],'waiting':_0x51e192['waiting']};_0x315b38['push'](_0x36f42e);}}_0x1a059d({'count':_0x315b38['length'],'rows':_0x315b38});});},'ChatQueuesWaitingInteractions':function(){return new Promise(function(_0x4d1e8c){var _0x4c3a7e=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5c')]);_0x4d1e8c({'count':_0x4c3a7e[_0x84c0('0x1a')],'rows':_0x4c3a7e});});},'MailQueuesWaitingInteractions':function(){return new Promise(function(_0x16c67d){var _0x3b02bc=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5d')]);_0x16c67d({'count':_0x3b02bc['length'],'rows':_0x3b02bc});});},'OpenchannelQueuesWaitingInteractions':function(){return new Promise(function(_0x23151c){var _0xaa96e5=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5e')]);_0x23151c({'count':_0xaa96e5[_0x84c0('0x1a')],'rows':_0xaa96e5});});},'SmsQueuesWaitingInteractions':function(){return new Promise(function(_0xd6386c){var _0x143561=_[_0x84c0('0x4f')](_0x3a8e43[_0x84c0('0x5f')]);_0xd6386c({'count':_0x143561[_0x84c0('0x1a')],'rows':_0x143561});});},'FaxQueuesWaitingInteractions':function(){return new Promise(function(_0x213900){var _0x47fb03=_['values'](_0x3a8e43['faxQueuesWaitingInteractions']);_0x213900({'count':_0x47fb03[_0x84c0('0x1a')],'rows':_0x47fb03});});},'WhatsappQueuesWaitingInteractions':function(){return new Promise(function(_0x30e0b5){var _0x14f27b=_['values'](_0x3a8e43[_0x84c0('0x60')]);_0x30e0b5({'count':_0x14f27b[_0x84c0('0x1a')],'rows':_0x14f27b});});}};var _0x1d85f5=jayson[_0x84c0('0x61')](_0x25fb50)[_0x84c0('0x62')]();_0x1d85f5['on'](_0x84c0('0x3a'),function(_0x31d5ce){logger['error'](JSON['stringify'](_0x31d5ce));return _0x35f965(_0x31d5ce);});_0x1d85f5[_0x84c0('0x12')](0x232c,_0x84c0('0x63'),function(){console['log']('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x56085f(_0x84c0('0x64')+0x232c);});});};
\ No newline at end of file
index f8dad06..c5f8863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x743d=['condition','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','iftime\x20%s','indexOf','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','stack','util','bluebird','jayson/promise','lodash','../../../config/logger','routing','client','http','request','then','error','message','result','catch'];(function(_0x27ccb6,_0x103913){var _0x412043=function(_0x3c1624){while(--_0x3c1624){_0x27ccb6['push'](_0x27ccb6['shift']());}};_0x412043(++_0x103913);}(_0x743d,0x10a));var _0xd743=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x743d[_0x14add3];return _0x4a174f;};'use strict';var util=require(_0xd743('0x0'));var BPromise=require(_0xd743('0x1'));var jayson=require(_0xd743('0x2'));var _=require(_0xd743('0x3'));var logger=require(_0xd743('0x4'))(_0xd743('0x5'));var client=jayson[_0xd743('0x6')][_0xd743('0x7')]({'port':0x232a});function request(_0x3fd156,_0x277a51){return new BPromise(function(_0x976e4d,_0x49a68a){return client[_0xd743('0x8')](_0x3fd156,_0x277a51)[_0xd743('0x9')](function(_0x30d2f3){if(_0x30d2f3[_0xd743('0xa')]){return _0x49a68a(_0x30d2f3[_0xd743('0xa')][_0xd743('0xb')]);}else{return _0x976e4d(_0x30d2f3[_0xd743('0xc')]);}})[_0xd743('0xd')](function(_0x5865c0){return _0x49a68a(_0x5865c0);});});}exports[_0xd743('0xe')]=function(_0x1c79fd,_0x281daa,_0x211301){return function(_0x66375c){if(_0x211301['rules']&&!_0x211301['rules'][_0x1c79fd]){logger['info'](_0xd743('0xf'),_0x1c79fd);return _0x66375c[_0xd743('0x10')]();}var _0x5b1e9b=[];for(var _0xdcaea8=0x0;_0xdcaea8<_0x281daa[_0xd743('0x11')];_0xdcaea8+=0x1){_0x5b1e9b['push'](request(_0xd743('0x12'),{'command':util[_0xd743('0x13')](_0xd743('0x14'),_0x281daa[_0xdcaea8])})[_0xd743('0x9')](function(_0x48f28b){return _0x48f28b&&_0x48f28b[_0xd743('0xb')]&&_0x48f28b[_0xd743('0xb')][_0xd743('0x15')]('true')>=0x0?!![]:![];})[_0xd743('0xd')](function(_0x64b6e2){logger[_0xd743('0xa')]('[%s][INTERVAL]\x20%s',_0x1c79fd,_0x281daa[_0xdcaea8]);}));}BPromise[_0xd743('0x16')](_0x5b1e9b)[_0xd743('0x9')](function(_0x5232f1){var _0x5bfe99=_[_0xd743('0x17')](_0x5232f1);logger['info'](_0xd743('0x18'),_0x1c79fd,_0x281daa[_0xd743('0x19')]('\x20|\x20'),_0x5bfe99);_0x66375c['when'](_0x5bfe99);})[_0xd743('0xd')](function(_0x51d2c9){console['log'](_0x51d2c9);logger[_0xd743('0xa')]('[%s][INTERVAL]\x20%s\x20%s',_0x1c79fd,_0x281daa[_0xd743('0x19')](_0xd743('0x1a')),_0x51d2c9[_0xd743('0x1b')]);_0x66375c[_0xd743('0x10')]();});};};
\ No newline at end of file
+var _0xecc4=['indexOf','true','error','all','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','log','stack','stop','util','bluebird','jayson/promise','lodash','../../../config/logger','client','message','result','catch','condition','rules','info','length','push','Command','iftime\x20%s','then'];(function(_0x4af7f9,_0x362c9b){var _0x1ccfa9=function(_0x128289){while(--_0x128289){_0x4af7f9['push'](_0x4af7f9['shift']());}};_0x1ccfa9(++_0x362c9b);}(_0xecc4,0x1cb));var _0x4ecc=function(_0x1199b8,_0x147130){_0x1199b8=_0x1199b8-0x0;var _0x20ca30=_0xecc4[_0x1199b8];return _0x20ca30;};'use strict';var util=require(_0x4ecc('0x0'));var BPromise=require(_0x4ecc('0x1'));var jayson=require(_0x4ecc('0x2'));var _=require(_0x4ecc('0x3'));var logger=require(_0x4ecc('0x4'))('routing');var client=jayson[_0x4ecc('0x5')]['http']({'port':0x232a});function request(_0x423888,_0x5c8922){return new BPromise(function(_0x31727e,_0x5a0425){return client['request'](_0x423888,_0x5c8922)['then'](function(_0x1ee139){if(_0x1ee139['error']){return _0x5a0425(_0x1ee139['error'][_0x4ecc('0x6')]);}else{return _0x31727e(_0x1ee139[_0x4ecc('0x7')]);}})[_0x4ecc('0x8')](function(_0x18d6eb){return _0x5a0425(_0x18d6eb);});});}exports[_0x4ecc('0x9')]=function(_0x3bc183,_0x2cd0b0,_0x4e6f95){return function(_0x506888){if(_0x4e6f95[_0x4ecc('0xa')]&&!_0x4e6f95[_0x4ecc('0xa')][_0x3bc183]){logger[_0x4ecc('0xb')]('[%s][INTERVAL]\x20ROUTING\x20STOPPED',_0x3bc183);return _0x506888['stop']();}var _0x5a871f=[];for(var _0x449555=0x0;_0x449555<_0x2cd0b0[_0x4ecc('0xc')];_0x449555+=0x1){_0x5a871f[_0x4ecc('0xd')](request(_0x4ecc('0xe'),{'command':util['format'](_0x4ecc('0xf'),_0x2cd0b0[_0x449555])})[_0x4ecc('0x10')](function(_0x5802da){return _0x5802da&&_0x5802da[_0x4ecc('0x6')]&&_0x5802da[_0x4ecc('0x6')][_0x4ecc('0x11')](_0x4ecc('0x12'))>=0x0?!![]:![];})['catch'](function(_0x28ccab){logger[_0x4ecc('0x13')]('[%s][INTERVAL]\x20%s',_0x3bc183,_0x2cd0b0[_0x449555]);}));}BPromise[_0x4ecc('0x14')](_0x5a871f)[_0x4ecc('0x10')](function(_0x4fc69e){var _0x29e584=_[_0x4ecc('0x15')](_0x4fc69e);logger[_0x4ecc('0xb')](_0x4ecc('0x16'),_0x3bc183,_0x2cd0b0[_0x4ecc('0x17')](_0x4ecc('0x18')),_0x29e584);_0x506888['when'](_0x29e584);})[_0x4ecc('0x8')](function(_0x4b049a){console[_0x4ecc('0x19')](_0x4b049a);logger['error'](_0x4ecc('0x16'),_0x3bc183,_0x2cd0b0['join'](_0x4ecc('0x18')),_0x4b049a[_0x4ecc('0x1a')]);_0x506888[_0x4ecc('0x1b')]();});};};
\ No newline at end of file
index 8135346..2623c15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','diffTime','agent','[%s][agents][hangup]','lodash','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','queue','interface','connectedlinenum','lastevent','getVoiceQueueByName','then','type','agentcomplete','acw','agentacw','acwTimeout','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','called','connectedlinename','membername','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','reason','ringtime','talktime','push','forIn','includes','[%s][agents][queuecallerabandon]','abandoned','holdtime','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','agentconnectAt','answered_elsewhere','answeredelsewheredestinationuniqueid','[%s][agents][agentcomplete]','agentcompleteAt','complete','transfereruniqueid','[%s][agents][blindtransfer]','transfer','blind','transferexten','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transferuniqueid','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','secondtransfererlinkedid','transfertype','secondtransfererexten','transfertargetuniqueid','hangup','cause'];(function(_0xd7802a,_0x5bc757){var _0x3cb1c8=function(_0x212480){while(--_0x212480){_0xd7802a['push'](_0xd7802a['shift']());}};_0x3cb1c8(++_0x5bc757);}(_0x6cb4,0xff));var _0x46cb=function(_0x3374e1,_0x56a8d6){_0x3374e1=_0x3374e1-0x0;var _0x25c93e=_0x6cb4[_0x3374e1];return _0x25c93e;};'use strict';var _=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var utils=require(_0x46cb('0x2'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x3403fc,_0x375bef){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x5'),_0x3403fc[_0x46cb('0x6')],_0x3403fc['channel'],_0x3403fc[_0x46cb('0x7')],_0x3403fc['membername'],_0x3403fc[_0x46cb('0x8')],_0x3403fc['calleridnum'],_0x3403fc[_0x46cb('0x9')],_0x3403fc[_0x46cb('0xa')]));if(_0x3403fc[_0x46cb('0x7')]){utils[_0x46cb('0xb')](_0x3403fc[_0x46cb('0x7')])[_0x46cb('0xc')](function(_0x56258a){if(_0x56258a){_0x3403fc[_0x46cb('0xd')]=_0x56258a[_0x46cb('0xd')];_0x3403fc['agentacw']=_0x3403fc[_0x46cb('0xe')]?_0x56258a[_0x46cb('0xf')]:![];_0x3403fc['acwtime']=_0x3403fc[_0x46cb('0x10')]?_0x56258a[_0x46cb('0x11')]:0x0;}utils['request']('CreateVoiceAgentReport',_0x3403fc);});}else{utils['request'](_0x46cb('0x12'),_0x3403fc);}if(_0x375bef){delete transfers[_0x3403fc[_0x46cb('0x6')]];}else{delete agents[_0x3403fc[_0x46cb('0x13')]];}}exports[_0x46cb('0x14')]=function(_0x553440){try{utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x16'),_0x553440[_0x46cb('0x6')]),_0x553440);agents[_0x553440[_0x46cb('0x13')]]=_0x553440;agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0x17')]=utils[_0x46cb('0x18')]();agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0xa')]=_0x46cb('0x19');agents[_0x553440['destuniqueid']][_0x46cb('0x9')]=null;agents[_0x553440['destuniqueid']][_0x46cb('0x1a')]=null;utils['info'](util['format']('[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called',_0x553440[_0x46cb('0x6')],agents[_0x553440[_0x46cb('0x13')]][_0x46cb('0x1b')],_0x553440[_0x46cb('0x13')]));}catch(_0xbd488f){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x16'),_0x553440[_0x46cb('0x6')]),_0xbd488f);}};exports[_0x46cb('0x1d')]=function(_0x149483){try{if(!_[_0x46cb('0x1e')](agents[_0x149483[_0x46cb('0x13')]])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x1f'),_0x149483[_0x46cb('0x6')]),_0x149483);utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x20'),_0x149483[_0x46cb('0x6')],agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0x1b')],_0x149483[_0x46cb('0x13')]));agents[_0x149483[_0x46cb('0x13')]]['agentringnoanswer']=!![];agents[_0x149483['destuniqueid']][_0x46cb('0x21')]=utils[_0x46cb('0x18')]();agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0xa')]=_0x46cb('0x22');agents[_0x149483['destuniqueid']][_0x46cb('0x23')]='timeout';agents[_0x149483['destuniqueid']]['holdtime']=_0x149483[_0x46cb('0x24')]?parseInt(_0x149483[_0x46cb('0x24')])/0x3e8:0x0;agents[_0x149483[_0x46cb('0x13')]][_0x46cb('0x25')]=0x0;unanswered[_0x46cb('0x26')](_0x149483[_0x46cb('0x13')]);}}catch(_0x378dc7){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x1f'),_0x149483[_0x46cb('0x6')]),_0x378dc7);}};exports['queuecallerabandon']=function(_0x1ce88f){try{_[_0x46cb('0x27')](agents,function(_0x4c73bd,_0x49e0bc){if(_0x4c73bd[_0x46cb('0x6')]==_0x1ce88f['uniqueid']&&!_[_0x46cb('0x28')](unanswered,_0x4c73bd[_0x46cb('0x13')])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x29'),_0x1ce88f[_0x46cb('0x6')]),_0x1ce88f);utils['info'](util[_0x46cb('0x4')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x1ce88f[_0x46cb('0x6')],_0x4c73bd[_0x46cb('0x1b')],_0x4c73bd['destuniqueid']));_0x4c73bd[_0x46cb('0x1d')]=!![];_0x4c73bd[_0x46cb('0x21')]=utils[_0x46cb('0x18')]();_0x4c73bd[_0x46cb('0xa')]=_0x46cb('0x2a');_0x4c73bd['reason']=_0x46cb('0x2a');_0x4c73bd['holdtime']=_0x1ce88f[_0x46cb('0x2b')];_0x4c73bd[_0x46cb('0x25')]=0x0;writeDB(_0x4c73bd);}});}catch(_0x2630e0){utils['error'](util[_0x46cb('0x4')](_0x46cb('0x29'),_0x1ce88f['uniqueid']),_0x2630e0);}};exports[_0x46cb('0x2c')]=function(_0xf8be9){try{if(agents[_0xf8be9[_0x46cb('0x13')]]){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x2d'),_0xf8be9[_0x46cb('0x6')]),_0xf8be9);utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x2e'),_0xf8be9[_0x46cb('0x6')],agents[_0xf8be9['destuniqueid']]['membername'],_0xf8be9['destuniqueid']));agents[_0xf8be9[_0x46cb('0x13')]][_0x46cb('0x2f')]=utils[_0x46cb('0x18')]();agents[_0xf8be9[_0x46cb('0x13')]][_0x46cb('0x9')]=_0xf8be9[_0x46cb('0x9')];agents[_0xf8be9['destuniqueid']][_0x46cb('0x1a')]=_0xf8be9['connectedlinename'];agents[_0xf8be9['destuniqueid']][_0x46cb('0x2b')]=_0xf8be9['ringtime'];agents[_0xf8be9['destuniqueid']][_0x46cb('0xa')]='connect';_['forIn'](agents,function(_0x67bd14,_0x10017d){if(_0x67bd14[_0x46cb('0x13')]!=_0xf8be9[_0x46cb('0x13')]&&_0x67bd14[_0x46cb('0x6')]==_0xf8be9[_0x46cb('0x6')]){_0x67bd14[_0x46cb('0x25')]=0x0;_0x67bd14['holdtime']=_0xf8be9[_0x46cb('0x24')];_0x67bd14['agentringnoanswer']=!![];_0x67bd14[_0x46cb('0x21')]=utils['now']();_0x67bd14[_0x46cb('0xa')]=_0x46cb('0x30');_0x67bd14[_0x46cb('0x23')]='answered_elsewhere';_0x67bd14[_0x46cb('0x31')]=_0xf8be9[_0x46cb('0x13')];_0x67bd14['answeredelsewheremembername']=_0xf8be9[_0x46cb('0x1b')];writeDB(_0x67bd14);}});}}catch(_0x3d0b83){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x2d'),_0xf8be9['uniqueid']),_0x3d0b83);}};exports['agentcomplete']=function(_0x10bada){try{if(!_['isNil'](agents[_0x10bada[_0x46cb('0x13')]])){utils[_0x46cb('0x15')](util['format'](_0x46cb('0x32'),_0x10bada[_0x46cb('0x6')]),_0x10bada);utils[_0x46cb('0x3')](util['format']('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x10bada['uniqueid'],agents[_0x10bada['destuniqueid']][_0x46cb('0x1b')],_0x10bada[_0x46cb('0x13')]));agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0xe')]=!![];agents[_0x10bada[_0x46cb('0x13')]]['agentcompleteAt']=utils['now']();agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x25')]=utils['diffTime'](agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x33')],agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x2f')]);agents[_0x10bada[_0x46cb('0x13')]][_0x46cb('0x23')]=_0x10bada[_0x46cb('0x23')];agents[_0x10bada['destuniqueid']]['lastevent']=_0x46cb('0x34');writeDB(agents[_0x10bada['destuniqueid']]);}}catch(_0x2c4ecb){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')]('[%s][agents][agentcomplete]',_0x10bada[_0x46cb('0x6')]),_0x2c4ecb);}};exports['blindtransfer']=function(_0x5c02c9){try{if(!_[_0x46cb('0x1e')](agents[_0x5c02c9[_0x46cb('0x35')]])){utils[_0x46cb('0x15')](util[_0x46cb('0x4')](_0x46cb('0x36'),_0x5c02c9[_0x46cb('0x6')]),_0x5c02c9);utils[_0x46cb('0x3')](util['format']('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0x5c02c9[_0x46cb('0x6')],agents[_0x5c02c9[_0x46cb('0x35')]]['membername'],agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x6')]));agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x37')]=!![];agents[_0x5c02c9[_0x46cb('0x35')]]['transfertype']=_0x46cb('0x38');agents[_0x5c02c9[_0x46cb('0x35')]][_0x46cb('0x39')]=_0x5c02c9['extension'];agents[_0x5c02c9[_0x46cb('0x35')]]['transferuniqueid']=agents[_0x5c02c9['transfereruniqueid']][_0x46cb('0x6')];}}catch(_0x2cfe6f){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x36'),_0x5c02c9['uniqueid']),_0x2cfe6f);}};exports[_0x46cb('0x3a')]=function(_0xd51a75){try{utils['debug'](util['format'](_0x46cb('0x3b'),_0xd51a75[_0x46cb('0x3c')]),_0xd51a75);if(_0xd51a75[_0x46cb('0x3c')]==_0xd51a75['origtransfererlinkedid']){if(!_[_0x46cb('0x1e')](agents[_0xd51a75[_0x46cb('0x3d')]])){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x3e'),_0xd51a75[_0x46cb('0x3c')],agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x1b')]));agents[_0xd51a75[_0x46cb('0x3d')]]['transfer']=!![];agents[_0xd51a75[_0x46cb('0x3d')]]['transfertype']=_0x46cb('0x3f');agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x39')]=_0xd51a75[_0x46cb('0x40')];agents[_0xd51a75['secondtransfereruniqueid']][_0x46cb('0x41')]=_0xd51a75[_0x46cb('0x3c')];}if(_0xd51a75[_0x46cb('0x42')]&&agents[_0xd51a75[_0x46cb('0x42')]]){agents[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x43')]=0x1;transfers[_0xd51a75[_0x46cb('0x42')]]=_[_0x46cb('0x44')](agents[_0xd51a75['transfereeuniqueid']]);transfers[_0xd51a75['transfereeuniqueid']]['calleridnum']=agents[_0xd51a75['secondtransfereruniqueid']][_0x46cb('0x45')];transfers[_0xd51a75[_0x46cb('0x42')]]['calleridname']=agents[_0xd51a75[_0x46cb('0x3d')]][_0x46cb('0x46')];transfers[_0xd51a75[_0x46cb('0x42')]]['agentcalledAt']=utils['now']();transfers[_0xd51a75[_0x46cb('0x42')]]['agentconnectAt']=utils[_0x46cb('0x18')]();transfers[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x2b')]=0x0;transfers[_0xd51a75[_0x46cb('0x42')]][_0x46cb('0x43')]=0x2;}}else if(_0xd51a75[_0x46cb('0x3d')]==_0xd51a75[_0x46cb('0x47')]){if(!_[_0x46cb('0x1e')](agents[_0xd51a75[_0x46cb('0x3c')]])){utils[_0x46cb('0x3')](util[_0x46cb('0x4')](_0x46cb('0x3e'),_0xd51a75[_0x46cb('0x3c')],agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x1b')]));agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x37')]=!![];agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x48')]=_0x46cb('0x3f');agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x39')]=_0xd51a75[_0x46cb('0x49')];agents[_0xd51a75['origtransfereruniqueid']][_0x46cb('0x41')]=_0xd51a75[_0x46cb('0x3d')];}if(_0xd51a75[_0x46cb('0x4a')]&&agents[_0xd51a75[_0x46cb('0x4a')]]){agents[_0xd51a75['transfertargetuniqueid']][_0x46cb('0x43')]=0x1;transfers[_0xd51a75[_0x46cb('0x4a')]]=_[_0x46cb('0x44')](agents[_0xd51a75[_0x46cb('0x4a')]]);transfers[_0xd51a75[_0x46cb('0x4a')]]['calleridnum']=agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x45')];transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x46')]=agents[_0xd51a75[_0x46cb('0x3c')]][_0x46cb('0x46')];transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x17')]=utils['now']();transfers[_0xd51a75['transfertargetuniqueid']]['agentconnectAt']=utils[_0x46cb('0x18')]();transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x2b')]=0x0;transfers[_0xd51a75[_0x46cb('0x4a')]][_0x46cb('0x43')]=0x2;}}}catch(_0x1e3dca){utils[_0x46cb('0x1c')](util[_0x46cb('0x4')](_0x46cb('0x3b'),_0xd51a75[_0x46cb('0x3c')]),_0x1e3dca);}};exports[_0x46cb('0x4b')]=function(_0x199dc0){try{utils[_0x46cb('0x15')](util[_0x46cb('0x4')]('[%s][agents][hangup]',_0x199dc0[_0x46cb('0x6')]),_0x199dc0);if(agents[_0x199dc0['uniqueid']]&&agents[_0x199dc0[_0x46cb('0x6')]]['reason']===_0x46cb('0x22')){if(_0x199dc0[_0x46cb('0x4c')]==='21'){agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')]='rejected';agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]='rejected';}utils['info'](util[_0x46cb('0x4')](_0x46cb('0x4d'),_0x199dc0[_0x46cb('0x6')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x1b')],agents[_0x199dc0['uniqueid']]['reason'],agents[_0x199dc0['uniqueid']][_0x46cb('0xa')]));writeDB(agents[_0x199dc0[_0x46cb('0x6')]]);var _0x30b303=unanswered[_0x46cb('0x4e')](_0x199dc0[_0x46cb('0x6')]);if(_0x30b303>-0x1){unanswered[_0x46cb('0x4f')](_0x30b303,0x1);}}if(transfers[_0x199dc0[_0x46cb('0x6')]]){transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xe')]=!![];transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x33')]=utils['now']();transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x25')]=utils[_0x46cb('0x50')](transfers[_0x199dc0[_0x46cb('0x6')]]['agentcompleteAt'],transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x2f')]);transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')]='agent';transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]=_0x46cb('0x34');utils[_0x46cb('0x3')](util['format']('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x199dc0['uniqueid'],transfers[_0x199dc0[_0x46cb('0x6')]]['membername'],transfers[_0x199dc0[_0x46cb('0x6')]]['reason'],transfers[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]));writeDB(transfers[_0x199dc0[_0x46cb('0x6')]],!![]);}if(agents[_0x199dc0[_0x46cb('0x6')]]&&agents[_0x199dc0['uniqueid']][_0x46cb('0x2f')]){agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xe')]=!![];agents[_0x199dc0[_0x46cb('0x6')]]['agentcompleteAt']=utils['now']();agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x25')]=utils[_0x46cb('0x50')](agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x33')],agents[_0x199dc0[_0x46cb('0x6')]]['agentconnectAt']);agents[_0x199dc0['uniqueid']][_0x46cb('0x23')]=agents[_0x199dc0[_0x46cb('0x6')]]['transfer']?_0x46cb('0x37'):_0x46cb('0x51');agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]=_0x46cb('0x34');utils[_0x46cb('0x3')](util[_0x46cb('0x4')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x199dc0[_0x46cb('0x6')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x1b')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0x23')],agents[_0x199dc0[_0x46cb('0x6')]][_0x46cb('0xa')]));writeDB(agents[_0x199dc0[_0x46cb('0x6')]]);}}catch(_0x5567cc){utils['error'](util[_0x46cb('0x4')](_0x46cb('0x52'),_0x199dc0[_0x46cb('0x6')]),_0x5567cc);}};
\ No newline at end of file
+var _0x878f=['abandoned','agentconnect','[%s][agents][agentconnect]','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connect','reason','answered_elsewhere','answeredelsewheremembername','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','diffTime','agentconnectAt','complete','transfereruniqueid','transfertype','blind','transferexten','extension','transferuniqueid','[%s][agents][blindtransfer]','attendedtransfer','origtransfereruniqueid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','transfer','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','calleridnum','calleridname','agentcalledAt','secondtransfererexten','transfertargetuniqueid','[%s][agents][attendedtransfer]','[%s][agents][hangup]','cause','rejected','splice','agent','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','util','./utils','info','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','queue','membername','connectedlinenum','lastevent','then','type','agentacw','agentcomplete','acwtime','request','CreateVoiceAgentReport','agentcalled','debug','[%s][agents][agentcalled]','destuniqueid','now','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','agentringnoanswer','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswerAt','timeout','holdtime','ringtime','talktime','push','includes','[%s][agents][queuecallerabandon]'];(function(_0xb0fe92,_0x147e42){var _0x41787f=function(_0x42ae35){while(--_0x42ae35){_0xb0fe92['push'](_0xb0fe92['shift']());}};_0x41787f(++_0x147e42);}(_0x878f,0x173));var _0xf878=function(_0x534312,_0x318851){_0x534312=_0x534312-0x0;var _0xd645e9=_0x878f[_0x534312];return _0xd645e9;};'use strict';var _=require('lodash');var util=require(_0xf878('0x0'));var utils=require(_0xf878('0x1'));var agents={};var transfers={};var unanswered=[];function writeDB(_0x2e1d23,_0x12df2b){utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x4'),_0x2e1d23[_0xf878('0x5')],_0x2e1d23[_0xf878('0x6')],_0x2e1d23[_0xf878('0x7')],_0x2e1d23[_0xf878('0x8')],_0x2e1d23['interface'],_0x2e1d23['calleridnum'],_0x2e1d23[_0xf878('0x9')],_0x2e1d23[_0xf878('0xa')]));if(_0x2e1d23['queue']){utils['getVoiceQueueByName'](_0x2e1d23['queue'])[_0xf878('0xb')](function(_0x5f2693){if(_0x5f2693){_0x2e1d23['type']=_0x5f2693[_0xf878('0xc')];_0x2e1d23[_0xf878('0xd')]=_0x2e1d23[_0xf878('0xe')]?_0x5f2693['acw']:![];_0x2e1d23[_0xf878('0xf')]=_0x2e1d23[_0xf878('0xd')]?_0x5f2693['acwTimeout']:0x0;}utils[_0xf878('0x10')]('CreateVoiceAgentReport',_0x2e1d23);});}else{utils[_0xf878('0x10')](_0xf878('0x11'),_0x2e1d23);}if(_0x12df2b){delete transfers[_0x2e1d23[_0xf878('0x5')]];}else{delete agents[_0x2e1d23['destuniqueid']];}}exports[_0xf878('0x12')]=function(_0x38eddf){try{utils[_0xf878('0x13')](util['format'](_0xf878('0x14'),_0x38eddf[_0xf878('0x5')]),_0x38eddf);agents[_0x38eddf[_0xf878('0x15')]]=_0x38eddf;agents[_0x38eddf['destuniqueid']]['agentcalledAt']=utils[_0xf878('0x16')]();agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x17');agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x9')]=null;agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x18')]=null;utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x19'),_0x38eddf['uniqueid'],agents[_0x38eddf[_0xf878('0x15')]][_0xf878('0x8')],_0x38eddf[_0xf878('0x15')]));}catch(_0x622ea8){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x14'),_0x38eddf['uniqueid']),_0x622ea8);}};exports[_0xf878('0x1b')]=function(_0x140866){try{if(!_[_0xf878('0x1c')](agents[_0x140866['destuniqueid']])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x140866);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x1e'),_0x140866[_0xf878('0x5')],agents[_0x140866[_0xf878('0x15')]][_0xf878('0x8')],_0x140866[_0xf878('0x15')]));agents[_0x140866['destuniqueid']][_0xf878('0x1b')]=!![];agents[_0x140866['destuniqueid']][_0xf878('0x1f')]=utils[_0xf878('0x16')]();agents[_0x140866[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x20');agents[_0x140866['destuniqueid']]['reason']='timeout';agents[_0x140866[_0xf878('0x15')]][_0xf878('0x21')]=_0x140866[_0xf878('0x22')]?parseInt(_0x140866['ringtime'])/0x3e8:0x0;agents[_0x140866[_0xf878('0x15')]][_0xf878('0x23')]=0x0;unanswered[_0xf878('0x24')](_0x140866[_0xf878('0x15')]);}}catch(_0x41dd55){utils['error'](util['format'](_0xf878('0x1d'),_0x140866[_0xf878('0x5')]),_0x41dd55);}};exports['queuecallerabandon']=function(_0x31e2e1){try{_['forIn'](agents,function(_0x969ee3,_0x51afaf){if(_0x969ee3[_0xf878('0x5')]==_0x31e2e1['uniqueid']&&!_[_0xf878('0x25')](unanswered,_0x969ee3['destuniqueid'])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x31e2e1);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x31e2e1[_0xf878('0x5')],_0x969ee3[_0xf878('0x8')],_0x969ee3[_0xf878('0x15')]));_0x969ee3[_0xf878('0x1b')]=!![];_0x969ee3[_0xf878('0x1f')]=utils['now']();_0x969ee3[_0xf878('0xa')]=_0xf878('0x27');_0x969ee3['reason']=_0xf878('0x27');_0x969ee3[_0xf878('0x21')]=_0x31e2e1[_0xf878('0x21')];_0x969ee3[_0xf878('0x23')]=0x0;writeDB(_0x969ee3);}});}catch(_0x1acfb6){utils['error'](util[_0xf878('0x3')](_0xf878('0x26'),_0x31e2e1[_0xf878('0x5')]),_0x1acfb6);}};exports[_0xf878('0x28')]=function(_0x579c91){try{if(agents[_0x579c91[_0xf878('0x15')]]){utils['debug'](util['format'](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x579c91);utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x2a'),_0x579c91['uniqueid'],agents[_0x579c91[_0xf878('0x15')]]['membername'],_0x579c91[_0xf878('0x15')]));agents[_0x579c91[_0xf878('0x15')]]['agentconnectAt']=utils[_0xf878('0x16')]();agents[_0x579c91[_0xf878('0x15')]]['connectedlinenum']=_0x579c91[_0xf878('0x9')];agents[_0x579c91[_0xf878('0x15')]]['connectedlinename']=_0x579c91[_0xf878('0x18')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];agents[_0x579c91[_0xf878('0x15')]][_0xf878('0xa')]=_0xf878('0x2b');_['forIn'](agents,function(_0x1179fb,_0x14340d){if(_0x1179fb['destuniqueid']!=_0x579c91[_0xf878('0x15')]&&_0x1179fb['uniqueid']==_0x579c91['uniqueid']){_0x1179fb[_0xf878('0x23')]=0x0;_0x1179fb[_0xf878('0x21')]=_0x579c91[_0xf878('0x22')];_0x1179fb[_0xf878('0x1b')]=!![];_0x1179fb[_0xf878('0x1f')]=utils['now']();_0x1179fb[_0xf878('0xa')]='answered_elsewhere';_0x1179fb[_0xf878('0x2c')]=_0xf878('0x2d');_0x1179fb['answeredelsewheredestinationuniqueid']=_0x579c91['destuniqueid'];_0x1179fb[_0xf878('0x2e')]=_0x579c91[_0xf878('0x8')];writeDB(_0x1179fb);}});}}catch(_0x13fcd3){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x29'),_0x579c91[_0xf878('0x5')]),_0x13fcd3);}};exports[_0xf878('0xe')]=function(_0x3b1c67){try{if(!_['isNil'](agents[_0x3b1c67[_0xf878('0x15')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x3b1c67);utils[_0xf878('0x2')](util['format'](_0xf878('0x30'),_0x3b1c67[_0xf878('0x5')],agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x8')],_0x3b1c67[_0xf878('0x15')]));agents[_0x3b1c67['destuniqueid']][_0xf878('0xe')]=!![];agents[_0x3b1c67[_0xf878('0x15')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x3b1c67['destuniqueid']][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x3b1c67[_0xf878('0x15')]]['agentcompleteAt'],agents[_0x3b1c67['destuniqueid']][_0xf878('0x33')]);agents[_0x3b1c67['destuniqueid']]['reason']=_0x3b1c67['reason'];agents[_0x3b1c67[_0xf878('0x15')]]['lastevent']=_0xf878('0x34');writeDB(agents[_0x3b1c67[_0xf878('0x15')]]);}}catch(_0x1dcb19){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x2f'),_0x3b1c67[_0xf878('0x5')]),_0x1dcb19);}};exports['blindtransfer']=function(_0xb0bf4c){try{if(!_[_0xf878('0x1c')](agents[_0xb0bf4c[_0xf878('0x35')]])){utils[_0xf878('0x13')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]',_0xb0bf4c['uniqueid']),_0xb0bf4c);utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s',_0xb0bf4c[_0xf878('0x5')],agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x8')],agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x5')]));agents[_0xb0bf4c[_0xf878('0x35')]]['transfer']=!![];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x36')]=_0xf878('0x37');agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x38')]=_0xb0bf4c[_0xf878('0x39')];agents[_0xb0bf4c[_0xf878('0x35')]][_0xf878('0x3a')]=agents[_0xb0bf4c['transfereruniqueid']][_0xf878('0x5')];}}catch(_0x181f09){utils[_0xf878('0x1a')](util['format'](_0xf878('0x3b'),_0xb0bf4c[_0xf878('0x5')]),_0x181f09);}};exports[_0xf878('0x3c')]=function(_0x150f60){try{utils['debug'](util['format']('[%s][agents][attendedtransfer]',_0x150f60[_0xf878('0x3d')]),_0x150f60);if(_0x150f60['origtransfereruniqueid']==_0x150f60['origtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60[_0xf878('0x3e')]])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60[_0xf878('0x3e')]]['membername']));agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x40')]=!![];agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3e')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x42')];agents[_0x150f60[_0xf878('0x3e')]]['transferuniqueid']=_0x150f60[_0xf878('0x3d')];}if(_0x150f60[_0xf878('0x43')]&&agents[_0x150f60['transfereeuniqueid']]){agents[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x43')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x43')]]);transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x46')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x47')]=agents[_0x150f60['secondtransfereruniqueid']][_0xf878('0x47')];transfers[_0x150f60['transfereeuniqueid']][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x33')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x43')]][_0xf878('0x44')]=0x2;}}else if(_0x150f60[_0xf878('0x3e')]==_0x150f60['secondtransfererlinkedid']){if(!_['isNil'](agents[_0x150f60['origtransfereruniqueid']])){utils[_0xf878('0x2')](util['format'](_0xf878('0x3f'),_0x150f60[_0xf878('0x3d')],agents[_0x150f60['origtransfereruniqueid']]['membername']));agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x40')]=!![];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x36')]=_0xf878('0x41');agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x38')]=_0x150f60[_0xf878('0x49')];agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x3a')]=_0x150f60[_0xf878('0x3e')];}if(_0x150f60[_0xf878('0x4a')]&&agents[_0x150f60[_0xf878('0x4a')]]){agents[_0x150f60[_0xf878('0x4a')]][_0xf878('0x44')]=0x1;transfers[_0x150f60[_0xf878('0x4a')]]=_[_0xf878('0x45')](agents[_0x150f60[_0xf878('0x4a')]]);transfers[_0x150f60['transfertargetuniqueid']][_0xf878('0x46')]=agents[_0x150f60['origtransfereruniqueid']][_0xf878('0x46')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x47')]=agents[_0x150f60[_0xf878('0x3d')]][_0xf878('0x47')];transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x48')]=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]]['agentconnectAt']=utils[_0xf878('0x16')]();transfers[_0x150f60[_0xf878('0x4a')]][_0xf878('0x21')]=0x0;transfers[_0x150f60[_0xf878('0x4a')]]['agententerreason']=0x2;}}}catch(_0xa73ee){utils[_0xf878('0x1a')](util[_0xf878('0x3')](_0xf878('0x4b'),_0x150f60[_0xf878('0x3d')]),_0xa73ee);}};exports['hangup']=function(_0x5860f6){try{utils[_0xf878('0x13')](util[_0xf878('0x3')](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x5860f6);if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]===_0xf878('0x20')){if(_0x5860f6[_0xf878('0x4d')]==='21'){agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=_0xf878('0x4e');agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x4e');}utils[_0xf878('0x2')](util[_0xf878('0x3')]('[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s',_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6[_0xf878('0x5')]]);var _0x443e69=unanswered['indexOf'](_0x5860f6[_0xf878('0x5')]);if(_0x443e69>-0x1){unanswered[_0xf878('0x4f')](_0x443e69,0x1);}}if(transfers[_0x5860f6[_0xf878('0x5')]]){transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xe')]=!![];transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils['now']();transfers[_0x5860f6['uniqueid']][_0xf878('0x23')]=utils['diffTime'](transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x33')]);transfers[_0x5860f6['uniqueid']][_0xf878('0x2c')]=_0xf878('0x50');transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]='complete';utils[_0xf878('0x2')](util['format'](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],transfers[_0x5860f6[_0xf878('0x5')]]['reason'],transfers[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(transfers[_0x5860f6[_0xf878('0x5')]],!![]);}if(agents[_0x5860f6[_0xf878('0x5')]]&&agents[_0x5860f6['uniqueid']][_0xf878('0x33')]){agents[_0x5860f6['uniqueid']][_0xf878('0xe')]=!![];agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x31')]=utils[_0xf878('0x16')]();agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x23')]=utils[_0xf878('0x32')](agents[_0x5860f6[_0xf878('0x5')]]['agentcompleteAt'],agents[_0x5860f6['uniqueid']]['agentconnectAt']);agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x2c')]=agents[_0x5860f6['uniqueid']]['transfer']?_0xf878('0x40'):'agent';agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]=_0xf878('0x34');utils[_0xf878('0x2')](util[_0xf878('0x3')](_0xf878('0x51'),_0x5860f6[_0xf878('0x5')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0x8')],agents[_0x5860f6['uniqueid']][_0xf878('0x2c')],agents[_0x5860f6[_0xf878('0x5')]][_0xf878('0xa')]));writeDB(agents[_0x5860f6['uniqueid']]);}}catch(_0x15f893){utils[_0xf878('0x1a')](util['format'](_0xf878('0x4c'),_0x5860f6[_0xf878('0x5')]),_0x15f893);}};
\ No newline at end of file
index 0c43a60..cb9d8aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x68fd=['[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-callerid-preview','xmd-queue','xmcs-queue','lastapplication','Queue','lastdata','xmd-contactid','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','outboundrouteid','routeid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','sipcallid','newexten','application','appdata','toLowerCase','startsWith','cdr','split','substring','lastIndexOf','includes','noop','execif','set','gotoif','[%s][calls][newexten]','lodash','./utils','./transfers.controller','FAILED','NO\x20ANSWER','ANSWERED','BUSY','blinds','uniqueid','info','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','accountcode','then','UserId','request','CreateVoiceCallReport','recording','debug','format','[%s][calls][newchannel]','linkedid','[%s][calls][newchannel]\x20context:%s\x20exten:%s','context','exten','DOCUMENTATION','newstate','[%s][calls][newstate]','isNil','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','error','hangup','[%s][calls][hangup]','callerid','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','now','duration','diffTime','starttime','billableseconds','attendedtransfer','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','secondtransfererchannel','_attended','transfertargetchannel','origtransfererchannel','userfield','[%s][calls][attendedtransfer]','musiconholdstart','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime'];(function(_0x21d2c6,_0x29b4f0){var _0xabb83e=function(_0x35f8b0){while(--_0x35f8b0){_0x21d2c6['push'](_0x21d2c6['shift']());}};_0xabb83e(++_0x29b4f0);}(_0x68fd,0x1e9));var _0xd68f=function(_0x113955,_0x5069c7){_0x113955=_0x113955-0x0;var _0x17c934=_0x68fd[_0x113955];return _0x17c934;};'use strict';var _=require(_0xd68f('0x0'));var util=require('util');var utils=require(_0xd68f('0x1'));var transfers=require(_0xd68f('0x2'));var dispositions=['NO\x20ANSWER',_0xd68f('0x3'),_0xd68f('0x3'),_0xd68f('0x4'),_0xd68f('0x4'),_0xd68f('0x4'),_0xd68f('0x5'),_0xd68f('0x6'),_0xd68f('0x3'),_0xd68f('0x3'),'FAILED'];var channels={};function writeDB(_0xb3cb35){var _0x182353;if(transfers[_0xd68f('0x7')][_0xb3cb35[_0xd68f('0x8')]]){_0x182353=_0xb3cb35[_0xd68f('0x8')];_0xb3cb35[_0xd68f('0x8')]=transfers[_0xd68f('0x7')][_0xb3cb35['uniqueid']]['transfereeuniqueid'];}utils[_0xd68f('0x9')](util['format'](_0xd68f('0xa'),_0xb3cb35[_0xd68f('0x8')],_0xb3cb35[_0xd68f('0xb')],_0xb3cb35[_0xd68f('0xc')],_0xb3cb35[_0xd68f('0xd')],_0xb3cb35[_0xd68f('0xe')],_0xb3cb35[_0xd68f('0xf')],_0xb3cb35['connectedlinenum'],_0xb3cb35['lastevent']));if(_0xb3cb35['accountcode']){utils['getUserByInternal'](_0xb3cb35[_0xd68f('0x10')])[_0xd68f('0x11')](function(_0x48f357){if(_0x48f357){_0xb3cb35[_0xd68f('0x12')]=_0x48f357['id'];}utils[_0xd68f('0x13')](_0xd68f('0x14'),_0xb3cb35);});}else{utils[_0xd68f('0x13')](_0xd68f('0x14'),_0xb3cb35);}if(channels[_0xb3cb35[_0xd68f('0x8')]]){delete channels[_0xb3cb35[_0xd68f('0x8')]];}else if(_0x182353&&channels[_0x182353]){if(!transfers['blinds'][_0x182353][_0xd68f('0x15')])delete transfers['blinds'][_0x182353];delete channels[_0x182353];}}exports['newchannel']=function(_0x8078d4){try{utils[_0xd68f('0x16')](util[_0xd68f('0x17')](_0xd68f('0x18'),_0x8078d4[_0xd68f('0x8')]),_0x8078d4);if(_0x8078d4[_0xd68f('0x8')]==_0x8078d4[_0xd68f('0x19')]&&_0x8078d4['channel']!='OutgoingSpoolFailed'){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x1a'),_0x8078d4[_0xd68f('0x8')],_0x8078d4[_0xd68f('0x1b')],_0x8078d4['exten']));channels[_0x8078d4[_0xd68f('0x8')]]={'uniqueid':_0x8078d4[_0xd68f('0x8')],'accountcode':_0x8078d4[_0xd68f('0x10')],'source':_0x8078d4['calleridnum'],'destination':_0x8078d4[_0xd68f('0x1c')],'destinationcontext':_0x8078d4[_0xd68f('0x1b')],'channel':_0x8078d4[_0xd68f('0xb')],'starttime':utils['now'](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':'NO\x20ANSWER','amaflags':_0xd68f('0x1d')};}}catch(_0x5a3683){utils['error'](util[_0xd68f('0x17')](_0xd68f('0x18'),_0x8078d4[_0xd68f('0x8')]),_0x5a3683);}};exports[_0xd68f('0x1e')]=function(_0x4595bf){try{utils[_0xd68f('0x16')](util[_0xd68f('0x17')](_0xd68f('0x1f'),_0x4595bf[_0xd68f('0x8')]),_0x4595bf);if(!_[_0xd68f('0x20')](channels[_0x4595bf[_0xd68f('0x8')]])&&_0x4595bf[_0xd68f('0x21')]==0x6){utils[_0xd68f('0x9')](util['format'](_0xd68f('0x22'),_0x4595bf[_0xd68f('0x8')],_0x4595bf['context'],_0x4595bf[_0xd68f('0xb')]));if(_['isNil'](channels[_0x4595bf['uniqueid']][_0xd68f('0x23')])){channels[_0x4595bf[_0xd68f('0x8')]][_0xd68f('0x23')]=utils['now']();}}else if(!_[_0xd68f('0x20')](channels[_0x4595bf['linkedid']])&&_0x4595bf[_0xd68f('0x21')]==0x6&&_0x4595bf['context']!=_0xd68f('0x24')){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x25'),_0x4595bf[_0xd68f('0x8')],_0x4595bf['linkedid'],_0x4595bf[_0xd68f('0x1b')],_0x4595bf['channel']));channels[_0x4595bf[_0xd68f('0x19')]]['accountcode']=_0x4595bf[_0xd68f('0x10')];channels[_0x4595bf[_0xd68f('0x19')]][_0xd68f('0x26')]=_0x4595bf[_0xd68f('0xb')];if(_['isNil'](channels[_0x4595bf[_0xd68f('0x19')]][_0xd68f('0x27')])){channels[_0x4595bf[_0xd68f('0x19')]][_0xd68f('0x27')]=utils['now']();}channels[_0x4595bf[_0xd68f('0x19')]][_0xd68f('0x28')]=dispositions[_[_0xd68f('0x29')](_0x4595bf[_0xd68f('0x21')])]||_0xd68f('0x5');}}catch(_0x2ac01b){utils[_0xd68f('0x2a')](util[_0xd68f('0x17')]('[%s][calls][newstate]',_0x4595bf[_0xd68f('0x8')]),_0x2ac01b);}};exports[_0xd68f('0x2b')]=function(_0x43e7e4){try{if(!_[_0xd68f('0x20')](channels[_0x43e7e4[_0xd68f('0x8')]])){utils[_0xd68f('0x16')](util[_0xd68f('0x17')](_0xd68f('0x2c'),_0x43e7e4['uniqueid']),_0x43e7e4);if(_[_0xd68f('0x20')](channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x2d')])){channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x2d')]=_0x43e7e4['calleridname']+'\x20<'+_0x43e7e4[_0xd68f('0xf')]+'>';}utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x2e'),_0x43e7e4[_0xd68f('0x8')],channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x2d')],_0x43e7e4[_0xd68f('0x2f')]));channels[_0x43e7e4['uniqueid']][_0xd68f('0x30')]=utils[_0xd68f('0x31')]();channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x32')]=utils[_0xd68f('0x33')](channels[_0x43e7e4[_0xd68f('0x8')]]['endtime'],channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x34')]);channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x35')]=channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x27')]?utils['diffTime'](channels[_0x43e7e4[_0xd68f('0x8')]][_0xd68f('0x30')],channels[_0x43e7e4['uniqueid']][_0xd68f('0x27')]):0x0;writeDB(channels[_0x43e7e4['uniqueid']]);}}catch(_0x5255f7){utils[_0xd68f('0x2a')](util[_0xd68f('0x17')]('[%s][calls][hangup]',_0x43e7e4[_0xd68f('0x8')]),_0x5255f7);}};exports[_0xd68f('0x36')]=function(_0x49a024){try{if(!_[_0xd68f('0x20')](channels[_0x49a024[_0xd68f('0x37')]])){utils[_0xd68f('0x16')](util[_0xd68f('0x17')]('[%s][calls][attendedtransfer]',_0x49a024['origtransfereruniqueid']),_0x49a024);if(channels[_0x49a024['localtwolinkedid']][_0xd68f('0xb')]==_0x49a024[_0xd68f('0x38')]){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x39'),_0x49a024[_0xd68f('0x3a')],_0x49a024[_0xd68f('0x37')],_0x49a024[_0xd68f('0x3b')]));channels[_0x49a024[_0xd68f('0x37')]][_0xd68f('0x26')]=_0x49a024[_0xd68f('0x3b')];channels[_0x49a024['localtwolinkedid']]['userfield']=_0xd68f('0x3c');}else if(channels[_0x49a024[_0xd68f('0x37')]][_0xd68f('0xb')]=_0x49a024[_0xd68f('0x3d')]){utils[_0xd68f('0x9')](util[_0xd68f('0x17')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x49a024[_0xd68f('0x3a')],_0x49a024[_0xd68f('0x37')],_0x49a024[_0xd68f('0x3e')]));channels[_0x49a024[_0xd68f('0x37')]][_0xd68f('0x26')]=_0x49a024[_0xd68f('0x3e')];channels[_0x49a024['localtwolinkedid']][_0xd68f('0x3f')]=_0xd68f('0x3c');}}}catch(_0x18d097){utils[_0xd68f('0x2a')](util[_0xd68f('0x17')](_0xd68f('0x40'),_0x49a024[_0xd68f('0x3a')]),_0x18d097);}};exports[_0xd68f('0x41')]=function(_0x3e98f7){try{if(!_['isNil'](channels[_0x3e98f7[_0xd68f('0x8')]])){utils[_0xd68f('0x16')](util[_0xd68f('0x17')]('[%s][calls][musiconholdstart]',_0x3e98f7[_0xd68f('0x8')]),_0x3e98f7);channels[_0x3e98f7[_0xd68f('0x8')]][_0xd68f('0x42')]=utils[_0xd68f('0x31')]();utils[_0xd68f('0x9')](util['format']('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x3e98f7['uniqueid'],channels[_0x3e98f7[_0xd68f('0x8')]][_0xd68f('0x42')]));}}catch(_0x4e4cee){utils[_0xd68f('0x2a')](util[_0xd68f('0x17')](_0xd68f('0x43'),_0x3e98f7[_0xd68f('0x8')]),_0x4e4cee);}};exports[_0xd68f('0x44')]=function(_0x377a8e){try{if(!_[_0xd68f('0x20')](channels[_0x377a8e[_0xd68f('0x8')]])){utils[_0xd68f('0x16')](util['format'](_0xd68f('0x45'),_0x377a8e[_0xd68f('0x8')]),_0x377a8e);if(!_[_0xd68f('0x20')](channels[_0x377a8e[_0xd68f('0x8')]][_0xd68f('0x42')])){channels[_0x377a8e[_0xd68f('0x8')]][_0xd68f('0x46')]+=utils[_0xd68f('0x33')](utils[_0xd68f('0x31')](),channels[_0x377a8e[_0xd68f('0x8')]][_0xd68f('0x42')]);utils['info'](util['format'](_0xd68f('0x47'),_0x377a8e[_0xd68f('0x8')],channels[_0x377a8e[_0xd68f('0x8')]]['mohtime']));delete channels[_0x377a8e[_0xd68f('0x8')]]['musiconholdstartAt'];}}}catch(_0x2fc840){utils[_0xd68f('0x2a')](util[_0xd68f('0x17')](_0xd68f('0x45'),_0x377a8e[_0xd68f('0x8')]),_0x2fc840);}};exports[_0xd68f('0x48')]=function(_0x30dace){try{if(!_[_0xd68f('0x20')](channels[_0x30dace['uniqueid']])){utils[_0xd68f('0x16')](util[_0xd68f('0x17')](_0xd68f('0x49'),_0x30dace[_0xd68f('0x8')]),_0x30dace);if(!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x4b')])){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x4c'),_0x30dace[_0xd68f('0x8')],_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace['uniqueid']]['source']=_0x30dace['value'];}if(!_[_0xd68f('0x20')](_0x30dace['variable'][_0xd68f('0x4e')])){utils[_0xd68f('0x9')](util['format'](_0xd68f('0x4f'),_0x30dace['uniqueid'],_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x50')]=_0x30dace['value'];channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x2d')]='\x22'+_0x30dace['value']+'\x22\x20<'+_0x30dace['value']+'>';}if(!_[_0xd68f('0x20')](_0x30dace['variable']['xmd-callerid-preview'])||!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x51')])){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x52'),_0x30dace[_0xd68f('0x8')],!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')]['xmd-callerid-preview'])?_0xd68f('0x53'):_0xd68f('0x51'),_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x2d')]=_0x30dace[_0xd68f('0x4d')];}if(!_[_0xd68f('0x20')](_0x30dace['variable'][_0xd68f('0x54')])||!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')]['xmcs-queue'])){utils[_0xd68f('0x9')](util[_0xd68f('0x17')](_0xd68f('0x52'),_0x30dace[_0xd68f('0x8')],!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x54')])?'xmd-queue':_0xd68f('0x55'),_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace['uniqueid']][_0xd68f('0x56')]=_0xd68f('0x57');channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x58')]=_0x30dace[_0xd68f('0x4d')];channels[_0x30dace[_0xd68f('0x8')]]['queue']=!![];}if(!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x59')])){utils[_0xd68f('0x9')](util[_0xd68f('0x17')]('[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s',_0x30dace['uniqueid'],_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x5a')]=_0x30dace[_0xd68f('0x4d')];}if(!_[_0xd68f('0x20')](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x5b')])){utils[_0xd68f('0x9')](util['format'](_0xd68f('0x5c'),_0x30dace['uniqueid'],_0x30dace['value']));channels[_0x30dace[_0xd68f('0x8')]]['type']=_0x30dace[_0xd68f('0x4d')];}if(!_['isNil'](_0x30dace[_0xd68f('0x4a')][_0xd68f('0x5d')])){utils[_0xd68f('0x9')](util['format']('[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s',_0x30dace[_0xd68f('0x8')],_0x30dace[_0xd68f('0x4d')]));channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x5e')]=_0x30dace['value'];}if(!_[_0xd68f('0x20')](_0x30dace['variable']['sipcallid'])){utils['info'](util[_0xd68f('0x17')](_0xd68f('0x5f'),_0x30dace[_0xd68f('0x8')],_0x30dace['value']));channels[_0x30dace[_0xd68f('0x8')]][_0xd68f('0x60')]=_0x30dace[_0xd68f('0x4d')];}}}catch(_0x2ae162){utils[_0xd68f('0x2a')](util['format']('[%s][calls][varset]',_0x30dace['uniqueid']),_0x2ae162);}};exports[_0xd68f('0x61')]=function(_0x3500e0){try{if(!_[_0xd68f('0x20')](channels[_0x3500e0[_0xd68f('0x8')]])){utils[_0xd68f('0x16')](util[_0xd68f('0x17')]('[%s][calls][newexten]',_0x3500e0['uniqueid']),_0x3500e0);utils[_0xd68f('0x9')](util['format']('[%s][calls][newexten]\x20application:%s\x20appdata:%s',_0x3500e0[_0xd68f('0x8')],_0x3500e0[_0xd68f('0x62')],_0x3500e0[_0xd68f('0x63')]));if(_0x3500e0[_0xd68f('0x62')][_0xd68f('0x64')]()=='set'&&_[_0xd68f('0x65')](_0x3500e0[_0xd68f('0x63')][_0xd68f('0x64')](),_0xd68f('0x66'))){var _0x3cda96=_0x3500e0[_0xd68f('0x63')][_0xd68f('0x67')]('=');var _0x27c9c0=_0x3cda96[0x0][_0xd68f('0x68')](_0x3cda96[0x0][_0xd68f('0x69')]('(')+0x1,_0x3cda96[0x0][_0xd68f('0x69')](')'));var _0x28ea32=_0x3cda96[0x1];channels[_0x3500e0[_0xd68f('0x8')]][_0x27c9c0]=_0x28ea32;}if(!_[_0xd68f('0x6a')]([_0xd68f('0x2b'),_0xd68f('0x6b'),_0xd68f('0x6c'),_0xd68f('0x6d'),_0xd68f('0x6e')],_0x3500e0[_0xd68f('0x62')]['toLowerCase']())){channels[_0x3500e0['uniqueid']][_0xd68f('0x56')]=_0x3500e0[_0xd68f('0x62')];channels[_0x3500e0[_0xd68f('0x8')]]['lastdata']=_0x3500e0[_0xd68f('0x63')];}}}catch(_0x5ca86b){utils['error'](util[_0xd68f('0x17')](_0xd68f('0x6f'),_0x3500e0[_0xd68f('0x8')]),_0x5ca86b);}};
\ No newline at end of file
+var _0xd8fb=['[%s][calls][musiconholdstop]','[%s][calls][musiconholdstop]\x20mohtime:%s','[%s][calls][varset]','xmd-originatecalleridnum','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','variable','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','Queue','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','ContactId','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','outboundrouteid','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','routeid','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','startsWith','split','lastIndexOf','includes','noop','execif','gotoif','lastapplication','lastdata','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','ANSWERED','BUSY','FAILED','blinds','uniqueid','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','queue','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','recording','debug','[%s][calls][newchannel]','channel','context','exten','calleridnum','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','info','systemanswertime','linkedid','channelstate','transfer','destinationchannel','answertime','disposition','toNumber','hangup','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','diffTime','endtime','starttime','billableseconds','[%s][calls][hangup]','attendedtransfer','[%s][calls][attendedtransfer]','origtransfereruniqueid','localtwolinkedid','transfereechannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','secondtransfererchannel','userfield','_attended','transfertargetchannel','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','musiconholdstop'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xd8fb,0x99));var _0xbd8f=function(_0x34a04a,_0x46a620){_0x34a04a=_0x34a04a-0x0;var _0xcf8e78=_0xd8fb[_0x34a04a];return _0xcf8e78;};'use strict';var _=require(_0xbd8f('0x0'));var util=require(_0xbd8f('0x1'));var utils=require(_0xbd8f('0x2'));var transfers=require(_0xbd8f('0x3'));var dispositions=['NO\x20ANSWER','FAILED','FAILED',_0xbd8f('0x4'),_0xbd8f('0x4'),'NO\x20ANSWER',_0xbd8f('0x5'),_0xbd8f('0x6'),'FAILED',_0xbd8f('0x7'),'FAILED'];var channels={};function writeDB(_0xf503c4){var _0x578499;if(transfers[_0xbd8f('0x8')][_0xf503c4[_0xbd8f('0x9')]]){_0x578499=_0xf503c4['uniqueid'];_0xf503c4['uniqueid']=transfers[_0xbd8f('0x8')][_0xf503c4[_0xbd8f('0x9')]][_0xbd8f('0xa')];}utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0xc'),_0xf503c4['uniqueid'],_0xf503c4['channel'],_0xf503c4[_0xbd8f('0xd')],_0xf503c4[_0xbd8f('0xe')],_0xf503c4[_0xbd8f('0xf')],_0xf503c4['calleridnum'],_0xf503c4[_0xbd8f('0x10')],_0xf503c4[_0xbd8f('0x11')]));if(_0xf503c4[_0xbd8f('0x12')]){utils[_0xbd8f('0x13')](_0xf503c4[_0xbd8f('0x12')])[_0xbd8f('0x14')](function(_0x37d4d5){if(_0x37d4d5){_0xf503c4[_0xbd8f('0x15')]=_0x37d4d5['id'];}utils[_0xbd8f('0x16')]('CreateVoiceCallReport',_0xf503c4);});}else{utils[_0xbd8f('0x16')](_0xbd8f('0x17'),_0xf503c4);}if(channels[_0xf503c4[_0xbd8f('0x9')]]){delete channels[_0xf503c4[_0xbd8f('0x9')]];}else if(_0x578499&&channels[_0x578499]){if(!transfers['blinds'][_0x578499][_0xbd8f('0x18')])delete transfers[_0xbd8f('0x8')][_0x578499];delete channels[_0x578499];}}exports['newchannel']=function(_0x15be97){try{utils[_0xbd8f('0x19')](util['format'](_0xbd8f('0x1a'),_0x15be97[_0xbd8f('0x9')]),_0x15be97);if(_0x15be97['uniqueid']==_0x15be97['linkedid']&&_0x15be97[_0xbd8f('0x1b')]!='OutgoingSpoolFailed'){utils['info'](util[_0xbd8f('0xb')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x15be97[_0xbd8f('0x9')],_0x15be97[_0xbd8f('0x1c')],_0x15be97[_0xbd8f('0x1d')]));channels[_0x15be97[_0xbd8f('0x9')]]={'uniqueid':_0x15be97[_0xbd8f('0x9')],'accountcode':_0x15be97[_0xbd8f('0x12')],'source':_0x15be97[_0xbd8f('0x1e')],'destination':_0x15be97[_0xbd8f('0x1d')],'destinationcontext':_0x15be97[_0xbd8f('0x1c')],'channel':_0x15be97[_0xbd8f('0x1b')],'starttime':utils[_0xbd8f('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0xbd8f('0x4'),'amaflags':_0xbd8f('0x20')};}}catch(_0x15c4a9){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x1a'),_0x15be97['uniqueid']),_0x15c4a9);}};exports[_0xbd8f('0x22')]=function(_0x9fa3b1){try{utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x23'),_0x9fa3b1[_0xbd8f('0x9')]),_0x9fa3b1);if(!_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x9')]])&&_0x9fa3b1['channelstate']==0x6){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x9fa3b1[_0xbd8f('0x9')],_0x9fa3b1['context'],_0x9fa3b1[_0xbd8f('0x1b')]));if(_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x9')]][_0xbd8f('0x26')])){channels[_0x9fa3b1[_0xbd8f('0x9')]][_0xbd8f('0x26')]=utils['now']();}}else if(!_[_0xbd8f('0x24')](channels[_0x9fa3b1[_0xbd8f('0x27')]])&&_0x9fa3b1[_0xbd8f('0x28')]==0x6&&_0x9fa3b1[_0xbd8f('0x1c')]!=_0xbd8f('0x29')){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x9fa3b1[_0xbd8f('0x9')],_0x9fa3b1[_0xbd8f('0x27')],_0x9fa3b1[_0xbd8f('0x1c')],_0x9fa3b1[_0xbd8f('0x1b')]));channels[_0x9fa3b1['linkedid']]['accountcode']=_0x9fa3b1[_0xbd8f('0x12')];channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2a')]=_0x9fa3b1[_0xbd8f('0x1b')];if(_['isNil'](channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2b')])){channels[_0x9fa3b1[_0xbd8f('0x27')]][_0xbd8f('0x2b')]=utils[_0xbd8f('0x1f')]();}channels[_0x9fa3b1['linkedid']][_0xbd8f('0x2c')]=dispositions[_[_0xbd8f('0x2d')](_0x9fa3b1[_0xbd8f('0x28')])]||_0xbd8f('0x5');}}catch(_0x2df6a6){utils['error'](util[_0xbd8f('0xb')]('[%s][calls][newstate]',_0x9fa3b1[_0xbd8f('0x9')]),_0x2df6a6);}};exports[_0xbd8f('0x2e')]=function(_0x337bc4){try{if(!_[_0xbd8f('0x24')](channels[_0x337bc4[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util['format']('[%s][calls][hangup]',_0x337bc4['uniqueid']),_0x337bc4);if(_[_0xbd8f('0x24')](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')])){channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')]=_0x337bc4[_0xbd8f('0x30')]+'\x20<'+_0x337bc4[_0xbd8f('0x1e')]+'>';}utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x31'),_0x337bc4[_0xbd8f('0x9')],channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2f')],_0x337bc4[_0xbd8f('0x32')]));channels[_0x337bc4[_0xbd8f('0x9')]]['endtime']=utils[_0xbd8f('0x1f')]();channels[_0x337bc4[_0xbd8f('0x9')]]['duration']=utils[_0xbd8f('0x33')](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x34')],channels[_0x337bc4['uniqueid']][_0xbd8f('0x35')]);channels[_0x337bc4['uniqueid']][_0xbd8f('0x36')]=channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x2b')]?utils['diffTime'](channels[_0x337bc4[_0xbd8f('0x9')]][_0xbd8f('0x34')],channels[_0x337bc4[_0xbd8f('0x9')]]['answertime']):0x0;writeDB(channels[_0x337bc4[_0xbd8f('0x9')]]);}}catch(_0x3d82ef){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x37'),_0x337bc4[_0xbd8f('0x9')]),_0x3d82ef);}};exports[_0xbd8f('0x38')]=function(_0xb453a8){try{if(!_[_0xbd8f('0x24')](channels[_0xb453a8['localtwolinkedid']])){utils['debug'](util[_0xbd8f('0xb')](_0xbd8f('0x39'),_0xb453a8[_0xbd8f('0x3a')]),_0xb453a8);if(channels[_0xb453a8[_0xbd8f('0x3b')]]['channel']==_0xb453a8[_0xbd8f('0x3c')]){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x3d'),_0xb453a8[_0xbd8f('0x3a')],_0xb453a8['localtwolinkedid'],_0xb453a8['secondtransfererchannel']));channels[_0xb453a8[_0xbd8f('0x3b')]]['destinationchannel']=_0xb453a8[_0xbd8f('0x3e')];channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x3f')]=_0xbd8f('0x40');}else if(channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x1b')]=_0xb453a8[_0xbd8f('0x41')]){utils[_0xbd8f('0x25')](util['format'](_0xbd8f('0x3d'),_0xb453a8[_0xbd8f('0x3a')],_0xb453a8[_0xbd8f('0x3b')],_0xb453a8[_0xbd8f('0x42')]));channels[_0xb453a8[_0xbd8f('0x3b')]][_0xbd8f('0x2a')]=_0xb453a8[_0xbd8f('0x42')];channels[_0xb453a8[_0xbd8f('0x3b')]]['userfield']=_0xbd8f('0x40');}}}catch(_0x18cb6d){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')](_0xbd8f('0x39'),_0xb453a8[_0xbd8f('0x3a')]),_0x18cb6d);}};exports[_0xbd8f('0x43')]=function(_0x439bbd){try{if(!_[_0xbd8f('0x24')](channels[_0x439bbd[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x44'),_0x439bbd[_0xbd8f('0x9')]),_0x439bbd);channels[_0x439bbd[_0xbd8f('0x9')]][_0xbd8f('0x45')]=utils[_0xbd8f('0x1f')]();utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s',_0x439bbd[_0xbd8f('0x9')],channels[_0x439bbd[_0xbd8f('0x9')]][_0xbd8f('0x45')]));}}catch(_0x1f6abb){utils['error'](util[_0xbd8f('0xb')]('[%s][calls][musiconholdstart]',_0x439bbd[_0xbd8f('0x9')]),_0x1f6abb);}};exports[_0xbd8f('0x46')]=function(_0x1f99f9){try{if(!_[_0xbd8f('0x24')](channels[_0x1f99f9['uniqueid']])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x47'),_0x1f99f9[_0xbd8f('0x9')]),_0x1f99f9);if(!_[_0xbd8f('0x24')](channels[_0x1f99f9[_0xbd8f('0x9')]]['musiconholdstartAt'])){channels[_0x1f99f9[_0xbd8f('0x9')]]['mohtime']+=utils[_0xbd8f('0x33')](utils[_0xbd8f('0x1f')](),channels[_0x1f99f9[_0xbd8f('0x9')]][_0xbd8f('0x45')]);utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x48'),_0x1f99f9[_0xbd8f('0x9')],channels[_0x1f99f9[_0xbd8f('0x9')]]['mohtime']));delete channels[_0x1f99f9[_0xbd8f('0x9')]]['musiconholdstartAt'];}}}catch(_0xd09e5){utils[_0xbd8f('0x21')](util['format'](_0xbd8f('0x47'),_0x1f99f9['uniqueid']),_0xd09e5);}};exports['varset']=function(_0x5e924c){try{if(!_['isNil'](channels[_0x5e924c[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util[_0xbd8f('0xb')](_0xbd8f('0x49'),_0x5e924c[_0xbd8f('0x9')]),_0x5e924c);if(!_['isNil'](_0x5e924c['variable'][_0xbd8f('0x4a')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x4b'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c['value']));channels[_0x5e924c[_0xbd8f('0x9')]]['source']=_0x5e924c[_0xbd8f('0x4c')];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-phone'])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x4e'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c['value']));channels[_0x5e924c['uniqueid']][_0xbd8f('0x4f')]=_0x5e924c['value'];channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x2f')]='\x22'+_0x5e924c[_0xbd8f('0x4c')]+_0xbd8f('0x50')+_0x5e924c['value']+'>';}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x51')])||!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x52')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x53'),_0x5e924c[_0xbd8f('0x9')],!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-callerid-preview'])?_0xbd8f('0x51'):_0xbd8f('0x52'),_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x2f')]=_0x5e924c[_0xbd8f('0x4c')];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x54')])||!_['isNil'](_0x5e924c['variable'][_0xbd8f('0x55')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5e924c['uniqueid'],!_[_0xbd8f('0x24')](_0x5e924c['variable']['xmd-queue'])?'xmd-queue':'xmcs-queue',_0x5e924c['value']));channels[_0x5e924c[_0xbd8f('0x9')]]['lastapplication']=_0xbd8f('0x56');channels[_0x5e924c[_0xbd8f('0x9')]]['lastdata']=_0x5e924c[_0xbd8f('0x4c')];channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0xd')]=!![];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')]['xmd-contactid'])){utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0x57'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x58')]=_0x5e924c['value'];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x59')])){utils['info'](util[_0xbd8f('0xb')](_0xbd8f('0x5a'),_0x5e924c['uniqueid'],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5b')]=_0x5e924c['value'];}if(!_['isNil'](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x5c')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x5d'),_0x5e924c['uniqueid'],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5e')]=_0x5e924c[_0xbd8f('0x4c')];}if(!_[_0xbd8f('0x24')](_0x5e924c[_0xbd8f('0x4d')][_0xbd8f('0x5f')])){utils[_0xbd8f('0x25')](util[_0xbd8f('0xb')](_0xbd8f('0x60'),_0x5e924c[_0xbd8f('0x9')],_0x5e924c[_0xbd8f('0x4c')]));channels[_0x5e924c[_0xbd8f('0x9')]][_0xbd8f('0x5f')]=_0x5e924c[_0xbd8f('0x4c')];}}}catch(_0x4557a9){utils[_0xbd8f('0x21')](util[_0xbd8f('0xb')]('[%s][calls][varset]',_0x5e924c[_0xbd8f('0x9')]),_0x4557a9);}};exports[_0xbd8f('0x61')]=function(_0xffcbed){try{if(!_[_0xbd8f('0x24')](channels[_0xffcbed[_0xbd8f('0x9')]])){utils[_0xbd8f('0x19')](util['format']('[%s][calls][newexten]',_0xffcbed[_0xbd8f('0x9')]),_0xffcbed);utils[_0xbd8f('0x25')](util['format'](_0xbd8f('0x62'),_0xffcbed['uniqueid'],_0xffcbed[_0xbd8f('0x63')],_0xffcbed[_0xbd8f('0x64')]));if(_0xffcbed[_0xbd8f('0x63')][_0xbd8f('0x65')]()=='set'&&_[_0xbd8f('0x66')](_0xffcbed[_0xbd8f('0x64')][_0xbd8f('0x65')](),'cdr')){var _0x272262=_0xffcbed[_0xbd8f('0x64')][_0xbd8f('0x67')]('=');var _0x161ec8=_0x272262[0x0]['substring'](_0x272262[0x0][_0xbd8f('0x68')]('(')+0x1,_0x272262[0x0][_0xbd8f('0x68')](')'));var _0x1d4e14=_0x272262[0x1];channels[_0xffcbed[_0xbd8f('0x9')]][_0x161ec8]=_0x1d4e14;}if(!_[_0xbd8f('0x69')]([_0xbd8f('0x2e'),_0xbd8f('0x6a'),_0xbd8f('0x6b'),'set',_0xbd8f('0x6c')],_0xffcbed['application'][_0xbd8f('0x65')]())){channels[_0xffcbed['uniqueid']][_0xbd8f('0x6d')]=_0xffcbed[_0xbd8f('0x63')];channels[_0xffcbed['uniqueid']][_0xbd8f('0x6e')]=_0xffcbed[_0xbd8f('0x64')];}}}catch(_0x60cd2b){utils[_0xbd8f('0x21')](util['format'](_0xbd8f('0x6f'),_0xffcbed[_0xbd8f('0x9')]),_0x60cd2b);}};
\ No newline at end of file
index 13c568e..031f979 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x24e0=['[core]\x20connected','shutdown','[core]\x20shutdown','[core]\x20fullybooted','close','[core]\x20close','managerevent','./utils','info'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0x24e0,0xe8));var _0x024e=function(_0x559f97,_0x3d9d5d){_0x559f97=_0x559f97-0x0;var _0x5a7eb6=_0x24e0[_0x559f97];return _0x5a7eb6;};'use strict';var utils=require(_0x024e('0x0'));exports['connect']=function(){utils[_0x024e('0x1')](_0x024e('0x2'));};exports[_0x024e('0x3')]=function(){utils[_0x024e('0x1')](_0x024e('0x4'));};exports['fullybooted']=function(){utils[_0x024e('0x1')](_0x024e('0x5'));};exports['error']=function(_0x134563){utils['error']('[core]\x20error',_0x134563);};exports[_0x024e('0x6')]=function(){utils['info'](_0x024e('0x7'));};exports[_0x024e('0x8')]=function(_0x14d54a){};
\ No newline at end of file
+var _0x35f9=['connect','info','[core]\x20connected','[core]\x20fullybooted','error','[core]\x20error','close','[core]\x20close','managerevent','./utils'];(function(_0x1ee62e,_0x159bb2){var _0x27c6c8=function(_0x31a5d4){while(--_0x31a5d4){_0x1ee62e['push'](_0x1ee62e['shift']());}};_0x27c6c8(++_0x159bb2);}(_0x35f9,0x1df));var _0x935f=function(_0x27fcc3,_0x1266cb){_0x27fcc3=_0x27fcc3-0x0;var _0x4307e8=_0x35f9[_0x27fcc3];return _0x4307e8;};'use strict';var utils=require(_0x935f('0x0'));exports[_0x935f('0x1')]=function(){utils[_0x935f('0x2')](_0x935f('0x3'));};exports['shutdown']=function(){utils[_0x935f('0x2')]('[core]\x20shutdown');};exports['fullybooted']=function(){utils[_0x935f('0x2')](_0x935f('0x4'));};exports['error']=function(_0x5efd7b){utils[_0x935f('0x5')](_0x935f('0x6'),_0x5efd7b);};exports[_0x935f('0x7')]=function(){utils[_0x935f('0x2')](_0x935f('0x8'));};exports[_0x935f('0x9')]=function(_0x4182d5){};
\ No newline at end of file
index 2fae783..89e0cfc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3d5=['starttime','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','isNil','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','answertime','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','cause-txt','now','complete','duration','holdtime','diffTime','endtime','billableseconds','lodash','util','./utils','info','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','debug','[%s][dials][newexten]','application','appdata','toLowerCase','cdr(routeid)','split','format','varset','variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','error','[%s][dials][varset]','[%s][dials][dialbegin]','assign'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xa3d5,0x19b));var _0x5a3d=function(_0x1a3e23,_0xce45e){_0x1a3e23=_0x1a3e23-0x0;var _0x5ee0d8=_0xa3d5[_0x1a3e23];return _0x5ee0d8;};'use strict';var _=require(_0x5a3d('0x0'));var util=require(_0x5a3d('0x1'));var utils=require(_0x5a3d('0x2'));var dials={};function writeDB(_0x2732b9){utils[_0x5a3d('0x3')](util['format'](_0x5a3d('0x4'),_0x2732b9[_0x5a3d('0x5')],_0x2732b9[_0x5a3d('0x6')],_0x2732b9[_0x5a3d('0x7')],_0x2732b9[_0x5a3d('0x8')],_0x2732b9[_0x5a3d('0x9')],_0x2732b9[_0x5a3d('0xa')]));utils[_0x5a3d('0xb')](_0x5a3d('0xc'),_0x2732b9);delete dials[_0x2732b9['uniqueid']];}exports['newexten']=function(_0x45bc03){try{utils[_0x5a3d('0xd')](util['format'](_0x5a3d('0xe'),_0x45bc03[_0x5a3d('0x5')]),_0x45bc03);utils[_0x5a3d('0x3')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x45bc03['uniqueid'],_0x45bc03[_0x5a3d('0xf')],_0x45bc03[_0x5a3d('0x10')]));if(_0x45bc03['application'][_0x5a3d('0x11')]()=='set'&&_['startsWith'](_0x45bc03['appdata'][_0x5a3d('0x11')](),_0x5a3d('0x12'))){var _0x5ce7e8=_0x45bc03[_0x5a3d('0x10')][_0x5a3d('0x13')]('=');dials[_0x45bc03['uniqueid']]={'routeId':_0x5ce7e8[0x1]};}}catch(_0x1a8da3){utils['error'](util[_0x5a3d('0x14')](_0x5a3d('0xe'),_0x45bc03[_0x5a3d('0x5')]),_0x1a8da3);}};exports[_0x5a3d('0x15')]=function(_0x20557a){try{utils[_0x5a3d('0xd')](util[_0x5a3d('0x14')]('[%s][dials][varset]',_0x20557a[_0x5a3d('0x5')]),_0x20557a);if(!_['isNil'](_0x20557a[_0x5a3d('0x16')][_0x5a3d('0x17')])){utils[_0x5a3d('0x3')](util[_0x5a3d('0x14')](_0x5a3d('0x18'),_0x20557a[_0x5a3d('0x5')],_0x20557a[_0x5a3d('0x19')]));dials[_0x20557a[_0x5a3d('0x5')]]={'routeId':_0x20557a[_0x5a3d('0x19')]};}}catch(_0x1b3ed8){utils[_0x5a3d('0x1a')](util[_0x5a3d('0x14')](_0x5a3d('0x1b'),_0x20557a[_0x5a3d('0x5')]),_0x1b3ed8);}};exports['dialbegin']=function(_0x2f813d){try{if(!_['isNil'](dials[_0x2f813d[_0x5a3d('0x5')]])){utils[_0x5a3d('0xd')](util[_0x5a3d('0x14')](_0x5a3d('0x1c'),_0x2f813d[_0x5a3d('0x5')]),_0x2f813d);dials[_0x2f813d[_0x5a3d('0x5')]]=_[_0x5a3d('0x1d')](dials[_0x2f813d[_0x5a3d('0x5')]],_0x2f813d);dials[_0x2f813d[_0x5a3d('0x5')]][_0x5a3d('0x1e')]=utils['now']();dials[_0x2f813d[_0x5a3d('0x5')]][_0x5a3d('0x1f')]=_0x5a3d('0x20');utils['info'](util[_0x5a3d('0x14')](_0x5a3d('0x21'),_0x2f813d['uniqueid'],dials[_0x2f813d[_0x5a3d('0x5')]][_0x5a3d('0x1e')]));}}catch(_0x47b7d7){utils[_0x5a3d('0x1a')](util[_0x5a3d('0x14')](_0x5a3d('0x1c'),_0x2f813d['uniqueid']),_0x47b7d7);}};exports[_0x5a3d('0x22')]=function(_0x2cb330){try{if(!_[_0x5a3d('0x23')](dials[_0x2cb330[_0x5a3d('0x5')]])){utils['debug'](util[_0x5a3d('0x14')]('[%s][dials][dialend]',_0x2cb330[_0x5a3d('0x5')]),_0x2cb330);dials[_0x2cb330[_0x5a3d('0x5')]][_0x5a3d('0xa')]=_0x2cb330[_0x5a3d('0xa')];if(_0x2cb330[_0x5a3d('0xa')]=='ANSWER'){dials[_0x2cb330['uniqueid']]=_[_0x5a3d('0x1d')](dials[_0x2cb330['uniqueid']],_0x2cb330);dials[_0x2cb330[_0x5a3d('0x5')]]['answertime']=utils['now']();dials[_0x2cb330['uniqueid']][_0x5a3d('0x1f')]=_0x5a3d('0x24');utils['info'](util[_0x5a3d('0x14')](_0x5a3d('0x25'),_0x2cb330[_0x5a3d('0x5')],_0x2cb330[_0x5a3d('0xa')],dials[_0x2cb330[_0x5a3d('0x5')]][_0x5a3d('0x26')]));}else{utils['info'](util[_0x5a3d('0x14')](_0x5a3d('0x27'),_0x2cb330[_0x5a3d('0x5')],_0x2cb330[_0x5a3d('0xa')]));}}}catch(_0x3acc7c){utils[_0x5a3d('0x1a')](util[_0x5a3d('0x14')](_0x5a3d('0x28'),_0x2cb330[_0x5a3d('0x5')]),_0x3acc7c);}};exports['hangup']=function(_0x323609){try{if(!_['isNil'](dials[_0x323609[_0x5a3d('0x5')]])){utils[_0x5a3d('0xd')](util[_0x5a3d('0x14')]('[%s][dials][hangup]',_0x323609[_0x5a3d('0x5')]),_0x323609);utils[_0x5a3d('0x3')](util['format']('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x323609[_0x5a3d('0x5')],_0x323609['calleridnum'],_0x323609['calleridname'],_0x323609[_0x5a3d('0x29')]));dials[_0x323609[_0x5a3d('0x5')]]=_[_0x5a3d('0x1d')](dials[_0x323609[_0x5a3d('0x5')]],{'endtime':utils[_0x5a3d('0x2a')](),'lastevent':_0x5a3d('0x2b')});dials[_0x323609[_0x5a3d('0x5')]][_0x5a3d('0x2c')]=utils['diffTime'](dials[_0x323609[_0x5a3d('0x5')]]['endtime'],dials[_0x323609[_0x5a3d('0x5')]][_0x5a3d('0x1e')]);dials[_0x323609['uniqueid']][_0x5a3d('0x2d')]=utils[_0x5a3d('0x2e')](dials[_0x323609['uniqueid']][_0x5a3d('0x26')]||dials[_0x323609[_0x5a3d('0x5')]][_0x5a3d('0x2f')],dials[_0x323609[_0x5a3d('0x5')]]['starttime']);dials[_0x323609[_0x5a3d('0x5')]][_0x5a3d('0x30')]=dials[_0x323609['uniqueid']][_0x5a3d('0x26')]?utils['diffTime'](dials[_0x323609['uniqueid']][_0x5a3d('0x2f')],dials[_0x323609[_0x5a3d('0x5')]][_0x5a3d('0x26')]):0x0;writeDB(dials[_0x323609['uniqueid']]);}}catch(_0x79fe4b){utils[_0x5a3d('0x1a')](util['format']('[%s][dials][hangup]',_0x323609[_0x5a3d('0x5')]),_0x79fe4b);}};
\ No newline at end of file
+var _0xba13=['debug','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','toLowerCase','cdr(routeid)','split','error','varset','[%s][dials][varset]','isNil','variable','outboundrouteid','[%s][dials][dialbegin]','assign','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','starttime','dialend','[%s][dials][dialend]','answertime','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','hangup','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridname','duration','holdtime','diffTime','billableseconds','endtime','lodash','util','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','uniqueid','newexten'];(function(_0x2a3c4d,_0x9c6b37){var _0x55c390=function(_0x4871cf){while(--_0x4871cf){_0x2a3c4d['push'](_0x2a3c4d['shift']());}};_0x55c390(++_0x9c6b37);}(_0xba13,0x1e7));var _0x3ba1=function(_0x104e21,_0x2ea86f){_0x104e21=_0x104e21-0x0;var _0x605b37=_0xba13[_0x104e21];return _0x605b37;};'use strict';var _=require(_0x3ba1('0x0'));var util=require(_0x3ba1('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x59f721){utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x4'),_0x59f721['uniqueid'],_0x59f721[_0x3ba1('0x5')],_0x59f721['dialstring'],_0x59f721[_0x3ba1('0x6')],_0x59f721[_0x3ba1('0x7')],_0x59f721[_0x3ba1('0x8')]));utils[_0x3ba1('0x9')](_0x3ba1('0xa'),_0x59f721);delete dials[_0x59f721[_0x3ba1('0xb')]];}exports[_0x3ba1('0xc')]=function(_0x5e62f8){try{utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0xe'),_0x5e62f8[_0x3ba1('0xb')]),_0x5e62f8);utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0xf'),_0x5e62f8[_0x3ba1('0xb')],_0x5e62f8[_0x3ba1('0x10')],_0x5e62f8[_0x3ba1('0x11')]));if(_0x5e62f8[_0x3ba1('0x10')]['toLowerCase']()==_0x3ba1('0x12')&&_['startsWith'](_0x5e62f8[_0x3ba1('0x11')][_0x3ba1('0x13')](),_0x3ba1('0x14'))){var _0x4403e5=_0x5e62f8[_0x3ba1('0x11')][_0x3ba1('0x15')]('=');dials[_0x5e62f8['uniqueid']]={'routeId':_0x4403e5[0x1]};}}catch(_0x48e412){utils[_0x3ba1('0x16')](util[_0x3ba1('0x3')](_0x3ba1('0xe'),_0x5e62f8[_0x3ba1('0xb')]),_0x48e412);}};exports[_0x3ba1('0x17')]=function(_0x2ad4f1){try{utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x18'),_0x2ad4f1[_0x3ba1('0xb')]),_0x2ad4f1);if(!_[_0x3ba1('0x19')](_0x2ad4f1[_0x3ba1('0x1a')][_0x3ba1('0x1b')])){utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x2ad4f1['uniqueid'],_0x2ad4f1['value']));dials[_0x2ad4f1[_0x3ba1('0xb')]]={'routeId':_0x2ad4f1['value']};}}catch(_0x4702da){utils['error'](util[_0x3ba1('0x3')](_0x3ba1('0x18'),_0x2ad4f1['uniqueid']),_0x4702da);}};exports['dialbegin']=function(_0x4cf2e7){try{if(!_['isNil'](dials[_0x4cf2e7['uniqueid']])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x1c'),_0x4cf2e7[_0x3ba1('0xb')]),_0x4cf2e7);dials[_0x4cf2e7[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x4cf2e7[_0x3ba1('0xb')]],_0x4cf2e7);dials[_0x4cf2e7[_0x3ba1('0xb')]]['starttime']=utils[_0x3ba1('0x1e')]();dials[_0x4cf2e7[_0x3ba1('0xb')]][_0x3ba1('0x1f')]=_0x3ba1('0x20');utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x21'),_0x4cf2e7[_0x3ba1('0xb')],dials[_0x4cf2e7[_0x3ba1('0xb')]][_0x3ba1('0x22')]));}}catch(_0x4af45c){utils['error'](util['format'](_0x3ba1('0x1c'),_0x4cf2e7[_0x3ba1('0xb')]),_0x4af45c);}};exports[_0x3ba1('0x23')]=function(_0x61afd9){try{if(!_['isNil'](dials[_0x61afd9['uniqueid']])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x24'),_0x61afd9[_0x3ba1('0xb')]),_0x61afd9);dials[_0x61afd9[_0x3ba1('0xb')]]['dialstatus']=_0x61afd9[_0x3ba1('0x8')];if(_0x61afd9[_0x3ba1('0x8')]=='ANSWER'){dials[_0x61afd9[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x61afd9[_0x3ba1('0xb')]],_0x61afd9);dials[_0x61afd9[_0x3ba1('0xb')]][_0x3ba1('0x25')]=utils[_0x3ba1('0x1e')]();dials[_0x61afd9['uniqueid']][_0x3ba1('0x1f')]=_0x3ba1('0x26');utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x27'),_0x61afd9[_0x3ba1('0xb')],_0x61afd9[_0x3ba1('0x8')],dials[_0x61afd9[_0x3ba1('0xb')]]['answertime']));}else{utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x28'),_0x61afd9['uniqueid'],_0x61afd9['dialstatus']));}}}catch(_0x2d30db){utils[_0x3ba1('0x16')](util[_0x3ba1('0x3')](_0x3ba1('0x24'),_0x61afd9[_0x3ba1('0xb')]),_0x2d30db);}};exports[_0x3ba1('0x29')]=function(_0x520b98){try{if(!_[_0x3ba1('0x19')](dials[_0x520b98[_0x3ba1('0xb')]])){utils[_0x3ba1('0xd')](util[_0x3ba1('0x3')](_0x3ba1('0x2a'),_0x520b98[_0x3ba1('0xb')]),_0x520b98);utils[_0x3ba1('0x2')](util[_0x3ba1('0x3')](_0x3ba1('0x2b'),_0x520b98[_0x3ba1('0xb')],_0x520b98[_0x3ba1('0x6')],_0x520b98[_0x3ba1('0x2c')],_0x520b98['cause-txt']));dials[_0x520b98[_0x3ba1('0xb')]]=_[_0x3ba1('0x1d')](dials[_0x520b98[_0x3ba1('0xb')]],{'endtime':utils[_0x3ba1('0x1e')](),'lastevent':'complete'});dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x2d')]=utils['diffTime'](dials[_0x520b98[_0x3ba1('0xb')]]['endtime'],dials[_0x520b98['uniqueid']]['starttime']);dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x2e')]=utils[_0x3ba1('0x2f')](dials[_0x520b98['uniqueid']][_0x3ba1('0x25')]||dials[_0x520b98[_0x3ba1('0xb')]]['endtime'],dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x22')]);dials[_0x520b98['uniqueid']][_0x3ba1('0x30')]=dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x25')]?utils['diffTime'](dials[_0x520b98['uniqueid']][_0x3ba1('0x31')],dials[_0x520b98[_0x3ba1('0xb')]][_0x3ba1('0x25')]):0x0;writeDB(dials[_0x520b98['uniqueid']]);}}catch(_0x3bc314){utils[_0x3ba1('0x16')](util['format'](_0x3ba1('0x2a'),_0x520b98[_0x3ba1('0xb')]),_0x3bc314);}};
\ No newline at end of file
index 26ee3f4..d2af9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98ed=['uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','[%s][index][blindtransfer]','blindtransfer','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','[%s][index][varset]','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','xdr','disabled','env','production','local','asterisk','port','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]'];(function(_0x57da63,_0x2d900f){var _0x360ecf=function(_0x3de9c8){while(--_0x3de9c8){_0x57da63['push'](_0x57da63['shift']());}};_0x360ecf(++_0x2d900f);}(_0x98ed,0x185));var _0xd98e=function(_0xb1b481,_0x337b26){_0xb1b481=_0xb1b481-0x0;var _0x2433d2=_0x98ed[_0xb1b481];return _0x2433d2;};var AsteriskManager=require(_0xd98e('0x0'));var config=require(_0xd98e('0x1'));var utils=require('./utils');var util=require('util');var isXDREnabled=config[_0xd98e('0x2')]&&config[_0xd98e('0x2')]['disabled']?!config[_0xd98e('0x2')][_0xd98e('0x3')]:!![];var isProduction=config[_0xd98e('0x4')]===_0xd98e('0x5')||![];var isLocalAsterisk=config['xdr']&&config['xdr'][_0xd98e('0x6')]===!![]||![];var ami=new AsteriskManager(config[_0xd98e('0x7')][_0xd98e('0x8')],config[_0xd98e('0x7')]['ip'],config[_0xd98e('0x7')]['username'],config['asterisk']['password'],!![]);ami['keepConnected']();if(!isXDREnabled){utils[_0xd98e('0x9')](_0xd98e('0xa'));}else if(!isProduction&&!isLocalAsterisk){utils['info'](_0xd98e('0xb'));}else{var agents=require(_0xd98e('0xc'));var calls=require(_0xd98e('0xd'));var queues=require(_0xd98e('0xe'));var recordings=require('./recordings.controller');var members=require(_0xd98e('0xf'));var dials=require(_0xd98e('0x10'));var transfers=require(_0xd98e('0x11'));var core=require(_0xd98e('0x12'));ami['on'](_0xd98e('0x13'),core[_0xd98e('0x13')]);ami['on'](_0xd98e('0x14'),core[_0xd98e('0x14')]);ami['on'](_0xd98e('0x15'),core['fullybooted']);ami['on'](_0xd98e('0x16'),core['error']);ami['on'](_0xd98e('0x17'),core[_0xd98e('0x17')]);ami['on']('managerevent',core[_0xd98e('0x18')]);ami['on'](_0xd98e('0x19'),function(_0x4a91bf){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x1c'),_0x4a91bf['device']),_0x4a91bf);members[_0xd98e('0x19')](_0x4a91bf);}catch(_0x581ff0){utils[_0xd98e('0x16')](util[_0xd98e('0x1b')](_0xd98e('0x1c'),_0x4a91bf[_0xd98e('0x1d')]),_0x581ff0);}});ami['on']('agentcalled',function(_0x53d2dc){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x1e'),_0x53d2dc[_0xd98e('0x1f')]),_0x53d2dc);agents[_0xd98e('0x20')](_0x53d2dc);}catch(_0x2aa38e){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x1e'),_0x53d2dc[_0xd98e('0x1f')]),_0x2aa38e);}});ami['on'](_0xd98e('0x21'),function(_0x5b16a4){try{utils['debug'](util[_0xd98e('0x1b')](_0xd98e('0x22'),_0x5b16a4[_0xd98e('0x1f')]),_0x5b16a4);agents[_0xd98e('0x21')](_0x5b16a4);}catch(_0xb9b689){utils[_0xd98e('0x16')](util['format'](_0xd98e('0x22'),_0x5b16a4['uniqueid']),_0xb9b689);}});ami['on'](_0xd98e('0x23'),function(_0x45bb13){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x24'),_0x45bb13[_0xd98e('0x1f')]),_0x45bb13);agents[_0xd98e('0x23')](_0x45bb13);queues[_0xd98e('0x23')](_0x45bb13);}catch(_0x494e91){utils[_0xd98e('0x16')](util['format']('[%s][index][agentconnect]',_0x45bb13[_0xd98e('0x1f')]),_0x494e91);}});ami['on'](_0xd98e('0x25'),function(_0x2aa177){try{utils['debug'](util['format']('[%s][index][agentcomplete]',_0x2aa177[_0xd98e('0x1f')]),_0x2aa177);agents[_0xd98e('0x25')](_0x2aa177);queues['agentcomplete'](_0x2aa177);members['agentcomplete'](_0x2aa177);}catch(_0x58a0e0){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x26'),_0x2aa177[_0xd98e('0x1f')]),_0x58a0e0);}});ami['on']('queuecallerabandon',function(_0x5abfc0){try{utils[_0xd98e('0x1a')](util['format'](_0xd98e('0x27'),_0x5abfc0[_0xd98e('0x1f')]),_0x5abfc0);agents[_0xd98e('0x28')](_0x5abfc0);queues[_0xd98e('0x28')](_0x5abfc0);}catch(_0x424f4b){utils['error'](util['format'](_0xd98e('0x27'),_0x5abfc0[_0xd98e('0x1f')]),_0x424f4b);}});ami['on'](_0xd98e('0x29'),function(_0x48e53b){try{utils['debug'](util['format'](_0xd98e('0x2a'),_0x48e53b[_0xd98e('0x1f')]),_0x48e53b);queues[_0xd98e('0x29')](_0x48e53b);recordings[_0xd98e('0x29')](_0x48e53b);}catch(_0x1b218b){utils[_0xd98e('0x16')](util[_0xd98e('0x1b')](_0xd98e('0x2a'),_0x48e53b[_0xd98e('0x1f')]),_0x1b218b);}});ami['on'](_0xd98e('0x2b'),function(_0x58d60b){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')]('[%s][index][queuecallerleave]',_0x58d60b[_0xd98e('0x1f')]),_0x58d60b);queues[_0xd98e('0x2b')](_0x58d60b);}catch(_0xaee454){utils[_0xd98e('0x16')](util['format']('[%s][index][queuecallerleave]',_0x58d60b[_0xd98e('0x1f')]),_0xaee454);}});ami['on'](_0xd98e('0x2c'),function(_0xe985d6){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')]('[%s][index][musiconholdstart]',_0xe985d6['uniqueid']),_0xe985d6);queues['musiconholdstart'](_0xe985d6);calls[_0xd98e('0x2c')](_0xe985d6);}catch(_0x4ff375){utils[_0xd98e('0x16')](util['format'](_0xd98e('0x2d'),_0xe985d6['uniqueid']),_0x4ff375);}});ami['on'](_0xd98e('0x2e'),function(_0x5de6bd){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x2f'),_0x5de6bd[_0xd98e('0x1f')]),_0x5de6bd);queues['musiconholdstop'](_0x5de6bd);calls[_0xd98e('0x2e')](_0x5de6bd);}catch(_0x36f628){utils['error'](util[_0xd98e('0x1b')]('[%s][index][musiconholdstop]',_0x5de6bd[_0xd98e('0x1f')]),_0x36f628);}});ami['on'](_0xd98e('0x30'),function(_0x3b933a){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x31'),_0x3b933a[_0xd98e('0x1f')]),_0x3b933a);calls['newstate'](_0x3b933a);recordings['newstate'](_0x3b933a);}catch(_0x373c84){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x31'),_0x3b933a['uniqueid']),_0x373c84);}});ami['on'](_0xd98e('0x32'),function(_0x4f2d52){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')]('[%s][index][hangup]',_0x4f2d52[_0xd98e('0x1f')]),_0x4f2d52);calls[_0xd98e('0x32')](_0x4f2d52);recordings[_0xd98e('0x32')](_0x4f2d52);dials[_0xd98e('0x32')](_0x4f2d52);agents[_0xd98e('0x32')](_0x4f2d52);queues[_0xd98e('0x32')](_0x4f2d52);}catch(_0x3d8340){utils[_0xd98e('0x16')](util['format'](_0xd98e('0x33'),_0x4f2d52['uniqueid']),_0x3d8340);}});ami['on'](_0xd98e('0x34'),function(_0x740d5a){try{utils['debug'](util[_0xd98e('0x1b')]('[%s][index][cdr]',_0x740d5a[_0xd98e('0x1f')]),_0x740d5a);members[_0xd98e('0x34')](_0x740d5a);}catch(_0x6fb6fa){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x35'),_0x740d5a[_0xd98e('0x1f')]),_0x6fb6fa);}});ami['on']('blindtransfer',function(_0x678b26){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x36'),_0x678b26['uniqueid']),_0x678b26);queues[_0xd98e('0x37')](_0x678b26);agents[_0xd98e('0x37')](_0x678b26);transfers['blindtransfer'](_0x678b26);recordings[_0xd98e('0x37')](_0x678b26);}catch(_0x377161){utils[_0xd98e('0x16')](util['format']('[%s][index][blindtransfer]',_0x678b26[_0xd98e('0x1f')]),_0x377161);}});ami['on'](_0xd98e('0x38'),function(_0x249134){try{utils[_0xd98e('0x1a')](util['format'](_0xd98e('0x39'),_0x249134[_0xd98e('0x3a')]),_0x249134);queues[_0xd98e('0x38')](_0x249134);transfers[_0xd98e('0x38')](_0x249134);agents['attendedtransfer'](_0x249134);calls[_0xd98e('0x38')](_0x249134);}catch(_0x201aff){utils[_0xd98e('0x16')](util[_0xd98e('0x1b')](_0xd98e('0x39'),_0x249134[_0xd98e('0x3a')]),_0x201aff);}});ami['on']('varset',function(_0x53f84a){try{utils[_0xd98e('0x1a')](util['format'](_0xd98e('0x3b'),_0x53f84a[_0xd98e('0x1f')]),_0x53f84a);queues['varset'](_0x53f84a);recordings[_0xd98e('0x3c')](_0x53f84a);calls[_0xd98e('0x3c')](_0x53f84a);dials[_0xd98e('0x3c')](_0x53f84a);}catch(_0x12155c){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x3b'),_0x53f84a[_0xd98e('0x1f')]),_0x12155c);}});ami['on'](_0xd98e('0x3d'),function(_0xcaa745){try{utils['debug'](util['format'](_0xd98e('0x3e'),_0xcaa745[_0xd98e('0x1f')]),_0xcaa745);calls['newexten'](_0xcaa745);recordings[_0xd98e('0x3d')](_0xcaa745);dials[_0xd98e('0x3d')](_0xcaa745);}catch(_0xd8aba5){utils['error'](util['format'](_0xd98e('0x3e'),_0xcaa745[_0xd98e('0x1f')]),_0xd8aba5);}});ami['on']('newchannel',function(_0x17b65c){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')]('[%s][index][newchannel]',_0x17b65c[_0xd98e('0x1f')]),_0x17b65c);calls[_0xd98e('0x3f')](_0x17b65c);recordings[_0xd98e('0x3f')](_0x17b65c);}catch(_0x24d25a){utils['error'](util[_0xd98e('0x1b')](_0xd98e('0x40'),_0x17b65c[_0xd98e('0x1f')]),_0x24d25a);}});ami['on'](_0xd98e('0x41'),function(_0x5da01f){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x42'),_0x5da01f[_0xd98e('0x1f')]),_0x5da01f);dials[_0xd98e('0x41')](_0x5da01f);}catch(_0x206659){utils['error'](util['format'](_0xd98e('0x43'),_0x5da01f[_0xd98e('0x1f')]),_0x206659);}});ami['on'](_0xd98e('0x44'),function(_0x19e7f5){try{utils[_0xd98e('0x1a')](util[_0xd98e('0x1b')](_0xd98e('0x45'),_0x19e7f5[_0xd98e('0x1f')]),_0x19e7f5);dials['dialend'](_0x19e7f5);}catch(_0xfc5ec1){utils[_0xd98e('0x16')](util['format'](_0xd98e('0x45'),_0x19e7f5[_0xd98e('0x1f')]),_0xfc5ec1);}});}
\ No newline at end of file
+var _0xac86=['[%s][index][newexten]','newexten','[%s][index][newchannel]','newchannel','dialbegin','dialend','[%s][index][dialend]','asterisk-manager','./utils','util','xdr','disabled','env','production','asterisk','username','password','keepConnected','info','XDR\x20DISABLED','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./queues.controller','./recordings.controller','./members.controller','./dials.controller','./transfers.controller','./core.controller','connect','shutdown','fullybooted','error','close','managerevent','debug','format','[%s][index][devicestatechange]','device','devicestatechange','agentcalled','[%s][index][agentcalled]','uniqueid','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentcomplete]','agentcomplete','[%s][index][queuecallerabandon]','queuecallerabandon','queuecallerjoin','[%s][index][queuecallerjoin]','queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','newstate','[%s][index][newstate]','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset'];(function(_0x62b5b1,_0x1454c1){var _0x496a4b=function(_0xb95507){while(--_0xb95507){_0x62b5b1['push'](_0x62b5b1['shift']());}};_0x496a4b(++_0x1454c1);}(_0xac86,0x165));var _0x6ac8=function(_0x3dda2c,_0x1eacd9){_0x3dda2c=_0x3dda2c-0x0;var _0x34cef7=_0xac86[_0x3dda2c];return _0x34cef7;};var AsteriskManager=require(_0x6ac8('0x0'));var config=require('../../config/environment');var utils=require(_0x6ac8('0x1'));var util=require(_0x6ac8('0x2'));var isXDREnabled=config['xdr']&&config[_0x6ac8('0x3')][_0x6ac8('0x4')]?!config['xdr']['disabled']:!![];var isProduction=config[_0x6ac8('0x5')]===_0x6ac8('0x6')||![];var isLocalAsterisk=config['xdr']&&config[_0x6ac8('0x3')]['local']===!![]||![];var ami=new AsteriskManager(config[_0x6ac8('0x7')]['port'],config[_0x6ac8('0x7')]['ip'],config[_0x6ac8('0x7')][_0x6ac8('0x8')],config[_0x6ac8('0x7')][_0x6ac8('0x9')],!![]);ami[_0x6ac8('0xa')]();if(!isXDREnabled){utils[_0x6ac8('0xb')](_0x6ac8('0xc'));}else if(!isProduction&&!isLocalAsterisk){utils[_0x6ac8('0xb')](_0x6ac8('0xd'));}else{var agents=require(_0x6ac8('0xe'));var calls=require(_0x6ac8('0xf'));var queues=require(_0x6ac8('0x10'));var recordings=require(_0x6ac8('0x11'));var members=require(_0x6ac8('0x12'));var dials=require(_0x6ac8('0x13'));var transfers=require(_0x6ac8('0x14'));var core=require(_0x6ac8('0x15'));ami['on'](_0x6ac8('0x16'),core[_0x6ac8('0x16')]);ami['on'](_0x6ac8('0x17'),core[_0x6ac8('0x17')]);ami['on'](_0x6ac8('0x18'),core[_0x6ac8('0x18')]);ami['on'](_0x6ac8('0x19'),core[_0x6ac8('0x19')]);ami['on'](_0x6ac8('0x1a'),core[_0x6ac8('0x1a')]);ami['on'](_0x6ac8('0x1b'),core['managerevent']);ami['on']('devicestatechange',function(_0x29ff8f){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x1e'),_0x29ff8f[_0x6ac8('0x1f')]),_0x29ff8f);members[_0x6ac8('0x20')](_0x29ff8f);}catch(_0x497156){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x1e'),_0x29ff8f[_0x6ac8('0x1f')]),_0x497156);}});ami['on'](_0x6ac8('0x21'),function(_0x5c45fa){try{utils[_0x6ac8('0x1c')](util['format'](_0x6ac8('0x22'),_0x5c45fa['uniqueid']),_0x5c45fa);agents[_0x6ac8('0x21')](_0x5c45fa);}catch(_0x42c5a1){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x22'),_0x5c45fa[_0x6ac8('0x23')]),_0x42c5a1);}});ami['on'](_0x6ac8('0x24'),function(_0x3fe6ce){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x25'),_0x3fe6ce['uniqueid']),_0x3fe6ce);agents[_0x6ac8('0x24')](_0x3fe6ce);}catch(_0x5ea94d){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x25'),_0x3fe6ce[_0x6ac8('0x23')]),_0x5ea94d);}});ami['on'](_0x6ac8('0x26'),function(_0x1fba4d){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][agentconnect]',_0x1fba4d[_0x6ac8('0x23')]),_0x1fba4d);agents[_0x6ac8('0x26')](_0x1fba4d);queues[_0x6ac8('0x26')](_0x1fba4d);}catch(_0x189a3a){utils[_0x6ac8('0x19')](util['format']('[%s][index][agentconnect]',_0x1fba4d[_0x6ac8('0x23')]),_0x189a3a);}});ami['on']('agentcomplete',function(_0x2cd268){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x27'),_0x2cd268[_0x6ac8('0x23')]),_0x2cd268);agents[_0x6ac8('0x28')](_0x2cd268);queues['agentcomplete'](_0x2cd268);members[_0x6ac8('0x28')](_0x2cd268);}catch(_0x5ec6c1){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x27'),_0x2cd268['uniqueid']),_0x5ec6c1);}});ami['on']('queuecallerabandon',function(_0x29b8e2){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x29'),_0x29b8e2[_0x6ac8('0x23')]),_0x29b8e2);agents[_0x6ac8('0x2a')](_0x29b8e2);queues['queuecallerabandon'](_0x29b8e2);}catch(_0x542b27){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerabandon]',_0x29b8e2[_0x6ac8('0x23')]),_0x542b27);}});ami['on'](_0x6ac8('0x2b'),function(_0x5af7d3){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerjoin]',_0x5af7d3[_0x6ac8('0x23')]),_0x5af7d3);queues[_0x6ac8('0x2b')](_0x5af7d3);recordings[_0x6ac8('0x2b')](_0x5af7d3);}catch(_0x3920fb){utils[_0x6ac8('0x19')](util['format'](_0x6ac8('0x2c'),_0x5af7d3[_0x6ac8('0x23')]),_0x3920fb);}});ami['on'](_0x6ac8('0x2d'),function(_0x28c5d1){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x2e'),_0x28c5d1[_0x6ac8('0x23')]),_0x28c5d1);queues[_0x6ac8('0x2d')](_0x28c5d1);}catch(_0x4446a6){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][queuecallerleave]',_0x28c5d1[_0x6ac8('0x23')]),_0x4446a6);}});ami['on'](_0x6ac8('0x2f'),function(_0x3c7f88){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x30'),_0x3c7f88['uniqueid']),_0x3c7f88);queues['musiconholdstart'](_0x3c7f88);calls[_0x6ac8('0x2f')](_0x3c7f88);}catch(_0x5cc34e){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x30'),_0x3c7f88[_0x6ac8('0x23')]),_0x5cc34e);}});ami['on'](_0x6ac8('0x31'),function(_0x33b900){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x32'),_0x33b900[_0x6ac8('0x23')]),_0x33b900);queues[_0x6ac8('0x31')](_0x33b900);calls[_0x6ac8('0x31')](_0x33b900);}catch(_0x4e6329){utils[_0x6ac8('0x19')](util['format'](_0x6ac8('0x32'),_0x33b900[_0x6ac8('0x23')]),_0x4e6329);}});ami['on'](_0x6ac8('0x33'),function(_0x17d7b4){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][newstate]',_0x17d7b4[_0x6ac8('0x23')]),_0x17d7b4);calls['newstate'](_0x17d7b4);recordings[_0x6ac8('0x33')](_0x17d7b4);}catch(_0x56d799){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x34'),_0x17d7b4[_0x6ac8('0x23')]),_0x56d799);}});ami['on'](_0x6ac8('0x35'),function(_0x2e9325){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x36'),_0x2e9325[_0x6ac8('0x23')]),_0x2e9325);calls[_0x6ac8('0x35')](_0x2e9325);recordings[_0x6ac8('0x35')](_0x2e9325);dials['hangup'](_0x2e9325);agents[_0x6ac8('0x35')](_0x2e9325);queues[_0x6ac8('0x35')](_0x2e9325);}catch(_0x22720e){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][hangup]',_0x2e9325['uniqueid']),_0x22720e);}});ami['on'](_0x6ac8('0x37'),function(_0x32387a){try{utils['debug'](util['format']('[%s][index][cdr]',_0x32387a['uniqueid']),_0x32387a);members[_0x6ac8('0x37')](_0x32387a);}catch(_0x5e1056){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x38'),_0x32387a[_0x6ac8('0x23')]),_0x5e1056);}});ami['on'](_0x6ac8('0x39'),function(_0x161ef9){try{utils['debug'](util['format'](_0x6ac8('0x3a'),_0x161ef9[_0x6ac8('0x23')]),_0x161ef9);queues[_0x6ac8('0x39')](_0x161ef9);agents['blindtransfer'](_0x161ef9);transfers[_0x6ac8('0x39')](_0x161ef9);recordings[_0x6ac8('0x39')](_0x161ef9);}catch(_0x2fc685){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x3a'),_0x161ef9['uniqueid']),_0x2fc685);}});ami['on'](_0x6ac8('0x3b'),function(_0x27ced6){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x3c'),_0x27ced6[_0x6ac8('0x3d')]),_0x27ced6);queues[_0x6ac8('0x3b')](_0x27ced6);transfers[_0x6ac8('0x3b')](_0x27ced6);agents[_0x6ac8('0x3b')](_0x27ced6);calls[_0x6ac8('0x3b')](_0x27ced6);}catch(_0xdd9013){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x3c'),_0x27ced6['origtransfereruniqueid']),_0xdd9013);}});ami['on'](_0x6ac8('0x3e'),function(_0x3767ec){try{utils['debug'](util[_0x6ac8('0x1d')]('[%s][index][varset]',_0x3767ec[_0x6ac8('0x23')]),_0x3767ec);queues[_0x6ac8('0x3e')](_0x3767ec);recordings[_0x6ac8('0x3e')](_0x3767ec);calls[_0x6ac8('0x3e')](_0x3767ec);dials['varset'](_0x3767ec);}catch(_0x1cb417){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s][index][varset]',_0x3767ec['uniqueid']),_0x1cb417);}});ami['on']('newexten',function(_0x3b5908){try{utils['debug'](util[_0x6ac8('0x1d')](_0x6ac8('0x3f'),_0x3b5908[_0x6ac8('0x23')]),_0x3b5908);calls[_0x6ac8('0x40')](_0x3b5908);recordings[_0x6ac8('0x40')](_0x3b5908);dials[_0x6ac8('0x40')](_0x3b5908);}catch(_0x34149a){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x3f'),_0x3b5908[_0x6ac8('0x23')]),_0x34149a);}});ami['on']('newchannel',function(_0x569aa3){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x41'),_0x569aa3['uniqueid']),_0x569aa3);calls[_0x6ac8('0x42')](_0x569aa3);recordings[_0x6ac8('0x42')](_0x569aa3);}catch(_0x3830a7){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')](_0x6ac8('0x41'),_0x569aa3[_0x6ac8('0x23')]),_0x3830a7);}});ami['on'](_0x6ac8('0x43'),function(_0x1d406f){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')]('[%s][index][dialbegin]',_0x1d406f['uniqueid']),_0x1d406f);dials[_0x6ac8('0x43')](_0x1d406f);}catch(_0x5a262c){utils[_0x6ac8('0x19')](util[_0x6ac8('0x1d')]('[%s]dialbegin',_0x1d406f[_0x6ac8('0x23')]),_0x5a262c);}});ami['on'](_0x6ac8('0x44'),function(_0x4a53e2){try{utils[_0x6ac8('0x1c')](util[_0x6ac8('0x1d')](_0x6ac8('0x45'),_0x4a53e2[_0x6ac8('0x23')]),_0x4a53e2);dials[_0x6ac8('0x44')](_0x4a53e2);}catch(_0x12062e){utils['error'](util[_0x6ac8('0x1d')](_0x6ac8('0x45'),_0x4a53e2[_0x6ac8('0x23')]),_0x12062e);}});}
\ No newline at end of file
index 5c9faaf..f9569d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa459=['info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','data2','type','interface','getUserByInterface','then','name','CreateMemberReport','getUserByName','membername','internal','request','catch','error','[%s][members][writeDB]','startsWith','devicestatechange','debug','device','uniqueid','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','now','agent','NOT_INUSE','isNil','exitAt','duration','diffTime','enterAt','[%s][members][devicestatechange]','agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','[%s][members][cdr]','channel','split','assign','data1','source','data3','destination','destinationchannel','lodash','util','./utils','Local/_attended@transfer','Queue:'];(function(_0x108ae2,_0x15cddd){var _0x1dc124=function(_0x4ded72){while(--_0x4ded72){_0x108ae2['push'](_0x108ae2['shift']());}};_0x1dc124(++_0x15cddd);}(_0xa459,0x1d8));var _0x9a45=function(_0xf427da,_0x2ed980){_0xf427da=_0xf427da-0x0;var _0x2408e9=_0xa459[_0xf427da];return _0x2408e9;};'use strict';var _=require(_0x9a45('0x0'));var util=require(_0x9a45('0x1'));var utils=require(_0x9a45('0x2'));var members={};var exclude=[_0x9a45('0x3'),_0x9a45('0x4')];function writeDB(_0x2a5c68){utils[_0x9a45('0x5')](util[_0x9a45('0x6')](_0x9a45('0x7'),_0x2a5c68['uniqueid'],_0x2a5c68['interface'],_0x2a5c68['channel'],_0x2a5c68[_0x9a45('0x8')],_0x2a5c68['membername'],_0x2a5c68[_0x9a45('0x9')]));if(_0x2a5c68[_0x9a45('0xa')]){utils[_0x9a45('0xb')](_0x2a5c68[_0x9a45('0xa')])[_0x9a45('0xc')](function(_0x40c296){if(_0x40c296){_0x2a5c68['membername']=_0x40c296[_0x9a45('0xd')];_0x2a5c68['internal']=_0x40c296['internal'];utils['request'](_0x9a45('0xe'),_0x2a5c68);}else{utils[_0x9a45('0xf')](_0x2a5c68[_0x9a45('0xa')]['split']('/')[0x1])[_0x9a45('0xc')](function(_0x704753){if(_0x704753){_0x2a5c68[_0x9a45('0x10')]=_0x704753[_0x9a45('0xd')];_0x2a5c68[_0x9a45('0x11')]=_0x704753[_0x9a45('0x11')];utils[_0x9a45('0x12')](_0x9a45('0xe'),_0x2a5c68);}});}})[_0x9a45('0x13')](function(_0x557e7b){utils[_0x9a45('0x14')](util[_0x9a45('0x6')](_0x9a45('0x15'),_0x2a5c68['uniqueid']),_0x557e7b);});}delete members[_0x2a5c68[_0x9a45('0xa')]];}function startsWith(_0x59f693,_0x38e771){return _['some'](_0x59f693,function(_0x18b793){return _[_0x9a45('0x16')](_0x38e771,_0x18b793);});}exports[_0x9a45('0x17')]=function(_0x1ab361){try{utils[_0x9a45('0x18')](util[_0x9a45('0x6')]('[%s][members][devicestatechange]',members[_0x1ab361[_0x9a45('0x19')]]?members[_0x1ab361[_0x9a45('0x19')]][_0x9a45('0x1a')]:_0x1ab361[_0x9a45('0x19')]),_0x1ab361);utils[_0x9a45('0x5')](util['format'](_0x9a45('0x1b'),members[_0x1ab361[_0x9a45('0x19')]]?members[_0x1ab361['device']]['uniqueid']:_0x1ab361['device'],_0x1ab361[_0x9a45('0x1c')],_0x1ab361['device']));switch(_0x1ab361[_0x9a45('0x1c')]){case _0x9a45('0x1d'):case _0x9a45('0x1e'):if(!startsWith(exclude,_0x1ab361[_0x9a45('0x19')])){members[_0x1ab361['device']]={'channel':'voice','interface':_0x1ab361['device'],'type':'TALKING','enterAt':utils[_0x9a45('0x1f')](),'role':_0x9a45('0x20')};}break;case _0x9a45('0x21'):if(!_[_0x9a45('0x22')](members[_0x1ab361[_0x9a45('0x19')]])){members[_0x1ab361[_0x9a45('0x19')]][_0x9a45('0x23')]=utils[_0x9a45('0x1f')]();members[_0x1ab361[_0x9a45('0x19')]][_0x9a45('0x24')]=utils[_0x9a45('0x25')](members[_0x1ab361[_0x9a45('0x19')]]['exitAt'],members[_0x1ab361[_0x9a45('0x19')]][_0x9a45('0x26')]);if(members[_0x1ab361['device']][_0x9a45('0x1a')]){writeDB(members[_0x1ab361[_0x9a45('0x19')]]);}}break;default:break;}}catch(_0x583d4c){utils[_0x9a45('0x14')](util['format'](_0x9a45('0x27'),members[_0x1ab361[_0x9a45('0x19')]]?members[_0x1ab361[_0x9a45('0x19')]][_0x9a45('0x1a')]:_0x1ab361[_0x9a45('0x19')]),_0x583d4c);}};exports[_0x9a45('0x28')]=function(_0x636b3a){try{if(!_['isNil'](members[_0x636b3a[_0x9a45('0xa')]])){utils['debug'](util[_0x9a45('0x6')](_0x9a45('0x29'),_0x636b3a[_0x9a45('0x1a')]),_0x636b3a);utils[_0x9a45('0x5')](util[_0x9a45('0x6')](_0x9a45('0x2a'),_0x636b3a['uniqueid'],_0x636b3a[_0x9a45('0xa')],_0x636b3a['queue']));members[_0x636b3a[_0x9a45('0xa')]]=_['assign'](members[_0x636b3a[_0x9a45('0xa')]],{'data4':_0x636b3a[_0x9a45('0x2b')],'uniqueid':_0x636b3a[_0x9a45('0x1a')]});}}catch(_0x5b5eba){utils[_0x9a45('0x14')](util['format'](_0x9a45('0x29'),_0x636b3a[_0x9a45('0x1a')]),_0x5b5eba);}};exports['cdr']=function(_0x5bd2ae){try{utils[_0x9a45('0x18')](util[_0x9a45('0x6')](_0x9a45('0x2c'),_0x5bd2ae[_0x9a45('0x1a')]),_0x5bd2ae);if(_0x5bd2ae[_0x9a45('0x2d')]){var _0x199e18=_0x5bd2ae['channel'][_0x9a45('0x2e')]('-')[0x0];if(!_[_0x9a45('0x22')](members[_0x199e18])){members[_0x199e18]=_[_0x9a45('0x2f')](members[_0x199e18],{'data1':members[_0x199e18][_0x9a45('0x30')]||_0x5bd2ae['type'],'data2':members[_0x199e18][_0x9a45('0x8')]||_0x5bd2ae[_0x9a45('0x31')],'data3':members[_0x199e18][_0x9a45('0x32')]||_0x5bd2ae[_0x9a45('0x33')],'uniqueid':members[_0x199e18][_0x9a45('0x1a')]||_0x5bd2ae[_0x9a45('0x1a')]});utils['info'](util[_0x9a45('0x6')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x5bd2ae['uniqueid'],members[_0x199e18][_0x9a45('0x30')],members[_0x199e18][_0x9a45('0x8')],members[_0x199e18]['data3']));if(members[_0x199e18][_0x9a45('0x23')]){writeDB(members[_0x199e18]);}}}if(_0x5bd2ae[_0x9a45('0x34')]){var _0x5914fd=_0x5bd2ae[_0x9a45('0x34')][_0x9a45('0x2e')]('-')[0x0];if(!_[_0x9a45('0x22')](members[_0x5914fd])){members[_0x5914fd]=_['assign'](members[_0x5914fd],{'data1':members[_0x5914fd][_0x9a45('0x30')]||_0x5bd2ae[_0x9a45('0x9')],'data2':members[_0x5914fd][_0x9a45('0x8')]||_0x5bd2ae['source'],'data3':members[_0x5914fd][_0x9a45('0x32')]||_0x5bd2ae[_0x9a45('0x33')],'uniqueid':members[_0x5914fd][_0x9a45('0x1a')]||_0x5bd2ae[_0x9a45('0x1a')]});utils['info'](util[_0x9a45('0x6')]('[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s',_0x5bd2ae['uniqueid'],members[_0x5914fd][_0x9a45('0x30')],members[_0x5914fd][_0x9a45('0x8')],members[_0x5914fd]['data3']));if(members[_0x5914fd][_0x9a45('0x23')]){writeDB(members[_0x5914fd]);}}}}catch(_0x42b8e2){utils[_0x9a45('0x14')](util[_0x9a45('0x6')](_0x9a45('0x2c'),_0x5bd2ae['uniqueid']),_0x42b8e2);}};
\ No newline at end of file
+var _0xa0aa=['Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','channel','data2','membername','type','then','internal','request','getUserByName','split','catch','error','[%s][members][writeDB]','some','devicestatechange','debug','[%s][members][devicestatechange]','device','state','voice','TALKING','agent','NOT_INUSE','isNil','exitAt','diffTime','enterAt','queue','assign','[%s][members][agentcomplete]','cdr','[%s][members][cdr]','data1','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','lodash','util','Local/_attended@transfer'];(function(_0x2e5d4f,_0x2c2f38){var _0x59efd9=function(_0x507bbc){while(--_0x507bbc){_0x2e5d4f['push'](_0x2e5d4f['shift']());}};_0x59efd9(++_0x2c2f38);}(_0xa0aa,0x19b));var _0xaa0a=function(_0x227a97,_0x494547){_0x227a97=_0x227a97-0x0;var _0x18c325=_0xa0aa[_0x227a97];return _0x18c325;};'use strict';var _=require(_0xaa0a('0x0'));var util=require(_0xaa0a('0x1'));var utils=require('./utils');var members={};var exclude=[_0xaa0a('0x2'),_0xaa0a('0x3')];function writeDB(_0x76dfdc){utils[_0xaa0a('0x4')](util[_0xaa0a('0x5')](_0xaa0a('0x6'),_0x76dfdc[_0xaa0a('0x7')],_0x76dfdc[_0xaa0a('0x8')],_0x76dfdc[_0xaa0a('0x9')],_0x76dfdc[_0xaa0a('0xa')],_0x76dfdc[_0xaa0a('0xb')],_0x76dfdc[_0xaa0a('0xc')]));if(_0x76dfdc[_0xaa0a('0x8')]){utils['getUserByInterface'](_0x76dfdc[_0xaa0a('0x8')])[_0xaa0a('0xd')](function(_0x361a28){if(_0x361a28){_0x76dfdc[_0xaa0a('0xb')]=_0x361a28['name'];_0x76dfdc[_0xaa0a('0xe')]=_0x361a28[_0xaa0a('0xe')];utils[_0xaa0a('0xf')]('CreateMemberReport',_0x76dfdc);}else{utils[_0xaa0a('0x10')](_0x76dfdc[_0xaa0a('0x8')][_0xaa0a('0x11')]('/')[0x1])[_0xaa0a('0xd')](function(_0x43b90a){if(_0x43b90a){_0x76dfdc[_0xaa0a('0xb')]=_0x43b90a['name'];_0x76dfdc[_0xaa0a('0xe')]=_0x43b90a[_0xaa0a('0xe')];utils['request']('CreateMemberReport',_0x76dfdc);}});}})[_0xaa0a('0x12')](function(_0x51710d){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x14'),_0x76dfdc[_0xaa0a('0x7')]),_0x51710d);});}delete members[_0x76dfdc[_0xaa0a('0x8')]];}function startsWith(_0x58ef83,_0x323b10){return _[_0xaa0a('0x15')](_0x58ef83,function(_0x5b760e){return _['startsWith'](_0x323b10,_0x5b760e);});}exports[_0xaa0a('0x16')]=function(_0x439af3){try{utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')](_0xaa0a('0x18'),members[_0x439af3['device']]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')]),_0x439af3);utils['info'](util['format']('[%s][members][devicestatechange]\x20state:%s\x20interface:%s',members[_0x439af3[_0xaa0a('0x19')]]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')],_0x439af3['state'],_0x439af3[_0xaa0a('0x19')]));switch(_0x439af3[_0xaa0a('0x1a')]){case'INUSE':case'BUSY':if(!startsWith(exclude,_0x439af3['device'])){members[_0x439af3[_0xaa0a('0x19')]]={'channel':_0xaa0a('0x1b'),'interface':_0x439af3['device'],'type':_0xaa0a('0x1c'),'enterAt':utils['now'](),'role':_0xaa0a('0x1d')};}break;case _0xaa0a('0x1e'):if(!_[_0xaa0a('0x1f')](members[_0x439af3[_0xaa0a('0x19')]])){members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x20')]=utils['now']();members[_0x439af3[_0xaa0a('0x19')]]['duration']=utils[_0xaa0a('0x21')](members[_0x439af3[_0xaa0a('0x19')]]['exitAt'],members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x22')]);if(members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]){writeDB(members[_0x439af3['device']]);}}break;default:break;}}catch(_0x104ce1){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x18'),members[_0x439af3[_0xaa0a('0x19')]]?members[_0x439af3[_0xaa0a('0x19')]][_0xaa0a('0x7')]:_0x439af3[_0xaa0a('0x19')]),_0x104ce1);}};exports['agentcomplete']=function(_0x3ea031){try{if(!_[_0xaa0a('0x1f')](members[_0x3ea031[_0xaa0a('0x8')]])){utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')]('[%s][members][agentcomplete]',_0x3ea031[_0xaa0a('0x7')]),_0x3ea031);utils['info'](util[_0xaa0a('0x5')]('[%s][members][agentcomplete]\x20interface:%s\x20queue:%s',_0x3ea031[_0xaa0a('0x7')],_0x3ea031[_0xaa0a('0x8')],_0x3ea031[_0xaa0a('0x23')]));members[_0x3ea031[_0xaa0a('0x8')]]=_[_0xaa0a('0x24')](members[_0x3ea031[_0xaa0a('0x8')]],{'data4':_0x3ea031[_0xaa0a('0x23')],'uniqueid':_0x3ea031[_0xaa0a('0x7')]});}}catch(_0x5b43d1){utils[_0xaa0a('0x13')](util['format'](_0xaa0a('0x25'),_0x3ea031[_0xaa0a('0x7')]),_0x5b43d1);}};exports[_0xaa0a('0x26')]=function(_0x2228ed){try{utils[_0xaa0a('0x17')](util[_0xaa0a('0x5')](_0xaa0a('0x27'),_0x2228ed[_0xaa0a('0x7')]),_0x2228ed);if(_0x2228ed[_0xaa0a('0x9')]){var _0x316b85=_0x2228ed[_0xaa0a('0x9')][_0xaa0a('0x11')]('-')[0x0];if(!_[_0xaa0a('0x1f')](members[_0x316b85])){members[_0x316b85]=_[_0xaa0a('0x24')](members[_0x316b85],{'data1':members[_0x316b85][_0xaa0a('0x28')]||_0x2228ed['type'],'data2':members[_0x316b85][_0xaa0a('0xa')]||_0x2228ed[_0xaa0a('0x29')],'data3':members[_0x316b85][_0xaa0a('0x2a')]||_0x2228ed[_0xaa0a('0x2b')],'uniqueid':members[_0x316b85][_0xaa0a('0x7')]||_0x2228ed[_0xaa0a('0x7')]});utils[_0xaa0a('0x4')](util['format'](_0xaa0a('0x2c'),_0x2228ed[_0xaa0a('0x7')],members[_0x316b85][_0xaa0a('0x28')],members[_0x316b85][_0xaa0a('0xa')],members[_0x316b85][_0xaa0a('0x2a')]));if(members[_0x316b85][_0xaa0a('0x20')]){writeDB(members[_0x316b85]);}}}if(_0x2228ed[_0xaa0a('0x2d')]){var _0xd45b23=_0x2228ed[_0xaa0a('0x2d')][_0xaa0a('0x11')]('-')[0x0];if(!_[_0xaa0a('0x1f')](members[_0xd45b23])){members[_0xd45b23]=_[_0xaa0a('0x24')](members[_0xd45b23],{'data1':members[_0xd45b23]['data1']||_0x2228ed['type'],'data2':members[_0xd45b23][_0xaa0a('0xa')]||_0x2228ed[_0xaa0a('0x29')],'data3':members[_0xd45b23][_0xaa0a('0x2a')]||_0x2228ed['destination'],'uniqueid':members[_0xd45b23]['uniqueid']||_0x2228ed[_0xaa0a('0x7')]});utils['info'](util[_0xaa0a('0x5')](_0xaa0a('0x2c'),_0x2228ed['uniqueid'],members[_0xd45b23]['data1'],members[_0xd45b23][_0xaa0a('0xa')],members[_0xd45b23][_0xaa0a('0x2a')]));if(members[_0xd45b23][_0xaa0a('0x20')]){writeDB(members[_0xd45b23]);}}}}catch(_0x415fcc){utils[_0xaa0a('0x13')](util[_0xaa0a('0x5')](_0xaa0a('0x27'),_0x2228ed[_0xaa0a('0x7')]),_0x415fcc);}};
\ No newline at end of file
index 5e4aa60..4fe5d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x835a=['queuecallerjoinAt','count','connectedlinenum','connectedlinename','agentconnect','[%s][queues][agentconnect]','membername','destaccountcode','assigned','agentcomplete','[%s][queues][agentcomplete]','reason','transfer','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','transfereeuniqueid','BLIND','transferexten','extension','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','transfertype','ATTENDED','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','secondtransfereruniqueid','secondtransfererexten','ATTENDEDTRANSFER','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','musiconholdstart','[%s][queues][musiconholdstart]','musiconholdstartAt','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','util','./utils','info','format','uniqueid','channel','queue','lastAssignedTo','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','debug','[%s][queues][queuecallerjoin]','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','hangup','isNil','[%s][queues][hangup]','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','queuecallerenterreason','varset','[%s][queues][varset]','variable','value','toUpperCase','CONTINUE','queuecallerabandon','queuecallerabandonAt','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','queuecallerexitAt','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleaveAt','holdtime','diffTime'];(function(_0x196f89,_0xbec963){var _0x48cc99=function(_0x1e8e23){while(--_0x1e8e23){_0x196f89['push'](_0x196f89['shift']());}};_0x48cc99(++_0xbec963);}(_0x835a,0x99));var _0xa835=function(_0x1201e6,_0x11cc43){_0x1201e6=_0x1201e6-0x0;var _0x1fa676=_0x835a[_0x1201e6];return _0x1fa676;};'use strict';var _=require('lodash');var util=require(_0xa835('0x0'));var utils=require(_0xa835('0x1'));var queues={};function writeDB(_0x3fb733){utils[_0xa835('0x2')](util[_0xa835('0x3')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x3fb733[_0xa835('0x4')],_0x3fb733[_0xa835('0x5')],_0x3fb733[_0xa835('0x6')],_0x3fb733[_0xa835('0x7')],_0x3fb733[_0xa835('0x8')],_0x3fb733[_0xa835('0x9')],_0x3fb733[_0xa835('0xa')]));if(_0x3fb733['queue']){utils[_0xa835('0xb')](_0x3fb733['queue'])[_0xa835('0xc')](function(_0x179bf7){if(_0x179bf7){_0x3fb733[_0xa835('0xd')]=_0x179bf7[_0xa835('0xd')];}utils[_0xa835('0xe')](_0xa835('0xf'),_0x3fb733);});}else{utils['request'](_0xa835('0xf'),_0x3fb733);}if(_0x3fb733['transfereduniqueid']){delete queues[_0x3fb733[_0xa835('0x10')]];}else{delete queues[_0x3fb733[_0xa835('0x4')]];}}exports['queuecallerjoin']=function(_0x388496){try{utils[_0xa835('0x11')](util['format'](_0xa835('0x12'),_0x388496[_0xa835('0x4')]),_0x388496);utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x13'),_0x388496[_0xa835('0x4')],_0x388496[_0xa835('0x6')],_0x388496[_0xa835('0x14')]));queues[_0x388496['uniqueid']]=_[_0xa835('0x15')](_0x388496,{'originalposition':_0x388496[_0xa835('0x14')],'queuecallerjoinAt':utils[_0xa835('0x16')](),'mohtime':0x0});}catch(_0x392098){utils[_0xa835('0x17')](util['format'](_0xa835('0x12'),_0x388496[_0xa835('0x4')]),_0x392098);}};exports[_0xa835('0x18')]=function(_0x53ab54){try{if(!_[_0xa835('0x19')](queues[_0x53ab54['uniqueid']])){utils[_0xa835('0x11')](util[_0xa835('0x3')](_0xa835('0x1a'),_0x53ab54[_0xa835('0x4')]),_0x53ab54);if(queues[_0x53ab54['uniqueid']]['queuecallerleaveAt']){if(!queues[_0x53ab54[_0xa835('0x4')]]['queuecallerabandon']&&!queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0x1b')]){queues[_0x53ab54[_0xa835('0x4')]]['queuecallercomplete']=!![];queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0x1c')]=utils[_0xa835('0x16')]();queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0xa')]=_0xa835('0x1d');}utils['info'](util[_0xa835('0x3')](_0xa835('0x1e'),_0x53ab54[_0xa835('0x4')],queues[_0x53ab54[_0xa835('0x4')]]['name'],queues[_0x53ab54['uniqueid']][_0xa835('0xa')]));writeDB(queues[_0x53ab54[_0xa835('0x4')]]);}else if(queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0x10')]){utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x1f'),_0x53ab54[_0xa835('0x4')],queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0x20')],queues[_0x53ab54['uniqueid']]['transfereduniqueid']));queues[queues[_0x53ab54[_0xa835('0x4')]]['transfereduniqueid']]=queues[_0x53ab54[_0xa835('0x4')]];queues[queues[_0x53ab54[_0xa835('0x4')]][_0xa835('0x10')]][_0xa835('0x21')]=0x2;delete queues[_0x53ab54[_0xa835('0x4')]];}}}catch(_0x302640){utils[_0xa835('0x17')](util[_0xa835('0x3')]('[%s][queues][hangup]',_0x53ab54['uniqueid']),_0x302640);}};exports[_0xa835('0x22')]=function(_0x7a277b){try{utils[_0xa835('0x11')](util[_0xa835('0x3')](_0xa835('0x23'),_0x7a277b[_0xa835('0x4')]),_0x7a277b);if(!_['isNil'](_0x7a277b[_0xa835('0x24')]['queuestatus'])&&_0x7a277b[_0xa835('0x25')][_0xa835('0x26')]()!==_0xa835('0x27')){if(!_[_0xa835('0x19')](queues[_0x7a277b['uniqueid']])){queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x28')]=![];queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x29')]=null;queues[_0x7a277b[_0xa835('0x4')]]['queuecallerexit']=!![];queues[_0x7a277b[_0xa835('0x4')]]['queuecallerexitAt']=utils[_0xa835('0x16')]();queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0xa')]=_0x7a277b[_0xa835('0x25')][_0xa835('0x26')]();utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x2a'),_0x7a277b[_0xa835('0x4')],queues[_0x7a277b['uniqueid']][_0xa835('0x20')],_0x7a277b[_0xa835('0x25')],queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0xa')]));writeDB(queues[_0x7a277b[_0xa835('0x4')]]);}}else if(!_['isNil'](_0x7a277b[_0xa835('0x24')][_0xa835('0x2b')])){if(!_[_0xa835('0x19')](queues[_0x7a277b['uniqueid']])&&!queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x28')]){queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x28')]=![];queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x29')]=null;queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x1b')]=!![];queues[_0x7a277b[_0xa835('0x4')]][_0xa835('0x2c')]=utils['now']();queues[_0x7a277b[_0xa835('0x4')]]['queuecallerexitreason']=_0xa835('0x2d');utils['info'](util[_0xa835('0x3')](_0xa835('0x2e'),_0x7a277b[_0xa835('0x4')],queues[_0x7a277b['uniqueid']][_0xa835('0x20')],_0x7a277b[_0xa835('0x25')],queues[_0x7a277b[_0xa835('0x4')]]['queuecallerexitreason']));}}}catch(_0x206b02){utils[_0xa835('0x17')](util[_0xa835('0x3')]('[%s][queues][varset]',_0x7a277b['uniqueid']),_0x206b02);}};exports[_0xa835('0x28')]=function(_0x2a4466){try{if(!_[_0xa835('0x19')](queues[_0x2a4466[_0xa835('0x4')]])){utils[_0xa835('0x11')](util[_0xa835('0x3')](_0xa835('0x2f'),_0x2a4466[_0xa835('0x4')]),_0x2a4466);queues[_0x2a4466['uniqueid']][_0xa835('0x1b')]=![];queues[_0x2a4466[_0xa835('0x4')]][_0xa835('0x2c')]=null;queues[_0x2a4466[_0xa835('0x4')]]['queuecallerabandon']=!![];queues[_0x2a4466['uniqueid']][_0xa835('0x29')]=utils[_0xa835('0x16')]();queues[_0x2a4466['uniqueid']][_0xa835('0xa')]='ABANDONED';utils['info'](util[_0xa835('0x3')](_0xa835('0x30'),_0x2a4466['uniqueid'],queues[_0x2a4466['uniqueid']]['name'],queues[_0x2a4466[_0xa835('0x4')]][_0xa835('0xa')]));}}catch(_0x15dba3){utils[_0xa835('0x17')](util['format'](_0xa835('0x2f'),_0x2a4466[_0xa835('0x4')]),_0x15dba3);}};exports[_0xa835('0x31')]=function(_0x14e121){try{if(!_[_0xa835('0x19')](queues[_0x14e121['uniqueid']])){utils[_0xa835('0x11')](util[_0xa835('0x3')](_0xa835('0x32'),_0x14e121[_0xa835('0x4')]),_0x14e121);utils[_0xa835('0x2')](util['format'](_0xa835('0x33'),_0x14e121[_0xa835('0x4')],queues[_0x14e121[_0xa835('0x4')]][_0xa835('0x20')],_0x14e121['connectedlinenum'],_0x14e121['connectedlinename']));queues[_0x14e121[_0xa835('0x4')]]['queuecallerleave']=!![];queues[_0x14e121[_0xa835('0x4')]][_0xa835('0x34')]=utils['now']();queues[_0x14e121['uniqueid']][_0xa835('0x35')]=utils[_0xa835('0x36')](queues[_0x14e121[_0xa835('0x4')]][_0xa835('0x34')],queues[_0x14e121[_0xa835('0x4')]][_0xa835('0x37')]);queues[_0x14e121['uniqueid']][_0xa835('0x14')]=_0x14e121[_0xa835('0x14')];queues[_0x14e121[_0xa835('0x4')]][_0xa835('0x38')]=_0x14e121['count'];queues[_0x14e121[_0xa835('0x4')]]['connectedlinenum']=_0x14e121[_0xa835('0x39')];queues[_0x14e121['uniqueid']]['connectedlinename']=_0x14e121[_0xa835('0x3a')];}}catch(_0x508cae){utils[_0xa835('0x17')](util[_0xa835('0x3')](_0xa835('0x32'),_0x14e121[_0xa835('0x4')]),_0x508cae);}};exports[_0xa835('0x3b')]=function(_0x11284c){try{if(!_['isNil'](queues[_0x11284c[_0xa835('0x4')]])){utils['debug'](util[_0xa835('0x3')](_0xa835('0x3c'),_0x11284c[_0xa835('0x4')]),_0x11284c);utils[_0xa835('0x2')](util[_0xa835('0x3')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x11284c[_0xa835('0x4')],queues[_0x11284c[_0xa835('0x4')]][_0xa835('0x20')],_0x11284c[_0xa835('0x3d')],_0x11284c[_0xa835('0x3e')]));queues[_0x11284c['uniqueid']][_0xa835('0x28')]=![];queues[_0x11284c['uniqueid']]['queuecallerabandon']=![];queues[_0x11284c[_0xa835('0x4')]]['queuecallerabandonAt']=null;queues[_0x11284c['uniqueid']][_0xa835('0x1b')]=![];queues[_0x11284c[_0xa835('0x4')]][_0xa835('0xa')]=null;queues[_0x11284c[_0xa835('0x4')]][_0xa835('0x2c')]=null;queues[_0x11284c[_0xa835('0x4')]][_0xa835('0x3f')]=!![];queues[_0x11284c[_0xa835('0x4')]]['accountcode']=_0x11284c[_0xa835('0x3e')];queues[_0x11284c[_0xa835('0x4')]][_0xa835('0x7')]=_0x11284c['membername'];}}catch(_0x452b50){utils[_0xa835('0x17')](util[_0xa835('0x3')]('[%s][queues][agentconnect]',_0x11284c['uniqueid']),_0x452b50);}};exports[_0xa835('0x40')]=function(_0x574833){try{if(!_[_0xa835('0x19')](queues[_0x574833[_0xa835('0x4')]])){if(queues[_0x574833[_0xa835('0x4')]][_0xa835('0x34')]){utils['debug'](util[_0xa835('0x3')](_0xa835('0x41'),_0x574833[_0xa835('0x4')]),_0x574833);queues[_0x574833[_0xa835('0x4')]]['queuecallerabandon']=![];queues[_0x574833[_0xa835('0x4')]]['queuecallerabandon']=![];queues[_0x574833[_0xa835('0x4')]][_0xa835('0x29')]=null;queues[_0x574833[_0xa835('0x4')]][_0xa835('0x1b')]=![];queues[_0x574833[_0xa835('0x4')]][_0xa835('0x2c')]=null;queues[_0x574833[_0xa835('0x4')]][_0xa835('0x3f')]=!![];queues[_0x574833[_0xa835('0x4')]]['lastAssignedTo']=_0x574833[_0xa835('0x3d')];queues[_0x574833[_0xa835('0x4')]]['queuecallercomplete']=!![];queues[_0x574833[_0xa835('0x4')]][_0xa835('0x1c')]=utils['now']();if(_0x574833[_0xa835('0x42')]=='transfer'){if(!queues[_0x574833['uniqueid']][_0xa835('0x43')]){queues[_0x574833[_0xa835('0x4')]]['queuecallerexitreason']='TRANSFER';}}else{queues[_0x574833[_0xa835('0x4')]][_0xa835('0xa')]=_0xa835('0x44')+_0x574833[_0xa835('0x42')]['toUpperCase']();}utils[_0xa835('0x2')](util['format'](_0xa835('0x45'),_0x574833[_0xa835('0x4')],queues[_0x574833[_0xa835('0x4')]]['name'],_0x574833[_0xa835('0x3d')],queues[_0x574833[_0xa835('0x4')]]['queuecallerexitreason']));writeDB(queues[_0x574833[_0xa835('0x4')]]);}}}catch(_0x2e50be){utils[_0xa835('0x17')](util[_0xa835('0x3')](_0xa835('0x41'),_0x574833[_0xa835('0x4')]),_0x2e50be);}};exports['blindtransfer']=function(_0x3bf112){try{if(!_[_0xa835('0x19')](queues[_0x3bf112[_0xa835('0x46')]])){utils[_0xa835('0x11')](util[_0xa835('0x3')]('[%s][queues][blindtransfer]',_0x3bf112['uniqueid']),_0x3bf112);queues[_0x3bf112[_0xa835('0x46')]]['transfer']=!![];queues[_0x3bf112[_0xa835('0x46')]]['transfertype']=_0xa835('0x47');queues[_0x3bf112[_0xa835('0x46')]][_0xa835('0x48')]=_0x3bf112[_0xa835('0x49')];queues[_0x3bf112[_0xa835('0x46')]][_0xa835('0x4a')]=_0x3bf112[_0xa835('0x46')];queues[_0x3bf112[_0xa835('0x46')]][_0xa835('0xa')]=_0xa835('0x4b');utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x4c'),_0x3bf112[_0xa835('0x4')],queues[_0x3bf112['transfereeuniqueid']]['name'],_0x3bf112['transfereeuniqueid'],_0x3bf112[_0xa835('0x49')]));}}catch(_0x4ed3f8){utils[_0xa835('0x17')](util[_0xa835('0x3')]('[%s][queues][blindtransfer]',_0x3bf112[_0xa835('0x4')]),_0x4ed3f8);}};exports[_0xa835('0x4d')]=function(_0x4902a1){try{utils[_0xa835('0x11')](util[_0xa835('0x3')](_0xa835('0x4e'),_0x4902a1[_0xa835('0x4f')]),_0x4902a1);if(_0x4902a1[_0xa835('0x4f')]==_0x4902a1[_0xa835('0x50')]){if(!_[_0xa835('0x19')](queues[_0x4902a1[_0xa835('0x51')]])){utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x52'),_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x51')]]['name'],_0x4902a1[_0xa835('0x53')]));queues[_0x4902a1[_0xa835('0x51')]][_0xa835('0x43')]=!![];queues[_0x4902a1['secondtransfererlinkedid']][_0xa835('0x54')]=_0xa835('0x55');queues[_0x4902a1['secondtransfererlinkedid']][_0xa835('0x48')]=_0x4902a1[_0xa835('0x53')];queues[_0x4902a1['secondtransfererlinkedid']][_0xa835('0x4a')]=_0x4902a1[_0xa835('0x4f')];queues[_0x4902a1[_0xa835('0x51')]][_0xa835('0xa')]='ATTENDEDTRANSFER';}if(!_[_0xa835('0x19')](queues[_0x4902a1['origtransfererlinkedid']])){if(_0x4902a1[_0xa835('0x56')]&&queues[_0x4902a1[_0xa835('0x56')]]){queues[_0x4902a1[_0xa835('0x56')]][_0xa835('0x21')]=0x1;queues[_0x4902a1['transfereeuniqueid']]=_[_0xa835('0x57')](queues[_0x4902a1[_0xa835('0x56')]]);queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x10')]=_0x4902a1[_0xa835('0x58')];queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x21')]=0x2;queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x8')]=queues[_0x4902a1['secondtransfererlinkedid']][_0xa835('0x8')];queues[_0x4902a1[_0xa835('0x46')]][_0xa835('0x59')]=queues[_0x4902a1[_0xa835('0x51')]][_0xa835('0x59')];queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x37')]=utils[_0xa835('0x16')]();queues[_0x4902a1[_0xa835('0x46')]][_0xa835('0x34')]=utils[_0xa835('0x16')]();queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x35')]=0x0;queues[_0x4902a1['transfereeuniqueid']][_0xa835('0x5a')]=0x0;utils[_0xa835('0x2')](util[_0xa835('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x46')]][_0xa835('0x20')],queues[_0x4902a1[_0xa835('0x46')]][_0xa835('0x8')],queues[_0x4902a1[_0xa835('0x46')]]['calleridname']));}else{utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x5b'),_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x20')],_0x4902a1[_0xa835('0x51')]));queues[_0x4902a1[_0xa835('0x50')]]['transfereduniqueid']=_0x4902a1['secondtransfererlinkedid'];}}}else if(_0x4902a1['secondtransfereruniqueid']==_0x4902a1['secondtransfererlinkedid']){if(!_[_0xa835('0x19')](queues[_0x4902a1['origtransfererlinkedid']])){utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x5c'),_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x20')],_0x4902a1[_0xa835('0x5d')],_0x4902a1[_0xa835('0x5e')]));queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x43')]=!![];queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x54')]=_0xa835('0x55');queues[_0x4902a1['origtransfererlinkedid']][_0xa835('0x48')]=_0x4902a1[_0xa835('0x5e')];queues[_0x4902a1['origtransfererlinkedid']][_0xa835('0x4a')]=_0x4902a1[_0xa835('0x5d')];queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0xa')]=_0xa835('0x5f');}if(!_[_0xa835('0x19')](queues[_0x4902a1[_0xa835('0x51')]])){if(_0x4902a1[_0xa835('0x60')]&&queues[_0x4902a1['transfertargetlinkedid']]){queues[_0x4902a1['transfertargetlinkedid']]['queuecallerenterreason']=0x1;queues[_0x4902a1[_0xa835('0x58')]]=_['clone'](queues[_0x4902a1['transfertargetlinkedid']]);queues[_0x4902a1[_0xa835('0x58')]][_0xa835('0x10')]=_0x4902a1['transfertargetuniqueid'];queues[_0x4902a1[_0xa835('0x58')]][_0xa835('0x21')]=0x2;queues[_0x4902a1[_0xa835('0x58')]][_0xa835('0x8')]=queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x8')];queues[_0x4902a1[_0xa835('0x58')]]['calleridname']=queues[_0x4902a1[_0xa835('0x50')]][_0xa835('0x59')];queues[_0x4902a1['transfertargetuniqueid']]['queuecallerjoinAt']=utils['now']();queues[_0x4902a1['transfertargetuniqueid']][_0xa835('0x34')]=utils[_0xa835('0x16')]();queues[_0x4902a1[_0xa835('0x58')]][_0xa835('0x35')]=0x0;queues[_0x4902a1['transfertargetuniqueid']][_0xa835('0x5a')]=0x0;utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x61'),_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x58')]]['name'],queues[_0x4902a1[_0xa835('0x58')]]['transfereduniqueid'],queues[_0x4902a1[_0xa835('0x58')]][_0xa835('0x8')],queues[_0x4902a1[_0xa835('0x58')]]['calleridname']));}else{utils[_0xa835('0x2')](util[_0xa835('0x3')](_0xa835('0x5b'),_0x4902a1[_0xa835('0x4f')],queues[_0x4902a1[_0xa835('0x51')]]['name'],_0x4902a1[_0xa835('0x50')]));queues[_0x4902a1['secondtransfererlinkedid']]['transfereduniqueid']=_0x4902a1[_0xa835('0x50')];}}}}catch(_0x4ca169){utils['error'](util[_0xa835('0x3')](_0xa835('0x4e'),_0x4902a1[_0xa835('0x4f')]),_0x4ca169);}};exports[_0xa835('0x62')]=function(_0x4f9ace){try{if(!_[_0xa835('0x19')](queues[_0x4f9ace[_0xa835('0x4')]])){utils['debug'](util[_0xa835('0x3')](_0xa835('0x63'),_0x4f9ace['uniqueid']),_0x4f9ace);queues[_0x4f9ace[_0xa835('0x4')]][_0xa835('0x64')]=utils[_0xa835('0x16')]();utils[_0xa835('0x2')](util[_0xa835('0x3')]('[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s',_0x4f9ace[_0xa835('0x4')],queues[_0x4f9ace[_0xa835('0x4')]]['name'],queues[_0x4f9ace['uniqueid']]['musiconholdstartAt']));}}catch(_0x590198){utils[_0xa835('0x17')](util['format'](_0xa835('0x63'),_0x4f9ace[_0xa835('0x4')]),_0x590198);}};exports[_0xa835('0x65')]=function(_0xfe2db1){try{if(!_[_0xa835('0x19')](queues[_0xfe2db1[_0xa835('0x4')]])){if(!_['isNil'](queues[_0xfe2db1[_0xa835('0x4')]][_0xa835('0x64')])){utils['debug'](util[_0xa835('0x3')]('[%s][queues][musiconholdstop]',_0xfe2db1['uniqueid']),_0xfe2db1);queues[_0xfe2db1[_0xa835('0x4')]][_0xa835('0x5a')]+=utils[_0xa835('0x36')](utils[_0xa835('0x16')](),queues[_0xfe2db1[_0xa835('0x4')]][_0xa835('0x64')]);utils['info'](util['format'](_0xa835('0x66'),_0xfe2db1['uniqueid'],queues[_0xfe2db1['uniqueid']][_0xa835('0x20')],queues[_0xfe2db1[_0xa835('0x4')]]['mohtime']));delete queues[_0xfe2db1[_0xa835('0x4')]]['musiconholdstartAt'];}}}catch(_0x3faba2){utils[_0xa835('0x17')](util[_0xa835('0x3')](_0xa835('0x67'),_0xfe2db1[_0xa835('0x4')]),_0x3faba2);}};
\ No newline at end of file
+var _0xd40f=['transfereduniqueid','queuecallerjoin','info','assign','position','now','error','[%s][queues][queuecallerjoin]','hangup','isNil','debug','queuecallerabandon','queuecallerexit','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','name','queuecallerenterreason','[%s][queues][hangup]','varset','[%s][queues][varset]','variable','queuestatus','value','queuecallerabandonAt','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','EXITWITHKEY','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','queuecallerleaveAt','holdtime','diffTime','queuecallerjoinAt','count','connectedlinename','agentconnect','membername','destaccountcode','assigned','lastAssignedTo','[%s][queues][agentconnect]','agentcomplete','queuecallercomplete','transfer','COMPLETEDBY','reason','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','[%s][queues][agentcomplete]','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','origtransfererexten','secondtransfererlinkedid','transferexten','ATTENDEDTRANSFER','transfereelinkedid','clone','transfertargetuniqueid','calleridname','mohtime','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','ATTENDED','transfertargetlinkedid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','util','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','uniqueid','channel','queue','calleridnum','accountcode','queuecallerexitreason','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport'];(function(_0x116f1c,_0x5be34b){var _0x5be838=function(_0x2ef5b4){while(--_0x2ef5b4){_0x116f1c['push'](_0x116f1c['shift']());}};_0x5be838(++_0x5be34b);}(_0xd40f,0x1e6));var _0xfd40=function(_0x435fed,_0x4009ec){_0x435fed=_0x435fed-0x0;var _0x2c6ab9=_0xd40f[_0x435fed];return _0x2c6ab9;};'use strict';var _=require('lodash');var util=require(_0xfd40('0x0'));var utils=require('./utils');var queues={};function writeDB(_0x223d70){utils['info'](util[_0xfd40('0x1')](_0xfd40('0x2'),_0x223d70[_0xfd40('0x3')],_0x223d70[_0xfd40('0x4')],_0x223d70[_0xfd40('0x5')],_0x223d70['lastAssignedTo'],_0x223d70[_0xfd40('0x6')],_0x223d70[_0xfd40('0x7')],_0x223d70[_0xfd40('0x8')]));if(_0x223d70[_0xfd40('0x5')]){utils[_0xfd40('0x9')](_0x223d70[_0xfd40('0x5')])[_0xfd40('0xa')](function(_0xe81431){if(_0xe81431){_0x223d70[_0xfd40('0xb')]=_0xe81431[_0xfd40('0xb')];}utils[_0xfd40('0xc')](_0xfd40('0xd'),_0x223d70);});}else{utils['request'](_0xfd40('0xd'),_0x223d70);}if(_0x223d70[_0xfd40('0xe')]){delete queues[_0x223d70[_0xfd40('0xe')]];}else{delete queues[_0x223d70[_0xfd40('0x3')]];}}exports[_0xfd40('0xf')]=function(_0x5c9540){try{utils['debug'](util[_0xfd40('0x1')]('[%s][queues][queuecallerjoin]',_0x5c9540[_0xfd40('0x3')]),_0x5c9540);utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0x5c9540[_0xfd40('0x3')],_0x5c9540[_0xfd40('0x5')],_0x5c9540['position']));queues[_0x5c9540[_0xfd40('0x3')]]=_[_0xfd40('0x11')](_0x5c9540,{'originalposition':_0x5c9540[_0xfd40('0x12')],'queuecallerjoinAt':utils[_0xfd40('0x13')](),'mohtime':0x0});}catch(_0x210886){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x15'),_0x5c9540[_0xfd40('0x3')]),_0x210886);}};exports[_0xfd40('0x16')]=function(_0xa5d653){try{if(!_[_0xfd40('0x17')](queues[_0xa5d653['uniqueid']])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][hangup]',_0xa5d653[_0xfd40('0x3')]),_0xa5d653);if(queues[_0xa5d653[_0xfd40('0x3')]]['queuecallerleaveAt']){if(!queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x19')]&&!queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1a')]){queues[_0xa5d653[_0xfd40('0x3')]]['queuecallercomplete']=!![];queues[_0xa5d653['uniqueid']]['queuecallercompleteAt']=utils[_0xfd40('0x13')]();queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x1b');}utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x1c'),_0xa5d653[_0xfd40('0x3')],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x8')]));writeDB(queues[_0xa5d653['uniqueid']]);}else if(queues[_0xa5d653[_0xfd40('0x3')]]['transfereduniqueid']){utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s',_0xa5d653['uniqueid'],queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0xa5d653[_0xfd40('0x3')]]['transfereduniqueid']));queues[queues[_0xa5d653['uniqueid']][_0xfd40('0xe')]]=queues[_0xa5d653[_0xfd40('0x3')]];queues[queues[_0xa5d653[_0xfd40('0x3')]][_0xfd40('0xe')]][_0xfd40('0x1e')]=0x2;delete queues[_0xa5d653[_0xfd40('0x3')]];}}}catch(_0x2f0391){utils[_0xfd40('0x14')](util['format'](_0xfd40('0x1f'),_0xa5d653[_0xfd40('0x3')]),_0x2f0391);}};exports[_0xfd40('0x20')]=function(_0xef5f9){try{utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x21'),_0xef5f9['uniqueid']),_0xef5f9);if(!_[_0xfd40('0x17')](_0xef5f9[_0xfd40('0x22')][_0xfd40('0x23')])&&_0xef5f9[_0xfd40('0x24')]['toUpperCase']()!=='CONTINUE'){if(!_[_0xfd40('0x17')](queues[_0xef5f9[_0xfd40('0x3')]])){queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0xef5f9['uniqueid']][_0xfd40('0x25')]=null;queues[_0xef5f9['uniqueid']]['queuecallerexit']=!![];queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x26')]=utils[_0xfd40('0x13')]();queues[_0xef5f9['uniqueid']][_0xfd40('0x8')]=_0xef5f9[_0xfd40('0x24')][_0xfd40('0x27')]();utils['info'](util['format'](_0xfd40('0x28'),_0xef5f9[_0xfd40('0x3')],queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1d')],_0xef5f9[_0xfd40('0x24')],queues[_0xef5f9['uniqueid']][_0xfd40('0x8')]));writeDB(queues[_0xef5f9[_0xfd40('0x3')]]);}}else if(!_[_0xfd40('0x17')](_0xef5f9[_0xfd40('0x22')]['queueposition'])){if(!_[_0xfd40('0x17')](queues[_0xef5f9['uniqueid']])&&!queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerabandon']){queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x25')]=null;queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1a')]=!![];queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerexitAt']=utils[_0xfd40('0x13')]();queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x29');utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x2a'),_0xef5f9[_0xfd40('0x3')],queues[_0xef5f9[_0xfd40('0x3')]][_0xfd40('0x1d')],_0xef5f9['value'],queues[_0xef5f9[_0xfd40('0x3')]]['queuecallerexitreason']));}}}catch(_0x16f68a){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x21'),_0xef5f9['uniqueid']),_0x16f68a);}};exports[_0xfd40('0x19')]=function(_0x19faec){try{if(!_[_0xfd40('0x17')](queues[_0x19faec[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x2b'),_0x19faec[_0xfd40('0x3')]),_0x19faec);queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x1a')]=![];queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x26')]=null;queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x19')]=!![];queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x25')]=utils[_0xfd40('0x13')]();queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x8')]='ABANDONED';utils['info'](util[_0xfd40('0x1')]('[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s',_0x19faec[_0xfd40('0x3')],queues[_0x19faec[_0xfd40('0x3')]][_0xfd40('0x1d')],queues[_0x19faec[_0xfd40('0x3')]]['queuecallerexitreason']));}}catch(_0x6785a3){utils['error'](util[_0xfd40('0x1')](_0xfd40('0x2b'),_0x19faec[_0xfd40('0x3')]),_0x6785a3);}};exports[_0xfd40('0x2c')]=function(_0x5003ee){try{if(!_[_0xfd40('0x17')](queues[_0x5003ee[_0xfd40('0x3')]])){utils['debug'](util[_0xfd40('0x1')]('[%s][queues][queuecallerleave]',_0x5003ee[_0xfd40('0x3')]),_0x5003ee);utils[_0xfd40('0x10')](util['format'](_0xfd40('0x2d'),_0x5003ee['uniqueid'],queues[_0x5003ee['uniqueid']][_0xfd40('0x1d')],_0x5003ee[_0xfd40('0x2e')],_0x5003ee['connectedlinename']));queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2c')]=!![];queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2f')]=utils[_0xfd40('0x13')]();queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x30')]=utils[_0xfd40('0x31')](queues[_0x5003ee['uniqueid']]['queuecallerleaveAt'],queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x32')]);queues[_0x5003ee[_0xfd40('0x3')]]['position']=_0x5003ee['position'];queues[_0x5003ee['uniqueid']][_0xfd40('0x33')]=_0x5003ee[_0xfd40('0x33')];queues[_0x5003ee[_0xfd40('0x3')]][_0xfd40('0x2e')]=_0x5003ee[_0xfd40('0x2e')];queues[_0x5003ee['uniqueid']][_0xfd40('0x34')]=_0x5003ee['connectedlinename'];}}catch(_0x2cffdd){utils[_0xfd40('0x14')](util[_0xfd40('0x1')]('[%s][queues][queuecallerleave]',_0x5003ee['uniqueid']),_0x2cffdd);}};exports[_0xfd40('0x35')]=function(_0x261825){try{if(!_[_0xfd40('0x17')](queues[_0x261825[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][agentconnect]',_0x261825['uniqueid']),_0x261825);utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s',_0x261825['uniqueid'],queues[_0x261825['uniqueid']][_0xfd40('0x1d')],_0x261825[_0xfd40('0x36')],_0x261825[_0xfd40('0x37')]));queues[_0x261825[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0x261825[_0xfd40('0x3')]]['queuecallerabandon']=![];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x25')]=null;queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x1a')]=![];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x8')]=null;queues[_0x261825['uniqueid']][_0xfd40('0x26')]=null;queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x38')]=!![];queues[_0x261825['uniqueid']][_0xfd40('0x7')]=_0x261825[_0xfd40('0x37')];queues[_0x261825[_0xfd40('0x3')]][_0xfd40('0x39')]=_0x261825[_0xfd40('0x36')];}}catch(_0x25b38a){utils[_0xfd40('0x14')](util['format'](_0xfd40('0x3a'),_0x261825[_0xfd40('0x3')]),_0x25b38a);}};exports[_0xfd40('0x3b')]=function(_0x1fa3eb){try{if(!_['isNil'](queues[_0x1fa3eb[_0xfd40('0x3')]])){if(queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x2f')]){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][agentcomplete]',_0x1fa3eb[_0xfd40('0x3')]),_0x1fa3eb);queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x19')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallerabandonAt']=null;queues[_0x1fa3eb['uniqueid']][_0xfd40('0x1a')]=![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallerexitAt']=null;queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x38')]=!![];queues[_0x1fa3eb['uniqueid']]['lastAssignedTo']=_0x1fa3eb[_0xfd40('0x36')];queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x3c')]=!![];queues[_0x1fa3eb[_0xfd40('0x3')]]['queuecallercompleteAt']=utils['now']();if(_0x1fa3eb['reason']=='transfer'){if(!queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x3d')]){queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]='TRANSFER';}}else{queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]=_0xfd40('0x3e')+_0x1fa3eb[_0xfd40('0x3f')][_0xfd40('0x27')]();}utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x40'),_0x1fa3eb['uniqueid'],queues[_0x1fa3eb[_0xfd40('0x3')]]['name'],_0x1fa3eb[_0xfd40('0x36')],queues[_0x1fa3eb[_0xfd40('0x3')]][_0xfd40('0x8')]));writeDB(queues[_0x1fa3eb[_0xfd40('0x3')]]);}}}catch(_0x3892cd){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x41'),_0x1fa3eb[_0xfd40('0x3')]),_0x3892cd);}};exports[_0xfd40('0x42')]=function(_0x38d4bf){try{if(!_[_0xfd40('0x17')](queues[_0x38d4bf[_0xfd40('0x43')]])){utils[_0xfd40('0x18')](util['format'](_0xfd40('0x44'),_0x38d4bf[_0xfd40('0x3')]),_0x38d4bf);queues[_0x38d4bf['transfereeuniqueid']]['transfer']=!![];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x45')]=_0xfd40('0x46');queues[_0x38d4bf[_0xfd40('0x43')]]['transferexten']=_0x38d4bf['extension'];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x47')]=_0x38d4bf['transfereeuniqueid'];queues[_0x38d4bf[_0xfd40('0x43')]][_0xfd40('0x8')]=_0xfd40('0x48');utils['info'](util[_0xfd40('0x1')](_0xfd40('0x49'),_0x38d4bf[_0xfd40('0x3')],queues[_0x38d4bf[_0xfd40('0x43')]]['name'],_0x38d4bf[_0xfd40('0x43')],_0x38d4bf[_0xfd40('0x4a')]));}}catch(_0x29fc11){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x44'),_0x38d4bf[_0xfd40('0x3')]),_0x29fc11);}};exports[_0xfd40('0x4b')]=function(_0x42c682){try{utils['debug'](util[_0xfd40('0x1')](_0xfd40('0x4c'),_0x42c682[_0xfd40('0x4d')]),_0x42c682);if(_0x42c682['origtransfereruniqueid']==_0x42c682[_0xfd40('0x4e')]){if(!_[_0xfd40('0x17')](queues[_0x42c682['secondtransfererlinkedid']])){utils[_0xfd40('0x10')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682['secondtransfererlinkedid']][_0xfd40('0x1d')],_0x42c682[_0xfd40('0x4f')]));queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x3d')]=!![];queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x45')]='ATTENDED';queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x51')]=_0x42c682['origtransfererexten'];queues[_0x42c682['secondtransfererlinkedid']]['transferuniqueid']=_0x42c682[_0xfd40('0x4d')];queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x8')]=_0xfd40('0x52');}if(!_['isNil'](queues[_0x42c682[_0xfd40('0x4e')]])){if(_0x42c682['transfereelinkedid']&&queues[_0x42c682[_0xfd40('0x53')]]){queues[_0x42c682[_0xfd40('0x53')]][_0xfd40('0x1e')]=0x1;queues[_0x42c682['transfereeuniqueid']]=_[_0xfd40('0x54')](queues[_0x42c682['transfereelinkedid']]);queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x55')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x1e')]=0x2;queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x6')]=queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x6')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x56')]=queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x56')];queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x32')]=utils['now']();queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x2f')]=utils[_0xfd40('0x13')]();queues[_0x42c682[_0xfd40('0x43')]]['holdtime']=0x0;queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x57')]=0x0;utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x1d')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x6')],queues[_0x42c682[_0xfd40('0x43')]][_0xfd40('0x56')]));}else{utils[_0xfd40('0x10')](util['format'](_0xfd40('0x58'),_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x4e')]]['name'],_0x42c682[_0xfd40('0x50')]));queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x50')];}}}else if(_0x42c682[_0xfd40('0x59')]==_0x42c682[_0xfd40('0x50')]){if(!_[_0xfd40('0x17')](queues[_0x42c682[_0xfd40('0x4e')]])){utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682['origtransfererlinkedid']]['name'],_0x42c682[_0xfd40('0x59')],_0x42c682[_0xfd40('0x5a')]));queues[_0x42c682['origtransfererlinkedid']][_0xfd40('0x3d')]=!![];queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x45')]=_0xfd40('0x5b');queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x51')]=_0x42c682[_0xfd40('0x5a')];queues[_0x42c682['origtransfererlinkedid']][_0xfd40('0x47')]=_0x42c682[_0xfd40('0x59')];queues[_0x42c682[_0xfd40('0x4e')]]['queuecallerexitreason']=_0xfd40('0x52');}if(!_[_0xfd40('0x17')](queues[_0x42c682[_0xfd40('0x50')]])){if(_0x42c682[_0xfd40('0x5c')]&&queues[_0x42c682['transfertargetlinkedid']]){queues[_0x42c682['transfertargetlinkedid']][_0xfd40('0x1e')]=0x1;queues[_0x42c682[_0xfd40('0x55')]]=_['clone'](queues[_0x42c682[_0xfd40('0x5c')]]);queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0xe')]=_0x42c682['transfertargetuniqueid'];queues[_0x42c682[_0xfd40('0x55')]]['queuecallerenterreason']=0x2;queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x6')]=queues[_0x42c682[_0xfd40('0x4e')]][_0xfd40('0x6')];queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0x56')]=queues[_0x42c682[_0xfd40('0x4e')]]['calleridname'];queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x32')]=utils[_0xfd40('0x13')]();queues[_0x42c682[_0xfd40('0x55')]]['queuecallerleaveAt']=utils[_0xfd40('0x13')]();queues[_0x42c682['transfertargetuniqueid']]['holdtime']=0x0;queues[_0x42c682['transfertargetuniqueid']][_0xfd40('0x57')]=0x0;utils[_0xfd40('0x10')](util[_0xfd40('0x1')](_0xfd40('0x5d'),_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x1d')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0xe')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x6')],queues[_0x42c682[_0xfd40('0x55')]][_0xfd40('0x56')]));}else{utils[_0xfd40('0x10')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s',_0x42c682[_0xfd40('0x4d')],queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0x1d')],_0x42c682[_0xfd40('0x4e')]));queues[_0x42c682[_0xfd40('0x50')]][_0xfd40('0xe')]=_0x42c682[_0xfd40('0x4e')];}}}}catch(_0xc5970d){utils[_0xfd40('0x14')](util[_0xfd40('0x1')]('[%s][queues][attendedtransfer]',_0x42c682[_0xfd40('0x4d')]),_0xc5970d);}};exports['musiconholdstart']=function(_0x152774){try{if(!_[_0xfd40('0x17')](queues[_0x152774[_0xfd40('0x3')]])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')](_0xfd40('0x5e'),_0x152774['uniqueid']),_0x152774);queues[_0x152774[_0xfd40('0x3')]][_0xfd40('0x5f')]=utils[_0xfd40('0x13')]();utils['info'](util[_0xfd40('0x1')](_0xfd40('0x60'),_0x152774[_0xfd40('0x3')],queues[_0x152774['uniqueid']][_0xfd40('0x1d')],queues[_0x152774[_0xfd40('0x3')]][_0xfd40('0x5f')]));}}catch(_0x535fe0){utils[_0xfd40('0x14')](util[_0xfd40('0x1')](_0xfd40('0x5e'),_0x152774[_0xfd40('0x3')]),_0x535fe0);}};exports[_0xfd40('0x61')]=function(_0x270fe0){try{if(!_['isNil'](queues[_0x270fe0[_0xfd40('0x3')]])){if(!_[_0xfd40('0x17')](queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')])){utils[_0xfd40('0x18')](util[_0xfd40('0x1')]('[%s][queues][musiconholdstop]',_0x270fe0[_0xfd40('0x3')]),_0x270fe0);queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x57')]+=utils[_0xfd40('0x31')](utils[_0xfd40('0x13')](),queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')]);utils[_0xfd40('0x10')](util['format'](_0xfd40('0x62'),_0x270fe0['uniqueid'],queues[_0x270fe0[_0xfd40('0x3')]]['name'],queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x57')]));delete queues[_0x270fe0[_0xfd40('0x3')]][_0xfd40('0x5f')];}}}catch(_0x190ee1){utils['error'](util['format'](_0xfd40('0x63'),_0x270fe0[_0xfd40('0x3')]),_0x190ee1);}};
\ No newline at end of file
index 59bf3d1..ace92d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc6=['name','UserId','CreateVoiceRecording','request','newchannel','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','debug','[%s][recordings][newstate]','isNil','channelstate','transfer','varset','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','cause-txt','calleridname','connectedlinenum','connectedlinename','outbound','forEach','clone','newexten','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','toLowerCase','cdr','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','lodash','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then','membername'];(function(_0x54c65a,_0xa415d8){var _0x3a39ec=function(_0x35c0cf){while(--_0x35c0cf){_0x54c65a['push'](_0x54c65a['shift']());}};_0x3a39ec(++_0xa415d8);}(_0xdfc6,0x117));var _0x6dfc=function(_0x59cf63,_0x1094e7){_0x59cf63=_0x59cf63-0x0;var _0x3ad016=_0xdfc6[_0x59cf63];return _0x3ad016;};'use strict';var _=require(_0x6dfc('0x0'));var util=require('util');var utils=require(_0x6dfc('0x1'));var transfers=require(_0x6dfc('0x2'));var recordings={};function writeDB(_0x39c1cc){var _0x49f1a3;utils[_0x6dfc('0x3')](util[_0x6dfc('0x4')](_0x6dfc('0x5'),_0x39c1cc[_0x6dfc('0x6')]));if(transfers['blinds'][_0x39c1cc['uniqueid']]){_0x49f1a3=_0x39c1cc['uniqueid'];_0x39c1cc[_0x6dfc('0x6')]=transfers[_0x6dfc('0x7')][_0x39c1cc[_0x6dfc('0x6')]][_0x6dfc('0x8')];}if(_0x39c1cc[_0x6dfc('0x9')]){utils[_0x6dfc('0xa')](_0x39c1cc[_0x6dfc('0x9')])[_0x6dfc('0xb')](function(_0x4468b0){if(_0x4468b0){_0x39c1cc[_0x6dfc('0xc')]=_0x4468b0[_0x6dfc('0xd')];_0x39c1cc[_0x6dfc('0xe')]=_0x4468b0['id'];}utils['request'](_0x6dfc('0xf'),_0x39c1cc);});}else{utils[_0x6dfc('0x10')]('CreateVoiceRecording',_0x39c1cc);}if(_0x49f1a3)delete transfers[_0x6dfc('0x7')][_0x49f1a3];}exports[_0x6dfc('0x11')]=function(_0x3269c5){try{utils['debug'](util[_0x6dfc('0x4')](_0x6dfc('0x12'),_0x3269c5[_0x6dfc('0x6')]),_0x3269c5);if(_0x3269c5[_0x6dfc('0x6')]==_0x3269c5[_0x6dfc('0x13')]){utils[_0x6dfc('0x3')](util[_0x6dfc('0x4')](_0x6dfc('0x14'),_0x3269c5['uniqueid'],_0x3269c5[_0x6dfc('0x15')],_0x3269c5[_0x6dfc('0x16')]));recordings[_0x3269c5['uniqueid']]={'uniqueid':_0x3269c5[_0x6dfc('0x6')],'accountcode':_0x3269c5['accountcode'],'exten':_0x3269c5['exten'],'context':_0x3269c5['context'],'channel':_0x3269c5[_0x6dfc('0x17')],'monitors':[]};}}catch(_0x3195c5){utils[_0x6dfc('0x18')](util[_0x6dfc('0x4')]('[%s][recordings][newchannel]',_0x3269c5[_0x6dfc('0x6')]),_0x3195c5);}};exports[_0x6dfc('0x19')]=function(_0x5be1a0){try{utils[_0x6dfc('0x1a')](util['format'](_0x6dfc('0x1b'),_0x5be1a0[_0x6dfc('0x6')]),_0x5be1a0);if(!_[_0x6dfc('0x1c')](recordings[_0x5be1a0[_0x6dfc('0x6')]])&&_0x5be1a0[_0x6dfc('0x1d')]==0x6){utils['info'](util[_0x6dfc('0x4')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x5be1a0[_0x6dfc('0x6')],_0x5be1a0['context'],_0x5be1a0[_0x6dfc('0x17')]));}else if(!_[_0x6dfc('0x1c')](recordings[_0x5be1a0[_0x6dfc('0x13')]])&&_0x5be1a0['channelstate']==0x6&&_0x5be1a0['context']!=_0x6dfc('0x1e')){utils[_0x6dfc('0x3')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x5be1a0[_0x6dfc('0x6')],_0x5be1a0[_0x6dfc('0x13')],_0x5be1a0[_0x6dfc('0x15')],_0x5be1a0['channel']));recordings[_0x5be1a0[_0x6dfc('0x13')]][_0x6dfc('0x9')]=_0x5be1a0[_0x6dfc('0x9')];}}catch(_0x2e4c26){utils['error'](util['format']('[%s][recordings][newstate]',_0x5be1a0[_0x6dfc('0x6')]),_0x2e4c26);}};exports[_0x6dfc('0x1f')]=function(_0x5af176){try{if(!_[_0x6dfc('0x1c')](_0x5af176[_0x6dfc('0x20')])&&!_[_0x6dfc('0x1c')](_0x5af176['variable'][_0x6dfc('0x21')])){utils['debug'](util[_0x6dfc('0x4')](_0x6dfc('0x22'),_0x5af176[_0x6dfc('0x6')]),_0x5af176);utils[_0x6dfc('0x3')](util[_0x6dfc('0x4')](_0x6dfc('0x23'),_0x5af176[_0x6dfc('0x6')],_0x5af176[_0x6dfc('0x20')],_0x5af176[_0x6dfc('0x24')]));if(_[_0x6dfc('0x25')](_0x5af176[_0x6dfc('0x24')],_0x6dfc('0x26'))){_0x5af176[_0x6dfc('0x24')]=_0x5af176[_0x6dfc('0x24')][_0x6dfc('0x27')]('.wav49',_0x6dfc('0x28'));}if(recordings[_0x5af176['linkedid']]){var _0x4b1405=_[_0x6dfc('0x29')](recordings[_0x5af176['linkedid']][_0x6dfc('0x2a')],{'value':_0x5af176[_0x6dfc('0x24')]});if(_['isNil'](_0x4b1405)){recordings[_0x5af176['linkedid']]['monitors'][_0x6dfc('0x2b')]({'value':_0x5af176['value']});}}}}catch(_0x205e8f){utils[_0x6dfc('0x18')](util['format'](_0x6dfc('0x22'),_0x5af176['uniqueid']),_0x205e8f);}};exports[_0x6dfc('0x2c')]=function(_0x12e30b){try{if(!_[_0x6dfc('0x1c')](recordings[_0x12e30b[_0x6dfc('0x6')]])){utils[_0x6dfc('0x1a')](util[_0x6dfc('0x4')](_0x6dfc('0x2d'),_0x12e30b[_0x6dfc('0x6')]),_0x12e30b);utils[_0x6dfc('0x3')](util['format'](_0x6dfc('0x2e'),_0x12e30b[_0x6dfc('0x6')],_0x12e30b[_0x6dfc('0x2f')],_0x12e30b['calleridname'],_0x12e30b[_0x6dfc('0x30')]));recordings[_0x12e30b['uniqueid']][_0x6dfc('0x2f')]=_0x12e30b[_0x6dfc('0x2f')];recordings[_0x12e30b['uniqueid']][_0x6dfc('0x31')]=_0x12e30b[_0x6dfc('0x31')];recordings[_0x12e30b[_0x6dfc('0x6')]]['connectedlinenum']=_0x12e30b[_0x6dfc('0x32')];recordings[_0x12e30b[_0x6dfc('0x6')]][_0x6dfc('0x33')]=_0x12e30b[_0x6dfc('0x33')];if(recordings[_0x12e30b[_0x6dfc('0x6')]]['type']==_0x6dfc('0x34')&&recordings[_0x12e30b[_0x6dfc('0x6')]][_0x6dfc('0x9')]){recordings[_0x12e30b['uniqueid']][_0x6dfc('0x32')]=recordings[_0x12e30b[_0x6dfc('0x6')]]['accountcode'];recordings[_0x12e30b['uniqueid']][_0x6dfc('0x33')]='';}recordings[_0x12e30b[_0x6dfc('0x6')]][_0x6dfc('0x2a')][_0x6dfc('0x35')](function(_0x567946){var _0x4b116a=_[_0x6dfc('0x36')](recordings[_0x12e30b['uniqueid']]);_0x4b116a[_0x6dfc('0x24')]=_0x567946[_0x6dfc('0x24')];writeDB(_0x4b116a);});delete recordings[_0x12e30b[_0x6dfc('0x6')]];}}catch(_0x1a59f1){utils[_0x6dfc('0x18')](util['format']('[%s][recordings][hangup]',_0x12e30b[_0x6dfc('0x6')]),_0x1a59f1);}};exports[_0x6dfc('0x37')]=function(_0x5c057a){try{if(!_['isNil'](recordings[_0x5c057a[_0x6dfc('0x6')]])){utils['debug'](util[_0x6dfc('0x4')]('[%s][recordings][newexten]',_0x5c057a[_0x6dfc('0x6')]),_0x5c057a);utils[_0x6dfc('0x3')](util[_0x6dfc('0x4')](_0x6dfc('0x38'),_0x5c057a[_0x6dfc('0x6')],_0x5c057a['application'],_0x5c057a[_0x6dfc('0x39')]));if(_0x5c057a['application'][_0x6dfc('0x3a')]()=='set'&&_['startsWith'](_0x5c057a[_0x6dfc('0x39')][_0x6dfc('0x3a')](),_0x6dfc('0x3b'))){var _0x3a22e8=_0x5c057a['appdata']['split']('=');var _0x15bcd7=_0x3a22e8[0x0][_0x6dfc('0x3c')](_0x3a22e8[0x0]['lastIndexOf']('(')+0x1,_0x3a22e8[0x0][_0x6dfc('0x3d')](')'));var _0x2791e7=_0x3a22e8[0x1];recordings[_0x5c057a[_0x6dfc('0x6')]][_0x15bcd7]=_0x2791e7;}}}catch(_0x27c115){utils[_0x6dfc('0x18')](util[_0x6dfc('0x4')]('[%s][recordings][newexten]',_0x5c057a[_0x6dfc('0x6')]),_0x27c115);}};exports[_0x6dfc('0x3e')]=function(_0x4c1bd7){try{if(!_[_0x6dfc('0x1c')](recordings[_0x4c1bd7[_0x6dfc('0x6')]])){utils[_0x6dfc('0x1a')](util[_0x6dfc('0x4')](_0x6dfc('0x3f'),_0x4c1bd7[_0x6dfc('0x6')]),_0x4c1bd7);utils['info'](util[_0x6dfc('0x4')]('[%s][recordings][queuecallerjoin]\x20queue:%s',_0x4c1bd7['uniqueid'],_0x4c1bd7['queue']));recordings[_0x4c1bd7[_0x6dfc('0x6')]][_0x6dfc('0x40')]=_0x4c1bd7['queue'];}}catch(_0x44a638){utils['error'](util[_0x6dfc('0x4')](_0x6dfc('0x3f'),_0x4c1bd7['uniqueid']),_0x44a638);}};exports[_0x6dfc('0x41')]=function(_0x5d220a){try{utils['debug'](util[_0x6dfc('0x4')](_0x6dfc('0x42'),_0x5d220a[_0x6dfc('0x6')]),_0x5d220a);utils[_0x6dfc('0x3')](util[_0x6dfc('0x4')](_0x6dfc('0x43'),_0x5d220a[_0x6dfc('0x6')],_0x5d220a['transferercalleridnum'],_0x5d220a[_0x6dfc('0x44')],_0x5d220a[_0x6dfc('0x45')],_0x5d220a[_0x6dfc('0x46')]));if(recordings[_0x5d220a[_0x6dfc('0x47')]]&&transfers['blinds'][_0x5d220a[_0x6dfc('0x47')]]){transfers[_0x6dfc('0x7')][_0x5d220a[_0x6dfc('0x47')]][_0x6dfc('0x48')]=!![];}}catch(_0x458b65){utils[_0x6dfc('0x18')](util['format'](_0x6dfc('0x42'),_0x5d220a[_0x6dfc('0x6')]),_0x458b65);}};
\ No newline at end of file
+var _0x8441=['toLowerCase','set','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','blindtransfer','transferercalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','lodash','./transfers.controller','info','[%s][recordings][writeDB]','blinds','uniqueid','accountcode','getUserByInternal','membername','name','UserId','request','CreateVoiceRecording','newchannel','debug','format','[%s][recordings][newchannel]','linkedid','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','[%s][recordings][newstate]','isNil','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','transfer','variable','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s','calleridnum','calleridname','connectedlinenum','connectedlinename','type','outbound','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application'];(function(_0x14437d,_0x28a300){var _0x5a31d3=function(_0x17ba77){while(--_0x17ba77){_0x14437d['push'](_0x14437d['shift']());}};_0x5a31d3(++_0x28a300);}(_0x8441,0x96));var _0x1844=function(_0x3bb831,_0x2d7780){_0x3bb831=_0x3bb831-0x0;var _0x403b42=_0x8441[_0x3bb831];return _0x403b42;};'use strict';var _=require(_0x1844('0x0'));var util=require('util');var utils=require('./utils');var transfers=require(_0x1844('0x1'));var recordings={};function writeDB(_0xfdc215){var _0xc843ed;utils[_0x1844('0x2')](util['format'](_0x1844('0x3'),_0xfdc215['uniqueid']));if(transfers[_0x1844('0x4')][_0xfdc215[_0x1844('0x5')]]){_0xc843ed=_0xfdc215[_0x1844('0x5')];_0xfdc215[_0x1844('0x5')]=transfers[_0x1844('0x4')][_0xfdc215['uniqueid']]['transfereeuniqueid'];}if(_0xfdc215[_0x1844('0x6')]){utils[_0x1844('0x7')](_0xfdc215[_0x1844('0x6')])['then'](function(_0x3a879e){if(_0x3a879e){_0xfdc215[_0x1844('0x8')]=_0x3a879e[_0x1844('0x9')];_0xfdc215[_0x1844('0xa')]=_0x3a879e['id'];}utils[_0x1844('0xb')](_0x1844('0xc'),_0xfdc215);});}else{utils['request']('CreateVoiceRecording',_0xfdc215);}if(_0xc843ed)delete transfers['blinds'][_0xc843ed];}exports[_0x1844('0xd')]=function(_0x57dc0a){try{utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x10'),_0x57dc0a[_0x1844('0x5')]),_0x57dc0a);if(_0x57dc0a['uniqueid']==_0x57dc0a[_0x1844('0x11')]){utils[_0x1844('0x2')](util['format'](_0x1844('0x12'),_0x57dc0a[_0x1844('0x5')],_0x57dc0a[_0x1844('0x13')],_0x57dc0a[_0x1844('0x14')]));recordings[_0x57dc0a[_0x1844('0x5')]]={'uniqueid':_0x57dc0a[_0x1844('0x5')],'accountcode':_0x57dc0a['accountcode'],'exten':_0x57dc0a[_0x1844('0x14')],'context':_0x57dc0a[_0x1844('0x13')],'channel':_0x57dc0a[_0x1844('0x15')],'monitors':[]};}}catch(_0x4f727d){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x10'),_0x57dc0a[_0x1844('0x5')]),_0x4f727d);}};exports['newstate']=function(_0x3086af){try{utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x17'),_0x3086af[_0x1844('0x5')]),_0x3086af);if(!_[_0x1844('0x18')](recordings[_0x3086af['uniqueid']])&&_0x3086af[_0x1844('0x19')]==0x6){utils[_0x1844('0x2')](util['format'](_0x1844('0x1a'),_0x3086af[_0x1844('0x5')],_0x3086af['context'],_0x3086af[_0x1844('0x15')]));}else if(!_['isNil'](recordings[_0x3086af['linkedid']])&&_0x3086af[_0x1844('0x19')]==0x6&&_0x3086af[_0x1844('0x13')]!=_0x1844('0x1b')){utils[_0x1844('0x2')](util['format']('[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s',_0x3086af['uniqueid'],_0x3086af[_0x1844('0x11')],_0x3086af[_0x1844('0x13')],_0x3086af[_0x1844('0x15')]));recordings[_0x3086af['linkedid']]['accountcode']=_0x3086af['accountcode'];}}catch(_0x238a0c){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x17'),_0x3086af[_0x1844('0x5')]),_0x238a0c);}};exports['varset']=function(_0xab2205){try{if(!_[_0x1844('0x18')](_0xab2205[_0x1844('0x1c')])&&!_['isNil'](_0xab2205['variable']['mixmonitor_filename'])){utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x1d'),_0xab2205['uniqueid']),_0xab2205);utils[_0x1844('0x2')](util[_0x1844('0xf')](_0x1844('0x1e'),_0xab2205[_0x1844('0x5')],_0xab2205['variable'],_0xab2205[_0x1844('0x1f')]));if(_[_0x1844('0x20')](_0xab2205[_0x1844('0x1f')],_0x1844('0x21'))){_0xab2205[_0x1844('0x1f')]=_0xab2205[_0x1844('0x1f')][_0x1844('0x22')](_0x1844('0x21'),'.WAV');}if(recordings[_0xab2205[_0x1844('0x11')]]){var _0x1bae70=_[_0x1844('0x23')](recordings[_0xab2205[_0x1844('0x11')]][_0x1844('0x24')],{'value':_0xab2205[_0x1844('0x1f')]});if(_[_0x1844('0x18')](_0x1bae70)){recordings[_0xab2205['linkedid']][_0x1844('0x24')][_0x1844('0x25')]({'value':_0xab2205[_0x1844('0x1f')]});}}}}catch(_0x1e87df){utils[_0x1844('0x16')](util['format']('[%s][recordings][varset]',_0xab2205[_0x1844('0x5')]),_0x1e87df);}};exports[_0x1844('0x26')]=function(_0x3d2808){try{if(!_[_0x1844('0x18')](recordings[_0x3d2808['uniqueid']])){utils[_0x1844('0xe')](util[_0x1844('0xf')]('[%s][recordings][hangup]',_0x3d2808[_0x1844('0x5')]),_0x3d2808);utils['info'](util['format'](_0x1844('0x27'),_0x3d2808[_0x1844('0x5')],_0x3d2808[_0x1844('0x28')],_0x3d2808[_0x1844('0x29')],_0x3d2808['cause-txt']));recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x28')]=_0x3d2808[_0x1844('0x28')];recordings[_0x3d2808[_0x1844('0x5')]]['calleridname']=_0x3d2808[_0x1844('0x29')];recordings[_0x3d2808['uniqueid']][_0x1844('0x2a')]=_0x3d2808[_0x1844('0x2a')];recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2b')]=_0x3d2808[_0x1844('0x2b')];if(recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2c')]==_0x1844('0x2d')&&recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x6')]){recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2a')]=recordings[_0x3d2808['uniqueid']][_0x1844('0x6')];recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x2b')]='';}recordings[_0x3d2808[_0x1844('0x5')]][_0x1844('0x24')]['forEach'](function(_0x2cba29){var _0x20a046=_['clone'](recordings[_0x3d2808['uniqueid']]);_0x20a046[_0x1844('0x1f')]=_0x2cba29[_0x1844('0x1f')];writeDB(_0x20a046);});delete recordings[_0x3d2808[_0x1844('0x5')]];}}catch(_0xb5ea75){utils[_0x1844('0x16')](util['format']('[%s][recordings][hangup]',_0x3d2808[_0x1844('0x5')]),_0xb5ea75);}};exports[_0x1844('0x2e')]=function(_0x15fb8d){try{if(!_[_0x1844('0x18')](recordings[_0x15fb8d[_0x1844('0x5')]])){utils[_0x1844('0xe')](util[_0x1844('0xf')](_0x1844('0x2f'),_0x15fb8d[_0x1844('0x5')]),_0x15fb8d);utils['info'](util['format'](_0x1844('0x30'),_0x15fb8d['uniqueid'],_0x15fb8d['application'],_0x15fb8d[_0x1844('0x31')]));if(_0x15fb8d[_0x1844('0x32')][_0x1844('0x33')]()==_0x1844('0x34')&&_['startsWith'](_0x15fb8d['appdata'][_0x1844('0x33')](),_0x1844('0x35'))){var _0x1c504f=_0x15fb8d[_0x1844('0x31')][_0x1844('0x36')]('=');var _0x569244=_0x1c504f[0x0][_0x1844('0x37')](_0x1c504f[0x0][_0x1844('0x38')]('(')+0x1,_0x1c504f[0x0][_0x1844('0x38')](')'));var _0x25a020=_0x1c504f[0x1];recordings[_0x15fb8d[_0x1844('0x5')]][_0x569244]=_0x25a020;}}}catch(_0x546fe0){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x2f'),_0x15fb8d['uniqueid']),_0x546fe0);}};exports[_0x1844('0x39')]=function(_0x4c2bd0){try{if(!_[_0x1844('0x18')](recordings[_0x4c2bd0['uniqueid']])){utils[_0x1844('0xe')](util['format']('[%s][recordings][queuecallerjoin]',_0x4c2bd0['uniqueid']),_0x4c2bd0);utils[_0x1844('0x2')](util['format'](_0x1844('0x3a'),_0x4c2bd0[_0x1844('0x5')],_0x4c2bd0[_0x1844('0x3b')]));recordings[_0x4c2bd0[_0x1844('0x5')]][_0x1844('0x3b')]=_0x4c2bd0['queue'];}}catch(_0x4ee84e){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x3c'),_0x4c2bd0[_0x1844('0x5')]),_0x4ee84e);}};exports[_0x1844('0x3d')]=function(_0x14d20b){try{utils[_0x1844('0xe')](util[_0x1844('0xf')]('[%s][recordings][blindtransfer]',_0x14d20b[_0x1844('0x5')]),_0x14d20b);utils[_0x1844('0x2')](util['format']('[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x14d20b[_0x1844('0x5')],_0x14d20b[_0x1844('0x3e')],_0x14d20b['transferercalleridname'],_0x14d20b['transfereecalleridnum'],_0x14d20b[_0x1844('0x3f')]));if(recordings[_0x14d20b[_0x1844('0x40')]]&&transfers[_0x1844('0x4')][_0x14d20b[_0x1844('0x40')]]){transfers[_0x1844('0x4')][_0x14d20b['transfereruniqueid']][_0x1844('0x41')]=!![];}}catch(_0x3d3586){utils[_0x1844('0x16')](util[_0x1844('0xf')](_0x1844('0x42'),_0x14d20b[_0x1844('0x5')]),_0x3d3586);}};
\ No newline at end of file
index 62819ad..3874b39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e6b=['secondtransferercontext','origtransfererlinkedid','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetexten','transfertargetlinkedid','lodash','info','format','[%s][transfers][writeDB]\x20type:%s','type','attended','origtransfereruniqueid','uniqueid','blindtransfer','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','transfereruniqueid','error','debug','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode'];(function(_0x57cb4f,_0x541f57){var _0x29bb45=function(_0x462bee){while(--_0x462bee){_0x57cb4f['push'](_0x57cb4f['shift']());}};_0x29bb45(++_0x541f57);}(_0x2e6b,0xe9));var _0xb2e6=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x2e6b[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xb2e6('0x0'));var util=require('util');var utils=require('./utils');function writeDB(_0x566494){utils[_0xb2e6('0x1')](util[_0xb2e6('0x2')](_0xb2e6('0x3'),_0x566494[_0xb2e6('0x4')]===_0xb2e6('0x5')?_0x566494[_0xb2e6('0x6')]:_0x566494[_0xb2e6('0x7')],_0x566494[_0xb2e6('0x4')]));utils['request']('CreateVoiceTransferReport',_0x566494);}exports['blinds']={};exports[_0xb2e6('0x8')]=function(_0x12c9ae){try{utils['debug'](util['format']('[%s][transfers][blindtransfer]',_0x12c9ae[_0xb2e6('0x7')]),_0x12c9ae);utils[_0xb2e6('0x1')](util[_0xb2e6('0x2')](_0xb2e6('0x9'),_0x12c9ae[_0xb2e6('0x7')],_0x12c9ae[_0xb2e6('0xa')],_0x12c9ae[_0xb2e6('0xb')],_0x12c9ae[_0xb2e6('0xc')],_0x12c9ae['transfereecalleridname']));_0x12c9ae[_0xb2e6('0x4')]=_0xb2e6('0xd');exports['blinds'][_0x12c9ae[_0xb2e6('0xe')]]=_0x12c9ae;writeDB(_0x12c9ae);}catch(_0x355c3b){utils[_0xb2e6('0xf')](util[_0xb2e6('0x2')]('[%s][transfers][blindtransfer]',_0x12c9ae[_0xb2e6('0x7')]),_0x355c3b);}};exports['attendedtransfer']=function(_0x7c6d03){try{utils[_0xb2e6('0x10')](util[_0xb2e6('0x2')]('[%s][transfers][attendedtransfer]',_0x7c6d03[_0xb2e6('0x6')]),_0x7c6d03);utils[_0xb2e6('0x1')](util[_0xb2e6('0x2')](_0xb2e6('0x11'),_0x7c6d03[_0xb2e6('0x6')],_0x7c6d03[_0xb2e6('0x12')],_0x7c6d03['origtransferercalleridname'],_0x7c6d03['transfertargetcalleridnum'],_0x7c6d03[_0xb2e6('0x13')]));_0x7c6d03=_[_0xb2e6('0x14')](_0x7c6d03,{'transfererchannel':_0x7c6d03[_0xb2e6('0x15')],'transferercalleridnum':_0x7c6d03['origtransferercalleridnum'],'transferercalleridname':_0x7c6d03[_0xb2e6('0x16')],'transfererconnectedlinenum':_0x7c6d03[_0xb2e6('0x17')],'transfererconnectedlinename':_0x7c6d03[_0xb2e6('0x18')],'transfereraccountcode':_0x7c6d03[_0xb2e6('0x19')],'transferercontext':_0x7c6d03[_0xb2e6('0x1a')],'transfererexten':_0x7c6d03['secondtransfererexten'],'transfererlinkedid':_0x7c6d03[_0xb2e6('0x1b')],'context':_0x7c6d03['origtransferercontext'],'extension':_0x7c6d03[_0xb2e6('0x1c')],'type':'attended'});if(_[_0xb2e6('0x1d')](_0x7c6d03[_0xb2e6('0x1e')])){_0x7c6d03=_[_0xb2e6('0x14')](_0x7c6d03,{'transfereechannel':_0x7c6d03[_0xb2e6('0x1f')],'transfereecalleridnum':_0x7c6d03['transfertargetcalleridnum'],'transfereecalleridname':_0x7c6d03[_0xb2e6('0x13')],'transfereeconnectedlinenum':_0x7c6d03[_0xb2e6('0x20')],'transfereeconnectedlinename':_0x7c6d03[_0xb2e6('0x21')],'transfereeaccountcode':_0x7c6d03[_0xb2e6('0x22')],'transfereecontext':_0x7c6d03['transfertargetcontext'],'transfereeexten':_0x7c6d03[_0xb2e6('0x23')],'transfereelinkedid':_0x7c6d03[_0xb2e6('0x24')]});}writeDB(_0x7c6d03);}catch(_0x51d8c7){utils[_0xb2e6('0xf')](util['format']('[%s][transfers][attendedtransfer]',_0x7c6d03[_0xb2e6('0x6')]),_0x51d8c7);}};
\ No newline at end of file
+var _0x8872=['origtransferercontext','origtransfererexten','isNil','transfereechannel','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','./utils','info','format','[%s][transfers][writeDB]\x20type:%s','type','uniqueid','request','CreateVoiceTransferReport','blindtransfer','debug','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','blind','blinds','error','[%s][transfers][blindtransfer]','[%s][transfers][attendedtransfer]','origtransfereruniqueid','[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','assign','origtransfererchannel','origtransfereraccountcode','secondtransferercontext','secondtransfererexten'];(function(_0x352dc1,_0x18af1e){var _0x581c3f=function(_0x5d0804){while(--_0x5d0804){_0x352dc1['push'](_0x352dc1['shift']());}};_0x581c3f(++_0x18af1e);}(_0x8872,0x17c));var _0x2887=function(_0xcc45c,_0x61821f){_0xcc45c=_0xcc45c-0x0;var _0x29ec5f=_0x8872[_0xcc45c];return _0x29ec5f;};'use strict';var _=require('lodash');var util=require('util');var utils=require(_0x2887('0x0'));function writeDB(_0x33db92){utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0x3'),_0x33db92[_0x2887('0x4')]==='attended'?_0x33db92['origtransfereruniqueid']:_0x33db92[_0x2887('0x5')],_0x33db92[_0x2887('0x4')]));utils[_0x2887('0x6')](_0x2887('0x7'),_0x33db92);}exports['blinds']={};exports[_0x2887('0x8')]=function(_0x5b59ef){try{utils[_0x2887('0x9')](util[_0x2887('0x2')]('[%s][transfers][blindtransfer]',_0x5b59ef[_0x2887('0x5')]),_0x5b59ef);utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0xa'),_0x5b59ef[_0x2887('0x5')],_0x5b59ef[_0x2887('0xb')],_0x5b59ef[_0x2887('0xc')],_0x5b59ef[_0x2887('0xd')],_0x5b59ef['transfereecalleridname']));_0x5b59ef[_0x2887('0x4')]=_0x2887('0xe');exports[_0x2887('0xf')][_0x5b59ef['transfereruniqueid']]=_0x5b59ef;writeDB(_0x5b59ef);}catch(_0x34fc8d){utils[_0x2887('0x10')](util[_0x2887('0x2')](_0x2887('0x11'),_0x5b59ef['uniqueid']),_0x34fc8d);}};exports['attendedtransfer']=function(_0x56af34){try{utils[_0x2887('0x9')](util[_0x2887('0x2')](_0x2887('0x12'),_0x56af34[_0x2887('0x13')]),_0x56af34);utils[_0x2887('0x1')](util[_0x2887('0x2')](_0x2887('0x14'),_0x56af34[_0x2887('0x13')],_0x56af34[_0x2887('0x15')],_0x56af34[_0x2887('0x16')],_0x56af34[_0x2887('0x17')],_0x56af34[_0x2887('0x18')]));_0x56af34=_[_0x2887('0x19')](_0x56af34,{'transfererchannel':_0x56af34[_0x2887('0x1a')],'transferercalleridnum':_0x56af34[_0x2887('0x15')],'transferercalleridname':_0x56af34[_0x2887('0x16')],'transfererconnectedlinenum':_0x56af34['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x56af34['secondtransfererconnectedlinename'],'transfereraccountcode':_0x56af34[_0x2887('0x1b')],'transferercontext':_0x56af34[_0x2887('0x1c')],'transfererexten':_0x56af34[_0x2887('0x1d')],'transfererlinkedid':_0x56af34['origtransfererlinkedid'],'context':_0x56af34[_0x2887('0x1e')],'extension':_0x56af34[_0x2887('0x1f')],'type':'attended'});if(_[_0x2887('0x20')](_0x56af34[_0x2887('0x21')])){_0x56af34=_[_0x2887('0x19')](_0x56af34,{'transfereechannel':_0x56af34[_0x2887('0x22')],'transfereecalleridnum':_0x56af34[_0x2887('0x17')],'transfereecalleridname':_0x56af34['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x56af34[_0x2887('0x23')],'transfereeconnectedlinename':_0x56af34[_0x2887('0x24')],'transfereeaccountcode':_0x56af34[_0x2887('0x25')],'transfereecontext':_0x56af34[_0x2887('0x26')],'transfereeexten':_0x56af34[_0x2887('0x27')],'transfereelinkedid':_0x56af34[_0x2887('0x28')]});}writeDB(_0x56af34);}catch(_0x376f2a){utils[_0x2887('0x10')](util['format'](_0x2887('0x12'),_0x56af34[_0x2887('0x13')]),_0x376f2a);}};
\ No newline at end of file
index fdbb99d..81f52de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e6d=['jayson/promise','moment','util','client','http','../../config/logger','xdr','info','inspect','debug','error','request','then','catch','GetUser','internal','name','interface','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','found','notfound','[utils][getUserByInterface]','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','type','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s','add','seconds','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','diffTime','diff','sumTime','now','isAfter','isBefore','bluebird'];(function(_0xdb00bb,_0xcdcec4){var _0x247c9d=function(_0x328fd5){while(--_0x328fd5){_0xdb00bb['push'](_0xdb00bb['shift']());}};_0x247c9d(++_0xcdcec4);}(_0x2e6d,0x12b));var _0xd2e6=function(_0x4da096,_0x437cfc){_0x4da096=_0x4da096-0x0;var _0x56ef86=_0x2e6d[_0x4da096];return _0x56ef86;};'use strict';var BPromise=require(_0xd2e6('0x0'));var jayson=require(_0xd2e6('0x1'));var moment=require(_0xd2e6('0x2'));var util=require(_0xd2e6('0x3'));var client=jayson[_0xd2e6('0x4')][_0xd2e6('0x5')]({'port':0x2329});var logger=require(_0xd2e6('0x6'))(_0xd2e6('0x7'));exports[_0xd2e6('0x8')]=function(_0x260359,_0x16be85){logger[_0xd2e6('0x8')](_0x260359,_0x16be85?util[_0xd2e6('0x9')](_0x16be85,{'showHidden':![],'depth':null}):'');};exports[_0xd2e6('0xa')]=function(_0x1bc1e4,_0x4f8e40){logger[_0xd2e6('0xa')](_0x1bc1e4,_0x4f8e40?util[_0xd2e6('0x9')](_0x4f8e40,{'showHidden':![],'depth':null}):'');};exports[_0xd2e6('0xb')]=function(_0xc5cc38,_0x2dc82c){logger['error'](_0xc5cc38,_0x2dc82c?util[_0xd2e6('0x9')](_0x2dc82c,{'showHidden':![],'depth':null}):'');};exports[_0xd2e6('0xc')]=function(_0x346c01,_0x131eff){return client[_0xd2e6('0xc')](_0x346c01,{'body':_0x131eff})[_0xd2e6('0xd')](function(_0x3d6a96){logger[_0xd2e6('0xa')]('[utils][request]\x20name:%s',_0x346c01,_0x3d6a96?util[_0xd2e6('0x9')](_0x3d6a96,{'showHidden':![],'depth':null}):'');})[_0xd2e6('0xe')](function(_0x57772d){logger[_0xd2e6('0xb')]('[utils][request]\x20name:%s',_0x346c01,_0x57772d?util[_0xd2e6('0x9')](_0x57772d,{'showHidden':![],'depth':null}):'');});};function getUser(_0x498ae8){return client[_0xd2e6('0xc')](_0xd2e6('0xf'),{'options':{'raw':!![],'attributes':['id',_0xd2e6('0x10'),_0xd2e6('0x11'),_0xd2e6('0x12')],'where':_0x498ae8,'limit':0x1}})[_0xd2e6('0xd')](function(_0x28d30){logger[_0xd2e6('0xa')]('[utils][getUser]\x20where:%s',JSON[_0xd2e6('0x13')](_0x498ae8),_0x28d30?util[_0xd2e6('0x9')](_0x28d30,{'showHidden':![],'depth':null}):'');return _0x28d30[_0xd2e6('0x14')][_0xd2e6('0x15')]?_0x28d30[_0xd2e6('0x14')][0x0]:null;});}exports[_0xd2e6('0x16')]=function(_0x3b1b52){return new BPromise(function(_0x468da5,_0x5087b2){if(_0x3b1b52){return getUser({'internal':_0x3b1b52})['then'](function(_0x368756){logger[_0xd2e6('0x8')](_0xd2e6('0x17'),_0x3b1b52,_0x368756?'found':'notfound');return _0x468da5(_0x368756);})[_0xd2e6('0xe')](function(_0x3b851b){logger[_0xd2e6('0xb')](_0xd2e6('0x18'),_0x3b851b?util[_0xd2e6('0x9')](_0x3b851b,{'showHidden':![],'depth':null}):'');return _0x468da5(null);});}return _0x468da5(null);});};exports[_0xd2e6('0x19')]=function(_0x30b52f){return new BPromise(function(_0x1254f6,_0x1e965e){if(_0x30b52f){return getUser({'interface':_0x30b52f})[_0xd2e6('0xd')](function(_0x2fc657){logger['info'](_0xd2e6('0x1a'),_0x30b52f,_0x2fc657?_0xd2e6('0x1b'):_0xd2e6('0x1c'));return _0x1254f6(_0x2fc657);})[_0xd2e6('0xe')](function(_0x377f1d){logger[_0xd2e6('0xb')](_0xd2e6('0x1d'),_0x377f1d?util[_0xd2e6('0x9')](_0x377f1d,{'showHidden':![],'depth':null}):'');return _0x1254f6(null);});}return _0x1254f6(null);});};exports['getUserByName']=function(_0x380a4a){return new BPromise(function(_0x383ad6,_0x22bb3c){if(_0x380a4a){return getUser({'name':_0x380a4a})['then'](function(_0x3130fd){logger['info'](_0xd2e6('0x1e'),_0x380a4a,_0x3130fd?_0xd2e6('0x1b'):_0xd2e6('0x1c'));return _0x383ad6(_0x3130fd);})[_0xd2e6('0xe')](function(_0x3c04ea){logger[_0xd2e6('0xb')](_0xd2e6('0x1f'),_0x3c04ea?util[_0xd2e6('0x9')](_0x3c04ea,{'showHidden':![],'depth':null}):'');return _0x383ad6(null);});}return _0x383ad6(null);});};exports[_0xd2e6('0x20')]=function(_0x28da9f){return new BPromise(function(_0x428fef,_0x18e3ef){if(_0x28da9f){return client['request'](_0xd2e6('0x21'),{'options':{'raw':!![],'attributes':['id','name',_0xd2e6('0x22'),_0xd2e6('0x23'),_0xd2e6('0x24')],'where':{'name':_0x28da9f},'limit':0x1}})['then'](function(_0x43064b){logger[_0xd2e6('0xa')](_0xd2e6('0x25'),_0x28da9f,_0x43064b?util[_0xd2e6('0x9')](_0x43064b,{'showHidden':![],'depth':null}):'');logger['info']('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x28da9f,_0x43064b?_0xd2e6('0x1b'):_0xd2e6('0x1c'));return _0x428fef(_0x43064b[_0xd2e6('0x14')]['length']?_0x43064b['result'][0x0]:null);})[_0xd2e6('0xe')](function(_0x3771f0){logger[_0xd2e6('0xb')]('[utils][getVoiceQueueByName]',_0x3771f0?util[_0xd2e6('0x9')](_0x3771f0,{'showHidden':![],'depth':null}):'');return _0x428fef(null);});}return _0x428fef(null);});};exports['addTime']=function(_0x23498f,_0x6322c1){return moment(_0x23498f)[_0xd2e6('0x26')](_0x6322c1,_0xd2e6('0x27'))[_0xd2e6('0x28')](_0xd2e6('0x29'));};exports[_0xd2e6('0x2a')]=function(_0xd6f41d,_0x1b13b7){return moment(_0xd6f41d)[_0xd2e6('0x2b')](_0x1b13b7,_0xd2e6('0x27'))[_0xd2e6('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0xd2e6('0x2c')]=function(_0x452a51,_0x151cd6){return moment(_0x452a51)[_0xd2e6('0x2d')](moment(_0x151cd6),'seconds');};exports[_0xd2e6('0x2e')]=function(_0x16bcfc,_0x1a8903){return parseInt(_0x16bcfc,0xa)+parseInt(_0x1a8903,0xa);};exports[_0xd2e6('0x2f')]=function(){return moment()[_0xd2e6('0x28')](_0xd2e6('0x29'));};exports[_0xd2e6('0x30')]=function(_0x357376,_0x2d8a46){if(_0x2d8a46){return moment(_0x357376)[_0xd2e6('0x30')](_0x2d8a46);}return!![];};exports[_0xd2e6('0x31')]=function(_0x293d41,_0x31ff28){if(_0x31ff28){return moment(_0x293d41)[_0xd2e6('0x31')](_0x31ff28);}else if(_0x293d41){return!![];}return![];};
\ No newline at end of file
+var _0x6578=['seconds','diffTime','sumTime','isAfter','isBefore','jayson/promise','moment','util','client','http','../../config/logger','xdr','debug','error','inspect','request','then','[utils][request]\x20name:%s','catch','internal','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','found','notfound','[utils][getUserByInternal]','getUserByInterface','info','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByName]\x20name:%s\x20%s','[utils][getUserByName]','getVoiceQueueByName','GetVoiceQueue','acwTimeout','[utils][getVoiceQueueByName]','addTime','add','format','YYYY-MM-DD\x20HH:mm:ss','subtractTime'];(function(_0xa6849c,_0x5797aa){var _0x31a68f=function(_0x3f771d){while(--_0x3f771d){_0xa6849c['push'](_0xa6849c['shift']());}};_0x31a68f(++_0x5797aa);}(_0x6578,0xdc));var _0x8657=function(_0x1f0f9e,_0x5bfd35){_0x1f0f9e=_0x1f0f9e-0x0;var _0x4335fb=_0x6578[_0x1f0f9e];return _0x4335fb;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x8657('0x0'));var moment=require(_0x8657('0x1'));var util=require(_0x8657('0x2'));var client=jayson[_0x8657('0x3')][_0x8657('0x4')]({'port':0x2329});var logger=require(_0x8657('0x5'))(_0x8657('0x6'));exports['info']=function(_0x48e76b,_0x105a7c){logger['info'](_0x48e76b,_0x105a7c?util['inspect'](_0x105a7c,{'showHidden':![],'depth':null}):'');};exports['debug']=function(_0x557927,_0x4f6b7a){logger[_0x8657('0x7')](_0x557927,_0x4f6b7a?util['inspect'](_0x4f6b7a,{'showHidden':![],'depth':null}):'');};exports[_0x8657('0x8')]=function(_0x204597,_0xb3c9f2){logger[_0x8657('0x8')](_0x204597,_0xb3c9f2?util[_0x8657('0x9')](_0xb3c9f2,{'showHidden':![],'depth':null}):'');};exports[_0x8657('0xa')]=function(_0x32f1db,_0x308086){return client[_0x8657('0xa')](_0x32f1db,{'body':_0x308086})[_0x8657('0xb')](function(_0x70ef81){logger['debug'](_0x8657('0xc'),_0x32f1db,_0x70ef81?util['inspect'](_0x70ef81,{'showHidden':![],'depth':null}):'');})[_0x8657('0xd')](function(_0x32a9d5){logger[_0x8657('0x8')](_0x8657('0xc'),_0x32f1db,_0x32a9d5?util[_0x8657('0x9')](_0x32a9d5,{'showHidden':![],'depth':null}):'');});};function getUser(_0x22a427){return client[_0x8657('0xa')]('GetUser',{'options':{'raw':!![],'attributes':['id',_0x8657('0xe'),_0x8657('0xf'),_0x8657('0x10')],'where':_0x22a427,'limit':0x1}})[_0x8657('0xb')](function(_0x238386){logger[_0x8657('0x7')](_0x8657('0x11'),JSON[_0x8657('0x12')](_0x22a427),_0x238386?util['inspect'](_0x238386,{'showHidden':![],'depth':null}):'');return _0x238386[_0x8657('0x13')][_0x8657('0x14')]?_0x238386['result'][0x0]:null;});}exports['getUserByInternal']=function(_0x38ca69){return new BPromise(function(_0x40ea64,_0x389e1e){if(_0x38ca69){return getUser({'internal':_0x38ca69})[_0x8657('0xb')](function(_0x277951){logger['info']('[utils][getUserByInternal]\x20internal:%s\x20%s',_0x38ca69,_0x277951?_0x8657('0x15'):_0x8657('0x16'));return _0x40ea64(_0x277951);})[_0x8657('0xd')](function(_0x277042){logger[_0x8657('0x8')](_0x8657('0x17'),_0x277042?util[_0x8657('0x9')](_0x277042,{'showHidden':![],'depth':null}):'');return _0x40ea64(null);});}return _0x40ea64(null);});};exports[_0x8657('0x18')]=function(_0x252e94){return new BPromise(function(_0x177357,_0x440233){if(_0x252e94){return getUser({'interface':_0x252e94})[_0x8657('0xb')](function(_0x10d934){logger[_0x8657('0x19')](_0x8657('0x1a'),_0x252e94,_0x10d934?'found':_0x8657('0x16'));return _0x177357(_0x10d934);})['catch'](function(_0x87b2c5){logger[_0x8657('0x8')]('[utils][getUserByInterface]',_0x87b2c5?util[_0x8657('0x9')](_0x87b2c5,{'showHidden':![],'depth':null}):'');return _0x177357(null);});}return _0x177357(null);});};exports['getUserByName']=function(_0x581ade){return new BPromise(function(_0xdf07e2,_0x222e52){if(_0x581ade){return getUser({'name':_0x581ade})['then'](function(_0x1e229b){logger[_0x8657('0x19')](_0x8657('0x1b'),_0x581ade,_0x1e229b?_0x8657('0x15'):_0x8657('0x16'));return _0xdf07e2(_0x1e229b);})[_0x8657('0xd')](function(_0x5ecf4c){logger[_0x8657('0x8')](_0x8657('0x1c'),_0x5ecf4c?util[_0x8657('0x9')](_0x5ecf4c,{'showHidden':![],'depth':null}):'');return _0xdf07e2(null);});}return _0xdf07e2(null);});};exports[_0x8657('0x1d')]=function(_0x8af289){return new BPromise(function(_0x2f66f8,_0x20cb01){if(_0x8af289){return client[_0x8657('0xa')](_0x8657('0x1e'),{'options':{'raw':!![],'attributes':['id',_0x8657('0xf'),'type','acw',_0x8657('0x1f')],'where':{'name':_0x8af289},'limit':0x1}})[_0x8657('0xb')](function(_0x450bdf){logger['debug']('[utils][getVoiceQueueByName]\x20name:%s',_0x8af289,_0x450bdf?util[_0x8657('0x9')](_0x450bdf,{'showHidden':![],'depth':null}):'');logger[_0x8657('0x19')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0x8af289,_0x450bdf?_0x8657('0x15'):_0x8657('0x16'));return _0x2f66f8(_0x450bdf[_0x8657('0x13')][_0x8657('0x14')]?_0x450bdf[_0x8657('0x13')][0x0]:null);})['catch'](function(_0x13cb7d){logger[_0x8657('0x8')](_0x8657('0x20'),_0x13cb7d?util[_0x8657('0x9')](_0x13cb7d,{'showHidden':![],'depth':null}):'');return _0x2f66f8(null);});}return _0x2f66f8(null);});};exports[_0x8657('0x21')]=function(_0x49bba2,_0x41eff7){return moment(_0x49bba2)[_0x8657('0x22')](_0x41eff7,'seconds')[_0x8657('0x23')](_0x8657('0x24'));};exports[_0x8657('0x25')]=function(_0x5c163b,_0x4f6d12){return moment(_0x5c163b)['subtract'](_0x4f6d12,_0x8657('0x26'))[_0x8657('0x23')](_0x8657('0x24'));};exports[_0x8657('0x27')]=function(_0x1feda4,_0x53565d){return moment(_0x1feda4)['diff'](moment(_0x53565d),'seconds');};exports[_0x8657('0x28')]=function(_0x2c9ce1,_0x15e63f){return parseInt(_0x2c9ce1,0xa)+parseInt(_0x15e63f,0xa);};exports['now']=function(){return moment()[_0x8657('0x23')](_0x8657('0x24'));};exports['isAfter']=function(_0x1d72bf,_0x2b951d){if(_0x2b951d){return moment(_0x1d72bf)[_0x8657('0x29')](_0x2b951d);}return!![];};exports[_0x8657('0x2a')]=function(_0x12a6e8,_0x10d6ac){if(_0x10d6ac){return moment(_0x12a6e8)[_0x8657('0x2a')](_0x10d6ac);}else if(_0x12a6e8){return!![];}return![];};
\ No newline at end of file
index 88e5b76..b96aa29 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb27c=['url','agent_id','agent_name','setupLoggers','fs-extra','lodash','express-winston','util','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','/var','xcally','join','client','role','name','ensureDir','then','catch','log','user','timestamp','error','api','auth','set','client-side-logger','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s','body','\x20body=%s','format','headers','x-forwarded-for','connection','remoteAddress','statusCode','responseTime','inspect','device','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','method'];(function(_0xac7e76,_0x1fa476){var _0x51bf57=function(_0x324ff6){while(--_0x324ff6){_0xac7e76['push'](_0xac7e76['shift']());}};_0x51bf57(++_0x1fa476);}(_0xb27c,0x8b));var _0xcb27=function(_0x454018,_0x46e33a){_0x454018=_0x454018-0x0;var _0x24697d=_0xb27c[_0x454018];return _0x24697d;};var fs=require(_0xcb27('0x0'));var _=require(_0xcb27('0x1'));var ewinston=require(_0xcb27('0x2'));var path=require('path');var util=require(_0xcb27('0x3'));var fileLogger=require('./loggers')['fileLogger'];var safeTemplate=require(_0xcb27('0x4'))[_0xcb27('0x5')];var maskSensitiveData=require(_0xcb27('0x6'))[_0xcb27('0x7')];function ClientSideLogger(){function _0x1e45c3(_0x24a02e){var _0x424084=path['join'](_0xcb27('0x8'),'log',_0xcb27('0x9'));var _0x48ca60=path[_0xcb27('0xa')](_0xcb27('0xb'),_0x24a02e[_0xcb27('0xc')]+'-'+_0x24a02e[_0xcb27('0xd')]);return fs[_0xcb27('0xe')](path[_0xcb27('0xa')](_0x424084,_0x48ca60))[_0xcb27('0xf')](function(){var _0x59630f=fileLogger(_0xcb27('0xb'),path['join'](_0x424084,_0x48ca60));return _0x59630f;})[_0xcb27('0x10')](function(_0x43f005){throw _0x43f005;});}this[_0xcb27('0x11')]=function(_0x13b0be,_0x374f34,_0x532594,_0x52ebb5){return _0x1e45c3(_0x13b0be[_0xcb27('0x12')])[_0xcb27('0xf')](function(_0x35c286){var _0x567f24=_0x35c286[_0x374f34];return _0x567f24;})[_0xcb27('0xf')](function(_0x39d18c){var _0x2c6453=_0x13b0be[_0xcb27('0x12')]?_0x13b0be[_0xcb27('0x12')]['id']:'no-user';var _0x586df0=_0x52ebb5['data'];var _0x424554=_0x52ebb5[_0xcb27('0x13')];var _0x470946=new Date(Number(_0x424554));return _0x39d18c(_0x2c6453,_0x470946,_0x532594,_0x586df0);})[_0xcb27('0x10')](function(_0x2044c4){fileLogger(_0xcb27('0xb'))[_0xcb27('0x14')](_0x2044c4);});};}function setupLoggers(_0x52c3bf){return new Promise(function(_0x3f05f2){var _0x3fbcd7=new ClientSideLogger();var _0x26f75d=fileLogger(_0xcb27('0x15'));var _0x2b1c2c=fileLogger(_0xcb27('0x16'));_0x52c3bf[_0xcb27('0x17')](_0xcb27('0x18'),_0x3fbcd7);_0x52c3bf[_0xcb27('0x19')](ewinston[_0xcb27('0x1a')]({'winstonInstance':_0x26f75d,'meta':![],'statusLevels':!![],'msg':function(_0x453278,_0x5d2835){var _0x3e5276=_0xcb27('0x1b');if(!_['isEmpty'](_0x453278[_0xcb27('0x1c')])){_0x3e5276+=_0xcb27('0x1d');var _0x164fbc=_0x453278[_0xcb27('0x1c')];maskSensitiveData(_0x164fbc);}return safeTemplate(util[_0xcb27('0x1e')](_0x3e5276,_0x453278['method'],_0x453278[_0xcb27('0x1f')][_0xcb27('0x20')]?_0x453278[_0xcb27('0x1f')]['x-forwarded-for']:_0x453278[_0xcb27('0x21')][_0xcb27('0x22')]||_0x453278['ip'],_0x453278['url'],_0x5d2835[_0xcb27('0x23')],_0x5d2835[_0xcb27('0x24')],_0x453278['user']?_0x453278['user']['id']:null,_0x453278[_0xcb27('0x12')]?_0x453278['user'][_0xcb27('0xd')]:null,_0x453278['user']?_0x453278[_0xcb27('0x12')][_0xcb27('0xc')]:null,_0x164fbc?util[_0xcb27('0x25')](_0x164fbc,![],null):''));}}));_0x52c3bf[_0xcb27('0x19')](ewinston[_0xcb27('0x1a')]({'winstonInstance':_0x2b1c2c,'meta':![],'statusLevels':!![],'msg':function(_0xad5526,_0xac6383){var _0x47540b='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0xad5526[_0xcb27('0x1c')]&&_0xad5526['body'][_0xcb27('0x26')]&&_0xad5526[_0xcb27('0x1c')]['agent_id']){_0x47540b=_0xcb27('0x27');}return util[_0xcb27('0x1e')](_0x47540b,_0xad5526[_0xcb27('0x28')],_0xad5526['headers']['x-forwarded-for']?_0xad5526[_0xcb27('0x1f')][_0xcb27('0x20')]:_0xad5526[_0xcb27('0x21')][_0xcb27('0x22')]||_0xad5526['ip'],_0xad5526[_0xcb27('0x29')],_0xac6383['statusCode'],_0xac6383[_0xcb27('0x24')],_0xad5526[_0xcb27('0x12')]?_0xad5526['user']['id']:null,_0xad5526[_0xcb27('0x12')]?_0xad5526[_0xcb27('0x12')][_0xcb27('0xd')]:null,_0xad5526[_0xcb27('0x12')]?_0xad5526[_0xcb27('0x12')][_0xcb27('0xc')]:null,_0xad5526[_0xcb27('0x1c')]&&_0xad5526[_0xcb27('0x1c')][_0xcb27('0x26')]?_0xad5526[_0xcb27('0x1c')][_0xcb27('0x26')]:'other',_0xad5526[_0xcb27('0x1c')]&&_0xad5526[_0xcb27('0x1c')][_0xcb27('0x2a')]?_0xad5526[_0xcb27('0x1c')][_0xcb27('0x2a')]:'',_0xad5526['body']&&_0xad5526[_0xcb27('0x1c')][_0xcb27('0x2b')]?_0xad5526[_0xcb27('0x1c')][_0xcb27('0x2b')]:'');},'ignoreRoute':function(_0x5dd580){var _0x3eccec=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x3eccec['test'](_0x5dd580[_0xcb27('0x29')]);}}));return _0x3f05f2();});}exports[_0xcb27('0x2c')]=setupLoggers;
\ No newline at end of file
+var _0x122f=['x-forwarded-for','remoteAddress','url','responseTime','name','inspect','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','format','statusCode','other','agent_id','agent_name','test','setupLoggers','fs-extra','lodash','express-winston','path','util','./loggers','safeTemplate','maskSensitiveData','join','/var','client','role','then','user','no-user','data','timestamp','catch','error','api','auth','set','use','logger','body','\x20body=%s','method','headers'];(function(_0xb23a26,_0x221553){var _0x4169de=function(_0x2a192d){while(--_0x2a192d){_0xb23a26['push'](_0xb23a26['shift']());}};_0x4169de(++_0x221553);}(_0x122f,0x144));var _0xf122=function(_0x386c00,_0x1ba086){_0x386c00=_0x386c00-0x0;var _0x373a15=_0x122f[_0x386c00];return _0x373a15;};var fs=require(_0xf122('0x0'));var _=require(_0xf122('0x1'));var ewinston=require(_0xf122('0x2'));var path=require(_0xf122('0x3'));var util=require(_0xf122('0x4'));var fileLogger=require(_0xf122('0x5'))['fileLogger'];var safeTemplate=require('./safe-template')[_0xf122('0x6')];var maskSensitiveData=require('./mask-sensitive-data')[_0xf122('0x7')];function ClientSideLogger(){function _0x4f08b8(_0x12e3ac){var _0x2b8e6e=path[_0xf122('0x8')](_0xf122('0x9'),'log','xcally');var _0x2c59ec=path[_0xf122('0x8')](_0xf122('0xa'),_0x12e3ac[_0xf122('0xb')]+'-'+_0x12e3ac['name']);return fs['ensureDir'](path[_0xf122('0x8')](_0x2b8e6e,_0x2c59ec))[_0xf122('0xc')](function(){var _0x4b0a69=fileLogger(_0xf122('0xa'),path[_0xf122('0x8')](_0x2b8e6e,_0x2c59ec));return _0x4b0a69;})['catch'](function(_0x518471){throw _0x518471;});}this['log']=function(_0x48f5ec,_0x2fe97b,_0xac9ca9,_0x1a5805){return _0x4f08b8(_0x48f5ec[_0xf122('0xd')])[_0xf122('0xc')](function(_0x2f78f8){var _0x1876e2=_0x2f78f8[_0x2fe97b];return _0x1876e2;})[_0xf122('0xc')](function(_0x3d1ada){var _0x35b3c4=_0x48f5ec[_0xf122('0xd')]?_0x48f5ec[_0xf122('0xd')]['id']:_0xf122('0xe');var _0x1410f3=_0x1a5805[_0xf122('0xf')];var _0x31d879=_0x1a5805[_0xf122('0x10')];var _0x4fb811=new Date(Number(_0x31d879));return _0x3d1ada(_0x35b3c4,_0x4fb811,_0xac9ca9,_0x1410f3);})[_0xf122('0x11')](function(_0x5c83b4){fileLogger(_0xf122('0xa'))[_0xf122('0x12')](_0x5c83b4);});};}function setupLoggers(_0x1250d6){return new Promise(function(_0x2160b0){var _0x3b1c3b=new ClientSideLogger();var _0x8b8e01=fileLogger(_0xf122('0x13'));var _0xa115f5=fileLogger(_0xf122('0x14'));_0x1250d6[_0xf122('0x15')]('client-side-logger',_0x3b1c3b);_0x1250d6[_0xf122('0x16')](ewinston[_0xf122('0x17')]({'winstonInstance':_0x8b8e01,'meta':![],'statusLevels':!![],'msg':function(_0x151dde,_0x474fd0){var _0x50be0a='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x151dde[_0xf122('0x18')])){_0x50be0a+=_0xf122('0x19');var _0x526da3=_0x151dde[_0xf122('0x18')];maskSensitiveData(_0x526da3);}return safeTemplate(util['format'](_0x50be0a,_0x151dde[_0xf122('0x1a')],_0x151dde[_0xf122('0x1b')]['x-forwarded-for']?_0x151dde[_0xf122('0x1b')][_0xf122('0x1c')]:_0x151dde['connection'][_0xf122('0x1d')]||_0x151dde['ip'],_0x151dde[_0xf122('0x1e')],_0x474fd0['statusCode'],_0x474fd0[_0xf122('0x1f')],_0x151dde[_0xf122('0xd')]?_0x151dde['user']['id']:null,_0x151dde['user']?_0x151dde[_0xf122('0xd')][_0xf122('0x20')]:null,_0x151dde['user']?_0x151dde[_0xf122('0xd')][_0xf122('0xb')]:null,_0x526da3?util[_0xf122('0x21')](_0x526da3,![],null):''));}}));_0x1250d6[_0xf122('0x16')](ewinston['logger']({'winstonInstance':_0xa115f5,'meta':![],'statusLevels':!![],'msg':function(_0x2e0913,_0x3b4215){var _0x5cdf64=_0xf122('0x22');if(_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]&&_0x2e0913['body']['agent_id']){_0x5cdf64=_0xf122('0x24');}return util[_0xf122('0x25')](_0x5cdf64,_0x2e0913[_0xf122('0x1a')],_0x2e0913[_0xf122('0x1b')][_0xf122('0x1c')]?_0x2e0913[_0xf122('0x1b')][_0xf122('0x1c')]:_0x2e0913['connection']['remoteAddress']||_0x2e0913['ip'],_0x2e0913['url'],_0x3b4215[_0xf122('0x26')],_0x3b4215['responseTime'],_0x2e0913[_0xf122('0xd')]?_0x2e0913[_0xf122('0xd')]['id']:null,_0x2e0913[_0xf122('0xd')]?_0x2e0913['user'][_0xf122('0x20')]:null,_0x2e0913['user']?_0x2e0913['user'][_0xf122('0xb')]:null,_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]?_0x2e0913[_0xf122('0x18')][_0xf122('0x23')]:_0xf122('0x27'),_0x2e0913[_0xf122('0x18')]&&_0x2e0913[_0xf122('0x18')][_0xf122('0x28')]?_0x2e0913[_0xf122('0x18')][_0xf122('0x28')]:'',_0x2e0913['body']&&_0x2e0913['body'][_0xf122('0x29')]?_0x2e0913['body'][_0xf122('0x29')]:'');},'ignoreRoute':function(_0x49e062){var _0x1d51d9=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1d51d9[_0xf122('0x2a')](_0x49e062[_0xf122('0x1e')]);}}));return _0x2160b0();});}exports[_0xf122('0x2b')]=setupLoggers;
\ No newline at end of file
index bd07a16..4b783ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x214c=['{{{','}}}','[%s]\x20[%s]\x20%s\x20-\x20%s','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','meta','keys','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','warn','File','%s-%s','error','Console','consoleLogger','fileLogger','path','moment','winston','../config/environment','debugLevel','toLowerCase','bold\x20white','gray','bold\x20magenta','bold\x20cyan','format','%s-%s.log','message','replace'];(function(_0x1a0c09,_0x3e64bd){var _0x471871=function(_0x5c2255){while(--_0x5c2255){_0x1a0c09['push'](_0x1a0c09['shift']());}};_0x471871(++_0x3e64bd);}(_0x214c,0x172));var _0xc214=function(_0x4a8e82,_0x4c53c1){_0x4a8e82=_0x4a8e82-0x0;var _0x3ba3e6=_0x214c[_0x4a8e82];return _0x3ba3e6;};'use strict';var path=require(_0xc214('0x0'));var util=require('util');var moment=require(_0xc214('0x1'));var winston=require(_0xc214('0x2'));var config=require(_0xc214('0x3'));var debugLevel=config[_0xc214('0x4')]?config[_0xc214('0x4')][_0xc214('0x5')]():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':'redBG\x20white','error':'red','warn':'bold\x20yellow','info':'white','print':_0xc214('0x6'),'success':'bold\x20green','http':_0xc214('0x7'),'verbose':_0xc214('0x8'),'debug':'bold\x20blue','silly':_0xc214('0x9')};winston['addColors'](XC_LOG_COLORS);function getLogFileName(_0x3fa38e,_0x1d5155,_0x540944){var _0x1bcaea=_0x3fa38e||'/var/log/xcally';return path['join'](_0x1bcaea,util[_0xc214('0xa')](_0xc214('0xb'),_0x1d5155,_0x540944));}function formatter(_0x2c580d,_0x4e5bc4){_0x4e5bc4[_0xc214('0xc')]=_0x4e5bc4[_0xc214('0xc')][_0xc214('0xd')](/@@{/g,_0xc214('0xe'))[_0xc214('0xd')](/}@@/g,_0xc214('0xf'))[_0xc214('0xd')](/@{/g,'{{')[_0xc214('0xd')](/}@/g,'}}');return util['format'](_0xc214('0x10'),moment()[_0xc214('0xa')](_0xc214('0x11')),_0x4e5bc4[_0xc214('0x12')][_0xc214('0x13')](),_0x2c580d,_0x4e5bc4[_0xc214('0xc')]);}function fileFormat(_0x51d11a,_0x3c7961){_0x3c7961[_0xc214('0xc')]=_0x3c7961[_0xc214('0xc')][_0xc214('0xd')](/@@{/g,_0xc214('0xe'))['replace'](/}@@/g,_0xc214('0xf'))[_0xc214('0xd')](/@{/g,'{{')[_0xc214('0xd')](/}@/g,'}}');var _0x2b4978=_0x3c7961[_0xc214('0x14')]&&Object[_0xc214('0x15')](_0x3c7961[_0xc214('0x14')])['length']?'\x0a\x09'+JSON['stringify'](_0x3c7961[_0xc214('0x14')]):'';return util['format'](_0xc214('0x16'),moment()[_0xc214('0xa')](_0xc214('0x11')),_0x3c7961['level']['toUpperCase'](),_0x51d11a,_0x3c7961[_0xc214('0xc')],_0x2b4978);}function consoleLogger(){var _0x17ac59=new winston[(_0xc214('0x17'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xc214('0x18'))]['Console']({'level':_0xc214('0x19'),'json':![],'formatter':function(_0x483580){return formatter('',_0x483580);}})]});return _0x17ac59;}function fileLogger(_0x4722ec,_0xa4aaae){var _0x59aa1b=new winston[(_0xc214('0x17'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xc214('0x18'))][(_0xc214('0x1a'))]({'name':util[_0xc214('0xa')](_0xc214('0x1b'),_0x4722ec,_0xc214('0x1c')),'filename':getLogFileName(_0xa4aaae,_0x4722ec,_0xc214('0x1c')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x46e369){return fileFormat(_0x4722ec,_0x46e369);}}),new winston[(_0xc214('0x18'))][(_0xc214('0x1a'))]({'name':util[_0xc214('0xa')](_0xc214('0x1b'),_0x4722ec,debugLevel),'filename':getLogFileName(_0xa4aaae,_0x4722ec,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3f690e){return fileFormat(_0x4722ec,_0x3f690e);}}),new winston[(_0xc214('0x18'))][(_0xc214('0x1d'))]({'level':'warn','json':![],'formatter':function(_0x5cca19){return fileFormat(_0x4722ec,_0x5cca19);}})]});return _0x59aa1b;}exports[_0xc214('0x1e')]=consoleLogger;exports[_0xc214('0x1f')]=fileLogger;
\ No newline at end of file
+var _0x6543=['replace','level','stringify','meta','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','YYYY-MM-DD\x20HH:mm:ss','toUpperCase','Logger','Console','warn','transports','%s-%s','error','File','consoleLogger','fileLogger','path','moment','winston','debugLevel','redBG\x20white','red','bold\x20yellow','white','gray','bold\x20magenta','bold\x20blue','addColors','/var/log/xcally','join','format','%s-%s.log','message','{{{','}}}'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6543,0xbf));var _0x3654=function(_0x1e888a,_0x4ae459){_0x1e888a=_0x1e888a-0x0;var _0x2c0410=_0x6543[_0x1e888a];return _0x2c0410;};'use strict';var path=require(_0x3654('0x0'));var util=require('util');var moment=require(_0x3654('0x1'));var winston=require(_0x3654('0x2'));var config=require('../config/environment');var debugLevel=config[_0x3654('0x3')]?config['debugLevel']['toLowerCase']():'info';var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0x3654('0x4'),'error':_0x3654('0x5'),'warn':_0x3654('0x6'),'info':_0x3654('0x7'),'print':'bold\x20white','success':'bold\x20green','http':_0x3654('0x8'),'verbose':_0x3654('0x9'),'debug':_0x3654('0xa'),'silly':'bold\x20cyan'};winston[_0x3654('0xb')](XC_LOG_COLORS);function getLogFileName(_0x335e12,_0x5c8ae5,_0x18b875){var _0x542efd=_0x335e12||_0x3654('0xc');return path[_0x3654('0xd')](_0x542efd,util[_0x3654('0xe')](_0x3654('0xf'),_0x5c8ae5,_0x18b875));}function formatter(_0x15a298,_0x2cc74d){_0x2cc74d[_0x3654('0x10')]=_0x2cc74d[_0x3654('0x10')]['replace'](/@@{/g,_0x3654('0x11'))['replace'](/}@@/g,_0x3654('0x12'))['replace'](/@{/g,'{{')[_0x3654('0x13')](/}@/g,'}}');return util[_0x3654('0xe')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0x3654('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),_0x2cc74d[_0x3654('0x14')]['toUpperCase'](),_0x15a298,_0x2cc74d[_0x3654('0x10')]);}function fileFormat(_0x1c4a11,_0x4f7658){_0x4f7658['message']=_0x4f7658['message']['replace'](/@@{/g,_0x3654('0x11'))[_0x3654('0x13')](/}@@/g,_0x3654('0x12'))[_0x3654('0x13')](/@{/g,'{{')[_0x3654('0x13')](/}@/g,'}}');var _0x5a772b=_0x4f7658['meta']&&Object['keys'](_0x4f7658['meta'])['length']?'\x0a\x09'+JSON[_0x3654('0x15')](_0x4f7658[_0x3654('0x16')]):'';return util[_0x3654('0xe')](_0x3654('0x17'),moment()[_0x3654('0xe')](_0x3654('0x18')),_0x4f7658[_0x3654('0x14')][_0x3654('0x19')](),_0x1c4a11,_0x4f7658[_0x3654('0x10')],_0x5a772b);}function consoleLogger(){var _0x456a1f=new winston[(_0x3654('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0x3654('0x1b'))]({'level':_0x3654('0x1c'),'json':![],'formatter':function(_0x2faa62){return formatter('',_0x2faa62);}})]});return _0x456a1f;}function fileLogger(_0x38c759,_0x55847f){var _0x4ea725=new winston[(_0x3654('0x1a'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0x3654('0x1d'))]['File']({'name':util[_0x3654('0xe')](_0x3654('0x1e'),_0x38c759,_0x3654('0x1f')),'filename':getLogFileName(_0x55847f,_0x38c759,_0x3654('0x1f')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x213dac){return fileFormat(_0x38c759,_0x213dac);}}),new winston['transports'][(_0x3654('0x20'))]({'name':util[_0x3654('0xe')](_0x3654('0x1e'),_0x38c759,debugLevel),'filename':getLogFileName(_0x55847f,_0x38c759,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x29faf1){return fileFormat(_0x38c759,_0x29faf1);}}),new winston[(_0x3654('0x1d'))][(_0x3654('0x1b'))]({'level':_0x3654('0x1c'),'json':![],'formatter':function(_0x10131b){return fileFormat(_0x38c759,_0x10131b);}})]});return _0x4ea725;}exports[_0x3654('0x21')]=consoleLogger;exports[_0x3654('0x22')]=fileLogger;
\ No newline at end of file
index 1f0ce06..855623c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['email','securityToken','code','accessKey','tenantId','token','channelSecret','accessToken','accessTokenSecret','authToken','consumerKey','calleridname','calleridnum','exten','vidaooApiKey','privateKey','secretaccesskey','user','pass','dsn','registry','oldPassword','length','isPlainObject','@@{','replace','}@@','includes','exports','maskSensitiveData','lodash','username','password','newPassword','apiKey','firstName','street','phone','fax'];(function(_0x38616d,_0x22fbe5){var _0x505626=function(_0x5b3a5a){while(--_0x5b3a5a){_0x38616d['push'](_0x38616d['shift']());}};_0x505626(++_0x22fbe5);}(_0x2ef3,0xba));var _0x32ef=function(_0x3448ad,_0x28a083){_0x3448ad=_0x3448ad-0x0;var _0xbb9d0c=_0x2ef3[_0x3448ad];return _0xbb9d0c;};var _=require(_0x32ef('0x0'));var sensitiveFields=[_0x32ef('0x1'),_0x32ef('0x2'),_0x32ef('0x3'),_0x32ef('0x4'),_0x32ef('0x5'),'lastName',_0x32ef('0x6'),_0x32ef('0x7'),'mobile',_0x32ef('0x8'),_0x32ef('0x9'),'clientId','clientSecret',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'consumerSecret','membername',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'clientEmail',_0x32ef('0x18'),'accesskeyid',_0x32ef('0x19'),'key',_0x32ef('0x1a'),_0x32ef('0x1b'),'accountSid','localstationid',_0x32ef('0x1c'),'secret',_0x32ef('0x1d'),_0x32ef('0x1e')];function maskSensitiveData(_0x93d492){const _0x54c7f5=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x93d492)){for(const _0x55bf0b in _0x93d492){if(_['isArray'](_0x93d492[_0x55bf0b])){for(let _0x13db1a=0x0;_0x13db1a<_0x93d492[_0x55bf0b][_0x32ef('0x1f')];_0x13db1a++){maskSensitiveData(_0x93d492[_0x55bf0b][_0x13db1a]);}}else if(_[_0x32ef('0x20')](_0x93d492[_0x55bf0b])){maskSensitiveData(_0x93d492[_0x55bf0b]);}else if(_['isString'](_0x93d492[_0x55bf0b])){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](/{{{/g,_0x32ef('0x21'))[_0x32ef('0x22')](/}}}/g,_0x32ef('0x23'))['replace'](/{{/g,'@{')[_0x32ef('0x22')](/}}/g,'}@');if(_[_0x32ef('0x24')](sensitiveFields,_0x55bf0b)){_0x93d492[_0x55bf0b]=_0x93d492[_0x55bf0b]['replace'](_0x54c7f5,'*');}}}}}module[_0x32ef('0x25')][_0x32ef('0x26')]=maskSensitiveData;
\ No newline at end of file
+var _0x4975=['replace','}@@','includes','exports','maskSensitiveData','lodash','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientSecret','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString'];(function(_0x21f3bf,_0xfb0f59){var _0x249d08=function(_0x37e6c2){while(--_0x37e6c2){_0x21f3bf['push'](_0x21f3bf['shift']());}};_0x249d08(++_0xfb0f59);}(_0x4975,0x86));var _0x5497=function(_0xa9e4d0,_0x4520cc){_0xa9e4d0=_0xa9e4d0-0x0;var _0x399e45=_0x4975[_0xa9e4d0];return _0x399e45;};var _=require(_0x5497('0x0'));var sensitiveFields=['username',_0x5497('0x1'),_0x5497('0x2'),_0x5497('0x3'),_0x5497('0x4'),_0x5497('0x5'),_0x5497('0x6'),_0x5497('0x7'),_0x5497('0x8'),_0x5497('0x9'),_0x5497('0xa'),'clientId',_0x5497('0xb'),'securityToken',_0x5497('0xc'),_0x5497('0xd'),_0x5497('0xe'),'token',_0x5497('0xf'),'accessToken',_0x5497('0x10'),_0x5497('0x11'),_0x5497('0x12'),_0x5497('0x13'),_0x5497('0x14'),_0x5497('0x15'),_0x5497('0x16'),_0x5497('0x17'),'vidaooApiKey','clientEmail','privateKey',_0x5497('0x18'),_0x5497('0x19'),_0x5497('0x1a'),_0x5497('0x1b'),_0x5497('0x1c'),_0x5497('0x1d'),_0x5497('0x1e'),_0x5497('0x1f'),_0x5497('0x20'),_0x5497('0x21'),'oldPassword'];function maskSensitiveData(_0x11b0a9){const _0x4fb8e9=/(?!^)[\s\S](?!$)/g;if(_[_0x5497('0x22')](_0x11b0a9)){for(const _0x2bfd8a in _0x11b0a9){if(_[_0x5497('0x23')](_0x11b0a9[_0x2bfd8a])){for(let _0x3ce50b=0x0;_0x3ce50b<_0x11b0a9[_0x2bfd8a][_0x5497('0x24')];_0x3ce50b++){maskSensitiveData(_0x11b0a9[_0x2bfd8a][_0x3ce50b]);}}else if(_[_0x5497('0x22')](_0x11b0a9[_0x2bfd8a])){maskSensitiveData(_0x11b0a9[_0x2bfd8a]);}else if(_[_0x5497('0x25')](_0x11b0a9[_0x2bfd8a])){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a]['replace'](/{{{/g,'@@{')[_0x5497('0x26')](/}}}/g,_0x5497('0x27'))[_0x5497('0x26')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x5497('0x28')](sensitiveFields,_0x2bfd8a)){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a][_0x5497('0x26')](_0x4fb8e9,'*');}}}}}module[_0x5497('0x29')][_0x5497('0x2a')]=maskSensitiveData;
\ No newline at end of file
index 86d71b1..cd2debf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['{\x20{\x20','\x20}\x20}','string','replace','isArray','keys','reduce','exports'];(function(_0xcabc99,_0x579f01){var _0x187efe=function(_0x409395){while(--_0x409395){_0xcabc99['push'](_0xcabc99['shift']());}};_0x187efe(++_0x579f01);}(_0x8603,0x190));var _0x3860=function(_0x42a8fc,_0x455dab){_0x42a8fc=_0x42a8fc-0x0;var _0x5aad21=_0x8603[_0x42a8fc];return _0x5aad21;};var _=require('lodash');var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2f848f){return _0x2f848f==='{{'?_0x3860('0x0'):_0x3860('0x1');}function safeTemplate(_0x51bfda){var _0x4961d6=_0x51bfda;if(typeof _0x51bfda===_0x3860('0x2')){_0x4961d6=_0x51bfda[_0x3860('0x3')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x3860('0x4')](_0x51bfda)){_0x4961d6=_0x51bfda['map'](function(_0x2fc97a){return safeTemplate(_0x2fc97a);});}else if(_['isPlainObject'](_0x51bfda)){_0x4961d6=Object[_0x3860('0x5')](_0x51bfda)[_0x3860('0x6')](function(_0x1eca44,_0xd3ce26){_0x1eca44[_0xd3ce26]=safeTemplate(_0x51bfda[_0xd3ce26]);return _0x1eca44;},{});}return _0x4961d6;}module[_0x3860('0x7')]['safeTemplate']=safeTemplate;
\ No newline at end of file
+var _0x4213=['{\x20{\x20','\x20}\x20}','string','isArray','isPlainObject','keys','reduce','exports','safeTemplate','lodash'];(function(_0x2f4a11,_0x212125){var _0x1cb388=function(_0x135967){while(--_0x135967){_0x2f4a11['push'](_0x2f4a11['shift']());}};_0x1cb388(++_0x212125);}(_0x4213,0x77));var _0x3421=function(_0x5f5085,_0x3b2cb8){_0x5f5085=_0x5f5085-0x0;var _0x246c4a=_0x4213[_0x5f5085];return _0x246c4a;};var _=require(_0x3421('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x445ef6){return _0x445ef6==='{{'?_0x3421('0x1'):_0x3421('0x2');}function safeTemplate(_0x2613b6){var _0x153f3a=_0x2613b6;if(typeof _0x2613b6===_0x3421('0x3')){_0x153f3a=_0x2613b6['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x3421('0x4')](_0x2613b6)){_0x153f3a=_0x2613b6['map'](function(_0x459c5e){return safeTemplate(_0x459c5e);});}else if(_[_0x3421('0x5')](_0x2613b6)){_0x153f3a=Object[_0x3421('0x6')](_0x2613b6)[_0x3421('0x7')](function(_0x5469d8,_0x50e464){_0x5469d8[_0x50e464]=safeTemplate(_0x2613b6[_0x50e464]);return _0x5469d8;},{});}return _0x153f3a;}module[_0x3421('0x8')][_0x3421('0x9')]=safeTemplate;
\ No newline at end of file